pax_global_header00006660000000000000000000000064150653423270014521gustar00rootroot0000000000000052 comment=a57276bf558f5cf94d3a9854ebdf5a2236849a5a glslang-16.0.0/000077500000000000000000000000001506534232700132345ustar00rootroot00000000000000glslang-16.0.0/.clang-format000066400000000000000000000005731506534232700156140ustar00rootroot00000000000000Language: Cpp IndentWidth: 4 PointerAlignment: Left BreakBeforeBraces: Custom BraceWrapping: { AfterFunction: true, AfterControlStatement: false } IndentCaseLabels: false ReflowComments: false ColumnLimit: 120 AccessModifierOffset: -4 AlignTrailingComments: true AllowShortBlocksOnASingleLine: false AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false glslang-16.0.0/.gitattributes000066400000000000000000000010131506534232700161220ustar00rootroot00000000000000# test files have a mix of lf/crlf, and that's a good thing, for testing, don't mess with it # bash scripts need lines ending with lf, and that's correct for Windows too, e.g., under Cygwin # (scripts often don't have a suffix) * -text *.sh text eof=lf # txt files should be native and normalized *.txt text # source code can be native and normalized, but simpler if lf everywhere; will try that way *.h text eol=lf *.c text eol=lf *.cpp text eol=lf *.y text eol=lf *.out text eol=lf *.conf text eol=lf *.err text eol=lf glslang-16.0.0/.github/000077500000000000000000000000001506534232700145745ustar00rootroot00000000000000glslang-16.0.0/.github/dependabot.yml000066400000000000000000000014771506534232700174350ustar00rootroot00000000000000# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. version: 2 updates: - package-ecosystem: "github-actions" # Necessary to update action hashes directory: "/" schedule: interval: "weekly" # Allow up to 3 opened pull requests for github-actions versions open-pull-requests-limit: 3 glslang-16.0.0/.github/workflows/000077500000000000000000000000001506534232700166315ustar00rootroot00000000000000glslang-16.0.0/.github/workflows/continuous_deployment.yml000066400000000000000000000204611506534232700240250ustar00rootroot00000000000000# 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: - main paths-ignore: - 'README.md' - 'LICENSE.txt' - 'CODE_OF_CONDUCT.md' - 'BUILD.*' - 'WORKSPACE' - 'kokoro/*' - 'make-revision' - 'Android.mk' - '_config.yml' permissions: read-all jobs: linux: runs-on: ${{matrix.os.genus}} permissions: contents: write strategy: fail-fast: false matrix: os: [{genus: ubuntu-22.04, family: linux}] compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - 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 - name: Zip if: ${{ matrix.compiler.cc == 'clang' }} env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ bin/glslang \ bin/glslangValidator \ include/glslang/* \ include/glslang/**/* \ lib/libGenericCodeGen.a \ lib/libglslang.a \ lib/libglslang-default-resource-limits.a \ lib/libMachineIndependent.a \ lib/libOSDependent.a \ lib/libSPIRV.a \ lib/libSPIRV-Tools.a \ lib/libSPIRV-Tools-opt.a - name: Deploy if: ${{ matrix.compiler.cc == 'clang' }} env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const script = require('.github/workflows/deploy.js') await script({github, context, core}) macos: runs-on: ${{matrix.os.genus}} permissions: contents: write strategy: fail-fast: false matrix: os: [{genus: macos-13, family: osx}] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - 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 - name: Zip env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ bin/glslang \ bin/glslangValidator \ include/glslang/* \ include/glslang/**/* \ lib/libGenericCodeGen.a \ lib/libglslang.a \ lib/libglslang-default-resource-limits.a \ lib/libMachineIndependent.a \ lib/libOSDependent.a \ lib/libSPIRV.a \ lib/libSPIRV-Tools.a \ lib/libSPIRV-Tools-opt.a - name: Deploy env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const script = require('.github/workflows/deploy.js') await script({github, context, core}) windows: runs-on: ${{matrix.os.genus}} permissions: contents: write strategy: fail-fast: false matrix: os: [{genus: windows-2022, family: windows}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - run: python update_glslang_sources.py - name: Build run: | cmake -S. -Bbuild -G "Visual Studio 17 2022" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" cmake --build build --config ${{matrix.cmake_build_type}} --target install - name: Test run: | cd build ctest -C ${{matrix.cmake_build_type}} --output-on-failure - name: Zip if: ${{ matrix.cmake_build_type == 'Debug' }} env: ARCHIVE: glslang-master-${{matrix.os.family}}-Debug.zip run: | cd build/install 7z a ${{env.ARCHIVE}} ` bin/glslang.exe ` bin/glslangValidator.exe ` include/glslang/* ` lib/GenericCodeGend.lib ` lib/glslangd.lib ` lib/glslang-default-resource-limitsd.lib ` lib/MachineIndependentd.lib ` lib/OSDependentd.lib ` lib/SPIRVd.lib ` lib/SPIRV-Toolsd.lib ` lib/SPIRV-Tools-optd.lib - name: Zip if: ${{ matrix.cmake_build_type == 'Release' }} env: ARCHIVE: glslang-master-${{matrix.os.family}}-Release.zip run: | cd build/install 7z a ${{env.ARCHIVE}} ` bin/glslang.exe ` bin/glslangValidator.exe ` include/glslang/* ` lib/GenericCodeGen.lib ` lib/glslang.lib ` lib/glslang-default-resource-limits.lib ` lib/MachineIndependent.lib ` lib/OSDependent.lib ` lib/SPIRV.lib ` lib/SPIRV-Tools.lib ` lib/SPIRV-Tools-opt.lib - name: Deploy env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const script = require('.github/workflows/deploy.js') await script({github, context, core}) glslang-16.0.0/.github/workflows/continuous_integration.yml000066400000000000000000000310221506534232700241630ustar00rootroot00000000000000name: Continuous Integration on: workflow_dispatch: pull_request: branches: - main permissions: read-all jobs: linux: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} CMAKE_GENERATOR: Ninja CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache - name: Build run: cmake --build build - name: Install run: cmake --install build --prefix build/install - name: Test find_package support run: | cmake -S Test/find_package -B build/find_package && \ cmake --build build/find_package - name: Test run: ctest --output-on-failure --test-dir build - name: Check known validation failure list run: grep -l 'Validation failed' Test/baseResults/* | sort -fd | diff -u Test/baseResults/validation_fails.txt - linux-shared: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} CMAKE_GENERATOR: Ninja CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache - name: Build run: cmake --build build - name: Install run: cmake --install build --prefix build/install - name: Test find_package support run: | cmake -S Test/find_package -B build/find_package && \ cmake --build build/find_package - name: Test run: ctest --output-on-failure --test-dir build linux-asan: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: compiler: [{cc: gcc, cxx: g++}] cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread', '-fsanitize=undefined'] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} # This is to combat a bug when using 6.6 linux kernels with thread/address sanitizer # https://github.com/google/sanitizers/issues/1716 - run: sudo sysctl vm.mmap_rnd_bits=28 - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -D GLSLANG_TESTS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} CMAKE_GENERATOR: Ninja CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache CFLAGS: ${{matrix.flags}} CXXFLAGS: ${{matrix.flags}} LDFLAGS: ${{matrix.flags}} - name: Build run: cmake --build build - name: Install run: cmake --install build --prefix build/install - name: Test env: UBSAN_OPTIONS: 'halt_on_error=1:print_stacktrace=1' run: ctest --output-on-failure --test-dir build # Ensure we can compile/run on an older distro, with older tools (cmake, python, etc) linux_min: name: Linux Backcompat runs-on: ubuntu-22.04 steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: python-version: '3.7' - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 with: cmakeVersion: 3.22.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19 with: key: linux_backcompat - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release -D GLSLANG_TESTS=ON env: CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache - name: Build run: cmake --build build - name: Install run: cmake --install build --prefix build/install - name: Test find_package support run: | cmake -S Test/find_package -B build/find_package && \ cmake --build build/find_package - name: Test run: ctest --output-on-failure --test-dir build macos: runs-on: ${{matrix.os}} strategy: fail-fast: false matrix: os: [macos-14, macos-13] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} - run: cmake --build build - run: cmake --install build --prefix build/install - name: Test find_package support run: | cmake -S Test/find_package -B build/find_package && \ cmake --build build/find_package - run: ctest --output-on-failure --test-dir build macos-shared: runs-on: ${{matrix.os}} strategy: fail-fast: false matrix: os: [macos-14] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} - run: cmake --build build - run: cmake --install build --prefix build/install - name: Test find_package support run: | cmake -S Test/find_package -B build/find_package && \ cmake --build build/find_package - run: ctest --output-on-failure --test-dir build windows: runs-on: ${{matrix.os.genus}} permissions: contents: write strategy: fail-fast: false matrix: os: [{genus: windows-2022, family: windows}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - run: python update_glslang_sources.py - name: Build run: | cmake -S. -Bbuild -G "Visual Studio 17 2022" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON cmake --build build --config ${{matrix.cmake_build_type}} --target install - name: Test find_package support run: | cmake -S Test/find_package -B build/find_package cmake --build build/find_package - name: Test run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build windows-shared: runs-on: ${{matrix.os.genus}} permissions: contents: write strategy: fail-fast: false matrix: os: [{genus: windows-2022, family: windows}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - run: python update_glslang_sources.py - name: Build run: | cmake -S. -Bbuild -G "Visual Studio 17 2022" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON cmake --build build --config ${{matrix.cmake_build_type}} --target install - name: Test find_package support run: | cmake -S Test/find_package -B build/find_package cmake --build build/find_package - name: Test run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build iOS: runs-on: macos-13 steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19 with: key: IOS - run: ./update_glslang_sources.py # NOTE: The MacOS SDK ships universal binaries. CI should reflect this. - name: Configure Universal Binary for iOS run: | cmake -S . -B build \ -D CMAKE_BUILD_TYPE=Debug \ -D CMAKE_SYSTEM_NAME=iOS \ "-D CMAKE_OSX_ARCHITECTURES=arm64;x86_64" \ -G Ninja env: CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache - run: cmake --build build - run: cmake --install build --prefix /tmp android: runs-on: ubuntu-22.04 strategy: matrix: # Android NDK currently offers 2 different toolchains. # Test both to ensure we are compatible with either approach. LEGACY: [ON, OFF] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19 with: key: android-${{ matrix.LEGACY }} - run: ./update_glslang_sources.py - name: Configure for Android run: | cmake -S . -B build/ --toolchain $ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ -D CMAKE_BUILD_TYPE=Release \ -D ANDROID_ABI=armeabi-v7a \ -D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=${{ matrix.LEGACY }} \ -G Ninja env: CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache - run: cmake --build build/ - run: cmake --install build/ --prefix /tmp emscripten: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: lukka/get-cmake@2ecc21724e5215b0e567bc399a2602d2ecb48541 # v4.1.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19 with: key: ubuntu-emscripten - uses: mymindstorm/setup-emsdk@6ab9eb1bda2574c4ddb79809fc9247783eaf9021 # v14 - name: Update Glslang Sources run: ./update_glslang_sources.py - name: Configure run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DENABLE_OPT=OFF env: CMAKE_GENERATOR: Ninja CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache - name: Build run: cmake --build build/web glslang-16.0.0/.github/workflows/deploy.js000066400000000000000000000044041506534232700204650ustar00rootroot00000000000000module.exports = async ({github, context, core}) => { try { await github.rest.git.updateRef({ owner: context.repo.owner, repo: context.repo.repo, ref: 'tags/main-tot', sha: context.sha }) } catch (error) { core.setFailed(`upload main-tot tag; ${error.name}; ${error.message}`) } let release try { release = await github.rest.repos.getReleaseByTag({ owner: context.repo.owner, repo: context.repo.repo, tag: 'main-tot' }) } catch (error) { core.setFailed(`get the main 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 main 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}`) } } glslang-16.0.0/.github/workflows/scorecard.yml000066400000000000000000000040661506534232700213270ustar00rootroot00000000000000name: Scorecard supply-chain security on: # For Branch-Protection check. Only the default branch is supported. See # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection branch_protection_rule: # To guarantee Maintained check is occasionally updated. See # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained schedule: - cron: '36 17 * * 5' push: branches: [ "main" ] # Declare default permissions as read only. permissions: read-all jobs: analysis: name: Scorecard analysis runs-on: ubuntu-latest permissions: security-events: write # to upload the results to code-scanning dashboard id-token: write # to publish results and get a badge steps: - name: "Checkout code" uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: "Run analysis" uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2 with: results_file: results.sarif results_format: sarif # To enable Branch-Protection uncomment the `repo_token` line below # To create the Fine-grained PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-fine-grained-pat-optional. # repo_token: ${{ secrets.SCORECARD_TOKEN }} publish_results: true # allows the repo to include the Scorecard badge # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: SARIF file path: results.sarif retention-days: 5 # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" uses: github/codeql-action/upload-sarif@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 with: sarif_file: results.sarif glslang-16.0.0/.gitignore000066400000000000000000000004111506534232700152200ustar00rootroot00000000000000*.o *.a *.so *.exe .cache/ .vscode/ .vs/ tags TAGS bazel-* build/ Test/localResults/ External/googletest External/spirv-tools out/ CMakeUserPresets.json # GN generated files .cipd/ *.gclient_entries third_party/ buildtools/ tools/ # Random OS stuff .DS_Store ._* glslang-16.0.0/.gn000066400000000000000000000032521506534232700136430ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. buildconfig = "//build/config/BUILDCONFIG.gn" default_args = { clang_use_chrome_plugins = false use_custom_libcxx = false } glslang-16.0.0/.mailmap000066400000000000000000000003331506534232700146540ustar00rootroot00000000000000Faith Ekstrand Faith Ekstrand Faith Ekstrand glslang-16.0.0/Android.mk000066400000000000000000000132251506534232700151500ustar00rootroot00000000000000# Copyright (C) 2020-2023 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. LOCAL_PATH := $(call my-dir) # Generate glslang/build_info.h GLSLANG_GENERATED_INCLUDEDIR:=$(TARGET_OUT)/include GLSLANG_BUILD_INFO_H:=$(GLSLANG_GENERATED_INCLUDEDIR)/glslang/build_info.h define gen_glslang_build_info_h $(call generate-file-dir,$(GLSLANG_GENERATED_INCLUDEDIR)/dummy_filename) $(GLSLANG_BUILD_INFO_H): \ $(LOCAL_PATH)/build_info.py \ $(LOCAL_PATH)/build_info.h.tmpl \ $(LOCAL_PATH)/CHANGES.md @$(HOST_PYTHON) $(LOCAL_PATH)/build_info.py \ $(LOCAL_PATH) \ -i $(LOCAL_PATH)/build_info.h.tmpl \ -o $(GLSLANG_BUILD_INFO_H) @echo "[$(TARGET_ARCH_ABI)] Generate : $(GLSLANG_BUILD_INFO_H) <= CHANGES.md" endef $(eval $(call gen_glslang_build_info_h)) GLSLANG_OS_FLAGS := -DGLSLANG_OSINCLUDE_UNIX # AMD and NV extensions are turned on by default in upstream Glslang. GLSLANG_DEFINES:= -DENABLE_HLSL $(GLSLANG_OS_FLAGS) include $(CLEAR_VARS) LOCAL_MODULE:=OSDependent LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) LOCAL_SRC_FILES:=glslang/stub.cpp LOCAL_C_INCLUDES:=$(LOCAL_PATH) include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) GLSLANG_OUT_PATH=$(if $(call host-path-is-absolute,$(TARGET_OUT)),$(TARGET_OUT),$(abspath $(TARGET_OUT))) # ShaderLang.cpp depends on the generated build_info.h $(LOCAL_PATH)/glslang/MachineIndependent/ShaderLang.cpp: \ $(GLSLANG_BUILD_INFO_H) LOCAL_MODULE:=glslang LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) \ $(LOCAL_PATH)/glslang/OSDependent/Unix LOCAL_SRC_FILES:= \ glslang/CInterface/glslang_c_interface.cpp \ glslang/GenericCodeGen/CodeGen.cpp \ glslang/GenericCodeGen/Link.cpp \ glslang/HLSL/hlslAttributes.cpp \ glslang/HLSL/hlslGrammar.cpp \ glslang/HLSL/hlslOpMap.cpp \ glslang/HLSL/hlslParseables.cpp \ glslang/HLSL/hlslParseHelper.cpp \ glslang/HLSL/hlslScanContext.cpp \ glslang/HLSL/hlslTokenStream.cpp \ glslang/MachineIndependent/attribute.cpp \ glslang/MachineIndependent/Constant.cpp \ glslang/MachineIndependent/glslang_tab.cpp \ glslang/MachineIndependent/InfoSink.cpp \ glslang/MachineIndependent/Initialize.cpp \ glslang/MachineIndependent/Intermediate.cpp \ glslang/MachineIndependent/intermOut.cpp \ glslang/MachineIndependent/IntermTraverse.cpp \ glslang/MachineIndependent/iomapper.cpp \ glslang/MachineIndependent/limits.cpp \ glslang/MachineIndependent/linkValidate.cpp \ glslang/MachineIndependent/parseConst.cpp \ glslang/MachineIndependent/ParseContextBase.cpp \ glslang/MachineIndependent/ParseHelper.cpp \ glslang/MachineIndependent/PoolAlloc.cpp \ glslang/MachineIndependent/propagateNoContraction.cpp \ glslang/MachineIndependent/reflection.cpp \ glslang/MachineIndependent/RemoveTree.cpp \ glslang/MachineIndependent/Scan.cpp \ glslang/MachineIndependent/ShaderLang.cpp \ glslang/MachineIndependent/SpirvIntrinsics.cpp \ glslang/MachineIndependent/SymbolTable.cpp \ glslang/MachineIndependent/Versions.cpp \ glslang/MachineIndependent/preprocessor/PpAtom.cpp \ glslang/MachineIndependent/preprocessor/PpContext.cpp \ glslang/MachineIndependent/preprocessor/Pp.cpp \ glslang/MachineIndependent/preprocessor/PpScanner.cpp \ glslang/MachineIndependent/preprocessor/PpTokens.cpp \ glslang/OSDependent/Unix/ossource.cpp \ SPIRV/CInterface/spirv_c_interface.cpp \ SPIRV/GlslangToSpv.cpp \ SPIRV/InReadableOrder.cpp \ SPIRV/Logger.cpp \ SPIRV/SpvBuilder.cpp \ SPIRV/SpvPostProcess.cpp \ SPIRV/SpvTools.cpp \ SPIRV/disassemble.cpp \ SPIRV/doc.cpp LOCAL_C_INCLUDES:=$(LOCAL_PATH) \ $(LOCAL_PATH)/glslang/MachineIndependent \ $(LOCAL_PATH)/glslang/OSDependent/Unix \ $(LOCAL_PATH)/SPIRV \ $(GLSLANG_GENERATED_INCLUDEDIR) \ $(GLSLANG_OUT_PATH) include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) # GlslangToSpv.cpp depends on the generated build_info.h $(LOCAL_PATH)/SPIRV/GlslangToSpv.cpp: \ $(GLSLANG_BUILD_INFO_H) LOCAL_MODULE:=SPIRV LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES) LOCAL_SRC_FILES:=glslang/stub.cpp LOCAL_C_INCLUDES:=$(LOCAL_PATH) LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) include $(BUILD_STATIC_LIBRARY) glslang-16.0.0/BUILD.gn000066400000000000000000000253331506534232700144270ustar00rootroot00000000000000# Copyright (C) 2018 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import("//build_overrides/glslang.gni") # Both Chromium and Fuchsia use by default a set of warning errors # that is far too strict to compile this project. These are also # typically appended after |cflags|, overriding target-specific # definitions. To work around this, determine which configs to # add and remove in order to succesfully build the project. if (defined(is_fuchsia_tree) && is_fuchsia_tree) { _configs_to_remove = [ "//build/config:default_warnings" ] _configs_to_add = [] } else { _configs_to_remove = [ "//build/config/compiler:chromium_code" ] _configs_to_add = [ "//build/config/compiler:no_chromium_code" ] } action("glslang_build_info") { script = "build_info.py" src_dir = "." changes_file = "CHANGES.md" template_file = "build_info.h.tmpl" out_file = "${target_gen_dir}/include/glslang/build_info.h" inputs = [ changes_file, script, template_file, ] outputs = [ out_file ] args = [ rebase_path(src_dir, root_build_dir), "-i", rebase_path(template_file, root_build_dir), "-o", rebase_path(out_file, root_build_dir), ] } action("glslang_extension_headers") { script = "gen_extension_headers.py" out_file = "${target_gen_dir}/include/glslang/glsl_intrinsic_header.h" # Fuchsia GN build rules require all GN actions to be hermetic and they # should correctly and fully state their inputs and outpus (see # https://fuchsia.dev/fuchsia-src/development/build/hermetic_actions # for details). All input files of the script should be added to the # |sources| list. sources = [ "glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl", ] inputs = [ script ] outputs = [ out_file ] args = [ "-i", rebase_path("glslang/ExtensionHeaders", root_build_dir), "-o", rebase_path(out_file, root_build_dir), ] } spirv_tools_dir = glslang_spirv_tools_dir config("glslang_public") { include_dirs = [ "." ] if (!is_win || is_clang) { cflags = [ "-Wno-conversion" ] } } config("glslang_hlsl") { defines = [ "ENABLE_HLSL=1" ] } template("glslang_sources_common") { source_set(target_name) { public_configs = [ ":glslang_public" ] if (invoker.enable_hlsl) { public_configs += [ ":glslang_hlsl" ] } sources = [ "SPIRV/GLSL.ext.AMD.h", "SPIRV/GLSL.ext.EXT.h", "SPIRV/GLSL.ext.KHR.h", "SPIRV/GLSL.ext.NV.h", "SPIRV/GLSL.ext.ARM.h", "SPIRV/GLSL.ext.QCOM.h", "SPIRV/GLSL.std.450.h", "SPIRV/GlslangToSpv.cpp", "SPIRV/GlslangToSpv.h", "SPIRV/InReadableOrder.cpp", "SPIRV/Logger.cpp", "SPIRV/Logger.h", "SPIRV/NonSemanticDebugPrintf.h", "SPIRV/NonSemanticShaderDebugInfo100.h", "SPIRV/SpvBuilder.cpp", "SPIRV/SpvBuilder.h", "SPIRV/SpvPostProcess.cpp", "SPIRV/SpvTools.h", "SPIRV/bitutils.h", "SPIRV/disassemble.cpp", "SPIRV/disassemble.h", "SPIRV/doc.cpp", "SPIRV/doc.h", "SPIRV/hex_float.h", "SPIRV/spirv.hpp11", "SPIRV/spvIR.h", "SPIRV/spvUtil.h", "glslang/GenericCodeGen/CodeGen.cpp", "glslang/GenericCodeGen/Link.cpp", "glslang/Include/BaseTypes.h", "glslang/Include/Common.h", "glslang/Include/ConstantUnion.h", "glslang/Include/InfoSink.h", "glslang/Include/InitializeGlobals.h", "glslang/Include/PoolAlloc.h", "glslang/Include/ResourceLimits.h", "glslang/Include/ShHandle.h", "glslang/Include/SpirvIntrinsics.h", "glslang/Include/Types.h", "glslang/Include/arrays.h", "glslang/Include/intermediate.h", "glslang/Include/visibility.h", "glslang/MachineIndependent/Constant.cpp", "glslang/MachineIndependent/InfoSink.cpp", "glslang/MachineIndependent/Initialize.cpp", "glslang/MachineIndependent/Initialize.h", "glslang/MachineIndependent/IntermTraverse.cpp", "glslang/MachineIndependent/Intermediate.cpp", "glslang/MachineIndependent/LiveTraverser.h", "glslang/MachineIndependent/ParseContextBase.cpp", "glslang/MachineIndependent/ParseHelper.cpp", "glslang/MachineIndependent/ParseHelper.h", "glslang/MachineIndependent/PoolAlloc.cpp", "glslang/MachineIndependent/RemoveTree.cpp", "glslang/MachineIndependent/RemoveTree.h", "glslang/MachineIndependent/Scan.cpp", "glslang/MachineIndependent/Scan.h", "glslang/MachineIndependent/ScanContext.h", "glslang/MachineIndependent/ShaderLang.cpp", "glslang/MachineIndependent/SpirvIntrinsics.cpp", "glslang/MachineIndependent/SymbolTable.cpp", "glslang/MachineIndependent/SymbolTable.h", "glslang/MachineIndependent/Versions.cpp", "glslang/MachineIndependent/Versions.h", "glslang/MachineIndependent/attribute.cpp", "glslang/MachineIndependent/attribute.h", "glslang/MachineIndependent/gl_types.h", "glslang/MachineIndependent/glslang_tab.cpp", "glslang/MachineIndependent/glslang_tab.cpp.h", "glslang/MachineIndependent/intermOut.cpp", "glslang/MachineIndependent/iomapper.cpp", "glslang/MachineIndependent/iomapper.h", "glslang/MachineIndependent/limits.cpp", "glslang/MachineIndependent/linkValidate.cpp", "glslang/MachineIndependent/localintermediate.h", "glslang/MachineIndependent/parseConst.cpp", "glslang/MachineIndependent/parseVersions.h", "glslang/MachineIndependent/preprocessor/Pp.cpp", "glslang/MachineIndependent/preprocessor/PpAtom.cpp", "glslang/MachineIndependent/preprocessor/PpContext.cpp", "glslang/MachineIndependent/preprocessor/PpContext.h", "glslang/MachineIndependent/preprocessor/PpScanner.cpp", "glslang/MachineIndependent/preprocessor/PpTokens.cpp", "glslang/MachineIndependent/preprocessor/PpTokens.h", "glslang/MachineIndependent/propagateNoContraction.cpp", "glslang/MachineIndependent/propagateNoContraction.h", "glslang/MachineIndependent/reflection.cpp", "glslang/MachineIndependent/reflection.h", "glslang/OSDependent/osinclude.h", "glslang/Public/ShaderLang.h", ] # Workaround gn issue complaining about these not being allowed even though GLSLANG_HLSL is not # defined. sources += [ "glslang/HLSL/hlslParseHelper.h", "glslang/HLSL/hlslParseables.h", "glslang/HLSL/hlslScanContext.h", "glslang/HLSL/hlslTokens.h", ] if (invoker.enable_hlsl) { sources += [ "glslang/HLSL/hlslAttributes.cpp", "glslang/HLSL/hlslAttributes.h", "glslang/HLSL/hlslGrammar.cpp", "glslang/HLSL/hlslGrammar.h", "glslang/HLSL/hlslOpMap.cpp", "glslang/HLSL/hlslOpMap.h", "glslang/HLSL/hlslParseHelper.cpp", "glslang/HLSL/hlslParseables.cpp", "glslang/HLSL/hlslScanContext.cpp", "glslang/HLSL/hlslTokenStream.cpp", "glslang/HLSL/hlslTokenStream.h", ] } defines = [ "ENABLE_SPIRV=1" ] if (invoker.enable_opt) { sources += [ "SPIRV/SpvTools.cpp" ] defines += [ "ENABLE_OPT=1" ] } if (is_win) { sources += [ "glslang/OSDependent/Windows/ossource.cpp" ] defines += [ "GLSLANG_OSINCLUDE_WIN32" ] } else { sources += [ "glslang/OSDependent/Unix/ossource.cpp" ] defines += [ "GLSLANG_OSINCLUDE_UNIX" ] } if (is_clang) { cflags = [ "-Wno-extra-semi", "-Wno-ignored-qualifiers", "-Wno-implicit-fallthrough", "-Wno-inconsistent-missing-override", "-Wno-missing-field-initializers", "-Wno-newline-eof", "-Wno-sign-compare", "-Wno-suggest-destructor-override", "-Wno-suggest-override", "-Wno-unused-variable", ] } if (is_win && !is_clang) { cflags = [ "/wd4018", # signed/unsigned mismatch "/wd4189", # local variable is initialized but not referenced ] } include_dirs = [ "${target_gen_dir}/include" ] deps = [ ":glslang_build_info" ] if (invoker.enable_opt) { deps += [ "${spirv_tools_dir}:spvtools_opt", "${spirv_tools_dir}:spvtools_val", ] include_dirs += [ "${spirv_tools_dir}/include" ] } configs -= _configs_to_remove configs += _configs_to_add } } glslang_sources_common("glslang_lib_sources") { enable_opt = true enable_hlsl = true } glslang_sources_common("glslang_sources") { enable_opt = true enable_hlsl = true } source_set("glslang_default_resource_limits_sources") { sources = [ "glslang/ResourceLimits/ResourceLimits.cpp", "glslang/Public/ResourceLimits.h", "glslang/Include/ResourceLimits.h", "glslang/Include/visibility.h", ] public_configs = [ ":glslang_public" ] configs -= _configs_to_remove configs += _configs_to_add } executable("glslang_validator") { sources = [ "StandAlone/DirStackFileIncluder.h", "StandAlone/StandAlone.cpp", ] if (!is_win) { cflags = [ "-Woverflow" ] } defines = [ "ENABLE_OPT=1", "ENABLE_SPIRV=1", ] deps = [ ":glslang_build_info", ":glslang_default_resource_limits_sources", ":glslang_sources", ":glslang_extension_headers", ] public_configs = [ ":glslang_hlsl" ] include_dirs = [ "${target_gen_dir}/include", "${spirv_tools_dir}/include", ] configs -= _configs_to_remove configs += _configs_to_add }glslang-16.0.0/CHANGES.md000066400000000000000000000357731506534232700146450ustar00rootroot00000000000000# Revision history for `glslang` All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). ## 16.0.0 2025-09-25 ### Breaking changes * Remove spirv-remapper (ported to SPIRV-Tools as canonicalize-ids optimization pass) ### Other changes * Emit error for in/out structs containing booleans * Fix contradictory layout link errors * Improve error checks for float8 math * Fix bug in cooperative matrix load/store handling of array slices * Update memory semantic validation rules to match update to Vulkan specification * Simplify glslang grammar for identifier lists * Fix erroneous parse errors in variable declarations using existing struct names * Fix type conversions for createTensorLayout/ViewNV * Fix OpAccessChain signed index issue for small unsigned integers * Support GLSL_QCOM_cooperative_matrix_conversion * Allow spec constant matrix use * Fix inconsistent labeling of capability strings * Fix crash on unnamed function parameters under relaxed rules * Fix exported member functions in ShaderLang.h ## 15.4.0 2025-06-26 * Support GL_NV_gpu_shader5/GL_ARB_gpu_shader5 * Remove BUILD_SHARED_LIBS option (defer to built-in variable) * Remap discard to OpDemoteToHelperInvocation * Fix typos and improve readability of help message * Support GLSL_QCOM_tile_shading * Emit correct capability for linear swept sphere * Support GL_EXT_float8_e5m2_e4m3 * Move E_SPV_ARM_cooperative_matrix_layouts into GLSL.ext.ARM.h * Support GL_ARM_tensors ## 15.3.0 2025-04-24 * Fix CMake find_package on Windows when building shared libraries * Fix crash calling coopMatLoadTensorNV on an array element * Avoid reusing array types with stride when no stride is requested * Fix non-ASCII comments * Support GL_EXT_bfloat16 * Fix several issues with link-time implicit array size merging * Support DebugSourceContinued * LiveTraverser no longer traverses switch cases that are statically not accessed * Implement optional cross-stage check for inputs with no matching outputs ## 15.2.0 2025-02-24 * Fix find_package on Windows when BUILD_SHARED_LIBS=ON * Emit error if using in/out with struct pointer * Emit SPV_EXT_opacity_micromap if GL extension is present * Support GL_NV_linear_swept_spheres * Support GLSL_EXT_nontemporal_keyword * Support GL_NV_cluster_acceleration_structure * Support GL_NV_cooperative_vector * Check SparseTextureOffset non-const parameters * Support GL_EXT_texture_offset_non_const * Revert cross-stage check for missing outputs * Support EXT_integer_dot_product * Add support for OpTypeRayQueryKHR and OpTypeAccelerationStructureKHR to SPVRemapper ## 15.1.0 2024-12-13 * Add Vulkan 1.4 target and client * Improve conversion of uniform block to push constant * Improve cross stage error reporting by reporting proper stager rather than "unkwown stage" * Add warning if forward declaration uses layout qualifiers * Implement GLSL_NV_cooperative_matrix2 * Emit OpModfStruct instead of depracated OpModf * Add link-time cross stage optimization * Add column to DebugLexicalBlock * Propagate errors from symbol table initialization * Fix nonsemantic debuginfo line attribution for cooperative matrix ## 15.0.0 2024-09-23 ### Breaking changes * Explicitly export all symbols that are part of the public API and hide other symbols by default ### Other changes * Allow building glslang without the SPIR-V backend using the new ENABLE_SPIRV build option * Add setResourceSetBinding method to the API * Add interface to get the GLSL IO mapper and resolver * Allow compute derivative modes when the workgroup dimensions are spec constants * Improve debug location of branch/return instructions * Silence preprocessor '#' error reporting in inactive #if/#ifdef/#elif/#else blocks * Apply GLSL memory decorations to top-level OpVariable * Move definition of GLSLANG_EXPORT to visibility.h * Merge ancillary libraries into main glslang library and stub originals * Add public setSourceFile and addSourceText methods to TShader class * Add type checks for hitObjectNV * Add optimizerAllowExpandedIDBound to SpvOptions * Add SpvTools.h back to public headers * Add cross-stage check for missing outputs * Fix HLSL offsets for non-buffers * Add types and functions for IO mapping to API * Add function to set preprocessed code to API * Add set/get version functions to API * Expose setGlobalUniform functions to API * Don't emit debug instructions before an OpPhi * Add command-line and API option to enable reporting column location for compiler errors * Improve location aliasing checks * Support constant expression calculated by matrixCompMult * Fix crash caused by atomicCounter() use without arguments * Fix multi-line function call line numbers * Add line info to OpDebugDeclare for function parameters * Fix HLSL OpDebugFunction file name * Fix duplicate decorations * Enable compilation of glslang without thread support for WASI ## 14.3.0 2024-06-25 * Generate vector constructions more efficiently when sizes match * Skip identity conversions for 8-bit and 16-bit types * Add cmake aliases for public libraries * Support ARM extended matrix layout * Emit debug info for buffer references * Add support for OpExtInstWithForwardRefsKHR * Generate SPV_EXT_replicated_compisites when requested by pragma * Reuse loads generated for repeated function arguments * Fix gl_HitT alias of gl_RayTmax * Fix some cases where invalid SPIR-V was being generated when using separate samplers * Add back layoutLocation to public API ## 14.2.0 2024-05-02 * Improve checking for location aliasing errors * Fix undefined behavior in parser * Add bounds check to gl_SampleMask * Fix alignment and padding of matrices consuming one vector * Remove duplicate SPIR-V decorations * Check for exponent overflow in float parser * Fix bug in relaxed verification rules * Fix disassembly of debugBreak * Fix bug when importing SPIR-V extended intruction set * Fix issues with the interaction of cooperative_matrix and spirv_intrinsics * Support SPV_QCOM_image_processing2 * Support files with UTF8BOM character ## 14.1.0 2024-03-08 * Add a new --abosute-path command-line option to output absolute paths in error messages * Support GL_EXT_control_flow_attributes2 * Support GL_ARB_shading_language_include * Fix HLSL built-in passthrough via inout * Enable -Wimplicit-fallthrough and fix warnings * Fix -Wmissing_field_initializer warnings * Document supported dependencies in known_good.json * Clear spirv vector before use * Emit debug info for accelerationStructure and rayQuery variables * Support NV_shader_atomic_fp16_vector * Support GL_EXT_expect_assume_support * Allow external control of whether glslang will be tested or installed * Improve debug source and line info * Support GL_KHR_shader_subgroup_rotate * Add SPIRV-Tools-opt dependency if ENABLE_OPT * Support EXT_shader_quad_control * Add OpAssumeTrueKHR and OpExpectKHR * Support GL_EXT_maximal_reconvergence * Remove generation of deprecated Target.cmake files * Fix array size of gl_SampleMask and gl_SampleMaskIn * Support GL_ARB_texture_multisample_extension * Emit DebugTypePointer when non-semantic debug info is enabled ## 14.0.0 2023-12-21 ### Breaking changes * The legacy libraries named HLSL and OGLCompiler have been removed. To avoid future disruptions, please use cmake's find_package mechanism rather than hardcoding library dependencies. * Only the headers that are part of glslang's public interface are included in the install target. * Remove OVERRIDE_MSVCCRT cmake option. ### Other changes * Fix spv_options initialization * Fix line number for OpDebugFunction and OpDebugScope for function * Fix SPV_KHR_cooperative_matrix enumerants * Fix nullptr crash * Fix GL_ARB_shader_storage_buffer_object version * Fix interpolant ES error * Generate DebugValue for constant arguments * Overflow/underflow out-of-range floats to infinity/0.0 respectively * Support SV_ViewID keywords for HLSL * Implement relaxed rule for opaque struct members * Add BUILD_WERROR cmake option * Add GLSLANG_TESTS cmake option * Always generate OpDebugBasicType for bool type * Fix GLSL parsing of '#' when not preceded by space or tab * Fix GL_ARB_bindless_texture availability * Support GL_EXT_draw_instanced extension * Support GL_EXT_texture_array extension * Fix conversion of 64-bit unsigned integer constants to bool * Output 8-bit and 16-bit capabilities when appropriate for OpSpecConstant ## 13.1.1 2023-10-16 * Initialize compile_only field in C interface ## 13.1.0 2023-10-13 * Support GL_EXT_texture_shadow_lod * Support GL_NV_displacement_micromap * Fix ByteAddressBuffer when used a function parameter * Add more verbose messages if SPIRV-Tools is not found * Fix names for explicitly sized types when emitting nonsemantic debug info * Emit error for r-value arguments in atomic memory operations * Add --no-link option * Beautify preprocessor output format * Fix race condition in glslangValidator * Only set LocalSizeId mode when necessary * Don't emit invalid debug info for buffer references ## 13.0.0 2023-08-23 ### Breaking changes * Simplify PoolAlloc via thread_local * Remove InitializeDLL functions * Remove OSDependent TLS functions * Remove GLSLANG_WEB and GLSLANG_WEB_DEVEL code paths ### Other changes * Raise CMAKE minimum to 3.17.2 * Support GL_KHR_cooperative_matrix * Support GL_QCOM_image_processing_support * Support outputting each module to a filename with spirv-remap * Generate an error when gl_PrimitiveShaderRateEXT is used without enabling the extension * Improve layout checking when GL_EXT_spirv_intrinsics is enabled ## 12.3.1 2023-07-20 ### Other changes * Improve backward compatibility for glslangValidator rename on Windows ## 12.3.0 2023-07-19 ### Other changes * Rename glslangValidator to glslang and create glslangValidator symlink * Support HLSL binary literals * Add missing initialization members for web * Improve push_constant upgrading * Fix race condition in spirv remap * Support pre and post HLSL qualifier validation * Force generateDebugInfo when non-semantic debug info is enabled * Exit with error if output file cannot be written * Fix struct member buffer reference decorations ## 12.2.0 2023-05-17 ### Other changes * Support GLSL_EXT_shader_tile_image * Support GL_EXT_ray_tracing_position_fetch * Support custom include callbacks via the C API * Add preamble-text command-line option * Accept variables as parameters of spirv_decorate_id * Fix generation of conditionals with a struct result * Fix double expansion of macros * Fix DebugCompilationUnit scope * Improve line information ## 12.1.0 2023-03-21 ### Other changes * Reject non-float inputs/outputs for version less than 120 * Fix invalid BufferBlock decoration for SPIR-V 1.3 and above * Add HLSL relaxed-precision float/int matrix expansions * Block decorate Vulkan structs with RuntimeArrays * Support InterlockedAdd on float types ## 12.0.0 2023-01-18 ### Breaking changes * An ABI was accidentally broken in #3014. Consequently, we have incremented the major revision number. ### Other changes * Add support for ARB_bindless_texture. * Add support for GL_NV_shader_invocation_reorder. * Fix const parameter debug types when using NonSemantic.Shader.DebugInfo.100. * Fix NonSemantic.Shader.DebugInfo.100 disassembly. * Fix MaxDualSourceDrawBuffersEXT usage. * Fix structure member reference crash. ## 11.13.0 2022-12-06 ### Other changes * Make HelperInvocation accesses volatile for SPIR-V 1.6. * Improve forward compatibility of ResourceLimits interface * Remove GLSLANG_ANGLE ## 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 * Add support for targeting Vulkan 1.2 in the C API ## 11.6.0 2021-08-25 ### Other changes * Atomic memory function only for shader storage block member or shared variable * Add support for gl_MaxVaryingVectors for ogl * Fix loading bool arrays from interface blocks * Generate separate stores for partially swizzled memory stores * Allow layout(std430) uniform with GL_EXT_scalar_block_layout * Support for pragma STDGL invariant(all) * Support for GL_NV_ray_tracing_motion_blur ## 11.5.0 2021-06-23 ### Other changes * Implement GLSL_EXT_shader_atomic_float2 * Implement GL_EXT_spirv_intrinsics * Fixed SPIR-V remapper not remapping OpExtInst instruction set IDs * only declare compatibility gl_ variables in compatibility mode * Add support for float spec const vector initialization * Implement GL_EXT_subgroup_uniform_control_flow. * Fix arrays dimensioned with spec constant sized gl_WorkGroupSize * Add support for 64bit integer scalar and vector types to bitCount() builtin ## 11.4.0 2021-04-22 ### Other changes * Fix to keep source compatible with CMake 3.10.2 ## 11.3.0 2021-04-21 ### Other changes * Added --depfile * Added --auto-sampled-textures * Now supports InterpolateAt-based functions * Supports cross-stage automatic IO mapping * Supports GL_EXT_vulkan_glsl_relaxed (-R option) ## 11.2.0 2021-02-18 ### Other changes * Removed Python requirement when not building with spirv-tools * Add support for GL_EXT_shared_memory_block * Implement GL_EXT_null_initializer * Add CMake support for Fuschia ## 11.1.0 2020-12-07 ### Other changes * Added ray-tracing extension support ## 11.0.0 2020-07-20 ### Breaking changes #### Visual Studio 2013 is no longer supported [As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals), Microsoft Visual Studio 2013 is no longer officially supported. Please upgrade to at least Visual Studio 2015. ## 10.15.3847 2020-07-20 ### Breaking changes * The following files have been removed: * `glslang/include/revision.h` * `glslang/include/revision.template` The `GLSLANG_MINOR_VERSION` and `GLSLANG_PATCH_LEVEL` defines have been removed from the public headers. \ Instead each build script now uses the new `build_info.py` script along with the `build_info.h.tmpl` and this `CHANGES.md` file to generate the glslang build-time generated header `glslang/build_info.h`. The new public API to obtain the `glslang` version is `glslang::GetVersion()`. ### Other changes * `glslang` shared objects produced by CMake are now `SONAME` versioned using [Semantic Versioning 2.0.0](https://semver.org/). glslang-16.0.0/CMakeLists.txt000066400000000000000000000353011506534232700157760ustar00rootroot00000000000000# Copyright (C) 2020-2025 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. cmake_minimum_required(VERSION 3.22.1) project(glslang) set(GLSLANG_TESTS_DEFAULT ON) # Can be turned off, below, based on environment. set(GLSLANG_ENABLE_INSTALL_DEFAULT ON) # Can be turned off, below, based on environment. set_property(GLOBAL PROPERTY USE_FOLDERS ON) # Can be removed when min is 3.26 see policy CMP0143. # Adhere to GNU filesystem layout conventions include(GNUInstallDirs) include(CMakePackageConfigHelpers) # Needed for cmake_dependent_option macro include(CMakeDependentOption) option(BUILD_EXTERNAL "Build external dependencies in /External" ON) option(BUILD_WERROR "Enable warnings as errors (default is OFF)" OFF) set(LIB_TYPE STATIC) if(BUILD_SHARED_LIBS) set(LIB_TYPE SHARED) endif() get_cmake_property(isMultiConfig "GENERATOR_IS_MULTI_CONFIG") if (NOT isMultiConfig AND NOT CMAKE_BUILD_TYPE) # This logic inside SPIRV-Tools, which can upset build target dependencies # if changed after targets are already defined. To prevent these issues, # ensure CMAKE_BUILD_TYPE is assigned early and at the glslang root scope. message(STATUS "No build type selected, default to Debug") set(CMAKE_BUILD_TYPE "Debug") endif() # Currently iOS and Android are very similar. # They both have their own packaging (APP/APK). # Which makes regular executables/testing problematic. # # Currently the only deliverables for these platforms are # libraries (either STATIC or SHARED). # # Furthermore testing is equally problematic. if (IOS OR ANDROID) set(ENABLE_GLSLANG_BINARIES OFF) set(GLSLANG_TESTS_DEFAULT OFF) endif() # Simplify the default case of including this project. # Otherwise add_subdirectory users have a harder time consuming the library. # Since glslang will pollute the installation and add undesirable testing. if(NOT PROJECT_IS_TOP_LEVEL) set(GLSLANG_TESTS_DEFAULT OFF) set(GLSLANG_ENABLE_INSTALL_DEFAULT OFF) endif() # Control whether Glslang self-tests are built and tested. # Always expose this as an option, so the defaults can be overridden. option(GLSLANG_TESTS "Enable glslang testing" ${GLSLANG_TESTS_DEFAULT}) # Control whether to install Glslang. # Always expose this as an option, so the defaults can be overridden. option(GLSLANG_ENABLE_INSTALL "Enable glslang installation" ${GLSLANG_ENABLE_INSTALL_DEFAULT}) option(ENABLE_SPIRV "Enables SPIRV output support" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslang" ON) option(ENABLE_GLSLANG_JS "If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing.") cmake_dependent_option(ENABLE_EMSCRIPTEN_SINGLE_FILE "If using Emscripten, enables SINGLE_FILE build" OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN" OFF) cmake_dependent_option(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE "If using Emscripten, builds to run on Node instead of Web" OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN" OFF) option(ENABLE_HLSL "Enables HLSL input support" ON) option(ENABLE_RTTI "Enables RTTI") option(ENABLE_EXCEPTIONS "Enables Exceptions") cmake_dependent_option(ENABLE_OPT "Enables spirv-opt capability if present" ON "ENABLE_SPIRV" OFF) if(MINGW OR (APPLE AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments # which gcc rejects set(ENABLE_PCH OFF) message(NOTICE "Disabling PCH") endif() option(ENABLE_PCH "Enables Precompiled header" ON) if(ENABLE_SPIRV) add_compile_definitions(ENABLE_SPIRV) endif() if(ENABLE_HLSL) add_compile_definitions(ENABLE_HLSL) endif() if(WIN32) set(CMAKE_DEBUG_POSTFIX "d") add_compile_definitions(GLSLANG_OSINCLUDE_WIN32) elseif(UNIX OR ANDROID) add_compile_definitions(GLSLANG_OSINCLUDE_UNIX) else() message("unknown platform") endif() if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs -Wimplicit-fallthrough -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable) if(NOT ENABLE_RTTI) add_compile_options(-fno-rtti) endif() if(NOT ENABLE_EXCEPTIONS) add_compile_options(-fno-exceptions) endif() if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0") add_compile_options(-Werror=deprecated-copy) endif() if(NOT (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")) if (NOT APPLE) # Error if there's symbols that are not found at link time. add_link_options("-Wl,--no-undefined") endif() endif() elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs -Wimplicit-fallthrough -Wunused-parameter -Wunused-value -Wunused-variable) if(NOT ENABLE_RTTI) add_compile_options(-fno-rtti) endif() if(NOT ENABLE_EXCEPTIONS) add_compile_options(-fno-exceptions) endif() if(NOT (CMAKE_SYSTEM_NAME MATCHES "OpenBSD|Emscripten")) # Error if there's symbols that are not found at link time. Some linkers do not support this flag. if(NOT APPLE) add_link_options("-Wl,--no-undefined") endif() endif() elseif(MSVC) if(NOT ENABLE_RTTI) add_compile_options(/GR-) # Disable RTTI endif() if(ENABLE_EXCEPTIONS) add_compile_options(/EHsc) # Enable Exceptions else() string(REGEX REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") # Try to remove default /EHsc cxx_flag add_compile_options(/D_HAS_EXCEPTIONS=0) endif() endif() # NOTE we could potentially replace this logic with COMPILE_WARNING_AS_ERROR if cmake minimum is bumped to >= 3.24 if (BUILD_WERROR) if (NOT MSVC) add_compile_options(-Werror) else() add_compile_options(/WX) endif() endif() if(ENABLE_GLSLANG_JS) if(MSVC) add_compile_options(/Os /GR-) else() add_compile_options(-Os -fno-rtti -fno-exceptions) if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-Wno-unused-parameter) add_compile_options(-Wno-unused-variable -Wno-unused-const-variable) endif() endif() endif() # Request C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) function(glslang_set_link_args TARGET) # For MinGW compiles, statically link against the GCC and C++ runtimes. # This avoids the need to ship those runtimes as DLLs. # This is supported by GCC and Clang. if(MINGW) target_link_options(${TARGET} PRIVATE -static -static-libgcc -static-libstdc++) endif() endfunction() # Root directory for build-time generated include files set(GLSLANG_GENERATED_INCLUDEDIR "${CMAKE_BINARY_DIR}/include") ################################################################################ # Build version information generation ################################################################################ include(parse_version.cmake) set(GLSLANG_CHANGES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CHANGES.md") set(GLSLANG_BUILD_INFO_H_TMPL "${CMAKE_CURRENT_SOURCE_DIR}/build_info.h.tmpl") set(GLSLANG_BUILD_INFO_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/build_info.h") parse_version(${GLSLANG_CHANGES_FILE} GLSLANG) function(configurate_version) set(major ${GLSLANG_VERSION_MAJOR}) set(minor ${GLSLANG_VERSION_MINOR}) set(patch ${GLSLANG_VERSION_PATCH}) set(flavor ${GLSLANG_VERSION_FLAVOR}) configure_file(${GLSLANG_BUILD_INFO_H_TMPL} ${GLSLANG_BUILD_INFO_H} @ONLY) endfunction() configurate_version() # glslang_add_build_info_dependency() adds the glslang-build-info dependency and # generated include directories to target. function(glslang_add_build_info_dependency target) target_include_directories(${target} PUBLIC $) endfunction() # glslang_only_export_explicit_symbols() makes the symbol visibility hidden by # default for when building shared libraries, and sets the # GLSLANG_IS_SHARED_LIBRARY define, and GLSLANG_EXPORTING to 1 when specifically # building . function(glslang_only_export_explicit_symbols target) if(BUILD_SHARED_LIBS) target_compile_definitions(${target} PUBLIC "GLSLANG_IS_SHARED_LIBRARY=1") set_target_properties(${target} PROPERTIES CXX_VISIBILITY_PRESET hidden) set_target_properties(${target} PROPERTIES C_VISIBILITY_PRESET hidden) if(WIN32) target_compile_definitions(${target} PRIVATE "GLSLANG_EXPORTING=1") endif() endif() endfunction() # glslang_pch() adds precompiled header rules to for the pre-compiled # header file . As target_precompile_headers() was added in CMake 3.16, # this is a no-op if called on earlier versions of CMake. function(glslang_pch target pch) if(ENABLE_PCH) target_precompile_headers(${target} PRIVATE ${pch}) endif() endfunction() if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) # We depend on these for later projects, so they should come first. add_subdirectory(External) endif() option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt. This is unsupported if the commit isn't the one in known_good.json") if(NOT TARGET SPIRV-Tools-opt) if(ALLOW_EXTERNAL_SPIRV_TOOLS) # Look for external SPIR-V Tools build, if not building in-tree message(STATUS "Trying to find local SPIR-V tools") find_package(SPIRV-Tools-opt) if(NOT TARGET SPIRV-Tools-opt) if(ENABLE_OPT) message(SEND_ERROR "ENABLE_OPT set but SPIR-V tools not found! Disabling SPIR-V optimization.") endif() set(ENABLE_OPT OFF) endif() else() if(ENABLE_OPT) message(SEND_ERROR "ENABLE_OPT set but SPIR-V tools not found. Please run update_glslang_sources.py, " "set the ALLOW_EXTERNAL_SPIRV_TOOLS option to use a local install of SPIRV-Tools, or set ENABLE_OPT=0.") endif() endif() endif() if(ENABLE_OPT) message(STATUS "optimizer enabled") add_compile_definitions(ENABLE_OPT=1) else() if(ENABLE_HLSL) message(STATUS "spirv-tools not linked - illegal SPIRV may be generated for HLSL") endif() add_compile_definitions(ENABLE_OPT=0) endif() if(ENABLE_SPIRV) add_subdirectory(SPIRV) endif() add_subdirectory(glslang) if(ENABLE_GLSLANG_BINARIES) add_subdirectory(StandAlone) endif() if(GLSLANG_TESTS) enable_testing() add_subdirectory(gtests) # glslang-testsuite runs a bash script on Windows. # Make sure to use '-o igncr' flag to ignore carriage returns (\r). set(IGNORE_CR_FLAG "") if(WIN32) set(IGNORE_CR_FLAG -o igncr) endif() if (isMultiConfig) set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$/localResults) set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslang) else() set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang) endif() # The TARGET_RUNTIME_DLL_DIRS feature requires CMake 3.27 or greater. if(WIN32 AND BUILD_SHARED_LIBS AND CMAKE_VERSION VERSION_LESS "3.27") message(WARNING "The Windows shared library test configuration requires CMake 3.27 or greater") else() add_test(NAME glslang-testsuite COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) # Prepend paths to shared libraries. if (BUILD_SHARED_LIBS) set_tests_properties(glslang-testsuite PROPERTIES ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$,\;>") endif() endif() endif() if (GLSLANG_ENABLE_INSTALL) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[ @PACKAGE_INIT@ include(CMakeFindDependencyMacro) if(@ENABLE_OPT@) find_dependency(SPIRV-Tools-opt) endif() @INSTALL_CONFIG_UNIX@ include("@PACKAGE_PATH_EXPORT_TARGETS@") ]=]) set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake") if(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") set(INSTALL_CONFIG_UNIX [=[ set(THREADS_PREFER_PTHREAD_FLAG ON) find_dependency(Threads) ]=]) endif() 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() glslang-16.0.0/CODE_OF_CONDUCT.md000066400000000000000000000004301506534232700160300ustar00rootroot00000000000000A reminder that this issue tracker is managed by the Khronos Group. Interactions here should follow the Khronos Code of Conduct (https://www.khronos.org/developers/code-of-conduct), which prohibits aggressive or derogatory language. Please keep the discussion friendly and civil. glslang-16.0.0/DEPS000066400000000000000000000054361506534232700137220ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. use_relative_paths = True gclient_gn_args_file = 'build/config/gclient_args.gni' vars = { 'chromium_git': 'https://chromium.googlesource.com', 'build_with_chromium': False, } deps = { './build': { 'url': '{chromium_git}/chromium/src/build.git@85ee3b7692e5284f08bd3c9459fb5685eed7b838', 'condition': 'not build_with_chromium', }, './buildtools': { 'url': '{chromium_git}/chromium/src/buildtools.git@4be464e050b3d05060471788f926b34c641db9fd', 'condition': 'not build_with_chromium', }, './tools/clang': { 'url': '{chromium_git}/chromium/src/tools/clang.git@3a982adabb720aa8f3e3885d40bf3fe506990157', 'condition': 'not build_with_chromium', }, } hooks = [ { 'name': 'sysroot_x64', 'pattern': '.', 'condition': 'checkout_linux and (checkout_x64 and not build_with_chromium)', 'action': ['python', './build/linux/sysroot_scripts/install-sysroot.py', '--arch=x64'], }, { # Note: On Win, this should run after win_toolchain, as it may use it. 'name': 'clang', 'pattern': '.', 'action': ['python', './tools/clang/scripts/update.py'], 'condition': 'not build_with_chromium', }, ] recursedeps = [ # buildtools provides clang_format, libc++, and libc++abi 'buildtools', ] glslang-16.0.0/External/000077500000000000000000000000001506534232700150165ustar00rootroot00000000000000glslang-16.0.0/External/CMakeLists.txt000066400000000000000000000060411506534232700175570ustar00rootroot00000000000000# Copyright (C) 2020-2025 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Suppress all warnings from external projects. set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w) if(GLSLANG_TESTS) if(TARGET gmock) message(STATUS "Google Mock already configured - use it") elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest) # We need to make sure Google Test does not mess up with the # global CRT settings on Windows. if(WIN32) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) endif() # EXCLUDE_FROM_ALL keeps the install target from installing GTEST files. add_subdirectory(googletest EXCLUDE_FROM_ALL) set(GTEST_TARGETS gtest gtest_main gmock gmock_main) foreach(target ${GTEST_TARGETS}) set_property(TARGET ${target} PROPERTY FOLDER gtest) endforeach() mark_as_advanced(gmock_build_tests BUILD_GMOCK BUILD_GTEST BUILD_SHARED_LIBS gtest_build_samples gtest_build_tests gtest_disable_pthreads gtest_force_shared_crt gtest_hide_internal_symbols) else() message(STATUS "Google Mock was not found - tests based on that will not build") endif() endif() if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt) if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools) set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests") add_subdirectory(spirv-tools) endif() endif() glslang-16.0.0/LICENSE.txt000066400000000000000000001525271506534232700150730ustar00rootroot00000000000000Here, glslang proper means core GLSL parsing, HLSL parsing, and SPIR-V code generation. Glslang proper requires use of a number of licenses, one that covers preprocessing and others that covers non-preprocessing. Bison was removed long ago. You can build glslang from the source grammar, using tools of your choice, without using bison or any bison files. Other parts, outside of glslang proper, include: - gl_types.h, only needed for OpenGL-like reflection, and can be left out of a parse and codegen project. See it for its license. - update_glslang_sources.py, which is not part of the project proper and does not need to be used. - Google tests and SPIR-V tools, and anything in the external subdirectory are external and optional; see them for their respective licenses. -------------------------------------------------------------------------------- The core of glslang-proper, minus the preprocessor is licenced as follows: -------------------------------------------------------------------------------- 3-Clause BSD License -------------------------------------------------------------------------------- // // Copyright (C) 2015-2018 Google, Inc. // Copyright (C) // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // -------------------------------------------------------------------------------- 2-Clause BSD License -------------------------------------------------------------------------------- Copyright 2020 The Khronos Group Inc Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- The MIT License -------------------------------------------------------------------------------- Copyright 2020 The Khronos Group Inc 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. -------------------------------------------------------------------------------- APACHE LICENSE, VERSION 2.0 -------------------------------------------------------------------------------- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- GPL 3 with special bison exception -------------------------------------------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. 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. 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. 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 additional licences: /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, 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. */ glslang-16.0.0/README.md000066400000000000000000000475341506534232700145300ustar00rootroot00000000000000![Continuous Integration](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_integration.yml/badge.svg) ![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/KhronosGroup/glslang/badge)](https://securityscorecards.dev/viewer/?uri=github.com/KhronosGroup/glslang) # News 1. The spirv-remap utility from glslang has been ported to the SPIRV-Tools repository as a new optimization pass called canonicalize-ids, available in spirv-opt. See spirv-opt --help for usage details. 2. Building glslang as a DLL or shared library is now possible and supported. # Glslang Components and Status There are several components: ### Reference Validator and GLSL/ESSL -> AST Front End An OpenGL GLSL and OpenGL|ES GLSL (ESSL) front-end for reference validation and translation of GLSL/ESSL into an internal abstract syntax tree (AST). **Status**: Virtually complete, with results carrying similar weight as the specifications. ### HLSL -> AST Front End An HLSL front-end for translation of an approximation of HLSL to glslang's AST form. **Status**: Partially complete. Semantics are not reference quality and input is not validated. This is in contrast to the [DXC project](https://github.com/Microsoft/DirectXShaderCompiler), which receives a much larger investment and attempts to have definitive/reference-level semantics. See [issue 362](https://github.com/KhronosGroup/glslang/issues/362) and [issue 701](https://github.com/KhronosGroup/glslang/issues/701) for current status. ### AST -> SPIR-V Back End Translates glslang's AST to the Khronos-specified SPIR-V intermediate language. **Status**: Virtually complete. ### Reflector An API for getting reflection information from the AST, reflection types/variables/etc. from the HLL source (not the SPIR-V). **Status**: There is a large amount of functionality present, but no specification/goal to measure completeness against. It is accurate for the input HLL and AST, but only approximate for what would later be emitted for SPIR-V. ### Standalone Wrapper `glslang` is command-line tool for accessing the functionality above. Status: Complete. Tasks waiting to be done are documented as GitHub issues. ## Other References Also see the Khronos landing page for glslang as a reference front end: https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/ The above page, while not kept up to date, includes additional information regarding glslang as a reference validator. # How to Use Glslang ## Execution of Standalone Wrapper To use the standalone binary form, execute `glslang`, and it will print a usage statement. Basic operation is to give it a file containing a shader, and it will print out warnings/errors and optionally an AST. The applied stage-specific rules are based on the file extension: * `.vert` for a vertex shader * `.tesc` for a tessellation control shader * `.tese` for a tessellation evaluation shader * `.geom` for a geometry shader * `.frag` for a fragment shader * `.comp` for a compute shader 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) Instead of building manually, you can also download the binaries for your platform directly from the [main-tot release][main-tot-release] on GitHub. Those binaries are automatically uploaded by the buildbots after successful testing and they always reflect the current top of the tree of the main branch. ### Dependencies * A C++17 compiler. (For MSVS: use 2019 or later.) * [CMake][cmake]: for generating compilation targets. * make: _Linux_, ninja is an alternative, if configured. * [Python 3.x][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools and the 'External' subdirectory does not exist.) * [bison][bison]: _optional_, but needed when changing the grammar (glslang.y). * [googletest][googletest]: _optional_, but should use if making any changes to glslang. ### Build steps The following steps assume a Bash shell. On Windows, that could be the Git Bash shell or some other shell of your choosing. #### 1) Check-Out this project ```bash cd git clone https://github.com/KhronosGroup/glslang.git ``` #### 2) Check-Out External Projects ```bash ./update_glslang_sources.py ``` #### 3) Configure Assume the source directory is `$SOURCE_DIR` and the build directory is `$BUILD_DIR`. CMake will create the `$BUILD_DIR` for the user if it doesn't exist. First change your working directory: ```bash cd $SOURCE_DIR ``` For building on Linux: ```bash cmake -B $BUILD_DIR -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" # "Release" (for CMAKE_BUILD_TYPE) could also be "Debug" or "RelWithDebInfo" ``` For building on Android: ```bash cmake -B $BUILD_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 ``` For building on Windows: ```bash cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX="$(pwd)/install" # The CMAKE_INSTALL_PREFIX part is for testing (explained later). ``` Also, consider using `git config --global core.fileMode false` (or with `--local`) on Windows to prevent the addition of execution permission on files. #### 4) Build and Install ```bash # for Linux: make -j4 install # for Windows: cmake --build . --config Release --target install # "Release" (for --config) could also be "Debug", "MinSizeRel", or "RelWithDebInfo" ``` If using MSVC, after running CMake to configure, use the Configuration Manager to check the `INSTALL` project. ### Building (GN) glslang can also be built with the [GN build system](https://gn.googlesource.com/gn/). #### 1) Install `depot_tools` Download [depot_tools.zip](https://storage.googleapis.com/chrome-infra/depot_tools.zip), extract to a directory, and add this directory to your `PATH`. #### 2) Synchronize dependencies and generate build files This only needs to be done once after updating `glslang`. With the current directory set to your `glslang` checkout, type: ```bash ./update_glslang_sources.py gclient sync --gclientfile=standalone.gclient gn gen out/Default ``` #### 3) Build With the current directory set to your `glslang` checkout, type: ```bash cd out/Default ninja ``` ### If you need to change the GLSL grammar The grammar in `glslang/MachineIndependent/glslang.y` has to be recompiled with bison if it changes, the output files are committed to the repo to avoid every developer needing to have bison configured to compile the project when grammar changes are quite infrequent. For windows you can get binaries from [GnuWin32][bison-gnu-win32]. The command to rebuild is: ```bash bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp ``` The above command is also available in the bash script in `updateGrammar`, when executed from the glslang subdirectory of the glslang repository. ### Building to WASM for the Web and Node ### Building a standalone JS/WASM library for the Web and Node Use the steps in [Build Steps](#build-steps), with the following notes/exceptions: * `emsdk` needs to be present in your executable search path, *PATH* for Bash-like environments: + [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) * Wrap cmake call: `emcmake cmake` * Set `-DENABLE_OPT=OFF`. * Set `-DENABLE_HLSL=OFF` if HLSL is not needed. * For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`. * To get a fully minimized build, make sure to use `brotli` to compress the .js and .wasm files * Note that by default, Emscripten allocates a very small stack size, which may cause stack overflows when compiling large shaders. Use the [STACK_SIZE](https://emscripten.org/docs/tools_reference/settings_reference.html?highlight=environment#stack-size) compiler setting to increase the stack size. Example: ```sh emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \ -DENABLE_HLSL=OFF -DENABLE_OPT=OFF .. ``` ## Building glslang - Using vcpkg You can download and install glslang using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager: git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install ./vcpkg install glslang The glslang port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. ## Testing Right now, there are two test harnesses existing in glslang: one is [Google Test](gtests/), one is the [`runtests` script](Test/runtests). The former runs unit tests and single-shader single-threaded integration tests, while the latter runs multiple-shader linking tests and multi-threaded tests. Tests may erroneously fail or pass if using `ALLOW_EXTERNAL_SPIRV_TOOLS` with any commit other than the one specified in `known_good.json`. ### Running tests The [`runtests` script](Test/runtests) requires compiled binaries to be installed into `$BUILD_DIR/install`. Please make sure you have supplied the correct configuration to CMake (using `-DCMAKE_INSTALL_PREFIX`) when building; otherwise, you may want to modify the path in the `runtests` script. Running Google Test-backed tests: ```bash cd $BUILD_DIR # for Linux: ctest # for Windows: ctest -C {Debug|Release|RelWithDebInfo|MinSizeRel} # or, run the test binary directly # (which gives more fine-grained control like filtering): /glslangtests ``` Running `runtests` script-backed tests: ```bash cd $SOURCE_DIR/Test && ./runtests ``` If some tests fail with validation errors, there may be a mismatch between the version of `spirv-val` on the system and the version of glslang. In this case, it is necessary to run `update_glslang_sources.py`. See "Check-Out External Projects" above for more details. ### Contributing tests Test results should always be included with a pull request that modifies functionality. If you are writing unit tests, please use the Google Test framework and place the tests under the `gtests/` directory. Integration tests are placed in the `Test/` directory. It contains test input and a subdirectory `baseResults/` that contains the expected results of the tests. Both the tests and `baseResults/` are under source-code control. Google Test runs those integration tests by reading the test input, compiling them, and then compare against the expected results in `baseResults/`. The integration tests to run via Google Test is registered in various `gtests/*.FromFile.cpp` source files. `glslangtests` provides a command-line option `--update-mode`, which, if supplied, will overwrite the golden files under the `baseResults/` directory with real output from that invocation. For more information, please check `gtests/` directory's [README](gtests/README.md). For the `runtests` script, it will generate current results in the `localResults/` directory and `diff` them against the `baseResults/`. When you want to update the tracked test results, they need to be copied from `localResults/` to `baseResults/`. This can be done by the `bump` shell script. You can add your own private list of tests, not tracked publicly, by using `localtestlist` to list non-tracked tests. This is automatically read by `runtests` and included in the `diff` and `bump` process. ## Programmatic Interfaces Another piece of software can programmatically translate shaders to an AST using one of two different interfaces: * A new C++ class-oriented interface, or * The original C functional interface The `main()` in `StandAlone/StandAlone.cpp` shows examples using both styles. ### C++ Class Interface (new, preferred) This interface is in roughly the last 1/3 of `ShaderLang.h`. It is in the glslang namespace and contains the following, here with suggested calls for generating SPIR-V: ```cxx const char* GetEsslVersionString(); const char* GetGlslVersionString(); bool InitializeProcess(); void FinalizeProcess(); class TShader setStrings(...); setEnvInput(EShSourceHlsl or EShSourceGlsl, stage, EShClientVulkan or EShClientOpenGL, 100); setEnvClient(EShClientVulkan or EShClientOpenGL, EShTargetVulkan_1_0 or EShTargetVulkan_1_1 or EShTargetOpenGL_450); setEnvTarget(EShTargetSpv, EShTargetSpv_1_0 or EShTargetSpv_1_3); bool parse(...); const char* getInfoLog(); class TProgram void addShader(...); bool link(...); const char* getInfoLog(); Reflection queries ``` For just validating (not generating code), substitute these calls: ```cxx setEnvInput(EShSourceHlsl or EShSourceGlsl, stage, EShClientNone, 0); setEnvClient(EShClientNone, 0); setEnvTarget(EShTargetNone, 0); ``` See `ShaderLang.h` and the usage of it in `StandAlone/StandAlone.cpp` for more details. There is a block comment giving more detail above the calls for `setEnvInput, setEnvClient, and setEnvTarget`. ### C Functional Interface (original) This interface is in roughly the first 2/3 of `ShaderLang.h`, and referred to as the `Sh*()` interface, as all the entry points start `Sh`. The `Sh*()` interface takes a "compiler" call-back object, which it calls after building call back that is passed the AST and can then execute a back end on it. The following is a simplified resulting run-time call stack: ```c ShCompile(shader, compiler) -> compiler(AST) -> ``` 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. ```c #include // Required for use of glslang_default_resource #include typedef struct SpirVBinary { uint32_t *words; // SPIR-V words int size; // number of words in SPIR-V binary } SpirVBinary; SpirVBinary 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 = glslang_default_resource(), }; glslang_shader_t* shader = glslang_shader_create(&input); SpirVBinary bin = { .words = NULL, .size = 0, }; 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 bin; } 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 bin; } 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 bin; } glslang_program_SPIRV_generate(program, stage); bin.size = glslang_program_SPIRV_get_size(program); bin.words = malloc(bin.size * sizeof(uint32_t)); glslang_program_SPIRV_get(program, bin.words); 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 bin; } ``` ## Basic Internal Operation * Initial lexical analysis is done by the preprocessor in `MachineIndependent/Preprocessor`, and then refined by a GLSL scanner in `MachineIndependent/Scan.cpp`. There is currently no use of flex. * Code is parsed using bison on `MachineIndependent/glslang.y` with the aid of a symbol table and an AST. The symbol table is not passed on to the back-end; the intermediate representation stands on its own. The tree is built by the grammar productions, many of which are offloaded into `ParseHelper.cpp`, and by `Intermediate.cpp`. * The intermediate representation is very high-level, and represented as an in-memory tree. This serves to lose no information from the original program, and to have efficient transfer of the result from parsing to the back-end. In the AST, constants are propagated and folded, and a very small amount of dead code is eliminated. To aid linking and reflection, the last top-level branch in the AST lists all global symbols. * The primary algorithm of the back-end compiler is to traverse the tree (high-level intermediate representation), and create an internal object code representation. There is an example of how to do this in `MachineIndependent/intermOut.cpp`. * Reduction of the tree to a linear byte-code style low-level intermediate representation is likely a good way to generate fully optimized code. * There is currently some dead old-style linker-type code still lying around. * Memory pool: parsing uses types derived from C++ `std` types, using a custom allocator that puts them in a memory pool. This makes allocation of individual container/contents just few cycles and deallocation free. This pool is popped after the AST is made and processed. The use is simple: if you are going to call `new`, there are three cases: - the object comes from the pool (its base class has the macro `POOL_ALLOCATOR_NEW_DELETE` in it) and you do not have to call `delete` - it is a `TString`, in which case call `NewPoolTString()`, which gets it from the pool, and there is no corresponding `delete` - the object does not come from the pool, and you have to do normal C++ memory management of what you `new` * Features can be protected by version/extension/stage/profile: See the comment in `glslang/MachineIndependent/Versions.cpp`. [cmake]: https://cmake.org/ [python]: https://www.python.org/ [bison]: https://www.gnu.org/software/bison/ [googletest]: https://github.com/google/googletest [bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm [main-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/main-tot glslang-16.0.0/SECURITY.md000066400000000000000000000004771506534232700150350ustar00rootroot00000000000000# Security Policy To report a security issue, please disclose it at [security advisory](https://github.com/KhronosGroup/glslang/security/advisories/new). This project is maintained by a team of volunteers on a reasonable-effort basis. As such, please give us at least 90 days to work on a fix before public exposure. glslang-16.0.0/SPIRV/000077500000000000000000000000001506534232700141375ustar00rootroot00000000000000glslang-16.0.0/SPIRV/CInterface/000077500000000000000000000000001506534232700161425ustar00rootroot00000000000000glslang-16.0.0/SPIRV/CInterface/spirv_c_interface.cpp000066400000000000000000000103301506534232700223300ustar00rootroot00000000000000/** This code is based on the glslang_c_interface implementation by Viktor Latypov **/ /** BSD 2-Clause License Copyright (c) 2019, Viktor Latypov All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **/ #include "glslang/Include/glslang_c_interface.h" #include #include "glslang/Public/ShaderLang.h" #include "SPIRV/GlslangToSpv.h" #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 spirv; std::string loggerMessages; } glslang_program_t; static EShLanguage c_shader_stage(glslang_stage_t stage) { switch (stage) { case GLSLANG_STAGE_VERTEX: return EShLangVertex; case GLSLANG_STAGE_TESSCONTROL: return EShLangTessControl; case GLSLANG_STAGE_TESSEVALUATION: return EShLangTessEvaluation; case GLSLANG_STAGE_GEOMETRY: return EShLangGeometry; case GLSLANG_STAGE_FRAGMENT: return EShLangFragment; case GLSLANG_STAGE_COMPUTE: return EShLangCompute; case GLSLANG_STAGE_RAYGEN: return EShLangRayGen; case GLSLANG_STAGE_INTERSECT: return EShLangIntersect; case GLSLANG_STAGE_ANYHIT: return EShLangAnyHit; case GLSLANG_STAGE_CLOSESTHIT: return EShLangClosestHit; case GLSLANG_STAGE_MISS: return EShLangMiss; case GLSLANG_STAGE_CALLABLE: return EShLangCallable; case GLSLANG_STAGE_TASK: return EShLangTask; case GLSLANG_STAGE_MESH: return EShLangMesh; default: break; } return EShLangCount; } GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage) { glslang_spv_options_t spv_options {}; spv_options.disable_optimizer = true; 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; const glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); program->spirv.clear(); glslang::GlslangToSpv(*intermediate, program->spirv, &logger, reinterpret_cast(spv_options)); program->loggerMessages = logger.getAllMessages(); } GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program) { return program->spirv.size(); } GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int* out) { memcpy(out, program->spirv.data(), program->spirv.size() * sizeof(unsigned int)); } GLSLANG_EXPORT unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program) { return program->spirv.data(); } GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t* program) { return program->loggerMessages.empty() ? nullptr : program->loggerMessages.c_str(); } glslang-16.0.0/SPIRV/CMakeLists.txt000066400000000000000000000101571506534232700167030ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set(SPIRV_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/GlslangToSpv.cpp ${CMAKE_CURRENT_SOURCE_DIR}/InReadableOrder.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Logger.cpp ${CMAKE_CURRENT_SOURCE_DIR}/SpvBuilder.cpp ${CMAKE_CURRENT_SOURCE_DIR}/SpvPostProcess.cpp ${CMAKE_CURRENT_SOURCE_DIR}/doc.cpp ${CMAKE_CURRENT_SOURCE_DIR}/SpvTools.cpp ${CMAKE_CURRENT_SOURCE_DIR}/disassemble.cpp ${CMAKE_CURRENT_SOURCE_DIR}/CInterface/spirv_c_interface.cpp PARENT_SCOPE) set(SPIRV_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/bitutils.h ${CMAKE_CURRENT_SOURCE_DIR}/spirv.hpp11 ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.std.450.h ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.EXT.h ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.KHR.h ${CMAKE_CURRENT_SOURCE_DIR}/GlslangToSpv.h ${CMAKE_CURRENT_SOURCE_DIR}/hex_float.h ${CMAKE_CURRENT_SOURCE_DIR}/Logger.h ${CMAKE_CURRENT_SOURCE_DIR}/SpvBuilder.h ${CMAKE_CURRENT_SOURCE_DIR}/spvIR.h ${CMAKE_CURRENT_SOURCE_DIR}/spvUtil.h ${CMAKE_CURRENT_SOURCE_DIR}/doc.h ${CMAKE_CURRENT_SOURCE_DIR}/SpvTools.h ${CMAKE_CURRENT_SOURCE_DIR}/disassemble.h ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.AMD.h ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.NV.h ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.ARM.h ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.QCOM.h ${CMAKE_CURRENT_SOURCE_DIR}/NonSemanticDebugPrintf.h ${CMAKE_CURRENT_SOURCE_DIR}/NonSemanticShaderDebugInfo100.h PARENT_SCOPE) set(PUBLIC_HEADERS GlslangToSpv.h disassemble.h Logger.h spirv.hpp11 SpvTools.h) add_library(SPIRV ${LIB_TYPE} ${CMAKE_CURRENT_SOURCE_DIR}/../glslang/stub.cpp) add_library(glslang::SPIRV ALIAS SPIRV) set_target_properties(SPIRV PROPERTIES FOLDER glslang POSITION_INDEPENDENT_CODE ON VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") target_include_directories(SPIRV PUBLIC $ $) glslang_only_export_explicit_symbols(SPIRV) if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(SPIRV PROPERTIES PREFIX "") endif() if(ENABLE_OPT) target_link_libraries(SPIRV INTERFACE glslang PUBLIC SPIRV-Tools-opt) target_include_directories(SPIRV PUBLIC $) else() target_link_libraries(SPIRV INTERFACE glslang) endif() if(WIN32) source_group("Source" FILES ${SOURCES} ${HEADERS}) endif() if(GLSLANG_ENABLE_INSTALL) install(TARGETS SPIRV EXPORT glslang-targets) install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) endif() glslang-16.0.0/SPIRV/GLSL.ext.AMD.h000066400000000000000000000070401506534232700162510ustar00rootroot00000000000000/* ** 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. */ #ifndef GLSLextAMD_H #define GLSLextAMD_H static const int GLSLextAMDVersion = 100; static const int GLSLextAMDRevision = 7; // SPV_AMD_shader_ballot static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot"; enum ShaderBallotAMD { ShaderBallotBadAMD = 0, // Don't use SwizzleInvocationsAMD = 1, SwizzleInvocationsMaskedAMD = 2, WriteInvocationAMD = 3, MbcntAMD = 4, ShaderBallotCountAMD }; // SPV_AMD_shader_trinary_minmax static const char* const E_SPV_AMD_shader_trinary_minmax = "SPV_AMD_shader_trinary_minmax"; enum ShaderTrinaryMinMaxAMD { ShaderTrinaryMinMaxBadAMD = 0, // Don't use FMin3AMD = 1, UMin3AMD = 2, SMin3AMD = 3, FMax3AMD = 4, UMax3AMD = 5, SMax3AMD = 6, FMid3AMD = 7, UMid3AMD = 8, SMid3AMD = 9, ShaderTrinaryMinMaxCountAMD }; // SPV_AMD_shader_explicit_vertex_parameter static const char* const E_SPV_AMD_shader_explicit_vertex_parameter = "SPV_AMD_shader_explicit_vertex_parameter"; enum ShaderExplicitVertexParameterAMD { ShaderExplicitVertexParameterBadAMD = 0, // Don't use InterpolateAtVertexAMD = 1, ShaderExplicitVertexParameterCountAMD }; // SPV_AMD_gcn_shader static const char* const E_SPV_AMD_gcn_shader = "SPV_AMD_gcn_shader"; enum GcnShaderAMD { GcnShaderBadAMD = 0, // Don't use CubeFaceIndexAMD = 1, CubeFaceCoordAMD = 2, TimeAMD = 3, GcnShaderCountAMD }; // SPV_AMD_gpu_shader_half_float static const char* const E_SPV_AMD_gpu_shader_half_float = "SPV_AMD_gpu_shader_half_float"; // SPV_AMD_texture_gather_bias_lod static const char* const E_SPV_AMD_texture_gather_bias_lod = "SPV_AMD_texture_gather_bias_lod"; // SPV_AMD_gpu_shader_int16 static const char* const E_SPV_AMD_gpu_shader_int16 = "SPV_AMD_gpu_shader_int16"; // SPV_AMD_shader_image_load_store_lod static const char* const E_SPV_AMD_shader_image_load_store_lod = "SPV_AMD_shader_image_load_store_lod"; // SPV_AMD_shader_fragment_mask static const char* const E_SPV_AMD_shader_fragment_mask = "SPV_AMD_shader_fragment_mask"; // SPV_AMD_gpu_shader_half_float_fetch static const char* const E_SPV_AMD_gpu_shader_half_float_fetch = "SPV_AMD_gpu_shader_half_float_fetch"; #endif // #ifndef GLSLextAMD_H glslang-16.0.0/SPIRV/GLSL.ext.ARM.h000066400000000000000000000033511506534232700162700ustar00rootroot00000000000000/* ** Copyright (c) 2022, 2025 ARM Limited ** ** 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 GLSLextARM_H #define GLSLextARM_H static const int GLSLextARMVersion = 100; static const int GLSLextARMRevision = 2; static const char* const E_SPV_ARM_core_builtins = "SPV_ARM_core_builtins"; static const char* const E_SPV_ARM_cooperative_matrix_layouts = "SPV_ARM_cooperative_matrix_layouts"; static const char* const E_SPV_ARM_tensors = "SPV_ARM_tensors"; #endif // #ifndef GLSLextARM_H glslang-16.0.0/SPIRV/GLSL.ext.EXT.h000066400000000000000000000051271506534232700163140ustar00rootroot00000000000000/* ** 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. */ #ifndef GLSLextEXT_H #define GLSLextEXT_H static const int GLSLextEXTVersion = 100; static const int GLSLextEXTRevision = 2; static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shader_stencil_export"; static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer"; static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fully_covered"; static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density"; static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation"; static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_atomic_float_add"; 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_shader_tile_image = "SPV_EXT_shader_tile_image"; static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader"; static const char* const E_SPV_EXT_float8 = "SPV_EXT_float8"; #endif // #ifndef GLSLextEXT_H glslang-16.0.0/SPIRV/GLSL.ext.KHR.h000066400000000000000000000115511506534232700162760ustar00rootroot00000000000000/* ** Copyright (c) 2014-2020 The Khronos Group Inc. ** Copyright (C) 2022-2024 Arm Limited. ** Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. ** ** Permission is hereby granted, free of charge, to any person obtaining a copy ** of this software and/or associated documentation files (the "Materials"), ** 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 GLSLextKHR_H #define GLSLextKHR_H static const int GLSLextKHRVersion = 100; 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"; static const char* const E_SPV_KHR_device_group = "SPV_KHR_device_group"; static const char* const E_SPV_KHR_multiview = "SPV_KHR_multiview"; static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters"; static const char* const E_SPV_KHR_16bit_storage = "SPV_KHR_16bit_storage"; static const char* const E_SPV_KHR_8bit_storage = "SPV_KHR_8bit_storage"; static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class"; static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage"; static const char* const E_SPV_KHR_vulkan_memory_model = "SPV_KHR_vulkan_memory_model"; static const char* const E_SPV_EXT_physical_storage_buffer = "SPV_EXT_physical_storage_buffer"; static const char* const E_SPV_KHR_physical_storage_buffer = "SPV_KHR_physical_storage_buffer"; static const char* const E_SPV_EXT_fragment_shader_interlock = "SPV_EXT_fragment_shader_interlock"; static const char* const E_SPV_KHR_shader_clock = "SPV_KHR_shader_clock"; static const char* const E_SPV_KHR_non_semantic_info = "SPV_KHR_non_semantic_info"; static const char* const E_SPV_KHR_ray_tracing = "SPV_KHR_ray_tracing"; static const char* const E_SPV_KHR_ray_query = "SPV_KHR_ray_query"; static const char* const E_SPV_KHR_fragment_shading_rate = "SPV_KHR_fragment_shading_rate"; 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_KHR_quad_control = "SPV_KHR_quad_control"; static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests"; static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch"; static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix"; static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maximal_reconvergence"; static const char* const E_SPV_KHR_subgroup_rotate = "SPV_KHR_subgroup_rotate"; static const char* const E_SPV_KHR_expect_assume = "SPV_KHR_expect_assume"; static const char* const E_SPV_EXT_replicated_composites = "SPV_EXT_replicated_composites"; static const char* const E_SPV_KHR_relaxed_extended_instruction = "SPV_KHR_relaxed_extended_instruction"; static const char* const E_SPV_KHR_integer_dot_product = "SPV_KHR_integer_dot_product"; static const char* const E_SPV_NV_cooperative_vector = "SPV_NV_cooperative_vector"; static const char* const E_SPV_KHR_bfloat16 = "SPV_KHR_bfloat16"; #endif // #ifndef GLSLextKHR_H glslang-16.0.0/SPIRV/GLSL.ext.NV.h000066400000000000000000000103321506534232700161710ustar00rootroot00000000000000/* ** Copyright (c) 2014-2017 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 GLSLextNV_H #define GLSLextNV_H enum class BuiltIn : unsigned; enum class Decoration : unsigned; enum class Op : unsigned; enum class Capability : unsigned; static const int GLSLextNVVersion = 100; static const int GLSLextNVRevision = 11; //SPV_NV_sample_mask_override_coverage const char* const E_SPV_NV_sample_mask_override_coverage = "SPV_NV_sample_mask_override_coverage"; //SPV_NV_geometry_shader_passthrough const char* const E_SPV_NV_geometry_shader_passthrough = "SPV_NV_geometry_shader_passthrough"; //SPV_NV_viewport_array2 const char* const E_SPV_NV_viewport_array2 = "SPV_NV_viewport_array2"; const char* const E_ARB_shader_viewport_layer_array = "SPV_ARB_shader_viewport_layer_array"; //SPV_NV_stereo_view_rendering const char* const E_SPV_NV_stereo_view_rendering = "SPV_NV_stereo_view_rendering"; //SPV_NVX_multiview_per_view_attributes const char* const E_SPV_NVX_multiview_per_view_attributes = "SPV_NVX_multiview_per_view_attributes"; //SPV_NV_shader_subgroup_partitioned const char* const E_SPV_NV_shader_subgroup_partitioned = "SPV_NV_shader_subgroup_partitioned"; //SPV_NV_fragment_shader_barycentric const char* const E_SPV_NV_fragment_shader_barycentric = "SPV_NV_fragment_shader_barycentric"; //SPV_NV_compute_shader_derivatives const char* const E_SPV_NV_compute_shader_derivatives = "SPV_NV_compute_shader_derivatives"; //SPV_NV_shader_image_footprint const char* const E_SPV_NV_shader_image_footprint = "SPV_NV_shader_image_footprint"; //SPV_NV_mesh_shader const char* const E_SPV_NV_mesh_shader = "SPV_NV_mesh_shader"; //SPV_NV_raytracing const char* const E_SPV_NV_ray_tracing = "SPV_NV_ray_tracing"; //SPV_NV_ray_tracing_motion_blur const char* const E_SPV_NV_ray_tracing_motion_blur = "SPV_NV_ray_tracing_motion_blur"; //SPV_NV_shading_rate const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate"; //SPV_NV_cooperative_matrix const char* const E_SPV_NV_cooperative_matrix = "SPV_NV_cooperative_matrix"; //SPV_NV_shader_sm_builtins const char* const E_SPV_NV_shader_sm_builtins = "SPV_NV_shader_sm_builtins"; //SPV_NV_shader_execution_reorder const char* const E_SPV_NV_shader_invocation_reorder = "SPV_NV_shader_invocation_reorder"; //SPV_NV_displacement_micromap const char* const E_SPV_NV_displacement_micromap = "SPV_NV_displacement_micromap"; //SPV_NV_shader_atomic_fp16_vector const char* const E_SPV_NV_shader_atomic_fp16_vector = "SPV_NV_shader_atomic_fp16_vector"; //SPV_NV_tensor_addressing const char* const E_SPV_NV_tensor_addressing = "SPV_NV_tensor_addressing"; //SPV_NV_cooperative_matrix2 const char* const E_SPV_NV_cooperative_matrix2 = "SPV_NV_cooperative_matrix2"; //SPV_NV_cluster_acceleration_structure const char* const E_SPV_NV_cluster_acceleration_structure = "SPV_NV_cluster_acceleration_structure"; //SPV_NV_linear_swept_spheres const char* const E_SPV_NV_linear_swept_spheres = "SPV_NV_linear_swept_spheres"; #endif // #ifndef GLSLextNV_H glslang-16.0.0/SPIRV/GLSL.ext.QCOM.h000066400000000000000000000041021506534232700164030ustar00rootroot00000000000000/* ** Copyright (c) 2021 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 GLSLextQCOM_H #define GLSLextQCOM_H enum class BuiltIn : unsigned; enum class Decoration : unsigned; enum class Op : unsigned; enum class Capability : unsigned; static const int GLSLextQCOMVersion = 100; static const int GLSLextQCOMRevision = 1; //SPV_QCOM_image_processing const char* const E_SPV_QCOM_image_processing = "SPV_QCOM_image_processing"; //SPV_QCOM_image_processing2 const char* const E_SPV_QCOM_image_processing2 = "SPV_QCOM_image_processing2"; //SPV_QCOM_cooperative_matrix_conversion const char* const E_SPV_QCOM_cooperative_matrix_conversion = "SPV_QCOM_cooperative_matrix_conversion"; //SPV_QCOM_tile_shading const char* const E_SPV_QCOM_tile_shading = "SPV_QCOM_tile_shading"; #endif // #ifndef GLSLextQCOM_H glslang-16.0.0/SPIRV/GLSL.std.450.h000066400000000000000000000100361506534232700161510ustar00rootroot00000000000000/* ** 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. */ #ifndef GLSLstd450_H #define GLSLstd450_H static const int GLSLstd450Version = 100; static const int GLSLstd450Revision = 1; enum GLSLstd450 { GLSLstd450Bad = 0, // Don't use GLSLstd450Round = 1, GLSLstd450RoundEven = 2, GLSLstd450Trunc = 3, GLSLstd450FAbs = 4, GLSLstd450SAbs = 5, GLSLstd450FSign = 6, GLSLstd450SSign = 7, GLSLstd450Floor = 8, GLSLstd450Ceil = 9, GLSLstd450Fract = 10, GLSLstd450Radians = 11, GLSLstd450Degrees = 12, GLSLstd450Sin = 13, GLSLstd450Cos = 14, GLSLstd450Tan = 15, GLSLstd450Asin = 16, GLSLstd450Acos = 17, GLSLstd450Atan = 18, GLSLstd450Sinh = 19, GLSLstd450Cosh = 20, GLSLstd450Tanh = 21, GLSLstd450Asinh = 22, GLSLstd450Acosh = 23, GLSLstd450Atanh = 24, GLSLstd450Atan2 = 25, GLSLstd450Pow = 26, GLSLstd450Exp = 27, GLSLstd450Log = 28, GLSLstd450Exp2 = 29, GLSLstd450Log2 = 30, GLSLstd450Sqrt = 31, GLSLstd450InverseSqrt = 32, GLSLstd450Determinant = 33, GLSLstd450MatrixInverse = 34, GLSLstd450Modf = 35, // second operand needs an OpVariable to write to GLSLstd450ModfStruct = 36, // no OpVariable operand GLSLstd450FMin = 37, GLSLstd450UMin = 38, GLSLstd450SMin = 39, GLSLstd450FMax = 40, GLSLstd450UMax = 41, GLSLstd450SMax = 42, GLSLstd450FClamp = 43, GLSLstd450UClamp = 44, GLSLstd450SClamp = 45, GLSLstd450FMix = 46, GLSLstd450IMix = 47, // Reserved GLSLstd450Step = 48, GLSLstd450SmoothStep = 49, GLSLstd450Fma = 50, GLSLstd450Frexp = 51, // second operand needs an OpVariable to write to GLSLstd450FrexpStruct = 52, // no OpVariable operand GLSLstd450Ldexp = 53, GLSLstd450PackSnorm4x8 = 54, GLSLstd450PackUnorm4x8 = 55, GLSLstd450PackSnorm2x16 = 56, GLSLstd450PackUnorm2x16 = 57, GLSLstd450PackHalf2x16 = 58, GLSLstd450PackDouble2x32 = 59, GLSLstd450UnpackSnorm2x16 = 60, GLSLstd450UnpackUnorm2x16 = 61, GLSLstd450UnpackHalf2x16 = 62, GLSLstd450UnpackSnorm4x8 = 63, GLSLstd450UnpackUnorm4x8 = 64, GLSLstd450UnpackDouble2x32 = 65, GLSLstd450Length = 66, GLSLstd450Distance = 67, GLSLstd450Cross = 68, GLSLstd450Normalize = 69, GLSLstd450FaceForward = 70, GLSLstd450Reflect = 71, GLSLstd450Refract = 72, GLSLstd450FindILsb = 73, GLSLstd450FindSMsb = 74, GLSLstd450FindUMsb = 75, GLSLstd450InterpolateAtCentroid = 76, GLSLstd450InterpolateAtSample = 77, GLSLstd450InterpolateAtOffset = 78, GLSLstd450NMin = 79, GLSLstd450NMax = 80, GLSLstd450NClamp = 81, GLSLstd450Count }; #endif // #ifndef GLSLstd450_H glslang-16.0.0/SPIRV/GlslangToSpv.cpp000066400000000000000000017344601506534232700172450ustar00rootroot00000000000000// // Copyright (C) 2014-2016 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017, 2022-2025 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Visit the nodes in the glslang intermediate tree representation to // translate them to SPIR-V. // #include "spirv.hpp11" #include "GlslangToSpv.h" #include "SpvBuilder.h" #include "SpvTools.h" #include "spvUtil.h" namespace spv { #include "GLSL.std.450.h" #include "GLSL.ext.KHR.h" #include "GLSL.ext.EXT.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" #include "GLSL.ext.QCOM.h" #include "NonSemanticDebugPrintf.h" } // Glslang includes #include "../glslang/MachineIndependent/localintermediate.h" #include "../glslang/MachineIndependent/SymbolTable.h" #include "../glslang/Include/Common.h" // Build-time generated includes #include "glslang/build_info.h" #include #include #include #include #include #include #include #include namespace { namespace { class SpecConstantOpModeGuard { public: SpecConstantOpModeGuard(spv::Builder* builder) : builder_(builder) { previous_flag_ = builder->isInSpecConstCodeGenMode(); } ~SpecConstantOpModeGuard() { previous_flag_ ? builder_->setToSpecConstCodeGenMode() : builder_->setToNormalCodeGenMode(); } void turnOnSpecConstantOpMode() { builder_->setToSpecConstCodeGenMode(); } private: spv::Builder* builder_; bool previous_flag_; }; struct OpDecorations { public: OpDecorations(spv::Decoration precision, spv::Decoration noContraction, spv::Decoration nonUniform) : precision(precision) , noContraction(noContraction), nonUniform(nonUniform) { } spv::Decoration precision; void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); } void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); } protected: spv::Decoration noContraction; spv::Decoration nonUniform; }; } // namespace // // The main holder of information for translating glslang to SPIR-V. // // Derives from the AST walking base class. // class TGlslangToSpvTraverser : public glslang::TIntermTraverser { public: TGlslangToSpvTraverser(unsigned int spvVersion, const glslang::TIntermediate*, spv::SpvBuildLogger* logger, glslang::SpvOptions& options); virtual ~TGlslangToSpvTraverser() { } bool visitAggregate(glslang::TVisit, glslang::TIntermAggregate*); bool visitBinary(glslang::TVisit, glslang::TIntermBinary*); void visitConstantUnion(glslang::TIntermConstantUnion*); bool visitSelection(glslang::TVisit, glslang::TIntermSelection*); bool visitSwitch(glslang::TVisit, glslang::TIntermSwitch*); void visitSymbol(glslang::TIntermSymbol* symbol); bool visitUnary(glslang::TVisit, glslang::TIntermUnary*); bool visitLoop(glslang::TVisit, glslang::TIntermLoop*); bool visitBranch(glslang::TVisit visit, glslang::TIntermBranch*); void finishSpv(bool compileOnly); void dumpSpv(std::vector& out); protected: TGlslangToSpvTraverser(TGlslangToSpvTraverser&); TGlslangToSpvTraverser& operator=(TGlslangToSpvTraverser&); spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateNonUniformDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateNonUniformDecoration(const spv::Builder::AccessChain::CoherentFlags& coherentFlags); spv::Builder::AccessChain::CoherentFlags TranslateCoherent(const glslang::TType& type); spv::MemoryAccessMask TranslateMemoryAccess(const spv::Builder::AccessChain::CoherentFlags &coherentFlags); spv::ImageOperandsMask TranslateImageOperands(const spv::Builder::AccessChain::CoherentFlags &coherentFlags); spv::Scope TranslateMemoryScope(const spv::Builder::AccessChain::CoherentFlags &coherentFlags); spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable, bool memberDeclaration); spv::ImageFormat TranslateImageFormat(const glslang::TType& type); spv::SelectionControlMask TranslateSelectionControl(const glslang::TIntermSelection&) const; spv::SelectionControlMask TranslateSwitchControl(const glslang::TIntermSwitch&) const; spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, std::vector& operands) const; spv::StorageClass TranslateStorageClass(const glslang::TType&); void TranslateLiterals(const glslang::TVector&, std::vector&) const; void addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType); spv::Id createSpvVariable(const glslang::TIntermSymbol*, spv::Id forcedType); spv::Id getSampledType(const glslang::TSampler&); spv::Id getInvertedSwizzleType(const glslang::TIntermTyped&); spv::Id createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped&, spv::Id parentResult); void convertSwizzle(const glslang::TIntermAggregate&, std::vector& swizzle); spv::Id convertGlslangToSpvType(const glslang::TType& type, bool forwardReferenceOnly = false); spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&, bool lastBufferBlockMember, bool forwardReferenceOnly = false); void applySpirvDecorate(const glslang::TType& type, spv::Id id, std::optional member); bool filterMember(const glslang::TType& member); spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking, const glslang::TQualifier&); spv::LinkageType convertGlslangLinkageToSpv(glslang::TLinkType glslangLinkType); void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking, const glslang::TQualifier&, spv::Id, const std::vector& spvMembers); spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim, bool allowZero = false, bool boolType = false); spv::Id accessChainLoad(const glslang::TType& type); void accessChainStore(const glslang::TType& type, spv::Id rvalue); void multiTypeStore(const glslang::TType&, spv::Id rValue); spv::Id convertLoadedBoolInUniformToUint(const glslang::TType& type, spv::Id nominalTypeId, spv::Id loadedId); glslang::TLayoutPacking getExplicitLayout(const glslang::TType& type) const; int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix); int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix); void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset, glslang::TLayoutPacking, glslang::TLayoutMatrix); void declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember); bool isShaderEntryPoint(const glslang::TIntermAggregate* node); bool writableParam(glslang::TStorageQualifier) const; bool originalParam(glslang::TStorageQualifier, const glslang::TType&, bool implicitThisParam); void makeFunctions(const glslang::TIntermSequence&); void makeGlobalInitializers(const glslang::TIntermSequence&); void collectRayTracingLinkerObjects(); void visitFunctions(const glslang::TIntermSequence&); void handleFunctionEntry(const glslang::TIntermAggregate* node); void translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); void translateArguments(glslang::TIntermUnary& node, std::vector& arguments); spv::Id createImageTextureFunctionCall(glslang::TIntermOperator* node); spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*); spv::Id createBinaryOperation(glslang::TOperator op, OpDecorations&, spv::Id typeId, spv::Id left, spv::Id right, glslang::TBasicType typeProxy, bool reduceComparison = true); spv::Id createBinaryMatrixOperation(spv::Op, OpDecorations&, spv::Id typeId, spv::Id left, spv::Id right); spv::Id createUnaryOperation(glslang::TOperator op, OpDecorations&, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags, const glslang::TType &opType); spv::Id createUnaryMatrixOperation(spv::Op op, OpDecorations&, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy); spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand, glslang::TBasicType resultBasicType, glslang::TBasicType operandBasicType); spv::Id createIntWidthConversion(spv::Id operand, int vectorSize, spv::Id destType, glslang::TBasicType resultBasicType, glslang::TBasicType operandBasicType); spv::Id makeSmearedConstant(spv::Id constant, int vectorSize); spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags, const glslang::TType &opType); spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector& operands); spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId); spv::Id getSymbolId(const glslang::TIntermSymbol* node); void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier); bool hasQCOMImageProceessingDecoration(spv::Id id, spv::Decoration decor); void addImageProcessingQCOMDecoration(spv::Id id, spv::Decoration decor); void addImageProcessing2QCOMDecoration(spv::Id id, bool isForGather); spv::Id createSpvConstant(const glslang::TIntermTyped&); spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&, int& nextConst, bool specConstant); bool isTrivialLeaf(const glslang::TIntermTyped* node); bool isTrivial(const glslang::TIntermTyped* node); spv::Id createShortCircuit(glslang::TOperator, glslang::TIntermTyped& left, glslang::TIntermTyped& right); spv::Id getExtBuiltins(const char* name); std::pair getForcedType(glslang::TBuiltInVariable builtIn, const glslang::TType&); spv::Id translateForcedType(spv::Id object); spv::Id createCompositeConstruct(spv::Id typeId, std::vector constituents); glslang::SpvOptions& options; spv::Function* shaderEntry; spv::Function* currentFunction; spv::Instruction* entryPoint; int sequenceDepth; spv::SpvBuildLogger* logger; // There is a 1:1 mapping between a spv builder and a module; this is thread safe spv::Builder builder; bool inEntryPoint; bool entryPointTerminated; bool linkageOnly; // true when visiting the set of objects in the AST present only for // establishing interface, whether or not they were statically used std::set iOSet; // all input/output variables from either static use or declaration of interface const glslang::TIntermediate* glslangIntermediate; bool nanMinMaxClamp; // true if use NMin/NMax/NClamp instead of FMin/FMax/FClamp spv::Id stdBuiltins; spv::Id nonSemanticDebugPrintf; std::unordered_map extBuiltinMap; std::unordered_map symbolValues; std::unordered_map builtInVariableIds; std::unordered_set rValueParameters; // set of formal function parameters passed as rValues, // rather than a pointer std::unordered_map functionMap; std::unordered_map structMap[glslang::ElpCount][glslang::ElmCount]; // for mapping glslang block indices to spv indices (e.g., due to hidden members): std::unordered_map> memberRemapper; // for mapping glslang symbol struct to symbol Id std::unordered_map glslangTypeToIdMap; std::stack breakForLoop; // false means break for switch std::unordered_map counterOriginator; // Map pointee types for EbtReference to their forward pointers std::map forwardPointers; // Type forcing, for when SPIR-V wants a different type than the AST, // requiring local translation to and from SPIR-V type on every access. // Maps AST-required-type-id> std::unordered_map forceType; // Used by Task shader while generating opearnds for OpEmitMeshTasksEXT spv::Id taskPayloadID; // Used later for generating OpTraceKHR/OpExecuteCallableKHR/OpHitObjectRecordHit*/OpHitObjectGetShaderBindingTableData std::unordered_map locationToSymbol[4]; std::unordered_map > idToQCOMDecorations; }; // // Helper functions for translating glslang representations to SPIR-V enumerants. // // Translate glslang profile to SPIR-V source language. spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile profile) { switch (source) { case glslang::EShSourceGlsl: switch (profile) { case ENoProfile: case ECoreProfile: case ECompatibilityProfile: return spv::SourceLanguage::GLSL; case EEsProfile: return spv::SourceLanguage::ESSL; default: return spv::SourceLanguage::Unknown; } case glslang::EShSourceHlsl: return spv::SourceLanguage::HLSL; default: return spv::SourceLanguage::Unknown; } } // Translate glslang language (stage) to SPIR-V execution model. spv::ExecutionModel TranslateExecutionModel(EShLanguage stage, bool isMeshShaderEXT = false) { switch (stage) { case EShLangVertex: return spv::ExecutionModel::Vertex; case EShLangFragment: return spv::ExecutionModel::Fragment; case EShLangCompute: return spv::ExecutionModel::GLCompute; case EShLangTessControl: return spv::ExecutionModel::TessellationControl; case EShLangTessEvaluation: return spv::ExecutionModel::TessellationEvaluation; case EShLangGeometry: return spv::ExecutionModel::Geometry; case EShLangRayGen: return spv::ExecutionModel::RayGenerationKHR; case EShLangIntersect: return spv::ExecutionModel::IntersectionKHR; case EShLangAnyHit: return spv::ExecutionModel::AnyHitKHR; case EShLangClosestHit: return spv::ExecutionModel::ClosestHitKHR; case EShLangMiss: return spv::ExecutionModel::MissKHR; case EShLangCallable: return spv::ExecutionModel::CallableKHR; case EShLangTask: return (isMeshShaderEXT)? spv::ExecutionModel::TaskEXT : spv::ExecutionModel::TaskNV; case EShLangMesh: return (isMeshShaderEXT)? spv::ExecutionModel::MeshEXT : spv::ExecutionModel::MeshNV; default: assert(0); return spv::ExecutionModel::Fragment; } } // Translate glslang sampler type to SPIR-V dimensionality. spv::Dim TranslateDimensionality(const glslang::TSampler& sampler) { switch (sampler.dim) { case glslang::Esd1D: return spv::Dim::Dim1D; case glslang::Esd2D: return spv::Dim::Dim2D; case glslang::Esd3D: return spv::Dim::Dim3D; case glslang::EsdCube: return spv::Dim::Cube; case glslang::EsdRect: return spv::Dim::Rect; case glslang::EsdBuffer: return spv::Dim::Buffer; case glslang::EsdSubpass: return spv::Dim::SubpassData; case glslang::EsdAttachmentEXT: return spv::Dim::TileImageDataEXT; default: assert(0); return spv::Dim::Dim2D; } } // Translate glslang precision to SPIR-V precision decorations. spv::Decoration TranslatePrecisionDecoration(glslang::TPrecisionQualifier glslangPrecision) { switch (glslangPrecision) { case glslang::EpqLow: return spv::Decoration::RelaxedPrecision; case glslang::EpqMedium: return spv::Decoration::RelaxedPrecision; default: return spv::NoPrecision; } } // Translate glslang type to SPIR-V precision decorations. spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type) { return TranslatePrecisionDecoration(type.getQualifier().precision); } // Translate glslang type to SPIR-V block decorations. spv::Decoration TranslateBlockDecoration(const glslang::TStorageQualifier storage, bool useStorageBuffer) { switch (storage) { case glslang::EvqUniform: return spv::Decoration::Block; case glslang::EvqBuffer: return useStorageBuffer ? spv::Decoration::Block : spv::Decoration::BufferBlock; case glslang::EvqVaryingIn: return spv::Decoration::Block; case glslang::EvqVaryingOut: return spv::Decoration::Block; case glslang::EvqShared: return spv::Decoration::Block; case glslang::EvqPayload: return spv::Decoration::Block; case glslang::EvqPayloadIn: return spv::Decoration::Block; case glslang::EvqHitAttr: return spv::Decoration::Block; case glslang::EvqCallableData: return spv::Decoration::Block; case glslang::EvqCallableDataIn: return spv::Decoration::Block; case glslang::EvqHitObjectAttrNV: return spv::Decoration::Block; default: assert(0); break; } return spv::Decoration::Max; } // Translate glslang type to SPIR-V memory decorations. void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector& memory, bool useVulkanMemoryModel) { if (!useVulkanMemoryModel) { if (qualifier.isVolatile()) { memory.push_back(spv::Decoration::Volatile); memory.push_back(spv::Decoration::Coherent); } else if (qualifier.isCoherent()) { memory.push_back(spv::Decoration::Coherent); } } if (qualifier.isRestrict()) memory.push_back(spv::Decoration::Restrict); if (qualifier.isReadOnly()) memory.push_back(spv::Decoration::NonWritable); if (qualifier.isWriteOnly()) memory.push_back(spv::Decoration::NonReadable); } // Translate glslang type to SPIR-V layout decorations. spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::TLayoutMatrix matrixLayout) { if (type.isMatrix()) { switch (matrixLayout) { case glslang::ElmRowMajor: return spv::Decoration::RowMajor; case glslang::ElmColumnMajor: return spv::Decoration::ColMajor; default: // opaque layouts don't need a majorness return spv::Decoration::Max; } } else { switch (type.getBasicType()) { default: return spv::Decoration::Max; break; case glslang::EbtBlock: switch (type.getQualifier().storage) { case glslang::EvqShared: case glslang::EvqUniform: case glslang::EvqBuffer: switch (type.getQualifier().layoutPacking) { case glslang::ElpShared: return spv::Decoration::GLSLShared; case glslang::ElpPacked: return spv::Decoration::GLSLPacked; default: return spv::Decoration::Max; } case glslang::EvqVaryingIn: case glslang::EvqVaryingOut: if (type.getQualifier().isTaskMemory()) { switch (type.getQualifier().layoutPacking) { case glslang::ElpShared: return spv::Decoration::GLSLShared; case glslang::ElpPacked: return spv::Decoration::GLSLPacked; default: break; } } else { assert(type.getQualifier().layoutPacking == glslang::ElpNone); } return spv::Decoration::Max; case glslang::EvqPayload: case glslang::EvqPayloadIn: case glslang::EvqHitAttr: case glslang::EvqCallableData: case glslang::EvqCallableDataIn: case glslang::EvqHitObjectAttrNV: return spv::Decoration::Max; default: assert(0); return spv::Decoration::Max; } } } } // Translate glslang type to SPIR-V interpolation decorations. // Returns spv::Decoration::Max when no decoration // should be applied. spv::Decoration TGlslangToSpvTraverser::TranslateInterpolationDecoration(const glslang::TQualifier& qualifier) { if (qualifier.smooth) // Smooth decoration doesn't exist in SPIR-V 1.0 return spv::Decoration::Max; else if (qualifier.isNonPerspective()) return spv::Decoration::NoPerspective; else if (qualifier.flat) return spv::Decoration::Flat; else if (qualifier.isExplicitInterpolation()) { builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::Decoration::ExplicitInterpAMD; } else return spv::Decoration::Max; } // Translate glslang type to SPIR-V auxiliary storage decorations. // Returns spv::Decoration::Max when no decoration // should be applied. spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier) { if (qualifier.centroid) return spv::Decoration::Centroid; else if (qualifier.patch) return spv::Decoration::Patch; else if (qualifier.sample) { builder.addCapability(spv::Capability::SampleRateShading); return spv::Decoration::Sample; } return spv::Decoration::Max; } // If glslang type is invariant, return SPIR-V invariant decoration. spv::Decoration TranslateInvariantDecoration(const glslang::TQualifier& qualifier) { if (qualifier.invariant) return spv::Decoration::Invariant; else return spv::Decoration::Max; } // If glslang type is noContraction, return SPIR-V NoContraction decoration. spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qualifier) { if (qualifier.isNoContraction()) return spv::Decoration::NoContraction; else return spv::Decoration::Max; } // If glslang type is nonUniform, return SPIR-V NonUniform decoration. spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glslang::TQualifier& qualifier) { if (qualifier.isNonUniform()) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::Capability::ShaderNonUniformEXT); return spv::Decoration::NonUniformEXT; } else return spv::Decoration::Max; } // If lvalue flags contains nonUniform, return SPIR-V NonUniform decoration. spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration( const spv::Builder::AccessChain::CoherentFlags& coherentFlags) { if (coherentFlags.isNonUniform()) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::Capability::ShaderNonUniformEXT); return spv::Decoration::NonUniformEXT; } else return spv::Decoration::Max; } spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess( const spv::Builder::AccessChain::CoherentFlags &coherentFlags) { spv::MemoryAccessMask mask = spv::MemoryAccessMask::MaskNone; if (!glslangIntermediate->usingVulkanMemoryModel() || coherentFlags.isImage) return mask; if (coherentFlags.isVolatile() || coherentFlags.anyCoherent()) { mask = mask | spv::MemoryAccessMask::MakePointerAvailableKHR | spv::MemoryAccessMask::MakePointerVisibleKHR; } if (coherentFlags.nonprivate) { mask = mask | spv::MemoryAccessMask::NonPrivatePointerKHR; } if (coherentFlags.volatil) { mask = mask | spv::MemoryAccessMask::Volatile; } if (coherentFlags.nontemporal) { mask = mask | spv::MemoryAccessMask::Nontemporal; } if (mask != spv::MemoryAccessMask::MaskNone) { builder.addCapability(spv::Capability::VulkanMemoryModelKHR); } return mask; } spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands( const spv::Builder::AccessChain::CoherentFlags &coherentFlags) { spv::ImageOperandsMask mask = spv::ImageOperandsMask::MaskNone; if (!glslangIntermediate->usingVulkanMemoryModel()) return mask; if (coherentFlags.volatil || coherentFlags.anyCoherent()) { mask = mask | spv::ImageOperandsMask::MakeTexelAvailableKHR | spv::ImageOperandsMask::MakeTexelVisibleKHR; } if (coherentFlags.nonprivate) { mask = mask | spv::ImageOperandsMask::NonPrivateTexelKHR; } if (coherentFlags.volatil) { mask = mask | spv::ImageOperandsMask::VolatileTexelKHR; } if (coherentFlags.nontemporal && builder.getSpvVersion() >= spv::Spv_1_6) { mask = mask | spv::ImageOperandsMask::Nontemporal; } if (mask != spv::ImageOperandsMask::MaskNone) { builder.addCapability(spv::Capability::VulkanMemoryModelKHR); } return mask; } spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCoherent(const glslang::TType& type) { spv::Builder::AccessChain::CoherentFlags flags = {}; flags.coherent = type.getQualifier().coherent; flags.devicecoherent = type.getQualifier().devicecoherent; flags.queuefamilycoherent = type.getQualifier().queuefamilycoherent; // shared variables are implicitly workgroupcoherent in GLSL. flags.workgroupcoherent = type.getQualifier().workgroupcoherent || type.getQualifier().storage == glslang::EvqShared; flags.subgroupcoherent = type.getQualifier().subgroupcoherent; flags.shadercallcoherent = type.getQualifier().shadercallcoherent; flags.volatil = type.getQualifier().volatil; flags.nontemporal = type.getQualifier().nontemporal; // *coherent variables are implicitly nonprivate in GLSL flags.nonprivate = type.getQualifier().nonprivate || flags.anyCoherent() || flags.volatil; flags.isImage = type.getBasicType() == glslang::EbtSampler; flags.nonUniform = type.getQualifier().nonUniform; return flags; } spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope( const spv::Builder::AccessChain::CoherentFlags &coherentFlags) { spv::Scope scope = spv::Scope::Max; if (coherentFlags.volatil || coherentFlags.coherent) { // coherent defaults to Device scope in the old model, QueueFamilyKHR scope in the new model scope = glslangIntermediate->usingVulkanMemoryModel() ? spv::Scope::QueueFamilyKHR : spv::Scope::Device; } else if (coherentFlags.devicecoherent) { scope = spv::Scope::Device; } else if (coherentFlags.queuefamilycoherent) { scope = spv::Scope::QueueFamilyKHR; } else if (coherentFlags.workgroupcoherent) { scope = spv::Scope::Workgroup; } else if (coherentFlags.subgroupcoherent) { scope = spv::Scope::Subgroup; } else if (coherentFlags.shadercallcoherent) { scope = spv::Scope::ShaderCallKHR; } if (glslangIntermediate->usingVulkanMemoryModel() && scope == spv::Scope::Device) { builder.addCapability(spv::Capability::VulkanMemoryModelDeviceScopeKHR); } return scope; } // Translate a glslang built-in variable to a SPIR-V built in decoration. Also generate // associated capabilities when required. For some built-in variables, a capability // is generated only when using the variable in an executable instruction, but not when // just declaring a struct member variable with it. This is true for PointSize, // ClipDistance, and CullDistance. spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn, bool memberDeclaration) { switch (builtIn) { case glslang::EbvPointSize: // Defer adding the capability until the built-in is actually used. if (! memberDeclaration) { switch (glslangIntermediate->getStage()) { case EShLangGeometry: builder.addCapability(spv::Capability::GeometryPointSize); break; case EShLangTessControl: case EShLangTessEvaluation: builder.addCapability(spv::Capability::TessellationPointSize); break; default: break; } } return spv::BuiltIn::PointSize; case glslang::EbvPosition: return spv::BuiltIn::Position; case glslang::EbvVertexId: return spv::BuiltIn::VertexId; case glslang::EbvInstanceId: return spv::BuiltIn::InstanceId; case glslang::EbvVertexIndex: return spv::BuiltIn::VertexIndex; case glslang::EbvInstanceIndex: return spv::BuiltIn::InstanceIndex; case glslang::EbvFragCoord: return spv::BuiltIn::FragCoord; case glslang::EbvPointCoord: return spv::BuiltIn::PointCoord; case glslang::EbvFace: return spv::BuiltIn::FrontFacing; case glslang::EbvFragDepth: return spv::BuiltIn::FragDepth; case glslang::EbvNumWorkGroups: return spv::BuiltIn::NumWorkgroups; case glslang::EbvWorkGroupSize: return spv::BuiltIn::WorkgroupSize; case glslang::EbvWorkGroupId: return spv::BuiltIn::WorkgroupId; case glslang::EbvLocalInvocationId: return spv::BuiltIn::LocalInvocationId; case glslang::EbvLocalInvocationIndex: return spv::BuiltIn::LocalInvocationIndex; case glslang::EbvGlobalInvocationId: return spv::BuiltIn::GlobalInvocationId; // These *Distance capabilities logically belong here, but if the member is declared and // then never used, consumers of SPIR-V prefer the capability not be declared. // They are now generated when used, rather than here when declared. // Potentially, the specification should be more clear what the minimum // use needed is to trigger the capability. // case glslang::EbvClipDistance: if (!memberDeclaration) builder.addCapability(spv::Capability::ClipDistance); return spv::BuiltIn::ClipDistance; case glslang::EbvCullDistance: if (!memberDeclaration) builder.addCapability(spv::Capability::CullDistance); return spv::BuiltIn::CullDistance; case glslang::EbvViewportIndex: if (glslangIntermediate->getStage() == EShLangGeometry || glslangIntermediate->getStage() == EShLangFragment) { builder.addCapability(spv::Capability::MultiViewport); } if (glslangIntermediate->getStage() == EShLangVertex || glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { if (builder.getSpvVersion() < spv::Spv_1_5) { builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); builder.addCapability(spv::Capability::ShaderViewportIndexLayerEXT); } else builder.addCapability(spv::Capability::ShaderViewportIndex); } return spv::BuiltIn::ViewportIndex; case glslang::EbvSampleId: builder.addCapability(spv::Capability::SampleRateShading); return spv::BuiltIn::SampleId; case glslang::EbvSamplePosition: builder.addCapability(spv::Capability::SampleRateShading); return spv::BuiltIn::SamplePosition; case glslang::EbvSampleMask: return spv::BuiltIn::SampleMask; case glslang::EbvLayer: if (glslangIntermediate->getStage() == EShLangMesh) { return spv::BuiltIn::Layer; } if (glslangIntermediate->getStage() == EShLangGeometry || glslangIntermediate->getStage() == EShLangFragment) { builder.addCapability(spv::Capability::Geometry); } if (glslangIntermediate->getStage() == EShLangVertex || glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { if (builder.getSpvVersion() < spv::Spv_1_5) { builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); builder.addCapability(spv::Capability::ShaderViewportIndexLayerEXT); } else builder.addCapability(spv::Capability::ShaderLayer); } return spv::BuiltIn::Layer; case glslang::EbvBaseVertex: builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::Capability::DrawParameters); return spv::BuiltIn::BaseVertex; case glslang::EbvBaseInstance: builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::Capability::DrawParameters); return spv::BuiltIn::BaseInstance; case glslang::EbvDrawId: builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::Capability::DrawParameters); return spv::BuiltIn::DrawIndex; case glslang::EbvPrimitiveId: if (glslangIntermediate->getStage() == EShLangFragment) builder.addCapability(spv::Capability::Geometry); return spv::BuiltIn::PrimitiveId; case glslang::EbvFragStencilRef: builder.addExtension(spv::E_SPV_EXT_shader_stencil_export); builder.addCapability(spv::Capability::StencilExportEXT); return spv::BuiltIn::FragStencilRefEXT; case glslang::EbvShadingRateKHR: builder.addExtension(spv::E_SPV_KHR_fragment_shading_rate); builder.addCapability(spv::Capability::FragmentShadingRateKHR); return spv::BuiltIn::ShadingRateKHR; case glslang::EbvPrimitiveShadingRateKHR: builder.addExtension(spv::E_SPV_KHR_fragment_shading_rate); builder.addCapability(spv::Capability::FragmentShadingRateKHR); return spv::BuiltIn::PrimitiveShadingRateKHR; case glslang::EbvInvocationId: return spv::BuiltIn::InvocationId; case glslang::EbvTessLevelInner: return spv::BuiltIn::TessLevelInner; case glslang::EbvTessLevelOuter: return spv::BuiltIn::TessLevelOuter; case glslang::EbvTessCoord: return spv::BuiltIn::TessCoord; case glslang::EbvPatchVertices: return spv::BuiltIn::PatchVertices; case glslang::EbvHelperInvocation: return spv::BuiltIn::HelperInvocation; case glslang::EbvSubGroupSize: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::Capability::SubgroupBallotKHR); return spv::BuiltIn::SubgroupSize; case glslang::EbvSubGroupInvocation: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::Capability::SubgroupBallotKHR); return spv::BuiltIn::SubgroupLocalInvocationId; case glslang::EbvSubGroupEqMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::Capability::SubgroupBallotKHR); return spv::BuiltIn::SubgroupEqMask; case glslang::EbvSubGroupGeMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::Capability::SubgroupBallotKHR); return spv::BuiltIn::SubgroupGeMask; case glslang::EbvSubGroupGtMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::Capability::SubgroupBallotKHR); return spv::BuiltIn::SubgroupGtMask; case glslang::EbvSubGroupLeMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::Capability::SubgroupBallotKHR); return spv::BuiltIn::SubgroupLeMask; case glslang::EbvSubGroupLtMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::Capability::SubgroupBallotKHR); return spv::BuiltIn::SubgroupLtMask; case glslang::EbvNumSubgroups: builder.addCapability(spv::Capability::GroupNonUniform); return spv::BuiltIn::NumSubgroups; case glslang::EbvSubgroupID: builder.addCapability(spv::Capability::GroupNonUniform); return spv::BuiltIn::SubgroupId; case glslang::EbvSubgroupSize2: builder.addCapability(spv::Capability::GroupNonUniform); return spv::BuiltIn::SubgroupSize; case glslang::EbvSubgroupInvocation2: builder.addCapability(spv::Capability::GroupNonUniform); return spv::BuiltIn::SubgroupLocalInvocationId; case glslang::EbvSubgroupEqMask2: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformBallot); return spv::BuiltIn::SubgroupEqMask; case glslang::EbvSubgroupGeMask2: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformBallot); return spv::BuiltIn::SubgroupGeMask; case glslang::EbvSubgroupGtMask2: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformBallot); return spv::BuiltIn::SubgroupGtMask; case glslang::EbvSubgroupLeMask2: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformBallot); return spv::BuiltIn::SubgroupLeMask; case glslang::EbvSubgroupLtMask2: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformBallot); return spv::BuiltIn::SubgroupLtMask; case glslang::EbvBaryCoordNoPersp: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltIn::BaryCoordNoPerspAMD; case glslang::EbvBaryCoordNoPerspCentroid: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltIn::BaryCoordNoPerspCentroidAMD; case glslang::EbvBaryCoordNoPerspSample: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltIn::BaryCoordNoPerspSampleAMD; case glslang::EbvBaryCoordSmooth: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltIn::BaryCoordSmoothAMD; case glslang::EbvBaryCoordSmoothCentroid: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltIn::BaryCoordSmoothCentroidAMD; case glslang::EbvBaryCoordSmoothSample: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltIn::BaryCoordSmoothSampleAMD; case glslang::EbvBaryCoordPullModel: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltIn::BaryCoordPullModelAMD; case glslang::EbvDeviceIndex: builder.addIncorporatedExtension(spv::E_SPV_KHR_device_group, spv::Spv_1_3); builder.addCapability(spv::Capability::DeviceGroup); return spv::BuiltIn::DeviceIndex; case glslang::EbvViewIndex: builder.addIncorporatedExtension(spv::E_SPV_KHR_multiview, spv::Spv_1_3); builder.addCapability(spv::Capability::MultiView); return spv::BuiltIn::ViewIndex; case glslang::EbvFragSizeEXT: builder.addExtension(spv::E_SPV_EXT_fragment_invocation_density); builder.addCapability(spv::Capability::FragmentDensityEXT); return spv::BuiltIn::FragSizeEXT; case glslang::EbvFragInvocationCountEXT: builder.addExtension(spv::E_SPV_EXT_fragment_invocation_density); builder.addCapability(spv::Capability::FragmentDensityEXT); return spv::BuiltIn::FragInvocationCountEXT; case glslang::EbvViewportMaskNV: if (!memberDeclaration) { builder.addExtension(spv::E_SPV_NV_viewport_array2); builder.addCapability(spv::Capability::ShaderViewportMaskNV); } return spv::BuiltIn::ViewportMaskNV; case glslang::EbvSecondaryPositionNV: if (!memberDeclaration) { builder.addExtension(spv::E_SPV_NV_stereo_view_rendering); builder.addCapability(spv::Capability::ShaderStereoViewNV); } return spv::BuiltIn::SecondaryPositionNV; case glslang::EbvSecondaryViewportMaskNV: if (!memberDeclaration) { builder.addExtension(spv::E_SPV_NV_stereo_view_rendering); builder.addCapability(spv::Capability::ShaderStereoViewNV); } return spv::BuiltIn::SecondaryViewportMaskNV; case glslang::EbvPositionPerViewNV: if (!memberDeclaration) { builder.addExtension(spv::E_SPV_NVX_multiview_per_view_attributes); builder.addCapability(spv::Capability::PerViewAttributesNV); } return spv::BuiltIn::PositionPerViewNV; case glslang::EbvViewportMaskPerViewNV: if (!memberDeclaration) { builder.addExtension(spv::E_SPV_NVX_multiview_per_view_attributes); builder.addCapability(spv::Capability::PerViewAttributesNV); } return spv::BuiltIn::ViewportMaskPerViewNV; case glslang::EbvFragFullyCoveredNV: builder.addExtension(spv::E_SPV_EXT_fragment_fully_covered); builder.addCapability(spv::Capability::FragmentFullyCoveredEXT); return spv::BuiltIn::FullyCoveredEXT; case glslang::EbvFragmentSizeNV: builder.addExtension(spv::E_SPV_NV_shading_rate); builder.addCapability(spv::Capability::ShadingRateNV); return spv::BuiltIn::FragmentSizeNV; case glslang::EbvInvocationsPerPixelNV: builder.addExtension(spv::E_SPV_NV_shading_rate); builder.addCapability(spv::Capability::ShadingRateNV); return spv::BuiltIn::InvocationsPerPixelNV; // ray tracing case glslang::EbvLaunchId: return spv::BuiltIn::LaunchIdKHR; case glslang::EbvLaunchSize: return spv::BuiltIn::LaunchSizeKHR; case glslang::EbvWorldRayOrigin: return spv::BuiltIn::WorldRayOriginKHR; case glslang::EbvWorldRayDirection: return spv::BuiltIn::WorldRayDirectionKHR; case glslang::EbvObjectRayOrigin: return spv::BuiltIn::ObjectRayOriginKHR; case glslang::EbvObjectRayDirection: return spv::BuiltIn::ObjectRayDirectionKHR; case glslang::EbvRayTmin: return spv::BuiltIn::RayTminKHR; case glslang::EbvRayTmax: return spv::BuiltIn::RayTmaxKHR; case glslang::EbvCullMask: return spv::BuiltIn::CullMaskKHR; case glslang::EbvPositionFetch: return spv::BuiltIn::HitTriangleVertexPositionsKHR; case glslang::EbvInstanceCustomIndex: return spv::BuiltIn::InstanceCustomIndexKHR; case glslang::EbvHitKind: return spv::BuiltIn::HitKindKHR; case glslang::EbvObjectToWorld: case glslang::EbvObjectToWorld3x4: return spv::BuiltIn::ObjectToWorldKHR; case glslang::EbvWorldToObject: case glslang::EbvWorldToObject3x4: return spv::BuiltIn::WorldToObjectKHR; case glslang::EbvIncomingRayFlags: return spv::BuiltIn::IncomingRayFlagsKHR; case glslang::EbvGeometryIndex: return spv::BuiltIn::RayGeometryIndexKHR; case glslang::EbvCurrentRayTimeNV: builder.addExtension(spv::E_SPV_NV_ray_tracing_motion_blur); builder.addCapability(spv::Capability::RayTracingMotionBlurNV); return spv::BuiltIn::CurrentRayTimeNV; case glslang::EbvMicroTrianglePositionNV: builder.addCapability(spv::Capability::RayTracingDisplacementMicromapNV); builder.addExtension("SPV_NV_displacement_micromap"); return spv::BuiltIn::HitMicroTriangleVertexPositionsNV; case glslang::EbvMicroTriangleBaryNV: builder.addCapability(spv::Capability::RayTracingDisplacementMicromapNV); builder.addExtension("SPV_NV_displacement_micromap"); return spv::BuiltIn::HitMicroTriangleVertexBarycentricsNV; case glslang::EbvHitKindFrontFacingMicroTriangleNV: builder.addCapability(spv::Capability::RayTracingDisplacementMicromapNV); builder.addExtension("SPV_NV_displacement_micromap"); return spv::BuiltIn::HitKindFrontFacingMicroTriangleNV; case glslang::EbvHitKindBackFacingMicroTriangleNV: builder.addCapability(spv::Capability::RayTracingDisplacementMicromapNV); builder.addExtension("SPV_NV_displacement_micromap"); return spv::BuiltIn::HitKindBackFacingMicroTriangleNV; case glslang::EbvClusterIDNV: builder.addCapability(spv::Capability::RayTracingClusterAccelerationStructureNV); builder.addExtension("SPV_NV_cluster_acceleration_structure"); return spv::BuiltIn::ClusterIDNV; case glslang::EbvHitIsSphereNV: builder.addCapability(spv::Capability::RayTracingSpheresGeometryNV); builder.addExtension("SPV_NV_linear_swept_spheres"); return spv::BuiltIn::HitIsSphereNV; case glslang::EbvHitIsLSSNV: builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); builder.addExtension("SPV_NV_linear_swept_spheres"); return spv::BuiltIn::HitIsLSSNV; case glslang::EbvHitSpherePositionNV: builder.addCapability(spv::Capability::RayTracingSpheresGeometryNV); builder.addExtension("SPV_NV_linear_swept_spheres"); return spv::BuiltIn::HitSpherePositionNV; case glslang::EbvHitSphereRadiusNV: builder.addCapability(spv::Capability::RayTracingSpheresGeometryNV); builder.addExtension("SPV_NV_linear_swept_spheres"); return spv::BuiltIn::HitSphereRadiusNV; case glslang::EbvHitLSSPositionsNV: builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); builder.addExtension("SPV_NV_linear_swept_spheres"); return spv::BuiltIn::HitLSSPositionsNV; case glslang::EbvHitLSSRadiiNV: builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); builder.addExtension("SPV_NV_linear_swept_spheres"); return spv::BuiltIn::HitLSSRadiiNV; // barycentrics case glslang::EbvBaryCoordNV: builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric); builder.addCapability(spv::Capability::FragmentBarycentricNV); return spv::BuiltIn::BaryCoordNV; case glslang::EbvBaryCoordNoPerspNV: builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric); builder.addCapability(spv::Capability::FragmentBarycentricNV); return spv::BuiltIn::BaryCoordNoPerspNV; case glslang::EbvBaryCoordEXT: builder.addExtension(spv::E_SPV_KHR_fragment_shader_barycentric); builder.addCapability(spv::Capability::FragmentBarycentricKHR); return spv::BuiltIn::BaryCoordKHR; case glslang::EbvBaryCoordNoPerspEXT: builder.addExtension(spv::E_SPV_KHR_fragment_shader_barycentric); builder.addCapability(spv::Capability::FragmentBarycentricKHR); return spv::BuiltIn::BaryCoordNoPerspKHR; // mesh shaders case glslang::EbvTaskCountNV: return spv::BuiltIn::TaskCountNV; case glslang::EbvPrimitiveCountNV: return spv::BuiltIn::PrimitiveCountNV; case glslang::EbvPrimitiveIndicesNV: return spv::BuiltIn::PrimitiveIndicesNV; case glslang::EbvClipDistancePerViewNV: return spv::BuiltIn::ClipDistancePerViewNV; case glslang::EbvCullDistancePerViewNV: return spv::BuiltIn::CullDistancePerViewNV; case glslang::EbvLayerPerViewNV: return spv::BuiltIn::LayerPerViewNV; case glslang::EbvMeshViewCountNV: return spv::BuiltIn::MeshViewCountNV; case glslang::EbvMeshViewIndicesNV: return spv::BuiltIn::MeshViewIndicesNV; // SPV_EXT_mesh_shader case glslang::EbvPrimitivePointIndicesEXT: return spv::BuiltIn::PrimitivePointIndicesEXT; case glslang::EbvPrimitiveLineIndicesEXT: return spv::BuiltIn::PrimitiveLineIndicesEXT; case glslang::EbvPrimitiveTriangleIndicesEXT: return spv::BuiltIn::PrimitiveTriangleIndicesEXT; case glslang::EbvCullPrimitiveEXT: return spv::BuiltIn::CullPrimitiveEXT; // sm builtins case glslang::EbvWarpsPerSM: builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); builder.addCapability(spv::Capability::ShaderSMBuiltinsNV); return spv::BuiltIn::WarpsPerSMNV; case glslang::EbvSMCount: builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); builder.addCapability(spv::Capability::ShaderSMBuiltinsNV); return spv::BuiltIn::SMCountNV; case glslang::EbvWarpID: builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); builder.addCapability(spv::Capability::ShaderSMBuiltinsNV); return spv::BuiltIn::WarpIDNV; case glslang::EbvSMID: builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); builder.addCapability(spv::Capability::ShaderSMBuiltinsNV); return spv::BuiltIn::SMIDNV; // ARM builtins case glslang::EbvCoreCountARM: builder.addExtension(spv::E_SPV_ARM_core_builtins); builder.addCapability(spv::Capability::CoreBuiltinsARM); return spv::BuiltIn::CoreCountARM; case glslang::EbvCoreIDARM: builder.addExtension(spv::E_SPV_ARM_core_builtins); builder.addCapability(spv::Capability::CoreBuiltinsARM); return spv::BuiltIn::CoreIDARM; case glslang::EbvCoreMaxIDARM: builder.addExtension(spv::E_SPV_ARM_core_builtins); builder.addCapability(spv::Capability::CoreBuiltinsARM); return spv::BuiltIn::CoreMaxIDARM; case glslang::EbvWarpIDARM: builder.addExtension(spv::E_SPV_ARM_core_builtins); builder.addCapability(spv::Capability::CoreBuiltinsARM); return spv::BuiltIn::WarpIDARM; case glslang::EbvWarpMaxIDARM: builder.addExtension(spv::E_SPV_ARM_core_builtins); builder.addCapability(spv::Capability::CoreBuiltinsARM); return spv::BuiltIn::WarpMaxIDARM; // QCOM builtins case glslang::EbvTileOffsetQCOM: builder.addExtension(spv::E_SPV_QCOM_tile_shading); return spv::BuiltIn::TileOffsetQCOM; case glslang::EbvTileDimensionQCOM: builder.addExtension(spv::E_SPV_QCOM_tile_shading); return spv::BuiltIn::TileDimensionQCOM; case glslang::EbvTileApronSizeQCOM: builder.addExtension(spv::E_SPV_QCOM_tile_shading); return spv::BuiltIn::TileApronSizeQCOM; default: return spv::BuiltIn::Max; } } // Translate glslang image layout format to SPIR-V image format. spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TType& type) { assert(type.getBasicType() == glslang::EbtSampler); // Check for capabilities switch (type.getQualifier().getFormat()) { case glslang::ElfRg32f: case glslang::ElfRg16f: case glslang::ElfR11fG11fB10f: case glslang::ElfR16f: case glslang::ElfRgba16: case glslang::ElfRgb10A2: case glslang::ElfRg16: case glslang::ElfRg8: case glslang::ElfR16: case glslang::ElfR8: case glslang::ElfRgba16Snorm: case glslang::ElfRg16Snorm: case glslang::ElfRg8Snorm: case glslang::ElfR16Snorm: case glslang::ElfR8Snorm: case glslang::ElfRg32i: case glslang::ElfRg16i: case glslang::ElfRg8i: case glslang::ElfR16i: case glslang::ElfR8i: case glslang::ElfRgb10a2ui: case glslang::ElfRg32ui: case glslang::ElfRg16ui: case glslang::ElfRg8ui: case glslang::ElfR16ui: case glslang::ElfR8ui: builder.addCapability(spv::Capability::StorageImageExtendedFormats); break; case glslang::ElfR64ui: case glslang::ElfR64i: builder.addExtension(spv::E_SPV_EXT_shader_image_int64); builder.addCapability(spv::Capability::Int64ImageEXT); break; default: break; } // do the translation switch (type.getQualifier().getFormat()) { case glslang::ElfNone: return spv::ImageFormat::Unknown; case glslang::ElfRgba32f: return spv::ImageFormat::Rgba32f; case glslang::ElfRgba16f: return spv::ImageFormat::Rgba16f; case glslang::ElfR32f: return spv::ImageFormat::R32f; case glslang::ElfRgba8: return spv::ImageFormat::Rgba8; case glslang::ElfRgba8Snorm: return spv::ImageFormat::Rgba8Snorm; case glslang::ElfRg32f: return spv::ImageFormat::Rg32f; case glslang::ElfRg16f: return spv::ImageFormat::Rg16f; case glslang::ElfR11fG11fB10f: return spv::ImageFormat::R11fG11fB10f; case glslang::ElfR16f: return spv::ImageFormat::R16f; case glslang::ElfRgba16: return spv::ImageFormat::Rgba16; case glslang::ElfRgb10A2: return spv::ImageFormat::Rgb10A2; case glslang::ElfRg16: return spv::ImageFormat::Rg16; case glslang::ElfRg8: return spv::ImageFormat::Rg8; case glslang::ElfR16: return spv::ImageFormat::R16; case glslang::ElfR8: return spv::ImageFormat::R8; case glslang::ElfRgba16Snorm: return spv::ImageFormat::Rgba16Snorm; case glslang::ElfRg16Snorm: return spv::ImageFormat::Rg16Snorm; case glslang::ElfRg8Snorm: return spv::ImageFormat::Rg8Snorm; case glslang::ElfR16Snorm: return spv::ImageFormat::R16Snorm; case glslang::ElfR8Snorm: return spv::ImageFormat::R8Snorm; case glslang::ElfRgba32i: return spv::ImageFormat::Rgba32i; case glslang::ElfRgba16i: return spv::ImageFormat::Rgba16i; case glslang::ElfRgba8i: return spv::ImageFormat::Rgba8i; case glslang::ElfR32i: return spv::ImageFormat::R32i; case glslang::ElfRg32i: return spv::ImageFormat::Rg32i; case glslang::ElfRg16i: return spv::ImageFormat::Rg16i; case glslang::ElfRg8i: return spv::ImageFormat::Rg8i; case glslang::ElfR16i: return spv::ImageFormat::R16i; case glslang::ElfR8i: return spv::ImageFormat::R8i; case glslang::ElfRgba32ui: return spv::ImageFormat::Rgba32ui; case glslang::ElfRgba16ui: return spv::ImageFormat::Rgba16ui; case glslang::ElfRgba8ui: return spv::ImageFormat::Rgba8ui; case glslang::ElfR32ui: return spv::ImageFormat::R32ui; case glslang::ElfRg32ui: return spv::ImageFormat::Rg32ui; case glslang::ElfRg16ui: return spv::ImageFormat::Rg16ui; case glslang::ElfRgb10a2ui: return spv::ImageFormat::Rgb10a2ui; case glslang::ElfRg8ui: return spv::ImageFormat::Rg8ui; case glslang::ElfR16ui: return spv::ImageFormat::R16ui; case glslang::ElfR8ui: return spv::ImageFormat::R8ui; case glslang::ElfR64ui: return spv::ImageFormat::R64ui; case glslang::ElfR64i: return spv::ImageFormat::R64i; default: return spv::ImageFormat::Max; } } spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSelectionControl( const glslang::TIntermSelection& selectionNode) const { if (selectionNode.getFlatten()) return spv::SelectionControlMask::Flatten; if (selectionNode.getDontFlatten()) return spv::SelectionControlMask::DontFlatten; return spv::SelectionControlMask::MaskNone; } spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSwitchControl(const glslang::TIntermSwitch& switchNode) const { if (switchNode.getFlatten()) return spv::SelectionControlMask::Flatten; if (switchNode.getDontFlatten()) return spv::SelectionControlMask::DontFlatten; return spv::SelectionControlMask::MaskNone; } // return a non-0 dependency if the dependency argument must be set spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(const glslang::TIntermLoop& loopNode, std::vector& operands) const { spv::LoopControlMask control = spv::LoopControlMask::MaskNone; if (loopNode.getDontUnroll()) control = control | spv::LoopControlMask::DontUnroll; if (loopNode.getUnroll()) control = control | spv::LoopControlMask::Unroll; if (unsigned(loopNode.getLoopDependency()) == glslang::TIntermLoop::dependencyInfinite) control = control | spv::LoopControlMask::DependencyInfinite; else if (loopNode.getLoopDependency() > 0) { control = control | spv::LoopControlMask::DependencyLength; operands.push_back((unsigned int)loopNode.getLoopDependency()); } if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) { if (loopNode.getMinIterations() > 0) { control = control | spv::LoopControlMask::MinIterations; operands.push_back(loopNode.getMinIterations()); } if (loopNode.getMaxIterations() < glslang::TIntermLoop::iterationsInfinite) { control = control | spv::LoopControlMask::MaxIterations; operands.push_back(loopNode.getMaxIterations()); } if (loopNode.getIterationMultiple() > 1) { control = control | spv::LoopControlMask::IterationMultiple; operands.push_back(loopNode.getIterationMultiple()); } if (loopNode.getPeelCount() > 0) { control = control | spv::LoopControlMask::PeelCount; operands.push_back(loopNode.getPeelCount()); } if (loopNode.getPartialCount() > 0) { control = control | spv::LoopControlMask::PartialCount; operands.push_back(loopNode.getPartialCount()); } } return control; } // Translate glslang type to SPIR-V storage class. spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type) { if (type.getBasicType() == glslang::EbtRayQuery || type.getBasicType() == glslang::EbtHitObjectNV) return spv::StorageClass::Private; if (type.getQualifier().isSpirvByReference()) { if (type.getQualifier().isParamInput() || type.getQualifier().isParamOutput()) return spv::StorageClass::Function; } if (type.getQualifier().isPipeInput()) return spv::StorageClass::Input; if (type.getQualifier().isPipeOutput()) return spv::StorageClass::Output; if (type.getQualifier().storage == glslang::EvqTileImageEXT || type.isAttachmentEXT()) { builder.addExtension(spv::E_SPV_EXT_shader_tile_image); builder.addCapability(spv::Capability::TileImageColorReadAccessEXT); return spv::StorageClass::TileImageEXT; } if (type.getQualifier().isTileAttachmentQCOM()) { builder.addExtension(spv::E_SPV_QCOM_tile_shading); builder.addCapability(spv::Capability::TileShadingQCOM); return spv::StorageClass::TileAttachmentQCOM; } if (glslangIntermediate->getSource() != glslang::EShSourceHlsl || type.getQualifier().storage == glslang::EvqUniform) { if (type.isAtomic()) return spv::StorageClass::AtomicCounter; if (type.containsOpaque() && !glslangIntermediate->getBindlessMode()) return spv::StorageClass::UniformConstant; } if (type.getQualifier().isUniformOrBuffer() && type.getQualifier().isShaderRecord()) { return spv::StorageClass::ShaderRecordBufferKHR; } if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) { builder.addIncorporatedExtension(spv::E_SPV_KHR_storage_buffer_storage_class, spv::Spv_1_3); return spv::StorageClass::StorageBuffer; } if (type.getQualifier().isUniformOrBuffer()) { if (type.getQualifier().isPushConstant()) return spv::StorageClass::PushConstant; if (type.getBasicType() == glslang::EbtBlock) return spv::StorageClass::Uniform; return spv::StorageClass::UniformConstant; } if (type.getQualifier().storage == glslang::EvqShared && type.getBasicType() == glslang::EbtBlock) { builder.addExtension(spv::E_SPV_KHR_workgroup_memory_explicit_layout); builder.addCapability(spv::Capability::WorkgroupMemoryExplicitLayoutKHR); return spv::StorageClass::Workgroup; } switch (type.getQualifier().storage) { case glslang::EvqGlobal: return spv::StorageClass::Private; case glslang::EvqConstReadOnly: return spv::StorageClass::Function; case glslang::EvqTemporary: return spv::StorageClass::Function; case glslang::EvqShared: return spv::StorageClass::Workgroup; case glslang::EvqPayload: return spv::StorageClass::RayPayloadKHR; case glslang::EvqPayloadIn: return spv::StorageClass::IncomingRayPayloadKHR; case glslang::EvqHitAttr: return spv::StorageClass::HitAttributeKHR; case glslang::EvqCallableData: return spv::StorageClass::CallableDataKHR; case glslang::EvqCallableDataIn: return spv::StorageClass::IncomingCallableDataKHR; case glslang::EvqtaskPayloadSharedEXT : return spv::StorageClass::TaskPayloadWorkgroupEXT; case glslang::EvqHitObjectAttrNV: return spv::StorageClass::HitObjectAttributeNV; case glslang::EvqSpirvStorageClass: return static_cast(type.getQualifier().spirvStorageClass); default: assert(0); break; } return spv::StorageClass::Function; } // Translate glslang constants to SPIR-V literals void TGlslangToSpvTraverser::TranslateLiterals(const glslang::TVector& constants, std::vector& literals) const { for (auto constant : constants) { if (constant->getBasicType() == glslang::EbtFloat) { float floatValue = static_cast(constant->getConstArray()[0].getDConst()); 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(); literals.push_back(literal); } else if (constant->getBasicType() == glslang::EbtUint) { unsigned literal = constant->getConstArray()[0].getUConst(); literals.push_back(literal); } else if (constant->getBasicType() == glslang::EbtBool) { unsigned literal = constant->getConstArray()[0].getBConst(); literals.push_back(literal); } else if (constant->getBasicType() == glslang::EbtString) { auto str = constant->getConstArray()[0].getSConst()->c_str(); unsigned literal = 0; char* literalPtr = reinterpret_cast(&literal); unsigned charCount = 0; char ch = 0; do { ch = *(str++); *(literalPtr++) = ch; ++charCount; if (charCount == 4) { literals.push_back(literal); literalPtr = reinterpret_cast(&literal); charCount = 0; } } while (ch != 0); // Partial literal is padded with 0 if (charCount > 0) { for (; charCount < 4; ++charCount) *(literalPtr++) = 0; literals.push_back(literal); } } else assert(0); // Unexpected type } } // Add capabilities pertaining to how an array is indexed. void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType) { if (indexType.getQualifier().isNonUniform()) { // deal with an asserted non-uniform index // SPV_EXT_descriptor_indexing already added in TranslateNonUniformDecoration if (baseType.getBasicType() == glslang::EbtSampler) { if (baseType.getQualifier().hasAttachment()) builder.addCapability(spv::Capability::InputAttachmentArrayNonUniformIndexingEXT); else if (baseType.isImage() && baseType.getSampler().isBuffer()) builder.addCapability(spv::Capability::StorageTexelBufferArrayNonUniformIndexingEXT); else if (baseType.isTexture() && baseType.getSampler().isBuffer()) builder.addCapability(spv::Capability::UniformTexelBufferArrayNonUniformIndexingEXT); else if (baseType.isImage()) builder.addCapability(spv::Capability::StorageImageArrayNonUniformIndexingEXT); else if (baseType.isTexture()) builder.addCapability(spv::Capability::SampledImageArrayNonUniformIndexingEXT); } else if (baseType.getBasicType() == glslang::EbtBlock) { if (baseType.getQualifier().storage == glslang::EvqBuffer) builder.addCapability(spv::Capability::StorageBufferArrayNonUniformIndexingEXT); else if (baseType.getQualifier().storage == glslang::EvqUniform) builder.addCapability(spv::Capability::UniformBufferArrayNonUniformIndexingEXT); } } else { // assume a dynamically uniform index if (baseType.getBasicType() == glslang::EbtSampler) { if (baseType.getQualifier().hasAttachment()) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::Capability::InputAttachmentArrayDynamicIndexingEXT); } else if (baseType.isImage() && baseType.getSampler().isBuffer()) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::Capability::StorageTexelBufferArrayDynamicIndexingEXT); } else if (baseType.isTexture() && baseType.getSampler().isBuffer()) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::Capability::UniformTexelBufferArrayDynamicIndexingEXT); } } } } // Return whether or not the given type is something that should be tied to a // descriptor set. bool IsDescriptorResource(const glslang::TType& type) { // uniform and buffer blocks are included, unless it is a push_constant if (type.getBasicType() == glslang::EbtBlock) return type.getQualifier().isUniformOrBuffer() && ! type.getQualifier().isShaderRecord() && ! type.getQualifier().isPushConstant(); // non block... // basically samplerXXX/subpass/sampler/texture are all included // if they are the global-scope-class, not the function parameter // (or local, if they ever exist) class. if (type.getBasicType() == glslang::EbtSampler || type.getBasicType() == glslang::EbtAccStruct) return type.getQualifier().isUniformOrBuffer(); // Tensors are tied to a descriptor. if (type.isTensorARM()) return true; // None of the above. return false; } void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& parent) { if (child.layoutMatrix == glslang::ElmNone) child.layoutMatrix = parent.layoutMatrix; if (parent.invariant) child.invariant = true; if (parent.flat) child.flat = true; if (parent.centroid) child.centroid = true; if (parent.nopersp) child.nopersp = true; if (parent.explicitInterp) child.explicitInterp = true; if (parent.perPrimitiveNV) child.perPrimitiveNV = true; if (parent.perViewNV) child.perViewNV = true; if (parent.perTaskNV) child.perTaskNV = true; if (parent.storage == glslang::EvqtaskPayloadSharedEXT) child.storage = glslang::EvqtaskPayloadSharedEXT; if (parent.patch) child.patch = true; if (parent.sample) child.sample = true; if (parent.coherent) child.coherent = true; if (parent.devicecoherent) child.devicecoherent = true; if (parent.queuefamilycoherent) child.queuefamilycoherent = true; if (parent.workgroupcoherent) child.workgroupcoherent = true; if (parent.subgroupcoherent) child.subgroupcoherent = true; if (parent.shadercallcoherent) child.shadercallcoherent = true; if (parent.nonprivate) child.nonprivate = true; if (parent.volatil) child.volatil = true; if (parent.nontemporal) child.nontemporal = true; if (parent.restrict) child.restrict = true; if (parent.readonly) child.readonly = true; if (parent.writeonly) child.writeonly = true; if (parent.nonUniform) child.nonUniform = true; } bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifier& qualifier) { // This should list qualifiers that simultaneous satisfy: // - struct members might inherit from a struct declaration // (note that non-block structs don't explicitly inherit, // only implicitly, meaning no decoration involved) // - affect decorations on the struct members // (note smooth does not, and expecting something like volatile // to effect the whole object) // - are not part of the offset/st430/etc or row/column-major layout return qualifier.invariant || (qualifier.hasLocation() && type.getBasicType() == glslang::EbtBlock); } // // Implement the TGlslangToSpvTraverser class. // TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const glslang::TIntermediate* glslangIntermediate, spv::SpvBuildLogger* buildLogger, glslang::SpvOptions& options) : TIntermTraverser(true, false, true), options(options), shaderEntry(nullptr), currentFunction(nullptr), sequenceDepth(0), logger(buildLogger), builder(spvVersion, (glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger), inEntryPoint(false), entryPointTerminated(false), linkageOnly(false), glslangIntermediate(glslangIntermediate), nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp()), nonSemanticDebugPrintf(0), taskPayloadID(0) { 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()), glslangIntermediate->getVersion()); if (options.emitNonSemanticShaderDebugSource) this->options.emitNonSemanticShaderDebugInfo = true; if (options.emitNonSemanticShaderDebugInfo) this->options.generateDebugInfo = true; if (this->options.generateDebugInfo) { if (this->options.emitNonSemanticShaderDebugInfo) { builder.setEmitNonSemanticShaderDebugInfo(this->options.emitNonSemanticShaderDebugSource); } else { builder.setEmitSpirvDebugInfo(); } builder.setDebugMainSourceFile(glslangIntermediate->getSourceFile()); // Set the source shader's text. If for SPV version 1.0, include // a preamble in comments stating the OpModuleProcessed instructions. // Otherwise, emit those as actual instructions. std::string text; const std::vector& processes = glslangIntermediate->getProcesses(); for (int p = 0; p < (int)processes.size(); ++p) { if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_1) { text.append("// OpModuleProcessed "); text.append(processes[p]); text.append("\n"); } else builder.addModuleProcessed(processes[p]); } if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_1 && (int)processes.size() > 0) text.append("#line 1\n"); text.append(glslangIntermediate->getSourceText()); builder.setSourceText(text); // Pass name and text for all included files const std::map& include_txt = glslangIntermediate->getIncludeText(); for (auto iItr = include_txt.begin(); iItr != include_txt.end(); ++iItr) builder.addInclude(iItr->first, iItr->second); } builder.setUseReplicatedComposites(glslangIntermediate->usingReplicatedComposites()); stdBuiltins = builder.import("GLSL.std.450"); spv::AddressingModel addressingModel = spv::AddressingModel::Logical; spv::MemoryModel memoryModel = spv::MemoryModel::GLSL450; if (glslangIntermediate->usingPhysicalStorageBuffer()) { addressingModel = spv::AddressingModel::PhysicalStorageBuffer64EXT; builder.addIncorporatedExtension(spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5); builder.addCapability(spv::Capability::PhysicalStorageBufferAddressesEXT); } if (glslangIntermediate->usingVulkanMemoryModel()) { memoryModel = spv::MemoryModel::VulkanKHR; builder.addCapability(spv::Capability::VulkanMemoryModelKHR); builder.addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5); } builder.setMemoryModel(addressingModel, memoryModel); if (glslangIntermediate->usingVariablePointers()) { builder.addCapability(spv::Capability::VariablePointers); } // If not linking, there is no entry point if (!options.compileOnly) { shaderEntry = builder.makeEntryPoint(glslangIntermediate->getEntryPointName().c_str()); entryPoint = builder.addEntryPoint(executionModel, shaderEntry, glslangIntermediate->getEntryPointName().c_str()); } // Add the source extensions const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); for (auto it = sourceExtensions.begin(); it != sourceExtensions.end(); ++it) builder.addSourceExtension(it->c_str()); // Add the top-level modes for this shader. if (glslangIntermediate->getXfbMode()) { builder.addCapability(spv::Capability::TransformFeedback); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::Xfb); } if (glslangIntermediate->getLayoutPrimitiveCulling()) { builder.addCapability(spv::Capability::RayTraversalPrimitiveCullingKHR); } if (glslangIntermediate->getSubgroupUniformControlFlow()) { builder.addExtension(spv::E_SPV_KHR_subgroup_uniform_control_flow); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::SubgroupUniformControlFlowKHR); } if (glslangIntermediate->getMaximallyReconverges()) { builder.addExtension(spv::E_SPV_KHR_maximal_reconvergence); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::MaximallyReconvergesKHR); } if (glslangIntermediate->getQuadDerivMode()) { builder.addCapability(spv::Capability::QuadControlKHR); builder.addExtension(spv::E_SPV_KHR_quad_control); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::QuadDerivativesKHR); } if (glslangIntermediate->getReqFullQuadsMode()) { builder.addCapability(spv::Capability::QuadControlKHR); builder.addExtension(spv::E_SPV_KHR_quad_control); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::RequireFullQuadsKHR); } spv::ExecutionMode mode; switch (glslangIntermediate->getStage()) { case EShLangVertex: builder.addCapability(spv::Capability::Shader); break; case EShLangFragment: builder.addCapability(spv::Capability::Shader); if (glslangIntermediate->getPixelCenterInteger()) builder.addExecutionMode(shaderEntry, spv::ExecutionMode::PixelCenterInteger); if (glslangIntermediate->getOriginUpperLeft()) builder.addExecutionMode(shaderEntry, spv::ExecutionMode::OriginUpperLeft); else builder.addExecutionMode(shaderEntry, spv::ExecutionMode::OriginLowerLeft); if (glslangIntermediate->getEarlyFragmentTests()) builder.addExecutionMode(shaderEntry, spv::ExecutionMode::EarlyFragmentTests); if (glslangIntermediate->getEarlyAndLateFragmentTestsAMD()) { builder.addExecutionMode(shaderEntry, spv::ExecutionMode::EarlyAndLateFragmentTestsAMD); builder.addExtension(spv::E_SPV_AMD_shader_early_and_late_fragment_tests); } if (glslangIntermediate->getPostDepthCoverage()) { builder.addCapability(spv::Capability::SampleMaskPostDepthCoverage); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::PostDepthCoverage); builder.addExtension(spv::E_SPV_KHR_post_depth_coverage); } if (glslangIntermediate->getNonCoherentColorAttachmentReadEXT()) { builder.addCapability(spv::Capability::TileImageColorReadAccessEXT); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::NonCoherentColorAttachmentReadEXT); builder.addExtension(spv::E_SPV_EXT_shader_tile_image); } if (glslangIntermediate->getNonCoherentDepthAttachmentReadEXT()) { builder.addCapability(spv::Capability::TileImageDepthReadAccessEXT); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::NonCoherentDepthAttachmentReadEXT); builder.addExtension(spv::E_SPV_EXT_shader_tile_image); } if (glslangIntermediate->getNonCoherentStencilAttachmentReadEXT()) { builder.addCapability(spv::Capability::TileImageStencilReadAccessEXT); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::NonCoherentStencilAttachmentReadEXT); builder.addExtension(spv::E_SPV_EXT_shader_tile_image); } if (glslangIntermediate->getNonCoherentTileAttachmentReadQCOM()) { builder.addCapability(spv::Capability::TileShadingQCOM); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::NonCoherentTileAttachmentReadQCOM); builder.addExtension(spv::E_SPV_QCOM_tile_shading); } if (glslangIntermediate->isDepthReplacing()) builder.addExecutionMode(shaderEntry, spv::ExecutionMode::DepthReplacing); if (glslangIntermediate->isStencilReplacing()) builder.addExecutionMode(shaderEntry, spv::ExecutionMode::StencilRefReplacingEXT); switch(glslangIntermediate->getDepth()) { case glslang::EldGreater: mode = spv::ExecutionMode::DepthGreater; break; case glslang::EldLess: mode = spv::ExecutionMode::DepthLess; break; case glslang::EldUnchanged: mode = spv::ExecutionMode::DepthUnchanged; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) builder.addExecutionMode(shaderEntry, mode); switch (glslangIntermediate->getStencil()) { case glslang::ElsRefUnchangedFrontAMD: mode = spv::ExecutionMode::StencilRefUnchangedFrontAMD; break; case glslang::ElsRefGreaterFrontAMD: mode = spv::ExecutionMode::StencilRefGreaterFrontAMD; break; case glslang::ElsRefLessFrontAMD: mode = spv::ExecutionMode::StencilRefLessFrontAMD; break; case glslang::ElsRefUnchangedBackAMD: mode = spv::ExecutionMode::StencilRefUnchangedBackAMD; break; case glslang::ElsRefGreaterBackAMD: mode = spv::ExecutionMode::StencilRefGreaterBackAMD; break; case glslang::ElsRefLessBackAMD: mode = spv::ExecutionMode::StencilRefLessBackAMD; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); switch (glslangIntermediate->getInterlockOrdering()) { case glslang::EioPixelInterlockOrdered: mode = spv::ExecutionMode::PixelInterlockOrderedEXT; break; case glslang::EioPixelInterlockUnordered: mode = spv::ExecutionMode::PixelInterlockUnorderedEXT; break; case glslang::EioSampleInterlockOrdered: mode = spv::ExecutionMode::SampleInterlockOrderedEXT; break; case glslang::EioSampleInterlockUnordered: mode = spv::ExecutionMode::SampleInterlockUnorderedEXT; break; case glslang::EioShadingRateInterlockOrdered: mode = spv::ExecutionMode::ShadingRateInterlockOrderedEXT; break; case glslang::EioShadingRateInterlockUnordered: mode = spv::ExecutionMode::ShadingRateInterlockUnorderedEXT; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) { builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); if (mode == spv::ExecutionMode::ShadingRateInterlockOrderedEXT || mode == spv::ExecutionMode::ShadingRateInterlockUnorderedEXT) { builder.addCapability(spv::Capability::FragmentShaderShadingRateInterlockEXT); } else if (mode == spv::ExecutionMode::PixelInterlockOrderedEXT || mode == spv::ExecutionMode::PixelInterlockUnorderedEXT) { builder.addCapability(spv::Capability::FragmentShaderPixelInterlockEXT); } else { builder.addCapability(spv::Capability::FragmentShaderSampleInterlockEXT); } builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock); } break; case EShLangCompute: { builder.addCapability(spv::Capability::Shader); bool needSizeId = false; for (int dim = 0; dim < 3; ++dim) { if ((glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet)) { needSizeId = true; break; } } if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6 && needSizeId) { std::vector 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::Decoration::SpecId, glslangIntermediate->getLocalSizeSpecId(dim)); needSizeId = true; } } builder.addExecutionModeId(shaderEntry, spv::ExecutionMode::LocalSizeId, dimConstId); } else { if (glslangIntermediate->getTileShadingRateQCOM(0) >= 1 || glslangIntermediate->getTileShadingRateQCOM(1) >= 1 || glslangIntermediate->getTileShadingRateQCOM(2) >= 1) { auto rate_x = glslangIntermediate->getTileShadingRateQCOM(0); auto rate_y = glslangIntermediate->getTileShadingRateQCOM(1); auto rate_z = glslangIntermediate->getTileShadingRateQCOM(2); rate_x = ( rate_x == 0 ? 1 : rate_x ); rate_y = ( rate_y == 0 ? 1 : rate_y ); rate_z = ( rate_z == 0 ? 1 : rate_z ); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::TileShadingRateQCOM, rate_x, rate_y, rate_z); } else { builder.addExecutionMode(shaderEntry, spv::ExecutionMode::LocalSize, glslangIntermediate->getLocalSize(0), glslangIntermediate->getLocalSize(1), glslangIntermediate->getLocalSize(2)); } } if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { builder.addCapability(spv::Capability::ComputeDerivativeGroupQuadsNV); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::DerivativeGroupQuadsNV); builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); } else if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupLinear) { builder.addCapability(spv::Capability::ComputeDerivativeGroupLinearNV); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::DerivativeGroupLinearNV); builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); } if (glslangIntermediate->getNonCoherentTileAttachmentReadQCOM()) { builder.addCapability(spv::Capability::TileShadingQCOM); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::NonCoherentTileAttachmentReadQCOM); builder.addExtension(spv::E_SPV_QCOM_tile_shading); } break; } case EShLangTessEvaluation: case EShLangTessControl: builder.addCapability(spv::Capability::Tessellation); glslang::TLayoutGeometry primitive; if (glslangIntermediate->getStage() == EShLangTessControl) { builder.addExecutionMode(shaderEntry, spv::ExecutionMode::OutputVertices, glslangIntermediate->getVertices()); primitive = glslangIntermediate->getOutputPrimitive(); } else { primitive = glslangIntermediate->getInputPrimitive(); } switch (primitive) { case glslang::ElgTriangles: mode = spv::ExecutionMode::Triangles; break; case glslang::ElgQuads: mode = spv::ExecutionMode::Quads; break; case glslang::ElgIsolines: mode = spv::ExecutionMode::Isolines; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) builder.addExecutionMode(shaderEntry, mode); switch (glslangIntermediate->getVertexSpacing()) { case glslang::EvsEqual: mode = spv::ExecutionMode::SpacingEqual; break; case glslang::EvsFractionalEven: mode = spv::ExecutionMode::SpacingFractionalEven; break; case glslang::EvsFractionalOdd: mode = spv::ExecutionMode::SpacingFractionalOdd; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) builder.addExecutionMode(shaderEntry, mode); switch (glslangIntermediate->getVertexOrder()) { case glslang::EvoCw: mode = spv::ExecutionMode::VertexOrderCw; break; case glslang::EvoCcw: mode = spv::ExecutionMode::VertexOrderCcw; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) builder.addExecutionMode(shaderEntry, mode); if (glslangIntermediate->getPointMode()) builder.addExecutionMode(shaderEntry, spv::ExecutionMode::PointMode); break; case EShLangGeometry: builder.addCapability(spv::Capability::Geometry); switch (glslangIntermediate->getInputPrimitive()) { case glslang::ElgPoints: mode = spv::ExecutionMode::InputPoints; break; case glslang::ElgLines: mode = spv::ExecutionMode::InputLines; break; case glslang::ElgLinesAdjacency: mode = spv::ExecutionMode::InputLinesAdjacency; break; case glslang::ElgTriangles: mode = spv::ExecutionMode::Triangles; break; case glslang::ElgTrianglesAdjacency: mode = spv::ExecutionMode::InputTrianglesAdjacency; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) builder.addExecutionMode(shaderEntry, mode); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::Invocations, glslangIntermediate->getInvocations()); switch (glslangIntermediate->getOutputPrimitive()) { case glslang::ElgPoints: mode = spv::ExecutionMode::OutputPoints; break; case glslang::ElgLineStrip: mode = spv::ExecutionMode::OutputLineStrip; break; case glslang::ElgTriangleStrip: mode = spv::ExecutionMode::OutputTriangleStrip; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) builder.addExecutionMode(shaderEntry, mode); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::OutputVertices, glslangIntermediate->getVertices()); break; case EShLangRayGen: case EShLangIntersect: case EShLangAnyHit: case EShLangClosestHit: case EShLangMiss: case EShLangCallable: { auto& extensions = glslangIntermediate->getRequestedExtensions(); if (extensions.find("GL_EXT_opacity_micromap") != extensions.end()) { builder.addCapability(spv::Capability::RayTracingOpacityMicromapEXT); builder.addExtension("SPV_EXT_opacity_micromap"); } if (extensions.find("GL_NV_ray_tracing") == extensions.end()) { builder.addCapability(spv::Capability::RayTracingKHR); builder.addExtension("SPV_KHR_ray_tracing"); } else { builder.addCapability(spv::Capability::RayTracingNV); 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::Capability::RayCullMaskKHR); builder.addExtension("SPV_KHR_ray_cull_mask"); } if (extensions.find("GL_EXT_ray_tracing_position_fetch") != extensions.end()) { builder.addCapability(spv::Capability::RayTracingPositionFetchKHR); builder.addExtension("SPV_KHR_ray_tracing_position_fetch"); } } break; } case EShLangTask: case EShLangMesh: if(isMeshShaderExt) { builder.addCapability(spv::Capability::MeshShadingEXT); builder.addExtension(spv::E_SPV_EXT_mesh_shader); } else { builder.addCapability(spv::Capability::MeshShadingNV); builder.addExtension(spv::E_SPV_NV_mesh_shader); } if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { std::vector 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::Decoration::SpecId, glslangIntermediate->getLocalSizeSpecId(dim)); } } builder.addExecutionModeId(shaderEntry, spv::ExecutionMode::LocalSizeId, dimConstId); } else { builder.addExecutionMode(shaderEntry, spv::ExecutionMode::LocalSize, glslangIntermediate->getLocalSize(0), glslangIntermediate->getLocalSize(1), glslangIntermediate->getLocalSize(2)); } if (glslangIntermediate->getStage() == EShLangMesh) { builder.addExecutionMode(shaderEntry, spv::ExecutionMode::OutputVertices, glslangIntermediate->getVertices()); builder.addExecutionMode(shaderEntry, spv::ExecutionMode::OutputPrimitivesNV, glslangIntermediate->getPrimitives()); switch (glslangIntermediate->getOutputPrimitive()) { case glslang::ElgPoints: mode = spv::ExecutionMode::OutputPoints; break; case glslang::ElgLines: mode = spv::ExecutionMode::OutputLinesNV; break; case glslang::ElgTriangles: mode = spv::ExecutionMode::OutputTrianglesNV; break; default: mode = spv::ExecutionMode::Max; break; } if (mode != spv::ExecutionMode::Max) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); } break; default: break; } // // Add SPIR-V requirements (GL_EXT_spirv_intrinsics) // if (glslangIntermediate->hasSpirvRequirement()) { const glslang::TSpirvRequirement& spirvRequirement = glslangIntermediate->getSpirvRequirement(); // Add SPIR-V extension requirement for (auto& extension : spirvRequirement.extensions) builder.addExtension(extension.c_str()); // Add SPIR-V capability requirement for (auto capability : spirvRequirement.capabilities) builder.addCapability(static_cast(capability)); } // // Add SPIR-V execution mode qualifiers (GL_EXT_spirv_intrinsics) // if (glslangIntermediate->hasSpirvExecutionMode()) { const glslang::TSpirvExecutionMode spirvExecutionMode = glslangIntermediate->getSpirvExecutionMode(); // Add spirv_execution_mode for (auto& mode : spirvExecutionMode.modes) { if (!mode.second.empty()) { std::vector literals; TranslateLiterals(mode.second, literals); builder.addExecutionMode(shaderEntry, static_cast(mode.first), literals); } else builder.addExecutionMode(shaderEntry, static_cast(mode.first)); } // Add spirv_execution_mode_id for (auto& modeId : spirvExecutionMode.modeIds) { std::vector operandIds; assert(!modeId.second.empty()); for (auto extraOperand : modeId.second) { if (extraOperand->getType().getQualifier().isSpecConstant()) operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); else operandIds.push_back(createSpvConstant(*extraOperand)); } builder.addExecutionModeId(shaderEntry, static_cast(modeId.first), operandIds); } } } // Finish creating SPV, after the traversal is complete. void TGlslangToSpvTraverser::finishSpv(bool compileOnly) { // If not linking, an entry point is not expected if (!compileOnly) { // Finish the entry point function if (!entryPointTerminated) { builder.setBuildPoint(shaderEntry->getLastBlock()); builder.leaveFunction(); } // finish off the entry-point SPV instruction by adding the Input/Output entryPoint->reserveOperands(iOSet.size()); for (auto id : iOSet) entryPoint->addIdOperand(id); } // Add capabilities, extensions, remove unneeded decorations, etc., // based on the resulting SPIR-V. // Note: WebGPU code generation must have the opportunity to aggressively // prune unreachable merge blocks and continue targets. builder.postProcess(compileOnly); } // Write the SPV into 'out'. void TGlslangToSpvTraverser::dumpSpv(std::vector& out) { builder.dump(out); } // // Implement the traversal functions. // // Return true from interior nodes to have the external traversal // continue on to children. Return false if children were // already processed. // // // Symbols can turn into // - uniform/input reads // - output writes // - complex lvalue base setups: foo.bar[3].... , where we see foo and start up an access chain // - something simple that degenerates into the last bullet // void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) { // We update the line information even though no code might be generated here // This is helpful to yield correct lines for control flow instructions if (!linkageOnly) { builder.setDebugSourceLocation(symbol->getLoc().line, symbol->getLoc().getFilename()); } if (symbol->getBasicType() == glslang::EbtFunction) { return; } SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); if (symbol->getType().isStruct()) glslangTypeToIdMap[symbol->getType().getStruct()] = symbol->getId(); if (symbol->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); #ifdef ENABLE_HLSL // Skip symbol handling if it is string-typed if (symbol->getBasicType() == glslang::EbtString) return; #endif // getSymbolId() will set up all the IO decorations on the first call. // 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()) { // Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction // Consider adding to the OpEntryPoint interface list. // Only looking at structures if they have at least one member. if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0) { spv::StorageClass sc = builder.getStorageClass(id); // Before SPIR-V 1.4, we only want to include Input and Output. // Starting with SPIR-V 1.4, we want all globals. if ((glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4 && builder.isGlobalVariable(id)) || (sc == spv::StorageClass::Input || sc == spv::StorageClass::Output)) { iOSet.insert(id); } } } // If the SPIR-V type is required to be different than the AST type // (for ex SubgroupMasks or 3x4 ObjectToWorld/WorldToObject matrices), // translate now from the SPIR-V type to the AST type, for the consuming // operation. // Note this turns it from an l-value to an r-value. // Currently, all symbols needing this are inputs; avoid the map lookup when non-input. if (symbol->getType().getQualifier().storage == glslang::EvqVaryingIn) id = translateForcedType(id); } // Only process non-linkage-only nodes for generating actual static uses if (! linkageOnly || symbol->getQualifier().isSpecConstant()) { // Prepare to generate code for the access // L-value chains will be computed left to right. We're on the symbol now, // which is the left-most part of the access chain, so now is "clear" time, // followed by setting the base. builder.clearAccessChain(); // For now, we consider all user variables as being in memory, so they are pointers, // except for // A) R-Value arguments to a function, which are an intermediate object. // See comments in handleUserFunctionCall(). // B) Specialization constants (normal constants don't even come in as a variable), // These are also pure R-values. // C) R-Values from type translation, see above call to translateForcedType() glslang::TQualifier qualifier = symbol->getQualifier(); if (qualifier.isSpecConstant() || rValueParameters.find(symbol->getId()) != rValueParameters.end() || !builder.isPointerType(builder.getTypeId(id))) builder.setAccessChainRValue(id); else builder.setAccessChainLValue(id); } #ifdef ENABLE_HLSL // Process linkage-only nodes for any special additional interface work. if (linkageOnly) { if (glslangIntermediate->getHlslFunctionality1()) { // Map implicit counter buffers to their originating buffers, which should have been // seen by now, given earlier pruning of unused counters, and preservation of order // of declaration. if (symbol->getType().getQualifier().isUniformOrBuffer()) { if (!glslangIntermediate->hasCounterBufferName(symbol->getName())) { // Save possible originating buffers for counter buffers, keyed by // making the potential counter-buffer name. std::string keyName = symbol->getName().c_str(); keyName = glslangIntermediate->addCounterBufferName(keyName); counterOriginator[keyName] = symbol; } else { // Handle a counter buffer, by finding the saved originating buffer. std::string keyName = symbol->getName().c_str(); auto it = counterOriginator.find(keyName); if (it != counterOriginator.end()) { id = getSymbolId(it->second); if (id != spv::NoResult) { spv::Id counterId = getSymbolId(symbol); if (counterId != spv::NoResult) { builder.addExtension("SPV_GOOGLE_hlsl_functionality1"); builder.addDecorationId(id, spv::Decoration::HlslCounterBufferGOOGLE, counterId); } } } } } } } #endif } bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::TIntermBinary* node) { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); if (node->getLeft()->getAsSymbolNode() != nullptr && node->getLeft()->getType().isStruct()) { glslangTypeToIdMap[node->getLeft()->getType().getStruct()] = node->getLeft()->getAsSymbolNode()->getId(); } if (node->getRight()->getAsSymbolNode() != nullptr && node->getRight()->getType().isStruct()) { glslangTypeToIdMap[node->getRight()->getType().getStruct()] = node->getRight()->getAsSymbolNode()->getId(); } SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); if (node->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); // First, handle special cases switch (node->getOp()) { case glslang::EOpAssign: case glslang::EOpAddAssign: case glslang::EOpSubAssign: case glslang::EOpMulAssign: case glslang::EOpVectorTimesMatrixAssign: case glslang::EOpVectorTimesScalarAssign: case glslang::EOpMatrixTimesScalarAssign: case glslang::EOpMatrixTimesMatrixAssign: case glslang::EOpDivAssign: case glslang::EOpModAssign: case glslang::EOpAndAssign: case glslang::EOpInclusiveOrAssign: case glslang::EOpExclusiveOrAssign: case glslang::EOpLeftShiftAssign: case glslang::EOpRightShiftAssign: // A bin-op assign "a += b" means the same thing as "a = a + b" // where a is evaluated before b. For a simple assignment, GLSL // says to evaluate the left before the right. So, always, left // node then right node. { // get the left l-value, save it away builder.clearAccessChain(); node->getLeft()->traverse(this); spv::Builder::AccessChain lValue = builder.getAccessChain(); // evaluate the right builder.clearAccessChain(); node->getRight()->traverse(this); spv::Id rValue = accessChainLoad(node->getRight()->getType()); // reset line number for assignment builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); if (node->getOp() != glslang::EOpAssign) { // the left is also an r-value builder.setAccessChain(lValue); spv::Id leftRValue = accessChainLoad(node->getLeft()->getType()); // do the operation spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType()); coherentFlags |= TranslateCoherent(node->getRight()->getType()); OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(coherentFlags) }; rValue = createBinaryOperation(node->getOp(), decorations, convertGlslangToSpvType(node->getType()), leftRValue, rValue, node->getType().getBasicType()); // these all need their counterparts in createBinaryOperation() assert(rValue != spv::NoResult); } // store the result builder.setAccessChain(lValue); multiTypeStore(node->getLeft()->getType(), rValue); // assignments are expressions having an rValue after they are evaluated... builder.clearAccessChain(); builder.setAccessChainRValue(rValue); } return false; case glslang::EOpIndexDirect: case glslang::EOpIndexDirectStruct: { // Structure, array, matrix, or vector indirection with statically known index. // Get the left part of the access chain. node->getLeft()->traverse(this); // Add the next element in the chain const int glslangIndex = node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); if (! node->getLeft()->getType().isArray() && node->getLeft()->getType().isVector() && node->getOp() == glslang::EOpIndexDirect) { // Swizzle is uniform so propagate uniform into access chain spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType()); coherentFlags.nonUniform = 0; // This is essentially a hard-coded vector swizzle of size 1, // so short circuit the access-chain stuff with a swizzle. std::vector swizzle; swizzle.push_back(glslangIndex); int dummySize; builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()), coherentFlags, glslangIntermediate->getBaseAlignmentScalar( node->getLeft()->getType(), dummySize)); } else { // Load through a block reference is performed with a dot operator that // is mapped to EOpIndexDirectStruct. When we get to the actual reference, // do a load and reset the access chain. if (node->getLeft()->isReference() && !node->getLeft()->getType().isArray() && node->getOp() == glslang::EOpIndexDirectStruct) { spv::Id left = accessChainLoad(node->getLeft()->getType()); builder.clearAccessChain(); builder.setAccessChainLValue(left); } int spvIndex = glslangIndex; if (node->getLeft()->getBasicType() == glslang::EbtBlock && node->getOp() == glslang::EOpIndexDirectStruct) { // This may be, e.g., an anonymous block-member selection, which generally need // index remapping due to hidden members in anonymous blocks. long long glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()]; if (memberRemapper.find(glslangId) != memberRemapper.end()) { std::vector& remapper = memberRemapper[glslangId]; assert(remapper.size() > 0); spvIndex = remapper[glslangIndex]; } } // Struct reference propagates uniform lvalue spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType()); coherentFlags.nonUniform = 0; // normal case for indexing array or structure or block builder.accessChainPush(builder.makeIntConstant(spvIndex), coherentFlags, node->getLeft()->getType().getBufferReferenceAlignment()); // Add capabilities here for accessing PointSize and clip/cull distance. // We have deferred generation of associated capabilities until now. if (node->getLeft()->getType().isStruct() && ! node->getLeft()->getType().isArray()) declareUseOfStructMember(*(node->getLeft()->getType().getStruct()), glslangIndex); } } return false; case glslang::EOpIndexIndirect: { // Array, matrix, or vector indirection with variable index. // Will use native SPIR-V access-chain for and array indirection; // matrices are arrays of vectors, so will also work for a matrix. // Will use the access chain's 'component' for variable index into a vector. // This adapter is building access chains left to right. // Set up the access chain to the left. node->getLeft()->traverse(this); // save it so that computing the right side doesn't trash it spv::Builder::AccessChain partial = builder.getAccessChain(); // compute the next index in the chain builder.clearAccessChain(); node->getRight()->traverse(this); spv::Id index = accessChainLoad(node->getRight()->getType()); // Zero-extend smaller unsigned integer types for array indexing. // SPIR-V OpAccessChain treats indices as signed, so we need to zero-extend // unsigned types to preserve their values (signed types are fine as-is). spv::Id indexType = builder.getTypeId(index); if (builder.isUintType(indexType) && builder.getScalarTypeWidth(indexType) < 32) { // Zero-extend unsigned types to preserve their values spv::Id uintType = builder.makeUintType(32); index = builder.createUnaryOp(spv::Op::OpUConvert, uintType, index); } addIndirectionIndexCapabilities(node->getLeft()->getType(), node->getRight()->getType()); // restore the saved access chain builder.setAccessChain(partial); // Only if index is nonUniform should we propagate nonUniform into access chain spv::Builder::AccessChain::CoherentFlags index_flags = TranslateCoherent(node->getRight()->getType()); spv::Builder::AccessChain::CoherentFlags coherent_flags = TranslateCoherent(node->getLeft()->getType()); coherent_flags.nonUniform = index_flags.nonUniform; if (! node->getLeft()->getType().isArray() && node->getLeft()->getType().isVector()) { int dummySize; builder.accessChainPushComponent( index, convertGlslangToSpvType(node->getLeft()->getType()), coherent_flags, glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize)); } else builder.accessChainPush(index, coherent_flags, node->getLeft()->getType().getBufferReferenceAlignment()); } return false; case glslang::EOpVectorSwizzle: { node->getLeft()->traverse(this); std::vector swizzle; convertSwizzle(*node->getRight()->getAsAggregate(), swizzle); int dummySize; builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()), TranslateCoherent(node->getLeft()->getType()), glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize)); } return false; case glslang::EOpMatrixSwizzle: logger->missingFunctionality("matrix swizzle"); return true; case glslang::EOpLogicalOr: case glslang::EOpLogicalAnd: { // These may require short circuiting, but can sometimes be done as straight // binary operations. The right operand must be short circuited if it has // side effects, and should probably be if it is complex. if (isTrivial(node->getRight()->getAsTyped())) break; // handle below as a normal binary operation // otherwise, we need to do dynamic short circuiting on the right operand spv::Id result = createShortCircuit(node->getOp(), *node->getLeft()->getAsTyped(), *node->getRight()->getAsTyped()); builder.clearAccessChain(); builder.setAccessChainRValue(result); } return false; default: break; } // Assume generic binary op... // get right operand builder.clearAccessChain(); node->getLeft()->traverse(this); spv::Id left = accessChainLoad(node->getLeft()->getType()); // get left operand builder.clearAccessChain(); node->getRight()->traverse(this); spv::Id right = accessChainLoad(node->getRight()->getType()); // get result OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(node->getType().getQualifier()) }; spv::Id result = createBinaryOperation(node->getOp(), decorations, convertGlslangToSpvType(node->getType()), left, right, node->getLeft()->getType().getBasicType()); builder.clearAccessChain(); if (! result) { logger->missingFunctionality("unknown glslang binary operation"); return true; // pick up a child as the place-holder result } else { builder.setAccessChainRValue(result); return false; } } spv::Id TGlslangToSpvTraverser::convertLoadedBoolInUniformToUint(const glslang::TType& type, spv::Id nominalTypeId, spv::Id loadedId) { if (builder.isScalarType(nominalTypeId)) { // Conversion for bool spv::Id boolType = builder.makeBoolType(); if (nominalTypeId != boolType) return builder.createBinOp(spv::Op::OpINotEqual, boolType, loadedId, builder.makeUintConstant(0)); } else if (builder.isVectorType(nominalTypeId)) { // Conversion for bvec int vecSize = builder.getNumTypeComponents(nominalTypeId); spv::Id bvecType = builder.makeVectorType(builder.makeBoolType(), vecSize); if (nominalTypeId != bvecType) loadedId = builder.createBinOp(spv::Op::OpINotEqual, bvecType, loadedId, makeSmearedConstant(builder.makeUintConstant(0), vecSize)); } else if (builder.isArrayType(nominalTypeId)) { // Conversion for bool array spv::Id boolArrayTypeId = convertGlslangToSpvType(type); if (nominalTypeId != boolArrayTypeId) { // Use OpCopyLogical from SPIR-V 1.4 if available. if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) return builder.createUnaryOp(spv::Op::OpCopyLogical, boolArrayTypeId, loadedId); glslang::TType glslangElementType(type, 0); spv::Id elementNominalTypeId = builder.getContainedTypeId(nominalTypeId); std::vector constituents; for (int index = 0; index < type.getOuterArraySize(); ++index) { // get the element spv::Id elementValue = builder.createCompositeExtract(loadedId, elementNominalTypeId, index); // recursively convert it spv::Id elementConvertedValue = convertLoadedBoolInUniformToUint(glslangElementType, elementNominalTypeId, elementValue); constituents.push_back(elementConvertedValue); } return builder.createCompositeConstruct(boolArrayTypeId, constituents); } } return loadedId; } // Figure out what, if any, type changes are needed when accessing a specific built-in. // Returns . // Also see comment for 'forceType', regarding tracking SPIR-V-required types. std::pair TGlslangToSpvTraverser::getForcedType(glslang::TBuiltInVariable glslangBuiltIn, const glslang::TType& glslangType) { switch(glslangBuiltIn) { case glslang::EbvSubGroupEqMask: case glslang::EbvSubGroupGeMask: case glslang::EbvSubGroupGtMask: case glslang::EbvSubGroupLeMask: case glslang::EbvSubGroupLtMask: { // these require changing a 64-bit scaler -> a vector of 32-bit components if (glslangType.isVector()) break; spv::Id ivec4_type = builder.makeVectorType(builder.makeUintType(32), 4); spv::Id uint64_type = builder.makeUintType(64); std::pair ret(ivec4_type, uint64_type); return ret; } // There are no SPIR-V builtins defined for these and map onto original non-transposed // builtins. During visitBinary we insert a transpose case glslang::EbvWorldToObject3x4: case glslang::EbvObjectToWorld3x4: { spv::Id mat43 = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); spv::Id mat34 = builder.makeMatrixType(builder.makeFloatType(32), 3, 4); std::pair ret(mat43, mat34); return ret; } default: break; } std::pair ret(spv::NoType, spv::NoType); return ret; } // For an object previously identified (see getForcedType() and forceType) // as needing type translations, do the translation needed for a load, turning // an L-value into in R-value. spv::Id TGlslangToSpvTraverser::translateForcedType(spv::Id object) { const auto forceIt = forceType.find(object); if (forceIt == forceType.end()) return object; spv::Id desiredTypeId = forceIt->second; spv::Id objectTypeId = builder.getTypeId(object); assert(builder.isPointerType(objectTypeId)); objectTypeId = builder.getContainedTypeId(objectTypeId); if (builder.isVectorType(objectTypeId) && builder.getScalarTypeWidth(builder.getContainedTypeId(objectTypeId)) == 32) { if (builder.getScalarTypeWidth(desiredTypeId) == 64) { // handle 32-bit v.xy* -> 64-bit builder.clearAccessChain(); builder.setAccessChainLValue(object); object = builder.accessChainLoad(spv::NoPrecision, spv::Decoration::Max, spv::Decoration::Max, objectTypeId); std::vector components; components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 0)); components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 1)); spv::Id vecType = builder.makeVectorType(builder.getContainedTypeId(objectTypeId), 2); return builder.createUnaryOp(spv::Op::OpBitcast, desiredTypeId, builder.createCompositeConstruct(vecType, components)); } else { logger->missingFunctionality("forcing 32-bit vector type to non 64-bit scalar"); } } else if (builder.isMatrixType(objectTypeId)) { // There are no SPIR-V builtins defined for 3x4 variants of ObjectToWorld/WorldToObject // and we insert a transpose after loading the original non-transposed builtins builder.clearAccessChain(); builder.setAccessChainLValue(object); object = builder.accessChainLoad(spv::NoPrecision, spv::Decoration::Max, spv::Decoration::Max, objectTypeId); return builder.createUnaryOp(spv::Op::OpTranspose, desiredTypeId, object); } else { logger->missingFunctionality("forcing non 32-bit vector type"); } return object; } bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node) { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); if (node->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); spv::Id result = spv::NoResult; // try texturing first result = createImageTextureFunctionCall(node); if (result != spv::NoResult) { builder.clearAccessChain(); builder.setAccessChainRValue(result); return false; // done with this node } // Non-texturing. if (node->getOp() == glslang::EOpArrayLength) { // Quite special; won't want to evaluate the operand. // Currently, the front-end does not allow .length() on an array until it is sized, // except for the last block membeor of an SSBO. // TODO: If this changes, link-time sized arrays might show up here, and need their // size extracted. // Normal .length() would have been constant folded by the front-end. // So, this has to be block.lastMember.length(). // SPV wants "block" and member number as the operands, go get them. spv::Id length; if (node->getOperand()->getType().isCoopMat()) { spv::Id typeId = convertGlslangToSpvType(node->getOperand()->getType()); assert(builder.isCooperativeMatrixType(typeId)); if (node->getOperand()->getType().isCoopMatKHR()) { length = builder.createCooperativeMatrixLengthKHR(typeId); } else { spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); length = builder.createCooperativeMatrixLengthNV(typeId); } } else if (node->getOperand()->getType().isCoopVecNV()) { spv::Id typeId = convertGlslangToSpvType(node->getOperand()->getType()); length = builder.getCooperativeVectorNumComponents(typeId); } else { glslang::TIntermTyped* block = node->getOperand()->getAsBinaryNode()->getLeft(); block->traverse(this); unsigned int member = node->getOperand()->getAsBinaryNode()->getRight()->getAsConstantUnion() ->getConstArray()[0].getUConst(); length = builder.createArrayLength(builder.accessChainGetLValue(), member); } // GLSL semantics say the result of .length() is an int, while SPIR-V says // signedness must be 0. So, convert from SPIR-V unsigned back to GLSL's // AST expectation of a signed result. if (glslangIntermediate->getSource() == glslang::EShSourceGlsl) { if (builder.isInSpecConstCodeGenMode()) { length = builder.createBinOp(spv::Op::OpIAdd, builder.makeIntType(32), length, builder.makeIntConstant(0)); } else { length = builder.createUnaryOp(spv::Op::OpBitcast, builder.makeIntType(32), length); } } builder.clearAccessChain(); builder.setAccessChainRValue(length); 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; // operate first on the swizzle base, then apply the swizzle. spv::Id invertedType = spv::NoType; auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? invertedType : convertGlslangToSpvType(node->getType()); }; if (node->getOp() == glslang::EOpInterpolateAtCentroid) invertedType = getInvertedSwizzleType(*node->getOperand()); builder.clearAccessChain(); TIntermNode *operandNode; if (invertedType != spv::NoType) operandNode = node->getOperand()->getAsBinaryNode()->getLeft(); else operandNode = node->getOperand(); operandNode->traverse(this); spv::Id operand = spv::NoResult; spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags; const auto hitObjectOpsWithLvalue = [](glslang::TOperator op) { switch(op) { case glslang::EOpReorderThreadNV: case glslang::EOpHitObjectGetCurrentTimeNV: case glslang::EOpHitObjectGetHitKindNV: case glslang::EOpHitObjectGetPrimitiveIndexNV: case glslang::EOpHitObjectGetGeometryIndexNV: case glslang::EOpHitObjectGetInstanceIdNV: case glslang::EOpHitObjectGetInstanceCustomIndexNV: case glslang::EOpHitObjectGetObjectRayDirectionNV: case glslang::EOpHitObjectGetObjectRayOriginNV: case glslang::EOpHitObjectGetWorldRayDirectionNV: case glslang::EOpHitObjectGetWorldRayOriginNV: case glslang::EOpHitObjectGetWorldToObjectNV: case glslang::EOpHitObjectGetObjectToWorldNV: case glslang::EOpHitObjectGetRayTMaxNV: case glslang::EOpHitObjectGetRayTMinNV: case glslang::EOpHitObjectIsEmptyNV: case glslang::EOpHitObjectIsHitNV: case glslang::EOpHitObjectIsMissNV: case glslang::EOpHitObjectRecordEmptyNV: case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: case glslang::EOpHitObjectGetClusterIdNV: case glslang::EOpHitObjectGetSpherePositionNV: case glslang::EOpHitObjectGetSphereRadiusNV: case glslang::EOpHitObjectIsSphereHitNV: case glslang::EOpHitObjectIsLSSHitNV: return true; default: return false; } }; if (node->getOp() == glslang::EOpAtomicCounterIncrement || node->getOp() == glslang::EOpAtomicCounterDecrement || node->getOp() == glslang::EOpAtomicCounter || (node->getOp() == glslang::EOpInterpolateAtCentroid && glslangIntermediate->getSource() != glslang::EShSourceHlsl) || node->getOp() == glslang::EOpRayQueryProceed || node->getOp() == glslang::EOpRayQueryGetRayTMin || node->getOp() == glslang::EOpRayQueryGetRayFlags || node->getOp() == glslang::EOpRayQueryGetWorldRayOrigin || node->getOp() == glslang::EOpRayQueryGetWorldRayDirection || node->getOp() == glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque || node->getOp() == glslang::EOpRayQueryTerminate || node->getOp() == glslang::EOpRayQueryConfirmIntersection || (node->getOp() == glslang::EOpSpirvInst && operandNode->getAsTyped()->getQualifier().isSpirvByReference()) || hitObjectOpsWithLvalue(node->getOp())) { operand = builder.accessChainGetLValue(); // Special case l-value operands lvalueCoherentFlags = builder.getAccessChain().coherentFlags; lvalueCoherentFlags |= TranslateCoherent(operandNode->getAsTyped()->getType()); } else if (operandNode->getAsTyped()->getQualifier().isSpirvLiteral()) { // Will be translated to a literal value, make a placeholder here operand = spv::NoResult; } else { operand = accessChainLoad(node->getOperand()->getType()); } OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(node->getType().getQualifier()) }; // it could be a conversion if (! result) { result = createConversion(node->getOp(), decorations, resultType(), operand, node->getType().getBasicType(), node->getOperand()->getBasicType()); if (result) { if (node->getType().isCoopMatKHR() && node->getOperand()->getAsTyped()->getType().isCoopMatKHR() && !node->getAsTyped()->getType().sameCoopMatUse(node->getOperand()->getAsTyped()->getType())) { // Conversions that change use need CapabilityCooperativeMatrixConversionsNV builder.addCapability(spv::Capability::CooperativeMatrixConversionsNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix2); } } } // if not, then possibly an operation if (! result) result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType(), lvalueCoherentFlags, node->getType()); // it could be attached to a SPIR-V intruction if (!result) { if (node->getOp() == glslang::EOpSpirvInst) { const auto& spirvInst = node->getSpirvInstruction(); if (spirvInst.set == "") { spv::IdImmediate idImmOp = {true, operand}; if (operandNode->getAsTyped()->getQualifier().isSpirvLiteral()) { // Translate the constant to a literal value std::vector literals; glslang::TVector constants; constants.push_back(operandNode->getAsConstantUnion()); TranslateLiterals(constants, literals); idImmOp = {false, literals[0]}; } if (node->getBasicType() == glslang::EbtVoid) builder.createNoResultOp(static_cast(spirvInst.id), {idImmOp}); else result = builder.createOp(static_cast(spirvInst.id), resultType(), {idImmOp}); } else { result = builder.createBuiltinCall( resultType(), spirvInst.set == "GLSL.std.450" ? stdBuiltins : getExtBuiltins(spirvInst.set.c_str()), spirvInst.id, {operand}); } if (node->getBasicType() == glslang::EbtVoid) return false; // done with this node } } if (result) { if (invertedType) { result = createInvertedSwizzle(decorations.precision, *node->getOperand(), result); decorations.addNonUniform(builder, result); } builder.clearAccessChain(); builder.setAccessChainRValue(result); return false; // done with this node } // it must be a special case, check... switch (node->getOp()) { case glslang::EOpPostIncrement: case glslang::EOpPostDecrement: case glslang::EOpPreIncrement: case glslang::EOpPreDecrement: { // we need the integer value "1" or the floating point "1.0" to add/subtract spv::Id one = 0; if (node->getBasicType() == glslang::EbtFloat) one = builder.makeFloatConstant(1.0F); else if (node->getBasicType() == glslang::EbtDouble) one = builder.makeDoubleConstant(1.0); else if (node->getBasicType() == glslang::EbtFloat16) one = builder.makeFloat16Constant(1.0F); else if (node->getBasicType() == glslang::EbtBFloat16) one = builder.makeBFloat16Constant(1.0F); else if (node->getBasicType() == glslang::EbtFloatE5M2) one = builder.makeFloatE5M2Constant(1.0F); else if (node->getBasicType() == glslang::EbtFloatE4M3) one = builder.makeFloatE4M3Constant(1.0F); else if (node->getBasicType() == glslang::EbtInt8 || node->getBasicType() == glslang::EbtUint8) one = builder.makeInt8Constant(1); else if (node->getBasicType() == glslang::EbtInt16 || node->getBasicType() == glslang::EbtUint16) one = builder.makeInt16Constant(1); else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64) one = builder.makeInt64Constant(1); else one = builder.makeIntConstant(1); glslang::TOperator op; if (node->getOp() == glslang::EOpPreIncrement || node->getOp() == glslang::EOpPostIncrement) op = glslang::EOpAdd; else op = glslang::EOpSub; spv::Id result = createBinaryOperation(op, decorations, convertGlslangToSpvType(node->getType()), operand, one, node->getType().getBasicType()); assert(result != spv::NoResult); // The result of operation is always stored, but conditionally the // consumed result. The consumed result is always an r-value. builder.accessChainStore(result, TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags)); builder.clearAccessChain(); if (node->getOp() == glslang::EOpPreIncrement || node->getOp() == glslang::EOpPreDecrement) builder.setAccessChainRValue(result); else builder.setAccessChainRValue(operand); } return false; case glslang::EOpAssumeEXT: builder.addCapability(spv::Capability::ExpectAssumeKHR); builder.addExtension(spv::E_SPV_KHR_expect_assume); builder.createNoResultOp(spv::Op::OpAssumeTrueKHR, operand); return false; case glslang::EOpEmitStreamVertex: builder.createNoResultOp(spv::Op::OpEmitStreamVertex, operand); return false; case glslang::EOpEndStreamPrimitive: builder.createNoResultOp(spv::Op::OpEndStreamPrimitive, operand); return false; case glslang::EOpRayQueryTerminate: builder.createNoResultOp(spv::Op::OpRayQueryTerminateKHR, operand); return false; case glslang::EOpRayQueryConfirmIntersection: builder.createNoResultOp(spv::Op::OpRayQueryConfirmIntersectionKHR, operand); return false; case glslang::EOpReorderThreadNV: builder.createNoResultOp(spv::Op::OpReorderThreadWithHitObjectNV, operand); return false; case glslang::EOpHitObjectRecordEmptyNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordEmptyNV, operand); return false; case glslang::EOpCreateTensorLayoutNV: result = builder.createOp(spv::Op::OpCreateTensorLayoutNV, resultType(), std::vector{}); builder.clearAccessChain(); builder.setAccessChainRValue(result); return false; case glslang::EOpCreateTensorViewNV: result = builder.createOp(spv::Op::OpCreateTensorViewNV, resultType(), std::vector{}); builder.clearAccessChain(); builder.setAccessChainRValue(result); return false; default: logger->missingFunctionality("unknown glslang unary"); return true; // pick up operand as placeholder result } } // Construct a composite object, recursively copying members if their types don't match spv::Id TGlslangToSpvTraverser::createCompositeConstruct(spv::Id resultTypeId, std::vector constituents) { for (int c = 0; c < (int)constituents.size(); ++c) { spv::Id& constituent = constituents[c]; spv::Id lType = builder.getContainedTypeId(resultTypeId, c); spv::Id rType = builder.getTypeId(constituent); if (lType != rType) { if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) { constituent = builder.createUnaryOp(spv::Op::OpCopyLogical, lType, constituent); } else if (builder.isStructType(rType)) { std::vector rTypeConstituents; int numrTypeConstituents = builder.getNumTypeConstituents(rType); for (int i = 0; i < numrTypeConstituents; ++i) { rTypeConstituents.push_back(builder.createCompositeExtract(constituent, builder.getContainedTypeId(rType, i), i)); } constituents[c] = createCompositeConstruct(lType, rTypeConstituents); } else { assert(builder.isArrayType(rType)); std::vector rTypeConstituents; int numrTypeConstituents = builder.getNumTypeConstituents(rType); spv::Id elementRType = builder.getContainedTypeId(rType); for (int i = 0; i < numrTypeConstituents; ++i) { rTypeConstituents.push_back(builder.createCompositeExtract(constituent, elementRType, i)); } constituents[c] = createCompositeConstruct(lType, rTypeConstituents); } } } return builder.createCompositeConstruct(resultTypeId, constituents); } bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TIntermAggregate* node) { SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); if (node->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); spv::Id result = spv::NoResult; spv::Id invertedType = spv::NoType; // to use to override the natural type of the node std::vector complexLvalues; // for holding swizzling l-values too complex for // SPIR-V, for an out parameter std::vector temporaryLvalues; // temporaries to pass, as proxies for complexLValues auto resultType = [&invertedType, &node, this](){ if (invertedType != spv::NoType) { return invertedType; } else { auto ret = convertGlslangToSpvType(node->getType()); // convertGlslangToSpvType may clobber the debug location, reset it builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); return ret; } }; // try texturing result = createImageTextureFunctionCall(node); if (result != spv::NoResult) { builder.clearAccessChain(); builder.setAccessChainRValue(result); return false; } else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod || node->getOp() == glslang::EOpImageAtomicStore) { // "imageStore" is a special case, which has no result return false; } glslang::TOperator binOp = glslang::EOpNull; bool reduceComparison = true; bool isMatrix = false; bool noReturnValue = false; bool atomic = false; spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags; assert(node->getOp()); spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); switch (node->getOp()) { case glslang::EOpScope: case glslang::EOpSequence: { if (visit == glslang::EvPreVisit) { ++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()); // Global initializers is specific to the shader entry point, which does not exist in compile-only mode if (!options.compileOnly) { // 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) { auto loc = node->getLoc(); builder.enterLexicalBlock(loc.line, loc.column); } } } else { if (sequenceDepth > 1 && node->getOp() == glslang::EOpScope) builder.leaveLexicalBlock(); --sequenceDepth; } return true; } case glslang::EOpLinkerObjects: { if (visit == glslang::EvPreVisit) linkageOnly = true; else linkageOnly = false; return true; } case glslang::EOpComma: { // processing from left to right naturally leaves the right-most // lying around in the access chain glslang::TIntermSequence& glslangOperands = node->getSequence(); for (int i = 0; i < (int)glslangOperands.size(); ++i) glslangOperands[i]->traverse(this); return false; } case glslang::EOpFunction: if (visit == glslang::EvPreVisit) { if (options.generateDebugInfo) { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); } if (isShaderEntryPoint(node)) { inEntryPoint = true; builder.setBuildPoint(shaderEntry->getLastBlock()); builder.enterFunction(shaderEntry); currentFunction = shaderEntry; } else { handleFunctionEntry(node); } if (options.generateDebugInfo && !options.emitNonSemanticShaderDebugInfo) { const auto& loc = node->getLoc(); const char* sourceFileName = loc.getFilename(); spv::Id sourceFileId = sourceFileName ? builder.getStringId(sourceFileName) : builder.getMainFileId(); currentFunction->setDebugLineInfo(sourceFileId, loc.line, loc.column); } } else { if (options.generateDebugInfo) { if (glslangIntermediate->getSource() == glslang::EShSourceGlsl && node->getSequence().size() > 1) { auto endLoc = node->getSequence()[1]->getAsAggregate()->getEndLoc(); builder.setDebugSourceLocation(endLoc.line, endLoc.getFilename()); } } if (inEntryPoint) entryPointTerminated = true; builder.leaveFunction(); inEntryPoint = false; } return true; case glslang::EOpParameters: // Parameters will have been consumed by EOpFunction processing, but not // the body, so we still visited the function node's children, making this // child redundant. return false; case glslang::EOpFunctionCall: { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); if (node->isUserDefined()) result = handleUserFunctionCall(node); if (result) { builder.clearAccessChain(); builder.setAccessChainRValue(result); } else logger->missingFunctionality("missing user function; linker needs to catch that"); return false; } case glslang::EOpConstructMat2x2: case glslang::EOpConstructMat2x3: case glslang::EOpConstructMat2x4: case glslang::EOpConstructMat3x2: case glslang::EOpConstructMat3x3: case glslang::EOpConstructMat3x4: case glslang::EOpConstructMat4x2: case glslang::EOpConstructMat4x3: case glslang::EOpConstructMat4x4: case glslang::EOpConstructDMat2x2: case glslang::EOpConstructDMat2x3: case glslang::EOpConstructDMat2x4: case glslang::EOpConstructDMat3x2: case glslang::EOpConstructDMat3x3: case glslang::EOpConstructDMat3x4: case glslang::EOpConstructDMat4x2: case glslang::EOpConstructDMat4x3: case glslang::EOpConstructDMat4x4: case glslang::EOpConstructIMat2x2: case glslang::EOpConstructIMat2x3: case glslang::EOpConstructIMat2x4: case glslang::EOpConstructIMat3x2: case glslang::EOpConstructIMat3x3: case glslang::EOpConstructIMat3x4: case glslang::EOpConstructIMat4x2: case glslang::EOpConstructIMat4x3: case glslang::EOpConstructIMat4x4: case glslang::EOpConstructUMat2x2: case glslang::EOpConstructUMat2x3: case glslang::EOpConstructUMat2x4: case glslang::EOpConstructUMat3x2: case glslang::EOpConstructUMat3x3: case glslang::EOpConstructUMat3x4: case glslang::EOpConstructUMat4x2: case glslang::EOpConstructUMat4x3: case glslang::EOpConstructUMat4x4: case glslang::EOpConstructBMat2x2: case glslang::EOpConstructBMat2x3: case glslang::EOpConstructBMat2x4: case glslang::EOpConstructBMat3x2: case glslang::EOpConstructBMat3x3: case glslang::EOpConstructBMat3x4: case glslang::EOpConstructBMat4x2: case glslang::EOpConstructBMat4x3: case glslang::EOpConstructBMat4x4: case glslang::EOpConstructF16Mat2x2: case glslang::EOpConstructF16Mat2x3: case glslang::EOpConstructF16Mat2x4: case glslang::EOpConstructF16Mat3x2: case glslang::EOpConstructF16Mat3x3: case glslang::EOpConstructF16Mat3x4: case glslang::EOpConstructF16Mat4x2: case glslang::EOpConstructF16Mat4x3: case glslang::EOpConstructF16Mat4x4: isMatrix = true; [[fallthrough]]; case glslang::EOpConstructFloat: case glslang::EOpConstructVec2: case glslang::EOpConstructVec3: case glslang::EOpConstructVec4: case glslang::EOpConstructDouble: case glslang::EOpConstructDVec2: case glslang::EOpConstructDVec3: case glslang::EOpConstructDVec4: case glslang::EOpConstructFloat16: case glslang::EOpConstructF16Vec2: case glslang::EOpConstructF16Vec3: case glslang::EOpConstructF16Vec4: case glslang::EOpConstructBFloat16: case glslang::EOpConstructBF16Vec2: case glslang::EOpConstructBF16Vec3: case glslang::EOpConstructBF16Vec4: case glslang::EOpConstructFloatE5M2: case glslang::EOpConstructFloatE5M2Vec2: case glslang::EOpConstructFloatE5M2Vec3: case glslang::EOpConstructFloatE5M2Vec4: case glslang::EOpConstructFloatE4M3: case glslang::EOpConstructFloatE4M3Vec2: case glslang::EOpConstructFloatE4M3Vec3: case glslang::EOpConstructFloatE4M3Vec4: case glslang::EOpConstructBool: case glslang::EOpConstructBVec2: case glslang::EOpConstructBVec3: case glslang::EOpConstructBVec4: case glslang::EOpConstructInt8: case glslang::EOpConstructI8Vec2: case glslang::EOpConstructI8Vec3: case glslang::EOpConstructI8Vec4: case glslang::EOpConstructUint8: case glslang::EOpConstructU8Vec2: case glslang::EOpConstructU8Vec3: case glslang::EOpConstructU8Vec4: case glslang::EOpConstructInt16: case glslang::EOpConstructI16Vec2: case glslang::EOpConstructI16Vec3: case glslang::EOpConstructI16Vec4: case glslang::EOpConstructUint16: case glslang::EOpConstructU16Vec2: case glslang::EOpConstructU16Vec3: case glslang::EOpConstructU16Vec4: case glslang::EOpConstructInt: case glslang::EOpConstructIVec2: case glslang::EOpConstructIVec3: case glslang::EOpConstructIVec4: case glslang::EOpConstructUint: case glslang::EOpConstructUVec2: case glslang::EOpConstructUVec3: case glslang::EOpConstructUVec4: case glslang::EOpConstructInt64: case glslang::EOpConstructI64Vec2: case glslang::EOpConstructI64Vec3: case glslang::EOpConstructI64Vec4: case glslang::EOpConstructUint64: case glslang::EOpConstructU64Vec2: case glslang::EOpConstructU64Vec3: case glslang::EOpConstructU64Vec4: case glslang::EOpConstructStruct: case glslang::EOpConstructTextureSampler: case glslang::EOpConstructReference: case glslang::EOpConstructCooperativeMatrixNV: case glslang::EOpConstructCooperativeMatrixKHR: case glslang::EOpConstructCooperativeVectorNV: case glslang::EOpConstructSaturated: { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); std::vector arguments; translateArguments(*node, arguments, lvalueCoherentFlags); spv::Id constructed; 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::Op::OpSampledImage, resultType(), arguments); } else if (node->getOp() == glslang::EOpConstructCooperativeMatrixKHR && node->getType().isCoopMatKHR() && node->getSequence()[0]->getAsTyped()->getType().isCoopMatKHR()) { builder.addCapability(spv::Capability::CooperativeMatrixConversionsNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix2); constructed = builder.createCooperativeMatrixConversion(resultType(), arguments[0]); } else if (node->getOp() == glslang::EOpConstructCooperativeVectorNV && arguments.size() == 1 && builder.getTypeId(arguments[0]) == resultType()) { constructed = arguments[0]; } else if (node->getOp() == glslang::EOpConstructStruct || node->getOp() == glslang::EOpConstructCooperativeMatrixNV || node->getOp() == glslang::EOpConstructCooperativeMatrixKHR || node->getType().isArray() || // Handle constructing coopvec from one component here, to avoid the component // getting smeared (node->getOp() == glslang::EOpConstructCooperativeVectorNV && arguments.size() == 1 && builder.isScalar(arguments[0]))) { std::vector constituents; for (int c = 0; c < (int)arguments.size(); ++c) constituents.push_back(arguments[c]); constructed = createCompositeConstruct(resultType(), constituents); } else if (isMatrix) constructed = builder.createMatrixConstructor(precision, arguments, resultType()); else if (node->getOp() == glslang::EOpConstructSaturated) { OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(lvalueCoherentFlags) }; constructed = createConversion(node->getOp(), decorations, resultType(), arguments[1], node->getType().getBasicType(), node->getSequence()[1]->getAsTyped()->getBasicType()); builder.addDecoration(constructed, spv::Decoration::SaturatedToLargestFloat8NormalConversionEXT); builder.createStore(constructed, arguments[0]); } else constructed = builder.createConstructor(precision, arguments, resultType()); if (node->getType().getQualifier().isNonUniform()) { builder.addDecoration(constructed, spv::Decoration::NonUniformEXT); } builder.clearAccessChain(); builder.setAccessChainRValue(constructed); return false; } // These six are component-wise compares with component-wise results. // Forward on to createBinaryOperation(), requesting a vector result. case glslang::EOpLessThan: case glslang::EOpGreaterThan: case glslang::EOpLessThanEqual: case glslang::EOpGreaterThanEqual: case glslang::EOpVectorEqual: case glslang::EOpVectorNotEqual: { // Map the operation to a binary binOp = node->getOp(); reduceComparison = false; switch (node->getOp()) { case glslang::EOpVectorEqual: binOp = glslang::EOpVectorEqual; break; case glslang::EOpVectorNotEqual: binOp = glslang::EOpVectorNotEqual; break; default: binOp = node->getOp(); break; } break; } case glslang::EOpMul: // component-wise matrix multiply binOp = glslang::EOpMul; break; case glslang::EOpOuterProduct: // two vectors multiplied to make a matrix binOp = glslang::EOpOuterProduct; break; case glslang::EOpDot: { // for scalar dot product, use multiply glslang::TIntermSequence& glslangOperands = node->getSequence(); if (glslangOperands[0]->getAsTyped()->getVectorSize() == 1) binOp = glslang::EOpMul; break; } case glslang::EOpMod: // when an aggregate, this is the floating-point mod built-in function, // which can be emitted by the one in createBinaryOperation() binOp = glslang::EOpMod; break; case glslang::EOpEmitVertex: case glslang::EOpEndPrimitive: case glslang::EOpBarrier: case glslang::EOpMemoryBarrier: case glslang::EOpMemoryBarrierAtomicCounter: case glslang::EOpMemoryBarrierBuffer: case glslang::EOpMemoryBarrierImage: case glslang::EOpMemoryBarrierShared: case glslang::EOpGroupMemoryBarrier: case glslang::EOpDeviceMemoryBarrier: case glslang::EOpAllMemoryBarrierWithGroupSync: case glslang::EOpDeviceMemoryBarrierWithGroupSync: case glslang::EOpWorkgroupMemoryBarrier: case glslang::EOpWorkgroupMemoryBarrierWithGroupSync: case glslang::EOpSubgroupBarrier: case glslang::EOpSubgroupMemoryBarrier: case glslang::EOpSubgroupMemoryBarrierBuffer: case glslang::EOpSubgroupMemoryBarrierImage: case glslang::EOpSubgroupMemoryBarrierShared: noReturnValue = true; // These all have 0 operands and will naturally finish up in the code below for 0 operands break; case glslang::EOpAtomicAdd: case glslang::EOpAtomicSubtract: case glslang::EOpAtomicMin: case glslang::EOpAtomicMax: case glslang::EOpAtomicAnd: case glslang::EOpAtomicOr: case glslang::EOpAtomicXor: case glslang::EOpAtomicExchange: case glslang::EOpAtomicCompSwap: atomic = true; break; case glslang::EOpAtomicStore: noReturnValue = true; [[fallthrough]]; case glslang::EOpAtomicLoad: atomic = true; break; case glslang::EOpAtomicCounterAdd: case glslang::EOpAtomicCounterSubtract: case glslang::EOpAtomicCounterMin: case glslang::EOpAtomicCounterMax: case glslang::EOpAtomicCounterAnd: case glslang::EOpAtomicCounterOr: case glslang::EOpAtomicCounterXor: case glslang::EOpAtomicCounterExchange: case glslang::EOpAtomicCounterCompSwap: builder.addExtension("SPV_KHR_shader_atomic_counter_ops"); builder.addCapability(spv::Capability::AtomicStorageOps); atomic = true; break; case glslang::EOpAbsDifference: case glslang::EOpAddSaturate: case glslang::EOpSubSaturate: case glslang::EOpAverage: case glslang::EOpAverageRounded: case glslang::EOpMul32x16: builder.addCapability(spv::Capability::IntegerFunctions2INTEL); builder.addExtension("SPV_INTEL_shader_integer_functions2"); binOp = node->getOp(); break; case glslang::EOpExpectEXT: builder.addCapability(spv::Capability::ExpectAssumeKHR); builder.addExtension(spv::E_SPV_KHR_expect_assume); binOp = node->getOp(); break; case glslang::EOpIgnoreIntersectionNV: case glslang::EOpTerminateRayNV: case glslang::EOpTraceNV: case glslang::EOpTraceRayMotionNV: case glslang::EOpTraceKHR: case glslang::EOpExecuteCallableNV: case glslang::EOpExecuteCallableKHR: case glslang::EOpWritePackedPrimitiveIndices4x8NV: case glslang::EOpEmitMeshTasksEXT: case glslang::EOpSetMeshOutputsEXT: noReturnValue = true; break; case glslang::EOpRayQueryInitialize: case glslang::EOpRayQueryTerminate: case glslang::EOpRayQueryGenerateIntersection: case glslang::EOpRayQueryConfirmIntersection: builder.addExtension("SPV_KHR_ray_query"); builder.addCapability(spv::Capability::RayQueryKHR); noReturnValue = true; break; case glslang::EOpRayQueryProceed: case glslang::EOpRayQueryGetIntersectionType: case glslang::EOpRayQueryGetRayTMin: case glslang::EOpRayQueryGetRayFlags: case glslang::EOpRayQueryGetIntersectionT: case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex: case glslang::EOpRayQueryGetIntersectionInstanceId: case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: case glslang::EOpRayQueryGetIntersectionGeometryIndex: case glslang::EOpRayQueryGetIntersectionPrimitiveIndex: case glslang::EOpRayQueryGetIntersectionBarycentrics: case glslang::EOpRayQueryGetIntersectionFrontFace: case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque: case glslang::EOpRayQueryGetIntersectionObjectRayDirection: case glslang::EOpRayQueryGetIntersectionObjectRayOrigin: case glslang::EOpRayQueryGetWorldRayDirection: case glslang::EOpRayQueryGetWorldRayOrigin: case glslang::EOpRayQueryGetIntersectionObjectToWorld: case glslang::EOpRayQueryGetIntersectionWorldToObject: builder.addExtension("SPV_KHR_ray_query"); builder.addCapability(spv::Capability::RayQueryKHR); break; case glslang::EOpCooperativeMatrixLoad: case glslang::EOpCooperativeMatrixStore: case glslang::EOpCooperativeMatrixLoadNV: case glslang::EOpCooperativeMatrixStoreNV: case glslang::EOpCooperativeMatrixLoadTensorNV: case glslang::EOpCooperativeMatrixStoreTensorNV: case glslang::EOpCooperativeMatrixReduceNV: case glslang::EOpCooperativeMatrixPerElementOpNV: case glslang::EOpCooperativeMatrixTransposeNV: case glslang::EOpCooperativeVectorMatMulNV: case glslang::EOpCooperativeVectorMatMulAddNV: case glslang::EOpCooperativeVectorLoadNV: case glslang::EOpCooperativeVectorStoreNV: case glslang::EOpCooperativeVectorOuterProductAccumulateNV: case glslang::EOpCooperativeVectorReduceSumAccumulateNV: noReturnValue = true; break; case glslang::EOpBeginInvocationInterlock: case glslang::EOpEndInvocationInterlock: builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock); noReturnValue = true; break; case glslang::EOpHitObjectTraceRayNV: case glslang::EOpHitObjectTraceRayMotionNV: case glslang::EOpHitObjectGetAttributesNV: case glslang::EOpHitObjectExecuteShaderNV: case glslang::EOpHitObjectRecordEmptyNV: case glslang::EOpHitObjectRecordMissNV: case glslang::EOpHitObjectRecordMissMotionNV: case glslang::EOpHitObjectRecordHitNV: case glslang::EOpHitObjectRecordHitMotionNV: case glslang::EOpHitObjectRecordHitWithIndexNV: case glslang::EOpHitObjectRecordHitWithIndexMotionNV: case glslang::EOpReorderThreadNV: noReturnValue = true; [[fallthrough]]; case glslang::EOpHitObjectIsEmptyNV: case glslang::EOpHitObjectIsMissNV: case glslang::EOpHitObjectIsHitNV: case glslang::EOpHitObjectGetRayTMinNV: case glslang::EOpHitObjectGetRayTMaxNV: case glslang::EOpHitObjectGetObjectRayOriginNV: case glslang::EOpHitObjectGetObjectRayDirectionNV: case glslang::EOpHitObjectGetWorldRayOriginNV: case glslang::EOpHitObjectGetWorldRayDirectionNV: case glslang::EOpHitObjectGetObjectToWorldNV: case glslang::EOpHitObjectGetWorldToObjectNV: case glslang::EOpHitObjectGetInstanceCustomIndexNV: case glslang::EOpHitObjectGetInstanceIdNV: case glslang::EOpHitObjectGetGeometryIndexNV: case glslang::EOpHitObjectGetPrimitiveIndexNV: case glslang::EOpHitObjectGetHitKindNV: case glslang::EOpHitObjectGetCurrentTimeNV: case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: builder.addExtension(spv::E_SPV_NV_shader_invocation_reorder); builder.addCapability(spv::Capability::ShaderInvocationReorderNV); break; case glslang::EOpHitObjectGetLSSPositionsNV: case glslang::EOpHitObjectGetLSSRadiiNV: builder.addExtension(spv::E_SPV_NV_linear_swept_spheres); builder.addCapability(spv::Capability::ShaderInvocationReorderNV); builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); noReturnValue = true; break; case glslang::EOpRayQueryGetIntersectionLSSPositionsNV: case glslang::EOpRayQueryGetIntersectionLSSRadiiNV: builder.addExtension(spv::E_SPV_NV_linear_swept_spheres); builder.addCapability(spv::Capability::RayQueryKHR); builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); noReturnValue = true; break; case glslang::EOpRayQueryGetIntersectionSpherePositionNV: case glslang::EOpRayQueryGetIntersectionSphereRadiusNV: case glslang::EOpRayQueryIsSphereHitNV: builder.addExtension(spv::E_SPV_NV_linear_swept_spheres); builder.addCapability(spv::Capability::RayQueryKHR); builder.addCapability(spv::Capability::RayTracingSpheresGeometryNV); builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); break; case glslang::EOpRayQueryGetIntersectionLSSHitValueNV: case glslang::EOpRayQueryIsLSSHitNV: builder.addExtension(spv::E_SPV_NV_linear_swept_spheres); builder.addCapability(spv::Capability::RayQueryKHR); builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); break; case glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: builder.addExtension(spv::E_SPV_KHR_ray_tracing_position_fetch); builder.addCapability(spv::Capability::RayQueryPositionFetchKHR); noReturnValue = true; break; case glslang::EOpImageSampleWeightedQCOM: builder.addCapability(spv::Capability::TextureSampleWeightedQCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing); break; case glslang::EOpImageBoxFilterQCOM: builder.addCapability(spv::Capability::TextureBoxFilterQCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing); break; case glslang::EOpImageBlockMatchSADQCOM: case glslang::EOpImageBlockMatchSSDQCOM: builder.addCapability(spv::Capability::TextureBlockMatchQCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing); break; case glslang::EOpTensorWriteARM: noReturnValue = true; break; case glslang::EOpImageBlockMatchWindowSSDQCOM: case glslang::EOpImageBlockMatchWindowSADQCOM: builder.addCapability(spv::Capability::TextureBlockMatchQCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing); builder.addCapability(spv::Capability::TextureBlockMatch2QCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing2); break; case glslang::EOpImageBlockMatchGatherSSDQCOM: case glslang::EOpImageBlockMatchGatherSADQCOM: builder.addCapability(spv::Capability::TextureBlockMatchQCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing); builder.addCapability(spv::Capability::TextureBlockMatch2QCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing2); break; case glslang::EOpFetchMicroTriangleVertexPositionNV: case glslang::EOpFetchMicroTriangleVertexBarycentricNV: builder.addExtension(spv::E_SPV_NV_displacement_micromap); builder.addCapability(spv::Capability::DisplacementMicromapNV); break; case glslang::EOpRayQueryGetIntersectionClusterIdNV: builder.addExtension(spv::E_SPV_NV_cluster_acceleration_structure); builder.addCapability(spv::Capability::RayQueryKHR); builder.addCapability(spv::Capability::RayTracingClusterAccelerationStructureNV); break; case glslang::EOpDebugPrintf: noReturnValue = true; break; default: break; } // // See if it maps to a regular operation. // if (binOp != glslang::EOpNull) { glslang::TIntermTyped* left = node->getSequence()[0]->getAsTyped(); glslang::TIntermTyped* right = node->getSequence()[1]->getAsTyped(); assert(left && right); builder.clearAccessChain(); left->traverse(this); spv::Id leftId = accessChainLoad(left->getType()); builder.clearAccessChain(); right->traverse(this); spv::Id rightId = accessChainLoad(right->getType()); builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); OpDecorations decorations = { precision, TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(node->getType().getQualifier()) }; result = createBinaryOperation(binOp, decorations, resultType(), leftId, rightId, left->getType().getBasicType(), reduceComparison); // code above should only make binOp that exists in createBinaryOperation assert(result != spv::NoResult); builder.clearAccessChain(); builder.setAccessChainRValue(result); return false; } // // Create the list of operands. // glslang::TIntermSequence& glslangOperands = node->getSequence(); std::vector operands; std::vector memoryAccessOperands; for (int arg = 0; arg < (int)glslangOperands.size(); ++arg) { // special case l-value operands; there are just a few bool lvalue = false; switch (node->getOp()) { case glslang::EOpModf: if (arg == 1) lvalue = true; break; case glslang::EOpHitObjectRecordHitNV: case glslang::EOpHitObjectRecordHitMotionNV: case glslang::EOpHitObjectRecordHitWithIndexNV: case glslang::EOpHitObjectRecordHitWithIndexMotionNV: case glslang::EOpHitObjectTraceRayNV: case glslang::EOpHitObjectTraceRayMotionNV: case glslang::EOpHitObjectExecuteShaderNV: case glslang::EOpHitObjectRecordMissNV: case glslang::EOpHitObjectRecordMissMotionNV: case glslang::EOpHitObjectGetAttributesNV: case glslang::EOpHitObjectGetClusterIdNV: if (arg == 0) lvalue = true; break; case glslang::EOpHitObjectGetLSSPositionsNV: case glslang::EOpHitObjectGetLSSRadiiNV: lvalue = true; break; case glslang::EOpRayQueryInitialize: case glslang::EOpRayQueryTerminate: case glslang::EOpRayQueryConfirmIntersection: case glslang::EOpRayQueryProceed: case glslang::EOpRayQueryGenerateIntersection: case glslang::EOpRayQueryGetIntersectionType: case glslang::EOpRayQueryGetIntersectionT: case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex: case glslang::EOpRayQueryGetIntersectionInstanceId: case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: case glslang::EOpRayQueryGetIntersectionGeometryIndex: case glslang::EOpRayQueryGetIntersectionPrimitiveIndex: case glslang::EOpRayQueryGetIntersectionBarycentrics: case glslang::EOpRayQueryGetIntersectionFrontFace: case glslang::EOpRayQueryGetIntersectionObjectRayDirection: case glslang::EOpRayQueryGetIntersectionObjectRayOrigin: case glslang::EOpRayQueryGetIntersectionObjectToWorld: case glslang::EOpRayQueryGetIntersectionWorldToObject: case glslang::EOpRayQueryGetIntersectionClusterIdNV: case glslang::EOpRayQueryGetIntersectionSpherePositionNV: case glslang::EOpRayQueryGetIntersectionSphereRadiusNV: case glslang::EOpRayQueryGetIntersectionLSSHitValueNV: case glslang::EOpRayQueryIsSphereHitNV: case glslang::EOpRayQueryIsLSSHitNV: if (arg == 0) lvalue = true; break; case glslang::EOpAtomicAdd: case glslang::EOpAtomicSubtract: case glslang::EOpAtomicMin: case glslang::EOpAtomicMax: case glslang::EOpAtomicAnd: case glslang::EOpAtomicOr: case glslang::EOpAtomicXor: case glslang::EOpAtomicExchange: case glslang::EOpAtomicCompSwap: if (arg == 0) lvalue = true; break; case glslang::EOpFrexp: if (arg == 1) lvalue = true; break; case glslang::EOpInterpolateAtSample: case glslang::EOpInterpolateAtOffset: case glslang::EOpInterpolateAtVertex: if (arg == 0) { // If GLSL, use the address of the interpolant argument. // If HLSL, use an internal version of OpInterolates that takes // the rvalue of the interpolant. A fixup pass in spirv-opt // legalization will remove the OpLoad and convert to an lvalue. // Had to do this because legalization will only propagate a // builtin into an rvalue. lvalue = glslangIntermediate->getSource() != glslang::EShSourceHlsl; // Does it need a swizzle inversion? If so, evaluation is inverted; // operate first on the swizzle base, then apply the swizzle. // That is, we transform // // interpolate(v.zy) -> interpolate(v).zy // if (glslangOperands[0]->getAsOperator() && glslangOperands[0]->getAsOperator()->getOp() == glslang::EOpVectorSwizzle) invertedType = convertGlslangToSpvType( glslangOperands[0]->getAsBinaryNode()->getLeft()->getType()); } break; case glslang::EOpAtomicLoad: case glslang::EOpAtomicStore: case glslang::EOpAtomicCounterAdd: case glslang::EOpAtomicCounterSubtract: case glslang::EOpAtomicCounterMin: case glslang::EOpAtomicCounterMax: case glslang::EOpAtomicCounterAnd: case glslang::EOpAtomicCounterOr: case glslang::EOpAtomicCounterXor: case glslang::EOpAtomicCounterExchange: case glslang::EOpAtomicCounterCompSwap: if (arg == 0) lvalue = true; break; case glslang::EOpAddCarry: case glslang::EOpSubBorrow: if (arg == 2) lvalue = true; break; case glslang::EOpUMulExtended: case glslang::EOpIMulExtended: if (arg >= 2) lvalue = true; break; case glslang::EOpCooperativeMatrixLoad: case glslang::EOpCooperativeMatrixLoadNV: case glslang::EOpCooperativeMatrixLoadTensorNV: case glslang::EOpCooperativeVectorLoadNV: if (arg == 0 || arg == 1) lvalue = true; break; case glslang::EOpCooperativeMatrixStore: case glslang::EOpCooperativeMatrixStoreNV: case glslang::EOpCooperativeMatrixStoreTensorNV: case glslang::EOpCooperativeVectorStoreNV: if (arg == 1) lvalue = true; break; case glslang::EOpCooperativeVectorMatMulNV: if (arg == 0 || arg == 3) lvalue = true; break; case glslang::EOpCooperativeVectorMatMulAddNV: if (arg == 0 || arg == 3 || arg == 6) lvalue = true; break; case glslang::EOpCooperativeVectorOuterProductAccumulateNV: if (arg == 2) lvalue = true; break; case glslang::EOpCooperativeVectorReduceSumAccumulateNV: if (arg == 1) lvalue = true; break; case glslang::EOpCooperativeMatrixReduceNV: case glslang::EOpCooperativeMatrixPerElementOpNV: case glslang::EOpCooperativeMatrixTransposeNV: if (arg == 0) lvalue = true; break; case glslang::EOpSpirvInst: if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvByReference()) lvalue = true; break; case glslang::EOpReorderThreadNV: //Three variants of reorderThreadNV, two of them use hitObjectNV if (arg == 0 && glslangOperands.size() != 2) lvalue = true; break; case glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: case glslang::EOpRayQueryGetIntersectionLSSPositionsNV: case glslang::EOpRayQueryGetIntersectionLSSRadiiNV: if (arg == 0 || arg == 2) lvalue = true; break; case glslang::EOpTensorReadARM: if (arg == 2) lvalue = true; break; default: break; } builder.clearAccessChain(); if (invertedType != spv::NoType && arg == 0) glslangOperands[0]->getAsBinaryNode()->getLeft()->traverse(this); else glslangOperands[arg]->traverse(this); bool isCoopMat = node->getOp() == glslang::EOpCooperativeMatrixLoad || node->getOp() == glslang::EOpCooperativeMatrixStore || node->getOp() == glslang::EOpCooperativeMatrixLoadNV || node->getOp() == glslang::EOpCooperativeMatrixStoreNV || node->getOp() == glslang::EOpCooperativeMatrixLoadTensorNV || node->getOp() == glslang::EOpCooperativeMatrixStoreTensorNV; bool isCoopVec = node->getOp() == glslang::EOpCooperativeVectorLoadNV || node->getOp() == glslang::EOpCooperativeVectorStoreNV; if (isCoopMat || isCoopVec) { if (arg == 1) { spv::Builder::AccessChain::CoherentFlags coherentFlags {}; unsigned int alignment {}; if (isCoopMat) { // fold "element" parameter into the access chain spv::Builder::AccessChain save = builder.getAccessChain(); builder.clearAccessChain(); glslangOperands[2]->traverse(this); spv::Id elementId = accessChainLoad(glslangOperands[2]->getAsTyped()->getType()); builder.setAccessChain(save); // Point to the first element of the array. builder.accessChainPush(elementId, TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()), glslangOperands[arg]->getAsTyped()->getType().getBufferReferenceAlignment()); coherentFlags = builder.getAccessChain().coherentFlags; alignment = builder.getAccessChain().alignment; } else { coherentFlags = builder.getAccessChain().coherentFlags; coherentFlags |= TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()); alignment = 16; } spv::MemoryAccessMask memoryAccess = TranslateMemoryAccess(coherentFlags); if (node->getOp() == glslang::EOpCooperativeMatrixLoad || node->getOp() == glslang::EOpCooperativeMatrixLoadNV || node->getOp() == glslang::EOpCooperativeMatrixLoadTensorNV || node->getOp() == glslang::EOpCooperativeVectorLoadNV) memoryAccess = (memoryAccess & ~spv::MemoryAccessMask::MakePointerAvailableKHR); if (node->getOp() == glslang::EOpCooperativeMatrixStore || node->getOp() == glslang::EOpCooperativeMatrixStoreNV || node->getOp() == glslang::EOpCooperativeMatrixStoreTensorNV || node->getOp() == glslang::EOpCooperativeVectorStoreNV) memoryAccess = (memoryAccess & ~spv::MemoryAccessMask::MakePointerVisibleKHR); if (builder.getStorageClass(builder.getAccessChain().base) == spv::StorageClass::PhysicalStorageBufferEXT) { memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessMask::Aligned); } memoryAccessOperands.push_back(spv::IdImmediate(false, memoryAccess)); if (anySet(memoryAccess, spv::MemoryAccessMask::Aligned)) { memoryAccessOperands.push_back(spv::IdImmediate(false, alignment)); } if (anySet(memoryAccess, spv::MemoryAccessMask::MakePointerAvailableKHR | spv::MemoryAccessMask::MakePointerVisibleKHR)) { memoryAccessOperands.push_back(spv::IdImmediate(true, builder.makeUintConstant(TranslateMemoryScope(coherentFlags)))); } } else if (isCoopMat && arg == 2) { continue; } } // for l-values, pass the address, for r-values, pass the value if (lvalue) { if (invertedType == spv::NoType && !builder.isSpvLvalue()) { // SPIR-V cannot represent an l-value containing a swizzle that doesn't // reduce to a simple access chain. So, we need a temporary vector to // receive the result, and must later swizzle that into the original // l-value. complexLvalues.push_back(builder.getAccessChain()); temporaryLvalues.push_back(builder.createVariable( spv::NoPrecision, spv::StorageClass::Function, builder.accessChainGetInferredType(), "swizzleTemp")); operands.push_back(temporaryLvalues.back()); } else { operands.push_back(builder.accessChainGetLValue()); } lvalueCoherentFlags = builder.getAccessChain().coherentFlags; lvalueCoherentFlags |= TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()); } else { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); glslang::TOperator glslangOp = node->getOp(); if (arg == 1 && (glslangOp == glslang::EOpRayQueryGetIntersectionType || glslangOp == glslang::EOpRayQueryGetIntersectionT || glslangOp == glslang::EOpRayQueryGetIntersectionInstanceCustomIndex || glslangOp == glslang::EOpRayQueryGetIntersectionInstanceId || glslangOp == glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset || glslangOp == glslang::EOpRayQueryGetIntersectionGeometryIndex || glslangOp == glslang::EOpRayQueryGetIntersectionPrimitiveIndex || glslangOp == glslang::EOpRayQueryGetIntersectionBarycentrics || glslangOp == glslang::EOpRayQueryGetIntersectionFrontFace || glslangOp == glslang::EOpRayQueryGetIntersectionObjectRayDirection || glslangOp == glslang::EOpRayQueryGetIntersectionObjectRayOrigin || glslangOp == glslang::EOpRayQueryGetIntersectionObjectToWorld || glslangOp == glslang::EOpRayQueryGetIntersectionWorldToObject || glslangOp == glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT || glslangOp == glslang::EOpRayQueryGetIntersectionClusterIdNV || glslangOp == glslang::EOpRayQueryGetIntersectionSpherePositionNV || glslangOp == glslang::EOpRayQueryGetIntersectionSphereRadiusNV || glslangOp == glslang::EOpRayQueryGetIntersectionLSSHitValueNV || glslangOp == glslang::EOpRayQueryGetIntersectionLSSPositionsNV || glslangOp == glslang::EOpRayQueryGetIntersectionLSSRadiiNV || glslangOp == glslang::EOpRayQueryIsLSSHitNV || glslangOp == glslang::EOpRayQueryIsSphereHitNV )) { bool cond = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getBConst(); operands.push_back(builder.makeIntConstant(cond ? 1 : 0)); } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) || (arg == 11 && glslangOp == glslang::EOpTraceRayMotionNV) || (arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR) || (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderNV) || (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayNV) || (arg == 12 && glslangOp == glslang::EOpHitObjectTraceRayMotionNV)) { const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0; const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst(); auto itNode = locationToSymbol[set].find(location); visitSymbol(itNode->second); spv::Id symId = getSymbolId(itNode->second); operands.push_back(symId); } else if ((arg == 12 && glslangOp == glslang::EOpHitObjectRecordHitNV) || (arg == 13 && glslangOp == glslang::EOpHitObjectRecordHitMotionNV) || (arg == 11 && glslangOp == glslang::EOpHitObjectRecordHitWithIndexNV) || (arg == 12 && glslangOp == glslang::EOpHitObjectRecordHitWithIndexMotionNV) || (arg == 1 && glslangOp == glslang::EOpHitObjectGetAttributesNV)) { const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst(); const int set = 2; auto itNode = locationToSymbol[set].find(location); visitSymbol(itNode->second); spv::Id symId = getSymbolId(itNode->second); operands.push_back(symId); } else if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvLiteral()) { // Will be translated to a literal value, make a placeholder here operands.push_back(spv::NoResult); } else if (glslangOperands[arg]->getAsTyped()->getBasicType() == glslang::EbtFunction) { spv::Function* function = functionMap[glslangOperands[arg]->getAsSymbolNode()->getMangledName().c_str()]; assert(function); operands.push_back(function->getId()); } else { operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType())); } } } builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); if (node->getOp() == glslang::EOpCooperativeMatrixLoadTensorNV) { std::vector idImmOps; builder.addCapability(spv::Capability::CooperativeMatrixTensorAddressingNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix2); spv::Id object = builder.createLoad(operands[0], spv::NoPrecision); idImmOps.push_back(spv::IdImmediate(true, operands[1])); // Pointer idImmOps.push_back(spv::IdImmediate(true, object)); // Object idImmOps.push_back(spv::IdImmediate(true, operands[2])); // tensorLayout idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end()); // memoryaccess // initialize tensor operands to zero, then OR in flags based on the operands size_t tensorOpIdx = idImmOps.size(); idImmOps.push_back(spv::IdImmediate(false, 0)); for (uint32_t i = 3; i < operands.size(); ++i) { if (builder.isTensorView(operands[i])) { addMask(idImmOps[tensorOpIdx].word, spv::TensorAddressingOperandsMask::TensorView); } else { // must be the decode func addMask(idImmOps[tensorOpIdx].word, spv::TensorAddressingOperandsMask::DecodeFunc); builder.addCapability(spv::Capability::CooperativeMatrixBlockLoadsNV); } idImmOps.push_back(spv::IdImmediate(true, operands[i])); // tensorView or decodeFunc } // get the pointee type spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0])); assert(builder.isCooperativeMatrixType(typeId)); // do the op spv::Id result = builder.createOp(spv::Op::OpCooperativeMatrixLoadTensorNV, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[0]); result = 0; } else if (node->getOp() == glslang::EOpCooperativeMatrixLoad || node->getOp() == glslang::EOpCooperativeMatrixLoadNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf if (node->getOp() == glslang::EOpCooperativeMatrixLoad) { idImmOps.push_back(spv::IdImmediate(true, operands[3])); // matrixLayout auto layout = (spv::CooperativeMatrixLayout)builder.getConstantScalar(operands[3]); if (layout == spv::CooperativeMatrixLayout::RowBlockedInterleavedARM || layout == spv::CooperativeMatrixLayout::ColumnBlockedInterleavedARM) { builder.addExtension(spv::E_SPV_ARM_cooperative_matrix_layouts); builder.addCapability(spv::Capability::CooperativeMatrixLayoutsARM); } idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride } else { idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor } idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end()); // get the pointee type spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0])); assert(builder.isCooperativeMatrixType(typeId)); // do the op spv::Id result = node->getOp() == glslang::EOpCooperativeMatrixLoad ? builder.createOp(spv::Op::OpCooperativeMatrixLoadKHR, typeId, idImmOps) : builder.createOp(spv::Op::OpCooperativeMatrixLoadNV, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[0]); result = 0; } else if (node->getOp() == glslang::EOpCooperativeMatrixStoreTensorNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf idImmOps.push_back(spv::IdImmediate(true, operands[0])); // object builder.addCapability(spv::Capability::CooperativeMatrixTensorAddressingNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix2); idImmOps.push_back(spv::IdImmediate(true, operands[2])); // tensorLayout idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end()); // memoryaccess if (operands.size() > 3) { idImmOps.push_back(spv::IdImmediate(false, spv::TensorAddressingOperandsMask::TensorView)); idImmOps.push_back(spv::IdImmediate(true, operands[3])); // tensorView } else { idImmOps.push_back(spv::IdImmediate(false, 0)); } builder.createNoResultOp(spv::Op::OpCooperativeMatrixStoreTensorNV, idImmOps); result = 0; } else if (node->getOp() == glslang::EOpCooperativeMatrixStore || node->getOp() == glslang::EOpCooperativeMatrixStoreNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf idImmOps.push_back(spv::IdImmediate(true, operands[0])); // object if (node->getOp() == glslang::EOpCooperativeMatrixStore) { idImmOps.push_back(spv::IdImmediate(true, operands[3])); // matrixLayout auto layout = (spv::CooperativeMatrixLayout)builder.getConstantScalar(operands[3]); if (layout == spv::CooperativeMatrixLayout::RowBlockedInterleavedARM || layout == spv::CooperativeMatrixLayout::ColumnBlockedInterleavedARM) { builder.addExtension(spv::E_SPV_ARM_cooperative_matrix_layouts); builder.addCapability(spv::Capability::CooperativeMatrixLayoutsARM); } idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride } else { idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor } idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end()); if (node->getOp() == glslang::EOpCooperativeMatrixStore) builder.createNoResultOp(spv::Op::OpCooperativeMatrixStoreKHR, idImmOps); else builder.createNoResultOp(spv::Op::OpCooperativeMatrixStoreNV, idImmOps); result = 0; } else if (node->getOp() == glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[0])); // q idImmOps.push_back(spv::IdImmediate(true, operands[1])); // committed spv::Id typeId = builder.makeArrayType(builder.makeVectorType(builder.makeFloatType(32), 3), builder.makeUintConstant(3), 0); // do the op spv::Op spvOp = spv::Op::OpRayQueryGetIntersectionTriangleVertexPositionsKHR; spv::Id result = builder.createOp(spvOp, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[2]); result = 0; } else if (node->getOp() == glslang::EOpRayQueryGetIntersectionLSSPositionsNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[0])); // q idImmOps.push_back(spv::IdImmediate(true, operands[1])); // committed spv::Id typeId = builder.makeArrayType(builder.makeVectorType(builder.makeFloatType(32), 3), builder.makeUintConstant(2), 0); // do the op spv::Op spvOp = spv::Op::OpRayQueryGetIntersectionLSSPositionsNV; spv::Id result = builder.createOp(spvOp, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[2]); result = 0; } else if (node->getOp() == glslang::EOpRayQueryGetIntersectionLSSRadiiNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[0])); // q idImmOps.push_back(spv::IdImmediate(true, operands[1])); // committed spv::Id typeId = builder.makeArrayType(builder.makeFloatType(32), builder.makeUintConstant(2), 0); // do the op spv::Op spvOp = spv::Op::OpRayQueryGetIntersectionLSSRadiiNV; spv::Id result = builder.createOp(spvOp, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[2]); result = 0; } else if (node->getOp() == glslang::EOpHitObjectGetLSSPositionsNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[0])); // hitObject spv::Op spvOp = spv::Op::OpHitObjectGetLSSPositionsNV; spv::Id typeId = builder.makeArrayType(builder.makeVectorType(builder.makeFloatType(32), 3), builder.makeUintConstant(2), 0); spv::Id result = builder.createOp(spvOp, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[1]); result = 0; } else if (node->getOp() == glslang::EOpHitObjectGetLSSRadiiNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[0])); // hitObject spv::Op spvOp = spv::Op::OpHitObjectGetLSSRadiiNV; spv::Id typeId = builder.makeArrayType(builder.makeFloatType(32), builder.makeUintConstant(2), 0); spv::Id result = builder.createOp(spvOp, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[1]); result = 0; } else if (node->getOp() == glslang::EOpCooperativeMatrixMulAdd) { auto matrixOperands = spv::CooperativeMatrixOperandsMask::MaskNone; // If the optional operand is present, initialize matrixOperands to that value. if (glslangOperands.size() == 4 && glslangOperands[3]->getAsConstantUnion()) { matrixOperands = (spv::CooperativeMatrixOperandsMask)glslangOperands[3]->getAsConstantUnion()->getConstArray()[0].getIConst(); } // Determine Cooperative Matrix Operands bits from the signedness of the types. if (isTypeSignedInt(glslangOperands[0]->getAsTyped()->getBasicType())) addMask(matrixOperands, spv::CooperativeMatrixOperandsMask::MatrixASignedComponentsKHR); if (isTypeSignedInt(glslangOperands[1]->getAsTyped()->getBasicType())) addMask(matrixOperands, spv::CooperativeMatrixOperandsMask::MatrixBSignedComponentsKHR); if (isTypeSignedInt(glslangOperands[2]->getAsTyped()->getBasicType())) addMask(matrixOperands, spv::CooperativeMatrixOperandsMask::MatrixCSignedComponentsKHR); if (isTypeSignedInt(node->getBasicType())) addMask(matrixOperands, spv::CooperativeMatrixOperandsMask::MatrixResultSignedComponentsKHR); std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[0])); idImmOps.push_back(spv::IdImmediate(true, operands[1])); idImmOps.push_back(spv::IdImmediate(true, operands[2])); if (matrixOperands != spv::CooperativeMatrixOperandsMask::MaskNone) idImmOps.push_back(spv::IdImmediate(false, matrixOperands)); result = builder.createOp(spv::Op::OpCooperativeMatrixMulAddKHR, resultType(), idImmOps); } else if (node->getOp() == glslang::EOpCooperativeMatrixReduceNV) { builder.addCapability(spv::Capability::CooperativeMatrixReductionsNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix2); spv::Op opcode = spv::Op::OpCooperativeMatrixReduceNV; unsigned mask = glslangOperands[2]->getAsConstantUnion()->getConstArray()[0].getUConst(); spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0])); assert(builder.isCooperativeMatrixType(typeId)); result = builder.createCooperativeMatrixReduce(opcode, typeId, operands[1], mask, operands[3]); // store the result to the pointer (out param 'm') builder.createStore(result, operands[0]); result = 0; } else if (node->getOp() == glslang::EOpCooperativeMatrixPerElementOpNV) { builder.addCapability(spv::Capability::CooperativeMatrixPerElementOperationsNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix2); spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0])); assert(builder.isCooperativeMatrixType(typeId)); result = builder.createCooperativeMatrixPerElementOp(typeId, operands); // store the result to the pointer builder.createStore(result, operands[0]); result = 0; } else if (node->getOp() == glslang::EOpCooperativeMatrixTransposeNV) { builder.addCapability(spv::Capability::CooperativeMatrixConversionsNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix2); spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0])); assert(builder.isCooperativeMatrixType(typeId)); result = builder.createUnaryOp(spv::Op::OpCooperativeMatrixTransposeNV, typeId, operands[1]); // store the result to the pointer builder.createStore(result, operands[0]); result = 0; } else if (node->getOp() == glslang::EOpBitCastArrayQCOM) { builder.addCapability(spv::Capability::CooperativeMatrixConversionQCOM); builder.addExtension(spv::E_SPV_QCOM_cooperative_matrix_conversion); result = builder.createUnaryOp(spv::Op::OpBitCastArrayQCOM, resultType(), operands[0]); } else if (node->getOp() == glslang::EOpCompositeConstructCoopMatQCOM) { builder.addCapability(spv::Capability::CooperativeMatrixConversionQCOM); builder.addExtension(spv::E_SPV_QCOM_cooperative_matrix_conversion); result = builder.createUnaryOp(spv::Op::OpCompositeConstructCoopMatQCOM, resultType(), operands[0]); } else if (node->getOp() == glslang::EOpCompositeExtractCoopMatQCOM) { builder.addCapability(spv::Capability::CooperativeMatrixConversionQCOM); builder.addExtension(spv::E_SPV_QCOM_cooperative_matrix_conversion); result = builder.createUnaryOp(spv::Op::OpCompositeExtractCoopMatQCOM, resultType(), operands[0]); } else if (node->getOp() == glslang::EOpExtractSubArrayQCOM) { builder.addCapability(spv::Capability::CooperativeMatrixConversionQCOM); builder.addExtension(spv::E_SPV_QCOM_cooperative_matrix_conversion); std::vector arguments { operands[0], operands[1] };; result = builder.createOp(spv::Op::OpExtractSubArrayQCOM, resultType(), arguments); } else if (node->getOp() == glslang::EOpCooperativeVectorMatMulNV || node->getOp() == glslang::EOpCooperativeVectorMatMulAddNV) { auto matrixOperands = spv::CooperativeMatrixOperandsMask::MaskNone; bool isMulAdd = node->getOp() == glslang::EOpCooperativeVectorMatMulAddNV; // Determine Cooperative Matrix Operands bits from the signedness of the types. if (isTypeSignedInt(glslangOperands[1]->getAsTyped()->getBasicType())) addMask(matrixOperands, spv::CooperativeMatrixOperandsMask::MatrixBSignedComponentsKHR); if (isTypeSignedInt(glslangOperands[0]->getAsTyped()->getBasicType())) addMask(matrixOperands, spv::CooperativeMatrixOperandsMask::MatrixResultSignedComponentsKHR); uint32_t opIdx = 1; std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // Input idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // InputInterpretation idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // Matrix idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // MatrixOffset idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // MatrixInterpretation if (isMulAdd) { idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // Bias idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // BiasOffset idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // BiasInterpretation } idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // M idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // K idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // MemoryLayout idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // Transpose idImmOps.push_back(spv::IdImmediate(true, operands[opIdx++])); // MatrixStride if (matrixOperands != spv::CooperativeMatrixOperandsMask::MaskNone) idImmOps.push_back(spv::IdImmediate(false, matrixOperands)); // Cooperative Matrix Operands // get the pointee type spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0])); assert(builder.isCooperativeVectorType(typeId)); // do the op spv::Id result = builder.createOp(isMulAdd ? spv::Op::OpCooperativeVectorMatrixMulAddNV : spv::Op::OpCooperativeVectorMatrixMulNV, typeId, idImmOps); // store the result to the pointer (out param 'res') builder.createStore(result, operands[0]); result = 0; } else if (node->getOp() == glslang::EOpCooperativeVectorLoadNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf idImmOps.push_back(spv::IdImmediate(true, operands[2])); // offset idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end()); // get the pointee type spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0])); assert(builder.isCooperativeVectorType(typeId)); // do the op spv::Id result = builder.createOp(spv::Op::OpCooperativeVectorLoadNV, typeId, idImmOps); // store the result to the pointer (out param 'v') builder.createStore(result, operands[0]); result = 0; } else if (node->getOp() == glslang::EOpCooperativeVectorStoreNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf idImmOps.push_back(spv::IdImmediate(true, operands[2])); // offset idImmOps.push_back(spv::IdImmediate(true, operands[0])); // object idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end()); builder.createNoResultOp(spv::Op::OpCooperativeVectorStoreNV, idImmOps); result = 0; } else if (node->getOp() == glslang::EOpCooperativeVectorOuterProductAccumulateNV) { builder.addCapability(spv::Capability::CooperativeVectorTrainingNV); builder.addExtension(spv::E_SPV_NV_cooperative_vector); std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[2])); // Matrix idImmOps.push_back(spv::IdImmediate(true, operands[3])); // Offset idImmOps.push_back(spv::IdImmediate(true, operands[0])); // A idImmOps.push_back(spv::IdImmediate(true, operands[1])); // B idImmOps.push_back(spv::IdImmediate(true, operands[5])); // MemoryLayout idImmOps.push_back(spv::IdImmediate(true, operands[6])); // MatrixInterpretation idImmOps.push_back(spv::IdImmediate(true, operands[4])); // Stride builder.createNoResultOp(spv::Op::OpCooperativeVectorOuterProductAccumulateNV, idImmOps); result = 0; } else if (node->getOp() == glslang::EOpCooperativeVectorReduceSumAccumulateNV) { builder.addCapability(spv::Capability::CooperativeVectorTrainingNV); builder.addExtension(spv::E_SPV_NV_cooperative_vector); std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[1])); // Buf idImmOps.push_back(spv::IdImmediate(true, operands[2])); // Offset idImmOps.push_back(spv::IdImmediate(true, operands[0])); // A builder.createNoResultOp(spv::Op::OpCooperativeVectorReduceSumAccumulateNV, idImmOps); result = 0; } else if (node->getOp() == glslang::EOpTensorReadARM || node->getOp() == glslang::EOpTensorWriteARM) { const bool isWrite = node->getOp() == glslang::EOpTensorWriteARM; const unsigned int tensorMinOperandCount = 3; assert(operands.size() >= tensorMinOperandCount); std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[0])); // tensor idImmOps.push_back(spv::IdImmediate(true, operands[1])); // coords if (isWrite) { idImmOps.push_back(spv::IdImmediate(true, operands[2])); // value } // Analyze the tensor operands spv::IdImmediate tensorOperands = { false, uint32_t(spv::TensorOperandsMask::MaskNone) }; bool pushExtraArg = false; if (operands.size() > tensorMinOperandCount) { auto enumVal = builder.getConstantScalar(operands[tensorMinOperandCount]); if (enumVal & uint32_t(spv::TensorOperandsMask::NontemporalARM)) { tensorOperands.word |= uint32_t(spv::TensorOperandsMask::NontemporalARM); } if (enumVal & uint32_t(spv::TensorOperandsMask::OutOfBoundsValueARM)) { tensorOperands.word |= uint32_t(spv::TensorOperandsMask::OutOfBoundsValueARM); assert(operands.size() >= tensorMinOperandCount + 2 && "TensorOperandsOutOfBoundsValueMask requires an additional value"); pushExtraArg = true; } } // Append optional tensor operands if the mask was non-zero. if (tensorOperands.word) { idImmOps.push_back(tensorOperands); if (pushExtraArg) idImmOps.push_back(spv::IdImmediate(true, operands[tensorMinOperandCount + 1])); } if (isWrite) { builder.createNoResultOp(spv::Op::OpTensorWriteARM, idImmOps); result = 0; } else { // Use the result argument type as the OpTensorReadARM result type. const glslang::TType &resArgType = glslangOperands[2]->getAsTyped()->getType(); spv::Id retType = convertGlslangToSpvType(resArgType); result = builder.createOp(spv::Op::OpTensorReadARM, retType, idImmOps); // Store the result to the result argument. builder.createStore(result, operands[2]); } } else if (node->getOp() == glslang::EOpTensorSizeARM) { // Expected operands are (tensor, dimension) assert(operands.size() == 2); spv::Id tensorOp = operands[0]; spv::Id dimOp = operands[1]; assert(builder.isTensorTypeARM(builder.getTypeId(tensorOp)) && "operand #0 must be a tensor"); std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, tensorOp)); idImmOps.push_back(spv::IdImmediate(true, dimOp)); result = builder.createOp(spv::Op::OpTensorQuerySizeARM, resultType(), idImmOps); } else if (atomic) { // Handle all atomics glslang::TBasicType typeProxy = (node->getOp() == glslang::EOpAtomicStore) ? node->getSequence()[0]->getAsTyped()->getBasicType() : node->getBasicType(); result = createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy, lvalueCoherentFlags, node->getType()); } else if (node->getOp() == glslang::EOpSpirvInst) { const auto& spirvInst = node->getSpirvInstruction(); if (spirvInst.set == "") { std::vector idImmOps; for (unsigned int i = 0; i < glslangOperands.size(); ++i) { if (glslangOperands[i]->getAsTyped()->getQualifier().isSpirvLiteral()) { // Translate the constant to a literal value std::vector literals; glslang::TVector constants; constants.push_back(glslangOperands[i]->getAsConstantUnion()); TranslateLiterals(constants, literals); idImmOps.push_back({false, literals[0]}); } else idImmOps.push_back({true, operands[i]}); } if (node->getBasicType() == glslang::EbtVoid) builder.createNoResultOp(static_cast(spirvInst.id), idImmOps); else result = builder.createOp(static_cast(spirvInst.id), resultType(), idImmOps); } else { result = builder.createBuiltinCall( resultType(), spirvInst.set == "GLSL.std.450" ? stdBuiltins : getExtBuiltins(spirvInst.set.c_str()), spirvInst.id, operands); } noReturnValue = node->getBasicType() == glslang::EbtVoid; } else if (node->getOp() == glslang::EOpDebugPrintf) { if (!nonSemanticDebugPrintf) { nonSemanticDebugPrintf = builder.import("NonSemantic.DebugPrintf"); } result = builder.createBuiltinCall(builder.makeVoidType(), nonSemanticDebugPrintf, spv::NonSemanticDebugPrintfDebugPrintf, operands); builder.addExtension(spv::E_SPV_KHR_non_semantic_info); } else { // Pass through to generic operations. switch (glslangOperands.size()) { case 0: result = createNoArgOperation(node->getOp(), precision, resultType()); break; case 1: { OpDecorations decorations = { precision, TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(node->getType().getQualifier()) }; result = createUnaryOperation( node->getOp(), decorations, resultType(), operands.front(), glslangOperands[0]->getAsTyped()->getBasicType(), lvalueCoherentFlags, node->getType()); } break; default: result = createMiscOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); break; } if (invertedType != spv::NoResult) result = createInvertedSwizzle(precision, *glslangOperands[0]->getAsBinaryNode(), result); for (unsigned int i = 0; i < temporaryLvalues.size(); ++i) { builder.setAccessChain(complexLvalues[i]); builder.accessChainStore(builder.createLoad(temporaryLvalues[i], spv::NoPrecision), TranslateNonUniformDecoration(complexLvalues[i].coherentFlags)); } } if (noReturnValue) return false; if (! result) { logger->missingFunctionality("unknown glslang aggregate"); return true; // pick up a child as a placeholder operand } else { builder.clearAccessChain(); builder.setAccessChainRValue(result); return false; } } // This path handles both if-then-else and ?: // The if-then-else has a node type of void, while // ?: has either a void or a non-void node type // // Leaving the result, when not void: // GLSL only has r-values as the result of a :?, but // if we have an l-value, that can be more efficient if it will // become the base of a complex r-value expression, because the // next layer copies r-values into memory to use the access-chain mechanism bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang::TIntermSelection* node) { // see if OpSelect can handle it const auto isOpSelectable = [&]() { if (node->getBasicType() == glslang::EbtVoid) return false; // OpSelect can do all other types starting with SPV 1.4 if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_4) { // pre-1.4, only scalars and vectors can be handled if ((!node->getType().isScalar() && !node->getType().isVector())) return false; } return true; }; // See if it simple and safe, or required, to execute both sides. // Crucially, side effects must be either semantically required or avoided, // and there are performance trade-offs. // Return true if required or a good idea (and safe) to execute both sides, // false otherwise. const auto bothSidesPolicy = [&]() -> bool { // do we have both sides? if (node->getTrueBlock() == nullptr || node->getFalseBlock() == nullptr) return false; // required? (unless we write additional code to look for side effects // and make performance trade-offs if none are present) if (!node->getShortCircuit()) return true; // if not required to execute both, decide based on performance/practicality... if (!isOpSelectable()) return false; assert(node->getType() == node->getTrueBlock() ->getAsTyped()->getType() && node->getType() == node->getFalseBlock()->getAsTyped()->getType()); // return true if a single operand to ? : is okay for OpSelect const auto operandOkay = [](glslang::TIntermTyped* node) { return node->getAsSymbolNode() || node->getType().getQualifier().isConstant(); }; return operandOkay(node->getTrueBlock() ->getAsTyped()) && operandOkay(node->getFalseBlock()->getAsTyped()); }; spv::Id result = spv::NoResult; // upcoming result selecting between trueValue and falseValue // emit the condition before doing anything with selection node->getCondition()->traverse(this); spv::Id condition = accessChainLoad(node->getCondition()->getType()); // Find a way of executing both sides and selecting the right result. const auto executeBothSides = [&]() -> void { // execute both sides spv::Id resultType = convertGlslangToSpvType(node->getType()); node->getTrueBlock()->traverse(this); spv::Id trueValue = accessChainLoad(node->getTrueBlock()->getAsTyped()->getType()); node->getFalseBlock()->traverse(this); spv::Id falseValue = accessChainLoad(node->getFalseBlock()->getAsTyped()->getType()); builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); // done if void if (node->getBasicType() == glslang::EbtVoid) return; // emit code to select between trueValue and falseValue // see if OpSelect can handle the result type, and that the SPIR-V types // of the inputs match the result type. if (isOpSelectable()) { // Emit OpSelect for this selection. // 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, builder.makeVectorType(builder.makeBoolType(), builder.getNumComponents(trueValue))); } // If the types do not match, it is because of mismatched decorations on aggregates. // Since isOpSelectable only lets us get here for SPIR-V >= 1.4, we can use OpCopyObject // to get matching types. if (builder.getTypeId(trueValue) != resultType) { trueValue = builder.createUnaryOp(spv::Op::OpCopyLogical, resultType, trueValue); } if (builder.getTypeId(falseValue) != resultType) { falseValue = builder.createUnaryOp(spv::Op::OpCopyLogical, resultType, falseValue); } // OpSelect result = builder.createTriOp(spv::Op::OpSelect, resultType, condition, trueValue, falseValue); builder.clearAccessChain(); builder.setAccessChainRValue(result); } else { // We need control flow to select the result. // TODO: Once SPIR-V OpSelect allows arbitrary types, eliminate this path. result = builder.createVariable(TranslatePrecisionDecoration(node->getType()), spv::StorageClass::Function, resultType); // Selection control: const spv::SelectionControlMask control = TranslateSelectionControl(*node); // make an "if" based on the value created by the condition spv::Builder::If ifBuilder(condition, control, builder); // emit the "then" statement builder.clearAccessChain(); builder.setAccessChainLValue(result); multiTypeStore(node->getType(), trueValue); ifBuilder.makeBeginElse(); // emit the "else" statement builder.clearAccessChain(); builder.setAccessChainLValue(result); multiTypeStore(node->getType(), falseValue); // finish off the control flow ifBuilder.makeEndIf(); builder.clearAccessChain(); builder.setAccessChainLValue(result); } }; // Execute the one side needed, as per the condition const auto executeOneSide = [&]() { // Always emit control flow. if (node->getBasicType() != glslang::EbtVoid) { result = builder.createVariable(TranslatePrecisionDecoration(node->getType()), spv::StorageClass::Function, convertGlslangToSpvType(node->getType())); } // Selection control: const spv::SelectionControlMask control = TranslateSelectionControl(*node); // make an "if" based on the value created by the condition spv::Builder::If ifBuilder(condition, control, builder); // emit the "then" statement if (node->getTrueBlock() != nullptr) { node->getTrueBlock()->traverse(this); if (result != spv::NoResult) { spv::Id load = accessChainLoad(node->getTrueBlock()->getAsTyped()->getType()); builder.clearAccessChain(); builder.setAccessChainLValue(result); multiTypeStore(node->getType(), load); } } if (node->getFalseBlock() != nullptr) { ifBuilder.makeBeginElse(); // emit the "else" statement node->getFalseBlock()->traverse(this); if (result != spv::NoResult) { spv::Id load = accessChainLoad(node->getFalseBlock()->getAsTyped()->getType()); builder.clearAccessChain(); builder.setAccessChainLValue(result); multiTypeStore(node->getType(), load); } } // finish off the control flow ifBuilder.makeEndIf(); if (result != spv::NoResult) { builder.clearAccessChain(); builder.setAccessChainLValue(result); } }; // Try for OpSelect (or a requirement to execute both sides) if (bothSidesPolicy()) { SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); if (node->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); executeBothSides(); } else executeOneSide(); return false; } bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::TIntermSwitch* node) { // emit and get the condition before doing anything with switch node->getCondition()->traverse(this); spv::Id selector = accessChainLoad(node->getCondition()->getAsTyped()->getType()); // Selection control: const spv::SelectionControlMask control = TranslateSwitchControl(*node); // browse the children to sort out code segments int defaultSegment = -1; std::vector codeSegments; glslang::TIntermSequence& sequence = node->getBody()->getSequence(); std::vector caseValues; std::vector valueIndexToSegment(sequence.size()); // note: probably not all are used, it is an overestimate for (glslang::TIntermSequence::iterator c = sequence.begin(); c != sequence.end(); ++c) { TIntermNode* child = *c; if (child->getAsBranchNode() && child->getAsBranchNode()->getFlowOp() == glslang::EOpDefault) defaultSegment = (int)codeSegments.size(); else if (child->getAsBranchNode() && child->getAsBranchNode()->getFlowOp() == glslang::EOpCase) { valueIndexToSegment[caseValues.size()] = (int)codeSegments.size(); caseValues.push_back(child->getAsBranchNode()->getExpression()->getAsConstantUnion() ->getConstArray()[0].getIConst()); } else codeSegments.push_back(child); } // handle the case where the last code segment is missing, due to no code // statements between the last case and the end of the switch statement if ((caseValues.size() && (int)codeSegments.size() == valueIndexToSegment[caseValues.size() - 1]) || (int)codeSegments.size() == defaultSegment) codeSegments.push_back(nullptr); // make the switch statement std::vector segmentBlocks; // returned, as the blocks allocated in the call builder.makeSwitch(selector, control, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment, segmentBlocks); // emit all the code in the segments breakForLoop.push(false); for (unsigned int s = 0; s < codeSegments.size(); ++s) { builder.nextSwitchSegment(segmentBlocks, s); if (codeSegments[s]) codeSegments[s]->traverse(this); else builder.addSwitchBreak(true); } breakForLoop.pop(); builder.endSwitch(segmentBlocks); return false; } void TGlslangToSpvTraverser::visitConstantUnion(glslang::TIntermConstantUnion* node) { if (node->getQualifier().isSpirvLiteral()) return; // Translated to a literal value, skip further processing int nextConst = 0; spv::Id constant = createSpvConstantFromConstUnionArray(node->getType(), node->getConstArray(), nextConst, false); builder.clearAccessChain(); builder.setAccessChainRValue(constant); } bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIntermLoop* node) { auto blocks = builder.makeNewLoop(); builder.createBranch(true, &blocks.head); // Loop control: std::vector operands; const spv::LoopControlMask control = TranslateLoopControl(*node, operands); // Spec requires back edges to target header blocks, and every header block // must dominate its merge block. Make a header block first to ensure these // conditions are met. By definition, it will contain OpLoopMerge, followed // 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.setBuildPoint(&blocks.head); builder.setDebugSourceLocation(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(); builder.createBranch(true, &test); builder.setBuildPoint(&test); node->getTest()->traverse(this); spv::Id condition = accessChainLoad(node->getTest()->getType()); builder.createConditionalBranch(condition, &blocks.body, &blocks.merge); builder.setBuildPoint(&blocks.body); breakForLoop.push(true); if (node->getBody()) node->getBody()->traverse(this); builder.createBranch(true, &blocks.continue_target); breakForLoop.pop(); builder.setBuildPoint(&blocks.continue_target); if (node->getTerminal()) node->getTerminal()->traverse(this); builder.createBranch(true, &blocks.head); } else { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); builder.createBranch(true, &blocks.body); breakForLoop.push(true); builder.setBuildPoint(&blocks.body); if (node->getBody()) node->getBody()->traverse(this); builder.createBranch(true, &blocks.continue_target); breakForLoop.pop(); builder.setBuildPoint(&blocks.continue_target); if (node->getTerminal()) node->getTerminal()->traverse(this); if (node->getTest()) { node->getTest()->traverse(this); spv::Id condition = accessChainLoad(node->getTest()->getType()); builder.createConditionalBranch(condition, &blocks.head, &blocks.merge); } else { // TODO: unless there was a break/return/discard instruction // somewhere in the body, this is an infinite loop, so we should // issue a warning. builder.createBranch(true, &blocks.head); } } builder.setBuildPoint(&blocks.merge); builder.closeLoop(); return false; } bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::TIntermBranch* node) { if (node->getExpression()) node->getExpression()->traverse(this); builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); switch (node->getFlowOp()) { case glslang::EOpKill: if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { builder.addCapability(spv::Capability::DemoteToHelperInvocation); builder.createNoResultOp(spv::Op::OpDemoteToHelperInvocationEXT); } else { builder.makeStatementTerminator(spv::Op::OpKill, "post-discard"); } break; case glslang::EOpTerminateInvocation: builder.addExtension(spv::E_SPV_KHR_terminate_invocation); builder.makeStatementTerminator(spv::Op::OpTerminateInvocation, "post-terminate-invocation"); break; case glslang::EOpBreak: if (breakForLoop.top()) builder.createLoopExit(); else builder.addSwitchBreak(false); break; case glslang::EOpContinue: builder.createLoopContinue(); break; case glslang::EOpReturn: if (node->getExpression() != nullptr) { const glslang::TType& glslangReturnType = node->getExpression()->getType(); spv::Id returnId = accessChainLoad(glslangReturnType); if (builder.getTypeId(returnId) != currentFunction->getReturnType() || TranslatePrecisionDecoration(glslangReturnType) != currentFunction->getReturnPrecision()) { builder.clearAccessChain(); spv::Id copyId = builder.createVariable(currentFunction->getReturnPrecision(), spv::StorageClass::Function, currentFunction->getReturnType()); builder.setAccessChainLValue(copyId); multiTypeStore(glslangReturnType, returnId); returnId = builder.createLoad(copyId, currentFunction->getReturnPrecision()); } builder.makeReturn(false, returnId); } else builder.makeReturn(false); builder.clearAccessChain(); break; case glslang::EOpDemote: builder.createNoResultOp(spv::Op::OpDemoteToHelperInvocationEXT); builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation); builder.addCapability(spv::Capability::DemoteToHelperInvocationEXT); break; case glslang::EOpTerminateRayKHR: builder.makeStatementTerminator(spv::Op::OpTerminateRayKHR, "post-terminateRayKHR"); break; case glslang::EOpIgnoreIntersectionKHR: builder.makeStatementTerminator(spv::Op::OpIgnoreIntersectionKHR, "post-ignoreIntersectionKHR"); break; default: assert(0); break; } return false; } spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* node, spv::Id forcedType) { // First, steer off constants, which are not SPIR-V variables, but // can still have a mapping to a SPIR-V Id. // This includes specialization constants. if (node->getQualifier().isConstant()) { spv::Id result = createSpvConstant(*node); if (result != spv::NoResult) return result; } // Now, handle actual variables spv::StorageClass storageClass = TranslateStorageClass(node->getType()); spv::Id spvType = forcedType == spv::NoType ? convertGlslangToSpvType(node->getType()) : forcedType; const bool contains16BitType = node->getType().contains16BitFloat() || node->getType().contains16BitInt(); if (contains16BitType) { switch (storageClass) { case spv::StorageClass::Input: case spv::StorageClass::Output: builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::Capability::StorageInputOutput16); break; case spv::StorageClass::Uniform: builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); if (node->getType().getQualifier().storage == glslang::EvqBuffer) builder.addCapability(spv::Capability::StorageUniformBufferBlock16); else builder.addCapability(spv::Capability::StorageUniform16); break; case spv::StorageClass::PushConstant: builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::Capability::StoragePushConstant16); break; case spv::StorageClass::StorageBuffer: case spv::StorageClass::PhysicalStorageBufferEXT: builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::Capability::StorageUniformBufferBlock16); break; case spv::StorageClass::TileAttachmentQCOM: builder.addCapability(spv::Capability::TileShadingQCOM); break; default: if (storageClass == spv::StorageClass::Workgroup && node->getType().getBasicType() == glslang::EbtBlock) { builder.addCapability(spv::Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR); break; } if (node->getType().contains16BitFloat()) builder.addCapability(spv::Capability::Float16); if (node->getType().contains16BitInt()) builder.addCapability(spv::Capability::Int16); break; } } if (node->getType().contains8BitInt()) { if (storageClass == spv::StorageClass::PushConstant) { builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::Capability::StoragePushConstant8); } else if (storageClass == spv::StorageClass::Uniform) { builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::Capability::UniformAndStorageBuffer8BitAccess); } else if (storageClass == spv::StorageClass::StorageBuffer) { builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::Capability::StorageBuffer8BitAccess); } else if (storageClass == spv::StorageClass::Workgroup && node->getType().getBasicType() == glslang::EbtBlock) { builder.addCapability(spv::Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR); } else { builder.addCapability(spv::Capability::Int8); } } const char* name = node->getName().c_str(); if (glslang::IsAnonymous(name)) name = ""; spv::Id initializer = spv::NoResult; if (node->getType().getQualifier().storage == glslang::EvqUniform && !node->getConstArray().empty()) { int nextConst = 0; initializer = createSpvConstantFromConstUnionArray(node->getType(), node->getConstArray(), nextConst, false /* specConst */); } else if (node->getType().getQualifier().isNullInit()) { initializer = builder.makeNullConstant(spvType); } spv::Id var = builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer, false); std::vector topLevelDecorations; glslang::TQualifier typeQualifier = node->getType().getQualifier(); TranslateMemoryDecoration(typeQualifier, topLevelDecorations, glslangIntermediate->usingVulkanMemoryModel()); for (auto deco : topLevelDecorations) { builder.addDecoration(var, deco); } return var; } // Return type Id of the sampled type. spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler) { switch (sampler.type) { case glslang::EbtInt: return builder.makeIntType(32); case glslang::EbtUint: return builder.makeUintType(32); case glslang::EbtFloat: return builder.makeFloatType(32); case glslang::EbtFloat16: builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float_fetch); builder.addCapability(spv::Capability::Float16ImageAMD); return builder.makeFloatType(16); case glslang::EbtInt64: builder.addExtension(spv::E_SPV_EXT_shader_image_int64); builder.addCapability(spv::Capability::Int64ImageEXT); return builder.makeIntType(64); case glslang::EbtUint64: builder.addExtension(spv::E_SPV_EXT_shader_image_int64); builder.addCapability(spv::Capability::Int64ImageEXT); return builder.makeUintType(64); default: assert(0); return builder.makeFloatType(32); } } // If node is a swizzle operation, return the type that should be used if // the swizzle base is first consumed by another operation, before the swizzle // is applied. spv::Id TGlslangToSpvTraverser::getInvertedSwizzleType(const glslang::TIntermTyped& node) { if (node.getAsOperator() && node.getAsOperator()->getOp() == glslang::EOpVectorSwizzle) return convertGlslangToSpvType(node.getAsBinaryNode()->getLeft()->getType()); else return spv::NoType; } // When inverting a swizzle with a parent op, this function // will apply the swizzle operation to a completed parent operation. spv::Id TGlslangToSpvTraverser::createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped& node, spv::Id parentResult) { std::vector swizzle; convertSwizzle(*node.getAsBinaryNode()->getRight()->getAsAggregate(), swizzle); return builder.createRvalueSwizzle(precision, convertGlslangToSpvType(node.getType()), parentResult, swizzle); } // Convert a glslang AST swizzle node to a swizzle vector for building SPIR-V. void TGlslangToSpvTraverser::convertSwizzle(const glslang::TIntermAggregate& node, std::vector& swizzle) { const glslang::TIntermSequence& swizzleSequence = node.getSequence(); for (int i = 0; i < (int)swizzleSequence.size(); ++i) swizzle.push_back(swizzleSequence[i]->getAsConstantUnion()->getConstArray()[0].getIConst()); } // Convert from a glslang type to an SPV type, by calling into a // recursive version of this function. This establishes the inherited // layout state rooted from the top-level type. spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type, bool forwardReferenceOnly) { return convertGlslangToSpvType(type, getExplicitLayout(type), type.getQualifier(), false, forwardReferenceOnly); } spv::LinkageType TGlslangToSpvTraverser::convertGlslangLinkageToSpv(glslang::TLinkType linkType) { switch (linkType) { case glslang::ELinkExport: return spv::LinkageType::Export; default: return spv::LinkageType::Max; } } // Do full recursive conversion of an arbitrary glslang type to a SPIR-V Id. // explicitLayout can be kept the same throughout the hierarchical recursive walk. // Mutually recursive with convertGlslangStructToSpvType(). spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking explicitLayout, const glslang::TQualifier& qualifier, bool lastBufferBlockMember, bool forwardReferenceOnly) { spv::Id spvType = spv::NoResult; switch (type.getBasicType()) { case glslang::EbtVoid: spvType = builder.makeVoidType(); assert (! type.isArray()); break; case glslang::EbtBool: // "transparent" bool doesn't exist in SPIR-V. The GLSL convention is // a 32-bit int where non-0 means true. if (explicitLayout != glslang::ElpNone) spvType = builder.makeUintType(32); else spvType = builder.makeBoolType(); break; case glslang::EbtInt: spvType = builder.makeIntType(32); break; case glslang::EbtUint: spvType = builder.makeUintType(32); break; case glslang::EbtFloat: spvType = builder.makeFloatType(32); break; case glslang::EbtDouble: spvType = builder.makeFloatType(64); break; case glslang::EbtFloat16: spvType = builder.makeFloatType(16); break; case glslang::EbtBFloat16: spvType = builder.makeBFloat16Type(); break; case glslang::EbtFloatE5M2: spvType = builder.makeFloatE5M2Type(); break; case glslang::EbtFloatE4M3: spvType = builder.makeFloatE4M3Type(); break; case glslang::EbtInt8: spvType = builder.makeIntType(8); break; case glslang::EbtUint8: spvType = builder.makeUintType(8); break; case glslang::EbtInt16: spvType = builder.makeIntType(16); break; case glslang::EbtUint16: spvType = builder.makeUintType(16); break; case glslang::EbtInt64: spvType = builder.makeIntType(64); break; case glslang::EbtUint64: spvType = builder.makeUintType(64); break; case glslang::EbtAtomicUint: builder.addCapability(spv::Capability::AtomicStorage); spvType = builder.makeUintType(32); break; case glslang::EbtAccStruct: switch (glslangIntermediate->getStage()) { case EShLangRayGen: case EShLangIntersect: case EShLangAnyHit: case EShLangClosestHit: case EShLangMiss: case EShLangCallable: // these all should have the RayTracingNV/KHR capability already break; default: { auto& extensions = glslangIntermediate->getRequestedExtensions(); if (extensions.find("GL_EXT_ray_query") != extensions.end()) { builder.addExtension(spv::E_SPV_KHR_ray_query); builder.addCapability(spv::Capability::RayQueryKHR); } } break; } spvType = builder.makeAccelerationStructureType(); break; case glslang::EbtRayQuery: { auto& extensions = glslangIntermediate->getRequestedExtensions(); if (extensions.find("GL_EXT_ray_query") != extensions.end()) { builder.addExtension(spv::E_SPV_KHR_ray_query); builder.addCapability(spv::Capability::RayQueryKHR); } spvType = builder.makeRayQueryType(); } break; case glslang::EbtReference: { // Make the forward pointer, then recurse to convert the structure type, then // patch up the forward pointer with a real pointer type. if (forwardPointers.find(type.getReferentType()) == forwardPointers.end()) { spv::Id forwardId = builder.makeForwardPointer(spv::StorageClass::PhysicalStorageBufferEXT); forwardPointers[type.getReferentType()] = forwardId; } spvType = forwardPointers[type.getReferentType()]; if (!forwardReferenceOnly) { spv::Id referentType = convertGlslangToSpvType(*type.getReferentType()); builder.makePointerFromForwardPointer(spv::StorageClass::PhysicalStorageBufferEXT, forwardPointers[type.getReferentType()], referentType); } } break; case glslang::EbtSampler: { const glslang::TSampler& sampler = type.getSampler(); if (sampler.isPureSampler()) { spvType = builder.makeSamplerType(); } else { // an image is present, make its type spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.isShadow(), sampler.isArrayed(), sampler.isMultiSample(), sampler.isImageClass() ? 2 : 1, TranslateImageFormat(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); } } } break; case glslang::EbtStruct: case glslang::EbtBlock: { // If we've seen this struct type, return it const glslang::TTypeList* glslangMembers = type.getStruct(); // Try to share structs for different layouts, but not yet for other // kinds of qualification (primarily not yet including interpolant qualification). if (! HasNonLayoutQualifiers(type, qualifier)) spvType = structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers]; if (spvType != spv::NoResult) break; // else, we haven't seen it... if (type.getBasicType() == glslang::EbtBlock) memberRemapper[glslangTypeToIdMap[glslangMembers]].resize(glslangMembers->size()); spvType = convertGlslangStructToSpvType(type, glslangMembers, explicitLayout, qualifier); } break; case glslang::EbtString: // no type used for OpString return 0; case glslang::EbtHitObjectNV: { builder.addExtension(spv::E_SPV_NV_shader_invocation_reorder); builder.addCapability(spv::Capability::ShaderInvocationReorderNV); spvType = builder.makeHitObjectNVType(); } break; case glslang::EbtSpirvType: { // GL_EXT_spirv_intrinsics const auto& spirvType = type.getSpirvType(); const auto& spirvInst = spirvType.spirvInst; std::vector operands; for (const auto& typeParam : spirvType.typeParams) { if (typeParam.getAsConstant() != nullptr) { // Constant expression auto constant = typeParam.getAsConstant(); if (constant->isLiteral()) { if (constant->getBasicType() == glslang::EbtFloat) { float floatValue = static_cast(constant->getConstArray()[0].getDConst()); unsigned literal; static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)"); memcpy(&literal, &floatValue, sizeof(literal)); operands.push_back({false, literal}); } else if (constant->getBasicType() == glslang::EbtInt) { unsigned literal = constant->getConstArray()[0].getIConst(); operands.push_back({false, literal}); } else if (constant->getBasicType() == glslang::EbtUint) { unsigned literal = constant->getConstArray()[0].getUConst(); operands.push_back({false, literal}); } else if (constant->getBasicType() == glslang::EbtBool) { unsigned literal = constant->getConstArray()[0].getBConst(); operands.push_back({false, literal}); } else if (constant->getBasicType() == glslang::EbtString) { auto str = constant->getConstArray()[0].getSConst()->c_str(); unsigned literal = 0; char* literalPtr = reinterpret_cast(&literal); unsigned charCount = 0; char ch = 0; do { ch = *(str++); *(literalPtr++) = ch; ++charCount; if (charCount == 4) { operands.push_back({false, literal}); literalPtr = reinterpret_cast(&literal); charCount = 0; } } while (ch != 0); // Partial literal is padded with 0 if (charCount > 0) { for (; charCount < 4; ++charCount) *(literalPtr++) = 0; operands.push_back({false, literal}); } } else assert(0); // Unexpected type } else operands.push_back({true, createSpvConstant(*constant)}); } else { // Type specifier assert(typeParam.getAsType() != nullptr); operands.push_back({true, convertGlslangToSpvType(*typeParam.getAsType())}); } } assert(spirvInst.set == ""); // Currently, couldn't be extended instructions. spvType = builder.makeGenericType(static_cast(spirvInst.id), operands); break; } case glslang::EbtTensorLayoutNV: { builder.addCapability(spv::Capability::TensorAddressingNV); builder.addExtension(spv::E_SPV_NV_tensor_addressing); std::vector operands; for (uint32_t i = 0; i < 2; ++i) { operands.push_back({true, makeArraySizeId(*type.getTypeParameters()->arraySizes, i, true)}); } spvType = builder.makeGenericType(spv::Op::OpTypeTensorLayoutNV, operands); break; } case glslang::EbtTensorViewNV: { builder.addCapability(spv::Capability::TensorAddressingNV); builder.addExtension(spv::E_SPV_NV_tensor_addressing); uint32_t dim = type.getTypeParameters()->arraySizes->getDimSize(0); assert(dim >= 1 && dim <= 5); std::vector operands; for (uint32_t i = 0; i < dim + 2; ++i) { operands.push_back({true, makeArraySizeId(*type.getTypeParameters()->arraySizes, i, true, i==1)}); } spvType = builder.makeGenericType(spv::Op::OpTypeTensorViewNV, operands); break; } default: assert(0); break; } if (type.isMatrix()) spvType = builder.makeMatrixType(spvType, type.getMatrixCols(), type.getMatrixRows()); else { // If this variable has a vector element count greater than 1, create a SPIR-V vector if (type.getVectorSize() > 1) spvType = builder.makeVectorType(spvType, type.getVectorSize()); } if (type.isCoopMatNV()) { builder.addCapability(spv::Capability::CooperativeMatrixNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix); if (type.getBasicType() == glslang::EbtFloat16) builder.addCapability(spv::Capability::Float16); if (type.getBasicType() == glslang::EbtUint8 || type.getBasicType() == glslang::EbtInt8) { builder.addCapability(spv::Capability::Int8); } spv::Id scope = makeArraySizeId(*type.getTypeParameters()->arraySizes, 1); spv::Id rows = makeArraySizeId(*type.getTypeParameters()->arraySizes, 2); spv::Id cols = makeArraySizeId(*type.getTypeParameters()->arraySizes, 3); spvType = builder.makeCooperativeMatrixTypeNV(spvType, scope, rows, cols); } if (type.isCoopMatKHR()) { builder.addCapability(spv::Capability::CooperativeMatrixKHR); builder.addExtension(spv::E_SPV_KHR_cooperative_matrix); if (type.getBasicType() == glslang::EbtBFloat16) { builder.addExtension(spv::E_SPV_KHR_bfloat16); builder.addCapability(spv::Capability::BFloat16CooperativeMatrixKHR); } if (type.getBasicType() == glslang::EbtFloatE5M2 || type.getBasicType() == glslang::EbtFloatE4M3) { builder.addExtension(spv::E_SPV_EXT_float8); builder.addCapability(spv::Capability::Float8CooperativeMatrixEXT); } if (type.getBasicType() == glslang::EbtFloat16) builder.addCapability(spv::Capability::Float16); if (type.getBasicType() == glslang::EbtUint8 || type.getBasicType() == glslang::EbtInt8) { builder.addCapability(spv::Capability::Int8); } spv::Id scope = makeArraySizeId(*type.getTypeParameters()->arraySizes, 0); spv::Id rows = makeArraySizeId(*type.getTypeParameters()->arraySizes, 1); spv::Id cols = makeArraySizeId(*type.getTypeParameters()->arraySizes, 2); spv::Id use = makeArraySizeId(*type.getTypeParameters()->arraySizes, 3, true); spvType = builder.makeCooperativeMatrixTypeKHR(spvType, scope, rows, cols, use); } else if (type.isTensorARM()) { builder.addCapability(spv::Capability::TensorsARM); builder.addExtension(spv::E_SPV_ARM_tensors); if (type.getBasicType() == glslang::EbtInt8 || type.getBasicType() == glslang::EbtUint8) { builder.addCapability(spv::Capability::Int8); } else if (type.getBasicType() == glslang::EbtInt16 || type.getBasicType() == glslang::EbtUint16) { builder.addCapability(spv::Capability::Int16); } else if (type.getBasicType() == glslang::EbtInt64 || type.getBasicType() == glslang::EbtUint64) { builder.addCapability(spv::Capability::Int64); } else if (type.getBasicType() == glslang::EbtFloat16) { builder.addCapability(spv::Capability::Float16); } spv::Id rank = makeArraySizeId(*type.getTypeParameters()->arraySizes, 0); spvType = builder.makeTensorTypeARM(spvType, rank); } if (type.isCoopVecNV()) { builder.addCapability(spv::Capability::CooperativeVectorNV); builder.addExtension(spv::E_SPV_NV_cooperative_vector); if (type.getBasicType() == glslang::EbtFloat16) builder.addCapability(spv::Capability::Float16); if (type.getBasicType() == glslang::EbtUint8 || type.getBasicType() == glslang::EbtInt8) { builder.addCapability(spv::Capability::Int8); } spv::Id components = makeArraySizeId(*type.getTypeParameters()->arraySizes, 0); spvType = builder.makeCooperativeVectorTypeNV(spvType, components); } if (type.isArray()) { int stride = 0; // keep this 0 unless doing an explicit layout; 0 will mean no decoration, no stride // Do all but the outer dimension if (type.getArraySizes()->getNumDims() > 1) { // We need to decorate array strides for types needing explicit layout, except blocks. if (explicitLayout != glslang::ElpNone && type.getBasicType() != glslang::EbtBlock) { // Use a dummy glslang type for querying internal strides of // arrays of arrays, but using just a one-dimensional array. glslang::TType simpleArrayType(type, 0); // deference type of the array while (simpleArrayType.getArraySizes()->getNumDims() > 1) simpleArrayType.getArraySizes()->dereference(); // Will compute the higher-order strides here, rather than making a whole // pile of types and doing repetitive recursion on their contents. stride = getArrayStride(simpleArrayType, explicitLayout, qualifier.layoutMatrix); } // make the arrays for (int dim = type.getArraySizes()->getNumDims() - 1; dim > 0; --dim) { spvType = builder.makeArrayType(spvType, makeArraySizeId(*type.getArraySizes(), dim), stride); if (stride > 0) builder.addDecoration(spvType, spv::Decoration::ArrayStride, stride); stride *= type.getArraySizes()->getDimSize(dim); } } else { // single-dimensional array, and don't yet have stride // We need to decorate array strides for types needing explicit layout, except blocks. if (explicitLayout != glslang::ElpNone && type.getBasicType() != glslang::EbtBlock) stride = getArrayStride(type, explicitLayout, qualifier.layoutMatrix); } // Do the outer dimension, which might not be known for a runtime-sized array. // (Unsized arrays that survive through linking will be runtime-sized arrays) if (type.isSizedArray()) spvType = builder.makeArrayType(spvType, makeArraySizeId(*type.getArraySizes(), 0), stride); else { if (!lastBufferBlockMember) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::Capability::RuntimeDescriptorArrayEXT); } spvType = builder.makeRuntimeArray(spvType); } if (stride > 0) builder.addDecoration(spvType, spv::Decoration::ArrayStride, stride); } return spvType; } // Apply SPIR-V decorations to the SPIR-V object (provided by SPIR-V ID). If member index is provided, the // decorations are applied to this member. void TGlslangToSpvTraverser::applySpirvDecorate(const glslang::TType& type, spv::Id id, std::optional member) { assert(type.getQualifier().hasSpirvDecorate()); const glslang::TSpirvDecorate& spirvDecorate = type.getQualifier().getSpirvDecorate(); // Add spirv_decorate for (auto& decorate : spirvDecorate.decorates) { if (!decorate.second.empty()) { std::vector literals; TranslateLiterals(decorate.second, literals); if (member.has_value()) builder.addMemberDecoration(id, *member, static_cast(decorate.first), literals); else builder.addDecoration(id, static_cast(decorate.first), literals); } else { if (member.has_value()) builder.addMemberDecoration(id, *member, static_cast(decorate.first)); else builder.addDecoration(id, static_cast(decorate.first)); } } // Add spirv_decorate_id if (member.has_value()) { // spirv_decorate_id not applied to members assert(spirvDecorate.decorateIds.empty()); } else { for (auto& decorateId : spirvDecorate.decorateIds) { std::vector operandIds; assert(!decorateId.second.empty()); for (auto extraOperand : decorateId.second) { if (extraOperand->getQualifier().isFrontEndConstant()) operandIds.push_back(createSpvConstant(*extraOperand)); else operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); } builder.addDecorationId(id, static_cast(decorateId.first), operandIds); } } // Add spirv_decorate_string for (auto& decorateString : spirvDecorate.decorateStrings) { std::vector strings; assert(!decorateString.second.empty()); for (auto extraOperand : decorateString.second) { const char* string = extraOperand->getConstArray()[0].getSConst()->c_str(); strings.push_back(string); } if (member.has_value()) builder.addMemberDecoration(id, *member, static_cast(decorateString.first), strings); else builder.addDecoration(id, static_cast(decorateString.first), strings); } } // TODO: this functionality should exist at a higher level, in creating the AST // // Identify interface members that don't have their required extension turned on. // bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) { auto& extensions = glslangIntermediate->getRequestedExtensions(); if (member.getFieldName() == "gl_SecondaryViewportMaskNV" && extensions.find("GL_NV_stereo_view_rendering") == extensions.end()) return true; if (member.getFieldName() == "gl_SecondaryPositionNV" && extensions.find("GL_NV_stereo_view_rendering") == extensions.end()) return true; if (glslangIntermediate->getStage() == EShLangMesh) { if (member.getFieldName() == "gl_PrimitiveShadingRateEXT" && extensions.find("GL_EXT_fragment_shading_rate") == extensions.end()) return true; } if (glslangIntermediate->getStage() != EShLangMesh) { if (member.getFieldName() == "gl_ViewportMask" && extensions.find("GL_NV_viewport_array2") == extensions.end()) return true; if (member.getFieldName() == "gl_PositionPerViewNV" && extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end()) return true; if (member.getFieldName() == "gl_ViewportMaskPerViewNV" && extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end()) return true; } return false; } // Do full recursive conversion of a glslang structure (or block) type to a SPIR-V Id. // explicitLayout can be kept the same throughout the hierarchical recursive walk. // Mutually recursive with convertGlslangToSpvType(). spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TType& type, const glslang::TTypeList* glslangMembers, glslang::TLayoutPacking explicitLayout, const glslang::TQualifier& qualifier) { // Create a vector of struct types for SPIR-V to consume std::vector spvMembers; int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0, // except sometimes for blocks std::vector > deferredForwardPointers; for (int i = 0; i < (int)glslangMembers->size(); i++) { 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.type)) { memberDelta++; memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1; continue; } memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = i - memberDelta; } // modify just this child's view of the qualifier glslang::TQualifier memberQualifier = glslangMember.type->getQualifier(); InheritQualifiers(memberQualifier, qualifier); // manually inherit location if (! memberQualifier.hasLocation() && qualifier.hasLocation()) memberQualifier.layoutLocation = qualifier.layoutLocation; // recurse bool lastBufferBlockMember = qualifier.storage == glslang::EvqBuffer && i == (int)glslangMembers->size() - 1; // 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(), false); if (! HasNonLayoutQualifiers(type, qualifier)) structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers] = spvType; // Decorate it decorateStructType(type, glslangMembers, explicitLayout, qualifier, spvType, spvMembers); for (int i = 0; i < (int)deferredForwardPointers.size(); ++i) { auto it = deferredForwardPointers[i]; convertGlslangToSpvType(*it.first, explicitLayout, it.second, false); } return spvType; } void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, const glslang::TTypeList* glslangMembers, glslang::TLayoutPacking explicitLayout, const glslang::TQualifier& qualifier, spv::Id spvType, const std::vector& spvMembers) { // Name and decorate the non-hidden members int offset = -1; bool memberLocationInvalid = type.isArrayOfArrays() || (type.isArray() && (type.getQualifier().isArrayedIo(glslangIntermediate->getStage()) == false)); for (int i = 0; i < (int)glslangMembers->size(); i++) { glslang::TType& glslangMember = *(*glslangMembers)[i].type; int member = i; if (type.getBasicType() == glslang::EbtBlock) { member = memberRemapper[glslangTypeToIdMap[glslangMembers]][i]; if (filterMember(glslangMember)) continue; } // modify just this child's view of the qualifier glslang::TQualifier memberQualifier = glslangMember.getQualifier(); InheritQualifiers(memberQualifier, qualifier); // using -1 above to indicate a hidden member if (member < 0) continue; builder.addMemberName(spvType, member, glslangMember.getFieldName().c_str()); builder.addMemberDecoration(spvType, member, TranslateLayoutDecoration(glslangMember, memberQualifier.layoutMatrix)); builder.addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangMember)); // Add interpolation and auxiliary storage decorations only to // top-level members of Input and Output storage classes if (type.getQualifier().storage == glslang::EvqVaryingIn || type.getQualifier().storage == glslang::EvqVaryingOut) { if (type.getBasicType() == glslang::EbtBlock || glslangIntermediate->getSource() == glslang::EShSourceHlsl) { builder.addMemberDecoration(spvType, member, TranslateInterpolationDecoration(memberQualifier)); builder.addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(memberQualifier)); addMeshNVDecoration(spvType, member, memberQualifier); } } builder.addMemberDecoration(spvType, member, TranslateInvariantDecoration(memberQualifier)); if (type.getBasicType() == glslang::EbtBlock && qualifier.storage == glslang::EvqBuffer) { // Add memory decorations only to top-level members of shader storage block std::vector memory; TranslateMemoryDecoration(memberQualifier, memory, glslangIntermediate->usingVulkanMemoryModel()); for (unsigned int i = 0; i < memory.size(); ++i) builder.addMemberDecoration(spvType, member, memory[i]); } // Location assignment was already completed correctly by the front end, // just track whether a member needs to be decorated. // Ignore member locations if the container is an array, as that's // ill-specified and decisions have been made to not allow this. if (!memberLocationInvalid && memberQualifier.hasLocation()) builder.addMemberDecoration(spvType, member, spv::Decoration::Location, memberQualifier.layoutLocation); // component, XFB, others if (glslangMember.getQualifier().hasComponent()) builder.addMemberDecoration(spvType, member, spv::Decoration::Component, glslangMember.getQualifier().layoutComponent); if (glslangMember.getQualifier().hasXfbOffset()) builder.addMemberDecoration(spvType, member, spv::Decoration::Offset, glslangMember.getQualifier().layoutXfbOffset); else if (explicitLayout != glslang::ElpNone) { // figure out what to do with offset, which is accumulating int nextOffset; updateMemberOffset(type, glslangMember, offset, nextOffset, explicitLayout, memberQualifier.layoutMatrix); if (offset >= 0) builder.addMemberDecoration(spvType, member, spv::Decoration::Offset, offset); offset = nextOffset; } if (glslangMember.isMatrix() && explicitLayout != glslang::ElpNone) builder.addMemberDecoration(spvType, member, spv::Decoration::MatrixStride, getMatrixStride(glslangMember, explicitLayout, memberQualifier.layoutMatrix)); // built-in variable decorations spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangMember.getQualifier().builtIn, true); if (builtIn != spv::BuiltIn::Max) builder.addMemberDecoration(spvType, member, spv::Decoration::BuiltIn, (int)builtIn); // nonuniform builder.addMemberDecoration(spvType, member, TranslateNonUniformDecoration(glslangMember.getQualifier())); if (glslangIntermediate->getHlslFunctionality1() && memberQualifier.semanticName != nullptr) { builder.addExtension("SPV_GOOGLE_hlsl_functionality1"); builder.addMemberDecoration(spvType, member, spv::Decoration::HlslSemanticGOOGLE, memberQualifier.semanticName); } if (builtIn == spv::BuiltIn::Layer) { // SPV_NV_viewport_array2 extension if (glslangMember.getQualifier().layoutViewportRelative){ builder.addMemberDecoration(spvType, member, spv::Decoration::ViewportRelativeNV); builder.addCapability(spv::Capability::ShaderViewportMaskNV); builder.addExtension(spv::E_SPV_NV_viewport_array2); } if (glslangMember.getQualifier().layoutSecondaryViewportRelativeOffset != -2048){ builder.addMemberDecoration(spvType, member, spv::Decoration::SecondaryViewportRelativeNV, glslangMember.getQualifier().layoutSecondaryViewportRelativeOffset); builder.addCapability(spv::Capability::ShaderStereoViewNV); builder.addExtension(spv::E_SPV_NV_stereo_view_rendering); } } if (glslangMember.getQualifier().layoutPassthrough) { builder.addMemberDecoration(spvType, member, spv::Decoration::PassthroughNV); builder.addCapability(spv::Capability::GeometryShaderPassthroughNV); builder.addExtension(spv::E_SPV_NV_geometry_shader_passthrough); } // Add SPIR-V decorations (GL_EXT_spirv_intrinsics) if (glslangMember.getQualifier().hasSpirvDecorate()) applySpirvDecorate(glslangMember, spvType, member); } // Decorate the structure builder.addDecoration(spvType, TranslateLayoutDecoration(type, qualifier.layoutMatrix)); const auto basicType = type.getBasicType(); const auto typeStorageQualifier = type.getQualifier().storage; if (basicType == glslang::EbtBlock) { builder.addDecoration(spvType, TranslateBlockDecoration(typeStorageQualifier, glslangIntermediate->usingStorageBuffer())); } else if (basicType == glslang::EbtStruct && glslangIntermediate->getSpv().vulkan > 0) { const auto hasRuntimeArray = !spvMembers.empty() && builder.getOpCode(spvMembers.back()) == spv::Op::OpTypeRuntimeArray; if (hasRuntimeArray) { builder.addDecoration(spvType, TranslateBlockDecoration(typeStorageQualifier, glslangIntermediate->usingStorageBuffer())); } } if (qualifier.hasHitObjectShaderRecordNV()) builder.addDecoration(spvType, spv::Decoration::HitObjectShaderRecordBufferNV); } // Turn the expression forming the array size into an id. // This is not quite trivial, because of specialization constants. // Sometimes, a raw constant is turned into an Id, and sometimes // a specialization constant expression is. spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arraySizes, int dim, bool allowZero, bool boolType) { // First, see if this is sized with a node, meaning a specialization constant: glslang::TIntermTyped* specNode = arraySizes.getDimNode(dim); if (specNode != nullptr) { builder.clearAccessChain(); SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); specNode->traverse(this); return accessChainLoad(specNode->getAsTyped()->getType()); } // Otherwise, need a compile-time (front end) size, get it: int size = arraySizes.getDimSize(dim); if (!allowZero) assert(size > 0); if (boolType) { return builder.makeBoolConstant(size); } else { return builder.makeUintConstant(size); } } // Wrap the builder's accessChainLoad to: // - localize handling of RelaxedPrecision // - use the SPIR-V inferred type instead of another conversion of the glslang type // (avoids unnecessary work and possible type punning for structures) // - do conversion of concrete to abstract type spv::Id TGlslangToSpvTraverser::accessChainLoad(const glslang::TType& type) { spv::Id nominalTypeId = builder.accessChainGetInferredType(); spv::Builder::AccessChain::CoherentFlags coherentFlags = builder.getAccessChain().coherentFlags; coherentFlags |= TranslateCoherent(type); spv::MemoryAccessMask accessMask = spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMask::MakePointerAvailableKHR); // If the value being loaded is HelperInvocation, SPIR-V 1.6 is being generated (so that // SPV_EXT_demote_to_helper_invocation is in core) and the memory model is in use, add // the Volatile MemoryAccess semantic. if (type.getQualifier().builtIn == glslang::EbvHelperInvocation && glslangIntermediate->usingVulkanMemoryModel() && glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { accessMask = spv::MemoryAccessMask(accessMask | spv::MemoryAccessMask::Volatile); } unsigned int alignment = builder.getAccessChain().alignment; alignment |= type.getBufferReferenceAlignment(); spv::Id loadedId = builder.accessChainLoad(TranslatePrecisionDecoration(type), TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags), TranslateNonUniformDecoration(type.getQualifier()), nominalTypeId, accessMask, TranslateMemoryScope(coherentFlags), alignment); // Need to convert to abstract types when necessary if (type.getBasicType() == glslang::EbtBool) { loadedId = convertLoadedBoolInUniformToUint(type, nominalTypeId, loadedId); } return loadedId; } // Wrap the builder's accessChainStore to: // - do conversion of concrete to abstract type // // Implicitly uses the existing builder.accessChain as the storage target. void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::Id rvalue) { // Need to convert to abstract types when necessary if (type.getBasicType() == glslang::EbtBool) { spv::Id nominalTypeId = builder.accessChainGetInferredType(); if (builder.isScalarType(nominalTypeId)) { // Conversion for bool spv::Id boolType = builder.makeBoolType(); if (nominalTypeId != boolType) { // keep these outside arguments, for determinant order-of-evaluation spv::Id one = builder.makeUintConstant(1); spv::Id zero = builder.makeUintConstant(0); rvalue = builder.createTriOp(spv::Op::OpSelect, nominalTypeId, rvalue, one, zero); } else if (builder.getTypeId(rvalue) != boolType) rvalue = builder.createBinOp(spv::Op::OpINotEqual, boolType, rvalue, builder.makeUintConstant(0)); } else if (builder.isVectorType(nominalTypeId)) { // Conversion for bvec int vecSize = builder.getNumTypeComponents(nominalTypeId); spv::Id bvecType = builder.makeVectorType(builder.makeBoolType(), vecSize); if (nominalTypeId != bvecType) { // keep these outside arguments, for determinant order-of-evaluation spv::Id one = makeSmearedConstant(builder.makeUintConstant(1), vecSize); spv::Id zero = makeSmearedConstant(builder.makeUintConstant(0), vecSize); rvalue = builder.createTriOp(spv::Op::OpSelect, nominalTypeId, rvalue, one, zero); } else if (builder.getTypeId(rvalue) != bvecType) rvalue = builder.createBinOp(spv::Op::OpINotEqual, bvecType, rvalue, makeSmearedConstant(builder.makeUintConstant(0), vecSize)); } } spv::Builder::AccessChain::CoherentFlags coherentFlags = builder.getAccessChain().coherentFlags; coherentFlags |= TranslateCoherent(type); unsigned int alignment = builder.getAccessChain().alignment; alignment |= type.getBufferReferenceAlignment(); builder.accessChainStore(rvalue, TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags), spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMask::MakePointerVisibleKHR), TranslateMemoryScope(coherentFlags), alignment); } // For storing when types match at the glslang level, but not might match at the // SPIR-V level. // // This especially happens when a single glslang type expands to multiple // SPIR-V types, like a struct that is used in a member-undecorated way as well // as in a member-decorated way. // // NOTE: This function can handle any store request; if it's not special it // simplifies to a simple OpStore. // // Implicitly uses the existing builder.accessChain as the storage target. void TGlslangToSpvTraverser::multiTypeStore(const glslang::TType& type, spv::Id rValue) { // we only do the complex path here if it's an aggregate if (! type.isStruct() && ! type.isArray()) { accessChainStore(type, rValue); return; } // and, it has to be a case of type aliasing spv::Id rType = builder.getTypeId(rValue); spv::Id lValue = builder.accessChainGetLValue(); spv::Id lType = builder.getContainedTypeId(builder.getTypeId(lValue)); if (lType == rType) { accessChainStore(type, rValue); return; } // Recursively (as needed) copy an aggregate type to a different aggregate type, // where the two types were the same type in GLSL. This requires member // by member copy, recursively. // SPIR-V 1.4 added an instruction to do help do this. if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) { // However, bool in uniform space is changed to int, so // OpCopyLogical does not work for that. // TODO: It would be more robust to do a full recursive verification of the types satisfying SPIR-V rules. bool rBool = builder.containsType(builder.getTypeId(rValue), spv::Op::OpTypeBool, 0); bool lBool = builder.containsType(lType, spv::Op::OpTypeBool, 0); if (lBool == rBool) { spv::Id logicalCopy = builder.createUnaryOp(spv::Op::OpCopyLogical, lType, rValue); accessChainStore(type, logicalCopy); return; } } // If an array, copy element by element. if (type.isArray()) { glslang::TType glslangElementType(type, 0); spv::Id elementRType = builder.getContainedTypeId(rType); for (int index = 0; index < type.getOuterArraySize(); ++index) { // get the source member spv::Id elementRValue = builder.createCompositeExtract(rValue, elementRType, index); // set up the target storage builder.clearAccessChain(); builder.setAccessChainLValue(lValue); builder.accessChainPush(builder.makeIntConstant(index), TranslateCoherent(type), type.getBufferReferenceAlignment()); // store the member multiTypeStore(glslangElementType, elementRValue); } } else { assert(type.isStruct()); // loop over structure members const glslang::TTypeList& members = *type.getStruct(); for (int m = 0; m < (int)members.size(); ++m) { const glslang::TType& glslangMemberType = *members[m].type; // get the source member spv::Id memberRType = builder.getContainedTypeId(rType, m); spv::Id memberRValue = builder.createCompositeExtract(rValue, memberRType, m); // set up the target storage builder.clearAccessChain(); builder.setAccessChainLValue(lValue); builder.accessChainPush(builder.makeIntConstant(m), TranslateCoherent(type), type.getBufferReferenceAlignment()); // store the member multiTypeStore(glslangMemberType, memberRValue); } } } // Decide whether or not this type should be // decorated with offsets and strides, and if so // whether std140 or std430 rules should be applied. glslang::TLayoutPacking TGlslangToSpvTraverser::getExplicitLayout(const glslang::TType& type) const { // has to be a block if (type.getBasicType() != glslang::EbtBlock) return glslang::ElpNone; // has to be a uniform or buffer block or task in/out blocks if (type.getQualifier().storage != glslang::EvqUniform && type.getQualifier().storage != glslang::EvqBuffer && type.getQualifier().storage != glslang::EvqShared && !type.getQualifier().isTaskMemory()) return glslang::ElpNone; // return the layout to use switch (type.getQualifier().layoutPacking) { case glslang::ElpStd140: case glslang::ElpStd430: case glslang::ElpScalar: return type.getQualifier().layoutPacking; default: return glslang::ElpNone; } } // Given an array type, returns the integer stride required for that array int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout) { int size; int stride; glslangIntermediate->getMemberAlignment(arrayType, size, stride, explicitLayout, matrixLayout == glslang::ElmRowMajor); return stride; } // Given a matrix type, or array (of array) of matrixes type, returns the integer stride required for that matrix // when used as a member of an interface block int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout) { glslang::TType elementType; elementType.shallowCopy(matrixType); elementType.clearArraySizes(); int size; int stride; glslangIntermediate->getMemberAlignment(elementType, size, stride, explicitLayout, matrixLayout == glslang::ElmRowMajor); return stride; } // Given a member type of a struct, realign the current offset for it, and compute // the next (not yet aligned) offset for the next member, which will get aligned // on the next call. // 'currentOffset' should be passed in already initialized, ready to modify, and reflecting // the migration of data from nextOffset -> currentOffset. It should be -1 on the first call. // -1 means a non-forced member offset (no decoration needed). void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout) { // this will get a positive value when deemed necessary nextOffset = -1; // override anything in currentOffset with user-set offset if (memberType.getQualifier().hasOffset()) currentOffset = memberType.getQualifier().layoutOffset; // It could be that current linker usage in glslang updated all the layoutOffset, // in which case the following code does not matter. But, that's not quite right // once cross-compilation unit GLSL validation is done, as the original user // settings are needed in layoutOffset, and then the following will come into play. if (explicitLayout == glslang::ElpNone) { if (! memberType.getQualifier().hasOffset()) currentOffset = -1; return; } // Getting this far means we need explicit offsets if (currentOffset < 0) currentOffset = 0; // Now, currentOffset is valid (either 0, or from a previous nextOffset), // but possibly not yet correctly aligned. int memberSize; int dummyStride; int memberAlignment = glslangIntermediate->getMemberAlignment(memberType, memberSize, dummyStride, explicitLayout, matrixLayout == glslang::ElmRowMajor); bool isVectorLike = memberType.isVector(); if (memberType.isMatrix()) { if (matrixLayout == glslang::ElmRowMajor) isVectorLike = memberType.getMatrixRows() == 1; else isVectorLike = memberType.getMatrixCols() == 1; } // Adjust alignment for HLSL rules // TODO: make this consistent in early phases of code: // adjusting this late means inconsistencies with earlier code, which for reflection is an issue // Until reflection is brought in sync with these adjustments, don't apply to $Global, // which is the most likely to rely on reflection, and least likely to rely implicit layouts if (glslangIntermediate->usingHlslOffsets() && ! memberType.isStruct() && structType.getTypeName().compare("$Global") != 0) { int componentSize; int componentAlignment = glslangIntermediate->getBaseAlignmentScalar(memberType, componentSize); if (! memberType.isArray() && isVectorLike && componentAlignment <= 4) memberAlignment = componentAlignment; // Don't add unnecessary padding after this member // (undo std140 bumping size to a mutliple of vec4) if (explicitLayout == glslang::ElpStd140) { if (memberType.isMatrix()) { if (matrixLayout == glslang::ElmRowMajor) memberSize -= componentSize * (4 - memberType.getMatrixCols()); else memberSize -= componentSize * (4 - memberType.getMatrixRows()); } else if (memberType.isArray()) memberSize -= componentSize * (4 - memberType.getVectorSize()); } } // Bump up to member alignment glslang::RoundToPow2(currentOffset, memberAlignment); // Bump up to vec4 if there is a bad straddle if (explicitLayout != glslang::ElpScalar && glslangIntermediate->improperStraddle(memberType, memberSize, currentOffset, isVectorLike)) glslang::RoundToPow2(currentOffset, 16); nextOffset = currentOffset + memberSize; } void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember) { const glslang::TBuiltInVariable glslangBuiltIn = members[glslangMember].type->getQualifier().builtIn; switch (glslangBuiltIn) { case glslang::EbvPointSize: case glslang::EbvClipDistance: case glslang::EbvCullDistance: case glslang::EbvViewportMaskNV: case glslang::EbvSecondaryPositionNV: case glslang::EbvSecondaryViewportMaskNV: case glslang::EbvPositionPerViewNV: case glslang::EbvViewportMaskPerViewNV: case glslang::EbvTaskCountNV: case glslang::EbvPrimitiveCountNV: case glslang::EbvPrimitiveIndicesNV: case glslang::EbvClipDistancePerViewNV: case glslang::EbvCullDistancePerViewNV: case glslang::EbvLayerPerViewNV: case glslang::EbvMeshViewCountNV: case glslang::EbvMeshViewIndicesNV: // Generate the associated capability. Delegate to TranslateBuiltInDecoration. // Alternately, we could just call this for any glslang built-in, since the // capability already guards against duplicates. TranslateBuiltInDecoration(glslangBuiltIn, false); break; default: // Capabilities were already generated when the struct was declared. break; } } bool TGlslangToSpvTraverser::isShaderEntryPoint(const glslang::TIntermAggregate* node) { return node->getName().compare(glslangIntermediate->getEntryPointMangledName().c_str()) == 0; } // Does parameter need a place to keep writes, separate from the original? // Assumes called after originalParam(), which filters out block/buffer/opaque-based // qualifiers such that we should have only in/out/inout/constreadonly here. bool TGlslangToSpvTraverser::writableParam(glslang::TStorageQualifier qualifier) const { assert(qualifier == glslang::EvqIn || qualifier == glslang::EvqOut || qualifier == glslang::EvqInOut || qualifier == glslang::EvqUniform || qualifier == glslang::EvqConstReadOnly); return qualifier != glslang::EvqConstReadOnly && qualifier != glslang::EvqUniform; } // Is parameter pass-by-original? bool TGlslangToSpvTraverser::originalParam(glslang::TStorageQualifier qualifier, const glslang::TType& paramType, bool implicitThisParam) { if (implicitThisParam) // implicit this return true; if (glslangIntermediate->getSource() == glslang::EShSourceHlsl) return paramType.getBasicType() == glslang::EbtBlock; return (paramType.containsOpaque() && !glslangIntermediate->getBindlessMode()) || // sampler, etc. paramType.getQualifier().isSpirvByReference() || // spirv_by_reference (paramType.getBasicType() == glslang::EbtBlock && qualifier == glslang::EvqBuffer); // SSBO } // Make all the functions, skeletally, without actually visiting their bodies. void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslFunctions) { const auto getParamDecorations = [&](std::vector& decorations, const glslang::TType& type, bool useVulkanMemoryModel) { spv::Decoration paramPrecision = TranslatePrecisionDecoration(type); if (paramPrecision != spv::NoPrecision) decorations.push_back(paramPrecision); TranslateMemoryDecoration(type.getQualifier(), decorations, useVulkanMemoryModel); if (type.isReference()) { // Original and non-writable params pass the pointer directly and // use restrict/aliased, others are stored to a pointer in Function // memory and use RestrictPointer/AliasedPointer. if (originalParam(type.getQualifier().storage, type, false) || !writableParam(type.getQualifier().storage)) { // TranslateMemoryDecoration added Restrict decoration already. if (!type.getQualifier().isRestrict()) { decorations.push_back(spv::Decoration::Aliased); } } else { decorations.push_back(type.getQualifier().isRestrict() ? spv::Decoration::RestrictPointerEXT : spv::Decoration::AliasedPointerEXT); } } }; for (int f = 0; f < (int)glslFunctions.size(); ++f) { glslang::TIntermAggregate* glslFunction = glslFunctions[f]->getAsAggregate(); if (! glslFunction || glslFunction->getOp() != glslang::EOpFunction) continue; builder.setDebugSourceLocation(glslFunction->getLoc().line, glslFunction->getLoc().getFilename()); if (isShaderEntryPoint(glslFunction)) { // For HLSL, the entry function is actually a compiler generated function to resolve the difference of // entry function signature between HLSL and SPIR-V. So we don't emit debug information for that. if (glslangIntermediate->getSource() != glslang::EShSourceHlsl) { builder.setupFunctionDebugInfo(shaderEntry, glslangIntermediate->getEntryPointMangledName().c_str(), std::vector(), // main function has no param std::vector()); } continue; } // We're on a user function. Set up the basic interface for the function now, // so that it's available to call. Translating the body will happen later. // // Typically (except for a "const in" parameter), an address will be passed to the // function. What it is an address of varies: // // - "in" parameters not marked as "const" can be written to without modifying the calling // argument so that write needs to be to a copy, hence the address of a copy works. // // - "const in" parameters can just be the r-value, as no writes need occur. // // - "out" and "inout" arguments can't be done as pointers to the calling argument, because // GLSL has copy-in/copy-out semantics. They can be handled though with a pointer to a copy. std::vector paramTypes; std::vector paramNames; std::vector> paramDecorations; // list of decorations per parameter glslang::TIntermSequence& parameters = glslFunction->getSequence()[0]->getAsAggregate()->getSequence(); #ifdef ENABLE_HLSL bool implicitThis = (int)parameters.size() > 0 && parameters[0]->getAsSymbolNode()->getName() == glslangIntermediate->implicitThisName; #else bool implicitThis = false; #endif paramDecorations.resize(parameters.size()); for (int p = 0; p < (int)parameters.size(); ++p) { const glslang::TType& paramType = parameters[p]->getAsTyped()->getType(); spv::Id typeId = convertGlslangToSpvType(paramType); if (originalParam(paramType.getQualifier().storage, paramType, implicitThis && p == 0)) typeId = builder.makePointer(TranslateStorageClass(paramType), typeId); else if (writableParam(paramType.getQualifier().storage)) typeId = builder.makePointer(spv::StorageClass::Function, typeId); else rValueParameters.insert(parameters[p]->getAsSymbolNode()->getId()); getParamDecorations(paramDecorations[p], paramType, glslangIntermediate->usingVulkanMemoryModel()); 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(), convertGlslangLinkageToSpv(glslFunction->getLinkType()), paramTypes, paramDecorations, &functionBlock); builder.setupFunctionDebugInfo(function, glslFunction->getName().c_str(), paramTypes, paramNames); if (implicitThis) function->setImplicitThis(); // Track function to emit/call later functionMap[glslFunction->getName().c_str()] = function; // Set the parameter id's for (int p = 0; p < (int)parameters.size(); ++p) { symbolValues[parameters[p]->getAsSymbolNode()->getId()] = function->getParamId(p); // give a name too builder.addName(function->getParamId(p), parameters[p]->getAsSymbolNode()->getName().c_str()); const glslang::TType& paramType = parameters[p]->getAsTyped()->getType(); if (paramType.contains8BitInt()) builder.addCapability(spv::Capability::Int8); if (paramType.contains16BitInt()) builder.addCapability(spv::Capability::Int16); if (paramType.contains16BitFloat()) builder.addCapability(spv::Capability::Float16); } } } // Process all the initializers, while skipping the functions and link objects void TGlslangToSpvTraverser::makeGlobalInitializers(const glslang::TIntermSequence& initializers) { builder.setBuildPoint(shaderEntry->getLastBlock()); for (int i = 0; i < (int)initializers.size(); ++i) { glslang::TIntermAggregate* initializer = initializers[i]->getAsAggregate(); if (initializer && initializer->getOp() != glslang::EOpFunction && initializer->getOp() != glslang::EOpLinkerObjects) { // We're on a top-level node that's not a function. Treat as an initializer, whose // code goes into the beginning of the entry point. initializer->traverse(this); } } } // Walk over all linker objects to create a map for payload and callable data linker objects // and their location to be used during codegen for OpTraceKHR and OpExecuteCallableKHR // This is done here since it is possible that these linker objects are not be referenced in the AST void TGlslangToSpvTraverser::collectRayTracingLinkerObjects() { glslang::TIntermAggregate* linkerObjects = glslangIntermediate->findLinkerObjects(); for (auto& objSeq : linkerObjects->getSequence()) { auto objNode = objSeq->getAsSymbolNode(); if (objNode != nullptr) { if (objNode->getQualifier().hasLocation()) { unsigned int location = objNode->getQualifier().layoutLocation; auto st = objNode->getQualifier().storage; int set; switch (st) { case glslang::EvqPayload: case glslang::EvqPayloadIn: set = 0; break; case glslang::EvqCallableData: case glslang::EvqCallableDataIn: set = 1; break; case glslang::EvqHitObjectAttrNV: set = 2; break; default: set = -1; } if (set != -1) locationToSymbol[set].insert(std::make_pair(location, objNode)); } } } } // Process all the functions, while skipping initializers. void TGlslangToSpvTraverser::visitFunctions(const glslang::TIntermSequence& glslFunctions) { for (int f = 0; f < (int)glslFunctions.size(); ++f) { glslang::TIntermAggregate* node = glslFunctions[f]->getAsAggregate(); if (node && (node->getOp() == glslang::EOpFunction || node->getOp() == glslang::EOpLinkerObjects)) node->traverse(this); } } void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate* node) { // SPIR-V functions should already be in the functionMap from the prepass // that called makeFunctions(). 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& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) { const glslang::TIntermSequence& glslangArguments = node.getSequence(); glslang::TSampler sampler = {}; bool cubeCompare = false; bool f16ShadowCompare = false; if (node.isTexture() || node.isImage()) { sampler = glslangArguments[0]->getAsTyped()->getType().getSampler(); cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow; f16ShadowCompare = sampler.shadow && glslangArguments[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16; } for (int i = 0; i < (int)glslangArguments.size(); ++i) { builder.clearAccessChain(); glslangArguments[i]->traverse(this); // Special case l-value operands bool lvalue = false; switch (node.getOp()) { case glslang::EOpImageAtomicAdd: case glslang::EOpImageAtomicMin: case glslang::EOpImageAtomicMax: case glslang::EOpImageAtomicAnd: case glslang::EOpImageAtomicOr: case glslang::EOpImageAtomicXor: case glslang::EOpImageAtomicExchange: case glslang::EOpImageAtomicCompSwap: case glslang::EOpImageAtomicLoad: case glslang::EOpImageAtomicStore: if (i == 0) lvalue = true; break; case glslang::EOpSparseImageLoad: if ((sampler.ms && i == 3) || (! sampler.ms && i == 2)) lvalue = true; break; case glslang::EOpSparseTexture: if (((cubeCompare || f16ShadowCompare) && i == 3) || (! (cubeCompare || f16ShadowCompare) && i == 2)) lvalue = true; break; case glslang::EOpSparseTextureClamp: if (((cubeCompare || f16ShadowCompare) && i == 4) || (! (cubeCompare || f16ShadowCompare) && i == 3)) lvalue = true; break; case glslang::EOpSparseTextureLod: case glslang::EOpSparseTextureOffset: if ((f16ShadowCompare && i == 4) || (! f16ShadowCompare && i == 3)) lvalue = true; break; case glslang::EOpSparseTextureFetch: if ((sampler.dim != glslang::EsdRect && i == 3) || (sampler.dim == glslang::EsdRect && i == 2)) lvalue = true; break; case glslang::EOpSparseTextureFetchOffset: if ((sampler.dim != glslang::EsdRect && i == 4) || (sampler.dim == glslang::EsdRect && i == 3)) lvalue = true; break; case glslang::EOpSparseTextureLodOffset: case glslang::EOpSparseTextureGrad: case glslang::EOpSparseTextureOffsetClamp: if ((f16ShadowCompare && i == 5) || (! f16ShadowCompare && i == 4)) lvalue = true; break; case glslang::EOpSparseTextureGradOffset: case glslang::EOpSparseTextureGradClamp: if ((f16ShadowCompare && i == 6) || (! f16ShadowCompare && i == 5)) lvalue = true; break; case glslang::EOpSparseTextureGradOffsetClamp: if ((f16ShadowCompare && i == 7) || (! f16ShadowCompare && i == 6)) lvalue = true; break; case glslang::EOpSparseTextureGather: if ((sampler.shadow && i == 3) || (! sampler.shadow && i == 2)) lvalue = true; break; case glslang::EOpSparseTextureGatherOffset: case glslang::EOpSparseTextureGatherOffsets: if ((sampler.shadow && i == 4) || (! sampler.shadow && i == 3)) lvalue = true; break; case glslang::EOpSparseTextureGatherLod: if (i == 3) lvalue = true; break; case glslang::EOpSparseTextureGatherLodOffset: case glslang::EOpSparseTextureGatherLodOffsets: if (i == 4) lvalue = true; break; case glslang::EOpSparseImageLoadLod: if (i == 3) lvalue = true; break; case glslang::EOpImageSampleFootprintNV: if (i == 4) lvalue = true; break; case glslang::EOpImageSampleFootprintClampNV: case glslang::EOpImageSampleFootprintLodNV: if (i == 5) lvalue = true; break; case glslang::EOpImageSampleFootprintGradNV: if (i == 6) lvalue = true; break; case glslang::EOpImageSampleFootprintGradClampNV: if (i == 7) lvalue = true; break; case glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: case glslang::EOpRayQueryGetIntersectionLSSPositionsNV: case glslang::EOpRayQueryGetIntersectionLSSRadiiNV: if (i == 2) lvalue = true; break; case glslang::EOpConstructSaturated: if (i == 0) lvalue = true; break; default: break; } if (lvalue) { spv::Id lvalue_id = builder.accessChainGetLValue(); arguments.push_back(lvalue_id); lvalueCoherentFlags = builder.getAccessChain().coherentFlags; builder.addDecoration(lvalue_id, TranslateNonUniformDecoration(lvalueCoherentFlags)); lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType()); } else { if (i > 0 && glslangArguments[i]->getAsSymbolNode() && glslangArguments[i-1]->getAsSymbolNode() && glslangArguments[i]->getAsSymbolNode()->getId() == glslangArguments[i-1]->getAsSymbolNode()->getId()) { // Reuse the id if possible arguments.push_back(arguments[i-1]); } else { arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType())); } } } } void TGlslangToSpvTraverser::translateArguments(glslang::TIntermUnary& node, std::vector& arguments) { builder.clearAccessChain(); node.getOperand()->traverse(this); arguments.push_back(accessChainLoad(node.getOperand()->getType())); } spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermOperator* node) { if (! node->isImage() && ! node->isTexture()) return spv::NoResult; builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); // Process a GLSL texturing op (will be SPV image) const glslang::TType &imageType = node->getAsAggregate() ? node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType() : node->getAsUnaryNode()->getOperand()->getAsTyped()->getType(); const glslang::TSampler sampler = imageType.getSampler(); bool f16ShadowCompare = (sampler.shadow && node->getAsAggregate()) ? node->getAsAggregate()->getSequence()[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16 : false; const auto signExtensionMask = [&]() { if (builder.getSpvVersion() >= spv::Spv_1_4) { if (sampler.type == glslang::EbtUint) return spv::ImageOperandsMask::ZeroExtend; else if (sampler.type == glslang::EbtInt) return spv::ImageOperandsMask::SignExtend; } return spv::ImageOperandsMask::MaskNone; }; spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags; std::vector arguments; if (node->getAsAggregate()) translateArguments(*node->getAsAggregate(), arguments, lvalueCoherentFlags); else translateArguments(*node->getAsUnaryNode(), arguments); spv::Decoration precision = TranslatePrecisionDecoration(node->getType()); spv::Builder::TextureParameters params = { }; params.sampler = arguments[0]; glslang::TCrackedTextureOp cracked; node->crackTexture(sampler, cracked); const bool isUnsignedResult = node->getType().getBasicType() == glslang::EbtUint; if (builder.isSampledImage(params.sampler) && ((cracked.query && node->getOp() != glslang::EOpTextureQueryLod) || cracked.fragMask || cracked.fetch)) { params.sampler = builder.createUnaryOp(spv::Op::OpImage, builder.getImageType(params.sampler), params.sampler); if (imageType.getQualifier().isNonUniform()) { builder.addDecoration(params.sampler, spv::Decoration::NonUniformEXT); } } // Check for queries if (cracked.query) { switch (node->getOp()) { case glslang::EOpImageQuerySize: case glslang::EOpTextureQuerySize: if (arguments.size() > 1) { params.lod = arguments[1]; return builder.createTextureQueryCall(spv::Op::OpImageQuerySizeLod, params, isUnsignedResult); } else return builder.createTextureQueryCall(spv::Op::OpImageQuerySize, params, isUnsignedResult); case glslang::EOpImageQuerySamples: case glslang::EOpTextureQuerySamples: return builder.createTextureQueryCall(spv::Op::OpImageQuerySamples, params, isUnsignedResult); case glslang::EOpTextureQueryLod: params.coords = arguments[1]; return builder.createTextureQueryCall(spv::Op::OpImageQueryLod, params, isUnsignedResult); case glslang::EOpTextureQueryLevels: return builder.createTextureQueryCall(spv::Op::OpImageQueryLevels, params, isUnsignedResult); case glslang::EOpSparseTexelsResident: return builder.createUnaryOp(spv::Op::OpImageSparseTexelsResident, builder.makeBoolType(), arguments[0]); default: assert(0); break; } } int components = node->getType().getVectorSize(); if (node->getOp() == glslang::EOpImageLoad || node->getOp() == glslang::EOpImageLoadLod || node->getOp() == glslang::EOpTextureFetch || node->getOp() == glslang::EOpTextureFetchOffset) { // These must produce 4 components, per SPIR-V spec. We'll add a conversion constructor if needed. // This will only happen through the HLSL path for operator[], so we do not have to handle e.g. // the EOpTexture/Proj/Lod/etc family. It would be harmless to do so, but would need more logic // here around e.g. which ones return scalars or other types. components = 4; } glslang::TType returnType(node->getType().getBasicType(), glslang::EvqTemporary, components); auto resultType = [&returnType,this]{ return convertGlslangToSpvType(returnType); }; // Check for image functions other than queries if (node->isImage()) { std::vector operands; auto opIt = arguments.begin(); spv::IdImmediate image = { true, *(opIt++) }; operands.push_back(image); // Handle subpass operations // TODO: GLSL should change to have the "MS" only on the type rather than the // built-in function. if (cracked.subpass) { // add on the (0,0) coordinate spv::Id zero = builder.makeIntConstant(0); std::vector comps; comps.push_back(zero); comps.push_back(zero); spv::IdImmediate coord = { true, builder.makeCompositeConstant(builder.makeVectorType(builder.makeIntType(32), 2), comps) }; operands.push_back(coord); spv::IdImmediate imageOperands = { false, spv::ImageOperandsMask::MaskNone }; imageOperands.word = imageOperands.word | (unsigned)signExtensionMask(); if (sampler.isMultiSample()) { imageOperands.word = imageOperands.word | (unsigned)spv::ImageOperandsMask::Sample; } if (imageOperands.word != (unsigned)spv::ImageOperandsMask::MaskNone) { operands.push_back(imageOperands); if (sampler.isMultiSample()) { spv::IdImmediate imageOperand = { true, *(opIt++) }; operands.push_back(imageOperand); } } spv::Id result = builder.createOp(spv::Op::OpImageRead, resultType(), operands); builder.setPrecision(result, precision); return result; } if (cracked.attachmentEXT) { if (opIt != arguments.end()) { spv::IdImmediate sample = { true, *opIt }; operands.push_back(sample); } spv::Id result = builder.createOp(spv::Op::OpColorAttachmentReadEXT, resultType(), operands); builder.addExtension(spv::E_SPV_EXT_shader_tile_image); builder.setPrecision(result, precision); return result; } spv::IdImmediate coord = { true, *(opIt++) }; operands.push_back(coord); if (node->getOp() == glslang::EOpImageLoad || node->getOp() == glslang::EOpImageLoadLod) { spv::ImageOperandsMask mask = spv::ImageOperandsMask::MaskNone; if (sampler.isMultiSample()) { mask = mask | spv::ImageOperandsMask::Sample; } if (cracked.lod) { builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod); builder.addCapability(spv::Capability::ImageReadWriteLodAMD); mask = mask | spv::ImageOperandsMask::Lod; } mask = mask | TranslateImageOperands(TranslateCoherent(imageType)); mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMask::MakeTexelAvailableKHR); mask = mask | signExtensionMask(); if (mask != spv::ImageOperandsMask::MaskNone) { spv::IdImmediate imageOperands = { false, (unsigned int)mask }; operands.push_back(imageOperands); } if (anySet(mask, spv::ImageOperandsMask::Sample)) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } if (anySet(mask, spv::ImageOperandsMask::Lod)) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } if (anySet(mask, spv::ImageOperandsMask::MakeTexelVisibleKHR)) { spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) }; operands.push_back(imageOperand); } if (builder.getImageTypeFormat(builder.getImageType(operands.front().word)) == spv::ImageFormat::Unknown) builder.addCapability(spv::Capability::StorageImageReadWithoutFormat); std::vector result(1, builder.createOp(spv::Op::OpImageRead, resultType(), operands)); builder.setPrecision(result[0], precision); // If needed, add a conversion constructor to the proper size. if (components != node->getType().getVectorSize()) result[0] = builder.createConstructor(precision, result, convertGlslangToSpvType(node->getType())); return result[0]; } else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod) { // Push the texel value before the operands if (sampler.isMultiSample() || cracked.lod) { spv::IdImmediate texel = { true, *(opIt + 1) }; operands.push_back(texel); } else { spv::IdImmediate texel = { true, *opIt }; operands.push_back(texel); } spv::ImageOperandsMask mask = spv::ImageOperandsMask::MaskNone; if (sampler.isMultiSample()) { mask = mask | spv::ImageOperandsMask::Sample; } if (cracked.lod) { builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod); builder.addCapability(spv::Capability::ImageReadWriteLodAMD); mask = mask | spv::ImageOperandsMask::Lod; } mask = mask | TranslateImageOperands(TranslateCoherent(imageType)); mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMask::MakeTexelVisibleKHR); mask = mask | signExtensionMask(); if (mask != spv::ImageOperandsMask::MaskNone) { spv::IdImmediate imageOperands = { false, (unsigned int)mask }; operands.push_back(imageOperands); } if (anySet(mask, spv::ImageOperandsMask::Sample)) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } if (anySet(mask, spv::ImageOperandsMask::Lod)) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } if (anySet(mask, spv::ImageOperandsMask::MakeTexelAvailableKHR)) { spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) }; operands.push_back(imageOperand); } builder.createNoResultOp(spv::Op::OpImageWrite, operands); if (builder.getImageTypeFormat(builder.getImageType(operands.front().word)) == spv::ImageFormat::Unknown) builder.addCapability(spv::Capability::StorageImageWriteWithoutFormat); return spv::NoResult; } else if (node->getOp() == glslang::EOpSparseImageLoad || node->getOp() == glslang::EOpSparseImageLoadLod) { builder.addCapability(spv::Capability::SparseResidency); if (builder.getImageTypeFormat(builder.getImageType(operands.front().word)) == spv::ImageFormat::Unknown) builder.addCapability(spv::Capability::StorageImageReadWithoutFormat); spv::ImageOperandsMask mask = spv::ImageOperandsMask::MaskNone; if (sampler.isMultiSample()) { mask = mask | spv::ImageOperandsMask::Sample; } if (cracked.lod) { builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod); builder.addCapability(spv::Capability::ImageReadWriteLodAMD); mask = mask | spv::ImageOperandsMask::Lod; } mask = mask | TranslateImageOperands(TranslateCoherent(imageType)); mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMask::MakeTexelAvailableKHR); mask = mask | signExtensionMask(); if (mask != spv::ImageOperandsMask::MaskNone) { spv::IdImmediate imageOperands = { false, (unsigned int)mask }; operands.push_back(imageOperands); } if (anySet(mask, spv::ImageOperandsMask::Sample)) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } if (anySet(mask, spv::ImageOperandsMask::Lod)) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } if (anySet(mask, spv::ImageOperandsMask::MakeTexelVisibleKHR)) { spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope( TranslateCoherent(imageType))) }; operands.push_back(imageOperand); } // Create the return type that was a special structure spv::Id texelOut = *opIt; spv::Id typeId0 = resultType(); spv::Id typeId1 = builder.getDerefTypeId(texelOut); spv::Id resultTypeId = builder.makeStructResultType(typeId0, typeId1); spv::Id resultId = builder.createOp(spv::Op::OpImageSparseRead, resultTypeId, operands); // Decode the return type builder.createStore(builder.createCompositeExtract(resultId, typeId1, 1), texelOut); return builder.createCompositeExtract(resultId, typeId0, 0); } else { // Process image atomic operations // GLSL "IMAGE_PARAMS" will involve in constructing an image texel pointer and this pointer, // as the first source operand, is required by SPIR-V atomic operations. // For non-MS, the sample value should be 0 spv::IdImmediate sample = { true, sampler.isMultiSample() ? *(opIt++) : builder.makeUintConstant(0) }; 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::StorageClass::Image, builder.getTypeId(*opIt)); typeProxy = node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType().getSampler().type; } else { resultTypeId = builder.makePointer(spv::StorageClass::Image, resultType()); } spv::Id pointer = builder.createOp(spv::Op::OpImageTexelPointer, resultTypeId, operands); if (imageType.getQualifier().nonUniform) { builder.addDecoration(pointer, spv::Decoration::NonUniformEXT); } std::vector operands; operands.push_back(pointer); for (; opIt != arguments.end(); ++opIt) operands.push_back(*opIt); return createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy, lvalueCoherentFlags, node->getType()); } } // Check for fragment mask functions other than queries if (cracked.fragMask) { assert(sampler.ms); auto opIt = arguments.begin(); std::vector operands; operands.push_back(params.sampler); ++opIt; if (sampler.isSubpass()) { // add on the (0,0) coordinate spv::Id zero = builder.makeIntConstant(0); std::vector comps; comps.push_back(zero); comps.push_back(zero); operands.push_back(builder.makeCompositeConstant( builder.makeVectorType(builder.makeIntType(32), 2), comps)); } for (; opIt != arguments.end(); ++opIt) operands.push_back(*opIt); spv::Op fragMaskOp = spv::Op::OpNop; if (node->getOp() == glslang::EOpFragmentMaskFetch) fragMaskOp = spv::Op::OpFragmentMaskFetchAMD; else if (node->getOp() == glslang::EOpFragmentFetch) fragMaskOp = spv::Op::OpFragmentFetchAMD; builder.addExtension(spv::E_SPV_AMD_shader_fragment_mask); builder.addCapability(spv::Capability::FragmentMaskAMD); return builder.createOp(fragMaskOp, resultType(), operands); } // Check for texture functions other than queries bool sparse = node->isSparseTexture(); bool imageFootprint = node->isImageFootprint(); bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.isArrayed() && sampler.isShadow(); // check for bias argument bool bias = false; if (! cracked.lod && ! cracked.grad && ! cracked.fetch && ! cubeCompare) { int nonBiasArgCount = 2; if (cracked.gather) ++nonBiasArgCount; // comp argument should be present when bias argument is present if (f16ShadowCompare) ++nonBiasArgCount; if (cracked.offset) ++nonBiasArgCount; else if (cracked.offsets) ++nonBiasArgCount; if (cracked.grad) nonBiasArgCount += 2; if (cracked.lodClamp) ++nonBiasArgCount; if (sparse) ++nonBiasArgCount; if (imageFootprint) //Following three extra arguments // int granularity, bool coarse, out gl_TextureFootprint2DNV footprint nonBiasArgCount += 3; if ((int)arguments.size() > nonBiasArgCount) bias = true; } if (cracked.gather) { const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); if (bias || cracked.lod || sourceExtensions.find(glslang::E_GL_AMD_texture_gather_bias_lod) != sourceExtensions.end()) { builder.addExtension(spv::E_SPV_AMD_texture_gather_bias_lod); builder.addCapability(spv::Capability::ImageGatherBiasLodAMD); } } // set the rest of the arguments params.coords = arguments[1]; int extraArgs = 0; bool noImplicitLod = false; // sort out where Dref is coming from if (cubeCompare || f16ShadowCompare) { params.Dref = arguments[2]; ++extraArgs; } else if (sampler.shadow && cracked.gather) { params.Dref = arguments[2]; ++extraArgs; } else if (sampler.shadow) { std::vector indexes; int dRefComp; if (cracked.proj) dRefComp = 2; // "The resulting 3rd component of P in the shadow forms is used as Dref" else dRefComp = builder.getNumComponents(params.coords) - 1; indexes.push_back(dRefComp); params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes); } // lod if (cracked.lod) { params.lod = arguments[2 + extraArgs]; ++extraArgs; } else if (glslangIntermediate->getStage() != EShLangFragment && !(glslangIntermediate->getStage() == EShLangCompute && glslangIntermediate->hasLayoutDerivativeModeNone())) { // we need to invent the default lod for an explicit lod instruction for a non-fragment stage noImplicitLod = true; } // multisample if (sampler.isMultiSample()) { params.sample = arguments[2 + extraArgs]; // For MS, "sample" should be specified ++extraArgs; } // gradient if (cracked.grad) { params.gradX = arguments[2 + extraArgs]; params.gradY = arguments[3 + extraArgs]; extraArgs += 2; } // offset and offsets if (cracked.offset) { params.offset = arguments[2 + extraArgs]; ++extraArgs; } else if (cracked.offsets) { params.offsets = arguments[2 + extraArgs]; ++extraArgs; } // lod clamp if (cracked.lodClamp) { params.lodClamp = arguments[2 + extraArgs]; ++extraArgs; } // sparse if (sparse) { params.texelOut = arguments[2 + extraArgs]; ++extraArgs; } // gather component if (cracked.gather && ! sampler.shadow) { // default component is 0, if missing, otherwise an argument if (2 + extraArgs < (int)arguments.size()) { params.component = arguments[2 + extraArgs]; ++extraArgs; } else params.component = builder.makeIntConstant(0); } spv::Id resultStruct = spv::NoResult; if (imageFootprint) { //Following three extra arguments // int granularity, bool coarse, out gl_TextureFootprint2DNV footprint params.granularity = arguments[2 + extraArgs]; params.coarse = arguments[3 + extraArgs]; resultStruct = arguments[4 + extraArgs]; extraArgs += 3; } // bias if (bias) { params.bias = arguments[2 + extraArgs]; ++extraArgs; } if (imageFootprint) { builder.addExtension(spv::E_SPV_NV_shader_image_footprint); builder.addCapability(spv::Capability::ImageFootprintNV); //resultStructType(OpenGL type) contains 5 elements: //struct gl_TextureFootprint2DNV { // uvec2 anchor; // uvec2 offset; // uvec2 mask; // uint lod; // uint granularity; //}; //or //struct gl_TextureFootprint3DNV { // uvec3 anchor; // uvec3 offset; // uvec2 mask; // uint lod; // uint granularity; //}; spv::Id resultStructType = builder.getContainedTypeId(builder.getTypeId(resultStruct)); 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 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 members; members.push_back(resultType()); for (int i = 0; i < 5; i++) { members.push_back(builder.getContainedTypeId(resultStructType, i)); } spv::Id resType = builder.makeStructType(members, "ResType"); //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(); builder.setAccessChainLValue(resultStruct); //Accessing to a struct we created, no coherent flag is set spv::Builder::AccessChain::CoherentFlags flags; flags.clear(); builder.accessChainPush(builder.makeIntConstant(i), flags, 0); builder.accessChainStore(builder.createCompositeExtract(res, builder.getContainedTypeId(resType, i+1), i+1), TranslateNonUniformDecoration(imageType.getQualifier())); } return builder.createCompositeExtract(res, resultType(), 0); } // projective component (might not to move) // GLSL: "The texture coordinates consumed from P, not including the last component of P, // are divided by the last component of P." // SPIR-V: "... (u [, v] [, w], q)... It may be a vector larger than needed, but all // unused components will appear after all used components." if (cracked.proj) { int projSourceComp = builder.getNumComponents(params.coords) - 1; int projTargetComp; switch (sampler.dim) { case glslang::Esd1D: projTargetComp = 1; break; case glslang::Esd2D: projTargetComp = 2; break; case glslang::EsdRect: projTargetComp = 2; break; default: projTargetComp = projSourceComp; break; } // copy the projective coordinate if we have to if (projTargetComp != projSourceComp) { spv::Id projComp = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), projSourceComp); params.coords = builder.createCompositeInsert(projComp, params.coords, builder.getTypeId(params.coords), projTargetComp); } } // nonprivate if (imageType.getQualifier().nonprivate) { params.nonprivate = true; } // volatile if (imageType.getQualifier().volatil) { params.volatil = true; } if (imageType.getQualifier().nontemporal) { params.nontemporal = true; } std::vector result( 1, builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params, signExtensionMask()) ); if (components != node->getType().getVectorSize()) result[0] = builder.createConstructor(precision, result, convertGlslangToSpvType(node->getType())); return result[0]; } spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAggregate* node) { // Grab the function's pointer from the previously created function spv::Function* function = functionMap[node->getName().c_str()]; if (! function) return 0; const glslang::TIntermSequence& glslangArgs = node->getSequence(); const glslang::TQualifierList& qualifiers = node->getQualifierList(); // See comments in makeFunctions() for details about the semantics for parameter passing. // // These imply we need a four step process: // 1. Evaluate the arguments // 2. Allocate and make copies of in, out, and inout arguments // 3. Make the call // 4. Copy back the results // 1. Evaluate the arguments and their types std::vector lValues; std::vector rValues; std::vector argTypes; for (int a = 0; a < (int)glslangArgs.size(); ++a) { argTypes.push_back(&glslangArgs[a]->getAsTyped()->getType()); // build l-value builder.clearAccessChain(); glslangArgs[a]->traverse(this); // keep outputs and pass-by-originals as l-values, evaluate others as r-values if (originalParam(qualifiers[a], *argTypes[a], function->hasImplicitThis() && a == 0) || writableParam(qualifiers[a])) { // save l-value lValues.push_back(builder.getAccessChain()); } else { // process r-value rValues.push_back(accessChainLoad(*argTypes.back())); } } // Reset source location to the function call location after argument evaluation builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); // 2. Allocate space for anything needing a copy, and if it's "in" or "inout" // copy the original into that space. // // Also, build up the list of actual arguments to pass in for the call int lValueCount = 0; int rValueCount = 0; std::vector spvArgs; for (int a = 0; a < (int)glslangArgs.size(); ++a) { spv::Id arg; if (originalParam(qualifiers[a], *argTypes[a], function->hasImplicitThis() && a == 0)) { builder.setAccessChain(lValues[lValueCount]); arg = builder.accessChainGetLValue(); ++lValueCount; } else if (writableParam(qualifiers[a])) { // need space to hold the copy arg = builder.createVariable(function->getParamPrecision(a), spv::StorageClass::Function, builder.getContainedTypeId(function->getParamType(a)), "param"); if (qualifiers[a] == glslang::EvqIn || qualifiers[a] == glslang::EvqInOut) { // need to copy the input into output space builder.setAccessChain(lValues[lValueCount]); spv::Id copy = accessChainLoad(*argTypes[a]); builder.clearAccessChain(); builder.setAccessChainLValue(arg); multiTypeStore(*argTypes[a], copy); } ++lValueCount; } else { // process r-value, which involves a copy for a type mismatch if (function->getParamType(a) != builder.getTypeId(rValues[rValueCount]) || TranslatePrecisionDecoration(*argTypes[a]) != function->getParamPrecision(a)) { spv::Id argCopy = builder.createVariable(function->getParamPrecision(a), spv::StorageClass::Function, function->getParamType(a), "arg"); builder.clearAccessChain(); builder.setAccessChainLValue(argCopy); multiTypeStore(*argTypes[a], rValues[rValueCount]); arg = builder.createLoad(argCopy, function->getParamPrecision(a)); } else arg = rValues[rValueCount]; ++rValueCount; } spvArgs.push_back(arg); } // 3. Make the call. spv::Id result = builder.createFunctionCall(function, spvArgs); builder.setPrecision(result, TranslatePrecisionDecoration(node->getType())); builder.addDecoration(result, TranslateNonUniformDecoration(node->getType().getQualifier())); // 4. Copy back out an "out" arguments. lValueCount = 0; for (int a = 0; a < (int)glslangArgs.size(); ++a) { if (originalParam(qualifiers[a], *argTypes[a], function->hasImplicitThis() && a == 0)) ++lValueCount; else if (writableParam(qualifiers[a])) { if (qualifiers[a] == glslang::EvqOut || qualifiers[a] == glslang::EvqInOut) { spv::Id copy = builder.createLoad(spvArgs[a], spv::NoPrecision); builder.addDecoration(copy, TranslateNonUniformDecoration(argTypes[a]->getQualifier())); builder.setAccessChain(lValues[lValueCount]); multiTypeStore(*argTypes[a], copy); } ++lValueCount; } } return result; } // Translate AST operation to SPV operation, already having SPV-based operands/types. spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, OpDecorations& decorations, spv::Id typeId, spv::Id left, spv::Id right, glslang::TBasicType typeProxy, bool reduceComparison) { bool isUnsigned = isTypeUnsignedInt(typeProxy); bool isFloat = isTypeFloat(typeProxy); bool isBool = typeProxy == glslang::EbtBool; spv::Op binOp = spv::Op::OpNop; bool needMatchingVectors = true; // for non-matrix ops, would a scalar need to smear to match a vector? bool comparison = false; switch (op) { case glslang::EOpAdd: case glslang::EOpAddAssign: if (isFloat) binOp = spv::Op::OpFAdd; else binOp = spv::Op::OpIAdd; break; case glslang::EOpSub: case glslang::EOpSubAssign: if (isFloat) binOp = spv::Op::OpFSub; else binOp = spv::Op::OpISub; break; case glslang::EOpMul: case glslang::EOpMulAssign: if (isFloat) binOp = spv::Op::OpFMul; else binOp = spv::Op::OpIMul; break; case glslang::EOpVectorTimesScalar: case glslang::EOpVectorTimesScalarAssign: if (isFloat && (builder.isVector(left) || builder.isVector(right) || builder.isCooperativeVector(left) || builder.isCooperativeVector(right))) { if (builder.isVector(right) || builder.isCooperativeVector(right)) std::swap(left, right); assert(builder.isScalar(right)); needMatchingVectors = false; binOp = spv::Op::OpVectorTimesScalar; } else if (isFloat) { binOp = spv::Op::OpFMul; } else if (builder.isCooperativeVector(left) || builder.isCooperativeVector(right)) { if (builder.isCooperativeVector(right)) std::swap(left, right); assert(builder.isScalar(right)); // Construct a cooperative vector from the scalar right = builder.createCompositeConstruct(builder.getTypeId(left), { right }); binOp = spv::Op::OpIMul; } else { binOp = spv::Op::OpIMul; } break; case glslang::EOpVectorTimesMatrix: case glslang::EOpVectorTimesMatrixAssign: binOp = spv::Op::OpVectorTimesMatrix; break; case glslang::EOpMatrixTimesVector: binOp = spv::Op::OpMatrixTimesVector; break; case glslang::EOpMatrixTimesScalar: case glslang::EOpMatrixTimesScalarAssign: binOp = spv::Op::OpMatrixTimesScalar; break; case glslang::EOpMatrixTimesMatrix: case glslang::EOpMatrixTimesMatrixAssign: binOp = spv::Op::OpMatrixTimesMatrix; break; case glslang::EOpOuterProduct: binOp = spv::Op::OpOuterProduct; needMatchingVectors = false; break; case glslang::EOpDiv: case glslang::EOpDivAssign: if (isFloat) binOp = spv::Op::OpFDiv; else if (isUnsigned) binOp = spv::Op::OpUDiv; else binOp = spv::Op::OpSDiv; break; case glslang::EOpMod: case glslang::EOpModAssign: if (isFloat) binOp = spv::Op::OpFMod; else if (isUnsigned) binOp = spv::Op::OpUMod; else binOp = spv::Op::OpSMod; break; case glslang::EOpRightShift: case glslang::EOpRightShiftAssign: if (isUnsigned) binOp = spv::Op::OpShiftRightLogical; else binOp = spv::Op::OpShiftRightArithmetic; break; case glslang::EOpLeftShift: case glslang::EOpLeftShiftAssign: binOp = spv::Op::OpShiftLeftLogical; break; case glslang::EOpAnd: case glslang::EOpAndAssign: binOp = spv::Op::OpBitwiseAnd; break; case glslang::EOpLogicalAnd: needMatchingVectors = false; binOp = spv::Op::OpLogicalAnd; break; case glslang::EOpInclusiveOr: case glslang::EOpInclusiveOrAssign: binOp = spv::Op::OpBitwiseOr; break; case glslang::EOpLogicalOr: needMatchingVectors = false; binOp = spv::Op::OpLogicalOr; break; case glslang::EOpExclusiveOr: case glslang::EOpExclusiveOrAssign: binOp = spv::Op::OpBitwiseXor; break; case glslang::EOpLogicalXor: needMatchingVectors = false; binOp = spv::Op::OpLogicalNotEqual; break; case glslang::EOpAbsDifference: binOp = isUnsigned ? spv::Op::OpAbsUSubINTEL : spv::Op::OpAbsISubINTEL; break; case glslang::EOpAddSaturate: binOp = isUnsigned ? spv::Op::OpUAddSatINTEL : spv::Op::OpIAddSatINTEL; break; case glslang::EOpSubSaturate: binOp = isUnsigned ? spv::Op::OpUSubSatINTEL : spv::Op::OpISubSatINTEL; break; case glslang::EOpAverage: binOp = isUnsigned ? spv::Op::OpUAverageINTEL : spv::Op::OpIAverageINTEL; break; case glslang::EOpAverageRounded: binOp = isUnsigned ? spv::Op::OpUAverageRoundedINTEL : spv::Op::OpIAverageRoundedINTEL; break; case glslang::EOpMul32x16: binOp = isUnsigned ? spv::Op::OpUMul32x16INTEL : spv::Op::OpIMul32x16INTEL; break; case glslang::EOpExpectEXT: binOp = spv::Op::OpExpectKHR; break; case glslang::EOpLessThan: case glslang::EOpGreaterThan: case glslang::EOpLessThanEqual: case glslang::EOpGreaterThanEqual: case glslang::EOpEqual: case glslang::EOpNotEqual: case glslang::EOpVectorEqual: case glslang::EOpVectorNotEqual: comparison = true; break; default: break; } // handle mapped binary operations (should be non-comparison) if (binOp != spv::Op::OpNop) { assert(comparison == false); if (builder.isMatrix(left) || builder.isMatrix(right) || builder.isCooperativeMatrix(left) || builder.isCooperativeMatrix(right)) return createBinaryMatrixOperation(binOp, decorations, typeId, left, right); // No matrix involved; make both operands be the same number of components, if needed if (needMatchingVectors) builder.promoteScalar(decorations.precision, left, right); spv::Id result = builder.createBinOp(binOp, typeId, left, right); decorations.addNoContraction(builder, result); decorations.addNonUniform(builder, result); return builder.setPrecision(result, decorations.precision); } if (! comparison) return 0; // Handle comparison instructions if (reduceComparison && (op == glslang::EOpEqual || op == glslang::EOpNotEqual) && (builder.isVector(left) || builder.isMatrix(left) || builder.isAggregate(left))) { spv::Id result = builder.createCompositeCompare(decorations.precision, left, right, op == glslang::EOpEqual); decorations.addNonUniform(builder, result); return result; } switch (op) { case glslang::EOpLessThan: if (isFloat) binOp = spv::Op::OpFOrdLessThan; else if (isUnsigned) binOp = spv::Op::OpULessThan; else binOp = spv::Op::OpSLessThan; break; case glslang::EOpGreaterThan: if (isFloat) binOp = spv::Op::OpFOrdGreaterThan; else if (isUnsigned) binOp = spv::Op::OpUGreaterThan; else binOp = spv::Op::OpSGreaterThan; break; case glslang::EOpLessThanEqual: if (isFloat) binOp = spv::Op::OpFOrdLessThanEqual; else if (isUnsigned) binOp = spv::Op::OpULessThanEqual; else binOp = spv::Op::OpSLessThanEqual; break; case glslang::EOpGreaterThanEqual: if (isFloat) binOp = spv::Op::OpFOrdGreaterThanEqual; else if (isUnsigned) binOp = spv::Op::OpUGreaterThanEqual; else binOp = spv::Op::OpSGreaterThanEqual; break; case glslang::EOpEqual: case glslang::EOpVectorEqual: if (isFloat) binOp = spv::Op::OpFOrdEqual; else if (isBool) binOp = spv::Op::OpLogicalEqual; else binOp = spv::Op::OpIEqual; break; case glslang::EOpNotEqual: case glslang::EOpVectorNotEqual: if (isFloat) binOp = spv::Op::OpFUnordNotEqual; else if (isBool) binOp = spv::Op::OpLogicalNotEqual; else binOp = spv::Op::OpINotEqual; break; default: break; } if (binOp != spv::Op::OpNop) { spv::Id result = builder.createBinOp(binOp, typeId, left, right); decorations.addNoContraction(builder, result); decorations.addNonUniform(builder, result); return builder.setPrecision(result, decorations.precision); } return 0; } // // Translate AST matrix operation to SPV operation, already having SPV-based operands/types. // These can be any of: // // matrix * scalar // scalar * matrix // matrix * matrix linear algebraic // matrix * vector // vector * matrix // matrix * matrix componentwise // matrix op matrix op in {+, -, /} // matrix op scalar op in {+, -, /} // scalar op matrix op in {+, -, /} // spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, OpDecorations& decorations, spv::Id typeId, spv::Id left, spv::Id right) { bool firstClass = true; // First, handle first-class matrix operations (* and matrix/scalar) switch (op) { case spv::Op::OpFDiv: if (builder.isMatrix(left) && builder.isScalar(right)) { // turn matrix / scalar into a multiply... spv::Id resultType = builder.getTypeId(right); right = builder.createBinOp(spv::Op::OpFDiv, resultType, builder.makeFpConstant(resultType, 1.0), right); op = spv::Op::OpMatrixTimesScalar; } else firstClass = false; break; case spv::Op::OpMatrixTimesScalar: if (builder.isMatrix(right) || builder.isCooperativeMatrix(right)) std::swap(left, right); assert(builder.isScalar(right)); break; case spv::Op::OpVectorTimesMatrix: assert(builder.isVector(left)); assert(builder.isMatrix(right)); break; case spv::Op::OpMatrixTimesVector: assert(builder.isMatrix(left)); assert(builder.isVector(right)); break; case spv::Op::OpMatrixTimesMatrix: assert(builder.isMatrix(left)); assert(builder.isMatrix(right)); break; default: firstClass = false; break; } if (builder.isCooperativeMatrix(left) || builder.isCooperativeMatrix(right)) firstClass = true; if (firstClass) { spv::Id result = builder.createBinOp(op, typeId, left, right); decorations.addNoContraction(builder, result); decorations.addNonUniform(builder, result); return builder.setPrecision(result, decorations.precision); } // Handle component-wise +, -, *, %, and / for all combinations of type. // The result type of all of them is the same type as the (a) matrix operand. // The algorithm is to: // - break the matrix(es) into vectors // - smear any scalar to a vector // - do vector operations // - make a matrix out the vector results switch (op) { case spv::Op::OpFAdd: case spv::Op::OpFSub: case spv::Op::OpFDiv: case spv::Op::OpFMod: case spv::Op::OpFMul: { // one time set up... bool leftMat = builder.isMatrix(left); bool rightMat = builder.isMatrix(right); unsigned int numCols = leftMat ? builder.getNumColumns(left) : builder.getNumColumns(right); int numRows = leftMat ? builder.getNumRows(left) : builder.getNumRows(right); spv::Id scalarType = builder.getScalarTypeId(typeId); spv::Id vecType = builder.makeVectorType(scalarType, numRows); std::vector results; spv::Id smearVec = spv::NoResult; if (builder.isScalar(left)) smearVec = builder.smearScalar(decorations.precision, left, vecType); else if (builder.isScalar(right)) smearVec = builder.smearScalar(decorations.precision, right, vecType); // do each vector op for (unsigned int c = 0; c < numCols; ++c) { std::vector indexes; indexes.push_back(c); spv::Id leftVec = leftMat ? builder.createCompositeExtract( left, vecType, indexes) : smearVec; spv::Id rightVec = rightMat ? builder.createCompositeExtract(right, vecType, indexes) : smearVec; spv::Id result = builder.createBinOp(op, vecType, leftVec, rightVec); decorations.addNoContraction(builder, result); decorations.addNonUniform(builder, result); results.push_back(builder.setPrecision(result, decorations.precision)); } // put the pieces together spv::Id result = builder.setPrecision(builder.createCompositeConstruct(typeId, results), decorations.precision); decorations.addNonUniform(builder, result); return result; } default: assert(0); return spv::NoResult; } } spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDecorations& decorations, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags, const glslang::TType &opType) { spv::Op unaryOp = spv::Op::OpNop; int extBuiltins = -1; int libCall = -1; bool isUnsigned = isTypeUnsignedInt(typeProxy); bool isFloat = isTypeFloat(typeProxy); switch (op) { case glslang::EOpNegative: if (isFloat) { unaryOp = spv::Op::OpFNegate; if (builder.isMatrixType(typeId)) return createUnaryMatrixOperation(unaryOp, decorations, typeId, operand, typeProxy); } else unaryOp = spv::Op::OpSNegate; break; case glslang::EOpLogicalNot: case glslang::EOpVectorLogicalNot: unaryOp = spv::Op::OpLogicalNot; break; case glslang::EOpBitwiseNot: unaryOp = spv::Op::OpNot; break; case glslang::EOpDeterminant: libCall = spv::GLSLstd450Determinant; break; case glslang::EOpMatrixInverse: libCall = spv::GLSLstd450MatrixInverse; break; case glslang::EOpTranspose: unaryOp = spv::Op::OpTranspose; break; case glslang::EOpRadians: libCall = spv::GLSLstd450Radians; break; case glslang::EOpDegrees: libCall = spv::GLSLstd450Degrees; break; case glslang::EOpSin: libCall = spv::GLSLstd450Sin; break; case glslang::EOpCos: libCall = spv::GLSLstd450Cos; break; case glslang::EOpTan: libCall = spv::GLSLstd450Tan; break; case glslang::EOpAcos: libCall = spv::GLSLstd450Acos; break; case glslang::EOpAsin: libCall = spv::GLSLstd450Asin; break; case glslang::EOpAtan: libCall = spv::GLSLstd450Atan; break; case glslang::EOpAcosh: libCall = spv::GLSLstd450Acosh; break; case glslang::EOpAsinh: libCall = spv::GLSLstd450Asinh; break; case glslang::EOpAtanh: libCall = spv::GLSLstd450Atanh; break; case glslang::EOpTanh: libCall = spv::GLSLstd450Tanh; break; case glslang::EOpCosh: libCall = spv::GLSLstd450Cosh; break; case glslang::EOpSinh: libCall = spv::GLSLstd450Sinh; break; case glslang::EOpLength: libCall = spv::GLSLstd450Length; break; case glslang::EOpNormalize: libCall = spv::GLSLstd450Normalize; break; case glslang::EOpExp: libCall = spv::GLSLstd450Exp; break; case glslang::EOpLog: libCall = spv::GLSLstd450Log; break; case glslang::EOpExp2: libCall = spv::GLSLstd450Exp2; break; case glslang::EOpLog2: libCall = spv::GLSLstd450Log2; break; case glslang::EOpSqrt: libCall = spv::GLSLstd450Sqrt; break; case glslang::EOpInverseSqrt: libCall = spv::GLSLstd450InverseSqrt; break; case glslang::EOpFloor: libCall = spv::GLSLstd450Floor; break; case glslang::EOpTrunc: libCall = spv::GLSLstd450Trunc; break; case glslang::EOpRound: libCall = spv::GLSLstd450Round; break; case glslang::EOpRoundEven: libCall = spv::GLSLstd450RoundEven; break; case glslang::EOpCeil: libCall = spv::GLSLstd450Ceil; break; case glslang::EOpFract: libCall = spv::GLSLstd450Fract; break; case glslang::EOpIsNan: unaryOp = spv::Op::OpIsNan; break; case glslang::EOpIsInf: unaryOp = spv::Op::OpIsInf; break; case glslang::EOpIsFinite: unaryOp = spv::Op::OpIsFinite; break; case glslang::EOpFloatBitsToInt: case glslang::EOpFloatBitsToUint: case glslang::EOpIntBitsToFloat: case glslang::EOpUintBitsToFloat: case glslang::EOpDoubleBitsToInt64: case glslang::EOpDoubleBitsToUint64: case glslang::EOpInt64BitsToDouble: case glslang::EOpUint64BitsToDouble: case glslang::EOpFloat16BitsToInt16: case glslang::EOpFloat16BitsToUint16: case glslang::EOpInt16BitsToFloat16: case glslang::EOpUint16BitsToFloat16: unaryOp = spv::Op::OpBitcast; break; case glslang::EOpPackSnorm2x16: libCall = spv::GLSLstd450PackSnorm2x16; break; case glslang::EOpUnpackSnorm2x16: libCall = spv::GLSLstd450UnpackSnorm2x16; break; case glslang::EOpPackUnorm2x16: libCall = spv::GLSLstd450PackUnorm2x16; break; case glslang::EOpUnpackUnorm2x16: libCall = spv::GLSLstd450UnpackUnorm2x16; break; case glslang::EOpPackHalf2x16: libCall = spv::GLSLstd450PackHalf2x16; break; case glslang::EOpUnpackHalf2x16: libCall = spv::GLSLstd450UnpackHalf2x16; break; case glslang::EOpPackSnorm4x8: libCall = spv::GLSLstd450PackSnorm4x8; break; case glslang::EOpUnpackSnorm4x8: libCall = spv::GLSLstd450UnpackSnorm4x8; break; case glslang::EOpPackUnorm4x8: libCall = spv::GLSLstd450PackUnorm4x8; break; case glslang::EOpUnpackUnorm4x8: libCall = spv::GLSLstd450UnpackUnorm4x8; break; case glslang::EOpPackDouble2x32: libCall = spv::GLSLstd450PackDouble2x32; break; case glslang::EOpUnpackDouble2x32: libCall = spv::GLSLstd450UnpackDouble2x32; break; case glslang::EOpPackInt2x32: case glslang::EOpUnpackInt2x32: case glslang::EOpPackUint2x32: case glslang::EOpUnpackUint2x32: case glslang::EOpPack16: case glslang::EOpPack32: case glslang::EOpPack64: case glslang::EOpUnpack32: case glslang::EOpUnpack16: case glslang::EOpUnpack8: case glslang::EOpPackInt2x16: case glslang::EOpUnpackInt2x16: case glslang::EOpPackUint2x16: case glslang::EOpUnpackUint2x16: case glslang::EOpPackInt4x16: case glslang::EOpUnpackInt4x16: case glslang::EOpPackUint4x16: case glslang::EOpUnpackUint4x16: case glslang::EOpPackFloat2x16: case glslang::EOpUnpackFloat2x16: unaryOp = spv::Op::OpBitcast; break; case glslang::EOpDPdx: unaryOp = spv::Op::OpDPdx; break; case glslang::EOpDPdy: unaryOp = spv::Op::OpDPdy; break; case glslang::EOpFwidth: unaryOp = spv::Op::OpFwidth; break; case glslang::EOpAny: unaryOp = spv::Op::OpAny; break; case glslang::EOpAll: unaryOp = spv::Op::OpAll; break; case glslang::EOpAbs: if (isFloat) libCall = spv::GLSLstd450FAbs; else libCall = spv::GLSLstd450SAbs; break; case glslang::EOpSign: if (isFloat) libCall = spv::GLSLstd450FSign; else libCall = spv::GLSLstd450SSign; break; case glslang::EOpDPdxFine: unaryOp = spv::Op::OpDPdxFine; break; case glslang::EOpDPdyFine: unaryOp = spv::Op::OpDPdyFine; break; case glslang::EOpFwidthFine: unaryOp = spv::Op::OpFwidthFine; break; case glslang::EOpDPdxCoarse: unaryOp = spv::Op::OpDPdxCoarse; break; case glslang::EOpDPdyCoarse: unaryOp = spv::Op::OpDPdyCoarse; break; case glslang::EOpFwidthCoarse: unaryOp = spv::Op::OpFwidthCoarse; break; case glslang::EOpRayQueryProceed: unaryOp = spv::Op::OpRayQueryProceedKHR; break; case glslang::EOpRayQueryGetRayTMin: unaryOp = spv::Op::OpRayQueryGetRayTMinKHR; break; case glslang::EOpRayQueryGetRayFlags: unaryOp = spv::Op::OpRayQueryGetRayFlagsKHR; break; case glslang::EOpRayQueryGetWorldRayOrigin: unaryOp = spv::Op::OpRayQueryGetWorldRayOriginKHR; break; case glslang::EOpRayQueryGetWorldRayDirection: unaryOp = spv::Op::OpRayQueryGetWorldRayDirectionKHR; break; case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque: unaryOp = spv::Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR; break; case glslang::EOpInterpolateAtCentroid: if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); libCall = spv::GLSLstd450InterpolateAtCentroid; break; case glslang::EOpAtomicCounterIncrement: case glslang::EOpAtomicCounterDecrement: case glslang::EOpAtomicCounter: { // Handle all of the atomics in one place, in createAtomicOperation() std::vector operands; operands.push_back(operand); return createAtomicOperation(op, decorations.precision, typeId, operands, typeProxy, lvalueCoherentFlags, opType); } case glslang::EOpBitFieldReverse: unaryOp = spv::Op::OpBitReverse; break; case glslang::EOpBitCount: unaryOp = spv::Op::OpBitCount; break; case glslang::EOpFindLSB: libCall = spv::GLSLstd450FindILsb; break; case glslang::EOpFindMSB: if (isUnsigned) libCall = spv::GLSLstd450FindUMsb; else libCall = spv::GLSLstd450FindSMsb; break; case glslang::EOpCountLeadingZeros: builder.addCapability(spv::Capability::IntegerFunctions2INTEL); builder.addExtension("SPV_INTEL_shader_integer_functions2"); unaryOp = spv::Op::OpUCountLeadingZerosINTEL; break; case glslang::EOpCountTrailingZeros: builder.addCapability(spv::Capability::IntegerFunctions2INTEL); builder.addExtension("SPV_INTEL_shader_integer_functions2"); unaryOp = spv::Op::OpUCountTrailingZerosINTEL; break; case glslang::EOpBallot: case glslang::EOpReadFirstInvocation: case glslang::EOpAnyInvocation: case glslang::EOpAllInvocations: case glslang::EOpAllInvocationsEqual: case glslang::EOpMinInvocations: case glslang::EOpMaxInvocations: case glslang::EOpAddInvocations: case glslang::EOpMinInvocationsNonUniform: case glslang::EOpMaxInvocationsNonUniform: case glslang::EOpAddInvocationsNonUniform: case glslang::EOpMinInvocationsInclusiveScan: case glslang::EOpMaxInvocationsInclusiveScan: case glslang::EOpAddInvocationsInclusiveScan: case glslang::EOpMinInvocationsInclusiveScanNonUniform: case glslang::EOpMaxInvocationsInclusiveScanNonUniform: case glslang::EOpAddInvocationsInclusiveScanNonUniform: case glslang::EOpMinInvocationsExclusiveScan: case glslang::EOpMaxInvocationsExclusiveScan: case glslang::EOpAddInvocationsExclusiveScan: case glslang::EOpMinInvocationsExclusiveScanNonUniform: case glslang::EOpMaxInvocationsExclusiveScanNonUniform: case glslang::EOpAddInvocationsExclusiveScanNonUniform: { std::vector operands; operands.push_back(operand); return createInvocationsOperation(op, typeId, operands, typeProxy); } case glslang::EOpSubgroupAll: case glslang::EOpSubgroupAny: case glslang::EOpSubgroupAllEqual: case glslang::EOpSubgroupBroadcastFirst: case glslang::EOpSubgroupBallot: case glslang::EOpSubgroupInverseBallot: case glslang::EOpSubgroupBallotBitCount: case glslang::EOpSubgroupBallotInclusiveBitCount: case glslang::EOpSubgroupBallotExclusiveBitCount: case glslang::EOpSubgroupBallotFindLSB: case glslang::EOpSubgroupBallotFindMSB: case glslang::EOpSubgroupAdd: case glslang::EOpSubgroupMul: case glslang::EOpSubgroupMin: case glslang::EOpSubgroupMax: case glslang::EOpSubgroupAnd: case glslang::EOpSubgroupOr: case glslang::EOpSubgroupXor: case glslang::EOpSubgroupInclusiveAdd: case glslang::EOpSubgroupInclusiveMul: case glslang::EOpSubgroupInclusiveMin: case glslang::EOpSubgroupInclusiveMax: case glslang::EOpSubgroupInclusiveAnd: case glslang::EOpSubgroupInclusiveOr: case glslang::EOpSubgroupInclusiveXor: case glslang::EOpSubgroupExclusiveAdd: case glslang::EOpSubgroupExclusiveMul: case glslang::EOpSubgroupExclusiveMin: case glslang::EOpSubgroupExclusiveMax: case glslang::EOpSubgroupExclusiveAnd: case glslang::EOpSubgroupExclusiveOr: case glslang::EOpSubgroupExclusiveXor: case glslang::EOpSubgroupQuadSwapHorizontal: case glslang::EOpSubgroupQuadSwapVertical: case glslang::EOpSubgroupQuadSwapDiagonal: case glslang::EOpSubgroupQuadAll: case glslang::EOpSubgroupQuadAny: { std::vector operands; operands.push_back(operand); return createSubgroupOperation(op, typeId, operands, typeProxy); } case glslang::EOpMbcnt: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); libCall = spv::MbcntAMD; break; case glslang::EOpCubeFaceIndex: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_gcn_shader); libCall = spv::CubeFaceIndexAMD; break; case glslang::EOpCubeFaceCoord: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_gcn_shader); libCall = spv::CubeFaceCoordAMD; break; case glslang::EOpSubgroupPartition: unaryOp = spv::Op::OpGroupNonUniformPartitionNV; break; case glslang::EOpConstructReference: unaryOp = spv::Op::OpBitcast; break; case glslang::EOpConvUint64ToAccStruct: case glslang::EOpConvUvec2ToAccStruct: unaryOp = spv::Op::OpConvertUToAccelerationStructureKHR; break; case glslang::EOpHitObjectIsEmptyNV: unaryOp = spv::Op::OpHitObjectIsEmptyNV; break; case glslang::EOpHitObjectIsMissNV: unaryOp = spv::Op::OpHitObjectIsMissNV; break; case glslang::EOpHitObjectIsHitNV: unaryOp = spv::Op::OpHitObjectIsHitNV; break; case glslang::EOpHitObjectGetObjectRayOriginNV: unaryOp = spv::Op::OpHitObjectGetObjectRayOriginNV; break; case glslang::EOpHitObjectGetObjectRayDirectionNV: unaryOp = spv::Op::OpHitObjectGetObjectRayDirectionNV; break; case glslang::EOpHitObjectGetWorldRayOriginNV: unaryOp = spv::Op::OpHitObjectGetWorldRayOriginNV; break; case glslang::EOpHitObjectGetWorldRayDirectionNV: unaryOp = spv::Op::OpHitObjectGetWorldRayDirectionNV; break; case glslang::EOpHitObjectGetObjectToWorldNV: unaryOp = spv::Op::OpHitObjectGetObjectToWorldNV; break; case glslang::EOpHitObjectGetWorldToObjectNV: unaryOp = spv::Op::OpHitObjectGetWorldToObjectNV; break; case glslang::EOpHitObjectGetRayTMinNV: unaryOp = spv::Op::OpHitObjectGetRayTMinNV; break; case glslang::EOpHitObjectGetRayTMaxNV: unaryOp = spv::Op::OpHitObjectGetRayTMaxNV; break; case glslang::EOpHitObjectGetPrimitiveIndexNV: unaryOp = spv::Op::OpHitObjectGetPrimitiveIndexNV; break; case glslang::EOpHitObjectGetInstanceIdNV: unaryOp = spv::Op::OpHitObjectGetInstanceIdNV; break; case glslang::EOpHitObjectGetInstanceCustomIndexNV: unaryOp = spv::Op::OpHitObjectGetInstanceCustomIndexNV; break; case glslang::EOpHitObjectGetGeometryIndexNV: unaryOp = spv::Op::OpHitObjectGetGeometryIndexNV; break; case glslang::EOpHitObjectGetHitKindNV: unaryOp = spv::Op::OpHitObjectGetHitKindNV; break; case glslang::EOpHitObjectGetCurrentTimeNV: unaryOp = spv::Op::OpHitObjectGetCurrentTimeNV; break; case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: unaryOp = spv::Op::OpHitObjectGetShaderBindingTableRecordIndexNV; break; case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: unaryOp = spv::Op::OpHitObjectGetShaderRecordBufferHandleNV; break; case glslang::EOpHitObjectGetClusterIdNV: unaryOp = spv::Op::OpHitObjectGetClusterIdNV; builder.addExtension(spv::E_SPV_NV_cluster_acceleration_structure); builder.addCapability(spv::Capability::ShaderInvocationReorderNV); builder.addCapability(spv::Capability::RayTracingClusterAccelerationStructureNV); break; case glslang::EOpHitObjectGetSpherePositionNV: unaryOp = spv::Op::OpHitObjectGetSpherePositionNV; builder.addExtension(spv::E_SPV_NV_linear_swept_spheres); builder.addCapability(spv::Capability::ShaderInvocationReorderNV); builder.addCapability(spv::Capability::RayTracingSpheresGeometryNV); break; case glslang::EOpHitObjectGetSphereRadiusNV: unaryOp = spv::Op::OpHitObjectGetSphereRadiusNV; builder.addExtension(spv::E_SPV_NV_linear_swept_spheres); builder.addCapability(spv::Capability::ShaderInvocationReorderNV); builder.addCapability(spv::Capability::RayTracingSpheresGeometryNV); break; case glslang::EOpHitObjectIsSphereHitNV: unaryOp = spv::Op::OpHitObjectIsSphereHitNV; builder.addExtension(spv::E_SPV_NV_linear_swept_spheres); builder.addCapability(spv::Capability::ShaderInvocationReorderNV); builder.addCapability(spv::Capability::RayTracingSpheresGeometryNV); break; case glslang::EOpHitObjectIsLSSHitNV: unaryOp = spv::Op::OpHitObjectIsLSSHitNV; builder.addExtension(spv::E_SPV_NV_linear_swept_spheres); builder.addCapability(spv::Capability::ShaderInvocationReorderNV); builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); break; case glslang::EOpFetchMicroTriangleVertexPositionNV: unaryOp = spv::Op::OpFetchMicroTriangleVertexPositionNV; break; case glslang::EOpFetchMicroTriangleVertexBarycentricNV: unaryOp = spv::Op::OpFetchMicroTriangleVertexBarycentricNV; break; case glslang::EOpCopyObject: unaryOp = spv::Op::OpCopyObject; break; case glslang::EOpDepthAttachmentReadEXT: builder.addExtension(spv::E_SPV_EXT_shader_tile_image); builder.addCapability(spv::Capability::TileImageDepthReadAccessEXT); unaryOp = spv::Op::OpDepthAttachmentReadEXT; decorations.precision = spv::NoPrecision; break; case glslang::EOpStencilAttachmentReadEXT: builder.addExtension(spv::E_SPV_EXT_shader_tile_image); builder.addCapability(spv::Capability::TileImageStencilReadAccessEXT); unaryOp = spv::Op::OpStencilAttachmentReadEXT; decorations.precision = spv::Decoration::RelaxedPrecision; break; default: return 0; } spv::Id id; if (libCall >= 0) { std::vector args; args.push_back(operand); id = builder.createBuiltinCall(typeId, extBuiltins >= 0 ? extBuiltins : stdBuiltins, libCall, args); } else { id = builder.createUnaryOp(unaryOp, typeId, operand); } decorations.addNoContraction(builder, id); decorations.addNonUniform(builder, id); return builder.setPrecision(id, decorations.precision); } // Create a unary operation on a matrix spv::Id TGlslangToSpvTraverser::createUnaryMatrixOperation(spv::Op op, OpDecorations& decorations, spv::Id typeId, spv::Id operand, glslang::TBasicType /* typeProxy */) { // Handle unary operations vector by vector. // The result type is the same type as the original type. // The algorithm is to: // - break the matrix into vectors // - apply the operation to each vector // - make a matrix out the vector results // get the types sorted out int numCols = builder.getNumColumns(operand); int numRows = builder.getNumRows(operand); spv::Id srcVecType = builder.makeVectorType(builder.getScalarTypeId(builder.getTypeId(operand)), numRows); spv::Id destVecType = builder.makeVectorType(builder.getScalarTypeId(typeId), numRows); std::vector results; // do each vector op for (int c = 0; c < numCols; ++c) { std::vector indexes; indexes.push_back(c); spv::Id srcVec = builder.createCompositeExtract(operand, srcVecType, indexes); spv::Id destVec = builder.createUnaryOp(op, destVecType, srcVec); decorations.addNoContraction(builder, destVec); decorations.addNonUniform(builder, destVec); results.push_back(builder.setPrecision(destVec, decorations.precision)); } // put the pieces together spv::Id result = builder.setPrecision(builder.createCompositeConstruct(typeId, results), decorations.precision); decorations.addNonUniform(builder, result); return result; } // For converting integers where both the bitwidth and the signedness could // change, but only do the width change here. The caller is still responsible // for the signedness conversion. // destType is the final type that will be converted to, but this function // may only be doing part of that conversion. spv::Id TGlslangToSpvTraverser::createIntWidthConversion(spv::Id operand, int vectorSize, spv::Id destType, glslang::TBasicType resultBasicType, glslang::TBasicType operandBasicType) { // Get the result type width, based on the type to convert to. int width = GetNumBits(resultBasicType); // Get the conversion operation and result type, // based on the target width, but the source type. spv::Id type = spv::NoType; spv::Op convOp = spv::Op::OpNop; if (isTypeSignedInt(operandBasicType)) { convOp = spv::Op::OpSConvert; type = builder.makeIntType(width); } else { convOp = spv::Op::OpUConvert; type = builder.makeUintType(width); } if (builder.getOpCode(destType) == spv::Op::OpTypeCooperativeVectorNV) { type = builder.makeCooperativeVectorTypeNV(type, builder.getCooperativeVectorNumComponents(destType)); } else if (vectorSize > 0) type = builder.makeVectorType(type, vectorSize); else if (builder.getOpCode(destType) == spv::Op::OpTypeCooperativeMatrixKHR || builder.getOpCode(destType) == spv::Op::OpTypeCooperativeMatrixNV) { type = builder.makeCooperativeMatrixTypeWithSameShape(type, destType); } return builder.createUnaryOp(convOp, type, operand); } spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecorations& decorations, spv::Id destType, spv::Id operand, glslang::TBasicType resultBasicType, glslang::TBasicType operandBasicType) { spv::Op convOp = spv::Op::OpNop; spv::Id zero = 0; spv::Id one = 0; int vectorSize = builder.isVectorType(destType) ? builder.getNumTypeComponents(destType) : 0; if (IsOpNumericConv(op) || op == glslang::EOpConstructSaturated) { if (isTypeSignedInt(operandBasicType) && isTypeFloat(resultBasicType)) { convOp = spv::Op::OpConvertSToF; } if (isTypeUnsignedInt(operandBasicType) && isTypeFloat(resultBasicType)) { convOp = spv::Op::OpConvertUToF; } if (isTypeFloat(operandBasicType) && isTypeSignedInt(resultBasicType)) { convOp = spv::Op::OpConvertFToS; } if (isTypeFloat(operandBasicType) && isTypeUnsignedInt(resultBasicType)) { convOp = spv::Op::OpConvertFToU; } if (isTypeSignedInt(operandBasicType) && isTypeSignedInt(resultBasicType)) { convOp = spv::Op::OpSConvert; } if (isTypeUnsignedInt(operandBasicType) && isTypeUnsignedInt(resultBasicType)) { convOp = spv::Op::OpUConvert; } if (isTypeFloat(operandBasicType) && isTypeFloat(resultBasicType)) { convOp = spv::Op::OpFConvert; if (builder.isMatrixType(destType)) return createUnaryMatrixOperation(convOp, decorations, destType, operand, operandBasicType); } if (isTypeInt(operandBasicType) && isTypeInt(resultBasicType) && isTypeUnsignedInt(operandBasicType) != isTypeUnsignedInt(resultBasicType)) { if (GetNumBits(operandBasicType) != GetNumBits(resultBasicType)) { // OpSConvert/OpUConvert + OpBitCast operand = createIntWidthConversion(operand, vectorSize, destType, resultBasicType, operandBasicType); } if (builder.isInSpecConstCodeGenMode()) { uint32_t bits = GetNumBits(resultBasicType); spv::Id zeroType = builder.makeUintType(bits); if (bits == 64) { zero = builder.makeInt64Constant(zeroType, 0, false); } else { zero = builder.makeIntConstant(zeroType, 0, false); } zero = makeSmearedConstant(zero, vectorSize); // Use OpIAdd, instead of OpBitcast to do the conversion when // generating for OpSpecConstantOp instruction. return builder.createBinOp(spv::Op::OpIAdd, destType, operand, zero); } // For normal run-time conversion instruction, use OpBitcast. convOp = spv::Op::OpBitcast; } if (resultBasicType == glslang::EbtBool) { uint32_t bits = GetNumBits(operandBasicType); if (isTypeInt(operandBasicType)) { spv::Id zeroType = builder.makeUintType(bits); if (bits == 64) { zero = builder.makeInt64Constant(zeroType, 0, false); } else { zero = builder.makeIntConstant(zeroType, 0, false); } zero = makeSmearedConstant(zero, vectorSize); return builder.createBinOp(spv::Op::OpINotEqual, destType, operand, zero); } else { assert(isTypeFloat(operandBasicType)); if (bits == 64) { zero = builder.makeDoubleConstant(0.0); } else if (bits == 32) { zero = builder.makeFloatConstant(0.0); } else { assert(bits == 16); zero = builder.makeFloat16Constant(0.0); } zero = makeSmearedConstant(zero, vectorSize); return builder.createBinOp(spv::Op::OpFUnordNotEqual, destType, operand, zero); } } if (operandBasicType == glslang::EbtBool) { uint32_t bits = GetNumBits(resultBasicType); convOp = spv::Op::OpSelect; if (isTypeInt(resultBasicType)) { spv::Id zeroType = isTypeSignedInt(resultBasicType) ? builder.makeIntType(bits) : builder.makeUintType(bits); if (bits == 64) { zero = builder.makeInt64Constant(zeroType, 0, false); one = builder.makeInt64Constant(zeroType, 1, false); } else { zero = builder.makeIntConstant(zeroType, 0, false); one = builder.makeIntConstant(zeroType, 1, false); } } else { assert(isTypeFloat(resultBasicType)); if (bits == 64) { zero = builder.makeDoubleConstant(0.0); one = builder.makeDoubleConstant(1.0); } else if (bits == 32) { zero = builder.makeFloatConstant(0.0); one = builder.makeFloatConstant(1.0); } else { assert(bits == 16); zero = builder.makeFloat16Constant(0.0); one = builder.makeFloat16Constant(1.0); } } } } if (convOp == spv::Op::OpNop) { switch (op) { case glslang::EOpConvUint64ToPtr: convOp = spv::Op::OpConvertUToPtr; break; case glslang::EOpConvPtrToUint64: convOp = spv::Op::OpConvertPtrToU; break; case glslang::EOpConvPtrToUvec2: case glslang::EOpConvUvec2ToPtr: convOp = spv::Op::OpBitcast; break; default: break; } } spv::Id result = 0; if (convOp == spv::Op::OpNop) return result; if (convOp == spv::Op::OpSelect) { zero = makeSmearedConstant(zero, vectorSize); one = makeSmearedConstant(one, vectorSize); result = builder.createTriOp(convOp, destType, operand, one, zero); } else result = builder.createUnaryOp(convOp, destType, operand); result = builder.setPrecision(result, decorations.precision); decorations.addNonUniform(builder, result); return result; } spv::Id TGlslangToSpvTraverser::makeSmearedConstant(spv::Id constant, int vectorSize) { if (vectorSize == 0) return constant; spv::Id vectorTypeId = builder.makeVectorType(builder.getTypeId(constant), vectorSize); std::vector components; for (int c = 0; c < vectorSize; ++c) components.push_back(constant); return builder.makeCompositeConstant(vectorTypeId, components); } // For glslang ops that map to SPV atomic opCodes spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags, const glslang::TType &opType) { spv::Op opCode = spv::Op::OpNop; switch (op) { case glslang::EOpAtomicAdd: case glslang::EOpImageAtomicAdd: case glslang::EOpAtomicCounterAdd: opCode = spv::Op::OpAtomicIAdd; if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { opCode = spv::Op::OpAtomicFAddEXT; if (typeProxy == glslang::EbtFloat16 && (opType.getVectorSize() == 2 || opType.getVectorSize() == 4)) { builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); builder.addCapability(spv::Capability::AtomicFloat16VectorNV); } else { builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_add); if (typeProxy == glslang::EbtFloat16) { builder.addExtension(spv::E_SPV_EXT_shader_atomic_float16_add); builder.addCapability(spv::Capability::AtomicFloat16AddEXT); } else if (typeProxy == glslang::EbtFloat) { builder.addCapability(spv::Capability::AtomicFloat32AddEXT); } else { builder.addCapability(spv::Capability::AtomicFloat64AddEXT); } } } break; case glslang::EOpAtomicSubtract: case glslang::EOpAtomicCounterSubtract: opCode = spv::Op::OpAtomicISub; break; case glslang::EOpAtomicMin: case glslang::EOpImageAtomicMin: case glslang::EOpAtomicCounterMin: if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { opCode = spv::Op::OpAtomicFMinEXT; if (typeProxy == glslang::EbtFloat16 && (opType.getVectorSize() == 2 || opType.getVectorSize() == 4)) { builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); builder.addCapability(spv::Capability::AtomicFloat16VectorNV); } else { builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); if (typeProxy == glslang::EbtFloat16) builder.addCapability(spv::Capability::AtomicFloat16MinMaxEXT); else if (typeProxy == glslang::EbtFloat) builder.addCapability(spv::Capability::AtomicFloat32MinMaxEXT); else builder.addCapability(spv::Capability::AtomicFloat64MinMaxEXT); } } else if (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) { opCode = spv::Op::OpAtomicUMin; } else { opCode = spv::Op::OpAtomicSMin; } break; case glslang::EOpAtomicMax: case glslang::EOpImageAtomicMax: case glslang::EOpAtomicCounterMax: if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { opCode = spv::Op::OpAtomicFMaxEXT; if (typeProxy == glslang::EbtFloat16 && (opType.getVectorSize() == 2 || opType.getVectorSize() == 4)) { builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); builder.addCapability(spv::Capability::AtomicFloat16VectorNV); } else { builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); if (typeProxy == glslang::EbtFloat16) builder.addCapability(spv::Capability::AtomicFloat16MinMaxEXT); else if (typeProxy == glslang::EbtFloat) builder.addCapability(spv::Capability::AtomicFloat32MinMaxEXT); else builder.addCapability(spv::Capability::AtomicFloat64MinMaxEXT); } } else if (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) { opCode = spv::Op::OpAtomicUMax; } else { opCode = spv::Op::OpAtomicSMax; } break; case glslang::EOpAtomicAnd: case glslang::EOpImageAtomicAnd: case glslang::EOpAtomicCounterAnd: opCode = spv::Op::OpAtomicAnd; break; case glslang::EOpAtomicOr: case glslang::EOpImageAtomicOr: case glslang::EOpAtomicCounterOr: opCode = spv::Op::OpAtomicOr; break; case glslang::EOpAtomicXor: case glslang::EOpImageAtomicXor: case glslang::EOpAtomicCounterXor: opCode = spv::Op::OpAtomicXor; break; case glslang::EOpAtomicExchange: case glslang::EOpImageAtomicExchange: case glslang::EOpAtomicCounterExchange: if ((typeProxy == glslang::EbtFloat16) && (opType.getVectorSize() == 2 || opType.getVectorSize() == 4)) { builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); builder.addCapability(spv::Capability::AtomicFloat16VectorNV); } opCode = spv::Op::OpAtomicExchange; break; case glslang::EOpAtomicCompSwap: case glslang::EOpImageAtomicCompSwap: case glslang::EOpAtomicCounterCompSwap: opCode = spv::Op::OpAtomicCompareExchange; break; case glslang::EOpAtomicCounterIncrement: opCode = spv::Op::OpAtomicIIncrement; break; case glslang::EOpAtomicCounterDecrement: opCode = spv::Op::OpAtomicIDecrement; break; case glslang::EOpAtomicCounter: case glslang::EOpImageAtomicLoad: case glslang::EOpAtomicLoad: opCode = spv::Op::OpAtomicLoad; break; case glslang::EOpAtomicStore: case glslang::EOpImageAtomicStore: opCode = spv::Op::OpAtomicStore; break; default: assert(0); break; } if (typeProxy == glslang::EbtInt64 || typeProxy == glslang::EbtUint64) builder.addCapability(spv::Capability::Int64Atomics); // Sort out the operands // - mapping from glslang -> SPV // - there are extra SPV operands that are optional in glslang // - compare-exchange swaps the value and comparator // - compare-exchange has an extra memory semantics // - EOpAtomicCounterDecrement needs a post decrement spv::Id pointerId = 0, compareId = 0, valueId = 0; // scope defaults to Device in the old model, QueueFamilyKHR in the new model spv::Id scopeId; if (glslangIntermediate->usingVulkanMemoryModel()) { scopeId = builder.makeUintConstant(spv::Scope::QueueFamilyKHR); } else { scopeId = builder.makeUintConstant(spv::Scope::Device); } // semantics default to relaxed spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() && glslangIntermediate->usingVulkanMemoryModel() ? spv::MemorySemanticsMask::Volatile : spv::MemorySemanticsMask::MaskNone); spv::Id semanticsId2 = semanticsId; pointerId = operands[0]; if (opCode == spv::Op::OpAtomicIIncrement || opCode == spv::Op::OpAtomicIDecrement) { // no additional operands } else if (opCode == spv::Op::OpAtomicCompareExchange) { compareId = operands[1]; valueId = operands[2]; if (operands.size() > 3) { scopeId = operands[3]; semanticsId = builder.makeUintConstant( builder.getConstantScalar(operands[4]) | builder.getConstantScalar(operands[5])); semanticsId2 = builder.makeUintConstant( builder.getConstantScalar(operands[6]) | builder.getConstantScalar(operands[7])); } } else if (opCode == spv::Op::OpAtomicLoad) { if (operands.size() > 1) { scopeId = operands[1]; semanticsId = builder.makeUintConstant( builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3])); } } else { // atomic store or RMW valueId = operands[1]; if (operands.size() > 2) { scopeId = operands[2]; semanticsId = builder.makeUintConstant (builder.getConstantScalar(operands[3]) | builder.getConstantScalar(operands[4])); } } // Check for capabilities auto const semanticsImmediate = (spv::MemorySemanticsMask)(builder.getConstantScalar(semanticsId) | builder.getConstantScalar(semanticsId2)); if (anySet(semanticsImmediate, spv::MemorySemanticsMask::MakeAvailableKHR | spv::MemorySemanticsMask::MakeVisibleKHR | spv::MemorySemanticsMask::OutputMemoryKHR | spv::MemorySemanticsMask::Volatile)) { builder.addCapability(spv::Capability::VulkanMemoryModelKHR); } auto const scope = (spv::Scope)builder.getConstantScalar(scopeId); if (scope == spv::Scope::QueueFamily) { builder.addCapability(spv::Capability::VulkanMemoryModelKHR); } if (glslangIntermediate->usingVulkanMemoryModel() && scope == spv::Scope::Device) { builder.addCapability(spv::Capability::VulkanMemoryModelDeviceScopeKHR); } std::vector spvAtomicOperands; // hold the spv operands spvAtomicOperands.reserve(6); spvAtomicOperands.push_back(pointerId); spvAtomicOperands.push_back(scopeId); spvAtomicOperands.push_back(semanticsId); if (opCode == spv::Op::OpAtomicCompareExchange) { spvAtomicOperands.push_back(semanticsId2); spvAtomicOperands.push_back(valueId); spvAtomicOperands.push_back(compareId); } else if (opCode != spv::Op::OpAtomicLoad && opCode != spv::Op::OpAtomicIIncrement && opCode != spv::Op::OpAtomicIDecrement) { spvAtomicOperands.push_back(valueId); } if (opCode == spv::Op::OpAtomicStore) { builder.createNoResultOp(opCode, spvAtomicOperands); return 0; } else { spv::Id resultId = builder.createOp(opCode, typeId, spvAtomicOperands); // GLSL and HLSL atomic-counter decrement return post-decrement value, // while SPIR-V returns pre-decrement value. Translate between these semantics. if (op == glslang::EOpAtomicCounterDecrement) resultId = builder.createBinOp(spv::Op::OpISub, typeId, resultId, builder.makeIntConstant(1)); return resultId; } } // Create group invocation operations. spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { bool isUnsigned = isTypeUnsignedInt(typeProxy); bool isFloat = isTypeFloat(typeProxy); spv::Op opCode = spv::Op::OpNop; std::vector spvGroupOperands; spv::GroupOperation groupOperation = spv::GroupOperation::Max; if (op == glslang::EOpBallot || op == glslang::EOpReadFirstInvocation || op == glslang::EOpReadInvocation) { builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::Capability::SubgroupBallotKHR); } else if (op == glslang::EOpAnyInvocation || op == glslang::EOpAllInvocations || op == glslang::EOpAllInvocationsEqual) { builder.addExtension(spv::E_SPV_KHR_subgroup_vote); builder.addCapability(spv::Capability::SubgroupVoteKHR); } else { builder.addCapability(spv::Capability::Groups); if (op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpAddInvocationsNonUniform || op == glslang::EOpMinInvocationsInclusiveScanNonUniform || op == glslang::EOpMaxInvocationsInclusiveScanNonUniform || op == glslang::EOpAddInvocationsInclusiveScanNonUniform || op == glslang::EOpMinInvocationsExclusiveScanNonUniform || op == glslang::EOpMaxInvocationsExclusiveScanNonUniform || op == glslang::EOpAddInvocationsExclusiveScanNonUniform) builder.addExtension(spv::E_SPV_AMD_shader_ballot); switch (op) { case glslang::EOpMinInvocations: case glslang::EOpMaxInvocations: case glslang::EOpAddInvocations: case glslang::EOpMinInvocationsNonUniform: case glslang::EOpMaxInvocationsNonUniform: case glslang::EOpAddInvocationsNonUniform: groupOperation = spv::GroupOperation::Reduce; break; case glslang::EOpMinInvocationsInclusiveScan: case glslang::EOpMaxInvocationsInclusiveScan: case glslang::EOpAddInvocationsInclusiveScan: case glslang::EOpMinInvocationsInclusiveScanNonUniform: case glslang::EOpMaxInvocationsInclusiveScanNonUniform: case glslang::EOpAddInvocationsInclusiveScanNonUniform: groupOperation = spv::GroupOperation::InclusiveScan; break; case glslang::EOpMinInvocationsExclusiveScan: case glslang::EOpMaxInvocationsExclusiveScan: case glslang::EOpAddInvocationsExclusiveScan: case glslang::EOpMinInvocationsExclusiveScanNonUniform: case glslang::EOpMaxInvocationsExclusiveScanNonUniform: case glslang::EOpAddInvocationsExclusiveScanNonUniform: groupOperation = spv::GroupOperation::ExclusiveScan; break; default: break; } spv::IdImmediate scope = { true, builder.makeUintConstant(spv::Scope::Subgroup) }; spvGroupOperands.push_back(scope); if (groupOperation != spv::GroupOperation::Max) { spv::IdImmediate groupOp = { false, (unsigned)groupOperation }; spvGroupOperands.push_back(groupOp); } } for (auto opIt = operands.begin(); opIt != operands.end(); ++opIt) { spv::IdImmediate op = { true, *opIt }; spvGroupOperands.push_back(op); } switch (op) { case glslang::EOpAnyInvocation: opCode = spv::Op::OpSubgroupAnyKHR; break; case glslang::EOpAllInvocations: opCode = spv::Op::OpSubgroupAllKHR; break; case glslang::EOpAllInvocationsEqual: opCode = spv::Op::OpSubgroupAllEqualKHR; break; case glslang::EOpReadInvocation: opCode = spv::Op::OpSubgroupReadInvocationKHR; if (builder.isVectorType(typeId)) return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands); break; case glslang::EOpReadFirstInvocation: opCode = spv::Op::OpSubgroupFirstInvocationKHR; if (builder.isVectorType(typeId)) return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands); break; case glslang::EOpBallot: { // NOTE: According to the spec, the result type of "OpSubgroupBallotKHR" must be a 4 component vector of 32 // bit integer types. The GLSL built-in function "ballotARB()" assumes the maximum number of invocations in // a subgroup is 64. Thus, we have to convert uvec4.xy to uint64_t as follow: // // result = Bitcast(SubgroupBallotKHR(Predicate).xy) // spv::Id uintType = builder.makeUintType(32); spv::Id uvec4Type = builder.makeVectorType(uintType, 4); spv::Id result = builder.createOp(spv::Op::OpSubgroupBallotKHR, uvec4Type, spvGroupOperands); std::vector components; components.push_back(builder.createCompositeExtract(result, uintType, 0)); components.push_back(builder.createCompositeExtract(result, uintType, 1)); spv::Id uvec2Type = builder.makeVectorType(uintType, 2); return builder.createUnaryOp(spv::Op::OpBitcast, typeId, builder.createCompositeConstruct(uvec2Type, components)); } case glslang::EOpMinInvocations: case glslang::EOpMaxInvocations: case glslang::EOpAddInvocations: case glslang::EOpMinInvocationsInclusiveScan: case glslang::EOpMaxInvocationsInclusiveScan: case glslang::EOpAddInvocationsInclusiveScan: case glslang::EOpMinInvocationsExclusiveScan: case glslang::EOpMaxInvocationsExclusiveScan: case glslang::EOpAddInvocationsExclusiveScan: if (op == glslang::EOpMinInvocations || op == glslang::EOpMinInvocationsInclusiveScan || op == glslang::EOpMinInvocationsExclusiveScan) { if (isFloat) opCode = spv::Op::OpGroupFMin; else { if (isUnsigned) opCode = spv::Op::OpGroupUMin; else opCode = spv::Op::OpGroupSMin; } } else if (op == glslang::EOpMaxInvocations || op == glslang::EOpMaxInvocationsInclusiveScan || op == glslang::EOpMaxInvocationsExclusiveScan) { if (isFloat) opCode = spv::Op::OpGroupFMax; else { if (isUnsigned) opCode = spv::Op::OpGroupUMax; else opCode = spv::Op::OpGroupSMax; } } else { if (isFloat) opCode = spv::Op::OpGroupFAdd; else opCode = spv::Op::OpGroupIAdd; } if (builder.isVectorType(typeId)) return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands); break; case glslang::EOpMinInvocationsNonUniform: case glslang::EOpMaxInvocationsNonUniform: case glslang::EOpAddInvocationsNonUniform: case glslang::EOpMinInvocationsInclusiveScanNonUniform: case glslang::EOpMaxInvocationsInclusiveScanNonUniform: case glslang::EOpAddInvocationsInclusiveScanNonUniform: case glslang::EOpMinInvocationsExclusiveScanNonUniform: case glslang::EOpMaxInvocationsExclusiveScanNonUniform: case glslang::EOpAddInvocationsExclusiveScanNonUniform: if (op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMinInvocationsInclusiveScanNonUniform || op == glslang::EOpMinInvocationsExclusiveScanNonUniform) { if (isFloat) opCode = spv::Op::OpGroupFMinNonUniformAMD; else { if (isUnsigned) opCode = spv::Op::OpGroupUMinNonUniformAMD; else opCode = spv::Op::OpGroupSMinNonUniformAMD; } } else if (op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpMaxInvocationsInclusiveScanNonUniform || op == glslang::EOpMaxInvocationsExclusiveScanNonUniform) { if (isFloat) opCode = spv::Op::OpGroupFMaxNonUniformAMD; else { if (isUnsigned) opCode = spv::Op::OpGroupUMaxNonUniformAMD; else opCode = spv::Op::OpGroupSMaxNonUniformAMD; } } else { if (isFloat) opCode = spv::Op::OpGroupFAddNonUniformAMD; else opCode = spv::Op::OpGroupIAddNonUniformAMD; } if (builder.isVectorType(typeId)) return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands); break; default: logger->missingFunctionality("invocation operation"); return spv::NoResult; } assert(opCode != spv::Op::OpNop); return builder.createOp(opCode, typeId, spvGroupOperands); } // Create group invocation operations on a vector spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector& operands) { assert(op == spv::Op::OpGroupFMin || op == spv::Op::OpGroupUMin || op == spv::Op::OpGroupSMin || op == spv::Op::OpGroupFMax || op == spv::Op::OpGroupUMax || op == spv::Op::OpGroupSMax || op == spv::Op::OpGroupFAdd || op == spv::Op::OpGroupIAdd || op == spv::Op::OpGroupBroadcast || op == spv::Op::OpSubgroupReadInvocationKHR || op == spv::Op::OpSubgroupFirstInvocationKHR || op == spv::Op::OpGroupFMinNonUniformAMD || op == spv::Op::OpGroupUMinNonUniformAMD || op == spv::Op::OpGroupSMinNonUniformAMD || op == spv::Op::OpGroupFMaxNonUniformAMD || op == spv::Op::OpGroupUMaxNonUniformAMD || op == spv::Op::OpGroupSMaxNonUniformAMD || op == spv::Op::OpGroupFAddNonUniformAMD || op == spv::Op::OpGroupIAddNonUniformAMD); // Handle group invocation operations scalar by scalar. // The result type is the same type as the original type. // The algorithm is to: // - break the vector into scalars // - apply the operation to each scalar // - make a vector out the scalar results // get the types sorted out int numComponents = builder.getNumComponents(operands[0]); spv::Id scalarType = builder.getScalarTypeId(builder.getTypeId(operands[0])); std::vector results; // do each scalar op for (int comp = 0; comp < numComponents; ++comp) { std::vector indexes; indexes.push_back(comp); spv::IdImmediate scalar = { true, builder.createCompositeExtract(operands[0], scalarType, indexes) }; std::vector spvGroupOperands; if (op == spv::Op::OpSubgroupReadInvocationKHR) { spvGroupOperands.push_back(scalar); spv::IdImmediate operand = { true, operands[1] }; spvGroupOperands.push_back(operand); } else if (op == spv::Op::OpSubgroupFirstInvocationKHR) { spvGroupOperands.push_back(scalar); } else if (op == spv::Op::OpGroupBroadcast) { spv::IdImmediate scope = { true, builder.makeUintConstant(spv::Scope::Subgroup) }; spvGroupOperands.push_back(scope); spvGroupOperands.push_back(scalar); spv::IdImmediate operand = { true, operands[1] }; spvGroupOperands.push_back(operand); } else { spv::IdImmediate scope = { true, builder.makeUintConstant(spv::Scope::Subgroup) }; spvGroupOperands.push_back(scope); spv::IdImmediate groupOp = { false, (unsigned)groupOperation }; spvGroupOperands.push_back(groupOp); spvGroupOperands.push_back(scalar); } results.push_back(builder.createOp(op, scalarType, spvGroupOperands)); } // put the pieces together return builder.createCompositeConstruct(typeId, results); } // Create subgroup invocation operations. spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { // Add the required capabilities. switch (op) { case glslang::EOpSubgroupElect: builder.addCapability(spv::Capability::GroupNonUniform); break; case glslang::EOpSubgroupQuadAll: case glslang::EOpSubgroupQuadAny: builder.addExtension(spv::E_SPV_KHR_quad_control); builder.addCapability(spv::Capability::QuadControlKHR); [[fallthrough]]; case glslang::EOpSubgroupAll: case glslang::EOpSubgroupAny: case glslang::EOpSubgroupAllEqual: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformVote); break; case glslang::EOpSubgroupBroadcast: case glslang::EOpSubgroupBroadcastFirst: case glslang::EOpSubgroupBallot: case glslang::EOpSubgroupInverseBallot: case glslang::EOpSubgroupBallotBitExtract: case glslang::EOpSubgroupBallotBitCount: case glslang::EOpSubgroupBallotInclusiveBitCount: case glslang::EOpSubgroupBallotExclusiveBitCount: case glslang::EOpSubgroupBallotFindLSB: case glslang::EOpSubgroupBallotFindMSB: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformBallot); break; case glslang::EOpSubgroupRotate: case glslang::EOpSubgroupClusteredRotate: builder.addExtension(spv::E_SPV_KHR_subgroup_rotate); builder.addCapability(spv::Capability::GroupNonUniformRotateKHR); break; case glslang::EOpSubgroupShuffle: case glslang::EOpSubgroupShuffleXor: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformShuffle); break; case glslang::EOpSubgroupShuffleUp: case glslang::EOpSubgroupShuffleDown: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformShuffleRelative); break; case glslang::EOpSubgroupAdd: case glslang::EOpSubgroupMul: case glslang::EOpSubgroupMin: case glslang::EOpSubgroupMax: case glslang::EOpSubgroupAnd: case glslang::EOpSubgroupOr: case glslang::EOpSubgroupXor: case glslang::EOpSubgroupInclusiveAdd: case glslang::EOpSubgroupInclusiveMul: case glslang::EOpSubgroupInclusiveMin: case glslang::EOpSubgroupInclusiveMax: case glslang::EOpSubgroupInclusiveAnd: case glslang::EOpSubgroupInclusiveOr: case glslang::EOpSubgroupInclusiveXor: case glslang::EOpSubgroupExclusiveAdd: case glslang::EOpSubgroupExclusiveMul: case glslang::EOpSubgroupExclusiveMin: case glslang::EOpSubgroupExclusiveMax: case glslang::EOpSubgroupExclusiveAnd: case glslang::EOpSubgroupExclusiveOr: case glslang::EOpSubgroupExclusiveXor: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformArithmetic); break; case glslang::EOpSubgroupClusteredAdd: case glslang::EOpSubgroupClusteredMul: case glslang::EOpSubgroupClusteredMin: case glslang::EOpSubgroupClusteredMax: case glslang::EOpSubgroupClusteredAnd: case glslang::EOpSubgroupClusteredOr: case glslang::EOpSubgroupClusteredXor: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformClustered); break; case glslang::EOpSubgroupQuadBroadcast: case glslang::EOpSubgroupQuadSwapHorizontal: case glslang::EOpSubgroupQuadSwapVertical: case glslang::EOpSubgroupQuadSwapDiagonal: builder.addCapability(spv::Capability::GroupNonUniform); builder.addCapability(spv::Capability::GroupNonUniformQuad); break; case glslang::EOpSubgroupPartitionedAdd: case glslang::EOpSubgroupPartitionedMul: case glslang::EOpSubgroupPartitionedMin: case glslang::EOpSubgroupPartitionedMax: case glslang::EOpSubgroupPartitionedAnd: case glslang::EOpSubgroupPartitionedOr: case glslang::EOpSubgroupPartitionedXor: case glslang::EOpSubgroupPartitionedInclusiveAdd: case glslang::EOpSubgroupPartitionedInclusiveMul: case glslang::EOpSubgroupPartitionedInclusiveMin: case glslang::EOpSubgroupPartitionedInclusiveMax: case glslang::EOpSubgroupPartitionedInclusiveAnd: case glslang::EOpSubgroupPartitionedInclusiveOr: case glslang::EOpSubgroupPartitionedInclusiveXor: case glslang::EOpSubgroupPartitionedExclusiveAdd: case glslang::EOpSubgroupPartitionedExclusiveMul: case glslang::EOpSubgroupPartitionedExclusiveMin: case glslang::EOpSubgroupPartitionedExclusiveMax: case glslang::EOpSubgroupPartitionedExclusiveAnd: case glslang::EOpSubgroupPartitionedExclusiveOr: case glslang::EOpSubgroupPartitionedExclusiveXor: builder.addExtension(spv::E_SPV_NV_shader_subgroup_partitioned); builder.addCapability(spv::Capability::GroupNonUniformPartitionedNV); break; default: assert(0 && "Unhandled subgroup operation!"); } const bool isUnsigned = isTypeUnsignedInt(typeProxy); const bool isFloat = isTypeFloat(typeProxy); const bool isBool = typeProxy == glslang::EbtBool; spv::Op opCode = spv::Op::OpNop; // Figure out which opcode to use. switch (op) { case glslang::EOpSubgroupElect: opCode = spv::Op::OpGroupNonUniformElect; break; case glslang::EOpSubgroupQuadAll: opCode = spv::Op::OpGroupNonUniformQuadAllKHR; break; case glslang::EOpSubgroupAll: opCode = spv::Op::OpGroupNonUniformAll; break; case glslang::EOpSubgroupQuadAny: opCode = spv::Op::OpGroupNonUniformQuadAnyKHR; break; case glslang::EOpSubgroupAny: opCode = spv::Op::OpGroupNonUniformAny; break; case glslang::EOpSubgroupAllEqual: opCode = spv::Op::OpGroupNonUniformAllEqual; break; case glslang::EOpSubgroupBroadcast: opCode = spv::Op::OpGroupNonUniformBroadcast; break; case glslang::EOpSubgroupBroadcastFirst: opCode = spv::Op::OpGroupNonUniformBroadcastFirst; break; case glslang::EOpSubgroupBallot: opCode = spv::Op::OpGroupNonUniformBallot; break; case glslang::EOpSubgroupInverseBallot: opCode = spv::Op::OpGroupNonUniformInverseBallot; break; case glslang::EOpSubgroupBallotBitExtract: opCode = spv::Op::OpGroupNonUniformBallotBitExtract; break; case glslang::EOpSubgroupBallotBitCount: case glslang::EOpSubgroupBallotInclusiveBitCount: case glslang::EOpSubgroupBallotExclusiveBitCount: opCode = spv::Op::OpGroupNonUniformBallotBitCount; break; case glslang::EOpSubgroupBallotFindLSB: opCode = spv::Op::OpGroupNonUniformBallotFindLSB; break; case glslang::EOpSubgroupBallotFindMSB: opCode = spv::Op::OpGroupNonUniformBallotFindMSB; break; case glslang::EOpSubgroupShuffle: opCode = spv::Op::OpGroupNonUniformShuffle; break; case glslang::EOpSubgroupShuffleXor: opCode = spv::Op::OpGroupNonUniformShuffleXor; break; case glslang::EOpSubgroupShuffleUp: opCode = spv::Op::OpGroupNonUniformShuffleUp; break; case glslang::EOpSubgroupShuffleDown: opCode = spv::Op::OpGroupNonUniformShuffleDown; break; case glslang::EOpSubgroupRotate: case glslang::EOpSubgroupClusteredRotate: opCode = spv::Op::OpGroupNonUniformRotateKHR; break; case glslang::EOpSubgroupAdd: case glslang::EOpSubgroupInclusiveAdd: case glslang::EOpSubgroupExclusiveAdd: case glslang::EOpSubgroupClusteredAdd: case glslang::EOpSubgroupPartitionedAdd: case glslang::EOpSubgroupPartitionedInclusiveAdd: case glslang::EOpSubgroupPartitionedExclusiveAdd: if (isFloat) { opCode = spv::Op::OpGroupNonUniformFAdd; } else { opCode = spv::Op::OpGroupNonUniformIAdd; } break; case glslang::EOpSubgroupMul: case glslang::EOpSubgroupInclusiveMul: case glslang::EOpSubgroupExclusiveMul: case glslang::EOpSubgroupClusteredMul: case glslang::EOpSubgroupPartitionedMul: case glslang::EOpSubgroupPartitionedInclusiveMul: case glslang::EOpSubgroupPartitionedExclusiveMul: if (isFloat) { opCode = spv::Op::OpGroupNonUniformFMul; } else { opCode = spv::Op::OpGroupNonUniformIMul; } break; case glslang::EOpSubgroupMin: case glslang::EOpSubgroupInclusiveMin: case glslang::EOpSubgroupExclusiveMin: case glslang::EOpSubgroupClusteredMin: case glslang::EOpSubgroupPartitionedMin: case glslang::EOpSubgroupPartitionedInclusiveMin: case glslang::EOpSubgroupPartitionedExclusiveMin: if (isFloat) { opCode = spv::Op::OpGroupNonUniformFMin; } else if (isUnsigned) { opCode = spv::Op::OpGroupNonUniformUMin; } else { opCode = spv::Op::OpGroupNonUniformSMin; } break; case glslang::EOpSubgroupMax: case glslang::EOpSubgroupInclusiveMax: case glslang::EOpSubgroupExclusiveMax: case glslang::EOpSubgroupClusteredMax: case glslang::EOpSubgroupPartitionedMax: case glslang::EOpSubgroupPartitionedInclusiveMax: case glslang::EOpSubgroupPartitionedExclusiveMax: if (isFloat) { opCode = spv::Op::OpGroupNonUniformFMax; } else if (isUnsigned) { opCode = spv::Op::OpGroupNonUniformUMax; } else { opCode = spv::Op::OpGroupNonUniformSMax; } break; case glslang::EOpSubgroupAnd: case glslang::EOpSubgroupInclusiveAnd: case glslang::EOpSubgroupExclusiveAnd: case glslang::EOpSubgroupClusteredAnd: case glslang::EOpSubgroupPartitionedAnd: case glslang::EOpSubgroupPartitionedInclusiveAnd: case glslang::EOpSubgroupPartitionedExclusiveAnd: if (isBool) { opCode = spv::Op::OpGroupNonUniformLogicalAnd; } else { opCode = spv::Op::OpGroupNonUniformBitwiseAnd; } break; case glslang::EOpSubgroupOr: case glslang::EOpSubgroupInclusiveOr: case glslang::EOpSubgroupExclusiveOr: case glslang::EOpSubgroupClusteredOr: case glslang::EOpSubgroupPartitionedOr: case glslang::EOpSubgroupPartitionedInclusiveOr: case glslang::EOpSubgroupPartitionedExclusiveOr: if (isBool) { opCode = spv::Op::OpGroupNonUniformLogicalOr; } else { opCode = spv::Op::OpGroupNonUniformBitwiseOr; } break; case glslang::EOpSubgroupXor: case glslang::EOpSubgroupInclusiveXor: case glslang::EOpSubgroupExclusiveXor: case glslang::EOpSubgroupClusteredXor: case glslang::EOpSubgroupPartitionedXor: case glslang::EOpSubgroupPartitionedInclusiveXor: case glslang::EOpSubgroupPartitionedExclusiveXor: if (isBool) { opCode = spv::Op::OpGroupNonUniformLogicalXor; } else { opCode = spv::Op::OpGroupNonUniformBitwiseXor; } break; case glslang::EOpSubgroupQuadBroadcast: opCode = spv::Op::OpGroupNonUniformQuadBroadcast; break; case glslang::EOpSubgroupQuadSwapHorizontal: case glslang::EOpSubgroupQuadSwapVertical: case glslang::EOpSubgroupQuadSwapDiagonal: opCode = spv::Op::OpGroupNonUniformQuadSwap; break; default: assert(0 && "Unhandled subgroup operation!"); } // get the right Group Operation spv::GroupOperation groupOperation = spv::GroupOperation::Max; switch (op) { default: break; case glslang::EOpSubgroupBallotBitCount: case glslang::EOpSubgroupAdd: case glslang::EOpSubgroupMul: case glslang::EOpSubgroupMin: case glslang::EOpSubgroupMax: case glslang::EOpSubgroupAnd: case glslang::EOpSubgroupOr: case glslang::EOpSubgroupXor: groupOperation = spv::GroupOperation::Reduce; break; case glslang::EOpSubgroupBallotInclusiveBitCount: case glslang::EOpSubgroupInclusiveAdd: case glslang::EOpSubgroupInclusiveMul: case glslang::EOpSubgroupInclusiveMin: case glslang::EOpSubgroupInclusiveMax: case glslang::EOpSubgroupInclusiveAnd: case glslang::EOpSubgroupInclusiveOr: case glslang::EOpSubgroupInclusiveXor: groupOperation = spv::GroupOperation::InclusiveScan; break; case glslang::EOpSubgroupBallotExclusiveBitCount: case glslang::EOpSubgroupExclusiveAdd: case glslang::EOpSubgroupExclusiveMul: case glslang::EOpSubgroupExclusiveMin: case glslang::EOpSubgroupExclusiveMax: case glslang::EOpSubgroupExclusiveAnd: case glslang::EOpSubgroupExclusiveOr: case glslang::EOpSubgroupExclusiveXor: groupOperation = spv::GroupOperation::ExclusiveScan; break; case glslang::EOpSubgroupClusteredAdd: case glslang::EOpSubgroupClusteredMul: case glslang::EOpSubgroupClusteredMin: case glslang::EOpSubgroupClusteredMax: case glslang::EOpSubgroupClusteredAnd: case glslang::EOpSubgroupClusteredOr: case glslang::EOpSubgroupClusteredXor: groupOperation = spv::GroupOperation::ClusteredReduce; break; case glslang::EOpSubgroupPartitionedAdd: case glslang::EOpSubgroupPartitionedMul: case glslang::EOpSubgroupPartitionedMin: case glslang::EOpSubgroupPartitionedMax: case glslang::EOpSubgroupPartitionedAnd: case glslang::EOpSubgroupPartitionedOr: case glslang::EOpSubgroupPartitionedXor: groupOperation = spv::GroupOperation::PartitionedReduceNV; break; case glslang::EOpSubgroupPartitionedInclusiveAdd: case glslang::EOpSubgroupPartitionedInclusiveMul: case glslang::EOpSubgroupPartitionedInclusiveMin: case glslang::EOpSubgroupPartitionedInclusiveMax: case glslang::EOpSubgroupPartitionedInclusiveAnd: case glslang::EOpSubgroupPartitionedInclusiveOr: case glslang::EOpSubgroupPartitionedInclusiveXor: groupOperation = spv::GroupOperation::PartitionedInclusiveScanNV; break; case glslang::EOpSubgroupPartitionedExclusiveAdd: case glslang::EOpSubgroupPartitionedExclusiveMul: case glslang::EOpSubgroupPartitionedExclusiveMin: case glslang::EOpSubgroupPartitionedExclusiveMax: case glslang::EOpSubgroupPartitionedExclusiveAnd: case glslang::EOpSubgroupPartitionedExclusiveOr: case glslang::EOpSubgroupPartitionedExclusiveXor: groupOperation = spv::GroupOperation::PartitionedExclusiveScanNV; break; } // build the instruction std::vector spvGroupOperands; // Every operation begins with the Execution Scope operand. spv::IdImmediate executionScope = { true, builder.makeUintConstant(spv::Scope::Subgroup) }; // All other ops need the execution scope. Quad Control Ops don't need scope, it's always Quad. if (opCode != spv::Op::OpGroupNonUniformQuadAllKHR && opCode != spv::Op::OpGroupNonUniformQuadAnyKHR) { spvGroupOperands.push_back(executionScope); } // Next, for all operations that use a Group Operation, push that as an operand. if (groupOperation != spv::GroupOperation::Max) { spv::IdImmediate groupOperand = { false, (unsigned)groupOperation }; spvGroupOperands.push_back(groupOperand); } // Push back the operands next. for (auto opIt = operands.cbegin(); opIt != operands.cend(); ++opIt) { spv::IdImmediate operand = { true, *opIt }; spvGroupOperands.push_back(operand); } // Some opcodes have additional operands. spv::Id directionId = spv::NoResult; switch (op) { default: break; case glslang::EOpSubgroupQuadSwapHorizontal: directionId = builder.makeUintConstant(0); break; case glslang::EOpSubgroupQuadSwapVertical: directionId = builder.makeUintConstant(1); break; case glslang::EOpSubgroupQuadSwapDiagonal: directionId = builder.makeUintConstant(2); break; } if (directionId != spv::NoResult) { spv::IdImmediate direction = { true, directionId }; spvGroupOperands.push_back(direction); } return builder.createOp(opCode, typeId, spvGroupOperands); } spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { bool isUnsigned = isTypeUnsignedInt(typeProxy); bool isFloat = isTypeFloat(typeProxy); spv::Op opCode = spv::Op::OpNop; int extBuiltins = -1; int libCall = -1; size_t consumedOperands = operands.size(); spv::Id typeId0 = 0; if (consumedOperands > 0) typeId0 = builder.getTypeId(operands[0]); spv::Id typeId1 = 0; if (consumedOperands > 1) typeId1 = builder.getTypeId(operands[1]); spv::Id frexpIntType = 0; switch (op) { case glslang::EOpMin: if (isFloat) libCall = nanMinMaxClamp ? spv::GLSLstd450NMin : spv::GLSLstd450FMin; else if (isUnsigned) libCall = spv::GLSLstd450UMin; else libCall = spv::GLSLstd450SMin; builder.promoteScalar(precision, operands.front(), operands.back()); break; case glslang::EOpModf: { libCall = spv::GLSLstd450ModfStruct; assert(builder.isFloatType(builder.getScalarTypeId(typeId0))); // The returned struct has two members of the same type as the first argument typeId = builder.makeStructResultType(typeId0, typeId0); consumedOperands = 1; } break; case glslang::EOpMax: if (isFloat) libCall = nanMinMaxClamp ? spv::GLSLstd450NMax : spv::GLSLstd450FMax; else if (isUnsigned) libCall = spv::GLSLstd450UMax; else libCall = spv::GLSLstd450SMax; builder.promoteScalar(precision, operands.front(), operands.back()); break; case glslang::EOpPow: libCall = spv::GLSLstd450Pow; break; case glslang::EOpDot: case glslang::EOpDotPackedEXT: case glslang::EOpDotAccSatEXT: case glslang::EOpDotPackedAccSatEXT: { if (builder.isFloatType(builder.getScalarTypeId(typeId0)) || // HLSL supports dot(int,int) which is just a multiply glslangIntermediate->getSource() == glslang::EShSourceHlsl) { if (typeProxy == glslang::EbtBFloat16) { builder.addExtension(spv::E_SPV_KHR_bfloat16); builder.addCapability(spv::Capability::BFloat16DotProductKHR); } opCode = spv::Op::OpDot; } else { builder.addExtension(spv::E_SPV_KHR_integer_dot_product); builder.addCapability(spv::Capability::DotProductKHR); const unsigned int vectorSize = builder.getNumComponents(operands[0]); if (op == glslang::EOpDotPackedEXT || op == glslang::EOpDotPackedAccSatEXT) { builder.addCapability(spv::Capability::DotProductInput4x8BitPackedKHR); } else if (vectorSize == 4 && builder.getScalarTypeWidth(typeId0) == 8) { builder.addCapability(spv::Capability::DotProductInput4x8BitKHR); } else { builder.addCapability(spv::Capability::DotProductInputAllKHR); } const bool type0isSigned = builder.isIntType(builder.getScalarTypeId(typeId0)); const bool type1isSigned = builder.isIntType(builder.getScalarTypeId(typeId1)); const bool accSat = (op == glslang::EOpDotAccSatEXT || op == glslang::EOpDotPackedAccSatEXT); if (!type0isSigned && !type1isSigned) { opCode = accSat ? spv::Op::OpUDotAccSatKHR : spv::Op::OpUDotKHR; } else if (type0isSigned && type1isSigned) { opCode = accSat ? spv::Op::OpSDotAccSatKHR : spv::Op::OpSDotKHR; } else { opCode = accSat ? spv::Op::OpSUDotAccSatKHR : spv::Op::OpSUDotKHR; // the spir-v opcode assumes the operands to be "signed, unsigned" in that order, so swap if needed if (type1isSigned) { std::swap(operands[0], operands[1]); } } std::vector operands2; for (auto &o : operands) { operands2.push_back({true, o}); } if (op == glslang::EOpDotPackedEXT || op == glslang::EOpDotPackedAccSatEXT) { operands2.push_back({false, 0}); } return builder.createOp(opCode, typeId, operands2); } } break; case glslang::EOpAtan: libCall = spv::GLSLstd450Atan2; break; case glslang::EOpClamp: if (isFloat) libCall = nanMinMaxClamp ? spv::GLSLstd450NClamp : spv::GLSLstd450FClamp; else if (isUnsigned) libCall = spv::GLSLstd450UClamp; else libCall = spv::GLSLstd450SClamp; builder.promoteScalar(precision, operands.front(), operands[1]); builder.promoteScalar(precision, operands.front(), operands[2]); break; case glslang::EOpMix: if (! builder.isBoolType(builder.getScalarTypeId(builder.getTypeId(operands.back())))) { assert(isFloat); libCall = spv::GLSLstd450FMix; } else { opCode = spv::Op::OpSelect; std::swap(operands.front(), operands.back()); } builder.promoteScalar(precision, operands.front(), operands.back()); break; case glslang::EOpStep: libCall = spv::GLSLstd450Step; builder.promoteScalar(precision, operands.front(), operands.back()); break; case glslang::EOpSmoothStep: libCall = spv::GLSLstd450SmoothStep; builder.promoteScalar(precision, operands[0], operands[2]); builder.promoteScalar(precision, operands[1], operands[2]); break; case glslang::EOpDistance: libCall = spv::GLSLstd450Distance; break; case glslang::EOpCross: libCall = spv::GLSLstd450Cross; break; case glslang::EOpFaceForward: libCall = spv::GLSLstd450FaceForward; break; case glslang::EOpReflect: libCall = spv::GLSLstd450Reflect; break; case glslang::EOpRefract: libCall = spv::GLSLstd450Refract; break; case glslang::EOpBarrier: { // This is for the extended controlBarrier function, with four operands. // The unextended barrier() goes through createNoArgOperation. assert(operands.size() == 4); auto const executionScope = (spv::Scope)builder.getConstantScalar(operands[0]); auto const memoryScope = (spv::Scope)builder.getConstantScalar(operands[1]); auto const semantics = (spv::MemorySemanticsMask)(builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3])); builder.createControlBarrier(executionScope, memoryScope, semantics); if (anySet(semantics, spv::MemorySemanticsMask::MakeAvailableKHR | spv::MemorySemanticsMask::MakeVisibleKHR | spv::MemorySemanticsMask::OutputMemoryKHR | spv::MemorySemanticsMask::Volatile)) { builder.addCapability(spv::Capability::VulkanMemoryModelKHR); } if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::Scope::Device || memoryScope == spv::Scope::Device)) { builder.addCapability(spv::Capability::VulkanMemoryModelDeviceScopeKHR); } return 0; } break; case glslang::EOpMemoryBarrier: { // This is for the extended memoryBarrier function, with three operands. // The unextended memoryBarrier() goes through createNoArgOperation. assert(operands.size() == 3); auto const memoryScope = (spv::Scope)builder.getConstantScalar(operands[0]); auto const semantics = (spv::MemorySemanticsMask)(builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2])); builder.createMemoryBarrier(memoryScope, semantics); if (anySet(semantics, spv::MemorySemanticsMask::MakeAvailableKHR | spv::MemorySemanticsMask::MakeVisibleKHR | spv::MemorySemanticsMask::OutputMemoryKHR | spv::MemorySemanticsMask::Volatile)) { builder.addCapability(spv::Capability::VulkanMemoryModelKHR); } if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::Scope::Device) { builder.addCapability(spv::Capability::VulkanMemoryModelDeviceScopeKHR); } return 0; } break; case glslang::EOpInterpolateAtSample: if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); libCall = spv::GLSLstd450InterpolateAtSample; break; case glslang::EOpInterpolateAtOffset: if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); libCall = spv::GLSLstd450InterpolateAtOffset; break; case glslang::EOpAddCarry: opCode = spv::Op::OpIAddCarry; typeId = builder.makeStructResultType(typeId0, typeId0); consumedOperands = 2; break; case glslang::EOpSubBorrow: opCode = spv::Op::OpISubBorrow; typeId = builder.makeStructResultType(typeId0, typeId0); consumedOperands = 2; break; case glslang::EOpUMulExtended: opCode = spv::Op::OpUMulExtended; typeId = builder.makeStructResultType(typeId0, typeId0); consumedOperands = 2; break; case glslang::EOpIMulExtended: opCode = spv::Op::OpSMulExtended; typeId = builder.makeStructResultType(typeId0, typeId0); consumedOperands = 2; break; case glslang::EOpBitfieldExtract: if (isUnsigned) opCode = spv::Op::OpBitFieldUExtract; else opCode = spv::Op::OpBitFieldSExtract; break; case glslang::EOpBitfieldInsert: opCode = spv::Op::OpBitFieldInsert; break; case glslang::EOpFma: libCall = spv::GLSLstd450Fma; break; case glslang::EOpFrexp: { libCall = spv::GLSLstd450FrexpStruct; assert(builder.isPointerType(typeId1)); typeId1 = builder.getContainedTypeId(typeId1); int width = builder.getScalarTypeWidth(typeId1); if (width == 16) // Using 16-bit exp operand, enable extension SPV_AMD_gpu_shader_int16 builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16); if (builder.getNumComponents(operands[0]) == 1) frexpIntType = builder.makeIntegerType(width, true); else frexpIntType = builder.makeVectorType(builder.makeIntegerType(width, true), builder.getNumComponents(operands[0])); typeId = builder.makeStructResultType(typeId0, frexpIntType); consumedOperands = 1; } break; case glslang::EOpLdexp: libCall = spv::GLSLstd450Ldexp; break; case glslang::EOpReadInvocation: return createInvocationsOperation(op, typeId, operands, typeProxy); case glslang::EOpSubgroupBroadcast: case glslang::EOpSubgroupBallotBitExtract: case glslang::EOpSubgroupShuffle: case glslang::EOpSubgroupShuffleXor: case glslang::EOpSubgroupShuffleUp: case glslang::EOpSubgroupShuffleDown: case glslang::EOpSubgroupRotate: case glslang::EOpSubgroupClusteredRotate: case glslang::EOpSubgroupClusteredAdd: case glslang::EOpSubgroupClusteredMul: case glslang::EOpSubgroupClusteredMin: case glslang::EOpSubgroupClusteredMax: case glslang::EOpSubgroupClusteredAnd: case glslang::EOpSubgroupClusteredOr: case glslang::EOpSubgroupClusteredXor: case glslang::EOpSubgroupQuadBroadcast: case glslang::EOpSubgroupPartitionedAdd: case glslang::EOpSubgroupPartitionedMul: case glslang::EOpSubgroupPartitionedMin: case glslang::EOpSubgroupPartitionedMax: case glslang::EOpSubgroupPartitionedAnd: case glslang::EOpSubgroupPartitionedOr: case glslang::EOpSubgroupPartitionedXor: case glslang::EOpSubgroupPartitionedInclusiveAdd: case glslang::EOpSubgroupPartitionedInclusiveMul: case glslang::EOpSubgroupPartitionedInclusiveMin: case glslang::EOpSubgroupPartitionedInclusiveMax: case glslang::EOpSubgroupPartitionedInclusiveAnd: case glslang::EOpSubgroupPartitionedInclusiveOr: case glslang::EOpSubgroupPartitionedInclusiveXor: case glslang::EOpSubgroupPartitionedExclusiveAdd: case glslang::EOpSubgroupPartitionedExclusiveMul: case glslang::EOpSubgroupPartitionedExclusiveMin: case glslang::EOpSubgroupPartitionedExclusiveMax: case glslang::EOpSubgroupPartitionedExclusiveAnd: case glslang::EOpSubgroupPartitionedExclusiveOr: case glslang::EOpSubgroupPartitionedExclusiveXor: return createSubgroupOperation(op, typeId, operands, typeProxy); case glslang::EOpSwizzleInvocations: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); libCall = spv::SwizzleInvocationsAMD; break; case glslang::EOpSwizzleInvocationsMasked: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); libCall = spv::SwizzleInvocationsMaskedAMD; break; case glslang::EOpWriteInvocation: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); libCall = spv::WriteInvocationAMD; break; case glslang::EOpMin3: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax); if (isFloat) libCall = spv::FMin3AMD; else { if (isUnsigned) libCall = spv::UMin3AMD; else libCall = spv::SMin3AMD; } break; case glslang::EOpMax3: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax); if (isFloat) libCall = spv::FMax3AMD; else { if (isUnsigned) libCall = spv::UMax3AMD; else libCall = spv::SMax3AMD; } break; case glslang::EOpMid3: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax); if (isFloat) libCall = spv::FMid3AMD; else { if (isUnsigned) libCall = spv::UMid3AMD; else libCall = spv::SMid3AMD; } break; case glslang::EOpInterpolateAtVertex: if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter); libCall = spv::InterpolateAtVertexAMD; break; case glslang::EOpReportIntersection: typeId = builder.makeBoolType(); opCode = spv::Op::OpReportIntersectionKHR; break; case glslang::EOpTraceNV: builder.createNoResultOp(spv::Op::OpTraceNV, operands); return 0; case glslang::EOpTraceRayMotionNV: builder.addExtension(spv::E_SPV_NV_ray_tracing_motion_blur); builder.addCapability(spv::Capability::RayTracingMotionBlurNV); builder.createNoResultOp(spv::Op::OpTraceRayMotionNV, operands); return 0; case glslang::EOpTraceKHR: builder.createNoResultOp(spv::Op::OpTraceRayKHR, operands); return 0; case glslang::EOpExecuteCallableNV: builder.createNoResultOp(spv::Op::OpExecuteCallableNV, operands); return 0; case glslang::EOpExecuteCallableKHR: builder.createNoResultOp(spv::Op::OpExecuteCallableKHR, operands); return 0; case glslang::EOpRayQueryInitialize: builder.createNoResultOp(spv::Op::OpRayQueryInitializeKHR, operands); return 0; case glslang::EOpRayQueryTerminate: builder.createNoResultOp(spv::Op::OpRayQueryTerminateKHR, operands); return 0; case glslang::EOpRayQueryGenerateIntersection: builder.createNoResultOp(spv::Op::OpRayQueryGenerateIntersectionKHR, operands); return 0; case glslang::EOpRayQueryConfirmIntersection: builder.createNoResultOp(spv::Op::OpRayQueryConfirmIntersectionKHR, operands); return 0; case glslang::EOpRayQueryProceed: typeId = builder.makeBoolType(); opCode = spv::Op::OpRayQueryProceedKHR; break; case glslang::EOpRayQueryGetIntersectionType: typeId = builder.makeUintType(32); opCode = spv::Op::OpRayQueryGetIntersectionTypeKHR; break; case glslang::EOpRayQueryGetRayTMin: typeId = builder.makeFloatType(32); opCode = spv::Op::OpRayQueryGetRayTMinKHR; break; case glslang::EOpRayQueryGetRayFlags: typeId = builder.makeIntType(32); opCode = spv::Op::OpRayQueryGetRayFlagsKHR; break; case glslang::EOpRayQueryGetIntersectionT: typeId = builder.makeFloatType(32); opCode = spv::Op::OpRayQueryGetIntersectionTKHR; break; case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex: typeId = builder.makeIntType(32); opCode = spv::Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR; break; case glslang::EOpRayQueryGetIntersectionInstanceId: typeId = builder.makeIntType(32); opCode = spv::Op::OpRayQueryGetIntersectionInstanceIdKHR; break; case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: typeId = builder.makeUintType(32); opCode = spv::Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR; break; case glslang::EOpRayQueryGetIntersectionGeometryIndex: typeId = builder.makeIntType(32); opCode = spv::Op::OpRayQueryGetIntersectionGeometryIndexKHR; break; case glslang::EOpRayQueryGetIntersectionPrimitiveIndex: typeId = builder.makeIntType(32); opCode = spv::Op::OpRayQueryGetIntersectionPrimitiveIndexKHR; break; case glslang::EOpRayQueryGetIntersectionBarycentrics: typeId = builder.makeVectorType(builder.makeFloatType(32), 2); opCode = spv::Op::OpRayQueryGetIntersectionBarycentricsKHR; break; case glslang::EOpRayQueryGetIntersectionFrontFace: typeId = builder.makeBoolType(); opCode = spv::Op::OpRayQueryGetIntersectionFrontFaceKHR; break; case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque: typeId = builder.makeBoolType(); opCode = spv::Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR; break; case glslang::EOpRayQueryGetIntersectionObjectRayDirection: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpRayQueryGetIntersectionObjectRayDirectionKHR; break; case glslang::EOpRayQueryGetIntersectionObjectRayOrigin: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpRayQueryGetIntersectionObjectRayOriginKHR; break; case glslang::EOpRayQueryGetWorldRayDirection: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpRayQueryGetWorldRayDirectionKHR; break; case glslang::EOpRayQueryGetWorldRayOrigin: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpRayQueryGetWorldRayOriginKHR; break; case glslang::EOpRayQueryGetIntersectionObjectToWorld: typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); opCode = spv::Op::OpRayQueryGetIntersectionObjectToWorldKHR; break; case glslang::EOpRayQueryGetIntersectionClusterIdNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpRayQueryGetClusterIdNV; break; case glslang::EOpRayQueryGetIntersectionWorldToObject: typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); opCode = spv::Op::OpRayQueryGetIntersectionWorldToObjectKHR; break; case glslang::EOpRayQueryGetIntersectionSpherePositionNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpRayQueryGetIntersectionSpherePositionNV; break; case glslang::EOpRayQueryGetIntersectionSphereRadiusNV: typeId = builder.makeFloatType(32); opCode = spv::Op::OpRayQueryGetIntersectionSphereRadiusNV; break; case glslang::EOpRayQueryGetIntersectionLSSHitValueNV: typeId = builder.makeFloatType(32); opCode = spv::Op::OpRayQueryGetIntersectionLSSHitValueNV; break; case glslang::EOpRayQueryIsSphereHitNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpRayQueryIsSphereHitNV; break; case glslang::EOpRayQueryIsLSSHitNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpRayQueryIsLSSHitNV; break; case glslang::EOpWritePackedPrimitiveIndices4x8NV: builder.createNoResultOp(spv::Op::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::Op::OpEmitMeshTasksEXT, operands, "post-OpEmitMeshTasksEXT"); return 0; case glslang::EOpSetMeshOutputsEXT: builder.createNoResultOp(spv::Op::OpSetMeshOutputsEXT, operands); return 0; case glslang::EOpCooperativeMatrixMulAddNV: opCode = spv::Op::OpCooperativeMatrixMulAddNV; break; case glslang::EOpHitObjectTraceRayNV: builder.createNoResultOp(spv::Op::OpHitObjectTraceRayNV, operands); return 0; case glslang::EOpHitObjectTraceRayMotionNV: builder.createNoResultOp(spv::Op::OpHitObjectTraceRayMotionNV, operands); return 0; case glslang::EOpHitObjectRecordHitNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordHitNV, operands); return 0; case glslang::EOpHitObjectRecordHitMotionNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordHitMotionNV, operands); return 0; case glslang::EOpHitObjectRecordHitWithIndexNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordHitWithIndexNV, operands); return 0; case glslang::EOpHitObjectRecordHitWithIndexMotionNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordHitWithIndexMotionNV, operands); return 0; case glslang::EOpHitObjectRecordMissNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordMissNV, operands); return 0; case glslang::EOpHitObjectRecordMissMotionNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordMissMotionNV, operands); return 0; case glslang::EOpHitObjectExecuteShaderNV: builder.createNoResultOp(spv::Op::OpHitObjectExecuteShaderNV, operands); return 0; case glslang::EOpHitObjectIsEmptyNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsEmptyNV; break; case glslang::EOpHitObjectIsMissNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsMissNV; break; case glslang::EOpHitObjectIsHitNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsHitNV; break; case glslang::EOpHitObjectIsSphereHitNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsSphereHitNV; break; case glslang::EOpHitObjectIsLSSHitNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsLSSHitNV; break; case glslang::EOpHitObjectGetRayTMinNV: typeId = builder.makeFloatType(32); opCode = spv::Op::OpHitObjectGetRayTMinNV; break; case glslang::EOpHitObjectGetRayTMaxNV: typeId = builder.makeFloatType(32); opCode = spv::Op::OpHitObjectGetRayTMaxNV; break; case glslang::EOpHitObjectGetObjectRayOriginNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpHitObjectGetObjectRayOriginNV; break; case glslang::EOpHitObjectGetObjectRayDirectionNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpHitObjectGetObjectRayDirectionNV; break; case glslang::EOpHitObjectGetWorldRayOriginNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpHitObjectGetWorldRayOriginNV; break; case glslang::EOpHitObjectGetWorldRayDirectionNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpHitObjectGetWorldRayDirectionNV; break; case glslang::EOpHitObjectGetWorldToObjectNV: typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); opCode = spv::Op::OpHitObjectGetWorldToObjectNV; break; case glslang::EOpHitObjectGetObjectToWorldNV: typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); opCode = spv::Op::OpHitObjectGetObjectToWorldNV; break; case glslang::EOpHitObjectGetInstanceCustomIndexNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetInstanceCustomIndexNV; break; case glslang::EOpHitObjectGetInstanceIdNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetInstanceIdNV; break; case glslang::EOpHitObjectGetGeometryIndexNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetGeometryIndexNV; break; case glslang::EOpHitObjectGetPrimitiveIndexNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetPrimitiveIndexNV; break; case glslang::EOpHitObjectGetHitKindNV: typeId = builder.makeIntegerType(32, 0); opCode = spv::Op::OpHitObjectGetHitKindNV; break; case glslang::EOpHitObjectGetCurrentTimeNV: typeId = builder.makeFloatType(32); opCode = spv::Op::OpHitObjectGetCurrentTimeNV; break; case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: typeId = builder.makeIntegerType(32, 0); opCode = spv::Op::OpHitObjectGetShaderBindingTableRecordIndexNV; return 0; case glslang::EOpHitObjectGetAttributesNV: builder.createNoResultOp(spv::Op::OpHitObjectGetAttributesNV, operands); return 0; case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: typeId = builder.makeVectorType(builder.makeUintType(32), 2); opCode = spv::Op::OpHitObjectGetShaderRecordBufferHandleNV; break; case glslang::EOpHitObjectGetClusterIdNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetClusterIdNV; break; case glslang::EOpReorderThreadNV: { if (operands.size() == 2) { builder.createNoResultOp(spv::Op::OpReorderThreadWithHintNV, operands); } else { builder.createNoResultOp(spv::Op::OpReorderThreadWithHitObjectNV, operands); } return 0; } case glslang::EOpImageSampleWeightedQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageSampleWeightedQCOM; addImageProcessingQCOMDecoration(operands[2], spv::Decoration::WeightTextureQCOM); break; case glslang::EOpImageBoxFilterQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageBoxFilterQCOM; break; case glslang::EOpImageBlockMatchSADQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageBlockMatchSADQCOM; addImageProcessingQCOMDecoration(operands[0], spv::Decoration::BlockMatchTextureQCOM); addImageProcessingQCOMDecoration(operands[2], spv::Decoration::BlockMatchTextureQCOM); break; case glslang::EOpImageBlockMatchSSDQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageBlockMatchSSDQCOM; addImageProcessingQCOMDecoration(operands[0], spv::Decoration::BlockMatchTextureQCOM); addImageProcessingQCOMDecoration(operands[2], spv::Decoration::BlockMatchTextureQCOM); break; case glslang::EOpFetchMicroTriangleVertexBarycentricNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 2); opCode = spv::Op::OpFetchMicroTriangleVertexBarycentricNV; break; case glslang::EOpFetchMicroTriangleVertexPositionNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpFetchMicroTriangleVertexPositionNV; break; case glslang::EOpImageBlockMatchWindowSSDQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageBlockMatchWindowSSDQCOM; addImageProcessing2QCOMDecoration(operands[0], false); addImageProcessing2QCOMDecoration(operands[2], false); break; case glslang::EOpImageBlockMatchWindowSADQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageBlockMatchWindowSADQCOM; addImageProcessing2QCOMDecoration(operands[0], false); addImageProcessing2QCOMDecoration(operands[2], false); break; case glslang::EOpImageBlockMatchGatherSSDQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageBlockMatchGatherSSDQCOM; addImageProcessing2QCOMDecoration(operands[0], true); addImageProcessing2QCOMDecoration(operands[2], true); break; case glslang::EOpImageBlockMatchGatherSADQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageBlockMatchGatherSADQCOM; addImageProcessing2QCOMDecoration(operands[0], true); addImageProcessing2QCOMDecoration(operands[2], true); break; case glslang::EOpCreateTensorLayoutNV: return builder.createOp(spv::Op::OpCreateTensorLayoutNV, typeId, std::vector{}); case glslang::EOpCreateTensorViewNV: return builder.createOp(spv::Op::OpCreateTensorViewNV, typeId, std::vector{}); case glslang::EOpTensorLayoutSetBlockSizeNV: opCode = spv::Op::OpTensorLayoutSetBlockSizeNV; break; case glslang::EOpTensorLayoutSetDimensionNV: opCode = spv::Op::OpTensorLayoutSetDimensionNV; break; case glslang::EOpTensorLayoutSetStrideNV: opCode = spv::Op::OpTensorLayoutSetStrideNV; break; case glslang::EOpTensorLayoutSliceNV: opCode = spv::Op::OpTensorLayoutSliceNV; break; case glslang::EOpTensorLayoutSetClampValueNV: opCode = spv::Op::OpTensorLayoutSetClampValueNV; break; case glslang::EOpTensorViewSetDimensionNV: opCode = spv::Op::OpTensorViewSetDimensionNV; break; case glslang::EOpTensorViewSetStrideNV: opCode = spv::Op::OpTensorViewSetStrideNV; break; case glslang::EOpTensorViewSetClipNV: opCode = spv::Op::OpTensorViewSetClipNV; break; default: return 0; } spv::Id id = 0; if (libCall >= 0) { // Use an extended instruction from the standard library. // Construct the call arguments, without modifying the original operands vector. // We might need the remaining arguments, e.g. in the EOpFrexp case. std::vector callArguments(operands.begin(), operands.begin() + consumedOperands); id = builder.createBuiltinCall(typeId, extBuiltins >= 0 ? extBuiltins : stdBuiltins, libCall, callArguments); } else if (opCode == spv::Op::OpDot && !isFloat) { // int dot(int, int) // NOTE: never called for scalar/vector1, this is turned into simple mul before this can be reached const int componentCount = builder.getNumComponents(operands[0]); spv::Id mulOp = builder.createBinOp(spv::Op::OpIMul, builder.getTypeId(operands[0]), operands[0], operands[1]); builder.setPrecision(mulOp, precision); id = builder.createCompositeExtract(mulOp, typeId, 0); for (int i = 1; i < componentCount; ++i) { builder.setPrecision(id, precision); id = builder.createBinOp(spv::Op::OpIAdd, typeId, id, builder.createCompositeExtract(mulOp, typeId, i)); } } else { switch (consumedOperands) { case 0: // should all be handled by visitAggregate and createNoArgOperation assert(0); return 0; case 1: // should all be handled by createUnaryOperation assert(0); return 0; case 2: id = builder.createBinOp(opCode, typeId, operands[0], operands[1]); break; default: // anything 3 or over doesn't have l-value operands, so all should be consumed assert(consumedOperands == operands.size()); id = builder.createOp(opCode, typeId, operands); break; } } // Decode the return types that were structures switch (op) { case glslang::EOpAddCarry: case glslang::EOpSubBorrow: builder.createStore(builder.createCompositeExtract(id, typeId0, 1), operands[2]); id = builder.createCompositeExtract(id, typeId0, 0); break; case glslang::EOpUMulExtended: case glslang::EOpIMulExtended: builder.createStore(builder.createCompositeExtract(id, typeId0, 0), operands[3]); builder.createStore(builder.createCompositeExtract(id, typeId0, 1), operands[2]); break; case glslang::EOpModf: { assert(operands.size() == 2); builder.createStore(builder.createCompositeExtract(id, typeId0, 1), operands[1]); id = builder.createCompositeExtract(id, typeId0, 0); } break; case glslang::EOpFrexp: { assert(operands.size() == 2); if (builder.isFloatType(builder.getScalarTypeId(typeId1))) { // "exp" is floating-point type (from HLSL intrinsic) spv::Id member1 = builder.createCompositeExtract(id, frexpIntType, 1); member1 = builder.createUnaryOp(spv::Op::OpConvertSToF, typeId1, member1); builder.createStore(member1, operands[1]); } else // "exp" is integer type (from GLSL built-in function) builder.createStore(builder.createCompositeExtract(id, frexpIntType, 1), operands[1]); id = builder.createCompositeExtract(id, typeId0, 0); } break; default: break; } return builder.setPrecision(id, precision); } // Intrinsics with no arguments (or no return value, and no precision). spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId) { // GLSL memory barriers use queuefamily scope in new model, device scope in old model spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? spv::Scope::QueueFamilyKHR : spv::Scope::Device; switch (op) { case glslang::EOpBarrier: if (glslangIntermediate->getStage() == EShLangTessControl) { if (glslangIntermediate->usingVulkanMemoryModel()) { builder.createControlBarrier(spv::Scope::Workgroup, spv::Scope::Workgroup, spv::MemorySemanticsMask::OutputMemoryKHR | spv::MemorySemanticsMask::AcquireRelease); builder.addCapability(spv::Capability::VulkanMemoryModelKHR); } else { builder.createControlBarrier(spv::Scope::Workgroup, spv::Scope::Invocation, spv::MemorySemanticsMask::MaskNone); } } else { builder.createControlBarrier(spv::Scope::Workgroup, spv::Scope::Workgroup, spv::MemorySemanticsMask::WorkgroupMemory | spv::MemorySemanticsMask::AcquireRelease); } return 0; case glslang::EOpMemoryBarrier: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAllMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpMemoryBarrierBuffer: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsMask::UniformMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpMemoryBarrierShared: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsMask::WorkgroupMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpGroupMemoryBarrier: builder.createMemoryBarrier(spv::Scope::Workgroup, spv::MemorySemanticsAllMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpMemoryBarrierAtomicCounter: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsMask::AtomicCounterMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpMemoryBarrierImage: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsMask::ImageMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpAllMemoryBarrierWithGroupSync: builder.createControlBarrier(spv::Scope::Workgroup, spv::Scope::Device, spv::MemorySemanticsAllMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpDeviceMemoryBarrier: builder.createMemoryBarrier(spv::Scope::Device, spv::MemorySemanticsMask::UniformMemory | spv::MemorySemanticsMask::ImageMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpDeviceMemoryBarrierWithGroupSync: builder.createControlBarrier(spv::Scope::Workgroup, spv::Scope::Device, spv::MemorySemanticsMask::UniformMemory | spv::MemorySemanticsMask::ImageMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpWorkgroupMemoryBarrier: builder.createMemoryBarrier(spv::Scope::Workgroup, spv::MemorySemanticsMask::WorkgroupMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpWorkgroupMemoryBarrierWithGroupSync: builder.createControlBarrier(spv::Scope::Workgroup, spv::Scope::Workgroup, spv::MemorySemanticsMask::WorkgroupMemory | spv::MemorySemanticsMask::AcquireRelease); return 0; case glslang::EOpSubgroupBarrier: builder.createControlBarrier(spv::Scope::Subgroup, spv::Scope::Subgroup, spv::MemorySemanticsAllMemory | spv::MemorySemanticsMask::AcquireRelease); return spv::NoResult; case glslang::EOpSubgroupMemoryBarrier: builder.createMemoryBarrier(spv::Scope::Subgroup, spv::MemorySemanticsAllMemory | spv::MemorySemanticsMask::AcquireRelease); return spv::NoResult; case glslang::EOpSubgroupMemoryBarrierBuffer: builder.createMemoryBarrier(spv::Scope::Subgroup, spv::MemorySemanticsMask::UniformMemory | spv::MemorySemanticsMask::AcquireRelease); return spv::NoResult; case glslang::EOpSubgroupMemoryBarrierImage: builder.createMemoryBarrier(spv::Scope::Subgroup, spv::MemorySemanticsMask::ImageMemory | spv::MemorySemanticsMask::AcquireRelease); return spv::NoResult; case glslang::EOpSubgroupMemoryBarrierShared: builder.createMemoryBarrier(spv::Scope::Subgroup, spv::MemorySemanticsMask::WorkgroupMemory | spv::MemorySemanticsMask::AcquireRelease); return spv::NoResult; case glslang::EOpEmitVertex: builder.createNoResultOp(spv::Op::OpEmitVertex); return 0; case glslang::EOpEndPrimitive: builder.createNoResultOp(spv::Op::OpEndPrimitive); return 0; case glslang::EOpSubgroupElect: { std::vector operands; return createSubgroupOperation(op, typeId, operands, glslang::EbtVoid); } case glslang::EOpTime: { std::vector args; // Dummy arguments spv::Id id = builder.createBuiltinCall(typeId, getExtBuiltins(spv::E_SPV_AMD_gcn_shader), spv::TimeAMD, args); return builder.setPrecision(id, precision); } case glslang::EOpIgnoreIntersectionNV: builder.createNoResultOp(spv::Op::OpIgnoreIntersectionNV); return 0; case glslang::EOpTerminateRayNV: builder.createNoResultOp(spv::Op::OpTerminateRayNV); return 0; case glslang::EOpRayQueryInitialize: builder.createNoResultOp(spv::Op::OpRayQueryInitializeKHR); return 0; case glslang::EOpRayQueryTerminate: builder.createNoResultOp(spv::Op::OpRayQueryTerminateKHR); return 0; case glslang::EOpRayQueryGenerateIntersection: builder.createNoResultOp(spv::Op::OpRayQueryGenerateIntersectionKHR); return 0; case glslang::EOpRayQueryConfirmIntersection: builder.createNoResultOp(spv::Op::OpRayQueryConfirmIntersectionKHR); return 0; case glslang::EOpBeginInvocationInterlock: builder.createNoResultOp(spv::Op::OpBeginInvocationInterlockEXT); return 0; case glslang::EOpEndInvocationInterlock: builder.createNoResultOp(spv::Op::OpEndInvocationInterlockEXT); return 0; case glslang::EOpIsHelperInvocation: { std::vector args; // Dummy arguments builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation); builder.addCapability(spv::Capability::DemoteToHelperInvocationEXT); return builder.createOp(spv::Op::OpIsHelperInvocationEXT, typeId, args); } case glslang::EOpReadClockSubgroupKHR: { std::vector args; args.push_back(builder.makeUintConstant(spv::Scope::Subgroup)); builder.addExtension(spv::E_SPV_KHR_shader_clock); builder.addCapability(spv::Capability::ShaderClockKHR); return builder.createOp(spv::Op::OpReadClockKHR, typeId, args); } case glslang::EOpReadClockDeviceKHR: { std::vector args; args.push_back(builder.makeUintConstant(spv::Scope::Device)); builder.addExtension(spv::E_SPV_KHR_shader_clock); builder.addCapability(spv::Capability::ShaderClockKHR); return builder.createOp(spv::Op::OpReadClockKHR, typeId, args); } case glslang::EOpStencilAttachmentReadEXT: case glslang::EOpDepthAttachmentReadEXT: { builder.addExtension(spv::E_SPV_EXT_shader_tile_image); spv::Decoration precision; spv::Op spv_op; if (op == glslang::EOpStencilAttachmentReadEXT) { precision = spv::Decoration::RelaxedPrecision; spv_op = spv::Op::OpStencilAttachmentReadEXT; builder.addCapability(spv::Capability::TileImageStencilReadAccessEXT); } else { precision = spv::NoPrecision; spv_op = spv::Op::OpDepthAttachmentReadEXT; builder.addCapability(spv::Capability::TileImageDepthReadAccessEXT); } std::vector args; // Dummy args spv::Id result = builder.createOp(spv_op, typeId, args); return builder.setPrecision(result, precision); } default: break; } logger->missingFunctionality("unknown operation with no arguments"); return 0; } spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol) { auto iter = symbolValues.find(symbol->getId()); spv::Id id; if (symbolValues.end() != iter) { id = iter->second; return id; } // 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::BuiltIn::ObjectToWorldKHR || builtIn == spv::BuiltIn::WorldToObjectKHR; 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; } } if (symbol->getBasicType() == glslang::EbtFunction) { return 0; } 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; if (symbol->getBasicType() != glslang::EbtBlock) { builder.addDecoration(id, TranslatePrecisionDecoration(symbol->getType())); builder.addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier())); builder.addDecoration(id, TranslateAuxiliaryStorageDecoration(symbol->getType().getQualifier())); addMeshNVDecoration(id, /*member*/ -1, symbol->getType().getQualifier()); if (symbol->getQualifier().hasComponent()) builder.addDecoration(id, spv::Decoration::Component, symbol->getQualifier().layoutComponent); if (symbol->getQualifier().hasIndex()) builder.addDecoration(id, spv::Decoration::Index, symbol->getQualifier().layoutIndex); if (symbol->getType().getQualifier().hasSpecConstantId()) builder.addDecoration(id, spv::Decoration::SpecId, symbol->getType().getQualifier().layoutSpecConstantId); // atomic counters use this: if (symbol->getQualifier().hasOffset()) builder.addDecoration(id, spv::Decoration::Offset, symbol->getQualifier().layoutOffset); } if (symbol->getQualifier().hasLocation()) { if (!(glslangIntermediate->isRayTracingStage() && (glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_ray_tracing) || glslangIntermediate->IsRequestedExtension(glslang::E_GL_NV_shader_invocation_reorder)) && (builder.getStorageClass(id) == spv::StorageClass::RayPayloadKHR || builder.getStorageClass(id) == spv::StorageClass::IncomingRayPayloadKHR || builder.getStorageClass(id) == spv::StorageClass::CallableDataKHR || builder.getStorageClass(id) == spv::StorageClass::IncomingCallableDataKHR || builder.getStorageClass(id) == spv::StorageClass::HitObjectAttributeNV))) { // Location values are used to link TraceRayKHR/ExecuteCallableKHR/HitObjectGetAttributesNV // to corresponding variables but are not valid in SPIRV since they are supported only // for Input/Output Storage classes. builder.addDecoration(id, spv::Decoration::Location, symbol->getQualifier().layoutLocation); } } builder.addDecoration(id, TranslateInvariantDecoration(symbol->getType().getQualifier())); if (symbol->getQualifier().hasStream() && glslangIntermediate->isMultiStream()) { builder.addCapability(spv::Capability::GeometryStreams); builder.addDecoration(id, spv::Decoration::Stream, symbol->getQualifier().layoutStream); } if (symbol->getQualifier().hasSet()) builder.addDecoration(id, spv::Decoration::DescriptorSet, symbol->getQualifier().layoutSet); else if (IsDescriptorResource(symbol->getType())) { // default to 0 builder.addDecoration(id, spv::Decoration::DescriptorSet, 0); } if (symbol->getQualifier().hasBinding()) builder.addDecoration(id, spv::Decoration::Binding, symbol->getQualifier().layoutBinding); else if (IsDescriptorResource(symbol->getType())) { // default to 0 builder.addDecoration(id, spv::Decoration::Binding, 0); } if (symbol->getQualifier().hasAttachment()) builder.addDecoration(id, spv::Decoration::InputAttachmentIndex, symbol->getQualifier().layoutAttachment); if (glslangIntermediate->getXfbMode()) { builder.addCapability(spv::Capability::TransformFeedback); if (symbol->getQualifier().hasXfbBuffer()) { builder.addDecoration(id, spv::Decoration::XfbBuffer, symbol->getQualifier().layoutXfbBuffer); unsigned stride = glslangIntermediate->getXfbStride(symbol->getQualifier().layoutXfbBuffer); if (stride != glslang::TQualifier::layoutXfbStrideEnd) builder.addDecoration(id, spv::Decoration::XfbStride, stride); } if (symbol->getQualifier().hasXfbOffset()) builder.addDecoration(id, spv::Decoration::Offset, symbol->getQualifier().layoutXfbOffset); } // add built-in variable decoration if (builtIn != spv::BuiltIn::Max) { // WorkgroupSize deprecated in spirv1.6 if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_6 || builtIn != spv::BuiltIn::WorkgroupSize) builder.addDecoration(id, spv::Decoration::BuiltIn, (int)builtIn); } // Add volatile decoration to HelperInvocation for spirv1.6 and beyond if (builtIn == spv::BuiltIn::HelperInvocation && !glslangIntermediate->usingVulkanMemoryModel() && glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { builder.addDecoration(id, spv::Decoration::Volatile); } // Subgroup builtins which have input storage class are volatile for ray tracing stages. if (symbol->getType().isImage() || symbol->getQualifier().isPipeInput()) { std::vector memory; TranslateMemoryDecoration(symbol->getType().getQualifier(), memory, glslangIntermediate->usingVulkanMemoryModel()); for (unsigned int i = 0; i < memory.size(); ++i) builder.addDecoration(id, memory[i]); } if (builtIn == spv::BuiltIn::SampleMask) { spv::Decoration decoration; // GL_NV_sample_mask_override_coverage extension if (glslangIntermediate->getLayoutOverrideCoverage()) decoration = spv::Decoration::OverrideCoverageNV; else decoration = spv::Decoration::Max; builder.addDecoration(id, decoration); if (decoration != spv::Decoration::Max) { builder.addCapability(spv::Capability::SampleMaskOverrideCoverageNV); builder.addExtension(spv::E_SPV_NV_sample_mask_override_coverage); } } else if (builtIn == spv::BuiltIn::Layer) { // SPV_NV_viewport_array2 extension if (symbol->getQualifier().layoutViewportRelative) { builder.addDecoration(id, spv::Decoration::ViewportRelativeNV); builder.addCapability(spv::Capability::ShaderViewportMaskNV); builder.addExtension(spv::E_SPV_NV_viewport_array2); } if (symbol->getQualifier().layoutSecondaryViewportRelativeOffset != -2048) { builder.addDecoration(id, spv::Decoration::SecondaryViewportRelativeNV, symbol->getQualifier().layoutSecondaryViewportRelativeOffset); builder.addCapability(spv::Capability::ShaderStereoViewNV); builder.addExtension(spv::E_SPV_NV_stereo_view_rendering); } } if (symbol->getQualifier().layoutPassthrough) { builder.addDecoration(id, spv::Decoration::PassthroughNV); builder.addCapability(spv::Capability::GeometryShaderPassthroughNV); builder.addExtension(spv::E_SPV_NV_geometry_shader_passthrough); } if (symbol->getQualifier().pervertexNV) { builder.addDecoration(id, spv::Decoration::PerVertexNV); builder.addCapability(spv::Capability::FragmentBarycentricNV); builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric); } if (symbol->getQualifier().pervertexEXT) { builder.addDecoration(id, spv::Decoration::PerVertexKHR); builder.addCapability(spv::Capability::FragmentBarycentricKHR); 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::HlslSemanticGOOGLE, symbol->getType().getQualifier().semanticName); } if (symbol->isReference()) { builder.addDecoration(id, symbol->getType().getQualifier().restrict ? spv::Decoration::RestrictPointerEXT : spv::Decoration::AliasedPointerEXT); } // Add SPIR-V decorations (GL_EXT_spirv_intrinsics) if (symbol->getType().getQualifier().hasSpirvDecorate()) applySpirvDecorate(symbol->getType(), id, {}); return id; } // 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) { if(isMeshShaderExt) { builder.addCapability(spv::Capability::MeshShadingEXT); builder.addExtension(spv::E_SPV_EXT_mesh_shader); } else { builder.addCapability(spv::Capability::MeshShadingNV); builder.addExtension(spv::E_SPV_NV_mesh_shader); } } builder.addMemberDecoration(id, (unsigned)member, spv::Decoration::PerPrimitiveNV); } if (qualifier.perViewNV) builder.addMemberDecoration(id, (unsigned)member, spv::Decoration::PerViewNV); if (qualifier.perTaskNV) builder.addMemberDecoration(id, (unsigned)member, spv::Decoration::PerTaskNV); } else { if (qualifier.perPrimitiveNV) { // Need to add capability/extension for fragment shader. // Mesh shader already adds this by default. if (glslangIntermediate->getStage() == EShLangFragment) { if(isMeshShaderExt) { builder.addCapability(spv::Capability::MeshShadingEXT); builder.addExtension(spv::E_SPV_EXT_mesh_shader); } else { builder.addCapability(spv::Capability::MeshShadingNV); builder.addExtension(spv::E_SPV_NV_mesh_shader); } } builder.addDecoration(id, spv::Decoration::PerPrimitiveNV); } if (qualifier.perViewNV) builder.addDecoration(id, spv::Decoration::PerViewNV); if (qualifier.perTaskNV) builder.addDecoration(id, spv::Decoration::PerTaskNV); } } bool TGlslangToSpvTraverser::hasQCOMImageProceessingDecoration(spv::Id id, spv::Decoration decor) { std::vector &decoVec = idToQCOMDecorations[id]; for ( auto d : decoVec ) { if ( d == decor ) return true; } return false; } void TGlslangToSpvTraverser::addImageProcessingQCOMDecoration(spv::Id id, spv::Decoration decor) { spv::Op opc = builder.getOpCode(id); if (opc == spv::Op::OpSampledImage) { id = builder.getIdOperand(id, 0); opc = builder.getOpCode(id); } if (opc == spv::Op::OpLoad) { spv::Id texid = builder.getIdOperand(id, 0); if (!hasQCOMImageProceessingDecoration(texid, decor)) {// builder.addDecoration(texid, decor); idToQCOMDecorations[texid].push_back(decor); } } } void TGlslangToSpvTraverser::addImageProcessing2QCOMDecoration(spv::Id id, bool isForGather) { if (isForGather) { return addImageProcessingQCOMDecoration(id, spv::Decoration::BlockMatchTextureQCOM); } auto addDecor = [this](spv::Id id, spv::Decoration decor) { spv::Op tsopc = this->builder.getOpCode(id); if (tsopc == spv::Op::OpLoad) { spv::Id tsid = this->builder.getIdOperand(id, 0); if (this->glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) { assert(iOSet.count(tsid) > 0); } if (!hasQCOMImageProceessingDecoration(tsid, decor)) { this->builder.addDecoration(tsid, decor); idToQCOMDecorations[tsid].push_back(decor); } } }; spv::Op opc = builder.getOpCode(id); bool isInterfaceObject = (opc != spv::Op::OpSampledImage); if (!isInterfaceObject) { addDecor(builder.getIdOperand(id, 0), spv::Decoration::BlockMatchTextureQCOM); addDecor(builder.getIdOperand(id, 1), spv::Decoration::BlockMatchSamplerQCOM); } else { addDecor(id, spv::Decoration::BlockMatchTextureQCOM); addDecor(id, spv::Decoration::BlockMatchSamplerQCOM); } } // Make a full tree of instructions to build a SPIR-V specialization constant, // or regular constant if possible. // // TBD: this is not yet done, nor verified to be the best design, it does do the leaf symbols though // // Recursively walk the nodes. The nodes form a tree whose leaves are // regular constants, which themselves are trees that createSpvConstant() // recursively walks. So, this function walks the "top" of the tree: // - emit specialization constant-building instructions for specConstant // - when running into a non-spec-constant, switch to createSpvConstant() spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& node) { assert(node.getQualifier().isConstant()); // Handle front-end constants first (non-specialization constants). if (! node.getQualifier().specConstant) { // hand off to the non-spec-constant path assert(node.getAsConstantUnion() != nullptr || node.getAsSymbolNode() != nullptr); int nextConst = 0; return createSpvConstantFromConstUnionArray(node.getType(), node.getAsConstantUnion() ? node.getAsConstantUnion()->getConstArray() : node.getAsSymbolNode()->getConstArray(), nextConst, false); } // We now know we have a specialization constant to build // Extra capabilities may be needed. if (node.getType().contains8BitInt()) builder.addCapability(spv::Capability::Int8); if (node.getType().contains16BitFloat()) builder.addCapability(spv::Capability::Float16); if (node.getType().contains16BitInt()) builder.addCapability(spv::Capability::Int16); if (node.getType().contains64BitInt()) builder.addCapability(spv::Capability::Int64); if (node.getType().containsDouble()) builder.addCapability(spv::Capability::Float64); // gl_WorkGroupSize is a special case until the front-end handles hierarchical specialization constants, // even then, it's specialization ids are handled by special case syntax in GLSL: layout(local_size_x = ... if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) { std::vector 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::Decoration::SpecId, glslangIntermediate->getLocalSizeSpecId(dim)); } } return builder.makeCompositeConstant(builder.makeVectorType(builder.makeUintType(32), 3), dimConstId, true); } // An AST node labelled as specialization constant should be a symbol node. // Its initializer should either be a sub tree with constant nodes, or a constant union array. if (auto* sn = node.getAsSymbolNode()) { spv::Id result; if (auto* sub_tree = sn->getConstSubtree()) { // Traverse the constant constructor sub tree like generating normal run-time instructions. // During the AST traversal, if the node is marked as 'specConstant', SpecConstantOpModeGuard // will set the builder into spec constant op instruction generating mode. sub_tree->traverse(this); result = accessChainLoad(sub_tree->getType()); } else if (auto* const_union_array = &sn->getConstArray()) { int nextConst = 0; result = createSpvConstantFromConstUnionArray(sn->getType(), *const_union_array, nextConst, true); } else { logger->missingFunctionality("Invalid initializer for spec onstant."); return spv::NoResult; } builder.addName(result, sn->getName().c_str()); return result; } // Neither a front-end constant node, nor a specialization constant node with constant union array or // constant sub tree as initializer. logger->missingFunctionality("Neither a front-end constant nor a spec constant."); return spv::NoResult; } // Use 'consts' as the flattened glslang source of scalar constants to recursively // build the aggregate SPIR-V constant. // // If there are not enough elements present in 'consts', 0 will be substituted; // an empty 'consts' can be used to create a fully zeroed SPIR-V constant. // spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glslang::TType& glslangType, const glslang::TConstUnionArray& consts, int& nextConst, bool specConstant) { // vector of constants for SPIR-V std::vector spvConsts; // Type is used for struct and array constants spv::Id typeId = convertGlslangToSpvType(glslangType); if (glslangType.isArray()) { glslang::TType elementType(glslangType, 0); for (int i = 0; i < glslangType.getOuterArraySize(); ++i) spvConsts.push_back(createSpvConstantFromConstUnionArray(elementType, consts, nextConst, false)); } else if (glslangType.isMatrix()) { glslang::TType vectorType(glslangType, 0); for (int col = 0; col < glslangType.getMatrixCols(); ++col) spvConsts.push_back(createSpvConstantFromConstUnionArray(vectorType, consts, nextConst, false)); } else if (glslangType.isCoopMat()) { glslang::TType componentType(glslangType.getBasicType()); spvConsts.push_back(createSpvConstantFromConstUnionArray(componentType, consts, nextConst, false)); } else if (glslangType.isStruct()) { glslang::TVector::const_iterator iter; for (iter = glslangType.getStruct()->begin(); iter != glslangType.getStruct()->end(); ++iter) spvConsts.push_back(createSpvConstantFromConstUnionArray(*iter->type, consts, nextConst, false)); } else if (glslangType.getVectorSize() > 1 || glslangType.isCoopVecNV()) { unsigned int numComponents = glslangType.isCoopVecNV() ? glslangType.getTypeParameters()->arraySizes->getDimSize(0) : glslangType.getVectorSize(); for (unsigned int i = 0; i < numComponents; ++i) { bool zero = nextConst >= consts.size(); switch (glslangType.getBasicType()) { case glslang::EbtInt: spvConsts.push_back(builder.makeIntConstant(zero ? 0 : consts[nextConst].getIConst())); break; case glslang::EbtUint: spvConsts.push_back(builder.makeUintConstant(zero ? 0 : consts[nextConst].getUConst())); break; case glslang::EbtFloat: spvConsts.push_back(builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; case glslang::EbtBool: spvConsts.push_back(builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst())); break; case glslang::EbtInt8: builder.addCapability(spv::Capability::Int8); spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const())); break; case glslang::EbtUint8: builder.addCapability(spv::Capability::Int8); spvConsts.push_back(builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const())); break; case glslang::EbtInt16: builder.addCapability(spv::Capability::Int16); spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const())); break; case glslang::EbtUint16: builder.addCapability(spv::Capability::Int16); spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const())); break; case glslang::EbtInt64: spvConsts.push_back(builder.makeInt64Constant(zero ? 0 : consts[nextConst].getI64Const())); break; case glslang::EbtUint64: spvConsts.push_back(builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const())); break; case glslang::EbtDouble: spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst())); break; case glslang::EbtFloat16: builder.addCapability(spv::Capability::Float16); spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; case glslang::EbtBFloat16: spvConsts.push_back(builder.makeBFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; case glslang::EbtFloatE5M2: spvConsts.push_back(builder.makeFloatE5M2Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; case glslang::EbtFloatE4M3: spvConsts.push_back(builder.makeFloatE4M3Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; default: assert(0); break; } ++nextConst; } } else { // we have a non-aggregate (scalar) constant bool zero = nextConst >= consts.size(); spv::Id scalar = 0; switch (glslangType.getBasicType()) { case glslang::EbtInt: scalar = builder.makeIntConstant(zero ? 0 : consts[nextConst].getIConst(), specConstant); break; case glslang::EbtUint: scalar = builder.makeUintConstant(zero ? 0 : consts[nextConst].getUConst(), specConstant); break; case glslang::EbtFloat: scalar = builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtBool: scalar = builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst(), specConstant); break; case glslang::EbtInt8: builder.addCapability(spv::Capability::Int8); scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant); break; case glslang::EbtUint8: builder.addCapability(spv::Capability::Int8); scalar = builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const(), specConstant); break; case glslang::EbtInt16: builder.addCapability(spv::Capability::Int16); scalar = builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const(), specConstant); break; case glslang::EbtUint16: builder.addCapability(spv::Capability::Int16); scalar = builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const(), specConstant); break; case glslang::EbtInt64: scalar = builder.makeInt64Constant(zero ? 0 : consts[nextConst].getI64Const(), specConstant); break; case glslang::EbtUint64: scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant); break; case glslang::EbtDouble: scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant); break; case glslang::EbtFloat16: builder.addCapability(spv::Capability::Float16); scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtBFloat16: scalar = builder.makeBFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtFloatE5M2: scalar = builder.makeFloatE5M2Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtFloatE4M3: scalar = builder.makeFloatE4M3Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtReference: scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant); scalar = builder.createUnaryOp(spv::Op::OpBitcast, typeId, scalar); break; case glslang::EbtString: scalar = builder.getStringId(consts[nextConst].getSConst()->c_str()); break; default: assert(0); break; } ++nextConst; return scalar; } return builder.makeCompositeConstant(typeId, spvConsts); } // Return true if the node is a constant or symbol whose reading has no // non-trivial observable cost or effect. bool TGlslangToSpvTraverser::isTrivialLeaf(const glslang::TIntermTyped* node) { // don't know what this is if (node == nullptr) return false; // a constant is safe if (node->getAsConstantUnion() != nullptr) return true; // not a symbol means non-trivial if (node->getAsSymbolNode() == nullptr) return false; // a symbol, depends on what's being read switch (node->getType().getQualifier().storage) { case glslang::EvqTemporary: case glslang::EvqGlobal: case glslang::EvqIn: case glslang::EvqInOut: case glslang::EvqConst: case glslang::EvqConstReadOnly: case glslang::EvqUniform: return true; default: return false; } } // A node is trivial if it is a single operation with no side effects. // HLSL (and/or vectors) are always trivial, as it does not short circuit. // Otherwise, error on the side of saying non-trivial. // Return true if trivial. bool TGlslangToSpvTraverser::isTrivial(const glslang::TIntermTyped* node) { if (node == nullptr) return false; // count non scalars as trivial, as well as anything coming from HLSL if (! node->getType().isScalarOrVec1() || glslangIntermediate->getSource() == glslang::EShSourceHlsl) return true; // symbols and constants are trivial if (isTrivialLeaf(node)) return true; // otherwise, it needs to be a simple operation or one or two leaf nodes // not a simple operation const glslang::TIntermBinary* binaryNode = node->getAsBinaryNode(); const glslang::TIntermUnary* unaryNode = node->getAsUnaryNode(); if (binaryNode == nullptr && unaryNode == nullptr) return false; // not on leaf nodes if (binaryNode && (! isTrivialLeaf(binaryNode->getLeft()) || ! isTrivialLeaf(binaryNode->getRight()))) return false; if (unaryNode && ! isTrivialLeaf(unaryNode->getOperand())) { return false; } if (IsOpNumericConv(node->getAsOperator()->getOp()) && node->getType().getBasicType() == glslang::EbtBool) { return true; } switch (node->getAsOperator()->getOp()) { case glslang::EOpLogicalNot: case glslang::EOpEqual: case glslang::EOpNotEqual: case glslang::EOpLessThan: case glslang::EOpGreaterThan: case glslang::EOpLessThanEqual: case glslang::EOpGreaterThanEqual: case glslang::EOpIndexDirect: case glslang::EOpIndexDirectStruct: case glslang::EOpLogicalXor: case glslang::EOpAny: case glslang::EOpAll: return true; default: return false; } } // Emit short-circuiting code, where 'right' is never evaluated unless // the left side is true (for &&) or false (for ||). spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslang::TIntermTyped& left, glslang::TIntermTyped& right) { spv::Id boolTypeId = builder.makeBoolType(); // emit left operand builder.clearAccessChain(); left.traverse(this); spv::Id leftId = accessChainLoad(left.getType()); // Operands to accumulate OpPhi operands std::vector phiOperands; phiOperands.reserve(4); // accumulate left operand's phi information phiOperands.push_back(leftId); phiOperands.push_back(builder.getBuildPoint()->getId()); // Make the two kinds of operation symmetric with a "!" // || => emit "if (! left) result = right" // && => emit "if ( left) result = right" // // TODO: this runtime "not" for || could be avoided by adding functionality // to 'builder' to have an "else" without an "then" if (op == glslang::EOpLogicalOr) leftId = builder.createUnaryOp(spv::Op::OpLogicalNot, boolTypeId, leftId); // make an "if" based on the left value spv::Builder::If ifBuilder(leftId, spv::SelectionControlMask::MaskNone, builder); // emit right operand as the "then" part of the "if" builder.clearAccessChain(); right.traverse(this); spv::Id rightId = accessChainLoad(right.getType()); // accumulate left operand's phi information phiOperands.push_back(rightId); phiOperands.push_back(builder.getBuildPoint()->getId()); // finish the "if" ifBuilder.makeEndIf(); // phi together the two results return builder.createOp(spv::Op::OpPhi, boolTypeId, phiOperands); } // Return type Id of the imported set of extended instructions corresponds to the name. // Import this set if it has not been imported yet. spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name) { if (extBuiltinMap.find(name) != extBuiltinMap.end()) return extBuiltinMap[name]; else { spv::Id extBuiltins = builder.import(name); extBuiltinMap[name] = extBuiltins; return extBuiltins; } } } // end anonymous namespace namespace glslang { void GetSpirvVersion(std::string& version) { const int bufSize = 100; char buf[bufSize]; snprintf(buf, bufSize, "0x%08x, Revision %d", spv::Version, spv::Revision); version = buf; } // For low-order part of the generator's magic number. Bump up // when there is a change in the style (e.g., if SSA form changes, // or a different instruction sequence to do something gets used). int GetSpirvGeneratorVersion() { // return 1; // start // return 2; // EOpAtomicCounterDecrement gets a post decrement, to map between GLSL -> SPIR-V // return 3; // change/correct barrier-instruction operands, to match memory model group decisions // return 4; // some deeper access chains: for dynamic vector component, and local Boolean component // return 5; // make OpArrayLength result type be an int with signedness of 0 // return 6; // revert version 5 change, which makes a different (new) kind of incorrect code, // versions 4 and 6 each generate OpArrayLength as it has long been done // return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent // return 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 11; // Make OpEmitMeshTasksEXT a terminal instruction } // Write SPIR-V out to a binary file bool OutputSpvBin(const std::vector& spirv, const char* baseName) { std::ofstream out; out.open(baseName, std::ios::binary | std::ios::out); if (out.fail()) { printf("ERROR: Failed to open file: %s\n", baseName); return false; } for (int i = 0; i < (int)spirv.size(); ++i) { unsigned int word = spirv[i]; out.write((const char*)&word, 4); } out.close(); return true; } // Write SPIR-V out to a text file with 32-bit hexadecimal words bool OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName) { std::ofstream out; out.open(baseName, std::ios::binary | std::ios::out); if (out.fail()) { printf("ERROR: Failed to open file: %s\n", baseName); return false; } out << "\t// " << GetSpirvGeneratorVersion() << GLSLANG_VERSION_MAJOR << "." << GLSLANG_VERSION_MINOR << "." << GLSLANG_VERSION_PATCH << GLSLANG_VERSION_FLAVOR << std::endl; if (varName != nullptr) { out << "\t #pragma once" << std::endl; out << "const uint32_t " << varName << "[] = {" << std::endl; } const int WORDS_PER_LINE = 8; for (int i = 0; i < (int)spirv.size(); i += WORDS_PER_LINE) { out << "\t"; for (int j = 0; j < WORDS_PER_LINE && i + j < (int)spirv.size(); ++j) { const unsigned int word = spirv[i + j]; out << "0x" << std::hex << std::setw(8) << std::setfill('0') << word; if (i + j + 1 < (int)spirv.size()) { out << ","; } } out << std::endl; } if (varName != nullptr) { out << "};"; out << std::endl; } out.close(); return true; } // // Set up the glslang traversal // void GlslangToSpv(const TIntermediate& intermediate, std::vector& spirv, SpvOptions* options) { spv::SpvBuildLogger logger; GlslangToSpv(intermediate, spirv, &logger, options); } void GlslangToSpv(const TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger* logger, SpvOptions* options) { TIntermNode* root = intermediate.getTreeRoot(); if (root == nullptr) return; SpvOptions defaultOptions; if (options == nullptr) options = &defaultOptions; GetThreadPoolAllocator().push(); TGlslangToSpvTraverser it(intermediate.getSpv().spv, &intermediate, logger, *options); root->traverse(&it); it.finishSpv(options->compileOnly); it.dumpSpv(spirv); #if ENABLE_OPT // If from HLSL, run spirv-opt to "legalize" the SPIR-V for Vulkan // eg. forward and remove memory writes of opaque types. bool prelegalization = intermediate.getSource() == EShSourceHlsl; if ((prelegalization || options->optimizeSize) && !options->disableOptimizer) { SpirvToolsTransform(intermediate, spirv, logger, options); prelegalization = false; } else if (options->stripDebugInfo) { // Strip debug info even if optimization is disabled. SpirvToolsStripDebugInfo(intermediate, spirv, logger); } if (options->validate) SpirvToolsValidate(intermediate, spirv, logger, prelegalization); if (options->disassemble) SpirvToolsDisassemble(std::cout, spirv); #endif GetThreadPoolAllocator().pop(); } } // end namespace glslang glslang-16.0.0/SPIRV/GlslangToSpv.h000066400000000000000000000054711506534232700167020ustar00rootroot00000000000000// // Copyright (C) 2014 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include #include #include "Logger.h" #include "glslang/Include/visibility.h" namespace glslang { class TIntermediate; struct SpvOptions { bool generateDebugInfo {false}; bool stripDebugInfo {false}; bool disableOptimizer {true}; bool optimizeSize {false}; bool disassemble {false}; bool validate {false}; bool emitNonSemanticShaderDebugInfo {false}; bool emitNonSemanticShaderDebugSource{ false }; bool compileOnly{false}; bool optimizerAllowExpandedIDBound{false}; }; GLSLANG_EXPORT void GetSpirvVersion(std::string&); GLSLANG_EXPORT int GetSpirvGeneratorVersion(); GLSLANG_EXPORT void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector& spirv, SpvOptions* options = nullptr); GLSLANG_EXPORT void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger* logger, SpvOptions* options = nullptr); GLSLANG_EXPORT bool OutputSpvBin(const std::vector& spirv, const char* baseName); GLSLANG_EXPORT bool OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName); } glslang-16.0.0/SPIRV/InReadableOrder.cpp000066400000000000000000000131671506534232700176350ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // The SPIR-V spec requires code blocks to appear in an order satisfying the // dominator-tree direction (ie, dominator before the dominated). This is, // actually, easy to achieve: any pre-order CFG traversal algorithm will do it. // Because such algorithms visit a block only after traversing some path to it // from the root, they necessarily visit the block's idom first. // // But not every graph-traversal algorithm outputs blocks in an order that // appears logical to human readers. The problem is that unrelated branches may // be interspersed with each other, and merge blocks may come before some of the // branches being merged. // // A good, human-readable order of blocks may be achieved by performing // depth-first search but delaying merge nodes until after all their branches // have been visited. This is implemented below by the inReadableOrder() // function. #include "spvIR.h" #include #include using spv::Block; using spv::Id; namespace { // Traverses CFG in a readable order, invoking a pre-set callback on each block. // Use by calling visit() on the root block. class ReadableOrderTraverser { public: ReadableOrderTraverser(std::function callback) : callback_(callback) {} // Visits the block if it hasn't been visited already and isn't currently // being delayed. Invokes callback(block, why, header), then descends into its // successors. Delays merge-block and continue-block processing until all // the branches have been completed. If |block| is an unreachable merge block or // an unreachable continue target, then |header| is the corresponding header block. void visit(Block* block, spv::ReachReason why, Block* header) { assert(block); if (why == spv::ReachViaControlFlow) { reachableViaControlFlow_.insert(block); } if (visited_.count(block) || delayed_.count(block)) return; callback_(block, why, header); visited_.insert(block); Block* mergeBlock = nullptr; Block* continueBlock = nullptr; auto mergeInst = block->getMergeInstruction(); if (mergeInst) { Id mergeId = mergeInst->getIdOperand(0); mergeBlock = block->getParent().getParent().getInstruction(mergeId)->getBlock(); delayed_.insert(mergeBlock); if (mergeInst->getOpCode() == spv::Op::OpLoopMerge) { Id continueId = mergeInst->getIdOperand(1); continueBlock = block->getParent().getParent().getInstruction(continueId)->getBlock(); delayed_.insert(continueBlock); } } if (why == spv::ReachViaControlFlow) { const auto& successors = block->getSuccessors(); for (auto it = successors.cbegin(); it != successors.cend(); ++it) visit(*it, why, nullptr); } if (continueBlock) { const spv::ReachReason continueWhy = (reachableViaControlFlow_.count(continueBlock) > 0) ? spv::ReachViaControlFlow : spv::ReachDeadContinue; delayed_.erase(continueBlock); visit(continueBlock, continueWhy, block); } if (mergeBlock) { const spv::ReachReason mergeWhy = (reachableViaControlFlow_.count(mergeBlock) > 0) ? spv::ReachViaControlFlow : spv::ReachDeadMerge; delayed_.erase(mergeBlock); visit(mergeBlock, mergeWhy, block); } } private: std::function callback_; // Whether a block has already been visited or is being delayed. std::unordered_set visited_, delayed_; // The set of blocks that actually are reached via control flow. std::unordered_set reachableViaControlFlow_; }; } void spv::inReadableOrder(Block* root, std::function callback) { ReadableOrderTraverser(callback).visit(root, spv::ReachViaControlFlow, nullptr); } glslang-16.0.0/SPIRV/Logger.cpp000066400000000000000000000052531506534232700160670ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "Logger.h" #include #include #include namespace spv { void SpvBuildLogger::tbdFunctionality(const std::string& f) { if (std::find(std::begin(tbdFeatures), std::end(tbdFeatures), f) == std::end(tbdFeatures)) tbdFeatures.push_back(f); } void SpvBuildLogger::missingFunctionality(const std::string& f) { if (std::find(std::begin(missingFeatures), std::end(missingFeatures), f) == std::end(missingFeatures)) missingFeatures.push_back(f); } std::string SpvBuildLogger::getAllMessages() const { std::ostringstream messages; for (auto it = tbdFeatures.cbegin(); it != tbdFeatures.cend(); ++it) messages << "TBD functionality: " << *it << "\n"; for (auto it = missingFeatures.cbegin(); it != missingFeatures.cend(); ++it) messages << "Missing functionality: " << *it << "\n"; for (auto it = warnings.cbegin(); it != warnings.cend(); ++it) messages << "warning: " << *it << "\n"; for (auto it = errors.cbegin(); it != errors.cend(); ++it) messages << "error: " << *it << "\n"; return messages.str(); } } // end spv namespace glslang-16.0.0/SPIRV/Logger.h000066400000000000000000000052641506534232700155360ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #ifndef GLSLANG_SPIRV_LOGGER_H #define GLSLANG_SPIRV_LOGGER_H #include #include #include "glslang/Include/visibility.h" namespace spv { // A class for holding all SPIR-V build status messages, including // missing/TBD functionalities, warnings, and errors. class GLSLANG_EXPORT SpvBuildLogger { public: SpvBuildLogger() {} // Registers a TBD functionality. void tbdFunctionality(const std::string& f); // Registers a missing functionality. void missingFunctionality(const std::string& f); // Logs a warning. void warning(const std::string& w) { warnings.push_back(w); } // Logs an error. void error(const std::string& e) { errors.push_back(e); } // Returns all messages accumulated in the order of: // TBD functionalities, missing functionalities, warnings, errors. std::string getAllMessages() const; private: SpvBuildLogger(const SpvBuildLogger&); std::vector tbdFeatures; std::vector missingFeatures; std::vector warnings; std::vector errors; }; } // end spv namespace #endif // GLSLANG_SPIRV_LOGGER_H glslang-16.0.0/SPIRV/NonSemanticDebugPrintf.h000066400000000000000000000035021506534232700206600ustar00rootroot00000000000000// Copyright (c) 2020 The Khronos Group Inc. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and/or associated documentation files (the // "Materials"), to deal in the Materials without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Materials, and to // permit persons to whom the Materials are furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Materials. // // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS // KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS // SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT // https://www.khronos.org/registry/ // // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. // #ifndef SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_ #define SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_ #ifdef __cplusplus extern "C" { #endif enum { NonSemanticDebugPrintfRevision = 1, NonSemanticDebugPrintfRevision_BitWidthPadding = 0x7fffffff }; enum NonSemanticDebugPrintfInstructions { NonSemanticDebugPrintfDebugPrintf = 1, NonSemanticDebugPrintfInstructionsMax = 0x7fffffff }; #ifdef __cplusplus } #endif #endif // SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_ glslang-16.0.0/SPIRV/NonSemanticShaderDebugInfo100.h000066400000000000000000000173441506534232700216720ustar00rootroot00000000000000// 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_ glslang-16.0.0/SPIRV/SpvBuilder.cpp000066400000000000000000005264251506534232700167400ustar00rootroot00000000000000// // Copyright (C) 2014-2015 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Helper for making SPIR-V IR. Generally, this is documented in the header // SpvBuilder.h. // #include #include #include #include #include "SpvBuilder.h" #include "spvUtil.h" #include "hex_float.h" #ifndef _WIN32 #include #endif namespace spv { Builder::Builder(unsigned int spvVersion, unsigned int magicNumber, SpvBuildLogger* buildLogger) : spvVersion(spvVersion), sourceLang(SourceLanguage::Unknown), sourceVersion(0), addressModel(AddressingModel::Logical), memoryModel(MemoryModel::GLSL450), builderNumber(magicNumber), buildPoint(nullptr), uniqueId(0), entryPointFunction(nullptr), generatingOpCodeForSpecConst(false), logger(buildLogger) { clearAccessChain(); } Builder::~Builder() { } Id Builder::import(const char* name) { Instruction* import = new Instruction(getUniqueId(), NoType, Op::OpExtInstImport); import->addStringOperand(name); module.mapInstruction(import); imports.push_back(std::unique_ptr(import)); return import->getResultId(); } // For creating new groupedTypes (will return old type if the requested one was already made). Id Builder::makeVoidType() { Instruction* type; if (groupedTypes[enumCast(Op::OpTypeVoid)].size() == 0) { Id typeId = getUniqueId(); type = new Instruction(typeId, NoType, Op::OpTypeVoid); groupedTypes[enumCast(Op::OpTypeVoid)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); // Core OpTypeVoid used for debug void type if (emitNonSemanticShaderDebugInfo) debugId[typeId] = typeId; } else type = groupedTypes[enumCast(Op::OpTypeVoid)].back(); return type->getResultId(); } Id Builder::makeBoolType() { Instruction* type; if (groupedTypes[enumCast(Op::OpTypeBool)].size() == 0) { type = new Instruction(getUniqueId(), NoType, Op::OpTypeBool); groupedTypes[enumCast(Op::OpTypeBool)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeBoolDebugType(32); debugId[type->getResultId()] = debugResultId; } } else type = groupedTypes[enumCast(Op::OpTypeBool)].back(); return type->getResultId(); } Id Builder::makeSamplerType() { Instruction* type; if (groupedTypes[enumCast(Op::OpTypeSampler)].size() == 0) { type = new Instruction(getUniqueId(), NoType, Op::OpTypeSampler); groupedTypes[enumCast(Op::OpTypeSampler)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); } else type = groupedTypes[enumCast(Op::OpTypeSampler)].back(); if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeCompositeDebugType({}, "type.sampler", NonSemanticShaderDebugInfo100Structure, true); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makePointer(StorageClass storageClass, Id pointee) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypePointer)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypePointer)][t]; if (type->getImmediateOperand(0) == (unsigned)storageClass && type->getIdOperand(1) == pointee) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypePointer); type->reserveOperands(2); type->addImmediateOperand(storageClass); type->addIdOperand(pointee); groupedTypes[enumCast(Op::OpTypePointer)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { const Id debugResultId = makePointerDebugType(storageClass, pointee); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeForwardPointer(StorageClass storageClass) { // Caching/uniquifying doesn't work here, because we don't know the // pointee type and there can be multiple forward pointers of the same // storage type. Somebody higher up in the stack must keep track. Instruction* type = new Instruction(getUniqueId(), NoType, Op::OpTypeForwardPointer); type->addImmediateOperand(storageClass); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { const Id debugResultId = makeForwardPointerDebugType(storageClass); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makePointerFromForwardPointer(StorageClass storageClass, Id forwardPointerType, Id pointee) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypePointer)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypePointer)][t]; if (type->getImmediateOperand(0) == (unsigned)storageClass && type->getIdOperand(1) == pointee) return type->getResultId(); } type = new Instruction(forwardPointerType, NoType, Op::OpTypePointer); type->reserveOperands(2); type->addImmediateOperand(storageClass); type->addIdOperand(pointee); groupedTypes[enumCast(Op::OpTypePointer)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); // If we are emitting nonsemantic debuginfo, we need to patch the debug pointer type // that was emitted alongside the forward pointer, now that we have a pointee debug // type for it to point to. if (emitNonSemanticShaderDebugInfo) { Instruction *debugForwardPointer = module.getInstruction(debugId[forwardPointerType]); assert(debugId[pointee]); debugForwardPointer->setIdOperand(2, debugId[pointee]); } return type->getResultId(); } Id Builder::makeIntegerType(int width, bool hasSign) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeInt)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeInt)][t]; if (type->getImmediateOperand(0) == (unsigned)width && type->getImmediateOperand(1) == (hasSign ? 1u : 0u)) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeInt); type->reserveOperands(2); type->addImmediateOperand(width); type->addImmediateOperand(hasSign ? 1 : 0); groupedTypes[enumCast(Op::OpTypeInt)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); // deal with capabilities switch (width) { case 8: case 16: // these are currently handled by storage-type declarations and post processing break; case 64: addCapability(Capability::Int64); break; default: break; } if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeIntegerDebugType(width, hasSign); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeFloatType(int width) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeFloat)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeFloat)][t]; if (type->getNumOperands() != 1) { continue; } if (type->getImmediateOperand(0) == (unsigned)width) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeFloat); type->addImmediateOperand(width); groupedTypes[enumCast(Op::OpTypeFloat)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); // deal with capabilities switch (width) { case 16: // currently handled by storage-type declarations and post processing break; case 64: addCapability(Capability::Float64); break; default: break; } if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeFloatDebugType(width); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeBFloat16Type() { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeFloat)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeFloat)][t]; if (type->getNumOperands() != 2) { continue; } if (type->getImmediateOperand(0) == (unsigned)16 && type->getImmediateOperand(1) == FPEncoding::BFloat16KHR) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeFloat); type->addImmediateOperand(16); type->addImmediateOperand(FPEncoding::BFloat16KHR); groupedTypes[enumCast(Op::OpTypeFloat)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); addExtension(spv::E_SPV_KHR_bfloat16); addCapability(Capability::BFloat16TypeKHR); #if 0 // XXX not supported if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeFloatDebugType(width); debugId[type->getResultId()] = debugResultId; } #endif return type->getResultId(); } Id Builder::makeFloatE5M2Type() { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeFloat)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeFloat)][t]; if (type->getNumOperands() != 2) { continue; } if (type->getImmediateOperand(0) == (unsigned)8 && type->getImmediateOperand(1) == FPEncoding::Float8E5M2EXT) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeFloat); type->addImmediateOperand(8); type->addImmediateOperand(FPEncoding::Float8E5M2EXT); groupedTypes[enumCast(Op::OpTypeFloat)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); addExtension(spv::E_SPV_EXT_float8); addCapability(Capability::Float8EXT); #if 0 // XXX not supported if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeFloatDebugType(width); debugId[type->getResultId()] = debugResultId; } #endif return type->getResultId(); } Id Builder::makeFloatE4M3Type() { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeFloat)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeFloat)][t]; if (type->getNumOperands() != 2) { continue; } if (type->getImmediateOperand(0) == (unsigned)8 && type->getImmediateOperand(1) == FPEncoding::Float8E4M3EXT) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeFloat); type->addImmediateOperand(8); type->addImmediateOperand(FPEncoding::Float8E4M3EXT); groupedTypes[enumCast(Op::OpTypeFloat)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); addExtension(spv::E_SPV_EXT_float8); addCapability(Capability::Float8EXT); #if 0 // XXX not supported if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeFloatDebugType(width); debugId[type->getResultId()] = debugResultId; } #endif return type->getResultId(); } // Make a struct without checking for duplication. // See makeStructResultType() for non-decorated structs // needed as the result of some instructions, which does // check for duplicates. Id Builder::makeStructType(const std::vector& 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. // not found, make it Instruction* type = new Instruction(getUniqueId(), NoType, Op::OpTypeStruct); for (int op = 0; op < (int)members.size(); ++op) type->addIdOperand(members[op]); groupedTypes[enumCast(Op::OpTypeStruct)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); addName(type->getResultId(), name); if (emitNonSemanticShaderDebugInfo && !compilerGenerated) { auto const debugResultId = makeCompositeDebugType(members, name, NonSemanticShaderDebugInfo100Structure); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } // Make a struct for the simple results of several instructions, // checking for duplication. Id Builder::makeStructResultType(Id type0, Id type1) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeStruct)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeStruct)][t]; if (type->getNumOperands() != 2) continue; if (type->getIdOperand(0) != type0 || type->getIdOperand(1) != type1) continue; return type->getResultId(); } // not found, make it std::vector members; members.push_back(type0); members.push_back(type1); return makeStructType(members, "ResType"); } Id Builder::makeVectorType(Id component, int size) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeVector)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeVector)][t]; if (type->getIdOperand(0) == component && type->getImmediateOperand(1) == (unsigned)size) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeVector); type->reserveOperands(2); type->addIdOperand(component); type->addImmediateOperand(size); groupedTypes[enumCast(Op::OpTypeVector)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeVectorDebugType(component, size); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeMatrixType(Id component, int cols, int rows) { assert(cols <= maxMatrixSize && rows <= maxMatrixSize); Id column = makeVectorType(component, rows); // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeMatrix)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeMatrix)][t]; if (type->getIdOperand(0) == column && type->getImmediateOperand(1) == (unsigned)cols) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeMatrix); type->reserveOperands(2); type->addIdOperand(column); type->addImmediateOperand(cols); groupedTypes[enumCast(Op::OpTypeMatrix)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeMatrixDebugType(column, cols); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeCooperativeMatrixKHR)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeCooperativeMatrixKHR)][t]; if (type->getIdOperand(0) == component && type->getIdOperand(1) == scope && type->getIdOperand(2) == rows && type->getIdOperand(3) == cols && type->getIdOperand(4) == use) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeCooperativeMatrixKHR); type->reserveOperands(5); type->addIdOperand(component); type->addIdOperand(scope); type->addIdOperand(rows); type->addIdOperand(cols); type->addIdOperand(use); groupedTypes[enumCast(Op::OpTypeCooperativeMatrixKHR)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { // Find a name for one of the parameters. It can either come from debuginfo for another // type, or an OpName from a constant. auto const findName = [&](Id id) { Id id2 = debugId[id]; for (auto &t : groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic]) { if (t->getResultId() == id2) { for (auto &s : strings) { if (s->getResultId() == t->getIdOperand(2)) { return s->getNameString(); } } } } for (auto &t : names) { if (t->getIdOperand(0) == id) { return t->getNameString(); } } return "unknown"; }; std::string debugName = "coopmat<"; debugName += std::string(findName(component)) + ", "; if (isConstantScalar(scope)) { debugName += std::string("gl_Scope") + std::string(spv::ScopeToString((spv::Scope)getConstantScalar(scope))) + ", "; } else { debugName += std::string(findName(scope)) + ", "; } debugName += std::string(findName(rows)) + ", "; debugName += std::string(findName(cols)) + ">"; // There's no nonsemantic debug info instruction for cooperative matrix types, // use opaque composite instead. auto const debugResultId = makeCompositeDebugType({}, debugName.c_str(), NonSemanticShaderDebugInfo100Structure, true); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeCooperativeMatrixNV)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeCooperativeMatrixNV)][t]; if (type->getIdOperand(0) == component && type->getIdOperand(1) == scope && type->getIdOperand(2) == rows && type->getIdOperand(3) == cols) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeCooperativeMatrixNV); type->reserveOperands(4); type->addIdOperand(component); type->addIdOperand(scope); type->addIdOperand(rows); type->addIdOperand(cols); groupedTypes[enumCast(Op::OpTypeCooperativeMatrixNV)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); return type->getResultId(); } Id Builder::makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType) { Instruction* instr = module.getInstruction(otherType); if (instr->getOpCode() == Op::OpTypeCooperativeMatrixNV) { return makeCooperativeMatrixTypeNV(component, instr->getIdOperand(1), instr->getIdOperand(2), instr->getIdOperand(3)); } else { assert(instr->getOpCode() == Op::OpTypeCooperativeMatrixKHR); return makeCooperativeMatrixTypeKHR(component, instr->getIdOperand(1), instr->getIdOperand(2), instr->getIdOperand(3), instr->getIdOperand(4)); } } Id Builder::makeCooperativeVectorTypeNV(Id componentType, Id components) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeCooperativeVectorNV)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeCooperativeVectorNV)][t]; if (type->getIdOperand(0) == componentType && type->getIdOperand(1) == components) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeCooperativeVectorNV); type->addIdOperand(componentType); type->addIdOperand(components); groupedTypes[enumCast(Op::OpTypeCooperativeVectorNV)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); return type->getResultId(); } Id Builder::makeTensorTypeARM(Id elementType, Id rank) { // See if an OpTypeTensorARM with same element type and rank already exists. for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeTensorARM)].size(); ++t) { const Instruction *type = groupedTypes[enumCast(Op::OpTypeTensorARM)][t]; if (type->getIdOperand(0) == elementType && type->getIdOperand(1) == rank) return type->getResultId(); } // Not found, make it. std::unique_ptr type(new Instruction(getUniqueId(), NoType, Op::OpTypeTensorARM)); type->addIdOperand(elementType); type->addIdOperand(rank); groupedTypes[enumCast(Op::OpTypeTensorARM)].push_back(type.get()); module.mapInstruction(type.get()); Id resultID = type->getResultId(); constantsTypesGlobals.push_back(std::move(type)); return resultID; } Id Builder::makeGenericType(spv::Op opcode, std::vector& operands) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(opcode)].size(); ++t) { type = groupedTypes[enumCast(opcode)][t]; if (static_cast(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); type->reserveOperands(operands.size()); 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[enumCast(opcode)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); return type->getResultId(); } // TODO: performance: track arrays per stride // If a stride is supplied (non-zero) make an array. // If no stride (0), reuse previous array types. // 'size' is an Id of a constant or specialization constant of the array size Id Builder::makeArrayType(Id element, Id sizeId, int stride) { Instruction* type; if (stride == 0) { // try to find existing type for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeArray)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeArray)][t]; if (type->getIdOperand(0) == element && type->getIdOperand(1) == sizeId && explicitlyLaidOut.find(type->getResultId()) == explicitlyLaidOut.end()) return type->getResultId(); } } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeArray); type->reserveOperands(2); type->addIdOperand(element); type->addIdOperand(sizeId); groupedTypes[enumCast(Op::OpTypeArray)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (stride != 0) { explicitlyLaidOut.insert(type->getResultId()); } if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeArrayDebugType(element, sizeId); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeRuntimeArray(Id element) { Instruction* type = new Instruction(getUniqueId(), NoType, Op::OpTypeRuntimeArray); type->addIdOperand(element); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = makeArrayDebugType(element, makeUintConstant(0)); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeFunctionType(Id returnType, const std::vector& paramTypes) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeFunction)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeFunction)][t]; if (type->getIdOperand(0) != returnType || (int)paramTypes.size() != type->getNumOperands() - 1) continue; bool mismatch = false; for (int p = 0; p < (int)paramTypes.size(); ++p) { if (paramTypes[p] != type->getIdOperand(p + 1)) { mismatch = true; break; } } 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::SourceLanguage::HLSL); assert(getTypeClass(returnType) == Op::OpTypeVoid && paramTypes.size() == 0); Id debugTypeId = makeDebugFunctionType(returnType, {}); debugId[type->getResultId()] = debugTypeId; } return type->getResultId(); } } // not found, make it Id typeId = getUniqueId(); type = new Instruction(typeId, NoType, Op::OpTypeFunction); type->reserveOperands(paramTypes.size() + 1); type->addIdOperand(returnType); for (int p = 0; p < (int)paramTypes.size(); ++p) type->addIdOperand(paramTypes[p]); groupedTypes[enumCast(Op::OpTypeFunction)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(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& paramTypes) { assert(debugId[returnType] != 0); Id typeId = getUniqueId(); auto type = new Instruction(typeId, makeVoidType(), Op::OpExtInst); type->reserveOperands(paramTypes.size() + 4); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeFunction); type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); type->addIdOperand(debugId[returnType]); for (auto const paramType : paramTypes) { if (isPointerType(paramType) || isArrayType(paramType)) { type->addIdOperand(debugId[getContainedTypeId(paramType)]); } else { type->addIdOperand(debugId[paramType]); } } constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); return typeId; } Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format) { assert(sampled == 1 || sampled == 2); // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeImage)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeImage)][t]; if (type->getIdOperand(0) == sampledType && type->getImmediateOperand(1) == (unsigned int)dim && type->getImmediateOperand(2) == ( depth ? 1u : 0u) && type->getImmediateOperand(3) == (arrayed ? 1u : 0u) && type->getImmediateOperand(4) == ( ms ? 1u : 0u) && type->getImmediateOperand(5) == sampled && type->getImmediateOperand(6) == (unsigned int)format) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeImage); type->reserveOperands(7); type->addIdOperand(sampledType); type->addImmediateOperand( dim); type->addImmediateOperand( depth ? 1 : 0); type->addImmediateOperand(arrayed ? 1 : 0); type->addImmediateOperand( ms ? 1 : 0); type->addImmediateOperand(sampled); type->addImmediateOperand((unsigned int)format); groupedTypes[enumCast(Op::OpTypeImage)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); // deal with capabilities switch (dim) { case Dim::Buffer: if (sampled == 1) addCapability(Capability::SampledBuffer); else addCapability(Capability::ImageBuffer); break; case Dim::Dim1D: if (sampled == 1) addCapability(Capability::Sampled1D); else addCapability(Capability::Image1D); break; case Dim::Cube: if (arrayed) { if (sampled == 1) addCapability(Capability::SampledCubeArray); else addCapability(Capability::ImageCubeArray); } break; case Dim::Rect: if (sampled == 1) addCapability(Capability::SampledRect); else addCapability(Capability::ImageRect); break; case Dim::SubpassData: addCapability(Capability::InputAttachment); break; default: break; } if (ms) { if (sampled == 2) { // Images used with subpass data are not storage // images, so don't require the capability for them. if (dim != Dim::SubpassData) addCapability(Capability::StorageImageMultisample); if (arrayed) addCapability(Capability::ImageMSArray); } } if (emitNonSemanticShaderDebugInfo) { auto TypeName = [&dim]() -> char const* { switch (dim) { case Dim::Dim1D: return "type.1d.image"; case Dim::Dim2D: return "type.2d.image"; case Dim::Dim3D: return "type.3d.image"; case Dim::Cube: return "type.cube.image"; default: return "type.image"; } }; auto const debugResultId = makeCompositeDebugType({}, TypeName(), NonSemanticShaderDebugInfo100Class, true); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } Id Builder::makeSampledImageType(Id imageType) { // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeSampledImage)].size(); ++t) { type = groupedTypes[enumCast(Op::OpTypeSampledImage)][t]; if (type->getIdOperand(0) == imageType) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), NoType, Op::OpTypeSampledImage); type->addIdOperand(imageType); groupedTypes[enumCast(Op::OpTypeSampledImage)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(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(), Op::OpExtInst); inst->reserveOperands(2); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugInfoNone); constantsTypesGlobals.push_back(std::unique_ptr(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(size) && type->getIdOperand(2) == NonSemanticShaderDebugInfo100Boolean) return type->getResultId(); } type = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); type->reserveOperands(6); 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(type)); module.mapInstruction(type); return type->getResultId(); } Id Builder::makeIntegerDebugType(int const width, bool const hasSign) { const char* typeName = nullptr; switch (width) { case 8: typeName = hasSign ? "int8_t" : "uint8_t"; break; case 16: typeName = hasSign ? "int16_t" : "uint16_t"; break; case 64: typeName = hasSign ? "int64_t" : "uint64_t"; break; default: typeName = hasSign ? "int" : "uint"; } auto nameId = getStringId(typeName); // try to find it Instruction* type; for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) { type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t]; if (type->getIdOperand(0) == nameId && type->getIdOperand(1) == static_cast(width) && type->getIdOperand(2) == (hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned)) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); type->reserveOperands(6); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); type->addIdOperand(nameId); // 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(type)); module.mapInstruction(type); return type->getResultId(); } Id Builder::makeFloatDebugType(int const width) { const char* typeName = nullptr; switch (width) { case 16: typeName = "float16_t"; break; case 64: typeName = "double"; break; default: typeName = "float"; break; } auto nameId = getStringId(typeName); // try to find it Instruction* type; for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) { type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t]; if (type->getIdOperand(0) == nameId && type->getIdOperand(1) == static_cast(width) && type->getIdOperand(2) == NonSemanticShaderDebugInfo100Float) return type->getResultId(); } // not found, make it type = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); type->reserveOperands(6); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); type->addIdOperand(nameId); // 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(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(), Op::OpExtInst); type->reserveOperands(4); 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(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(), Op::OpExtInst); type->reserveOperands(5); 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(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(), Op::OpExtInst); type->reserveOperands(10); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMember); type->addIdOperand(getStringId(debugTypeLoc.name)); // name id type->addIdOperand(debugId[memberType]); // type id type->addIdOperand(makeDebugSource(currentFileId)); // source id 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(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 const& memberTypes, char const*const name, NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType) { // Create the debug member types. std::vector memberDebugTypes; for(auto const memberType : memberTypes) { assert(debugTypeLocs.find(memberType) != debugTypeLocs.end()); // There _should_ be debug types for all the member types but currently buffer references // do not have member debug info generated. if (debugId[memberType]) 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(), Op::OpExtInst); type->reserveOperands(memberDebugTypes.size() + 11); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeComposite); type->addIdOperand(getStringId(name)); // name id type->addIdOperand(makeUintConstant(tag)); // tag id type->addIdOperand(makeDebugSource(currentFileId)); // source id 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(type)); module.mapInstruction(type); return type->getResultId(); } Id Builder::makePointerDebugType(StorageClass storageClass, Id const baseType) { const Id debugBaseType = debugId[baseType]; if (!debugBaseType) { return makeDebugInfoNone(); } const Id scID = makeUintConstant(storageClass); for (Instruction* otherType : groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypePointer]) { if (otherType->getIdOperand(2) == debugBaseType && otherType->getIdOperand(3) == scID) { return otherType->getResultId(); } } Instruction* type = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); type->reserveOperands(5); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypePointer); type->addIdOperand(debugBaseType); type->addIdOperand(scID); type->addIdOperand(makeUintConstant(0)); groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypePointer].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); return type->getResultId(); } // Emit a OpExtInstWithForwardRefsKHR nonsemantic instruction for a pointer debug type // where we don't have the pointee yet. Since we don't have the pointee yet, it just // points to itself and we rely on patching it later. Id Builder::makeForwardPointerDebugType(StorageClass storageClass) { const Id scID = makeUintConstant(storageClass); this->addExtension(spv::E_SPV_KHR_relaxed_extended_instruction); Instruction *type = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInstWithForwardRefsKHR); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypePointer); type->addIdOperand(type->getResultId()); type->addIdOperand(scID); type->addIdOperand(makeUintConstant(0)); groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypePointer].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(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(), Op::OpExtInst); sourceInst->reserveOperands(3); sourceInst->addIdOperand(nonSemanticShaderDebugInfo); sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugSource); sourceInst->addIdOperand(fileName); constantsTypesGlobals.push_back(std::unique_ptr(sourceInst)); module.mapInstruction(sourceInst); if (emitNonSemanticShaderDebugSource) { const int maxWordCount = 0xFFFF; const int opSourceWordCount = 4; const int nonNullBytesPerInstruction = 4 * (maxWordCount - opSourceWordCount) - 1; auto processDebugSource = [&](std::string source) { if (source.size() > 0) { int nextByte = 0; while ((int)source.size() - nextByte > 0) { auto subString = source.substr(nextByte, nonNullBytesPerInstruction); auto sourceId = getStringId(subString); if (nextByte == 0) { // DebugSource sourceInst->addIdOperand(sourceId); } else { // DebugSourceContinued Instruction* sourceContinuedInst = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); sourceContinuedInst->reserveOperands(2); sourceContinuedInst->addIdOperand(nonSemanticShaderDebugInfo); sourceContinuedInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugSourceContinued); sourceContinuedInst->addIdOperand(sourceId); constantsTypesGlobals.push_back(std::unique_ptr(sourceContinuedInst)); module.mapInstruction(sourceContinuedInst); } nextByte += nonNullBytesPerInstruction; } } else { auto sourceId = getStringId(source); sourceInst->addIdOperand(sourceId); } }; if (fileName == mainFileId) { processDebugSource(sourceText); } else { auto incItr = includeFiles.find(fileName); if (incItr != includeFiles.end()) { processDebugSource(*incItr->second); } else { // We omit the optional source text item if not available in glslang } } } debugSourceId[fileName] = resultId; return resultId; } Id Builder::makeDebugCompilationUnit() { if (nonSemanticShaderCompilationUnitId != 0) return nonSemanticShaderCompilationUnitId; spv::Id resultId = getUniqueId(); Instruction* sourceInst = new Instruction(resultId, makeVoidType(), Op::OpExtInst); sourceInst->reserveOperands(6); 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(mainFileId)); sourceInst->addIdOperand(makeUintConstant(sourceLang)); constantsTypesGlobals.push_back(std::unique_ptr(sourceInst)); module.mapInstruction(sourceInst); nonSemanticShaderCompilationUnitId = resultId; // We can reasonably assume that makeDebugCompilationUnit will be called before any of // debug-scope stack. Function scopes and lexical scopes will occur afterward. assert(currentDebugScopeId.empty()); currentDebugScopeId.push(nonSemanticShaderCompilationUnitId); return resultId; } Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id const variable) { assert(type != 0); Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); inst->reserveOperands(11); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugGlobalVariable); inst->addIdOperand(getStringId(name)); // name id inst->addIdOperand(type); // type id inst->addIdOperand(makeDebugSource(currentFileId)); // 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(inst)); module.mapInstruction(inst); return inst->getResultId(); } Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber) { assert(name != nullptr); assert(!currentDebugScopeId.empty()); Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); inst->reserveOperands(9); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable); inst->addIdOperand(getStringId(name)); // name id inst->addIdOperand(type); // type id inst->addIdOperand(makeDebugSource(currentFileId)); // 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(inst)); module.mapInstruction(inst); return inst->getResultId(); } Id Builder::makeDebugExpression() { if (debugExpression != 0) return debugExpression; Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); inst->reserveOperands(2); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugExpression); constantsTypesGlobals.push_back(std::unique_ptr(inst)); module.mapInstruction(inst); debugExpression = inst->getResultId(); return debugExpression; } Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const pointer) { Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); inst->reserveOperands(5); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugDeclare); inst->addIdOperand(debugLocalVariable); // debug local variable id inst->addIdOperand(pointer); // pointer to local variable id inst->addIdOperand(makeDebugExpression()); // expression id addInstruction(std::unique_ptr(inst)); return inst->getResultId(); } Id Builder::makeDebugValue(Id const debugLocalVariable, Id const value) { Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), Op::OpExtInst); inst->reserveOperands(5); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugValue); inst->addIdOperand(debugLocalVariable); // debug local variable id inst->addIdOperand(value); // value of local variable id inst->addIdOperand(makeDebugExpression()); // expression id addInstruction(std::unique_ptr(inst)); return inst->getResultId(); } Id Builder::makeAccelerationStructureType() { Instruction *type; if (groupedTypes[enumCast(Op::OpTypeAccelerationStructureKHR)].size() == 0) { type = new Instruction(getUniqueId(), NoType, Op::OpTypeAccelerationStructureKHR); groupedTypes[enumCast(Op::OpTypeAccelerationStructureKHR)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { spv::Id debugType = makeCompositeDebugType({}, "accelerationStructure", NonSemanticShaderDebugInfo100Structure, true); debugId[type->getResultId()] = debugType; } } else { type = groupedTypes[enumCast(Op::OpTypeAccelerationStructureKHR)].back(); } return type->getResultId(); } Id Builder::makeRayQueryType() { Instruction *type; if (groupedTypes[enumCast(Op::OpTypeRayQueryKHR)].size() == 0) { type = new Instruction(getUniqueId(), NoType, Op::OpTypeRayQueryKHR); groupedTypes[enumCast(Op::OpTypeRayQueryKHR)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); if (emitNonSemanticShaderDebugInfo) { spv::Id debugType = makeCompositeDebugType({}, "rayQuery", NonSemanticShaderDebugInfo100Structure, true); debugId[type->getResultId()] = debugType; } } else { type = groupedTypes[enumCast(Op::OpTypeRayQueryKHR)].back(); } return type->getResultId(); } Id Builder::makeHitObjectNVType() { Instruction *type; if (groupedTypes[enumCast(Op::OpTypeHitObjectNV)].size() == 0) { type = new Instruction(getUniqueId(), NoType, Op::OpTypeHitObjectNV); groupedTypes[enumCast(Op::OpTypeHitObjectNV)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); } else { type = groupedTypes[enumCast(Op::OpTypeHitObjectNV)].back(); } return type->getResultId(); } Id Builder::getDerefTypeId(Id resultId) const { Id typeId = getTypeId(resultId); assert(isPointerType(typeId)); return module.getInstruction(typeId)->getIdOperand(1); } Op Builder::getMostBasicTypeClass(Id typeId) const { Instruction* instr = module.getInstruction(typeId); Op typeClass = instr->getOpCode(); switch (typeClass) { case Op::OpTypeVector: case Op::OpTypeMatrix: case Op::OpTypeArray: case Op::OpTypeRuntimeArray: return getMostBasicTypeClass(instr->getIdOperand(0)); case Op::OpTypePointer: return getMostBasicTypeClass(instr->getIdOperand(1)); default: return typeClass; } } unsigned int Builder::getNumTypeConstituents(Id typeId) const { Instruction* instr = module.getInstruction(typeId); switch (instr->getOpCode()) { case Op::OpTypeBool: case Op::OpTypeInt: case Op::OpTypeFloat: case Op::OpTypePointer: return 1; case Op::OpTypeVector: case Op::OpTypeMatrix: return instr->getImmediateOperand(1); case Op::OpTypeCooperativeVectorNV: case Op::OpTypeArray: { Id lengthId = instr->getIdOperand(1); return module.getInstruction(lengthId)->getImmediateOperand(0); } case Op::OpTypeStruct: return instr->getNumOperands(); case Op::OpTypeCooperativeMatrixKHR: case Op::OpTypeCooperativeMatrixNV: // has only one constituent when used with OpCompositeConstruct. return 1; default: assert(0); return 1; } } // Return the lowest-level type of scalar that an homogeneous composite is made out of. // Typically, this is just to find out if something is made out of ints or floats. // However, it includes returning a structure, if say, it is an array of structure. Id Builder::getScalarTypeId(Id typeId) const { Instruction* instr = module.getInstruction(typeId); Op typeClass = instr->getOpCode(); switch (typeClass) { case Op::OpTypeVoid: case Op::OpTypeBool: case Op::OpTypeInt: case Op::OpTypeFloat: case Op::OpTypeStruct: return instr->getResultId(); case Op::OpTypeVector: case Op::OpTypeMatrix: case Op::OpTypeArray: case Op::OpTypeRuntimeArray: case Op::OpTypePointer: case Op::OpTypeCooperativeVectorNV: return getScalarTypeId(getContainedTypeId(typeId)); default: assert(0); return NoResult; } } // Return the type of 'member' of a composite. Id Builder::getContainedTypeId(Id typeId, int member) const { Instruction* instr = module.getInstruction(typeId); Op typeClass = instr->getOpCode(); switch (typeClass) { case Op::OpTypeVector: case Op::OpTypeMatrix: case Op::OpTypeArray: case Op::OpTypeRuntimeArray: case Op::OpTypeCooperativeMatrixKHR: case Op::OpTypeCooperativeMatrixNV: case Op::OpTypeCooperativeVectorNV: return instr->getIdOperand(0); case Op::OpTypePointer: return instr->getIdOperand(1); case Op::OpTypeStruct: return instr->getIdOperand(member); default: assert(0); return NoResult; } } // Figure out the final resulting type of the access chain. Id Builder::getResultingAccessChainType() const { assert(accessChain.base != NoResult); Id typeId = getTypeId(accessChain.base); assert(isPointerType(typeId)); typeId = getContainedTypeId(typeId); for (int i = 0; i < (int)accessChain.indexChain.size(); ++i) { if (isStructType(typeId)) { assert(isConstantScalar(accessChain.indexChain[i])); typeId = getContainedTypeId(typeId, getConstantScalar(accessChain.indexChain[i])); } else typeId = getContainedTypeId(typeId, accessChain.indexChain[i]); } return typeId; } // Return the immediately contained type of a given composite type. Id Builder::getContainedTypeId(Id typeId) const { return getContainedTypeId(typeId, 0); } // Returns true if 'typeId' is or contains a scalar type declared with 'typeOp' // of width 'width'. The 'width' is only consumed for int and float types. // Returns false otherwise. bool Builder::containsType(Id typeId, spv::Op typeOp, unsigned int width) const { const Instruction& instr = *module.getInstruction(typeId); Op typeClass = instr.getOpCode(); switch (typeClass) { case Op::OpTypeInt: case Op::OpTypeFloat: return typeClass == typeOp && instr.getImmediateOperand(0) == width; case Op::OpTypeStruct: for (int m = 0; m < instr.getNumOperands(); ++m) { if (containsType(instr.getIdOperand(m), typeOp, width)) return true; } return false; case Op::OpTypePointer: return false; case Op::OpTypeVector: case Op::OpTypeMatrix: case Op::OpTypeArray: case Op::OpTypeRuntimeArray: return containsType(getContainedTypeId(typeId), typeOp, width); default: return typeClass == typeOp; } } // return true if the type is a pointer to PhysicalStorageBufferEXT or an // contains such a pointer. These require restrict/aliased decorations. bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const { const Instruction& instr = *module.getInstruction(typeId); Op typeClass = instr.getOpCode(); switch (typeClass) { case Op::OpTypePointer: return getTypeStorageClass(typeId) == StorageClass::PhysicalStorageBufferEXT; case Op::OpTypeArray: return containsPhysicalStorageBufferOrArray(getContainedTypeId(typeId)); case Op::OpTypeStruct: for (int m = 0; m < instr.getNumOperands(); ++m) { if (containsPhysicalStorageBufferOrArray(instr.getIdOperand(m))) return true; } return false; default: return false; } } // See if a scalar constant of this type has already been created, so it // can be reused rather than duplicated. (Required by the specification). Id Builder::findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned value) { Instruction* constant; for (int i = 0; i < (int)groupedConstants[enumCast(typeClass)].size(); ++i) { constant = groupedConstants[enumCast(typeClass)][i]; if (constant->getOpCode() == opcode && constant->getTypeId() == typeId && constant->getImmediateOperand(0) == value) return constant->getResultId(); } return 0; } // Version of findScalarConstant (see above) for scalars that take two operands (e.g. a 'double' or 'int64'). Id Builder::findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned v1, unsigned v2) { Instruction* constant; for (int i = 0; i < (int)groupedConstants[enumCast(typeClass)].size(); ++i) { constant = groupedConstants[enumCast(typeClass)][i]; if (constant->getOpCode() == opcode && constant->getTypeId() == typeId && constant->getImmediateOperand(0) == v1 && constant->getImmediateOperand(1) == v2) return constant->getResultId(); } return 0; } // Return true if consuming 'opcode' means consuming a constant. // "constant" here means after final transform to executable code, // the value consumed will be a constant, so includes specialization. bool Builder::isConstantOpCode(Op opcode) const { switch (opcode) { case Op::OpUndef: case Op::OpConstantTrue: case Op::OpConstantFalse: case Op::OpConstant: case Op::OpConstantComposite: case Op::OpConstantCompositeReplicateEXT: case Op::OpConstantSampler: case Op::OpConstantNull: case Op::OpSpecConstantTrue: case Op::OpSpecConstantFalse: case Op::OpSpecConstant: case Op::OpSpecConstantComposite: case Op::OpSpecConstantCompositeReplicateEXT: case Op::OpSpecConstantOp: return true; default: return false; } } // Return true if consuming 'opcode' means consuming a specialization constant. bool Builder::isSpecConstantOpCode(Op opcode) const { switch (opcode) { case Op::OpSpecConstantTrue: case Op::OpSpecConstantFalse: case Op::OpSpecConstant: case Op::OpSpecConstantComposite: case Op::OpSpecConstantOp: case Op::OpSpecConstantCompositeReplicateEXT: return true; default: return false; } } Id Builder::makeNullConstant(Id typeId) { Instruction* constant; // See if we already made it. Id existing = NoResult; for (int i = 0; i < (int)nullConstants.size(); ++i) { constant = nullConstants[i]; if (constant->getTypeId() == typeId) existing = constant->getResultId(); } if (existing != NoResult) return existing; // Make it Instruction* c = new Instruction(getUniqueId(), typeId, Op::OpConstantNull); constantsTypesGlobals.push_back(std::unique_ptr(c)); nullConstants.push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeBoolConstant(bool b, bool specConstant) { Id typeId = makeBoolType(); Instruction* constant; Op opcode = specConstant ? (b ? Op::OpSpecConstantTrue : Op::OpSpecConstantFalse) : (b ? Op::OpConstantTrue : Op::OpConstantFalse); // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (! specConstant) { Id existing = 0; for (int i = 0; i < (int)groupedConstants[enumCast(Op::OpTypeBool)].size(); ++i) { constant = groupedConstants[enumCast(Op::OpTypeBool)][i]; if (constant->getTypeId() == typeId && constant->getOpCode() == opcode) existing = constant->getResultId(); } if (existing) return existing; } // Make it Instruction* c = new Instruction(getUniqueId(), typeId, opcode); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeBool)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeIntConstant(Id typeId, unsigned value, bool specConstant) { Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (! specConstant) { Id existing = findScalarConstant(Op::OpTypeInt, opcode, typeId, value); if (existing) return existing; } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->addImmediateOperand(value); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeInt)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeInt64Constant(Id typeId, unsigned long long value, bool specConstant) { Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; unsigned op1 = value & 0xFFFFFFFF; unsigned op2 = value >> 32; // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (! specConstant) { Id existing = findScalarConstant(Op::OpTypeInt, opcode, typeId, op1, op2); if (existing) return existing; } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->reserveOperands(2); c->addImmediateOperand(op1); c->addImmediateOperand(op2); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeInt)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeFloatConstant(float f, bool specConstant) { Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; Id typeId = makeFloatType(32); union { float fl; unsigned int ui; } u; u.fl = f; unsigned value = u.ui; // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (! specConstant) { Id existing = findScalarConstant(Op::OpTypeFloat, opcode, typeId, value); if (existing) return existing; } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->addImmediateOperand(value); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeFloat)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeDoubleConstant(double d, bool specConstant) { Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; Id typeId = makeFloatType(64); union { double db; unsigned long long ull; } u; u.db = d; unsigned long long value = u.ull; unsigned op1 = value & 0xFFFFFFFF; unsigned op2 = value >> 32; // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (! specConstant) { Id existing = findScalarConstant(Op::OpTypeFloat, opcode, typeId, op1, op2); if (existing) return existing; } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->reserveOperands(2); c->addImmediateOperand(op1); c->addImmediateOperand(op2); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeFloat)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeFloat16Constant(float f16, bool specConstant) { Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; Id typeId = makeFloatType(16); spvutils::HexFloat> fVal(f16); spvutils::HexFloat> f16Val(0); fVal.castTo(f16Val, spvutils::kRoundToZero); unsigned value = f16Val.value().getAsFloat().get_value(); // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (!specConstant) { Id existing = findScalarConstant(Op::OpTypeFloat, opcode, typeId, value); if (existing) return existing; } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->addImmediateOperand(value); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeFloat)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeBFloat16Constant(float bf16, bool specConstant) { Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; Id typeId = makeBFloat16Type(); union { float f; uint32_t u; } un; un.f = bf16; // take high 16b of fp32 value. This is effectively round-to-zero, other than certain NaNs. unsigned value = un.u >> 16; // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (!specConstant) { Id existing = findScalarConstant(Op::OpTypeFloat, opcode, typeId, value); if (existing) return existing; } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->addImmediateOperand(value); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeFloat)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeFloatE5M2Constant(float fe5m2, bool specConstant) { Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; Id typeId = makeFloatE5M2Type(); spvutils::HexFloat> fVal(fe5m2); spvutils::HexFloat> fe5m2Val(0); fVal.castTo(fe5m2Val, spvutils::kRoundToZero); unsigned value = fe5m2Val.value().getAsFloat().get_value(); // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (!specConstant) { Id existing = findScalarConstant(Op::OpTypeFloat, opcode, typeId, value); if (existing) return existing; } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->addImmediateOperand(value); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeFloat)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeFloatE4M3Constant(float fe4m3, bool specConstant) { Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; Id typeId = makeFloatE4M3Type(); spvutils::HexFloat> fVal(fe4m3); spvutils::HexFloat> fe4m3Val(0); fVal.castTo(fe4m3Val, spvutils::kRoundToZero); unsigned value = fe4m3Val.value().getAsFloat().get_value(); // See if we already made it. Applies only to regular constants, because specialization constants // must remain distinct for the purpose of applying a SpecId decoration. if (!specConstant) { Id existing = findScalarConstant(Op::OpTypeFloat, opcode, typeId, value); if (existing) return existing; } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->addImmediateOperand(value); constantsTypesGlobals.push_back(std::unique_ptr(c)); groupedConstants[enumCast(Op::OpTypeFloat)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Id Builder::makeFpConstant(Id type, double d, bool specConstant) { const int width = getScalarTypeWidth(type); assert(isFloatType(type)); switch (width) { case 16: return makeFloat16Constant((float)d, specConstant); case 32: return makeFloatConstant((float)d, specConstant); case 64: return makeDoubleConstant(d, specConstant); default: break; } assert(false); return NoResult; } Id Builder::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, Op opcode, Id typeId, const std::vector& comps, size_t numMembers) { Instruction* constant = nullptr; bool found = false; for (int i = 0; i < (int)groupedConstants[enumCast(typeClass)].size(); ++i) { constant = groupedConstants[enumCast(typeClass)][i]; if (constant->getTypeId() != typeId) continue; if (constant->getOpCode() != opcode) { continue; } if (constant->getNumOperands() != (int)numMembers) continue; // same contents? bool mismatch = false; for (int op = 0; op < constant->getNumOperands(); ++op) { if (constant->getIdOperand(op) != comps[op]) { mismatch = true; break; } } if (! mismatch) { found = true; break; } } return found ? constant->getResultId() : NoResult; } Id Builder::findStructConstant(Id typeId, const std::vector& comps) { Instruction* constant = nullptr; bool found = false; for (int i = 0; i < (int)groupedStructConstants[typeId].size(); ++i) { constant = groupedStructConstants[typeId][i]; // same contents? bool mismatch = false; for (int op = 0; op < constant->getNumOperands(); ++op) { if (constant->getIdOperand(op) != comps[op]) { mismatch = true; break; } } if (! mismatch) { found = true; break; } } return found ? constant->getResultId() : NoResult; } // Comments in header Id Builder::makeCompositeConstant(Id typeId, const std::vector& members, bool specConstant) { assert(typeId); Op typeClass = getTypeClass(typeId); bool replicate = false; size_t numMembers = members.size(); if (useReplicatedComposites || typeClass == Op::OpTypeCooperativeVectorNV) { // use replicate if all members are the same replicate = numMembers > 0 && std::equal(members.begin() + 1, members.end(), members.begin()); if (replicate) { numMembers = 1; addCapability(spv::Capability::ReplicatedCompositesEXT); addExtension(spv::E_SPV_EXT_replicated_composites); } } Op opcode = replicate ? (specConstant ? Op::OpSpecConstantCompositeReplicateEXT : Op::OpConstantCompositeReplicateEXT) : (specConstant ? Op::OpSpecConstantComposite : Op::OpConstantComposite); switch (typeClass) { case Op::OpTypeVector: case Op::OpTypeArray: case Op::OpTypeMatrix: case Op::OpTypeCooperativeMatrixKHR: case Op::OpTypeCooperativeMatrixNV: case Op::OpTypeCooperativeVectorNV: if (! specConstant) { Id existing = findCompositeConstant(typeClass, opcode, typeId, members, numMembers); if (existing) return existing; } break; case Op::OpTypeStruct: if (! specConstant) { Id existing = findStructConstant(typeId, members); if (existing) return existing; } break; default: assert(0); return makeFloatConstant(0.0); } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->reserveOperands(members.size()); for (size_t op = 0; op < numMembers; ++op) c->addIdOperand(members[op]); constantsTypesGlobals.push_back(std::unique_ptr(c)); if (typeClass == Op::OpTypeStruct) groupedStructConstants[typeId].push_back(c); else groupedConstants[enumCast(typeClass)].push_back(c); module.mapInstruction(c); return c->getResultId(); } Instruction* Builder::addEntryPoint(ExecutionModel model, Function* function, const char* name) { Instruction* entryPoint = new Instruction(Op::OpEntryPoint); entryPoint->reserveOperands(3); entryPoint->addImmediateOperand(model); entryPoint->addIdOperand(function->getId()); entryPoint->addStringOperand(name); entryPoints.push_back(std::unique_ptr(entryPoint)); return entryPoint; } // Currently relying on the fact that all 'value' of interest are small non-negative values. void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int value1, int value2, int value3) { // entryPoint can be null if we are in compile-only mode if (!entryPoint) return; Instruction* instr = new Instruction(Op::OpExecutionMode); instr->reserveOperands(3); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); if (value1 >= 0) instr->addImmediateOperand(value1); if (value2 >= 0) instr->addImmediateOperand(value2); if (value3 >= 0) instr->addImmediateOperand(value3); executionModes.push_back(std::unique_ptr(instr)); } void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const std::vector& literals) { // entryPoint can be null if we are in compile-only mode if (!entryPoint) return; Instruction* instr = new Instruction(Op::OpExecutionMode); instr->reserveOperands(literals.size() + 2); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); for (auto literal : literals) instr->addImmediateOperand(literal); executionModes.push_back(std::unique_ptr(instr)); } void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const std::vector& operandIds) { // entryPoint can be null if we are in compile-only mode if (!entryPoint) return; Instruction* instr = new Instruction(Op::OpExecutionModeId); instr->reserveOperands(operandIds.size() + 2); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); for (auto operandId : operandIds) instr->addIdOperand(operandId); executionModes.push_back(std::unique_ptr(instr)); } void Builder::addName(Id id, const char* string) { Instruction* name = new Instruction(Op::OpName); name->reserveOperands(2); name->addIdOperand(id); name->addStringOperand(string); names.push_back(std::unique_ptr(name)); } void Builder::addMemberName(Id id, int memberNumber, const char* string) { Instruction* name = new Instruction(Op::OpMemberName); name->reserveOperands(3); name->addIdOperand(id); name->addImmediateOperand(memberNumber); name->addStringOperand(string); names.push_back(std::unique_ptr(name)); } void Builder::addDecoration(Id id, Decoration decoration, int num) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpDecorate); dec->reserveOperands(2); dec->addIdOperand(id); dec->addImmediateOperand(decoration); if (num >= 0) dec->addImmediateOperand(num); decorations.insert(std::unique_ptr(dec)); } void Builder::addDecoration(Id id, Decoration decoration, const char* s) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpDecorateString); dec->reserveOperands(3); dec->addIdOperand(id); dec->addImmediateOperand(decoration); dec->addStringOperand(s); decorations.insert(std::unique_ptr(dec)); } void Builder::addDecoration(Id id, Decoration decoration, const std::vector& literals) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpDecorate); dec->reserveOperands(literals.size() + 2); dec->addIdOperand(id); dec->addImmediateOperand(decoration); for (auto literal : literals) dec->addImmediateOperand(literal); decorations.insert(std::unique_ptr(dec)); } void Builder::addDecoration(Id id, Decoration decoration, const std::vector& strings) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpDecorateString); dec->reserveOperands(strings.size() + 2); dec->addIdOperand(id); dec->addImmediateOperand(decoration); for (auto string : strings) dec->addStringOperand(string); decorations.insert(std::unique_ptr(dec)); } void Builder::addLinkageDecoration(Id id, const char* name, spv::LinkageType linkType) { Instruction* dec = new Instruction(Op::OpDecorate); dec->reserveOperands(4); dec->addIdOperand(id); dec->addImmediateOperand(spv::Decoration::LinkageAttributes); dec->addStringOperand(name); dec->addImmediateOperand(linkType); decorations.insert(std::unique_ptr(dec)); } void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpDecorateId); dec->reserveOperands(3); dec->addIdOperand(id); dec->addImmediateOperand(decoration); dec->addIdOperand(idDecoration); decorations.insert(std::unique_ptr(dec)); } void Builder::addDecorationId(Id id, Decoration decoration, const std::vector& operandIds) { if(decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpDecorateId); dec->reserveOperands(operandIds.size() + 2); dec->addIdOperand(id); dec->addImmediateOperand(decoration); for (auto operandId : operandIds) dec->addIdOperand(operandId); decorations.insert(std::unique_ptr(dec)); } void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, int num) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpMemberDecorate); dec->reserveOperands(3); dec->addIdOperand(id); dec->addImmediateOperand(member); dec->addImmediateOperand(decoration); if (num >= 0) dec->addImmediateOperand(num); decorations.insert(std::unique_ptr(dec)); } void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const char *s) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpMemberDecorateStringGOOGLE); dec->reserveOperands(4); dec->addIdOperand(id); dec->addImmediateOperand(member); dec->addImmediateOperand(decoration); dec->addStringOperand(s); decorations.insert(std::unique_ptr(dec)); } void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector& literals) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpMemberDecorate); dec->reserveOperands(literals.size() + 3); dec->addIdOperand(id); dec->addImmediateOperand(member); dec->addImmediateOperand(decoration); for (auto literal : literals) dec->addImmediateOperand(literal); decorations.insert(std::unique_ptr(dec)); } void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector& strings) { if (decoration == spv::Decoration::Max) return; Instruction* dec = new Instruction(Op::OpMemberDecorateString); dec->reserveOperands(strings.size() + 3); dec->addIdOperand(id); dec->addImmediateOperand(member); dec->addImmediateOperand(decoration); for (auto string : strings) dec->addStringOperand(string); decorations.insert(std::unique_ptr(dec)); } void Builder::addInstruction(std::unique_ptr inst) { // Phis must appear first in their block, don't insert line tracking instructions // in front of them, just add the OpPhi and return. if (inst->getOpCode() == Op::OpPhi) { buildPoint->addInstruction(std::move(inst)); return; } // Optionally insert OpDebugScope if (emitNonSemanticShaderDebugInfo && dirtyScopeTracker) { if (buildPoint->updateDebugScope(currentDebugScopeId.top())) { auto scopeInst = std::make_unique(getUniqueId(), makeVoidType(), Op::OpExtInst); scopeInst->reserveOperands(3); scopeInst->addIdOperand(nonSemanticShaderDebugInfo); scopeInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugScope); scopeInst->addIdOperand(currentDebugScopeId.top()); buildPoint->addInstruction(std::move(scopeInst)); } dirtyScopeTracker = false; } // Insert OpLine/OpDebugLine if the debug source location has changed if (trackDebugInfo && dirtyLineTracker) { if (buildPoint->updateDebugSourceLocation(currentLine, 0, currentFileId)) { if (emitSpirvDebugInfo) { auto lineInst = std::make_unique(Op::OpLine); lineInst->reserveOperands(3); lineInst->addIdOperand(currentFileId); lineInst->addImmediateOperand(currentLine); lineInst->addImmediateOperand(0); buildPoint->addInstruction(std::move(lineInst)); } if (emitNonSemanticShaderDebugInfo) { auto lineInst = std::make_unique(getUniqueId(), makeVoidType(), Op::OpExtInst); lineInst->reserveOperands(7); lineInst->addIdOperand(nonSemanticShaderDebugInfo); lineInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLine); lineInst->addIdOperand(makeDebugSource(currentFileId)); lineInst->addIdOperand(makeUintConstant(currentLine)); lineInst->addIdOperand(makeUintConstant(currentLine)); lineInst->addIdOperand(makeUintConstant(0)); lineInst->addIdOperand(makeUintConstant(0)); buildPoint->addInstruction(std::move(lineInst)); } } dirtyLineTracker = false; } buildPoint->addInstruction(std::move(inst)); } void Builder::addInstructionNoDebugInfo(std::unique_ptr inst) { buildPoint->addInstruction(std::move(inst)); } // Comments in header Function* Builder::makeEntryPoint(const char* entryPoint) { assert(! entryPointFunction); auto const returnType = makeVoidType(); restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo; if(sourceLang == spv::SourceLanguage::HLSL) { emitNonSemanticShaderDebugInfo = false; } Block* entry = nullptr; entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, LinkageType::Max, {}, {}, &entry); emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo; return entryPointFunction; } // Comments in header Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name, LinkageType linkType, const std::vector& paramTypes, const std::vector>& 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()); Id funcId = getUniqueId(); Function* function = new Function(funcId, returnType, typeId, firstParamId, linkType, name, module); // Set up the precisions setPrecision(function->getId(), precision); function->setReturnPrecision(precision); for (unsigned p = 0; p < (unsigned)decorations.size(); ++p) { for (int d = 0; d < (int)decorations[p].size(); ++d) { addDecoration(firstParamId + p, decorations[p][d]); function->addParamPrecision(p, decorations[p][d]); } } // reset last debug scope if (emitNonSemanticShaderDebugInfo) { dirtyScopeTracker = true; } // CFG assert(entry != nullptr); *entry = new Block(getUniqueId(), *function); function->addBlock(*entry); setBuildPoint(*entry); if (name) addName(function->getId(), name); functions.push_back(std::unique_ptr(function)); return function; } void Builder::setupFunctionDebugInfo(Function* function, const char* name, const std::vector& paramTypes, const std::vector& paramNames) { if (!emitNonSemanticShaderDebugInfo) return; Id nameId = getStringId(unmangleFunctionName(name)); Id funcTypeId = function->getFuncTypeId(); assert(debugId[funcTypeId] != 0); Id funcId = function->getId(); assert(funcId != 0); // Make the debug function instruction Id debugFuncId = makeDebugFunction(function, nameId, funcTypeId); debugId[funcId] = debugFuncId; currentDebugScopeId.push(debugFuncId); // DebugScope and DebugLine for parameter DebugDeclares assert(paramTypes.size() == paramNames.size()); if ((int)paramTypes.size() > 0) { Id firstParamId = function->getParamId(0); for (size_t p = 0; p < paramTypes.size(); ++p) { bool passByRef = false; Id paramTypeId = paramTypes[p]; // For pointer-typed parameters, they are actually passed by reference and we need unwrap the pointer to get the actual parameter type. if (isPointerType(paramTypeId) || isArrayType(paramTypeId)) { passByRef = true; paramTypeId = getContainedTypeId(paramTypeId); } auto const& paramName = paramNames[p]; auto const debugLocalVariableId = createDebugLocalVariable(debugId[paramTypeId], paramName, p + 1); auto const paramId = static_cast(firstParamId + p); debugId[paramId] = debugLocalVariableId; if (passByRef) { makeDebugDeclare(debugLocalVariableId, paramId); } else { makeDebugValue(debugLocalVariableId, paramId); } } } // Clear debug scope stack if (emitNonSemanticShaderDebugInfo) currentDebugScopeId.pop(); } Id Builder::makeDebugFunction([[maybe_unused]] 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(), Op::OpExtInst); type->reserveOperands(11); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunction); type->addIdOperand(nameId); type->addIdOperand(debugId[funcTypeId]); type->addIdOperand(makeDebugSource(currentFileId)); // TODO: This points to file of definition instead of declaration type->addIdOperand(makeUintConstant(currentLine)); // TODO: This points to line of definition instead of declaration type->addIdOperand(makeUintConstant(0)); // column type->addIdOperand(makeDebugCompilationUnit()); // scope type->addIdOperand(nameId); // linkage name type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); type->addIdOperand(makeUintConstant(currentLine)); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); return funcId; } Id Builder::makeDebugLexicalBlock(uint32_t line, uint32_t column) { assert(!currentDebugScopeId.empty()); Id lexId = getUniqueId(); auto lex = new Instruction(lexId, makeVoidType(), Op::OpExtInst); lex->reserveOperands(6); lex->addIdOperand(nonSemanticShaderDebugInfo); lex->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLexicalBlock); lex->addIdOperand(makeDebugSource(currentFileId)); lex->addIdOperand(makeUintConstant(line)); lex->addIdOperand(makeUintConstant(column)); // column lex->addIdOperand(currentDebugScopeId.top()); // scope constantsTypesGlobals.push_back(std::unique_ptr(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) { if (retVal) { Instruction* inst = new Instruction(NoResult, NoType, Op::OpReturnValue); inst->addIdOperand(retVal); addInstruction(std::unique_ptr(inst)); } else addInstruction(std::unique_ptr(new Instruction(NoResult, NoType, Op::OpReturn))); if (! implicit) createAndSetNoPredecessorBlock("post-return"); } // Comments in header void Builder::enterLexicalBlock(uint32_t line, uint32_t column) { if (!emitNonSemanticShaderDebugInfo) { return; } // Generate new lexical scope debug instruction Id lexId = makeDebugLexicalBlock(line, column); currentDebugScopeId.push(lexId); dirtyScopeTracker = true; } // Comments in header void Builder::leaveLexicalBlock() { if (!emitNonSemanticShaderDebugInfo) { return; } // Pop current scope from stack and clear current scope currentDebugScopeId.pop(); dirtyScopeTracker = true; } // 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::SourceLanguage::HLSL && 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(), Op::OpExtInst); defInst->reserveOperands(4); defInst->addIdOperand(nonSemanticShaderDebugInfo); defInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunctionDefinition); defInst->addIdOperand(debugId[funcId]); defInst->addIdOperand(funcId); addInstruction(std::unique_ptr(defInst)); } if (auto linkType = function->getLinkType(); linkType != LinkageType::Max) { Id funcId = function->getFuncId(); addCapability(Capability::Linkage); addLinkageDecoration(funcId, function->getExportName(), linkType); } } // Comments in header void Builder::leaveFunction() { Block* block = buildPoint; Function& function = buildPoint->getParent(); assert(block); // If our function did not contain a return, add a return void now. if (! block->isTerminated()) { if (function.getReturnType() == makeVoidType()) makeReturn(true); else { makeReturn(true, createUndefined(function.getReturnType())); } } // Clear function scope from debug scope stack if (emitNonSemanticShaderDebugInfo) currentDebugScopeId.pop(); emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo; } // Comments in header void Builder::makeStatementTerminator(spv::Op opcode, const char *name) { addInstruction(std::unique_ptr(new Instruction(opcode))); createAndSetNoPredecessorBlock(name); } // Comments in header void Builder::makeStatementTerminator(spv::Op opcode, const std::vector& 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, Op::OpVariable); inst->addImmediateOperand(storageClass); if (initializer != NoResult) inst->addIdOperand(initializer); switch (storageClass) { case StorageClass::Function: // Validation rules require the declaration in the entry block buildPoint->getParent().addLocalVariable(std::unique_ptr(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(inst)); module.mapInstruction(inst); if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = createDebugGlobalVariable(debugId[type], name, inst->getResultId()); debugId[inst->getResultId()] = debugResultId; } break; } if (name) addName(inst->getResultId(), name); setPrecision(inst->getResultId(), precision); return inst->getResultId(); } // Comments in header Id Builder::createUndefined(Id type) { Instruction* inst = new Instruction(getUniqueId(), type, Op::OpUndef); addInstruction(std::unique_ptr(inst)); return inst->getResultId(); } // av/vis/nonprivate are unnecessary and illegal for some storage classes. spv::MemoryAccessMask Builder::sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) const { switch (sc) { case spv::StorageClass::Uniform: case spv::StorageClass::Workgroup: case spv::StorageClass::StorageBuffer: case spv::StorageClass::PhysicalStorageBufferEXT: break; default: memoryAccess = spv::MemoryAccessMask(memoryAccess & ~(spv::MemoryAccessMask::MakePointerAvailableKHR | spv::MemoryAccessMask::MakePointerVisibleKHR | spv::MemoryAccessMask::NonPrivatePointerKHR)); break; } return memoryAccess; } // Comments in header void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) { Instruction* store = new Instruction(Op::OpStore); store->reserveOperands(2); store->addIdOperand(lValue); store->addIdOperand(rValue); memoryAccess = sanitizeMemoryAccessForStorageClass(memoryAccess, getStorageClass(lValue)); if (memoryAccess != MemoryAccessMask::MaskNone) { store->addImmediateOperand(memoryAccess); if (anySet(memoryAccess, spv::MemoryAccessMask::Aligned)) { store->addImmediateOperand(alignment); } if (anySet(memoryAccess, spv::MemoryAccessMask::MakePointerAvailableKHR)) { store->addIdOperand(makeUintConstant(scope)); } } addInstruction(std::unique_ptr(store)); } // Comments in header Id Builder::createLoad(Id lValue, spv::Decoration precision, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) { Instruction* load = new Instruction(getUniqueId(), getDerefTypeId(lValue), Op::OpLoad); load->addIdOperand(lValue); memoryAccess = sanitizeMemoryAccessForStorageClass(memoryAccess, getStorageClass(lValue)); if (memoryAccess != MemoryAccessMask::MaskNone) { load->addImmediateOperand(memoryAccess); if (anySet(memoryAccess, spv::MemoryAccessMask::Aligned)) { load->addImmediateOperand(alignment); } if (anySet(memoryAccess, spv::MemoryAccessMask::MakePointerVisibleKHR)) { load->addIdOperand(makeUintConstant(scope)); } } addInstruction(std::unique_ptr(load)); setPrecision(load->getResultId(), precision); return load->getResultId(); } // Comments in header Id Builder::createAccessChain(StorageClass storageClass, Id base, const std::vector& offsets) { // Figure out the final resulting type. Id typeId = getResultingAccessChainType(); typeId = makePointer(storageClass, typeId); // Make the instruction Instruction* chain = new Instruction(getUniqueId(), typeId, Op::OpAccessChain); chain->reserveOperands(offsets.size() + 1); chain->addIdOperand(base); for (int i = 0; i < (int)offsets.size(); ++i) chain->addIdOperand(offsets[i]); addInstruction(std::unique_ptr(chain)); return chain->getResultId(); } Id Builder::createArrayLength(Id base, unsigned int member) { spv::Id intType = makeUintType(32); Instruction* length = new Instruction(getUniqueId(), intType, Op::OpArrayLength); length->reserveOperands(2); length->addIdOperand(base); length->addImmediateOperand(member); addInstruction(std::unique_ptr(length)); return length->getResultId(); } Id Builder::createCooperativeMatrixLengthKHR(Id type) { spv::Id intType = makeUintType(32); // Generate code for spec constants if in spec constant operation // generation mode. if (generatingOpCodeForSpecConst) { return createSpecConstantOp(Op::OpCooperativeMatrixLengthKHR, intType, std::vector(1, type), std::vector()); } Instruction* length = new Instruction(getUniqueId(), intType, Op::OpCooperativeMatrixLengthKHR); length->addIdOperand(type); addInstruction(std::unique_ptr(length)); return length->getResultId(); } Id Builder::createCooperativeMatrixLengthNV(Id type) { spv::Id intType = makeUintType(32); // Generate code for spec constants if in spec constant operation // generation mode. if (generatingOpCodeForSpecConst) { return createSpecConstantOp(Op::OpCooperativeMatrixLengthNV, intType, std::vector(1, type), std::vector()); } Instruction* length = new Instruction(getUniqueId(), intType, Op::OpCooperativeMatrixLengthNV); length->addIdOperand(type); addInstruction(std::unique_ptr(length)); return length->getResultId(); } Id Builder::createCompositeExtract(Id composite, Id typeId, unsigned index) { // Generate code for spec constants if in spec constant operation // generation mode. if (generatingOpCodeForSpecConst) { return createSpecConstantOp(Op::OpCompositeExtract, typeId, std::vector(1, composite), std::vector(1, index)); } Instruction* extract = new Instruction(getUniqueId(), typeId, Op::OpCompositeExtract); extract->reserveOperands(2); extract->addIdOperand(composite); extract->addImmediateOperand(index); addInstruction(std::unique_ptr(extract)); return extract->getResultId(); } Id Builder::createCompositeExtract(Id composite, Id typeId, const std::vector& indexes) { // Generate code for spec constants if in spec constant operation // generation mode. if (generatingOpCodeForSpecConst) { return createSpecConstantOp(Op::OpCompositeExtract, typeId, std::vector(1, composite), indexes); } Instruction* extract = new Instruction(getUniqueId(), typeId, Op::OpCompositeExtract); extract->reserveOperands(indexes.size() + 1); extract->addIdOperand(composite); for (int i = 0; i < (int)indexes.size(); ++i) extract->addImmediateOperand(indexes[i]); addInstruction(std::unique_ptr(extract)); return extract->getResultId(); } Id Builder::createCompositeInsert(Id object, Id composite, Id typeId, unsigned index) { Instruction* insert = new Instruction(getUniqueId(), typeId, Op::OpCompositeInsert); insert->reserveOperands(3); insert->addIdOperand(object); insert->addIdOperand(composite); insert->addImmediateOperand(index); addInstruction(std::unique_ptr(insert)); return insert->getResultId(); } Id Builder::createCompositeInsert(Id object, Id composite, Id typeId, const std::vector& indexes) { Instruction* insert = new Instruction(getUniqueId(), typeId, Op::OpCompositeInsert); insert->reserveOperands(indexes.size() + 2); insert->addIdOperand(object); insert->addIdOperand(composite); for (int i = 0; i < (int)indexes.size(); ++i) insert->addImmediateOperand(indexes[i]); addInstruction(std::unique_ptr(insert)); return insert->getResultId(); } Id Builder::createVectorExtractDynamic(Id vector, Id typeId, Id componentIndex) { Instruction* extract = new Instruction(getUniqueId(), typeId, Op::OpVectorExtractDynamic); extract->reserveOperands(2); extract->addIdOperand(vector); extract->addIdOperand(componentIndex); addInstruction(std::unique_ptr(extract)); return extract->getResultId(); } Id Builder::createVectorInsertDynamic(Id vector, Id typeId, Id component, Id componentIndex) { Instruction* insert = new Instruction(getUniqueId(), typeId, Op::OpVectorInsertDynamic); insert->reserveOperands(3); insert->addIdOperand(vector); insert->addIdOperand(component); insert->addIdOperand(componentIndex); addInstruction(std::unique_ptr(insert)); return insert->getResultId(); } // An opcode that has no operands, no result id, and no type void Builder::createNoResultOp(Op opCode) { Instruction* op = new Instruction(opCode); addInstruction(std::unique_ptr(op)); } // An opcode that has one id operand, no result id, and no type void Builder::createNoResultOp(Op opCode, Id operand) { Instruction* op = new Instruction(opCode); op->addIdOperand(operand); addInstruction(std::unique_ptr(op)); } // An opcode that has one or more operands, no result id, and no type void Builder::createNoResultOp(Op opCode, const std::vector& operands) { Instruction* op = new Instruction(opCode); op->reserveOperands(operands.size()); for (auto id : operands) { op->addIdOperand(id); } addInstruction(std::unique_ptr(op)); } // An opcode that has multiple operands, no result id, and no type void Builder::createNoResultOp(Op opCode, const std::vector& operands) { Instruction* op = new Instruction(opCode); op->reserveOperands(operands.size()); for (auto it = operands.cbegin(); it != operands.cend(); ++it) { if (it->isId) op->addIdOperand(it->word); else op->addImmediateOperand(it->word); } addInstruction(std::unique_ptr(op)); } void Builder::createControlBarrier(Scope execution, Scope memory, MemorySemanticsMask semantics) { Instruction* op = new Instruction(Op::OpControlBarrier); op->reserveOperands(3); op->addIdOperand(makeUintConstant(execution)); op->addIdOperand(makeUintConstant(memory)); op->addIdOperand(makeUintConstant(semantics)); addInstruction(std::unique_ptr(op)); } void Builder::createMemoryBarrier(Scope executionScope, MemorySemanticsMask memorySemantics) { Instruction* op = new Instruction(Op::OpMemoryBarrier); op->reserveOperands(2); op->addIdOperand(makeUintConstant((unsigned)executionScope)); op->addIdOperand(makeUintConstant((unsigned)memorySemantics)); addInstruction(std::unique_ptr(op)); } // An opcode that has one operands, a result id, and a type Id Builder::createUnaryOp(Op opCode, Id typeId, Id operand) { // Generate code for spec constants if in spec constant operation // generation mode. if (generatingOpCodeForSpecConst) { return createSpecConstantOp(opCode, typeId, std::vector(1, operand), std::vector()); } Instruction* op = new Instruction(getUniqueId(), typeId, opCode); op->addIdOperand(operand); addInstruction(std::unique_ptr(op)); return op->getResultId(); } Id Builder::createBinOp(Op opCode, Id typeId, Id left, Id right) { // Generate code for spec constants if in spec constant operation // generation mode. if (generatingOpCodeForSpecConst) { std::vector operands(2); operands[0] = left; operands[1] = right; return createSpecConstantOp(opCode, typeId, operands, std::vector()); } Instruction* op = new Instruction(getUniqueId(), typeId, opCode); op->reserveOperands(2); op->addIdOperand(left); op->addIdOperand(right); addInstruction(std::unique_ptr(op)); return op->getResultId(); } Id Builder::createTriOp(Op opCode, Id typeId, Id op1, Id op2, Id op3) { // Generate code for spec constants if in spec constant operation // generation mode. if (generatingOpCodeForSpecConst) { std::vector operands(3); operands[0] = op1; operands[1] = op2; operands[2] = op3; return createSpecConstantOp( opCode, typeId, operands, std::vector()); } Instruction* op = new Instruction(getUniqueId(), typeId, opCode); op->reserveOperands(3); op->addIdOperand(op1); op->addIdOperand(op2); op->addIdOperand(op3); addInstruction(std::unique_ptr(op)); return op->getResultId(); } Id Builder::createOp(Op opCode, Id typeId, const std::vector& operands) { Instruction* op = new Instruction(getUniqueId(), typeId, opCode); op->reserveOperands(operands.size()); for (auto id : operands) op->addIdOperand(id); addInstruction(std::unique_ptr(op)); return op->getResultId(); } Id Builder::createOp(Op opCode, Id typeId, const std::vector& operands) { Instruction* op = new Instruction(getUniqueId(), typeId, opCode); op->reserveOperands(operands.size()); for (auto it = operands.cbegin(); it != operands.cend(); ++it) { if (it->isId) op->addIdOperand(it->word); else op->addImmediateOperand(it->word); } addInstruction(std::unique_ptr(op)); return op->getResultId(); } Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector& operands, const std::vector& literals) { Instruction* op = new Instruction(getUniqueId(), typeId, Op::OpSpecConstantOp); op->reserveOperands(operands.size() + literals.size() + 1); op->addImmediateOperand((unsigned) opCode); for (auto it = operands.cbegin(); it != operands.cend(); ++it) op->addIdOperand(*it); for (auto it = literals.cbegin(); it != literals.cend(); ++it) op->addImmediateOperand(*it); module.mapInstruction(op); constantsTypesGlobals.push_back(std::unique_ptr(op)); // OpSpecConstantOp's using 8 or 16 bit types require the associated capability if (containsType(typeId, Op::OpTypeInt, 8)) addCapability(Capability::Int8); if (containsType(typeId, Op::OpTypeInt, 16)) addCapability(Capability::Int16); if (containsType(typeId, Op::OpTypeFloat, 16)) addCapability(Capability::Float16); return op->getResultId(); } Id Builder::createFunctionCall(spv::Function* function, const std::vector& args) { Instruction* op = new Instruction(getUniqueId(), function->getReturnType(), Op::OpFunctionCall); op->reserveOperands(args.size() + 1); op->addIdOperand(function->getId()); for (int a = 0; a < (int)args.size(); ++a) op->addIdOperand(args[a]); addInstruction(std::unique_ptr(op)); return op->getResultId(); } // Comments in header Id Builder::createRvalueSwizzle(Decoration precision, Id typeId, Id source, const std::vector& channels) { if (channels.size() == 1) return setPrecision(createCompositeExtract(source, typeId, channels.front()), precision); if (generatingOpCodeForSpecConst) { std::vector operands(2); operands[0] = operands[1] = source; return setPrecision(createSpecConstantOp(Op::OpVectorShuffle, typeId, operands, channels), precision); } Instruction* swizzle = new Instruction(getUniqueId(), typeId, Op::OpVectorShuffle); assert(isVector(source)); swizzle->reserveOperands(channels.size() + 2); swizzle->addIdOperand(source); swizzle->addIdOperand(source); for (int i = 0; i < (int)channels.size(); ++i) swizzle->addImmediateOperand(channels[i]); addInstruction(std::unique_ptr(swizzle)); return setPrecision(swizzle->getResultId(), precision); } // Comments in header Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vector& channels) { if (channels.size() == 1 && getNumComponents(source) == 1) return createCompositeInsert(source, target, typeId, channels.front()); Instruction* swizzle = new Instruction(getUniqueId(), typeId, Op::OpVectorShuffle); assert(isVector(target)); swizzle->reserveOperands(2); swizzle->addIdOperand(target); assert(getNumComponents(source) == channels.size()); assert(isVector(source)); swizzle->addIdOperand(source); // Set up an identity shuffle from the base value to the result value unsigned int components[4]; int numTargetComponents = getNumComponents(target); for (int i = 0; i < numTargetComponents; ++i) components[i] = i; // Punch in the l-value swizzle for (int i = 0; i < (int)channels.size(); ++i) components[channels[i]] = numTargetComponents + i; // finish the instruction with these components selectors swizzle->reserveOperands(numTargetComponents); for (int i = 0; i < numTargetComponents; ++i) swizzle->addImmediateOperand(components[i]); addInstruction(std::unique_ptr(swizzle)); return swizzle->getResultId(); } // Comments in header void Builder::promoteScalar(Decoration precision, Id& left, Id& right) { int direction = getNumComponents(right) - getNumComponents(left); if (direction > 0) left = smearScalar(precision, left, makeVectorType(getTypeId(left), getNumComponents(right))); else if (direction < 0) right = smearScalar(precision, right, makeVectorType(getTypeId(right), getNumComponents(left))); return; } // Comments in header Id Builder::smearScalar(Decoration precision, Id scalar, Id vectorType) { assert(getNumComponents(scalar) == 1); assert(getTypeId(scalar) == getScalarTypeId(vectorType)); int numComponents = getNumTypeComponents(vectorType); if (numComponents == 1 && !isCooperativeVectorType(vectorType)) return scalar; Instruction* smear = nullptr; if (generatingOpCodeForSpecConst) { auto members = std::vector(numComponents, scalar); // Sometime even in spec-constant-op mode, the temporary vector created by // promoting a scalar might not be a spec constant. This should depend on // the scalar. // e.g.: // const vec2 spec_const_result = a_spec_const_vec2 + a_front_end_const_scalar; // In such cases, the temporary vector created from a_front_end_const_scalar // is not a spec constant vector, even though the binary operation node is marked // as 'specConstant' and we are in spec-constant-op mode. auto result_id = makeCompositeConstant(vectorType, members, isSpecConstant(scalar)); smear = module.getInstruction(result_id); } else { bool replicate = (useReplicatedComposites || isCooperativeVectorType(vectorType)) && (numComponents > 0); if (replicate) { numComponents = 1; addCapability(spv::Capability::ReplicatedCompositesEXT); addExtension(spv::E_SPV_EXT_replicated_composites); } Op opcode = replicate ? Op::OpCompositeConstructReplicateEXT : Op::OpCompositeConstruct; smear = new Instruction(getUniqueId(), vectorType, opcode); smear->reserveOperands(numComponents); for (int c = 0; c < numComponents; ++c) smear->addIdOperand(scalar); addInstruction(std::unique_ptr(smear)); } return setPrecision(smear->getResultId(), precision); } // Comments in header Id Builder::createBuiltinCall(Id resultType, Id builtins, int entryPoint, const std::vector& args) { Instruction* inst = new Instruction(getUniqueId(), resultType, Op::OpExtInst); inst->reserveOperands(args.size() + 2); inst->addIdOperand(builtins); inst->addImmediateOperand(entryPoint); for (int arg = 0; arg < (int)args.size(); ++arg) inst->addIdOperand(args[arg]); addInstruction(std::unique_ptr(inst)); return inst->getResultId(); } // Accept all parameters needed to create a texture instruction. // Create the correct instruction based on the inputs, and make the call. Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather, bool noImplicitLod, const TextureParameters& parameters, ImageOperandsMask signExtensionMask) { std::vector texArgs; // // Set up the fixed arguments // bool explicitLod = false; texArgs.push_back(parameters.sampler); texArgs.push_back(parameters.coords); if (parameters.Dref != NoResult) texArgs.push_back(parameters.Dref); if (parameters.component != NoResult) texArgs.push_back(parameters.component); if (parameters.granularity != NoResult) texArgs.push_back(parameters.granularity); if (parameters.coarse != NoResult) texArgs.push_back(parameters.coarse); // // Set up the optional arguments // size_t optArgNum = texArgs.size(); // the position of the mask for the optional arguments, if any. ImageOperandsMask mask = ImageOperandsMask::MaskNone; // the mask operand if (parameters.bias) { mask = (ImageOperandsMask)(mask | ImageOperandsMask::Bias); texArgs.push_back(parameters.bias); } if (parameters.lod) { mask = (ImageOperandsMask)(mask | ImageOperandsMask::Lod); texArgs.push_back(parameters.lod); explicitLod = true; } else if (parameters.gradX) { mask = (ImageOperandsMask)(mask | ImageOperandsMask::Grad); texArgs.push_back(parameters.gradX); texArgs.push_back(parameters.gradY); explicitLod = true; } else if (noImplicitLod && ! fetch && ! gather) { // have to explicitly use lod of 0 if not allowed to have them be implicit, and // we would otherwise be about to issue an implicit instruction mask = (ImageOperandsMask)(mask | ImageOperandsMask::Lod); texArgs.push_back(makeFloatConstant(0.0)); explicitLod = true; } if (parameters.offset) { if (isConstant(parameters.offset)) mask = (ImageOperandsMask)(mask | ImageOperandsMask::ConstOffset); else { addCapability(Capability::ImageGatherExtended); mask = (ImageOperandsMask)(mask | ImageOperandsMask::Offset); } texArgs.push_back(parameters.offset); } if (parameters.offsets) { if (!isConstant(parameters.offsets) && sourceLang == spv::SourceLanguage::GLSL) { mask = (ImageOperandsMask)(mask | ImageOperandsMask::Offsets); } else { addCapability(Capability::ImageGatherExtended); mask = (ImageOperandsMask)(mask | ImageOperandsMask::ConstOffsets); } texArgs.push_back(parameters.offsets); } if (parameters.sample) { mask = (ImageOperandsMask)(mask | ImageOperandsMask::Sample); texArgs.push_back(parameters.sample); } if (parameters.lodClamp) { // capability if this bit is used addCapability(Capability::MinLod); mask = (ImageOperandsMask)(mask | ImageOperandsMask::MinLod); texArgs.push_back(parameters.lodClamp); } if (parameters.nonprivate) { mask = mask | ImageOperandsMask::NonPrivateTexelKHR; } if (parameters.volatil) { mask = mask | ImageOperandsMask::VolatileTexelKHR; } if (parameters.nontemporal) { mask = mask | ImageOperandsMask::Nontemporal; } mask = mask | signExtensionMask; // insert the operand for the mask, if any bits were set. if (mask != ImageOperandsMask::MaskNone) texArgs.insert(texArgs.begin() + optArgNum, (Id)mask); // // Set up the instruction // Op opCode = Op::OpNop; // All paths below need to set this if (fetch) { if (sparse) opCode = Op::OpImageSparseFetch; else opCode = Op::OpImageFetch; } else if (parameters.granularity && parameters.coarse) { opCode = Op::OpImageSampleFootprintNV; } else if (gather) { if (parameters.Dref) if (sparse) opCode = Op::OpImageSparseDrefGather; else opCode = Op::OpImageDrefGather; else if (sparse) opCode = Op::OpImageSparseGather; else opCode = Op::OpImageGather; } else if (explicitLod) { if (parameters.Dref) { if (proj) if (sparse) opCode = Op::OpImageSparseSampleProjDrefExplicitLod; else opCode = Op::OpImageSampleProjDrefExplicitLod; else if (sparse) opCode = Op::OpImageSparseSampleDrefExplicitLod; else opCode = Op::OpImageSampleDrefExplicitLod; } else { if (proj) if (sparse) opCode = Op::OpImageSparseSampleProjExplicitLod; else opCode = Op::OpImageSampleProjExplicitLod; else if (sparse) opCode = Op::OpImageSparseSampleExplicitLod; else opCode = Op::OpImageSampleExplicitLod; } } else { if (parameters.Dref) { if (proj) if (sparse) opCode = Op::OpImageSparseSampleProjDrefImplicitLod; else opCode = Op::OpImageSampleProjDrefImplicitLod; else if (sparse) opCode = Op::OpImageSparseSampleDrefImplicitLod; else opCode = Op::OpImageSampleDrefImplicitLod; } else { if (proj) if (sparse) opCode = Op::OpImageSparseSampleProjImplicitLod; else opCode = Op::OpImageSampleProjImplicitLod; else if (sparse) opCode = Op::OpImageSparseSampleImplicitLod; else opCode = Op::OpImageSampleImplicitLod; } } // See if the result type is expecting a smeared result. // This happens when a legacy shadow*() call is made, which // gets a vec4 back instead of a float. Id smearedType = resultType; if (! isScalarType(resultType)) { switch (opCode) { case Op::OpImageSampleDrefImplicitLod: case Op::OpImageSampleDrefExplicitLod: case Op::OpImageSampleProjDrefImplicitLod: case Op::OpImageSampleProjDrefExplicitLod: resultType = getScalarTypeId(resultType); break; default: break; } } Id typeId0 = 0; Id typeId1 = 0; if (sparse) { typeId0 = resultType; typeId1 = getDerefTypeId(parameters.texelOut); resultType = makeStructResultType(typeId0, typeId1); } // Build the SPIR-V instruction Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode); textureInst->reserveOperands(optArgNum + (texArgs.size() - (optArgNum + 1))); for (size_t op = 0; op < optArgNum; ++op) textureInst->addIdOperand(texArgs[op]); if (optArgNum < texArgs.size()) textureInst->addImmediateOperand(texArgs[optArgNum]); for (size_t op = optArgNum + 1; op < texArgs.size(); ++op) textureInst->addIdOperand(texArgs[op]); setPrecision(textureInst->getResultId(), precision); addInstruction(std::unique_ptr(textureInst)); Id resultId = textureInst->getResultId(); if (sparse) { // set capability addCapability(Capability::SparseResidency); // Decode the return type that was a special structure createStore(createCompositeExtract(resultId, typeId1, 1), parameters.texelOut); resultId = createCompositeExtract(resultId, typeId0, 0); setPrecision(resultId, precision); } else { // When a smear is needed, do it, as per what was computed // above when resultType was changed to a scalar type. if (resultType != smearedType) resultId = smearScalar(precision, resultId, smearedType); } return resultId; } // Comments in header Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameters, bool isUnsignedResult) { // Figure out the result type Id resultType = 0; switch (opCode) { case Op::OpImageQuerySize: case Op::OpImageQuerySizeLod: { int numComponents = 0; switch (getTypeDimensionality(getImageType(parameters.sampler))) { case Dim::Dim1D: case Dim::Buffer: numComponents = 1; break; case Dim::Dim2D: case Dim::Cube: case Dim::Rect: case Dim::SubpassData: numComponents = 2; break; case Dim::Dim3D: numComponents = 3; break; default: assert(0); break; } if (isArrayedImageType(getImageType(parameters.sampler))) ++numComponents; Id intType = isUnsignedResult ? makeUintType(32) : makeIntType(32); if (numComponents == 1) resultType = intType; else resultType = makeVectorType(intType, numComponents); break; } case Op::OpImageQueryLod: resultType = makeVectorType(getScalarTypeId(getTypeId(parameters.coords)), 2); break; case Op::OpImageQueryLevels: case Op::OpImageQuerySamples: resultType = isUnsignedResult ? makeUintType(32) : makeIntType(32); break; default: assert(0); break; } Instruction* query = new Instruction(getUniqueId(), resultType, opCode); query->addIdOperand(parameters.sampler); if (parameters.coords) query->addIdOperand(parameters.coords); if (parameters.lod) query->addIdOperand(parameters.lod); addInstruction(std::unique_ptr(query)); addCapability(Capability::ImageQuery); return query->getResultId(); } // External comments in header. // Operates recursively to visit the composite's hierarchy. Id Builder::createCompositeCompare(Decoration precision, Id value1, Id value2, bool equal) { Id boolType = makeBoolType(); Id valueType = getTypeId(value1); Id resultId = NoResult; int numConstituents = getNumTypeConstituents(valueType); // Scalars and Vectors if (isScalarType(valueType) || isVectorType(valueType)) { assert(valueType == getTypeId(value2)); // These just need a single comparison, just have // to figure out what it is. Op op; switch (getMostBasicTypeClass(valueType)) { case Op::OpTypeFloat: op = equal ? Op::OpFOrdEqual : Op::OpFUnordNotEqual; break; case Op::OpTypeInt: default: op = equal ? Op::OpIEqual : Op::OpINotEqual; break; case Op::OpTypeBool: op = equal ? Op::OpLogicalEqual : Op::OpLogicalNotEqual; precision = NoPrecision; break; } if (isScalarType(valueType)) { // scalar resultId = createBinOp(op, boolType, value1, value2); } else { // vector resultId = createBinOp(op, makeVectorType(boolType, numConstituents), value1, value2); setPrecision(resultId, precision); // reduce vector compares... resultId = createUnaryOp(equal ? Op::OpAll : Op::OpAny, boolType, resultId); } return setPrecision(resultId, precision); } // Only structs, arrays, and matrices should be left. // They share in common the reduction operation across their constituents. assert(isAggregateType(valueType) || isMatrixType(valueType)); // Compare each pair of constituents for (int constituent = 0; constituent < numConstituents; ++constituent) { std::vector indexes(1, constituent); Id constituentType1 = getContainedTypeId(getTypeId(value1), constituent); Id constituentType2 = getContainedTypeId(getTypeId(value2), constituent); Id constituent1 = createCompositeExtract(value1, constituentType1, indexes); Id constituent2 = createCompositeExtract(value2, constituentType2, indexes); Id subResultId = createCompositeCompare(precision, constituent1, constituent2, equal); if (constituent == 0) resultId = subResultId; else resultId = setPrecision(createBinOp(equal ? Op::OpLogicalAnd : Op::OpLogicalOr, boolType, resultId, subResultId), precision); } return resultId; } // OpCompositeConstruct Id Builder::createCompositeConstruct(Id typeId, const std::vector& constituents) { assert(isAggregateType(typeId) || (getNumTypeConstituents(typeId) > 1 && getNumTypeConstituents(typeId) == constituents.size()) || (isCooperativeVectorType(typeId) && constituents.size() == 1)); if (generatingOpCodeForSpecConst) { // Sometime, even in spec-constant-op mode, the constant composite to be // constructed may not be a specialization constant. // e.g.: // const mat2 m2 = mat2(a_spec_const, a_front_end_const, another_front_end_const, third_front_end_const); // The first column vector should be a spec constant one, as a_spec_const is a spec constant. // The second column vector should NOT be spec constant, as it does not contain any spec constants. // To handle such cases, we check the constituents of the constant vector to determine whether this // vector should be created as a spec constant. return makeCompositeConstant(typeId, constituents, std::any_of(constituents.begin(), constituents.end(), [&](spv::Id id) { return isSpecConstant(id); })); } bool replicate = false; size_t numConstituents = constituents.size(); if (useReplicatedComposites || isCooperativeVectorType(typeId)) { replicate = numConstituents > 0 && std::equal(constituents.begin() + 1, constituents.end(), constituents.begin()); } if (replicate) { numConstituents = 1; addCapability(spv::Capability::ReplicatedCompositesEXT); addExtension(spv::E_SPV_EXT_replicated_composites); } Op opcode = replicate ? Op::OpCompositeConstructReplicateEXT : Op::OpCompositeConstruct; Instruction* op = new Instruction(getUniqueId(), typeId, opcode); op->reserveOperands(constituents.size()); for (size_t c = 0; c < numConstituents; ++c) op->addIdOperand(constituents[c]); addInstruction(std::unique_ptr(op)); return op->getResultId(); } // coopmat conversion Id Builder::createCooperativeMatrixConversion(Id typeId, Id source) { Instruction* op = new Instruction(getUniqueId(), typeId, Op::OpCooperativeMatrixConvertNV); op->addIdOperand(source); addInstruction(std::unique_ptr(op)); return op->getResultId(); } // coopmat reduce Id Builder::createCooperativeMatrixReduce(Op opcode, Id typeId, Id source, unsigned int mask, Id func) { Instruction* op = new Instruction(getUniqueId(), typeId, opcode); op->addIdOperand(source); op->addImmediateOperand(mask); op->addIdOperand(func); addInstruction(std::unique_ptr(op)); return op->getResultId(); } // coopmat per-element operation Id Builder::createCooperativeMatrixPerElementOp(Id typeId, const std::vector& operands) { Instruction* op = new Instruction(getUniqueId(), typeId, spv::Op::OpCooperativeMatrixPerElementOpNV); // skip operand[0], which is where the result is stored for (uint32_t i = 1; i < operands.size(); ++i) { op->addIdOperand(operands[i]); } addInstruction(std::unique_ptr(op)); return op->getResultId(); } // Vector or scalar constructor Id Builder::createConstructor(Decoration precision, const std::vector& sources, Id resultTypeId) { Id result = NoResult; unsigned int numTargetComponents = getNumTypeComponents(resultTypeId); unsigned int targetComponent = 0; // Special case: when calling a vector constructor with a single scalar // argument, smear the scalar if (sources.size() == 1 && isScalar(sources[0]) && (numTargetComponents > 1 || isCooperativeVectorType(resultTypeId))) return smearScalar(precision, sources[0], resultTypeId); // Special case: 2 vectors of equal size if (sources.size() == 1 && isVector(sources[0]) && numTargetComponents == getNumComponents(sources[0])) { assert(resultTypeId == getTypeId(sources[0])); return sources[0]; } // accumulate the arguments for OpCompositeConstruct std::vector constituents; Id scalarTypeId = getScalarTypeId(resultTypeId); // lambda to store the result of visiting an argument component const auto latchResult = [&](Id comp) { if (numTargetComponents > 1) constituents.push_back(comp); else result = comp; ++targetComponent; }; // lambda to visit a vector argument's components const auto accumulateVectorConstituents = [&](Id sourceArg) { unsigned int sourceSize = getNumComponents(sourceArg); unsigned int sourcesToUse = sourceSize; if (sourcesToUse + targetComponent > numTargetComponents) sourcesToUse = numTargetComponents - targetComponent; for (unsigned int s = 0; s < sourcesToUse; ++s) { std::vector swiz; swiz.push_back(s); latchResult(createRvalueSwizzle(precision, scalarTypeId, sourceArg, swiz)); } }; // lambda to visit a matrix argument's components const auto accumulateMatrixConstituents = [&](Id sourceArg) { unsigned int sourceSize = getNumColumns(sourceArg) * getNumRows(sourceArg); unsigned int sourcesToUse = sourceSize; if (sourcesToUse + targetComponent > numTargetComponents) sourcesToUse = numTargetComponents - targetComponent; unsigned int col = 0; unsigned int row = 0; for (unsigned int s = 0; s < sourcesToUse; ++s) { if (row >= getNumRows(sourceArg)) { row = 0; col++; } std::vector indexes; indexes.push_back(col); indexes.push_back(row); latchResult(createCompositeExtract(sourceArg, scalarTypeId, indexes)); row++; } }; // Go through the source arguments, each one could have either // a single or multiple components to contribute. for (unsigned int i = 0; i < sources.size(); ++i) { if (isScalar(sources[i]) || isPointer(sources[i])) latchResult(sources[i]); else if (isVector(sources[i]) || isCooperativeVector(sources[i])) accumulateVectorConstituents(sources[i]); else if (isMatrix(sources[i])) accumulateMatrixConstituents(sources[i]); else assert(0); if (targetComponent >= numTargetComponents) break; } // If the result is a vector, make it from the gathered constituents. if (constituents.size() > 0) { result = createCompositeConstruct(resultTypeId, constituents); return setPrecision(result, precision); } else { // Precision was set when generating this component. return result; } } // Comments in header Id Builder::createMatrixConstructor(Decoration precision, const std::vector& sources, Id resultTypeId) { Id componentTypeId = getScalarTypeId(resultTypeId); unsigned int numCols = getTypeNumColumns(resultTypeId); unsigned int numRows = getTypeNumRows(resultTypeId); Instruction* instr = module.getInstruction(componentTypeId); const unsigned bitCount = instr->getImmediateOperand(0); // Optimize matrix constructed from a bigger matrix if (isMatrix(sources[0]) && getNumColumns(sources[0]) >= numCols && getNumRows(sources[0]) >= numRows) { // To truncate the matrix to a smaller number of rows/columns, we need to: // 1. For each column, extract the column and truncate it to the required size using shuffle // 2. Assemble the resulting matrix from all columns Id matrix = sources[0]; Id columnTypeId = getContainedTypeId(resultTypeId); Id sourceColumnTypeId = getContainedTypeId(getTypeId(matrix)); std::vector channels; for (unsigned int row = 0; row < numRows; ++row) channels.push_back(row); std::vector matrixColumns; for (unsigned int col = 0; col < numCols; ++col) { std::vector indexes; indexes.push_back(col); Id colv = createCompositeExtract(matrix, sourceColumnTypeId, indexes); setPrecision(colv, precision); if (numRows != getNumRows(matrix)) { matrixColumns.push_back(createRvalueSwizzle(precision, columnTypeId, colv, channels)); } else { matrixColumns.push_back(colv); } } return setPrecision(createCompositeConstruct(resultTypeId, matrixColumns), precision); } // Detect a matrix being constructed from a repeated vector of the correct size. // Create the composite directly from it. if (sources.size() == numCols && isVector(sources[0]) && getNumComponents(sources[0]) == numRows && std::equal(sources.begin() + 1, sources.end(), sources.begin())) { return setPrecision(createCompositeConstruct(resultTypeId, sources), precision); } // Otherwise, will use a two step process // 1. make a compile-time 2D array of values // 2. construct a matrix from that array // Step 1. // initialize the array to the identity matrix Id ids[maxMatrixSize][maxMatrixSize]; Id one = (bitCount == 64 ? makeDoubleConstant(1.0) : makeFloatConstant(1.0)); Id zero = (bitCount == 64 ? makeDoubleConstant(0.0) : makeFloatConstant(0.0)); for (int col = 0; col < 4; ++col) { for (int row = 0; row < 4; ++row) { if (col == row) ids[col][row] = one; else ids[col][row] = zero; } } // modify components as dictated by the arguments if (sources.size() == 1 && isScalar(sources[0])) { // a single scalar; resets the diagonals for (int col = 0; col < 4; ++col) ids[col][col] = sources[0]; } else if (isMatrix(sources[0])) { // constructing from another matrix; copy over the parts that exist in both the argument and constructee Id matrix = sources[0]; unsigned int minCols = std::min(numCols, getNumColumns(matrix)); unsigned int minRows = std::min(numRows, getNumRows(matrix)); for (unsigned int col = 0; col < minCols; ++col) { std::vector indexes; indexes.push_back(col); for (unsigned int row = 0; row < minRows; ++row) { indexes.push_back(row); ids[col][row] = createCompositeExtract(matrix, componentTypeId, indexes); indexes.pop_back(); setPrecision(ids[col][row], precision); } } } else { // fill in the matrix in column-major order with whatever argument components are available unsigned int row = 0; unsigned int col = 0; for (unsigned int arg = 0; arg < sources.size() && col < numCols; ++arg) { Id argComp = sources[arg]; for (unsigned int comp = 0; comp < getNumComponents(sources[arg]); ++comp) { if (getNumComponents(sources[arg]) > 1) { argComp = createCompositeExtract(sources[arg], componentTypeId, comp); setPrecision(argComp, precision); } ids[col][row++] = argComp; if (row == numRows) { row = 0; col++; } if (col == numCols) { // If more components are provided than fit the matrix, discard the rest. break; } } } } // Step 2: Construct a matrix from that array. // First make the column vectors, then make the matrix. // make the column vectors Id columnTypeId = getContainedTypeId(resultTypeId); std::vector matrixColumns; for (unsigned int col = 0; col < numCols; ++col) { std::vector vectorComponents; for (unsigned int row = 0; row < numRows; ++row) vectorComponents.push_back(ids[col][row]); Id column = createCompositeConstruct(columnTypeId, vectorComponents); setPrecision(column, precision); matrixColumns.push_back(column); } // make the matrix return setPrecision(createCompositeConstruct(resultTypeId, matrixColumns), precision); } // Comments in header Builder::If::If(Id cond, SelectionControlMask ctrl, Builder& gb) : builder(gb), condition(cond), control(ctrl), elseBlock(nullptr) { function = &builder.getBuildPoint()->getParent(); // make the blocks, but only put the then-block into the function, // the else-block and merge-block will be added later, in order, after // earlier code is emitted thenBlock = new Block(builder.getUniqueId(), *function); mergeBlock = new Block(builder.getUniqueId(), *function); // Save the current block, so that we can add in the flow control split when // makeEndIf is called. headerBlock = builder.getBuildPoint(); builder.createSelectionMerge(mergeBlock, control); function->addBlock(thenBlock); builder.setBuildPoint(thenBlock); } // Comments in header void Builder::If::makeBeginElse() { // Close out the "then" by having it jump to the mergeBlock builder.createBranch(true, mergeBlock); // Make the first else block and add it to the function elseBlock = new Block(builder.getUniqueId(), *function); function->addBlock(elseBlock); // Start building the else block builder.setBuildPoint(elseBlock); } // Comments in header void Builder::If::makeEndIf() { // jump to the merge block builder.createBranch(true, mergeBlock); // Go back to the headerBlock and make the flow control split builder.setBuildPoint(headerBlock); if (elseBlock) builder.createConditionalBranch(condition, thenBlock, elseBlock); else builder.createConditionalBranch(condition, thenBlock, mergeBlock); // add the merge block to the function function->addBlock(mergeBlock); builder.setBuildPoint(mergeBlock); } // Comments in header void Builder::makeSwitch(Id selector, SelectionControlMask control, int numSegments, const std::vector& caseValues, const std::vector& valueIndexToSegment, int defaultSegment, std::vector& segmentBlocks) { Function& function = buildPoint->getParent(); // make all the blocks for (int s = 0; s < numSegments; ++s) segmentBlocks.push_back(new Block(getUniqueId(), function)); Block* mergeBlock = new Block(getUniqueId(), function); // make and insert the switch's selection-merge instruction createSelectionMerge(mergeBlock, control); // make the switch instruction Instruction* switchInst = new Instruction(NoResult, NoType, Op::OpSwitch); switchInst->reserveOperands((caseValues.size() * 2) + 2); switchInst->addIdOperand(selector); auto defaultOrMerge = (defaultSegment >= 0) ? segmentBlocks[defaultSegment] : mergeBlock; switchInst->addIdOperand(defaultOrMerge->getId()); defaultOrMerge->addPredecessor(buildPoint); for (int i = 0; i < (int)caseValues.size(); ++i) { switchInst->addImmediateOperand(caseValues[i]); switchInst->addIdOperand(segmentBlocks[valueIndexToSegment[i]]->getId()); segmentBlocks[valueIndexToSegment[i]]->addPredecessor(buildPoint); } addInstruction(std::unique_ptr(switchInst)); // push the merge block switchMerges.push(mergeBlock); } // Comments in header void Builder::addSwitchBreak(bool implicit) { // branch to the top of the merge block stack createBranch(implicit, switchMerges.top()); createAndSetNoPredecessorBlock("post-switch-break"); } // Comments in header void Builder::nextSwitchSegment(std::vector& segmentBlock, int nextSegment) { int lastSegment = nextSegment - 1; if (lastSegment >= 0) { // Close out previous segment by jumping, if necessary, to next segment if (! buildPoint->isTerminated()) createBranch(true, segmentBlock[nextSegment]); } Block* block = segmentBlock[nextSegment]; block->getParent().addBlock(block); setBuildPoint(block); } // Comments in header void Builder::endSwitch(std::vector& /*segmentBlock*/) { // Close out previous segment by jumping, if necessary, to next segment if (! buildPoint->isTerminated()) addSwitchBreak(true); switchMerges.top()->getParent().addBlock(switchMerges.top()); setBuildPoint(switchMerges.top()); switchMerges.pop(); } Block& Builder::makeNewBlock() { Function& function = buildPoint->getParent(); auto block = new Block(getUniqueId(), function); function.addBlock(block); return *block; } Builder::LoopBlocks& Builder::makeNewLoop() { // This verbosity is needed to simultaneously get the same behavior // everywhere (id's in the same order), have a syntax that works // across lots of versions of C++, have no warnings from pedantic // compilation modes, and leave the rest of the code alone. Block& head = makeNewBlock(); Block& body = makeNewBlock(); Block& merge = makeNewBlock(); Block& continue_target = makeNewBlock(); LoopBlocks blocks(head, body, merge, continue_target); loops.push(blocks); return loops.top(); } void Builder::createLoopContinue() { createBranch(false, &loops.top().continue_target); // Set up a block for dead code. createAndSetNoPredecessorBlock("post-loop-continue"); } void Builder::createLoopExit() { createBranch(false, &loops.top().merge); // Set up a block for dead code. createAndSetNoPredecessorBlock("post-loop-break"); } void Builder::closeLoop() { loops.pop(); } void Builder::clearAccessChain() { accessChain.base = NoResult; accessChain.indexChain.clear(); accessChain.instr = NoResult; accessChain.swizzle.clear(); accessChain.component = NoResult; accessChain.preSwizzleBaseType = NoType; accessChain.isRValue = false; accessChain.coherentFlags.clear(); accessChain.alignment = 0; } // Comments in header void Builder::accessChainPushSwizzle(std::vector& swizzle, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment) { accessChain.coherentFlags |= coherentFlags; accessChain.alignment |= alignment; // swizzles can be stacked in GLSL, but simplified to a single // one here; the base type doesn't change if (accessChain.preSwizzleBaseType == NoType) accessChain.preSwizzleBaseType = preSwizzleBaseType; // if needed, propagate the swizzle for the current access chain if (accessChain.swizzle.size() > 0) { std::vector oldSwizzle = accessChain.swizzle; accessChain.swizzle.resize(0); for (unsigned int i = 0; i < swizzle.size(); ++i) { assert(swizzle[i] < oldSwizzle.size()); accessChain.swizzle.push_back(oldSwizzle[swizzle[i]]); } } else accessChain.swizzle = swizzle; // determine if we need to track this swizzle anymore simplifyAccessChainSwizzle(); } // Comments in header void Builder::accessChainStore(Id rvalue, Decoration nonUniform, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) { assert(accessChain.isRValue == false); transferAccessChainSwizzle(true); // If a swizzle exists and is not full and is not dynamic, then the swizzle will be broken into individual stores. if (accessChain.swizzle.size() > 0 && getNumTypeComponents(getResultingAccessChainType()) != accessChain.swizzle.size() && accessChain.component == NoResult) { for (unsigned int i = 0; i < accessChain.swizzle.size(); ++i) { accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle[i])); accessChain.instr = NoResult; Id base = collapseAccessChain(); addDecoration(base, nonUniform); accessChain.indexChain.pop_back(); accessChain.instr = NoResult; // dynamic component should be gone assert(accessChain.component == NoResult); Id source = createCompositeExtract(rvalue, getContainedTypeId(getTypeId(rvalue)), i); // take LSB of alignment alignment = alignment & ~(alignment & (alignment-1)); if (getStorageClass(base) == StorageClass::PhysicalStorageBufferEXT) { memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessMask::Aligned); } createStore(source, base, memoryAccess, scope, alignment); } } else { Id base = collapseAccessChain(); addDecoration(base, nonUniform); Id source = rvalue; // dynamic component should be gone assert(accessChain.component == NoResult); // If swizzle still exists, it may be out-of-order, we must load the target vector, // extract and insert elements to perform writeMask and/or swizzle. if (accessChain.swizzle.size() > 0) { Id tempBaseId = createLoad(base, spv::NoPrecision); source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, source, accessChain.swizzle); } // take LSB of alignment alignment = alignment & ~(alignment & (alignment-1)); if (getStorageClass(base) == StorageClass::PhysicalStorageBufferEXT) { memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessMask::Aligned); } createStore(source, base, memoryAccess, scope, alignment); } } // Comments in header Id Builder::accessChainLoad(Decoration precision, Decoration l_nonUniform, Decoration r_nonUniform, Id resultType, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) { Id id; if (accessChain.isRValue) { // transfer access chain, but try to stay in registers transferAccessChainSwizzle(false); if (accessChain.indexChain.size() > 0) { Id swizzleBase = accessChain.preSwizzleBaseType != NoType ? accessChain.preSwizzleBaseType : resultType; // if all the accesses are constants, we can use OpCompositeExtract std::vector indexes; bool constant = true; for (int i = 0; i < (int)accessChain.indexChain.size(); ++i) { if (isConstantScalar(accessChain.indexChain[i])) indexes.push_back(getConstantScalar(accessChain.indexChain[i])); else { constant = false; break; } } if (constant) { id = createCompositeExtract(accessChain.base, swizzleBase, indexes); setPrecision(id, precision); } else if (isCooperativeVector(accessChain.base)) { assert(accessChain.indexChain.size() == 1); id = createVectorExtractDynamic(accessChain.base, resultType, accessChain.indexChain[0]); } else { Id lValue = NoResult; if (spvVersion >= Spv_1_4 && isValidInitializer(accessChain.base)) { // make a new function variable for this r-value, using an initializer, // and mark it as NonWritable so that downstream it can be detected as a lookup // table lValue = createVariable(NoPrecision, StorageClass::Function, getTypeId(accessChain.base), "indexable", accessChain.base); addDecoration(lValue, Decoration::NonWritable); } else { lValue = createVariable(NoPrecision, StorageClass::Function, getTypeId(accessChain.base), "indexable"); // store into it createStore(accessChain.base, lValue); } // move base to the new variable accessChain.base = lValue; accessChain.isRValue = false; // load through the access chain id = createLoad(collapseAccessChain(), precision); } } else id = accessChain.base; // no precision, it was set when this was defined } else { transferAccessChainSwizzle(true); // take LSB of alignment alignment = alignment & ~(alignment & (alignment-1)); if (getStorageClass(accessChain.base) == StorageClass::PhysicalStorageBufferEXT) { memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessMask::Aligned); } // load through the access chain id = collapseAccessChain(); // Apply nonuniform both to the access chain and the loaded value. // Buffer accesses need the access chain decorated, and this is where // loaded image types get decorated. TODO: This should maybe move to // createImageTextureFunctionCall. addDecoration(id, l_nonUniform); id = createLoad(id, precision, memoryAccess, scope, alignment); addDecoration(id, r_nonUniform); } // Done, unless there are swizzles to do if (accessChain.swizzle.size() == 0 && accessChain.component == NoResult) return id; // Do remaining swizzling // Do the basic swizzle if (accessChain.swizzle.size() > 0) { Id swizzledType = getScalarTypeId(getTypeId(id)); if (accessChain.swizzle.size() > 1) swizzledType = makeVectorType(swizzledType, (int)accessChain.swizzle.size()); id = createRvalueSwizzle(precision, swizzledType, id, accessChain.swizzle); } // Do the dynamic component if (accessChain.component != NoResult) id = setPrecision(createVectorExtractDynamic(id, resultType, accessChain.component), precision); addDecoration(id, r_nonUniform); return id; } Id Builder::accessChainGetLValue() { assert(accessChain.isRValue == false); transferAccessChainSwizzle(true); Id lvalue = collapseAccessChain(); // If swizzle exists, it is out-of-order or not full, we must load the target vector, // extract and insert elements to perform writeMask and/or swizzle. This does not // go with getting a direct l-value pointer. assert(accessChain.swizzle.size() == 0); assert(accessChain.component == NoResult); return lvalue; } // comment in header Id Builder::accessChainGetInferredType() { // anything to operate on? if (accessChain.base == NoResult) return NoType; Id type = getTypeId(accessChain.base); // do initial dereference if (! accessChain.isRValue) type = getContainedTypeId(type); // dereference each index for (auto it = accessChain.indexChain.cbegin(); it != accessChain.indexChain.cend(); ++it) { if (isStructType(type)) type = getContainedTypeId(type, getConstantScalar(*it)); else type = getContainedTypeId(type); } // dereference swizzle if (accessChain.swizzle.size() == 1) type = getContainedTypeId(type); else if (accessChain.swizzle.size() > 1) type = makeVectorType(getContainedTypeId(type), (int)accessChain.swizzle.size()); // dereference component selection if (accessChain.component) type = getContainedTypeId(type); return type; } void Builder::dump(std::vector& out) const { // Header, before first instructions: out.push_back(MagicNumber); out.push_back(spvVersion); out.push_back(builderNumber); out.push_back(uniqueId + 1); out.push_back(0); // Capabilities for (auto it = capabilities.cbegin(); it != capabilities.cend(); ++it) { Instruction capInst(0, 0, Op::OpCapability); capInst.addImmediateOperand(*it); capInst.dump(out); } for (auto it = extensions.cbegin(); it != extensions.cend(); ++it) { Instruction extInst(0, 0, Op::OpExtension); extInst.addStringOperand(it->c_str()); extInst.dump(out); } dumpInstructions(out, imports); Instruction memInst(0, 0, Op::OpMemoryModel); memInst.addImmediateOperand(addressModel); memInst.addImmediateOperand(memoryModel); memInst.dump(out); // Instructions saved up while building: dumpInstructions(out, entryPoints); dumpInstructions(out, executionModes); // Debug instructions dumpInstructions(out, strings); dumpSourceInstructions(out); for (int e = 0; e < (int)sourceExtensions.size(); ++e) { Instruction sourceExtInst(0, 0, Op::OpSourceExtension); sourceExtInst.addStringOperand(sourceExtensions[e]); sourceExtInst.dump(out); } dumpInstructions(out, names); dumpModuleProcesses(out); // Annotation instructions dumpInstructions(out, decorations); dumpInstructions(out, constantsTypesGlobals); dumpInstructions(out, externals); // The functions module.dump(out); } // // Protected methods. // // Turn the described access chain in 'accessChain' into an instruction(s) // computing its address. This *cannot* include complex swizzles, which must // be handled after this is called. // // Can generate code. Id Builder::collapseAccessChain() { assert(accessChain.isRValue == false); // did we already emit an access chain for this? if (accessChain.instr != NoResult) return accessChain.instr; // If we have a dynamic component, we can still transfer // that into a final operand to the access chain. We need to remap the // dynamic component through the swizzle to get a new dynamic component to // update. // // This was not done in transferAccessChainSwizzle() because it might // generate code. remapDynamicSwizzle(); if (accessChain.component != NoResult) { // transfer the dynamic component to the access chain accessChain.indexChain.push_back(accessChain.component); accessChain.component = NoResult; } // note that non-trivial swizzling is left pending // do we have an access chain? if (accessChain.indexChain.size() == 0) return accessChain.base; // emit the access chain StorageClass storageClass = (StorageClass)module.getStorageClass(getTypeId(accessChain.base)); accessChain.instr = createAccessChain(storageClass, accessChain.base, accessChain.indexChain); return accessChain.instr; } // For a dynamic component selection of a swizzle. // // Turn the swizzle and dynamic component into just a dynamic component. // // Generates code. void Builder::remapDynamicSwizzle() { // do we have a swizzle to remap a dynamic component through? if (accessChain.component != NoResult && accessChain.swizzle.size() > 1) { // build a vector of the swizzle for the component to map into std::vector components; for (int c = 0; c < (int)accessChain.swizzle.size(); ++c) components.push_back(makeUintConstant(accessChain.swizzle[c])); Id mapType = makeVectorType(makeUintType(32), (int)accessChain.swizzle.size()); Id map = makeCompositeConstant(mapType, components); // use it accessChain.component = createVectorExtractDynamic(map, makeUintType(32), accessChain.component); accessChain.swizzle.clear(); } } // clear out swizzle if it is redundant, that is reselecting the same components // that would be present without the swizzle. void Builder::simplifyAccessChainSwizzle() { // If the swizzle has fewer components than the vector, it is subsetting, and must stay // to preserve that fact. if (getNumTypeComponents(accessChain.preSwizzleBaseType) > accessChain.swizzle.size()) return; // if components are out of order, it is a swizzle for (unsigned int i = 0; i < accessChain.swizzle.size(); ++i) { if (i != accessChain.swizzle[i]) return; } // otherwise, there is no need to track this swizzle accessChain.swizzle.clear(); if (accessChain.component == NoResult) accessChain.preSwizzleBaseType = NoType; } // To the extent any swizzling can become part of the chain // of accesses instead of a post operation, make it so. // If 'dynamic' is true, include transferring the dynamic component, // otherwise, leave it pending. // // Does not generate code. just updates the access chain. void Builder::transferAccessChainSwizzle(bool dynamic) { // non existent? if (accessChain.swizzle.size() == 0 && accessChain.component == NoResult) return; // too complex? // (this requires either a swizzle, or generating code for a dynamic component) if (accessChain.swizzle.size() > 1) return; // single component, either in the swizzle and/or dynamic component if (accessChain.swizzle.size() == 1) { assert(accessChain.component == NoResult); // handle static component selection accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle.front())); accessChain.swizzle.clear(); accessChain.preSwizzleBaseType = NoType; } else if (dynamic && accessChain.component != NoResult) { assert(accessChain.swizzle.size() == 0); // handle dynamic component accessChain.indexChain.push_back(accessChain.component); accessChain.preSwizzleBaseType = NoType; accessChain.component = NoResult; } } // Utility method for creating a new block and setting the insert point to // be in it. This is useful for flow-control operations that need a "dummy" // block proceeding them (e.g. instructions after a discard, etc). void Builder::createAndSetNoPredecessorBlock(const char* /*name*/) { Block* block = new Block(getUniqueId(), buildPoint->getParent()); block->setUnreachable(); buildPoint->getParent().addBlock(block); setBuildPoint(block); // if (name) // addName(block->getId(), name); } // Comments in header void Builder::createBranch(bool implicit, Block* block) { Instruction* branch = new Instruction(Op::OpBranch); branch->addIdOperand(block->getId()); if (implicit) { addInstructionNoDebugInfo(std::unique_ptr(branch)); } else { addInstruction(std::unique_ptr(branch)); } block->addPredecessor(buildPoint); } void Builder::createSelectionMerge(Block* mergeBlock, SelectionControlMask control) { Instruction* merge = new Instruction(Op::OpSelectionMerge); merge->reserveOperands(2); merge->addIdOperand(mergeBlock->getId()); merge->addImmediateOperand(control); addInstruction(std::unique_ptr(merge)); } void Builder::createLoopMerge(Block* mergeBlock, Block* continueBlock, LoopControlMask control, const std::vector& operands) { Instruction* merge = new Instruction(Op::OpLoopMerge); merge->reserveOperands(operands.size() + 3); merge->addIdOperand(mergeBlock->getId()); merge->addIdOperand(continueBlock->getId()); merge->addImmediateOperand(control); for (int op = 0; op < (int)operands.size(); ++op) merge->addImmediateOperand(operands[op]); addInstruction(std::unique_ptr(merge)); } void Builder::createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock) { Instruction* branch = new Instruction(Op::OpBranchConditional); branch->reserveOperands(3); branch->addIdOperand(condition); branch->addIdOperand(thenBlock->getId()); branch->addIdOperand(elseBlock->getId()); // A conditional branch is always attached to a condition expression addInstructionNoDebugInfo(std::unique_ptr(branch)); thenBlock->addPredecessor(buildPoint); elseBlock->addPredecessor(buildPoint); } // OpSource // [OpSourceContinued] // ... void Builder::dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector& out) const { const int maxWordCount = 0xFFFF; const int opSourceWordCount = 4; const int nonNullBytesPerInstruction = 4 * (maxWordCount - opSourceWordCount) - 1; if (sourceLang != SourceLanguage::Unknown) { // OpSource Language Version File Source Instruction sourceInst(NoResult, NoType, Op::OpSource); sourceInst.reserveOperands(3); sourceInst.addImmediateOperand(sourceLang); sourceInst.addImmediateOperand(sourceVersion); // File operand if (fileId != NoResult) { sourceInst.addIdOperand(fileId); // Source operand if (text.size() > 0) { int nextByte = 0; std::string subString; while ((int)text.size() - nextByte > 0) { subString = text.substr(nextByte, nonNullBytesPerInstruction); if (nextByte == 0) { // OpSource sourceInst.addStringOperand(subString.c_str()); sourceInst.dump(out); } else { // OpSourcContinued Instruction sourceContinuedInst(Op::OpSourceContinued); sourceContinuedInst.addStringOperand(subString.c_str()); sourceContinuedInst.dump(out); } nextByte += nonNullBytesPerInstruction; } } else sourceInst.dump(out); } else sourceInst.dump(out); } } // Dump an OpSource[Continued] sequence for the source and every include file void Builder::dumpSourceInstructions(std::vector& out) const { if (emitNonSemanticShaderDebugInfo) return; dumpSourceInstructions(mainFileId, sourceText, out); for (auto iItr = includeFiles.begin(); iItr != includeFiles.end(); ++iItr) dumpSourceInstructions(iItr->first, *iItr->second, out); } template void Builder::dumpInstructions(std::vector& out, const Range& instructions) const { for (const auto& inst : instructions) { inst->dump(out); } } void Builder::dumpModuleProcesses(std::vector& out) const { for (int i = 0; i < (int)moduleProcesses.size(); ++i) { Instruction moduleProcessed(Op::OpModuleProcessed); moduleProcessed.addStringOperand(moduleProcesses[i]); moduleProcessed.dump(out); } } bool Builder::DecorationInstructionLessThan::operator()(const std::unique_ptr& lhs, const std::unique_ptr& rhs) const { // Order by the id to which the decoration applies first. This is more intuitive. assert(lhs->isIdOperand(0) && rhs->isIdOperand(0)); if (lhs->getIdOperand(0) != rhs->getIdOperand(0)) { return lhs->getIdOperand(0) < rhs->getIdOperand(0); } if (lhs->getOpCode() != rhs->getOpCode()) return lhs->getOpCode() < rhs->getOpCode(); // Now compare the operands. int minSize = std::min(lhs->getNumOperands(), rhs->getNumOperands()); for (int i = 1; i < minSize; ++i) { if (lhs->isIdOperand(i) != rhs->isIdOperand(i)) { return lhs->isIdOperand(i) < rhs->isIdOperand(i); } if (lhs->isIdOperand(i)) { if (lhs->getIdOperand(i) != rhs->getIdOperand(i)) { return lhs->getIdOperand(i) < rhs->getIdOperand(i); } } else { if (lhs->getImmediateOperand(i) != rhs->getImmediateOperand(i)) { return lhs->getImmediateOperand(i) < rhs->getImmediateOperand(i); } } } if (lhs->getNumOperands() != rhs->getNumOperands()) return lhs->getNumOperands() < rhs->getNumOperands(); // In this case they are equal. return false; } } // end spv namespace glslang-16.0.0/SPIRV/SpvBuilder.h000066400000000000000000001377771506534232700164150ustar00rootroot00000000000000// // Copyright (C) 2014-2015 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017 ARM Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // "Builder" is an interface to fully build SPIR-V IR. Allocate one of // these to build (a thread safe) internal SPIR-V representation (IR), // and then dump it as a binary stream according to the SPIR-V specification. // // A Builder has a 1:1 relationship with a SPIR-V module. // #pragma once #ifndef SpvBuilder_H #define SpvBuilder_H #include "Logger.h" #define SPV_ENABLE_UTILITY_CODE #include "spirv.hpp11" #include "spvIR.h" #include "spvUtil.h" namespace spv { #include "GLSL.ext.KHR.h" #include "GLSL.ext.EXT.h" #include "NonSemanticShaderDebugInfo100.h" } #include #include #include #include #include #include #include #include #include #include namespace spv { typedef enum { Spv_1_0 = (1 << 16), Spv_1_1 = (1 << 16) | (1 << 8), Spv_1_2 = (1 << 16) | (2 << 8), Spv_1_3 = (1 << 16) | (3 << 8), Spv_1_4 = (1 << 16) | (4 << 8), Spv_1_5 = (1 << 16) | (5 << 8), Spv_1_6 = (1 << 16) | (6 << 8), } SpvVersion; class Builder { public: Builder(unsigned int spvVersion, unsigned int userNumber, SpvBuildLogger* logger); virtual ~Builder(); static const int maxMatrixSize = 4; unsigned int getSpvVersion() const { return spvVersion; } void setSource(spv::SourceLanguage lang, int version) { sourceLang = lang; sourceVersion = version; } spv::Id getStringId(const std::string& str) { auto sItr = stringIds.find(str); if (sItr != stringIds.end()) return sItr->second; spv::Id strId = getUniqueId(); Instruction* fileString = new Instruction(strId, NoType, Op::OpString); const char* file_c_str = str.c_str(); fileString->addStringOperand(file_c_str); strings.push_back(std::unique_ptr(fileString)); module.mapInstruction(fileString); stringIds[file_c_str] = strId; return strId; } spv::Id getMainFileId() const { return mainFileId; } // Initialize the main source file name void setDebugMainSourceFile(const std::string& file) { if (trackDebugInfo) { dirtyLineTracker = true; mainFileId = getStringId(file); currentFileId = mainFileId; } } // Set the debug source location tracker in the builder. // The upcoming instructions in basic blocks will be associated to this location. void setDebugSourceLocation(int line, const char* filename) { if (trackDebugInfo) { dirtyLineTracker = true; if (line != 0) { // TODO: This is special handling of some AST nodes having (untracked) line 0. // But they should have a valid line number. currentLine = line; if (filename) { currentFileId = getStringId(filename); } } } } 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 setEmitSpirvDebugInfo() { trackDebugInfo = true; emitSpirvDebugInfo = true; } void setEmitNonSemanticShaderDebugInfo(bool emitSourceText) { trackDebugInfo = true; emitNonSemanticShaderDebugInfo = true; importNonSemanticShaderDebugInfoInstructions(); if (emitSourceText) { emitNonSemanticShaderDebugSource = emitSourceText; } } void addExtension(const char* ext) { extensions.insert(ext); } void removeExtension(const char* ext) { extensions.erase(ext); } void addIncorporatedExtension(const char* ext, SpvVersion incorporatedVersion) { if (getSpvVersion() < static_cast(incorporatedVersion)) addExtension(ext); } void promoteIncorporatedExtension(const char* baseExt, const char* promoExt, SpvVersion incorporatedVersion) { removeExtension(baseExt); addIncorporatedExtension(promoExt, incorporatedVersion); } void addInclude(const std::string& name, const std::string& text) { spv::Id incId = getStringId(name); includeFiles[incId] = &text; } Id import(const char*); void setMemoryModel(spv::AddressingModel addr, spv::MemoryModel mem) { addressModel = addr; memoryModel = mem; } void addCapability(spv::Capability cap) { capabilities.insert(cap); } // To get a new for anything needing a new one. Id getUniqueId() { return ++uniqueId; } // To get a set of new s, e.g., for a set of function parameters Id getUniqueIds(int numIds) { Id id = uniqueId + 1; uniqueId += numIds; return id; } // For creating new types (will return old type if the requested one was already made). Id makeVoidType(); Id makeBoolType(); Id makePointer(StorageClass, Id pointee); Id makeForwardPointer(StorageClass); Id makePointerFromForwardPointer(StorageClass, Id forwardPointerType, Id pointee); Id makeIntegerType(int width, bool hasSign); // generic Id makeIntType(int width) { return makeIntegerType(width, true); } Id makeUintType(int width) { return makeIntegerType(width, false); } Id makeFloatType(int width); Id makeBFloat16Type(); Id makeFloatE5M2Type(); Id makeFloatE4M3Type(); Id makeStructType(const std::vector& 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); Id makeArrayType(Id element, Id sizeId, int stride); // 0 stride means no stride decoration Id makeRuntimeArray(Id element); Id makeFunctionType(Id returnType, const std::vector& paramTypes); Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format); Id makeSamplerType(); Id makeSampledImageType(Id imageType); Id makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use); Id makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols); Id makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType); Id makeCooperativeVectorTypeNV(Id componentType, Id components); Id makeTensorTypeARM(Id elementType, Id rank); Id makeGenericType(spv::Op opcode, std::vector& operands); // SPIR-V NonSemantic Shader DebugInfo Instructions struct DebugTypeLoc { std::string name {}; int line {0}; int column {0}; }; std::unordered_map 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 const& memberTypes, char const*const name, NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false); Id makePointerDebugType(StorageClass storageClass, Id const baseType); Id makeForwardPointerDebugType(StorageClass storageClass); 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 pointer); Id makeDebugValue(Id const debugLocalVariable, Id const value); Id makeDebugFunctionType(Id returnType, const std::vector& paramTypes); Id makeDebugFunction(Function* function, Id nameId, Id funcTypeId); Id makeDebugLexicalBlock(uint32_t line, uint32_t column); std::string unmangleFunctionName(std::string const& name) const; // Initialize non-semantic debug information for a function, including those of: // - The function definition // - The function parameters void setupFunctionDebugInfo(Function* function, const char* name, const std::vector& paramTypes, const std::vector& paramNames); // accelerationStructureNV type Id makeAccelerationStructureType(); // rayQueryEXT type Id makeRayQueryType(); // hitObjectNV type Id makeHitObjectNVType(); // For querying about types. Id getTypeId(Id resultId) const { return module.getTypeId(resultId); } Id getDerefTypeId(Id resultId) const; Op getOpCode(Id id) const { return module.getInstruction(id)->getOpCode(); } Op getTypeClass(Id typeId) const { return getOpCode(typeId); } Op getMostBasicTypeClass(Id typeId) const; unsigned int getNumComponents(Id resultId) const { return getNumTypeComponents(getTypeId(resultId)); } unsigned int getNumTypeConstituents(Id typeId) const; unsigned int getNumTypeComponents(Id typeId) const { return getNumTypeConstituents(typeId); } Id getScalarTypeId(Id typeId) const; Id getContainedTypeId(Id typeId) const; Id getContainedTypeId(Id typeId, int) const; StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); } ImageFormat getImageTypeFormat(Id typeId) const { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); } Id getResultingAccessChainType() const; Id getIdOperand(Id resultId, int idx) { return module.getInstruction(resultId)->getIdOperand(idx); } Id getCooperativeVectorNumComponents(Id typeId) const { return module.getInstruction(typeId)->getIdOperand(1); } bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); } bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); } bool isVector(Id resultId) const { return isVectorType(getTypeId(resultId)); } bool isMatrix(Id resultId) const { return isMatrixType(getTypeId(resultId)); } bool isCooperativeMatrix(Id resultId)const { return isCooperativeMatrixType(getTypeId(resultId)); } bool isCooperativeVector(Id resultId)const { return isCooperativeVectorType(getTypeId(resultId)); } bool isAggregate(Id resultId) const { return isAggregateType(getTypeId(resultId)); } bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); } bool isTensorView(Id resultId)const { return isTensorViewType(getTypeId(resultId)); } bool isBoolType(Id typeId) { return groupedTypes[enumCast(Op::OpTypeBool)].size() > 0 && typeId == groupedTypes[enumCast(Op::OpTypeBool)].back()->getResultId(); } bool isIntType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) != 0; } bool isUintType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) == 0; } bool isFloatType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeFloat; } bool isPointerType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypePointer; } bool isScalarType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeFloat || getTypeClass(typeId) == Op::OpTypeInt || getTypeClass(typeId) == Op::OpTypeBool; } bool isVectorType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeVector; } bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeMatrix; } bool isStructType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeStruct; } bool isArrayType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeArray; } bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == Op::OpTypeCooperativeMatrixKHR || getTypeClass(typeId) == Op::OpTypeCooperativeMatrixNV; } bool isTensorViewType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeTensorViewNV; } bool isCooperativeVectorType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeCooperativeVectorNV; } bool isTensorTypeARM(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeTensorARM; } bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); } bool isImageType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeImage; } bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeSampler; } bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeSampledImage; } bool containsType(Id typeId, Op typeOp, unsigned int width) const; bool containsPhysicalStorageBufferOrArray(Id typeId) const; bool isConstantOpCode(Op opcode) const; bool isSpecConstantOpCode(Op opcode) const; bool isConstant(Id resultId) const { return isConstantOpCode(getOpCode(resultId)); } bool isConstantScalar(Id resultId) const { return getOpCode(resultId) == Op::OpConstant; } bool isSpecConstant(Id resultId) const { return isSpecConstantOpCode(getOpCode(resultId)); } unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); } StorageClass getStorageClass(Id resultId) const { return getTypeStorageClass(getTypeId(resultId)); } bool isVariableOpCode(Op opcode) const { return opcode == Op::OpVariable; } bool isVariable(Id resultId) const { return isVariableOpCode(getOpCode(resultId)); } bool isGlobalStorage(Id resultId) const { return getStorageClass(resultId) != StorageClass::Function; } bool isGlobalVariable(Id resultId) const { return isVariable(resultId) && isGlobalStorage(resultId); } // See if a resultId is valid for use as an initializer. bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); } int getScalarTypeWidth(Id typeId) const { Id scalarTypeId = getScalarTypeId(typeId); assert(getTypeClass(scalarTypeId) == Op::OpTypeInt || getTypeClass(scalarTypeId) == Op::OpTypeFloat); return module.getInstruction(scalarTypeId)->getImmediateOperand(0); } unsigned int getTypeNumColumns(Id typeId) const { assert(isMatrixType(typeId)); return getNumTypeConstituents(typeId); } unsigned int getNumColumns(Id resultId) const { return getTypeNumColumns(getTypeId(resultId)); } unsigned int getTypeNumRows(Id typeId) const { assert(isMatrixType(typeId)); return getNumTypeComponents(getContainedTypeId(typeId)); } unsigned int getNumRows(Id resultId) const { return getTypeNumRows(getTypeId(resultId)); } Dim getTypeDimensionality(Id typeId) const { assert(isImageType(typeId)); return (Dim)module.getInstruction(typeId)->getImmediateOperand(1); } Id getImageType(Id resultId) const { Id typeId = getTypeId(resultId); assert(isImageType(typeId) || isSampledImageType(typeId)); return isSampledImageType(typeId) ? module.getInstruction(typeId)->getIdOperand(0) : typeId; } bool isArrayedImageType(Id typeId) const { assert(isImageType(typeId)); return module.getInstruction(typeId)->getImmediateOperand(3) != 0; } // For making new constants (will return old constant if the requested one was already made). Id makeNullConstant(Id typeId); Id makeBoolConstant(bool b, bool specConstant = false); Id makeIntConstant(Id typeId, unsigned value, bool specConstant); Id makeInt64Constant(Id typeId, unsigned long long value, bool specConstant); Id makeInt8Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); } Id makeUint8Constant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(8), u, specConstant); } Id makeInt16Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(16), (unsigned)i, specConstant); } Id makeUint16Constant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(16), u, specConstant); } Id makeIntConstant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(32), (unsigned)i, specConstant); } Id makeUintConstant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(32), u, specConstant); } Id makeUintConstant(Scope u, bool specConstant = false) { return makeUintConstant((unsigned)u, specConstant); } Id makeUintConstant(StorageClass u, bool specConstant = false) { return makeUintConstant((unsigned)u, specConstant); } Id makeUintConstant(MemorySemanticsMask u, bool specConstant = false) { return makeUintConstant((unsigned)u, specConstant); } Id makeUintConstant(SourceLanguage u, bool specConstant = false) { return makeUintConstant((unsigned)u, specConstant); } Id makeInt64Constant(long long i, bool specConstant = false) { return makeInt64Constant(makeIntType(64), (unsigned long long)i, specConstant); } Id makeUint64Constant(unsigned long long u, bool specConstant = false) { return makeInt64Constant(makeUintType(64), u, specConstant); } Id makeFloatConstant(float f, bool specConstant = false); Id makeDoubleConstant(double d, bool specConstant = false); Id makeFloat16Constant(float f16, bool specConstant = false); Id makeBFloat16Constant(float bf16, bool specConstant = false); Id makeFloatE5M2Constant(float fe5m2, bool specConstant = false); Id makeFloatE4M3Constant(float fe4m3, 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& comps, bool specConst = false); // Methods for adding information outside the CFG. Instruction* addEntryPoint(ExecutionModel, Function*, const char* name); void addExecutionMode(Function*, ExecutionMode mode, int value1 = -1, int value2 = -1, int value3 = -1); void addExecutionMode(Function*, ExecutionMode mode, const std::vector& literals); void addExecutionModeId(Function*, ExecutionMode mode, const std::vector& operandIds); void addName(Id, const char* name); void addMemberName(Id, int member, const char* name); void addDecoration(Id, Decoration, int num = -1); void addDecoration(Id, Decoration, const char*); void addDecoration(Id, Decoration, const std::vector& literals); void addDecoration(Id, Decoration, const std::vector& strings); void addLinkageDecoration(Id id, const char* name, spv::LinkageType linkType); void addDecorationId(Id id, Decoration, Id idDecoration); void addDecorationId(Id id, Decoration, const std::vector& operandIds); void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1); void addMemberDecoration(Id, unsigned int member, Decoration, const char*); void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector& literals); void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector& strings); // At the end of what block do the next create*() instructions go? // Also reset current last DebugScope and current source line to unknown void setBuildPoint(Block* bp) { buildPoint = bp; dirtyLineTracker = true; dirtyScopeTracker = true; } Block* getBuildPoint() const { return buildPoint; } // Append an instruction to the end of the current build point. // Optionally, additional debug info instructions may also be prepended. void addInstruction(std::unique_ptr inst); // Append an instruction to the end of the current build point without prepending any debug instructions. // This is useful for insertion of some debug info instructions themselves or some control flow instructions // that are attached to its predecessor instruction. void addInstructionNoDebugInfo(std::unique_ptr inst); // Make the entry-point function. The returned pointer is only valid // for the lifetime of this builder. Function* makeEntryPoint(const char*); // Make a shader-style function, and create its entry block if entry is non-zero. // Return the function, pass back the entry. // The returned pointer is only valid for the lifetime of this builder. Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, LinkageType linkType, const std::vector& paramTypes, const std::vector>& precisions, Block** entry = nullptr); // 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 enterLexicalBlock(uint32_t line, uint32_t column); // Set state and generate instructions to exit current lexical scope void leaveLexicalBlock(); // 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(); // Create block terminator instruction for certain statements like // 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& operands, const char* name); // Create a global or function local or IO variable. 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); // Store into an Id and return the l-value void createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMask::MaskNone, spv::Scope scope = spv::Scope::Max, unsigned int alignment = 0); // Load from an Id and return it Id createLoad(Id lValue, spv::Decoration precision, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMask::MaskNone, spv::Scope scope = spv::Scope::Max, unsigned int alignment = 0); // Create an OpAccessChain instruction Id createAccessChain(StorageClass, Id base, const std::vector& offsets); // Create an OpArrayLength instruction Id createArrayLength(Id base, unsigned int member); // Create an OpCooperativeMatrixLengthKHR instruction Id createCooperativeMatrixLengthKHR(Id type); // Create an OpCooperativeMatrixLengthNV instruction Id createCooperativeMatrixLengthNV(Id type); // Create an OpCompositeExtract instruction Id createCompositeExtract(Id composite, Id typeId, unsigned index); Id createCompositeExtract(Id composite, Id typeId, const std::vector& indexes); Id createCompositeInsert(Id object, Id composite, Id typeId, unsigned index); Id createCompositeInsert(Id object, Id composite, Id typeId, const std::vector& indexes); Id createVectorExtractDynamic(Id vector, Id typeId, Id componentIndex); Id createVectorInsertDynamic(Id vector, Id typeId, Id component, Id componentIndex); void createNoResultOp(Op); void createNoResultOp(Op, Id operand); void createNoResultOp(Op, const std::vector& operands); void createNoResultOp(Op, const std::vector& operands); void createControlBarrier(Scope execution, Scope memory, MemorySemanticsMask); void createMemoryBarrier(Scope executionScope, MemorySemanticsMask memorySemantics); Id createUnaryOp(Op, Id typeId, Id operand); Id createBinOp(Op, Id typeId, Id operand1, Id operand2); Id createTriOp(Op, Id typeId, Id operand1, Id operand2, Id operand3); Id createOp(Op, Id typeId, const std::vector& operands); Id createOp(Op, Id typeId, const std::vector& operands); Id createFunctionCall(spv::Function*, const std::vector&); Id createSpecConstantOp(Op, Id typeId, const std::vector& operands, const std::vector& literals); // Take an rvalue (source) and a set of channels to extract from it to // make a new rvalue, which is returned. Id createRvalueSwizzle(Decoration precision, Id typeId, Id source, const std::vector& channels); // Take a copy of an lvalue (target) and a source of components, and set the // source components into the lvalue where the 'channels' say to put them. // An updated version of the target is returned. // (No true lvalue or stores are used.) Id createLvalueSwizzle(Id typeId, Id target, Id source, const std::vector& channels); // If both the id and precision are valid, the id // gets tagged with the requested precision. // The passed in id is always the returned id, to simplify use patterns. Id setPrecision(Id id, Decoration precision) { if (precision != NoPrecision && id != NoResult) addDecoration(id, precision); return id; } // Can smear a scalar to a vector for the following forms: // - promoteScalar(scalar, vector) // smear scalar to width of vector // - promoteScalar(vector, scalar) // smear scalar to width of vector // - promoteScalar(pointer, scalar) // smear scalar to width of what pointer points to // - promoteScalar(scalar, scalar) // do nothing // Other forms are not allowed. // // Generally, the type of 'scalar' does not need to be the same type as the components in 'vector'. // The type of the created vector is a vector of components of the same type as the scalar. // // Note: One of the arguments will change, with the result coming back that way rather than // through the return value. void promoteScalar(Decoration precision, Id& left, Id& right); // Make a value by smearing the scalar to fill the type. // vectorType should be the correct type for making a vector of scalarVal. // (No conversions are done.) Id smearScalar(Decoration precision, Id scalarVal, Id vectorType); // Create a call to a built-in function. Id createBuiltinCall(Id resultType, Id builtins, int entryPoint, const std::vector& args); // List of parameters used to create a texture operation struct TextureParameters { Id sampler; Id coords; Id bias; Id lod; Id Dref; Id offset; Id offsets; Id gradX; Id gradY; Id sample; Id component; Id texelOut; Id lodClamp; Id granularity; Id coarse; bool nonprivate; bool volatil; bool nontemporal; }; // Select the correct texture operation based on all inputs, and emit the correct instruction Id createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather, bool noImplicit, const TextureParameters&, ImageOperandsMask); // Emit the OpTextureQuery* instruction that was passed in. // Figure out the right return value and type, and return it. Id createTextureQueryCall(Op, const TextureParameters&, bool isUnsignedResult); Id createSamplePositionCall(Decoration precision, Id, Id); Id createBitFieldExtractCall(Decoration precision, Id, Id, Id, bool isSigned); Id createBitFieldInsertCall(Decoration precision, Id, Id, Id, Id); // Reduction comparison for composites: For equal and not-equal resulting in a scalar. Id createCompositeCompare(Decoration precision, Id, Id, bool /* true if for equal, false if for not-equal */); // OpCompositeConstruct Id createCompositeConstruct(Id typeId, const std::vector& constituents); // vector or scalar constructor Id createConstructor(Decoration precision, const std::vector& sources, Id resultTypeId); // matrix constructor Id createMatrixConstructor(Decoration precision, const std::vector& sources, Id constructee); // coopmat conversion Id createCooperativeMatrixConversion(Id typeId, Id source); Id createCooperativeMatrixReduce(Op opcode, Id typeId, Id source, unsigned int mask, Id func); Id createCooperativeMatrixPerElementOp(Id typeId, const std::vector& operands); // Helper to use for building nested control flow with if-then-else. class If { public: If(Id condition, SelectionControlMask ctrl, Builder& builder); ~If() {} void makeBeginElse(); void makeEndIf(); private: If(const If&); If& operator=(If&); Builder& builder; Id condition; SelectionControlMask control; Function* function; Block* headerBlock; Block* thenBlock; Block* elseBlock; Block* mergeBlock; }; // Make a switch statement. A switch has 'numSegments' of pieces of code, not containing // any case/default labels, all separated by one or more case/default labels. Each possible // case value v is a jump to the caseValues[v] segment. The defaultSegment is also in this // number space. How to compute the value is given by 'condition', as in switch(condition). // // The SPIR-V Builder will maintain the stack of post-switch merge blocks for nested switches. // // Use a defaultSegment < 0 if there is no default segment (to branch to post switch). // // Returns the right set of basic blocks to start each code segment with, so that the caller's // recursion stack can hold the memory for it. // void makeSwitch(Id condition, SelectionControlMask control, int numSegments, const std::vector& caseValues, const std::vector& valueToSegment, int defaultSegment, std::vector& segmentBB); // Add a branch to the innermost switch's merge block. void addSwitchBreak(bool implicit); // Move to the next code segment, passing in the return argument in makeSwitch() void nextSwitchSegment(std::vector& segmentBB, int segment); // Finish off the innermost switch. void endSwitch(std::vector& segmentBB); struct LoopBlocks { LoopBlocks(Block& head, Block& body, Block& merge, Block& continue_target) : head(head), body(body), merge(merge), continue_target(continue_target) { } Block &head, &body, &merge, &continue_target; private: LoopBlocks(); LoopBlocks& operator=(const LoopBlocks&) = delete; }; // Start a new loop and prepare the builder to generate code for it. Until // closeLoop() is called for this loop, createLoopContinue() and // createLoopExit() will target its corresponding blocks. LoopBlocks& makeNewLoop(); // Create a new block in the function containing the build point. Memory is // owned by the function object. Block& makeNewBlock(); // Add a branch to the continue_target of the current (innermost) loop. void createLoopContinue(); // Add an exit (e.g. "break") from the innermost loop that we're currently // in. void createLoopExit(); // Close the innermost loop that you're in void closeLoop(); // // Access chain design for an R-Value vs. L-Value: // // There is a single access chain the builder is building at // any particular time. Such a chain can be used to either to a load or // a store, when desired. // // Expressions can be r-values, l-values, or both, or only r-values: // a[b.c].d = .... // l-value // ... = a[b.c].d; // r-value, that also looks like an l-value // ++a[b.c].d; // r-value and l-value // (x + y)[2]; // r-value only, can't possibly be l-value // // Computing an r-value means generating code. Hence, // r-values should only be computed when they are needed, not speculatively. // // Computing an l-value means saving away information for later use in the compiler, // no code is generated until the l-value is later dereferenced. It is okay // to speculatively generate an l-value, just not okay to speculatively dereference it. // // The base of the access chain (the left-most variable or expression // from which everything is based) can be set either as an l-value // or as an r-value. Most efficient would be to set an l-value if one // is available. If an expression was evaluated, the resulting r-value // can be set as the chain base. // // The users of this single access chain can save and restore if they // want to nest or manage multiple chains. // struct AccessChain { Id base; // for l-values, pointer to the base object, for r-values, the base object std::vector indexChain; Id instr; // cache the instruction that generates this access chain std::vector swizzle; // each std::vector element selects the next GLSL component number Id component; // a dynamic component index, can coexist with a swizzle, // done after the swizzle, NoResult if not present Id preSwizzleBaseType; // dereferenced type, before swizzle or component is applied; // NoType unless a swizzle or component is present bool isRValue; // true if 'base' is an r-value, otherwise, base is an l-value unsigned int alignment; // bitwise OR of alignment values passed in. Accumulates worst alignment. // Only tracks base and (optional) component selection alignment. // Accumulate whether anything in the chain of structures has coherent decorations. struct CoherentFlags { CoherentFlags() { clear(); } bool isVolatile() const { return volatil; } bool isNonUniform() const { return nonUniform; } bool anyCoherent() const { return coherent || devicecoherent || queuefamilycoherent || workgroupcoherent || subgroupcoherent || shadercallcoherent; } unsigned coherent : 1; unsigned devicecoherent : 1; unsigned queuefamilycoherent : 1; unsigned workgroupcoherent : 1; unsigned subgroupcoherent : 1; unsigned shadercallcoherent : 1; unsigned nonprivate : 1; unsigned volatil : 1; unsigned nontemporal : 1; unsigned isImage : 1; unsigned nonUniform : 1; void clear() { coherent = 0; devicecoherent = 0; queuefamilycoherent = 0; workgroupcoherent = 0; subgroupcoherent = 0; shadercallcoherent = 0; nonprivate = 0; volatil = 0; nontemporal = 0; isImage = 0; nonUniform = 0; } CoherentFlags operator |=(const CoherentFlags &other) { coherent |= other.coherent; devicecoherent |= other.devicecoherent; queuefamilycoherent |= other.queuefamilycoherent; workgroupcoherent |= other.workgroupcoherent; subgroupcoherent |= other.subgroupcoherent; shadercallcoherent |= other.shadercallcoherent; nonprivate |= other.nonprivate; volatil |= other.volatil; nontemporal = other.nontemporal; isImage |= other.isImage; nonUniform |= other.nonUniform; return *this; } }; CoherentFlags coherentFlags; }; // // the SPIR-V builder maintains a single active chain that // the following methods operate on // // for external save and restore AccessChain getAccessChain() { return accessChain; } void setAccessChain(AccessChain newChain) { accessChain = newChain; } // clear accessChain void clearAccessChain(); // set new base as an l-value base void setAccessChainLValue(Id lValue) { assert(isPointer(lValue)); accessChain.base = lValue; } // set new base value as an r-value void setAccessChainRValue(Id rValue) { accessChain.isRValue = true; accessChain.base = rValue; } // push offset onto the end of the chain void accessChainPush(Id offset, AccessChain::CoherentFlags coherentFlags, unsigned int alignment) { accessChain.indexChain.push_back(offset); accessChain.coherentFlags |= coherentFlags; accessChain.alignment |= alignment; } // push new swizzle onto the end of any existing swizzle, merging into a single swizzle void accessChainPushSwizzle(std::vector& swizzle, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment); // push a dynamic component selection onto the access chain, only applicable with a // non-trivial swizzle or no swizzle void accessChainPushComponent(Id component, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment) { if (accessChain.swizzle.size() != 1) { accessChain.component = component; if (accessChain.preSwizzleBaseType == NoType) accessChain.preSwizzleBaseType = preSwizzleBaseType; } accessChain.coherentFlags |= coherentFlags; accessChain.alignment |= alignment; } // use accessChain and swizzle to store value void accessChainStore(Id rvalue, Decoration nonUniform, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMask::MaskNone, spv::Scope scope = spv::Scope::Max, unsigned int alignment = 0); // use accessChain and swizzle to load an r-value Id accessChainLoad(Decoration precision, Decoration l_nonUniform, Decoration r_nonUniform, Id ResultType, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMask::MaskNone, spv::Scope scope = spv::Scope::Max, unsigned int alignment = 0); // Return whether or not the access chain can be represented in SPIR-V // as an l-value. // E.g., a[3].yx cannot be, while a[3].y and a[3].y[x] can be. bool isSpvLvalue() const { return accessChain.swizzle.size() <= 1; } // get the direct pointer for an l-value Id accessChainGetLValue(); // Get the inferred SPIR-V type of the result of the current access chain, // based on the type of the base and the chain of dereferences. Id accessChainGetInferredType(); // Add capabilities, extensions, remove unneeded decorations, etc., // based on the resulting SPIR-V. void postProcess(bool compileOnly); // Prune unreachable blocks in the CFG and remove unneeded decorations. void postProcessCFG(); // Add capabilities, extensions based on instructions in the module. void postProcessFeatures(); // Hook to visit each instruction in a block in a function void postProcess(Instruction&); // Hook to visit each non-32-bit sized float/int operation in a block. void postProcessType(const Instruction&, spv::Id typeId); // move OpSampledImage instructions to be next to their users. void postProcessSamplers(); void dump(std::vector&) const; // Add a branch to the target block. // If set implicit, the branch instruction shouldn't have debug source location. void createBranch(bool implicit, Block* block); void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock); void createLoopMerge(Block* mergeBlock, Block* continueBlock, LoopControlMask control, const std::vector& operands); // Sets to generate opcode for specialization constants. void setToSpecConstCodeGenMode() { generatingOpCodeForSpecConst = true; } // Sets to generate opcode for non-specialization constants (normal mode). void setToNormalCodeGenMode() { generatingOpCodeForSpecConst = false; } // Check if the builder is generating code for spec constants. bool isInSpecConstCodeGenMode() { return generatingOpCodeForSpecConst; } void setUseReplicatedComposites(bool use) { useReplicatedComposites = use; } protected: Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned value); Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned v1, unsigned v2); Id findCompositeConstant(Op typeClass, Op opcode, Id typeId, const std::vector& comps, size_t numMembers); Id findStructConstant(Id typeId, const std::vector& comps); Id collapseAccessChain(); void remapDynamicSwizzle(); void transferAccessChainSwizzle(bool dynamic); void simplifyAccessChainSwizzle(); void createAndSetNoPredecessorBlock(const char*); void createSelectionMerge(Block* mergeBlock, SelectionControlMask control); void dumpSourceInstructions(std::vector&) const; void dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector&) const; template void dumpInstructions(std::vector& out, const Range& instructions) const; void dumpModuleProcesses(std::vector&) const; spv::MemoryAccessMask sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) const; struct DecorationInstructionLessThan { bool operator()(const std::unique_ptr& lhs, const std::unique_ptr& rhs) const; }; unsigned int spvVersion; // the version of SPIR-V to emit in the header SourceLanguage sourceLang; int sourceVersion; spv::Id nonSemanticShaderCompilationUnitId {0}; spv::Id nonSemanticShaderDebugInfo {0}; spv::Id debugInfoNone {0}; spv::Id debugExpression {0}; // Debug expression with zero operations. std::string sourceText; // True if an new OpLine/OpDebugLine may need to be inserted. Either: // 1. The current debug location changed // 2. The current build point changed bool dirtyLineTracker; int currentLine = 0; // OpString id of the current file name. Always 0 if debug info is off. spv::Id currentFileId = 0; // OpString id of the main file name. Always 0 if debug info is off. spv::Id mainFileId = 0; // True if an new OpDebugScope may need to be inserted. Either: // 1. A new lexical block is pushed // 2. The current build point changed bool dirtyScopeTracker; std::stack currentDebugScopeId; // This flag toggles tracking of debug info while building the SPIR-V. bool trackDebugInfo = false; // This flag toggles emission of SPIR-V debug instructions, like OpLine and OpSource. bool emitSpirvDebugInfo = false; // This flag toggles emission of Non-Semantic Debug extension debug instructions. bool emitNonSemanticShaderDebugInfo = false; bool restoreNonSemanticShaderDebugInfo = false; bool emitNonSemanticShaderDebugSource = false; std::set extensions; std::vector sourceExtensions; std::vector moduleProcesses; AddressingModel addressModel; MemoryModel memoryModel; std::set capabilities; int builderNumber; Module module; Block* buildPoint; Id uniqueId; Function* entryPointFunction; bool generatingOpCodeForSpecConst; bool useReplicatedComposites { false }; AccessChain accessChain; // special blocks of instructions for output std::vector > strings; std::vector > imports; std::vector > entryPoints; std::vector > executionModes; std::vector > names; std::set, DecorationInstructionLessThan> decorations; std::vector > constantsTypesGlobals; std::vector > externals; std::vector > functions; // not output, internally used for quick & dirty canonical (unique) creation // map type opcodes to constant inst. std::unordered_map> groupedConstants; // map struct-id to constant instructions std::unordered_map> groupedStructConstants; // map type opcodes to type instructions std::unordered_map> groupedTypes; // map type opcodes to debug type instructions std::unordered_map> groupedDebugTypes; // list of OpConstantNull instructions std::vector nullConstants; // Track which types have explicit layouts, to avoid reusing in storage classes without layout. // Currently only tracks array types. std::unordered_set explicitlyLaidOut; // stack of switches std::stack switchMerges; // Our loop stack. std::stack loops; // map from strings to their string ids std::unordered_map stringIds; // map from include file name ids to their contents std::map includeFiles; // map from core id to debug id std::map debugId; // map from file name string id to DebugSource id std::unordered_map debugSourceId; // The stream for outputting warnings and errors. SpvBuildLogger* logger; }; // end Builder class } // end spv namespace #endif // SpvBuilder_H glslang-16.0.0/SPIRV/SpvPostProcess.cpp000066400000000000000000000602521506534232700176250ustar00rootroot00000000000000// // Copyright (C) 2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Post-processing for SPIR-V IR, in internal form, not standard binary form. // #include #include #include #include #include #include "SpvBuilder.h" #include "spirv.hpp11" #include "spvUtil.h" namespace spv { #include "GLSL.std.450.h" #include "GLSL.ext.KHR.h" #include "GLSL.ext.EXT.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" #include "GLSL.ext.QCOM.h" } namespace spv { // Hook to visit each operand type and result type of an instruction. // Will be called multiple times for one instruction, once for each typed // operand and the result. void Builder::postProcessType(const Instruction& inst, Id typeId) { // Characterize the type being questioned Op basicTypeOp = getMostBasicTypeClass(typeId); int width = 0; if (basicTypeOp == Op::OpTypeFloat || basicTypeOp == Op::OpTypeInt) width = getScalarTypeWidth(typeId); // Do opcode-specific checks switch (inst.getOpCode()) { case Op::OpLoad: case Op::OpStore: if (basicTypeOp == Op::OpTypeStruct) { if (containsType(typeId, Op::OpTypeInt, 8)) addCapability(Capability::Int8); if (containsType(typeId, Op::OpTypeInt, 16)) addCapability(Capability::Int16); if (containsType(typeId, Op::OpTypeFloat, 16)) addCapability(Capability::Float16); } else { StorageClass storageClass = getStorageClass(inst.getIdOperand(0)); if (width == 8) { switch (storageClass) { case StorageClass::PhysicalStorageBufferEXT: case StorageClass::Uniform: case StorageClass::StorageBuffer: case StorageClass::PushConstant: break; default: addCapability(Capability::Int8); break; } } else if (width == 16) { switch (storageClass) { case StorageClass::PhysicalStorageBufferEXT: case StorageClass::Uniform: case StorageClass::StorageBuffer: case StorageClass::PushConstant: case StorageClass::Input: case StorageClass::Output: break; default: if (basicTypeOp == Op::OpTypeInt) addCapability(Capability::Int16); if (basicTypeOp == Op::OpTypeFloat) addCapability(Capability::Float16); break; } } } break; case Op::OpCopyObject: break; case Op::OpFConvert: case Op::OpSConvert: case Op::OpUConvert: // Look for any 8/16-bit storage capabilities. If there are none, assume that // the convert instruction requires the Float16/Int8/16 capability. if (containsType(typeId, Op::OpTypeFloat, 16) || containsType(typeId, Op::OpTypeInt, 16)) { bool foundStorage = false; for (auto it = capabilities.begin(); it != capabilities.end(); ++it) { spv::Capability cap = *it; if (cap == spv::Capability::StorageInputOutput16 || cap == spv::Capability::StoragePushConstant16 || cap == spv::Capability::StorageUniformBufferBlock16 || cap == spv::Capability::StorageUniform16) { foundStorage = true; break; } } if (!foundStorage) { if (containsType(typeId, Op::OpTypeFloat, 16)) addCapability(Capability::Float16); if (containsType(typeId, Op::OpTypeInt, 16)) addCapability(Capability::Int16); } } if (containsType(typeId, Op::OpTypeInt, 8)) { bool foundStorage = false; for (auto it = capabilities.begin(); it != capabilities.end(); ++it) { spv::Capability cap = *it; if (cap == spv::Capability::StoragePushConstant8 || cap == spv::Capability::UniformAndStorageBuffer8BitAccess || cap == spv::Capability::StorageBuffer8BitAccess) { foundStorage = true; break; } } if (!foundStorage) { addCapability(Capability::Int8); } } break; case Op::OpExtInst: switch (inst.getImmediateOperand(1)) { case GLSLstd450Frexp: case GLSLstd450FrexpStruct: if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, Op::OpTypeInt, 16)) addExtension(spv::E_SPV_AMD_gpu_shader_int16); break; case GLSLstd450InterpolateAtCentroid: case GLSLstd450InterpolateAtSample: case GLSLstd450InterpolateAtOffset: if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, Op::OpTypeFloat, 16)) addExtension(spv::E_SPV_AMD_gpu_shader_half_float); break; default: break; } break; case Op::OpAccessChain: case Op::OpPtrAccessChain: if (isPointerType(typeId)) break; if (basicTypeOp == Op::OpTypeInt) { if (width == 16) addCapability(Capability::Int16); else if (width == 8) addCapability(Capability::Int8); } break; default: if (basicTypeOp == Op::OpTypeInt) { if (width == 16) addCapability(Capability::Int16); else if (width == 8) addCapability(Capability::Int8); else if (width == 64) addCapability(Capability::Int64); } else if (basicTypeOp == Op::OpTypeFloat) { if (width == 16) addCapability(Capability::Float16); else if (width == 64) addCapability(Capability::Float64); } break; } } // Called for each instruction that resides in a block. void Builder::postProcess(Instruction& inst) { // Add capabilities based simply on the opcode. switch (inst.getOpCode()) { case Op::OpExtInst: switch (inst.getImmediateOperand(1)) { case GLSLstd450InterpolateAtCentroid: case GLSLstd450InterpolateAtSample: case GLSLstd450InterpolateAtOffset: addCapability(Capability::InterpolationFunction); break; default: break; } break; case Op::OpDPdxFine: case Op::OpDPdyFine: case Op::OpFwidthFine: case Op::OpDPdxCoarse: case Op::OpDPdyCoarse: case Op::OpFwidthCoarse: addCapability(Capability::DerivativeControl); break; case Op::OpImageQueryLod: case Op::OpImageQuerySize: case Op::OpImageQuerySizeLod: case Op::OpImageQuerySamples: case Op::OpImageQueryLevels: addCapability(Capability::ImageQuery); break; case Op::OpGroupNonUniformPartitionNV: addExtension(E_SPV_NV_shader_subgroup_partitioned); addCapability(Capability::GroupNonUniformPartitionedNV); break; case Op::OpLoad: case Op::OpStore: { // For any load/store to a PhysicalStorageBufferEXT, walk the accesschain // index list to compute the misalignment. The pre-existing alignment value // (set via Builder::AccessChain::alignment) only accounts for the base of // the reference type and any scalar component selection in the accesschain, // and this function computes the rest from the SPIR-V Offset decorations. Instruction *accessChain = module.getInstruction(inst.getIdOperand(0)); if (accessChain->getOpCode() == Op::OpAccessChain) { Instruction *base = module.getInstruction(accessChain->getIdOperand(0)); // Get the type of the base of the access chain. It must be a pointer type. Id typeId = base->getTypeId(); Instruction *type = module.getInstruction(typeId); assert(type->getOpCode() == Op::OpTypePointer); if (type->getImmediateOperand(0) != StorageClass::PhysicalStorageBufferEXT) { break; } // Get the pointee type. typeId = type->getIdOperand(1); type = module.getInstruction(typeId); // Walk the index list for the access chain. For each index, find any // misalignment that can apply when accessing the member/element via // Offset/ArrayStride/MatrixStride decorations, and bitwise OR them all // together. int alignment = 0; for (int i = 1; i < accessChain->getNumOperands(); ++i) { Instruction *idx = module.getInstruction(accessChain->getIdOperand(i)); if (type->getOpCode() == Op::OpTypeStruct) { assert(idx->getOpCode() == Op::OpConstant); unsigned int c = idx->getImmediateOperand(0); const auto function = [&](const std::unique_ptr& decoration) { if (decoration.get()->getOpCode() == Op::OpMemberDecorate && decoration.get()->getIdOperand(0) == typeId && decoration.get()->getImmediateOperand(1) == c && (decoration.get()->getImmediateOperand(2) == Decoration::Offset || decoration.get()->getImmediateOperand(2) == Decoration::MatrixStride)) { alignment |= decoration.get()->getImmediateOperand(3); } }; std::for_each(decorations.begin(), decorations.end(), function); // get the next member type typeId = type->getIdOperand(c); type = module.getInstruction(typeId); } else if (type->getOpCode() == Op::OpTypeArray || type->getOpCode() == Op::OpTypeRuntimeArray) { const auto function = [&](const std::unique_ptr& decoration) { if (decoration.get()->getOpCode() == Op::OpDecorate && decoration.get()->getIdOperand(0) == typeId && decoration.get()->getImmediateOperand(1) == Decoration::ArrayStride) { alignment |= decoration.get()->getImmediateOperand(2); } }; std::for_each(decorations.begin(), decorations.end(), function); // Get the element type typeId = type->getIdOperand(0); type = module.getInstruction(typeId); } else { // Once we get to any non-aggregate type, we're done. break; } } assert(inst.getNumOperands() >= 3); auto const memoryAccess = (MemoryAccessMask)inst.getImmediateOperand((inst.getOpCode() == Op::OpStore) ? 2 : 1); assert(anySet(memoryAccess, MemoryAccessMask::Aligned)); static_cast(memoryAccess); // Compute the index of the alignment operand. int alignmentIdx = 2; if (inst.getOpCode() == Op::OpStore) alignmentIdx++; // Merge new and old (mis)alignment alignment |= inst.getImmediateOperand(alignmentIdx); // Pick the LSB alignment = alignment & ~(alignment & (alignment-1)); // update the Aligned operand inst.setImmediateOperand(alignmentIdx, alignment); } break; } default: break; } // Checks based on type if (inst.getTypeId() != NoType) postProcessType(inst, inst.getTypeId()); for (int op = 0; op < inst.getNumOperands(); ++op) { if (inst.isIdOperand(op)) { // In blocks, these are always result ids, but we are relying on // getTypeId() to return NoType for things like OpLabel. if (getTypeId(inst.getIdOperand(op)) != NoType) postProcessType(inst, getTypeId(inst.getIdOperand(op))); } } } // comment in header void Builder::postProcessCFG() { // reachableBlocks is the set of blockss reached via control flow, or which are // unreachable continue targert or unreachable merge. std::unordered_set reachableBlocks; std::unordered_map headerForUnreachableContinue; std::unordered_set unreachableMerges; std::unordered_set unreachableDefinitions; // Collect IDs defined in unreachable blocks. For each function, label the // reachable blocks first. Then for each unreachable block, collect the // result IDs of the instructions in it. for (auto fi = module.getFunctions().cbegin(); fi != module.getFunctions().cend(); fi++) { Function* f = *fi; Block* entry = f->getEntryBlock(); inReadableOrder(entry, [&reachableBlocks, &unreachableMerges, &headerForUnreachableContinue] (Block* b, ReachReason why, Block* header) { reachableBlocks.insert(b); if (why == ReachDeadContinue) headerForUnreachableContinue[b] = header; if (why == ReachDeadMerge) unreachableMerges.insert(b); }); for (auto bi = f->getBlocks().cbegin(); bi != f->getBlocks().cend(); bi++) { Block* b = *bi; if (unreachableMerges.count(b) != 0 || headerForUnreachableContinue.count(b) != 0) { auto ii = b->getInstructions().cbegin(); ++ii; // Keep potential decorations on the label. for (; ii != b->getInstructions().cend(); ++ii) unreachableDefinitions.insert(ii->get()->getResultId()); } else if (reachableBlocks.count(b) == 0) { // The normal case for unreachable code. All definitions are considered dead. for (auto ii = b->getInstructions().cbegin(); ii != b->getInstructions().cend(); ++ii) unreachableDefinitions.insert(ii->get()->getResultId()); } } } // Modify unreachable merge blocks and unreachable continue targets. // Delete their contents. for (auto mergeIter = unreachableMerges.begin(); mergeIter != unreachableMerges.end(); ++mergeIter) { (*mergeIter)->rewriteAsCanonicalUnreachableMerge(); } for (auto continueIter = headerForUnreachableContinue.begin(); continueIter != headerForUnreachableContinue.end(); ++continueIter) { Block* continue_target = continueIter->first; Block* header = continueIter->second; continue_target->rewriteAsCanonicalUnreachableContinue(header); } // Remove unneeded decorations, for unreachable instructions for (auto decorationIter = decorations.begin(); decorationIter != decorations.end();) { Id decorationId = (*decorationIter)->getIdOperand(0); if (unreachableDefinitions.count(decorationId) != 0) { decorationIter = decorations.erase(decorationIter); } else { ++decorationIter; } } } // comment in header void Builder::postProcessFeatures() { // Add per-instruction capabilities, extensions, etc., // Look for any 8/16 bit type in physical storage buffer class, and set the // appropriate capability. This happens in createSpvVariable for other storage // classes, but there isn't always a variable for physical storage buffer. for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypePointer)].size(); ++t) { Instruction* type = groupedTypes[enumCast(Op::OpTypePointer)][t]; if (type->getImmediateOperand(0) == (unsigned)StorageClass::PhysicalStorageBufferEXT) { if (containsType(type->getIdOperand(1), Op::OpTypeInt, 8)) { addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); addCapability(spv::Capability::StorageBuffer8BitAccess); } if (containsType(type->getIdOperand(1), Op::OpTypeInt, 16) || containsType(type->getIdOperand(1), Op::OpTypeFloat, 16)) { addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); addCapability(spv::Capability::StorageBuffer16BitAccess); } } } // process all block-contained instructions for (auto fi = module.getFunctions().cbegin(); fi != module.getFunctions().cend(); fi++) { Function* f = *fi; for (auto bi = f->getBlocks().cbegin(); bi != f->getBlocks().cend(); bi++) { Block* b = *bi; for (auto ii = b->getInstructions().cbegin(); ii != b->getInstructions().cend(); ii++) postProcess(*ii->get()); // For all local variables that contain pointers to PhysicalStorageBufferEXT, check whether // there is an existing restrict/aliased decoration. If we don't find one, add Aliased as the // default. for (auto vi = b->getLocalVariables().cbegin(); vi != b->getLocalVariables().cend(); vi++) { const Instruction& inst = *vi->get(); Id resultId = inst.getResultId(); if (containsPhysicalStorageBufferOrArray(getDerefTypeId(resultId))) { bool foundDecoration = false; const auto function = [&](const std::unique_ptr& decoration) { if (decoration.get()->getIdOperand(0) == resultId && decoration.get()->getOpCode() == Op::OpDecorate && (decoration.get()->getImmediateOperand(1) == spv::Decoration::AliasedPointerEXT || decoration.get()->getImmediateOperand(1) == spv::Decoration::RestrictPointerEXT)) { foundDecoration = true; } }; std::for_each(decorations.begin(), decorations.end(), function); if (!foundDecoration) { addDecoration(resultId, spv::Decoration::AliasedPointerEXT); } } } } } // If any Vulkan memory model-specific functionality is used, update the // OpMemoryModel to match. if (capabilities.find(spv::Capability::VulkanMemoryModelKHR) != capabilities.end()) { memoryModel = spv::MemoryModel::VulkanKHR; addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5); } // Add Aliased decoration if there's more than one Workgroup Block variable. if (capabilities.find(spv::Capability::WorkgroupMemoryExplicitLayoutKHR) != capabilities.end()) { assert(entryPoints.size() == 1); auto &ep = entryPoints[0]; std::vector workgroup_variables; for (int i = 0; i < (int)ep->getNumOperands(); i++) { if (!ep->isIdOperand(i)) continue; const Id id = ep->getIdOperand(i); const Instruction *instr = module.getInstruction(id); if (instr->getOpCode() != spv::Op::OpVariable) continue; if (instr->getImmediateOperand(0) == spv::StorageClass::Workgroup) workgroup_variables.push_back(id); } if (workgroup_variables.size() > 1) { for (size_t i = 0; i < workgroup_variables.size(); i++) addDecoration(workgroup_variables[i], spv::Decoration::Aliased); } } } // SPIR-V requires that any instruction consuming the result of an OpSampledImage // be in the same block as the OpSampledImage instruction. This pass goes finds // uses of OpSampledImage where that is not the case and duplicates the // OpSampledImage to be immediately before the instruction that consumes it. // The old OpSampledImage is left in place, potentially with no users. void Builder::postProcessSamplers() { // first, find all OpSampledImage instructions and store them in a map. std::map sampledImageInstrs; for (auto f: module.getFunctions()) { for (auto b: f->getBlocks()) { for (auto &i: b->getInstructions()) { if (i->getOpCode() == spv::Op::OpSampledImage) { sampledImageInstrs[i->getResultId()] = i.get(); } } } } // next find all uses of the given ids and rewrite them if needed. for (auto f: module.getFunctions()) { for (auto b: f->getBlocks()) { auto &instrs = b->getInstructions(); for (size_t idx = 0; idx < instrs.size(); idx++) { Instruction *i = instrs[idx].get(); for (int opnum = 0; opnum < i->getNumOperands(); opnum++) { // Is this operand of the current instruction the result of an OpSampledImage? if (i->isIdOperand(opnum) && sampledImageInstrs.count(i->getIdOperand(opnum))) { Instruction *opSampImg = sampledImageInstrs[i->getIdOperand(opnum)]; if (i->getBlock() != opSampImg->getBlock()) { Instruction *newInstr = new Instruction(getUniqueId(), opSampImg->getTypeId(), spv::Op::OpSampledImage); newInstr->addIdOperand(opSampImg->getIdOperand(0)); newInstr->addIdOperand(opSampImg->getIdOperand(1)); newInstr->setBlock(b); // rewrite the user of the OpSampledImage to use the new instruction. i->setIdOperand(opnum, newInstr->getResultId()); // insert the new OpSampledImage right before the current instruction. instrs.insert(instrs.begin() + idx, std::unique_ptr(newInstr)); idx++; } } } } } } } // comment in header void Builder::postProcess(bool compileOnly) { // postProcessCFG needs an entrypoint to determine what is reachable, but if we are not creating an "executable" shader, we don't have an entrypoint if (!compileOnly) postProcessCFG(); postProcessFeatures(); postProcessSamplers(); } } // end spv namespace glslang-16.0.0/SPIRV/SpvTools.cpp000066400000000000000000000320601506534232700164350ustar00rootroot00000000000000// // Copyright (C) 2014-2016 LunarG, Inc. // Copyright (C) 2018-2020 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Call into SPIRV-Tools to disassemble, validate, and optimize. // #if ENABLE_OPT #include #include #include "SpvTools.h" #include "spirv-tools/optimizer.hpp" #include "glslang/MachineIndependent/localintermediate.h" namespace glslang { // Translate glslang's view of target versioning to what SPIRV-Tools uses. spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger) { switch (spvVersion.vulkan) { case glslang::EShTargetVulkan_1_0: return spv_target_env::SPV_ENV_VULKAN_1_0; case glslang::EShTargetVulkan_1_1: switch (spvVersion.spv) { case EShTargetSpv_1_0: case EShTargetSpv_1_1: case EShTargetSpv_1_2: case EShTargetSpv_1_3: return spv_target_env::SPV_ENV_VULKAN_1_1; case EShTargetSpv_1_4: return spv_target_env::SPV_ENV_VULKAN_1_1_SPIRV_1_4; default: logger->missingFunctionality("Target version for SPIRV-Tools validator"); return spv_target_env::SPV_ENV_VULKAN_1_1; } case glslang::EShTargetVulkan_1_2: return spv_target_env::SPV_ENV_VULKAN_1_2; case glslang::EShTargetVulkan_1_3: return spv_target_env::SPV_ENV_VULKAN_1_3; case glslang::EShTargetVulkan_1_4: return spv_target_env::SPV_ENV_VULKAN_1_4; default: break; } if (spvVersion.openGl > 0) return spv_target_env::SPV_ENV_OPENGL_4_5; logger->missingFunctionality("Target version for SPIRV-Tools validator"); return spv_target_env::SPV_ENV_UNIVERSAL_1_0; } spv_target_env MapToSpirvToolsEnv(const glslang::TIntermediate& intermediate, spv::SpvBuildLogger* logger) { return MapToSpirvToolsEnv(intermediate.getSpv(), logger); } // Callback passed to spvtools::Optimizer::SetMessageConsumer void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, const spv_position_t &position, const char *message) { auto &out = std::cerr; switch (level) { case SPV_MSG_FATAL: case SPV_MSG_INTERNAL_ERROR: case SPV_MSG_ERROR: out << "error: "; break; case SPV_MSG_WARNING: out << "warning: "; break; case SPV_MSG_INFO: case SPV_MSG_DEBUG: out << "info: "; break; default: break; } if (source) { out << source << ":"; } out << position.line << ":" << position.column << ":" << position.index << ":"; if (message) { out << " " << message; } out << std::endl; } // Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv) { SpirvToolsDisassemble(out, spirv, spv_target_env::SPV_ENV_UNIVERSAL_1_3); } // Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, spv_target_env requested_context) { // disassemble spv_context context = spvContextCreate(requested_context); spv_text text; spv_diagnostic diagnostic = nullptr; spvBinaryToText(context, spirv.data(), spirv.size(), SPV_BINARY_TO_TEXT_OPTION_FRIENDLY_NAMES | SPV_BINARY_TO_TEXT_OPTION_INDENT, &text, &diagnostic); // dump if (diagnostic == nullptr) out << text->str; else spvDiagnosticPrint(diagnostic); // teardown spvDiagnosticDestroy(diagnostic); spvContextDestroy(context); } // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger* logger, bool prelegalization) { // validate spv_context context = spvContextCreate(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); spv_const_binary_t binary = { spirv.data(), spirv.size() }; spv_diagnostic diagnostic = nullptr; spv_validator_options options = spvValidatorOptionsCreate(); spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets()); spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization); spvValidatorOptionsSetScalarBlockLayout(options, intermediate.usingScalarBlockLayout()); spvValidatorOptionsSetWorkgroupScalarBlockLayout(options, intermediate.usingScalarBlockLayout()); spvValidatorOptionsSetAllowOffsetTextureOperand(options, intermediate.usingTextureOffsetNonConst()); spvValidateWithOptions(context, options, &binary, &diagnostic); // report if (diagnostic != nullptr) { logger->error("SPIRV-Tools Validation Errors"); logger->error(diagnostic->error); } // tear down spvValidatorOptionsDestroy(options); spvDiagnosticDestroy(diagnostic); spvContextDestroy(context); } // Apply the SPIRV-Tools optimizer to generated SPIR-V. HLSL SPIR-V is legalized in the process. void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger* logger, const SpvOptions* options) { spv_target_env target_env = MapToSpirvToolsEnv(intermediate.getSpv(), logger); spvtools::Optimizer optimizer(target_env); optimizer.SetMessageConsumer(OptimizerMesssageConsumer); // If debug (specifically source line info) is being generated, propagate // line information into all SPIR-V instructions. This avoids loss of // information when instructions are deleted or moved. Later, remove // redundant information to minimize final SPRIR-V size. if (options->stripDebugInfo) { optimizer.RegisterPass(spvtools::CreateStripDebugInfoPass()); } optimizer.RegisterPass(spvtools::CreateWrapOpKillPass()); optimizer.RegisterPass(spvtools::CreateDeadBranchElimPass()); optimizer.RegisterPass(spvtools::CreateMergeReturnPass()); optimizer.RegisterPass(spvtools::CreateInlineExhaustivePass()); optimizer.RegisterPass(spvtools::CreateEliminateDeadFunctionsPass()); optimizer.RegisterPass(spvtools::CreateScalarReplacementPass()); optimizer.RegisterPass(spvtools::CreateLocalAccessChainConvertPass()); optimizer.RegisterPass(spvtools::CreateLocalSingleBlockLoadStoreElimPass()); optimizer.RegisterPass(spvtools::CreateLocalSingleStoreElimPass()); optimizer.RegisterPass(spvtools::CreateSimplificationPass()); optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateVectorDCEPass()); optimizer.RegisterPass(spvtools::CreateDeadInsertElimPass()); optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateDeadBranchElimPass()); optimizer.RegisterPass(spvtools::CreateBlockMergePass()); optimizer.RegisterPass(spvtools::CreateLocalMultiStoreElimPass()); optimizer.RegisterPass(spvtools::CreateIfConversionPass()); optimizer.RegisterPass(spvtools::CreateSimplificationPass()); optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateVectorDCEPass()); optimizer.RegisterPass(spvtools::CreateDeadInsertElimPass()); optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass()); if (options->optimizeSize) { optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsSafePass()); } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); spvtools::OptimizerOptions spvOptOptions; if (options->optimizerAllowExpandedIDBound) spvOptOptions.set_max_id_bound(0x3FFFFFFF); optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); spvOptOptions.set_run_validator(false); // The validator may run as a separate step later on optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); if (options->optimizerAllowExpandedIDBound) { if (spirv.size() > 3 && spirv[3] > kDefaultMaxIdBound) { spvtools::Optimizer optimizer2(target_env); optimizer2.SetMessageConsumer(OptimizerMesssageConsumer); optimizer2.RegisterPass(spvtools::CreateCompactIdsPass()); optimizer2.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); } } } bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, std::unordered_set* live_locs, std::unordered_set* live_builtins, spv::SpvBuildLogger*) { spvtools::Optimizer optimizer(target_env); optimizer.SetMessageConsumer(OptimizerMesssageConsumer); optimizer.RegisterPass(spvtools::CreateAnalyzeLiveInputPass(live_locs, live_builtins)); spvtools::OptimizerOptions spvOptOptions; optimizer.SetTargetEnv(target_env); spvOptOptions.set_run_validator(false); return optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); } void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector& spirv, std::unordered_set* live_locs, std::unordered_set* live_builtins, spv::SpvBuildLogger*) { spvtools::Optimizer optimizer(target_env); optimizer.SetMessageConsumer(OptimizerMesssageConsumer); optimizer.RegisterPass(spvtools::CreateEliminateDeadOutputStoresPass(live_locs, live_builtins)); optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass(false, true)); optimizer.RegisterPass(spvtools::CreateEliminateDeadOutputComponentsPass()); optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass(false, true)); spvtools::OptimizerOptions spvOptOptions; optimizer.SetTargetEnv(target_env); spvOptOptions.set_run_validator(false); optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); } void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector& spirv, spv::SpvBuildLogger*) { spvtools::Optimizer optimizer(target_env); optimizer.SetMessageConsumer(OptimizerMesssageConsumer); optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); spvtools::OptimizerOptions spvOptOptions; optimizer.SetTargetEnv(target_env); spvOptOptions.set_run_validator(false); optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); } // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if // optimization is disabled. void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger* logger) { spv_target_env target_env = MapToSpirvToolsEnv(intermediate.getSpv(), logger); spvtools::Optimizer optimizer(target_env); optimizer.SetMessageConsumer(OptimizerMesssageConsumer); optimizer.RegisterPass(spvtools::CreateStripDebugInfoPass()); spvtools::OptimizerOptions spvOptOptions; optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); spvOptOptions.set_run_validator(false); // The validator may run as a separate step later on optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); } } // end namespace glslang #endif glslang-16.0.0/SPIRV/SpvTools.h000066400000000000000000000122401506534232700161000ustar00rootroot00000000000000// // Copyright (C) 2014-2016 LunarG, Inc. // Copyright (C) 2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Call into SPIRV-Tools to disassemble, validate, and optimize. // #pragma once #ifndef GLSLANG_SPV_TOOLS_H #define GLSLANG_SPV_TOOLS_H #if ENABLE_OPT #include #include #include #include "spirv-tools/libspirv.h" #endif #include "glslang/MachineIndependent/Versions.h" #include "glslang/Include/visibility.h" #include "GlslangToSpv.h" #include "Logger.h" namespace glslang { #if ENABLE_OPT class TIntermediate; // Translate glslang's view of target versioning to what SPIRV-Tools uses. GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger); GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const glslang::TIntermediate& intermediate, spv::SpvBuildLogger* logger); // Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); // Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, spv_target_env requested_context); // Apply the SPIRV-Tools validator to generated SPIR-V. GLSLANG_EXPORT void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, bool prelegalization); // Apply the SPIRV-Tools optimizer to generated SPIR-V. HLSL SPIR-V is legalized in the process. GLSLANG_EXPORT void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, const SpvOptions*); // Apply the SPIRV-Tools EliminateDeadInputComponents pass to generated SPIR-V. Put result in |spirv|. GLSLANG_EXPORT void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector& spirv, spv::SpvBuildLogger*); // Apply the SPIRV-Tools AnalyzeDeadOutputStores pass to generated SPIR-V. Put result in |live_locs|. // Return true if the result is valid. GLSLANG_EXPORT bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, std::unordered_set* live_locs, std::unordered_set* live_builtins, spv::SpvBuildLogger*); // Apply the SPIRV-Tools EliminateDeadOutputStores and AggressiveDeadCodeElimination passes to generated SPIR-V using // |live_locs|. Put result in |spirv|. GLSLANG_EXPORT void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector& spirv, std::unordered_set* live_locs, std::unordered_set* live_builtins, spv::SpvBuildLogger*); // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if // optimization is disabled. GLSLANG_EXPORT void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*); #endif } // end namespace glslang #endif // GLSLANG_SPV_TOOLS_H glslang-16.0.0/SPIRV/bitutils.h000066400000000000000000000063641506534232700161600ustar00rootroot00000000000000// Copyright (c) 2015-2016 The Khronos Group Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef LIBSPIRV_UTIL_BITUTILS_H_ #define LIBSPIRV_UTIL_BITUTILS_H_ #include #include namespace spvutils { // Performs a bitwise copy of source to the destination type Dest. template Dest BitwiseCast(Src source) { Dest dest; static_assert(sizeof(source) == sizeof(dest), "BitwiseCast: Source and destination must have the same size"); std::memcpy(static_cast(&dest), &source, sizeof(dest)); return dest; } // SetBits returns an integer of type with bits set // for position through , counting from the least // significant bit. In particular when Num == 0, no positions are set to 1. // A static assert will be triggered if First + Num > sizeof(T) * 8, that is, // a bit that will not fit in the underlying type is set. template struct SetBits { static_assert(First < sizeof(T) * 8, "Tried to set a bit that is shifted too far."); const static T get = (T(1) << First) | SetBits::get; }; template struct SetBits { const static T get = T(0); }; // This is all compile-time so we can put our tests right here. static_assert(SetBits::get == uint32_t(0x00000000), "SetBits failed"); static_assert(SetBits::get == uint32_t(0x00000001), "SetBits failed"); static_assert(SetBits::get == uint32_t(0x80000000), "SetBits failed"); static_assert(SetBits::get == uint32_t(0x00000006), "SetBits failed"); static_assert(SetBits::get == uint32_t(0xc0000000), "SetBits failed"); static_assert(SetBits::get == uint32_t(0x7FFFFFFF), "SetBits failed"); static_assert(SetBits::get == uint32_t(0xFFFFFFFF), "SetBits failed"); static_assert(SetBits::get == uint32_t(0xFFFF0000), "SetBits failed"); static_assert(SetBits::get == uint64_t(0x0000000000000001LL), "SetBits failed"); static_assert(SetBits::get == uint64_t(0x8000000000000000LL), "SetBits failed"); static_assert(SetBits::get == uint64_t(0xc000000000000000LL), "SetBits failed"); static_assert(SetBits::get == uint64_t(0x0000000080000000LL), "SetBits failed"); static_assert(SetBits::get == uint64_t(0x00000000FFFF0000LL), "SetBits failed"); } // namespace spvutils #endif // LIBSPIRV_UTIL_BITUTILS_H_ glslang-16.0.0/SPIRV/disassemble.cpp000066400000000000000000001132411506534232700171400ustar00rootroot00000000000000// // Copyright (C) 2014-2015 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Disassembler for SPIR-V. // #include #include #include #include #include #include #include #include #include #include "disassemble.h" #include "doc.h" #include "spvUtil.h" namespace spv { extern "C" { // Include C-based headers that don't have a namespace #include "GLSL.std.450.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" #include "NonSemanticShaderDebugInfo100.h" #include "GLSL.ext.QCOM.h" } } static const char* GlslStd450DebugNames[spv::GLSLstd450Count]; namespace spv { static const char* GLSLextAMDGetDebugNames(const char*, unsigned); static const char* GLSLextNVGetDebugNames(const char*, unsigned); static const char* NonSemanticShaderDebugInfo100GetDebugNames(unsigned); static void Kill(std::ostream& out, const char* message) { out << std::endl << "Disassembly failed: " << message << std::endl; exit(1); } // used to identify the extended instruction library imported when printing enum ExtInstSet { GLSL450Inst, GLSLextAMDInst, GLSLextNVInst, OpenCLExtInst, NonSemanticDebugPrintfExtInst, NonSemanticDebugBreakExtInst, NonSemanticShaderDebugInfo100 }; // Container class for a single instance of a SPIR-V stream, with methods for disassembly. class SpirvStream { public: SpirvStream(std::ostream& out, const std::vector& stream) : out(out), stream(stream), word(0), nextNestedControl(0) { } virtual ~SpirvStream() { } void validate(); void processInstructions(); protected: SpirvStream(const SpirvStream&); SpirvStream& operator=(const SpirvStream&); Op getOpCode(int id) const { return idInstruction[id] ? (Op)(stream[idInstruction[id]] & OpCodeMask) : Op::OpNop; } // Output methods void outputIndent(); void formatId(Id id, std::stringstream&); void outputResultId(Id id); void outputTypeId(Id id); void outputId(Id id); void outputMask(OperandClass operandClass, unsigned mask); void disassembleImmediates(int numOperands); void disassembleIds(int numOperands); std::pair decodeString(); int disassembleString(); void disassembleInstruction(Id resultId, Id typeId, Op opCode, int numOperands); // Data std::ostream& out; // where to write the disassembly const std::vector& stream; // the actual word stream int size; // the size of the word stream int word; // the next word of the stream to read // map each to the instruction that created it Id bound; std::vector idInstruction; // the word offset into the stream where the instruction for result [id] starts; 0 if not yet seen (forward reference or function parameter) std::vector idDescriptor; // the best text string known for explaining the // schema unsigned int schema; // stack of structured-merge points std::stack nestedControl; Id nextNestedControl; // need a slight delay for when we are nested }; void SpirvStream::validate() { size = (int)stream.size(); if (size < 4) Kill(out, "stream is too short"); // Magic number if (stream[word++] != MagicNumber) { out << "Bad magic number"; return; } // Version out << "// Module Version " << std::hex << stream[word++] << std::endl; // Generator's magic number out << "// Generated by (magic number): " << std::hex << stream[word++] << std::dec << std::endl; // Result bound bound = stream[word++]; idInstruction.resize(bound); idDescriptor.resize(bound); out << "// Id's are bound by " << bound << std::endl; out << std::endl; // Reserved schema, must be 0 for now schema = stream[word++]; if (schema != 0) Kill(out, "bad schema, must be 0"); } // Loop over all the instructions, in order, processing each. // Boiler plate for each is handled here directly, the rest is dispatched. void SpirvStream::processInstructions() { // Instructions while (word < size) { int instructionStart = word; // Instruction wordCount and opcode unsigned int firstWord = stream[word]; unsigned wordCount = firstWord >> WordCountShift; Op opCode = (Op)(firstWord & OpCodeMask); int nextInst = word + wordCount; ++word; // Presence of full instruction if (nextInst > size) Kill(out, "stream instruction terminated too early"); // Base for computing number of operands; will be updated as more is learned unsigned numOperands = wordCount - 1; // Type Id typeId = 0; if (InstructionDesc[enumCast(opCode)].hasType()) { typeId = stream[word++]; --numOperands; } // Result Id resultId = 0; if (InstructionDesc[enumCast(opCode)].hasResult()) { resultId = stream[word++]; --numOperands; // save instruction for future reference idInstruction[resultId] = instructionStart; } outputResultId(resultId); outputTypeId(typeId); outputIndent(); // Hand off the Op and all its operands disassembleInstruction(resultId, typeId, opCode, numOperands); if (word != nextInst) { out << " ERROR, incorrect number of operands consumed. At " << word << " instead of " << nextInst << " instruction start was " << instructionStart; word = nextInst; } out << std::endl; } } void SpirvStream::outputIndent() { for (int i = 0; i < (int)nestedControl.size(); ++i) out << " "; } void SpirvStream::formatId(Id id, std::stringstream& idStream) { if (id != 0) { // On instructions with no IDs, this is called with "0", which does not // have to be within ID bounds on null shaders. if (id >= bound) Kill(out, "Bad "); idStream << id; if (idDescriptor[id].size() > 0) idStream << "(" << idDescriptor[id] << ")"; } } void SpirvStream::outputResultId(Id id) { const int width = 16; std::stringstream idStream; formatId(id, idStream); out << std::setw(width) << std::right << idStream.str(); if (id != 0) out << ":"; else out << " "; if (nestedControl.size() && id == nestedControl.top()) nestedControl.pop(); } void SpirvStream::outputTypeId(Id id) { const int width = 12; std::stringstream idStream; formatId(id, idStream); out << std::setw(width) << std::right << idStream.str() << " "; } void SpirvStream::outputId(Id id) { if (id >= bound) Kill(out, "Bad "); out << id; if (idDescriptor[id].size() > 0) out << "(" << idDescriptor[id] << ")"; } void SpirvStream::outputMask(OperandClass operandClass, unsigned mask) { if (mask == 0) out << "None"; else { for (int m = 0; m < OperandClassParams[operandClass].ceiling; ++m) { if (mask & (1 << m)) out << OperandClassParams[operandClass].getName(m) << " "; } } } void SpirvStream::disassembleImmediates(int numOperands) { for (int i = 0; i < numOperands; ++i) { out << stream[word++]; if (i < numOperands - 1) out << " "; } } void SpirvStream::disassembleIds(int numOperands) { for (int i = 0; i < numOperands; ++i) { outputId(stream[word++]); if (i < numOperands - 1) out << " "; } } // decode string from words at current position (non-consuming) std::pair SpirvStream::decodeString() { std::string res; int wordPos = word; char c; bool done = false; do { unsigned int content = stream[wordPos]; for (int charCount = 0; charCount < 4; ++charCount) { c = content & 0xff; content >>= 8; if (c == '\0') { done = true; break; } res += c; } ++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 decoderes = decodeString(); out << decoderes.second; out << "\""; word += decoderes.first; return decoderes.first; } static uint32_t popcount(uint32_t mask) { uint32_t count = 0; while (mask) { if (mask & 1) { count++; } mask >>= 1; } return count; } void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, int numOperands) { // Process the opcode out << (OpcodeString((int)opCode) + 2); // leave out the "Op" if (opCode == Op::OpLoopMerge || opCode == Op::OpSelectionMerge) nextNestedControl = stream[word]; else if (opCode == Op::OpBranchConditional || opCode == Op::OpSwitch) { if (nextNestedControl) { nestedControl.push(nextNestedControl); nextNestedControl = 0; } } else if (opCode == Op::OpExtInstImport) { idDescriptor[resultId] = decodeString().second; } else { if (resultId != 0 && idDescriptor[resultId].size() == 0) { switch (opCode) { case Op::OpTypeInt: switch (stream[word]) { case 8: idDescriptor[resultId] = "int8_t"; break; case 16: idDescriptor[resultId] = "int16_t"; break; default: assert(0); [[fallthrough]]; case 32: idDescriptor[resultId] = "int"; break; case 64: idDescriptor[resultId] = "int64_t"; break; } break; case Op::OpTypeFloat: switch (stream[word]) { case 8: case 16: if (numOperands > 1) { switch (stream[word+1]) { default: assert(0); [[fallthrough]]; case (int)spv::FPEncoding::BFloat16KHR: idDescriptor[resultId] = "bfloat16_t"; break; case (int)spv::FPEncoding::Float8E4M3EXT: idDescriptor[resultId] = "floate4m3_t"; break; case (int)spv::FPEncoding::Float8E5M2EXT: idDescriptor[resultId] = "floate5m2_t"; break; } } else { idDescriptor[resultId] = "float16_t"; } break; default: assert(0); [[fallthrough]]; case 32: idDescriptor[resultId] = "float"; break; case 64: idDescriptor[resultId] = "float64_t"; break; } break; case Op::OpTypeBool: idDescriptor[resultId] = "bool"; break; case Op::OpTypeStruct: idDescriptor[resultId] = "struct"; break; case Op::OpTypePointer: idDescriptor[resultId] = "ptr"; break; case Op::OpTypeVector: if (idDescriptor[stream[word]].size() > 0) { if (idDescriptor[stream[word]].substr(0,2) == "bf") { idDescriptor[resultId].append(idDescriptor[stream[word]].begin(), idDescriptor[stream[word]].begin() + 2); } else { idDescriptor[resultId].append(idDescriptor[stream[word]].begin(), idDescriptor[stream[word]].begin() + 1); } if (strstr(idDescriptor[stream[word]].c_str(), "8")) { idDescriptor[resultId].append("8"); } if (strstr(idDescriptor[stream[word]].c_str(), "16")) { idDescriptor[resultId].append("16"); } if (strstr(idDescriptor[stream[word]].c_str(), "64")) { idDescriptor[resultId].append("64"); } } idDescriptor[resultId].append("vec"); switch (stream[word + 1]) { case 2: idDescriptor[resultId].append("2"); break; case 3: idDescriptor[resultId].append("3"); break; case 4: idDescriptor[resultId].append("4"); break; case 8: idDescriptor[resultId].append("8"); break; case 16: idDescriptor[resultId].append("16"); break; case 32: idDescriptor[resultId].append("32"); break; default: break; } break; default: break; } } } // Process the operands. Note, a new context-dependent set could be // swapped in mid-traversal. // Handle images specially, so can put out helpful strings. if (opCode == Op::OpTypeImage) { out << " "; disassembleIds(1); out << " " << DimensionString((int)(Dim)stream[word++]); out << (stream[word++] != 0 ? " depth" : ""); out << (stream[word++] != 0 ? " array" : ""); out << (stream[word++] != 0 ? " multi-sampled" : ""); switch (stream[word++]) { case 0: out << " runtime"; break; case 1: out << " sampled"; break; case 2: out << " nonsampled"; break; } out << " format:" << ImageFormatString((int)(ImageFormat)stream[word++]); if (numOperands == 8) { out << " " << AccessQualifierString(stream[word++]); } return; } // Handle all the parameterized operands for (int op = 0; op < InstructionDesc[enumCast(opCode)].operands.getNum() && numOperands > 0; ++op) { out << " "; OperandClass operandClass = InstructionDesc[enumCast(opCode)].operands.getClass(op); switch (operandClass) { case OperandId: case OperandScope: case OperandMemorySemantics: disassembleIds(1); --numOperands; // Get names for printing "(XXX)" for readability, *after* this id if (opCode == Op::OpName) idDescriptor[stream[word - 1]] = decodeString().second; break; case OperandVariableIds: disassembleIds(numOperands); return; case OperandImageOperands: outputMask(OperandImageOperands, stream[word++]); --numOperands; disassembleIds(numOperands); return; case OperandOptionalLiteral: case OperandVariableLiterals: if ((opCode == Op::OpDecorate && stream[word - 1] == Decoration::BuiltIn) || (opCode == Op::OpMemberDecorate && stream[word - 1] == Decoration::BuiltIn)) { out << BuiltInString(stream[word++]); --numOperands; ++op; } disassembleImmediates(numOperands); return; case OperandVariableIdLiteral: while (numOperands > 0) { out << std::endl; outputResultId(0); outputTypeId(0); outputIndent(); out << " Type "; disassembleIds(1); out << ", member "; disassembleImmediates(1); numOperands -= 2; } return; case OperandVariableLiteralId: while (numOperands > 0) { out << std::endl; outputResultId(0); outputTypeId(0); outputIndent(); out << " case "; disassembleImmediates(1); out << ": "; disassembleIds(1); numOperands -= 2; } return; case OperandLiteralNumber: disassembleImmediates(1); --numOperands; if (opCode == Op::OpExtInst) { ExtInstSet extInstSet = GLSL450Inst; const char* name = idDescriptor[stream[word - 2]].c_str(); if (strcmp("OpenCL.std", name) == 0) { extInstSet = OpenCLExtInst; } else if (strcmp("OpenCL.DebugInfo.100", name) == 0) { extInstSet = OpenCLExtInst; } else if (strcmp("NonSemantic.DebugPrintf", name) == 0) { extInstSet = NonSemanticDebugPrintfExtInst; } else if (strcmp("NonSemantic.DebugBreak", name) == 0) { extInstSet = NonSemanticDebugBreakExtInst; } else if (strcmp("NonSemantic.Shader.DebugInfo.100", name) == 0) { extInstSet = NonSemanticShaderDebugInfo100; } else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 || strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 || strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 || strcmp(spv::E_SPV_AMD_gcn_shader, name) == 0) { extInstSet = GLSLextAMDInst; } else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 || strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 || strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 || strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 || strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 || strcmp(spv::E_SPV_NV_mesh_shader, name) == 0) { extInstSet = GLSLextNVInst; } unsigned entrypoint = stream[word - 1]; if (extInstSet == GLSL450Inst) { if (entrypoint < GLSLstd450Count) { out << "(" << GlslStd450DebugNames[entrypoint] << ")"; } } else if (extInstSet == GLSLextAMDInst) { out << "(" << GLSLextAMDGetDebugNames(name, entrypoint) << ")"; } else if (extInstSet == GLSLextNVInst) { out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")"; } else if (extInstSet == NonSemanticDebugPrintfExtInst) { out << "(DebugPrintf)"; } else if (extInstSet == NonSemanticDebugBreakExtInst) { out << "(DebugBreak)"; } else if (extInstSet == NonSemanticShaderDebugInfo100) { out << "(" << NonSemanticShaderDebugInfo100GetDebugNames(entrypoint) << ")"; } } break; case OperandOptionalLiteralString: case OperandLiteralString: numOperands -= disassembleString(); break; case OperandVariableLiteralStrings: while (numOperands > 0) numOperands -= disassembleString(); return; case OperandMemoryAccess: { outputMask(OperandMemoryAccess, stream[word++]); --numOperands; // Put a space after "None" if there are any remaining operands if (numOperands && stream[word-1] == 0) { out << " "; } uint32_t mask = stream[word-1]; // Aligned is the only memory access operand that uses an immediate // value, and it is also the first operand that uses a value at all. if (mask & (uint32_t)MemoryAccessMask::Aligned) { disassembleImmediates(1); numOperands--; if (numOperands) out << " "; } uint32_t bitCount = popcount(mask & (uint32_t)(MemoryAccessMask::MakePointerAvailable | MemoryAccessMask::MakePointerVisible)); disassembleIds(bitCount); numOperands -= bitCount; } break; case OperandTensorAddressingOperands: { outputMask(OperandTensorAddressingOperands, stream[word++]); --numOperands; // Put a space after "None" if there are any remaining operands if (numOperands && stream[word-1] == 0) { out << " "; } uint32_t bitCount = popcount(stream[word-1]); disassembleIds(bitCount); numOperands -= bitCount; } break; default: assert(operandClass >= OperandSource && operandClass < OperandOpcode); if (OperandClassParams[operandClass].bitmask) outputMask(operandClass, stream[word++]); else out << OperandClassParams[operandClass].getName(stream[word++]); --numOperands; break; } } return; } static void GLSLstd450GetDebugNames(const char** names) { for (int i = 0; i < GLSLstd450Count; ++i) names[i] = "Unknown"; names[GLSLstd450Round] = "Round"; names[GLSLstd450RoundEven] = "RoundEven"; names[GLSLstd450Trunc] = "Trunc"; names[GLSLstd450FAbs] = "FAbs"; names[GLSLstd450SAbs] = "SAbs"; names[GLSLstd450FSign] = "FSign"; names[GLSLstd450SSign] = "SSign"; names[GLSLstd450Floor] = "Floor"; names[GLSLstd450Ceil] = "Ceil"; names[GLSLstd450Fract] = "Fract"; names[GLSLstd450Radians] = "Radians"; names[GLSLstd450Degrees] = "Degrees"; names[GLSLstd450Sin] = "Sin"; names[GLSLstd450Cos] = "Cos"; names[GLSLstd450Tan] = "Tan"; names[GLSLstd450Asin] = "Asin"; names[GLSLstd450Acos] = "Acos"; names[GLSLstd450Atan] = "Atan"; names[GLSLstd450Sinh] = "Sinh"; names[GLSLstd450Cosh] = "Cosh"; names[GLSLstd450Tanh] = "Tanh"; names[GLSLstd450Asinh] = "Asinh"; names[GLSLstd450Acosh] = "Acosh"; names[GLSLstd450Atanh] = "Atanh"; names[GLSLstd450Atan2] = "Atan2"; names[GLSLstd450Pow] = "Pow"; names[GLSLstd450Exp] = "Exp"; names[GLSLstd450Log] = "Log"; names[GLSLstd450Exp2] = "Exp2"; names[GLSLstd450Log2] = "Log2"; names[GLSLstd450Sqrt] = "Sqrt"; names[GLSLstd450InverseSqrt] = "InverseSqrt"; names[GLSLstd450Determinant] = "Determinant"; names[GLSLstd450MatrixInverse] = "MatrixInverse"; names[GLSLstd450Modf] = "Modf"; names[GLSLstd450ModfStruct] = "ModfStruct"; names[GLSLstd450FMin] = "FMin"; names[GLSLstd450SMin] = "SMin"; names[GLSLstd450UMin] = "UMin"; names[GLSLstd450FMax] = "FMax"; names[GLSLstd450SMax] = "SMax"; names[GLSLstd450UMax] = "UMax"; names[GLSLstd450FClamp] = "FClamp"; names[GLSLstd450SClamp] = "SClamp"; names[GLSLstd450UClamp] = "UClamp"; names[GLSLstd450FMix] = "FMix"; names[GLSLstd450Step] = "Step"; names[GLSLstd450SmoothStep] = "SmoothStep"; names[GLSLstd450Fma] = "Fma"; names[GLSLstd450Frexp] = "Frexp"; names[GLSLstd450FrexpStruct] = "FrexpStruct"; names[GLSLstd450Ldexp] = "Ldexp"; names[GLSLstd450PackSnorm4x8] = "PackSnorm4x8"; names[GLSLstd450PackUnorm4x8] = "PackUnorm4x8"; names[GLSLstd450PackSnorm2x16] = "PackSnorm2x16"; names[GLSLstd450PackUnorm2x16] = "PackUnorm2x16"; names[GLSLstd450PackHalf2x16] = "PackHalf2x16"; names[GLSLstd450PackDouble2x32] = "PackDouble2x32"; names[GLSLstd450UnpackSnorm2x16] = "UnpackSnorm2x16"; names[GLSLstd450UnpackUnorm2x16] = "UnpackUnorm2x16"; names[GLSLstd450UnpackHalf2x16] = "UnpackHalf2x16"; names[GLSLstd450UnpackSnorm4x8] = "UnpackSnorm4x8"; names[GLSLstd450UnpackUnorm4x8] = "UnpackUnorm4x8"; names[GLSLstd450UnpackDouble2x32] = "UnpackDouble2x32"; names[GLSLstd450Length] = "Length"; names[GLSLstd450Distance] = "Distance"; names[GLSLstd450Cross] = "Cross"; names[GLSLstd450Normalize] = "Normalize"; names[GLSLstd450FaceForward] = "FaceForward"; names[GLSLstd450Reflect] = "Reflect"; names[GLSLstd450Refract] = "Refract"; names[GLSLstd450FindILsb] = "FindILsb"; names[GLSLstd450FindSMsb] = "FindSMsb"; names[GLSLstd450FindUMsb] = "FindUMsb"; names[GLSLstd450InterpolateAtCentroid] = "InterpolateAtCentroid"; names[GLSLstd450InterpolateAtSample] = "InterpolateAtSample"; names[GLSLstd450InterpolateAtOffset] = "InterpolateAtOffset"; names[GLSLstd450NMin] = "NMin"; names[GLSLstd450NMax] = "NMax"; names[GLSLstd450NClamp] = "NClamp"; } static const char* GLSLextAMDGetDebugNames(const char* name, unsigned entrypoint) { if (strcmp(name, spv::E_SPV_AMD_shader_ballot) == 0) { switch (entrypoint) { case SwizzleInvocationsAMD: return "SwizzleInvocationsAMD"; case SwizzleInvocationsMaskedAMD: return "SwizzleInvocationsMaskedAMD"; case WriteInvocationAMD: return "WriteInvocationAMD"; case MbcntAMD: return "MbcntAMD"; default: return "Bad"; } } else if (strcmp(name, spv::E_SPV_AMD_shader_trinary_minmax) == 0) { switch (entrypoint) { case FMin3AMD: return "FMin3AMD"; case UMin3AMD: return "UMin3AMD"; case SMin3AMD: return "SMin3AMD"; case FMax3AMD: return "FMax3AMD"; case UMax3AMD: return "UMax3AMD"; case SMax3AMD: return "SMax3AMD"; case FMid3AMD: return "FMid3AMD"; case UMid3AMD: return "UMid3AMD"; case SMid3AMD: return "SMid3AMD"; default: return "Bad"; } } else if (strcmp(name, spv::E_SPV_AMD_shader_explicit_vertex_parameter) == 0) { switch (entrypoint) { case InterpolateAtVertexAMD: return "InterpolateAtVertexAMD"; default: return "Bad"; } } else if (strcmp(name, spv::E_SPV_AMD_gcn_shader) == 0) { switch (entrypoint) { case CubeFaceIndexAMD: return "CubeFaceIndexAMD"; case CubeFaceCoordAMD: return "CubeFaceCoordAMD"; case TimeAMD: return "TimeAMD"; default: break; } } return "Bad"; } static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint) { if (strcmp(name, spv::E_SPV_NV_sample_mask_override_coverage) == 0 || strcmp(name, spv::E_SPV_NV_geometry_shader_passthrough) == 0 || strcmp(name, spv::E_ARB_shader_viewport_layer_array) == 0 || strcmp(name, spv::E_SPV_NV_viewport_array2) == 0 || strcmp(name, spv::E_SPV_NVX_multiview_per_view_attributes) == 0 || strcmp(name, spv::E_SPV_NV_fragment_shader_barycentric) == 0 || strcmp(name, spv::E_SPV_NV_mesh_shader) == 0 || strcmp(name, spv::E_SPV_NV_shader_image_footprint) == 0) { switch (entrypoint) { // NV builtins case (unsigned)BuiltIn::ViewportMaskNV: return "ViewportMaskNV"; case (unsigned)BuiltIn::SecondaryPositionNV: return "SecondaryPositionNV"; case (unsigned)BuiltIn::SecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; case (unsigned)BuiltIn::PositionPerViewNV: return "PositionPerViewNV"; case (unsigned)BuiltIn::ViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; case (unsigned)BuiltIn::BaryCoordNV: return "BaryCoordNV"; case (unsigned)BuiltIn::BaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; case (unsigned)BuiltIn::TaskCountNV: return "TaskCountNV"; case (unsigned)BuiltIn::PrimitiveCountNV: return "PrimitiveCountNV"; case (unsigned)BuiltIn::PrimitiveIndicesNV: return "PrimitiveIndicesNV"; case (unsigned)BuiltIn::ClipDistancePerViewNV: return "ClipDistancePerViewNV"; case (unsigned)BuiltIn::CullDistancePerViewNV: return "CullDistancePerViewNV"; case (unsigned)BuiltIn::LayerPerViewNV: return "LayerPerViewNV"; case (unsigned)BuiltIn::MeshViewCountNV: return "MeshViewCountNV"; case (unsigned)BuiltIn::MeshViewIndicesNV: return "MeshViewIndicesNV"; // NV Capabilities case (unsigned)Capability::GeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; case (unsigned)Capability::ShaderViewportMaskNV: return "ShaderViewportMaskNV"; case (unsigned)Capability::ShaderStereoViewNV: return "ShaderStereoViewNV"; case (unsigned)Capability::PerViewAttributesNV: return "PerViewAttributesNV"; case (unsigned)Capability::FragmentBarycentricNV: return "FragmentBarycentricNV"; case (unsigned)Capability::MeshShadingNV: return "MeshShadingNV"; case (unsigned)Capability::ImageFootprintNV: return "ImageFootprintNV"; case (unsigned)Capability::SampleMaskOverrideCoverageNV:return "SampleMaskOverrideCoverageNV"; // NV Decorations case (unsigned)Decoration::OverrideCoverageNV: return "OverrideCoverageNV"; case (unsigned)Decoration::PassthroughNV: return "PassthroughNV"; case (unsigned)Decoration::ViewportRelativeNV: return "ViewportRelativeNV"; case (unsigned)Decoration::SecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV"; case (unsigned)Decoration::PerVertexNV: return "PerVertexNV"; case (unsigned)Decoration::PerPrimitiveNV: return "PerPrimitiveNV"; case (unsigned)Decoration::PerViewNV: return "PerViewNV"; case (unsigned)Decoration::PerTaskNV: return "PerTaskNV"; default: return "Bad"; } } return "Bad"; } static const char* NonSemanticShaderDebugInfo100GetDebugNames(unsigned entrypoint) { switch (entrypoint) { case NonSemanticShaderDebugInfo100DebugInfoNone: return "DebugInfoNone"; case NonSemanticShaderDebugInfo100DebugCompilationUnit: return "DebugCompilationUnit"; case NonSemanticShaderDebugInfo100DebugTypeBasic: return "DebugTypeBasic"; case NonSemanticShaderDebugInfo100DebugTypePointer: return "DebugTypePointer"; case NonSemanticShaderDebugInfo100DebugTypeQualifier: return "DebugTypeQualifier"; case NonSemanticShaderDebugInfo100DebugTypeArray: return "DebugTypeArray"; case NonSemanticShaderDebugInfo100DebugTypeVector: return "DebugTypeVector"; case NonSemanticShaderDebugInfo100DebugTypedef: return "DebugTypedef"; case NonSemanticShaderDebugInfo100DebugTypeFunction: return "DebugTypeFunction"; case NonSemanticShaderDebugInfo100DebugTypeEnum: return "DebugTypeEnum"; case NonSemanticShaderDebugInfo100DebugTypeComposite: return "DebugTypeComposite"; case NonSemanticShaderDebugInfo100DebugTypeMember: return "DebugTypeMember"; case NonSemanticShaderDebugInfo100DebugTypeInheritance: return "DebugTypeInheritance"; case NonSemanticShaderDebugInfo100DebugTypePtrToMember: return "DebugTypePtrToMember"; case NonSemanticShaderDebugInfo100DebugTypeTemplate: return "DebugTypeTemplate"; case NonSemanticShaderDebugInfo100DebugTypeTemplateParameter: return "DebugTypeTemplateParameter"; case NonSemanticShaderDebugInfo100DebugTypeTemplateTemplateParameter: return "DebugTypeTemplateTemplateParameter"; case NonSemanticShaderDebugInfo100DebugTypeTemplateParameterPack: return "DebugTypeTemplateParameterPack"; case NonSemanticShaderDebugInfo100DebugGlobalVariable: return "DebugGlobalVariable"; case NonSemanticShaderDebugInfo100DebugFunctionDeclaration: return "DebugFunctionDeclaration"; case NonSemanticShaderDebugInfo100DebugFunction: return "DebugFunction"; case NonSemanticShaderDebugInfo100DebugLexicalBlock: return "DebugLexicalBlock"; case NonSemanticShaderDebugInfo100DebugLexicalBlockDiscriminator: return "DebugLexicalBlockDiscriminator"; case NonSemanticShaderDebugInfo100DebugScope: return "DebugScope"; case NonSemanticShaderDebugInfo100DebugNoScope: return "DebugNoScope"; case NonSemanticShaderDebugInfo100DebugInlinedAt: return "DebugInlinedAt"; case NonSemanticShaderDebugInfo100DebugLocalVariable: return "DebugLocalVariable"; case NonSemanticShaderDebugInfo100DebugInlinedVariable: return "DebugInlinedVariable"; case NonSemanticShaderDebugInfo100DebugDeclare: return "DebugDeclare"; case NonSemanticShaderDebugInfo100DebugValue: return "DebugValue"; case NonSemanticShaderDebugInfo100DebugOperation: return "DebugOperation"; case NonSemanticShaderDebugInfo100DebugExpression: return "DebugExpression"; case NonSemanticShaderDebugInfo100DebugMacroDef: return "DebugMacroDef"; case NonSemanticShaderDebugInfo100DebugMacroUndef: return "DebugMacroUndef"; case NonSemanticShaderDebugInfo100DebugImportedEntity: return "DebugImportedEntity"; case NonSemanticShaderDebugInfo100DebugSource: return "DebugSource"; case NonSemanticShaderDebugInfo100DebugFunctionDefinition: return "DebugFunctionDefinition"; case NonSemanticShaderDebugInfo100DebugSourceContinued: return "DebugSourceContinued"; case NonSemanticShaderDebugInfo100DebugLine: return "DebugLine"; case NonSemanticShaderDebugInfo100DebugNoLine: return "DebugNoLine"; case NonSemanticShaderDebugInfo100DebugBuildIdentifier: return "DebugBuildIdentifier"; case NonSemanticShaderDebugInfo100DebugStoragePath: return "DebugStoragePath"; case NonSemanticShaderDebugInfo100DebugEntryPoint: return "DebugEntryPoint"; case NonSemanticShaderDebugInfo100DebugTypeMatrix: return "DebugTypeMatrix"; default: return "Bad"; } return "Bad"; } void Disassemble(std::ostream& out, const std::vector& stream) { SpirvStream SpirvStream(out, stream); spv::Parameterize(); GLSLstd450GetDebugNames(GlslStd450DebugNames); SpirvStream.validate(); SpirvStream.processInstructions(); } } // end namespace spv glslang-16.0.0/SPIRV/disassemble.h000066400000000000000000000036761506534232700166170ustar00rootroot00000000000000// // Copyright (C) 2014-2015 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Disassembler for SPIR-V. // #pragma once #ifndef disassembler_H #define disassembler_H #include #include #include "glslang/Include/visibility.h" namespace spv { // disassemble with glslang custom disassembler GLSLANG_EXPORT void Disassemble(std::ostream& out, const std::vector&); } // end namespace spv #endif // disassembler_H glslang-16.0.0/SPIRV/doc.cpp000066400000000000000000007442721506534232700154300ustar00rootroot00000000000000// // Copyright (C) 2014-2015 LunarG, Inc. // Copyright (C) 2022-2025 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // 1) Programmatically fill in instruction/operand information. // This can be used for disassembly, printing documentation, etc. // // 2) Print documentation from this parameterization. // #include "doc.h" #include "spvUtil.h" #include #include #include #include namespace spv { extern "C" { // Include C-based headers that don't have a namespace #include "GLSL.ext.KHR.h" #include "GLSL.ext.EXT.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" #include "GLSL.ext.QCOM.h" } } namespace spv { // // Whole set of functions that translate enumerants to their text strings for // the specification (or their sanitized versions for auto-generating the // spirv headers. // // Also, for masks the ceilings are declared next to these, to help keep them in sync. // Ceilings should be // - one more than the maximum value an enumerant takes on, for non-mask enumerants // (for non-sparse enums, this is the number of enumerants) // - the number of bits consumed by the set of masks // (for non-sparse mask enums, this is the number of enumerants) // const char* SourceString(int source) { switch (source) { case 0: return "Unknown"; case 1: return "ESSL"; case 2: return "GLSL"; case 3: return "OpenCL_C"; case 4: return "OpenCL_CPP"; case 5: return "HLSL"; default: return "Bad"; } } const char* ExecutionModelString(int model) { switch (model) { case 0: return "Vertex"; case 1: return "TessellationControl"; case 2: return "TessellationEvaluation"; case 3: return "Geometry"; case 4: return "Fragment"; case 5: return "GLCompute"; case 6: return "Kernel"; case (int)ExecutionModel::TaskNV: return "TaskNV"; case (int)ExecutionModel::MeshNV: return "MeshNV"; case (int)ExecutionModel::TaskEXT: return "TaskEXT"; case (int)ExecutionModel::MeshEXT: return "MeshEXT"; default: return "Bad"; case (int)ExecutionModel::RayGenerationKHR: return "RayGenerationKHR"; case (int)ExecutionModel::IntersectionKHR: return "IntersectionKHR"; case (int)ExecutionModel::AnyHitKHR: return "AnyHitKHR"; case (int)ExecutionModel::ClosestHitKHR: return "ClosestHitKHR"; case (int)ExecutionModel::MissKHR: return "MissKHR"; case (int)ExecutionModel::CallableKHR: return "CallableKHR"; } } const char* AddressingString(int addr) { switch (addr) { case 0: return "Logical"; case 1: return "Physical32"; case 2: return "Physical64"; case (int)AddressingModel::PhysicalStorageBuffer64EXT: return "PhysicalStorageBuffer64EXT"; default: return "Bad"; } } const char* MemoryString(int mem) { switch (mem) { case (int)MemoryModel::Simple: return "Simple"; case (int)MemoryModel::GLSL450: return "GLSL450"; case (int)MemoryModel::OpenCL: return "OpenCL"; case (int)MemoryModel::VulkanKHR: return "VulkanKHR"; default: return "Bad"; } } const int ExecutionModeCeiling = 40; const char* ExecutionModeString(int mode) { switch (mode) { case 0: return "Invocations"; case 1: return "SpacingEqual"; case 2: return "SpacingFractionalEven"; case 3: return "SpacingFractionalOdd"; case 4: return "VertexOrderCw"; case 5: return "VertexOrderCcw"; case 6: return "PixelCenterInteger"; case 7: return "OriginUpperLeft"; case 8: return "OriginLowerLeft"; case 9: return "EarlyFragmentTests"; case 10: return "PointMode"; case 11: return "Xfb"; case 12: return "DepthReplacing"; case 13: return "Bad"; case 14: return "DepthGreater"; case 15: return "DepthLess"; case 16: return "DepthUnchanged"; case 17: return "LocalSize"; case 18: return "LocalSizeHint"; case 19: return "InputPoints"; case 20: return "InputLines"; case 21: return "InputLinesAdjacency"; case 22: return "Triangles"; case 23: return "InputTrianglesAdjacency"; case 24: return "Quads"; case 25: return "Isolines"; case 26: return "OutputVertices"; case 27: return "OutputPoints"; case 28: return "OutputLineStrip"; case 29: return "OutputTriangleStrip"; case 30: return "VecTypeHint"; case 31: return "ContractionOff"; case 32: return "Bad"; case (int)ExecutionMode::Initializer: return "Initializer"; case (int)ExecutionMode::Finalizer: return "Finalizer"; case (int)ExecutionMode::SubgroupSize: return "SubgroupSize"; case (int)ExecutionMode::SubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup"; case (int)ExecutionMode::SubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId"; case (int)ExecutionMode::LocalSizeId: return "LocalSizeId"; case (int)ExecutionMode::LocalSizeHintId: return "LocalSizeHintId"; case (int)ExecutionMode::PostDepthCoverage: return "PostDepthCoverage"; case (int)ExecutionMode::DenormPreserve: return "DenormPreserve"; case (int)ExecutionMode::DenormFlushToZero: return "DenormFlushToZero"; case (int)ExecutionMode::SignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; case (int)ExecutionMode::RoundingModeRTE: return "RoundingModeRTE"; case (int)ExecutionMode::RoundingModeRTZ: return "RoundingModeRTZ"; case (int)ExecutionMode::NonCoherentTileAttachmentReadQCOM: return "NonCoherentTileAttachmentReadQCOM"; case (int)ExecutionMode::TileShadingRateQCOM: return "TileShadingRateQCOM"; case (int)ExecutionMode::EarlyAndLateFragmentTestsAMD: return "EarlyAndLateFragmentTestsAMD"; case (int)ExecutionMode::StencilRefUnchangedFrontAMD: return "StencilRefUnchangedFrontAMD"; case (int)ExecutionMode::StencilRefLessFrontAMD: return "StencilRefLessFrontAMD"; case (int)ExecutionMode::StencilRefGreaterBackAMD: return "StencilRefGreaterBackAMD"; case (int)ExecutionMode::StencilRefReplacingEXT: return "StencilRefReplacingEXT"; case (int)ExecutionMode::SubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlow"; case (int)ExecutionMode::MaximallyReconvergesKHR: return "MaximallyReconverges"; case (int)ExecutionMode::OutputLinesNV: return "OutputLinesNV"; case (int)ExecutionMode::OutputPrimitivesNV: return "OutputPrimitivesNV"; case (int)ExecutionMode::OutputTrianglesNV: return "OutputTrianglesNV"; case (int)ExecutionMode::DerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV"; case (int)ExecutionMode::DerivativeGroupLinearNV: return "DerivativeGroupLinearNV"; case (int)ExecutionMode::PixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT"; case (int)ExecutionMode::PixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT"; case (int)ExecutionMode::SampleInterlockOrderedEXT: return "SampleInterlockOrderedEXT"; case (int)ExecutionMode::SampleInterlockUnorderedEXT: return "SampleInterlockUnorderedEXT"; case (int)ExecutionMode::ShadingRateInterlockOrderedEXT: return "ShadingRateInterlockOrderedEXT"; case (int)ExecutionMode::ShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT"; case (int)ExecutionMode::MaxWorkgroupSizeINTEL: return "MaxWorkgroupSizeINTEL"; case (int)ExecutionMode::MaxWorkDimINTEL: return "MaxWorkDimINTEL"; case (int)ExecutionMode::NoGlobalOffsetINTEL: return "NoGlobalOffsetINTEL"; case (int)ExecutionMode::NumSIMDWorkitemsINTEL: return "NumSIMDWorkitemsINTEL"; case (int)ExecutionMode::RequireFullQuadsKHR: return "RequireFullQuadsKHR"; case (int)ExecutionMode::QuadDerivativesKHR: return "QuadDerivativesKHR"; case (int)ExecutionMode::NonCoherentColorAttachmentReadEXT: return "NonCoherentColorAttachmentReadEXT"; case (int)ExecutionMode::NonCoherentDepthAttachmentReadEXT: return "NonCoherentDepthAttachmentReadEXT"; case (int)ExecutionMode::NonCoherentStencilAttachmentReadEXT: return "NonCoherentStencilAttachmentReadEXT"; case ExecutionModeCeiling: default: return "Bad"; } } const char* StorageClassString(int StorageClass) { switch (StorageClass) { case 0: return "UniformConstant"; case 1: return "Input"; case 2: return "Uniform"; case 3: return "Output"; case 4: return "Workgroup"; case 5: return "CrossWorkgroup"; case 6: return "Private"; case 7: return "Function"; case 8: return "Generic"; case 9: return "PushConstant"; case 10: return "AtomicCounter"; case 11: return "Image"; case 12: return "StorageBuffer"; case (int)StorageClass::TileAttachmentQCOM: return "TileAttachmentQCOM"; case (int)StorageClass::RayPayloadKHR: return "RayPayloadKHR"; case (int)StorageClass::HitAttributeKHR: return "HitAttributeKHR"; case (int)StorageClass::IncomingRayPayloadKHR: return "IncomingRayPayloadKHR"; case (int)StorageClass::ShaderRecordBufferKHR: return "ShaderRecordBufferKHR"; case (int)StorageClass::CallableDataKHR: return "CallableDataKHR"; case (int)StorageClass::IncomingCallableDataKHR: return "IncomingCallableDataKHR"; case (int)StorageClass::PhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; case (int)StorageClass::TaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; case (int)StorageClass::HitObjectAttributeNV: return "HitObjectAttributeNV"; case (int)StorageClass::TileImageEXT: return "TileImageEXT"; default: return "Bad"; } } const int DecorationCeiling = 45; const char* DecorationString(int decoration) { switch (decoration) { case 0: return "RelaxedPrecision"; case 1: return "SpecId"; case 2: return "Block"; case 3: return "BufferBlock"; case 4: return "RowMajor"; case 5: return "ColMajor"; case 6: return "ArrayStride"; case 7: return "MatrixStride"; case 8: return "GLSLShared"; case 9: return "GLSLPacked"; case 10: return "CPacked"; case 11: return "BuiltIn"; case 12: return "Bad"; case 13: return "NoPerspective"; case 14: return "Flat"; case 15: return "Patch"; case 16: return "Centroid"; case 17: return "Sample"; case 18: return "Invariant"; case 19: return "Restrict"; case 20: return "Aliased"; case 21: return "Volatile"; case 22: return "Constant"; case 23: return "Coherent"; case 24: return "NonWritable"; case 25: return "NonReadable"; case 26: return "Uniform"; case 27: return "Bad"; case 28: return "SaturatedConversion"; case 29: return "Stream"; case 30: return "Location"; case 31: return "Component"; case 32: return "Index"; case 33: return "Binding"; case 34: return "DescriptorSet"; case 35: return "Offset"; case 36: return "XfbBuffer"; case 37: return "XfbStride"; case 38: return "FuncParamAttr"; case 39: return "FP Rounding Mode"; case 40: return "FP Fast Math Mode"; case 41: return "Linkage Attributes"; case 42: return "NoContraction"; case 43: return "InputAttachmentIndex"; case 44: return "Alignment"; case DecorationCeiling: default: return "Bad"; case (int)Decoration::WeightTextureQCOM: return "DecorationWeightTextureQCOM"; case (int)Decoration::BlockMatchTextureQCOM: return "DecorationBlockMatchTextureQCOM"; case (int)Decoration::BlockMatchSamplerQCOM: return "DecorationBlockMatchSamplerQCOM"; case (int)Decoration::ExplicitInterpAMD: return "ExplicitInterpAMD"; case (int)Decoration::OverrideCoverageNV: return "OverrideCoverageNV"; case (int)Decoration::PassthroughNV: return "PassthroughNV"; case (int)Decoration::ViewportRelativeNV: return "ViewportRelativeNV"; case (int)Decoration::SecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV"; case (int)Decoration::PerPrimitiveNV: return "PerPrimitiveNV"; case (int)Decoration::PerViewNV: return "PerViewNV"; case (int)Decoration::PerTaskNV: return "PerTaskNV"; case (int)Decoration::PerVertexKHR: return "PerVertexKHR"; case (int)Decoration::NonUniformEXT: return "DecorationNonUniformEXT"; case (int)Decoration::HlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE"; case (int)Decoration::HlslSemanticGOOGLE: return "DecorationHlslSemanticGOOGLE"; case (int)Decoration::RestrictPointerEXT: return "DecorationRestrictPointerEXT"; case (int)Decoration::AliasedPointerEXT: return "DecorationAliasedPointerEXT"; case (int)Decoration::HitObjectShaderRecordBufferNV: return "DecorationHitObjectShaderRecordBufferNV"; case (int)Decoration::SaturatedToLargestFloat8NormalConversionEXT: return "DecorationSaturatedToLargestFloat8NormalConversionEXT"; } } const char* BuiltInString(int builtIn) { switch (builtIn) { case 0: return "Position"; case 1: return "PointSize"; case 2: return "Bad"; case 3: return "ClipDistance"; case 4: return "CullDistance"; case 5: return "VertexId"; case 6: return "InstanceId"; case 7: return "PrimitiveId"; case 8: return "InvocationId"; case 9: return "Layer"; case 10: return "ViewportIndex"; case 11: return "TessLevelOuter"; case 12: return "TessLevelInner"; case 13: return "TessCoord"; case 14: return "PatchVertices"; case 15: return "FragCoord"; case 16: return "PointCoord"; case 17: return "FrontFacing"; case 18: return "SampleId"; case 19: return "SamplePosition"; case 20: return "SampleMask"; case 21: return "Bad"; case 22: return "FragDepth"; case 23: return "HelperInvocation"; case 24: return "NumWorkgroups"; case 25: return "WorkgroupSize"; case 26: return "WorkgroupId"; case 27: return "LocalInvocationId"; case 28: return "GlobalInvocationId"; case 29: return "LocalInvocationIndex"; case 30: return "WorkDim"; case 31: return "GlobalSize"; case 32: return "EnqueuedWorkgroupSize"; case 33: return "GlobalOffset"; case 34: return "GlobalLinearId"; case 35: return "Bad"; case 36: return "SubgroupSize"; case 37: return "SubgroupMaxSize"; case 38: return "NumSubgroups"; case 39: return "NumEnqueuedSubgroups"; case 40: return "SubgroupId"; case 41: return "SubgroupLocalInvocationId"; case 42: return "VertexIndex"; // TBD: put next to VertexId? case 43: return "InstanceIndex"; // TBD: put next to InstanceId? case 4416: return "SubgroupEqMaskKHR"; case 4417: return "SubgroupGeMaskKHR"; case 4418: return "SubgroupGtMaskKHR"; case 4419: return "SubgroupLeMaskKHR"; case 4420: return "SubgroupLtMaskKHR"; case 4438: return "DeviceIndex"; case 4440: return "ViewIndex"; case 4424: return "BaseVertex"; case 4425: return "BaseInstance"; case 4426: return "DrawIndex"; case 4432: return "PrimitiveShadingRateKHR"; case 4444: return "ShadingRateKHR"; case 5014: return "FragStencilRefEXT"; case (int)BuiltIn::TileOffsetQCOM: return "TileOffsetQCOM"; case (int)BuiltIn::TileDimensionQCOM: return "TileDimensionQCOM"; case (int)BuiltIn::TileApronSizeQCOM: return "TileApronSizeQCOM"; case 4992: return "BaryCoordNoPerspAMD"; case 4993: return "BaryCoordNoPerspCentroidAMD"; case 4994: return "BaryCoordNoPerspSampleAMD"; case 4995: return "BaryCoordSmoothAMD"; case 4996: return "BaryCoordSmoothCentroidAMD"; case 4997: return "BaryCoordSmoothSampleAMD"; case 4998: return "BaryCoordPullModelAMD"; case (int)BuiltIn::LaunchIdKHR: return "LaunchIdKHR"; case (int)BuiltIn::LaunchSizeKHR: return "LaunchSizeKHR"; case (int)BuiltIn::WorldRayOriginKHR: return "WorldRayOriginKHR"; case (int)BuiltIn::WorldRayDirectionKHR: return "WorldRayDirectionKHR"; case (int)BuiltIn::ObjectRayOriginKHR: return "ObjectRayOriginKHR"; case (int)BuiltIn::ObjectRayDirectionKHR: return "ObjectRayDirectionKHR"; case (int)BuiltIn::RayTminKHR: return "RayTminKHR"; case (int)BuiltIn::RayTmaxKHR: return "RayTmaxKHR"; case (int)BuiltIn::CullMaskKHR: return "CullMaskKHR"; case (int)BuiltIn::HitTriangleVertexPositionsKHR: return "HitTriangleVertexPositionsKHR"; case (int)BuiltIn::HitMicroTriangleVertexPositionsNV: return "HitMicroTriangleVertexPositionsNV"; case (int)BuiltIn::HitMicroTriangleVertexBarycentricsNV: return "HitMicroTriangleVertexBarycentricsNV"; case (int)BuiltIn::HitKindFrontFacingMicroTriangleNV: return "HitKindFrontFacingMicroTriangleNV"; case (int)BuiltIn::HitKindBackFacingMicroTriangleNV: return "HitKindBackFacingMicroTriangleNV"; case (int)BuiltIn::HitIsSphereNV: return "HitIsSphereNV"; case (int)BuiltIn::HitIsLSSNV: return "HitIsLSSNV"; case (int)BuiltIn::HitSpherePositionNV: return "HitSpherePositionNV"; case (int)BuiltIn::HitSphereRadiusNV: return "HitSphereRadiusNV"; case (int)BuiltIn::HitLSSPositionsNV: return "HitLSSPositionsNV"; case (int)BuiltIn::HitLSSRadiiNV: return "HitLLSSRadiiNV"; case (int)BuiltIn::InstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; case (int)BuiltIn::RayGeometryIndexKHR: return "RayGeometryIndexKHR"; case (int)BuiltIn::ObjectToWorldKHR: return "ObjectToWorldKHR"; case (int)BuiltIn::WorldToObjectKHR: return "WorldToObjectKHR"; case (int)BuiltIn::HitTNV: return "HitTNV"; case (int)BuiltIn::HitKindKHR: return "HitKindKHR"; case (int)BuiltIn::IncomingRayFlagsKHR: return "IncomingRayFlagsKHR"; case (int)BuiltIn::ViewportMaskNV: return "ViewportMaskNV"; case (int)BuiltIn::SecondaryPositionNV: return "SecondaryPositionNV"; case (int)BuiltIn::SecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; case (int)BuiltIn::PositionPerViewNV: return "PositionPerViewNV"; case (int)BuiltIn::ViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; // case (int)BuiltIn::FragmentSizeNV: return "FragmentSizeNV"; // superseded by BuiltInFragSizeEXT // case (int)BuiltIn::InvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT case (int)BuiltIn::BaryCoordKHR: return "BaryCoordKHR"; case (int)BuiltIn::BaryCoordNoPerspKHR: return "BaryCoordNoPerspKHR"; case (int)BuiltIn::ClusterIDNV: return "ClusterIDNV"; case (int)BuiltIn::FragSizeEXT: return "FragSizeEXT"; case (int)BuiltIn::FragInvocationCountEXT: return "FragInvocationCountEXT"; case 5264: return "FullyCoveredEXT"; case (int)BuiltIn::TaskCountNV: return "TaskCountNV"; case (int)BuiltIn::PrimitiveCountNV: return "PrimitiveCountNV"; case (int)BuiltIn::PrimitiveIndicesNV: return "PrimitiveIndicesNV"; case (int)BuiltIn::ClipDistancePerViewNV: return "ClipDistancePerViewNV"; case (int)BuiltIn::CullDistancePerViewNV: return "CullDistancePerViewNV"; case (int)BuiltIn::LayerPerViewNV: return "LayerPerViewNV"; case (int)BuiltIn::MeshViewCountNV: return "MeshViewCountNV"; case (int)BuiltIn::MeshViewIndicesNV: return "MeshViewIndicesNV"; case (int)BuiltIn::WarpsPerSMNV: return "WarpsPerSMNV"; case (int)BuiltIn::SMCountNV: return "SMCountNV"; case (int)BuiltIn::WarpIDNV: return "WarpIDNV"; case (int)BuiltIn::SMIDNV: return "SMIDNV"; case (int)BuiltIn::CurrentRayTimeNV: return "CurrentRayTimeNV"; case (int)BuiltIn::PrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT"; case (int)BuiltIn::PrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; case (int)BuiltIn::PrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; case (int)BuiltIn::CullPrimitiveEXT: return "CullPrimitiveEXT"; case (int)BuiltIn::CoreCountARM: return "CoreCountARM"; case (int)BuiltIn::CoreIDARM: return "CoreIDARM"; case (int)BuiltIn::CoreMaxIDARM: return "CoreMaxIDARM"; case (int)BuiltIn::WarpIDARM: return "WarpIDARM"; case (int)BuiltIn::WarpMaxIDARM: return "BuiltInWarpMaxIDARM"; default: return "Bad"; } } const char* DimensionString(int dim) { switch (dim) { case 0: return "1D"; case 1: return "2D"; case 2: return "3D"; case 3: return "Cube"; case 4: return "Rect"; case 5: return "Buffer"; case 6: return "SubpassData"; case (int)Dim::TileImageDataEXT: return "TileImageDataEXT"; default: return "Bad"; } } const char* SamplerAddressingModeString(int mode) { switch (mode) { case 0: return "None"; case 1: return "ClampToEdge"; case 2: return "Clamp"; case 3: return "Repeat"; case 4: return "RepeatMirrored"; default: return "Bad"; } } const char* SamplerFilterModeString(int mode) { switch (mode) { case 0: return "Nearest"; case 1: return "Linear"; default: return "Bad"; } } const char* ImageFormatString(int format) { switch (format) { case 0: return "Unknown"; // ES/Desktop float case 1: return "Rgba32f"; case 2: return "Rgba16f"; case 3: return "R32f"; case 4: return "Rgba8"; case 5: return "Rgba8Snorm"; // Desktop float case 6: return "Rg32f"; case 7: return "Rg16f"; case 8: return "R11fG11fB10f"; case 9: return "R16f"; case 10: return "Rgba16"; case 11: return "Rgb10A2"; case 12: return "Rg16"; case 13: return "Rg8"; case 14: return "R16"; case 15: return "R8"; case 16: return "Rgba16Snorm"; case 17: return "Rg16Snorm"; case 18: return "Rg8Snorm"; case 19: return "R16Snorm"; case 20: return "R8Snorm"; // ES/Desktop int case 21: return "Rgba32i"; case 22: return "Rgba16i"; case 23: return "Rgba8i"; case 24: return "R32i"; // Desktop int case 25: return "Rg32i"; case 26: return "Rg16i"; case 27: return "Rg8i"; case 28: return "R16i"; case 29: return "R8i"; // ES/Desktop uint case 30: return "Rgba32ui"; case 31: return "Rgba16ui"; case 32: return "Rgba8ui"; case 33: return "R32ui"; // Desktop uint case 34: return "Rgb10a2ui"; case 35: return "Rg32ui"; case 36: return "Rg16ui"; case 37: return "Rg8ui"; case 38: return "R16ui"; case 39: return "R8ui"; case 40: return "R64ui"; case 41: return "R64i"; default: return "Bad"; } } const char* ImageChannelOrderString(int format) { switch (format) { case 0: return "R"; case 1: return "A"; case 2: return "RG"; case 3: return "RA"; case 4: return "RGB"; case 5: return "RGBA"; case 6: return "BGRA"; case 7: return "ARGB"; case 8: return "Intensity"; case 9: return "Luminance"; case 10: return "Rx"; case 11: return "RGx"; case 12: return "RGBx"; case 13: return "Depth"; case 14: return "DepthStencil"; case 15: return "sRGB"; case 16: return "sRGBx"; case 17: return "sRGBA"; case 18: return "sBGRA"; default: return "Bad"; } } const char* ImageChannelDataTypeString(int type) { switch (type) { case 0: return "SnormInt8"; case 1: return "SnormInt16"; case 2: return "UnormInt8"; case 3: return "UnormInt16"; case 4: return "UnormShort565"; case 5: return "UnormShort555"; case 6: return "UnormInt101010"; case 7: return "SignedInt8"; case 8: return "SignedInt16"; case 9: return "SignedInt32"; case 10: return "UnsignedInt8"; case 11: return "UnsignedInt16"; case 12: return "UnsignedInt32"; case 13: return "HalfFloat"; case 14: return "Float"; case 15: return "UnormInt24"; case 16: return "UnormInt101010_2"; default: return "Bad"; } } const int ImageOperandsCeiling = 17; const char* ImageOperandsString(int format) { switch (format) { case (int)ImageOperandsShift::Bias: return "Bias"; case (int)ImageOperandsShift::Lod: return "Lod"; case (int)ImageOperandsShift::Grad: return "Grad"; case (int)ImageOperandsShift::ConstOffset: return "ConstOffset"; case (int)ImageOperandsShift::Offset: return "Offset"; case (int)ImageOperandsShift::ConstOffsets: return "ConstOffsets"; case (int)ImageOperandsShift::Sample: return "Sample"; case (int)ImageOperandsShift::MinLod: return "MinLod"; case (int)ImageOperandsShift::MakeTexelAvailableKHR: return "MakeTexelAvailableKHR"; case (int)ImageOperandsShift::MakeTexelVisibleKHR: return "MakeTexelVisibleKHR"; case (int)ImageOperandsShift::NonPrivateTexelKHR: return "NonPrivateTexelKHR"; case (int)ImageOperandsShift::VolatileTexelKHR: return "VolatileTexelKHR"; case (int)ImageOperandsShift::SignExtend: return "SignExtend"; case (int)ImageOperandsShift::ZeroExtend: return "ZeroExtend"; case (int)ImageOperandsShift::Nontemporal: return "Nontemporal"; case (int)ImageOperandsShift::Offsets: return "Offsets"; case ImageOperandsCeiling: default: return "Bad"; } } const char* FPFastMathString(int mode) { switch (mode) { case 0: return "NotNaN"; case 1: return "NotInf"; case 2: return "NSZ"; case 3: return "AllowRecip"; case 4: return "Fast"; default: return "Bad"; } } const char* FPRoundingModeString(int mode) { switch (mode) { case 0: return "RTE"; case 1: return "RTZ"; case 2: return "RTP"; case 3: return "RTN"; default: return "Bad"; } } const char* LinkageTypeString(int type) { switch (type) { case 0: return "Export"; case 1: return "Import"; default: return "Bad"; } } const char* FuncParamAttrString(int attr) { switch (attr) { case 0: return "Zext"; case 1: return "Sext"; case 2: return "ByVal"; case 3: return "Sret"; case 4: return "NoAlias"; case 5: return "NoCapture"; case 6: return "NoWrite"; case 7: return "NoReadWrite"; default: return "Bad"; } } const char* AccessQualifierString(int attr) { switch (attr) { case 0: return "ReadOnly"; case 1: return "WriteOnly"; case 2: return "ReadWrite"; default: return "Bad"; } } const int SelectControlCeiling = 2; const char* SelectControlString(int cont) { switch (cont) { case 0: return "Flatten"; case 1: return "DontFlatten"; case SelectControlCeiling: default: return "Bad"; } } const int LoopControlCeiling = (int)LoopControlShift::PartialCount + 1; const char* LoopControlString(int cont) { switch (cont) { case (int)LoopControlShift::Unroll: return "Unroll"; case (int)LoopControlShift::DontUnroll: return "DontUnroll"; case (int)LoopControlShift::DependencyInfinite: return "DependencyInfinite"; case (int)LoopControlShift::DependencyLength: return "DependencyLength"; case (int)LoopControlShift::MinIterations: return "MinIterations"; case (int)LoopControlShift::MaxIterations: return "MaxIterations"; case (int)LoopControlShift::IterationMultiple: return "IterationMultiple"; case (int)LoopControlShift::PeelCount: return "PeelCount"; case (int)LoopControlShift::PartialCount: return "PartialCount"; case LoopControlCeiling: default: return "Bad"; } } const int FunctionControlCeiling = 4; const char* FunctionControlString(int cont) { switch (cont) { case 0: return "Inline"; case 1: return "DontInline"; case 2: return "Pure"; case 3: return "Const"; case FunctionControlCeiling: default: return "Bad"; } } const char* MemorySemanticsString(int mem) { // Note: No bits set (None) means "Relaxed" switch (mem) { case 0: return "Bad"; // Note: this is a placeholder for 'Consume' case 1: return "Acquire"; case 2: return "Release"; case 3: return "AcquireRelease"; case 4: return "SequentiallyConsistent"; case 5: return "Bad"; // Note: reserved for future expansion case 6: return "UniformMemory"; case 7: return "SubgroupMemory"; case 8: return "WorkgroupMemory"; case 9: return "CrossWorkgroupMemory"; case 10: return "AtomicCounterMemory"; case 11: return "ImageMemory"; default: return "Bad"; } } const int MemoryAccessCeiling = 6; const char* MemoryAccessString(int mem) { switch (mem) { case (int)MemoryAccessShift::Volatile: return "Volatile"; case (int)MemoryAccessShift::Aligned: return "Aligned"; case (int)MemoryAccessShift::Nontemporal: return "Nontemporal"; case (int)MemoryAccessShift::MakePointerAvailableKHR: return "MakePointerAvailableKHR"; case (int)MemoryAccessShift::MakePointerVisibleKHR: return "MakePointerVisibleKHR"; case (int)MemoryAccessShift::NonPrivatePointerKHR: return "NonPrivatePointerKHR"; default: return "Bad"; } } const int CooperativeMatrixOperandsCeiling = 6; const char* CooperativeMatrixOperandsString(int op) { switch (op) { case (int)CooperativeMatrixOperandsShift::MatrixASignedComponentsKHR: return "ASignedComponentsKHR"; case (int)CooperativeMatrixOperandsShift::MatrixBSignedComponentsKHR: return "BSignedComponentsKHR"; case (int)CooperativeMatrixOperandsShift::MatrixCSignedComponentsKHR: return "CSignedComponentsKHR"; case (int)CooperativeMatrixOperandsShift::MatrixResultSignedComponentsKHR: return "ResultSignedComponentsKHR"; case (int)CooperativeMatrixOperandsShift::SaturatingAccumulationKHR: return "SaturatingAccumulationKHR"; default: return "Bad"; } } const int TensorAddressingOperandsCeiling = 3; const char* TensorAddressingOperandsString(int op) { switch (op) { case (int)TensorAddressingOperandsShift::TensorView: return "TensorView"; case (int)TensorAddressingOperandsShift::DecodeFunc: return "DecodeFunc"; default: return "Bad"; } } const char* ScopeString(int mem) { switch (mem) { case 0: return "CrossDevice"; case 1: return "Device"; case 2: return "Workgroup"; case 3: return "Subgroup"; case 4: return "Invocation"; default: return "Bad"; } } const char* GroupOperationString(int gop) { switch (gop) { case (int)GroupOperation::Reduce: return "Reduce"; case (int)GroupOperation::InclusiveScan: return "InclusiveScan"; case (int)GroupOperation::ExclusiveScan: return "ExclusiveScan"; case (int)GroupOperation::ClusteredReduce: return "ClusteredReduce"; case (int)GroupOperation::PartitionedReduceNV: return "PartitionedReduceNV"; case (int)GroupOperation::PartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV"; case (int)GroupOperation::PartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV"; default: return "Bad"; } } const char* KernelEnqueueFlagsString(int flag) { switch (flag) { case 0: return "NoWait"; case 1: return "WaitKernel"; case 2: return "WaitWorkGroup"; default: return "Bad"; } } const char* KernelProfilingInfoString(int info) { switch (info) { case 0: return "CmdExecTime"; default: return "Bad"; } } const char* CapabilityString(int info) { switch (info) { case 0: return "Matrix"; case 1: return "Shader"; case 2: return "Geometry"; case 3: return "Tessellation"; case 4: return "Addresses"; case 5: return "Linkage"; case 6: return "Kernel"; case 7: return "Vector16"; case 8: return "Float16Buffer"; case 9: return "Float16"; case 10: return "Float64"; case 11: return "Int64"; case 12: return "Int64Atomics"; case 13: return "ImageBasic"; case 14: return "ImageReadWrite"; case 15: return "ImageMipmap"; case 16: return "Bad"; case 17: return "Pipes"; case 18: return "Groups"; case 19: return "DeviceEnqueue"; case 20: return "LiteralSampler"; case 21: return "AtomicStorage"; case 22: return "Int16"; case 23: return "TessellationPointSize"; case 24: return "GeometryPointSize"; case 25: return "ImageGatherExtended"; case 26: return "Bad"; case 27: return "StorageImageMultisample"; case 28: return "UniformBufferArrayDynamicIndexing"; case 29: return "SampledImageArrayDynamicIndexing"; case 30: return "StorageBufferArrayDynamicIndexing"; case 31: return "StorageImageArrayDynamicIndexing"; case 32: return "ClipDistance"; case 33: return "CullDistance"; case 34: return "ImageCubeArray"; case 35: return "SampleRateShading"; case 36: return "ImageRect"; case 37: return "SampledRect"; case 38: return "GenericPointer"; case 39: return "Int8"; case 40: return "InputAttachment"; case 41: return "SparseResidency"; case 42: return "MinLod"; case 43: return "Sampled1D"; case 44: return "Image1D"; case 45: return "SampledCubeArray"; case 46: return "SampledBuffer"; case 47: return "ImageBuffer"; case 48: return "ImageMSArray"; case 49: return "StorageImageExtendedFormats"; case 50: return "ImageQuery"; case 51: return "DerivativeControl"; case 52: return "InterpolationFunction"; case 53: return "TransformFeedback"; case 54: return "GeometryStreams"; case 55: return "StorageImageReadWithoutFormat"; case 56: return "StorageImageWriteWithoutFormat"; case 57: return "MultiViewport"; case 61: return "GroupNonUniform"; case 62: return "GroupNonUniformVote"; case 63: return "GroupNonUniformArithmetic"; case 64: return "GroupNonUniformBallot"; case 65: return "GroupNonUniformShuffle"; case 66: return "GroupNonUniformShuffleRelative"; case 67: return "GroupNonUniformClustered"; case 68: return "GroupNonUniformQuad"; case (int)Capability::SubgroupBallotKHR: return "SubgroupBallotKHR"; case (int)Capability::DrawParameters: return "DrawParameters"; case (int)Capability::SubgroupVoteKHR: return "SubgroupVoteKHR"; case (int)Capability::GroupNonUniformRotateKHR: return "GroupNonUniformRotateKHR"; case (int)Capability::StorageUniformBufferBlock16: return "StorageUniformBufferBlock16"; case (int)Capability::StorageUniform16: return "StorageUniform16"; case (int)Capability::StoragePushConstant16: return "StoragePushConstant16"; case (int)Capability::StorageInputOutput16: return "StorageInputOutput16"; case (int)Capability::StorageBuffer8BitAccess: return "StorageBuffer8BitAccess"; case (int)Capability::UniformAndStorageBuffer8BitAccess: return "UniformAndStorageBuffer8BitAccess"; case (int)Capability::StoragePushConstant8: return "StoragePushConstant8"; case (int)Capability::DeviceGroup: return "DeviceGroup"; case (int)Capability::MultiView: return "MultiView"; case (int)Capability::DenormPreserve: return "DenormPreserve"; case (int)Capability::DenormFlushToZero: return "DenormFlushToZero"; case (int)Capability::SignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; case (int)Capability::RoundingModeRTE: return "RoundingModeRTE"; case (int)Capability::RoundingModeRTZ: return "RoundingModeRTZ"; case (int)Capability::StencilExportEXT: return "StencilExportEXT"; case (int)Capability::Float16ImageAMD: return "Float16ImageAMD"; case (int)Capability::ImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD"; case (int)Capability::FragmentMaskAMD: return "FragmentMaskAMD"; case (int)Capability::ImageReadWriteLodAMD: return "ImageReadWriteLodAMD"; case (int)Capability::AtomicStorageOps: return "AtomicStorageOps"; case (int)Capability::SampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage"; case (int)Capability::GeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; case (int)Capability::ShaderViewportIndexLayerNV: return "ShaderViewportIndexLayerNV"; case (int)Capability::ShaderViewportMaskNV: return "ShaderViewportMaskNV"; case (int)Capability::ShaderStereoViewNV: return "ShaderStereoViewNV"; case (int)Capability::PerViewAttributesNV: return "PerViewAttributesNV"; case (int)Capability::GroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; case (int)Capability::RayTracingNV: return "RayTracingNV"; case (int)Capability::RayTracingMotionBlurNV: return "RayTracingMotionBlurNV"; case (int)Capability::RayTracingKHR: return "RayTracingKHR"; case (int)Capability::RayCullMaskKHR: return "RayCullMaskKHR"; case (int)Capability::RayQueryKHR: return "RayQueryKHR"; case (int)Capability::RayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; case (int)Capability::RayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; case (int)Capability::RayTracingPositionFetchKHR: return "RayTracingPositionFetchKHR"; case (int)Capability::DisplacementMicromapNV: return "DisplacementMicromapNV"; case (int)Capability::RayTracingOpacityMicromapEXT: return "RayTracingOpacityMicromapEXT"; case (int)Capability::RayTracingDisplacementMicromapNV: return "RayTracingDisplacementMicromapNV"; case (int)Capability::RayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR"; case (int)Capability::ComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; case (int)Capability::ComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; case (int)Capability::FragmentBarycentricKHR: return "FragmentBarycentricKHR"; case (int)Capability::MeshShadingNV: return "MeshShadingNV"; case (int)Capability::ImageFootprintNV: return "ImageFootprintNV"; case (int)Capability::MeshShadingEXT: return "MeshShadingEXT"; // case (int)Capability::ShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT case (int)Capability::SampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; case (int)Capability::FragmentDensityEXT: return "FragmentDensityEXT"; case (int)Capability::FragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT"; case (int)Capability::ShaderNonUniformEXT: return "ShaderNonUniformEXT"; case (int)Capability::RuntimeDescriptorArrayEXT: return "RuntimeDescriptorArrayEXT"; case (int)Capability::InputAttachmentArrayDynamicIndexingEXT: return "InputAttachmentArrayDynamicIndexingEXT"; case (int)Capability::UniformTexelBufferArrayDynamicIndexingEXT: return "UniformTexelBufferArrayDynamicIndexingEXT"; case (int)Capability::StorageTexelBufferArrayDynamicIndexingEXT: return "StorageTexelBufferArrayDynamicIndexingEXT"; case (int)Capability::UniformBufferArrayNonUniformIndexingEXT: return "UniformBufferArrayNonUniformIndexingEXT"; case (int)Capability::SampledImageArrayNonUniformIndexingEXT: return "SampledImageArrayNonUniformIndexingEXT"; case (int)Capability::StorageBufferArrayNonUniformIndexingEXT: return "StorageBufferArrayNonUniformIndexingEXT"; case (int)Capability::StorageImageArrayNonUniformIndexingEXT: return "StorageImageArrayNonUniformIndexingEXT"; case (int)Capability::InputAttachmentArrayNonUniformIndexingEXT: return "InputAttachmentArrayNonUniformIndexingEXT"; case (int)Capability::UniformTexelBufferArrayNonUniformIndexingEXT: return "UniformTexelBufferArrayNonUniformIndexingEXT"; case (int)Capability::StorageTexelBufferArrayNonUniformIndexingEXT: return "StorageTexelBufferArrayNonUniformIndexingEXT"; case (int)Capability::VulkanMemoryModelKHR: return "VulkanMemoryModelKHR"; case (int)Capability::VulkanMemoryModelDeviceScopeKHR: return "VulkanMemoryModelDeviceScopeKHR"; case (int)Capability::PhysicalStorageBufferAddressesEXT: return "PhysicalStorageBufferAddressesEXT"; case (int)Capability::VariablePointers: return "VariablePointers"; case (int)Capability::CooperativeMatrixNV: return "CooperativeMatrixNV"; case (int)Capability::CooperativeMatrixKHR: return "CooperativeMatrixKHR"; case (int)Capability::CooperativeMatrixReductionsNV: return "CooperativeMatrixReductionsNV"; case (int)Capability::CooperativeMatrixConversionsNV: return "CooperativeMatrixConversionsNV"; case (int)Capability::CooperativeMatrixPerElementOperationsNV: return "CooperativeMatrixPerElementOperationsNV"; case (int)Capability::CooperativeMatrixTensorAddressingNV: return "CooperativeMatrixTensorAddressingNV"; case (int)Capability::CooperativeMatrixBlockLoadsNV: return "CooperativeMatrixBlockLoadsNV"; case (int)Capability::TensorAddressingNV: return "TensorAddressingNV"; case (int)Capability::ShaderSMBuiltinsNV: return "ShaderSMBuiltinsNV"; case (int)Capability::CooperativeVectorNV: return "CooperativeVectorNV"; case (int)Capability::CooperativeVectorTrainingNV: return "CooperativeVectorTrainingNV"; case (int)Capability::FragmentShaderSampleInterlockEXT: return "FragmentShaderSampleInterlockEXT"; case (int)Capability::FragmentShaderPixelInterlockEXT: return "FragmentShaderPixelInterlockEXT"; case (int)Capability::FragmentShaderShadingRateInterlockEXT: return "FragmentShaderShadingRateInterlockEXT"; case (int)Capability::TileImageColorReadAccessEXT: return "TileImageColorReadAccessEXT"; case (int)Capability::TileImageDepthReadAccessEXT: return "TileImageDepthReadAccessEXT"; case (int)Capability::TileImageStencilReadAccessEXT: return "TileImageStencilReadAccessEXT"; case (int)Capability::CooperativeMatrixLayoutsARM: return "CooperativeMatrixLayoutsARM"; case (int)Capability::TensorsARM: return "TensorsARM"; case (int)Capability::FragmentShadingRateKHR: return "FragmentShadingRateKHR"; case (int)Capability::DemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; case (int)Capability::AtomicFloat16VectorNV: return "AtomicFloat16VectorNV"; case (int)Capability::ShaderClockKHR: return "ShaderClockKHR"; case (int)Capability::QuadControlKHR: return "QuadControlKHR"; case (int)Capability::Int64ImageEXT: return "Int64ImageEXT"; case (int)Capability::IntegerFunctions2INTEL: return "IntegerFunctions2INTEL"; case (int)Capability::ExpectAssumeKHR: return "ExpectAssumeKHR"; case (int)Capability::AtomicFloat16AddEXT: return "AtomicFloat16AddEXT"; case (int)Capability::AtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; case (int)Capability::AtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; case (int)Capability::AtomicFloat16MinMaxEXT: return "AtomicFloat16MinMaxEXT"; case (int)Capability::AtomicFloat32MinMaxEXT: return "AtomicFloat32MinMaxEXT"; case (int)Capability::AtomicFloat64MinMaxEXT: return "AtomicFloat64MinMaxEXT"; case (int)Capability::WorkgroupMemoryExplicitLayoutKHR: return "WorkgroupMemoryExplicitLayoutKHR"; case (int)Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR: return "WorkgroupMemoryExplicitLayout8BitAccessKHR"; case (int)Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR: return "WorkgroupMemoryExplicitLayout16BitAccessKHR"; case (int)Capability::CoreBuiltinsARM: return "CoreBuiltinsARM"; case (int)Capability::ShaderInvocationReorderNV: return "ShaderInvocationReorderNV"; case (int)Capability::TextureSampleWeightedQCOM: return "TextureSampleWeightedQCOM"; case (int)Capability::TextureBoxFilterQCOM: return "TextureBoxFilterQCOM"; case (int)Capability::TextureBlockMatchQCOM: return "TextureBlockMatchQCOM"; case (int)Capability::TileShadingQCOM: return "TileShadingQCOM"; case (int)Capability::TextureBlockMatch2QCOM: return "TextureBlockMatch2QCOM"; case (int)Capability::CooperativeMatrixConversionQCOM: return "CooperativeMatrixConversionQCOM"; case (int)Capability::ReplicatedCompositesEXT: return "ReplicatedCompositesEXT"; case (int)Capability::DotProductKHR: return "DotProductKHR"; case (int)Capability::DotProductInputAllKHR: return "DotProductInputAllKHR"; case (int)Capability::DotProductInput4x8BitKHR: return "DotProductInput4x8BitKHR"; case (int)Capability::DotProductInput4x8BitPackedKHR: return "DotProductInput4x8BitPackedKHR"; case (int)Capability::RayTracingClusterAccelerationStructureNV: return "RayTracingClusterAccelerationStructureNV"; case (int)Capability::RayTracingSpheresGeometryNV: return "RayTracingSpheresGeometryNV"; case (int)Capability::RayTracingLinearSweptSpheresGeometryNV: return "RayTracingLinearSweptSpheresGeometryNV"; case (int)Capability::BFloat16TypeKHR: return "BFloat16TypeKHR"; case (int)Capability::BFloat16DotProductKHR: return "BFloat16DotProductKHR"; case (int)Capability::BFloat16CooperativeMatrixKHR: return "BFloat16CooperativeMatrixKHR"; case (int)Capability::Float8EXT: return "Float8EXT"; case (int)Capability::Float8CooperativeMatrixEXT: return "Float8CooperativeMatrixEXT"; default: return "Bad"; } } const char* OpcodeString(int op) { switch (op) { case 0: return "OpNop"; case 1: return "OpUndef"; case 2: return "OpSourceContinued"; case 3: return "OpSource"; case 4: return "OpSourceExtension"; case 5: return "OpName"; case 6: return "OpMemberName"; case 7: return "OpString"; case 8: return "OpLine"; case 9: return "Bad"; case 10: return "OpExtension"; case 11: return "OpExtInstImport"; case 12: return "OpExtInst"; case 13: return "Bad"; case 14: return "OpMemoryModel"; case 15: return "OpEntryPoint"; case 16: return "OpExecutionMode"; case 17: return "OpCapability"; case 18: return "Bad"; case 19: return "OpTypeVoid"; case 20: return "OpTypeBool"; case 21: return "OpTypeInt"; case 22: return "OpTypeFloat"; case 23: return "OpTypeVector"; case 24: return "OpTypeMatrix"; case 25: return "OpTypeImage"; case 26: return "OpTypeSampler"; case 27: return "OpTypeSampledImage"; case 28: return "OpTypeArray"; case 29: return "OpTypeRuntimeArray"; case 30: return "OpTypeStruct"; case 31: return "OpTypeOpaque"; case 32: return "OpTypePointer"; case 33: return "OpTypeFunction"; case 34: return "OpTypeEvent"; case 35: return "OpTypeDeviceEvent"; case 36: return "OpTypeReserveId"; case 37: return "OpTypeQueue"; case 38: return "OpTypePipe"; case 39: return "OpTypeForwardPointer"; case 40: return "Bad"; case 41: return "OpConstantTrue"; case 42: return "OpConstantFalse"; case 43: return "OpConstant"; case 44: return "OpConstantComposite"; case 45: return "OpConstantSampler"; case 46: return "OpConstantNull"; case 47: return "Bad"; case 48: return "OpSpecConstantTrue"; case 49: return "OpSpecConstantFalse"; case 50: return "OpSpecConstant"; case 51: return "OpSpecConstantComposite"; case 52: return "OpSpecConstantOp"; case 53: return "Bad"; case 54: return "OpFunction"; case 55: return "OpFunctionParameter"; case 56: return "OpFunctionEnd"; case 57: return "OpFunctionCall"; case 58: return "Bad"; case 59: return "OpVariable"; case 60: return "OpImageTexelPointer"; case 61: return "OpLoad"; case 62: return "OpStore"; case 63: return "OpCopyMemory"; case 64: return "OpCopyMemorySized"; case 65: return "OpAccessChain"; case 66: return "OpInBoundsAccessChain"; case 67: return "OpPtrAccessChain"; case 68: return "OpArrayLength"; case 69: return "OpGenericPtrMemSemantics"; case 70: return "OpInBoundsPtrAccessChain"; case 71: return "OpDecorate"; case 72: return "OpMemberDecorate"; case 73: return "OpDecorationGroup"; case 74: return "OpGroupDecorate"; case 75: return "OpGroupMemberDecorate"; case 76: return "Bad"; case 77: return "OpVectorExtractDynamic"; case 78: return "OpVectorInsertDynamic"; case 79: return "OpVectorShuffle"; case 80: return "OpCompositeConstruct"; case 81: return "OpCompositeExtract"; case 82: return "OpCompositeInsert"; case 83: return "OpCopyObject"; case 84: return "OpTranspose"; case (int)Op::OpCopyLogical: return "OpCopyLogical"; case 85: return "Bad"; case 86: return "OpSampledImage"; case 87: return "OpImageSampleImplicitLod"; case 88: return "OpImageSampleExplicitLod"; case 89: return "OpImageSampleDrefImplicitLod"; case 90: return "OpImageSampleDrefExplicitLod"; case 91: return "OpImageSampleProjImplicitLod"; case 92: return "OpImageSampleProjExplicitLod"; case 93: return "OpImageSampleProjDrefImplicitLod"; case 94: return "OpImageSampleProjDrefExplicitLod"; case 95: return "OpImageFetch"; case 96: return "OpImageGather"; case 97: return "OpImageDrefGather"; case 98: return "OpImageRead"; case 99: return "OpImageWrite"; case 100: return "OpImage"; case 101: return "OpImageQueryFormat"; case 102: return "OpImageQueryOrder"; case 103: return "OpImageQuerySizeLod"; case 104: return "OpImageQuerySize"; case 105: return "OpImageQueryLod"; case 106: return "OpImageQueryLevels"; case 107: return "OpImageQuerySamples"; case 108: return "Bad"; case 109: return "OpConvertFToU"; case 110: return "OpConvertFToS"; case 111: return "OpConvertSToF"; case 112: return "OpConvertUToF"; case 113: return "OpUConvert"; case 114: return "OpSConvert"; case 115: return "OpFConvert"; case 116: return "OpQuantizeToF16"; case 117: return "OpConvertPtrToU"; case 118: return "OpSatConvertSToU"; case 119: return "OpSatConvertUToS"; case 120: return "OpConvertUToPtr"; case 121: return "OpPtrCastToGeneric"; case 122: return "OpGenericCastToPtr"; case 123: return "OpGenericCastToPtrExplicit"; case 124: return "OpBitcast"; case 125: return "Bad"; case 126: return "OpSNegate"; case 127: return "OpFNegate"; case 128: return "OpIAdd"; case 129: return "OpFAdd"; case 130: return "OpISub"; case 131: return "OpFSub"; case 132: return "OpIMul"; case 133: return "OpFMul"; case 134: return "OpUDiv"; case 135: return "OpSDiv"; case 136: return "OpFDiv"; case 137: return "OpUMod"; case 138: return "OpSRem"; case 139: return "OpSMod"; case 140: return "OpFRem"; case 141: return "OpFMod"; case 142: return "OpVectorTimesScalar"; case 143: return "OpMatrixTimesScalar"; case 144: return "OpVectorTimesMatrix"; case 145: return "OpMatrixTimesVector"; case 146: return "OpMatrixTimesMatrix"; case 147: return "OpOuterProduct"; case 148: return "OpDot"; case 149: return "OpIAddCarry"; case 150: return "OpISubBorrow"; case 151: return "OpUMulExtended"; case 152: return "OpSMulExtended"; case 153: return "Bad"; case 154: return "OpAny"; case 155: return "OpAll"; case 156: return "OpIsNan"; case 157: return "OpIsInf"; case 158: return "OpIsFinite"; case 159: return "OpIsNormal"; case 160: return "OpSignBitSet"; case 161: return "OpLessOrGreater"; case 162: return "OpOrdered"; case 163: return "OpUnordered"; case 164: return "OpLogicalEqual"; case 165: return "OpLogicalNotEqual"; case 166: return "OpLogicalOr"; case 167: return "OpLogicalAnd"; case 168: return "OpLogicalNot"; case 169: return "OpSelect"; case 170: return "OpIEqual"; case 171: return "OpINotEqual"; case 172: return "OpUGreaterThan"; case 173: return "OpSGreaterThan"; case 174: return "OpUGreaterThanEqual"; case 175: return "OpSGreaterThanEqual"; case 176: return "OpULessThan"; case 177: return "OpSLessThan"; case 178: return "OpULessThanEqual"; case 179: return "OpSLessThanEqual"; case 180: return "OpFOrdEqual"; case 181: return "OpFUnordEqual"; case 182: return "OpFOrdNotEqual"; case 183: return "OpFUnordNotEqual"; case 184: return "OpFOrdLessThan"; case 185: return "OpFUnordLessThan"; case 186: return "OpFOrdGreaterThan"; case 187: return "OpFUnordGreaterThan"; case 188: return "OpFOrdLessThanEqual"; case 189: return "OpFUnordLessThanEqual"; case 190: return "OpFOrdGreaterThanEqual"; case 191: return "OpFUnordGreaterThanEqual"; case 192: return "Bad"; case 193: return "Bad"; case 194: return "OpShiftRightLogical"; case 195: return "OpShiftRightArithmetic"; case 196: return "OpShiftLeftLogical"; case 197: return "OpBitwiseOr"; case 198: return "OpBitwiseXor"; case 199: return "OpBitwiseAnd"; case 200: return "OpNot"; case 201: return "OpBitFieldInsert"; case 202: return "OpBitFieldSExtract"; case 203: return "OpBitFieldUExtract"; case 204: return "OpBitReverse"; case 205: return "OpBitCount"; case 206: return "Bad"; case 207: return "OpDPdx"; case 208: return "OpDPdy"; case 209: return "OpFwidth"; case 210: return "OpDPdxFine"; case 211: return "OpDPdyFine"; case 212: return "OpFwidthFine"; case 213: return "OpDPdxCoarse"; case 214: return "OpDPdyCoarse"; case 215: return "OpFwidthCoarse"; case 216: return "Bad"; case 217: return "Bad"; case 218: return "OpEmitVertex"; case 219: return "OpEndPrimitive"; case 220: return "OpEmitStreamVertex"; case 221: return "OpEndStreamPrimitive"; case 222: return "Bad"; case 223: return "Bad"; case 224: return "OpControlBarrier"; case 225: return "OpMemoryBarrier"; case 226: return "Bad"; case 227: return "OpAtomicLoad"; case 228: return "OpAtomicStore"; case 229: return "OpAtomicExchange"; case 230: return "OpAtomicCompareExchange"; case 231: return "OpAtomicCompareExchangeWeak"; case 232: return "OpAtomicIIncrement"; case 233: return "OpAtomicIDecrement"; case 234: return "OpAtomicIAdd"; case 235: return "OpAtomicISub"; case 236: return "OpAtomicSMin"; case 237: return "OpAtomicUMin"; case 238: return "OpAtomicSMax"; case 239: return "OpAtomicUMax"; case 240: return "OpAtomicAnd"; case 241: return "OpAtomicOr"; case 242: return "OpAtomicXor"; case 243: return "Bad"; case 244: return "Bad"; case 245: return "OpPhi"; case 246: return "OpLoopMerge"; case 247: return "OpSelectionMerge"; case 248: return "OpLabel"; case 249: return "OpBranch"; case 250: return "OpBranchConditional"; case 251: return "OpSwitch"; case 252: return "OpKill"; case 253: return "OpReturn"; case 254: return "OpReturnValue"; case 255: return "OpUnreachable"; case 256: return "OpLifetimeStart"; case 257: return "OpLifetimeStop"; case 258: return "Bad"; case 259: return "OpGroupAsyncCopy"; case 260: return "OpGroupWaitEvents"; case 261: return "OpGroupAll"; case 262: return "OpGroupAny"; case 263: return "OpGroupBroadcast"; case 264: return "OpGroupIAdd"; case 265: return "OpGroupFAdd"; case 266: return "OpGroupFMin"; case 267: return "OpGroupUMin"; case 268: return "OpGroupSMin"; case 269: return "OpGroupFMax"; case 270: return "OpGroupUMax"; case 271: return "OpGroupSMax"; case 272: return "Bad"; case 273: return "Bad"; case 274: return "OpReadPipe"; case 275: return "OpWritePipe"; case 276: return "OpReservedReadPipe"; case 277: return "OpReservedWritePipe"; case 278: return "OpReserveReadPipePackets"; case 279: return "OpReserveWritePipePackets"; case 280: return "OpCommitReadPipe"; case 281: return "OpCommitWritePipe"; case 282: return "OpIsValidReserveId"; case 283: return "OpGetNumPipePackets"; case 284: return "OpGetMaxPipePackets"; case 285: return "OpGroupReserveReadPipePackets"; case 286: return "OpGroupReserveWritePipePackets"; case 287: return "OpGroupCommitReadPipe"; case 288: return "OpGroupCommitWritePipe"; case 289: return "Bad"; case 290: return "Bad"; case 291: return "OpEnqueueMarker"; case 292: return "OpEnqueueKernel"; case 293: return "OpGetKernelNDrangeSubGroupCount"; case 294: return "OpGetKernelNDrangeMaxSubGroupSize"; case 295: return "OpGetKernelWorkGroupSize"; case 296: return "OpGetKernelPreferredWorkGroupSizeMultiple"; case 297: return "OpRetainEvent"; case 298: return "OpReleaseEvent"; case 299: return "OpCreateUserEvent"; case 300: return "OpIsValidEvent"; case 301: return "OpSetUserEventStatus"; case 302: return "OpCaptureEventProfilingInfo"; case 303: return "OpGetDefaultQueue"; case 304: return "OpBuildNDRange"; case 305: return "OpImageSparseSampleImplicitLod"; case 306: return "OpImageSparseSampleExplicitLod"; case 307: return "OpImageSparseSampleDrefImplicitLod"; case 308: return "OpImageSparseSampleDrefExplicitLod"; case 309: return "OpImageSparseSampleProjImplicitLod"; case 310: return "OpImageSparseSampleProjExplicitLod"; case 311: return "OpImageSparseSampleProjDrefImplicitLod"; case 312: return "OpImageSparseSampleProjDrefExplicitLod"; case 313: return "OpImageSparseFetch"; case 314: return "OpImageSparseGather"; case 315: return "OpImageSparseDrefGather"; case 316: return "OpImageSparseTexelsResident"; case 317: return "OpNoLine"; case 318: return "OpAtomicFlagTestAndSet"; case 319: return "OpAtomicFlagClear"; case 320: return "OpImageSparseRead"; case (int)Op::OpModuleProcessed: return "OpModuleProcessed"; case (int)Op::OpExecutionModeId: return "OpExecutionModeId"; case (int)Op::OpDecorateId: return "OpDecorateId"; case 333: return "OpGroupNonUniformElect"; case 334: return "OpGroupNonUniformAll"; case 335: return "OpGroupNonUniformAny"; case 336: return "OpGroupNonUniformAllEqual"; case 337: return "OpGroupNonUniformBroadcast"; case 338: return "OpGroupNonUniformBroadcastFirst"; case 339: return "OpGroupNonUniformBallot"; case 340: return "OpGroupNonUniformInverseBallot"; case 341: return "OpGroupNonUniformBallotBitExtract"; case 342: return "OpGroupNonUniformBallotBitCount"; case 343: return "OpGroupNonUniformBallotFindLSB"; case 344: return "OpGroupNonUniformBallotFindMSB"; case 345: return "OpGroupNonUniformShuffle"; case 346: return "OpGroupNonUniformShuffleXor"; case 347: return "OpGroupNonUniformShuffleUp"; case 348: return "OpGroupNonUniformShuffleDown"; case 349: return "OpGroupNonUniformIAdd"; case 350: return "OpGroupNonUniformFAdd"; case 351: return "OpGroupNonUniformIMul"; case 352: return "OpGroupNonUniformFMul"; case 353: return "OpGroupNonUniformSMin"; case 354: return "OpGroupNonUniformUMin"; case 355: return "OpGroupNonUniformFMin"; case 356: return "OpGroupNonUniformSMax"; case 357: return "OpGroupNonUniformUMax"; case 358: return "OpGroupNonUniformFMax"; case 359: return "OpGroupNonUniformBitwiseAnd"; case 360: return "OpGroupNonUniformBitwiseOr"; case 361: return "OpGroupNonUniformBitwiseXor"; case 362: return "OpGroupNonUniformLogicalAnd"; case 363: return "OpGroupNonUniformLogicalOr"; case 364: return "OpGroupNonUniformLogicalXor"; case 365: return "OpGroupNonUniformQuadBroadcast"; case 366: return "OpGroupNonUniformQuadSwap"; case (int)Op::OpTerminateInvocation: return "OpTerminateInvocation"; case 4421: return "OpSubgroupBallotKHR"; case 4422: return "OpSubgroupFirstInvocationKHR"; case 4428: return "OpSubgroupAllKHR"; case 4429: return "OpSubgroupAnyKHR"; case 4430: return "OpSubgroupAllEqualKHR"; case 4432: return "OpSubgroupReadInvocationKHR"; case 4433: return "OpExtInstWithForwardRefsKHR"; case (int)Op::OpGroupNonUniformQuadAllKHR: return "OpGroupNonUniformQuadAllKHR"; case (int)Op::OpGroupNonUniformQuadAnyKHR: return "OpGroupNonUniformQuadAnyKHR"; case (int)Op::OpAtomicFAddEXT: return "OpAtomicFAddEXT"; case (int)Op::OpAtomicFMinEXT: return "OpAtomicFMinEXT"; case (int)Op::OpAtomicFMaxEXT: return "OpAtomicFMaxEXT"; case (int)Op::OpAssumeTrueKHR: return "OpAssumeTrueKHR"; case (int)Op::OpExpectKHR: return "OpExpectKHR"; case 5000: return "OpGroupIAddNonUniformAMD"; case 5001: return "OpGroupFAddNonUniformAMD"; case 5002: return "OpGroupFMinNonUniformAMD"; case 5003: return "OpGroupUMinNonUniformAMD"; case 5004: return "OpGroupSMinNonUniformAMD"; case 5005: return "OpGroupFMaxNonUniformAMD"; case 5006: return "OpGroupUMaxNonUniformAMD"; case 5007: return "OpGroupSMaxNonUniformAMD"; case 5011: return "OpFragmentMaskFetchAMD"; case 5012: return "OpFragmentFetchAMD"; case (int)Op::OpReadClockKHR: return "OpReadClockKHR"; case (int)Op::OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; case (int)Op::OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; case (int)Op::OpReportIntersectionKHR: return "OpReportIntersectionKHR"; case (int)Op::OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; case (int)Op::OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR"; case (int)Op::OpTerminateRayNV: return "OpTerminateRayNV"; case (int)Op::OpTerminateRayKHR: return "OpTerminateRayKHR"; case (int)Op::OpTraceNV: return "OpTraceNV"; case (int)Op::OpTraceRayMotionNV: return "OpTraceRayMotionNV"; case (int)Op::OpTraceRayKHR: return "OpTraceRayKHR"; case (int)Op::OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR"; case (int)Op::OpExecuteCallableNV: return "OpExecuteCallableNV"; case (int)Op::OpExecuteCallableKHR: return "OpExecuteCallableKHR"; case (int)Op::OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; case (int)Op::OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; case (int)Op::OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; case (int)Op::OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; case (int)Op::OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT"; case (int)Op::OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT"; case (int)Op::OpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR"; case (int)Op::OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; case (int)Op::OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; case (int)Op::OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; case (int)Op::OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR"; case (int)Op::OpRayQueryConfirmIntersectionKHR: return "OpRayQueryConfirmIntersectionKHR"; case (int)Op::OpRayQueryProceedKHR: return "OpRayQueryProceedKHR"; case (int)Op::OpRayQueryGetIntersectionTypeKHR: return "OpRayQueryGetIntersectionTypeKHR"; case (int)Op::OpRayQueryGetRayTMinKHR: return "OpRayQueryGetRayTMinKHR"; case (int)Op::OpRayQueryGetRayFlagsKHR: return "OpRayQueryGetRayFlagsKHR"; case (int)Op::OpRayQueryGetIntersectionTKHR: return "OpRayQueryGetIntersectionTKHR"; case (int)Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR: return "OpRayQueryGetIntersectionInstanceCustomIndexKHR"; case (int)Op::OpRayQueryGetIntersectionInstanceIdKHR: return "OpRayQueryGetIntersectionInstanceIdKHR"; case (int)Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: return "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR"; case (int)Op::OpRayQueryGetIntersectionGeometryIndexKHR: return "OpRayQueryGetIntersectionGeometryIndexKHR"; case (int)Op::OpRayQueryGetIntersectionPrimitiveIndexKHR: return "OpRayQueryGetIntersectionPrimitiveIndexKHR"; case (int)Op::OpRayQueryGetIntersectionBarycentricsKHR: return "OpRayQueryGetIntersectionBarycentricsKHR"; case (int)Op::OpRayQueryGetIntersectionFrontFaceKHR: return "OpRayQueryGetIntersectionFrontFaceKHR"; case (int)Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: return "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR"; case (int)Op::OpRayQueryGetIntersectionObjectRayDirectionKHR: return "OpRayQueryGetIntersectionObjectRayDirectionKHR"; case (int)Op::OpRayQueryGetIntersectionObjectRayOriginKHR: return "OpRayQueryGetIntersectionObjectRayOriginKHR"; case (int)Op::OpRayQueryGetWorldRayDirectionKHR: return "OpRayQueryGetWorldRayDirectionKHR"; case (int)Op::OpRayQueryGetWorldRayOriginKHR: return "OpRayQueryGetWorldRayOriginKHR"; case (int)Op::OpRayQueryGetIntersectionObjectToWorldKHR: return "OpRayQueryGetIntersectionObjectToWorldKHR"; case (int)Op::OpRayQueryGetIntersectionWorldToObjectKHR: return "OpRayQueryGetIntersectionWorldToObjectKHR"; case (int)Op::OpRayQueryGetIntersectionTriangleVertexPositionsKHR: return "OpRayQueryGetIntersectionTriangleVertexPositionsKHR"; case (int)Op::OpRayQueryGetClusterIdNV: return "OpRayQueryGetIntersectionClusterIdNV"; case (int)Op::OpRayQueryGetIntersectionSpherePositionNV: return "OpRayQueryGetIntersectionSpherePositionNV"; case (int)Op::OpRayQueryGetIntersectionSphereRadiusNV: return "OpRayQueryGetIntersectionSphereRadiusNV"; case (int)Op::OpRayQueryGetIntersectionLSSHitValueNV: return "OpRayQueryGetIntersectionLSSHitValueNV"; case (int)Op::OpRayQueryGetIntersectionLSSPositionsNV: return "OpRayQueryGetIntersectionLSSPositionsNV"; case (int)Op::OpRayQueryGetIntersectionLSSRadiiNV: return "OpRayQueryGetIntersectionLSSRadiiNV"; case (int)Op::OpRayQueryIsSphereHitNV: return "OpRayQueryIsSphereHitNV"; case (int)Op::OpRayQueryIsLSSHitNV: return "OpRayQueryIsLSSHitNV"; case (int)Op::OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV"; case (int)Op::OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV"; case (int)Op::OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; case (int)Op::OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV"; case (int)Op::OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV"; case (int)Op::OpTypeCooperativeMatrixKHR: return "OpTypeCooperativeMatrixKHR"; case (int)Op::OpCooperativeMatrixLoadKHR: return "OpCooperativeMatrixLoadKHR"; case (int)Op::OpCooperativeMatrixStoreKHR: return "OpCooperativeMatrixStoreKHR"; case (int)Op::OpCooperativeMatrixMulAddKHR: return "OpCooperativeMatrixMulAddKHR"; case (int)Op::OpCooperativeMatrixLengthKHR: return "OpCooperativeMatrixLengthKHR"; case (int)Op::OpDemoteToHelperInvocationEXT: return "OpDemoteToHelperInvocationEXT"; case (int)Op::OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT"; case (int)Op::OpCooperativeMatrixConvertNV: return "OpCooperativeMatrixConvertNV"; case (int)Op::OpCooperativeMatrixTransposeNV: return "OpCooperativeMatrixTransposeNV"; case (int)Op::OpCooperativeMatrixReduceNV: return "OpCooperativeMatrixReduceNV"; case (int)Op::OpCooperativeMatrixLoadTensorNV: return "OpCooperativeMatrixLoadTensorNV"; case (int)Op::OpCooperativeMatrixStoreTensorNV: return "OpCooperativeMatrixStoreTensorNV"; case (int)Op::OpCooperativeMatrixPerElementOpNV: return "OpCooperativeMatrixPerElementOpNV"; case (int)Op::OpTypeTensorLayoutNV: return "OpTypeTensorLayoutNV"; case (int)Op::OpTypeTensorViewNV: return "OpTypeTensorViewNV"; case (int)Op::OpCreateTensorLayoutNV: return "OpCreateTensorLayoutNV"; case (int)Op::OpTensorLayoutSetBlockSizeNV: return "OpTensorLayoutSetBlockSizeNV"; case (int)Op::OpTensorLayoutSetDimensionNV: return "OpTensorLayoutSetDimensionNV"; case (int)Op::OpTensorLayoutSetStrideNV: return "OpTensorLayoutSetStrideNV"; case (int)Op::OpTensorLayoutSliceNV: return "OpTensorLayoutSliceNV"; case (int)Op::OpTensorLayoutSetClampValueNV: return "OpTensorLayoutSetClampValueNV"; case (int)Op::OpCreateTensorViewNV: return "OpCreateTensorViewNV"; case (int)Op::OpTensorViewSetDimensionNV: return "OpTensorViewSetDimensionNV"; case (int)Op::OpTensorViewSetStrideNV: return "OpTensorViewSetStrideNV"; case (int)Op::OpTensorViewSetClipNV: return "OpTensorViewSetClipNV"; case (int)Op::OpTypeTensorARM: return "OpTypeTensorARM"; case (int)Op::OpTensorReadARM: return "OpTensorReadARM"; case (int)Op::OpTensorWriteARM: return "OpTensorWriteARM"; case (int)Op::OpTensorQuerySizeARM: return "OpTensorQuerySizeARM"; case (int)Op::OpTypeCooperativeVectorNV: return "OpTypeCooperativeVectorNV"; case (int)Op::OpCooperativeVectorMatrixMulNV: return "OpCooperativeVectorMatrixMulNV"; case (int)Op::OpCooperativeVectorMatrixMulAddNV: return "OpCooperativeVectorMatrixMulAddNV"; case (int)Op::OpCooperativeVectorLoadNV: return "OpCooperativeVectorLoadNV"; case (int)Op::OpCooperativeVectorStoreNV: return "OpCooperativeVectorStoreNV"; case (int)Op::OpCooperativeVectorOuterProductAccumulateNV: return "OpCooperativeVectorOuterProductAccumulateNV"; case (int)Op::OpCooperativeVectorReduceSumAccumulateNV: return "OpCooperativeVectorReduceSumAccumulateNV"; case (int)Op::OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT"; case (int)Op::OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT"; case (int)Op::OpTypeHitObjectNV: return "OpTypeHitObjectNV"; case (int)Op::OpHitObjectTraceRayNV: return "OpHitObjectTraceRayNV"; case (int)Op::OpHitObjectTraceRayMotionNV: return "OpHitObjectTraceRayMotionNV"; case (int)Op::OpHitObjectRecordHitNV: return "OpHitObjectRecordHitNV"; case (int)Op::OpHitObjectRecordHitMotionNV: return "OpHitObjectRecordHitMotionNV"; case (int)Op::OpHitObjectRecordHitWithIndexNV: return "OpHitObjectRecordHitWithIndexNV"; case (int)Op::OpHitObjectRecordHitWithIndexMotionNV: return "OpHitObjectRecordHitWithIndexMotionNV"; case (int)Op::OpHitObjectRecordMissNV: return "OpHitObjectRecordMissNV"; case (int)Op::OpHitObjectRecordMissMotionNV: return "OpHitObjectRecordMissMotionNV"; case (int)Op::OpHitObjectRecordEmptyNV: return "OpHitObjectRecordEmptyNV"; case (int)Op::OpHitObjectExecuteShaderNV: return "OpHitObjectExecuteShaderNV"; case (int)Op::OpReorderThreadWithHintNV: return "OpReorderThreadWithHintNV"; case (int)Op::OpReorderThreadWithHitObjectNV: return "OpReorderThreadWithHitObjectNV"; case (int)Op::OpHitObjectGetCurrentTimeNV: return "OpHitObjectGetCurrentTimeNV"; case (int)Op::OpHitObjectGetAttributesNV: return "OpHitObjectGetAttributesNV"; case (int)Op::OpHitObjectGetHitKindNV: return "OpHitObjectGetFrontFaceNV"; case (int)Op::OpHitObjectGetPrimitiveIndexNV: return "OpHitObjectGetPrimitiveIndexNV"; case (int)Op::OpHitObjectGetGeometryIndexNV: return "OpHitObjectGetGeometryIndexNV"; case (int)Op::OpHitObjectGetInstanceIdNV: return "OpHitObjectGetInstanceIdNV"; case (int)Op::OpHitObjectGetInstanceCustomIndexNV: return "OpHitObjectGetInstanceCustomIndexNV"; case (int)Op::OpHitObjectGetObjectRayDirectionNV: return "OpHitObjectGetObjectRayDirectionNV"; case (int)Op::OpHitObjectGetObjectRayOriginNV: return "OpHitObjectGetObjectRayOriginNV"; case (int)Op::OpHitObjectGetWorldRayDirectionNV: return "OpHitObjectGetWorldRayDirectionNV"; case (int)Op::OpHitObjectGetWorldRayOriginNV: return "OpHitObjectGetWorldRayOriginNV"; case (int)Op::OpHitObjectGetWorldToObjectNV: return "OpHitObjectGetWorldToObjectNV"; case (int)Op::OpHitObjectGetObjectToWorldNV: return "OpHitObjectGetObjectToWorldNV"; case (int)Op::OpHitObjectGetRayTMaxNV: return "OpHitObjectGetRayTMaxNV"; case (int)Op::OpHitObjectGetRayTMinNV: return "OpHitObjectGetRayTMinNV"; case (int)Op::OpHitObjectIsEmptyNV: return "OpHitObjectIsEmptyNV"; case (int)Op::OpHitObjectIsHitNV: return "OpHitObjectIsHitNV"; case (int)Op::OpHitObjectIsMissNV: return "OpHitObjectIsMissNV"; case (int)Op::OpHitObjectGetShaderBindingTableRecordIndexNV: return "OpHitObjectGetShaderBindingTableRecordIndexNV"; case (int)Op::OpHitObjectGetShaderRecordBufferHandleNV: return "OpHitObjectGetShaderRecordBufferHandleNV"; case (int)Op::OpHitObjectGetClusterIdNV: return "OpHitObjectGetClusterIdNV"; case (int)Op::OpHitObjectGetSpherePositionNV: return "OpHitObjectGetSpherePositionNV"; case (int)Op::OpHitObjectGetSphereRadiusNV: return "OpHitObjectGetSphereRadiusNV"; case (int)Op::OpHitObjectGetLSSPositionsNV: return "OpHitObjectGetLSSPositionsNV"; case (int)Op::OpHitObjectGetLSSRadiiNV: return "OpHitObjectGetLSSRadiiNV"; case (int)Op::OpHitObjectIsSphereHitNV: return "OpHitObjectIsSphereHitNV"; case (int)Op::OpHitObjectIsLSSHitNV: return "OpHitObjectIsLSSHitNV"; case (int)Op::OpFetchMicroTriangleVertexBarycentricNV: return "OpFetchMicroTriangleVertexBarycentricNV"; case (int)Op::OpFetchMicroTriangleVertexPositionNV: return "OpFetchMicroTriangleVertexPositionNV"; case (int)Op::OpColorAttachmentReadEXT: return "OpColorAttachmentReadEXT"; case (int)Op::OpDepthAttachmentReadEXT: return "OpDepthAttachmentReadEXT"; case (int)Op::OpStencilAttachmentReadEXT: return "OpStencilAttachmentReadEXT"; case (int)Op::OpImageSampleWeightedQCOM: return "OpImageSampleWeightedQCOM"; case (int)Op::OpImageBoxFilterQCOM: return "OpImageBoxFilterQCOM"; case (int)Op::OpImageBlockMatchSADQCOM: return "OpImageBlockMatchSADQCOM"; case (int)Op::OpImageBlockMatchSSDQCOM: return "OpImageBlockMatchSSDQCOM"; case (int)Op::OpImageBlockMatchWindowSSDQCOM: return "OpImageBlockMatchWindowSSDQCOM"; case (int)Op::OpImageBlockMatchWindowSADQCOM: return "OpImageBlockMatchWindowSADQCOM"; case (int)Op::OpImageBlockMatchGatherSSDQCOM: return "OpImageBlockMatchGatherSSDQCOM"; case (int)Op::OpImageBlockMatchGatherSADQCOM: return "OpImageBlockMatchGatherSADQCOM"; case (int)Op::OpBitCastArrayQCOM: return "OpBitCastArrayQCOM"; case (int)Op::OpCompositeConstructCoopMatQCOM: return "OpCompositeConstructCoopMatQCOM"; case (int)Op::OpCompositeExtractCoopMatQCOM: return "OpCompositeExtractCoopMatQCOM"; case (int)Op::OpExtractSubArrayQCOM: return "OpExtractSubArrayQCOM"; case (int)Op::OpConstantCompositeReplicateEXT: return "OpConstantCompositeReplicateEXT"; case (int)Op::OpSpecConstantCompositeReplicateEXT: return "OpSpecConstantCompositeReplicateEXT"; case (int)Op::OpCompositeConstructReplicateEXT: return "OpCompositeConstructReplicateEXT"; case (int)Op::OpSDotKHR: return "OpSDotKHR"; case (int)Op::OpUDotKHR: return "OpUDotKHR"; case (int)Op::OpSUDotKHR: return "OpSUDotKHR"; case (int)Op::OpSDotAccSatKHR: return "OpSDotAccSatKHR"; case (int)Op::OpUDotAccSatKHR: return "OpUDotAccSatKHR"; case (int)Op::OpSUDotAccSatKHR: return "OpSUDotAccSatKHR"; default: return "Bad"; } } // The set of objects that hold all the instruction/operand // parameterization information. InstructionParameters InstructionDesc[OpCodeMask + 1]; OperandParameters ExecutionModeOperands[ExecutionModeCeiling]; OperandParameters DecorationOperands[DecorationCeiling]; EnumDefinition OperandClassParams[OperandCount]; EnumParameters ExecutionModeParams[ExecutionModeCeiling]; EnumParameters ImageOperandsParams[ImageOperandsCeiling]; EnumParameters DecorationParams[DecorationCeiling]; EnumParameters LoopControlParams[FunctionControlCeiling]; EnumParameters SelectionControlParams[SelectControlCeiling]; EnumParameters FunctionControlParams[FunctionControlCeiling]; EnumParameters MemoryAccessParams[MemoryAccessCeiling]; EnumParameters CooperativeMatrixOperandsParams[CooperativeMatrixOperandsCeiling]; EnumParameters TensorAddressingOperandsParams[TensorAddressingOperandsCeiling]; // Set up all the parameterizing descriptions of the opcodes, operands, etc. void Parameterize() { // only do this once. static std::once_flag initialized; std::call_once(initialized, [](){ // Exceptions to having a result and a resulting type . // (Everything is initialized to have both). InstructionDesc[enumCast(Op::OpNop)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpSource)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpSourceContinued)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpSourceExtension)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpExtension)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpExtInstImport)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpCapability)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpMemoryModel)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpEntryPoint)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpExecutionMode)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpExecutionModeId)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTypeVoid)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeBool)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeInt)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeFloat)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeVector)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeMatrix)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeImage)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeSampler)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeSampledImage)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeArray)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeRuntimeArray)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeStruct)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeOpaque)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypePointer)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeForwardPointer)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTypeFunction)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeEvent)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeDeviceEvent)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeReserveId)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeQueue)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypePipe)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpFunctionEnd)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpStore)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpImageWrite)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpDecorationGroup)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpDecorate)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpDecorateId)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpDecorateStringGOOGLE)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpMemberDecorate)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpMemberDecorateStringGOOGLE)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpGroupDecorate)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpGroupMemberDecorate)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpName)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpMemberName)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpString)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpLine)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpNoLine)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpCopyMemory)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpCopyMemorySized)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpEmitVertex)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpEndPrimitive)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpEmitStreamVertex)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpEndStreamPrimitive)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpControlBarrier)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpMemoryBarrier)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpAtomicStore)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpLoopMerge)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpSelectionMerge)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpLabel)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpBranch)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpBranchConditional)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpSwitch)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpKill)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTerminateInvocation)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpReturn)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpReturnValue)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpUnreachable)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpLifetimeStart)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpLifetimeStop)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpCommitReadPipe)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpCommitWritePipe)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpGroupCommitWritePipe)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpGroupCommitReadPipe)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpCaptureEventProfilingInfo)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpSetUserEventStatus)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpRetainEvent)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpReleaseEvent)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpGroupWaitEvents)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpAtomicFlagClear)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpModuleProcessed)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixNV)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixKHR)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpBeginInvocationInterlockEXT)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpEndInvocationInterlockEXT)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpAssumeTrueKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTypeTensorLayoutNV)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeTensorViewNV)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreTensorNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTypeCooperativeVectorNV)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpCooperativeVectorStoreNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpCooperativeVectorReduceSumAccumulateNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTypeTensorARM)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTensorReadARM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpTensorWriteARM)].setResultAndType(false, false); // Specific additional context-dependent operands ExecutionModeOperands[enumCast(ExecutionMode::Invocations)].push(OperandLiteralNumber, "'Number of <>'"); ExecutionModeOperands[enumCast(ExecutionMode::LocalSize)].push(OperandLiteralNumber, "'x size'"); ExecutionModeOperands[enumCast(ExecutionMode::LocalSize)].push(OperandLiteralNumber, "'y size'"); ExecutionModeOperands[enumCast(ExecutionMode::LocalSize)].push(OperandLiteralNumber, "'z size'"); ExecutionModeOperands[enumCast(ExecutionMode::LocalSizeHint)].push(OperandLiteralNumber, "'x size'"); ExecutionModeOperands[enumCast(ExecutionMode::LocalSizeHint)].push(OperandLiteralNumber, "'y size'"); ExecutionModeOperands[enumCast(ExecutionMode::LocalSizeHint)].push(OperandLiteralNumber, "'z size'"); ExecutionModeOperands[enumCast(ExecutionMode::OutputVertices)].push(OperandLiteralNumber, "'Vertex count'"); ExecutionModeOperands[enumCast(ExecutionMode::VecTypeHint)].push(OperandLiteralNumber, "'Vector type'"); DecorationOperands[enumCast(Decoration::Stream)].push(OperandLiteralNumber, "'Stream Number'"); DecorationOperands[enumCast(Decoration::Location)].push(OperandLiteralNumber, "'Location'"); DecorationOperands[enumCast(Decoration::Component)].push(OperandLiteralNumber, "'Component'"); DecorationOperands[enumCast(Decoration::Index)].push(OperandLiteralNumber, "'Index'"); DecorationOperands[enumCast(Decoration::Binding)].push(OperandLiteralNumber, "'Binding Point'"); DecorationOperands[enumCast(Decoration::DescriptorSet)].push(OperandLiteralNumber, "'Descriptor Set'"); DecorationOperands[enumCast(Decoration::Offset)].push(OperandLiteralNumber, "'Byte Offset'"); DecorationOperands[enumCast(Decoration::XfbBuffer)].push(OperandLiteralNumber, "'XFB Buffer Number'"); DecorationOperands[enumCast(Decoration::XfbStride)].push(OperandLiteralNumber, "'XFB Stride'"); DecorationOperands[enumCast(Decoration::ArrayStride)].push(OperandLiteralNumber, "'Array Stride'"); DecorationOperands[enumCast(Decoration::MatrixStride)].push(OperandLiteralNumber, "'Matrix Stride'"); DecorationOperands[enumCast(Decoration::BuiltIn)].push(OperandLiteralNumber, "See <>"); DecorationOperands[enumCast(Decoration::FPRoundingMode)].push(OperandFPRoundingMode, "'Floating-Point Rounding Mode'"); DecorationOperands[enumCast(Decoration::FPFastMathMode)].push(OperandFPFastMath, "'Fast-Math Mode'"); DecorationOperands[enumCast(Decoration::LinkageAttributes)].push(OperandLiteralString, "'Name'"); DecorationOperands[enumCast(Decoration::LinkageAttributes)].push(OperandLinkageType, "'Linkage Type'"); DecorationOperands[enumCast(Decoration::FuncParamAttr)].push(OperandFuncParamAttr, "'Function Parameter Attribute'"); DecorationOperands[enumCast(Decoration::SpecId)].push(OperandLiteralNumber, "'Specialization Constant ID'"); DecorationOperands[enumCast(Decoration::InputAttachmentIndex)].push(OperandLiteralNumber, "'Attachment Index'"); DecorationOperands[enumCast(Decoration::Alignment)].push(OperandLiteralNumber, "'Alignment'"); OperandClassParams[OperandSource].set(0, SourceString, nullptr); OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr); OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr); OperandClassParams[OperandMemory].set(0, MemoryString, nullptr); OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams); OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands); OperandClassParams[OperandStorage].set(0, StorageClassString, nullptr); OperandClassParams[OperandDimensionality].set(0, DimensionString, nullptr); OperandClassParams[OperandSamplerAddressingMode].set(0, SamplerAddressingModeString, nullptr); OperandClassParams[OperandSamplerFilterMode].set(0, SamplerFilterModeString, nullptr); OperandClassParams[OperandSamplerImageFormat].set(0, ImageFormatString, nullptr); OperandClassParams[OperandImageChannelOrder].set(0, ImageChannelOrderString, nullptr); OperandClassParams[OperandImageChannelDataType].set(0, ImageChannelDataTypeString, nullptr); OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true); OperandClassParams[OperandFPFastMath].set(0, FPFastMathString, nullptr, true); OperandClassParams[OperandFPRoundingMode].set(0, FPRoundingModeString, nullptr); OperandClassParams[OperandLinkageType].set(0, LinkageTypeString, nullptr); OperandClassParams[OperandFuncParamAttr].set(0, FuncParamAttrString, nullptr); OperandClassParams[OperandAccessQualifier].set(0, AccessQualifierString, nullptr); OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams); OperandClassParams[OperandDecoration].setOperands(DecorationOperands); OperandClassParams[OperandBuiltIn].set(0, BuiltInString, nullptr); OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true); OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true); OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true); OperandClassParams[OperandMemorySemantics].set(0, MemorySemanticsString, nullptr, true); OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true); OperandClassParams[OperandScope].set(0, ScopeString, nullptr); OperandClassParams[OperandGroupOperation].set(0, GroupOperationString, nullptr); OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr); OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true); OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr); OperandClassParams[OperandCooperativeMatrixOperands].set(CooperativeMatrixOperandsCeiling, CooperativeMatrixOperandsString, CooperativeMatrixOperandsParams, true); OperandClassParams[OperandTensorAddressingOperands].set(TensorAddressingOperandsCeiling, TensorAddressingOperandsString, TensorAddressingOperandsParams, true); OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr); // set name of operator, an initial set of style operands, and the description InstructionDesc[enumCast(Op::OpSource)].operands.push(OperandSource, ""); InstructionDesc[enumCast(Op::OpSource)].operands.push(OperandLiteralNumber, "'Version'"); InstructionDesc[enumCast(Op::OpSource)].operands.push(OperandId, "'File'", true); InstructionDesc[enumCast(Op::OpSource)].operands.push(OperandLiteralString, "'Source'", true); InstructionDesc[enumCast(Op::OpSourceContinued)].operands.push(OperandLiteralString, "'Continued Source'"); InstructionDesc[enumCast(Op::OpSourceExtension)].operands.push(OperandLiteralString, "'Extension'"); InstructionDesc[enumCast(Op::OpName)].operands.push(OperandId, "'Target'"); InstructionDesc[enumCast(Op::OpName)].operands.push(OperandLiteralString, "'Name'"); InstructionDesc[enumCast(Op::OpMemberName)].operands.push(OperandId, "'Type'"); InstructionDesc[enumCast(Op::OpMemberName)].operands.push(OperandLiteralNumber, "'Member'"); InstructionDesc[enumCast(Op::OpMemberName)].operands.push(OperandLiteralString, "'Name'"); InstructionDesc[enumCast(Op::OpString)].operands.push(OperandLiteralString, "'String'"); InstructionDesc[enumCast(Op::OpLine)].operands.push(OperandId, "'File'"); InstructionDesc[enumCast(Op::OpLine)].operands.push(OperandLiteralNumber, "'Line'"); InstructionDesc[enumCast(Op::OpLine)].operands.push(OperandLiteralNumber, "'Column'"); InstructionDesc[enumCast(Op::OpExtension)].operands.push(OperandLiteralString, "'Name'"); InstructionDesc[enumCast(Op::OpExtInstImport)].operands.push(OperandLiteralString, "'Name'"); InstructionDesc[enumCast(Op::OpCapability)].operands.push(OperandCapability, "'Capability'"); InstructionDesc[enumCast(Op::OpMemoryModel)].operands.push(OperandAddressing, ""); InstructionDesc[enumCast(Op::OpMemoryModel)].operands.push(OperandMemory, ""); InstructionDesc[enumCast(Op::OpEntryPoint)].operands.push(OperandExecutionModel, ""); InstructionDesc[enumCast(Op::OpEntryPoint)].operands.push(OperandId, "'Entry Point'"); InstructionDesc[enumCast(Op::OpEntryPoint)].operands.push(OperandLiteralString, "'Name'"); InstructionDesc[enumCast(Op::OpEntryPoint)].operands.push(OperandVariableIds, "'Interface'"); InstructionDesc[enumCast(Op::OpExecutionMode)].operands.push(OperandId, "'Entry Point'"); InstructionDesc[enumCast(Op::OpExecutionMode)].operands.push(OperandExecutionMode, "'Mode'"); InstructionDesc[enumCast(Op::OpExecutionMode)].operands.push(OperandOptionalLiteral, "See <>"); InstructionDesc[enumCast(Op::OpExecutionModeId)].operands.push(OperandId, "'Entry Point'"); InstructionDesc[enumCast(Op::OpExecutionModeId)].operands.push(OperandExecutionMode, "'Mode'"); InstructionDesc[enumCast(Op::OpExecutionModeId)].operands.push(OperandVariableIds, "See <>"); InstructionDesc[enumCast(Op::OpTypeInt)].operands.push(OperandLiteralNumber, "'Width'"); InstructionDesc[enumCast(Op::OpTypeInt)].operands.push(OperandLiteralNumber, "'Signedness'"); InstructionDesc[enumCast(Op::OpTypeFloat)].operands.push(OperandLiteralNumber, "'Width'"); InstructionDesc[enumCast(Op::OpTypeFloat)].operands.push(OperandOptionalLiteral, "'FP Encoding'"); InstructionDesc[enumCast(Op::OpTypeVector)].operands.push(OperandId, "'Component Type'"); InstructionDesc[enumCast(Op::OpTypeVector)].operands.push(OperandLiteralNumber, "'Component Count'"); InstructionDesc[enumCast(Op::OpTypeMatrix)].operands.push(OperandId, "'Column Type'"); InstructionDesc[enumCast(Op::OpTypeMatrix)].operands.push(OperandLiteralNumber, "'Column Count'"); InstructionDesc[enumCast(Op::OpTypeImage)].operands.push(OperandId, "'Sampled Type'"); InstructionDesc[enumCast(Op::OpTypeImage)].operands.push(OperandDimensionality, ""); InstructionDesc[enumCast(Op::OpTypeImage)].operands.push(OperandLiteralNumber, "'Depth'"); InstructionDesc[enumCast(Op::OpTypeImage)].operands.push(OperandLiteralNumber, "'Arrayed'"); InstructionDesc[enumCast(Op::OpTypeImage)].operands.push(OperandLiteralNumber, "'MS'"); InstructionDesc[enumCast(Op::OpTypeImage)].operands.push(OperandLiteralNumber, "'Sampled'"); InstructionDesc[enumCast(Op::OpTypeImage)].operands.push(OperandSamplerImageFormat, ""); InstructionDesc[enumCast(Op::OpTypeImage)].operands.push(OperandAccessQualifier, "", true); InstructionDesc[enumCast(Op::OpTypeSampledImage)].operands.push(OperandId, "'Image Type'"); InstructionDesc[enumCast(Op::OpTypeArray)].operands.push(OperandId, "'Element Type'"); InstructionDesc[enumCast(Op::OpTypeArray)].operands.push(OperandId, "'Length'"); InstructionDesc[enumCast(Op::OpTypeRuntimeArray)].operands.push(OperandId, "'Element Type'"); InstructionDesc[enumCast(Op::OpTypeStruct)].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n..."); InstructionDesc[enumCast(Op::OpTypeOpaque)].operands.push(OperandLiteralString, "The name of the opaque type."); InstructionDesc[enumCast(Op::OpTypePointer)].operands.push(OperandStorage, ""); InstructionDesc[enumCast(Op::OpTypePointer)].operands.push(OperandId, "'Type'"); InstructionDesc[enumCast(Op::OpTypeForwardPointer)].operands.push(OperandId, "'Pointer Type'"); InstructionDesc[enumCast(Op::OpTypeForwardPointer)].operands.push(OperandStorage, ""); InstructionDesc[enumCast(Op::OpTypePipe)].operands.push(OperandAccessQualifier, "'Qualifier'"); InstructionDesc[enumCast(Op::OpTypeFunction)].operands.push(OperandId, "'Return Type'"); InstructionDesc[enumCast(Op::OpTypeFunction)].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..."); InstructionDesc[enumCast(Op::OpConstant)].operands.push(OperandVariableLiterals, "'Value'"); InstructionDesc[enumCast(Op::OpConstantComposite)].operands.push(OperandVariableIds, "'Constituents'"); InstructionDesc[enumCast(Op::OpConstantSampler)].operands.push(OperandSamplerAddressingMode, ""); InstructionDesc[enumCast(Op::OpConstantSampler)].operands.push(OperandLiteralNumber, "'Param'"); InstructionDesc[enumCast(Op::OpConstantSampler)].operands.push(OperandSamplerFilterMode, ""); InstructionDesc[enumCast(Op::OpSpecConstant)].operands.push(OperandVariableLiterals, "'Value'"); InstructionDesc[enumCast(Op::OpSpecConstantComposite)].operands.push(OperandVariableIds, "'Constituents'"); InstructionDesc[enumCast(Op::OpSpecConstantOp)].operands.push(OperandLiteralNumber, "'Opcode'"); InstructionDesc[enumCast(Op::OpSpecConstantOp)].operands.push(OperandVariableIds, "'Operands'"); InstructionDesc[enumCast(Op::OpVariable)].operands.push(OperandStorage, ""); InstructionDesc[enumCast(Op::OpVariable)].operands.push(OperandId, "'Initializer'", true); InstructionDesc[enumCast(Op::OpFunction)].operands.push(OperandFunction, ""); InstructionDesc[enumCast(Op::OpFunction)].operands.push(OperandId, "'Function Type'"); InstructionDesc[enumCast(Op::OpFunctionCall)].operands.push(OperandId, "'Function'"); InstructionDesc[enumCast(Op::OpFunctionCall)].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n..."); InstructionDesc[enumCast(Op::OpExtInst)].operands.push(OperandId, "'Set'"); InstructionDesc[enumCast(Op::OpExtInst)].operands.push(OperandLiteralNumber, "'Instruction'"); InstructionDesc[enumCast(Op::OpExtInst)].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); InstructionDesc[enumCast(Op::OpExtInstWithForwardRefsKHR)].operands.push(OperandId, "'Set'"); InstructionDesc[enumCast(Op::OpExtInstWithForwardRefsKHR)].operands.push(OperandLiteralNumber, "'Instruction'"); InstructionDesc[enumCast(Op::OpExtInstWithForwardRefsKHR)].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); InstructionDesc[enumCast(Op::OpLoad)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpLoad)].operands.push(OperandMemoryAccess, "", true); InstructionDesc[enumCast(Op::OpLoad)].operands.push(OperandLiteralNumber, "", true); InstructionDesc[enumCast(Op::OpLoad)].operands.push(OperandId, "", true); InstructionDesc[enumCast(Op::OpStore)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpStore)].operands.push(OperandId, "'Object'"); InstructionDesc[enumCast(Op::OpStore)].operands.push(OperandMemoryAccess, "", true); InstructionDesc[enumCast(Op::OpStore)].operands.push(OperandLiteralNumber, "", true); InstructionDesc[enumCast(Op::OpStore)].operands.push(OperandId, "", true); InstructionDesc[enumCast(Op::OpPhi)].operands.push(OperandVariableIds, "'Variable, Parent, ...'"); InstructionDesc[enumCast(Op::OpDecorate)].operands.push(OperandId, "'Target'"); InstructionDesc[enumCast(Op::OpDecorate)].operands.push(OperandDecoration, ""); InstructionDesc[enumCast(Op::OpDecorate)].operands.push(OperandVariableLiterals, "See <>."); InstructionDesc[enumCast(Op::OpDecorateId)].operands.push(OperandId, "'Target'"); InstructionDesc[enumCast(Op::OpDecorateId)].operands.push(OperandDecoration, ""); InstructionDesc[enumCast(Op::OpDecorateId)].operands.push(OperandVariableIds, "See <>."); InstructionDesc[enumCast(Op::OpDecorateStringGOOGLE)].operands.push(OperandId, "'Target'"); InstructionDesc[enumCast(Op::OpDecorateStringGOOGLE)].operands.push(OperandDecoration, ""); InstructionDesc[enumCast(Op::OpDecorateStringGOOGLE)].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); InstructionDesc[enumCast(Op::OpMemberDecorate)].operands.push(OperandId, "'Structure Type'"); InstructionDesc[enumCast(Op::OpMemberDecorate)].operands.push(OperandLiteralNumber, "'Member'"); InstructionDesc[enumCast(Op::OpMemberDecorate)].operands.push(OperandDecoration, ""); InstructionDesc[enumCast(Op::OpMemberDecorate)].operands.push(OperandVariableLiterals, "See <>."); InstructionDesc[enumCast(Op::OpMemberDecorateStringGOOGLE)].operands.push(OperandId, "'Structure Type'"); InstructionDesc[enumCast(Op::OpMemberDecorateStringGOOGLE)].operands.push(OperandLiteralNumber, "'Member'"); InstructionDesc[enumCast(Op::OpMemberDecorateStringGOOGLE)].operands.push(OperandDecoration, ""); InstructionDesc[enumCast(Op::OpMemberDecorateStringGOOGLE)].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); InstructionDesc[enumCast(Op::OpGroupDecorate)].operands.push(OperandId, "'Decoration Group'"); InstructionDesc[enumCast(Op::OpGroupDecorate)].operands.push(OperandVariableIds, "'Targets'"); InstructionDesc[enumCast(Op::OpGroupMemberDecorate)].operands.push(OperandId, "'Decoration Group'"); InstructionDesc[enumCast(Op::OpGroupMemberDecorate)].operands.push(OperandVariableIdLiteral, "'Targets'"); InstructionDesc[enumCast(Op::OpVectorExtractDynamic)].operands.push(OperandId, "'Vector'"); InstructionDesc[enumCast(Op::OpVectorExtractDynamic)].operands.push(OperandId, "'Index'"); InstructionDesc[enumCast(Op::OpVectorInsertDynamic)].operands.push(OperandId, "'Vector'"); InstructionDesc[enumCast(Op::OpVectorInsertDynamic)].operands.push(OperandId, "'Component'"); InstructionDesc[enumCast(Op::OpVectorInsertDynamic)].operands.push(OperandId, "'Index'"); InstructionDesc[enumCast(Op::OpVectorShuffle)].operands.push(OperandId, "'Vector 1'"); InstructionDesc[enumCast(Op::OpVectorShuffle)].operands.push(OperandId, "'Vector 2'"); InstructionDesc[enumCast(Op::OpVectorShuffle)].operands.push(OperandVariableLiterals, "'Components'"); InstructionDesc[enumCast(Op::OpCompositeConstruct)].operands.push(OperandVariableIds, "'Constituents'"); InstructionDesc[enumCast(Op::OpCompositeExtract)].operands.push(OperandId, "'Composite'"); InstructionDesc[enumCast(Op::OpCompositeExtract)].operands.push(OperandVariableLiterals, "'Indexes'"); InstructionDesc[enumCast(Op::OpCompositeInsert)].operands.push(OperandId, "'Object'"); InstructionDesc[enumCast(Op::OpCompositeInsert)].operands.push(OperandId, "'Composite'"); InstructionDesc[enumCast(Op::OpCompositeInsert)].operands.push(OperandVariableLiterals, "'Indexes'"); InstructionDesc[enumCast(Op::OpCopyObject)].operands.push(OperandId, "'Operand'"); InstructionDesc[enumCast(Op::OpCopyMemory)].operands.push(OperandId, "'Target'"); InstructionDesc[enumCast(Op::OpCopyMemory)].operands.push(OperandId, "'Source'"); InstructionDesc[enumCast(Op::OpCopyMemory)].operands.push(OperandMemoryAccess, "", true); InstructionDesc[enumCast(Op::OpCopyMemorySized)].operands.push(OperandId, "'Target'"); InstructionDesc[enumCast(Op::OpCopyMemorySized)].operands.push(OperandId, "'Source'"); InstructionDesc[enumCast(Op::OpCopyMemorySized)].operands.push(OperandId, "'Size'"); InstructionDesc[enumCast(Op::OpCopyMemorySized)].operands.push(OperandMemoryAccess, "", true); InstructionDesc[enumCast(Op::OpSampledImage)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpSampledImage)].operands.push(OperandId, "'Sampler'"); InstructionDesc[enumCast(Op::OpImage)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageRead)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageRead)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageRead)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageRead)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageWrite)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageWrite)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageWrite)].operands.push(OperandId, "'Texel'"); InstructionDesc[enumCast(Op::OpImageWrite)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageWrite)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSampleImplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleImplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleImplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleImplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSampleExplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleExplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleExplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleExplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSampleDrefImplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleDrefImplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleDrefImplicitLod)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSampleDrefImplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleDrefImplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSampleDrefExplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleDrefExplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleDrefExplicitLod)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSampleDrefExplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleDrefExplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSampleProjImplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleProjImplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleProjImplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleProjImplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSampleProjExplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleProjExplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleProjExplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleProjExplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSampleProjDrefImplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleProjDrefImplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleProjDrefImplicitLod)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSampleProjDrefImplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleProjDrefImplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSampleProjDrefExplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleProjDrefExplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleProjDrefExplicitLod)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSampleProjDrefExplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleProjDrefExplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageFetch)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageFetch)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageFetch)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageFetch)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageGather)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageGather)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageGather)].operands.push(OperandId, "'Component'"); InstructionDesc[enumCast(Op::OpImageGather)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageGather)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageDrefGather)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageDrefGather)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageDrefGather)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageDrefGather)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageDrefGather)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleImplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseSampleImplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseSampleImplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleImplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleExplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseSampleExplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseSampleExplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleExplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefImplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefImplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefImplicitLod)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefImplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefImplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefExplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefExplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefExplicitLod)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefExplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleDrefExplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleProjImplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjImplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjImplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleProjImplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleProjExplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjExplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjExplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleProjExplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefImplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefImplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefImplicitLod)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefImplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefImplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefExplicitLod)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefExplicitLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefExplicitLod)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefExplicitLod)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseSampleProjDrefExplicitLod)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseFetch)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageSparseFetch)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseFetch)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseFetch)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseGather)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseGather)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseGather)].operands.push(OperandId, "'Component'"); InstructionDesc[enumCast(Op::OpImageSparseGather)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseGather)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseDrefGather)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSparseDrefGather)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseDrefGather)].operands.push(OperandId, "'D~ref~'"); InstructionDesc[enumCast(Op::OpImageSparseDrefGather)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseDrefGather)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseRead)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageSparseRead)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSparseRead)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSparseRead)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpImageSparseTexelsResident)].operands.push(OperandId, "'Resident Code'"); InstructionDesc[enumCast(Op::OpImageQuerySizeLod)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageQuerySizeLod)].operands.push(OperandId, "'Level of Detail'"); InstructionDesc[enumCast(Op::OpImageQuerySize)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageQueryLod)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageQueryLod)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageQueryLevels)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageQuerySamples)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageQueryFormat)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageQueryOrder)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpAccessChain)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpAccessChain)].operands.push(OperandVariableIds, "'Indexes'"); InstructionDesc[enumCast(Op::OpInBoundsAccessChain)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpInBoundsAccessChain)].operands.push(OperandVariableIds, "'Indexes'"); InstructionDesc[enumCast(Op::OpPtrAccessChain)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpPtrAccessChain)].operands.push(OperandId, "'Element'"); InstructionDesc[enumCast(Op::OpPtrAccessChain)].operands.push(OperandVariableIds, "'Indexes'"); InstructionDesc[enumCast(Op::OpInBoundsPtrAccessChain)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpInBoundsPtrAccessChain)].operands.push(OperandId, "'Element'"); InstructionDesc[enumCast(Op::OpInBoundsPtrAccessChain)].operands.push(OperandVariableIds, "'Indexes'"); InstructionDesc[enumCast(Op::OpSNegate)].operands.push(OperandId, "'Operand'"); InstructionDesc[enumCast(Op::OpFNegate)].operands.push(OperandId, "'Operand'"); InstructionDesc[enumCast(Op::OpNot)].operands.push(OperandId, "'Operand'"); InstructionDesc[enumCast(Op::OpAny)].operands.push(OperandId, "'Vector'"); InstructionDesc[enumCast(Op::OpAll)].operands.push(OperandId, "'Vector'"); InstructionDesc[enumCast(Op::OpConvertFToU)].operands.push(OperandId, "'Float Value'"); InstructionDesc[enumCast(Op::OpConvertFToS)].operands.push(OperandId, "'Float Value'"); InstructionDesc[enumCast(Op::OpConvertSToF)].operands.push(OperandId, "'Signed Value'"); InstructionDesc[enumCast(Op::OpConvertUToF)].operands.push(OperandId, "'Unsigned Value'"); InstructionDesc[enumCast(Op::OpUConvert)].operands.push(OperandId, "'Unsigned Value'"); InstructionDesc[enumCast(Op::OpSConvert)].operands.push(OperandId, "'Signed Value'"); InstructionDesc[enumCast(Op::OpFConvert)].operands.push(OperandId, "'Float Value'"); InstructionDesc[enumCast(Op::OpSatConvertSToU)].operands.push(OperandId, "'Signed Value'"); InstructionDesc[enumCast(Op::OpSatConvertUToS)].operands.push(OperandId, "'Unsigned Value'"); InstructionDesc[enumCast(Op::OpConvertPtrToU)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpConvertUToPtr)].operands.push(OperandId, "'Integer Value'"); InstructionDesc[enumCast(Op::OpPtrCastToGeneric)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpGenericCastToPtr)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpGenericCastToPtrExplicit)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpGenericCastToPtrExplicit)].operands.push(OperandStorage, "'Storage'"); InstructionDesc[enumCast(Op::OpGenericPtrMemSemantics)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpBitcast)].operands.push(OperandId, "'Operand'"); InstructionDesc[enumCast(Op::OpQuantizeToF16)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpTranspose)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpCopyLogical)].operands.push(OperandId, "'Operand'"); InstructionDesc[enumCast(Op::OpIsNan)].operands.push(OperandId, "'x'"); InstructionDesc[enumCast(Op::OpIsInf)].operands.push(OperandId, "'x'"); InstructionDesc[enumCast(Op::OpIsFinite)].operands.push(OperandId, "'x'"); InstructionDesc[enumCast(Op::OpIsNormal)].operands.push(OperandId, "'x'"); InstructionDesc[enumCast(Op::OpSignBitSet)].operands.push(OperandId, "'x'"); InstructionDesc[enumCast(Op::OpLessOrGreater)].operands.push(OperandId, "'x'"); InstructionDesc[enumCast(Op::OpLessOrGreater)].operands.push(OperandId, "'y'"); InstructionDesc[enumCast(Op::OpOrdered)].operands.push(OperandId, "'x'"); InstructionDesc[enumCast(Op::OpOrdered)].operands.push(OperandId, "'y'"); InstructionDesc[enumCast(Op::OpUnordered)].operands.push(OperandId, "'x'"); InstructionDesc[enumCast(Op::OpUnordered)].operands.push(OperandId, "'y'"); InstructionDesc[enumCast(Op::OpArrayLength)].operands.push(OperandId, "'Structure'"); InstructionDesc[enumCast(Op::OpArrayLength)].operands.push(OperandLiteralNumber, "'Array member'"); InstructionDesc[enumCast(Op::OpIAdd)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpIAdd)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFAdd)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFAdd)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpISub)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpISub)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFSub)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFSub)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpIMul)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpIMul)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFMul)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFMul)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpUDiv)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpUDiv)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpSDiv)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpSDiv)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFDiv)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFDiv)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpUMod)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpUMod)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpSRem)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpSRem)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpSMod)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpSMod)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFRem)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFRem)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFMod)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFMod)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpVectorTimesScalar)].operands.push(OperandId, "'Vector'"); InstructionDesc[enumCast(Op::OpVectorTimesScalar)].operands.push(OperandId, "'Scalar'"); InstructionDesc[enumCast(Op::OpMatrixTimesScalar)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpMatrixTimesScalar)].operands.push(OperandId, "'Scalar'"); InstructionDesc[enumCast(Op::OpVectorTimesMatrix)].operands.push(OperandId, "'Vector'"); InstructionDesc[enumCast(Op::OpVectorTimesMatrix)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpMatrixTimesVector)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpMatrixTimesVector)].operands.push(OperandId, "'Vector'"); InstructionDesc[enumCast(Op::OpMatrixTimesMatrix)].operands.push(OperandId, "'LeftMatrix'"); InstructionDesc[enumCast(Op::OpMatrixTimesMatrix)].operands.push(OperandId, "'RightMatrix'"); InstructionDesc[enumCast(Op::OpOuterProduct)].operands.push(OperandId, "'Vector 1'"); InstructionDesc[enumCast(Op::OpOuterProduct)].operands.push(OperandId, "'Vector 2'"); InstructionDesc[enumCast(Op::OpDot)].operands.push(OperandId, "'Vector 1'"); InstructionDesc[enumCast(Op::OpDot)].operands.push(OperandId, "'Vector 2'"); InstructionDesc[enumCast(Op::OpIAddCarry)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpIAddCarry)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpISubBorrow)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpISubBorrow)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpUMulExtended)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpUMulExtended)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpSMulExtended)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpSMulExtended)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpShiftRightLogical)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpShiftRightLogical)].operands.push(OperandId, "'Shift'"); InstructionDesc[enumCast(Op::OpShiftRightArithmetic)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpShiftRightArithmetic)].operands.push(OperandId, "'Shift'"); InstructionDesc[enumCast(Op::OpShiftLeftLogical)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpShiftLeftLogical)].operands.push(OperandId, "'Shift'"); InstructionDesc[enumCast(Op::OpLogicalOr)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpLogicalOr)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpLogicalAnd)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpLogicalAnd)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpLogicalEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpLogicalEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpLogicalNotEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpLogicalNotEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpLogicalNot)].operands.push(OperandId, "'Operand'"); InstructionDesc[enumCast(Op::OpBitwiseOr)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpBitwiseOr)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpBitwiseXor)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpBitwiseXor)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpBitwiseAnd)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpBitwiseAnd)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpBitFieldInsert)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpBitFieldInsert)].operands.push(OperandId, "'Insert'"); InstructionDesc[enumCast(Op::OpBitFieldInsert)].operands.push(OperandId, "'Offset'"); InstructionDesc[enumCast(Op::OpBitFieldInsert)].operands.push(OperandId, "'Count'"); InstructionDesc[enumCast(Op::OpBitFieldSExtract)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpBitFieldSExtract)].operands.push(OperandId, "'Offset'"); InstructionDesc[enumCast(Op::OpBitFieldSExtract)].operands.push(OperandId, "'Count'"); InstructionDesc[enumCast(Op::OpBitFieldUExtract)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpBitFieldUExtract)].operands.push(OperandId, "'Offset'"); InstructionDesc[enumCast(Op::OpBitFieldUExtract)].operands.push(OperandId, "'Count'"); InstructionDesc[enumCast(Op::OpBitReverse)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpBitCount)].operands.push(OperandId, "'Base'"); InstructionDesc[enumCast(Op::OpSelect)].operands.push(OperandId, "'Condition'"); InstructionDesc[enumCast(Op::OpSelect)].operands.push(OperandId, "'Object 1'"); InstructionDesc[enumCast(Op::OpSelect)].operands.push(OperandId, "'Object 2'"); InstructionDesc[enumCast(Op::OpIEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpIEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFOrdEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFOrdEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFUnordEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFUnordEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpINotEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpINotEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFOrdNotEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFOrdNotEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFUnordNotEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFUnordNotEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpULessThan)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpULessThan)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpSLessThan)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpSLessThan)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFOrdLessThan)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFOrdLessThan)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFUnordLessThan)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFUnordLessThan)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpUGreaterThan)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpUGreaterThan)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpSGreaterThan)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpSGreaterThan)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFOrdGreaterThan)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFOrdGreaterThan)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFUnordGreaterThan)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFUnordGreaterThan)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpULessThanEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpULessThanEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpSLessThanEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpSLessThanEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFOrdLessThanEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFOrdLessThanEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFUnordLessThanEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFUnordLessThanEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpUGreaterThanEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpUGreaterThanEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpSGreaterThanEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpSGreaterThanEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFOrdGreaterThanEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFOrdGreaterThanEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpFUnordGreaterThanEqual)].operands.push(OperandId, "'Operand 1'"); InstructionDesc[enumCast(Op::OpFUnordGreaterThanEqual)].operands.push(OperandId, "'Operand 2'"); InstructionDesc[enumCast(Op::OpDPdx)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpDPdy)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpFwidth)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpDPdxFine)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpDPdyFine)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpFwidthFine)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpDPdxCoarse)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpDPdyCoarse)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpFwidthCoarse)].operands.push(OperandId, "'P'"); InstructionDesc[enumCast(Op::OpEmitStreamVertex)].operands.push(OperandId, "'Stream'"); InstructionDesc[enumCast(Op::OpEndStreamPrimitive)].operands.push(OperandId, "'Stream'"); InstructionDesc[enumCast(Op::OpControlBarrier)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpControlBarrier)].operands.push(OperandScope, "'Memory'"); InstructionDesc[enumCast(Op::OpControlBarrier)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpMemoryBarrier)].operands.push(OperandScope, "'Memory'"); InstructionDesc[enumCast(Op::OpMemoryBarrier)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpImageTexelPointer)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpImageTexelPointer)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageTexelPointer)].operands.push(OperandId, "'Sample'"); InstructionDesc[enumCast(Op::OpAtomicLoad)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicLoad)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicLoad)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicStore)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicStore)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicStore)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicStore)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicExchange)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicExchange)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicExchange)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicExchange)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchange)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchange)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchange)].operands.push(OperandMemorySemantics, "'Equal'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchange)].operands.push(OperandMemorySemantics, "'Unequal'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchange)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchange)].operands.push(OperandId, "'Comparator'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchangeWeak)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchangeWeak)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchangeWeak)].operands.push(OperandMemorySemantics, "'Equal'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchangeWeak)].operands.push(OperandMemorySemantics, "'Unequal'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchangeWeak)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicCompareExchangeWeak)].operands.push(OperandId, "'Comparator'"); InstructionDesc[enumCast(Op::OpAtomicIIncrement)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicIIncrement)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicIIncrement)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicIDecrement)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicIDecrement)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicIDecrement)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicIAdd)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicIAdd)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicIAdd)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicIAdd)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicFAddEXT)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicFAddEXT)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicFAddEXT)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicFAddEXT)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAssumeTrueKHR)].operands.push(OperandId, "'Condition'"); InstructionDesc[enumCast(Op::OpExpectKHR)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpExpectKHR)].operands.push(OperandId, "'ExpectedValue'"); InstructionDesc[enumCast(Op::OpAtomicISub)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicISub)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicISub)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicISub)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicUMin)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicUMin)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicUMin)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicUMin)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicUMax)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicUMax)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicUMax)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicUMax)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicSMin)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicSMin)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicSMin)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicSMin)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicSMax)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicSMax)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicSMax)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicSMax)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicFMinEXT)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicFMinEXT)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicFMinEXT)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicFMinEXT)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicFMaxEXT)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicFMaxEXT)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicFMaxEXT)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicFMaxEXT)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicAnd)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicAnd)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicAnd)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicAnd)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicOr)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicOr)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicOr)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicOr)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicXor)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicXor)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicXor)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicXor)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpAtomicFlagTestAndSet)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicFlagTestAndSet)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicFlagTestAndSet)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpAtomicFlagClear)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpAtomicFlagClear)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpAtomicFlagClear)].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[enumCast(Op::OpLoopMerge)].operands.push(OperandId, "'Merge Block'"); InstructionDesc[enumCast(Op::OpLoopMerge)].operands.push(OperandId, "'Continue Target'"); InstructionDesc[enumCast(Op::OpLoopMerge)].operands.push(OperandLoop, ""); InstructionDesc[enumCast(Op::OpLoopMerge)].operands.push(OperandOptionalLiteral, ""); InstructionDesc[enumCast(Op::OpSelectionMerge)].operands.push(OperandId, "'Merge Block'"); InstructionDesc[enumCast(Op::OpSelectionMerge)].operands.push(OperandSelect, ""); InstructionDesc[enumCast(Op::OpBranch)].operands.push(OperandId, "'Target Label'"); InstructionDesc[enumCast(Op::OpBranchConditional)].operands.push(OperandId, "'Condition'"); InstructionDesc[enumCast(Op::OpBranchConditional)].operands.push(OperandId, "'True Label'"); InstructionDesc[enumCast(Op::OpBranchConditional)].operands.push(OperandId, "'False Label'"); InstructionDesc[enumCast(Op::OpBranchConditional)].operands.push(OperandVariableLiterals, "'Branch weights'"); InstructionDesc[enumCast(Op::OpSwitch)].operands.push(OperandId, "'Selector'"); InstructionDesc[enumCast(Op::OpSwitch)].operands.push(OperandId, "'Default'"); InstructionDesc[enumCast(Op::OpSwitch)].operands.push(OperandVariableLiteralId, "'Target'"); InstructionDesc[enumCast(Op::OpReturnValue)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpLifetimeStart)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpLifetimeStart)].operands.push(OperandLiteralNumber, "'Size'"); InstructionDesc[enumCast(Op::OpLifetimeStop)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpLifetimeStop)].operands.push(OperandLiteralNumber, "'Size'"); InstructionDesc[enumCast(Op::OpGroupAsyncCopy)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupAsyncCopy)].operands.push(OperandId, "'Destination'"); InstructionDesc[enumCast(Op::OpGroupAsyncCopy)].operands.push(OperandId, "'Source'"); InstructionDesc[enumCast(Op::OpGroupAsyncCopy)].operands.push(OperandId, "'Num Elements'"); InstructionDesc[enumCast(Op::OpGroupAsyncCopy)].operands.push(OperandId, "'Stride'"); InstructionDesc[enumCast(Op::OpGroupAsyncCopy)].operands.push(OperandId, "'Event'"); InstructionDesc[enumCast(Op::OpGroupWaitEvents)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupWaitEvents)].operands.push(OperandId, "'Num Events'"); InstructionDesc[enumCast(Op::OpGroupWaitEvents)].operands.push(OperandId, "'Events List'"); InstructionDesc[enumCast(Op::OpGroupAll)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupAll)].operands.push(OperandId, "'Predicate'"); InstructionDesc[enumCast(Op::OpGroupAny)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupAny)].operands.push(OperandId, "'Predicate'"); InstructionDesc[enumCast(Op::OpGroupBroadcast)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupBroadcast)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpGroupBroadcast)].operands.push(OperandId, "'LocalId'"); InstructionDesc[enumCast(Op::OpGroupIAdd)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupIAdd)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupIAdd)].operands.push(OperandId, "'X'"); InstructionDesc[enumCast(Op::OpGroupFAdd)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupFAdd)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupFAdd)].operands.push(OperandId, "'X'"); InstructionDesc[enumCast(Op::OpGroupUMin)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupUMin)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupUMin)].operands.push(OperandId, "'X'"); InstructionDesc[enumCast(Op::OpGroupSMin)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupSMin)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupSMin)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupFMin)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupFMin)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupFMin)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupUMax)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupUMax)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupUMax)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupSMax)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupSMax)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupSMax)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupFMax)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupFMax)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupFMax)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpReadPipe)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpReadPipe)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpReadPipe)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpReadPipe)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpWritePipe)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpWritePipe)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpWritePipe)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpWritePipe)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpReservedReadPipe)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpReservedReadPipe)].operands.push(OperandId, "'Reserve Id'"); InstructionDesc[enumCast(Op::OpReservedReadPipe)].operands.push(OperandId, "'Index'"); InstructionDesc[enumCast(Op::OpReservedReadPipe)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpReservedReadPipe)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpReservedReadPipe)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpReservedWritePipe)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpReservedWritePipe)].operands.push(OperandId, "'Reserve Id'"); InstructionDesc[enumCast(Op::OpReservedWritePipe)].operands.push(OperandId, "'Index'"); InstructionDesc[enumCast(Op::OpReservedWritePipe)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpReservedWritePipe)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpReservedWritePipe)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpReserveReadPipePackets)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpReserveReadPipePackets)].operands.push(OperandId, "'Num Packets'"); InstructionDesc[enumCast(Op::OpReserveReadPipePackets)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpReserveReadPipePackets)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpReserveWritePipePackets)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpReserveWritePipePackets)].operands.push(OperandId, "'Num Packets'"); InstructionDesc[enumCast(Op::OpReserveWritePipePackets)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpReserveWritePipePackets)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpCommitReadPipe)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpCommitReadPipe)].operands.push(OperandId, "'Reserve Id'"); InstructionDesc[enumCast(Op::OpCommitReadPipe)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpCommitReadPipe)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpCommitWritePipe)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpCommitWritePipe)].operands.push(OperandId, "'Reserve Id'"); InstructionDesc[enumCast(Op::OpCommitWritePipe)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpCommitWritePipe)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpIsValidReserveId)].operands.push(OperandId, "'Reserve Id'"); InstructionDesc[enumCast(Op::OpGetNumPipePackets)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpGetNumPipePackets)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpGetNumPipePackets)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpGetMaxPipePackets)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpGetMaxPipePackets)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpGetMaxPipePackets)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpGroupReserveReadPipePackets)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupReserveReadPipePackets)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpGroupReserveReadPipePackets)].operands.push(OperandId, "'Num Packets'"); InstructionDesc[enumCast(Op::OpGroupReserveReadPipePackets)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpGroupReserveReadPipePackets)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpGroupReserveWritePipePackets)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupReserveWritePipePackets)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpGroupReserveWritePipePackets)].operands.push(OperandId, "'Num Packets'"); InstructionDesc[enumCast(Op::OpGroupReserveWritePipePackets)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpGroupReserveWritePipePackets)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpGroupCommitReadPipe)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupCommitReadPipe)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpGroupCommitReadPipe)].operands.push(OperandId, "'Reserve Id'"); InstructionDesc[enumCast(Op::OpGroupCommitReadPipe)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpGroupCommitReadPipe)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpGroupCommitWritePipe)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupCommitWritePipe)].operands.push(OperandId, "'Pipe'"); InstructionDesc[enumCast(Op::OpGroupCommitWritePipe)].operands.push(OperandId, "'Reserve Id'"); InstructionDesc[enumCast(Op::OpGroupCommitWritePipe)].operands.push(OperandId, "'Packet Size'"); InstructionDesc[enumCast(Op::OpGroupCommitWritePipe)].operands.push(OperandId, "'Packet Alignment'"); InstructionDesc[enumCast(Op::OpBuildNDRange)].operands.push(OperandId, "'GlobalWorkSize'"); InstructionDesc[enumCast(Op::OpBuildNDRange)].operands.push(OperandId, "'LocalWorkSize'"); InstructionDesc[enumCast(Op::OpBuildNDRange)].operands.push(OperandId, "'GlobalWorkOffset'"); InstructionDesc[enumCast(Op::OpCaptureEventProfilingInfo)].operands.push(OperandId, "'Event'"); InstructionDesc[enumCast(Op::OpCaptureEventProfilingInfo)].operands.push(OperandId, "'Profiling Info'"); InstructionDesc[enumCast(Op::OpCaptureEventProfilingInfo)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpSetUserEventStatus)].operands.push(OperandId, "'Event'"); InstructionDesc[enumCast(Op::OpSetUserEventStatus)].operands.push(OperandId, "'Status'"); InstructionDesc[enumCast(Op::OpIsValidEvent)].operands.push(OperandId, "'Event'"); InstructionDesc[enumCast(Op::OpRetainEvent)].operands.push(OperandId, "'Event'"); InstructionDesc[enumCast(Op::OpReleaseEvent)].operands.push(OperandId, "'Event'"); InstructionDesc[enumCast(Op::OpGetKernelWorkGroupSize)].operands.push(OperandId, "'Invoke'"); InstructionDesc[enumCast(Op::OpGetKernelWorkGroupSize)].operands.push(OperandId, "'Param'"); InstructionDesc[enumCast(Op::OpGetKernelWorkGroupSize)].operands.push(OperandId, "'Param Size'"); InstructionDesc[enumCast(Op::OpGetKernelWorkGroupSize)].operands.push(OperandId, "'Param Align'"); InstructionDesc[enumCast(Op::OpGetKernelPreferredWorkGroupSizeMultiple)].operands.push(OperandId, "'Invoke'"); InstructionDesc[enumCast(Op::OpGetKernelPreferredWorkGroupSizeMultiple)].operands.push(OperandId, "'Param'"); InstructionDesc[enumCast(Op::OpGetKernelPreferredWorkGroupSizeMultiple)].operands.push(OperandId, "'Param Size'"); InstructionDesc[enumCast(Op::OpGetKernelPreferredWorkGroupSizeMultiple)].operands.push(OperandId, "'Param Align'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeSubGroupCount)].operands.push(OperandId, "'ND Range'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeSubGroupCount)].operands.push(OperandId, "'Invoke'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeSubGroupCount)].operands.push(OperandId, "'Param'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeSubGroupCount)].operands.push(OperandId, "'Param Size'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeSubGroupCount)].operands.push(OperandId, "'Param Align'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeMaxSubGroupSize)].operands.push(OperandId, "'ND Range'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeMaxSubGroupSize)].operands.push(OperandId, "'Invoke'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeMaxSubGroupSize)].operands.push(OperandId, "'Param'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeMaxSubGroupSize)].operands.push(OperandId, "'Param Size'"); InstructionDesc[enumCast(Op::OpGetKernelNDrangeMaxSubGroupSize)].operands.push(OperandId, "'Param Align'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Queue'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Flags'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'ND Range'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Num Events'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Wait Events'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Ret Event'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Invoke'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Param'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Param Size'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandId, "'Param Align'"); InstructionDesc[enumCast(Op::OpEnqueueKernel)].operands.push(OperandVariableIds, "'Local Size'"); InstructionDesc[enumCast(Op::OpEnqueueMarker)].operands.push(OperandId, "'Queue'"); InstructionDesc[enumCast(Op::OpEnqueueMarker)].operands.push(OperandId, "'Num Events'"); InstructionDesc[enumCast(Op::OpEnqueueMarker)].operands.push(OperandId, "'Wait Events'"); InstructionDesc[enumCast(Op::OpEnqueueMarker)].operands.push(OperandId, "'Ret Event'"); InstructionDesc[enumCast(Op::OpGroupNonUniformElect)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformAll)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformAll)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformAny)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformAny)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformAllEqual)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformAllEqual)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBroadcast)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBroadcast)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBroadcast)].operands.push(OperandId, "ID"); InstructionDesc[enumCast(Op::OpGroupNonUniformBroadcastFirst)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBroadcastFirst)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallot)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallot)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformInverseBallot)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformInverseBallot)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotBitExtract)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotBitExtract)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotBitExtract)].operands.push(OperandId, "Bit"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotBitCount)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotBitCount)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotBitCount)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotFindLSB)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotFindLSB)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotFindMSB)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBallotFindMSB)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffle)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffle)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffle)].operands.push(OperandId, "'Id'"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleXor)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleXor)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleXor)].operands.push(OperandId, "Mask"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleUp)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleUp)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleUp)].operands.push(OperandId, "Offset"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleDown)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleDown)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformShuffleDown)].operands.push(OperandId, "Offset"); InstructionDesc[enumCast(Op::OpGroupNonUniformIAdd)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformIAdd)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformIAdd)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformIAdd)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformFAdd)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformFAdd)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformFAdd)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformFAdd)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformIMul)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformIMul)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformIMul)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformIMul)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformFMul)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMul)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMul)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMul)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformSMin)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformSMin)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformSMin)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformSMin)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformUMin)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformUMin)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformUMin)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformUMin)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformFMin)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMin)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMin)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMin)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformSMax)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformSMax)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformSMax)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformSMax)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformUMax)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformUMax)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformUMax)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformUMax)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformFMax)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMax)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMax)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformFMax)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseAnd)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseAnd)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseAnd)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseAnd)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseOr)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseOr)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseOr)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseOr)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseXor)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseXor)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseXor)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformBitwiseXor)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalAnd)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalAnd)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalAnd)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalAnd)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalOr)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalOr)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalOr)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalOr)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalXor)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalXor)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalXor)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformLogicalXor)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpGroupNonUniformQuadBroadcast)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformQuadBroadcast)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformQuadBroadcast)].operands.push(OperandId, "'Id'"); InstructionDesc[enumCast(Op::OpGroupNonUniformQuadSwap)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformQuadSwap)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformQuadSwap)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpSubgroupBallotKHR)].operands.push(OperandId, "'Predicate'"); InstructionDesc[enumCast(Op::OpSubgroupFirstInvocationKHR)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpSubgroupAnyKHR)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpSubgroupAnyKHR)].operands.push(OperandId, "'Predicate'"); InstructionDesc[enumCast(Op::OpSubgroupAllKHR)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpSubgroupAllKHR)].operands.push(OperandId, "'Predicate'"); InstructionDesc[enumCast(Op::OpSubgroupAllEqualKHR)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpSubgroupAllEqualKHR)].operands.push(OperandId, "'Predicate'"); InstructionDesc[enumCast(Op::OpGroupNonUniformRotateKHR)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupNonUniformRotateKHR)].operands.push(OperandId, "'X'"); InstructionDesc[enumCast(Op::OpGroupNonUniformRotateKHR)].operands.push(OperandId, "'Delta'"); InstructionDesc[enumCast(Op::OpGroupNonUniformRotateKHR)].operands.push(OperandId, "'ClusterSize'", true); InstructionDesc[enumCast(Op::OpSubgroupReadInvocationKHR)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpSubgroupReadInvocationKHR)].operands.push(OperandId, "'Index'"); InstructionDesc[enumCast(Op::OpModuleProcessed)].operands.push(OperandLiteralString, "'process'"); InstructionDesc[enumCast(Op::OpGroupIAddNonUniformAMD)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupIAddNonUniformAMD)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupIAddNonUniformAMD)].operands.push(OperandId, "'X'"); InstructionDesc[enumCast(Op::OpGroupFAddNonUniformAMD)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupFAddNonUniformAMD)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupFAddNonUniformAMD)].operands.push(OperandId, "'X'"); InstructionDesc[enumCast(Op::OpGroupUMinNonUniformAMD)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupUMinNonUniformAMD)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupUMinNonUniformAMD)].operands.push(OperandId, "'X'"); InstructionDesc[enumCast(Op::OpGroupSMinNonUniformAMD)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupSMinNonUniformAMD)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupSMinNonUniformAMD)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupFMinNonUniformAMD)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupFMinNonUniformAMD)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupFMinNonUniformAMD)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupUMaxNonUniformAMD)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupUMaxNonUniformAMD)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupUMaxNonUniformAMD)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupSMaxNonUniformAMD)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupSMaxNonUniformAMD)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupSMaxNonUniformAMD)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupFMaxNonUniformAMD)].operands.push(OperandScope, "'Execution'"); InstructionDesc[enumCast(Op::OpGroupFMaxNonUniformAMD)].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[enumCast(Op::OpGroupFMaxNonUniformAMD)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpFragmentMaskFetchAMD)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpFragmentMaskFetchAMD)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpFragmentFetchAMD)].operands.push(OperandId, "'Image'"); InstructionDesc[enumCast(Op::OpFragmentFetchAMD)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpFragmentFetchAMD)].operands.push(OperandId, "'Fragment Index'"); InstructionDesc[enumCast(Op::OpGroupNonUniformPartitionNV)].operands.push(OperandId, "X"); InstructionDesc[enumCast(Op::OpGroupNonUniformQuadAllKHR)].operands.push(OperandId, "'Predicate'"); InstructionDesc[enumCast(Op::OpGroupNonUniformQuadAnyKHR)].operands.push(OperandId, "'Predicate'"); InstructionDesc[enumCast(Op::OpTypeAccelerationStructureKHR)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'Ray Flags'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'Cull Mask'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'SBT Record Offset'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'SBT Record Stride'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'Miss Index'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'Ray Origin'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'Ray Direction'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpTraceNV)].operands.push(OperandId, "'Payload'"); InstructionDesc[enumCast(Op::OpTraceNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'Ray Flags'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'Cull Mask'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'SBT Record Offset'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'SBT Record Stride'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'Miss Index'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'Ray Origin'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'Ray Direction'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'Time'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].operands.push(OperandId, "'Payload'"); InstructionDesc[enumCast(Op::OpTraceRayMotionNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'Ray Flags'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'Cull Mask'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'SBT Record Offset'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'SBT Record Stride'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'Miss Index'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'Ray Origin'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'Ray Direction'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].operands.push(OperandId, "'Payload'"); InstructionDesc[enumCast(Op::OpTraceRayKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpReportIntersectionKHR)].operands.push(OperandId, "'Hit Parameter'"); InstructionDesc[enumCast(Op::OpReportIntersectionKHR)].operands.push(OperandId, "'Hit Kind'"); InstructionDesc[enumCast(Op::OpIgnoreIntersectionNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpIgnoreIntersectionKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTerminateRayNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTerminateRayKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpExecuteCallableNV)].operands.push(OperandId, "SBT Record Index"); InstructionDesc[enumCast(Op::OpExecuteCallableNV)].operands.push(OperandId, "CallableData ID"); InstructionDesc[enumCast(Op::OpExecuteCallableNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpExecuteCallableKHR)].operands.push(OperandId, "SBT Record Index"); InstructionDesc[enumCast(Op::OpExecuteCallableKHR)].operands.push(OperandId, "CallableData"); InstructionDesc[enumCast(Op::OpExecuteCallableKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpConvertUToAccelerationStructureKHR)].operands.push(OperandId, "Value"); InstructionDesc[enumCast(Op::OpConvertUToAccelerationStructureKHR)].setResultAndType(true, true); // Ray Query InstructionDesc[enumCast(Op::OpTypeAccelerationStructureKHR)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpTypeRayQueryKHR)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].operands.push(OperandId, "'AccelerationS'"); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].operands.push(OperandId, "'RayFlags'"); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].operands.push(OperandId, "'CullMask'"); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].operands.push(OperandId, "'Tmin'"); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].operands.push(OperandId, "'Tmax'"); InstructionDesc[enumCast(Op::OpRayQueryInitializeKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpRayQueryTerminateKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryTerminateKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpRayQueryGenerateIntersectionKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGenerateIntersectionKHR)].operands.push(OperandId, "'THit'"); InstructionDesc[enumCast(Op::OpRayQueryGenerateIntersectionKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpRayQueryConfirmIntersectionKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryConfirmIntersectionKHR)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpRayQueryProceedKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryProceedKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTypeKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTypeKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTypeKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetRayTMinKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetRayTMinKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetRayFlagsKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetRayFlagsKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceIdKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceIdKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceIdKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionGeometryIndexKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionGeometryIndexKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionGeometryIndexKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionPrimitiveIndexKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionPrimitiveIndexKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionPrimitiveIndexKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionBarycentricsKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionBarycentricsKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionBarycentricsKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionFrontFaceKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionFrontFaceKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionFrontFaceKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectRayDirectionKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectRayDirectionKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectRayDirectionKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectRayOriginKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectRayOriginKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectRayOriginKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetWorldRayDirectionKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetWorldRayDirectionKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetWorldRayOriginKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetWorldRayOriginKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectToWorldKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectToWorldKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionObjectToWorldKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionWorldToObjectKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionWorldToObjectKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionWorldToObjectKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTriangleVertexPositionsKHR)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTriangleVertexPositionsKHR)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionTriangleVertexPositionsKHR)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetClusterIdNV)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetClusterIdNV)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetClusterIdNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionSpherePositionNV)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionSpherePositionNV)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionSpherePositionNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionSphereRadiusNV)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionSphereRadiusNV)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionSphereRadiusNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSHitValueNV)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSHitValueNV)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSHitValueNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSPositionsNV)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSPositionsNV)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSPositionsNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSRadiiNV)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSRadiiNV)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryGetIntersectionLSSRadiiNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryIsSphereHitNV)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryIsSphereHitNV)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryIsSphereHitNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpRayQueryIsLSSHitNV)].operands.push(OperandId, "'RayQuery'"); InstructionDesc[enumCast(Op::OpRayQueryIsLSSHitNV)].operands.push(OperandId, "'Committed'"); InstructionDesc[enumCast(Op::OpRayQueryIsLSSHitNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpImageSampleFootprintNV)].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[enumCast(Op::OpImageSampleFootprintNV)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpImageSampleFootprintNV)].operands.push(OperandId, "'Granularity'"); InstructionDesc[enumCast(Op::OpImageSampleFootprintNV)].operands.push(OperandId, "'Coarse'"); InstructionDesc[enumCast(Op::OpImageSampleFootprintNV)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleFootprintNV)].operands.push(OperandVariableIds, "", true); InstructionDesc[enumCast(Op::OpWritePackedPrimitiveIndices4x8NV)].operands.push(OperandId, "'Index Offset'"); InstructionDesc[enumCast(Op::OpWritePackedPrimitiveIndices4x8NV)].operands.push(OperandId, "'Packed Indices'"); InstructionDesc[enumCast(Op::OpEmitMeshTasksEXT)].operands.push(OperandId, "'groupCountX'"); InstructionDesc[enumCast(Op::OpEmitMeshTasksEXT)].operands.push(OperandId, "'groupCountY'"); InstructionDesc[enumCast(Op::OpEmitMeshTasksEXT)].operands.push(OperandId, "'groupCountZ'"); InstructionDesc[enumCast(Op::OpEmitMeshTasksEXT)].operands.push(OperandId, "'Payload'"); InstructionDesc[enumCast(Op::OpEmitMeshTasksEXT)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpSetMeshOutputsEXT)].operands.push(OperandId, "'vertexCount'"); InstructionDesc[enumCast(Op::OpSetMeshOutputsEXT)].operands.push(OperandId, "'primitiveCount'"); InstructionDesc[enumCast(Op::OpSetMeshOutputsEXT)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixNV)].operands.push(OperandId, "'Component Type'"); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixNV)].operands.push(OperandId, "'Scope'"); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixNV)].operands.push(OperandId, "'Rows'"); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixNV)].operands.push(OperandId, "'Columns'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadNV)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadNV)].operands.push(OperandId, "'Stride'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadNV)].operands.push(OperandId, "'Column Major'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadNV)].operands.push(OperandMemoryAccess, "'Memory Access'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadNV)].operands.push(OperandLiteralNumber, "", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadNV)].operands.push(OperandId, "", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreNV)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreNV)].operands.push(OperandId, "'Object'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreNV)].operands.push(OperandId, "'Stride'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreNV)].operands.push(OperandId, "'Column Major'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreNV)].operands.push(OperandMemoryAccess, "'Memory Access'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreNV)].operands.push(OperandLiteralNumber, "", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreNV)].operands.push(OperandId, "", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixMulAddNV)].operands.push(OperandId, "'A'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixMulAddNV)].operands.push(OperandId, "'B'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixMulAddNV)].operands.push(OperandId, "'C'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLengthNV)].operands.push(OperandId, "'Type'"); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixKHR)].operands.push(OperandId, "'Component Type'"); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixKHR)].operands.push(OperandId, "'Scope'"); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixKHR)].operands.push(OperandId, "'Rows'"); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixKHR)].operands.push(OperandId, "'Columns'"); InstructionDesc[enumCast(Op::OpTypeCooperativeMatrixKHR)].operands.push(OperandId, "'Use'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadKHR)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadKHR)].operands.push(OperandId, "'Memory Layout'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadKHR)].operands.push(OperandId, "'Stride'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadKHR)].operands.push(OperandMemoryAccess, "'Memory Access'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadKHR)].operands.push(OperandLiteralNumber, "", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadKHR)].operands.push(OperandId, "", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreKHR)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreKHR)].operands.push(OperandId, "'Object'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreKHR)].operands.push(OperandId, "'Memory Layout'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreKHR)].operands.push(OperandId, "'Stride'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreKHR)].operands.push(OperandMemoryAccess, "'Memory Access'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreKHR)].operands.push(OperandLiteralNumber, "", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreKHR)].operands.push(OperandId, "", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixMulAddKHR)].operands.push(OperandId, "'A'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixMulAddKHR)].operands.push(OperandId, "'B'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixMulAddKHR)].operands.push(OperandId, "'C'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixMulAddKHR)].operands.push(OperandCooperativeMatrixOperands, "'Cooperative Matrix Operands'", true); InstructionDesc[enumCast(Op::OpCooperativeMatrixLengthKHR)].operands.push(OperandId, "'Type'"); InstructionDesc[enumCast(Op::OpTypeCooperativeVectorNV)].operands.push(OperandId, "'Component Type'"); InstructionDesc[enumCast(Op::OpTypeCooperativeVectorNV)].operands.push(OperandId, "'Components'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'Input'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'InputInterpretation'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'MatrixOffset'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'MatrixInterpretation'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'M'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'K'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'MemoryLayout'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'Transpose'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandId, "'MatrixStride'", true); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulNV)].operands.push(OperandCooperativeMatrixOperands, "'Cooperative Matrix Operands'", true); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'Input'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'InputInterpretation'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'MatrixOffset'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'MatrixInterpretation'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'Bias'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'BiasOffset'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'BiasInterpretation'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'M'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'K'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'MemoryLayout'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'Transpose'"); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandId, "'MatrixStride'", true); InstructionDesc[enumCast(Op::OpCooperativeVectorMatrixMulAddNV)].operands.push(OperandCooperativeMatrixOperands, "'Cooperative Matrix Operands'", true); InstructionDesc[enumCast(Op::OpCooperativeVectorLoadNV)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeVectorLoadNV)].operands.push(OperandId, "'Offset'"); InstructionDesc[enumCast(Op::OpCooperativeVectorLoadNV)].operands.push(OperandMemoryAccess, "'Memory Access'"); InstructionDesc[enumCast(Op::OpCooperativeVectorLoadNV)].operands.push(OperandLiteralNumber, "", true); InstructionDesc[enumCast(Op::OpCooperativeVectorLoadNV)].operands.push(OperandId, "", true); InstructionDesc[enumCast(Op::OpCooperativeVectorStoreNV)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeVectorStoreNV)].operands.push(OperandId, "'Offset'"); InstructionDesc[enumCast(Op::OpCooperativeVectorStoreNV)].operands.push(OperandId, "'Object'"); InstructionDesc[enumCast(Op::OpCooperativeVectorStoreNV)].operands.push(OperandMemoryAccess, "'Memory Access'"); InstructionDesc[enumCast(Op::OpCooperativeVectorStoreNV)].operands.push(OperandLiteralNumber, "", true); InstructionDesc[enumCast(Op::OpCooperativeVectorStoreNV)].operands.push(OperandId, "", true); InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].operands.push(OperandId, "'Offset'"); InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].operands.push(OperandId, "'A'"); InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].operands.push(OperandId, "'B'"); InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].operands.push(OperandId, "'MemoryLayout'"); InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].operands.push(OperandId, "'MatrixInterpretation'"); InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].operands.push(OperandId, "'MatrixStride'", true); InstructionDesc[enumCast(Op::OpCooperativeVectorReduceSumAccumulateNV)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeVectorReduceSumAccumulateNV)].operands.push(OperandId, "'Offset'"); InstructionDesc[enumCast(Op::OpCooperativeVectorReduceSumAccumulateNV)].operands.push(OperandId, "'V'"); InstructionDesc[enumCast(Op::OpDemoteToHelperInvocationEXT)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpReadClockKHR)].operands.push(OperandScope, "'Scope'"); InstructionDesc[enumCast(Op::OpTypeHitObjectNV)].setResultAndType(true, false); InstructionDesc[enumCast(Op::OpHitObjectGetShaderRecordBufferHandleNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetShaderRecordBufferHandleNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpReorderThreadWithHintNV)].operands.push(OperandId, "'Hint'"); InstructionDesc[enumCast(Op::OpReorderThreadWithHintNV)].operands.push(OperandId, "'Bits'"); InstructionDesc[enumCast(Op::OpReorderThreadWithHintNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpReorderThreadWithHitObjectNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpReorderThreadWithHitObjectNV)].operands.push(OperandId, "'Hint'"); InstructionDesc[enumCast(Op::OpReorderThreadWithHitObjectNV)].operands.push(OperandId, "'Bits'"); InstructionDesc[enumCast(Op::OpReorderThreadWithHitObjectNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectGetCurrentTimeNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetCurrentTimeNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetHitKindNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetHitKindNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetPrimitiveIndexNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetPrimitiveIndexNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetGeometryIndexNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetGeometryIndexNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetInstanceIdNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetInstanceIdNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetInstanceCustomIndexNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetInstanceCustomIndexNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetObjectRayDirectionNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetObjectRayDirectionNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetObjectRayOriginNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetObjectRayOriginNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetWorldRayDirectionNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetWorldRayDirectionNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetWorldRayOriginNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetWorldRayOriginNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetWorldToObjectNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetWorldToObjectNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetObjectToWorldNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetObjectToWorldNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetRayTMaxNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetRayTMaxNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetRayTMinNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetRayTMinNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetShaderBindingTableRecordIndexNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetShaderBindingTableRecordIndexNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectIsEmptyNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectIsEmptyNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectIsHitNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectIsHitNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectIsMissNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectIsMissNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetAttributesNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetAttributesNV)].operands.push(OperandId, "'HitObjectAttribute'"); InstructionDesc[enumCast(Op::OpHitObjectGetAttributesNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectExecuteShaderNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectExecuteShaderNV)].operands.push(OperandId, "'Payload'"); InstructionDesc[enumCast(Op::OpHitObjectExecuteShaderNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'InstanceId'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'PrimitiveId'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'GeometryIndex'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'HitKind'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'SBT Record Offset'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'SBT Record Stride'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].operands.push(OperandId, "'HitObject Attribute'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'InstanceId'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'PrimitiveId'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'GeometryIndex'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'HitKind'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'SBT Record Offset'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'SBT Record Stride'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'Current Time'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].operands.push(OperandId, "'HitObject Attribute'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitMotionNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'InstanceId'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'PrimitiveId'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'GeometryIndex'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'HitKind'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'SBT Record Index'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].operands.push(OperandId, "'HitObject Attribute'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'InstanceId'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'PrimitiveId'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'GeometryIndex'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'HitKind'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'SBT Record Index'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'Current Time'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].operands.push(OperandId, "'HitObject Attribute'"); InstructionDesc[enumCast(Op::OpHitObjectRecordHitWithIndexMotionNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectRecordMissNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissNV)].operands.push(OperandId, "'SBT Index'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissNV)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissNV)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionNV)].operands.push(OperandId, "'SBT Index'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionNV)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionNV)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionNV)].operands.push(OperandId, "'Current Time'"); InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectRecordEmptyNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectRecordEmptyNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'RayFlags'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'Cullmask'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'SBT Record Offset'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'SBT Record Stride'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'Miss Index'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].operands.push(OperandId, "'Payload'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'RayFlags'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'Cullmask'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'SBT Record Offset'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'SBT Record Stride'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'Miss Index'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'Origin'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'TMin'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'Direction'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'TMax'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'Time'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].operands.push(OperandId, "'Payload'"); InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpHitObjectGetClusterIdNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetClusterIdNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetSpherePositionNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetSpherePositionNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetSphereRadiusNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetSphereRadiusNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetLSSPositionsNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetLSSPositionsNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectGetLSSRadiiNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectGetLSSRadiiNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectIsSphereHitNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectIsSphereHitNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpHitObjectIsLSSHitNV)].operands.push(OperandId, "'HitObject'"); InstructionDesc[enumCast(Op::OpHitObjectIsLSSHitNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexBarycentricNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexBarycentricNV)].operands.push(OperandId, "'Instance ID'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexBarycentricNV)].operands.push(OperandId, "'Geometry Index'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexBarycentricNV)].operands.push(OperandId, "'Primitive Index'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexBarycentricNV)].operands.push(OperandId, "'Barycentrics'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexBarycentricNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexPositionNV)].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexPositionNV)].operands.push(OperandId, "'Instance ID'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexPositionNV)].operands.push(OperandId, "'Geometry Index'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexPositionNV)].operands.push(OperandId, "'Primitive Index'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexPositionNV)].operands.push(OperandId, "'Barycentrics'"); InstructionDesc[enumCast(Op::OpFetchMicroTriangleVertexPositionNV)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpColorAttachmentReadEXT)].operands.push(OperandId, "'Attachment'"); InstructionDesc[enumCast(Op::OpColorAttachmentReadEXT)].operands.push(OperandId, "'Sample'", true); InstructionDesc[enumCast(Op::OpStencilAttachmentReadEXT)].operands.push(OperandId, "'Sample'", true); InstructionDesc[enumCast(Op::OpDepthAttachmentReadEXT)].operands.push(OperandId, "'Sample'", true); InstructionDesc[enumCast(Op::OpImageSampleWeightedQCOM)].operands.push(OperandId, "'source texture'"); InstructionDesc[enumCast(Op::OpImageSampleWeightedQCOM)].operands.push(OperandId, "'texture coordinates'"); InstructionDesc[enumCast(Op::OpImageSampleWeightedQCOM)].operands.push(OperandId, "'weights texture'"); InstructionDesc[enumCast(Op::OpImageSampleWeightedQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageSampleWeightedQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpImageBoxFilterQCOM)].operands.push(OperandId, "'source texture'"); InstructionDesc[enumCast(Op::OpImageBoxFilterQCOM)].operands.push(OperandId, "'texture coordinates'"); InstructionDesc[enumCast(Op::OpImageBoxFilterQCOM)].operands.push(OperandId, "'box size'"); InstructionDesc[enumCast(Op::OpImageBoxFilterQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageBoxFilterQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpImageBlockMatchSADQCOM)].operands.push(OperandId, "'target texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSADQCOM)].operands.push(OperandId, "'target coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSADQCOM)].operands.push(OperandId, "'reference texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSADQCOM)].operands.push(OperandId, "'reference coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSADQCOM)].operands.push(OperandId, "'block size'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSADQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageBlockMatchSADQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpImageBlockMatchSSDQCOM)].operands.push(OperandId, "'target texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSSDQCOM)].operands.push(OperandId, "'target coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSSDQCOM)].operands.push(OperandId, "'reference texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSSDQCOM)].operands.push(OperandId, "'reference coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSSDQCOM)].operands.push(OperandId, "'block size'"); InstructionDesc[enumCast(Op::OpImageBlockMatchSSDQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageBlockMatchSSDQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSSDQCOM)].operands.push(OperandId, "'target texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSSDQCOM)].operands.push(OperandId, "'target coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSSDQCOM)].operands.push(OperandId, "'reference texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSSDQCOM)].operands.push(OperandId, "'reference coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSSDQCOM)].operands.push(OperandId, "'block size'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSSDQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSSDQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSADQCOM)].operands.push(OperandId, "'target texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSADQCOM)].operands.push(OperandId, "'target coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSADQCOM)].operands.push(OperandId, "'reference texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSADQCOM)].operands.push(OperandId, "'reference coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSADQCOM)].operands.push(OperandId, "'block size'"); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSADQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageBlockMatchWindowSADQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSSDQCOM)].operands.push(OperandId, "'target texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSSDQCOM)].operands.push(OperandId, "'target coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSSDQCOM)].operands.push(OperandId, "'reference texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSSDQCOM)].operands.push(OperandId, "'reference coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSSDQCOM)].operands.push(OperandId, "'block size'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSSDQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSSDQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].operands.push(OperandId, "'target texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].operands.push(OperandId, "'target coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].operands.push(OperandId, "'reference texture'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].operands.push(OperandId, "'reference coordinates'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].operands.push(OperandId, "'block size'"); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpBitCastArrayQCOM)].operands.push(OperandId, "'source array'"); InstructionDesc[enumCast(Op::OpBitCastArrayQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpCompositeConstructCoopMatQCOM)].operands.push(OperandId, "'source array'"); InstructionDesc[enumCast(Op::OpCompositeConstructCoopMatQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpCompositeExtractCoopMatQCOM)].operands.push(OperandId, "'source cooperative matrix'"); InstructionDesc[enumCast(Op::OpCompositeExtractCoopMatQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpExtractSubArrayQCOM)].operands.push(OperandId, "'source array'"); InstructionDesc[enumCast(Op::OpExtractSubArrayQCOM)].operands.push(OperandId, "'start index'"); InstructionDesc[enumCast(Op::OpExtractSubArrayQCOM)].setResultAndType(true, true); InstructionDesc[enumCast(Op::OpConstantCompositeReplicateEXT)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpSpecConstantCompositeReplicateEXT)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpCompositeConstructReplicateEXT)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixConvertNV)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixTransposeNV)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixReduceNV)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixReduceNV)].operands.push(OperandLiteralNumber, "'ReduceMask'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixReduceNV)].operands.push(OperandId, "'CombineFunc'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixPerElementOpNV)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixPerElementOpNV)].operands.push(OperandId, "'Operation'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixPerElementOpNV)].operands.push(OperandVariableIds, "'Operands'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadTensorNV)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadTensorNV)].operands.push(OperandId, "'Object'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadTensorNV)].operands.push(OperandId, "'TensorLayout'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadTensorNV)].operands.push(OperandMemoryAccess, "'Memory Access'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixLoadTensorNV)].operands.push(OperandTensorAddressingOperands, "'Tensor Addressing Operands'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreTensorNV)].operands.push(OperandId, "'Pointer'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreTensorNV)].operands.push(OperandId, "'Object'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreTensorNV)].operands.push(OperandId, "'TensorLayout'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreTensorNV)].operands.push(OperandMemoryAccess, "'Memory Access'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixStoreTensorNV)].operands.push(OperandTensorAddressingOperands, "'Tensor Addressing Operands'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixReduceNV)].operands.push(OperandId, "'Matrix'"); InstructionDesc[enumCast(Op::OpCooperativeMatrixReduceNV)].operands.push(OperandLiteralNumber, "'ReduceMask'"); InstructionDesc[enumCast(Op::OpTypeTensorLayoutNV)].operands.push(OperandId, "'Dim'"); InstructionDesc[enumCast(Op::OpTypeTensorLayoutNV)].operands.push(OperandId, "'ClampMode'"); InstructionDesc[enumCast(Op::OpTypeTensorViewNV)].operands.push(OperandId, "'Dim'"); InstructionDesc[enumCast(Op::OpTypeTensorViewNV)].operands.push(OperandId, "'HasDimensions'"); InstructionDesc[enumCast(Op::OpTypeTensorViewNV)].operands.push(OperandVariableIds, "'p'"); InstructionDesc[enumCast(Op::OpTensorLayoutSetBlockSizeNV)].operands.push(OperandId, "'TensorLayout'"); InstructionDesc[enumCast(Op::OpTensorLayoutSetBlockSizeNV)].operands.push(OperandVariableIds, "'BlockSize'"); InstructionDesc[enumCast(Op::OpTensorLayoutSetDimensionNV)].operands.push(OperandId, "'TensorLayout'"); InstructionDesc[enumCast(Op::OpTensorLayoutSetDimensionNV)].operands.push(OperandVariableIds, "'Dim'"); InstructionDesc[enumCast(Op::OpTensorLayoutSetStrideNV)].operands.push(OperandId, "'TensorLayout'"); InstructionDesc[enumCast(Op::OpTensorLayoutSetStrideNV)].operands.push(OperandVariableIds, "'Stride'"); InstructionDesc[enumCast(Op::OpTensorLayoutSliceNV)].operands.push(OperandId, "'TensorLayout'"); InstructionDesc[enumCast(Op::OpTensorLayoutSliceNV)].operands.push(OperandVariableIds, "'Operands'"); InstructionDesc[enumCast(Op::OpTensorLayoutSetClampValueNV)].operands.push(OperandId, "'TensorLayout'"); InstructionDesc[enumCast(Op::OpTensorLayoutSetClampValueNV)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpTensorViewSetDimensionNV)].operands.push(OperandId, "'TensorView'"); InstructionDesc[enumCast(Op::OpTensorViewSetDimensionNV)].operands.push(OperandVariableIds, "'Dim'"); InstructionDesc[enumCast(Op::OpTensorViewSetStrideNV)].operands.push(OperandId, "'TensorView'"); InstructionDesc[enumCast(Op::OpTensorViewSetStrideNV)].operands.push(OperandVariableIds, "'Stride'"); InstructionDesc[enumCast(Op::OpTensorViewSetClipNV)].operands.push(OperandId, "'TensorView'"); InstructionDesc[enumCast(Op::OpTensorViewSetClipNV)].operands.push(OperandId, "'ClipRowOffset'"); InstructionDesc[enumCast(Op::OpTensorViewSetClipNV)].operands.push(OperandId, "'ClipRowSpan'"); InstructionDesc[enumCast(Op::OpTensorViewSetClipNV)].operands.push(OperandId, "'ClipColOffset'"); InstructionDesc[enumCast(Op::OpTensorViewSetClipNV)].operands.push(OperandId, "'ClipColSpan'"); InstructionDesc[enumCast(Op::OpSDotKHR)].operands.push(OperandId, "'Vector1'"); InstructionDesc[enumCast(Op::OpSDotKHR)].operands.push(OperandId, "'Vector2'"); InstructionDesc[enumCast(Op::OpSDotKHR)].operands.push(OperandLiteralNumber, "'PackedVectorFormat'"); InstructionDesc[enumCast(Op::OpUDotKHR)].operands.push(OperandId, "'Vector1'"); InstructionDesc[enumCast(Op::OpUDotKHR)].operands.push(OperandId, "'Vector2'"); InstructionDesc[enumCast(Op::OpUDotKHR)].operands.push(OperandLiteralNumber, "'PackedVectorFormat'"); InstructionDesc[enumCast(Op::OpSUDotKHR)].operands.push(OperandId, "'Vector1'"); InstructionDesc[enumCast(Op::OpSUDotKHR)].operands.push(OperandId, "'Vector2'"); InstructionDesc[enumCast(Op::OpSUDotKHR)].operands.push(OperandLiteralNumber, "'PackedVectorFormat'"); InstructionDesc[enumCast(Op::OpSDotAccSatKHR)].operands.push(OperandId, "'Vector1'"); InstructionDesc[enumCast(Op::OpSDotAccSatKHR)].operands.push(OperandId, "'Vector2'"); InstructionDesc[enumCast(Op::OpSDotAccSatKHR)].operands.push(OperandId, "'Accumulator'"); InstructionDesc[enumCast(Op::OpSDotAccSatKHR)].operands.push(OperandLiteralNumber, "'PackedVectorFormat'"); InstructionDesc[enumCast(Op::OpUDotAccSatKHR)].operands.push(OperandId, "'Vector1'"); InstructionDesc[enumCast(Op::OpUDotAccSatKHR)].operands.push(OperandId, "'Vector2'"); InstructionDesc[enumCast(Op::OpUDotAccSatKHR)].operands.push(OperandId, "'Accumulator'"); InstructionDesc[enumCast(Op::OpUDotAccSatKHR)].operands.push(OperandLiteralNumber, "'PackedVectorFormat'"); InstructionDesc[enumCast(Op::OpSUDotAccSatKHR)].operands.push(OperandId, "'Vector1'"); InstructionDesc[enumCast(Op::OpSUDotAccSatKHR)].operands.push(OperandId, "'Vector2'"); InstructionDesc[enumCast(Op::OpSUDotAccSatKHR)].operands.push(OperandId, "'Accumulator'"); InstructionDesc[enumCast(Op::OpSUDotAccSatKHR)].operands.push(OperandLiteralNumber, "'PackedVectorFormat'"); InstructionDesc[enumCast(Op::OpTypeTensorARM)].operands.push(OperandId, "'Element Type'"); InstructionDesc[enumCast(Op::OpTypeTensorARM)].operands.push(OperandId, "'Rank'"); InstructionDesc[enumCast(Op::OpTensorReadARM)].operands.push(OperandId, "'Tensor'"); InstructionDesc[enumCast(Op::OpTensorReadARM)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpTensorReadARM)].operands.push(OperandLiteralNumber, "'Tensor Operand'", true); InstructionDesc[enumCast(Op::OpTensorReadARM)].operands.push(OperandVariableIds, "'Tensor Operands'"); InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandId, "'Tensor'"); InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandId, "'Coordinate'"); InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandId, "'Object'"); InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandLiteralNumber, "'Tensor Operand'", true); InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandVariableIds, "'Tensor Operands'"); InstructionDesc[enumCast(Op::OpTensorQuerySizeARM)].operands.push(OperandId, "'Tensor'"); InstructionDesc[enumCast(Op::OpTensorQuerySizeARM)].operands.push(OperandId, "'Dimension'", true); }); } } // end spv namespace glslang-16.0.0/SPIRV/doc.h000066400000000000000000000176671506534232700150760ustar00rootroot00000000000000// // Copyright (C) 2014-2015 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Parameterize the SPIR-V enumerants. // #pragma once #include "spirv.hpp11" #include namespace spv { // Fill in all the parameters void Parameterize(); // Return the English names of all the enums. const char* SourceString(int); const char* AddressingString(int); const char* MemoryString(int); const char* ExecutionModelString(int); const char* ExecutionModeString(int); const char* StorageClassString(int); const char* DecorationString(int); const char* BuiltInString(int); const char* DimensionString(int); const char* SelectControlString(int); const char* LoopControlString(int); const char* FunctionControlString(int); const char* SamplerAddressingModeString(int); const char* SamplerFilterModeString(int); const char* ImageFormatString(int); const char* ImageChannelOrderString(int); const char* ImageChannelTypeString(int); const char* ImageChannelDataTypeString(int type); const char* ImageOperandsString(int format); const char* ImageOperands(int); const char* FPFastMathString(int); const char* FPRoundingModeString(int); const char* LinkageTypeString(int); const char* FuncParamAttrString(int); const char* AccessQualifierString(int); const char* MemorySemanticsString(int); const char* MemoryAccessString(int); const char* ExecutionScopeString(int); const char* GroupOperationString(int); const char* KernelEnqueueFlagsString(int); const char* KernelProfilingInfoString(int); const char* CapabilityString(int); const char* OpcodeString(int); const char* ScopeString(int mem); // For grouping opcodes into subsections enum OpcodeClass { OpClassMisc, OpClassDebug, OpClassAnnotate, OpClassExtension, OpClassMode, OpClassType, OpClassConstant, OpClassMemory, OpClassFunction, OpClassImage, OpClassConvert, OpClassComposite, OpClassArithmetic, OpClassBit, OpClassRelationalLogical, OpClassDerivative, OpClassFlowControl, OpClassAtomic, OpClassPrimitive, OpClassBarrier, OpClassGroup, OpClassDeviceSideEnqueue, OpClassPipe, OpClassCount, OpClassMissing // all instructions start out as missing }; // For parameterizing operands. enum OperandClass { OperandNone, OperandId, OperandVariableIds, OperandOptionalLiteral, OperandOptionalLiteralString, OperandVariableLiterals, OperandVariableIdLiteral, OperandVariableLiteralId, OperandLiteralNumber, OperandLiteralString, OperandVariableLiteralStrings, OperandSource, OperandExecutionModel, OperandAddressing, OperandMemory, OperandExecutionMode, OperandStorage, OperandDimensionality, OperandSamplerAddressingMode, OperandSamplerFilterMode, OperandSamplerImageFormat, OperandImageChannelOrder, OperandImageChannelDataType, OperandImageOperands, OperandFPFastMath, OperandFPRoundingMode, OperandLinkageType, OperandAccessQualifier, OperandFuncParamAttr, OperandDecoration, OperandBuiltIn, OperandSelect, OperandLoop, OperandFunction, OperandMemorySemantics, OperandMemoryAccess, OperandScope, OperandGroupOperation, OperandKernelEnqueueFlags, OperandKernelProfilingInfo, OperandCapability, OperandCooperativeMatrixOperands, OperandTensorAddressingOperands, OperandOpcode, OperandCount }; // Any specific enum can have a set of capabilities that allow it: typedef std::vector EnumCaps; // Parameterize a set of operands with their OperandClass(es) and descriptions. class OperandParameters { public: OperandParameters() { } void push(OperandClass oc, const char* d, bool opt = false) { opClass.push_back(oc); desc.push_back(d); optional.push_back(opt); } void setOptional(); OperandClass getClass(int op) const { return opClass[op]; } const char* getDesc(int op) const { return desc[op]; } bool isOptional(int op) const { return optional[op]; } int getNum() const { return (int)opClass.size(); } protected: std::vector opClass; std::vector desc; std::vector optional; }; // Parameterize an enumerant class EnumParameters { public: EnumParameters() : desc(nullptr) { } const char* desc; }; // Parameterize a set of enumerants that form an enum class EnumDefinition : public EnumParameters { public: EnumDefinition() : ceiling(0), bitmask(false), getName(nullptr), enumParams(nullptr), operandParams(nullptr) { } void set(int ceil, const char* (*name)(int), EnumParameters* ep, bool mask = false) { ceiling = ceil; getName = name; bitmask = mask; enumParams = ep; } void setOperands(OperandParameters* op) { operandParams = op; } int ceiling; // ceiling of enumerants bool bitmask; // true if these enumerants combine into a bitmask const char* (*getName)(int); // a function that returns the name for each enumerant value (or shift) EnumParameters* enumParams; // parameters for each individual enumerant OperandParameters* operandParams; // sets of operands }; // Parameterize an instruction's logical format, including its known set of operands, // per OperandParameters above. class InstructionParameters { public: InstructionParameters() : opDesc("TBD"), opClass(OpClassMissing), typePresent(true), // most normal, only exceptions have to be spelled out resultPresent(true) // most normal, only exceptions have to be spelled out { } void setResultAndType(bool r, bool t) { resultPresent = r; typePresent = t; } bool hasResult() const { return resultPresent != 0; } bool hasType() const { return typePresent != 0; } const char* opDesc; OpcodeClass opClass; OperandParameters operands; protected: bool typePresent : 1; bool resultPresent : 1; }; // The set of objects that hold all the instruction/operand // parameterization information. extern InstructionParameters InstructionDesc[]; // These hold definitions of the enumerants used for operands extern EnumDefinition OperandClassParams[]; const char* GetOperandDesc(OperandClass operand); void PrintImmediateRow(int imm, const char* name, const EnumParameters* enumParams, bool caps, bool hex = false); const char* AccessQualifierString(int attr); void PrintOperands(const OperandParameters& operands, int reservedOperands); } // end namespace spv glslang-16.0.0/SPIRV/hex_float.h000066400000000000000000001241761506534232700162740ustar00rootroot00000000000000// Copyright (c) 2015-2016 The Khronos Group Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef LIBSPIRV_UTIL_HEX_FLOAT_H_ #define LIBSPIRV_UTIL_HEX_FLOAT_H_ #include #include #include #include #include #include #include #include "bitutils.h" namespace spvutils { class Float16 { public: Float16(uint16_t v) : val(v) {} Float16() {} static bool isNan(const Float16& val) { return ((val.val & 0x7C00) == 0x7C00) && ((val.val & 0x3FF) != 0); } // Returns true if the given value is any kind of infinity. static bool isInfinity(const Float16& val) { return ((val.val & 0x7C00) == 0x7C00) && ((val.val & 0x3FF) == 0); } Float16(const Float16& other) { val = other.val; } uint16_t get_value() const { return val; } // Returns the maximum normal value. static Float16 max() { return Float16(0x7bff); } // Returns the lowest normal value. static Float16 lowest() { return Float16(0xfbff); } private: uint16_t val; }; class FloatE5M2 { public: FloatE5M2(uint8_t v) : val(v) {} FloatE5M2() {} static bool isNan(const FloatE5M2& val) { return ((val.val & 0x7C) == 0x7C) && ((val.val & 0x3) != 0); } // Returns true if the given value is any kind of infinity. static bool isInfinity(const FloatE5M2& val) { return ((val.val & 0x7C) == 0x7C) && ((val.val & 0x3) == 0); } FloatE5M2(const FloatE5M2& other) { val = other.val; } uint8_t get_value() const { return val; } // Returns the maximum normal value. static FloatE5M2 max() { return FloatE5M2(0x7B); } // Returns the lowest normal value. static FloatE5M2 lowest() { return FloatE5M2(0xFB); } private: uint8_t val; }; class FloatE4M3 { public: FloatE4M3(uint8_t v) : val(v) {} FloatE4M3() {} static bool isNan(const FloatE4M3& val) { return (val.val & 0x7F) == 0x7F; } // Returns true if the given value is any kind of infinity. static bool isInfinity(const FloatE4M3&) { return false; } FloatE4M3(const FloatE4M3& other) { val = other.val; } uint8_t get_value() const { return val; } // Returns the maximum normal value. static FloatE4M3 max() { return FloatE4M3(0x7E); } // Returns the lowest normal value. static FloatE4M3 lowest() { return FloatE4M3(0xFE); } private: uint8_t val; }; // To specialize this type, you must override uint_type to define // an unsigned integer that can fit your floating point type. // You must also add a isNan function that returns true if // a value is Nan. template struct FloatProxyTraits { typedef void uint_type; }; template <> struct FloatProxyTraits { typedef uint32_t uint_type; static bool isNan(float f) { return std::isnan(f); } // Returns true if the given value is any kind of infinity. static bool isInfinity(float f) { return std::isinf(f); } // Returns the maximum normal value. static float max() { return std::numeric_limits::max(); } // Returns the lowest normal value. static float lowest() { return std::numeric_limits::lowest(); } }; template <> struct FloatProxyTraits { typedef uint64_t uint_type; static bool isNan(double f) { return std::isnan(f); } // Returns true if the given value is any kind of infinity. static bool isInfinity(double f) { return std::isinf(f); } // Returns the maximum normal value. static double max() { return std::numeric_limits::max(); } // Returns the lowest normal value. static double lowest() { return std::numeric_limits::lowest(); } }; template <> struct FloatProxyTraits { typedef uint16_t uint_type; static bool isNan(Float16 f) { return Float16::isNan(f); } // Returns true if the given value is any kind of infinity. static bool isInfinity(Float16 f) { return Float16::isInfinity(f); } // Returns the maximum normal value. static Float16 max() { return Float16::max(); } // Returns the lowest normal value. static Float16 lowest() { return Float16::lowest(); } }; template <> struct FloatProxyTraits { typedef uint8_t uint_type; static bool isNan(FloatE5M2 f) { return FloatE5M2::isNan(f); } // Returns true if the given value is any kind of infinity. static bool isInfinity(FloatE5M2 f) { return FloatE5M2::isInfinity(f); } // Returns the maximum normal value. static FloatE5M2 max() { return FloatE5M2::max(); } // Returns the lowest normal value. static FloatE5M2 lowest() { return FloatE5M2::lowest(); } }; template <> struct FloatProxyTraits { typedef uint8_t uint_type; static bool isNan(FloatE4M3 f) { return FloatE4M3::isNan(f); } // Returns true if the given value is any kind of infinity. static bool isInfinity(FloatE4M3 f) { return FloatE4M3::isInfinity(f); } // Returns the maximum normal value. static FloatE4M3 max() { return FloatE4M3::max(); } // Returns the lowest normal value. static FloatE4M3 lowest() { return FloatE4M3::lowest(); } }; // Since copying a floating point number (especially if it is NaN) // does not guarantee that bits are preserved, this class lets us // store the type and use it as a float when necessary. template class FloatProxy { public: typedef typename FloatProxyTraits::uint_type uint_type; // Since this is to act similar to the normal floats, // do not initialize the data by default. FloatProxy() {} // Intentionally non-explicit. This is a proxy type so // implicit conversions allow us to use it more transparently. FloatProxy(T val) { data_ = BitwiseCast(val); } // Intentionally non-explicit. This is a proxy type so // implicit conversions allow us to use it more transparently. FloatProxy(uint_type val) { data_ = val; } // This is helpful to have and is guaranteed not to stomp bits. FloatProxy operator-() const { return static_cast(data_ ^ (uint_type(0x1) << (sizeof(T) * 8 - 1))); } // Returns the data as a floating point value. T getAsFloat() const { return BitwiseCast(data_); } // Returns the raw data. uint_type data() const { return data_; } // Returns true if the value represents any type of NaN. bool isNan() { return FloatProxyTraits::isNan(getAsFloat()); } // Returns true if the value represents any type of infinity. bool isInfinity() { return FloatProxyTraits::isInfinity(getAsFloat()); } // Returns the maximum normal value. static FloatProxy max() { return FloatProxy(FloatProxyTraits::max()); } // Returns the lowest normal value. static FloatProxy lowest() { return FloatProxy(FloatProxyTraits::lowest()); } private: uint_type data_; }; template bool operator==(const FloatProxy& first, const FloatProxy& second) { return first.data() == second.data(); } // Reads a FloatProxy value as a normal float from a stream. template std::istream& operator>>(std::istream& is, FloatProxy& value) { T float_val; is >> float_val; value = FloatProxy(float_val); return is; } // This is an example traits. It is not meant to be used in practice, but will // be the default for any non-specialized type. template struct HexFloatTraits { // Integer type that can store this hex-float. typedef void uint_type; // Signed integer type that can store this hex-float. typedef void int_type; // The numerical type that this HexFloat represents. typedef void underlying_type; // The type needed to construct the underlying type. typedef void native_type; // The number of bits that are actually relevant in the uint_type. // This allows us to deal with, for example, 24-bit values in a 32-bit // integer. static const uint32_t num_used_bits = 0; // Number of bits that represent the exponent. static const uint32_t num_exponent_bits = 0; // Number of bits that represent the fractional part. static const uint32_t num_fraction_bits = 0; // The bias of the exponent. (How much we need to subtract from the stored // value to get the correct value.) static const uint32_t exponent_bias = 0; static bool supportsInfinity() { return true; } }; // Traits for IEEE float. // 1 sign bit, 8 exponent bits, 23 fractional bits. template <> struct HexFloatTraits> { typedef uint32_t uint_type; typedef int32_t int_type; typedef FloatProxy underlying_type; typedef float native_type; static const uint_type num_used_bits = 32; static const uint_type num_exponent_bits = 8; static const uint_type num_fraction_bits = 23; static const uint_type exponent_bias = 127; static bool supportsInfinity() { return true; } }; // Traits for IEEE double. // 1 sign bit, 11 exponent bits, 52 fractional bits. template <> struct HexFloatTraits> { typedef uint64_t uint_type; typedef int64_t int_type; typedef FloatProxy underlying_type; typedef double native_type; static const uint_type num_used_bits = 64; static const uint_type num_exponent_bits = 11; static const uint_type num_fraction_bits = 52; static const uint_type exponent_bias = 1023; static bool supportsInfinity() { return true; } }; // Traits for IEEE half. // 1 sign bit, 5 exponent bits, 10 fractional bits. template <> struct HexFloatTraits> { typedef uint16_t uint_type; typedef int16_t int_type; typedef uint16_t underlying_type; typedef uint16_t native_type; static const uint_type num_used_bits = 16; static const uint_type num_exponent_bits = 5; static const uint_type num_fraction_bits = 10; static const uint_type exponent_bias = 15; static bool supportsInfinity() { return true; } }; template <> struct HexFloatTraits> { typedef uint8_t uint_type; typedef int8_t int_type; typedef uint8_t underlying_type; typedef uint8_t native_type; static const uint_type num_used_bits = 8; static const uint_type num_exponent_bits = 5; static const uint_type num_fraction_bits = 2; static const uint_type exponent_bias = 15; static bool supportsInfinity() { return true; } }; template <> struct HexFloatTraits> { typedef uint8_t uint_type; typedef int8_t int_type; typedef uint8_t underlying_type; typedef uint8_t native_type; static const uint_type num_used_bits = 8; static const uint_type num_exponent_bits = 4; static const uint_type num_fraction_bits = 3; static const uint_type exponent_bias = 7; static bool supportsInfinity() { return false; } }; enum round_direction { kRoundToZero, kRoundToNearestEven, kRoundToPositiveInfinity, kRoundToNegativeInfinity }; // Template class that houses a floating pointer number. // It exposes a number of constants based on the provided traits to // assist in interpreting the bits of the value. template > class HexFloat { public: typedef typename Traits::uint_type uint_type; typedef typename Traits::int_type int_type; typedef typename Traits::underlying_type underlying_type; typedef typename Traits::native_type native_type; using Traits_T = Traits; explicit HexFloat(T f) : value_(f) {} T value() const { return value_; } void set_value(T f) { value_ = f; } // These are all written like this because it is convenient to have // compile-time constants for all of these values. // Pass-through values to save typing. static const uint32_t num_used_bits = Traits::num_used_bits; static const uint32_t exponent_bias = Traits::exponent_bias; static const uint32_t num_exponent_bits = Traits::num_exponent_bits; static const uint32_t num_fraction_bits = Traits::num_fraction_bits; // Number of bits to shift left to set the highest relevant bit. static const uint32_t top_bit_left_shift = num_used_bits - 1; // How many nibbles (hex characters) the fractional part takes up. static const uint32_t fraction_nibbles = (num_fraction_bits + 3) / 4; // If the fractional part does not fit evenly into a hex character (4-bits) // then we have to left-shift to get rid of leading 0s. This is the amount // we have to shift (might be 0). static const uint32_t num_overflow_bits = fraction_nibbles * 4 - num_fraction_bits; // The representation of the fraction, not the actual bits. This // includes the leading bit that is usually implicit. static const uint_type fraction_represent_mask = spvutils::SetBits::get; // The topmost bit in the nibble-aligned fraction. static const uint_type fraction_top_bit = uint_type(1) << (num_fraction_bits + num_overflow_bits - 1); // The least significant bit in the exponent, which is also the bit // immediately to the left of the significand. static const uint_type first_exponent_bit = uint_type(1) << (num_fraction_bits); // The mask for the encoded fraction. It does not include the // implicit bit. static const uint_type fraction_encode_mask = spvutils::SetBits::get; // The bit that is used as a sign. static const uint_type sign_mask = uint_type(1) << top_bit_left_shift; // The bits that represent the exponent. static const uint_type exponent_mask = spvutils::SetBits::get; // How far left the exponent is shifted. static const uint32_t exponent_left_shift = num_fraction_bits; // How far from the right edge the fraction is shifted. static const uint32_t fraction_right_shift = static_cast(sizeof(uint_type) * 8) - num_fraction_bits; // The maximum representable unbiased exponent. static const int_type max_exponent = (exponent_mask >> num_fraction_bits) - exponent_bias; // The minimum representable exponent for normalized numbers. static const int_type min_exponent = -static_cast(exponent_bias); // Returns the bits associated with the value. uint_type getBits() const { return spvutils::BitwiseCast(value_); } // Returns the bits associated with the value, without the leading sign bit. uint_type getUnsignedBits() const { return static_cast(spvutils::BitwiseCast(value_) & ~sign_mask); } // Returns the bits associated with the exponent, shifted to start at the // lsb of the type. const uint_type getExponentBits() const { return static_cast((getBits() & exponent_mask) >> num_fraction_bits); } // Returns the exponent in unbiased form. This is the exponent in the // human-friendly form. const int_type getUnbiasedExponent() const { return static_cast(getExponentBits() - exponent_bias); } // Returns just the significand bits from the value. const uint_type getSignificandBits() const { return getBits() & fraction_encode_mask; } // If the number was normalized, returns the unbiased exponent. // If the number was denormal, normalize the exponent first. const int_type getUnbiasedNormalizedExponent() const { if ((getBits() & ~sign_mask) == 0) { // special case if everything is 0 return 0; } int_type exp = getUnbiasedExponent(); if (exp == min_exponent) { // We are in denorm land. uint_type significand_bits = getSignificandBits(); while ((significand_bits & (first_exponent_bit >> 1)) == 0) { significand_bits = static_cast(significand_bits << 1); exp = static_cast(exp - 1); } significand_bits &= fraction_encode_mask; } return exp; } // Returns the signficand after it has been normalized. const uint_type getNormalizedSignificand() const { int_type unbiased_exponent = getUnbiasedNormalizedExponent(); uint_type significand = getSignificandBits(); for (int_type i = unbiased_exponent; i <= min_exponent; ++i) { significand = static_cast(significand << 1); } significand &= fraction_encode_mask; return significand; } // Returns true if this number represents a negative value. bool isNegative() const { return (getBits() & sign_mask) != 0; } // Sets this HexFloat from the individual components. // Note this assumes EVERY significand is normalized, and has an implicit // leading one. This means that the only way that this method will set 0, // is if you set a number so denormalized that it underflows. // Do not use this method with raw bits extracted from a subnormal number, // since subnormals do not have an implicit leading 1 in the significand. // The significand is also expected to be in the // lowest-most num_fraction_bits of the uint_type. // The exponent is expected to be unbiased, meaning an exponent of // 0 actually means 0. // If underflow_round_up is set, then on underflow, if a number is non-0 // and would underflow, we round up to the smallest denorm. void setFromSignUnbiasedExponentAndNormalizedSignificand( bool negative, int_type exponent, uint_type significand, bool round_denorm_up) { bool significand_is_zero = significand == 0; if (exponent <= min_exponent) { // If this was denormalized, then we have to shift the bit on, meaning // the significand is not zero. significand_is_zero = false; significand |= first_exponent_bit; significand = static_cast(significand >> 1); } while (exponent < min_exponent) { significand = static_cast(significand >> 1); ++exponent; } if (exponent == min_exponent) { if (significand == 0 && !significand_is_zero && round_denorm_up) { significand = static_cast(0x1); } } uint_type new_value = 0; if (negative) { new_value = static_cast(new_value | sign_mask); } exponent = static_cast(exponent + exponent_bias); assert(exponent >= 0); // put it all together exponent = static_cast((exponent << exponent_left_shift) & exponent_mask); significand = static_cast(significand & fraction_encode_mask); new_value = static_cast(new_value | (exponent | significand)); value_ = BitwiseCast(new_value); } // Increments the significand of this number by the given amount. // If this would spill the significand into the implicit bit, // carry is set to true and the significand is shifted to fit into // the correct location, otherwise carry is set to false. // All significands and to_increment are assumed to be within the bounds // for a valid significand. static uint_type incrementSignificand(uint_type significand, uint_type to_increment, bool* carry) { significand = static_cast(significand + to_increment); *carry = false; if (significand & first_exponent_bit) { *carry = true; // The implicit 1-bit will have carried, so we should zero-out the // top bit and shift back. significand = static_cast(significand & ~first_exponent_bit); significand = static_cast(significand >> 1); } return significand; } // These exist because MSVC throws warnings on negative right-shifts // even if they are not going to be executed. Eg: // constant_number < 0? 0: constant_number // These convert the negative left-shifts into right shifts. template uint_type negatable_left_shift(int_type N, uint_type val) { if(N >= 0) return val << N; return val >> -N; } template uint_type negatable_right_shift(int_type N, uint_type val) { if(N >= 0) return val >> N; return val << -N; } // Returns the significand, rounded to fit in a significand in // other_T. This is shifted so that the most significant // bit of the rounded number lines up with the most significant bit // of the returned significand. template typename other_T::uint_type getRoundedNormalizedSignificand( round_direction dir, bool* carry_bit) { typedef typename other_T::uint_type other_uint_type; static const int_type num_throwaway_bits = static_cast(num_fraction_bits) - static_cast(other_T::num_fraction_bits); static const uint_type last_significant_bit = (num_throwaway_bits < 0) ? 0 : negatable_left_shift(num_throwaway_bits, 1u); static const uint_type first_rounded_bit = (num_throwaway_bits < 1) ? 0 : negatable_left_shift(num_throwaway_bits - 1, 1u); static const uint_type throwaway_mask_bits = num_throwaway_bits > 0 ? num_throwaway_bits : 0; static const uint_type throwaway_mask = spvutils::SetBits::get; *carry_bit = false; other_uint_type out_val = 0; uint_type significand = getNormalizedSignificand(); // If we are up-casting, then we just have to shift to the right location. if (num_throwaway_bits <= 0) { out_val = static_cast(significand); uint_type shift_amount = static_cast(-num_throwaway_bits); out_val = static_cast(out_val << shift_amount); return out_val; } // If every non-representable bit is 0, then we don't have any casting to // do. if ((significand & throwaway_mask) == 0) { return static_cast( negatable_right_shift(num_throwaway_bits, significand)); } bool round_away_from_zero = false; // We actually have to narrow the significand here, so we have to follow the // rounding rules. switch (dir) { case kRoundToZero: break; case kRoundToPositiveInfinity: round_away_from_zero = !isNegative(); break; case kRoundToNegativeInfinity: round_away_from_zero = isNegative(); break; case kRoundToNearestEven: // Have to round down, round bit is 0 if ((first_rounded_bit & significand) == 0) { break; } if (((significand & throwaway_mask) & ~first_rounded_bit) != 0) { // If any subsequent bit of the rounded portion is non-0 then we round // up. round_away_from_zero = true; break; } // We are exactly half-way between 2 numbers, pick even. if ((significand & last_significant_bit) != 0) { // 1 for our last bit, round up. round_away_from_zero = true; break; } break; } if (round_away_from_zero) { return static_cast( negatable_right_shift(num_throwaway_bits, incrementSignificand( significand, last_significant_bit, carry_bit))); } else { return static_cast( negatable_right_shift(num_throwaway_bits, significand)); } } // Casts this value to another HexFloat. If the cast is widening, // then round_dir is ignored. If the cast is narrowing, then // the result is rounded in the direction specified. // This number will retain Nan and Inf values. // It will also saturate to Inf if the number overflows, and // underflow to (0 or min depending on rounding) if the number underflows. template void castTo(other_T& other, round_direction round_dir) { other = other_T(static_cast(0)); bool negate = isNegative(); if (getUnsignedBits() == 0) { if (negate) { other.set_value(-other.value()); } return; } uint_type significand = getSignificandBits(); bool carried = false; typename other_T::uint_type rounded_significand = getRoundedNormalizedSignificand(round_dir, &carried); int_type exponent = getUnbiasedExponent(); if (exponent == min_exponent) { // If we are denormal, normalize the exponent, so that we can encode // easily. exponent = static_cast(exponent + 1); for (uint_type check_bit = first_exponent_bit >> 1; check_bit != 0; check_bit = static_cast(check_bit >> 1)) { exponent = static_cast(exponent - 1); if (check_bit & significand) break; } } bool is_nan = (getBits() & exponent_mask) == exponent_mask && significand != 0; bool is_inf = !is_nan && (((exponent + carried) > static_cast(other_T::exponent_bias) && other_T::Traits_T::supportsInfinity()) || ((exponent + carried) > static_cast(other_T::exponent_bias + 1) && !other_T::Traits_T::supportsInfinity()) || (significand == 0 && (getBits() & exponent_mask) == exponent_mask)); // If we are Nan or Inf we should pass that through. if (is_inf) { if (other_T::Traits_T::supportsInfinity()) { // encode as +/-inf other.set_value(BitwiseCast( static_cast( (negate ? other_T::sign_mask : 0) | other_T::exponent_mask))); } else { // encode as +/-nan other.set_value(BitwiseCast( static_cast(negate ? ~0 : ~other_T::sign_mask))); } return; } if (is_nan) { typename other_T::uint_type shifted_significand; shifted_significand = static_cast( negatable_left_shift( static_cast(other_T::num_fraction_bits) - static_cast(num_fraction_bits), significand)); // We are some sort of Nan. We try to keep the bit-pattern of the Nan // as close as possible. If we had to shift off bits so we are 0, then we // just set the last bit. other.set_value(BitwiseCast( static_cast( (negate ? other_T::sign_mask : 0) | other_T::exponent_mask | (shifted_significand == 0 ? 0x1 : shifted_significand)))); return; } bool round_underflow_up = isNegative() ? round_dir == kRoundToNegativeInfinity : round_dir == kRoundToPositiveInfinity; typedef typename other_T::int_type other_int_type; // setFromSignUnbiasedExponentAndNormalizedSignificand will // zero out any underflowing value (but retain the sign). other.setFromSignUnbiasedExponentAndNormalizedSignificand( negate, static_cast(exponent), rounded_significand, round_underflow_up); return; } private: T value_; static_assert(num_used_bits == Traits::num_exponent_bits + Traits::num_fraction_bits + 1, "The number of bits do not fit"); static_assert(sizeof(T) == sizeof(uint_type), "The type sizes do not match"); }; // Returns 4 bits represented by the hex character. inline uint8_t get_nibble_from_character(int character) { const char* dec = "0123456789"; const char* lower = "abcdef"; const char* upper = "ABCDEF"; const char* p = nullptr; if ((p = strchr(dec, character))) { return static_cast(p - dec); } else if ((p = strchr(lower, character))) { return static_cast(p - lower + 0xa); } else if ((p = strchr(upper, character))) { return static_cast(p - upper + 0xa); } assert(false && "This was called with a non-hex character"); return 0; } // Outputs the given HexFloat to the stream. template std::ostream& operator<<(std::ostream& os, const HexFloat& value) { typedef HexFloat HF; typedef typename HF::uint_type uint_type; typedef typename HF::int_type int_type; static_assert(HF::num_used_bits != 0, "num_used_bits must be non-zero for a valid float"); static_assert(HF::num_exponent_bits != 0, "num_exponent_bits must be non-zero for a valid float"); static_assert(HF::num_fraction_bits != 0, "num_fractin_bits must be non-zero for a valid float"); const uint_type bits = spvutils::BitwiseCast(value.value()); const char* const sign = (bits & HF::sign_mask) ? "-" : ""; const uint_type exponent = static_cast( (bits & HF::exponent_mask) >> HF::num_fraction_bits); uint_type fraction = static_cast((bits & HF::fraction_encode_mask) << HF::num_overflow_bits); const bool is_zero = exponent == 0 && fraction == 0; const bool is_denorm = exponent == 0 && !is_zero; // exponent contains the biased exponent we have to convert it back into // the normal range. int_type int_exponent = static_cast(exponent - HF::exponent_bias); // If the number is all zeros, then we actually have to NOT shift the // exponent. int_exponent = is_zero ? 0 : int_exponent; // If we are denorm, then start shifting, and decreasing the exponent until // our leading bit is 1. if (is_denorm) { while ((fraction & HF::fraction_top_bit) == 0) { fraction = static_cast(fraction << 1); int_exponent = static_cast(int_exponent - 1); } // Since this is denormalized, we have to consume the leading 1 since it // will end up being implicit. fraction = static_cast(fraction << 1); // eat the leading 1 fraction &= HF::fraction_represent_mask; } uint_type fraction_nibbles = HF::fraction_nibbles; // We do not have to display any trailing 0s, since this represents the // fractional part. while (fraction_nibbles > 0 && (fraction & 0xF) == 0) { // Shift off any trailing values; fraction = static_cast(fraction >> 4); --fraction_nibbles; } const auto saved_flags = os.flags(); const auto saved_fill = os.fill(); os << sign << "0x" << (is_zero ? '0' : '1'); if (fraction_nibbles) { // Make sure to keep the leading 0s in place, since this is the fractional // part. os << "." << std::setw(static_cast(fraction_nibbles)) << std::setfill('0') << std::hex << fraction; } os << "p" << std::dec << (int_exponent >= 0 ? "+" : "") << int_exponent; os.flags(saved_flags); os.fill(saved_fill); return os; } // Returns true if negate_value is true and the next character on the // input stream is a plus or minus sign. In that case we also set the fail bit // on the stream and set the value to the zero value for its type. template inline bool RejectParseDueToLeadingSign(std::istream& is, bool negate_value, HexFloat& value) { if (negate_value) { auto next_char = is.peek(); if (next_char == '-' || next_char == '+') { // Fail the parse. Emulate standard behaviour by setting the value to // the zero value, and set the fail bit on the stream. value = HexFloat(typename HexFloat::uint_type(0)); is.setstate(std::ios_base::failbit); return true; } } return false; } // Parses a floating point number from the given stream and stores it into the // value parameter. // If negate_value is true then the number may not have a leading minus or // plus, and if it successfully parses, then the number is negated before // being stored into the value parameter. // If the value cannot be correctly parsed or overflows the target floating // point type, then set the fail bit on the stream. // TODO(dneto): Promise C++11 standard behavior in how the value is set in // the error case, but only after all target platforms implement it correctly. // In particular, the Microsoft C++ runtime appears to be out of spec. template inline std::istream& ParseNormalFloat(std::istream& is, bool negate_value, HexFloat& value) { if (RejectParseDueToLeadingSign(is, negate_value, value)) { return is; } T val; is >> val; if (negate_value) { val = -val; } value.set_value(val); // In the failure case, map -0.0 to 0.0. if (is.fail() && value.getUnsignedBits() == 0u) { value = HexFloat(typename HexFloat::uint_type(0)); } if (val.isInfinity()) { // Fail the parse. Emulate standard behaviour by setting the value to // the closest normal value, and set the fail bit on the stream. value.set_value((value.isNegative() || negate_value) ? T::lowest() : T::max()); is.setstate(std::ios_base::failbit); } return is; } // Specialization of ParseNormalFloat for FloatProxy values. // This will parse the float as it were a 32-bit floating point number, // and then round it down to fit into a Float16 value. // The number is rounded towards zero. // If negate_value is true then the number may not have a leading minus or // plus, and if it successfully parses, then the number is negated before // being stored into the value parameter. // If the value cannot be correctly parsed or overflows the target floating // point type, then set the fail bit on the stream. // TODO(dneto): Promise C++11 standard behavior in how the value is set in // the error case, but only after all target platforms implement it correctly. // In particular, the Microsoft C++ runtime appears to be out of spec. template <> inline std::istream& ParseNormalFloat, HexFloatTraits>>( std::istream& is, bool negate_value, HexFloat, HexFloatTraits>>& value) { // First parse as a 32-bit float. HexFloat> float_val(0.0f); ParseNormalFloat(is, negate_value, float_val); // Then convert to 16-bit float, saturating at infinities, and // rounding toward zero. float_val.castTo(value, kRoundToZero); // Overflow on 16-bit behaves the same as for 32- and 64-bit: set the // fail bit and set the lowest or highest value. if (Float16::isInfinity(value.value().getAsFloat())) { value.set_value(value.isNegative() ? Float16::lowest() : Float16::max()); is.setstate(std::ios_base::failbit); } return is; } // Reads a HexFloat from the given stream. // If the float is not encoded as a hex-float then it will be parsed // as a regular float. // This may fail if your stream does not support at least one unget. // Nan values can be encoded with "0x1.p+exponent_bias". // This would normally overflow a float and round to // infinity but this special pattern is the exact representation for a NaN, // and therefore is actually encoded as the correct NaN. To encode inf, // either 0x0p+exponent_bias can be specified or any exponent greater than // exponent_bias. // Examples using IEEE 32-bit float encoding. // 0x1.0p+128 (+inf) // -0x1.0p-128 (-inf) // // 0x1.1p+128 (+Nan) // -0x1.1p+128 (-Nan) // // 0x1p+129 (+inf) // -0x1p+129 (-inf) template std::istream& operator>>(std::istream& is, HexFloat& value) { using HF = HexFloat; using uint_type = typename HF::uint_type; using int_type = typename HF::int_type; value.set_value(static_cast(0.f)); if (is.flags() & std::ios::skipws) { // If the user wants to skip whitespace , then we should obey that. while (std::isspace(is.peek())) { is.get(); } } auto next_char = is.peek(); bool negate_value = false; if (next_char != '-' && next_char != '0') { return ParseNormalFloat(is, negate_value, value); } if (next_char == '-') { negate_value = true; is.get(); next_char = is.peek(); } if (next_char == '0') { is.get(); // We may have to unget this. auto maybe_hex_start = is.peek(); if (maybe_hex_start != 'x' && maybe_hex_start != 'X') { is.unget(); return ParseNormalFloat(is, negate_value, value); } else { is.get(); // Throw away the 'x'; } } else { return ParseNormalFloat(is, negate_value, value); } // This "looks" like a hex-float so treat it as one. bool seen_p = false; bool seen_dot = false; uint_type fraction_index = 0; uint_type fraction = 0; int_type exponent = HF::exponent_bias; // Strip off leading zeros so we don't have to special-case them later. while ((next_char = is.peek()) == '0') { is.get(); } bool is_denorm = true; // Assume denorm "representation" until we hear otherwise. // NB: This does not mean the value is actually denorm, // it just means that it was written 0. bool bits_written = false; // Stays false until we write a bit. while (!seen_p && !seen_dot) { // Handle characters that are left of the fractional part. if (next_char == '.') { seen_dot = true; } else if (next_char == 'p') { seen_p = true; } else if (::isxdigit(next_char)) { // We know this is not denormalized since we have stripped all leading // zeroes and we are not a ".". is_denorm = false; int number = get_nibble_from_character(next_char); for (int i = 0; i < 4; ++i, number <<= 1) { uint_type write_bit = (number & 0x8) ? 0x1 : 0x0; if (bits_written) { // If we are here the bits represented belong in the fractional // part of the float, and we have to adjust the exponent accordingly. fraction = static_cast( fraction | static_cast( write_bit << (HF::top_bit_left_shift - fraction_index++))); exponent = static_cast(exponent + 1); } bits_written |= write_bit != 0; } } else { // We have not found our exponent yet, so we have to fail. is.setstate(std::ios::failbit); return is; } is.get(); next_char = is.peek(); } bits_written = false; while (seen_dot && !seen_p) { // Handle only fractional parts now. if (next_char == 'p') { seen_p = true; } else if (::isxdigit(next_char)) { int number = get_nibble_from_character(next_char); for (int i = 0; i < 4; ++i, number <<= 1) { uint_type write_bit = (number & 0x8) ? 0x01 : 0x00; bits_written |= write_bit != 0; if (is_denorm && !bits_written) { // Handle modifying the exponent here this way we can handle // an arbitrary number of hex values without overflowing our // integer. exponent = static_cast(exponent - 1); } else { fraction = static_cast( fraction | static_cast( write_bit << (HF::top_bit_left_shift - fraction_index++))); } } } else { // We still have not found our 'p' exponent yet, so this is not a valid // hex-float. is.setstate(std::ios::failbit); return is; } is.get(); next_char = is.peek(); } bool seen_sign = false; int8_t exponent_sign = 1; int_type written_exponent = 0; while (true) { if ((next_char == '-' || next_char == '+')) { if (seen_sign) { is.setstate(std::ios::failbit); return is; } seen_sign = true; exponent_sign = (next_char == '-') ? -1 : 1; } else if (::isdigit(next_char)) { // Hex-floats express their exponent as decimal. written_exponent = static_cast(written_exponent * 10); written_exponent = static_cast(written_exponent + (next_char - '0')); } else { break; } is.get(); next_char = is.peek(); } written_exponent = static_cast(written_exponent * exponent_sign); exponent = static_cast(exponent + written_exponent); bool is_zero = is_denorm && (fraction == 0); if (is_denorm && !is_zero) { fraction = static_cast(fraction << 1); exponent = static_cast(exponent - 1); } else if (is_zero) { exponent = 0; } if (exponent <= 0 && !is_zero) { fraction = static_cast(fraction >> 1); fraction |= static_cast(1) << HF::top_bit_left_shift; } fraction = (fraction >> HF::fraction_right_shift) & HF::fraction_encode_mask; const int_type max_exponent = SetBits::get; // Handle actual denorm numbers while (exponent < 0 && !is_zero) { fraction = static_cast(fraction >> 1); exponent = static_cast(exponent + 1); fraction &= HF::fraction_encode_mask; if (fraction == 0) { // We have underflowed our fraction. We should clamp to zero. is_zero = true; exponent = 0; } } // We have overflowed so we should be inf/-inf. if (exponent > max_exponent) { exponent = max_exponent; fraction = 0; } uint_type output_bits = static_cast( static_cast(negate_value ? 1 : 0) << HF::top_bit_left_shift); output_bits |= fraction; uint_type shifted_exponent = static_cast( static_cast(exponent << HF::exponent_left_shift) & HF::exponent_mask); output_bits |= shifted_exponent; T output_float = spvutils::BitwiseCast(output_bits); value.set_value(output_float); return is; } // Writes a FloatProxy value to a stream. // Zero and normal numbers are printed in the usual notation, but with // enough digits to fully reproduce the value. Other values (subnormal, // NaN, and infinity) are printed as a hex float. template std::ostream& operator<<(std::ostream& os, const FloatProxy& value) { auto float_val = value.getAsFloat(); switch (std::fpclassify(float_val)) { case FP_ZERO: case FP_NORMAL: { auto saved_precision = os.precision(); os.precision(std::numeric_limits::digits10); os << float_val; os.precision(saved_precision); } break; default: os << HexFloat>(value); break; } return os; } template <> inline std::ostream& operator<<(std::ostream& os, const FloatProxy& value) { os << HexFloat>(value); return os; } } #endif // LIBSPIRV_UTIL_HEX_FLOAT_H_ glslang-16.0.0/SPIRV/spirv.hpp11000066400000000000000000010400501506534232700161550ustar00rootroot00000000000000// Copyright (c) 2014-2024 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, Beef // // - 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 // - Beef will use enum classes in the Specification class located in the "Spv" namespace, // e.g.: Spv.Specification.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 class SourceLanguage : unsigned { Unknown = 0, ESSL = 1, GLSL = 2, OpenCL_C = 3, OpenCL_CPP = 4, HLSL = 5, CPP_for_OpenCL = 6, SYCL = 7, HERO_C = 8, NZSL = 9, WGSL = 10, Slang = 11, Zig = 12, Rust = 13, Max = 0x7fffffff, }; enum class ExecutionModel : unsigned { Vertex = 0, TessellationControl = 1, TessellationEvaluation = 2, Geometry = 3, Fragment = 4, GLCompute = 5, Kernel = 6, TaskNV = 5267, MeshNV = 5268, RayGenerationKHR = 5313, RayGenerationNV = 5313, IntersectionKHR = 5314, IntersectionNV = 5314, AnyHitKHR = 5315, AnyHitNV = 5315, ClosestHitKHR = 5316, ClosestHitNV = 5316, MissKHR = 5317, MissNV = 5317, CallableKHR = 5318, CallableNV = 5318, TaskEXT = 5364, MeshEXT = 5365, Max = 0x7fffffff, }; enum class AddressingModel : unsigned { Logical = 0, Physical32 = 1, Physical64 = 2, PhysicalStorageBuffer64 = 5348, PhysicalStorageBuffer64EXT = 5348, Max = 0x7fffffff, }; enum class MemoryModel : unsigned { Simple = 0, GLSL450 = 1, OpenCL = 2, Vulkan = 3, VulkanKHR = 3, Max = 0x7fffffff, }; enum class ExecutionMode : unsigned { Invocations = 0, SpacingEqual = 1, SpacingFractionalEven = 2, SpacingFractionalOdd = 3, VertexOrderCw = 4, VertexOrderCcw = 5, PixelCenterInteger = 6, OriginUpperLeft = 7, OriginLowerLeft = 8, EarlyFragmentTests = 9, PointMode = 10, Xfb = 11, DepthReplacing = 12, DepthGreater = 14, DepthLess = 15, DepthUnchanged = 16, LocalSize = 17, LocalSizeHint = 18, InputPoints = 19, InputLines = 20, InputLinesAdjacency = 21, Triangles = 22, InputTrianglesAdjacency = 23, Quads = 24, Isolines = 25, OutputVertices = 26, OutputPoints = 27, OutputLineStrip = 28, OutputTriangleStrip = 29, VecTypeHint = 30, ContractionOff = 31, Initializer = 33, Finalizer = 34, SubgroupSize = 35, SubgroupsPerWorkgroup = 36, SubgroupsPerWorkgroupId = 37, LocalSizeId = 38, LocalSizeHintId = 39, NonCoherentColorAttachmentReadEXT = 4169, NonCoherentDepthAttachmentReadEXT = 4170, NonCoherentStencilAttachmentReadEXT = 4171, SubgroupUniformControlFlowKHR = 4421, PostDepthCoverage = 4446, DenormPreserve = 4459, DenormFlushToZero = 4460, SignedZeroInfNanPreserve = 4461, RoundingModeRTE = 4462, RoundingModeRTZ = 4463, NonCoherentTileAttachmentReadQCOM = 4489, TileShadingRateQCOM = 4490, EarlyAndLateFragmentTestsAMD = 5017, StencilRefReplacingEXT = 5027, CoalescingAMDX = 5069, IsApiEntryAMDX = 5070, MaxNodeRecursionAMDX = 5071, StaticNumWorkgroupsAMDX = 5072, ShaderIndexAMDX = 5073, MaxNumWorkgroupsAMDX = 5077, StencilRefUnchangedFrontAMD = 5079, StencilRefGreaterFrontAMD = 5080, StencilRefLessFrontAMD = 5081, StencilRefUnchangedBackAMD = 5082, StencilRefGreaterBackAMD = 5083, StencilRefLessBackAMD = 5084, QuadDerivativesKHR = 5088, RequireFullQuadsKHR = 5089, SharesInputWithAMDX = 5102, OutputLinesEXT = 5269, OutputLinesNV = 5269, OutputPrimitivesEXT = 5270, OutputPrimitivesNV = 5270, DerivativeGroupQuadsKHR = 5289, DerivativeGroupQuadsNV = 5289, DerivativeGroupLinearKHR = 5290, DerivativeGroupLinearNV = 5290, OutputTrianglesEXT = 5298, OutputTrianglesNV = 5298, PixelInterlockOrderedEXT = 5366, PixelInterlockUnorderedEXT = 5367, SampleInterlockOrderedEXT = 5368, SampleInterlockUnorderedEXT = 5369, ShadingRateInterlockOrderedEXT = 5370, ShadingRateInterlockUnorderedEXT = 5371, SharedLocalMemorySizeINTEL = 5618, RoundingModeRTPINTEL = 5620, RoundingModeRTNINTEL = 5621, FloatingPointModeALTINTEL = 5622, FloatingPointModeIEEEINTEL = 5623, MaxWorkgroupSizeINTEL = 5893, MaxWorkDimINTEL = 5894, NoGlobalOffsetINTEL = 5895, NumSIMDWorkitemsINTEL = 5896, SchedulerTargetFmaxMhzINTEL = 5903, MaximallyReconvergesKHR = 6023, FPFastMathDefault = 6028, StreamingInterfaceINTEL = 6154, RegisterMapInterfaceINTEL = 6160, NamedBarrierCountINTEL = 6417, MaximumRegistersINTEL = 6461, MaximumRegistersIdINTEL = 6462, NamedMaximumRegistersINTEL = 6463, Max = 0x7fffffff, }; enum class StorageClass : unsigned { UniformConstant = 0, Input = 1, Uniform = 2, Output = 3, Workgroup = 4, CrossWorkgroup = 5, Private = 6, Function = 7, Generic = 8, PushConstant = 9, AtomicCounter = 10, Image = 11, StorageBuffer = 12, TileImageEXT = 4172, TileAttachmentQCOM = 4491, NodePayloadAMDX = 5068, CallableDataKHR = 5328, CallableDataNV = 5328, IncomingCallableDataKHR = 5329, IncomingCallableDataNV = 5329, RayPayloadKHR = 5338, RayPayloadNV = 5338, HitAttributeKHR = 5339, HitAttributeNV = 5339, IncomingRayPayloadKHR = 5342, IncomingRayPayloadNV = 5342, ShaderRecordBufferKHR = 5343, ShaderRecordBufferNV = 5343, PhysicalStorageBuffer = 5349, PhysicalStorageBufferEXT = 5349, HitObjectAttributeNV = 5385, TaskPayloadWorkgroupEXT = 5402, CodeSectionINTEL = 5605, DeviceOnlyINTEL = 5936, HostOnlyINTEL = 5937, Max = 0x7fffffff, }; enum class Dim : unsigned { Dim1D = 0, Dim2D = 1, Dim3D = 2, Cube = 3, Rect = 4, Buffer = 5, SubpassData = 6, TileImageDataEXT = 4173, Max = 0x7fffffff, }; enum class SamplerAddressingMode : unsigned { None = 0, ClampToEdge = 1, Clamp = 2, Repeat = 3, RepeatMirrored = 4, Max = 0x7fffffff, }; enum class SamplerFilterMode : unsigned { Nearest = 0, Linear = 1, Max = 0x7fffffff, }; enum class ImageFormat : unsigned { Unknown = 0, Rgba32f = 1, Rgba16f = 2, R32f = 3, Rgba8 = 4, Rgba8Snorm = 5, Rg32f = 6, Rg16f = 7, R11fG11fB10f = 8, R16f = 9, Rgba16 = 10, Rgb10A2 = 11, Rg16 = 12, Rg8 = 13, R16 = 14, R8 = 15, Rgba16Snorm = 16, Rg16Snorm = 17, Rg8Snorm = 18, R16Snorm = 19, R8Snorm = 20, Rgba32i = 21, Rgba16i = 22, Rgba8i = 23, R32i = 24, Rg32i = 25, Rg16i = 26, Rg8i = 27, R16i = 28, R8i = 29, Rgba32ui = 30, Rgba16ui = 31, Rgba8ui = 32, R32ui = 33, Rgb10a2ui = 34, Rg32ui = 35, Rg16ui = 36, Rg8ui = 37, R16ui = 38, R8ui = 39, R64ui = 40, R64i = 41, Max = 0x7fffffff, }; enum class ImageChannelOrder : unsigned { R = 0, A = 1, RG = 2, RA = 3, RGB = 4, RGBA = 5, BGRA = 6, ARGB = 7, Intensity = 8, Luminance = 9, Rx = 10, RGx = 11, RGBx = 12, Depth = 13, DepthStencil = 14, sRGB = 15, sRGBx = 16, sRGBA = 17, sBGRA = 18, ABGR = 19, Max = 0x7fffffff, }; enum class ImageChannelDataType : unsigned { SnormInt8 = 0, SnormInt16 = 1, UnormInt8 = 2, UnormInt16 = 3, UnormShort565 = 4, UnormShort555 = 5, UnormInt101010 = 6, SignedInt8 = 7, SignedInt16 = 8, SignedInt32 = 9, UnsignedInt8 = 10, UnsignedInt16 = 11, UnsignedInt32 = 12, HalfFloat = 13, Float = 14, UnormInt24 = 15, UnormInt101010_2 = 16, UnsignedIntRaw10EXT = 19, UnsignedIntRaw12EXT = 20, UnormInt2_101010EXT = 21, Max = 0x7fffffff, }; enum class ImageOperandsShift : unsigned { Bias = 0, Lod = 1, Grad = 2, ConstOffset = 3, Offset = 4, ConstOffsets = 5, Sample = 6, MinLod = 7, MakeTexelAvailable = 8, MakeTexelAvailableKHR = 8, MakeTexelVisible = 9, MakeTexelVisibleKHR = 9, NonPrivateTexel = 10, NonPrivateTexelKHR = 10, VolatileTexel = 11, VolatileTexelKHR = 11, SignExtend = 12, ZeroExtend = 13, Nontemporal = 14, Offsets = 16, Max = 0x7fffffff, }; enum class ImageOperandsMask : unsigned { MaskNone = 0, Bias = 0x00000001, Lod = 0x00000002, Grad = 0x00000004, ConstOffset = 0x00000008, Offset = 0x00000010, ConstOffsets = 0x00000020, Sample = 0x00000040, MinLod = 0x00000080, MakeTexelAvailable = 0x00000100, MakeTexelAvailableKHR = 0x00000100, MakeTexelVisible = 0x00000200, MakeTexelVisibleKHR = 0x00000200, NonPrivateTexel = 0x00000400, NonPrivateTexelKHR = 0x00000400, VolatileTexel = 0x00000800, VolatileTexelKHR = 0x00000800, SignExtend = 0x00001000, ZeroExtend = 0x00002000, Nontemporal = 0x00004000, Offsets = 0x00010000, }; enum class FPFastMathModeShift : unsigned { NotNaN = 0, NotInf = 1, NSZ = 2, AllowRecip = 3, Fast = 4, AllowContract = 16, AllowContractFastINTEL = 16, AllowReassoc = 17, AllowReassocINTEL = 17, AllowTransform = 18, Max = 0x7fffffff, }; enum class FPFastMathModeMask : unsigned { MaskNone = 0, NotNaN = 0x00000001, NotInf = 0x00000002, NSZ = 0x00000004, AllowRecip = 0x00000008, Fast = 0x00000010, AllowContract = 0x00010000, AllowContractFastINTEL = 0x00010000, AllowReassoc = 0x00020000, AllowReassocINTEL = 0x00020000, AllowTransform = 0x00040000, }; enum class FPRoundingMode : unsigned { RTE = 0, RTZ = 1, RTP = 2, RTN = 3, Max = 0x7fffffff, }; enum class LinkageType : unsigned { Export = 0, Import = 1, LinkOnceODR = 2, Max = 0x7fffffff, }; enum class AccessQualifier : unsigned { ReadOnly = 0, WriteOnly = 1, ReadWrite = 2, Max = 0x7fffffff, }; enum class FunctionParameterAttribute : unsigned { Zext = 0, Sext = 1, ByVal = 2, Sret = 3, NoAlias = 4, NoCapture = 5, NoWrite = 6, NoReadWrite = 7, RuntimeAlignedINTEL = 5940, Max = 0x7fffffff, }; enum class Decoration : unsigned { RelaxedPrecision = 0, SpecId = 1, Block = 2, BufferBlock = 3, RowMajor = 4, ColMajor = 5, ArrayStride = 6, MatrixStride = 7, GLSLShared = 8, GLSLPacked = 9, CPacked = 10, BuiltIn = 11, NoPerspective = 13, Flat = 14, Patch = 15, Centroid = 16, Sample = 17, Invariant = 18, Restrict = 19, Aliased = 20, Volatile = 21, Constant = 22, Coherent = 23, NonWritable = 24, NonReadable = 25, Uniform = 26, UniformId = 27, SaturatedConversion = 28, Stream = 29, Location = 30, Component = 31, Index = 32, Binding = 33, DescriptorSet = 34, Offset = 35, XfbBuffer = 36, XfbStride = 37, FuncParamAttr = 38, FPRoundingMode = 39, FPFastMathMode = 40, LinkageAttributes = 41, NoContraction = 42, InputAttachmentIndex = 43, Alignment = 44, MaxByteOffset = 45, AlignmentId = 46, MaxByteOffsetId = 47, SaturatedToLargestFloat8NormalConversionEXT = 4216, NoSignedWrap = 4469, NoUnsignedWrap = 4470, WeightTextureQCOM = 4487, BlockMatchTextureQCOM = 4488, BlockMatchSamplerQCOM = 4499, ExplicitInterpAMD = 4999, NodeSharesPayloadLimitsWithAMDX = 5019, NodeMaxPayloadsAMDX = 5020, TrackFinishWritingAMDX = 5078, PayloadNodeNameAMDX = 5091, PayloadNodeBaseIndexAMDX = 5098, PayloadNodeSparseArrayAMDX = 5099, PayloadNodeArraySizeAMDX = 5100, PayloadDispatchIndirectAMDX = 5105, OverrideCoverageNV = 5248, PassthroughNV = 5250, ViewportRelativeNV = 5252, SecondaryViewportRelativeNV = 5256, PerPrimitiveEXT = 5271, PerPrimitiveNV = 5271, PerViewNV = 5272, PerTaskNV = 5273, PerVertexKHR = 5285, PerVertexNV = 5285, NonUniform = 5300, NonUniformEXT = 5300, RestrictPointer = 5355, RestrictPointerEXT = 5355, AliasedPointer = 5356, AliasedPointerEXT = 5356, HitObjectShaderRecordBufferNV = 5386, BindlessSamplerNV = 5398, BindlessImageNV = 5399, BoundSamplerNV = 5400, BoundImageNV = 5401, SIMTCallINTEL = 5599, ReferencedIndirectlyINTEL = 5602, ClobberINTEL = 5607, SideEffectsINTEL = 5608, VectorComputeVariableINTEL = 5624, FuncParamIOKindINTEL = 5625, VectorComputeFunctionINTEL = 5626, StackCallINTEL = 5627, GlobalVariableOffsetINTEL = 5628, CounterBuffer = 5634, HlslCounterBufferGOOGLE = 5634, HlslSemanticGOOGLE = 5635, UserSemantic = 5635, UserTypeGOOGLE = 5636, FunctionRoundingModeINTEL = 5822, FunctionDenormModeINTEL = 5823, RegisterINTEL = 5825, MemoryINTEL = 5826, NumbanksINTEL = 5827, BankwidthINTEL = 5828, MaxPrivateCopiesINTEL = 5829, SinglepumpINTEL = 5830, DoublepumpINTEL = 5831, MaxReplicatesINTEL = 5832, SimpleDualPortINTEL = 5833, MergeINTEL = 5834, BankBitsINTEL = 5835, ForcePow2DepthINTEL = 5836, StridesizeINTEL = 5883, WordsizeINTEL = 5884, TrueDualPortINTEL = 5885, BurstCoalesceINTEL = 5899, CacheSizeINTEL = 5900, DontStaticallyCoalesceINTEL = 5901, PrefetchINTEL = 5902, StallEnableINTEL = 5905, FuseLoopsInFunctionINTEL = 5907, MathOpDSPModeINTEL = 5909, AliasScopeINTEL = 5914, NoAliasINTEL = 5915, InitiationIntervalINTEL = 5917, MaxConcurrencyINTEL = 5918, PipelineEnableINTEL = 5919, BufferLocationINTEL = 5921, IOPipeStorageINTEL = 5944, FunctionFloatingPointModeINTEL = 6080, SingleElementVectorINTEL = 6085, VectorComputeCallableFunctionINTEL = 6087, MediaBlockIOINTEL = 6140, StallFreeINTEL = 6151, FPMaxErrorDecorationINTEL = 6170, LatencyControlLabelINTEL = 6172, LatencyControlConstraintINTEL = 6173, ConduitKernelArgumentINTEL = 6175, RegisterMapKernelArgumentINTEL = 6176, MMHostInterfaceAddressWidthINTEL = 6177, MMHostInterfaceDataWidthINTEL = 6178, MMHostInterfaceLatencyINTEL = 6179, MMHostInterfaceReadWriteModeINTEL = 6180, MMHostInterfaceMaxBurstINTEL = 6181, MMHostInterfaceWaitRequestINTEL = 6182, StableKernelArgumentINTEL = 6183, HostAccessINTEL = 6188, InitModeINTEL = 6190, ImplementInRegisterMapINTEL = 6191, CacheControlLoadINTEL = 6442, CacheControlStoreINTEL = 6443, Max = 0x7fffffff, }; enum class BuiltIn : unsigned { Position = 0, PointSize = 1, ClipDistance = 3, CullDistance = 4, VertexId = 5, InstanceId = 6, PrimitiveId = 7, InvocationId = 8, Layer = 9, ViewportIndex = 10, TessLevelOuter = 11, TessLevelInner = 12, TessCoord = 13, PatchVertices = 14, FragCoord = 15, PointCoord = 16, FrontFacing = 17, SampleId = 18, SamplePosition = 19, SampleMask = 20, FragDepth = 22, HelperInvocation = 23, NumWorkgroups = 24, WorkgroupSize = 25, WorkgroupId = 26, LocalInvocationId = 27, GlobalInvocationId = 28, LocalInvocationIndex = 29, WorkDim = 30, GlobalSize = 31, EnqueuedWorkgroupSize = 32, GlobalOffset = 33, GlobalLinearId = 34, SubgroupSize = 36, SubgroupMaxSize = 37, NumSubgroups = 38, NumEnqueuedSubgroups = 39, SubgroupId = 40, SubgroupLocalInvocationId = 41, VertexIndex = 42, InstanceIndex = 43, CoreIDARM = 4160, CoreCountARM = 4161, CoreMaxIDARM = 4162, WarpIDARM = 4163, WarpMaxIDARM = 4164, SubgroupEqMask = 4416, SubgroupEqMaskKHR = 4416, SubgroupGeMask = 4417, SubgroupGeMaskKHR = 4417, SubgroupGtMask = 4418, SubgroupGtMaskKHR = 4418, SubgroupLeMask = 4419, SubgroupLeMaskKHR = 4419, SubgroupLtMask = 4420, SubgroupLtMaskKHR = 4420, BaseVertex = 4424, BaseInstance = 4425, DrawIndex = 4426, PrimitiveShadingRateKHR = 4432, DeviceIndex = 4438, ViewIndex = 4440, ShadingRateKHR = 4444, TileOffsetQCOM = 4492, TileDimensionQCOM = 4493, TileApronSizeQCOM = 4494, BaryCoordNoPerspAMD = 4992, BaryCoordNoPerspCentroidAMD = 4993, BaryCoordNoPerspSampleAMD = 4994, BaryCoordSmoothAMD = 4995, BaryCoordSmoothCentroidAMD = 4996, BaryCoordSmoothSampleAMD = 4997, BaryCoordPullModelAMD = 4998, FragStencilRefEXT = 5014, RemainingRecursionLevelsAMDX = 5021, ShaderIndexAMDX = 5073, ViewportMaskNV = 5253, SecondaryPositionNV = 5257, SecondaryViewportMaskNV = 5258, PositionPerViewNV = 5261, ViewportMaskPerViewNV = 5262, FullyCoveredEXT = 5264, TaskCountNV = 5274, PrimitiveCountNV = 5275, PrimitiveIndicesNV = 5276, ClipDistancePerViewNV = 5277, CullDistancePerViewNV = 5278, LayerPerViewNV = 5279, MeshViewCountNV = 5280, MeshViewIndicesNV = 5281, BaryCoordKHR = 5286, BaryCoordNV = 5286, BaryCoordNoPerspKHR = 5287, BaryCoordNoPerspNV = 5287, FragSizeEXT = 5292, FragmentSizeNV = 5292, FragInvocationCountEXT = 5293, InvocationsPerPixelNV = 5293, PrimitivePointIndicesEXT = 5294, PrimitiveLineIndicesEXT = 5295, PrimitiveTriangleIndicesEXT = 5296, CullPrimitiveEXT = 5299, LaunchIdKHR = 5319, LaunchIdNV = 5319, LaunchSizeKHR = 5320, LaunchSizeNV = 5320, WorldRayOriginKHR = 5321, WorldRayOriginNV = 5321, WorldRayDirectionKHR = 5322, WorldRayDirectionNV = 5322, ObjectRayOriginKHR = 5323, ObjectRayOriginNV = 5323, ObjectRayDirectionKHR = 5324, ObjectRayDirectionNV = 5324, RayTminKHR = 5325, RayTminNV = 5325, RayTmaxKHR = 5326, RayTmaxNV = 5326, InstanceCustomIndexKHR = 5327, InstanceCustomIndexNV = 5327, ObjectToWorldKHR = 5330, ObjectToWorldNV = 5330, WorldToObjectKHR = 5331, WorldToObjectNV = 5331, HitTNV = 5332, HitKindKHR = 5333, HitKindNV = 5333, CurrentRayTimeNV = 5334, HitTriangleVertexPositionsKHR = 5335, HitMicroTriangleVertexPositionsNV = 5337, HitMicroTriangleVertexBarycentricsNV = 5344, IncomingRayFlagsKHR = 5351, IncomingRayFlagsNV = 5351, RayGeometryIndexKHR = 5352, HitIsSphereNV = 5359, HitIsLSSNV = 5360, HitSpherePositionNV = 5361, WarpsPerSMNV = 5374, SMCountNV = 5375, WarpIDNV = 5376, SMIDNV = 5377, HitLSSPositionsNV = 5396, HitKindFrontFacingMicroTriangleNV = 5405, HitKindBackFacingMicroTriangleNV = 5406, HitSphereRadiusNV = 5420, HitLSSRadiiNV = 5421, ClusterIDNV = 5436, CullMaskKHR = 6021, Max = 0x7fffffff, }; enum class SelectionControlShift : unsigned { Flatten = 0, DontFlatten = 1, Max = 0x7fffffff, }; enum class SelectionControlMask : unsigned { MaskNone = 0, Flatten = 0x00000001, DontFlatten = 0x00000002, }; enum class LoopControlShift : unsigned { Unroll = 0, DontUnroll = 1, DependencyInfinite = 2, DependencyLength = 3, MinIterations = 4, MaxIterations = 5, IterationMultiple = 6, PeelCount = 7, PartialCount = 8, InitiationIntervalINTEL = 16, MaxConcurrencyINTEL = 17, DependencyArrayINTEL = 18, PipelineEnableINTEL = 19, LoopCoalesceINTEL = 20, MaxInterleavingINTEL = 21, SpeculatedIterationsINTEL = 22, NoFusionINTEL = 23, LoopCountINTEL = 24, MaxReinvocationDelayINTEL = 25, Max = 0x7fffffff, }; enum class LoopControlMask : unsigned { MaskNone = 0, Unroll = 0x00000001, DontUnroll = 0x00000002, DependencyInfinite = 0x00000004, DependencyLength = 0x00000008, MinIterations = 0x00000010, MaxIterations = 0x00000020, IterationMultiple = 0x00000040, PeelCount = 0x00000080, PartialCount = 0x00000100, InitiationIntervalINTEL = 0x00010000, MaxConcurrencyINTEL = 0x00020000, DependencyArrayINTEL = 0x00040000, PipelineEnableINTEL = 0x00080000, LoopCoalesceINTEL = 0x00100000, MaxInterleavingINTEL = 0x00200000, SpeculatedIterationsINTEL = 0x00400000, NoFusionINTEL = 0x00800000, LoopCountINTEL = 0x01000000, MaxReinvocationDelayINTEL = 0x02000000, }; enum class FunctionControlShift : unsigned { Inline = 0, DontInline = 1, Pure = 2, Const = 3, OptNoneEXT = 16, OptNoneINTEL = 16, Max = 0x7fffffff, }; enum class FunctionControlMask : unsigned { MaskNone = 0, Inline = 0x00000001, DontInline = 0x00000002, Pure = 0x00000004, Const = 0x00000008, OptNoneEXT = 0x00010000, OptNoneINTEL = 0x00010000, }; enum class MemorySemanticsShift : unsigned { Acquire = 1, Release = 2, AcquireRelease = 3, SequentiallyConsistent = 4, UniformMemory = 6, SubgroupMemory = 7, WorkgroupMemory = 8, CrossWorkgroupMemory = 9, AtomicCounterMemory = 10, ImageMemory = 11, OutputMemory = 12, OutputMemoryKHR = 12, MakeAvailable = 13, MakeAvailableKHR = 13, MakeVisible = 14, MakeVisibleKHR = 14, Volatile = 15, Max = 0x7fffffff, }; enum class MemorySemanticsMask : unsigned { MaskNone = 0, Acquire = 0x00000002, Release = 0x00000004, AcquireRelease = 0x00000008, SequentiallyConsistent = 0x00000010, UniformMemory = 0x00000040, SubgroupMemory = 0x00000080, WorkgroupMemory = 0x00000100, CrossWorkgroupMemory = 0x00000200, AtomicCounterMemory = 0x00000400, ImageMemory = 0x00000800, OutputMemory = 0x00001000, OutputMemoryKHR = 0x00001000, MakeAvailable = 0x00002000, MakeAvailableKHR = 0x00002000, MakeVisible = 0x00004000, MakeVisibleKHR = 0x00004000, Volatile = 0x00008000, }; enum class MemoryAccessShift : unsigned { Volatile = 0, Aligned = 1, Nontemporal = 2, MakePointerAvailable = 3, MakePointerAvailableKHR = 3, MakePointerVisible = 4, MakePointerVisibleKHR = 4, NonPrivatePointer = 5, NonPrivatePointerKHR = 5, AliasScopeINTELMask = 16, NoAliasINTELMask = 17, Max = 0x7fffffff, }; enum class MemoryAccessMask : unsigned { MaskNone = 0, Volatile = 0x00000001, Aligned = 0x00000002, Nontemporal = 0x00000004, MakePointerAvailable = 0x00000008, MakePointerAvailableKHR = 0x00000008, MakePointerVisible = 0x00000010, MakePointerVisibleKHR = 0x00000010, NonPrivatePointer = 0x00000020, NonPrivatePointerKHR = 0x00000020, AliasScopeINTELMask = 0x00010000, NoAliasINTELMask = 0x00020000, }; enum class Scope : unsigned { CrossDevice = 0, Device = 1, Workgroup = 2, Subgroup = 3, Invocation = 4, QueueFamily = 5, QueueFamilyKHR = 5, ShaderCallKHR = 6, Max = 0x7fffffff, }; enum class GroupOperation : unsigned { Reduce = 0, InclusiveScan = 1, ExclusiveScan = 2, ClusteredReduce = 3, PartitionedReduceNV = 6, PartitionedInclusiveScanNV = 7, PartitionedExclusiveScanNV = 8, Max = 0x7fffffff, }; enum class KernelEnqueueFlags : unsigned { NoWait = 0, WaitKernel = 1, WaitWorkGroup = 2, Max = 0x7fffffff, }; enum class KernelProfilingInfoShift : unsigned { CmdExecTime = 0, Max = 0x7fffffff, }; enum class KernelProfilingInfoMask : unsigned { MaskNone = 0, CmdExecTime = 0x00000001, }; enum class Capability : unsigned { Matrix = 0, Shader = 1, Geometry = 2, Tessellation = 3, Addresses = 4, Linkage = 5, Kernel = 6, Vector16 = 7, Float16Buffer = 8, Float16 = 9, Float64 = 10, Int64 = 11, Int64Atomics = 12, ImageBasic = 13, ImageReadWrite = 14, ImageMipmap = 15, Pipes = 17, Groups = 18, DeviceEnqueue = 19, LiteralSampler = 20, AtomicStorage = 21, Int16 = 22, TessellationPointSize = 23, GeometryPointSize = 24, ImageGatherExtended = 25, StorageImageMultisample = 27, UniformBufferArrayDynamicIndexing = 28, SampledImageArrayDynamicIndexing = 29, StorageBufferArrayDynamicIndexing = 30, StorageImageArrayDynamicIndexing = 31, ClipDistance = 32, CullDistance = 33, ImageCubeArray = 34, SampleRateShading = 35, ImageRect = 36, SampledRect = 37, GenericPointer = 38, Int8 = 39, InputAttachment = 40, SparseResidency = 41, MinLod = 42, Sampled1D = 43, Image1D = 44, SampledCubeArray = 45, SampledBuffer = 46, ImageBuffer = 47, ImageMSArray = 48, StorageImageExtendedFormats = 49, ImageQuery = 50, DerivativeControl = 51, InterpolationFunction = 52, TransformFeedback = 53, GeometryStreams = 54, StorageImageReadWithoutFormat = 55, StorageImageWriteWithoutFormat = 56, MultiViewport = 57, SubgroupDispatch = 58, NamedBarrier = 59, PipeStorage = 60, GroupNonUniform = 61, GroupNonUniformVote = 62, GroupNonUniformArithmetic = 63, GroupNonUniformBallot = 64, GroupNonUniformShuffle = 65, GroupNonUniformShuffleRelative = 66, GroupNonUniformClustered = 67, GroupNonUniformQuad = 68, ShaderLayer = 69, ShaderViewportIndex = 70, UniformDecoration = 71, CoreBuiltinsARM = 4165, TileImageColorReadAccessEXT = 4166, TileImageDepthReadAccessEXT = 4167, TileImageStencilReadAccessEXT = 4168, TensorsARM = 4174, CooperativeMatrixLayoutsARM = 4201, Float8EXT = 4212, Float8CooperativeMatrixEXT = 4213, FragmentShadingRateKHR = 4422, SubgroupBallotKHR = 4423, DrawParameters = 4427, WorkgroupMemoryExplicitLayoutKHR = 4428, WorkgroupMemoryExplicitLayout8BitAccessKHR = 4429, WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430, SubgroupVoteKHR = 4431, StorageBuffer16BitAccess = 4433, StorageUniformBufferBlock16 = 4433, StorageUniform16 = 4434, UniformAndStorageBuffer16BitAccess = 4434, StoragePushConstant16 = 4435, StorageInputOutput16 = 4436, DeviceGroup = 4437, MultiView = 4439, VariablePointersStorageBuffer = 4441, VariablePointers = 4442, AtomicStorageOps = 4445, SampleMaskPostDepthCoverage = 4447, StorageBuffer8BitAccess = 4448, UniformAndStorageBuffer8BitAccess = 4449, StoragePushConstant8 = 4450, DenormPreserve = 4464, DenormFlushToZero = 4465, SignedZeroInfNanPreserve = 4466, RoundingModeRTE = 4467, RoundingModeRTZ = 4468, RayQueryProvisionalKHR = 4471, RayQueryKHR = 4472, UntypedPointersKHR = 4473, RayTraversalPrimitiveCullingKHR = 4478, RayTracingKHR = 4479, TextureSampleWeightedQCOM = 4484, TextureBoxFilterQCOM = 4485, TextureBlockMatchQCOM = 4486, TileShadingQCOM = 4495, CooperativeMatrixConversionQCOM = 4496, TextureBlockMatch2QCOM = 4498, Float16ImageAMD = 5008, ImageGatherBiasLodAMD = 5009, FragmentMaskAMD = 5010, StencilExportEXT = 5013, ImageReadWriteLodAMD = 5015, Int64ImageEXT = 5016, ShaderClockKHR = 5055, ShaderEnqueueAMDX = 5067, QuadControlKHR = 5087, BFloat16TypeKHR = 5116, BFloat16DotProductKHR = 5117, BFloat16CooperativeMatrixKHR = 5118, SampleMaskOverrideCoverageNV = 5249, GeometryShaderPassthroughNV = 5251, ShaderViewportIndexLayerEXT = 5254, ShaderViewportIndexLayerNV = 5254, ShaderViewportMaskNV = 5255, ShaderStereoViewNV = 5259, PerViewAttributesNV = 5260, FragmentFullyCoveredEXT = 5265, MeshShadingNV = 5266, ImageFootprintNV = 5282, MeshShadingEXT = 5283, FragmentBarycentricKHR = 5284, FragmentBarycentricNV = 5284, ComputeDerivativeGroupQuadsKHR = 5288, ComputeDerivativeGroupQuadsNV = 5288, FragmentDensityEXT = 5291, ShadingRateNV = 5291, GroupNonUniformPartitionedNV = 5297, ShaderNonUniform = 5301, ShaderNonUniformEXT = 5301, RuntimeDescriptorArray = 5302, RuntimeDescriptorArrayEXT = 5302, InputAttachmentArrayDynamicIndexing = 5303, InputAttachmentArrayDynamicIndexingEXT = 5303, UniformTexelBufferArrayDynamicIndexing = 5304, UniformTexelBufferArrayDynamicIndexingEXT = 5304, StorageTexelBufferArrayDynamicIndexing = 5305, StorageTexelBufferArrayDynamicIndexingEXT = 5305, UniformBufferArrayNonUniformIndexing = 5306, UniformBufferArrayNonUniformIndexingEXT = 5306, SampledImageArrayNonUniformIndexing = 5307, SampledImageArrayNonUniformIndexingEXT = 5307, StorageBufferArrayNonUniformIndexing = 5308, StorageBufferArrayNonUniformIndexingEXT = 5308, StorageImageArrayNonUniformIndexing = 5309, StorageImageArrayNonUniformIndexingEXT = 5309, InputAttachmentArrayNonUniformIndexing = 5310, InputAttachmentArrayNonUniformIndexingEXT = 5310, UniformTexelBufferArrayNonUniformIndexing = 5311, UniformTexelBufferArrayNonUniformIndexingEXT = 5311, StorageTexelBufferArrayNonUniformIndexing = 5312, StorageTexelBufferArrayNonUniformIndexingEXT = 5312, RayTracingPositionFetchKHR = 5336, RayTracingNV = 5340, RayTracingMotionBlurNV = 5341, VulkanMemoryModel = 5345, VulkanMemoryModelKHR = 5345, VulkanMemoryModelDeviceScope = 5346, VulkanMemoryModelDeviceScopeKHR = 5346, PhysicalStorageBufferAddresses = 5347, PhysicalStorageBufferAddressesEXT = 5347, ComputeDerivativeGroupLinearKHR = 5350, ComputeDerivativeGroupLinearNV = 5350, RayTracingProvisionalKHR = 5353, CooperativeMatrixNV = 5357, FragmentShaderSampleInterlockEXT = 5363, FragmentShaderShadingRateInterlockEXT = 5372, ShaderSMBuiltinsNV = 5373, FragmentShaderPixelInterlockEXT = 5378, DemoteToHelperInvocation = 5379, DemoteToHelperInvocationEXT = 5379, DisplacementMicromapNV = 5380, RayTracingOpacityMicromapEXT = 5381, ShaderInvocationReorderNV = 5383, BindlessTextureNV = 5390, RayQueryPositionFetchKHR = 5391, CooperativeVectorNV = 5394, AtomicFloat16VectorNV = 5404, RayTracingDisplacementMicromapNV = 5409, RawAccessChainsNV = 5414, RayTracingSpheresGeometryNV = 5418, RayTracingLinearSweptSpheresGeometryNV = 5419, CooperativeMatrixReductionsNV = 5430, CooperativeMatrixConversionsNV = 5431, CooperativeMatrixPerElementOperationsNV = 5432, CooperativeMatrixTensorAddressingNV = 5433, CooperativeMatrixBlockLoadsNV = 5434, CooperativeVectorTrainingNV = 5435, RayTracingClusterAccelerationStructureNV = 5437, TensorAddressingNV = 5439, SubgroupShuffleINTEL = 5568, SubgroupBufferBlockIOINTEL = 5569, SubgroupImageBlockIOINTEL = 5570, SubgroupImageMediaBlockIOINTEL = 5579, RoundToInfinityINTEL = 5582, FloatingPointModeINTEL = 5583, IntegerFunctions2INTEL = 5584, FunctionPointersINTEL = 5603, IndirectReferencesINTEL = 5604, AsmINTEL = 5606, AtomicFloat32MinMaxEXT = 5612, AtomicFloat64MinMaxEXT = 5613, AtomicFloat16MinMaxEXT = 5616, VectorComputeINTEL = 5617, VectorAnyINTEL = 5619, ExpectAssumeKHR = 5629, SubgroupAvcMotionEstimationINTEL = 5696, SubgroupAvcMotionEstimationIntraINTEL = 5697, SubgroupAvcMotionEstimationChromaINTEL = 5698, VariableLengthArrayINTEL = 5817, FunctionFloatControlINTEL = 5821, FPGAMemoryAttributesINTEL = 5824, FPFastMathModeINTEL = 5837, ArbitraryPrecisionIntegersINTEL = 5844, ArbitraryPrecisionFloatingPointINTEL = 5845, UnstructuredLoopControlsINTEL = 5886, FPGALoopControlsINTEL = 5888, KernelAttributesINTEL = 5892, FPGAKernelAttributesINTEL = 5897, FPGAMemoryAccessesINTEL = 5898, FPGAClusterAttributesINTEL = 5904, LoopFuseINTEL = 5906, FPGADSPControlINTEL = 5908, MemoryAccessAliasingINTEL = 5910, FPGAInvocationPipeliningAttributesINTEL = 5916, FPGABufferLocationINTEL = 5920, ArbitraryPrecisionFixedPointINTEL = 5922, USMStorageClassesINTEL = 5935, RuntimeAlignedAttributeINTEL = 5939, IOPipesINTEL = 5943, BlockingPipesINTEL = 5945, FPGARegINTEL = 5948, DotProductInputAll = 6016, DotProductInputAllKHR = 6016, DotProductInput4x8Bit = 6017, DotProductInput4x8BitKHR = 6017, DotProductInput4x8BitPacked = 6018, DotProductInput4x8BitPackedKHR = 6018, DotProduct = 6019, DotProductKHR = 6019, RayCullMaskKHR = 6020, CooperativeMatrixKHR = 6022, ReplicatedCompositesEXT = 6024, BitInstructions = 6025, GroupNonUniformRotateKHR = 6026, FloatControls2 = 6029, AtomicFloat32AddEXT = 6033, AtomicFloat64AddEXT = 6034, LongCompositesINTEL = 6089, OptNoneEXT = 6094, OptNoneINTEL = 6094, AtomicFloat16AddEXT = 6095, DebugInfoModuleINTEL = 6114, BFloat16ConversionINTEL = 6115, SplitBarrierINTEL = 6141, ArithmeticFenceEXT = 6144, FPGAClusterAttributesV2INTEL = 6150, FPGAKernelAttributesv2INTEL = 6161, FPMaxErrorINTEL = 6169, FPGALatencyControlINTEL = 6171, FPGAArgumentInterfacesINTEL = 6174, GlobalVariableHostAccessINTEL = 6187, GlobalVariableFPGADecorationsINTEL = 6189, SubgroupBufferPrefetchINTEL = 6220, Subgroup2DBlockIOINTEL = 6228, Subgroup2DBlockTransformINTEL = 6229, Subgroup2DBlockTransposeINTEL = 6230, SubgroupMatrixMultiplyAccumulateINTEL = 6236, GroupUniformArithmeticKHR = 6400, MaskedGatherScatterINTEL = 6427, CacheControlsINTEL = 6441, RegisterLimitsINTEL = 6460, Max = 0x7fffffff, }; enum class RayFlagsShift : unsigned { OpaqueKHR = 0, NoOpaqueKHR = 1, TerminateOnFirstHitKHR = 2, SkipClosestHitShaderKHR = 3, CullBackFacingTrianglesKHR = 4, CullFrontFacingTrianglesKHR = 5, CullOpaqueKHR = 6, CullNoOpaqueKHR = 7, SkipBuiltinPrimitivesNV = 8, SkipTrianglesKHR = 8, SkipAABBsKHR = 9, ForceOpacityMicromap2StateEXT = 10, Max = 0x7fffffff, }; enum class RayFlagsMask : unsigned { MaskNone = 0, OpaqueKHR = 0x00000001, NoOpaqueKHR = 0x00000002, TerminateOnFirstHitKHR = 0x00000004, SkipClosestHitShaderKHR = 0x00000008, CullBackFacingTrianglesKHR = 0x00000010, CullFrontFacingTrianglesKHR = 0x00000020, CullOpaqueKHR = 0x00000040, CullNoOpaqueKHR = 0x00000080, SkipBuiltinPrimitivesNV = 0x00000100, SkipTrianglesKHR = 0x00000100, SkipAABBsKHR = 0x00000200, ForceOpacityMicromap2StateEXT = 0x00000400, }; enum class RayQueryIntersection : unsigned { RayQueryCandidateIntersectionKHR = 0, RayQueryCommittedIntersectionKHR = 1, Max = 0x7fffffff, }; enum class RayQueryCommittedIntersectionType : unsigned { RayQueryCommittedIntersectionNoneKHR = 0, RayQueryCommittedIntersectionTriangleKHR = 1, RayQueryCommittedIntersectionGeneratedKHR = 2, Max = 0x7fffffff, }; enum class RayQueryCandidateIntersectionType : unsigned { RayQueryCandidateIntersectionTriangleKHR = 0, RayQueryCandidateIntersectionAABBKHR = 1, Max = 0x7fffffff, }; enum class FragmentShadingRateShift : unsigned { Vertical2Pixels = 0, Vertical4Pixels = 1, Horizontal2Pixels = 2, Horizontal4Pixels = 3, Max = 0x7fffffff, }; enum class FragmentShadingRateMask : unsigned { MaskNone = 0, Vertical2Pixels = 0x00000001, Vertical4Pixels = 0x00000002, Horizontal2Pixels = 0x00000004, Horizontal4Pixels = 0x00000008, }; enum class FPDenormMode : unsigned { Preserve = 0, FlushToZero = 1, Max = 0x7fffffff, }; enum class FPOperationMode : unsigned { IEEE = 0, ALT = 1, Max = 0x7fffffff, }; enum class QuantizationModes : unsigned { TRN = 0, TRN_ZERO = 1, RND = 2, RND_ZERO = 3, RND_INF = 4, RND_MIN_INF = 5, RND_CONV = 6, RND_CONV_ODD = 7, Max = 0x7fffffff, }; enum class OverflowModes : unsigned { WRAP = 0, SAT = 1, SAT_ZERO = 2, SAT_SYM = 3, Max = 0x7fffffff, }; enum class PackedVectorFormat : unsigned { PackedVectorFormat4x8Bit = 0, PackedVectorFormat4x8BitKHR = 0, Max = 0x7fffffff, }; enum class CooperativeMatrixOperandsShift : unsigned { MatrixASignedComponentsKHR = 0, MatrixBSignedComponentsKHR = 1, MatrixCSignedComponentsKHR = 2, MatrixResultSignedComponentsKHR = 3, SaturatingAccumulationKHR = 4, Max = 0x7fffffff, }; enum class CooperativeMatrixOperandsMask : unsigned { MaskNone = 0, MatrixASignedComponentsKHR = 0x00000001, MatrixBSignedComponentsKHR = 0x00000002, MatrixCSignedComponentsKHR = 0x00000004, MatrixResultSignedComponentsKHR = 0x00000008, SaturatingAccumulationKHR = 0x00000010, }; enum class CooperativeMatrixLayout : unsigned { RowMajorKHR = 0, ColumnMajorKHR = 1, RowBlockedInterleavedARM = 4202, ColumnBlockedInterleavedARM = 4203, Max = 0x7fffffff, }; enum class CooperativeMatrixUse : unsigned { MatrixAKHR = 0, MatrixBKHR = 1, MatrixAccumulatorKHR = 2, Max = 0x7fffffff, }; enum class CooperativeMatrixReduceShift : unsigned { Row = 0, Column = 1, CooperativeMatrixReduce2x2 = 2, Max = 0x7fffffff, }; enum class CooperativeMatrixReduceMask : unsigned { MaskNone = 0, Row = 0x00000001, Column = 0x00000002, CooperativeMatrixReduce2x2 = 0x00000004, }; enum class TensorClampMode : unsigned { Undefined = 0, Constant = 1, ClampToEdge = 2, Repeat = 3, RepeatMirrored = 4, Max = 0x7fffffff, }; enum class TensorAddressingOperandsShift : unsigned { TensorView = 0, DecodeFunc = 1, Max = 0x7fffffff, }; enum class TensorAddressingOperandsMask : unsigned { MaskNone = 0, TensorView = 0x00000001, DecodeFunc = 0x00000002, }; enum class TensorOperandsShift : unsigned { NontemporalARM = 0, OutOfBoundsValueARM = 1, Max = 0x7fffffff, }; enum class TensorOperandsMask : unsigned { MaskNone = 0, NontemporalARM = 0x00000001, OutOfBoundsValueARM = 0x00000002, }; enum class InitializationModeQualifier : unsigned { InitOnDeviceReprogramINTEL = 0, InitOnDeviceResetINTEL = 1, Max = 0x7fffffff, }; enum class HostAccessQualifier : unsigned { NoneINTEL = 0, ReadINTEL = 1, WriteINTEL = 2, ReadWriteINTEL = 3, Max = 0x7fffffff, }; enum class LoadCacheControl : unsigned { UncachedINTEL = 0, CachedINTEL = 1, StreamingINTEL = 2, InvalidateAfterReadINTEL = 3, ConstCachedINTEL = 4, Max = 0x7fffffff, }; enum class StoreCacheControl : unsigned { UncachedINTEL = 0, WriteThroughINTEL = 1, WriteBackINTEL = 2, StreamingINTEL = 3, Max = 0x7fffffff, }; enum class NamedMaximumNumberOfRegisters : unsigned { AutoINTEL = 0, Max = 0x7fffffff, }; enum class MatrixMultiplyAccumulateOperandsShift : unsigned { MatrixASignedComponentsINTEL = 0, MatrixBSignedComponentsINTEL = 1, MatrixCBFloat16INTEL = 2, MatrixResultBFloat16INTEL = 3, MatrixAPackedInt8INTEL = 4, MatrixBPackedInt8INTEL = 5, MatrixAPackedInt4INTEL = 6, MatrixBPackedInt4INTEL = 7, MatrixATF32INTEL = 8, MatrixBTF32INTEL = 9, MatrixAPackedFloat16INTEL = 10, MatrixBPackedFloat16INTEL = 11, MatrixAPackedBFloat16INTEL = 12, MatrixBPackedBFloat16INTEL = 13, Max = 0x7fffffff, }; enum class MatrixMultiplyAccumulateOperandsMask : unsigned { MaskNone = 0, MatrixASignedComponentsINTEL = 0x00000001, MatrixBSignedComponentsINTEL = 0x00000002, MatrixCBFloat16INTEL = 0x00000004, MatrixResultBFloat16INTEL = 0x00000008, MatrixAPackedInt8INTEL = 0x00000010, MatrixBPackedInt8INTEL = 0x00000020, MatrixAPackedInt4INTEL = 0x00000040, MatrixBPackedInt4INTEL = 0x00000080, MatrixATF32INTEL = 0x00000100, MatrixBTF32INTEL = 0x00000200, MatrixAPackedFloat16INTEL = 0x00000400, MatrixBPackedFloat16INTEL = 0x00000800, MatrixAPackedBFloat16INTEL = 0x00001000, MatrixBPackedBFloat16INTEL = 0x00002000, }; enum class RawAccessChainOperandsShift : unsigned { RobustnessPerComponentNV = 0, RobustnessPerElementNV = 1, Max = 0x7fffffff, }; enum class RawAccessChainOperandsMask : unsigned { MaskNone = 0, RobustnessPerComponentNV = 0x00000001, RobustnessPerElementNV = 0x00000002, }; enum class FPEncoding : unsigned { BFloat16KHR = 0, Float8E4M3EXT = 4214, Float8E5M2EXT = 4215, Max = 0x7fffffff, }; enum class CooperativeVectorMatrixLayout : unsigned { RowMajorNV = 0, ColumnMajorNV = 1, InferencingOptimalNV = 2, TrainingOptimalNV = 3, Max = 0x7fffffff, }; enum class ComponentType : unsigned { Float16NV = 0, Float32NV = 1, Float64NV = 2, SignedInt8NV = 3, SignedInt16NV = 4, SignedInt32NV = 5, SignedInt64NV = 6, UnsignedInt8NV = 7, UnsignedInt16NV = 8, UnsignedInt32NV = 9, UnsignedInt64NV = 10, SignedInt8PackedNV = 1000491000, UnsignedInt8PackedNV = 1000491001, FloatE4M3NV = 1000491002, FloatE5M2NV = 1000491003, Max = 0x7fffffff, }; enum class Op : unsigned { 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, OpColorAttachmentReadEXT = 4160, OpDepthAttachmentReadEXT = 4161, OpStencilAttachmentReadEXT = 4162, OpTypeTensorARM = 4163, OpTensorReadARM = 4164, OpTensorWriteARM = 4165, OpTensorQuerySizeARM = 4166, OpTerminateInvocation = 4416, OpTypeUntypedPointerKHR = 4417, OpUntypedVariableKHR = 4418, OpUntypedAccessChainKHR = 4419, OpUntypedInBoundsAccessChainKHR = 4420, OpSubgroupBallotKHR = 4421, OpSubgroupFirstInvocationKHR = 4422, OpUntypedPtrAccessChainKHR = 4423, OpUntypedInBoundsPtrAccessChainKHR = 4424, OpUntypedArrayLengthKHR = 4425, OpUntypedPrefetchKHR = 4426, OpSubgroupAllKHR = 4428, OpSubgroupAnyKHR = 4429, OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, OpExtInstWithForwardRefsKHR = 4433, 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, OpTypeCooperativeMatrixKHR = 4456, OpCooperativeMatrixLoadKHR = 4457, OpCooperativeMatrixStoreKHR = 4458, OpCooperativeMatrixMulAddKHR = 4459, OpCooperativeMatrixLengthKHR = 4460, OpConstantCompositeReplicateEXT = 4461, OpSpecConstantCompositeReplicateEXT = 4462, OpCompositeConstructReplicateEXT = 4463, OpTypeRayQueryKHR = 4472, OpRayQueryInitializeKHR = 4473, OpRayQueryTerminateKHR = 4474, OpRayQueryGenerateIntersectionKHR = 4475, OpRayQueryConfirmIntersectionKHR = 4476, OpRayQueryProceedKHR = 4477, OpRayQueryGetIntersectionTypeKHR = 4479, OpImageSampleWeightedQCOM = 4480, OpImageBoxFilterQCOM = 4481, OpImageBlockMatchSSDQCOM = 4482, OpImageBlockMatchSADQCOM = 4483, OpBitCastArrayQCOM = 4497, OpImageBlockMatchWindowSSDQCOM = 4500, OpImageBlockMatchWindowSADQCOM = 4501, OpImageBlockMatchGatherSSDQCOM = 4502, OpImageBlockMatchGatherSADQCOM = 4503, OpCompositeConstructCoopMatQCOM = 4540, OpCompositeExtractCoopMatQCOM = 4541, OpExtractSubArrayQCOM = 4542, OpGroupIAddNonUniformAMD = 5000, OpGroupFAddNonUniformAMD = 5001, OpGroupFMinNonUniformAMD = 5002, OpGroupUMinNonUniformAMD = 5003, OpGroupSMinNonUniformAMD = 5004, OpGroupFMaxNonUniformAMD = 5005, OpGroupUMaxNonUniformAMD = 5006, OpGroupSMaxNonUniformAMD = 5007, OpFragmentMaskFetchAMD = 5011, OpFragmentFetchAMD = 5012, OpReadClockKHR = 5056, OpAllocateNodePayloadsAMDX = 5074, OpEnqueueNodePayloadsAMDX = 5075, OpTypeNodePayloadArrayAMDX = 5076, OpFinishWritingNodePayloadAMDX = 5078, OpNodePayloadArrayLengthAMDX = 5090, OpIsNodePayloadValidAMDX = 5101, OpConstantStringAMDX = 5103, OpSpecConstantStringAMDX = 5104, OpGroupNonUniformQuadAllKHR = 5110, OpGroupNonUniformQuadAnyKHR = 5111, OpHitObjectRecordHitMotionNV = 5249, OpHitObjectRecordHitWithIndexMotionNV = 5250, OpHitObjectRecordMissMotionNV = 5251, OpHitObjectGetWorldToObjectNV = 5252, OpHitObjectGetObjectToWorldNV = 5253, OpHitObjectGetObjectRayDirectionNV = 5254, OpHitObjectGetObjectRayOriginNV = 5255, OpHitObjectTraceRayMotionNV = 5256, OpHitObjectGetShaderRecordBufferHandleNV = 5257, OpHitObjectGetShaderBindingTableRecordIndexNV = 5258, OpHitObjectRecordEmptyNV = 5259, OpHitObjectTraceRayNV = 5260, OpHitObjectRecordHitNV = 5261, OpHitObjectRecordHitWithIndexNV = 5262, OpHitObjectRecordMissNV = 5263, OpHitObjectExecuteShaderNV = 5264, OpHitObjectGetCurrentTimeNV = 5265, OpHitObjectGetAttributesNV = 5266, OpHitObjectGetHitKindNV = 5267, OpHitObjectGetPrimitiveIndexNV = 5268, OpHitObjectGetGeometryIndexNV = 5269, OpHitObjectGetInstanceIdNV = 5270, OpHitObjectGetInstanceCustomIndexNV = 5271, OpHitObjectGetWorldRayDirectionNV = 5272, OpHitObjectGetWorldRayOriginNV = 5273, OpHitObjectGetRayTMaxNV = 5274, OpHitObjectGetRayTMinNV = 5275, OpHitObjectIsEmptyNV = 5276, OpHitObjectIsHitNV = 5277, OpHitObjectIsMissNV = 5278, OpReorderThreadWithHitObjectNV = 5279, OpReorderThreadWithHintNV = 5280, OpTypeHitObjectNV = 5281, OpImageSampleFootprintNV = 5283, OpTypeCooperativeVectorNV = 5288, OpCooperativeVectorMatrixMulNV = 5289, OpCooperativeVectorOuterProductAccumulateNV = 5290, OpCooperativeVectorReduceSumAccumulateNV = 5291, OpCooperativeVectorMatrixMulAddNV = 5292, OpCooperativeMatrixConvertNV = 5293, OpEmitMeshTasksEXT = 5294, OpSetMeshOutputsEXT = 5295, OpGroupNonUniformPartitionNV = 5296, OpWritePackedPrimitiveIndices4x8NV = 5299, OpFetchMicroTriangleVertexPositionNV = 5300, OpFetchMicroTriangleVertexBarycentricNV = 5301, OpCooperativeVectorLoadNV = 5302, OpCooperativeVectorStoreNV = 5303, OpReportIntersectionKHR = 5334, OpReportIntersectionNV = 5334, OpIgnoreIntersectionNV = 5335, OpTerminateRayNV = 5336, OpTraceNV = 5337, OpTraceMotionNV = 5338, OpTraceRayMotionNV = 5339, OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340, OpTypeAccelerationStructureKHR = 5341, OpTypeAccelerationStructureNV = 5341, OpExecuteCallableNV = 5344, OpRayQueryGetClusterIdNV = 5345, OpHitObjectGetClusterIdNV = 5346, OpTypeCooperativeMatrixNV = 5358, OpCooperativeMatrixLoadNV = 5359, OpCooperativeMatrixStoreNV = 5360, OpCooperativeMatrixMulAddNV = 5361, OpCooperativeMatrixLengthNV = 5362, OpBeginInvocationInterlockEXT = 5364, OpEndInvocationInterlockEXT = 5365, OpCooperativeMatrixReduceNV = 5366, OpCooperativeMatrixLoadTensorNV = 5367, OpCooperativeMatrixStoreTensorNV = 5368, OpCooperativeMatrixPerElementOpNV = 5369, OpTypeTensorLayoutNV = 5370, OpTypeTensorViewNV = 5371, OpCreateTensorLayoutNV = 5372, OpTensorLayoutSetDimensionNV = 5373, OpTensorLayoutSetStrideNV = 5374, OpTensorLayoutSliceNV = 5375, OpTensorLayoutSetClampValueNV = 5376, OpCreateTensorViewNV = 5377, OpTensorViewSetDimensionNV = 5378, OpTensorViewSetStrideNV = 5379, OpDemoteToHelperInvocation = 5380, OpDemoteToHelperInvocationEXT = 5380, OpIsHelperInvocationEXT = 5381, OpTensorViewSetClipNV = 5382, OpTensorLayoutSetBlockSizeNV = 5384, OpCooperativeMatrixTransposeNV = 5390, OpConvertUToImageNV = 5391, OpConvertUToSamplerNV = 5392, OpConvertImageToUNV = 5393, OpConvertSamplerToUNV = 5394, OpConvertUToSampledImageNV = 5395, OpConvertSampledImageToUNV = 5396, OpSamplerImageAddressingModeNV = 5397, OpRawAccessChainNV = 5398, OpRayQueryGetIntersectionSpherePositionNV = 5427, OpRayQueryGetIntersectionSphereRadiusNV = 5428, OpRayQueryGetIntersectionLSSPositionsNV = 5429, OpRayQueryGetIntersectionLSSRadiiNV = 5430, OpRayQueryGetIntersectionLSSHitValueNV = 5431, OpHitObjectGetSpherePositionNV = 5432, OpHitObjectGetSphereRadiusNV = 5433, OpHitObjectGetLSSPositionsNV = 5434, OpHitObjectGetLSSRadiiNV = 5435, OpHitObjectIsSphereHitNV = 5436, OpHitObjectIsLSSHitNV = 5437, OpRayQueryIsSphereHitNV = 5438, OpRayQueryIsLSSHitNV = 5439, 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, OpAliasDomainDeclINTEL = 5911, OpAliasScopeDeclINTEL = 5912, OpAliasScopeListDeclINTEL = 5913, 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, OpCompositeConstructContinuedINTEL = 6096, OpConvertFToBF16INTEL = 6116, OpConvertBF16ToFINTEL = 6117, OpControlBarrierArriveINTEL = 6142, OpControlBarrierWaitINTEL = 6143, OpArithmeticFenceEXT = 6145, OpSubgroupBlockPrefetchINTEL = 6221, OpSubgroup2DBlockLoadINTEL = 6231, OpSubgroup2DBlockLoadTransformINTEL = 6232, OpSubgroup2DBlockLoadTransposeINTEL = 6233, OpSubgroup2DBlockPrefetchINTEL = 6234, OpSubgroup2DBlockStoreINTEL = 6235, OpSubgroupMatrixMultiplyAccumulateINTEL = 6237, OpGroupIMulKHR = 6401, OpGroupFMulKHR = 6402, OpGroupBitwiseAndKHR = 6403, OpGroupBitwiseOrKHR = 6404, OpGroupBitwiseXorKHR = 6405, OpGroupLogicalAndKHR = 6406, OpGroupLogicalOrKHR = 6407, OpGroupLogicalXorKHR = 6408, OpMaskedGatherINTEL = 6428, OpMaskedScatterINTEL = 6429, Max = 0x7fffffff, }; #ifdef SPV_ENABLE_UTILITY_CODE #ifndef __cplusplus #include #endif inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { *hasResult = *hasResultType = false; switch (opcode) { default: /* unknown opcode */ break; case Op::OpNop: *hasResult = false; *hasResultType = false; break; case Op::OpUndef: *hasResult = true; *hasResultType = true; break; case Op::OpSourceContinued: *hasResult = false; *hasResultType = false; break; case Op::OpSource: *hasResult = false; *hasResultType = false; break; case Op::OpSourceExtension: *hasResult = false; *hasResultType = false; break; case Op::OpName: *hasResult = false; *hasResultType = false; break; case Op::OpMemberName: *hasResult = false; *hasResultType = false; break; case Op::OpString: *hasResult = true; *hasResultType = false; break; case Op::OpLine: *hasResult = false; *hasResultType = false; break; case Op::OpExtension: *hasResult = false; *hasResultType = false; break; case Op::OpExtInstImport: *hasResult = true; *hasResultType = false; break; case Op::OpExtInst: *hasResult = true; *hasResultType = true; break; case Op::OpMemoryModel: *hasResult = false; *hasResultType = false; break; case Op::OpEntryPoint: *hasResult = false; *hasResultType = false; break; case Op::OpExecutionMode: *hasResult = false; *hasResultType = false; break; case Op::OpCapability: *hasResult = false; *hasResultType = false; break; case Op::OpTypeVoid: *hasResult = true; *hasResultType = false; break; case Op::OpTypeBool: *hasResult = true; *hasResultType = false; break; case Op::OpTypeInt: *hasResult = true; *hasResultType = false; break; case Op::OpTypeFloat: *hasResult = true; *hasResultType = false; break; case Op::OpTypeVector: *hasResult = true; *hasResultType = false; break; case Op::OpTypeMatrix: *hasResult = true; *hasResultType = false; break; case Op::OpTypeImage: *hasResult = true; *hasResultType = false; break; case Op::OpTypeSampler: *hasResult = true; *hasResultType = false; break; case Op::OpTypeSampledImage: *hasResult = true; *hasResultType = false; break; case Op::OpTypeArray: *hasResult = true; *hasResultType = false; break; case Op::OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break; case Op::OpTypeStruct: *hasResult = true; *hasResultType = false; break; case Op::OpTypeOpaque: *hasResult = true; *hasResultType = false; break; case Op::OpTypePointer: *hasResult = true; *hasResultType = false; break; case Op::OpTypeFunction: *hasResult = true; *hasResultType = false; break; case Op::OpTypeEvent: *hasResult = true; *hasResultType = false; break; case Op::OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break; case Op::OpTypeReserveId: *hasResult = true; *hasResultType = false; break; case Op::OpTypeQueue: *hasResult = true; *hasResultType = false; break; case Op::OpTypePipe: *hasResult = true; *hasResultType = false; break; case Op::OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break; case Op::OpConstantTrue: *hasResult = true; *hasResultType = true; break; case Op::OpConstantFalse: *hasResult = true; *hasResultType = true; break; case Op::OpConstant: *hasResult = true; *hasResultType = true; break; case Op::OpConstantComposite: *hasResult = true; *hasResultType = true; break; case Op::OpConstantSampler: *hasResult = true; *hasResultType = true; break; case Op::OpConstantNull: *hasResult = true; *hasResultType = true; break; case Op::OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break; case Op::OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break; case Op::OpSpecConstant: *hasResult = true; *hasResultType = true; break; case Op::OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break; case Op::OpSpecConstantOp: *hasResult = true; *hasResultType = true; break; case Op::OpFunction: *hasResult = true; *hasResultType = true; break; case Op::OpFunctionParameter: *hasResult = true; *hasResultType = true; break; case Op::OpFunctionEnd: *hasResult = false; *hasResultType = false; break; case Op::OpFunctionCall: *hasResult = true; *hasResultType = true; break; case Op::OpVariable: *hasResult = true; *hasResultType = true; break; case Op::OpImageTexelPointer: *hasResult = true; *hasResultType = true; break; case Op::OpLoad: *hasResult = true; *hasResultType = true; break; case Op::OpStore: *hasResult = false; *hasResultType = false; break; case Op::OpCopyMemory: *hasResult = false; *hasResultType = false; break; case Op::OpCopyMemorySized: *hasResult = false; *hasResultType = false; break; case Op::OpAccessChain: *hasResult = true; *hasResultType = true; break; case Op::OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break; case Op::OpPtrAccessChain: *hasResult = true; *hasResultType = true; break; case Op::OpArrayLength: *hasResult = true; *hasResultType = true; break; case Op::OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break; case Op::OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break; case Op::OpDecorate: *hasResult = false; *hasResultType = false; break; case Op::OpMemberDecorate: *hasResult = false; *hasResultType = false; break; case Op::OpDecorationGroup: *hasResult = true; *hasResultType = false; break; case Op::OpGroupDecorate: *hasResult = false; *hasResultType = false; break; case Op::OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break; case Op::OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break; case Op::OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break; case Op::OpVectorShuffle: *hasResult = true; *hasResultType = true; break; case Op::OpCompositeConstruct: *hasResult = true; *hasResultType = true; break; case Op::OpCompositeExtract: *hasResult = true; *hasResultType = true; break; case Op::OpCompositeInsert: *hasResult = true; *hasResultType = true; break; case Op::OpCopyObject: *hasResult = true; *hasResultType = true; break; case Op::OpTranspose: *hasResult = true; *hasResultType = true; break; case Op::OpSampledImage: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageFetch: *hasResult = true; *hasResultType = true; break; case Op::OpImageGather: *hasResult = true; *hasResultType = true; break; case Op::OpImageDrefGather: *hasResult = true; *hasResultType = true; break; case Op::OpImageRead: *hasResult = true; *hasResultType = true; break; case Op::OpImageWrite: *hasResult = false; *hasResultType = false; break; case Op::OpImage: *hasResult = true; *hasResultType = true; break; case Op::OpImageQueryFormat: *hasResult = true; *hasResultType = true; break; case Op::OpImageQueryOrder: *hasResult = true; *hasResultType = true; break; case Op::OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageQuerySize: *hasResult = true; *hasResultType = true; break; case Op::OpImageQueryLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageQueryLevels: *hasResult = true; *hasResultType = true; break; case Op::OpImageQuerySamples: *hasResult = true; *hasResultType = true; break; case Op::OpConvertFToU: *hasResult = true; *hasResultType = true; break; case Op::OpConvertFToS: *hasResult = true; *hasResultType = true; break; case Op::OpConvertSToF: *hasResult = true; *hasResultType = true; break; case Op::OpConvertUToF: *hasResult = true; *hasResultType = true; break; case Op::OpUConvert: *hasResult = true; *hasResultType = true; break; case Op::OpSConvert: *hasResult = true; *hasResultType = true; break; case Op::OpFConvert: *hasResult = true; *hasResultType = true; break; case Op::OpQuantizeToF16: *hasResult = true; *hasResultType = true; break; case Op::OpConvertPtrToU: *hasResult = true; *hasResultType = true; break; case Op::OpSatConvertSToU: *hasResult = true; *hasResultType = true; break; case Op::OpSatConvertUToS: *hasResult = true; *hasResultType = true; break; case Op::OpConvertUToPtr: *hasResult = true; *hasResultType = true; break; case Op::OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break; case Op::OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break; case Op::OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break; case Op::OpBitcast: *hasResult = true; *hasResultType = true; break; case Op::OpSNegate: *hasResult = true; *hasResultType = true; break; case Op::OpFNegate: *hasResult = true; *hasResultType = true; break; case Op::OpIAdd: *hasResult = true; *hasResultType = true; break; case Op::OpFAdd: *hasResult = true; *hasResultType = true; break; case Op::OpISub: *hasResult = true; *hasResultType = true; break; case Op::OpFSub: *hasResult = true; *hasResultType = true; break; case Op::OpIMul: *hasResult = true; *hasResultType = true; break; case Op::OpFMul: *hasResult = true; *hasResultType = true; break; case Op::OpUDiv: *hasResult = true; *hasResultType = true; break; case Op::OpSDiv: *hasResult = true; *hasResultType = true; break; case Op::OpFDiv: *hasResult = true; *hasResultType = true; break; case Op::OpUMod: *hasResult = true; *hasResultType = true; break; case Op::OpSRem: *hasResult = true; *hasResultType = true; break; case Op::OpSMod: *hasResult = true; *hasResultType = true; break; case Op::OpFRem: *hasResult = true; *hasResultType = true; break; case Op::OpFMod: *hasResult = true; *hasResultType = true; break; case Op::OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break; case Op::OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break; case Op::OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break; case Op::OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break; case Op::OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break; case Op::OpOuterProduct: *hasResult = true; *hasResultType = true; break; case Op::OpDot: *hasResult = true; *hasResultType = true; break; case Op::OpIAddCarry: *hasResult = true; *hasResultType = true; break; case Op::OpISubBorrow: *hasResult = true; *hasResultType = true; break; case Op::OpUMulExtended: *hasResult = true; *hasResultType = true; break; case Op::OpSMulExtended: *hasResult = true; *hasResultType = true; break; case Op::OpAny: *hasResult = true; *hasResultType = true; break; case Op::OpAll: *hasResult = true; *hasResultType = true; break; case Op::OpIsNan: *hasResult = true; *hasResultType = true; break; case Op::OpIsInf: *hasResult = true; *hasResultType = true; break; case Op::OpIsFinite: *hasResult = true; *hasResultType = true; break; case Op::OpIsNormal: *hasResult = true; *hasResultType = true; break; case Op::OpSignBitSet: *hasResult = true; *hasResultType = true; break; case Op::OpLessOrGreater: *hasResult = true; *hasResultType = true; break; case Op::OpOrdered: *hasResult = true; *hasResultType = true; break; case Op::OpUnordered: *hasResult = true; *hasResultType = true; break; case Op::OpLogicalEqual: *hasResult = true; *hasResultType = true; break; case Op::OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break; case Op::OpLogicalOr: *hasResult = true; *hasResultType = true; break; case Op::OpLogicalAnd: *hasResult = true; *hasResultType = true; break; case Op::OpLogicalNot: *hasResult = true; *hasResultType = true; break; case Op::OpSelect: *hasResult = true; *hasResultType = true; break; case Op::OpIEqual: *hasResult = true; *hasResultType = true; break; case Op::OpINotEqual: *hasResult = true; *hasResultType = true; break; case Op::OpUGreaterThan: *hasResult = true; *hasResultType = true; break; case Op::OpSGreaterThan: *hasResult = true; *hasResultType = true; break; case Op::OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break; case Op::OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break; case Op::OpULessThan: *hasResult = true; *hasResultType = true; break; case Op::OpSLessThan: *hasResult = true; *hasResultType = true; break; case Op::OpULessThanEqual: *hasResult = true; *hasResultType = true; break; case Op::OpSLessThanEqual: *hasResult = true; *hasResultType = true; break; case Op::OpFOrdEqual: *hasResult = true; *hasResultType = true; break; case Op::OpFUnordEqual: *hasResult = true; *hasResultType = true; break; case Op::OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break; case Op::OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break; case Op::OpFOrdLessThan: *hasResult = true; *hasResultType = true; break; case Op::OpFUnordLessThan: *hasResult = true; *hasResultType = true; break; case Op::OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break; case Op::OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break; case Op::OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break; case Op::OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break; case Op::OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break; case Op::OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break; case Op::OpShiftRightLogical: *hasResult = true; *hasResultType = true; break; case Op::OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break; case Op::OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break; case Op::OpBitwiseOr: *hasResult = true; *hasResultType = true; break; case Op::OpBitwiseXor: *hasResult = true; *hasResultType = true; break; case Op::OpBitwiseAnd: *hasResult = true; *hasResultType = true; break; case Op::OpNot: *hasResult = true; *hasResultType = true; break; case Op::OpBitFieldInsert: *hasResult = true; *hasResultType = true; break; case Op::OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break; case Op::OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break; case Op::OpBitReverse: *hasResult = true; *hasResultType = true; break; case Op::OpBitCount: *hasResult = true; *hasResultType = true; break; case Op::OpDPdx: *hasResult = true; *hasResultType = true; break; case Op::OpDPdy: *hasResult = true; *hasResultType = true; break; case Op::OpFwidth: *hasResult = true; *hasResultType = true; break; case Op::OpDPdxFine: *hasResult = true; *hasResultType = true; break; case Op::OpDPdyFine: *hasResult = true; *hasResultType = true; break; case Op::OpFwidthFine: *hasResult = true; *hasResultType = true; break; case Op::OpDPdxCoarse: *hasResult = true; *hasResultType = true; break; case Op::OpDPdyCoarse: *hasResult = true; *hasResultType = true; break; case Op::OpFwidthCoarse: *hasResult = true; *hasResultType = true; break; case Op::OpEmitVertex: *hasResult = false; *hasResultType = false; break; case Op::OpEndPrimitive: *hasResult = false; *hasResultType = false; break; case Op::OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break; case Op::OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break; case Op::OpControlBarrier: *hasResult = false; *hasResultType = false; break; case Op::OpMemoryBarrier: *hasResult = false; *hasResultType = false; break; case Op::OpAtomicLoad: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicStore: *hasResult = false; *hasResultType = false; break; case Op::OpAtomicExchange: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicIAdd: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicISub: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicSMin: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicUMin: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicSMax: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicUMax: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicAnd: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicOr: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicXor: *hasResult = true; *hasResultType = true; break; case Op::OpPhi: *hasResult = true; *hasResultType = true; break; case Op::OpLoopMerge: *hasResult = false; *hasResultType = false; break; case Op::OpSelectionMerge: *hasResult = false; *hasResultType = false; break; case Op::OpLabel: *hasResult = true; *hasResultType = false; break; case Op::OpBranch: *hasResult = false; *hasResultType = false; break; case Op::OpBranchConditional: *hasResult = false; *hasResultType = false; break; case Op::OpSwitch: *hasResult = false; *hasResultType = false; break; case Op::OpKill: *hasResult = false; *hasResultType = false; break; case Op::OpReturn: *hasResult = false; *hasResultType = false; break; case Op::OpReturnValue: *hasResult = false; *hasResultType = false; break; case Op::OpUnreachable: *hasResult = false; *hasResultType = false; break; case Op::OpLifetimeStart: *hasResult = false; *hasResultType = false; break; case Op::OpLifetimeStop: *hasResult = false; *hasResultType = false; break; case Op::OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break; case Op::OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break; case Op::OpGroupAll: *hasResult = true; *hasResultType = true; break; case Op::OpGroupAny: *hasResult = true; *hasResultType = true; break; case Op::OpGroupBroadcast: *hasResult = true; *hasResultType = true; break; case Op::OpGroupIAdd: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFAdd: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFMin: *hasResult = true; *hasResultType = true; break; case Op::OpGroupUMin: *hasResult = true; *hasResultType = true; break; case Op::OpGroupSMin: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFMax: *hasResult = true; *hasResultType = true; break; case Op::OpGroupUMax: *hasResult = true; *hasResultType = true; break; case Op::OpGroupSMax: *hasResult = true; *hasResultType = true; break; case Op::OpReadPipe: *hasResult = true; *hasResultType = true; break; case Op::OpWritePipe: *hasResult = true; *hasResultType = true; break; case Op::OpReservedReadPipe: *hasResult = true; *hasResultType = true; break; case Op::OpReservedWritePipe: *hasResult = true; *hasResultType = true; break; case Op::OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; case Op::OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; case Op::OpCommitReadPipe: *hasResult = false; *hasResultType = false; break; case Op::OpCommitWritePipe: *hasResult = false; *hasResultType = false; break; case Op::OpIsValidReserveId: *hasResult = true; *hasResultType = true; break; case Op::OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break; case Op::OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break; case Op::OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; case Op::OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; case Op::OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break; case Op::OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break; case Op::OpEnqueueMarker: *hasResult = true; *hasResultType = true; break; case Op::OpEnqueueKernel: *hasResult = true; *hasResultType = true; break; case Op::OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break; case Op::OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break; case Op::OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break; case Op::OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break; case Op::OpRetainEvent: *hasResult = false; *hasResultType = false; break; case Op::OpReleaseEvent: *hasResult = false; *hasResultType = false; break; case Op::OpCreateUserEvent: *hasResult = true; *hasResultType = true; break; case Op::OpIsValidEvent: *hasResult = true; *hasResultType = true; break; case Op::OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break; case Op::OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break; case Op::OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break; case Op::OpBuildNDRange: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseFetch: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseGather: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break; case Op::OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break; case Op::OpNoLine: *hasResult = false; *hasResultType = false; break; case Op::OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break; case Op::OpImageSparseRead: *hasResult = true; *hasResultType = true; break; case Op::OpSizeOf: *hasResult = true; *hasResultType = true; break; case Op::OpTypePipeStorage: *hasResult = true; *hasResultType = false; break; case Op::OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break; case Op::OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break; case Op::OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break; case Op::OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break; case Op::OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break; case Op::OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break; case Op::OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break; case Op::OpModuleProcessed: *hasResult = false; *hasResultType = false; break; case Op::OpExecutionModeId: *hasResult = false; *hasResultType = false; break; case Op::OpDecorateId: *hasResult = false; *hasResultType = false; break; case Op::OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; case Op::OpCopyLogical: *hasResult = true; *hasResultType = true; break; case Op::OpPtrEqual: *hasResult = true; *hasResultType = true; break; case Op::OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case Op::OpPtrDiff: *hasResult = true; *hasResultType = true; break; case Op::OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case Op::OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case Op::OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case Op::OpTypeTensorARM: *hasResult = true; *hasResultType = false; break; case Op::OpTensorReadARM: *hasResult = true; *hasResultType = true; break; case Op::OpTensorWriteARM: *hasResult = false; *hasResultType = false; break; case Op::OpTensorQuerySizeARM: *hasResult = true; *hasResultType = true; break; case Op::OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; case Op::OpTypeUntypedPointerKHR: *hasResult = true; *hasResultType = false; break; case Op::OpUntypedVariableKHR: *hasResult = true; *hasResultType = true; break; case Op::OpUntypedAccessChainKHR: *hasResult = true; *hasResultType = true; break; case Op::OpUntypedInBoundsAccessChainKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; case Op::OpUntypedPtrAccessChainKHR: *hasResult = true; *hasResultType = true; break; case Op::OpUntypedInBoundsPtrAccessChainKHR: *hasResult = true; *hasResultType = true; break; case Op::OpUntypedArrayLengthKHR: *hasResult = true; *hasResultType = true; break; case Op::OpUntypedPrefetchKHR: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformRotateKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; case Op::OpExtInstWithForwardRefsKHR: *hasResult = true; *hasResultType = true; break; case Op::OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; case Op::OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; case Op::OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; case Op::OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break; case Op::OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break; case Op::OpSDot: *hasResult = true; *hasResultType = true; break; case Op::OpUDot: *hasResult = true; *hasResultType = true; break; case Op::OpSUDot: *hasResult = true; *hasResultType = true; break; case Op::OpSDotAccSat: *hasResult = true; *hasResultType = true; break; case Op::OpUDotAccSat: *hasResult = true; *hasResultType = true; break; case Op::OpSUDotAccSat: *hasResult = true; *hasResultType = true; break; case Op::OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break; case Op::OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break; case Op::OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break; case Op::OpConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break; case Op::OpSpecConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break; case Op::OpCompositeConstructReplicateEXT: *hasResult = true; *hasResultType = true; break; case Op::OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; case Op::OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; case Op::OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; case Op::OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break; case Op::OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break; case Op::OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break; case Op::OpImageSampleWeightedQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpBitCastArrayQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpCompositeConstructCoopMatQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpCompositeExtractCoopMatQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpExtractSubArrayQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; case Op::OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; case Op::OpReadClockKHR: *hasResult = true; *hasResultType = true; break; case Op::OpAllocateNodePayloadsAMDX: *hasResult = true; *hasResultType = true; break; case Op::OpEnqueueNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break; case Op::OpTypeNodePayloadArrayAMDX: *hasResult = true; *hasResultType = false; break; case Op::OpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break; case Op::OpNodePayloadArrayLengthAMDX: *hasResult = true; *hasResultType = true; break; case Op::OpIsNodePayloadValidAMDX: *hasResult = true; *hasResultType = true; break; case Op::OpConstantStringAMDX: *hasResult = true; *hasResultType = false; break; case Op::OpSpecConstantStringAMDX: *hasResult = true; *hasResultType = false; break; case Op::OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectGetWorldToObjectNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetObjectToWorldNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetObjectRayDirectionNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetObjectRayOriginNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectTraceRayMotionNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectGetShaderRecordBufferHandleNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetShaderBindingTableRecordIndexNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectRecordEmptyNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectTraceRayNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectRecordHitNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectRecordHitWithIndexNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectRecordMissNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectExecuteShaderNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectGetCurrentTimeNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetAttributesNV: *hasResult = false; *hasResultType = false; break; case Op::OpHitObjectGetHitKindNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetPrimitiveIndexNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetGeometryIndexNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetInstanceIdNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetInstanceCustomIndexNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetWorldRayDirectionNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetWorldRayOriginNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetRayTMaxNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetRayTMinNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectIsEmptyNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectIsHitNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectIsMissNV: *hasResult = true; *hasResultType = true; break; case Op::OpReorderThreadWithHitObjectNV: *hasResult = false; *hasResultType = false; break; case Op::OpReorderThreadWithHintNV: *hasResult = false; *hasResultType = false; break; case Op::OpTypeHitObjectNV: *hasResult = true; *hasResultType = false; break; case Op::OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; case Op::OpTypeCooperativeVectorNV: *hasResult = true; *hasResultType = false; break; case Op::OpCooperativeVectorMatrixMulNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeVectorOuterProductAccumulateNV: *hasResult = false; *hasResultType = false; break; case Op::OpCooperativeVectorReduceSumAccumulateNV: *hasResult = false; *hasResultType = false; break; case Op::OpCooperativeVectorMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixConvertNV: *hasResult = true; *hasResultType = true; break; case Op::OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break; case Op::OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break; case Op::OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; case Op::OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; case Op::OpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break; case Op::OpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeVectorLoadNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeVectorStoreNV: *hasResult = false; *hasResultType = false; break; case Op::OpReportIntersectionKHR: *hasResult = true; *hasResultType = true; break; case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break; case Op::OpTraceNV: *hasResult = false; *hasResultType = false; break; case Op::OpTraceMotionNV: *hasResult = false; *hasResultType = false; break; case Op::OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break; case Op::OpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break; case Op::OpTypeAccelerationStructureKHR: *hasResult = true; *hasResultType = false; break; case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; case Op::OpRayQueryGetClusterIdNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetClusterIdNV: *hasResult = true; *hasResultType = true; break; case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; case Op::OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; case Op::OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; case Op::OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; case Op::OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; case Op::OpCooperativeMatrixReduceNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixLoadTensorNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixStoreTensorNV: *hasResult = false; *hasResultType = false; break; case Op::OpCooperativeMatrixPerElementOpNV: *hasResult = true; *hasResultType = true; break; case Op::OpTypeTensorLayoutNV: *hasResult = true; *hasResultType = false; break; case Op::OpTypeTensorViewNV: *hasResult = true; *hasResultType = false; break; case Op::OpCreateTensorLayoutNV: *hasResult = true; *hasResultType = true; break; case Op::OpTensorLayoutSetDimensionNV: *hasResult = true; *hasResultType = true; break; case Op::OpTensorLayoutSetStrideNV: *hasResult = true; *hasResultType = true; break; case Op::OpTensorLayoutSliceNV: *hasResult = true; *hasResultType = true; break; case Op::OpTensorLayoutSetClampValueNV: *hasResult = true; *hasResultType = true; break; case Op::OpCreateTensorViewNV: *hasResult = true; *hasResultType = true; break; case Op::OpTensorViewSetDimensionNV: *hasResult = true; *hasResultType = true; break; case Op::OpTensorViewSetStrideNV: *hasResult = true; *hasResultType = true; break; case Op::OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break; case Op::OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; case Op::OpTensorViewSetClipNV: *hasResult = true; *hasResultType = true; break; case Op::OpTensorLayoutSetBlockSizeNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixTransposeNV: *hasResult = true; *hasResultType = true; break; case Op::OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break; case Op::OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break; case Op::OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break; case Op::OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break; case Op::OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break; case Op::OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break; case Op::OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break; case Op::OpRawAccessChainNV: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionSpherePositionNV: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionSphereRadiusNV: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionLSSPositionsNV: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionLSSRadiiNV: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionLSSHitValueNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetSpherePositionNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetSphereRadiusNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetLSSPositionsNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetLSSRadiiNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectIsSphereHitNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectIsLSSHitNV: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryIsSphereHitNV: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryIsLSSHitNV: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpIAverageINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpUAverageINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpISubSatINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpAsmTargetINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpAsmINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break; case Op::OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break; case Op::OpExpectKHR: *hasResult = true; *hasResultType = true; break; case Op::OpDecorateString: *hasResult = false; *hasResultType = false; break; case Op::OpMemberDecorateString: *hasResult = false; *hasResultType = false; break; case Op::OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpAliasDomainDeclINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpAliasScopeDeclINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpAliasScopeListDeclINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break; case Op::OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break; case Op::OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break; case Op::OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break; case Op::OpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpControlBarrierWaitINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpArithmeticFenceEXT: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupBlockPrefetchINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroup2DBlockLoadINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroup2DBlockLoadTransformINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroup2DBlockLoadTransposeINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroup2DBlockPrefetchINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroup2DBlockStoreINTEL: *hasResult = false; *hasResultType = false; break; case Op::OpSubgroupMatrixMultiplyAccumulateINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFMulKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupBitwiseAndKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupBitwiseOrKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupBitwiseXorKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break; case Op::OpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break; case Op::OpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break; } } inline const char* SourceLanguageToString(SourceLanguage value) { switch (value) { case SourceLanguage::Unknown: return "Unknown"; case SourceLanguage::ESSL: return "ESSL"; case SourceLanguage::GLSL: return "GLSL"; case SourceLanguage::OpenCL_C: return "OpenCL_C"; case SourceLanguage::OpenCL_CPP: return "OpenCL_CPP"; case SourceLanguage::HLSL: return "HLSL"; case SourceLanguage::CPP_for_OpenCL: return "CPP_for_OpenCL"; case SourceLanguage::SYCL: return "SYCL"; case SourceLanguage::HERO_C: return "HERO_C"; case SourceLanguage::NZSL: return "NZSL"; case SourceLanguage::WGSL: return "WGSL"; case SourceLanguage::Slang: return "Slang"; case SourceLanguage::Zig: return "Zig"; case SourceLanguage::Rust: return "Rust"; default: return "Unknown"; } } inline const char* ExecutionModelToString(ExecutionModel value) { switch (value) { case ExecutionModel::Vertex: return "Vertex"; case ExecutionModel::TessellationControl: return "TessellationControl"; case ExecutionModel::TessellationEvaluation: return "TessellationEvaluation"; case ExecutionModel::Geometry: return "Geometry"; case ExecutionModel::Fragment: return "Fragment"; case ExecutionModel::GLCompute: return "GLCompute"; case ExecutionModel::Kernel: return "Kernel"; case ExecutionModel::TaskNV: return "TaskNV"; case ExecutionModel::MeshNV: return "MeshNV"; case ExecutionModel::RayGenerationKHR: return "RayGenerationKHR"; case ExecutionModel::IntersectionKHR: return "IntersectionKHR"; case ExecutionModel::AnyHitKHR: return "AnyHitKHR"; case ExecutionModel::ClosestHitKHR: return "ClosestHitKHR"; case ExecutionModel::MissKHR: return "MissKHR"; case ExecutionModel::CallableKHR: return "CallableKHR"; case ExecutionModel::TaskEXT: return "TaskEXT"; case ExecutionModel::MeshEXT: return "MeshEXT"; default: return "Unknown"; } } inline const char* AddressingModelToString(AddressingModel value) { switch (value) { case AddressingModel::Logical: return "Logical"; case AddressingModel::Physical32: return "Physical32"; case AddressingModel::Physical64: return "Physical64"; case AddressingModel::PhysicalStorageBuffer64: return "PhysicalStorageBuffer64"; default: return "Unknown"; } } inline const char* MemoryModelToString(MemoryModel value) { switch (value) { case MemoryModel::Simple: return "Simple"; case MemoryModel::GLSL450: return "GLSL450"; case MemoryModel::OpenCL: return "OpenCL"; case MemoryModel::Vulkan: return "Vulkan"; default: return "Unknown"; } } inline const char* ExecutionModeToString(ExecutionMode value) { switch (value) { case ExecutionMode::Invocations: return "Invocations"; case ExecutionMode::SpacingEqual: return "SpacingEqual"; case ExecutionMode::SpacingFractionalEven: return "SpacingFractionalEven"; case ExecutionMode::SpacingFractionalOdd: return "SpacingFractionalOdd"; case ExecutionMode::VertexOrderCw: return "VertexOrderCw"; case ExecutionMode::VertexOrderCcw: return "VertexOrderCcw"; case ExecutionMode::PixelCenterInteger: return "PixelCenterInteger"; case ExecutionMode::OriginUpperLeft: return "OriginUpperLeft"; case ExecutionMode::OriginLowerLeft: return "OriginLowerLeft"; case ExecutionMode::EarlyFragmentTests: return "EarlyFragmentTests"; case ExecutionMode::PointMode: return "PointMode"; case ExecutionMode::Xfb: return "Xfb"; case ExecutionMode::DepthReplacing: return "DepthReplacing"; case ExecutionMode::DepthGreater: return "DepthGreater"; case ExecutionMode::DepthLess: return "DepthLess"; case ExecutionMode::DepthUnchanged: return "DepthUnchanged"; case ExecutionMode::LocalSize: return "LocalSize"; case ExecutionMode::LocalSizeHint: return "LocalSizeHint"; case ExecutionMode::InputPoints: return "InputPoints"; case ExecutionMode::InputLines: return "InputLines"; case ExecutionMode::InputLinesAdjacency: return "InputLinesAdjacency"; case ExecutionMode::Triangles: return "Triangles"; case ExecutionMode::InputTrianglesAdjacency: return "InputTrianglesAdjacency"; case ExecutionMode::Quads: return "Quads"; case ExecutionMode::Isolines: return "Isolines"; case ExecutionMode::OutputVertices: return "OutputVertices"; case ExecutionMode::OutputPoints: return "OutputPoints"; case ExecutionMode::OutputLineStrip: return "OutputLineStrip"; case ExecutionMode::OutputTriangleStrip: return "OutputTriangleStrip"; case ExecutionMode::VecTypeHint: return "VecTypeHint"; case ExecutionMode::ContractionOff: return "ContractionOff"; case ExecutionMode::Initializer: return "Initializer"; case ExecutionMode::Finalizer: return "Finalizer"; case ExecutionMode::SubgroupSize: return "SubgroupSize"; case ExecutionMode::SubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup"; case ExecutionMode::SubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId"; case ExecutionMode::LocalSizeId: return "LocalSizeId"; case ExecutionMode::LocalSizeHintId: return "LocalSizeHintId"; case ExecutionMode::NonCoherentColorAttachmentReadEXT: return "NonCoherentColorAttachmentReadEXT"; case ExecutionMode::NonCoherentDepthAttachmentReadEXT: return "NonCoherentDepthAttachmentReadEXT"; case ExecutionMode::NonCoherentStencilAttachmentReadEXT: return "NonCoherentStencilAttachmentReadEXT"; case ExecutionMode::SubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlowKHR"; case ExecutionMode::PostDepthCoverage: return "PostDepthCoverage"; case ExecutionMode::DenormPreserve: return "DenormPreserve"; case ExecutionMode::DenormFlushToZero: return "DenormFlushToZero"; case ExecutionMode::SignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; case ExecutionMode::RoundingModeRTE: return "RoundingModeRTE"; case ExecutionMode::RoundingModeRTZ: return "RoundingModeRTZ"; case ExecutionMode::NonCoherentTileAttachmentReadQCOM: return "NonCoherentTileAttachmentReadQCOM"; case ExecutionMode::TileShadingRateQCOM: return "TileShadingRateQCOM"; case ExecutionMode::EarlyAndLateFragmentTestsAMD: return "EarlyAndLateFragmentTestsAMD"; case ExecutionMode::StencilRefReplacingEXT: return "StencilRefReplacingEXT"; case ExecutionMode::CoalescingAMDX: return "CoalescingAMDX"; case ExecutionMode::IsApiEntryAMDX: return "IsApiEntryAMDX"; case ExecutionMode::MaxNodeRecursionAMDX: return "MaxNodeRecursionAMDX"; case ExecutionMode::StaticNumWorkgroupsAMDX: return "StaticNumWorkgroupsAMDX"; case ExecutionMode::ShaderIndexAMDX: return "ShaderIndexAMDX"; case ExecutionMode::MaxNumWorkgroupsAMDX: return "MaxNumWorkgroupsAMDX"; case ExecutionMode::StencilRefUnchangedFrontAMD: return "StencilRefUnchangedFrontAMD"; case ExecutionMode::StencilRefGreaterFrontAMD: return "StencilRefGreaterFrontAMD"; case ExecutionMode::StencilRefLessFrontAMD: return "StencilRefLessFrontAMD"; case ExecutionMode::StencilRefUnchangedBackAMD: return "StencilRefUnchangedBackAMD"; case ExecutionMode::StencilRefGreaterBackAMD: return "StencilRefGreaterBackAMD"; case ExecutionMode::StencilRefLessBackAMD: return "StencilRefLessBackAMD"; case ExecutionMode::QuadDerivativesKHR: return "QuadDerivativesKHR"; case ExecutionMode::RequireFullQuadsKHR: return "RequireFullQuadsKHR"; case ExecutionMode::SharesInputWithAMDX: return "SharesInputWithAMDX"; case ExecutionMode::OutputLinesEXT: return "OutputLinesEXT"; case ExecutionMode::OutputPrimitivesEXT: return "OutputPrimitivesEXT"; case ExecutionMode::DerivativeGroupQuadsKHR: return "DerivativeGroupQuadsKHR"; case ExecutionMode::DerivativeGroupLinearKHR: return "DerivativeGroupLinearKHR"; case ExecutionMode::OutputTrianglesEXT: return "OutputTrianglesEXT"; case ExecutionMode::PixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT"; case ExecutionMode::PixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT"; case ExecutionMode::SampleInterlockOrderedEXT: return "SampleInterlockOrderedEXT"; case ExecutionMode::SampleInterlockUnorderedEXT: return "SampleInterlockUnorderedEXT"; case ExecutionMode::ShadingRateInterlockOrderedEXT: return "ShadingRateInterlockOrderedEXT"; case ExecutionMode::ShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT"; case ExecutionMode::SharedLocalMemorySizeINTEL: return "SharedLocalMemorySizeINTEL"; case ExecutionMode::RoundingModeRTPINTEL: return "RoundingModeRTPINTEL"; case ExecutionMode::RoundingModeRTNINTEL: return "RoundingModeRTNINTEL"; case ExecutionMode::FloatingPointModeALTINTEL: return "FloatingPointModeALTINTEL"; case ExecutionMode::FloatingPointModeIEEEINTEL: return "FloatingPointModeIEEEINTEL"; case ExecutionMode::MaxWorkgroupSizeINTEL: return "MaxWorkgroupSizeINTEL"; case ExecutionMode::MaxWorkDimINTEL: return "MaxWorkDimINTEL"; case ExecutionMode::NoGlobalOffsetINTEL: return "NoGlobalOffsetINTEL"; case ExecutionMode::NumSIMDWorkitemsINTEL: return "NumSIMDWorkitemsINTEL"; case ExecutionMode::SchedulerTargetFmaxMhzINTEL: return "SchedulerTargetFmaxMhzINTEL"; case ExecutionMode::MaximallyReconvergesKHR: return "MaximallyReconvergesKHR"; case ExecutionMode::FPFastMathDefault: return "FPFastMathDefault"; case ExecutionMode::StreamingInterfaceINTEL: return "StreamingInterfaceINTEL"; case ExecutionMode::RegisterMapInterfaceINTEL: return "RegisterMapInterfaceINTEL"; case ExecutionMode::NamedBarrierCountINTEL: return "NamedBarrierCountINTEL"; case ExecutionMode::MaximumRegistersINTEL: return "MaximumRegistersINTEL"; case ExecutionMode::MaximumRegistersIdINTEL: return "MaximumRegistersIdINTEL"; case ExecutionMode::NamedMaximumRegistersINTEL: return "NamedMaximumRegistersINTEL"; default: return "Unknown"; } } inline const char* StorageClassToString(StorageClass value) { switch (value) { case StorageClass::UniformConstant: return "UniformConstant"; case StorageClass::Input: return "Input"; case StorageClass::Uniform: return "Uniform"; case StorageClass::Output: return "Output"; case StorageClass::Workgroup: return "Workgroup"; case StorageClass::CrossWorkgroup: return "CrossWorkgroup"; case StorageClass::Private: return "Private"; case StorageClass::Function: return "Function"; case StorageClass::Generic: return "Generic"; case StorageClass::PushConstant: return "PushConstant"; case StorageClass::AtomicCounter: return "AtomicCounter"; case StorageClass::Image: return "Image"; case StorageClass::StorageBuffer: return "StorageBuffer"; case StorageClass::TileImageEXT: return "TileImageEXT"; case StorageClass::TileAttachmentQCOM: return "TileAttachmentQCOM"; case StorageClass::NodePayloadAMDX: return "NodePayloadAMDX"; case StorageClass::CallableDataKHR: return "CallableDataKHR"; case StorageClass::IncomingCallableDataKHR: return "IncomingCallableDataKHR"; case StorageClass::RayPayloadKHR: return "RayPayloadKHR"; case StorageClass::HitAttributeKHR: return "HitAttributeKHR"; case StorageClass::IncomingRayPayloadKHR: return "IncomingRayPayloadKHR"; case StorageClass::ShaderRecordBufferKHR: return "ShaderRecordBufferKHR"; case StorageClass::PhysicalStorageBuffer: return "PhysicalStorageBuffer"; case StorageClass::HitObjectAttributeNV: return "HitObjectAttributeNV"; case StorageClass::TaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; case StorageClass::CodeSectionINTEL: return "CodeSectionINTEL"; case StorageClass::DeviceOnlyINTEL: return "DeviceOnlyINTEL"; case StorageClass::HostOnlyINTEL: return "HostOnlyINTEL"; default: return "Unknown"; } } inline const char* DimToString(Dim value) { switch (value) { case Dim::Dim1D: return "1D"; case Dim::Dim2D: return "2D"; case Dim::Dim3D: return "3D"; case Dim::Cube: return "Cube"; case Dim::Rect: return "Rect"; case Dim::Buffer: return "Buffer"; case Dim::SubpassData: return "SubpassData"; case Dim::TileImageDataEXT: return "TileImageDataEXT"; default: return "Unknown"; } } inline const char* SamplerAddressingModeToString(SamplerAddressingMode value) { switch (value) { case SamplerAddressingMode::None: return "None"; case SamplerAddressingMode::ClampToEdge: return "ClampToEdge"; case SamplerAddressingMode::Clamp: return "Clamp"; case SamplerAddressingMode::Repeat: return "Repeat"; case SamplerAddressingMode::RepeatMirrored: return "RepeatMirrored"; default: return "Unknown"; } } inline const char* SamplerFilterModeToString(SamplerFilterMode value) { switch (value) { case SamplerFilterMode::Nearest: return "Nearest"; case SamplerFilterMode::Linear: return "Linear"; default: return "Unknown"; } } inline const char* ImageFormatToString(ImageFormat value) { switch (value) { case ImageFormat::Unknown: return "Unknown"; case ImageFormat::Rgba32f: return "Rgba32f"; case ImageFormat::Rgba16f: return "Rgba16f"; case ImageFormat::R32f: return "R32f"; case ImageFormat::Rgba8: return "Rgba8"; case ImageFormat::Rgba8Snorm: return "Rgba8Snorm"; case ImageFormat::Rg32f: return "Rg32f"; case ImageFormat::Rg16f: return "Rg16f"; case ImageFormat::R11fG11fB10f: return "R11fG11fB10f"; case ImageFormat::R16f: return "R16f"; case ImageFormat::Rgba16: return "Rgba16"; case ImageFormat::Rgb10A2: return "Rgb10A2"; case ImageFormat::Rg16: return "Rg16"; case ImageFormat::Rg8: return "Rg8"; case ImageFormat::R16: return "R16"; case ImageFormat::R8: return "R8"; case ImageFormat::Rgba16Snorm: return "Rgba16Snorm"; case ImageFormat::Rg16Snorm: return "Rg16Snorm"; case ImageFormat::Rg8Snorm: return "Rg8Snorm"; case ImageFormat::R16Snorm: return "R16Snorm"; case ImageFormat::R8Snorm: return "R8Snorm"; case ImageFormat::Rgba32i: return "Rgba32i"; case ImageFormat::Rgba16i: return "Rgba16i"; case ImageFormat::Rgba8i: return "Rgba8i"; case ImageFormat::R32i: return "R32i"; case ImageFormat::Rg32i: return "Rg32i"; case ImageFormat::Rg16i: return "Rg16i"; case ImageFormat::Rg8i: return "Rg8i"; case ImageFormat::R16i: return "R16i"; case ImageFormat::R8i: return "R8i"; case ImageFormat::Rgba32ui: return "Rgba32ui"; case ImageFormat::Rgba16ui: return "Rgba16ui"; case ImageFormat::Rgba8ui: return "Rgba8ui"; case ImageFormat::R32ui: return "R32ui"; case ImageFormat::Rgb10a2ui: return "Rgb10a2ui"; case ImageFormat::Rg32ui: return "Rg32ui"; case ImageFormat::Rg16ui: return "Rg16ui"; case ImageFormat::Rg8ui: return "Rg8ui"; case ImageFormat::R16ui: return "R16ui"; case ImageFormat::R8ui: return "R8ui"; case ImageFormat::R64ui: return "R64ui"; case ImageFormat::R64i: return "R64i"; default: return "Unknown"; } } inline const char* ImageChannelOrderToString(ImageChannelOrder value) { switch (value) { case ImageChannelOrder::R: return "R"; case ImageChannelOrder::A: return "A"; case ImageChannelOrder::RG: return "RG"; case ImageChannelOrder::RA: return "RA"; case ImageChannelOrder::RGB: return "RGB"; case ImageChannelOrder::RGBA: return "RGBA"; case ImageChannelOrder::BGRA: return "BGRA"; case ImageChannelOrder::ARGB: return "ARGB"; case ImageChannelOrder::Intensity: return "Intensity"; case ImageChannelOrder::Luminance: return "Luminance"; case ImageChannelOrder::Rx: return "Rx"; case ImageChannelOrder::RGx: return "RGx"; case ImageChannelOrder::RGBx: return "RGBx"; case ImageChannelOrder::Depth: return "Depth"; case ImageChannelOrder::DepthStencil: return "DepthStencil"; case ImageChannelOrder::sRGB: return "sRGB"; case ImageChannelOrder::sRGBx: return "sRGBx"; case ImageChannelOrder::sRGBA: return "sRGBA"; case ImageChannelOrder::sBGRA: return "sBGRA"; case ImageChannelOrder::ABGR: return "ABGR"; default: return "Unknown"; } } inline const char* ImageChannelDataTypeToString(ImageChannelDataType value) { switch (value) { case ImageChannelDataType::SnormInt8: return "SnormInt8"; case ImageChannelDataType::SnormInt16: return "SnormInt16"; case ImageChannelDataType::UnormInt8: return "UnormInt8"; case ImageChannelDataType::UnormInt16: return "UnormInt16"; case ImageChannelDataType::UnormShort565: return "UnormShort565"; case ImageChannelDataType::UnormShort555: return "UnormShort555"; case ImageChannelDataType::UnormInt101010: return "UnormInt101010"; case ImageChannelDataType::SignedInt8: return "SignedInt8"; case ImageChannelDataType::SignedInt16: return "SignedInt16"; case ImageChannelDataType::SignedInt32: return "SignedInt32"; case ImageChannelDataType::UnsignedInt8: return "UnsignedInt8"; case ImageChannelDataType::UnsignedInt16: return "UnsignedInt16"; case ImageChannelDataType::UnsignedInt32: return "UnsignedInt32"; case ImageChannelDataType::HalfFloat: return "HalfFloat"; case ImageChannelDataType::Float: return "Float"; case ImageChannelDataType::UnormInt24: return "UnormInt24"; case ImageChannelDataType::UnormInt101010_2: return "UnormInt101010_2"; case ImageChannelDataType::UnsignedIntRaw10EXT: return "UnsignedIntRaw10EXT"; case ImageChannelDataType::UnsignedIntRaw12EXT: return "UnsignedIntRaw12EXT"; case ImageChannelDataType::UnormInt2_101010EXT: return "UnormInt2_101010EXT"; default: return "Unknown"; } } inline const char* FPRoundingModeToString(FPRoundingMode value) { switch (value) { case FPRoundingMode::RTE: return "RTE"; case FPRoundingMode::RTZ: return "RTZ"; case FPRoundingMode::RTP: return "RTP"; case FPRoundingMode::RTN: return "RTN"; default: return "Unknown"; } } inline const char* LinkageTypeToString(LinkageType value) { switch (value) { case LinkageType::Export: return "Export"; case LinkageType::Import: return "Import"; case LinkageType::LinkOnceODR: return "LinkOnceODR"; default: return "Unknown"; } } inline const char* AccessQualifierToString(AccessQualifier value) { switch (value) { case AccessQualifier::ReadOnly: return "ReadOnly"; case AccessQualifier::WriteOnly: return "WriteOnly"; case AccessQualifier::ReadWrite: return "ReadWrite"; default: return "Unknown"; } } inline const char* FunctionParameterAttributeToString(FunctionParameterAttribute value) { switch (value) { case FunctionParameterAttribute::Zext: return "Zext"; case FunctionParameterAttribute::Sext: return "Sext"; case FunctionParameterAttribute::ByVal: return "ByVal"; case FunctionParameterAttribute::Sret: return "Sret"; case FunctionParameterAttribute::NoAlias: return "NoAlias"; case FunctionParameterAttribute::NoCapture: return "NoCapture"; case FunctionParameterAttribute::NoWrite: return "NoWrite"; case FunctionParameterAttribute::NoReadWrite: return "NoReadWrite"; case FunctionParameterAttribute::RuntimeAlignedINTEL: return "RuntimeAlignedINTEL"; default: return "Unknown"; } } inline const char* DecorationToString(Decoration value) { switch (value) { case Decoration::RelaxedPrecision: return "RelaxedPrecision"; case Decoration::SpecId: return "SpecId"; case Decoration::Block: return "Block"; case Decoration::BufferBlock: return "BufferBlock"; case Decoration::RowMajor: return "RowMajor"; case Decoration::ColMajor: return "ColMajor"; case Decoration::ArrayStride: return "ArrayStride"; case Decoration::MatrixStride: return "MatrixStride"; case Decoration::GLSLShared: return "GLSLShared"; case Decoration::GLSLPacked: return "GLSLPacked"; case Decoration::CPacked: return "CPacked"; case Decoration::BuiltIn: return "BuiltIn"; case Decoration::NoPerspective: return "NoPerspective"; case Decoration::Flat: return "Flat"; case Decoration::Patch: return "Patch"; case Decoration::Centroid: return "Centroid"; case Decoration::Sample: return "Sample"; case Decoration::Invariant: return "Invariant"; case Decoration::Restrict: return "Restrict"; case Decoration::Aliased: return "Aliased"; case Decoration::Volatile: return "Volatile"; case Decoration::Constant: return "Constant"; case Decoration::Coherent: return "Coherent"; case Decoration::NonWritable: return "NonWritable"; case Decoration::NonReadable: return "NonReadable"; case Decoration::Uniform: return "Uniform"; case Decoration::UniformId: return "UniformId"; case Decoration::SaturatedConversion: return "SaturatedConversion"; case Decoration::Stream: return "Stream"; case Decoration::Location: return "Location"; case Decoration::Component: return "Component"; case Decoration::Index: return "Index"; case Decoration::Binding: return "Binding"; case Decoration::DescriptorSet: return "DescriptorSet"; case Decoration::Offset: return "Offset"; case Decoration::XfbBuffer: return "XfbBuffer"; case Decoration::XfbStride: return "XfbStride"; case Decoration::FuncParamAttr: return "FuncParamAttr"; case Decoration::FPRoundingMode: return "FPRoundingMode"; case Decoration::FPFastMathMode: return "FPFastMathMode"; case Decoration::LinkageAttributes: return "LinkageAttributes"; case Decoration::NoContraction: return "NoContraction"; case Decoration::InputAttachmentIndex: return "InputAttachmentIndex"; case Decoration::Alignment: return "Alignment"; case Decoration::MaxByteOffset: return "MaxByteOffset"; case Decoration::AlignmentId: return "AlignmentId"; case Decoration::MaxByteOffsetId: return "MaxByteOffsetId"; case Decoration::SaturatedToLargestFloat8NormalConversionEXT: return "SaturatedToLargestFloat8NormalConversionEXT"; case Decoration::NoSignedWrap: return "NoSignedWrap"; case Decoration::NoUnsignedWrap: return "NoUnsignedWrap"; case Decoration::WeightTextureQCOM: return "WeightTextureQCOM"; case Decoration::BlockMatchTextureQCOM: return "BlockMatchTextureQCOM"; case Decoration::BlockMatchSamplerQCOM: return "BlockMatchSamplerQCOM"; case Decoration::ExplicitInterpAMD: return "ExplicitInterpAMD"; case Decoration::NodeSharesPayloadLimitsWithAMDX: return "NodeSharesPayloadLimitsWithAMDX"; case Decoration::NodeMaxPayloadsAMDX: return "NodeMaxPayloadsAMDX"; case Decoration::TrackFinishWritingAMDX: return "TrackFinishWritingAMDX"; case Decoration::PayloadNodeNameAMDX: return "PayloadNodeNameAMDX"; case Decoration::PayloadNodeBaseIndexAMDX: return "PayloadNodeBaseIndexAMDX"; case Decoration::PayloadNodeSparseArrayAMDX: return "PayloadNodeSparseArrayAMDX"; case Decoration::PayloadNodeArraySizeAMDX: return "PayloadNodeArraySizeAMDX"; case Decoration::PayloadDispatchIndirectAMDX: return "PayloadDispatchIndirectAMDX"; case Decoration::OverrideCoverageNV: return "OverrideCoverageNV"; case Decoration::PassthroughNV: return "PassthroughNV"; case Decoration::ViewportRelativeNV: return "ViewportRelativeNV"; case Decoration::SecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV"; case Decoration::PerPrimitiveEXT: return "PerPrimitiveEXT"; case Decoration::PerViewNV: return "PerViewNV"; case Decoration::PerTaskNV: return "PerTaskNV"; case Decoration::PerVertexKHR: return "PerVertexKHR"; case Decoration::NonUniform: return "NonUniform"; case Decoration::RestrictPointer: return "RestrictPointer"; case Decoration::AliasedPointer: return "AliasedPointer"; case Decoration::HitObjectShaderRecordBufferNV: return "HitObjectShaderRecordBufferNV"; case Decoration::BindlessSamplerNV: return "BindlessSamplerNV"; case Decoration::BindlessImageNV: return "BindlessImageNV"; case Decoration::BoundSamplerNV: return "BoundSamplerNV"; case Decoration::BoundImageNV: return "BoundImageNV"; case Decoration::SIMTCallINTEL: return "SIMTCallINTEL"; case Decoration::ReferencedIndirectlyINTEL: return "ReferencedIndirectlyINTEL"; case Decoration::ClobberINTEL: return "ClobberINTEL"; case Decoration::SideEffectsINTEL: return "SideEffectsINTEL"; case Decoration::VectorComputeVariableINTEL: return "VectorComputeVariableINTEL"; case Decoration::FuncParamIOKindINTEL: return "FuncParamIOKindINTEL"; case Decoration::VectorComputeFunctionINTEL: return "VectorComputeFunctionINTEL"; case Decoration::StackCallINTEL: return "StackCallINTEL"; case Decoration::GlobalVariableOffsetINTEL: return "GlobalVariableOffsetINTEL"; case Decoration::CounterBuffer: return "CounterBuffer"; case Decoration::HlslSemanticGOOGLE: return "HlslSemanticGOOGLE"; case Decoration::UserTypeGOOGLE: return "UserTypeGOOGLE"; case Decoration::FunctionRoundingModeINTEL: return "FunctionRoundingModeINTEL"; case Decoration::FunctionDenormModeINTEL: return "FunctionDenormModeINTEL"; case Decoration::RegisterINTEL: return "RegisterINTEL"; case Decoration::MemoryINTEL: return "MemoryINTEL"; case Decoration::NumbanksINTEL: return "NumbanksINTEL"; case Decoration::BankwidthINTEL: return "BankwidthINTEL"; case Decoration::MaxPrivateCopiesINTEL: return "MaxPrivateCopiesINTEL"; case Decoration::SinglepumpINTEL: return "SinglepumpINTEL"; case Decoration::DoublepumpINTEL: return "DoublepumpINTEL"; case Decoration::MaxReplicatesINTEL: return "MaxReplicatesINTEL"; case Decoration::SimpleDualPortINTEL: return "SimpleDualPortINTEL"; case Decoration::MergeINTEL: return "MergeINTEL"; case Decoration::BankBitsINTEL: return "BankBitsINTEL"; case Decoration::ForcePow2DepthINTEL: return "ForcePow2DepthINTEL"; case Decoration::StridesizeINTEL: return "StridesizeINTEL"; case Decoration::WordsizeINTEL: return "WordsizeINTEL"; case Decoration::TrueDualPortINTEL: return "TrueDualPortINTEL"; case Decoration::BurstCoalesceINTEL: return "BurstCoalesceINTEL"; case Decoration::CacheSizeINTEL: return "CacheSizeINTEL"; case Decoration::DontStaticallyCoalesceINTEL: return "DontStaticallyCoalesceINTEL"; case Decoration::PrefetchINTEL: return "PrefetchINTEL"; case Decoration::StallEnableINTEL: return "StallEnableINTEL"; case Decoration::FuseLoopsInFunctionINTEL: return "FuseLoopsInFunctionINTEL"; case Decoration::MathOpDSPModeINTEL: return "MathOpDSPModeINTEL"; case Decoration::AliasScopeINTEL: return "AliasScopeINTEL"; case Decoration::NoAliasINTEL: return "NoAliasINTEL"; case Decoration::InitiationIntervalINTEL: return "InitiationIntervalINTEL"; case Decoration::MaxConcurrencyINTEL: return "MaxConcurrencyINTEL"; case Decoration::PipelineEnableINTEL: return "PipelineEnableINTEL"; case Decoration::BufferLocationINTEL: return "BufferLocationINTEL"; case Decoration::IOPipeStorageINTEL: return "IOPipeStorageINTEL"; case Decoration::FunctionFloatingPointModeINTEL: return "FunctionFloatingPointModeINTEL"; case Decoration::SingleElementVectorINTEL: return "SingleElementVectorINTEL"; case Decoration::VectorComputeCallableFunctionINTEL: return "VectorComputeCallableFunctionINTEL"; case Decoration::MediaBlockIOINTEL: return "MediaBlockIOINTEL"; case Decoration::StallFreeINTEL: return "StallFreeINTEL"; case Decoration::FPMaxErrorDecorationINTEL: return "FPMaxErrorDecorationINTEL"; case Decoration::LatencyControlLabelINTEL: return "LatencyControlLabelINTEL"; case Decoration::LatencyControlConstraintINTEL: return "LatencyControlConstraintINTEL"; case Decoration::ConduitKernelArgumentINTEL: return "ConduitKernelArgumentINTEL"; case Decoration::RegisterMapKernelArgumentINTEL: return "RegisterMapKernelArgumentINTEL"; case Decoration::MMHostInterfaceAddressWidthINTEL: return "MMHostInterfaceAddressWidthINTEL"; case Decoration::MMHostInterfaceDataWidthINTEL: return "MMHostInterfaceDataWidthINTEL"; case Decoration::MMHostInterfaceLatencyINTEL: return "MMHostInterfaceLatencyINTEL"; case Decoration::MMHostInterfaceReadWriteModeINTEL: return "MMHostInterfaceReadWriteModeINTEL"; case Decoration::MMHostInterfaceMaxBurstINTEL: return "MMHostInterfaceMaxBurstINTEL"; case Decoration::MMHostInterfaceWaitRequestINTEL: return "MMHostInterfaceWaitRequestINTEL"; case Decoration::StableKernelArgumentINTEL: return "StableKernelArgumentINTEL"; case Decoration::HostAccessINTEL: return "HostAccessINTEL"; case Decoration::InitModeINTEL: return "InitModeINTEL"; case Decoration::ImplementInRegisterMapINTEL: return "ImplementInRegisterMapINTEL"; case Decoration::CacheControlLoadINTEL: return "CacheControlLoadINTEL"; case Decoration::CacheControlStoreINTEL: return "CacheControlStoreINTEL"; default: return "Unknown"; } } inline const char* BuiltInToString(BuiltIn value) { switch (value) { case BuiltIn::Position: return "Position"; case BuiltIn::PointSize: return "PointSize"; case BuiltIn::ClipDistance: return "ClipDistance"; case BuiltIn::CullDistance: return "CullDistance"; case BuiltIn::VertexId: return "VertexId"; case BuiltIn::InstanceId: return "InstanceId"; case BuiltIn::PrimitiveId: return "PrimitiveId"; case BuiltIn::InvocationId: return "InvocationId"; case BuiltIn::Layer: return "Layer"; case BuiltIn::ViewportIndex: return "ViewportIndex"; case BuiltIn::TessLevelOuter: return "TessLevelOuter"; case BuiltIn::TessLevelInner: return "TessLevelInner"; case BuiltIn::TessCoord: return "TessCoord"; case BuiltIn::PatchVertices: return "PatchVertices"; case BuiltIn::FragCoord: return "FragCoord"; case BuiltIn::PointCoord: return "PointCoord"; case BuiltIn::FrontFacing: return "FrontFacing"; case BuiltIn::SampleId: return "SampleId"; case BuiltIn::SamplePosition: return "SamplePosition"; case BuiltIn::SampleMask: return "SampleMask"; case BuiltIn::FragDepth: return "FragDepth"; case BuiltIn::HelperInvocation: return "HelperInvocation"; case BuiltIn::NumWorkgroups: return "NumWorkgroups"; case BuiltIn::WorkgroupSize: return "WorkgroupSize"; case BuiltIn::WorkgroupId: return "WorkgroupId"; case BuiltIn::LocalInvocationId: return "LocalInvocationId"; case BuiltIn::GlobalInvocationId: return "GlobalInvocationId"; case BuiltIn::LocalInvocationIndex: return "LocalInvocationIndex"; case BuiltIn::WorkDim: return "WorkDim"; case BuiltIn::GlobalSize: return "GlobalSize"; case BuiltIn::EnqueuedWorkgroupSize: return "EnqueuedWorkgroupSize"; case BuiltIn::GlobalOffset: return "GlobalOffset"; case BuiltIn::GlobalLinearId: return "GlobalLinearId"; case BuiltIn::SubgroupSize: return "SubgroupSize"; case BuiltIn::SubgroupMaxSize: return "SubgroupMaxSize"; case BuiltIn::NumSubgroups: return "NumSubgroups"; case BuiltIn::NumEnqueuedSubgroups: return "NumEnqueuedSubgroups"; case BuiltIn::SubgroupId: return "SubgroupId"; case BuiltIn::SubgroupLocalInvocationId: return "SubgroupLocalInvocationId"; case BuiltIn::VertexIndex: return "VertexIndex"; case BuiltIn::InstanceIndex: return "InstanceIndex"; case BuiltIn::CoreIDARM: return "CoreIDARM"; case BuiltIn::CoreCountARM: return "CoreCountARM"; case BuiltIn::CoreMaxIDARM: return "CoreMaxIDARM"; case BuiltIn::WarpIDARM: return "WarpIDARM"; case BuiltIn::WarpMaxIDARM: return "WarpMaxIDARM"; case BuiltIn::SubgroupEqMask: return "SubgroupEqMask"; case BuiltIn::SubgroupGeMask: return "SubgroupGeMask"; case BuiltIn::SubgroupGtMask: return "SubgroupGtMask"; case BuiltIn::SubgroupLeMask: return "SubgroupLeMask"; case BuiltIn::SubgroupLtMask: return "SubgroupLtMask"; case BuiltIn::BaseVertex: return "BaseVertex"; case BuiltIn::BaseInstance: return "BaseInstance"; case BuiltIn::DrawIndex: return "DrawIndex"; case BuiltIn::PrimitiveShadingRateKHR: return "PrimitiveShadingRateKHR"; case BuiltIn::DeviceIndex: return "DeviceIndex"; case BuiltIn::ViewIndex: return "ViewIndex"; case BuiltIn::ShadingRateKHR: return "ShadingRateKHR"; case BuiltIn::TileOffsetQCOM: return "TileOffsetQCOM"; case BuiltIn::TileDimensionQCOM: return "TileDimensionQCOM"; case BuiltIn::TileApronSizeQCOM: return "TileApronSizeQCOM"; case BuiltIn::BaryCoordNoPerspAMD: return "BaryCoordNoPerspAMD"; case BuiltIn::BaryCoordNoPerspCentroidAMD: return "BaryCoordNoPerspCentroidAMD"; case BuiltIn::BaryCoordNoPerspSampleAMD: return "BaryCoordNoPerspSampleAMD"; case BuiltIn::BaryCoordSmoothAMD: return "BaryCoordSmoothAMD"; case BuiltIn::BaryCoordSmoothCentroidAMD: return "BaryCoordSmoothCentroidAMD"; case BuiltIn::BaryCoordSmoothSampleAMD: return "BaryCoordSmoothSampleAMD"; case BuiltIn::BaryCoordPullModelAMD: return "BaryCoordPullModelAMD"; case BuiltIn::FragStencilRefEXT: return "FragStencilRefEXT"; case BuiltIn::RemainingRecursionLevelsAMDX: return "RemainingRecursionLevelsAMDX"; case BuiltIn::ShaderIndexAMDX: return "ShaderIndexAMDX"; case BuiltIn::ViewportMaskNV: return "ViewportMaskNV"; case BuiltIn::SecondaryPositionNV: return "SecondaryPositionNV"; case BuiltIn::SecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; case BuiltIn::PositionPerViewNV: return "PositionPerViewNV"; case BuiltIn::ViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; case BuiltIn::FullyCoveredEXT: return "FullyCoveredEXT"; case BuiltIn::TaskCountNV: return "TaskCountNV"; case BuiltIn::PrimitiveCountNV: return "PrimitiveCountNV"; case BuiltIn::PrimitiveIndicesNV: return "PrimitiveIndicesNV"; case BuiltIn::ClipDistancePerViewNV: return "ClipDistancePerViewNV"; case BuiltIn::CullDistancePerViewNV: return "CullDistancePerViewNV"; case BuiltIn::LayerPerViewNV: return "LayerPerViewNV"; case BuiltIn::MeshViewCountNV: return "MeshViewCountNV"; case BuiltIn::MeshViewIndicesNV: return "MeshViewIndicesNV"; case BuiltIn::BaryCoordKHR: return "BaryCoordKHR"; case BuiltIn::BaryCoordNoPerspKHR: return "BaryCoordNoPerspKHR"; case BuiltIn::FragSizeEXT: return "FragSizeEXT"; case BuiltIn::FragInvocationCountEXT: return "FragInvocationCountEXT"; case BuiltIn::PrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT"; case BuiltIn::PrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; case BuiltIn::PrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; case BuiltIn::CullPrimitiveEXT: return "CullPrimitiveEXT"; case BuiltIn::LaunchIdKHR: return "LaunchIdKHR"; case BuiltIn::LaunchSizeKHR: return "LaunchSizeKHR"; case BuiltIn::WorldRayOriginKHR: return "WorldRayOriginKHR"; case BuiltIn::WorldRayDirectionKHR: return "WorldRayDirectionKHR"; case BuiltIn::ObjectRayOriginKHR: return "ObjectRayOriginKHR"; case BuiltIn::ObjectRayDirectionKHR: return "ObjectRayDirectionKHR"; case BuiltIn::RayTminKHR: return "RayTminKHR"; case BuiltIn::RayTmaxKHR: return "RayTmaxKHR"; case BuiltIn::InstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; case BuiltIn::ObjectToWorldKHR: return "ObjectToWorldKHR"; case BuiltIn::WorldToObjectKHR: return "WorldToObjectKHR"; case BuiltIn::HitTNV: return "HitTNV"; case BuiltIn::HitKindKHR: return "HitKindKHR"; case BuiltIn::CurrentRayTimeNV: return "CurrentRayTimeNV"; case BuiltIn::HitTriangleVertexPositionsKHR: return "HitTriangleVertexPositionsKHR"; case BuiltIn::HitMicroTriangleVertexPositionsNV: return "HitMicroTriangleVertexPositionsNV"; case BuiltIn::HitMicroTriangleVertexBarycentricsNV: return "HitMicroTriangleVertexBarycentricsNV"; case BuiltIn::IncomingRayFlagsKHR: return "IncomingRayFlagsKHR"; case BuiltIn::RayGeometryIndexKHR: return "RayGeometryIndexKHR"; case BuiltIn::HitIsSphereNV: return "HitIsSphereNV"; case BuiltIn::HitIsLSSNV: return "HitIsLSSNV"; case BuiltIn::HitSpherePositionNV: return "HitSpherePositionNV"; case BuiltIn::WarpsPerSMNV: return "WarpsPerSMNV"; case BuiltIn::SMCountNV: return "SMCountNV"; case BuiltIn::WarpIDNV: return "WarpIDNV"; case BuiltIn::SMIDNV: return "SMIDNV"; case BuiltIn::HitLSSPositionsNV: return "HitLSSPositionsNV"; case BuiltIn::HitKindFrontFacingMicroTriangleNV: return "HitKindFrontFacingMicroTriangleNV"; case BuiltIn::HitKindBackFacingMicroTriangleNV: return "HitKindBackFacingMicroTriangleNV"; case BuiltIn::HitSphereRadiusNV: return "HitSphereRadiusNV"; case BuiltIn::HitLSSRadiiNV: return "HitLSSRadiiNV"; case BuiltIn::ClusterIDNV: return "ClusterIDNV"; case BuiltIn::CullMaskKHR: return "CullMaskKHR"; default: return "Unknown"; } } inline const char* ScopeToString(Scope value) { switch (value) { case Scope::CrossDevice: return "CrossDevice"; case Scope::Device: return "Device"; case Scope::Workgroup: return "Workgroup"; case Scope::Subgroup: return "Subgroup"; case Scope::Invocation: return "Invocation"; case Scope::QueueFamily: return "QueueFamily"; case Scope::ShaderCallKHR: return "ShaderCallKHR"; default: return "Unknown"; } } inline const char* GroupOperationToString(GroupOperation value) { switch (value) { case GroupOperation::Reduce: return "Reduce"; case GroupOperation::InclusiveScan: return "InclusiveScan"; case GroupOperation::ExclusiveScan: return "ExclusiveScan"; case GroupOperation::ClusteredReduce: return "ClusteredReduce"; case GroupOperation::PartitionedReduceNV: return "PartitionedReduceNV"; case GroupOperation::PartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV"; case GroupOperation::PartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV"; default: return "Unknown"; } } inline const char* KernelEnqueueFlagsToString(KernelEnqueueFlags value) { switch (value) { case KernelEnqueueFlags::NoWait: return "NoWait"; case KernelEnqueueFlags::WaitKernel: return "WaitKernel"; case KernelEnqueueFlags::WaitWorkGroup: return "WaitWorkGroup"; default: return "Unknown"; } } inline const char* CapabilityToString(Capability value) { switch (value) { case Capability::Matrix: return "Matrix"; case Capability::Shader: return "Shader"; case Capability::Geometry: return "Geometry"; case Capability::Tessellation: return "Tessellation"; case Capability::Addresses: return "Addresses"; case Capability::Linkage: return "Linkage"; case Capability::Kernel: return "Kernel"; case Capability::Vector16: return "Vector16"; case Capability::Float16Buffer: return "Float16Buffer"; case Capability::Float16: return "Float16"; case Capability::Float64: return "Float64"; case Capability::Int64: return "Int64"; case Capability::Int64Atomics: return "Int64Atomics"; case Capability::ImageBasic: return "ImageBasic"; case Capability::ImageReadWrite: return "ImageReadWrite"; case Capability::ImageMipmap: return "ImageMipmap"; case Capability::Pipes: return "Pipes"; case Capability::Groups: return "Groups"; case Capability::DeviceEnqueue: return "DeviceEnqueue"; case Capability::LiteralSampler: return "LiteralSampler"; case Capability::AtomicStorage: return "AtomicStorage"; case Capability::Int16: return "Int16"; case Capability::TessellationPointSize: return "TessellationPointSize"; case Capability::GeometryPointSize: return "GeometryPointSize"; case Capability::ImageGatherExtended: return "ImageGatherExtended"; case Capability::StorageImageMultisample: return "StorageImageMultisample"; case Capability::UniformBufferArrayDynamicIndexing: return "UniformBufferArrayDynamicIndexing"; case Capability::SampledImageArrayDynamicIndexing: return "SampledImageArrayDynamicIndexing"; case Capability::StorageBufferArrayDynamicIndexing: return "StorageBufferArrayDynamicIndexing"; case Capability::StorageImageArrayDynamicIndexing: return "StorageImageArrayDynamicIndexing"; case Capability::ClipDistance: return "ClipDistance"; case Capability::CullDistance: return "CullDistance"; case Capability::ImageCubeArray: return "ImageCubeArray"; case Capability::SampleRateShading: return "SampleRateShading"; case Capability::ImageRect: return "ImageRect"; case Capability::SampledRect: return "SampledRect"; case Capability::GenericPointer: return "GenericPointer"; case Capability::Int8: return "Int8"; case Capability::InputAttachment: return "InputAttachment"; case Capability::SparseResidency: return "SparseResidency"; case Capability::MinLod: return "MinLod"; case Capability::Sampled1D: return "Sampled1D"; case Capability::Image1D: return "Image1D"; case Capability::SampledCubeArray: return "SampledCubeArray"; case Capability::SampledBuffer: return "SampledBuffer"; case Capability::ImageBuffer: return "ImageBuffer"; case Capability::ImageMSArray: return "ImageMSArray"; case Capability::StorageImageExtendedFormats: return "StorageImageExtendedFormats"; case Capability::ImageQuery: return "ImageQuery"; case Capability::DerivativeControl: return "DerivativeControl"; case Capability::InterpolationFunction: return "InterpolationFunction"; case Capability::TransformFeedback: return "TransformFeedback"; case Capability::GeometryStreams: return "GeometryStreams"; case Capability::StorageImageReadWithoutFormat: return "StorageImageReadWithoutFormat"; case Capability::StorageImageWriteWithoutFormat: return "StorageImageWriteWithoutFormat"; case Capability::MultiViewport: return "MultiViewport"; case Capability::SubgroupDispatch: return "SubgroupDispatch"; case Capability::NamedBarrier: return "NamedBarrier"; case Capability::PipeStorage: return "PipeStorage"; case Capability::GroupNonUniform: return "GroupNonUniform"; case Capability::GroupNonUniformVote: return "GroupNonUniformVote"; case Capability::GroupNonUniformArithmetic: return "GroupNonUniformArithmetic"; case Capability::GroupNonUniformBallot: return "GroupNonUniformBallot"; case Capability::GroupNonUniformShuffle: return "GroupNonUniformShuffle"; case Capability::GroupNonUniformShuffleRelative: return "GroupNonUniformShuffleRelative"; case Capability::GroupNonUniformClustered: return "GroupNonUniformClustered"; case Capability::GroupNonUniformQuad: return "GroupNonUniformQuad"; case Capability::ShaderLayer: return "ShaderLayer"; case Capability::ShaderViewportIndex: return "ShaderViewportIndex"; case Capability::UniformDecoration: return "UniformDecoration"; case Capability::CoreBuiltinsARM: return "CoreBuiltinsARM"; case Capability::TileImageColorReadAccessEXT: return "TileImageColorReadAccessEXT"; case Capability::TileImageDepthReadAccessEXT: return "TileImageDepthReadAccessEXT"; case Capability::TileImageStencilReadAccessEXT: return "TileImageStencilReadAccessEXT"; case Capability::TensorsARM: return "TensorsARM"; case Capability::CooperativeMatrixLayoutsARM: return "CooperativeMatrixLayoutsARM"; case Capability::Float8EXT: return "Float8EXT"; case Capability::Float8CooperativeMatrixEXT: return "Float8CooperativeMatrixEXT"; case Capability::FragmentShadingRateKHR: return "FragmentShadingRateKHR"; case Capability::SubgroupBallotKHR: return "SubgroupBallotKHR"; case Capability::DrawParameters: return "DrawParameters"; case Capability::WorkgroupMemoryExplicitLayoutKHR: return "WorkgroupMemoryExplicitLayoutKHR"; case Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR: return "WorkgroupMemoryExplicitLayout8BitAccessKHR"; case Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR: return "WorkgroupMemoryExplicitLayout16BitAccessKHR"; case Capability::SubgroupVoteKHR: return "SubgroupVoteKHR"; case Capability::StorageBuffer16BitAccess: return "StorageBuffer16BitAccess"; case Capability::StorageUniform16: return "StorageUniform16"; case Capability::StoragePushConstant16: return "StoragePushConstant16"; case Capability::StorageInputOutput16: return "StorageInputOutput16"; case Capability::DeviceGroup: return "DeviceGroup"; case Capability::MultiView: return "MultiView"; case Capability::VariablePointersStorageBuffer: return "VariablePointersStorageBuffer"; case Capability::VariablePointers: return "VariablePointers"; case Capability::AtomicStorageOps: return "AtomicStorageOps"; case Capability::SampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage"; case Capability::StorageBuffer8BitAccess: return "StorageBuffer8BitAccess"; case Capability::UniformAndStorageBuffer8BitAccess: return "UniformAndStorageBuffer8BitAccess"; case Capability::StoragePushConstant8: return "StoragePushConstant8"; case Capability::DenormPreserve: return "DenormPreserve"; case Capability::DenormFlushToZero: return "DenormFlushToZero"; case Capability::SignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; case Capability::RoundingModeRTE: return "RoundingModeRTE"; case Capability::RoundingModeRTZ: return "RoundingModeRTZ"; case Capability::RayQueryProvisionalKHR: return "RayQueryProvisionalKHR"; case Capability::RayQueryKHR: return "RayQueryKHR"; case Capability::UntypedPointersKHR: return "UntypedPointersKHR"; case Capability::RayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; case Capability::RayTracingKHR: return "RayTracingKHR"; case Capability::TextureSampleWeightedQCOM: return "TextureSampleWeightedQCOM"; case Capability::TextureBoxFilterQCOM: return "TextureBoxFilterQCOM"; case Capability::TextureBlockMatchQCOM: return "TextureBlockMatchQCOM"; case Capability::TileShadingQCOM: return "TileShadingQCOM"; case Capability::CooperativeMatrixConversionQCOM: return "CooperativeMatrixConversionQCOM"; case Capability::TextureBlockMatch2QCOM: return "TextureBlockMatch2QCOM"; case Capability::Float16ImageAMD: return "Float16ImageAMD"; case Capability::ImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD"; case Capability::FragmentMaskAMD: return "FragmentMaskAMD"; case Capability::StencilExportEXT: return "StencilExportEXT"; case Capability::ImageReadWriteLodAMD: return "ImageReadWriteLodAMD"; case Capability::Int64ImageEXT: return "Int64ImageEXT"; case Capability::ShaderClockKHR: return "ShaderClockKHR"; case Capability::ShaderEnqueueAMDX: return "ShaderEnqueueAMDX"; case Capability::QuadControlKHR: return "QuadControlKHR"; case Capability::BFloat16TypeKHR: return "BFloat16TypeKHR"; case Capability::BFloat16DotProductKHR: return "BFloat16DotProductKHR"; case Capability::BFloat16CooperativeMatrixKHR: return "BFloat16CooperativeMatrixKHR"; case Capability::SampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; case Capability::GeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; case Capability::ShaderViewportIndexLayerEXT: return "ShaderViewportIndexLayerEXT"; case Capability::ShaderViewportMaskNV: return "ShaderViewportMaskNV"; case Capability::ShaderStereoViewNV: return "ShaderStereoViewNV"; case Capability::PerViewAttributesNV: return "PerViewAttributesNV"; case Capability::FragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT"; case Capability::MeshShadingNV: return "MeshShadingNV"; case Capability::ImageFootprintNV: return "ImageFootprintNV"; case Capability::MeshShadingEXT: return "MeshShadingEXT"; case Capability::FragmentBarycentricKHR: return "FragmentBarycentricKHR"; case Capability::ComputeDerivativeGroupQuadsKHR: return "ComputeDerivativeGroupQuadsKHR"; case Capability::FragmentDensityEXT: return "FragmentDensityEXT"; case Capability::GroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; case Capability::ShaderNonUniform: return "ShaderNonUniform"; case Capability::RuntimeDescriptorArray: return "RuntimeDescriptorArray"; case Capability::InputAttachmentArrayDynamicIndexing: return "InputAttachmentArrayDynamicIndexing"; case Capability::UniformTexelBufferArrayDynamicIndexing: return "UniformTexelBufferArrayDynamicIndexing"; case Capability::StorageTexelBufferArrayDynamicIndexing: return "StorageTexelBufferArrayDynamicIndexing"; case Capability::UniformBufferArrayNonUniformIndexing: return "UniformBufferArrayNonUniformIndexing"; case Capability::SampledImageArrayNonUniformIndexing: return "SampledImageArrayNonUniformIndexing"; case Capability::StorageBufferArrayNonUniformIndexing: return "StorageBufferArrayNonUniformIndexing"; case Capability::StorageImageArrayNonUniformIndexing: return "StorageImageArrayNonUniformIndexing"; case Capability::InputAttachmentArrayNonUniformIndexing: return "InputAttachmentArrayNonUniformIndexing"; case Capability::UniformTexelBufferArrayNonUniformIndexing: return "UniformTexelBufferArrayNonUniformIndexing"; case Capability::StorageTexelBufferArrayNonUniformIndexing: return "StorageTexelBufferArrayNonUniformIndexing"; case Capability::RayTracingPositionFetchKHR: return "RayTracingPositionFetchKHR"; case Capability::RayTracingNV: return "RayTracingNV"; case Capability::RayTracingMotionBlurNV: return "RayTracingMotionBlurNV"; case Capability::VulkanMemoryModel: return "VulkanMemoryModel"; case Capability::VulkanMemoryModelDeviceScope: return "VulkanMemoryModelDeviceScope"; case Capability::PhysicalStorageBufferAddresses: return "PhysicalStorageBufferAddresses"; case Capability::ComputeDerivativeGroupLinearKHR: return "ComputeDerivativeGroupLinearKHR"; case Capability::RayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; case Capability::CooperativeMatrixNV: return "CooperativeMatrixNV"; case Capability::FragmentShaderSampleInterlockEXT: return "FragmentShaderSampleInterlockEXT"; case Capability::FragmentShaderShadingRateInterlockEXT: return "FragmentShaderShadingRateInterlockEXT"; case Capability::ShaderSMBuiltinsNV: return "ShaderSMBuiltinsNV"; case Capability::FragmentShaderPixelInterlockEXT: return "FragmentShaderPixelInterlockEXT"; case Capability::DemoteToHelperInvocation: return "DemoteToHelperInvocation"; case Capability::DisplacementMicromapNV: return "DisplacementMicromapNV"; case Capability::RayTracingOpacityMicromapEXT: return "RayTracingOpacityMicromapEXT"; case Capability::ShaderInvocationReorderNV: return "ShaderInvocationReorderNV"; case Capability::BindlessTextureNV: return "BindlessTextureNV"; case Capability::RayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR"; case Capability::CooperativeVectorNV: return "CooperativeVectorNV"; case Capability::AtomicFloat16VectorNV: return "AtomicFloat16VectorNV"; case Capability::RayTracingDisplacementMicromapNV: return "RayTracingDisplacementMicromapNV"; case Capability::RawAccessChainsNV: return "RawAccessChainsNV"; case Capability::RayTracingSpheresGeometryNV: return "RayTracingSpheresGeometryNV"; case Capability::RayTracingLinearSweptSpheresGeometryNV: return "RayTracingLinearSweptSpheresGeometryNV"; case Capability::CooperativeMatrixReductionsNV: return "CooperativeMatrixReductionsNV"; case Capability::CooperativeMatrixConversionsNV: return "CooperativeMatrixConversionsNV"; case Capability::CooperativeMatrixPerElementOperationsNV: return "CooperativeMatrixPerElementOperationsNV"; case Capability::CooperativeMatrixTensorAddressingNV: return "CooperativeMatrixTensorAddressingNV"; case Capability::CooperativeMatrixBlockLoadsNV: return "CooperativeMatrixBlockLoadsNV"; case Capability::CooperativeVectorTrainingNV: return "CooperativeVectorTrainingNV"; case Capability::RayTracingClusterAccelerationStructureNV: return "RayTracingClusterAccelerationStructureNV"; case Capability::TensorAddressingNV: return "TensorAddressingNV"; case Capability::SubgroupShuffleINTEL: return "SubgroupShuffleINTEL"; case Capability::SubgroupBufferBlockIOINTEL: return "SubgroupBufferBlockIOINTEL"; case Capability::SubgroupImageBlockIOINTEL: return "SubgroupImageBlockIOINTEL"; case Capability::SubgroupImageMediaBlockIOINTEL: return "SubgroupImageMediaBlockIOINTEL"; case Capability::RoundToInfinityINTEL: return "RoundToInfinityINTEL"; case Capability::FloatingPointModeINTEL: return "FloatingPointModeINTEL"; case Capability::IntegerFunctions2INTEL: return "IntegerFunctions2INTEL"; case Capability::FunctionPointersINTEL: return "FunctionPointersINTEL"; case Capability::IndirectReferencesINTEL: return "IndirectReferencesINTEL"; case Capability::AsmINTEL: return "AsmINTEL"; case Capability::AtomicFloat32MinMaxEXT: return "AtomicFloat32MinMaxEXT"; case Capability::AtomicFloat64MinMaxEXT: return "AtomicFloat64MinMaxEXT"; case Capability::AtomicFloat16MinMaxEXT: return "AtomicFloat16MinMaxEXT"; case Capability::VectorComputeINTEL: return "VectorComputeINTEL"; case Capability::VectorAnyINTEL: return "VectorAnyINTEL"; case Capability::ExpectAssumeKHR: return "ExpectAssumeKHR"; case Capability::SubgroupAvcMotionEstimationINTEL: return "SubgroupAvcMotionEstimationINTEL"; case Capability::SubgroupAvcMotionEstimationIntraINTEL: return "SubgroupAvcMotionEstimationIntraINTEL"; case Capability::SubgroupAvcMotionEstimationChromaINTEL: return "SubgroupAvcMotionEstimationChromaINTEL"; case Capability::VariableLengthArrayINTEL: return "VariableLengthArrayINTEL"; case Capability::FunctionFloatControlINTEL: return "FunctionFloatControlINTEL"; case Capability::FPGAMemoryAttributesINTEL: return "FPGAMemoryAttributesINTEL"; case Capability::FPFastMathModeINTEL: return "FPFastMathModeINTEL"; case Capability::ArbitraryPrecisionIntegersINTEL: return "ArbitraryPrecisionIntegersINTEL"; case Capability::ArbitraryPrecisionFloatingPointINTEL: return "ArbitraryPrecisionFloatingPointINTEL"; case Capability::UnstructuredLoopControlsINTEL: return "UnstructuredLoopControlsINTEL"; case Capability::FPGALoopControlsINTEL: return "FPGALoopControlsINTEL"; case Capability::KernelAttributesINTEL: return "KernelAttributesINTEL"; case Capability::FPGAKernelAttributesINTEL: return "FPGAKernelAttributesINTEL"; case Capability::FPGAMemoryAccessesINTEL: return "FPGAMemoryAccessesINTEL"; case Capability::FPGAClusterAttributesINTEL: return "FPGAClusterAttributesINTEL"; case Capability::LoopFuseINTEL: return "LoopFuseINTEL"; case Capability::FPGADSPControlINTEL: return "FPGADSPControlINTEL"; case Capability::MemoryAccessAliasingINTEL: return "MemoryAccessAliasingINTEL"; case Capability::FPGAInvocationPipeliningAttributesINTEL: return "FPGAInvocationPipeliningAttributesINTEL"; case Capability::FPGABufferLocationINTEL: return "FPGABufferLocationINTEL"; case Capability::ArbitraryPrecisionFixedPointINTEL: return "ArbitraryPrecisionFixedPointINTEL"; case Capability::USMStorageClassesINTEL: return "USMStorageClassesINTEL"; case Capability::RuntimeAlignedAttributeINTEL: return "RuntimeAlignedAttributeINTEL"; case Capability::IOPipesINTEL: return "IOPipesINTEL"; case Capability::BlockingPipesINTEL: return "BlockingPipesINTEL"; case Capability::FPGARegINTEL: return "FPGARegINTEL"; case Capability::DotProductInputAll: return "DotProductInputAll"; case Capability::DotProductInput4x8Bit: return "DotProductInput4x8Bit"; case Capability::DotProductInput4x8BitPacked: return "DotProductInput4x8BitPacked"; case Capability::DotProduct: return "DotProduct"; case Capability::RayCullMaskKHR: return "RayCullMaskKHR"; case Capability::CooperativeMatrixKHR: return "CooperativeMatrixKHR"; case Capability::ReplicatedCompositesEXT: return "ReplicatedCompositesEXT"; case Capability::BitInstructions: return "BitInstructions"; case Capability::GroupNonUniformRotateKHR: return "GroupNonUniformRotateKHR"; case Capability::FloatControls2: return "FloatControls2"; case Capability::AtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; case Capability::AtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; case Capability::LongCompositesINTEL: return "LongCompositesINTEL"; case Capability::OptNoneEXT: return "OptNoneEXT"; case Capability::AtomicFloat16AddEXT: return "AtomicFloat16AddEXT"; case Capability::DebugInfoModuleINTEL: return "DebugInfoModuleINTEL"; case Capability::BFloat16ConversionINTEL: return "BFloat16ConversionINTEL"; case Capability::SplitBarrierINTEL: return "SplitBarrierINTEL"; case Capability::ArithmeticFenceEXT: return "ArithmeticFenceEXT"; case Capability::FPGAClusterAttributesV2INTEL: return "FPGAClusterAttributesV2INTEL"; case Capability::FPGAKernelAttributesv2INTEL: return "FPGAKernelAttributesv2INTEL"; case Capability::FPMaxErrorINTEL: return "FPMaxErrorINTEL"; case Capability::FPGALatencyControlINTEL: return "FPGALatencyControlINTEL"; case Capability::FPGAArgumentInterfacesINTEL: return "FPGAArgumentInterfacesINTEL"; case Capability::GlobalVariableHostAccessINTEL: return "GlobalVariableHostAccessINTEL"; case Capability::GlobalVariableFPGADecorationsINTEL: return "GlobalVariableFPGADecorationsINTEL"; case Capability::SubgroupBufferPrefetchINTEL: return "SubgroupBufferPrefetchINTEL"; case Capability::Subgroup2DBlockIOINTEL: return "Subgroup2DBlockIOINTEL"; case Capability::Subgroup2DBlockTransformINTEL: return "Subgroup2DBlockTransformINTEL"; case Capability::Subgroup2DBlockTransposeINTEL: return "Subgroup2DBlockTransposeINTEL"; case Capability::SubgroupMatrixMultiplyAccumulateINTEL: return "SubgroupMatrixMultiplyAccumulateINTEL"; case Capability::GroupUniformArithmeticKHR: return "GroupUniformArithmeticKHR"; case Capability::MaskedGatherScatterINTEL: return "MaskedGatherScatterINTEL"; case Capability::CacheControlsINTEL: return "CacheControlsINTEL"; case Capability::RegisterLimitsINTEL: return "RegisterLimitsINTEL"; default: return "Unknown"; } } inline const char* RayQueryIntersectionToString(RayQueryIntersection value) { switch (value) { case RayQueryIntersection::RayQueryCandidateIntersectionKHR: return "RayQueryCandidateIntersectionKHR"; case RayQueryIntersection::RayQueryCommittedIntersectionKHR: return "RayQueryCommittedIntersectionKHR"; default: return "Unknown"; } } inline const char* RayQueryCommittedIntersectionTypeToString(RayQueryCommittedIntersectionType value) { switch (value) { case RayQueryCommittedIntersectionType::RayQueryCommittedIntersectionNoneKHR: return "RayQueryCommittedIntersectionNoneKHR"; case RayQueryCommittedIntersectionType::RayQueryCommittedIntersectionTriangleKHR: return "RayQueryCommittedIntersectionTriangleKHR"; case RayQueryCommittedIntersectionType::RayQueryCommittedIntersectionGeneratedKHR: return "RayQueryCommittedIntersectionGeneratedKHR"; default: return "Unknown"; } } inline const char* RayQueryCandidateIntersectionTypeToString(RayQueryCandidateIntersectionType value) { switch (value) { case RayQueryCandidateIntersectionType::RayQueryCandidateIntersectionTriangleKHR: return "RayQueryCandidateIntersectionTriangleKHR"; case RayQueryCandidateIntersectionType::RayQueryCandidateIntersectionAABBKHR: return "RayQueryCandidateIntersectionAABBKHR"; default: return "Unknown"; } } inline const char* FPDenormModeToString(FPDenormMode value) { switch (value) { case FPDenormMode::Preserve: return "Preserve"; case FPDenormMode::FlushToZero: return "FlushToZero"; default: return "Unknown"; } } inline const char* FPOperationModeToString(FPOperationMode value) { switch (value) { case FPOperationMode::IEEE: return "IEEE"; case FPOperationMode::ALT: return "ALT"; default: return "Unknown"; } } inline const char* QuantizationModesToString(QuantizationModes value) { switch (value) { case QuantizationModes::TRN: return "TRN"; case QuantizationModes::TRN_ZERO: return "TRN_ZERO"; case QuantizationModes::RND: return "RND"; case QuantizationModes::RND_ZERO: return "RND_ZERO"; case QuantizationModes::RND_INF: return "RND_INF"; case QuantizationModes::RND_MIN_INF: return "RND_MIN_INF"; case QuantizationModes::RND_CONV: return "RND_CONV"; case QuantizationModes::RND_CONV_ODD: return "RND_CONV_ODD"; default: return "Unknown"; } } inline const char* OverflowModesToString(OverflowModes value) { switch (value) { case OverflowModes::WRAP: return "WRAP"; case OverflowModes::SAT: return "SAT"; case OverflowModes::SAT_ZERO: return "SAT_ZERO"; case OverflowModes::SAT_SYM: return "SAT_SYM"; default: return "Unknown"; } } inline const char* PackedVectorFormatToString(PackedVectorFormat value) { switch (value) { case PackedVectorFormat::PackedVectorFormat4x8Bit: return "PackedVectorFormat4x8Bit"; default: return "Unknown"; } } inline const char* CooperativeMatrixLayoutToString(CooperativeMatrixLayout value) { switch (value) { case CooperativeMatrixLayout::RowMajorKHR: return "RowMajorKHR"; case CooperativeMatrixLayout::ColumnMajorKHR: return "ColumnMajorKHR"; case CooperativeMatrixLayout::RowBlockedInterleavedARM: return "RowBlockedInterleavedARM"; case CooperativeMatrixLayout::ColumnBlockedInterleavedARM: return "ColumnBlockedInterleavedARM"; default: return "Unknown"; } } inline const char* CooperativeMatrixUseToString(CooperativeMatrixUse value) { switch (value) { case CooperativeMatrixUse::MatrixAKHR: return "MatrixAKHR"; case CooperativeMatrixUse::MatrixBKHR: return "MatrixBKHR"; case CooperativeMatrixUse::MatrixAccumulatorKHR: return "MatrixAccumulatorKHR"; default: return "Unknown"; } } inline const char* TensorClampModeToString(TensorClampMode value) { switch (value) { case TensorClampMode::Undefined: return "Undefined"; case TensorClampMode::Constant: return "Constant"; case TensorClampMode::ClampToEdge: return "ClampToEdge"; case TensorClampMode::Repeat: return "Repeat"; case TensorClampMode::RepeatMirrored: return "RepeatMirrored"; default: return "Unknown"; } } inline const char* InitializationModeQualifierToString(InitializationModeQualifier value) { switch (value) { case InitializationModeQualifier::InitOnDeviceReprogramINTEL: return "InitOnDeviceReprogramINTEL"; case InitializationModeQualifier::InitOnDeviceResetINTEL: return "InitOnDeviceResetINTEL"; default: return "Unknown"; } } inline const char* HostAccessQualifierToString(HostAccessQualifier value) { switch (value) { case HostAccessQualifier::NoneINTEL: return "NoneINTEL"; case HostAccessQualifier::ReadINTEL: return "ReadINTEL"; case HostAccessQualifier::WriteINTEL: return "WriteINTEL"; case HostAccessQualifier::ReadWriteINTEL: return "ReadWriteINTEL"; default: return "Unknown"; } } inline const char* LoadCacheControlToString(LoadCacheControl value) { switch (value) { case LoadCacheControl::UncachedINTEL: return "UncachedINTEL"; case LoadCacheControl::CachedINTEL: return "CachedINTEL"; case LoadCacheControl::StreamingINTEL: return "StreamingINTEL"; case LoadCacheControl::InvalidateAfterReadINTEL: return "InvalidateAfterReadINTEL"; case LoadCacheControl::ConstCachedINTEL: return "ConstCachedINTEL"; default: return "Unknown"; } } inline const char* StoreCacheControlToString(StoreCacheControl value) { switch (value) { case StoreCacheControl::UncachedINTEL: return "UncachedINTEL"; case StoreCacheControl::WriteThroughINTEL: return "WriteThroughINTEL"; case StoreCacheControl::WriteBackINTEL: return "WriteBackINTEL"; case StoreCacheControl::StreamingINTEL: return "StreamingINTEL"; default: return "Unknown"; } } inline const char* NamedMaximumNumberOfRegistersToString(NamedMaximumNumberOfRegisters value) { switch (value) { case NamedMaximumNumberOfRegisters::AutoINTEL: return "AutoINTEL"; default: return "Unknown"; } } inline const char* FPEncodingToString(FPEncoding value) { switch (value) { case FPEncoding::BFloat16KHR: return "BFloat16KHR"; case FPEncoding::Float8E4M3EXT: return "Float8E4M3EXT"; case FPEncoding::Float8E5M2EXT: return "Float8E5M2EXT"; default: return "Unknown"; } } inline const char* CooperativeVectorMatrixLayoutToString(CooperativeVectorMatrixLayout value) { switch (value) { case CooperativeVectorMatrixLayout::RowMajorNV: return "RowMajorNV"; case CooperativeVectorMatrixLayout::ColumnMajorNV: return "ColumnMajorNV"; case CooperativeVectorMatrixLayout::InferencingOptimalNV: return "InferencingOptimalNV"; case CooperativeVectorMatrixLayout::TrainingOptimalNV: return "TrainingOptimalNV"; default: return "Unknown"; } } inline const char* ComponentTypeToString(ComponentType value) { switch (value) { case ComponentType::Float16NV: return "Float16NV"; case ComponentType::Float32NV: return "Float32NV"; case ComponentType::Float64NV: return "Float64NV"; case ComponentType::SignedInt8NV: return "SignedInt8NV"; case ComponentType::SignedInt16NV: return "SignedInt16NV"; case ComponentType::SignedInt32NV: return "SignedInt32NV"; case ComponentType::SignedInt64NV: return "SignedInt64NV"; case ComponentType::UnsignedInt8NV: return "UnsignedInt8NV"; case ComponentType::UnsignedInt16NV: return "UnsignedInt16NV"; case ComponentType::UnsignedInt32NV: return "UnsignedInt32NV"; case ComponentType::UnsignedInt64NV: return "UnsignedInt64NV"; case ComponentType::SignedInt8PackedNV: return "SignedInt8PackedNV"; case ComponentType::UnsignedInt8PackedNV: return "UnsignedInt8PackedNV"; case ComponentType::FloatE4M3NV: return "FloatE4M3NV"; case ComponentType::FloatE5M2NV: return "FloatE5M2NV"; default: return "Unknown"; } } inline const char* OpToString(Op value) { switch (value) { case Op::OpNop: return "OpNop"; case Op::OpUndef: return "OpUndef"; case Op::OpSourceContinued: return "OpSourceContinued"; case Op::OpSource: return "OpSource"; case Op::OpSourceExtension: return "OpSourceExtension"; case Op::OpName: return "OpName"; case Op::OpMemberName: return "OpMemberName"; case Op::OpString: return "OpString"; case Op::OpLine: return "OpLine"; case Op::OpExtension: return "OpExtension"; case Op::OpExtInstImport: return "OpExtInstImport"; case Op::OpExtInst: return "OpExtInst"; case Op::OpMemoryModel: return "OpMemoryModel"; case Op::OpEntryPoint: return "OpEntryPoint"; case Op::OpExecutionMode: return "OpExecutionMode"; case Op::OpCapability: return "OpCapability"; case Op::OpTypeVoid: return "OpTypeVoid"; case Op::OpTypeBool: return "OpTypeBool"; case Op::OpTypeInt: return "OpTypeInt"; case Op::OpTypeFloat: return "OpTypeFloat"; case Op::OpTypeVector: return "OpTypeVector"; case Op::OpTypeMatrix: return "OpTypeMatrix"; case Op::OpTypeImage: return "OpTypeImage"; case Op::OpTypeSampler: return "OpTypeSampler"; case Op::OpTypeSampledImage: return "OpTypeSampledImage"; case Op::OpTypeArray: return "OpTypeArray"; case Op::OpTypeRuntimeArray: return "OpTypeRuntimeArray"; case Op::OpTypeStruct: return "OpTypeStruct"; case Op::OpTypeOpaque: return "OpTypeOpaque"; case Op::OpTypePointer: return "OpTypePointer"; case Op::OpTypeFunction: return "OpTypeFunction"; case Op::OpTypeEvent: return "OpTypeEvent"; case Op::OpTypeDeviceEvent: return "OpTypeDeviceEvent"; case Op::OpTypeReserveId: return "OpTypeReserveId"; case Op::OpTypeQueue: return "OpTypeQueue"; case Op::OpTypePipe: return "OpTypePipe"; case Op::OpTypeForwardPointer: return "OpTypeForwardPointer"; case Op::OpConstantTrue: return "OpConstantTrue"; case Op::OpConstantFalse: return "OpConstantFalse"; case Op::OpConstant: return "OpConstant"; case Op::OpConstantComposite: return "OpConstantComposite"; case Op::OpConstantSampler: return "OpConstantSampler"; case Op::OpConstantNull: return "OpConstantNull"; case Op::OpSpecConstantTrue: return "OpSpecConstantTrue"; case Op::OpSpecConstantFalse: return "OpSpecConstantFalse"; case Op::OpSpecConstant: return "OpSpecConstant"; case Op::OpSpecConstantComposite: return "OpSpecConstantComposite"; case Op::OpSpecConstantOp: return "OpSpecConstantOp"; case Op::OpFunction: return "OpFunction"; case Op::OpFunctionParameter: return "OpFunctionParameter"; case Op::OpFunctionEnd: return "OpFunctionEnd"; case Op::OpFunctionCall: return "OpFunctionCall"; case Op::OpVariable: return "OpVariable"; case Op::OpImageTexelPointer: return "OpImageTexelPointer"; case Op::OpLoad: return "OpLoad"; case Op::OpStore: return "OpStore"; case Op::OpCopyMemory: return "OpCopyMemory"; case Op::OpCopyMemorySized: return "OpCopyMemorySized"; case Op::OpAccessChain: return "OpAccessChain"; case Op::OpInBoundsAccessChain: return "OpInBoundsAccessChain"; case Op::OpPtrAccessChain: return "OpPtrAccessChain"; case Op::OpArrayLength: return "OpArrayLength"; case Op::OpGenericPtrMemSemantics: return "OpGenericPtrMemSemantics"; case Op::OpInBoundsPtrAccessChain: return "OpInBoundsPtrAccessChain"; case Op::OpDecorate: return "OpDecorate"; case Op::OpMemberDecorate: return "OpMemberDecorate"; case Op::OpDecorationGroup: return "OpDecorationGroup"; case Op::OpGroupDecorate: return "OpGroupDecorate"; case Op::OpGroupMemberDecorate: return "OpGroupMemberDecorate"; case Op::OpVectorExtractDynamic: return "OpVectorExtractDynamic"; case Op::OpVectorInsertDynamic: return "OpVectorInsertDynamic"; case Op::OpVectorShuffle: return "OpVectorShuffle"; case Op::OpCompositeConstruct: return "OpCompositeConstruct"; case Op::OpCompositeExtract: return "OpCompositeExtract"; case Op::OpCompositeInsert: return "OpCompositeInsert"; case Op::OpCopyObject: return "OpCopyObject"; case Op::OpTranspose: return "OpTranspose"; case Op::OpSampledImage: return "OpSampledImage"; case Op::OpImageSampleImplicitLod: return "OpImageSampleImplicitLod"; case Op::OpImageSampleExplicitLod: return "OpImageSampleExplicitLod"; case Op::OpImageSampleDrefImplicitLod: return "OpImageSampleDrefImplicitLod"; case Op::OpImageSampleDrefExplicitLod: return "OpImageSampleDrefExplicitLod"; case Op::OpImageSampleProjImplicitLod: return "OpImageSampleProjImplicitLod"; case Op::OpImageSampleProjExplicitLod: return "OpImageSampleProjExplicitLod"; case Op::OpImageSampleProjDrefImplicitLod: return "OpImageSampleProjDrefImplicitLod"; case Op::OpImageSampleProjDrefExplicitLod: return "OpImageSampleProjDrefExplicitLod"; case Op::OpImageFetch: return "OpImageFetch"; case Op::OpImageGather: return "OpImageGather"; case Op::OpImageDrefGather: return "OpImageDrefGather"; case Op::OpImageRead: return "OpImageRead"; case Op::OpImageWrite: return "OpImageWrite"; case Op::OpImage: return "OpImage"; case Op::OpImageQueryFormat: return "OpImageQueryFormat"; case Op::OpImageQueryOrder: return "OpImageQueryOrder"; case Op::OpImageQuerySizeLod: return "OpImageQuerySizeLod"; case Op::OpImageQuerySize: return "OpImageQuerySize"; case Op::OpImageQueryLod: return "OpImageQueryLod"; case Op::OpImageQueryLevels: return "OpImageQueryLevels"; case Op::OpImageQuerySamples: return "OpImageQuerySamples"; case Op::OpConvertFToU: return "OpConvertFToU"; case Op::OpConvertFToS: return "OpConvertFToS"; case Op::OpConvertSToF: return "OpConvertSToF"; case Op::OpConvertUToF: return "OpConvertUToF"; case Op::OpUConvert: return "OpUConvert"; case Op::OpSConvert: return "OpSConvert"; case Op::OpFConvert: return "OpFConvert"; case Op::OpQuantizeToF16: return "OpQuantizeToF16"; case Op::OpConvertPtrToU: return "OpConvertPtrToU"; case Op::OpSatConvertSToU: return "OpSatConvertSToU"; case Op::OpSatConvertUToS: return "OpSatConvertUToS"; case Op::OpConvertUToPtr: return "OpConvertUToPtr"; case Op::OpPtrCastToGeneric: return "OpPtrCastToGeneric"; case Op::OpGenericCastToPtr: return "OpGenericCastToPtr"; case Op::OpGenericCastToPtrExplicit: return "OpGenericCastToPtrExplicit"; case Op::OpBitcast: return "OpBitcast"; case Op::OpSNegate: return "OpSNegate"; case Op::OpFNegate: return "OpFNegate"; case Op::OpIAdd: return "OpIAdd"; case Op::OpFAdd: return "OpFAdd"; case Op::OpISub: return "OpISub"; case Op::OpFSub: return "OpFSub"; case Op::OpIMul: return "OpIMul"; case Op::OpFMul: return "OpFMul"; case Op::OpUDiv: return "OpUDiv"; case Op::OpSDiv: return "OpSDiv"; case Op::OpFDiv: return "OpFDiv"; case Op::OpUMod: return "OpUMod"; case Op::OpSRem: return "OpSRem"; case Op::OpSMod: return "OpSMod"; case Op::OpFRem: return "OpFRem"; case Op::OpFMod: return "OpFMod"; case Op::OpVectorTimesScalar: return "OpVectorTimesScalar"; case Op::OpMatrixTimesScalar: return "OpMatrixTimesScalar"; case Op::OpVectorTimesMatrix: return "OpVectorTimesMatrix"; case Op::OpMatrixTimesVector: return "OpMatrixTimesVector"; case Op::OpMatrixTimesMatrix: return "OpMatrixTimesMatrix"; case Op::OpOuterProduct: return "OpOuterProduct"; case Op::OpDot: return "OpDot"; case Op::OpIAddCarry: return "OpIAddCarry"; case Op::OpISubBorrow: return "OpISubBorrow"; case Op::OpUMulExtended: return "OpUMulExtended"; case Op::OpSMulExtended: return "OpSMulExtended"; case Op::OpAny: return "OpAny"; case Op::OpAll: return "OpAll"; case Op::OpIsNan: return "OpIsNan"; case Op::OpIsInf: return "OpIsInf"; case Op::OpIsFinite: return "OpIsFinite"; case Op::OpIsNormal: return "OpIsNormal"; case Op::OpSignBitSet: return "OpSignBitSet"; case Op::OpLessOrGreater: return "OpLessOrGreater"; case Op::OpOrdered: return "OpOrdered"; case Op::OpUnordered: return "OpUnordered"; case Op::OpLogicalEqual: return "OpLogicalEqual"; case Op::OpLogicalNotEqual: return "OpLogicalNotEqual"; case Op::OpLogicalOr: return "OpLogicalOr"; case Op::OpLogicalAnd: return "OpLogicalAnd"; case Op::OpLogicalNot: return "OpLogicalNot"; case Op::OpSelect: return "OpSelect"; case Op::OpIEqual: return "OpIEqual"; case Op::OpINotEqual: return "OpINotEqual"; case Op::OpUGreaterThan: return "OpUGreaterThan"; case Op::OpSGreaterThan: return "OpSGreaterThan"; case Op::OpUGreaterThanEqual: return "OpUGreaterThanEqual"; case Op::OpSGreaterThanEqual: return "OpSGreaterThanEqual"; case Op::OpULessThan: return "OpULessThan"; case Op::OpSLessThan: return "OpSLessThan"; case Op::OpULessThanEqual: return "OpULessThanEqual"; case Op::OpSLessThanEqual: return "OpSLessThanEqual"; case Op::OpFOrdEqual: return "OpFOrdEqual"; case Op::OpFUnordEqual: return "OpFUnordEqual"; case Op::OpFOrdNotEqual: return "OpFOrdNotEqual"; case Op::OpFUnordNotEqual: return "OpFUnordNotEqual"; case Op::OpFOrdLessThan: return "OpFOrdLessThan"; case Op::OpFUnordLessThan: return "OpFUnordLessThan"; case Op::OpFOrdGreaterThan: return "OpFOrdGreaterThan"; case Op::OpFUnordGreaterThan: return "OpFUnordGreaterThan"; case Op::OpFOrdLessThanEqual: return "OpFOrdLessThanEqual"; case Op::OpFUnordLessThanEqual: return "OpFUnordLessThanEqual"; case Op::OpFOrdGreaterThanEqual: return "OpFOrdGreaterThanEqual"; case Op::OpFUnordGreaterThanEqual: return "OpFUnordGreaterThanEqual"; case Op::OpShiftRightLogical: return "OpShiftRightLogical"; case Op::OpShiftRightArithmetic: return "OpShiftRightArithmetic"; case Op::OpShiftLeftLogical: return "OpShiftLeftLogical"; case Op::OpBitwiseOr: return "OpBitwiseOr"; case Op::OpBitwiseXor: return "OpBitwiseXor"; case Op::OpBitwiseAnd: return "OpBitwiseAnd"; case Op::OpNot: return "OpNot"; case Op::OpBitFieldInsert: return "OpBitFieldInsert"; case Op::OpBitFieldSExtract: return "OpBitFieldSExtract"; case Op::OpBitFieldUExtract: return "OpBitFieldUExtract"; case Op::OpBitReverse: return "OpBitReverse"; case Op::OpBitCount: return "OpBitCount"; case Op::OpDPdx: return "OpDPdx"; case Op::OpDPdy: return "OpDPdy"; case Op::OpFwidth: return "OpFwidth"; case Op::OpDPdxFine: return "OpDPdxFine"; case Op::OpDPdyFine: return "OpDPdyFine"; case Op::OpFwidthFine: return "OpFwidthFine"; case Op::OpDPdxCoarse: return "OpDPdxCoarse"; case Op::OpDPdyCoarse: return "OpDPdyCoarse"; case Op::OpFwidthCoarse: return "OpFwidthCoarse"; case Op::OpEmitVertex: return "OpEmitVertex"; case Op::OpEndPrimitive: return "OpEndPrimitive"; case Op::OpEmitStreamVertex: return "OpEmitStreamVertex"; case Op::OpEndStreamPrimitive: return "OpEndStreamPrimitive"; case Op::OpControlBarrier: return "OpControlBarrier"; case Op::OpMemoryBarrier: return "OpMemoryBarrier"; case Op::OpAtomicLoad: return "OpAtomicLoad"; case Op::OpAtomicStore: return "OpAtomicStore"; case Op::OpAtomicExchange: return "OpAtomicExchange"; case Op::OpAtomicCompareExchange: return "OpAtomicCompareExchange"; case Op::OpAtomicCompareExchangeWeak: return "OpAtomicCompareExchangeWeak"; case Op::OpAtomicIIncrement: return "OpAtomicIIncrement"; case Op::OpAtomicIDecrement: return "OpAtomicIDecrement"; case Op::OpAtomicIAdd: return "OpAtomicIAdd"; case Op::OpAtomicISub: return "OpAtomicISub"; case Op::OpAtomicSMin: return "OpAtomicSMin"; case Op::OpAtomicUMin: return "OpAtomicUMin"; case Op::OpAtomicSMax: return "OpAtomicSMax"; case Op::OpAtomicUMax: return "OpAtomicUMax"; case Op::OpAtomicAnd: return "OpAtomicAnd"; case Op::OpAtomicOr: return "OpAtomicOr"; case Op::OpAtomicXor: return "OpAtomicXor"; case Op::OpPhi: return "OpPhi"; case Op::OpLoopMerge: return "OpLoopMerge"; case Op::OpSelectionMerge: return "OpSelectionMerge"; case Op::OpLabel: return "OpLabel"; case Op::OpBranch: return "OpBranch"; case Op::OpBranchConditional: return "OpBranchConditional"; case Op::OpSwitch: return "OpSwitch"; case Op::OpKill: return "OpKill"; case Op::OpReturn: return "OpReturn"; case Op::OpReturnValue: return "OpReturnValue"; case Op::OpUnreachable: return "OpUnreachable"; case Op::OpLifetimeStart: return "OpLifetimeStart"; case Op::OpLifetimeStop: return "OpLifetimeStop"; case Op::OpGroupAsyncCopy: return "OpGroupAsyncCopy"; case Op::OpGroupWaitEvents: return "OpGroupWaitEvents"; case Op::OpGroupAll: return "OpGroupAll"; case Op::OpGroupAny: return "OpGroupAny"; case Op::OpGroupBroadcast: return "OpGroupBroadcast"; case Op::OpGroupIAdd: return "OpGroupIAdd"; case Op::OpGroupFAdd: return "OpGroupFAdd"; case Op::OpGroupFMin: return "OpGroupFMin"; case Op::OpGroupUMin: return "OpGroupUMin"; case Op::OpGroupSMin: return "OpGroupSMin"; case Op::OpGroupFMax: return "OpGroupFMax"; case Op::OpGroupUMax: return "OpGroupUMax"; case Op::OpGroupSMax: return "OpGroupSMax"; case Op::OpReadPipe: return "OpReadPipe"; case Op::OpWritePipe: return "OpWritePipe"; case Op::OpReservedReadPipe: return "OpReservedReadPipe"; case Op::OpReservedWritePipe: return "OpReservedWritePipe"; case Op::OpReserveReadPipePackets: return "OpReserveReadPipePackets"; case Op::OpReserveWritePipePackets: return "OpReserveWritePipePackets"; case Op::OpCommitReadPipe: return "OpCommitReadPipe"; case Op::OpCommitWritePipe: return "OpCommitWritePipe"; case Op::OpIsValidReserveId: return "OpIsValidReserveId"; case Op::OpGetNumPipePackets: return "OpGetNumPipePackets"; case Op::OpGetMaxPipePackets: return "OpGetMaxPipePackets"; case Op::OpGroupReserveReadPipePackets: return "OpGroupReserveReadPipePackets"; case Op::OpGroupReserveWritePipePackets: return "OpGroupReserveWritePipePackets"; case Op::OpGroupCommitReadPipe: return "OpGroupCommitReadPipe"; case Op::OpGroupCommitWritePipe: return "OpGroupCommitWritePipe"; case Op::OpEnqueueMarker: return "OpEnqueueMarker"; case Op::OpEnqueueKernel: return "OpEnqueueKernel"; case Op::OpGetKernelNDrangeSubGroupCount: return "OpGetKernelNDrangeSubGroupCount"; case Op::OpGetKernelNDrangeMaxSubGroupSize: return "OpGetKernelNDrangeMaxSubGroupSize"; case Op::OpGetKernelWorkGroupSize: return "OpGetKernelWorkGroupSize"; case Op::OpGetKernelPreferredWorkGroupSizeMultiple: return "OpGetKernelPreferredWorkGroupSizeMultiple"; case Op::OpRetainEvent: return "OpRetainEvent"; case Op::OpReleaseEvent: return "OpReleaseEvent"; case Op::OpCreateUserEvent: return "OpCreateUserEvent"; case Op::OpIsValidEvent: return "OpIsValidEvent"; case Op::OpSetUserEventStatus: return "OpSetUserEventStatus"; case Op::OpCaptureEventProfilingInfo: return "OpCaptureEventProfilingInfo"; case Op::OpGetDefaultQueue: return "OpGetDefaultQueue"; case Op::OpBuildNDRange: return "OpBuildNDRange"; case Op::OpImageSparseSampleImplicitLod: return "OpImageSparseSampleImplicitLod"; case Op::OpImageSparseSampleExplicitLod: return "OpImageSparseSampleExplicitLod"; case Op::OpImageSparseSampleDrefImplicitLod: return "OpImageSparseSampleDrefImplicitLod"; case Op::OpImageSparseSampleDrefExplicitLod: return "OpImageSparseSampleDrefExplicitLod"; case Op::OpImageSparseSampleProjImplicitLod: return "OpImageSparseSampleProjImplicitLod"; case Op::OpImageSparseSampleProjExplicitLod: return "OpImageSparseSampleProjExplicitLod"; case Op::OpImageSparseSampleProjDrefImplicitLod: return "OpImageSparseSampleProjDrefImplicitLod"; case Op::OpImageSparseSampleProjDrefExplicitLod: return "OpImageSparseSampleProjDrefExplicitLod"; case Op::OpImageSparseFetch: return "OpImageSparseFetch"; case Op::OpImageSparseGather: return "OpImageSparseGather"; case Op::OpImageSparseDrefGather: return "OpImageSparseDrefGather"; case Op::OpImageSparseTexelsResident: return "OpImageSparseTexelsResident"; case Op::OpNoLine: return "OpNoLine"; case Op::OpAtomicFlagTestAndSet: return "OpAtomicFlagTestAndSet"; case Op::OpAtomicFlagClear: return "OpAtomicFlagClear"; case Op::OpImageSparseRead: return "OpImageSparseRead"; case Op::OpSizeOf: return "OpSizeOf"; case Op::OpTypePipeStorage: return "OpTypePipeStorage"; case Op::OpConstantPipeStorage: return "OpConstantPipeStorage"; case Op::OpCreatePipeFromPipeStorage: return "OpCreatePipeFromPipeStorage"; case Op::OpGetKernelLocalSizeForSubgroupCount: return "OpGetKernelLocalSizeForSubgroupCount"; case Op::OpGetKernelMaxNumSubgroups: return "OpGetKernelMaxNumSubgroups"; case Op::OpTypeNamedBarrier: return "OpTypeNamedBarrier"; case Op::OpNamedBarrierInitialize: return "OpNamedBarrierInitialize"; case Op::OpMemoryNamedBarrier: return "OpMemoryNamedBarrier"; case Op::OpModuleProcessed: return "OpModuleProcessed"; case Op::OpExecutionModeId: return "OpExecutionModeId"; case Op::OpDecorateId: return "OpDecorateId"; case Op::OpGroupNonUniformElect: return "OpGroupNonUniformElect"; case Op::OpGroupNonUniformAll: return "OpGroupNonUniformAll"; case Op::OpGroupNonUniformAny: return "OpGroupNonUniformAny"; case Op::OpGroupNonUniformAllEqual: return "OpGroupNonUniformAllEqual"; case Op::OpGroupNonUniformBroadcast: return "OpGroupNonUniformBroadcast"; case Op::OpGroupNonUniformBroadcastFirst: return "OpGroupNonUniformBroadcastFirst"; case Op::OpGroupNonUniformBallot: return "OpGroupNonUniformBallot"; case Op::OpGroupNonUniformInverseBallot: return "OpGroupNonUniformInverseBallot"; case Op::OpGroupNonUniformBallotBitExtract: return "OpGroupNonUniformBallotBitExtract"; case Op::OpGroupNonUniformBallotBitCount: return "OpGroupNonUniformBallotBitCount"; case Op::OpGroupNonUniformBallotFindLSB: return "OpGroupNonUniformBallotFindLSB"; case Op::OpGroupNonUniformBallotFindMSB: return "OpGroupNonUniformBallotFindMSB"; case Op::OpGroupNonUniformShuffle: return "OpGroupNonUniformShuffle"; case Op::OpGroupNonUniformShuffleXor: return "OpGroupNonUniformShuffleXor"; case Op::OpGroupNonUniformShuffleUp: return "OpGroupNonUniformShuffleUp"; case Op::OpGroupNonUniformShuffleDown: return "OpGroupNonUniformShuffleDown"; case Op::OpGroupNonUniformIAdd: return "OpGroupNonUniformIAdd"; case Op::OpGroupNonUniformFAdd: return "OpGroupNonUniformFAdd"; case Op::OpGroupNonUniformIMul: return "OpGroupNonUniformIMul"; case Op::OpGroupNonUniformFMul: return "OpGroupNonUniformFMul"; case Op::OpGroupNonUniformSMin: return "OpGroupNonUniformSMin"; case Op::OpGroupNonUniformUMin: return "OpGroupNonUniformUMin"; case Op::OpGroupNonUniformFMin: return "OpGroupNonUniformFMin"; case Op::OpGroupNonUniformSMax: return "OpGroupNonUniformSMax"; case Op::OpGroupNonUniformUMax: return "OpGroupNonUniformUMax"; case Op::OpGroupNonUniformFMax: return "OpGroupNonUniformFMax"; case Op::OpGroupNonUniformBitwiseAnd: return "OpGroupNonUniformBitwiseAnd"; case Op::OpGroupNonUniformBitwiseOr: return "OpGroupNonUniformBitwiseOr"; case Op::OpGroupNonUniformBitwiseXor: return "OpGroupNonUniformBitwiseXor"; case Op::OpGroupNonUniformLogicalAnd: return "OpGroupNonUniformLogicalAnd"; case Op::OpGroupNonUniformLogicalOr: return "OpGroupNonUniformLogicalOr"; case Op::OpGroupNonUniformLogicalXor: return "OpGroupNonUniformLogicalXor"; case Op::OpGroupNonUniformQuadBroadcast: return "OpGroupNonUniformQuadBroadcast"; case Op::OpGroupNonUniformQuadSwap: return "OpGroupNonUniformQuadSwap"; case Op::OpCopyLogical: return "OpCopyLogical"; case Op::OpPtrEqual: return "OpPtrEqual"; case Op::OpPtrNotEqual: return "OpPtrNotEqual"; case Op::OpPtrDiff: return "OpPtrDiff"; case Op::OpColorAttachmentReadEXT: return "OpColorAttachmentReadEXT"; case Op::OpDepthAttachmentReadEXT: return "OpDepthAttachmentReadEXT"; case Op::OpStencilAttachmentReadEXT: return "OpStencilAttachmentReadEXT"; case Op::OpTypeTensorARM: return "OpTypeTensorARM"; case Op::OpTensorReadARM: return "OpTensorReadARM"; case Op::OpTensorWriteARM: return "OpTensorWriteARM"; case Op::OpTensorQuerySizeARM: return "OpTensorQuerySizeARM"; case Op::OpTerminateInvocation: return "OpTerminateInvocation"; case Op::OpTypeUntypedPointerKHR: return "OpTypeUntypedPointerKHR"; case Op::OpUntypedVariableKHR: return "OpUntypedVariableKHR"; case Op::OpUntypedAccessChainKHR: return "OpUntypedAccessChainKHR"; case Op::OpUntypedInBoundsAccessChainKHR: return "OpUntypedInBoundsAccessChainKHR"; case Op::OpSubgroupBallotKHR: return "OpSubgroupBallotKHR"; case Op::OpSubgroupFirstInvocationKHR: return "OpSubgroupFirstInvocationKHR"; case Op::OpUntypedPtrAccessChainKHR: return "OpUntypedPtrAccessChainKHR"; case Op::OpUntypedInBoundsPtrAccessChainKHR: return "OpUntypedInBoundsPtrAccessChainKHR"; case Op::OpUntypedArrayLengthKHR: return "OpUntypedArrayLengthKHR"; case Op::OpUntypedPrefetchKHR: return "OpUntypedPrefetchKHR"; case Op::OpSubgroupAllKHR: return "OpSubgroupAllKHR"; case Op::OpSubgroupAnyKHR: return "OpSubgroupAnyKHR"; case Op::OpSubgroupAllEqualKHR: return "OpSubgroupAllEqualKHR"; case Op::OpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR"; case Op::OpSubgroupReadInvocationKHR: return "OpSubgroupReadInvocationKHR"; case Op::OpExtInstWithForwardRefsKHR: return "OpExtInstWithForwardRefsKHR"; case Op::OpTraceRayKHR: return "OpTraceRayKHR"; case Op::OpExecuteCallableKHR: return "OpExecuteCallableKHR"; case Op::OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; case Op::OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR"; case Op::OpTerminateRayKHR: return "OpTerminateRayKHR"; case Op::OpSDot: return "OpSDot"; case Op::OpUDot: return "OpUDot"; case Op::OpSUDot: return "OpSUDot"; case Op::OpSDotAccSat: return "OpSDotAccSat"; case Op::OpUDotAccSat: return "OpUDotAccSat"; case Op::OpSUDotAccSat: return "OpSUDotAccSat"; case Op::OpTypeCooperativeMatrixKHR: return "OpTypeCooperativeMatrixKHR"; case Op::OpCooperativeMatrixLoadKHR: return "OpCooperativeMatrixLoadKHR"; case Op::OpCooperativeMatrixStoreKHR: return "OpCooperativeMatrixStoreKHR"; case Op::OpCooperativeMatrixMulAddKHR: return "OpCooperativeMatrixMulAddKHR"; case Op::OpCooperativeMatrixLengthKHR: return "OpCooperativeMatrixLengthKHR"; case Op::OpConstantCompositeReplicateEXT: return "OpConstantCompositeReplicateEXT"; case Op::OpSpecConstantCompositeReplicateEXT: return "OpSpecConstantCompositeReplicateEXT"; case Op::OpCompositeConstructReplicateEXT: return "OpCompositeConstructReplicateEXT"; case Op::OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; case Op::OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; case Op::OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; case Op::OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR"; case Op::OpRayQueryConfirmIntersectionKHR: return "OpRayQueryConfirmIntersectionKHR"; case Op::OpRayQueryProceedKHR: return "OpRayQueryProceedKHR"; case Op::OpRayQueryGetIntersectionTypeKHR: return "OpRayQueryGetIntersectionTypeKHR"; case Op::OpImageSampleWeightedQCOM: return "OpImageSampleWeightedQCOM"; case Op::OpImageBoxFilterQCOM: return "OpImageBoxFilterQCOM"; case Op::OpImageBlockMatchSSDQCOM: return "OpImageBlockMatchSSDQCOM"; case Op::OpImageBlockMatchSADQCOM: return "OpImageBlockMatchSADQCOM"; case Op::OpBitCastArrayQCOM: return "OpBitCastArrayQCOM"; case Op::OpImageBlockMatchWindowSSDQCOM: return "OpImageBlockMatchWindowSSDQCOM"; case Op::OpImageBlockMatchWindowSADQCOM: return "OpImageBlockMatchWindowSADQCOM"; case Op::OpImageBlockMatchGatherSSDQCOM: return "OpImageBlockMatchGatherSSDQCOM"; case Op::OpImageBlockMatchGatherSADQCOM: return "OpImageBlockMatchGatherSADQCOM"; case Op::OpCompositeConstructCoopMatQCOM: return "OpCompositeConstructCoopMatQCOM"; case Op::OpCompositeExtractCoopMatQCOM: return "OpCompositeExtractCoopMatQCOM"; case Op::OpExtractSubArrayQCOM: return "OpExtractSubArrayQCOM"; case Op::OpGroupIAddNonUniformAMD: return "OpGroupIAddNonUniformAMD"; case Op::OpGroupFAddNonUniformAMD: return "OpGroupFAddNonUniformAMD"; case Op::OpGroupFMinNonUniformAMD: return "OpGroupFMinNonUniformAMD"; case Op::OpGroupUMinNonUniformAMD: return "OpGroupUMinNonUniformAMD"; case Op::OpGroupSMinNonUniformAMD: return "OpGroupSMinNonUniformAMD"; case Op::OpGroupFMaxNonUniformAMD: return "OpGroupFMaxNonUniformAMD"; case Op::OpGroupUMaxNonUniformAMD: return "OpGroupUMaxNonUniformAMD"; case Op::OpGroupSMaxNonUniformAMD: return "OpGroupSMaxNonUniformAMD"; case Op::OpFragmentMaskFetchAMD: return "OpFragmentMaskFetchAMD"; case Op::OpFragmentFetchAMD: return "OpFragmentFetchAMD"; case Op::OpReadClockKHR: return "OpReadClockKHR"; case Op::OpAllocateNodePayloadsAMDX: return "OpAllocateNodePayloadsAMDX"; case Op::OpEnqueueNodePayloadsAMDX: return "OpEnqueueNodePayloadsAMDX"; case Op::OpTypeNodePayloadArrayAMDX: return "OpTypeNodePayloadArrayAMDX"; case Op::OpFinishWritingNodePayloadAMDX: return "OpFinishWritingNodePayloadAMDX"; case Op::OpNodePayloadArrayLengthAMDX: return "OpNodePayloadArrayLengthAMDX"; case Op::OpIsNodePayloadValidAMDX: return "OpIsNodePayloadValidAMDX"; case Op::OpConstantStringAMDX: return "OpConstantStringAMDX"; case Op::OpSpecConstantStringAMDX: return "OpSpecConstantStringAMDX"; case Op::OpGroupNonUniformQuadAllKHR: return "OpGroupNonUniformQuadAllKHR"; case Op::OpGroupNonUniformQuadAnyKHR: return "OpGroupNonUniformQuadAnyKHR"; case Op::OpHitObjectRecordHitMotionNV: return "OpHitObjectRecordHitMotionNV"; case Op::OpHitObjectRecordHitWithIndexMotionNV: return "OpHitObjectRecordHitWithIndexMotionNV"; case Op::OpHitObjectRecordMissMotionNV: return "OpHitObjectRecordMissMotionNV"; case Op::OpHitObjectGetWorldToObjectNV: return "OpHitObjectGetWorldToObjectNV"; case Op::OpHitObjectGetObjectToWorldNV: return "OpHitObjectGetObjectToWorldNV"; case Op::OpHitObjectGetObjectRayDirectionNV: return "OpHitObjectGetObjectRayDirectionNV"; case Op::OpHitObjectGetObjectRayOriginNV: return "OpHitObjectGetObjectRayOriginNV"; case Op::OpHitObjectTraceRayMotionNV: return "OpHitObjectTraceRayMotionNV"; case Op::OpHitObjectGetShaderRecordBufferHandleNV: return "OpHitObjectGetShaderRecordBufferHandleNV"; case Op::OpHitObjectGetShaderBindingTableRecordIndexNV: return "OpHitObjectGetShaderBindingTableRecordIndexNV"; case Op::OpHitObjectRecordEmptyNV: return "OpHitObjectRecordEmptyNV"; case Op::OpHitObjectTraceRayNV: return "OpHitObjectTraceRayNV"; case Op::OpHitObjectRecordHitNV: return "OpHitObjectRecordHitNV"; case Op::OpHitObjectRecordHitWithIndexNV: return "OpHitObjectRecordHitWithIndexNV"; case Op::OpHitObjectRecordMissNV: return "OpHitObjectRecordMissNV"; case Op::OpHitObjectExecuteShaderNV: return "OpHitObjectExecuteShaderNV"; case Op::OpHitObjectGetCurrentTimeNV: return "OpHitObjectGetCurrentTimeNV"; case Op::OpHitObjectGetAttributesNV: return "OpHitObjectGetAttributesNV"; case Op::OpHitObjectGetHitKindNV: return "OpHitObjectGetHitKindNV"; case Op::OpHitObjectGetPrimitiveIndexNV: return "OpHitObjectGetPrimitiveIndexNV"; case Op::OpHitObjectGetGeometryIndexNV: return "OpHitObjectGetGeometryIndexNV"; case Op::OpHitObjectGetInstanceIdNV: return "OpHitObjectGetInstanceIdNV"; case Op::OpHitObjectGetInstanceCustomIndexNV: return "OpHitObjectGetInstanceCustomIndexNV"; case Op::OpHitObjectGetWorldRayDirectionNV: return "OpHitObjectGetWorldRayDirectionNV"; case Op::OpHitObjectGetWorldRayOriginNV: return "OpHitObjectGetWorldRayOriginNV"; case Op::OpHitObjectGetRayTMaxNV: return "OpHitObjectGetRayTMaxNV"; case Op::OpHitObjectGetRayTMinNV: return "OpHitObjectGetRayTMinNV"; case Op::OpHitObjectIsEmptyNV: return "OpHitObjectIsEmptyNV"; case Op::OpHitObjectIsHitNV: return "OpHitObjectIsHitNV"; case Op::OpHitObjectIsMissNV: return "OpHitObjectIsMissNV"; case Op::OpReorderThreadWithHitObjectNV: return "OpReorderThreadWithHitObjectNV"; case Op::OpReorderThreadWithHintNV: return "OpReorderThreadWithHintNV"; case Op::OpTypeHitObjectNV: return "OpTypeHitObjectNV"; case Op::OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; case Op::OpTypeCooperativeVectorNV: return "OpTypeCooperativeVectorNV"; case Op::OpCooperativeVectorMatrixMulNV: return "OpCooperativeVectorMatrixMulNV"; case Op::OpCooperativeVectorOuterProductAccumulateNV: return "OpCooperativeVectorOuterProductAccumulateNV"; case Op::OpCooperativeVectorReduceSumAccumulateNV: return "OpCooperativeVectorReduceSumAccumulateNV"; case Op::OpCooperativeVectorMatrixMulAddNV: return "OpCooperativeVectorMatrixMulAddNV"; case Op::OpCooperativeMatrixConvertNV: return "OpCooperativeMatrixConvertNV"; case Op::OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT"; case Op::OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT"; case Op::OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; case Op::OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; case Op::OpFetchMicroTriangleVertexPositionNV: return "OpFetchMicroTriangleVertexPositionNV"; case Op::OpFetchMicroTriangleVertexBarycentricNV: return "OpFetchMicroTriangleVertexBarycentricNV"; case Op::OpCooperativeVectorLoadNV: return "OpCooperativeVectorLoadNV"; case Op::OpCooperativeVectorStoreNV: return "OpCooperativeVectorStoreNV"; case Op::OpReportIntersectionKHR: return "OpReportIntersectionKHR"; case Op::OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; case Op::OpTerminateRayNV: return "OpTerminateRayNV"; case Op::OpTraceNV: return "OpTraceNV"; case Op::OpTraceMotionNV: return "OpTraceMotionNV"; case Op::OpTraceRayMotionNV: return "OpTraceRayMotionNV"; case Op::OpRayQueryGetIntersectionTriangleVertexPositionsKHR: return "OpRayQueryGetIntersectionTriangleVertexPositionsKHR"; case Op::OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR"; case Op::OpExecuteCallableNV: return "OpExecuteCallableNV"; case Op::OpRayQueryGetClusterIdNV: return "OpRayQueryGetClusterIdNV"; case Op::OpHitObjectGetClusterIdNV: return "OpHitObjectGetClusterIdNV"; case Op::OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV"; case Op::OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV"; case Op::OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; case Op::OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV"; case Op::OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV"; case Op::OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT"; case Op::OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT"; case Op::OpCooperativeMatrixReduceNV: return "OpCooperativeMatrixReduceNV"; case Op::OpCooperativeMatrixLoadTensorNV: return "OpCooperativeMatrixLoadTensorNV"; case Op::OpCooperativeMatrixStoreTensorNV: return "OpCooperativeMatrixStoreTensorNV"; case Op::OpCooperativeMatrixPerElementOpNV: return "OpCooperativeMatrixPerElementOpNV"; case Op::OpTypeTensorLayoutNV: return "OpTypeTensorLayoutNV"; case Op::OpTypeTensorViewNV: return "OpTypeTensorViewNV"; case Op::OpCreateTensorLayoutNV: return "OpCreateTensorLayoutNV"; case Op::OpTensorLayoutSetDimensionNV: return "OpTensorLayoutSetDimensionNV"; case Op::OpTensorLayoutSetStrideNV: return "OpTensorLayoutSetStrideNV"; case Op::OpTensorLayoutSliceNV: return "OpTensorLayoutSliceNV"; case Op::OpTensorLayoutSetClampValueNV: return "OpTensorLayoutSetClampValueNV"; case Op::OpCreateTensorViewNV: return "OpCreateTensorViewNV"; case Op::OpTensorViewSetDimensionNV: return "OpTensorViewSetDimensionNV"; case Op::OpTensorViewSetStrideNV: return "OpTensorViewSetStrideNV"; case Op::OpDemoteToHelperInvocation: return "OpDemoteToHelperInvocation"; case Op::OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT"; case Op::OpTensorViewSetClipNV: return "OpTensorViewSetClipNV"; case Op::OpTensorLayoutSetBlockSizeNV: return "OpTensorLayoutSetBlockSizeNV"; case Op::OpCooperativeMatrixTransposeNV: return "OpCooperativeMatrixTransposeNV"; case Op::OpConvertUToImageNV: return "OpConvertUToImageNV"; case Op::OpConvertUToSamplerNV: return "OpConvertUToSamplerNV"; case Op::OpConvertImageToUNV: return "OpConvertImageToUNV"; case Op::OpConvertSamplerToUNV: return "OpConvertSamplerToUNV"; case Op::OpConvertUToSampledImageNV: return "OpConvertUToSampledImageNV"; case Op::OpConvertSampledImageToUNV: return "OpConvertSampledImageToUNV"; case Op::OpSamplerImageAddressingModeNV: return "OpSamplerImageAddressingModeNV"; case Op::OpRawAccessChainNV: return "OpRawAccessChainNV"; case Op::OpRayQueryGetIntersectionSpherePositionNV: return "OpRayQueryGetIntersectionSpherePositionNV"; case Op::OpRayQueryGetIntersectionSphereRadiusNV: return "OpRayQueryGetIntersectionSphereRadiusNV"; case Op::OpRayQueryGetIntersectionLSSPositionsNV: return "OpRayQueryGetIntersectionLSSPositionsNV"; case Op::OpRayQueryGetIntersectionLSSRadiiNV: return "OpRayQueryGetIntersectionLSSRadiiNV"; case Op::OpRayQueryGetIntersectionLSSHitValueNV: return "OpRayQueryGetIntersectionLSSHitValueNV"; case Op::OpHitObjectGetSpherePositionNV: return "OpHitObjectGetSpherePositionNV"; case Op::OpHitObjectGetSphereRadiusNV: return "OpHitObjectGetSphereRadiusNV"; case Op::OpHitObjectGetLSSPositionsNV: return "OpHitObjectGetLSSPositionsNV"; case Op::OpHitObjectGetLSSRadiiNV: return "OpHitObjectGetLSSRadiiNV"; case Op::OpHitObjectIsSphereHitNV: return "OpHitObjectIsSphereHitNV"; case Op::OpHitObjectIsLSSHitNV: return "OpHitObjectIsLSSHitNV"; case Op::OpRayQueryIsSphereHitNV: return "OpRayQueryIsSphereHitNV"; case Op::OpRayQueryIsLSSHitNV: return "OpRayQueryIsLSSHitNV"; case Op::OpSubgroupShuffleINTEL: return "OpSubgroupShuffleINTEL"; case Op::OpSubgroupShuffleDownINTEL: return "OpSubgroupShuffleDownINTEL"; case Op::OpSubgroupShuffleUpINTEL: return "OpSubgroupShuffleUpINTEL"; case Op::OpSubgroupShuffleXorINTEL: return "OpSubgroupShuffleXorINTEL"; case Op::OpSubgroupBlockReadINTEL: return "OpSubgroupBlockReadINTEL"; case Op::OpSubgroupBlockWriteINTEL: return "OpSubgroupBlockWriteINTEL"; case Op::OpSubgroupImageBlockReadINTEL: return "OpSubgroupImageBlockReadINTEL"; case Op::OpSubgroupImageBlockWriteINTEL: return "OpSubgroupImageBlockWriteINTEL"; case Op::OpSubgroupImageMediaBlockReadINTEL: return "OpSubgroupImageMediaBlockReadINTEL"; case Op::OpSubgroupImageMediaBlockWriteINTEL: return "OpSubgroupImageMediaBlockWriteINTEL"; case Op::OpUCountLeadingZerosINTEL: return "OpUCountLeadingZerosINTEL"; case Op::OpUCountTrailingZerosINTEL: return "OpUCountTrailingZerosINTEL"; case Op::OpAbsISubINTEL: return "OpAbsISubINTEL"; case Op::OpAbsUSubINTEL: return "OpAbsUSubINTEL"; case Op::OpIAddSatINTEL: return "OpIAddSatINTEL"; case Op::OpUAddSatINTEL: return "OpUAddSatINTEL"; case Op::OpIAverageINTEL: return "OpIAverageINTEL"; case Op::OpUAverageINTEL: return "OpUAverageINTEL"; case Op::OpIAverageRoundedINTEL: return "OpIAverageRoundedINTEL"; case Op::OpUAverageRoundedINTEL: return "OpUAverageRoundedINTEL"; case Op::OpISubSatINTEL: return "OpISubSatINTEL"; case Op::OpUSubSatINTEL: return "OpUSubSatINTEL"; case Op::OpIMul32x16INTEL: return "OpIMul32x16INTEL"; case Op::OpUMul32x16INTEL: return "OpUMul32x16INTEL"; case Op::OpConstantFunctionPointerINTEL: return "OpConstantFunctionPointerINTEL"; case Op::OpFunctionPointerCallINTEL: return "OpFunctionPointerCallINTEL"; case Op::OpAsmTargetINTEL: return "OpAsmTargetINTEL"; case Op::OpAsmINTEL: return "OpAsmINTEL"; case Op::OpAsmCallINTEL: return "OpAsmCallINTEL"; case Op::OpAtomicFMinEXT: return "OpAtomicFMinEXT"; case Op::OpAtomicFMaxEXT: return "OpAtomicFMaxEXT"; case Op::OpAssumeTrueKHR: return "OpAssumeTrueKHR"; case Op::OpExpectKHR: return "OpExpectKHR"; case Op::OpDecorateString: return "OpDecorateString"; case Op::OpMemberDecorateString: return "OpMemberDecorateString"; case Op::OpVmeImageINTEL: return "OpVmeImageINTEL"; case Op::OpTypeVmeImageINTEL: return "OpTypeVmeImageINTEL"; case Op::OpTypeAvcImePayloadINTEL: return "OpTypeAvcImePayloadINTEL"; case Op::OpTypeAvcRefPayloadINTEL: return "OpTypeAvcRefPayloadINTEL"; case Op::OpTypeAvcSicPayloadINTEL: return "OpTypeAvcSicPayloadINTEL"; case Op::OpTypeAvcMcePayloadINTEL: return "OpTypeAvcMcePayloadINTEL"; case Op::OpTypeAvcMceResultINTEL: return "OpTypeAvcMceResultINTEL"; case Op::OpTypeAvcImeResultINTEL: return "OpTypeAvcImeResultINTEL"; case Op::OpTypeAvcImeResultSingleReferenceStreamoutINTEL: return "OpTypeAvcImeResultSingleReferenceStreamoutINTEL"; case Op::OpTypeAvcImeResultDualReferenceStreamoutINTEL: return "OpTypeAvcImeResultDualReferenceStreamoutINTEL"; case Op::OpTypeAvcImeSingleReferenceStreaminINTEL: return "OpTypeAvcImeSingleReferenceStreaminINTEL"; case Op::OpTypeAvcImeDualReferenceStreaminINTEL: return "OpTypeAvcImeDualReferenceStreaminINTEL"; case Op::OpTypeAvcRefResultINTEL: return "OpTypeAvcRefResultINTEL"; case Op::OpTypeAvcSicResultINTEL: return "OpTypeAvcSicResultINTEL"; case Op::OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL"; case Op::OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: return "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL"; case Op::OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL"; case Op::OpSubgroupAvcMceSetInterShapePenaltyINTEL: return "OpSubgroupAvcMceSetInterShapePenaltyINTEL"; case Op::OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: return "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL"; case Op::OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: return "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL"; case Op::OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL"; case Op::OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: return "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL"; case Op::OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: return "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL"; case Op::OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: return "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL"; case Op::OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: return "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL"; case Op::OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: return "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL"; case Op::OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL"; case Op::OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: return "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL"; case Op::OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL"; case Op::OpSubgroupAvcMceSetAcOnlyHaarINTEL: return "OpSubgroupAvcMceSetAcOnlyHaarINTEL"; case Op::OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: return "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL"; case Op::OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: return "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL"; case Op::OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: return "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL"; case Op::OpSubgroupAvcMceConvertToImePayloadINTEL: return "OpSubgroupAvcMceConvertToImePayloadINTEL"; case Op::OpSubgroupAvcMceConvertToImeResultINTEL: return "OpSubgroupAvcMceConvertToImeResultINTEL"; case Op::OpSubgroupAvcMceConvertToRefPayloadINTEL: return "OpSubgroupAvcMceConvertToRefPayloadINTEL"; case Op::OpSubgroupAvcMceConvertToRefResultINTEL: return "OpSubgroupAvcMceConvertToRefResultINTEL"; case Op::OpSubgroupAvcMceConvertToSicPayloadINTEL: return "OpSubgroupAvcMceConvertToSicPayloadINTEL"; case Op::OpSubgroupAvcMceConvertToSicResultINTEL: return "OpSubgroupAvcMceConvertToSicResultINTEL"; case Op::OpSubgroupAvcMceGetMotionVectorsINTEL: return "OpSubgroupAvcMceGetMotionVectorsINTEL"; case Op::OpSubgroupAvcMceGetInterDistortionsINTEL: return "OpSubgroupAvcMceGetInterDistortionsINTEL"; case Op::OpSubgroupAvcMceGetBestInterDistortionsINTEL: return "OpSubgroupAvcMceGetBestInterDistortionsINTEL"; case Op::OpSubgroupAvcMceGetInterMajorShapeINTEL: return "OpSubgroupAvcMceGetInterMajorShapeINTEL"; case Op::OpSubgroupAvcMceGetInterMinorShapeINTEL: return "OpSubgroupAvcMceGetInterMinorShapeINTEL"; case Op::OpSubgroupAvcMceGetInterDirectionsINTEL: return "OpSubgroupAvcMceGetInterDirectionsINTEL"; case Op::OpSubgroupAvcMceGetInterMotionVectorCountINTEL: return "OpSubgroupAvcMceGetInterMotionVectorCountINTEL"; case Op::OpSubgroupAvcMceGetInterReferenceIdsINTEL: return "OpSubgroupAvcMceGetInterReferenceIdsINTEL"; case Op::OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: return "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL"; case Op::OpSubgroupAvcImeInitializeINTEL: return "OpSubgroupAvcImeInitializeINTEL"; case Op::OpSubgroupAvcImeSetSingleReferenceINTEL: return "OpSubgroupAvcImeSetSingleReferenceINTEL"; case Op::OpSubgroupAvcImeSetDualReferenceINTEL: return "OpSubgroupAvcImeSetDualReferenceINTEL"; case Op::OpSubgroupAvcImeRefWindowSizeINTEL: return "OpSubgroupAvcImeRefWindowSizeINTEL"; case Op::OpSubgroupAvcImeAdjustRefOffsetINTEL: return "OpSubgroupAvcImeAdjustRefOffsetINTEL"; case Op::OpSubgroupAvcImeConvertToMcePayloadINTEL: return "OpSubgroupAvcImeConvertToMcePayloadINTEL"; case Op::OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: return "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL"; case Op::OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: return "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL"; case Op::OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: return "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL"; case Op::OpSubgroupAvcImeSetWeightedSadINTEL: return "OpSubgroupAvcImeSetWeightedSadINTEL"; case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: return "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL"; case Op::OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: return "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL"; case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL"; case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: return "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL"; case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL"; case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: return "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL"; case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL"; case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: return "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL"; case Op::OpSubgroupAvcImeConvertToMceResultINTEL: return "OpSubgroupAvcImeConvertToMceResultINTEL"; case Op::OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: return "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL"; case Op::OpSubgroupAvcImeGetDualReferenceStreaminINTEL: return "OpSubgroupAvcImeGetDualReferenceStreaminINTEL"; case Op::OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: return "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL"; case Op::OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: return "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL"; case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL"; case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL"; case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL"; case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL"; case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL"; case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL"; case Op::OpSubgroupAvcImeGetBorderReachedINTEL: return "OpSubgroupAvcImeGetBorderReachedINTEL"; case Op::OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: return "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL"; case Op::OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: return "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL"; case Op::OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: return "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL"; case Op::OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: return "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL"; case Op::OpSubgroupAvcFmeInitializeINTEL: return "OpSubgroupAvcFmeInitializeINTEL"; case Op::OpSubgroupAvcBmeInitializeINTEL: return "OpSubgroupAvcBmeInitializeINTEL"; case Op::OpSubgroupAvcRefConvertToMcePayloadINTEL: return "OpSubgroupAvcRefConvertToMcePayloadINTEL"; case Op::OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: return "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL"; case Op::OpSubgroupAvcRefSetBilinearFilterEnableINTEL: return "OpSubgroupAvcRefSetBilinearFilterEnableINTEL"; case Op::OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: return "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL"; case Op::OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: return "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL"; case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: return "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL"; case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: return "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL"; case Op::OpSubgroupAvcRefConvertToMceResultINTEL: return "OpSubgroupAvcRefConvertToMceResultINTEL"; case Op::OpSubgroupAvcSicInitializeINTEL: return "OpSubgroupAvcSicInitializeINTEL"; case Op::OpSubgroupAvcSicConfigureSkcINTEL: return "OpSubgroupAvcSicConfigureSkcINTEL"; case Op::OpSubgroupAvcSicConfigureIpeLumaINTEL: return "OpSubgroupAvcSicConfigureIpeLumaINTEL"; case Op::OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: return "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL"; case Op::OpSubgroupAvcSicGetMotionVectorMaskINTEL: return "OpSubgroupAvcSicGetMotionVectorMaskINTEL"; case Op::OpSubgroupAvcSicConvertToMcePayloadINTEL: return "OpSubgroupAvcSicConvertToMcePayloadINTEL"; case Op::OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: return "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL"; case Op::OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: return "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL"; case Op::OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: return "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL"; case Op::OpSubgroupAvcSicSetBilinearFilterEnableINTEL: return "OpSubgroupAvcSicSetBilinearFilterEnableINTEL"; case Op::OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: return "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL"; case Op::OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: return "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL"; case Op::OpSubgroupAvcSicEvaluateIpeINTEL: return "OpSubgroupAvcSicEvaluateIpeINTEL"; case Op::OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: return "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL"; case Op::OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: return "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL"; case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: return "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL"; case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: return "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL"; case Op::OpSubgroupAvcSicConvertToMceResultINTEL: return "OpSubgroupAvcSicConvertToMceResultINTEL"; case Op::OpSubgroupAvcSicGetIpeLumaShapeINTEL: return "OpSubgroupAvcSicGetIpeLumaShapeINTEL"; case Op::OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: return "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL"; case Op::OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: return "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL"; case Op::OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: return "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL"; case Op::OpSubgroupAvcSicGetIpeChromaModeINTEL: return "OpSubgroupAvcSicGetIpeChromaModeINTEL"; case Op::OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: return "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL"; case Op::OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: return "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL"; case Op::OpSubgroupAvcSicGetInterRawSadsINTEL: return "OpSubgroupAvcSicGetInterRawSadsINTEL"; case Op::OpVariableLengthArrayINTEL: return "OpVariableLengthArrayINTEL"; case Op::OpSaveMemoryINTEL: return "OpSaveMemoryINTEL"; case Op::OpRestoreMemoryINTEL: return "OpRestoreMemoryINTEL"; case Op::OpArbitraryFloatSinCosPiINTEL: return "OpArbitraryFloatSinCosPiINTEL"; case Op::OpArbitraryFloatCastINTEL: return "OpArbitraryFloatCastINTEL"; case Op::OpArbitraryFloatCastFromIntINTEL: return "OpArbitraryFloatCastFromIntINTEL"; case Op::OpArbitraryFloatCastToIntINTEL: return "OpArbitraryFloatCastToIntINTEL"; case Op::OpArbitraryFloatAddINTEL: return "OpArbitraryFloatAddINTEL"; case Op::OpArbitraryFloatSubINTEL: return "OpArbitraryFloatSubINTEL"; case Op::OpArbitraryFloatMulINTEL: return "OpArbitraryFloatMulINTEL"; case Op::OpArbitraryFloatDivINTEL: return "OpArbitraryFloatDivINTEL"; case Op::OpArbitraryFloatGTINTEL: return "OpArbitraryFloatGTINTEL"; case Op::OpArbitraryFloatGEINTEL: return "OpArbitraryFloatGEINTEL"; case Op::OpArbitraryFloatLTINTEL: return "OpArbitraryFloatLTINTEL"; case Op::OpArbitraryFloatLEINTEL: return "OpArbitraryFloatLEINTEL"; case Op::OpArbitraryFloatEQINTEL: return "OpArbitraryFloatEQINTEL"; case Op::OpArbitraryFloatRecipINTEL: return "OpArbitraryFloatRecipINTEL"; case Op::OpArbitraryFloatRSqrtINTEL: return "OpArbitraryFloatRSqrtINTEL"; case Op::OpArbitraryFloatCbrtINTEL: return "OpArbitraryFloatCbrtINTEL"; case Op::OpArbitraryFloatHypotINTEL: return "OpArbitraryFloatHypotINTEL"; case Op::OpArbitraryFloatSqrtINTEL: return "OpArbitraryFloatSqrtINTEL"; case Op::OpArbitraryFloatLogINTEL: return "OpArbitraryFloatLogINTEL"; case Op::OpArbitraryFloatLog2INTEL: return "OpArbitraryFloatLog2INTEL"; case Op::OpArbitraryFloatLog10INTEL: return "OpArbitraryFloatLog10INTEL"; case Op::OpArbitraryFloatLog1pINTEL: return "OpArbitraryFloatLog1pINTEL"; case Op::OpArbitraryFloatExpINTEL: return "OpArbitraryFloatExpINTEL"; case Op::OpArbitraryFloatExp2INTEL: return "OpArbitraryFloatExp2INTEL"; case Op::OpArbitraryFloatExp10INTEL: return "OpArbitraryFloatExp10INTEL"; case Op::OpArbitraryFloatExpm1INTEL: return "OpArbitraryFloatExpm1INTEL"; case Op::OpArbitraryFloatSinINTEL: return "OpArbitraryFloatSinINTEL"; case Op::OpArbitraryFloatCosINTEL: return "OpArbitraryFloatCosINTEL"; case Op::OpArbitraryFloatSinCosINTEL: return "OpArbitraryFloatSinCosINTEL"; case Op::OpArbitraryFloatSinPiINTEL: return "OpArbitraryFloatSinPiINTEL"; case Op::OpArbitraryFloatCosPiINTEL: return "OpArbitraryFloatCosPiINTEL"; case Op::OpArbitraryFloatASinINTEL: return "OpArbitraryFloatASinINTEL"; case Op::OpArbitraryFloatASinPiINTEL: return "OpArbitraryFloatASinPiINTEL"; case Op::OpArbitraryFloatACosINTEL: return "OpArbitraryFloatACosINTEL"; case Op::OpArbitraryFloatACosPiINTEL: return "OpArbitraryFloatACosPiINTEL"; case Op::OpArbitraryFloatATanINTEL: return "OpArbitraryFloatATanINTEL"; case Op::OpArbitraryFloatATanPiINTEL: return "OpArbitraryFloatATanPiINTEL"; case Op::OpArbitraryFloatATan2INTEL: return "OpArbitraryFloatATan2INTEL"; case Op::OpArbitraryFloatPowINTEL: return "OpArbitraryFloatPowINTEL"; case Op::OpArbitraryFloatPowRINTEL: return "OpArbitraryFloatPowRINTEL"; case Op::OpArbitraryFloatPowNINTEL: return "OpArbitraryFloatPowNINTEL"; case Op::OpLoopControlINTEL: return "OpLoopControlINTEL"; case Op::OpAliasDomainDeclINTEL: return "OpAliasDomainDeclINTEL"; case Op::OpAliasScopeDeclINTEL: return "OpAliasScopeDeclINTEL"; case Op::OpAliasScopeListDeclINTEL: return "OpAliasScopeListDeclINTEL"; case Op::OpFixedSqrtINTEL: return "OpFixedSqrtINTEL"; case Op::OpFixedRecipINTEL: return "OpFixedRecipINTEL"; case Op::OpFixedRsqrtINTEL: return "OpFixedRsqrtINTEL"; case Op::OpFixedSinINTEL: return "OpFixedSinINTEL"; case Op::OpFixedCosINTEL: return "OpFixedCosINTEL"; case Op::OpFixedSinCosINTEL: return "OpFixedSinCosINTEL"; case Op::OpFixedSinPiINTEL: return "OpFixedSinPiINTEL"; case Op::OpFixedCosPiINTEL: return "OpFixedCosPiINTEL"; case Op::OpFixedSinCosPiINTEL: return "OpFixedSinCosPiINTEL"; case Op::OpFixedLogINTEL: return "OpFixedLogINTEL"; case Op::OpFixedExpINTEL: return "OpFixedExpINTEL"; case Op::OpPtrCastToCrossWorkgroupINTEL: return "OpPtrCastToCrossWorkgroupINTEL"; case Op::OpCrossWorkgroupCastToPtrINTEL: return "OpCrossWorkgroupCastToPtrINTEL"; case Op::OpReadPipeBlockingINTEL: return "OpReadPipeBlockingINTEL"; case Op::OpWritePipeBlockingINTEL: return "OpWritePipeBlockingINTEL"; case Op::OpFPGARegINTEL: return "OpFPGARegINTEL"; case Op::OpRayQueryGetRayTMinKHR: return "OpRayQueryGetRayTMinKHR"; case Op::OpRayQueryGetRayFlagsKHR: return "OpRayQueryGetRayFlagsKHR"; case Op::OpRayQueryGetIntersectionTKHR: return "OpRayQueryGetIntersectionTKHR"; case Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR: return "OpRayQueryGetIntersectionInstanceCustomIndexKHR"; case Op::OpRayQueryGetIntersectionInstanceIdKHR: return "OpRayQueryGetIntersectionInstanceIdKHR"; case Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: return "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR"; case Op::OpRayQueryGetIntersectionGeometryIndexKHR: return "OpRayQueryGetIntersectionGeometryIndexKHR"; case Op::OpRayQueryGetIntersectionPrimitiveIndexKHR: return "OpRayQueryGetIntersectionPrimitiveIndexKHR"; case Op::OpRayQueryGetIntersectionBarycentricsKHR: return "OpRayQueryGetIntersectionBarycentricsKHR"; case Op::OpRayQueryGetIntersectionFrontFaceKHR: return "OpRayQueryGetIntersectionFrontFaceKHR"; case Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: return "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR"; case Op::OpRayQueryGetIntersectionObjectRayDirectionKHR: return "OpRayQueryGetIntersectionObjectRayDirectionKHR"; case Op::OpRayQueryGetIntersectionObjectRayOriginKHR: return "OpRayQueryGetIntersectionObjectRayOriginKHR"; case Op::OpRayQueryGetWorldRayDirectionKHR: return "OpRayQueryGetWorldRayDirectionKHR"; case Op::OpRayQueryGetWorldRayOriginKHR: return "OpRayQueryGetWorldRayOriginKHR"; case Op::OpRayQueryGetIntersectionObjectToWorldKHR: return "OpRayQueryGetIntersectionObjectToWorldKHR"; case Op::OpRayQueryGetIntersectionWorldToObjectKHR: return "OpRayQueryGetIntersectionWorldToObjectKHR"; case Op::OpAtomicFAddEXT: return "OpAtomicFAddEXT"; case Op::OpTypeBufferSurfaceINTEL: return "OpTypeBufferSurfaceINTEL"; case Op::OpTypeStructContinuedINTEL: return "OpTypeStructContinuedINTEL"; case Op::OpConstantCompositeContinuedINTEL: return "OpConstantCompositeContinuedINTEL"; case Op::OpSpecConstantCompositeContinuedINTEL: return "OpSpecConstantCompositeContinuedINTEL"; case Op::OpCompositeConstructContinuedINTEL: return "OpCompositeConstructContinuedINTEL"; case Op::OpConvertFToBF16INTEL: return "OpConvertFToBF16INTEL"; case Op::OpConvertBF16ToFINTEL: return "OpConvertBF16ToFINTEL"; case Op::OpControlBarrierArriveINTEL: return "OpControlBarrierArriveINTEL"; case Op::OpControlBarrierWaitINTEL: return "OpControlBarrierWaitINTEL"; case Op::OpArithmeticFenceEXT: return "OpArithmeticFenceEXT"; case Op::OpSubgroupBlockPrefetchINTEL: return "OpSubgroupBlockPrefetchINTEL"; case Op::OpSubgroup2DBlockLoadINTEL: return "OpSubgroup2DBlockLoadINTEL"; case Op::OpSubgroup2DBlockLoadTransformINTEL: return "OpSubgroup2DBlockLoadTransformINTEL"; case Op::OpSubgroup2DBlockLoadTransposeINTEL: return "OpSubgroup2DBlockLoadTransposeINTEL"; case Op::OpSubgroup2DBlockPrefetchINTEL: return "OpSubgroup2DBlockPrefetchINTEL"; case Op::OpSubgroup2DBlockStoreINTEL: return "OpSubgroup2DBlockStoreINTEL"; case Op::OpSubgroupMatrixMultiplyAccumulateINTEL: return "OpSubgroupMatrixMultiplyAccumulateINTEL"; case Op::OpGroupIMulKHR: return "OpGroupIMulKHR"; case Op::OpGroupFMulKHR: return "OpGroupFMulKHR"; case Op::OpGroupBitwiseAndKHR: return "OpGroupBitwiseAndKHR"; case Op::OpGroupBitwiseOrKHR: return "OpGroupBitwiseOrKHR"; case Op::OpGroupBitwiseXorKHR: return "OpGroupBitwiseXorKHR"; case Op::OpGroupLogicalAndKHR: return "OpGroupLogicalAndKHR"; case Op::OpGroupLogicalOrKHR: return "OpGroupLogicalOrKHR"; case Op::OpGroupLogicalXorKHR: return "OpGroupLogicalXorKHR"; case Op::OpMaskedGatherINTEL: return "OpMaskedGatherINTEL"; case Op::OpMaskedScatterINTEL: return "OpMaskedScatterINTEL"; default: return "Unknown"; } } #endif /* SPV_ENABLE_UTILITY_CODE */ // Overload bitwise operators for mask bit combining constexpr ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } constexpr ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) & unsigned(b)); } constexpr ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) ^ unsigned(b)); } constexpr ImageOperandsMask operator~(ImageOperandsMask a) { return ImageOperandsMask(~unsigned(a)); } constexpr FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } constexpr FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) & unsigned(b)); } constexpr FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) ^ unsigned(b)); } constexpr FPFastMathModeMask operator~(FPFastMathModeMask a) { return FPFastMathModeMask(~unsigned(a)); } constexpr SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } constexpr SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) & unsigned(b)); } constexpr SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) ^ unsigned(b)); } constexpr SelectionControlMask operator~(SelectionControlMask a) { return SelectionControlMask(~unsigned(a)); } constexpr LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } constexpr LoopControlMask operator&(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) & unsigned(b)); } constexpr LoopControlMask operator^(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) ^ unsigned(b)); } constexpr LoopControlMask operator~(LoopControlMask a) { return LoopControlMask(~unsigned(a)); } constexpr FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } constexpr FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) & unsigned(b)); } constexpr FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) ^ unsigned(b)); } constexpr FunctionControlMask operator~(FunctionControlMask a) { return FunctionControlMask(~unsigned(a)); } constexpr MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } constexpr MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) & unsigned(b)); } constexpr MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) ^ unsigned(b)); } constexpr MemorySemanticsMask operator~(MemorySemanticsMask a) { return MemorySemanticsMask(~unsigned(a)); } constexpr MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } constexpr MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) & unsigned(b)); } constexpr MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) ^ unsigned(b)); } constexpr MemoryAccessMask operator~(MemoryAccessMask a) { return MemoryAccessMask(~unsigned(a)); } constexpr KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } constexpr KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) & unsigned(b)); } constexpr KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) ^ unsigned(b)); } constexpr KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) { return KernelProfilingInfoMask(~unsigned(a)); } constexpr RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } constexpr RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) & unsigned(b)); } constexpr RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) ^ unsigned(b)); } constexpr RayFlagsMask operator~(RayFlagsMask a) { return RayFlagsMask(~unsigned(a)); } constexpr FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); } constexpr FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); } constexpr FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); } constexpr FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); } constexpr CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); } constexpr CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); } constexpr CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); } constexpr CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); } constexpr CooperativeMatrixReduceMask operator|(CooperativeMatrixReduceMask a, CooperativeMatrixReduceMask b) { return CooperativeMatrixReduceMask(unsigned(a) | unsigned(b)); } constexpr CooperativeMatrixReduceMask operator&(CooperativeMatrixReduceMask a, CooperativeMatrixReduceMask b) { return CooperativeMatrixReduceMask(unsigned(a) & unsigned(b)); } constexpr CooperativeMatrixReduceMask operator^(CooperativeMatrixReduceMask a, CooperativeMatrixReduceMask b) { return CooperativeMatrixReduceMask(unsigned(a) ^ unsigned(b)); } constexpr CooperativeMatrixReduceMask operator~(CooperativeMatrixReduceMask a) { return CooperativeMatrixReduceMask(~unsigned(a)); } constexpr TensorAddressingOperandsMask operator|(TensorAddressingOperandsMask a, TensorAddressingOperandsMask b) { return TensorAddressingOperandsMask(unsigned(a) | unsigned(b)); } constexpr TensorAddressingOperandsMask operator&(TensorAddressingOperandsMask a, TensorAddressingOperandsMask b) { return TensorAddressingOperandsMask(unsigned(a) & unsigned(b)); } constexpr TensorAddressingOperandsMask operator^(TensorAddressingOperandsMask a, TensorAddressingOperandsMask b) { return TensorAddressingOperandsMask(unsigned(a) ^ unsigned(b)); } constexpr TensorAddressingOperandsMask operator~(TensorAddressingOperandsMask a) { return TensorAddressingOperandsMask(~unsigned(a)); } constexpr TensorOperandsMask operator|(TensorOperandsMask a, TensorOperandsMask b) { return TensorOperandsMask(unsigned(a) | unsigned(b)); } constexpr TensorOperandsMask operator&(TensorOperandsMask a, TensorOperandsMask b) { return TensorOperandsMask(unsigned(a) & unsigned(b)); } constexpr TensorOperandsMask operator^(TensorOperandsMask a, TensorOperandsMask b) { return TensorOperandsMask(unsigned(a) ^ unsigned(b)); } constexpr TensorOperandsMask operator~(TensorOperandsMask a) { return TensorOperandsMask(~unsigned(a)); } constexpr MatrixMultiplyAccumulateOperandsMask operator|(MatrixMultiplyAccumulateOperandsMask a, MatrixMultiplyAccumulateOperandsMask b) { return MatrixMultiplyAccumulateOperandsMask(unsigned(a) | unsigned(b)); } constexpr MatrixMultiplyAccumulateOperandsMask operator&(MatrixMultiplyAccumulateOperandsMask a, MatrixMultiplyAccumulateOperandsMask b) { return MatrixMultiplyAccumulateOperandsMask(unsigned(a) & unsigned(b)); } constexpr MatrixMultiplyAccumulateOperandsMask operator^(MatrixMultiplyAccumulateOperandsMask a, MatrixMultiplyAccumulateOperandsMask b) { return MatrixMultiplyAccumulateOperandsMask(unsigned(a) ^ unsigned(b)); } constexpr MatrixMultiplyAccumulateOperandsMask operator~(MatrixMultiplyAccumulateOperandsMask a) { return MatrixMultiplyAccumulateOperandsMask(~unsigned(a)); } constexpr RawAccessChainOperandsMask operator|(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) | unsigned(b)); } constexpr RawAccessChainOperandsMask operator&(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) & unsigned(b)); } constexpr RawAccessChainOperandsMask operator^(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) ^ unsigned(b)); } constexpr RawAccessChainOperandsMask operator~(RawAccessChainOperandsMask a) { return RawAccessChainOperandsMask(~unsigned(a)); } } // end namespace spv #endif // #ifndef spirv_HPP glslang-16.0.0/SPIRV/spvIR.h000066400000000000000000000537661506534232700153740ustar00rootroot00000000000000// // Copyright (C) 2014 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // SPIRV-IR // // Simple in-memory representation (IR) of SPIRV. Just for holding // Each function's CFG of blocks. Has this hierarchy: // - Module, which is a list of // - Function, which is a list of // - Block, which is a list of // - Instruction // #pragma once #ifndef spvIR_H #define spvIR_H #include "spirv.hpp11" #include #include #include #include #include #include #include #include namespace spv { class Block; class Function; class Module; const Id NoResult = 0; const Id NoType = 0; const Decoration NoPrecision = Decoration::Max; #ifdef __GNUC__ # define POTENTIALLY_UNUSED __attribute__((unused)) #else # define POTENTIALLY_UNUSED #endif POTENTIALLY_UNUSED const MemorySemanticsMask MemorySemanticsAllMemory = (MemorySemanticsMask)(MemorySemanticsMask::UniformMemory | MemorySemanticsMask::WorkgroupMemory | MemorySemanticsMask::AtomicCounterMemory | MemorySemanticsMask::ImageMemory); struct IdImmediate { bool isId; // true if word is an Id, false if word is an immediate unsigned word; IdImmediate(bool i, unsigned w) : isId(i), word(w) {} IdImmediate(bool i, spv::MemoryAccessMask w) : isId(i), word((unsigned)w) {} IdImmediate(bool i, spv::TensorAddressingOperandsMask w) : isId(i), word((unsigned)w) {} IdImmediate(bool i, spv::ImageOperandsMask w) : isId(i), word((unsigned)w) {} IdImmediate(bool i, spv::CooperativeMatrixOperandsMask w) : isId(i), word((unsigned)w) {} }; // // SPIR-V IR instruction. // class Instruction { public: Instruction(Id resultId, Id typeId, Op opCode) : resultId(resultId), typeId(typeId), opCode(opCode), block(nullptr) { } explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { } virtual ~Instruction() {} void reserveOperands(size_t count) { operands.reserve(count); idOperand.reserve(count); } void addIdOperand(Id id) { // ids can't be 0 assert(id); operands.push_back(id); idOperand.push_back(true); } // This method is potentially dangerous as it can break assumptions // about SSA and lack of forward references. void setIdOperand(unsigned idx, Id id) { assert(id); assert(idOperand[idx]); operands[idx] = id; } void addImmediateOperand(unsigned int immediate) { operands.push_back(immediate); idOperand.push_back(false); } void addImmediateOperand(spv::StorageClass immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::ExecutionMode immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::ExecutionModel immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::Decoration immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::LinkageType immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::MemoryAccessMask immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::Capability immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::AddressingModel immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::MemoryModel immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::FPEncoding immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::SourceLanguage immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::Dim immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::FunctionControlMask immediate){ addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::SelectionControlMask immediate) { addImmediateOperand((unsigned)immediate); } void addImmediateOperand(spv::LoopControlMask immediate) { addImmediateOperand((unsigned)immediate); } void setImmediateOperand(unsigned idx, unsigned int immediate) { assert(!idOperand[idx]); operands[idx] = immediate; } void addStringOperand(const char* str) { unsigned int word = 0; unsigned int shiftAmount = 0; unsigned char c; do { c = *(str++); word |= ((unsigned int)c) << shiftAmount; shiftAmount += 8; if (shiftAmount == 32) { addImmediateOperand(word); word = 0; shiftAmount = 0; } } while (c != 0); // deal with partial last word if (shiftAmount > 0) { addImmediateOperand(word); } } bool isIdOperand(int op) const { return idOperand[op]; } void setBlock(Block* b) { block = b; } Block* getBlock() const { return block; } Op getOpCode() const { return opCode; } int getNumOperands() const { assert(operands.size() == idOperand.size()); return (int)operands.size(); } Id getResultId() const { return resultId; } Id getTypeId() const { return typeId; } Id getIdOperand(int op) const { assert(idOperand[op]); return operands[op]; } unsigned int getImmediateOperand(int op) const { assert(!idOperand[op]); return operands[op]; } // Write out the binary form. void dump(std::vector& out) const { // Compute the wordCount unsigned int wordCount = 1; if (typeId) ++wordCount; if (resultId) ++wordCount; wordCount += (unsigned int)operands.size(); // Write out the beginning of the instruction out.push_back(((wordCount) << WordCountShift) | (unsigned)opCode); if (typeId) out.push_back(typeId); if (resultId) out.push_back(resultId); // Write out the operands for (int op = 0; op < (int)operands.size(); ++op) out.push_back(operands[op]); } const char *getNameString() const { if (opCode == Op::OpString) { return (const char *)&operands[0]; } else { assert(opCode == Op::OpName); return (const char *)&operands[1]; } } protected: Instruction(const Instruction&); Id resultId; Id typeId; Op opCode; std::vector operands; // operands, both and immediates (both are unsigned int) std::vector idOperand; // true for operands that are , false for immediates Block* block; }; // // SPIR-V IR block. // struct DebugSourceLocation { int line; int column; spv::Id fileId; }; class Block { public: Block(Id id, Function& parent); virtual ~Block() { } Id getId() { return instructions.front()->getResultId(); } Function& getParent() const { return parent; } // Returns true if the source location is actually updated. // Note we still need the builder to insert the line marker instruction. This is just a tracker. bool updateDebugSourceLocation(int line, int column, spv::Id fileId) { if (currentSourceLoc && currentSourceLoc->line == line && currentSourceLoc->column == column && currentSourceLoc->fileId == fileId) { return false; } currentSourceLoc = DebugSourceLocation{line, column, fileId}; return true; } // Returns true if the scope is actually updated. // Note we still need the builder to insert the debug scope instruction. This is just a tracker. bool updateDebugScope(spv::Id scopeId) { assert(scopeId); if (currentDebugScope && *currentDebugScope == scopeId) { return false; } currentDebugScope = scopeId; return true; } void addInstruction(std::unique_ptr inst); void addPredecessor(Block* pred) { predecessors.push_back(pred); pred->successors.push_back(this);} void addLocalVariable(std::unique_ptr inst) { localVariables.push_back(std::move(inst)); } const std::vector& getPredecessors() const { return predecessors; } const std::vector& getSuccessors() const { return successors; } std::vector >& getInstructions() { return instructions; } const std::vector >& getLocalVariables() const { return localVariables; } void setUnreachable() { unreachable = true; } bool isUnreachable() const { return unreachable; } // Returns the block's merge instruction, if one exists (otherwise null). const Instruction* getMergeInstruction() const { if (instructions.size() < 2) return nullptr; const Instruction* nextToLast = (instructions.cend() - 2)->get(); switch (nextToLast->getOpCode()) { case Op::OpSelectionMerge: case Op::OpLoopMerge: return nextToLast; default: return nullptr; } return nullptr; } // Change this block into a canonical dead merge block. Delete instructions // as necessary. A canonical dead merge block has only an OpLabel and an // OpUnreachable. void rewriteAsCanonicalUnreachableMerge() { assert(localVariables.empty()); // Delete all instructions except for the label. assert(instructions.size() > 0); instructions.resize(1); successors.clear(); addInstruction(std::unique_ptr(new Instruction(Op::OpUnreachable))); } // Change this block into a canonical dead continue target branching to the // given header ID. Delete instructions as necessary. A canonical dead continue // target has only an OpLabel and an unconditional branch back to the corresponding // header. void rewriteAsCanonicalUnreachableContinue(Block* header) { assert(localVariables.empty()); // Delete all instructions except for the label. assert(instructions.size() > 0); instructions.resize(1); successors.clear(); // Add OpBranch back to the header. assert(header != nullptr); Instruction* branch = new Instruction(Op::OpBranch); branch->addIdOperand(header->getId()); addInstruction(std::unique_ptr(branch)); successors.push_back(header); } bool isTerminated() const { switch (instructions.back()->getOpCode()) { case Op::OpBranch: case Op::OpBranchConditional: case Op::OpSwitch: case Op::OpKill: case Op::OpTerminateInvocation: case Op::OpReturn: case Op::OpReturnValue: case Op::OpUnreachable: return true; default: return false; } } void dump(std::vector& out) const { instructions[0]->dump(out); for (int i = 0; i < (int)localVariables.size(); ++i) localVariables[i]->dump(out); for (int i = 1; i < (int)instructions.size(); ++i) instructions[i]->dump(out); } protected: Block(const Block&); Block& operator=(Block&); // To enforce keeping parent and ownership in sync: friend Function; std::vector > instructions; std::vector predecessors, successors; std::vector > localVariables; Function& parent; // Track source location of the last source location marker instruction. std::optional currentSourceLoc; // Track scope of the last debug scope instruction. std::optional currentDebugScope; // track whether this block is known to be uncreachable (not necessarily // true for all unreachable blocks, but should be set at least // for the extraneous ones introduced by the builder). bool unreachable; }; // The different reasons for reaching a block in the inReadableOrder traversal. enum ReachReason { // Reachable from the entry block via transfers of control, i.e. branches. ReachViaControlFlow = 0, // A continue target that is not reachable via control flow. ReachDeadContinue, // A merge block that is not reachable via control flow. ReachDeadMerge }; // Traverses the control-flow graph rooted at root in an order suited for // readable code generation. Invokes callback at every node in the traversal // order. The callback arguments are: // - the block, // - the reason we reached the block, // - if the reason was that block is an unreachable continue or unreachable merge block // then the last parameter is the corresponding header block. void inReadableOrder(Block* root, std::function callback); // // SPIR-V IR Function. // class Function { public: Function(Id id, Id resultType, Id functionType, Id firstParam, LinkageType linkage, const std::string& name, Module& parent); virtual ~Function() { for (int i = 0; i < (int)parameterInstructions.size(); ++i) delete parameterInstructions[i]; for (int i = 0; i < (int)blocks.size(); ++i) delete blocks[i]; } Id getId() const { return functionInstruction.getResultId(); } Id getParamId(int p) const { return parameterInstructions[p]->getResultId(); } Id getParamType(int p) const { return parameterInstructions[p]->getTypeId(); } void addBlock(Block* block) { blocks.push_back(block); } void removeBlock(Block* block) { auto found = find(blocks.begin(), blocks.end(), block); assert(found != blocks.end()); blocks.erase(found); delete block; } Module& getParent() const { return parent; } Block* getEntryBlock() const { return blocks.front(); } Block* getLastBlock() const { return blocks.back(); } const std::vector& getBlocks() const { return blocks; } void addLocalVariable(std::unique_ptr inst); Id getReturnType() const { return functionInstruction.getTypeId(); } Id getFuncId() const { return functionInstruction.getResultId(); } Id getFuncTypeId() const { return functionInstruction.getIdOperand(1); } void setReturnPrecision(Decoration precision) { if (precision == Decoration::RelaxedPrecision) reducedPrecisionReturn = true; } Decoration getReturnPrecision() const { return reducedPrecisionReturn ? Decoration::RelaxedPrecision : NoPrecision; } void setDebugLineInfo(Id fileName, int line, int column) { lineInstruction = std::unique_ptr{new Instruction(Op::OpLine)}; lineInstruction->reserveOperands(3); lineInstruction->addIdOperand(fileName); lineInstruction->addImmediateOperand(line); lineInstruction->addImmediateOperand(column); } bool hasDebugLineInfo() const { return lineInstruction != nullptr; } void setImplicitThis() { implicitThis = true; } bool hasImplicitThis() const { return implicitThis; } void addParamPrecision(unsigned param, Decoration precision) { if (precision == Decoration::RelaxedPrecision) reducedPrecisionParams.insert(param); } Decoration getParamPrecision(unsigned param) const { return reducedPrecisionParams.find(param) != reducedPrecisionParams.end() ? Decoration::RelaxedPrecision : NoPrecision; } void dump(std::vector& out) const { // OpLine if (lineInstruction != nullptr) { lineInstruction->dump(out); } // OpFunction functionInstruction.dump(out); // OpFunctionParameter for (int p = 0; p < (int)parameterInstructions.size(); ++p) parameterInstructions[p]->dump(out); // Blocks inReadableOrder(blocks[0], [&out](const Block* b, ReachReason, Block*) { b->dump(out); }); Instruction end(0, 0, Op::OpFunctionEnd); end.dump(out); } LinkageType getLinkType() const { return linkType; } const char* getExportName() const { return exportName.c_str(); } protected: Function(const Function&); Function& operator=(Function&); Module& parent; std::unique_ptr lineInstruction; Instruction functionInstruction; std::vector parameterInstructions; std::vector blocks; bool implicitThis; // true if this is a member function expecting to be passed a 'this' as the first argument bool reducedPrecisionReturn; std::set reducedPrecisionParams; // list of parameter indexes that need a relaxed precision arg LinkageType linkType; std::string exportName; }; // // SPIR-V IR Module. // class Module { public: Module() {} virtual ~Module() { // TODO delete things } void addFunction(Function *fun) { functions.push_back(fun); } void mapInstruction(Instruction *instruction) { spv::Id resultId = instruction->getResultId(); // map the instruction's result id if (resultId >= idToInstruction.size()) idToInstruction.resize(resultId + 16); idToInstruction[resultId] = instruction; } Instruction* getInstruction(Id id) const { return idToInstruction[id]; } const std::vector& getFunctions() const { return functions; } spv::Id getTypeId(Id resultId) const { return idToInstruction[resultId] == nullptr ? NoType : idToInstruction[resultId]->getTypeId(); } StorageClass getStorageClass(Id typeId) const { assert(idToInstruction[typeId]->getOpCode() == spv::Op::OpTypePointer); return (StorageClass)idToInstruction[typeId]->getImmediateOperand(0); } void dump(std::vector& out) const { for (int f = 0; f < (int)functions.size(); ++f) functions[f]->dump(out); } protected: Module(const Module&); std::vector functions; // map from result id to instruction having that result id std::vector idToInstruction; // map from a result id to its type id }; // // Implementation (it's here due to circular type definitions). // // Add both // - the OpFunction instruction // - all the OpFunctionParameter instructions __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, LinkageType linkage, const std::string& name, Module& parent) : parent(parent), lineInstruction(nullptr), functionInstruction(id, resultType, Op::OpFunction), implicitThis(false), reducedPrecisionReturn(false), linkType(linkage) { // OpFunction functionInstruction.reserveOperands(2); functionInstruction.addImmediateOperand(FunctionControlMask::MaskNone); functionInstruction.addIdOperand(functionType); parent.mapInstruction(&functionInstruction); parent.addFunction(this); // OpFunctionParameter Instruction* typeInst = parent.getInstruction(functionType); int numParams = typeInst->getNumOperands() - 1; for (int p = 0; p < numParams; ++p) { Instruction* param = new Instruction(firstParamId + p, typeInst->getIdOperand(p + 1), Op::OpFunctionParameter); parent.mapInstruction(param); parameterInstructions.push_back(param); } // If importing/exporting, save the function name (without the mangled parameters) for the linkage decoration if (linkType != LinkageType::Max) { exportName = name.substr(0, name.find_first_of('(')); } } __inline void Function::addLocalVariable(std::unique_ptr inst) { Instruction* raw_instruction = inst.get(); blocks[0]->addLocalVariable(std::move(inst)); parent.mapInstruction(raw_instruction); } __inline Block::Block(Id id, Function& parent) : parent(parent), unreachable(false) { instructions.push_back(std::unique_ptr(new Instruction(id, NoType, Op::OpLabel))); instructions.back()->setBlock(this); parent.getParent().mapInstruction(instructions.back().get()); } __inline void Block::addInstruction(std::unique_ptr inst) { Instruction* raw_instruction = inst.get(); instructions.push_back(std::move(inst)); raw_instruction->setBlock(this); if (raw_instruction->getResultId()) parent.getParent().mapInstruction(raw_instruction); } } // end spv namespace #endif // spvIR_H glslang-16.0.0/SPIRV/spvUtil.h000066400000000000000000000066151506534232700157660ustar00rootroot00000000000000// // Copyright (C) 2025 Jan Kelemen // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #pragma once #ifndef spvUtil_H #define spvUtil_H #include #include #include "spirv.hpp11" namespace spv { __inline uint32_t operator&(uint32_t value, spv::MemoryAccessMask mask) { return value & (unsigned)mask; } __inline bool operator==(uint32_t word, spv::FPEncoding encoding) { return word == (unsigned)encoding; } __inline bool operator!=(uint32_t word, spv::FPEncoding encoding) { return !(word == encoding); } __inline bool operator==(uint32_t word, spv::Decoration decoration) { return word == (unsigned)decoration; } __inline bool operator!=(uint32_t word, spv::Decoration decoration) { return !(word == decoration); } __inline bool operator==(uint32_t word, spv::Op op) { return word == (unsigned)op; } __inline bool operator!=(uint32_t word, spv::Op op) { return !(word == op); } __inline bool operator==(uint32_t word, spv::StorageClass storage) { return word == (unsigned)storage; } __inline bool operator!=(uint32_t word, spv::StorageClass storage) { return !(word == storage); } __inline bool anySet(spv::MemoryAccessMask value, spv::MemoryAccessMask mask) { return (value & mask) != spv::MemoryAccessMask::MaskNone; } __inline bool anySet(spv::ImageOperandsMask value, spv::ImageOperandsMask mask) { return (value & mask) != spv::ImageOperandsMask::MaskNone; } __inline bool anySet(spv::MemorySemanticsMask value, spv::MemorySemanticsMask mask) { return (value & mask) != spv::MemorySemanticsMask::MaskNone; } __inline void addMask(uint32_t& word, spv::TensorAddressingOperandsMask mask) { word |= (unsigned)mask; } __inline void addMask(spv::CooperativeMatrixOperandsMask& word, spv::CooperativeMatrixOperandsMask mask) { word = word | mask; } template> __inline To enumCast(Enum value) { return static_cast(value); } } #endif // spvUtil_H glslang-16.0.0/StandAlone/000077500000000000000000000000001506534232700152645ustar00rootroot00000000000000glslang-16.0.0/StandAlone/CMakeLists.txt000066400000000000000000000104561506534232700200320ustar00rootroot00000000000000# Copyright (C) 2020-2025 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. find_package(Python3 REQUIRED) set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h") set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py") set(GLSLANG_INTRINSIC_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../glslang/ExtensionHeaders") add_custom_command( OUTPUT ${GLSLANG_INTRINSIC_H} COMMAND Python3::Interpreter "${GLSLANG_INTRINSIC_PY}" "-i" ${GLSLANG_INTRINSIC_HEADER_DIR} "-o" ${GLSLANG_INTRINSIC_H} DEPENDS ${GLSLANG_INTRINSIC_PY} COMMENT "Generating ${GLSLANG_INTRINSIC_H}") set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H}) add_executable(glslang-standalone ${SOURCES}) if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") target_compile_options(glslang-standalone PRIVATE -Wconversion) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) target_compile_options(glslang-standalone PRIVATE -Wshorten-64-to-32) endif() set_property(TARGET glslang-standalone PROPERTY FOLDER tools) set_property(TARGET glslang-standalone PROPERTY OUTPUT_NAME glslang) glslang_set_link_args(glslang-standalone) set(LIBRARIES glslang glslang-default-resource-limits $<$,$,9.0>>:stdc++fs>) if(WIN32) set(LIBRARIES ${LIBRARIES} psapi) elseif(UNIX) if(NOT ANDROID AND NOT QNX) set(LIBRARIES ${LIBRARIES} pthread) endif() endif() target_link_libraries(glslang-standalone ${LIBRARIES}) target_include_directories(glslang-standalone PUBLIC $) if(WIN32) source_group("Source" FILES ${SOURCES}) endif() # Create a symbolic link to glslang named glslangValidator for backwards compatibility set(legacy_glslang_name "glslangValidator${CMAKE_EXECUTABLE_SUFFIX}") set(link_method create_symlink) if(WIN32 OR MINGW) set(link_method copy_if_different) endif() add_custom_command( TARGET glslang-standalone POST_BUILD COMMAND "${CMAKE_COMMAND}" -E "${link_method}" "\$" "${legacy_glslang_name}" WORKING_DIRECTORY "\$" VERBATIM ) if(GLSLANG_ENABLE_INSTALL) install(TARGETS glslang-standalone EXPORT glslang-targets) # Create the same symlink at install time install(CODE "\ message(STATUS \"Installing (${link_method}): \$ -> \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}\") execute_process( COMMAND \"\${CMAKE_COMMAND}\" -E ${link_method} [=[\$]=] [=[${legacy_glslang_name}]=] WORKING_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}\" ) ") endif() glslang-16.0.0/StandAlone/DirStackFileIncluder.h000066400000000000000000000132261506534232700214330ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2017 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #pragma once #include #include #include #include #include #include "./../glslang/Public/ShaderLang.h" // Default include class for normal include convention of search backward // through the stack of active include paths (for nested includes). // Can be overridden to customize. class DirStackFileIncluder : public glslang::TShader::Includer { public: DirStackFileIncluder() : externalLocalDirectoryCount(0) { } virtual IncludeResult* includeLocal(const char* headerName, const char* includerName, size_t inclusionDepth) override { return readLocalPath(headerName, includerName, (int)inclusionDepth); } virtual IncludeResult* includeSystem(const char* headerName, const char* /*includerName*/, size_t /*inclusionDepth*/) override { return readSystemPath(headerName); } // Externally set directories. E.g., from a command-line -I. // - Most-recently pushed are checked first. // - All these are checked after the parse-time stack of local directories // is checked. // - This only applies to the "local" form of #include. // - Makes its own copy of the path. virtual void pushExternalLocalDirectory(const std::string& dir) { directoryStack.push_back(dir); externalLocalDirectoryCount = (int)directoryStack.size(); } virtual void releaseInclude(IncludeResult* result) override { if (result != nullptr) { delete [] static_cast(result->userData); delete result; } } virtual std::set getIncludedFiles() { return includedFiles; } virtual ~DirStackFileIncluder() override { } protected: typedef char tUserDataElement; std::vector directoryStack; int externalLocalDirectoryCount; std::set includedFiles; // Search for a valid "local" path based on combining the stack of include // directories and the nominal name of the header. virtual IncludeResult* readLocalPath(const char* headerName, const char* includerName, int depth) { // Discard popped include directories, and // initialize when at parse-time first level. directoryStack.resize(depth + externalLocalDirectoryCount); if (depth == 1) directoryStack.back() = getDirectory(includerName); // Find a directory that works, using a reverse search of the include stack. for (auto it = directoryStack.rbegin(); it != directoryStack.rend(); ++it) { std::string path = *it + '/' + headerName; std::replace(path.begin(), path.end(), '\\', '/'); std::ifstream file(path, std::ios_base::binary | std::ios_base::ate); if (file) { directoryStack.push_back(getDirectory(path)); includedFiles.insert(path); return newIncludeResult(path, file, (int)file.tellg()); } } return nullptr; } // Search for a valid path. // Not implemented yet; returning nullptr signals failure to find. virtual IncludeResult* readSystemPath(const char* /*headerName*/) const { return nullptr; } // Do actual reading of the file, filling in a new include result. virtual IncludeResult* newIncludeResult(const std::string& path, std::ifstream& file, int length) const { char* content = new tUserDataElement [length]; file.seekg(0, file.beg); file.read(content, length); return new IncludeResult(path, content, length, content); } // If no path markers, return current working directory. // Otherwise, strip file name and return path leading up to it. virtual std::string getDirectory(const std::string path) const { size_t last = path.find_last_of("/\\"); return last == std::string::npos ? "." : path.substr(0, last); } }; glslang-16.0.0/StandAlone/StandAlone.cpp000066400000000000000000002714651506534232700200370ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013-2016 LunarG, Inc. // Copyright (C) 2016-2020 Google, Inc. // Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // this only applies to the standalone wrapper, not the front end in general #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif #include "glslang/Public/ResourceLimits.h" #include "Worklist.h" #include "DirStackFileIncluder.h" #include "./../glslang/Public/ShaderLang.h" #include "../glslang/MachineIndependent/localintermediate.h" #include "../SPIRV/GlslangToSpv.h" #include "../SPIRV/GLSL.std.450.h" #include "../SPIRV/disassemble.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "../glslang/OSDependent/osinclude.h" // Build-time generated includes #include "glslang/build_info.h" #include "glslang/glsl_intrinsic_header.h" extern "C" { GLSLANG_EXPORT void ShOutputHtml(); } // Command-line options enum TOptions : uint64_t { EOptionNone = 0, EOptionIntermediate = (1ull << 0), EOptionSuppressInfolog = (1ull << 1), EOptionMemoryLeakMode = (1ull << 2), EOptionRelaxedErrors = (1ull << 3), EOptionGiveWarnings = (1ull << 4), EOptionLinkProgram = (1ull << 5), EOptionMultiThreaded = (1ull << 6), EOptionDumpConfig = (1ull << 7), EOptionDumpReflection = (1ull << 8), EOptionSuppressWarnings = (1ull << 9), EOptionDumpVersions = (1ull << 10), EOptionSpv = (1ull << 11), EOptionHumanReadableSpv = (1ull << 12), EOptionVulkanRules = (1ull << 13), EOptionDefaultDesktop = (1ull << 14), EOptionOutputPreprocessed = (1ull << 15), EOptionOutputHexadecimal = (1ull << 16), EOptionReadHlsl = (1ull << 17), EOptionCascadingErrors = (1ull << 18), EOptionAutoMapBindings = (1ull << 19), EOptionFlattenUniformArrays = (1ull << 20), EOptionNoStorageFormat = (1ull << 21), EOptionKeepUncalled = (1ull << 22), EOptionHlslOffsets = (1ull << 23), EOptionHlslIoMapping = (1ull << 24), EOptionAutoMapLocations = (1ull << 25), EOptionDebug = (1ull << 26), EOptionStdin = (1ull << 27), EOptionOptimizeDisable = (1ull << 28), EOptionOptimizeSize = (1ull << 29), EOptionInvertY = (1ull << 30), EOptionDumpBareVersion = (1ull << 31), EOptionCompileOnly = (1ull << 32), EOptionDisplayErrorColumn = (1ull << 33), EOptionLinkTimeOptimization = (1ull << 34), EOptionValidateCrossStageIO = (1ull << 35), }; bool targetHlslFunctionality1 = false; bool SpvToolsDisassembler = false; bool SpvToolsValidate = false; bool NaNClamp = false; bool stripDebugInfo = false; bool emitNonSemanticShaderDebugInfo = false; bool emitNonSemanticShaderDebugSource = false; bool beQuiet = false; bool VulkanRulesRelaxed = false; bool autoSampledTextures = false; // // Return codes from main/exit(). // enum TFailCode { ESuccess = 0, EFailUsage, EFailCompile, EFailLink, EFailCompilerCreate, EFailThreadCreate, EFailLinkerCreate }; // // Forward declarations. // EShLanguage FindLanguage(const std::string& name, bool parseSuffix=true); void CompileFile(const char* fileName, ShHandle); void usage(); char* ReadFileData(const char* fileName); void FreeFileData(char* data); void InfoLogMsg(const char* msg, const char* name, const int num); // Globally track if any compile or link failure. std::atomic CompileFailed{0}; std::atomic LinkFailed{0}; std::atomic CompileOrLinkFailed{0}; // array of unique places to leave the shader names and infologs for the asynchronous compiles std::vector> WorkItems; std::string ConfigFile; // // Parse either a .conf file provided by the user or the default from glslang::DefaultTBuiltInResource // void ProcessConfigFile() { if (ConfigFile.size() == 0) *GetResources() = *GetDefaultResources(); else { char* configString = ReadFileData(ConfigFile.c_str()); DecodeResourceLimits(GetResources(), configString); FreeFileData(configString); } } int ReflectOptions = EShReflectionDefault; std::underlying_type_t Options = EOptionNone; const char* ExecutableName = nullptr; const char* binaryFileName = nullptr; const char* depencyFileName = nullptr; const char* entryPointName = nullptr; const char* sourceEntryPointName = nullptr; const char* shaderStageName = nullptr; const char* variableName = nullptr; bool HlslEnable16BitTypes = false; bool HlslDX9compatible = false; bool HlslDxPositionW = false; bool EnhancedMsgs = false; bool AbsolutePath = false; bool DumpBuiltinSymbols = false; std::vector IncludeDirectoryList; // Source environment // (source 'Client' is currently the same as target 'Client') int ClientInputSemanticsVersion = 100; // Target environment glslang::EShClient Client = glslang::EShClientNone; // will stay EShClientNone if only validating glslang::EShTargetClientVersion ClientVersion; // not valid until Client is set 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 Processes; // what should be recorded by OpModuleProcessed, or equivalent // Per descriptor-set binding base data typedef std::map TPerSetBaseBinding; std::vector> uniformLocationOverrides; int uniformBase = 0; std::array, glslang::EResCount> baseBinding; std::array, glslang::EResCount> baseBindingForSet; std::array, EShLangCount> baseResourceSetBinding; std::vector> blockStorageOverrides; bool setGlobalUniformBlock = false; std::string globalUniformName; unsigned int globalUniformBinding; unsigned int globalUniformSet; bool setGlobalBufferBlock = false; std::string atomicCounterBlockName; unsigned int atomicCounterBlockSet; // Add things like "#define ..." to a preamble to use in the beginning of the shader. class TPreamble { public: TPreamble() { } bool isSet() const { return text.size() > 0; } const char* get() const { return text.c_str(); } // #define... void addDef(std::string def) { text.append("#define "); fixLine(def); Processes.push_back("define-macro "); Processes.back().append(def); // The first "=" needs to turn into a space const size_t equal = def.find_first_of("="); if (equal != def.npos) def[equal] = ' '; text.append(def); text.append("\n"); } // #undef... void addUndef(std::string undef) { text.append("#undef "); fixLine(undef); Processes.push_back("undef-macro "); Processes.back().append(undef); text.append(undef); text.append("\n"); } void addText(std::string preambleText) { fixLine(preambleText); Processes.push_back("preamble-text"); Processes.back().append(preambleText); text.append(preambleText); text.append("\n"); } protected: void fixLine(std::string& line) { // Can't go past a newline in the line const size_t end = line.find_first_of("\n"); if (end != line.npos) line = line.substr(0, end); } std::string text; // contents of preamble }; // Track the user's #define and #undef from the command line. TPreamble UserPreamble; std::string PreambleString; // // Create the default name for saving a binary if -o is not provided. // const char* GetBinaryName(EShLanguage stage) { const char* name; if (binaryFileName == nullptr) { switch (stage) { case EShLangVertex: name = "vert.spv"; break; case EShLangTessControl: name = "tesc.spv"; break; case EShLangTessEvaluation: name = "tese.spv"; break; case EShLangGeometry: name = "geom.spv"; break; case EShLangFragment: name = "frag.spv"; break; case EShLangCompute: name = "comp.spv"; break; case EShLangRayGen: name = "rgen.spv"; break; case EShLangIntersect: name = "rint.spv"; break; case EShLangAnyHit: name = "rahit.spv"; break; case EShLangClosestHit: name = "rchit.spv"; break; case EShLangMiss: name = "rmiss.spv"; break; case EShLangCallable: name = "rcall.spv"; break; case EShLangMesh : name = "mesh.spv"; break; case EShLangTask : name = "task.spv"; break; default: name = "unknown"; break; } } else name = binaryFileName; return name; } // // *.conf => this is a config file that can set limits/resources // bool SetConfigFile(const std::string& name) { if (name.size() < 5) return false; if (name.compare(name.size() - 5, 5, ".conf") == 0) { ConfigFile = name; return true; } return false; } // // Give error and exit with failure code. // void Error(const char* message, const char* detail = nullptr) { fprintf(stderr, "%s: Error: ", ExecutableName); if (detail != nullptr) fprintf(stderr, "%s: ", detail); fprintf(stderr, "%s (use -h for usage)\n", message); exit(EFailUsage); } // // Process an optional binding base of one the forms: // --argname [stage] base // base for stage (if given) or all stages (if not) // --argname [stage] [base set]... // set/base pairs: set the base for given binding set. // Where stage is one of the forms accepted by FindLanguage, and base is an integer // void ProcessBindingBase(int& argc, char**& argv, glslang::TResourceType res) { if (argc < 2) usage(); EShLanguage lang = EShLangCount; int singleBase = 0; TPerSetBaseBinding perSetBase; int arg = 1; // Parse stage, if given if (!isdigit(argv[arg][0])) { if (argc < 3) // this form needs one more argument usage(); lang = FindLanguage(argv[arg++], false); } if ((argc - arg) >= 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) { // Parse a per-set binding base do { const int baseNum = atoi(argv[arg++]); const int setNum = atoi(argv[arg++]); perSetBase[setNum] = baseNum; } while ((argc - arg) >= 2 && isdigit(argv[arg + 0][0]) && isdigit(argv[arg + 1][0])); } else { // Parse single binding base singleBase = atoi(argv[arg++]); } argc -= (arg-1); argv += (arg-1); // Set one or all languages const int langMin = (lang < EShLangCount) ? lang+0 : 0; const int langMax = (lang < EShLangCount) ? lang+1 : EShLangCount; for (int lang = langMin; lang < langMax; ++lang) { if (!perSetBase.empty()) baseBindingForSet[res][lang].insert(perSetBase.begin(), perSetBase.end()); else baseBinding[res][lang] = singleBase; } } void ProcessResourceSetBindingBase(int& argc, char**& argv, std::array, EShLangCount>& base) { if (argc < 2) usage(); if (!isdigit(argv[1][0])) { if (argc < 3) // this form needs one more argument usage(); // Parse form: --argname stage [regname set base...], or: // --argname stage set const EShLanguage lang = FindLanguage(argv[1], false); argc--; argv++; while (argc > 1 && argv[1] != nullptr && argv[1][0] != '-') { base[lang].push_back(argv[1]); argc--; argv++; } // Must have one arg, or a multiple of three (for [regname set binding] triples) if (base[lang].size() != 1 && (base[lang].size() % 3) != 0) usage(); } else { // Parse form: --argname set for (int lang=0; lang>& storage) { if (argc < 3) usage(); glslang::TBlockStorageClass blockStorage = glslang::EbsNone; std::string strBacking(argv[2]); if (strBacking == "uniform") blockStorage = glslang::EbsUniform; else if (strBacking == "buffer") blockStorage = glslang::EbsStorageBuffer; else if (strBacking == "push_constant") blockStorage = glslang::EbsPushConstant; else { printf("%s: invalid block storage\n", strBacking.c_str()); usage(); } storage.push_back(std::make_pair(std::string(argv[1]), blockStorage)); argc -= 2; argv += 2; } inline bool isNonDigit(char c) { // a non-digit character valid in a glsl identifier return (c == '_') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); } // whether string isa valid identifier to be used in glsl bool isValidIdentifier(const char* str) { std::string idn(str); if (idn.length() == 0) { return false; } if (idn.length() >= 3 && idn.substr(0, 3) == "gl_") { // identifiers startin with "gl_" are reserved return false; } if (!isNonDigit(idn[0])) { return false; } for (unsigned int i = 1; i < idn.length(); ++i) { if (!(isdigit(idn[i]) || isNonDigit(idn[i]))) { return false; } } return true; } // Process settings for either the global buffer block or global unfirom block // of the form: // --argname name set binding void ProcessGlobalBlockSettings(int& argc, char**& argv, std::string* name, unsigned int* set, unsigned int* binding) { if (argc < 4) usage(); unsigned int curArg = 1; assert(name || set || binding); if (name) { if (!isValidIdentifier(argv[curArg])) { printf("%s: invalid identifier\n", argv[curArg]); usage(); } *name = argv[curArg]; curArg++; } if (set) { errno = 0; int setVal = static_cast(::strtol(argv[curArg], nullptr, 10)); if (errno || setVal < 0) { printf("%s: invalid set\n", argv[curArg]); usage(); } *set = setVal; curArg++; } if (binding) { errno = 0; int bindingVal = static_cast(::strtol(argv[curArg], nullptr, 10)); if (errno || bindingVal < 0) { printf("%s: invalid binding\n", argv[curArg]); usage(); } *binding = bindingVal; curArg++; } argc -= (curArg - 1); argv += (curArg - 1); } // // Do all command-line argument parsing. This includes building up the work-items // to be processed later, and saving all the command-line options. // // Does not return (it exits) if command-line is fatally flawed. // void ProcessArguments(std::vector>& workItems, int argc, char* argv[]) { for (int res = 0; res < glslang::EResCount; ++res) baseBinding[res].fill(0); ExecutableName = argv[0]; workItems.reserve(argc); const auto bumpArg = [&]() { if (argc > 0) { argc--; argv++; } }; // read a string directly attached to a single-letter option const auto getStringOperand = [&](const char* desc) { if (argv[0][2] == 0) { printf("%s must immediately follow option (no spaces)\n", desc); exit(EFailUsage); } return argv[0] + 2; }; // read a number attached to a single-letter option const auto getAttachedNumber = [&](const char* desc) { int num = atoi(argv[0] + 2); if (num == 0) { printf("%s: expected attached non-0 number\n", desc); exit(EFailUsage); } return num; }; // minimum needed (without overriding something else) to target Vulkan SPIR-V const auto setVulkanSpv = []() { if (Client == glslang::EShClientNone) ClientVersion = glslang::EShTargetVulkan_1_0; Client = glslang::EShClientVulkan; Options |= EOptionSpv; Options |= EOptionVulkanRules; Options |= EOptionLinkProgram; }; // minimum needed (without overriding something else) to target OpenGL SPIR-V const auto setOpenGlSpv = []() { if (Client == glslang::EShClientNone) ClientVersion = glslang::EShTargetOpenGL_450; Client = glslang::EShClientOpenGL; Options |= EOptionSpv; Options |= EOptionLinkProgram; // undo a -H default to Vulkan Options &= ~EOptionVulkanRules; }; const auto getUniformOverride = [getStringOperand]() { const char *arg = getStringOperand("-u:"); const char *split = strchr(arg, ':'); if (split == nullptr) { printf("%s: missing location\n", arg); exit(EFailUsage); } errno = 0; int location = static_cast(::strtol(split + 1, nullptr, 10)); if (errno) { printf("%s: invalid location\n", arg); exit(EFailUsage); } return std::make_pair(std::string(arg, split - arg), location); }; for (bumpArg(); argc >= 1; bumpArg()) { if (argv[0][0] == '-') { switch (argv[0][1]) { case '-': { std::string lowerword(argv[0]+2); std::transform(lowerword.begin(), lowerword.end(), lowerword.begin(), ::tolower); // handle --word style options if (lowerword == "auto-map-bindings" || // synonyms lowerword == "auto-map-binding" || lowerword == "amb") { Options |= EOptionAutoMapBindings; } else if (lowerword == "auto-map-locations" || // synonyms lowerword == "aml") { Options |= EOptionAutoMapLocations; } else if (lowerword == "uniform-base") { if (argc <= 1) Error("no provided", lowerword.c_str()); uniformBase = static_cast(::strtol(argv[1], nullptr, 10)); bumpArg(); break; } else if (lowerword == "client") { if (argc > 1) { if (strcmp(argv[1], "vulkan100") == 0) setVulkanSpv(); else if (strcmp(argv[1], "opengl100") == 0) setOpenGlSpv(); else Error("expects vulkan100 or opengl100", lowerword.c_str()); } else Error("expects vulkan100 or opengl100", lowerword.c_str()); bumpArg(); } else if (lowerword == "define-macro" || lowerword == "d") { if (argc > 1) UserPreamble.addDef(argv[1]); else Error("expects ", argv[0]); bumpArg(); } else if (lowerword == "dump-builtin-symbols") { DumpBuiltinSymbols = true; } else if (lowerword == "entry-point") { entryPointName = argv[1]; if (argc <= 1) Error("no provided", lowerword.c_str()); bumpArg(); } else if (lowerword == "flatten-uniform-arrays" || // synonyms 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" || lowerword == "hlsl-iomapper" || lowerword == "hlsl-iomapping") { Options |= EOptionHlslIoMapping; } else if (lowerword == "hlsl-enable-16bit-types") { 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 == "absolute-path") { AbsolutePath = true; } else if (lowerword == "auto-sampled-textures") { autoSampledTextures = true; } else if (lowerword == "invert-y" || // synonyms lowerword == "iy") { Options |= EOptionInvertY; } else if (lowerword == "keep-uncalled" || // synonyms lowerword == "ku") { Options |= EOptionKeepUncalled; } else if (lowerword == "nan-clamp") { NaNClamp = true; } else if (lowerword == "no-storage-format" || // synonyms lowerword == "nsf") { Options |= EOptionNoStorageFormat; } else if (lowerword == "preamble-text" || lowerword == "p") { if (argc > 1) UserPreamble.addText(argv[1]); else Error("expects ", argv[0]); bumpArg(); } else if (lowerword == "relaxed-errors") { Options |= EOptionRelaxedErrors; } else if (lowerword == "reflect-strict-array-suffix") { ReflectOptions |= EShReflectionStrictArraySuffix; } else if (lowerword == "reflect-basic-array-suffix") { ReflectOptions |= EShReflectionBasicArraySuffix; } else if (lowerword == "reflect-intermediate-io") { ReflectOptions |= EShReflectionIntermediateIO; } else if (lowerword == "reflect-separate-buffers") { ReflectOptions |= EShReflectionSeparateBuffers; } else if (lowerword == "reflect-all-block-variables") { ReflectOptions |= EShReflectionAllBlockVariables; } else if (lowerword == "reflect-unwrap-io-blocks") { ReflectOptions |= EShReflectionUnwrapIOBlocks; } else if (lowerword == "reflect-all-io-variables") { ReflectOptions |= EShReflectionAllIOVariables; } else if (lowerword == "reflect-shared-std140-ubo") { ReflectOptions |= EShReflectionSharedStd140UBO; } else if (lowerword == "reflect-shared-std140-ssbo") { ReflectOptions |= EShReflectionSharedStd140SSBO; } else if (lowerword == "resource-set-bindings" || // synonyms lowerword == "resource-set-binding" || lowerword == "rsb") { ProcessResourceSetBindingBase(argc, argv, baseResourceSetBinding); } else if (lowerword == "set-block-storage" || lowerword == "sbs") { ProcessBlockStorage(argc, argv, blockStorageOverrides); } else if (lowerword == "set-atomic-counter-block" || lowerword == "sacb") { ProcessGlobalBlockSettings(argc, argv, &atomicCounterBlockName, &atomicCounterBlockSet, nullptr); setGlobalBufferBlock = true; } else if (lowerword == "set-default-uniform-block" || lowerword == "sdub") { ProcessGlobalBlockSettings(argc, argv, &globalUniformName, &globalUniformSet, &globalUniformBinding); setGlobalUniformBlock = true; } else if (lowerword == "shift-image-bindings" || // synonyms lowerword == "shift-image-binding" || lowerword == "sib") { ProcessBindingBase(argc, argv, glslang::EResImage); } else if (lowerword == "shift-sampler-bindings" || // synonyms lowerword == "shift-sampler-binding" || lowerword == "ssb") { ProcessBindingBase(argc, argv, glslang::EResSampler); } else if (lowerword == "shift-uav-bindings" || // synonyms lowerword == "shift-uav-binding" || lowerword == "suavb") { ProcessBindingBase(argc, argv, glslang::EResUav); } else if (lowerword == "shift-texture-bindings" || // synonyms lowerword == "shift-texture-binding" || lowerword == "stb") { ProcessBindingBase(argc, argv, glslang::EResTexture); } else if (lowerword == "shift-ubo-bindings" || // synonyms lowerword == "shift-ubo-binding" || lowerword == "shift-cbuffer-bindings" || lowerword == "shift-cbuffer-binding" || lowerword == "sub" || lowerword == "scb") { ProcessBindingBase(argc, argv, glslang::EResUbo); } else if (lowerword == "shift-ssbo-bindings" || // synonyms lowerword == "shift-ssbo-binding" || lowerword == "sbb") { ProcessBindingBase(argc, argv, glslang::EResSsbo); } else if (lowerword == "source-entrypoint" || // synonyms lowerword == "sep") { if (argc <= 1) Error("no provided", lowerword.c_str()); sourceEntryPointName = argv[1]; bumpArg(); break; } else if (lowerword == "spirv-dis") { SpvToolsDisassembler = true; } else if (lowerword == "spirv-val") { SpvToolsValidate = true; } else if (lowerword == "stdin") { Options |= EOptionStdin; shaderStageName = argv[1]; } else if (lowerword == "suppress-warnings") { Options |= EOptionSuppressWarnings; } else if (lowerword == "target-env") { if (argc > 1) { if (strcmp(argv[1], "vulkan1.0") == 0) { setVulkanSpv(); ClientVersion = glslang::EShTargetVulkan_1_0; } else if (strcmp(argv[1], "vulkan1.1") == 0) { setVulkanSpv(); ClientVersion = glslang::EShTargetVulkan_1_1; } else if (strcmp(argv[1], "vulkan1.2") == 0) { setVulkanSpv(); ClientVersion = glslang::EShTargetVulkan_1_2; } else if (strcmp(argv[1], "vulkan1.3") == 0) { setVulkanSpv(); ClientVersion = glslang::EShTargetVulkan_1_3; } else if (strcmp(argv[1], "vulkan1.4") == 0) { setVulkanSpv(); ClientVersion = glslang::EShTargetVulkan_1_4; } else if (strcmp(argv[1], "opengl") == 0) { setOpenGlSpv(); ClientVersion = glslang::EShTargetOpenGL_450; } else if (strcmp(argv[1], "spirv1.0") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_0; } else if (strcmp(argv[1], "spirv1.1") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_1; } else if (strcmp(argv[1], "spirv1.2") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_2; } else if (strcmp(argv[1], "spirv1.3") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_3; } else if (strcmp(argv[1], "spirv1.4") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_4; } else if (strcmp(argv[1], "spirv1.5") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_5; } else 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,\n" "vulkan1.3, vulkan1.4, opengl, spirv1.0, spirv1.1, spirv1.2, spirv1.3,\n" "spirv1.4, spirv1.5 or spirv1.6"); } bumpArg(); } else if (lowerword == "undef-macro" || lowerword == "u") { if (argc > 1) UserPreamble.addUndef(argv[1]); else Error("expects ", argv[0]); bumpArg(); } else if (lowerword == "variable-name" || // synonyms lowerword == "vn") { Options |= EOptionOutputHexadecimal; if (argc <= 1) Error("no provided", lowerword.c_str()); variableName = argv[1]; bumpArg(); break; } else if (lowerword == "quiet") { beQuiet = true; } else if (lowerword == "depfile") { if (argc <= 1) Error("no provided", lowerword.c_str()); depencyFileName = argv[1]; bumpArg(); } else if (lowerword == "version") { Options |= EOptionDumpVersions; } else if (lowerword == "no-link") { Options |= EOptionCompileOnly; } else if (lowerword == "error-column") { Options |= EOptionDisplayErrorColumn; } else if (lowerword == "lto") { Options |= EOptionLinkTimeOptimization; } else if (lowerword == "validate-io") { Options |= EOptionValidateCrossStageIO; } else if (lowerword == "help") { usage(); break; } else { Error("unrecognized command-line option", argv[0]); } } break; case 'C': Options |= EOptionCascadingErrors; break; case 'D': if (argv[0][2] == 0) Options |= EOptionReadHlsl; else UserPreamble.addDef(getStringOperand("-D")); break; case 'u': uniformLocationOverrides.push_back(getUniformOverride()); break; case 'E': Options |= EOptionOutputPreprocessed; break; case 'G': // OpenGL client setOpenGlSpv(); if (argv[0][2] != 0) ClientInputSemanticsVersion = getAttachedNumber("-G client input semantics"); if (ClientInputSemanticsVersion != 100) Error("unknown client version for -G, should be 100"); break; case 'H': Options |= EOptionHumanReadableSpv; if ((Options & EOptionSpv) == 0) { // default to Vulkan setVulkanSpv(); } break; case 'I': IncludeDirectoryList.push_back(getStringOperand("-I include path")); break; case 'O': if (argv[0][2] == 'd') Options |= EOptionOptimizeDisable; else if (argv[0][2] == 's') #if ENABLE_OPT Options |= EOptionOptimizeSize; #else Error("-Os not available; optimizer not linked"); #endif else Error("unknown -O option"); break; case 'P': UserPreamble.addText(getStringOperand("-P")); break; case 'R': VulkanRulesRelaxed = true; break; case 'S': if (argc <= 1) Error("no specified for -S"); shaderStageName = argv[1]; bumpArg(); break; case 'U': UserPreamble.addUndef(getStringOperand("-U")); break; case 'V': setVulkanSpv(); if (argv[0][2] != 0) ClientInputSemanticsVersion = getAttachedNumber("-V client input semantics"); if (ClientInputSemanticsVersion != 100) Error("unknown client version for -V, should be 100"); break; case 'c': Options |= EOptionDumpConfig; break; case 'd': if (strncmp(&argv[0][1], "dumpversion", strlen(&argv[0][1]) + 1) == 0 || strncmp(&argv[0][1], "dumpfullversion", strlen(&argv[0][1]) + 1) == 0) Options |= EOptionDumpBareVersion; else Options |= EOptionDefaultDesktop; break; case 'e': entryPointName = argv[1]; if (argc <= 1) Error("no provided for -e"); bumpArg(); break; case 'f': if (strcmp(&argv[0][2], "hlsl_functionality1") == 0) targetHlslFunctionality1 = true; else Error("-f: expected hlsl_functionality1"); break; case 'g': // Override previous -g or -g0 argument stripDebugInfo = false; emitNonSemanticShaderDebugInfo = false; Options &= ~EOptionDebug; if (argv[0][2] == '0') stripDebugInfo = true; else { Options |= EOptionDebug; if (argv[0][2] == 'V') { emitNonSemanticShaderDebugInfo = true; if (argv[0][3] == 'S') { emitNonSemanticShaderDebugSource = true; } else { emitNonSemanticShaderDebugSource = false; } } } break; case 'h': usage(); break; case 'i': Options |= EOptionIntermediate; break; case 'l': Options |= EOptionLinkProgram; break; case 'm': Options |= EOptionMemoryLeakMode; break; case 'o': if (argc <= 1) Error("no provided for -o"); binaryFileName = argv[1]; bumpArg(); break; case 'q': Options |= EOptionDumpReflection; break; case 'r': Options |= EOptionRelaxedErrors; break; case 's': Options |= EOptionSuppressInfolog; break; case 't': Options |= EOptionMultiThreaded; break; case 'v': Options |= EOptionDumpVersions; break; case 'w': Options |= EOptionSuppressWarnings; break; case 'x': Options |= EOptionOutputHexadecimal; break; default: Error("unrecognized command-line option", argv[0]); break; } } else { std::string name(argv[0]); if (! SetConfigFile(name)) { workItems.push_back(std::unique_ptr(new glslang::TWorkItem(name))); } } } // Make sure that -S is always specified if --stdin is specified if ((Options & EOptionStdin) && shaderStageName == nullptr) Error("must provide -S when --stdin is given"); // Make sure that -E is not specified alongside linking (which includes SPV generation) // Or things that require linking if (Options & EOptionOutputPreprocessed) { if (Options & EOptionLinkProgram) Error("can't use -E when linking is selected"); if (Options & EOptionDumpReflection) Error("reflection requires linking, which can't be used when -E when is selected"); } // reflection requires linking if ((Options & EOptionDumpReflection) && !(Options & EOptionLinkProgram)) Error("reflection requires -l for linking"); // link time optimization makes no sense unless linking if ((Options & EOptionLinkTimeOptimization) && !(Options & EOptionLinkProgram)) Error("link time optimization requires -l for linking"); // cross stage IO validation makes no sense unless linking if ((Options & EOptionValidateCrossStageIO) && !(Options & EOptionLinkProgram)) Error("cross stage IO validation requires -l for linking"); // -o or -x makes no sense if there is no target binary if (binaryFileName && (Options & EOptionSpv) == 0) Error("no binary generation requested (e.g., -V)"); if ((Options & EOptionFlattenUniformArrays) != 0 && (Options & EOptionReadHlsl) == 0) Error("uniform array flattening only valid when compiling HLSL source."); if ((Options & EOptionReadHlsl) && (Client == glslang::EShClientOpenGL)) { Error("Using HLSL input under OpenGL semantics is not currently supported."); } // rationalize client and target language if (TargetLanguage == glslang::EShTargetNone) { switch (ClientVersion) { case glslang::EShTargetVulkan_1_0: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_0; break; case glslang::EShTargetVulkan_1_1: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_3; break; case glslang::EShTargetVulkan_1_2: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_5; break; case glslang::EShTargetVulkan_1_3: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_6; break; case glslang::EShTargetVulkan_1_4: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_6; break; case glslang::EShTargetOpenGL_450: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_0; break; default: break; } } if (TargetLanguage != glslang::EShTargetNone && Client == glslang::EShClientNone) Error("To generate SPIR-V, also specify client semantics. See -G and -V."); } // // Translate the meaningful subset of command-line options to parser-behavior options. // void SetMessageOptions(EShMessages& messages) { if (Options & EOptionRelaxedErrors) messages = (EShMessages)(messages | EShMsgRelaxedErrors); if (Options & EOptionIntermediate) messages = (EShMessages)(messages | EShMsgAST); if (Options & EOptionSuppressWarnings) messages = (EShMessages)(messages | EShMsgSuppressWarnings); if (Options & EOptionSpv) messages = (EShMessages)(messages | EShMsgSpvRules); if (Options & EOptionVulkanRules) messages = (EShMessages)(messages | EShMsgVulkanRules); if (Options & EOptionOutputPreprocessed) messages = (EShMessages)(messages | EShMsgOnlyPreprocessor); if (Options & EOptionReadHlsl) messages = (EShMessages)(messages | EShMsgReadHlsl); if (Options & EOptionCascadingErrors) messages = (EShMessages)(messages | EShMsgCascadingErrors); if (Options & EOptionKeepUncalled) messages = (EShMessages)(messages | EShMsgKeepUncalled); if (Options & EOptionHlslOffsets) messages = (EShMessages)(messages | EShMsgHlslOffsets); if (Options & EOptionDebug) messages = (EShMessages)(messages | EShMsgDebugInfo); if (HlslEnable16BitTypes) messages = (EShMessages)(messages | EShMsgHlslEnable16BitTypes); if ((Options & EOptionOptimizeDisable) || !ENABLE_OPT) messages = (EShMessages)(messages | EShMsgHlslLegalization); if (HlslDX9compatible) messages = (EShMessages)(messages | EShMsgHlslDX9Compatible); if (DumpBuiltinSymbols) messages = (EShMessages)(messages | EShMsgBuiltinSymbolTable); if (EnhancedMsgs) messages = (EShMessages)(messages | EShMsgEnhanced); if (AbsolutePath) messages = (EShMessages)(messages | EShMsgAbsolutePath); if (Options & EOptionDisplayErrorColumn) messages = (EShMessages)(messages | EShMsgDisplayErrorColumn); if (Options & EOptionLinkTimeOptimization) messages = (EShMessages)(messages | EShMsgLinkTimeOptimization); if (Options & EOptionValidateCrossStageIO) messages = (EShMessages)(messages | EShMsgValidateCrossStageIO); } // // Thread entry point, for non-linking asynchronous mode. // void CompileShaders(glslang::TWorklist& worklist) { if (Options & EOptionDebug) Error("cannot generate debug information unless linking to generate code"); // NOTE: TWorkList::remove is thread-safe glslang::TWorkItem* workItem; if (Options & EOptionStdin) { if (worklist.remove(workItem)) { ShHandle compiler = ShConstructCompiler(FindLanguage("stdin"), 0); if (compiler == nullptr) return; CompileFile("stdin", compiler); if (! (Options & EOptionSuppressInfolog)) workItem->results = ShGetInfoLog(compiler); ShDestruct(compiler); } } else { while (worklist.remove(workItem)) { ShHandle compiler = ShConstructCompiler(FindLanguage(workItem->name), 0); if (compiler == nullptr) return; CompileFile(workItem->name.c_str(), compiler); if (! (Options & EOptionSuppressInfolog)) workItem->results = ShGetInfoLog(compiler); ShDestruct(compiler); } } } // Outputs the given string, but only if it is non-null and non-empty. // This prevents erroneous newlines from appearing. void PutsIfNonEmpty(const char* str) { if (str && str[0]) { puts(str); } } // Outputs the given string to stderr, but only if it is non-null and non-empty. // This prevents erroneous newlines from appearing. void StderrIfNonEmpty(const char* str) { if (str && str[0]) fprintf(stderr, "%s\n", str); } // Simple bundling of what makes a compilation unit for ease in passing around, // and separation of handling file IO versus API (programmatic) compilation. struct ShaderCompUnit { EShLanguage stage; static const int maxCount = 1; int count; // live number of strings/names const char* text[maxCount]; // memory owned/managed externally std::string fileName[maxCount]; // hold's the memory, but... const char* fileNameList[maxCount]; // downstream interface wants pointers ShaderCompUnit(EShLanguage stage) : stage(stage), count(0) { } ShaderCompUnit(const ShaderCompUnit& rhs) { stage = rhs.stage; count = rhs.count; for (int i = 0; i < count; ++i) { fileName[i] = rhs.fileName[i]; text[i] = rhs.text[i]; fileNameList[i] = rhs.fileName[i].c_str(); } } void addString(std::string& ifileName, const char* itext) { assert(count < maxCount); fileName[count] = ifileName; text[count] = itext; fileNameList[count] = fileName[count].c_str(); ++count; } }; // 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& binaryFiles, const std::vector& sources) { std::ofstream file(depfile); if (file.fail()) return false; 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; } return true; } // // For linking mode: Will independently parse each compilation unit, but then put them // in the same program and link them together, making at most one linked module per // pipeline stage. // // Uses the new C++ interface instead of the old handle-based interface. // void CompileAndLinkShaderUnits(std::vector compUnits) { // keep track of what to free std::list shaders; EShMessages messages = EShMsgDefault; SetMessageOptions(messages); DirStackFileIncluder includer; std::for_each(IncludeDirectoryList.rbegin(), IncludeDirectoryList.rend(), [&includer](const std::string& dir) { includer.pushExternalLocalDirectory(dir); }); std::vector sources; // // Per-shader processing... // glslang::TProgram& program = *new glslang::TProgram; const bool compileOnly = (Options & EOptionCompileOnly) != 0; for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) { const auto &compUnit = *it; for (int i = 0; i < compUnit.count; i++) { sources.push_back(compUnit.fileNameList[i]); } glslang::TShader* shader = new glslang::TShader(compUnit.stage); shader->setStringsWithLengthsAndNames(compUnit.text, nullptr, compUnit.fileNameList, compUnit.count); if (entryPointName) shader->setEntryPoint(entryPointName); if (sourceEntryPointName) { if (entryPointName == nullptr) printf("Warning: Changing source entry point name without setting an entry-point name.\n" "Use '-e '.\n"); shader->setSourceEntryPoint(sourceEntryPointName); } if (compileOnly) shader->setCompileOnly(); shader->setOverrideVersion(GlslVersion); std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count); PreambleString = ""; if (UserPreamble.isSet()) PreambleString.append(UserPreamble.get()); if (!intrinsicString.empty()) PreambleString.append(intrinsicString); shader->setPreamble(PreambleString.c_str()); shader->addProcesses(Processes); // Set IO mapper binding shift values for (int r = 0; r < glslang::EResCount; ++r) { const glslang::TResourceType res = glslang::TResourceType(r); // Set base bindings shader->setShiftBinding(res, baseBinding[res][compUnit.stage]); // Set bindings for particular resource sets // TODO: use a range based for loop here, when available in all environments. for (auto i = baseBindingForSet[res][compUnit.stage].begin(); i != baseBindingForSet[res][compUnit.stage].end(); ++i) shader->setShiftBindingForSet(res, i->second, i->first); } shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0); shader->setResourceSetBinding(baseResourceSetBinding[compUnit.stage]); if (autoSampledTextures) shader->setTextureSamplerTransformMode(EShTexSampTransUpgradeTextureRemoveSampler); if (Options & EOptionAutoMapBindings) shader->setAutoMapBindings(true); if (Options & EOptionAutoMapLocations) shader->setAutoMapLocations(true); for (auto& uniOverride : uniformLocationOverrides) { shader->addUniformLocationOverride(uniOverride.first.c_str(), uniOverride.second); } shader->setUniformLocationBase(uniformBase); if (VulkanRulesRelaxed) { for (auto& storageOverride : blockStorageOverrides) { shader->addBlockStorageOverride(storageOverride.first.c_str(), storageOverride.second); } if (setGlobalBufferBlock) { shader->setAtomicCounterBlockName(atomicCounterBlockName.c_str()); shader->setAtomicCounterBlockSet(atomicCounterBlockSet); } if (setGlobalUniformBlock) { shader->setGlobalUniformBlockName(globalUniformName.c_str()); shader->setGlobalUniformSet(globalUniformSet); shader->setGlobalUniformBinding(globalUniformBinding); } } shader->setNanMinMaxClamp(NaNClamp); #ifdef ENABLE_HLSL shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); if (Options & EOptionHlslIoMapping) shader->setHlslIoMapping(true); #endif 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) { shader->setEnvInput((Options & EOptionReadHlsl) ? glslang::EShSourceHlsl : glslang::EShSourceGlsl, compUnit.stage, Client, ClientInputSemanticsVersion); shader->setEnvClient(Client, ClientVersion); shader->setEnvTarget(TargetLanguage, TargetVersion); #ifdef ENABLE_HLSL if (targetHlslFunctionality1) shader->setEnvTargetHlslFunctionality1(); #endif if (VulkanRulesRelaxed) shader->setEnvInputVulkanRulesRelaxed(); } shaders.push_back(shader); const int defaultVersion = Options & EOptionDefaultDesktop ? 110 : 100; if (Options & EOptionOutputPreprocessed) { std::string str; if (shader->preprocess(GetResources(), defaultVersion, ENoProfile, false, false, messages, &str, includer)) { PutsIfNonEmpty(str.c_str()); } else { CompileFailed = 1; } StderrIfNonEmpty(shader->getInfoLog()); StderrIfNonEmpty(shader->getInfoDebugLog()); continue; } if (! shader->parse(GetResources(), defaultVersion, false, messages, includer)) CompileFailed = 1; if (!compileOnly) program.addShader(shader); if (! (Options & EOptionSuppressInfolog) && ! (Options & EOptionMemoryLeakMode)) { if (!beQuiet) PutsIfNonEmpty(compUnit.fileName[0].c_str()); PutsIfNonEmpty(shader->getInfoLog()); PutsIfNonEmpty(shader->getInfoDebugLog()); } } // // Program-level processing... // if (!compileOnly) { // Link if (!(Options & EOptionOutputPreprocessed) && !program.link(messages)) LinkFailed = true; // Map IO if (Options & EOptionSpv) { if (!program.mapIO()) LinkFailed = true; } // Report if (!(Options & EOptionSuppressInfolog) && !(Options & EOptionMemoryLeakMode)) { PutsIfNonEmpty(program.getInfoLog()); PutsIfNonEmpty(program.getInfoDebugLog()); } // Reflect if (Options & EOptionDumpReflection) { program.buildReflection(ReflectOptions); program.dumpReflection(); } } std::vector outputFiles; // Dump SPIR-V if (Options & EOptionSpv) { #ifdef ENABLE_SPIRV CompileOrLinkFailed.fetch_or(CompileFailed); CompileOrLinkFailed.fetch_or(LinkFailed); if (static_cast(CompileOrLinkFailed.load())) printf("SPIR-V is not generated for failed compile or link\n"); else { std::vector intermediates; if (!compileOnly) { for (int stage = 0; stage < EShLangCount; ++stage) { if (auto* i = program.getIntermediate((EShLanguage)stage)) { intermediates.emplace_back(i); } } } else { for (const auto* shader : shaders) { if (auto* i = shader->getIntermediate()) { intermediates.emplace_back(i); } } } for (auto* intermediate : intermediates) { std::vector spirv; spv::SpvBuildLogger logger; glslang::SpvOptions spvOptions; if (Options & EOptionDebug) { spvOptions.generateDebugInfo = true; 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; spvOptions.disassemble = SpvToolsDisassembler; spvOptions.validate = SpvToolsValidate; spvOptions.compileOnly = compileOnly; glslang::GlslangToSpv(*intermediate, spirv, &logger, &spvOptions); // Dump the spv to a file or stdout, etc., but only if not doing // memory/perf testing, as it's not internal to programmatic use. if (!(Options & EOptionMemoryLeakMode)) { printf("%s", logger.getAllMessages().c_str()); const auto filename = GetBinaryName(intermediate->getStage()); if (Options & EOptionOutputHexadecimal) { if (!glslang::OutputSpvHex(spirv, filename, variableName)) exit(EFailUsage); } else { if (!glslang::OutputSpvBin(spirv, filename)) exit(EFailUsage); } outputFiles.push_back(filename); if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv)) spv::Disassemble(std::cout, spirv); } } } #else Error("This configuration of glslang does not have SPIR-V support"); #endif } CompileOrLinkFailed.fetch_or(CompileFailed); CompileOrLinkFailed.fetch_or(LinkFailed); if (depencyFileName && !static_cast(CompileOrLinkFailed.load())) { std::set includedFiles = includer.getIncludedFiles(); sources.insert(sources.end(), includedFiles.begin(), includedFiles.end()); writeDepFile(depencyFileName, outputFiles, sources); } // Free everything up, program has to go before the shaders // because it might have merged stuff from the shaders, and // the stuff from the shaders has to have its destructors called // before the pools holding the memory in the shaders is freed. delete &program; while (shaders.size() > 0) { delete shaders.back(); shaders.pop_back(); } } // // Do file IO part of compile and link, handing off the pure // API/programmatic mode to CompileAndLinkShaderUnits(), which can // be put in a loop for testing memory footprint and performance. // // This is just for linking mode: meaning all the shaders will be put into the // the same program linked together. // // This means there are a limited number of work items (not multi-threading mode) // and that the point is testing at the linking level. Hence, to enable // performance and memory testing, the actual compile/link can be put in // a loop, independent of processing the work items and file IO. // void CompileAndLinkShaderFiles(glslang::TWorklist& Worklist) { std::vector compUnits; // If this is using stdin, we can't really detect multiple different file // units by input type. We need to assume that we're just being given one // file of a certain type. if ((Options & EOptionStdin) != 0) { ShaderCompUnit compUnit(FindLanguage("stdin")); std::istreambuf_iterator begin(std::cin), end; std::string tempString(begin, end); char* fileText = strdup(tempString.c_str()); std::string fileName = "stdin"; compUnit.addString(fileName, fileText); compUnits.push_back(compUnit); } else { // Transfer all the work items from to a simple list of // of compilation units. (We don't care about the thread // work-item distribution properties in this path, which // is okay due to the limited number of shaders, know since // they are all getting linked together.) glslang::TWorkItem* workItem; while (Worklist.remove(workItem)) { ShaderCompUnit compUnit(FindLanguage(workItem->name)); char* fileText = ReadFileData(workItem->name.c_str()); if (fileText == nullptr) usage(); compUnit.addString(workItem->name, fileText); compUnits.push_back(compUnit); } } // Actual call to programmatic processing of compile and link, // in a loop for testing memory and performance. This part contains // all the perf/memory that a programmatic consumer will care about. for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) { for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) CompileAndLinkShaderUnits(compUnits); if (Options & EOptionMemoryLeakMode) glslang::OS_DumpMemoryCounters(); } // free memory from ReadFileData, which got stored in a const char* // as the first string above for (auto it = compUnits.begin(); it != compUnits.end(); ++it) FreeFileData(const_cast(it->text[0])); } int singleMain() { glslang::TWorklist workList; std::for_each(WorkItems.begin(), WorkItems.end(), [&workList](std::unique_ptr& item) { assert(item); workList.add(item.get()); }); if (Options & EOptionDumpConfig) { printf("%s", GetDefaultTBuiltInResourceString().c_str()); if (workList.empty()) return ESuccess; } if (Options & EOptionDumpBareVersion) { int spirvGeneratorVersion = 0; #ifdef ENABLE_SPIRV spirvGeneratorVersion = glslang::GetSpirvGeneratorVersion(); #endif printf("%d:%d.%d.%d%s\n", spirvGeneratorVersion, GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR, GLSLANG_VERSION_PATCH, GLSLANG_VERSION_FLAVOR); if (workList.empty()) return ESuccess; } else if (Options & EOptionDumpVersions) { int spirvGeneratorVersion = 0; #ifdef ENABLE_SPIRV spirvGeneratorVersion = glslang::GetSpirvGeneratorVersion(); #endif printf("Glslang Version: %d:%d.%d.%d%s\n", spirvGeneratorVersion, GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR, GLSLANG_VERSION_PATCH, GLSLANG_VERSION_FLAVOR); printf("ESSL Version: %s\n", glslang::GetEsslVersionString()); printf("GLSL Version: %s\n", glslang::GetGlslVersionString()); std::string spirvVersion; #if ENABLE_SPIRV glslang::GetSpirvVersion(spirvVersion); #endif printf("SPIR-V Version %s\n", spirvVersion.c_str()); printf("GLSL.std.450 Version %d, Revision %d\n", GLSLstd450Version, GLSLstd450Revision); printf("Khronos Tool ID %d\n", glslang::GetKhronosToolId()); printf("SPIR-V Generator Version %d\n", spirvGeneratorVersion); printf("GL_KHR_vulkan_glsl version %d\n", 100); printf("ARB_GL_gl_spirv version %d\n", 100); if (workList.empty()) return ESuccess; } if (workList.empty() && ((Options & EOptionStdin) == 0)) { usage(); } if (Options & EOptionStdin) { WorkItems.push_back(std::unique_ptr{new glslang::TWorkItem("stdin")}); workList.add(WorkItems.back().get()); } ProcessConfigFile(); if ((Options & EOptionReadHlsl) && !((Options & EOptionOutputPreprocessed) || (Options & EOptionSpv))) Error("HLSL requires SPIR-V code generation (or preprocessing only)"); // // Two modes: // 1) linking all arguments together, single-threaded, new C++ interface // 2) independent arguments, can be tackled by multiple asynchronous threads, for testing thread safety, using the old handle interface // if (Options & (EOptionLinkProgram | EOptionOutputPreprocessed)) { glslang::InitializeProcess(); glslang::InitializeProcess(); // also test reference counting of users glslang::InitializeProcess(); // also test reference counting of users glslang::FinalizeProcess(); // also test reference counting of users glslang::FinalizeProcess(); // also test reference counting of users CompileAndLinkShaderFiles(workList); glslang::FinalizeProcess(); } else { ShInitialize(); ShInitialize(); // also test reference counting of users ShFinalize(); // also test reference counting of users bool printShaderNames = workList.size() > 1; if (Options & EOptionMultiThreaded) { std::array threads; for (unsigned int t = 0; t < threads.size(); ++t) { threads[t] = std::thread(CompileShaders, std::ref(workList)); if (threads[t].get_id() == std::thread::id()) { fprintf(stderr, "Failed to create thread\n"); return EFailThreadCreate; } } std::for_each(threads.begin(), threads.end(), [](std::thread& t) { t.join(); }); } else CompileShaders(workList); // Print out all the resulting infologs for (size_t w = 0; w < WorkItems.size(); ++w) { if (WorkItems[w]) { if (printShaderNames || WorkItems[w]->results.size() > 0) PutsIfNonEmpty(WorkItems[w]->name.c_str()); PutsIfNonEmpty(WorkItems[w]->results.c_str()); } } ShFinalize(); } if (CompileFailed.load()) return EFailCompile; if (LinkFailed.load()) return EFailLink; return 0; } int C_DECL main(int argc, char* argv[]) { ProcessArguments(WorkItems, argc, argv); int ret = 0; // Loop over the entire init/finalize cycle to watch memory changes const int iterations = 1; if (iterations > 1) glslang::OS_DumpMemoryCounters(); for (int i = 0; i < iterations; ++i) { ret = singleMain(); if (iterations > 1) glslang::OS_DumpMemoryCounters(); } return ret; } // // Deduce the language from the filename. Files must end in one of the // following extensions: // // .vert = vertex // .tesc = tessellation control // .tese = tessellation evaluation // .geom = geometry // .frag = fragment // .comp = compute // .rgen = ray generation // .rint = ray intersection // .rahit = ray any hit // .rchit = ray closest hit // .rmiss = ray miss // .rcall = ray callable // .mesh = mesh // .task = task // Additionally, the file names may end in ..glsl and ..hlsl // where is one of the stages listed above. // EShLanguage FindLanguage(const std::string& name, bool parseStageName) { std::string stageName; if (shaderStageName) stageName = shaderStageName; else if (parseStageName) { // Note: "first" extension means "first from the end", i.e. // if the file is named foo.vert.glsl, then "glsl" is first, // "vert" is second. size_t firstExtStart = name.find_last_of("."); bool hasFirstExt = firstExtStart != std::string::npos; size_t secondExtStart = hasFirstExt ? name.find_last_of(".", firstExtStart - 1) : std::string::npos; bool hasSecondExt = secondExtStart != std::string::npos; std::string firstExt = name.substr(firstExtStart + 1, std::string::npos); bool usesUnifiedExt = hasFirstExt && (firstExt == "glsl" || firstExt == "hlsl"); if (usesUnifiedExt && firstExt == "hlsl") Options |= EOptionReadHlsl; if (hasFirstExt && !usesUnifiedExt) stageName = firstExt; else if (usesUnifiedExt && hasSecondExt) stageName = name.substr(secondExtStart + 1, firstExtStart - secondExtStart - 1); else { usage(); return EShLangVertex; } } else stageName = name; if (stageName == "vert") return EShLangVertex; else if (stageName == "tesc") return EShLangTessControl; else if (stageName == "tese") return EShLangTessEvaluation; else if (stageName == "geom") return EShLangGeometry; else if (stageName == "frag") return EShLangFragment; else if (stageName == "comp") return EShLangCompute; else if (stageName == "rgen") return EShLangRayGen; else if (stageName == "rint") return EShLangIntersect; else if (stageName == "rahit") return EShLangAnyHit; else if (stageName == "rchit") return EShLangClosestHit; else if (stageName == "rmiss") return EShLangMiss; else if (stageName == "rcall") return EShLangCallable; else if (stageName == "mesh") return EShLangMesh; else if (stageName == "task") return EShLangTask; usage(); return EShLangVertex; } // // Read a file's data into a string, and compile it using the old interface ShCompile, // for non-linkable results. // void CompileFile(const char* fileName, ShHandle compiler) { int ret = 0; char* shaderString; if ((Options & EOptionStdin) != 0) { std::istreambuf_iterator begin(std::cin), end; std::string tempString(begin, end); shaderString = strdup(tempString.c_str()); } else { shaderString = ReadFileData(fileName); } // move to length-based strings, rather than null-terminated strings int* lengths = new int[1]; lengths[0] = (int)strlen(shaderString); EShMessages messages = EShMsgDefault; SetMessageOptions(messages); if (UserPreamble.isSet()) Error("-D, -U and -P options require -l (linking)\n"); for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) { for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) { // ret = ShCompile(compiler, shaderStrings, NumShaderStrings, lengths, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); ret = ShCompile(compiler, &shaderString, 1, nullptr, EShOptNone, GetResources(), 0, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages, fileName); // const char* multi[12] = { "# ve", "rsion", " 300 e", "s", "\n#err", // "or should be l", "ine 1", "string 5\n", "float glo", "bal", // ";\n#error should be line 2\n void main() {", "global = 2.3;}" }; // const char* multi[7] = { "/", "/", "\\", "\n", "\n", "#", "version 300 es" }; // ret = ShCompile(compiler, multi, 7, nullptr, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); } if (Options & EOptionMemoryLeakMode) glslang::OS_DumpMemoryCounters(); } delete [] lengths; FreeFileData(shaderString); if (ret == 0) CompileFailed = true; } // // print usage to stdout // void usage() { printf("Usage: glslang [option]... [file]...\n" "\n" "'file' with one of the following three endings can be auto-classified:\n" "1) ., where is one of:\n" " vert for a vertex shader\n" " tesc for a tessellation control shader\n" " tese for a tessellation evaluation shader\n" " geom for a geometry shader\n" " frag for a fragment shader\n" " comp for a compute shader\n" " mesh for a mesh shader\n" " task for a task shader\n" " rgen for a ray generation shader\n" " rint for a ray intersection shader\n" " rahit for a ray any hit shader\n" " rchit for a ray closest hit shader\n" " rmiss for a ray miss shader\n" " rcall for a ray callable shader\n" "2) ..glsl or ..hlsl compound suffix, where stage options are\n" " described above\n" "3) .conf, to provide a config file that replaces the default configuration (see\n" " -c option below for generating a template)\n" "\n" "Options:\n" " -C cascading errors; risk crash from accumulation of error recoveries\n" " -D input is HLSL (this is the default when any suffix is .hlsl)\n" " -D | --D | --define-macro \n" " define a pre-processor macro\n" " -E print pre-processed GLSL; cannot be used with -l; errors will\n" " appear on stderr\n" " -G[ver] create SPIR-V binary under OpenGL semantics; turns on -l; default\n" " file name is .spv (-o overrides this); ver, when present,\n" " is the version of the input semantics which will appear in\n" " '#define GL_SPIRV ver'; --client opengl100 is the same as -G100; a\n" " --target-env for OpenGL will also imply -G; currently only\n" " supports GLSL\n" " -H print human readable form of SPIR-V; turns on -V\n" " -I add to the include search path; includer's directory is\n" " searched first, followed by left-to-right order of -I\n" " -Od disables optimization; may cause illegal SPIR-V for HLSL\n" " -Os optimizes SPIR-V to minimize size\n" " -P | --P | --preamble-text \n" " inject custom preamble text which is treated as if it appeared\n" " immediately after the version declaration (if any)\n" " -R use relaxed verification rules for generating Vulkan SPIR-V,\n" " allowing the use of default uniforms, atomic_uints, and the\n" " gl_VertexID and gl_InstanceID keywords\n" " -S uses the specified rather than parsing the file extension;\n" " choices for include vert, tesc, tese, geom, frag, and\n" " comp; a full list of options is given above\n" " -U | --undef-macro | --U \n" " undefine a pre-processor macro\n" " -V[ver] create SPIR-V binary under Vulkan semantics; turns on -l; default\n" " file name is .spv (-o overrides this); ver, when present,\n" " is the version of the input semantics which will appear in\n" " '#define VULKAN ver'; --client vulkan100 is the same as -V100; a\n" " '--target-env' for Vulkan will also imply '-V'\n" " -c configuration dump; creates the default configuration file\n" " (redirect to a .conf file)\n" " -d default to desktop (#version 110) when there is no shader #version\n" " (default is ES version 100)\n" " -e | --entry-point \n" " specify as the entry-point function name\n" " -f{hlsl_functionality1}\n" " 'hlsl_functionality1' enables use of the\n" " 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 | --help 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" " -m memory leak mode\n" " -o save binary to ; requires a binary option (e.g., -V)\n" " -q dump reflection query database; requires -l for linking\n" " -r | --relaxed-errors\n" " relaxed GLSL semantic error-checking mode\n" " -s silence syntax and semantic error reporting\n" " -t multi-threaded mode\n" " -u:\n" " specify a uniform location override for --aml\n" " -v | --version\n" " print version strings\n" " -w | --suppress-warnings\n" " suppress GLSL warnings, except as required by '#extension : warn'\n" " -x save binary output as text-based 32-bit hexadecimal numbers\n" " --absolute-path prints absolute path for messages\n" " --auto-map-binding | --auto-map-bindings | --amb\n" " automatically bind uniform variables without\n" " explicit bindings\n" " --auto-map-locations | --aml automatically locate input/output lacking\n" " 'location' (fragile, not cross stage)\n" " --auto-sampled-textures removes sampler variables and converts\n" " existing textures to sampled textures\n" " --client {vulkan | opengl}\n" " see -V and -G\n" " --depfile writes depfile for build systems\n" " --dump-builtin-symbols prints builtin symbol table prior each\n" " compile\n" " -dumpfullversion | -dumpversion print bare major.minor.patchlevel\n" " --enhanced-msgs print more readable error messages (GLSL\n" " only)\n" " --error-column display the column of the error along the\n" " line\n" " --flatten-uniform-array | --flatten-uniform-arrays | --fua\n" " 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 in\n" " shader source\n" " --hlsl-dx-position-w W component of SV_Position in HLSL fragment\n" " shaders compatible with DirectX\n" " --hlsl-dx9-compatible interprets sampler declarations as a\n" " texture/sampler combo like DirectX9 would,\n" " and recognizes DirectX9-specific semantics\n" " --hlsl-enable-16bit-types allow 16-bit types in SPIR-V for HLSL\n" " --hlsl-iomap | --hlsl-iomapper | --hlsl-iomapping\n" " perform IO mapping in HLSL register space\n" " --hlsl-offsets allow block offsets to follow HLSL rules;\n" " works independently of source language\n" " --invert-y | --iy invert position.Y output in vertex shader\n" " --keep-uncalled | --ku don't eliminate uncalled functions\n" " --lto perform link time optimization\n" " --nan-clamp favor non-NaN operand in min, max, and clamp\n" " --no-link only compile shader; do not link (GLSL only)\n" " NOTE: this option will set the export\n" " linkage attribute on all functions\n" " --no-storage-format | --nsf use Unknown image format\n" " --quiet do not print anything to stdout unless\n" " requested by another option\n" " --reflect-all-block-variables reflect all variables in blocks, whether\n" " inactive or active\n" " --reflect-basic-array-suffix arrays of basic types will have trailing [0]\n" " --reflect-intermediate-io reflection includes inputs/outputs of linked\n" " shaders rather than just vertex/fragment\n" " --reflect-separate-buffers reflect buffer variables and blocks\n" " separately to uniforms\n" " --reflect-strict-array-suffix use strict array suffix rules when\n" " reflecting\n" " --reflect-unwrap-io-blocks unwrap input/output blocks the same as\n" " uniform blocks\n" " --resource-set-binding [name] [binding]...\n" " set descriptor set and binding for\n" " individual resources\n" " --resource-set-binding [stage] \n" " set descriptor set for all resources\n" " --resource-set-bindings | --rsb synonyms for --resource-set-binding\n" " --set-atomic-counter-block \n" " set name and descriptor set for atomic\n" " counter blocks with -R opt\n" " --sacb synonym for set-atomic-counter-block\n" " --set-block-backing name {uniform | buffer | push_constant}\n" " changes the backing type of a uniform,\n" " buffer, or push_constant block declared in\n" " the program when using the -R option; this\n" " can be used to change the backing for\n" " existing blocks as well as implicit ones\n" " such as 'gl_DefaultUniformBlock'\n" " --set-default-uniform-block \n" " set name, descriptor set, and binding for\n" " global default-uniform-block with -R opt\n" " --sdub synonym for set-default-uniform-block\n" " --shift-image-binding [stage] \n" " base binding number for images (UAV)\n" " --shift-image-binding [stage] ...\n" " per-descriptor-set shift values\n" " --shift-image-bindings | --sib synonyms for --shift-image-binding\n" " --shift-sampler-binding [stage] \n" " base binding number for samplers\n" " --shift-sampler-binding [stage] ...\n" " per-descriptor-set shift values\n" " --shift-sampler-bindings | --ssb synonyms for --shift-sampler-binding\n" " --shift-ssbo-binding [stage] \n" " base binding number for SSBOs\n" " --shift-ssbo-binding [stage] ...\n" " per-descriptor-set shift values\n" " --shift-ssbo-bindings | --sbb synonyms for --shift-ssbo-binding\n" " --shift-texture-binding [stage] \n" " base binding number for textures\n" " --shift-texture-binding [stage] ...\n" " per-descriptor-set shift values\n" " --shift-texture-bindings | --stb synonyms for --shift-texture-binding\n" " --shift-uav-binding [stage] base binding number for UAVs\n" " --shift-uav-binding [stage] ...\n" " per-descriptor-set shift values\n" " --shift-uav-bindings | --suavb synonyms for --shift-uav-binding\n" " --shift-ubo-binding [stage] base binding number for UBOs\n" " --shift-ubo-binding [stage] ...\n" " per-descriptor-set shift values\n" " --shift-ubo-bindings | --sub |\n" " --shift-cbuffer-binding | --shift-cbuffer-bindings | --scb\n" " synonyms for --shift-ubo-binding\n" " --spirv-dis output standard-form disassembly; works only\n" " when a SPIR-V generation option is also used\n" " --spirv-val execute the SPIRV-Tools validator\n" " --source-entrypoint | --sep \n" " the given shader source function is renamed\n" " to be the given in -e\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 | vulkan1.3 | vulkan1.4 |\n" " opengl | spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 |\n" " spirv1.4 | spirv1.5 | spirv1.6}\n" " set the execution environment the generated\n" " code will be executed in; defaults to:\n" " * vulkan1.0 under --client vulkan\n" " * opengl under --client opengl\n" " * spirv1.0 under --target-env vulkan1.0\n" " * spirv1.3 under --target-env vulkan1.1\n" " * spirv1.5 under --target-env vulkan1.2\n" " * spirv1.6 under --target-env vulkan1.3\n" " * spirv1.6 under --target-env vulkan1.4\n" " multiple --target-env can be specified\n" " --uniform-base set a base to use for generated uniform\n" " locations\n" " --variable-name | --vn \n" " creates a C header file that contains a\n" " uint32_t array named initialized with\n" " the shader binary code\n" " --validate-io validate cross stage IO\n"); exit(EFailUsage); } #if !defined _MSC_VER && !defined MINGW_HAS_SECURE_API #include int fopen_s( FILE** pFile, const char* filename, const char* mode ) { if (!pFile || !filename || !mode) { return EINVAL; } FILE* f = fopen(filename, mode); if (! f) { if (errno != 0) { return errno; } else { return ENOENT; } } *pFile = f; return 0; } #endif // // Malloc a string of sufficient size and read a string into it. // char* ReadFileData(const char* fileName) { FILE *in = nullptr; int errorCode = fopen_s(&in, fileName, "r"); if (errorCode || in == nullptr) Error("unable to open input file"); int count = 0; while (fgetc(in) != EOF) count++; fseek(in, 0, SEEK_SET); if (count > 3) { unsigned char head[3]; if (fread(head, 1, 3, in) == 3) { if (head[0] == 0xef && head[1] == 0xbb && head[2] == 0xbf) { // skip BOM count -= 3; } else { fseek(in, 0, SEEK_SET); } } else { Error("can't read input file"); } } char* return_data = (char*)malloc(count + 1); // freed in FreeFileData() if ((int)fread(return_data, 1, count, in) != count) { free(return_data); Error("can't read input file"); } return_data[count] = '\0'; fclose(in); return return_data; } void FreeFileData(char* data) { free(data); } void InfoLogMsg(const char* msg, const char* name, const int num) { if (num >= 0 ) printf("#### %s %s %d INFO LOG ####\n", msg, name, num); else printf("#### %s %s INFO LOG ####\n", msg, name); } glslang-16.0.0/StandAlone/Worklist.h000066400000000000000000000053271506534232700172620ustar00rootroot00000000000000// // Copyright (C) 2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef WORKLIST_H_INCLUDED #define WORKLIST_H_INCLUDED #include #include #include namespace glslang { class TWorkItem { public: TWorkItem() { } explicit TWorkItem(const std::string& s) : name(s) { } std::string name; std::string results; std::string resultsIndex; }; class TWorklist { public: TWorklist() { } virtual ~TWorklist() { } void add(TWorkItem* item) { std::lock_guard guard(mutex); worklist.push_back(item); } bool remove(TWorkItem*& item) { std::lock_guard guard(mutex); if (worklist.empty()) return false; item = worklist.front(); worklist.pop_front(); return true; } int size() { return (int)worklist.size(); } bool empty() { return worklist.empty(); } protected: std::mutex mutex; std::list worklist; }; } // end namespace glslang #endif // WORKLIST_H_INCLUDED glslang-16.0.0/Test/000077500000000000000000000000001506534232700141535ustar00rootroot00000000000000glslang-16.0.0/Test/100.conf000066400000000000000000000012501506534232700153200ustar00rootroot00000000000000MaxLights 32 MaxClipPlanes 6 MaxTextureUnits 32 MaxTextureCoords 32 MaxVertexAttribs 8 MaxVertexUniformComponents 4096 MaxVaryingFloats 64 MaxVertexTextureImageUnits 0 MaxCombinedTextureImageUnits 8 MaxTextureImageUnits 8 MaxFragmentUniformComponents 4096 MaxDrawBuffers 1 MaxVertexUniformVectors 16 MaxVaryingVectors 8 MaxFragmentUniformVectors 16 MaxVertexOutputVectors 16 MaxFragmentInputVectors 15 MinProgramTexelOffset -8 MaxProgramTexelOffset 7 nonInductiveForLoops 0 whileLoops 0 doWhileLoops 0 generalUniformIndexing 0 generalAttributeMatrixVectorIndexing 0 generalVaryingIndexing 0 generalSamplerIndexing 0 generalVariableIndexing 0 generalConstantMatrixVectorIndexing 0 glslang-16.0.0/Test/100.frag000066400000000000000000000125451506534232700153230ustar00rootroot00000000000000// okay #version 100 int a[3] = { 2, 3, 4, }; // ERROR (lots) #version 100 int uint; attribute vec4 v[3]; // ERROR float f = 2; // ERROR uniform block { // ERROR int x; }; void foo(float); void main() { foo(3); // ERROR int s = 1 << 4; // ERROR s = 16 >> 2; // ERROR if (a == a); // ERROR int b, c; b = c & 4; // ERROR b = c % 4; // ERROR b = c | 4; // ERROR b >>= 2; // ERROR b <<= 2; // ERROR b %= 3; // ERROR struct S { float f; float a[10]; } s1, s2; s1 = s2; // ERROR if (s1 == s2); // ERROR if (s1 != s2); // ERROR switch(b) { // ERROR } } invariant gl_FragColor; float fa[]; // ERROR float f13; invariant f13; // ERROR struct S { int a; }; invariant S; // ERROR, not an input or output invariant float fi; // ERROR varying vec4 av; invariant av; // okay in v100 void foo10() { invariant f; // ERROR invariant float f2; // ERROR float f3; invariant f3; // ERROR } uniform vec2 uv2; invariant uv2; // ERROR invariant uniform vec3 uv3; // ERROR sampler2D glob2D; // ERROR void f11(sampler2D p2d) { sampler2D v2D; // ERROR } varying sampler2D vary2D; // ERROR struct sp { highp float f; in float g; // ERROR uniform float h; // ERROR invariant float i; // ERROR }; uniform sampler3D s3D; // ERROR #extension GL_OES_texture_3D : enable precision highp sampler3D; uniform sampler3D s3D2; void foo234() { texture3D(s3D2, vec3(0.2), 0.2); texture3DProj(s3D2, v[1], 0.4); dFdx(v[0]); // ERROR dFdy(3.2); // ERROR fwidth(f13); // ERROR } #extension GL_OES_standard_derivatives : enable void foo236() { dFdx(v[0]); dFdy(3.2); fwidth(f13); gl_FragDepth = f13; // ERROR gl_FragDepthEXT = f13; // ERROR } #extension GL_EXT_frag_depth : enable void foo239() { gl_FragDepth = f13; // ERROR gl_FragDepthEXT = f13; } #extension GL_OES_EGL_image_external : enable uniform samplerExternalOES sExt; void foo245() { texture2D(sExt, vec2(0.2)); texture2DProj(sExt, vec3(f13)); texture2DProj(sExt, v[2]); } precision mediump samplerExternalOES; uniform samplerExternalOES mediumExt; uniform highp samplerExternalOES highExt; void foo246() { texture2D(mediumExt, vec2(0.2)); texture2DProj(highExt, v[2]); texture3D(sExt, vec3(f13)); // ERROR texture2DProjLod(sExt, vec3(f13), f13); // ERROR int a; ~a; // ERROR a | a; // ERROR a & a; // ERROR } #extension GL_OES_EGL_image_external : disable uniform sampler2D s2Dg; int foo203940(int a, float b, float a) // ERROR, a redefined { texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2); // ERROR, extension not enabled return a; } float f123 = 4.0f; // ERROR float f124 = 5e10F; // ERROR #extension GL_EXT_shader_texture_lod : enable uniform samplerCube sCube; void foo323433() { texture2DLodEXT(s2Dg, uv2, f13); texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2); texture2DGradEXT(s2Dg, uv2, uv2, uv2); textureCubeGradEXT(sCube, vec3(f13), vec3(f13), vec3(f13)); } int fgfg(float f, mediump int i); int fgfg(float f, highp int i) { return 2; } // ERROR, precision qualifier difference int fffg(float f); int fffg(float f); // ERROR, can't have multiple prototypes int gggf(float f); int gggf(float f) { return 2; } int agggf(float f) { return 2; } int agggf(float f); int agggf(float f); // ERROR, second prototype varying struct SSS { float f; } s; // ERROR int vf(void); int vf2(); int vf3(void v); // ERROR int vf4(int, void); // ERROR int vf5(int, void v); // ERROR void badswizzle() { vec3 a[5]; a.y; // ERROR, no array swizzle a.zy; // ERROR, no array swizzle a.nothing; // ERROR a.length(); // ERROR, not this version a.method(); // ERROR } float fooinit(); float fooinittest() { return fooinit(); } // Test extension GL_EXT_blend_func_extended void blendFuncFail() // Error since extension GL_EXT_blend_func_extended is disabled { gl_SecondaryFragColorEXT = vec4(1.0); gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT - 1] = vec4(0.1); } #extension GL_EXT_blend_func_extended : enable void blendFunc() { gl_SecondaryFragColorEXT = vec4(1.0); gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT - 1] = vec4(0.1); } // Test extra-function initializers const float fi1 = 3.0; const float fi2 = 4.0; const float fi3 = 5.0; float fooinit() { return fi1 + fi2 + fi3; // should make a constant of 12.0 } int init1 = gl_FrontFacing ? 1 : 2; // ERROR, non-const initializer #ifdef GL_EXT_shader_non_constant_global_initializers #extension GL_EXT_shader_non_constant_global_initializers : enable #endif int init2 = gl_FrontFacing ? 1 : 2; #define A__B // error int a__b; // error #pragma STDGL invariant(all) #line 3000 #error line of this error should be 3000 uniform samplerExternalOES badExt; // syntax ERROR glslang-16.0.0/Test/100Limits.vert000066400000000000000000000036651506534232700165510ustar00rootroot00000000000000#version 100 int ga, gb; float f; uniform sampler2D fsa[3]; uniform float fua[10]; attribute mat3 am3; attribute vec2 av2; varying vec4 va[4]; const mat2 m2 = mat2(1.0); const vec3 v3 = vec3(2.0); void foo(inout float a) {} int bar() { return 1; } void main() { while (ga < gb) { } do { } while (false); for ( ; ; ); // ERROR for ( ; ga==gb; ); // ERROR for ( ; ; f++); // ERROR for ( ga = 0; ; ); // ERROR for ( bool a = false; ; ); // ERROR for (float a = 0.0; a == sin(f); ); // ERROR for ( int a = 0; a < 10; a *= 2); // ERROR for ( int a = 0; a <= 20; a++) --a; // ERROR for ( int a = 0; a <= 20; a++) { if (ga==0) a = 4; } // ERROR for (float a = 0.0; a <= 20.0; a += 2.0); for (float a = 0.0; a != 20.0; a -= 2.0) { if (ga==0) ga = 4; } for (float a = 0.0; a == 20.0; a--) for (float a = 0.0; a == 20.0; a--); // two different 'a's, everything okay for (float a = 0.0; a <= 20.0; a += 2.0); for (float a = 0.0; a <= 20.0; a += 2.0); for (float a = 0.0; a > 2.0 * 20.0; a += v3.y); for (float a = 0.0; a >= 20.0; a += 2.0) foo(a); // ERROR int ia[9]; fsa[ga]; // ERROR fua[ga]; am3[ga]; // ERROR av2[ga]; // ERROR va[2+ga]; // ERROR m2[ga]; // ERROR v3[ga/2]; // ERROR ia[ga]; // ERROR for (int a = 3; a >= 0; a--) { fsa[a]; fua[a+2]; am3[3*a]; av2[3*a]; va[a-1]; m2[a/2]; v3[a]; ia[a]; ia[bar()]; // ERROR } fsa[2]; fua[3]; am3[2]; av2[1]; va[1]; m2[1]; v3[1]; ia[3]; } glslang-16.0.0/Test/100samplerExternal.frag000066400000000000000000000024061506534232700204050ustar00rootroot00000000000000#version 100 #extension GL_OES_EGL_image_external : enable uniform samplerExternalOES sExt; precision mediump samplerExternalOES; uniform samplerExternalOES mediumExt; uniform highp samplerExternalOES highExt; void main() { texture2D(sExt, vec2(0.2)); texture2D(mediumExt, vec2(0.2)); texture2D(highExt, vec2(0.2)); texture2DProj(sExt, vec3(0.3)); texture2DProj(sExt, vec4(0.3)); int lod = 0; highp float bias = 0.01; textureSize(sExt, lod); // ERROR texture(sExt, vec2(0.2)); // ERROR texture(sExt, vec2(0.2), bias); // ERROR textureProj(sExt, vec3(0.2)); // ERROR textureProj(sExt, vec3(0.2), bias); // ERROR textureProj(sExt, vec4(0.2)); // ERROR textureProj(sExt, vec4(0.2), bias); // ERROR texelFetch(sExt, ivec2(4), lod); // ERROR texture3D(sExt, vec3(0.3)); // ERROR texture2DProjLod(sExt, vec3(0.3), 0.3); // ERROR texture(sExt, vec3(0.3)); // ERROR textureProjLod(sExt, vec3(0.3), 0.3); // ERROR } #extension GL_OES_EGL_image_external : disable #extension GL_OES_EGL_image_external_essl3 : enable uniform samplerExternalOES badExt; // ERROR #extension GL_OES_EGL_image_external_essl3 : disable uniform samplerExternalOES badExt; // ERROR glslang-16.0.0/Test/100scope.vert000066400000000000000000000027741506534232700164210ustar00rootroot00000000000000#version 100 int f(int a, int b, int c) { int a = b; { float a = float(a) + 1.0; } return a; } int f(int a, int b, int c); // okay to redeclare bool b; float b(int a); // ERROR: redefinition float c(int a); bool c; // ERROR: redefinition float f; // ERROR: redefinition float tan; // okay, built-in is in an outer scope float sin(float x); // ERROR: can't redefine built-in functions float cos(float x) // ERROR: can't redefine built-in functions { return 1.0; } bool radians(bool x) // okay, can overload built-in functions { return true; } invariant gl_Position; void main() { int g(); // ERROR: no local function declarations g(); float sin; // okay sin; sin(0.7); // ERROR, use of hidden function f(1,2,3); float f; // hides f() f = 3.0; gl_Position = vec4(f); for (int f = 0; f < 10; ++f) ++f; int x = 1; { float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2 int z = z; // ERROR: z not previously defined. } { int x = x; // x is initialized to '1' } struct S { int x; }; { S S = S(0); // 'S' is only visible as a struct and constructor S.x; // 'S' is now visible as a variable } int degrees; degrees(3.2); // ERROR, use of hidden built-in function } varying struct SSS { float f; } s; // ERROR glslang-16.0.0/Test/110scope.vert000066400000000000000000000032751506534232700164170ustar00rootroot00000000000000#version 110 int f(int a, int b, int c) { int a = b; // ERROR, redefinition { float a = float(a) + 1.0; // okay } return a; } int f(int a, int b, int c); // okay to redeclare bool b; float b(int a); // okay, b and b() are different float c(int a); bool c; // okay, and c() are different float f; // okay f and f() are different float tan; // okay, hides built-in function float sin(float x); // okay, can redefine built-in functions float cos(float x) // okay, can redefine built-in functions { return 1.0; } bool radians(bool x) // okay, can overload built-in functions { return true; } int gi = f(1,2,3); // ERROR, can't call user-defined function from global scope void main() { int g(); // okay g(); float sin; // okay sin; sin(0.7); // okay f(1,2,3); float f; f = 3.0; gl_Position = vec4(f); for (int f = 0; f < 10; ++f) ++f; int x = 1; { float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2 int z = z; // ERROR: z not previously defined. } { int x = x; // x is initialized to '1' } struct S { int x; }; { S S = S(0); // 'S' is only visible as a struct and constructor S.x; // 'S' is now visible as a variable } int degrees; degrees(3.2); { S s; s.x = 3; struct S { // okay, hides S bool b; }; S t; t.b = true; struct S { // ERROR, redefinition of struct S float f; }; } } glslang-16.0.0/Test/120.frag000066400000000000000000000121011506534232700153110ustar00rootroot00000000000000#version 120 float lowp; float mediump; float highp; float precision; in vec4 i; out vec4 o; uniform sampler2D s2D; centroid varying vec2 centTexCoord; uniform mat4x2 m; struct s { float f; }; void main() { mat2x3 m23 = mat2x3(m); int a; bool b; s sv = s(a); float[2] ia = float[2](3, i.y); float f1 = 1; float f = a; f = a; ivec3 iv3; vec3 v3 = iv3; f = f + a; f = a - f; f += a; f = a - f; v3 *= iv3; v3 = iv3 / 2.0f; v3 = 3.0 * iv3; v3 = 2 * v3; v3 = v3 - 2; if (f < a || a <= f || f > a || f >= a || a == f || f != a); f = b ? a : f; f = b ? f : a; f = b ? a : a; s news = sv; i.xy + i.xyz; // ERROR m * i.xyz; // ERROR m + i; // ERROR int aoeu = 1.0; // ERROR f = b; // ERROR f = a + b; // ERROR f = b * a; // ERROR b = a; // ERROR b = b + f; // ERROR f |= b; // ERROR gl_FragColor = texture2D(s2D, centTexCoord); float flat; float smooth; float noperspective; float uvec2; float uvec3; float uvec4; //packed; // ERROR, reserved word { mat4 m; vec4 v; bool b; gl_FragColor += b ? v : m; // ERROR, types don't match around ":" } gl_FragColor.xr; // ERROR, swizzlers not from same field space gl_FragColor.xyxyx.xy; // ERROR, cannot make a vec5, even temporarily centTexCoord.z; // ERROR, swizzler out of range (a,b) = true; // ERROR, not an l-value } float imageBuffer; float uimage2DRect; int main() {} // ERROR void main(int a) {} // ERROR const int a; // ERROR int foo(in float a); int foo(out float a) // ERROR { return 3.2; // ERROR foo(a); // ERROR } bool gen(vec3 v) { if (abs(v[0]) < 1e-4F && abs(v[1]) < 1e-4) return true; } void v1() { } void v2() { return v1(); // ERROR, no expression allowed, even though void } void atest() { vec4 v = gl_TexCoord[1]; v += gl_TexCoord[3]; } varying vec4 gl_TexCoord[6]; // okay, assigning a size varying vec4 gl_TexCoord[5]; // ERROR, changing size mat2x2 m22; mat2x3 m23; mat2x4 m24; mat3x2 m32; mat3x3 m33; mat3x4 m34; mat4x2 m42; mat4x3 m43; mat4x4 m44; void foo123() { mat2 r2 = matrixCompMult(m22, m22); mat3 r3 = matrixCompMult(m33, m33); mat4 r4 = matrixCompMult(m44, m44); mat2x3 r23 = matrixCompMult(m23, m23); mat2x4 r24 = matrixCompMult(m24, m24); mat3x2 r32 = matrixCompMult(m32, m32); mat3x4 r34 = matrixCompMult(m34, m34); mat4x2 r42 = matrixCompMult(m42, m42); mat4x3 r43 = matrixCompMult(m43, m43); mat3x2 rfoo1 = matrixCompMult(m23, m32); // ERROR mat3x4 rfoo2 = matrixCompMult(m34, m44); // ERROR } void matConst() { vec2 v2; vec3 v3; mat4 m4b1 = mat4(v2, v3); // ERROR, not enough mat4 m4b2 = mat4(v2, v3, v3, v3, v3, v2, v2); // ERROR, too much mat4 m4g = mat4(v2, v3, v3, v3, v3, v3); mat4 m4 = mat4(v2, v3, v3, v3, v3, v2); mat3 m3 = mat3(m4); mat3 m3b1 = mat3(m4, v2); // ERROR, extra arg mat3 m3b2 = mat3(m4, m4); // ERROR, extra arg mat3x2 m32 = mat3x2(m4); mat4 m4c = mat4(m32); mat3 m3s = mat3(v2.x); mat3 m3a1[2] = mat3[2](m3s, m3s); mat3 m3a2[2] = mat3[2](m3s, m3s, m3s); // ERROR, too many args } uniform sampler3D s3D; uniform sampler1D s1D; uniform sampler2DShadow s2DS; void foo2323() { vec4 v; vec2 v2; float f; v = texture2DLod(s2D, v2, f); // ERROR v = texture3DProjLod(s3D, v, f); // ERROR v = texture1DProjLod(s1D, v, f); // ERROR v = shadow2DProjLod(s2DS, v, f); // ERROR v = texture1DGradARB(s1D, f, f, f); // ERROR v = texture2DProjGradARB(s2D, v, v2, v2); // ERROR v = shadow2DProjGradARB(s2DS, v, v2, v2); // ERROR } #extension GL_ARB_shader_texture_lod : require void foo2324() { vec4 v; vec2 v2; float f; v = texture2DLod(s2D, v2, f); v = texture3DProjLod(s3D, v, f); v = texture1DProjLod(s1D, v, f); v = shadow2DProjLod(s2DS, v, f); v = texture1DGradARB(s1D, f, f, f); v = texture2DProjGradARB(s2D, v, v2, v2); v = shadow2DProjGradARB(s2DS, v, v2, v2); v = shadow2DRectProjGradARB(s2DS, v, v2, v2); // ERROR } uniform sampler2DRect s2DRbad; // ERROR void foo121111() { vec2 v2; vec4 v = texture2DRect(s2DRbad, v2); } #extension GL_ARB_texture_rectangle : enable uniform sampler2DRect s2DR; uniform sampler2DRectShadow s2DRS; void foo12111() { vec2 v2; vec3 v3; vec4 v4; vec4 v; v = texture2DRect(s2DR, v2); v = texture2DRectProj(s2DR, v3); v = texture2DRectProj(s2DR, v4); v = shadow2DRect(s2DRS, v3); v = shadow2DRectProj(s2DRS, v4); v = shadow2DRectProjGradARB(s2DRS, v, v2, v2); } void voidTernary() { bool b; b ? foo121111() : foo12111(); b ? foo121111() : 4; // ERROR b ? 3 : foo12111(); // ERROR } float halfFloat1 = 1.0h; // syntax ERROR glslang-16.0.0/Test/120.vert000066400000000000000000000107721506534232700153660ustar00rootroot00000000000000#version 120 in vec4 i; // ERROR out vec4 o; // ERROR attribute vec2 attv2; attribute vec4 attv4; uniform sampler2D s2D; invariant varying vec2 centTexCoord; invariant gl_Position; centroid gl_Position; // ERROR centroid centroid foo; // ERROR invariant gl_Position, gl_PointSize; void main() { centTexCoord = attv2; gl_Position = attv4; gl_ClipVertex = attv4; gl_ClipDistance[1] = 0.2; // ERROR vec3[12] a; vec4[a.length()] b; gl_Position = b[b.length()-1]; float f[]; int a1 = f.length(); // ERROR float f[7]; int aa = f.length(); int a2 = f.length; // ERROR int a3 = f.length(a); // ERROR int a4 = f.flizbit; // ERROR int a4 = f.flizbit(); // ERROR float md[2][4]; // ERROR float[2] md2[4]; // ERROR float[2][4] md3; // ERROR float md5, md6[2][3]; // ERROR float[2] md4, md7[4]; // ERROR float md9[2][3] = float[2][3](1, 2, 3, 4, 5, 6); // ERROR float md10, md11[2][3] = float[2][3](1, 2, 3, 4, 5, 6); // ERROR gl_PointSize = 3.8; } uniform float initted = 3.4; // okay const float concall = sin(0.3); int[2][3] foo( // ERROR float[2][3] a, // ERROR float[2] b[3], // ERROR float c[2][3]); // ERROR int overloadA(in float f); int overloadA(out float f); // ERROR, different qualifiers float overloadA(float); // ERROR, different return value for same signature float overloadA(out float f, int); float overloadA(int i); void overloadB(float, const in float) { } vec2 overloadC(int, int); vec2 overloadC(const in int, float); vec2 overloadC(float, int); vec2 overloadC(vec2, vec2); vec3 overloadD(int, float); vec3 overloadD(float, in int); vec3 overloadE(float[2]); vec3 overloadE(mat2 m); vec3 overloadE(vec2 v); vec3 overloadF(int); vec3 overloadF(float); void foo() { float f; int i; overloadB(f, f); overloadB(f, 2); overloadB(1, i); overloadC(1); // ERROR overloadC(1, i); overloadC(vec2(1), vec2(2)); overloadC(f, 3.0); // ERROR, no way overloadC(ivec2(1), vec2(2)); overloadD(i, f); overloadD(f, i); overloadD(i, i); // ERROR, ambiguous int overloadB; // hiding overloadB(1, i); // ERROR sin(1); texture2D(s2D, ivec2(0)); clamp(attv4, 0, 1); clamp(ivec4(attv4), 0, 1); int a[2]; overloadC(a, 3); // ERROR overloadE(a); // ERROR overloadE(3.3); // ERROR overloadE(vec2(3.3)); overloadE(mat2(0.5)); overloadE(ivec4(1)); // ERROR overloadE(ivec2(1)); float b[2]; overloadE(b); overloadF(1, 1); // ERROR overloadF(1); } varying vec4 gl_TexCoord[35]; // ERROR, size too big // tests for output conversions void outFun(in float, out ivec2, in int, out float); int outFunRet(in float, out int, const in int, out ivec4); ivec2 outFunRet(in float, out ivec4, in int, out ivec4); void foo2() { vec2 v2; vec4 v4; float f; int i; outFun(i, v2, i, f); outFunRet(i, f, i, v4); float ret = outFunRet(i, f, i, v4); vec2 ret2 = outFunRet(i, v4, i, v4); bool b = any(lessThan(v4, attv4)); // tests aggregate arg to unary built-in } void noise() { float f1 = noise1(1.0); vec2 f2 = noise2(vec2(1.0)); vec3 f3 = noise3(vec3(1.0)); vec4 f4 = noise4(vec4(1.0)); } // version 130 features uniform int c; attribute ivec2 x; attribute vec2 v2a; attribute float c1D; attribute vec2 c2D; attribute vec3 c3D; uniform vec4 v4; void foo213() { float f = 3; switch (c) { // ERRORs... case 1: f = sin(f); break; case 2: f = f * f; default: f = 3.0; } int i; i << 3 | 0x8A >> 1 & 0xFF; // ERRORs... vec3 modfOut, modfIn; vec3 v11 = modf(modfIn, modfOut); // ERRORS... float t = trunc(f); vec2 v12 = round(v2a); vec2 v13 = roundEven(v2a); bvec2 b10 = isnan(v2a); bvec4 b11 = isinf(v4); sinh(c1D) + // ERRORS... cosh(c1D) * tanh(c2D); asinh(c4D) + acosh(c4D); atanh(c3D); int id = gl_VertexID; // ERROR gl_ClipDistance[1] = 0.3; // ERROR } int gl_ModelViewMatrix[] = 0; // token pasting (ERRORS...) #define mac abc##def int mac; #define macr(A,B) A ## B int macr(qrs,tuv); layout(std140) uniform BlockName // ERROR { int test; }; #extension GL_ARB_uniform_buffer_object : enable layout(std140) uniform BlockName { int test; };glslang-16.0.0/Test/130.frag000066400000000000000000000110021506534232700153110ustar00rootroot00000000000000#version 130 lowp vec3 a; mediump float b; highp int c; precision highp float; in vec4 i; out vec4 o; flat in float fflat; smooth in float fsmooth; noperspective in float fnop; void main() { float clip = gl_ClipDistance[3]; } uniform samplerCube sampC; void foo() { vec4 s = textureGather(sampC, vec3(0.2)); } #extension GL_ARB_texture_gather : enable void bar() { vec4 s = textureGather(sampC, vec3(0.2)); } flat in vec3 gl_Color; // ERROR, type in vec4 gl_Color; flat in vec4 gl_Color; flat in vec4 gl_Color[2]; // ERROR, array vec4 gl_Color; // ERROR, storage #extension GL_ARB_texture_gather : warn void bar2() { vec4 s = textureGather(sampC, vec3(0.2)); uvec3 uv3; bvec3 b3; b3 = lessThan(uv3, uv3); b3 = equal(uv3, uv3); const bvec2 bl1 = greaterThanEqual(uvec2(2, 3), uvec2(3,3)); const bvec2 bl2 = equal(uvec2(2, 3), uvec2(3,3)); const bvec2 bl3 = equal(bl1, bl2); // yes, equal int a1[int(bl3.x)]; int a2[int(bl3.y)]; a1[0]; // size 1 a2[0]; // size 1 const bvec4 bl4 = notEqual(greaterThan(uvec4(1,2,3,4), uvec4(0,2,0,6)), lessThanEqual(uvec4(7,8,9,10), uvec4(6, 8, 0, 11))); // compare (t,f,t,f) with (f,t,f,t) int a3[int(bl4.x)+int(bl4.y)+int(bl4.z)+int(bl4.w)]; a3[3]; // size 4 b3 != b3; b3 < b3; // ERROR uv3 > uv3; // ERROR uvec2(2, 3) >= uvec2(3,3); // ERROR int samples = gl_NumSamples; // ERROR int(bl4) <= int(bl4); // true int(bl4.x) > int(bl4.y); // false } #extension GL_ARB_texture_gather : enable #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_sample_shading : enable uniform sampler2D samp2D; uniform sampler2DShadow samp2DS; uniform sampler2DRect samp2DR; uniform sampler2DArray samp2DA; void bar23() { vec4 s; s = textureGatherOffset(sampC, vec3(0.3), ivec2(1)); // ERROR s = textureGatherOffset(samp2DR, vec2(0.3), ivec2(1)); // ERROR s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1)); s = textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); s = textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); // ERROR s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); // ERROR int samples = gl_NumSamples; } #extension GL_ARB_gpu_shader5 : enable void bar234() { vec4 s; s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1)); s = textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); s = textureGatherOffset(samp2DR, vec2(0.3), ivec2(1)); s = textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); } #extension GL_ARB_texture_cube_map_array : enable uniform samplerCubeArray Sca; uniform isamplerCubeArray Isca; uniform usamplerCubeArray Usca; uniform samplerCubeArrayShadow Scas; void bar235() { ivec3 a = textureSize(Sca, 3); vec4 b = texture(Sca, i); ivec4 c = texture(Isca, i, 0.7); uvec4 d = texture(Usca, i); b = textureLod(Sca, i, 1.7); a = textureSize(Scas, a.x); float f = texture(Scas, i, b.y); c = textureGrad(Isca, i, vec3(0.1), vec3(0.2)); } int \ x; // ERROR until 420pack is turned on #extension GL_ARB_shading_language_420pack : enable const int ai[3] = { 10, 23, 32 }; layout(binding=0) uniform blockname { int a; } instanceName; // ERROR uniform layout(binding=0) sampler2D bounds; void bar23444() { mat4x3 m43; \ float a1 = m43[3].y; vec3 v3; int a2 = m43.length(); a2 += m43[1].length(); a2 += v3.length(); const float b = 2 * a1; a.x = gl_MinProgramTexelOffset + gl_MaxProgramTexelOffset; bool boolb; boolb.length(); // ERROR m43[3][1].length(); // ERROR v3.length; // ERROR v3.length(b); // ERROR } in float gl_FogFragCoord; #extension GL_ARB_separate_shader_objects : enable in float gl_FogFragCoord; in int gl_FogFragCoord; // ERROR layout(early_fragment_tests) in; // ERROR layout(r32i) uniform iimage2D iimg2Dbad; // ERROR #extension GL_ARB_shader_image_load_store : enable layout(early_fragment_tests) in; layout(r32i) uniform iimage2D iimg2D; void qux2() { int i; imageAtomicCompSwap(iimg2D, ivec2(i,i), i, i); ivec4 pos = imageLoad(iimg2D, ivec2(i,i)); } layout(early_fragment_tests) out; // ERROR #extension GL_ARB_explicit_uniform_location : enable layout(location = 3) uniform vec4 ucolor0; // ERROR: explicit attrib location is also required for version < 330 #extension GL_ARB_explicit_attrib_location : enable layout(location = 4) uniform vec4 ucolor1; glslang-16.0.0/Test/130.vert000066400000000000000000000026011506534232700153570ustar00rootroot00000000000000#version 130 uniform int c; uniform usampler2D us2D; in ivec2 x; in vec2 v2a; in float c1D; in vec2 c2D; in vec3 c3D; smooth vec4 c4D; // ?? uniform vec4 v4; void main() { float f = 3; switch (c) { // full switch testing in switch.frag case 1: f = sin(f); break; case 2: f = f * f; default: f = 3.0; } uint i; i = texture(us2D, x).w; // full uint testing in uint.frag i << 3u | 0x8Au >> 1u & 0xFFu; vec3 modfOut, modfIn; vec3 v11 = modf(modfIn, modfOut); float t = trunc(f); vec2 v12 = round(v2a); vec2 v13 = roundEven(v2a); bvec2 b10 = isnan(v2a); bvec4 b11 = isinf(v4); sinh(c1D) + cosh(c1D) * tanh(c2D); asinh(c4D) + acosh(c4D); atanh(c3D); int id = gl_VertexID; gl_ClipDistance[1] = 0.3; } // version 140 features //uniform isamplerBuffer sbuf; //layout(std140) uniform blockName { // int anonMem; //}; void foo88() { int id = gl_InstanceID; // ERROR //id += anonMem; id += texelFetch(id, 8); gl_ClipVertex; // these are all present... gl_Color; gl_LightSource[0]; gl_DepthRange.far; gl_TexCoord; gl_FogFragCoord; gl_FrontColor; } // token pasting #define mac abc##def int mac; #define macr(A,B) A##B int macr(qrs,tuv); glslang-16.0.0/Test/140.frag000066400000000000000000000016321506534232700153220ustar00rootroot00000000000000#version 140 varying vec4 v; in vec4 i; out vec4 o; in float gl_ClipDistance[5]; void main() { float clip = gl_ClipDistance[2]; } #ifdef GL_ES #error GL_ES is set #else #error GL_ES is not set #endif in struct S { float f; } s; // ERROR float patch = 3.1; layout(location=3) in vec4 vl; // ERROR layout(location = 3) out vec4 factorBad; // ERROR #extension GL_ARB_explicit_attrib_location : enable layout(location = 5) out vec4 factor; #extension GL_ARB_separate_shader_objects : enable layout(location=4) in vec4 vl2; float fooi(); void foo() { vec2 r1 = modf(v.xy, v.zw); // ERROR, v.zw not l-value vec2 r2 = modf(o.xy, o.zw); o.z = fooi(); } // Test extra-function initializers float i1 = gl_FrontFacing ? -2.0 : 2.0; float i2 = 102; float fooi() { return i1 + i2; } uniform sampler2DMS aaa1; // ERROR #extension GL_ARB_texture_multisample : enable uniform sampler2DMS aaa2; glslang-16.0.0/Test/140.vert000066400000000000000000000040331506534232700153610ustar00rootroot00000000000000#version 140 uniform isamplerBuffer sbuf; layout(std140) uniform blockName { int anonMem; }; void main() { int id = gl_InstanceID; id += anonMem; id += texelFetch(sbuf, 8).w; gl_ClipVertex; // could be ERROR, but compiling under compatibility profile gl_Color; // could be ERROR, but compiling under compatibility profile gl_LightSource[0]; // could be ERROR, but compiling under compatibility profile gl_DepthRange.far; gl_TexCoord; // could be ERROR, but compiling under compatibility profile gl_FogFragCoord; // could be ERROR, but compiling under compatibility profile gl_FrontColor; // could be ERROR, but compiling under compatibility profile } out vec4 gl_Position; // ERROR layout(location = 9) in vec4 locBad; // ERROR #extension GL_ARB_explicit_attrib_location : enable layout(location = 9) in vec4 loc; #extension GL_ARB_separate_shader_objects : enable out vec4 gl_Position; in vec4 gl_Position; // ERROR out vec3 gl_Position; // ERROR out float gl_PointSize; out vec4 gl_ClipVertex; out float gl_FogFragCoord; uniform sampler2DRect s2dr; uniform sampler2DRectShadow s2drs; in ivec2 itloc2; in vec2 tloc2; in vec3 tloc3; in vec4 tloc4; void foo() { vec4 v = texelFetch(s2dr, itloc2); v += texelFetch(s2dr, itloc2, 0.2); // ERROR, no lod v += texture(s2dr, tloc2); v += texture(s2dr, tloc2, 0.3); // ERROR, no bias v += texture(s2drs, tloc3); v += textureProj(s2dr, tloc3); v += textureProj(s2dr, tloc4); v += textureProjGradOffset(s2dr, tloc4, ivec2(0.0), ivec2(0.0), ivec2(1,2)); v += textureProjGradOffset(s2drs, tloc4, ivec2(0.0), ivec2(0.0), ivec2(1,2)); } void devi() { gl_DeviceIndex; // ERROR, no extension gl_ViewIndex; // ERROR, no extension } #ifdef GL_EXT_device_group #extension GL_EXT_device_group : enable #endif #ifdef GL_EXT_multiview #extension GL_EXT_multiview : enable #endif void devie() { gl_DeviceIndex; gl_ViewIndex; } glslang-16.0.0/Test/150.frag000066400000000000000000000115021506534232700153200ustar00rootroot00000000000000#version 150 core in vec4 gl_FragCoord; layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR layout(pixel_center_integer) in vec4 gl_FragCoord; // ERROR layout(origin_upper_left) in vec4 foo; // ERROR layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; void main() { vec4 c = gl_FragCoord; } layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, declared after use in struct S { float f; } s; float patch = 3.1; uniform sampler2DMS sms; uniform isampler2DMS isms; uniform usampler2DMS usms; uniform sampler2DMSArray smsa; uniform isampler2DMSArray ismsa; uniform usampler2DMSArray usmsa; flat in ivec2 p2; flat in ivec3 p3; flat in int samp; void barWxyz() { ivec2 t11 = textureSize( sms); ivec2 t12 = textureSize(isms); ivec2 t13 = textureSize(usms); ivec3 t21 = textureSize( smsa); ivec3 t22 = textureSize(ismsa); ivec3 t23 = textureSize(usmsa); vec4 t31 = texelFetch( sms, p2, samp); ivec4 t32 = texelFetch(isms, p2, samp); uvec4 t33 = texelFetch(usms, p2, 3); vec4 t41 = texelFetch( smsa, p3, samp); ivec4 t42 = texelFetch(ismsa, ivec3(2), samp); uvec4 t43 = texelFetch(usmsa, p3, samp); } int primitiveID() { return gl_PrimitiveID; gl_PerFragment; // ERROR, block name can't get reused } in double type1; // ERROR #extension GL_ARB_gpu_shader_fp64 : enable double type2; double type3 = 2.0; int absTest = sqrt(type3); double absTest2 = sqrt(type3); double absTest3 = sqrt(2); float dk = sqrt(11); #extension GL_ARB_shader_bit_encoding: enable float f; vec4 v4; ivec4 iv4a; uvec2 uv2c; void bitEncodingPass() { int i = floatBitsToInt(f); uvec4 uv11 = floatBitsToUint(v4); vec4 v14 = intBitsToFloat(iv4a); vec2 v15 = uintBitsToFloat(uv2c); } #extension GL_ARB_shader_bit_encoding: disable void bitEncodingFail() { int i = floatBitsToInt(f); // Error, extention GL_ARB_bit_encoding is diabled } #extension GL_ARB_shading_language_packing : enable vec2 v2a; uint uy; void packingPass() { uint u19 = packSnorm2x16(v2a); vec2 v20 = unpackSnorm2x16(uy); uint u15 = packUnorm2x16(v2a); vec2 v16 = unpackUnorm2x16(uy); uint u17 = packHalf2x16(v2a); vec2 v18 = unpackHalf2x16(uy); } #extension GL_ARB_shading_language_packing : disable void packingFail() { uint u19 = packSnorm2x16(v2a); // Error, extension GL_ARB_shading_language_packing is disabled } // Testing extension GL_ARB_texture_query_lod uniform sampler1D samp1D; uniform sampler2DShadow samp2Ds; void qlodFail() { vec2 lod; float pf; vec2 pf2; vec3 pf3; lod = textureQueryLOD(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed lod = textureQueryLOD(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed } #extension GL_ARB_texture_query_lod : enable uniform isampler2D isamp2D; uniform usampler3D usamp3D; uniform samplerCube sampCube; uniform isampler1DArray isamp1DA; uniform usampler2DArray usamp2DA; uniform sampler1DShadow samp1Ds; uniform samplerCubeShadow sampCubes; uniform sampler1DArrayShadow samp1DAs; uniform sampler2DArrayShadow samp2DAs; uniform samplerBuffer sampBuf; uniform sampler2DRect sampRect; void qlodPass() { vec2 lod; float pf; vec2 pf2; vec3 pf3; lod = textureQueryLOD(samp1D, pf); lod = textureQueryLOD(isamp2D, pf2); lod = textureQueryLOD(usamp3D, pf3); lod = textureQueryLOD(sampCube, pf3); lod = textureQueryLOD(isamp1DA, pf); lod = textureQueryLOD(usamp2DA, pf2); lod = textureQueryLOD(samp1Ds, pf); lod = textureQueryLOD(samp2Ds, pf2); lod = textureQueryLOD(sampCubes, pf3); lod = textureQueryLOD(samp1DAs, pf); lod = textureQueryLOD(samp2DAs, pf2); lod = textureQueryLOD(sampBuf, pf); // ERROR lod = textureQueryLOD(sampRect, pf2); // ERROR } // Test extension GL_EXT_shader_integer_mix #extension GL_EXT_shader_integer_mix : enable bool b1, b2, b; int x,y; uint z,w; void testmix() { int ival = mix(x, y, b); ivec2 iv2 = mix(ivec2(x), ivec2(y), bvec2(b)); ivec3 iv3 = mix(ivec3(x), ivec3(y), bvec3(b)); ivec4 iv4 = mix(ivec4(x), ivec4(x), bvec4(b)); uint uiv = mix(z, w, b); uvec2 uv2 = mix(uvec2(z), uvec2(z), bvec2(b)); uvec3 uv3 = mix(uvec3(z), uvec3(z), bvec3(b)); uvec4 uv4 = mix(uvec4(z), uvec4(z), bvec4(b)); bool bv = mix(b1, b2, b); bvec2 bv2 = mix(bvec2(b1), bvec2(b2), bvec2(b)); bvec3 bv3 = mix(bvec3(b1), bvec3(b2), bvec3(b)); bvec4 bv4 = mix(bvec4(b1), bvec4(b2), bvec4(b)); } #extension GL_EXT_shader_integer_mix : disable void testmixFail() { int ival = mix(x, y, b); // Error since extenson GL_EXT_shader_integer_mix is disabled } glslang-16.0.0/Test/150.geom000066400000000000000000000100161506534232700153270ustar00rootroot00000000000000#version 150 core in fromVertex { in vec3 color; } fromV[]; out toFragment { out vec3 color; } toF; out fromVertex { // okay to reuse a block name for another block name vec3 color; }; out fooB { vec2 color; } fromVertex; // ERROR, cannot reuse block name as block instance int fromVertex; // ERROR, cannot reuse a block name for something else out fooC { vec2 color; } fooC; // ERROR, cannot have same name for block and instance name void main() { EmitVertex(); EndPrimitive(); EmitStreamVertex(1); // ERROR EndStreamPrimitive(0); // ERROR color = fromV[0].color; gl_ClipDistance[3] = gl_in[1].gl_ClipDistance[2]; gl_Position = gl_in[0].gl_Position; gl_PointSize = gl_in[3].gl_PointSize; gl_PrimitiveID = gl_PrimitiveIDIn; gl_Layer = 2; } out vec4 ov0; // stream should be 0 layout(stream = 4) out vec4 ov4; out vec4 o1v0; // stream should be 0 layout(stream = 3) uniform; // ERROR layout(stream = 3) in; // ERROR layout(stream = 3) uniform int ua; // ERROR layout(stream = 3) uniform ubb { int ua; } ibb; // ERROR layout(line_strip, points, triangle_strip, stream = 3, points, triangle_strip) out; // just means "stream = 3, triangle_strip" layout(stream = 3, triangle_strip) out; out vec4 ov3; // stream should be 3 layout(stream = 6) out ooutb { vec4 a; } ouuaa6; layout(stream = 6) out ooutb2 { layout(stream = 6) vec4 a; } ouua6; layout(stream = 7) out ooutb3 { layout(stream = 6) vec4 a; // ERROR } ouua7; out vec4 ov2s3; // stream should be 3 layout(max_vertices = 200) out; layout(max_vertices = 300) out; // ERROR, too big void foo(layout(max_vertices = 4) int a) // ERROR { ouuaa6.a = vec4(1.0); } layout(line_strip, points, triangle_strip, stream = 3, points) out; // ERROR, changing output primitive layout(line_strip, points, stream = 3) out; // ERROR, changing output primitive layout(triangle_strip) in; // ERROR, not an input primitive layout(triangle_strip) uniform; // ERROR layout(triangle_strip) out vec4 badv4; // ERROR, not on a variable layout(triangle_strip) in vec4 bad2v4[]; // ERROR, not on a variable or input layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0 out outbn2 { layout(invocations = 3) int a; // 2 ERRORs, not on a block member, not until 4.0 layout(max_vertices = 3) int b; // ERROR, not on a block member layout(triangle_strip) int c; // ERROR, not on a block member } outbi; layout(lines) out; // ERROR, not on output layout(lines_adjacency) in; layout(triangles) in; // ERROR, can't change it layout(triangles_adjacency) in; // ERROR, can't change it layout(invocations = 4) in; // ERROR, not until 4.0 in inbn { layout(stream = 2) int a; // ERROR, stream on input } inbi[]; in sameName { int a15; } insn[]; out sameName { float f15; }; uniform sameName { bool b15; }; float summ = gl_MaxVertexAttribs + gl_MaxVertexUniformComponents + gl_MaxVaryingFloats + gl_MaxVaryingComponents + gl_MaxVertexOutputComponents + gl_MaxGeometryInputComponents + gl_MaxGeometryOutputComponents + gl_MaxFragmentInputComponents + gl_MaxVertexTextureImageUnits + gl_MaxCombinedTextureImageUnits + gl_MaxTextureImageUnits + gl_MaxFragmentUniformComponents + gl_MaxDrawBuffers + gl_MaxClipDistances + gl_MaxGeometryTextureImageUnits + gl_MaxGeometryOutputVertices + gl_MaxGeometryTotalOutputComponents + gl_MaxGeometryUniformComponents + gl_MaxGeometryVaryingComponents; void fooe1() { gl_ViewportIndex = gl_MaxViewports - 1; } #extension GL_ARB_viewport_array : enable void fooe2() { gl_ViewportIndex = gl_MaxViewports - 1; } out int gl_ViewportIndex; glslang-16.0.0/Test/150.tesc000066400000000000000000000015561506534232700153470ustar00rootroot00000000000000#version 150 #extension GL_ARB_tessellation_shader : enable layout(vertices = 4) out; int outa[gl_out.length()]; patch out vec4 patchOut; void main() { barrier(); int a = gl_MaxTessControlInputComponents + gl_MaxTessControlOutputComponents + gl_MaxTessControlTextureImageUnits + gl_MaxTessControlUniformComponents + gl_MaxTessControlTotalOutputComponents; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; float cd = gl_in[1].gl_ClipDistance[2]; int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; int iid = gl_InvocationID; gl_out[gl_InvocationID].gl_Position = p; gl_out[gl_InvocationID].gl_PointSize = ps; gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; gl_TessLevelOuter[3] = 3.2; gl_TessLevelInner[1] = 1.3; } glslang-16.0.0/Test/150.tese000066400000000000000000000016261506534232700153470ustar00rootroot00000000000000#version 150 #extension GL_ARB_tessellation_shader : enable layout(quads, cw) in; layout(fractional_odd_spacing) in; layout(point_mode) in; patch in vec4 patchIn; void main() { barrier(); // ERROR int a = gl_MaxTessEvaluationInputComponents + gl_MaxTessEvaluationOutputComponents + gl_MaxTessEvaluationTextureImageUnits + gl_MaxTessEvaluationUniformComponents + gl_MaxTessPatchComponents + gl_MaxPatchVertices + gl_MaxTessGenLevel; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; float cd = gl_in[1].gl_ClipDistance[2]; int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; vec3 tc = gl_TessCoord; float tlo = gl_TessLevelOuter[3]; float tli = gl_TessLevelInner[1]; gl_Position = p; gl_PointSize = ps; gl_ClipDistance[2] = cd; } glslang-16.0.0/Test/150.vert000066400000000000000000000015611506534232700153650ustar00rootroot00000000000000#version 150 core #ifndef GL_core_profile # error standard macro GL_core_profile not defined #endif in vec4 iv4; uniform float ps; invariant gl_Position; void main() { gl_Position = iv4; gl_PointSize = ps; gl_ClipDistance[2] = iv4.x; gl_ClipVertex = iv4; } out float gl_ClipDistance[4]; uniform foob { int a[]; }; int a[5]; // ERROR, resizing user-block member in double dvarerr; // Error since extension GL_ARB_vertex_attrib_64bit is not enabled #extension GL_ARB_vertex_attrib_64bit: enable in double dvar; in dvec2 dv2var; in dvec3 dv3var; in dvec4 dv4var; in dmat2 dmat2var; in dmat3 dmat3var; in dmat4 dmat4var; in dmat2x3 dmat23var; in dmat2x4 dmat24var; in dmat3x2 dmat32var; in dmat3x4 dmat34var; in dmat4x2 dmat42var; in dmat4x3 dmat43var; #line 3000 #error line of this error should be 3001 glslang-16.0.0/Test/300.frag000066400000000000000000000124461506534232700153250ustar00rootroot00000000000000#version 300 es void nodef1(float f); // ERROR, no default precision uniform sampler2D s2D; uniform lowp sampler3D s3D; uniform samplerCube sCube; uniform lowp samplerCubeShadow sCubeShadow; uniform lowp sampler2DShadow s2DShadow; uniform lowp sampler2DArray s2DArray; uniform lowp sampler2DArrayShadow s2DArrayShadow; uniform lowp isampler2D is2D; uniform lowp isampler3D is3D; uniform lowp isamplerCube isCube; uniform lowp isampler2DArray is2DArray; uniform lowp usampler2D us2D; uniform lowp usampler3D us3D; uniform lowp usamplerCube usCube; uniform lowp usampler2DArray us2DArray; precision lowp float; in float c1D; in vec2 c2D; in vec3 c3D; smooth vec4 c4D; flat in int ic1D; flat in ivec2 ic2D; flat in ivec3 ic3D; flat in ivec4 ic4D; noperspective in vec4 badv; // ERROR in sampler2D bads; // ERROR precision lowp uint; // ERROR struct s { int i; sampler2D s; }; in s badout; // ERROR, can't contain a sampler // ERROR, can't have int in struct without flat struct S2 { vec3 c; float f; }; in S2 s2; out vec3 sc; out float sf; uniform sampler2D arrayedSampler[5]; void main() { float f; vec4 v; v = texture(s2D, c2D); v = textureProj(s3D, c4D); v = textureLod(s2DArray, c3D, 1.2); f = textureOffset(s2DShadow, c3D, ic2D, c1D); // ERROR, offset argument not constant v = texelFetch(s3D, ic3D, ic1D); v = texelFetchOffset(arrayedSampler[2], ic2D, 4, ic2D); // ERROR, offset argument not constant f = textureLodOffset(s2DShadow, c3D, c1D, ic2D); v = textureProjLodOffset(s2D, c3D, c1D, ic2D); v = textureGrad(sCube, c3D, c3D, c3D); f = textureGradOffset(s2DArrayShadow, c4D, c2D, c2D, ic2D); v = textureProjGrad(s3D, c4D, c3D, c3D); v = textureProjGradOffset(s2D, c3D, c2D, c2D, ic2D); v = texture(arrayedSampler[ic1D], c2D); // ERROR ivec4 iv; iv = texture(is2D, c2D); iv = textureProjOffset(is2D, c4D, ic2D); iv = textureProjLod(is2D, c3D, c1D); iv = textureProjGrad(is2D, c3D, c2D, c2D); iv = texture(is3D, c3D, 4.2); iv = textureLod(isCube, c3D, c1D); iv = texelFetch(is2DArray, ic3D, ic1D); iv.xy = textureSize(sCubeShadow, 2); float precise; double boo; // ERROR dvec2 boo2; // ERROR dvec3 boo3; // ERROR dvec4 boo4; // ERROR f += gl_FragCoord.y; gl_FragDepth = f; sc = s2.c; sf = s2.f; sinh(c1D) + cosh(c1D) * tanh(c2D); asinh(c4D) + acosh(c4D); atanh(c3D); } uniform multi { int[2] a[3]; // ERROR int[2][3] b; // ERROR int c[2][3]; // ERROR } multiInst[2][3]; // ERROR out vec4 colors[4]; void foo() { colors[2] = c4D; colors[ic1D] = c4D; // ERROR } uniform s st1; uniform s st2; void foo13(s inSt2) { if (st1 == st2); // ERROR if (st1 != st2); // ERROR st1.s == st2.s; // ERROR inSt2 = st1; // ERROR inSt2 == st1; // ERROR } void foo23() { textureOffset(s2DShadow, c3D, ivec2(-8, 7), c1D); textureOffset(s2DShadow, c3D, ivec2(-9, 8), c1D); } void foo324(void) { float p = pow(3.2, 4.6); p += sin(0.4); p += distance(vec2(10.0, 11.0), vec2(13.0, 15.0)); // 5 p += dot(vec3(2,3,5), vec3(-2,-1,4)); // 13 vec3 c3 = cross(vec3(3,-3,1), vec3(4,9,2)); // (-15, -2, 39) c3 += faceforward(vec3(1,2,3), vec3(2,3,5), vec3(-2,-1,4)); // (-1,-2,-3) c3 += faceforward(vec3(1,2,3), vec3(-2,-3,-5), vec3(-2,-1,4)); // (1,2,3) vec2 c2 = reflect(vec2(1,3), vec2(0,1)); // (1,-3) c2 += refract(vec2(1,3), vec2(0,1), 1.0); // (1,-3) c2 += refract(vec2(1,3), vec2(0,1), 3.0); c2 += refract(vec2(1,0.1), vec2(0,1), 5.0); // (0,0) mat3x2 m32 = outerProduct(vec2(2,3), vec3(5,7,11));// rows: (10, 14, 22), (15, 21, 33) } uniform mediump; // ERROR layout(early_fragment_tests) in; // ERROR // Test extension GL_EXT_shader_integer_mix #extension GL_EXT_shader_integer_mix : enable bool b1, b2, b; int x,y; uint z,w; void testmix() { int ival = mix(x, y, b); ivec2 iv2 = mix(ivec2(x), ivec2(y), bvec2(b)); ivec3 iv3 = mix(ivec3(x), ivec3(y), bvec3(b)); ivec4 iv4 = mix(ivec4(x), ivec4(x), bvec4(b)); uint uiv = mix(z, w, b); uvec2 uv2 = mix(uvec2(z), uvec2(z), bvec2(b)); uvec3 uv3 = mix(uvec3(z), uvec3(z), bvec3(b)); uvec4 uv4 = mix(uvec4(z), uvec4(z), bvec4(b)); bool bv = mix(b1, b2, b); bvec2 bv2 = mix(bvec2(b1), bvec2(b2), bvec2(b)); bvec3 bv3 = mix(bvec3(b1), bvec3(b2), bvec3(b)); bvec4 bv4 = mix(bvec4(b1), bvec4(b2), bvec4(b)); } #extension GL_EXT_shader_integer_mix : disable void testmixFail() { int ival = mix(x, y, b); // Error since extenson GL_EXT_shader_integer_mix is disabled } // Test layout qualifier "index" with extension GL_EXT_blend_func_extended layout(location = 0, index = 1) out vec4 outVarFail; // Error Index supported with extension GL_EXT_blend_func_extended enabled #extension GL_EXT_blend_func_extended : enable layout(location = 0, index = 2) out vec4 outVarPass; #ifndef GL_FRAGMENT_PRECISION_HIGH #error missing GL_FRAGMENT_PRECISION_HIGH #endif invariant in; // ERROR invariant in vec4; // ERROR invariant in vec4 fooinv; // ERROR float imageBuffer; // ERROR, reserved float uimage2DRect; // ERROR, reserved glslang-16.0.0/Test/300.vert000066400000000000000000000111721506534232700153610ustar00rootroot00000000000000#version 300 es uniform mat4x3 m43; uniform mat3x3 m33; uniform mat4x4 m44; in vec3 v3; varying vec2 v2; // ERROR, varying reserved in vec4 bad[10]; // ERROR, no arrayed inputs highp in vec4 badorder; // ERROR, incorrect qualifier order out invariant vec4 badorder2; // ERROR, incorrect qualifier order in centroid vec4 badorder4; // ERROR, incorrect qualifier order out flat vec4 badorder3; // ERROR, incorrect qualifier order void bar(in const float a); // ERROR, incorrect qualifier order void bar2(highp in float b); // ERROR, incorrect qualifier order smooth flat out vec4 rep; // ERROR, replicating interpolation qualification centroid sample out vec4 rep2; // ERROR, replicating auxiliary qualification in uniform vec4 rep3; // ERROR, replicating storage qualification struct S { vec3 c; float f; }; out S s; void main() { int id = gl_VertexID + gl_InstanceID; int c0 = gl_MaxVertexAttribs; int c1 = gl_MaxVertexUniformVectors; int c2 = gl_MaxVertexOutputVectors; int c3 = gl_MaxFragmentInputVectors; int c4 = gl_MaxVertexTextureImageUnits; int c5 = gl_MaxCombinedTextureImageUnits; int c6 = gl_MaxTextureImageUnits; int c7 = gl_MaxFragmentUniformVectors; int c8 = gl_MaxDrawBuffers; int c9 = gl_MinProgramTexelOffset; int c10 = gl_MaxProgramTexelOffset; mat3x4 tm = transpose(m43); highp float dm = determinant(m44); mat3x3 im = inverse(m33); mat3x2 op = outerProduct(v2, v3); gl_Position = m44[2]; gl_PointSize = v2.y; s.c = v3; s.f = dm; #ifdef GL_ES #error GL_ES is set #else #error GL_ES is not set #endif } float badsize[]; // ERROR float[] badsize2; // ERROR uniform ub { int a[]; // ERROR } ubInst[]; // ERROR void foo(int a[]); // ERROR float okayA[] = float[](3.0f, 4.0F); // Okay out vec3 newV; void newVFun() { newV = v3; } invariant newV; // ERROR, variable already used in vec4 invIn; invariant invIn; // ERROR, in v300 out S s2; invariant s2; invariant out S s3; flat out int; uniform ub2 { float f; } a; uniform ub2 { // ERROR redeclaration of block name (same instance name) float g; } a; uniform ub2 { // ERROR redeclaration of block name (different instance name) float f; } c; uniform ub2 { // ERROR redeclaration of block name (no instance name) float f123; }; uniform ub3 { bool b23; }; uniform ub3 { // ERROR redeclaration of block name (no instance name in first or declared) bool b234; }; precision lowp sampler3D; precision lowp sampler2DShadow; precision lowp sampler2DArrayShadow; uniform sampler2D s2D; uniform sampler3D s3D; uniform sampler2DShadow s2DS; uniform sampler2DArrayShadow s2DAS; in vec2 c2D; void foo23() { ivec2 x1 = textureSize(s2D, 2); textureSize(s2D); // ERROR, no lod ivec3 x3 = textureSize(s2DAS, -1); textureSize(s2DAS); // ERROR, no lod vec4 x4 = texture(s2D, c2D); texture(s2D, c2D, 0.2); // ERROR, bias vec4 x5 = textureProjOffset(s3D, vec4(0.2), ivec3(1)); textureProjOffset(s3D, vec4(0.2), ivec3(1), .03); // ERROR, bias float x6 = textureProjGradOffset(s2DS, invIn, vec2(4.2), vec2(5.3), ivec2(1)); } int fgfg(float f, mediump int i); int fgfg(float f, highp int i); // ERROR, precision qualifier difference int fgfgh(float f, const in mediump int i); int fgfgh(float f, in mediump int i); // ERROR, precision qualifier difference void foo2349() { float[] x = float[] (1.0, 2.0, 3.0); float[] y = x; float[3] z = x; float[3] w; w = y; } int[] foo213234(); // ERROR int foo234234(float[]); // ERROR int foo234235(vec2[] v); // ERROR precision highp float[2]; // ERROR int fffg(float f); int fffg(float f); int gggf(float f); int gggf(float f) { return 2; } int gggf(float f); int agggf(float f) { return 2; } int agggf(float f); out struct Ssss { float f; } ssss; uniform Bblock { int a; } Binst; int Bfoo; layout(std140) Binst; // ERROR layout(std140) Bblock; // ERROR layout(std140) Bfoo; // ERROR layout(std430) uniform B430 { int a; } B430i; // ERROR struct SNA { int a[]; // ERROR }; void fooDeeparray() { float[] x = float[] (1.0, 2.0, 3.0), y = float[] (1.0, 2.0, 3.0, 4.0); float xp[3], yp[4]; xp = x; yp = y; xp = y; // ERROR, wrong size yp = x; // ERROR, wrong size } layout(num_views = 2) in; // ERROR, no extension void mwErr() { gl_ViewID_OVR; // ERROR, no extension } #extension GL_OVR_multiview : enable layout(num_views = 2) uniform float mwUniform; // ERROR, must be global layout(num_views = 2) in; // OK void mwOk() { gl_ViewID_OVR; } glslang-16.0.0/Test/300BuiltIns.frag000066400000000000000000000030351506534232700167710ustar00rootroot00000000000000#version 300 es int imax, imin; uint umax, umin; vec3 x, y; // ERROR, needs default precision bvec3 bv; uint uy; uvec2 uv2c; uvec2 uv2y; uvec2 uv2x; uvec4 uv4y; ivec3 iv3a; ivec3 iv3b; ivec4 iv4a; ivec4 iv4b; float f; vec2 v2a, v2b; vec4 v4; void main() { // 1.3 int vec3 v = mix(x, y, bv); ivec4 iv10 = abs(iv4a); ivec4 iv11 = sign(iv4a); ivec4 iv12 = min(iv4a, iv4b); ivec4 iv13 = min(iv4a, imin); uvec2 u = min(uv2x, uv2y); uvec4 uv = min(uv4y, uy); ivec3 iv14 = max(iv3a, iv3b); ivec4 iv15 = max(iv4a, imax); uvec2 u10 = max(uv2x, uv2y); uvec2 u11 = max(uv2x, uy); ivec4 iv16 = clamp(iv4a, iv4a, iv4b); ivec4 iv17 = clamp(iv4a, imin, imax); uvec2 u12 = clamp(uv2x, uv2y, uv2c); uvec4 uv10 = clamp(uv4y, umin, umax); // 1.3 float vec3 modfOut; vec3 v11 = modf(x, modfOut); float t = trunc(f); vec2 v12 = round(v2a); vec2 v13 = roundEven(v2a); bvec2 b10 = isnan(v2a); bvec4 b11 = isinf(v4); // 3.3 float int i = floatBitsToInt(f); uvec4 uv11 = floatBitsToUint(v4); vec4 v14 = intBitsToFloat(iv4a); vec2 v15 = uintBitsToFloat(uv2c); // 4.0 pack uint u19 = packSnorm2x16(v2a); vec2 v20 = unpackSnorm2x16(uy); uint u15 = packUnorm2x16(v2a); vec2 v16 = unpackUnorm2x16(uy); uint u17 = packHalf2x16(v2b); vec2 v18 = unpackHalf2x16(uy); // not present noise2(v18); // ERROR, not present float t__; // ERROR, no __ until revision 310 // ERROR, no __ until revision 310 #define __D } glslang-16.0.0/Test/300block.frag000066400000000000000000000020161506534232700163300ustar00rootroot00000000000000#version 300 es precision mediump float; struct S { vec4 u; uvec4 v; lowp isampler3D sampler; vec3 w; struct T1 { // ERROR int a; } t; }; uniform S s; uniform fooBlock { uvec4 bv; uniform mat2 bm2; lowp isampler2D sampler; // ERROR struct T2 { // ERROR int a; } t; S fbs; // ERROR, contains a sampler }; uniform barBlock { uvec4 nbv; int ni; } inst; uniform barBlockArray { uvec4 nbv; int ni; } insts[4]; uniform unreferenced { float f; uint u; }; void main() { texture(s.sampler, vec3(inst.ni, bv.y, insts[2].nbv.z)); insts[s.v.x]; // ERROR fooBlock; // ERROR mat4(s); // ERROR int insts; float barBlock; mat4(barBlock); mat4(unreferenced); // ERROR, bad type ++s; // ERROR inst - 1; // ERROR ++barBlock; 2 * barBlockArray; // ERROR } int fooBlock; // ERROR, redef. glslang-16.0.0/Test/300layout.frag000066400000000000000000000007451506534232700165620ustar00rootroot00000000000000#version 300 es precision mediump float; in vec4 pos; layout (location = 2) in vec4 color; // ERROR layout(location = 1) out vec4 c; layout(location = 3) out vec4 p; layout(location = 4) out vec4 q[2]; void main() { c = color; p = pos; q[1] = pos; } layout(location = 40) out float ca[4]; // ERROR, overlap, ERROR too big layout(location = 41) out float cb[2]; // ERROR, overlap, ERROR too big layout(location = 39) out float cc[6]; // ERROR, overlap, ERROR too big glslang-16.0.0/Test/300layout.vert000066400000000000000000000027741506534232700166270ustar00rootroot00000000000000#version 300 es struct s { vec4 v; }; layout(location = 7) in vec3 c; layout(LocatioN = 3) in vec4 p; layout(LocatioN = 9) in vec4 q[4]; // ERROR, no array layout(LocatioN = 10) in s r[4]; // ERROR, no struct, ERROR, location overlap out vec4 pos; out vec3 color; layout(shared, column_major) uniform mat4 badm4; // ERROR layout(shared, column_major, row_major) uniform; // default is now shared and row_major layout(std140) uniform Transform { // layout of this block is std140 mat4 M1; // row_major layout(column_major) mat4 M2; // column major mat3 N1; // row_major centroid float badf; // ERROR in float badg; // ERROR layout(std140) float bad1; layout(shared) float bad2; layout(packed) float bad3; } tblock; uniform T2 { // layout of this block is shared bool b; mat4 t2m; }; layout(column_major) uniform T3 { // shared and column_major mat4 M3; // column_major layout(row_major) mat4 M4; // row major mat3 N2; // column_major int b; // ERROR, redefinition (needs to be last member of block for testing, following members are skipped) }; out badout { // ERROR float f; }; layout (location = 10) out vec4 badoutA; // ERROR void main() { pos = p * (tblock.M1 + tblock.M2 + M4 + M3 + t2m); color = c * tblock.N1; } shared vec4 compute_only; // ERROR layout(packed) uniform; layout(packed) uniform float aoeuntaoeu; // ERROR, packed on variable layout(location = 40) in float cd; layout(location = 37) in mat4x3 ce; // ERROR, overlap glslang-16.0.0/Test/300link.frag000066400000000000000000000001431506534232700161720ustar00rootroot00000000000000#version 300 es precision highp float; out vec4 color1; out vec4 color2; void main() {} glslang-16.0.0/Test/300link2.frag000066400000000000000000000002711506534232700162560ustar00rootroot00000000000000#version 300 es precision mediump float; in vec4 pos; layout(location = 1) out vec4 c; layout(location = 5) out vec4 p; layout(location = 9) out vec4 q[2]; void main() { } glslang-16.0.0/Test/300link3.frag000066400000000000000000000001211506534232700162510ustar00rootroot00000000000000#version 300 es precision highp float; out vec4 color1; void main() {} glslang-16.0.0/Test/300operations.frag000066400000000000000000000030101506534232700174140ustar00rootroot00000000000000#version 300 es uniform block { mediump float f; } instanceName; struct S { int i; } s; float a[5]; void main() { bool b; float f; int i; uint u; bvec3 b3; vec3 v3; ivec3 iv3; uvec3 uv3; vec4 v4; ivec4 iv4; uvec4 uv4; mat2 m2; mat4 m4; // These are all errors: instanceName + instanceName; s + s; i + f; u + f; u + i; iv3 *= iv4; iv4 / uv4; i - v3; iv3 + uv3; a * a; b / b; f % f; i % f; f % u; instanceName++; ++s; a--; ++b3; iv3 < uv3; m2 > m2; m2 != m4; i >= u; a <= a; b > b; b && b3; b3 ^^ b3; b3 || b; i && i; u || u; m2 ^^ m2; !u; !i; !m2; !v3; !a; ~f; ~m4; ~v3; ~a; ~instanceName; i << iv3; u << uv3; i >> f; f >> i; m4 >> i; a >> u; iv3 >> iv4; i & u; u &= uv3; i | uv3; u & f; m2 | m2; s ^ s; (f = f) = f; // These are all okay: f * v4; u + u; uv4 / u; iv3 -= iv3; i %= 3; uv3 % 4u; --m2; iv4++; m4 != m4; m2 == m2; i <= i; a == a; s != s; b && b; b || b; b ^^ b; !b, uv3; ~i; ~u; ~uv3; ~iv3; uv3 <<= i; i >> i; u << u; iv3 >> iv3; i & i; u | u; iv3 ^ iv3; u & uv3; uv3 | u; uv3 &= u; int arr[0x222 & 0xf]; arr[1]; // size 2 int arr2[(uvec2(0, 0x2) | 0x1u).y]; arr2[2]; // size 3 } glslang-16.0.0/Test/300samplerExternal.frag000066400000000000000000000023531506534232700204100ustar00rootroot00000000000000#version 300 es #extension GL_OES_EGL_image_external_essl3 : enable uniform samplerExternalOES sExt; precision mediump samplerExternalOES; uniform samplerExternalOES mediumExt; uniform highp samplerExternalOES highExt; void main() { texture2D(sExt, vec2(0.2)); // ERROR texture2D(mediumExt, vec2(0.2)); // ERROR texture2D(highExt, vec2(0.2)); // ERROR texture2DProj(sExt, vec3(0.3)); // ERROR texture2DProj(sExt, vec4(0.3)); // ERROR int lod = 0; highp float bias = 0.01; textureSize(sExt, lod); texture(sExt, vec2(0.2)); texture(sExt, vec2(0.2), bias); textureProj(sExt, vec3(0.2)); textureProj(sExt, vec3(0.2), bias); textureProj(sExt, vec4(0.2)); textureProj(sExt, vec4(0.2), bias); texelFetch(sExt, ivec2(4), lod); texture3D(sExt, vec3(0.3)); // ERROR texture2DProjLod(sExt, vec3(0.3), 0.3); // ERROR texture(sExt, vec3(0.3)); // ERROR textureProjLod(sExt, vec3(0.3), 0.3); // ERROR } #extension GL_OES_EGL_image_external_essl3 : disable #extension GL_OES_EGL_image_external : enable uniform samplerExternalOES badExt; // ERROR #extension GL_OES_EGL_image_external : disable uniform samplerExternalOES badExt; // ERROR glslang-16.0.0/Test/300samplerExternalYUV.frag000066400000000000000000000021451506534232700210130ustar00rootroot00000000000000#version 300 es #extension GL_EXT_YUV_target : enable uniform __samplerExternal2DY2YEXT sExt; precision mediump __samplerExternal2DY2YEXT; uniform __samplerExternal2DY2YEXT mediumExt; uniform highp __samplerExternal2DY2YEXT highExt; void main() { texture2D(sExt, vec2(0.2)); // ERROR texture2D(mediumExt, vec2(0.2)); // ERROR texture2D(highExt, vec2(0.2)); // ERROR texture2DProj(sExt, vec3(0.3)); // ERROR texture2DProj(sExt, vec4(0.3)); // ERROR int lod = 0; highp float bias = 0.01; textureSize(sExt, lod); texture(sExt, vec2(0.2)); texture(sExt, vec2(0.2), bias); textureProj(sExt, vec3(0.2)); textureProj(sExt, vec3(0.2), bias); textureProj(sExt, vec4(0.2)); textureProj(sExt, vec4(0.2), bias); texelFetch(sExt, ivec2(4), lod); texture3D(sExt, vec3(0.3)); // ERROR texture2DProjLod(sExt, vec3(0.3), 0.3); // ERROR texture(sExt, vec3(0.3)); // ERROR textureProjLod(sExt, vec3(0.3), 0.3); // ERROR } #extension GL_EXT_YUV_target : disable uniform __samplerExternal2DY2YEXT badExt; // ERROR glslang-16.0.0/Test/300scope.vert000066400000000000000000000026401506534232700164130ustar00rootroot00000000000000#version 300 es int f(int a, int b, int c) { int a = b; // ERROR, redefinition { float a = float(a) + 1.0; } return a; } int f(int a, int b, int c); // okay to redeclare bool b; float b(int a); // ERROR: redefinition float c(int a); bool c; // ERROR: redefinition float f; // ERROR: redefinition float tan; // ERROR: redefines built-in function float sin(float x); // ERROR: can't redefine built-in functions float cos(float x) // ERROR: can't redefine built-in functions { return 1.0; } bool radians(bool x) // ERROR: can't overload built-in functions { return true; } invariant gl_Position; void main() { int g(); // ERROR: no local function declarations g(); float sin; // okay sin; sin(0.7); // ERROR, use of hidden function f(1,2,3); float f; // hides f() f = 3.0; gl_Position = vec4(f); for (int f = 0; f < 10; ++f) ++f; int x = 1; { float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2 int z = z; // ERROR: z not previously defined. } { int x = x; // x is initialized to '1' } struct S { int x; }; { S S = S(0); // 'S' is only visible as a struct and constructor S.x; // 'S' is now visible as a variable } int degrees; degrees(3.2); // ERROR, use of hidden built-in function } glslang-16.0.0/Test/310.comp000066400000000000000000000161661506534232700153500ustar00rootroot00000000000000#version 310 es layout(local_size_x = 2) in; layout(local_size_x = 16) in; // ERROR, changing layout(local_size_z = 4096) in; // ERROR, too large layout(local_size_x = 2) in; layout(local_size_y = 0) in; // ERROR, 0 not allowed const int total = gl_MaxComputeWorkGroupCount.y + gl_MaxComputeUniformComponents + gl_MaxComputeTextureImageUnits + gl_MaxComputeImageUniforms + gl_MaxComputeAtomicCounters + gl_MaxComputeAtomicCounterBuffers; buffer ShaderStorageBlock { int value; float values[]; }; buffer InvalidShaderStorageBlock { float values[]; // ERROR int value; } invalid; void main() { barrier(); memoryBarrier(); memoryBarrierAtomicCounter(); memoryBarrierBuffer(); memoryBarrierShared(); memoryBarrierImage(); groupMemoryBarrier(); value = int(values[gl_LocalInvocationIndex]); } layout(location = 2) in vec3 v3; // ERROR in float f; // ERROR out float fo; // ERROR shared vec4 s; layout(location = 2) shared vec4 sl; // ERROR shared float fs = 4.2; // ERROR layout(local_size_x = 2, local_size_y = 3, local_size_z = 4) out; // ERROR int arrX[gl_WorkGroupSize.x]; int arrY[gl_WorkGroupSize.y]; int arrZ[gl_WorkGroupSize.z]; readonly buffer roblock { int value; float values[]; } ro; void foo() { ro.values[2] = 4.7; // ERROR, readonly ro.values.length(); ++s; } buffer vec4 v; // ERROR uniform usampler2D us2dbad; // ERROR, default precision precision highp usampler2D; precision highp iimage2DArray; precision highp iimage2D; uniform usampler2D us2d; uniform iimage2DArray ii2dabad; // ERROR, not writeonly uniform writeonly iimage2DArray ii2da; layout(r32i) uniform iimage2D iimg2D; layout(rgba32i) uniform readonly iimage2D iimg2Drgba; layout(rgba32f) uniform readonly image2D img2Drgba; // ERROR, no default layout(r32ui) uniform uimage2D uimg2D; // ERROR, no default void qux() { int i = 4; imageAtomicCompSwap(iimg2D, ivec2(i,i), i, i);// ERROR no longer in 310 imageAtomicAdd(uimg2D, ivec2(i,i), uint(i)); // ERROR no longer in 310 imageAtomicMin(iimg2Drgba, ivec2(i,i), i); // ERROR no longer in 310 // ERROR iimg2Drgba does not have r32i layout imageAtomicMax(img2Drgba, ivec2(i,i), i); // ERROR no longer in 310 // ERROR img2Drgba is not integer image ivec4 pos = imageLoad(iimg2D, ivec2(i,i)); imageStore(ii2da, ivec3(i,i,i), ivec4(0)); imageLoad(img2Drgba, ivec2(i,i)); imageLoad(ii2da, ivec3(i,i,i)); // ERROR, drops writeonly } volatile float vol; // ERROR, not an image readonly int vol2; // ERROR, not an image void passr(coherent readonly iimage2D image) { } layout(r32i) coherent readonly uniform iimage2D qualim1; layout(r32i) coherent restrict readonly uniform iimage2D qualim2; void passrc() { passr(qualim1); // ERROR, changing formats passr(qualim2); // ERROR, drops restrict, ERROR, changing formats passr(iimg2D); // ERROR, changing formats } highp layout(rg8i) uniform readonly uimage2D i1bad; // ERROR, type mismatch highp layout(rgba32i) uniform readonly image2D i2bad; // ERROR, type mismatch highp layout(rgba32f) uniform readonly uimage2D i3bad; // ERROR, type mismatch layout(r8_snorm) uniform readonly iimage2D i4bad; // ERROR, type mismatch layout(rgba32ui) uniform readonly iimage2D i5bad; // ERROR, type mismatch layout(r8ui) uniform readonly iimage2D i6bad; // ERROR, type mismatch layout(binding = 0) uniform atomic_uint counter; uint func(atomic_uint c) { return atomicCounterIncrement(c); } uint func2(out atomic_uint c) // ERROR, output { return counter; // ERROR, type mismatch return atomicCounter(counter); } void mainAC() { atomic_uint non_uniform_counter; // ERROR uint val = atomicCounter(counter); atomicCounterDecrement(counter); } layout(binding = 1) uniform mediump atomic_uint counterBad; // ERROR, not highp layout(binding = 2, offset = 4) uniform atomic_uint countArr[4]; uniform int i; void opac() { int a[3]; a[counter]; // ERROR, non-integer countArr[2]; countArr[i]; } shared int atomi; shared uint atomu; void atoms() { int origi = atomicAdd(atomi, 3); uint origu = atomicAnd(atomu, 7u); origi = atomicExchange(atomi, 4); origu = atomicCompSwap(atomu, 10u, 8u); } precision highp atomic_uint; precision lowp atomic_uint; // ERROR precise int pfoo; // ERROR, reserved dmat2x4 dm; // ERROR uniform samplerCubeArray sca; // ERROR uniform iimage2DRect i2dr; // ERROR highp uniform image2DMS i2dms; // ERROR uniform uimage2DMSArray u2dmsa; // ERROR highp layout(r32f) coherent volatile restrict readonly writeonly uniform image2D okay1; layout(r32i) coherent volatile restrict readonly uniform iimage2D okay2; highp layout(r32ui) coherent volatile restrict writeonly uniform uimage2D okay3; highp layout(r32f) coherent volatile restrict uniform image2D okay4; highp layout(rgba32f) coherent volatile restrict uniform image2D badQ1; // ERROR, bad qualifiers layout(rgba8i) coherent volatile restrict uniform iimage2D badQ2; // ERROR, bad qualifiers highp layout(rgba16ui) coherent volatile restrict uniform uimage2D badQ3; // ERROR, bad qualifiers writeonly buffer woblock { int value; float values[]; } wo; void foowo() { float g; g = wo.values[2]; // ERROR, writeonly float f = wo.values[2]; // ERROR, writeonly ++wo.values[2]; // ERROR, writeonly wo.values[2]--; // ERROR, writeonly f + wo.values[2]; // ERROR, writeonly wo.values[2] - f; // ERROR, writeonly bool b; b ? f : wo.values[2]; // ERROR, writeonly b ? wo.values[2] : f; // ERROR, writeonly if (f == wo.values[2]) // ERROR, writeonly ++f; if (f >= wo.values[2]) // ERROR, writeonly ++f; f = vec3(wo.values[2]).x; // ERROR, writeonly ~wo.value; // ERROR, writeonly wo.values[2] = 3.4; } buffer multioblock { readonly int value; writeonly float values[]; } multio; void foomultio() { float g; g = wo.values[2]; // ERROR, writeonly ~wo.value; wo.values[2] = 3.4; wo.value = 2; // ERROR, readonly } in inb { // ERROR int a; } inbi; out outb { // ERROR int a; } outbi; float t__; // ERROR, no __ until revision 310 // ERROR, no __ until revision 310 #define __D shared vec4 arr[2][3][4]; void devi() { gl_DeviceIndex; // ERROR, no extension gl_ViewIndex; // ERROR, never this stage } #ifdef GL_EXT_device_group #extension GL_EXT_device_group : enable #endif void devie() { gl_DeviceIndex; gl_ViewIndex; // ERROR, never this stage } glslang-16.0.0/Test/310.frag000066400000000000000000000376061506534232700153330ustar00rootroot00000000000000#version 310 es highp float nodef3(float); // ERROR, no default precision precision mediump float; precision highp usampler2D; precision highp sampler2D; precision highp isampler2DArray; layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, not supported layout(location = 2) in vec3 v3; layout(location = 2) in mat4 yi; // ERROR, locations conflict with xi uniform sampler2D arrayedSampler[5]; uniform usampler2D usamp2d; uniform usampler2DRect samp2dr; // ERROR, reserved uniform isampler2DArray isamp2DA; in vec2 c2D; uniform int i; void main() { vec4 v = texture(arrayedSampler[i], c2D); // ERROR ivec2 offsets[4]; const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); uvec4 uv4 = textureGatherOffsets(samp2dr, c2D, offsets, 2); // ERROR, not supported vec4 v4 = textureGather(arrayedSampler[0], c2D); ivec4 iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 3); iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), i); // ERROR, last argument not const iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 4); // ERROR, last argument out of range iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 1+2); iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(0.5)); iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(i)); // ERROR, offset not constant } out vec4 outp; void foo23() { const ivec2[3] offsets = ivec2[3](ivec2(1,2), ivec2(3,4), ivec2(15,16)); textureProjGradOffset(usamp2d, outp, vec2(0.0), vec2(0.0), ivec2(c2D)); // ERROR, offset not constant textureProjGradOffset(usamp2d, outp, vec2(0.0), vec2(0.0), offsets[1]); textureProjGradOffset(usamp2d, outp, vec2(0.0), vec2(0.0), offsets[2]); // ERROR, offset out of range textureProjGradOffset(usamp2d, outp, vec2(0.0), vec2(0.0), ivec2(-10, 20)); // ERROR, offset out of range if (gl_HelperInvocation) ++outp; int sum = gl_MaxVertexImageUniforms + gl_MaxFragmentImageUniforms + gl_MaxComputeImageUniforms + gl_MaxCombinedImageUniforms + gl_MaxCombinedShaderOutputResources; bool b1, b2, b3, b; b1 = mix(b2, b3, b); uvec3 um3 = mix(uvec3(i), uvec3(i), bvec3(b)); ivec4 im4 = mix(ivec4(i), ivec4(i), bvec4(b)); 1 << mix(1u, 1u, false); // does not require folding } layout(binding=3) uniform sampler2D s1; layout(binding=3) uniform sampler2D s2; // ERROR: overlapping bindings? Don't see that in the 310 spec. highp layout(binding=2) uniform writeonly image2D i2D; layout(binding=4) uniform readonly image3D i3D; // ERROR, no default precision layout(binding=5) uniform imageCube iCube; // ERROR, no default precision layout(binding=6) uniform image2DArray i2DA; // ERROR, no default precision layout(binding=6) uniform coherent volatile restrict image2D i2Dqualified; // ERROR, no default precision layout(binding = 1) uniform bb { int foo; layout(binding = 2) float f; // ERROR } bbi; in centroid vec4 centroidIn; layout(location = 200000) uniform vec4 bigl; // ERROR, location too big layout(early_fragment_tests) in; layout(location = 40) out vec4 bigout1; // ERROR, too big layout(location = 40) out vec4 bigout2; // ERROR, overlap layout(location = -2) out vec4 neg; // ERROR, negative layout(std430) buffer b430 { int i; } b430i; layout(shared) uniform bshar { int i; } bshari; in smooth vec4 smoothIn; in flat int flatIn; uniform sampler2DMS s2dms; // ERROR, no default precision qualifier void foots() { highp ivec2 v2 = textureSize(s1, 2); highp ivec3 v3 = textureSize(isamp2DA, 3); v2 = textureSize(s2dms); v2 = imageSize(i2D); v3 = imageSize(i3D); v2 = imageSize(iCube); v3 = imageSize(i2DA); v2 = imageSize(i2Dqualified); } out bool bout; // ERROR highp out image2D imageOut; // ERROR out mat2x3 mout; // ERROR in bool inb; // ERROR in sampler2D ino; // ERROR in float ina[4]; in float inaa[4][2]; // ERROR struct S { float f; }; in S ins; in S[4] inasa; // ERROR in S insa[4]; // ERROR struct SA { float f[4]; }; in SA inSA; // ERROR struct SS { float f; S s; }; in SS inSS; // ERROR #ifndef GL_EXT_shader_io_blocks #error GL_EXT_shader_io_blocks not defined #endif #extension GL_EXT_shader_io_blocks : enable out outbname { int a; } outbinst; // ERROR, not out block in fragment shader in inbname { int a; vec4 v; struct { int b; } s; // ERROR, nested struct definition } inbinst; in inbname2 { layout(location = 12) int aAnon; layout(location = 13) centroid in vec4 vAnon; }; in layout(location = 13) vec4 aliased; // ERROR, aliased in inbname2 { // ERROR, reuse of block name int aAnon; centroid in vec4 vAnon; }; in badmember { // ERROR, aAnon already in global scope int aAnon; }; int inbname; // ERROR, redefinition of block name vec4 vAnon; // ERROR, anon in global scope; redefinition in arrayed { float f; } arrayedInst[4]; void fooIO() { vec4 v = inbinst.v + vAnon; v *= arrayedInst[2].f; v *= arrayedInst[i].f; } in vec4 gl_FragCoord; layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, non-ES layout(early_fragment_tests) in; out float gl_FragDepth; layout(depth_any) out float gl_FragDepth; // ERROR, non-ES void foo_IO() { gl_FragDepth = 0.2; // ERROR, early_fragment_tests declared gl_Layer; // ERROR, not present gl_PrimitiveID; // ERROR, not present bool f = gl_FrontFacing; } out float gl_FragDepth; #extension GL_OES_geometry_shader : enable void foo_GS() { highp int l = gl_Layer; highp int p = gl_PrimitiveID; } in vec2 inf, ing; uniform ivec2 offsets[4]; uniform sampler2D sArray[4]; uniform int sIndex; layout(binding = 0) uniform atomic_uint auArray[2]; uniform ubName { int i; } ubInst[4]; buffer bbName { int i; } bbInst[4]; highp uniform writeonly image2D iArray[5]; const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4)); void pfooBad() { precise vec2 h; // ERROR reserved h = fma(inf, ing, h); // ERROR, not available textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); // ERROR, offset not constant textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); // ERROR, not available } #extension GL_OES_gpu_shader5 : enable void pfoo() { precise vec2 h; h = fma(inf, ing, h); textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant } #extension GL_EXT_texture_cube_map_array : enable precision highp imageCubeArray ; precision highp iimageCubeArray ; precision highp uimageCubeArray ; precision highp samplerCubeArray ; precision highp samplerCubeArrayShadow; precision highp isamplerCubeArray ; precision highp usamplerCubeArray ; uniform writeonly imageCubeArray CA1; uniform writeonly iimageCubeArray CA2; uniform writeonly uimageCubeArray CA3; #ifdef GL_EXT_texture_cube_map_array uniform samplerCubeArray CA4; uniform samplerCubeArrayShadow CA5; uniform isamplerCubeArray CA6; uniform usamplerCubeArray CA7; #endif void CAT() { highp vec4 b4 = texture(CA4, vec4(0.5), 0.24); highp ivec4 b6 = texture(CA6, vec4(0.5), 0.26); highp uvec4 b7 = texture(CA7, vec4(0.5), 0.27); } void badSample() { lowp int a1 = gl_SampleID; // ERROR, need extension mediump vec2 a2 = gl_SamplePosition; // ERROR, need extension highp int a3 = gl_SampleMaskIn[0]; // ERROR, need extension gl_SampleMask[0] = a3; // ERROR, need extension mediump int n = gl_NumSamples; // ERROR, need extension } #ifdef GL_OES_sample_variables #extension GL_OES_sample_variables : enable #endif void goodSample() { lowp int a1 = gl_SampleID; mediump vec2 a2 = gl_SamplePosition; highp int a3 = gl_SampleMaskIn[0]; gl_SampleMask[0] = a3; mediump int n1 = gl_MaxSamples; mediump int n2 = gl_NumSamples; } uniform layout(r32f) highp image2D im2Df; uniform layout(r32ui) highp uimage2D im2Du; uniform layout(r32i) highp iimage2D im2Di; uniform ivec2 P; void badImageAtom() { float datf; int dati; uint datu; imageAtomicAdd( im2Di, P, dati); // ERROR, need extension imageAtomicAdd( im2Du, P, datu); // ERROR, need extension imageAtomicMin( im2Di, P, dati); // ERROR, need extension imageAtomicMin( im2Du, P, datu); // ERROR, need extension imageAtomicMax( im2Di, P, dati); // ERROR, need extension imageAtomicMax( im2Du, P, datu); // ERROR, need extension imageAtomicAnd( im2Di, P, dati); // ERROR, need extension imageAtomicAnd( im2Du, P, datu); // ERROR, need extension imageAtomicOr( im2Di, P, dati); // ERROR, need extension imageAtomicOr( im2Du, P, datu); // ERROR, need extension imageAtomicXor( im2Di, P, dati); // ERROR, need extension imageAtomicXor( im2Du, P, datu); // ERROR, need extension imageAtomicExchange(im2Di, P, dati); // ERROR, need extension imageAtomicExchange(im2Du, P, datu); // ERROR, need extension imageAtomicExchange(im2Df, P, datf); // ERROR, need extension imageAtomicCompSwap(im2Di, P, 3, dati); // ERROR, need extension imageAtomicCompSwap(im2Du, P, 5u, datu); // ERROR, need extension } #ifdef GL_OES_shader_image_atomic #extension GL_OES_shader_image_atomic : enable #endif uniform layout(rgba32f) highp image2D badIm2Df; // ERROR, needs readonly or writeonly uniform layout(rgba8ui) highp uimage2D badIm2Du; // ERROR, needs readonly or writeonly uniform layout(rgba16i) highp iimage2D badIm2Di; // ERROR, needs readonly or writeonly void goodImageAtom() { float datf; int dati; uint datu; imageAtomicAdd( im2Di, P, dati); imageAtomicAdd( im2Du, P, datu); imageAtomicMin( im2Di, P, dati); imageAtomicMin( im2Du, P, datu); imageAtomicMax( im2Di, P, dati); imageAtomicMax( im2Du, P, datu); imageAtomicAnd( im2Di, P, dati); imageAtomicAnd( im2Du, P, datu); imageAtomicOr( im2Di, P, dati); imageAtomicOr( im2Du, P, datu); imageAtomicXor( im2Di, P, dati); imageAtomicXor( im2Du, P, datu); imageAtomicExchange(im2Di, P, dati); imageAtomicExchange(im2Du, P, datu); imageAtomicExchange(im2Df, P, datf); imageAtomicCompSwap(im2Di, P, 3, dati); imageAtomicCompSwap(im2Du, P, 5u, datu); imageAtomicMax(badIm2Di, P, dati); // ERROR, not an allowed layout() on the image imageAtomicMax(badIm2Du, P, datu); // ERROR, not an allowed layout() on the image imageAtomicExchange(badIm2Df, P, datf); // ERROR, not an allowed layout() on the image } sample in vec4 colorSampInBad; // ERROR, reserved centroid out vec4 colorCentroidBad; // ERROR flat out vec4 colorBadFlat; // ERROR smooth out vec4 colorBadSmooth; // ERROR noperspective out vec4 colorBadNo; // ERROR flat centroid in vec2 colorfc; in float scalarIn; void badInterp() { interpolateAtCentroid(colorfc); // ERROR, need extension interpolateAtSample(colorfc, 1); // ERROR, need extension interpolateAtOffset(colorfc, vec2(0.2)); // ERROR, need extension } #if defined GL_OES_shader_multisample_interpolation #extension GL_OES_shader_multisample_interpolation : enable #endif sample in vec4 colorSampIn; sample out vec4 colorSampleBad; // ERROR flat sample in vec4 colorfsi; sample in vec3 sampInArray[4]; void interp() { float res; vec2 res2; vec3 res3; vec4 res4; res2 = interpolateAtCentroid(colorfc); res4 = interpolateAtCentroid(colorSampIn); res4 = interpolateAtCentroid(colorfsi); res = interpolateAtCentroid(scalarIn); res3 = interpolateAtCentroid(sampInArray); // ERROR res3 = interpolateAtCentroid(sampInArray[2]); res2 = interpolateAtCentroid(sampInArray[2].xy); // ERROR res3 = interpolateAtSample(sampInArray, 1); // ERROR res3 = interpolateAtSample(sampInArray[i], 0); res2 = interpolateAtSample(sampInArray[2].xy, 2); // ERROR res = interpolateAtSample(scalarIn, 1); res3 = interpolateAtOffset(sampInArray, vec2(0.2)); // ERROR res3 = interpolateAtOffset(sampInArray[2], vec2(0.2)); res2 = interpolateAtOffset(sampInArray[2].xy, vec2(0.2)); // ERROR, no swizzle res = interpolateAtOffset(scalarIn + scalarIn, vec2(0.2)); // ERROR, no binary ops other than dereference res = interpolateAtOffset(scalarIn, vec2(0.2)); float f; res = interpolateAtCentroid(f); // ERROR, not interpolant res4 = interpolateAtSample(outp, 0); // ERROR, not interpolant } layout(blend_support_softlight) out; // ERROR, need extension #ifdef GL_KHR_blend_equation_advanced #extension GL_KHR_blend_equation_advanced : enable #endif layout(blend_support_multiply) out; layout(blend_support_screen) out; layout(blend_support_overlay) out; layout(blend_support_darken, blend_support_lighten) out; layout(blend_support_colordodge) layout(blend_support_colorburn) out; layout(blend_support_hardlight) out; layout(blend_support_softlight) out; layout(blend_support_difference) out; layout(blend_support_exclusion) out; layout(blend_support_hsl_hue) out; layout(blend_support_hsl_saturation) out; layout(blend_support_hsl_color) out; layout(blend_support_hsl_luminosity) out; layout(blend_support_all_equations) out; layout(blend_support_hsl_luminosity) out; // okay to repeat layout(blend_support_hsl_luminosity) in; // ERROR, only on "out" layout(blend_support_hsl_luminosity) out vec4; // ERROR, only on standalone layout(blend_support_hsl_luminosity) out vec4 badout; // ERROR, only on standalone layout(blend_support_hsl_luminosity) struct badS {int i;}; // ERROR, only on standalone layout(blend_support_hsl_luminosity) void blendFoo() { } // ERROR, only on standalone void blendFoo(layout(blend_support_hsl_luminosity) vec3 v) { } // ERROR, only on standalone layout(blend_support_flizbit) out; // ERROR, no flizbit out vec4 outAA[2][2]; // ERROR void devi() { gl_DeviceIndex; // ERROR, no extension gl_ViewIndex; // ERROR, no extension } #ifdef GL_EXT_device_group #extension GL_EXT_device_group : enable #endif #ifdef GL_EXT_multiview #extension GL_EXT_multiview : enable #endif void devie() { gl_DeviceIndex; gl_ViewIndex; } #extension GL_EXT_shader_implicit_conversions : enable // Test function overloading void func(uint a, uvec4 b) { } int func(uint a, uvec4 b) // Error function overloading because of same signature and different return type { return 0; } int b; void testimplicit() { uint a = b; // int->uint mediump vec4 col = vec4(1, 2, 3, 4); // ivec4 -> vec4 int b = a + 2; // ERROR: cannot convert from ' temp uint' to ' temp int' // Test binary ops uint c = b * 3; uint d = b * 3u; uint e = b%3; uint f = (b > 3)? b : c; func(b, ivec4(1,2,3,4)); } #extension GL_EXT_shader_implicit_conversions : disable void testimplicitFail() { uint a = b; // Error GL_EXT_shader_implicit_conversions is disabled } glslang-16.0.0/Test/310.geom000066400000000000000000000103761506534232700153360ustar00rootroot00000000000000#version 310 es #ifdef GL_EXT_geometry_shader #extension GL_EXT_geometry_shader : enable #else #error no GL_EXT_geometry_shader #endif #ifndef GL_OES_geometry_shader #error no GL_OES_geometry_shader #endif precision mediump float; in fromVertex { in vec3 color; } fromV[]; in vec4 nonBlockUnsized[]; out toFragment { out vec3 color; } toF; out fromVertex { // okay to reuse a block name for another block name vec3 color; }; out fooB { // ERROR, cannot reuse block name as block instance vec2 color; } fromVertex; int fromVertex; // ERROR, cannot reuse a block name for something else out fooC { // ERROR, cannot have same name for block and instance name vec2 color; } fooC; void main() { EmitVertex(); EndPrimitive(); EmitStreamVertex(1); // ERROR EndStreamPrimitive(0); // ERROR color = fromV[0].color; gl_ClipDistance[3] = // ERROR, no ClipDistance gl_in[1].gl_ClipDistance[2]; // ERROR, no ClipDistance gl_Position = gl_in[0].gl_Position; gl_PrimitiveID = gl_PrimitiveIDIn; gl_Layer = 2; } layout(stream = 4) out vec4 ov4; // ERROR, no streams layout(line_strip, points, triangle_strip, points, triangle_strip) out; // just means triangle_strip" out ooutb { vec4 a; } ouuaa6; layout(max_vertices = 200) out; layout(max_vertices = 300) out; // ERROR, too big void foo(layout(max_vertices = 4) int a) // ERROR { ouuaa6.a = vec4(1.0); } layout(line_strip, points, triangle_strip, points) out; // ERROR, changing output primitive layout(line_strip, points) out; // ERROR, changing output primitive layout(triangle_strip) in; // ERROR, not an input primitive layout(triangle_strip) uniform; // ERROR layout(triangle_strip) out vec4 badv4; // ERROR, not on a variable layout(triangle_strip) in vec4 bad2v4[]; // ERROR, not on a variable or input layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0 out outbn2 { layout(invocations = 3) int a; // 2 ERRORs, not on a block member, not until 4.0 layout(max_vertices = 3) int b; // ERROR, not on a block member layout(triangle_strip) int c; // ERROR, not on a block member } outbi; layout(lines) out; // ERROR, not on output layout(lines_adjacency) in; layout(triangles) in; // ERROR, can't change it layout(triangles_adjacency) in; // ERROR, can't change it layout(invocations = 4) in; in sameName { int a15; } insn[]; out sameName { float f15; }; uniform sameName { bool b15; }; const int summ = gl_MaxVertexAttribs + gl_MaxGeometryInputComponents + gl_MaxGeometryOutputComponents + gl_MaxGeometryImageUniforms + gl_MaxGeometryTextureImageUnits + gl_MaxGeometryOutputVertices + gl_MaxGeometryTotalOutputComponents + gl_MaxGeometryUniformComponents + gl_MaxGeometryAtomicCounters + gl_MaxGeometryAtomicCounterBuffers + gl_MaxVertexTextureImageUnits + gl_MaxCombinedTextureImageUnits + gl_MaxTextureImageUnits + gl_MaxDrawBuffers; void fooe1() { gl_ViewportIndex; // ERROR, not in ES gl_MaxViewports; // ERROR, not in ES insn.length(); // 4: lines_adjacency int inv = gl_InvocationID; } in vec4 explArray[4]; in vec4 explArrayBad[5]; // ERROR, wrong size in vec4 nonArrayed; // ERROR, not an array flat out vec3 myColor1; centroid out vec3 myColor2; centroid in vec3 centr[]; sample out vec4 perSampleColor; // ERROR without sample extensions layout(max_vertices = 200) out; // matching redecl layout(location = 7, component = 2) in float comp[]; // ERROR, es has no component void notHere() { gl_MaxGeometryVaryingComponents; // ERROR, not in ES gl_VerticesIn; // ERROR, not in ES } void pointSize1() { highp float ps = gl_in[3].gl_PointSize; // ERROR, need point_size extension gl_PointSize = ps; // ERROR, need point_size extension } #extension GL_OES_geometry_point_size : enable void pointSize2() { highp float ps = gl_in[3].gl_PointSize; gl_PointSize = ps; } glslang-16.0.0/Test/310.inheritMemory.frag000066400000000000000000000016011506534232700201470ustar00rootroot00000000000000#version 310 es precision mediump float; struct S { float buff[10]; }; layout(std430, binding=2) readonly buffer RoBuff { float buff_ro[10]; S s_ro; } ro_buffer; layout(std430, binding=2) buffer Buff { float buff[10]; S s; } non_ro_buffer; void non_ro_fun(float[10] buff) { } void non_ro_funf(float el) { } void non_ro_funS(S s) { } out vec4 fragColor; void main() { S s; non_ro_fun(s.buff); non_ro_funf(s.buff[3]); non_ro_funS(s); non_ro_fun(non_ro_buffer.buff); non_ro_fun(non_ro_buffer.s.buff); non_ro_funf(non_ro_buffer.buff[3]); non_ro_funf(non_ro_buffer.s.buff[3]); non_ro_funS(non_ro_buffer.s); non_ro_fun(ro_buffer.buff_ro); non_ro_fun(ro_buffer.s_ro.buff); non_ro_funf(ro_buffer.buff_ro[3]); non_ro_funf(ro_buffer.s_ro.buff[3]); non_ro_funS(ro_buffer.s_ro); } glslang-16.0.0/Test/310.tesc000066400000000000000000000106471506534232700153460ustar00rootroot00000000000000#version 310 es #extension GL_OES_tessellation_shader : enable layout(vertices = 4) out; out int outa[gl_out.length()]; layout(quads) in; // ERROR layout(ccw) out; // ERROR layout(fractional_even_spacing) in; // ERROR patch in vec4 patchIn; // ERROR patch out vec4 patchOut; void main() { barrier(); int a = gl_MaxTessControlInputComponents + gl_MaxTessControlOutputComponents + gl_MaxTessControlTextureImageUnits + gl_MaxTessControlUniformComponents + gl_MaxTessControlTotalOutputComponents; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; int iid = gl_InvocationID; gl_out[gl_InvocationID].gl_Position = p; gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES gl_TessLevelOuter[3] = 3.2; gl_TessLevelInner[1] = 1.3; if (a > 10) barrier(); // ERROR else barrier(); // ERROR barrier(); do { barrier(); // ERROR } while (a > 10); switch (a) { default: barrier(); // ERROR break; } a < 12 ? a : (barrier(), a); // ERROR { barrier(); } return; barrier(); // ERROR } layout(vertices = 4) in; // ERROR, not on in layout(vertices = 5) out; // ERROR, changing # void foo() { gl_out[4].gl_Position; // ERROR, out of range barrier(); // ERROR, not in main } in vec2 ina; // ERROR, not array in vec2 inb[]; in vec2 inc[18]; // ERROR, wrong size in vec2 ind[gl_MaxPatchVertices]; patch out float implA[]; // ERROR, not sized #extension GL_ARB_separate_shader_objects : enable layout(location = 3) in vec4 ivla[]; layout(location = 4) in vec4 ivlb[]; layout(location = 4) in vec4 ivlc[]; // ERROR, overlapping layout(location = 3) out vec4 ovla[]; layout(location = 4) out vec4 ovlb[]; layout(location = 4) out vec4 ovlc[]; // ERROR, overlapping void foop() { precise float d; // ERROR without gpu_shader5 d = fma(d, d, d); // ERROR without gpu_shader5 } patch out pinbn { int a; } pinbi; centroid out vec3 myColor2[]; centroid in vec3 centr[]; sample out vec4 perSampleColor[]; // ERROR without sample extensions layout(vertices = 4) out float badlay[]; // ERROR, not on a variable out float misSized[5]; // ERROR, size doesn't match out float okaySize[4]; #extension GL_OES_tessellation_point_size : enable void pointSize2() { float ps = gl_in[1].gl_PointSize; gl_out[gl_InvocationID].gl_PointSize = ps; } #extension GL_OES_gpu_shader5 : enable precise vec3 pv3; void goodfoop() { precise float d; pv3 *= pv3; pv3 = fma(pv3, pv3, pv3); d = fma(d, d, d); } void bbextBad() { gl_BoundingBoxEXT; // ERROR without GL_EXT_primitive_bounding_box gl_BoundingBox; // ERROR, version < 320 } #extension GL_EXT_primitive_bounding_box : enable void bbext() { gl_BoundingBoxEXT[0] = vec4(0.0); gl_BoundingBoxEXT[1] = vec4(1.0); gl_BoundingBoxEXT[2] = vec4(2.0); // ERROR, overflow } void bbBad() { gl_BoundingBoxOES; // ERROR without GL_OES_primitive_bounding_box } #extension GL_OES_primitive_bounding_box : enable void bb() { gl_BoundingBoxOES[0] = vec4(0.0); gl_BoundingBoxOES[1] = vec4(1.0); gl_BoundingBoxOES[2] = vec4(2.0); // ERROR, overflow } out patch badpatchBName { // ERROR, array size required float f; } badpatchIName[]; out patch patchBName { float f; } patchIName[4]; void outputtingOutparam(out int a) { a = 2; } void outputting() { outa[gl_InvocationID] = 2; outa[1] = 2; // ERROR, not gl_InvocationID gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID outa[1]; gl_out[0]; outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID outputtingOutparam(outa[gl_InvocationID]); patchIName[1].f = 3.14; outa[(gl_InvocationID)] = 2; } glslang-16.0.0/Test/310.tese000066400000000000000000000064561506534232700153530ustar00rootroot00000000000000#version 310 es #extension GL_EXT_tessellation_shader : enable #extension GL_OES_tessellation_shader : enable #extension GL_EXT_tessellation_shader : disable layout(vertices = 4) out; // ERROR layout(quads, cw) in; layout(triangles) in; // ERROR layout(isolines) in; // ERROR layout(ccw) in; // ERROR layout(cw) in; layout(fractional_odd_spacing) in; layout(equal_spacing) in; // ERROR layout(fractional_even_spacing) in; // ERROR layout(point_mode) in; patch in vec4 patchIn; patch out vec4 patchOut; // ERROR void main() { barrier(); // ERROR int a = gl_MaxTessEvaluationInputComponents + gl_MaxTessEvaluationOutputComponents + gl_MaxTessEvaluationTextureImageUnits + gl_MaxTessEvaluationUniformComponents + gl_MaxTessPatchComponents + gl_MaxPatchVertices + gl_MaxTessGenLevel; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; vec3 tc = gl_TessCoord; float tlo = gl_TessLevelOuter[3]; float tli = gl_TessLevelInner[1]; gl_Position = p; gl_PointSize = ps; // ERROR, need point_size extension gl_ClipDistance[2] = cd; // ERROR, not in ES } smooth patch in vec4 badp1; // ERROR flat patch in vec4 badp2; // ERROR noperspective patch in vec4 badp3; // ERROR patch sample in vec3 badp4; // ERROR #extension GL_ARB_separate_shader_objects : enable in gl_PerVertex { vec4 gl_Position; } gl_in[]; in gl_PerVertex // ERROR, second redeclaration of gl_in { vec4 gl_Position; } gl_in[]; layout(quads, cw) out; // ERROR layout(triangles) out; // ERROR layout(isolines) out; // ERROR layout(cw) out; // ERROR layout(fractional_odd_spacing) out; // ERROR layout(equal_spacing) out; // ERROR layout(fractional_even_spacing) out; // ERROR layout(point_mode) out; // ERROR in vec2 ina; // ERROR, not array in vec2 inb[]; in vec2 inc[18]; // ERROR, wrong size in vec2 ind[gl_MaxPatchVertices]; in testbla { // ERROR, not array int f; } bla; in testblb { int f; } blb[]; in testblc { // ERROR wrong size int f; } blc[18]; in testbld { int f; } bld[gl_MaxPatchVertices]; layout(location = 23) in vec4 ivla[]; layout(location = 24) in vec4 ivlb[]; layout(location = 24) in vec4 ivlc[]; // ERROR, overlap layout(location = 23) out vec4 ovla[2]; layout(location = 24) out vec4 ovlb[2]; // ERROR, overlap in float gl_TessLevelOuter[4]; // ERROR, can't redeclare patch in pinbn { int a; } pinbi; centroid out vec3 myColor2; centroid in vec3 centr[]; sample out vec4 perSampleColor; // ERROR without sample extensions #extension GL_OES_tessellation_point_size : enable void pointSize2() { float ps = gl_in[1].gl_PointSize; // ERROR, not in the redeclaration, but no error on use of gl_PointSize gl_PointSize = ps; } #extension GL_EXT_primitive_bounding_box : enable void bbbad() { gl_BoundingBoxOES; // ERROR, wrong stage } glslang-16.0.0/Test/310.vert000066400000000000000000000307131506534232700153640ustar00rootroot00000000000000#version 310 es shared vec4 s; // ERROR layout(local_size_x = 2) out; // ERROR buffer vec4 v; // ERROR in int ini; layout(location = 2) uniform mat4 x; layout(location = 3) uniform mat4 y; layout(location = 2) out mat4 xi; layout(location = 3) out mat4 yi; // ERROR, locations conflict with xi void main() { uvec2 u2; u2 = uaddCarry(u2, u2, u2); uint u1; u1 = usubBorrow(u1, u1, u1); uvec4 u4; umulExtended(u4, u4, u4, u4); ivec4 i4; imulExtended(i4, i4, i4, i4); int i1; i1 = bitfieldExtract(i1, 4, 5); uvec3 u3; u3 = bitfieldExtract(u3, 4, 5); ivec3 i3; i3 = bitfieldInsert(i3, i3, 4, 5); u1 = bitfieldInsert(u1, u1, 4, 5); ivec2 i2; i2 = bitfieldReverse(i2); u4 = bitfieldReverse(u4); i1 = bitCount(i1); i3 = bitCount(u3); i2 = findLSB(i2); i4 = findLSB(u4); i1 = findMSB(i1); i2 = findMSB(u2); vec3 v3; v3 = frexp(v3, i3); vec2 v2; v2 = ldexp(v2, i2); mediump vec4 v4; u1 = packUnorm4x8(v4); u1 = packSnorm4x8(v4); v4 = unpackUnorm4x8(u1); v4 = unpackSnorm4x8(u1); } precision highp sampler2DMS; precision highp isampler2DMS; precision highp usampler2DMS; uniform sampler2DMS s2dms; uniform isampler2DMS is2dms; uniform usampler2DMS us2dms; uniform usampler2DMSArray us2dmsa; // ERROR void foo() { ivec2 v2; v2 = textureSize(s2dms); v2 = textureSize(us2dms); vec4 v4 = texelFetch(s2dms, v2, 2); ivec4 iv4 = texelFetch(is2dms, v2, 2); textureSamples(s2dms); // ERROR float f; frexp(f, ini); // ERROR, i not writable } out bool outb; // ERROR out sampler2D outo; // ERROR out float outa[4]; out float outaa[4][2]; // ERROR struct S { float f; }; out S outs; out S[4] outasa; // ERROR out S outsa[4]; // ERROR struct SA { float f[4]; }; out SA outSA; // ERROR struct SS { float f; S s; }; out SS outSS; // ERROR layout(std430) uniform U430 { int a; } U430i; // ERROR layout(std430) buffer B430 { int a; } B430i; #ifndef GL_OES_shader_io_blocks #error GL_OES_shader_io_blocks not defined #endif #extension GL_OES_shader_io_blocks : enable out outbname { int a; out vec4 v; highp sampler2D s; // ERROR, opaque type } outbinst; out outbname2 { layout(location = 12) int aAnon; layout(location = 13) vec4 vAnon; }; layout(location = 12) out highp int aliased; // ERROR, aliasing location in inbname { int a; } inbinst; // ERROR, no in block in vertex shader out gl_PerVertex { // ERROR, has extra member highp vec4 gl_Position; highp vec4 t; }; void foo_IO() { int sum = gl_VertexID + gl_InstanceID; gl_Position = vec4(1.0); gl_PointSize = 2.0; // ERROR, removed by redeclaration } out gl_PerVertex { // ERROR, already used and already redeclared highp vec4 gl_Position; highp vec4 t; }; smooth out smo { // ERROR, no smooth on a block int i; } smon; flat out fmo { // ERROR, no flat on a block int i; } fmon; centroid out cmo { // ERROR, no centroid on a block int i; } cmon; invariant out imo { // ERROR, no invariant on a block int i; } imon; in vec2 inf, ing; uniform ivec2 offsets[4]; uniform sampler2D sArray[4]; uniform int sIndex; layout(binding = 0) uniform atomic_uint auArray[2]; uniform ubName { int i; } ubInst[4]; buffer bbName { int i; } bbInst[4]; highp uniform writeonly image2D iArray[5]; const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4)); void pfooBad() { precise vec2 h; // ERROR reserved h = fma(inf, ing, h); // ERROR, not available sArray[sIndex + 1]; // ERRRO, not supported auArray[sIndex + 1]; ubInst[1]; bbInst[2]; ubInst[sIndex + 1]; // ERROR, not supported bbInst[sIndex]; // ERROR, not supported iArray[2]; iArray[sIndex * 2]; // ERROR, not supported textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); // ERROR, offset not constant textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); // ERROR, not available } #extension GL_OES_gpu_shader5 : enable void pfoo() { precise vec2 h; h = fma(inf, ing, h); sArray[sIndex + 1]; ubInst[sIndex + 1]; bbInst[sIndex - 2]; // ERROR, still not supported iArray[2]; iArray[sIndex - 2]; textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant } uniform samplerBuffer badSamp1; // ERROR, reserved uniform isamplerBuffer badSamp2; // ERROR, reserved uniform usamplerBuffer badSamp3; // ERROR, reserved uniform writeonly imageBuffer badSamp4; // ERROR, reserved uniform writeonly iimageBuffer badSamp5; // ERROR, reserved uniform writeonly uimageBuffer badSamp6; // ERROR, reserved #extension GL_OES_texture_buffer : enable #extension GL_EXT_texture_buffer : enable uniform samplerBuffer noPreSamp1; // ERROR, no default precision uniform isamplerBuffer noPreSamp2; // ERROR, no default precision uniform usamplerBuffer noPreSamp3; // ERROR, no default precision uniform writeonly imageBuffer noPreSamp4; // ERROR, no default precision uniform writeonly iimageBuffer noPreSamp5; // ERROR, no default precision uniform writeonly uimageBuffer noPreSamp6; // ERROR, no default precision precision highp samplerBuffer; precision highp isamplerBuffer; precision highp usamplerBuffer; precision highp imageBuffer; precision highp iimageBuffer; precision highp uimageBuffer; #ifdef GL_OES_texture_buffer uniform samplerBuffer bufSamp1; uniform isamplerBuffer bufSamp2; uniform usamplerBuffer bufSamp3; #endif #ifdef GL_EXT_texture_buffer uniform writeonly imageBuffer bufSamp4; uniform writeonly iimageBuffer bufSamp5; uniform writeonly uimageBuffer bufSamp6; #endif void bufferT() { highp int s1 = textureSize(bufSamp1); highp int s2 = textureSize(bufSamp2); highp int s3 = textureSize(bufSamp3); highp int s4 = imageSize(bufSamp4); highp int s5 = imageSize(bufSamp5); highp int s6 = imageSize(bufSamp6); highp vec4 f1 = texelFetch(bufSamp1, s1); highp ivec4 f2 = texelFetch(bufSamp2, s2); highp uvec4 f3 = texelFetch(bufSamp3, s3); } uniform writeonly imageCubeArray badCA1; // ERROR, reserved uniform writeonly iimageCubeArray badCA2; // ERROR, reserved uniform writeonly uimageCubeArray badCA3; // ERROR, reserved uniform samplerCubeArray badCA4; // ERROR, reserved uniform samplerCubeArrayShadow badCA5; // ERROR, reserved uniform isamplerCubeArray badCA6; // ERROR, reserved uniform usamplerCubeArray badCA7; // ERROR, reserved #extension GL_OES_texture_cube_map_array : enable uniform writeonly imageCubeArray noPreCA1; // ERROR, no default precision uniform writeonly iimageCubeArray noPreCA2; // ERROR, no default precision uniform writeonly uimageCubeArray noPreCA3; // ERROR, no default precision uniform samplerCubeArray noPreCA4; // ERROR, no default precision uniform samplerCubeArrayShadow noPreCA5; // ERROR, no default precision uniform isamplerCubeArray noPreCA6; // ERROR, no default precision uniform usamplerCubeArray noPreCA7; // ERROR, no default precision precision highp imageCubeArray ; precision highp iimageCubeArray ; precision highp uimageCubeArray ; precision highp samplerCubeArray ; precision highp samplerCubeArrayShadow; precision highp isamplerCubeArray ; precision highp usamplerCubeArray ; uniform writeonly imageCubeArray CA1; uniform writeonly iimageCubeArray CA2; uniform writeonly uimageCubeArray CA3; layout(rgba16f) uniform readonly imageCubeArray rCA1; layout(rgba32i) uniform readonly iimageCubeArray rCA2; layout(r32ui) uniform readonly uimageCubeArray rCA3; #ifdef GL_OES_texture_cube_map_array uniform samplerCubeArray CA4; uniform samplerCubeArrayShadow CA5; uniform isamplerCubeArray CA6; uniform usamplerCubeArray CA7; #endif void CAT() { highp ivec3 s4 = textureSize(CA4, 1); highp ivec3 s5 = textureSize(CA5, 1); highp ivec3 s6 = textureSize(CA6, 1); highp ivec3 s7 = textureSize(CA7, 1); highp vec4 t4 = texture(CA4, vec4(0.5)); highp float t5 = texture(CA5, vec4(0.5), 3.0); highp ivec4 t6 = texture(CA6, vec4(0.5)); highp uvec4 t7 = texture(CA7, vec4(0.5)); highp vec4 L4 = textureLod(CA4, vec4(0.5), 0.24); highp ivec4 L6 = textureLod(CA6, vec4(0.5), 0.26); highp uvec4 L7 = textureLod(CA7, vec4(0.5), 0.27); highp vec4 g4 = textureGrad(CA4, vec4(0.5), vec3(0.1), vec3(0.2)); highp ivec4 g6 = textureGrad(CA6, vec4(0.5), vec3(0.1), vec3(0.2)); highp uvec4 g7 = textureGrad(CA7, vec4(0.5), vec3(0.1), vec3(0.2)); highp vec4 gath4 = textureGather(CA4, vec4(0.5)); highp vec4 gathC4 = textureGather(CA4, vec4(0.5), 2); highp ivec4 gath6 = textureGather(CA6, vec4(0.5)); highp ivec4 gathC6 = textureGather(CA6, vec4(0.5), 1); highp uvec4 gath7 = textureGather(CA7, vec4(0.5)); highp uvec4 gathC7 = textureGather(CA7, vec4(0.5), 0); highp vec4 gath5 = textureGather(CA5, vec4(0.5), 2.5); highp ivec3 s1 = imageSize(CA1); highp ivec3 s2 = imageSize(CA2); highp ivec3 s3 = imageSize(CA3); imageStore(CA1, s3, vec4(1)); imageStore(CA2, s3, ivec4(1)); imageStore(CA3, s3, uvec4(1)); highp vec4 cl1 = imageLoad(rCA1, s3); highp ivec4 cl2 = imageLoad(rCA2, s3); highp uvec4 cl3 = imageLoad(rCA3, s3); } uniform sampler2DMSArray bad2DMS; // ERROR, reserved uniform isampler2DMSArray bad2DMSi; // ERROR, reserved uniform usampler2DMSArray bad2DMSu; // ERROR, reserved #extension GL_OES_texture_storage_multisample_2d_array : enable #ifdef GL_OES_texture_storage_multisample_2d_array uniform sampler2DMSArray noPrec2DMS; // ERROR, no default uniform isampler2DMSArray noPrec2DMSi; // ERROR, no default uniform usampler2DMSArray noPrec2DMSu; // ERROR, no default #endif precision highp sampler2DMSArray; precision highp isampler2DMSArray; precision highp usampler2DMSArray; uniform sampler2DMSArray samp2DMSA; uniform isampler2DMSArray samp2DMSAi; uniform usampler2DMSArray samp2DMSAu; void MSA() { vec4 tf = texelFetch(samp2DMSA, ivec3(5), 2); ivec4 tfi = texelFetch(samp2DMSAi, ivec3(5), 2); uvec4 tfu = texelFetch(samp2DMSAu, ivec3(5), 2); ivec3 tfs = textureSize(samp2DMSA); ivec3 tfsi = textureSize(samp2DMSAi); ivec3 tfsb = textureSize(samp2DMSAi, 4); // ERROR, no lod ivec3 tfsu = textureSize(samp2DMSAu); } #ifdef GL_OES_shader_image_atomic #extension GL_OES_shader_image_atomic : enable #endif uniform layout(r32f) highp image2D im2Df; uniform layout(r32ui) highp uimage2D im2Du; uniform layout(r32i) highp iimage2D im2Di; uniform ivec2 P; void goodImageAtom() { float datf; int dati; uint datu; imageAtomicAdd( im2Di, P, dati); imageAtomicAdd( im2Du, P, datu); imageAtomicMin( im2Di, P, dati); imageAtomicMin( im2Du, P, datu); imageAtomicMax( im2Di, P, dati); imageAtomicMax( im2Du, P, datu); imageAtomicAnd( im2Di, P, dati); imageAtomicAnd( im2Du, P, datu); imageAtomicOr( im2Di, P, dati); imageAtomicOr( im2Du, P, datu); imageAtomicXor( im2Di, P, dati); imageAtomicXor( im2Du, P, datu); imageAtomicExchange(im2Di, P, dati); imageAtomicExchange(im2Du, P, datu); imageAtomicExchange(im2Df, P, datf); imageAtomicCompSwap(im2Di, P, 3, dati); imageAtomicCompSwap(im2Du, P, 5u, datu); } sample out vec4 colorSampInBad; // ERROR, reserved #extension GL_OES_shader_multisample_interpolation : enable sample out vec4 colorSample; flat sample out vec4 colorfsi; sample out vec3 sampInArray[4]; in vec4 inv4; void badInterp() { interpolateAtCentroid(inv4); // ERROR, wrong stage interpolateAtSample(inv4, 1); // ERROR, need extension interpolateAtOffset(inv4, vec2(0.2)); // ERROR, need extension } glslang-16.0.0/Test/310AofA.vert000066400000000000000000000055211506534232700161120ustar00rootroot00000000000000#version 310 es // Check name mangling of functions with parameters that are multi-dimensional arrays. #define NX 2 #define NY 3 #define NZ 4 void f(bool a, float b, uint[4] c, int[NY][NX] d) { } void main() { int[NY][NX] d; f(false, 12.1, uint[NZ](uint(0),uint(1),uint(1),uint(2)), d); } buffer b { float u[]; // ERROR vec4 v[]; } name[3]; uniform ub { float u; vec4 v[]; // ERROR } uname[3]; buffer b2 { float u; vec4 v[][]; // ERROR } name2[3]; buffer b3 { float u; vec4 v[][7]; } name3[3]; // General arrays of arrays float[4][5][6] many[1][2][3]; float gu[][7]; // ERROR, size required float g4[4][7]; float g5[5][7]; float[4][7] foo(float a[5][7]) { float r[7]; r = a[2]; float[](a[0], a[1], r, a[3]); // ERROR, too few dims float[4][7][4](a[0], a[1], r, a[3]); // ERROR, too many dims return float[4][7](a[0], a[1], r, a[3]); return float[][](a[0], a[1], r, a[3]); return float[][7](a[0], a[1], a[2], a[3]); } void bar(float[5][7]) {} void foo2() { { float gu[3][4][2]; gu[2][4][1] = 4.0; // ERROR, overflow } vec4 ca4[3][2] = vec4[][](vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0))); vec4 caim[][2] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0))); vec4 caim2[][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0))); vec4 caim3[3][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0))); g4 = foo(g5); g5 = g4; // ERROR, wrong types gu = g4; // ERROR, not yet sized foo(gu); // ERROR, not yet sized bar(g5); if (foo(g5) == g4) ; if (foo(g5) == g5) // ERROR, different types ; float u[5][7]; u[5][2] = 5.0; // ERROR foo(u); vec4 badAss[3]; name[1].v[-1]; // ERROR name[1].v[1] = vec4(4.3); name[1].v = badAss; // ERROR, bad assignemnt name3[0].v[1].length(); // 7 name3[0].v.length(); // run time } struct badS { int sa[]; // ERROR int a[][]; // ERROR int b[][2]; // ERROR int c[2][]; // ERROR int d[][4]; // ERROR }; in float inArray[2][3]; // ERROR out float outArray[2][3]; // ERROR uniform ubaa { int a; } ubaaname[2][3]; // ERROR vec3 func(in mat3[2] x[3]) { mat3 a0 = x[2][1]; return a0[2]; } glslang-16.0.0/Test/310implicitSizeArrayError.vert000066400000000000000000000002301506534232700217520ustar00rootroot00000000000000#version 310 es layout (binding=0) uniform Block { highp int a[]; } uni; layout (location=0) out highp int o; void main() { o = uni.a[2]; } glslang-16.0.0/Test/310runtimeArray.vert000066400000000000000000000004721506534232700177660ustar00rootroot00000000000000#version 310 es precision highp float; layout(location=0) out float o; struct S { float f; }; buffer b1 { S s[]; }; buffer b2 { S s[]; } b2name; buffer b3 { S s[]; } b3name[]; buffer b4 { S s[]; } b4name[4]; void main() { o = s[5].f; o += b2name.s[6].f; o += b3name[3].s[7].f; o += b4name[2].s[8].f; } glslang-16.0.0/Test/320.comp000066400000000000000000000003321506534232700153350ustar00rootroot00000000000000#version 320 es float fX; float fY; void main() { dFdx(fX); dFdy(fY); fwidth(fX); dFdxCoarse(fX); dFdyCoarse(fY); fwidthCoarse(fX); dFdxFine(fX); dFdyFine(fY); fwidthFine(fX); } glslang-16.0.0/Test/320.frag000066400000000000000000000165231506534232700153270ustar00rootroot00000000000000#version 320 es out outbname { int a; } outbinst; // ERROR, not out block in fragment shader in inbname { int a; vec4 v; struct { int b; } s; // ERROR, nested struct definition } inbinst; in inbname2 { layout(location = 12) int aAnon; layout(location = 13) centroid in vec4 vAnon; }; in layout(location = 13) vec4 aliased; // ERROR, aliased in inbname2 { // ERROR, reuse of block name int aAnon; centroid in vec4 vAnon; }; in badmember { // ERROR, aAnon already in global scope int aAnon; }; int inbname; // ERROR, redefinition of block name vec4 vAnon; // ERROR, anon in global scope; redefinition in arrayed { float f; } arrayedInst[4]; uniform int i; void fooIO() { vec4 v = inbinst.v + vAnon; v *= arrayedInst[2].f; v *= arrayedInst[i].f; } in vec4 gl_FragCoord; layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, non-ES layout(early_fragment_tests) in; out float gl_FragDepth; layout(depth_any) out float gl_FragDepth; // ERROR, non-ES void main() { gl_FragDepth = 0.2; // ERROR, early_fragment_tests declared bool f = gl_FrontFacing; } out float gl_FragDepth; void foo_GS() { highp int l = gl_Layer; highp int p = gl_PrimitiveID; } in vec2 inf, ing; uniform ivec2 offsets[4]; uniform sampler2D sArray[4]; uniform int sIndex; layout(binding = 0) uniform atomic_uint auArray[2]; uniform ubName { int i; } ubInst[4]; buffer bbName { int i; } bbInst[4]; highp uniform writeonly image2D iArray[5]; const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4)); void pfoo() { precise vec2 h; h = fma(inf, ing, h); textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant } precision highp imageCubeArray ; precision highp iimageCubeArray ; precision highp uimageCubeArray ; precision highp samplerCubeArray ; precision highp samplerCubeArrayShadow; precision highp isamplerCubeArray ; precision highp usamplerCubeArray ; uniform writeonly imageCubeArray CA1; uniform writeonly iimageCubeArray CA2; uniform writeonly uimageCubeArray CA3; #ifdef GL_EXT_texture_cube_map_array uniform samplerCubeArray CA4; uniform samplerCubeArrayShadow CA5; uniform isamplerCubeArray CA6; uniform usamplerCubeArray CA7; #endif void CAT() { highp vec4 b4 = texture(CA4, vec4(0.5), 0.24); highp ivec4 b6 = texture(CA6, vec4(0.5), 0.26); highp uvec4 b7 = texture(CA7, vec4(0.5), 0.27); } void goodSample() { lowp int a1 = gl_SampleID; mediump vec2 a2 = gl_SamplePosition; highp int a3 = gl_SampleMaskIn[0]; gl_SampleMask[0] = a3; mediump int n1 = gl_MaxSamples; mediump int n2 = gl_NumSamples; } uniform layout(r32f) highp image2D im2Df; uniform layout(r32ui) highp uimage2D im2Du; uniform layout(r32i) highp iimage2D im2Di; uniform ivec2 P; uniform layout(rgba32f) highp image2D badIm2Df; // ERROR, needs readonly or writeonly uniform layout(rgba8ui) highp uimage2D badIm2Du; // ERROR, needs readonly or writeonly uniform layout(rgba16i) highp iimage2D badIm2Di; // ERROR, needs readonly or writeonly void goodImageAtom() { float datf; int dati; uint datu; imageAtomicAdd( im2Di, P, dati); imageAtomicAdd( im2Du, P, datu); imageAtomicMin( im2Di, P, dati); imageAtomicMin( im2Du, P, datu); imageAtomicMax( im2Di, P, dati); imageAtomicMax( im2Du, P, datu); imageAtomicAnd( im2Di, P, dati); imageAtomicAnd( im2Du, P, datu); imageAtomicOr( im2Di, P, dati); imageAtomicOr( im2Du, P, datu); imageAtomicXor( im2Di, P, dati); imageAtomicXor( im2Du, P, datu); imageAtomicExchange(im2Di, P, dati); imageAtomicExchange(im2Du, P, datu); imageAtomicExchange(im2Df, P, datf); imageAtomicCompSwap(im2Di, P, 3, dati); imageAtomicCompSwap(im2Du, P, 5u, datu); imageAtomicMax(badIm2Di, P, dati); // ERROR, not an allowed layout() on the image imageAtomicMax(badIm2Du, P, datu); // ERROR, not an allowed layout() on the image imageAtomicExchange(badIm2Df, P, datf); // ERROR, not an allowed layout() on the image } centroid out vec4 colorCentroidBad; // ERROR flat out vec4 colorBadFlat; // ERROR smooth out vec4 colorBadSmooth; // ERROR noperspective out vec4 colorBadNo; // ERROR flat centroid in vec2 colorfc; in float scalarIn; sample in vec4 colorSampIn; sample out vec4 colorSampleBad; // ERROR flat sample in vec4 colorfsi; sample in vec3 sampInArray[4]; void interp() { float res; vec2 res2; vec3 res3; vec4 res4; res2 = interpolateAtCentroid(colorfc); res4 = interpolateAtCentroid(colorSampIn); res4 = interpolateAtCentroid(colorfsi); res = interpolateAtCentroid(scalarIn); res3 = interpolateAtCentroid(sampInArray); // ERROR res3 = interpolateAtCentroid(sampInArray[2]); res2 = interpolateAtCentroid(sampInArray[2].xy); // ERROR res3 = interpolateAtSample(sampInArray, 1); // ERROR res3 = interpolateAtSample(sampInArray[i], 0); res2 = interpolateAtSample(sampInArray[2].xy, 2); // ERROR res = interpolateAtSample(scalarIn, 1); res3 = interpolateAtOffset(sampInArray, vec2(0.2)); // ERROR res3 = interpolateAtOffset(sampInArray[2], vec2(0.2)); res2 = interpolateAtOffset(sampInArray[2].xy, vec2(0.2)); // ERROR, no swizzle res = interpolateAtOffset(scalarIn + scalarIn, vec2(0.2)); // ERROR, no binary ops other than dereference res = interpolateAtOffset(scalarIn, vec2(0.2)); float f; res = interpolateAtCentroid(f); // ERROR, not interpolant res4 = interpolateAtSample(outp, 0); // ERROR, not interpolant } layout(blend_support_multiply) out; layout(blend_support_screen) out; layout(blend_support_overlay) out; layout(blend_support_darken, blend_support_lighten) out; layout(blend_support_colordodge) layout(blend_support_colorburn) out; layout(blend_support_hardlight) out; layout(blend_support_softlight) out; layout(blend_support_difference) out; layout(blend_support_exclusion) out; layout(blend_support_hsl_hue) out; layout(blend_support_hsl_saturation) out; layout(blend_support_hsl_color) out; layout(blend_support_hsl_luminosity) out; layout(blend_support_all_equations) out; layout(blend_support_hsl_luminosity) out; // okay to repeat layout(blend_support_hsl_luminosity) in; // ERROR, only on "out" layout(blend_support_hsl_luminosity) out vec4; // ERROR, only on standalone layout(blend_support_hsl_luminosity) out vec4 badout; // ERROR, only on standalone layout(blend_support_hsl_luminosity) struct badS {int i;}; // ERROR, only on standalone layout(blend_support_hsl_luminosity) void blendFoo() { } // ERROR, only on standalone void blendFoo(layout(blend_support_hsl_luminosity) vec3 v) { } // ERROR, only on standalone layout(blend_support_flizbit) out; // ERROR, no flizbit out vec4 outAA[2][2]; // ERROR glslang-16.0.0/Test/320.geom000066400000000000000000000076131506534232700153370ustar00rootroot00000000000000#version 320 es precision mediump float; in fromVertex { in vec3 color; } fromV[]; in vec4 nonBlockUnsized[]; out toFragment { out vec3 color; } toF; out fromVertex { // okay to reuse a block name for another block name vec3 color; }; out fooB { // ERROR, cannot reuse block name as block instance vec2 color; } fromVertex; int fromVertex; // ERROR, cannot reuse a block name for something else out fooC { // ERROR, cannot have same name for block and instance name vec2 color; } fooC; void main() { EmitVertex(); EndPrimitive(); EmitStreamVertex(1); // ERROR EndStreamPrimitive(0); // ERROR color = fromV[0].color; gl_ClipDistance[3] = // ERROR, no ClipDistance gl_in[1].gl_ClipDistance[2]; // ERROR, no ClipDistance gl_Position = gl_in[0].gl_Position; gl_PrimitiveID = gl_PrimitiveIDIn; gl_Layer = 2; } layout(stream = 4) out vec4 ov4; // ERROR, no streams layout(line_strip, points, triangle_strip, points, triangle_strip) out; // just means triangle_strip" out ooutb { vec4 a; } ouuaa6; layout(max_vertices = 200) out; layout(max_vertices = 300) out; // ERROR, too big void foo(layout(max_vertices = 4) int a) // ERROR { ouuaa6.a = vec4(1.0); } layout(line_strip, points, triangle_strip, points) out; // ERROR, changing output primitive layout(line_strip, points) out; // ERROR, changing output primitive layout(triangle_strip) in; // ERROR, not an input primitive layout(triangle_strip) uniform; // ERROR layout(triangle_strip) out vec4 badv4; // ERROR, not on a variable layout(triangle_strip) in vec4 bad2v4[]; // ERROR, not on a variable or input layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0 out outbn2 { layout(invocations = 3) int a; // 2 ERRORs, not on a block member, not until 4.0 layout(max_vertices = 3) int b; // ERROR, not on a block member layout(triangle_strip) int c; // ERROR, not on a block member } outbi; layout(lines) out; // ERROR, not on output layout(lines_adjacency) in; layout(triangles) in; // ERROR, can't change it layout(triangles_adjacency) in; // ERROR, can't change it layout(invocations = 4) in; in sameName { int a15; } insn[]; out sameName { float f15; }; uniform sameName { bool b15; }; const int summ = gl_MaxVertexAttribs + gl_MaxGeometryInputComponents + gl_MaxGeometryOutputComponents + gl_MaxGeometryImageUniforms + gl_MaxGeometryTextureImageUnits + gl_MaxGeometryOutputVertices + gl_MaxGeometryTotalOutputComponents + gl_MaxGeometryUniformComponents + gl_MaxGeometryAtomicCounters + gl_MaxGeometryAtomicCounterBuffers + gl_MaxVertexTextureImageUnits + gl_MaxCombinedTextureImageUnits + gl_MaxTextureImageUnits + gl_MaxDrawBuffers; void fooe1() { gl_ViewportIndex; // ERROR, not in ES gl_MaxViewports; // ERROR, not in ES insn.length(); // 4: lines_adjacency int inv = gl_InvocationID; } in vec4 explArray[4]; in vec4 explArrayBad[5]; // ERROR, wrong size in vec4 nonArrayed; // ERROR, not an array flat out vec3 myColor1; centroid out vec3 myColor2; centroid in vec3 centr[]; sample out vec4 perSampleColor; // ERROR without sample extensions layout(max_vertices = 200) out; // matching redecl layout(location = 7, component = 2) in float comp[]; // ERROR, es has no component void notHere() { gl_MaxGeometryVaryingComponents; // ERROR, not in ES gl_VerticesIn; // ERROR, not in ES } void pointSize2() { highp float ps = gl_in[3].gl_PointSize; // ERROR, need extension gl_PointSize = ps; // ERROR, need extension } glslang-16.0.0/Test/320.tesc000066400000000000000000000100301506534232700153310ustar00rootroot00000000000000#version 320 es layout(vertices = 4) out; out int outa[gl_out.length()]; layout(quads) in; // ERROR layout(ccw) out; // ERROR layout(fractional_even_spacing) in; // ERROR patch in vec4 patchIn; // ERROR patch out vec4 patchOut; void main() { barrier(); int a = gl_MaxTessControlInputComponents + gl_MaxTessControlOutputComponents + gl_MaxTessControlTextureImageUnits + gl_MaxTessControlUniformComponents + gl_MaxTessControlTotalOutputComponents; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; int iid = gl_InvocationID; gl_out[gl_InvocationID].gl_Position = p; gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES gl_TessLevelOuter[3] = 3.2; gl_TessLevelInner[1] = 1.3; if (a > 10) barrier(); // ERROR else barrier(); // ERROR barrier(); do { barrier(); // ERROR } while (a > 10); switch (a) { default: barrier(); // ERROR break; } a < 12 ? a : (barrier(), a); // ERROR { barrier(); } return; barrier(); // ERROR } layout(vertices = 4) in; // ERROR, not on in layout(vertices = 5) out; // ERROR, changing # void foo() { gl_out[4].gl_Position; // ERROR, out of range barrier(); // ERROR, not in main } in vec2 ina; // ERROR, not array in vec2 inb[]; in vec2 inc[18]; // ERROR, wrong size in vec2 ind[gl_MaxPatchVertices]; patch out float implA[]; // ERROR, not sized #extension GL_ARB_separate_shader_objects : enable layout(location = 3) in vec4 ivla[]; layout(location = 4) in vec4 ivlb[]; layout(location = 4) in vec4 ivlc[]; // ERROR, overlapping layout(location = 3) out vec4 ovla[]; layout(location = 4) out vec4 ovlb[]; layout(location = 4) out vec4 ovlc[]; // ERROR, overlapping patch out pinbn { int a; } pinbi; centroid out vec3 myColor2[]; centroid in vec3 centr[]; sample out vec4 perSampleColor[]; layout(vertices = 4) out float badlay[]; // ERROR, not on a variable out float misSized[5]; // ERROR, size doesn't match out float okaySize[4]; void pointSize2() { float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension } precise vec3 pv3; void goodfoop() { precise float d; pv3 *= pv3; pv3 = fma(pv3, pv3, pv3); d = fma(d, d, d); } void bb() { gl_BoundingBoxEXT[0] = vec4(0.0); // ERROR without GL_EXT_primitive_bounding_box gl_BoundingBoxOES[0] = vec4(0.0); // ERROR without GL_OES_primitive_bounding_box gl_BoundingBox[0] = vec4(1.0); gl_BoundingBox[1] = vec4(1.0); gl_BoundingBox[2] = vec4(2.0); // ERROR, overflow } #extension GL_EXT_primitive_bounding_box : enable #extension GL_OES_primitive_bounding_box : enable void bbext() { gl_BoundingBoxEXT[1] = vec4(0.0); gl_BoundingBoxOES[1] = vec4(0.0); } out patch badpatchBName { // ERROR, array size required float f; } badpatchIName[]; out patch patchBName { float f; } patchIName[4]; void outputtingOutparam(out int a) { a = 2; } void outputting() { outa[gl_InvocationID] = 2; outa[1] = 2; // ERROR, not gl_InvocationID gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID outa[1]; gl_out[0]; outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID outputtingOutparam(outa[gl_InvocationID]); patchIName[1].f = 3.14; outa[(gl_InvocationID)] = 2; } glslang-16.0.0/Test/320.tese000066400000000000000000000055511506534232700153470ustar00rootroot00000000000000#version 320 es layout(vertices = 4) out; // ERROR layout(quads, cw) in; layout(triangles) in; // ERROR layout(isolines) in; // ERROR layout(ccw) in; // ERROR layout(cw) in; layout(fractional_odd_spacing) in; layout(equal_spacing) in; // ERROR layout(fractional_even_spacing) in; // ERROR layout(point_mode) in; patch in vec4 patchIn; patch out vec4 patchOut; // ERROR void main() { barrier(); // ERROR int a = gl_MaxTessEvaluationInputComponents + gl_MaxTessEvaluationOutputComponents + gl_MaxTessEvaluationTextureImageUnits + gl_MaxTessEvaluationUniformComponents + gl_MaxTessPatchComponents + gl_MaxPatchVertices + gl_MaxTessGenLevel; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; vec3 tc = gl_TessCoord; float tlo = gl_TessLevelOuter[3]; float tli = gl_TessLevelInner[1]; gl_Position = p; gl_PointSize = ps; // ERROR, need point_size extension gl_ClipDistance[2] = cd; // ERROR, not in ES } smooth patch in vec4 badp1; // ERROR flat patch in vec4 badp2; // ERROR noperspective patch in vec4 badp3; // ERROR patch sample in vec3 badp4; // ERROR #extension GL_ARB_separate_shader_objects : enable in gl_PerVertex { vec4 gl_Position; } gl_in[]; in gl_PerVertex // ERROR, second redeclaration of gl_in { vec4 gl_Position; } gl_in[]; layout(quads, cw) out; // ERROR layout(triangles) out; // ERROR layout(isolines) out; // ERROR layout(cw) out; // ERROR layout(fractional_odd_spacing) out; // ERROR layout(equal_spacing) out; // ERROR layout(fractional_even_spacing) out; // ERROR layout(point_mode) out; // ERROR in vec2 ina; // ERROR, not array in vec2 inb[]; in vec2 inc[18]; // ERROR, wrong size in vec2 ind[gl_MaxPatchVertices]; in testbla { // ERROR, not array int f; } bla; in testblb { int f; } blb[]; in testblc { // ERROR wrong size int f; } blc[18]; in testbld { int f; } bld[gl_MaxPatchVertices]; layout(location = 23) in vec4 ivla[]; layout(location = 24) in vec4 ivlb[]; layout(location = 24) in vec4 ivlc[]; // ERROR, overlap layout(location = 23) out vec4 ovla[2]; layout(location = 24) out vec4 ovlb[2]; // ERROR, overlap in float gl_TessLevelOuter[4]; // ERROR, can't redeclare patch in pinbn { int a; } pinbi; centroid out vec3 myColor2; centroid in vec3 centr[]; sample out vec4 perSampleColor; void bbbad() { gl_BoundingBoxOES; // ERROR, wrong stage } glslang-16.0.0/Test/320.vert000066400000000000000000000202441506534232700153630ustar00rootroot00000000000000#version 320 es out outbname { int a; out vec4 v; highp sampler2D s; // ERROR, opaque type } outbinst; out outbname2 { layout(location = 12) int aAnon; layout(location = 13) vec4 vAnon; }; layout(location = 12) out highp int aliased; // ERROR, aliasing location in inbname { int a; } inbinst; // ERROR, no in block in vertex shader out gl_PerVertex { // ERROR, has extra member highp vec4 gl_Position; highp vec4 t; }; void main() { int sum = gl_VertexID + gl_InstanceID; gl_Position = vec4(1.0); gl_PointSize = 2.0; // ERROR, removed by redeclaration } out gl_PerVertex { // ERROR, already used and already redeclared highp vec4 gl_Position; highp vec4 t; }; smooth out smo { // ERROR, no smooth on a block int i; } smon; flat out fmo { // ERROR, no flat on a block int i; } fmon; centroid out cmo { // ERROR, no centroid on a block int i; } cmon; invariant out imo { // ERROR, no invariant on a block int i; } imon; in vec2 inf, ing; uniform ivec2 offsets[4]; uniform sampler2D sArray[4]; uniform int sIndex; layout(binding = 0) uniform atomic_uint auArray[2]; uniform ubName { int i; } ubInst[4]; buffer bbName { int i; } bbInst[4]; highp uniform writeonly image2D iArray[5]; const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4)); void pfoo() { precise vec2 h; h = fma(inf, ing, h); sArray[sIndex + 1]; ubInst[sIndex + 1]; bbInst[sIndex - 2]; // ERROR, still not supported iArray[2]; iArray[sIndex - 2]; textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant } uniform samplerBuffer noPreSamp1; // ERROR, no default precision uniform isamplerBuffer noPreSamp2; // ERROR, no default precision uniform usamplerBuffer noPreSamp3; // ERROR, no default precision uniform writeonly imageBuffer noPreSamp4; // ERROR, no default precision uniform writeonly iimageBuffer noPreSamp5; // ERROR, no default precision uniform writeonly uimageBuffer noPreSamp6; // ERROR, no default precision precision highp samplerBuffer; precision highp isamplerBuffer; precision highp usamplerBuffer; precision highp imageBuffer; precision highp iimageBuffer; precision highp uimageBuffer; #ifdef GL_OES_texture_buffer uniform samplerBuffer bufSamp1; uniform isamplerBuffer bufSamp2; uniform usamplerBuffer bufSamp3; #endif #ifdef GL_EXT_texture_buffer uniform writeonly imageBuffer bufSamp4; uniform writeonly iimageBuffer bufSamp5; uniform writeonly uimageBuffer bufSamp6; #endif void bufferT() { highp int s1 = textureSize(bufSamp1); highp int s2 = textureSize(bufSamp2); highp int s3 = textureSize(bufSamp3); highp int s4 = imageSize(bufSamp4); highp int s5 = imageSize(bufSamp5); highp int s6 = imageSize(bufSamp6); highp vec4 f1 = texelFetch(bufSamp1, s1); highp ivec4 f2 = texelFetch(bufSamp2, s2); highp uvec4 f3 = texelFetch(bufSamp3, s3); } uniform writeonly imageCubeArray noPreCA1; // ERROR, no default precision uniform writeonly iimageCubeArray noPreCA2; // ERROR, no default precision uniform writeonly uimageCubeArray noPreCA3; // ERROR, no default precision uniform samplerCubeArray noPreCA4; // ERROR, no default precision uniform samplerCubeArrayShadow noPreCA5; // ERROR, no default precision uniform isamplerCubeArray noPreCA6; // ERROR, no default precision uniform usamplerCubeArray noPreCA7; // ERROR, no default precision precision highp imageCubeArray ; precision highp iimageCubeArray ; precision highp uimageCubeArray ; precision highp samplerCubeArray ; precision highp samplerCubeArrayShadow; precision highp isamplerCubeArray ; precision highp usamplerCubeArray ; uniform writeonly imageCubeArray CA1; uniform writeonly iimageCubeArray CA2; uniform writeonly uimageCubeArray CA3; layout(rgba16f) uniform readonly imageCubeArray rCA1; layout(rgba32i) uniform readonly iimageCubeArray rCA2; layout(r32ui) uniform readonly uimageCubeArray rCA3; #ifdef GL_OES_texture_cube_map_array uniform samplerCubeArray CA4; uniform samplerCubeArrayShadow CA5; uniform isamplerCubeArray CA6; uniform usamplerCubeArray CA7; #endif void CAT() { highp ivec3 s4 = textureSize(CA4, 1); highp ivec3 s5 = textureSize(CA5, 1); highp ivec3 s6 = textureSize(CA6, 1); highp ivec3 s7 = textureSize(CA7, 1); highp vec4 t4 = texture(CA4, vec4(0.5)); highp float t5 = texture(CA5, vec4(0.5), 3.0); highp ivec4 t6 = texture(CA6, vec4(0.5)); highp uvec4 t7 = texture(CA7, vec4(0.5)); highp vec4 L4 = textureLod(CA4, vec4(0.5), 0.24); highp ivec4 L6 = textureLod(CA6, vec4(0.5), 0.26); highp uvec4 L7 = textureLod(CA7, vec4(0.5), 0.27); highp vec4 g4 = textureGrad(CA4, vec4(0.5), vec3(0.1), vec3(0.2)); highp ivec4 g6 = textureGrad(CA6, vec4(0.5), vec3(0.1), vec3(0.2)); highp uvec4 g7 = textureGrad(CA7, vec4(0.5), vec3(0.1), vec3(0.2)); highp vec4 gath4 = textureGather(CA4, vec4(0.5)); highp vec4 gathC4 = textureGather(CA4, vec4(0.5), 2); highp ivec4 gath6 = textureGather(CA6, vec4(0.5)); highp ivec4 gathC6 = textureGather(CA6, vec4(0.5), 1); highp uvec4 gath7 = textureGather(CA7, vec4(0.5)); highp uvec4 gathC7 = textureGather(CA7, vec4(0.5), 0); highp vec4 gath5 = textureGather(CA5, vec4(0.5), 2.5); highp ivec3 s1 = imageSize(CA1); highp ivec3 s2 = imageSize(CA2); highp ivec3 s3 = imageSize(CA3); imageStore(CA1, s3, vec4(1)); imageStore(CA2, s3, ivec4(1)); imageStore(CA3, s3, uvec4(1)); highp vec4 cl1 = imageLoad(rCA1, s3); highp ivec4 cl2 = imageLoad(rCA2, s3); highp uvec4 cl3 = imageLoad(rCA3, s3); } uniform sampler2DMSArray noPrec2DMS; // ERROR, no default uniform isampler2DMSArray noPrec2DMSi; // ERROR, no default uniform usampler2DMSArray noPrec2DMSu; // ERROR, no default precision highp sampler2DMSArray; precision highp isampler2DMSArray; precision highp usampler2DMSArray; uniform sampler2DMSArray samp2DMSA; uniform isampler2DMSArray samp2DMSAi; uniform usampler2DMSArray samp2DMSAu; void MSA() { vec4 tf = texelFetch(samp2DMSA, ivec3(5), 2); ivec4 tfi = texelFetch(samp2DMSAi, ivec3(5), 2); uvec4 tfu = texelFetch(samp2DMSAu, ivec3(5), 2); ivec3 tfs = textureSize(samp2DMSA); ivec3 tfsi = textureSize(samp2DMSAi); ivec3 tfsb = textureSize(samp2DMSAi, 4); // ERROR, no lod ivec3 tfsu = textureSize(samp2DMSAu); } uniform layout(r32f) highp image2D im2Df; uniform layout(r32ui) highp uimage2D im2Du; uniform layout(r32i) highp iimage2D im2Di; uniform ivec2 P; void goodImageAtom() { float datf; int dati; uint datu; imageAtomicAdd( im2Di, P, dati); imageAtomicAdd( im2Du, P, datu); imageAtomicMin( im2Di, P, dati); imageAtomicMin( im2Du, P, datu); imageAtomicMax( im2Di, P, dati); imageAtomicMax( im2Du, P, datu); imageAtomicAnd( im2Di, P, dati); imageAtomicAnd( im2Du, P, datu); imageAtomicOr( im2Di, P, dati); imageAtomicOr( im2Du, P, datu); imageAtomicXor( im2Di, P, dati); imageAtomicXor( im2Du, P, datu); imageAtomicExchange(im2Di, P, dati); imageAtomicExchange(im2Du, P, datu); imageAtomicExchange(im2Df, P, datf); imageAtomicCompSwap(im2Di, P, 3, dati); imageAtomicCompSwap(im2Du, P, 5u, datu); } sample out vec4 colorSample; flat sample out vec4 colorfsi; sample out vec3 sampInArray[4]; in vec4 inv4; void badInterp() { interpolateAtCentroid(inv4); // ERROR, wrong stage interpolateAtSample(inv4, 1); // ERROR, need extension interpolateAtOffset(inv4, vec2(0.2)); // ERROR, need extension } glslang-16.0.0/Test/330.frag000066400000000000000000000077041506534232700153310ustar00rootroot00000000000000#version 330 compatibility in vec4 inVar; layout(location=0, index=0) out vec4 outVar; varying vec4 varyingVar; void main() { gl_FragColor = varyingVar; // link ERROR: user output was used gl_FragData[1] = inVar; // link ERROR: user output was used int buffer = 4; } #extension GL_ARB_separate_shader_objects : enable in gl_PerFragment { vec4 gl_Color; }; void foo() { vec4 c = gl_Color; outVar = inVar; } in gl_block { // ERROR int gl_i; } gl_name; in myBlock { int gl_i; // ERROR } gl_name; // ERROR in gl_PerVertex { // ERROR vec4 gl_FragCoord; } gl_in[]; in gl_PerVertex { // ERROR vec4 gl_FragCoord; }; // ERROR const int start = 6; layout(location = -2) in vec4 v1; // ERROR layout(location = start + 2) in vec4 v2; // ERROR layout(location = 4.7e10) in vec4 v20; // ERROR layout(location = +60) in float v21; // ERROR layout(location = (2)) in float v22; // ERROR struct S { float f1; layout(location = 3) float f2; // ERROR }; layout(location = 1) in inblock { // ERROR float f1; layout(location = 3) float f2; // ERROR }; layout(location = 1) uniform ublock { // ERROR float f1; layout(location = 3) float f2; // ERROR } uinst; #extension GL_ARB_enhanced_layouts : enable layout(location = start) in vec4 v3; layout(location = -2) in vec4 v4; // ERROR layout(location = -start) in vec4 v5; // ERROR layout(location = start*start - 2 - 4) in vec4 v6; layout(location = +61) in float v23; layout(location = (62)) in float v24; struct S2 { float f1; layout(location = 3) float f2; // ERROR }; layout(location = 28) in inblock2 { bool b1; // ERROR float f1; layout(location = 25) float f2; vec4 f3; layout(location = 21) S2 s2; vec4 f4; vec4 f5; } ininst2; layout(location = 13) uniform ublock2 { // ERROR float f1; layout(location = 3) float f2; // ERROR } uinst2; in inblock3 { // ERROR, mix of location internal with no location external float f1; layout(location = 40) float f2; } in3; in ublock4 { layout(location = 50) float f1; layout(location = 51) float f2; } in4; layout(location = 33) in struct SS { vec3 a; // gets location 33 mat2 b; // gets locations 34 and 35 vec4 c[2]; // gets locations 36 and 37 layout (location = 38) vec2 A; // ERROR, can't use on struct member } s; layout(location = 44) in block { vec4 d; // gets location 44 vec4 e; // gets location 45 layout(location = 47) vec4 f; // gets location 47 vec4 g; // gets location 48 layout (location = 41) vec4 h; // gets location 41 vec4 i; // gets location 42 vec4 j; // gets location 43 vec4 k; // ERROR, location 44 already used }; layout(index=0) out vec4 outVar2; // ERROR: missing explicit location layout(location=0, index=1) out vec4 outVar3; // no error even though location is overlapping layout(location=0, index=1) out vec4 outVar4; // ERROR overlapping layout(location=27, index=0) in vec4 indexIn; // ERROR, not on in layout(location=0, index=0) in; // ERROR, not just on in layout(location=0, index=0) out; // ERROR, need a variable layout(location=26, index=0) out indexBlock { int a; } indexBlockI; // ERROR, not on a block int precise; // okay, not a keyword yet struct SKeyMem { int precise; } KeyMem; // okay, not a keyword yet void fooKeyMem() { KeyMem.precise; } layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range layout(location=4) uniform vec4 ucolor0; // ERROR: extension is not enabled #extension GL_ARB_explicit_uniform_location : enable layout(location=5) uniform vec4 ucolor1; layout(location=6) uniform ColorsBuffer // ERROR: location cannot be applied in uniform buffer block { vec4 colors[128]; } colorsBuffer; void testOverload() { float overloadTest = 42; overloadTest = smoothstep(0, 1, overloadTest); }glslang-16.0.0/Test/330comp.frag000066400000000000000000000002671506534232700162050ustar00rootroot00000000000000#version 330 compatibility in vec4 inVar; out vec4 outVar; varying vec4 varyingVar; void main() { gl_FragColor = varyingVar; gl_FragData[1] = inVar * gl_ModelViewMatrix; } glslang-16.0.0/Test/400.frag000066400000000000000000000144271506534232700153270ustar00rootroot00000000000000#version 400 core in vec2 c2D; flat in int i; out vec4 outp; uniform sampler2D arrayedSampler[5]; uniform usampler2DRect samp2dr; uniform isampler2DArray isamp2DA; #extension GL_ARB_shader_storage_buffer_object : enable buffer Buffer { int atomi; uint atomu; }; void atomicOpPass() { int origi = atomicAdd(atomi, 3); uint origu = atomicAnd(atomu, 7u); origi = atomicExchange(atomi, 4); origu = atomicCompSwap(atomu, 10u, 8u); } buffer ssboElem01 { int member01; int memberArr01[2]; int memberUnsizedArr01[]; } ssboStd430Arr[2]; // if turns on EShReflectionSharedStd140SSBO, SPIR-V would be different buffer ssboElem02 { int member02; int memberArr02[2]; int memberUnsizedArr02[]; } ssboSharedArr[2]; #extension GL_ARB_shader_storage_buffer_object : disable void main() { vec4 v; v = texture(arrayedSampler[i], c2D); outp.x = gl_ClipDistance[1]; ivec2 offsets[4]; const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); uvec4 uv4 = textureGatherOffsets(samp2dr, c2D, offsets, 2); // ERROR, offsets not constant uv4 = textureGatherOffsets(samp2dr, c2D, constOffsets, 2); vec4 v4 = textureGather(arrayedSampler[0], c2D); ivec4 iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 3); iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), i); // ERROR, last argument not const iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 4); // ERROR, last argument out of range iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 1+2); iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(i)); vec4 c = gl_FragCoord; } layout(location = 4) in vec4 vl; // ERROR, not supported #ifdef GL_ARB_separate_shader_objects #extension GL_ARB_separate_shader_objects : enable #endif layout(location = 6) in vec4 vl2; layout(location = 3) uniform vec3 uv3; layout(location = 5) in vec4 gl_Color; // ERROR, layout noperspective in float gl_ClipDistance[4]; // ERROR, can't change qualifier layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, declared after use uniform sampler2DRectShadow u2drs; void foo23() { const ivec2[3] offsets = ivec2[3](ivec2(1,2), ivec2(3,4), ivec2(15,16)); textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), ivec2(c2D)); // ERROR, offset not constant textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), offsets[1]); textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), offsets[2]); // ERROR, offset out of range textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), ivec2(-10, 20)); // ERROR, offset out of range } patch in vec4 patchIn; // ERROR patch out vec4 patchOut; // ERROR void foo24() { dvec3 df, di; df = modf(dvec3(outp.xyz), di); } in float in1; in vec2 in2; in vec3 in3; in vec4 in4; void foodc1() { vec2 v2 = dFdxFine(in2); // ERROR vec3 v3 = dFdyCoarse(in3); // ERROR vec4 v4 = fwidthCoarse(in4) + fwidthFine(in4); // ERROR } #extension GL_ARB_derivative_control : enable void foodc2() { vec2 v2 = dFdxFine(in2); vec3 v3 = dFdyCoarse(in3); vec4 v4 = fwidthCoarse(in4) + fwidthFine(in4); uint u1; ivec3 i3; ivec2 i2; v2 = frexp(v2, i2); v3 = ldexp(v3, i3); u1 = packUnorm4x8(v4); u1 = packSnorm4x8(v4); v4 = unpackUnorm4x8(u1); v4 = unpackSnorm4x8(u1); double d; uvec2 u2; d = packDouble2x32(u2); u2 = unpackDouble2x32(d); } sample in vec4 colorSampIn; sample out vec4 colorSampleBad; // ERROR noperspective in vec4 colorfsi; sample in vec3 sampInArray[4]; smooth in float scalarIn; flat centroid in vec2 colorfc; struct S { float x; }; in S s1; sample S s2; void interp() { interpolateAtCentroid(colorfc); interpolateAtCentroid(colorSampIn); interpolateAtCentroid(colorfsi); interpolateAtCentroid(scalarIn); interpolateAtCentroid(sampInArray); // ERROR interpolateAtCentroid(sampInArray[2]); interpolateAtCentroid(sampInArray[2].xy); // ERROR interpolateAtSample(sampInArray, 1); // ERROR interpolateAtSample(sampInArray[i], 0); interpolateAtSample(s1.x, 2); interpolateAtSample(scalarIn, 1); interpolateAtOffset(sampInArray, vec2(0.2)); // ERROR interpolateAtOffset(sampInArray[2], vec2(0.2)); interpolateAtOffset(sampInArray[2].xy, vec2(0.2)); // ERROR, no swizzle interpolateAtOffset(scalarIn + scalarIn, vec2(0.2)); // ERROR, no binary ops other than dereference interpolateAtOffset(s2.x, vec2(0.2)); // ERROR float f; interpolateAtCentroid(f); // ERROR, not interpolant interpolateAtSample(outp, 0); // ERROR, not interpolant } uniform sampler1D samp1D; uniform isampler2D isamp2D; uniform usampler3D usamp3D; uniform samplerCube sampCube; uniform isampler1DArray isamp1DA; uniform usampler2DArray usamp2DA; uniform isamplerCubeArray isampCubeA; uniform sampler1DShadow samp1Ds; uniform sampler2DShadow samp2Ds; uniform samplerCubeShadow sampCubes; uniform sampler1DArrayShadow samp1DAs; uniform sampler2DArrayShadow samp2DAs; uniform samplerCubeArrayShadow sampCubeAs; uniform samplerBuffer sampBuf; uniform sampler2DRect sampRect; void qlod() { vec2 lod; float pf; vec2 pf2; vec3 pf3; lod = textureQueryLod(samp1D, pf); lod = textureQueryLod(isamp2D, pf2); lod = textureQueryLod(usamp3D, pf3); lod = textureQueryLod(sampCube, pf3); lod = textureQueryLod(isamp1DA, pf); lod = textureQueryLod(usamp2DA, pf2); lod = textureQueryLod(isampCubeA, pf3); lod = textureQueryLod(samp1Ds, pf); lod = textureQueryLod(samp2Ds, pf2); lod = textureQueryLod(sampCubes, pf3); lod = textureQueryLod(samp1DAs, pf); lod = textureQueryLod(samp2DAs, pf2); lod = textureQueryLod(sampCubeAs, pf3); lod = textureQueryLod(sampBuf, pf); // ERROR lod = textureQueryLod(sampRect, pf2); // ERROR } uniform uint uu; out uint iout; void bitwiseConv() { iout = uu & i; iout += uu ^ i; iout += i | uu; } subroutine(subT1, subT2); subroutine float subT1() { return 1.0; } subroutine float subT2() { return 1.0; } struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member glslang-16.0.0/Test/400.geom000066400000000000000000000225671506534232700153430ustar00rootroot00000000000000#version 400 core void main() { EmitStreamVertex(1); EndStreamPrimitive(0); EmitVertex(); EndPrimitive(); int id = gl_InvocationID; } layout(invocations = 4) in outbn { int a; } bn[]; // ERROR, not on a block layout(max_vertices = 127) out; layout(invocations = 4) in; #extension GL_ARB_separate_shader_objects : enable in gl_PerVertex { // testing input arrays with a block redeclaration, see 420.geom for without vec4 gl_Position; layout(std140, location = 3) patch float gl_PointSize; // ERRORs... } gl_in[]; void foo() { gl_in.length(); // ERROR gl_in[1].gl_Position; } in vec4 color[]; in vec4 color2[]; in vec4 colorS[3]; in vec4 colorBad[4]; void foo2() { color.length(); // ERROR colorS.length(); } layout(triangles) in; // give ERROR just for colorBad in vec4 color[3]; in vec4 color2[3]; in vec4 colorbad2[2]; // ERROR void foo3() { gl_in.length(); color.length(); color2.length(); colorS.length(); } layout(location = 4) in vec4 cva[3]; layout(location = 5) in vec4 cvb[3]; layout(location = 2) in mat3 cmc[3]; // ERROR, collision patch in vec4 patchIn[]; // ERROR patch out vec4 patchOut; // ERROR in float scalar; // ERROR, no array layout(max_vertices = 127, invocations = 4) out; // ERROR layout(invocations = 4, max_vertices = 127) in; // ERROR layout(max_vertices = 127, invocations = 4) uniform; // 2 ERRORs in inblockscalar { int a; } inbls; // ERROR, not an array in inblocka { int a; } inbla[17]; // ERROR, wrong array size void bits() { uvec2 u2; u2 = uaddCarry(u2, u2, u2); uint u1; u1 = usubBorrow(u1, u1, u1); uvec4 u4; umulExtended(u4, u4, u4, u4); ivec4 i4; imulExtended(i4, i4, i4, i4); int i1; i1 = bitfieldExtract(i1, 4, 5); uvec3 u3; u3 = bitfieldExtract(u3, 4, 5); ivec3 i3; i3 = bitfieldInsert(i3, i3, 4, 5); u1 = bitfieldInsert(u1, u1, 4, 5); ivec2 i2; i2 = bitfieldReverse(i2); u4 = bitfieldReverse(u4); i1 = bitCount(i1); i3 = bitCount(u3); i2 = findLSB(i2); i4 = findLSB(u4); i1 = findMSB(i1); i2 = findMSB(u2); } layout(location = 7, index = 1) out vec4 indexedOut; uniform sampler1D samp1D; uniform sampler2DShadow samp2Ds; void qlod() { vec2 lod; float pf; vec2 pf2; vec3 pf3; lod = textureQueryLod(samp1D, pf); // ERROR, only in fragment lod = textureQueryLod(samp2Ds, pf2); // ERROR, only in fragment } void doubles() { double doublev; dvec2 dvec2v; dvec3 dvec3v; dvec4 dvec4v; bool boolv; bvec2 bvec2v; bvec3 bvec3v; bvec4 bvec4v; doublev = sqrt(2.9); dvec2v = sqrt(dvec2(2.7)); dvec3v = sqrt(dvec3(2.0)); dvec4v = sqrt(dvec4(2.1)); doublev += inversesqrt(doublev); dvec2v += inversesqrt(dvec2v); dvec3v += inversesqrt(dvec3v); dvec4v += inversesqrt(dvec4v); doublev += abs(doublev); dvec2v += abs(dvec2v); dvec3v += abs(dvec3v); dvec4v += abs(dvec4v); doublev += sign(doublev); dvec2v += sign(dvec2v); dvec3v += sign(dvec3v); dvec4v += sign(dvec4v); doublev += floor(doublev); dvec2v += floor(dvec2v); dvec3v += floor(dvec3v); dvec4v += floor(dvec4v); doublev += trunc(doublev); dvec2v += trunc(dvec2v); dvec3v += trunc(dvec3v); dvec4v += trunc(dvec4v); doublev += round(doublev); dvec2v += round(dvec2v); dvec3v += round(dvec3v); dvec4v += round(dvec4v); doublev += roundEven(doublev); dvec2v += roundEven(dvec2v); dvec3v += roundEven(dvec3v); dvec4v += roundEven(dvec4v); doublev += ceil(doublev); dvec2v += ceil(dvec2v); dvec3v += ceil(dvec3v); dvec4v += ceil(dvec4v); doublev += fract(doublev); dvec2v += fract(dvec2v); dvec3v += fract(dvec3v); dvec4v += fract(dvec4v); doublev += mod(doublev, doublev); dvec2v += mod(dvec2v, doublev); dvec3v += mod(dvec3v, doublev); dvec4v += mod(dvec4v, doublev); dvec2v += mod(dvec2v, dvec2v); dvec3v += mod(dvec3v, dvec3v); dvec4v += mod(dvec4v, dvec4v); doublev += modf(doublev, doublev); dvec2v += modf(dvec2v, dvec2v); dvec3v += modf(dvec3v, dvec3v); dvec4v += modf(dvec4v, dvec4v); doublev += min(doublev, doublev); dvec2v += min(dvec2v, doublev); dvec3v += min(dvec3v, doublev); dvec4v += min(dvec4v, doublev); dvec2v += min(dvec2v, dvec2v); dvec3v += min(dvec3v, dvec3v); dvec4v += min(dvec4v, dvec4v); doublev += max(doublev, doublev); dvec2v += max(dvec2v, doublev); dvec3v += max(dvec3v, doublev); dvec4v += max(dvec4v, doublev); dvec2v += max(dvec2v, dvec2v); dvec3v += max(dvec3v, dvec3v); dvec4v += max(dvec4v, dvec4v); doublev += clamp(doublev, doublev, doublev); dvec2v += clamp(dvec2v, doublev, doublev); dvec3v += clamp(dvec3v, doublev, doublev); dvec4v += clamp(dvec4v, doublev, doublev); dvec2v += clamp(dvec2v, dvec2v, dvec2v); dvec3v += clamp(dvec3v, dvec3v, dvec3v); dvec4v += clamp(dvec4v, dvec4v, dvec4v); doublev += mix(doublev, doublev, doublev); dvec2v += mix(dvec2v, dvec2v, doublev); dvec3v += mix(dvec3v, dvec3v, doublev); dvec4v += mix(dvec4v, dvec4v, doublev); dvec2v += mix(dvec2v, dvec2v, dvec2v); dvec3v += mix(dvec3v, dvec3v, dvec3v); dvec4v += mix(dvec4v, dvec4v, dvec4v); doublev += mix(doublev, doublev, boolv); dvec2v += mix(dvec2v, dvec2v, bvec2v); dvec3v += mix(dvec3v, dvec3v, bvec3v); dvec4v += mix(dvec4v, dvec4v, bvec4v); doublev += step(doublev, doublev); dvec2v += step(dvec2v, dvec2v); dvec3v += step(dvec3v, dvec3v); dvec4v += step(dvec4v, dvec4v); dvec2v += step(doublev, dvec2v); dvec3v += step(doublev, dvec3v); dvec4v += step(doublev, dvec4v); doublev += smoothstep(doublev, doublev, doublev); dvec2v += smoothstep(dvec2v, dvec2v, dvec2v); dvec3v += smoothstep(dvec3v, dvec3v, dvec3v); dvec4v += smoothstep(dvec4v, dvec4v, dvec4v); dvec2v += smoothstep(doublev, doublev, dvec2v); dvec3v += smoothstep(doublev, doublev, dvec3v); dvec4v += smoothstep(doublev, doublev, dvec4v); boolv = isnan(doublev); bvec2v = isnan(dvec2v); bvec3v = isnan(dvec3v); bvec4v = isnan(dvec4v); boolv = boolv ? isinf(doublev) : false; bvec2v = boolv ? isinf(dvec2v) : bvec2(false); bvec3v = boolv ? isinf(dvec3v) : bvec3(false); bvec4v = boolv ? isinf(dvec4v) : bvec4(false); doublev += length(doublev); doublev += length(dvec2v); doublev += length(dvec3v); doublev += length(dvec4v); doublev += distance(doublev, doublev); doublev += distance(dvec2v, dvec2v); doublev += distance(dvec3v, dvec3v); doublev += distance(dvec4v, dvec4v); doublev += dot(doublev, doublev); doublev += dot(dvec2v, dvec2v); doublev += dot(dvec3v, dvec3v); doublev += dot(dvec4v, dvec4v); dvec3v += cross(dvec3v, dvec3v); doublev += normalize(doublev); dvec2v += normalize(dvec2v); dvec3v += normalize(dvec3v); dvec4v += normalize(dvec4v); doublev += faceforward(doublev, doublev, doublev); dvec2v += faceforward(dvec2v, dvec2v, dvec2v); dvec3v += faceforward(dvec3v, dvec3v, dvec3v); dvec4v += faceforward(dvec4v, dvec4v, dvec4v); doublev += reflect(doublev, doublev); dvec2v += reflect(dvec2v, dvec2v); dvec3v += reflect(dvec3v, dvec3v); dvec4v += reflect(dvec4v, dvec4v); doublev += refract(doublev, doublev, doublev); dvec2v += refract(dvec2v, dvec2v, doublev); dvec3v += refract(dvec3v, dvec3v, doublev); dvec4v += refract(dvec4v, dvec4v, doublev); dmat2 dmat2v = outerProduct(dvec2v, dvec2v); dmat3 dmat3v = outerProduct(dvec3v, dvec3v); dmat4 dmat4v = outerProduct(dvec4v, dvec4v); dmat2x3 dmat2x3v = outerProduct(dvec3v, dvec2v); dmat3x2 dmat3x2v = outerProduct(dvec2v, dvec3v); dmat2x4 dmat2x4v = outerProduct(dvec4v, dvec2v); dmat4x2 dmat4x2v = outerProduct(dvec2v, dvec4v); dmat3x4 dmat3x4v = outerProduct(dvec4v, dvec3v); dmat4x3 dmat4x3v = outerProduct(dvec3v, dvec4v); dmat2v *= matrixCompMult(dmat2v, dmat2v); dmat3v *= matrixCompMult(dmat3v, dmat3v); dmat4v *= matrixCompMult(dmat4v, dmat4v); dmat2x3v = matrixCompMult(dmat2x3v, dmat2x3v); dmat2x4v = matrixCompMult(dmat2x4v, dmat2x4v); dmat3x2v = matrixCompMult(dmat3x2v, dmat3x2v); dmat3x4v = matrixCompMult(dmat3x4v, dmat3x4v); dmat4x2v = matrixCompMult(dmat4x2v, dmat4x2v); dmat4x3v = matrixCompMult(dmat4x3v, dmat4x3v); dmat2v *= transpose(dmat2v); dmat3v *= transpose(dmat3v); dmat4v *= transpose(dmat4v); dmat2x3v = transpose(dmat3x2v); dmat3x2v = transpose(dmat2x3v); dmat2x4v = transpose(dmat4x2v); dmat4x2v = transpose(dmat2x4v); dmat3x4v = transpose(dmat4x3v); dmat4x3v = transpose(dmat3x4v); doublev += determinant(dmat2v); doublev += determinant(dmat3v); doublev += determinant(dmat4v); dmat2v *= inverse(dmat2v); dmat3v *= inverse(dmat3v); dmat4v *= inverse(dmat4v); } glslang-16.0.0/Test/400.tesc000066400000000000000000000052501506534232700153400ustar00rootroot00000000000000#version 400 core layout(vertices = 4) out; int outa[gl_out.length()]; layout(quads) in; // ERROR layout(ccw) out; // ERROR layout(fractional_even_spacing) in; // ERROR patch in vec4 patchIn; // ERROR patch out vec4 patchOut; void main() { barrier(); int a = gl_MaxTessControlInputComponents + gl_MaxTessControlOutputComponents + gl_MaxTessControlTextureImageUnits + gl_MaxTessControlUniformComponents + gl_MaxTessControlTotalOutputComponents; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; float cd = gl_in[1].gl_ClipDistance[2]; int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; int iid = gl_InvocationID; gl_out[gl_InvocationID].gl_Position = p; gl_out[gl_InvocationID].gl_PointSize = ps; gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; gl_TessLevelOuter[3] = 3.2; gl_TessLevelInner[1] = 1.3; if (a > 10) barrier(); // ERROR else barrier(); // ERROR barrier(); do { barrier(); // ERROR } while (a > 10); switch (a) { default: barrier(); // ERROR break; } a < 12 ? a : (barrier(), a); // ERROR { barrier(); } return; barrier(); // ERROR } layout(vertices = 4) in; // ERROR layout(vertices = 5) out; // ERROR void foo() { gl_out[4].gl_PointSize; // ERROR barrier(); // ERROR } in vec2 ina; // ERROR, not array in vec2 inb[]; in vec2 inc[18]; // ERROR, wrong size in vec2 ind[gl_MaxPatchVertices]; #extension GL_ARB_separate_shader_objects : enable layout(location = 3) in vec4 ivla[]; layout(location = 4) in vec4 ivlb[]; layout(location = 4) in vec4 ivlc[]; // ERROR, overlapping layout(location = 3) out vec4 ovla[]; layout(location = 4) out vec4 ovlb[]; layout(location = 4) out vec4 ovlc[]; // ERROR, overlapping precise vec3 pv3; void foop() { precise double d; pv3 *= pv3; pv3 = fma(pv3, pv3, pv3); d = fma(d, d, d); } patch out pinbn { int a; } pinbi; invariant precise out vec4 badOrder[]; // ERROR, precise must appear first void badp(out precise float f); // ERROR, precise must appear first void devi() { gl_DeviceIndex; // ERROR, no extension gl_ViewIndex; // ERROR, no extension } #ifdef GL_EXT_device_group #extension GL_EXT_device_group : enable #endif #ifdef GL_EXT_multiview #extension GL_EXT_multiview : enable #endif void devie() { gl_DeviceIndex; gl_ViewIndex; } glslang-16.0.0/Test/400.tese000066400000000000000000000055571506534232700153540ustar00rootroot00000000000000#version 400 core layout(vertices = 4) out; // ERROR layout(quads, cw) in; layout(triangles) in; // ERROR layout(isolines) in; // ERROR layout(ccw) in; // ERROR layout(cw) in; layout(fractional_odd_spacing) in; layout(equal_spacing) in; // ERROR layout(fractional_even_spacing) in; // ERROR layout(point_mode) in; patch in vec4 patchIn; patch out vec4 patchOut; // ERROR void main() { barrier(); // ERROR int a = gl_MaxTessEvaluationInputComponents + gl_MaxTessEvaluationOutputComponents + gl_MaxTessEvaluationTextureImageUnits + gl_MaxTessEvaluationUniformComponents + gl_MaxTessPatchComponents + gl_MaxPatchVertices + gl_MaxTessGenLevel; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; float cd = gl_in[1].gl_ClipDistance[2]; int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; vec3 tc = gl_TessCoord; float tlo = gl_TessLevelOuter[3]; float tli = gl_TessLevelInner[1]; gl_Position = p; gl_PointSize = ps; gl_ClipDistance[2] = cd; } smooth patch in vec4 badp1; // ERROR flat patch in vec4 badp2; // ERROR noperspective patch in vec4 badp3; // ERROR patch sample in vec3 badp4; // ERROR #extension GL_ARB_separate_shader_objects : enable in gl_PerVertex { float gl_ClipDistance[1]; } gl_in[]; in gl_PerVertex // ERROR, second redeclaration of gl_in { float gl_ClipDistance[1]; } gl_in[]; layout(quads, cw) out; // ERROR layout(triangles) out; // ERROR layout(isolines) out; // ERROR layout(cw) out; // ERROR layout(fractional_odd_spacing) out; // ERROR layout(equal_spacing) out; // ERROR layout(fractional_even_spacing) out; // ERROR layout(point_mode) out; // ERROR in vec2 ina; // ERROR, not array in vec2 inb[]; in vec2 inc[18]; // ERROR, wrong size in vec2 ind[gl_MaxPatchVertices]; in testbla { int f; } bla; // ERROR, not array in testblb { int f; } blb[]; in testblc { int f; } blc[18]; // ERROR wrong size in testbld { int f; } bld[gl_MaxPatchVertices]; layout(location = 23) in vec4 ivla[]; layout(location = 24) in vec4 ivlb[]; layout(location = 24) in vec4 ivlc[]; // ERROR layout(location = 23) out vec4 ovla[2]; layout(location = 24) out vec4 ovlb[2]; // ERROR in float gl_TessLevelOuter[4]; // ERROR, can't redeclare patch in pinbn { int a; } pinbi; void devi() { gl_DeviceIndex; // ERROR, no extension gl_ViewIndex; // ERROR, no extension } #ifdef GL_EXT_device_group #extension GL_EXT_device_group : enable #endif #ifdef GL_EXT_multiview #extension GL_EXT_multiview : enable #endif void devie() { gl_DeviceIndex; gl_ViewIndex; } glslang-16.0.0/Test/400.vert000066400000000000000000000032351506534232700153630ustar00rootroot00000000000000#version 400 core in double d; // ERROR, no doubles in dvec3 d3; // ERROR, no doubles in dmat4 dm4; // ERROR, no doubles // function selection under type conversion void foo1(double a, uint b) {} void foo1(double a, int b) {} void foo1(double a, float b) {} void foo1(double a, double b){} void foo2(double a, float b) {} void foo2(double a, double b){} void foo3(double a, float b) {} void foo3(float a, double b) {} void ftd( int, float, double) {} void ftd( uint, float, double) {} void ftd(float, double, double) {} void main() { double d; uint u; int i; float f; foo1(d, d); foo1(d, u); foo1(d, i); foo1(d, f); foo1(f, d); foo1(f, u); foo1(f, i); foo1(f, f); foo1(u, d); foo1(u, u); foo1(u, i); foo1(u, f); foo1(i, d); foo1(i, u); foo1(i, i); foo1(i, f); foo2(d, d); foo2(d, u); foo2(d, i); foo2(d, f); foo2(f, d); foo2(f, u); foo2(f, i); foo2(f, f); foo2(u, d); foo2(u, u); foo2(u, i); foo2(u, f); foo2(i, d); foo2(i, u); foo2(i, i); foo2(i, f); foo3(d, d); // ERROR, no match foo3(d, u); foo3(d, i); foo3(d, f); foo3(f, d); foo3(f, u); // ERROR, ambiguous foo3(f, i); // ERROR, ambiguous foo3(f, f); // ERROR, ambiguous foo3(u, d); foo3(u, u); // ERROR, ambiguous foo3(u, i); // ERROR, ambiguous foo3(u, f); // ERROR, ambiguous foo3(i, d); foo3(i, u); // ERROR, ambiguous foo3(i, i); // ERROR, ambiguous foo3(i, f); // ERROR, ambiguous ftd(i, f, f); ftd(u, f, f); } void itf(int, float, int); void itf(int, double, int); void tf() { double d; uint u; int i; float f; itf(i, i, i); itf(i, u, i); } glslang-16.0.0/Test/410.geom000066400000000000000000000015251506534232700153330ustar00rootroot00000000000000#version 410 core void main() { gl_ViewportIndex = 7; } in gl_PerVertex { float gl_PointSize; } myIn[]; // ERROR, can't redeclare a different name in gl_PerVertex { float gl_PointSize; } gl_myIn[]; // ERROR, can't redeclare a different name in gl_PerVertex { float gl_PointSize; } gl_in[]; in gl_PerVertex { float gl_PointSize; } gl_in[]; // ERROR, can't do it again out gl_PerVertex { float gl_PointSize; }; void foo() { float p = gl_in[1].gl_PointSize; // use of redeclared gl_PointSize = p; // use of redeclared vec4 v = gl_in[1].gl_Position; // ERROR, not included in the redeclaration gl_Position = vec4(1.0); // ERROR, not included in the redeclaration } float foo5() { return 4; // implicit conversion of return type } glslang-16.0.0/Test/410.tesc000066400000000000000000000002211506534232700153320ustar00rootroot00000000000000#version 400 core // no layout(vertices = ...) out; int outa[gl_out.length()]; // ERROR patch out vec4 patchOut; void main() { } glslang-16.0.0/Test/410.vert000066400000000000000000000001711506534232700153600ustar00rootroot00000000000000#version 410 core in double d; in dvec3 d3; in dmat4 dm4; void main() { int test = gl_MaxFragmentUniformVectors; } glslang-16.0.0/Test/420.comp000066400000000000000000000016441506534232700153450ustar00rootroot00000000000000#version 420 layout(local_size_x = 2) in; // ERROR, no compute #extension GL_ARB_compute_shader : enable layout(local_size_x = 2, local_size_y = 4, local_size_z = 6) in; shared vec3 sfoo; void main() { sfoo = vec3(gl_WorkGroupSize.x, gl_WorkGroupSize.y, gl_WorkGroupSize.z); sfoo += gl_WorkGroupSize + gl_NumWorkGroups + gl_WorkGroupID + gl_LocalInvocationID + gl_GlobalInvocationID; sfoo *= gl_LocalInvocationIndex; sfoo += gl_MaxComputeWorkGroupCount + gl_MaxComputeWorkGroupSize; sfoo *= gl_MaxComputeUniformComponents + gl_MaxComputeTextureImageUnits + gl_MaxComputeImageUniforms + gl_MaxComputeAtomicCounters + gl_MaxComputeAtomicCounterBuffers; barrier(); memoryBarrier(); memoryBarrierAtomicCounter(); memoryBarrierBuffer(); memoryBarrierImage(); memoryBarrierShared(); groupMemoryBarrier(); }glslang-16.0.0/Test/420.frag000066400000000000000000000026731506534232700153310ustar00rootroot00000000000000#version 420 core layout(depth_any) out float gl_FragDepth; layout(depth_greater) out float gl_FragDepth; // ERROR: redeclaration with different qualifier void main() { gl_FragDepth = 0.3; } layout(depth_less) in float depth; // ERROR: depth_less only applies to gl_FragDepth layout(depth_any) out float gl_FragDepth; // ERROR, done after use layout(binding=0) uniform atomic_uint a[]; uniform writeonly image2D i2D; ivec2 iv2dim = imageSize(i2D); // ERROR: imageSize called without enabling GL_ARB_shader_image_size extension #extension GL_ARB_shader_image_size : enable ivec2 iv2dim1 = imageSize(i2D); #extension GL_ARB_shader_storage_buffer_object : enable layout(binding = 0,std430) buffer Buffer { int atomi; uint atomu; }; void atomicOpPass() { int origi = atomicAdd(atomi, 3); uint origu = atomicAnd(atomu, 7u); origi = atomicExchange(atomi, 4); origu = atomicCompSwap(atomu, 10u, 8u); } layout(binding = 2,std430) buffer ssboElem01 { int member01; int memberArr01[2]; int memberUnsizedArr01[]; } ssboStd430Arr[2]; // if turns on EShReflectionSharedStd140SSBO, SPIR-V would be different layout(binding = 3,shared) buffer ssboElem02 { int member02; int memberArr02[2]; int memberUnsizedArr02[]; } ssboSharedArr[2]; #extension GL_ARB_shader_storage_buffer_object : disable layout(binding = 1,std430) buffer BufferFail // Error std430 and "buffer" block support disabled { int atom1i; }; glslang-16.0.0/Test/420.geom000066400000000000000000000017611506534232700153360ustar00rootroot00000000000000#version 420 core // testing input arrays without a gl_in[] block redeclaration, see 400.geom for with int i; void foo() { gl_in.length(); // ERROR gl_in[1].gl_Position; gl_in[i].gl_Position; // ERROR } layout(triangles) in; in vec4 color3[3]; void foo3() { gl_in.length(); gl_in[i].gl_Position; color3.length(); } uniform sampler2D s2D; in vec2 coord[]; uniform vec4 v4; void foo4() { const ivec2 offsets[5] = { ivec2(0,1), ivec2(1,-2), ivec2(0,3), ivec2(-3,0), ivec2(2,1) }; vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy); offsets[i].xy = ivec2(3); // ERROR v4.x = 3.2; // ERROR v4.xy; // should have non-uniform type } out gl_PerVertex { float gl_PointSize[1]; // ERROR, adding array float gl_ClipDistance; // ERROR, removing array }; float foo5() { return i; // implicit conversion of return type } glslang-16.0.0/Test/420.tesc000066400000000000000000000021151506534232700153370ustar00rootroot00000000000000#version 420 core #extension GL_ARB_separate_shader_objects : enable layout(vertices = 4) out; out gl_PerVertex { vec4 gl_Position; } gl_out[3]; // ERROR, wrong size out int a[gl_out.length()]; out int outb[5]; // ERROR, wrong size out int outc[]; void main() { vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; float cd = gl_in[1].gl_ClipDistance[2]; int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; int iid = gl_InvocationID; gl_out[gl_InvocationID].gl_Position = p; gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR } out float outf; // ERROR, no array layout (location = 0) in dmat2x4 vs_tcs_first[]; layout (location = 12) in dmat2x4 vs_tcs_last[]; void foo() { if ((dmat2x4(dvec4(-0.625, -0.5, -0.375lf, -0.25), dvec4(-0.375, -0.25, -0.125, 0)) != vs_tcs_first[0]) || (dmat2x4(dvec4(0.375, 0.5, 0.625, 0.75), dvec4(0.625, 0.75, 0.875, -0.625)) != vs_tcs_last[0])) { ; } } layout(vertices = 0) out; // ERROR, can't be 0 glslang-16.0.0/Test/420.tese000066400000000000000000000041371506534232700153470ustar00rootroot00000000000000#version 420 core const mat2x2 a = mat2( vec2( 1.0, 0.0 ), vec2( 0.0, 1.0 ) ); mat2x2 b = { vec2( 1.0, 0.0 ), vec2( 0.0, 1.0 ) }; const mat2x2 c = { { 1.0, 0.0, }, { 0.0, 1.0 } }; float a2[2] = { 3.4, 4.2, 5.0 }; // illegal vec2 b2 = { 1.0, 2.0, 3.0 }; // illegal mat3x3 c2 = { vec3(0.0), vec3(1.0), vec3(2.0), vec3(3.0) }; // illegal mat2x2 d = { 1.0, 0.0, 0.0, 1.0 }; // illegal, can't flatten nesting struct { float a; int b; } e = { 1.2, 2, }; struct { float a; int b; } e2 = { 1, 3 }; // legal, first initializer is converted struct { float a; int b; } e3 = { 1.2, 2, 3 }; // illegal int a3 = true; // illegal vec4 b3[2] = { vec4(0.0), 1.0 }; // illegal vec4 b4[2] = vec4[2](vec4(0.0), mat2x2(1.0)); // illegal mat4x2 c3 = { vec3(0.0), vec3(1.0) }; // illegal struct S1 { vec4 a; vec4 b; }; struct { float s; float t; } d2[] = { S1(vec4(0.0), vec4(1.1)) }; // illegal float b5[] = { 3.4, 4.2, 5.0, 5.2, 1.1 }; struct S3 { float f; mat2x3 m23; }; struct S4 { uvec2 uv2; S3 s[2]; }; struct Single1 { int f; }; Single1 single1 = { 10 }; struct Single2 { uvec2 v; }; Single2 single2 = { { 1, 2 } }; struct Single3 { Single1 s1; }; Single3 single3 = { { 3 } }; struct Single4 { Single2 s1; }; Single4 single4 = { { { 4u, 5u } } }; const S4 constructed = S4(uvec2(1, 2), S3[2](S3(3.0, mat2x3(4.0)), S3(5.0, mat2x3(6.0)))); const S4 curlybad1 = { {1, 2}, { {3, {4.0, 0, 0.0}, {0.0, 4.0, 0.0 } }, // ERROR, the mat2x3 isn't isolated {5.0, {6, 0.0, 0.0}, {0.0, 6.0, 0.0 } } } }; const S4 curlyInit = { {1, 2}, { {3, { {4.0, 0, 0.0}, {0.0, 4.0, 0.0 } } }, {5.0, { {6, 0.0, 0.0}, {0.0, 6.0, 0.0 } } } } }; float vc1, vc2, vc3; vec3 av3 = vec3(vc1, vc2, vc3); vec3 bv3 = { vc1, vc2, vc3 }; void main() { memoryBarrier(); if (constructed == curlybad1) ; if (constructed == curlyInit) ; } glslang-16.0.0/Test/420.vert000066400000000000000000000114621506534232700153660ustar00rootroot00000000000000#version 420 core #version 420 core varying vec2 v2; // ERROR, varying reserved in vec4 bad[10]; highp in vec4 badorder; out invariant vec4 badorder2; in centroid vec4 badorder4; // ERROR, no centroid input to vertex stage out flat vec4 badorder3; void bar(in const float a); void bar2(highp in float b); smooth flat out vec4 rep; // ERROR, replicating interpolation qualification centroid sample out vec4 rep2; // ERROR, replicating auxiliary qualification in uniform vec4 rep3; // ERROR, replicating storage qualification int anonconst; const int aconst = 5; const int a = aconst; const int b = anonconst; // ERROR at global scope const int foo() // ERROR, no const functions { const int a = aconst; const int b = anonconst; const int c = a; // still compile-time const const int d = b; // not a compile-time const float x[c]; // okay float y[d]; // ERROR return b; } void main() { int i; if (i == 3) int j = i; else int k = j; // ERROR, j is undeclared int m = k; // ERROR, k is undeclared int n = j; // ERROR, j is undeclared while (true) int jj; int kk = jj; // ERROR, jj is undeclared } const float cx = 4.20; const float dx = 4.20; void bar(in highp volatile vec4 v) { int s; s.x; // okay s.y; // ERROR if (bad[0].x == cx.x) ; if (cx.x == dx.x) badorder3 = bad[0]; float f; vec3 smeared = f.xxx; f.xxxxx; // ERROR f.xxy; // ERROR } layout(binding = 3) uniform; // ERROR layout(binding = 3) uniform boundblock { int aoeu; } boundInst; layout(binding = 7) uniform anonblock { int aoeu; } ; layout(location = 1) in; // ERROR layout(binding = 1) in inblock { int aoeua; }; // ERROR layout(binding = 100000) uniform anonblock2 { int aooeu; } ; layout(binding = 4) uniform sampler2D sampb1; layout(binding = 5) uniform sampler2D sampb2[10]; layout(binding = 80) uniform sampler2D sampb3; // ERROR, binding too big layout(binding = 31) uniform sampler2D sampb4; layout(binding = 79) uniform sampler2D sampb5[2]; // ERROR, binding too big int fgfg(float f, mediump int i); int fgfg(float f, highp int i); out gl_PerVertex { float gl_ClipDistance[4]; }; patch in vec4 patchIn; // ERROR patch out vec4 patchOut; // ERROR void bar23444() { mat4x3 m43; \ float a1 = m43[3].y; vec3 v3; int a2 = m43.length(); a2 += m43[1].length(); a2 += v3.length(); const float b = 2 * a1; int a = gl_MinProgramTexelOffset + gl_MaxProgramTexelOffset; } const int comma0 = (2, 3); // ERROR int comma1[(2, 3)]; // ERROR layout(r32i) uniform iimage2D iimg2D; layout(rgba32i) uniform iimage2D iimg2Drgba; layout(rgba32f) uniform image2D img2Drgba; layout(r32ui) uniform uimage2D uimg2D; uniform image2DMS img2DMS; // ERROR image variables not declared writeonly must have format layout qualifier uniform writeonly image2DMS img2DMSWO; void qux() { int i = aoeu; imageAtomicCompSwap(iimg2D, ivec2(i,i), i, i); imageAtomicAdd(uimg2D, ivec2(i,i), uint(i)); imageAtomicMin(iimg2Drgba, ivec2(i,i), i); // ERROR iimg2Drgba does not have r32i layout imageAtomicMax(img2Drgba, ivec2(i,i), i); // ERROR img2Drgba is not integer image ivec4 pos = imageLoad(iimg2D, ivec2(i,i)); vec4 col = imageLoad(img2DMS, ivec2(i,i), i); imageStore(img2DMSWO, ivec2(i,i), i, vec4(0)); imageLoad(img2DMSWO, ivec2(i,i), i); // ERROR, drops writeonly } volatile float vol; // ERROR, not an image readonly int vol2; // ERROR, not an image void passr(coherent readonly iimage2D image) { } layout(r32i) coherent readonly uniform iimage2D qualim1; layout(r32i) coherent volatile readonly uniform iimage2D qualim2; void passrc() { passr(qualim1); // ERROR, changing formats passr(qualim2); // ERROR, drops volatile, ERROR, changing formats passr(iimg2D); // ERROR, changing formats } layout(rg8i) uniform uimage2D i1bad; // ERROR, type mismatch layout(rgba32i) uniform image2D i2bad; // ERROR, type mismatch layout(rgba32f) uniform uimage2D i3bad; // ERROR, type mismatch layout(r8_snorm) uniform iimage2D i4bad; // ERROR, type mismatch layout(rgba32ui) uniform iimage2D i5bad; // ERROR, type mismatch layout(r8ui) uniform iimage2D i6bad; // ERROR, type mismatch uniform offcheck { layout(offset = 16) int foo; // ERROR } offcheckI; uniform sampler1D samp1D; uniform sampler1DShadow samp1Ds; void qlod() { int levels; levels = textureQueryLevels(samp1D); // ERROR, not until 430 levels = textureQueryLevels(samp1Ds); // ERROR, not until 430 } layout(binding=0) writeonly uniform image1D badArray[]; layout(binding = 74) uniform sampler2D u_sampler0[6]; glslang-16.0.0/Test/420_size_gl_in.geom000066400000000000000000000006431506534232700175360ustar00rootroot00000000000000#version 420 core // testing input arrays without a gl_in[] block redeclaration, see 400.geom for with int i; layout(triangles) in; in vec4 colorun[]; in vec4 color3[3]; void foo() { gl_in.length(); gl_in[1].gl_Position; gl_in.length(); gl_in[i].gl_Position; // should be sized to 3 by 'triangles' } in gl_PerVertex { // ERROR, already used vec4 gl_Position; } gl_in[]; glslang-16.0.0/Test/430.comp000066400000000000000000000042031506534232700153400ustar00rootroot00000000000000#version 430 core layout(local_size_x = 2) in; layout(local_size_x = 16) in; // ERROR, changing layout(local_size_z = 4096) in; // ERROR, too large layout(local_size_x = 2) in; const int total = gl_MaxComputeWorkGroupCount.y + gl_MaxComputeUniformComponents + gl_MaxComputeTextureImageUnits + gl_MaxComputeImageUniforms + gl_MaxComputeAtomicCounters + gl_MaxComputeAtomicCounterBuffers; buffer ShaderStorageBlock { int value; float values[]; }; buffer InvalidShaderStorageBlock { float values[]; int value; } invalid; void main() { barrier(); memoryBarrier(); memoryBarrierAtomicCounter(); memoryBarrierBuffer(); memoryBarrierShared(); memoryBarrierImage(); groupMemoryBarrier(); value = int(values[gl_LocalInvocationIndex]); int a; if (a > 10) barrier(); } layout(location = 2) in vec3 v3; // ERROR in float f; // ERROR out float fo; // ERROR shared vec4 s; layout(location = 2) shared vec4 sl; // ERROR shared float fs = 4.2; // ERROR layout(local_size_y = 1) in; layout(local_size_y = 2) in; // ERROR, changing layout(local_size_y = 1) in; layout(local_size_x = 2, local_size_y = 3, local_size_z = 4) out; // ERROR int arrX[gl_WorkGroupSize.x]; int arrY[gl_WorkGroupSize.y]; int arrZ[gl_WorkGroupSize.z]; readonly buffer roblock { int value; float values[]; } ro; void foo() { ro.values[2] = 4.7; // ERROR, readonly ro.values.length(); barrier(); } uniform double roll; uniform writeonly image2D destTex; void fooaoeu() { ivec2 storePos = ivec2(gl_GlobalInvocationID.xy); double localCoef = length(vec2(ivec2(gl_LocalInvocationID.xy)-8)/8.0); dvec4 aa = dvec4(0.4, 0.2, 0.3, 0.4); double globalCoef = 1.0; int i = globalCoef; // ERROR, can't convert from double to int double di = i; } in inb { // ERROR int a; } inbi; out outb { // ERROR int a; } outbi; glslang-16.0.0/Test/430.vert000066400000000000000000000146761506534232700154010ustar00rootroot00000000000000#version 430 core layout(location = 3) vec4 v4; // ERROR layout(location = 4) uniform vec4 uv4; layout(location = 2) in inb1 { vec4 v; } b1; // ERROR layout(location = 2) out outb1 { vec4 v; } b2; // ERROR out gl_PerVertex { float gl_ClipDistance[]; }; void foo() { gl_ClipDistance[2] = 3.7; } struct sp { highp float f; in float g; // ERROR uniform float h; // ERROR invariant float i; // ERROR volatile float j; // ERROR layout(row_major) mat3 m3; // ERROR }; void foo3(invariant vec4 v4, // ERROR volatile vec3 v3, layout(location = 3) vec2 v2, // ERROR centroid vec3 cv3) // ERROR { } struct S { mat3x2 m[7]; // needs 7*3 locations float f; // needs 1 location }; // needs 22 locations layout(location = 10) out S cs[2]; // 10 through 10 + 2 * 22 - 1 = 53 layout(location = 54) out float cf; layout(location = 53) out float cg; // ERROR, collision at 31 layout(location = 10) in vec4 alias1; layout(location = 10) in vec4 alias2; // okay for vertex input on desktop out float gl_ClipDistance[17]; // ERROR, size too big // enhanced_layouts (most tests are in 440.*) layout(location = start*start - 2 - 4) in vec4 v6e; // ERROR layout(location = 28) in inblock2e { layout(location = 25) float f2; // ERROR } ininst2e; in ublock4e { layout(location = 50) float f1; // ERROR layout(location = 51) float f2; // ERROR } in4e; layout(align=16, std140) uniform ubl4e { int a; } inst4e;// ERROR layout(align=32) uniform ubl9e { // ERROR layout(offset=12, align=4) float f; // ERROR layout(offset=20) float g; // ERROR } inst9e; layout(std140) uniform blocke { vec4 a; layout(offset = 32) vec3 b; // ERROR } spinste; int aconste[gl_MaxTransformFeedbackBuffers]; // ERROR int bconste[gl_MaxTransformFeedbackInterleavedComponents]; // ERROR out bblck2 { layout(xfb_offset=64) vec4 bbv; // ERROR } bbinst2; layout(xfb_buffer = 3, xfb_stride = 64) out; // ERROR layout(xfb_buffer=2, xfb_offset=48, xfb_stride=80) out vec4 bge; // ERROR layout( xfb_offset=32, xfb_stride=64) out vec4 bhe; // ERROR layout(xfb_stride=80, xfb_buffer=2, xfb_offset=16) out bblck4e { // ERROR vec4 bbv1; vec4 bbv2; } bbinst4e; out bblck5e { layout(xfb_offset=0) vec4 bbv1; // ERROR layout(xfb_stride=64, xfb_buffer=3, xfb_offset=48) vec4 bbv2; // ERROR } bbinst5e; #extension GL_ARB_enhanced_layouts : enable layout(align=16, std140) uniform ubl4 { int a; } inst4; layout(std430) uniform; layout(align=32) uniform ubl9 { layout(offset=12, align=4) float f; layout(offset=20) float g; } inst9; layout(std140) uniform block { vec4 a; // a takes offsets 0-15 layout(offset = 32) vec3 b; // b takes offsets 32-43 } spinst; int aconst[gl_MaxTransformFeedbackBuffers]; int bconst[gl_MaxTransformFeedbackInterleavedComponents]; const int start2 = 5; layout(location = start2 * start2 - 2 - 4) in vec4 v6; layout(location = 28) in inblock2 { // ERROR, input block in vertex shader, other errors are valid checks still... bool b1; // ERROR float f1; layout(location = 25) float f2; } ininst2; in ublock4 { // ERROR, input block in vertex shader, other errors are valid checks still... layout(location = 50) float f1; layout(location = 51) float f2; } in4; out bblck2g { layout(xfb_offset=64) vec4 bbv; } bbinst2g; layout(xfb_buffer = 1, xfb_stride = 80) out; // default buffer is 3 layout(xfb_buffer=1, xfb_offset=48, xfb_stride=80) out vec4 bg; layout( xfb_offset=32, xfb_stride=80) out vec4 bh; layout(xfb_stride=80, xfb_buffer=1, xfb_offset=16) out bblck4 { vec4 bbv1; } bbinst4; out bblck5 { layout(xfb_offset=0) vec4 bbv1; layout(xfb_stride=80, xfb_buffer=1, xfb_offset=64) vec4 bbv2; } bbinst5; shared vec4 sharedv; // ERROR void fooBarrier() { barrier(); // ERROR memoryBarrier(); memoryBarrierAtomicCounter(); memoryBarrierBuffer(); memoryBarrierShared(); // ERROR memoryBarrierImage(); groupMemoryBarrier(); // ERROR } buffer vec4 v; // ERROR uniform sampler2DMS s2dms; uniform usampler2DMSArray us2dmsa; layout(rgba32i) uniform iimage2DMS ii2dms; layout(rgba32f) uniform image2DMSArray i2dmsa; void fooq() { int s = textureSamples(s2dms); // ERROR s += textureSamples(us2dmsa); // ERROR s += imageSamples(ii2dms); // ERROR s += imageSamples(i2dmsa); // ERROR } #extension GL_ARB_shader_texture_image_samples : enable void fooq2() { int s = textureSamples(s2dms); s += textureSamples(us2dmsa); s += imageSamples(ii2dms); s += imageSamples(i2dmsa); } uniform sampler1D samp1D; uniform usampler2D usamp2D; uniform isampler3D isamp3D; uniform isamplerCube isampCube; uniform isampler1DArray isamp1DA; uniform sampler2DArray samp2DA; uniform usamplerCubeArray usampCubeA; uniform sampler1DShadow samp1Ds; uniform sampler2DShadow samp2Ds; uniform samplerCubeShadow sampCubes; uniform sampler1DArrayShadow samp1DAs; uniform sampler2DArrayShadow samp2DAs; uniform samplerCubeArrayShadow sampCubeAs; uniform samplerBuffer sampBuf; uniform sampler2DRect sampRect; void qlod() { int levels; levels = textureQueryLevels(samp1D); levels = textureQueryLevels(usamp2D); levels = textureQueryLevels(isamp3D); levels = textureQueryLevels(isampCube); levels = textureQueryLevels(isamp1DA); levels = textureQueryLevels(samp2DA); levels = textureQueryLevels(usampCubeA); levels = textureQueryLevels(samp1Ds); levels = textureQueryLevels(samp2Ds); levels = textureQueryLevels(sampCubes); levels = textureQueryLevels(samp1DAs); levels = textureQueryLevels(samp2DAs); levels = textureQueryLevels(sampCubeAs); levels = textureQueryLevels(sampBuf); // ERROR levels = textureQueryLevels(sampRect); // ERROR } glslang-16.0.0/Test/430AofA.frag000066400000000000000000000071041506534232700160530ustar00rootroot00000000000000#version 430 float[4][5][6] many[1][2][3]; float gu[][7]; float gimp[][]; // ERROR, implicit inner float g4[4][7]; float g5[5][7]; float[4][7] foo(float a[5][7]) { float r[7]; r = a[2]; float[](a[0], a[1], r, a[3]); // ERROR, too few dims float[4][7][4](a[0], a[1], r, a[3]); // ERROR, too many dims return float[4][7](a[0], a[1], r, a[3]); return float[][](a[0], a[1], r, a[3]); return float[][7](a[0], a[1], a[2], a[3]); } void bar(float[5][7]) {} void main() { { float gu[3][4][2]; gu[2][4][1] = 4.0; // ERROR, overflow } vec4 ca4[3][2] = vec4[][](vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0))); vec4 caim[][2] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0))); vec4 caim2[][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0))); vec4 caim3[3][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0))); vec4 a4[3][2] = {vec4[](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)) }; vec4 aim[][2] = {vec4[2](vec4(4.0), vec4(2.0)), vec4[](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)) }; vec4 aim2[][] = {vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)), vec4[](vec4(4.0), vec4(2.0)) }; vec4 aim3[3][] = {vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)) }; vec4 bad2[3][] = {vec4[2](vec4(4.0), vec4(2.0)), // ERROR vec4[3](vec4(4.0), vec4(2.0), vec4(5.0)), vec4[2](vec4(4.0), vec4(2.0)) }; vec4 bad3[3][] = {vec4[3](vec4(4.0), vec4(2.0), vec4(5.0)), // ERROR vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)) }; vec4 bad4[4][] = {vec4[2](vec4(4.0), vec4(2.0)), // ERROR vec4[2](vec4(4.0), vec4(2.0)), vec4[2](vec4(4.0), vec4(2.0)) }; g4 = foo(g5); g5 = g4; // ERROR, wrong types gu = g4; // ERROR, not yet sized foo(gu); // ERROR, not yet sized bar(g5); if (foo(g5) == g4) ; if (foo(g5) == g5) // ERROR, different types ; float u[][7]; u[2][2] = 3.0; float u[5][7]; u[5][2] = 5.0; // ERROR foo(u); } void foo3() { float resize1[][5][7]; resize1.length(); // ERROR resize1[1][4][5] = 2.0; resize1.length(); // ERROR float resize1[3][5][7]; resize1.length(); // 3 in AST resize1[1].length(); // 5 in AST resize1[1][1].length(); // 7 in AST resize1[1][1][1].length(); // ERROR float resize2[][5][7]; float resize2[3][4][7]; // ERROR, inner dim change float resize3[][5][7]; float resize3[3][5][9]; // ERROR, inner dim changed float resize4[][5][7]; int resize4[3][5][7]; // ERROR, element type } glslang-16.0.0/Test/430scope.vert000066400000000000000000000026001506534232700164130ustar00rootroot00000000000000#version 430 core int f(int a, int b, int c) { int a = b; // ERROR, redefinition { float a = float(a) + 1.0; // okay } return a; } int f(int a, int b, int c); // okay to redeclare bool b; float b(int a); // ERROR: redefinition float c(int a); bool c; // ERROR: redefinition float f; // ERROR: redefinition float tan; // okay, hides built-in function float sin(float x); // okay, can redefine built-in functions float cos(float x) // okay, can redefine built-in functions { return 1.0; } bool radians(bool x) // okay, can overload built-in functions { return true; } invariant gl_Position; void main() { int g(); // okay g(); float sin; // okay sin; sin(0.7); // ERROR, use of hidden function f(1,2,3); float f; // hides f() f = 3.0; gl_Position = vec4(f); for (int f = 0; f < 10; ++f) ++f; int x = 1; { float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2 int z = z; // ERROR: z not previously defined. } { int x = x; // x is initialized to '1' } struct S { int x; }; { S S = S(0); // 'S' is only visible as a struct and constructor S.x; // 'S' is now visible as a variable } int degrees; degrees(3.2); // ERROR, use of hidden built-in function } glslang-16.0.0/Test/435.vert000066400000000000000000000000341506534232700153650ustar00rootroot00000000000000#version 435 void main() {}glslang-16.0.0/Test/440.frag000066400000000000000000000127741506534232700153360ustar00rootroot00000000000000#version 440 // Note 'location'-only tests for enhanced layouts are in 330.frag // Generic 'component' tests are in 440.vert // a consumes components 2 and 3 of location 4 layout(location = 4, component = 2) in vec2 a; // b consumes component 1 of location 4 layout(location = 4, component = 1) in float b; layout(location = 4, component = 2) in vec2 h; // ERROR, component overlap not okay for fragment in layout(location = 3, component = 2) in vec3 c; // ERROR: c overflows components 2 and 3 // e consumes beginning (components 0, 1 and 2) of each of 6 slots layout(location = 20, component = 0) in vec3 e[6]; // f consumes last component of the same 6 slots layout(location = 20, component = 3) in float f[6]; layout(location = 30, component = 3) out int be; layout(location = 30, component = 0) out vec3 bf; // ERROR, not the same basic type writeonly uniform; // ERROR readonly in; // ERROR flat out; // ERROR mediump uniform; layout(offset=12) uniform; // ERROR layout(offset=12) in; // ERROR layout(offset=12) out; // ERROR layout(align=16) uniform; // ERROR layout(align=16) in; // ERROR layout(align=16) out; // ERROR layout(offset=12) uniform ubl1 { int a; } inst1; // ERROR layout(offset=12) in inbl2 { int a; } inst2; // ERROR layout(offset=12) out inbl3 { int a; } inst3; // ERROR layout(align=16, std140) uniform ubl4 { int a; } inst4; layout(align=16) uniform ubl8 { int a; } inst8; // ERROR, no packing layout(align=16) in inbl5 { int a; } inst5; // ERROR layout(align=16) out inbl6 { int a; } inst6; // ERROR layout(offset=12) uniform vec4 v1; // ERROR layout(offset=12) in vec4 v2; // ERROR layout(offset=12) out vec4 v3; // ERROR layout(align=16) uniform vec4 v4; // ERROR layout(align=16) in vec4 v5; // ERROR layout(align=16) out vec4 v6; // ERROR layout(std140) in; // ERROR layout(std140) uniform vec4 v7; // ERROR layout(align=48) uniform ubl7 { // ERROR, not power of 2 layout(offset=12, align=4) float f; // ERROR, no packing } inst7; in ibl10 { layout(offset=12) float f; // ERROR layout(align=4) float g; // ERROR } inst10; layout(std430) uniform; layout(align=32) uniform ubl9 { float e; layout(offset=12, align=4) float f; layout(offset=20) float g; float h; } inst9; uniform ubl11 { layout(offset=12, align=4) float f; float g; } inst11; layout(std140) uniform block { vec4 a; // a takes offsets 0-15 layout(offset = 32) vec3 b; // b takes offsets 32-43 layout(offset = 40) vec2 c; // ERROR, lies within previous member layout(align = 6) double g; // ERROR, 6 is not a power of 2 layout(offset=68) double h; // ERROR, offset not aligned } specExampleErrors; layout(std140) uniform block2 { vec4 a; // a takes offsets 0-15 layout(offset = 32) vec3 b; // b takes offsets 32-43 layout(offset = 48) vec2 d; // d takes offsets 48-55 layout(align = 16) float e; // e takes offsets 64-67 layout(align = 2) double f; // f takes offsets 72-79 layout(offset = 80) float h; // h takes offsets 80-83 layout(align = 64) dvec3 i; // i takes offsets 128-151 layout(offset = 164, align = 8) float j; // j takes offsets 168-171 } specExample; layout(std430) buffer block430 { vec4 a; // a takes offsets 0-15 layout(offset = 32) vec3 b; // b takes offsets 32-43 layout(offset = 40) vec2 c; // ERROR, lies within previous member layout(align = 6) double g; // ERROR, 6 is not a power of 2 layout(offset=68) double h; // ERROR, offset not aligned layout(align = 0) double i; // ERROR, 0 not a power of 2 } specExampleErrors430; layout(std430) buffer block2430 { vec4 a; // a takes offsets 0-15 layout(offset = 32) vec3 b; // b takes offsets 32-43 layout(offset = 48) vec2 d; // d takes offsets 48-55 layout(align = 16) float e; // e takes offsets 64-67 layout(align = 2) double f; // f takes offsets 72-79 layout(offset = 80) float h; // h takes offsets 80-83 layout(align = 64) dvec3 i; // i takes offsets 128-151 layout(offset = 164, align = 8) float j; // j takes offsets 168-171 } specExample430; layout(std430, align = 128) buffer block24300 { vec4 a; vec3 b; vec2 d; float e; double f; float h; dvec3 i; } specExample4300; layout(std430, align = 128) buffer block24301 { vec4 a; vec3 b; vec2 d; layout(offset=388) float e; layout(align=8) double f; float h; dvec3 i; } specExample4301; int aconst[gl_MaxTransformFeedbackBuffers]; int bconst[gl_MaxTransformFeedbackInterleavedComponents]; sample in vec3 sampInArray[4]; void interp() { interpolateAtCentroid(sampInArray[2].xy); interpolateAtSample(sampInArray[2].x.x, 2); } int layer() { return gl_Layer; } // The std140 layout qualifier should NOT propagate all the way down to // the vec3. It is unnecessary and it breaks downstream AST consumers, // notably LunarGlass. struct PointLight_t { vec3 vPositionWs ; } ; layout( std140, row_major ) uniform PerViewLightData_t { PointLight_t g_pointLightData [ 128 ] ; } ; glslang-16.0.0/Test/440.vert000066400000000000000000000167501506534232700153750ustar00rootroot00000000000000#version 440 // Note 'location' tests for enhanced layouts are in 330.frag layout(location = 2, component = 2) in vec2 a; layout(location = 2, component = 1) in float b; layout(location = 3, component = 2) in vec3 c; // ERROR: c overflows components 2 and 3 layout(location = 0, component = 3) in float d[4]; layout(location = 4, component = 0) in vec3 e[5]; layout(location = 4, component = 3) in float f[5]; layout(location = 9, component = 4) in float g[6]; // ERROR, component too big layout(location = 4, component = 2) in vec2 h; // component overlap okay for vertex in layout(location = 3, component = 2) out vec2 i; layout(location = 3, component = 0) out vec2 j; layout(location = 4, component = 2) out vec2 k; layout(location = 4, component = 2) out vec2 m; // ERROR, component overlap layout(location = 2, component = 2) out vec2 n; layout(location = 2, component = 0) out vec3 p; // ERROR, component overlap layout(location = 10, component = 3) out float q[6]; layout(location = 10, component = 0) out vec3 r[6]; layout(location = 15, component = 3) out float s; // ERROR, overlap layout(location = 10, component = 1) out float t; // ERROR, overlap layout(location = 20, component = 2) out float u; layout(location = 20, component = 0) out float v; layout(location = 20, component = 3) out float w; layout(location = 20, component = 1) out vec2 x; // ERROR, overlap layout(location = 30, component = 3) out vec2 y; // ERROR, goes to component 4 layout(location = 31, component = 1) out vec4 z; // ERROR, goes to component 4 layout(location = 32, component = 1) out mat4 ba; // ERROR layout(location = 33, component = 1) out struct S {int a;} Ss; // ERROR layout(location = 34, component = 1) out bn { int a;} bb; // ERROR layout(component = 1) out float bc; // ERROR, no location out blockname { layout(location = 40, component = 2) out float u; layout(location = 40, component = 0) out float v; layout(location = 40, component = 3) out float w; layout(location = 40, component = 1) out vec2 x; // ERROR, overlap layout(location = 41, component = 3) out vec2 y; // ERROR, goes to component 4 layout(location = 42, component = 1) out vec4 z; // ERROR, goes to component 4 layout(location = 42, component = 1) out mat4 ba; // ERROR layout(location = 43, component = 1) out S Ss; // ERROR } bd; layout(location = 1, component = 1) out; // ERROR, no global setting layout(location = 50, component = 3) out int be; layout(location = 50, component = 0) out vec3 bf; layout(location = 51, component = 1) out double dfo; // ERROR, odd component layout(location = 52, component = 2) out dvec2 dvo; // ERROR, overflow layout(location = 53) out double dfo2; layout(location = 53, component = 2) out vec2 ffv2; // okay, fits layout(location = 54) out dvec4 dvec4out; // uses up location 55 too layout(location = 55) out float overf; // ERROR, collides with previous dvec4 layout(location = 56, component = 1) out vec2 df2o; layout(location = 56, component = 3) out float sf2o; layout(location = 57, component = 2) out vec2 dv3o; layout(location = 57, component = 3) out float sf4o; // ERROR, overlapping component layout(location=58) out flat dvec3 dv3o2; // uses part of location 59 layout(location=59, component=2) out flat double dfo3; // okay, fits layout(location=59, component=0) out flat double dfo4; // ERROR, overlaps the dvec3 in starting in 58 out bblck1 { vec4 bbv; } bbinst1; out bblck2 { layout(xfb_offset=64) vec4 bbv; } bbinst2; layout(xfb_buffer = 3, xfb_stride = 64) out; // default buffer is 3 out bblck3 { layout(xfb_offset=16) vec4 bbv; // in xfb_buffer 3 } bbinst3; uniform ubblck3 { layout(xfb_offset=16) vec4 bbv; // ERROR, not in a uniform } ubbinst3; layout(xfb_buffer=2, xfb_offset=48, xfb_stride=80) out vec4 bg; layout( xfb_offset=32, xfb_stride=64) out vec4 bh; layout(xfb_offset=48) out; // ERROR layout(xfb_stride=80, xfb_buffer=2, xfb_offset=16) out bblck4 { vec4 bbv1; vec4 bbv2; } bbinst4; out bblck5 { layout(xfb_offset=0) vec4 bbv1; layout(xfb_stride=64, xfb_buffer=3, xfb_offset=48) vec4 bbv2; layout(xfb_buffer=2) vec4 bbv3; // ERROR, wrong buffer } bbinst5; out layout(xfb_buffer=2) bblck6 { layout(xfb_offset=0) vec4 bbv1; layout(xfb_stride=64, xfb_buffer=3, xfb_offset=32) vec4 bbv2; // ERROR, overlap 32 from bh, and buffer contradiction layout(xfb_buffer=2, xfb_offset=0) vec4 bbv3; // ERROR, overlap 0 from bbinst5 layout(xfb_buffer=2) vec4 bbv5; layout(xfb_offset=24) float bbf6; // ERROR, overlap 24 from bbv1 in bbinst4 } bbinst6; layout(xfb_stride=48) out; // ERROR, stride of buffer 3 layout(xfb_buffer=1) out; // default buffer is 1 layout(xfb_offset=4) out float bj; layout(xfb_offset=0) out ivec2 bk; // ERROR, overlap 4 layout(xfb_buffer=3, xfb_stride=48) out; // ERROR, stride of buffer 3 (default is now 3) layout(xfb_stride=48) out float bl; // ERROR, stride of buffer 3 layout(xfb_stride=48) out bblck7 { // ERROR, stride of buffer 3 layout(xfb_stride=64) vec4 bbv1; layout(xfb_stride=32) vec4 bbv2; // ERROR, stride of buffer 3 } bbinst7; struct S5 { int i; // 4 bytes plus 4 byte hole double d; // 8 bytes float f; // 4 bytes }; // total size = 20 struct T { bool b; // 4 plus 4 byte hole S5 s; // 20 vec2 v2; // 8 }; // total size = 36 out layout(xfb_buffer=0, xfb_offset=0, xfb_stride=92) bblck8 { // ERROR, stride not multiple of 8 bool b; // offset 0 // ERROR, out block containing bool T t; // offset 8, size 40 int i; // offset 40 + 4 = 48 mat3x3 m3; // offset 52 float f; // offset 52 + 9*4 = 88 float g; // ERROR, overflow stride } bbinst8; out layout(xfb_buffer=4) bblck9 { layout(xfb_offset=1) bool b; // ERROR layout(xfb_offset=12) T t; // ERROR layout(xfb_offset=52) mat3x3 m3; // non-multiple of 8 okay layout(xfb_offset=90) int i; // ERROR layout(xfb_offset=98) double d; // ERROR layout(xfb_offset=108) S s; // non-multiple of 8 okay } bbinst9; layout(xfb_buffer=5, xfb_stride=6) out; // link ERROR, stride not multiple of 4 layout(xfb_offset=0) out float bm; layout(xfb_buffer=6, xfb_stride=2000) out; // ERROR, stride too big out layout(xfb_buffer=7, xfb_offset=0) bblck10 { // link ERROR, implicit stride too big dmat4x4 m1; dmat4x4 m2; float f; } bbinst10; layout(xfb_buffer = 3) out; layout(xfb_offset = 32) out gl_PerVertex { layout(xfb_buffer = 2) float gl_PointSize; // ERROR, change in xfb_buffer vec4 gl_Position; }; int drawParamsBad() { return gl_BaseVertexARB + gl_BaseInstanceARB + gl_DrawIDARB; // ERROR, extension not requested } #extension GL_ARB_shader_draw_parameters: enable int drawParams() { return gl_BaseVertexARB + gl_BaseInstanceARB + gl_DrawIDARB; gl_BaseVertexARB = 3; // ERROR, can't write to shader 'in' gl_BaseInstanceARB = 3; // ERROR, can't write to shader 'in' gl_DrawIDARB = 3; // ERROR, can't write to shader 'in' glBaseInstanceARB; // ERROR, not defined } glslang-16.0.0/Test/450.comp000066400000000000000000000003171506534232700153440ustar00rootroot00000000000000#version 450 core layout(local_size_x = 0) in; // ERROR, 0 not allowed layout(binding=10000) uniform atomic_uint; // ERROR void main() { shared float f; // ERROR shared must be global } glslang-16.0.0/Test/450.frag000066400000000000000000000052101506534232700153220ustar00rootroot00000000000000#version 450 core in float in1; in vec2 in2; in vec3 in3; in vec4 in4; void main() { vec2 v2 = dFdxFine(in2); vec3 v3 = dFdyCoarse(in3); vec4 v4 = fwidth(in4); v4 = dFdyFine(in4); v3 = dFdyFine(in3); float f = dFdx(in1) + dFdxFine(in1) + dFdxCoarse(in1); v4 = fwidthCoarse(in4) + fwidthFine(in4); float cull = gl_CullDistance[2]; float consts = gl_MaxCullDistances + gl_MaxCombinedClipAndCullDistances + gl_MaxSamples; if (gl_HelperInvocation) ++v4; int sum = gl_MaxVertexImageUniforms + gl_MaxFragmentImageUniforms + gl_MaxComputeImageUniforms + gl_MaxCombinedImageUniforms + gl_MaxCombinedShaderOutputResources; bool b1, b3, b; uint uin; bvec2 b2 = mix(bvec2(b1), bvec2(b3), bvec2(b)); uint um = mix(uin, uin, b); ivec3 im3 = mix(ivec3(uin), ivec3(uin), bvec3(b)); } uniform sampler2DMS s2dms; uniform usampler2DMSArray us2dmsa; layout(rgba32i) uniform iimage2DMS ii2dms; layout(rgba32f) uniform image2DMSArray i2dmsa; void foo() { int s = textureSamples(s2dms); s += textureSamples(us2dmsa); s += imageSamples(ii2dms); s += imageSamples(i2dmsa); float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5); } #extension GL_ARB_sparse_texture2: enable uniform sampler2D s2D; uniform isampler2DArray is2DArray; uniform sampler2DRectShadow s2DRectShadow; in flat ivec2 offsets[4]; in vec2 c2; in vec3 c3; void testOffsets() { vec4 texel = vec4(0.0); ivec4 itexel = ivec4(0); const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel); sparseTextureGatherOffsetsARB(is2DArray, c3, constOffsets, itexel, 2); sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, constOffsets, texel); sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel); // Error : Non constant offsets sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2); // Error : Non constant offsets sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel); // Error : Non constant offsets } in float gl_CullDistance[6]; float cull(int i) { return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i]; } layout(location = 6) in bName1 { float f; layout(location = 7) float g; mat4 m; } bInst1; layout(location = 12) in bName2 { float f; layout(location = 13) float g; // ERROR, location on array } bInst2[3]; layout(early_fragment_tests) in float f; // ERROR, must be standalone glslang-16.0.0/Test/450.geom000066400000000000000000000005421506534232700153350ustar00rootroot00000000000000#version 450 core in gl_PerVertex { float gl_CullDistance[3]; } gl_in[]; out gl_PerVertex { float gl_CullDistance[3]; }; layout(triangles) in; void main() { gl_in[3].gl_Position; // ERROR, out of range gl_CullDistance[2] = gl_in[1].gl_CullDistance[2]; } layout(points) in float f[3]; // ERROR, must be standalone glslang-16.0.0/Test/450.tesc000066400000000000000000000007631506534232700153510ustar00rootroot00000000000000#version 450 core in gl_PerVertex { float gl_CullDistance[3]; } gl_in[gl_MaxPatchVertices]; out gl_PerVertex { float gl_CullDistance[3]; } gl_out[4]; void main() { gl_out[gl_InvocationID].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2]; } layout(location = 4) out bName1 { float f; layout(location = 5) float g; } bInst1[2]; layout(location = 6) out bName2 { float f; layout(location = 7) float g; // ERROR, location on array } bInst2[2][3]; glslang-16.0.0/Test/450.tese000066400000000000000000000013011506534232700153400ustar00rootroot00000000000000#version 450 core in gl_PerVertex { float gl_CullDistance[3]; } gl_in[gl_MaxPatchVertices]; out gl_PerVertex { float gl_CullDistance[3]; }; void main() { gl_CullDistance[2] = gl_in[1].gl_CullDistance[2]; } layout(equal_spacing) in float f1[]; // ERROR, must be standalone layout(fractional_even_spacing) in float f2[]; // ERROR, must be standalone layout(fractional_odd_spacing) in float f3[]; // ERROR, must be standalone layout(cw) in float f4[]; // ERROR, must be standalone layout(ccw) in float f5[]; // ERROR, must be standalone layout(point_mode) in float f6[]; // ERROR, must be standalone glslang-16.0.0/Test/450.vert000066400000000000000000000027701506534232700153730ustar00rootroot00000000000000#version 450 core out gl_PerVertex { float gl_CullDistance[3]; }; void main() { gl_CullDistance[2] = 4.5; } out bool outb; // ERROR out sampler2D outo; // ERROR out float outa[4]; out float outaa[4][2]; struct S { float f; }; out S outs; out S[4] outasa; out S outsa[4]; struct SA { float f[4]; }; out SA outSA; struct SS { float f; S s; }; out SS outSS; layout(binding = 0) uniform atomic_uint aui; uint ui; void foo() { SS::f; atomicCounterAdd(aui, ui); // ERROR, need 4.6 atomicCounterSubtract(aui, ui); // ERROR, need 4.6 atomicCounterMin(aui, ui); // ERROR, need 4.6 atomicCounterMax(aui, ui); // ERROR, need 4.6 atomicCounterAnd(aui, ui); // ERROR, need 4.6 atomicCounterOr(aui, ui); // ERROR, need 4.6 atomicCounterXor(aui, ui); // ERROR, need 4.6 atomicCounterExchange(aui, ui); // ERROR, need 4.6 atomicCounterCompSwap(aui, ui, ui); // ERROR, need 4.6 int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID; // ERROR, need 4.6 bool b1; anyInvocation(b1); // ERROR, need 4.6 allInvocations(b1); // ERROR, need 4.6 allInvocationsEqual(b1); // ERROR, need 4.6 } ; // ERROR: no extraneous semicolons layout(location = 0) uniform locBlock { // ERROR, no location uniform block int a; }; layout(location = 0) buffer locBuffBlock { // ERROR, no location on buffer block int b; }; glslang-16.0.0/Test/460.frag000066400000000000000000000011701506534232700153240ustar00rootroot00000000000000#version 460 core struct S { float f; vec4 v; }; in S s; void main() { interpolateAtCentroid(s.v); bool b1; b1 = anyInvocation(b1); b1 = allInvocations(b1); b1 = allInvocationsEqual(b1); } void attExtBad() { // ERRORs, not enabled [[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { } [[flatten]] if (true) { } else { } } #extension GL_EXT_control_flow_attributes : enable void attExt() { [[dependency_length(-3)]] do { } while(true); // ERROR, not positive [[dependency_length(0)]] do { } while(true); // ERROR, not positive } glslang-16.0.0/Test/460.vert000066400000000000000000000004061506534232700153660ustar00rootroot00000000000000#version 460 core int i; ; // extraneous semicolon okay float f;;; void main() { bool b1; float array[int(mod(float (7.1), float (4.0)))]; b1 = anyInvocation(b1); b1 = allInvocations(b1); b1 = allInvocationsEqual(b1); } ; ; glslang-16.0.0/Test/BestMatchFunction.vert000066400000000000000000000011741506534232700204400ustar00rootroot00000000000000#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; } } glslang-16.0.0/Test/EndStreamPrimitive.geom000066400000000000000000000007341506534232700206030ustar00rootroot00000000000000#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); }glslang-16.0.0/Test/GL_ARB_bindless_texture.frag000066400000000000000000000036241506534232700214520ustar00rootroot00000000000000#version 460 compatibility #extension GL_ARB_bindless_texture: require #if !defined GL_ARB_bindless_texture # error GL_ARB_bindless_texture is not defined #elif GL_ARB_bindless_texture != 1 # error GL_ARB_bindless_texture is not equal to 1 #endif // Valid usage cases layout(bindless_sampler) uniform sampler2D s0; // case0: bindless layout in sampler2D s1; // case1: sampler as an input uniform uvec2 s2; // case2: uvec2 as sampler constructor uniform ivec2 s3; // case3: ivec2 as sampler constructor uniform int index; in sampler2D s4[2][3]; // case4: sampler arrays of arrays uniform BB {sampler2D s5;} bbs5[2]; // case5: uniform block member as a sampler in samplerBuffer s6; // case6: samplerBuffer input uniform UBO9 {samplerBuffer s7;}; // case7: samplerBuffer as an uniform block member buffer SSBO10 {samplerBuffer s8;}; // case8: samplerBuffer as an ssbo member layout(rgba8, bindless_image) in image2D i9; // case9: bindless image as an input uniform vec2 coord; // bindless coord 2-D uniform int icoord; // bindless coord 1-D out vec4 color0; out vec4 color1; out vec4 color2; out vec4 color3; out vec4 color4; out vec4 color5; out vec4 color6; out vec4 color7; out vec4 color8; out vec4 color9; void main() { color0 = texture(s0, coord); color1 = texture(s1, coord); color2 = texture(sampler2D(s2), coord); color3 = texture(sampler2D(s3), coord); color4 = texture(s4[index][index], coord); color5 = texture(bbs5[index].s5, coord); color6 = texelFetch(s6, icoord); color7 = texelFetch(s7, icoord); color8 = texelFetch(s8, icoord); color9 = imageLoad(i9, ivec2(0,0)); }glslang-16.0.0/Test/GL_ARB_draw_instanced.vert000066400000000000000000000010171506534232700211070ustar00rootroot00000000000000#version 150 #extension GL_ARB_draw_instanced : require #define ID gl_InstanceID uniform mat4 gtf_ModelViewProjectionMatrix; uniform vec3 instanceOffsets[3]; in vec4 va[gl_MaxVertexAttribs]; out vec4 color; void main (void) { vec4 vertex = vec4(va[0].xy / 3.0, va[0].zw) + vec4(instanceOffsets[ID], 1.0); color = vec4(0, 0, 0, 0); for (int i = 1; i < gl_MaxVertexAttribs; i++) color += va[i]; gl_Position = gtf_ModelViewProjectionMatrix * vertex; gl_PointSize = 1.0; } glslang-16.0.0/Test/GL_ARB_fragment_coord_conventions.vert000066400000000000000000000012011506534232700235330ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/GL_ARB_gpu_shader5.u2i.vert000066400000000000000000000002711506534232700210270ustar00rootroot00000000000000#version 150 #extension GL_ARB_gpu_shader5 : require uniform int u1; uniform int u2; out vec4 result; void main() { uint v = 0; v = uint(u2) - u1; // implicit conversions } glslang-16.0.0/Test/GL_ARB_texture_multisample.vert000066400000000000000000000014541506534232700222430ustar00rootroot00000000000000#version 140 #extension GL_ARB_texture_multisample : enable out float result; out int result1; out uint result2; uniform sampler2DMS data; uniform sampler2DMSArray data1; uniform isampler2DMS data2; uniform usampler2DMSArray data3; uniform usampler2DMS data4; uniform isampler2DMSArray data5; void main() { result = texelFetch(data, ivec2(0), 3).r; ivec2 temp = textureSize(data); result = texelFetch(data1, ivec3(0), 3).r; ivec3 temp1 = textureSize(data1); result1 = texelFetch(data2, ivec2(0), 3).r; temp = textureSize(data2); result2 = texelFetch(data3, ivec3(0), 3).r; temp1 = textureSize(data3); result2 = texelFetch(data4, ivec2(0), 3).r; temp = textureSize(data4); result1 = texelFetch(data5, ivec3(0), 3).r; temp1 = textureSize(data5); } glslang-16.0.0/Test/GL_EXT_draw_instanced.vert000066400000000000000000000010171506534232700211430ustar00rootroot00000000000000#version 120 #extension GL_EXT_draw_instanced : require #define ID gl_InstanceID uniform mat4 gtf_ModelViewProjectionMatrix; uniform vec3 instanceOffsets[3]; uniform vec4 va[gl_MaxVertexAttribs]; vec4 color; void main (void) { vec4 vertex = vec4(va[0].xy / 3.0, va[0].zw) + vec4(instanceOffsets[ID], 1.0); color = vec4(0, 0, 0, 0); for (int i = 1; i < gl_MaxVertexAttribs; i++) color += va[i]; gl_Position = gtf_ModelViewProjectionMatrix * vertex; gl_PointSize = 1.0; }glslang-16.0.0/Test/GL_EXT_shader_integer_mix.vert000066400000000000000000000004511506534232700220170ustar00rootroot00000000000000#version 330 #extension GL_EXT_shader_integer_mix: require #if !defined GL_EXT_shader_integer_mix # error GL_EXT_shader_integer_mix is not defined #elif GL_EXT_shader_integer_mix != 1 # error GL_EXT_shader_integer_mix is not equal to 1 #endif void main(void) { gl_Position = vec4(0); } glslang-16.0.0/Test/GL_EXT_texture_array.frag000066400000000000000000000012711506534232700210150ustar00rootroot00000000000000#version 110 #extension GL_EXT_texture_array : enable uniform sampler1DArray s1DA; uniform sampler2DArray s2DA; uniform sampler1DArrayShadow s1DAS; uniform sampler2DArrayShadow s2DAS; void foo() { float f; vec2 v2; vec3 v3; vec4 v4; v4 = texture1DArray(s1DA, v2); v4 = texture2DArray(s2DA, v3); v4 = shadow1DArray(s1DAS, v3); v4 = shadow2DArray(s2DAS, v4); v4 = texture1DArray(s1DA, v2, f); v4 = texture2DArray(s2DA, v3, f); v4 = shadow1DArray(s1DAS, v3, f); v4 = texture1DArrayLod(s1DA, v2, f); v4 = texture2DArrayLod(s2DA, v3, f); v4 = shadow1DArrayLod(s1DAS, v3, f); } void main() { foo(); } glslang-16.0.0/Test/Operations.frag000066400000000000000000000056661506534232700171540ustar00rootroot00000000000000#version 130 uniform ivec4 uiv4; uniform vec4 uv4; uniform bool ub; uniform bvec4 ub41, ub42; uniform float uf; uniform int ui; uniform uvec4 uuv4; uniform uint uui; void main() { vec4 v; float f; bool b; bvec4 bv4; int i; uint u; // floating point v = radians(uv4); v += degrees(v); v += (i = ui*ui, sin(v)); v += cos(v); v += tan(v); v += asin(v); v += acos(v); v += atan(v); v += sinh(v); v += cosh(v); v += tanh(v); v += asinh(v); v += acosh(v); v += atanh(v); v += pow(v, v); v += exp(v); v += log(v); v += exp2(v); v += log2(v); v += sqrt(v); v += inversesqrt(v); v += abs(v); v += sign(v); v += floor(v); v += trunc(v); v += round(v); v += roundEven(v); v += ceil(v); v += fract(v); v += mod(v, v); v += mod(v, v.x); v += modf(v, v); v += min(v, uv4); v += max(v, uv4); v += clamp(v, uv4, uv4); v += mix(v,v,v); v += mix(v,v,bv4); v += intBitsToFloat(ivec4(i)); v += uintBitsToFloat(uv4); v += fma(v,v,v); v += frexp(v); v += ldexp(v); v += unpackUnorm2x16(v); v += unpackUnorm4x8(v); v += unpackSnorm4x8(v); v += step(v,v); v += smoothstep(v,v,v); v += step(uf,v); v += smoothstep(uf,uf,v); v += normalize(v); v += faceforward(v, v, v); v += reflect(v, v); v += refract(v, v, uf); v += dFdx(v); v += dFdy(v); v += fwidth(v); //noise*(v); // signed integer i += abs(ui); i += sign(i); i += min(i, ui); i += max(i, ui); i += clamp(i, ui, ui); floatsBitsToInt(v); packUnorm2x16(v); packUnorm4x8(v); packSnorm4x8(v); // unsigned integer u = abs(uui); u += sign(u); u += min(u, uui); u += max(u, uui); u += clamp(u, uui, uui); u += floatsBitToInt(v); u += packUnorm2x16(v); u += packUnorm4x8(v); i += uui & i; // ERRORs, no int/uint conversions before 400 i += uui ^ i; i += i | uui; // bool b = isnan(uf); b = isinf(v.y); b = any(lessThan(v, uv4)); b = (b && any(lessThanEqual(v, uv4))); b = (b && any(greaterThan(v, uv4))); b = (b && any(greaterThanEqual(v, uv4))); b = (b && any(equal(ub41, ub42))); b = (b && any(notEqual(ub41, ub42))); b = (b && any(ub41)); b = (b && all(ub41)); b = (b && any(not(ub41))); i = ((i + ui) * i - ui) / i; i = i % ui; if (i == ui || i != ui && i == ui ^^ i != 2) ++i; f = ((uf + uf) * uf - uf) / uf; f += length(v); f += distance(v, v); f += dot(v, v); f += dot(f, uf); f += cross(v.xyz, v.xyz).x; if (f == uf || f != uf && f != 2.0) ++f; i &= ui; i |= 0x42; i ^= ui; i %= 17; i >>= 2; i <<= ui; i = ~i; b = !b; gl_FragColor = b ? vec4(i) + vec4(f) + v : v; } glslang-16.0.0/Test/UTF8BOM.vert000066400000000000000000000002111506534232700161330ustar00rootroot00000000000000/* glslangValidator.exe --glsl-version 410 -V -S vert -o UTF8BOM.vert.out UTF8BOM.vert */ #version 110 void main() { } glslang-16.0.0/Test/aggOps.frag000066400000000000000000000014211506534232700162320ustar00rootroot00000000000000#version 130 uniform sampler2D sampler; varying mediump vec2 coord; varying vec4 u, w; struct s1 { int i; float f; }; struct s2 { int i; float f; s1 s1_1; }; uniform s1 foo1; uniform s2 foo2a; uniform s2 foo2b; void main() { vec4 v; s1 a[3], b[3]; a = s1[3](s1(int(u.x), u.y), s1(int(u.z), u.w), s1(14, 14.0)); b = s1[3](s1(17, 17.0), s1(int(w.x), w.y), s1(int(w.z), w.w)); if (foo2a == foo2b) v = texture2D(sampler, coord); else v = texture2D(sampler, 2.0*coord); if (u == v) v *= 3.0; if (u != v) v *= 4.0; if (coord == v.yw) v *= 5.0; if (a == b) v *= 6.0; if (a != b) v *= 7.0; gl_FragColor = v; } glslang-16.0.0/Test/always-discard.frag000066400000000000000000000012301506534232700177170ustar00rootroot00000000000000#version 110 varying vec2 tex_coord; void main (void) { vec4 white = vec4(1.0); vec4 black = vec4(0.2); vec4 color = white; // First, cut out our circle float x = tex_coord.x*2.0 - 1.0; float y = tex_coord.y*2.0 - 1.0; float radius = sqrt(x*x + y*y); if (radius > 1.0) { if (radius > 1.1) { ++color; } gl_FragColor = color; if (radius > 1.2) { ++color; } } discard; // If we're near an edge, darken us a tiny bit if (radius >= 0.75) color -= abs(pow(radius, 16.0)/2.0); gl_FragColor = color; } glslang-16.0.0/Test/always-discard2.frag000066400000000000000000000004651506534232700200120ustar00rootroot00000000000000#version 110 varying vec2 tex_coord; void main (void) { vec4 white = vec4(1.0); vec4 black = vec4(0.2); vec4 color = white; // First, cut out our circle float x = tex_coord.x*2.0 - 1.0; float y = tex_coord.y*2.0 - 1.0; discard; gl_FragColor = color; } glslang-16.0.0/Test/array.frag000066400000000000000000000041171506534232700161350ustar00rootroot00000000000000#version 130 float gu[]; float g4[4]; float g5[5]; uniform int a; float[4] foo(float a[5]) { return float[](a[0], a[1], a[2], a[3]); } void bar(float[5]) {} void main() { { float gu[2]; // okay, new scope gu[2] = 4.0; // ERROR, overflow } gu[2] = 4.0; // okay gu[3] = 3.0; gu[a] = 5.0; // ERROR g4 = foo(g5); g5 = g4; // ERROR gu = g4; // ERROR foo(gu); // ERROR bar(g5); if (float[4](1.0, 2.0, 3.0, 4.0) == g4) gu[0] = 2.0; float u[]; u[2] = 3.0; // okay float u[5]; u[5] = 5.0; // ERROR foo(u); // okay gl_FragData[1000] = vec4(1.0); // ERROR gl_FragData[-1] = vec4(1.0); // ERROR gl_FragData[3] = vec4(1.0); const int ca[] = int[](3, 2); int sum = ca[0]; sum += ca[1]; sum += ca[2]; // ERROR const int ca3[3] = int[](3, 2); // ERROR int ica[] = int[](3, 2); int ica3[3] = int[](3, 2); // ERROR ica[3.1] = 3; // ERROR ica[u[1]] = 4; // ERROR } int[] foo213234(); // ERROR int foo234234(float[]); // ERROR int foo234235(vec2[] v); // ERROR vec3 guns[]; float f = guns[7]; void foo() { int uns[]; uns[3] = 40; uns[1] = 30; guns[2] = vec3(2.4); float unsf[]; bar(unsf); // ERROR } float[] foo2() // ERROR { float f[]; return f; float g[9]; return g; // ERROR } float gUnusedUnsized[]; void foo3() { float resize1[]; resize1[2] = 4.0; resize1.length(); // ERROR float resize1[3]; resize1.length(); float resize2[]; resize2[5] = 4.0; float resize2[5]; // should be ERROR, but is not resize2.length(); resize2[5] = 4.0; // ERROR } int[] i = int[](); // ERROR, need constructor arguments float emptyA[]; float b = vec4(emptyA); // ERROR, array can't be a constructor argument uniform sampler2D s2d[]; void foo4() { s2d[a]; // ERROR, can't variably index unsized array float local[] = gUnusedUnsized; // ERROR, can initialize with runtime-sized array } glslang-16.0.0/Test/array100.frag000066400000000000000000000017451506534232700163620ustar00rootroot00000000000000#version 100 float gu[]; // ERROR float g4[4]; float g5[5]; uniform int a; float[4] foo(float[5] a) // ERROR // ERROR { return float[](a[0], a[1], a[2], a[3]); // ERROR } void bar(float[5]) {} void main() { { float gu[2]; // okay, new scope gu[2] = 4.0; // ERROR, overflow } g4 = foo(g5); // ERROR g5 = g4; // ERROR gu = g4; // ERROR foo(gu); // ERROR bar(g5); if (float[4](1.0, 2.0, 3.0, 4.0) == g4) // ERROR gu[0] = 2.0; float u[5]; u[5] = 5.0; // ERROR foo(u); // okay gl_FragData[1000] = vec4(1.0); // ERROR gl_FragData[-1] = vec4(1.0); // ERROR gl_FragData[3] = vec4(1.0); } struct SA { vec3 v3; vec2 v2[4]; }; struct SB { vec4 v4; SA sa; }; SB bar9() { SB s; return s; // ERROR } void bar10(SB s) // okay { } void bar11() { SB s1, s2; s1 = s2; // ERROR bar10(s1); s2 = bar9(); // ERROR SB initSb = s1; // ERROR } glslang-16.0.0/Test/atomicAdd.comp000066400000000000000000000004001506534232700167120ustar00rootroot00000000000000#version 320 es layout(local_size_x = 1) in; struct structType{ int y[3]; }; layout(std430) buffer t2 { structType f; } t; buffer coherent Buffer { int x; }; int z; void main() { atomicAdd(x, 1); atomicAdd(t.f.y[1], 1); atomicAdd(z, 1); }glslang-16.0.0/Test/atomicCounterARBOps.vert000066400000000000000000000014231506534232700207000ustar00rootroot00000000000000#version 450 core #extension GL_ARB_shader_atomic_counters: enable #extension GL_ARB_shader_atomic_counter_ops:enable layout(binding = 0) uniform atomic_uint counter; out highp vec4 vsColor; void main(){ vec4 outColor = vec4(1.0); uint ret; ret = atomicCounterAddARB(counter, 4u); ret = atomicCounterSubtractARB(counter, 4u); ret = atomicCounterMinARB(counter, 4u); ret = atomicCounterMaxARB(counter, 4u); ret = atomicCounterAndARB(counter, 4u); ret = atomicCounterOrARB(counter, 4u); ret = atomicCounterXorARB(counter, 4u); ret = atomicCounterExchangeARB(counter, 4u); ret = atomicCounterCompSwapARB(counter, 4u, 4u); uint after = atomicCounter(counter); if (after == ret) outColor = vec4(0.0); vsColor = outColor; }glslang-16.0.0/Test/atomic_uint.frag000066400000000000000000000027351506534232700173360ustar00rootroot00000000000000#version 420 core layout(binding = 0) uniform atomic_uint counter; layout(binding = 0, offset = 9) uniform atomic_uint counter; uint func(atomic_uint c) { return atomicCounterIncrement(c); } uint func2(out atomic_uint c) // ERROR { return counter; // ERROR, type mismatch return atomicCounter(counter); } void main() { atomic_uint non_uniform_counter; // ERROR uint val = atomicCounter(counter); atomicCounterDecrement(counter); } layout(binding = 1, offset = 3) uniform atomic_uint countArr[4]; uniform int i; void opac() { counter + counter; // ERROR -counter; // ERROR int a[3]; a[counter]; // ERROR countArr[2]; countArr[i]; counter = 4; // ERROR } in atomic_uint acin; // ERROR atomic_uint acg; // ERROR uniform atomic_uint; uniform atomic_uint aNoBind; // ERROR, no binding layout(binding=0, offset=32) uniform atomic_uint aOffset; layout(binding=0, offset=4) uniform atomic_uint; layout(binding=0) uniform atomic_uint bar3; // offset is 4 layout(binding=0) uniform atomic_uint ac[2]; // offset = 8 layout(binding=0) uniform atomic_uint ad; // offset = 20 layout(offset=8) uniform atomic_uint bar4; // ERROR, no binding layout(binding = 0, offset = 12) uniform atomic_uint overlap; // ERROR, overlapping offsets layout(binding = 20) uniform atomic_uint bigBind; // ERROR, binding too big glslang-16.0.0/Test/badChars.frag000066400000000000000000000000661506534232700165250ustar00rootroot00000000000000#ifþ #endif #error AÿB #if #endif int aÿ #define A "ÿglslang-16.0.0/Test/badMacroArgs.frag000066400000000000000000000000431506534232700173360ustar00rootroot00000000000000#version 400 #define m(a) a m()glslang-16.0.0/Test/bar.h000066400000000000000000000000131506534232700150620ustar00rootroot00000000000000float4 i1; glslang-16.0.0/Test/baseLegalResults/000077500000000000000000000000001506534232700174145ustar00rootroot00000000000000glslang-16.0.0/Test/baseLegalResults/hlsl.aliasOpaque.frag.out000066400000000000000000000044771506534232700243040ustar00rootroot00000000000000hlsl.aliasOpaque.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 89 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 62 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 47 "gss" Name 51 "gtex" Name 62 "@entryPointOutput" Decorate 47(gss) Binding 0 Decorate 47(gss) DescriptorSet 0 Decorate 51(gtex) Binding 2 Decorate 51(gtex) DescriptorSet 0 Decorate 62(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeSampler 7: TypeFloat 32 8: TypeImage 7(float) 2D sampled format:Unknown 11: TypeVector 7(float) 4 32: TypeSampledImage 8 34: TypeVector 7(float) 2 35: 7(float) Constant 1045220557 36: 7(float) Constant 1050253722 37: 34(fvec2) ConstantComposite 35 36 43: TypePointer UniformConstant 6 47(gss): 43(ptr) Variable UniformConstant 50: TypePointer UniformConstant 8 51(gtex): 50(ptr) Variable UniformConstant 54: 7(float) Constant 1077936128 61: TypePointer Output 11(fvec4) 62(@entryPointOutput): 61(ptr) Variable Output 4(main): 2 Function None 3 5: Label 71: 6 Load 47(gss) 73: 8 Load 51(gtex) 86: 32 SampledImage 73 71 87: 11(fvec4) ImageSampleImplicitLod 86 37 88: 11(fvec4) VectorTimesScalar 87 54 Store 62(@entryPointOutput) 88 Return FunctionEnd glslang-16.0.0/Test/baseLegalResults/hlsl.flattenOpaque.frag.out000066400000000000000000000066261506534232700246460ustar00rootroot00000000000000hlsl.flattenOpaque.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 190 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 120 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 38 "tex" Name 82 "s.s2D" Name 97 "s2.s2D" Name 100 "s2.tex" Name 120 "@entryPointOutput" Decorate 38(tex) Binding 0 Decorate 38(tex) DescriptorSet 0 Decorate 82(s.s2D) Binding 1 Decorate 82(s.s2D) DescriptorSet 0 Decorate 97(s2.s2D) Binding 2 Decorate 97(s2.s2D) DescriptorSet 0 Decorate 100(s2.tex) Binding 3 Decorate 100(s2.tex) DescriptorSet 0 Decorate 120(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeSampler 9: TypeFloat 32 10: TypeVector 9(float) 4 15: TypeVector 9(float) 2 22: TypeImage 9(float) 2D sampled format:Unknown 37: TypePointer UniformConstant 22 38(tex): 37(ptr) Variable UniformConstant 45: TypeSampledImage 22 47: 9(float) Constant 1045220557 48: 9(float) Constant 1050253722 49: 15(fvec2) ConstantComposite 47 48 81: TypePointer UniformConstant 6 82(s.s2D): 81(ptr) Variable UniformConstant 97(s2.s2D): 81(ptr) Variable UniformConstant 100(s2.tex): 37(ptr) Variable UniformConstant 119: TypePointer Output 10(fvec4) 120(@entryPointOutput): 119(ptr) Variable Output 4(main): 2 Function None 3 5: Label 135: 6 Load 82(s.s2D) 160: 22 Load 38(tex) 163: 45 SampledImage 160 135 164: 10(fvec4) ImageSampleImplicitLod 163 49 139: 6 Load 82(s.s2D) 167: 22 Load 38(tex) 170: 45 SampledImage 167 139 172: 10(fvec4) ImageSampleImplicitLod 170 49 143: 10(fvec4) FAdd 164 172 144: 6 Load 97(s2.s2D) 146: 22 Load 100(s2.tex) 179: 45 SampledImage 146 144 180: 10(fvec4) ImageSampleImplicitLod 179 49 150: 10(fvec4) FAdd 143 180 151: 6 Load 97(s2.s2D) 153: 22 Load 100(s2.tex) 187: 45 SampledImage 153 151 189: 10(fvec4) ImageSampleImplicitLod 187 49 157: 10(fvec4) FAdd 150 189 Store 120(@entryPointOutput) 157 Return FunctionEnd glslang-16.0.0/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out000066400000000000000000000054201506534232700255220ustar00rootroot00000000000000hlsl.flattenOpaqueInit.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 139 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 80 Source HLSL 500 Name 4 "main" Name 43 "g_tInputTexture_sampler" Name 47 "g_tInputTexture" Name 80 "@entryPointOutput" Decorate 43(g_tInputTexture_sampler) Binding 0 Decorate 43(g_tInputTexture_sampler) DescriptorSet 0 Decorate 47(g_tInputTexture) Binding 1 Decorate 47(g_tInputTexture) DescriptorSet 0 Decorate 80(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeSampler 7: TypeFloat 32 8: TypeImage 7(float) 2D sampled format:Unknown 11: TypeVector 7(float) 4 31: TypeSampledImage 8 33: TypeVector 7(float) 2 34: 7(float) Constant 1050253722 35: 7(float) Constant 1053609165 36: 33(fvec2) ConstantComposite 34 35 37: 7(float) Constant 0 42: TypePointer UniformConstant 6 43(g_tInputTexture_sampler): 42(ptr) Variable UniformConstant 46: TypePointer UniformConstant 8 47(g_tInputTexture): 46(ptr) Variable UniformConstant 79: TypePointer Output 11(fvec4) 80(@entryPointOutput): 79(ptr) Variable Output 4(main): 2 Function None 3 5: Label 91: 6 Load 43(g_tInputTexture_sampler) 92: 8 Load 47(g_tInputTexture) 113: 31 SampledImage 92 91 114: 11(fvec4) ImageSampleExplicitLod 113 36 Lod 37 118: 6 Load 43(g_tInputTexture_sampler) 120: 8 Load 47(g_tInputTexture) 129: 31 SampledImage 120 118 130: 11(fvec4) ImageSampleExplicitLod 129 36 Lod 37 100: 11(fvec4) FAdd 114 130 137: 31 SampledImage 92 91 138: 11(fvec4) ImageSampleExplicitLod 137 36 Lod 37 105: 11(fvec4) FAdd 100 138 Store 80(@entryPointOutput) 105 Return FunctionEnd glslang-16.0.0/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out000066400000000000000000000044501506534232700262020ustar00rootroot00000000000000hlsl.flattenOpaqueInitMix.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 99 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 57 Source HLSL 500 Name 4 "main" Name 44 "g_tInputTexture_sampler" Name 47 "g_tInputTexture" Name 57 "@entryPointOutput" Decorate 44(g_tInputTexture_sampler) Binding 0 Decorate 44(g_tInputTexture_sampler) DescriptorSet 0 Decorate 47(g_tInputTexture) Binding 1 Decorate 47(g_tInputTexture) DescriptorSet 0 Decorate 57(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeSampler 7: TypeFloat 32 8: TypeImage 7(float) 2D sampled format:Unknown 11: TypeVector 7(float) 4 28: TypeSampledImage 8 36: TypeVector 7(float) 2 38: 7(float) Constant 0 43: TypePointer UniformConstant 6 44(g_tInputTexture_sampler): 43(ptr) Variable UniformConstant 46: TypePointer UniformConstant 8 47(g_tInputTexture): 46(ptr) Variable UniformConstant 49: 7(float) Constant 1056964608 56: TypePointer Output 11(fvec4) 57(@entryPointOutput): 56(ptr) Variable Output 98: 36(fvec2) ConstantComposite 49 49 4(main): 2 Function None 3 5: Label 64: 6 Load 44(g_tInputTexture_sampler) 65: 8 Load 47(g_tInputTexture) 75: 28 SampledImage 65 64 81: 11(fvec4) ImageSampleExplicitLod 75 98 Lod 38 Store 57(@entryPointOutput) 81 Return FunctionEnd glslang-16.0.0/Test/baseLegalResults/hlsl.flattenSubset.frag.out000066400000000000000000000042511506534232700246510ustar00rootroot00000000000000hlsl.flattenSubset.frag // Module Version 10000 // 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" 50 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 21 "samp" Name 33 "tex" Name 50 "@entryPointOutput" Decorate 21(samp) Binding 0 Decorate 21(samp) DescriptorSet 0 Decorate 33(tex) Binding 1 Decorate 33(tex) DescriptorSet 0 Decorate 50(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 13: TypeSampler 20: TypePointer UniformConstant 13 21(samp): 20(ptr) Variable UniformConstant 31: TypeImage 6(float) 2D sampled format:Unknown 32: TypePointer UniformConstant 31 33(tex): 32(ptr) Variable UniformConstant 37: TypeSampledImage 31 39: TypeVector 6(float) 2 40: 6(float) Constant 1056964608 41: 39(fvec2) ConstantComposite 40 40 49: TypePointer Output 7(fvec4) 50(@entryPointOutput): 49(ptr) Variable Output 4(main): 2 Function None 3 5: Label 58: 13 Load 21(samp) 62: 31 Load 33(tex) 65: 37 SampledImage 62 58 66: 7(fvec4) ImageSampleImplicitLod 65 41 Store 50(@entryPointOutput) 66 Return FunctionEnd glslang-16.0.0/Test/baseLegalResults/hlsl.flattenSubset2.frag.out000066400000000000000000000023241506534232700247320ustar00rootroot00000000000000hlsl.flattenSubset2.frag // Module Version 10000 // 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" 52 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 52 "@entryPointOutput" Decorate 52(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 43: 6(float) Constant 0 44: 7(fvec4) ConstantComposite 43 43 43 43 51: TypePointer Output 7(fvec4) 52(@entryPointOutput): 51(ptr) Variable Output 4(main): 2 Function None 3 5: Label Store 52(@entryPointOutput) 44 Return FunctionEnd glslang-16.0.0/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out000066400000000000000000000137431506534232700256560ustar00rootroot00000000000000hlsl.intrinsics.evalfns.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 274 Capability Shader Capability InterpolationFunction 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 138 142 146 150 154 157 161 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 138 "inF1" Name 142 "inF2" Name 146 "inF3" Name 150 "inF4" Name 154 "inI2" Name 157 "i.vPos" Name 161 "@entryPointOutput" Decorate 138(inF1) Location 0 Decorate 142(inF2) Location 1 Decorate 146(inF3) Location 2 Decorate 150(inF4) Location 3 Decorate 154(inI2) Flat Decorate 154(inI2) Location 4 Decorate 157(i.vPos) Location 5 Decorate 161(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 8: TypeVector 6(float) 2 10: TypeVector 6(float) 3 12: TypeVector 6(float) 4 14: TypeInt 32 1 15: TypeVector 14(int) 2 30: 6(float) Constant 3204448256 31: 6(float) Constant 3179282432 32: 8(fvec2) ConstantComposite 30 31 36: 6(float) Constant 0 37: 6(float) Constant 1031798784 38: 8(fvec2) ConstantComposite 36 37 42: 6(float) Constant 1044381696 43: 6(float) Constant 3200253952 44: 8(fvec2) ConstantComposite 42 43 48: 6(float) Constant 1054867456 49: 8(fvec2) ConstantComposite 48 30 53: 14(int) Constant 28 64: TypeInt 32 0 65: 64(int) Constant 3 137: TypePointer Input 6(float) 138(inF1): 137(ptr) Variable Input 141: TypePointer Input 8(fvec2) 142(inF2): 141(ptr) Variable Input 145: TypePointer Input 10(fvec3) 146(inF3): 145(ptr) Variable Input 149: TypePointer Input 12(fvec4) 150(inF4): 149(ptr) Variable Input 153: TypePointer Input 15(ivec2) 154(inI2): 153(ptr) Variable Input 157(i.vPos): 141(ptr) Variable Input 160: TypePointer Output 12(fvec4) 161(@entryPointOutput): 160(ptr) Variable Output 273: 15(ivec2) ConstantComposite 53 53 4(main): 2 Function None 3 5: Label 155: 15(ivec2) Load 154(inI2) 183: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 138(inF1) 32 185: 8(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 142(inF2) 38 187: 10(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 146(inF3) 44 189: 12(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 150(inF4) 49 193: 15(ivec2) ShiftLeftLogical 155 273 195: 15(ivec2) ShiftRightArithmetic 193 273 196: 8(fvec2) ConvertSToF 195 197: 8(fvec2) VectorTimesScalar 196 37 198: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 138(inF1) 197 200: 6(float) FAdd 183 198 202: 6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 138(inF1) 65 204: 6(float) FAdd 200 202 206: 8(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 142(inF2) 65 208: 8(fvec2) FAdd 185 206 210: 10(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 146(inF3) 65 212: 10(fvec3) FAdd 187 210 214: 12(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 150(inF4) 65 216: 12(fvec4) FAdd 189 214 219: 14(int) CompositeExtract 155 0 220: 64(int) Bitcast 219 221: 6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 138(inF1) 220 223: 6(float) FAdd 204 221 225: 6(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 138(inF1) 227: 6(float) FAdd 223 225 229: 8(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 142(inF2) 231: 8(fvec2) FAdd 208 229 233: 10(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 146(inF3) 235: 10(fvec3) FAdd 212 233 237: 12(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 150(inF4) 239: 12(fvec4) FAdd 216 237 242: 8(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 157(i.vPos) 38 244: 8(fvec2) FAdd 231 242 247: 8(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 157(i.vPos) 65 249: 8(fvec2) FAdd 244 247 252: 8(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 157(i.vPos) 254: 8(fvec2) FAdd 249 252 257: 6(float) CompositeExtract 254 1 259: 6(float) CompositeExtract 235 2 261: 6(float) CompositeExtract 239 3 262: 12(fvec4) CompositeConstruct 227 257 259 261 Store 161(@entryPointOutput) 262 Return FunctionEnd glslang-16.0.0/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out000066400000000000000000000077731506534232700260300ustar00rootroot00000000000000hlsl.partialFlattenLocal.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 164 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 86 89 Source HLSL 500 Name 4 "main" Name 86 "pos" Name 89 "@entryPointOutput" Decorate 86(pos) Location 0 Decorate 89(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 14: TypeVector 6(float) 3 15: TypeInt 32 0 16: 15(int) Constant 3 17: TypeArray 14(fvec3) 16 18: TypeVector 6(float) 2 19: 15(int) Constant 2 20: TypeArray 18(fvec2) 19 21: TypeInt 32 1 25: 21(int) Constant 0 31: 21(int) Constant 1 32: 6(float) Constant 0 33: 14(fvec3) ConstantComposite 32 32 32 34: TypePointer Function 14(fvec3) 37: 6(float) Constant 1065353216 38: 18(fvec2) ConstantComposite 32 37 39: TypePointer Function 18(fvec2) 42: TypePointer Function 6(float) 54: TypeBool 64: 15(int) Constant 0 67: 15(int) Constant 1 85: TypePointer Input 7(fvec4) 86(pos): 85(ptr) Variable Input 88: TypePointer Output 7(fvec4) 89(@entryPointOutput): 88(ptr) Variable Output 135: TypePointer Function 17 137: TypePointer Function 20 4(main): 2 Function None 3 5: Label 138: 137(ptr) Variable Function 136: 135(ptr) Variable Function 87: 7(fvec4) Load 86(pos) 141: 34(ptr) AccessChain 136 25 Store 141 33 142: 39(ptr) AccessChain 138 25 Store 142 38 Branch 104 104: Label 163: 21(int) Phi 25 5 123 108 107: 54(bool) SLessThan 163 31 LoopMerge 124 108 None BranchConditional 107 108 124 108: Label 143: 39(ptr) AccessChain 138 163 112: 18(fvec2) Load 143 144: 34(ptr) AccessChain 136 163 114: 14(fvec3) Load 144 115: 18(fvec2) VectorShuffle 114 114 0 1 116: 18(fvec2) FAdd 115 112 145: 42(ptr) AccessChain 136 163 64 118: 6(float) CompositeExtract 116 0 Store 145 118 146: 42(ptr) AccessChain 136 163 67 120: 6(float) CompositeExtract 116 1 Store 146 120 123: 21(int) IAdd 163 31 Branch 104 124: Label 148: 17 Load 136 162: 14(fvec3) CompositeExtract 148 0 129: 6(float) CompositeExtract 162 0 130: 6(float) CompositeExtract 162 1 131: 6(float) CompositeExtract 162 2 132: 7(fvec4) CompositeConstruct 129 130 131 32 133: 7(fvec4) FAdd 87 132 Store 89(@entryPointOutput) 133 Return FunctionEnd glslang-16.0.0/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out000066400000000000000000000024651506534232700260350ustar00rootroot00000000000000hlsl.partialFlattenMixed.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 32 35 Source HLSL 500 Name 4 "main" Name 32 "pos" Name 35 "@entryPointOutput" Decorate 32(pos) Location 0 Decorate 35(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 31: TypePointer Input 7(fvec4) 32(pos): 31(ptr) Variable Input 34: TypePointer Output 7(fvec4) 35(@entryPointOutput): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label 33: 7(fvec4) Load 32(pos) Store 35(@entryPointOutput) 33 Return FunctionEnd glslang-16.0.0/Test/baseResults/000077500000000000000000000000001506534232700164475ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/100.frag.out000066400000000000000000000717161506534232700204320ustar00rootroot00000000000000100.frag ERROR: 0:3: '{ } style initializers' : not supported with this profile: es ERROR: 0:3: 'initializer' : not supported for this version or the enabled extensions ERROR: 0:3: 'array initializer' : not supported for this version or the enabled extensions ERROR: 0:4: '#version' : must occur first in shader ERROR: 0:7: 'attribute' : not supported in this stage: fragment ERROR: 0:7: 'float' : type requires declaration of default precision qualifier ERROR: 0:9: '=' : cannot convert from ' const int' to ' global mediump float' ERROR: 0:11: 'uniform block' : not supported for this version or the enabled extensions ERROR: 0:19: 'foo' : no matching overloaded function found ERROR: 0:20: 'bit shift left' : not supported for this version or the enabled extensions ERROR: 0:21: 'bit shift right' : not supported for this version or the enabled extensions ERROR: 0:22: 'array comparison' : not supported for this version or the enabled extensions ERROR: 0:24: 'bitwise and' : not supported for this version or the enabled extensions ERROR: 0:25: '%' : not supported for this version or the enabled extensions ERROR: 0:26: 'bitwise inclusive or' : not supported for this version or the enabled extensions ERROR: 0:27: 'bit-shift right assign' : not supported for this version or the enabled extensions ERROR: 0:28: 'bit-shift left assign' : not supported for this version or the enabled extensions ERROR: 0:29: '%=' : not supported for this version or the enabled extensions ERROR: 0:36: 'array assignment' : not supported for this version or the enabled extensions ERROR: 0:37: 'array comparison' : not supported for this version or the enabled extensions ERROR: 0:38: 'array comparison' : not supported for this version or the enabled extensions ERROR: 0:40: 'switch' : Reserved word. ERROR: 0:40: 'switch statements' : not supported for this version or the enabled extensions ERROR: 0:45: '' : array size required ERROR: 0:47: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:49: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:50: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:56: 'invariant' : not allowed in nested scope ERROR: 0:56: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:57: 'invariant' : not allowed in nested scope ERROR: 0:57: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:59: 'invariant' : not allowed in nested scope ERROR: 0:59: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:63: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:64: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:66: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: glob2D ERROR: 0:69: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: v2D ERROR: 0:71: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: vary2D ERROR: 0:75: 'in for stage inputs' : not supported for this version or the enabled extensions ERROR: 0:77: 'invariant' : can only apply to an output, or to an input in a non-vertex stage ERROR: 0:75: 'g' : cannot use storage or interpolation qualifiers on structure members ERROR: 0:76: 'h' : cannot use storage or interpolation qualifiers on structure members ERROR: 0:77: 'i' : cannot use invariant qualifier on structure members ERROR: 0:80: 'sampler3D' : Reserved word. ERROR: 0:80: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:91: 'dFdx' : required extension not requested: GL_OES_standard_derivatives ERROR: 0:92: 'dFdy' : required extension not requested: GL_OES_standard_derivatives ERROR: 0:93: 'fwidth' : required extension not requested: GL_OES_standard_derivatives ERROR: 0:103: 'gl_FragDepth' : undeclared identifier ERROR: 0:104: 'gl_FragDepthEXT' : required extension not requested: GL_EXT_frag_depth ERROR: 0:111: 'gl_FragDepth' : undeclared identifier ERROR: 0:134: 'texture3D' : no matching overloaded function found ERROR: 0:135: 'texture2DProjLod' : no matching overloaded function found ERROR: 0:137: 'bitwise not' : not supported for this version or the enabled extensions ERROR: 0:138: 'bitwise inclusive or' : not supported for this version or the enabled extensions ERROR: 0:139: 'bitwise and' : not supported for this version or the enabled extensions ERROR: 0:145: 'a' : redefinition ERROR: 0:147: 'texture2DProjGradEXT' : required extension not requested: GL_EXT_shader_texture_lod ERROR: 0:151: 'floating-point suffix' : not supported for this version or the enabled extensions ERROR: 0:152: 'floating-point suffix' : not supported for this version or the enabled extensions ERROR: 0:167: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 2 ERROR: 0:170: 'multiple prototypes for same function' : not supported for this version or the enabled extensions ERROR: 0:177: 'multiple prototypes for same function' : not supported for this version or the enabled extensions ERROR: 0:179: 'fragment-shader struct input' : not supported for this version or the enabled extensions ERROR: 0:183: 'v' : illegal use of type 'void' ERROR: 0:184: 'void' : cannot be an argument type except for '(void)' ERROR: 0:185: 'v' : illegal use of type 'void' ERROR: 0:185: 'void' : cannot be an argument type except for '(void)' ERROR: 0:190: '.' : cannot apply to an array: y ERROR: 0:191: '.' : cannot apply to an array: zy ERROR: 0:192: '.' : cannot apply to an array: nothing ERROR: 0:193: '.length' : not supported for this version or the enabled extensions ERROR: 0:194: '.' : cannot apply to an array: method ERROR: 0:194: 'a' : can't use function syntax on variable ERROR: 0:207: 'gl_SecondaryFragColorEXT' : required extension not requested: GL_EXT_blend_func_extended ERROR: 0:208: 'gl_SecondaryFragDataEXT' : required extension not requested: GL_EXT_blend_func_extended ERROR: 0:208: 'gl_MaxDualSourceDrawBuffersEXT' : required extension not requested: GL_EXT_blend_func_extended ERROR: 0:227: 'non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)' : not supported for this version or the enabled extensions ERROR: 0:235: '#define' : names containing consecutive underscores are reserved, and an error if version < 300: A__B ERROR: 0:236: 'a__b' : identifiers containing consecutive underscores ("__") are reserved, and an error if version < 300 ERROR: 0:3000: '#error' : line of this error should be 3000 ERROR: 0:3002: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 82 compilation errors. No code generated. Shader version: 100 Requested GL_EXT_blend_func_extended Requested GL_EXT_frag_depth Requested GL_EXT_shader_non_constant_global_initializers Requested GL_EXT_shader_texture_lod Requested GL_OES_EGL_image_external Requested GL_OES_standard_derivatives Requested GL_OES_texture_3D ERROR: node is still EOpNull! 0:3 Sequence 0:3 move second child to first child ( temp 3-element array of mediump int) 0:3 'a' ( global 3-element array of mediump int) 0:3 Constant: 0:3 2 (const int) 0:3 3 (const int) 0:3 4 (const int) 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:19 Sequence 0:19 Constant: 0:19 0.000000 0:20 Sequence 0:20 move second child to first child ( temp mediump int) 0:20 's' ( temp mediump int) 0:20 Constant: 0:20 16 (const int) 0:21 move second child to first child ( temp mediump int) 0:21 's' ( temp mediump int) 0:21 Constant: 0:21 4 (const int) 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Compare Equal ( temp bool) 0:22 'a' ( global 3-element array of mediump int) 0:22 'a' ( global 3-element array of mediump int) 0:22 true case is null 0:24 move second child to first child ( temp mediump int) 0:24 'b' ( temp mediump int) 0:24 bitwise and ( temp mediump int) 0:24 'c' ( temp mediump int) 0:24 Constant: 0:24 4 (const int) 0:25 move second child to first child ( temp mediump int) 0:25 'b' ( temp mediump int) 0:25 mod ( temp mediump int) 0:25 'c' ( temp mediump int) 0:25 Constant: 0:25 4 (const int) 0:26 move second child to first child ( temp mediump int) 0:26 'b' ( temp mediump int) 0:26 inclusive-or ( temp mediump int) 0:26 'c' ( temp mediump int) 0:26 Constant: 0:26 4 (const int) 0:27 right shift second child into first child ( temp mediump int) 0:27 'b' ( temp mediump int) 0:27 Constant: 0:27 2 (const int) 0:28 left shift second child into first child ( temp mediump int) 0:28 'b' ( temp mediump int) 0:28 Constant: 0:28 2 (const int) 0:29 mod second child into first child ( temp mediump int) 0:29 'b' ( temp mediump int) 0:29 Constant: 0:29 3 (const int) 0:36 move second child to first child ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:36 's1' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:36 's2' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:37 Test condition and select ( temp void) 0:37 Condition 0:37 Compare Equal ( temp bool) 0:37 's1' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:37 's2' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:37 true case is null 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Not Equal ( temp bool) 0:38 's1' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:38 's2' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:38 true case is null 0:40 'b' ( temp mediump int) 0:54 Function Definition: foo10( ( global void) 0:54 Function Parameters: 0:67 Function Definition: f11(s21; ( global void) 0:67 Function Parameters: 0:67 'p2d' ( in lowp sampler2D) 0:87 Function Definition: foo234( ( global void) 0:87 Function Parameters: 0:89 Sequence 0:89 texture ( global highp 4-component vector of float) 0:89 's3D2' ( uniform highp sampler3D) 0:89 Constant: 0:89 0.200000 0:89 0.200000 0:89 0.200000 0:89 Constant: 0:89 0.200000 0:90 textureProj ( global highp 4-component vector of float) 0:90 's3D2' ( uniform highp sampler3D) 0:90 direct index ( smooth temp mediump 4-component vector of float) 0:90 'v' ( smooth in 3-element array of mediump 4-component vector of float) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0.400000 0:91 dPdx ( global mediump 4-component vector of float) 0:91 direct index ( smooth temp mediump 4-component vector of float) 0:91 'v' ( smooth in 3-element array of mediump 4-component vector of float) 0:91 Constant: 0:91 0 (const int) 0:92 Constant: 0:92 0.000000 0:93 fwidth ( global mediump float) 0:93 'f13' ( invariant global mediump float) 0:98 Function Definition: foo236( ( global void) 0:98 Function Parameters: 0:100 Sequence 0:100 dPdx ( global mediump 4-component vector of float) 0:100 direct index ( smooth temp mediump 4-component vector of float) 0:100 'v' ( smooth in 3-element array of mediump 4-component vector of float) 0:100 Constant: 0:100 0 (const int) 0:101 Constant: 0:101 0.000000 0:102 fwidth ( global mediump float) 0:102 'f13' ( invariant global mediump float) 0:103 move second child to first child ( temp mediump float) 0:103 'gl_FragDepth' ( temp mediump float) 0:103 'f13' ( invariant global mediump float) 0:104 move second child to first child ( temp highp float) 0:104 'gl_FragDepthEXT' ( gl_FragDepth highp float FragDepth) 0:104 'f13' ( invariant global mediump float) 0:109 Function Definition: foo239( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 move second child to first child ( temp mediump float) 0:111 'gl_FragDepth' ( temp mediump float) 0:111 'f13' ( invariant global mediump float) 0:112 move second child to first child ( temp highp float) 0:112 'gl_FragDepthEXT' ( gl_FragDepth highp float FragDepth) 0:112 'f13' ( invariant global mediump float) 0:119 Function Definition: foo245( ( global void) 0:119 Function Parameters: 0:121 Sequence 0:121 texture ( global lowp 4-component vector of float) 0:121 'sExt' ( uniform lowp samplerExternalOES) 0:121 Constant: 0:121 0.200000 0:121 0.200000 0:122 textureProj ( global lowp 4-component vector of float) 0:122 'sExt' ( uniform lowp samplerExternalOES) 0:122 Construct vec3 ( temp lowp 3-component vector of float) 0:122 'f13' ( invariant global mediump float) 0:123 textureProj ( global lowp 4-component vector of float, operation at mediump) 0:123 'sExt' ( uniform lowp samplerExternalOES) 0:123 direct index ( smooth temp mediump 4-component vector of float) 0:123 'v' ( smooth in 3-element array of mediump 4-component vector of float) 0:123 Constant: 0:123 2 (const int) 0:130 Function Definition: foo246( ( global void) 0:130 Function Parameters: 0:132 Sequence 0:132 texture ( global mediump 4-component vector of float) 0:132 'mediumExt' ( uniform mediump samplerExternalOES) 0:132 Constant: 0:132 0.200000 0:132 0.200000 0:133 textureProj ( global highp 4-component vector of float) 0:133 'highExt' ( uniform highp samplerExternalOES) 0:133 direct index ( smooth temp mediump 4-component vector of float) 0:133 'v' ( smooth in 3-element array of mediump 4-component vector of float) 0:133 Constant: 0:133 2 (const int) 0:134 Constant: 0:134 0.000000 0:135 Constant: 0:135 0.000000 0:137 Bitwise not ( temp mediump int) 0:137 'a' ( temp mediump int) 0:138 inclusive-or ( temp mediump int) 0:138 'a' ( temp mediump int) 0:138 'a' ( temp mediump int) 0:139 bitwise and ( temp mediump int) 0:139 'a' ( temp mediump int) 0:139 'a' ( temp mediump int) 0:145 Function Definition: foo203940(i1;f1;f1; ( global mediump int) 0:145 Function Parameters: 0:145 'a' ( in mediump int) 0:145 'b' ( in mediump float) 0:147 Sequence 0:147 textureProjGrad ( global lowp 4-component vector of float, operation at mediump) 0:147 's2Dg' ( uniform lowp sampler2D) 0:147 Construct vec3 ( temp mediump 3-component vector of float) 0:147 'f13' ( invariant global mediump float) 0:147 'uv2' ( invariant uniform mediump 2-component vector of float) 0:147 'uv2' ( invariant uniform mediump 2-component vector of float) 0:148 Branch: Return with expression 0:148 'a' ( in mediump int) 0:151 Sequence 0:151 move second child to first child ( temp mediump float) 0:151 'f123' ( global mediump float) 0:151 Constant: 0:151 4.000000 0:152 Sequence 0:152 move second child to first child ( temp mediump float) 0:152 'f124' ( global mediump float) 0:152 Constant: 0:152 50000000000.000000 0:158 Function Definition: foo323433( ( global void) 0:158 Function Parameters: 0:160 Sequence 0:160 textureLod ( global lowp 4-component vector of float, operation at mediump) 0:160 's2Dg' ( uniform lowp sampler2D) 0:160 'uv2' ( invariant uniform mediump 2-component vector of float) 0:160 'f13' ( invariant global mediump float) 0:161 textureProjGrad ( global lowp 4-component vector of float, operation at mediump) 0:161 's2Dg' ( uniform lowp sampler2D) 0:161 Construct vec3 ( temp mediump 3-component vector of float) 0:161 'f13' ( invariant global mediump float) 0:161 'uv2' ( invariant uniform mediump 2-component vector of float) 0:161 'uv2' ( invariant uniform mediump 2-component vector of float) 0:162 textureGrad ( global lowp 4-component vector of float, operation at mediump) 0:162 's2Dg' ( uniform lowp sampler2D) 0:162 'uv2' ( invariant uniform mediump 2-component vector of float) 0:162 'uv2' ( invariant uniform mediump 2-component vector of float) 0:162 'uv2' ( invariant uniform mediump 2-component vector of float) 0:163 textureGrad ( global lowp 4-component vector of float) 0:163 'sCube' ( uniform lowp samplerCube) 0:163 Construct vec3 ( temp lowp 3-component vector of float) 0:163 'f13' ( invariant global mediump float) 0:163 Construct vec3 ( temp lowp 3-component vector of float) 0:163 'f13' ( invariant global mediump float) 0:163 Construct vec3 ( temp lowp 3-component vector of float) 0:163 'f13' ( invariant global mediump float) 0:167 Function Definition: fgfg(f1;i1; ( global mediump int) 0:167 Function Parameters: 0:167 'f' ( in mediump float) 0:167 'i' ( in highp int) 0:167 Sequence 0:167 Branch: Return with expression 0:167 Constant: 0:167 2 (const int) 0:173 Function Definition: gggf(f1; ( global mediump int) 0:173 Function Parameters: 0:173 'f' ( in mediump float) 0:173 Sequence 0:173 Branch: Return with expression 0:173 Constant: 0:173 2 (const int) 0:175 Function Definition: agggf(f1; ( global mediump int) 0:175 Function Parameters: 0:175 'f' ( in mediump float) 0:175 Sequence 0:175 Branch: Return with expression 0:175 Constant: 0:175 2 (const int) 0:187 Function Definition: badswizzle( ( global void) 0:187 Function Parameters: 0:? Sequence 0:190 'a' ( temp 5-element array of mediump 3-component vector of float) 0:191 'a' ( temp 5-element array of mediump 3-component vector of float) 0:192 'a' ( temp 5-element array of mediump 3-component vector of float) 0:193 Constant: 0:193 5 (const int) 0:194 Constant: 0:194 0.000000 0:199 Function Definition: fooinittest( ( global mediump float) 0:199 Function Parameters: 0:201 Sequence 0:201 Branch: Return with expression 0:201 Function Call: fooinit( ( global mediump float) 0:205 Function Definition: blendFuncFail( ( global void) 0:205 Function Parameters: 0:207 Sequence 0:207 move second child to first child ( temp mediump 4-component vector of float) 0:207 'gl_SecondaryFragColorEXT' ( out mediump 4-component vector of float SecondaryFragColorEXT) 0:207 Constant: 0:207 1.000000 0:207 1.000000 0:207 1.000000 0:207 1.000000 0:208 move second child to first child ( temp mediump 4-component vector of float) 0:208 direct index ( temp mediump 4-component vector of float SecondaryFragDataEXT) 0:208 'gl_SecondaryFragDataEXT' ( out 1-element array of mediump 4-component vector of float SecondaryFragDataEXT) 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 0.100000 0:208 0.100000 0:208 0.100000 0:208 0.100000 0:211 Function Definition: blendFunc( ( global void) 0:211 Function Parameters: 0:213 Sequence 0:213 move second child to first child ( temp mediump 4-component vector of float) 0:213 'gl_SecondaryFragColorEXT' ( out mediump 4-component vector of float SecondaryFragColorEXT) 0:213 Constant: 0:213 1.000000 0:213 1.000000 0:213 1.000000 0:213 1.000000 0:214 move second child to first child ( temp mediump 4-component vector of float) 0:214 direct index ( temp mediump 4-component vector of float SecondaryFragDataEXT) 0:214 'gl_SecondaryFragDataEXT' ( out 1-element array of mediump 4-component vector of float SecondaryFragDataEXT) 0:214 Constant: 0:214 0 (const int) 0:214 Constant: 0:214 0.100000 0:214 0.100000 0:214 0.100000 0:214 0.100000 0:222 Function Definition: fooinit( ( global mediump float) 0:222 Function Parameters: 0:224 Sequence 0:224 Branch: Return with expression 0:224 Constant: 0:224 12.000000 0:227 Sequence 0:227 move second child to first child ( temp mediump int) 0:227 'init1' ( global mediump int) 0:227 Test condition and select ( temp mediump int) 0:227 Condition 0:227 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:227 true case 0:227 Constant: 0:227 1 (const int) 0:227 false case 0:227 Constant: 0:227 2 (const int) 0:233 Sequence 0:233 move second child to first child ( temp mediump int) 0:233 'init2' ( global mediump int) 0:233 Test condition and select ( temp mediump int) 0:233 Condition 0:233 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:233 true case 0:233 Constant: 0:233 1 (const int) 0:233 false case 0:233 Constant: 0:233 2 (const int) 0:? Linker Objects 0:? 'a' ( global 3-element array of mediump int) 0:? 'uint' ( global mediump int) 0:? 'v' ( smooth in 3-element array of mediump 4-component vector of float) 0:? 'f' ( invariant global mediump float) 0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump int x}) 0:? 'fa' ( global unsized 1-element array of mediump float) 0:? 'f13' ( invariant global mediump float) 0:? 'fi' ( invariant temp mediump float) 0:? 'av' ( invariant smooth in mediump 4-component vector of float) 0:? 'uv2' ( invariant uniform mediump 2-component vector of float) 0:? 'uv3' ( invariant uniform mediump 3-component vector of float) 0:? 'glob2D' ( global lowp sampler2D) 0:? 'vary2D' ( smooth in lowp sampler2D) 0:? 's3D' ( uniform mediump sampler3D) 0:? 's3D2' ( uniform highp sampler3D) 0:? 'sExt' ( uniform lowp samplerExternalOES) 0:? 'mediumExt' ( uniform mediump samplerExternalOES) 0:? 'highExt' ( uniform highp samplerExternalOES) 0:? 's2Dg' ( uniform lowp sampler2D) 0:? 'f123' ( global mediump float) 0:? 'f124' ( global mediump float) 0:? 'sCube' ( uniform lowp samplerCube) 0:? 's' ( smooth in structure{ global mediump float f}) 0:? 'fi1' ( const mediump float) 0:? 3.000000 0:? 'fi2' ( const mediump float) 0:? 4.000000 0:? 'fi3' ( const mediump float) 0:? 5.000000 0:? 'init1' ( global mediump int) 0:? 'init2' ( global mediump int) 0:? 'a__b' ( global mediump int) Linked fragment stage: Shader version: 100 Requested GL_EXT_blend_func_extended Requested GL_EXT_frag_depth Requested GL_EXT_shader_non_constant_global_initializers Requested GL_EXT_shader_texture_lod Requested GL_OES_EGL_image_external Requested GL_OES_standard_derivatives Requested GL_OES_texture_3D ERROR: node is still EOpNull! 0:3 Sequence 0:3 move second child to first child ( temp 3-element array of mediump int) 0:3 'a' ( global 3-element array of mediump int) 0:3 Constant: 0:3 2 (const int) 0:3 3 (const int) 0:3 4 (const int) 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:19 Sequence 0:19 Constant: 0:19 0.000000 0:20 Sequence 0:20 move second child to first child ( temp mediump int) 0:20 's' ( temp mediump int) 0:20 Constant: 0:20 16 (const int) 0:21 move second child to first child ( temp mediump int) 0:21 's' ( temp mediump int) 0:21 Constant: 0:21 4 (const int) 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Compare Equal ( temp bool) 0:22 'a' ( global 3-element array of mediump int) 0:22 'a' ( global 3-element array of mediump int) 0:22 true case is null 0:24 move second child to first child ( temp mediump int) 0:24 'b' ( temp mediump int) 0:24 bitwise and ( temp mediump int) 0:24 'c' ( temp mediump int) 0:24 Constant: 0:24 4 (const int) 0:25 move second child to first child ( temp mediump int) 0:25 'b' ( temp mediump int) 0:25 mod ( temp mediump int) 0:25 'c' ( temp mediump int) 0:25 Constant: 0:25 4 (const int) 0:26 move second child to first child ( temp mediump int) 0:26 'b' ( temp mediump int) 0:26 inclusive-or ( temp mediump int) 0:26 'c' ( temp mediump int) 0:26 Constant: 0:26 4 (const int) 0:27 right shift second child into first child ( temp mediump int) 0:27 'b' ( temp mediump int) 0:27 Constant: 0:27 2 (const int) 0:28 left shift second child into first child ( temp mediump int) 0:28 'b' ( temp mediump int) 0:28 Constant: 0:28 2 (const int) 0:29 mod second child into first child ( temp mediump int) 0:29 'b' ( temp mediump int) 0:29 Constant: 0:29 3 (const int) 0:36 move second child to first child ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:36 's1' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:36 's2' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:37 Test condition and select ( temp void) 0:37 Condition 0:37 Compare Equal ( temp bool) 0:37 's1' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:37 's2' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:37 true case is null 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Not Equal ( temp bool) 0:38 's1' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:38 's2' ( temp structure{ temp mediump float f, temp 10-element array of mediump float a}) 0:38 true case is null 0:40 'b' ( temp mediump int) 0:151 Sequence 0:151 move second child to first child ( temp mediump float) 0:151 'f123' ( global mediump float) 0:151 Constant: 0:151 4.000000 0:152 Sequence 0:152 move second child to first child ( temp mediump float) 0:152 'f124' ( global mediump float) 0:152 Constant: 0:152 50000000000.000000 0:227 Sequence 0:227 move second child to first child ( temp mediump int) 0:227 'init1' ( global mediump int) 0:227 Test condition and select ( temp mediump int) 0:227 Condition 0:227 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:227 true case 0:227 Constant: 0:227 1 (const int) 0:227 false case 0:227 Constant: 0:227 2 (const int) 0:233 Sequence 0:233 move second child to first child ( temp mediump int) 0:233 'init2' ( global mediump int) 0:233 Test condition and select ( temp mediump int) 0:233 Condition 0:233 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:233 true case 0:233 Constant: 0:233 1 (const int) 0:233 false case 0:233 Constant: 0:233 2 (const int) 0:? Linker Objects 0:? 'a' ( global 3-element array of mediump int) 0:? 'uint' ( global mediump int) 0:? 'v' ( smooth in 3-element array of mediump 4-component vector of float) 0:? 'f' ( invariant global mediump float) 0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump int x}) 0:? 'fa' ( global 1-element array of mediump float) 0:? 'f13' ( invariant global mediump float) 0:? 'fi' ( invariant temp mediump float) 0:? 'av' ( invariant smooth in mediump 4-component vector of float) 0:? 'uv2' ( invariant uniform mediump 2-component vector of float) 0:? 'uv3' ( invariant uniform mediump 3-component vector of float) 0:? 'glob2D' ( global lowp sampler2D) 0:? 'vary2D' ( smooth in lowp sampler2D) 0:? 's3D' ( uniform mediump sampler3D) 0:? 's3D2' ( uniform highp sampler3D) 0:? 'sExt' ( uniform lowp samplerExternalOES) 0:? 'mediumExt' ( uniform mediump samplerExternalOES) 0:? 'highExt' ( uniform highp samplerExternalOES) 0:? 's2Dg' ( uniform lowp sampler2D) 0:? 'f123' ( global mediump float) 0:? 'f124' ( global mediump float) 0:? 'sCube' ( uniform lowp samplerCube) 0:? 's' ( smooth in structure{ global mediump float f}) 0:? 'fi1' ( const mediump float) 0:? 3.000000 0:? 'fi2' ( const mediump float) 0:? 4.000000 0:? 'fi3' ( const mediump float) 0:? 5.000000 0:? 'init1' ( global mediump int) 0:? 'init2' ( global mediump int) 0:? 'a__b' ( global mediump int) glslang-16.0.0/Test/baseResults/100Limits.vert.out000066400000000000000000001004131506534232700216400ustar00rootroot00000000000000100Limits.vert Shader version: 100 0:? Sequence 0:15 Function Definition: foo(f1; ( global void) 0:15 Function Parameters: 0:15 'a' ( inout highp float) 0:17 Function Definition: bar( ( global highp int) 0:17 Function Parameters: 0:19 Sequence 0:19 Branch: Return with expression 0:19 Constant: 0:19 1 (const int) 0:22 Function Definition: main( ( global void) 0:22 Function Parameters: 0:24 Sequence 0:24 Loop with condition tested first 0:24 Loop Condition 0:24 Compare Less Than ( temp bool) 0:24 'ga' ( global highp int) 0:24 'gb' ( global highp int) 0:24 No loop body 0:26 Loop with condition not tested first 0:26 Loop Condition 0:26 Constant: 0:26 false (const bool) 0:26 No loop body 0:28 Sequence 0:28 Loop with condition tested first 0:28 No loop condition 0:28 No loop body 0:29 Sequence 0:29 Loop with condition tested first 0:29 Loop Condition 0:29 Compare Equal ( temp bool) 0:29 'ga' ( global highp int) 0:29 'gb' ( global highp int) 0:29 No loop body 0:30 Sequence 0:30 Loop with condition tested first 0:30 No loop condition 0:30 No loop body 0:30 Loop Terminal Expression 0:30 Post-Increment ( temp highp float) 0:30 'f' ( global highp float) 0:31 Sequence 0:31 move second child to first child ( temp highp int) 0:31 'ga' ( global highp int) 0:31 Constant: 0:31 0 (const int) 0:31 Loop with condition tested first 0:31 No loop condition 0:31 No loop body 0:32 Sequence 0:32 Sequence 0:32 move second child to first child ( temp bool) 0:32 'a' ( temp bool) 0:32 Constant: 0:32 false (const bool) 0:32 Loop with condition tested first 0:32 No loop condition 0:32 No loop body 0:33 Sequence 0:33 Sequence 0:33 move second child to first child ( temp highp float) 0:33 'a' ( temp highp float) 0:33 Constant: 0:33 0.000000 0:33 Loop with condition tested first 0:33 Loop Condition 0:33 Compare Equal ( temp bool) 0:33 'a' ( temp highp float) 0:33 sine ( global highp float) 0:33 'f' ( global highp float) 0:33 No loop body 0:34 Sequence 0:34 Sequence 0:34 move second child to first child ( temp highp int) 0:34 'a' ( temp highp int) 0:34 Constant: 0:34 0 (const int) 0:34 Loop with condition tested first 0:34 Loop Condition 0:34 Compare Less Than ( temp bool) 0:34 'a' ( temp highp int) 0:34 Constant: 0:34 10 (const int) 0:34 No loop body 0:34 Loop Terminal Expression 0:34 multiply second child into first child ( temp highp int) 0:34 'a' ( temp highp int) 0:34 Constant: 0:34 2 (const int) 0:35 Sequence 0:35 Sequence 0:35 move second child to first child ( temp highp int) 0:35 'a' ( temp highp int) 0:35 Constant: 0:35 0 (const int) 0:35 Loop with condition tested first 0:35 Loop Condition 0:35 Compare Less Than or Equal ( temp bool) 0:35 'a' ( temp highp int) 0:35 Constant: 0:35 20 (const int) 0:35 Loop Body 0:35 Pre-Decrement ( temp highp int) 0:35 'a' ( temp highp int) 0:35 Loop Terminal Expression 0:35 Post-Increment ( temp highp int) 0:35 'a' ( temp highp int) 0:36 Sequence 0:36 Sequence 0:36 move second child to first child ( temp highp int) 0:36 'a' ( temp highp int) 0:36 Constant: 0:36 0 (const int) 0:36 Loop with condition tested first 0:36 Loop Condition 0:36 Compare Less Than or Equal ( temp bool) 0:36 'a' ( temp highp int) 0:36 Constant: 0:36 20 (const int) 0:36 Loop Body 0:36 Sequence 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 Compare Equal ( temp bool) 0:36 'ga' ( global highp int) 0:36 Constant: 0:36 0 (const int) 0:36 true case 0:36 move second child to first child ( temp highp int) 0:36 'a' ( temp highp int) 0:36 Constant: 0:36 4 (const int) 0:36 Loop Terminal Expression 0:36 Post-Increment ( temp highp int) 0:36 'a' ( temp highp int) 0:37 Sequence 0:37 Sequence 0:37 move second child to first child ( temp highp float) 0:37 'a' ( temp highp float) 0:37 Constant: 0:37 0.000000 0:37 Loop with condition tested first 0:37 Loop Condition 0:37 Compare Less Than or Equal ( temp bool) 0:37 'a' ( temp highp float) 0:37 Constant: 0:37 20.000000 0:37 No loop body 0:37 Loop Terminal Expression 0:37 add second child into first child ( temp highp float) 0:37 'a' ( temp highp float) 0:37 Constant: 0:37 2.000000 0:38 Sequence 0:38 Sequence 0:38 move second child to first child ( temp highp float) 0:38 'a' ( temp highp float) 0:38 Constant: 0:38 0.000000 0:38 Loop with condition tested first 0:38 Loop Condition 0:38 Compare Not Equal ( temp bool) 0:38 'a' ( temp highp float) 0:38 Constant: 0:38 20.000000 0:38 Loop Body 0:38 Sequence 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Equal ( temp bool) 0:38 'ga' ( global highp int) 0:38 Constant: 0:38 0 (const int) 0:38 true case 0:38 move second child to first child ( temp highp int) 0:38 'ga' ( global highp int) 0:38 Constant: 0:38 4 (const int) 0:38 Loop Terminal Expression 0:38 subtract second child into first child ( temp highp float) 0:38 'a' ( temp highp float) 0:38 Constant: 0:38 2.000000 0:39 Sequence 0:39 Sequence 0:39 move second child to first child ( temp highp float) 0:39 'a' ( temp highp float) 0:39 Constant: 0:39 0.000000 0:39 Loop with condition tested first 0:39 Loop Condition 0:39 Compare Equal ( temp bool) 0:39 'a' ( temp highp float) 0:39 Constant: 0:39 20.000000 0:39 Loop Body 0:39 Sequence 0:39 Sequence 0:39 move second child to first child ( temp highp float) 0:39 'a' ( temp highp float) 0:39 Constant: 0:39 0.000000 0:39 Loop with condition tested first 0:39 Loop Condition 0:39 Compare Equal ( temp bool) 0:39 'a' ( temp highp float) 0:39 Constant: 0:39 20.000000 0:39 No loop body 0:39 Loop Terminal Expression 0:39 Post-Decrement ( temp highp float) 0:39 'a' ( temp highp float) 0:39 Loop Terminal Expression 0:39 Post-Decrement ( temp highp float) 0:39 'a' ( temp highp float) 0:40 Sequence 0:40 Sequence 0:40 move second child to first child ( temp highp float) 0:40 'a' ( temp highp float) 0:40 Constant: 0:40 0.000000 0:40 Loop with condition tested first 0:40 Loop Condition 0:40 Compare Less Than or Equal ( temp bool) 0:40 'a' ( temp highp float) 0:40 Constant: 0:40 20.000000 0:40 No loop body 0:40 Loop Terminal Expression 0:40 add second child into first child ( temp highp float) 0:40 'a' ( temp highp float) 0:40 Constant: 0:40 2.000000 0:41 Sequence 0:41 Sequence 0:41 move second child to first child ( temp highp float) 0:41 'a' ( temp highp float) 0:41 Constant: 0:41 0.000000 0:41 Loop with condition tested first 0:41 Loop Condition 0:41 Compare Less Than or Equal ( temp bool) 0:41 'a' ( temp highp float) 0:41 Constant: 0:41 20.000000 0:41 No loop body 0:41 Loop Terminal Expression 0:41 add second child into first child ( temp highp float) 0:41 'a' ( temp highp float) 0:41 Constant: 0:41 2.000000 0:42 Sequence 0:42 Sequence 0:42 move second child to first child ( temp highp float) 0:42 'a' ( temp highp float) 0:42 Constant: 0:42 0.000000 0:42 Loop with condition tested first 0:42 Loop Condition 0:42 Compare Greater Than ( temp bool) 0:42 'a' ( temp highp float) 0:42 Constant: 0:42 40.000000 0:42 No loop body 0:42 Loop Terminal Expression 0:42 add second child into first child ( temp highp float) 0:42 'a' ( temp highp float) 0:42 Constant: 0:42 2.000000 0:43 Sequence 0:43 Sequence 0:43 move second child to first child ( temp highp float) 0:43 'a' ( temp highp float) 0:43 Constant: 0:43 0.000000 0:43 Loop with condition tested first 0:43 Loop Condition 0:43 Compare Greater Than or Equal ( temp bool) 0:43 'a' ( temp highp float) 0:43 Constant: 0:43 20.000000 0:43 Loop Body 0:43 Function Call: foo(f1; ( global void) 0:43 'a' ( temp highp float) 0:43 Loop Terminal Expression 0:43 add second child into first child ( temp highp float) 0:43 'a' ( temp highp float) 0:43 Constant: 0:43 2.000000 0:47 indirect index ( temp lowp sampler2D) 0:47 'fsa' ( uniform 3-element array of lowp sampler2D) 0:47 'ga' ( global highp int) 0:48 indirect index ( temp highp float) 0:48 'fua' ( uniform 10-element array of highp float) 0:48 'ga' ( global highp int) 0:49 indirect index ( temp highp 3-component vector of float) 0:49 'am3' ( in highp 3X3 matrix of float) 0:49 'ga' ( global highp int) 0:50 indirect index ( temp highp float) 0:50 'av2' ( in highp 2-component vector of float) 0:50 'ga' ( global highp int) 0:51 indirect index ( smooth temp highp 4-component vector of float) 0:51 'va' ( smooth out 4-element array of highp 4-component vector of float) 0:51 add ( temp highp int) 0:51 Constant: 0:51 2 (const int) 0:51 'ga' ( global highp int) 0:52 indirect index ( temp highp 2-component vector of float) 0:52 Constant: 0:52 1.000000 0:52 0.000000 0:52 0.000000 0:52 1.000000 0:52 'ga' ( global highp int) 0:53 indirect index ( temp highp float) 0:53 Constant: 0:53 2.000000 0:53 2.000000 0:53 2.000000 0:53 divide ( temp highp int) 0:53 'ga' ( global highp int) 0:53 Constant: 0:53 2 (const int) 0:54 indirect index ( temp highp int) 0:54 'ia' ( temp 9-element array of highp int) 0:54 'ga' ( global highp int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp highp int) 0:56 'a' ( temp highp int) 0:56 Constant: 0:56 3 (const int) 0:56 Loop with condition tested first 0:56 Loop Condition 0:56 Compare Greater Than or Equal ( temp bool) 0:56 'a' ( temp highp int) 0:56 Constant: 0:56 0 (const int) 0:56 Loop Body 0:57 Sequence 0:57 indirect index ( temp lowp sampler2D) 0:57 'fsa' ( uniform 3-element array of lowp sampler2D) 0:57 'a' ( temp highp int) 0:58 indirect index ( temp highp float) 0:58 'fua' ( uniform 10-element array of highp float) 0:58 add ( temp highp int) 0:58 'a' ( temp highp int) 0:58 Constant: 0:58 2 (const int) 0:59 indirect index ( temp highp 3-component vector of float) 0:59 'am3' ( in highp 3X3 matrix of float) 0:59 component-wise multiply ( temp highp int) 0:59 Constant: 0:59 3 (const int) 0:59 'a' ( temp highp int) 0:60 indirect index ( temp highp float) 0:60 'av2' ( in highp 2-component vector of float) 0:60 component-wise multiply ( temp highp int) 0:60 Constant: 0:60 3 (const int) 0:60 'a' ( temp highp int) 0:61 indirect index ( smooth temp highp 4-component vector of float) 0:61 'va' ( smooth out 4-element array of highp 4-component vector of float) 0:61 subtract ( temp highp int) 0:61 'a' ( temp highp int) 0:61 Constant: 0:61 1 (const int) 0:62 indirect index ( temp highp 2-component vector of float) 0:62 Constant: 0:62 1.000000 0:62 0.000000 0:62 0.000000 0:62 1.000000 0:62 divide ( temp highp int) 0:62 'a' ( temp highp int) 0:62 Constant: 0:62 2 (const int) 0:63 indirect index ( temp highp float) 0:63 Constant: 0:63 2.000000 0:63 2.000000 0:63 2.000000 0:63 'a' ( temp highp int) 0:64 indirect index ( temp highp int) 0:64 'ia' ( temp 9-element array of highp int) 0:64 'a' ( temp highp int) 0:65 indirect index ( temp highp int) 0:65 'ia' ( temp 9-element array of highp int) 0:65 Function Call: bar( ( global highp int) 0:56 Loop Terminal Expression 0:56 Post-Decrement ( temp highp int) 0:56 'a' ( temp highp int) 0:68 direct index ( temp lowp sampler2D) 0:68 'fsa' ( uniform 3-element array of lowp sampler2D) 0:68 Constant: 0:68 2 (const int) 0:69 direct index ( temp highp float) 0:69 'fua' ( uniform 10-element array of highp float) 0:69 Constant: 0:69 3 (const int) 0:70 direct index ( temp highp 3-component vector of float) 0:70 'am3' ( in highp 3X3 matrix of float) 0:70 Constant: 0:70 2 (const int) 0:71 direct index ( temp highp float) 0:71 'av2' ( in highp 2-component vector of float) 0:71 Constant: 0:71 1 (const int) 0:72 direct index ( smooth temp highp 4-component vector of float) 0:72 'va' ( smooth out 4-element array of highp 4-component vector of float) 0:72 Constant: 0:72 1 (const int) 0:73 Constant: 0:73 0.000000 0:73 1.000000 0:74 Constant: 0:74 2.000000 0:75 direct index ( temp highp int) 0:75 'ia' ( temp 9-element array of highp int) 0:75 Constant: 0:75 3 (const int) 0:? Linker Objects 0:? 'ga' ( global highp int) 0:? 'gb' ( global highp int) 0:? 'f' ( global highp float) 0:? 'fsa' ( uniform 3-element array of lowp sampler2D) 0:? 'fua' ( uniform 10-element array of highp float) 0:? 'am3' ( in highp 3X3 matrix of float) 0:? 'av2' ( in highp 2-component vector of float) 0:? 'va' ( smooth out 4-element array of highp 4-component vector of float) 0:? 'm2' ( const highp 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'v3' ( const highp 3-component vector of float) 0:? 2.000000 0:? 2.000000 0:? 2.000000 Linked vertex stage: Shader version: 100 0:? Sequence 0:15 Function Definition: foo(f1; ( global void) 0:15 Function Parameters: 0:15 'a' ( inout highp float) 0:17 Function Definition: bar( ( global highp int) 0:17 Function Parameters: 0:19 Sequence 0:19 Branch: Return with expression 0:19 Constant: 0:19 1 (const int) 0:22 Function Definition: main( ( global void) 0:22 Function Parameters: 0:24 Sequence 0:24 Loop with condition tested first 0:24 Loop Condition 0:24 Compare Less Than ( temp bool) 0:24 'ga' ( global highp int) 0:24 'gb' ( global highp int) 0:24 No loop body 0:26 Loop with condition not tested first 0:26 Loop Condition 0:26 Constant: 0:26 false (const bool) 0:26 No loop body 0:28 Sequence 0:28 Loop with condition tested first 0:28 No loop condition 0:28 No loop body 0:29 Sequence 0:29 Loop with condition tested first 0:29 Loop Condition 0:29 Compare Equal ( temp bool) 0:29 'ga' ( global highp int) 0:29 'gb' ( global highp int) 0:29 No loop body 0:30 Sequence 0:30 Loop with condition tested first 0:30 No loop condition 0:30 No loop body 0:30 Loop Terminal Expression 0:30 Post-Increment ( temp highp float) 0:30 'f' ( global highp float) 0:31 Sequence 0:31 move second child to first child ( temp highp int) 0:31 'ga' ( global highp int) 0:31 Constant: 0:31 0 (const int) 0:31 Loop with condition tested first 0:31 No loop condition 0:31 No loop body 0:32 Sequence 0:32 Sequence 0:32 move second child to first child ( temp bool) 0:32 'a' ( temp bool) 0:32 Constant: 0:32 false (const bool) 0:32 Loop with condition tested first 0:32 No loop condition 0:32 No loop body 0:33 Sequence 0:33 Sequence 0:33 move second child to first child ( temp highp float) 0:33 'a' ( temp highp float) 0:33 Constant: 0:33 0.000000 0:33 Loop with condition tested first 0:33 Loop Condition 0:33 Compare Equal ( temp bool) 0:33 'a' ( temp highp float) 0:33 sine ( global highp float) 0:33 'f' ( global highp float) 0:33 No loop body 0:34 Sequence 0:34 Sequence 0:34 move second child to first child ( temp highp int) 0:34 'a' ( temp highp int) 0:34 Constant: 0:34 0 (const int) 0:34 Loop with condition tested first 0:34 Loop Condition 0:34 Compare Less Than ( temp bool) 0:34 'a' ( temp highp int) 0:34 Constant: 0:34 10 (const int) 0:34 No loop body 0:34 Loop Terminal Expression 0:34 multiply second child into first child ( temp highp int) 0:34 'a' ( temp highp int) 0:34 Constant: 0:34 2 (const int) 0:35 Sequence 0:35 Sequence 0:35 move second child to first child ( temp highp int) 0:35 'a' ( temp highp int) 0:35 Constant: 0:35 0 (const int) 0:35 Loop with condition tested first 0:35 Loop Condition 0:35 Compare Less Than or Equal ( temp bool) 0:35 'a' ( temp highp int) 0:35 Constant: 0:35 20 (const int) 0:35 Loop Body 0:35 Pre-Decrement ( temp highp int) 0:35 'a' ( temp highp int) 0:35 Loop Terminal Expression 0:35 Post-Increment ( temp highp int) 0:35 'a' ( temp highp int) 0:36 Sequence 0:36 Sequence 0:36 move second child to first child ( temp highp int) 0:36 'a' ( temp highp int) 0:36 Constant: 0:36 0 (const int) 0:36 Loop with condition tested first 0:36 Loop Condition 0:36 Compare Less Than or Equal ( temp bool) 0:36 'a' ( temp highp int) 0:36 Constant: 0:36 20 (const int) 0:36 Loop Body 0:36 Sequence 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 Compare Equal ( temp bool) 0:36 'ga' ( global highp int) 0:36 Constant: 0:36 0 (const int) 0:36 true case 0:36 move second child to first child ( temp highp int) 0:36 'a' ( temp highp int) 0:36 Constant: 0:36 4 (const int) 0:36 Loop Terminal Expression 0:36 Post-Increment ( temp highp int) 0:36 'a' ( temp highp int) 0:37 Sequence 0:37 Sequence 0:37 move second child to first child ( temp highp float) 0:37 'a' ( temp highp float) 0:37 Constant: 0:37 0.000000 0:37 Loop with condition tested first 0:37 Loop Condition 0:37 Compare Less Than or Equal ( temp bool) 0:37 'a' ( temp highp float) 0:37 Constant: 0:37 20.000000 0:37 No loop body 0:37 Loop Terminal Expression 0:37 add second child into first child ( temp highp float) 0:37 'a' ( temp highp float) 0:37 Constant: 0:37 2.000000 0:38 Sequence 0:38 Sequence 0:38 move second child to first child ( temp highp float) 0:38 'a' ( temp highp float) 0:38 Constant: 0:38 0.000000 0:38 Loop with condition tested first 0:38 Loop Condition 0:38 Compare Not Equal ( temp bool) 0:38 'a' ( temp highp float) 0:38 Constant: 0:38 20.000000 0:38 Loop Body 0:38 Sequence 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Equal ( temp bool) 0:38 'ga' ( global highp int) 0:38 Constant: 0:38 0 (const int) 0:38 true case 0:38 move second child to first child ( temp highp int) 0:38 'ga' ( global highp int) 0:38 Constant: 0:38 4 (const int) 0:38 Loop Terminal Expression 0:38 subtract second child into first child ( temp highp float) 0:38 'a' ( temp highp float) 0:38 Constant: 0:38 2.000000 0:39 Sequence 0:39 Sequence 0:39 move second child to first child ( temp highp float) 0:39 'a' ( temp highp float) 0:39 Constant: 0:39 0.000000 0:39 Loop with condition tested first 0:39 Loop Condition 0:39 Compare Equal ( temp bool) 0:39 'a' ( temp highp float) 0:39 Constant: 0:39 20.000000 0:39 Loop Body 0:39 Sequence 0:39 Sequence 0:39 move second child to first child ( temp highp float) 0:39 'a' ( temp highp float) 0:39 Constant: 0:39 0.000000 0:39 Loop with condition tested first 0:39 Loop Condition 0:39 Compare Equal ( temp bool) 0:39 'a' ( temp highp float) 0:39 Constant: 0:39 20.000000 0:39 No loop body 0:39 Loop Terminal Expression 0:39 Post-Decrement ( temp highp float) 0:39 'a' ( temp highp float) 0:39 Loop Terminal Expression 0:39 Post-Decrement ( temp highp float) 0:39 'a' ( temp highp float) 0:40 Sequence 0:40 Sequence 0:40 move second child to first child ( temp highp float) 0:40 'a' ( temp highp float) 0:40 Constant: 0:40 0.000000 0:40 Loop with condition tested first 0:40 Loop Condition 0:40 Compare Less Than or Equal ( temp bool) 0:40 'a' ( temp highp float) 0:40 Constant: 0:40 20.000000 0:40 No loop body 0:40 Loop Terminal Expression 0:40 add second child into first child ( temp highp float) 0:40 'a' ( temp highp float) 0:40 Constant: 0:40 2.000000 0:41 Sequence 0:41 Sequence 0:41 move second child to first child ( temp highp float) 0:41 'a' ( temp highp float) 0:41 Constant: 0:41 0.000000 0:41 Loop with condition tested first 0:41 Loop Condition 0:41 Compare Less Than or Equal ( temp bool) 0:41 'a' ( temp highp float) 0:41 Constant: 0:41 20.000000 0:41 No loop body 0:41 Loop Terminal Expression 0:41 add second child into first child ( temp highp float) 0:41 'a' ( temp highp float) 0:41 Constant: 0:41 2.000000 0:42 Sequence 0:42 Sequence 0:42 move second child to first child ( temp highp float) 0:42 'a' ( temp highp float) 0:42 Constant: 0:42 0.000000 0:42 Loop with condition tested first 0:42 Loop Condition 0:42 Compare Greater Than ( temp bool) 0:42 'a' ( temp highp float) 0:42 Constant: 0:42 40.000000 0:42 No loop body 0:42 Loop Terminal Expression 0:42 add second child into first child ( temp highp float) 0:42 'a' ( temp highp float) 0:42 Constant: 0:42 2.000000 0:43 Sequence 0:43 Sequence 0:43 move second child to first child ( temp highp float) 0:43 'a' ( temp highp float) 0:43 Constant: 0:43 0.000000 0:43 Loop with condition tested first 0:43 Loop Condition 0:43 Compare Greater Than or Equal ( temp bool) 0:43 'a' ( temp highp float) 0:43 Constant: 0:43 20.000000 0:43 Loop Body 0:43 Function Call: foo(f1; ( global void) 0:43 'a' ( temp highp float) 0:43 Loop Terminal Expression 0:43 add second child into first child ( temp highp float) 0:43 'a' ( temp highp float) 0:43 Constant: 0:43 2.000000 0:47 indirect index ( temp lowp sampler2D) 0:47 'fsa' ( uniform 3-element array of lowp sampler2D) 0:47 'ga' ( global highp int) 0:48 indirect index ( temp highp float) 0:48 'fua' ( uniform 10-element array of highp float) 0:48 'ga' ( global highp int) 0:49 indirect index ( temp highp 3-component vector of float) 0:49 'am3' ( in highp 3X3 matrix of float) 0:49 'ga' ( global highp int) 0:50 indirect index ( temp highp float) 0:50 'av2' ( in highp 2-component vector of float) 0:50 'ga' ( global highp int) 0:51 indirect index ( smooth temp highp 4-component vector of float) 0:51 'va' ( smooth out 4-element array of highp 4-component vector of float) 0:51 add ( temp highp int) 0:51 Constant: 0:51 2 (const int) 0:51 'ga' ( global highp int) 0:52 indirect index ( temp highp 2-component vector of float) 0:52 Constant: 0:52 1.000000 0:52 0.000000 0:52 0.000000 0:52 1.000000 0:52 'ga' ( global highp int) 0:53 indirect index ( temp highp float) 0:53 Constant: 0:53 2.000000 0:53 2.000000 0:53 2.000000 0:53 divide ( temp highp int) 0:53 'ga' ( global highp int) 0:53 Constant: 0:53 2 (const int) 0:54 indirect index ( temp highp int) 0:54 'ia' ( temp 9-element array of highp int) 0:54 'ga' ( global highp int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp highp int) 0:56 'a' ( temp highp int) 0:56 Constant: 0:56 3 (const int) 0:56 Loop with condition tested first 0:56 Loop Condition 0:56 Compare Greater Than or Equal ( temp bool) 0:56 'a' ( temp highp int) 0:56 Constant: 0:56 0 (const int) 0:56 Loop Body 0:57 Sequence 0:57 indirect index ( temp lowp sampler2D) 0:57 'fsa' ( uniform 3-element array of lowp sampler2D) 0:57 'a' ( temp highp int) 0:58 indirect index ( temp highp float) 0:58 'fua' ( uniform 10-element array of highp float) 0:58 add ( temp highp int) 0:58 'a' ( temp highp int) 0:58 Constant: 0:58 2 (const int) 0:59 indirect index ( temp highp 3-component vector of float) 0:59 'am3' ( in highp 3X3 matrix of float) 0:59 component-wise multiply ( temp highp int) 0:59 Constant: 0:59 3 (const int) 0:59 'a' ( temp highp int) 0:60 indirect index ( temp highp float) 0:60 'av2' ( in highp 2-component vector of float) 0:60 component-wise multiply ( temp highp int) 0:60 Constant: 0:60 3 (const int) 0:60 'a' ( temp highp int) 0:61 indirect index ( smooth temp highp 4-component vector of float) 0:61 'va' ( smooth out 4-element array of highp 4-component vector of float) 0:61 subtract ( temp highp int) 0:61 'a' ( temp highp int) 0:61 Constant: 0:61 1 (const int) 0:62 indirect index ( temp highp 2-component vector of float) 0:62 Constant: 0:62 1.000000 0:62 0.000000 0:62 0.000000 0:62 1.000000 0:62 divide ( temp highp int) 0:62 'a' ( temp highp int) 0:62 Constant: 0:62 2 (const int) 0:63 indirect index ( temp highp float) 0:63 Constant: 0:63 2.000000 0:63 2.000000 0:63 2.000000 0:63 'a' ( temp highp int) 0:64 indirect index ( temp highp int) 0:64 'ia' ( temp 9-element array of highp int) 0:64 'a' ( temp highp int) 0:65 indirect index ( temp highp int) 0:65 'ia' ( temp 9-element array of highp int) 0:65 Function Call: bar( ( global highp int) 0:56 Loop Terminal Expression 0:56 Post-Decrement ( temp highp int) 0:56 'a' ( temp highp int) 0:68 direct index ( temp lowp sampler2D) 0:68 'fsa' ( uniform 3-element array of lowp sampler2D) 0:68 Constant: 0:68 2 (const int) 0:69 direct index ( temp highp float) 0:69 'fua' ( uniform 10-element array of highp float) 0:69 Constant: 0:69 3 (const int) 0:70 direct index ( temp highp 3-component vector of float) 0:70 'am3' ( in highp 3X3 matrix of float) 0:70 Constant: 0:70 2 (const int) 0:71 direct index ( temp highp float) 0:71 'av2' ( in highp 2-component vector of float) 0:71 Constant: 0:71 1 (const int) 0:72 direct index ( smooth temp highp 4-component vector of float) 0:72 'va' ( smooth out 4-element array of highp 4-component vector of float) 0:72 Constant: 0:72 1 (const int) 0:73 Constant: 0:73 0.000000 0:73 1.000000 0:74 Constant: 0:74 2.000000 0:75 direct index ( temp highp int) 0:75 'ia' ( temp 9-element array of highp int) 0:75 Constant: 0:75 3 (const int) 0:? Linker Objects 0:? 'ga' ( global highp int) 0:? 'gb' ( global highp int) 0:? 'f' ( global highp float) 0:? 'fsa' ( uniform 3-element array of lowp sampler2D) 0:? 'fua' ( uniform 10-element array of highp float) 0:? 'am3' ( in highp 3X3 matrix of float) 0:? 'av2' ( in highp 2-component vector of float) 0:? 'va' ( smooth out 4-element array of highp 4-component vector of float) 0:? 'm2' ( const highp 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'v3' ( const highp 3-component vector of float) 0:? 2.000000 0:? 2.000000 0:? 2.000000 glslang-16.0.0/Test/baseResults/100LimitsConf.vert.out000066400000000000000000000033261506534232700224530ustar00rootroot00000000000000100Limits.vert ERROR: 0:24: 'limitation' : while loops not available ERROR: 0:26: 'limitation' : do-while loops not available ERROR: 0:28: 'limitations' : inductive-loop init-declaration requires the form "type-specifier loop-index = constant-expression" ERROR: 0:29: 'limitations' : inductive-loop init-declaration requires the form "type-specifier loop-index = constant-expression" ERROR: 0:30: 'limitations' : inductive-loop init-declaration requires the form "type-specifier loop-index = constant-expression" ERROR: 0:31: 'limitations' : inductive-loop init-declaration requires the form "type-specifier loop-index = constant-expression" ERROR: 0:32: 'limitations' : inductive loop requires a scalar 'int' or 'float' loop index ERROR: 0:33: 'limitations' : inductive-loop condition requires the form "loop-index constant-expression" ERROR: 0:34: 'limitations' : inductive-loop termination requires the form "loop-index++, loop-index--, loop-index += constant-expression, or loop-index -= constant-expression" ERROR: 0:35: 'limitations' : inductive loop index modified ERROR: 0:36: 'limitations' : inductive loop index modified ERROR: 0:43: 'limitations' : inductive loop index modified ERROR: 0:47: 'limitations' : Non-constant-index-expression ERROR: 0:49: 'limitations' : Non-constant-index-expression ERROR: 0:50: 'limitations' : Non-constant-index-expression ERROR: 0:51: 'limitations' : Non-constant-index-expression ERROR: 0:52: 'limitations' : Non-constant-index-expression ERROR: 0:53: 'limitations' : Non-constant-index-expression ERROR: 0:54: 'limitations' : Non-constant-index-expression ERROR: 0:65: 'limitations' : Non-constant-index-expression ERROR: 20 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/100samplerExternal.frag.out000066400000000000000000000131301506534232700235030ustar00rootroot00000000000000100samplerExternal.frag ERROR: 0:20: 'textureSize' : no matching overloaded function found ERROR: 0:21: 'texture' : no matching overloaded function found ERROR: 0:22: 'texture' : no matching overloaded function found ERROR: 0:23: 'textureProj' : no matching overloaded function found ERROR: 0:24: 'textureProj' : no matching overloaded function found ERROR: 0:25: 'textureProj' : no matching overloaded function found ERROR: 0:26: 'textureProj' : no matching overloaded function found ERROR: 0:27: 'texelFetch' : no matching overloaded function found ERROR: 0:29: 'texture3D' : no matching overloaded function found ERROR: 0:30: 'texture2DProjLod' : no matching overloaded function found ERROR: 0:31: 'texture' : no matching overloaded function found ERROR: 0:32: 'textureProjLod' : no matching overloaded function found ERROR: 0:38: 'samplerExternalOES' : required extension not requested: GL_OES_EGL_image_external ERROR: 0:41: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 14 compilation errors. No code generated. Shader version: 100 Requested GL_OES_EGL_image_external Requested GL_OES_EGL_image_external_essl3 ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 texture ( global lowp 4-component vector of float) 0:12 'sExt' ( uniform lowp samplerExternalOES) 0:12 Constant: 0:12 0.200000 0:12 0.200000 0:13 texture ( global mediump 4-component vector of float) 0:13 'mediumExt' ( uniform mediump samplerExternalOES) 0:13 Constant: 0:13 0.200000 0:13 0.200000 0:14 texture ( global highp 4-component vector of float) 0:14 'highExt' ( uniform highp samplerExternalOES) 0:14 Constant: 0:14 0.200000 0:14 0.200000 0:15 textureProj ( global lowp 4-component vector of float) 0:15 'sExt' ( uniform lowp samplerExternalOES) 0:15 Constant: 0:15 0.300000 0:15 0.300000 0:15 0.300000 0:16 textureProj ( global lowp 4-component vector of float) 0:16 'sExt' ( uniform lowp samplerExternalOES) 0:16 Constant: 0:16 0.300000 0:16 0.300000 0:16 0.300000 0:16 0.300000 0:18 Sequence 0:18 move second child to first child ( temp mediump int) 0:18 'lod' ( temp mediump int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp highp float) 0:19 'bias' ( temp highp float) 0:19 Constant: 0:19 0.010000 0:20 Constant: 0:20 0.000000 0:21 Constant: 0:21 0.000000 0:22 Constant: 0:22 0.000000 0:23 Constant: 0:23 0.000000 0:24 Constant: 0:24 0.000000 0:25 Constant: 0:25 0.000000 0:26 Constant: 0:26 0.000000 0:27 Constant: 0:27 0.000000 0:29 Constant: 0:29 0.000000 0:30 Constant: 0:30 0.000000 0:31 Constant: 0:31 0.000000 0:32 Constant: 0:32 0.000000 0:? Linker Objects 0:? 'sExt' ( uniform lowp samplerExternalOES) 0:? 'mediumExt' ( uniform mediump samplerExternalOES) 0:? 'highExt' ( uniform highp samplerExternalOES) 0:? 'badExt' ( uniform mediump samplerExternalOES) Linked fragment stage: Shader version: 100 Requested GL_OES_EGL_image_external Requested GL_OES_EGL_image_external_essl3 ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 texture ( global lowp 4-component vector of float) 0:12 'sExt' ( uniform lowp samplerExternalOES) 0:12 Constant: 0:12 0.200000 0:12 0.200000 0:13 texture ( global mediump 4-component vector of float) 0:13 'mediumExt' ( uniform mediump samplerExternalOES) 0:13 Constant: 0:13 0.200000 0:13 0.200000 0:14 texture ( global highp 4-component vector of float) 0:14 'highExt' ( uniform highp samplerExternalOES) 0:14 Constant: 0:14 0.200000 0:14 0.200000 0:15 textureProj ( global lowp 4-component vector of float) 0:15 'sExt' ( uniform lowp samplerExternalOES) 0:15 Constant: 0:15 0.300000 0:15 0.300000 0:15 0.300000 0:16 textureProj ( global lowp 4-component vector of float) 0:16 'sExt' ( uniform lowp samplerExternalOES) 0:16 Constant: 0:16 0.300000 0:16 0.300000 0:16 0.300000 0:16 0.300000 0:18 Sequence 0:18 move second child to first child ( temp mediump int) 0:18 'lod' ( temp mediump int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp highp float) 0:19 'bias' ( temp highp float) 0:19 Constant: 0:19 0.010000 0:20 Constant: 0:20 0.000000 0:21 Constant: 0:21 0.000000 0:22 Constant: 0:22 0.000000 0:23 Constant: 0:23 0.000000 0:24 Constant: 0:24 0.000000 0:25 Constant: 0:25 0.000000 0:26 Constant: 0:26 0.000000 0:27 Constant: 0:27 0.000000 0:29 Constant: 0:29 0.000000 0:30 Constant: 0:30 0.000000 0:31 Constant: 0:31 0.000000 0:32 Constant: 0:32 0.000000 0:? Linker Objects 0:? 'sExt' ( uniform lowp samplerExternalOES) 0:? 'mediumExt' ( uniform mediump samplerExternalOES) 0:? 'highExt' ( uniform highp samplerExternalOES) 0:? 'badExt' ( uniform mediump samplerExternalOES) glslang-16.0.0/Test/baseResults/100scope.vert.out000066400000000000000000000210011506534232700215030ustar00rootroot00000000000000100scope.vert ERROR: 0:17: 'b' : function name is redeclaration of existing name ERROR: 0:20: 'c' : redefinition ERROR: 0:22: 'f' : redefinition ERROR: 0:24: 'redefinition of built-in function' : not supported with this profile: es ERROR: 0:24: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 1 ERROR: 0:25: 'redefinition of built-in function' : not supported with this profile: es ERROR: 0:25: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 1 ERROR: 0:38: 'local function declaration' : not supported with this profile: es ERROR: 0:43: 'sin' : can't use function syntax on variable ERROR: 0:57: 'z' : undeclared identifier ERROR: 0:57: 'z' : redefinition ERROR: 0:73: 'degrees' : can't use function syntax on variable ERROR: 0:76: 'vertex-shader struct output' : not supported for this version or the enabled extensions ERROR: 13 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:3 Function Definition: f(i1;i1;i1; ( global highp int) 0:3 Function Parameters: 0:3 'a' ( in highp int) 0:3 'b' ( in highp int) 0:3 'c' ( in highp int) 0:5 Sequence 0:5 Sequence 0:5 move second child to first child ( temp highp int) 0:5 'a' ( temp highp int) 0:5 'b' ( in highp int) 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp highp float) 0:8 'a' ( temp highp float) 0:8 add ( temp highp float) 0:8 Convert int to float ( temp highp float) 0:8 'a' ( temp highp int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' ( temp highp int) 0:25 Function Definition: cos(f1; ( global highp float) 0:25 Function Parameters: 0:25 'x' ( in highp float) 0:27 Sequence 0:27 Branch: Return with expression 0:27 Constant: 0:27 1.000000 0:29 Function Definition: radians(b1; ( global bool) 0:29 Function Parameters: 0:29 'x' ( in bool) 0:31 Sequence 0:31 Branch: Return with expression 0:31 Constant: 0:31 true (const bool) 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence 0:39 Function Call: g( ( temp highp int) 0:42 'sin' ( temp highp float) 0:43 Constant: 0:43 0.000000 0:44 Function Call: f(i1;i1;i1; ( global highp int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 3 (const int) 0:47 move second child to first child ( temp highp float) 0:47 'f' ( temp highp float) 0:47 Constant: 0:47 3.000000 0:49 move second child to first child ( temp highp 4-component vector of float) 0:49 'gl_Position' ( invariant gl_Position highp 4-component vector of float Position) 0:49 Construct vec4 ( temp highp 4-component vector of float) 0:49 'f' ( temp highp float) 0:51 Sequence 0:51 Sequence 0:51 move second child to first child ( temp highp int) 0:51 'f' ( temp highp int) 0:51 Constant: 0:51 0 (const int) 0:51 Loop with condition tested first 0:51 Loop Condition 0:51 Compare Less Than ( temp bool) 0:51 'f' ( temp highp int) 0:51 Constant: 0:51 10 (const int) 0:51 Loop Body 0:52 Pre-Increment ( temp highp int) 0:52 'f' ( temp highp int) 0:51 Loop Terminal Expression 0:51 Pre-Increment ( temp highp int) 0:51 'f' ( temp highp int) 0:54 Sequence 0:54 move second child to first child ( temp highp int) 0:54 'x' ( temp highp int) 0:54 Constant: 0:54 1 (const int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp highp float) 0:56 'x' ( temp highp float) 0:56 Constant: 0:56 2.000000 0:56 move second child to first child ( temp highp float) 0:56 'y' ( temp highp float) 0:56 'x' ( temp highp float) 0:60 Sequence 0:60 Sequence 0:60 move second child to first child ( temp highp int) 0:60 'x' ( temp highp int) 0:60 'x' ( temp highp int) 0:68 Sequence 0:68 Sequence 0:68 move second child to first child ( temp structure{ temp highp int x}) 0:68 'S' ( temp structure{ temp highp int x}) 0:68 Constant: 0:68 0 (const int) 0:69 x: direct index for structure ( temp highp int) 0:69 'S' ( temp structure{ temp highp int x}) 0:69 Constant: 0:69 0 (const int) 0:73 Constant: 0:73 0.000000 0:? Linker Objects 0:? 'b' ( global bool) 0:? 'tan' ( global highp float) 0:? 's' ( smooth out structure{ global highp float f}) Linked vertex stage: ERROR: Linking vertex stage: No function definition (body) found: g( Shader version: 100 ERROR: node is still EOpNull! 0:3 Function Definition: f(i1;i1;i1; ( global highp int) 0:3 Function Parameters: 0:3 'a' ( in highp int) 0:3 'b' ( in highp int) 0:3 'c' ( in highp int) 0:5 Sequence 0:5 Sequence 0:5 move second child to first child ( temp highp int) 0:5 'a' ( temp highp int) 0:5 'b' ( in highp int) 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp highp float) 0:8 'a' ( temp highp float) 0:8 add ( temp highp float) 0:8 Convert int to float ( temp highp float) 0:8 'a' ( temp highp int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' ( temp highp int) 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence 0:39 Function Call: g( ( temp highp int) 0:42 'sin' ( temp highp float) 0:43 Constant: 0:43 0.000000 0:44 Function Call: f(i1;i1;i1; ( global highp int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 3 (const int) 0:47 move second child to first child ( temp highp float) 0:47 'f' ( temp highp float) 0:47 Constant: 0:47 3.000000 0:49 move second child to first child ( temp highp 4-component vector of float) 0:49 'gl_Position' ( invariant gl_Position highp 4-component vector of float Position) 0:49 Construct vec4 ( temp highp 4-component vector of float) 0:49 'f' ( temp highp float) 0:51 Sequence 0:51 Sequence 0:51 move second child to first child ( temp highp int) 0:51 'f' ( temp highp int) 0:51 Constant: 0:51 0 (const int) 0:51 Loop with condition tested first 0:51 Loop Condition 0:51 Compare Less Than ( temp bool) 0:51 'f' ( temp highp int) 0:51 Constant: 0:51 10 (const int) 0:51 Loop Body 0:52 Pre-Increment ( temp highp int) 0:52 'f' ( temp highp int) 0:51 Loop Terminal Expression 0:51 Pre-Increment ( temp highp int) 0:51 'f' ( temp highp int) 0:54 Sequence 0:54 move second child to first child ( temp highp int) 0:54 'x' ( temp highp int) 0:54 Constant: 0:54 1 (const int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp highp float) 0:56 'x' ( temp highp float) 0:56 Constant: 0:56 2.000000 0:56 move second child to first child ( temp highp float) 0:56 'y' ( temp highp float) 0:56 'x' ( temp highp float) 0:60 Sequence 0:60 Sequence 0:60 move second child to first child ( temp highp int) 0:60 'x' ( temp highp int) 0:60 'x' ( temp highp int) 0:68 Sequence 0:68 Sequence 0:68 move second child to first child ( temp structure{ temp highp int x}) 0:68 'S' ( temp structure{ temp highp int x}) 0:68 Constant: 0:68 0 (const int) 0:69 x: direct index for structure ( temp highp int) 0:69 'S' ( temp structure{ temp highp int x}) 0:69 Constant: 0:69 0 (const int) 0:73 Constant: 0:73 0.000000 0:? Linker Objects 0:? 'b' ( global bool) 0:? 'tan' ( global highp float) 0:? 's' ( smooth out structure{ global highp float f}) glslang-16.0.0/Test/baseResults/110scope.vert.out000066400000000000000000000216171506534232700215210ustar00rootroot00000000000000110scope.vert ERROR: 0:5: 'a' : redefinition ERROR: 0:57: 'z' : undeclared identifier ERROR: 0:57: 'z' : redefinition ERROR: 0:83: 'S' : redefinition struct ERROR: 4 compilation errors. No code generated. Shader version: 110 ERROR: node is still EOpNull! 0:3 Function Definition: f(i1;i1;i1; ( global int) 0:3 Function Parameters: 0:3 'a' ( in int) 0:3 'b' ( in int) 0:3 'c' ( in int) 0:? Sequence 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'a' ( temp float) 0:8 add ( temp float) 0:8 Convert int to float ( temp float) 0:8 'a' ( in int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' ( in int) 0:25 Function Definition: cos(f1; ( global float) 0:25 Function Parameters: 0:25 'x' ( in float) 0:27 Sequence 0:27 Branch: Return with expression 0:27 Constant: 0:27 1.000000 0:29 Function Definition: radians(b1; ( global bool) 0:29 Function Parameters: 0:29 'x' ( in bool) 0:31 Sequence 0:31 Branch: Return with expression 0:31 Constant: 0:31 true (const bool) 0:34 Sequence 0:34 move second child to first child ( temp int) 0:34 'gi' ( global int) 0:34 Function Call: f(i1;i1;i1; ( global int) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 3 (const int) 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence 0:39 Function Call: g( ( temp int) 0:42 'sin' ( temp float) 0:43 Function Call: sin(f1; ( global float) 0:43 Constant: 0:43 0.700000 0:44 Function Call: f(i1;i1;i1; ( global int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 3 (const int) 0:47 move second child to first child ( temp float) 0:47 'f' ( temp float) 0:47 Constant: 0:47 3.000000 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'gl_Position' ( gl_Position 4-component vector of float Position) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 'f' ( temp float) 0:51 Sequence 0:51 Sequence 0:51 move second child to first child ( temp int) 0:51 'f' ( temp int) 0:51 Constant: 0:51 0 (const int) 0:51 Loop with condition tested first 0:51 Loop Condition 0:51 Compare Less Than ( temp bool) 0:51 'f' ( temp int) 0:51 Constant: 0:51 10 (const int) 0:51 Loop Body 0:52 Pre-Increment ( temp int) 0:52 'f' ( temp int) 0:51 Loop Terminal Expression 0:51 Pre-Increment ( temp int) 0:51 'f' ( temp int) 0:54 Sequence 0:54 move second child to first child ( temp int) 0:54 'x' ( temp int) 0:54 Constant: 0:54 1 (const int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'x' ( temp float) 0:56 Constant: 0:56 2.000000 0:56 move second child to first child ( temp float) 0:56 'y' ( temp float) 0:56 'x' ( temp float) 0:60 Sequence 0:60 Sequence 0:60 move second child to first child ( temp int) 0:60 'x' ( temp int) 0:60 'x' ( temp int) 0:68 Sequence 0:68 Sequence 0:68 move second child to first child ( temp structure{ temp int x}) 0:68 'S' ( temp structure{ temp int x}) 0:68 Constant: 0:68 0 (const int) 0:69 x: direct index for structure ( temp int) 0:69 'S' ( temp structure{ temp int x}) 0:69 Constant: 0:69 0 (const int) 0:73 Constant: 0:73 183.346494 0:? Sequence 0:77 move second child to first child ( temp int) 0:77 x: direct index for structure ( temp int) 0:77 's' ( temp structure{ temp int x}) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 3 (const int) 0:82 move second child to first child ( temp bool) 0:82 b: direct index for structure ( temp bool) 0:82 't' ( temp structure{ temp bool b}) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 true (const bool) 0:? Linker Objects 0:? 'b' ( global bool) 0:? 'c' ( global bool) 0:? 'f' ( global float) 0:? 'tan' ( global float) 0:? 'gi' ( global int) Linked vertex stage: ERROR: Linking vertex stage: No function definition (body) found: sin(f1; ERROR: Linking vertex stage: No function definition (body) found: g( Shader version: 110 ERROR: node is still EOpNull! 0:3 Function Definition: f(i1;i1;i1; ( global int) 0:3 Function Parameters: 0:3 'a' ( in int) 0:3 'b' ( in int) 0:3 'c' ( in int) 0:? Sequence 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'a' ( temp float) 0:8 add ( temp float) 0:8 Convert int to float ( temp float) 0:8 'a' ( in int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' ( in int) 0:34 Sequence 0:34 move second child to first child ( temp int) 0:34 'gi' ( global int) 0:34 Function Call: f(i1;i1;i1; ( global int) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 3 (const int) 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence 0:39 Function Call: g( ( temp int) 0:42 'sin' ( temp float) 0:43 Function Call: sin(f1; ( global float) 0:43 Constant: 0:43 0.700000 0:44 Function Call: f(i1;i1;i1; ( global int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 3 (const int) 0:47 move second child to first child ( temp float) 0:47 'f' ( temp float) 0:47 Constant: 0:47 3.000000 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'gl_Position' ( gl_Position 4-component vector of float Position) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 'f' ( temp float) 0:51 Sequence 0:51 Sequence 0:51 move second child to first child ( temp int) 0:51 'f' ( temp int) 0:51 Constant: 0:51 0 (const int) 0:51 Loop with condition tested first 0:51 Loop Condition 0:51 Compare Less Than ( temp bool) 0:51 'f' ( temp int) 0:51 Constant: 0:51 10 (const int) 0:51 Loop Body 0:52 Pre-Increment ( temp int) 0:52 'f' ( temp int) 0:51 Loop Terminal Expression 0:51 Pre-Increment ( temp int) 0:51 'f' ( temp int) 0:54 Sequence 0:54 move second child to first child ( temp int) 0:54 'x' ( temp int) 0:54 Constant: 0:54 1 (const int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'x' ( temp float) 0:56 Constant: 0:56 2.000000 0:56 move second child to first child ( temp float) 0:56 'y' ( temp float) 0:56 'x' ( temp float) 0:60 Sequence 0:60 Sequence 0:60 move second child to first child ( temp int) 0:60 'x' ( temp int) 0:60 'x' ( temp int) 0:68 Sequence 0:68 Sequence 0:68 move second child to first child ( temp structure{ temp int x}) 0:68 'S' ( temp structure{ temp int x}) 0:68 Constant: 0:68 0 (const int) 0:69 x: direct index for structure ( temp int) 0:69 'S' ( temp structure{ temp int x}) 0:69 Constant: 0:69 0 (const int) 0:73 Constant: 0:73 183.346494 0:? Sequence 0:77 move second child to first child ( temp int) 0:77 x: direct index for structure ( temp int) 0:77 's' ( temp structure{ temp int x}) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 3 (const int) 0:82 move second child to first child ( temp bool) 0:82 b: direct index for structure ( temp bool) 0:82 't' ( temp structure{ temp bool b}) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 true (const bool) 0:? Linker Objects 0:? 'b' ( global bool) 0:? 'c' ( global bool) 0:? 'f' ( global float) 0:? 'tan' ( global float) 0:? 'gi' ( global int) glslang-16.0.0/Test/baseResults/120.frag.out000066400000000000000000001044261506534232700204270ustar00rootroot00000000000000120.frag ERROR: 0:9: 'in for stage inputs' : not supported for this version or the enabled extensions ERROR: 0:10: 'out for stage outputs' : not supported for this version or the enabled extensions ERROR: 0:54: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp 2-component vector of float' and a right operand of type ' temp 3-component vector of float' (or there is no acceptable conversion) ERROR: 0:55: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' uniform 4X2 matrix of float' and a right operand of type ' temp 3-component vector of float' (or there is no acceptable conversion) ERROR: 0:56: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' uniform 4X2 matrix of float' and a right operand of type ' smooth in 4-component vector of float' (or there is no acceptable conversion) ERROR: 0:57: '=' : cannot convert from ' const float' to ' temp int' ERROR: 0:58: 'assign' : cannot convert from ' temp bool' to ' temp float' ERROR: 0:59: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp int' and a right operand of type ' temp bool' (or there is no acceptable conversion) ERROR: 0:60: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp bool' and a right operand of type ' temp int' (or there is no acceptable conversion) ERROR: 0:60: 'assign' : cannot convert from ' temp bool' to ' temp float' ERROR: 0:61: 'assign' : cannot convert from ' temp int' to ' temp bool' ERROR: 0:62: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp bool' and a right operand of type ' temp float' (or there is no acceptable conversion) ERROR: 0:63: 'bitwise-or assign' : not supported for this version or the enabled extensions ERROR: 0:63: 'assign' : cannot convert from ' temp bool' to ' temp float' ERROR: 0:79: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp 4-component vector of float' and a right operand of type ' temp 4X4 matrix of float' (or there is no acceptable conversion) ERROR: 0:79: 'assign' : cannot convert from ' temp 4X4 matrix of float' to ' fragColor 4-component vector of float FragColor' ERROR: 0:82: 'xr' : vector swizzle selectors not from the same set ERROR: 0:83: 'xyxyx' : vector swizzle too long ERROR: 0:84: 'z' : vector swizzle selection out of range ERROR: 0:85: 'assign' : l-value required ERROR: 0:91: 'main' : overloaded functions must have the same return type ERROR: 0:91: 'main' : function already has a body ERROR: 0:91: 'int' : entry point cannot return a value ERROR: 0:92: 'main' : function cannot take any parameter(s) ERROR: 0:94: 'a' : variables with qualifier 'const' must be initialized ERROR: 0:97: 'out' : overloaded functions must have the same parameter storage qualifiers for argument 1 ERROR: 0:99: 'return' : type does not match, or is not convertible to, the function's return type ERROR: 0:115: 'return' : void function cannot return a value ERROR: 0:125: 'gl_TexCoord' : redeclaration of array with size ERROR: 0:152: 'matrixCompMult' : no matching overloaded function found ERROR: 0:152: '=' : cannot convert from ' const float' to ' temp 3X2 matrix of float' ERROR: 0:153: 'matrixCompMult' : no matching overloaded function found ERROR: 0:153: '=' : cannot convert from ' const float' to ' temp 3X4 matrix of float' ERROR: 0:160: 'constructor' : not enough data provided for construction ERROR: 0:160: '=' : cannot convert from ' const float' to ' temp 4X4 matrix of float' ERROR: 0:161: 'constructor' : too many arguments ERROR: 0:161: '=' : cannot convert from ' const float' to ' temp 4X4 matrix of float' ERROR: 0:165: 'constructor' : matrix constructed from matrix can only have one argument ERROR: 0:166: 'constructor' : matrix constructed from matrix can only have one argument ERROR: 0:172: 'constructor' : array constructor needs one argument per array element ERROR: 0:172: '=' : cannot convert from ' const float' to ' temp 2-element array of 3X3 matrix of float' ERROR: 0:184: 'texture2DLod' : required extension not requested: GL_ARB_shader_texture_lod ERROR: 0:185: 'texture3DProjLod' : required extension not requested: GL_ARB_shader_texture_lod ERROR: 0:186: 'texture1DProjLod' : required extension not requested: GL_ARB_shader_texture_lod ERROR: 0:187: 'shadow2DProjLod' : required extension not requested: GL_ARB_shader_texture_lod ERROR: 0:189: 'texture1DGradARB' : required extension not requested: GL_ARB_shader_texture_lod ERROR: 0:190: 'texture2DProjGradARB' : required extension not requested: GL_ARB_shader_texture_lod ERROR: 0:191: 'shadow2DProjGradARB' : required extension not requested: GL_ARB_shader_texture_lod ERROR: 0:209: 'shadow2DRectProjGradARB' : no matching overloaded function found ERROR: 0:209: 'assign' : cannot convert from ' const float' to ' temp 4-component vector of float' ERROR: 0:212: 'sampler2DRect' : Reserved word. ERROR: 0:244: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' global void' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:245: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' const int' and a right operand of type ' global void' (or there is no acceptable conversion) ERROR: 0:248: 'half floating-point suffix' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:248: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 55 compilation errors. No code generated. Shader version: 120 Requested GL_ARB_shader_texture_lod Requested GL_ARB_texture_rectangle ERROR: node is still EOpNull! 0:21 Function Definition: main( ( global void) 0:21 Function Parameters: 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp 2X3 matrix of float) 0:23 'm23' ( temp 2X3 matrix of float) 0:23 Construct mat2x3 ( temp 2X3 matrix of float) 0:23 'm' ( uniform 4X2 matrix of float) 0:27 Sequence 0:27 move second child to first child ( temp structure{ global float f}) 0:27 'sv' ( temp structure{ global float f}) 0:27 Construct structure ( temp structure{ global float f}) 0:27 Convert int to float ( temp float) 0:27 'a' ( temp int) 0:28 Sequence 0:28 move second child to first child ( temp 2-element array of float) 0:28 'ia' ( temp 2-element array of float) 0:28 Construct float ( temp 2-element array of float) 0:28 Constant: 0:28 3.000000 0:28 direct index ( temp float) 0:28 'i' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'f1' ( temp float) 0:29 Constant: 0:29 1.000000 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'f' ( temp float) 0:30 Convert int to float ( temp float) 0:30 'a' ( temp int) 0:31 move second child to first child ( temp float) 0:31 'f' ( temp float) 0:31 Convert int to float ( temp float) 0:31 'a' ( temp int) 0:33 Sequence 0:33 move second child to first child ( temp 3-component vector of float) 0:33 'v3' ( temp 3-component vector of float) 0:33 Convert int to float ( temp 3-component vector of float) 0:33 'iv3' ( temp 3-component vector of int) 0:34 move second child to first child ( temp float) 0:34 'f' ( temp float) 0:34 add ( temp float) 0:34 'f' ( temp float) 0:34 Convert int to float ( temp float) 0:34 'a' ( temp int) 0:35 move second child to first child ( temp float) 0:35 'f' ( temp float) 0:35 subtract ( temp float) 0:35 Convert int to float ( temp float) 0:35 'a' ( temp int) 0:35 'f' ( temp float) 0:36 add second child into first child ( temp float) 0:36 'f' ( temp float) 0:36 Convert int to float ( temp float) 0:36 'a' ( temp int) 0:37 move second child to first child ( temp float) 0:37 'f' ( temp float) 0:37 subtract ( temp float) 0:37 Convert int to float ( temp float) 0:37 'a' ( temp int) 0:37 'f' ( temp float) 0:38 multiply second child into first child ( temp 3-component vector of float) 0:38 'v3' ( temp 3-component vector of float) 0:38 Convert int to float ( temp 3-component vector of float) 0:38 'iv3' ( temp 3-component vector of int) 0:39 move second child to first child ( temp 3-component vector of float) 0:39 'v3' ( temp 3-component vector of float) 0:39 divide ( temp 3-component vector of float) 0:39 Convert int to float ( temp 3-component vector of float) 0:39 'iv3' ( temp 3-component vector of int) 0:39 Constant: 0:39 2.000000 0:40 move second child to first child ( temp 3-component vector of float) 0:40 'v3' ( temp 3-component vector of float) 0:40 vector-scale ( temp 3-component vector of float) 0:40 Constant: 0:40 3.000000 0:40 Convert int to float ( temp 3-component vector of float) 0:40 'iv3' ( temp 3-component vector of int) 0:41 move second child to first child ( temp 3-component vector of float) 0:41 'v3' ( temp 3-component vector of float) 0:41 vector-scale ( temp 3-component vector of float) 0:41 Constant: 0:41 2.000000 0:41 'v3' ( temp 3-component vector of float) 0:42 move second child to first child ( temp 3-component vector of float) 0:42 'v3' ( temp 3-component vector of float) 0:42 subtract ( temp 3-component vector of float) 0:42 'v3' ( temp 3-component vector of float) 0:42 Constant: 0:42 2.000000 0:43 Test condition and select ( temp void) 0:43 Condition 0:47 logical-or ( temp bool) 0:46 logical-or ( temp bool) 0:45 logical-or ( temp bool) 0:44 logical-or ( temp bool) 0:43 logical-or ( temp bool) 0:43 Compare Less Than ( temp bool) 0:43 'f' ( temp float) 0:43 Convert int to float ( temp float) 0:43 'a' ( temp int) 0:44 Compare Less Than or Equal ( temp bool) 0:44 Convert int to float ( temp float) 0:44 'a' ( temp int) 0:44 'f' ( temp float) 0:45 Compare Greater Than ( temp bool) 0:45 'f' ( temp float) 0:45 Convert int to float ( temp float) 0:45 'a' ( temp int) 0:46 Compare Greater Than or Equal ( temp bool) 0:46 'f' ( temp float) 0:46 Convert int to float ( temp float) 0:46 'a' ( temp int) 0:47 Compare Equal ( temp bool) 0:47 Convert int to float ( temp float) 0:47 'a' ( temp int) 0:47 'f' ( temp float) 0:48 Compare Not Equal ( temp bool) 0:48 'f' ( temp float) 0:48 Convert int to float ( temp float) 0:48 'a' ( temp int) 0:43 true case is null 0:49 move second child to first child ( temp float) 0:49 'f' ( temp float) 0:49 Test condition and select ( temp float) 0:49 Condition 0:49 'b' ( temp bool) 0:49 true case 0:49 Convert int to float ( temp float) 0:49 'a' ( temp int) 0:49 false case 0:49 'f' ( temp float) 0:50 move second child to first child ( temp float) 0:50 'f' ( temp float) 0:50 Test condition and select ( temp float) 0:50 Condition 0:50 'b' ( temp bool) 0:50 true case 0:50 'f' ( temp float) 0:50 false case 0:50 Convert int to float ( temp float) 0:50 'a' ( temp int) 0:51 move second child to first child ( temp float) 0:51 'f' ( temp float) 0:51 Convert int to float ( temp float) 0:51 Test condition and select ( temp int) 0:51 Condition 0:51 'b' ( temp bool) 0:51 true case 0:51 'a' ( temp int) 0:51 false case 0:51 'a' ( temp int) 0:52 Sequence 0:52 move second child to first child ( temp structure{ global float f}) 0:52 'news' ( temp structure{ global float f}) 0:52 'sv' ( temp structure{ global float f}) 0:54 vector swizzle ( temp 2-component vector of float) 0:54 'i' ( smooth in 4-component vector of float) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:55 'm' ( uniform 4X2 matrix of float) 0:56 'm' ( uniform 4X2 matrix of float) 0:58 'f' ( temp float) 0:59 move second child to first child ( temp float) 0:59 'f' ( temp float) 0:59 Convert int to float ( temp float) 0:59 'a' ( temp int) 0:60 'f' ( temp float) 0:61 'b' ( temp bool) 0:62 move second child to first child ( temp bool) 0:62 'b' ( temp bool) 0:62 'b' ( temp bool) 0:63 'f' ( temp float) 0:65 move second child to first child ( temp 4-component vector of float) 0:65 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:65 texture ( global 4-component vector of float) 0:65 's2D' ( uniform sampler2D) 0:65 'centTexCoord' ( centroid smooth in 2-component vector of float) 0:? Sequence 0:79 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:82 direct index ( temp float) 0:82 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:82 Constant: 0:82 0 (const int) 0:83 vector swizzle ( temp 2-component vector of float) 0:83 vector swizzle ( temp 4-component vector of float) 0:83 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:84 direct index ( temp float) 0:84 'centTexCoord' ( centroid smooth in 2-component vector of float) 0:84 Constant: 0:84 0 (const int) 0:85 move second child to first child ( temp bool) 0:85 Comma ( temp bool) 0:85 'a' ( temp int) 0:85 'b' ( temp bool) 0:85 Constant: 0:85 true (const bool) 0:91 Function Definition: main( ( global int) 0:91 Function Parameters: 0:92 Function Definition: main(i1; ( global void) 0:92 Function Parameters: 0:92 'a' ( in int) 0:97 Function Definition: foo(f1; ( global int) 0:97 Function Parameters: 0:97 'a' ( out float) 0:99 Sequence 0:99 Branch: Return with expression 0:99 Constant: 0:99 3.200000 0:100 Function Call: foo(f1; ( global int) 0:100 'a' ( out float) 0:103 Function Definition: gen(vf3; ( global bool) 0:103 Function Parameters: 0:103 'v' ( in 3-component vector of float) 0:105 Sequence 0:105 Test condition and select ( temp void) 0:105 Condition 0:105 logical-and ( temp bool) 0:105 Compare Less Than ( temp bool) 0:105 Absolute value ( global float) 0:105 direct index ( temp float) 0:105 'v' ( in 3-component vector of float) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0.000100 0:105 Compare Less Than ( temp bool) 0:105 Absolute value ( global float) 0:105 direct index ( temp float) 0:105 'v' ( in 3-component vector of float) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 0.000100 0:105 true case 0:106 Branch: Return with expression 0:106 Constant: 0:106 true (const bool) 0:109 Function Definition: v1( ( global void) 0:109 Function Parameters: 0:113 Function Definition: v2( ( global void) 0:113 Function Parameters: 0:115 Sequence 0:115 Branch: Return 0:118 Function Definition: atest( ( global void) 0:118 Function Parameters: 0:120 Sequence 0:120 Sequence 0:120 move second child to first child ( temp 4-component vector of float) 0:120 'v' ( temp 4-component vector of float) 0:120 direct index ( smooth temp 4-component vector of float TexCoord) 0:120 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:120 Constant: 0:120 1 (const int) 0:121 add second child into first child ( temp 4-component vector of float) 0:121 'v' ( temp 4-component vector of float) 0:121 direct index ( smooth temp 4-component vector of float TexCoord) 0:121 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:121 Constant: 0:121 3 (const int) 0:139 Function Definition: foo123( ( global void) 0:139 Function Parameters: 0:141 Sequence 0:141 Sequence 0:141 move second child to first child ( temp 2X2 matrix of float) 0:141 'r2' ( temp 2X2 matrix of float) 0:141 component-wise multiply ( global 2X2 matrix of float) 0:141 'm22' ( global 2X2 matrix of float) 0:141 'm22' ( global 2X2 matrix of float) 0:142 Sequence 0:142 move second child to first child ( temp 3X3 matrix of float) 0:142 'r3' ( temp 3X3 matrix of float) 0:142 component-wise multiply ( global 3X3 matrix of float) 0:142 'm33' ( global 3X3 matrix of float) 0:142 'm33' ( global 3X3 matrix of float) 0:143 Sequence 0:143 move second child to first child ( temp 4X4 matrix of float) 0:143 'r4' ( temp 4X4 matrix of float) 0:143 component-wise multiply ( global 4X4 matrix of float) 0:143 'm44' ( global 4X4 matrix of float) 0:143 'm44' ( global 4X4 matrix of float) 0:145 Sequence 0:145 move second child to first child ( temp 2X3 matrix of float) 0:145 'r23' ( temp 2X3 matrix of float) 0:145 component-wise multiply ( global 2X3 matrix of float) 0:145 'm23' ( global 2X3 matrix of float) 0:145 'm23' ( global 2X3 matrix of float) 0:146 Sequence 0:146 move second child to first child ( temp 2X4 matrix of float) 0:146 'r24' ( temp 2X4 matrix of float) 0:146 component-wise multiply ( global 2X4 matrix of float) 0:146 'm24' ( global 2X4 matrix of float) 0:146 'm24' ( global 2X4 matrix of float) 0:147 Sequence 0:147 move second child to first child ( temp 3X2 matrix of float) 0:147 'r32' ( temp 3X2 matrix of float) 0:147 component-wise multiply ( global 3X2 matrix of float) 0:147 'm32' ( global 3X2 matrix of float) 0:147 'm32' ( global 3X2 matrix of float) 0:148 Sequence 0:148 move second child to first child ( temp 3X4 matrix of float) 0:148 'r34' ( temp 3X4 matrix of float) 0:148 component-wise multiply ( global 3X4 matrix of float) 0:148 'm34' ( global 3X4 matrix of float) 0:148 'm34' ( global 3X4 matrix of float) 0:149 Sequence 0:149 move second child to first child ( temp 4X2 matrix of float) 0:149 'r42' ( temp 4X2 matrix of float) 0:149 component-wise multiply ( global 4X2 matrix of float) 0:149 'm42' ( global 4X2 matrix of float) 0:149 'm42' ( global 4X2 matrix of float) 0:150 Sequence 0:150 move second child to first child ( temp 4X3 matrix of float) 0:150 'r43' ( temp 4X3 matrix of float) 0:150 component-wise multiply ( global 4X3 matrix of float) 0:150 'm43' ( global 4X3 matrix of float) 0:150 'm43' ( global 4X3 matrix of float) 0:156 Function Definition: matConst( ( global void) 0:156 Function Parameters: 0:? Sequence 0:162 Sequence 0:162 move second child to first child ( temp 4X4 matrix of float) 0:162 'm4g' ( temp 4X4 matrix of float) 0:162 Construct mat4 ( temp 4X4 matrix of float) 0:162 'v2' ( temp 2-component vector of float) 0:162 'v3' ( temp 3-component vector of float) 0:162 'v3' ( temp 3-component vector of float) 0:162 'v3' ( temp 3-component vector of float) 0:162 'v3' ( temp 3-component vector of float) 0:162 'v3' ( temp 3-component vector of float) 0:163 Sequence 0:163 move second child to first child ( temp 4X4 matrix of float) 0:163 'm4' ( temp 4X4 matrix of float) 0:163 Construct mat4 ( temp 4X4 matrix of float) 0:163 'v2' ( temp 2-component vector of float) 0:163 'v3' ( temp 3-component vector of float) 0:163 'v3' ( temp 3-component vector of float) 0:163 'v3' ( temp 3-component vector of float) 0:163 'v3' ( temp 3-component vector of float) 0:163 'v2' ( temp 2-component vector of float) 0:164 Sequence 0:164 move second child to first child ( temp 3X3 matrix of float) 0:164 'm3' ( temp 3X3 matrix of float) 0:164 Construct mat3 ( temp 3X3 matrix of float) 0:164 'm4' ( temp 4X4 matrix of float) 0:165 Sequence 0:165 move second child to first child ( temp 3X3 matrix of float) 0:165 'm3b1' ( temp 3X3 matrix of float) 0:165 Construct mat3 ( temp 3X3 matrix of float) 0:165 'm4' ( temp 4X4 matrix of float) 0:165 'v2' ( temp 2-component vector of float) 0:166 Sequence 0:166 move second child to first child ( temp 3X3 matrix of float) 0:166 'm3b2' ( temp 3X3 matrix of float) 0:166 Construct mat3 ( temp 3X3 matrix of float) 0:166 'm4' ( temp 4X4 matrix of float) 0:166 'm4' ( temp 4X4 matrix of float) 0:167 Sequence 0:167 move second child to first child ( temp 3X2 matrix of float) 0:167 'm32' ( temp 3X2 matrix of float) 0:167 Construct mat3x2 ( temp 3X2 matrix of float) 0:167 'm4' ( temp 4X4 matrix of float) 0:168 Sequence 0:168 move second child to first child ( temp 4X4 matrix of float) 0:168 'm4c' ( temp 4X4 matrix of float) 0:168 Construct mat4 ( temp 4X4 matrix of float) 0:168 'm32' ( temp 3X2 matrix of float) 0:169 Sequence 0:169 move second child to first child ( temp 3X3 matrix of float) 0:169 'm3s' ( temp 3X3 matrix of float) 0:169 Construct mat3 ( temp 3X3 matrix of float) 0:169 direct index ( temp float) 0:169 'v2' ( temp 2-component vector of float) 0:169 Constant: 0:169 0 (const int) 0:171 Sequence 0:171 move second child to first child ( temp 2-element array of 3X3 matrix of float) 0:171 'm3a1' ( temp 2-element array of 3X3 matrix of float) 0:171 Construct mat3 ( temp 2-element array of 3X3 matrix of float) 0:171 'm3s' ( temp 3X3 matrix of float) 0:171 'm3s' ( temp 3X3 matrix of float) 0:179 Function Definition: foo2323( ( global void) 0:179 Function Parameters: 0:? Sequence 0:184 move second child to first child ( temp 4-component vector of float) 0:184 'v' ( temp 4-component vector of float) 0:184 textureLod ( global 4-component vector of float) 0:184 's2D' ( uniform sampler2D) 0:184 'v2' ( temp 2-component vector of float) 0:184 'f' ( temp float) 0:185 move second child to first child ( temp 4-component vector of float) 0:185 'v' ( temp 4-component vector of float) 0:185 textureProjLod ( global 4-component vector of float) 0:185 's3D' ( uniform sampler3D) 0:185 'v' ( temp 4-component vector of float) 0:185 'f' ( temp float) 0:186 move second child to first child ( temp 4-component vector of float) 0:186 'v' ( temp 4-component vector of float) 0:186 textureProjLod ( global 4-component vector of float) 0:186 's1D' ( uniform sampler1D) 0:186 'v' ( temp 4-component vector of float) 0:186 'f' ( temp float) 0:187 move second child to first child ( temp 4-component vector of float) 0:187 'v' ( temp 4-component vector of float) 0:187 textureProjLod ( global 4-component vector of float) 0:187 's2DS' ( uniform sampler2DShadow) 0:187 'v' ( temp 4-component vector of float) 0:187 'f' ( temp float) 0:189 move second child to first child ( temp 4-component vector of float) 0:189 'v' ( temp 4-component vector of float) 0:189 textureGrad ( global 4-component vector of float) 0:189 's1D' ( uniform sampler1D) 0:189 'f' ( temp float) 0:189 'f' ( temp float) 0:189 'f' ( temp float) 0:190 move second child to first child ( temp 4-component vector of float) 0:190 'v' ( temp 4-component vector of float) 0:190 textureProjGrad ( global 4-component vector of float) 0:190 's2D' ( uniform sampler2D) 0:190 'v' ( temp 4-component vector of float) 0:190 'v2' ( temp 2-component vector of float) 0:190 'v2' ( temp 2-component vector of float) 0:191 move second child to first child ( temp 4-component vector of float) 0:191 'v' ( temp 4-component vector of float) 0:191 textureProjGrad ( global 4-component vector of float) 0:191 's2DS' ( uniform sampler2DShadow) 0:191 'v' ( temp 4-component vector of float) 0:191 'v2' ( temp 2-component vector of float) 0:191 'v2' ( temp 2-component vector of float) 0:196 Function Definition: foo2324( ( global void) 0:196 Function Parameters: 0:? Sequence 0:201 move second child to first child ( temp 4-component vector of float) 0:201 'v' ( temp 4-component vector of float) 0:201 textureLod ( global 4-component vector of float) 0:201 's2D' ( uniform sampler2D) 0:201 'v2' ( temp 2-component vector of float) 0:201 'f' ( temp float) 0:202 move second child to first child ( temp 4-component vector of float) 0:202 'v' ( temp 4-component vector of float) 0:202 textureProjLod ( global 4-component vector of float) 0:202 's3D' ( uniform sampler3D) 0:202 'v' ( temp 4-component vector of float) 0:202 'f' ( temp float) 0:203 move second child to first child ( temp 4-component vector of float) 0:203 'v' ( temp 4-component vector of float) 0:203 textureProjLod ( global 4-component vector of float) 0:203 's1D' ( uniform sampler1D) 0:203 'v' ( temp 4-component vector of float) 0:203 'f' ( temp float) 0:204 move second child to first child ( temp 4-component vector of float) 0:204 'v' ( temp 4-component vector of float) 0:204 textureProjLod ( global 4-component vector of float) 0:204 's2DS' ( uniform sampler2DShadow) 0:204 'v' ( temp 4-component vector of float) 0:204 'f' ( temp float) 0:206 move second child to first child ( temp 4-component vector of float) 0:206 'v' ( temp 4-component vector of float) 0:206 textureGrad ( global 4-component vector of float) 0:206 's1D' ( uniform sampler1D) 0:206 'f' ( temp float) 0:206 'f' ( temp float) 0:206 'f' ( temp float) 0:207 move second child to first child ( temp 4-component vector of float) 0:207 'v' ( temp 4-component vector of float) 0:207 textureProjGrad ( global 4-component vector of float) 0:207 's2D' ( uniform sampler2D) 0:207 'v' ( temp 4-component vector of float) 0:207 'v2' ( temp 2-component vector of float) 0:207 'v2' ( temp 2-component vector of float) 0:208 move second child to first child ( temp 4-component vector of float) 0:208 'v' ( temp 4-component vector of float) 0:208 textureProjGrad ( global 4-component vector of float) 0:208 's2DS' ( uniform sampler2DShadow) 0:208 'v' ( temp 4-component vector of float) 0:208 'v2' ( temp 2-component vector of float) 0:208 'v2' ( temp 2-component vector of float) 0:209 'v' ( temp 4-component vector of float) 0:214 Function Definition: foo121111( ( global void) 0:214 Function Parameters: 0:? Sequence 0:217 Sequence 0:217 move second child to first child ( temp 4-component vector of float) 0:217 'v' ( temp 4-component vector of float) 0:217 texture ( global 4-component vector of float) 0:217 's2DRbad' ( uniform sampler2DRect) 0:217 'v2' ( temp 2-component vector of float) 0:225 Function Definition: foo12111( ( global void) 0:225 Function Parameters: 0:? Sequence 0:231 move second child to first child ( temp 4-component vector of float) 0:231 'v' ( temp 4-component vector of float) 0:231 texture ( global 4-component vector of float) 0:231 's2DR' ( uniform sampler2DRect) 0:231 'v2' ( temp 2-component vector of float) 0:232 move second child to first child ( temp 4-component vector of float) 0:232 'v' ( temp 4-component vector of float) 0:232 textureProj ( global 4-component vector of float) 0:232 's2DR' ( uniform sampler2DRect) 0:232 'v3' ( temp 3-component vector of float) 0:233 move second child to first child ( temp 4-component vector of float) 0:233 'v' ( temp 4-component vector of float) 0:233 textureProj ( global 4-component vector of float) 0:233 's2DR' ( uniform sampler2DRect) 0:233 'v4' ( temp 4-component vector of float) 0:234 move second child to first child ( temp 4-component vector of float) 0:234 'v' ( temp 4-component vector of float) 0:234 texture ( global 4-component vector of float) 0:234 's2DRS' ( uniform sampler2DRectShadow) 0:234 'v3' ( temp 3-component vector of float) 0:235 move second child to first child ( temp 4-component vector of float) 0:235 'v' ( temp 4-component vector of float) 0:235 textureProj ( global 4-component vector of float) 0:235 's2DRS' ( uniform sampler2DRectShadow) 0:235 'v4' ( temp 4-component vector of float) 0:237 move second child to first child ( temp 4-component vector of float) 0:237 'v' ( temp 4-component vector of float) 0:237 textureProjGrad ( global 4-component vector of float) 0:237 's2DRS' ( uniform sampler2DRectShadow) 0:237 'v' ( temp 4-component vector of float) 0:237 'v2' ( temp 2-component vector of float) 0:237 'v2' ( temp 2-component vector of float) 0:240 Function Definition: voidTernary( ( global void) 0:240 Function Parameters: 0:? Sequence 0:243 Test condition and select ( temp void) 0:243 Condition 0:243 'b' ( temp bool) 0:243 true case 0:243 Function Call: foo121111( ( global void) 0:243 false case 0:243 Function Call: foo12111( ( global void) 0:244 Constant: 0:244 4 (const int) 0:245 Function Call: foo12111( ( global void) 0:? Linker Objects 0:? 'lowp' ( global float) 0:? 'mediump' ( global float) 0:? 'highp' ( global float) 0:? 'precision' ( global float) 0:? 'i' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) 0:? 's2D' ( uniform sampler2D) 0:? 'centTexCoord' ( centroid smooth in 2-component vector of float) 0:? 'm' ( uniform 4X2 matrix of float) 0:? 'imageBuffer' ( global float) 0:? 'uimage2DRect' ( global float) 0:? 'a' ( temp int) 0:? 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'm22' ( global 2X2 matrix of float) 0:? 'm23' ( global 2X3 matrix of float) 0:? 'm24' ( global 2X4 matrix of float) 0:? 'm32' ( global 3X2 matrix of float) 0:? 'm33' ( global 3X3 matrix of float) 0:? 'm34' ( global 3X4 matrix of float) 0:? 'm42' ( global 4X2 matrix of float) 0:? 'm43' ( global 4X3 matrix of float) 0:? 'm44' ( global 4X4 matrix of float) 0:? 's3D' ( uniform sampler3D) 0:? 's1D' ( uniform sampler1D) 0:? 's2DS' ( uniform sampler2DShadow) 0:? 's2DRbad' ( uniform sampler2DRect) 0:? 's2DR' ( uniform sampler2DRect) 0:? 's2DRS' ( uniform sampler2DRectShadow) 0:? 'halfFloat1' ( global float) Linked fragment stage: ERROR: Linking fragment stage: Recursion detected: foo(f1; calling foo(f1; Shader version: 120 Requested GL_ARB_shader_texture_lod Requested GL_ARB_texture_rectangle ERROR: node is still EOpNull! 0:92 Function Definition: main(i1; ( global void) 0:92 Function Parameters: 0:92 'a' ( in int) 0:? Linker Objects 0:? 'lowp' ( global float) 0:? 'mediump' ( global float) 0:? 'highp' ( global float) 0:? 'precision' ( global float) 0:? 'i' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) 0:? 's2D' ( uniform sampler2D) 0:? 'centTexCoord' ( centroid smooth in 2-component vector of float) 0:? 'm' ( uniform 4X2 matrix of float) 0:? 'imageBuffer' ( global float) 0:? 'uimage2DRect' ( global float) 0:? 'a' ( temp int) 0:? 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'm22' ( global 2X2 matrix of float) 0:? 'm23' ( global 2X3 matrix of float) 0:? 'm24' ( global 2X4 matrix of float) 0:? 'm32' ( global 3X2 matrix of float) 0:? 'm33' ( global 3X3 matrix of float) 0:? 'm34' ( global 3X4 matrix of float) 0:? 'm42' ( global 4X2 matrix of float) 0:? 'm43' ( global 4X3 matrix of float) 0:? 'm44' ( global 4X4 matrix of float) 0:? 's3D' ( uniform sampler3D) 0:? 's1D' ( uniform sampler1D) 0:? 's2DS' ( uniform sampler2DShadow) 0:? 's2DRbad' ( uniform sampler2DRect) 0:? 's2DR' ( uniform sampler2DRect) 0:? 's2DRS' ( uniform sampler2DRectShadow) 0:? 'halfFloat1' ( global float) glslang-16.0.0/Test/baseResults/120.vert.out000066400000000000000000000557041506534232700204740ustar00rootroot00000000000000120.vert ERROR: 0:3: 'in for stage inputs' : not supported for this version or the enabled extensions ERROR: 0:4: 'out for stage outputs' : not supported for this version or the enabled extensions ERROR: 0:11: 'gl_Position' : cannot add storage, auxiliary, memory, interpolation, layout, or precision qualifier to an existing variable ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:12: '' : replicated qualifiers ERROR: 0:12: 'foo' : identifier not previously declared ERROR: 0:21: 'gl_ClipDistance' : undeclared identifier ERROR: 0:21: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector ERROR: 0:21: 'assign' : l-value required (can't modify a const) ERROR: 0:28: 'length' : array must be declared with a size before using this method ERROR: 0:31: 'length' : incomplete method syntax ERROR: 0:32: 'length' : method does not accept any arguments ERROR: 0:33: '.' : cannot apply to an array: flizbit ERROR: 0:33: '=' : cannot convert from ' temp 7-element array of float' to ' temp int' ERROR: 0:34: '.' : cannot apply to an array: flizbit ERROR: 0:34: 'f' : can't use function syntax on variable ERROR: 0:34: 'a4' : redefinition ERROR: 0:35: 'arrays of arrays' : not supported with this profile: none ERROR: 0:36: 'arrays of arrays' : not supported with this profile: none ERROR: 0:37: 'arrays of arrays' : not supported with this profile: none ERROR: 0:37: 'arrays of arrays' : not supported with this profile: none ERROR: 0:38: 'arrays of arrays' : not supported with this profile: none ERROR: 0:39: 'arrays of arrays' : not supported with this profile: none ERROR: 0:40: 'arrays of arrays' : not supported with this profile: none ERROR: 0:40: 'constructor' : array constructor needs one argument per array element ERROR: 0:40: 'arrays of arrays' : not supported with this profile: none ERROR: 0:40: '=' : cannot convert from ' const float' to ' temp 2-element array of 3-element array of float' ERROR: 0:41: 'arrays of arrays' : not supported with this profile: none ERROR: 0:41: 'constructor' : array constructor needs one argument per array element ERROR: 0:41: 'arrays of arrays' : not supported with this profile: none ERROR: 0:41: '=' : cannot convert from ' const float' to ' temp 2-element array of 3-element array of float' ERROR: 0:50: 'arrays of arrays' : not supported with this profile: none ERROR: 0:51: 'arrays of arrays' : not supported with this profile: none ERROR: 0:52: 'arrays of arrays' : not supported with this profile: none ERROR: 0:53: 'arrays of arrays' : not supported with this profile: none ERROR: 0:56: 'out' : overloaded functions must have the same parameter storage qualifiers for argument 1 ERROR: 0:57: 'overloadA' : overloaded functions must have the same return type ERROR: 0:87: 'overloadC' : no matching overloaded function found ERROR: 0:90: 'overloadC' : no matching overloaded function found ERROR: 0:95: 'overloadD' : ambiguous function signature match: multiple signatures match under implicit type conversion ERROR: 0:98: 'overloadB' : can't use function syntax on variable ERROR: 0:106: 'overloadC' : no matching overloaded function found ERROR: 0:107: 'overloadE' : no matching overloaded function found ERROR: 0:108: 'overloadE' : no matching overloaded function found ERROR: 0:111: 'overloadE' : no matching overloaded function found ERROR: 0:117: 'overloadF' : no matching overloaded function found ERROR: 0:121: 'gl_TexCoord array size' : must be less than or equal to gl_MaxTextureCoords (32) ERROR: 0:154: 'non-float shader input/output' : not supported for this version or the enabled extensions ERROR: 0:165: 'switch' : Reserved word. ERROR: 0:171: 'default' : Reserved word. ERROR: 0:165: 'switch statements' : not supported for this version or the enabled extensions ERROR: 0:176: 'bit shift left' : not supported for this version or the enabled extensions ERROR: 0:176: 'bit shift right' : not supported for this version or the enabled extensions ERROR: 0:176: 'bitwise and' : not supported for this version or the enabled extensions ERROR: 0:176: 'bitwise inclusive or' : not supported for this version or the enabled extensions ERROR: 0:179: 'modf' : no matching overloaded function found ERROR: 0:179: '=' : cannot convert from ' const float' to ' temp 3-component vector of float' ERROR: 0:180: 'trunc' : no matching overloaded function found ERROR: 0:181: 'round' : no matching overloaded function found ERROR: 0:181: '=' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:182: 'roundEven' : no matching overloaded function found ERROR: 0:182: '=' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:183: 'isnan' : no matching overloaded function found ERROR: 0:183: '=' : cannot convert from ' const float' to ' temp 2-component vector of bool' ERROR: 0:184: 'isinf' : no matching overloaded function found ERROR: 0:184: '=' : cannot convert from ' const float' to ' temp 4-component vector of bool' ERROR: 0:186: 'sinh' : no matching overloaded function found ERROR: 0:187: 'cosh' : no matching overloaded function found ERROR: 0:187: 'tanh' : no matching overloaded function found ERROR: 0:188: 'c4D' : undeclared identifier ERROR: 0:188: 'asinh' : no matching overloaded function found ERROR: 0:188: 'acosh' : no matching overloaded function found ERROR: 0:189: 'atanh' : no matching overloaded function found ERROR: 0:191: 'gl_VertexID' : undeclared identifier ERROR: 0:191: '=' : cannot convert from ' temp float' to ' temp int' ERROR: 0:192: 'gl_ClipDistance' : undeclared identifier ERROR: 0:192: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector ERROR: 0:192: 'assign' : l-value required (can't modify a const) ERROR: 0:195: 'gl_ModelViewMatrix' : identifiers starting with "gl_" are reserved ERROR: 0:200: 'token pasting (##)' : not supported for this version or the enabled extensions ERROR: 0:203: 'token pasting (##)' : not supported for this version or the enabled extensions ERROR: 0:205: '' : syntax error, unexpected IDENTIFIER ERROR: 82 compilation errors. No code generated. Shader version: 120 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of float) 0:17 'centTexCoord' ( invariant smooth out 2-component vector of float) 0:17 'attv2' ( in 2-component vector of float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'gl_Position' ( invariant gl_Position 4-component vector of float Position) 0:18 'attv4' ( in 4-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'gl_ClipVertex' ( gl_ClipVertex 4-component vector of float ClipVertex) 0:20 'attv4' ( in 4-component vector of float) 0:21 move second child to first child ( temp float) 0:21 Constant: 0:21 0.000000 0:21 Constant: 0:21 0.200000 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'gl_Position' ( invariant gl_Position 4-component vector of float Position) 0:25 direct index ( temp 4-component vector of float) 0:25 'b' ( temp 12-element array of 4-component vector of float) 0:25 Constant: 0:25 11 (const int) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'a1' ( temp int) 0:28 Constant: 0:28 1 (const int) 0:30 Sequence 0:30 move second child to first child ( temp int) 0:30 'aa' ( temp int) 0:30 Constant: 0:30 7 (const int) 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'a2' ( temp int) 0:32 Sequence 0:32 move second child to first child ( temp int) 0:32 'a3' ( temp int) 0:32 Constant: 0:32 1 (const int) 0:43 move second child to first child ( temp float) 0:43 'gl_PointSize' ( invariant gl_PointSize float PointSize) 0:43 Constant: 0:43 3.800000 0:61 Function Definition: overloadB(f1;f1; ( global void) 0:61 Function Parameters: 0:61 '' ( in float) 0:61 '' ( const (read only) float) 0:78 Function Definition: foo( ( global void) 0:78 Function Parameters: 0:? Sequence 0:83 Function Call: overloadB(f1;f1; ( global void) 0:83 'f' ( temp float) 0:83 'f' ( temp float) 0:84 Function Call: overloadB(f1;f1; ( global void) 0:84 'f' ( temp float) 0:84 Constant: 0:84 2.000000 0:85 Function Call: overloadB(f1;f1; ( global void) 0:85 Constant: 0:85 1.000000 0:85 Convert int to float ( temp float) 0:85 'i' ( temp int) 0:87 Constant: 0:87 0.000000 0:88 Function Call: overloadC(i1;i1; ( global 2-component vector of float) 0:88 Constant: 0:88 1 (const int) 0:88 'i' ( temp int) 0:89 Function Call: overloadC(vf2;vf2; ( global 2-component vector of float) 0:89 Constant: 0:89 1.000000 0:89 1.000000 0:89 Constant: 0:89 2.000000 0:89 2.000000 0:90 Constant: 0:90 0.000000 0:91 Function Call: overloadC(vf2;vf2; ( global 2-component vector of float) 0:91 Constant: 0:91 1.000000 0:91 1.000000 0:91 Constant: 0:91 2.000000 0:91 2.000000 0:93 Function Call: overloadD(i1;f1; ( global 3-component vector of float) 0:93 'i' ( temp int) 0:93 'f' ( temp float) 0:94 Function Call: overloadD(f1;i1; ( global 3-component vector of float) 0:94 'f' ( temp float) 0:94 'i' ( temp int) 0:95 Function Call: overloadD(f1;i1; ( global 3-component vector of float) 0:95 Convert int to float ( temp float) 0:95 'i' ( temp int) 0:95 'i' ( temp int) 0:98 Constant: 0:98 0.000000 0:100 Constant: 0:100 0.841471 0:101 texture ( global 4-component vector of float) 0:101 's2D' ( uniform sampler2D) 0:101 Constant: 0:101 0.000000 0:101 0.000000 0:102 clamp ( global 4-component vector of float) 0:102 'attv4' ( in 4-component vector of float) 0:102 Constant: 0:102 0.000000 0:102 Constant: 0:102 1.000000 0:103 clamp ( global 4-component vector of float) 0:103 Convert int to float ( temp 4-component vector of float) 0:103 Convert float to int ( temp 4-component vector of int) 0:103 'attv4' ( in 4-component vector of float) 0:103 Constant: 0:103 0.000000 0:103 Constant: 0:103 1.000000 0:106 Constant: 0:106 0.000000 0:107 Constant: 0:107 0.000000 0:108 Constant: 0:108 0.000000 0:109 Function Call: overloadE(vf2; ( global 3-component vector of float) 0:109 Constant: 0:109 3.300000 0:109 3.300000 0:110 Function Call: overloadE(mf22; ( global 3-component vector of float) 0:110 Constant: 0:110 0.500000 0:110 0.000000 0:110 0.000000 0:110 0.500000 0:111 Constant: 0:111 0.000000 0:112 Function Call: overloadE(vf2; ( global 3-component vector of float) 0:112 Constant: 0:112 1.000000 0:112 1.000000 0:115 Function Call: overloadE(f1[2]; ( global 3-component vector of float) 0:115 'b' ( temp 2-element array of float) 0:117 Constant: 0:117 0.000000 0:118 Function Call: overloadF(i1; ( global 3-component vector of float) 0:118 Constant: 0:118 1 (const int) 0:128 Function Definition: foo2( ( global void) 0:128 Function Parameters: 0:? Sequence 0:135 Comma ( global void) 0:135 Function Call: outFun(f1;vi2;i1;f1; ( global void) 0:135 Convert int to float ( temp float) 0:135 'i' ( temp int) 0:135 'tempArg' ( temp 2-component vector of int) 0:135 'i' ( temp int) 0:135 'f' ( temp float) 0:135 move second child to first child ( temp 2-component vector of float) 0:135 'v2' ( temp 2-component vector of float) 0:135 Convert int to float ( temp 2-component vector of float) 0:135 'tempArg' ( temp 2-component vector of int) 0:136 Comma ( global int) 0:136 move second child to first child ( temp int) 0:136 'tempReturn' ( global int) 0:136 Function Call: outFunRet(f1;i1;i1;vi4; ( global int) 0:136 Convert int to float ( temp float) 0:136 'i' ( temp int) 0:136 'tempArg' ( temp int) 0:136 'i' ( temp int) 0:136 'tempArg' ( temp 4-component vector of int) 0:136 move second child to first child ( temp float) 0:136 'f' ( temp float) 0:136 Convert int to float ( temp float) 0:136 'tempArg' ( temp int) 0:136 move second child to first child ( temp 4-component vector of float) 0:136 'v4' ( temp 4-component vector of float) 0:136 Convert int to float ( temp 4-component vector of float) 0:136 'tempArg' ( temp 4-component vector of int) 0:136 'tempReturn' ( global int) 0:137 Sequence 0:137 move second child to first child ( temp float) 0:137 'ret' ( temp float) 0:137 Convert int to float ( temp float) 0:137 Comma ( global int) 0:137 move second child to first child ( temp int) 0:137 'tempReturn' ( global int) 0:137 Function Call: outFunRet(f1;i1;i1;vi4; ( global int) 0:137 Convert int to float ( temp float) 0:137 'i' ( temp int) 0:137 'tempArg' ( temp int) 0:137 'i' ( temp int) 0:137 'tempArg' ( temp 4-component vector of int) 0:137 move second child to first child ( temp float) 0:137 'f' ( temp float) 0:137 Convert int to float ( temp float) 0:137 'tempArg' ( temp int) 0:137 move second child to first child ( temp 4-component vector of float) 0:137 'v4' ( temp 4-component vector of float) 0:137 Convert int to float ( temp 4-component vector of float) 0:137 'tempArg' ( temp 4-component vector of int) 0:137 'tempReturn' ( global int) 0:138 Sequence 0:138 move second child to first child ( temp 2-component vector of float) 0:138 'ret2' ( temp 2-component vector of float) 0:138 Convert int to float ( temp 2-component vector of float) 0:138 Comma ( global 2-component vector of int) 0:138 move second child to first child ( temp 2-component vector of int) 0:138 'tempReturn' ( global 2-component vector of int) 0:138 Function Call: outFunRet(f1;vi4;i1;vi4; ( global 2-component vector of int) 0:138 Convert int to float ( temp float) 0:138 'i' ( temp int) 0:138 'tempArg' ( temp 4-component vector of int) 0:138 'i' ( temp int) 0:138 'tempArg' ( temp 4-component vector of int) 0:138 move second child to first child ( temp 4-component vector of float) 0:138 'v4' ( temp 4-component vector of float) 0:138 Convert int to float ( temp 4-component vector of float) 0:138 'tempArg' ( temp 4-component vector of int) 0:138 move second child to first child ( temp 4-component vector of float) 0:138 'v4' ( temp 4-component vector of float) 0:138 Convert int to float ( temp 4-component vector of float) 0:138 'tempArg' ( temp 4-component vector of int) 0:138 'tempReturn' ( global 2-component vector of int) 0:139 Sequence 0:139 move second child to first child ( temp bool) 0:139 'b' ( temp bool) 0:139 any ( global bool) 0:139 Compare Less Than ( global 4-component vector of bool) 0:139 'v4' ( temp 4-component vector of float) 0:139 'attv4' ( in 4-component vector of float) 0:142 Function Definition: noise( ( global void) 0:142 Function Parameters: 0:144 Sequence 0:144 Sequence 0:144 move second child to first child ( temp float) 0:144 'f1' ( temp float) 0:144 noise ( global float) 0:144 Constant: 0:144 1.000000 0:145 Sequence 0:145 move second child to first child ( temp 2-component vector of float) 0:145 'f2' ( temp 2-component vector of float) 0:145 noise ( global 2-component vector of float) 0:145 Constant: 0:145 1.000000 0:145 1.000000 0:146 Sequence 0:146 move second child to first child ( temp 3-component vector of float) 0:146 'f3' ( temp 3-component vector of float) 0:146 noise ( global 3-component vector of float) 0:146 Constant: 0:146 1.000000 0:146 1.000000 0:146 1.000000 0:147 Sequence 0:147 move second child to first child ( temp 4-component vector of float) 0:147 'f4' ( temp 4-component vector of float) 0:147 noise ( global 4-component vector of float) 0:147 Constant: 0:147 1.000000 0:147 1.000000 0:147 1.000000 0:147 1.000000 0:162 Function Definition: foo213( ( global void) 0:162 Function Parameters: 0:164 Sequence 0:164 Sequence 0:164 move second child to first child ( temp float) 0:164 'f' ( temp float) 0:164 Constant: 0:164 3.000000 0:165 switch 0:165 condition 0:165 'c' ( uniform int) 0:165 body 0:165 Sequence 0:166 case: with expression 0:166 Constant: 0:166 1 (const int) 0:? Sequence 0:167 move second child to first child ( temp float) 0:167 'f' ( temp float) 0:167 sine ( global float) 0:167 'f' ( temp float) 0:168 Branch: Break 0:169 case: with expression 0:169 Constant: 0:169 2 (const int) 0:? Sequence 0:170 move second child to first child ( temp float) 0:170 'f' ( temp float) 0:170 component-wise multiply ( temp float) 0:170 'f' ( temp float) 0:170 'f' ( temp float) 0:171 default: 0:? Sequence 0:172 move second child to first child ( temp float) 0:172 'f' ( temp float) 0:172 Constant: 0:172 3.000000 0:176 inclusive-or ( temp int) 0:176 left-shift ( temp int) 0:176 'i' ( temp int) 0:176 Constant: 0:176 3 (const int) 0:176 Constant: 0:176 69 (const int) 0:180 Sequence 0:180 move second child to first child ( temp float) 0:180 't' ( temp float) 0:180 Constant: 0:180 0.000000 0:186 Constant: 0:186 0.000000 0:188 Constant: 0:188 0.000000 0:189 Constant: 0:189 0.000000 0:192 move second child to first child ( temp float) 0:192 Constant: 0:192 0.000000 0:192 Constant: 0:192 0.300000 0:? Linker Objects 0:? 'i' ( in 4-component vector of float) 0:? 'o' ( smooth out 4-component vector of float) 0:? 'attv2' ( in 2-component vector of float) 0:? 'attv4' ( in 4-component vector of float) 0:? 's2D' ( uniform sampler2D) 0:? 'centTexCoord' ( invariant smooth out 2-component vector of float) 0:? 'initted' ( uniform float) 0:? 3.400000 0:? 'concall' ( const float) 0:? 0.295520 0:? 'gl_TexCoord' ( smooth out 35-element array of 4-component vector of float TexCoord) 0:? 'c' ( uniform int) 0:? 'x' ( in 2-component vector of int) 0:? 'v2a' ( in 2-component vector of float) 0:? 'c1D' ( in float) 0:? 'c2D' ( in 2-component vector of float) 0:? 'c3D' ( in 3-component vector of float) 0:? 'v4' ( uniform 4-component vector of float) 0:? 'abcdef' ( global int) 0:? 'qrstuv' ( global int) Linked vertex stage: Shader version: 120 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of float) 0:17 'centTexCoord' ( invariant smooth out 2-component vector of float) 0:17 'attv2' ( in 2-component vector of float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'gl_Position' ( invariant gl_Position 4-component vector of float Position) 0:18 'attv4' ( in 4-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'gl_ClipVertex' ( gl_ClipVertex 4-component vector of float ClipVertex) 0:20 'attv4' ( in 4-component vector of float) 0:21 move second child to first child ( temp float) 0:21 Constant: 0:21 0.000000 0:21 Constant: 0:21 0.200000 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'gl_Position' ( invariant gl_Position 4-component vector of float Position) 0:25 direct index ( temp 4-component vector of float) 0:25 'b' ( temp 12-element array of 4-component vector of float) 0:25 Constant: 0:25 11 (const int) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'a1' ( temp int) 0:28 Constant: 0:28 1 (const int) 0:30 Sequence 0:30 move second child to first child ( temp int) 0:30 'aa' ( temp int) 0:30 Constant: 0:30 7 (const int) 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'a2' ( temp int) 0:32 Sequence 0:32 move second child to first child ( temp int) 0:32 'a3' ( temp int) 0:32 Constant: 0:32 1 (const int) 0:43 move second child to first child ( temp float) 0:43 'gl_PointSize' ( invariant gl_PointSize float PointSize) 0:43 Constant: 0:43 3.800000 0:? Linker Objects 0:? 'i' ( in 4-component vector of float) 0:? 'o' ( smooth out 4-component vector of float) 0:? 'attv2' ( in 2-component vector of float) 0:? 'attv4' ( in 4-component vector of float) 0:? 's2D' ( uniform sampler2D) 0:? 'centTexCoord' ( invariant smooth out 2-component vector of float) 0:? 'initted' ( uniform float) 0:? 3.400000 0:? 'concall' ( const float) 0:? 0.295520 0:? 'gl_TexCoord' ( smooth out 35-element array of 4-component vector of float TexCoord) 0:? 'c' ( uniform int) 0:? 'x' ( in 2-component vector of int) 0:? 'v2a' ( in 2-component vector of float) 0:? 'c1D' ( in float) 0:? 'c2D' ( in 2-component vector of float) 0:? 'c3D' ( in 3-component vector of float) 0:? 'v4' ( uniform 4-component vector of float) 0:? 'abcdef' ( global int) 0:? 'qrstuv' ( global int) glslang-16.0.0/Test/baseResults/130.frag.out000066400000000000000000000510501506534232700204220ustar00rootroot00000000000000130.frag ERROR: 0:25: 'textureGather(...)' : not supported for this version or the enabled extensions ERROR: 0:35: 'redeclaration' : cannot change the type of gl_Color ERROR: 0:38: 'gl_Color' : redeclaring non-array as array ERROR: 0:39: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_Color WARNING: 0:45: extension GL_ARB_texture_gather is being used for textureGather(...) ERROR: 0:62: '<' : wrong operand types: no operation '<' exists that takes a left-hand operand of type ' temp 3-component vector of bool' and a right operand of type ' temp 3-component vector of bool' (or there is no acceptable conversion) ERROR: 0:63: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' temp 3-component vector of uint' and a right operand of type ' temp 3-component vector of uint' (or there is no acceptable conversion) ERROR: 0:64: '>=' : wrong operand types: no operation '>=' exists that takes a left-hand operand of type ' const 2-component vector of uint' and a right operand of type ' const 2-component vector of uint' (or there is no acceptable conversion) ERROR: 0:65: 'gl_NumSamples' : required extension not requested: GL_ARB_sample_shading ERROR: 0:82: 'textureGatherOffset' : no matching overloaded function found ERROR: 0:82: 'assign' : cannot convert from ' const float' to ' temp 4-component vector of float' ERROR: 0:83: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions ERROR: 0:86: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions ERROR: 0:87: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions ERROR: 0:123: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:129: 'uniform block' : not supported for this version or the enabled extensions ERROR: 0:143: 'length' : does not operate on this type: temp bool ERROR: 0:143: 'boolb' : can't use function syntax on variable ERROR: 0:144: 'length' : does not operate on this type: temp float ERROR: 0:144: '' : function call, method, or subroutine call expected ERROR: 0:144: '' : no matching overloaded function found ERROR: 0:145: 'length' : incomplete method syntax ERROR: 0:146: 'length' : method does not accept any arguments ERROR: 0:149: 'gl_FogFragCoord' : identifiers starting with "gl_" are reserved ERROR: 0:154: 'int' : must be qualified as flat in ERROR: 0:154: 'redeclaration' : cannot change the type of gl_FogFragCoord ERROR: 0:156: 'early_fragment_tests' : not supported for this version or the enabled extensions ERROR: 0:157: 'image load store' : not supported for this version or the enabled extensions ERROR: 0:157: 'iimage2D' : Reserved word. ERROR: 0:172: 'early_fragment_tests' : can only apply to 'in' ERROR: 0:176: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions ERROR: 30 compilation errors. No code generated. Shader version: 130 Requested GL_ARB_explicit_attrib_location Requested GL_ARB_explicit_uniform_location Requested GL_ARB_gpu_shader5 Requested GL_ARB_sample_shading Requested GL_ARB_separate_shader_objects Requested GL_ARB_shader_image_load_store Requested GL_ARB_shading_language_420pack Requested GL_ARB_texture_cube_map_array Requested GL_ARB_texture_gather Requested GL_ARB_texture_rectangle using early_fragment_tests ERROR: node is still EOpNull! 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'clip' ( temp float) 0:18 direct index ( smooth temp float ClipDistance) 0:18 'gl_ClipDistance' ( smooth in unsized 4-element array of float ClipDistance) 0:18 Constant: 0:18 3 (const int) 0:23 Function Definition: foo( ( global void) 0:23 Function Parameters: 0:25 Sequence 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 's' ( temp 4-component vector of float) 0:25 textureGather ( global 4-component vector of float) 0:25 'sampC' ( uniform samplerCube) 0:25 Constant: 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:30 Function Definition: bar( ( global void) 0:30 Function Parameters: 0:32 Sequence 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 's' ( temp 4-component vector of float) 0:32 textureGather ( global 4-component vector of float) 0:32 'sampC' ( uniform samplerCube) 0:32 Constant: 0:32 0.200000 0:32 0.200000 0:32 0.200000 0:43 Function Definition: bar2( ( global void) 0:43 Function Parameters: 0:45 Sequence 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 's' ( temp 4-component vector of float) 0:45 textureGather ( global 4-component vector of float) 0:45 'sampC' ( uniform samplerCube) 0:45 Constant: 0:45 0.200000 0:45 0.200000 0:45 0.200000 0:49 move second child to first child ( temp 3-component vector of bool) 0:49 'b3' ( temp 3-component vector of bool) 0:49 Compare Less Than ( global 3-component vector of bool) 0:49 'uv3' ( temp 3-component vector of uint) 0:49 'uv3' ( temp 3-component vector of uint) 0:50 move second child to first child ( temp 3-component vector of bool) 0:50 'b3' ( temp 3-component vector of bool) 0:50 Equal ( global 3-component vector of bool) 0:50 'uv3' ( temp 3-component vector of uint) 0:50 'uv3' ( temp 3-component vector of uint) 0:56 direct index ( temp int) 0:56 'a1' ( temp 1-element array of int) 0:56 Constant: 0:56 0 (const int) 0:57 direct index ( temp int) 0:57 'a2' ( temp 1-element array of int) 0:57 Constant: 0:57 0 (const int) 0:60 direct index ( temp int) 0:60 'a3' ( temp 4-element array of int) 0:60 Constant: 0:60 3 (const int) 0:61 Compare Not Equal ( temp bool) 0:61 'b3' ( temp 3-component vector of bool) 0:61 'b3' ( temp 3-component vector of bool) 0:62 Constant: 0:62 false (const bool) 0:63 Constant: 0:63 false (const bool) 0:64 Constant: 0:64 false (const bool) 0:65 Sequence 0:65 move second child to first child ( temp int) 0:65 'samples' ( temp int) 0:65 'gl_NumSamples' ( uniform int SampleMaskIn) 0:66 Constant: 0:66 true (const bool) 0:67 Constant: 0:67 false (const bool) 0:79 Function Definition: bar23( ( global void) 0:79 Function Parameters: 0:? Sequence 0:82 's' ( temp 4-component vector of float) 0:83 move second child to first child ( temp 4-component vector of float) 0:83 's' ( temp 4-component vector of float) 0:83 textureGatherOffset ( global 4-component vector of float) 0:83 'samp2DR' ( uniform sampler2DRect) 0:83 Constant: 0:83 0.300000 0:83 0.300000 0:83 Constant: 0:83 1 (const int) 0:83 1 (const int) 0:84 move second child to first child ( temp 4-component vector of float) 0:84 's' ( temp 4-component vector of float) 0:84 textureGatherOffset ( global 4-component vector of float) 0:84 'samp2D' ( uniform sampler2D) 0:84 Constant: 0:84 0.300000 0:84 0.300000 0:84 Constant: 0:84 1 (const int) 0:84 1 (const int) 0:85 move second child to first child ( temp 4-component vector of float) 0:85 's' ( temp 4-component vector of float) 0:85 textureGatherOffset ( global 4-component vector of float) 0:85 'samp2DA' ( uniform sampler2DArray) 0:85 Constant: 0:85 0.300000 0:85 0.300000 0:85 0.300000 0:85 Constant: 0:85 1 (const int) 0:85 1 (const int) 0:86 move second child to first child ( temp 4-component vector of float) 0:86 's' ( temp 4-component vector of float) 0:86 textureGatherOffset ( global 4-component vector of float) 0:86 'samp2DS' ( uniform sampler2DShadow) 0:86 Constant: 0:86 0.300000 0:86 0.300000 0:86 Constant: 0:86 1.300000 0:86 Constant: 0:86 1 (const int) 0:86 1 (const int) 0:87 move second child to first child ( temp 4-component vector of float) 0:87 's' ( temp 4-component vector of float) 0:87 textureGatherOffset ( global 4-component vector of float) 0:87 'samp2D' ( uniform sampler2D) 0:87 Constant: 0:87 0.300000 0:87 0.300000 0:87 Constant: 0:87 1 (const int) 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:88 Sequence 0:88 move second child to first child ( temp int) 0:88 'samples' ( temp int) 0:88 'gl_NumSamples' ( uniform int SampleMaskIn) 0:93 Function Definition: bar234( ( global void) 0:93 Function Parameters: 0:? Sequence 0:96 move second child to first child ( temp 4-component vector of float) 0:96 's' ( temp 4-component vector of float) 0:96 textureGatherOffset ( global 4-component vector of float) 0:96 'samp2D' ( uniform sampler2D) 0:96 Constant: 0:96 0.300000 0:96 0.300000 0:96 Constant: 0:96 1 (const int) 0:96 1 (const int) 0:97 move second child to first child ( temp 4-component vector of float) 0:97 's' ( temp 4-component vector of float) 0:97 textureGatherOffset ( global 4-component vector of float) 0:97 'samp2DA' ( uniform sampler2DArray) 0:97 Constant: 0:97 0.300000 0:97 0.300000 0:97 0.300000 0:97 Constant: 0:97 1 (const int) 0:97 1 (const int) 0:98 move second child to first child ( temp 4-component vector of float) 0:98 's' ( temp 4-component vector of float) 0:98 textureGatherOffset ( global 4-component vector of float) 0:98 'samp2DR' ( uniform sampler2DRect) 0:98 Constant: 0:98 0.300000 0:98 0.300000 0:98 Constant: 0:98 1 (const int) 0:98 1 (const int) 0:99 move second child to first child ( temp 4-component vector of float) 0:99 's' ( temp 4-component vector of float) 0:99 textureGatherOffset ( global 4-component vector of float) 0:99 'samp2DS' ( uniform sampler2DShadow) 0:99 Constant: 0:99 0.300000 0:99 0.300000 0:99 Constant: 0:99 1.300000 0:99 Constant: 0:99 1 (const int) 0:99 1 (const int) 0:100 move second child to first child ( temp 4-component vector of float) 0:100 's' ( temp 4-component vector of float) 0:100 textureGatherOffset ( global 4-component vector of float) 0:100 'samp2D' ( uniform sampler2D) 0:100 Constant: 0:100 0.300000 0:100 0.300000 0:100 Constant: 0:100 1 (const int) 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:110 Function Definition: bar235( ( global void) 0:110 Function Parameters: 0:112 Sequence 0:112 Sequence 0:112 move second child to first child ( temp 3-component vector of int) 0:112 'a' ( temp 3-component vector of int) 0:112 textureSize ( global 3-component vector of int) 0:112 'Sca' ( uniform samplerCubeArray) 0:112 Constant: 0:112 3 (const int) 0:113 Sequence 0:113 move second child to first child ( temp 4-component vector of float) 0:113 'b' ( temp 4-component vector of float) 0:113 texture ( global 4-component vector of float) 0:113 'Sca' ( uniform samplerCubeArray) 0:113 'i' ( smooth in 4-component vector of float) 0:114 Sequence 0:114 move second child to first child ( temp 4-component vector of int) 0:114 'c' ( temp 4-component vector of int) 0:114 texture ( global 4-component vector of int) 0:114 'Isca' ( uniform isamplerCubeArray) 0:114 'i' ( smooth in 4-component vector of float) 0:114 Constant: 0:114 0.700000 0:115 Sequence 0:115 move second child to first child ( temp 4-component vector of uint) 0:115 'd' ( temp 4-component vector of uint) 0:115 texture ( global 4-component vector of uint) 0:115 'Usca' ( uniform usamplerCubeArray) 0:115 'i' ( smooth in 4-component vector of float) 0:117 move second child to first child ( temp 4-component vector of float) 0:117 'b' ( temp 4-component vector of float) 0:117 textureLod ( global 4-component vector of float) 0:117 'Sca' ( uniform samplerCubeArray) 0:117 'i' ( smooth in 4-component vector of float) 0:117 Constant: 0:117 1.700000 0:118 move second child to first child ( temp 3-component vector of int) 0:118 'a' ( temp 3-component vector of int) 0:118 textureSize ( global 3-component vector of int) 0:118 'Scas' ( uniform samplerCubeArrayShadow) 0:118 direct index ( temp int) 0:118 'a' ( temp 3-component vector of int) 0:118 Constant: 0:118 0 (const int) 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'f' ( temp float) 0:119 texture ( global float) 0:119 'Scas' ( uniform samplerCubeArrayShadow) 0:119 'i' ( smooth in 4-component vector of float) 0:119 direct index ( temp float) 0:119 'b' ( temp 4-component vector of float) 0:119 Constant: 0:119 1 (const int) 0:120 move second child to first child ( temp 4-component vector of int) 0:120 'c' ( temp 4-component vector of int) 0:120 textureGrad ( global 4-component vector of int) 0:120 'Isca' ( uniform isamplerCubeArray) 0:120 'i' ( smooth in 4-component vector of float) 0:120 Constant: 0:120 0.100000 0:120 0.100000 0:120 0.100000 0:120 Constant: 0:120 0.200000 0:120 0.200000 0:120 0.200000 0:132 Function Definition: bar23444( ( global void) 0:132 Function Parameters: 0:? Sequence 0:135 Sequence 0:135 move second child to first child ( temp float) 0:135 'a1' ( temp float) 0:135 direct index ( temp float) 0:135 direct index ( temp 3-component vector of float) 0:135 'm43' ( temp 4X3 matrix of float) 0:135 Constant: 0:135 3 (const int) 0:135 Constant: 0:135 1 (const int) 0:137 Sequence 0:137 move second child to first child ( temp int) 0:137 'a2' ( temp int) 0:137 Constant: 0:137 4 (const int) 0:138 add second child into first child ( temp int) 0:138 'a2' ( temp int) 0:138 Constant: 0:138 3 (const int) 0:139 add second child into first child ( temp int) 0:139 'a2' ( temp int) 0:139 Constant: 0:139 3 (const int) 0:140 Sequence 0:140 move second child to first child ( temp float) 0:140 'b' ( const (read only) float) 0:140 component-wise multiply ( temp float) 0:140 Constant: 0:140 2.000000 0:140 'a1' ( temp float) 0:141 move second child to first child ( temp float) 0:141 direct index ( temp float) 0:141 'a' ( global 3-component vector of float) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 -1.000000 0:143 Constant: 0:143 0.000000 0:144 Constant: 0:144 0.000000 0:146 Constant: 0:146 1 (const int) 0:165 Function Definition: qux2( ( global void) 0:165 Function Parameters: 0:? Sequence 0:168 imageAtomicCompSwap ( global int) 0:168 'iimg2D' (layout( r32i) uniform iimage2D) 0:168 Construct ivec2 ( temp 2-component vector of int) 0:168 'i' ( temp int) 0:168 'i' ( temp int) 0:168 'i' ( temp int) 0:168 'i' ( temp int) 0:169 Sequence 0:169 move second child to first child ( temp 4-component vector of int) 0:169 'pos' ( temp 4-component vector of int) 0:169 imageLoad ( global 4-component vector of int) 0:169 'iimg2D' (layout( r32i) uniform iimage2D) 0:169 Construct ivec2 ( temp 2-component vector of int) 0:169 'i' ( temp int) 0:169 'i' ( temp int) 0:? Linker Objects 0:? 'a' ( global 3-component vector of float) 0:? 'b' ( global float) 0:? 'c' ( global int) 0:? 'i' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) 0:? 'fflat' ( flat in float) 0:? 'fsmooth' ( smooth in float) 0:? 'fnop' ( noperspective in float) 0:? 'gl_ClipDistance' ( smooth in unsized 4-element array of float ClipDistance) 0:? 'sampC' ( uniform samplerCube) 0:? 'gl_Color' ( in 4-component vector of float Color) 0:? 'samp2D' ( uniform sampler2D) 0:? 'samp2DS' ( uniform sampler2DShadow) 0:? 'samp2DR' ( uniform sampler2DRect) 0:? 'samp2DA' ( uniform sampler2DArray) 0:? 'Sca' ( uniform samplerCubeArray) 0:? 'Isca' ( uniform isamplerCubeArray) 0:? 'Usca' ( uniform usamplerCubeArray) 0:? 'Scas' ( uniform samplerCubeArrayShadow) 0:? 'x' ( global int) 0:? 'ai' ( const 3-element array of int) 0:? 10 (const int) 0:? 23 (const int) 0:? 32 (const int) 0:? 'instanceName' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int a}) 0:? 'bounds' (layout( binding=0) uniform sampler2D) 0:? 'gl_FogFragCoord' ( smooth in float) 0:? 'iimg2Dbad' (layout( r32i) uniform iimage2D) 0:? 'iimg2D' (layout( r32i) uniform iimage2D) 0:? 'ucolor0' (layout( location=3) uniform 4-component vector of float) 0:? 'ucolor1' (layout( location=4) uniform 4-component vector of float) Linked fragment stage: Shader version: 130 Requested GL_ARB_explicit_attrib_location Requested GL_ARB_explicit_uniform_location Requested GL_ARB_gpu_shader5 Requested GL_ARB_sample_shading Requested GL_ARB_separate_shader_objects Requested GL_ARB_shader_image_load_store Requested GL_ARB_shading_language_420pack Requested GL_ARB_texture_cube_map_array Requested GL_ARB_texture_gather Requested GL_ARB_texture_rectangle using early_fragment_tests ERROR: node is still EOpNull! 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'clip' ( temp float) 0:18 direct index ( smooth temp float ClipDistance) 0:18 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) 0:18 Constant: 0:18 3 (const int) 0:? Linker Objects 0:? 'a' ( global 3-component vector of float) 0:? 'b' ( global float) 0:? 'c' ( global int) 0:? 'i' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) 0:? 'fflat' ( flat in float) 0:? 'fsmooth' ( smooth in float) 0:? 'fnop' ( noperspective in float) 0:? 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) 0:? 'sampC' ( uniform samplerCube) 0:? 'gl_Color' ( in 4-component vector of float Color) 0:? 'samp2D' ( uniform sampler2D) 0:? 'samp2DS' ( uniform sampler2DShadow) 0:? 'samp2DR' ( uniform sampler2DRect) 0:? 'samp2DA' ( uniform sampler2DArray) 0:? 'Sca' ( uniform samplerCubeArray) 0:? 'Isca' ( uniform isamplerCubeArray) 0:? 'Usca' ( uniform usamplerCubeArray) 0:? 'Scas' ( uniform samplerCubeArrayShadow) 0:? 'x' ( global int) 0:? 'ai' ( const 3-element array of int) 0:? 10 (const int) 0:? 23 (const int) 0:? 32 (const int) 0:? 'instanceName' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int a}) 0:? 'bounds' (layout( binding=0) uniform sampler2D) 0:? 'gl_FogFragCoord' ( smooth in float) 0:? 'iimg2Dbad' (layout( r32i) uniform iimage2D) 0:? 'iimg2D' (layout( r32i) uniform iimage2D) 0:? 'ucolor0' (layout( location=3) uniform 4-component vector of float) 0:? 'ucolor1' (layout( location=4) uniform 4-component vector of float) glslang-16.0.0/Test/baseResults/130.vert.out000066400000000000000000000320741506534232700204700ustar00rootroot00000000000000130.vert ERROR: 0:59: 'gl_InstanceID' : required extension not requested: GL_EXT_draw_instanced ERROR: 0:61: 'texelFetch' : no matching overloaded function found ERROR: 0:61: 'assign' : cannot convert from ' const float' to ' temp int' ERROR: 3 compilation errors. No code generated. Shader version: 130 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 'f' ( temp float) 0:17 Constant: 0:17 3.000000 0:18 switch 0:18 condition 0:18 'c' ( uniform int) 0:18 body 0:18 Sequence 0:19 case: with expression 0:19 Constant: 0:19 1 (const int) 0:? Sequence 0:20 move second child to first child ( temp float) 0:20 'f' ( temp float) 0:20 sine ( global float) 0:20 'f' ( temp float) 0:21 Branch: Break 0:22 case: with expression 0:22 Constant: 0:22 2 (const int) 0:? Sequence 0:23 move second child to first child ( temp float) 0:23 'f' ( temp float) 0:23 component-wise multiply ( temp float) 0:23 'f' ( temp float) 0:23 'f' ( temp float) 0:24 default: 0:? Sequence 0:25 move second child to first child ( temp float) 0:25 'f' ( temp float) 0:25 Constant: 0:25 3.000000 0:29 move second child to first child ( temp uint) 0:29 'i' ( temp uint) 0:29 direct index ( temp uint) 0:29 texture ( global 4-component vector of uint) 0:29 'us2D' ( uniform usampler2D) 0:29 Convert int to float ( temp 2-component vector of float) 0:29 'x' ( in 2-component vector of int) 0:29 Constant: 0:29 3 (const int) 0:30 inclusive-or ( temp uint) 0:30 left-shift ( temp uint) 0:30 'i' ( temp uint) 0:30 Constant: 0:30 3 (const uint) 0:30 Constant: 0:30 69 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp 3-component vector of float) 0:33 'v11' ( temp 3-component vector of float) 0:33 modf ( global 3-component vector of float) 0:33 'modfIn' ( temp 3-component vector of float) 0:33 'modfOut' ( temp 3-component vector of float) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 't' ( temp float) 0:34 trunc ( global float) 0:34 'f' ( temp float) 0:35 Sequence 0:35 move second child to first child ( temp 2-component vector of float) 0:35 'v12' ( temp 2-component vector of float) 0:35 round ( global 2-component vector of float) 0:35 'v2a' ( in 2-component vector of float) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of float) 0:36 'v13' ( temp 2-component vector of float) 0:36 roundEven ( global 2-component vector of float) 0:36 'v2a' ( in 2-component vector of float) 0:37 Sequence 0:37 move second child to first child ( temp 2-component vector of bool) 0:37 'b10' ( temp 2-component vector of bool) 0:37 isnan ( global 2-component vector of bool) 0:37 'v2a' ( in 2-component vector of float) 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of bool) 0:38 'b11' ( temp 4-component vector of bool) 0:38 isinf ( global 4-component vector of bool) 0:38 'v4' ( uniform 4-component vector of float) 0:40 add ( temp 2-component vector of float) 0:40 hyp. sine ( global float) 0:40 'c1D' ( in float) 0:41 vector-scale ( temp 2-component vector of float) 0:41 hyp. cosine ( global float) 0:41 'c1D' ( in float) 0:41 hyp. tangent ( global 2-component vector of float) 0:41 'c2D' ( in 2-component vector of float) 0:42 add ( temp 4-component vector of float) 0:42 arc hyp. sine ( global 4-component vector of float) 0:42 'c4D' ( smooth temp 4-component vector of float) 0:42 arc hyp. cosine ( global 4-component vector of float) 0:42 'c4D' ( smooth temp 4-component vector of float) 0:43 arc hyp. tangent ( global 3-component vector of float) 0:43 'c3D' ( in 3-component vector of float) 0:45 Sequence 0:45 move second child to first child ( temp int) 0:45 'id' ( temp int) 0:45 'gl_VertexID' ( gl_VertexId int VertexId) 0:46 move second child to first child ( temp float) 0:46 direct index ( smooth temp float ClipDistance) 0:46 'gl_ClipDistance' ( smooth out unsized 2-element array of float ClipDistance) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 0.300000 0:57 Function Definition: foo88( ( global void) 0:57 Function Parameters: 0:59 Sequence 0:59 Sequence 0:59 move second child to first child ( temp int) 0:59 'id' ( temp int) 0:59 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:61 'id' ( temp int) 0:63 'gl_ClipVertex' ( gl_ClipVertex 4-component vector of float ClipVertex) 0:64 'gl_Color' ( in 4-component vector of float Color) 0:65 direct index ( temp structure{ global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation}) 0:65 'gl_LightSource' ( uniform 32-element array of structure{ global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation}) 0:65 Constant: 0:65 0 (const int) 0:66 far: direct index for structure ( global float) 0:66 'gl_DepthRange' ( uniform structure{ global float near, global float far, global float diff}) 0:66 Constant: 0:66 1 (const int) 0:67 'gl_TexCoord' ( smooth out unsized 1-element array of 4-component vector of float TexCoord) 0:68 'gl_FogFragCoord' ( smooth out float FogFragCoord) 0:69 'gl_FrontColor' ( smooth out 4-component vector of float FrontColor) 0:? Linker Objects 0:? 'c' ( uniform int) 0:? 'us2D' ( uniform usampler2D) 0:? 'x' ( in 2-component vector of int) 0:? 'v2a' ( in 2-component vector of float) 0:? 'c1D' ( in float) 0:? 'c2D' ( in 2-component vector of float) 0:? 'c3D' ( in 3-component vector of float) 0:? 'c4D' ( smooth temp 4-component vector of float) 0:? 'v4' ( uniform 4-component vector of float) 0:? 'gl_ClipDistance' ( smooth out unsized 2-element array of float ClipDistance) 0:? 'gl_TexCoord' ( smooth out unsized 1-element array of 4-component vector of float TexCoord) 0:? 'abcdef' ( global int) 0:? 'qrstuv' ( global int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) Linked vertex stage: ERROR: Linking vertex stage: Can only use one of gl_ClipDistance or gl_ClipVertex (gl_ClipDistance is preferred) Shader version: 130 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 'f' ( temp float) 0:17 Constant: 0:17 3.000000 0:18 switch 0:18 condition 0:18 'c' ( uniform int) 0:18 body 0:18 Sequence 0:19 case: with expression 0:19 Constant: 0:19 1 (const int) 0:? Sequence 0:20 move second child to first child ( temp float) 0:20 'f' ( temp float) 0:20 sine ( global float) 0:20 'f' ( temp float) 0:21 Branch: Break 0:22 case: with expression 0:22 Constant: 0:22 2 (const int) 0:? Sequence 0:23 move second child to first child ( temp float) 0:23 'f' ( temp float) 0:23 component-wise multiply ( temp float) 0:23 'f' ( temp float) 0:23 'f' ( temp float) 0:24 default: 0:? Sequence 0:25 move second child to first child ( temp float) 0:25 'f' ( temp float) 0:25 Constant: 0:25 3.000000 0:29 move second child to first child ( temp uint) 0:29 'i' ( temp uint) 0:29 direct index ( temp uint) 0:29 texture ( global 4-component vector of uint) 0:29 'us2D' ( uniform usampler2D) 0:29 Convert int to float ( temp 2-component vector of float) 0:29 'x' ( in 2-component vector of int) 0:29 Constant: 0:29 3 (const int) 0:30 inclusive-or ( temp uint) 0:30 left-shift ( temp uint) 0:30 'i' ( temp uint) 0:30 Constant: 0:30 3 (const uint) 0:30 Constant: 0:30 69 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp 3-component vector of float) 0:33 'v11' ( temp 3-component vector of float) 0:33 modf ( global 3-component vector of float) 0:33 'modfIn' ( temp 3-component vector of float) 0:33 'modfOut' ( temp 3-component vector of float) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 't' ( temp float) 0:34 trunc ( global float) 0:34 'f' ( temp float) 0:35 Sequence 0:35 move second child to first child ( temp 2-component vector of float) 0:35 'v12' ( temp 2-component vector of float) 0:35 round ( global 2-component vector of float) 0:35 'v2a' ( in 2-component vector of float) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of float) 0:36 'v13' ( temp 2-component vector of float) 0:36 roundEven ( global 2-component vector of float) 0:36 'v2a' ( in 2-component vector of float) 0:37 Sequence 0:37 move second child to first child ( temp 2-component vector of bool) 0:37 'b10' ( temp 2-component vector of bool) 0:37 isnan ( global 2-component vector of bool) 0:37 'v2a' ( in 2-component vector of float) 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of bool) 0:38 'b11' ( temp 4-component vector of bool) 0:38 isinf ( global 4-component vector of bool) 0:38 'v4' ( uniform 4-component vector of float) 0:40 add ( temp 2-component vector of float) 0:40 hyp. sine ( global float) 0:40 'c1D' ( in float) 0:41 vector-scale ( temp 2-component vector of float) 0:41 hyp. cosine ( global float) 0:41 'c1D' ( in float) 0:41 hyp. tangent ( global 2-component vector of float) 0:41 'c2D' ( in 2-component vector of float) 0:42 add ( temp 4-component vector of float) 0:42 arc hyp. sine ( global 4-component vector of float) 0:42 'c4D' ( smooth temp 4-component vector of float) 0:42 arc hyp. cosine ( global 4-component vector of float) 0:42 'c4D' ( smooth temp 4-component vector of float) 0:43 arc hyp. tangent ( global 3-component vector of float) 0:43 'c3D' ( in 3-component vector of float) 0:45 Sequence 0:45 move second child to first child ( temp int) 0:45 'id' ( temp int) 0:45 'gl_VertexID' ( gl_VertexId int VertexId) 0:46 move second child to first child ( temp float) 0:46 direct index ( smooth temp float ClipDistance) 0:46 'gl_ClipDistance' ( smooth out unsized 2-element array of float ClipDistance) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 0.300000 0:? Linker Objects 0:? 'c' ( uniform int) 0:? 'us2D' ( uniform usampler2D) 0:? 'x' ( in 2-component vector of int) 0:? 'v2a' ( in 2-component vector of float) 0:? 'c1D' ( in float) 0:? 'c2D' ( in 2-component vector of float) 0:? 'c3D' ( in 3-component vector of float) 0:? 'c4D' ( smooth temp 4-component vector of float) 0:? 'v4' ( uniform 4-component vector of float) 0:? 'gl_ClipDistance' ( smooth out unsized 2-element array of float ClipDistance) 0:? 'gl_TexCoord' ( smooth out unsized 1-element array of 4-component vector of float TexCoord) 0:? 'abcdef' ( global int) 0:? 'qrstuv' ( global int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) glslang-16.0.0/Test/baseResults/140.frag.out000066400000000000000000000153101506534232700204220ustar00rootroot00000000000000140.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release ERROR: 0:17: '#error' : GL_ES is not set ERROR: 0:21: 'fragment-shader struct input' : not supported for this version or the enabled extensions ERROR: 0:25: 'location' : not supported for this version or the enabled extensions ERROR: 0:25: 'location qualifier on input' : not supported for this version or the enabled extensions ERROR: 0:27: 'location' : not supported for this version or the enabled extensions ERROR: 0:27: 'location qualifier on output' : not supported for this version or the enabled extensions ERROR: 0:41: 'assign' : l-value required "v" (can't modify shader input) ERROR: 0:41: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters. ERROR: 0:56: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 9 compilation errors. No code generated. Shader version: 140 Requested GL_ARB_explicit_attrib_location Requested GL_ARB_separate_shader_objects ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'clip' ( temp float) 0:12 direct index ( smooth temp float ClipDistance) 0:12 'gl_ClipDistance' ( smooth in 5-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'patch' ( global float) 0:23 Constant: 0:23 3.100000 0:39 Function Definition: foo( ( global void) 0:39 Function Parameters: 0:41 Sequence 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of float) 0:41 'r1' ( temp 2-component vector of float) 0:41 modf ( global 2-component vector of float) 0:41 vector swizzle ( temp 2-component vector of float) 0:41 'v' ( smooth in 4-component vector of float) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 vector swizzle ( temp 2-component vector of float) 0:41 'v' ( smooth in 4-component vector of float) 0:41 Sequence 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 3 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 2-component vector of float) 0:42 'r2' ( temp 2-component vector of float) 0:42 modf ( global 2-component vector of float) 0:42 vector swizzle ( temp 2-component vector of float) 0:42 'o' ( out 4-component vector of float) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 vector swizzle ( temp 2-component vector of float) 0:42 'o' ( out 4-component vector of float) 0:42 Sequence 0:42 Constant: 0:42 2 (const int) 0:42 Constant: 0:42 3 (const int) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 'o' ( out 4-component vector of float) 0:43 Constant: 0:43 2 (const int) 0:43 Function Call: fooi( ( global float) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'i1' ( global float) 0:48 Test condition and select ( temp float) 0:48 Condition 0:48 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:48 true case 0:48 Constant: 0:48 -2.000000 0:48 false case 0:48 Constant: 0:48 2.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'i2' ( global float) 0:49 Constant: 0:49 102.000000 0:51 Function Definition: fooi( ( global float) 0:51 Function Parameters: 0:53 Sequence 0:53 Branch: Return with expression 0:53 add ( temp float) 0:53 'i1' ( global float) 0:53 'i2' ( global float) 0:? Linker Objects 0:? 'v' ( smooth in 4-component vector of float) 0:? 'i' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) 0:? 'gl_ClipDistance' ( smooth in 5-element array of float ClipDistance) 0:? 's' ( smooth in structure{ global float f}) 0:? 'patch' ( global float) 0:? 'vl' (layout( location=3) smooth in 4-component vector of float) 0:? 'factorBad' (layout( location=3) out 4-component vector of float) 0:? 'factor' (layout( location=5) out 4-component vector of float) 0:? 'vl2' (layout( location=4) smooth in 4-component vector of float) 0:? 'i1' ( global float) 0:? 'i2' ( global float) Linked fragment stage: Shader version: 140 Requested GL_ARB_explicit_attrib_location Requested GL_ARB_separate_shader_objects ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'clip' ( temp float) 0:12 direct index ( smooth temp float ClipDistance) 0:12 'gl_ClipDistance' ( smooth in 5-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'patch' ( global float) 0:23 Constant: 0:23 3.100000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'i1' ( global float) 0:48 Test condition and select ( temp float) 0:48 Condition 0:48 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:48 true case 0:48 Constant: 0:48 -2.000000 0:48 false case 0:48 Constant: 0:48 2.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'i2' ( global float) 0:49 Constant: 0:49 102.000000 0:? Linker Objects 0:? 'v' ( smooth in 4-component vector of float) 0:? 'i' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) 0:? 'gl_ClipDistance' ( smooth in 5-element array of float ClipDistance) 0:? 's' ( smooth in structure{ global float f}) 0:? 'patch' ( global float) 0:? 'vl' (layout( location=3) smooth in 4-component vector of float) 0:? 'factorBad' (layout( location=3) out 4-component vector of float) 0:? 'factor' (layout( location=5) out 4-component vector of float) 0:? 'vl2' (layout( location=4) smooth in 4-component vector of float) 0:? 'i1' ( global float) 0:? 'i2' ( global float) glslang-16.0.0/Test/baseResults/140.vert.out000066400000000000000000000277331506534232700204770ustar00rootroot00000000000000140.vert ERROR: 0:23: 'gl_Position' : identifiers starting with "gl_" are reserved ERROR: 0:25: 'location' : not supported for this version or the enabled extensions ERROR: 0:25: 'location qualifier on input' : not supported for this version or the enabled extensions ERROR: 0:34: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_Position ERROR: 0:34: 'redeclaration' : cannot change interpolation qualification of gl_Position ERROR: 0:35: 'redeclaration' : cannot change the type of gl_Position ERROR: 0:38: 'gl_ClipVertex' : cannot redeclare after use ERROR: 0:39: 'gl_FogFragCoord' : cannot redeclare after use ERROR: 0:51: 'texelFetch' : no matching overloaded function found ERROR: 0:53: 'texture' : no matching overloaded function found ERROR: 0:63: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:64: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview ERROR: 12 compilation errors. No code generated. Shader version: 140 Requested GL_ARB_explicit_attrib_location Requested GL_ARB_separate_shader_objects Requested GL_EXT_device_group Requested GL_EXT_multiview ERROR: node is still EOpNull! 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp int) 0:11 'id' ( temp int) 0:11 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:12 add second child into first child ( temp int) 0:12 'id' ( temp int) 0:12 anonMem: direct index for structure (layout( column_major std140 offset=0) uniform int) 0:12 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform int anonMem}) 0:12 Constant: 0:12 0 (const uint) 0:13 add second child into first child ( temp int) 0:13 'id' ( temp int) 0:13 direct index ( temp int) 0:13 textureFetch ( global 4-component vector of int) 0:13 'sbuf' ( uniform isamplerBuffer) 0:13 Constant: 0:13 8 (const int) 0:13 Constant: 0:13 3 (const int) 0:14 'gl_ClipVertex' ( gl_ClipVertex 4-component vector of float ClipVertex) 0:15 'gl_Color' ( in 4-component vector of float Color) 0:16 direct index ( temp structure{ global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation}) 0:16 'gl_LightSource' ( uniform 32-element array of structure{ global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation}) 0:16 Constant: 0:16 0 (const int) 0:17 far: direct index for structure ( global float) 0:17 'gl_DepthRange' ( uniform structure{ global float near, global float far, global float diff}) 0:17 Constant: 0:17 1 (const int) 0:18 'gl_TexCoord' ( smooth out unsized 1-element array of 4-component vector of float TexCoord) 0:19 'gl_FogFragCoord' ( smooth out float FogFragCoord) 0:20 'gl_FrontColor' ( smooth out 4-component vector of float FrontColor) 0:48 Function Definition: foo( ( global void) 0:48 Function Parameters: 0:50 Sequence 0:50 Sequence 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'v' ( temp 4-component vector of float) 0:50 textureFetch ( global 4-component vector of float) 0:50 's2dr' ( uniform sampler2DRect) 0:50 'itloc2' ( in 2-component vector of int) 0:51 add second child into first child ( temp 4-component vector of float) 0:51 'v' ( temp 4-component vector of float) 0:51 Constant: 0:51 0.000000 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'v' ( temp 4-component vector of float) 0:52 texture ( global 4-component vector of float) 0:52 's2dr' ( uniform sampler2DRect) 0:52 'tloc2' ( in 2-component vector of float) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'v' ( temp 4-component vector of float) 0:53 Constant: 0:53 0.000000 0:54 add second child into first child ( temp 4-component vector of float) 0:54 'v' ( temp 4-component vector of float) 0:54 texture ( global float) 0:54 's2drs' ( uniform sampler2DRectShadow) 0:54 'tloc3' ( in 3-component vector of float) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'v' ( temp 4-component vector of float) 0:55 textureProj ( global 4-component vector of float) 0:55 's2dr' ( uniform sampler2DRect) 0:55 'tloc3' ( in 3-component vector of float) 0:56 add second child into first child ( temp 4-component vector of float) 0:56 'v' ( temp 4-component vector of float) 0:56 textureProj ( global 4-component vector of float) 0:56 's2dr' ( uniform sampler2DRect) 0:56 'tloc4' ( in 4-component vector of float) 0:57 add second child into first child ( temp 4-component vector of float) 0:57 'v' ( temp 4-component vector of float) 0:57 textureProjGradOffset ( global 4-component vector of float) 0:57 's2dr' ( uniform sampler2DRect) 0:57 'tloc4' ( in 4-component vector of float) 0:57 Constant: 0:57 0.000000 0:57 0.000000 0:57 Constant: 0:57 0.000000 0:57 0.000000 0:57 Constant: 0:57 1 (const int) 0:57 2 (const int) 0:58 add second child into first child ( temp 4-component vector of float) 0:58 'v' ( temp 4-component vector of float) 0:58 textureProjGradOffset ( global float) 0:58 's2drs' ( uniform sampler2DRectShadow) 0:58 'tloc4' ( in 4-component vector of float) 0:58 Constant: 0:58 0.000000 0:58 0.000000 0:58 Constant: 0:58 0.000000 0:58 0.000000 0:58 Constant: 0:58 1 (const int) 0:58 2 (const int) 0:61 Function Definition: devi( ( global void) 0:61 Function Parameters: 0:63 Sequence 0:63 'gl_DeviceIndex' ( in int DeviceIndex) 0:64 'gl_ViewIndex' ( in int ViewIndex) 0:75 Function Definition: devie( ( global void) 0:75 Function Parameters: 0:77 Sequence 0:77 'gl_DeviceIndex' ( in int DeviceIndex) 0:78 'gl_ViewIndex' ( in int ViewIndex) 0:? Linker Objects 0:? 'sbuf' ( uniform isamplerBuffer) 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform int anonMem}) 0:? 'gl_TexCoord' ( smooth out unsized 1-element array of 4-component vector of float TexCoord) 0:? 'gl_Position' ( smooth out 4-component vector of float) 0:? 'locBad' (layout( location=9) in 4-component vector of float) 0:? 'loc' (layout( location=9) in 4-component vector of float) 0:? 'gl_PointSize' ( gl_PointSize float PointSize) 0:? 'gl_ClipVertex' ( gl_ClipVertex 4-component vector of float ClipVertex) 0:? 'gl_FogFragCoord' ( smooth out float FogFragCoord) 0:? 's2dr' ( uniform sampler2DRect) 0:? 's2drs' ( uniform sampler2DRectShadow) 0:? 'itloc2' ( in 2-component vector of int) 0:? 'tloc2' ( in 2-component vector of float) 0:? 'tloc3' ( in 3-component vector of float) 0:? 'tloc4' ( in 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 140 Requested GL_ARB_explicit_attrib_location Requested GL_ARB_separate_shader_objects Requested GL_EXT_device_group Requested GL_EXT_multiview ERROR: node is still EOpNull! 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp int) 0:11 'id' ( temp int) 0:11 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:12 add second child into first child ( temp int) 0:12 'id' ( temp int) 0:12 anonMem: direct index for structure (layout( column_major std140 offset=0) uniform int) 0:12 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform int anonMem}) 0:12 Constant: 0:12 0 (const uint) 0:13 add second child into first child ( temp int) 0:13 'id' ( temp int) 0:13 direct index ( temp int) 0:13 textureFetch ( global 4-component vector of int) 0:13 'sbuf' ( uniform isamplerBuffer) 0:13 Constant: 0:13 8 (const int) 0:13 Constant: 0:13 3 (const int) 0:14 'gl_ClipVertex' ( gl_ClipVertex 4-component vector of float ClipVertex) 0:15 'gl_Color' ( in 4-component vector of float Color) 0:16 direct index ( temp structure{ global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation}) 0:16 'gl_LightSource' ( uniform 32-element array of structure{ global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation}) 0:16 Constant: 0:16 0 (const int) 0:17 far: direct index for structure ( global float) 0:17 'gl_DepthRange' ( uniform structure{ global float near, global float far, global float diff}) 0:17 Constant: 0:17 1 (const int) 0:18 'gl_TexCoord' ( smooth out 1-element array of 4-component vector of float TexCoord) 0:19 'gl_FogFragCoord' ( smooth out float FogFragCoord) 0:20 'gl_FrontColor' ( smooth out 4-component vector of float FrontColor) 0:? Linker Objects 0:? 'sbuf' ( uniform isamplerBuffer) 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform int anonMem}) 0:? 'gl_TexCoord' ( smooth out 1-element array of 4-component vector of float TexCoord) 0:? 'gl_Position' ( smooth out 4-component vector of float) 0:? 'locBad' (layout( location=9) in 4-component vector of float) 0:? 'loc' (layout( location=9) in 4-component vector of float) 0:? 'gl_PointSize' ( gl_PointSize float PointSize) 0:? 'gl_ClipVertex' ( gl_ClipVertex 4-component vector of float ClipVertex) 0:? 'gl_FogFragCoord' ( smooth out float FogFragCoord) 0:? 's2dr' ( uniform sampler2DRect) 0:? 's2drs' ( uniform sampler2DRectShadow) 0:? 'itloc2' ( in 2-component vector of int) 0:? 'tloc2' ( in 2-component vector of float) 0:? 'tloc3' ( in 3-component vector of float) 0:? 'tloc4' ( in 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/150.frag.out000066400000000000000000000622451506534232700204340ustar00rootroot00000000000000150.frag 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: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: Possible extensions include: GL_ARB_shader_bit_encoding GL_ARB_gpu_shader5 GL_NV_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:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:155: 'textureQueryLOD' : no matching overloaded function found ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix ERROR: 17 compilation errors. No code generated. Shader version: 150 Requested GL_ARB_gpu_shader_fp64 Requested GL_ARB_shader_bit_encoding Requested GL_ARB_shading_language_packing Requested GL_ARB_texture_query_lod Requested GL_EXT_shader_integer_mix gl_FragCoord pixel center is integer gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 'c' ( temp 4-component vector of float) 0:11 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'patch' ( global float) 0:18 Constant: 0:18 3.100000 0:31 Function Definition: barWxyz( ( global void) 0:31 Function Parameters: 0:33 Sequence 0:33 Sequence 0:33 move second child to first child ( temp 2-component vector of int) 0:33 't11' ( temp 2-component vector of int) 0:33 textureSize ( global 2-component vector of int) 0:33 'sms' ( uniform sampler2DMS) 0:34 Sequence 0:34 move second child to first child ( temp 2-component vector of int) 0:34 't12' ( temp 2-component vector of int) 0:34 textureSize ( global 2-component vector of int) 0:34 'isms' ( uniform isampler2DMS) 0:35 Sequence 0:35 move second child to first child ( temp 2-component vector of int) 0:35 't13' ( temp 2-component vector of int) 0:35 textureSize ( global 2-component vector of int) 0:35 'usms' ( uniform usampler2DMS) 0:36 Sequence 0:36 move second child to first child ( temp 3-component vector of int) 0:36 't21' ( temp 3-component vector of int) 0:36 textureSize ( global 3-component vector of int) 0:36 'smsa' ( uniform sampler2DMSArray) 0:37 Sequence 0:37 move second child to first child ( temp 3-component vector of int) 0:37 't22' ( temp 3-component vector of int) 0:37 textureSize ( global 3-component vector of int) 0:37 'ismsa' ( uniform isampler2DMSArray) 0:38 Sequence 0:38 move second child to first child ( temp 3-component vector of int) 0:38 't23' ( temp 3-component vector of int) 0:38 textureSize ( global 3-component vector of int) 0:38 'usmsa' ( uniform usampler2DMSArray) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 't31' ( temp 4-component vector of float) 0:39 textureFetch ( global 4-component vector of float) 0:39 'sms' ( uniform sampler2DMS) 0:39 'p2' ( flat in 2-component vector of int) 0:39 'samp' ( flat in int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 't32' ( temp 4-component vector of int) 0:40 textureFetch ( global 4-component vector of int) 0:40 'isms' ( uniform isampler2DMS) 0:40 'p2' ( flat in 2-component vector of int) 0:40 'samp' ( flat in int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 't33' ( temp 4-component vector of uint) 0:41 textureFetch ( global 4-component vector of uint) 0:41 'usms' ( uniform usampler2DMS) 0:41 'p2' ( flat in 2-component vector of int) 0:41 Constant: 0:41 3 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 't41' ( temp 4-component vector of float) 0:42 textureFetch ( global 4-component vector of float) 0:42 'smsa' ( uniform sampler2DMSArray) 0:42 'p3' ( flat in 3-component vector of int) 0:42 'samp' ( flat in int) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 't42' ( temp 4-component vector of int) 0:43 textureFetch ( global 4-component vector of int) 0:43 'ismsa' ( uniform isampler2DMSArray) 0:43 Constant: 0:43 2 (const int) 0:43 2 (const int) 0:43 2 (const int) 0:43 'samp' ( flat in int) 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of uint) 0:44 't43' ( temp 4-component vector of uint) 0:44 textureFetch ( global 4-component vector of uint) 0:44 'usmsa' ( uniform usampler2DMSArray) 0:44 'p3' ( flat in 3-component vector of int) 0:44 'samp' ( flat in int) 0:47 Function Definition: primitiveID( ( global int) 0:47 Function Parameters: 0:49 Sequence 0:49 Branch: Return with expression 0:49 'gl_PrimitiveID' ( flat in int PrimitiveID) 0:50 'gl_PerFragment' ( temp float) 0:56 Sequence 0:56 move second child to first child ( temp double) 0:56 'type3' ( global double) 0:56 Constant: 0:56 2.000000 0:58 Sequence 0:58 move second child to first child ( temp double) 0:58 'absTest2' ( global double) 0:58 sqrt ( global double) 0:58 'type3' ( global double) 0:59 Sequence 0:59 move second child to first child ( temp double) 0:59 'absTest3' ( global double) 0:59 Constant: 0:59 1.414214 0:60 Sequence 0:60 move second child to first child ( temp float) 0:60 'dk' ( global float) 0:60 Constant: 0:60 3.316625 0:68 Function Definition: bitEncodingPass( ( global void) 0:68 Function Parameters: 0:70 Sequence 0:70 Sequence 0:70 move second child to first child ( temp int) 0:70 'i' ( temp int) 0:70 floatBitsToInt ( global int) 0:70 'f' ( global float) 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of uint) 0:71 'uv11' ( temp 4-component vector of uint) 0:71 floatBitsToUint ( global 4-component vector of uint) 0:71 'v4' ( global 4-component vector of float) 0:72 Sequence 0:72 move second child to first child ( temp 4-component vector of float) 0:72 'v14' ( temp 4-component vector of float) 0:72 intBitsToFloat ( global 4-component vector of float) 0:72 'iv4a' ( global 4-component vector of int) 0:73 Sequence 0:73 move second child to first child ( temp 2-component vector of float) 0:73 'v15' ( temp 2-component vector of float) 0:73 uintBitsToFloat ( global 2-component vector of float) 0:73 'uv2c' ( global 2-component vector of uint) 0:78 Function Definition: bitEncodingFail( ( global void) 0:78 Function Parameters: 0:80 Sequence 0:80 Sequence 0:80 move second child to first child ( temp int) 0:80 'i' ( temp int) 0:80 floatBitsToInt ( global int) 0:80 'f' ( global float) 0:87 Function Definition: packingPass( ( global void) 0:87 Function Parameters: 0:89 Sequence 0:89 Sequence 0:89 move second child to first child ( temp uint) 0:89 'u19' ( temp uint) 0:89 packSnorm2x16 ( global uint) 0:89 'v2a' ( global 2-component vector of float) 0:90 Sequence 0:90 move second child to first child ( temp 2-component vector of float) 0:90 'v20' ( temp 2-component vector of float) 0:90 unpackSnorm2x16 ( global 2-component vector of float) 0:90 'uy' ( global uint) 0:91 Sequence 0:91 move second child to first child ( temp uint) 0:91 'u15' ( temp uint) 0:91 packUnorm2x16 ( global uint) 0:91 'v2a' ( global 2-component vector of float) 0:92 Sequence 0:92 move second child to first child ( temp 2-component vector of float) 0:92 'v16' ( temp 2-component vector of float) 0:92 unpackUnorm2x16 ( global 2-component vector of float) 0:92 'uy' ( global uint) 0:93 Sequence 0:93 move second child to first child ( temp uint) 0:93 'u17' ( temp uint) 0:93 packHalf2x16 ( global uint) 0:93 'v2a' ( global 2-component vector of float) 0:94 Sequence 0:94 move second child to first child ( temp 2-component vector of float) 0:94 'v18' ( temp 2-component vector of float) 0:94 unpackHalf2x16 ( global 2-component vector of float) 0:94 'uy' ( global uint) 0:98 Function Definition: packingFail( ( global void) 0:98 Function Parameters: 0:100 Sequence 0:100 Sequence 0:100 move second child to first child ( temp uint) 0:100 'u19' ( temp uint) 0:100 packSnorm2x16 ( global uint) 0:100 'v2a' ( global 2-component vector of float) 0:107 Function Definition: qlodFail( ( global void) 0:107 Function Parameters: 0:? Sequence 0:114 move second child to first child ( temp 2-component vector of float) 0:114 'lod' ( temp 2-component vector of float) 0:114 textureQueryLod ( global 2-component vector of float) 0:114 'samp1D' ( uniform sampler1D) 0:114 'pf' ( temp float) 0:115 move second child to first child ( temp 2-component vector of float) 0:115 'lod' ( temp 2-component vector of float) 0:115 textureQueryLod ( global 2-component vector of float) 0:115 'samp2Ds' ( uniform sampler2DShadow) 0:115 'pf2' ( temp 2-component vector of float) 0:134 Function Definition: qlodPass( ( global void) 0:134 Function Parameters: 0:? Sequence 0:141 move second child to first child ( temp 2-component vector of float) 0:141 'lod' ( temp 2-component vector of float) 0:141 textureQueryLod ( global 2-component vector of float) 0:141 'samp1D' ( uniform sampler1D) 0:141 'pf' ( temp float) 0:142 move second child to first child ( temp 2-component vector of float) 0:142 'lod' ( temp 2-component vector of float) 0:142 textureQueryLod ( global 2-component vector of float) 0:142 'isamp2D' ( uniform isampler2D) 0:142 'pf2' ( temp 2-component vector of float) 0:143 move second child to first child ( temp 2-component vector of float) 0:143 'lod' ( temp 2-component vector of float) 0:143 textureQueryLod ( global 2-component vector of float) 0:143 'usamp3D' ( uniform usampler3D) 0:143 'pf3' ( temp 3-component vector of float) 0:144 move second child to first child ( temp 2-component vector of float) 0:144 'lod' ( temp 2-component vector of float) 0:144 textureQueryLod ( global 2-component vector of float) 0:144 'sampCube' ( uniform samplerCube) 0:144 'pf3' ( temp 3-component vector of float) 0:145 move second child to first child ( temp 2-component vector of float) 0:145 'lod' ( temp 2-component vector of float) 0:145 textureQueryLod ( global 2-component vector of float) 0:145 'isamp1DA' ( uniform isampler1DArray) 0:145 'pf' ( temp float) 0:146 move second child to first child ( temp 2-component vector of float) 0:146 'lod' ( temp 2-component vector of float) 0:146 textureQueryLod ( global 2-component vector of float) 0:146 'usamp2DA' ( uniform usampler2DArray) 0:146 'pf2' ( temp 2-component vector of float) 0:148 move second child to first child ( temp 2-component vector of float) 0:148 'lod' ( temp 2-component vector of float) 0:148 textureQueryLod ( global 2-component vector of float) 0:148 'samp1Ds' ( uniform sampler1DShadow) 0:148 'pf' ( temp float) 0:149 move second child to first child ( temp 2-component vector of float) 0:149 'lod' ( temp 2-component vector of float) 0:149 textureQueryLod ( global 2-component vector of float) 0:149 'samp2Ds' ( uniform sampler2DShadow) 0:149 'pf2' ( temp 2-component vector of float) 0:150 move second child to first child ( temp 2-component vector of float) 0:150 'lod' ( temp 2-component vector of float) 0:150 textureQueryLod ( global 2-component vector of float) 0:150 'sampCubes' ( uniform samplerCubeShadow) 0:150 'pf3' ( temp 3-component vector of float) 0:151 move second child to first child ( temp 2-component vector of float) 0:151 'lod' ( temp 2-component vector of float) 0:151 textureQueryLod ( global 2-component vector of float) 0:151 'samp1DAs' ( uniform sampler1DArrayShadow) 0:151 'pf' ( temp float) 0:152 move second child to first child ( temp 2-component vector of float) 0:152 'lod' ( temp 2-component vector of float) 0:152 textureQueryLod ( global 2-component vector of float) 0:152 'samp2DAs' ( uniform sampler2DArrayShadow) 0:152 'pf2' ( temp 2-component vector of float) 0:154 'lod' ( temp 2-component vector of float) 0:155 'lod' ( temp 2-component vector of float) 0:164 Function Definition: testmix( ( global void) 0:164 Function Parameters: 0:166 Sequence 0:166 Sequence 0:166 move second child to first child ( temp int) 0:166 'ival' ( temp int) 0:166 mix ( global int) 0:166 'x' ( global int) 0:166 'y' ( global int) 0:166 'b' ( global bool) 0:167 Sequence 0:167 move second child to first child ( temp 2-component vector of int) 0:167 'iv2' ( temp 2-component vector of int) 0:167 mix ( global 2-component vector of int) 0:167 Construct ivec2 ( temp 2-component vector of int) 0:167 'x' ( global int) 0:167 Construct ivec2 ( temp 2-component vector of int) 0:167 'y' ( global int) 0:167 Construct bvec2 ( temp 2-component vector of bool) 0:167 'b' ( global bool) 0:168 Sequence 0:168 move second child to first child ( temp 3-component vector of int) 0:168 'iv3' ( temp 3-component vector of int) 0:168 mix ( global 3-component vector of int) 0:168 Construct ivec3 ( temp 3-component vector of int) 0:168 'x' ( global int) 0:168 Construct ivec3 ( temp 3-component vector of int) 0:168 'y' ( global int) 0:168 Construct bvec3 ( temp 3-component vector of bool) 0:168 'b' ( global bool) 0:169 Sequence 0:169 move second child to first child ( temp 4-component vector of int) 0:169 'iv4' ( temp 4-component vector of int) 0:169 mix ( global 4-component vector of int) 0:169 Construct ivec4 ( temp 4-component vector of int) 0:169 'x' ( global int) 0:169 Construct ivec4 ( temp 4-component vector of int) 0:169 'x' ( global int) 0:169 Construct bvec4 ( temp 4-component vector of bool) 0:169 'b' ( global bool) 0:170 Sequence 0:170 move second child to first child ( temp uint) 0:170 'uiv' ( temp uint) 0:170 mix ( global uint) 0:170 'z' ( global uint) 0:170 'w' ( global uint) 0:170 'b' ( global bool) 0:171 Sequence 0:171 move second child to first child ( temp 2-component vector of uint) 0:171 'uv2' ( temp 2-component vector of uint) 0:171 mix ( global 2-component vector of uint) 0:171 Construct uvec2 ( temp 2-component vector of uint) 0:171 'z' ( global uint) 0:171 Construct uvec2 ( temp 2-component vector of uint) 0:171 'z' ( global uint) 0:171 Construct bvec2 ( temp 2-component vector of bool) 0:171 'b' ( global bool) 0:172 Sequence 0:172 move second child to first child ( temp 3-component vector of uint) 0:172 'uv3' ( temp 3-component vector of uint) 0:172 mix ( global 3-component vector of uint) 0:172 Construct uvec3 ( temp 3-component vector of uint) 0:172 'z' ( global uint) 0:172 Construct uvec3 ( temp 3-component vector of uint) 0:172 'z' ( global uint) 0:172 Construct bvec3 ( temp 3-component vector of bool) 0:172 'b' ( global bool) 0:173 Sequence 0:173 move second child to first child ( temp 4-component vector of uint) 0:173 'uv4' ( temp 4-component vector of uint) 0:173 mix ( global 4-component vector of uint) 0:173 Construct uvec4 ( temp 4-component vector of uint) 0:173 'z' ( global uint) 0:173 Construct uvec4 ( temp 4-component vector of uint) 0:173 'z' ( global uint) 0:173 Construct bvec4 ( temp 4-component vector of bool) 0:173 'b' ( global bool) 0:174 Sequence 0:174 move second child to first child ( temp bool) 0:174 'bv' ( temp bool) 0:174 mix ( global bool) 0:174 'b1' ( global bool) 0:174 'b2' ( global bool) 0:174 'b' ( global bool) 0:175 Sequence 0:175 move second child to first child ( temp 2-component vector of bool) 0:175 'bv2' ( temp 2-component vector of bool) 0:175 mix ( global 2-component vector of bool) 0:175 Construct bvec2 ( temp 2-component vector of bool) 0:175 'b1' ( global bool) 0:175 Construct bvec2 ( temp 2-component vector of bool) 0:175 'b2' ( global bool) 0:175 Construct bvec2 ( temp 2-component vector of bool) 0:175 'b' ( global bool) 0:176 Sequence 0:176 move second child to first child ( temp 3-component vector of bool) 0:176 'bv3' ( temp 3-component vector of bool) 0:176 mix ( global 3-component vector of bool) 0:176 Construct bvec3 ( temp 3-component vector of bool) 0:176 'b1' ( global bool) 0:176 Construct bvec3 ( temp 3-component vector of bool) 0:176 'b2' ( global bool) 0:176 Construct bvec3 ( temp 3-component vector of bool) 0:176 'b' ( global bool) 0:177 Sequence 0:177 move second child to first child ( temp 4-component vector of bool) 0:177 'bv4' ( temp 4-component vector of bool) 0:177 mix ( global 4-component vector of bool) 0:177 Construct bvec4 ( temp 4-component vector of bool) 0:177 'b1' ( global bool) 0:177 Construct bvec4 ( temp 4-component vector of bool) 0:177 'b2' ( global bool) 0:177 Construct bvec4 ( temp 4-component vector of bool) 0:177 'b' ( global bool) 0:181 Function Definition: testmixFail( ( global void) 0:181 Function Parameters: 0:183 Sequence 0:183 Sequence 0:183 move second child to first child ( temp int) 0:183 'ival' ( temp int) 0:183 mix ( global int) 0:183 'x' ( global int) 0:183 'y' ( global int) 0:183 'b' ( global bool) 0:? Linker Objects 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? 'foo' ( smooth in 4-component vector of float) 0:? 's' ( smooth in structure{ global float f}) 0:? 'patch' ( global float) 0:? 'sms' ( uniform sampler2DMS) 0:? 'isms' ( uniform isampler2DMS) 0:? 'usms' ( uniform usampler2DMS) 0:? 'smsa' ( uniform sampler2DMSArray) 0:? 'ismsa' ( uniform isampler2DMSArray) 0:? 'usmsa' ( uniform usampler2DMSArray) 0:? 'p2' ( flat in 2-component vector of int) 0:? 'p3' ( flat in 3-component vector of int) 0:? 'samp' ( flat in int) 0:? 'type1' ( smooth in double) 0:? 'type2' ( global double) 0:? 'type3' ( global double) 0:? 'absTest' ( global int) 0:? 'absTest2' ( global double) 0:? 'absTest3' ( global double) 0:? 'dk' ( global float) 0:? 'f' ( global float) 0:? 'v4' ( global 4-component vector of float) 0:? 'iv4a' ( global 4-component vector of int) 0:? 'uv2c' ( global 2-component vector of uint) 0:? 'v2a' ( global 2-component vector of float) 0:? 'uy' ( global uint) 0:? 'samp1D' ( uniform sampler1D) 0:? 'samp2Ds' ( uniform sampler2DShadow) 0:? 'isamp2D' ( uniform isampler2D) 0:? 'usamp3D' ( uniform usampler3D) 0:? 'sampCube' ( uniform samplerCube) 0:? 'isamp1DA' ( uniform isampler1DArray) 0:? 'usamp2DA' ( uniform usampler2DArray) 0:? 'samp1Ds' ( uniform sampler1DShadow) 0:? 'sampCubes' ( uniform samplerCubeShadow) 0:? 'samp1DAs' ( uniform sampler1DArrayShadow) 0:? 'samp2DAs' ( uniform sampler2DArrayShadow) 0:? 'sampBuf' ( uniform samplerBuffer) 0:? 'sampRect' ( uniform sampler2DRect) 0:? 'b1' ( global bool) 0:? 'b2' ( global bool) 0:? 'b' ( global bool) 0:? 'x' ( global int) 0:? 'y' ( global int) 0:? 'z' ( global uint) 0:? 'w' ( global uint) Linked fragment stage: Shader version: 150 Requested GL_ARB_gpu_shader_fp64 Requested GL_ARB_shader_bit_encoding Requested GL_ARB_shading_language_packing Requested GL_ARB_texture_query_lod Requested GL_EXT_shader_integer_mix gl_FragCoord pixel center is integer gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 'c' ( temp 4-component vector of float) 0:11 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'patch' ( global float) 0:18 Constant: 0:18 3.100000 0:56 Sequence 0:56 move second child to first child ( temp double) 0:56 'type3' ( global double) 0:56 Constant: 0:56 2.000000 0:58 Sequence 0:58 move second child to first child ( temp double) 0:58 'absTest2' ( global double) 0:58 sqrt ( global double) 0:58 'type3' ( global double) 0:59 Sequence 0:59 move second child to first child ( temp double) 0:59 'absTest3' ( global double) 0:59 Constant: 0:59 1.414214 0:60 Sequence 0:60 move second child to first child ( temp float) 0:60 'dk' ( global float) 0:60 Constant: 0:60 3.316625 0:? Linker Objects 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? 'foo' ( smooth in 4-component vector of float) 0:? 's' ( smooth in structure{ global float f}) 0:? 'patch' ( global float) 0:? 'sms' ( uniform sampler2DMS) 0:? 'isms' ( uniform isampler2DMS) 0:? 'usms' ( uniform usampler2DMS) 0:? 'smsa' ( uniform sampler2DMSArray) 0:? 'ismsa' ( uniform isampler2DMSArray) 0:? 'usmsa' ( uniform usampler2DMSArray) 0:? 'p2' ( flat in 2-component vector of int) 0:? 'p3' ( flat in 3-component vector of int) 0:? 'samp' ( flat in int) 0:? 'type1' ( smooth in double) 0:? 'type2' ( global double) 0:? 'type3' ( global double) 0:? 'absTest' ( global int) 0:? 'absTest2' ( global double) 0:? 'absTest3' ( global double) 0:? 'dk' ( global float) 0:? 'f' ( global float) 0:? 'v4' ( global 4-component vector of float) 0:? 'iv4a' ( global 4-component vector of int) 0:? 'uv2c' ( global 2-component vector of uint) 0:? 'v2a' ( global 2-component vector of float) 0:? 'uy' ( global uint) 0:? 'samp1D' ( uniform sampler1D) 0:? 'samp2Ds' ( uniform sampler2DShadow) 0:? 'isamp2D' ( uniform isampler2D) 0:? 'usamp3D' ( uniform usampler3D) 0:? 'sampCube' ( uniform samplerCube) 0:? 'isamp1DA' ( uniform isampler1DArray) 0:? 'usamp2DA' ( uniform usampler2DArray) 0:? 'samp1Ds' ( uniform sampler1DShadow) 0:? 'sampCubes' ( uniform samplerCubeShadow) 0:? 'samp1DAs' ( uniform sampler1DArrayShadow) 0:? 'samp2DAs' ( uniform sampler2DArrayShadow) 0:? 'sampBuf' ( uniform samplerBuffer) 0:? 'sampRect' ( uniform sampler2DRect) 0:? 'b1' ( global bool) 0:? 'b2' ( global bool) 0:? 'b' ( global bool) 0:? 'x' ( global int) 0:? 'y' ( global int) 0:? 'z' ( global uint) 0:? 'w' ( global uint) glslang-16.0.0/Test/baseResults/150.geom.out000066400000000000000000000461341506534232700204430ustar00rootroot00000000000000150.geom 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' : required extension not requested: Possible extensions include: GL_ARB_gpu_shader5 GL_NV_gpu_shader5 ERROR: 0:29: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5/GL_NV_gpu_shader5' : required extension not requested: Possible extensions include: GL_ARB_gpu_shader5 GL_NV_gpu_shader5 ERROR: 0:30: 'EndStreamPrimitive' : required extension not requested: Possible extensions include: GL_ARB_gpu_shader5 GL_NV_gpu_shader5 ERROR: 0:30: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5/GL_NV_gpu_shader5' : required extension not requested: Possible extensions include: GL_ARB_gpu_shader5 GL_NV_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 ERROR: 0:47: 'stream' : can only be used on an output ERROR: 0:47: 'stream' : can only be used on an output ERROR: 0:60: 'stream' : member cannot contradict block ERROR: 0:66: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices ERROR: 0:66: 'max_vertices' : cannot change previously set layout value ERROR: 0:67: 'max_vertices' : can only apply to a standalone qualifier ERROR: 0:72: 'points' : cannot change previously set output primitive ERROR: 0:73: 'points' : cannot change previously set output primitive ERROR: 0:74: 'triangle_strip' : cannot apply to input ERROR: 0:75: 'triangle_strip' : cannot apply to: uniform ERROR: 0:76: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:77: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:78: 'invocations' : not supported for this version or the enabled extensions ERROR: 0:78: 'invocations' : can only apply to a standalone qualifier ERROR: 0:80: 'invocations' : not supported for this version or the enabled extensions ERROR: 0:80: 'invocations' : can only apply to a standalone qualifier ERROR: 0:81: 'max_vertices' : can only apply to a standalone qualifier ERROR: 0:82: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:85: 'lines' : cannot apply to 'out' ERROR: 0:87: 'triangles' : cannot change previously set input primitive ERROR: 0:88: 'triangles_adjacency' : cannot change previously set input primitive ERROR: 0:89: 'invocations' : not supported for this version or the enabled extensions ERROR: 0:92: 'stream' : member cannot contradict block ERROR: 0:92: 'stream' : can only be used on an output ERROR: 0:129: 'gl_ViewportIndex' : required extension not requested: GL_ARB_viewport_array ERROR: 0:129: 'gl_MaxViewports' : required extension not requested: GL_ARB_viewport_array ERROR: 0:139: 'gl_ViewportIndex' : identifiers starting with "gl_" are reserved ERROR: 37 compilation errors. No code generated. Shader version: 150 Requested GL_ARB_viewport_array invocations = 4 max_vertices = 200 input primitive = lines_adjacency output primitive = triangle_strip ERROR: node is still EOpNull! 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 EmitVertex ( global void) 0:28 EndPrimitive ( global void) 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}) 0:32 Constant: 0:32 0 (const uint) 0:32 color: direct index for structure ( in 3-component vector of float) 0:32 direct index ( temp block{ in 3-component vector of float color}) 0:32 'fromV' ( in 4-element array of block{ in 3-component vector of float color}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 move second child to first child ( temp float) 0:33 direct index (layout( stream=0) temp float ClipDistance) 0:33 gl_ClipDistance: direct index for structure (layout( stream=0) out unsized 4-element array of float ClipDistance) 0:33 'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 2 (const uint) 0:33 Constant: 0:33 3 (const int) 0:33 direct index ( temp float ClipDistance) 0:33 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:33 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 2 (const int) 0:34 move second child to first child ( temp 4-component vector of float) 0:34 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:34 'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 0 (const uint) 0:34 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:34 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp float) 0:35 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize float PointSize) 0:35 'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance}) 0:35 Constant: 0:35 1 (const uint) 0:35 gl_PointSize: direct index for structure ( in float PointSize) 0:35 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:35 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 1 (const int) 0:36 move second child to first child ( temp int) 0:36 'gl_PrimitiveID' (layout( stream=0) out int PrimitiveID) 0:36 'gl_PrimitiveIDIn' ( in int PrimitiveID) 0:37 move second child to first child ( temp int) 0:37 'gl_Layer' (layout( stream=0) out int Layer) 0:37 Constant: 0:37 2 (const int) 0:67 Function Definition: foo(i1; ( global void) 0:67 Function Parameters: 0:67 'a' ( in int) 0:69 Sequence 0:69 move second child to first child ( temp 4-component vector of float) 0:69 a: direct index for structure (layout( stream=6) out 4-component vector of float) 0:69 'ouuaa6' (layout( stream=6) out block{layout( stream=6) out 4-component vector of float a}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1.000000 0:69 1.000000 0:69 1.000000 0:69 1.000000 0:107 Sequence 0:107 move second child to first child ( temp float) 0:107 'summ' ( global float) 0:107 Constant: 0:107 11332.000000 0:127 Function Definition: fooe1( ( global void) 0:127 Function Parameters: 0:129 Sequence 0:129 move second child to first child ( temp int) 0:129 'gl_ViewportIndex' (layout( stream=0) out int ViewportIndex) 0:129 Constant: 0:129 15 (const int) 0:134 Function Definition: fooe2( ( global void) 0:134 Function Parameters: 0:136 Sequence 0:136 move second child to first child ( temp int) 0:136 'gl_ViewportIndex' (layout( stream=0) out int ViewportIndex) 0:136 Constant: 0:136 15 (const int) 0:? Linker Objects 0:? 'fromV' ( in 4-element array of block{ in 3-component vector of float color}) 0:? 'toF' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) 0:? 'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:? 'ov0' (layout( stream=0) out 4-component vector of float) 0:? 'ov4' (layout( stream=4) out 4-component vector of float) 0:? 'o1v0' (layout( stream=0) out 4-component vector of float) 0:? 'ua' (layout( stream=3) uniform int) 0:? 'ibb' (layout( stream=3 column_major shared) uniform block{layout( stream=3 column_major shared) uniform int ua}) 0:? 'ov3' (layout( stream=3) out 4-component vector of float) 0:? 'ouuaa6' (layout( stream=6) out block{layout( stream=6) out 4-component vector of float a}) 0:? 'ouua6' (layout( stream=6) out block{layout( stream=6) out 4-component vector of float a}) 0:? 'ouua7' (layout( stream=7) out block{layout( stream=6) out 4-component vector of float a}) 0:? 'ov2s3' (layout( stream=3) out 4-component vector of float) 0:? 'badv4' (layout( stream=3) out 4-component vector of float) 0:? 'bad2v4' ( in 4-element array of 4-component vector of float) 0:? 'anon@2' (layout( stream=3) out block{layout( stream=3) out int a}) 0:? 'outbi' (layout( stream=3) out block{layout( stream=3) out int a, layout( stream=3) out int b, layout( stream=3) out int c}) 0:? 'inbi' ( in 4-element array of block{layout( stream=2) in int a}) 0:? 'insn' ( in 4-element array of block{ in int a15}) 0:? 'anon@3' (layout( stream=3) out block{layout( stream=3) out float f15}) 0:? 'anon@4' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15}) 0:? 'summ' ( global float) 0:? 'gl_ViewportIndex' (layout( stream=3) out int) Linked geometry stage: Shader version: 150 Requested GL_ARB_viewport_array invocations = 4 max_vertices = 200 input primitive = lines_adjacency output primitive = triangle_strip ERROR: node is still EOpNull! 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 EmitVertex ( global void) 0:28 EndPrimitive ( global void) 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}) 0:32 Constant: 0:32 0 (const uint) 0:32 color: direct index for structure ( in 3-component vector of float) 0:32 direct index ( temp block{ in 3-component vector of float color}) 0:32 'fromV' ( in 4-element array of block{ in 3-component vector of float color}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 move second child to first child ( temp float) 0:33 direct index (layout( stream=0) temp float ClipDistance) 0:33 gl_ClipDistance: direct index for structure (layout( stream=0) out 4-element array of float ClipDistance) 0:33 'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 2 (const uint) 0:33 Constant: 0:33 3 (const int) 0:33 direct index ( temp float ClipDistance) 0:33 gl_ClipDistance: direct index for structure ( in 3-element array of float ClipDistance) 0:33 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 2 (const int) 0:34 move second child to first child ( temp 4-component vector of float) 0:34 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:34 'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 0 (const uint) 0:34 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:34 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:34 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp float) 0:35 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize float PointSize) 0:35 'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance}) 0:35 Constant: 0:35 1 (const uint) 0:35 gl_PointSize: direct index for structure ( in float PointSize) 0:35 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:35 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 1 (const int) 0:36 move second child to first child ( temp int) 0:36 'gl_PrimitiveID' (layout( stream=0) out int PrimitiveID) 0:36 'gl_PrimitiveIDIn' ( in int PrimitiveID) 0:37 move second child to first child ( temp int) 0:37 'gl_Layer' (layout( stream=0) out int Layer) 0:37 Constant: 0:37 2 (const int) 0:107 Sequence 0:107 move second child to first child ( temp float) 0:107 'summ' ( global float) 0:107 Constant: 0:107 11332.000000 0:? Linker Objects 0:? 'fromV' ( in 4-element array of block{ in 3-component vector of float color}) 0:? 'toF' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) 0:? 'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:? 'ov0' (layout( stream=0) out 4-component vector of float) 0:? 'ov4' (layout( stream=4) out 4-component vector of float) 0:? 'o1v0' (layout( stream=0) out 4-component vector of float) 0:? 'ua' (layout( stream=3) uniform int) 0:? 'ibb' (layout( stream=3 column_major shared) uniform block{layout( stream=3 column_major shared) uniform int ua}) 0:? 'ov3' (layout( stream=3) out 4-component vector of float) 0:? 'ouuaa6' (layout( stream=6) out block{layout( stream=6) out 4-component vector of float a}) 0:? 'ouua6' (layout( stream=6) out block{layout( stream=6) out 4-component vector of float a}) 0:? 'ouua7' (layout( stream=7) out block{layout( stream=6) out 4-component vector of float a}) 0:? 'ov2s3' (layout( stream=3) out 4-component vector of float) 0:? 'badv4' (layout( stream=3) out 4-component vector of float) 0:? 'bad2v4' ( in 4-element array of 4-component vector of float) 0:? 'anon@2' (layout( stream=3) out block{layout( stream=3) out int a}) 0:? 'outbi' (layout( stream=3) out block{layout( stream=3) out int a, layout( stream=3) out int b, layout( stream=3) out int c}) 0:? 'inbi' ( in 4-element array of block{layout( stream=2) in int a}) 0:? 'insn' ( in 4-element array of block{ in int a15}) 0:? 'anon@3' (layout( stream=3) out block{layout( stream=3) out float f15}) 0:? 'anon@4' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15}) 0:? 'summ' ( global float) 0:? 'gl_ViewportIndex' (layout( stream=3) out int) glslang-16.0.0/Test/baseResults/150.tesc.out000066400000000000000000002610621506534232700204510ustar00rootroot00000000000000150.tesc Shader version: 150 Requested GL_ARB_tessellation_shader vertices = 4 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Barrier ( global void) 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'a' ( temp int) 0:14 Constant: 0:14 5392 (const int) 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'p' ( temp 4-component vector of float) 0:20 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:20 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:20 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'ps' ( temp float) 0:21 gl_PointSize: direct index for structure ( in float PointSize) 0:21 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:21 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'cd' ( temp float) 0:22 direct index ( temp float ClipDistance) 0:22 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:22 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:22 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 2 (const int) 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'pvi' ( temp int) 0:24 'gl_PatchVerticesIn' ( in int PatchVertices) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'pid' ( temp int) 0:25 'gl_PrimitiveID' ( in int PrimitiveID) 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'iid' ( temp int) 0:26 'gl_InvocationID' ( in int InvocationID) 0:28 move second child to first child ( temp 4-component vector of float) 0:28 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:28 indirect index ( temp 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}) 0:28 '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}) 0:28 'gl_InvocationID' ( in int InvocationID) 0:28 Constant: 0:28 0 (const int) 0:28 'p' ( temp 4-component vector of float) 0:29 move second child to first child ( temp float) 0:29 gl_PointSize: direct index for structure ( out float PointSize) 0:29 indirect index ( temp 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}) 0:29 '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}) 0:29 'gl_InvocationID' ( in int InvocationID) 0:29 Constant: 0:29 1 (const int) 0:29 'ps' ( temp float) 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float ClipDistance) 0:30 gl_ClipDistance: direct index for structure ( out unsized 2-element array of float ClipDistance) 0:30 indirect index ( temp 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}) 0:30 '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}) 0:30 'gl_InvocationID' ( in int InvocationID) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 'cd' ( temp float) 0:32 move second child to first child ( temp float) 0:32 direct index ( patch temp float TessLevelOuter) 0:32 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 3.200000 0:33 move second child to first child ( temp float) 0:33 direct index ( patch temp float TessLevelInner) 0:33 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1.300000 0:? Linker Objects 0:? '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}) 0:? 'outa' ( global 4-element array of int) 0:? 'patchOut' ( patch out 4-component vector of float) 150.tese ERROR: 0:12: 'barrier' : no matching overloaded function found ERROR: 1 compilation errors. No code generated. Shader version: 150 Requested GL_ARB_tessellation_shader input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Constant: 0:12 0.000000 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'a' ( temp int) 0:14 Constant: 0:14 1512 (const int) 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'p' ( temp 4-component vector of float) 0:22 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:22 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:22 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'ps' ( temp float) 0:23 gl_PointSize: direct index for structure ( in float PointSize) 0:23 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 1 (const int) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'cd' ( temp float) 0:24 direct index ( temp float ClipDistance) 0:24 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:24 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 2 (const int) 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'pvi' ( temp int) 0:26 'gl_PatchVerticesIn' ( in int PatchVertices) 0:27 Sequence 0:27 move second child to first child ( temp int) 0:27 'pid' ( temp int) 0:27 'gl_PrimitiveID' ( in int PrimitiveID) 0:28 Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 'tc' ( temp 3-component vector of float) 0:28 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'tlo' ( temp float) 0:29 direct index ( patch temp float TessLevelOuter) 0:29 'gl_TessLevelOuter' ( patch in 4-element array of float TessLevelOuter) 0:29 Constant: 0:29 3 (const int) 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'tli' ( temp float) 0:30 direct index ( patch temp float TessLevelInner) 0:30 'gl_TessLevelInner' ( patch in 2-element array of float TessLevelInner) 0:30 Constant: 0:30 1 (const int) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:32 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:32 Constant: 0:32 0 (const uint) 0:32 'p' ( temp 4-component vector of float) 0:33 move second child to first child ( temp float) 0:33 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:33 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 1 (const uint) 0:33 'ps' ( temp float) 0:34 move second child to first child ( temp float) 0:34 direct index ( temp float ClipDistance) 0:34 gl_ClipDistance: direct index for structure ( out unsized 3-element array of float ClipDistance) 0:34 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 2 (const uint) 0:34 Constant: 0:34 2 (const int) 0:34 'cd' ( temp float) 0:? Linker Objects 0:? 'patchIn' ( patch in 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 3-element array of float ClipDistance gl_ClipDistance}) 400.tesc ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:46: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:51: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:54: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:61: '' : tessellation control barrier() cannot be placed after a return from main() ERROR: 0:64: 'vertices' : can only apply to 'out' ERROR: 0:65: 'vertices' : cannot change previously set layout value ERROR: 0:69: '[' : array index out of range '4' ERROR: 0:71: '' : tessellation control barrier() must be in main() ERROR: 0:74: 'in' : type must be an array: ina ERROR: 0:76: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:83: 'location' : overlapping use of location 4 ERROR: 0:87: 'location' : overlapping use of location 4 ERROR: 0:104: '' : precise qualifier must appear first ERROR: 0:105: '' : precise qualifier must appear first ERROR: 0:105: '' : precise qualifier must appear first ERROR: 0:109: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:110: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview ERROR: 23 compilation errors. No code generated. Shader version: 400 Requested GL_ARB_separate_shader_objects Requested GL_EXT_device_group Requested GL_EXT_multiview vertices = 4 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 Barrier ( global void) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'a' ( temp int) 0:17 Constant: 0:17 5392 (const int) 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'p' ( temp 4-component vector of float) 0:23 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:23 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'ps' ( temp float) 0:24 gl_PointSize: direct index for structure ( in float PointSize) 0:24 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'cd' ( temp float) 0:25 direct index ( temp float ClipDistance) 0:25 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:25 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:25 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 2 (const int) 0:27 Sequence 0:27 move second child to first child ( temp int) 0:27 'pvi' ( temp int) 0:27 'gl_PatchVerticesIn' ( in int PatchVertices) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'pid' ( temp int) 0:28 'gl_PrimitiveID' ( in int PrimitiveID) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'iid' ( temp int) 0:29 'gl_InvocationID' ( in int InvocationID) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:31 indirect index ( temp 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}) 0:31 '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}) 0:31 'gl_InvocationID' ( in int InvocationID) 0:31 Constant: 0:31 0 (const int) 0:31 'p' ( temp 4-component vector of float) 0:32 move second child to first child ( temp float) 0:32 gl_PointSize: direct index for structure ( out float PointSize) 0:32 indirect index ( temp 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}) 0:32 '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}) 0:32 'gl_InvocationID' ( in int InvocationID) 0:32 Constant: 0:32 1 (const int) 0:32 'ps' ( temp float) 0:33 move second child to first child ( temp float) 0:33 direct index ( temp float ClipDistance) 0:33 gl_ClipDistance: direct index for structure ( out unsized 2-element array of float ClipDistance) 0:33 indirect index ( temp 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}) 0:33 '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}) 0:33 'gl_InvocationID' ( in int InvocationID) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 'cd' ( temp float) 0:35 move second child to first child ( temp float) 0:35 direct index ( patch temp float TessLevelOuter) 0:35 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 3.200000 0:36 move second child to first child ( temp float) 0:36 direct index ( patch temp float TessLevelInner) 0:36 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1.300000 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Greater Than ( temp bool) 0:38 'a' ( temp int) 0:38 Constant: 0:38 10 (const int) 0:38 true case 0:39 Barrier ( global void) 0:38 false case 0:41 Barrier ( global void) 0:43 Barrier ( global void) 0:47 Loop with condition not tested first 0:47 Loop Condition 0:47 Compare Greater Than ( temp bool) 0:47 'a' ( temp int) 0:47 Constant: 0:47 10 (const int) 0:47 Loop Body 0:46 Sequence 0:46 Barrier ( global void) 0:49 switch 0:49 condition 0:49 'a' ( temp int) 0:49 body 0:49 Sequence 0:50 default: 0:? Sequence 0:51 Barrier ( global void) 0:52 Branch: Break 0:54 Test condition and select ( temp int) 0:54 Condition 0:54 Compare Less Than ( temp bool) 0:54 'a' ( temp int) 0:54 Constant: 0:54 12 (const int) 0:54 true case 0:54 'a' ( temp int) 0:54 false case 0:54 Comma ( temp int) 0:54 Barrier ( global void) 0:54 'a' ( temp int) 0:56 Sequence 0:56 Barrier ( global void) 0:59 Branch: Return 0:61 Barrier ( global void) 0:67 Function Definition: foo( ( global void) 0:67 Function Parameters: 0:69 Sequence 0:69 gl_PointSize: direct index for structure ( out float PointSize) 0:69 direct index ( temp 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}) 0:69 '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}) 0:69 Constant: 0:69 4 (const int) 0:69 Constant: 0:69 1 (const int) 0:71 Barrier ( global void) 0:91 Function Definition: foop( ( global void) 0:91 Function Parameters: 0:? Sequence 0:95 multiply second child into first child ( temp 3-component vector of float) 0:95 'pv3' ( noContraction temp 3-component vector of float) 0:95 'pv3' ( noContraction temp 3-component vector of float) 0:96 move second child to first child ( temp 3-component vector of float) 0:96 'pv3' ( noContraction temp 3-component vector of float) 0:96 fma ( global 3-component vector of float) 0:96 'pv3' ( noContraction temp 3-component vector of float) 0:96 'pv3' ( noContraction temp 3-component vector of float) 0:96 'pv3' ( noContraction temp 3-component vector of float) 0:97 move second child to first child ( temp double) 0:97 'd' ( noContraction temp double) 0:97 fma ( global double) 0:97 'd' ( noContraction temp double) 0:97 'd' ( noContraction temp double) 0:97 'd' ( noContraction temp double) 0:107 Function Definition: devi( ( global void) 0:107 Function Parameters: 0:109 Sequence 0:109 'gl_DeviceIndex' ( in int DeviceIndex) 0:110 'gl_ViewIndex' ( in int ViewIndex) 0:121 Function Definition: devie( ( global void) 0:121 Function Parameters: 0:123 Sequence 0:123 'gl_DeviceIndex' ( in int DeviceIndex) 0:124 'gl_ViewIndex' ( in int ViewIndex) 0:? Linker Objects 0:? '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}) 0:? 'outa' ( global 4-element array of int) 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'patchOut' ( patch out 4-component vector of float) 0:? 'ina' ( in 2-component vector of float) 0:? 'inb' ( in 32-element array of 2-component vector of float) 0:? 'inc' ( in 32-element array of 2-component vector of float) 0:? 'ind' ( in 32-element array of 2-component vector of float) 0:? 'ivla' (layout( location=3) in 32-element array of 4-component vector of float) 0:? 'ivlb' (layout( location=4) in 32-element array of 4-component vector of float) 0:? 'ivlc' (layout( location=4) in 32-element array of 4-component vector of float) 0:? 'ovla' (layout( location=3) out 4-element array of 4-component vector of float) 0:? 'ovlb' (layout( location=4) out 4-element array of 4-component vector of float) 0:? 'ovlc' (layout( location=4) out 4-element array of 4-component vector of float) 0:? 'pv3' ( noContraction temp 3-component vector of float) 0:? 'pinbi' ( patch out block{ out int a}) 0:? 'badOrder' ( invariant noContraction out 4-element array of 4-component vector of float) 400.tese ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:5: 'triangles' : cannot change previously set input primitive ERROR: 0:6: 'isolines' : cannot change previously set input primitive ERROR: 0:8: 'ccw' : cannot change previously set vertex order ERROR: 0:12: 'equal_spacing' : cannot change previously set vertex spacing ERROR: 0:13: 'fractional_even_spacing' : cannot change previously set vertex spacing ERROR: 0:18: 'patch' : can only use on input in tessellation-evaluation shader ERROR: 0:22: 'barrier' : no matching overloaded function found ERROR: 0:47: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 0:64: 'quads' : cannot apply to 'out' ERROR: 0:64: 'cw' : can only apply to 'in' ERROR: 0:65: 'triangles' : cannot apply to 'out' ERROR: 0:66: 'isolines' : cannot apply to 'out' ERROR: 0:67: 'cw' : can only apply to 'in' ERROR: 0:68: 'fractional_odd_spacing' : can only apply to 'in' ERROR: 0:69: 'equal_spacing' : can only apply to 'in' ERROR: 0:70: 'fractional_even_spacing' : can only apply to 'in' ERROR: 0:71: 'point_mode' : can only apply to 'in' ERROR: 0:73: 'in' : type must be an array: ina ERROR: 0:75: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:78: 'in' : type must be an array: bla ERROR: 0:86: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:96: 'location' : overlapping use of location 24 ERROR: 0:99: 'location' : overlapping use of location 24 ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved ERROR: 0:109: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:110: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview ERROR: 31 compilation errors. No code generated. Shader version: 400 Requested GL_ARB_separate_shader_objects Requested GL_EXT_device_group Requested GL_EXT_multiview input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Constant: 0:22 0.000000 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'a' ( temp int) 0:24 Constant: 0:24 1512 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'p' ( temp 4-component vector of float) 0:32 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:32 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:32 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'ps' ( temp float) 0:33 gl_PointSize: direct index for structure ( in float PointSize) 0:33 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'cd' ( temp float) 0:34 direct index ( temp float ClipDistance) 0:34 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:34 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 2 (const int) 0:36 Sequence 0:36 move second child to first child ( temp int) 0:36 'pvi' ( temp int) 0:36 'gl_PatchVerticesIn' ( in int PatchVertices) 0:37 Sequence 0:37 move second child to first child ( temp int) 0:37 'pid' ( temp int) 0:37 'gl_PrimitiveID' ( in int PrimitiveID) 0:38 Sequence 0:38 move second child to first child ( temp 3-component vector of float) 0:38 'tc' ( temp 3-component vector of float) 0:38 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:39 Sequence 0:39 move second child to first child ( temp float) 0:39 'tlo' ( temp float) 0:39 direct index ( patch temp float TessLevelOuter) 0:39 'gl_TessLevelOuter' ( patch in 4-element array of float TessLevelOuter) 0:39 Constant: 0:39 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'tli' ( temp float) 0:40 direct index ( patch temp float TessLevelInner) 0:40 'gl_TessLevelInner' ( patch in 2-element array of float TessLevelInner) 0:40 Constant: 0:40 1 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:42 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:42 Constant: 0:42 0 (const uint) 0:42 'p' ( temp 4-component vector of float) 0:43 move second child to first child ( temp float) 0:43 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:43 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:43 Constant: 0:43 1 (const uint) 0:43 'ps' ( temp float) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float ClipDistance) 0:44 gl_ClipDistance: direct index for structure ( out unsized 3-element array of float ClipDistance) 0:44 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:44 Constant: 0:44 2 (const uint) 0:44 Constant: 0:44 2 (const int) 0:44 'cd' ( temp float) 0:107 Function Definition: devi( ( global void) 0:107 Function Parameters: 0:109 Sequence 0:109 'gl_DeviceIndex' ( in int DeviceIndex) 0:110 'gl_ViewIndex' ( in int ViewIndex) 0:121 Function Definition: devie( ( global void) 0:121 Function Parameters: 0:123 Sequence 0:123 'gl_DeviceIndex' ( in int DeviceIndex) 0:124 'gl_ViewIndex' ( in int ViewIndex) 0:? Linker Objects 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'patchOut' ( patch 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 3-element array of float ClipDistance gl_ClipDistance}) 0:? 'badp1' ( smooth patch in 4-component vector of float) 0:? 'badp2' ( flat patch in 4-component vector of float) 0:? 'badp3' ( noperspective patch in 4-component vector of float) 0:? 'badp4' ( patch sample in 3-component vector of float) 0:? 'gl_in' ( in 32-element array of block{ in 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'ina' ( in 2-component vector of float) 0:? 'inb' ( in 32-element array of 2-component vector of float) 0:? 'inc' ( in 32-element array of 2-component vector of float) 0:? 'ind' ( in 32-element array of 2-component vector of float) 0:? 'bla' ( in block{ in int f}) 0:? 'blb' ( in 32-element array of block{ in int f}) 0:? 'blc' ( in 32-element array of block{ in int f}) 0:? 'bld' ( in 32-element array of block{ in int f}) 0:? 'ivla' (layout( location=23) in 32-element array of 4-component vector of float) 0:? 'ivlb' (layout( location=24) in 32-element array of 4-component vector of float) 0:? 'ivlc' (layout( location=24) in 32-element array of 4-component vector of float) 0:? 'ovla' (layout( location=23) out 2-element array of 4-component vector of float) 0:? 'ovlb' (layout( location=24) out 2-element array of 4-component vector of float) 0:? 'pinbi' ( patch in block{ in int a}) 410.tesc ERROR: 0:4: 'length' : array must first be sized by a redeclaration or layout qualifier ERROR: 1 compilation errors. No code generated. Shader version: 400 vertices = -1 ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:? Linker Objects 0:? 'gl_out' ( out unsized 1-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'outa' ( global 1-element array of int) 0:? 'patchOut' ( patch out 4-component vector of float) 420.tesc 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 '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 ERROR: 7 compilation errors. No code generated. Shader version: 420 Requested GL_ARB_separate_shader_objects vertices = 4 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 4-component vector of float) 0:17 'p' ( temp 4-component vector of float) 0:17 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:17 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:17 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'ps' ( temp float) 0:18 gl_PointSize: direct index for structure ( in float PointSize) 0:18 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:18 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'cd' ( temp float) 0:19 direct index ( temp float ClipDistance) 0:19 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:19 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:19 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 2 (const int) 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'pvi' ( temp int) 0:21 'gl_PatchVerticesIn' ( in int PatchVertices) 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 'pid' ( temp int) 0:22 'gl_PrimitiveID' ( in int PrimitiveID) 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'iid' ( temp int) 0:23 'gl_InvocationID' ( in int InvocationID) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:25 indirect index ( temp block{ out 4-component vector of float Position gl_Position}) 0:25 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:25 'gl_InvocationID' ( in int InvocationID) 0:25 Constant: 0:25 0 (const int) 0:25 'p' ( temp 4-component vector of float) 0:26 indirect index ( temp block{ out 4-component vector of float Position gl_Position}) 0:26 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:26 'gl_InvocationID' ( in int InvocationID) 0:34 Function Definition: foo( ( global void) 0:34 Function Parameters: 0:36 Sequence 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 logical-or ( temp bool) 0:36 Compare Not Equal ( temp bool) 0:36 Constant: 0:36 -0.625000 0:36 -0.500000 0:36 -0.375000 0:36 -0.250000 0:36 -0.375000 0:36 -0.250000 0:36 -0.125000 0:36 0.000000 0:36 direct index (layout( location=0) temp 2X4 matrix of double) 0:36 'vs_tcs_first' (layout( location=0) in 32-element array of 2X4 matrix of double) 0:36 Constant: 0:36 0 (const int) 0:37 Compare Not Equal ( temp bool) 0:37 Constant: 0:37 0.375000 0:37 0.500000 0:37 0.625000 0:37 0.750000 0:37 0.625000 0:37 0.750000 0:37 0.875000 0:37 -0.625000 0:37 direct index (layout( location=12) temp 2X4 matrix of double) 0:37 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double) 0:37 Constant: 0:37 0 (const int) 0:36 true case is null 0:? Linker Objects 0:? 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:? 'a' ( out 3-element array of int) 0:? 'outb' ( out 5-element array of int) 0:? 'outc' ( out 4-element array of int) 0:? 'outf' ( out float) 0:? 'vs_tcs_first' (layout( location=0) in 32-element array of 2X4 matrix of double) 0:? 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double) 420.tese ERROR: 0:7: '=' : cannot convert from ' const 3-element array of float' to ' global 2-element array of float' ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): temp 2-component vector of float ERROR: 0:9: 'initializer list' : wrong number of matrix columns: temp 3X3 matrix of float ERROR: 0:10: 'initializer list' : wrong number of matrix columns: temp 2X2 matrix of float ERROR: 0:25: 'initializer list' : wrong number of structure members ERROR: 0:27: '=' : cannot convert from ' const bool' to ' global int' ERROR: 0:28: 'constructor' : cannot convert parameter 2 from ' const float' to ' temp 4-component vector of float' ERROR: 0:29: 'constructor' : cannot convert parameter 2 from ' const 2X2 matrix of float' to ' const 4-component vector of float' ERROR: 0:29: ' const 2-element array of 4-component vector of float' : cannot construct with these arguments ERROR: 0:29: '=' : cannot convert from ' const float' to ' global 2-element array of 4-component vector of float' ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' const structure{ global 4-component vector of float a, global 4-component vector of float b}' to ' temp structure{ global float s, global float t}' ERROR: 0:70: 'initializer list' : wrong number of structure members ERROR: 13 compilation errors. No code generated. Shader version: 420 input primitive = none vertex spacing = none triangle order = none ERROR: node is still EOpNull! 0:4 Sequence 0:4 move second child to first child ( temp 2X2 matrix of float) 0:4 'b' ( global 2X2 matrix of float) 0:4 Constant: 0:4 1.000000 0:4 0.000000 0:4 0.000000 0:4 1.000000 0:15 Sequence 0:15 move second child to first child ( temp structure{ global float a, global int b}) 0:15 'e' ( global structure{ global float a, global int b}) 0:15 Constant: 0:15 1.200000 0:15 2 (const int) 0:20 Sequence 0:20 move second child to first child ( temp structure{ global float a, global int b}) 0:20 'e2' ( global structure{ global float a, global int b}) 0:20 Constant: 0:20 1.000000 0:20 3 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 5-element array of float) 0:42 'b5' ( global 5-element array of float) 0:42 Constant: 0:42 3.400000 0:42 4.200000 0:42 5.000000 0:42 5.200000 0:42 1.100000 0:55 Sequence 0:55 move second child to first child ( temp structure{ global int f}) 0:55 'single1' ( global structure{ global int f}) 0:55 Constant: 0:55 10 (const int) 0:58 Sequence 0:58 move second child to first child ( temp structure{ global 2-component vector of uint v}) 0:58 'single2' ( global structure{ global 2-component vector of uint v}) 0:58 Constant: 0:58 1 (const uint) 0:58 2 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp structure{ global structure{ global int f} s1}) 0:61 'single3' ( global structure{ global structure{ global int f} s1}) 0:61 Constant: 0:61 3 (const int) 0:64 Sequence 0:64 move second child to first child ( temp structure{ global structure{ global 2-component vector of uint v} s1}) 0:64 'single4' ( global structure{ global structure{ global 2-component vector of uint v} s1}) 0:64 Constant: 0:64 4 (const uint) 0:64 5 (const uint) 0:79 Sequence 0:79 move second child to first child ( temp 3-component vector of float) 0:79 'av3' ( global 3-component vector of float) 0:79 Construct vec3 ( global 3-component vector of float) 0:79 'vc1' ( global float) 0:79 'vc2' ( global float) 0:79 'vc3' ( global float) 0:80 Sequence 0:80 move second child to first child ( temp 3-component vector of float) 0:80 'bv3' ( global 3-component vector of float) 0:80 Construct vec3 ( temp 3-component vector of float) 0:80 'vc1' ( global float) 0:80 'vc2' ( global float) 0:80 'vc3' ( global float) 0:82 Function Definition: main( ( global void) 0:82 Function Parameters: 0:84 Sequence 0:84 MemoryBarrier ( global void) 0:86 Test condition and select ( temp void) 0:86 Condition 0:86 Compare Equal ( temp bool) 0:86 Constant: 0:86 1 (const uint) 0:86 2 (const uint) 0:86 3.000000 0:86 4.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 4.000000 0:86 0.000000 0:86 5.000000 0:86 6.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 6.000000 0:86 0.000000 0:86 'curlybad1' ( temp structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:86 true case is null 0:88 Test condition and select ( temp void) 0:88 Condition 0:88 Constant: 0:88 true (const bool) 0:88 true case is null 0:? Linker Objects 0:? 'a' ( const 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'b' ( global 2X2 matrix of float) 0:? 'c' ( const 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'a2' ( global 2-element array of float) 0:? 'b2' ( global 2-component vector of float) 0:? 'c2' ( global 3X3 matrix of float) 0:? 'd' ( global 2X2 matrix of float) 0:? 'e' ( global structure{ global float a, global int b}) 0:? 'e2' ( global structure{ global float a, global int b}) 0:? 'e3' ( global structure{ global float a, global int b}) 0:? 'a3' ( global int) 0:? 'b3' ( global 2-element array of 4-component vector of float) 0:? 'b4' ( global 2-element array of 4-component vector of float) 0:? 'c3' ( global 4X2 matrix of float) 0:? 'd2' ( global unsized 1-element array of structure{ global float s, global float t}) 0:? 'b5' ( global 5-element array of float) 0:? 'single1' ( global structure{ global int f}) 0:? 'single2' ( global structure{ global 2-component vector of uint v}) 0:? 'single3' ( global structure{ global structure{ global int f} s1}) 0:? 'single4' ( global structure{ global structure{ global 2-component vector of uint v} s1}) 0:? 'constructed' ( const structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3.000000 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 0.000000 0:? 5.000000 0:? 6.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 6.000000 0:? 0.000000 0:? 'curlybad1' ( temp structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 'curlyInit' ( const structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3.000000 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 0.000000 0:? 5.000000 0:? 6.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 6.000000 0:? 0.000000 0:? 'vc1' ( global float) 0:? 'vc2' ( global float) 0:? 'vc3' ( global float) 0:? 'av3' ( global 3-component vector of float) 0:? 'bv3' ( global 3-component vector of float) Linked tessellation control stage: 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( 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( 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 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( 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: Multiple function bodies in multiple compilation units for the same signature in the same stage: 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 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: ERROR: Linking tessellation evaluation stage: can't handle multiple entry points per stage ERROR: Linking tessellation evaluation stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( ERROR: Linking tessellation evaluation stage: can't handle multiple entry points per stage ERROR: Linking tessellation evaluation stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( ERROR: Linking tessellation evaluation stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( Shader version: 420 Requested GL_ARB_separate_shader_objects Requested GL_ARB_tessellation_shader Requested GL_EXT_device_group Requested GL_EXT_multiview vertices = 4 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Barrier ( global void) 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'a' ( temp int) 0:14 Constant: 0:14 5392 (const int) 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'p' ( temp 4-component vector of float) 0:20 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:20 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:20 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'ps' ( temp float) 0:21 gl_PointSize: direct index for structure ( in float PointSize) 0:21 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:21 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'cd' ( temp float) 0:22 direct index ( temp float ClipDistance) 0:22 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:22 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:22 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 2 (const int) 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'pvi' ( temp int) 0:24 'gl_PatchVerticesIn' ( in int PatchVertices) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'pid' ( temp int) 0:25 'gl_PrimitiveID' ( in int PrimitiveID) 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'iid' ( temp int) 0:26 'gl_InvocationID' ( in int InvocationID) 0:28 move second child to first child ( temp 4-component vector of float) 0:28 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:28 indirect index ( temp 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}) 0:28 '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}) 0:28 'gl_InvocationID' ( in int InvocationID) 0:28 Constant: 0:28 0 (const int) 0:28 'p' ( temp 4-component vector of float) 0:29 move second child to first child ( temp float) 0:29 gl_PointSize: direct index for structure ( out float PointSize) 0:29 indirect index ( temp 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}) 0:29 '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}) 0:29 'gl_InvocationID' ( in int InvocationID) 0:29 Constant: 0:29 1 (const int) 0:29 'ps' ( temp float) 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float ClipDistance) 0:30 gl_ClipDistance: direct index for structure ( out unsized 2-element array of float ClipDistance) 0:30 indirect index ( temp 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}) 0:30 '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}) 0:30 'gl_InvocationID' ( in int InvocationID) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 'cd' ( temp float) 0:32 move second child to first child ( temp float) 0:32 direct index ( patch temp float TessLevelOuter) 0:32 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 3.200000 0:33 move second child to first child ( temp float) 0:33 direct index ( patch temp float TessLevelInner) 0:33 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1.300000 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 Barrier ( global void) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'a' ( temp int) 0:17 Constant: 0:17 5392 (const int) 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'p' ( temp 4-component vector of float) 0:23 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:23 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'ps' ( temp float) 0:24 gl_PointSize: direct index for structure ( in float PointSize) 0:24 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'cd' ( temp float) 0:25 direct index ( temp float ClipDistance) 0:25 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:25 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:25 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 2 (const int) 0:27 Sequence 0:27 move second child to first child ( temp int) 0:27 'pvi' ( temp int) 0:27 'gl_PatchVerticesIn' ( in int PatchVertices) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'pid' ( temp int) 0:28 'gl_PrimitiveID' ( in int PrimitiveID) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'iid' ( temp int) 0:29 'gl_InvocationID' ( in int InvocationID) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:31 indirect index ( temp 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}) 0:31 '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}) 0:31 'gl_InvocationID' ( in int InvocationID) 0:31 Constant: 0:31 0 (const int) 0:31 'p' ( temp 4-component vector of float) 0:32 move second child to first child ( temp float) 0:32 gl_PointSize: direct index for structure ( out float PointSize) 0:32 indirect index ( temp 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}) 0:32 '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}) 0:32 'gl_InvocationID' ( in int InvocationID) 0:32 Constant: 0:32 1 (const int) 0:32 'ps' ( temp float) 0:33 move second child to first child ( temp float) 0:33 direct index ( temp float ClipDistance) 0:33 gl_ClipDistance: direct index for structure ( out unsized 2-element array of float ClipDistance) 0:33 indirect index ( temp 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}) 0:33 '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}) 0:33 'gl_InvocationID' ( in int InvocationID) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 'cd' ( temp float) 0:35 move second child to first child ( temp float) 0:35 direct index ( patch temp float TessLevelOuter) 0:35 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 3.200000 0:36 move second child to first child ( temp float) 0:36 direct index ( patch temp float TessLevelInner) 0:36 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1.300000 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Greater Than ( temp bool) 0:38 'a' ( temp int) 0:38 Constant: 0:38 10 (const int) 0:38 true case 0:39 Barrier ( global void) 0:38 false case 0:41 Barrier ( global void) 0:43 Barrier ( global void) 0:47 Loop with condition not tested first 0:47 Loop Condition 0:47 Compare Greater Than ( temp bool) 0:47 'a' ( temp int) 0:47 Constant: 0:47 10 (const int) 0:47 Loop Body 0:46 Sequence 0:46 Barrier ( global void) 0:49 switch 0:49 condition 0:49 'a' ( temp int) 0:49 body 0:49 Sequence 0:50 default: 0:? Sequence 0:51 Barrier ( global void) 0:52 Branch: Break 0:54 Test condition and select ( temp int) 0:54 Condition 0:54 Compare Less Than ( temp bool) 0:54 'a' ( temp int) 0:54 Constant: 0:54 12 (const int) 0:54 true case 0:54 'a' ( temp int) 0:54 false case 0:54 Comma ( temp int) 0:54 Barrier ( global void) 0:54 'a' ( temp int) 0:56 Sequence 0:56 Barrier ( global void) 0:59 Branch: Return 0:61 Barrier ( global void) 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 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 4-component vector of float) 0:17 'p' ( temp 4-component vector of float) 0:17 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:17 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:17 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'ps' ( temp float) 0:18 gl_PointSize: direct index for structure ( in float PointSize) 0:18 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:18 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'cd' ( temp float) 0:19 direct index ( temp float ClipDistance) 0:19 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:19 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:19 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 2 (const int) 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'pvi' ( temp int) 0:21 'gl_PatchVerticesIn' ( in int PatchVertices) 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 'pid' ( temp int) 0:22 'gl_PrimitiveID' ( in int PrimitiveID) 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'iid' ( temp int) 0:23 'gl_InvocationID' ( in int InvocationID) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:25 indirect index ( temp block{ out 4-component vector of float Position gl_Position}) 0:25 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:25 'gl_InvocationID' ( in int InvocationID) 0:25 Constant: 0:25 0 (const int) 0:25 'p' ( temp 4-component vector of float) 0:26 indirect index ( temp block{ out 4-component vector of float Position gl_Position}) 0:26 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:26 'gl_InvocationID' ( in int InvocationID) 0:? Linker Objects 0:? '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}) 0:? 'outa' ( global 4-element array of int) 0:? 'patchOut' ( patch out 4-component vector of float) 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'ina' ( in 2-component vector of float) 0:? 'inb' ( in 32-element array of 2-component vector of float) 0:? 'inc' ( in 32-element array of 2-component vector of float) 0:? 'ind' ( in 32-element array of 2-component vector of float) 0:? 'ivla' (layout( location=3) in 32-element array of 4-component vector of float) 0:? 'ivlb' (layout( location=4) in 32-element array of 4-component vector of float) 0:? 'ivlc' (layout( location=4) in 32-element array of 4-component vector of float) 0:? 'ovla' (layout( location=3) out 4-element array of 4-component vector of float) 0:? 'ovlb' (layout( location=4) out 4-element array of 4-component vector of float) 0:? 'ovlc' (layout( location=4) out 4-element array of 4-component vector of float) 0:? 'pv3' ( noContraction temp 3-component vector of float) 0:? 'pinbi' ( patch out block{ out int a}) 0:? 'badOrder' ( invariant noContraction out 4-element array of 4-component vector of float) 0:? 'a' ( out 3-element array of int) 0:? 'outb' ( out 5-element array of int) 0:? 'outc' ( out 4-element array of int) 0:? 'outf' ( out float) 0:? 'vs_tcs_first' (layout( location=0) in 32-element array of 2X4 matrix of double) 0:? 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double) Shader version: 420 Requested GL_ARB_separate_shader_objects Requested GL_ARB_tessellation_shader Requested GL_EXT_device_group Requested GL_EXT_multiview input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Constant: 0:12 0.000000 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'a' ( temp int) 0:14 Constant: 0:14 1512 (const int) 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'p' ( temp 4-component vector of float) 0:22 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:22 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:22 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'ps' ( temp float) 0:23 gl_PointSize: direct index for structure ( in float PointSize) 0:23 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 1 (const int) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'cd' ( temp float) 0:24 direct index ( temp float ClipDistance) 0:24 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:24 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 2 (const int) 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'pvi' ( temp int) 0:26 'gl_PatchVerticesIn' ( in int PatchVertices) 0:27 Sequence 0:27 move second child to first child ( temp int) 0:27 'pid' ( temp int) 0:27 'gl_PrimitiveID' ( in int PrimitiveID) 0:28 Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 'tc' ( temp 3-component vector of float) 0:28 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'tlo' ( temp float) 0:29 direct index ( patch temp float TessLevelOuter) 0:29 'gl_TessLevelOuter' ( patch in 4-element array of float TessLevelOuter) 0:29 Constant: 0:29 3 (const int) 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'tli' ( temp float) 0:30 direct index ( patch temp float TessLevelInner) 0:30 'gl_TessLevelInner' ( patch in 2-element array of float TessLevelInner) 0:30 Constant: 0:30 1 (const int) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:32 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:32 Constant: 0:32 0 (const uint) 0:32 'p' ( temp 4-component vector of float) 0:33 move second child to first child ( temp float) 0:33 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:33 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 1 (const uint) 0:33 'ps' ( temp float) 0:34 move second child to first child ( temp float) 0:34 direct index ( temp float ClipDistance) 0:34 gl_ClipDistance: direct index for structure ( out unsized 3-element array of float ClipDistance) 0:34 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 2 (const uint) 0:34 Constant: 0:34 2 (const int) 0:34 'cd' ( temp float) 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Constant: 0:22 0.000000 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'a' ( temp int) 0:24 Constant: 0:24 1512 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'p' ( temp 4-component vector of float) 0:32 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:32 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:32 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'ps' ( temp float) 0:33 gl_PointSize: direct index for structure ( in float PointSize) 0:33 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'cd' ( temp float) 0:34 direct index ( temp float ClipDistance) 0:34 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:34 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 2 (const int) 0:36 Sequence 0:36 move second child to first child ( temp int) 0:36 'pvi' ( temp int) 0:36 'gl_PatchVerticesIn' ( in int PatchVertices) 0:37 Sequence 0:37 move second child to first child ( temp int) 0:37 'pid' ( temp int) 0:37 'gl_PrimitiveID' ( in int PrimitiveID) 0:38 Sequence 0:38 move second child to first child ( temp 3-component vector of float) 0:38 'tc' ( temp 3-component vector of float) 0:38 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:39 Sequence 0:39 move second child to first child ( temp float) 0:39 'tlo' ( temp float) 0:39 direct index ( patch temp float TessLevelOuter) 0:39 'gl_TessLevelOuter' ( patch in 4-element array of float TessLevelOuter) 0:39 Constant: 0:39 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'tli' ( temp float) 0:40 direct index ( patch temp float TessLevelInner) 0:40 'gl_TessLevelInner' ( patch in 2-element array of float TessLevelInner) 0:40 Constant: 0:40 1 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:42 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:42 Constant: 0:42 0 (const uint) 0:42 'p' ( temp 4-component vector of float) 0:43 move second child to first child ( temp float) 0:43 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:43 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:43 Constant: 0:43 1 (const uint) 0:43 'ps' ( temp float) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float ClipDistance) 0:44 gl_ClipDistance: direct index for structure ( out unsized 3-element array of float ClipDistance) 0:44 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:44 Constant: 0:44 2 (const uint) 0:44 Constant: 0:44 2 (const int) 0:44 'cd' ( temp float) 0:4 Sequence 0:4 move second child to first child ( temp 2X2 matrix of float) 0:4 'b' ( global 2X2 matrix of float) 0:4 Constant: 0:4 1.000000 0:4 0.000000 0:4 0.000000 0:4 1.000000 0:15 Sequence 0:15 move second child to first child ( temp structure{ global float a, global int b}) 0:15 'e' ( global structure{ global float a, global int b}) 0:15 Constant: 0:15 1.200000 0:15 2 (const int) 0:20 Sequence 0:20 move second child to first child ( temp structure{ global float a, global int b}) 0:20 'e2' ( global structure{ global float a, global int b}) 0:20 Constant: 0:20 1.000000 0:20 3 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 5-element array of float) 0:42 'b5' ( global 5-element array of float) 0:42 Constant: 0:42 3.400000 0:42 4.200000 0:42 5.000000 0:42 5.200000 0:42 1.100000 0:55 Sequence 0:55 move second child to first child ( temp structure{ global int f}) 0:55 'single1' ( global structure{ global int f}) 0:55 Constant: 0:55 10 (const int) 0:58 Sequence 0:58 move second child to first child ( temp structure{ global 2-component vector of uint v}) 0:58 'single2' ( global structure{ global 2-component vector of uint v}) 0:58 Constant: 0:58 1 (const uint) 0:58 2 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp structure{ global structure{ global int f} s1}) 0:61 'single3' ( global structure{ global structure{ global int f} s1}) 0:61 Constant: 0:61 3 (const int) 0:64 Sequence 0:64 move second child to first child ( temp structure{ global structure{ global 2-component vector of uint v} s1}) 0:64 'single4' ( global structure{ global structure{ global 2-component vector of uint v} s1}) 0:64 Constant: 0:64 4 (const uint) 0:64 5 (const uint) 0:79 Sequence 0:79 move second child to first child ( temp 3-component vector of float) 0:79 'av3' ( global 3-component vector of float) 0:79 Construct vec3 ( global 3-component vector of float) 0:79 'vc1' ( global float) 0:79 'vc2' ( global float) 0:79 'vc3' ( global float) 0:80 Sequence 0:80 move second child to first child ( temp 3-component vector of float) 0:80 'bv3' ( global 3-component vector of float) 0:80 Construct vec3 ( temp 3-component vector of float) 0:80 'vc1' ( global float) 0:80 'vc2' ( global float) 0:80 'vc3' ( global float) 0:82 Function Definition: main( ( global void) 0:82 Function Parameters: 0:84 Sequence 0:84 MemoryBarrier ( global void) 0:86 Test condition and select ( temp void) 0:86 Condition 0:86 Compare Equal ( temp bool) 0:86 Constant: 0:86 1 (const uint) 0:86 2 (const uint) 0:86 3.000000 0:86 4.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 4.000000 0:86 0.000000 0:86 5.000000 0:86 6.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 6.000000 0:86 0.000000 0:86 'curlybad1' ( temp structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:86 true case is null 0:88 Test condition and select ( temp void) 0:88 Condition 0:88 Constant: 0:88 true (const bool) 0:88 true case is null 0:? Linker Objects 0:? 'patchIn' ( patch in 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 3-element array of float ClipDistance gl_ClipDistance}) 0:? 'patchOut' ( patch out 4-component vector of float) 0:? 'badp1' ( smooth patch in 4-component vector of float) 0:? 'badp2' ( flat patch in 4-component vector of float) 0:? 'badp3' ( noperspective patch in 4-component vector of float) 0:? 'badp4' ( patch sample in 3-component vector of float) 0:? 'gl_in' ( in 32-element array of block{ in 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'ina' ( in 2-component vector of float) 0:? 'inb' ( in 32-element array of 2-component vector of float) 0:? 'inc' ( in 32-element array of 2-component vector of float) 0:? 'ind' ( in 32-element array of 2-component vector of float) 0:? 'bla' ( in block{ in int f}) 0:? 'blb' ( in 32-element array of block{ in int f}) 0:? 'blc' ( in 32-element array of block{ in int f}) 0:? 'bld' ( in 32-element array of block{ in int f}) 0:? 'ivla' (layout( location=23) in 32-element array of 4-component vector of float) 0:? 'ivlb' (layout( location=24) in 32-element array of 4-component vector of float) 0:? 'ivlc' (layout( location=24) in 32-element array of 4-component vector of float) 0:? 'ovla' (layout( location=23) out 2-element array of 4-component vector of float) 0:? 'ovlb' (layout( location=24) out 2-element array of 4-component vector of float) 0:? 'pinbi' ( patch in block{ in int a}) 0:? 'a' ( const 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'b' ( global 2X2 matrix of float) 0:? 'c' ( const 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'a2' ( global 2-element array of float) 0:? 'b2' ( global 2-component vector of float) 0:? 'c2' ( global 3X3 matrix of float) 0:? 'd' ( global 2X2 matrix of float) 0:? 'e' ( global structure{ global float a, global int b}) 0:? 'e2' ( global structure{ global float a, global int b}) 0:? 'e3' ( global structure{ global float a, global int b}) 0:? 'a3' ( global int) 0:? 'b3' ( global 2-element array of 4-component vector of float) 0:? 'b4' ( global 2-element array of 4-component vector of float) 0:? 'c3' ( global 4X2 matrix of float) 0:? 'd2' ( global unsized 1-element array of structure{ global float s, global float t}) 0:? 'b5' ( global 5-element array of float) 0:? 'single1' ( global structure{ global int f}) 0:? 'single2' ( global structure{ global 2-component vector of uint v}) 0:? 'single3' ( global structure{ global structure{ global int f} s1}) 0:? 'single4' ( global structure{ global structure{ global 2-component vector of uint v} s1}) 0:? 'constructed' ( const structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3.000000 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 0.000000 0:? 5.000000 0:? 6.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 6.000000 0:? 0.000000 0:? 'curlybad1' ( temp structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 'curlyInit' ( const structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3.000000 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 0.000000 0:? 5.000000 0:? 6.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 6.000000 0:? 0.000000 0:? 'vc1' ( global float) 0:? 'vc2' ( global float) 0:? 'vc3' ( global float) 0:? 'av3' ( global 3-component vector of float) 0:? 'bv3' ( global 3-component vector of float) glslang-16.0.0/Test/baseResults/150.vert.out000066400000000000000000000141661506534232700204740ustar00rootroot00000000000000150.vert ERROR: 0:18: 'gl_ClipVertex' : undeclared identifier ERROR: 0:18: 'assign' : cannot convert from ' in 4-component vector of float' to ' temp float' ERROR: 0:26: 'a' : cannot redeclare a user-block member array ERROR: 0:28: 'double' : Reserved word. ERROR: 0:28: 'double' : not supported for this version or the enabled extensions ERROR: 0:28: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions ERROR: 0:3001: '#error' : line of this error should be 3001 ERROR: 7 compilation errors. No code generated. Shader version: 150 Requested GL_ARB_vertex_attrib_64bit ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) 0:15 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) 0:15 Constant: 0:15 0 (const uint) 0:15 'iv4' ( in 4-component vector of float) 0:16 move second child to first child ( temp float) 0:16 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:16 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) 0:16 Constant: 0:16 1 (const uint) 0:16 'ps' ( uniform float) 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float ClipDistance) 0:17 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) 0:17 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) 0:17 Constant: 0:17 2 (const uint) 0:17 Constant: 0:17 2 (const int) 0:17 direct index ( temp float) 0:17 'iv4' ( in 4-component vector of float) 0:17 Constant: 0:17 0 (const int) 0:18 'gl_ClipVertex' ( temp float) 0:? Linker Objects 0:? 'iv4' ( in 4-component vector of float) 0:? 'ps' ( uniform float) 0:? 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 1-element array of int a}) 0:? 'dvarerr' ( in double) 0:? 'dvar' ( in double) 0:? 'dv2var' ( in 2-component vector of double) 0:? 'dv3var' ( in 3-component vector of double) 0:? 'dv4var' ( in 4-component vector of double) 0:? 'dmat2var' ( in 2X2 matrix of double) 0:? 'dmat3var' ( in 3X3 matrix of double) 0:? 'dmat4var' ( in 4X4 matrix of double) 0:? 'dmat23var' ( in 2X3 matrix of double) 0:? 'dmat24var' ( in 2X4 matrix of double) 0:? 'dmat32var' ( in 3X2 matrix of double) 0:? 'dmat34var' ( in 3X4 matrix of double) 0:? 'dmat42var' ( in 4X2 matrix of double) 0:? 'dmat43var' ( in 4X3 matrix of double) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 150 Requested GL_ARB_vertex_attrib_64bit ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) 0:15 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) 0:15 Constant: 0:15 0 (const uint) 0:15 'iv4' ( in 4-component vector of float) 0:16 move second child to first child ( temp float) 0:16 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:16 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) 0:16 Constant: 0:16 1 (const uint) 0:16 'ps' ( uniform float) 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float ClipDistance) 0:17 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) 0:17 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) 0:17 Constant: 0:17 2 (const uint) 0:17 Constant: 0:17 2 (const int) 0:17 direct index ( temp float) 0:17 'iv4' ( in 4-component vector of float) 0:17 Constant: 0:17 0 (const int) 0:18 'gl_ClipVertex' ( temp float) 0:? Linker Objects 0:? 'iv4' ( in 4-component vector of float) 0:? 'ps' ( uniform float) 0:? 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 1-element array of int a}) 0:? 'dvarerr' ( in double) 0:? 'dvar' ( in double) 0:? 'dv2var' ( in 2-component vector of double) 0:? 'dv3var' ( in 3-component vector of double) 0:? 'dv4var' ( in 4-component vector of double) 0:? 'dmat2var' ( in 2X2 matrix of double) 0:? 'dmat3var' ( in 3X3 matrix of double) 0:? 'dmat4var' ( in 4X4 matrix of double) 0:? 'dmat23var' ( in 2X3 matrix of double) 0:? 'dmat24var' ( in 2X4 matrix of double) 0:? 'dmat32var' ( in 3X2 matrix of double) 0:? 'dmat34var' ( in 3X4 matrix of double) 0:? 'dmat42var' ( in 4X2 matrix of double) 0:? 'dmat43var' ( in 4X3 matrix of double) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/300.frag.out000066400000000000000000001262041506534232700204250ustar00rootroot00000000000000300.frag ERROR: 0:2: 'float' : type requires declaration of default precision qualifier ERROR: 0:30: 'noperspective' : Reserved word. ERROR: 0:30: 'noperspective' : not supported for this version or the enabled extensions ERROR: 0:31: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: bads ERROR: 0:32: 'uint' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type ERROR: 0:39: 'structure' : must be qualified as flat in ERROR: 0:39: 'structure' : non-uniform struct contains a sampler or image: badout ERROR: 0:60: 'texel offset' : argument must be compile-time constant ERROR: 0:62: 'texel offset' : argument must be compile-time constant ERROR: 0:63: 'texel offset' : argument must be compile-time constant ERROR: 0:64: 'texel offset' : argument must be compile-time constant ERROR: 0:66: 'texel offset' : argument must be compile-time constant ERROR: 0:68: 'texel offset' : argument must be compile-time constant ERROR: 0:69: 'variable indexing sampler array' : not supported for this version or the enabled extensions ERROR: 0:73: 'texel offset' : argument must be compile-time constant ERROR: 0:83: 'double' : Reserved word. ERROR: 0:83: 'double' : not supported with this profile: es ERROR: 0:84: 'dvec2' : Reserved word. ERROR: 0:84: 'double vector' : not supported with this profile: es ERROR: 0:85: 'dvec3' : Reserved word. ERROR: 0:85: 'double vector' : not supported with this profile: es ERROR: 0:86: 'dvec4' : Reserved word. ERROR: 0:86: 'double vector' : not supported with this profile: es ERROR: 0:101: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:102: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:102: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:103: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:103: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:100: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:100: 'array-of-array of block' : not supported with this profile: es ERROR: 0:111: 'variable indexing fragment shader output array' : not supported with this profile: es ERROR: 0:119: '==' : can't use with samplers or structs containing samplers ERROR: 0:120: '!=' : can't use with samplers or structs containing samplers ERROR: 0:121: '==' : can't use with samplers or structs containing samplers ERROR: 0:121: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global lowp sampler2D' and a right operand of type ' global lowp sampler2D' (or there is no acceptable conversion) ERROR: 0:122: '=' : can't use with samplers or structs containing samplers ERROR: 0:123: '==' : can't use with samplers or structs containing samplers ERROR: 0:129: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:129: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:148: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) ERROR: 0:150: 'early_fragment_tests' : not supported for this version or the enabled extensions ERROR: 0:177: 'specific signature of builtin mix' : required extension not requested: GL_EXT_shader_integer_mix ERROR: 0:181: 'index layout qualifier on fragment output' : not supported for this version or the enabled extensions ERROR: 0:183: 'index' : value must be 0 or 1 ERROR: 0:189: 'invariant' : can only apply to an output ERROR: 0:190: 'invariant' : can only apply to an output ERROR: 0:191: 'invariant' : can only apply to an output ERROR: 0:193: 'imageBuffer' : Reserved word. ERROR: 0:193: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON ERROR: 49 compilation errors. No code generated. Shader version: 300 Requested GL_EXT_blend_func_extended Requested GL_EXT_shader_integer_mix using early_fragment_tests ERROR: node is still EOpNull! 0:53 Function Definition: main( ( global void) 0:53 Function Parameters: 0:? Sequence 0:57 move second child to first child ( temp lowp 4-component vector of float) 0:57 'v' ( temp lowp 4-component vector of float) 0:57 texture ( global lowp 4-component vector of float) 0:57 's2D' ( uniform lowp sampler2D) 0:57 'c2D' ( smooth in lowp 2-component vector of float) 0:58 move second child to first child ( temp lowp 4-component vector of float) 0:58 'v' ( temp lowp 4-component vector of float) 0:58 textureProj ( global lowp 4-component vector of float) 0:58 's3D' ( uniform lowp sampler3D) 0:58 'c4D' ( smooth temp lowp 4-component vector of float) 0:59 move second child to first child ( temp lowp 4-component vector of float) 0:59 'v' ( temp lowp 4-component vector of float) 0:59 textureLod ( global lowp 4-component vector of float) 0:59 's2DArray' ( uniform lowp sampler2DArray) 0:59 'c3D' ( smooth in lowp 3-component vector of float) 0:59 Constant: 0:59 1.200000 0:60 move second child to first child ( temp lowp float) 0:60 'f' ( temp lowp float) 0:60 textureOffset ( global lowp float, operation at mediump) 0:60 's2DShadow' ( uniform lowp sampler2DShadow) 0:60 'c3D' ( smooth in lowp 3-component vector of float) 0:60 'ic2D' ( flat in mediump 2-component vector of int) 0:60 'c1D' ( smooth in lowp float) 0:61 move second child to first child ( temp lowp 4-component vector of float) 0:61 'v' ( temp lowp 4-component vector of float) 0:61 textureFetch ( global lowp 4-component vector of float, operation at mediump) 0:61 's3D' ( uniform lowp sampler3D) 0:61 'ic3D' ( flat in mediump 3-component vector of int) 0:61 'ic1D' ( flat in mediump int) 0:62 move second child to first child ( temp lowp 4-component vector of float) 0:62 'v' ( temp lowp 4-component vector of float) 0:62 textureFetchOffset ( global lowp 4-component vector of float, operation at mediump) 0:62 direct index ( temp lowp sampler2D) 0:62 'arrayedSampler' ( uniform 5-element array of lowp sampler2D) 0:62 Constant: 0:62 2 (const int) 0:62 'ic2D' ( flat in mediump 2-component vector of int) 0:62 Constant: 0:62 4 (const int) 0:62 'ic2D' ( flat in mediump 2-component vector of int) 0:63 move second child to first child ( temp lowp float) 0:63 'f' ( temp lowp float) 0:63 textureLodOffset ( global lowp float, operation at mediump) 0:63 's2DShadow' ( uniform lowp sampler2DShadow) 0:63 'c3D' ( smooth in lowp 3-component vector of float) 0:63 'c1D' ( smooth in lowp float) 0:63 'ic2D' ( flat in mediump 2-component vector of int) 0:64 move second child to first child ( temp lowp 4-component vector of float) 0:64 'v' ( temp lowp 4-component vector of float) 0:64 textureProjLodOffset ( global lowp 4-component vector of float, operation at mediump) 0:64 's2D' ( uniform lowp sampler2D) 0:64 'c3D' ( smooth in lowp 3-component vector of float) 0:64 'c1D' ( smooth in lowp float) 0:64 'ic2D' ( flat in mediump 2-component vector of int) 0:65 move second child to first child ( temp lowp 4-component vector of float) 0:65 'v' ( temp lowp 4-component vector of float) 0:65 textureGrad ( global lowp 4-component vector of float) 0:65 'sCube' ( uniform lowp samplerCube) 0:65 'c3D' ( smooth in lowp 3-component vector of float) 0:65 'c3D' ( smooth in lowp 3-component vector of float) 0:65 'c3D' ( smooth in lowp 3-component vector of float) 0:66 move second child to first child ( temp lowp float) 0:66 'f' ( temp lowp float) 0:66 textureGradOffset ( global lowp float, operation at mediump) 0:66 's2DArrayShadow' ( uniform lowp sampler2DArrayShadow) 0:66 'c4D' ( smooth temp lowp 4-component vector of float) 0:66 'c2D' ( smooth in lowp 2-component vector of float) 0:66 'c2D' ( smooth in lowp 2-component vector of float) 0:66 'ic2D' ( flat in mediump 2-component vector of int) 0:67 move second child to first child ( temp lowp 4-component vector of float) 0:67 'v' ( temp lowp 4-component vector of float) 0:67 textureProjGrad ( global lowp 4-component vector of float) 0:67 's3D' ( uniform lowp sampler3D) 0:67 'c4D' ( smooth temp lowp 4-component vector of float) 0:67 'c3D' ( smooth in lowp 3-component vector of float) 0:67 'c3D' ( smooth in lowp 3-component vector of float) 0:68 move second child to first child ( temp lowp 4-component vector of float) 0:68 'v' ( temp lowp 4-component vector of float) 0:68 textureProjGradOffset ( global lowp 4-component vector of float, operation at mediump) 0:68 's2D' ( uniform lowp sampler2D) 0:68 'c3D' ( smooth in lowp 3-component vector of float) 0:68 'c2D' ( smooth in lowp 2-component vector of float) 0:68 'c2D' ( smooth in lowp 2-component vector of float) 0:68 'ic2D' ( flat in mediump 2-component vector of int) 0:69 move second child to first child ( temp lowp 4-component vector of float) 0:69 'v' ( temp lowp 4-component vector of float) 0:69 texture ( global lowp 4-component vector of float) 0:69 indirect index ( temp lowp sampler2D) 0:69 'arrayedSampler' ( uniform 5-element array of lowp sampler2D) 0:69 'ic1D' ( flat in mediump int) 0:69 'c2D' ( smooth in lowp 2-component vector of float) 0:72 move second child to first child ( temp mediump 4-component vector of int) 0:72 'iv' ( temp mediump 4-component vector of int) 0:72 texture ( global lowp 4-component vector of int) 0:72 'is2D' ( uniform lowp isampler2D) 0:72 'c2D' ( smooth in lowp 2-component vector of float) 0:73 move second child to first child ( temp mediump 4-component vector of int) 0:73 'iv' ( temp mediump 4-component vector of int) 0:73 textureProjOffset ( global lowp 4-component vector of int, operation at mediump) 0:73 'is2D' ( uniform lowp isampler2D) 0:73 'c4D' ( smooth temp lowp 4-component vector of float) 0:73 'ic2D' ( flat in mediump 2-component vector of int) 0:74 move second child to first child ( temp mediump 4-component vector of int) 0:74 'iv' ( temp mediump 4-component vector of int) 0:74 textureProjLod ( global lowp 4-component vector of int) 0:74 'is2D' ( uniform lowp isampler2D) 0:74 'c3D' ( smooth in lowp 3-component vector of float) 0:74 'c1D' ( smooth in lowp float) 0:75 move second child to first child ( temp mediump 4-component vector of int) 0:75 'iv' ( temp mediump 4-component vector of int) 0:75 textureProjGrad ( global lowp 4-component vector of int) 0:75 'is2D' ( uniform lowp isampler2D) 0:75 'c3D' ( smooth in lowp 3-component vector of float) 0:75 'c2D' ( smooth in lowp 2-component vector of float) 0:75 'c2D' ( smooth in lowp 2-component vector of float) 0:76 move second child to first child ( temp mediump 4-component vector of int) 0:76 'iv' ( temp mediump 4-component vector of int) 0:76 texture ( global lowp 4-component vector of int) 0:76 'is3D' ( uniform lowp isampler3D) 0:76 'c3D' ( smooth in lowp 3-component vector of float) 0:76 Constant: 0:76 4.200000 0:77 move second child to first child ( temp mediump 4-component vector of int) 0:77 'iv' ( temp mediump 4-component vector of int) 0:77 textureLod ( global lowp 4-component vector of int) 0:77 'isCube' ( uniform lowp isamplerCube) 0:77 'c3D' ( smooth in lowp 3-component vector of float) 0:77 'c1D' ( smooth in lowp float) 0:78 move second child to first child ( temp mediump 4-component vector of int) 0:78 'iv' ( temp mediump 4-component vector of int) 0:78 textureFetch ( global lowp 4-component vector of int, operation at mediump) 0:78 'is2DArray' ( uniform lowp isampler2DArray) 0:78 'ic3D' ( flat in mediump 3-component vector of int) 0:78 'ic1D' ( flat in mediump int) 0:80 move second child to first child ( temp highp 2-component vector of int) 0:80 vector swizzle ( temp mediump 2-component vector of int) 0:80 'iv' ( temp mediump 4-component vector of int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 textureSize ( global highp 2-component vector of int, operation at lowp) 0:80 'sCubeShadow' ( uniform lowp samplerCubeShadow) 0:80 Constant: 0:80 2 (const int) 0:88 add second child into first child ( temp highp float) 0:88 'f' ( temp lowp float) 0:88 direct index ( temp highp float) 0:88 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:88 Constant: 0:88 1 (const int) 0:89 move second child to first child ( temp highp float) 0:89 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:89 'f' ( temp lowp float) 0:91 move second child to first child ( temp lowp 3-component vector of float) 0:91 'sc' ( out lowp 3-component vector of float) 0:91 c: direct index for structure ( global lowp 3-component vector of float) 0:91 's2' ( smooth in structure{ global lowp 3-component vector of float c, global lowp float f}) 0:91 Constant: 0:91 0 (const int) 0:92 move second child to first child ( temp lowp float) 0:92 'sf' ( out lowp float) 0:92 f: direct index for structure ( global lowp float) 0:92 's2' ( smooth in structure{ global lowp 3-component vector of float c, global lowp float f}) 0:92 Constant: 0:92 1 (const int) 0:94 add ( temp lowp 2-component vector of float) 0:94 hyp. sine ( global lowp float) 0:94 'c1D' ( smooth in lowp float) 0:95 vector-scale ( temp lowp 2-component vector of float) 0:95 hyp. cosine ( global lowp float) 0:95 'c1D' ( smooth in lowp float) 0:95 hyp. tangent ( global lowp 2-component vector of float) 0:95 'c2D' ( smooth in lowp 2-component vector of float) 0:96 add ( temp lowp 4-component vector of float) 0:96 arc hyp. sine ( global lowp 4-component vector of float) 0:96 'c4D' ( smooth temp lowp 4-component vector of float) 0:96 arc hyp. cosine ( global lowp 4-component vector of float) 0:96 'c4D' ( smooth temp lowp 4-component vector of float) 0:97 arc hyp. tangent ( global lowp 3-component vector of float) 0:97 'c3D' ( smooth in lowp 3-component vector of float) 0:108 Function Definition: foo( ( global void) 0:108 Function Parameters: 0:110 Sequence 0:110 move second child to first child ( temp lowp 4-component vector of float) 0:110 direct index ( temp lowp 4-component vector of float) 0:110 'colors' ( out 4-element array of lowp 4-component vector of float) 0:110 Constant: 0:110 2 (const int) 0:110 'c4D' ( smooth temp lowp 4-component vector of float) 0:111 move second child to first child ( temp lowp 4-component vector of float) 0:111 indirect index ( temp lowp 4-component vector of float) 0:111 'colors' ( out 4-element array of lowp 4-component vector of float) 0:111 'ic1D' ( flat in mediump int) 0:111 'c4D' ( smooth temp lowp 4-component vector of float) 0:117 Function Definition: foo13(struct-s-i1-s211; ( global void) 0:117 Function Parameters: 0:117 'inSt2' ( in structure{ global mediump int i, global lowp sampler2D s}) 0:119 Sequence 0:119 Test condition and select ( temp void) 0:119 Condition 0:119 Compare Equal ( temp bool) 0:119 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:119 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:119 true case is null 0:120 Test condition and select ( temp void) 0:120 Condition 0:120 Compare Not Equal ( temp bool) 0:120 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:120 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:120 true case is null 0:121 Constant: 0:121 false (const bool) 0:122 move second child to first child ( temp structure{ global mediump int i, global lowp sampler2D s}) 0:122 'inSt2' ( in structure{ global mediump int i, global lowp sampler2D s}) 0:122 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:123 Compare Equal ( temp bool) 0:123 'inSt2' ( in structure{ global mediump int i, global lowp sampler2D s}) 0:123 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:126 Function Definition: foo23( ( global void) 0:126 Function Parameters: 0:128 Sequence 0:128 textureOffset ( global lowp float) 0:128 's2DShadow' ( uniform lowp sampler2DShadow) 0:128 'c3D' ( smooth in lowp 3-component vector of float) 0:128 Constant: 0:128 -8 (const int) 0:128 7 (const int) 0:128 'c1D' ( smooth in lowp float) 0:129 textureOffset ( global lowp float) 0:129 's2DShadow' ( uniform lowp sampler2DShadow) 0:129 'c3D' ( smooth in lowp 3-component vector of float) 0:129 Constant: 0:129 -9 (const int) 0:129 8 (const int) 0:129 'c1D' ( smooth in lowp float) 0:132 Function Definition: foo324( ( global void) 0:132 Function Parameters: 0:134 Sequence 0:134 Sequence 0:134 move second child to first child ( temp lowp float) 0:134 'p' ( temp lowp float) 0:134 Constant: 0:134 210.712306 0:135 add second child into first child ( temp lowp float) 0:135 'p' ( temp lowp float) 0:135 Constant: 0:135 0.389418 0:136 add second child into first child ( temp lowp float) 0:136 'p' ( temp lowp float) 0:136 Constant: 0:136 5.000000 0:137 add second child into first child ( temp lowp float) 0:137 'p' ( temp lowp float) 0:137 Constant: 0:137 13.000000 0:138 Sequence 0:138 move second child to first child ( temp lowp 3-component vector of float) 0:138 'c3' ( temp lowp 3-component vector of float) 0:138 Constant: 0:138 -15.000000 0:138 -2.000000 0:138 39.000000 0:139 add second child into first child ( temp lowp 3-component vector of float) 0:139 'c3' ( temp lowp 3-component vector of float) 0:139 Constant: 0:139 -1.000000 0:139 -2.000000 0:139 -3.000000 0:140 add second child into first child ( temp lowp 3-component vector of float) 0:140 'c3' ( temp lowp 3-component vector of float) 0:140 Constant: 0:140 1.000000 0:140 2.000000 0:140 3.000000 0:141 Sequence 0:141 move second child to first child ( temp lowp 2-component vector of float) 0:141 'c2' ( temp lowp 2-component vector of float) 0:141 Constant: 0:141 1.000000 0:141 -3.000000 0:142 add second child into first child ( temp lowp 2-component vector of float) 0:142 'c2' ( temp lowp 2-component vector of float) 0:142 Constant: 0:142 1.000000 0:142 -3.000000 0:143 add second child into first child ( temp lowp 2-component vector of float) 0:143 'c2' ( temp lowp 2-component vector of float) 0:143 Constant: 0:143 3.000000 0:143 -8.544004 0:144 add second child into first child ( temp lowp 2-component vector of float) 0:144 'c2' ( temp lowp 2-component vector of float) 0:144 Constant: 0:144 0.000000 0:144 0.000000 0:145 Sequence 0:145 move second child to first child ( temp lowp 3X2 matrix of float) 0:145 'm32' ( temp lowp 3X2 matrix of float) 0:145 Constant: 0:145 10.000000 0:145 15.000000 0:145 14.000000 0:145 21.000000 0:145 22.000000 0:145 33.000000 0:158 Function Definition: testmix( ( global void) 0:158 Function Parameters: 0:160 Sequence 0:160 Sequence 0:160 move second child to first child ( temp mediump int) 0:160 'ival' ( temp mediump int) 0:160 mix ( global mediump int) 0:160 'x' ( global mediump int) 0:160 'y' ( global mediump int) 0:160 'b' ( global bool) 0:161 Sequence 0:161 move second child to first child ( temp mediump 2-component vector of int) 0:161 'iv2' ( temp mediump 2-component vector of int) 0:161 mix ( global mediump 2-component vector of int) 0:161 Construct ivec2 ( temp mediump 2-component vector of int) 0:161 'x' ( global mediump int) 0:161 Construct ivec2 ( temp mediump 2-component vector of int) 0:161 'y' ( global mediump int) 0:161 Construct bvec2 ( temp 2-component vector of bool) 0:161 'b' ( global bool) 0:162 Sequence 0:162 move second child to first child ( temp mediump 3-component vector of int) 0:162 'iv3' ( temp mediump 3-component vector of int) 0:162 mix ( global mediump 3-component vector of int) 0:162 Construct ivec3 ( temp mediump 3-component vector of int) 0:162 'x' ( global mediump int) 0:162 Construct ivec3 ( temp mediump 3-component vector of int) 0:162 'y' ( global mediump int) 0:162 Construct bvec3 ( temp 3-component vector of bool) 0:162 'b' ( global bool) 0:163 Sequence 0:163 move second child to first child ( temp mediump 4-component vector of int) 0:163 'iv4' ( temp mediump 4-component vector of int) 0:163 mix ( global mediump 4-component vector of int) 0:163 Construct ivec4 ( temp mediump 4-component vector of int) 0:163 'x' ( global mediump int) 0:163 Construct ivec4 ( temp mediump 4-component vector of int) 0:163 'x' ( global mediump int) 0:163 Construct bvec4 ( temp 4-component vector of bool) 0:163 'b' ( global bool) 0:164 Sequence 0:164 move second child to first child ( temp mediump uint) 0:164 'uiv' ( temp mediump uint) 0:164 mix ( global mediump uint) 0:164 'z' ( global mediump uint) 0:164 'w' ( global mediump uint) 0:164 'b' ( global bool) 0:165 Sequence 0:165 move second child to first child ( temp mediump 2-component vector of uint) 0:165 'uv2' ( temp mediump 2-component vector of uint) 0:165 mix ( global mediump 2-component vector of uint) 0:165 Construct uvec2 ( temp mediump 2-component vector of uint) 0:165 'z' ( global mediump uint) 0:165 Construct uvec2 ( temp mediump 2-component vector of uint) 0:165 'z' ( global mediump uint) 0:165 Construct bvec2 ( temp 2-component vector of bool) 0:165 'b' ( global bool) 0:166 Sequence 0:166 move second child to first child ( temp mediump 3-component vector of uint) 0:166 'uv3' ( temp mediump 3-component vector of uint) 0:166 mix ( global mediump 3-component vector of uint) 0:166 Construct uvec3 ( temp mediump 3-component vector of uint) 0:166 'z' ( global mediump uint) 0:166 Construct uvec3 ( temp mediump 3-component vector of uint) 0:166 'z' ( global mediump uint) 0:166 Construct bvec3 ( temp 3-component vector of bool) 0:166 'b' ( global bool) 0:167 Sequence 0:167 move second child to first child ( temp mediump 4-component vector of uint) 0:167 'uv4' ( temp mediump 4-component vector of uint) 0:167 mix ( global mediump 4-component vector of uint) 0:167 Construct uvec4 ( temp mediump 4-component vector of uint) 0:167 'z' ( global mediump uint) 0:167 Construct uvec4 ( temp mediump 4-component vector of uint) 0:167 'z' ( global mediump uint) 0:167 Construct bvec4 ( temp 4-component vector of bool) 0:167 'b' ( global bool) 0:168 Sequence 0:168 move second child to first child ( temp bool) 0:168 'bv' ( temp bool) 0:168 mix ( global bool) 0:168 'b1' ( global bool) 0:168 'b2' ( global bool) 0:168 'b' ( global bool) 0:169 Sequence 0:169 move second child to first child ( temp 2-component vector of bool) 0:169 'bv2' ( temp 2-component vector of bool) 0:169 mix ( global 2-component vector of bool) 0:169 Construct bvec2 ( temp 2-component vector of bool) 0:169 'b1' ( global bool) 0:169 Construct bvec2 ( temp 2-component vector of bool) 0:169 'b2' ( global bool) 0:169 Construct bvec2 ( temp 2-component vector of bool) 0:169 'b' ( global bool) 0:170 Sequence 0:170 move second child to first child ( temp 3-component vector of bool) 0:170 'bv3' ( temp 3-component vector of bool) 0:170 mix ( global 3-component vector of bool) 0:170 Construct bvec3 ( temp 3-component vector of bool) 0:170 'b1' ( global bool) 0:170 Construct bvec3 ( temp 3-component vector of bool) 0:170 'b2' ( global bool) 0:170 Construct bvec3 ( temp 3-component vector of bool) 0:170 'b' ( global bool) 0:171 Sequence 0:171 move second child to first child ( temp 4-component vector of bool) 0:171 'bv4' ( temp 4-component vector of bool) 0:171 mix ( global 4-component vector of bool) 0:171 Construct bvec4 ( temp 4-component vector of bool) 0:171 'b1' ( global bool) 0:171 Construct bvec4 ( temp 4-component vector of bool) 0:171 'b2' ( global bool) 0:171 Construct bvec4 ( temp 4-component vector of bool) 0:171 'b' ( global bool) 0:175 Function Definition: testmixFail( ( global void) 0:175 Function Parameters: 0:177 Sequence 0:177 Sequence 0:177 move second child to first child ( temp mediump int) 0:177 'ival' ( temp mediump int) 0:177 mix ( global mediump int) 0:177 'x' ( global mediump int) 0:177 'y' ( global mediump int) 0:177 'b' ( global bool) 0:? Linker Objects 0:? 's2D' ( uniform lowp sampler2D) 0:? 's3D' ( uniform lowp sampler3D) 0:? 'sCube' ( uniform lowp samplerCube) 0:? 'sCubeShadow' ( uniform lowp samplerCubeShadow) 0:? 's2DShadow' ( uniform lowp sampler2DShadow) 0:? 's2DArray' ( uniform lowp sampler2DArray) 0:? 's2DArrayShadow' ( uniform lowp sampler2DArrayShadow) 0:? 'is2D' ( uniform lowp isampler2D) 0:? 'is3D' ( uniform lowp isampler3D) 0:? 'isCube' ( uniform lowp isamplerCube) 0:? 'is2DArray' ( uniform lowp isampler2DArray) 0:? 'us2D' ( uniform lowp usampler2D) 0:? 'us3D' ( uniform lowp usampler3D) 0:? 'usCube' ( uniform lowp usamplerCube) 0:? 'us2DArray' ( uniform lowp usampler2DArray) 0:? 'c1D' ( smooth in lowp float) 0:? 'c2D' ( smooth in lowp 2-component vector of float) 0:? 'c3D' ( smooth in lowp 3-component vector of float) 0:? 'c4D' ( smooth temp lowp 4-component vector of float) 0:? 'ic1D' ( flat in mediump int) 0:? 'ic2D' ( flat in mediump 2-component vector of int) 0:? 'ic3D' ( flat in mediump 3-component vector of int) 0:? 'ic4D' ( flat in mediump 4-component vector of int) 0:? 'badv' ( noperspective in lowp 4-component vector of float) 0:? 'bads' ( smooth in lowp sampler2D) 0:? 'badout' ( smooth in structure{ global mediump int i, global lowp sampler2D s}) 0:? 's2' ( smooth in structure{ global lowp 3-component vector of float c, global lowp float f}) 0:? 'sc' ( out lowp 3-component vector of float) 0:? 'sf' ( out lowp float) 0:? 'arrayedSampler' ( uniform 5-element array of lowp sampler2D) 0:? 'multiInst' (layout( column_major shared) uniform 2-element array of 3-element array of block{layout( column_major shared) uniform 3-element array of 2-element array of mediump int a, layout( column_major shared) uniform 2-element array of 3-element array of mediump int b, layout( column_major shared) uniform 2-element array of 3-element array of mediump int c}) 0:? 'colors' ( out 4-element array of lowp 4-component vector of float) 0:? 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:? 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:? 'b1' ( global bool) 0:? 'b2' ( global bool) 0:? 'b' ( global bool) 0:? 'x' ( global mediump int) 0:? 'y' ( global mediump int) 0:? 'z' ( global mediump uint) 0:? 'w' ( global mediump uint) 0:? 'outVarFail' (layout( location=0 index=1) out lowp 4-component vector of float) 0:? 'outVarPass' (layout( location=0 index=0) out lowp 4-component vector of float) 0:? 'fooinv' ( invariant smooth in lowp 4-component vector of float) Linked fragment stage: ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers Shader version: 300 Requested GL_EXT_blend_func_extended Requested GL_EXT_shader_integer_mix using early_fragment_tests ERROR: node is still EOpNull! 0:53 Function Definition: main( ( global void) 0:53 Function Parameters: 0:? Sequence 0:57 move second child to first child ( temp lowp 4-component vector of float) 0:57 'v' ( temp lowp 4-component vector of float) 0:57 texture ( global lowp 4-component vector of float) 0:57 's2D' ( uniform lowp sampler2D) 0:57 'c2D' ( smooth in lowp 2-component vector of float) 0:58 move second child to first child ( temp lowp 4-component vector of float) 0:58 'v' ( temp lowp 4-component vector of float) 0:58 textureProj ( global lowp 4-component vector of float) 0:58 's3D' ( uniform lowp sampler3D) 0:58 'c4D' ( smooth temp lowp 4-component vector of float) 0:59 move second child to first child ( temp lowp 4-component vector of float) 0:59 'v' ( temp lowp 4-component vector of float) 0:59 textureLod ( global lowp 4-component vector of float) 0:59 's2DArray' ( uniform lowp sampler2DArray) 0:59 'c3D' ( smooth in lowp 3-component vector of float) 0:59 Constant: 0:59 1.200000 0:60 move second child to first child ( temp lowp float) 0:60 'f' ( temp lowp float) 0:60 textureOffset ( global lowp float, operation at mediump) 0:60 's2DShadow' ( uniform lowp sampler2DShadow) 0:60 'c3D' ( smooth in lowp 3-component vector of float) 0:60 'ic2D' ( flat in mediump 2-component vector of int) 0:60 'c1D' ( smooth in lowp float) 0:61 move second child to first child ( temp lowp 4-component vector of float) 0:61 'v' ( temp lowp 4-component vector of float) 0:61 textureFetch ( global lowp 4-component vector of float, operation at mediump) 0:61 's3D' ( uniform lowp sampler3D) 0:61 'ic3D' ( flat in mediump 3-component vector of int) 0:61 'ic1D' ( flat in mediump int) 0:62 move second child to first child ( temp lowp 4-component vector of float) 0:62 'v' ( temp lowp 4-component vector of float) 0:62 textureFetchOffset ( global lowp 4-component vector of float, operation at mediump) 0:62 direct index ( temp lowp sampler2D) 0:62 'arrayedSampler' ( uniform 5-element array of lowp sampler2D) 0:62 Constant: 0:62 2 (const int) 0:62 'ic2D' ( flat in mediump 2-component vector of int) 0:62 Constant: 0:62 4 (const int) 0:62 'ic2D' ( flat in mediump 2-component vector of int) 0:63 move second child to first child ( temp lowp float) 0:63 'f' ( temp lowp float) 0:63 textureLodOffset ( global lowp float, operation at mediump) 0:63 's2DShadow' ( uniform lowp sampler2DShadow) 0:63 'c3D' ( smooth in lowp 3-component vector of float) 0:63 'c1D' ( smooth in lowp float) 0:63 'ic2D' ( flat in mediump 2-component vector of int) 0:64 move second child to first child ( temp lowp 4-component vector of float) 0:64 'v' ( temp lowp 4-component vector of float) 0:64 textureProjLodOffset ( global lowp 4-component vector of float, operation at mediump) 0:64 's2D' ( uniform lowp sampler2D) 0:64 'c3D' ( smooth in lowp 3-component vector of float) 0:64 'c1D' ( smooth in lowp float) 0:64 'ic2D' ( flat in mediump 2-component vector of int) 0:65 move second child to first child ( temp lowp 4-component vector of float) 0:65 'v' ( temp lowp 4-component vector of float) 0:65 textureGrad ( global lowp 4-component vector of float) 0:65 'sCube' ( uniform lowp samplerCube) 0:65 'c3D' ( smooth in lowp 3-component vector of float) 0:65 'c3D' ( smooth in lowp 3-component vector of float) 0:65 'c3D' ( smooth in lowp 3-component vector of float) 0:66 move second child to first child ( temp lowp float) 0:66 'f' ( temp lowp float) 0:66 textureGradOffset ( global lowp float, operation at mediump) 0:66 's2DArrayShadow' ( uniform lowp sampler2DArrayShadow) 0:66 'c4D' ( smooth temp lowp 4-component vector of float) 0:66 'c2D' ( smooth in lowp 2-component vector of float) 0:66 'c2D' ( smooth in lowp 2-component vector of float) 0:66 'ic2D' ( flat in mediump 2-component vector of int) 0:67 move second child to first child ( temp lowp 4-component vector of float) 0:67 'v' ( temp lowp 4-component vector of float) 0:67 textureProjGrad ( global lowp 4-component vector of float) 0:67 's3D' ( uniform lowp sampler3D) 0:67 'c4D' ( smooth temp lowp 4-component vector of float) 0:67 'c3D' ( smooth in lowp 3-component vector of float) 0:67 'c3D' ( smooth in lowp 3-component vector of float) 0:68 move second child to first child ( temp lowp 4-component vector of float) 0:68 'v' ( temp lowp 4-component vector of float) 0:68 textureProjGradOffset ( global lowp 4-component vector of float, operation at mediump) 0:68 's2D' ( uniform lowp sampler2D) 0:68 'c3D' ( smooth in lowp 3-component vector of float) 0:68 'c2D' ( smooth in lowp 2-component vector of float) 0:68 'c2D' ( smooth in lowp 2-component vector of float) 0:68 'ic2D' ( flat in mediump 2-component vector of int) 0:69 move second child to first child ( temp lowp 4-component vector of float) 0:69 'v' ( temp lowp 4-component vector of float) 0:69 texture ( global lowp 4-component vector of float) 0:69 indirect index ( temp lowp sampler2D) 0:69 'arrayedSampler' ( uniform 5-element array of lowp sampler2D) 0:69 'ic1D' ( flat in mediump int) 0:69 'c2D' ( smooth in lowp 2-component vector of float) 0:72 move second child to first child ( temp mediump 4-component vector of int) 0:72 'iv' ( temp mediump 4-component vector of int) 0:72 texture ( global lowp 4-component vector of int) 0:72 'is2D' ( uniform lowp isampler2D) 0:72 'c2D' ( smooth in lowp 2-component vector of float) 0:73 move second child to first child ( temp mediump 4-component vector of int) 0:73 'iv' ( temp mediump 4-component vector of int) 0:73 textureProjOffset ( global lowp 4-component vector of int, operation at mediump) 0:73 'is2D' ( uniform lowp isampler2D) 0:73 'c4D' ( smooth temp lowp 4-component vector of float) 0:73 'ic2D' ( flat in mediump 2-component vector of int) 0:74 move second child to first child ( temp mediump 4-component vector of int) 0:74 'iv' ( temp mediump 4-component vector of int) 0:74 textureProjLod ( global lowp 4-component vector of int) 0:74 'is2D' ( uniform lowp isampler2D) 0:74 'c3D' ( smooth in lowp 3-component vector of float) 0:74 'c1D' ( smooth in lowp float) 0:75 move second child to first child ( temp mediump 4-component vector of int) 0:75 'iv' ( temp mediump 4-component vector of int) 0:75 textureProjGrad ( global lowp 4-component vector of int) 0:75 'is2D' ( uniform lowp isampler2D) 0:75 'c3D' ( smooth in lowp 3-component vector of float) 0:75 'c2D' ( smooth in lowp 2-component vector of float) 0:75 'c2D' ( smooth in lowp 2-component vector of float) 0:76 move second child to first child ( temp mediump 4-component vector of int) 0:76 'iv' ( temp mediump 4-component vector of int) 0:76 texture ( global lowp 4-component vector of int) 0:76 'is3D' ( uniform lowp isampler3D) 0:76 'c3D' ( smooth in lowp 3-component vector of float) 0:76 Constant: 0:76 4.200000 0:77 move second child to first child ( temp mediump 4-component vector of int) 0:77 'iv' ( temp mediump 4-component vector of int) 0:77 textureLod ( global lowp 4-component vector of int) 0:77 'isCube' ( uniform lowp isamplerCube) 0:77 'c3D' ( smooth in lowp 3-component vector of float) 0:77 'c1D' ( smooth in lowp float) 0:78 move second child to first child ( temp mediump 4-component vector of int) 0:78 'iv' ( temp mediump 4-component vector of int) 0:78 textureFetch ( global lowp 4-component vector of int, operation at mediump) 0:78 'is2DArray' ( uniform lowp isampler2DArray) 0:78 'ic3D' ( flat in mediump 3-component vector of int) 0:78 'ic1D' ( flat in mediump int) 0:80 move second child to first child ( temp highp 2-component vector of int) 0:80 vector swizzle ( temp mediump 2-component vector of int) 0:80 'iv' ( temp mediump 4-component vector of int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 textureSize ( global highp 2-component vector of int, operation at lowp) 0:80 'sCubeShadow' ( uniform lowp samplerCubeShadow) 0:80 Constant: 0:80 2 (const int) 0:88 add second child into first child ( temp highp float) 0:88 'f' ( temp lowp float) 0:88 direct index ( temp highp float) 0:88 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:88 Constant: 0:88 1 (const int) 0:89 move second child to first child ( temp highp float) 0:89 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:89 'f' ( temp lowp float) 0:91 move second child to first child ( temp lowp 3-component vector of float) 0:91 'sc' ( out lowp 3-component vector of float) 0:91 c: direct index for structure ( global lowp 3-component vector of float) 0:91 's2' ( smooth in structure{ global lowp 3-component vector of float c, global lowp float f}) 0:91 Constant: 0:91 0 (const int) 0:92 move second child to first child ( temp lowp float) 0:92 'sf' ( out lowp float) 0:92 f: direct index for structure ( global lowp float) 0:92 's2' ( smooth in structure{ global lowp 3-component vector of float c, global lowp float f}) 0:92 Constant: 0:92 1 (const int) 0:94 add ( temp lowp 2-component vector of float) 0:94 hyp. sine ( global lowp float) 0:94 'c1D' ( smooth in lowp float) 0:95 vector-scale ( temp lowp 2-component vector of float) 0:95 hyp. cosine ( global lowp float) 0:95 'c1D' ( smooth in lowp float) 0:95 hyp. tangent ( global lowp 2-component vector of float) 0:95 'c2D' ( smooth in lowp 2-component vector of float) 0:96 add ( temp lowp 4-component vector of float) 0:96 arc hyp. sine ( global lowp 4-component vector of float) 0:96 'c4D' ( smooth temp lowp 4-component vector of float) 0:96 arc hyp. cosine ( global lowp 4-component vector of float) 0:96 'c4D' ( smooth temp lowp 4-component vector of float) 0:97 arc hyp. tangent ( global lowp 3-component vector of float) 0:97 'c3D' ( smooth in lowp 3-component vector of float) 0:? Linker Objects 0:? 's2D' ( uniform lowp sampler2D) 0:? 's3D' ( uniform lowp sampler3D) 0:? 'sCube' ( uniform lowp samplerCube) 0:? 'sCubeShadow' ( uniform lowp samplerCubeShadow) 0:? 's2DShadow' ( uniform lowp sampler2DShadow) 0:? 's2DArray' ( uniform lowp sampler2DArray) 0:? 's2DArrayShadow' ( uniform lowp sampler2DArrayShadow) 0:? 'is2D' ( uniform lowp isampler2D) 0:? 'is3D' ( uniform lowp isampler3D) 0:? 'isCube' ( uniform lowp isamplerCube) 0:? 'is2DArray' ( uniform lowp isampler2DArray) 0:? 'us2D' ( uniform lowp usampler2D) 0:? 'us3D' ( uniform lowp usampler3D) 0:? 'usCube' ( uniform lowp usamplerCube) 0:? 'us2DArray' ( uniform lowp usampler2DArray) 0:? 'c1D' ( smooth in lowp float) 0:? 'c2D' ( smooth in lowp 2-component vector of float) 0:? 'c3D' ( smooth in lowp 3-component vector of float) 0:? 'c4D' ( smooth temp lowp 4-component vector of float) 0:? 'ic1D' ( flat in mediump int) 0:? 'ic2D' ( flat in mediump 2-component vector of int) 0:? 'ic3D' ( flat in mediump 3-component vector of int) 0:? 'ic4D' ( flat in mediump 4-component vector of int) 0:? 'badv' ( noperspective in lowp 4-component vector of float) 0:? 'bads' ( smooth in lowp sampler2D) 0:? 'badout' ( smooth in structure{ global mediump int i, global lowp sampler2D s}) 0:? 's2' ( smooth in structure{ global lowp 3-component vector of float c, global lowp float f}) 0:? 'sc' ( out lowp 3-component vector of float) 0:? 'sf' ( out lowp float) 0:? 'arrayedSampler' ( uniform 5-element array of lowp sampler2D) 0:? 'multiInst' (layout( column_major shared) uniform 2-element array of 3-element array of block{layout( column_major shared) uniform 3-element array of 2-element array of mediump int a, layout( column_major shared) uniform 2-element array of 3-element array of mediump int b, layout( column_major shared) uniform 2-element array of 3-element array of mediump int c}) 0:? 'colors' ( out 4-element array of lowp 4-component vector of float) 0:? 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:? 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s}) 0:? 'b1' ( global bool) 0:? 'b2' ( global bool) 0:? 'b' ( global bool) 0:? 'x' ( global mediump int) 0:? 'y' ( global mediump int) 0:? 'z' ( global mediump uint) 0:? 'w' ( global mediump uint) 0:? 'outVarFail' (layout( location=0 index=1) out lowp 4-component vector of float) 0:? 'outVarPass' (layout( location=0 index=0) out lowp 4-component vector of float) 0:? 'fooinv' ( invariant smooth in lowp 4-component vector of float) glslang-16.0.0/Test/baseResults/300.vert.out000066400000000000000000000604251506534232700204700ustar00rootroot00000000000000300.vert ERROR: 0:8: 'varying' : Reserved word. ERROR: 0:8: 'varying' : no longer supported in es profile; removed in version 300 ERROR: 0:9: 'vertex input arrays' : not supported with this profile: es ERROR: 0:10: '' : precision qualifier must appear as last qualifier ERROR: 0:11: '' : invariant qualifier must appear before interpolation, storage, and precision qualifiers ERROR: 0:12: '' : Auxiliary qualifiers (centroid, patch, and sample) must appear before storage and precision qualifiers ERROR: 0:12: '' : vertex input cannot be further qualified ERROR: 0:13: '' : interpolation qualifiers must appear before storage and precision qualifiers ERROR: 0:14: '' : in/out must appear before const ERROR: 0:15: '' : precision qualifier must appear as last qualifier ERROR: 0:16: '' : can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD) ERROR: 0:17: 'sample' : Reserved word. ERROR: 0:17: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:18: 'uniform' : too many storage qualifiers ERROR: 0:56: '#error' : GL_ES is set ERROR: 0:62: '' : array size required ERROR: 0:63: '' : array size required ERROR: 0:64: '' : array size required ERROR: 0:65: '' : array size required ERROR: 0:67: '' : array size required ERROR: 0:76: 'invariant' : cannot change qualification after use ERROR: 0:78: 'invariant' : can only apply to an output ERROR: 0:88: 'ub2' : Cannot reuse block name within the same interface: uniform ERROR: 0:92: 'ub2' : Cannot reuse block name within the same interface: uniform ERROR: 0:96: 'ub2' : Cannot reuse block name within the same interface: uniform ERROR: 0:104: 'ub3' : Cannot reuse block name within the same interface: uniform ERROR: 0:121: 'textureSize' : no matching overloaded function found ERROR: 0:123: 'textureSize' : no matching overloaded function found ERROR: 0:125: 'texture' : no matching overloaded function found ERROR: 0:127: 'textureProjOffset' : no matching overloaded function found ERROR: 0:132: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 2 ERROR: 0:135: 'in' : overloaded functions must have the same parameter storage qualifiers for argument 2 ERROR: 0:146: '' : array size required ERROR: 0:147: '' : array size required ERROR: 0:148: '' : array size required ERROR: 0:149: 'float' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type ERROR: 0:168: 'Binst' : cannot add storage, auxiliary, memory, interpolation, layout, or precision qualifier to an existing variable ERROR: 0:169: 'Bblock' : cannot add storage, auxiliary, memory, interpolation, layout, or precision qualifier to an existing variable ERROR: 0:170: 'Bfoo' : cannot add storage, auxiliary, memory, interpolation, layout, or precision qualifier to an existing variable ERROR: 0:172: 'std430' : not supported for this version or the enabled extensions ERROR: 0:172: 'std430 requires the buffer storage qualifier' : required extension not requested: GL_EXT_scalar_block_layout ERROR: 0:175: '' : array size required ERROR: 0:185: 'assign' : cannot convert from ' temp 4-element array of highp float' to ' temp 3-element array of highp float' ERROR: 0:186: 'assign' : cannot convert from ' temp 3-element array of highp float' to ' temp 4-element array of highp float' ERROR: 0:189: 'num_views' : required extension not requested: Possible extensions include: GL_OVR_multiview GL_OVR_multiview2 ERROR: 0:193: 'gl_ViewID_OVR' : required extension not requested: Possible extensions include: GL_OVR_multiview GL_OVR_multiview2 ERROR: 0:198: 'num_views' : can only apply to a standalone qualifier ERROR: 47 compilation errors. No code generated. Shader version: 300 Requested GL_OVR_multiview ERROR: node is still EOpNull! 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:29 Sequence 0:29 Sequence 0:29 move second child to first child ( temp highp int) 0:29 'id' ( temp highp int) 0:29 add ( temp highp int) 0:29 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:29 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) 0:31 Sequence 0:31 move second child to first child ( temp highp int) 0:31 'c0' ( temp highp int) 0:31 Constant: 0:31 64 (const int) 0:32 Sequence 0:32 move second child to first child ( temp highp int) 0:32 'c1' ( temp highp int) 0:32 Constant: 0:32 128 (const int) 0:33 Sequence 0:33 move second child to first child ( temp highp int) 0:33 'c2' ( temp highp int) 0:33 Constant: 0:33 16 (const int) 0:34 Sequence 0:34 move second child to first child ( temp highp int) 0:34 'c3' ( temp highp int) 0:34 Constant: 0:34 15 (const int) 0:35 Sequence 0:35 move second child to first child ( temp highp int) 0:35 'c4' ( temp highp int) 0:35 Constant: 0:35 32 (const int) 0:36 Sequence 0:36 move second child to first child ( temp highp int) 0:36 'c5' ( temp highp int) 0:36 Constant: 0:36 80 (const int) 0:37 Sequence 0:37 move second child to first child ( temp highp int) 0:37 'c6' ( temp highp int) 0:37 Constant: 0:37 32 (const int) 0:38 Sequence 0:38 move second child to first child ( temp highp int) 0:38 'c7' ( temp highp int) 0:38 Constant: 0:38 16 (const int) 0:39 Sequence 0:39 move second child to first child ( temp highp int) 0:39 'c8' ( temp highp int) 0:39 Constant: 0:39 32 (const int) 0:40 Sequence 0:40 move second child to first child ( temp highp int) 0:40 'c9' ( temp highp int) 0:40 Constant: 0:40 -8 (const int) 0:41 Sequence 0:41 move second child to first child ( temp highp int) 0:41 'c10' ( temp highp int) 0:41 Constant: 0:41 7 (const int) 0:43 Sequence 0:43 move second child to first child ( temp highp 3X4 matrix of float) 0:43 'tm' ( temp highp 3X4 matrix of float) 0:43 transpose ( global highp 3X4 matrix of float) 0:43 'm43' ( uniform highp 4X3 matrix of float) 0:44 Sequence 0:44 move second child to first child ( temp highp float) 0:44 'dm' ( temp highp float) 0:44 determinant ( global highp float) 0:44 'm44' ( uniform highp 4X4 matrix of float) 0:45 Sequence 0:45 move second child to first child ( temp highp 3X3 matrix of float) 0:45 'im' ( temp highp 3X3 matrix of float) 0:45 inverse ( global highp 3X3 matrix of float) 0:45 'm33' ( uniform highp 3X3 matrix of float) 0:47 Sequence 0:47 move second child to first child ( temp highp 3X2 matrix of float) 0:47 'op' ( temp highp 3X2 matrix of float) 0:47 outer product ( global highp 3X2 matrix of float) 0:47 'v2' ( smooth out highp 2-component vector of float) 0:47 'v3' ( in highp 3-component vector of float) 0:49 move second child to first child ( temp highp 4-component vector of float) 0:49 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:49 direct index ( temp highp 4-component vector of float) 0:49 'm44' ( uniform highp 4X4 matrix of float) 0:49 Constant: 0:49 2 (const int) 0:50 move second child to first child ( temp highp float) 0:50 'gl_PointSize' ( gl_PointSize highp float PointSize) 0:50 direct index ( temp highp float) 0:50 'v2' ( smooth out highp 2-component vector of float) 0:50 Constant: 0:50 1 (const int) 0:52 move second child to first child ( temp highp 3-component vector of float) 0:52 c: direct index for structure ( global highp 3-component vector of float) 0:52 's' ( smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:52 Constant: 0:52 0 (const int) 0:52 'v3' ( in highp 3-component vector of float) 0:53 move second child to first child ( temp highp float) 0:53 f: direct index for structure ( global highp float) 0:53 's' ( smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:53 Constant: 0:53 1 (const int) 0:53 'dm' ( temp highp float) 0:68 Sequence 0:68 move second child to first child ( temp 2-element array of highp float) 0:68 'okayA' ( global 2-element array of highp float) 0:68 Constant: 0:68 3.000000 0:68 4.000000 0:71 Function Definition: newVFun( ( global void) 0:71 Function Parameters: 0:73 Sequence 0:73 move second child to first child ( temp highp 3-component vector of float) 0:73 'newV' ( smooth out highp 3-component vector of float) 0:73 'v3' ( in highp 3-component vector of float) 0:118 Function Definition: foo23( ( global void) 0:118 Function Parameters: 0:120 Sequence 0:120 Sequence 0:120 move second child to first child ( temp highp 2-component vector of int) 0:120 'x1' ( temp highp 2-component vector of int) 0:120 textureSize ( global highp 2-component vector of int, operation at lowp) 0:120 's2D' ( uniform lowp sampler2D) 0:120 Constant: 0:120 2 (const int) 0:121 Constant: 0:121 0.000000 0:122 Sequence 0:122 move second child to first child ( temp highp 3-component vector of int) 0:122 'x3' ( temp highp 3-component vector of int) 0:122 textureSize ( global highp 3-component vector of int, operation at lowp) 0:122 's2DAS' ( uniform lowp sampler2DArrayShadow) 0:122 Constant: 0:122 -1 (const int) 0:123 Constant: 0:123 0.000000 0:124 Sequence 0:124 move second child to first child ( temp highp 4-component vector of float) 0:124 'x4' ( temp highp 4-component vector of float) 0:124 texture ( global lowp 4-component vector of float, operation at highp) 0:124 's2D' ( uniform lowp sampler2D) 0:124 'c2D' ( in highp 2-component vector of float) 0:125 Constant: 0:125 0.000000 0:126 Sequence 0:126 move second child to first child ( temp highp 4-component vector of float) 0:126 'x5' ( temp highp 4-component vector of float) 0:126 textureProjOffset ( global lowp 4-component vector of float) 0:126 's3D' ( uniform lowp sampler3D) 0:126 Constant: 0:126 0.200000 0:126 0.200000 0:126 0.200000 0:126 0.200000 0:126 Constant: 0:126 1 (const int) 0:126 1 (const int) 0:126 1 (const int) 0:127 Constant: 0:127 0.000000 0:128 Sequence 0:128 move second child to first child ( temp highp float) 0:128 'x6' ( temp highp float) 0:128 textureProjGradOffset ( global lowp float, operation at highp) 0:128 's2DS' ( uniform lowp sampler2DShadow) 0:128 'invIn' ( invariant in highp 4-component vector of float) 0:128 Constant: 0:128 4.200000 0:128 4.200000 0:128 Constant: 0:128 5.300000 0:128 5.300000 0:128 Constant: 0:128 1 (const int) 0:128 1 (const int) 0:137 Function Definition: foo2349( ( global void) 0:137 Function Parameters: 0:139 Sequence 0:139 Sequence 0:139 move second child to first child ( temp 3-element array of highp float) 0:139 'x' ( temp 3-element array of highp float) 0:139 Constant: 0:139 1.000000 0:139 2.000000 0:139 3.000000 0:140 Sequence 0:140 move second child to first child ( temp 3-element array of highp float) 0:140 'y' ( temp 3-element array of highp float) 0:140 'x' ( temp 3-element array of highp float) 0:141 Sequence 0:141 move second child to first child ( temp 3-element array of highp float) 0:141 'z' ( temp 3-element array of highp float) 0:141 'x' ( temp 3-element array of highp float) 0:143 move second child to first child ( temp 3-element array of highp float) 0:143 'w' ( temp 3-element array of highp float) 0:143 'y' ( temp 3-element array of highp float) 0:155 Function Definition: gggf(f1; ( global highp int) 0:155 Function Parameters: 0:155 'f' ( in highp float) 0:155 Sequence 0:155 Branch: Return with expression 0:155 Constant: 0:155 2 (const int) 0:158 Function Definition: agggf(f1; ( global highp int) 0:158 Function Parameters: 0:158 'f' ( in highp float) 0:158 Sequence 0:158 Branch: Return with expression 0:158 Constant: 0:158 2 (const int) 0:178 Function Definition: fooDeeparray( ( global void) 0:178 Function Parameters: 0:181 Sequence 0:181 Sequence 0:180 move second child to first child ( temp 3-element array of highp float) 0:180 'x' ( temp 3-element array of highp float) 0:180 Constant: 0:180 1.000000 0:180 2.000000 0:180 3.000000 0:181 move second child to first child ( temp 4-element array of highp float) 0:181 'y' ( temp 4-element array of highp float) 0:181 Constant: 0:181 1.000000 0:181 2.000000 0:181 3.000000 0:181 4.000000 0:183 move second child to first child ( temp 3-element array of highp float) 0:183 'xp' ( temp 3-element array of highp float) 0:183 'x' ( temp 3-element array of highp float) 0:184 move second child to first child ( temp 4-element array of highp float) 0:184 'yp' ( temp 4-element array of highp float) 0:184 'y' ( temp 4-element array of highp float) 0:185 'xp' ( temp 3-element array of highp float) 0:186 'yp' ( temp 4-element array of highp float) 0:191 Function Definition: mwErr( ( global void) 0:191 Function Parameters: 0:193 Sequence 0:193 'gl_ViewID_OVR' ( in highp uint ViewIndex) 0:201 Function Definition: mwOk( ( global void) 0:201 Function Parameters: 0:203 Sequence 0:203 'gl_ViewID_OVR' ( in highp uint ViewIndex) 0:? Linker Objects 0:? 'm43' ( uniform highp 4X3 matrix of float) 0:? 'm33' ( uniform highp 3X3 matrix of float) 0:? 'm44' ( uniform highp 4X4 matrix of float) 0:? 'v3' ( in highp 3-component vector of float) 0:? 'v2' ( smooth out highp 2-component vector of float) 0:? 'bad' ( in 10-element array of highp 4-component vector of float) 0:? 'badorder' ( in highp 4-component vector of float) 0:? 'badorder2' ( invariant smooth out highp 4-component vector of float) 0:? 'badorder4' ( centroid in highp 4-component vector of float) 0:? 'badorder3' ( flat out highp 4-component vector of float) 0:? 'rep' ( smooth flat out highp 4-component vector of float) 0:? 'rep2' ( centroid smooth sample out highp 4-component vector of float) 0:? 'rep3' ( in highp 4-component vector of float) 0:? 's' ( smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:? 'badsize' ( global unsized 1-element array of highp float) 0:? 'badsize2' ( global unsized 1-element array of highp float) 0:? 'ubInst' (layout( column_major shared) uniform unsized 1-element array of block{layout( column_major shared) uniform unsized 1-element array of highp int a}) 0:? 'okayA' ( global 2-element array of highp float) 0:? 'newV' ( invariant smooth out highp 3-component vector of float) 0:? 'invIn' ( invariant in highp 4-component vector of float) 0:? 's2' ( invariant smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:? 's3' ( invariant smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:? 'a' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp float f}) 0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b23}) 0:? 's2D' ( uniform lowp sampler2D) 0:? 's3D' ( uniform lowp sampler3D) 0:? 's2DS' ( uniform lowp sampler2DShadow) 0:? 's2DAS' ( uniform lowp sampler2DArrayShadow) 0:? 'c2D' ( in highp 2-component vector of float) 0:? 'ssss' ( smooth out structure{ global highp float f}) 0:? 'Binst' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp int a}) 0:? 'Bfoo' ( global highp int) 0:? 'B430i' (layout( column_major std430) uniform block{layout( column_major std430 offset=0) uniform highp int a}) 0:? 'mwUniform' ( uniform highp float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 300 Requested GL_OVR_multiview ERROR: node is still EOpNull! 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:29 Sequence 0:29 Sequence 0:29 move second child to first child ( temp highp int) 0:29 'id' ( temp highp int) 0:29 add ( temp highp int) 0:29 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:29 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) 0:31 Sequence 0:31 move second child to first child ( temp highp int) 0:31 'c0' ( temp highp int) 0:31 Constant: 0:31 64 (const int) 0:32 Sequence 0:32 move second child to first child ( temp highp int) 0:32 'c1' ( temp highp int) 0:32 Constant: 0:32 128 (const int) 0:33 Sequence 0:33 move second child to first child ( temp highp int) 0:33 'c2' ( temp highp int) 0:33 Constant: 0:33 16 (const int) 0:34 Sequence 0:34 move second child to first child ( temp highp int) 0:34 'c3' ( temp highp int) 0:34 Constant: 0:34 15 (const int) 0:35 Sequence 0:35 move second child to first child ( temp highp int) 0:35 'c4' ( temp highp int) 0:35 Constant: 0:35 32 (const int) 0:36 Sequence 0:36 move second child to first child ( temp highp int) 0:36 'c5' ( temp highp int) 0:36 Constant: 0:36 80 (const int) 0:37 Sequence 0:37 move second child to first child ( temp highp int) 0:37 'c6' ( temp highp int) 0:37 Constant: 0:37 32 (const int) 0:38 Sequence 0:38 move second child to first child ( temp highp int) 0:38 'c7' ( temp highp int) 0:38 Constant: 0:38 16 (const int) 0:39 Sequence 0:39 move second child to first child ( temp highp int) 0:39 'c8' ( temp highp int) 0:39 Constant: 0:39 32 (const int) 0:40 Sequence 0:40 move second child to first child ( temp highp int) 0:40 'c9' ( temp highp int) 0:40 Constant: 0:40 -8 (const int) 0:41 Sequence 0:41 move second child to first child ( temp highp int) 0:41 'c10' ( temp highp int) 0:41 Constant: 0:41 7 (const int) 0:43 Sequence 0:43 move second child to first child ( temp highp 3X4 matrix of float) 0:43 'tm' ( temp highp 3X4 matrix of float) 0:43 transpose ( global highp 3X4 matrix of float) 0:43 'm43' ( uniform highp 4X3 matrix of float) 0:44 Sequence 0:44 move second child to first child ( temp highp float) 0:44 'dm' ( temp highp float) 0:44 determinant ( global highp float) 0:44 'm44' ( uniform highp 4X4 matrix of float) 0:45 Sequence 0:45 move second child to first child ( temp highp 3X3 matrix of float) 0:45 'im' ( temp highp 3X3 matrix of float) 0:45 inverse ( global highp 3X3 matrix of float) 0:45 'm33' ( uniform highp 3X3 matrix of float) 0:47 Sequence 0:47 move second child to first child ( temp highp 3X2 matrix of float) 0:47 'op' ( temp highp 3X2 matrix of float) 0:47 outer product ( global highp 3X2 matrix of float) 0:47 'v2' ( smooth out highp 2-component vector of float) 0:47 'v3' ( in highp 3-component vector of float) 0:49 move second child to first child ( temp highp 4-component vector of float) 0:49 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:49 direct index ( temp highp 4-component vector of float) 0:49 'm44' ( uniform highp 4X4 matrix of float) 0:49 Constant: 0:49 2 (const int) 0:50 move second child to first child ( temp highp float) 0:50 'gl_PointSize' ( gl_PointSize highp float PointSize) 0:50 direct index ( temp highp float) 0:50 'v2' ( smooth out highp 2-component vector of float) 0:50 Constant: 0:50 1 (const int) 0:52 move second child to first child ( temp highp 3-component vector of float) 0:52 c: direct index for structure ( global highp 3-component vector of float) 0:52 's' ( smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:52 Constant: 0:52 0 (const int) 0:52 'v3' ( in highp 3-component vector of float) 0:53 move second child to first child ( temp highp float) 0:53 f: direct index for structure ( global highp float) 0:53 's' ( smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:53 Constant: 0:53 1 (const int) 0:53 'dm' ( temp highp float) 0:68 Sequence 0:68 move second child to first child ( temp 2-element array of highp float) 0:68 'okayA' ( global 2-element array of highp float) 0:68 Constant: 0:68 3.000000 0:68 4.000000 0:? Linker Objects 0:? 'm43' ( uniform highp 4X3 matrix of float) 0:? 'm33' ( uniform highp 3X3 matrix of float) 0:? 'm44' ( uniform highp 4X4 matrix of float) 0:? 'v3' ( in highp 3-component vector of float) 0:? 'v2' ( smooth out highp 2-component vector of float) 0:? 'bad' ( in 10-element array of highp 4-component vector of float) 0:? 'badorder' ( in highp 4-component vector of float) 0:? 'badorder2' ( invariant smooth out highp 4-component vector of float) 0:? 'badorder4' ( centroid in highp 4-component vector of float) 0:? 'badorder3' ( flat out highp 4-component vector of float) 0:? 'rep' ( smooth flat out highp 4-component vector of float) 0:? 'rep2' ( centroid smooth sample out highp 4-component vector of float) 0:? 'rep3' ( in highp 4-component vector of float) 0:? 's' ( smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:? 'badsize' ( global 1-element array of highp float) 0:? 'badsize2' ( global 1-element array of highp float) 0:? 'ubInst' (layout( column_major shared) uniform 1-element array of block{layout( column_major shared) uniform 1-element array of highp int a}) 0:? 'okayA' ( global 2-element array of highp float) 0:? 'newV' ( invariant smooth out highp 3-component vector of float) 0:? 'invIn' ( invariant in highp 4-component vector of float) 0:? 's2' ( invariant smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:? 's3' ( invariant smooth out structure{ global highp 3-component vector of float c, global highp float f}) 0:? 'a' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp float f}) 0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b23}) 0:? 's2D' ( uniform lowp sampler2D) 0:? 's3D' ( uniform lowp sampler3D) 0:? 's2DS' ( uniform lowp sampler2DShadow) 0:? 's2DAS' ( uniform lowp sampler2DArrayShadow) 0:? 'c2D' ( in highp 2-component vector of float) 0:? 'ssss' ( smooth out structure{ global highp float f}) 0:? 'Binst' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp int a}) 0:? 'Bfoo' ( global highp int) 0:? 'B430i' (layout( column_major std430) uniform block{layout( column_major std430 offset=0) uniform highp int a}) 0:? 'mwUniform' ( uniform highp float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/300BuiltIns.frag.out000066400000000000000000000552721506534232700221050ustar00rootroot00000000000000300BuiltIns.frag ERROR: 0:6: 'float' : type requires declaration of default precision qualifier ERROR: 0:70: 'noise2' : no matching overloaded function found WARNING: 0:72: 't__' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:75: '#define' : names containing consecutive underscores are reserved: __D ERROR: 2 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:29 Sequence 0:29 Sequence 0:29 move second child to first child ( temp mediump 3-component vector of float) 0:29 'v' ( temp mediump 3-component vector of float) 0:29 mix ( global mediump 3-component vector of float) 0:29 'x' ( global mediump 3-component vector of float) 0:29 'y' ( global mediump 3-component vector of float) 0:29 'bv' ( global 3-component vector of bool) 0:30 Sequence 0:30 move second child to first child ( temp mediump 4-component vector of int) 0:30 'iv10' ( temp mediump 4-component vector of int) 0:30 Absolute value ( global mediump 4-component vector of int) 0:30 'iv4a' ( global mediump 4-component vector of int) 0:31 Sequence 0:31 move second child to first child ( temp mediump 4-component vector of int) 0:31 'iv11' ( temp mediump 4-component vector of int) 0:31 Sign ( global mediump 4-component vector of int) 0:31 'iv4a' ( global mediump 4-component vector of int) 0:32 Sequence 0:32 move second child to first child ( temp mediump 4-component vector of int) 0:32 'iv12' ( temp mediump 4-component vector of int) 0:32 min ( global mediump 4-component vector of int) 0:32 'iv4a' ( global mediump 4-component vector of int) 0:32 'iv4b' ( global mediump 4-component vector of int) 0:33 Sequence 0:33 move second child to first child ( temp mediump 4-component vector of int) 0:33 'iv13' ( temp mediump 4-component vector of int) 0:33 min ( global mediump 4-component vector of int) 0:33 'iv4a' ( global mediump 4-component vector of int) 0:33 'imin' ( global mediump int) 0:34 Sequence 0:34 move second child to first child ( temp mediump 2-component vector of uint) 0:34 'u' ( temp mediump 2-component vector of uint) 0:34 min ( global mediump 2-component vector of uint) 0:34 'uv2x' ( global mediump 2-component vector of uint) 0:34 'uv2y' ( global mediump 2-component vector of uint) 0:35 Sequence 0:35 move second child to first child ( temp mediump 4-component vector of uint) 0:35 'uv' ( temp mediump 4-component vector of uint) 0:35 min ( global mediump 4-component vector of uint) 0:35 'uv4y' ( global mediump 4-component vector of uint) 0:35 'uy' ( global mediump uint) 0:36 Sequence 0:36 move second child to first child ( temp mediump 3-component vector of int) 0:36 'iv14' ( temp mediump 3-component vector of int) 0:36 max ( global mediump 3-component vector of int) 0:36 'iv3a' ( global mediump 3-component vector of int) 0:36 'iv3b' ( global mediump 3-component vector of int) 0:37 Sequence 0:37 move second child to first child ( temp mediump 4-component vector of int) 0:37 'iv15' ( temp mediump 4-component vector of int) 0:37 max ( global mediump 4-component vector of int) 0:37 'iv4a' ( global mediump 4-component vector of int) 0:37 'imax' ( global mediump int) 0:38 Sequence 0:38 move second child to first child ( temp mediump 2-component vector of uint) 0:38 'u10' ( temp mediump 2-component vector of uint) 0:38 max ( global mediump 2-component vector of uint) 0:38 'uv2x' ( global mediump 2-component vector of uint) 0:38 'uv2y' ( global mediump 2-component vector of uint) 0:39 Sequence 0:39 move second child to first child ( temp mediump 2-component vector of uint) 0:39 'u11' ( temp mediump 2-component vector of uint) 0:39 max ( global mediump 2-component vector of uint) 0:39 'uv2x' ( global mediump 2-component vector of uint) 0:39 'uy' ( global mediump uint) 0:40 Sequence 0:40 move second child to first child ( temp mediump 4-component vector of int) 0:40 'iv16' ( temp mediump 4-component vector of int) 0:40 clamp ( global mediump 4-component vector of int) 0:40 'iv4a' ( global mediump 4-component vector of int) 0:40 'iv4a' ( global mediump 4-component vector of int) 0:40 'iv4b' ( global mediump 4-component vector of int) 0:41 Sequence 0:41 move second child to first child ( temp mediump 4-component vector of int) 0:41 'iv17' ( temp mediump 4-component vector of int) 0:41 clamp ( global mediump 4-component vector of int) 0:41 'iv4a' ( global mediump 4-component vector of int) 0:41 'imin' ( global mediump int) 0:41 'imax' ( global mediump int) 0:42 Sequence 0:42 move second child to first child ( temp mediump 2-component vector of uint) 0:42 'u12' ( temp mediump 2-component vector of uint) 0:42 clamp ( global mediump 2-component vector of uint) 0:42 'uv2x' ( global mediump 2-component vector of uint) 0:42 'uv2y' ( global mediump 2-component vector of uint) 0:42 'uv2c' ( global mediump 2-component vector of uint) 0:43 Sequence 0:43 move second child to first child ( temp mediump 4-component vector of uint) 0:43 'uv10' ( temp mediump 4-component vector of uint) 0:43 clamp ( global mediump 4-component vector of uint) 0:43 'uv4y' ( global mediump 4-component vector of uint) 0:43 'umin' ( global mediump uint) 0:43 'umax' ( global mediump uint) 0:47 Sequence 0:47 move second child to first child ( temp mediump 3-component vector of float) 0:47 'v11' ( temp mediump 3-component vector of float) 0:47 modf ( global mediump 3-component vector of float) 0:47 'x' ( global mediump 3-component vector of float) 0:47 'modfOut' ( temp mediump 3-component vector of float) 0:49 Sequence 0:49 move second child to first child ( temp mediump float) 0:49 't' ( temp mediump float) 0:49 trunc ( global mediump float) 0:49 'f' ( global mediump float) 0:50 Sequence 0:50 move second child to first child ( temp mediump 2-component vector of float) 0:50 'v12' ( temp mediump 2-component vector of float) 0:50 round ( global mediump 2-component vector of float) 0:50 'v2a' ( global mediump 2-component vector of float) 0:51 Sequence 0:51 move second child to first child ( temp mediump 2-component vector of float) 0:51 'v13' ( temp mediump 2-component vector of float) 0:51 roundEven ( global mediump 2-component vector of float) 0:51 'v2a' ( global mediump 2-component vector of float) 0:52 Sequence 0:52 move second child to first child ( temp 2-component vector of bool) 0:52 'b10' ( temp 2-component vector of bool) 0:52 isnan ( global 2-component vector of bool, operation at mediump) 0:52 'v2a' ( global mediump 2-component vector of float) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of bool) 0:53 'b11' ( temp 4-component vector of bool) 0:53 isinf ( global 4-component vector of bool, operation at mediump) 0:53 'v4' ( global mediump 4-component vector of float) 0:56 Sequence 0:56 move second child to first child ( temp highp int) 0:56 'i' ( temp mediump int) 0:56 floatBitsToInt ( global highp int) 0:56 'f' ( global mediump float) 0:57 Sequence 0:57 move second child to first child ( temp highp 4-component vector of uint) 0:57 'uv11' ( temp mediump 4-component vector of uint) 0:57 floatBitsToUint ( global highp 4-component vector of uint) 0:57 'v4' ( global mediump 4-component vector of float) 0:58 Sequence 0:58 move second child to first child ( temp highp 4-component vector of float) 0:58 'v14' ( temp mediump 4-component vector of float) 0:58 intBitsToFloat ( global highp 4-component vector of float) 0:58 'iv4a' ( global mediump 4-component vector of int) 0:59 Sequence 0:59 move second child to first child ( temp highp 2-component vector of float) 0:59 'v15' ( temp mediump 2-component vector of float) 0:59 uintBitsToFloat ( global highp 2-component vector of float) 0:59 'uv2c' ( global mediump 2-component vector of uint) 0:62 Sequence 0:62 move second child to first child ( temp highp uint) 0:62 'u19' ( temp mediump uint) 0:62 packSnorm2x16 ( global highp uint, operation at mediump) 0:62 'v2a' ( global mediump 2-component vector of float) 0:63 Sequence 0:63 move second child to first child ( temp highp 2-component vector of float) 0:63 'v20' ( temp mediump 2-component vector of float) 0:63 unpackSnorm2x16 ( global highp 2-component vector of float) 0:63 'uy' ( global mediump uint) 0:64 Sequence 0:64 move second child to first child ( temp highp uint) 0:64 'u15' ( temp mediump uint) 0:64 packUnorm2x16 ( global highp uint, operation at mediump) 0:64 'v2a' ( global mediump 2-component vector of float) 0:65 Sequence 0:65 move second child to first child ( temp highp 2-component vector of float) 0:65 'v16' ( temp mediump 2-component vector of float) 0:65 unpackUnorm2x16 ( global highp 2-component vector of float) 0:65 'uy' ( global mediump uint) 0:66 Sequence 0:66 move second child to first child ( temp highp uint) 0:66 'u17' ( temp mediump uint) 0:66 packHalf2x16 ( global highp uint, operation at mediump) 0:66 'v2b' ( global mediump 2-component vector of float) 0:67 Sequence 0:67 move second child to first child ( temp mediump 2-component vector of float) 0:67 'v18' ( temp mediump 2-component vector of float) 0:67 unpackHalf2x16 ( global mediump 2-component vector of float, operation at highp) 0:67 'uy' ( global mediump uint) 0:70 Constant: 0:70 0.000000 0:? Linker Objects 0:? 'imax' ( global mediump int) 0:? 'imin' ( global mediump int) 0:? 'umax' ( global mediump uint) 0:? 'umin' ( global mediump uint) 0:? 'x' ( global mediump 3-component vector of float) 0:? 'y' ( global mediump 3-component vector of float) 0:? 'bv' ( global 3-component vector of bool) 0:? 'uy' ( global mediump uint) 0:? 'uv2c' ( global mediump 2-component vector of uint) 0:? 'uv2y' ( global mediump 2-component vector of uint) 0:? 'uv2x' ( global mediump 2-component vector of uint) 0:? 'uv4y' ( global mediump 4-component vector of uint) 0:? 'iv3a' ( global mediump 3-component vector of int) 0:? 'iv3b' ( global mediump 3-component vector of int) 0:? 'iv4a' ( global mediump 4-component vector of int) 0:? 'iv4b' ( global mediump 4-component vector of int) 0:? 'f' ( global mediump float) 0:? 'v2a' ( global mediump 2-component vector of float) 0:? 'v2b' ( global mediump 2-component vector of float) 0:? 'v4' ( global mediump 4-component vector of float) Linked fragment stage: Shader version: 300 ERROR: node is still EOpNull! 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:29 Sequence 0:29 Sequence 0:29 move second child to first child ( temp mediump 3-component vector of float) 0:29 'v' ( temp mediump 3-component vector of float) 0:29 mix ( global mediump 3-component vector of float) 0:29 'x' ( global mediump 3-component vector of float) 0:29 'y' ( global mediump 3-component vector of float) 0:29 'bv' ( global 3-component vector of bool) 0:30 Sequence 0:30 move second child to first child ( temp mediump 4-component vector of int) 0:30 'iv10' ( temp mediump 4-component vector of int) 0:30 Absolute value ( global mediump 4-component vector of int) 0:30 'iv4a' ( global mediump 4-component vector of int) 0:31 Sequence 0:31 move second child to first child ( temp mediump 4-component vector of int) 0:31 'iv11' ( temp mediump 4-component vector of int) 0:31 Sign ( global mediump 4-component vector of int) 0:31 'iv4a' ( global mediump 4-component vector of int) 0:32 Sequence 0:32 move second child to first child ( temp mediump 4-component vector of int) 0:32 'iv12' ( temp mediump 4-component vector of int) 0:32 min ( global mediump 4-component vector of int) 0:32 'iv4a' ( global mediump 4-component vector of int) 0:32 'iv4b' ( global mediump 4-component vector of int) 0:33 Sequence 0:33 move second child to first child ( temp mediump 4-component vector of int) 0:33 'iv13' ( temp mediump 4-component vector of int) 0:33 min ( global mediump 4-component vector of int) 0:33 'iv4a' ( global mediump 4-component vector of int) 0:33 'imin' ( global mediump int) 0:34 Sequence 0:34 move second child to first child ( temp mediump 2-component vector of uint) 0:34 'u' ( temp mediump 2-component vector of uint) 0:34 min ( global mediump 2-component vector of uint) 0:34 'uv2x' ( global mediump 2-component vector of uint) 0:34 'uv2y' ( global mediump 2-component vector of uint) 0:35 Sequence 0:35 move second child to first child ( temp mediump 4-component vector of uint) 0:35 'uv' ( temp mediump 4-component vector of uint) 0:35 min ( global mediump 4-component vector of uint) 0:35 'uv4y' ( global mediump 4-component vector of uint) 0:35 'uy' ( global mediump uint) 0:36 Sequence 0:36 move second child to first child ( temp mediump 3-component vector of int) 0:36 'iv14' ( temp mediump 3-component vector of int) 0:36 max ( global mediump 3-component vector of int) 0:36 'iv3a' ( global mediump 3-component vector of int) 0:36 'iv3b' ( global mediump 3-component vector of int) 0:37 Sequence 0:37 move second child to first child ( temp mediump 4-component vector of int) 0:37 'iv15' ( temp mediump 4-component vector of int) 0:37 max ( global mediump 4-component vector of int) 0:37 'iv4a' ( global mediump 4-component vector of int) 0:37 'imax' ( global mediump int) 0:38 Sequence 0:38 move second child to first child ( temp mediump 2-component vector of uint) 0:38 'u10' ( temp mediump 2-component vector of uint) 0:38 max ( global mediump 2-component vector of uint) 0:38 'uv2x' ( global mediump 2-component vector of uint) 0:38 'uv2y' ( global mediump 2-component vector of uint) 0:39 Sequence 0:39 move second child to first child ( temp mediump 2-component vector of uint) 0:39 'u11' ( temp mediump 2-component vector of uint) 0:39 max ( global mediump 2-component vector of uint) 0:39 'uv2x' ( global mediump 2-component vector of uint) 0:39 'uy' ( global mediump uint) 0:40 Sequence 0:40 move second child to first child ( temp mediump 4-component vector of int) 0:40 'iv16' ( temp mediump 4-component vector of int) 0:40 clamp ( global mediump 4-component vector of int) 0:40 'iv4a' ( global mediump 4-component vector of int) 0:40 'iv4a' ( global mediump 4-component vector of int) 0:40 'iv4b' ( global mediump 4-component vector of int) 0:41 Sequence 0:41 move second child to first child ( temp mediump 4-component vector of int) 0:41 'iv17' ( temp mediump 4-component vector of int) 0:41 clamp ( global mediump 4-component vector of int) 0:41 'iv4a' ( global mediump 4-component vector of int) 0:41 'imin' ( global mediump int) 0:41 'imax' ( global mediump int) 0:42 Sequence 0:42 move second child to first child ( temp mediump 2-component vector of uint) 0:42 'u12' ( temp mediump 2-component vector of uint) 0:42 clamp ( global mediump 2-component vector of uint) 0:42 'uv2x' ( global mediump 2-component vector of uint) 0:42 'uv2y' ( global mediump 2-component vector of uint) 0:42 'uv2c' ( global mediump 2-component vector of uint) 0:43 Sequence 0:43 move second child to first child ( temp mediump 4-component vector of uint) 0:43 'uv10' ( temp mediump 4-component vector of uint) 0:43 clamp ( global mediump 4-component vector of uint) 0:43 'uv4y' ( global mediump 4-component vector of uint) 0:43 'umin' ( global mediump uint) 0:43 'umax' ( global mediump uint) 0:47 Sequence 0:47 move second child to first child ( temp mediump 3-component vector of float) 0:47 'v11' ( temp mediump 3-component vector of float) 0:47 modf ( global mediump 3-component vector of float) 0:47 'x' ( global mediump 3-component vector of float) 0:47 'modfOut' ( temp mediump 3-component vector of float) 0:49 Sequence 0:49 move second child to first child ( temp mediump float) 0:49 't' ( temp mediump float) 0:49 trunc ( global mediump float) 0:49 'f' ( global mediump float) 0:50 Sequence 0:50 move second child to first child ( temp mediump 2-component vector of float) 0:50 'v12' ( temp mediump 2-component vector of float) 0:50 round ( global mediump 2-component vector of float) 0:50 'v2a' ( global mediump 2-component vector of float) 0:51 Sequence 0:51 move second child to first child ( temp mediump 2-component vector of float) 0:51 'v13' ( temp mediump 2-component vector of float) 0:51 roundEven ( global mediump 2-component vector of float) 0:51 'v2a' ( global mediump 2-component vector of float) 0:52 Sequence 0:52 move second child to first child ( temp 2-component vector of bool) 0:52 'b10' ( temp 2-component vector of bool) 0:52 isnan ( global 2-component vector of bool, operation at mediump) 0:52 'v2a' ( global mediump 2-component vector of float) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of bool) 0:53 'b11' ( temp 4-component vector of bool) 0:53 isinf ( global 4-component vector of bool, operation at mediump) 0:53 'v4' ( global mediump 4-component vector of float) 0:56 Sequence 0:56 move second child to first child ( temp highp int) 0:56 'i' ( temp mediump int) 0:56 floatBitsToInt ( global highp int) 0:56 'f' ( global mediump float) 0:57 Sequence 0:57 move second child to first child ( temp highp 4-component vector of uint) 0:57 'uv11' ( temp mediump 4-component vector of uint) 0:57 floatBitsToUint ( global highp 4-component vector of uint) 0:57 'v4' ( global mediump 4-component vector of float) 0:58 Sequence 0:58 move second child to first child ( temp highp 4-component vector of float) 0:58 'v14' ( temp mediump 4-component vector of float) 0:58 intBitsToFloat ( global highp 4-component vector of float) 0:58 'iv4a' ( global mediump 4-component vector of int) 0:59 Sequence 0:59 move second child to first child ( temp highp 2-component vector of float) 0:59 'v15' ( temp mediump 2-component vector of float) 0:59 uintBitsToFloat ( global highp 2-component vector of float) 0:59 'uv2c' ( global mediump 2-component vector of uint) 0:62 Sequence 0:62 move second child to first child ( temp highp uint) 0:62 'u19' ( temp mediump uint) 0:62 packSnorm2x16 ( global highp uint, operation at mediump) 0:62 'v2a' ( global mediump 2-component vector of float) 0:63 Sequence 0:63 move second child to first child ( temp highp 2-component vector of float) 0:63 'v20' ( temp mediump 2-component vector of float) 0:63 unpackSnorm2x16 ( global highp 2-component vector of float) 0:63 'uy' ( global mediump uint) 0:64 Sequence 0:64 move second child to first child ( temp highp uint) 0:64 'u15' ( temp mediump uint) 0:64 packUnorm2x16 ( global highp uint, operation at mediump) 0:64 'v2a' ( global mediump 2-component vector of float) 0:65 Sequence 0:65 move second child to first child ( temp highp 2-component vector of float) 0:65 'v16' ( temp mediump 2-component vector of float) 0:65 unpackUnorm2x16 ( global highp 2-component vector of float) 0:65 'uy' ( global mediump uint) 0:66 Sequence 0:66 move second child to first child ( temp highp uint) 0:66 'u17' ( temp mediump uint) 0:66 packHalf2x16 ( global highp uint, operation at mediump) 0:66 'v2b' ( global mediump 2-component vector of float) 0:67 Sequence 0:67 move second child to first child ( temp mediump 2-component vector of float) 0:67 'v18' ( temp mediump 2-component vector of float) 0:67 unpackHalf2x16 ( global mediump 2-component vector of float, operation at highp) 0:67 'uy' ( global mediump uint) 0:70 Constant: 0:70 0.000000 0:? Linker Objects 0:? 'imax' ( global mediump int) 0:? 'imin' ( global mediump int) 0:? 'umax' ( global mediump uint) 0:? 'umin' ( global mediump uint) 0:? 'x' ( global mediump 3-component vector of float) 0:? 'y' ( global mediump 3-component vector of float) 0:? 'bv' ( global 3-component vector of bool) 0:? 'uy' ( global mediump uint) 0:? 'uv2c' ( global mediump 2-component vector of uint) 0:? 'uv2y' ( global mediump 2-component vector of uint) 0:? 'uv2x' ( global mediump 2-component vector of uint) 0:? 'uv4y' ( global mediump 4-component vector of uint) 0:? 'iv3a' ( global mediump 3-component vector of int) 0:? 'iv3b' ( global mediump 3-component vector of int) 0:? 'iv4a' ( global mediump 4-component vector of int) 0:? 'iv4b' ( global mediump 4-component vector of int) 0:? 'f' ( global mediump float) 0:? 'v2a' ( global mediump 2-component vector of float) 0:? 'v2b' ( global mediump 2-component vector of float) 0:? 'v4' ( global mediump 4-component vector of float) glslang-16.0.0/Test/baseResults/300block.frag.out000066400000000000000000000342071506534232700214410ustar00rootroot00000000000000300block.frag ERROR: 0:10: '' : cannot nest a structure definition inside a structure or block ERROR: 0:21: '' : cannot nest a structure definition inside a structure or block ERROR: 0:20: 'sampler' : member of block cannot be or contain a sampler, image, or atomic_uint type ERROR: 0:24: 'fbs' : member of block cannot be or contain a sampler, image, or atomic_uint type ERROR: 0:45: 'variable indexing uniform block array' : not supported for this version or the enabled extensions ERROR: 0:46: 'fooBlock' : cannot be used (maybe an instance name is needed) ERROR: 0:46: 'fooBlock' : undeclared identifier ERROR: 0:47: 'constructor' : not enough data provided for construction ERROR: 0:51: 'unreferenced' : cannot be used (maybe an instance name is needed) ERROR: 0:51: 'unreferenced' : undeclared identifier ERROR: 0:52: '++' : l-value required "s" (can't modify a uniform) ERROR: 0:52: '++' : wrong operand type no operation '++' exists that takes an operand of type uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t} (or there is no acceptable conversion) ERROR: 0:53: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type 'layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:55: 'barBlockArray' : cannot be used (maybe an instance name is needed) ERROR: 0:55: 'barBlockArray' : undeclared identifier ERROR: 0:55: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' const int' and a right operand of type ' temp float' (or there is no acceptable conversion) ERROR: 0:58: 'fooBlock' : redefinition ERROR: 17 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:42 Function Definition: main( ( global void) 0:42 Function Parameters: 0:44 Sequence 0:44 texture ( global lowp 4-component vector of int, operation at mediump) 0:44 sampler: direct index for structure ( global lowp isampler3D) 0:44 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:44 Constant: 0:44 2 (const int) 0:44 Construct vec3 ( temp mediump 3-component vector of float) 0:44 Convert int to float ( temp mediump float) 0:44 ni: direct index for structure (layout( column_major shared) uniform mediump int) 0:44 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:44 Constant: 0:44 1 (const int) 0:44 Convert uint to float ( temp mediump float) 0:44 direct index ( temp mediump uint) 0:44 bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) 0:44 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) 0:44 Constant: 0:44 0 (const uint) 0:44 Constant: 0:44 1 (const int) 0:44 Convert uint to float ( temp mediump float) 0:44 direct index ( temp mediump uint) 0:44 nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) 0:44 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:44 'insts' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:45 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:45 'insts' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:45 direct index ( temp mediump uint) 0:45 v: direct index for structure ( global mediump 4-component vector of uint) 0:45 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:46 'fooBlock' ( temp float) 0:47 Constant: 0:47 0.000000 0:50 Construct mat4 ( temp 4X4 matrix of float) 0:50 'barBlock' ( temp mediump float) 0:51 Construct mat4 ( temp 4X4 matrix of float) 0:51 'unreferenced' ( temp float) 0:52 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:53 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:54 Pre-Increment ( temp mediump float) 0:54 'barBlock' ( temp mediump float) 0:55 Constant: 0:55 2 (const int) 0:? Linker Objects 0:? 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) 0:? 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:? 'insts' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:? 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f, layout( column_major shared) uniform mediump uint u}) Linked fragment stage: Shader version: 300 ERROR: node is still EOpNull! 0:42 Function Definition: main( ( global void) 0:42 Function Parameters: 0:44 Sequence 0:44 texture ( global lowp 4-component vector of int, operation at mediump) 0:44 sampler: direct index for structure ( global lowp isampler3D) 0:44 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:44 Constant: 0:44 2 (const int) 0:44 Construct vec3 ( temp mediump 3-component vector of float) 0:44 Convert int to float ( temp mediump float) 0:44 ni: direct index for structure (layout( column_major shared) uniform mediump int) 0:44 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:44 Constant: 0:44 1 (const int) 0:44 Convert uint to float ( temp mediump float) 0:44 direct index ( temp mediump uint) 0:44 bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) 0:44 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) 0:44 Constant: 0:44 0 (const uint) 0:44 Constant: 0:44 1 (const int) 0:44 Convert uint to float ( temp mediump float) 0:44 direct index ( temp mediump uint) 0:44 nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) 0:44 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:44 'insts' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:45 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:45 'insts' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:45 direct index ( temp mediump uint) 0:45 v: direct index for structure ( global mediump 4-component vector of uint) 0:45 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:46 'fooBlock' ( temp float) 0:47 Constant: 0:47 0.000000 0:50 Construct mat4 ( temp 4X4 matrix of float) 0:50 'barBlock' ( temp mediump float) 0:51 Construct mat4 ( temp 4X4 matrix of float) 0:51 'unreferenced' ( temp float) 0:52 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:53 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:54 Pre-Increment ( temp mediump float) 0:54 'barBlock' ( temp mediump float) 0:55 Constant: 0:55 2 (const int) 0:? Linker Objects 0:? 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) 0:? 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:? 'insts' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:? 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f, layout( column_major shared) uniform mediump uint u}) glslang-16.0.0/Test/baseResults/300layout.frag.out000066400000000000000000000074351506534232700216670ustar00rootroot00000000000000300layout.frag ERROR: 0:4: 'location qualifier on input' : not supported in this stage: fragment ERROR: 0:4: 'location qualifier on input' : not supported for this version or the enabled extensions ERROR: 0:17: 'location' : too large for fragment output ERROR: 0:18: 'location' : too large for fragment output ERROR: 0:18: 'location' : overlapping use of location 41 ERROR: 0:19: 'location' : too large for fragment output ERROR: 0:19: 'location' : overlapping use of location 40 ERROR: 7 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 move second child to first child ( temp mediump 4-component vector of float) 0:12 'c' (layout( location=1) out mediump 4-component vector of float) 0:12 'color' (layout( location=2) smooth in mediump 4-component vector of float) 0:13 move second child to first child ( temp mediump 4-component vector of float) 0:13 'p' (layout( location=3) out mediump 4-component vector of float) 0:13 'pos' ( smooth in mediump 4-component vector of float) 0:14 move second child to first child ( temp mediump 4-component vector of float) 0:14 direct index (layout( location=4) temp mediump 4-component vector of float) 0:14 'q' (layout( location=4) out 2-element array of mediump 4-component vector of float) 0:14 Constant: 0:14 1 (const int) 0:14 'pos' ( smooth in mediump 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( smooth in mediump 4-component vector of float) 0:? 'color' (layout( location=2) smooth in mediump 4-component vector of float) 0:? 'c' (layout( location=1) out mediump 4-component vector of float) 0:? 'p' (layout( location=3) out mediump 4-component vector of float) 0:? 'q' (layout( location=4) out 2-element array of mediump 4-component vector of float) 0:? 'ca' (layout( location=40) out 4-element array of mediump float) 0:? 'cb' (layout( location=41) out 2-element array of mediump float) 0:? 'cc' (layout( location=39) out 6-element array of mediump float) Linked fragment stage: Shader version: 300 ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 move second child to first child ( temp mediump 4-component vector of float) 0:12 'c' (layout( location=1) out mediump 4-component vector of float) 0:12 'color' (layout( location=2) smooth in mediump 4-component vector of float) 0:13 move second child to first child ( temp mediump 4-component vector of float) 0:13 'p' (layout( location=3) out mediump 4-component vector of float) 0:13 'pos' ( smooth in mediump 4-component vector of float) 0:14 move second child to first child ( temp mediump 4-component vector of float) 0:14 direct index (layout( location=4) temp mediump 4-component vector of float) 0:14 'q' (layout( location=4) out 2-element array of mediump 4-component vector of float) 0:14 Constant: 0:14 1 (const int) 0:14 'pos' ( smooth in mediump 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( smooth in mediump 4-component vector of float) 0:? 'color' (layout( location=2) smooth in mediump 4-component vector of float) 0:? 'c' (layout( location=1) out mediump 4-component vector of float) 0:? 'p' (layout( location=3) out mediump 4-component vector of float) 0:? 'q' (layout( location=4) out 2-element array of mediump 4-component vector of float) 0:? 'ca' (layout( location=40) out 4-element array of mediump float) 0:? 'cb' (layout( location=41) out 2-element array of mediump float) 0:? 'cc' (layout( location=39) out 6-element array of mediump float) glslang-16.0.0/Test/baseResults/300layout.vert.out000066400000000000000000000350351506534232700217250ustar00rootroot00000000000000300layout.vert ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es ERROR: 0:8: 'in' : cannot be a structure ERROR: 0:8: 's' : A structure containing an array is not allowed as input in ES ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es ERROR: 0:8: 'location' : overlapping use of location 10 ERROR: 0:12: 'layout' : cannot specify matrix layout on a variable declaration ERROR: 0:12: 'layout' : cannot specify packing on a variable declaration ERROR: 0:19: 'badf' : member of uniform or buffer block cannot have an auxiliary or interpolation qualifier ERROR: 0:20: 'badg' : member storage qualifier cannot contradict block storage qualifier ERROR: 0:21: 'bad1' : member of block cannot have a packing layout qualifier ERROR: 0:22: 'bad2' : member of block cannot have a packing layout qualifier ERROR: 0:23: 'bad3' : member of block cannot have a packing layout qualifier ERROR: 0:31: 'T3' : nameless block contains a member that already has a name at global scope ERROR: 0:38: 'vertex output block' : not supported for this version or the enabled extensions ERROR: 0:42: 'location qualifier on output' : not supported in this stage: vertex ERROR: 0:42: 'location qualifier on output' : not supported for this version or the enabled extensions ERROR: 0:50: 'shared' : not supported for this version or the enabled extensions ERROR: 0:50: 'shared' : not supported in this stage: vertex ERROR: 0:54: 'layout' : cannot specify packing on a variable declaration ERROR: 0:57: 'location' : overlapping use of location 40 ERROR: 20 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:44 Function Definition: main( ( global void) 0:44 Function Parameters: 0:46 Sequence 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 'pos' ( smooth out highp 4-component vector of float) 0:46 vector-times-matrix ( temp highp 4-component vector of float) 0:46 'p' (layout( location=3) in highp 4-component vector of float) 0:46 add ( temp highp 4X4 matrix of float) 0:46 add ( temp highp 4X4 matrix of float) 0:46 add ( temp highp 4X4 matrix of float) 0:46 add ( temp highp 4X4 matrix of float) 0:46 M1: direct index for structure (layout( row_major std140 offset=0) uniform highp 4X4 matrix of float) 0:46 'tblock' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform highp 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform highp 3X3 matrix of float N1, layout( row_major std140 offset=176) centroid uniform highp float badf, layout( row_major std140 offset=180) uniform highp float badg, layout( row_major std140 offset=184) uniform highp float bad1, layout( row_major shared offset=188) uniform highp float bad2, layout( row_major packed offset=192) uniform highp float bad3}) 0:46 Constant: 0:46 0 (const int) 0:46 M2: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float) 0:46 'tblock' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform highp 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform highp 3X3 matrix of float N1, layout( row_major std140 offset=176) centroid uniform highp float badf, layout( row_major std140 offset=180) uniform highp float badg, layout( row_major std140 offset=184) uniform highp float bad1, layout( row_major shared offset=188) uniform highp float bad2, layout( row_major packed offset=192) uniform highp float bad3}) 0:46 Constant: 0:46 1 (const int) 0:46 M4: direct index for structure (layout( row_major shared) uniform highp 4X4 matrix of float) 0:46 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp 4X4 matrix of float M3, layout( row_major shared) uniform highp 4X4 matrix of float M4, layout( column_major shared) uniform highp 3X3 matrix of float N2, layout( column_major shared) uniform highp int b}) 0:46 Constant: 0:46 1 (const uint) 0:46 M3: direct index for structure (layout( column_major shared) uniform highp 4X4 matrix of float) 0:46 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp 4X4 matrix of float M3, layout( row_major shared) uniform highp 4X4 matrix of float M4, layout( column_major shared) uniform highp 3X3 matrix of float N2, layout( column_major shared) uniform highp int b}) 0:46 Constant: 0:46 0 (const uint) 0:46 t2m: direct index for structure (layout( row_major shared) uniform highp 4X4 matrix of float) 0:46 'anon@0' (layout( row_major shared) uniform block{layout( row_major shared) uniform bool b, layout( row_major shared) uniform highp 4X4 matrix of float t2m}) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp highp 3-component vector of float) 0:47 'color' ( smooth out highp 3-component vector of float) 0:47 vector-times-matrix ( temp highp 3-component vector of float) 0:47 'c' (layout( location=7) in highp 3-component vector of float) 0:47 N1: direct index for structure (layout( row_major std140 offset=128) uniform highp 3X3 matrix of float) 0:47 'tblock' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform highp 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform highp 3X3 matrix of float N1, layout( row_major std140 offset=176) centroid uniform highp float badf, layout( row_major std140 offset=180) uniform highp float badg, layout( row_major std140 offset=184) uniform highp float bad1, layout( row_major shared offset=188) uniform highp float bad2, layout( row_major packed offset=192) uniform highp float bad3}) 0:47 Constant: 0:47 2 (const int) 0:? Linker Objects 0:? 'c' (layout( location=7) in highp 3-component vector of float) 0:? 'p' (layout( location=3) in highp 4-component vector of float) 0:? 'q' (layout( location=9) in 4-element array of highp 4-component vector of float) 0:? 'r' (layout( location=10) in 4-element array of structure{ global highp 4-component vector of float v}) 0:? 'pos' ( smooth out highp 4-component vector of float) 0:? 'color' ( smooth out highp 3-component vector of float) 0:? 'badm4' (layout( column_major shared) uniform highp 4X4 matrix of float) 0:? 'tblock' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform highp 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform highp 3X3 matrix of float N1, layout( row_major std140 offset=176) centroid uniform highp float badf, layout( row_major std140 offset=180) uniform highp float badg, layout( row_major std140 offset=184) uniform highp float bad1, layout( row_major shared offset=188) uniform highp float bad2, layout( row_major packed offset=192) uniform highp float bad3}) 0:? 'anon@0' (layout( row_major shared) uniform block{layout( row_major shared) uniform bool b, layout( row_major shared) uniform highp 4X4 matrix of float t2m}) 0:? 'anon@2' ( out block{ out highp float f}) 0:? 'badoutA' (layout( location=10) smooth out highp 4-component vector of float) 0:? 'compute_only' ( shared highp 4-component vector of float) 0:? 'aoeuntaoeu' (layout( packed) uniform highp float) 0:? 'cd' (layout( location=40) in highp float) 0:? 'ce' (layout( location=37) in highp 4X3 matrix of float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 300 ERROR: node is still EOpNull! 0:44 Function Definition: main( ( global void) 0:44 Function Parameters: 0:46 Sequence 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 'pos' ( smooth out highp 4-component vector of float) 0:46 vector-times-matrix ( temp highp 4-component vector of float) 0:46 'p' (layout( location=3) in highp 4-component vector of float) 0:46 add ( temp highp 4X4 matrix of float) 0:46 add ( temp highp 4X4 matrix of float) 0:46 add ( temp highp 4X4 matrix of float) 0:46 add ( temp highp 4X4 matrix of float) 0:46 M1: direct index for structure (layout( row_major std140 offset=0) uniform highp 4X4 matrix of float) 0:46 'tblock' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform highp 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform highp 3X3 matrix of float N1, layout( row_major std140 offset=176) centroid uniform highp float badf, layout( row_major std140 offset=180) uniform highp float badg, layout( row_major std140 offset=184) uniform highp float bad1, layout( row_major shared offset=188) uniform highp float bad2, layout( row_major packed offset=192) uniform highp float bad3}) 0:46 Constant: 0:46 0 (const int) 0:46 M2: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float) 0:46 'tblock' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform highp 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform highp 3X3 matrix of float N1, layout( row_major std140 offset=176) centroid uniform highp float badf, layout( row_major std140 offset=180) uniform highp float badg, layout( row_major std140 offset=184) uniform highp float bad1, layout( row_major shared offset=188) uniform highp float bad2, layout( row_major packed offset=192) uniform highp float bad3}) 0:46 Constant: 0:46 1 (const int) 0:46 M4: direct index for structure (layout( row_major shared) uniform highp 4X4 matrix of float) 0:46 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp 4X4 matrix of float M3, layout( row_major shared) uniform highp 4X4 matrix of float M4, layout( column_major shared) uniform highp 3X3 matrix of float N2, layout( column_major shared) uniform highp int b}) 0:46 Constant: 0:46 1 (const uint) 0:46 M3: direct index for structure (layout( column_major shared) uniform highp 4X4 matrix of float) 0:46 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp 4X4 matrix of float M3, layout( row_major shared) uniform highp 4X4 matrix of float M4, layout( column_major shared) uniform highp 3X3 matrix of float N2, layout( column_major shared) uniform highp int b}) 0:46 Constant: 0:46 0 (const uint) 0:46 t2m: direct index for structure (layout( row_major shared) uniform highp 4X4 matrix of float) 0:46 'anon@0' (layout( row_major shared) uniform block{layout( row_major shared) uniform bool b, layout( row_major shared) uniform highp 4X4 matrix of float t2m}) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp highp 3-component vector of float) 0:47 'color' ( smooth out highp 3-component vector of float) 0:47 vector-times-matrix ( temp highp 3-component vector of float) 0:47 'c' (layout( location=7) in highp 3-component vector of float) 0:47 N1: direct index for structure (layout( row_major std140 offset=128) uniform highp 3X3 matrix of float) 0:47 'tblock' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform highp 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform highp 3X3 matrix of float N1, layout( row_major std140 offset=176) centroid uniform highp float badf, layout( row_major std140 offset=180) uniform highp float badg, layout( row_major std140 offset=184) uniform highp float bad1, layout( row_major shared offset=188) uniform highp float bad2, layout( row_major packed offset=192) uniform highp float bad3}) 0:47 Constant: 0:47 2 (const int) 0:? Linker Objects 0:? 'c' (layout( location=7) in highp 3-component vector of float) 0:? 'p' (layout( location=3) in highp 4-component vector of float) 0:? 'q' (layout( location=9) in 4-element array of highp 4-component vector of float) 0:? 'r' (layout( location=10) in 4-element array of structure{ global highp 4-component vector of float v}) 0:? 'pos' ( smooth out highp 4-component vector of float) 0:? 'color' ( smooth out highp 3-component vector of float) 0:? 'badm4' (layout( column_major shared) uniform highp 4X4 matrix of float) 0:? 'tblock' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform highp 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform highp 3X3 matrix of float N1, layout( row_major std140 offset=176) centroid uniform highp float badf, layout( row_major std140 offset=180) uniform highp float badg, layout( row_major std140 offset=184) uniform highp float bad1, layout( row_major shared offset=188) uniform highp float bad2, layout( row_major packed offset=192) uniform highp float bad3}) 0:? 'anon@0' (layout( row_major shared) uniform block{layout( row_major shared) uniform bool b, layout( row_major shared) uniform highp 4X4 matrix of float t2m}) 0:? 'anon@2' ( out block{ out highp float f}) 0:? 'badoutA' (layout( location=10) smooth out highp 4-component vector of float) 0:? 'compute_only' ( shared highp 4-component vector of float) 0:? 'aoeuntaoeu' (layout( packed) uniform highp float) 0:? 'cd' (layout( location=40) in highp float) 0:? 'ce' (layout( location=37) in highp 4X3 matrix of float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/300link.frag.out000066400000000000000000000012011506534232700212700ustar00rootroot00000000000000300link.frag Shader version: 300 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:? Linker Objects 0:? 'color1' ( out highp 4-component vector of float) 0:? 'color2' ( out highp 4-component vector of float) Linked fragment stage: ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers Shader version: 300 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:? Linker Objects 0:? 'color1' ( out highp 4-component vector of float) 0:? 'color2' ( out highp 4-component vector of float) glslang-16.0.0/Test/baseResults/300link2.frag.out000066400000000000000000000016161506534232700213640ustar00rootroot00000000000000300link2.frag Shader version: 300 0:? Sequence 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:? Linker Objects 0:? 'pos' ( smooth in mediump 4-component vector of float) 0:? 'c' (layout( location=1) out mediump 4-component vector of float) 0:? 'p' (layout( location=5) out mediump 4-component vector of float) 0:? 'q' (layout( location=9) out 2-element array of mediump 4-component vector of float) Linked fragment stage: Shader version: 300 0:? Sequence 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:? Linker Objects 0:? 'pos' ( smooth in mediump 4-component vector of float) 0:? 'c' (layout( location=1) out mediump 4-component vector of float) 0:? 'p' (layout( location=5) out mediump 4-component vector of float) 0:? 'q' (layout( location=9) out 2-element array of mediump 4-component vector of float) glslang-16.0.0/Test/baseResults/300link3.frag.out000066400000000000000000000006421506534232700213630ustar00rootroot00000000000000300link3.frag Shader version: 300 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:? Linker Objects 0:? 'color1' ( out highp 4-component vector of float) Linked fragment stage: Shader version: 300 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:? Linker Objects 0:? 'color1' ( out highp 4-component vector of float) glslang-16.0.0/Test/baseResults/300operations.frag.out000066400000000000000000000662321506534232700225350ustar00rootroot00000000000000300operations.frag ERROR: 0:11: 'float' : type requires declaration of default precision qualifier ERROR: 0:30: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}' and a right operand of type 'layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}' (or there is no acceptable conversion) ERROR: 0:31: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' global structure{ global mediump int i}' and a right operand of type ' global structure{ global mediump int i}' (or there is no acceptable conversion) ERROR: 0:32: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump float' (or there is no acceptable conversion) ERROR: 0:33: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp mediump uint' and a right operand of type ' temp mediump float' (or there is no acceptable conversion) ERROR: 0:34: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp mediump uint' and a right operand of type ' temp mediump int' (or there is no acceptable conversion) ERROR: 0:35: 'assign' : cannot convert from ' temp mediump 4-component vector of int' to ' temp mediump 3-component vector of int' ERROR: 0:36: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp mediump 4-component vector of int' and a right operand of type ' temp mediump 4-component vector of uint' (or there is no acceptable conversion) ERROR: 0:37: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump 3-component vector of float' (or there is no acceptable conversion) ERROR: 0:38: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp mediump 3-component vector of int' and a right operand of type ' temp mediump 3-component vector of uint' (or there is no acceptable conversion) ERROR: 0:39: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' global 5-element array of mediump float' and a right operand of type ' global 5-element array of mediump float' (or there is no acceptable conversion) ERROR: 0:40: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp bool' and a right operand of type ' temp bool' (or there is no acceptable conversion) ERROR: 0:42: '%' : wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump float' and a right operand of type ' temp mediump float' (or there is no acceptable conversion) ERROR: 0:43: '%' : wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump float' (or there is no acceptable conversion) ERROR: 0:44: '%' : wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump float' and a right operand of type ' temp mediump uint' (or there is no acceptable conversion) ERROR: 0:45: '++' : l-value required "instanceName" (can't modify a uniform) ERROR: 0:45: '++' : wrong operand type no operation '++' exists that takes an operand of type layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f} (or there is no acceptable conversion) ERROR: 0:46: '++' : wrong operand type no operation '++' exists that takes an operand of type global structure{ global mediump int i} (or there is no acceptable conversion) ERROR: 0:47: '--' : wrong operand type no operation '--' exists that takes an operand of type global 5-element array of mediump float (or there is no acceptable conversion) ERROR: 0:48: '++' : wrong operand type no operation '++' exists that takes an operand of type temp 3-component vector of bool (or there is no acceptable conversion) ERROR: 0:50: '<' : wrong operand types: no operation '<' exists that takes a left-hand operand of type ' temp mediump 3-component vector of int' and a right operand of type ' temp mediump 3-component vector of uint' (or there is no acceptable conversion) ERROR: 0:51: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' temp mediump 2X2 matrix of float' and a right operand of type ' temp mediump 2X2 matrix of float' (or there is no acceptable conversion) ERROR: 0:52: '!=' : wrong operand types: no operation '!=' exists that takes a left-hand operand of type ' temp mediump 2X2 matrix of float' and a right operand of type ' temp mediump 4X4 matrix of float' (or there is no acceptable conversion) ERROR: 0:53: '>=' : wrong operand types: no operation '>=' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump uint' (or there is no acceptable conversion) ERROR: 0:54: '<=' : wrong operand types: no operation '<=' exists that takes a left-hand operand of type ' global 5-element array of mediump float' and a right operand of type ' global 5-element array of mediump float' (or there is no acceptable conversion) ERROR: 0:55: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' temp bool' and a right operand of type ' temp bool' (or there is no acceptable conversion) ERROR: 0:57: '&&' : wrong operand types: no operation '&&' exists that takes a left-hand operand of type ' temp bool' and a right operand of type ' temp 3-component vector of bool' (or there is no acceptable conversion) ERROR: 0:58: '^^' : wrong operand types: no operation '^^' exists that takes a left-hand operand of type ' temp 3-component vector of bool' and a right operand of type ' temp 3-component vector of bool' (or there is no acceptable conversion) ERROR: 0:59: '||' : wrong operand types: no operation '||' exists that takes a left-hand operand of type ' temp 3-component vector of bool' and a right operand of type ' temp bool' (or there is no acceptable conversion) ERROR: 0:60: '&&' : wrong operand types: no operation '&&' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump int' (or there is no acceptable conversion) ERROR: 0:61: '||' : wrong operand types: no operation '||' exists that takes a left-hand operand of type ' temp mediump uint' and a right operand of type ' temp mediump uint' (or there is no acceptable conversion) ERROR: 0:62: '^^' : wrong operand types: no operation '^^' exists that takes a left-hand operand of type ' temp mediump 2X2 matrix of float' and a right operand of type ' temp mediump 2X2 matrix of float' (or there is no acceptable conversion) ERROR: 0:64: '!' : wrong operand type no operation '!' exists that takes an operand of type temp mediump uint (or there is no acceptable conversion) ERROR: 0:65: '!' : wrong operand type no operation '!' exists that takes an operand of type temp mediump int (or there is no acceptable conversion) ERROR: 0:66: '!' : wrong operand type no operation '!' exists that takes an operand of type temp mediump 2X2 matrix of float (or there is no acceptable conversion) ERROR: 0:67: '!' : wrong operand type no operation '!' exists that takes an operand of type temp mediump 3-component vector of float (or there is no acceptable conversion) ERROR: 0:68: '!' : wrong operand type no operation '!' exists that takes an operand of type global 5-element array of mediump float (or there is no acceptable conversion) ERROR: 0:70: '~' : wrong operand type no operation '~' exists that takes an operand of type temp mediump float (or there is no acceptable conversion) ERROR: 0:71: '~' : wrong operand type no operation '~' exists that takes an operand of type temp mediump 4X4 matrix of float (or there is no acceptable conversion) ERROR: 0:72: '~' : wrong operand type no operation '~' exists that takes an operand of type temp mediump 3-component vector of float (or there is no acceptable conversion) ERROR: 0:73: '~' : wrong operand type no operation '~' exists that takes an operand of type global 5-element array of mediump float (or there is no acceptable conversion) ERROR: 0:74: '~' : wrong operand type no operation '~' exists that takes an operand of type layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f} (or there is no acceptable conversion) ERROR: 0:76: '<<' : wrong operand types: no operation '<<' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump 3-component vector of int' (or there is no acceptable conversion) ERROR: 0:77: '<<' : wrong operand types: no operation '<<' exists that takes a left-hand operand of type ' temp mediump uint' and a right operand of type ' temp mediump 3-component vector of uint' (or there is no acceptable conversion) ERROR: 0:78: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump float' (or there is no acceptable conversion) ERROR: 0:79: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type ' temp mediump float' and a right operand of type ' temp mediump int' (or there is no acceptable conversion) ERROR: 0:80: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type ' temp mediump 4X4 matrix of float' and a right operand of type ' temp mediump int' (or there is no acceptable conversion) ERROR: 0:81: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type ' global 5-element array of mediump float' and a right operand of type ' temp mediump uint' (or there is no acceptable conversion) ERROR: 0:82: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type ' temp mediump 3-component vector of int' and a right operand of type ' temp mediump 4-component vector of int' (or there is no acceptable conversion) ERROR: 0:84: '&' : wrong operand types: no operation '&' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump uint' (or there is no acceptable conversion) ERROR: 0:85: 'assign' : cannot convert from ' temp mediump 3-component vector of uint' to ' temp mediump uint' ERROR: 0:86: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type ' temp mediump int' and a right operand of type ' temp mediump 3-component vector of uint' (or there is no acceptable conversion) ERROR: 0:87: '&' : wrong operand types: no operation '&' exists that takes a left-hand operand of type ' temp mediump uint' and a right operand of type ' temp mediump float' (or there is no acceptable conversion) ERROR: 0:88: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type ' temp mediump 2X2 matrix of float' and a right operand of type ' temp mediump 2X2 matrix of float' (or there is no acceptable conversion) ERROR: 0:89: '^' : wrong operand types: no operation '^' exists that takes a left-hand operand of type ' global structure{ global mediump int i}' and a right operand of type ' global structure{ global mediump int i}' (or there is no acceptable conversion) ERROR: 0:90: 'assign' : l-value required ERROR: 56 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:? Sequence 0:30 'instanceName' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}) 0:31 's' ( global structure{ global mediump int i}) 0:32 'i' ( temp mediump int) 0:33 'u' ( temp mediump uint) 0:34 'u' ( temp mediump uint) 0:35 'iv3' ( temp mediump 3-component vector of int) 0:36 'iv4' ( temp mediump 4-component vector of int) 0:37 'i' ( temp mediump int) 0:38 'iv3' ( temp mediump 3-component vector of int) 0:39 'a' ( global 5-element array of mediump float) 0:40 'b' ( temp bool) 0:42 'f' ( temp mediump float) 0:43 'i' ( temp mediump int) 0:44 'f' ( temp mediump float) 0:45 'instanceName' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}) 0:46 's' ( global structure{ global mediump int i}) 0:47 'a' ( global 5-element array of mediump float) 0:48 'b3' ( temp 3-component vector of bool) 0:50 Constant: 0:50 false (const bool) 0:51 Constant: 0:51 false (const bool) 0:52 Constant: 0:52 false (const bool) 0:53 Constant: 0:53 false (const bool) 0:54 Constant: 0:54 false (const bool) 0:55 Constant: 0:55 false (const bool) 0:57 Constant: 0:57 false (const bool) 0:58 Constant: 0:58 false (const bool) 0:59 Constant: 0:59 false (const bool) 0:60 Constant: 0:60 false (const bool) 0:61 Constant: 0:61 false (const bool) 0:62 Constant: 0:62 false (const bool) 0:64 'u' ( temp mediump uint) 0:65 'i' ( temp mediump int) 0:66 'm2' ( temp mediump 2X2 matrix of float) 0:67 'v3' ( temp mediump 3-component vector of float) 0:68 'a' ( global 5-element array of mediump float) 0:70 'f' ( temp mediump float) 0:71 'm4' ( temp mediump 4X4 matrix of float) 0:72 'v3' ( temp mediump 3-component vector of float) 0:73 'a' ( global 5-element array of mediump float) 0:74 'instanceName' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}) 0:76 'i' ( temp mediump int) 0:77 'u' ( temp mediump uint) 0:78 'i' ( temp mediump int) 0:79 'f' ( temp mediump float) 0:80 'm4' ( temp mediump 4X4 matrix of float) 0:81 'a' ( global 5-element array of mediump float) 0:82 'iv3' ( temp mediump 3-component vector of int) 0:84 'i' ( temp mediump int) 0:85 'u' ( temp mediump uint) 0:86 'i' ( temp mediump int) 0:87 'u' ( temp mediump uint) 0:88 'm2' ( temp mediump 2X2 matrix of float) 0:89 's' ( global structure{ global mediump int i}) 0:90 move second child to first child ( temp mediump float) 0:90 move second child to first child ( temp mediump float) 0:90 'f' ( temp mediump float) 0:90 'f' ( temp mediump float) 0:90 'f' ( temp mediump float) 0:93 vector-scale ( temp mediump 4-component vector of float) 0:93 'f' ( temp mediump float) 0:93 'v4' ( temp mediump 4-component vector of float) 0:94 add ( temp mediump uint) 0:94 'u' ( temp mediump uint) 0:94 'u' ( temp mediump uint) 0:95 divide ( temp mediump 4-component vector of uint) 0:95 'uv4' ( temp mediump 4-component vector of uint) 0:95 'u' ( temp mediump uint) 0:96 subtract second child into first child ( temp mediump 3-component vector of int) 0:96 'iv3' ( temp mediump 3-component vector of int) 0:96 'iv3' ( temp mediump 3-component vector of int) 0:98 mod second child into first child ( temp mediump int) 0:98 'i' ( temp mediump int) 0:98 Constant: 0:98 3 (const int) 0:99 mod ( temp mediump 3-component vector of uint) 0:99 'uv3' ( temp mediump 3-component vector of uint) 0:99 Constant: 0:99 4 (const uint) 0:100 Pre-Decrement ( temp mediump 2X2 matrix of float) 0:100 'm2' ( temp mediump 2X2 matrix of float) 0:101 Post-Increment ( temp mediump 4-component vector of int) 0:101 'iv4' ( temp mediump 4-component vector of int) 0:103 Compare Not Equal ( temp bool) 0:103 'm4' ( temp mediump 4X4 matrix of float) 0:103 'm4' ( temp mediump 4X4 matrix of float) 0:104 Compare Equal ( temp bool) 0:104 'm2' ( temp mediump 2X2 matrix of float) 0:104 'm2' ( temp mediump 2X2 matrix of float) 0:105 Compare Less Than or Equal ( temp bool) 0:105 'i' ( temp mediump int) 0:105 'i' ( temp mediump int) 0:106 Compare Equal ( temp bool) 0:106 'a' ( global 5-element array of mediump float) 0:106 'a' ( global 5-element array of mediump float) 0:107 Compare Not Equal ( temp bool) 0:107 's' ( global structure{ global mediump int i}) 0:107 's' ( global structure{ global mediump int i}) 0:109 logical-and ( temp bool) 0:109 'b' ( temp bool) 0:109 'b' ( temp bool) 0:110 logical-or ( temp bool) 0:110 'b' ( temp bool) 0:110 'b' ( temp bool) 0:111 logical-xor ( temp bool) 0:111 'b' ( temp bool) 0:111 'b' ( temp bool) 0:113 Comma ( temp mediump 3-component vector of uint) 0:113 Negate conditional ( temp bool) 0:113 'b' ( temp bool) 0:113 'uv3' ( temp mediump 3-component vector of uint) 0:115 Bitwise not ( temp mediump int) 0:115 'i' ( temp mediump int) 0:116 Bitwise not ( temp mediump uint) 0:116 'u' ( temp mediump uint) 0:117 Bitwise not ( temp mediump 3-component vector of uint) 0:117 'uv3' ( temp mediump 3-component vector of uint) 0:118 Bitwise not ( temp mediump 3-component vector of int) 0:118 'iv3' ( temp mediump 3-component vector of int) 0:120 left shift second child into first child ( temp mediump 3-component vector of uint) 0:120 'uv3' ( temp mediump 3-component vector of uint) 0:120 'i' ( temp mediump int) 0:121 right-shift ( temp mediump int) 0:121 'i' ( temp mediump int) 0:121 'i' ( temp mediump int) 0:122 left-shift ( temp mediump uint) 0:122 'u' ( temp mediump uint) 0:122 'u' ( temp mediump uint) 0:123 right-shift ( temp mediump 3-component vector of int) 0:123 'iv3' ( temp mediump 3-component vector of int) 0:123 'iv3' ( temp mediump 3-component vector of int) 0:125 bitwise and ( temp mediump int) 0:125 'i' ( temp mediump int) 0:125 'i' ( temp mediump int) 0:126 inclusive-or ( temp mediump uint) 0:126 'u' ( temp mediump uint) 0:126 'u' ( temp mediump uint) 0:127 exclusive-or ( temp mediump 3-component vector of int) 0:127 'iv3' ( temp mediump 3-component vector of int) 0:127 'iv3' ( temp mediump 3-component vector of int) 0:128 bitwise and ( temp mediump 3-component vector of uint) 0:128 'u' ( temp mediump uint) 0:128 'uv3' ( temp mediump 3-component vector of uint) 0:129 inclusive-or ( temp mediump 3-component vector of uint) 0:129 'uv3' ( temp mediump 3-component vector of uint) 0:129 'u' ( temp mediump uint) 0:130 and second child into first child ( temp mediump 3-component vector of uint) 0:130 'uv3' ( temp mediump 3-component vector of uint) 0:130 'u' ( temp mediump uint) 0:132 direct index ( temp mediump int) 0:132 'arr' ( temp 2-element array of mediump int) 0:132 Constant: 0:132 1 (const int) 0:134 direct index ( temp mediump int) 0:134 'arr2' ( temp 3-element array of mediump int) 0:134 Constant: 0:134 2 (const int) 0:? Linker Objects 0:? 'instanceName' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}) 0:? 's' ( global structure{ global mediump int i}) 0:? 'a' ( global 5-element array of mediump float) Linked fragment stage: Shader version: 300 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:? Sequence 0:30 'instanceName' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}) 0:31 's' ( global structure{ global mediump int i}) 0:32 'i' ( temp mediump int) 0:33 'u' ( temp mediump uint) 0:34 'u' ( temp mediump uint) 0:35 'iv3' ( temp mediump 3-component vector of int) 0:36 'iv4' ( temp mediump 4-component vector of int) 0:37 'i' ( temp mediump int) 0:38 'iv3' ( temp mediump 3-component vector of int) 0:39 'a' ( global 5-element array of mediump float) 0:40 'b' ( temp bool) 0:42 'f' ( temp mediump float) 0:43 'i' ( temp mediump int) 0:44 'f' ( temp mediump float) 0:45 'instanceName' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}) 0:46 's' ( global structure{ global mediump int i}) 0:47 'a' ( global 5-element array of mediump float) 0:48 'b3' ( temp 3-component vector of bool) 0:50 Constant: 0:50 false (const bool) 0:51 Constant: 0:51 false (const bool) 0:52 Constant: 0:52 false (const bool) 0:53 Constant: 0:53 false (const bool) 0:54 Constant: 0:54 false (const bool) 0:55 Constant: 0:55 false (const bool) 0:57 Constant: 0:57 false (const bool) 0:58 Constant: 0:58 false (const bool) 0:59 Constant: 0:59 false (const bool) 0:60 Constant: 0:60 false (const bool) 0:61 Constant: 0:61 false (const bool) 0:62 Constant: 0:62 false (const bool) 0:64 'u' ( temp mediump uint) 0:65 'i' ( temp mediump int) 0:66 'm2' ( temp mediump 2X2 matrix of float) 0:67 'v3' ( temp mediump 3-component vector of float) 0:68 'a' ( global 5-element array of mediump float) 0:70 'f' ( temp mediump float) 0:71 'm4' ( temp mediump 4X4 matrix of float) 0:72 'v3' ( temp mediump 3-component vector of float) 0:73 'a' ( global 5-element array of mediump float) 0:74 'instanceName' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}) 0:76 'i' ( temp mediump int) 0:77 'u' ( temp mediump uint) 0:78 'i' ( temp mediump int) 0:79 'f' ( temp mediump float) 0:80 'm4' ( temp mediump 4X4 matrix of float) 0:81 'a' ( global 5-element array of mediump float) 0:82 'iv3' ( temp mediump 3-component vector of int) 0:84 'i' ( temp mediump int) 0:85 'u' ( temp mediump uint) 0:86 'i' ( temp mediump int) 0:87 'u' ( temp mediump uint) 0:88 'm2' ( temp mediump 2X2 matrix of float) 0:89 's' ( global structure{ global mediump int i}) 0:90 move second child to first child ( temp mediump float) 0:90 move second child to first child ( temp mediump float) 0:90 'f' ( temp mediump float) 0:90 'f' ( temp mediump float) 0:90 'f' ( temp mediump float) 0:93 vector-scale ( temp mediump 4-component vector of float) 0:93 'f' ( temp mediump float) 0:93 'v4' ( temp mediump 4-component vector of float) 0:94 add ( temp mediump uint) 0:94 'u' ( temp mediump uint) 0:94 'u' ( temp mediump uint) 0:95 divide ( temp mediump 4-component vector of uint) 0:95 'uv4' ( temp mediump 4-component vector of uint) 0:95 'u' ( temp mediump uint) 0:96 subtract second child into first child ( temp mediump 3-component vector of int) 0:96 'iv3' ( temp mediump 3-component vector of int) 0:96 'iv3' ( temp mediump 3-component vector of int) 0:98 mod second child into first child ( temp mediump int) 0:98 'i' ( temp mediump int) 0:98 Constant: 0:98 3 (const int) 0:99 mod ( temp mediump 3-component vector of uint) 0:99 'uv3' ( temp mediump 3-component vector of uint) 0:99 Constant: 0:99 4 (const uint) 0:100 Pre-Decrement ( temp mediump 2X2 matrix of float) 0:100 'm2' ( temp mediump 2X2 matrix of float) 0:101 Post-Increment ( temp mediump 4-component vector of int) 0:101 'iv4' ( temp mediump 4-component vector of int) 0:103 Compare Not Equal ( temp bool) 0:103 'm4' ( temp mediump 4X4 matrix of float) 0:103 'm4' ( temp mediump 4X4 matrix of float) 0:104 Compare Equal ( temp bool) 0:104 'm2' ( temp mediump 2X2 matrix of float) 0:104 'm2' ( temp mediump 2X2 matrix of float) 0:105 Compare Less Than or Equal ( temp bool) 0:105 'i' ( temp mediump int) 0:105 'i' ( temp mediump int) 0:106 Compare Equal ( temp bool) 0:106 'a' ( global 5-element array of mediump float) 0:106 'a' ( global 5-element array of mediump float) 0:107 Compare Not Equal ( temp bool) 0:107 's' ( global structure{ global mediump int i}) 0:107 's' ( global structure{ global mediump int i}) 0:109 logical-and ( temp bool) 0:109 'b' ( temp bool) 0:109 'b' ( temp bool) 0:110 logical-or ( temp bool) 0:110 'b' ( temp bool) 0:110 'b' ( temp bool) 0:111 logical-xor ( temp bool) 0:111 'b' ( temp bool) 0:111 'b' ( temp bool) 0:113 Comma ( temp mediump 3-component vector of uint) 0:113 Negate conditional ( temp bool) 0:113 'b' ( temp bool) 0:113 'uv3' ( temp mediump 3-component vector of uint) 0:115 Bitwise not ( temp mediump int) 0:115 'i' ( temp mediump int) 0:116 Bitwise not ( temp mediump uint) 0:116 'u' ( temp mediump uint) 0:117 Bitwise not ( temp mediump 3-component vector of uint) 0:117 'uv3' ( temp mediump 3-component vector of uint) 0:118 Bitwise not ( temp mediump 3-component vector of int) 0:118 'iv3' ( temp mediump 3-component vector of int) 0:120 left shift second child into first child ( temp mediump 3-component vector of uint) 0:120 'uv3' ( temp mediump 3-component vector of uint) 0:120 'i' ( temp mediump int) 0:121 right-shift ( temp mediump int) 0:121 'i' ( temp mediump int) 0:121 'i' ( temp mediump int) 0:122 left-shift ( temp mediump uint) 0:122 'u' ( temp mediump uint) 0:122 'u' ( temp mediump uint) 0:123 right-shift ( temp mediump 3-component vector of int) 0:123 'iv3' ( temp mediump 3-component vector of int) 0:123 'iv3' ( temp mediump 3-component vector of int) 0:125 bitwise and ( temp mediump int) 0:125 'i' ( temp mediump int) 0:125 'i' ( temp mediump int) 0:126 inclusive-or ( temp mediump uint) 0:126 'u' ( temp mediump uint) 0:126 'u' ( temp mediump uint) 0:127 exclusive-or ( temp mediump 3-component vector of int) 0:127 'iv3' ( temp mediump 3-component vector of int) 0:127 'iv3' ( temp mediump 3-component vector of int) 0:128 bitwise and ( temp mediump 3-component vector of uint) 0:128 'u' ( temp mediump uint) 0:128 'uv3' ( temp mediump 3-component vector of uint) 0:129 inclusive-or ( temp mediump 3-component vector of uint) 0:129 'uv3' ( temp mediump 3-component vector of uint) 0:129 'u' ( temp mediump uint) 0:130 and second child into first child ( temp mediump 3-component vector of uint) 0:130 'uv3' ( temp mediump 3-component vector of uint) 0:130 'u' ( temp mediump uint) 0:132 direct index ( temp mediump int) 0:132 'arr' ( temp 2-element array of mediump int) 0:132 Constant: 0:132 1 (const int) 0:134 direct index ( temp mediump int) 0:134 'arr2' ( temp 3-element array of mediump int) 0:134 Constant: 0:134 2 (const int) 0:? Linker Objects 0:? 'instanceName' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump float f}) 0:? 's' ( global structure{ global mediump int i}) 0:? 'a' ( global 5-element array of mediump float) glslang-16.0.0/Test/baseResults/300samplerExternal.frag.out000066400000000000000000000155251506534232700235170ustar00rootroot00000000000000300samplerExternal.frag ERROR: 0:12: 'texture2D' : no matching overloaded function found ERROR: 0:13: 'texture2D' : no matching overloaded function found ERROR: 0:14: 'texture2D' : no matching overloaded function found ERROR: 0:15: 'texture2DProj' : no matching overloaded function found ERROR: 0:16: 'texture2DProj' : no matching overloaded function found ERROR: 0:29: 'texture3D' : no matching overloaded function found ERROR: 0:30: 'texture2DProjLod' : no matching overloaded function found ERROR: 0:31: 'texture' : no matching overloaded function found ERROR: 0:32: 'textureProjLod' : no matching overloaded function found ERROR: 0:38: 'samplerExternalOES' : required extension not requested: GL_OES_EGL_image_external_essl3 ERROR: 0:41: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 11 compilation errors. No code generated. Shader version: 300 Requested GL_OES_EGL_image_external Requested GL_OES_EGL_image_external_essl3 ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Constant: 0:12 0.000000 0:13 Constant: 0:13 0.000000 0:14 Constant: 0:14 0.000000 0:15 Constant: 0:15 0.000000 0:16 Constant: 0:16 0.000000 0:18 Sequence 0:18 move second child to first child ( temp mediump int) 0:18 'lod' ( temp mediump int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp highp float) 0:19 'bias' ( temp highp float) 0:19 Constant: 0:19 0.010000 0:20 textureSize ( global highp 2-component vector of int, operation at mediump) 0:20 'sExt' ( uniform lowp samplerExternalOES) 0:20 'lod' ( temp mediump int) 0:21 texture ( global lowp 4-component vector of float) 0:21 'sExt' ( uniform lowp samplerExternalOES) 0:21 Constant: 0:21 0.200000 0:21 0.200000 0:22 texture ( global lowp 4-component vector of float, operation at highp) 0:22 'sExt' ( uniform lowp samplerExternalOES) 0:22 Constant: 0:22 0.200000 0:22 0.200000 0:22 'bias' ( temp highp float) 0:23 textureProj ( global lowp 4-component vector of float) 0:23 'sExt' ( uniform lowp samplerExternalOES) 0:23 Constant: 0:23 0.200000 0:23 0.200000 0:23 0.200000 0:24 textureProj ( global lowp 4-component vector of float, operation at highp) 0:24 'sExt' ( uniform lowp samplerExternalOES) 0:24 Constant: 0:24 0.200000 0:24 0.200000 0:24 0.200000 0:24 'bias' ( temp highp float) 0:25 textureProj ( global lowp 4-component vector of float) 0:25 'sExt' ( uniform lowp samplerExternalOES) 0:25 Constant: 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:26 textureProj ( global lowp 4-component vector of float, operation at highp) 0:26 'sExt' ( uniform lowp samplerExternalOES) 0:26 Constant: 0:26 0.200000 0:26 0.200000 0:26 0.200000 0:26 0.200000 0:26 'bias' ( temp highp float) 0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump) 0:27 'sExt' ( uniform lowp samplerExternalOES) 0:27 Constant: 0:27 4 (const int) 0:27 4 (const int) 0:27 'lod' ( temp mediump int) 0:29 Constant: 0:29 0.000000 0:30 Constant: 0:30 0.000000 0:31 Constant: 0:31 0.000000 0:32 Constant: 0:32 0.000000 0:? Linker Objects 0:? 'sExt' ( uniform lowp samplerExternalOES) 0:? 'mediumExt' ( uniform mediump samplerExternalOES) 0:? 'highExt' ( uniform highp samplerExternalOES) 0:? 'badExt' ( uniform mediump samplerExternalOES) Linked fragment stage: Shader version: 300 Requested GL_OES_EGL_image_external Requested GL_OES_EGL_image_external_essl3 ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Constant: 0:12 0.000000 0:13 Constant: 0:13 0.000000 0:14 Constant: 0:14 0.000000 0:15 Constant: 0:15 0.000000 0:16 Constant: 0:16 0.000000 0:18 Sequence 0:18 move second child to first child ( temp mediump int) 0:18 'lod' ( temp mediump int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp highp float) 0:19 'bias' ( temp highp float) 0:19 Constant: 0:19 0.010000 0:20 textureSize ( global highp 2-component vector of int, operation at mediump) 0:20 'sExt' ( uniform lowp samplerExternalOES) 0:20 'lod' ( temp mediump int) 0:21 texture ( global lowp 4-component vector of float) 0:21 'sExt' ( uniform lowp samplerExternalOES) 0:21 Constant: 0:21 0.200000 0:21 0.200000 0:22 texture ( global lowp 4-component vector of float, operation at highp) 0:22 'sExt' ( uniform lowp samplerExternalOES) 0:22 Constant: 0:22 0.200000 0:22 0.200000 0:22 'bias' ( temp highp float) 0:23 textureProj ( global lowp 4-component vector of float) 0:23 'sExt' ( uniform lowp samplerExternalOES) 0:23 Constant: 0:23 0.200000 0:23 0.200000 0:23 0.200000 0:24 textureProj ( global lowp 4-component vector of float, operation at highp) 0:24 'sExt' ( uniform lowp samplerExternalOES) 0:24 Constant: 0:24 0.200000 0:24 0.200000 0:24 0.200000 0:24 'bias' ( temp highp float) 0:25 textureProj ( global lowp 4-component vector of float) 0:25 'sExt' ( uniform lowp samplerExternalOES) 0:25 Constant: 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:26 textureProj ( global lowp 4-component vector of float, operation at highp) 0:26 'sExt' ( uniform lowp samplerExternalOES) 0:26 Constant: 0:26 0.200000 0:26 0.200000 0:26 0.200000 0:26 0.200000 0:26 'bias' ( temp highp float) 0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump) 0:27 'sExt' ( uniform lowp samplerExternalOES) 0:27 Constant: 0:27 4 (const int) 0:27 4 (const int) 0:27 'lod' ( temp mediump int) 0:29 Constant: 0:29 0.000000 0:30 Constant: 0:30 0.000000 0:31 Constant: 0:31 0.000000 0:32 Constant: 0:32 0.000000 0:? Linker Objects 0:? 'sExt' ( uniform lowp samplerExternalOES) 0:? 'mediumExt' ( uniform mediump samplerExternalOES) 0:? 'highExt' ( uniform highp samplerExternalOES) 0:? 'badExt' ( uniform mediump samplerExternalOES) glslang-16.0.0/Test/baseResults/300samplerExternalYUV.frag.out000066400000000000000000000152721506534232700241220ustar00rootroot00000000000000300samplerExternalYUV.frag ERROR: 0:12: 'texture2D' : no matching overloaded function found ERROR: 0:13: 'texture2D' : no matching overloaded function found ERROR: 0:14: 'texture2D' : no matching overloaded function found ERROR: 0:15: 'texture2DProj' : no matching overloaded function found ERROR: 0:16: 'texture2DProj' : no matching overloaded function found ERROR: 0:29: 'texture3D' : no matching overloaded function found ERROR: 0:30: 'texture2DProjLod' : no matching overloaded function found ERROR: 0:31: 'texture' : no matching overloaded function found ERROR: 0:32: 'textureProjLod' : no matching overloaded function found ERROR: 0:37: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 10 compilation errors. No code generated. Shader version: 300 Requested GL_EXT_YUV_target ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Constant: 0:12 0.000000 0:13 Constant: 0:13 0.000000 0:14 Constant: 0:14 0.000000 0:15 Constant: 0:15 0.000000 0:16 Constant: 0:16 0.000000 0:18 Sequence 0:18 move second child to first child ( temp mediump int) 0:18 'lod' ( temp mediump int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp highp float) 0:19 'bias' ( temp highp float) 0:19 Constant: 0:19 0.010000 0:20 textureSize ( global highp 2-component vector of int, operation at mediump) 0:20 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:20 'lod' ( temp mediump int) 0:21 texture ( global lowp 4-component vector of float) 0:21 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:21 Constant: 0:21 0.200000 0:21 0.200000 0:22 texture ( global lowp 4-component vector of float, operation at highp) 0:22 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:22 Constant: 0:22 0.200000 0:22 0.200000 0:22 'bias' ( temp highp float) 0:23 textureProj ( global lowp 4-component vector of float) 0:23 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:23 Constant: 0:23 0.200000 0:23 0.200000 0:23 0.200000 0:24 textureProj ( global lowp 4-component vector of float, operation at highp) 0:24 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:24 Constant: 0:24 0.200000 0:24 0.200000 0:24 0.200000 0:24 'bias' ( temp highp float) 0:25 textureProj ( global lowp 4-component vector of float) 0:25 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:25 Constant: 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:26 textureProj ( global lowp 4-component vector of float, operation at highp) 0:26 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:26 Constant: 0:26 0.200000 0:26 0.200000 0:26 0.200000 0:26 0.200000 0:26 'bias' ( temp highp float) 0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump) 0:27 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:27 Constant: 0:27 4 (const int) 0:27 4 (const int) 0:27 'lod' ( temp mediump int) 0:29 Constant: 0:29 0.000000 0:30 Constant: 0:30 0.000000 0:31 Constant: 0:31 0.000000 0:32 Constant: 0:32 0.000000 0:? Linker Objects 0:? 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:? 'mediumExt' ( uniform mediump __samplerExternal2DY2YEXT) 0:? 'highExt' ( uniform highp __samplerExternal2DY2YEXT) Linked fragment stage: Shader version: 300 Requested GL_EXT_YUV_target ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Constant: 0:12 0.000000 0:13 Constant: 0:13 0.000000 0:14 Constant: 0:14 0.000000 0:15 Constant: 0:15 0.000000 0:16 Constant: 0:16 0.000000 0:18 Sequence 0:18 move second child to first child ( temp mediump int) 0:18 'lod' ( temp mediump int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp highp float) 0:19 'bias' ( temp highp float) 0:19 Constant: 0:19 0.010000 0:20 textureSize ( global highp 2-component vector of int, operation at mediump) 0:20 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:20 'lod' ( temp mediump int) 0:21 texture ( global lowp 4-component vector of float) 0:21 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:21 Constant: 0:21 0.200000 0:21 0.200000 0:22 texture ( global lowp 4-component vector of float, operation at highp) 0:22 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:22 Constant: 0:22 0.200000 0:22 0.200000 0:22 'bias' ( temp highp float) 0:23 textureProj ( global lowp 4-component vector of float) 0:23 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:23 Constant: 0:23 0.200000 0:23 0.200000 0:23 0.200000 0:24 textureProj ( global lowp 4-component vector of float, operation at highp) 0:24 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:24 Constant: 0:24 0.200000 0:24 0.200000 0:24 0.200000 0:24 'bias' ( temp highp float) 0:25 textureProj ( global lowp 4-component vector of float) 0:25 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:25 Constant: 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:25 0.200000 0:26 textureProj ( global lowp 4-component vector of float, operation at highp) 0:26 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:26 Constant: 0:26 0.200000 0:26 0.200000 0:26 0.200000 0:26 0.200000 0:26 'bias' ( temp highp float) 0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump) 0:27 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:27 Constant: 0:27 4 (const int) 0:27 4 (const int) 0:27 'lod' ( temp mediump int) 0:29 Constant: 0:29 0.000000 0:30 Constant: 0:30 0.000000 0:31 Constant: 0:31 0.000000 0:32 Constant: 0:32 0.000000 0:? Linker Objects 0:? 'sExt' ( uniform lowp __samplerExternal2DY2YEXT) 0:? 'mediumExt' ( uniform mediump __samplerExternal2DY2YEXT) 0:? 'highExt' ( uniform highp __samplerExternal2DY2YEXT) glslang-16.0.0/Test/baseResults/300scope.vert.out000066400000000000000000000210121506534232700215070ustar00rootroot00000000000000300scope.vert ERROR: 0:5: 'a' : redefinition ERROR: 0:17: 'b' : function name is redeclaration of existing name ERROR: 0:20: 'c' : redefinition ERROR: 0:22: 'f' : redefinition ERROR: 0:23: 'tan' : redefinition ERROR: 0:24: 'redefinition of built-in function' : not supported with this profile: es ERROR: 0:24: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 1 ERROR: 0:24: 'sin' : function name is redeclaration of existing name ERROR: 0:25: 'redefinition of built-in function' : not supported with this profile: es ERROR: 0:25: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 1 ERROR: 0:25: 'cos' : function name is redeclaration of existing name ERROR: 0:25: 'cos' : function already has a body ERROR: 0:27: 'return' : void function cannot return a value ERROR: 0:29: 'radians' : function name is redeclaration of existing name ERROR: 0:29: 'radians' : can't find function ERROR: 0:31: 'return' : void function cannot return a value ERROR: 0:38: 'local function declaration' : not supported with this profile: es ERROR: 0:43: 'sin' : can't use function syntax on variable ERROR: 0:57: 'z' : undeclared identifier ERROR: 0:57: 'z' : redefinition ERROR: 0:73: 'degrees' : can't use function syntax on variable ERROR: 21 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:3 Function Definition: f(i1;i1;i1; ( global highp int) 0:3 Function Parameters: 0:3 'a' ( in highp int) 0:3 'b' ( in highp int) 0:3 'c' ( in highp int) 0:? Sequence 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp highp float) 0:8 'a' ( temp highp float) 0:8 add ( temp highp float) 0:8 Convert int to float ( temp highp float) 0:8 'a' ( in highp int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' ( in highp int) 0:25 Function Definition: cos(f1; ( global highp float) 0:25 Function Parameters: 0:25 'x' ( in highp float) 0:27 Sequence 0:27 Branch: Return 0:29 Function Definition: radians(b1; ( global bool) 0:29 Function Parameters: 0:29 'x' ( in bool) 0:31 Sequence 0:31 Branch: Return 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence 0:39 Function Call: g( ( temp highp int) 0:42 'sin' ( temp highp float) 0:43 Constant: 0:43 0.000000 0:44 Function Call: f(i1;i1;i1; ( global highp int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 3 (const int) 0:47 move second child to first child ( temp highp float) 0:47 'f' ( temp highp float) 0:47 Constant: 0:47 3.000000 0:49 move second child to first child ( temp highp 4-component vector of float) 0:49 'gl_Position' ( invariant gl_Position highp 4-component vector of float Position) 0:49 Construct vec4 ( temp highp 4-component vector of float) 0:49 'f' ( temp highp float) 0:51 Sequence 0:51 Sequence 0:51 move second child to first child ( temp highp int) 0:51 'f' ( temp highp int) 0:51 Constant: 0:51 0 (const int) 0:51 Loop with condition tested first 0:51 Loop Condition 0:51 Compare Less Than ( temp bool) 0:51 'f' ( temp highp int) 0:51 Constant: 0:51 10 (const int) 0:51 Loop Body 0:52 Pre-Increment ( temp highp int) 0:52 'f' ( temp highp int) 0:51 Loop Terminal Expression 0:51 Pre-Increment ( temp highp int) 0:51 'f' ( temp highp int) 0:54 Sequence 0:54 move second child to first child ( temp highp int) 0:54 'x' ( temp highp int) 0:54 Constant: 0:54 1 (const int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp highp float) 0:56 'x' ( temp highp float) 0:56 Constant: 0:56 2.000000 0:56 move second child to first child ( temp highp float) 0:56 'y' ( temp highp float) 0:56 'x' ( temp highp float) 0:60 Sequence 0:60 Sequence 0:60 move second child to first child ( temp highp int) 0:60 'x' ( temp highp int) 0:60 'x' ( temp highp int) 0:68 Sequence 0:68 Sequence 0:68 move second child to first child ( temp structure{ temp highp int x}) 0:68 'S' ( temp structure{ temp highp int x}) 0:68 Constant: 0:68 0 (const int) 0:69 x: direct index for structure ( temp highp int) 0:69 'S' ( temp structure{ temp highp int x}) 0:69 Constant: 0:69 0 (const int) 0:73 Constant: 0:73 0.000000 0:? Linker Objects 0:? 'b' ( global bool) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: ERROR: Linking vertex stage: No function definition (body) found: g( Shader version: 300 ERROR: node is still EOpNull! 0:3 Function Definition: f(i1;i1;i1; ( global highp int) 0:3 Function Parameters: 0:3 'a' ( in highp int) 0:3 'b' ( in highp int) 0:3 'c' ( in highp int) 0:? Sequence 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp highp float) 0:8 'a' ( temp highp float) 0:8 add ( temp highp float) 0:8 Convert int to float ( temp highp float) 0:8 'a' ( in highp int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' ( in highp int) 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence 0:39 Function Call: g( ( temp highp int) 0:42 'sin' ( temp highp float) 0:43 Constant: 0:43 0.000000 0:44 Function Call: f(i1;i1;i1; ( global highp int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 3 (const int) 0:47 move second child to first child ( temp highp float) 0:47 'f' ( temp highp float) 0:47 Constant: 0:47 3.000000 0:49 move second child to first child ( temp highp 4-component vector of float) 0:49 'gl_Position' ( invariant gl_Position highp 4-component vector of float Position) 0:49 Construct vec4 ( temp highp 4-component vector of float) 0:49 'f' ( temp highp float) 0:51 Sequence 0:51 Sequence 0:51 move second child to first child ( temp highp int) 0:51 'f' ( temp highp int) 0:51 Constant: 0:51 0 (const int) 0:51 Loop with condition tested first 0:51 Loop Condition 0:51 Compare Less Than ( temp bool) 0:51 'f' ( temp highp int) 0:51 Constant: 0:51 10 (const int) 0:51 Loop Body 0:52 Pre-Increment ( temp highp int) 0:52 'f' ( temp highp int) 0:51 Loop Terminal Expression 0:51 Pre-Increment ( temp highp int) 0:51 'f' ( temp highp int) 0:54 Sequence 0:54 move second child to first child ( temp highp int) 0:54 'x' ( temp highp int) 0:54 Constant: 0:54 1 (const int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp highp float) 0:56 'x' ( temp highp float) 0:56 Constant: 0:56 2.000000 0:56 move second child to first child ( temp highp float) 0:56 'y' ( temp highp float) 0:56 'x' ( temp highp float) 0:60 Sequence 0:60 Sequence 0:60 move second child to first child ( temp highp int) 0:60 'x' ( temp highp int) 0:60 'x' ( temp highp int) 0:68 Sequence 0:68 Sequence 0:68 move second child to first child ( temp structure{ temp highp int x}) 0:68 'S' ( temp structure{ temp highp int x}) 0:68 Constant: 0:68 0 (const int) 0:69 x: direct index for structure ( temp highp int) 0:69 'S' ( temp structure{ temp highp int x}) 0:69 Constant: 0:69 0 (const int) 0:73 Constant: 0:73 0.000000 0:? Linker Objects 0:? 'b' ( global bool) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/310.comp.out000066400000000000000000001131241506534232700204420ustar00rootroot00000000000000310.comp ERROR: 0:4: 'local_size' : cannot change previously set size ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize ERROR: 0:7: 'local_size_y' : must be at least 1 ERROR: 0:23: '' : array size required ERROR: 0:39: 'in' : global storage input qualifier cannot be used in a compute shader ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute ERROR: 0:40: 'in' : global storage input qualifier cannot be used in a compute shader ERROR: 0:41: 'out' : global storage output qualifier cannot be used in a compute shader ERROR: 0:44: 'shared block' : not supported for this version or the enabled extensions ERROR: 0:44: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:45: 'shared' : initializer can only be a null initializer ('{}') ERROR: 0:47: 'local_size' : can only apply to 'in' ERROR: 0:47: 'local_size' : can only apply to 'in' ERROR: 0:47: 'local_size' : can only apply to 'in' ERROR: 0:61: 'assign' : l-value required "ro" (can't modify a readonly buffer) ERROR: 0:66: 'buffer' : buffers can be declared only as blocks ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:76: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:82: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:87: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:88: 'imageAtomicAdd' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:89: 'imageAtomicMin' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:89: 'readonly' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:89: 'imageAtomicMin' : only supported on image with format r32i or r32ui ERROR: 0:90: 'imageAtomicMax' : no matching overloaded function found ERROR: 0:94: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:97: '' : memory qualifiers cannot be used on this type ERROR: 0:98: '' : memory qualifiers cannot be used on this type ERROR: 0:109: 'format' : image formats must match ERROR: 0:110: 'format' : image formats must match ERROR: 0:111: 'format' : image formats must match ERROR: 0:114: 'image load-store format' : not supported with this profile: es ERROR: 0:114: 'rg8i' : does not apply to unsigned integer images ERROR: 0:115: 'rgba32i' : does not apply to floating point images ERROR: 0:116: 'rgba32f' : does not apply to unsigned integer images ERROR: 0:117: 'image load-store format' : not supported with this profile: es ERROR: 0:117: 'r8_snorm' : does not apply to signed integer images ERROR: 0:118: 'rgba32ui' : does not apply to signed integer images ERROR: 0:119: 'image load-store format' : not supported with this profile: es ERROR: 0:119: 'r8ui' : does not apply to signed integer images ERROR: 0:128: 'atomic_uint' : samplers and atomic_uints cannot be output parameters ERROR: 0:130: 'return' : type does not match, or is not convertible to, the function's return type ERROR: 0:136: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: non_uniform_counter ERROR: 0:141: 'atomic_uint' : atomic counters can only be highp ERROR: 0:141: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:143: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:149: '[]' : scalar integer expression required ERROR: 0:166: 'precision' : can only apply highp to atomic_uint ERROR: 0:168: 'precise' : Reserved word. ERROR: 0:168: 'precise' : not supported for this version or the enabled extensions ERROR: 0:170: 'dmat2x4' : Reserved word. ERROR: 0:170: 'double matrix' : not supported with this profile: es ERROR: 0:171: 'samplerCubeArray' : Reserved word. ERROR: 0:171: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:172: 'iimage2DRect' : Reserved word. ERROR: 0:172: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:172: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:173: 'image2DMS' : Reserved word. ERROR: 0:173: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:174: 'uimage2DMSArray' : Reserved word. ERROR: 0:174: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:174: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:181: 'rgba32f' : format requires readonly or writeonly memory qualifier ERROR: 0:182: 'rgba8i' : format requires readonly or writeonly memory qualifier ERROR: 0:183: 'rgba16ui' : format requires readonly or writeonly memory qualifier ERROR: 0:194: 'assign' : can't read from writeonly object: wo ERROR: 0:195: 'initializer' : can't read from writeonly object: wo ERROR: 0:196: '++' : can't read from writeonly object: wo ERROR: 0:197: '--' : can't read from writeonly object: wo ERROR: 0:198: '+' : can't read from writeonly object: wo ERROR: 0:199: '-' : can't read from writeonly object: wo ERROR: 0:201: ':' : can't read from writeonly object: wo ERROR: 0:202: ':' : can't read from writeonly object: wo ERROR: 0:203: '==' : can't read from writeonly object: wo ERROR: 0:205: '>=' : can't read from writeonly object: wo ERROR: 0:207: 'constructor' : can't read from writeonly object: wo ERROR: 0:208: '~' : can't read from writeonly object: wo ERROR: 0:221: 'assign' : can't read from writeonly object: wo ERROR: 0:222: '~' : can't read from writeonly object: wo ERROR: 0:227: 'input block' : not supported in this stage: compute ERROR: 0:231: 'output block' : not supported in this stage: compute WARNING: 0:235: 't__' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:238: '#define' : names containing consecutive underscores are reserved: __D ERROR: 0:244: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:245: 'gl_ViewIndex' : undeclared identifier ERROR: 0:255: 'gl_ViewIndex' : undeclared identifier ERROR: 85 compilation errors. No code generated. Shader version: 310 Requested GL_EXT_device_group local_size = (2, 1, 4096) ERROR: node is still EOpNull! 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:29 Sequence 0:29 Barrier ( global void) 0:30 MemoryBarrier ( global void) 0:31 MemoryBarrierAtomicCounter ( global void) 0:32 MemoryBarrierBuffer ( global void) 0:33 MemoryBarrierShared ( global void) 0:34 MemoryBarrierImage ( global void) 0:35 GroupMemoryBarrier ( global void) 0:36 move second child to first child ( temp highp int) 0:36 value: direct index for structure (layout( column_major shared) buffer highp int) 0:36 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer runtime-sized array of highp float values}) 0:36 Constant: 0:36 0 (const uint) 0:36 Convert float to int ( temp highp int) 0:36 indirect index (layout( column_major shared) temp highp float) 0:36 values: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp float) 0:36 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer runtime-sized array of highp float values}) 0:36 Constant: 0:36 1 (const uint) 0:36 'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex) 0:45 Sequence 0:45 move second child to first child ( temp highp float) 0:45 'fs' ( shared highp float) 0:45 Constant: 0:45 4.200000 0:59 Function Definition: foo( ( global void) 0:59 Function Parameters: 0:61 Sequence 0:61 move second child to first child ( temp highp float) 0:61 direct index (layout( column_major shared) readonly temp highp float) 0:61 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of highp float) 0:61 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) readonly buffer unsized 3-element array of highp float values}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 4.700000 0:62 array length ( temp int) 0:62 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of highp float) 0:62 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) readonly buffer unsized 3-element array of highp float values}) 0:62 Constant: 0:62 1 (const int) 0:63 Pre-Increment ( temp highp 4-component vector of float) 0:63 's' ( shared highp 4-component vector of float) 0:84 Function Definition: qux( ( global void) 0:84 Function Parameters: 0:86 Sequence 0:86 Sequence 0:86 move second child to first child ( temp highp int) 0:86 'i' ( temp highp int) 0:86 Constant: 0:86 4 (const int) 0:87 imageAtomicCompSwap ( global highp int) 0:87 'iimg2D' (layout( r32i) uniform highp iimage2D) 0:87 Construct ivec2 ( temp highp 2-component vector of int) 0:87 'i' ( temp highp int) 0:87 'i' ( temp highp int) 0:87 'i' ( temp highp int) 0:87 'i' ( temp highp int) 0:88 imageAtomicAdd ( global highp uint) 0:88 'uimg2D' (layout( r32ui) uniform mediump uimage2D) 0:88 Construct ivec2 ( temp highp 2-component vector of int) 0:88 'i' ( temp highp int) 0:88 'i' ( temp highp int) 0:88 Convert int to uint ( temp highp uint) 0:88 'i' ( temp highp int) 0:89 imageAtomicMin ( global highp int) 0:89 'iimg2Drgba' (layout( rgba32i) readonly uniform highp iimage2D) 0:89 Construct ivec2 ( temp highp 2-component vector of int) 0:89 'i' ( temp highp int) 0:89 'i' ( temp highp int) 0:89 'i' ( temp highp int) 0:90 Constant: 0:90 0.000000 0:91 Sequence 0:91 move second child to first child ( temp highp 4-component vector of int) 0:91 'pos' ( temp highp 4-component vector of int) 0:91 imageLoad ( global highp 4-component vector of int) 0:91 'iimg2D' (layout( r32i) uniform highp iimage2D) 0:91 Construct ivec2 ( temp highp 2-component vector of int) 0:91 'i' ( temp highp int) 0:91 'i' ( temp highp int) 0:92 imageStore ( global highp void) 0:92 'ii2da' ( writeonly uniform highp iimage2DArray) 0:92 Construct ivec3 ( temp highp 3-component vector of int) 0:92 'i' ( temp highp int) 0:92 'i' ( temp highp int) 0:92 'i' ( temp highp int) 0:92 Constant: 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) 0:93 imageLoad ( global mediump 4-component vector of float, operation at highp) 0:93 'img2Drgba' (layout( rgba32f) readonly uniform mediump image2D) 0:93 Construct ivec2 ( temp highp 2-component vector of int) 0:93 'i' ( temp highp int) 0:93 'i' ( temp highp int) 0:94 imageLoad ( global highp 4-component vector of int) 0:94 'ii2da' ( writeonly uniform highp iimage2DArray) 0:94 Construct ivec3 ( temp highp 3-component vector of int) 0:94 'i' ( temp highp int) 0:94 'i' ( temp highp int) 0:94 'i' ( temp highp int) 0:100 Function Definition: passr(iI21; ( global void) 0:100 Function Parameters: 0:100 'image' ( coherent readonly in highp iimage2D) 0:107 Function Definition: passrc( ( global void) 0:107 Function Parameters: 0:109 Sequence 0:109 Function Call: passr(iI21; ( global void) 0:109 'qualim1' (layout( r32i) coherent readonly uniform highp iimage2D) 0:110 Function Call: passr(iI21; ( global void) 0:110 'qualim2' (layout( r32i) coherent restrict readonly uniform highp iimage2D) 0:111 Function Call: passr(iI21; ( global void) 0:111 'iimg2D' (layout( r32i) uniform highp iimage2D) 0:123 Function Definition: func(au1; ( global highp uint) 0:123 Function Parameters: 0:123 'c' ( in highp atomic_uint) 0:125 Sequence 0:125 Branch: Return with expression 0:125 AtomicCounterIncrement ( global highp uint) 0:125 'c' ( in highp atomic_uint) 0:128 Function Definition: func2(au1; ( global highp uint) 0:128 Function Parameters: 0:128 'c' ( out highp atomic_uint) 0:130 Sequence 0:130 Branch: Return with expression 0:130 'counter' (layout( binding=0 offset=0) uniform highp atomic_uint) 0:131 Branch: Return with expression 0:131 AtomicCounter ( global highp uint) 0:131 'counter' (layout( binding=0 offset=0) uniform highp atomic_uint) 0:134 Function Definition: mainAC( ( global void) 0:134 Function Parameters: 0:? Sequence 0:137 Sequence 0:137 move second child to first child ( temp highp uint) 0:137 'val' ( temp highp uint) 0:137 AtomicCounter ( global highp uint) 0:137 'counter' (layout( binding=0 offset=0) uniform highp atomic_uint) 0:138 AtomicCounterDecrement ( global highp uint) 0:138 'counter' (layout( binding=0 offset=0) uniform highp atomic_uint) 0:146 Function Definition: opac( ( global void) 0:146 Function Parameters: 0:? Sequence 0:149 indirect index ( temp highp int) 0:149 'a' ( temp 3-element array of highp int) 0:149 'counter' (layout( binding=0 offset=0) uniform highp atomic_uint) 0:150 direct index (layout( binding=2 offset=4) temp highp atomic_uint) 0:150 'countArr' (layout( binding=2 offset=4) uniform 4-element array of highp atomic_uint) 0:150 Constant: 0:150 2 (const int) 0:151 indirect index (layout( binding=2 offset=4) temp highp atomic_uint) 0:151 'countArr' (layout( binding=2 offset=4) uniform 4-element array of highp atomic_uint) 0:151 'i' ( uniform highp int) 0:157 Function Definition: atoms( ( global void) 0:157 Function Parameters: 0:159 Sequence 0:159 Sequence 0:159 move second child to first child ( temp highp int) 0:159 'origi' ( temp highp int) 0:159 AtomicAdd ( global highp int) 0:159 'atomi' ( shared highp int) 0:159 Constant: 0:159 3 (const int) 0:160 Sequence 0:160 move second child to first child ( temp highp uint) 0:160 'origu' ( temp highp uint) 0:160 AtomicAnd ( global highp uint) 0:160 'atomu' ( shared highp uint) 0:160 Constant: 0:160 7 (const uint) 0:161 move second child to first child ( temp highp int) 0:161 'origi' ( temp highp int) 0:161 AtomicExchange ( global highp int) 0:161 'atomi' ( shared highp int) 0:161 Constant: 0:161 4 (const int) 0:162 move second child to first child ( temp highp uint) 0:162 'origu' ( temp highp uint) 0:162 AtomicCompSwap ( global highp uint) 0:162 'atomu' ( shared highp uint) 0:162 Constant: 0:162 10 (const uint) 0:162 Constant: 0:162 8 (const uint) 0:191 Function Definition: foowo( ( global void) 0:191 Function Parameters: 0:? Sequence 0:194 move second child to first child ( temp highp float) 0:194 'g' ( temp highp float) 0:194 direct index (layout( column_major shared) writeonly temp highp float) 0:194 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:194 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:194 Constant: 0:194 1 (const int) 0:194 Constant: 0:194 2 (const int) 0:195 Sequence 0:195 move second child to first child ( temp highp float) 0:195 'f' ( temp highp float) 0:195 direct index (layout( column_major shared) writeonly temp highp float) 0:195 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:195 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 2 (const int) 0:196 Pre-Increment ( temp highp float) 0:196 direct index (layout( column_major shared) writeonly temp highp float) 0:196 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:196 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 2 (const int) 0:197 Post-Decrement ( temp highp float) 0:197 direct index (layout( column_major shared) writeonly temp highp float) 0:197 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:197 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 2 (const int) 0:198 add ( temp highp float) 0:198 'f' ( temp highp float) 0:198 direct index (layout( column_major shared) writeonly temp highp float) 0:198 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:198 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 2 (const int) 0:199 subtract ( temp highp float) 0:199 direct index (layout( column_major shared) writeonly temp highp float) 0:199 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:199 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:199 Constant: 0:199 1 (const int) 0:199 Constant: 0:199 2 (const int) 0:199 'f' ( temp highp float) 0:201 Test condition and select ( temp highp float) 0:201 Condition 0:201 'b' ( temp bool) 0:201 true case 0:201 'f' ( temp highp float) 0:201 false case 0:201 direct index (layout( column_major shared) writeonly temp highp float) 0:201 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:201 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:202 Test condition and select ( temp highp float) 0:202 Condition 0:202 'b' ( temp bool) 0:202 true case 0:202 direct index (layout( column_major shared) writeonly temp highp float) 0:202 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:202 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 false case 0:202 'f' ( temp highp float) 0:203 Test condition and select ( temp void) 0:203 Condition 0:203 Compare Equal ( temp bool) 0:203 'f' ( temp highp float) 0:203 direct index (layout( column_major shared) writeonly temp highp float) 0:203 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:203 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 true case 0:204 Pre-Increment ( temp highp float) 0:204 'f' ( temp highp float) 0:205 Test condition and select ( temp void) 0:205 Condition 0:205 Compare Greater Than or Equal ( temp bool) 0:205 'f' ( temp highp float) 0:205 direct index (layout( column_major shared) writeonly temp highp float) 0:205 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:205 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 2 (const int) 0:205 true case 0:206 Pre-Increment ( temp highp float) 0:206 'f' ( temp highp float) 0:207 move second child to first child ( temp highp float) 0:207 'f' ( temp highp float) 0:207 direct index ( temp highp float) 0:207 Construct vec3 ( temp highp 3-component vector of float) 0:207 direct index (layout( column_major shared) writeonly temp highp float) 0:207 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:207 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 2 (const int) 0:207 Constant: 0:207 0 (const int) 0:208 Bitwise not ( temp highp int) 0:208 value: direct index for structure (layout( column_major shared) writeonly buffer highp int) 0:208 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:208 Constant: 0:208 0 (const int) 0:209 move second child to first child ( temp highp float) 0:209 direct index (layout( column_major shared) writeonly temp highp float) 0:209 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:209 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 2 (const int) 0:209 Constant: 0:209 3.400000 0:218 Function Definition: foomultio( ( global void) 0:218 Function Parameters: 0:? Sequence 0:221 move second child to first child ( temp highp float) 0:221 'g' ( temp highp float) 0:221 direct index (layout( column_major shared) writeonly temp highp float) 0:221 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:221 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:221 Constant: 0:221 1 (const int) 0:221 Constant: 0:221 2 (const int) 0:222 Bitwise not ( temp highp int) 0:222 value: direct index for structure (layout( column_major shared) writeonly buffer highp int) 0:222 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:222 Constant: 0:222 0 (const int) 0:223 move second child to first child ( temp highp float) 0:223 direct index (layout( column_major shared) writeonly temp highp float) 0:223 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) 0:223 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 2 (const int) 0:223 Constant: 0:223 3.400000 0:224 move second child to first child ( temp highp int) 0:224 value: direct index for structure (layout( column_major shared) writeonly buffer highp int) 0:224 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:224 Constant: 0:224 0 (const int) 0:224 Constant: 0:224 2 (const int) 0:242 Function Definition: devi( ( global void) 0:242 Function Parameters: 0:244 Sequence 0:244 'gl_DeviceIndex' ( in highp int DeviceIndex) 0:245 'gl_ViewIndex' ( temp float) 0:252 Function Definition: devie( ( global void) 0:252 Function Parameters: 0:254 Sequence 0:254 'gl_DeviceIndex' ( in highp int DeviceIndex) 0:255 'gl_ViewIndex' ( temp float) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) 0:? 1 (const uint) 0:? 4096 (const uint) 0:? 'total' ( const highp int) 0:? 66592 (const int) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer runtime-sized array of highp float values}) 0:? 'invalid' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 1-element array of highp float values, layout( column_major shared) buffer highp int value}) 0:? 'v3' (layout( location=2) in highp 3-component vector of float) 0:? 'f' ( in highp float) 0:? 'fo' ( out highp float) 0:? 's' ( shared highp 4-component vector of float) 0:? 'sl' (layout( location=2) shared highp 4-component vector of float) 0:? 'fs' ( shared highp float) 0:? 'arrX' ( global 2-element array of highp int) 0:? 'arrY' ( global 1-element array of highp int) 0:? 'arrZ' ( global 4096-element array of highp int) 0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) readonly buffer unsized 3-element array of highp float values}) 0:? 'v' ( buffer highp 4-component vector of float) 0:? 'us2dbad' ( uniform mediump usampler2D) 0:? 'us2d' ( uniform highp usampler2D) 0:? 'ii2dabad' ( uniform highp iimage2DArray) 0:? 'ii2da' ( writeonly uniform highp iimage2DArray) 0:? 'iimg2D' (layout( r32i) uniform highp iimage2D) 0:? 'iimg2Drgba' (layout( rgba32i) readonly uniform highp iimage2D) 0:? 'img2Drgba' (layout( rgba32f) readonly uniform mediump image2D) 0:? 'uimg2D' (layout( r32ui) uniform mediump uimage2D) 0:? 'vol' ( volatile temp highp float) 0:? 'vol2' ( readonly temp highp int) 0:? 'qualim1' (layout( r32i) coherent readonly uniform highp iimage2D) 0:? 'qualim2' (layout( r32i) coherent restrict readonly uniform highp iimage2D) 0:? 'i1bad' (layout( rg8i) readonly uniform highp uimage2D) 0:? 'i2bad' (layout( rgba32i) readonly uniform highp image2D) 0:? 'i3bad' (layout( rgba32f) readonly uniform highp uimage2D) 0:? 'i4bad' (layout( r8_snorm) readonly uniform highp iimage2D) 0:? 'i5bad' (layout( rgba32ui) readonly uniform highp iimage2D) 0:? 'i6bad' (layout( r8ui) readonly uniform highp iimage2D) 0:? 'counter' (layout( binding=0 offset=0) uniform highp atomic_uint) 0:? 'counterBad' (layout( binding=1) uniform mediump atomic_uint) 0:? 'countArr' (layout( binding=2 offset=4) uniform 4-element array of highp atomic_uint) 0:? 'i' ( uniform highp int) 0:? 'atomi' ( shared highp int) 0:? 'atomu' ( shared highp uint) 0:? 'pfoo' ( noContraction temp highp int) 0:? 'dm' ( global 2X4 matrix of double) 0:? 'sca' ( uniform mediump samplerCubeArray) 0:? 'i2dr' ( uniform mediump iimage2DRect) 0:? 'i2dms' ( uniform highp image2DMS) 0:? 'u2dmsa' ( uniform mediump uimage2DMSArray) 0:? 'okay1' (layout( r32f) coherent volatile restrict readonly writeonly uniform highp image2D) 0:? 'okay2' (layout( r32i) coherent volatile restrict readonly uniform highp iimage2D) 0:? 'okay3' (layout( r32ui) coherent volatile restrict writeonly uniform highp uimage2D) 0:? 'okay4' (layout( r32f) coherent volatile restrict uniform highp image2D) 0:? 'badQ1' (layout( rgba32f) coherent volatile restrict uniform highp image2D) 0:? 'badQ2' (layout( rgba8i) coherent volatile restrict uniform highp iimage2D) 0:? 'badQ3' (layout( rgba16ui) coherent volatile restrict uniform highp uimage2D) 0:? 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:? 'multio' (layout( column_major shared) buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 1-element array of highp float values}) 0:? 'inbi' ( in block{ in highp int a}) 0:? 'outbi' ( out block{ out highp int a}) 0:? 't__' ( global highp float) 0:? 'arr' ( shared 2-element array of 3-element array of 4-element array of highp 4-component vector of float) Linked compute stage: Shader version: 310 Requested GL_EXT_device_group local_size = (2, 1, 4096) ERROR: node is still EOpNull! 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:29 Sequence 0:29 Barrier ( global void) 0:30 MemoryBarrier ( global void) 0:31 MemoryBarrierAtomicCounter ( global void) 0:32 MemoryBarrierBuffer ( global void) 0:33 MemoryBarrierShared ( global void) 0:34 MemoryBarrierImage ( global void) 0:35 GroupMemoryBarrier ( global void) 0:36 move second child to first child ( temp highp int) 0:36 value: direct index for structure (layout( column_major shared) buffer highp int) 0:36 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer runtime-sized array of highp float values}) 0:36 Constant: 0:36 0 (const uint) 0:36 Convert float to int ( temp highp int) 0:36 indirect index (layout( column_major shared) temp highp float) 0:36 values: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp float) 0:36 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer runtime-sized array of highp float values}) 0:36 Constant: 0:36 1 (const uint) 0:36 'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex) 0:45 Sequence 0:45 move second child to first child ( temp highp float) 0:45 'fs' ( shared highp float) 0:45 Constant: 0:45 4.200000 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) 0:? 1 (const uint) 0:? 4096 (const uint) 0:? 'total' ( const highp int) 0:? 66592 (const int) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer runtime-sized array of highp float values}) 0:? 'invalid' (layout( column_major shared) buffer block{layout( column_major shared) buffer 1-element array of highp float values, layout( column_major shared) buffer highp int value}) 0:? 'v3' (layout( location=2) in highp 3-component vector of float) 0:? 'f' ( in highp float) 0:? 'fo' ( out highp float) 0:? 's' ( shared highp 4-component vector of float) 0:? 'sl' (layout( location=2) shared highp 4-component vector of float) 0:? 'fs' ( shared highp float) 0:? 'arrX' ( global 2-element array of highp int) 0:? 'arrY' ( global 1-element array of highp int) 0:? 'arrZ' ( global 4096-element array of highp int) 0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) readonly buffer unsized 3-element array of highp float values}) 0:? 'v' ( buffer highp 4-component vector of float) 0:? 'us2dbad' ( uniform mediump usampler2D) 0:? 'us2d' ( uniform highp usampler2D) 0:? 'ii2dabad' ( uniform highp iimage2DArray) 0:? 'ii2da' ( writeonly uniform highp iimage2DArray) 0:? 'iimg2D' (layout( r32i) uniform highp iimage2D) 0:? 'iimg2Drgba' (layout( rgba32i) readonly uniform highp iimage2D) 0:? 'img2Drgba' (layout( rgba32f) readonly uniform mediump image2D) 0:? 'uimg2D' (layout( r32ui) uniform mediump uimage2D) 0:? 'vol' ( volatile temp highp float) 0:? 'vol2' ( readonly temp highp int) 0:? 'qualim1' (layout( r32i) coherent readonly uniform highp iimage2D) 0:? 'qualim2' (layout( r32i) coherent restrict readonly uniform highp iimage2D) 0:? 'i1bad' (layout( rg8i) readonly uniform highp uimage2D) 0:? 'i2bad' (layout( rgba32i) readonly uniform highp image2D) 0:? 'i3bad' (layout( rgba32f) readonly uniform highp uimage2D) 0:? 'i4bad' (layout( r8_snorm) readonly uniform highp iimage2D) 0:? 'i5bad' (layout( rgba32ui) readonly uniform highp iimage2D) 0:? 'i6bad' (layout( r8ui) readonly uniform highp iimage2D) 0:? 'counter' (layout( binding=0 offset=0) uniform highp atomic_uint) 0:? 'counterBad' (layout( binding=1) uniform mediump atomic_uint) 0:? 'countArr' (layout( binding=2 offset=4) uniform 4-element array of highp atomic_uint) 0:? 'i' ( uniform highp int) 0:? 'atomi' ( shared highp int) 0:? 'atomu' ( shared highp uint) 0:? 'pfoo' ( noContraction temp highp int) 0:? 'dm' ( global 2X4 matrix of double) 0:? 'sca' ( uniform mediump samplerCubeArray) 0:? 'i2dr' ( uniform mediump iimage2DRect) 0:? 'i2dms' ( uniform highp image2DMS) 0:? 'u2dmsa' ( uniform mediump uimage2DMSArray) 0:? 'okay1' (layout( r32f) coherent volatile restrict readonly writeonly uniform highp image2D) 0:? 'okay2' (layout( r32i) coherent volatile restrict readonly uniform highp iimage2D) 0:? 'okay3' (layout( r32ui) coherent volatile restrict writeonly uniform highp uimage2D) 0:? 'okay4' (layout( r32f) coherent volatile restrict uniform highp image2D) 0:? 'badQ1' (layout( rgba32f) coherent volatile restrict uniform highp image2D) 0:? 'badQ2' (layout( rgba8i) coherent volatile restrict uniform highp iimage2D) 0:? 'badQ3' (layout( rgba16ui) coherent volatile restrict uniform highp uimage2D) 0:? 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:? 'multio' (layout( column_major shared) buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 1-element array of highp float values}) 0:? 'inbi' ( in block{ in highp int a}) 0:? 'outbi' ( out block{ out highp int a}) 0:? 't__' ( global highp float) 0:? 'arr' ( shared 2-element array of 3-element array of 4-element array of highp 4-component vector of float) glslang-16.0.0/Test/baseResults/310.frag.out000066400000000000000000002147111506534232700204270ustar00rootroot00000000000000310.frag ERROR: 0:2: 'float' : type requires declaration of default precision qualifier ERROR: 0:8: 'origin_upper_left' : not supported with this profile: es ERROR: 0:8: 'pixel_center_integer' : not supported with this profile: es ERROR: 0:8: 'gl_FragCoord' : identifiers starting with "gl_" are reserved ERROR: 0:11: 'location' : overlapping use of location 2 ERROR: 0:15: 'usampler2DRect' : Reserved word. ERROR: 0:15: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:23: 'variable indexing sampler array' : not supported for this version or the enabled extensions ERROR: 0:27: 'textureGatherOffsets' : no matching overloaded function found ERROR: 0:27: '=' : cannot convert from ' const float' to ' temp mediump 4-component vector of uint' ERROR: 0:30: 'textureGatherOffset(...)' : must be a compile-time constant: component argument ERROR: 0:31: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument ERROR: 0:34: 'non-constant offset argument' : not supported for this version or the enabled extensions ERROR: 0:42: 'texel offset' : argument must be compile-time constant ERROR: 0:44: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:44: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:66: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:66: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:67: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:67: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:68: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:69: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:69: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:73: 'binding' : requires block, or sampler/image, or atomic-counter type ERROR: 0:77: 'location' : location is too large ERROR: 0:81: 'location' : too large for fragment output ERROR: 0:82: 'location' : too large for fragment output ERROR: 0:82: 'location' : overlapping use of location 40 ERROR: 0:83: 'non-literal layout-id value' : not supported with this profile: es ERROR: 0:83: 'layout-id value' : cannot be negative ERROR: 0:96: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:110: 'out' : cannot be bool ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut ERROR: 0:111: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:112: 'out' : cannot be a matrix ERROR: 0:114: 'in' : cannot be bool ERROR: 0:115: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: ino ERROR: 0:117: 'fragment-shader array-of-array input' : not supported with this profile: es ERROR: 0:120: 'S' : A structure containing an array is not allowed as input in ES ERROR: 0:120: 'fragment-shader array-of-struct input' : not supported with this profile: es ERROR: 0:121: 'S' : A structure containing an array is not allowed as input in ES ERROR: 0:121: 'fragment-shader array-of-struct input' : not supported with this profile: es ERROR: 0:123: 'fragment-shader struct input containing an array' : not supported with this profile: es ERROR: 0:123: 'SA' : A structure containing an array is not allowed as input in ES ERROR: 0:125: 'fragment-shader struct input containing structure' : not supported with this profile: es ERROR: 0:125: 'SS' : A structure containing an struct is not allowed as input in ES ERROR: 0:133: 'output block' : not supported in this stage: fragment ERROR: 0:138: '' : cannot nest a structure definition inside a structure or block ERROR: 0:146: 'location' : overlapping use of location 13 ERROR: 0:148: 'inbname2' : Cannot reuse block name within the same interface: in ERROR: 0:153: 'badmember' : nameless block contains a member that already has a name at global scope ERROR: 0:157: 'inbname' : redefinition ERROR: 0:159: 'vAnon' : redefinition ERROR: 0:173: 'origin_upper_left' : not supported with this profile: es ERROR: 0:173: 'pixel_center_integer' : not supported with this profile: es ERROR: 0:173: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:177: 'depth layout qualifier' : not supported with this profile: es ERROR: 0:181: 'assign' : l-value required "gl_FragDepth" (can't modify gl_FragDepth if using early_fragment_tests) ERROR: 0:182: 'gl_Layer' : required extension not requested: Possible extensions include: GL_EXT_geometry_shader GL_OES_geometry_shader ERROR: 0:183: 'gl_PrimitiveID' : required extension not requested: Possible extensions include: GL_EXT_geometry_shader GL_OES_geometry_shader ERROR: 0:209: 'precise' : Reserved word. ERROR: 0:209: 'precise' : not supported for this version or the enabled extensions ERROR: 0:210: 'fma' : required extension not requested: Possible extensions include: GL_EXT_gpu_shader5 GL_OES_gpu_shader5 ERROR: 0:211: 'non-constant offset argument' : not supported for this version or the enabled extensions ERROR: 0:212: 'textureGatherOffsets' : required extension not requested: Possible extensions include: GL_EXT_gpu_shader5 GL_OES_gpu_shader5 ERROR: 0:223: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument ERROR: 0:257: 'gl_SampleID' : required extension not requested: GL_OES_sample_variables ERROR: 0:258: 'gl_SamplePosition' : required extension not requested: GL_OES_sample_variables ERROR: 0:259: 'gl_SampleMaskIn' : required extension not requested: GL_OES_sample_variables ERROR: 0:260: 'gl_SampleMask' : required extension not requested: GL_OES_sample_variables ERROR: 0:261: 'gl_NumSamples' : required extension not requested: GL_OES_sample_variables ERROR: 0:289: 'imageAtomicAdd' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:290: 'imageAtomicAdd' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:291: 'imageAtomicMin' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:292: 'imageAtomicMin' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:293: 'imageAtomicMax' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:294: 'imageAtomicMax' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:295: 'imageAtomicAnd' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:296: 'imageAtomicAnd' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:297: 'imageAtomicOr' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:298: 'imageAtomicOr' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:299: 'imageAtomicXor' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:300: 'imageAtomicXor' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:301: 'imageAtomicExchange' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:302: 'imageAtomicExchange' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:303: 'imageAtomicExchange' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:304: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:305: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:312: 'rgba32f' : format requires readonly or writeonly memory qualifier ERROR: 0:313: 'rgba8ui' : format requires readonly or writeonly memory qualifier ERROR: 0:314: 'rgba16i' : format requires readonly or writeonly memory qualifier ERROR: 0:340: 'imageAtomicMax' : only supported on image with format r32i or r32ui ERROR: 0:341: 'imageAtomicMax' : only supported on image with format r32i or r32ui ERROR: 0:342: 'imageAtomicExchange' : only supported on image with format r32f ERROR: 0:345: 'sample' : Reserved word. ERROR: 0:346: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output ERROR: 0:347: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output ERROR: 0:348: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output ERROR: 0:349: 'noperspective' : Reserved word. ERROR: 0:349: 'noperspective' : not supported for this version or the enabled extensions ERROR: 0:349: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output ERROR: 0:355: 'interpolateAtCentroid' : required extension not requested: GL_OES_shader_multisample_interpolation ERROR: 0:356: 'interpolateAtSample' : required extension not requested: GL_OES_shader_multisample_interpolation ERROR: 0:357: 'interpolateAtOffset' : required extension not requested: GL_OES_shader_multisample_interpolation ERROR: 0:365: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output ERROR: 0:380: 'interpolateAtCentroid' : no matching overloaded function found ERROR: 0:380: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' ERROR: 0:382: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:384: 'interpolateAtSample' : no matching overloaded function found ERROR: 0:384: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' ERROR: 0:386: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element ERROR: 0:389: 'interpolateAtOffset' : no matching overloaded function found ERROR: 0:389: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' ERROR: 0:391: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:392: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:396: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:397: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element ERROR: 0:400: 'blend equation' : not supported for this version or the enabled extensions ERROR: 0:423: 'blend equation' : can only apply to 'out' ERROR: 0:424: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:425: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:426: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:427: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:429: 'blend_support' : unknown blend equation ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es ERROR: 0:435: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:436: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview ERROR: 0:461: 'func' : overloaded functions must have the same return type ERROR: 0:461: 'func' : function already has a body ERROR: 0:463: 'return' : void function cannot return a value ERROR: 0:472: '=' : cannot convert from ' temp mediump uint' to ' temp mediump int' ERROR: 0:485: '=' : cannot convert from ' global mediump int' to ' temp mediump uint' ERROR: 136 compilation errors. No code generated. Shader version: 310 Requested GL_EXT_device_group Requested GL_EXT_multiview Requested GL_EXT_shader_implicit_conversions Requested GL_EXT_shader_io_blocks Requested GL_EXT_texture_cube_map_array Requested GL_KHR_blend_equation_advanced Requested GL_OES_geometry_shader Requested GL_OES_gpu_shader5 Requested GL_OES_sample_variables Requested GL_OES_shader_image_atomic Requested GL_OES_shader_io_blocks Requested GL_OES_shader_multisample_interpolation gl_FragCoord pixel center is integer gl_FragCoord origin is upper left using early_fragment_tests using depth_any using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations ERROR: node is still EOpNull! 0:21 Function Definition: main( ( global void) 0:21 Function Parameters: 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp highp 4-component vector of float) 0:23 'v' ( temp mediump 4-component vector of float) 0:23 texture ( global highp 4-component vector of float) 0:23 indirect index ( temp highp sampler2D) 0:23 'arrayedSampler' ( uniform 5-element array of highp sampler2D) 0:23 'i' ( uniform mediump int) 0:23 'c2D' ( smooth in mediump 2-component vector of float) 0:28 Sequence 0:28 move second child to first child ( temp highp 4-component vector of float) 0:28 'v4' ( temp mediump 4-component vector of float) 0:28 textureGather ( global highp 4-component vector of float) 0:28 direct index ( temp highp sampler2D) 0:28 'arrayedSampler' ( uniform 5-element array of highp sampler2D) 0:28 Constant: 0:28 0 (const int) 0:28 'c2D' ( smooth in mediump 2-component vector of float) 0:29 Sequence 0:29 move second child to first child ( temp highp 4-component vector of int) 0:29 'iv4' ( temp mediump 4-component vector of int) 0:29 textureGatherOffset ( global highp 4-component vector of int) 0:29 'isamp2DA' ( uniform highp isampler2DArray) 0:29 Constant: 0:29 0.100000 0:29 0.100000 0:29 0.100000 0:29 Constant: 0:29 1 (const int) 0:29 1 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 move second child to first child ( temp highp 4-component vector of int) 0:30 'iv4' ( temp mediump 4-component vector of int) 0:30 textureGatherOffset ( global highp 4-component vector of int) 0:30 'isamp2DA' ( uniform highp isampler2DArray) 0:30 Constant: 0:30 0.100000 0:30 0.100000 0:30 0.100000 0:30 Constant: 0:30 1 (const int) 0:30 1 (const int) 0:30 'i' ( uniform mediump int) 0:31 move second child to first child ( temp highp 4-component vector of int) 0:31 'iv4' ( temp mediump 4-component vector of int) 0:31 textureGatherOffset ( global highp 4-component vector of int) 0:31 'isamp2DA' ( uniform highp isampler2DArray) 0:31 Constant: 0:31 0.100000 0:31 0.100000 0:31 0.100000 0:31 Constant: 0:31 1 (const int) 0:31 1 (const int) 0:31 Constant: 0:31 4 (const int) 0:32 move second child to first child ( temp highp 4-component vector of int) 0:32 'iv4' ( temp mediump 4-component vector of int) 0:32 textureGatherOffset ( global highp 4-component vector of int) 0:32 'isamp2DA' ( uniform highp isampler2DArray) 0:32 Constant: 0:32 0.100000 0:32 0.100000 0:32 0.100000 0:32 Constant: 0:32 1 (const int) 0:32 1 (const int) 0:32 Constant: 0:32 3 (const int) 0:33 move second child to first child ( temp highp 4-component vector of int) 0:33 'iv4' ( temp mediump 4-component vector of int) 0:33 textureGatherOffset ( global highp 4-component vector of int) 0:33 'isamp2DA' ( uniform highp isampler2DArray) 0:33 Constant: 0:33 0.100000 0:33 0.100000 0:33 0.100000 0:33 Constant: 0:33 0 (const int) 0:33 0 (const int) 0:34 move second child to first child ( temp highp 4-component vector of int) 0:34 'iv4' ( temp mediump 4-component vector of int) 0:34 textureGatherOffset ( global highp 4-component vector of int) 0:34 'isamp2DA' ( uniform highp isampler2DArray) 0:34 Constant: 0:34 0.100000 0:34 0.100000 0:34 0.100000 0:34 Construct ivec2 ( temp highp 2-component vector of int) 0:34 'i' ( uniform mediump int) 0:38 Function Definition: foo23( ( global void) 0:38 Function Parameters: 0:? Sequence 0:42 textureProjGradOffset ( global highp 4-component vector of uint) 0:42 'usamp2d' ( uniform highp usampler2D) 0:42 'outp' ( out mediump 4-component vector of float) 0:42 Constant: 0:42 0.000000 0:42 0.000000 0:42 Constant: 0:42 0.000000 0:42 0.000000 0:42 Convert float to int ( temp mediump 2-component vector of int) 0:42 'c2D' ( smooth in mediump 2-component vector of float) 0:43 textureProjGradOffset ( global highp 4-component vector of uint) 0:43 'usamp2d' ( uniform highp usampler2D) 0:43 'outp' ( out mediump 4-component vector of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 Constant: 0:43 3 (const int) 0:43 4 (const int) 0:44 textureProjGradOffset ( global highp 4-component vector of uint) 0:44 'usamp2d' ( uniform highp usampler2D) 0:44 'outp' ( out mediump 4-component vector of float) 0:44 Constant: 0:44 0.000000 0:44 0.000000 0:44 Constant: 0:44 0.000000 0:44 0.000000 0:44 Constant: 0:44 15 (const int) 0:44 16 (const int) 0:45 textureProjGradOffset ( global highp 4-component vector of uint) 0:45 'usamp2d' ( uniform highp usampler2D) 0:45 'outp' ( out mediump 4-component vector of float) 0:45 Constant: 0:45 0.000000 0:45 0.000000 0:45 Constant: 0:45 0.000000 0:45 0.000000 0:45 Constant: 0:45 -10 (const int) 0:45 20 (const int) 0:47 Test condition and select ( temp void) 0:47 Condition 0:47 'gl_HelperInvocation' ( in bool HelperInvocation) 0:47 true case 0:48 Pre-Increment ( temp mediump 4-component vector of float) 0:48 'outp' ( out mediump 4-component vector of float) 0:50 Sequence 0:50 move second child to first child ( temp mediump int) 0:50 'sum' ( temp mediump int) 0:50 Constant: 0:50 32 (const int) 0:58 move second child to first child ( temp bool) 0:58 'b1' ( temp bool) 0:58 mix ( global bool) 0:58 'b2' ( temp bool) 0:58 'b3' ( temp bool) 0:58 'b' ( temp bool) 0:59 Sequence 0:59 move second child to first child ( temp mediump 3-component vector of uint) 0:59 'um3' ( temp mediump 3-component vector of uint) 0:59 mix ( global mediump 3-component vector of uint) 0:59 Construct uvec3 ( temp mediump 3-component vector of uint) 0:59 Convert int to uint ( temp mediump uint) 0:59 'i' ( uniform mediump int) 0:59 Construct uvec3 ( temp mediump 3-component vector of uint) 0:59 Convert int to uint ( temp mediump uint) 0:59 'i' ( uniform mediump int) 0:59 Construct bvec3 ( temp 3-component vector of bool) 0:59 'b' ( temp bool) 0:60 Sequence 0:60 move second child to first child ( temp mediump 4-component vector of int) 0:60 'im4' ( temp mediump 4-component vector of int) 0:60 mix ( global mediump 4-component vector of int) 0:60 Construct ivec4 ( temp mediump 4-component vector of int) 0:60 'i' ( uniform mediump int) 0:60 Construct ivec4 ( temp mediump 4-component vector of int) 0:60 'i' ( uniform mediump int) 0:60 Construct bvec4 ( temp 4-component vector of bool) 0:60 'b' ( temp bool) 0:61 left-shift ( temp int) 0:61 Constant: 0:61 1 (const int) 0:61 mix ( global uint) 0:61 Constant: 0:61 1 (const uint) 0:61 Constant: 0:61 1 (const uint) 0:61 Constant: 0:61 false (const bool) 0:98 Function Definition: foots( ( global void) 0:98 Function Parameters: 0:100 Sequence 0:100 Sequence 0:100 move second child to first child ( temp highp 2-component vector of int) 0:100 'v2' ( temp highp 2-component vector of int) 0:100 textureSize ( global highp 2-component vector of int) 0:100 's1' (layout( binding=3) uniform highp sampler2D) 0:100 Constant: 0:100 2 (const int) 0:101 Sequence 0:101 move second child to first child ( temp highp 3-component vector of int) 0:101 'v3' ( temp highp 3-component vector of int) 0:101 textureSize ( global highp 3-component vector of int) 0:101 'isamp2DA' ( uniform highp isampler2DArray) 0:101 Constant: 0:101 3 (const int) 0:102 move second child to first child ( temp highp 2-component vector of int) 0:102 'v2' ( temp highp 2-component vector of int) 0:102 textureSize ( global highp 2-component vector of int, operation at mediump) 0:102 's2dms' ( uniform mediump sampler2DMS) 0:103 move second child to first child ( temp highp 2-component vector of int) 0:103 'v2' ( temp highp 2-component vector of int) 0:103 imageQuerySize ( global highp 2-component vector of int) 0:103 'i2D' (layout( binding=2) writeonly uniform highp image2D) 0:104 move second child to first child ( temp highp 3-component vector of int) 0:104 'v3' ( temp highp 3-component vector of int) 0:104 imageQuerySize ( global highp 3-component vector of int, operation at mediump) 0:104 'i3D' (layout( binding=4) readonly uniform mediump image3D) 0:105 move second child to first child ( temp highp 2-component vector of int) 0:105 'v2' ( temp highp 2-component vector of int) 0:105 imageQuerySize ( global highp 2-component vector of int, operation at mediump) 0:105 'iCube' (layout( binding=5) uniform mediump imageCube) 0:106 move second child to first child ( temp highp 3-component vector of int) 0:106 'v3' ( temp highp 3-component vector of int) 0:106 imageQuerySize ( global highp 3-component vector of int, operation at mediump) 0:106 'i2DA' (layout( binding=6) uniform mediump image2DArray) 0:107 move second child to first child ( temp highp 2-component vector of int) 0:107 'v2' ( temp highp 2-component vector of int) 0:107 imageQuerySize ( global highp 2-component vector of int, operation at mediump) 0:107 'i2Dqualified' (layout( binding=6) coherent volatile restrict uniform mediump image2D) 0:165 Function Definition: fooIO( ( global void) 0:165 Function Parameters: 0:167 Sequence 0:167 Sequence 0:167 move second child to first child ( temp mediump 4-component vector of float) 0:167 'v' ( temp mediump 4-component vector of float) 0:167 add ( temp mediump 4-component vector of float) 0:167 v: direct index for structure ( in mediump 4-component vector of float) 0:167 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) 0:167 Constant: 0:167 1 (const int) 0:167 vAnon: direct index for structure (layout( location=13) centroid in mediump 4-component vector of float) 0:167 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) 0:167 Constant: 0:167 1 (const uint) 0:168 vector scale second child into first child ( temp mediump 4-component vector of float) 0:168 'v' ( temp mediump 4-component vector of float) 0:168 f: direct index for structure ( in mediump float) 0:168 direct index ( temp block{ in mediump float f}) 0:168 'arrayedInst' ( in 4-element array of block{ in mediump float f}) 0:168 Constant: 0:168 2 (const int) 0:168 Constant: 0:168 0 (const int) 0:169 vector scale second child into first child ( temp mediump 4-component vector of float) 0:169 'v' ( temp mediump 4-component vector of float) 0:169 f: direct index for structure ( in mediump float) 0:169 indirect index ( temp block{ in mediump float f}) 0:169 'arrayedInst' ( in 4-element array of block{ in mediump float f}) 0:169 'i' ( uniform mediump int) 0:169 Constant: 0:169 0 (const int) 0:179 Function Definition: foo_IO( ( global void) 0:179 Function Parameters: 0:181 Sequence 0:181 move second child to first child ( temp highp float) 0:181 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:181 Constant: 0:181 0.200000 0:182 'gl_Layer' ( flat in highp int Layer) 0:183 'gl_PrimitiveID' ( flat in highp int PrimitiveID) 0:184 Sequence 0:184 move second child to first child ( temp bool) 0:184 'f' ( temp bool) 0:184 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:191 Function Definition: foo_GS( ( global void) 0:191 Function Parameters: 0:193 Sequence 0:193 Sequence 0:193 move second child to first child ( temp highp int) 0:193 'l' ( temp highp int) 0:193 'gl_Layer' ( flat in highp int Layer) 0:194 Sequence 0:194 move second child to first child ( temp highp int) 0:194 'p' ( temp highp int) 0:194 'gl_PrimitiveID' ( flat in highp int PrimitiveID) 0:207 Function Definition: pfooBad( ( global void) 0:207 Function Parameters: 0:? Sequence 0:210 move second child to first child ( temp mediump 2-component vector of float) 0:210 'h' ( noContraction temp mediump 2-component vector of float) 0:210 fma ( global mediump 2-component vector of float) 0:210 'inf' ( smooth in mediump 2-component vector of float) 0:210 'ing' ( smooth in mediump 2-component vector of float) 0:210 'h' ( noContraction temp mediump 2-component vector of float) 0:211 textureGatherOffset ( global highp 4-component vector of float) 0:211 direct index ( temp highp sampler2D) 0:211 'sArray' ( uniform 4-element array of highp sampler2D) 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 0.100000 0:211 0.100000 0:211 Convert float to int ( temp mediump 2-component vector of int) 0:211 'inf' ( smooth in mediump 2-component vector of float) 0:212 textureGatherOffsets ( global highp 4-component vector of float) 0:212 direct index ( temp highp sampler2D) 0:212 'sArray' ( uniform 4-element array of highp sampler2D) 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 0.100000 0:212 0.100000 0:212 Constant: 0:212 0 (const int) 0:212 0 (const int) 0:212 0 (const int) 0:212 0 (const int) 0:212 0 (const int) 0:212 0 (const int) 0:212 0 (const int) 0:212 0 (const int) 0:217 Function Definition: pfoo( ( global void) 0:217 Function Parameters: 0:? Sequence 0:220 move second child to first child ( temp mediump 2-component vector of float) 0:220 'h' ( noContraction temp mediump 2-component vector of float) 0:220 fma ( global mediump 2-component vector of float) 0:220 'inf' ( smooth in mediump 2-component vector of float) 0:220 'ing' ( smooth in mediump 2-component vector of float) 0:220 'h' ( noContraction temp mediump 2-component vector of float) 0:221 textureGatherOffset ( global highp 4-component vector of float) 0:221 direct index ( temp highp sampler2D) 0:221 'sArray' ( uniform 4-element array of highp sampler2D) 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 0.100000 0:221 0.100000 0:221 Convert float to int ( temp mediump 2-component vector of int) 0:221 'inf' ( smooth in mediump 2-component vector of float) 0:222 textureGatherOffsets ( global highp 4-component vector of float) 0:222 direct index ( temp highp sampler2D) 0:222 'sArray' ( uniform 4-element array of highp sampler2D) 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 0.100000 0:222 0.100000 0:222 Constant: 0:222 0 (const int) 0:222 0 (const int) 0:222 0 (const int) 0:222 0 (const int) 0:222 0 (const int) 0:222 0 (const int) 0:222 0 (const int) 0:222 0 (const int) 0:223 textureGatherOffsets ( global highp 4-component vector of float) 0:223 direct index ( temp highp sampler2D) 0:223 'sArray' ( uniform 4-element array of highp sampler2D) 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 0.100000 0:223 0.100000 0:223 'offsets' ( uniform 4-element array of mediump 2-component vector of int) 0:248 Function Definition: CAT( ( global void) 0:248 Function Parameters: 0:250 Sequence 0:250 Sequence 0:250 move second child to first child ( temp highp 4-component vector of float) 0:250 'b4' ( temp highp 4-component vector of float) 0:250 texture ( global highp 4-component vector of float) 0:250 'CA4' ( uniform highp samplerCubeArray) 0:250 Constant: 0:250 0.500000 0:250 0.500000 0:250 0.500000 0:250 0.500000 0:250 Constant: 0:250 0.240000 0:251 Sequence 0:251 move second child to first child ( temp highp 4-component vector of int) 0:251 'b6' ( temp highp 4-component vector of int) 0:251 texture ( global highp 4-component vector of int) 0:251 'CA6' ( uniform highp isamplerCubeArray) 0:251 Constant: 0:251 0.500000 0:251 0.500000 0:251 0.500000 0:251 0.500000 0:251 Constant: 0:251 0.260000 0:252 Sequence 0:252 move second child to first child ( temp highp 4-component vector of uint) 0:252 'b7' ( temp highp 4-component vector of uint) 0:252 texture ( global highp 4-component vector of uint) 0:252 'CA7' ( uniform highp usamplerCubeArray) 0:252 Constant: 0:252 0.500000 0:252 0.500000 0:252 0.500000 0:252 0.500000 0:252 Constant: 0:252 0.270000 0:255 Function Definition: badSample( ( global void) 0:255 Function Parameters: 0:257 Sequence 0:257 Sequence 0:257 move second child to first child ( temp lowp int) 0:257 'a1' ( temp lowp int) 0:257 'gl_SampleID' ( flat in lowp int SampleId) 0:258 Sequence 0:258 move second child to first child ( temp mediump 2-component vector of float) 0:258 'a2' ( temp mediump 2-component vector of float) 0:258 'gl_SamplePosition' ( smooth in mediump 2-component vector of float SamplePosition) 0:259 Sequence 0:259 move second child to first child ( temp highp int) 0:259 'a3' ( temp highp int) 0:259 direct index ( flat temp highp int SampleMaskIn) 0:259 'gl_SampleMaskIn' ( flat in unsized 1-element array of highp int SampleMaskIn) 0:259 Constant: 0:259 0 (const int) 0:260 move second child to first child ( temp highp int) 0:260 direct index ( temp highp int SampleMaskIn) 0:260 'gl_SampleMask' ( out unsized 1-element array of highp int SampleMaskIn) 0:260 Constant: 0:260 0 (const int) 0:260 'a3' ( temp highp int) 0:261 Sequence 0:261 move second child to first child ( temp mediump int) 0:261 'n' ( temp mediump int) 0:261 'gl_NumSamples' ( uniform lowp int) 0:268 Function Definition: goodSample( ( global void) 0:268 Function Parameters: 0:270 Sequence 0:270 Sequence 0:270 move second child to first child ( temp lowp int) 0:270 'a1' ( temp lowp int) 0:270 'gl_SampleID' ( flat in lowp int SampleId) 0:271 Sequence 0:271 move second child to first child ( temp mediump 2-component vector of float) 0:271 'a2' ( temp mediump 2-component vector of float) 0:271 'gl_SamplePosition' ( smooth in mediump 2-component vector of float SamplePosition) 0:272 Sequence 0:272 move second child to first child ( temp highp int) 0:272 'a3' ( temp highp int) 0:272 direct index ( flat temp highp int SampleMaskIn) 0:272 'gl_SampleMaskIn' ( flat in unsized 1-element array of highp int SampleMaskIn) 0:272 Constant: 0:272 0 (const int) 0:273 move second child to first child ( temp highp int) 0:273 direct index ( temp highp int SampleMaskIn) 0:273 'gl_SampleMask' ( out unsized 1-element array of highp int SampleMaskIn) 0:273 Constant: 0:273 0 (const int) 0:273 'a3' ( temp highp int) 0:274 Sequence 0:274 move second child to first child ( temp mediump int) 0:274 'n1' ( temp mediump int) 0:274 Constant: 0:274 4 (const int) 0:275 Sequence 0:275 move second child to first child ( temp mediump int) 0:275 'n2' ( temp mediump int) 0:275 'gl_NumSamples' ( uniform lowp int) 0:283 Function Definition: badImageAtom( ( global void) 0:283 Function Parameters: 0:? Sequence 0:289 imageAtomicAdd ( global highp int) 0:289 'im2Di' (layout( r32i) uniform highp iimage2D) 0:289 'P' ( uniform mediump 2-component vector of int) 0:289 'dati' ( temp mediump int) 0:290 imageAtomicAdd ( global highp uint) 0:290 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:290 'P' ( uniform mediump 2-component vector of int) 0:290 'datu' ( temp mediump uint) 0:291 imageAtomicMin ( global highp int) 0:291 'im2Di' (layout( r32i) uniform highp iimage2D) 0:291 'P' ( uniform mediump 2-component vector of int) 0:291 'dati' ( temp mediump int) 0:292 imageAtomicMin ( global highp uint) 0:292 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:292 'P' ( uniform mediump 2-component vector of int) 0:292 'datu' ( temp mediump uint) 0:293 imageAtomicMax ( global highp int) 0:293 'im2Di' (layout( r32i) uniform highp iimage2D) 0:293 'P' ( uniform mediump 2-component vector of int) 0:293 'dati' ( temp mediump int) 0:294 imageAtomicMax ( global highp uint) 0:294 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:294 'P' ( uniform mediump 2-component vector of int) 0:294 'datu' ( temp mediump uint) 0:295 imageAtomicAnd ( global highp int) 0:295 'im2Di' (layout( r32i) uniform highp iimage2D) 0:295 'P' ( uniform mediump 2-component vector of int) 0:295 'dati' ( temp mediump int) 0:296 imageAtomicAnd ( global highp uint) 0:296 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:296 'P' ( uniform mediump 2-component vector of int) 0:296 'datu' ( temp mediump uint) 0:297 imageAtomicOr ( global highp int) 0:297 'im2Di' (layout( r32i) uniform highp iimage2D) 0:297 'P' ( uniform mediump 2-component vector of int) 0:297 'dati' ( temp mediump int) 0:298 imageAtomicOr ( global highp uint) 0:298 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:298 'P' ( uniform mediump 2-component vector of int) 0:298 'datu' ( temp mediump uint) 0:299 imageAtomicXor ( global highp int) 0:299 'im2Di' (layout( r32i) uniform highp iimage2D) 0:299 'P' ( uniform mediump 2-component vector of int) 0:299 'dati' ( temp mediump int) 0:300 imageAtomicXor ( global highp uint) 0:300 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:300 'P' ( uniform mediump 2-component vector of int) 0:300 'datu' ( temp mediump uint) 0:301 imageAtomicExchange ( global highp int) 0:301 'im2Di' (layout( r32i) uniform highp iimage2D) 0:301 'P' ( uniform mediump 2-component vector of int) 0:301 'dati' ( temp mediump int) 0:302 imageAtomicExchange ( global highp uint) 0:302 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:302 'P' ( uniform mediump 2-component vector of int) 0:302 'datu' ( temp mediump uint) 0:303 imageAtomicExchange ( global highp float) 0:303 'im2Df' (layout( r32f) uniform highp image2D) 0:303 'P' ( uniform mediump 2-component vector of int) 0:303 'datf' ( temp mediump float) 0:304 imageAtomicCompSwap ( global highp int) 0:304 'im2Di' (layout( r32i) uniform highp iimage2D) 0:304 'P' ( uniform mediump 2-component vector of int) 0:304 Constant: 0:304 3 (const int) 0:304 'dati' ( temp mediump int) 0:305 imageAtomicCompSwap ( global highp uint) 0:305 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:305 'P' ( uniform mediump 2-component vector of int) 0:305 Constant: 0:305 5 (const uint) 0:305 'datu' ( temp mediump uint) 0:316 Function Definition: goodImageAtom( ( global void) 0:316 Function Parameters: 0:? Sequence 0:322 imageAtomicAdd ( global highp int) 0:322 'im2Di' (layout( r32i) uniform highp iimage2D) 0:322 'P' ( uniform mediump 2-component vector of int) 0:322 'dati' ( temp mediump int) 0:323 imageAtomicAdd ( global highp uint) 0:323 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:323 'P' ( uniform mediump 2-component vector of int) 0:323 'datu' ( temp mediump uint) 0:324 imageAtomicMin ( global highp int) 0:324 'im2Di' (layout( r32i) uniform highp iimage2D) 0:324 'P' ( uniform mediump 2-component vector of int) 0:324 'dati' ( temp mediump int) 0:325 imageAtomicMin ( global highp uint) 0:325 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:325 'P' ( uniform mediump 2-component vector of int) 0:325 'datu' ( temp mediump uint) 0:326 imageAtomicMax ( global highp int) 0:326 'im2Di' (layout( r32i) uniform highp iimage2D) 0:326 'P' ( uniform mediump 2-component vector of int) 0:326 'dati' ( temp mediump int) 0:327 imageAtomicMax ( global highp uint) 0:327 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:327 'P' ( uniform mediump 2-component vector of int) 0:327 'datu' ( temp mediump uint) 0:328 imageAtomicAnd ( global highp int) 0:328 'im2Di' (layout( r32i) uniform highp iimage2D) 0:328 'P' ( uniform mediump 2-component vector of int) 0:328 'dati' ( temp mediump int) 0:329 imageAtomicAnd ( global highp uint) 0:329 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:329 'P' ( uniform mediump 2-component vector of int) 0:329 'datu' ( temp mediump uint) 0:330 imageAtomicOr ( global highp int) 0:330 'im2Di' (layout( r32i) uniform highp iimage2D) 0:330 'P' ( uniform mediump 2-component vector of int) 0:330 'dati' ( temp mediump int) 0:331 imageAtomicOr ( global highp uint) 0:331 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:331 'P' ( uniform mediump 2-component vector of int) 0:331 'datu' ( temp mediump uint) 0:332 imageAtomicXor ( global highp int) 0:332 'im2Di' (layout( r32i) uniform highp iimage2D) 0:332 'P' ( uniform mediump 2-component vector of int) 0:332 'dati' ( temp mediump int) 0:333 imageAtomicXor ( global highp uint) 0:333 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:333 'P' ( uniform mediump 2-component vector of int) 0:333 'datu' ( temp mediump uint) 0:334 imageAtomicExchange ( global highp int) 0:334 'im2Di' (layout( r32i) uniform highp iimage2D) 0:334 'P' ( uniform mediump 2-component vector of int) 0:334 'dati' ( temp mediump int) 0:335 imageAtomicExchange ( global highp uint) 0:335 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:335 'P' ( uniform mediump 2-component vector of int) 0:335 'datu' ( temp mediump uint) 0:336 imageAtomicExchange ( global highp float) 0:336 'im2Df' (layout( r32f) uniform highp image2D) 0:336 'P' ( uniform mediump 2-component vector of int) 0:336 'datf' ( temp mediump float) 0:337 imageAtomicCompSwap ( global highp int) 0:337 'im2Di' (layout( r32i) uniform highp iimage2D) 0:337 'P' ( uniform mediump 2-component vector of int) 0:337 Constant: 0:337 3 (const int) 0:337 'dati' ( temp mediump int) 0:338 imageAtomicCompSwap ( global highp uint) 0:338 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:338 'P' ( uniform mediump 2-component vector of int) 0:338 Constant: 0:338 5 (const uint) 0:338 'datu' ( temp mediump uint) 0:340 imageAtomicMax ( global highp int) 0:340 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) 0:340 'P' ( uniform mediump 2-component vector of int) 0:340 'dati' ( temp mediump int) 0:341 imageAtomicMax ( global highp uint) 0:341 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) 0:341 'P' ( uniform mediump 2-component vector of int) 0:341 'datu' ( temp mediump uint) 0:342 imageAtomicExchange ( global highp float) 0:342 'badIm2Df' (layout( rgba32f) uniform highp image2D) 0:342 'P' ( uniform mediump 2-component vector of int) 0:342 'datf' ( temp mediump float) 0:353 Function Definition: badInterp( ( global void) 0:353 Function Parameters: 0:355 Sequence 0:355 interpolateAtCentroid ( global mediump 2-component vector of float) 0:355 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:356 interpolateAtSample ( global mediump 2-component vector of float) 0:356 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:356 Constant: 0:356 1 (const int) 0:357 interpolateAtOffset ( global mediump 2-component vector of float) 0:357 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:357 Constant: 0:357 0.200000 0:357 0.200000 0:369 Function Definition: interp( ( global void) 0:369 Function Parameters: 0:? Sequence 0:376 move second child to first child ( temp mediump 2-component vector of float) 0:376 'res2' ( temp mediump 2-component vector of float) 0:376 interpolateAtCentroid ( global mediump 2-component vector of float) 0:376 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:377 move second child to first child ( temp mediump 4-component vector of float) 0:377 'res4' ( temp mediump 4-component vector of float) 0:377 interpolateAtCentroid ( global mediump 4-component vector of float) 0:377 'colorSampIn' ( smooth sample in mediump 4-component vector of float) 0:378 move second child to first child ( temp mediump 4-component vector of float) 0:378 'res4' ( temp mediump 4-component vector of float) 0:378 interpolateAtCentroid ( global mediump 4-component vector of float) 0:378 'colorfsi' ( flat sample in mediump 4-component vector of float) 0:379 move second child to first child ( temp mediump float) 0:379 'res' ( temp mediump float) 0:379 interpolateAtCentroid ( global mediump float) 0:379 'scalarIn' ( smooth in mediump float) 0:380 'res3' ( temp mediump 3-component vector of float) 0:381 move second child to first child ( temp mediump 3-component vector of float) 0:381 'res3' ( temp mediump 3-component vector of float) 0:381 interpolateAtCentroid ( global mediump 3-component vector of float) 0:381 direct index ( smooth sample temp mediump 3-component vector of float) 0:381 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:381 Constant: 0:381 2 (const int) 0:382 move second child to first child ( temp mediump 2-component vector of float) 0:382 'res2' ( temp mediump 2-component vector of float) 0:382 interpolateAtCentroid ( global mediump 2-component vector of float) 0:382 vector swizzle ( temp mediump 2-component vector of float) 0:382 direct index ( smooth sample temp mediump 3-component vector of float) 0:382 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:382 Constant: 0:382 2 (const int) 0:382 Sequence 0:382 Constant: 0:382 0 (const int) 0:382 Constant: 0:382 1 (const int) 0:384 'res3' ( temp mediump 3-component vector of float) 0:385 move second child to first child ( temp mediump 3-component vector of float) 0:385 'res3' ( temp mediump 3-component vector of float) 0:385 interpolateAtSample ( global mediump 3-component vector of float) 0:385 indirect index ( smooth sample temp mediump 3-component vector of float) 0:385 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:385 'i' ( uniform mediump int) 0:385 Constant: 0:385 0 (const int) 0:386 move second child to first child ( temp mediump 2-component vector of float) 0:386 'res2' ( temp mediump 2-component vector of float) 0:386 interpolateAtSample ( global mediump 2-component vector of float) 0:386 vector swizzle ( temp mediump 2-component vector of float) 0:386 direct index ( smooth sample temp mediump 3-component vector of float) 0:386 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:386 Constant: 0:386 2 (const int) 0:386 Sequence 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 2 (const int) 0:387 move second child to first child ( temp mediump float) 0:387 'res' ( temp mediump float) 0:387 interpolateAtSample ( global mediump float) 0:387 'scalarIn' ( smooth in mediump float) 0:387 Constant: 0:387 1 (const int) 0:389 'res3' ( temp mediump 3-component vector of float) 0:390 move second child to first child ( temp mediump 3-component vector of float) 0:390 'res3' ( temp mediump 3-component vector of float) 0:390 interpolateAtOffset ( global mediump 3-component vector of float) 0:390 direct index ( smooth sample temp mediump 3-component vector of float) 0:390 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:390 Constant: 0:390 2 (const int) 0:390 Constant: 0:390 0.200000 0:390 0.200000 0:391 move second child to first child ( temp mediump 2-component vector of float) 0:391 'res2' ( temp mediump 2-component vector of float) 0:391 interpolateAtOffset ( global mediump 2-component vector of float) 0:391 vector swizzle ( temp mediump 2-component vector of float) 0:391 direct index ( smooth sample temp mediump 3-component vector of float) 0:391 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:391 Constant: 0:391 2 (const int) 0:391 Sequence 0:391 Constant: 0:391 0 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 0.200000 0:391 0.200000 0:392 move second child to first child ( temp mediump float) 0:392 'res' ( temp mediump float) 0:392 interpolateAtOffset ( global mediump float) 0:392 add ( temp mediump float) 0:392 'scalarIn' ( smooth in mediump float) 0:392 'scalarIn' ( smooth in mediump float) 0:392 Constant: 0:392 0.200000 0:392 0.200000 0:393 move second child to first child ( temp mediump float) 0:393 'res' ( temp mediump float) 0:393 interpolateAtOffset ( global mediump float) 0:393 'scalarIn' ( smooth in mediump float) 0:393 Constant: 0:393 0.200000 0:393 0.200000 0:396 move second child to first child ( temp mediump float) 0:396 'res' ( temp mediump float) 0:396 interpolateAtCentroid ( global mediump float) 0:396 'f' ( temp mediump float) 0:397 move second child to first child ( temp mediump 4-component vector of float) 0:397 'res4' ( temp mediump 4-component vector of float) 0:397 interpolateAtSample ( global mediump 4-component vector of float) 0:397 'outp' ( out mediump 4-component vector of float) 0:397 Constant: 0:397 0 (const int) 0:427 Function Definition: blendFoo( ( temp void) 0:427 Function Parameters: 0:428 Function Definition: blendFoo(vf3; ( global void) 0:428 Function Parameters: 0:428 'v' ( in mediump 3-component vector of float) 0:433 Function Definition: devi( ( global void) 0:433 Function Parameters: 0:435 Sequence 0:435 'gl_DeviceIndex' ( flat in highp int DeviceIndex) 0:436 'gl_ViewIndex' ( flat in highp int ViewIndex) 0:447 Function Definition: devie( ( global void) 0:447 Function Parameters: 0:449 Sequence 0:449 'gl_DeviceIndex' ( flat in highp int DeviceIndex) 0:450 'gl_ViewIndex' ( flat in highp int ViewIndex) 0:456 Function Definition: func(u1;vu4; ( global void) 0:456 Function Parameters: 0:456 'a' ( in mediump uint) 0:456 'b' ( in mediump 4-component vector of uint) 0:461 Function Definition: func(u1;vu4; ( global mediump int) 0:461 Function Parameters: 0:461 'a' ( in mediump uint) 0:461 'b' ( in mediump 4-component vector of uint) 0:463 Sequence 0:463 Branch: Return 0:468 Function Definition: testimplicit( ( global void) 0:468 Function Parameters: 0:470 Sequence 0:470 Sequence 0:470 move second child to first child ( temp mediump uint) 0:470 'a' ( temp mediump uint) 0:470 Convert int to uint ( temp mediump uint) 0:470 'b' ( global mediump int) 0:471 Sequence 0:471 move second child to first child ( temp mediump 4-component vector of float) 0:471 'col' ( temp mediump 4-component vector of float) 0:471 Constant: 0:471 1.000000 0:471 2.000000 0:471 3.000000 0:471 4.000000 0:475 Sequence 0:475 move second child to first child ( temp mediump uint) 0:475 'c' ( temp mediump uint) 0:475 Convert int to uint ( temp mediump uint) 0:475 component-wise multiply ( temp mediump int) 0:475 'b' ( temp mediump int) 0:475 Constant: 0:475 3 (const int) 0:476 Sequence 0:476 move second child to first child ( temp mediump uint) 0:476 'd' ( temp mediump uint) 0:476 component-wise multiply ( temp mediump uint) 0:476 Convert int to uint ( temp mediump uint) 0:476 'b' ( temp mediump int) 0:476 Constant: 0:476 3 (const uint) 0:477 Sequence 0:477 move second child to first child ( temp mediump uint) 0:477 'e' ( temp mediump uint) 0:477 Convert int to uint ( temp mediump uint) 0:477 mod ( temp mediump int) 0:477 'b' ( temp mediump int) 0:477 Constant: 0:477 3 (const int) 0:478 Sequence 0:478 move second child to first child ( temp mediump uint) 0:478 'f' ( temp mediump uint) 0:478 Test condition and select ( temp mediump uint) 0:478 Condition 0:478 Compare Greater Than ( temp bool) 0:478 'b' ( temp mediump int) 0:478 Constant: 0:478 3 (const int) 0:478 true case 0:478 Convert int to uint ( temp uint) 0:478 'b' ( temp mediump int) 0:478 false case 0:478 'c' ( temp mediump uint) 0:479 Function Call: func(u1;vu4; ( global void) 0:479 Convert int to uint ( temp uint) 0:479 'b' ( temp mediump int) 0:479 Constant: 0:479 1 (const uint) 0:479 2 (const uint) 0:479 3 (const uint) 0:479 4 (const uint) 0:484 Function Definition: testimplicitFail( ( global void) 0:484 Function Parameters: 0:? Linker Objects 0:? 'gl_FragCoord' ( smooth in mediump 4-component vector of float) 0:? 'v3' (layout( location=2) smooth in mediump 3-component vector of float) 0:? 'yi' (layout( location=2) smooth in mediump 4X4 matrix of float) 0:? 'arrayedSampler' ( uniform 5-element array of highp sampler2D) 0:? 'usamp2d' ( uniform highp usampler2D) 0:? 'samp2dr' ( uniform mediump usampler2DRect) 0:? 'isamp2DA' ( uniform highp isampler2DArray) 0:? 'c2D' ( smooth in mediump 2-component vector of float) 0:? 'i' ( uniform mediump int) 0:? 'outp' ( out mediump 4-component vector of float) 0:? 's1' (layout( binding=3) uniform highp sampler2D) 0:? 's2' (layout( binding=3) uniform highp sampler2D) 0:? 'i2D' (layout( binding=2) writeonly uniform highp image2D) 0:? 'i3D' (layout( binding=4) readonly uniform mediump image3D) 0:? 'iCube' (layout( binding=5) uniform mediump imageCube) 0:? 'i2DA' (layout( binding=6) uniform mediump image2DArray) 0:? 'i2Dqualified' (layout( binding=6) coherent volatile restrict uniform mediump image2D) 0:? 'bbi' (layout( binding=1 column_major shared) uniform block{layout( column_major shared) uniform mediump int foo, layout( binding=2 column_major shared) uniform mediump float f}) 0:? 'centroidIn' ( centroid smooth in mediump 4-component vector of float) 0:? 'bigl' ( uniform mediump 4-component vector of float) 0:? 'bigout1' (layout( location=40) out mediump 4-component vector of float) 0:? 'bigout2' (layout( location=40) out mediump 4-component vector of float) 0:? 'neg' ( out mediump 4-component vector of float) 0:? 'b430i' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer mediump int i}) 0:? 'bshari' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump int i}) 0:? 'smoothIn' ( smooth in mediump 4-component vector of float) 0:? 'flatIn' ( flat in mediump int) 0:? 's2dms' ( uniform mediump sampler2DMS) 0:? 'bout' ( out bool) 0:? 'imageOut' ( out highp image2D) 0:? 'mout' ( out mediump 2X3 matrix of float) 0:? 'inb' ( smooth in bool) 0:? 'ino' ( smooth in highp sampler2D) 0:? 'ina' ( smooth in 4-element array of mediump float) 0:? 'inaa' ( smooth in 4-element array of 2-element array of mediump float) 0:? 'ins' ( smooth in structure{ global mediump float f}) 0:? 'inasa' ( smooth in 4-element array of structure{ global mediump float f}) 0:? 'insa' ( smooth in 4-element array of structure{ global mediump float f}) 0:? 'inSA' ( smooth in structure{ global 4-element array of mediump float f}) 0:? 'inSS' ( smooth in structure{ global mediump float f, global structure{ global mediump float f} s}) 0:? 'outbinst' ( out block{ out mediump int a}) 0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) 0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) 0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float) 0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f}) 0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:? 'inf' ( smooth in mediump 2-component vector of float) 0:? 'ing' ( smooth in mediump 2-component vector of float) 0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int) 0:? 'sArray' ( uniform 4-element array of highp sampler2D) 0:? 'sIndex' ( uniform mediump int) 0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i}) 0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i}) 0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 'CA1' ( writeonly uniform highp imageCubeArray) 0:? 'CA2' ( writeonly uniform highp iimageCubeArray) 0:? 'CA3' ( writeonly uniform highp uimageCubeArray) 0:? 'CA4' ( uniform highp samplerCubeArray) 0:? 'CA5' ( uniform highp samplerCubeArrayShadow) 0:? 'CA6' ( uniform highp isamplerCubeArray) 0:? 'CA7' ( uniform highp usamplerCubeArray) 0:? 'gl_SampleMaskIn' ( flat in unsized 1-element array of highp int SampleMaskIn) 0:? 'gl_SampleMask' ( out unsized 1-element array of highp int SampleMaskIn) 0:? 'im2Df' (layout( r32f) uniform highp image2D) 0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:? 'im2Di' (layout( r32i) uniform highp iimage2D) 0:? 'P' ( uniform mediump 2-component vector of int) 0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D) 0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) 0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) 0:? 'colorSampInBad' ( smooth sample in mediump 4-component vector of float) 0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float) 0:? 'colorBadFlat' ( flat out mediump 4-component vector of float) 0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float) 0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float) 0:? 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:? 'scalarIn' ( smooth in mediump float) 0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float) 0:? 'colorSampleBad' ( sample out mediump 4-component vector of float) 0:? 'colorfsi' ( flat sample in mediump 4-component vector of float) 0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:? 'badout' ( out mediump 4-component vector of float) 0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float) 0:? 'b' ( global mediump int) Linked fragment stage: ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers Shader version: 310 Requested GL_EXT_device_group Requested GL_EXT_multiview Requested GL_EXT_shader_implicit_conversions Requested GL_EXT_shader_io_blocks Requested GL_EXT_texture_cube_map_array Requested GL_KHR_blend_equation_advanced Requested GL_OES_geometry_shader Requested GL_OES_gpu_shader5 Requested GL_OES_sample_variables Requested GL_OES_shader_image_atomic Requested GL_OES_shader_io_blocks Requested GL_OES_shader_multisample_interpolation gl_FragCoord pixel center is integer gl_FragCoord origin is upper left using early_fragment_tests using depth_any using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations ERROR: node is still EOpNull! 0:21 Function Definition: main( ( global void) 0:21 Function Parameters: 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp highp 4-component vector of float) 0:23 'v' ( temp mediump 4-component vector of float) 0:23 texture ( global highp 4-component vector of float) 0:23 indirect index ( temp highp sampler2D) 0:23 'arrayedSampler' ( uniform 5-element array of highp sampler2D) 0:23 'i' ( uniform mediump int) 0:23 'c2D' ( smooth in mediump 2-component vector of float) 0:28 Sequence 0:28 move second child to first child ( temp highp 4-component vector of float) 0:28 'v4' ( temp mediump 4-component vector of float) 0:28 textureGather ( global highp 4-component vector of float) 0:28 direct index ( temp highp sampler2D) 0:28 'arrayedSampler' ( uniform 5-element array of highp sampler2D) 0:28 Constant: 0:28 0 (const int) 0:28 'c2D' ( smooth in mediump 2-component vector of float) 0:29 Sequence 0:29 move second child to first child ( temp highp 4-component vector of int) 0:29 'iv4' ( temp mediump 4-component vector of int) 0:29 textureGatherOffset ( global highp 4-component vector of int) 0:29 'isamp2DA' ( uniform highp isampler2DArray) 0:29 Constant: 0:29 0.100000 0:29 0.100000 0:29 0.100000 0:29 Constant: 0:29 1 (const int) 0:29 1 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 move second child to first child ( temp highp 4-component vector of int) 0:30 'iv4' ( temp mediump 4-component vector of int) 0:30 textureGatherOffset ( global highp 4-component vector of int) 0:30 'isamp2DA' ( uniform highp isampler2DArray) 0:30 Constant: 0:30 0.100000 0:30 0.100000 0:30 0.100000 0:30 Constant: 0:30 1 (const int) 0:30 1 (const int) 0:30 'i' ( uniform mediump int) 0:31 move second child to first child ( temp highp 4-component vector of int) 0:31 'iv4' ( temp mediump 4-component vector of int) 0:31 textureGatherOffset ( global highp 4-component vector of int) 0:31 'isamp2DA' ( uniform highp isampler2DArray) 0:31 Constant: 0:31 0.100000 0:31 0.100000 0:31 0.100000 0:31 Constant: 0:31 1 (const int) 0:31 1 (const int) 0:31 Constant: 0:31 4 (const int) 0:32 move second child to first child ( temp highp 4-component vector of int) 0:32 'iv4' ( temp mediump 4-component vector of int) 0:32 textureGatherOffset ( global highp 4-component vector of int) 0:32 'isamp2DA' ( uniform highp isampler2DArray) 0:32 Constant: 0:32 0.100000 0:32 0.100000 0:32 0.100000 0:32 Constant: 0:32 1 (const int) 0:32 1 (const int) 0:32 Constant: 0:32 3 (const int) 0:33 move second child to first child ( temp highp 4-component vector of int) 0:33 'iv4' ( temp mediump 4-component vector of int) 0:33 textureGatherOffset ( global highp 4-component vector of int) 0:33 'isamp2DA' ( uniform highp isampler2DArray) 0:33 Constant: 0:33 0.100000 0:33 0.100000 0:33 0.100000 0:33 Constant: 0:33 0 (const int) 0:33 0 (const int) 0:34 move second child to first child ( temp highp 4-component vector of int) 0:34 'iv4' ( temp mediump 4-component vector of int) 0:34 textureGatherOffset ( global highp 4-component vector of int) 0:34 'isamp2DA' ( uniform highp isampler2DArray) 0:34 Constant: 0:34 0.100000 0:34 0.100000 0:34 0.100000 0:34 Construct ivec2 ( temp highp 2-component vector of int) 0:34 'i' ( uniform mediump int) 0:? Linker Objects 0:? 'gl_FragCoord' ( smooth in mediump 4-component vector of float) 0:? 'v3' (layout( location=2) smooth in mediump 3-component vector of float) 0:? 'yi' (layout( location=2) smooth in mediump 4X4 matrix of float) 0:? 'arrayedSampler' ( uniform 5-element array of highp sampler2D) 0:? 'usamp2d' ( uniform highp usampler2D) 0:? 'samp2dr' ( uniform mediump usampler2DRect) 0:? 'isamp2DA' ( uniform highp isampler2DArray) 0:? 'c2D' ( smooth in mediump 2-component vector of float) 0:? 'i' ( uniform mediump int) 0:? 'outp' ( out mediump 4-component vector of float) 0:? 's1' (layout( binding=3) uniform highp sampler2D) 0:? 's2' (layout( binding=3) uniform highp sampler2D) 0:? 'i2D' (layout( binding=2) writeonly uniform highp image2D) 0:? 'i3D' (layout( binding=4) readonly uniform mediump image3D) 0:? 'iCube' (layout( binding=5) uniform mediump imageCube) 0:? 'i2DA' (layout( binding=6) uniform mediump image2DArray) 0:? 'i2Dqualified' (layout( binding=6) coherent volatile restrict uniform mediump image2D) 0:? 'bbi' (layout( binding=1 column_major shared) uniform block{layout( column_major shared) uniform mediump int foo, layout( binding=2 column_major shared) uniform mediump float f}) 0:? 'centroidIn' ( centroid smooth in mediump 4-component vector of float) 0:? 'bigl' ( uniform mediump 4-component vector of float) 0:? 'bigout1' (layout( location=40) out mediump 4-component vector of float) 0:? 'bigout2' (layout( location=40) out mediump 4-component vector of float) 0:? 'neg' ( out mediump 4-component vector of float) 0:? 'b430i' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer mediump int i}) 0:? 'bshari' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump int i}) 0:? 'smoothIn' ( smooth in mediump 4-component vector of float) 0:? 'flatIn' ( flat in mediump int) 0:? 's2dms' ( uniform mediump sampler2DMS) 0:? 'bout' ( out bool) 0:? 'imageOut' ( out highp image2D) 0:? 'mout' ( out mediump 2X3 matrix of float) 0:? 'inb' ( smooth in bool) 0:? 'ino' ( smooth in highp sampler2D) 0:? 'ina' ( smooth in 4-element array of mediump float) 0:? 'inaa' ( smooth in 4-element array of 2-element array of mediump float) 0:? 'ins' ( smooth in structure{ global mediump float f}) 0:? 'inasa' ( smooth in 4-element array of structure{ global mediump float f}) 0:? 'insa' ( smooth in 4-element array of structure{ global mediump float f}) 0:? 'inSA' ( smooth in structure{ global 4-element array of mediump float f}) 0:? 'inSS' ( smooth in structure{ global mediump float f, global structure{ global mediump float f} s}) 0:? 'outbinst' ( out block{ out mediump int a}) 0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) 0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) 0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float) 0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f}) 0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:? 'inf' ( smooth in mediump 2-component vector of float) 0:? 'ing' ( smooth in mediump 2-component vector of float) 0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int) 0:? 'sArray' ( uniform 4-element array of highp sampler2D) 0:? 'sIndex' ( uniform mediump int) 0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i}) 0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i}) 0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 'CA1' ( writeonly uniform highp imageCubeArray) 0:? 'CA2' ( writeonly uniform highp iimageCubeArray) 0:? 'CA3' ( writeonly uniform highp uimageCubeArray) 0:? 'CA4' ( uniform highp samplerCubeArray) 0:? 'CA5' ( uniform highp samplerCubeArrayShadow) 0:? 'CA6' ( uniform highp isamplerCubeArray) 0:? 'CA7' ( uniform highp usamplerCubeArray) 0:? 'gl_SampleMaskIn' ( flat in unsized 1-element array of highp int SampleMaskIn) 0:? 'gl_SampleMask' ( out unsized 1-element array of highp int SampleMaskIn) 0:? 'im2Df' (layout( r32f) uniform highp image2D) 0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:? 'im2Di' (layout( r32i) uniform highp iimage2D) 0:? 'P' ( uniform mediump 2-component vector of int) 0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D) 0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) 0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) 0:? 'colorSampInBad' ( smooth sample in mediump 4-component vector of float) 0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float) 0:? 'colorBadFlat' ( flat out mediump 4-component vector of float) 0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float) 0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float) 0:? 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:? 'scalarIn' ( smooth in mediump float) 0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float) 0:? 'colorSampleBad' ( sample out mediump 4-component vector of float) 0:? 'colorfsi' ( flat sample in mediump 4-component vector of float) 0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:? 'badout' ( out mediump 4-component vector of float) 0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float) 0:? 'b' ( global mediump int) glslang-16.0.0/Test/baseResults/310.geom.out000066400000000000000000000374571506534232700204510ustar00rootroot00000000000000310.geom ERROR: 0:29: 'fromVertex' : block instance name redefinition ERROR: 0:33: 'fromVertex' : redefinition ERROR: 0:35: 'fooC' : block instance name redefinition ERROR: 0:43: 'EmitStreamVertex' : no matching overloaded function found 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 '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 ERROR: 0:62: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices ERROR: 0:62: 'max_vertices' : cannot change previously set layout value ERROR: 0:63: 'max_vertices' : can only apply to a standalone qualifier ERROR: 0:68: 'points' : cannot change previously set output primitive ERROR: 0:69: 'points' : cannot change previously set output primitive ERROR: 0:70: 'triangle_strip' : cannot apply to input ERROR: 0:71: 'triangle_strip' : cannot apply to: uniform ERROR: 0:72: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:73: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:74: 'invocations' : can only apply to a standalone qualifier ERROR: 0:76: 'invocations' : can only apply to a standalone qualifier ERROR: 0:77: 'max_vertices' : can only apply to a standalone qualifier ERROR: 0:78: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:81: 'lines' : cannot apply to 'out' ERROR: 0:83: 'triangles' : cannot change previously set input primitive ERROR: 0:84: 'triangles_adjacency' : cannot change previously set input primitive ERROR: 0:116: 'gl_ViewportIndex' : undeclared identifier ERROR: 0:117: 'gl_MaxViewports' : undeclared identifier ERROR: 0:123: 'lines_adjacency' : inconsistent input primitive for array size of explArrayBad ERROR: 0:124: 'in' : type must be an array: nonArrayed ERROR: 0:128: 'sample' : Reserved word. ERROR: 0:132: 'component' : not supported with this profile: es ERROR: 0:136: 'gl_MaxGeometryVaryingComponents' : undeclared identifier ERROR: 0:137: 'gl_VerticesIn' : undeclared identifier ERROR: 0:142: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_geometry_point_size GL_OES_geometry_point_size ERROR: 0:143: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_geometry_point_size GL_OES_geometry_point_size ERROR: 37 compilation errors. No code generated. Shader version: 310 Requested GL_EXT_geometry_shader Requested GL_EXT_shader_io_blocks Requested GL_OES_geometry_point_size invocations = 4 max_vertices = 200 input primitive = lines_adjacency output primitive = triangle_strip ERROR: node is still EOpNull! 0:39 Function Definition: main( ( global void) 0:39 Function Parameters: 0:41 Sequence 0:41 EmitVertex ( global void) 0:42 EndPrimitive ( global void) 0:43 Constant: 0:43 0.000000 0:44 Constant: 0:44 0.000000 0:46 move second child to first child ( temp mediump 3-component vector of float) 0:46 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float) 0:46 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:46 Constant: 0:46 0 (const uint) 0:46 color: direct index for structure ( in mediump 3-component vector of float) 0:46 direct index ( temp block{ in mediump 3-component vector of float color}) 0:46 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:47 move second child to first child ( temp float) 0:47 Constant: 0:47 0.000000 0:48 Constant: 0:48 0.000000 0:49 move second child to first child ( temp highp 4-component vector of float) 0:49 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position) 0:49 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) 0:49 Constant: 0:49 0 (const uint) 0:49 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:49 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:49 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:51 move second child to first child ( temp highp int) 0:51 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID) 0:51 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) 0:52 move second child to first child ( temp highp int) 0:52 'gl_Layer' (layout( stream=0) out highp int Layer) 0:52 Constant: 0:52 2 (const int) 0:63 Function Definition: foo(i1; ( global void) 0:63 Function Parameters: 0:63 'a' ( in highp int) 0:65 Sequence 0:65 move second child to first child ( temp mediump 4-component vector of float) 0:65 a: direct index for structure (layout( stream=0) out mediump 4-component vector of float) 0:65 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1.000000 0:65 1.000000 0:65 1.000000 0:65 1.000000 0:114 Function Definition: fooe1( ( global void) 0:114 Function Parameters: 0:116 Sequence 0:116 'gl_ViewportIndex' ( temp float) 0:117 'gl_MaxViewports' ( temp float) 0:118 Constant: 0:118 4 (const int) 0:119 Sequence 0:119 move second child to first child ( temp highp int) 0:119 'inv' ( temp highp int) 0:119 'gl_InvocationID' ( in highp int InvocationID) 0:134 Function Definition: notHere( ( global void) 0:134 Function Parameters: 0:136 Sequence 0:136 'gl_MaxGeometryVaryingComponents' ( temp float) 0:137 'gl_VerticesIn' ( temp float) 0:140 Function Definition: pointSize1( ( global void) 0:140 Function Parameters: 0:142 Sequence 0:142 Sequence 0:142 move second child to first child ( temp highp float) 0:142 'ps' ( temp highp float) 0:142 gl_PointSize: direct index for structure ( in highp float PointSize) 0:142 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:142 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:142 Constant: 0:142 3 (const int) 0:142 Constant: 0:142 1 (const int) 0:143 move second child to first child ( temp highp float) 0:143 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize highp float PointSize) 0:143 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) 0:143 Constant: 0:143 1 (const uint) 0:143 'ps' ( temp highp float) 0:148 Function Definition: pointSize2( ( global void) 0:148 Function Parameters: 0:150 Sequence 0:150 Sequence 0:150 move second child to first child ( temp highp float) 0:150 'ps' ( temp highp float) 0:150 gl_PointSize: direct index for structure ( in highp float PointSize) 0:150 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:150 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:150 Constant: 0:150 3 (const int) 0:150 Constant: 0:150 1 (const int) 0:151 move second child to first child ( temp highp float) 0:151 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize highp float PointSize) 0:151 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) 0:151 Constant: 0:151 1 (const uint) 0:151 'ps' ( temp highp float) 0:? Linker Objects 0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) 0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float) 0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float) 0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) 0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float) 0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float) 0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a}) 0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c}) 0:? 'insn' ( in 4-element array of block{ in highp int a15}) 0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15}) 0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15}) 0:? 'summ' ( const highp int) 0:? 2752 (const int) 0:? 'explArray' ( in 4-element array of mediump 4-component vector of float) 0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float) 0:? 'nonArrayed' ( in mediump 4-component vector of float) 0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float) 0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float) 0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float) 0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float) 0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float) Linked geometry stage: Shader version: 310 Requested GL_EXT_geometry_shader Requested GL_EXT_shader_io_blocks Requested GL_OES_geometry_point_size invocations = 4 max_vertices = 200 input primitive = lines_adjacency output primitive = triangle_strip ERROR: node is still EOpNull! 0:39 Function Definition: main( ( global void) 0:39 Function Parameters: 0:41 Sequence 0:41 EmitVertex ( global void) 0:42 EndPrimitive ( global void) 0:43 Constant: 0:43 0.000000 0:44 Constant: 0:44 0.000000 0:46 move second child to first child ( temp mediump 3-component vector of float) 0:46 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float) 0:46 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:46 Constant: 0:46 0 (const uint) 0:46 color: direct index for structure ( in mediump 3-component vector of float) 0:46 direct index ( temp block{ in mediump 3-component vector of float color}) 0:46 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:47 move second child to first child ( temp float) 0:47 Constant: 0:47 0.000000 0:48 Constant: 0:48 0.000000 0:49 move second child to first child ( temp highp 4-component vector of float) 0:49 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position) 0:49 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) 0:49 Constant: 0:49 0 (const uint) 0:49 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:49 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:49 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:51 move second child to first child ( temp highp int) 0:51 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID) 0:51 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) 0:52 move second child to first child ( temp highp int) 0:52 'gl_Layer' (layout( stream=0) out highp int Layer) 0:52 Constant: 0:52 2 (const int) 0:? Linker Objects 0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) 0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float) 0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float) 0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) 0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float) 0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float) 0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a}) 0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c}) 0:? 'insn' ( in 4-element array of block{ in highp int a15}) 0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15}) 0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15}) 0:? 'summ' ( const highp int) 0:? 2752 (const int) 0:? 'explArray' ( in 4-element array of mediump 4-component vector of float) 0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float) 0:? 'nonArrayed' ( in mediump 4-component vector of float) 0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float) 0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float) 0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float) 0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float) 0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float) glslang-16.0.0/Test/baseResults/310.inheritMemory.frag.out000066400000000000000000000434451506534232700232650ustar00rootroot00000000000000310.inheritMemory.frag Shader version: 310 0:? Sequence 0:18 Function Definition: non_ro_fun(f1[10]; ( global void) 0:18 Function Parameters: 0:18 'buff' ( in 10-element array of mediump float) 0:19 Function Definition: non_ro_funf(f1; ( global void) 0:19 Function Parameters: 0:19 'el' ( in mediump float) 0:20 Function Definition: non_ro_funS(struct-S-f1[10]1; ( global void) 0:20 Function Parameters: 0:20 's' ( in structure{ global 10-element array of mediump float buff}) 0:24 Function Definition: main( ( global void) 0:24 Function Parameters: 0:? Sequence 0:28 Function Call: non_ro_fun(f1[10]; ( global void) 0:28 buff: direct index for structure ( global 10-element array of mediump float) 0:28 's' ( temp structure{ global 10-element array of mediump float buff}) 0:28 Constant: 0:28 0 (const int) 0:29 Function Call: non_ro_funf(f1; ( global void) 0:29 direct index ( temp mediump float) 0:29 buff: direct index for structure ( global 10-element array of mediump float) 0:29 's' ( temp structure{ global 10-element array of mediump float buff}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) 0:30 's' ( temp structure{ global 10-element array of mediump float buff}) 0:32 Function Call: non_ro_fun(f1[10]; ( global void) 0:32 buff: direct index for structure (layout( column_major std430 offset=0) buffer 10-element array of mediump float) 0:32 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:32 Constant: 0:32 0 (const int) 0:33 Function Call: non_ro_fun(f1[10]; ( global void) 0:33 buff: direct index for structure (layout( std430) global 10-element array of mediump float) 0:33 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:33 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 Function Call: non_ro_funf(f1; ( global void) 0:34 direct index (layout( column_major std430 offset=0) temp mediump float) 0:34 buff: direct index for structure (layout( column_major std430 offset=0) buffer 10-element array of mediump float) 0:34 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:35 Function Call: non_ro_funf(f1; ( global void) 0:35 direct index (layout( std430) temp mediump float) 0:35 buff: direct index for structure (layout( std430) global 10-element array of mediump float) 0:35 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:35 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 3 (const int) 0:36 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) 0:36 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:36 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:36 Constant: 0:36 1 (const int) 0:38 Function Call: non_ro_fun(f1[10]; ( global void) 0:38 buff_ro: direct index for structure (layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float) 0:38 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:38 Constant: 0:38 0 (const int) 0:39 Function Call: non_ro_fun(f1[10]; ( global void) 0:39 buff: direct index for structure (layout( std430) readonly global 10-element array of mediump float) 0:39 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:39 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 Function Call: non_ro_funf(f1; ( global void) 0:40 direct index (layout( column_major std430 offset=0) readonly temp mediump float) 0:40 buff_ro: direct index for structure (layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float) 0:40 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 3 (const int) 0:41 Function Call: non_ro_funf(f1; ( global void) 0:41 direct index (layout( std430) readonly temp mediump float) 0:41 buff: direct index for structure (layout( std430) readonly global 10-element array of mediump float) 0:41 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:41 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 3 (const int) 0:42 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) 0:42 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:42 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:42 Constant: 0:42 1 (const int) 0:? Linker Objects 0:? 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:? 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:? 'fragColor' ( out mediump 4-component vector of float) Linked fragment stage: Shader version: 310 0:? Sequence 0:18 Function Definition: non_ro_fun(f1[10]; ( global void) 0:18 Function Parameters: 0:18 'buff' ( in 10-element array of mediump float) 0:19 Function Definition: non_ro_funf(f1; ( global void) 0:19 Function Parameters: 0:19 'el' ( in mediump float) 0:20 Function Definition: non_ro_funS(struct-S-f1[10]1; ( global void) 0:20 Function Parameters: 0:20 's' ( in structure{ global 10-element array of mediump float buff}) 0:24 Function Definition: main( ( global void) 0:24 Function Parameters: 0:? Sequence 0:28 Function Call: non_ro_fun(f1[10]; ( global void) 0:28 buff: direct index for structure ( global 10-element array of mediump float) 0:28 's' ( temp structure{ global 10-element array of mediump float buff}) 0:28 Constant: 0:28 0 (const int) 0:29 Function Call: non_ro_funf(f1; ( global void) 0:29 direct index ( temp mediump float) 0:29 buff: direct index for structure ( global 10-element array of mediump float) 0:29 's' ( temp structure{ global 10-element array of mediump float buff}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) 0:30 's' ( temp structure{ global 10-element array of mediump float buff}) 0:32 Function Call: non_ro_fun(f1[10]; ( global void) 0:32 buff: direct index for structure (layout( column_major std430 offset=0) buffer 10-element array of mediump float) 0:32 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:32 Constant: 0:32 0 (const int) 0:33 Function Call: non_ro_fun(f1[10]; ( global void) 0:33 buff: direct index for structure (layout( std430) global 10-element array of mediump float) 0:33 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:33 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 Function Call: non_ro_funf(f1; ( global void) 0:34 direct index (layout( column_major std430 offset=0) temp mediump float) 0:34 buff: direct index for structure (layout( column_major std430 offset=0) buffer 10-element array of mediump float) 0:34 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:35 Function Call: non_ro_funf(f1; ( global void) 0:35 direct index (layout( std430) temp mediump float) 0:35 buff: direct index for structure (layout( std430) global 10-element array of mediump float) 0:35 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:35 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 3 (const int) 0:36 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) 0:36 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:36 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:36 Constant: 0:36 1 (const int) 0:38 Function Call: non_ro_fun(f1[10]; ( global void) 0:38 buff_ro: direct index for structure (layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float) 0:38 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:38 Constant: 0:38 0 (const int) 0:39 Function Call: non_ro_fun(f1[10]; ( global void) 0:39 buff: direct index for structure (layout( std430) readonly global 10-element array of mediump float) 0:39 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:39 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 Function Call: non_ro_funf(f1; ( global void) 0:40 direct index (layout( column_major std430 offset=0) readonly temp mediump float) 0:40 buff_ro: direct index for structure (layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float) 0:40 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 3 (const int) 0:41 Function Call: non_ro_funf(f1; ( global void) 0:41 direct index (layout( std430) readonly temp mediump float) 0:41 buff: direct index for structure (layout( std430) readonly global 10-element array of mediump float) 0:41 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:41 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 3 (const int) 0:42 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) 0:42 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff}) 0:42 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:42 Constant: 0:42 1 (const int) 0:? Linker Objects 0:? 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{layout( std430) global 10-element array of mediump float buff} s_ro}) 0:? 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{layout( std430) global 10-element array of mediump float buff} s}) 0:? 'fragColor' ( out mediump 4-component vector of float) glslang-16.0.0/Test/baseResults/310.tesc.out000066400000000000000000000756761506534232700204650ustar00rootroot00000000000000310.tesc ERROR: 0:8: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:9: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:10: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:12: 'patch' : can only use on output in tessellation-control shader 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 '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 '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 ERROR: 0:43: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:48: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:53: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:56: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:63: '' : tessellation control barrier() cannot be placed after a return from main() ERROR: 0:66: 'vertices' : can only apply to 'out' ERROR: 0:67: 'vertices' : cannot change previously set layout value ERROR: 0:71: '[' : array index out of range '4' ERROR: 0:73: '' : tessellation control barrier() must be in main() ERROR: 0:76: 'in' : type must be an array: ina ERROR: 0:78: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:80: '' : array size required ERROR: 0:86: 'location' : overlapping use of location 4 ERROR: 0:90: 'location' : overlapping use of location 4 ERROR: 0:94: 'precise' : Reserved word. ERROR: 0:94: 'precise' : not supported for this version or the enabled extensions ERROR: 0:95: 'fma' : required extension not requested: Possible extensions include: GL_EXT_gpu_shader5 GL_OES_gpu_shader5 ERROR: 0:104: 'sample' : Reserved word. ERROR: 0:106: 'vertices' : can only apply to a standalone qualifier ERROR: 0:107: 'vertices' : inconsistent output number of vertices for array size of misSized ERROR: 0:133: 'gl_BoundingBoxEXT' : required extension not requested: GL_EXT_primitive_bounding_box ERROR: 0:134: 'gl_BoundingBox' : undeclared identifier ERROR: 0:143: '[' : array index out of range '2' ERROR: 0:148: 'gl_BoundingBoxOES' : required extension not requested: GL_OES_primitive_bounding_box ERROR: 0:157: '[' : array index out of range '2' ERROR: 0:160: '' : array size required ERROR: 0:176: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID ERROR: 0:177: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID ERROR: 0:180: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID ERROR: 41 compilation errors. No code generated. Shader version: 310 Requested GL_ARB_separate_shader_objects Requested GL_EXT_primitive_bounding_box Requested GL_OES_gpu_shader5 Requested GL_OES_primitive_bounding_box Requested GL_OES_shader_io_blocks Requested GL_OES_tessellation_point_size Requested GL_OES_tessellation_shader vertices = 4 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Barrier ( global void) 0:19 Sequence 0:19 move second child to first child ( temp highp int) 0:19 'a' ( temp highp int) 0:19 Constant: 0:19 5392 (const int) 0:25 Sequence 0:25 move second child to first child ( temp highp 4-component vector of float) 0:25 'p' ( temp highp 4-component vector of float) 0:25 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:25 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:25 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 Sequence 0:26 move second child to first child ( temp highp float) 0:26 'ps' ( temp highp float) 0:26 gl_PointSize: direct index for structure ( in highp float PointSize) 0:26 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:26 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:27 Sequence 0:27 move second child to first child ( temp highp float) 0:27 'cd' ( temp highp float) 0:27 Constant: 0:27 0.000000 0:29 Sequence 0:29 move second child to first child ( temp highp int) 0:29 'pvi' ( temp highp int) 0:29 'gl_PatchVerticesIn' ( in highp int PatchVertices) 0:30 Sequence 0:30 move second child to first child ( temp highp int) 0:30 'pid' ( temp highp int) 0:30 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:31 Sequence 0:31 move second child to first child ( temp highp int) 0:31 'iid' ( temp highp int) 0:31 'gl_InvocationID' ( in highp int InvocationID) 0:33 move second child to first child ( temp highp 4-component vector of float) 0:33 gl_Position: direct index for structure ( out highp 4-component vector of float Position) 0:33 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:33 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:33 'gl_InvocationID' ( in highp int InvocationID) 0:33 Constant: 0:33 0 (const int) 0:33 'p' ( temp highp 4-component vector of float) 0:34 move second child to first child ( temp highp float) 0:34 gl_PointSize: direct index for structure ( out highp float PointSize) 0:34 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:34 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:34 'gl_InvocationID' ( in highp int InvocationID) 0:34 Constant: 0:34 1 (const int) 0:34 'ps' ( temp highp float) 0:35 move second child to first child ( temp highp float) 0:35 Constant: 0:35 0.000000 0:35 'cd' ( temp highp float) 0:37 move second child to first child ( temp highp float) 0:37 direct index ( patch temp highp float TessLevelOuter) 0:37 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3.200000 0:38 move second child to first child ( temp highp float) 0:38 direct index ( patch temp highp float TessLevelInner) 0:38 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 1.300000 0:40 Test condition and select ( temp void) 0:40 Condition 0:40 Compare Greater Than ( temp bool) 0:40 'a' ( temp highp int) 0:40 Constant: 0:40 10 (const int) 0:40 true case 0:41 Barrier ( global void) 0:40 false case 0:43 Barrier ( global void) 0:45 Barrier ( global void) 0:49 Loop with condition not tested first 0:49 Loop Condition 0:49 Compare Greater Than ( temp bool) 0:49 'a' ( temp highp int) 0:49 Constant: 0:49 10 (const int) 0:49 Loop Body 0:48 Sequence 0:48 Barrier ( global void) 0:51 switch 0:51 condition 0:51 'a' ( temp highp int) 0:51 body 0:51 Sequence 0:52 default: 0:? Sequence 0:53 Barrier ( global void) 0:54 Branch: Break 0:56 Test condition and select ( temp highp int) 0:56 Condition 0:56 Compare Less Than ( temp bool) 0:56 'a' ( temp highp int) 0:56 Constant: 0:56 12 (const int) 0:56 true case 0:56 'a' ( temp highp int) 0:56 false case 0:56 Comma ( temp highp int) 0:56 Barrier ( global void) 0:56 'a' ( temp highp int) 0:58 Sequence 0:58 Barrier ( global void) 0:61 Branch: Return 0:63 Barrier ( global void) 0:69 Function Definition: foo( ( global void) 0:69 Function Parameters: 0:71 Sequence 0:71 gl_Position: direct index for structure ( out highp 4-component vector of float Position) 0:71 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:71 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:71 Constant: 0:71 4 (const int) 0:71 Constant: 0:71 0 (const int) 0:73 Barrier ( global void) 0:92 Function Definition: foop( ( global void) 0:92 Function Parameters: 0:? Sequence 0:95 move second child to first child ( temp highp float) 0:95 'd' ( noContraction temp highp float) 0:95 fma ( global highp float) 0:95 'd' ( noContraction temp highp float) 0:95 'd' ( noContraction temp highp float) 0:95 'd' ( noContraction temp highp float) 0:112 Function Definition: pointSize2( ( global void) 0:112 Function Parameters: 0:114 Sequence 0:114 Sequence 0:114 move second child to first child ( temp highp float) 0:114 'ps' ( temp highp float) 0:114 gl_PointSize: direct index for structure ( in highp float PointSize) 0:114 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:114 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 1 (const int) 0:115 move second child to first child ( temp highp float) 0:115 gl_PointSize: direct index for structure ( out highp float PointSize) 0:115 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:115 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:115 'gl_InvocationID' ( in highp int InvocationID) 0:115 Constant: 0:115 1 (const int) 0:115 'ps' ( temp highp float) 0:122 Function Definition: goodfoop( ( global void) 0:122 Function Parameters: 0:? Sequence 0:126 multiply second child into first child ( temp highp 3-component vector of float) 0:126 'pv3' ( noContraction temp highp 3-component vector of float) 0:126 'pv3' ( noContraction temp highp 3-component vector of float) 0:127 move second child to first child ( temp highp 3-component vector of float) 0:127 'pv3' ( noContraction temp highp 3-component vector of float) 0:127 fma ( global highp 3-component vector of float) 0:127 'pv3' ( noContraction temp highp 3-component vector of float) 0:127 'pv3' ( noContraction temp highp 3-component vector of float) 0:127 'pv3' ( noContraction temp highp 3-component vector of float) 0:128 move second child to first child ( temp highp float) 0:128 'd' ( noContraction temp highp float) 0:128 fma ( global highp float) 0:128 'd' ( noContraction temp highp float) 0:128 'd' ( noContraction temp highp float) 0:128 'd' ( noContraction temp highp float) 0:131 Function Definition: bbextBad( ( global void) 0:131 Function Parameters: 0:133 Sequence 0:133 'gl_BoundingBoxEXT' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:134 'gl_BoundingBox' ( temp float) 0:139 Function Definition: bbext( ( global void) 0:139 Function Parameters: 0:141 Sequence 0:141 move second child to first child ( temp highp 4-component vector of float) 0:141 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:141 'gl_BoundingBoxEXT' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 0.000000 0:141 0.000000 0:141 0.000000 0:141 0.000000 0:142 move second child to first child ( temp highp 4-component vector of float) 0:142 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:142 'gl_BoundingBoxEXT' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1.000000 0:142 1.000000 0:142 1.000000 0:142 1.000000 0:143 move second child to first child ( temp highp 4-component vector of float) 0:143 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:143 'gl_BoundingBoxEXT' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:143 Constant: 0:143 2 (const int) 0:143 Constant: 0:143 2.000000 0:143 2.000000 0:143 2.000000 0:143 2.000000 0:146 Function Definition: bbBad( ( global void) 0:146 Function Parameters: 0:148 Sequence 0:148 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:153 Function Definition: bb( ( global void) 0:153 Function Parameters: 0:155 Sequence 0:155 move second child to first child ( temp highp 4-component vector of float) 0:155 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:155 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 0.000000 0:155 0.000000 0:155 0.000000 0:155 0.000000 0:156 move second child to first child ( temp highp 4-component vector of float) 0:156 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:156 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 1.000000 0:156 1.000000 0:156 1.000000 0:156 1.000000 0:157 move second child to first child ( temp highp 4-component vector of float) 0:157 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:157 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:157 Constant: 0:157 2 (const int) 0:157 Constant: 0:157 2.000000 0:157 2.000000 0:157 2.000000 0:157 2.000000 0:168 Function Definition: outputtingOutparam(i1; ( global void) 0:168 Function Parameters: 0:168 'a' ( out highp int) 0:170 Sequence 0:170 move second child to first child ( temp highp int) 0:170 'a' ( out highp int) 0:170 Constant: 0:170 2 (const int) 0:173 Function Definition: outputting( ( global void) 0:173 Function Parameters: 0:175 Sequence 0:175 move second child to first child ( temp highp int) 0:175 indirect index ( temp highp int) 0:175 'outa' ( out 4-element array of highp int) 0:175 'gl_InvocationID' ( in highp int InvocationID) 0:175 Constant: 0:175 2 (const int) 0:176 move second child to first child ( temp highp int) 0:176 direct index ( temp highp int) 0:176 'outa' ( out 4-element array of highp int) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 2 (const int) 0:177 move second child to first child ( temp highp 4-component vector of float) 0:177 gl_Position: direct index for structure ( out highp 4-component vector of float Position) 0:177 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:177 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1.000000 0:177 1.000000 0:177 1.000000 0:177 1.000000 0:178 direct index ( temp highp int) 0:178 'outa' ( out 4-element array of highp int) 0:178 Constant: 0:178 1 (const int) 0:179 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:179 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:179 Constant: 0:179 0 (const int) 0:180 Function Call: outputtingOutparam(i1; ( global void) 0:180 direct index ( temp highp int) 0:180 'outa' ( out 4-element array of highp int) 0:180 Constant: 0:180 0 (const int) 0:181 Function Call: outputtingOutparam(i1; ( global void) 0:181 indirect index ( temp highp int) 0:181 'outa' ( out 4-element array of highp int) 0:181 'gl_InvocationID' ( in highp int InvocationID) 0:182 move second child to first child ( temp highp float) 0:182 f: direct index for structure ( out highp float) 0:182 direct index ( patch temp block{ out highp float f}) 0:182 'patchIName' ( patch out 4-element array of block{ out highp float f}) 0:182 Constant: 0:182 1 (const int) 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 3.140000 0:183 move second child to first child ( temp highp int) 0:183 indirect index ( temp highp int) 0:183 'outa' ( out 4-element array of highp int) 0:183 'gl_InvocationID' ( in highp int InvocationID) 0:183 Constant: 0:183 2 (const int) 0:? Linker Objects 0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:? 'outa' ( out 4-element array of highp int) 0:? 'patchIn' ( patch in highp 4-component vector of float) 0:? 'patchOut' ( patch out highp 4-component vector of float) 0:? 'ina' ( in highp 2-component vector of float) 0:? 'inb' ( in 32-element array of highp 2-component vector of float) 0:? 'inc' ( in 32-element array of highp 2-component vector of float) 0:? 'ind' ( in 32-element array of highp 2-component vector of float) 0:? 'implA' ( patch out unsized 1-element array of highp float) 0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float) 0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float) 0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float) 0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float) 0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float) 0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float) 0:? 'pinbi' ( patch out block{ out highp int a}) 0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float) 0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) 0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float) 0:? 'badlay' ( out 4-element array of highp float) 0:? 'misSized' ( out 5-element array of highp float) 0:? 'okaySize' ( out 4-element array of highp float) 0:? 'pv3' ( noContraction temp highp 3-component vector of float) 0:? 'badpatchIName' ( patch out unsized 1-element array of block{ out highp float f}) 0:? 'patchIName' ( patch out 4-element array of block{ out highp float f}) Linked tessellation control stage: Shader version: 310 Requested GL_ARB_separate_shader_objects Requested GL_EXT_primitive_bounding_box Requested GL_OES_gpu_shader5 Requested GL_OES_primitive_bounding_box Requested GL_OES_shader_io_blocks Requested GL_OES_tessellation_point_size Requested GL_OES_tessellation_shader vertices = 4 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Barrier ( global void) 0:19 Sequence 0:19 move second child to first child ( temp highp int) 0:19 'a' ( temp highp int) 0:19 Constant: 0:19 5392 (const int) 0:25 Sequence 0:25 move second child to first child ( temp highp 4-component vector of float) 0:25 'p' ( temp highp 4-component vector of float) 0:25 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:25 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:25 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 Sequence 0:26 move second child to first child ( temp highp float) 0:26 'ps' ( temp highp float) 0:26 gl_PointSize: direct index for structure ( in highp float PointSize) 0:26 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:26 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:27 Sequence 0:27 move second child to first child ( temp highp float) 0:27 'cd' ( temp highp float) 0:27 Constant: 0:27 0.000000 0:29 Sequence 0:29 move second child to first child ( temp highp int) 0:29 'pvi' ( temp highp int) 0:29 'gl_PatchVerticesIn' ( in highp int PatchVertices) 0:30 Sequence 0:30 move second child to first child ( temp highp int) 0:30 'pid' ( temp highp int) 0:30 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:31 Sequence 0:31 move second child to first child ( temp highp int) 0:31 'iid' ( temp highp int) 0:31 'gl_InvocationID' ( in highp int InvocationID) 0:33 move second child to first child ( temp highp 4-component vector of float) 0:33 gl_Position: direct index for structure ( out highp 4-component vector of float Position) 0:33 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:33 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:33 'gl_InvocationID' ( in highp int InvocationID) 0:33 Constant: 0:33 0 (const int) 0:33 'p' ( temp highp 4-component vector of float) 0:34 move second child to first child ( temp highp float) 0:34 gl_PointSize: direct index for structure ( out highp float PointSize) 0:34 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:34 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:34 'gl_InvocationID' ( in highp int InvocationID) 0:34 Constant: 0:34 1 (const int) 0:34 'ps' ( temp highp float) 0:35 move second child to first child ( temp highp float) 0:35 Constant: 0:35 0.000000 0:35 'cd' ( temp highp float) 0:37 move second child to first child ( temp highp float) 0:37 direct index ( patch temp highp float TessLevelOuter) 0:37 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3.200000 0:38 move second child to first child ( temp highp float) 0:38 direct index ( patch temp highp float TessLevelInner) 0:38 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 1.300000 0:40 Test condition and select ( temp void) 0:40 Condition 0:40 Compare Greater Than ( temp bool) 0:40 'a' ( temp highp int) 0:40 Constant: 0:40 10 (const int) 0:40 true case 0:41 Barrier ( global void) 0:40 false case 0:43 Barrier ( global void) 0:45 Barrier ( global void) 0:49 Loop with condition not tested first 0:49 Loop Condition 0:49 Compare Greater Than ( temp bool) 0:49 'a' ( temp highp int) 0:49 Constant: 0:49 10 (const int) 0:49 Loop Body 0:48 Sequence 0:48 Barrier ( global void) 0:51 switch 0:51 condition 0:51 'a' ( temp highp int) 0:51 body 0:51 Sequence 0:52 default: 0:? Sequence 0:53 Barrier ( global void) 0:54 Branch: Break 0:56 Test condition and select ( temp highp int) 0:56 Condition 0:56 Compare Less Than ( temp bool) 0:56 'a' ( temp highp int) 0:56 Constant: 0:56 12 (const int) 0:56 true case 0:56 'a' ( temp highp int) 0:56 false case 0:56 Comma ( temp highp int) 0:56 Barrier ( global void) 0:56 'a' ( temp highp int) 0:58 Sequence 0:58 Barrier ( global void) 0:61 Branch: Return 0:63 Barrier ( global void) 0:? Linker Objects 0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:? 'outa' ( out 4-element array of highp int) 0:? 'patchIn' ( patch in highp 4-component vector of float) 0:? 'patchOut' ( patch out highp 4-component vector of float) 0:? 'ina' ( in highp 2-component vector of float) 0:? 'inb' ( in 32-element array of highp 2-component vector of float) 0:? 'inc' ( in 32-element array of highp 2-component vector of float) 0:? 'ind' ( in 32-element array of highp 2-component vector of float) 0:? 'implA' ( patch out 1-element array of highp float) 0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float) 0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float) 0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float) 0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float) 0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float) 0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float) 0:? 'pinbi' ( patch out block{ out highp int a}) 0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float) 0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) 0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float) 0:? 'badlay' ( out 4-element array of highp float) 0:? 'misSized' ( out 5-element array of highp float) 0:? 'okaySize' ( out 4-element array of highp float) 0:? 'pv3' ( noContraction temp highp 3-component vector of float) 0:? 'badpatchIName' ( patch out 1-element array of block{ out highp float f}) 0:? 'patchIName' ( patch out 4-element array of block{ out highp float f}) glslang-16.0.0/Test/baseResults/310.tese.out000066400000000000000000000431001506534232700204400ustar00rootroot00000000000000310.tese ERROR: 0:7: 'vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:9: 'triangles' : cannot change previously set input primitive ERROR: 0:10: 'isolines' : cannot change previously set input primitive ERROR: 0:12: 'ccw' : cannot change previously set vertex order ERROR: 0:16: 'equal_spacing' : cannot change previously set vertex spacing ERROR: 0:17: 'fractional_even_spacing' : cannot change previously set vertex spacing ERROR: 0:22: 'patch' : can only use on input in tessellation-evaluation shader ERROR: 0:26: 'barrier' : no matching overloaded function found 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 '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 GL_OES_tessellation_point_size ERROR: 0:48: 'gl_ClipDistance' : undeclared identifier ERROR: 0:48: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector ERROR: 0:48: 'assign' : l-value required (can't modify a const) ERROR: 0:51: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:52: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:53: 'noperspective' : Reserved word. ERROR: 0:53: 'noperspective' : not supported for this version or the enabled extensions ERROR: 0:53: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:54: 'sample' : Reserved word. ERROR: 0:54: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:63: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 0:68: 'quads' : cannot apply to 'out' ERROR: 0:68: 'cw' : can only apply to 'in' ERROR: 0:69: 'triangles' : cannot apply to 'out' ERROR: 0:70: 'isolines' : cannot apply to 'out' ERROR: 0:71: 'cw' : can only apply to 'in' ERROR: 0:72: 'fractional_odd_spacing' : can only apply to 'in' ERROR: 0:73: 'equal_spacing' : can only apply to 'in' ERROR: 0:74: 'fractional_even_spacing' : can only apply to 'in' ERROR: 0:75: 'point_mode' : can only apply to 'in' ERROR: 0:77: 'in' : type must be an array: ina ERROR: 0:79: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:82: 'in' : type must be an array: bla ERROR: 0:90: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:100: 'location' : overlapping use of location 24 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 '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. Shader version: 310 Requested GL_ARB_separate_shader_objects Requested GL_EXT_primitive_bounding_box Requested GL_EXT_shader_io_blocks Requested GL_EXT_tessellation_shader Requested GL_OES_shader_io_blocks Requested GL_OES_tessellation_point_size Requested GL_OES_tessellation_shader input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:24 Function Definition: main( ( global void) 0:24 Function Parameters: 0:26 Sequence 0:26 Constant: 0:26 0.000000 0:28 Sequence 0:28 move second child to first child ( temp highp int) 0:28 'a' ( temp highp int) 0:28 Constant: 0:28 1512 (const int) 0:36 Sequence 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 'p' ( temp highp 4-component vector of float) 0:36 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:36 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:36 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:37 Sequence 0:37 move second child to first child ( temp highp float) 0:37 'ps' ( temp highp float) 0:37 gl_PointSize: direct index for structure ( in highp float PointSize) 0:37 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:37 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 1 (const int) 0:38 Sequence 0:38 move second child to first child ( temp highp float) 0:38 'cd' ( temp highp float) 0:38 Constant: 0:38 0.000000 0:40 Sequence 0:40 move second child to first child ( temp highp int) 0:40 'pvi' ( temp highp int) 0:40 'gl_PatchVerticesIn' ( in highp int PatchVertices) 0:41 Sequence 0:41 move second child to first child ( temp highp int) 0:41 'pid' ( temp highp int) 0:41 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:42 Sequence 0:42 move second child to first child ( temp highp 3-component vector of float) 0:42 'tc' ( temp highp 3-component vector of float) 0:42 'gl_TessCoord' ( in highp 3-component vector of float TessCoord) 0:43 Sequence 0:43 move second child to first child ( temp highp float) 0:43 'tlo' ( temp highp float) 0:43 direct index ( patch temp highp float TessLevelOuter) 0:43 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter) 0:43 Constant: 0:43 3 (const int) 0:44 Sequence 0:44 move second child to first child ( temp highp float) 0:44 'tli' ( temp highp float) 0:44 direct index ( patch temp highp float TessLevelInner) 0:44 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner) 0:44 Constant: 0:44 1 (const int) 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:46 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:46 Constant: 0:46 0 (const uint) 0:46 'p' ( temp highp 4-component vector of float) 0:47 move second child to first child ( temp highp float) 0:47 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize) 0:47 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:47 Constant: 0:47 1 (const uint) 0:47 'ps' ( temp highp float) 0:48 move second child to first child ( temp highp float) 0:48 Constant: 0:48 0.000000 0:48 'cd' ( temp highp float) 0:117 Function Definition: pointSize2( ( global void) 0:117 Function Parameters: 0:? Sequence 0:120 move second child to first child ( temp highp float) 0:120 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize) 0:120 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:120 Constant: 0:120 1 (const uint) 0:120 'ps' ( temp highp float) 0:125 Function Definition: bbbad( ( global void) 0:125 Function Parameters: 0:127 Sequence 0:127 'gl_BoundingBoxOES' ( temp float) 0:? Linker Objects 0:? 'patchIn' ( patch in highp 4-component vector of float) 0:? 'patchOut' ( patch out highp 4-component vector of float) 0:? 'badp1' ( smooth patch in highp 4-component vector of float) 0:? 'badp2' ( flat patch in highp 4-component vector of float) 0:? 'badp3' ( noperspective patch in highp 4-component vector of float) 0:? 'badp4' ( patch sample in highp 3-component vector of float) 0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position}) 0:? 'ina' ( in highp 2-component vector of float) 0:? 'inb' ( in 32-element array of highp 2-component vector of float) 0:? 'inc' ( in 32-element array of highp 2-component vector of float) 0:? 'ind' ( in 32-element array of highp 2-component vector of float) 0:? 'bla' ( in block{ in highp int f}) 0:? 'blb' ( in 32-element array of block{ in highp int f}) 0:? 'blc' ( in 32-element array of block{ in highp int f}) 0:? 'bld' ( in 32-element array of block{ in highp int f}) 0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float) 0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float) 0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float) 0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float) 0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float) 0:? 'pinbi' ( patch in block{ in highp int a}) 0:? 'myColor2' ( centroid out highp 3-component vector of float) 0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) 0:? 'perSampleColor' ( sample out highp 4-component vector of float) Linked tessellation evaluation stage: Shader version: 310 Requested GL_ARB_separate_shader_objects Requested GL_EXT_primitive_bounding_box Requested GL_EXT_shader_io_blocks Requested GL_EXT_tessellation_shader Requested GL_OES_shader_io_blocks Requested GL_OES_tessellation_point_size Requested GL_OES_tessellation_shader input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:24 Function Definition: main( ( global void) 0:24 Function Parameters: 0:26 Sequence 0:26 Constant: 0:26 0.000000 0:28 Sequence 0:28 move second child to first child ( temp highp int) 0:28 'a' ( temp highp int) 0:28 Constant: 0:28 1512 (const int) 0:36 Sequence 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 'p' ( temp highp 4-component vector of float) 0:36 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:36 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:36 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:37 Sequence 0:37 move second child to first child ( temp highp float) 0:37 'ps' ( temp highp float) 0:37 gl_PointSize: direct index for structure ( in highp float PointSize) 0:37 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:37 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 1 (const int) 0:38 Sequence 0:38 move second child to first child ( temp highp float) 0:38 'cd' ( temp highp float) 0:38 Constant: 0:38 0.000000 0:40 Sequence 0:40 move second child to first child ( temp highp int) 0:40 'pvi' ( temp highp int) 0:40 'gl_PatchVerticesIn' ( in highp int PatchVertices) 0:41 Sequence 0:41 move second child to first child ( temp highp int) 0:41 'pid' ( temp highp int) 0:41 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:42 Sequence 0:42 move second child to first child ( temp highp 3-component vector of float) 0:42 'tc' ( temp highp 3-component vector of float) 0:42 'gl_TessCoord' ( in highp 3-component vector of float TessCoord) 0:43 Sequence 0:43 move second child to first child ( temp highp float) 0:43 'tlo' ( temp highp float) 0:43 direct index ( patch temp highp float TessLevelOuter) 0:43 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter) 0:43 Constant: 0:43 3 (const int) 0:44 Sequence 0:44 move second child to first child ( temp highp float) 0:44 'tli' ( temp highp float) 0:44 direct index ( patch temp highp float TessLevelInner) 0:44 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner) 0:44 Constant: 0:44 1 (const int) 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:46 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:46 Constant: 0:46 0 (const uint) 0:46 'p' ( temp highp 4-component vector of float) 0:47 move second child to first child ( temp highp float) 0:47 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize) 0:47 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:47 Constant: 0:47 1 (const uint) 0:47 'ps' ( temp highp float) 0:48 move second child to first child ( temp highp float) 0:48 Constant: 0:48 0.000000 0:48 'cd' ( temp highp float) 0:? Linker Objects 0:? 'patchIn' ( patch in highp 4-component vector of float) 0:? 'patchOut' ( patch out highp 4-component vector of float) 0:? 'badp1' ( smooth patch in highp 4-component vector of float) 0:? 'badp2' ( flat patch in highp 4-component vector of float) 0:? 'badp3' ( noperspective patch in highp 4-component vector of float) 0:? 'badp4' ( patch sample in highp 3-component vector of float) 0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position}) 0:? 'ina' ( in highp 2-component vector of float) 0:? 'inb' ( in 32-element array of highp 2-component vector of float) 0:? 'inc' ( in 32-element array of highp 2-component vector of float) 0:? 'ind' ( in 32-element array of highp 2-component vector of float) 0:? 'bla' ( in block{ in highp int f}) 0:? 'blb' ( in 32-element array of block{ in highp int f}) 0:? 'blc' ( in 32-element array of block{ in highp int f}) 0:? 'bld' ( in 32-element array of block{ in highp int f}) 0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float) 0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float) 0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float) 0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float) 0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float) 0:? 'pinbi' ( patch in block{ in highp int a}) 0:? 'myColor2' ( centroid out highp 3-component vector of float) 0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) 0:? 'perSampleColor' ( sample out highp 4-component vector of float) glslang-16.0.0/Test/baseResults/310.vert.out000066400000000000000000002026221506534232700204660ustar00rootroot00000000000000310.vert ERROR: 0:3: 'shared' : not supported in this stage: vertex ERROR: 0:4: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:5: 'buffer' : buffers can be declared only as blocks ERROR: 0:10: 'location' : overlapping use of location 3 ERROR: 0:58: 'usampler2DMSArray' : Reserved word. ERROR: 0:58: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:67: 'textureSamples' : no matching overloaded function found ERROR: 0:69: 'assign' : l-value required "ini" (can't modify shader input) ERROR: 0:69: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters. ERROR: 0:72: 'out' : cannot be bool ERROR: 0:73: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: outo ERROR: 0:75: 'vertex-shader array-of-array output' : not supported with this profile: es ERROR: 0:78: 'vertex-shader array-of-struct output' : not supported with this profile: es ERROR: 0:79: 'vertex-shader array-of-struct output' : not supported with this profile: es ERROR: 0:81: 'vertex-shader struct output containing an array' : not supported with this profile: es ERROR: 0:83: 'vertex-shader struct output containing structure' : not supported with this profile: es ERROR: 0:85: 'std430 requires the buffer storage qualifier' : required extension not requested: GL_EXT_scalar_block_layout ERROR: 0:97: 's' : member of block cannot be or contain a sampler, image, or atomic_uint type ERROR: 0:105: 'location' : overlapping use of location 12 ERROR: 0:107: 'input block' : not supported in this stage: vertex ERROR: 0:109: 'gl_PerVertex' : block redeclaration has extra members ERROR: 0:119: 'gl_PointSize' : member of nameless block was not redeclared ERROR: 0:119: 'assign' : l-value required "gl_PerVertex" (can't modify void) ERROR: 0:119: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' ERROR: 0:122: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 0:127: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block ERROR: 0:131: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block ERROR: 0:135: 'centroid' : cannot use centroid qualifier on an interface block ERROR: 0:139: 'invariant' : cannot use invariant qualifier on an interface block ERROR: 0:155: 'precise' : Reserved word. ERROR: 0:155: 'precise' : not supported for this version or the enabled extensions ERROR: 0:156: 'fma' : required extension not requested: Possible extensions include: GL_EXT_gpu_shader5 GL_OES_gpu_shader5 ERROR: 0:157: 'variable indexing sampler array' : not supported for this version or the enabled extensions ERROR: 0:161: 'variable indexing uniform block array' : not supported for this version or the enabled extensions ERROR: 0:162: 'variable indexing buffer block array' : not supported with this profile: es ERROR: 0:164: 'variable indexing sampler array' : not supported for this version or the enabled extensions ERROR: 0:165: 'non-constant offset argument' : not supported for this version or the enabled extensions ERROR: 0:166: 'textureGatherOffsets' : required extension not requested: Possible extensions include: GL_EXT_gpu_shader5 GL_OES_gpu_shader5 ERROR: 0:177: 'variable indexing buffer block array' : not supported with this profile: es ERROR: 0:182: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument ERROR: 0:185: 'samplerBuffer' : Reserved word. ERROR: 0:185: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:186: 'isamplerBuffer' : Reserved word. ERROR: 0:186: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:187: 'usamplerBuffer' : Reserved word. ERROR: 0:187: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:188: 'imageBuffer' : Reserved word. ERROR: 0:188: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:189: 'iimageBuffer' : Reserved word. ERROR: 0:189: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:190: 'uimageBuffer' : Reserved word. ERROR: 0:190: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:195: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:196: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:197: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:198: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:199: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:200: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:235: 'imageCubeArray' : Reserved word. ERROR: 0:235: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:236: 'iimageCubeArray' : Reserved word. ERROR: 0:236: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:237: 'uimageCubeArray' : Reserved word. ERROR: 0:237: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:239: 'samplerCubeArray' : Reserved word. ERROR: 0:239: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:240: 'samplerCubeArrayShadow' : Reserved word. ERROR: 0:240: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:241: 'isamplerCubeArray' : Reserved word. ERROR: 0:241: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:242: 'usamplerCubeArray' : Reserved word. ERROR: 0:242: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:246: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:247: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:248: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:250: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:251: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:252: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:253: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:321: 'sampler2DMSArray' : Reserved word. ERROR: 0:321: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:322: 'isampler2DMSArray' : Reserved word. ERROR: 0:322: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:323: 'usampler2DMSArray' : Reserved word. ERROR: 0:323: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:329: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:330: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:331: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:351: 'textureSize' : no matching overloaded function found ERROR: 0:351: '=' : cannot convert from ' const float' to ' temp highp 3-component vector of int' ERROR: 0:389: 'sample' : Reserved word. ERROR: 0:400: 'interpolateAtCentroid' : no matching overloaded function found ERROR: 0:401: 'interpolateAtSample' : no matching overloaded function found ERROR: 0:402: 'interpolateAtOffset' : no matching overloaded function found ERROR: 94 compilation errors. No code generated. Shader version: 310 Requested GL_EXT_texture_buffer Requested GL_OES_gpu_shader5 Requested GL_OES_shader_image_atomic Requested GL_OES_shader_io_blocks Requested GL_OES_shader_multisample_interpolation Requested GL_OES_texture_buffer Requested GL_OES_texture_cube_map_array Requested GL_OES_texture_storage_multisample_2d_array ERROR: node is still EOpNull! 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp highp 2-component vector of uint) 0:15 'u2' ( temp highp 2-component vector of uint) 0:15 addCarry ( global highp 2-component vector of uint) 0:15 'u2' ( temp highp 2-component vector of uint) 0:15 'u2' ( temp highp 2-component vector of uint) 0:15 'u2' ( temp highp 2-component vector of uint) 0:17 move second child to first child ( temp highp uint) 0:17 'u1' ( temp highp uint) 0:17 subBorrow ( global highp uint) 0:17 'u1' ( temp highp uint) 0:17 'u1' ( temp highp uint) 0:17 'u1' ( temp highp uint) 0:19 uMulExtended ( global highp void) 0:19 'u4' ( temp highp 4-component vector of uint) 0:19 'u4' ( temp highp 4-component vector of uint) 0:19 'u4' ( temp highp 4-component vector of uint) 0:19 'u4' ( temp highp 4-component vector of uint) 0:21 iMulExtended ( global highp void) 0:21 'i4' ( temp highp 4-component vector of int) 0:21 'i4' ( temp highp 4-component vector of int) 0:21 'i4' ( temp highp 4-component vector of int) 0:21 'i4' ( temp highp 4-component vector of int) 0:23 move second child to first child ( temp highp int) 0:23 'i1' ( temp highp int) 0:23 bitfieldExtract ( global highp int) 0:23 'i1' ( temp highp int) 0:23 Constant: 0:23 4 (const int) 0:23 Constant: 0:23 5 (const int) 0:25 move second child to first child ( temp highp 3-component vector of uint) 0:25 'u3' ( temp highp 3-component vector of uint) 0:25 bitfieldExtract ( global highp 3-component vector of uint) 0:25 'u3' ( temp highp 3-component vector of uint) 0:25 Constant: 0:25 4 (const int) 0:25 Constant: 0:25 5 (const int) 0:27 move second child to first child ( temp highp 3-component vector of int) 0:27 'i3' ( temp highp 3-component vector of int) 0:27 bitfieldInsert ( global highp 3-component vector of int) 0:27 'i3' ( temp highp 3-component vector of int) 0:27 'i3' ( temp highp 3-component vector of int) 0:27 Constant: 0:27 4 (const int) 0:27 Constant: 0:27 5 (const int) 0:28 move second child to first child ( temp highp uint) 0:28 'u1' ( temp highp uint) 0:28 bitfieldInsert ( global highp uint) 0:28 'u1' ( temp highp uint) 0:28 'u1' ( temp highp uint) 0:28 Constant: 0:28 4 (const int) 0:28 Constant: 0:28 5 (const int) 0:30 move second child to first child ( temp highp 2-component vector of int) 0:30 'i2' ( temp highp 2-component vector of int) 0:30 bitFieldReverse ( global highp 2-component vector of int) 0:30 'i2' ( temp highp 2-component vector of int) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 'u4' ( temp highp 4-component vector of uint) 0:31 bitFieldReverse ( global highp 4-component vector of uint) 0:31 'u4' ( temp highp 4-component vector of uint) 0:32 move second child to first child ( temp highp int) 0:32 'i1' ( temp highp int) 0:32 bitCount ( global lowp int, operation at highp) 0:32 'i1' ( temp highp int) 0:33 move second child to first child ( temp highp 3-component vector of int) 0:33 'i3' ( temp highp 3-component vector of int) 0:33 bitCount ( global lowp 3-component vector of int, operation at highp) 0:33 'u3' ( temp highp 3-component vector of uint) 0:34 move second child to first child ( temp highp 2-component vector of int) 0:34 'i2' ( temp highp 2-component vector of int) 0:34 findLSB ( global lowp 2-component vector of int, operation at highp) 0:34 'i2' ( temp highp 2-component vector of int) 0:35 move second child to first child ( temp highp 4-component vector of int) 0:35 'i4' ( temp highp 4-component vector of int) 0:35 findLSB ( global lowp 4-component vector of int, operation at highp) 0:35 'u4' ( temp highp 4-component vector of uint) 0:36 move second child to first child ( temp highp int) 0:36 'i1' ( temp highp int) 0:36 findMSB ( global lowp int, operation at highp) 0:36 'i1' ( temp highp int) 0:37 move second child to first child ( temp highp 2-component vector of int) 0:37 'i2' ( temp highp 2-component vector of int) 0:37 findMSB ( global lowp 2-component vector of int, operation at highp) 0:37 'u2' ( temp highp 2-component vector of uint) 0:40 move second child to first child ( temp highp 3-component vector of float) 0:40 'v3' ( temp highp 3-component vector of float) 0:40 frexp ( global highp 3-component vector of float) 0:40 'v3' ( temp highp 3-component vector of float) 0:40 'i3' ( temp highp 3-component vector of int) 0:42 move second child to first child ( temp highp 2-component vector of float) 0:42 'v2' ( temp highp 2-component vector of float) 0:42 ldexp ( global highp 2-component vector of float) 0:42 'v2' ( temp highp 2-component vector of float) 0:42 'i2' ( temp highp 2-component vector of int) 0:45 move second child to first child ( temp highp uint) 0:45 'u1' ( temp highp uint) 0:45 PackUnorm4x8 ( global highp uint, operation at mediump) 0:45 'v4' ( temp mediump 4-component vector of float) 0:46 move second child to first child ( temp highp uint) 0:46 'u1' ( temp highp uint) 0:46 PackSnorm4x8 ( global highp uint, operation at mediump) 0:46 'v4' ( temp mediump 4-component vector of float) 0:47 move second child to first child ( temp mediump 4-component vector of float) 0:47 'v4' ( temp mediump 4-component vector of float) 0:47 UnpackUnorm4x8 ( global mediump 4-component vector of float, operation at highp) 0:47 'u1' ( temp highp uint) 0:48 move second child to first child ( temp mediump 4-component vector of float) 0:48 'v4' ( temp mediump 4-component vector of float) 0:48 UnpackSnorm4x8 ( global mediump 4-component vector of float, operation at highp) 0:48 'u1' ( temp highp uint) 0:60 Function Definition: foo( ( global void) 0:60 Function Parameters: 0:? Sequence 0:63 move second child to first child ( temp highp 2-component vector of int) 0:63 'v2' ( temp highp 2-component vector of int) 0:63 textureSize ( global highp 2-component vector of int) 0:63 's2dms' ( uniform highp sampler2DMS) 0:64 move second child to first child ( temp highp 2-component vector of int) 0:64 'v2' ( temp highp 2-component vector of int) 0:64 textureSize ( global highp 2-component vector of int) 0:64 'us2dms' ( uniform highp usampler2DMS) 0:65 Sequence 0:65 move second child to first child ( temp highp 4-component vector of float) 0:65 'v4' ( temp highp 4-component vector of float) 0:65 textureFetch ( global highp 4-component vector of float) 0:65 's2dms' ( uniform highp sampler2DMS) 0:65 'v2' ( temp highp 2-component vector of int) 0:65 Constant: 0:65 2 (const int) 0:66 Sequence 0:66 move second child to first child ( temp highp 4-component vector of int) 0:66 'iv4' ( temp highp 4-component vector of int) 0:66 textureFetch ( global highp 4-component vector of int) 0:66 'is2dms' ( uniform highp isampler2DMS) 0:66 'v2' ( temp highp 2-component vector of int) 0:66 Constant: 0:66 2 (const int) 0:67 Constant: 0:67 0.000000 0:69 frexp ( global highp float) 0:69 'f' ( temp highp float) 0:69 'ini' ( in highp int) 0:114 Function Definition: foo_IO( ( global void) 0:114 Function Parameters: 0:116 Sequence 0:116 Sequence 0:116 move second child to first child ( temp highp int) 0:116 'sum' ( temp highp int) 0:116 add ( temp highp int) 0:116 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:117 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) 0:118 move second child to first child ( temp highp 4-component vector of float) 0:118 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:118 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:118 Constant: 0:118 0 (const uint) 0:118 Constant: 0:118 1.000000 0:118 1.000000 0:118 1.000000 0:118 1.000000 0:119 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize) 0:119 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:119 Constant: 0:119 1 (const uint) 0:153 Function Definition: pfooBad( ( global void) 0:153 Function Parameters: 0:? Sequence 0:156 move second child to first child ( temp highp 2-component vector of float) 0:156 'h' ( noContraction temp highp 2-component vector of float) 0:156 fma ( global highp 2-component vector of float) 0:156 'inf' ( in highp 2-component vector of float) 0:156 'ing' ( in highp 2-component vector of float) 0:156 'h' ( noContraction temp highp 2-component vector of float) 0:157 indirect index ( temp lowp sampler2D) 0:157 'sArray' ( uniform 4-element array of lowp sampler2D) 0:157 add ( temp highp int) 0:157 'sIndex' ( uniform highp int) 0:157 Constant: 0:157 1 (const int) 0:158 indirect index (layout( binding=0 offset=0) temp highp atomic_uint) 0:158 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:158 add ( temp highp int) 0:158 'sIndex' ( uniform highp int) 0:158 Constant: 0:158 1 (const int) 0:159 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform highp int i}) 0:159 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) 0:159 Constant: 0:159 1 (const int) 0:160 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer highp int i}) 0:160 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) 0:160 Constant: 0:160 2 (const int) 0:161 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform highp int i}) 0:161 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) 0:161 add ( temp highp int) 0:161 'sIndex' ( uniform highp int) 0:161 Constant: 0:161 1 (const int) 0:162 indirect index (layout( column_major shared) temp block{layout( column_major shared) buffer highp int i}) 0:162 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) 0:162 'sIndex' ( uniform highp int) 0:163 direct index ( writeonly temp highp image2D) 0:163 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:163 Constant: 0:163 2 (const int) 0:164 indirect index ( writeonly temp highp image2D) 0:164 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:164 component-wise multiply ( temp highp int) 0:164 'sIndex' ( uniform highp int) 0:164 Constant: 0:164 2 (const int) 0:165 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) 0:165 direct index ( temp lowp sampler2D) 0:165 'sArray' ( uniform 4-element array of lowp sampler2D) 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 0.100000 0:165 0.100000 0:165 Convert float to int ( temp highp 2-component vector of int) 0:165 'inf' ( in highp 2-component vector of float) 0:166 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) 0:166 direct index ( temp lowp sampler2D) 0:166 'sArray' ( uniform 4-element array of lowp sampler2D) 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 0.100000 0:166 0.100000 0:166 Constant: 0:166 0 (const int) 0:166 0 (const int) 0:166 0 (const int) 0:166 0 (const int) 0:166 0 (const int) 0:166 0 (const int) 0:166 0 (const int) 0:166 0 (const int) 0:171 Function Definition: pfoo( ( global void) 0:171 Function Parameters: 0:? Sequence 0:174 move second child to first child ( temp highp 2-component vector of float) 0:174 'h' ( noContraction temp highp 2-component vector of float) 0:174 fma ( global highp 2-component vector of float) 0:174 'inf' ( in highp 2-component vector of float) 0:174 'ing' ( in highp 2-component vector of float) 0:174 'h' ( noContraction temp highp 2-component vector of float) 0:175 indirect index ( temp lowp sampler2D) 0:175 'sArray' ( uniform 4-element array of lowp sampler2D) 0:175 add ( temp highp int) 0:175 'sIndex' ( uniform highp int) 0:175 Constant: 0:175 1 (const int) 0:176 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform highp int i}) 0:176 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) 0:176 add ( temp highp int) 0:176 'sIndex' ( uniform highp int) 0:176 Constant: 0:176 1 (const int) 0:177 indirect index (layout( column_major shared) temp block{layout( column_major shared) buffer highp int i}) 0:177 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) 0:177 subtract ( temp highp int) 0:177 'sIndex' ( uniform highp int) 0:177 Constant: 0:177 2 (const int) 0:178 direct index ( writeonly temp highp image2D) 0:178 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:178 Constant: 0:178 2 (const int) 0:179 indirect index ( writeonly temp highp image2D) 0:179 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:179 subtract ( temp highp int) 0:179 'sIndex' ( uniform highp int) 0:179 Constant: 0:179 2 (const int) 0:180 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) 0:180 direct index ( temp lowp sampler2D) 0:180 'sArray' ( uniform 4-element array of lowp sampler2D) 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 0.100000 0:180 0.100000 0:180 Convert float to int ( temp highp 2-component vector of int) 0:180 'inf' ( in highp 2-component vector of float) 0:181 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) 0:181 direct index ( temp lowp sampler2D) 0:181 'sArray' ( uniform 4-element array of lowp sampler2D) 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 0.100000 0:181 0.100000 0:181 Constant: 0:181 0 (const int) 0:181 0 (const int) 0:181 0 (const int) 0:181 0 (const int) 0:181 0 (const int) 0:181 0 (const int) 0:181 0 (const int) 0:181 0 (const int) 0:182 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) 0:182 direct index ( temp lowp sampler2D) 0:182 'sArray' ( uniform 4-element array of lowp sampler2D) 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 0.100000 0:182 0.100000 0:182 'offsets' ( uniform 4-element array of highp 2-component vector of int) 0:220 Function Definition: bufferT( ( global void) 0:220 Function Parameters: 0:222 Sequence 0:222 Sequence 0:222 move second child to first child ( temp highp int) 0:222 's1' ( temp highp int) 0:222 textureSize ( global highp int) 0:222 'bufSamp1' ( uniform highp samplerBuffer) 0:223 Sequence 0:223 move second child to first child ( temp highp int) 0:223 's2' ( temp highp int) 0:223 textureSize ( global highp int) 0:223 'bufSamp2' ( uniform highp isamplerBuffer) 0:224 Sequence 0:224 move second child to first child ( temp highp int) 0:224 's3' ( temp highp int) 0:224 textureSize ( global highp int) 0:224 'bufSamp3' ( uniform highp usamplerBuffer) 0:226 Sequence 0:226 move second child to first child ( temp highp int) 0:226 's4' ( temp highp int) 0:226 imageQuerySize ( global highp int) 0:226 'bufSamp4' ( writeonly uniform highp imageBuffer) 0:227 Sequence 0:227 move second child to first child ( temp highp int) 0:227 's5' ( temp highp int) 0:227 imageQuerySize ( global highp int) 0:227 'bufSamp5' ( writeonly uniform highp iimageBuffer) 0:228 Sequence 0:228 move second child to first child ( temp highp int) 0:228 's6' ( temp highp int) 0:228 imageQuerySize ( global highp int) 0:228 'bufSamp6' ( writeonly uniform highp uimageBuffer) 0:230 Sequence 0:230 move second child to first child ( temp highp 4-component vector of float) 0:230 'f1' ( temp highp 4-component vector of float) 0:230 textureFetch ( global highp 4-component vector of float) 0:230 'bufSamp1' ( uniform highp samplerBuffer) 0:230 's1' ( temp highp int) 0:231 Sequence 0:231 move second child to first child ( temp highp 4-component vector of int) 0:231 'f2' ( temp highp 4-component vector of int) 0:231 textureFetch ( global highp 4-component vector of int) 0:231 'bufSamp2' ( uniform highp isamplerBuffer) 0:231 's2' ( temp highp int) 0:232 Sequence 0:232 move second child to first child ( temp highp 4-component vector of uint) 0:232 'f3' ( temp highp 4-component vector of uint) 0:232 textureFetch ( global highp 4-component vector of uint) 0:232 'bufSamp3' ( uniform highp usamplerBuffer) 0:232 's3' ( temp highp int) 0:279 Function Definition: CAT( ( global void) 0:279 Function Parameters: 0:281 Sequence 0:281 Sequence 0:281 move second child to first child ( temp highp 3-component vector of int) 0:281 's4' ( temp highp 3-component vector of int) 0:281 textureSize ( global highp 3-component vector of int) 0:281 'CA4' ( uniform highp samplerCubeArray) 0:281 Constant: 0:281 1 (const int) 0:282 Sequence 0:282 move second child to first child ( temp highp 3-component vector of int) 0:282 's5' ( temp highp 3-component vector of int) 0:282 textureSize ( global highp 3-component vector of int) 0:282 'CA5' ( uniform highp samplerCubeArrayShadow) 0:282 Constant: 0:282 1 (const int) 0:283 Sequence 0:283 move second child to first child ( temp highp 3-component vector of int) 0:283 's6' ( temp highp 3-component vector of int) 0:283 textureSize ( global highp 3-component vector of int) 0:283 'CA6' ( uniform highp isamplerCubeArray) 0:283 Constant: 0:283 1 (const int) 0:284 Sequence 0:284 move second child to first child ( temp highp 3-component vector of int) 0:284 's7' ( temp highp 3-component vector of int) 0:284 textureSize ( global highp 3-component vector of int) 0:284 'CA7' ( uniform highp usamplerCubeArray) 0:284 Constant: 0:284 1 (const int) 0:286 Sequence 0:286 move second child to first child ( temp highp 4-component vector of float) 0:286 't4' ( temp highp 4-component vector of float) 0:286 texture ( global highp 4-component vector of float) 0:286 'CA4' ( uniform highp samplerCubeArray) 0:286 Constant: 0:286 0.500000 0:286 0.500000 0:286 0.500000 0:286 0.500000 0:287 Sequence 0:287 move second child to first child ( temp highp float) 0:287 't5' ( temp highp float) 0:287 texture ( global highp float) 0:287 'CA5' ( uniform highp samplerCubeArrayShadow) 0:287 Constant: 0:287 0.500000 0:287 0.500000 0:287 0.500000 0:287 0.500000 0:287 Constant: 0:287 3.000000 0:288 Sequence 0:288 move second child to first child ( temp highp 4-component vector of int) 0:288 't6' ( temp highp 4-component vector of int) 0:288 texture ( global highp 4-component vector of int) 0:288 'CA6' ( uniform highp isamplerCubeArray) 0:288 Constant: 0:288 0.500000 0:288 0.500000 0:288 0.500000 0:288 0.500000 0:289 Sequence 0:289 move second child to first child ( temp highp 4-component vector of uint) 0:289 't7' ( temp highp 4-component vector of uint) 0:289 texture ( global highp 4-component vector of uint) 0:289 'CA7' ( uniform highp usamplerCubeArray) 0:289 Constant: 0:289 0.500000 0:289 0.500000 0:289 0.500000 0:289 0.500000 0:291 Sequence 0:291 move second child to first child ( temp highp 4-component vector of float) 0:291 'L4' ( temp highp 4-component vector of float) 0:291 textureLod ( global highp 4-component vector of float) 0:291 'CA4' ( uniform highp samplerCubeArray) 0:291 Constant: 0:291 0.500000 0:291 0.500000 0:291 0.500000 0:291 0.500000 0:291 Constant: 0:291 0.240000 0:292 Sequence 0:292 move second child to first child ( temp highp 4-component vector of int) 0:292 'L6' ( temp highp 4-component vector of int) 0:292 textureLod ( global highp 4-component vector of int) 0:292 'CA6' ( uniform highp isamplerCubeArray) 0:292 Constant: 0:292 0.500000 0:292 0.500000 0:292 0.500000 0:292 0.500000 0:292 Constant: 0:292 0.260000 0:293 Sequence 0:293 move second child to first child ( temp highp 4-component vector of uint) 0:293 'L7' ( temp highp 4-component vector of uint) 0:293 textureLod ( global highp 4-component vector of uint) 0:293 'CA7' ( uniform highp usamplerCubeArray) 0:293 Constant: 0:293 0.500000 0:293 0.500000 0:293 0.500000 0:293 0.500000 0:293 Constant: 0:293 0.270000 0:295 Sequence 0:295 move second child to first child ( temp highp 4-component vector of float) 0:295 'g4' ( temp highp 4-component vector of float) 0:295 textureGrad ( global highp 4-component vector of float) 0:295 'CA4' ( uniform highp samplerCubeArray) 0:295 Constant: 0:295 0.500000 0:295 0.500000 0:295 0.500000 0:295 0.500000 0:295 Constant: 0:295 0.100000 0:295 0.100000 0:295 0.100000 0:295 Constant: 0:295 0.200000 0:295 0.200000 0:295 0.200000 0:296 Sequence 0:296 move second child to first child ( temp highp 4-component vector of int) 0:296 'g6' ( temp highp 4-component vector of int) 0:296 textureGrad ( global highp 4-component vector of int) 0:296 'CA6' ( uniform highp isamplerCubeArray) 0:296 Constant: 0:296 0.500000 0:296 0.500000 0:296 0.500000 0:296 0.500000 0:296 Constant: 0:296 0.100000 0:296 0.100000 0:296 0.100000 0:296 Constant: 0:296 0.200000 0:296 0.200000 0:296 0.200000 0:297 Sequence 0:297 move second child to first child ( temp highp 4-component vector of uint) 0:297 'g7' ( temp highp 4-component vector of uint) 0:297 textureGrad ( global highp 4-component vector of uint) 0:297 'CA7' ( uniform highp usamplerCubeArray) 0:297 Constant: 0:297 0.500000 0:297 0.500000 0:297 0.500000 0:297 0.500000 0:297 Constant: 0:297 0.100000 0:297 0.100000 0:297 0.100000 0:297 Constant: 0:297 0.200000 0:297 0.200000 0:297 0.200000 0:299 Sequence 0:299 move second child to first child ( temp highp 4-component vector of float) 0:299 'gath4' ( temp highp 4-component vector of float) 0:299 textureGather ( global highp 4-component vector of float) 0:299 'CA4' ( uniform highp samplerCubeArray) 0:299 Constant: 0:299 0.500000 0:299 0.500000 0:299 0.500000 0:299 0.500000 0:300 Sequence 0:300 move second child to first child ( temp highp 4-component vector of float) 0:300 'gathC4' ( temp highp 4-component vector of float) 0:300 textureGather ( global highp 4-component vector of float) 0:300 'CA4' ( uniform highp samplerCubeArray) 0:300 Constant: 0:300 0.500000 0:300 0.500000 0:300 0.500000 0:300 0.500000 0:300 Constant: 0:300 2 (const int) 0:301 Sequence 0:301 move second child to first child ( temp highp 4-component vector of int) 0:301 'gath6' ( temp highp 4-component vector of int) 0:301 textureGather ( global highp 4-component vector of int) 0:301 'CA6' ( uniform highp isamplerCubeArray) 0:301 Constant: 0:301 0.500000 0:301 0.500000 0:301 0.500000 0:301 0.500000 0:302 Sequence 0:302 move second child to first child ( temp highp 4-component vector of int) 0:302 'gathC6' ( temp highp 4-component vector of int) 0:302 textureGather ( global highp 4-component vector of int) 0:302 'CA6' ( uniform highp isamplerCubeArray) 0:302 Constant: 0:302 0.500000 0:302 0.500000 0:302 0.500000 0:302 0.500000 0:302 Constant: 0:302 1 (const int) 0:303 Sequence 0:303 move second child to first child ( temp highp 4-component vector of uint) 0:303 'gath7' ( temp highp 4-component vector of uint) 0:303 textureGather ( global highp 4-component vector of uint) 0:303 'CA7' ( uniform highp usamplerCubeArray) 0:303 Constant: 0:303 0.500000 0:303 0.500000 0:303 0.500000 0:303 0.500000 0:304 Sequence 0:304 move second child to first child ( temp highp 4-component vector of uint) 0:304 'gathC7' ( temp highp 4-component vector of uint) 0:304 textureGather ( global highp 4-component vector of uint) 0:304 'CA7' ( uniform highp usamplerCubeArray) 0:304 Constant: 0:304 0.500000 0:304 0.500000 0:304 0.500000 0:304 0.500000 0:304 Constant: 0:304 0 (const int) 0:306 Sequence 0:306 move second child to first child ( temp highp 4-component vector of float) 0:306 'gath5' ( temp highp 4-component vector of float) 0:306 textureGather ( global highp 4-component vector of float) 0:306 'CA5' ( uniform highp samplerCubeArrayShadow) 0:306 Constant: 0:306 0.500000 0:306 0.500000 0:306 0.500000 0:306 0.500000 0:306 Constant: 0:306 2.500000 0:308 Sequence 0:308 move second child to first child ( temp highp 3-component vector of int) 0:308 's1' ( temp highp 3-component vector of int) 0:308 imageQuerySize ( global highp 3-component vector of int) 0:308 'CA1' ( writeonly uniform highp imageCubeArray) 0:309 Sequence 0:309 move second child to first child ( temp highp 3-component vector of int) 0:309 's2' ( temp highp 3-component vector of int) 0:309 imageQuerySize ( global highp 3-component vector of int) 0:309 'CA2' ( writeonly uniform highp iimageCubeArray) 0:310 Sequence 0:310 move second child to first child ( temp highp 3-component vector of int) 0:310 's3' ( temp highp 3-component vector of int) 0:310 imageQuerySize ( global highp 3-component vector of int) 0:310 'CA3' ( writeonly uniform highp uimageCubeArray) 0:312 imageStore ( global highp void) 0:312 'CA1' ( writeonly uniform highp imageCubeArray) 0:312 's3' ( temp highp 3-component vector of int) 0:312 Constant: 0:312 1.000000 0:312 1.000000 0:312 1.000000 0:312 1.000000 0:313 imageStore ( global highp void) 0:313 'CA2' ( writeonly uniform highp iimageCubeArray) 0:313 's3' ( temp highp 3-component vector of int) 0:313 Constant: 0:313 1 (const int) 0:313 1 (const int) 0:313 1 (const int) 0:313 1 (const int) 0:314 imageStore ( global highp void) 0:314 'CA3' ( writeonly uniform highp uimageCubeArray) 0:314 's3' ( temp highp 3-component vector of int) 0:314 Constant: 0:314 1 (const uint) 0:314 1 (const uint) 0:314 1 (const uint) 0:314 1 (const uint) 0:316 Sequence 0:316 move second child to first child ( temp highp 4-component vector of float) 0:316 'cl1' ( temp highp 4-component vector of float) 0:316 imageLoad ( global highp 4-component vector of float) 0:316 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) 0:316 's3' ( temp highp 3-component vector of int) 0:317 Sequence 0:317 move second child to first child ( temp highp 4-component vector of int) 0:317 'cl2' ( temp highp 4-component vector of int) 0:317 imageLoad ( global highp 4-component vector of int) 0:317 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) 0:317 's3' ( temp highp 3-component vector of int) 0:318 Sequence 0:318 move second child to first child ( temp highp 4-component vector of uint) 0:318 'cl3' ( temp highp 4-component vector of uint) 0:318 imageLoad ( global highp 4-component vector of uint) 0:318 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) 0:318 's3' ( temp highp 3-component vector of int) 0:343 Function Definition: MSA( ( global void) 0:343 Function Parameters: 0:345 Sequence 0:345 Sequence 0:345 move second child to first child ( temp highp 4-component vector of float) 0:345 'tf' ( temp highp 4-component vector of float) 0:345 textureFetch ( global highp 4-component vector of float) 0:345 'samp2DMSA' ( uniform highp sampler2DMSArray) 0:345 Constant: 0:345 5 (const int) 0:345 5 (const int) 0:345 5 (const int) 0:345 Constant: 0:345 2 (const int) 0:346 Sequence 0:346 move second child to first child ( temp highp 4-component vector of int) 0:346 'tfi' ( temp highp 4-component vector of int) 0:346 textureFetch ( global highp 4-component vector of int) 0:346 'samp2DMSAi' ( uniform highp isampler2DMSArray) 0:346 Constant: 0:346 5 (const int) 0:346 5 (const int) 0:346 5 (const int) 0:346 Constant: 0:346 2 (const int) 0:347 Sequence 0:347 move second child to first child ( temp highp 4-component vector of uint) 0:347 'tfu' ( temp highp 4-component vector of uint) 0:347 textureFetch ( global highp 4-component vector of uint) 0:347 'samp2DMSAu' ( uniform highp usampler2DMSArray) 0:347 Constant: 0:347 5 (const int) 0:347 5 (const int) 0:347 5 (const int) 0:347 Constant: 0:347 2 (const int) 0:349 Sequence 0:349 move second child to first child ( temp highp 3-component vector of int) 0:349 'tfs' ( temp highp 3-component vector of int) 0:349 textureSize ( global highp 3-component vector of int) 0:349 'samp2DMSA' ( uniform highp sampler2DMSArray) 0:350 Sequence 0:350 move second child to first child ( temp highp 3-component vector of int) 0:350 'tfsi' ( temp highp 3-component vector of int) 0:350 textureSize ( global highp 3-component vector of int) 0:350 'samp2DMSAi' ( uniform highp isampler2DMSArray) 0:352 Sequence 0:352 move second child to first child ( temp highp 3-component vector of int) 0:352 'tfsu' ( temp highp 3-component vector of int) 0:352 textureSize ( global highp 3-component vector of int) 0:352 'samp2DMSAu' ( uniform highp usampler2DMSArray) 0:364 Function Definition: goodImageAtom( ( global void) 0:364 Function Parameters: 0:? Sequence 0:370 imageAtomicAdd ( global highp int) 0:370 'im2Di' (layout( r32i) uniform highp iimage2D) 0:370 'P' ( uniform highp 2-component vector of int) 0:370 'dati' ( temp highp int) 0:371 imageAtomicAdd ( global highp uint) 0:371 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:371 'P' ( uniform highp 2-component vector of int) 0:371 'datu' ( temp highp uint) 0:372 imageAtomicMin ( global highp int) 0:372 'im2Di' (layout( r32i) uniform highp iimage2D) 0:372 'P' ( uniform highp 2-component vector of int) 0:372 'dati' ( temp highp int) 0:373 imageAtomicMin ( global highp uint) 0:373 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:373 'P' ( uniform highp 2-component vector of int) 0:373 'datu' ( temp highp uint) 0:374 imageAtomicMax ( global highp int) 0:374 'im2Di' (layout( r32i) uniform highp iimage2D) 0:374 'P' ( uniform highp 2-component vector of int) 0:374 'dati' ( temp highp int) 0:375 imageAtomicMax ( global highp uint) 0:375 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:375 'P' ( uniform highp 2-component vector of int) 0:375 'datu' ( temp highp uint) 0:376 imageAtomicAnd ( global highp int) 0:376 'im2Di' (layout( r32i) uniform highp iimage2D) 0:376 'P' ( uniform highp 2-component vector of int) 0:376 'dati' ( temp highp int) 0:377 imageAtomicAnd ( global highp uint) 0:377 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:377 'P' ( uniform highp 2-component vector of int) 0:377 'datu' ( temp highp uint) 0:378 imageAtomicOr ( global highp int) 0:378 'im2Di' (layout( r32i) uniform highp iimage2D) 0:378 'P' ( uniform highp 2-component vector of int) 0:378 'dati' ( temp highp int) 0:379 imageAtomicOr ( global highp uint) 0:379 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:379 'P' ( uniform highp 2-component vector of int) 0:379 'datu' ( temp highp uint) 0:380 imageAtomicXor ( global highp int) 0:380 'im2Di' (layout( r32i) uniform highp iimage2D) 0:380 'P' ( uniform highp 2-component vector of int) 0:380 'dati' ( temp highp int) 0:381 imageAtomicXor ( global highp uint) 0:381 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:381 'P' ( uniform highp 2-component vector of int) 0:381 'datu' ( temp highp uint) 0:382 imageAtomicExchange ( global highp int) 0:382 'im2Di' (layout( r32i) uniform highp iimage2D) 0:382 'P' ( uniform highp 2-component vector of int) 0:382 'dati' ( temp highp int) 0:383 imageAtomicExchange ( global highp uint) 0:383 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:383 'P' ( uniform highp 2-component vector of int) 0:383 'datu' ( temp highp uint) 0:384 imageAtomicExchange ( global highp float) 0:384 'im2Df' (layout( r32f) uniform highp image2D) 0:384 'P' ( uniform highp 2-component vector of int) 0:384 'datf' ( temp highp float) 0:385 imageAtomicCompSwap ( global highp int) 0:385 'im2Di' (layout( r32i) uniform highp iimage2D) 0:385 'P' ( uniform highp 2-component vector of int) 0:385 Constant: 0:385 3 (const int) 0:385 'dati' ( temp highp int) 0:386 imageAtomicCompSwap ( global highp uint) 0:386 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:386 'P' ( uniform highp 2-component vector of int) 0:386 Constant: 0:386 5 (const uint) 0:386 'datu' ( temp highp uint) 0:398 Function Definition: badInterp( ( global void) 0:398 Function Parameters: 0:400 Sequence 0:400 Constant: 0:400 0.000000 0:401 Constant: 0:401 0.000000 0:402 Constant: 0:402 0.000000 0:? Linker Objects 0:? 's' ( shared highp 4-component vector of float) 0:? 'v' ( buffer highp 4-component vector of float) 0:? 'ini' ( in highp int) 0:? 'x' (layout( location=2) uniform highp 4X4 matrix of float) 0:? 'y' (layout( location=3) uniform highp 4X4 matrix of float) 0:? 'xi' (layout( location=2) smooth out highp 4X4 matrix of float) 0:? 'yi' (layout( location=3) smooth out highp 4X4 matrix of float) 0:? 's2dms' ( uniform highp sampler2DMS) 0:? 'is2dms' ( uniform highp isampler2DMS) 0:? 'us2dms' ( uniform highp usampler2DMS) 0:? 'us2dmsa' ( uniform mediump usampler2DMSArray) 0:? 'outb' ( smooth out bool) 0:? 'outo' ( smooth out lowp sampler2D) 0:? 'outa' ( smooth out 4-element array of highp float) 0:? 'outaa' ( smooth out 4-element array of 2-element array of highp float) 0:? 'outs' ( smooth out structure{ global highp float f}) 0:? 'outasa' ( smooth out 4-element array of structure{ global highp float f}) 0:? 'outsa' ( smooth out 4-element array of structure{ global highp float f}) 0:? 'outSA' ( smooth out structure{ global 4-element array of highp float f}) 0:? 'outSS' ( smooth out structure{ global highp float f, global structure{ global highp float f} s}) 0:? 'U430i' (layout( column_major std430) uniform block{layout( column_major std430 offset=0) uniform highp int a}) 0:? 'B430i' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp int a}) 0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s}) 0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon}) 0:? 'aliased' (layout( location=12) smooth out highp int) 0:? 'inbinst' ( in block{ in highp int a}) 0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:? 'smon' ( smooth out block{ out highp int i}) 0:? 'fmon' ( flat out block{ out highp int i}) 0:? 'cmon' ( centroid out block{ out highp int i}) 0:? 'imon' ( invariant out block{ out highp int i}) 0:? 'inf' ( in highp 2-component vector of float) 0:? 'ing' ( in highp 2-component vector of float) 0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int) 0:? 'sArray' ( uniform 4-element array of lowp sampler2D) 0:? 'sIndex' ( uniform highp int) 0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) 0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) 0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 'badSamp1' ( uniform mediump samplerBuffer) 0:? 'badSamp2' ( uniform mediump isamplerBuffer) 0:? 'badSamp3' ( uniform mediump usamplerBuffer) 0:? 'badSamp4' ( writeonly uniform mediump imageBuffer) 0:? 'badSamp5' ( writeonly uniform mediump iimageBuffer) 0:? 'badSamp6' ( writeonly uniform mediump uimageBuffer) 0:? 'noPreSamp1' ( uniform mediump samplerBuffer) 0:? 'noPreSamp2' ( uniform mediump isamplerBuffer) 0:? 'noPreSamp3' ( uniform mediump usamplerBuffer) 0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer) 0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer) 0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer) 0:? 'bufSamp1' ( uniform highp samplerBuffer) 0:? 'bufSamp2' ( uniform highp isamplerBuffer) 0:? 'bufSamp3' ( uniform highp usamplerBuffer) 0:? 'bufSamp4' ( writeonly uniform highp imageBuffer) 0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer) 0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer) 0:? 'badCA1' ( writeonly uniform mediump imageCubeArray) 0:? 'badCA2' ( writeonly uniform mediump iimageCubeArray) 0:? 'badCA3' ( writeonly uniform mediump uimageCubeArray) 0:? 'badCA4' ( uniform mediump samplerCubeArray) 0:? 'badCA5' ( uniform mediump samplerCubeArrayShadow) 0:? 'badCA6' ( uniform mediump isamplerCubeArray) 0:? 'badCA7' ( uniform mediump usamplerCubeArray) 0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray) 0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray) 0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray) 0:? 'noPreCA4' ( uniform mediump samplerCubeArray) 0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow) 0:? 'noPreCA6' ( uniform mediump isamplerCubeArray) 0:? 'noPreCA7' ( uniform mediump usamplerCubeArray) 0:? 'CA1' ( writeonly uniform highp imageCubeArray) 0:? 'CA2' ( writeonly uniform highp iimageCubeArray) 0:? 'CA3' ( writeonly uniform highp uimageCubeArray) 0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) 0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) 0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) 0:? 'CA4' ( uniform highp samplerCubeArray) 0:? 'CA5' ( uniform highp samplerCubeArrayShadow) 0:? 'CA6' ( uniform highp isamplerCubeArray) 0:? 'CA7' ( uniform highp usamplerCubeArray) 0:? 'bad2DMS' ( uniform mediump sampler2DMSArray) 0:? 'bad2DMSi' ( uniform mediump isampler2DMSArray) 0:? 'bad2DMSu' ( uniform mediump usampler2DMSArray) 0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray) 0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray) 0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray) 0:? 'samp2DMSA' ( uniform highp sampler2DMSArray) 0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray) 0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray) 0:? 'im2Df' (layout( r32f) uniform highp image2D) 0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:? 'im2Di' (layout( r32i) uniform highp iimage2D) 0:? 'P' ( uniform highp 2-component vector of int) 0:? 'colorSampInBad' ( smooth sample out highp 4-component vector of float) 0:? 'colorSample' ( smooth sample out highp 4-component vector of float) 0:? 'colorfsi' ( flat sample out highp 4-component vector of float) 0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float) 0:? 'inv4' ( in highp 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 310 Requested GL_EXT_texture_buffer Requested GL_OES_gpu_shader5 Requested GL_OES_shader_image_atomic Requested GL_OES_shader_io_blocks Requested GL_OES_shader_multisample_interpolation Requested GL_OES_texture_buffer Requested GL_OES_texture_cube_map_array Requested GL_OES_texture_storage_multisample_2d_array ERROR: node is still EOpNull! 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp highp 2-component vector of uint) 0:15 'u2' ( temp highp 2-component vector of uint) 0:15 addCarry ( global highp 2-component vector of uint) 0:15 'u2' ( temp highp 2-component vector of uint) 0:15 'u2' ( temp highp 2-component vector of uint) 0:15 'u2' ( temp highp 2-component vector of uint) 0:17 move second child to first child ( temp highp uint) 0:17 'u1' ( temp highp uint) 0:17 subBorrow ( global highp uint) 0:17 'u1' ( temp highp uint) 0:17 'u1' ( temp highp uint) 0:17 'u1' ( temp highp uint) 0:19 uMulExtended ( global highp void) 0:19 'u4' ( temp highp 4-component vector of uint) 0:19 'u4' ( temp highp 4-component vector of uint) 0:19 'u4' ( temp highp 4-component vector of uint) 0:19 'u4' ( temp highp 4-component vector of uint) 0:21 iMulExtended ( global highp void) 0:21 'i4' ( temp highp 4-component vector of int) 0:21 'i4' ( temp highp 4-component vector of int) 0:21 'i4' ( temp highp 4-component vector of int) 0:21 'i4' ( temp highp 4-component vector of int) 0:23 move second child to first child ( temp highp int) 0:23 'i1' ( temp highp int) 0:23 bitfieldExtract ( global highp int) 0:23 'i1' ( temp highp int) 0:23 Constant: 0:23 4 (const int) 0:23 Constant: 0:23 5 (const int) 0:25 move second child to first child ( temp highp 3-component vector of uint) 0:25 'u3' ( temp highp 3-component vector of uint) 0:25 bitfieldExtract ( global highp 3-component vector of uint) 0:25 'u3' ( temp highp 3-component vector of uint) 0:25 Constant: 0:25 4 (const int) 0:25 Constant: 0:25 5 (const int) 0:27 move second child to first child ( temp highp 3-component vector of int) 0:27 'i3' ( temp highp 3-component vector of int) 0:27 bitfieldInsert ( global highp 3-component vector of int) 0:27 'i3' ( temp highp 3-component vector of int) 0:27 'i3' ( temp highp 3-component vector of int) 0:27 Constant: 0:27 4 (const int) 0:27 Constant: 0:27 5 (const int) 0:28 move second child to first child ( temp highp uint) 0:28 'u1' ( temp highp uint) 0:28 bitfieldInsert ( global highp uint) 0:28 'u1' ( temp highp uint) 0:28 'u1' ( temp highp uint) 0:28 Constant: 0:28 4 (const int) 0:28 Constant: 0:28 5 (const int) 0:30 move second child to first child ( temp highp 2-component vector of int) 0:30 'i2' ( temp highp 2-component vector of int) 0:30 bitFieldReverse ( global highp 2-component vector of int) 0:30 'i2' ( temp highp 2-component vector of int) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 'u4' ( temp highp 4-component vector of uint) 0:31 bitFieldReverse ( global highp 4-component vector of uint) 0:31 'u4' ( temp highp 4-component vector of uint) 0:32 move second child to first child ( temp highp int) 0:32 'i1' ( temp highp int) 0:32 bitCount ( global lowp int, operation at highp) 0:32 'i1' ( temp highp int) 0:33 move second child to first child ( temp highp 3-component vector of int) 0:33 'i3' ( temp highp 3-component vector of int) 0:33 bitCount ( global lowp 3-component vector of int, operation at highp) 0:33 'u3' ( temp highp 3-component vector of uint) 0:34 move second child to first child ( temp highp 2-component vector of int) 0:34 'i2' ( temp highp 2-component vector of int) 0:34 findLSB ( global lowp 2-component vector of int, operation at highp) 0:34 'i2' ( temp highp 2-component vector of int) 0:35 move second child to first child ( temp highp 4-component vector of int) 0:35 'i4' ( temp highp 4-component vector of int) 0:35 findLSB ( global lowp 4-component vector of int, operation at highp) 0:35 'u4' ( temp highp 4-component vector of uint) 0:36 move second child to first child ( temp highp int) 0:36 'i1' ( temp highp int) 0:36 findMSB ( global lowp int, operation at highp) 0:36 'i1' ( temp highp int) 0:37 move second child to first child ( temp highp 2-component vector of int) 0:37 'i2' ( temp highp 2-component vector of int) 0:37 findMSB ( global lowp 2-component vector of int, operation at highp) 0:37 'u2' ( temp highp 2-component vector of uint) 0:40 move second child to first child ( temp highp 3-component vector of float) 0:40 'v3' ( temp highp 3-component vector of float) 0:40 frexp ( global highp 3-component vector of float) 0:40 'v3' ( temp highp 3-component vector of float) 0:40 'i3' ( temp highp 3-component vector of int) 0:42 move second child to first child ( temp highp 2-component vector of float) 0:42 'v2' ( temp highp 2-component vector of float) 0:42 ldexp ( global highp 2-component vector of float) 0:42 'v2' ( temp highp 2-component vector of float) 0:42 'i2' ( temp highp 2-component vector of int) 0:45 move second child to first child ( temp highp uint) 0:45 'u1' ( temp highp uint) 0:45 PackUnorm4x8 ( global highp uint, operation at mediump) 0:45 'v4' ( temp mediump 4-component vector of float) 0:46 move second child to first child ( temp highp uint) 0:46 'u1' ( temp highp uint) 0:46 PackSnorm4x8 ( global highp uint, operation at mediump) 0:46 'v4' ( temp mediump 4-component vector of float) 0:47 move second child to first child ( temp mediump 4-component vector of float) 0:47 'v4' ( temp mediump 4-component vector of float) 0:47 UnpackUnorm4x8 ( global mediump 4-component vector of float, operation at highp) 0:47 'u1' ( temp highp uint) 0:48 move second child to first child ( temp mediump 4-component vector of float) 0:48 'v4' ( temp mediump 4-component vector of float) 0:48 UnpackSnorm4x8 ( global mediump 4-component vector of float, operation at highp) 0:48 'u1' ( temp highp uint) 0:? Linker Objects 0:? 's' ( shared highp 4-component vector of float) 0:? 'v' ( buffer highp 4-component vector of float) 0:? 'ini' ( in highp int) 0:? 'x' (layout( location=2) uniform highp 4X4 matrix of float) 0:? 'y' (layout( location=3) uniform highp 4X4 matrix of float) 0:? 'xi' (layout( location=2) smooth out highp 4X4 matrix of float) 0:? 'yi' (layout( location=3) smooth out highp 4X4 matrix of float) 0:? 's2dms' ( uniform highp sampler2DMS) 0:? 'is2dms' ( uniform highp isampler2DMS) 0:? 'us2dms' ( uniform highp usampler2DMS) 0:? 'us2dmsa' ( uniform mediump usampler2DMSArray) 0:? 'outb' ( smooth out bool) 0:? 'outo' ( smooth out lowp sampler2D) 0:? 'outa' ( smooth out 4-element array of highp float) 0:? 'outaa' ( smooth out 4-element array of 2-element array of highp float) 0:? 'outs' ( smooth out structure{ global highp float f}) 0:? 'outasa' ( smooth out 4-element array of structure{ global highp float f}) 0:? 'outsa' ( smooth out 4-element array of structure{ global highp float f}) 0:? 'outSA' ( smooth out structure{ global 4-element array of highp float f}) 0:? 'outSS' ( smooth out structure{ global highp float f, global structure{ global highp float f} s}) 0:? 'U430i' (layout( column_major std430) uniform block{layout( column_major std430 offset=0) uniform highp int a}) 0:? 'B430i' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp int a}) 0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s}) 0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon}) 0:? 'aliased' (layout( location=12) smooth out highp int) 0:? 'inbinst' ( in block{ in highp int a}) 0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:? 'smon' ( smooth out block{ out highp int i}) 0:? 'fmon' ( flat out block{ out highp int i}) 0:? 'cmon' ( centroid out block{ out highp int i}) 0:? 'imon' ( invariant out block{ out highp int i}) 0:? 'inf' ( in highp 2-component vector of float) 0:? 'ing' ( in highp 2-component vector of float) 0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int) 0:? 'sArray' ( uniform 4-element array of lowp sampler2D) 0:? 'sIndex' ( uniform highp int) 0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) 0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) 0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 'badSamp1' ( uniform mediump samplerBuffer) 0:? 'badSamp2' ( uniform mediump isamplerBuffer) 0:? 'badSamp3' ( uniform mediump usamplerBuffer) 0:? 'badSamp4' ( writeonly uniform mediump imageBuffer) 0:? 'badSamp5' ( writeonly uniform mediump iimageBuffer) 0:? 'badSamp6' ( writeonly uniform mediump uimageBuffer) 0:? 'noPreSamp1' ( uniform mediump samplerBuffer) 0:? 'noPreSamp2' ( uniform mediump isamplerBuffer) 0:? 'noPreSamp3' ( uniform mediump usamplerBuffer) 0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer) 0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer) 0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer) 0:? 'bufSamp1' ( uniform highp samplerBuffer) 0:? 'bufSamp2' ( uniform highp isamplerBuffer) 0:? 'bufSamp3' ( uniform highp usamplerBuffer) 0:? 'bufSamp4' ( writeonly uniform highp imageBuffer) 0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer) 0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer) 0:? 'badCA1' ( writeonly uniform mediump imageCubeArray) 0:? 'badCA2' ( writeonly uniform mediump iimageCubeArray) 0:? 'badCA3' ( writeonly uniform mediump uimageCubeArray) 0:? 'badCA4' ( uniform mediump samplerCubeArray) 0:? 'badCA5' ( uniform mediump samplerCubeArrayShadow) 0:? 'badCA6' ( uniform mediump isamplerCubeArray) 0:? 'badCA7' ( uniform mediump usamplerCubeArray) 0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray) 0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray) 0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray) 0:? 'noPreCA4' ( uniform mediump samplerCubeArray) 0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow) 0:? 'noPreCA6' ( uniform mediump isamplerCubeArray) 0:? 'noPreCA7' ( uniform mediump usamplerCubeArray) 0:? 'CA1' ( writeonly uniform highp imageCubeArray) 0:? 'CA2' ( writeonly uniform highp iimageCubeArray) 0:? 'CA3' ( writeonly uniform highp uimageCubeArray) 0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) 0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) 0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) 0:? 'CA4' ( uniform highp samplerCubeArray) 0:? 'CA5' ( uniform highp samplerCubeArrayShadow) 0:? 'CA6' ( uniform highp isamplerCubeArray) 0:? 'CA7' ( uniform highp usamplerCubeArray) 0:? 'bad2DMS' ( uniform mediump sampler2DMSArray) 0:? 'bad2DMSi' ( uniform mediump isampler2DMSArray) 0:? 'bad2DMSu' ( uniform mediump usampler2DMSArray) 0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray) 0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray) 0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray) 0:? 'samp2DMSA' ( uniform highp sampler2DMSArray) 0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray) 0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray) 0:? 'im2Df' (layout( r32f) uniform highp image2D) 0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:? 'im2Di' (layout( r32i) uniform highp iimage2D) 0:? 'P' ( uniform highp 2-component vector of int) 0:? 'colorSampInBad' ( smooth sample out highp 4-component vector of float) 0:? 'colorSample' ( smooth sample out highp 4-component vector of float) 0:? 'colorfsi' ( flat sample out highp 4-component vector of float) 0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float) 0:? 'inv4' ( in highp 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/310AofA.vert.out000066400000000000000000000510641506534232700212170ustar00rootroot00000000000000310AofA.vert ERROR: 0:17: '' : array size required ERROR: 0:23: '' : array size required ERROR: 0:28: '[]' : only outermost dimension of an array of arrays can be implicitly sized ERROR: 0:40: '' : array size required ERROR: 0:48: 'constructor' : constructing non-array constituent from array argument ERROR: 0:49: 'constructor' : array constructor argument not correct type to construct array element ERROR: 0:62: '[' : array index out of range '4' ERROR: 0:78: 'assign' : cannot convert from ' global 4-element array of 7-element array of highp float' to ' global 5-element array of 7-element array of highp float' ERROR: 0:79: 'assign' : cannot convert from ' global 4-element array of 7-element array of highp float' to ' global unsized 1-element array of 7-element array of highp float' ERROR: 0:81: 'foo' : no matching overloaded function found ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global 4-element array of 7-element array of highp float' and a right operand of type ' global 5-element array of 7-element array of highp float' (or there is no acceptable conversion) ERROR: 0:90: '[' : array index out of range '5' ERROR: 0:94: '[' : index out of range '-1' ERROR: 0:96: 'assign' : cannot convert from ' temp 3-element array of highp 4-component vector of float' to 'layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float' ERROR: 0:103: '' : array size required ERROR: 0:104: '' : array size required ERROR: 0:105: '' : array size required ERROR: 0:106: '' : array size required ERROR: 0:107: '' : array size required ERROR: 0:110: 'vertex input arrays' : not supported with this profile: es ERROR: 0:111: 'vertex-shader array-of-array output' : not supported with this profile: es ERROR: 0:113: 'array-of-array of block' : not supported with this profile: es ERROR: 22 compilation errors. No code generated. Shader version: 310 ERROR: node is still EOpNull! 0:8 Function Definition: f(b1;f1;u1[4];i1[3][2]; ( global void) 0:8 Function Parameters: 0:8 'a' ( in bool) 0:8 'b' ( in highp float) 0:8 'c' ( in 4-element array of highp uint) 0:8 'd' ( in 3-element array of 2-element array of highp int) 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:? Sequence 0:13 Function Call: f(b1;f1;u1[4];i1[3][2]; ( global void) 0:13 Constant: 0:13 false (const bool) 0:13 Constant: 0:13 12.100000 0:13 Constant: 0:13 0 (const uint) 0:13 1 (const uint) 0:13 1 (const uint) 0:13 2 (const uint) 0:13 'd' ( temp 3-element array of 2-element array of highp int) 0:44 Function Definition: foo(f1[5][7]; ( global 4-element array of 7-element array of highp float) 0:44 Function Parameters: 0:44 'a' ( in 5-element array of 7-element array of highp float) 0:? Sequence 0:47 move second child to first child ( temp 7-element array of highp float) 0:47 'r' ( temp 7-element array of highp float) 0:47 direct index ( temp 7-element array of highp float) 0:47 'a' ( in 5-element array of 7-element array of highp float) 0:47 Constant: 0:47 2 (const int) 0:48 Constant: 0:48 0.000000 0:49 Constant: 0:49 0.000000 0:50 Branch: Return with expression 0:50 Construct float ( temp 4-element array of 7-element array of highp float) 0:50 direct index ( temp 7-element array of highp float) 0:50 'a' ( in 5-element array of 7-element array of highp float) 0:50 Constant: 0:50 0 (const int) 0:50 direct index ( temp 7-element array of highp float) 0:50 'a' ( in 5-element array of 7-element array of highp float) 0:50 Constant: 0:50 1 (const int) 0:50 'r' ( temp 7-element array of highp float) 0:50 direct index ( temp 7-element array of highp float) 0:50 'a' ( in 5-element array of 7-element array of highp float) 0:50 Constant: 0:50 3 (const int) 0:51 Branch: Return with expression 0:51 Construct float ( temp 4-element array of 7-element array of highp float) 0:51 direct index ( temp 7-element array of highp float) 0:51 'a' ( in 5-element array of 7-element array of highp float) 0:51 Constant: 0:51 0 (const int) 0:51 direct index ( temp 7-element array of highp float) 0:51 'a' ( in 5-element array of 7-element array of highp float) 0:51 Constant: 0:51 1 (const int) 0:51 'r' ( temp 7-element array of highp float) 0:51 direct index ( temp 7-element array of highp float) 0:51 'a' ( in 5-element array of 7-element array of highp float) 0:51 Constant: 0:51 3 (const int) 0:52 Branch: Return with expression 0:52 Construct float ( temp 4-element array of 7-element array of highp float) 0:52 direct index ( temp 7-element array of highp float) 0:52 'a' ( in 5-element array of 7-element array of highp float) 0:52 Constant: 0:52 0 (const int) 0:52 direct index ( temp 7-element array of highp float) 0:52 'a' ( in 5-element array of 7-element array of highp float) 0:52 Constant: 0:52 1 (const int) 0:52 direct index ( temp 7-element array of highp float) 0:52 'a' ( in 5-element array of 7-element array of highp float) 0:52 Constant: 0:52 2 (const int) 0:52 direct index ( temp 7-element array of highp float) 0:52 'a' ( in 5-element array of 7-element array of highp float) 0:52 Constant: 0:52 3 (const int) 0:55 Function Definition: bar(f1[5][7]; ( global void) 0:55 Function Parameters: 0:55 '' ( in 5-element array of 7-element array of highp float) 0:57 Function Definition: foo2( ( global void) 0:57 Function Parameters: 0:? Sequence 0:? Sequence 0:62 move second child to first child ( temp highp float) 0:62 direct index ( temp highp float) 0:62 direct index ( temp 2-element array of highp float) 0:62 direct index ( temp 4-element array of 2-element array of highp float) 0:62 'gu' ( temp 3-element array of 4-element array of 2-element array of highp float) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 4 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 4.000000 0:64 Sequence 0:64 move second child to first child ( temp 3-element array of 2-element array of highp 4-component vector of float) 0:64 'ca4' ( temp 3-element array of 2-element array of highp 4-component vector of float) 0:66 Constant: 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 1.000000 0:66 1.000000 0:66 1.000000 0:66 1.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 1.000000 0:66 1.000000 0:66 1.000000 0:66 1.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 1.000000 0:66 1.000000 0:66 1.000000 0:66 1.000000 0:67 Sequence 0:67 move second child to first child ( temp 3-element array of 2-element array of highp 4-component vector of float) 0:67 'caim' ( temp 3-element array of 2-element array of highp 4-component vector of float) 0:69 Constant: 0:69 4.000000 0:69 4.000000 0:69 4.000000 0:69 4.000000 0:69 2.000000 0:69 2.000000 0:69 2.000000 0:69 2.000000 0:69 4.000000 0:69 4.000000 0:69 4.000000 0:69 4.000000 0:69 2.000000 0:69 2.000000 0:69 2.000000 0:69 2.000000 0:69 4.000000 0:69 4.000000 0:69 4.000000 0:69 4.000000 0:69 2.000000 0:69 2.000000 0:69 2.000000 0:69 2.000000 0:70 Sequence 0:70 move second child to first child ( temp 3-element array of 2-element array of highp 4-component vector of float) 0:70 'caim2' ( temp 3-element array of 2-element array of highp 4-component vector of float) 0:72 Constant: 0:72 4.000000 0:72 4.000000 0:72 4.000000 0:72 4.000000 0:72 2.000000 0:72 2.000000 0:72 2.000000 0:72 2.000000 0:72 4.000000 0:72 4.000000 0:72 4.000000 0:72 4.000000 0:72 2.000000 0:72 2.000000 0:72 2.000000 0:72 2.000000 0:72 4.000000 0:72 4.000000 0:72 4.000000 0:72 4.000000 0:72 2.000000 0:72 2.000000 0:72 2.000000 0:72 2.000000 0:73 Sequence 0:73 move second child to first child ( temp 3-element array of 2-element array of highp 4-component vector of float) 0:73 'caim3' ( temp 3-element array of 2-element array of highp 4-component vector of float) 0:75 Constant: 0:75 4.000000 0:75 4.000000 0:75 4.000000 0:75 4.000000 0:75 2.000000 0:75 2.000000 0:75 2.000000 0:75 2.000000 0:75 4.000000 0:75 4.000000 0:75 4.000000 0:75 4.000000 0:75 2.000000 0:75 2.000000 0:75 2.000000 0:75 2.000000 0:75 4.000000 0:75 4.000000 0:75 4.000000 0:75 4.000000 0:75 2.000000 0:75 2.000000 0:75 2.000000 0:75 2.000000 0:77 move second child to first child ( temp 4-element array of 7-element array of highp float) 0:77 'g4' ( global 4-element array of 7-element array of highp float) 0:77 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of highp float) 0:77 'g5' ( global 5-element array of 7-element array of highp float) 0:78 'g5' ( global 5-element array of 7-element array of highp float) 0:79 'gu' ( global unsized 1-element array of 7-element array of highp float) 0:81 Constant: 0:81 0.000000 0:82 Function Call: bar(f1[5][7]; ( global void) 0:82 'g5' ( global 5-element array of 7-element array of highp float) 0:84 Test condition and select ( temp void) 0:84 Condition 0:84 Compare Equal ( temp bool) 0:84 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of highp float) 0:84 'g5' ( global 5-element array of 7-element array of highp float) 0:84 'g4' ( global 4-element array of 7-element array of highp float) 0:84 true case is null 0:86 Test condition and select ( temp void) 0:86 Condition 0:86 Constant: 0:86 false (const bool) 0:86 true case is null 0:90 move second child to first child ( temp highp float) 0:90 direct index ( temp highp float) 0:90 direct index ( temp 7-element array of highp float) 0:90 'u' ( temp 5-element array of 7-element array of highp float) 0:90 Constant: 0:90 5 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 5.000000 0:91 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of highp float) 0:91 'u' ( temp 5-element array of 7-element array of highp float) 0:94 direct index (layout( column_major shared) temp highp 4-component vector of float) 0:94 v: direct index for structure (layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float) 0:94 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 1-element array of highp float u, layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float v}) 0:94 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer unsized 1-element array of highp float u, layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float v}) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 -1 (const int) 0:95 move second child to first child ( temp highp 4-component vector of float) 0:95 direct index (layout( column_major shared) temp highp 4-component vector of float) 0:95 v: direct index for structure (layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float) 0:95 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 1-element array of highp float u, layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float v}) 0:95 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer unsized 1-element array of highp float u, layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float v}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 4.300000 0:95 4.300000 0:95 4.300000 0:95 4.300000 0:96 v: direct index for structure (layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float) 0:96 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 1-element array of highp float u, layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float v}) 0:96 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer unsized 1-element array of highp float u, layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float v}) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 1 (const int) 0:98 Constant: 0:98 7 (const int) 0:99 array length ( temp int) 0:99 v: direct index for structure (layout( column_major shared) buffer unsized 2-element array of 7-element array of highp 4-component vector of float) 0:99 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer unsized 2-element array of 7-element array of highp 4-component vector of float v}) 0:99 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer unsized 2-element array of 7-element array of highp 4-component vector of float v}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:117 Function Definition: func(mf33[3][2]; ( global highp 3-component vector of float) 0:117 Function Parameters: 0:117 'x' ( in 3-element array of 2-element array of highp 3X3 matrix of float) 0:119 Sequence 0:119 Sequence 0:119 move second child to first child ( temp highp 3X3 matrix of float) 0:119 'a0' ( temp highp 3X3 matrix of float) 0:119 direct index ( temp highp 3X3 matrix of float) 0:119 direct index ( temp 2-element array of highp 3X3 matrix of float) 0:119 'x' ( in 3-element array of 2-element array of highp 3X3 matrix of float) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 1 (const int) 0:120 Branch: Return with expression 0:120 direct index ( temp highp 3-component vector of float) 0:120 'a0' ( temp highp 3X3 matrix of float) 0:120 Constant: 0:120 2 (const int) 0:? Linker Objects 0:? 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer unsized 1-element array of highp float u, layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float v}) 0:? 'uname' (layout( column_major shared) uniform 3-element array of block{layout( column_major shared) uniform highp float u, layout( column_major shared) uniform unsized 1-element array of highp 4-component vector of float v}) 0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer unsized 1-element array of 1-element array of highp 4-component vector of float v}) 0:? 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer unsized 2-element array of 7-element array of highp 4-component vector of float v}) 0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float) 0:? 'gu' ( global unsized 1-element array of 7-element array of highp float) 0:? 'g4' ( global 4-element array of 7-element array of highp float) 0:? 'g5' ( global 5-element array of 7-element array of highp float) 0:? 'inArray' ( in 2-element array of 3-element array of highp float) 0:? 'outArray' ( smooth out 2-element array of 3-element array of highp float) 0:? 'ubaaname' (layout( column_major shared) uniform 2-element array of 3-element array of block{layout( column_major shared) uniform highp int a}) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 310 ERROR: node is still EOpNull! 0:8 Function Definition: f(b1;f1;u1[4];i1[3][2]; ( global void) 0:8 Function Parameters: 0:8 'a' ( in bool) 0:8 'b' ( in highp float) 0:8 'c' ( in 4-element array of highp uint) 0:8 'd' ( in 3-element array of 2-element array of highp int) 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:? Sequence 0:13 Function Call: f(b1;f1;u1[4];i1[3][2]; ( global void) 0:13 Constant: 0:13 false (const bool) 0:13 Constant: 0:13 12.100000 0:13 Constant: 0:13 0 (const uint) 0:13 1 (const uint) 0:13 1 (const uint) 0:13 2 (const uint) 0:13 'd' ( temp 3-element array of 2-element array of highp int) 0:? Linker Objects 0:? 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer 1-element array of highp float u, layout( column_major shared) buffer unsized 2-element array of highp 4-component vector of float v}) 0:? 'uname' (layout( column_major shared) uniform 3-element array of block{layout( column_major shared) uniform highp float u, layout( column_major shared) uniform 1-element array of highp 4-component vector of float v}) 0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer unsized 1-element array of 1-element array of highp 4-component vector of float v}) 0:? 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer unsized 2-element array of 7-element array of highp 4-component vector of float v}) 0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float) 0:? 'gu' ( global 1-element array of 7-element array of highp float) 0:? 'g4' ( global 4-element array of 7-element array of highp float) 0:? 'g5' ( global 5-element array of 7-element array of highp float) 0:? 'inArray' ( in 2-element array of 3-element array of highp float) 0:? 'outArray' ( smooth out 2-element array of 3-element array of highp float) 0:? 'ubaaname' (layout( column_major shared) uniform 2-element array of 3-element array of block{layout( column_major shared) uniform highp int a}) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/310implicitSizeArrayError.vert.out000066400000000000000000000042561506534232700250700ustar00rootroot00000000000000310implicitSizeArrayError.vert ERROR: 0:3: '' : array size required ERROR: 1 compilation errors. No code generated. Shader version: 310 ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp highp int) 0:7 'o' (layout( location=0) smooth out highp int) 0:7 direct index (layout( column_major shared) temp highp int) 0:7 a: direct index for structure (layout( column_major shared) uniform unsized 3-element array of highp int) 0:7 'uni' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform unsized 3-element array of highp int a}) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 2 (const int) 0:? Linker Objects 0:? 'uni' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform unsized 3-element array of highp int a}) 0:? 'o' (layout( location=0) smooth out highp int) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 310 ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp highp int) 0:7 'o' (layout( location=0) smooth out highp int) 0:7 direct index (layout( column_major shared) temp highp int) 0:7 a: direct index for structure (layout( column_major shared) uniform 3-element array of highp int) 0:7 'uni' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform 3-element array of highp int a}) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 2 (const int) 0:? Linker Objects 0:? 'uni' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform 3-element array of highp int a}) 0:? 'o' (layout( location=0) smooth out highp int) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/310runtimeArray.vert.out000066400000000000000000000223021506534232700230640ustar00rootroot00000000000000310runtimeArray.vert ERROR: 0:9: '' : array size required ERROR: 1 compilation errors. No code generated. Shader version: 310 ERROR: node is still EOpNull! 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp highp float) 0:14 'o' (layout( location=0) smooth out highp float) 0:14 f: direct index for structure ( global highp float) 0:14 direct index (layout( column_major shared) temp structure{ global highp float f}) 0:14 s: direct index for structure (layout( column_major shared) buffer unsized 6-element array of structure{ global highp float f}) 0:14 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 6-element array of structure{ global highp float f} s}) 0:14 Constant: 0:14 0 (const uint) 0:14 Constant: 0:14 5 (const int) 0:14 Constant: 0:14 0 (const int) 0:15 add second child into first child ( temp highp float) 0:15 'o' (layout( location=0) smooth out highp float) 0:15 f: direct index for structure ( global highp float) 0:15 direct index (layout( column_major shared) temp structure{ global highp float f}) 0:15 s: direct index for structure (layout( column_major shared) buffer unsized 7-element array of structure{ global highp float f}) 0:15 'b2name' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 7-element array of structure{ global highp float f} s}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 6 (const int) 0:15 Constant: 0:15 0 (const int) 0:16 add second child into first child ( temp highp float) 0:16 'o' (layout( location=0) smooth out highp float) 0:16 f: direct index for structure ( global highp float) 0:16 direct index (layout( column_major shared) temp structure{ global highp float f}) 0:16 s: direct index for structure (layout( column_major shared) buffer unsized 8-element array of structure{ global highp float f}) 0:16 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 8-element array of structure{ global highp float f} s}) 0:16 'b3name' (layout( column_major shared) buffer unsized 4-element array of block{layout( column_major shared) buffer unsized 8-element array of structure{ global highp float f} s}) 0:16 Constant: 0:16 3 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 7 (const int) 0:16 Constant: 0:16 0 (const int) 0:17 add second child into first child ( temp highp float) 0:17 'o' (layout( location=0) smooth out highp float) 0:17 f: direct index for structure ( global highp float) 0:17 direct index (layout( column_major shared) temp structure{ global highp float f}) 0:17 s: direct index for structure (layout( column_major shared) buffer unsized 9-element array of structure{ global highp float f}) 0:17 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 9-element array of structure{ global highp float f} s}) 0:17 'b4name' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer unsized 9-element array of structure{ global highp float f} s}) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 8 (const int) 0:17 Constant: 0:17 0 (const int) 0:? Linker Objects 0:? 'o' (layout( location=0) smooth out highp float) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 6-element array of structure{ global highp float f} s}) 0:? 'b2name' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 7-element array of structure{ global highp float f} s}) 0:? 'b3name' (layout( column_major shared) buffer unsized 4-element array of block{layout( column_major shared) buffer unsized 8-element array of structure{ global highp float f} s}) 0:? 'b4name' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer unsized 9-element array of structure{ global highp float f} s}) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 310 ERROR: node is still EOpNull! 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp highp float) 0:14 'o' (layout( location=0) smooth out highp float) 0:14 f: direct index for structure ( global highp float) 0:14 direct index (layout( column_major shared) temp structure{ global highp float f}) 0:14 s: direct index for structure (layout( column_major shared) buffer unsized 6-element array of structure{ global highp float f}) 0:14 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 6-element array of structure{ global highp float f} s}) 0:14 Constant: 0:14 0 (const uint) 0:14 Constant: 0:14 5 (const int) 0:14 Constant: 0:14 0 (const int) 0:15 add second child into first child ( temp highp float) 0:15 'o' (layout( location=0) smooth out highp float) 0:15 f: direct index for structure ( global highp float) 0:15 direct index (layout( column_major shared) temp structure{ global highp float f}) 0:15 s: direct index for structure (layout( column_major shared) buffer unsized 7-element array of structure{ global highp float f}) 0:15 'b2name' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 7-element array of structure{ global highp float f} s}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 6 (const int) 0:15 Constant: 0:15 0 (const int) 0:16 add second child into first child ( temp highp float) 0:16 'o' (layout( location=0) smooth out highp float) 0:16 f: direct index for structure ( global highp float) 0:16 direct index (layout( column_major shared) temp structure{ global highp float f}) 0:16 s: direct index for structure (layout( column_major shared) buffer unsized 8-element array of structure{ global highp float f}) 0:16 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 8-element array of structure{ global highp float f} s}) 0:16 'b3name' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer unsized 8-element array of structure{ global highp float f} s}) 0:16 Constant: 0:16 3 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 7 (const int) 0:16 Constant: 0:16 0 (const int) 0:17 add second child into first child ( temp highp float) 0:17 'o' (layout( location=0) smooth out highp float) 0:17 f: direct index for structure ( global highp float) 0:17 direct index (layout( column_major shared) temp structure{ global highp float f}) 0:17 s: direct index for structure (layout( column_major shared) buffer unsized 9-element array of structure{ global highp float f}) 0:17 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 9-element array of structure{ global highp float f} s}) 0:17 'b4name' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer unsized 9-element array of structure{ global highp float f} s}) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 8 (const int) 0:17 Constant: 0:17 0 (const int) 0:? Linker Objects 0:? 'o' (layout( location=0) smooth out highp float) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 6-element array of structure{ global highp float f} s}) 0:? 'b2name' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 7-element array of structure{ global highp float f} s}) 0:? 'b3name' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer unsized 8-element array of structure{ global highp float f} s}) 0:? 'b4name' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer unsized 9-element array of structure{ global highp float f} s}) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/320.comp.out000066400000000000000000000054621506534232700204500ustar00rootroot00000000000000320.comp ERROR: 0:8: 'dFdx' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 0:9: 'dFdy' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 0:10: 'fwidth' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 0:11: 'dFdxCoarse' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 0:12: 'dFdyCoarse' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 0:13: 'fwidthCoarse' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 0:14: 'dFdxFine' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 0:15: 'dFdyFine' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 0:16: 'fwidthFine' : required extension not requested: GL_NV_compute_shader_derivatives ERROR: 9 compilation errors. No code generated. Shader version: 320 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:8 Sequence 0:8 dPdx ( global highp float) 0:8 'fX' ( global highp float) 0:9 dPdy ( global highp float) 0:9 'fY' ( global highp float) 0:10 fwidth ( global highp float) 0:10 'fX' ( global highp float) 0:11 dPdxCoarse ( global highp float) 0:11 'fX' ( global highp float) 0:12 dPdyCoarse ( global highp float) 0:12 'fY' ( global highp float) 0:13 fwidthCoarse ( global highp float) 0:13 'fX' ( global highp float) 0:14 dPdxFine ( global highp float) 0:14 'fX' ( global highp float) 0:15 dPdyFine ( global highp float) 0:15 'fY' ( global highp float) 0:16 fwidthFine ( global highp float) 0:16 'fX' ( global highp float) 0:? Linker Objects 0:? 'fX' ( global highp float) 0:? 'fY' ( global highp float) Linked compute stage: Shader version: 320 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:8 Sequence 0:8 dPdx ( global highp float) 0:8 'fX' ( global highp float) 0:9 dPdy ( global highp float) 0:9 'fY' ( global highp float) 0:10 fwidth ( global highp float) 0:10 'fX' ( global highp float) 0:11 dPdxCoarse ( global highp float) 0:11 'fX' ( global highp float) 0:12 dPdyCoarse ( global highp float) 0:12 'fY' ( global highp float) 0:13 fwidthCoarse ( global highp float) 0:13 'fX' ( global highp float) 0:14 dPdxFine ( global highp float) 0:14 'fX' ( global highp float) 0:15 dPdyFine ( global highp float) 0:15 'fY' ( global highp float) 0:16 fwidthFine ( global highp float) 0:16 'fX' ( global highp float) 0:? Linker Objects 0:? 'fX' ( global highp float) 0:? 'fY' ( global highp float) glslang-16.0.0/Test/baseResults/320.frag.out000066400000000000000000000765251506534232700204410ustar00rootroot00000000000000320.frag ERROR: 0:3: 'output block' : not supported in this stage: fragment ERROR: 0:7: 'float' : type requires declaration of default precision qualifier ERROR: 0:8: '' : cannot nest a structure definition inside a structure or block ERROR: 0:16: 'location' : overlapping use of location 13 ERROR: 0:18: 'inbname2' : Cannot reuse block name within the same interface: in ERROR: 0:23: 'badmember' : nameless block contains a member that already has a name at global scope ERROR: 0:27: 'inbname' : redefinition ERROR: 0:29: 'vAnon' : redefinition ERROR: 0:43: 'origin_upper_left' : not supported with this profile: es ERROR: 0:43: 'pixel_center_integer' : not supported with this profile: es ERROR: 0:43: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:47: 'depth layout qualifier' : not supported with this profile: es ERROR: 0:51: 'assign' : l-value required "gl_FragDepth" (can't modify gl_FragDepth if using early_fragment_tests) ERROR: 0:79: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument ERROR: 0:124: 'rgba32f' : format requires readonly or writeonly memory qualifier ERROR: 0:125: 'rgba8ui' : format requires readonly or writeonly memory qualifier ERROR: 0:126: 'rgba16i' : format requires readonly or writeonly memory qualifier ERROR: 0:152: 'imageAtomicMax' : only supported on image with format r32i or r32ui ERROR: 0:153: 'imageAtomicMax' : only supported on image with format r32i or r32ui ERROR: 0:154: 'imageAtomicExchange' : only supported on image with format r32f ERROR: 0:157: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output ERROR: 0:158: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output ERROR: 0:159: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output ERROR: 0:160: 'noperspective' : Reserved word. ERROR: 0:160: 'noperspective' : not supported for this version or the enabled extensions ERROR: 0:160: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output ERROR: 0:165: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output ERROR: 0:180: 'interpolateAtCentroid' : no matching overloaded function found ERROR: 0:180: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' ERROR: 0:182: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:184: 'interpolateAtSample' : no matching overloaded function found ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' ERROR: 0:186: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element ERROR: 0:189: 'interpolateAtOffset' : no matching overloaded function found ERROR: 0:189: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' ERROR: 0:191: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:192: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:196: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:197: 'outp' : undeclared identifier ERROR: 0:197: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element ERROR: 0:197: 'assign' : cannot convert from ' global float' to ' temp mediump 4-component vector of float' ERROR: 0:217: 'blend equation' : can only apply to 'out' ERROR: 0:218: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:219: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:220: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:221: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:222: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:223: 'blend_support' : unknown blend equation ERROR: 0:225: 'fragment-shader array-of-array output' : not supported with this profile: es ERROR: 49 compilation errors. No code generated. Shader version: 320 gl_FragCoord pixel center is integer gl_FragCoord origin is upper left using early_fragment_tests using depth_any using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations ERROR: node is still EOpNull! 0:35 Function Definition: fooIO( ( global void) 0:35 Function Parameters: 0:37 Sequence 0:37 Sequence 0:37 move second child to first child ( temp mediump 4-component vector of float) 0:37 'v' ( temp mediump 4-component vector of float) 0:37 add ( temp mediump 4-component vector of float) 0:37 v: direct index for structure ( in mediump 4-component vector of float) 0:37 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) 0:37 Constant: 0:37 1 (const int) 0:37 vAnon: direct index for structure (layout( location=13) centroid in mediump 4-component vector of float) 0:37 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) 0:37 Constant: 0:37 1 (const uint) 0:38 vector scale second child into first child ( temp mediump 4-component vector of float) 0:38 'v' ( temp mediump 4-component vector of float) 0:38 f: direct index for structure ( in mediump float) 0:38 direct index ( temp block{ in mediump float f}) 0:38 'arrayedInst' ( in 4-element array of block{ in mediump float f}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 vector scale second child into first child ( temp mediump 4-component vector of float) 0:39 'v' ( temp mediump 4-component vector of float) 0:39 f: direct index for structure ( in mediump float) 0:39 indirect index ( temp block{ in mediump float f}) 0:39 'arrayedInst' ( in 4-element array of block{ in mediump float f}) 0:39 'i' ( uniform mediump int) 0:39 Constant: 0:39 0 (const int) 0:49 Function Definition: main( ( global void) 0:49 Function Parameters: 0:51 Sequence 0:51 move second child to first child ( temp highp float) 0:51 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:51 Constant: 0:51 0.200000 0:52 Sequence 0:52 move second child to first child ( temp bool) 0:52 'f' ( temp bool) 0:52 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:57 Function Definition: foo_GS( ( global void) 0:57 Function Parameters: 0:59 Sequence 0:59 Sequence 0:59 move second child to first child ( temp highp int) 0:59 'l' ( temp highp int) 0:59 'gl_Layer' ( flat in highp int Layer) 0:60 Sequence 0:60 move second child to first child ( temp highp int) 0:60 'p' ( temp highp int) 0:60 'gl_PrimitiveID' ( flat in highp int PrimitiveID) 0:73 Function Definition: pfoo( ( global void) 0:73 Function Parameters: 0:? Sequence 0:76 move second child to first child ( temp mediump 2-component vector of float) 0:76 'h' ( noContraction temp mediump 2-component vector of float) 0:76 fma ( global mediump 2-component vector of float) 0:76 'inf' ( smooth in mediump 2-component vector of float) 0:76 'ing' ( smooth in mediump 2-component vector of float) 0:76 'h' ( noContraction temp mediump 2-component vector of float) 0:77 textureGatherOffset ( global lowp 4-component vector of float, operation at mediump) 0:77 direct index ( temp lowp sampler2D) 0:77 'sArray' ( uniform 4-element array of lowp sampler2D) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.100000 0:77 0.100000 0:77 Convert float to int ( temp mediump 2-component vector of int) 0:77 'inf' ( smooth in mediump 2-component vector of float) 0:78 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump) 0:78 direct index ( temp lowp sampler2D) 0:78 'sArray' ( uniform 4-element array of lowp sampler2D) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 0.100000 0:78 0.100000 0:78 Constant: 0:78 0 (const int) 0:78 0 (const int) 0:78 0 (const int) 0:78 0 (const int) 0:78 0 (const int) 0:78 0 (const int) 0:78 0 (const int) 0:78 0 (const int) 0:79 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump) 0:79 direct index ( temp lowp sampler2D) 0:79 'sArray' ( uniform 4-element array of lowp sampler2D) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.100000 0:79 0.100000 0:79 'offsets' ( uniform 4-element array of mediump 2-component vector of int) 0:102 Function Definition: CAT( ( global void) 0:102 Function Parameters: 0:104 Sequence 0:104 Sequence 0:104 move second child to first child ( temp highp 4-component vector of float) 0:104 'b4' ( temp highp 4-component vector of float) 0:104 texture ( global highp 4-component vector of float) 0:104 'CA4' ( uniform highp samplerCubeArray) 0:104 Constant: 0:104 0.500000 0:104 0.500000 0:104 0.500000 0:104 0.500000 0:104 Constant: 0:104 0.240000 0:105 Sequence 0:105 move second child to first child ( temp highp 4-component vector of int) 0:105 'b6' ( temp highp 4-component vector of int) 0:105 texture ( global highp 4-component vector of int) 0:105 'CA6' ( uniform highp isamplerCubeArray) 0:105 Constant: 0:105 0.500000 0:105 0.500000 0:105 0.500000 0:105 0.500000 0:105 Constant: 0:105 0.260000 0:106 Sequence 0:106 move second child to first child ( temp highp 4-component vector of uint) 0:106 'b7' ( temp highp 4-component vector of uint) 0:106 texture ( global highp 4-component vector of uint) 0:106 'CA7' ( uniform highp usamplerCubeArray) 0:106 Constant: 0:106 0.500000 0:106 0.500000 0:106 0.500000 0:106 0.500000 0:106 Constant: 0:106 0.270000 0:109 Function Definition: goodSample( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 Sequence 0:111 move second child to first child ( temp lowp int) 0:111 'a1' ( temp lowp int) 0:111 'gl_SampleID' ( flat in lowp int SampleId) 0:112 Sequence 0:112 move second child to first child ( temp mediump 2-component vector of float) 0:112 'a2' ( temp mediump 2-component vector of float) 0:112 'gl_SamplePosition' ( smooth in mediump 2-component vector of float SamplePosition) 0:113 Sequence 0:113 move second child to first child ( temp highp int) 0:113 'a3' ( temp highp int) 0:113 direct index ( flat temp highp int SampleMaskIn) 0:113 'gl_SampleMaskIn' ( flat in unsized 1-element array of highp int SampleMaskIn) 0:113 Constant: 0:113 0 (const int) 0:114 move second child to first child ( temp highp int) 0:114 direct index ( temp highp int SampleMaskIn) 0:114 'gl_SampleMask' ( out unsized 1-element array of highp int SampleMaskIn) 0:114 Constant: 0:114 0 (const int) 0:114 'a3' ( temp highp int) 0:115 Sequence 0:115 move second child to first child ( temp mediump int) 0:115 'n1' ( temp mediump int) 0:115 Constant: 0:115 4 (const int) 0:116 Sequence 0:116 move second child to first child ( temp mediump int) 0:116 'n2' ( temp mediump int) 0:116 'gl_NumSamples' ( uniform lowp int) 0:128 Function Definition: goodImageAtom( ( global void) 0:128 Function Parameters: 0:? Sequence 0:134 imageAtomicAdd ( global highp int) 0:134 'im2Di' (layout( r32i) uniform highp iimage2D) 0:134 'P' ( uniform mediump 2-component vector of int) 0:134 'dati' ( temp mediump int) 0:135 imageAtomicAdd ( global highp uint) 0:135 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:135 'P' ( uniform mediump 2-component vector of int) 0:135 'datu' ( temp mediump uint) 0:136 imageAtomicMin ( global highp int) 0:136 'im2Di' (layout( r32i) uniform highp iimage2D) 0:136 'P' ( uniform mediump 2-component vector of int) 0:136 'dati' ( temp mediump int) 0:137 imageAtomicMin ( global highp uint) 0:137 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:137 'P' ( uniform mediump 2-component vector of int) 0:137 'datu' ( temp mediump uint) 0:138 imageAtomicMax ( global highp int) 0:138 'im2Di' (layout( r32i) uniform highp iimage2D) 0:138 'P' ( uniform mediump 2-component vector of int) 0:138 'dati' ( temp mediump int) 0:139 imageAtomicMax ( global highp uint) 0:139 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:139 'P' ( uniform mediump 2-component vector of int) 0:139 'datu' ( temp mediump uint) 0:140 imageAtomicAnd ( global highp int) 0:140 'im2Di' (layout( r32i) uniform highp iimage2D) 0:140 'P' ( uniform mediump 2-component vector of int) 0:140 'dati' ( temp mediump int) 0:141 imageAtomicAnd ( global highp uint) 0:141 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:141 'P' ( uniform mediump 2-component vector of int) 0:141 'datu' ( temp mediump uint) 0:142 imageAtomicOr ( global highp int) 0:142 'im2Di' (layout( r32i) uniform highp iimage2D) 0:142 'P' ( uniform mediump 2-component vector of int) 0:142 'dati' ( temp mediump int) 0:143 imageAtomicOr ( global highp uint) 0:143 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:143 'P' ( uniform mediump 2-component vector of int) 0:143 'datu' ( temp mediump uint) 0:144 imageAtomicXor ( global highp int) 0:144 'im2Di' (layout( r32i) uniform highp iimage2D) 0:144 'P' ( uniform mediump 2-component vector of int) 0:144 'dati' ( temp mediump int) 0:145 imageAtomicXor ( global highp uint) 0:145 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:145 'P' ( uniform mediump 2-component vector of int) 0:145 'datu' ( temp mediump uint) 0:146 imageAtomicExchange ( global highp int) 0:146 'im2Di' (layout( r32i) uniform highp iimage2D) 0:146 'P' ( uniform mediump 2-component vector of int) 0:146 'dati' ( temp mediump int) 0:147 imageAtomicExchange ( global highp uint) 0:147 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:147 'P' ( uniform mediump 2-component vector of int) 0:147 'datu' ( temp mediump uint) 0:148 imageAtomicExchange ( global highp float) 0:148 'im2Df' (layout( r32f) uniform highp image2D) 0:148 'P' ( uniform mediump 2-component vector of int) 0:148 'datf' ( temp mediump float) 0:149 imageAtomicCompSwap ( global highp int) 0:149 'im2Di' (layout( r32i) uniform highp iimage2D) 0:149 'P' ( uniform mediump 2-component vector of int) 0:149 Constant: 0:149 3 (const int) 0:149 'dati' ( temp mediump int) 0:150 imageAtomicCompSwap ( global highp uint) 0:150 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:150 'P' ( uniform mediump 2-component vector of int) 0:150 Constant: 0:150 5 (const uint) 0:150 'datu' ( temp mediump uint) 0:152 imageAtomicMax ( global highp int) 0:152 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) 0:152 'P' ( uniform mediump 2-component vector of int) 0:152 'dati' ( temp mediump int) 0:153 imageAtomicMax ( global highp uint) 0:153 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) 0:153 'P' ( uniform mediump 2-component vector of int) 0:153 'datu' ( temp mediump uint) 0:154 imageAtomicExchange ( global highp float) 0:154 'badIm2Df' (layout( rgba32f) uniform highp image2D) 0:154 'P' ( uniform mediump 2-component vector of int) 0:154 'datf' ( temp mediump float) 0:169 Function Definition: interp( ( global void) 0:169 Function Parameters: 0:? Sequence 0:176 move second child to first child ( temp mediump 2-component vector of float) 0:176 'res2' ( temp mediump 2-component vector of float) 0:176 interpolateAtCentroid ( global mediump 2-component vector of float) 0:176 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:177 move second child to first child ( temp mediump 4-component vector of float) 0:177 'res4' ( temp mediump 4-component vector of float) 0:177 interpolateAtCentroid ( global mediump 4-component vector of float) 0:177 'colorSampIn' ( smooth sample in mediump 4-component vector of float) 0:178 move second child to first child ( temp mediump 4-component vector of float) 0:178 'res4' ( temp mediump 4-component vector of float) 0:178 interpolateAtCentroid ( global mediump 4-component vector of float) 0:178 'colorfsi' ( flat sample in mediump 4-component vector of float) 0:179 move second child to first child ( temp mediump float) 0:179 'res' ( temp mediump float) 0:179 interpolateAtCentroid ( global mediump float) 0:179 'scalarIn' ( smooth in mediump float) 0:180 'res3' ( temp mediump 3-component vector of float) 0:181 move second child to first child ( temp mediump 3-component vector of float) 0:181 'res3' ( temp mediump 3-component vector of float) 0:181 interpolateAtCentroid ( global mediump 3-component vector of float) 0:181 direct index ( smooth sample temp mediump 3-component vector of float) 0:181 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:181 Constant: 0:181 2 (const int) 0:182 move second child to first child ( temp mediump 2-component vector of float) 0:182 'res2' ( temp mediump 2-component vector of float) 0:182 interpolateAtCentroid ( global mediump 2-component vector of float) 0:182 vector swizzle ( temp mediump 2-component vector of float) 0:182 direct index ( smooth sample temp mediump 3-component vector of float) 0:182 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:182 Constant: 0:182 2 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:184 'res3' ( temp mediump 3-component vector of float) 0:185 move second child to first child ( temp mediump 3-component vector of float) 0:185 'res3' ( temp mediump 3-component vector of float) 0:185 interpolateAtSample ( global mediump 3-component vector of float) 0:185 indirect index ( smooth sample temp mediump 3-component vector of float) 0:185 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:185 'i' ( uniform mediump int) 0:185 Constant: 0:185 0 (const int) 0:186 move second child to first child ( temp mediump 2-component vector of float) 0:186 'res2' ( temp mediump 2-component vector of float) 0:186 interpolateAtSample ( global mediump 2-component vector of float) 0:186 vector swizzle ( temp mediump 2-component vector of float) 0:186 direct index ( smooth sample temp mediump 3-component vector of float) 0:186 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:186 Constant: 0:186 2 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 2 (const int) 0:187 move second child to first child ( temp mediump float) 0:187 'res' ( temp mediump float) 0:187 interpolateAtSample ( global mediump float) 0:187 'scalarIn' ( smooth in mediump float) 0:187 Constant: 0:187 1 (const int) 0:189 'res3' ( temp mediump 3-component vector of float) 0:190 move second child to first child ( temp mediump 3-component vector of float) 0:190 'res3' ( temp mediump 3-component vector of float) 0:190 interpolateAtOffset ( global mediump 3-component vector of float) 0:190 direct index ( smooth sample temp mediump 3-component vector of float) 0:190 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:190 Constant: 0:190 2 (const int) 0:190 Constant: 0:190 0.200000 0:190 0.200000 0:191 move second child to first child ( temp mediump 2-component vector of float) 0:191 'res2' ( temp mediump 2-component vector of float) 0:191 interpolateAtOffset ( global mediump 2-component vector of float) 0:191 vector swizzle ( temp mediump 2-component vector of float) 0:191 direct index ( smooth sample temp mediump 3-component vector of float) 0:191 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:191 Constant: 0:191 2 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 0.200000 0:191 0.200000 0:192 move second child to first child ( temp mediump float) 0:192 'res' ( temp mediump float) 0:192 interpolateAtOffset ( global mediump float) 0:192 add ( temp mediump float) 0:192 'scalarIn' ( smooth in mediump float) 0:192 'scalarIn' ( smooth in mediump float) 0:192 Constant: 0:192 0.200000 0:192 0.200000 0:193 move second child to first child ( temp mediump float) 0:193 'res' ( temp mediump float) 0:193 interpolateAtOffset ( global mediump float) 0:193 'scalarIn' ( smooth in mediump float) 0:193 Constant: 0:193 0.200000 0:193 0.200000 0:196 move second child to first child ( temp mediump float) 0:196 'res' ( temp mediump float) 0:196 interpolateAtCentroid ( global mediump float) 0:196 'f' ( temp mediump float) 0:197 'res4' ( temp mediump 4-component vector of float) 0:221 Function Definition: blendFoo( ( temp void) 0:221 Function Parameters: 0:222 Function Definition: blendFoo(vf3; ( global void) 0:222 Function Parameters: 0:222 'v' ( in mediump 3-component vector of float) 0:? Linker Objects 0:? 'outbinst' ( out block{ out mediump int a}) 0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) 0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) 0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float) 0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f}) 0:? 'i' ( uniform mediump int) 0:? 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:? 'inf' ( smooth in mediump 2-component vector of float) 0:? 'ing' ( smooth in mediump 2-component vector of float) 0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int) 0:? 'sArray' ( uniform 4-element array of lowp sampler2D) 0:? 'sIndex' ( uniform mediump int) 0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i}) 0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i}) 0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 'CA1' ( writeonly uniform highp imageCubeArray) 0:? 'CA2' ( writeonly uniform highp iimageCubeArray) 0:? 'CA3' ( writeonly uniform highp uimageCubeArray) 0:? 'CA4' ( uniform highp samplerCubeArray) 0:? 'CA5' ( uniform highp samplerCubeArrayShadow) 0:? 'CA6' ( uniform highp isamplerCubeArray) 0:? 'CA7' ( uniform highp usamplerCubeArray) 0:? 'gl_SampleMaskIn' ( flat in unsized 1-element array of highp int SampleMaskIn) 0:? 'gl_SampleMask' ( out unsized 1-element array of highp int SampleMaskIn) 0:? 'im2Df' (layout( r32f) uniform highp image2D) 0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:? 'im2Di' (layout( r32i) uniform highp iimage2D) 0:? 'P' ( uniform mediump 2-component vector of int) 0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D) 0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) 0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) 0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float) 0:? 'colorBadFlat' ( flat out mediump 4-component vector of float) 0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float) 0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float) 0:? 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:? 'scalarIn' ( smooth in mediump float) 0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float) 0:? 'colorSampleBad' ( sample out mediump 4-component vector of float) 0:? 'colorfsi' ( flat sample in mediump 4-component vector of float) 0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:? 'badout' ( out mediump 4-component vector of float) 0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float) Linked fragment stage: ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers Shader version: 320 gl_FragCoord pixel center is integer gl_FragCoord origin is upper left using early_fragment_tests using depth_any using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations ERROR: node is still EOpNull! 0:49 Function Definition: main( ( global void) 0:49 Function Parameters: 0:51 Sequence 0:51 move second child to first child ( temp highp float) 0:51 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:51 Constant: 0:51 0.200000 0:52 Sequence 0:52 move second child to first child ( temp bool) 0:52 'f' ( temp bool) 0:52 'gl_FrontFacing' ( gl_FrontFacing bool Face) 0:? Linker Objects 0:? 'outbinst' ( out block{ out mediump int a}) 0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) 0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) 0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float) 0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f}) 0:? 'i' ( uniform mediump int) 0:? 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) 0:? 'inf' ( smooth in mediump 2-component vector of float) 0:? 'ing' ( smooth in mediump 2-component vector of float) 0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int) 0:? 'sArray' ( uniform 4-element array of lowp sampler2D) 0:? 'sIndex' ( uniform mediump int) 0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i}) 0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i}) 0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 'CA1' ( writeonly uniform highp imageCubeArray) 0:? 'CA2' ( writeonly uniform highp iimageCubeArray) 0:? 'CA3' ( writeonly uniform highp uimageCubeArray) 0:? 'CA4' ( uniform highp samplerCubeArray) 0:? 'CA5' ( uniform highp samplerCubeArrayShadow) 0:? 'CA6' ( uniform highp isamplerCubeArray) 0:? 'CA7' ( uniform highp usamplerCubeArray) 0:? 'gl_SampleMaskIn' ( flat in unsized 1-element array of highp int SampleMaskIn) 0:? 'gl_SampleMask' ( out unsized 1-element array of highp int SampleMaskIn) 0:? 'im2Df' (layout( r32f) uniform highp image2D) 0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:? 'im2Di' (layout( r32i) uniform highp iimage2D) 0:? 'P' ( uniform mediump 2-component vector of int) 0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D) 0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) 0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) 0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float) 0:? 'colorBadFlat' ( flat out mediump 4-component vector of float) 0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float) 0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float) 0:? 'colorfc' ( centroid flat in mediump 2-component vector of float) 0:? 'scalarIn' ( smooth in mediump float) 0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float) 0:? 'colorSampleBad' ( sample out mediump 4-component vector of float) 0:? 'colorfsi' ( flat sample in mediump 4-component vector of float) 0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) 0:? 'badout' ( out mediump 4-component vector of float) 0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float) glslang-16.0.0/Test/baseResults/320.geom.out000066400000000000000000000345671506534232700204510ustar00rootroot00000000000000320.geom ERROR: 0:19: 'fromVertex' : block instance name redefinition ERROR: 0:23: 'fromVertex' : redefinition ERROR: 0:25: 'fooC' : block instance name redefinition ERROR: 0:33: 'EmitStreamVertex' : no matching overloaded function found 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 '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 ERROR: 0:52: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices ERROR: 0:52: 'max_vertices' : cannot change previously set layout value ERROR: 0:53: 'max_vertices' : can only apply to a standalone qualifier ERROR: 0:58: 'points' : cannot change previously set output primitive ERROR: 0:59: 'points' : cannot change previously set output primitive ERROR: 0:60: 'triangle_strip' : cannot apply to input ERROR: 0:61: 'triangle_strip' : cannot apply to: uniform ERROR: 0:62: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:63: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:64: 'invocations' : can only apply to a standalone qualifier ERROR: 0:66: 'invocations' : can only apply to a standalone qualifier ERROR: 0:67: 'max_vertices' : can only apply to a standalone qualifier ERROR: 0:68: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:71: 'lines' : cannot apply to 'out' ERROR: 0:73: 'triangles' : cannot change previously set input primitive ERROR: 0:74: 'triangles_adjacency' : cannot change previously set input primitive ERROR: 0:106: 'gl_ViewportIndex' : undeclared identifier ERROR: 0:107: 'gl_MaxViewports' : undeclared identifier ERROR: 0:113: 'lines_adjacency' : inconsistent input primitive for array size of explArrayBad ERROR: 0:114: 'in' : type must be an array: nonArrayed ERROR: 0:122: 'component' : not supported with this profile: es ERROR: 0:126: 'gl_MaxGeometryVaryingComponents' : undeclared identifier ERROR: 0:127: 'gl_VerticesIn' : undeclared identifier ERROR: 0:132: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_geometry_point_size GL_OES_geometry_point_size ERROR: 0:133: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_geometry_point_size GL_OES_geometry_point_size ERROR: 36 compilation errors. No code generated. Shader version: 320 invocations = 4 max_vertices = 200 input primitive = lines_adjacency output primitive = triangle_strip ERROR: node is still EOpNull! 0:29 Function Definition: main( ( global void) 0:29 Function Parameters: 0:31 Sequence 0:31 EmitVertex ( global void) 0:32 EndPrimitive ( global void) 0:33 Constant: 0:33 0.000000 0:34 Constant: 0:34 0.000000 0:36 move second child to first child ( temp mediump 3-component vector of float) 0:36 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float) 0:36 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:36 Constant: 0:36 0 (const uint) 0:36 color: direct index for structure ( in mediump 3-component vector of float) 0:36 direct index ( temp block{ in mediump 3-component vector of float color}) 0:36 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:37 move second child to first child ( temp float) 0:37 Constant: 0:37 0.000000 0:38 Constant: 0:38 0.000000 0:39 move second child to first child ( temp highp 4-component vector of float) 0:39 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position) 0:39 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) 0:39 Constant: 0:39 0 (const uint) 0:39 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:39 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:39 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:41 move second child to first child ( temp highp int) 0:41 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID) 0:41 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) 0:42 move second child to first child ( temp highp int) 0:42 'gl_Layer' (layout( stream=0) out highp int Layer) 0:42 Constant: 0:42 2 (const int) 0:53 Function Definition: foo(i1; ( global void) 0:53 Function Parameters: 0:53 'a' ( in highp int) 0:55 Sequence 0:55 move second child to first child ( temp mediump 4-component vector of float) 0:55 a: direct index for structure (layout( stream=0) out mediump 4-component vector of float) 0:55 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1.000000 0:55 1.000000 0:55 1.000000 0:55 1.000000 0:104 Function Definition: fooe1( ( global void) 0:104 Function Parameters: 0:106 Sequence 0:106 'gl_ViewportIndex' ( temp float) 0:107 'gl_MaxViewports' ( temp float) 0:108 Constant: 0:108 4 (const int) 0:109 Sequence 0:109 move second child to first child ( temp highp int) 0:109 'inv' ( temp highp int) 0:109 'gl_InvocationID' ( in highp int InvocationID) 0:124 Function Definition: notHere( ( global void) 0:124 Function Parameters: 0:126 Sequence 0:126 'gl_MaxGeometryVaryingComponents' ( temp float) 0:127 'gl_VerticesIn' ( temp float) 0:130 Function Definition: pointSize2( ( global void) 0:130 Function Parameters: 0:132 Sequence 0:132 Sequence 0:132 move second child to first child ( temp highp float) 0:132 'ps' ( temp highp float) 0:132 gl_PointSize: direct index for structure ( in highp float PointSize) 0:132 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:132 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:132 Constant: 0:132 3 (const int) 0:132 Constant: 0:132 1 (const int) 0:133 move second child to first child ( temp highp float) 0:133 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize highp float PointSize) 0:133 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) 0:133 Constant: 0:133 1 (const uint) 0:133 'ps' ( temp highp float) 0:? Linker Objects 0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) 0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float) 0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float) 0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) 0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float) 0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float) 0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a}) 0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c}) 0:? 'insn' ( in 4-element array of block{ in highp int a15}) 0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15}) 0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15}) 0:? 'summ' ( const highp int) 0:? 2752 (const int) 0:? 'explArray' ( in 4-element array of mediump 4-component vector of float) 0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float) 0:? 'nonArrayed' ( in mediump 4-component vector of float) 0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float) 0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float) 0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float) 0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float) 0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float) Linked geometry stage: Shader version: 320 invocations = 4 max_vertices = 200 input primitive = lines_adjacency output primitive = triangle_strip ERROR: node is still EOpNull! 0:29 Function Definition: main( ( global void) 0:29 Function Parameters: 0:31 Sequence 0:31 EmitVertex ( global void) 0:32 EndPrimitive ( global void) 0:33 Constant: 0:33 0.000000 0:34 Constant: 0:34 0.000000 0:36 move second child to first child ( temp mediump 3-component vector of float) 0:36 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float) 0:36 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:36 Constant: 0:36 0 (const uint) 0:36 color: direct index for structure ( in mediump 3-component vector of float) 0:36 direct index ( temp block{ in mediump 3-component vector of float color}) 0:36 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:37 move second child to first child ( temp float) 0:37 Constant: 0:37 0.000000 0:38 Constant: 0:38 0.000000 0:39 move second child to first child ( temp highp 4-component vector of float) 0:39 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position) 0:39 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) 0:39 Constant: 0:39 0 (const uint) 0:39 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:39 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:39 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:41 move second child to first child ( temp highp int) 0:41 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID) 0:41 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) 0:42 move second child to first child ( temp highp int) 0:42 'gl_Layer' (layout( stream=0) out highp int Layer) 0:42 Constant: 0:42 2 (const int) 0:? Linker Objects 0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) 0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float) 0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) 0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float) 0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) 0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float) 0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float) 0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a}) 0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c}) 0:? 'insn' ( in 4-element array of block{ in highp int a15}) 0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15}) 0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15}) 0:? 'summ' ( const highp int) 0:? 2752 (const int) 0:? 'explArray' ( in 4-element array of mediump 4-component vector of float) 0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float) 0:? 'nonArrayed' ( in mediump 4-component vector of float) 0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float) 0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float) 0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float) 0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float) 0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float) glslang-16.0.0/Test/baseResults/320.tesc.out000066400000000000000000000742641506534232700204560ustar00rootroot00000000000000320.tesc ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader 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 '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 '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 ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:46: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:51: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:54: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:61: '' : tessellation control barrier() cannot be placed after a return from main() ERROR: 0:64: 'vertices' : can only apply to 'out' ERROR: 0:65: 'vertices' : cannot change previously set layout value ERROR: 0:69: '[' : array index out of range '4' ERROR: 0:71: '' : tessellation control barrier() must be in main() ERROR: 0:74: 'in' : type must be an array: ina ERROR: 0:76: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:78: '' : array size required ERROR: 0:84: 'location' : overlapping use of location 4 ERROR: 0:88: 'location' : overlapping use of location 4 ERROR: 0:98: 'vertices' : can only apply to a standalone qualifier ERROR: 0:99: 'vertices' : inconsistent output number of vertices for array size of misSized ERROR: 0:104: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size ERROR: 0:105: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size ERROR: 0:121: 'gl_BoundingBoxEXT' : required extension not requested: GL_EXT_primitive_bounding_box ERROR: 0:122: 'gl_BoundingBoxOES' : required extension not requested: GL_OES_primitive_bounding_box ERROR: 0:125: '[' : array index out of range '2' ERROR: 0:137: '' : array size required ERROR: 0:153: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID ERROR: 0:154: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID ERROR: 0:157: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID ERROR: 37 compilation errors. No code generated. Shader version: 320 Requested GL_ARB_separate_shader_objects Requested GL_EXT_primitive_bounding_box Requested GL_OES_primitive_bounding_box vertices = 4 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 Barrier ( global void) 0:17 Sequence 0:17 move second child to first child ( temp highp int) 0:17 'a' ( temp highp int) 0:17 Constant: 0:17 5392 (const int) 0:23 Sequence 0:23 move second child to first child ( temp highp 4-component vector of float) 0:23 'p' ( temp highp 4-component vector of float) 0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp highp float) 0:24 'ps' ( temp highp float) 0:24 gl_PointSize: direct index for structure ( in highp float PointSize) 0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp highp float) 0:25 'cd' ( temp highp float) 0:25 Constant: 0:25 0.000000 0:27 Sequence 0:27 move second child to first child ( temp highp int) 0:27 'pvi' ( temp highp int) 0:27 'gl_PatchVerticesIn' ( in highp int PatchVertices) 0:28 Sequence 0:28 move second child to first child ( temp highp int) 0:28 'pid' ( temp highp int) 0:28 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:29 Sequence 0:29 move second child to first child ( temp highp int) 0:29 'iid' ( temp highp int) 0:29 'gl_InvocationID' ( in highp int InvocationID) 0:31 move second child to first child ( temp highp 4-component vector of float) 0:31 gl_Position: direct index for structure ( out highp 4-component vector of float Position) 0:31 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:31 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:31 'gl_InvocationID' ( in highp int InvocationID) 0:31 Constant: 0:31 0 (const int) 0:31 'p' ( temp highp 4-component vector of float) 0:32 move second child to first child ( temp highp float) 0:32 gl_PointSize: direct index for structure ( out highp float PointSize) 0:32 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:32 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:32 'gl_InvocationID' ( in highp int InvocationID) 0:32 Constant: 0:32 1 (const int) 0:32 'ps' ( temp highp float) 0:33 move second child to first child ( temp highp float) 0:33 Constant: 0:33 0.000000 0:33 'cd' ( temp highp float) 0:35 move second child to first child ( temp highp float) 0:35 direct index ( patch temp highp float TessLevelOuter) 0:35 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 3.200000 0:36 move second child to first child ( temp highp float) 0:36 direct index ( patch temp highp float TessLevelInner) 0:36 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1.300000 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Greater Than ( temp bool) 0:38 'a' ( temp highp int) 0:38 Constant: 0:38 10 (const int) 0:38 true case 0:39 Barrier ( global void) 0:38 false case 0:41 Barrier ( global void) 0:43 Barrier ( global void) 0:47 Loop with condition not tested first 0:47 Loop Condition 0:47 Compare Greater Than ( temp bool) 0:47 'a' ( temp highp int) 0:47 Constant: 0:47 10 (const int) 0:47 Loop Body 0:46 Sequence 0:46 Barrier ( global void) 0:49 switch 0:49 condition 0:49 'a' ( temp highp int) 0:49 body 0:49 Sequence 0:50 default: 0:? Sequence 0:51 Barrier ( global void) 0:52 Branch: Break 0:54 Test condition and select ( temp highp int) 0:54 Condition 0:54 Compare Less Than ( temp bool) 0:54 'a' ( temp highp int) 0:54 Constant: 0:54 12 (const int) 0:54 true case 0:54 'a' ( temp highp int) 0:54 false case 0:54 Comma ( temp highp int) 0:54 Barrier ( global void) 0:54 'a' ( temp highp int) 0:56 Sequence 0:56 Barrier ( global void) 0:59 Branch: Return 0:61 Barrier ( global void) 0:67 Function Definition: foo( ( global void) 0:67 Function Parameters: 0:69 Sequence 0:69 gl_Position: direct index for structure ( out highp 4-component vector of float Position) 0:69 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:69 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:69 Constant: 0:69 4 (const int) 0:69 Constant: 0:69 0 (const int) 0:71 Barrier ( global void) 0:102 Function Definition: pointSize2( ( global void) 0:102 Function Parameters: 0:104 Sequence 0:104 Sequence 0:104 move second child to first child ( temp highp float) 0:104 'ps' ( temp highp float) 0:104 gl_PointSize: direct index for structure ( in highp float PointSize) 0:104 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:104 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:105 move second child to first child ( temp highp float) 0:105 gl_PointSize: direct index for structure ( out highp float PointSize) 0:105 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:105 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:105 'gl_InvocationID' ( in highp int InvocationID) 0:105 Constant: 0:105 1 (const int) 0:105 'ps' ( temp highp float) 0:110 Function Definition: goodfoop( ( global void) 0:110 Function Parameters: 0:? Sequence 0:114 multiply second child into first child ( temp highp 3-component vector of float) 0:114 'pv3' ( noContraction temp highp 3-component vector of float) 0:114 'pv3' ( noContraction temp highp 3-component vector of float) 0:115 move second child to first child ( temp highp 3-component vector of float) 0:115 'pv3' ( noContraction temp highp 3-component vector of float) 0:115 fma ( global highp 3-component vector of float) 0:115 'pv3' ( noContraction temp highp 3-component vector of float) 0:115 'pv3' ( noContraction temp highp 3-component vector of float) 0:115 'pv3' ( noContraction temp highp 3-component vector of float) 0:116 move second child to first child ( temp highp float) 0:116 'd' ( noContraction temp highp float) 0:116 fma ( global highp float) 0:116 'd' ( noContraction temp highp float) 0:116 'd' ( noContraction temp highp float) 0:116 'd' ( noContraction temp highp float) 0:119 Function Definition: bb( ( global void) 0:119 Function Parameters: 0:121 Sequence 0:121 move second child to first child ( temp highp 4-component vector of float) 0:121 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:121 'gl_BoundingBoxEXT' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 0.000000 0:121 0.000000 0:121 0.000000 0:121 0.000000 0:122 move second child to first child ( temp highp 4-component vector of float) 0:122 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:122 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 0.000000 0:122 0.000000 0:122 0.000000 0:122 0.000000 0:123 move second child to first child ( temp highp 4-component vector of float) 0:123 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:123 'gl_BoundingBox' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 1.000000 0:123 1.000000 0:123 1.000000 0:123 1.000000 0:124 move second child to first child ( temp highp 4-component vector of float) 0:124 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:124 'gl_BoundingBox' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 1.000000 0:124 1.000000 0:124 1.000000 0:124 1.000000 0:125 move second child to first child ( temp highp 4-component vector of float) 0:125 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:125 'gl_BoundingBox' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 2.000000 0:125 2.000000 0:125 2.000000 0:125 2.000000 0:131 Function Definition: bbext( ( global void) 0:131 Function Parameters: 0:133 Sequence 0:133 move second child to first child ( temp highp 4-component vector of float) 0:133 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:133 'gl_BoundingBoxEXT' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:133 Constant: 0:133 1 (const int) 0:133 Constant: 0:133 0.000000 0:133 0.000000 0:133 0.000000 0:133 0.000000 0:134 move second child to first child ( temp highp 4-component vector of float) 0:134 direct index ( patch temp highp 4-component vector of float BoundingBox) 0:134 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) 0:134 Constant: 0:134 1 (const int) 0:134 Constant: 0:134 0.000000 0:134 0.000000 0:134 0.000000 0:134 0.000000 0:145 Function Definition: outputtingOutparam(i1; ( global void) 0:145 Function Parameters: 0:145 'a' ( out highp int) 0:147 Sequence 0:147 move second child to first child ( temp highp int) 0:147 'a' ( out highp int) 0:147 Constant: 0:147 2 (const int) 0:150 Function Definition: outputting( ( global void) 0:150 Function Parameters: 0:152 Sequence 0:152 move second child to first child ( temp highp int) 0:152 indirect index ( temp highp int) 0:152 'outa' ( out 4-element array of highp int) 0:152 'gl_InvocationID' ( in highp int InvocationID) 0:152 Constant: 0:152 2 (const int) 0:153 move second child to first child ( temp highp int) 0:153 direct index ( temp highp int) 0:153 'outa' ( out 4-element array of highp int) 0:153 Constant: 0:153 1 (const int) 0:153 Constant: 0:153 2 (const int) 0:154 move second child to first child ( temp highp 4-component vector of float) 0:154 gl_Position: direct index for structure ( out highp 4-component vector of float Position) 0:154 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:154 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 1.000000 0:154 1.000000 0:154 1.000000 0:154 1.000000 0:155 direct index ( temp highp int) 0:155 'outa' ( out 4-element array of highp int) 0:155 Constant: 0:155 1 (const int) 0:156 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:156 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:156 Constant: 0:156 0 (const int) 0:157 Function Call: outputtingOutparam(i1; ( global void) 0:157 direct index ( temp highp int) 0:157 'outa' ( out 4-element array of highp int) 0:157 Constant: 0:157 0 (const int) 0:158 Function Call: outputtingOutparam(i1; ( global void) 0:158 indirect index ( temp highp int) 0:158 'outa' ( out 4-element array of highp int) 0:158 'gl_InvocationID' ( in highp int InvocationID) 0:159 move second child to first child ( temp highp float) 0:159 f: direct index for structure ( out highp float) 0:159 direct index ( patch temp block{ out highp float f}) 0:159 'patchIName' ( patch out 4-element array of block{ out highp float f}) 0:159 Constant: 0:159 1 (const int) 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 3.140000 0:160 move second child to first child ( temp highp int) 0:160 indirect index ( temp highp int) 0:160 'outa' ( out 4-element array of highp int) 0:160 'gl_InvocationID' ( in highp int InvocationID) 0:160 Constant: 0:160 2 (const int) 0:? Linker Objects 0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:? 'outa' ( out 4-element array of highp int) 0:? 'patchIn' ( patch in highp 4-component vector of float) 0:? 'patchOut' ( patch out highp 4-component vector of float) 0:? 'ina' ( in highp 2-component vector of float) 0:? 'inb' ( in 32-element array of highp 2-component vector of float) 0:? 'inc' ( in 32-element array of highp 2-component vector of float) 0:? 'ind' ( in 32-element array of highp 2-component vector of float) 0:? 'implA' ( patch out unsized 1-element array of highp float) 0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float) 0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float) 0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float) 0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float) 0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float) 0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float) 0:? 'pinbi' ( patch out block{ out highp int a}) 0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float) 0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) 0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float) 0:? 'badlay' ( out 4-element array of highp float) 0:? 'misSized' ( out 5-element array of highp float) 0:? 'okaySize' ( out 4-element array of highp float) 0:? 'pv3' ( noContraction temp highp 3-component vector of float) 0:? 'badpatchIName' ( patch out unsized 1-element array of block{ out highp float f}) 0:? 'patchIName' ( patch out 4-element array of block{ out highp float f}) Linked tessellation control stage: Shader version: 320 Requested GL_ARB_separate_shader_objects Requested GL_EXT_primitive_bounding_box Requested GL_OES_primitive_bounding_box vertices = 4 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 Barrier ( global void) 0:17 Sequence 0:17 move second child to first child ( temp highp int) 0:17 'a' ( temp highp int) 0:17 Constant: 0:17 5392 (const int) 0:23 Sequence 0:23 move second child to first child ( temp highp 4-component vector of float) 0:23 'p' ( temp highp 4-component vector of float) 0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp highp float) 0:24 'ps' ( temp highp float) 0:24 gl_PointSize: direct index for structure ( in highp float PointSize) 0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp highp float) 0:25 'cd' ( temp highp float) 0:25 Constant: 0:25 0.000000 0:27 Sequence 0:27 move second child to first child ( temp highp int) 0:27 'pvi' ( temp highp int) 0:27 'gl_PatchVerticesIn' ( in highp int PatchVertices) 0:28 Sequence 0:28 move second child to first child ( temp highp int) 0:28 'pid' ( temp highp int) 0:28 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:29 Sequence 0:29 move second child to first child ( temp highp int) 0:29 'iid' ( temp highp int) 0:29 'gl_InvocationID' ( in highp int InvocationID) 0:31 move second child to first child ( temp highp 4-component vector of float) 0:31 gl_Position: direct index for structure ( out highp 4-component vector of float Position) 0:31 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:31 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:31 'gl_InvocationID' ( in highp int InvocationID) 0:31 Constant: 0:31 0 (const int) 0:31 'p' ( temp highp 4-component vector of float) 0:32 move second child to first child ( temp highp float) 0:32 gl_PointSize: direct index for structure ( out highp float PointSize) 0:32 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:32 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:32 'gl_InvocationID' ( in highp int InvocationID) 0:32 Constant: 0:32 1 (const int) 0:32 'ps' ( temp highp float) 0:33 move second child to first child ( temp highp float) 0:33 Constant: 0:33 0.000000 0:33 'cd' ( temp highp float) 0:35 move second child to first child ( temp highp float) 0:35 direct index ( patch temp highp float TessLevelOuter) 0:35 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 3.200000 0:36 move second child to first child ( temp highp float) 0:36 direct index ( patch temp highp float TessLevelInner) 0:36 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1.300000 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Greater Than ( temp bool) 0:38 'a' ( temp highp int) 0:38 Constant: 0:38 10 (const int) 0:38 true case 0:39 Barrier ( global void) 0:38 false case 0:41 Barrier ( global void) 0:43 Barrier ( global void) 0:47 Loop with condition not tested first 0:47 Loop Condition 0:47 Compare Greater Than ( temp bool) 0:47 'a' ( temp highp int) 0:47 Constant: 0:47 10 (const int) 0:47 Loop Body 0:46 Sequence 0:46 Barrier ( global void) 0:49 switch 0:49 condition 0:49 'a' ( temp highp int) 0:49 body 0:49 Sequence 0:50 default: 0:? Sequence 0:51 Barrier ( global void) 0:52 Branch: Break 0:54 Test condition and select ( temp highp int) 0:54 Condition 0:54 Compare Less Than ( temp bool) 0:54 'a' ( temp highp int) 0:54 Constant: 0:54 12 (const int) 0:54 true case 0:54 'a' ( temp highp int) 0:54 false case 0:54 Comma ( temp highp int) 0:54 Barrier ( global void) 0:54 'a' ( temp highp int) 0:56 Sequence 0:56 Barrier ( global void) 0:59 Branch: Return 0:61 Barrier ( global void) 0:? Linker Objects 0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:? 'outa' ( out 4-element array of highp int) 0:? 'patchIn' ( patch in highp 4-component vector of float) 0:? 'patchOut' ( patch out highp 4-component vector of float) 0:? 'ina' ( in highp 2-component vector of float) 0:? 'inb' ( in 32-element array of highp 2-component vector of float) 0:? 'inc' ( in 32-element array of highp 2-component vector of float) 0:? 'ind' ( in 32-element array of highp 2-component vector of float) 0:? 'implA' ( patch out 1-element array of highp float) 0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float) 0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float) 0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float) 0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float) 0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float) 0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float) 0:? 'pinbi' ( patch out block{ out highp int a}) 0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float) 0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) 0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float) 0:? 'badlay' ( out 4-element array of highp float) 0:? 'misSized' ( out 5-element array of highp float) 0:? 'okaySize' ( out 4-element array of highp float) 0:? 'pv3' ( noContraction temp highp 3-component vector of float) 0:? 'badpatchIName' ( patch out 1-element array of block{ out highp float f}) 0:? 'patchIName' ( patch out 4-element array of block{ out highp float f}) glslang-16.0.0/Test/baseResults/320.tese.out000066400000000000000000000405431506534232700204510ustar00rootroot00000000000000320.tese ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:5: 'triangles' : cannot change previously set input primitive ERROR: 0:6: 'isolines' : cannot change previously set input primitive ERROR: 0:8: 'ccw' : cannot change previously set vertex order ERROR: 0:12: 'equal_spacing' : cannot change previously set vertex spacing ERROR: 0:13: 'fractional_even_spacing' : cannot change previously set vertex spacing ERROR: 0:18: 'patch' : can only use on input in tessellation-evaluation shader ERROR: 0:22: 'barrier' : no matching overloaded function found 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 '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 GL_OES_tessellation_point_size ERROR: 0:44: 'gl_ClipDistance' : undeclared identifier ERROR: 0:44: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector ERROR: 0:44: 'assign' : l-value required (can't modify a const) ERROR: 0:47: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:49: 'noperspective' : Reserved word. ERROR: 0:49: 'noperspective' : not supported for this version or the enabled extensions ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 0:64: 'quads' : cannot apply to 'out' ERROR: 0:64: 'cw' : can only apply to 'in' ERROR: 0:65: 'triangles' : cannot apply to 'out' ERROR: 0:66: 'isolines' : cannot apply to 'out' ERROR: 0:67: 'cw' : can only apply to 'in' ERROR: 0:68: 'fractional_odd_spacing' : can only apply to 'in' ERROR: 0:69: 'equal_spacing' : can only apply to 'in' ERROR: 0:70: 'fractional_even_spacing' : can only apply to 'in' ERROR: 0:71: 'point_mode' : can only apply to 'in' ERROR: 0:73: 'in' : type must be an array: ina ERROR: 0:75: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:78: 'in' : type must be an array: bla ERROR: 0:86: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:96: 'location' : overlapping use of location 24 ERROR: 0:99: 'location' : overlapping use of location 24 ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved ERROR: 0:113: 'gl_BoundingBoxOES' : undeclared identifier ERROR: 39 compilation errors. No code generated. Shader version: 320 Requested GL_ARB_separate_shader_objects input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Constant: 0:22 0.000000 0:24 Sequence 0:24 move second child to first child ( temp highp int) 0:24 'a' ( temp highp int) 0:24 Constant: 0:24 1512 (const int) 0:32 Sequence 0:32 move second child to first child ( temp highp 4-component vector of float) 0:32 'p' ( temp highp 4-component vector of float) 0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp highp float) 0:33 'ps' ( temp highp float) 0:33 gl_PointSize: direct index for structure ( in highp float PointSize) 0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp highp float) 0:34 'cd' ( temp highp float) 0:34 Constant: 0:34 0.000000 0:36 Sequence 0:36 move second child to first child ( temp highp int) 0:36 'pvi' ( temp highp int) 0:36 'gl_PatchVerticesIn' ( in highp int PatchVertices) 0:37 Sequence 0:37 move second child to first child ( temp highp int) 0:37 'pid' ( temp highp int) 0:37 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:38 Sequence 0:38 move second child to first child ( temp highp 3-component vector of float) 0:38 'tc' ( temp highp 3-component vector of float) 0:38 'gl_TessCoord' ( in highp 3-component vector of float TessCoord) 0:39 Sequence 0:39 move second child to first child ( temp highp float) 0:39 'tlo' ( temp highp float) 0:39 direct index ( patch temp highp float TessLevelOuter) 0:39 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter) 0:39 Constant: 0:39 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp highp float) 0:40 'tli' ( temp highp float) 0:40 direct index ( patch temp highp float TessLevelInner) 0:40 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner) 0:40 Constant: 0:40 1 (const int) 0:42 move second child to first child ( temp highp 4-component vector of float) 0:42 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:42 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:42 Constant: 0:42 0 (const uint) 0:42 'p' ( temp highp 4-component vector of float) 0:43 move second child to first child ( temp highp float) 0:43 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize) 0:43 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:43 Constant: 0:43 1 (const uint) 0:43 'ps' ( temp highp float) 0:44 move second child to first child ( temp highp float) 0:44 Constant: 0:44 0.000000 0:44 'cd' ( temp highp float) 0:111 Function Definition: bbbad( ( global void) 0:111 Function Parameters: 0:113 Sequence 0:113 'gl_BoundingBoxOES' ( temp float) 0:? Linker Objects 0:? 'patchIn' ( patch in highp 4-component vector of float) 0:? 'patchOut' ( patch out highp 4-component vector of float) 0:? 'badp1' ( smooth patch in highp 4-component vector of float) 0:? 'badp2' ( flat patch in highp 4-component vector of float) 0:? 'badp3' ( noperspective patch in highp 4-component vector of float) 0:? 'badp4' ( patch sample in highp 3-component vector of float) 0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position}) 0:? 'ina' ( in highp 2-component vector of float) 0:? 'inb' ( in 32-element array of highp 2-component vector of float) 0:? 'inc' ( in 32-element array of highp 2-component vector of float) 0:? 'ind' ( in 32-element array of highp 2-component vector of float) 0:? 'bla' ( in block{ in highp int f}) 0:? 'blb' ( in 32-element array of block{ in highp int f}) 0:? 'blc' ( in 32-element array of block{ in highp int f}) 0:? 'bld' ( in 32-element array of block{ in highp int f}) 0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float) 0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float) 0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float) 0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float) 0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float) 0:? 'pinbi' ( patch in block{ in highp int a}) 0:? 'myColor2' ( centroid out highp 3-component vector of float) 0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) 0:? 'perSampleColor' ( sample out highp 4-component vector of float) Linked tessellation evaluation stage: Shader version: 320 Requested GL_ARB_separate_shader_objects input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Constant: 0:22 0.000000 0:24 Sequence 0:24 move second child to first child ( temp highp int) 0:24 'a' ( temp highp int) 0:24 Constant: 0:24 1512 (const int) 0:32 Sequence 0:32 move second child to first child ( temp highp 4-component vector of float) 0:32 'p' ( temp highp 4-component vector of float) 0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp highp float) 0:33 'ps' ( temp highp float) 0:33 gl_PointSize: direct index for structure ( in highp float PointSize) 0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp highp float) 0:34 'cd' ( temp highp float) 0:34 Constant: 0:34 0.000000 0:36 Sequence 0:36 move second child to first child ( temp highp int) 0:36 'pvi' ( temp highp int) 0:36 'gl_PatchVerticesIn' ( in highp int PatchVertices) 0:37 Sequence 0:37 move second child to first child ( temp highp int) 0:37 'pid' ( temp highp int) 0:37 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:38 Sequence 0:38 move second child to first child ( temp highp 3-component vector of float) 0:38 'tc' ( temp highp 3-component vector of float) 0:38 'gl_TessCoord' ( in highp 3-component vector of float TessCoord) 0:39 Sequence 0:39 move second child to first child ( temp highp float) 0:39 'tlo' ( temp highp float) 0:39 direct index ( patch temp highp float TessLevelOuter) 0:39 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter) 0:39 Constant: 0:39 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp highp float) 0:40 'tli' ( temp highp float) 0:40 direct index ( patch temp highp float TessLevelInner) 0:40 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner) 0:40 Constant: 0:40 1 (const int) 0:42 move second child to first child ( temp highp 4-component vector of float) 0:42 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:42 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:42 Constant: 0:42 0 (const uint) 0:42 'p' ( temp highp 4-component vector of float) 0:43 move second child to first child ( temp highp float) 0:43 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize) 0:43 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) 0:43 Constant: 0:43 1 (const uint) 0:43 'ps' ( temp highp float) 0:44 move second child to first child ( temp highp float) 0:44 Constant: 0:44 0.000000 0:44 'cd' ( temp highp float) 0:? Linker Objects 0:? 'patchIn' ( patch in highp 4-component vector of float) 0:? 'patchOut' ( patch out highp 4-component vector of float) 0:? 'badp1' ( smooth patch in highp 4-component vector of float) 0:? 'badp2' ( flat patch in highp 4-component vector of float) 0:? 'badp3' ( noperspective patch in highp 4-component vector of float) 0:? 'badp4' ( patch sample in highp 3-component vector of float) 0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position}) 0:? 'ina' ( in highp 2-component vector of float) 0:? 'inb' ( in 32-element array of highp 2-component vector of float) 0:? 'inc' ( in 32-element array of highp 2-component vector of float) 0:? 'ind' ( in 32-element array of highp 2-component vector of float) 0:? 'bla' ( in block{ in highp int f}) 0:? 'blb' ( in 32-element array of block{ in highp int f}) 0:? 'blc' ( in 32-element array of block{ in highp int f}) 0:? 'bld' ( in 32-element array of block{ in highp int f}) 0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float) 0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float) 0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float) 0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float) 0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float) 0:? 'pinbi' ( patch in block{ in highp int a}) 0:? 'myColor2' ( centroid out highp 3-component vector of float) 0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) 0:? 'perSampleColor' ( sample out highp 4-component vector of float) glslang-16.0.0/Test/baseResults/320.vert.out000066400000000000000000001147531506534232700204760ustar00rootroot00000000000000320.vert ERROR: 0:6: 's' : member of block cannot be or contain a sampler, image, or atomic_uint type ERROR: 0:14: 'location' : overlapping use of location 12 ERROR: 0:16: 'input block' : not supported in this stage: vertex ERROR: 0:18: 'gl_PerVertex' : block redeclaration has extra members ERROR: 0:28: 'gl_PointSize' : member of nameless block was not redeclared ERROR: 0:28: 'assign' : l-value required "gl_PerVertex" (can't modify void) ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' ERROR: 0:31: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 0:36: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block ERROR: 0:40: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block ERROR: 0:44: 'centroid' : cannot use centroid qualifier on an interface block ERROR: 0:48: 'invariant' : cannot use invariant qualifier on an interface block ERROR: 0:68: 'variable indexing buffer block array' : not supported with this profile: es ERROR: 0:73: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument ERROR: 0:76: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:77: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:78: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:79: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:80: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:116: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:117: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:118: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:120: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:121: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:122: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:123: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:191: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:192: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:193: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:211: 'textureSize' : no matching overloaded function found ERROR: 0:211: '=' : cannot convert from ' const float' to ' temp highp 3-component vector of int' ERROR: 0:252: 'interpolateAtCentroid' : no matching overloaded function found ERROR: 0:253: 'interpolateAtSample' : no matching overloaded function found ERROR: 0:254: 'interpolateAtOffset' : no matching overloaded function found ERROR: 35 compilation errors. No code generated. Shader version: 320 ERROR: node is still EOpNull! 0:23 Function Definition: main( ( global void) 0:23 Function Parameters: 0:25 Sequence 0:25 Sequence 0:25 move second child to first child ( temp highp int) 0:25 'sum' ( temp highp int) 0:25 add ( temp highp int) 0:25 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:26 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:27 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:27 Constant: 0:27 0 (const uint) 0:27 Constant: 0:27 1.000000 0:27 1.000000 0:27 1.000000 0:27 1.000000 0:28 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize) 0:28 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:28 Constant: 0:28 1 (const uint) 0:62 Function Definition: pfoo( ( global void) 0:62 Function Parameters: 0:? Sequence 0:65 move second child to first child ( temp highp 2-component vector of float) 0:65 'h' ( noContraction temp highp 2-component vector of float) 0:65 fma ( global highp 2-component vector of float) 0:65 'inf' ( in highp 2-component vector of float) 0:65 'ing' ( in highp 2-component vector of float) 0:65 'h' ( noContraction temp highp 2-component vector of float) 0:66 indirect index ( temp lowp sampler2D) 0:66 'sArray' ( uniform 4-element array of lowp sampler2D) 0:66 add ( temp highp int) 0:66 'sIndex' ( uniform highp int) 0:66 Constant: 0:66 1 (const int) 0:67 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform highp int i}) 0:67 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) 0:67 add ( temp highp int) 0:67 'sIndex' ( uniform highp int) 0:67 Constant: 0:67 1 (const int) 0:68 indirect index (layout( column_major shared) temp block{layout( column_major shared) buffer highp int i}) 0:68 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) 0:68 subtract ( temp highp int) 0:68 'sIndex' ( uniform highp int) 0:68 Constant: 0:68 2 (const int) 0:69 direct index ( writeonly temp highp image2D) 0:69 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:69 Constant: 0:69 2 (const int) 0:70 indirect index ( writeonly temp highp image2D) 0:70 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:70 subtract ( temp highp int) 0:70 'sIndex' ( uniform highp int) 0:70 Constant: 0:70 2 (const int) 0:71 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) 0:71 direct index ( temp lowp sampler2D) 0:71 'sArray' ( uniform 4-element array of lowp sampler2D) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 0.100000 0:71 0.100000 0:71 Convert float to int ( temp highp 2-component vector of int) 0:71 'inf' ( in highp 2-component vector of float) 0:72 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) 0:72 direct index ( temp lowp sampler2D) 0:72 'sArray' ( uniform 4-element array of lowp sampler2D) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 0.100000 0:72 0.100000 0:72 Constant: 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:73 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) 0:73 direct index ( temp lowp sampler2D) 0:73 'sArray' ( uniform 4-element array of lowp sampler2D) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.100000 0:73 0.100000 0:73 'offsets' ( uniform 4-element array of highp 2-component vector of int) 0:101 Function Definition: bufferT( ( global void) 0:101 Function Parameters: 0:103 Sequence 0:103 Sequence 0:103 move second child to first child ( temp highp int) 0:103 's1' ( temp highp int) 0:103 textureSize ( global highp int) 0:103 'bufSamp1' ( uniform highp samplerBuffer) 0:104 Sequence 0:104 move second child to first child ( temp highp int) 0:104 's2' ( temp highp int) 0:104 textureSize ( global highp int) 0:104 'bufSamp2' ( uniform highp isamplerBuffer) 0:105 Sequence 0:105 move second child to first child ( temp highp int) 0:105 's3' ( temp highp int) 0:105 textureSize ( global highp int) 0:105 'bufSamp3' ( uniform highp usamplerBuffer) 0:107 Sequence 0:107 move second child to first child ( temp highp int) 0:107 's4' ( temp highp int) 0:107 imageQuerySize ( global highp int) 0:107 'bufSamp4' ( writeonly uniform highp imageBuffer) 0:108 Sequence 0:108 move second child to first child ( temp highp int) 0:108 's5' ( temp highp int) 0:108 imageQuerySize ( global highp int) 0:108 'bufSamp5' ( writeonly uniform highp iimageBuffer) 0:109 Sequence 0:109 move second child to first child ( temp highp int) 0:109 's6' ( temp highp int) 0:109 imageQuerySize ( global highp int) 0:109 'bufSamp6' ( writeonly uniform highp uimageBuffer) 0:111 Sequence 0:111 move second child to first child ( temp highp 4-component vector of float) 0:111 'f1' ( temp highp 4-component vector of float) 0:111 textureFetch ( global highp 4-component vector of float) 0:111 'bufSamp1' ( uniform highp samplerBuffer) 0:111 's1' ( temp highp int) 0:112 Sequence 0:112 move second child to first child ( temp highp 4-component vector of int) 0:112 'f2' ( temp highp 4-component vector of int) 0:112 textureFetch ( global highp 4-component vector of int) 0:112 'bufSamp2' ( uniform highp isamplerBuffer) 0:112 's2' ( temp highp int) 0:113 Sequence 0:113 move second child to first child ( temp highp 4-component vector of uint) 0:113 'f3' ( temp highp 4-component vector of uint) 0:113 textureFetch ( global highp 4-component vector of uint) 0:113 'bufSamp3' ( uniform highp usamplerBuffer) 0:113 's3' ( temp highp int) 0:149 Function Definition: CAT( ( global void) 0:149 Function Parameters: 0:151 Sequence 0:151 Sequence 0:151 move second child to first child ( temp highp 3-component vector of int) 0:151 's4' ( temp highp 3-component vector of int) 0:151 textureSize ( global highp 3-component vector of int) 0:151 'CA4' ( uniform highp samplerCubeArray) 0:151 Constant: 0:151 1 (const int) 0:152 Sequence 0:152 move second child to first child ( temp highp 3-component vector of int) 0:152 's5' ( temp highp 3-component vector of int) 0:152 textureSize ( global highp 3-component vector of int) 0:152 'CA5' ( uniform highp samplerCubeArrayShadow) 0:152 Constant: 0:152 1 (const int) 0:153 Sequence 0:153 move second child to first child ( temp highp 3-component vector of int) 0:153 's6' ( temp highp 3-component vector of int) 0:153 textureSize ( global highp 3-component vector of int) 0:153 'CA6' ( uniform highp isamplerCubeArray) 0:153 Constant: 0:153 1 (const int) 0:154 Sequence 0:154 move second child to first child ( temp highp 3-component vector of int) 0:154 's7' ( temp highp 3-component vector of int) 0:154 textureSize ( global highp 3-component vector of int) 0:154 'CA7' ( uniform highp usamplerCubeArray) 0:154 Constant: 0:154 1 (const int) 0:156 Sequence 0:156 move second child to first child ( temp highp 4-component vector of float) 0:156 't4' ( temp highp 4-component vector of float) 0:156 texture ( global highp 4-component vector of float) 0:156 'CA4' ( uniform highp samplerCubeArray) 0:156 Constant: 0:156 0.500000 0:156 0.500000 0:156 0.500000 0:156 0.500000 0:157 Sequence 0:157 move second child to first child ( temp highp float) 0:157 't5' ( temp highp float) 0:157 texture ( global highp float) 0:157 'CA5' ( uniform highp samplerCubeArrayShadow) 0:157 Constant: 0:157 0.500000 0:157 0.500000 0:157 0.500000 0:157 0.500000 0:157 Constant: 0:157 3.000000 0:158 Sequence 0:158 move second child to first child ( temp highp 4-component vector of int) 0:158 't6' ( temp highp 4-component vector of int) 0:158 texture ( global highp 4-component vector of int) 0:158 'CA6' ( uniform highp isamplerCubeArray) 0:158 Constant: 0:158 0.500000 0:158 0.500000 0:158 0.500000 0:158 0.500000 0:159 Sequence 0:159 move second child to first child ( temp highp 4-component vector of uint) 0:159 't7' ( temp highp 4-component vector of uint) 0:159 texture ( global highp 4-component vector of uint) 0:159 'CA7' ( uniform highp usamplerCubeArray) 0:159 Constant: 0:159 0.500000 0:159 0.500000 0:159 0.500000 0:159 0.500000 0:161 Sequence 0:161 move second child to first child ( temp highp 4-component vector of float) 0:161 'L4' ( temp highp 4-component vector of float) 0:161 textureLod ( global highp 4-component vector of float) 0:161 'CA4' ( uniform highp samplerCubeArray) 0:161 Constant: 0:161 0.500000 0:161 0.500000 0:161 0.500000 0:161 0.500000 0:161 Constant: 0:161 0.240000 0:162 Sequence 0:162 move second child to first child ( temp highp 4-component vector of int) 0:162 'L6' ( temp highp 4-component vector of int) 0:162 textureLod ( global highp 4-component vector of int) 0:162 'CA6' ( uniform highp isamplerCubeArray) 0:162 Constant: 0:162 0.500000 0:162 0.500000 0:162 0.500000 0:162 0.500000 0:162 Constant: 0:162 0.260000 0:163 Sequence 0:163 move second child to first child ( temp highp 4-component vector of uint) 0:163 'L7' ( temp highp 4-component vector of uint) 0:163 textureLod ( global highp 4-component vector of uint) 0:163 'CA7' ( uniform highp usamplerCubeArray) 0:163 Constant: 0:163 0.500000 0:163 0.500000 0:163 0.500000 0:163 0.500000 0:163 Constant: 0:163 0.270000 0:165 Sequence 0:165 move second child to first child ( temp highp 4-component vector of float) 0:165 'g4' ( temp highp 4-component vector of float) 0:165 textureGrad ( global highp 4-component vector of float) 0:165 'CA4' ( uniform highp samplerCubeArray) 0:165 Constant: 0:165 0.500000 0:165 0.500000 0:165 0.500000 0:165 0.500000 0:165 Constant: 0:165 0.100000 0:165 0.100000 0:165 0.100000 0:165 Constant: 0:165 0.200000 0:165 0.200000 0:165 0.200000 0:166 Sequence 0:166 move second child to first child ( temp highp 4-component vector of int) 0:166 'g6' ( temp highp 4-component vector of int) 0:166 textureGrad ( global highp 4-component vector of int) 0:166 'CA6' ( uniform highp isamplerCubeArray) 0:166 Constant: 0:166 0.500000 0:166 0.500000 0:166 0.500000 0:166 0.500000 0:166 Constant: 0:166 0.100000 0:166 0.100000 0:166 0.100000 0:166 Constant: 0:166 0.200000 0:166 0.200000 0:166 0.200000 0:167 Sequence 0:167 move second child to first child ( temp highp 4-component vector of uint) 0:167 'g7' ( temp highp 4-component vector of uint) 0:167 textureGrad ( global highp 4-component vector of uint) 0:167 'CA7' ( uniform highp usamplerCubeArray) 0:167 Constant: 0:167 0.500000 0:167 0.500000 0:167 0.500000 0:167 0.500000 0:167 Constant: 0:167 0.100000 0:167 0.100000 0:167 0.100000 0:167 Constant: 0:167 0.200000 0:167 0.200000 0:167 0.200000 0:169 Sequence 0:169 move second child to first child ( temp highp 4-component vector of float) 0:169 'gath4' ( temp highp 4-component vector of float) 0:169 textureGather ( global highp 4-component vector of float) 0:169 'CA4' ( uniform highp samplerCubeArray) 0:169 Constant: 0:169 0.500000 0:169 0.500000 0:169 0.500000 0:169 0.500000 0:170 Sequence 0:170 move second child to first child ( temp highp 4-component vector of float) 0:170 'gathC4' ( temp highp 4-component vector of float) 0:170 textureGather ( global highp 4-component vector of float) 0:170 'CA4' ( uniform highp samplerCubeArray) 0:170 Constant: 0:170 0.500000 0:170 0.500000 0:170 0.500000 0:170 0.500000 0:170 Constant: 0:170 2 (const int) 0:171 Sequence 0:171 move second child to first child ( temp highp 4-component vector of int) 0:171 'gath6' ( temp highp 4-component vector of int) 0:171 textureGather ( global highp 4-component vector of int) 0:171 'CA6' ( uniform highp isamplerCubeArray) 0:171 Constant: 0:171 0.500000 0:171 0.500000 0:171 0.500000 0:171 0.500000 0:172 Sequence 0:172 move second child to first child ( temp highp 4-component vector of int) 0:172 'gathC6' ( temp highp 4-component vector of int) 0:172 textureGather ( global highp 4-component vector of int) 0:172 'CA6' ( uniform highp isamplerCubeArray) 0:172 Constant: 0:172 0.500000 0:172 0.500000 0:172 0.500000 0:172 0.500000 0:172 Constant: 0:172 1 (const int) 0:173 Sequence 0:173 move second child to first child ( temp highp 4-component vector of uint) 0:173 'gath7' ( temp highp 4-component vector of uint) 0:173 textureGather ( global highp 4-component vector of uint) 0:173 'CA7' ( uniform highp usamplerCubeArray) 0:173 Constant: 0:173 0.500000 0:173 0.500000 0:173 0.500000 0:173 0.500000 0:174 Sequence 0:174 move second child to first child ( temp highp 4-component vector of uint) 0:174 'gathC7' ( temp highp 4-component vector of uint) 0:174 textureGather ( global highp 4-component vector of uint) 0:174 'CA7' ( uniform highp usamplerCubeArray) 0:174 Constant: 0:174 0.500000 0:174 0.500000 0:174 0.500000 0:174 0.500000 0:174 Constant: 0:174 0 (const int) 0:176 Sequence 0:176 move second child to first child ( temp highp 4-component vector of float) 0:176 'gath5' ( temp highp 4-component vector of float) 0:176 textureGather ( global highp 4-component vector of float) 0:176 'CA5' ( uniform highp samplerCubeArrayShadow) 0:176 Constant: 0:176 0.500000 0:176 0.500000 0:176 0.500000 0:176 0.500000 0:176 Constant: 0:176 2.500000 0:178 Sequence 0:178 move second child to first child ( temp highp 3-component vector of int) 0:178 's1' ( temp highp 3-component vector of int) 0:178 imageQuerySize ( global highp 3-component vector of int) 0:178 'CA1' ( writeonly uniform highp imageCubeArray) 0:179 Sequence 0:179 move second child to first child ( temp highp 3-component vector of int) 0:179 's2' ( temp highp 3-component vector of int) 0:179 imageQuerySize ( global highp 3-component vector of int) 0:179 'CA2' ( writeonly uniform highp iimageCubeArray) 0:180 Sequence 0:180 move second child to first child ( temp highp 3-component vector of int) 0:180 's3' ( temp highp 3-component vector of int) 0:180 imageQuerySize ( global highp 3-component vector of int) 0:180 'CA3' ( writeonly uniform highp uimageCubeArray) 0:182 imageStore ( global highp void) 0:182 'CA1' ( writeonly uniform highp imageCubeArray) 0:182 's3' ( temp highp 3-component vector of int) 0:182 Constant: 0:182 1.000000 0:182 1.000000 0:182 1.000000 0:182 1.000000 0:183 imageStore ( global highp void) 0:183 'CA2' ( writeonly uniform highp iimageCubeArray) 0:183 's3' ( temp highp 3-component vector of int) 0:183 Constant: 0:183 1 (const int) 0:183 1 (const int) 0:183 1 (const int) 0:183 1 (const int) 0:184 imageStore ( global highp void) 0:184 'CA3' ( writeonly uniform highp uimageCubeArray) 0:184 's3' ( temp highp 3-component vector of int) 0:184 Constant: 0:184 1 (const uint) 0:184 1 (const uint) 0:184 1 (const uint) 0:184 1 (const uint) 0:186 Sequence 0:186 move second child to first child ( temp highp 4-component vector of float) 0:186 'cl1' ( temp highp 4-component vector of float) 0:186 imageLoad ( global highp 4-component vector of float) 0:186 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) 0:186 's3' ( temp highp 3-component vector of int) 0:187 Sequence 0:187 move second child to first child ( temp highp 4-component vector of int) 0:187 'cl2' ( temp highp 4-component vector of int) 0:187 imageLoad ( global highp 4-component vector of int) 0:187 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) 0:187 's3' ( temp highp 3-component vector of int) 0:188 Sequence 0:188 move second child to first child ( temp highp 4-component vector of uint) 0:188 'cl3' ( temp highp 4-component vector of uint) 0:188 imageLoad ( global highp 4-component vector of uint) 0:188 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) 0:188 's3' ( temp highp 3-component vector of int) 0:203 Function Definition: MSA( ( global void) 0:203 Function Parameters: 0:205 Sequence 0:205 Sequence 0:205 move second child to first child ( temp highp 4-component vector of float) 0:205 'tf' ( temp highp 4-component vector of float) 0:205 textureFetch ( global highp 4-component vector of float) 0:205 'samp2DMSA' ( uniform highp sampler2DMSArray) 0:205 Constant: 0:205 5 (const int) 0:205 5 (const int) 0:205 5 (const int) 0:205 Constant: 0:205 2 (const int) 0:206 Sequence 0:206 move second child to first child ( temp highp 4-component vector of int) 0:206 'tfi' ( temp highp 4-component vector of int) 0:206 textureFetch ( global highp 4-component vector of int) 0:206 'samp2DMSAi' ( uniform highp isampler2DMSArray) 0:206 Constant: 0:206 5 (const int) 0:206 5 (const int) 0:206 5 (const int) 0:206 Constant: 0:206 2 (const int) 0:207 Sequence 0:207 move second child to first child ( temp highp 4-component vector of uint) 0:207 'tfu' ( temp highp 4-component vector of uint) 0:207 textureFetch ( global highp 4-component vector of uint) 0:207 'samp2DMSAu' ( uniform highp usampler2DMSArray) 0:207 Constant: 0:207 5 (const int) 0:207 5 (const int) 0:207 5 (const int) 0:207 Constant: 0:207 2 (const int) 0:209 Sequence 0:209 move second child to first child ( temp highp 3-component vector of int) 0:209 'tfs' ( temp highp 3-component vector of int) 0:209 textureSize ( global highp 3-component vector of int) 0:209 'samp2DMSA' ( uniform highp sampler2DMSArray) 0:210 Sequence 0:210 move second child to first child ( temp highp 3-component vector of int) 0:210 'tfsi' ( temp highp 3-component vector of int) 0:210 textureSize ( global highp 3-component vector of int) 0:210 'samp2DMSAi' ( uniform highp isampler2DMSArray) 0:212 Sequence 0:212 move second child to first child ( temp highp 3-component vector of int) 0:212 'tfsu' ( temp highp 3-component vector of int) 0:212 textureSize ( global highp 3-component vector of int) 0:212 'samp2DMSAu' ( uniform highp usampler2DMSArray) 0:220 Function Definition: goodImageAtom( ( global void) 0:220 Function Parameters: 0:? Sequence 0:226 imageAtomicAdd ( global highp int) 0:226 'im2Di' (layout( r32i) uniform highp iimage2D) 0:226 'P' ( uniform highp 2-component vector of int) 0:226 'dati' ( temp highp int) 0:227 imageAtomicAdd ( global highp uint) 0:227 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:227 'P' ( uniform highp 2-component vector of int) 0:227 'datu' ( temp highp uint) 0:228 imageAtomicMin ( global highp int) 0:228 'im2Di' (layout( r32i) uniform highp iimage2D) 0:228 'P' ( uniform highp 2-component vector of int) 0:228 'dati' ( temp highp int) 0:229 imageAtomicMin ( global highp uint) 0:229 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:229 'P' ( uniform highp 2-component vector of int) 0:229 'datu' ( temp highp uint) 0:230 imageAtomicMax ( global highp int) 0:230 'im2Di' (layout( r32i) uniform highp iimage2D) 0:230 'P' ( uniform highp 2-component vector of int) 0:230 'dati' ( temp highp int) 0:231 imageAtomicMax ( global highp uint) 0:231 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:231 'P' ( uniform highp 2-component vector of int) 0:231 'datu' ( temp highp uint) 0:232 imageAtomicAnd ( global highp int) 0:232 'im2Di' (layout( r32i) uniform highp iimage2D) 0:232 'P' ( uniform highp 2-component vector of int) 0:232 'dati' ( temp highp int) 0:233 imageAtomicAnd ( global highp uint) 0:233 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:233 'P' ( uniform highp 2-component vector of int) 0:233 'datu' ( temp highp uint) 0:234 imageAtomicOr ( global highp int) 0:234 'im2Di' (layout( r32i) uniform highp iimage2D) 0:234 'P' ( uniform highp 2-component vector of int) 0:234 'dati' ( temp highp int) 0:235 imageAtomicOr ( global highp uint) 0:235 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:235 'P' ( uniform highp 2-component vector of int) 0:235 'datu' ( temp highp uint) 0:236 imageAtomicXor ( global highp int) 0:236 'im2Di' (layout( r32i) uniform highp iimage2D) 0:236 'P' ( uniform highp 2-component vector of int) 0:236 'dati' ( temp highp int) 0:237 imageAtomicXor ( global highp uint) 0:237 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:237 'P' ( uniform highp 2-component vector of int) 0:237 'datu' ( temp highp uint) 0:238 imageAtomicExchange ( global highp int) 0:238 'im2Di' (layout( r32i) uniform highp iimage2D) 0:238 'P' ( uniform highp 2-component vector of int) 0:238 'dati' ( temp highp int) 0:239 imageAtomicExchange ( global highp uint) 0:239 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:239 'P' ( uniform highp 2-component vector of int) 0:239 'datu' ( temp highp uint) 0:240 imageAtomicExchange ( global highp float) 0:240 'im2Df' (layout( r32f) uniform highp image2D) 0:240 'P' ( uniform highp 2-component vector of int) 0:240 'datf' ( temp highp float) 0:241 imageAtomicCompSwap ( global highp int) 0:241 'im2Di' (layout( r32i) uniform highp iimage2D) 0:241 'P' ( uniform highp 2-component vector of int) 0:241 Constant: 0:241 3 (const int) 0:241 'dati' ( temp highp int) 0:242 imageAtomicCompSwap ( global highp uint) 0:242 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:242 'P' ( uniform highp 2-component vector of int) 0:242 Constant: 0:242 5 (const uint) 0:242 'datu' ( temp highp uint) 0:250 Function Definition: badInterp( ( global void) 0:250 Function Parameters: 0:252 Sequence 0:252 Constant: 0:252 0.000000 0:253 Constant: 0:253 0.000000 0:254 Constant: 0:254 0.000000 0:? Linker Objects 0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s}) 0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon}) 0:? 'aliased' (layout( location=12) smooth out highp int) 0:? 'inbinst' ( in block{ in highp int a}) 0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:? 'smon' ( smooth out block{ out highp int i}) 0:? 'fmon' ( flat out block{ out highp int i}) 0:? 'cmon' ( centroid out block{ out highp int i}) 0:? 'imon' ( invariant out block{ out highp int i}) 0:? 'inf' ( in highp 2-component vector of float) 0:? 'ing' ( in highp 2-component vector of float) 0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int) 0:? 'sArray' ( uniform 4-element array of lowp sampler2D) 0:? 'sIndex' ( uniform highp int) 0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) 0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) 0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 'noPreSamp1' ( uniform mediump samplerBuffer) 0:? 'noPreSamp2' ( uniform mediump isamplerBuffer) 0:? 'noPreSamp3' ( uniform mediump usamplerBuffer) 0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer) 0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer) 0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer) 0:? 'bufSamp1' ( uniform highp samplerBuffer) 0:? 'bufSamp2' ( uniform highp isamplerBuffer) 0:? 'bufSamp3' ( uniform highp usamplerBuffer) 0:? 'bufSamp4' ( writeonly uniform highp imageBuffer) 0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer) 0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer) 0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray) 0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray) 0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray) 0:? 'noPreCA4' ( uniform mediump samplerCubeArray) 0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow) 0:? 'noPreCA6' ( uniform mediump isamplerCubeArray) 0:? 'noPreCA7' ( uniform mediump usamplerCubeArray) 0:? 'CA1' ( writeonly uniform highp imageCubeArray) 0:? 'CA2' ( writeonly uniform highp iimageCubeArray) 0:? 'CA3' ( writeonly uniform highp uimageCubeArray) 0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) 0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) 0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) 0:? 'CA4' ( uniform highp samplerCubeArray) 0:? 'CA5' ( uniform highp samplerCubeArrayShadow) 0:? 'CA6' ( uniform highp isamplerCubeArray) 0:? 'CA7' ( uniform highp usamplerCubeArray) 0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray) 0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray) 0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray) 0:? 'samp2DMSA' ( uniform highp sampler2DMSArray) 0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray) 0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray) 0:? 'im2Df' (layout( r32f) uniform highp image2D) 0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:? 'im2Di' (layout( r32i) uniform highp iimage2D) 0:? 'P' ( uniform highp 2-component vector of int) 0:? 'colorSample' ( smooth sample out highp 4-component vector of float) 0:? 'colorfsi' ( flat sample out highp 4-component vector of float) 0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float) 0:? 'inv4' ( in highp 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 320 ERROR: node is still EOpNull! 0:23 Function Definition: main( ( global void) 0:23 Function Parameters: 0:25 Sequence 0:25 Sequence 0:25 move second child to first child ( temp highp int) 0:25 'sum' ( temp highp int) 0:25 add ( temp highp int) 0:25 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:26 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:27 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:27 Constant: 0:27 0 (const uint) 0:27 Constant: 0:27 1.000000 0:27 1.000000 0:27 1.000000 0:27 1.000000 0:28 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize) 0:28 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:28 Constant: 0:28 1 (const uint) 0:? Linker Objects 0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s}) 0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon}) 0:? 'aliased' (layout( location=12) smooth out highp int) 0:? 'inbinst' ( in block{ in highp int a}) 0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position}) 0:? 'smon' ( smooth out block{ out highp int i}) 0:? 'fmon' ( flat out block{ out highp int i}) 0:? 'cmon' ( centroid out block{ out highp int i}) 0:? 'imon' ( invariant out block{ out highp int i}) 0:? 'inf' ( in highp 2-component vector of float) 0:? 'ing' ( in highp 2-component vector of float) 0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int) 0:? 'sArray' ( uniform 4-element array of lowp sampler2D) 0:? 'sIndex' ( uniform highp int) 0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) 0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) 0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) 0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 0 (const int) 0:? 'noPreSamp1' ( uniform mediump samplerBuffer) 0:? 'noPreSamp2' ( uniform mediump isamplerBuffer) 0:? 'noPreSamp3' ( uniform mediump usamplerBuffer) 0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer) 0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer) 0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer) 0:? 'bufSamp1' ( uniform highp samplerBuffer) 0:? 'bufSamp2' ( uniform highp isamplerBuffer) 0:? 'bufSamp3' ( uniform highp usamplerBuffer) 0:? 'bufSamp4' ( writeonly uniform highp imageBuffer) 0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer) 0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer) 0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray) 0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray) 0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray) 0:? 'noPreCA4' ( uniform mediump samplerCubeArray) 0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow) 0:? 'noPreCA6' ( uniform mediump isamplerCubeArray) 0:? 'noPreCA7' ( uniform mediump usamplerCubeArray) 0:? 'CA1' ( writeonly uniform highp imageCubeArray) 0:? 'CA2' ( writeonly uniform highp iimageCubeArray) 0:? 'CA3' ( writeonly uniform highp uimageCubeArray) 0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) 0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) 0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) 0:? 'CA4' ( uniform highp samplerCubeArray) 0:? 'CA5' ( uniform highp samplerCubeArrayShadow) 0:? 'CA6' ( uniform highp isamplerCubeArray) 0:? 'CA7' ( uniform highp usamplerCubeArray) 0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray) 0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray) 0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray) 0:? 'samp2DMSA' ( uniform highp sampler2DMSArray) 0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray) 0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray) 0:? 'im2Df' (layout( r32f) uniform highp image2D) 0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) 0:? 'im2Di' (layout( r32i) uniform highp iimage2D) 0:? 'P' ( uniform highp 2-component vector of int) 0:? 'colorSample' ( smooth sample out highp 4-component vector of float) 0:? 'colorfsi' ( flat sample out highp 4-component vector of float) 0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float) 0:? 'inv4' ( in highp 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/330.frag.out000066400000000000000000000335371506534232700204360ustar00rootroot00000000000000330.frag ERROR: 0:27: 'block declaration' : cannot redeclare block: gl_block ERROR: 0:31: 'gl_name' : identifiers starting with "gl_" are reserved ERROR: 0:32: 'gl_i' : identifiers starting with "gl_" are reserved ERROR: 0:35: 'gl_in' : no declaration found for redeclaration ERROR: 0:39: 'gl_FragCoord' : cannot redeclare a non block as a block ERROR: 0:44: 'non-literal layout-id value' : not supported for this version or the enabled extensions ERROR: 0:44: 'layout-id value' : cannot be negative ERROR: 0:45: 'non-literal layout-id value' : not supported for this version or the enabled extensions ERROR: 0:46: 'layout-id value' : scalar integer expression required ERROR: 0:46: 'location' : location is too large ERROR: 0:47: 'non-literal layout-id value' : not supported for this version or the enabled extensions ERROR: 0:48: 'non-literal layout-id value' : not supported for this version or the enabled extensions ERROR: 0:52: 'f2' : cannot use layout qualifiers on structure members ERROR: 0:57: 'location on block member' : not supported for this version or the enabled extensions ERROR: 0:62: 'location on block member' : can only use in an in/out block ERROR: 0:62: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions ERROR: 0:60: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions ERROR: 0:60: 'location' : cannot apply to uniform or buffer block ERROR: 0:68: 'layout-id value' : cannot be negative ERROR: 0:69: 'layout-id value' : cannot be negative ERROR: 0:76: 'f2' : cannot use layout qualifiers on structure members ERROR: 0:79: 'in' : cannot contain bool ERROR: 0:91: 'location on block member' : can only use in an in/out block ERROR: 0:91: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions ERROR: 0:91: 'location' : overlapping use of location 3 ERROR: 0:89: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions ERROR: 0:89: 'location' : cannot apply to uniform or buffer block ERROR: 0:94: 'location' : either the block needs a location, or all members need a location, or no members have a location ERROR: 0:108: 'A' : cannot use layout qualifiers on structure members ERROR: 0:119: 'location' : overlapping use of location 44 ERROR: 0:122: 'index' : can only be used with an explicit location ERROR: 0:124: 'location' : overlapping use of location 0 ERROR: 0:125: 'index' : can only be used on an output ERROR: 0:126: 'index' : can only be used on an output ERROR: 0:126: 'location/component/index' : cannot declare a default, use a full declaration ERROR: 0:127: 'location/component/index' : cannot declare a default, use a full declaration ERROR: 0:128: 'output block' : not supported in this stage: fragment ERROR: 0:138: 'index' : value must be 0 or 1 ERROR: 0:140: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions ERROR: 0:146: 'location' : cannot apply to uniform or buffer block ERROR: 40 compilation errors. No code generated. Shader version: 330 Requested GL_ARB_enhanced_layouts Requested GL_ARB_explicit_uniform_location Requested GL_ARB_separate_shader_objects ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:10 'varyingVar' ( smooth in 4-component vector of float) 0:11 move second child to first child ( temp 4-component vector of float) 0:11 direct index ( temp 4-component vector of float FragData) 0:11 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:11 Constant: 0:11 1 (const int) 0:11 'inVar' ( smooth in 4-component vector of float) 0:12 Sequence 0:12 move second child to first child ( temp int) 0:12 'buffer' ( temp int) 0:12 Constant: 0:12 4 (const int) 0:21 Function Definition: foo( ( global void) 0:21 Function Parameters: 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'c' ( temp 4-component vector of float) 0:23 gl_Color: direct index for structure ( in 4-component vector of float Color) 0:23 'anon@0' ( in block{ in 4-component vector of float Color gl_Color}) 0:23 Constant: 0:23 2 (const uint) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'outVar' (layout( location=0 index=0) out 4-component vector of float) 0:24 'inVar' ( smooth in 4-component vector of float) 0:133 Function Definition: fooKeyMem( ( global void) 0:133 Function Parameters: 0:135 Sequence 0:135 precise: direct index for structure ( global int) 0:135 'KeyMem' ( global structure{ global int precise}) 0:135 Constant: 0:135 0 (const int) 0:152 Function Definition: testOverload( ( global void) 0:152 Function Parameters: 0:153 Sequence 0:153 Sequence 0:153 move second child to first child ( temp float) 0:153 'overloadTest' ( temp float) 0:153 Constant: 0:153 42.000000 0:154 move second child to first child ( temp float) 0:154 'overloadTest' ( temp float) 0:154 smoothstep ( global float) 0:154 Constant: 0:154 0.000000 0:154 Constant: 0:154 1.000000 0:154 'overloadTest' ( temp float) 0:? Linker Objects 0:? 'inVar' ( smooth in 4-component vector of float) 0:? 'outVar' (layout( location=0 index=0) out 4-component vector of float) 0:? 'varyingVar' ( smooth in 4-component vector of float) 0:? 'anon@0' ( in block{ in 4-component vector of float Color gl_Color}) 0:? 'gl_name' ( in block{ in int gl_i}) 0:? 'start' ( const int) 0:? 6 (const int) 0:? 'v1' ( smooth in 4-component vector of float) 0:? 'v2' (layout( location=8) smooth in 4-component vector of float) 0:? 'v20' ( smooth in 4-component vector of float) 0:? 'v21' (layout( location=60) smooth in float) 0:? 'v22' (layout( location=2) smooth in float) 0:? 'anon@1' ( in block{layout( location=1) in float f1, layout( location=3) in float f2}) 0:? 'uinst' (layout( location=1 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2}) 0:? 'v3' (layout( location=6) smooth in 4-component vector of float) 0:? 'v4' ( smooth in 4-component vector of float) 0:? 'v5' ( smooth in 4-component vector of float) 0:? 'v6' (layout( location=30) smooth in 4-component vector of float) 0:? 'v23' (layout( location=61) smooth in float) 0:? 'v24' (layout( location=62) smooth in float) 0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2, layout( location=26) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23) in 4-component vector of float f4, layout( location=24) in 4-component vector of float f5}) 0:? 'uinst2' (layout( location=13 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2}) 0:? 'in3' ( in block{ in float f1, layout( location=40) in float f2}) 0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 's' (layout( location=33) smooth in structure{ global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A}) 0:? 'anon@2' ( in block{layout( location=44) in 4-component vector of float d, layout( location=45) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42) in 4-component vector of float i, layout( location=43) in 4-component vector of float j, layout( location=44) in 4-component vector of float k}) 0:? 'outVar2' (layout( location=4095 index=0) out 4-component vector of float) 0:? 'outVar3' (layout( location=0 index=1) out 4-component vector of float) 0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float) 0:? 'indexIn' (layout( location=27 index=0) smooth in 4-component vector of float) 0:? 'indexBlockI' (layout( location=26 index=0) out block{ out int a}) 0:? 'precise' ( global int) 0:? 'KeyMem' ( global structure{ global int precise}) 0:? 'outIndex2' (layout( location=28 index=0) out 4-component vector of float) 0:? 'ucolor0' (layout( location=4) uniform 4-component vector of float) 0:? 'ucolor1' (layout( location=5) uniform 4-component vector of float) 0:? 'colorsBuffer' (layout( location=6 column_major shared) uniform block{layout( column_major shared) uniform 128-element array of 4-component vector of float colors}) Linked fragment stage: ERROR: Linking fragment stage: Cannot use gl_FragColor or gl_FragData when using user-defined outputs ERROR: Linking fragment stage: Cannot use both gl_FragColor and gl_FragData Shader version: 330 Requested GL_ARB_enhanced_layouts Requested GL_ARB_explicit_uniform_location Requested GL_ARB_separate_shader_objects ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:10 'varyingVar' ( smooth in 4-component vector of float) 0:11 move second child to first child ( temp 4-component vector of float) 0:11 direct index ( temp 4-component vector of float FragData) 0:11 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:11 Constant: 0:11 1 (const int) 0:11 'inVar' ( smooth in 4-component vector of float) 0:12 Sequence 0:12 move second child to first child ( temp int) 0:12 'buffer' ( temp int) 0:12 Constant: 0:12 4 (const int) 0:? Linker Objects 0:? 'inVar' ( smooth in 4-component vector of float) 0:? 'outVar' (layout( location=0 index=0) out 4-component vector of float) 0:? 'varyingVar' ( smooth in 4-component vector of float) 0:? 'anon@0' ( in block{ in 4-component vector of float Color gl_Color}) 0:? 'gl_name' ( in block{ in int gl_i}) 0:? 'start' ( const int) 0:? 6 (const int) 0:? 'v1' ( smooth in 4-component vector of float) 0:? 'v2' (layout( location=8) smooth in 4-component vector of float) 0:? 'v20' ( smooth in 4-component vector of float) 0:? 'v21' (layout( location=60) smooth in float) 0:? 'v22' (layout( location=2) smooth in float) 0:? 'anon@1' ( in block{layout( location=1) in float f1, layout( location=3) in float f2}) 0:? 'uinst' (layout( location=1 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2}) 0:? 'v3' (layout( location=6) smooth in 4-component vector of float) 0:? 'v4' ( smooth in 4-component vector of float) 0:? 'v5' ( smooth in 4-component vector of float) 0:? 'v6' (layout( location=30) smooth in 4-component vector of float) 0:? 'v23' (layout( location=61) smooth in float) 0:? 'v24' (layout( location=62) smooth in float) 0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2, layout( location=26) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23) in 4-component vector of float f4, layout( location=24) in 4-component vector of float f5}) 0:? 'uinst2' (layout( location=13 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2}) 0:? 'in3' ( in block{ in float f1, layout( location=40) in float f2}) 0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 's' (layout( location=33) smooth in structure{ global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A}) 0:? 'anon@2' ( in block{layout( location=44) in 4-component vector of float d, layout( location=45) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42) in 4-component vector of float i, layout( location=43) in 4-component vector of float j, layout( location=44) in 4-component vector of float k}) 0:? 'outVar2' (layout( location=4095 index=0) out 4-component vector of float) 0:? 'outVar3' (layout( location=0 index=1) out 4-component vector of float) 0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float) 0:? 'indexIn' (layout( location=27 index=0) smooth in 4-component vector of float) 0:? 'indexBlockI' (layout( location=26 index=0) out block{ out int a}) 0:? 'precise' ( global int) 0:? 'KeyMem' ( global structure{ global int precise}) 0:? 'outIndex2' (layout( location=28 index=0) out 4-component vector of float) 0:? 'ucolor0' (layout( location=4) uniform 4-component vector of float) 0:? 'ucolor1' (layout( location=5) uniform 4-component vector of float) 0:? 'colorsBuffer' (layout( location=6 column_major shared) uniform block{layout( column_major shared) uniform 128-element array of 4-component vector of float colors}) glslang-16.0.0/Test/baseResults/330comp.frag.out000066400000000000000000000042231506534232700213030ustar00rootroot00000000000000330comp.frag Shader version: 330 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:10 'varyingVar' ( smooth in 4-component vector of float) 0:11 move second child to first child ( temp 4-component vector of float) 0:11 direct index ( temp 4-component vector of float FragData) 0:11 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:11 Constant: 0:11 1 (const int) 0:11 vector-times-matrix ( temp 4-component vector of float) 0:11 'inVar' ( smooth in 4-component vector of float) 0:11 'gl_ModelViewMatrix' ( uniform 4X4 matrix of float) 0:? Linker Objects 0:? 'inVar' ( smooth in 4-component vector of float) 0:? 'outVar' ( out 4-component vector of float) 0:? 'varyingVar' ( smooth in 4-component vector of float) Linked fragment stage: ERROR: Linking fragment stage: Cannot use both gl_FragColor and gl_FragData Shader version: 330 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:10 'varyingVar' ( smooth in 4-component vector of float) 0:11 move second child to first child ( temp 4-component vector of float) 0:11 direct index ( temp 4-component vector of float FragData) 0:11 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:11 Constant: 0:11 1 (const int) 0:11 vector-times-matrix ( temp 4-component vector of float) 0:11 'inVar' ( smooth in 4-component vector of float) 0:11 'gl_ModelViewMatrix' ( uniform 4X4 matrix of float) 0:? Linker Objects 0:? 'inVar' ( smooth in 4-component vector of float) 0:? 'outVar' ( out 4-component vector of float) 0:? 'varyingVar' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/400.frag.out000066400000000000000000001135201506534232700204230ustar00rootroot00000000000000400.frag ERROR: 0:51: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument ERROR: 0:55: 'textureGatherOffset(...)' : must be a compile-time constant: component argument ERROR: 0:56: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument ERROR: 0:63: 'location qualifier on input' : not supported for this version or the enabled extensions ERROR: 0:71: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions ERROR: 0:73: 'gl_Color' : identifiers starting with "gl_" are reserved ERROR: 0:74: 'redeclaration' : cannot change qualification of gl_ClipDistance ERROR: 0:76: 'gl_FragCoord' : cannot redeclare after use ERROR: 0:84: 'texel offset' : argument must be compile-time constant ERROR: 0:86: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:86: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:87: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:87: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:90: 'patch' : not supported in this stage: fragment ERROR: 0:91: 'patch' : not supported in this stage: fragment ERROR: 0:91: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output ERROR: 0:106: 'dFdxFine' : required extension not requested: GL_ARB_derivative_control ERROR: 0:107: 'dFdyCoarse' : required extension not requested: GL_ARB_derivative_control ERROR: 0:108: 'fwidthCoarse' : required extension not requested: GL_ARB_derivative_control ERROR: 0:108: 'fwidthFine' : required extension not requested: GL_ARB_derivative_control ERROR: 0:137: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output ERROR: 0:156: 'interpolateAtCentroid' : no matching overloaded function found ERROR: 0:158: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:160: 'interpolateAtSample' : no matching overloaded function found ERROR: 0:165: 'interpolateAtOffset' : no matching overloaded function found ERROR: 0:167: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:168: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:169: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:172: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:173: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element ERROR: 0:216: 'textureQueryLod' : no matching overloaded function found ERROR: 0:216: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:217: 'textureQueryLod' : no matching overloaded function found ERROR: 0:217: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:230: 'subroutine' : feature not yet implemented ERROR: 0:230: '' : default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification ERROR: 0:231: 'subroutine' : feature not yet implemented ERROR: 0:232: 'subroutine' : feature not yet implemented ERROR: 0:234: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER ERROR: 39 compilation errors. No code generated. Shader version: 400 Requested GL_ARB_derivative_control Requested GL_ARB_separate_shader_objects Requested GL_ARB_shader_storage_buffer_object gl_FragCoord pixel center is integer gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:18 Function Definition: atomicOpPass( ( global void) 0:18 Function Parameters: 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp int) 0:20 'origi' ( temp int) 0:20 AtomicAdd ( global int) 0:20 atomi: direct index for structure (layout( column_major shared) buffer int) 0:20 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) 0:20 Constant: 0:20 0 (const uint) 0:20 Constant: 0:20 3 (const int) 0:21 Sequence 0:21 move second child to first child ( temp uint) 0:21 'origu' ( temp uint) 0:21 AtomicAnd ( global uint) 0:21 atomu: direct index for structure (layout( column_major shared) buffer uint) 0:21 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 7 (const uint) 0:22 move second child to first child ( temp int) 0:22 'origi' ( temp int) 0:22 AtomicExchange ( global int) 0:22 atomi: direct index for structure (layout( column_major shared) buffer int) 0:22 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) 0:22 Constant: 0:22 0 (const uint) 0:22 Constant: 0:22 4 (const int) 0:23 move second child to first child ( temp uint) 0:23 'origu' ( temp uint) 0:23 AtomicCompSwap ( global uint) 0:23 atomu: direct index for structure (layout( column_major shared) buffer uint) 0:23 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) 0:23 Constant: 0:23 1 (const uint) 0:23 Constant: 0:23 10 (const uint) 0:23 Constant: 0:23 8 (const uint) 0:43 Function Definition: main( ( global void) 0:43 Function Parameters: 0:? Sequence 0:46 move second child to first child ( temp 4-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:46 texture ( global 4-component vector of float) 0:46 indirect index ( temp sampler2D) 0:46 'arrayedSampler' ( uniform 5-element array of sampler2D) 0:46 'i' ( flat in int) 0:46 'c2D' ( smooth in 2-component vector of float) 0:47 move second child to first child ( temp float) 0:47 direct index ( temp float) 0:47 'outp' ( out 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:47 direct index ( smooth temp float ClipDistance) 0:47 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) 0:47 Constant: 0:47 1 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of uint) 0:51 'uv4' ( temp 4-component vector of uint) 0:51 textureGatherOffsets ( global 4-component vector of uint) 0:51 'samp2dr' ( uniform usampler2DRect) 0:51 'c2D' ( smooth in 2-component vector of float) 0:51 'offsets' ( temp 4-element array of 2-component vector of int) 0:51 Constant: 0:51 2 (const int) 0:52 move second child to first child ( temp 4-component vector of uint) 0:52 'uv4' ( temp 4-component vector of uint) 0:52 textureGatherOffsets ( global 4-component vector of uint) 0:52 'samp2dr' ( uniform usampler2DRect) 0:52 'c2D' ( smooth in 2-component vector of float) 0:52 Constant: 0:52 1 (const int) 0:52 2 (const int) 0:52 3 (const int) 0:52 4 (const int) 0:52 15 (const int) 0:52 16 (const int) 0:52 -2 (const int) 0:52 0 (const int) 0:52 Constant: 0:52 2 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:53 'v4' ( temp 4-component vector of float) 0:53 textureGather ( global 4-component vector of float) 0:53 direct index ( temp sampler2D) 0:53 'arrayedSampler' ( uniform 5-element array of sampler2D) 0:53 Constant: 0:53 0 (const int) 0:53 'c2D' ( smooth in 2-component vector of float) 0:54 Sequence 0:54 move second child to first child ( temp 4-component vector of int) 0:54 'iv4' ( temp 4-component vector of int) 0:54 textureGatherOffset ( global 4-component vector of int) 0:54 'isamp2DA' ( uniform isampler2DArray) 0:54 Constant: 0:54 0.100000 0:54 0.100000 0:54 0.100000 0:54 Constant: 0:54 1 (const int) 0:54 1 (const int) 0:54 Constant: 0:54 3 (const int) 0:55 move second child to first child ( temp 4-component vector of int) 0:55 'iv4' ( temp 4-component vector of int) 0:55 textureGatherOffset ( global 4-component vector of int) 0:55 'isamp2DA' ( uniform isampler2DArray) 0:55 Constant: 0:55 0.100000 0:55 0.100000 0:55 0.100000 0:55 Constant: 0:55 1 (const int) 0:55 1 (const int) 0:55 'i' ( flat in int) 0:56 move second child to first child ( temp 4-component vector of int) 0:56 'iv4' ( temp 4-component vector of int) 0:56 textureGatherOffset ( global 4-component vector of int) 0:56 'isamp2DA' ( uniform isampler2DArray) 0:56 Constant: 0:56 0.100000 0:56 0.100000 0:56 0.100000 0:56 Constant: 0:56 1 (const int) 0:56 1 (const int) 0:56 Constant: 0:56 4 (const int) 0:57 move second child to first child ( temp 4-component vector of int) 0:57 'iv4' ( temp 4-component vector of int) 0:57 textureGatherOffset ( global 4-component vector of int) 0:57 'isamp2DA' ( uniform isampler2DArray) 0:57 Constant: 0:57 0.100000 0:57 0.100000 0:57 0.100000 0:57 Constant: 0:57 1 (const int) 0:57 1 (const int) 0:57 Constant: 0:57 3 (const int) 0:58 move second child to first child ( temp 4-component vector of int) 0:58 'iv4' ( temp 4-component vector of int) 0:58 textureGatherOffset ( global 4-component vector of int) 0:58 'isamp2DA' ( uniform isampler2DArray) 0:58 Constant: 0:58 0.100000 0:58 0.100000 0:58 0.100000 0:58 Construct ivec2 ( temp 2-component vector of int) 0:58 'i' ( flat in int) 0:60 Sequence 0:60 move second child to first child ( temp 4-component vector of float) 0:60 'c' ( temp 4-component vector of float) 0:60 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:80 Function Definition: foo23( ( global void) 0:80 Function Parameters: 0:? Sequence 0:84 textureProjGradOffset ( global float) 0:84 'u2drs' ( uniform sampler2DRectShadow) 0:84 'outp' ( out 4-component vector of float) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 Convert float to int ( temp 2-component vector of int) 0:84 'c2D' ( smooth in 2-component vector of float) 0:85 textureProjGradOffset ( global float) 0:85 'u2drs' ( uniform sampler2DRectShadow) 0:85 'outp' ( out 4-component vector of float) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 Constant: 0:85 3 (const int) 0:85 4 (const int) 0:86 textureProjGradOffset ( global float) 0:86 'u2drs' ( uniform sampler2DRectShadow) 0:86 'outp' ( out 4-component vector of float) 0:86 Constant: 0:86 0.000000 0:86 0.000000 0:86 Constant: 0:86 0.000000 0:86 0.000000 0:86 Constant: 0:86 15 (const int) 0:86 16 (const int) 0:87 textureProjGradOffset ( global float) 0:87 'u2drs' ( uniform sampler2DRectShadow) 0:87 'outp' ( out 4-component vector of float) 0:87 Constant: 0:87 0.000000 0:87 0.000000 0:87 Constant: 0:87 0.000000 0:87 0.000000 0:87 Constant: 0:87 -10 (const int) 0:87 20 (const int) 0:93 Function Definition: foo24( ( global void) 0:93 Function Parameters: 0:? Sequence 0:96 move second child to first child ( temp 3-component vector of double) 0:96 'df' ( temp 3-component vector of double) 0:96 modf ( global 3-component vector of double) 0:96 Convert float to double ( temp 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of float) 0:96 'outp' ( out 4-component vector of float) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 'di' ( temp 3-component vector of double) 0:104 Function Definition: foodc1( ( global void) 0:104 Function Parameters: 0:106 Sequence 0:106 Sequence 0:106 move second child to first child ( temp 2-component vector of float) 0:106 'v2' ( temp 2-component vector of float) 0:106 dPdxFine ( global 2-component vector of float) 0:106 'in2' ( smooth in 2-component vector of float) 0:107 Sequence 0:107 move second child to first child ( temp 3-component vector of float) 0:107 'v3' ( temp 3-component vector of float) 0:107 dPdyCoarse ( global 3-component vector of float) 0:107 'in3' ( smooth in 3-component vector of float) 0:108 Sequence 0:108 move second child to first child ( temp 4-component vector of float) 0:108 'v4' ( temp 4-component vector of float) 0:108 add ( temp 4-component vector of float) 0:108 fwidthCoarse ( global 4-component vector of float) 0:108 'in4' ( smooth in 4-component vector of float) 0:108 fwidthFine ( global 4-component vector of float) 0:108 'in4' ( smooth in 4-component vector of float) 0:113 Function Definition: foodc2( ( global void) 0:113 Function Parameters: 0:115 Sequence 0:115 Sequence 0:115 move second child to first child ( temp 2-component vector of float) 0:115 'v2' ( temp 2-component vector of float) 0:115 dPdxFine ( global 2-component vector of float) 0:115 'in2' ( smooth in 2-component vector of float) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v3' ( temp 3-component vector of float) 0:116 dPdyCoarse ( global 3-component vector of float) 0:116 'in3' ( smooth in 3-component vector of float) 0:117 Sequence 0:117 move second child to first child ( temp 4-component vector of float) 0:117 'v4' ( temp 4-component vector of float) 0:117 add ( temp 4-component vector of float) 0:117 fwidthCoarse ( global 4-component vector of float) 0:117 'in4' ( smooth in 4-component vector of float) 0:117 fwidthFine ( global 4-component vector of float) 0:117 'in4' ( smooth in 4-component vector of float) 0:122 move second child to first child ( temp 2-component vector of float) 0:122 'v2' ( temp 2-component vector of float) 0:122 frexp ( global 2-component vector of float) 0:122 'v2' ( temp 2-component vector of float) 0:122 'i2' ( temp 2-component vector of int) 0:123 move second child to first child ( temp 3-component vector of float) 0:123 'v3' ( temp 3-component vector of float) 0:123 ldexp ( global 3-component vector of float) 0:123 'v3' ( temp 3-component vector of float) 0:123 'i3' ( temp 3-component vector of int) 0:125 move second child to first child ( temp uint) 0:125 'u1' ( temp uint) 0:125 PackUnorm4x8 ( global uint) 0:125 'v4' ( temp 4-component vector of float) 0:126 move second child to first child ( temp uint) 0:126 'u1' ( temp uint) 0:126 PackSnorm4x8 ( global uint) 0:126 'v4' ( temp 4-component vector of float) 0:127 move second child to first child ( temp 4-component vector of float) 0:127 'v4' ( temp 4-component vector of float) 0:127 UnpackUnorm4x8 ( global 4-component vector of float) 0:127 'u1' ( temp uint) 0:128 move second child to first child ( temp 4-component vector of float) 0:128 'v4' ( temp 4-component vector of float) 0:128 UnpackSnorm4x8 ( global 4-component vector of float) 0:128 'u1' ( temp uint) 0:132 move second child to first child ( temp double) 0:132 'd' ( temp double) 0:132 PackDouble2x32 ( global double) 0:132 'u2' ( temp 2-component vector of uint) 0:133 move second child to first child ( temp 2-component vector of uint) 0:133 'u2' ( temp 2-component vector of uint) 0:133 UnpackDouble2x32 ( global 2-component vector of uint) 0:133 'd' ( temp double) 0:150 Function Definition: interp( ( global void) 0:150 Function Parameters: 0:152 Sequence 0:152 interpolateAtCentroid ( global 2-component vector of float) 0:152 'colorfc' ( centroid flat in 2-component vector of float) 0:153 interpolateAtCentroid ( global 4-component vector of float) 0:153 'colorSampIn' ( smooth sample in 4-component vector of float) 0:154 interpolateAtCentroid ( global 4-component vector of float) 0:154 'colorfsi' ( noperspective in 4-component vector of float) 0:155 interpolateAtCentroid ( global float) 0:155 'scalarIn' ( smooth in float) 0:156 Constant: 0:156 0.000000 0:157 interpolateAtCentroid ( global 3-component vector of float) 0:157 direct index ( smooth sample temp 3-component vector of float) 0:157 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:157 Constant: 0:157 2 (const int) 0:158 interpolateAtCentroid ( global 2-component vector of float) 0:158 vector swizzle ( temp 2-component vector of float) 0:158 direct index ( smooth sample temp 3-component vector of float) 0:158 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:158 Constant: 0:158 2 (const int) 0:158 Sequence 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:160 Constant: 0:160 0.000000 0:161 interpolateAtSample ( global 3-component vector of float) 0:161 indirect index ( smooth sample temp 3-component vector of float) 0:161 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:161 'i' ( flat in int) 0:161 Constant: 0:161 0 (const int) 0:162 interpolateAtSample ( global float) 0:162 x: direct index for structure ( global float) 0:162 's1' ( smooth in structure{ global float x}) 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 2 (const int) 0:163 interpolateAtSample ( global float) 0:163 'scalarIn' ( smooth in float) 0:163 Constant: 0:163 1 (const int) 0:165 Constant: 0:165 0.000000 0:166 interpolateAtOffset ( global 3-component vector of float) 0:166 direct index ( smooth sample temp 3-component vector of float) 0:166 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:166 Constant: 0:166 2 (const int) 0:166 Constant: 0:166 0.200000 0:166 0.200000 0:167 interpolateAtOffset ( global 2-component vector of float) 0:167 vector swizzle ( temp 2-component vector of float) 0:167 direct index ( smooth sample temp 3-component vector of float) 0:167 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:167 Constant: 0:167 2 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 0.200000 0:167 0.200000 0:168 interpolateAtOffset ( global float) 0:168 add ( temp float) 0:168 'scalarIn' ( smooth in float) 0:168 'scalarIn' ( smooth in float) 0:168 Constant: 0:168 0.200000 0:168 0.200000 0:169 interpolateAtOffset ( global float) 0:169 x: direct index for structure ( global float) 0:169 's2' ( sample temp structure{ global float x}) 0:169 Constant: 0:169 0 (const int) 0:169 Constant: 0:169 0.200000 0:169 0.200000 0:172 interpolateAtCentroid ( global float) 0:172 'f' ( temp float) 0:173 interpolateAtSample ( global 4-component vector of float) 0:173 'outp' ( out 4-component vector of float) 0:173 Constant: 0:173 0 (const int) 0:194 Function Definition: qlod( ( global void) 0:194 Function Parameters: 0:? Sequence 0:201 move second child to first child ( temp 2-component vector of float) 0:201 'lod' ( temp 2-component vector of float) 0:201 textureQueryLod ( global 2-component vector of float) 0:201 'samp1D' ( uniform sampler1D) 0:201 'pf' ( temp float) 0:202 move second child to first child ( temp 2-component vector of float) 0:202 'lod' ( temp 2-component vector of float) 0:202 textureQueryLod ( global 2-component vector of float) 0:202 'isamp2D' ( uniform isampler2D) 0:202 'pf2' ( temp 2-component vector of float) 0:203 move second child to first child ( temp 2-component vector of float) 0:203 'lod' ( temp 2-component vector of float) 0:203 textureQueryLod ( global 2-component vector of float) 0:203 'usamp3D' ( uniform usampler3D) 0:203 'pf3' ( temp 3-component vector of float) 0:204 move second child to first child ( temp 2-component vector of float) 0:204 'lod' ( temp 2-component vector of float) 0:204 textureQueryLod ( global 2-component vector of float) 0:204 'sampCube' ( uniform samplerCube) 0:204 'pf3' ( temp 3-component vector of float) 0:205 move second child to first child ( temp 2-component vector of float) 0:205 'lod' ( temp 2-component vector of float) 0:205 textureQueryLod ( global 2-component vector of float) 0:205 'isamp1DA' ( uniform isampler1DArray) 0:205 'pf' ( temp float) 0:206 move second child to first child ( temp 2-component vector of float) 0:206 'lod' ( temp 2-component vector of float) 0:206 textureQueryLod ( global 2-component vector of float) 0:206 'usamp2DA' ( uniform usampler2DArray) 0:206 'pf2' ( temp 2-component vector of float) 0:207 move second child to first child ( temp 2-component vector of float) 0:207 'lod' ( temp 2-component vector of float) 0:207 textureQueryLod ( global 2-component vector of float) 0:207 'isampCubeA' ( uniform isamplerCubeArray) 0:207 'pf3' ( temp 3-component vector of float) 0:209 move second child to first child ( temp 2-component vector of float) 0:209 'lod' ( temp 2-component vector of float) 0:209 textureQueryLod ( global 2-component vector of float) 0:209 'samp1Ds' ( uniform sampler1DShadow) 0:209 'pf' ( temp float) 0:210 move second child to first child ( temp 2-component vector of float) 0:210 'lod' ( temp 2-component vector of float) 0:210 textureQueryLod ( global 2-component vector of float) 0:210 'samp2Ds' ( uniform sampler2DShadow) 0:210 'pf2' ( temp 2-component vector of float) 0:211 move second child to first child ( temp 2-component vector of float) 0:211 'lod' ( temp 2-component vector of float) 0:211 textureQueryLod ( global 2-component vector of float) 0:211 'sampCubes' ( uniform samplerCubeShadow) 0:211 'pf3' ( temp 3-component vector of float) 0:212 move second child to first child ( temp 2-component vector of float) 0:212 'lod' ( temp 2-component vector of float) 0:212 textureQueryLod ( global 2-component vector of float) 0:212 'samp1DAs' ( uniform sampler1DArrayShadow) 0:212 'pf' ( temp float) 0:213 move second child to first child ( temp 2-component vector of float) 0:213 'lod' ( temp 2-component vector of float) 0:213 textureQueryLod ( global 2-component vector of float) 0:213 'samp2DAs' ( uniform sampler2DArrayShadow) 0:213 'pf2' ( temp 2-component vector of float) 0:214 move second child to first child ( temp 2-component vector of float) 0:214 'lod' ( temp 2-component vector of float) 0:214 textureQueryLod ( global 2-component vector of float) 0:214 'sampCubeAs' ( uniform samplerCubeArrayShadow) 0:214 'pf3' ( temp 3-component vector of float) 0:216 'lod' ( temp 2-component vector of float) 0:217 'lod' ( temp 2-component vector of float) 0:223 Function Definition: bitwiseConv( ( global void) 0:223 Function Parameters: 0:225 Sequence 0:225 move second child to first child ( temp uint) 0:225 'iout' ( out uint) 0:225 bitwise and ( temp uint) 0:225 'uu' ( uniform uint) 0:225 Convert int to uint ( temp uint) 0:225 'i' ( flat in int) 0:226 add second child into first child ( temp uint) 0:226 'iout' ( out uint) 0:226 exclusive-or ( temp uint) 0:226 'uu' ( uniform uint) 0:226 Convert int to uint ( temp uint) 0:226 'i' ( flat in int) 0:227 add second child into first child ( temp uint) 0:227 'iout' ( out uint) 0:227 inclusive-or ( temp uint) 0:227 Convert int to uint ( temp uint) 0:227 'i' ( flat in int) 0:227 'uu' ( uniform uint) 0:231 Function Definition: subT1( ( temp float) 0:231 Function Parameters: 0:231 Sequence 0:231 Branch: Return with expression 0:231 Constant: 0:231 1.000000 0:232 Function Definition: subT2( ( temp float) 0:232 Function Parameters: 0:232 Sequence 0:232 Branch: Return with expression 0:232 Constant: 0:232 1.000000 0:? Linker Objects 0:? 'c2D' ( smooth in 2-component vector of float) 0:? 'i' ( flat in int) 0:? 'outp' ( out 4-component vector of float) 0:? 'arrayedSampler' ( uniform 5-element array of sampler2D) 0:? 'samp2dr' ( uniform usampler2DRect) 0:? 'isamp2DA' ( uniform isampler2DArray) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) 0:? 'ssboStd430Arr' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member01, layout( column_major shared) buffer 2-element array of int memberArr01, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr01}) 0:? 'ssboSharedArr' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member02, layout( column_major shared) buffer 2-element array of int memberArr02, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr02}) 0:? 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) 0:? 'vl' (layout( location=4) smooth in 4-component vector of float) 0:? 'vl2' (layout( location=6) smooth in 4-component vector of float) 0:? 'uv3' (layout( location=3) uniform 3-component vector of float) 0:? 'gl_Color' (layout( location=5) smooth in 4-component vector of float) 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? 'u2drs' ( uniform sampler2DRectShadow) 0:? 'patchIn' ( smooth patch in 4-component vector of float) 0:? 'patchOut' ( patch out 4-component vector of float) 0:? 'in1' ( smooth in float) 0:? 'in2' ( smooth in 2-component vector of float) 0:? 'in3' ( smooth in 3-component vector of float) 0:? 'in4' ( smooth in 4-component vector of float) 0:? 'colorSampIn' ( smooth sample in 4-component vector of float) 0:? 'colorSampleBad' ( sample out 4-component vector of float) 0:? 'colorfsi' ( noperspective in 4-component vector of float) 0:? 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:? 'scalarIn' ( smooth in float) 0:? 'colorfc' ( centroid flat in 2-component vector of float) 0:? 's1' ( smooth in structure{ global float x}) 0:? 's2' ( sample temp structure{ global float x}) 0:? 'samp1D' ( uniform sampler1D) 0:? 'isamp2D' ( uniform isampler2D) 0:? 'usamp3D' ( uniform usampler3D) 0:? 'sampCube' ( uniform samplerCube) 0:? 'isamp1DA' ( uniform isampler1DArray) 0:? 'usamp2DA' ( uniform usampler2DArray) 0:? 'isampCubeA' ( uniform isamplerCubeArray) 0:? 'samp1Ds' ( uniform sampler1DShadow) 0:? 'samp2Ds' ( uniform sampler2DShadow) 0:? 'sampCubes' ( uniform samplerCubeShadow) 0:? 'samp1DAs' ( uniform sampler1DArrayShadow) 0:? 'samp2DAs' ( uniform sampler2DArrayShadow) 0:? 'sampCubeAs' ( uniform samplerCubeArrayShadow) 0:? 'sampBuf' ( uniform samplerBuffer) 0:? 'sampRect' ( uniform sampler2DRect) 0:? 'uu' ( uniform uint) 0:? 'iout' ( out uint) Linked fragment stage: Shader version: 400 Requested GL_ARB_derivative_control Requested GL_ARB_separate_shader_objects Requested GL_ARB_shader_storage_buffer_object gl_FragCoord pixel center is integer gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:43 Function Definition: main( ( global void) 0:43 Function Parameters: 0:? Sequence 0:46 move second child to first child ( temp 4-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:46 texture ( global 4-component vector of float) 0:46 indirect index ( temp sampler2D) 0:46 'arrayedSampler' ( uniform 5-element array of sampler2D) 0:46 'i' ( flat in int) 0:46 'c2D' ( smooth in 2-component vector of float) 0:47 move second child to first child ( temp float) 0:47 direct index ( temp float) 0:47 'outp' ( out 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:47 direct index ( smooth temp float ClipDistance) 0:47 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) 0:47 Constant: 0:47 1 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of uint) 0:51 'uv4' ( temp 4-component vector of uint) 0:51 textureGatherOffsets ( global 4-component vector of uint) 0:51 'samp2dr' ( uniform usampler2DRect) 0:51 'c2D' ( smooth in 2-component vector of float) 0:51 'offsets' ( temp 4-element array of 2-component vector of int) 0:51 Constant: 0:51 2 (const int) 0:52 move second child to first child ( temp 4-component vector of uint) 0:52 'uv4' ( temp 4-component vector of uint) 0:52 textureGatherOffsets ( global 4-component vector of uint) 0:52 'samp2dr' ( uniform usampler2DRect) 0:52 'c2D' ( smooth in 2-component vector of float) 0:52 Constant: 0:52 1 (const int) 0:52 2 (const int) 0:52 3 (const int) 0:52 4 (const int) 0:52 15 (const int) 0:52 16 (const int) 0:52 -2 (const int) 0:52 0 (const int) 0:52 Constant: 0:52 2 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:53 'v4' ( temp 4-component vector of float) 0:53 textureGather ( global 4-component vector of float) 0:53 direct index ( temp sampler2D) 0:53 'arrayedSampler' ( uniform 5-element array of sampler2D) 0:53 Constant: 0:53 0 (const int) 0:53 'c2D' ( smooth in 2-component vector of float) 0:54 Sequence 0:54 move second child to first child ( temp 4-component vector of int) 0:54 'iv4' ( temp 4-component vector of int) 0:54 textureGatherOffset ( global 4-component vector of int) 0:54 'isamp2DA' ( uniform isampler2DArray) 0:54 Constant: 0:54 0.100000 0:54 0.100000 0:54 0.100000 0:54 Constant: 0:54 1 (const int) 0:54 1 (const int) 0:54 Constant: 0:54 3 (const int) 0:55 move second child to first child ( temp 4-component vector of int) 0:55 'iv4' ( temp 4-component vector of int) 0:55 textureGatherOffset ( global 4-component vector of int) 0:55 'isamp2DA' ( uniform isampler2DArray) 0:55 Constant: 0:55 0.100000 0:55 0.100000 0:55 0.100000 0:55 Constant: 0:55 1 (const int) 0:55 1 (const int) 0:55 'i' ( flat in int) 0:56 move second child to first child ( temp 4-component vector of int) 0:56 'iv4' ( temp 4-component vector of int) 0:56 textureGatherOffset ( global 4-component vector of int) 0:56 'isamp2DA' ( uniform isampler2DArray) 0:56 Constant: 0:56 0.100000 0:56 0.100000 0:56 0.100000 0:56 Constant: 0:56 1 (const int) 0:56 1 (const int) 0:56 Constant: 0:56 4 (const int) 0:57 move second child to first child ( temp 4-component vector of int) 0:57 'iv4' ( temp 4-component vector of int) 0:57 textureGatherOffset ( global 4-component vector of int) 0:57 'isamp2DA' ( uniform isampler2DArray) 0:57 Constant: 0:57 0.100000 0:57 0.100000 0:57 0.100000 0:57 Constant: 0:57 1 (const int) 0:57 1 (const int) 0:57 Constant: 0:57 3 (const int) 0:58 move second child to first child ( temp 4-component vector of int) 0:58 'iv4' ( temp 4-component vector of int) 0:58 textureGatherOffset ( global 4-component vector of int) 0:58 'isamp2DA' ( uniform isampler2DArray) 0:58 Constant: 0:58 0.100000 0:58 0.100000 0:58 0.100000 0:58 Construct ivec2 ( temp 2-component vector of int) 0:58 'i' ( flat in int) 0:60 Sequence 0:60 move second child to first child ( temp 4-component vector of float) 0:60 'c' ( temp 4-component vector of float) 0:60 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? Linker Objects 0:? 'c2D' ( smooth in 2-component vector of float) 0:? 'i' ( flat in int) 0:? 'outp' ( out 4-component vector of float) 0:? 'arrayedSampler' ( uniform 5-element array of sampler2D) 0:? 'samp2dr' ( uniform usampler2DRect) 0:? 'isamp2DA' ( uniform isampler2DArray) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) 0:? 'ssboStd430Arr' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member01, layout( column_major shared) buffer 2-element array of int memberArr01, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr01}) 0:? 'ssboSharedArr' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member02, layout( column_major shared) buffer 2-element array of int memberArr02, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr02}) 0:? 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) 0:? 'vl' (layout( location=4) smooth in 4-component vector of float) 0:? 'vl2' (layout( location=6) smooth in 4-component vector of float) 0:? 'uv3' (layout( location=3) uniform 3-component vector of float) 0:? 'gl_Color' (layout( location=5) smooth in 4-component vector of float) 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? 'u2drs' ( uniform sampler2DRectShadow) 0:? 'patchIn' ( smooth patch in 4-component vector of float) 0:? 'patchOut' ( patch out 4-component vector of float) 0:? 'in1' ( smooth in float) 0:? 'in2' ( smooth in 2-component vector of float) 0:? 'in3' ( smooth in 3-component vector of float) 0:? 'in4' ( smooth in 4-component vector of float) 0:? 'colorSampIn' ( smooth sample in 4-component vector of float) 0:? 'colorSampleBad' ( sample out 4-component vector of float) 0:? 'colorfsi' ( noperspective in 4-component vector of float) 0:? 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:? 'scalarIn' ( smooth in float) 0:? 'colorfc' ( centroid flat in 2-component vector of float) 0:? 's1' ( smooth in structure{ global float x}) 0:? 's2' ( sample temp structure{ global float x}) 0:? 'samp1D' ( uniform sampler1D) 0:? 'isamp2D' ( uniform isampler2D) 0:? 'usamp3D' ( uniform usampler3D) 0:? 'sampCube' ( uniform samplerCube) 0:? 'isamp1DA' ( uniform isampler1DArray) 0:? 'usamp2DA' ( uniform usampler2DArray) 0:? 'isampCubeA' ( uniform isamplerCubeArray) 0:? 'samp1Ds' ( uniform sampler1DShadow) 0:? 'samp2Ds' ( uniform sampler2DShadow) 0:? 'sampCubes' ( uniform samplerCubeShadow) 0:? 'samp1DAs' ( uniform sampler1DArrayShadow) 0:? 'samp2DAs' ( uniform sampler2DArrayShadow) 0:? 'sampCubeAs' ( uniform samplerCubeArrayShadow) 0:? 'sampBuf' ( uniform samplerBuffer) 0:? 'sampRect' ( uniform sampler2DRect) 0:? 'uu' ( uniform uint) 0:? 'iout' ( out uint) glslang-16.0.0/Test/baseResults/400.geom.out000066400000000000000000001637041506534232700204440ustar00rootroot00000000000000400.geom ERROR: 0:12: 'invocations' : can only apply to a standalone qualifier ERROR: 0:20: 'patch' : not supported in this stage: geometry ERROR: 0:20: 'patch' : not allowed on block or structure members ERROR: 0:20: 'gl_PointSize' : cannot add non-XFB layout to redeclared block member ERROR: 0:20: 'gl_PointSize' : cannot add patch to redeclared block member ERROR: 0:25: 'length' : array must first be sized by a redeclaration or layout qualifier ERROR: 0:36: 'length' : array must first be sized by a redeclaration or layout qualifier ERROR: 0:40: 'triangles' : inconsistent input primitive for array size of colorBad ERROR: 0:44: 'triangles' : inconsistent input primitive for array size of colorbad2 ERROR: 0:56: 'location' : overlapping use of location 4 ERROR: 0:58: 'patch' : not supported in this stage: geometry ERROR: 0:59: 'patch' : not supported in this stage: geometry ERROR: 0:61: 'in' : type must be an array: scalar ERROR: 0:63: 'invocations' : can only apply to 'in' ERROR: 0:64: 'max_vertices' : can only apply to 'out' ERROR: 0:65: 'max_vertices' : can only apply to 'out' ERROR: 0:65: 'invocations' : can only apply to 'in' ERROR: 0:67: 'in' : type must be an array: inbls ERROR: 0:71: 'triangles' : inconsistent input primitive for array size of inbla ERROR: 0:103: 'index' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:115: 'textureQueryLod' : no matching overloaded function found ERROR: 0:115: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:116: 'textureQueryLod' : no matching overloaded function found ERROR: 0:116: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 24 compilation errors. No code generated. Shader version: 400 Requested GL_ARB_separate_shader_objects invocations = 4 max_vertices = 127 input primitive = triangles output primitive = none ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:5 Sequence 0:5 EmitStreamVertex ( global void) 0:5 Constant: 0:5 1 (const int) 0:6 EndStreamPrimitive ( global void) 0:6 Constant: 0:6 0 (const int) 0:7 EmitVertex ( global void) 0:8 EndPrimitive ( global void) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'id' ( temp int) 0:9 'gl_InvocationID' ( in int InvocationID) 0:23 Function Definition: foo( ( global void) 0:23 Function Parameters: 0:25 Sequence 0:25 Constant: 0:25 1 (const int) 0:26 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:26 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) 0:26 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:34 Function Definition: foo2( ( global void) 0:34 Function Parameters: 0:36 Sequence 0:36 Constant: 0:36 1 (const int) 0:37 Constant: 0:37 3 (const int) 0:46 Function Definition: foo3( ( global void) 0:46 Function Parameters: 0:48 Sequence 0:48 Constant: 0:48 3 (const int) 0:49 Constant: 0:49 3 (const int) 0:50 Constant: 0:50 3 (const int) 0:51 Constant: 0:51 3 (const int) 0:75 Function Definition: bits( ( global void) 0:75 Function Parameters: 0:? Sequence 0:78 move second child to first child ( temp 2-component vector of uint) 0:78 'u2' ( temp 2-component vector of uint) 0:78 addCarry ( global 2-component vector of uint) 0:78 'u2' ( temp 2-component vector of uint) 0:78 'u2' ( temp 2-component vector of uint) 0:78 'u2' ( temp 2-component vector of uint) 0:80 move second child to first child ( temp uint) 0:80 'u1' ( temp uint) 0:80 subBorrow ( global uint) 0:80 'u1' ( temp uint) 0:80 'u1' ( temp uint) 0:80 'u1' ( temp uint) 0:82 uMulExtended ( global void) 0:82 'u4' ( temp 4-component vector of uint) 0:82 'u4' ( temp 4-component vector of uint) 0:82 'u4' ( temp 4-component vector of uint) 0:82 'u4' ( temp 4-component vector of uint) 0:84 iMulExtended ( global void) 0:84 'i4' ( temp 4-component vector of int) 0:84 'i4' ( temp 4-component vector of int) 0:84 'i4' ( temp 4-component vector of int) 0:84 'i4' ( temp 4-component vector of int) 0:86 move second child to first child ( temp int) 0:86 'i1' ( temp int) 0:86 bitfieldExtract ( global int) 0:86 'i1' ( temp int) 0:86 Constant: 0:86 4 (const int) 0:86 Constant: 0:86 5 (const int) 0:88 move second child to first child ( temp 3-component vector of uint) 0:88 'u3' ( temp 3-component vector of uint) 0:88 bitfieldExtract ( global 3-component vector of uint) 0:88 'u3' ( temp 3-component vector of uint) 0:88 Constant: 0:88 4 (const int) 0:88 Constant: 0:88 5 (const int) 0:90 move second child to first child ( temp 3-component vector of int) 0:90 'i3' ( temp 3-component vector of int) 0:90 bitfieldInsert ( global 3-component vector of int) 0:90 'i3' ( temp 3-component vector of int) 0:90 'i3' ( temp 3-component vector of int) 0:90 Constant: 0:90 4 (const int) 0:90 Constant: 0:90 5 (const int) 0:91 move second child to first child ( temp uint) 0:91 'u1' ( temp uint) 0:91 bitfieldInsert ( global uint) 0:91 'u1' ( temp uint) 0:91 'u1' ( temp uint) 0:91 Constant: 0:91 4 (const int) 0:91 Constant: 0:91 5 (const int) 0:93 move second child to first child ( temp 2-component vector of int) 0:93 'i2' ( temp 2-component vector of int) 0:93 bitFieldReverse ( global 2-component vector of int) 0:93 'i2' ( temp 2-component vector of int) 0:94 move second child to first child ( temp 4-component vector of uint) 0:94 'u4' ( temp 4-component vector of uint) 0:94 bitFieldReverse ( global 4-component vector of uint) 0:94 'u4' ( temp 4-component vector of uint) 0:95 move second child to first child ( temp int) 0:95 'i1' ( temp int) 0:95 bitCount ( global int) 0:95 'i1' ( temp int) 0:96 move second child to first child ( temp 3-component vector of int) 0:96 'i3' ( temp 3-component vector of int) 0:96 bitCount ( global 3-component vector of int) 0:96 'u3' ( temp 3-component vector of uint) 0:97 move second child to first child ( temp 2-component vector of int) 0:97 'i2' ( temp 2-component vector of int) 0:97 findLSB ( global 2-component vector of int) 0:97 'i2' ( temp 2-component vector of int) 0:98 move second child to first child ( temp 4-component vector of int) 0:98 'i4' ( temp 4-component vector of int) 0:98 findLSB ( global 4-component vector of int) 0:98 'u4' ( temp 4-component vector of uint) 0:99 move second child to first child ( temp int) 0:99 'i1' ( temp int) 0:99 findMSB ( global int) 0:99 'i1' ( temp int) 0:100 move second child to first child ( temp 2-component vector of int) 0:100 'i2' ( temp 2-component vector of int) 0:100 findMSB ( global 2-component vector of int) 0:100 'u2' ( temp 2-component vector of uint) 0:108 Function Definition: qlod( ( global void) 0:108 Function Parameters: 0:? Sequence 0:115 'lod' ( temp 2-component vector of float) 0:116 'lod' ( temp 2-component vector of float) 0:119 Function Definition: doubles( ( global void) 0:119 Function Parameters: 0:? Sequence 0:131 move second child to first child ( temp double) 0:131 'doublev' ( temp double) 0:131 Constant: 0:131 1.702939 0:132 move second child to first child ( temp 2-component vector of double) 0:132 'dvec2v' ( temp 2-component vector of double) 0:132 Constant: 0:132 1.643168 0:132 1.643168 0:133 move second child to first child ( temp 3-component vector of double) 0:133 'dvec3v' ( temp 3-component vector of double) 0:133 Constant: 0:133 1.414214 0:133 1.414214 0:133 1.414214 0:134 move second child to first child ( temp 4-component vector of double) 0:134 'dvec4v' ( temp 4-component vector of double) 0:134 Constant: 0:134 1.449138 0:134 1.449138 0:134 1.449138 0:134 1.449138 0:136 add second child into first child ( temp double) 0:136 'doublev' ( temp double) 0:136 inverse sqrt ( global double) 0:136 'doublev' ( temp double) 0:137 add second child into first child ( temp 2-component vector of double) 0:137 'dvec2v' ( temp 2-component vector of double) 0:137 inverse sqrt ( global 2-component vector of double) 0:137 'dvec2v' ( temp 2-component vector of double) 0:138 add second child into first child ( temp 3-component vector of double) 0:138 'dvec3v' ( temp 3-component vector of double) 0:138 inverse sqrt ( global 3-component vector of double) 0:138 'dvec3v' ( temp 3-component vector of double) 0:139 add second child into first child ( temp 4-component vector of double) 0:139 'dvec4v' ( temp 4-component vector of double) 0:139 inverse sqrt ( global 4-component vector of double) 0:139 'dvec4v' ( temp 4-component vector of double) 0:141 add second child into first child ( temp double) 0:141 'doublev' ( temp double) 0:141 Absolute value ( global double) 0:141 'doublev' ( temp double) 0:142 add second child into first child ( temp 2-component vector of double) 0:142 'dvec2v' ( temp 2-component vector of double) 0:142 Absolute value ( global 2-component vector of double) 0:142 'dvec2v' ( temp 2-component vector of double) 0:143 add second child into first child ( temp 3-component vector of double) 0:143 'dvec3v' ( temp 3-component vector of double) 0:143 Absolute value ( global 3-component vector of double) 0:143 'dvec3v' ( temp 3-component vector of double) 0:144 add second child into first child ( temp 4-component vector of double) 0:144 'dvec4v' ( temp 4-component vector of double) 0:144 Absolute value ( global 4-component vector of double) 0:144 'dvec4v' ( temp 4-component vector of double) 0:146 add second child into first child ( temp double) 0:146 'doublev' ( temp double) 0:146 Sign ( global double) 0:146 'doublev' ( temp double) 0:147 add second child into first child ( temp 2-component vector of double) 0:147 'dvec2v' ( temp 2-component vector of double) 0:147 Sign ( global 2-component vector of double) 0:147 'dvec2v' ( temp 2-component vector of double) 0:148 add second child into first child ( temp 3-component vector of double) 0:148 'dvec3v' ( temp 3-component vector of double) 0:148 Sign ( global 3-component vector of double) 0:148 'dvec3v' ( temp 3-component vector of double) 0:149 add second child into first child ( temp 4-component vector of double) 0:149 'dvec4v' ( temp 4-component vector of double) 0:149 Sign ( global 4-component vector of double) 0:149 'dvec4v' ( temp 4-component vector of double) 0:151 add second child into first child ( temp double) 0:151 'doublev' ( temp double) 0:151 Floor ( global double) 0:151 'doublev' ( temp double) 0:152 add second child into first child ( temp 2-component vector of double) 0:152 'dvec2v' ( temp 2-component vector of double) 0:152 Floor ( global 2-component vector of double) 0:152 'dvec2v' ( temp 2-component vector of double) 0:153 add second child into first child ( temp 3-component vector of double) 0:153 'dvec3v' ( temp 3-component vector of double) 0:153 Floor ( global 3-component vector of double) 0:153 'dvec3v' ( temp 3-component vector of double) 0:154 add second child into first child ( temp 4-component vector of double) 0:154 'dvec4v' ( temp 4-component vector of double) 0:154 Floor ( global 4-component vector of double) 0:154 'dvec4v' ( temp 4-component vector of double) 0:156 add second child into first child ( temp double) 0:156 'doublev' ( temp double) 0:156 trunc ( global double) 0:156 'doublev' ( temp double) 0:157 add second child into first child ( temp 2-component vector of double) 0:157 'dvec2v' ( temp 2-component vector of double) 0:157 trunc ( global 2-component vector of double) 0:157 'dvec2v' ( temp 2-component vector of double) 0:158 add second child into first child ( temp 3-component vector of double) 0:158 'dvec3v' ( temp 3-component vector of double) 0:158 trunc ( global 3-component vector of double) 0:158 'dvec3v' ( temp 3-component vector of double) 0:159 add second child into first child ( temp 4-component vector of double) 0:159 'dvec4v' ( temp 4-component vector of double) 0:159 trunc ( global 4-component vector of double) 0:159 'dvec4v' ( temp 4-component vector of double) 0:161 add second child into first child ( temp double) 0:161 'doublev' ( temp double) 0:161 round ( global double) 0:161 'doublev' ( temp double) 0:162 add second child into first child ( temp 2-component vector of double) 0:162 'dvec2v' ( temp 2-component vector of double) 0:162 round ( global 2-component vector of double) 0:162 'dvec2v' ( temp 2-component vector of double) 0:163 add second child into first child ( temp 3-component vector of double) 0:163 'dvec3v' ( temp 3-component vector of double) 0:163 round ( global 3-component vector of double) 0:163 'dvec3v' ( temp 3-component vector of double) 0:164 add second child into first child ( temp 4-component vector of double) 0:164 'dvec4v' ( temp 4-component vector of double) 0:164 round ( global 4-component vector of double) 0:164 'dvec4v' ( temp 4-component vector of double) 0:166 add second child into first child ( temp double) 0:166 'doublev' ( temp double) 0:166 roundEven ( global double) 0:166 'doublev' ( temp double) 0:167 add second child into first child ( temp 2-component vector of double) 0:167 'dvec2v' ( temp 2-component vector of double) 0:167 roundEven ( global 2-component vector of double) 0:167 'dvec2v' ( temp 2-component vector of double) 0:168 add second child into first child ( temp 3-component vector of double) 0:168 'dvec3v' ( temp 3-component vector of double) 0:168 roundEven ( global 3-component vector of double) 0:168 'dvec3v' ( temp 3-component vector of double) 0:169 add second child into first child ( temp 4-component vector of double) 0:169 'dvec4v' ( temp 4-component vector of double) 0:169 roundEven ( global 4-component vector of double) 0:169 'dvec4v' ( temp 4-component vector of double) 0:171 add second child into first child ( temp double) 0:171 'doublev' ( temp double) 0:171 Ceiling ( global double) 0:171 'doublev' ( temp double) 0:172 add second child into first child ( temp 2-component vector of double) 0:172 'dvec2v' ( temp 2-component vector of double) 0:172 Ceiling ( global 2-component vector of double) 0:172 'dvec2v' ( temp 2-component vector of double) 0:173 add second child into first child ( temp 3-component vector of double) 0:173 'dvec3v' ( temp 3-component vector of double) 0:173 Ceiling ( global 3-component vector of double) 0:173 'dvec3v' ( temp 3-component vector of double) 0:174 add second child into first child ( temp 4-component vector of double) 0:174 'dvec4v' ( temp 4-component vector of double) 0:174 Ceiling ( global 4-component vector of double) 0:174 'dvec4v' ( temp 4-component vector of double) 0:176 add second child into first child ( temp double) 0:176 'doublev' ( temp double) 0:176 Fraction ( global double) 0:176 'doublev' ( temp double) 0:177 add second child into first child ( temp 2-component vector of double) 0:177 'dvec2v' ( temp 2-component vector of double) 0:177 Fraction ( global 2-component vector of double) 0:177 'dvec2v' ( temp 2-component vector of double) 0:178 add second child into first child ( temp 3-component vector of double) 0:178 'dvec3v' ( temp 3-component vector of double) 0:178 Fraction ( global 3-component vector of double) 0:178 'dvec3v' ( temp 3-component vector of double) 0:179 add second child into first child ( temp 4-component vector of double) 0:179 'dvec4v' ( temp 4-component vector of double) 0:179 Fraction ( global 4-component vector of double) 0:179 'dvec4v' ( temp 4-component vector of double) 0:181 add second child into first child ( temp double) 0:181 'doublev' ( temp double) 0:181 mod ( global double) 0:181 'doublev' ( temp double) 0:181 'doublev' ( temp double) 0:182 add second child into first child ( temp 2-component vector of double) 0:182 'dvec2v' ( temp 2-component vector of double) 0:182 mod ( global 2-component vector of double) 0:182 'dvec2v' ( temp 2-component vector of double) 0:182 'doublev' ( temp double) 0:183 add second child into first child ( temp 3-component vector of double) 0:183 'dvec3v' ( temp 3-component vector of double) 0:183 mod ( global 3-component vector of double) 0:183 'dvec3v' ( temp 3-component vector of double) 0:183 'doublev' ( temp double) 0:184 add second child into first child ( temp 4-component vector of double) 0:184 'dvec4v' ( temp 4-component vector of double) 0:184 mod ( global 4-component vector of double) 0:184 'dvec4v' ( temp 4-component vector of double) 0:184 'doublev' ( temp double) 0:185 add second child into first child ( temp 2-component vector of double) 0:185 'dvec2v' ( temp 2-component vector of double) 0:185 mod ( global 2-component vector of double) 0:185 'dvec2v' ( temp 2-component vector of double) 0:185 'dvec2v' ( temp 2-component vector of double) 0:186 add second child into first child ( temp 3-component vector of double) 0:186 'dvec3v' ( temp 3-component vector of double) 0:186 mod ( global 3-component vector of double) 0:186 'dvec3v' ( temp 3-component vector of double) 0:186 'dvec3v' ( temp 3-component vector of double) 0:187 add second child into first child ( temp 4-component vector of double) 0:187 'dvec4v' ( temp 4-component vector of double) 0:187 mod ( global 4-component vector of double) 0:187 'dvec4v' ( temp 4-component vector of double) 0:187 'dvec4v' ( temp 4-component vector of double) 0:189 add second child into first child ( temp double) 0:189 'doublev' ( temp double) 0:189 modf ( global double) 0:189 'doublev' ( temp double) 0:189 'doublev' ( temp double) 0:190 add second child into first child ( temp 2-component vector of double) 0:190 'dvec2v' ( temp 2-component vector of double) 0:190 modf ( global 2-component vector of double) 0:190 'dvec2v' ( temp 2-component vector of double) 0:190 'dvec2v' ( temp 2-component vector of double) 0:191 add second child into first child ( temp 3-component vector of double) 0:191 'dvec3v' ( temp 3-component vector of double) 0:191 modf ( global 3-component vector of double) 0:191 'dvec3v' ( temp 3-component vector of double) 0:191 'dvec3v' ( temp 3-component vector of double) 0:192 add second child into first child ( temp 4-component vector of double) 0:192 'dvec4v' ( temp 4-component vector of double) 0:192 modf ( global 4-component vector of double) 0:192 'dvec4v' ( temp 4-component vector of double) 0:192 'dvec4v' ( temp 4-component vector of double) 0:194 add second child into first child ( temp double) 0:194 'doublev' ( temp double) 0:194 min ( global double) 0:194 'doublev' ( temp double) 0:194 'doublev' ( temp double) 0:195 add second child into first child ( temp 2-component vector of double) 0:195 'dvec2v' ( temp 2-component vector of double) 0:195 min ( global 2-component vector of double) 0:195 'dvec2v' ( temp 2-component vector of double) 0:195 'doublev' ( temp double) 0:196 add second child into first child ( temp 3-component vector of double) 0:196 'dvec3v' ( temp 3-component vector of double) 0:196 min ( global 3-component vector of double) 0:196 'dvec3v' ( temp 3-component vector of double) 0:196 'doublev' ( temp double) 0:197 add second child into first child ( temp 4-component vector of double) 0:197 'dvec4v' ( temp 4-component vector of double) 0:197 min ( global 4-component vector of double) 0:197 'dvec4v' ( temp 4-component vector of double) 0:197 'doublev' ( temp double) 0:198 add second child into first child ( temp 2-component vector of double) 0:198 'dvec2v' ( temp 2-component vector of double) 0:198 min ( global 2-component vector of double) 0:198 'dvec2v' ( temp 2-component vector of double) 0:198 'dvec2v' ( temp 2-component vector of double) 0:199 add second child into first child ( temp 3-component vector of double) 0:199 'dvec3v' ( temp 3-component vector of double) 0:199 min ( global 3-component vector of double) 0:199 'dvec3v' ( temp 3-component vector of double) 0:199 'dvec3v' ( temp 3-component vector of double) 0:200 add second child into first child ( temp 4-component vector of double) 0:200 'dvec4v' ( temp 4-component vector of double) 0:200 min ( global 4-component vector of double) 0:200 'dvec4v' ( temp 4-component vector of double) 0:200 'dvec4v' ( temp 4-component vector of double) 0:202 add second child into first child ( temp double) 0:202 'doublev' ( temp double) 0:202 max ( global double) 0:202 'doublev' ( temp double) 0:202 'doublev' ( temp double) 0:203 add second child into first child ( temp 2-component vector of double) 0:203 'dvec2v' ( temp 2-component vector of double) 0:203 max ( global 2-component vector of double) 0:203 'dvec2v' ( temp 2-component vector of double) 0:203 'doublev' ( temp double) 0:204 add second child into first child ( temp 3-component vector of double) 0:204 'dvec3v' ( temp 3-component vector of double) 0:204 max ( global 3-component vector of double) 0:204 'dvec3v' ( temp 3-component vector of double) 0:204 'doublev' ( temp double) 0:205 add second child into first child ( temp 4-component vector of double) 0:205 'dvec4v' ( temp 4-component vector of double) 0:205 max ( global 4-component vector of double) 0:205 'dvec4v' ( temp 4-component vector of double) 0:205 'doublev' ( temp double) 0:206 add second child into first child ( temp 2-component vector of double) 0:206 'dvec2v' ( temp 2-component vector of double) 0:206 max ( global 2-component vector of double) 0:206 'dvec2v' ( temp 2-component vector of double) 0:206 'dvec2v' ( temp 2-component vector of double) 0:207 add second child into first child ( temp 3-component vector of double) 0:207 'dvec3v' ( temp 3-component vector of double) 0:207 max ( global 3-component vector of double) 0:207 'dvec3v' ( temp 3-component vector of double) 0:207 'dvec3v' ( temp 3-component vector of double) 0:208 add second child into first child ( temp 4-component vector of double) 0:208 'dvec4v' ( temp 4-component vector of double) 0:208 max ( global 4-component vector of double) 0:208 'dvec4v' ( temp 4-component vector of double) 0:208 'dvec4v' ( temp 4-component vector of double) 0:210 add second child into first child ( temp double) 0:210 'doublev' ( temp double) 0:210 clamp ( global double) 0:210 'doublev' ( temp double) 0:210 'doublev' ( temp double) 0:210 'doublev' ( temp double) 0:211 add second child into first child ( temp 2-component vector of double) 0:211 'dvec2v' ( temp 2-component vector of double) 0:211 clamp ( global 2-component vector of double) 0:211 'dvec2v' ( temp 2-component vector of double) 0:211 'doublev' ( temp double) 0:211 'doublev' ( temp double) 0:212 add second child into first child ( temp 3-component vector of double) 0:212 'dvec3v' ( temp 3-component vector of double) 0:212 clamp ( global 3-component vector of double) 0:212 'dvec3v' ( temp 3-component vector of double) 0:212 'doublev' ( temp double) 0:212 'doublev' ( temp double) 0:213 add second child into first child ( temp 4-component vector of double) 0:213 'dvec4v' ( temp 4-component vector of double) 0:213 clamp ( global 4-component vector of double) 0:213 'dvec4v' ( temp 4-component vector of double) 0:213 'doublev' ( temp double) 0:213 'doublev' ( temp double) 0:214 add second child into first child ( temp 2-component vector of double) 0:214 'dvec2v' ( temp 2-component vector of double) 0:214 clamp ( global 2-component vector of double) 0:214 'dvec2v' ( temp 2-component vector of double) 0:214 'dvec2v' ( temp 2-component vector of double) 0:214 'dvec2v' ( temp 2-component vector of double) 0:215 add second child into first child ( temp 3-component vector of double) 0:215 'dvec3v' ( temp 3-component vector of double) 0:215 clamp ( global 3-component vector of double) 0:215 'dvec3v' ( temp 3-component vector of double) 0:215 'dvec3v' ( temp 3-component vector of double) 0:215 'dvec3v' ( temp 3-component vector of double) 0:216 add second child into first child ( temp 4-component vector of double) 0:216 'dvec4v' ( temp 4-component vector of double) 0:216 clamp ( global 4-component vector of double) 0:216 'dvec4v' ( temp 4-component vector of double) 0:216 'dvec4v' ( temp 4-component vector of double) 0:216 'dvec4v' ( temp 4-component vector of double) 0:218 add second child into first child ( temp double) 0:218 'doublev' ( temp double) 0:218 mix ( global double) 0:218 'doublev' ( temp double) 0:218 'doublev' ( temp double) 0:218 'doublev' ( temp double) 0:219 add second child into first child ( temp 2-component vector of double) 0:219 'dvec2v' ( temp 2-component vector of double) 0:219 mix ( global 2-component vector of double) 0:219 'dvec2v' ( temp 2-component vector of double) 0:219 'dvec2v' ( temp 2-component vector of double) 0:219 'doublev' ( temp double) 0:220 add second child into first child ( temp 3-component vector of double) 0:220 'dvec3v' ( temp 3-component vector of double) 0:220 mix ( global 3-component vector of double) 0:220 'dvec3v' ( temp 3-component vector of double) 0:220 'dvec3v' ( temp 3-component vector of double) 0:220 'doublev' ( temp double) 0:221 add second child into first child ( temp 4-component vector of double) 0:221 'dvec4v' ( temp 4-component vector of double) 0:221 mix ( global 4-component vector of double) 0:221 'dvec4v' ( temp 4-component vector of double) 0:221 'dvec4v' ( temp 4-component vector of double) 0:221 'doublev' ( temp double) 0:222 add second child into first child ( temp 2-component vector of double) 0:222 'dvec2v' ( temp 2-component vector of double) 0:222 mix ( global 2-component vector of double) 0:222 'dvec2v' ( temp 2-component vector of double) 0:222 'dvec2v' ( temp 2-component vector of double) 0:222 'dvec2v' ( temp 2-component vector of double) 0:223 add second child into first child ( temp 3-component vector of double) 0:223 'dvec3v' ( temp 3-component vector of double) 0:223 mix ( global 3-component vector of double) 0:223 'dvec3v' ( temp 3-component vector of double) 0:223 'dvec3v' ( temp 3-component vector of double) 0:223 'dvec3v' ( temp 3-component vector of double) 0:224 add second child into first child ( temp 4-component vector of double) 0:224 'dvec4v' ( temp 4-component vector of double) 0:224 mix ( global 4-component vector of double) 0:224 'dvec4v' ( temp 4-component vector of double) 0:224 'dvec4v' ( temp 4-component vector of double) 0:224 'dvec4v' ( temp 4-component vector of double) 0:225 add second child into first child ( temp double) 0:225 'doublev' ( temp double) 0:225 mix ( global double) 0:225 'doublev' ( temp double) 0:225 'doublev' ( temp double) 0:225 'boolv' ( temp bool) 0:226 add second child into first child ( temp 2-component vector of double) 0:226 'dvec2v' ( temp 2-component vector of double) 0:226 mix ( global 2-component vector of double) 0:226 'dvec2v' ( temp 2-component vector of double) 0:226 'dvec2v' ( temp 2-component vector of double) 0:226 'bvec2v' ( temp 2-component vector of bool) 0:227 add second child into first child ( temp 3-component vector of double) 0:227 'dvec3v' ( temp 3-component vector of double) 0:227 mix ( global 3-component vector of double) 0:227 'dvec3v' ( temp 3-component vector of double) 0:227 'dvec3v' ( temp 3-component vector of double) 0:227 'bvec3v' ( temp 3-component vector of bool) 0:228 add second child into first child ( temp 4-component vector of double) 0:228 'dvec4v' ( temp 4-component vector of double) 0:228 mix ( global 4-component vector of double) 0:228 'dvec4v' ( temp 4-component vector of double) 0:228 'dvec4v' ( temp 4-component vector of double) 0:228 'bvec4v' ( temp 4-component vector of bool) 0:230 add second child into first child ( temp double) 0:230 'doublev' ( temp double) 0:230 step ( global double) 0:230 'doublev' ( temp double) 0:230 'doublev' ( temp double) 0:231 add second child into first child ( temp 2-component vector of double) 0:231 'dvec2v' ( temp 2-component vector of double) 0:231 step ( global 2-component vector of double) 0:231 'dvec2v' ( temp 2-component vector of double) 0:231 'dvec2v' ( temp 2-component vector of double) 0:232 add second child into first child ( temp 3-component vector of double) 0:232 'dvec3v' ( temp 3-component vector of double) 0:232 step ( global 3-component vector of double) 0:232 'dvec3v' ( temp 3-component vector of double) 0:232 'dvec3v' ( temp 3-component vector of double) 0:233 add second child into first child ( temp 4-component vector of double) 0:233 'dvec4v' ( temp 4-component vector of double) 0:233 step ( global 4-component vector of double) 0:233 'dvec4v' ( temp 4-component vector of double) 0:233 'dvec4v' ( temp 4-component vector of double) 0:234 add second child into first child ( temp 2-component vector of double) 0:234 'dvec2v' ( temp 2-component vector of double) 0:234 step ( global 2-component vector of double) 0:234 'doublev' ( temp double) 0:234 'dvec2v' ( temp 2-component vector of double) 0:235 add second child into first child ( temp 3-component vector of double) 0:235 'dvec3v' ( temp 3-component vector of double) 0:235 step ( global 3-component vector of double) 0:235 'doublev' ( temp double) 0:235 'dvec3v' ( temp 3-component vector of double) 0:236 add second child into first child ( temp 4-component vector of double) 0:236 'dvec4v' ( temp 4-component vector of double) 0:236 step ( global 4-component vector of double) 0:236 'doublev' ( temp double) 0:236 'dvec4v' ( temp 4-component vector of double) 0:238 add second child into first child ( temp double) 0:238 'doublev' ( temp double) 0:238 smoothstep ( global double) 0:238 'doublev' ( temp double) 0:238 'doublev' ( temp double) 0:238 'doublev' ( temp double) 0:239 add second child into first child ( temp 2-component vector of double) 0:239 'dvec2v' ( temp 2-component vector of double) 0:239 smoothstep ( global 2-component vector of double) 0:239 'dvec2v' ( temp 2-component vector of double) 0:239 'dvec2v' ( temp 2-component vector of double) 0:239 'dvec2v' ( temp 2-component vector of double) 0:240 add second child into first child ( temp 3-component vector of double) 0:240 'dvec3v' ( temp 3-component vector of double) 0:240 smoothstep ( global 3-component vector of double) 0:240 'dvec3v' ( temp 3-component vector of double) 0:240 'dvec3v' ( temp 3-component vector of double) 0:240 'dvec3v' ( temp 3-component vector of double) 0:241 add second child into first child ( temp 4-component vector of double) 0:241 'dvec4v' ( temp 4-component vector of double) 0:241 smoothstep ( global 4-component vector of double) 0:241 'dvec4v' ( temp 4-component vector of double) 0:241 'dvec4v' ( temp 4-component vector of double) 0:241 'dvec4v' ( temp 4-component vector of double) 0:242 add second child into first child ( temp 2-component vector of double) 0:242 'dvec2v' ( temp 2-component vector of double) 0:242 smoothstep ( global 2-component vector of double) 0:242 'doublev' ( temp double) 0:242 'doublev' ( temp double) 0:242 'dvec2v' ( temp 2-component vector of double) 0:243 add second child into first child ( temp 3-component vector of double) 0:243 'dvec3v' ( temp 3-component vector of double) 0:243 smoothstep ( global 3-component vector of double) 0:243 'doublev' ( temp double) 0:243 'doublev' ( temp double) 0:243 'dvec3v' ( temp 3-component vector of double) 0:244 add second child into first child ( temp 4-component vector of double) 0:244 'dvec4v' ( temp 4-component vector of double) 0:244 smoothstep ( global 4-component vector of double) 0:244 'doublev' ( temp double) 0:244 'doublev' ( temp double) 0:244 'dvec4v' ( temp 4-component vector of double) 0:246 move second child to first child ( temp bool) 0:246 'boolv' ( temp bool) 0:246 isnan ( global bool) 0:246 'doublev' ( temp double) 0:247 move second child to first child ( temp 2-component vector of bool) 0:247 'bvec2v' ( temp 2-component vector of bool) 0:247 isnan ( global 2-component vector of bool) 0:247 'dvec2v' ( temp 2-component vector of double) 0:248 move second child to first child ( temp 3-component vector of bool) 0:248 'bvec3v' ( temp 3-component vector of bool) 0:248 isnan ( global 3-component vector of bool) 0:248 'dvec3v' ( temp 3-component vector of double) 0:249 move second child to first child ( temp 4-component vector of bool) 0:249 'bvec4v' ( temp 4-component vector of bool) 0:249 isnan ( global 4-component vector of bool) 0:249 'dvec4v' ( temp 4-component vector of double) 0:251 move second child to first child ( temp bool) 0:251 'boolv' ( temp bool) 0:251 Test condition and select ( temp bool) 0:251 Condition 0:251 'boolv' ( temp bool) 0:251 true case 0:251 isinf ( global bool) 0:251 'doublev' ( temp double) 0:251 false case 0:251 Constant: 0:251 false (const bool) 0:252 move second child to first child ( temp 2-component vector of bool) 0:252 'bvec2v' ( temp 2-component vector of bool) 0:252 Test condition and select ( temp 2-component vector of bool) 0:252 Condition 0:252 'boolv' ( temp bool) 0:252 true case 0:252 isinf ( global 2-component vector of bool) 0:252 'dvec2v' ( temp 2-component vector of double) 0:252 false case 0:252 Constant: 0:252 false (const bool) 0:252 false (const bool) 0:253 move second child to first child ( temp 3-component vector of bool) 0:253 'bvec3v' ( temp 3-component vector of bool) 0:253 Test condition and select ( temp 3-component vector of bool) 0:253 Condition 0:253 'boolv' ( temp bool) 0:253 true case 0:253 isinf ( global 3-component vector of bool) 0:253 'dvec3v' ( temp 3-component vector of double) 0:253 false case 0:253 Constant: 0:253 false (const bool) 0:253 false (const bool) 0:253 false (const bool) 0:254 move second child to first child ( temp 4-component vector of bool) 0:254 'bvec4v' ( temp 4-component vector of bool) 0:254 Test condition and select ( temp 4-component vector of bool) 0:254 Condition 0:254 'boolv' ( temp bool) 0:254 true case 0:254 isinf ( global 4-component vector of bool) 0:254 'dvec4v' ( temp 4-component vector of double) 0:254 false case 0:254 Constant: 0:254 false (const bool) 0:254 false (const bool) 0:254 false (const bool) 0:254 false (const bool) 0:256 add second child into first child ( temp double) 0:256 'doublev' ( temp double) 0:256 length ( global double) 0:256 'doublev' ( temp double) 0:257 add second child into first child ( temp double) 0:257 'doublev' ( temp double) 0:257 length ( global double) 0:257 'dvec2v' ( temp 2-component vector of double) 0:258 add second child into first child ( temp double) 0:258 'doublev' ( temp double) 0:258 length ( global double) 0:258 'dvec3v' ( temp 3-component vector of double) 0:259 add second child into first child ( temp double) 0:259 'doublev' ( temp double) 0:259 length ( global double) 0:259 'dvec4v' ( temp 4-component vector of double) 0:261 add second child into first child ( temp double) 0:261 'doublev' ( temp double) 0:261 distance ( global double) 0:261 'doublev' ( temp double) 0:261 'doublev' ( temp double) 0:262 add second child into first child ( temp double) 0:262 'doublev' ( temp double) 0:262 distance ( global double) 0:262 'dvec2v' ( temp 2-component vector of double) 0:262 'dvec2v' ( temp 2-component vector of double) 0:263 add second child into first child ( temp double) 0:263 'doublev' ( temp double) 0:263 distance ( global double) 0:263 'dvec3v' ( temp 3-component vector of double) 0:263 'dvec3v' ( temp 3-component vector of double) 0:264 add second child into first child ( temp double) 0:264 'doublev' ( temp double) 0:264 distance ( global double) 0:264 'dvec4v' ( temp 4-component vector of double) 0:264 'dvec4v' ( temp 4-component vector of double) 0:266 add second child into first child ( temp double) 0:266 'doublev' ( temp double) 0:266 dot-product ( global double) 0:266 'doublev' ( temp double) 0:266 'doublev' ( temp double) 0:267 add second child into first child ( temp double) 0:267 'doublev' ( temp double) 0:267 dot-product ( global double) 0:267 'dvec2v' ( temp 2-component vector of double) 0:267 'dvec2v' ( temp 2-component vector of double) 0:268 add second child into first child ( temp double) 0:268 'doublev' ( temp double) 0:268 dot-product ( global double) 0:268 'dvec3v' ( temp 3-component vector of double) 0:268 'dvec3v' ( temp 3-component vector of double) 0:269 add second child into first child ( temp double) 0:269 'doublev' ( temp double) 0:269 dot-product ( global double) 0:269 'dvec4v' ( temp 4-component vector of double) 0:269 'dvec4v' ( temp 4-component vector of double) 0:271 add second child into first child ( temp 3-component vector of double) 0:271 'dvec3v' ( temp 3-component vector of double) 0:271 cross-product ( global 3-component vector of double) 0:271 'dvec3v' ( temp 3-component vector of double) 0:271 'dvec3v' ( temp 3-component vector of double) 0:273 add second child into first child ( temp double) 0:273 'doublev' ( temp double) 0:273 normalize ( global double) 0:273 'doublev' ( temp double) 0:274 add second child into first child ( temp 2-component vector of double) 0:274 'dvec2v' ( temp 2-component vector of double) 0:274 normalize ( global 2-component vector of double) 0:274 'dvec2v' ( temp 2-component vector of double) 0:275 add second child into first child ( temp 3-component vector of double) 0:275 'dvec3v' ( temp 3-component vector of double) 0:275 normalize ( global 3-component vector of double) 0:275 'dvec3v' ( temp 3-component vector of double) 0:276 add second child into first child ( temp 4-component vector of double) 0:276 'dvec4v' ( temp 4-component vector of double) 0:276 normalize ( global 4-component vector of double) 0:276 'dvec4v' ( temp 4-component vector of double) 0:278 add second child into first child ( temp double) 0:278 'doublev' ( temp double) 0:278 face-forward ( global double) 0:278 'doublev' ( temp double) 0:278 'doublev' ( temp double) 0:278 'doublev' ( temp double) 0:279 add second child into first child ( temp 2-component vector of double) 0:279 'dvec2v' ( temp 2-component vector of double) 0:279 face-forward ( global 2-component vector of double) 0:279 'dvec2v' ( temp 2-component vector of double) 0:279 'dvec2v' ( temp 2-component vector of double) 0:279 'dvec2v' ( temp 2-component vector of double) 0:280 add second child into first child ( temp 3-component vector of double) 0:280 'dvec3v' ( temp 3-component vector of double) 0:280 face-forward ( global 3-component vector of double) 0:280 'dvec3v' ( temp 3-component vector of double) 0:280 'dvec3v' ( temp 3-component vector of double) 0:280 'dvec3v' ( temp 3-component vector of double) 0:281 add second child into first child ( temp 4-component vector of double) 0:281 'dvec4v' ( temp 4-component vector of double) 0:281 face-forward ( global 4-component vector of double) 0:281 'dvec4v' ( temp 4-component vector of double) 0:281 'dvec4v' ( temp 4-component vector of double) 0:281 'dvec4v' ( temp 4-component vector of double) 0:283 add second child into first child ( temp double) 0:283 'doublev' ( temp double) 0:283 reflect ( global double) 0:283 'doublev' ( temp double) 0:283 'doublev' ( temp double) 0:284 add second child into first child ( temp 2-component vector of double) 0:284 'dvec2v' ( temp 2-component vector of double) 0:284 reflect ( global 2-component vector of double) 0:284 'dvec2v' ( temp 2-component vector of double) 0:284 'dvec2v' ( temp 2-component vector of double) 0:285 add second child into first child ( temp 3-component vector of double) 0:285 'dvec3v' ( temp 3-component vector of double) 0:285 reflect ( global 3-component vector of double) 0:285 'dvec3v' ( temp 3-component vector of double) 0:285 'dvec3v' ( temp 3-component vector of double) 0:286 add second child into first child ( temp 4-component vector of double) 0:286 'dvec4v' ( temp 4-component vector of double) 0:286 reflect ( global 4-component vector of double) 0:286 'dvec4v' ( temp 4-component vector of double) 0:286 'dvec4v' ( temp 4-component vector of double) 0:288 add second child into first child ( temp double) 0:288 'doublev' ( temp double) 0:288 refract ( global double) 0:288 'doublev' ( temp double) 0:288 'doublev' ( temp double) 0:288 'doublev' ( temp double) 0:289 add second child into first child ( temp 2-component vector of double) 0:289 'dvec2v' ( temp 2-component vector of double) 0:289 refract ( global 2-component vector of double) 0:289 'dvec2v' ( temp 2-component vector of double) 0:289 'dvec2v' ( temp 2-component vector of double) 0:289 'doublev' ( temp double) 0:290 add second child into first child ( temp 3-component vector of double) 0:290 'dvec3v' ( temp 3-component vector of double) 0:290 refract ( global 3-component vector of double) 0:290 'dvec3v' ( temp 3-component vector of double) 0:290 'dvec3v' ( temp 3-component vector of double) 0:290 'doublev' ( temp double) 0:291 add second child into first child ( temp 4-component vector of double) 0:291 'dvec4v' ( temp 4-component vector of double) 0:291 refract ( global 4-component vector of double) 0:291 'dvec4v' ( temp 4-component vector of double) 0:291 'dvec4v' ( temp 4-component vector of double) 0:291 'doublev' ( temp double) 0:293 Sequence 0:293 move second child to first child ( temp 2X2 matrix of double) 0:293 'dmat2v' ( temp 2X2 matrix of double) 0:293 outer product ( global 2X2 matrix of double) 0:293 'dvec2v' ( temp 2-component vector of double) 0:293 'dvec2v' ( temp 2-component vector of double) 0:294 Sequence 0:294 move second child to first child ( temp 3X3 matrix of double) 0:294 'dmat3v' ( temp 3X3 matrix of double) 0:294 outer product ( global 3X3 matrix of double) 0:294 'dvec3v' ( temp 3-component vector of double) 0:294 'dvec3v' ( temp 3-component vector of double) 0:295 Sequence 0:295 move second child to first child ( temp 4X4 matrix of double) 0:295 'dmat4v' ( temp 4X4 matrix of double) 0:295 outer product ( global 4X4 matrix of double) 0:295 'dvec4v' ( temp 4-component vector of double) 0:295 'dvec4v' ( temp 4-component vector of double) 0:296 Sequence 0:296 move second child to first child ( temp 2X3 matrix of double) 0:296 'dmat2x3v' ( temp 2X3 matrix of double) 0:296 outer product ( global 2X3 matrix of double) 0:296 'dvec3v' ( temp 3-component vector of double) 0:296 'dvec2v' ( temp 2-component vector of double) 0:297 Sequence 0:297 move second child to first child ( temp 3X2 matrix of double) 0:297 'dmat3x2v' ( temp 3X2 matrix of double) 0:297 outer product ( global 3X2 matrix of double) 0:297 'dvec2v' ( temp 2-component vector of double) 0:297 'dvec3v' ( temp 3-component vector of double) 0:298 Sequence 0:298 move second child to first child ( temp 2X4 matrix of double) 0:298 'dmat2x4v' ( temp 2X4 matrix of double) 0:298 outer product ( global 2X4 matrix of double) 0:298 'dvec4v' ( temp 4-component vector of double) 0:298 'dvec2v' ( temp 2-component vector of double) 0:299 Sequence 0:299 move second child to first child ( temp 4X2 matrix of double) 0:299 'dmat4x2v' ( temp 4X2 matrix of double) 0:299 outer product ( global 4X2 matrix of double) 0:299 'dvec2v' ( temp 2-component vector of double) 0:299 'dvec4v' ( temp 4-component vector of double) 0:300 Sequence 0:300 move second child to first child ( temp 3X4 matrix of double) 0:300 'dmat3x4v' ( temp 3X4 matrix of double) 0:300 outer product ( global 3X4 matrix of double) 0:300 'dvec4v' ( temp 4-component vector of double) 0:300 'dvec3v' ( temp 3-component vector of double) 0:301 Sequence 0:301 move second child to first child ( temp 4X3 matrix of double) 0:301 'dmat4x3v' ( temp 4X3 matrix of double) 0:301 outer product ( global 4X3 matrix of double) 0:301 'dvec3v' ( temp 3-component vector of double) 0:301 'dvec4v' ( temp 4-component vector of double) 0:303 matrix mult second child into first child ( temp 2X2 matrix of double) 0:303 'dmat2v' ( temp 2X2 matrix of double) 0:303 component-wise multiply ( global 2X2 matrix of double) 0:303 'dmat2v' ( temp 2X2 matrix of double) 0:303 'dmat2v' ( temp 2X2 matrix of double) 0:304 matrix mult second child into first child ( temp 3X3 matrix of double) 0:304 'dmat3v' ( temp 3X3 matrix of double) 0:304 component-wise multiply ( global 3X3 matrix of double) 0:304 'dmat3v' ( temp 3X3 matrix of double) 0:304 'dmat3v' ( temp 3X3 matrix of double) 0:305 matrix mult second child into first child ( temp 4X4 matrix of double) 0:305 'dmat4v' ( temp 4X4 matrix of double) 0:305 component-wise multiply ( global 4X4 matrix of double) 0:305 'dmat4v' ( temp 4X4 matrix of double) 0:305 'dmat4v' ( temp 4X4 matrix of double) 0:306 move second child to first child ( temp 2X3 matrix of double) 0:306 'dmat2x3v' ( temp 2X3 matrix of double) 0:306 component-wise multiply ( global 2X3 matrix of double) 0:306 'dmat2x3v' ( temp 2X3 matrix of double) 0:306 'dmat2x3v' ( temp 2X3 matrix of double) 0:307 move second child to first child ( temp 2X4 matrix of double) 0:307 'dmat2x4v' ( temp 2X4 matrix of double) 0:307 component-wise multiply ( global 2X4 matrix of double) 0:307 'dmat2x4v' ( temp 2X4 matrix of double) 0:307 'dmat2x4v' ( temp 2X4 matrix of double) 0:308 move second child to first child ( temp 3X2 matrix of double) 0:308 'dmat3x2v' ( temp 3X2 matrix of double) 0:308 component-wise multiply ( global 3X2 matrix of double) 0:308 'dmat3x2v' ( temp 3X2 matrix of double) 0:308 'dmat3x2v' ( temp 3X2 matrix of double) 0:309 move second child to first child ( temp 3X4 matrix of double) 0:309 'dmat3x4v' ( temp 3X4 matrix of double) 0:309 component-wise multiply ( global 3X4 matrix of double) 0:309 'dmat3x4v' ( temp 3X4 matrix of double) 0:309 'dmat3x4v' ( temp 3X4 matrix of double) 0:310 move second child to first child ( temp 4X2 matrix of double) 0:310 'dmat4x2v' ( temp 4X2 matrix of double) 0:310 component-wise multiply ( global 4X2 matrix of double) 0:310 'dmat4x2v' ( temp 4X2 matrix of double) 0:310 'dmat4x2v' ( temp 4X2 matrix of double) 0:311 move second child to first child ( temp 4X3 matrix of double) 0:311 'dmat4x3v' ( temp 4X3 matrix of double) 0:311 component-wise multiply ( global 4X3 matrix of double) 0:311 'dmat4x3v' ( temp 4X3 matrix of double) 0:311 'dmat4x3v' ( temp 4X3 matrix of double) 0:313 matrix mult second child into first child ( temp 2X2 matrix of double) 0:313 'dmat2v' ( temp 2X2 matrix of double) 0:313 transpose ( global 2X2 matrix of double) 0:313 'dmat2v' ( temp 2X2 matrix of double) 0:314 matrix mult second child into first child ( temp 3X3 matrix of double) 0:314 'dmat3v' ( temp 3X3 matrix of double) 0:314 transpose ( global 3X3 matrix of double) 0:314 'dmat3v' ( temp 3X3 matrix of double) 0:315 matrix mult second child into first child ( temp 4X4 matrix of double) 0:315 'dmat4v' ( temp 4X4 matrix of double) 0:315 transpose ( global 4X4 matrix of double) 0:315 'dmat4v' ( temp 4X4 matrix of double) 0:316 move second child to first child ( temp 2X3 matrix of double) 0:316 'dmat2x3v' ( temp 2X3 matrix of double) 0:316 transpose ( global 2X3 matrix of double) 0:316 'dmat3x2v' ( temp 3X2 matrix of double) 0:317 move second child to first child ( temp 3X2 matrix of double) 0:317 'dmat3x2v' ( temp 3X2 matrix of double) 0:317 transpose ( global 3X2 matrix of double) 0:317 'dmat2x3v' ( temp 2X3 matrix of double) 0:318 move second child to first child ( temp 2X4 matrix of double) 0:318 'dmat2x4v' ( temp 2X4 matrix of double) 0:318 transpose ( global 2X4 matrix of double) 0:318 'dmat4x2v' ( temp 4X2 matrix of double) 0:319 move second child to first child ( temp 4X2 matrix of double) 0:319 'dmat4x2v' ( temp 4X2 matrix of double) 0:319 transpose ( global 4X2 matrix of double) 0:319 'dmat2x4v' ( temp 2X4 matrix of double) 0:320 move second child to first child ( temp 3X4 matrix of double) 0:320 'dmat3x4v' ( temp 3X4 matrix of double) 0:320 transpose ( global 3X4 matrix of double) 0:320 'dmat4x3v' ( temp 4X3 matrix of double) 0:321 move second child to first child ( temp 4X3 matrix of double) 0:321 'dmat4x3v' ( temp 4X3 matrix of double) 0:321 transpose ( global 4X3 matrix of double) 0:321 'dmat3x4v' ( temp 3X4 matrix of double) 0:323 add second child into first child ( temp double) 0:323 'doublev' ( temp double) 0:323 determinant ( global double) 0:323 'dmat2v' ( temp 2X2 matrix of double) 0:324 add second child into first child ( temp double) 0:324 'doublev' ( temp double) 0:324 determinant ( global double) 0:324 'dmat3v' ( temp 3X3 matrix of double) 0:325 add second child into first child ( temp double) 0:325 'doublev' ( temp double) 0:325 determinant ( global double) 0:325 'dmat4v' ( temp 4X4 matrix of double) 0:327 matrix mult second child into first child ( temp 2X2 matrix of double) 0:327 'dmat2v' ( temp 2X2 matrix of double) 0:327 inverse ( global 2X2 matrix of double) 0:327 'dmat2v' ( temp 2X2 matrix of double) 0:328 matrix mult second child into first child ( temp 3X3 matrix of double) 0:328 'dmat3v' ( temp 3X3 matrix of double) 0:328 inverse ( global 3X3 matrix of double) 0:328 'dmat3v' ( temp 3X3 matrix of double) 0:329 matrix mult second child into first child ( temp 4X4 matrix of double) 0:329 'dmat4v' ( temp 4X4 matrix of double) 0:329 inverse ( global 4X4 matrix of double) 0:329 'dmat4v' ( temp 4X4 matrix of double) 0:? Linker Objects 0:? 'bn' ( in 3-element array of block{ in int a}) 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) 0:? 'color' ( in 3-element array of 4-component vector of float) 0:? 'color2' ( in 3-element array of 4-component vector of float) 0:? 'colorS' ( in 3-element array of 4-component vector of float) 0:? 'colorBad' ( in 4-element array of 4-component vector of float) 0:? 'colorbad2' ( in 2-element array of 4-component vector of float) 0:? 'cva' (layout( location=4) in 3-element array of 4-component vector of float) 0:? 'cvb' (layout( location=5) in 3-element array of 4-component vector of float) 0:? 'cmc' (layout( location=2) in 3-element array of 3X3 matrix of float) 0:? 'patchIn' ( patch in 3-element array of 4-component vector of float) 0:? 'patchOut' (layout( stream=0) patch out 4-component vector of float) 0:? 'scalar' ( in float) 0:? 'inbls' ( in block{ in int a}) 0:? 'inbla' ( in 17-element array of block{ in int a}) 0:? 'indexedOut' (layout( location=7 stream=0) out 4-component vector of float) 0:? 'samp1D' ( uniform sampler1D) 0:? 'samp2Ds' ( uniform sampler2DShadow) Linked geometry stage: ERROR: Linking geometry stage: At least one shader must specify an output layout primitive Shader version: 400 Requested GL_ARB_separate_shader_objects invocations = 4 max_vertices = 127 input primitive = triangles output primitive = none ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:5 Sequence 0:5 EmitStreamVertex ( global void) 0:5 Constant: 0:5 1 (const int) 0:6 EndStreamPrimitive ( global void) 0:6 Constant: 0:6 0 (const int) 0:7 EmitVertex ( global void) 0:8 EndPrimitive ( global void) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'id' ( temp int) 0:9 'gl_InvocationID' ( in int InvocationID) 0:? Linker Objects 0:? 'bn' ( in 3-element array of block{ in int a}) 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) 0:? 'color' ( in 3-element array of 4-component vector of float) 0:? 'color2' ( in 3-element array of 4-component vector of float) 0:? 'colorS' ( in 3-element array of 4-component vector of float) 0:? 'colorBad' ( in 4-element array of 4-component vector of float) 0:? 'colorbad2' ( in 2-element array of 4-component vector of float) 0:? 'cva' (layout( location=4) in 3-element array of 4-component vector of float) 0:? 'cvb' (layout( location=5) in 3-element array of 4-component vector of float) 0:? 'cmc' (layout( location=2) in 3-element array of 3X3 matrix of float) 0:? 'patchIn' ( patch in 3-element array of 4-component vector of float) 0:? 'patchOut' (layout( stream=0) patch out 4-component vector of float) 0:? 'scalar' ( in float) 0:? 'inbls' ( in block{ in int a}) 0:? 'inbla' ( in 17-element array of block{ in int a}) 0:? 'indexedOut' (layout( location=7 stream=0) out 4-component vector of float) 0:? 'samp1D' ( uniform sampler1D) 0:? 'samp2Ds' ( uniform sampler2DShadow) glslang-16.0.0/Test/baseResults/400.tesc.out000066400000000000000000000523361506534232700204510ustar00rootroot00000000000000400.tesc ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:46: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:51: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:54: '' : tessellation control barrier() cannot be placed within flow control ERROR: 0:61: '' : tessellation control barrier() cannot be placed after a return from main() ERROR: 0:64: 'vertices' : can only apply to 'out' ERROR: 0:65: 'vertices' : cannot change previously set layout value ERROR: 0:69: '[' : array index out of range '4' ERROR: 0:71: '' : tessellation control barrier() must be in main() ERROR: 0:74: 'in' : type must be an array: ina ERROR: 0:76: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:83: 'location' : overlapping use of location 4 ERROR: 0:87: 'location' : overlapping use of location 4 ERROR: 0:104: '' : precise qualifier must appear first ERROR: 0:105: '' : precise qualifier must appear first ERROR: 0:105: '' : precise qualifier must appear first ERROR: 0:109: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:110: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview ERROR: 23 compilation errors. No code generated. Shader version: 400 Requested GL_ARB_separate_shader_objects Requested GL_EXT_device_group Requested GL_EXT_multiview vertices = 4 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 Barrier ( global void) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'a' ( temp int) 0:17 Constant: 0:17 5392 (const int) 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'p' ( temp 4-component vector of float) 0:23 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:23 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'ps' ( temp float) 0:24 gl_PointSize: direct index for structure ( in float PointSize) 0:24 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'cd' ( temp float) 0:25 direct index ( temp float ClipDistance) 0:25 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:25 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:25 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 2 (const int) 0:27 Sequence 0:27 move second child to first child ( temp int) 0:27 'pvi' ( temp int) 0:27 'gl_PatchVerticesIn' ( in int PatchVertices) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'pid' ( temp int) 0:28 'gl_PrimitiveID' ( in int PrimitiveID) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'iid' ( temp int) 0:29 'gl_InvocationID' ( in int InvocationID) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:31 indirect index ( temp 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}) 0:31 '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}) 0:31 'gl_InvocationID' ( in int InvocationID) 0:31 Constant: 0:31 0 (const int) 0:31 'p' ( temp 4-component vector of float) 0:32 move second child to first child ( temp float) 0:32 gl_PointSize: direct index for structure ( out float PointSize) 0:32 indirect index ( temp 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}) 0:32 '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}) 0:32 'gl_InvocationID' ( in int InvocationID) 0:32 Constant: 0:32 1 (const int) 0:32 'ps' ( temp float) 0:33 move second child to first child ( temp float) 0:33 direct index ( temp float ClipDistance) 0:33 gl_ClipDistance: direct index for structure ( out unsized 2-element array of float ClipDistance) 0:33 indirect index ( temp 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}) 0:33 '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}) 0:33 'gl_InvocationID' ( in int InvocationID) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 'cd' ( temp float) 0:35 move second child to first child ( temp float) 0:35 direct index ( patch temp float TessLevelOuter) 0:35 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 3.200000 0:36 move second child to first child ( temp float) 0:36 direct index ( patch temp float TessLevelInner) 0:36 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1.300000 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Greater Than ( temp bool) 0:38 'a' ( temp int) 0:38 Constant: 0:38 10 (const int) 0:38 true case 0:39 Barrier ( global void) 0:38 false case 0:41 Barrier ( global void) 0:43 Barrier ( global void) 0:47 Loop with condition not tested first 0:47 Loop Condition 0:47 Compare Greater Than ( temp bool) 0:47 'a' ( temp int) 0:47 Constant: 0:47 10 (const int) 0:47 Loop Body 0:46 Sequence 0:46 Barrier ( global void) 0:49 switch 0:49 condition 0:49 'a' ( temp int) 0:49 body 0:49 Sequence 0:50 default: 0:? Sequence 0:51 Barrier ( global void) 0:52 Branch: Break 0:54 Test condition and select ( temp int) 0:54 Condition 0:54 Compare Less Than ( temp bool) 0:54 'a' ( temp int) 0:54 Constant: 0:54 12 (const int) 0:54 true case 0:54 'a' ( temp int) 0:54 false case 0:54 Comma ( temp int) 0:54 Barrier ( global void) 0:54 'a' ( temp int) 0:56 Sequence 0:56 Barrier ( global void) 0:59 Branch: Return 0:61 Barrier ( global void) 0:67 Function Definition: foo( ( global void) 0:67 Function Parameters: 0:69 Sequence 0:69 gl_PointSize: direct index for structure ( out float PointSize) 0:69 direct index ( temp 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}) 0:69 '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}) 0:69 Constant: 0:69 4 (const int) 0:69 Constant: 0:69 1 (const int) 0:71 Barrier ( global void) 0:91 Function Definition: foop( ( global void) 0:91 Function Parameters: 0:? Sequence 0:95 multiply second child into first child ( temp 3-component vector of float) 0:95 'pv3' ( noContraction temp 3-component vector of float) 0:95 'pv3' ( noContraction temp 3-component vector of float) 0:96 move second child to first child ( temp 3-component vector of float) 0:96 'pv3' ( noContraction temp 3-component vector of float) 0:96 fma ( global 3-component vector of float) 0:96 'pv3' ( noContraction temp 3-component vector of float) 0:96 'pv3' ( noContraction temp 3-component vector of float) 0:96 'pv3' ( noContraction temp 3-component vector of float) 0:97 move second child to first child ( temp double) 0:97 'd' ( noContraction temp double) 0:97 fma ( global double) 0:97 'd' ( noContraction temp double) 0:97 'd' ( noContraction temp double) 0:97 'd' ( noContraction temp double) 0:107 Function Definition: devi( ( global void) 0:107 Function Parameters: 0:109 Sequence 0:109 'gl_DeviceIndex' ( in int DeviceIndex) 0:110 'gl_ViewIndex' ( in int ViewIndex) 0:121 Function Definition: devie( ( global void) 0:121 Function Parameters: 0:123 Sequence 0:123 'gl_DeviceIndex' ( in int DeviceIndex) 0:124 'gl_ViewIndex' ( in int ViewIndex) 0:? Linker Objects 0:? '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}) 0:? 'outa' ( global 4-element array of int) 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'patchOut' ( patch out 4-component vector of float) 0:? 'ina' ( in 2-component vector of float) 0:? 'inb' ( in 32-element array of 2-component vector of float) 0:? 'inc' ( in 32-element array of 2-component vector of float) 0:? 'ind' ( in 32-element array of 2-component vector of float) 0:? 'ivla' (layout( location=3) in 32-element array of 4-component vector of float) 0:? 'ivlb' (layout( location=4) in 32-element array of 4-component vector of float) 0:? 'ivlc' (layout( location=4) in 32-element array of 4-component vector of float) 0:? 'ovla' (layout( location=3) out 4-element array of 4-component vector of float) 0:? 'ovlb' (layout( location=4) out 4-element array of 4-component vector of float) 0:? 'ovlc' (layout( location=4) out 4-element array of 4-component vector of float) 0:? 'pv3' ( noContraction temp 3-component vector of float) 0:? 'pinbi' ( patch out block{ out int a}) 0:? 'badOrder' ( invariant noContraction out 4-element array of 4-component vector of float) Linked tessellation control stage: Shader version: 400 Requested GL_ARB_separate_shader_objects Requested GL_EXT_device_group Requested GL_EXT_multiview vertices = 4 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 Barrier ( global void) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'a' ( temp int) 0:17 Constant: 0:17 5392 (const int) 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'p' ( temp 4-component vector of float) 0:23 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:23 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'ps' ( temp float) 0:24 gl_PointSize: direct index for structure ( in float PointSize) 0:24 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:24 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'cd' ( temp float) 0:25 direct index ( temp float ClipDistance) 0:25 gl_ClipDistance: direct index for structure ( in 3-element array of float ClipDistance) 0:25 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:25 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 2 (const int) 0:27 Sequence 0:27 move second child to first child ( temp int) 0:27 'pvi' ( temp int) 0:27 'gl_PatchVerticesIn' ( in int PatchVertices) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'pid' ( temp int) 0:28 'gl_PrimitiveID' ( in int PrimitiveID) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'iid' ( temp int) 0:29 'gl_InvocationID' ( in int InvocationID) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:31 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:31 'gl_out' ( out 4-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:31 'gl_InvocationID' ( in int InvocationID) 0:31 Constant: 0:31 0 (const int) 0:31 'p' ( temp 4-component vector of float) 0:32 move second child to first child ( temp float) 0:32 gl_PointSize: direct index for structure ( out float PointSize) 0:32 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:32 'gl_out' ( out 4-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:32 'gl_InvocationID' ( in int InvocationID) 0:32 Constant: 0:32 1 (const int) 0:32 'ps' ( temp float) 0:33 move second child to first child ( temp float) 0:33 direct index ( temp float ClipDistance) 0:33 gl_ClipDistance: direct index for structure ( out 2-element array of float ClipDistance) 0:33 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_out' ( out 4-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_InvocationID' ( in int InvocationID) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 'cd' ( temp float) 0:35 move second child to first child ( temp float) 0:35 direct index ( patch temp float TessLevelOuter) 0:35 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 3.200000 0:36 move second child to first child ( temp float) 0:36 direct index ( patch temp float TessLevelInner) 0:36 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1.300000 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Greater Than ( temp bool) 0:38 'a' ( temp int) 0:38 Constant: 0:38 10 (const int) 0:38 true case 0:39 Barrier ( global void) 0:38 false case 0:41 Barrier ( global void) 0:43 Barrier ( global void) 0:47 Loop with condition not tested first 0:47 Loop Condition 0:47 Compare Greater Than ( temp bool) 0:47 'a' ( temp int) 0:47 Constant: 0:47 10 (const int) 0:47 Loop Body 0:46 Sequence 0:46 Barrier ( global void) 0:49 switch 0:49 condition 0:49 'a' ( temp int) 0:49 body 0:49 Sequence 0:50 default: 0:? Sequence 0:51 Barrier ( global void) 0:52 Branch: Break 0:54 Test condition and select ( temp int) 0:54 Condition 0:54 Compare Less Than ( temp bool) 0:54 'a' ( temp int) 0:54 Constant: 0:54 12 (const int) 0:54 true case 0:54 'a' ( temp int) 0:54 false case 0:54 Comma ( temp int) 0:54 Barrier ( global void) 0:54 'a' ( temp int) 0:56 Sequence 0:56 Barrier ( global void) 0:59 Branch: Return 0:61 Barrier ( global void) 0:? Linker Objects 0:? 'gl_out' ( out 4-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:? 'outa' ( global 4-element array of int) 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'patchOut' ( patch out 4-component vector of float) 0:? 'ina' ( in 2-component vector of float) 0:? 'inb' ( in 32-element array of 2-component vector of float) 0:? 'inc' ( in 32-element array of 2-component vector of float) 0:? 'ind' ( in 32-element array of 2-component vector of float) 0:? 'ivla' (layout( location=3) in 32-element array of 4-component vector of float) 0:? 'ivlb' (layout( location=4) in 32-element array of 4-component vector of float) 0:? 'ivlc' (layout( location=4) in 32-element array of 4-component vector of float) 0:? 'ovla' (layout( location=3) out 4-element array of 4-component vector of float) 0:? 'ovlb' (layout( location=4) out 4-element array of 4-component vector of float) 0:? 'ovlc' (layout( location=4) out 4-element array of 4-component vector of float) 0:? 'pv3' ( noContraction temp 3-component vector of float) 0:? 'pinbi' ( patch out block{ out int a}) 0:? 'badOrder' ( invariant noContraction out 4-element array of 4-component vector of float) glslang-16.0.0/Test/baseResults/400.tese.out000066400000000000000000000413441506534232700204500ustar00rootroot00000000000000400.tese ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:5: 'triangles' : cannot change previously set input primitive ERROR: 0:6: 'isolines' : cannot change previously set input primitive ERROR: 0:8: 'ccw' : cannot change previously set vertex order ERROR: 0:12: 'equal_spacing' : cannot change previously set vertex spacing ERROR: 0:13: 'fractional_even_spacing' : cannot change previously set vertex spacing ERROR: 0:18: 'patch' : can only use on input in tessellation-evaluation shader ERROR: 0:22: 'barrier' : no matching overloaded function found ERROR: 0:47: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 0:64: 'quads' : cannot apply to 'out' ERROR: 0:64: 'cw' : can only apply to 'in' ERROR: 0:65: 'triangles' : cannot apply to 'out' ERROR: 0:66: 'isolines' : cannot apply to 'out' ERROR: 0:67: 'cw' : can only apply to 'in' ERROR: 0:68: 'fractional_odd_spacing' : can only apply to 'in' ERROR: 0:69: 'equal_spacing' : can only apply to 'in' ERROR: 0:70: 'fractional_even_spacing' : can only apply to 'in' ERROR: 0:71: 'point_mode' : can only apply to 'in' ERROR: 0:73: 'in' : type must be an array: ina ERROR: 0:75: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:78: 'in' : type must be an array: bla ERROR: 0:86: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized ERROR: 0:96: 'location' : overlapping use of location 24 ERROR: 0:99: 'location' : overlapping use of location 24 ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved ERROR: 0:109: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:110: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview ERROR: 31 compilation errors. No code generated. Shader version: 400 Requested GL_ARB_separate_shader_objects Requested GL_EXT_device_group Requested GL_EXT_multiview input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Constant: 0:22 0.000000 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'a' ( temp int) 0:24 Constant: 0:24 1512 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'p' ( temp 4-component vector of float) 0:32 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:32 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:32 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'ps' ( temp float) 0:33 gl_PointSize: direct index for structure ( in float PointSize) 0:33 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'cd' ( temp float) 0:34 direct index ( temp float ClipDistance) 0:34 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:34 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 2 (const int) 0:36 Sequence 0:36 move second child to first child ( temp int) 0:36 'pvi' ( temp int) 0:36 'gl_PatchVerticesIn' ( in int PatchVertices) 0:37 Sequence 0:37 move second child to first child ( temp int) 0:37 'pid' ( temp int) 0:37 'gl_PrimitiveID' ( in int PrimitiveID) 0:38 Sequence 0:38 move second child to first child ( temp 3-component vector of float) 0:38 'tc' ( temp 3-component vector of float) 0:38 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:39 Sequence 0:39 move second child to first child ( temp float) 0:39 'tlo' ( temp float) 0:39 direct index ( patch temp float TessLevelOuter) 0:39 'gl_TessLevelOuter' ( patch in 4-element array of float TessLevelOuter) 0:39 Constant: 0:39 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'tli' ( temp float) 0:40 direct index ( patch temp float TessLevelInner) 0:40 'gl_TessLevelInner' ( patch in 2-element array of float TessLevelInner) 0:40 Constant: 0:40 1 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:42 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:42 Constant: 0:42 0 (const uint) 0:42 'p' ( temp 4-component vector of float) 0:43 move second child to first child ( temp float) 0:43 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:43 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:43 Constant: 0:43 1 (const uint) 0:43 'ps' ( temp float) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float ClipDistance) 0:44 gl_ClipDistance: direct index for structure ( out unsized 3-element array of float ClipDistance) 0:44 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:44 Constant: 0:44 2 (const uint) 0:44 Constant: 0:44 2 (const int) 0:44 'cd' ( temp float) 0:107 Function Definition: devi( ( global void) 0:107 Function Parameters: 0:109 Sequence 0:109 'gl_DeviceIndex' ( in int DeviceIndex) 0:110 'gl_ViewIndex' ( in int ViewIndex) 0:121 Function Definition: devie( ( global void) 0:121 Function Parameters: 0:123 Sequence 0:123 'gl_DeviceIndex' ( in int DeviceIndex) 0:124 'gl_ViewIndex' ( in int ViewIndex) 0:? Linker Objects 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'patchOut' ( patch 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 3-element array of float ClipDistance gl_ClipDistance}) 0:? 'badp1' ( smooth patch in 4-component vector of float) 0:? 'badp2' ( flat patch in 4-component vector of float) 0:? 'badp3' ( noperspective patch in 4-component vector of float) 0:? 'badp4' ( patch sample in 3-component vector of float) 0:? 'gl_in' ( in 32-element array of block{ in 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'ina' ( in 2-component vector of float) 0:? 'inb' ( in 32-element array of 2-component vector of float) 0:? 'inc' ( in 32-element array of 2-component vector of float) 0:? 'ind' ( in 32-element array of 2-component vector of float) 0:? 'bla' ( in block{ in int f}) 0:? 'blb' ( in 32-element array of block{ in int f}) 0:? 'blc' ( in 32-element array of block{ in int f}) 0:? 'bld' ( in 32-element array of block{ in int f}) 0:? 'ivla' (layout( location=23) in 32-element array of 4-component vector of float) 0:? 'ivlb' (layout( location=24) in 32-element array of 4-component vector of float) 0:? 'ivlc' (layout( location=24) in 32-element array of 4-component vector of float) 0:? 'ovla' (layout( location=23) out 2-element array of 4-component vector of float) 0:? 'ovlb' (layout( location=24) out 2-element array of 4-component vector of float) 0:? 'pinbi' ( patch in block{ in int a}) Linked tessellation evaluation stage: Shader version: 400 Requested GL_ARB_separate_shader_objects Requested GL_EXT_device_group Requested GL_EXT_multiview input primitive = quads vertex spacing = fractional_odd_spacing triangle order = cw using point mode ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Constant: 0:22 0.000000 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'a' ( temp int) 0:24 Constant: 0:24 1512 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'p' ( temp 4-component vector of float) 0:32 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:32 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:32 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'ps' ( temp float) 0:33 gl_PointSize: direct index for structure ( in float PointSize) 0:33 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'cd' ( temp float) 0:34 direct index ( temp float ClipDistance) 0:34 gl_ClipDistance: direct index for structure ( in 3-element array of float ClipDistance) 0:34 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:34 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 2 (const int) 0:36 Sequence 0:36 move second child to first child ( temp int) 0:36 'pvi' ( temp int) 0:36 'gl_PatchVerticesIn' ( in int PatchVertices) 0:37 Sequence 0:37 move second child to first child ( temp int) 0:37 'pid' ( temp int) 0:37 'gl_PrimitiveID' ( in int PrimitiveID) 0:38 Sequence 0:38 move second child to first child ( temp 3-component vector of float) 0:38 'tc' ( temp 3-component vector of float) 0:38 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:39 Sequence 0:39 move second child to first child ( temp float) 0:39 'tlo' ( temp float) 0:39 direct index ( patch temp float TessLevelOuter) 0:39 'gl_TessLevelOuter' ( patch in 4-element array of float TessLevelOuter) 0:39 Constant: 0:39 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'tli' ( temp float) 0:40 direct index ( patch temp float TessLevelInner) 0:40 'gl_TessLevelInner' ( patch in 2-element array of float TessLevelInner) 0:40 Constant: 0:40 1 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:42 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 3-element array of float ClipDistance gl_ClipDistance}) 0:42 Constant: 0:42 0 (const uint) 0:42 'p' ( temp 4-component vector of float) 0:43 move second child to first child ( temp float) 0:43 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:43 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 3-element array of float ClipDistance gl_ClipDistance}) 0:43 Constant: 0:43 1 (const uint) 0:43 'ps' ( temp float) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float ClipDistance) 0:44 gl_ClipDistance: direct index for structure ( out 3-element array of float ClipDistance) 0:44 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 3-element array of float ClipDistance gl_ClipDistance}) 0:44 Constant: 0:44 2 (const uint) 0:44 Constant: 0:44 2 (const int) 0:44 'cd' ( temp float) 0:? Linker Objects 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'patchOut' ( patch 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 3-element array of float ClipDistance gl_ClipDistance}) 0:? 'badp1' ( smooth patch in 4-component vector of float) 0:? 'badp2' ( flat patch in 4-component vector of float) 0:? 'badp3' ( noperspective patch in 4-component vector of float) 0:? 'badp4' ( patch sample in 3-component vector of float) 0:? 'gl_in' ( in 32-element array of block{ in 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'ina' ( in 2-component vector of float) 0:? 'inb' ( in 32-element array of 2-component vector of float) 0:? 'inc' ( in 32-element array of 2-component vector of float) 0:? 'ind' ( in 32-element array of 2-component vector of float) 0:? 'bla' ( in block{ in int f}) 0:? 'blb' ( in 32-element array of block{ in int f}) 0:? 'blc' ( in 32-element array of block{ in int f}) 0:? 'bld' ( in 32-element array of block{ in int f}) 0:? 'ivla' (layout( location=23) in 32-element array of 4-component vector of float) 0:? 'ivlb' (layout( location=24) in 32-element array of 4-component vector of float) 0:? 'ivlc' (layout( location=24) in 32-element array of 4-component vector of float) 0:? 'ovla' (layout( location=23) out 2-element array of 4-component vector of float) 0:? 'ovlb' (layout( location=24) out 2-element array of 4-component vector of float) 0:? 'pinbi' ( patch in block{ in int a}) glslang-16.0.0/Test/baseResults/400.vert.out000066400000000000000000000526261506534232700204750ustar00rootroot00000000000000400.vert ERROR: 0:3: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions ERROR: 0:4: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions ERROR: 0:5: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions ERROR: 0:70: 'foo3' : no matching overloaded function found ERROR: 0:76: 'foo3' : ambiguous best function under implicit type conversion ERROR: 0:77: 'foo3' : ambiguous best function under implicit type conversion ERROR: 0:78: 'foo3' : ambiguous best function under implicit type conversion ERROR: 0:81: 'foo3' : ambiguous best function under implicit type conversion ERROR: 0:82: 'foo3' : ambiguous best function under implicit type conversion ERROR: 0:83: 'foo3' : ambiguous best function under implicit type conversion ERROR: 0:86: 'foo3' : ambiguous best function under implicit type conversion ERROR: 0:87: 'foo3' : ambiguous best function under implicit type conversion ERROR: 0:88: 'foo3' : ambiguous best function under implicit type conversion ERROR: 13 compilation errors. No code generated. Shader version: 400 ERROR: node is still EOpNull! 0:8 Function Definition: foo1(d1;u1; ( global void) 0:8 Function Parameters: 0:8 'a' ( in double) 0:8 'b' ( in uint) 0:9 Function Definition: foo1(d1;i1; ( global void) 0:9 Function Parameters: 0:9 'a' ( in double) 0:9 'b' ( in int) 0:10 Function Definition: foo1(d1;f1; ( global void) 0:10 Function Parameters: 0:10 'a' ( in double) 0:10 'b' ( in float) 0:11 Function Definition: foo1(d1;d1; ( global void) 0:11 Function Parameters: 0:11 'a' ( in double) 0:11 'b' ( in double) 0:13 Function Definition: foo2(d1;f1; ( global void) 0:13 Function Parameters: 0:13 'a' ( in double) 0:13 'b' ( in float) 0:14 Function Definition: foo2(d1;d1; ( global void) 0:14 Function Parameters: 0:14 'a' ( in double) 0:14 'b' ( in double) 0:16 Function Definition: foo3(d1;f1; ( global void) 0:16 Function Parameters: 0:16 'a' ( in double) 0:16 'b' ( in float) 0:17 Function Definition: foo3(f1;d1; ( global void) 0:17 Function Parameters: 0:17 'a' ( in float) 0:17 'b' ( in double) 0:19 Function Definition: ftd(i1;f1;d1; ( global void) 0:19 Function Parameters: 0:19 '' ( in int) 0:19 '' ( in float) 0:19 '' ( in double) 0:20 Function Definition: ftd(u1;f1;d1; ( global void) 0:20 Function Parameters: 0:20 '' ( in uint) 0:20 '' ( in float) 0:20 '' ( in double) 0:21 Function Definition: ftd(f1;d1;d1; ( global void) 0:21 Function Parameters: 0:21 '' ( in float) 0:21 '' ( in double) 0:21 '' ( in double) 0:23 Function Definition: main( ( global void) 0:23 Function Parameters: 0:? Sequence 0:30 Function Call: foo1(d1;d1; ( global void) 0:30 'd' ( temp double) 0:30 'd' ( temp double) 0:31 Function Call: foo1(d1;u1; ( global void) 0:31 'd' ( temp double) 0:31 'u' ( temp uint) 0:32 Function Call: foo1(d1;i1; ( global void) 0:32 'd' ( temp double) 0:32 'i' ( temp int) 0:33 Function Call: foo1(d1;f1; ( global void) 0:33 'd' ( temp double) 0:33 'f' ( temp float) 0:35 Function Call: foo1(d1;d1; ( global void) 0:35 Convert float to double ( temp double) 0:35 'f' ( temp float) 0:35 'd' ( temp double) 0:36 Function Call: foo1(d1;u1; ( global void) 0:36 Convert float to double ( temp double) 0:36 'f' ( temp float) 0:36 'u' ( temp uint) 0:37 Function Call: foo1(d1;i1; ( global void) 0:37 Convert float to double ( temp double) 0:37 'f' ( temp float) 0:37 'i' ( temp int) 0:38 Function Call: foo1(d1;f1; ( global void) 0:38 Convert float to double ( temp double) 0:38 'f' ( temp float) 0:38 'f' ( temp float) 0:40 Function Call: foo1(d1;d1; ( global void) 0:40 Convert uint to double ( temp double) 0:40 'u' ( temp uint) 0:40 'd' ( temp double) 0:41 Function Call: foo1(d1;u1; ( global void) 0:41 Convert uint to double ( temp double) 0:41 'u' ( temp uint) 0:41 'u' ( temp uint) 0:42 Function Call: foo1(d1;i1; ( global void) 0:42 Convert uint to double ( temp double) 0:42 'u' ( temp uint) 0:42 'i' ( temp int) 0:43 Function Call: foo1(d1;f1; ( global void) 0:43 Convert uint to double ( temp double) 0:43 'u' ( temp uint) 0:43 'f' ( temp float) 0:45 Function Call: foo1(d1;d1; ( global void) 0:45 Convert int to double ( temp double) 0:45 'i' ( temp int) 0:45 'd' ( temp double) 0:46 Function Call: foo1(d1;u1; ( global void) 0:46 Convert int to double ( temp double) 0:46 'i' ( temp int) 0:46 'u' ( temp uint) 0:47 Function Call: foo1(d1;i1; ( global void) 0:47 Convert int to double ( temp double) 0:47 'i' ( temp int) 0:47 'i' ( temp int) 0:48 Function Call: foo1(d1;f1; ( global void) 0:48 Convert int to double ( temp double) 0:48 'i' ( temp int) 0:48 'f' ( temp float) 0:50 Function Call: foo2(d1;d1; ( global void) 0:50 'd' ( temp double) 0:50 'd' ( temp double) 0:51 Function Call: foo2(d1;f1; ( global void) 0:51 'd' ( temp double) 0:51 Convert uint to float ( temp float) 0:51 'u' ( temp uint) 0:52 Function Call: foo2(d1;f1; ( global void) 0:52 'd' ( temp double) 0:52 Convert int to float ( temp float) 0:52 'i' ( temp int) 0:53 Function Call: foo2(d1;f1; ( global void) 0:53 'd' ( temp double) 0:53 'f' ( temp float) 0:55 Function Call: foo2(d1;d1; ( global void) 0:55 Convert float to double ( temp double) 0:55 'f' ( temp float) 0:55 'd' ( temp double) 0:56 Function Call: foo2(d1;f1; ( global void) 0:56 Convert float to double ( temp double) 0:56 'f' ( temp float) 0:56 Convert uint to float ( temp float) 0:56 'u' ( temp uint) 0:57 Function Call: foo2(d1;f1; ( global void) 0:57 Convert float to double ( temp double) 0:57 'f' ( temp float) 0:57 Convert int to float ( temp float) 0:57 'i' ( temp int) 0:58 Function Call: foo2(d1;f1; ( global void) 0:58 Convert float to double ( temp double) 0:58 'f' ( temp float) 0:58 'f' ( temp float) 0:60 Function Call: foo2(d1;d1; ( global void) 0:60 Convert uint to double ( temp double) 0:60 'u' ( temp uint) 0:60 'd' ( temp double) 0:61 Function Call: foo2(d1;f1; ( global void) 0:61 Convert uint to double ( temp double) 0:61 'u' ( temp uint) 0:61 Convert uint to float ( temp float) 0:61 'u' ( temp uint) 0:62 Function Call: foo2(d1;f1; ( global void) 0:62 Convert uint to double ( temp double) 0:62 'u' ( temp uint) 0:62 Convert int to float ( temp float) 0:62 'i' ( temp int) 0:63 Function Call: foo2(d1;f1; ( global void) 0:63 Convert uint to double ( temp double) 0:63 'u' ( temp uint) 0:63 'f' ( temp float) 0:65 Function Call: foo2(d1;d1; ( global void) 0:65 Convert int to double ( temp double) 0:65 'i' ( temp int) 0:65 'd' ( temp double) 0:66 Function Call: foo2(d1;f1; ( global void) 0:66 Convert int to double ( temp double) 0:66 'i' ( temp int) 0:66 Convert uint to float ( temp float) 0:66 'u' ( temp uint) 0:67 Function Call: foo2(d1;f1; ( global void) 0:67 Convert int to double ( temp double) 0:67 'i' ( temp int) 0:67 Convert int to float ( temp float) 0:67 'i' ( temp int) 0:68 Function Call: foo2(d1;f1; ( global void) 0:68 Convert int to double ( temp double) 0:68 'i' ( temp int) 0:68 'f' ( temp float) 0:70 Constant: 0:70 0.000000 0:71 Function Call: foo3(d1;f1; ( global void) 0:71 'd' ( temp double) 0:71 Convert uint to float ( temp float) 0:71 'u' ( temp uint) 0:72 Function Call: foo3(d1;f1; ( global void) 0:72 'd' ( temp double) 0:72 Convert int to float ( temp float) 0:72 'i' ( temp int) 0:73 Function Call: foo3(d1;f1; ( global void) 0:73 'd' ( temp double) 0:73 'f' ( temp float) 0:75 Function Call: foo3(f1;d1; ( global void) 0:75 'f' ( temp float) 0:75 'd' ( temp double) 0:76 Function Call: foo3(d1;f1; ( global void) 0:76 Convert float to double ( temp double) 0:76 'f' ( temp float) 0:76 Convert uint to float ( temp float) 0:76 'u' ( temp uint) 0:77 Function Call: foo3(d1;f1; ( global void) 0:77 Convert float to double ( temp double) 0:77 'f' ( temp float) 0:77 Convert int to float ( temp float) 0:77 'i' ( temp int) 0:78 Function Call: foo3(d1;f1; ( global void) 0:78 Convert float to double ( temp double) 0:78 'f' ( temp float) 0:78 'f' ( temp float) 0:80 Function Call: foo3(f1;d1; ( global void) 0:80 Convert uint to float ( temp float) 0:80 'u' ( temp uint) 0:80 'd' ( temp double) 0:81 Function Call: foo3(d1;f1; ( global void) 0:81 Convert uint to double ( temp double) 0:81 'u' ( temp uint) 0:81 Convert uint to float ( temp float) 0:81 'u' ( temp uint) 0:82 Function Call: foo3(d1;f1; ( global void) 0:82 Convert uint to double ( temp double) 0:82 'u' ( temp uint) 0:82 Convert int to float ( temp float) 0:82 'i' ( temp int) 0:83 Function Call: foo3(d1;f1; ( global void) 0:83 Convert uint to double ( temp double) 0:83 'u' ( temp uint) 0:83 'f' ( temp float) 0:85 Function Call: foo3(f1;d1; ( global void) 0:85 Convert int to float ( temp float) 0:85 'i' ( temp int) 0:85 'd' ( temp double) 0:86 Function Call: foo3(d1;f1; ( global void) 0:86 Convert int to double ( temp double) 0:86 'i' ( temp int) 0:86 Convert uint to float ( temp float) 0:86 'u' ( temp uint) 0:87 Function Call: foo3(d1;f1; ( global void) 0:87 Convert int to double ( temp double) 0:87 'i' ( temp int) 0:87 Convert int to float ( temp float) 0:87 'i' ( temp int) 0:88 Function Call: foo3(d1;f1; ( global void) 0:88 Convert int to double ( temp double) 0:88 'i' ( temp int) 0:88 'f' ( temp float) 0:90 Function Call: ftd(i1;f1;d1; ( global void) 0:90 'i' ( temp int) 0:90 'f' ( temp float) 0:90 Convert float to double ( temp double) 0:90 'f' ( temp float) 0:91 Function Call: ftd(u1;f1;d1; ( global void) 0:91 'u' ( temp uint) 0:91 'f' ( temp float) 0:91 Convert float to double ( temp double) 0:91 'f' ( temp float) 0:97 Function Definition: tf( ( global void) 0:97 Function Parameters: 0:? Sequence 0:104 Function Call: itf(i1;f1;i1; ( global void) 0:104 'i' ( temp int) 0:104 Convert int to float ( temp float) 0:104 'i' ( temp int) 0:104 'i' ( temp int) 0:105 Function Call: itf(i1;f1;i1; ( global void) 0:105 'i' ( temp int) 0:105 Convert uint to float ( temp float) 0:105 'u' ( temp uint) 0:105 'i' ( temp int) 0:? Linker Objects 0:? 'd' ( in double) 0:? 'd3' ( in 3-component vector of double) 0:? 'dm4' ( in 4X4 matrix of double) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 400 ERROR: node is still EOpNull! 0:8 Function Definition: foo1(d1;u1; ( global void) 0:8 Function Parameters: 0:8 'a' ( in double) 0:8 'b' ( in uint) 0:9 Function Definition: foo1(d1;i1; ( global void) 0:9 Function Parameters: 0:9 'a' ( in double) 0:9 'b' ( in int) 0:10 Function Definition: foo1(d1;f1; ( global void) 0:10 Function Parameters: 0:10 'a' ( in double) 0:10 'b' ( in float) 0:11 Function Definition: foo1(d1;d1; ( global void) 0:11 Function Parameters: 0:11 'a' ( in double) 0:11 'b' ( in double) 0:13 Function Definition: foo2(d1;f1; ( global void) 0:13 Function Parameters: 0:13 'a' ( in double) 0:13 'b' ( in float) 0:14 Function Definition: foo2(d1;d1; ( global void) 0:14 Function Parameters: 0:14 'a' ( in double) 0:14 'b' ( in double) 0:16 Function Definition: foo3(d1;f1; ( global void) 0:16 Function Parameters: 0:16 'a' ( in double) 0:16 'b' ( in float) 0:17 Function Definition: foo3(f1;d1; ( global void) 0:17 Function Parameters: 0:17 'a' ( in float) 0:17 'b' ( in double) 0:19 Function Definition: ftd(i1;f1;d1; ( global void) 0:19 Function Parameters: 0:19 '' ( in int) 0:19 '' ( in float) 0:19 '' ( in double) 0:20 Function Definition: ftd(u1;f1;d1; ( global void) 0:20 Function Parameters: 0:20 '' ( in uint) 0:20 '' ( in float) 0:20 '' ( in double) 0:23 Function Definition: main( ( global void) 0:23 Function Parameters: 0:? Sequence 0:30 Function Call: foo1(d1;d1; ( global void) 0:30 'd' ( temp double) 0:30 'd' ( temp double) 0:31 Function Call: foo1(d1;u1; ( global void) 0:31 'd' ( temp double) 0:31 'u' ( temp uint) 0:32 Function Call: foo1(d1;i1; ( global void) 0:32 'd' ( temp double) 0:32 'i' ( temp int) 0:33 Function Call: foo1(d1;f1; ( global void) 0:33 'd' ( temp double) 0:33 'f' ( temp float) 0:35 Function Call: foo1(d1;d1; ( global void) 0:35 Convert float to double ( temp double) 0:35 'f' ( temp float) 0:35 'd' ( temp double) 0:36 Function Call: foo1(d1;u1; ( global void) 0:36 Convert float to double ( temp double) 0:36 'f' ( temp float) 0:36 'u' ( temp uint) 0:37 Function Call: foo1(d1;i1; ( global void) 0:37 Convert float to double ( temp double) 0:37 'f' ( temp float) 0:37 'i' ( temp int) 0:38 Function Call: foo1(d1;f1; ( global void) 0:38 Convert float to double ( temp double) 0:38 'f' ( temp float) 0:38 'f' ( temp float) 0:40 Function Call: foo1(d1;d1; ( global void) 0:40 Convert uint to double ( temp double) 0:40 'u' ( temp uint) 0:40 'd' ( temp double) 0:41 Function Call: foo1(d1;u1; ( global void) 0:41 Convert uint to double ( temp double) 0:41 'u' ( temp uint) 0:41 'u' ( temp uint) 0:42 Function Call: foo1(d1;i1; ( global void) 0:42 Convert uint to double ( temp double) 0:42 'u' ( temp uint) 0:42 'i' ( temp int) 0:43 Function Call: foo1(d1;f1; ( global void) 0:43 Convert uint to double ( temp double) 0:43 'u' ( temp uint) 0:43 'f' ( temp float) 0:45 Function Call: foo1(d1;d1; ( global void) 0:45 Convert int to double ( temp double) 0:45 'i' ( temp int) 0:45 'd' ( temp double) 0:46 Function Call: foo1(d1;u1; ( global void) 0:46 Convert int to double ( temp double) 0:46 'i' ( temp int) 0:46 'u' ( temp uint) 0:47 Function Call: foo1(d1;i1; ( global void) 0:47 Convert int to double ( temp double) 0:47 'i' ( temp int) 0:47 'i' ( temp int) 0:48 Function Call: foo1(d1;f1; ( global void) 0:48 Convert int to double ( temp double) 0:48 'i' ( temp int) 0:48 'f' ( temp float) 0:50 Function Call: foo2(d1;d1; ( global void) 0:50 'd' ( temp double) 0:50 'd' ( temp double) 0:51 Function Call: foo2(d1;f1; ( global void) 0:51 'd' ( temp double) 0:51 Convert uint to float ( temp float) 0:51 'u' ( temp uint) 0:52 Function Call: foo2(d1;f1; ( global void) 0:52 'd' ( temp double) 0:52 Convert int to float ( temp float) 0:52 'i' ( temp int) 0:53 Function Call: foo2(d1;f1; ( global void) 0:53 'd' ( temp double) 0:53 'f' ( temp float) 0:55 Function Call: foo2(d1;d1; ( global void) 0:55 Convert float to double ( temp double) 0:55 'f' ( temp float) 0:55 'd' ( temp double) 0:56 Function Call: foo2(d1;f1; ( global void) 0:56 Convert float to double ( temp double) 0:56 'f' ( temp float) 0:56 Convert uint to float ( temp float) 0:56 'u' ( temp uint) 0:57 Function Call: foo2(d1;f1; ( global void) 0:57 Convert float to double ( temp double) 0:57 'f' ( temp float) 0:57 Convert int to float ( temp float) 0:57 'i' ( temp int) 0:58 Function Call: foo2(d1;f1; ( global void) 0:58 Convert float to double ( temp double) 0:58 'f' ( temp float) 0:58 'f' ( temp float) 0:60 Function Call: foo2(d1;d1; ( global void) 0:60 Convert uint to double ( temp double) 0:60 'u' ( temp uint) 0:60 'd' ( temp double) 0:61 Function Call: foo2(d1;f1; ( global void) 0:61 Convert uint to double ( temp double) 0:61 'u' ( temp uint) 0:61 Convert uint to float ( temp float) 0:61 'u' ( temp uint) 0:62 Function Call: foo2(d1;f1; ( global void) 0:62 Convert uint to double ( temp double) 0:62 'u' ( temp uint) 0:62 Convert int to float ( temp float) 0:62 'i' ( temp int) 0:63 Function Call: foo2(d1;f1; ( global void) 0:63 Convert uint to double ( temp double) 0:63 'u' ( temp uint) 0:63 'f' ( temp float) 0:65 Function Call: foo2(d1;d1; ( global void) 0:65 Convert int to double ( temp double) 0:65 'i' ( temp int) 0:65 'd' ( temp double) 0:66 Function Call: foo2(d1;f1; ( global void) 0:66 Convert int to double ( temp double) 0:66 'i' ( temp int) 0:66 Convert uint to float ( temp float) 0:66 'u' ( temp uint) 0:67 Function Call: foo2(d1;f1; ( global void) 0:67 Convert int to double ( temp double) 0:67 'i' ( temp int) 0:67 Convert int to float ( temp float) 0:67 'i' ( temp int) 0:68 Function Call: foo2(d1;f1; ( global void) 0:68 Convert int to double ( temp double) 0:68 'i' ( temp int) 0:68 'f' ( temp float) 0:70 Constant: 0:70 0.000000 0:71 Function Call: foo3(d1;f1; ( global void) 0:71 'd' ( temp double) 0:71 Convert uint to float ( temp float) 0:71 'u' ( temp uint) 0:72 Function Call: foo3(d1;f1; ( global void) 0:72 'd' ( temp double) 0:72 Convert int to float ( temp float) 0:72 'i' ( temp int) 0:73 Function Call: foo3(d1;f1; ( global void) 0:73 'd' ( temp double) 0:73 'f' ( temp float) 0:75 Function Call: foo3(f1;d1; ( global void) 0:75 'f' ( temp float) 0:75 'd' ( temp double) 0:76 Function Call: foo3(d1;f1; ( global void) 0:76 Convert float to double ( temp double) 0:76 'f' ( temp float) 0:76 Convert uint to float ( temp float) 0:76 'u' ( temp uint) 0:77 Function Call: foo3(d1;f1; ( global void) 0:77 Convert float to double ( temp double) 0:77 'f' ( temp float) 0:77 Convert int to float ( temp float) 0:77 'i' ( temp int) 0:78 Function Call: foo3(d1;f1; ( global void) 0:78 Convert float to double ( temp double) 0:78 'f' ( temp float) 0:78 'f' ( temp float) 0:80 Function Call: foo3(f1;d1; ( global void) 0:80 Convert uint to float ( temp float) 0:80 'u' ( temp uint) 0:80 'd' ( temp double) 0:81 Function Call: foo3(d1;f1; ( global void) 0:81 Convert uint to double ( temp double) 0:81 'u' ( temp uint) 0:81 Convert uint to float ( temp float) 0:81 'u' ( temp uint) 0:82 Function Call: foo3(d1;f1; ( global void) 0:82 Convert uint to double ( temp double) 0:82 'u' ( temp uint) 0:82 Convert int to float ( temp float) 0:82 'i' ( temp int) 0:83 Function Call: foo3(d1;f1; ( global void) 0:83 Convert uint to double ( temp double) 0:83 'u' ( temp uint) 0:83 'f' ( temp float) 0:85 Function Call: foo3(f1;d1; ( global void) 0:85 Convert int to float ( temp float) 0:85 'i' ( temp int) 0:85 'd' ( temp double) 0:86 Function Call: foo3(d1;f1; ( global void) 0:86 Convert int to double ( temp double) 0:86 'i' ( temp int) 0:86 Convert uint to float ( temp float) 0:86 'u' ( temp uint) 0:87 Function Call: foo3(d1;f1; ( global void) 0:87 Convert int to double ( temp double) 0:87 'i' ( temp int) 0:87 Convert int to float ( temp float) 0:87 'i' ( temp int) 0:88 Function Call: foo3(d1;f1; ( global void) 0:88 Convert int to double ( temp double) 0:88 'i' ( temp int) 0:88 'f' ( temp float) 0:90 Function Call: ftd(i1;f1;d1; ( global void) 0:90 'i' ( temp int) 0:90 'f' ( temp float) 0:90 Convert float to double ( temp double) 0:90 'f' ( temp float) 0:91 Function Call: ftd(u1;f1;d1; ( global void) 0:91 'u' ( temp uint) 0:91 'f' ( temp float) 0:91 Convert float to double ( temp double) 0:91 'f' ( temp float) 0:? Linker Objects 0:? 'd' ( in double) 0:? 'd3' ( in 3-component vector of double) 0:? 'dm4' ( in 4X4 matrix of double) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/410.geom.out000066400000000000000000000073031506534232700204350ustar00rootroot00000000000000410.geom 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 '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) ERROR: 0:33: 'assign' : cannot convert from ' const 4-component vector of float' to 'layout( stream=0) gl_Position void Position' WARNING: 0:38: 'return' : type conversion on return values was not explicitly allowed until version 420 ERROR: 8 compilation errors. No code generated. Shader version: 410 invocations = -1 max_vertices = -1 input primitive = none output primitive = none ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'gl_ViewportIndex' (layout( stream=0) out int ViewportIndex) 0:5 Constant: 0:5 7 (const int) 0:28 Function Definition: foo( ( global void) 0:28 Function Parameters: 0:30 Sequence 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'p' ( temp float) 0:30 gl_PointSize: direct index for structure ( in float PointSize) 0:30 direct index ( temp block{ in float PointSize gl_PointSize}) 0:30 'gl_in' ( in unsized 2-element array of block{ in float PointSize gl_PointSize}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp float) 0:31 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize float PointSize) 0:31 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_PointSize float PointSize gl_PointSize}) 0:31 Constant: 0:31 1 (const uint) 0:31 'p' ( temp float) 0:33 gl_Position: direct index for structure (layout( stream=0) gl_Position void Position) 0:33 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_PointSize float PointSize gl_PointSize}) 0:33 Constant: 0:33 0 (const uint) 0:36 Function Definition: foo5( ( global float) 0:36 Function Parameters: 0:38 Sequence 0:38 Branch: Return with expression 0:38 Constant: 0:38 4.000000 0:? Linker Objects 0:? 'gl_in' ( in unsized 2-element array of block{ in float PointSize gl_PointSize}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_PointSize float PointSize gl_PointSize}) Linked geometry stage: ERROR: Linking geometry stage: At least one shader must specify an input layout primitive ERROR: Linking geometry stage: At least one shader must specify an output layout primitive ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value) Shader version: 410 invocations = 1 max_vertices = -1 input primitive = none output primitive = none ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'gl_ViewportIndex' (layout( stream=0) out int ViewportIndex) 0:5 Constant: 0:5 7 (const int) 0:? Linker Objects 0:? 'gl_in' ( in unsized 2-element array of block{ in float PointSize gl_PointSize}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_PointSize float PointSize gl_PointSize}) glslang-16.0.0/Test/baseResults/410.tesc.out000066400000000000000000000023601506534232700204420ustar00rootroot00000000000000410.tesc ERROR: 0:4: 'length' : array must first be sized by a redeclaration or layout qualifier ERROR: 1 compilation errors. No code generated. Shader version: 400 vertices = -1 ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:? Linker Objects 0:? 'gl_out' ( out unsized 1-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'outa' ( global 1-element array of int) 0:? 'patchOut' ( patch out 4-component vector of float) Linked tessellation control stage: ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...) Shader version: 400 vertices = -1 ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:? Linker Objects 0:? 'gl_out' ( out unsized 1-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'outa' ( global 1-element array of int) 0:? 'patchOut' ( patch out 4-component vector of float) glslang-16.0.0/Test/baseResults/410.vert.out000066400000000000000000000020751506534232700204670ustar00rootroot00000000000000410.vert Shader version: 410 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'test' ( temp int) 0:9 Constant: 0:9 16 (const int) 0:? Linker Objects 0:? 'd' ( in double) 0:? 'd3' ( in 3-component vector of double) 0:? 'dm4' ( in 4X4 matrix of double) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 410 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'test' ( temp int) 0:9 Constant: 0:9 16 (const int) 0:? Linker Objects 0:? 'd' ( in double) 0:? 'd3' ( in 3-component vector of double) 0:? 'dm4' ( in 4X4 matrix of double) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/420.comp.out000066400000000000000000000123541506534232700204470ustar00rootroot00000000000000420.comp ERROR: 0:3: 'gl_WorkGroupSize' : not supported for this version or the enabled extensions ERROR: 1 compilation errors. No code generated. Shader version: 420 Requested GL_ARB_compute_shader local_size = (2, 4, 6) ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 3-component vector of float) 0:13 'sfoo' ( shared 3-component vector of float) 0:13 Constant: 0:13 2.000000 0:13 4.000000 0:13 6.000000 0:14 add second child into first child ( temp 3-component vector of float) 0:14 'sfoo' ( shared 3-component vector of float) 0:14 Convert uint to float ( temp 3-component vector of float) 0:14 add ( temp 3-component vector of uint) 0:14 add ( temp 3-component vector of uint) 0:14 add ( temp 3-component vector of uint) 0:14 add ( temp 3-component vector of uint) 0:14 Constant: 0:14 2 (const uint) 0:14 4 (const uint) 0:14 6 (const uint) 0:14 'gl_NumWorkGroups' ( in 3-component vector of uint NumWorkGroups) 0:14 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:14 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:14 'gl_GlobalInvocationID' ( in 3-component vector of uint GlobalInvocationID) 0:15 vector scale second child into first child ( temp 3-component vector of float) 0:15 'sfoo' ( shared 3-component vector of float) 0:15 Convert uint to float ( temp float) 0:15 'gl_LocalInvocationIndex' ( in uint LocalInvocationIndex) 0:16 add second child into first child ( temp 3-component vector of float) 0:16 'sfoo' ( shared 3-component vector of float) 0:16 Constant: 0:16 66559.000000 0:16 66559.000000 0:16 65599.000000 0:17 vector scale second child into first child ( temp 3-component vector of float) 0:17 'sfoo' ( shared 3-component vector of float) 0:17 Constant: 0:17 1057.000000 0:23 Barrier ( global void) 0:24 MemoryBarrier ( global void) 0:25 MemoryBarrierAtomicCounter ( global void) 0:26 MemoryBarrierBuffer ( global void) 0:27 MemoryBarrierImage ( global void) 0:28 MemoryBarrierShared ( global void) 0:29 GroupMemoryBarrier ( global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) 0:? 4 (const uint) 0:? 6 (const uint) 0:? 'sfoo' ( shared 3-component vector of float) Linked compute stage: Shader version: 420 Requested GL_ARB_compute_shader local_size = (2, 4, 6) ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 3-component vector of float) 0:13 'sfoo' ( shared 3-component vector of float) 0:13 Constant: 0:13 2.000000 0:13 4.000000 0:13 6.000000 0:14 add second child into first child ( temp 3-component vector of float) 0:14 'sfoo' ( shared 3-component vector of float) 0:14 Convert uint to float ( temp 3-component vector of float) 0:14 add ( temp 3-component vector of uint) 0:14 add ( temp 3-component vector of uint) 0:14 add ( temp 3-component vector of uint) 0:14 add ( temp 3-component vector of uint) 0:14 Constant: 0:14 2 (const uint) 0:14 4 (const uint) 0:14 6 (const uint) 0:14 'gl_NumWorkGroups' ( in 3-component vector of uint NumWorkGroups) 0:14 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:14 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:14 'gl_GlobalInvocationID' ( in 3-component vector of uint GlobalInvocationID) 0:15 vector scale second child into first child ( temp 3-component vector of float) 0:15 'sfoo' ( shared 3-component vector of float) 0:15 Convert uint to float ( temp float) 0:15 'gl_LocalInvocationIndex' ( in uint LocalInvocationIndex) 0:16 add second child into first child ( temp 3-component vector of float) 0:16 'sfoo' ( shared 3-component vector of float) 0:16 Constant: 0:16 66559.000000 0:16 66559.000000 0:16 65599.000000 0:17 vector scale second child into first child ( temp 3-component vector of float) 0:17 'sfoo' ( shared 3-component vector of float) 0:17 Constant: 0:17 1057.000000 0:23 Barrier ( global void) 0:24 MemoryBarrier ( global void) 0:25 MemoryBarrierAtomicCounter ( global void) 0:26 MemoryBarrierBuffer ( global void) 0:27 MemoryBarrierImage ( global void) 0:28 MemoryBarrierShared ( global void) 0:29 GroupMemoryBarrier ( global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) 0:? 4 (const uint) 0:? 6 (const uint) 0:? 'sfoo' ( shared 3-component vector of float) glslang-16.0.0/Test/baseResults/420.frag.out000066400000000000000000000157461506534232700204400ustar00rootroot00000000000000420.frag ERROR: 0:4: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth ERROR: 0:11: 'layout qualifier' : can only apply depth layout to gl_FragDepth ERROR: 0:12: 'gl_FragDepth' : cannot redeclare after use ERROR: 0:14: 'atomic_uint' : array must be explicitly sized ERROR: 0:17: 'imageSize' : required extension not requested: GL_ARB_shader_image_size ERROR: 0:54: 'std430' : not supported for this version or the enabled extensions ERROR: 0:54: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 7 compilation errors. No code generated. Shader version: 420 Requested GL_ARB_shader_image_size Requested GL_ARB_shader_storage_buffer_object using depth_any ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:8 Constant: 0:8 0.300000 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of int) 0:17 'iv2dim' ( global 2-component vector of int) 0:17 imageQuerySize ( global 2-component vector of int) 0:17 'i2D' ( writeonly uniform image2D) 0:19 Sequence 0:19 move second child to first child ( temp 2-component vector of int) 0:19 'iv2dim1' ( global 2-component vector of int) 0:19 imageQuerySize ( global 2-component vector of int) 0:19 'i2D' ( writeonly uniform image2D) 0:29 Function Definition: atomicOpPass( ( global void) 0:29 Function Parameters: 0:31 Sequence 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'origi' ( temp int) 0:31 AtomicAdd ( global int) 0:31 atomi: direct index for structure (layout( column_major std430 offset=0) buffer int) 0:31 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu}) 0:31 Constant: 0:31 0 (const uint) 0:31 Constant: 0:31 3 (const int) 0:32 Sequence 0:32 move second child to first child ( temp uint) 0:32 'origu' ( temp uint) 0:32 AtomicAnd ( global uint) 0:32 atomu: direct index for structure (layout( column_major std430 offset=4) buffer uint) 0:32 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 7 (const uint) 0:33 move second child to first child ( temp int) 0:33 'origi' ( temp int) 0:33 AtomicExchange ( global int) 0:33 atomi: direct index for structure (layout( column_major std430 offset=0) buffer int) 0:33 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu}) 0:33 Constant: 0:33 0 (const uint) 0:33 Constant: 0:33 4 (const int) 0:34 move second child to first child ( temp uint) 0:34 'origu' ( temp uint) 0:34 AtomicCompSwap ( global uint) 0:34 atomu: direct index for structure (layout( column_major std430 offset=4) buffer uint) 0:34 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu}) 0:34 Constant: 0:34 1 (const uint) 0:34 Constant: 0:34 10 (const uint) 0:34 Constant: 0:34 8 (const uint) 0:? Linker Objects 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:? 'depth' ( smooth in float) 0:? 'a' (layout( binding=0 offset=0) uniform unsized 1-element array of atomic_uint) 0:? 'i2D' ( writeonly uniform image2D) 0:? 'iv2dim' ( global 2-component vector of int) 0:? 'iv2dim1' ( global 2-component vector of int) 0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu}) 0:? 'ssboStd430Arr' (layout( binding=2 column_major std430) buffer 2-element array of block{layout( column_major std430 offset=0) buffer int member01, layout( column_major std430 offset=4) buffer 2-element array of int memberArr01, layout( column_major std430 offset=12) buffer unsized 1-element array of int memberUnsizedArr01}) 0:? 'ssboSharedArr' (layout( binding=3 column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member02, layout( column_major shared) buffer 2-element array of int memberArr02, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr02}) Linked fragment stage: Shader version: 420 Requested GL_ARB_shader_image_size Requested GL_ARB_shader_storage_buffer_object using depth_any ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:8 Constant: 0:8 0.300000 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of int) 0:17 'iv2dim' ( global 2-component vector of int) 0:17 imageQuerySize ( global 2-component vector of int) 0:17 'i2D' ( writeonly uniform image2D) 0:19 Sequence 0:19 move second child to first child ( temp 2-component vector of int) 0:19 'iv2dim1' ( global 2-component vector of int) 0:19 imageQuerySize ( global 2-component vector of int) 0:19 'i2D' ( writeonly uniform image2D) 0:? Linker Objects 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:? 'depth' ( smooth in float) 0:? 'a' (layout( binding=0 offset=0) uniform 1-element array of atomic_uint) 0:? 'i2D' ( writeonly uniform image2D) 0:? 'iv2dim' ( global 2-component vector of int) 0:? 'iv2dim1' ( global 2-component vector of int) 0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu}) 0:? 'ssboStd430Arr' (layout( binding=2 column_major std430) buffer 2-element array of block{layout( column_major std430 offset=0) buffer int member01, layout( column_major std430 offset=4) buffer 2-element array of int memberArr01, layout( column_major std430 offset=12) buffer unsized 1-element array of int memberUnsizedArr01}) 0:? 'ssboSharedArr' (layout( binding=3 column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member02, layout( column_major shared) buffer 2-element array of int memberArr02, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr02}) glslang-16.0.0/Test/baseResults/420.geom.out000066400000000000000000000163051506534232700204400ustar00rootroot00000000000000420.geom ERROR: 0:9: 'length' : array must first be sized by a redeclaration or layout qualifier ERROR: 0:11: '[' : array must be sized by a redeclaration or layout qualifier before being indexed with a variable ERROR: 0:42: 'assign' : l-value required (can't modify a const) ERROR: 0:43: 'assign' : l-value required "v4" (can't modify a uniform) ERROR: 0:48: 'gl_PointSize' : cannot change arrayness of redeclared block member ERROR: 0:49: 'gl_ClipDistance' : cannot change arrayness of redeclared block member ERROR: 6 compilation errors. No code generated. Shader version: 420 invocations = -1 max_vertices = -1 input primitive = triangles output primitive = none ERROR: node is still EOpNull! 0:7 Function Definition: foo( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Constant: 0:9 1 (const int) 0:10 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:10 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:10 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:11 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:11 indirect index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:11 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:11 'i' ( global int) 0:11 Constant: 0:11 0 (const int) 0:18 Function Definition: foo3( ( global void) 0:18 Function Parameters: 0:20 Sequence 0:20 Constant: 0:20 3 (const int) 0:21 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:21 indirect index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:21 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:21 'i' ( global int) 0:21 Constant: 0:21 0 (const int) 0:22 Constant: 0:22 3 (const int) 0:29 Function Definition: foo4( ( global void) 0:29 Function Parameters: 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:40 textureGatherOffset ( global 4-component vector of float) 0:40 's2D' ( uniform sampler2D) 0:40 direct index ( temp 2-component vector of float) 0:40 'coord' ( in 3-element array of 2-component vector of float) 0:40 Constant: 0:40 0 (const int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 indirect index ( temp 2-component vector of int) 0:40 Constant: 0:40 0 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:40 -2 (const int) 0:40 0 (const int) 0:40 3 (const int) 0:40 -3 (const int) 0:40 0 (const int) 0:40 2 (const int) 0:40 1 (const int) 0:40 'i' ( global int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:42 move second child to first child ( temp 2-component vector of int) 0:42 vector swizzle ( temp 2-component vector of int) 0:42 indirect index ( temp 2-component vector of int) 0:42 Constant: 0:42 0 (const int) 0:42 1 (const int) 0:42 1 (const int) 0:42 -2 (const int) 0:42 0 (const int) 0:42 3 (const int) 0:42 -3 (const int) 0:42 0 (const int) 0:42 2 (const int) 0:42 1 (const int) 0:42 'i' ( global int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 3 (const int) 0:42 3 (const int) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 'v4' ( uniform 4-component vector of float) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 3.200000 0:44 vector swizzle ( temp 2-component vector of float) 0:44 'v4' ( uniform 4-component vector of float) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:52 Function Definition: foo5( ( global float) 0:52 Function Parameters: 0:54 Sequence 0:54 Branch: Return with expression 0:54 Convert int to float ( temp float) 0:54 'i' ( global int) 0:? Linker Objects 0:? 'i' ( global int) 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'color3' ( in 3-element array of 4-component vector of float) 0:? 's2D' ( uniform sampler2D) 0:? 'coord' ( in 3-element array of 2-component vector of float) 0:? 'v4' ( uniform 4-component vector of float) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) Linked geometry stage: ERROR: Linking geometry stage: Missing entry point: Each stage requires one entry point ERROR: Linking geometry stage: At least one shader must specify an output layout primitive ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value) Shader version: 420 invocations = 1 max_vertices = -1 input primitive = triangles output primitive = none ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'i' ( global int) 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'color3' ( in 3-element array of 4-component vector of float) 0:? 's2D' ( uniform sampler2D) 0:? 'coord' ( in 3-element array of 2-component vector of float) 0:? 'v4' ( uniform 4-component vector of float) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) glslang-16.0.0/Test/baseResults/420.tesc.out000066400000000000000000000245021506534232700204450ustar00rootroot00000000000000420.tesc 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 '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 ERROR: 7 compilation errors. No code generated. Shader version: 420 Requested GL_ARB_separate_shader_objects vertices = 4 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 4-component vector of float) 0:17 'p' ( temp 4-component vector of float) 0:17 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:17 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:17 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'ps' ( temp float) 0:18 gl_PointSize: direct index for structure ( in float PointSize) 0:18 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:18 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'cd' ( temp float) 0:19 direct index ( temp float ClipDistance) 0:19 gl_ClipDistance: direct index for structure ( in unsized 3-element array of float ClipDistance) 0:19 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:19 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 3-element array of float ClipDistance gl_ClipDistance}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 2 (const int) 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'pvi' ( temp int) 0:21 'gl_PatchVerticesIn' ( in int PatchVertices) 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 'pid' ( temp int) 0:22 'gl_PrimitiveID' ( in int PrimitiveID) 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'iid' ( temp int) 0:23 'gl_InvocationID' ( in int InvocationID) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:25 indirect index ( temp block{ out 4-component vector of float Position gl_Position}) 0:25 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:25 'gl_InvocationID' ( in int InvocationID) 0:25 Constant: 0:25 0 (const int) 0:25 'p' ( temp 4-component vector of float) 0:26 indirect index ( temp block{ out 4-component vector of float Position gl_Position}) 0:26 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:26 'gl_InvocationID' ( in int InvocationID) 0:34 Function Definition: foo( ( global void) 0:34 Function Parameters: 0:36 Sequence 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 logical-or ( temp bool) 0:36 Compare Not Equal ( temp bool) 0:36 Constant: 0:36 -0.625000 0:36 -0.500000 0:36 -0.375000 0:36 -0.250000 0:36 -0.375000 0:36 -0.250000 0:36 -0.125000 0:36 0.000000 0:36 direct index (layout( location=0) temp 2X4 matrix of double) 0:36 'vs_tcs_first' (layout( location=0) in 32-element array of 2X4 matrix of double) 0:36 Constant: 0:36 0 (const int) 0:37 Compare Not Equal ( temp bool) 0:37 Constant: 0:37 0.375000 0:37 0.500000 0:37 0.625000 0:37 0.750000 0:37 0.625000 0:37 0.750000 0:37 0.875000 0:37 -0.625000 0:37 direct index (layout( location=12) temp 2X4 matrix of double) 0:37 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double) 0:37 Constant: 0:37 0 (const int) 0:36 true case is null 0:? Linker Objects 0:? 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:? 'a' ( out 3-element array of int) 0:? 'outb' ( out 5-element array of int) 0:? 'outc' ( out 4-element array of int) 0:? 'outf' ( out float) 0:? 'vs_tcs_first' (layout( location=0) in 32-element array of 2X4 matrix of double) 0:? 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double) Linked tessellation control stage: Shader version: 420 Requested GL_ARB_separate_shader_objects vertices = 4 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 4-component vector of float) 0:17 'p' ( temp 4-component vector of float) 0:17 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:17 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:17 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'ps' ( temp float) 0:18 gl_PointSize: direct index for structure ( in float PointSize) 0:18 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:18 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'cd' ( temp float) 0:19 direct index ( temp float ClipDistance) 0:19 gl_ClipDistance: direct index for structure ( in 3-element array of float ClipDistance) 0:19 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:19 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 2 (const int) 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'pvi' ( temp int) 0:21 'gl_PatchVerticesIn' ( in int PatchVertices) 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 'pid' ( temp int) 0:22 'gl_PrimitiveID' ( in int PrimitiveID) 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'iid' ( temp int) 0:23 'gl_InvocationID' ( in int InvocationID) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:25 indirect index ( temp block{ out 4-component vector of float Position gl_Position}) 0:25 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:25 'gl_InvocationID' ( in int InvocationID) 0:25 Constant: 0:25 0 (const int) 0:25 'p' ( temp 4-component vector of float) 0:26 indirect index ( temp block{ out 4-component vector of float Position gl_Position}) 0:26 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:26 'gl_InvocationID' ( in int InvocationID) 0:? Linker Objects 0:? 'gl_out' ( out 3-element array of block{ out 4-component vector of float Position gl_Position}) 0:? 'a' ( out 3-element array of int) 0:? 'outb' ( out 5-element array of int) 0:? 'outc' ( out 4-element array of int) 0:? 'outf' ( out float) 0:? 'vs_tcs_first' (layout( location=0) in 32-element array of 2X4 matrix of double) 0:? 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double) glslang-16.0.0/Test/baseResults/420.tese.out000066400000000000000000000341231506534232700204470ustar00rootroot00000000000000420.tese ERROR: 0:7: '=' : cannot convert from ' const 3-element array of float' to ' global 2-element array of float' ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): temp 2-component vector of float ERROR: 0:9: 'initializer list' : wrong number of matrix columns: temp 3X3 matrix of float ERROR: 0:10: 'initializer list' : wrong number of matrix columns: temp 2X2 matrix of float ERROR: 0:25: 'initializer list' : wrong number of structure members ERROR: 0:27: '=' : cannot convert from ' const bool' to ' global int' ERROR: 0:28: 'constructor' : cannot convert parameter 2 from ' const float' to ' temp 4-component vector of float' ERROR: 0:29: 'constructor' : cannot convert parameter 2 from ' const 2X2 matrix of float' to ' const 4-component vector of float' ERROR: 0:29: ' const 2-element array of 4-component vector of float' : cannot construct with these arguments ERROR: 0:29: '=' : cannot convert from ' const float' to ' global 2-element array of 4-component vector of float' ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' const structure{ global 4-component vector of float a, global 4-component vector of float b}' to ' temp structure{ global float s, global float t}' ERROR: 0:70: 'initializer list' : wrong number of structure members ERROR: 13 compilation errors. No code generated. Shader version: 420 input primitive = none vertex spacing = none triangle order = none ERROR: node is still EOpNull! 0:4 Sequence 0:4 move second child to first child ( temp 2X2 matrix of float) 0:4 'b' ( global 2X2 matrix of float) 0:4 Constant: 0:4 1.000000 0:4 0.000000 0:4 0.000000 0:4 1.000000 0:15 Sequence 0:15 move second child to first child ( temp structure{ global float a, global int b}) 0:15 'e' ( global structure{ global float a, global int b}) 0:15 Constant: 0:15 1.200000 0:15 2 (const int) 0:20 Sequence 0:20 move second child to first child ( temp structure{ global float a, global int b}) 0:20 'e2' ( global structure{ global float a, global int b}) 0:20 Constant: 0:20 1.000000 0:20 3 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 5-element array of float) 0:42 'b5' ( global 5-element array of float) 0:42 Constant: 0:42 3.400000 0:42 4.200000 0:42 5.000000 0:42 5.200000 0:42 1.100000 0:55 Sequence 0:55 move second child to first child ( temp structure{ global int f}) 0:55 'single1' ( global structure{ global int f}) 0:55 Constant: 0:55 10 (const int) 0:58 Sequence 0:58 move second child to first child ( temp structure{ global 2-component vector of uint v}) 0:58 'single2' ( global structure{ global 2-component vector of uint v}) 0:58 Constant: 0:58 1 (const uint) 0:58 2 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp structure{ global structure{ global int f} s1}) 0:61 'single3' ( global structure{ global structure{ global int f} s1}) 0:61 Constant: 0:61 3 (const int) 0:64 Sequence 0:64 move second child to first child ( temp structure{ global structure{ global 2-component vector of uint v} s1}) 0:64 'single4' ( global structure{ global structure{ global 2-component vector of uint v} s1}) 0:64 Constant: 0:64 4 (const uint) 0:64 5 (const uint) 0:79 Sequence 0:79 move second child to first child ( temp 3-component vector of float) 0:79 'av3' ( global 3-component vector of float) 0:79 Construct vec3 ( global 3-component vector of float) 0:79 'vc1' ( global float) 0:79 'vc2' ( global float) 0:79 'vc3' ( global float) 0:80 Sequence 0:80 move second child to first child ( temp 3-component vector of float) 0:80 'bv3' ( global 3-component vector of float) 0:80 Construct vec3 ( temp 3-component vector of float) 0:80 'vc1' ( global float) 0:80 'vc2' ( global float) 0:80 'vc3' ( global float) 0:82 Function Definition: main( ( global void) 0:82 Function Parameters: 0:84 Sequence 0:84 MemoryBarrier ( global void) 0:86 Test condition and select ( temp void) 0:86 Condition 0:86 Compare Equal ( temp bool) 0:86 Constant: 0:86 1 (const uint) 0:86 2 (const uint) 0:86 3.000000 0:86 4.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 4.000000 0:86 0.000000 0:86 5.000000 0:86 6.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 6.000000 0:86 0.000000 0:86 'curlybad1' ( temp structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:86 true case is null 0:88 Test condition and select ( temp void) 0:88 Condition 0:88 Constant: 0:88 true (const bool) 0:88 true case is null 0:? Linker Objects 0:? 'a' ( const 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'b' ( global 2X2 matrix of float) 0:? 'c' ( const 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'a2' ( global 2-element array of float) 0:? 'b2' ( global 2-component vector of float) 0:? 'c2' ( global 3X3 matrix of float) 0:? 'd' ( global 2X2 matrix of float) 0:? 'e' ( global structure{ global float a, global int b}) 0:? 'e2' ( global structure{ global float a, global int b}) 0:? 'e3' ( global structure{ global float a, global int b}) 0:? 'a3' ( global int) 0:? 'b3' ( global 2-element array of 4-component vector of float) 0:? 'b4' ( global 2-element array of 4-component vector of float) 0:? 'c3' ( global 4X2 matrix of float) 0:? 'd2' ( global unsized 1-element array of structure{ global float s, global float t}) 0:? 'b5' ( global 5-element array of float) 0:? 'single1' ( global structure{ global int f}) 0:? 'single2' ( global structure{ global 2-component vector of uint v}) 0:? 'single3' ( global structure{ global structure{ global int f} s1}) 0:? 'single4' ( global structure{ global structure{ global 2-component vector of uint v} s1}) 0:? 'constructed' ( const structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3.000000 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 0.000000 0:? 5.000000 0:? 6.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 6.000000 0:? 0.000000 0:? 'curlybad1' ( temp structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 'curlyInit' ( const structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3.000000 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 0.000000 0:? 5.000000 0:? 6.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 6.000000 0:? 0.000000 0:? 'vc1' ( global float) 0:? 'vc2' ( global float) 0:? 'vc3' ( global float) 0:? 'av3' ( global 3-component vector of float) 0:? 'bv3' ( global 3-component vector of float) Linked tessellation evaluation stage: ERROR: Linking tessellation evaluation stage: At least one shader must specify an input layout primitive Shader version: 420 input primitive = none vertex spacing = equal_spacing triangle order = ccw ERROR: node is still EOpNull! 0:4 Sequence 0:4 move second child to first child ( temp 2X2 matrix of float) 0:4 'b' ( global 2X2 matrix of float) 0:4 Constant: 0:4 1.000000 0:4 0.000000 0:4 0.000000 0:4 1.000000 0:15 Sequence 0:15 move second child to first child ( temp structure{ global float a, global int b}) 0:15 'e' ( global structure{ global float a, global int b}) 0:15 Constant: 0:15 1.200000 0:15 2 (const int) 0:20 Sequence 0:20 move second child to first child ( temp structure{ global float a, global int b}) 0:20 'e2' ( global structure{ global float a, global int b}) 0:20 Constant: 0:20 1.000000 0:20 3 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 5-element array of float) 0:42 'b5' ( global 5-element array of float) 0:42 Constant: 0:42 3.400000 0:42 4.200000 0:42 5.000000 0:42 5.200000 0:42 1.100000 0:55 Sequence 0:55 move second child to first child ( temp structure{ global int f}) 0:55 'single1' ( global structure{ global int f}) 0:55 Constant: 0:55 10 (const int) 0:58 Sequence 0:58 move second child to first child ( temp structure{ global 2-component vector of uint v}) 0:58 'single2' ( global structure{ global 2-component vector of uint v}) 0:58 Constant: 0:58 1 (const uint) 0:58 2 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp structure{ global structure{ global int f} s1}) 0:61 'single3' ( global structure{ global structure{ global int f} s1}) 0:61 Constant: 0:61 3 (const int) 0:64 Sequence 0:64 move second child to first child ( temp structure{ global structure{ global 2-component vector of uint v} s1}) 0:64 'single4' ( global structure{ global structure{ global 2-component vector of uint v} s1}) 0:64 Constant: 0:64 4 (const uint) 0:64 5 (const uint) 0:79 Sequence 0:79 move second child to first child ( temp 3-component vector of float) 0:79 'av3' ( global 3-component vector of float) 0:79 Construct vec3 ( global 3-component vector of float) 0:79 'vc1' ( global float) 0:79 'vc2' ( global float) 0:79 'vc3' ( global float) 0:80 Sequence 0:80 move second child to first child ( temp 3-component vector of float) 0:80 'bv3' ( global 3-component vector of float) 0:80 Construct vec3 ( temp 3-component vector of float) 0:80 'vc1' ( global float) 0:80 'vc2' ( global float) 0:80 'vc3' ( global float) 0:82 Function Definition: main( ( global void) 0:82 Function Parameters: 0:84 Sequence 0:84 MemoryBarrier ( global void) 0:86 Test condition and select ( temp void) 0:86 Condition 0:86 Compare Equal ( temp bool) 0:86 Constant: 0:86 1 (const uint) 0:86 2 (const uint) 0:86 3.000000 0:86 4.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 4.000000 0:86 0.000000 0:86 5.000000 0:86 6.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 6.000000 0:86 0.000000 0:86 'curlybad1' ( temp structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:86 true case is null 0:88 Test condition and select ( temp void) 0:88 Condition 0:88 Constant: 0:88 true (const bool) 0:88 true case is null 0:? Linker Objects 0:? 'a' ( const 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'b' ( global 2X2 matrix of float) 0:? 'c' ( const 2X2 matrix of float) 0:? 1.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'a2' ( global 2-element array of float) 0:? 'b2' ( global 2-component vector of float) 0:? 'c2' ( global 3X3 matrix of float) 0:? 'd' ( global 2X2 matrix of float) 0:? 'e' ( global structure{ global float a, global int b}) 0:? 'e2' ( global structure{ global float a, global int b}) 0:? 'e3' ( global structure{ global float a, global int b}) 0:? 'a3' ( global int) 0:? 'b3' ( global 2-element array of 4-component vector of float) 0:? 'b4' ( global 2-element array of 4-component vector of float) 0:? 'c3' ( global 4X2 matrix of float) 0:? 'd2' ( global unsized 1-element array of structure{ global float s, global float t}) 0:? 'b5' ( global 5-element array of float) 0:? 'single1' ( global structure{ global int f}) 0:? 'single2' ( global structure{ global 2-component vector of uint v}) 0:? 'single3' ( global structure{ global structure{ global int f} s1}) 0:? 'single4' ( global structure{ global structure{ global 2-component vector of uint v} s1}) 0:? 'constructed' ( const structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3.000000 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 0.000000 0:? 5.000000 0:? 6.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 6.000000 0:? 0.000000 0:? 'curlybad1' ( temp structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 'curlyInit' ( const structure{ global 2-component vector of uint uv2, global 2-element array of structure{ global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3.000000 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 0.000000 0:? 5.000000 0:? 6.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 6.000000 0:? 0.000000 0:? 'vc1' ( global float) 0:? 'vc2' ( global float) 0:? 'vc3' ( global float) 0:? 'av3' ( global 3-component vector of float) 0:? 'bv3' ( global 3-component vector of float) glslang-16.0.0/Test/baseResults/420.vert.out000066400000000000000000000446721506534232700205010ustar00rootroot00000000000000420.vert ERROR: 0:2: '#version' : must occur first in shader WARNING: 0:3: varying deprecated in version 130; may be removed in future release ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420 ERROR: 0:7: '' : vertex input cannot be further qualified ERROR: 0:11: '' : can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD) ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:13: 'uniform' : too many storage qualifiers ERROR: 0:18: '=' : global const initializers must be constant ' const int' ERROR: 0:20: 'const' : no qualifiers allowed for function return ERROR: 0:27: '' : array size must be a constant integer expression ERROR: 0:38: 'j' : undeclared identifier ERROR: 0:38: '=' : cannot convert from ' temp float' to ' temp int' ERROR: 0:39: 'k' : undeclared identifier ERROR: 0:39: '=' : cannot convert from ' temp float' to ' temp int' ERROR: 0:40: 'j' : undeclared identifier ERROR: 0:40: '=' : cannot convert from ' temp float' to ' temp int' ERROR: 0:44: 'jj' : undeclared identifier ERROR: 0:44: '=' : cannot convert from ' temp float' to ' temp int' ERROR: 0:54: 'y' : vector swizzle selection out of range ERROR: 0:62: 'xxxxx' : vector swizzle too long ERROR: 0:63: 'xxy' : vector swizzle selection out of range ERROR: 0:66: 'binding' : cannot declare a default, include a type or full declaration ERROR: 0:69: 'location/component/index' : cannot declare a default, use a full declaration ERROR: 0:70: 'input block' : not supported in this stage: vertex ERROR: 0:70: 'binding' : requires uniform or buffer or tile image storage qualifier ERROR: 0:71: 'binding' : binding is too large ERROR: 0:74: 'binding' : sampler binding not less than gl_MaxCombinedTextureImageUnits ERROR: 0:76: 'binding' : sampler binding not less than gl_MaxCombinedTextureImageUnits (using array) ERROR: 0:85: 'patch' : not supported in this stage: vertex ERROR: 0:85: '' : vertex input cannot be further qualified ERROR: 0:86: 'patch' : not supported in this stage: vertex ERROR: 0:100: '=' : global const initializers must be constant ' const int' ERROR: 0:101: '' : array size must be a constant integer expression ERROR: 0:107: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported for this version or the enabled extensions ERROR: 0:114: 'imageAtomicMin' : only supported on image with format r32i or r32ui ERROR: 0:115: 'imageAtomicMax' : no matching overloaded function found ERROR: 0:119: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:122: '' : memory qualifiers cannot be used on this type ERROR: 0:123: '' : memory qualifiers cannot be used on this type ERROR: 0:134: 'format' : image formats must match ERROR: 0:135: 'volatile' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:135: 'format' : image formats must match ERROR: 0:136: 'format' : image formats must match ERROR: 0:139: 'rg8i' : does not apply to unsigned integer images ERROR: 0:140: 'rgba32i' : does not apply to floating point images ERROR: 0:141: 'rgba32f' : does not apply to unsigned integer images ERROR: 0:142: 'r8_snorm' : does not apply to signed integer images ERROR: 0:143: 'rgba32ui' : does not apply to signed integer images ERROR: 0:144: 'r8ui' : does not apply to signed integer images ERROR: 0:147: '"offset" on block member' : not supported for this version or the enabled extensions ERROR: 0:147: 'offset/align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:157: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:157: 'assign' : cannot convert from ' const float' to ' temp int' ERROR: 0:158: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:158: 'assign' : cannot convert from ' const float' to ' temp int' WARNING: 0:161: '[]' : assuming binding count of one for compile-time checking of binding numbers for unsized array ERROR: 54 compilation errors. No code generated. Shader version: 420 ERROR: node is still EOpNull! 0:20 Function Definition: foo( ( const int) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'b' ( const (read only) int) 0:23 'anonconst' ( global int) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'd' ( const (read only) int) 0:25 'b' ( const (read only) int) 0:29 Branch: Return with expression 0:29 'b' ( const (read only) int) 0:32 Function Definition: main( ( global void) 0:32 Function Parameters: 0:? Sequence 0:35 Test condition and select ( temp void) 0:35 Condition 0:35 Compare Equal ( temp bool) 0:35 'i' ( temp int) 0:35 Constant: 0:35 3 (const int) 0:35 true case 0:36 Sequence 0:36 move second child to first child ( temp int) 0:36 'j' ( temp int) 0:36 'i' ( temp int) 0:42 Loop with condition tested first 0:42 Loop Condition 0:42 Constant: 0:42 true (const bool) 0:42 No loop body 0:50 Function Definition: bar(vf4; ( global void) 0:50 Function Parameters: 0:50 'v' ( volatile in 4-component vector of float) 0:? Sequence 0:53 's' ( temp int) 0:54 's' ( temp int) 0:55 Test condition and select ( temp void) 0:55 Condition 0:55 Compare Equal ( temp bool) 0:55 direct index ( temp float) 0:55 direct index ( temp 4-component vector of float) 0:55 'bad' ( in 10-element array of 4-component vector of float) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 4.200000 0:55 true case is null 0:57 Test condition and select ( temp void) 0:57 Condition 0:57 Constant: 0:57 true (const bool) 0:57 true case 0:58 move second child to first child ( temp 4-component vector of float) 0:58 'badorder3' ( flat out 4-component vector of float) 0:58 direct index ( temp 4-component vector of float) 0:58 'bad' ( in 10-element array of 4-component vector of float) 0:58 Constant: 0:58 0 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 3-component vector of float) 0:61 'smeared' ( temp 3-component vector of float) 0:61 Construct vec3 ( temp 3-component vector of float) 0:61 'f' ( temp float) 0:62 Construct vec4 ( temp 4-component vector of float) 0:62 'f' ( temp float) 0:63 Construct vec2 ( temp 2-component vector of float) 0:63 'f' ( temp float) 0:88 Function Definition: bar23444( ( global void) 0:88 Function Parameters: 0:? Sequence 0:91 Sequence 0:91 move second child to first child ( temp float) 0:91 'a1' ( temp float) 0:91 direct index ( temp float) 0:91 direct index ( temp 3-component vector of float) 0:91 'm43' ( temp 4X3 matrix of float) 0:91 Constant: 0:91 3 (const int) 0:91 Constant: 0:91 1 (const int) 0:93 Sequence 0:93 move second child to first child ( temp int) 0:93 'a2' ( temp int) 0:93 Constant: 0:93 4 (const int) 0:94 add second child into first child ( temp int) 0:94 'a2' ( temp int) 0:94 Constant: 0:94 3 (const int) 0:95 add second child into first child ( temp int) 0:95 'a2' ( temp int) 0:95 Constant: 0:95 3 (const int) 0:96 Sequence 0:96 move second child to first child ( temp float) 0:96 'b' ( const (read only) float) 0:96 component-wise multiply ( temp float) 0:96 Constant: 0:96 2.000000 0:96 'a1' ( temp float) 0:97 Sequence 0:97 move second child to first child ( temp int) 0:97 'a' ( temp int) 0:97 Constant: 0:97 -1 (const int) 0:109 Function Definition: qux( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 Sequence 0:111 move second child to first child ( temp int) 0:111 'i' ( temp int) 0:111 aoeu: direct index for structure (layout( column_major shared) uniform int) 0:111 'anon@0' (layout( binding=7 column_major shared) uniform block{layout( column_major shared) uniform int aoeu}) 0:111 Constant: 0:111 0 (const uint) 0:112 imageAtomicCompSwap ( global int) 0:112 'iimg2D' (layout( r32i) uniform iimage2D) 0:112 Construct ivec2 ( temp 2-component vector of int) 0:112 'i' ( temp int) 0:112 'i' ( temp int) 0:112 'i' ( temp int) 0:112 'i' ( temp int) 0:113 imageAtomicAdd ( global uint) 0:113 'uimg2D' (layout( r32ui) uniform uimage2D) 0:113 Construct ivec2 ( temp 2-component vector of int) 0:113 'i' ( temp int) 0:113 'i' ( temp int) 0:113 Convert int to uint ( temp uint) 0:113 'i' ( temp int) 0:114 imageAtomicMin ( global int) 0:114 'iimg2Drgba' (layout( rgba32i) uniform iimage2D) 0:114 Construct ivec2 ( temp 2-component vector of int) 0:114 'i' ( temp int) 0:114 'i' ( temp int) 0:114 'i' ( temp int) 0:115 Constant: 0:115 0.000000 0:116 Sequence 0:116 move second child to first child ( temp 4-component vector of int) 0:116 'pos' ( temp 4-component vector of int) 0:116 imageLoad ( global 4-component vector of int) 0:116 'iimg2D' (layout( r32i) uniform iimage2D) 0:116 Construct ivec2 ( temp 2-component vector of int) 0:116 'i' ( temp int) 0:116 'i' ( temp int) 0:117 Sequence 0:117 move second child to first child ( temp 4-component vector of float) 0:117 'col' ( temp 4-component vector of float) 0:117 imageLoad ( global 4-component vector of float) 0:117 'img2DMS' ( uniform image2DMS) 0:117 Construct ivec2 ( temp 2-component vector of int) 0:117 'i' ( temp int) 0:117 'i' ( temp int) 0:117 'i' ( temp int) 0:118 imageStore ( global void) 0:118 'img2DMSWO' ( writeonly uniform image2DMS) 0:118 Construct ivec2 ( temp 2-component vector of int) 0:118 'i' ( temp int) 0:118 'i' ( temp int) 0:118 'i' ( temp int) 0:118 Constant: 0:118 0.000000 0:118 0.000000 0:118 0.000000 0:118 0.000000 0:119 imageLoad ( global 4-component vector of float) 0:119 'img2DMSWO' ( writeonly uniform image2DMS) 0:119 Construct ivec2 ( temp 2-component vector of int) 0:119 'i' ( temp int) 0:119 'i' ( temp int) 0:119 'i' ( temp int) 0:125 Function Definition: passr(iI21; ( global void) 0:125 Function Parameters: 0:125 'image' ( coherent readonly in iimage2D) 0:132 Function Definition: passrc( ( global void) 0:132 Function Parameters: 0:134 Sequence 0:134 Function Call: passr(iI21; ( global void) 0:134 'qualim1' (layout( r32i) coherent readonly uniform iimage2D) 0:135 Function Call: passr(iI21; ( global void) 0:135 'qualim2' (layout( r32i) coherent volatile readonly uniform iimage2D) 0:136 Function Call: passr(iI21; ( global void) 0:136 'iimg2D' (layout( r32i) uniform iimage2D) 0:153 Function Definition: qlod( ( global void) 0:153 Function Parameters: 0:? Sequence 0:157 'levels' ( temp int) 0:158 'levels' ( temp int) 0:? Linker Objects 0:? 'v2' ( smooth out 2-component vector of float) 0:? 'bad' ( in 10-element array of 4-component vector of float) 0:? 'badorder' ( in 4-component vector of float) 0:? 'badorder2' ( invariant smooth out 4-component vector of float) 0:? 'badorder4' ( centroid in 4-component vector of float) 0:? 'badorder3' ( flat out 4-component vector of float) 0:? 'rep' ( smooth flat out 4-component vector of float) 0:? 'rep2' ( centroid smooth sample out 4-component vector of float) 0:? 'rep3' ( in 4-component vector of float) 0:? 'anonconst' ( global int) 0:? 'aconst' ( const int) 0:? 5 (const int) 0:? 'a' ( const int) 0:? 5 (const int) 0:? 'b' ( temp int) 0:? 'cx' ( const float) 0:? 4.200000 0:? 'dx' ( const float) 0:? 4.200000 0:? 'boundInst' (layout( binding=3 column_major shared) uniform block{layout( column_major shared) uniform int aoeu}) 0:? 'anon@0' (layout( binding=7 column_major shared) uniform block{layout( column_major shared) uniform int aoeu}) 0:? 'anon@1' (layout( binding=1) in block{ in int aoeua}) 0:? 'anon@2' (layout( column_major shared) uniform block{layout( column_major shared) uniform int aooeu}) 0:? 'sampb1' (layout( binding=4) uniform sampler2D) 0:? 'sampb2' (layout( binding=5) uniform 10-element array of sampler2D) 0:? 'sampb3' (layout( binding=80) uniform sampler2D) 0:? 'sampb4' (layout( binding=31) uniform sampler2D) 0:? 'sampb5' (layout( binding=79) uniform 2-element array of sampler2D) 0:? 'anon@3' ( out block{ out 4-element array of float ClipDistance gl_ClipDistance}) 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'patchOut' ( smooth patch out 4-component vector of float) 0:? 'comma0' ( temp int) 0:? 'comma1' ( global 1-element array of int) 0:? 'iimg2D' (layout( r32i) uniform iimage2D) 0:? 'iimg2Drgba' (layout( rgba32i) uniform iimage2D) 0:? 'img2Drgba' (layout( rgba32f) uniform image2D) 0:? 'uimg2D' (layout( r32ui) uniform uimage2D) 0:? 'img2DMS' ( uniform image2DMS) 0:? 'img2DMSWO' ( writeonly uniform image2DMS) 0:? 'vol' ( volatile temp float) 0:? 'vol2' ( readonly temp int) 0:? 'qualim1' (layout( r32i) coherent readonly uniform iimage2D) 0:? 'qualim2' (layout( r32i) coherent volatile readonly uniform iimage2D) 0:? 'i1bad' (layout( rg8i) uniform uimage2D) 0:? 'i2bad' (layout( rgba32i) uniform image2D) 0:? 'i3bad' (layout( rgba32f) uniform uimage2D) 0:? 'i4bad' (layout( r8_snorm) uniform iimage2D) 0:? 'i5bad' (layout( rgba32ui) uniform iimage2D) 0:? 'i6bad' (layout( r8ui) uniform iimage2D) 0:? 'offcheckI' (layout( column_major shared) uniform block{layout( column_major shared offset=16) uniform int foo}) 0:? 'samp1D' ( uniform sampler1D) 0:? 'samp1Ds' ( uniform sampler1DShadow) 0:? 'badArray' (layout( binding=0) writeonly uniform unsized 1-element array of image1D) 0:? 'u_sampler0' (layout( binding=74) uniform 6-element array of sampler2D) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 420 ERROR: node is still EOpNull! 0:32 Function Definition: main( ( global void) 0:32 Function Parameters: 0:? Sequence 0:35 Test condition and select ( temp void) 0:35 Condition 0:35 Compare Equal ( temp bool) 0:35 'i' ( temp int) 0:35 Constant: 0:35 3 (const int) 0:35 true case 0:36 Sequence 0:36 move second child to first child ( temp int) 0:36 'j' ( temp int) 0:36 'i' ( temp int) 0:42 Loop with condition tested first 0:42 Loop Condition 0:42 Constant: 0:42 true (const bool) 0:42 No loop body 0:? Linker Objects 0:? 'v2' ( smooth out 2-component vector of float) 0:? 'bad' ( in 10-element array of 4-component vector of float) 0:? 'badorder' ( in 4-component vector of float) 0:? 'badorder2' ( invariant smooth out 4-component vector of float) 0:? 'badorder4' ( centroid in 4-component vector of float) 0:? 'badorder3' ( flat out 4-component vector of float) 0:? 'rep' ( smooth flat out 4-component vector of float) 0:? 'rep2' ( centroid smooth sample out 4-component vector of float) 0:? 'rep3' ( in 4-component vector of float) 0:? 'anonconst' ( global int) 0:? 'aconst' ( const int) 0:? 5 (const int) 0:? 'a' ( const int) 0:? 5 (const int) 0:? 'b' ( temp int) 0:? 'cx' ( const float) 0:? 4.200000 0:? 'dx' ( const float) 0:? 4.200000 0:? 'boundInst' (layout( binding=3 column_major shared) uniform block{layout( column_major shared) uniform int aoeu}) 0:? 'anon@0' (layout( binding=7 column_major shared) uniform block{layout( column_major shared) uniform int aoeu}) 0:? 'anon@1' (layout( binding=1) in block{ in int aoeua}) 0:? 'anon@2' (layout( column_major shared) uniform block{layout( column_major shared) uniform int aooeu}) 0:? 'sampb1' (layout( binding=4) uniform sampler2D) 0:? 'sampb2' (layout( binding=5) uniform 10-element array of sampler2D) 0:? 'sampb3' (layout( binding=80) uniform sampler2D) 0:? 'sampb4' (layout( binding=31) uniform sampler2D) 0:? 'sampb5' (layout( binding=79) uniform 2-element array of sampler2D) 0:? 'anon@3' ( out block{ out 4-element array of float ClipDistance gl_ClipDistance}) 0:? 'patchIn' ( patch in 4-component vector of float) 0:? 'patchOut' ( smooth patch out 4-component vector of float) 0:? 'comma0' ( temp int) 0:? 'comma1' ( global 1-element array of int) 0:? 'iimg2D' (layout( r32i) uniform iimage2D) 0:? 'iimg2Drgba' (layout( rgba32i) uniform iimage2D) 0:? 'img2Drgba' (layout( rgba32f) uniform image2D) 0:? 'uimg2D' (layout( r32ui) uniform uimage2D) 0:? 'img2DMS' ( uniform image2DMS) 0:? 'img2DMSWO' ( writeonly uniform image2DMS) 0:? 'vol' ( volatile temp float) 0:? 'vol2' ( readonly temp int) 0:? 'qualim1' (layout( r32i) coherent readonly uniform iimage2D) 0:? 'qualim2' (layout( r32i) coherent volatile readonly uniform iimage2D) 0:? 'i1bad' (layout( rg8i) uniform uimage2D) 0:? 'i2bad' (layout( rgba32i) uniform image2D) 0:? 'i3bad' (layout( rgba32f) uniform uimage2D) 0:? 'i4bad' (layout( r8_snorm) uniform iimage2D) 0:? 'i5bad' (layout( rgba32ui) uniform iimage2D) 0:? 'i6bad' (layout( r8ui) uniform iimage2D) 0:? 'offcheckI' (layout( column_major shared) uniform block{layout( column_major shared offset=16) uniform int foo}) 0:? 'samp1D' ( uniform sampler1D) 0:? 'samp1Ds' ( uniform sampler1DShadow) 0:? 'badArray' (layout( binding=0) writeonly uniform 1-element array of image1D) 0:? 'u_sampler0' (layout( binding=74) uniform 6-element array of sampler2D) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/420_size_gl_in.geom.out000066400000000000000000000055021506534232700226370ustar00rootroot00000000000000420_size_gl_in.geom ERROR: 0:19: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 1 compilation errors. No code generated. Shader version: 420 invocations = -1 max_vertices = -1 input primitive = triangles output primitive = none ERROR: node is still EOpNull! 0:11 Function Definition: foo( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 Constant: 0:13 3 (const int) 0:14 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:14 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:14 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 0 (const int) 0:15 Constant: 0:15 3 (const int) 0:16 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:16 indirect index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:16 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:16 'i' ( global int) 0:16 Constant: 0:16 0 (const int) 0:? Linker Objects 0:? 'i' ( global int) 0:? 'colorun' ( in 3-element array of 4-component vector of float) 0:? 'color3' ( in 3-element array of 4-component vector of float) 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) Linked geometry stage: ERROR: Linking geometry stage: Missing entry point: Each stage requires one entry point ERROR: Linking geometry stage: At least one shader must specify an output layout primitive ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value) Shader version: 420 invocations = 1 max_vertices = -1 input primitive = triangles output primitive = none ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'i' ( global int) 0:? 'colorun' ( in 3-element array of 4-component vector of float) 0:? 'color3' ( in 3-element array of 4-component vector of float) 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) glslang-16.0.0/Test/baseResults/430.comp.out000066400000000000000000000257121506534232700204520ustar00rootroot00000000000000430.comp ERROR: 0:4: 'local_size' : cannot change previously set size ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize ERROR: 0:43: 'in' : global storage input qualifier cannot be used in a compute shader ERROR: 0:43: 'location qualifier on input' : not supported in this stage: compute ERROR: 0:44: 'in' : global storage input qualifier cannot be used in a compute shader ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute shader ERROR: 0:48: 'shared block' : not supported for this version or the enabled extensions ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:49: 'shared' : initializer can only be a null initializer ('{}') ERROR: 0:52: 'local_size' : cannot change previously set size ERROR: 0:54: 'local_size' : can only apply to 'in' ERROR: 0:54: 'local_size' : can only apply to 'in' ERROR: 0:54: 'local_size' : can only apply to 'in' ERROR: 0:68: 'assign' : l-value required "ro" (can't modify a readonly buffer) ERROR: 0:80: '=' : cannot convert from ' temp double' to ' temp int' ERROR: 0:84: 'input block' : not supported in this stage: compute ERROR: 0:88: 'output block' : not supported in this stage: compute ERROR: 17 compilation errors. No code generated. Shader version: 430 local_size = (2, 1, 4096) ERROR: node is still EOpNull! 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:29 Sequence 0:29 Barrier ( global void) 0:30 MemoryBarrier ( global void) 0:31 MemoryBarrierAtomicCounter ( global void) 0:32 MemoryBarrierBuffer ( global void) 0:33 MemoryBarrierShared ( global void) 0:34 MemoryBarrierImage ( global void) 0:35 GroupMemoryBarrier ( global void) 0:36 move second child to first child ( temp int) 0:36 value: direct index for structure (layout( column_major shared) buffer int) 0:36 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int value, layout( column_major shared) buffer runtime-sized array of float values}) 0:36 Constant: 0:36 0 (const uint) 0:36 Convert float to int ( temp int) 0:36 indirect index (layout( column_major shared) temp float) 0:36 values: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:36 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int value, layout( column_major shared) buffer runtime-sized array of float values}) 0:36 Constant: 0:36 1 (const uint) 0:36 'gl_LocalInvocationIndex' ( in uint LocalInvocationIndex) 0:39 Test condition and select ( temp void) 0:39 Condition 0:39 Compare Greater Than ( temp bool) 0:39 'a' ( temp int) 0:39 Constant: 0:39 10 (const int) 0:39 true case 0:40 Barrier ( global void) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'fs' ( shared float) 0:49 Constant: 0:49 4.200000 0:66 Function Definition: foo( ( global void) 0:66 Function Parameters: 0:68 Sequence 0:68 move second child to first child ( temp float) 0:68 direct index (layout( column_major shared) readonly temp float) 0:68 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) 0:68 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 4.700000 0:69 array length ( temp int) 0:69 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) 0:69 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) 0:69 Constant: 0:69 1 (const int) 0:70 Barrier ( global void) 0:75 Function Definition: fooaoeu( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 Sequence 0:76 move second child to first child ( temp 2-component vector of int) 0:76 'storePos' ( temp 2-component vector of int) 0:76 Convert uint to int ( temp 2-component vector of int) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 'gl_GlobalInvocationID' ( in 3-component vector of uint GlobalInvocationID) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:77 Sequence 0:77 move second child to first child ( temp double) 0:77 'localCoef' ( temp double) 0:77 Convert float to double ( temp double) 0:77 length ( global float) 0:77 divide ( temp 2-component vector of float) 0:77 Convert int to float ( temp 2-component vector of float) 0:77 subtract ( temp 2-component vector of int) 0:77 Convert uint to int ( temp 2-component vector of int) 0:77 vector swizzle ( temp 2-component vector of uint) 0:77 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 8 (const int) 0:77 Constant: 0:77 8.000000 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of double) 0:78 'aa' ( temp 4-component vector of double) 0:78 Constant: 0:78 0.400000 0:78 0.200000 0:78 0.300000 0:78 0.400000 0:79 Sequence 0:79 move second child to first child ( temp double) 0:79 'globalCoef' ( temp double) 0:79 Constant: 0:79 1.000000 0:81 Sequence 0:81 move second child to first child ( temp double) 0:81 'di' ( temp double) 0:81 Convert int to double ( temp double) 0:81 'i' ( temp int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) 0:? 1 (const uint) 0:? 4096 (const uint) 0:? 'total' ( const int) 0:? 66592 (const int) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int value, layout( column_major shared) buffer runtime-sized array of float values}) 0:? 'invalid' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 1-element array of float values, layout( column_major shared) buffer int value}) 0:? 'v3' (layout( location=2) in 3-component vector of float) 0:? 'f' ( in float) 0:? 'fo' ( out float) 0:? 's' ( shared 4-component vector of float) 0:? 'sl' (layout( location=2) shared 4-component vector of float) 0:? 'fs' ( shared float) 0:? 'arrX' ( global 2-element array of int) 0:? 'arrY' ( global 1-element array of int) 0:? 'arrZ' ( global 4096-element array of int) 0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) 0:? 'roll' ( uniform double) 0:? 'destTex' ( writeonly uniform image2D) 0:? 'inbi' ( in block{ in int a}) 0:? 'outbi' ( out block{ out int a}) Linked compute stage: Shader version: 430 local_size = (2, 1, 4096) ERROR: node is still EOpNull! 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:29 Sequence 0:29 Barrier ( global void) 0:30 MemoryBarrier ( global void) 0:31 MemoryBarrierAtomicCounter ( global void) 0:32 MemoryBarrierBuffer ( global void) 0:33 MemoryBarrierShared ( global void) 0:34 MemoryBarrierImage ( global void) 0:35 GroupMemoryBarrier ( global void) 0:36 move second child to first child ( temp int) 0:36 value: direct index for structure (layout( column_major shared) buffer int) 0:36 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int value, layout( column_major shared) buffer runtime-sized array of float values}) 0:36 Constant: 0:36 0 (const uint) 0:36 Convert float to int ( temp int) 0:36 indirect index (layout( column_major shared) temp float) 0:36 values: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:36 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int value, layout( column_major shared) buffer runtime-sized array of float values}) 0:36 Constant: 0:36 1 (const uint) 0:36 'gl_LocalInvocationIndex' ( in uint LocalInvocationIndex) 0:39 Test condition and select ( temp void) 0:39 Condition 0:39 Compare Greater Than ( temp bool) 0:39 'a' ( temp int) 0:39 Constant: 0:39 10 (const int) 0:39 true case 0:40 Barrier ( global void) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'fs' ( shared float) 0:49 Constant: 0:49 4.200000 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) 0:? 1 (const uint) 0:? 4096 (const uint) 0:? 'total' ( const int) 0:? 66592 (const int) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int value, layout( column_major shared) buffer runtime-sized array of float values}) 0:? 'invalid' (layout( column_major shared) buffer block{layout( column_major shared) buffer 1-element array of float values, layout( column_major shared) buffer int value}) 0:? 'v3' (layout( location=2) in 3-component vector of float) 0:? 'f' ( in float) 0:? 'fo' ( out float) 0:? 's' ( shared 4-component vector of float) 0:? 'sl' (layout( location=2) shared 4-component vector of float) 0:? 'fs' ( shared float) 0:? 'arrX' ( global 2-element array of int) 0:? 'arrY' ( global 1-element array of int) 0:? 'arrZ' ( global 4096-element array of int) 0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) 0:? 'roll' ( uniform double) 0:? 'destTex' ( writeonly uniform image2D) 0:? 'inbi' ( in block{ in int a}) 0:? 'outbi' ( out block{ out int a}) glslang-16.0.0/Test/baseResults/430.vert.out000066400000000000000000000533411506534232700204730ustar00rootroot00000000000000430.vert ERROR: 0:3: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:7: 'input block' : not supported in this stage: vertex ERROR: 0:7: 'location qualifier on in/out block' : not supported for this version or the enabled extensions ERROR: 0:8: 'location qualifier on in/out block' : not supported for this version or the enabled extensions ERROR: 0:23: 'invariant' : can only apply to an output ERROR: 0:21: 'g' : cannot use storage or interpolation qualifiers on structure members ERROR: 0:22: 'h' : cannot use storage or interpolation qualifiers on structure members ERROR: 0:23: 'i' : cannot use invariant qualifier on structure members ERROR: 0:24: 'j' : cannot use memory qualifiers on structure members ERROR: 0:25: 'm3' : cannot use layout qualifiers on structure members ERROR: 0:28: '' : cannot use invariant qualifier on a function parameter ERROR: 0:30: '' : cannot use layout qualifiers on a function parameter ERROR: 0:31: '' : cannot use auxiliary or interpolation qualifiers on a function parameter ERROR: 0:42: 'location' : overlapping use of location 53 ERROR: 0:47: 'gl_ClipDistance array size' : must be less than or equal to gl_MaxClipDistances (8) ERROR: 0:51: 'start' : undeclared identifier ERROR: 0:51: '' : constant expression required ERROR: 0:51: 'layout-id value' : scalar integer expression required ERROR: 0:51: 'location' : needs a literal integer ERROR: 0:53: 'input block' : not supported in this stage: vertex ERROR: 0:54: 'location on block member' : not supported for this version or the enabled extensions ERROR: 0:57: 'input block' : not supported in this stage: vertex ERROR: 0:58: 'location on block member' : not supported for this version or the enabled extensions ERROR: 0:59: 'location on block member' : not supported for this version or the enabled extensions ERROR: 0:62: 'uniform buffer-member align' : not supported for this version or the enabled extensions ERROR: 0:64: 'uniform buffer-member align' : not supported for this version or the enabled extensions ERROR: 0:65: 'uniform buffer-member align' : not supported for this version or the enabled extensions ERROR: 0:65: '"offset" on block member' : not supported for this version or the enabled extensions ERROR: 0:66: '"offset" on block member' : not supported for this version or the enabled extensions ERROR: 0:64: 'align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:65: 'offset/align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:66: 'offset/align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:71: '"offset" on block member' : not supported for this version or the enabled extensions ERROR: 0:74: 'gl_MaxTransformFeedbackBuffers' : required extension not requested: GL_ARB_enhanced_layouts ERROR: 0:75: 'gl_MaxTransformFeedbackInterleavedComponents' : required extension not requested: GL_ARB_enhanced_layouts ERROR: 0:78: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:81: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:81: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:83: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:83: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:83: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:84: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:84: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:86: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:86: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:86: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:92: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:93: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:93: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:93: 'transform feedback qualifier' : not supported for this version or the enabled extensions ERROR: 0:117: 'input block' : not supported in this stage: vertex ERROR: 0:117: 'in' : cannot contain bool ERROR: 0:123: 'input block' : not supported in this stage: vertex ERROR: 0:146: 'shared' : not supported in this stage: vertex ERROR: 0:150: 'barrier' : no matching overloaded function found ERROR: 0:154: 'memoryBarrierShared' : no matching overloaded function found ERROR: 0:156: 'groupMemoryBarrier' : no matching overloaded function found ERROR: 0:159: 'buffer' : buffers can be declared only as blocks ERROR: 0:168: 'textureSamples and imageSamples' : not supported for this version or the enabled extensions ERROR: 0:169: 'textureSamples and imageSamples' : not supported for this version or the enabled extensions ERROR: 0:170: 'textureSamples and imageSamples' : not supported for this version or the enabled extensions ERROR: 0:171: 'textureSamples and imageSamples' : not supported for this version or the enabled extensions ERROR: 0:221: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:221: 'assign' : cannot convert from ' const float' to ' temp int' ERROR: 0:222: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:222: 'assign' : cannot convert from ' const float' to ' temp int' ERROR: 66 compilation errors. No code generated. Shader version: 430 Requested GL_ARB_enhanced_layouts Requested GL_ARB_shader_texture_image_samples in xfb mode ERROR: node is still EOpNull! 0:14 Function Definition: foo( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 direct index ( temp float ClipDistance) 0:16 gl_ClipDistance: direct index for structure ( out 17-element array of float ClipDistance) 0:16 'anon@0' ( out block{ out 17-element array of float ClipDistance gl_ClipDistance}) 0:16 Constant: 0:16 2 (const uint) 0:16 Constant: 0:16 2 (const int) 0:16 Constant: 0:16 3.700000 0:31 Function Definition: foo3(vf4;vf3;vf2;vf3; ( global void) 0:31 Function Parameters: 0:31 'v4' ( in 4-component vector of float) 0:31 'v3' ( volatile in 3-component vector of float) 0:31 'v2' ( in 2-component vector of float) 0:31 'cv3' ( in 3-component vector of float) 0:148 Function Definition: fooBarrier( ( global void) 0:148 Function Parameters: 0:150 Sequence 0:150 Constant: 0:150 0.000000 0:151 MemoryBarrier ( global void) 0:152 MemoryBarrierAtomicCounter ( global void) 0:153 MemoryBarrierBuffer ( global void) 0:154 Constant: 0:154 0.000000 0:155 MemoryBarrierImage ( global void) 0:156 Constant: 0:156 0.000000 0:166 Function Definition: fooq( ( global void) 0:166 Function Parameters: 0:168 Sequence 0:168 Sequence 0:168 move second child to first child ( temp int) 0:168 's' ( temp int) 0:168 textureSamples ( global int) 0:168 's2dms' ( uniform sampler2DMS) 0:169 add second child into first child ( temp int) 0:169 's' ( temp int) 0:169 textureSamples ( global int) 0:169 'us2dmsa' ( uniform usampler2DMSArray) 0:170 add second child into first child ( temp int) 0:170 's' ( temp int) 0:170 imageQuerySamples ( global int) 0:170 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:171 add second child into first child ( temp int) 0:171 's' ( temp int) 0:171 imageQuerySamples ( global int) 0:171 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) 0:176 Function Definition: fooq2( ( global void) 0:176 Function Parameters: 0:178 Sequence 0:178 Sequence 0:178 move second child to first child ( temp int) 0:178 's' ( temp int) 0:178 textureSamples ( global int) 0:178 's2dms' ( uniform sampler2DMS) 0:179 add second child into first child ( temp int) 0:179 's' ( temp int) 0:179 textureSamples ( global int) 0:179 'us2dmsa' ( uniform usampler2DMSArray) 0:180 add second child into first child ( temp int) 0:180 's' ( temp int) 0:180 imageQuerySamples ( global int) 0:180 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:181 add second child into first child ( temp int) 0:181 's' ( temp int) 0:181 imageQuerySamples ( global int) 0:181 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) 0:202 Function Definition: qlod( ( global void) 0:202 Function Parameters: 0:? Sequence 0:206 move second child to first child ( temp int) 0:206 'levels' ( temp int) 0:206 textureQueryLevels ( global int) 0:206 'samp1D' ( uniform sampler1D) 0:207 move second child to first child ( temp int) 0:207 'levels' ( temp int) 0:207 textureQueryLevels ( global int) 0:207 'usamp2D' ( uniform usampler2D) 0:208 move second child to first child ( temp int) 0:208 'levels' ( temp int) 0:208 textureQueryLevels ( global int) 0:208 'isamp3D' ( uniform isampler3D) 0:209 move second child to first child ( temp int) 0:209 'levels' ( temp int) 0:209 textureQueryLevels ( global int) 0:209 'isampCube' ( uniform isamplerCube) 0:210 move second child to first child ( temp int) 0:210 'levels' ( temp int) 0:210 textureQueryLevels ( global int) 0:210 'isamp1DA' ( uniform isampler1DArray) 0:211 move second child to first child ( temp int) 0:211 'levels' ( temp int) 0:211 textureQueryLevels ( global int) 0:211 'samp2DA' ( uniform sampler2DArray) 0:212 move second child to first child ( temp int) 0:212 'levels' ( temp int) 0:212 textureQueryLevels ( global int) 0:212 'usampCubeA' ( uniform usamplerCubeArray) 0:214 move second child to first child ( temp int) 0:214 'levels' ( temp int) 0:214 textureQueryLevels ( global int) 0:214 'samp1Ds' ( uniform sampler1DShadow) 0:215 move second child to first child ( temp int) 0:215 'levels' ( temp int) 0:215 textureQueryLevels ( global int) 0:215 'samp2Ds' ( uniform sampler2DShadow) 0:216 move second child to first child ( temp int) 0:216 'levels' ( temp int) 0:216 textureQueryLevels ( global int) 0:216 'sampCubes' ( uniform samplerCubeShadow) 0:217 move second child to first child ( temp int) 0:217 'levels' ( temp int) 0:217 textureQueryLevels ( global int) 0:217 'samp1DAs' ( uniform sampler1DArrayShadow) 0:218 move second child to first child ( temp int) 0:218 'levels' ( temp int) 0:218 textureQueryLevels ( global int) 0:218 'samp2DAs' ( uniform sampler2DArrayShadow) 0:219 move second child to first child ( temp int) 0:219 'levels' ( temp int) 0:219 textureQueryLevels ( global int) 0:219 'sampCubeAs' ( uniform samplerCubeArrayShadow) 0:221 'levels' ( temp int) 0:222 'levels' ( temp int) 0:? Linker Objects 0:? 'v4' (layout( location=3) temp 4-component vector of float) 0:? 'uv4' (layout( location=4) uniform 4-component vector of float) 0:? 'b1' (layout( location=2) in block{ in 4-component vector of float v}) 0:? 'b2' (layout( location=2) out block{ out 4-component vector of float v}) 0:? 'anon@0' ( out block{ out 17-element array of float ClipDistance gl_ClipDistance}) 0:? 'cs' (layout( location=10) smooth out 2-element array of structure{ global 7-element array of 3X2 matrix of float m, global float f}) 0:? 'cf' (layout( location=54) smooth out float) 0:? 'cg' (layout( location=53) smooth out float) 0:? 'alias1' (layout( location=10) in 4-component vector of float) 0:? 'alias2' (layout( location=10) in 4-component vector of float) 0:? 'v6e' (layout( location=0) in 4-component vector of float) 0:? 'ininst2e' ( in block{layout( location=25) in float f2}) 0:? 'in4e' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 'inst4e' (layout( column_major std140 align=16) uniform block{layout( column_major std140 offset=0 align=16) uniform int a}) 0:? 'inst9e' (layout( column_major shared align=32) uniform block{layout( column_major shared offset=12 align=4) uniform float f, layout( column_major shared offset=20) uniform float g}) 0:? 'spinste' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a, layout( column_major std140 offset=32) uniform 3-component vector of float b}) 0:? 'aconste' ( global 4-element array of int) 0:? 'bconste' ( global 64-element array of int) 0:? 'bbinst2' ( out block{layout( xfb_buffer=0 xfb_offset=64) out 4-component vector of float bbv}) 0:? 'bge' (layout( xfb_buffer=2 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float) 0:? 'bhe' (layout( xfb_buffer=3 xfb_offset=32 xfb_stride=64) smooth out 4-component vector of float) 0:? 'bbinst4e' (layout( xfb_stride=80) out block{layout( xfb_buffer=2 xfb_offset=16) out 4-component vector of float bbv1, layout( xfb_buffer=2 xfb_offset=32) out 4-component vector of float bbv2}) 0:? 'bbinst5e' ( out block{layout( xfb_buffer=3 xfb_offset=0) out 4-component vector of float bbv1, layout( xfb_buffer=3 xfb_offset=48 xfb_stride=64) out 4-component vector of float bbv2}) 0:? 'inst4' (layout( column_major std140 align=16) uniform block{layout( column_major std140 offset=0 align=16) uniform int a}) 0:? 'inst9' (layout( column_major std430 align=32) uniform block{layout( column_major std430 offset=12 align=4) uniform float f, layout( column_major std430 offset=20 align=32) uniform float g}) 0:? 'spinst' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a, layout( column_major std140 offset=32) uniform 3-component vector of float b}) 0:? 'aconst' ( global 4-element array of int) 0:? 'bconst' ( global 64-element array of int) 0:? 'start2' ( const int) 0:? 5 (const int) 0:? 'v6' (layout( location=19) in 4-component vector of float) 0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2}) 0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 'bbinst2g' ( out block{layout( xfb_buffer=3 xfb_offset=64) out 4-component vector of float bbv}) 0:? 'bg' (layout( xfb_buffer=1 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float) 0:? 'bh' (layout( xfb_buffer=1 xfb_offset=32 xfb_stride=80) smooth out 4-component vector of float) 0:? 'bbinst4' (layout( xfb_stride=80) out block{layout( xfb_buffer=1 xfb_offset=16) out 4-component vector of float bbv1}) 0:? 'bbinst5' ( out block{layout( xfb_buffer=1 xfb_offset=0) out 4-component vector of float bbv1, layout( xfb_buffer=1 xfb_offset=64 xfb_stride=80) out 4-component vector of float bbv2}) 0:? 'sharedv' ( shared 4-component vector of float) 0:? 'v' ( buffer 4-component vector of float) 0:? 's2dms' ( uniform sampler2DMS) 0:? 'us2dmsa' ( uniform usampler2DMSArray) 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) 0:? 'samp1D' ( uniform sampler1D) 0:? 'usamp2D' ( uniform usampler2D) 0:? 'isamp3D' ( uniform isampler3D) 0:? 'isampCube' ( uniform isamplerCube) 0:? 'isamp1DA' ( uniform isampler1DArray) 0:? 'samp2DA' ( uniform sampler2DArray) 0:? 'usampCubeA' ( uniform usamplerCubeArray) 0:? 'samp1Ds' ( uniform sampler1DShadow) 0:? 'samp2Ds' ( uniform sampler2DShadow) 0:? 'sampCubes' ( uniform samplerCubeShadow) 0:? 'samp1DAs' ( uniform sampler1DArrayShadow) 0:? 'samp2DAs' ( uniform sampler2DArrayShadow) 0:? 'sampCubeAs' ( uniform samplerCubeArrayShadow) 0:? 'sampBuf' ( uniform samplerBuffer) 0:? 'sampRect' ( uniform sampler2DRect) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point ERROR: Linking vertex stage: xfb_stride is too small to hold all buffer entries: ERROR: xfb_buffer 3, xfb_stride 64, minimum stride needed: 80 Shader version: 430 Requested GL_ARB_enhanced_layouts Requested GL_ARB_shader_texture_image_samples in xfb mode ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'v4' (layout( location=3) temp 4-component vector of float) 0:? 'uv4' (layout( location=4) uniform 4-component vector of float) 0:? 'b1' (layout( location=2) in block{ in 4-component vector of float v}) 0:? 'b2' (layout( location=2) out block{ out 4-component vector of float v}) 0:? 'anon@0' ( out block{ out 17-element array of float ClipDistance gl_ClipDistance}) 0:? 'cs' (layout( location=10) smooth out 2-element array of structure{ global 7-element array of 3X2 matrix of float m, global float f}) 0:? 'cf' (layout( location=54) smooth out float) 0:? 'cg' (layout( location=53) smooth out float) 0:? 'alias1' (layout( location=10) in 4-component vector of float) 0:? 'alias2' (layout( location=10) in 4-component vector of float) 0:? 'v6e' (layout( location=0) in 4-component vector of float) 0:? 'ininst2e' ( in block{layout( location=25) in float f2}) 0:? 'in4e' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 'inst4e' (layout( column_major std140 align=16) uniform block{layout( column_major std140 offset=0 align=16) uniform int a}) 0:? 'inst9e' (layout( column_major shared align=32) uniform block{layout( column_major shared offset=12 align=4) uniform float f, layout( column_major shared offset=20) uniform float g}) 0:? 'spinste' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a, layout( column_major std140 offset=32) uniform 3-component vector of float b}) 0:? 'aconste' ( global 4-element array of int) 0:? 'bconste' ( global 64-element array of int) 0:? 'bbinst2' ( out block{layout( xfb_buffer=0 xfb_offset=64) out 4-component vector of float bbv}) 0:? 'bge' (layout( xfb_buffer=2 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float) 0:? 'bhe' (layout( xfb_buffer=3 xfb_offset=32 xfb_stride=64) smooth out 4-component vector of float) 0:? 'bbinst4e' (layout( xfb_stride=80) out block{layout( xfb_buffer=2 xfb_offset=16) out 4-component vector of float bbv1, layout( xfb_buffer=2 xfb_offset=32) out 4-component vector of float bbv2}) 0:? 'bbinst5e' ( out block{layout( xfb_buffer=3 xfb_offset=0) out 4-component vector of float bbv1, layout( xfb_buffer=3 xfb_offset=48 xfb_stride=64) out 4-component vector of float bbv2}) 0:? 'inst4' (layout( column_major std140 align=16) uniform block{layout( column_major std140 offset=0 align=16) uniform int a}) 0:? 'inst9' (layout( column_major std430 align=32) uniform block{layout( column_major std430 offset=12 align=4) uniform float f, layout( column_major std430 offset=20 align=32) uniform float g}) 0:? 'spinst' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a, layout( column_major std140 offset=32) uniform 3-component vector of float b}) 0:? 'aconst' ( global 4-element array of int) 0:? 'bconst' ( global 64-element array of int) 0:? 'start2' ( const int) 0:? 5 (const int) 0:? 'v6' (layout( location=19) in 4-component vector of float) 0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2}) 0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 'bbinst2g' ( out block{layout( xfb_buffer=3 xfb_offset=64) out 4-component vector of float bbv}) 0:? 'bg' (layout( xfb_buffer=1 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float) 0:? 'bh' (layout( xfb_buffer=1 xfb_offset=32 xfb_stride=80) smooth out 4-component vector of float) 0:? 'bbinst4' (layout( xfb_stride=80) out block{layout( xfb_buffer=1 xfb_offset=16) out 4-component vector of float bbv1}) 0:? 'bbinst5' ( out block{layout( xfb_buffer=1 xfb_offset=0) out 4-component vector of float bbv1, layout( xfb_buffer=1 xfb_offset=64 xfb_stride=80) out 4-component vector of float bbv2}) 0:? 'sharedv' ( shared 4-component vector of float) 0:? 'v' ( buffer 4-component vector of float) 0:? 's2dms' ( uniform sampler2DMS) 0:? 'us2dmsa' ( uniform usampler2DMSArray) 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) 0:? 'samp1D' ( uniform sampler1D) 0:? 'usamp2D' ( uniform usampler2D) 0:? 'isamp3D' ( uniform isampler3D) 0:? 'isampCube' ( uniform isamplerCube) 0:? 'isamp1DA' ( uniform isampler1DArray) 0:? 'samp2DA' ( uniform sampler2DArray) 0:? 'usampCubeA' ( uniform usamplerCubeArray) 0:? 'samp1Ds' ( uniform sampler1DShadow) 0:? 'samp2Ds' ( uniform sampler2DShadow) 0:? 'sampCubes' ( uniform samplerCubeShadow) 0:? 'samp1DAs' ( uniform sampler1DArrayShadow) 0:? 'samp2DAs' ( uniform sampler2DArrayShadow) 0:? 'sampCubeAs' ( uniform samplerCubeArrayShadow) 0:? 'sampBuf' ( uniform samplerBuffer) 0:? 'sampRect' ( uniform sampler2DRect) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/430AofA.frag.out000066400000000000000000000720061506534232700211600ustar00rootroot00000000000000430AofA.frag ERROR: 0:6: '[]' : only outermost dimension of an array of arrays can be implicitly sized ERROR: 0:14: 'constructor' : constructing non-array constituent from array argument ERROR: 0:15: 'constructor' : array constructor argument not correct type to construct array element ERROR: 0:28: '[' : array index out of range '4' ERROR: 0:56: 'constructor' : cannot convert parameter 2 from ' const 3-element array of 4-component vector of float' to ' temp 2-element array of 4-component vector of float' ERROR: 0:60: 'constructor' : cannot convert parameter 2 from ' const 2-element array of 4-component vector of float' to ' temp 3-element array of 4-component vector of float' ERROR: 0:64: '=' : cannot convert from ' const 3-element array of 2-element array of 4-component vector of float' to ' temp 4-element array of 2-element array of 4-component vector of float' ERROR: 0:70: 'assign' : cannot convert from ' global 4-element array of 7-element array of float' to ' global 5-element array of 7-element array of float' ERROR: 0:71: 'assign' : cannot convert from ' global 4-element array of 7-element array of float' to ' global unsized 1-element array of 7-element array of float' ERROR: 0:73: 'foo' : no matching overloaded function found ERROR: 0:78: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global 4-element array of 7-element array of float' and a right operand of type ' global 5-element array of 7-element array of float' (or there is no acceptable conversion) ERROR: 0:84: '[' : array index out of range '5' ERROR: 0:91: 'length' : array must be declared with a size before using this method ERROR: 0:93: 'length' : array must be declared with a size before using this method ERROR: 0:98: 'length' : does not operate on this type: temp float ERROR: 0:98: '' : function call, method, or subroutine call expected ERROR: 0:98: '' : no matching overloaded function found ERROR: 0:101: 'resize2' : redeclaration of array with a different array dimensions or sizes ERROR: 0:104: 'resize3' : redeclaration of array with a different array dimensions or sizes ERROR: 0:107: 'resize4' : redeclaration of array with a different element type ERROR: 20 compilation errors. No code generated. Shader version: 430 ERROR: node is still EOpNull! 0:10 Function Definition: foo(f1[5][7]; ( global 4-element array of 7-element array of float) 0:10 Function Parameters: 0:10 'a' ( in 5-element array of 7-element array of float) 0:? Sequence 0:13 move second child to first child ( temp 7-element array of float) 0:13 'r' ( temp 7-element array of float) 0:13 direct index ( temp 7-element array of float) 0:13 'a' ( in 5-element array of 7-element array of float) 0:13 Constant: 0:13 2 (const int) 0:14 Constant: 0:14 0.000000 0:15 Constant: 0:15 0.000000 0:16 Branch: Return with expression 0:16 Construct float ( temp 4-element array of 7-element array of float) 0:16 direct index ( temp 7-element array of float) 0:16 'a' ( in 5-element array of 7-element array of float) 0:16 Constant: 0:16 0 (const int) 0:16 direct index ( temp 7-element array of float) 0:16 'a' ( in 5-element array of 7-element array of float) 0:16 Constant: 0:16 1 (const int) 0:16 'r' ( temp 7-element array of float) 0:16 direct index ( temp 7-element array of float) 0:16 'a' ( in 5-element array of 7-element array of float) 0:16 Constant: 0:16 3 (const int) 0:17 Branch: Return with expression 0:17 Construct float ( temp 4-element array of 7-element array of float) 0:17 direct index ( temp 7-element array of float) 0:17 'a' ( in 5-element array of 7-element array of float) 0:17 Constant: 0:17 0 (const int) 0:17 direct index ( temp 7-element array of float) 0:17 'a' ( in 5-element array of 7-element array of float) 0:17 Constant: 0:17 1 (const int) 0:17 'r' ( temp 7-element array of float) 0:17 direct index ( temp 7-element array of float) 0:17 'a' ( in 5-element array of 7-element array of float) 0:17 Constant: 0:17 3 (const int) 0:18 Branch: Return with expression 0:18 Construct float ( temp 4-element array of 7-element array of float) 0:18 direct index ( temp 7-element array of float) 0:18 'a' ( in 5-element array of 7-element array of float) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp 7-element array of float) 0:18 'a' ( in 5-element array of 7-element array of float) 0:18 Constant: 0:18 1 (const int) 0:18 direct index ( temp 7-element array of float) 0:18 'a' ( in 5-element array of 7-element array of float) 0:18 Constant: 0:18 2 (const int) 0:18 direct index ( temp 7-element array of float) 0:18 'a' ( in 5-element array of 7-element array of float) 0:18 Constant: 0:18 3 (const int) 0:21 Function Definition: bar(f1[5][7]; ( global void) 0:21 Function Parameters: 0:21 '' ( in 5-element array of 7-element array of float) 0:23 Function Definition: main( ( global void) 0:23 Function Parameters: 0:? Sequence 0:? Sequence 0:28 move second child to first child ( temp float) 0:28 direct index ( temp float) 0:28 direct index ( temp 2-element array of float) 0:28 direct index ( temp 4-element array of 2-element array of float) 0:28 'gu' ( temp 3-element array of 4-element array of 2-element array of float) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 4 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 4.000000 0:30 Sequence 0:30 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:30 'ca4' ( temp 3-element array of 2-element array of 4-component vector of float) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:33 Sequence 0:33 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:33 'caim' ( temp 3-element array of 2-element array of 4-component vector of float) 0:35 Constant: 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:36 Sequence 0:36 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:36 'caim2' ( temp 3-element array of 2-element array of 4-component vector of float) 0:38 Constant: 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:39 Sequence 0:39 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:39 'caim3' ( temp 3-element array of 2-element array of 4-component vector of float) 0:41 Constant: 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:43 Sequence 0:43 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:43 'a4' ( temp 3-element array of 2-element array of 4-component vector of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:46 Sequence 0:46 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:46 'aim' ( temp 3-element array of 2-element array of 4-component vector of float) 0:46 Constant: 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:49 Sequence 0:49 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:49 'aim2' ( temp 3-element array of 2-element array of 4-component vector of float) 0:49 Constant: 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:52 Sequence 0:52 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:52 'aim3' ( temp 3-element array of 2-element array of 4-component vector of float) 0:52 Constant: 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:69 move second child to first child ( temp 4-element array of 7-element array of float) 0:69 'g4' ( global 4-element array of 7-element array of float) 0:69 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of float) 0:69 'g5' ( global 5-element array of 7-element array of float) 0:70 'g5' ( global 5-element array of 7-element array of float) 0:71 'gu' ( global unsized 1-element array of 7-element array of float) 0:73 Constant: 0:73 0.000000 0:74 Function Call: bar(f1[5][7]; ( global void) 0:74 'g5' ( global 5-element array of 7-element array of float) 0:76 Test condition and select ( temp void) 0:76 Condition 0:76 Compare Equal ( temp bool) 0:76 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of float) 0:76 'g5' ( global 5-element array of 7-element array of float) 0:76 'g4' ( global 4-element array of 7-element array of float) 0:76 true case is null 0:78 Test condition and select ( temp void) 0:78 Condition 0:78 Constant: 0:78 false (const bool) 0:78 true case is null 0:82 move second child to first child ( temp float) 0:82 direct index ( temp float) 0:82 direct index ( temp 7-element array of float) 0:82 'u' ( temp 5-element array of 7-element array of float) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 3.000000 0:84 move second child to first child ( temp float) 0:84 direct index ( temp float) 0:84 direct index ( temp 7-element array of float) 0:84 'u' ( temp 5-element array of 7-element array of float) 0:84 Constant: 0:84 5 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Constant: 0:84 5.000000 0:85 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of float) 0:85 'u' ( temp 5-element array of 7-element array of float) 0:88 Function Definition: foo3( ( global void) 0:88 Function Parameters: 0:? Sequence 0:91 Constant: 0:91 1 (const int) 0:92 move second child to first child ( temp float) 0:92 direct index ( temp float) 0:92 direct index ( temp 7-element array of float) 0:92 direct index ( temp 5-element array of 7-element array of float) 0:92 'resize1' ( temp 3-element array of 5-element array of 7-element array of float) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 4 (const int) 0:92 Constant: 0:92 5 (const int) 0:92 Constant: 0:92 2.000000 0:93 Constant: 0:93 1 (const int) 0:95 Constant: 0:95 3 (const int) 0:96 Constant: 0:96 5 (const int) 0:97 Constant: 0:97 7 (const int) 0:98 Constant: 0:98 0.000000 0:? Linker Objects 0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of float) 0:? 'gu' ( global unsized 1-element array of 7-element array of float) 0:? 'gimp' ( global unsized 1-element array of 1-element array of float) 0:? 'g4' ( global 4-element array of 7-element array of float) 0:? 'g5' ( global 5-element array of 7-element array of float) Linked fragment stage: Shader version: 430 ERROR: node is still EOpNull! 0:10 Function Definition: foo(f1[5][7]; ( global 4-element array of 7-element array of float) 0:10 Function Parameters: 0:10 'a' ( in 5-element array of 7-element array of float) 0:? Sequence 0:13 move second child to first child ( temp 7-element array of float) 0:13 'r' ( temp 7-element array of float) 0:13 direct index ( temp 7-element array of float) 0:13 'a' ( in 5-element array of 7-element array of float) 0:13 Constant: 0:13 2 (const int) 0:14 Constant: 0:14 0.000000 0:15 Constant: 0:15 0.000000 0:16 Branch: Return with expression 0:16 Construct float ( temp 4-element array of 7-element array of float) 0:16 direct index ( temp 7-element array of float) 0:16 'a' ( in 5-element array of 7-element array of float) 0:16 Constant: 0:16 0 (const int) 0:16 direct index ( temp 7-element array of float) 0:16 'a' ( in 5-element array of 7-element array of float) 0:16 Constant: 0:16 1 (const int) 0:16 'r' ( temp 7-element array of float) 0:16 direct index ( temp 7-element array of float) 0:16 'a' ( in 5-element array of 7-element array of float) 0:16 Constant: 0:16 3 (const int) 0:17 Branch: Return with expression 0:17 Construct float ( temp 4-element array of 7-element array of float) 0:17 direct index ( temp 7-element array of float) 0:17 'a' ( in 5-element array of 7-element array of float) 0:17 Constant: 0:17 0 (const int) 0:17 direct index ( temp 7-element array of float) 0:17 'a' ( in 5-element array of 7-element array of float) 0:17 Constant: 0:17 1 (const int) 0:17 'r' ( temp 7-element array of float) 0:17 direct index ( temp 7-element array of float) 0:17 'a' ( in 5-element array of 7-element array of float) 0:17 Constant: 0:17 3 (const int) 0:18 Branch: Return with expression 0:18 Construct float ( temp 4-element array of 7-element array of float) 0:18 direct index ( temp 7-element array of float) 0:18 'a' ( in 5-element array of 7-element array of float) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp 7-element array of float) 0:18 'a' ( in 5-element array of 7-element array of float) 0:18 Constant: 0:18 1 (const int) 0:18 direct index ( temp 7-element array of float) 0:18 'a' ( in 5-element array of 7-element array of float) 0:18 Constant: 0:18 2 (const int) 0:18 direct index ( temp 7-element array of float) 0:18 'a' ( in 5-element array of 7-element array of float) 0:18 Constant: 0:18 3 (const int) 0:21 Function Definition: bar(f1[5][7]; ( global void) 0:21 Function Parameters: 0:21 '' ( in 5-element array of 7-element array of float) 0:23 Function Definition: main( ( global void) 0:23 Function Parameters: 0:? Sequence 0:? Sequence 0:28 move second child to first child ( temp float) 0:28 direct index ( temp float) 0:28 direct index ( temp 2-element array of float) 0:28 direct index ( temp 4-element array of 2-element array of float) 0:28 'gu' ( temp 3-element array of 4-element array of 2-element array of float) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 4 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 4.000000 0:30 Sequence 0:30 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:30 'ca4' ( temp 3-element array of 2-element array of 4-component vector of float) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:33 Sequence 0:33 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:33 'caim' ( temp 3-element array of 2-element array of 4-component vector of float) 0:35 Constant: 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 4.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:35 2.000000 0:36 Sequence 0:36 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:36 'caim2' ( temp 3-element array of 2-element array of 4-component vector of float) 0:38 Constant: 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 4.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:38 2.000000 0:39 Sequence 0:39 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:39 'caim3' ( temp 3-element array of 2-element array of 4-component vector of float) 0:41 Constant: 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 4.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:41 2.000000 0:43 Sequence 0:43 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:43 'a4' ( temp 3-element array of 2-element array of 4-component vector of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:46 Sequence 0:46 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:46 'aim' ( temp 3-element array of 2-element array of 4-component vector of float) 0:46 Constant: 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 4.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:46 2.000000 0:49 Sequence 0:49 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:49 'aim2' ( temp 3-element array of 2-element array of 4-component vector of float) 0:49 Constant: 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 4.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:49 2.000000 0:52 Sequence 0:52 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:52 'aim3' ( temp 3-element array of 2-element array of 4-component vector of float) 0:52 Constant: 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 4.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:52 2.000000 0:69 move second child to first child ( temp 4-element array of 7-element array of float) 0:69 'g4' ( global 4-element array of 7-element array of float) 0:69 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of float) 0:69 'g5' ( global 5-element array of 7-element array of float) 0:70 'g5' ( global 5-element array of 7-element array of float) 0:71 'gu' ( global 1-element array of 7-element array of float) 0:73 Constant: 0:73 0.000000 0:74 Function Call: bar(f1[5][7]; ( global void) 0:74 'g5' ( global 5-element array of 7-element array of float) 0:76 Test condition and select ( temp void) 0:76 Condition 0:76 Compare Equal ( temp bool) 0:76 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of float) 0:76 'g5' ( global 5-element array of 7-element array of float) 0:76 'g4' ( global 4-element array of 7-element array of float) 0:76 true case is null 0:78 Test condition and select ( temp void) 0:78 Condition 0:78 Constant: 0:78 false (const bool) 0:78 true case is null 0:82 move second child to first child ( temp float) 0:82 direct index ( temp float) 0:82 direct index ( temp 7-element array of float) 0:82 'u' ( temp 5-element array of 7-element array of float) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 3.000000 0:84 move second child to first child ( temp float) 0:84 direct index ( temp float) 0:84 direct index ( temp 7-element array of float) 0:84 'u' ( temp 5-element array of 7-element array of float) 0:84 Constant: 0:84 5 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Constant: 0:84 5.000000 0:85 Function Call: foo(f1[5][7]; ( global 4-element array of 7-element array of float) 0:85 'u' ( temp 5-element array of 7-element array of float) 0:? Linker Objects 0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of float) 0:? 'gu' ( global 1-element array of 7-element array of float) 0:? 'gimp' ( global 1-element array of 1-element array of float) 0:? 'g4' ( global 4-element array of 7-element array of float) 0:? 'g5' ( global 5-element array of 7-element array of float) glslang-16.0.0/Test/baseResults/430scope.vert.out000066400000000000000000000175651506534232700215350ustar00rootroot00000000000000430scope.vert ERROR: 0:5: 'a' : redefinition ERROR: 0:17: 'b' : function name is redeclaration of existing name ERROR: 0:20: 'c' : redefinition ERROR: 0:22: 'f' : redefinition ERROR: 0:43: 'sin' : can't use function syntax on variable ERROR: 0:57: 'z' : undeclared identifier ERROR: 0:57: 'z' : redefinition ERROR: 0:73: 'degrees' : can't use function syntax on variable ERROR: 8 compilation errors. No code generated. Shader version: 430 ERROR: node is still EOpNull! 0:3 Function Definition: f(i1;i1;i1; ( global int) 0:3 Function Parameters: 0:3 'a' ( in int) 0:3 'b' ( in int) 0:3 'c' ( in int) 0:? Sequence 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'a' ( temp float) 0:8 add ( temp float) 0:8 Convert int to float ( temp float) 0:8 'a' ( in int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' ( in int) 0:25 Function Definition: cos(f1; ( global float) 0:25 Function Parameters: 0:25 'x' ( in float) 0:27 Sequence 0:27 Branch: Return with expression 0:27 Constant: 0:27 1.000000 0:29 Function Definition: radians(b1; ( global bool) 0:29 Function Parameters: 0:29 'x' ( in bool) 0:31 Sequence 0:31 Branch: Return with expression 0:31 Constant: 0:31 true (const bool) 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence 0:39 Function Call: g( ( temp int) 0:42 'sin' ( temp float) 0:43 Constant: 0:43 0.000000 0:44 Function Call: f(i1;i1;i1; ( global int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 3 (const int) 0:47 move second child to first child ( temp float) 0:47 'f' ( temp float) 0:47 Constant: 0:47 3.000000 0:49 move second child to first child ( temp 4-component vector of float) 0:49 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) 0:49 'anon@0' ( out block{ invariant 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:49 Constant: 0:49 0 (const uint) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 'f' ( temp float) 0:51 Sequence 0:51 Sequence 0:51 move second child to first child ( temp int) 0:51 'f' ( temp int) 0:51 Constant: 0:51 0 (const int) 0:51 Loop with condition tested first 0:51 Loop Condition 0:51 Compare Less Than ( temp bool) 0:51 'f' ( temp int) 0:51 Constant: 0:51 10 (const int) 0:51 Loop Body 0:52 Pre-Increment ( temp int) 0:52 'f' ( temp int) 0:51 Loop Terminal Expression 0:51 Pre-Increment ( temp int) 0:51 'f' ( temp int) 0:54 Sequence 0:54 move second child to first child ( temp int) 0:54 'x' ( temp int) 0:54 Constant: 0:54 1 (const int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'x' ( temp float) 0:56 Constant: 0:56 2.000000 0:56 move second child to first child ( temp float) 0:56 'y' ( temp float) 0:56 'x' ( temp float) 0:60 Sequence 0:60 Sequence 0:60 move second child to first child ( temp int) 0:60 'x' ( temp int) 0:60 'x' ( temp int) 0:68 Sequence 0:68 Sequence 0:68 move second child to first child ( temp structure{ temp int x}) 0:68 'S' ( temp structure{ temp int x}) 0:68 Constant: 0:68 0 (const int) 0:69 x: direct index for structure ( temp int) 0:69 'S' ( temp structure{ temp int x}) 0:69 Constant: 0:69 0 (const int) 0:73 Constant: 0:73 0.000000 0:? Linker Objects 0:? 'b' ( global bool) 0:? 'tan' ( global float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex stage: No function definition (body) found: g( Shader version: 430 ERROR: node is still EOpNull! 0:3 Function Definition: f(i1;i1;i1; ( global int) 0:3 Function Parameters: 0:3 'a' ( in int) 0:3 'b' ( in int) 0:3 'c' ( in int) 0:? Sequence 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'a' ( temp float) 0:8 add ( temp float) 0:8 Convert int to float ( temp float) 0:8 'a' ( in int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' ( in int) 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence 0:39 Function Call: g( ( temp int) 0:42 'sin' ( temp float) 0:43 Constant: 0:43 0.000000 0:44 Function Call: f(i1;i1;i1; ( global int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 3 (const int) 0:47 move second child to first child ( temp float) 0:47 'f' ( temp float) 0:47 Constant: 0:47 3.000000 0:49 move second child to first child ( temp 4-component vector of float) 0:49 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) 0:49 'anon@0' ( out block{ invariant 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:49 Constant: 0:49 0 (const uint) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 'f' ( temp float) 0:51 Sequence 0:51 Sequence 0:51 move second child to first child ( temp int) 0:51 'f' ( temp int) 0:51 Constant: 0:51 0 (const int) 0:51 Loop with condition tested first 0:51 Loop Condition 0:51 Compare Less Than ( temp bool) 0:51 'f' ( temp int) 0:51 Constant: 0:51 10 (const int) 0:51 Loop Body 0:52 Pre-Increment ( temp int) 0:52 'f' ( temp int) 0:51 Loop Terminal Expression 0:51 Pre-Increment ( temp int) 0:51 'f' ( temp int) 0:54 Sequence 0:54 move second child to first child ( temp int) 0:54 'x' ( temp int) 0:54 Constant: 0:54 1 (const int) 0:56 Sequence 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'x' ( temp float) 0:56 Constant: 0:56 2.000000 0:56 move second child to first child ( temp float) 0:56 'y' ( temp float) 0:56 'x' ( temp float) 0:60 Sequence 0:60 Sequence 0:60 move second child to first child ( temp int) 0:60 'x' ( temp int) 0:60 'x' ( temp int) 0:68 Sequence 0:68 Sequence 0:68 move second child to first child ( temp structure{ temp int x}) 0:68 'S' ( temp structure{ temp int x}) 0:68 Constant: 0:68 0 (const int) 0:69 x: direct index for structure ( temp int) 0:69 'S' ( temp structure{ temp int x}) 0:69 Constant: 0:69 0 (const int) 0:73 Constant: 0:73 0.000000 0:? Linker Objects 0:? 'b' ( global bool) 0:? 'tan' ( global float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/435.vert.out000066400000000000000000000011551506534232700204740ustar00rootroot00000000000000435.vert ERROR: version not supported ERROR: 1 compilation errors. No code generated. Shader version: 450 ERROR: node is still EOpNull! 0:2 Function Definition: main( ( global void) 0:2 Function Parameters: 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 450 ERROR: node is still EOpNull! 0:2 Function Definition: main( ( global void) 0:2 Function Parameters: 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/440.frag.out000066400000000000000000000436051506534232700204350ustar00rootroot00000000000000440.frag ERROR: 0:11: 'location' : overlapping use of location 4 ERROR: 0:13: 'component' : type overflows the available 4 components ERROR: 0:22: 'location' : the aliases sharing the location 30 must be the same basic type and interpolation qualification ERROR: 0:24: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) ERROR: 0:25: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) ERROR: 0:26: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) ERROR: 0:29: 'layout qualifier' : cannot use offset or align qualifiers in a default qualifier declaration (declaration with no type) ERROR: 0:30: 'layout qualifier' : cannot use offset or align qualifiers in a default qualifier declaration (declaration with no type) ERROR: 0:30: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:31: 'layout qualifier' : cannot use offset or align qualifiers in a default qualifier declaration (declaration with no type) ERROR: 0:31: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:33: 'layout qualifier' : cannot use offset or align qualifiers in a default qualifier declaration (declaration with no type) ERROR: 0:34: 'layout qualifier' : cannot use offset or align qualifiers in a default qualifier declaration (declaration with no type) ERROR: 0:34: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:35: 'layout qualifier' : cannot use offset or align qualifiers in a default qualifier declaration (declaration with no type) ERROR: 0:35: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:37: 'offset' : only applies to block members, not blocks ERROR: 0:38: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:38: 'offset' : only applies to block members, not blocks ERROR: 0:39: 'output block' : not supported in this stage: fragment ERROR: 0:39: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:39: 'offset' : only applies to block members, not blocks ERROR: 0:42: 'align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:43: 'align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:43: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:44: 'output block' : not supported in this stage: fragment ERROR: 0:44: 'align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:44: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:46: 'offset' : cannot specify on a variable declaration ERROR: 0:47: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:48: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:50: 'align' : cannot specify on a variable declaration ERROR: 0:51: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:52: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:54: 'layout' : matrix or packing qualifiers can only be used on a uniform or buffer ERROR: 0:55: 'layout' : cannot specify packing on a variable declaration ERROR: 0:57: 'align' : must be a power of 2 ERROR: 0:58: 'offset/align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:62: 'offset/align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:63: 'offset/align' : can only be used with std140, std430, or scalar layout packing ERROR: 0:62: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:63: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:84: 'align' : must be a power of 2 ERROR: 0:83: 'offset' : cannot lie in previous members ERROR: 0:85: 'offset' : must be a multiple of the member's alignment (layout offset = 68 | member alignment = 8) ERROR: 0:103: 'align' : must be a power of 2 ERROR: 0:105: 'align' : must be a power of 2 ERROR: 0:102: 'offset' : cannot lie in previous members ERROR: 0:104: 'offset' : must be a multiple of the member's alignment (layout offset = 68 | member alignment = 8) ERROR: 49 compilation errors. No code generated. Shader version: 440 ERROR: node is still EOpNull! 0:144 Function Definition: interp( ( global void) 0:144 Function Parameters: 0:146 Sequence 0:146 interpolateAtCentroid ( global 2-component vector of float) 0:146 vector swizzle ( temp 2-component vector of float) 0:146 direct index ( smooth sample temp 3-component vector of float) 0:146 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:146 Constant: 0:146 2 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:147 interpolateAtSample ( global float) 0:147 direct index ( temp float) 0:147 direct index ( smooth sample temp 3-component vector of float) 0:147 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:147 Constant: 0:147 2 (const int) 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 2 (const int) 0:150 Function Definition: layer( ( global int) 0:150 Function Parameters: 0:152 Sequence 0:152 Branch: Return with expression 0:152 'gl_Layer' ( flat in int Layer) 0:? Linker Objects 0:? 'a' (layout( location=4 component=2) smooth in 2-component vector of float) 0:? 'b' (layout( location=4 component=1) smooth in float) 0:? 'h' (layout( location=4 component=2) smooth in 2-component vector of float) 0:? 'c' (layout( location=3 component=2) smooth in 3-component vector of float) 0:? 'e' (layout( location=20 component=0) smooth in 6-element array of 3-component vector of float) 0:? 'f' (layout( location=20 component=3) smooth in 6-element array of float) 0:? 'be' (layout( location=30 component=3) out int) 0:? 'bf' (layout( location=30 component=0) out 3-component vector of float) 0:? 'inst1' (layout( column_major shared offset=12) uniform block{layout( column_major shared) uniform int a}) 0:? 'inst2' (layout( offset=12) in block{ in int a}) 0:? 'inst3' (layout( offset=12) out block{ out int a}) 0:? 'inst4' (layout( column_major std140 align=16) uniform block{layout( column_major std140 offset=0 align=16) uniform int a}) 0:? 'inst8' (layout( column_major shared align=16) uniform block{layout( column_major shared) uniform int a}) 0:? 'inst5' (layout( align=16) in block{ in int a}) 0:? 'inst6' (layout( align=16) out block{ out int a}) 0:? 'v1' (layout( offset=12) uniform 4-component vector of float) 0:? 'v2' (layout( offset=12) smooth in 4-component vector of float) 0:? 'v3' (layout( offset=12) out 4-component vector of float) 0:? 'v4' (layout( align=16) uniform 4-component vector of float) 0:? 'v5' (layout( align=16) smooth in 4-component vector of float) 0:? 'v6' (layout( align=16) out 4-component vector of float) 0:? 'v7' (layout( std140) uniform 4-component vector of float) 0:? 'inst7' (layout( column_major shared) uniform block{layout( column_major shared offset=12 align=4) uniform float f}) 0:? 'inst10' ( in block{layout( offset=12) in float f, layout( align=4) in float g}) 0:? 'inst9' (layout( column_major std430 align=32) uniform block{layout( column_major std430 align=32) uniform float e, layout( column_major std430 offset=12 align=4) uniform float f, layout( column_major std430 offset=20 align=32) uniform float g, layout( column_major std430 align=32) uniform float h}) 0:? 'inst11' (layout( column_major std430) uniform block{layout( column_major std430 offset=12 align=4) uniform float f, layout( column_major std430) uniform float g}) 0:? 'specExampleErrors' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a, layout( column_major std140 offset=32) uniform 3-component vector of float b, layout( column_major std140 offset=48) uniform 2-component vector of float c, layout( column_major std140 offset=56) uniform double g, layout( column_major std140 offset=72) uniform double h}) 0:? 'specExample' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a, layout( column_major std140 offset=32) uniform 3-component vector of float b, layout( column_major std140 offset=48) uniform 2-component vector of float d, layout( column_major std140 offset=64 align=16) uniform float e, layout( column_major std140 offset=72 align=2) uniform double f, layout( column_major std140 offset=80) uniform float h, layout( column_major std140 offset=128 align=64) uniform 3-component vector of double i, layout( column_major std140 offset=168 align=8) uniform float j}) 0:? 'specExampleErrors430' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float a, layout( column_major std430 offset=32) buffer 3-component vector of float b, layout( column_major std430 offset=48) buffer 2-component vector of float c, layout( column_major std430 offset=56) buffer double g, layout( column_major std430 offset=72) buffer double h, layout( column_major std430 offset=80) buffer double i}) 0:? 'specExample430' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float a, layout( column_major std430 offset=32) buffer 3-component vector of float b, layout( column_major std430 offset=48) buffer 2-component vector of float d, layout( column_major std430 offset=64 align=16) buffer float e, layout( column_major std430 offset=72 align=2) buffer double f, layout( column_major std430 offset=80) buffer float h, layout( column_major std430 offset=128 align=64) buffer 3-component vector of double i, layout( column_major std430 offset=168 align=8) buffer float j}) 0:? 'specExample4300' (layout( column_major std430 align=128) buffer block{layout( column_major std430 offset=0 align=128) buffer 4-component vector of float a, layout( column_major std430 offset=128 align=128) buffer 3-component vector of float b, layout( column_major std430 offset=256 align=128) buffer 2-component vector of float d, layout( column_major std430 offset=384 align=128) buffer float e, layout( column_major std430 offset=512 align=128) buffer double f, layout( column_major std430 offset=640 align=128) buffer float h, layout( column_major std430 offset=768 align=128) buffer 3-component vector of double i}) 0:? 'specExample4301' (layout( column_major std430 align=128) buffer block{layout( column_major std430 offset=0 align=128) buffer 4-component vector of float a, layout( column_major std430 offset=128 align=128) buffer 3-component vector of float b, layout( column_major std430 offset=256 align=128) buffer 2-component vector of float d, layout( column_major std430 offset=512 align=128) buffer float e, layout( column_major std430 offset=520 align=8) buffer double f, layout( column_major std430 offset=640 align=128) buffer float h, layout( column_major std430 offset=768 align=128) buffer 3-component vector of double i}) 0:? 'aconst' ( global 4-element array of int) 0:? 'bconst' ( global 64-element array of int) 0:? 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 128-element array of structure{ global 3-component vector of float vPositionWs} g_pointLightData}) Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 440 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'a' (layout( location=4 component=2) smooth in 2-component vector of float) 0:? 'b' (layout( location=4 component=1) smooth in float) 0:? 'h' (layout( location=4 component=2) smooth in 2-component vector of float) 0:? 'c' (layout( location=3 component=2) smooth in 3-component vector of float) 0:? 'e' (layout( location=20 component=0) smooth in 6-element array of 3-component vector of float) 0:? 'f' (layout( location=20 component=3) smooth in 6-element array of float) 0:? 'be' (layout( location=30 component=3) out int) 0:? 'bf' (layout( location=30 component=0) out 3-component vector of float) 0:? 'inst1' (layout( column_major shared offset=12) uniform block{layout( column_major shared) uniform int a}) 0:? 'inst2' (layout( offset=12) in block{ in int a}) 0:? 'inst3' (layout( offset=12) out block{ out int a}) 0:? 'inst4' (layout( column_major std140 align=16) uniform block{layout( column_major std140 offset=0 align=16) uniform int a}) 0:? 'inst8' (layout( column_major shared align=16) uniform block{layout( column_major shared) uniform int a}) 0:? 'inst5' (layout( align=16) in block{ in int a}) 0:? 'inst6' (layout( align=16) out block{ out int a}) 0:? 'v1' (layout( offset=12) uniform 4-component vector of float) 0:? 'v2' (layout( offset=12) smooth in 4-component vector of float) 0:? 'v3' (layout( offset=12) out 4-component vector of float) 0:? 'v4' (layout( align=16) uniform 4-component vector of float) 0:? 'v5' (layout( align=16) smooth in 4-component vector of float) 0:? 'v6' (layout( align=16) out 4-component vector of float) 0:? 'v7' (layout( std140) uniform 4-component vector of float) 0:? 'inst7' (layout( column_major shared) uniform block{layout( column_major shared offset=12 align=4) uniform float f}) 0:? 'inst10' ( in block{layout( offset=12) in float f, layout( align=4) in float g}) 0:? 'inst9' (layout( column_major std430 align=32) uniform block{layout( column_major std430 align=32) uniform float e, layout( column_major std430 offset=12 align=4) uniform float f, layout( column_major std430 offset=20 align=32) uniform float g, layout( column_major std430 align=32) uniform float h}) 0:? 'inst11' (layout( column_major std430) uniform block{layout( column_major std430 offset=12 align=4) uniform float f, layout( column_major std430) uniform float g}) 0:? 'specExampleErrors' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a, layout( column_major std140 offset=32) uniform 3-component vector of float b, layout( column_major std140 offset=48) uniform 2-component vector of float c, layout( column_major std140 offset=56) uniform double g, layout( column_major std140 offset=72) uniform double h}) 0:? 'specExample' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a, layout( column_major std140 offset=32) uniform 3-component vector of float b, layout( column_major std140 offset=48) uniform 2-component vector of float d, layout( column_major std140 offset=64 align=16) uniform float e, layout( column_major std140 offset=72 align=2) uniform double f, layout( column_major std140 offset=80) uniform float h, layout( column_major std140 offset=128 align=64) uniform 3-component vector of double i, layout( column_major std140 offset=168 align=8) uniform float j}) 0:? 'specExampleErrors430' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float a, layout( column_major std430 offset=32) buffer 3-component vector of float b, layout( column_major std430 offset=48) buffer 2-component vector of float c, layout( column_major std430 offset=56) buffer double g, layout( column_major std430 offset=72) buffer double h, layout( column_major std430 offset=80) buffer double i}) 0:? 'specExample430' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float a, layout( column_major std430 offset=32) buffer 3-component vector of float b, layout( column_major std430 offset=48) buffer 2-component vector of float d, layout( column_major std430 offset=64 align=16) buffer float e, layout( column_major std430 offset=72 align=2) buffer double f, layout( column_major std430 offset=80) buffer float h, layout( column_major std430 offset=128 align=64) buffer 3-component vector of double i, layout( column_major std430 offset=168 align=8) buffer float j}) 0:? 'specExample4300' (layout( column_major std430 align=128) buffer block{layout( column_major std430 offset=0 align=128) buffer 4-component vector of float a, layout( column_major std430 offset=128 align=128) buffer 3-component vector of float b, layout( column_major std430 offset=256 align=128) buffer 2-component vector of float d, layout( column_major std430 offset=384 align=128) buffer float e, layout( column_major std430 offset=512 align=128) buffer double f, layout( column_major std430 offset=640 align=128) buffer float h, layout( column_major std430 offset=768 align=128) buffer 3-component vector of double i}) 0:? 'specExample4301' (layout( column_major std430 align=128) buffer block{layout( column_major std430 offset=0 align=128) buffer 4-component vector of float a, layout( column_major std430 offset=128 align=128) buffer 3-component vector of float b, layout( column_major std430 offset=256 align=128) buffer 2-component vector of float d, layout( column_major std430 offset=512 align=128) buffer float e, layout( column_major std430 offset=520 align=8) buffer double f, layout( column_major std430 offset=640 align=128) buffer float h, layout( column_major std430 offset=768 align=128) buffer 3-component vector of double i}) 0:? 'aconst' ( global 4-element array of int) 0:? 'bconst' ( global 64-element array of int) 0:? 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 128-element array of structure{ global 3-component vector of float vPositionWs} g_pointLightData}) glslang-16.0.0/Test/baseResults/440.vert.out000066400000000000000000000524251506534232700204760ustar00rootroot00000000000000440.vert ERROR: 0:8: 'component' : type overflows the available 4 components ERROR: 0:15: 'component' : component is too large ERROR: 0:23: 'location' : overlapping use of location 4 ERROR: 0:26: 'location' : overlapping use of location 2 ERROR: 0:31: 'location' : overlapping use of location 15 ERROR: 0:32: 'location' : overlapping use of location 10 ERROR: 0:37: 'location' : overlapping use of location 20 ERROR: 0:39: 'component' : type overflows the available 4 components ERROR: 0:40: 'component' : type overflows the available 4 components ERROR: 0:42: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:43: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:43: 'location' : the aliases sharing the location 33 must be the same basic type and interpolation qualification ERROR: 0:44: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:44: 'location' : the aliases sharing the location 34 must be the same basic type and interpolation qualification ERROR: 0:46: 'component' : must specify 'location' to use 'component' ERROR: 0:52: 'location' : overlapping use of location 40 ERROR: 0:54: 'component' : type overflows the available 4 components ERROR: 0:55: 'component' : type overflows the available 4 components ERROR: 0:57: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:58: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:58: 'location' : the aliases sharing the location 43 must be the same basic type and interpolation qualification ERROR: 0:61: 'location/component/index' : cannot declare a default, use a full declaration ERROR: 0:64: 'location' : the aliases sharing the location 50 must be the same basic type and interpolation qualification ERROR: 0:66: 'component' : doubles cannot start on an odd-numbered component ERROR: 0:67: 'component' : type overflows the available 4 components ERROR: 0:69: 'location' : the aliases sharing the location 53 must be the same basic type and interpolation qualification ERROR: 0:71: 'location' : overlapping use of location 55 ERROR: 0:75: 'location' : overlapping use of location 57 ERROR: 0:78: 'location' : overlapping use of location 59 ERROR: 0:95: 'xfb layout qualifier' : can only be used on an output ERROR: 0:101: 'xfb_offset' : cannot declare a default, use a full declaration ERROR: 0:111: 'xfb_buffer' : member cannot contradict block (or what block inherited from global) ERROR: 0:116: 'xfb_buffer' : member cannot contradict block (or what block inherited from global) ERROR: 0:116: 'xfb_offset' : overlapping offsets at offset 32 in buffer 3 ERROR: 0:117: 'xfb_offset' : overlapping offsets at offset 0 in buffer 2 ERROR: 0:119: 'xfb_offset' : overlapping offsets at offset 24 in buffer 2 ERROR: 0:122: 'xfb_stride' : all stride settings must match for xfb buffer 15 ERROR: 0:126: 'xfb_offset' : overlapping offsets at offset 4 in buffer 1 ERROR: 0:128: 'xfb_stride' : all stride settings must match for xfb buffer 3 ERROR: 0:129: 'xfb_stride' : all stride settings must match for xfb buffer 3 ERROR: 0:133: 'xfb_stride' : all stride settings must match for xfb buffer 3 ERROR: 0:131: 'xfb_stride' : all stride settings must match for xfb buffer 3 ERROR: 0:152: 'xfb_offset' : overlapping offsets at offset 64 in buffer 0 ERROR: 0:148: 'out' : cannot contain bool ERROR: 0:157: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4 ERROR: 0:158: 'xfb_offset' : must be a multiple of size of first component ERROR: 0:159: 'xfb_offset' : type contains double or 64-bit integer; xfb_offset must be a multiple of 8 ERROR: 0:161: 'xfb_offset' : must be a multiple of size of first component ERROR: 0:162: 'xfb_offset' : type contains double or 64-bit integer; xfb_offset must be a multiple of 8 ERROR: 0:157: 'out' : cannot contain bool ERROR: 0:166: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4 ERROR: 0:169: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4 ERROR: 0:169: 'xfb_stride' : 1/4 stride is too large: gl_MaxTransformFeedbackInterleavedComponents is 64 ERROR: 0:171: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4 ERROR: 0:178: 'xfb_offset' : overlapping offsets at offset 36 in buffer 3 ERROR: 0:179: 'xfb_buffer' : member cannot contradict block (or what block inherited from global) ERROR: 0:178: 'xfb_offset' : overlapping offsets at offset 32 in buffer 3 ERROR: 0:185: 'gl_BaseVertexARB' : required extension not requested: GL_ARB_shader_draw_parameters ERROR: 0:185: 'gl_BaseInstanceARB' : required extension not requested: GL_ARB_shader_draw_parameters ERROR: 0:185: 'gl_DrawIDARB' : required extension not requested: GL_ARB_shader_draw_parameters ERROR: 0:193: 'assign' : l-value required "gl_BaseVertexARB" (can't modify shader input) ERROR: 0:194: 'assign' : l-value required "gl_BaseInstanceARB" (can't modify shader input) ERROR: 0:195: 'assign' : l-value required "gl_DrawIDARB" (can't modify shader input) ERROR: 0:196: 'glBaseInstanceARB' : undeclared identifier ERROR: 64 compilation errors. No code generated. Shader version: 440 Requested GL_ARB_shader_draw_parameters in xfb mode ERROR: node is still EOpNull! 0:183 Function Definition: drawParamsBad( ( global int) 0:183 Function Parameters: 0:185 Sequence 0:185 Branch: Return with expression 0:185 add ( temp int) 0:185 add ( temp int) 0:185 'gl_BaseVertexARB' ( in int BaseVertex) 0:185 'gl_BaseInstanceARB' ( in int BaseInstance) 0:185 'gl_DrawIDARB' ( in int DrawId) 0:190 Function Definition: drawParams( ( global int) 0:190 Function Parameters: 0:192 Sequence 0:192 Branch: Return with expression 0:192 add ( temp int) 0:192 add ( temp int) 0:192 'gl_BaseVertexARB' ( in int BaseVertex) 0:192 'gl_BaseInstanceARB' ( in int BaseInstance) 0:192 'gl_DrawIDARB' ( in int DrawId) 0:193 move second child to first child ( temp int) 0:193 'gl_BaseVertexARB' ( in int BaseVertex) 0:193 Constant: 0:193 3 (const int) 0:194 move second child to first child ( temp int) 0:194 'gl_BaseInstanceARB' ( in int BaseInstance) 0:194 Constant: 0:194 3 (const int) 0:195 move second child to first child ( temp int) 0:195 'gl_DrawIDARB' ( in int DrawId) 0:195 Constant: 0:195 3 (const int) 0:196 'glBaseInstanceARB' ( temp float) 0:? Linker Objects 0:? 'a' (layout( location=2 component=2) in 2-component vector of float) 0:? 'b' (layout( location=2 component=1) in float) 0:? 'c' (layout( location=3 component=2) in 3-component vector of float) 0:? 'd' (layout( location=0 component=3) in 4-element array of float) 0:? 'e' (layout( location=4 component=0) in 5-element array of 3-component vector of float) 0:? 'f' (layout( location=4 component=3) in 5-element array of float) 0:? 'g' (layout( location=9) in 6-element array of float) 0:? 'h' (layout( location=4 component=2) in 2-component vector of float) 0:? 'i' (layout( location=3 component=2) smooth out 2-component vector of float) 0:? 'j' (layout( location=3 component=0) smooth out 2-component vector of float) 0:? 'k' (layout( location=4 component=2) smooth out 2-component vector of float) 0:? 'm' (layout( location=4 component=2) smooth out 2-component vector of float) 0:? 'n' (layout( location=2 component=2) smooth out 2-component vector of float) 0:? 'p' (layout( location=2 component=0) smooth out 3-component vector of float) 0:? 'q' (layout( location=10 component=3) smooth out 6-element array of float) 0:? 'r' (layout( location=10 component=0) smooth out 6-element array of 3-component vector of float) 0:? 's' (layout( location=15 component=3) smooth out float) 0:? 't' (layout( location=10 component=1) smooth out float) 0:? 'u' (layout( location=20 component=2) smooth out float) 0:? 'v' (layout( location=20 component=0) smooth out float) 0:? 'w' (layout( location=20 component=3) smooth out float) 0:? 'x' (layout( location=20 component=1) smooth out 2-component vector of float) 0:? 'y' (layout( location=30 component=3) smooth out 2-component vector of float) 0:? 'z' (layout( location=31 component=1) smooth out 4-component vector of float) 0:? 'ba' (layout( location=32 component=1) smooth out 4X4 matrix of float) 0:? 'Ss' (layout( location=33 component=1) smooth out structure{ global int a}) 0:? 'bb' (layout( location=34 component=1) out block{ out int a}) 0:? 'bc' (layout( location=4095 component=1) smooth out float) 0:? 'bd' ( out block{layout( location=40 component=2) out float u, layout( location=40 component=0) out float v, layout( location=40 component=3) out float w, layout( location=40 component=1) out 2-component vector of float x, layout( location=41 component=3) out 2-component vector of float y, layout( location=42 component=1) out 4-component vector of float z, layout( location=42 component=1) out 4X4 matrix of float ba, layout( location=43 component=1) out structure{ global int a} Ss}) 0:? 'be' (layout( location=50 component=3) smooth out int) 0:? 'bf' (layout( location=50 component=0) smooth out 3-component vector of float) 0:? 'dfo' (layout( location=51 component=1) smooth out double) 0:? 'dvo' (layout( location=52 component=2) smooth out 2-component vector of double) 0:? 'dfo2' (layout( location=53) smooth out double) 0:? 'ffv2' (layout( location=53 component=2) smooth out 2-component vector of float) 0:? 'dvec4out' (layout( location=54) smooth out 4-component vector of double) 0:? 'overf' (layout( location=55) smooth out float) 0:? 'df2o' (layout( location=56 component=1) smooth out 2-component vector of float) 0:? 'sf2o' (layout( location=56 component=3) smooth out float) 0:? 'dv3o' (layout( location=57 component=2) smooth out 2-component vector of float) 0:? 'sf4o' (layout( location=57 component=3) smooth out float) 0:? 'dv3o2' (layout( location=58) flat out 3-component vector of double) 0:? 'dfo3' (layout( location=59 component=2) flat out double) 0:? 'dfo4' (layout( location=59 component=0) flat out double) 0:? 'bbinst1' ( out block{ out 4-component vector of float bbv}) 0:? 'bbinst2' ( out block{layout( xfb_buffer=0 xfb_offset=64) out 4-component vector of float bbv}) 0:? 'bbinst3' ( out block{layout( xfb_buffer=3 xfb_offset=16) out 4-component vector of float bbv}) 0:? 'ubbinst3' (layout( column_major shared) uniform block{layout( column_major shared xfb_offset=16) uniform 4-component vector of float bbv}) 0:? 'bg' (layout( xfb_buffer=2 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float) 0:? 'bh' (layout( xfb_buffer=3 xfb_offset=32 xfb_stride=64) smooth out 4-component vector of float) 0:? 'bbinst4' (layout( xfb_stride=80) out block{layout( xfb_buffer=2 xfb_offset=16) out 4-component vector of float bbv1, layout( xfb_buffer=2 xfb_offset=32) out 4-component vector of float bbv2}) 0:? 'bbinst5' ( out block{layout( xfb_buffer=3 xfb_offset=0) out 4-component vector of float bbv1, layout( xfb_buffer=3 xfb_offset=48 xfb_stride=64) out 4-component vector of float bbv2, out 4-component vector of float bbv3}) 0:? 'bbinst6' ( out block{layout( xfb_buffer=2 xfb_offset=0) out 4-component vector of float bbv1, layout( xfb_buffer=3 xfb_offset=32 xfb_stride=64) out 4-component vector of float bbv2, layout( xfb_buffer=2 xfb_offset=0) out 4-component vector of float bbv3, out 4-component vector of float bbv5, layout( xfb_buffer=2 xfb_offset=24) out float bbf6}) 0:? 'bj' (layout( xfb_buffer=1 xfb_offset=4) smooth out float) 0:? 'bk' (layout( xfb_buffer=1 xfb_offset=0) smooth out 2-component vector of int) 0:? 'bl' (layout( xfb_stride=48) smooth out float) 0:? 'bbinst7' (layout( xfb_stride=48) out block{layout( xfb_stride=64) out 4-component vector of float bbv1, layout( xfb_stride=32) out 4-component vector of float bbv2}) 0:? 'bbinst8' (layout( xfb_stride=92) out block{layout( xfb_buffer=0 xfb_offset=0) out bool b, layout( xfb_buffer=0 xfb_offset=8) out structure{ global bool b, global structure{ global int i, global double d, global float f} s, global 2-component vector of float v2} t, layout( xfb_buffer=0 xfb_offset=48) out int i, layout( xfb_buffer=0 xfb_offset=52) out 3X3 matrix of float m3, layout( xfb_buffer=0 xfb_offset=88) out float f, layout( xfb_buffer=0 xfb_offset=92) out float g}) 0:? 'bbinst9' ( out block{layout( xfb_buffer=4 xfb_offset=1) out bool b, layout( xfb_buffer=4 xfb_offset=12) out structure{ global bool b, global structure{ global int i, global double d, global float f} s, global 2-component vector of float v2} t, layout( xfb_buffer=4 xfb_offset=52) out 3X3 matrix of float m3, layout( xfb_buffer=4 xfb_offset=90) out int i, layout( xfb_buffer=4 xfb_offset=98) out double d, layout( xfb_buffer=4 xfb_offset=108) out structure{ global int a} s}) 0:? 'bm' (layout( xfb_buffer=5 xfb_offset=0) smooth out float) 0:? 'bbinst10' ( out block{layout( xfb_buffer=7 xfb_offset=0) out 4X4 matrix of double m1, layout( xfb_buffer=7 xfb_offset=128) out 4X4 matrix of double m2, layout( xfb_buffer=7 xfb_offset=256) out float f}) 0:? 'anon@0' ( out block{layout( xfb_buffer=3 xfb_offset=36) gl_Position 4-component vector of float Position gl_Position, layout( xfb_buffer=3 xfb_offset=32) gl_PointSize float PointSize gl_PointSize}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point ERROR: Linking vertex stage: xfb_stride is too small to hold all buffer entries: ERROR: xfb_buffer 0, xfb_stride 92, minimum stride needed: 96 ERROR: Linking vertex stage: xfb_stride must be multiple of 8 for buffer holding a double or 64-bit integer: ERROR: xfb_buffer 0, xfb_stride 92 ERROR: Linking vertex stage: xfb_stride must be multiple of 4: ERROR: xfb_buffer 5, xfb_stride 6 ERROR: Linking vertex stage: xfb_stride is too large: ERROR: xfb_buffer 6, components (1/4 stride) needed are 500, gl_MaxTransformFeedbackInterleavedComponents is 64 ERROR: Linking vertex stage: xfb_stride is too large: ERROR: xfb_buffer 7, components (1/4 stride) needed are 66, gl_MaxTransformFeedbackInterleavedComponents is 64 Shader version: 440 Requested GL_ARB_shader_draw_parameters in xfb mode ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'a' (layout( location=2 component=2) in 2-component vector of float) 0:? 'b' (layout( location=2 component=1) in float) 0:? 'c' (layout( location=3 component=2) in 3-component vector of float) 0:? 'd' (layout( location=0 component=3) in 4-element array of float) 0:? 'e' (layout( location=4 component=0) in 5-element array of 3-component vector of float) 0:? 'f' (layout( location=4 component=3) in 5-element array of float) 0:? 'g' (layout( location=9) in 6-element array of float) 0:? 'h' (layout( location=4 component=2) in 2-component vector of float) 0:? 'i' (layout( location=3 component=2) smooth out 2-component vector of float) 0:? 'j' (layout( location=3 component=0) smooth out 2-component vector of float) 0:? 'k' (layout( location=4 component=2) smooth out 2-component vector of float) 0:? 'm' (layout( location=4 component=2) smooth out 2-component vector of float) 0:? 'n' (layout( location=2 component=2) smooth out 2-component vector of float) 0:? 'p' (layout( location=2 component=0) smooth out 3-component vector of float) 0:? 'q' (layout( location=10 component=3) smooth out 6-element array of float) 0:? 'r' (layout( location=10 component=0) smooth out 6-element array of 3-component vector of float) 0:? 's' (layout( location=15 component=3) smooth out float) 0:? 't' (layout( location=10 component=1) smooth out float) 0:? 'u' (layout( location=20 component=2) smooth out float) 0:? 'v' (layout( location=20 component=0) smooth out float) 0:? 'w' (layout( location=20 component=3) smooth out float) 0:? 'x' (layout( location=20 component=1) smooth out 2-component vector of float) 0:? 'y' (layout( location=30 component=3) smooth out 2-component vector of float) 0:? 'z' (layout( location=31 component=1) smooth out 4-component vector of float) 0:? 'ba' (layout( location=32 component=1) smooth out 4X4 matrix of float) 0:? 'Ss' (layout( location=33 component=1) smooth out structure{ global int a}) 0:? 'bb' (layout( location=34 component=1) out block{ out int a}) 0:? 'bc' (layout( location=4095 component=1) smooth out float) 0:? 'bd' ( out block{layout( location=40 component=2) out float u, layout( location=40 component=0) out float v, layout( location=40 component=3) out float w, layout( location=40 component=1) out 2-component vector of float x, layout( location=41 component=3) out 2-component vector of float y, layout( location=42 component=1) out 4-component vector of float z, layout( location=42 component=1) out 4X4 matrix of float ba, layout( location=43 component=1) out structure{ global int a} Ss}) 0:? 'be' (layout( location=50 component=3) smooth out int) 0:? 'bf' (layout( location=50 component=0) smooth out 3-component vector of float) 0:? 'dfo' (layout( location=51 component=1) smooth out double) 0:? 'dvo' (layout( location=52 component=2) smooth out 2-component vector of double) 0:? 'dfo2' (layout( location=53) smooth out double) 0:? 'ffv2' (layout( location=53 component=2) smooth out 2-component vector of float) 0:? 'dvec4out' (layout( location=54) smooth out 4-component vector of double) 0:? 'overf' (layout( location=55) smooth out float) 0:? 'df2o' (layout( location=56 component=1) smooth out 2-component vector of float) 0:? 'sf2o' (layout( location=56 component=3) smooth out float) 0:? 'dv3o' (layout( location=57 component=2) smooth out 2-component vector of float) 0:? 'sf4o' (layout( location=57 component=3) smooth out float) 0:? 'dv3o2' (layout( location=58) flat out 3-component vector of double) 0:? 'dfo3' (layout( location=59 component=2) flat out double) 0:? 'dfo4' (layout( location=59 component=0) flat out double) 0:? 'bbinst1' ( out block{ out 4-component vector of float bbv}) 0:? 'bbinst2' ( out block{layout( xfb_buffer=0 xfb_offset=64) out 4-component vector of float bbv}) 0:? 'bbinst3' ( out block{layout( xfb_buffer=3 xfb_offset=16) out 4-component vector of float bbv}) 0:? 'ubbinst3' (layout( column_major shared) uniform block{layout( column_major shared xfb_offset=16) uniform 4-component vector of float bbv}) 0:? 'bg' (layout( xfb_buffer=2 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float) 0:? 'bh' (layout( xfb_buffer=3 xfb_offset=32 xfb_stride=64) smooth out 4-component vector of float) 0:? 'bbinst4' (layout( xfb_stride=80) out block{layout( xfb_buffer=2 xfb_offset=16) out 4-component vector of float bbv1, layout( xfb_buffer=2 xfb_offset=32) out 4-component vector of float bbv2}) 0:? 'bbinst5' ( out block{layout( xfb_buffer=3 xfb_offset=0) out 4-component vector of float bbv1, layout( xfb_buffer=3 xfb_offset=48 xfb_stride=64) out 4-component vector of float bbv2, out 4-component vector of float bbv3}) 0:? 'bbinst6' ( out block{layout( xfb_buffer=2 xfb_offset=0) out 4-component vector of float bbv1, layout( xfb_buffer=3 xfb_offset=32 xfb_stride=64) out 4-component vector of float bbv2, layout( xfb_buffer=2 xfb_offset=0) out 4-component vector of float bbv3, out 4-component vector of float bbv5, layout( xfb_buffer=2 xfb_offset=24) out float bbf6}) 0:? 'bj' (layout( xfb_buffer=1 xfb_offset=4) smooth out float) 0:? 'bk' (layout( xfb_buffer=1 xfb_offset=0) smooth out 2-component vector of int) 0:? 'bl' (layout( xfb_stride=48) smooth out float) 0:? 'bbinst7' (layout( xfb_stride=48) out block{layout( xfb_stride=64) out 4-component vector of float bbv1, layout( xfb_stride=32) out 4-component vector of float bbv2}) 0:? 'bbinst8' (layout( xfb_stride=92) out block{layout( xfb_buffer=0 xfb_offset=0) out bool b, layout( xfb_buffer=0 xfb_offset=8) out structure{ global bool b, global structure{ global int i, global double d, global float f} s, global 2-component vector of float v2} t, layout( xfb_buffer=0 xfb_offset=48) out int i, layout( xfb_buffer=0 xfb_offset=52) out 3X3 matrix of float m3, layout( xfb_buffer=0 xfb_offset=88) out float f, layout( xfb_buffer=0 xfb_offset=92) out float g}) 0:? 'bbinst9' ( out block{layout( xfb_buffer=4 xfb_offset=1) out bool b, layout( xfb_buffer=4 xfb_offset=12) out structure{ global bool b, global structure{ global int i, global double d, global float f} s, global 2-component vector of float v2} t, layout( xfb_buffer=4 xfb_offset=52) out 3X3 matrix of float m3, layout( xfb_buffer=4 xfb_offset=90) out int i, layout( xfb_buffer=4 xfb_offset=98) out double d, layout( xfb_buffer=4 xfb_offset=108) out structure{ global int a} s}) 0:? 'bm' (layout( xfb_buffer=5 xfb_offset=0) smooth out float) 0:? 'bbinst10' ( out block{layout( xfb_buffer=7 xfb_offset=0) out 4X4 matrix of double m1, layout( xfb_buffer=7 xfb_offset=128) out 4X4 matrix of double m2, layout( xfb_buffer=7 xfb_offset=256) out float f}) 0:? 'anon@0' ( out block{layout( xfb_buffer=3 xfb_offset=36) gl_Position 4-component vector of float Position gl_Position, layout( xfb_buffer=3 xfb_offset=32) gl_PointSize float PointSize gl_PointSize}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/450.comp.out000066400000000000000000000011121506534232700204400ustar00rootroot00000000000000450.comp ERROR: 0:2: 'local_size_x' : must be at least 1 ERROR: 0:4: 'binding' : atomic_uint binding is too large ERROR: 0:8: 'shared' : not allowed in nested scope ERROR: 3 compilation errors. No code generated. Shader version: 450 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:? Linker Objects Linked compute stage: Shader version: 450 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:? Linker Objects glslang-16.0.0/Test/baseResults/450.frag.out000066400000000000000000000416501506534232700204340ustar00rootroot00000000000000450.frag ERROR: 0:70: 'offsets' : argument must be compile-time constant ERROR: 0:71: 'offsets' : argument must be compile-time constant ERROR: 0:72: 'offsets' : argument must be compile-time constant ERROR: 0:88: 'location' : cannot use in a block array where new locations are needed for each block element ERROR: 0:93: 'early_fragment_tests' : can only apply to a standalone qualifier ERROR: 5 compilation errors. No code generated. Shader version: 450 Requested GL_ARB_sparse_texture2 ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 Sequence 0:10 move second child to first child ( temp 2-component vector of float) 0:10 'v2' ( temp 2-component vector of float) 0:10 dPdxFine ( global 2-component vector of float) 0:10 'in2' ( smooth in 2-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp 3-component vector of float) 0:11 'v3' ( temp 3-component vector of float) 0:11 dPdyCoarse ( global 3-component vector of float) 0:11 'in3' ( smooth in 3-component vector of float) 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'v4' ( temp 4-component vector of float) 0:12 fwidth ( global 4-component vector of float) 0:12 'in4' ( smooth in 4-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'v4' ( temp 4-component vector of float) 0:13 dPdyFine ( global 4-component vector of float) 0:13 'in4' ( smooth in 4-component vector of float) 0:14 move second child to first child ( temp 3-component vector of float) 0:14 'v3' ( temp 3-component vector of float) 0:14 dPdyFine ( global 3-component vector of float) 0:14 'in3' ( smooth in 3-component vector of float) 0:15 Sequence 0:15 move second child to first child ( temp float) 0:15 'f' ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 dPdx ( global float) 0:15 'in1' ( smooth in float) 0:15 dPdxFine ( global float) 0:15 'in1' ( smooth in float) 0:15 dPdxCoarse ( global float) 0:15 'in1' ( smooth in float) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'v4' ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 fwidthCoarse ( global 4-component vector of float) 0:16 'in4' ( smooth in 4-component vector of float) 0:16 fwidthFine ( global 4-component vector of float) 0:16 'in4' ( smooth in 4-component vector of float) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'cull' ( temp float) 0:18 direct index ( smooth temp float CullDistance) 0:18 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) 0:18 Constant: 0:18 2 (const int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'consts' ( temp float) 0:19 Constant: 0:19 20.000000 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 'gl_HelperInvocation' ( in bool HelperInvocation) 0:21 true case 0:22 Pre-Increment ( temp 4-component vector of float) 0:22 'v4' ( temp 4-component vector of float) 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'sum' ( temp int) 0:24 Constant: 0:24 32 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 2-component vector of bool) 0:32 'b2' ( temp 2-component vector of bool) 0:32 mix ( global 2-component vector of bool) 0:32 Construct bvec2 ( temp 2-component vector of bool) 0:32 'b1' ( temp bool) 0:32 Construct bvec2 ( temp 2-component vector of bool) 0:32 'b3' ( temp bool) 0:32 Construct bvec2 ( temp 2-component vector of bool) 0:32 'b' ( temp bool) 0:33 Sequence 0:33 move second child to first child ( temp uint) 0:33 'um' ( temp uint) 0:33 mix ( global uint) 0:33 'uin' ( temp uint) 0:33 'uin' ( temp uint) 0:33 'b' ( temp bool) 0:34 Sequence 0:34 move second child to first child ( temp 3-component vector of int) 0:34 'im3' ( temp 3-component vector of int) 0:34 mix ( global 3-component vector of int) 0:34 Construct ivec3 ( temp 3-component vector of int) 0:34 Convert uint to int ( temp int) 0:34 'uin' ( temp uint) 0:34 Construct ivec3 ( temp 3-component vector of int) 0:34 Convert uint to int ( temp int) 0:34 'uin' ( temp uint) 0:34 Construct bvec3 ( temp 3-component vector of bool) 0:34 'b' ( temp bool) 0:42 Function Definition: foo( ( global void) 0:42 Function Parameters: 0:44 Sequence 0:44 Sequence 0:44 move second child to first child ( temp int) 0:44 's' ( temp int) 0:44 textureSamples ( global int) 0:44 's2dms' ( uniform sampler2DMS) 0:45 add second child into first child ( temp int) 0:45 's' ( temp int) 0:45 textureSamples ( global int) 0:45 'us2dmsa' ( uniform usampler2DMSArray) 0:46 add second child into first child ( temp int) 0:46 's' ( temp int) 0:46 imageQuerySamples ( global int) 0:46 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:47 add second child into first child ( temp int) 0:47 's' ( temp int) 0:47 imageQuerySamples ( global int) 0:47 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'f' ( temp float) 0:48 imageAtomicExchange ( global float) 0:48 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) 0:48 Convert float to int ( temp 3-component vector of int) 0:48 'in3' ( smooth in 3-component vector of float) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 4.500000 0:61 Function Definition: testOffsets( ( global void) 0:61 Function Parameters: 0:63 Sequence 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of float) 0:63 'texel' ( temp 4-component vector of float) 0:63 Constant: 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:64 Sequence 0:64 move second child to first child ( temp 4-component vector of int) 0:64 'itexel' ( temp 4-component vector of int) 0:64 Constant: 0:64 0 (const int) 0:64 0 (const int) 0:64 0 (const int) 0:64 0 (const int) 0:66 sparseTextureGatherOffsets ( global int) 0:66 's2D' ( uniform sampler2D) 0:66 'c2' ( smooth in 2-component vector of float) 0:66 Constant: 0:66 1 (const int) 0:66 2 (const int) 0:66 3 (const int) 0:66 4 (const int) 0:66 15 (const int) 0:66 16 (const int) 0:66 -2 (const int) 0:66 0 (const int) 0:66 'texel' ( temp 4-component vector of float) 0:67 sparseTextureGatherOffsets ( global int) 0:67 'is2DArray' ( uniform isampler2DArray) 0:67 'c3' ( smooth in 3-component vector of float) 0:67 Constant: 0:67 1 (const int) 0:67 2 (const int) 0:67 3 (const int) 0:67 4 (const int) 0:67 15 (const int) 0:67 16 (const int) 0:67 -2 (const int) 0:67 0 (const int) 0:67 'itexel' ( temp 4-component vector of int) 0:67 Constant: 0:67 2 (const int) 0:68 sparseTextureGatherOffsets ( global int) 0:68 's2DRectShadow' ( uniform sampler2DRectShadow) 0:68 'c2' ( smooth in 2-component vector of float) 0:68 Constant: 0:68 2.000000 0:68 Constant: 0:68 1 (const int) 0:68 2 (const int) 0:68 3 (const int) 0:68 4 (const int) 0:68 15 (const int) 0:68 16 (const int) 0:68 -2 (const int) 0:68 0 (const int) 0:68 'texel' ( temp 4-component vector of float) 0:70 sparseTextureGatherOffsets ( global int) 0:70 's2D' ( uniform sampler2D) 0:70 'c2' ( smooth in 2-component vector of float) 0:70 'offsets' ( flat in 4-element array of 2-component vector of int) 0:70 'texel' ( temp 4-component vector of float) 0:71 sparseTextureGatherOffsets ( global int) 0:71 'is2DArray' ( uniform isampler2DArray) 0:71 'c3' ( smooth in 3-component vector of float) 0:71 'offsets' ( flat in 4-element array of 2-component vector of int) 0:71 'itexel' ( temp 4-component vector of int) 0:71 Constant: 0:71 2 (const int) 0:72 sparseTextureGatherOffsets ( global int) 0:72 's2DRectShadow' ( uniform sampler2DRectShadow) 0:72 'c2' ( smooth in 2-component vector of float) 0:72 Constant: 0:72 2.000000 0:72 'offsets' ( flat in 4-element array of 2-component vector of int) 0:72 'texel' ( temp 4-component vector of float) 0:78 Function Definition: cull(i1; ( global float) 0:78 Function Parameters: 0:78 'i' ( in int) 0:80 Sequence 0:80 Branch: Return with expression 0:80 Test condition and select ( temp float) 0:80 Condition 0:80 Compare Greater Than or Equal ( temp bool) 0:80 'i' ( in int) 0:80 Constant: 0:80 6 (const int) 0:80 true case 0:80 direct index ( smooth temp float CullDistance) 0:80 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) 0:80 Constant: 0:80 5 (const int) 0:80 false case 0:80 indirect index ( smooth temp float CullDistance) 0:80 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) 0:80 'i' ( in int) 0:? Linker Objects 0:? 'in1' ( smooth in float) 0:? 'in2' ( smooth in 2-component vector of float) 0:? 'in3' ( smooth in 3-component vector of float) 0:? 'in4' ( smooth in 4-component vector of float) 0:? 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) 0:? 's2dms' ( uniform sampler2DMS) 0:? 'us2dmsa' ( uniform usampler2DMSArray) 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) 0:? 's2D' ( uniform sampler2D) 0:? 'is2DArray' ( uniform isampler2DArray) 0:? 's2DRectShadow' ( uniform sampler2DRectShadow) 0:? 'offsets' ( flat in 4-element array of 2-component vector of int) 0:? 'c2' ( smooth in 2-component vector of float) 0:? 'c3' ( smooth in 3-component vector of float) 0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m}) 0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g}) 0:? 'f' ( smooth in float) Linked fragment stage: Shader version: 450 Requested GL_ARB_sparse_texture2 ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 Sequence 0:10 move second child to first child ( temp 2-component vector of float) 0:10 'v2' ( temp 2-component vector of float) 0:10 dPdxFine ( global 2-component vector of float) 0:10 'in2' ( smooth in 2-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp 3-component vector of float) 0:11 'v3' ( temp 3-component vector of float) 0:11 dPdyCoarse ( global 3-component vector of float) 0:11 'in3' ( smooth in 3-component vector of float) 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'v4' ( temp 4-component vector of float) 0:12 fwidth ( global 4-component vector of float) 0:12 'in4' ( smooth in 4-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'v4' ( temp 4-component vector of float) 0:13 dPdyFine ( global 4-component vector of float) 0:13 'in4' ( smooth in 4-component vector of float) 0:14 move second child to first child ( temp 3-component vector of float) 0:14 'v3' ( temp 3-component vector of float) 0:14 dPdyFine ( global 3-component vector of float) 0:14 'in3' ( smooth in 3-component vector of float) 0:15 Sequence 0:15 move second child to first child ( temp float) 0:15 'f' ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 dPdx ( global float) 0:15 'in1' ( smooth in float) 0:15 dPdxFine ( global float) 0:15 'in1' ( smooth in float) 0:15 dPdxCoarse ( global float) 0:15 'in1' ( smooth in float) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'v4' ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 fwidthCoarse ( global 4-component vector of float) 0:16 'in4' ( smooth in 4-component vector of float) 0:16 fwidthFine ( global 4-component vector of float) 0:16 'in4' ( smooth in 4-component vector of float) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'cull' ( temp float) 0:18 direct index ( smooth temp float CullDistance) 0:18 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) 0:18 Constant: 0:18 2 (const int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'consts' ( temp float) 0:19 Constant: 0:19 20.000000 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 'gl_HelperInvocation' ( in bool HelperInvocation) 0:21 true case 0:22 Pre-Increment ( temp 4-component vector of float) 0:22 'v4' ( temp 4-component vector of float) 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'sum' ( temp int) 0:24 Constant: 0:24 32 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 2-component vector of bool) 0:32 'b2' ( temp 2-component vector of bool) 0:32 mix ( global 2-component vector of bool) 0:32 Construct bvec2 ( temp 2-component vector of bool) 0:32 'b1' ( temp bool) 0:32 Construct bvec2 ( temp 2-component vector of bool) 0:32 'b3' ( temp bool) 0:32 Construct bvec2 ( temp 2-component vector of bool) 0:32 'b' ( temp bool) 0:33 Sequence 0:33 move second child to first child ( temp uint) 0:33 'um' ( temp uint) 0:33 mix ( global uint) 0:33 'uin' ( temp uint) 0:33 'uin' ( temp uint) 0:33 'b' ( temp bool) 0:34 Sequence 0:34 move second child to first child ( temp 3-component vector of int) 0:34 'im3' ( temp 3-component vector of int) 0:34 mix ( global 3-component vector of int) 0:34 Construct ivec3 ( temp 3-component vector of int) 0:34 Convert uint to int ( temp int) 0:34 'uin' ( temp uint) 0:34 Construct ivec3 ( temp 3-component vector of int) 0:34 Convert uint to int ( temp int) 0:34 'uin' ( temp uint) 0:34 Construct bvec3 ( temp 3-component vector of bool) 0:34 'b' ( temp bool) 0:? Linker Objects 0:? 'in1' ( smooth in float) 0:? 'in2' ( smooth in 2-component vector of float) 0:? 'in3' ( smooth in 3-component vector of float) 0:? 'in4' ( smooth in 4-component vector of float) 0:? 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) 0:? 's2dms' ( uniform sampler2DMS) 0:? 'us2dmsa' ( uniform usampler2DMSArray) 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) 0:? 's2D' ( uniform sampler2D) 0:? 'is2DArray' ( uniform isampler2DArray) 0:? 's2DRectShadow' ( uniform sampler2DRectShadow) 0:? 'offsets' ( flat in 4-element array of 2-component vector of int) 0:? 'c2' ( smooth in 2-component vector of float) 0:? 'c3' ( smooth in 3-component vector of float) 0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m}) 0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g}) 0:? 'f' ( smooth in float) glslang-16.0.0/Test/baseResults/450.geom.out000066400000000000000000000077721506534232700204530ustar00rootroot00000000000000450.geom ERROR: 0:15: '[' : array index out of range '3' 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. Shader version: 450 invocations = -1 max_vertices = -1 input primitive = triangles output primitive = none ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance}) 0:15 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:15 Constant: 0:15 3 (const int) 0:16 move second child to first child ( temp float) 0:16 direct index (layout( stream=0) temp float CullDistance) 0:16 gl_CullDistance: direct index for structure (layout( stream=0) out 3-element array of float CullDistance) 0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance}) 0:16 Constant: 0:16 3 (const uint) 0:16 Constant: 0:16 2 (const int) 0:16 direct index ( temp float CullDistance) 0:16 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance) 0:16 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance}) 0:16 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 2 (const int) 0:? Linker Objects 0:? 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance}) 0:? 'f' ( in 3-element array of float) Linked geometry stage: ERROR: Linking geometry stage: At least one shader must specify an output layout primitive ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value) Shader version: 450 invocations = 1 max_vertices = -1 input primitive = triangles output primitive = none ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance}) 0:15 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:15 Constant: 0:15 3 (const int) 0:16 move second child to first child ( temp float) 0:16 direct index (layout( stream=0) temp float CullDistance) 0:16 gl_CullDistance: direct index for structure (layout( stream=0) out 3-element array of float CullDistance) 0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance}) 0:16 Constant: 0:16 3 (const uint) 0:16 Constant: 0:16 2 (const int) 0:16 direct index ( temp float CullDistance) 0:16 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance) 0:16 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance}) 0:16 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 2 (const int) 0:? Linker Objects 0:? 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance}) 0:? 'f' ( in 3-element array of float) glslang-16.0.0/Test/baseResults/450.tesc.out000066400000000000000000000075121506534232700204520ustar00rootroot00000000000000450.tesc ERROR: 0:20: 'location' : cannot use in a block array where new locations are needed for each block element ERROR: 1 compilation errors. No code generated. Shader version: 450 vertices = -1 ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float CullDistance) 0:13 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:13 indirect index ( temp block{ out 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_out' ( out 4-element array of block{ out 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_InvocationID' ( in int InvocationID) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 direct index ( temp float CullDistance) 0:13 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance) 0:13 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects 0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:? 'gl_out' ( out 4-element array of block{ out 3-element array of float CullDistance gl_CullDistance}) 0:? 'bInst1' ( out 2-element array of block{layout( location=4) out float f, layout( location=5) out float g}) 0:? 'bInst2' ( out 2-element array of 3-element array of block{layout( location=6) out float f, layout( location=7) out float g}) Linked tessellation control stage: ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...) Shader version: 450 vertices = -1 ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float CullDistance) 0:13 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:13 indirect index ( temp block{ out 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_out' ( out 4-element array of block{ out 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_InvocationID' ( in int InvocationID) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 direct index ( temp float CullDistance) 0:13 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance) 0:13 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects 0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:? 'gl_out' ( out 4-element array of block{ out 3-element array of float CullDistance gl_CullDistance}) 0:? 'bInst1' ( out 2-element array of block{layout( location=4) out float f, layout( location=5) out float g}) 0:? 'bInst2' ( out 2-element array of 3-element array of block{layout( location=6) out float f, layout( location=7) out float g}) glslang-16.0.0/Test/baseResults/450.tese.out000066400000000000000000000076251506534232700204610ustar00rootroot00000000000000450.tese ERROR: 0:16: 'equal_spacing' : can only apply to a standalone qualifier ERROR: 0:17: 'fractional_even_spacing' : can only apply to a standalone qualifier ERROR: 0:18: 'fractional_odd_spacing' : can only apply to a standalone qualifier ERROR: 0:19: 'cw' : can only apply to a standalone qualifier ERROR: 0:20: 'ccw' : can only apply to a standalone qualifier ERROR: 0:21: 'point_mode' : can only apply to a standalone qualifier ERROR: 6 compilation errors. No code generated. Shader version: 450 input primitive = none vertex spacing = none triangle order = none ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float CullDistance) 0:13 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:13 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 3 (const uint) 0:13 Constant: 0:13 2 (const int) 0:13 direct index ( temp float CullDistance) 0:13 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance) 0:13 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects 0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) 0:? 'f1' ( in 32-element array of float) 0:? 'f2' ( in 32-element array of float) 0:? 'f3' ( in 32-element array of float) 0:? 'f4' ( in 32-element array of float) 0:? 'f5' ( in 32-element array of float) 0:? 'f6' ( in 32-element array of float) Linked tessellation evaluation stage: ERROR: Linking tessellation evaluation stage: At least one shader must specify an input layout primitive Shader version: 450 input primitive = none vertex spacing = equal_spacing triangle order = ccw ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float CullDistance) 0:13 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:13 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 3 (const uint) 0:13 Constant: 0:13 2 (const int) 0:13 direct index ( temp float CullDistance) 0:13 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance) 0:13 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects 0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) 0:? 'f1' ( in 32-element array of float) 0:? 'f2' ( in 32-element array of float) 0:? 'f3' ( in 32-element array of float) 0:? 'f4' ( in 32-element array of float) 0:? 'f5' ( in 32-element array of float) 0:? 'f6' ( in 32-element array of float) glslang-16.0.0/Test/baseResults/450.vert.out000066400000000000000000000130221506534232700204650ustar00rootroot00000000000000450.vert ERROR: 0:12: 'out' : cannot be bool ERROR: 0:13: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: outo ERROR: 0:30: '::' : not supported ERROR: 0:31: 'atomicCounterAdd' : no matching overloaded function found ERROR: 0:32: 'atomicCounterSubtract' : no matching overloaded function found ERROR: 0:33: 'atomicCounterMin' : no matching overloaded function found ERROR: 0:34: 'atomicCounterMax' : no matching overloaded function found ERROR: 0:35: 'atomicCounterAnd' : no matching overloaded function found ERROR: 0:36: 'atomicCounterOr' : no matching overloaded function found ERROR: 0:37: 'atomicCounterXor' : no matching overloaded function found ERROR: 0:38: 'atomicCounterExchange' : no matching overloaded function found ERROR: 0:39: 'atomicCounterCompSwap' : no matching overloaded function found ERROR: 0:41: 'gl_BaseVertex' : undeclared identifier ERROR: 0:41: 'gl_BaseInstance' : undeclared identifier ERROR: 0:41: 'gl_DrawID' : undeclared identifier ERROR: 0:41: '=' : cannot convert from ' temp float' to ' temp int' ERROR: 0:44: 'anyInvocation' : no matching overloaded function found ERROR: 0:45: 'allInvocations' : no matching overloaded function found ERROR: 0:46: 'allInvocationsEqual' : no matching overloaded function found ERROR: 0:48: 'extraneous semicolon' : not supported for this version or the enabled extensions ERROR: 0:50: 'location' : cannot apply to uniform or buffer block ERROR: 0:54: 'location' : cannot apply to uniform or buffer block ERROR: 22 compilation errors. No code generated. Shader version: 450 ERROR: node is still EOpNull! 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 move second child to first child ( temp float) 0:9 direct index ( temp float CullDistance) 0:9 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:9 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) 0:9 Constant: 0:9 3 (const uint) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 4.500000 0:28 Function Definition: foo( ( global void) 0:28 Function Parameters: 0:? Sequence 0:31 Constant: 0:31 0.000000 0:32 Constant: 0:32 0.000000 0:33 Constant: 0:33 0.000000 0:34 Constant: 0:34 0.000000 0:35 Constant: 0:35 0.000000 0:36 Constant: 0:36 0.000000 0:37 Constant: 0:37 0.000000 0:38 Constant: 0:38 0.000000 0:39 Constant: 0:39 0.000000 0:44 Constant: 0:44 0.000000 0:45 Constant: 0:45 0.000000 0:46 Constant: 0:46 0.000000 0:? Linker Objects 0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) 0:? 'outb' ( smooth out bool) 0:? 'outo' ( smooth out sampler2D) 0:? 'outa' ( smooth out 4-element array of float) 0:? 'outaa' ( smooth out 4-element array of 2-element array of float) 0:? 'outs' ( smooth out structure{ global float f}) 0:? 'outasa' ( smooth out 4-element array of structure{ global float f}) 0:? 'outsa' ( smooth out 4-element array of structure{ global float f}) 0:? 'outSA' ( smooth out structure{ global 4-element array of float f}) 0:? 'outSS' ( smooth out structure{ global float f, global structure{ global float f} s}) 0:? 'aui' (layout( binding=0 offset=0) uniform atomic_uint) 0:? 'ui' ( global uint) 0:? 'anon@1' (layout( location=0 column_major shared) uniform block{layout( column_major shared) uniform int a}) 0:? 'anon@2' (layout( location=0 column_major shared) buffer block{layout( column_major shared) buffer int b}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 450 ERROR: node is still EOpNull! 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 move second child to first child ( temp float) 0:9 direct index ( temp float CullDistance) 0:9 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:9 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) 0:9 Constant: 0:9 3 (const uint) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 4.500000 0:? Linker Objects 0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) 0:? 'outb' ( smooth out bool) 0:? 'outo' ( smooth out sampler2D) 0:? 'outa' ( smooth out 4-element array of float) 0:? 'outaa' ( smooth out 4-element array of 2-element array of float) 0:? 'outs' ( smooth out structure{ global float f}) 0:? 'outasa' ( smooth out 4-element array of structure{ global float f}) 0:? 'outsa' ( smooth out 4-element array of structure{ global float f}) 0:? 'outSA' ( smooth out structure{ global 4-element array of float f}) 0:? 'outSS' ( smooth out structure{ global float f, global structure{ global float f} s}) 0:? 'aui' (layout( binding=0 offset=0) uniform atomic_uint) 0:? 'ui' ( global uint) 0:? 'anon@1' (layout( location=0 column_major shared) uniform block{layout( column_major shared) uniform int a}) 0:? 'anon@2' (layout( location=0 column_major shared) buffer block{layout( column_major shared) buffer int b}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/460.frag.out000066400000000000000000000073561506534232700204420ustar00rootroot00000000000000460.frag ERROR: 0:22: 'attribute' : required extension not requested: Possible extensions include: GL_EXT_control_flow_attributes GL_EXT_control_flow_attributes2 ERROR: 0:23: 'attribute' : required extension not requested: GL_EXT_control_flow_attributes ERROR: 0:30: 'dependency_length' : must be positive ERROR: 0:31: 'dependency_length' : must be positive ERROR: 4 compilation errors. No code generated. Shader version: 460 Requested GL_EXT_control_flow_attributes ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 interpolateAtCentroid ( global 4-component vector of float) 0:12 v: direct index for structure ( global 4-component vector of float) 0:12 's' ( smooth in structure{ global float f, global 4-component vector of float v}) 0:12 Constant: 0:12 1 (const int) 0:14 move second child to first child ( temp bool) 0:14 'b1' ( temp bool) 0:14 anyInvocation ( global bool) 0:14 'b1' ( temp bool) 0:15 move second child to first child ( temp bool) 0:15 'b1' ( temp bool) 0:15 allInvocations ( global bool) 0:15 'b1' ( temp bool) 0:16 move second child to first child ( temp bool) 0:16 'b1' ( temp bool) 0:16 allInvocationsEqual ( global bool) 0:16 'b1' ( temp bool) 0:19 Function Definition: attExtBad( ( global void) 0:19 Function Parameters: 0:22 Sequence 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 'i' ( temp int) 0:22 Constant: 0:22 0 (const int) 0:22 Loop with condition tested first: Dependency 4 0:22 Loop Condition 0:22 Compare Less Than ( temp bool) 0:22 'i' ( temp int) 0:22 Constant: 0:22 8 (const int) 0:22 No loop body 0:22 Loop Terminal Expression 0:22 Pre-Increment ( temp int) 0:22 'i' ( temp int) 0:23 Test condition and select ( temp void): Flatten 0:23 Condition 0:23 Constant: 0:23 true (const bool) 0:23 true case is null 0:28 Function Definition: attExt( ( global void) 0:28 Function Parameters: 0:30 Sequence 0:30 Loop with condition not tested first 0:30 Loop Condition 0:30 Constant: 0:30 true (const bool) 0:30 No loop body 0:31 Loop with condition not tested first 0:31 Loop Condition 0:31 Constant: 0:31 true (const bool) 0:31 No loop body 0:? Linker Objects 0:? 's' ( smooth in structure{ global float f, global 4-component vector of float v}) Linked fragment stage: Shader version: 460 Requested GL_EXT_control_flow_attributes ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 interpolateAtCentroid ( global 4-component vector of float) 0:12 v: direct index for structure ( global 4-component vector of float) 0:12 's' ( smooth in structure{ global float f, global 4-component vector of float v}) 0:12 Constant: 0:12 1 (const int) 0:14 move second child to first child ( temp bool) 0:14 'b1' ( temp bool) 0:14 anyInvocation ( global bool) 0:14 'b1' ( temp bool) 0:15 move second child to first child ( temp bool) 0:15 'b1' ( temp bool) 0:15 allInvocations ( global bool) 0:15 'b1' ( temp bool) 0:16 move second child to first child ( temp bool) 0:16 'b1' ( temp bool) 0:16 allInvocationsEqual ( global bool) 0:16 'b1' ( temp bool) 0:? Linker Objects 0:? 's' ( smooth in structure{ global float f, global 4-component vector of float v}) glslang-16.0.0/Test/baseResults/460.vert.out000066400000000000000000000031211506534232700204650ustar00rootroot00000000000000460.vert Shader version: 460 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:? Sequence 0:11 move second child to first child ( temp bool) 0:11 'b1' ( temp bool) 0:11 anyInvocation ( global bool) 0:11 'b1' ( temp bool) 0:12 move second child to first child ( temp bool) 0:12 'b1' ( temp bool) 0:12 allInvocations ( global bool) 0:12 'b1' ( temp bool) 0:13 move second child to first child ( temp bool) 0:13 'b1' ( temp bool) 0:13 allInvocationsEqual ( global bool) 0:13 'b1' ( temp bool) 0:? Linker Objects 0:? 'i' ( global int) 0:? 'f' ( global float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 460 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:? Sequence 0:11 move second child to first child ( temp bool) 0:11 'b1' ( temp bool) 0:11 anyInvocation ( global bool) 0:11 'b1' ( temp bool) 0:12 move second child to first child ( temp bool) 0:12 'b1' ( temp bool) 0:12 allInvocations ( global bool) 0:12 'b1' ( temp bool) 0:13 move second child to first child ( temp bool) 0:13 'b1' ( temp bool) 0:13 allInvocationsEqual ( global bool) 0:13 'b1' ( temp bool) 0:? Linker Objects 0:? 'i' ( global int) 0:? 'f' ( global float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/BestMatchFunction.vert.out000066400000000000000000000233141506534232700235420ustar00rootroot00000000000000BestMatchFunction.vert 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) glslang-16.0.0/Test/baseResults/EndStreamPrimitive.geom.out000066400000000000000000000056731506534232700237140ustar00rootroot00000000000000EndStreamPrimitive.geom 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) glslang-16.0.0/Test/baseResults/GL_ARB_bindless_texture.frag.out000066400000000000000000000273771506534232700245670ustar00rootroot00000000000000GL_ARB_bindless_texture.frag Shader version: 460 Requested GL_ARB_bindless_texture 0:? Sequence 0:38 Function Definition: main( ( global void) 0:38 Function Parameters: 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'color0' ( out 4-component vector of float) 0:40 texture ( global 4-component vector of float) 0:40 's0' ( uniform sampler2D) 0:40 'coord' ( uniform 2-component vector of float) 0:41 move second child to first child ( temp 4-component vector of float) 0:41 'color1' ( out 4-component vector of float) 0:41 texture ( global 4-component vector of float) 0:41 's1' ( smooth in sampler2D) 0:41 'coord' ( uniform 2-component vector of float) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'color2' ( out 4-component vector of float) 0:42 texture ( global 4-component vector of float) 0:42 packUint2x32 ( temp sampler2D) 0:42 's2' ( uniform 2-component vector of uint) 0:42 'coord' ( uniform 2-component vector of float) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'color3' ( out 4-component vector of float) 0:43 texture ( global 4-component vector of float) 0:43 packUint2x32 ( temp sampler2D) 0:43 's3' ( uniform 2-component vector of int) 0:43 'coord' ( uniform 2-component vector of float) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'color4' ( out 4-component vector of float) 0:44 texture ( global 4-component vector of float) 0:44 indirect index ( smooth temp sampler2D) 0:44 indirect index ( smooth temp 3-element array of sampler2D) 0:44 's4' ( smooth in 2-element array of 3-element array of sampler2D) 0:44 'index' ( uniform int) 0:44 'index' ( uniform int) 0:44 'coord' ( uniform 2-component vector of float) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 'color5' ( out 4-component vector of float) 0:45 texture ( global 4-component vector of float) 0:45 s5: direct index for structure (layout( column_major shared layoutBindlessSampler) uniform sampler2D) 0:45 indirect index (layout( column_major shared) temp block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) 0:45 'bbs5' (layout( column_major shared) uniform 2-element array of block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) 0:45 'index' ( uniform int) 0:45 Constant: 0:45 0 (const int) 0:45 'coord' ( uniform 2-component vector of float) 0:46 move second child to first child ( temp 4-component vector of float) 0:46 'color6' ( out 4-component vector of float) 0:46 textureFetch ( global 4-component vector of float) 0:46 's6' ( smooth in samplerBuffer) 0:46 'icoord' ( uniform int) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 'color7' ( out 4-component vector of float) 0:47 textureFetch ( global 4-component vector of float) 0:47 s7: direct index for structure (layout( column_major shared layoutBindlessSampler) uniform samplerBuffer) 0:47 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared layoutBindlessSampler) uniform samplerBuffer s7}) 0:47 Constant: 0:47 0 (const uint) 0:47 'icoord' ( uniform int) 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'color8' ( out 4-component vector of float) 0:48 textureFetch ( global 4-component vector of float) 0:48 s8: direct index for structure (layout( column_major shared layoutBindlessSampler) buffer samplerBuffer) 0:48 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared layoutBindlessSampler) buffer samplerBuffer s8}) 0:48 Constant: 0:48 0 (const uint) 0:48 'icoord' ( uniform int) 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'color9' ( out 4-component vector of float) 0:49 imageLoad ( global 4-component vector of float) 0:49 'i9' (layout( rgba8 layoutBindlessImage) smooth in image2D) 0:49 Constant: 0:49 0 (const int) 0:49 0 (const int) 0:? Linker Objects 0:? 's0' ( uniform sampler2D) 0:? 's1' ( smooth in sampler2D) 0:? 's2' ( uniform 2-component vector of uint) 0:? 's3' ( uniform 2-component vector of int) 0:? 'index' ( uniform int) 0:? 's4' ( smooth in 2-element array of 3-element array of sampler2D) 0:? 'bbs5' (layout( column_major shared) uniform 2-element array of block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) 0:? 's6' ( smooth in samplerBuffer) 0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared layoutBindlessSampler) uniform samplerBuffer s7}) 0:? 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared layoutBindlessSampler) buffer samplerBuffer s8}) 0:? 'i9' (layout( rgba8 layoutBindlessImage) smooth in image2D) 0:? 'coord' ( uniform 2-component vector of float) 0:? 'icoord' ( uniform int) 0:? 'color0' ( out 4-component vector of float) 0:? 'color1' ( out 4-component vector of float) 0:? 'color2' ( out 4-component vector of float) 0:? 'color3' ( out 4-component vector of float) 0:? 'color4' ( out 4-component vector of float) 0:? 'color5' ( out 4-component vector of float) 0:? 'color6' ( out 4-component vector of float) 0:? 'color7' ( out 4-component vector of float) 0:? 'color8' ( out 4-component vector of float) 0:? 'color9' ( out 4-component vector of float) Linked fragment stage: Shader version: 460 Requested GL_ARB_bindless_texture 0:? Sequence 0:38 Function Definition: main( ( global void) 0:38 Function Parameters: 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'color0' ( out 4-component vector of float) 0:40 texture ( global 4-component vector of float) 0:40 's0' ( uniform sampler2D) 0:40 'coord' ( uniform 2-component vector of float) 0:41 move second child to first child ( temp 4-component vector of float) 0:41 'color1' ( out 4-component vector of float) 0:41 texture ( global 4-component vector of float) 0:41 's1' ( smooth in sampler2D) 0:41 'coord' ( uniform 2-component vector of float) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'color2' ( out 4-component vector of float) 0:42 texture ( global 4-component vector of float) 0:42 packUint2x32 ( temp sampler2D) 0:42 's2' ( uniform 2-component vector of uint) 0:42 'coord' ( uniform 2-component vector of float) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'color3' ( out 4-component vector of float) 0:43 texture ( global 4-component vector of float) 0:43 packUint2x32 ( temp sampler2D) 0:43 's3' ( uniform 2-component vector of int) 0:43 'coord' ( uniform 2-component vector of float) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'color4' ( out 4-component vector of float) 0:44 texture ( global 4-component vector of float) 0:44 indirect index ( smooth temp sampler2D) 0:44 indirect index ( smooth temp 3-element array of sampler2D) 0:44 's4' ( smooth in 2-element array of 3-element array of sampler2D) 0:44 'index' ( uniform int) 0:44 'index' ( uniform int) 0:44 'coord' ( uniform 2-component vector of float) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 'color5' ( out 4-component vector of float) 0:45 texture ( global 4-component vector of float) 0:45 s5: direct index for structure (layout( column_major shared layoutBindlessSampler) uniform sampler2D) 0:45 indirect index (layout( column_major shared) temp block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) 0:45 'bbs5' (layout( column_major shared) uniform 2-element array of block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) 0:45 'index' ( uniform int) 0:45 Constant: 0:45 0 (const int) 0:45 'coord' ( uniform 2-component vector of float) 0:46 move second child to first child ( temp 4-component vector of float) 0:46 'color6' ( out 4-component vector of float) 0:46 textureFetch ( global 4-component vector of float) 0:46 's6' ( smooth in samplerBuffer) 0:46 'icoord' ( uniform int) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 'color7' ( out 4-component vector of float) 0:47 textureFetch ( global 4-component vector of float) 0:47 s7: direct index for structure (layout( column_major shared layoutBindlessSampler) uniform samplerBuffer) 0:47 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared layoutBindlessSampler) uniform samplerBuffer s7}) 0:47 Constant: 0:47 0 (const uint) 0:47 'icoord' ( uniform int) 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'color8' ( out 4-component vector of float) 0:48 textureFetch ( global 4-component vector of float) 0:48 s8: direct index for structure (layout( column_major shared layoutBindlessSampler) buffer samplerBuffer) 0:48 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared layoutBindlessSampler) buffer samplerBuffer s8}) 0:48 Constant: 0:48 0 (const uint) 0:48 'icoord' ( uniform int) 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'color9' ( out 4-component vector of float) 0:49 imageLoad ( global 4-component vector of float) 0:49 'i9' (layout( rgba8 layoutBindlessImage) smooth in image2D) 0:49 Constant: 0:49 0 (const int) 0:49 0 (const int) 0:? Linker Objects 0:? 's0' ( uniform sampler2D) 0:? 's1' ( smooth in sampler2D) 0:? 's2' ( uniform 2-component vector of uint) 0:? 's3' ( uniform 2-component vector of int) 0:? 'index' ( uniform int) 0:? 's4' ( smooth in 2-element array of 3-element array of sampler2D) 0:? 'bbs5' (layout( column_major shared) uniform 2-element array of block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) 0:? 's6' ( smooth in samplerBuffer) 0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared layoutBindlessSampler) uniform samplerBuffer s7}) 0:? 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared layoutBindlessSampler) buffer samplerBuffer s8}) 0:? 'i9' (layout( rgba8 layoutBindlessImage) smooth in image2D) 0:? 'coord' ( uniform 2-component vector of float) 0:? 'icoord' ( uniform int) 0:? 'color0' ( out 4-component vector of float) 0:? 'color1' ( out 4-component vector of float) 0:? 'color2' ( out 4-component vector of float) 0:? 'color3' ( out 4-component vector of float) 0:? 'color4' ( out 4-component vector of float) 0:? 'color5' ( out 4-component vector of float) 0:? 'color6' ( out 4-component vector of float) 0:? 'color7' ( out 4-component vector of float) 0:? 'color8' ( out 4-component vector of float) 0:? 'color9' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/GL_ARB_draw_instanced.vert.out000066400000000000000000000223031506534232700242120ustar00rootroot00000000000000GL_ARB_draw_instanced.vert Shader version: 150 Requested GL_ARB_draw_instanced 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'vertex' ( temp 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 divide ( temp 2-component vector of float) 0:12 vector swizzle ( temp 2-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'va' ( in 64-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Sequence 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3.000000 0:12 vector swizzle ( temp 2-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'va' ( in 64-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Sequence 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 indirect index ( temp 3-component vector of float) 0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) 0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:12 Constant: 0:12 1.000000 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'color' ( smooth out 4-component vector of float) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'i' ( temp int) 0:14 Constant: 0:14 1 (const int) 0:14 Loop with condition tested first 0:14 Loop Condition 0:14 Compare Less Than ( temp bool) 0:14 'i' ( temp int) 0:14 Constant: 0:14 64 (const int) 0:14 Loop Body 0:15 add second child into first child ( temp 4-component vector of float) 0:15 'color' ( smooth out 4-component vector of float) 0:15 indirect index ( temp 4-component vector of float) 0:15 'va' ( in 64-element array of 4-component vector of float) 0:15 'i' ( temp int) 0:14 Loop Terminal Expression 0:14 Post-Increment ( temp int) 0:14 'i' ( temp int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:16 Constant: 0:16 0 (const uint) 0:16 matrix-times-vector ( temp 4-component vector of float) 0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:16 'vertex' ( temp 4-component vector of float) 0:17 move second child to first child ( temp float) 0:17 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:17 Constant: 0:17 1 (const uint) 0:17 Constant: 0:17 1.000000 0:? Linker Objects 0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) 0:? 'va' ( in 64-element array of 4-component vector of float) 0:? 'color' ( smooth out 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 150 Requested GL_ARB_draw_instanced 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'vertex' ( temp 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 divide ( temp 2-component vector of float) 0:12 vector swizzle ( temp 2-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'va' ( in 64-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Sequence 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3.000000 0:12 vector swizzle ( temp 2-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'va' ( in 64-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Sequence 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 indirect index ( temp 3-component vector of float) 0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) 0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:12 Constant: 0:12 1.000000 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'color' ( smooth out 4-component vector of float) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'i' ( temp int) 0:14 Constant: 0:14 1 (const int) 0:14 Loop with condition tested first 0:14 Loop Condition 0:14 Compare Less Than ( temp bool) 0:14 'i' ( temp int) 0:14 Constant: 0:14 64 (const int) 0:14 Loop Body 0:15 add second child into first child ( temp 4-component vector of float) 0:15 'color' ( smooth out 4-component vector of float) 0:15 indirect index ( temp 4-component vector of float) 0:15 'va' ( in 64-element array of 4-component vector of float) 0:15 'i' ( temp int) 0:14 Loop Terminal Expression 0:14 Post-Increment ( temp int) 0:14 'i' ( temp int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:16 Constant: 0:16 0 (const uint) 0:16 matrix-times-vector ( temp 4-component vector of float) 0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:16 'vertex' ( temp 4-component vector of float) 0:17 move second child to first child ( temp float) 0:17 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:17 Constant: 0:17 1 (const uint) 0:17 Constant: 0:17 1.000000 0:? Linker Objects 0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) 0:? 'va' ( in 64-element array of 4-component vector of float) 0:? 'color' ( smooth out 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/GL_ARB_fragment_coord_conventions.vert.out000066400000000000000000000136071506534232700266520ustar00rootroot00000000000000GL_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) glslang-16.0.0/Test/baseResults/GL_ARB_gpu_shader5.u2i.vert.out000066400000000000000000000033041506534232700241310ustar00rootroot00000000000000GL_ARB_gpu_shader5.u2i.vert Shader version: 150 Requested GL_ARB_gpu_shader5 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp uint) 0:9 'v' ( temp uint) 0:9 Constant: 0:9 0 (const uint) 0:10 move second child to first child ( temp uint) 0:10 'v' ( temp uint) 0:10 subtract ( temp uint) 0:10 Convert int to uint ( temp uint) 0:10 'u2' ( uniform int) 0:10 Convert int to uint ( temp uint) 0:10 'u1' ( uniform int) 0:? Linker Objects 0:? 'u1' ( uniform int) 0:? 'u2' ( uniform int) 0:? 'result' ( smooth out 4-component vector of float) 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:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp uint) 0:9 'v' ( temp uint) 0:9 Constant: 0:9 0 (const uint) 0:10 move second child to first child ( temp uint) 0:10 'v' ( temp uint) 0:10 subtract ( temp uint) 0:10 Convert int to uint ( temp uint) 0:10 'u2' ( uniform int) 0:10 Convert int to uint ( temp uint) 0:10 'u1' ( uniform int) 0:? Linker Objects 0:? 'u1' ( uniform int) 0:? 'u2' ( uniform int) 0:? 'result' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/GL_ARB_texture_multisample.vert.out000066400000000000000000000233201506534232700253410ustar00rootroot00000000000000GL_ARB_texture_multisample.vert Shader version: 140 Requested GL_ARB_texture_multisample 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 float) 0:16 'result' ( smooth out float) 0:16 direct index ( temp float) 0:16 textureFetch ( global 4-component vector of float) 0:16 'data' ( uniform sampler2DMS) 0:16 Constant: 0:16 0 (const int) 0:16 0 (const int) 0:16 Constant: 0:16 3 (const int) 0:16 Constant: 0:16 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of int) 0:17 'temp' ( temp 2-component vector of int) 0:17 textureSize ( global 2-component vector of int) 0:17 'data' ( uniform sampler2DMS) 0:18 move second child to first child ( temp float) 0:18 'result' ( smooth out float) 0:18 direct index ( temp float) 0:18 textureFetch ( global 4-component vector of float) 0:18 'data1' ( uniform sampler2DMSArray) 0:18 Constant: 0:18 0 (const int) 0:18 0 (const int) 0:18 0 (const int) 0:18 Constant: 0:18 3 (const int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp 3-component vector of int) 0:19 'temp1' ( temp 3-component vector of int) 0:19 textureSize ( global 3-component vector of int) 0:19 'data1' ( uniform sampler2DMSArray) 0:20 move second child to first child ( temp int) 0:20 'result1' ( smooth out int) 0:20 direct index ( temp int) 0:20 textureFetch ( global 4-component vector of int) 0:20 'data2' ( uniform isampler2DMS) 0:20 Constant: 0:20 0 (const int) 0:20 0 (const int) 0:20 Constant: 0:20 3 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 'temp' ( temp 2-component vector of int) 0:21 textureSize ( global 2-component vector of int) 0:21 'data2' ( uniform isampler2DMS) 0:22 move second child to first child ( temp uint) 0:22 'result2' ( smooth out uint) 0:22 direct index ( temp uint) 0:22 textureFetch ( global 4-component vector of uint) 0:22 'data3' ( uniform usampler2DMSArray) 0:22 Constant: 0:22 0 (const int) 0:22 0 (const int) 0:22 0 (const int) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 move second child to first child ( temp 3-component vector of int) 0:23 'temp1' ( temp 3-component vector of int) 0:23 textureSize ( global 3-component vector of int) 0:23 'data3' ( uniform usampler2DMSArray) 0:24 move second child to first child ( temp uint) 0:24 'result2' ( smooth out uint) 0:24 direct index ( temp uint) 0:24 textureFetch ( global 4-component vector of uint) 0:24 'data4' ( uniform usampler2DMS) 0:24 Constant: 0:24 0 (const int) 0:24 0 (const int) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: 0:24 0 (const int) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 'temp' ( temp 2-component vector of int) 0:25 textureSize ( global 2-component vector of int) 0:25 'data4' ( uniform usampler2DMS) 0:26 move second child to first child ( temp int) 0:26 'result1' ( smooth out int) 0:26 direct index ( temp int) 0:26 textureFetch ( global 4-component vector of int) 0:26 'data5' ( uniform isampler2DMSArray) 0:26 Constant: 0:26 0 (const int) 0:26 0 (const int) 0:26 0 (const int) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:27 move second child to first child ( temp 3-component vector of int) 0:27 'temp1' ( temp 3-component vector of int) 0:27 textureSize ( global 3-component vector of int) 0:27 'data5' ( uniform isampler2DMSArray) 0:? Linker Objects 0:? 'result' ( smooth out float) 0:? 'result1' ( smooth out int) 0:? 'result2' ( smooth out uint) 0:? 'data' ( uniform sampler2DMS) 0:? 'data1' ( uniform sampler2DMSArray) 0:? 'data2' ( uniform isampler2DMS) 0:? 'data3' ( uniform usampler2DMSArray) 0:? 'data4' ( uniform usampler2DMS) 0:? 'data5' ( uniform isampler2DMSArray) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 140 Requested GL_ARB_texture_multisample 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 float) 0:16 'result' ( smooth out float) 0:16 direct index ( temp float) 0:16 textureFetch ( global 4-component vector of float) 0:16 'data' ( uniform sampler2DMS) 0:16 Constant: 0:16 0 (const int) 0:16 0 (const int) 0:16 Constant: 0:16 3 (const int) 0:16 Constant: 0:16 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of int) 0:17 'temp' ( temp 2-component vector of int) 0:17 textureSize ( global 2-component vector of int) 0:17 'data' ( uniform sampler2DMS) 0:18 move second child to first child ( temp float) 0:18 'result' ( smooth out float) 0:18 direct index ( temp float) 0:18 textureFetch ( global 4-component vector of float) 0:18 'data1' ( uniform sampler2DMSArray) 0:18 Constant: 0:18 0 (const int) 0:18 0 (const int) 0:18 0 (const int) 0:18 Constant: 0:18 3 (const int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp 3-component vector of int) 0:19 'temp1' ( temp 3-component vector of int) 0:19 textureSize ( global 3-component vector of int) 0:19 'data1' ( uniform sampler2DMSArray) 0:20 move second child to first child ( temp int) 0:20 'result1' ( smooth out int) 0:20 direct index ( temp int) 0:20 textureFetch ( global 4-component vector of int) 0:20 'data2' ( uniform isampler2DMS) 0:20 Constant: 0:20 0 (const int) 0:20 0 (const int) 0:20 Constant: 0:20 3 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 'temp' ( temp 2-component vector of int) 0:21 textureSize ( global 2-component vector of int) 0:21 'data2' ( uniform isampler2DMS) 0:22 move second child to first child ( temp uint) 0:22 'result2' ( smooth out uint) 0:22 direct index ( temp uint) 0:22 textureFetch ( global 4-component vector of uint) 0:22 'data3' ( uniform usampler2DMSArray) 0:22 Constant: 0:22 0 (const int) 0:22 0 (const int) 0:22 0 (const int) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 move second child to first child ( temp 3-component vector of int) 0:23 'temp1' ( temp 3-component vector of int) 0:23 textureSize ( global 3-component vector of int) 0:23 'data3' ( uniform usampler2DMSArray) 0:24 move second child to first child ( temp uint) 0:24 'result2' ( smooth out uint) 0:24 direct index ( temp uint) 0:24 textureFetch ( global 4-component vector of uint) 0:24 'data4' ( uniform usampler2DMS) 0:24 Constant: 0:24 0 (const int) 0:24 0 (const int) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: 0:24 0 (const int) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 'temp' ( temp 2-component vector of int) 0:25 textureSize ( global 2-component vector of int) 0:25 'data4' ( uniform usampler2DMS) 0:26 move second child to first child ( temp int) 0:26 'result1' ( smooth out int) 0:26 direct index ( temp int) 0:26 textureFetch ( global 4-component vector of int) 0:26 'data5' ( uniform isampler2DMSArray) 0:26 Constant: 0:26 0 (const int) 0:26 0 (const int) 0:26 0 (const int) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:27 move second child to first child ( temp 3-component vector of int) 0:27 'temp1' ( temp 3-component vector of int) 0:27 textureSize ( global 3-component vector of int) 0:27 'data5' ( uniform isampler2DMSArray) 0:? Linker Objects 0:? 'result' ( smooth out float) 0:? 'result1' ( smooth out int) 0:? 'result2' ( smooth out uint) 0:? 'data' ( uniform sampler2DMS) 0:? 'data1' ( uniform sampler2DMSArray) 0:? 'data2' ( uniform isampler2DMS) 0:? 'data3' ( uniform usampler2DMSArray) 0:? 'data4' ( uniform usampler2DMS) 0:? 'data5' ( uniform isampler2DMSArray) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/GL_EXT_draw_instanced.vert.out000066400000000000000000000171351506534232700242550ustar00rootroot00000000000000GL_EXT_draw_instanced.vert Shader version: 120 Requested GL_EXT_draw_instanced 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'vertex' ( temp 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 divide ( temp 2-component vector of float) 0:12 vector swizzle ( temp 2-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'va' ( uniform 64-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Sequence 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3.000000 0:12 vector swizzle ( temp 2-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'va' ( uniform 64-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Sequence 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 indirect index ( temp 3-component vector of float) 0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) 0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:12 Constant: 0:12 1.000000 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'color' ( global 4-component vector of float) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'i' ( temp int) 0:14 Constant: 0:14 1 (const int) 0:14 Loop with condition tested first 0:14 Loop Condition 0:14 Compare Less Than ( temp bool) 0:14 'i' ( temp int) 0:14 Constant: 0:14 64 (const int) 0:14 Loop Body 0:15 add second child into first child ( temp 4-component vector of float) 0:15 'color' ( global 4-component vector of float) 0:15 indirect index ( temp 4-component vector of float) 0:15 'va' ( uniform 64-element array of 4-component vector of float) 0:15 'i' ( temp int) 0:14 Loop Terminal Expression 0:14 Post-Increment ( temp int) 0:14 'i' ( temp int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'gl_Position' ( gl_Position 4-component vector of float Position) 0:16 matrix-times-vector ( temp 4-component vector of float) 0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:16 'vertex' ( temp 4-component vector of float) 0:17 move second child to first child ( temp float) 0:17 'gl_PointSize' ( gl_PointSize float PointSize) 0:17 Constant: 0:17 1.000000 0:? Linker Objects 0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) 0:? 'va' ( uniform 64-element array of 4-component vector of float) 0:? 'color' ( global 4-component vector of float) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 120 Requested GL_EXT_draw_instanced 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'vertex' ( temp 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 divide ( temp 2-component vector of float) 0:12 vector swizzle ( temp 2-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'va' ( uniform 64-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Sequence 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3.000000 0:12 vector swizzle ( temp 2-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'va' ( uniform 64-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Sequence 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 indirect index ( temp 3-component vector of float) 0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) 0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:12 Constant: 0:12 1.000000 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'color' ( global 4-component vector of float) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'i' ( temp int) 0:14 Constant: 0:14 1 (const int) 0:14 Loop with condition tested first 0:14 Loop Condition 0:14 Compare Less Than ( temp bool) 0:14 'i' ( temp int) 0:14 Constant: 0:14 64 (const int) 0:14 Loop Body 0:15 add second child into first child ( temp 4-component vector of float) 0:15 'color' ( global 4-component vector of float) 0:15 indirect index ( temp 4-component vector of float) 0:15 'va' ( uniform 64-element array of 4-component vector of float) 0:15 'i' ( temp int) 0:14 Loop Terminal Expression 0:14 Post-Increment ( temp int) 0:14 'i' ( temp int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'gl_Position' ( gl_Position 4-component vector of float Position) 0:16 matrix-times-vector ( temp 4-component vector of float) 0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:16 'vertex' ( temp 4-component vector of float) 0:17 move second child to first child ( temp float) 0:17 'gl_PointSize' ( gl_PointSize float PointSize) 0:17 Constant: 0:17 1.000000 0:? Linker Objects 0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) 0:? 'va' ( uniform 64-element array of 4-component vector of float) 0:? 'color' ( global 4-component vector of float) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/GL_EXT_shader_integer_mix.vert.out000066400000000000000000000041571506534232700251300ustar00rootroot00000000000000GL_EXT_shader_integer_mix.vert Shader version: 330 Requested GL_EXT_shader_integer_mix 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:12 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:12 Constant: 0:12 0 (const uint) 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 330 Requested GL_EXT_shader_integer_mix 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:12 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:12 Constant: 0:12 0 (const uint) 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/GL_EXT_texture_array.frag.out000066400000000000000000000162621506534232700241250ustar00rootroot00000000000000GL_EXT_texture_array.frag Shader version: 110 Requested GL_EXT_texture_array 0:? Sequence 0:10 Function Definition: foo( ( global void) 0:10 Function Parameters: 0:? Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'v4' ( temp 4-component vector of float) 0:17 texture ( global 4-component vector of float) 0:17 's1DA' ( uniform sampler1DArray) 0:17 'v2' ( temp 2-component vector of float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'v4' ( temp 4-component vector of float) 0:18 texture ( global 4-component vector of float) 0:18 's2DA' ( uniform sampler2DArray) 0:18 'v3' ( temp 3-component vector of float) 0:19 move second child to first child ( temp 4-component vector of float) 0:19 'v4' ( temp 4-component vector of float) 0:19 texture ( global 4-component vector of float) 0:19 's1DAS' ( uniform sampler1DArrayShadow) 0:19 'v3' ( temp 3-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'v4' ( temp 4-component vector of float) 0:20 texture ( global 4-component vector of float) 0:20 's2DAS' ( uniform sampler2DArrayShadow) 0:20 'v4' ( temp 4-component vector of float) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'v4' ( temp 4-component vector of float) 0:22 texture ( global 4-component vector of float) 0:22 's1DA' ( uniform sampler1DArray) 0:22 'v2' ( temp 2-component vector of float) 0:22 'f' ( temp float) 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'v4' ( temp 4-component vector of float) 0:23 texture ( global 4-component vector of float) 0:23 's2DA' ( uniform sampler2DArray) 0:23 'v3' ( temp 3-component vector of float) 0:23 'f' ( temp float) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'v4' ( temp 4-component vector of float) 0:24 texture ( global 4-component vector of float) 0:24 's1DAS' ( uniform sampler1DArrayShadow) 0:24 'v3' ( temp 3-component vector of float) 0:24 'f' ( temp float) 0:26 move second child to first child ( temp 4-component vector of float) 0:26 'v4' ( temp 4-component vector of float) 0:26 textureLod ( global 4-component vector of float) 0:26 's1DA' ( uniform sampler1DArray) 0:26 'v2' ( temp 2-component vector of float) 0:26 'f' ( temp float) 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'v4' ( temp 4-component vector of float) 0:27 textureLod ( global 4-component vector of float) 0:27 's2DA' ( uniform sampler2DArray) 0:27 'v3' ( temp 3-component vector of float) 0:27 'f' ( temp float) 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'v4' ( temp 4-component vector of float) 0:28 textureLod ( global 4-component vector of float) 0:28 's1DAS' ( uniform sampler1DArrayShadow) 0:28 'v3' ( temp 3-component vector of float) 0:28 'f' ( temp float) 0:31 Function Definition: main( ( global void) 0:31 Function Parameters: 0:33 Sequence 0:33 Function Call: foo( ( global void) 0:? Linker Objects 0:? 's1DA' ( uniform sampler1DArray) 0:? 's2DA' ( uniform sampler2DArray) 0:? 's1DAS' ( uniform sampler1DArrayShadow) 0:? 's2DAS' ( uniform sampler2DArrayShadow) Linked fragment stage: Shader version: 110 Requested GL_EXT_texture_array 0:? Sequence 0:10 Function Definition: foo( ( global void) 0:10 Function Parameters: 0:? Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'v4' ( temp 4-component vector of float) 0:17 texture ( global 4-component vector of float) 0:17 's1DA' ( uniform sampler1DArray) 0:17 'v2' ( temp 2-component vector of float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'v4' ( temp 4-component vector of float) 0:18 texture ( global 4-component vector of float) 0:18 's2DA' ( uniform sampler2DArray) 0:18 'v3' ( temp 3-component vector of float) 0:19 move second child to first child ( temp 4-component vector of float) 0:19 'v4' ( temp 4-component vector of float) 0:19 texture ( global 4-component vector of float) 0:19 's1DAS' ( uniform sampler1DArrayShadow) 0:19 'v3' ( temp 3-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'v4' ( temp 4-component vector of float) 0:20 texture ( global 4-component vector of float) 0:20 's2DAS' ( uniform sampler2DArrayShadow) 0:20 'v4' ( temp 4-component vector of float) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'v4' ( temp 4-component vector of float) 0:22 texture ( global 4-component vector of float) 0:22 's1DA' ( uniform sampler1DArray) 0:22 'v2' ( temp 2-component vector of float) 0:22 'f' ( temp float) 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'v4' ( temp 4-component vector of float) 0:23 texture ( global 4-component vector of float) 0:23 's2DA' ( uniform sampler2DArray) 0:23 'v3' ( temp 3-component vector of float) 0:23 'f' ( temp float) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'v4' ( temp 4-component vector of float) 0:24 texture ( global 4-component vector of float) 0:24 's1DAS' ( uniform sampler1DArrayShadow) 0:24 'v3' ( temp 3-component vector of float) 0:24 'f' ( temp float) 0:26 move second child to first child ( temp 4-component vector of float) 0:26 'v4' ( temp 4-component vector of float) 0:26 textureLod ( global 4-component vector of float) 0:26 's1DA' ( uniform sampler1DArray) 0:26 'v2' ( temp 2-component vector of float) 0:26 'f' ( temp float) 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'v4' ( temp 4-component vector of float) 0:27 textureLod ( global 4-component vector of float) 0:27 's2DA' ( uniform sampler2DArray) 0:27 'v3' ( temp 3-component vector of float) 0:27 'f' ( temp float) 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'v4' ( temp 4-component vector of float) 0:28 textureLod ( global 4-component vector of float) 0:28 's1DAS' ( uniform sampler1DArrayShadow) 0:28 'v3' ( temp 3-component vector of float) 0:28 'f' ( temp float) 0:31 Function Definition: main( ( global void) 0:31 Function Parameters: 0:33 Sequence 0:33 Function Call: foo( ( global void) 0:? Linker Objects 0:? 's1DA' ( uniform sampler1DArray) 0:? 's2DA' ( uniform sampler2DArray) 0:? 's1DAS' ( uniform sampler1DArrayShadow) 0:? 's2DAS' ( uniform sampler2DArrayShadow) glslang-16.0.0/Test/baseResults/Operations.frag.out000066400000000000000000001557771506534232700222670ustar00rootroot00000000000000Operations.frag ERROR: 0:76: 'intBitsToFloat' : no matching overloaded function found ERROR: 0:77: 'uintBitsToFloat' : no matching overloaded function found ERROR: 0:78: 'fma' : no matching overloaded function found ERROR: 0:79: 'frexp' : no matching overloaded function found ERROR: 0:80: 'ldexp' : no matching overloaded function found ERROR: 0:81: 'unpackUnorm2x16' : no matching overloaded function found ERROR: 0:82: 'unpackUnorm4x8' : no matching overloaded function found ERROR: 0:83: 'unpackSnorm4x8' : no matching overloaded function found ERROR: 0:107: 'floatsBitsToInt' : no matching overloaded function found ERROR: 0:108: 'packUnorm2x16' : no matching overloaded function found ERROR: 0:109: 'packUnorm4x8' : no matching overloaded function found ERROR: 0:110: 'packSnorm4x8' : no matching overloaded function found ERROR: 0:113: 'assign' : cannot convert from ' global float' to ' temp uint' ERROR: 0:114: 'assign' : cannot convert from ' global float' to ' temp uint' ERROR: 0:118: 'floatsBitToInt' : no matching overloaded function found ERROR: 0:118: 'assign' : cannot convert from ' const float' to ' temp uint' ERROR: 0:119: 'packUnorm2x16' : no matching overloaded function found ERROR: 0:119: 'assign' : cannot convert from ' const float' to ' temp uint' ERROR: 0:120: 'packUnorm4x8' : no matching overloaded function found ERROR: 0:120: 'assign' : cannot convert from ' const float' to ' temp uint' ERROR: 0:121: '&' : wrong operand types: no operation '&' exists that takes a left-hand operand of type ' uniform uint' and a right operand of type ' temp int' (or there is no acceptable conversion) ERROR: 0:121: 'assign' : cannot convert from ' uniform uint' to ' temp int' ERROR: 0:122: '^' : wrong operand types: no operation '^' exists that takes a left-hand operand of type ' uniform uint' and a right operand of type ' temp int' (or there is no acceptable conversion) ERROR: 0:122: 'assign' : cannot convert from ' uniform uint' to ' temp int' ERROR: 0:123: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type ' temp int' and a right operand of type ' uniform uint' (or there is no acceptable conversion) ERROR: 25 compilation errors. No code generated. Shader version: 130 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'v' ( temp 4-component vector of float) 0:27 radians ( global 4-component vector of float) 0:27 'uv4' ( uniform 4-component vector of float) 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'v' ( temp 4-component vector of float) 0:28 degrees ( global 4-component vector of float) 0:28 'v' ( temp 4-component vector of float) 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'v' ( temp 4-component vector of float) 0:29 Comma ( temp 4-component vector of float) 0:29 move second child to first child ( temp int) 0:29 'i' ( temp int) 0:29 component-wise multiply ( temp int) 0:29 'ui' ( uniform int) 0:29 'ui' ( uniform int) 0:29 sine ( global 4-component vector of float) 0:29 'v' ( temp 4-component vector of float) 0:30 add second child into first child ( temp 4-component vector of float) 0:30 'v' ( temp 4-component vector of float) 0:30 cosine ( global 4-component vector of float) 0:30 'v' ( temp 4-component vector of float) 0:31 add second child into first child ( temp 4-component vector of float) 0:31 'v' ( temp 4-component vector of float) 0:31 tangent ( global 4-component vector of float) 0:31 'v' ( temp 4-component vector of float) 0:32 add second child into first child ( temp 4-component vector of float) 0:32 'v' ( temp 4-component vector of float) 0:32 arc sine ( global 4-component vector of float) 0:32 'v' ( temp 4-component vector of float) 0:33 add second child into first child ( temp 4-component vector of float) 0:33 'v' ( temp 4-component vector of float) 0:33 arc cosine ( global 4-component vector of float) 0:33 'v' ( temp 4-component vector of float) 0:35 add second child into first child ( temp 4-component vector of float) 0:35 'v' ( temp 4-component vector of float) 0:35 arc tangent ( global 4-component vector of float) 0:35 'v' ( temp 4-component vector of float) 0:36 add second child into first child ( temp 4-component vector of float) 0:36 'v' ( temp 4-component vector of float) 0:36 hyp. sine ( global 4-component vector of float) 0:36 'v' ( temp 4-component vector of float) 0:37 add second child into first child ( temp 4-component vector of float) 0:37 'v' ( temp 4-component vector of float) 0:37 hyp. cosine ( global 4-component vector of float) 0:37 'v' ( temp 4-component vector of float) 0:38 add second child into first child ( temp 4-component vector of float) 0:38 'v' ( temp 4-component vector of float) 0:38 hyp. tangent ( global 4-component vector of float) 0:38 'v' ( temp 4-component vector of float) 0:39 add second child into first child ( temp 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:39 arc hyp. sine ( global 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:40 add second child into first child ( temp 4-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:40 arc hyp. cosine ( global 4-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:41 add second child into first child ( temp 4-component vector of float) 0:41 'v' ( temp 4-component vector of float) 0:41 arc hyp. tangent ( global 4-component vector of float) 0:41 'v' ( temp 4-component vector of float) 0:43 add second child into first child ( temp 4-component vector of float) 0:43 'v' ( temp 4-component vector of float) 0:43 pow ( global 4-component vector of float) 0:43 'v' ( temp 4-component vector of float) 0:43 'v' ( temp 4-component vector of float) 0:44 add second child into first child ( temp 4-component vector of float) 0:44 'v' ( temp 4-component vector of float) 0:44 exp ( global 4-component vector of float) 0:44 'v' ( temp 4-component vector of float) 0:45 add second child into first child ( temp 4-component vector of float) 0:45 'v' ( temp 4-component vector of float) 0:45 log ( global 4-component vector of float) 0:45 'v' ( temp 4-component vector of float) 0:46 add second child into first child ( temp 4-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:46 exp2 ( global 4-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:47 add second child into first child ( temp 4-component vector of float) 0:47 'v' ( temp 4-component vector of float) 0:47 log2 ( global 4-component vector of float) 0:47 'v' ( temp 4-component vector of float) 0:48 add second child into first child ( temp 4-component vector of float) 0:48 'v' ( temp 4-component vector of float) 0:48 sqrt ( global 4-component vector of float) 0:48 'v' ( temp 4-component vector of float) 0:49 add second child into first child ( temp 4-component vector of float) 0:49 'v' ( temp 4-component vector of float) 0:49 inverse sqrt ( global 4-component vector of float) 0:49 'v' ( temp 4-component vector of float) 0:50 add second child into first child ( temp 4-component vector of float) 0:50 'v' ( temp 4-component vector of float) 0:50 Absolute value ( global 4-component vector of float) 0:50 'v' ( temp 4-component vector of float) 0:51 add second child into first child ( temp 4-component vector of float) 0:51 'v' ( temp 4-component vector of float) 0:51 Sign ( global 4-component vector of float) 0:51 'v' ( temp 4-component vector of float) 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'v' ( temp 4-component vector of float) 0:52 Floor ( global 4-component vector of float) 0:52 'v' ( temp 4-component vector of float) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'v' ( temp 4-component vector of float) 0:55 trunc ( global 4-component vector of float) 0:55 'v' ( temp 4-component vector of float) 0:56 add second child into first child ( temp 4-component vector of float) 0:56 'v' ( temp 4-component vector of float) 0:56 round ( global 4-component vector of float) 0:56 'v' ( temp 4-component vector of float) 0:57 add second child into first child ( temp 4-component vector of float) 0:57 'v' ( temp 4-component vector of float) 0:57 roundEven ( global 4-component vector of float) 0:57 'v' ( temp 4-component vector of float) 0:60 add second child into first child ( temp 4-component vector of float) 0:60 'v' ( temp 4-component vector of float) 0:60 Ceiling ( global 4-component vector of float) 0:60 'v' ( temp 4-component vector of float) 0:61 add second child into first child ( temp 4-component vector of float) 0:61 'v' ( temp 4-component vector of float) 0:61 Fraction ( global 4-component vector of float) 0:61 'v' ( temp 4-component vector of float) 0:62 add second child into first child ( temp 4-component vector of float) 0:62 'v' ( temp 4-component vector of float) 0:62 mod ( global 4-component vector of float) 0:62 'v' ( temp 4-component vector of float) 0:62 'v' ( temp 4-component vector of float) 0:63 add second child into first child ( temp 4-component vector of float) 0:63 'v' ( temp 4-component vector of float) 0:63 mod ( global 4-component vector of float) 0:63 'v' ( temp 4-component vector of float) 0:63 direct index ( temp float) 0:63 'v' ( temp 4-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:66 add second child into first child ( temp 4-component vector of float) 0:66 'v' ( temp 4-component vector of float) 0:66 modf ( global 4-component vector of float) 0:66 'v' ( temp 4-component vector of float) 0:66 'v' ( temp 4-component vector of float) 0:69 add second child into first child ( temp 4-component vector of float) 0:69 'v' ( temp 4-component vector of float) 0:69 min ( global 4-component vector of float) 0:69 'v' ( temp 4-component vector of float) 0:69 'uv4' ( uniform 4-component vector of float) 0:70 add second child into first child ( temp 4-component vector of float) 0:70 'v' ( temp 4-component vector of float) 0:70 max ( global 4-component vector of float) 0:70 'v' ( temp 4-component vector of float) 0:70 'uv4' ( uniform 4-component vector of float) 0:71 add second child into first child ( temp 4-component vector of float) 0:71 'v' ( temp 4-component vector of float) 0:71 clamp ( global 4-component vector of float) 0:71 'v' ( temp 4-component vector of float) 0:71 'uv4' ( uniform 4-component vector of float) 0:71 'uv4' ( uniform 4-component vector of float) 0:72 add second child into first child ( temp 4-component vector of float) 0:72 'v' ( temp 4-component vector of float) 0:72 mix ( global 4-component vector of float) 0:72 'v' ( temp 4-component vector of float) 0:72 'v' ( temp 4-component vector of float) 0:72 'v' ( temp 4-component vector of float) 0:75 add second child into first child ( temp 4-component vector of float) 0:75 'v' ( temp 4-component vector of float) 0:75 mix ( global 4-component vector of float) 0:75 'v' ( temp 4-component vector of float) 0:75 'v' ( temp 4-component vector of float) 0:75 'bv4' ( temp 4-component vector of bool) 0:76 add second child into first child ( temp 4-component vector of float) 0:76 'v' ( temp 4-component vector of float) 0:76 Constant: 0:76 0.000000 0:77 add second child into first child ( temp 4-component vector of float) 0:77 'v' ( temp 4-component vector of float) 0:77 Constant: 0:77 0.000000 0:78 add second child into first child ( temp 4-component vector of float) 0:78 'v' ( temp 4-component vector of float) 0:78 Constant: 0:78 0.000000 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'v' ( temp 4-component vector of float) 0:79 Constant: 0:79 0.000000 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'v' ( temp 4-component vector of float) 0:80 Constant: 0:80 0.000000 0:81 add second child into first child ( temp 4-component vector of float) 0:81 'v' ( temp 4-component vector of float) 0:81 Constant: 0:81 0.000000 0:82 add second child into first child ( temp 4-component vector of float) 0:82 'v' ( temp 4-component vector of float) 0:82 Constant: 0:82 0.000000 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'v' ( temp 4-component vector of float) 0:83 Constant: 0:83 0.000000 0:86 add second child into first child ( temp 4-component vector of float) 0:86 'v' ( temp 4-component vector of float) 0:86 step ( global 4-component vector of float) 0:86 'v' ( temp 4-component vector of float) 0:86 'v' ( temp 4-component vector of float) 0:87 add second child into first child ( temp 4-component vector of float) 0:87 'v' ( temp 4-component vector of float) 0:87 smoothstep ( global 4-component vector of float) 0:87 'v' ( temp 4-component vector of float) 0:87 'v' ( temp 4-component vector of float) 0:87 'v' ( temp 4-component vector of float) 0:88 add second child into first child ( temp 4-component vector of float) 0:88 'v' ( temp 4-component vector of float) 0:88 step ( global 4-component vector of float) 0:88 'uf' ( uniform float) 0:88 'v' ( temp 4-component vector of float) 0:89 add second child into first child ( temp 4-component vector of float) 0:89 'v' ( temp 4-component vector of float) 0:89 smoothstep ( global 4-component vector of float) 0:89 'uf' ( uniform float) 0:89 'uf' ( uniform float) 0:89 'v' ( temp 4-component vector of float) 0:90 add second child into first child ( temp 4-component vector of float) 0:90 'v' ( temp 4-component vector of float) 0:90 normalize ( global 4-component vector of float) 0:90 'v' ( temp 4-component vector of float) 0:91 add second child into first child ( temp 4-component vector of float) 0:91 'v' ( temp 4-component vector of float) 0:91 face-forward ( global 4-component vector of float) 0:91 'v' ( temp 4-component vector of float) 0:91 'v' ( temp 4-component vector of float) 0:91 'v' ( temp 4-component vector of float) 0:92 add second child into first child ( temp 4-component vector of float) 0:92 'v' ( temp 4-component vector of float) 0:92 reflect ( global 4-component vector of float) 0:92 'v' ( temp 4-component vector of float) 0:92 'v' ( temp 4-component vector of float) 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'v' ( temp 4-component vector of float) 0:93 refract ( global 4-component vector of float) 0:93 'v' ( temp 4-component vector of float) 0:93 'v' ( temp 4-component vector of float) 0:93 'uf' ( uniform float) 0:94 add second child into first child ( temp 4-component vector of float) 0:94 'v' ( temp 4-component vector of float) 0:94 dPdx ( global 4-component vector of float) 0:94 'v' ( temp 4-component vector of float) 0:95 add second child into first child ( temp 4-component vector of float) 0:95 'v' ( temp 4-component vector of float) 0:95 dPdy ( global 4-component vector of float) 0:95 'v' ( temp 4-component vector of float) 0:96 add second child into first child ( temp 4-component vector of float) 0:96 'v' ( temp 4-component vector of float) 0:96 fwidth ( global 4-component vector of float) 0:96 'v' ( temp 4-component vector of float) 0:101 add second child into first child ( temp int) 0:101 'i' ( temp int) 0:101 Absolute value ( global int) 0:101 'ui' ( uniform int) 0:102 add second child into first child ( temp int) 0:102 'i' ( temp int) 0:102 Sign ( global int) 0:102 'i' ( temp int) 0:103 add second child into first child ( temp int) 0:103 'i' ( temp int) 0:103 min ( global int) 0:103 'i' ( temp int) 0:103 'ui' ( uniform int) 0:104 add second child into first child ( temp int) 0:104 'i' ( temp int) 0:104 max ( global int) 0:104 'i' ( temp int) 0:104 'ui' ( uniform int) 0:105 add second child into first child ( temp int) 0:105 'i' ( temp int) 0:105 clamp ( global int) 0:105 'i' ( temp int) 0:105 'ui' ( uniform int) 0:105 'ui' ( uniform int) 0:107 Constant: 0:107 0.000000 0:108 Constant: 0:108 0.000000 0:109 Constant: 0:109 0.000000 0:110 Constant: 0:110 0.000000 0:113 'u' ( temp uint) 0:114 'u' ( temp uint) 0:115 add second child into first child ( temp uint) 0:115 'u' ( temp uint) 0:115 min ( global uint) 0:115 'u' ( temp uint) 0:115 'uui' ( uniform uint) 0:116 add second child into first child ( temp uint) 0:116 'u' ( temp uint) 0:116 max ( global uint) 0:116 'u' ( temp uint) 0:116 'uui' ( uniform uint) 0:117 add second child into first child ( temp uint) 0:117 'u' ( temp uint) 0:117 clamp ( global uint) 0:117 'u' ( temp uint) 0:117 'uui' ( uniform uint) 0:117 'uui' ( uniform uint) 0:118 'u' ( temp uint) 0:119 'u' ( temp uint) 0:120 'u' ( temp uint) 0:121 'i' ( temp int) 0:122 'i' ( temp int) 0:123 add second child into first child ( temp int) 0:123 'i' ( temp int) 0:123 'i' ( temp int) 0:127 move second child to first child ( temp bool) 0:127 'b' ( temp bool) 0:127 isnan ( global bool) 0:127 'uf' ( uniform float) 0:128 move second child to first child ( temp bool) 0:128 'b' ( temp bool) 0:128 isinf ( global bool) 0:128 direct index ( temp float) 0:128 'v' ( temp 4-component vector of float) 0:128 Constant: 0:128 1 (const int) 0:130 move second child to first child ( temp bool) 0:130 'b' ( temp bool) 0:130 any ( global bool) 0:130 Compare Less Than ( global 4-component vector of bool) 0:130 'v' ( temp 4-component vector of float) 0:130 'uv4' ( uniform 4-component vector of float) 0:131 move second child to first child ( temp bool) 0:131 'b' ( temp bool) 0:131 logical-and ( temp bool) 0:131 'b' ( temp bool) 0:131 any ( global bool) 0:131 Compare Less Than or Equal ( global 4-component vector of bool) 0:131 'v' ( temp 4-component vector of float) 0:131 'uv4' ( uniform 4-component vector of float) 0:132 move second child to first child ( temp bool) 0:132 'b' ( temp bool) 0:132 logical-and ( temp bool) 0:132 'b' ( temp bool) 0:132 any ( global bool) 0:132 Compare Greater Than ( global 4-component vector of bool) 0:132 'v' ( temp 4-component vector of float) 0:132 'uv4' ( uniform 4-component vector of float) 0:133 move second child to first child ( temp bool) 0:133 'b' ( temp bool) 0:133 logical-and ( temp bool) 0:133 'b' ( temp bool) 0:133 any ( global bool) 0:133 Compare Greater Than or Equal ( global 4-component vector of bool) 0:133 'v' ( temp 4-component vector of float) 0:133 'uv4' ( uniform 4-component vector of float) 0:134 move second child to first child ( temp bool) 0:134 'b' ( temp bool) 0:134 logical-and ( temp bool) 0:134 'b' ( temp bool) 0:134 any ( global bool) 0:134 Equal ( global 4-component vector of bool) 0:134 'ub41' ( uniform 4-component vector of bool) 0:134 'ub42' ( uniform 4-component vector of bool) 0:135 move second child to first child ( temp bool) 0:135 'b' ( temp bool) 0:135 logical-and ( temp bool) 0:135 'b' ( temp bool) 0:135 any ( global bool) 0:135 NotEqual ( global 4-component vector of bool) 0:135 'ub41' ( uniform 4-component vector of bool) 0:135 'ub42' ( uniform 4-component vector of bool) 0:136 move second child to first child ( temp bool) 0:136 'b' ( temp bool) 0:136 logical-and ( temp bool) 0:136 'b' ( temp bool) 0:136 any ( global bool) 0:136 'ub41' ( uniform 4-component vector of bool) 0:137 move second child to first child ( temp bool) 0:137 'b' ( temp bool) 0:137 logical-and ( temp bool) 0:137 'b' ( temp bool) 0:137 all ( global bool) 0:137 'ub41' ( uniform 4-component vector of bool) 0:138 move second child to first child ( temp bool) 0:138 'b' ( temp bool) 0:138 logical-and ( temp bool) 0:138 'b' ( temp bool) 0:138 any ( global bool) 0:138 Negate conditional ( global 4-component vector of bool) 0:138 'ub41' ( uniform 4-component vector of bool) 0:140 move second child to first child ( temp int) 0:140 'i' ( temp int) 0:140 divide ( temp int) 0:140 subtract ( temp int) 0:140 component-wise multiply ( temp int) 0:140 add ( temp int) 0:140 'i' ( temp int) 0:140 'ui' ( uniform int) 0:140 'i' ( temp int) 0:140 'ui' ( uniform int) 0:140 'i' ( temp int) 0:141 move second child to first child ( temp int) 0:141 'i' ( temp int) 0:141 mod ( temp int) 0:141 'i' ( temp int) 0:141 'ui' ( uniform int) 0:142 Test condition and select ( temp void) 0:142 Condition 0:142 logical-or ( temp bool) 0:142 Compare Equal ( temp bool) 0:142 'i' ( temp int) 0:142 'ui' ( uniform int) 0:142 logical-xor ( temp bool) 0:142 logical-and ( temp bool) 0:142 Compare Not Equal ( temp bool) 0:142 'i' ( temp int) 0:142 'ui' ( uniform int) 0:142 Compare Equal ( temp bool) 0:142 'i' ( temp int) 0:142 'ui' ( uniform int) 0:142 Compare Not Equal ( temp bool) 0:142 'i' ( temp int) 0:142 Constant: 0:142 2 (const int) 0:142 true case 0:143 Pre-Increment ( temp int) 0:143 'i' ( temp int) 0:145 move second child to first child ( temp float) 0:145 'f' ( temp float) 0:145 divide ( temp float) 0:145 subtract ( temp float) 0:145 component-wise multiply ( temp float) 0:145 add ( temp float) 0:145 'uf' ( uniform float) 0:145 'uf' ( uniform float) 0:145 'uf' ( uniform float) 0:145 'uf' ( uniform float) 0:145 'uf' ( uniform float) 0:147 add second child into first child ( temp float) 0:147 'f' ( temp float) 0:147 length ( global float) 0:147 'v' ( temp 4-component vector of float) 0:148 add second child into first child ( temp float) 0:148 'f' ( temp float) 0:148 distance ( global float) 0:148 'v' ( temp 4-component vector of float) 0:148 'v' ( temp 4-component vector of float) 0:149 add second child into first child ( temp float) 0:149 'f' ( temp float) 0:149 dot-product ( global float) 0:149 'v' ( temp 4-component vector of float) 0:149 'v' ( temp 4-component vector of float) 0:150 add second child into first child ( temp float) 0:150 'f' ( temp float) 0:150 dot-product ( global float) 0:150 'f' ( temp float) 0:150 'uf' ( uniform float) 0:151 add second child into first child ( temp float) 0:151 'f' ( temp float) 0:151 direct index ( temp float) 0:151 cross-product ( global 3-component vector of float) 0:151 vector swizzle ( temp 3-component vector of float) 0:151 'v' ( temp 4-component vector of float) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 2 (const int) 0:151 vector swizzle ( temp 3-component vector of float) 0:151 'v' ( temp 4-component vector of float) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 2 (const int) 0:151 Constant: 0:151 0 (const int) 0:153 Test condition and select ( temp void) 0:153 Condition 0:153 logical-or ( temp bool) 0:153 Compare Equal ( temp bool) 0:153 'f' ( temp float) 0:153 'uf' ( uniform float) 0:153 logical-and ( temp bool) 0:153 Compare Not Equal ( temp bool) 0:153 'f' ( temp float) 0:153 'uf' ( uniform float) 0:153 Compare Not Equal ( temp bool) 0:153 'f' ( temp float) 0:153 Constant: 0:153 2.000000 0:153 true case 0:154 Pre-Increment ( temp float) 0:154 'f' ( temp float) 0:156 and second child into first child ( temp int) 0:156 'i' ( temp int) 0:156 'ui' ( uniform int) 0:157 or second child into first child ( temp int) 0:157 'i' ( temp int) 0:157 Constant: 0:157 66 (const int) 0:158 exclusive or second child into first child ( temp int) 0:158 'i' ( temp int) 0:158 'ui' ( uniform int) 0:159 mod second child into first child ( temp int) 0:159 'i' ( temp int) 0:159 Constant: 0:159 17 (const int) 0:160 right shift second child into first child ( temp int) 0:160 'i' ( temp int) 0:160 Constant: 0:160 2 (const int) 0:161 left shift second child into first child ( temp int) 0:161 'i' ( temp int) 0:161 'ui' ( uniform int) 0:162 move second child to first child ( temp int) 0:162 'i' ( temp int) 0:162 Bitwise not ( temp int) 0:162 'i' ( temp int) 0:163 move second child to first child ( temp bool) 0:163 'b' ( temp bool) 0:163 Negate conditional ( temp bool) 0:163 'b' ( temp bool) 0:165 move second child to first child ( temp 4-component vector of float) 0:165 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:165 Test condition and select ( temp 4-component vector of float) 0:165 Condition 0:165 'b' ( temp bool) 0:165 true case 0:165 add ( temp 4-component vector of float) 0:165 add ( temp 4-component vector of float) 0:165 Construct vec4 ( temp 4-component vector of float) 0:165 Convert int to float ( temp float) 0:165 'i' ( temp int) 0:165 Construct vec4 ( temp 4-component vector of float) 0:165 'f' ( temp float) 0:165 'v' ( temp 4-component vector of float) 0:165 false case 0:165 'v' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'uiv4' ( uniform 4-component vector of int) 0:? 'uv4' ( uniform 4-component vector of float) 0:? 'ub' ( uniform bool) 0:? 'ub41' ( uniform 4-component vector of bool) 0:? 'ub42' ( uniform 4-component vector of bool) 0:? 'uf' ( uniform float) 0:? 'ui' ( uniform int) 0:? 'uuv4' ( uniform 4-component vector of uint) 0:? 'uui' ( uniform uint) Linked fragment stage: Shader version: 130 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'v' ( temp 4-component vector of float) 0:27 radians ( global 4-component vector of float) 0:27 'uv4' ( uniform 4-component vector of float) 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'v' ( temp 4-component vector of float) 0:28 degrees ( global 4-component vector of float) 0:28 'v' ( temp 4-component vector of float) 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'v' ( temp 4-component vector of float) 0:29 Comma ( temp 4-component vector of float) 0:29 move second child to first child ( temp int) 0:29 'i' ( temp int) 0:29 component-wise multiply ( temp int) 0:29 'ui' ( uniform int) 0:29 'ui' ( uniform int) 0:29 sine ( global 4-component vector of float) 0:29 'v' ( temp 4-component vector of float) 0:30 add second child into first child ( temp 4-component vector of float) 0:30 'v' ( temp 4-component vector of float) 0:30 cosine ( global 4-component vector of float) 0:30 'v' ( temp 4-component vector of float) 0:31 add second child into first child ( temp 4-component vector of float) 0:31 'v' ( temp 4-component vector of float) 0:31 tangent ( global 4-component vector of float) 0:31 'v' ( temp 4-component vector of float) 0:32 add second child into first child ( temp 4-component vector of float) 0:32 'v' ( temp 4-component vector of float) 0:32 arc sine ( global 4-component vector of float) 0:32 'v' ( temp 4-component vector of float) 0:33 add second child into first child ( temp 4-component vector of float) 0:33 'v' ( temp 4-component vector of float) 0:33 arc cosine ( global 4-component vector of float) 0:33 'v' ( temp 4-component vector of float) 0:35 add second child into first child ( temp 4-component vector of float) 0:35 'v' ( temp 4-component vector of float) 0:35 arc tangent ( global 4-component vector of float) 0:35 'v' ( temp 4-component vector of float) 0:36 add second child into first child ( temp 4-component vector of float) 0:36 'v' ( temp 4-component vector of float) 0:36 hyp. sine ( global 4-component vector of float) 0:36 'v' ( temp 4-component vector of float) 0:37 add second child into first child ( temp 4-component vector of float) 0:37 'v' ( temp 4-component vector of float) 0:37 hyp. cosine ( global 4-component vector of float) 0:37 'v' ( temp 4-component vector of float) 0:38 add second child into first child ( temp 4-component vector of float) 0:38 'v' ( temp 4-component vector of float) 0:38 hyp. tangent ( global 4-component vector of float) 0:38 'v' ( temp 4-component vector of float) 0:39 add second child into first child ( temp 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:39 arc hyp. sine ( global 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:40 add second child into first child ( temp 4-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:40 arc hyp. cosine ( global 4-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:41 add second child into first child ( temp 4-component vector of float) 0:41 'v' ( temp 4-component vector of float) 0:41 arc hyp. tangent ( global 4-component vector of float) 0:41 'v' ( temp 4-component vector of float) 0:43 add second child into first child ( temp 4-component vector of float) 0:43 'v' ( temp 4-component vector of float) 0:43 pow ( global 4-component vector of float) 0:43 'v' ( temp 4-component vector of float) 0:43 'v' ( temp 4-component vector of float) 0:44 add second child into first child ( temp 4-component vector of float) 0:44 'v' ( temp 4-component vector of float) 0:44 exp ( global 4-component vector of float) 0:44 'v' ( temp 4-component vector of float) 0:45 add second child into first child ( temp 4-component vector of float) 0:45 'v' ( temp 4-component vector of float) 0:45 log ( global 4-component vector of float) 0:45 'v' ( temp 4-component vector of float) 0:46 add second child into first child ( temp 4-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:46 exp2 ( global 4-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:47 add second child into first child ( temp 4-component vector of float) 0:47 'v' ( temp 4-component vector of float) 0:47 log2 ( global 4-component vector of float) 0:47 'v' ( temp 4-component vector of float) 0:48 add second child into first child ( temp 4-component vector of float) 0:48 'v' ( temp 4-component vector of float) 0:48 sqrt ( global 4-component vector of float) 0:48 'v' ( temp 4-component vector of float) 0:49 add second child into first child ( temp 4-component vector of float) 0:49 'v' ( temp 4-component vector of float) 0:49 inverse sqrt ( global 4-component vector of float) 0:49 'v' ( temp 4-component vector of float) 0:50 add second child into first child ( temp 4-component vector of float) 0:50 'v' ( temp 4-component vector of float) 0:50 Absolute value ( global 4-component vector of float) 0:50 'v' ( temp 4-component vector of float) 0:51 add second child into first child ( temp 4-component vector of float) 0:51 'v' ( temp 4-component vector of float) 0:51 Sign ( global 4-component vector of float) 0:51 'v' ( temp 4-component vector of float) 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'v' ( temp 4-component vector of float) 0:52 Floor ( global 4-component vector of float) 0:52 'v' ( temp 4-component vector of float) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'v' ( temp 4-component vector of float) 0:55 trunc ( global 4-component vector of float) 0:55 'v' ( temp 4-component vector of float) 0:56 add second child into first child ( temp 4-component vector of float) 0:56 'v' ( temp 4-component vector of float) 0:56 round ( global 4-component vector of float) 0:56 'v' ( temp 4-component vector of float) 0:57 add second child into first child ( temp 4-component vector of float) 0:57 'v' ( temp 4-component vector of float) 0:57 roundEven ( global 4-component vector of float) 0:57 'v' ( temp 4-component vector of float) 0:60 add second child into first child ( temp 4-component vector of float) 0:60 'v' ( temp 4-component vector of float) 0:60 Ceiling ( global 4-component vector of float) 0:60 'v' ( temp 4-component vector of float) 0:61 add second child into first child ( temp 4-component vector of float) 0:61 'v' ( temp 4-component vector of float) 0:61 Fraction ( global 4-component vector of float) 0:61 'v' ( temp 4-component vector of float) 0:62 add second child into first child ( temp 4-component vector of float) 0:62 'v' ( temp 4-component vector of float) 0:62 mod ( global 4-component vector of float) 0:62 'v' ( temp 4-component vector of float) 0:62 'v' ( temp 4-component vector of float) 0:63 add second child into first child ( temp 4-component vector of float) 0:63 'v' ( temp 4-component vector of float) 0:63 mod ( global 4-component vector of float) 0:63 'v' ( temp 4-component vector of float) 0:63 direct index ( temp float) 0:63 'v' ( temp 4-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:66 add second child into first child ( temp 4-component vector of float) 0:66 'v' ( temp 4-component vector of float) 0:66 modf ( global 4-component vector of float) 0:66 'v' ( temp 4-component vector of float) 0:66 'v' ( temp 4-component vector of float) 0:69 add second child into first child ( temp 4-component vector of float) 0:69 'v' ( temp 4-component vector of float) 0:69 min ( global 4-component vector of float) 0:69 'v' ( temp 4-component vector of float) 0:69 'uv4' ( uniform 4-component vector of float) 0:70 add second child into first child ( temp 4-component vector of float) 0:70 'v' ( temp 4-component vector of float) 0:70 max ( global 4-component vector of float) 0:70 'v' ( temp 4-component vector of float) 0:70 'uv4' ( uniform 4-component vector of float) 0:71 add second child into first child ( temp 4-component vector of float) 0:71 'v' ( temp 4-component vector of float) 0:71 clamp ( global 4-component vector of float) 0:71 'v' ( temp 4-component vector of float) 0:71 'uv4' ( uniform 4-component vector of float) 0:71 'uv4' ( uniform 4-component vector of float) 0:72 add second child into first child ( temp 4-component vector of float) 0:72 'v' ( temp 4-component vector of float) 0:72 mix ( global 4-component vector of float) 0:72 'v' ( temp 4-component vector of float) 0:72 'v' ( temp 4-component vector of float) 0:72 'v' ( temp 4-component vector of float) 0:75 add second child into first child ( temp 4-component vector of float) 0:75 'v' ( temp 4-component vector of float) 0:75 mix ( global 4-component vector of float) 0:75 'v' ( temp 4-component vector of float) 0:75 'v' ( temp 4-component vector of float) 0:75 'bv4' ( temp 4-component vector of bool) 0:76 add second child into first child ( temp 4-component vector of float) 0:76 'v' ( temp 4-component vector of float) 0:76 Constant: 0:76 0.000000 0:77 add second child into first child ( temp 4-component vector of float) 0:77 'v' ( temp 4-component vector of float) 0:77 Constant: 0:77 0.000000 0:78 add second child into first child ( temp 4-component vector of float) 0:78 'v' ( temp 4-component vector of float) 0:78 Constant: 0:78 0.000000 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'v' ( temp 4-component vector of float) 0:79 Constant: 0:79 0.000000 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'v' ( temp 4-component vector of float) 0:80 Constant: 0:80 0.000000 0:81 add second child into first child ( temp 4-component vector of float) 0:81 'v' ( temp 4-component vector of float) 0:81 Constant: 0:81 0.000000 0:82 add second child into first child ( temp 4-component vector of float) 0:82 'v' ( temp 4-component vector of float) 0:82 Constant: 0:82 0.000000 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'v' ( temp 4-component vector of float) 0:83 Constant: 0:83 0.000000 0:86 add second child into first child ( temp 4-component vector of float) 0:86 'v' ( temp 4-component vector of float) 0:86 step ( global 4-component vector of float) 0:86 'v' ( temp 4-component vector of float) 0:86 'v' ( temp 4-component vector of float) 0:87 add second child into first child ( temp 4-component vector of float) 0:87 'v' ( temp 4-component vector of float) 0:87 smoothstep ( global 4-component vector of float) 0:87 'v' ( temp 4-component vector of float) 0:87 'v' ( temp 4-component vector of float) 0:87 'v' ( temp 4-component vector of float) 0:88 add second child into first child ( temp 4-component vector of float) 0:88 'v' ( temp 4-component vector of float) 0:88 step ( global 4-component vector of float) 0:88 'uf' ( uniform float) 0:88 'v' ( temp 4-component vector of float) 0:89 add second child into first child ( temp 4-component vector of float) 0:89 'v' ( temp 4-component vector of float) 0:89 smoothstep ( global 4-component vector of float) 0:89 'uf' ( uniform float) 0:89 'uf' ( uniform float) 0:89 'v' ( temp 4-component vector of float) 0:90 add second child into first child ( temp 4-component vector of float) 0:90 'v' ( temp 4-component vector of float) 0:90 normalize ( global 4-component vector of float) 0:90 'v' ( temp 4-component vector of float) 0:91 add second child into first child ( temp 4-component vector of float) 0:91 'v' ( temp 4-component vector of float) 0:91 face-forward ( global 4-component vector of float) 0:91 'v' ( temp 4-component vector of float) 0:91 'v' ( temp 4-component vector of float) 0:91 'v' ( temp 4-component vector of float) 0:92 add second child into first child ( temp 4-component vector of float) 0:92 'v' ( temp 4-component vector of float) 0:92 reflect ( global 4-component vector of float) 0:92 'v' ( temp 4-component vector of float) 0:92 'v' ( temp 4-component vector of float) 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'v' ( temp 4-component vector of float) 0:93 refract ( global 4-component vector of float) 0:93 'v' ( temp 4-component vector of float) 0:93 'v' ( temp 4-component vector of float) 0:93 'uf' ( uniform float) 0:94 add second child into first child ( temp 4-component vector of float) 0:94 'v' ( temp 4-component vector of float) 0:94 dPdx ( global 4-component vector of float) 0:94 'v' ( temp 4-component vector of float) 0:95 add second child into first child ( temp 4-component vector of float) 0:95 'v' ( temp 4-component vector of float) 0:95 dPdy ( global 4-component vector of float) 0:95 'v' ( temp 4-component vector of float) 0:96 add second child into first child ( temp 4-component vector of float) 0:96 'v' ( temp 4-component vector of float) 0:96 fwidth ( global 4-component vector of float) 0:96 'v' ( temp 4-component vector of float) 0:101 add second child into first child ( temp int) 0:101 'i' ( temp int) 0:101 Absolute value ( global int) 0:101 'ui' ( uniform int) 0:102 add second child into first child ( temp int) 0:102 'i' ( temp int) 0:102 Sign ( global int) 0:102 'i' ( temp int) 0:103 add second child into first child ( temp int) 0:103 'i' ( temp int) 0:103 min ( global int) 0:103 'i' ( temp int) 0:103 'ui' ( uniform int) 0:104 add second child into first child ( temp int) 0:104 'i' ( temp int) 0:104 max ( global int) 0:104 'i' ( temp int) 0:104 'ui' ( uniform int) 0:105 add second child into first child ( temp int) 0:105 'i' ( temp int) 0:105 clamp ( global int) 0:105 'i' ( temp int) 0:105 'ui' ( uniform int) 0:105 'ui' ( uniform int) 0:107 Constant: 0:107 0.000000 0:108 Constant: 0:108 0.000000 0:109 Constant: 0:109 0.000000 0:110 Constant: 0:110 0.000000 0:113 'u' ( temp uint) 0:114 'u' ( temp uint) 0:115 add second child into first child ( temp uint) 0:115 'u' ( temp uint) 0:115 min ( global uint) 0:115 'u' ( temp uint) 0:115 'uui' ( uniform uint) 0:116 add second child into first child ( temp uint) 0:116 'u' ( temp uint) 0:116 max ( global uint) 0:116 'u' ( temp uint) 0:116 'uui' ( uniform uint) 0:117 add second child into first child ( temp uint) 0:117 'u' ( temp uint) 0:117 clamp ( global uint) 0:117 'u' ( temp uint) 0:117 'uui' ( uniform uint) 0:117 'uui' ( uniform uint) 0:118 'u' ( temp uint) 0:119 'u' ( temp uint) 0:120 'u' ( temp uint) 0:121 'i' ( temp int) 0:122 'i' ( temp int) 0:123 add second child into first child ( temp int) 0:123 'i' ( temp int) 0:123 'i' ( temp int) 0:127 move second child to first child ( temp bool) 0:127 'b' ( temp bool) 0:127 isnan ( global bool) 0:127 'uf' ( uniform float) 0:128 move second child to first child ( temp bool) 0:128 'b' ( temp bool) 0:128 isinf ( global bool) 0:128 direct index ( temp float) 0:128 'v' ( temp 4-component vector of float) 0:128 Constant: 0:128 1 (const int) 0:130 move second child to first child ( temp bool) 0:130 'b' ( temp bool) 0:130 any ( global bool) 0:130 Compare Less Than ( global 4-component vector of bool) 0:130 'v' ( temp 4-component vector of float) 0:130 'uv4' ( uniform 4-component vector of float) 0:131 move second child to first child ( temp bool) 0:131 'b' ( temp bool) 0:131 logical-and ( temp bool) 0:131 'b' ( temp bool) 0:131 any ( global bool) 0:131 Compare Less Than or Equal ( global 4-component vector of bool) 0:131 'v' ( temp 4-component vector of float) 0:131 'uv4' ( uniform 4-component vector of float) 0:132 move second child to first child ( temp bool) 0:132 'b' ( temp bool) 0:132 logical-and ( temp bool) 0:132 'b' ( temp bool) 0:132 any ( global bool) 0:132 Compare Greater Than ( global 4-component vector of bool) 0:132 'v' ( temp 4-component vector of float) 0:132 'uv4' ( uniform 4-component vector of float) 0:133 move second child to first child ( temp bool) 0:133 'b' ( temp bool) 0:133 logical-and ( temp bool) 0:133 'b' ( temp bool) 0:133 any ( global bool) 0:133 Compare Greater Than or Equal ( global 4-component vector of bool) 0:133 'v' ( temp 4-component vector of float) 0:133 'uv4' ( uniform 4-component vector of float) 0:134 move second child to first child ( temp bool) 0:134 'b' ( temp bool) 0:134 logical-and ( temp bool) 0:134 'b' ( temp bool) 0:134 any ( global bool) 0:134 Equal ( global 4-component vector of bool) 0:134 'ub41' ( uniform 4-component vector of bool) 0:134 'ub42' ( uniform 4-component vector of bool) 0:135 move second child to first child ( temp bool) 0:135 'b' ( temp bool) 0:135 logical-and ( temp bool) 0:135 'b' ( temp bool) 0:135 any ( global bool) 0:135 NotEqual ( global 4-component vector of bool) 0:135 'ub41' ( uniform 4-component vector of bool) 0:135 'ub42' ( uniform 4-component vector of bool) 0:136 move second child to first child ( temp bool) 0:136 'b' ( temp bool) 0:136 logical-and ( temp bool) 0:136 'b' ( temp bool) 0:136 any ( global bool) 0:136 'ub41' ( uniform 4-component vector of bool) 0:137 move second child to first child ( temp bool) 0:137 'b' ( temp bool) 0:137 logical-and ( temp bool) 0:137 'b' ( temp bool) 0:137 all ( global bool) 0:137 'ub41' ( uniform 4-component vector of bool) 0:138 move second child to first child ( temp bool) 0:138 'b' ( temp bool) 0:138 logical-and ( temp bool) 0:138 'b' ( temp bool) 0:138 any ( global bool) 0:138 Negate conditional ( global 4-component vector of bool) 0:138 'ub41' ( uniform 4-component vector of bool) 0:140 move second child to first child ( temp int) 0:140 'i' ( temp int) 0:140 divide ( temp int) 0:140 subtract ( temp int) 0:140 component-wise multiply ( temp int) 0:140 add ( temp int) 0:140 'i' ( temp int) 0:140 'ui' ( uniform int) 0:140 'i' ( temp int) 0:140 'ui' ( uniform int) 0:140 'i' ( temp int) 0:141 move second child to first child ( temp int) 0:141 'i' ( temp int) 0:141 mod ( temp int) 0:141 'i' ( temp int) 0:141 'ui' ( uniform int) 0:142 Test condition and select ( temp void) 0:142 Condition 0:142 logical-or ( temp bool) 0:142 Compare Equal ( temp bool) 0:142 'i' ( temp int) 0:142 'ui' ( uniform int) 0:142 logical-xor ( temp bool) 0:142 logical-and ( temp bool) 0:142 Compare Not Equal ( temp bool) 0:142 'i' ( temp int) 0:142 'ui' ( uniform int) 0:142 Compare Equal ( temp bool) 0:142 'i' ( temp int) 0:142 'ui' ( uniform int) 0:142 Compare Not Equal ( temp bool) 0:142 'i' ( temp int) 0:142 Constant: 0:142 2 (const int) 0:142 true case 0:143 Pre-Increment ( temp int) 0:143 'i' ( temp int) 0:145 move second child to first child ( temp float) 0:145 'f' ( temp float) 0:145 divide ( temp float) 0:145 subtract ( temp float) 0:145 component-wise multiply ( temp float) 0:145 add ( temp float) 0:145 'uf' ( uniform float) 0:145 'uf' ( uniform float) 0:145 'uf' ( uniform float) 0:145 'uf' ( uniform float) 0:145 'uf' ( uniform float) 0:147 add second child into first child ( temp float) 0:147 'f' ( temp float) 0:147 length ( global float) 0:147 'v' ( temp 4-component vector of float) 0:148 add second child into first child ( temp float) 0:148 'f' ( temp float) 0:148 distance ( global float) 0:148 'v' ( temp 4-component vector of float) 0:148 'v' ( temp 4-component vector of float) 0:149 add second child into first child ( temp float) 0:149 'f' ( temp float) 0:149 dot-product ( global float) 0:149 'v' ( temp 4-component vector of float) 0:149 'v' ( temp 4-component vector of float) 0:150 add second child into first child ( temp float) 0:150 'f' ( temp float) 0:150 dot-product ( global float) 0:150 'f' ( temp float) 0:150 'uf' ( uniform float) 0:151 add second child into first child ( temp float) 0:151 'f' ( temp float) 0:151 direct index ( temp float) 0:151 cross-product ( global 3-component vector of float) 0:151 vector swizzle ( temp 3-component vector of float) 0:151 'v' ( temp 4-component vector of float) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 2 (const int) 0:151 vector swizzle ( temp 3-component vector of float) 0:151 'v' ( temp 4-component vector of float) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 2 (const int) 0:151 Constant: 0:151 0 (const int) 0:153 Test condition and select ( temp void) 0:153 Condition 0:153 logical-or ( temp bool) 0:153 Compare Equal ( temp bool) 0:153 'f' ( temp float) 0:153 'uf' ( uniform float) 0:153 logical-and ( temp bool) 0:153 Compare Not Equal ( temp bool) 0:153 'f' ( temp float) 0:153 'uf' ( uniform float) 0:153 Compare Not Equal ( temp bool) 0:153 'f' ( temp float) 0:153 Constant: 0:153 2.000000 0:153 true case 0:154 Pre-Increment ( temp float) 0:154 'f' ( temp float) 0:156 and second child into first child ( temp int) 0:156 'i' ( temp int) 0:156 'ui' ( uniform int) 0:157 or second child into first child ( temp int) 0:157 'i' ( temp int) 0:157 Constant: 0:157 66 (const int) 0:158 exclusive or second child into first child ( temp int) 0:158 'i' ( temp int) 0:158 'ui' ( uniform int) 0:159 mod second child into first child ( temp int) 0:159 'i' ( temp int) 0:159 Constant: 0:159 17 (const int) 0:160 right shift second child into first child ( temp int) 0:160 'i' ( temp int) 0:160 Constant: 0:160 2 (const int) 0:161 left shift second child into first child ( temp int) 0:161 'i' ( temp int) 0:161 'ui' ( uniform int) 0:162 move second child to first child ( temp int) 0:162 'i' ( temp int) 0:162 Bitwise not ( temp int) 0:162 'i' ( temp int) 0:163 move second child to first child ( temp bool) 0:163 'b' ( temp bool) 0:163 Negate conditional ( temp bool) 0:163 'b' ( temp bool) 0:165 move second child to first child ( temp 4-component vector of float) 0:165 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:165 Test condition and select ( temp 4-component vector of float) 0:165 Condition 0:165 'b' ( temp bool) 0:165 true case 0:165 add ( temp 4-component vector of float) 0:165 add ( temp 4-component vector of float) 0:165 Construct vec4 ( temp 4-component vector of float) 0:165 Convert int to float ( temp float) 0:165 'i' ( temp int) 0:165 Construct vec4 ( temp 4-component vector of float) 0:165 'f' ( temp float) 0:165 'v' ( temp 4-component vector of float) 0:165 false case 0:165 'v' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'uiv4' ( uniform 4-component vector of int) 0:? 'uv4' ( uniform 4-component vector of float) 0:? 'ub' ( uniform bool) 0:? 'ub41' ( uniform 4-component vector of bool) 0:? 'ub42' ( uniform 4-component vector of bool) 0:? 'uf' ( uniform float) 0:? 'ui' ( uniform int) 0:? 'uuv4' ( uniform 4-component vector of uint) 0:? 'uui' ( uniform uint) glslang-16.0.0/Test/baseResults/UTF8BOM.vert.out000066400000000000000000000000151506534232700212370ustar00rootroot00000000000000UTF8BOM.vert glslang-16.0.0/Test/baseResults/aggOps.frag.out000066400000000000000000000345451506534232700213510ustar00rootroot00000000000000aggOps.frag WARNING: 0:4: varying deprecated in version 130; may be removed in future release WARNING: 0:6: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:23 Function Definition: main( ( global void) 0:23 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 3-element array of structure{ global int i, global float f}) 0:27 'a' ( temp 3-element array of structure{ global int i, global float f}) 0:27 Construct structure ( temp 3-element array of structure{ global int i, global float f}) 0:27 Construct structure ( temp structure{ global int i, global float f}) 0:27 Convert float to int ( temp int) 0:27 direct index ( temp float) 0:27 'u' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 0 (const int) 0:27 direct index ( temp float) 0:27 'u' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 1 (const int) 0:27 Construct structure ( temp structure{ global int i, global float f}) 0:27 Convert float to int ( temp int) 0:27 direct index ( temp float) 0:27 'u' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 2 (const int) 0:27 direct index ( temp float) 0:27 'u' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 14 (const int) 0:27 14.000000 0:28 move second child to first child ( temp 3-element array of structure{ global int i, global float f}) 0:28 'b' ( temp 3-element array of structure{ global int i, global float f}) 0:28 Construct structure ( temp 3-element array of structure{ global int i, global float f}) 0:28 Constant: 0:28 17 (const int) 0:28 17.000000 0:28 Construct structure ( temp structure{ global int i, global float f}) 0:28 Convert float to int ( temp int) 0:28 direct index ( temp float) 0:28 'w' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:28 direct index ( temp float) 0:28 'w' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:28 Construct structure ( temp structure{ global int i, global float f}) 0:28 Convert float to int ( temp int) 0:28 direct index ( temp float) 0:28 'w' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 2 (const int) 0:28 direct index ( temp float) 0:28 'w' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 3 (const int) 0:30 Test condition and select ( temp void) 0:30 Condition 0:30 Compare Equal ( temp bool) 0:30 'foo2a' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:30 'foo2b' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:30 true case 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'v' ( temp 4-component vector of float) 0:31 texture ( global 4-component vector of float) 0:31 'sampler' ( uniform sampler2D) 0:31 'coord' ( smooth in 2-component vector of float) 0:30 false case 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'v' ( temp 4-component vector of float) 0:33 texture ( global 4-component vector of float) 0:33 'sampler' ( uniform sampler2D) 0:33 vector-scale ( temp 2-component vector of float) 0:33 Constant: 0:33 2.000000 0:33 'coord' ( smooth in 2-component vector of float) 0:35 Test condition and select ( temp void) 0:35 Condition 0:35 Compare Equal ( temp bool) 0:35 'u' ( smooth in 4-component vector of float) 0:35 'v' ( temp 4-component vector of float) 0:35 true case 0:36 vector scale second child into first child ( temp 4-component vector of float) 0:36 'v' ( temp 4-component vector of float) 0:36 Constant: 0:36 3.000000 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Not Equal ( temp bool) 0:38 'u' ( smooth in 4-component vector of float) 0:38 'v' ( temp 4-component vector of float) 0:38 true case 0:39 vector scale second child into first child ( temp 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:39 Constant: 0:39 4.000000 0:41 Test condition and select ( temp void) 0:41 Condition 0:41 Compare Equal ( temp bool) 0:41 'coord' ( smooth in 2-component vector of float) 0:41 vector swizzle ( temp 2-component vector of float) 0:41 'v' ( temp 4-component vector of float) 0:41 Sequence 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 3 (const int) 0:41 true case 0:42 vector scale second child into first child ( temp 4-component vector of float) 0:42 'v' ( temp 4-component vector of float) 0:42 Constant: 0:42 5.000000 0:44 Test condition and select ( temp void) 0:44 Condition 0:44 Compare Equal ( temp bool) 0:44 'a' ( temp 3-element array of structure{ global int i, global float f}) 0:44 'b' ( temp 3-element array of structure{ global int i, global float f}) 0:44 true case 0:45 vector scale second child into first child ( temp 4-component vector of float) 0:45 'v' ( temp 4-component vector of float) 0:45 Constant: 0:45 6.000000 0:47 Test condition and select ( temp void) 0:47 Condition 0:47 Compare Not Equal ( temp bool) 0:47 'a' ( temp 3-element array of structure{ global int i, global float f}) 0:47 'b' ( temp 3-element array of structure{ global int i, global float f}) 0:47 true case 0:48 vector scale second child into first child ( temp 4-component vector of float) 0:48 'v' ( temp 4-component vector of float) 0:48 Constant: 0:48 7.000000 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:50 'v' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'u' ( smooth in 4-component vector of float) 0:? 'w' ( smooth in 4-component vector of float) 0:? 'foo1' ( uniform structure{ global int i, global float f}) 0:? 'foo2a' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'foo2b' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) Linked fragment stage: Shader version: 130 0:? Sequence 0:23 Function Definition: main( ( global void) 0:23 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 3-element array of structure{ global int i, global float f}) 0:27 'a' ( temp 3-element array of structure{ global int i, global float f}) 0:27 Construct structure ( temp 3-element array of structure{ global int i, global float f}) 0:27 Construct structure ( temp structure{ global int i, global float f}) 0:27 Convert float to int ( temp int) 0:27 direct index ( temp float) 0:27 'u' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 0 (const int) 0:27 direct index ( temp float) 0:27 'u' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 1 (const int) 0:27 Construct structure ( temp structure{ global int i, global float f}) 0:27 Convert float to int ( temp int) 0:27 direct index ( temp float) 0:27 'u' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 2 (const int) 0:27 direct index ( temp float) 0:27 'u' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 14 (const int) 0:27 14.000000 0:28 move second child to first child ( temp 3-element array of structure{ global int i, global float f}) 0:28 'b' ( temp 3-element array of structure{ global int i, global float f}) 0:28 Construct structure ( temp 3-element array of structure{ global int i, global float f}) 0:28 Constant: 0:28 17 (const int) 0:28 17.000000 0:28 Construct structure ( temp structure{ global int i, global float f}) 0:28 Convert float to int ( temp int) 0:28 direct index ( temp float) 0:28 'w' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:28 direct index ( temp float) 0:28 'w' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:28 Construct structure ( temp structure{ global int i, global float f}) 0:28 Convert float to int ( temp int) 0:28 direct index ( temp float) 0:28 'w' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 2 (const int) 0:28 direct index ( temp float) 0:28 'w' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 3 (const int) 0:30 Test condition and select ( temp void) 0:30 Condition 0:30 Compare Equal ( temp bool) 0:30 'foo2a' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:30 'foo2b' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:30 true case 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'v' ( temp 4-component vector of float) 0:31 texture ( global 4-component vector of float) 0:31 'sampler' ( uniform sampler2D) 0:31 'coord' ( smooth in 2-component vector of float) 0:30 false case 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'v' ( temp 4-component vector of float) 0:33 texture ( global 4-component vector of float) 0:33 'sampler' ( uniform sampler2D) 0:33 vector-scale ( temp 2-component vector of float) 0:33 Constant: 0:33 2.000000 0:33 'coord' ( smooth in 2-component vector of float) 0:35 Test condition and select ( temp void) 0:35 Condition 0:35 Compare Equal ( temp bool) 0:35 'u' ( smooth in 4-component vector of float) 0:35 'v' ( temp 4-component vector of float) 0:35 true case 0:36 vector scale second child into first child ( temp 4-component vector of float) 0:36 'v' ( temp 4-component vector of float) 0:36 Constant: 0:36 3.000000 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Compare Not Equal ( temp bool) 0:38 'u' ( smooth in 4-component vector of float) 0:38 'v' ( temp 4-component vector of float) 0:38 true case 0:39 vector scale second child into first child ( temp 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:39 Constant: 0:39 4.000000 0:41 Test condition and select ( temp void) 0:41 Condition 0:41 Compare Equal ( temp bool) 0:41 'coord' ( smooth in 2-component vector of float) 0:41 vector swizzle ( temp 2-component vector of float) 0:41 'v' ( temp 4-component vector of float) 0:41 Sequence 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 3 (const int) 0:41 true case 0:42 vector scale second child into first child ( temp 4-component vector of float) 0:42 'v' ( temp 4-component vector of float) 0:42 Constant: 0:42 5.000000 0:44 Test condition and select ( temp void) 0:44 Condition 0:44 Compare Equal ( temp bool) 0:44 'a' ( temp 3-element array of structure{ global int i, global float f}) 0:44 'b' ( temp 3-element array of structure{ global int i, global float f}) 0:44 true case 0:45 vector scale second child into first child ( temp 4-component vector of float) 0:45 'v' ( temp 4-component vector of float) 0:45 Constant: 0:45 6.000000 0:47 Test condition and select ( temp void) 0:47 Condition 0:47 Compare Not Equal ( temp bool) 0:47 'a' ( temp 3-element array of structure{ global int i, global float f}) 0:47 'b' ( temp 3-element array of structure{ global int i, global float f}) 0:47 true case 0:48 vector scale second child into first child ( temp 4-component vector of float) 0:48 'v' ( temp 4-component vector of float) 0:48 Constant: 0:48 7.000000 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:50 'v' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'u' ( smooth in 4-component vector of float) 0:? 'w' ( smooth in 4-component vector of float) 0:? 'foo1' ( uniform structure{ global int i, global float f}) 0:? 'foo2a' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'foo2b' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) glslang-16.0.0/Test/baseResults/always-discard.frag.out000066400000000000000000000220221506534232700230230ustar00rootroot00000000000000always-discard.frag Shader version: 110 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'white' ( temp 4-component vector of float) 0:6 Constant: 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'black' ( temp 4-component vector of float) 0:7 Constant: 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'color' ( temp 4-component vector of float) 0:8 'white' ( temp 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp float) 0:11 'x' ( temp float) 0:11 subtract ( temp float) 0:11 component-wise multiply ( temp float) 0:11 direct index ( temp float) 0:11 'tex_coord' ( smooth in 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2.000000 0:11 Constant: 0:11 1.000000 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'y' ( temp float) 0:12 subtract ( temp float) 0:12 component-wise multiply ( temp float) 0:12 direct index ( temp float) 0:12 'tex_coord' ( smooth in 2-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2.000000 0:12 Constant: 0:12 1.000000 0:14 Sequence 0:14 move second child to first child ( temp float) 0:14 'radius' ( temp float) 0:14 sqrt ( global float) 0:14 add ( temp float) 0:14 component-wise multiply ( temp float) 0:14 'x' ( temp float) 0:14 'x' ( temp float) 0:14 component-wise multiply ( temp float) 0:14 'y' ( temp float) 0:14 'y' ( temp float) 0:15 Test condition and select ( temp void) 0:15 Condition 0:15 Compare Greater Than ( temp bool) 0:15 'radius' ( temp float) 0:15 Constant: 0:15 1.000000 0:15 true case 0:16 Sequence 0:16 Test condition and select ( temp void) 0:16 Condition 0:16 Compare Greater Than ( temp bool) 0:16 'radius' ( temp float) 0:16 Constant: 0:16 1.100000 0:16 true case 0:17 Sequence 0:17 Pre-Increment ( temp 4-component vector of float) 0:17 'color' ( temp 4-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:20 'color' ( temp 4-component vector of float) 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Compare Greater Than ( temp bool) 0:22 'radius' ( temp float) 0:22 Constant: 0:22 1.200000 0:22 true case 0:23 Sequence 0:23 Pre-Increment ( temp 4-component vector of float) 0:23 'color' ( temp 4-component vector of float) 0:28 Branch: Kill 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Compare Greater Than or Equal ( temp bool) 0:31 'radius' ( temp float) 0:31 Constant: 0:31 0.750000 0:31 true case 0:32 subtract second child into first child ( temp 4-component vector of float) 0:32 'color' ( temp 4-component vector of float) 0:32 Absolute value ( global float) 0:32 divide ( temp float) 0:32 pow ( global float) 0:32 'radius' ( temp float) 0:32 Constant: 0:32 16.000000 0:32 Constant: 0:32 2.000000 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:34 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex_coord' ( smooth in 2-component vector of float) Linked fragment stage: Shader version: 110 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'white' ( temp 4-component vector of float) 0:6 Constant: 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'black' ( temp 4-component vector of float) 0:7 Constant: 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'color' ( temp 4-component vector of float) 0:8 'white' ( temp 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp float) 0:11 'x' ( temp float) 0:11 subtract ( temp float) 0:11 component-wise multiply ( temp float) 0:11 direct index ( temp float) 0:11 'tex_coord' ( smooth in 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2.000000 0:11 Constant: 0:11 1.000000 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'y' ( temp float) 0:12 subtract ( temp float) 0:12 component-wise multiply ( temp float) 0:12 direct index ( temp float) 0:12 'tex_coord' ( smooth in 2-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2.000000 0:12 Constant: 0:12 1.000000 0:14 Sequence 0:14 move second child to first child ( temp float) 0:14 'radius' ( temp float) 0:14 sqrt ( global float) 0:14 add ( temp float) 0:14 component-wise multiply ( temp float) 0:14 'x' ( temp float) 0:14 'x' ( temp float) 0:14 component-wise multiply ( temp float) 0:14 'y' ( temp float) 0:14 'y' ( temp float) 0:15 Test condition and select ( temp void) 0:15 Condition 0:15 Compare Greater Than ( temp bool) 0:15 'radius' ( temp float) 0:15 Constant: 0:15 1.000000 0:15 true case 0:16 Sequence 0:16 Test condition and select ( temp void) 0:16 Condition 0:16 Compare Greater Than ( temp bool) 0:16 'radius' ( temp float) 0:16 Constant: 0:16 1.100000 0:16 true case 0:17 Sequence 0:17 Pre-Increment ( temp 4-component vector of float) 0:17 'color' ( temp 4-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:20 'color' ( temp 4-component vector of float) 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Compare Greater Than ( temp bool) 0:22 'radius' ( temp float) 0:22 Constant: 0:22 1.200000 0:22 true case 0:23 Sequence 0:23 Pre-Increment ( temp 4-component vector of float) 0:23 'color' ( temp 4-component vector of float) 0:28 Branch: Kill 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Compare Greater Than or Equal ( temp bool) 0:31 'radius' ( temp float) 0:31 Constant: 0:31 0.750000 0:31 true case 0:32 subtract second child into first child ( temp 4-component vector of float) 0:32 'color' ( temp 4-component vector of float) 0:32 Absolute value ( global float) 0:32 divide ( temp float) 0:32 pow ( global float) 0:32 'radius' ( temp float) 0:32 Constant: 0:32 16.000000 0:32 Constant: 0:32 2.000000 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:34 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex_coord' ( smooth in 2-component vector of float) glslang-16.0.0/Test/baseResults/always-discard2.frag.out000066400000000000000000000105231506534232700231100ustar00rootroot00000000000000always-discard2.frag Shader version: 110 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'white' ( temp 4-component vector of float) 0:6 Constant: 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'black' ( temp 4-component vector of float) 0:7 Constant: 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'color' ( temp 4-component vector of float) 0:8 'white' ( temp 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp float) 0:11 'x' ( temp float) 0:11 subtract ( temp float) 0:11 component-wise multiply ( temp float) 0:11 direct index ( temp float) 0:11 'tex_coord' ( smooth in 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2.000000 0:11 Constant: 0:11 1.000000 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'y' ( temp float) 0:12 subtract ( temp float) 0:12 component-wise multiply ( temp float) 0:12 direct index ( temp float) 0:12 'tex_coord' ( smooth in 2-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2.000000 0:12 Constant: 0:12 1.000000 0:14 Branch: Kill 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:17 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex_coord' ( smooth in 2-component vector of float) Linked fragment stage: Shader version: 110 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'white' ( temp 4-component vector of float) 0:6 Constant: 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'black' ( temp 4-component vector of float) 0:7 Constant: 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'color' ( temp 4-component vector of float) 0:8 'white' ( temp 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp float) 0:11 'x' ( temp float) 0:11 subtract ( temp float) 0:11 component-wise multiply ( temp float) 0:11 direct index ( temp float) 0:11 'tex_coord' ( smooth in 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2.000000 0:11 Constant: 0:11 1.000000 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'y' ( temp float) 0:12 subtract ( temp float) 0:12 component-wise multiply ( temp float) 0:12 direct index ( temp float) 0:12 'tex_coord' ( smooth in 2-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2.000000 0:12 Constant: 0:12 1.000000 0:14 Branch: Kill 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:17 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex_coord' ( smooth in 2-component vector of float) glslang-16.0.0/Test/baseResults/array.frag.out000066400000000000000000000451211506534232700212370ustar00rootroot00000000000000array.frag ERROR: 0:21: '[' : array index out of range '2' ERROR: 0:27: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:30: 'assign' : cannot convert from ' global 4-element array of float' to ' global 5-element array of float' ERROR: 0:31: 'assign' : cannot convert from ' global 4-element array of float' to ' global runtime-sized array of float' ERROR: 0:33: 'foo' : no matching overloaded function found ERROR: 0:42: '[' : array index out of range '5' ERROR: 0:45: '[' : array index out of range '1000' ERROR: 0:46: '[' : index out of range '-1' ERROR: 0:52: '[' : array index out of range '2' ERROR: 0:54: 'const' : non-matching or non-convertible constant type for const initializer ERROR: 0:56: '=' : cannot convert from ' const 2-element array of int' to ' temp 3-element array of int' ERROR: 0:57: '[]' : scalar integer expression required ERROR: 0:57: '[' : index out of range '-858993459' ERROR: 0:58: '[]' : scalar integer expression required ERROR: 0:61: '' : array size required ERROR: 0:62: '' : array size required ERROR: 0:63: '' : array size required ERROR: 0:66: '=' : cannot convert from ' temp 3-component vector of float' to ' global float' ERROR: 0:76: 'bar' : no matching overloaded function found ERROR: 0:79: '' : array size required ERROR: 0:84: 'return' : type does not match, or is not convertible to, the function's return type ERROR: 0:93: 'length' : array must be declared with a size before using this method ERROR: 0:101: '[' : array index out of range '5' ERROR: 0:104: 'constructor' : array constructor must have at least one argument ERROR: 0:104: '=' : cannot convert from ' const float' to ' global unsized 1-element array of int' ERROR: 0:106: 'constructor' : array argument must be sized ERROR: 0:111: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:111: 'variable indexing sampler array' : not supported with this profile: none ERROR: 0:112: '[]' : array initializer must be sized ERROR: 29 compilation errors. No code generated. Shader version: 130 ERROR: node is still EOpNull! 0:9 Function Definition: foo(f1[5]; ( global 4-element array of float) 0:9 Function Parameters: 0:9 'a' ( in 5-element array of float) 0:11 Sequence 0:11 Branch: Return with expression 0:11 Construct float ( temp 4-element array of float) 0:11 direct index ( temp float) 0:11 'a' ( in 5-element array of float) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp float) 0:11 'a' ( in 5-element array of float) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp float) 0:11 'a' ( in 5-element array of float) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp float) 0:11 'a' ( in 5-element array of float) 0:11 Constant: 0:11 3 (const int) 0:14 Function Definition: bar(f1[5]; ( global void) 0:14 Function Parameters: 0:14 '' ( in 5-element array of float) 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:? Sequence 0:? Sequence 0:21 move second child to first child ( temp float) 0:21 direct index ( temp float) 0:21 'gu' ( temp 2-element array of float) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 4.000000 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 'gu' ( global runtime-sized array of float) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 4.000000 0:26 move second child to first child ( temp float) 0:26 direct index ( temp float) 0:26 'gu' ( global runtime-sized array of float) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 3.000000 0:27 move second child to first child ( temp float) 0:27 indirect index ( temp float) 0:27 'gu' ( global runtime-sized array of float) 0:27 'a' ( uniform int) 0:27 Constant: 0:27 5.000000 0:29 move second child to first child ( temp 4-element array of float) 0:29 'g4' ( global 4-element array of float) 0:29 Function Call: foo(f1[5]; ( global 4-element array of float) 0:29 'g5' ( global 5-element array of float) 0:30 'g5' ( global 5-element array of float) 0:31 'gu' ( global runtime-sized array of float) 0:33 Constant: 0:33 0.000000 0:34 Function Call: bar(f1[5]; ( global void) 0:34 'g5' ( global 5-element array of float) 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 Compare Equal ( temp bool) 0:36 Constant: 0:36 1.000000 0:36 2.000000 0:36 3.000000 0:36 4.000000 0:36 'g4' ( global 4-element array of float) 0:36 true case 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 'gu' ( global runtime-sized array of float) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 2.000000 0:40 move second child to first child ( temp float) 0:40 direct index ( temp float) 0:40 'u' ( temp 5-element array of float) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 3.000000 0:42 move second child to first child ( temp float) 0:42 direct index ( temp float) 0:42 'u' ( temp 5-element array of float) 0:42 Constant: 0:42 5 (const int) 0:42 Constant: 0:42 5.000000 0:43 Function Call: foo(f1[5]; ( global 4-element array of float) 0:43 'u' ( temp 5-element array of float) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 direct index ( temp 4-component vector of float FragData) 0:45 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:45 Constant: 0:45 1000 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp 4-component vector of float) 0:46 direct index ( temp 4-component vector of float FragData) 0:46 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:46 Constant: 0:46 -1 (const int) 0:46 Constant: 0:46 1.000000 0:46 1.000000 0:46 1.000000 0:46 1.000000 0:47 move second child to first child ( temp 4-component vector of float) 0:47 direct index ( temp 4-component vector of float FragData) 0:47 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:50 Sequence 0:50 move second child to first child ( temp int) 0:50 'sum' ( temp int) 0:50 Constant: 0:50 3 (const int) 0:51 add second child into first child ( temp int) 0:51 'sum' ( temp int) 0:51 Constant: 0:51 2 (const int) 0:52 add second child into first child ( temp int) 0:52 'sum' ( temp int) 0:52 Constant: 0:52 2 (const int) 0:55 Sequence 0:55 move second child to first child ( temp 2-element array of int) 0:55 'ica' ( temp 2-element array of int) 0:55 Constant: 0:55 3 (const int) 0:55 2 (const int) 0:57 move second child to first child ( temp int) 0:57 direct index ( temp int) 0:57 'ica' ( temp 2-element array of int) 0:57 Constant: 0:57 3.100000 0:57 Constant: 0:57 3 (const int) 0:58 move second child to first child ( temp int) 0:58 indirect index ( temp int) 0:58 'ica' ( temp 2-element array of int) 0:58 direct index ( temp float) 0:58 'u' ( temp 5-element array of float) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 4 (const int) 0:68 Function Definition: foo( ( global void) 0:68 Function Parameters: 0:? Sequence 0:71 move second child to first child ( temp int) 0:71 direct index ( temp int) 0:71 'uns' ( temp unsized 4-element array of int) 0:71 Constant: 0:71 3 (const int) 0:71 Constant: 0:71 40 (const int) 0:72 move second child to first child ( temp int) 0:72 direct index ( temp int) 0:72 'uns' ( temp unsized 4-element array of int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 30 (const int) 0:73 move second child to first child ( temp 3-component vector of float) 0:73 direct index ( temp 3-component vector of float) 0:73 'guns' ( global unsized 8-element array of 3-component vector of float) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 2.400000 0:73 2.400000 0:73 2.400000 0:76 Constant: 0:76 0.000000 0:79 Function Definition: foo2( ( global unsized 1-element array of float) 0:79 Function Parameters: 0:? Sequence 0:82 Branch: Return with expression 0:82 'f' ( temp unsized 1-element array of float) 0:84 Branch: Return with expression 0:84 'g' ( temp 9-element array of float) 0:89 Function Definition: foo3( ( global void) 0:89 Function Parameters: 0:? Sequence 0:92 move second child to first child ( temp float) 0:92 direct index ( temp float) 0:92 'resize1' ( temp 3-element array of float) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 4.000000 0:93 Constant: 0:93 1 (const int) 0:95 Constant: 0:95 3 (const int) 0:98 move second child to first child ( temp float) 0:98 direct index ( temp float) 0:98 'resize2' ( temp 5-element array of float) 0:98 Constant: 0:98 5 (const int) 0:98 Constant: 0:98 4.000000 0:100 Constant: 0:100 5 (const int) 0:101 move second child to first child ( temp float) 0:101 direct index ( temp float) 0:101 'resize2' ( temp 5-element array of float) 0:101 Constant: 0:101 5 (const int) 0:101 Constant: 0:101 4.000000 0:106 Sequence 0:106 move second child to first child ( temp float) 0:106 'b' ( global float) 0:106 Constant: 0:106 0.000000 0:109 Function Definition: foo4( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 indirect index ( temp sampler2D) 0:111 's2d' ( uniform runtime-sized array of sampler2D) 0:111 'a' ( uniform int) 0:112 Sequence 0:112 move second child to first child ( temp unsized 1-element array of float) 0:112 'local' ( temp unsized 1-element array of float) 0:112 'gUnusedUnsized' ( global unsized 1-element array of float) 0:? Linker Objects 0:? 'gu' ( global runtime-sized array of float) 0:? 'g4' ( global 4-element array of float) 0:? 'g5' ( global 5-element array of float) 0:? 'a' ( uniform int) 0:? 'guns' ( global unsized 8-element array of 3-component vector of float) 0:? 'f' ( global float) 0:? 'gUnusedUnsized' ( global unsized 1-element array of float) 0:? 'i' ( global unsized 1-element array of int) 0:? 'emptyA' ( global unsized 1-element array of float) 0:? 'b' ( global float) 0:? 's2d' ( uniform runtime-sized array of sampler2D) Linked fragment stage: Shader version: 130 ERROR: node is still EOpNull! 0:9 Function Definition: foo(f1[5]; ( global 4-element array of float) 0:9 Function Parameters: 0:9 'a' ( in 5-element array of float) 0:11 Sequence 0:11 Branch: Return with expression 0:11 Construct float ( temp 4-element array of float) 0:11 direct index ( temp float) 0:11 'a' ( in 5-element array of float) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp float) 0:11 'a' ( in 5-element array of float) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp float) 0:11 'a' ( in 5-element array of float) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp float) 0:11 'a' ( in 5-element array of float) 0:11 Constant: 0:11 3 (const int) 0:14 Function Definition: bar(f1[5]; ( global void) 0:14 Function Parameters: 0:14 '' ( in 5-element array of float) 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:? Sequence 0:? Sequence 0:21 move second child to first child ( temp float) 0:21 direct index ( temp float) 0:21 'gu' ( temp 2-element array of float) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 4.000000 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 'gu' ( global runtime-sized array of float) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 4.000000 0:26 move second child to first child ( temp float) 0:26 direct index ( temp float) 0:26 'gu' ( global runtime-sized array of float) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 3.000000 0:27 move second child to first child ( temp float) 0:27 indirect index ( temp float) 0:27 'gu' ( global runtime-sized array of float) 0:27 'a' ( uniform int) 0:27 Constant: 0:27 5.000000 0:29 move second child to first child ( temp 4-element array of float) 0:29 'g4' ( global 4-element array of float) 0:29 Function Call: foo(f1[5]; ( global 4-element array of float) 0:29 'g5' ( global 5-element array of float) 0:30 'g5' ( global 5-element array of float) 0:31 'gu' ( global runtime-sized array of float) 0:33 Constant: 0:33 0.000000 0:34 Function Call: bar(f1[5]; ( global void) 0:34 'g5' ( global 5-element array of float) 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 Compare Equal ( temp bool) 0:36 Constant: 0:36 1.000000 0:36 2.000000 0:36 3.000000 0:36 4.000000 0:36 'g4' ( global 4-element array of float) 0:36 true case 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 'gu' ( global runtime-sized array of float) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 2.000000 0:40 move second child to first child ( temp float) 0:40 direct index ( temp float) 0:40 'u' ( temp 5-element array of float) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 3.000000 0:42 move second child to first child ( temp float) 0:42 direct index ( temp float) 0:42 'u' ( temp 5-element array of float) 0:42 Constant: 0:42 5 (const int) 0:42 Constant: 0:42 5.000000 0:43 Function Call: foo(f1[5]; ( global 4-element array of float) 0:43 'u' ( temp 5-element array of float) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 direct index ( temp 4-component vector of float FragData) 0:45 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:45 Constant: 0:45 1000 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp 4-component vector of float) 0:46 direct index ( temp 4-component vector of float FragData) 0:46 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:46 Constant: 0:46 -1 (const int) 0:46 Constant: 0:46 1.000000 0:46 1.000000 0:46 1.000000 0:46 1.000000 0:47 move second child to first child ( temp 4-component vector of float) 0:47 direct index ( temp 4-component vector of float FragData) 0:47 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:50 Sequence 0:50 move second child to first child ( temp int) 0:50 'sum' ( temp int) 0:50 Constant: 0:50 3 (const int) 0:51 add second child into first child ( temp int) 0:51 'sum' ( temp int) 0:51 Constant: 0:51 2 (const int) 0:52 add second child into first child ( temp int) 0:52 'sum' ( temp int) 0:52 Constant: 0:52 2 (const int) 0:55 Sequence 0:55 move second child to first child ( temp 2-element array of int) 0:55 'ica' ( temp 2-element array of int) 0:55 Constant: 0:55 3 (const int) 0:55 2 (const int) 0:57 move second child to first child ( temp int) 0:57 direct index ( temp int) 0:57 'ica' ( temp 2-element array of int) 0:57 Constant: 0:57 3.100000 0:57 Constant: 0:57 3 (const int) 0:58 move second child to first child ( temp int) 0:58 indirect index ( temp int) 0:58 'ica' ( temp 2-element array of int) 0:58 direct index ( temp float) 0:58 'u' ( temp 5-element array of float) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 4 (const int) 0:106 Sequence 0:106 move second child to first child ( temp float) 0:106 'b' ( global float) 0:106 Constant: 0:106 0.000000 0:? Linker Objects 0:? 'gu' ( global runtime-sized array of float) 0:? 'g4' ( global 4-element array of float) 0:? 'g5' ( global 5-element array of float) 0:? 'a' ( uniform int) 0:? 'guns' ( global 8-element array of 3-component vector of float) 0:? 'f' ( global float) 0:? 'gUnusedUnsized' ( global 1-element array of float) 0:? 'i' ( global 1-element array of int) 0:? 'emptyA' ( global 1-element array of float) 0:? 'b' ( global float) 0:? 's2d' ( uniform runtime-sized array of sampler2D) glslang-16.0.0/Test/baseResults/array100.frag.out000066400000000000000000000345031506534232700214620ustar00rootroot00000000000000array100.frag ERROR: 0:3: 'float' : type requires declaration of default precision qualifier ERROR: 0:3: '' : array size required ERROR: 0:9: 'arrayed type' : not supported for this version or the enabled extensions ERROR: 0:9: 'arrayed type' : not supported for this version or the enabled extensions ERROR: 0:9: 'array in function return type' : not supported for this version or the enabled extensions ERROR: 0:11: 'arrayed constructor' : not supported for this version or the enabled extensions ERROR: 0:21: '[' : array index out of range '2' ERROR: 0:24: 'array assignment' : not supported for this version or the enabled extensions ERROR: 0:25: 'array assignment' : not supported for this version or the enabled extensions ERROR: 0:25: 'assign' : cannot convert from ' global 4-element array of mediump float' to ' global 5-element array of mediump float' ERROR: 0:26: 'array assignment' : not supported for this version or the enabled extensions ERROR: 0:26: 'assign' : cannot convert from ' global 4-element array of mediump float' to ' global unsized 1-element array of mediump float' ERROR: 0:28: 'foo' : no matching overloaded function found ERROR: 0:31: 'arrayed constructor' : not supported for this version or the enabled extensions ERROR: 0:31: 'array comparison' : not supported for this version or the enabled extensions ERROR: 0:35: '[' : array index out of range '5' ERROR: 0:38: '[' : array index out of range '1000' ERROR: 0:39: '[' : index out of range '-1' ERROR: 0:53: 'array in function return type' : not supported for this version or the enabled extensions ERROR: 0:66: 'array assignment' : not supported for this version or the enabled extensions ERROR: 0:68: 'array assignment' : not supported for this version or the enabled extensions ERROR: 0:69: 'array initializer' : not supported for this version or the enabled extensions ERROR: 22 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:9 Function Definition: foo(f1[5]; ( global 4-element array of mediump float) 0:9 Function Parameters: 0:9 'a' ( in 5-element array of mediump float) 0:11 Sequence 0:11 Branch: Return with expression 0:11 Construct float ( temp 4-element array of mediump float) 0:11 direct index ( temp mediump float) 0:11 'a' ( in 5-element array of mediump float) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp mediump float) 0:11 'a' ( in 5-element array of mediump float) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp mediump float) 0:11 'a' ( in 5-element array of mediump float) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp mediump float) 0:11 'a' ( in 5-element array of mediump float) 0:11 Constant: 0:11 3 (const int) 0:14 Function Definition: bar(f1[5]; ( global void) 0:14 Function Parameters: 0:14 '' ( in 5-element array of mediump float) 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:? Sequence 0:? Sequence 0:21 move second child to first child ( temp mediump float) 0:21 direct index ( temp mediump float) 0:21 'gu' ( temp 2-element array of mediump float) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 4.000000 0:24 move second child to first child ( temp 4-element array of mediump float) 0:24 'g4' ( global 4-element array of mediump float) 0:24 Function Call: foo(f1[5]; ( global 4-element array of mediump float) 0:24 'g5' ( global 5-element array of mediump float) 0:25 'g5' ( global 5-element array of mediump float) 0:26 'gu' ( global unsized 1-element array of mediump float) 0:28 Constant: 0:28 0.000000 0:29 Function Call: bar(f1[5]; ( global void) 0:29 'g5' ( global 5-element array of mediump float) 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Compare Equal ( temp bool) 0:31 Constant: 0:31 1.000000 0:31 2.000000 0:31 3.000000 0:31 4.000000 0:31 'g4' ( global 4-element array of mediump float) 0:31 true case 0:32 move second child to first child ( temp mediump float) 0:32 direct index ( temp mediump float) 0:32 'gu' ( global unsized 1-element array of mediump float) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2.000000 0:35 move second child to first child ( temp mediump float) 0:35 direct index ( temp mediump float) 0:35 'u' ( temp 5-element array of mediump float) 0:35 Constant: 0:35 5 (const int) 0:35 Constant: 0:35 5.000000 0:36 Function Call: foo(f1[5]; ( global 4-element array of mediump float) 0:36 'u' ( temp 5-element array of mediump float) 0:38 move second child to first child ( temp mediump 4-component vector of float) 0:38 direct index ( temp mediump 4-component vector of float FragData) 0:38 'gl_FragData' ( fragColor 32-element array of mediump 4-component vector of float FragData) 0:38 Constant: 0:38 1000 (const int) 0:38 Constant: 0:38 1.000000 0:38 1.000000 0:38 1.000000 0:38 1.000000 0:39 move second child to first child ( temp mediump 4-component vector of float) 0:39 direct index ( temp mediump 4-component vector of float FragData) 0:39 'gl_FragData' ( fragColor 32-element array of mediump 4-component vector of float FragData) 0:39 Constant: 0:39 -1 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp mediump 4-component vector of float) 0:40 direct index ( temp mediump 4-component vector of float FragData) 0:40 'gl_FragData' ( fragColor 32-element array of mediump 4-component vector of float FragData) 0:40 Constant: 0:40 3 (const int) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:53 Function Definition: bar9( ( global structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:53 Function Parameters: 0:? Sequence 0:56 Branch: Return with expression 0:56 's' ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:59 Function Definition: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; ( global void) 0:59 Function Parameters: 0:59 's' ( in structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:63 Function Definition: bar11( ( global void) 0:63 Function Parameters: 0:? Sequence 0:66 move second child to first child ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:66 's1' ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:66 's2' ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:67 Function Call: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; ( global void) 0:67 's1' ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:68 move second child to first child ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:68 's2' ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:68 Function Call: bar9( ( global structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:69 Sequence 0:69 move second child to first child ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:69 'initSb' ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:69 's1' ( temp structure{ global mediump 4-component vector of float v4, global structure{ global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:? Linker Objects 0:? 'gu' ( global unsized 1-element array of mediump float) 0:? 'g4' ( global 4-element array of mediump float) 0:? 'g5' ( global 5-element array of mediump float) 0:? 'a' ( uniform mediump int) Linked fragment stage: Shader version: 100 ERROR: node is still EOpNull! 0:9 Function Definition: foo(f1[5]; ( global 4-element array of mediump float) 0:9 Function Parameters: 0:9 'a' ( in 5-element array of mediump float) 0:11 Sequence 0:11 Branch: Return with expression 0:11 Construct float ( temp 4-element array of mediump float) 0:11 direct index ( temp mediump float) 0:11 'a' ( in 5-element array of mediump float) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp mediump float) 0:11 'a' ( in 5-element array of mediump float) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp mediump float) 0:11 'a' ( in 5-element array of mediump float) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp mediump float) 0:11 'a' ( in 5-element array of mediump float) 0:11 Constant: 0:11 3 (const int) 0:14 Function Definition: bar(f1[5]; ( global void) 0:14 Function Parameters: 0:14 '' ( in 5-element array of mediump float) 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:? Sequence 0:? Sequence 0:21 move second child to first child ( temp mediump float) 0:21 direct index ( temp mediump float) 0:21 'gu' ( temp 2-element array of mediump float) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 4.000000 0:24 move second child to first child ( temp 4-element array of mediump float) 0:24 'g4' ( global 4-element array of mediump float) 0:24 Function Call: foo(f1[5]; ( global 4-element array of mediump float) 0:24 'g5' ( global 5-element array of mediump float) 0:25 'g5' ( global 5-element array of mediump float) 0:26 'gu' ( global 1-element array of mediump float) 0:28 Constant: 0:28 0.000000 0:29 Function Call: bar(f1[5]; ( global void) 0:29 'g5' ( global 5-element array of mediump float) 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Compare Equal ( temp bool) 0:31 Constant: 0:31 1.000000 0:31 2.000000 0:31 3.000000 0:31 4.000000 0:31 'g4' ( global 4-element array of mediump float) 0:31 true case 0:32 move second child to first child ( temp mediump float) 0:32 direct index ( temp mediump float) 0:32 'gu' ( global 1-element array of mediump float) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2.000000 0:35 move second child to first child ( temp mediump float) 0:35 direct index ( temp mediump float) 0:35 'u' ( temp 5-element array of mediump float) 0:35 Constant: 0:35 5 (const int) 0:35 Constant: 0:35 5.000000 0:36 Function Call: foo(f1[5]; ( global 4-element array of mediump float) 0:36 'u' ( temp 5-element array of mediump float) 0:38 move second child to first child ( temp mediump 4-component vector of float) 0:38 direct index ( temp mediump 4-component vector of float FragData) 0:38 'gl_FragData' ( fragColor 32-element array of mediump 4-component vector of float FragData) 0:38 Constant: 0:38 1000 (const int) 0:38 Constant: 0:38 1.000000 0:38 1.000000 0:38 1.000000 0:38 1.000000 0:39 move second child to first child ( temp mediump 4-component vector of float) 0:39 direct index ( temp mediump 4-component vector of float FragData) 0:39 'gl_FragData' ( fragColor 32-element array of mediump 4-component vector of float FragData) 0:39 Constant: 0:39 -1 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp mediump 4-component vector of float) 0:40 direct index ( temp mediump 4-component vector of float FragData) 0:40 'gl_FragData' ( fragColor 32-element array of mediump 4-component vector of float FragData) 0:40 Constant: 0:40 3 (const int) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:? Linker Objects 0:? 'gu' ( global 1-element array of mediump float) 0:? 'g4' ( global 4-element array of mediump float) 0:? 'g5' ( global 5-element array of mediump float) 0:? 'a' ( uniform mediump int) glslang-16.0.0/Test/baseResults/atomicAdd.comp.out000066400000000000000000000100151506534232700220170ustar00rootroot00000000000000atomicAdd.comp ERROR: 0:18: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions. ERROR: 1 compilation errors. No code generated. Shader version: 320 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:16 Sequence 0:16 AtomicAdd ( global highp int) 0:16 x: direct index for structure (layout( column_major shared) coherent buffer highp int) 0:16 'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x}) 0:16 Constant: 0:16 0 (const uint) 0:16 Constant: 0:16 1 (const int) 0:17 AtomicAdd ( global highp int) 0:17 direct index (layout( std430) temp highp int) 0:17 y: direct index for structure (layout( std430) global 3-element array of highp int) 0:17 f: direct index for structure (layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y}) 0:17 't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f}) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 1 (const int) 0:18 AtomicAdd ( global highp int) 0:18 'z' ( global highp int) 0:18 Constant: 0:18 1 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f}) 0:? 'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x}) 0:? 'z' ( global highp int) Linked compute stage: Shader version: 320 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:16 Sequence 0:16 AtomicAdd ( global highp int) 0:16 x: direct index for structure (layout( column_major shared) coherent buffer highp int) 0:16 'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x}) 0:16 Constant: 0:16 0 (const uint) 0:16 Constant: 0:16 1 (const int) 0:17 AtomicAdd ( global highp int) 0:17 direct index (layout( std430) temp highp int) 0:17 y: direct index for structure (layout( std430) global 3-element array of highp int) 0:17 f: direct index for structure (layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y}) 0:17 't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f}) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 1 (const int) 0:18 AtomicAdd ( global highp int) 0:18 'z' ( global highp int) 0:18 Constant: 0:18 1 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f}) 0:? 'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x}) 0:? 'z' ( global highp int) glslang-16.0.0/Test/baseResults/atomicCounterARBOps.vert.out000066400000000000000000000177451506534232700240200ustar00rootroot00000000000000atomicCounterARBOps.vert Shader version: 450 Requested GL_ARB_shader_atomic_counter_ops Requested GL_ARB_shader_atomic_counters 0:? Sequence 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:10 Sequence 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'outColor' ( temp 4-component vector of float) 0:10 Constant: 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:13 move second child to first child ( temp uint) 0:13 'ret' ( temp uint) 0:13 AtomicCounterAdd ( global uint) 0:13 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:13 Constant: 0:13 4 (const uint) 0:14 move second child to first child ( temp uint) 0:14 'ret' ( temp uint) 0:14 AtomicCounterSubtract ( global uint) 0:14 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:14 Constant: 0:14 4 (const uint) 0:15 move second child to first child ( temp uint) 0:15 'ret' ( temp uint) 0:15 AtomicCounterMin ( global uint) 0:15 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:15 Constant: 0:15 4 (const uint) 0:16 move second child to first child ( temp uint) 0:16 'ret' ( temp uint) 0:16 AtomicCounterMax ( global uint) 0:16 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:16 Constant: 0:16 4 (const uint) 0:17 move second child to first child ( temp uint) 0:17 'ret' ( temp uint) 0:17 AtomicCounterAnd ( global uint) 0:17 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:17 Constant: 0:17 4 (const uint) 0:18 move second child to first child ( temp uint) 0:18 'ret' ( temp uint) 0:18 AtomicCounterOr ( global uint) 0:18 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:18 Constant: 0:18 4 (const uint) 0:19 move second child to first child ( temp uint) 0:19 'ret' ( temp uint) 0:19 AtomicCounterXor ( global uint) 0:19 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:19 Constant: 0:19 4 (const uint) 0:20 move second child to first child ( temp uint) 0:20 'ret' ( temp uint) 0:20 AtomicCounterExchange ( global uint) 0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:20 Constant: 0:20 4 (const uint) 0:21 move second child to first child ( temp uint) 0:21 'ret' ( temp uint) 0:21 AtomicCounterCompSwap ( global uint) 0:21 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:21 Constant: 0:21 4 (const uint) 0:21 Constant: 0:21 4 (const uint) 0:23 Sequence 0:23 move second child to first child ( temp uint) 0:23 'after' ( temp uint) 0:23 AtomicCounter ( global uint) 0:23 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:24 Test condition and select ( temp void) 0:24 Condition 0:24 Compare Equal ( temp bool) 0:24 'after' ( temp uint) 0:24 'ret' ( temp uint) 0:24 true case 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'outColor' ( temp 4-component vector of float) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'vsColor' ( smooth out 4-component vector of float) 0:27 'outColor' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? 'vsColor' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 450 Requested GL_ARB_shader_atomic_counter_ops Requested GL_ARB_shader_atomic_counters 0:? Sequence 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:10 Sequence 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'outColor' ( temp 4-component vector of float) 0:10 Constant: 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:13 move second child to first child ( temp uint) 0:13 'ret' ( temp uint) 0:13 AtomicCounterAdd ( global uint) 0:13 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:13 Constant: 0:13 4 (const uint) 0:14 move second child to first child ( temp uint) 0:14 'ret' ( temp uint) 0:14 AtomicCounterSubtract ( global uint) 0:14 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:14 Constant: 0:14 4 (const uint) 0:15 move second child to first child ( temp uint) 0:15 'ret' ( temp uint) 0:15 AtomicCounterMin ( global uint) 0:15 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:15 Constant: 0:15 4 (const uint) 0:16 move second child to first child ( temp uint) 0:16 'ret' ( temp uint) 0:16 AtomicCounterMax ( global uint) 0:16 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:16 Constant: 0:16 4 (const uint) 0:17 move second child to first child ( temp uint) 0:17 'ret' ( temp uint) 0:17 AtomicCounterAnd ( global uint) 0:17 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:17 Constant: 0:17 4 (const uint) 0:18 move second child to first child ( temp uint) 0:18 'ret' ( temp uint) 0:18 AtomicCounterOr ( global uint) 0:18 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:18 Constant: 0:18 4 (const uint) 0:19 move second child to first child ( temp uint) 0:19 'ret' ( temp uint) 0:19 AtomicCounterXor ( global uint) 0:19 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:19 Constant: 0:19 4 (const uint) 0:20 move second child to first child ( temp uint) 0:20 'ret' ( temp uint) 0:20 AtomicCounterExchange ( global uint) 0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:20 Constant: 0:20 4 (const uint) 0:21 move second child to first child ( temp uint) 0:21 'ret' ( temp uint) 0:21 AtomicCounterCompSwap ( global uint) 0:21 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:21 Constant: 0:21 4 (const uint) 0:21 Constant: 0:21 4 (const uint) 0:23 Sequence 0:23 move second child to first child ( temp uint) 0:23 'after' ( temp uint) 0:23 AtomicCounter ( global uint) 0:23 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:24 Test condition and select ( temp void) 0:24 Condition 0:24 Compare Equal ( temp bool) 0:24 'after' ( temp uint) 0:24 'ret' ( temp uint) 0:24 true case 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'outColor' ( temp 4-component vector of float) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'vsColor' ( smooth out 4-component vector of float) 0:27 'outColor' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? 'vsColor' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/atomic_uint.frag.out000066400000000000000000000130651506534232700224360ustar00rootroot00000000000000atomic_uint.frag ERROR: 0:4: 'counter' : redefinition ERROR: 0:11: 'atomic_uint' : samplers and atomic_uints cannot be output parameters ERROR: 0:13: 'return' : type does not match, or is not convertible to, the function's return type ERROR: 0:19: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: non_uniform_counter ERROR: 0:24: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:29: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( binding=0 offset=0) uniform atomic_uint' and a right operand of type 'layout( binding=0 offset=0) uniform atomic_uint' (or there is no acceptable conversion) ERROR: 0:30: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( binding=0 offset=0) uniform atomic_uint (or there is no acceptable conversion) ERROR: 0:32: '[]' : scalar integer expression required ERROR: 0:35: 'assign' : l-value required "counter" (can't modify a uniform) ERROR: 0:35: 'assign' : cannot convert from ' const int' to 'layout( binding=0 offset=0) uniform atomic_uint' ERROR: 0:38: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acin ERROR: 0:39: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acg ERROR: 0:48: 'offset' : atomic counters sharing the same offset: 12 ERROR: 0:49: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 14 compilation errors. No code generated. Shader version: 420 ERROR: node is still EOpNull! 0:6 Function Definition: func(au1; ( global uint) 0:6 Function Parameters: 0:6 'c' ( in atomic_uint) 0:8 Sequence 0:8 Branch: Return with expression 0:8 AtomicCounterIncrement ( global uint) 0:8 'c' ( in atomic_uint) 0:11 Function Definition: func2(au1; ( global uint) 0:11 Function Parameters: 0:11 'c' ( out atomic_uint) 0:13 Sequence 0:13 Branch: Return with expression 0:13 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:14 Branch: Return with expression 0:14 AtomicCounter ( global uint) 0:14 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp uint) 0:20 'val' ( temp uint) 0:20 AtomicCounter ( global uint) 0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:21 AtomicCounterDecrement ( global uint) 0:21 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:27 Function Definition: opac( ( global void) 0:27 Function Parameters: 0:29 Sequence 0:29 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:30 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:32 indirect index ( temp int) 0:32 'a' ( temp 3-element array of int) 0:32 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:33 direct index (layout( binding=1 offset=3) temp atomic_uint) 0:33 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) 0:33 Constant: 0:33 2 (const int) 0:34 indirect index (layout( binding=1 offset=3) temp atomic_uint) 0:34 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) 0:34 'i' ( uniform int) 0:35 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? Linker Objects 0:? 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) 0:? 'i' ( uniform int) 0:? 'acin' ( smooth in atomic_uint) 0:? 'acg' ( global atomic_uint) 0:? 'aNoBind' ( uniform atomic_uint) 0:? 'aOffset' (layout( binding=0 offset=32) uniform atomic_uint) 0:? 'bar3' (layout( binding=0 offset=4) uniform atomic_uint) 0:? 'ac' (layout( binding=0 offset=8) uniform 2-element array of atomic_uint) 0:? 'ad' (layout( binding=0 offset=16) uniform atomic_uint) 0:? 'bar4' (layout( offset=8) uniform atomic_uint) 0:? 'overlap' (layout( binding=0 offset=12) uniform atomic_uint) 0:? 'bigBind' (layout( binding=20) uniform atomic_uint) Linked fragment stage: Shader version: 420 ERROR: node is still EOpNull! 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp uint) 0:20 'val' ( temp uint) 0:20 AtomicCounter ( global uint) 0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:21 AtomicCounterDecrement ( global uint) 0:21 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? Linker Objects 0:? 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) 0:? 'i' ( uniform int) 0:? 'acin' ( smooth in atomic_uint) 0:? 'acg' ( global atomic_uint) 0:? 'aNoBind' ( uniform atomic_uint) 0:? 'aOffset' (layout( binding=0 offset=32) uniform atomic_uint) 0:? 'bar3' (layout( binding=0 offset=4) uniform atomic_uint) 0:? 'ac' (layout( binding=0 offset=8) uniform 2-element array of atomic_uint) 0:? 'ad' (layout( binding=0 offset=16) uniform atomic_uint) 0:? 'bar4' (layout( offset=8) uniform atomic_uint) 0:? 'overlap' (layout( binding=0 offset=12) uniform atomic_uint) 0:? 'bigBind' (layout( binding=20) uniform atomic_uint) glslang-16.0.0/Test/baseResults/badChars.frag.out000066400000000000000000000014651506534232700216330ustar00rootroot00000000000000badChars.frag ERROR: 0:1: 'preprocessor evaluation' : bad expression ERROR: 0:1: '#if' : unexpected tokens following directive ERROR: 0:3: '#error' : A B ERROR: 0:4: 'preprocessor evaluation' : bad expression ERROR: 0:4: '#if' : unexpected tokens following directive ERROR: 0:6: '€' : unexpected token ERROR: 0:7: 'string' : End of line in string ERROR: 0:7: '' : syntax error, unexpected INT, expecting COMMA or SEMICOLON ERROR: 8 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'a' ( global mediump int) Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'a' ( global mediump int) glslang-16.0.0/Test/baseResults/badMacroArgs.frag.out000066400000000000000000000002461506534232700224450ustar00rootroot00000000000000badMacroArgs.frag ERROR: 0:4: 'macro expansion' : Too few args in Macro m ERROR: 0:4: '' : compilation terminated ERROR: 2 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/boolinput.error.frag.out000066400000000000000000000013661506534232700232670ustar00rootroot00000000000000boolinput.error.frag ERROR: 0:3: 'in' : cannot be bool ERROR: 0:9: 'in' : cannot contain bool ERROR: 0:11: 'in' : cannot contain bool ERROR: 3 compilation errors. No code generated. Shader version: 460 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:? Linker Objects 0:? 'a' ( smooth in bool) 0:? 's' ( smooth in structure{ global bool b}) 0:? 'anon@0' ( in block{ in bool c}) Linked fragment stage: Shader version: 460 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:? Linker Objects 0:? 'a' ( smooth in bool) 0:? 's' ( smooth in structure{ global bool b}) 0:? 'anon@0' ( in block{ in bool c}) glslang-16.0.0/Test/baseResults/booloutput.error.vert.out000066400000000000000000000017241506534232700235270ustar00rootroot00000000000000booloutput.error.vert ERROR: 0:3: 'out' : cannot be bool ERROR: 0:9: 'out' : cannot contain bool ERROR: 0:11: 'out' : cannot contain bool ERROR: 3 compilation errors. No code generated. Shader version: 460 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:? Linker Objects 0:? 'a' ( smooth out bool) 0:? 's' ( smooth out structure{ global bool b}) 0:? 'anon@0' ( out block{ out bool c}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 460 ERROR: node is still EOpNull! 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:? Linker Objects 0:? 'a' ( smooth out bool) 0:? 's' ( smooth out structure{ global bool b}) 0:? 'anon@0' ( out block{ out bool c}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/comment.frag.out000066400000000000000000000011701506534232700215570ustar00rootroot00000000000000comment.frag WARNING: 0:10: 'line continuation' : used at end of comment; the following line is still part of the comment WARNING: 0:12: 'line continuation' : used at end of comment; the following line is still part of the comment Shader version: 430 0:? Sequence 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:? Linker Objects 0:? 'v' ( smooth in 4-component vector of float) Linked fragment stage: Shader version: 430 0:? Sequence 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:? Linker Objects 0:? 'v' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/compoundsuffix.frag.hlsl000066400000000000000000000040661506534232700233300ustar00rootroot00000000000000compoundsuffix.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 glslang-16.0.0/Test/baseResults/compoundsuffix.vert.glsl000066400000000000000000000007001506534232700233570ustar00rootroot00000000000000compoundsuffix.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 glslang-16.0.0/Test/baseResults/conditionalDiscard.frag.out000066400000000000000000000043101506534232700237110ustar00rootroot00000000000000conditionalDiscard.frag Shader version: 110 0:? Sequence 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'v' ( temp 4-component vector of float) 0:8 texture ( global 4-component vector of float) 0:8 'tex' ( uniform sampler2D) 0:8 'coord' ( smooth in 2-component vector of float) 0:10 Test condition and select ( temp void) 0:10 Condition 0:10 Compare Equal ( temp bool) 0:10 'v' ( temp 4-component vector of float) 0:10 Constant: 0:10 0.100000 0:10 0.200000 0:10 0.300000 0:10 0.400000 0:10 true case 0:11 Branch: Kill 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:13 'v' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) Linked fragment stage: Shader version: 110 0:? Sequence 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'v' ( temp 4-component vector of float) 0:8 texture ( global 4-component vector of float) 0:8 'tex' ( uniform sampler2D) 0:8 'coord' ( smooth in 2-component vector of float) 0:10 Test condition and select ( temp void) 0:10 Condition 0:10 Compare Equal ( temp bool) 0:10 'v' ( temp 4-component vector of float) 0:10 Constant: 0:10 0.100000 0:10 0.200000 0:10 0.300000 0:10 0.400000 0:10 true case 0:11 Branch: Kill 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:13 'v' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) glslang-16.0.0/Test/baseResults/constErrors.frag.out000066400000000000000000000045361506534232700224510ustar00rootroot00000000000000constErrors.frag ERROR: 0:14: 'non-constant initializer' : not supported for this version or the enabled extensions ERROR: 0:17: '' : array size must be a constant integer expression ERROR: 0:18: '' : array size must be a constant integer expression ERROR: 0:19: '' : array size must be a constant integer expression ERROR: 0:27: '=' : global const initializers must be constant ' const structure{ global 3-component vector of float v3, global 2-component vector of int iv2}' ERROR: 0:33: '=' : global const initializers must be constant ' const structure{ global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m}' ERROR: 6 compilation errors. No code generated. Shader version: 330 ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'a3' ( const (read only) int) 0:14 'uniformInt' ( uniform int) 0:? Linker Objects 0:? 'inVar' ( smooth in 4-component vector of float) 0:? 'outVar' ( out 4-component vector of float) 0:? 'constInt' ( const int) 0:? 3 (const int) 0:? 'uniformInt' ( uniform int) 0:? 's' ( temp structure{ global 3-component vector of float v3, global 2-component vector of int iv2}) 0:? 's2' ( temp structure{ global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m}) 0:? 'f' ( const float) 0:? 3.000000 Linked fragment stage: Shader version: 330 ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'a3' ( const (read only) int) 0:14 'uniformInt' ( uniform int) 0:? Linker Objects 0:? 'inVar' ( smooth in 4-component vector of float) 0:? 'outVar' ( out 4-component vector of float) 0:? 'constInt' ( const int) 0:? 3 (const int) 0:? 'uniformInt' ( uniform int) 0:? 's' ( temp structure{ global 3-component vector of float v3, global 2-component vector of int iv2}) 0:? 's2' ( temp structure{ global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m}) 0:? 'f' ( const float) 0:? 3.000000 glslang-16.0.0/Test/baseResults/constFold.frag.out000066400000000000000000000555441506534232700220660ustar00rootroot00000000000000constFold.frag ERROR: 0:109: '[' : index out of range '-1' ERROR: 0:110: '[' : vector index out of range '4' ERROR: 0:111: '[' : index out of range '-2' ERROR: 0:112: '[' : index out of range '-1' ERROR: 0:113: '[' : vector index out of range '3' ERROR: 0:114: '[' : matrix index out of range '3' ERROR: 6 compilation errors. No code generated. Shader version: 430 ERROR: node is still EOpNull! 0:28 Function Definition: main( ( global void) 0:28 Function Parameters: 0:30 Sequence 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:30 'dx' ( temp 4-component vector of float) 0:30 dPdx ( global 4-component vector of float) 0:30 'inv' ( smooth in 4-component vector of float) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 'FragColor' ( out 4-component vector of float) 0:37 Constant: 0:37 2.000000 0:37 6.000000 0:37 3.000000 0:37 171.887339 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'FragColor' ( out 4-component vector of float) 0:42 Constant: 0:42 3.000000 0:42 2.000000 0:42 0.001593 0:42 -0.999999 0:43 move second child to first child ( temp 2-component vector of float) 0:43 'out2' ( out 2-component vector of float) 0:43 Constant: 0:43 5.600000 0:43 5.800000 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'out3' ( out 4-component vector of float) 0:44 Constant: 0:44 20.085537 0:44 2.302585 0:44 16.000000 0:44 8.000000 0:45 move second child to first child ( temp 4-component vector of float) 0:45 'out4' ( out 4-component vector of float) 0:45 Constant: 0:45 10.000000 0:45 0.100000 0:45 4.700000 0:45 10.900000 0:46 move second child to first child ( temp 4-component vector of int) 0:46 'out5' ( out 4-component vector of int) 0:46 Constant: 0:46 8 (const int) 0:46 17 (const int) 0:46 -1 (const int) 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 'out6' ( out 3-component vector of float) 0:47 Constant: 0:47 -1.000000 0:47 1.000000 0:47 0.000000 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'out7' ( out 4-component vector of float) 0:48 Constant: 0:48 4.000000 0:48 -4.000000 0:48 5.000000 0:48 -5.000000 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'out8' ( out 4-component vector of float) 0:49 Constant: 0:49 4.000000 0:49 5.000000 0:49 4.000000 0:49 -6.000000 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'out9' ( out 4-component vector of float) 0:50 Constant: 0:50 8.000000 0:50 -4.000000 0:50 0.345000 0:50 0.400000 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'out10' ( out 4-component vector of float) 0:51 Constant: 0:51 1.000000 0:51 1.000000 0:51 0.000000 0:51 0.000000 0:52 move second child to first child ( temp 4-component vector of float) 0:52 'out11' ( out 4-component vector of float) 0:52 Constant: 0:52 0.000000 0:52 0.000000 0:52 1.000000 0:52 0.000000 0:53 move second child to first child ( temp 4-component vector of float) 0:53 'out11' ( out 4-component vector of float) 0:53 Constant: 0:53 1.029639 0:53 0.799690 0:53 0.674741 0:53 1.570696 0:54 move second child to first child ( temp 4-component vector of float) 0:54 'out11' ( out 4-component vector of float) 0:54 Constant: 0:54 0.000000 0:54 0.523599 0:54 1.570796 0:54 1.047198 0:58 move second child to first child ( temp 4-component vector of float) 0:58 'out11' ( out 4-component vector of float) 0:58 Constant: 0:58 1.373401 0:58 0.000000 0:58 0.896055 0:58 -0.380506 0:62 move second child to first child ( temp 2-component vector of int) 0:62 'out12' ( out 2-component vector of int) 0:62 Constant: 0:62 15 (const int) 0:62 16 (const int) 0:63 move second child to first child ( temp 2-component vector of int) 0:63 'out12' ( out 2-component vector of int) 0:63 Constant: 0:63 17 (const int) 0:63 17 (const int) 0:64 move second child to first child ( temp 2-component vector of float) 0:64 'out2' ( out 2-component vector of float) 0:64 Constant: 0:64 871.421253 0:64 4913.000000 0:65 move second child to first child ( temp 3-component vector of uint) 0:65 'out13' ( out 3-component vector of uint) 0:65 Constant: 0:65 10 (const uint) 0:65 20 (const uint) 0:65 30 (const uint) 0:66 move second child to first child ( temp 2-component vector of float) 0:66 'out2' ( out 2-component vector of float) 0:66 Constant: 0:66 3.000000 0:66 6.000000 0:67 move second child to first child ( temp 2-component vector of float) 0:67 'out2' ( out 2-component vector of float) 0:67 Constant: 0:67 3.500000 0:67 4.500000 0:68 move second child to first child ( temp 2-component vector of float) 0:68 'out2' ( out 2-component vector of float) 0:68 Constant: 0:68 0.000000 0:68 1.000000 0:69 move second child to first child ( temp 4-component vector of float) 0:69 'out11' ( out 4-component vector of float) 0:69 Constant: 0:69 0.000000 0:69 0.028000 0:69 0.500000 0:69 1.000000 0:78 Function Definition: foo( ( global void) 0:78 Function Parameters: 0:? Sequence 0:81 move second child to first child ( temp float) 0:81 direct index ( temp float) 0:81 'a' ( temp 3-element array of float) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 7.000000 0:82 Constant: 0:82 2 (const int) 0:83 Constant: 0:83 2147483647 (const int) 0:84 Constant: 0:84 +1.#INF 0:84 Constant: 0:84 -1.#INF 0:84 Constant: 0:84 1.#IND 0:88 Constant: 0:88 2 (const uint) 0:88 3 (const uint) 0:89 Constant: 0:89 0 (const uint) 0:90 Constant: 0:90 6 (const uint) 0:90 7 (const uint) 0:103 Function Definition: foo2( ( global void) 0:103 Function Parameters: 0:105 Sequence 0:105 direct index ( temp float) 0:105 'a1' ( global 1-element array of float) 0:105 Constant: 0:105 0 (const int) 0:106 direct index ( temp float) 0:106 'a2' ( global 2-element array of float) 0:106 Constant: 0:106 0 (const int) 0:107 direct index ( temp float) 0:107 'a3' ( global 4-element array of float) 0:107 Constant: 0:107 0 (const int) 0:108 direct index ( temp float) 0:108 'a4' ( global 2-element array of float) 0:108 Constant: 0:108 0 (const int) 0:109 Constant: 0:109 1.000000 0:110 Constant: 0:110 5.000000 0:111 Constant: 0:111 2.000000 0:112 Constant: 0:112 3.000000 0:113 Constant: 0:113 0.000000 0:114 Constant: 0:114 0.000000 0:116 move second child to first child ( temp int) 0:116 'p' ( temp int) 0:116 Constant: 0:116 2147483647 (const int) 0:117 move second child to first child ( temp int) 0:117 'p' ( temp int) 0:117 Constant: 0:117 -2147483648 (const int) 0:118 move second child to first child ( temp int) 0:118 'p' ( temp int) 0:118 Constant: 0:118 -2147483647 (const int) 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'f' ( temp float) 0:119 Constant: 0:119 1.444000 0:120 move second child to first child ( temp float) 0:120 'f' ( temp float) 0:120 direct index ( temp float) 0:120 Construct vec4 ( temp 4-component vector of float) 0:120 Test condition and select ( temp float) 0:120 Condition 0:120 Compare Less Than ( temp bool) 0:120 direct index ( temp float) 0:120 'inv' ( smooth in 4-component vector of float) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 2.400000 0:120 true case 0:120 Constant: 0:120 -1.000000 0:120 false case 0:120 Constant: 0:120 1.000000 0:120 Constant: 0:120 3 (const int) 0:129 Function Definition: foo3( ( global void) 0:129 Function Parameters: 0:131 Sequence 0:131 Sequence 0:131 move second child to first child ( temp 3X2 matrix of float) 0:131 'r32' ( temp 3X2 matrix of float) 0:131 Constant: 0:131 43.000000 0:131 64.000000 0:131 51.000000 0:131 76.000000 0:131 59.000000 0:131 88.000000 0:141 Function Definition: foo4( ( global void) 0:141 Function Parameters: 0:143 Sequence 0:143 Sequence 0:143 move second child to first child ( temp int) 0:143 'a' ( temp int) 0:143 Constant: 0:143 9 (const int) 0:? Linker Objects 0:? 'a' ( const int) 0:? 1 (const int) 0:? 'b' ( const int) 0:? 2 (const int) 0:? 'c' ( const int) 0:? 3 (const int) 0:? 'd' ( const int) 0:? 2 (const int) 0:? 'e' ( const float) 0:? 2.000000 0:? 'f' ( const float) 0:? 6.000000 0:? 'g' ( const float) 0:? 3.000000 0:? 'pytho' ( const 2-component vector of float) 0:? 3.000000 0:? 4.000000 0:? 'inv' ( smooth in 4-component vector of float) 0:? 'FragColor' ( out 4-component vector of float) 0:? 'out2' ( out 2-component vector of float) 0:? 'out3' ( out 4-component vector of float) 0:? 'out4' ( out 4-component vector of float) 0:? 'out5' ( out 4-component vector of int) 0:? 'out6' ( out 3-component vector of float) 0:? 'out7' ( out 4-component vector of float) 0:? 'out8' ( out 4-component vector of float) 0:? 'out9' ( out 4-component vector of float) 0:? 'out10' ( out 4-component vector of float) 0:? 'out11' ( out 4-component vector of float) 0:? 'out12' ( out 2-component vector of int) 0:? 'out13' ( out 3-component vector of uint) 0:? 's' ( const structure{ global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m}) 0:? 3.000000 0:? 3.000000 0:? 3.000000 0:? 3 (const int) 0:? 3 (const int) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 5.000000 0:? 6.000000 0:? 7.000000 0:? 8.000000 0:? 'm2' ( const 2X2 matrix of float) 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 5.000000 0:? 'm3' ( const 3X3 matrix of float) 0:? 2.000000 0:? 3.000000 0:? 0.000000 0:? 4.000000 0:? 5.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'mc' ( const int) 0:? 1 (const int) 0:? 'a1' ( global 1-element array of float) 0:? 'a2' ( global 2-element array of float) 0:? 'a3' ( global 4-element array of float) 0:? 'v2' ( const 2-component vector of float) 0:? 1.000000 0:? 2.000000 0:? 'v3' ( const 3-component vector of float) 0:? 3.000000 0:? 4.000000 0:? 5.000000 0:? 'a4' ( global 2-element array of float) 0:? 'mm2' ( const 2X2 matrix of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 'mm32' ( const 3X2 matrix of float) 0:? 10.000000 0:? 11.000000 0:? 12.000000 0:? 13.000000 0:? 14.000000 0:? 15.000000 0:? 'm22' ( const 2X2 matrix of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 'mm34' ( const 3X4 matrix of float) 0:? 7.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 7.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 7.000000 0:? 0.000000 0:? 'mv4' ( const 4-component vector of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 'a0' ( const 3-element array of structure{ global int i, global float f, global bool b}) 0:? 3 (const int) 0:? 2.000000 0:? true (const bool) 0:? 1 (const int) 0:? 5.000000 0:? true (const bool) 0:? 1 (const int) 0:? 9.000000 0:? false (const bool) 0:? 'cval1' ( const bool) 0:? true (const bool) 0:? 'cval2' ( const bool) 0:? false (const bool) 0:? 'cval3' ( const bool) 0:? false (const bool) 0:? 'cval4' ( const bool) 0:? true (const bool) 0:? 'cval5' ( const bool) 0:? false (const bool) 0:? 'cval6' ( const bool) 0:? true (const bool) Linked fragment stage: Shader version: 430 ERROR: node is still EOpNull! 0:28 Function Definition: main( ( global void) 0:28 Function Parameters: 0:30 Sequence 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:30 'dx' ( temp 4-component vector of float) 0:30 dPdx ( global 4-component vector of float) 0:30 'inv' ( smooth in 4-component vector of float) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 'FragColor' ( out 4-component vector of float) 0:37 Constant: 0:37 2.000000 0:37 6.000000 0:37 3.000000 0:37 171.887339 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'FragColor' ( out 4-component vector of float) 0:42 Constant: 0:42 3.000000 0:42 2.000000 0:42 0.001593 0:42 -0.999999 0:43 move second child to first child ( temp 2-component vector of float) 0:43 'out2' ( out 2-component vector of float) 0:43 Constant: 0:43 5.600000 0:43 5.800000 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'out3' ( out 4-component vector of float) 0:44 Constant: 0:44 20.085537 0:44 2.302585 0:44 16.000000 0:44 8.000000 0:45 move second child to first child ( temp 4-component vector of float) 0:45 'out4' ( out 4-component vector of float) 0:45 Constant: 0:45 10.000000 0:45 0.100000 0:45 4.700000 0:45 10.900000 0:46 move second child to first child ( temp 4-component vector of int) 0:46 'out5' ( out 4-component vector of int) 0:46 Constant: 0:46 8 (const int) 0:46 17 (const int) 0:46 -1 (const int) 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 'out6' ( out 3-component vector of float) 0:47 Constant: 0:47 -1.000000 0:47 1.000000 0:47 0.000000 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'out7' ( out 4-component vector of float) 0:48 Constant: 0:48 4.000000 0:48 -4.000000 0:48 5.000000 0:48 -5.000000 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'out8' ( out 4-component vector of float) 0:49 Constant: 0:49 4.000000 0:49 5.000000 0:49 4.000000 0:49 -6.000000 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'out9' ( out 4-component vector of float) 0:50 Constant: 0:50 8.000000 0:50 -4.000000 0:50 0.345000 0:50 0.400000 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'out10' ( out 4-component vector of float) 0:51 Constant: 0:51 1.000000 0:51 1.000000 0:51 0.000000 0:51 0.000000 0:52 move second child to first child ( temp 4-component vector of float) 0:52 'out11' ( out 4-component vector of float) 0:52 Constant: 0:52 0.000000 0:52 0.000000 0:52 1.000000 0:52 0.000000 0:53 move second child to first child ( temp 4-component vector of float) 0:53 'out11' ( out 4-component vector of float) 0:53 Constant: 0:53 1.029639 0:53 0.799690 0:53 0.674741 0:53 1.570696 0:54 move second child to first child ( temp 4-component vector of float) 0:54 'out11' ( out 4-component vector of float) 0:54 Constant: 0:54 0.000000 0:54 0.523599 0:54 1.570796 0:54 1.047198 0:58 move second child to first child ( temp 4-component vector of float) 0:58 'out11' ( out 4-component vector of float) 0:58 Constant: 0:58 1.373401 0:58 0.000000 0:58 0.896055 0:58 -0.380506 0:62 move second child to first child ( temp 2-component vector of int) 0:62 'out12' ( out 2-component vector of int) 0:62 Constant: 0:62 15 (const int) 0:62 16 (const int) 0:63 move second child to first child ( temp 2-component vector of int) 0:63 'out12' ( out 2-component vector of int) 0:63 Constant: 0:63 17 (const int) 0:63 17 (const int) 0:64 move second child to first child ( temp 2-component vector of float) 0:64 'out2' ( out 2-component vector of float) 0:64 Constant: 0:64 871.421253 0:64 4913.000000 0:65 move second child to first child ( temp 3-component vector of uint) 0:65 'out13' ( out 3-component vector of uint) 0:65 Constant: 0:65 10 (const uint) 0:65 20 (const uint) 0:65 30 (const uint) 0:66 move second child to first child ( temp 2-component vector of float) 0:66 'out2' ( out 2-component vector of float) 0:66 Constant: 0:66 3.000000 0:66 6.000000 0:67 move second child to first child ( temp 2-component vector of float) 0:67 'out2' ( out 2-component vector of float) 0:67 Constant: 0:67 3.500000 0:67 4.500000 0:68 move second child to first child ( temp 2-component vector of float) 0:68 'out2' ( out 2-component vector of float) 0:68 Constant: 0:68 0.000000 0:68 1.000000 0:69 move second child to first child ( temp 4-component vector of float) 0:69 'out11' ( out 4-component vector of float) 0:69 Constant: 0:69 0.000000 0:69 0.028000 0:69 0.500000 0:69 1.000000 0:? Linker Objects 0:? 'a' ( const int) 0:? 1 (const int) 0:? 'b' ( const int) 0:? 2 (const int) 0:? 'c' ( const int) 0:? 3 (const int) 0:? 'd' ( const int) 0:? 2 (const int) 0:? 'e' ( const float) 0:? 2.000000 0:? 'f' ( const float) 0:? 6.000000 0:? 'g' ( const float) 0:? 3.000000 0:? 'pytho' ( const 2-component vector of float) 0:? 3.000000 0:? 4.000000 0:? 'inv' ( smooth in 4-component vector of float) 0:? 'FragColor' ( out 4-component vector of float) 0:? 'out2' ( out 2-component vector of float) 0:? 'out3' ( out 4-component vector of float) 0:? 'out4' ( out 4-component vector of float) 0:? 'out5' ( out 4-component vector of int) 0:? 'out6' ( out 3-component vector of float) 0:? 'out7' ( out 4-component vector of float) 0:? 'out8' ( out 4-component vector of float) 0:? 'out9' ( out 4-component vector of float) 0:? 'out10' ( out 4-component vector of float) 0:? 'out11' ( out 4-component vector of float) 0:? 'out12' ( out 2-component vector of int) 0:? 'out13' ( out 3-component vector of uint) 0:? 's' ( const structure{ global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m}) 0:? 3.000000 0:? 3.000000 0:? 3.000000 0:? 3 (const int) 0:? 3 (const int) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 5.000000 0:? 6.000000 0:? 7.000000 0:? 8.000000 0:? 'm2' ( const 2X2 matrix of float) 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 5.000000 0:? 'm3' ( const 3X3 matrix of float) 0:? 2.000000 0:? 3.000000 0:? 0.000000 0:? 4.000000 0:? 5.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 1.000000 0:? 'mc' ( const int) 0:? 1 (const int) 0:? 'a1' ( global 1-element array of float) 0:? 'a2' ( global 2-element array of float) 0:? 'a3' ( global 4-element array of float) 0:? 'v2' ( const 2-component vector of float) 0:? 1.000000 0:? 2.000000 0:? 'v3' ( const 3-component vector of float) 0:? 3.000000 0:? 4.000000 0:? 5.000000 0:? 'a4' ( global 2-element array of float) 0:? 'mm2' ( const 2X2 matrix of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 'mm32' ( const 3X2 matrix of float) 0:? 10.000000 0:? 11.000000 0:? 12.000000 0:? 13.000000 0:? 14.000000 0:? 15.000000 0:? 'm22' ( const 2X2 matrix of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 'mm34' ( const 3X4 matrix of float) 0:? 7.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 7.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 7.000000 0:? 0.000000 0:? 'mv4' ( const 4-component vector of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 'a0' ( const 3-element array of structure{ global int i, global float f, global bool b}) 0:? 3 (const int) 0:? 2.000000 0:? true (const bool) 0:? 1 (const int) 0:? 5.000000 0:? true (const bool) 0:? 1 (const int) 0:? 9.000000 0:? false (const bool) 0:? 'cval1' ( const bool) 0:? true (const bool) 0:? 'cval2' ( const bool) 0:? false (const bool) 0:? 'cval3' ( const bool) 0:? false (const bool) 0:? 'cval4' ( const bool) 0:? true (const bool) 0:? 'cval5' ( const bool) 0:? false (const bool) 0:? 'cval6' ( const bool) 0:? true (const bool) glslang-16.0.0/Test/baseResults/constFoldIntMin.frag.out000066400000000000000000000027241506534232700231750ustar00rootroot00000000000000constFoldIntMin.frag Shader version: 460 Requested GL_AMD_gpu_shader_int16 Requested GL_ARB_gpu_shader_int64 0:? Sequence 0:5 Function Definition: a( ( global void) 0:5 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp int16_t) 0:6 'u' ( temp int16_t) 0:6 Constant: 0:6 -32768 (const int16_t) 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'v' ( temp int) 0:7 Constant: 0:7 -2147483648 (const int) 0:8 Sequence 0:8 move second child to first child ( temp int64_t) 0:8 'w' ( temp int64_t) 0:8 Constant: 0:8 -9223372036854775808 (const int64_t) 0:9 Sequence 0:9 move second child to first child ( temp int16_t) 0:9 'x' ( temp int16_t) 0:9 Constant: 0:9 0 (const int16_t) 0:10 Sequence 0:10 move second child to first child ( temp int) 0:10 'y' ( temp int) 0:10 Constant: 0:10 0 (const int) 0:11 Sequence 0:11 move second child to first child ( temp int64_t) 0:11 'z' ( temp int64_t) 0:11 Constant: 0:11 0 (const int64_t) 0:? Linker Objects Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 460 Requested GL_AMD_gpu_shader_int16 Requested GL_ARB_gpu_shader_int64 0:? Sequence 0:? Linker Objects glslang-16.0.0/Test/baseResults/constantUnaryConversion.comp.out000066400000000000000000000645701506534232700250670ustar00rootroot00000000000000constantUnaryConversion.comp Shader version: 450 Requested GL_EXT_shader_explicit_arithmetic_types local_size = (1, 1, 1) 0:? Sequence 0:69 Function Definition: main( ( global void) 0:69 Function Parameters: 0:? Linker Objects 0:? 'bool_init' ( const bool) 0:? true (const bool) 0:? 'int8_t_init' ( const int8_t) 0:? -1 (const int8_t) 0:? 'int16_t_init' ( const int16_t) 0:? -2 (const int16_t) 0:? 'int32_t_init' ( const int) 0:? -3 (const int) 0:? 'int64_t_init' ( const int64_t) 0:? -4 (const int64_t) 0:? 'uint8_t_init' ( const uint8_t) 0:? 1 (const uint8_t) 0:? 'uint16_t_init' ( const uint16_t) 0:? 2 (const uint16_t) 0:? 'uint32_t_init' ( const uint) 0:? 3 (const uint) 0:? 'uint64_t_init' ( const uint64_t) 0:? 4 (const uint64_t) 0:? 'float16_t_init' ( const float16_t) 0:? 42.000000 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) 0:? 'int8_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'int16_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'int32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'int64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint8_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint16_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'float16_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'float32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'float64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'bool_to_int8_t' ( const int8_t) 0:? 1 (const int8_t) 0:? 'int8_t_to_int8_t' ( const int8_t) 0:? -1 (const int8_t) 0:? 'int16_t_to_int8_t' ( const int8_t) 0:? -2 (const int8_t) 0:? 'int32_t_to_int8_t' ( const int8_t) 0:? -3 (const int8_t) 0:? 'int64_t_to_int8_t' ( const int8_t) 0:? -4 (const int8_t) 0:? 'uint8_t_to_int8_t' ( const int8_t) 0:? 1 (const int8_t) 0:? 'uint16_t_to_int8_t' ( const int8_t) 0:? 2 (const int8_t) 0:? 'uint32_t_to_int8_t' ( const int8_t) 0:? 3 (const int8_t) 0:? 'uint64_t_to_int8_t' ( const int8_t) 0:? 4 (const int8_t) 0:? 'float16_t_to_int8_t' ( const int8_t) 0:? 42 (const int8_t) 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:? 'bool_to_int16_t' ( const int16_t) 0:? 1 (const int16_t) 0:? 'int8_t_to_int16_t' ( const int16_t) 0:? -1 (const int16_t) 0:? 'int16_t_to_int16_t' ( const int16_t) 0:? -2 (const int16_t) 0:? 'int32_t_to_int16_t' ( const int16_t) 0:? -3 (const int16_t) 0:? 'int64_t_to_int16_t' ( const int16_t) 0:? -4 (const int16_t) 0:? 'uint8_t_to_int16_t' ( const int16_t) 0:? 1 (const int16_t) 0:? 'uint16_t_to_int16_t' ( const int16_t) 0:? 2 (const int16_t) 0:? 'uint32_t_to_int16_t' ( const int16_t) 0:? 3 (const int16_t) 0:? 'uint64_t_to_int16_t' ( const int16_t) 0:? 4 (const int16_t) 0:? 'float16_t_to_int16_t' ( const int16_t) 0:? 42 (const int16_t) 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:? 'bool_to_int32_t' ( const int) 0:? 1 (const int) 0:? 'int8_t_to_int32_t' ( const int) 0:? -1 (const int) 0:? 'int16_t_to_int32_t' ( const int) 0:? -2 (const int) 0:? 'int32_t_to_int32_t' ( const int) 0:? -3 (const int) 0:? 'int64_t_to_int32_t' ( const int) 0:? -4 (const int) 0:? 'uint8_t_to_int32_t' ( const int) 0:? 1 (const int) 0:? 'uint16_t_to_int32_t' ( const int) 0:? 2 (const int) 0:? 'uint32_t_to_int32_t' ( const int) 0:? 3 (const int) 0:? 'uint64_t_to_int32_t' ( const int) 0:? 4 (const int) 0:? 'float16_t_to_int32_t' ( const int) 0:? 42 (const int) 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:? 'bool_to_int64_t' ( const int64_t) 0:? 1 (const int64_t) 0:? 'int8_t_to_int64_t' ( const int64_t) 0:? -1 (const int64_t) 0:? 'int16_t_to_int64_t' ( const int64_t) 0:? -2 (const int64_t) 0:? 'int32_t_to_int64_t' ( const int64_t) 0:? -3 (const int64_t) 0:? 'int64_t_to_int64_t' ( const int64_t) 0:? -4 (const int64_t) 0:? 'uint8_t_to_int64_t' ( const int64_t) 0:? 1 (const int64_t) 0:? 'uint16_t_to_int64_t' ( const int64_t) 0:? 2 (const int64_t) 0:? 'uint32_t_to_int64_t' ( const int64_t) 0:? 3 (const int64_t) 0:? 'uint64_t_to_int64_t' ( const int64_t) 0:? 4 (const int64_t) 0:? 'float16_t_to_int64_t' ( const int64_t) 0:? 42 (const int64_t) 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:? 'bool_to_uint8_t' ( const uint8_t) 0:? 1 (const uint8_t) 0:? 'int8_t_to_uint8_t' ( const uint8_t) 0:? 255 (const uint8_t) 0:? 'int16_t_to_uint8_t' ( const uint8_t) 0:? 254 (const uint8_t) 0:? 'int32_t_to_uint8_t' ( const uint8_t) 0:? 253 (const uint8_t) 0:? 'int64_t_to_uint8_t' ( const uint8_t) 0:? 252 (const uint8_t) 0:? 'uint8_t_to_uint8_t' ( const uint8_t) 0:? 1 (const uint8_t) 0:? 'uint16_t_to_uint8_t' ( const uint8_t) 0:? 2 (const uint8_t) 0:? 'uint32_t_to_uint8_t' ( const uint8_t) 0:? 3 (const uint8_t) 0:? 'uint64_t_to_uint8_t' ( const uint8_t) 0:? 4 (const uint8_t) 0:? 'float16_t_to_uint8_t' ( const uint8_t) 0:? 42 (const uint8_t) 0:? 'float32_t_to_uint8_t' ( const uint8_t) 0:? 13 (const uint8_t) 0:? 'float64_t_to_uint8_t' ( 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) 0:? 65535 (const uint16_t) 0:? 'int16_t_to_uint16_t' ( const uint16_t) 0:? 65534 (const uint16_t) 0:? 'int32_t_to_uint16_t' ( const uint16_t) 0:? 65533 (const uint16_t) 0:? 'int64_t_to_uint16_t' ( const uint16_t) 0:? 65532 (const uint16_t) 0:? 'uint8_t_to_uint16_t' ( const uint16_t) 0:? 1 (const uint16_t) 0:? 'uint16_t_to_uint16_t' ( const uint16_t) 0:? 2 (const uint16_t) 0:? 'uint32_t_to_uint16_t' ( const uint16_t) 0:? 3 (const uint16_t) 0:? 'uint64_t_to_uint16_t' ( const uint16_t) 0:? 4 (const uint16_t) 0:? 'float16_t_to_uint16_t' ( const uint16_t) 0:? 42 (const uint16_t) 0:? 'float32_t_to_uint16_t' ( const uint16_t) 0:? 13 (const uint16_t) 0:? 'float64_t_to_uint16_t' ( 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) 0:? 4294967295 (const uint) 0:? 'int16_t_to_uint32_t' ( const uint) 0:? 4294967294 (const uint) 0:? 'int32_t_to_uint32_t' ( const uint) 0:? 4294967293 (const uint) 0:? 'int64_t_to_uint32_t' ( const uint) 0:? 4294967292 (const uint) 0:? 'uint8_t_to_uint32_t' ( const uint) 0:? 1 (const uint) 0:? 'uint16_t_to_uint32_t' ( const uint) 0:? 2 (const uint) 0:? 'uint32_t_to_uint32_t' ( const uint) 0:? 3 (const uint) 0:? 'uint64_t_to_uint32_t' ( const uint) 0:? 4 (const uint) 0:? 'float16_t_to_uint32_t' ( const uint) 0:? 42 (const uint) 0:? 'float32_t_to_uint32_t' ( const uint) 0:? 13 (const uint) 0:? 'float64_t_to_uint32_t' ( 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) 0:? 18446744073709551615 (const uint64_t) 0:? 'int16_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551614 (const uint64_t) 0:? 'int32_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551613 (const uint64_t) 0:? 'int64_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551612 (const uint64_t) 0:? 'uint8_t_to_uint64_t' ( const uint64_t) 0:? 1 (const uint64_t) 0:? 'uint16_t_to_uint64_t' ( const uint64_t) 0:? 2 (const uint64_t) 0:? 'uint32_t_to_uint64_t' ( const uint64_t) 0:? 3 (const uint64_t) 0:? 'uint64_t_to_uint64_t' ( const uint64_t) 0:? 4 (const uint64_t) 0:? 'float16_t_to_uint64_t' ( const uint64_t) 0:? 42 (const uint64_t) 0:? 'float32_t_to_uint64_t' ( const uint64_t) 0:? 13 (const uint64_t) 0:? 'float64_t_to_uint64_t' ( 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) 0:? -1.000000 0:? 'int16_t_to_float16_t' ( const float16_t) 0:? -2.000000 0:? 'int32_t_to_float16_t' ( const float16_t) 0:? -3.000000 0:? 'int64_t_to_float16_t' ( const float16_t) 0:? -4.000000 0:? 'uint8_t_to_float16_t' ( const float16_t) 0:? 1.000000 0:? 'uint16_t_to_float16_t' ( const float16_t) 0:? 2.000000 0:? 'uint32_t_to_float16_t' ( const float16_t) 0:? 3.000000 0:? 'uint64_t_to_float16_t' ( const float16_t) 0:? 4.000000 0:? 'float16_t_to_float16_t' ( const float16_t) 0:? 42.000000 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:? 'bool_to_float32_t' ( const float) 0:? 1.000000 0:? 'int8_t_to_float32_t' ( const float) 0:? -1.000000 0:? 'int16_t_to_float32_t' ( const float) 0:? -2.000000 0:? 'int32_t_to_float32_t' ( const float) 0:? -3.000000 0:? 'int64_t_to_float32_t' ( const float) 0:? -4.000000 0:? 'uint8_t_to_float32_t' ( const float) 0:? 1.000000 0:? 'uint16_t_to_float32_t' ( const float) 0:? 2.000000 0:? 'uint32_t_to_float32_t' ( const float) 0:? 3.000000 0:? 'uint64_t_to_float32_t' ( const float) 0:? 4.000000 0:? 'float16_t_to_float32_t' ( const float) 0:? 42.000000 0:? 'float32_t_to_float32_t' ( const float) 0:? 13.000000 0:? 'float64_t_to_float32_t' ( const float) 0:? 4.000000 0:? 'bool_to_float64_t' ( const double) 0:? 1.000000 0:? 'int8_t_to_float64_t' ( const double) 0:? -1.000000 0:? 'int16_t_to_float64_t' ( const double) 0:? -2.000000 0:? 'int32_t_to_float64_t' ( const double) 0:? -3.000000 0:? 'int64_t_to_float64_t' ( const double) 0:? -4.000000 0:? 'uint8_t_to_float64_t' ( const double) 0:? 1.000000 0:? 'uint16_t_to_float64_t' ( const double) 0:? 2.000000 0:? 'uint32_t_to_float64_t' ( const double) 0:? 3.000000 0:? 'uint64_t_to_float64_t' ( const double) 0:? 4.000000 0:? 'float16_t_to_float64_t' ( const double) 0:? 42.000000 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 Linked compute stage: Shader version: 450 Requested GL_EXT_shader_explicit_arithmetic_types local_size = (1, 1, 1) 0:? Sequence 0:69 Function Definition: main( ( global void) 0:69 Function Parameters: 0:? Linker Objects 0:? 'bool_init' ( const bool) 0:? true (const bool) 0:? 'int8_t_init' ( const int8_t) 0:? -1 (const int8_t) 0:? 'int16_t_init' ( const int16_t) 0:? -2 (const int16_t) 0:? 'int32_t_init' ( const int) 0:? -3 (const int) 0:? 'int64_t_init' ( const int64_t) 0:? -4 (const int64_t) 0:? 'uint8_t_init' ( const uint8_t) 0:? 1 (const uint8_t) 0:? 'uint16_t_init' ( const uint16_t) 0:? 2 (const uint16_t) 0:? 'uint32_t_init' ( const uint) 0:? 3 (const uint) 0:? 'uint64_t_init' ( const uint64_t) 0:? 4 (const uint64_t) 0:? 'float16_t_init' ( const float16_t) 0:? 42.000000 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) 0:? 'int8_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'int16_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'int32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'int64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint8_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint16_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'float16_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'float32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'float64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'bool_to_int8_t' ( const int8_t) 0:? 1 (const int8_t) 0:? 'int8_t_to_int8_t' ( const int8_t) 0:? -1 (const int8_t) 0:? 'int16_t_to_int8_t' ( const int8_t) 0:? -2 (const int8_t) 0:? 'int32_t_to_int8_t' ( const int8_t) 0:? -3 (const int8_t) 0:? 'int64_t_to_int8_t' ( const int8_t) 0:? -4 (const int8_t) 0:? 'uint8_t_to_int8_t' ( const int8_t) 0:? 1 (const int8_t) 0:? 'uint16_t_to_int8_t' ( const int8_t) 0:? 2 (const int8_t) 0:? 'uint32_t_to_int8_t' ( const int8_t) 0:? 3 (const int8_t) 0:? 'uint64_t_to_int8_t' ( const int8_t) 0:? 4 (const int8_t) 0:? 'float16_t_to_int8_t' ( const int8_t) 0:? 42 (const int8_t) 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:? 'bool_to_int16_t' ( const int16_t) 0:? 1 (const int16_t) 0:? 'int8_t_to_int16_t' ( const int16_t) 0:? -1 (const int16_t) 0:? 'int16_t_to_int16_t' ( const int16_t) 0:? -2 (const int16_t) 0:? 'int32_t_to_int16_t' ( const int16_t) 0:? -3 (const int16_t) 0:? 'int64_t_to_int16_t' ( const int16_t) 0:? -4 (const int16_t) 0:? 'uint8_t_to_int16_t' ( const int16_t) 0:? 1 (const int16_t) 0:? 'uint16_t_to_int16_t' ( const int16_t) 0:? 2 (const int16_t) 0:? 'uint32_t_to_int16_t' ( const int16_t) 0:? 3 (const int16_t) 0:? 'uint64_t_to_int16_t' ( const int16_t) 0:? 4 (const int16_t) 0:? 'float16_t_to_int16_t' ( const int16_t) 0:? 42 (const int16_t) 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:? 'bool_to_int32_t' ( const int) 0:? 1 (const int) 0:? 'int8_t_to_int32_t' ( const int) 0:? -1 (const int) 0:? 'int16_t_to_int32_t' ( const int) 0:? -2 (const int) 0:? 'int32_t_to_int32_t' ( const int) 0:? -3 (const int) 0:? 'int64_t_to_int32_t' ( const int) 0:? -4 (const int) 0:? 'uint8_t_to_int32_t' ( const int) 0:? 1 (const int) 0:? 'uint16_t_to_int32_t' ( const int) 0:? 2 (const int) 0:? 'uint32_t_to_int32_t' ( const int) 0:? 3 (const int) 0:? 'uint64_t_to_int32_t' ( const int) 0:? 4 (const int) 0:? 'float16_t_to_int32_t' ( const int) 0:? 42 (const int) 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:? 'bool_to_int64_t' ( const int64_t) 0:? 1 (const int64_t) 0:? 'int8_t_to_int64_t' ( const int64_t) 0:? -1 (const int64_t) 0:? 'int16_t_to_int64_t' ( const int64_t) 0:? -2 (const int64_t) 0:? 'int32_t_to_int64_t' ( const int64_t) 0:? -3 (const int64_t) 0:? 'int64_t_to_int64_t' ( const int64_t) 0:? -4 (const int64_t) 0:? 'uint8_t_to_int64_t' ( const int64_t) 0:? 1 (const int64_t) 0:? 'uint16_t_to_int64_t' ( const int64_t) 0:? 2 (const int64_t) 0:? 'uint32_t_to_int64_t' ( const int64_t) 0:? 3 (const int64_t) 0:? 'uint64_t_to_int64_t' ( const int64_t) 0:? 4 (const int64_t) 0:? 'float16_t_to_int64_t' ( const int64_t) 0:? 42 (const int64_t) 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:? 'bool_to_uint8_t' ( const uint8_t) 0:? 1 (const uint8_t) 0:? 'int8_t_to_uint8_t' ( const uint8_t) 0:? 255 (const uint8_t) 0:? 'int16_t_to_uint8_t' ( const uint8_t) 0:? 254 (const uint8_t) 0:? 'int32_t_to_uint8_t' ( const uint8_t) 0:? 253 (const uint8_t) 0:? 'int64_t_to_uint8_t' ( const uint8_t) 0:? 252 (const uint8_t) 0:? 'uint8_t_to_uint8_t' ( const uint8_t) 0:? 1 (const uint8_t) 0:? 'uint16_t_to_uint8_t' ( const uint8_t) 0:? 2 (const uint8_t) 0:? 'uint32_t_to_uint8_t' ( const uint8_t) 0:? 3 (const uint8_t) 0:? 'uint64_t_to_uint8_t' ( const uint8_t) 0:? 4 (const uint8_t) 0:? 'float16_t_to_uint8_t' ( const uint8_t) 0:? 42 (const uint8_t) 0:? 'float32_t_to_uint8_t' ( const uint8_t) 0:? 13 (const uint8_t) 0:? 'float64_t_to_uint8_t' ( 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) 0:? 65535 (const uint16_t) 0:? 'int16_t_to_uint16_t' ( const uint16_t) 0:? 65534 (const uint16_t) 0:? 'int32_t_to_uint16_t' ( const uint16_t) 0:? 65533 (const uint16_t) 0:? 'int64_t_to_uint16_t' ( const uint16_t) 0:? 65532 (const uint16_t) 0:? 'uint8_t_to_uint16_t' ( const uint16_t) 0:? 1 (const uint16_t) 0:? 'uint16_t_to_uint16_t' ( const uint16_t) 0:? 2 (const uint16_t) 0:? 'uint32_t_to_uint16_t' ( const uint16_t) 0:? 3 (const uint16_t) 0:? 'uint64_t_to_uint16_t' ( const uint16_t) 0:? 4 (const uint16_t) 0:? 'float16_t_to_uint16_t' ( const uint16_t) 0:? 42 (const uint16_t) 0:? 'float32_t_to_uint16_t' ( const uint16_t) 0:? 13 (const uint16_t) 0:? 'float64_t_to_uint16_t' ( 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) 0:? 4294967295 (const uint) 0:? 'int16_t_to_uint32_t' ( const uint) 0:? 4294967294 (const uint) 0:? 'int32_t_to_uint32_t' ( const uint) 0:? 4294967293 (const uint) 0:? 'int64_t_to_uint32_t' ( const uint) 0:? 4294967292 (const uint) 0:? 'uint8_t_to_uint32_t' ( const uint) 0:? 1 (const uint) 0:? 'uint16_t_to_uint32_t' ( const uint) 0:? 2 (const uint) 0:? 'uint32_t_to_uint32_t' ( const uint) 0:? 3 (const uint) 0:? 'uint64_t_to_uint32_t' ( const uint) 0:? 4 (const uint) 0:? 'float16_t_to_uint32_t' ( const uint) 0:? 42 (const uint) 0:? 'float32_t_to_uint32_t' ( const uint) 0:? 13 (const uint) 0:? 'float64_t_to_uint32_t' ( 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) 0:? 18446744073709551615 (const uint64_t) 0:? 'int16_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551614 (const uint64_t) 0:? 'int32_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551613 (const uint64_t) 0:? 'int64_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551612 (const uint64_t) 0:? 'uint8_t_to_uint64_t' ( const uint64_t) 0:? 1 (const uint64_t) 0:? 'uint16_t_to_uint64_t' ( const uint64_t) 0:? 2 (const uint64_t) 0:? 'uint32_t_to_uint64_t' ( const uint64_t) 0:? 3 (const uint64_t) 0:? 'uint64_t_to_uint64_t' ( const uint64_t) 0:? 4 (const uint64_t) 0:? 'float16_t_to_uint64_t' ( const uint64_t) 0:? 42 (const uint64_t) 0:? 'float32_t_to_uint64_t' ( const uint64_t) 0:? 13 (const uint64_t) 0:? 'float64_t_to_uint64_t' ( 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) 0:? -1.000000 0:? 'int16_t_to_float16_t' ( const float16_t) 0:? -2.000000 0:? 'int32_t_to_float16_t' ( const float16_t) 0:? -3.000000 0:? 'int64_t_to_float16_t' ( const float16_t) 0:? -4.000000 0:? 'uint8_t_to_float16_t' ( const float16_t) 0:? 1.000000 0:? 'uint16_t_to_float16_t' ( const float16_t) 0:? 2.000000 0:? 'uint32_t_to_float16_t' ( const float16_t) 0:? 3.000000 0:? 'uint64_t_to_float16_t' ( const float16_t) 0:? 4.000000 0:? 'float16_t_to_float16_t' ( const float16_t) 0:? 42.000000 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:? 'bool_to_float32_t' ( const float) 0:? 1.000000 0:? 'int8_t_to_float32_t' ( const float) 0:? -1.000000 0:? 'int16_t_to_float32_t' ( const float) 0:? -2.000000 0:? 'int32_t_to_float32_t' ( const float) 0:? -3.000000 0:? 'int64_t_to_float32_t' ( const float) 0:? -4.000000 0:? 'uint8_t_to_float32_t' ( const float) 0:? 1.000000 0:? 'uint16_t_to_float32_t' ( const float) 0:? 2.000000 0:? 'uint32_t_to_float32_t' ( const float) 0:? 3.000000 0:? 'uint64_t_to_float32_t' ( const float) 0:? 4.000000 0:? 'float16_t_to_float32_t' ( const float) 0:? 42.000000 0:? 'float32_t_to_float32_t' ( const float) 0:? 13.000000 0:? 'float64_t_to_float32_t' ( const float) 0:? 4.000000 0:? 'bool_to_float64_t' ( const double) 0:? 1.000000 0:? 'int8_t_to_float64_t' ( const double) 0:? -1.000000 0:? 'int16_t_to_float64_t' ( const double) 0:? -2.000000 0:? 'int32_t_to_float64_t' ( const double) 0:? -3.000000 0:? 'int64_t_to_float64_t' ( const double) 0:? -4.000000 0:? 'uint8_t_to_float64_t' ( const double) 0:? 1.000000 0:? 'uint16_t_to_float64_t' ( const double) 0:? 2.000000 0:? 'uint32_t_to_float64_t' ( const double) 0:? 3.000000 0:? 'uint64_t_to_float64_t' ( const double) 0:? 4.000000 0:? 'float16_t_to_float64_t' ( const double) 0:? 42.000000 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 glslang-16.0.0/Test/baseResults/contradict_0.geom.out000066400000000000000000000032731506534232700225040ustar00rootroot00000000000000contradict_0.geom Shader version: 330 invocations = -1 max_vertices = 4 input primitive = points output primitive = triangle_strip 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 'v' ( temp float) 0:10 Function Call: getV( ( global float) 0:11 EndPrimitive ( global void) 0:12 EndPrimitive ( global void) 0:? Linker Objects contradict_1.geom Shader version: 330 invocations = -1 max_vertices = 6 input primitive = lines output primitive = line_strip 0:? Sequence 0:6 Function Definition: getV( ( global float) 0:6 Function Parameters: 0:8 Sequence 0:8 Branch: Return with expression 0:8 Constant: 0:8 1.000000 0:? Linker Objects Linked geometry stage: ERROR: Linking geometry stage: Contradictory layout max_vertices values ERROR: Linking geometry stage: Contradictory input layout primitives ERROR: Linking geometry stage: Contradictory output layout primitives Shader version: 330 invocations = 1 max_vertices = 4 input primitive = points output primitive = triangle_strip 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 'v' ( temp float) 0:10 Function Call: getV( ( global float) 0:11 EndPrimitive ( global void) 0:12 EndPrimitive ( global void) 0:6 Function Definition: getV( ( global float) 0:6 Function Parameters: 0:8 Sequence 0:8 Branch: Return with expression 0:8 Constant: 0:8 1.000000 0:? Linker Objects glslang-16.0.0/Test/baseResults/conversion.frag.out000066400000000000000000001367221506534232700223160ustar00rootroot00000000000000conversion.frag Shader version: 130 0:? Sequence 0:33 Function Definition: main( ( global void) 0:33 Function Parameters: 0:35 Sequence 0:35 Sequence 0:35 move second child to first child ( temp bool) 0:35 'b' ( temp bool) 0:35 logical-xor ( temp bool) 0:35 Convert int to bool ( temp bool) 0:35 'u_i' ( uniform int) 0:35 Convert float to bool ( temp bool) 0:35 'u_f' ( uniform float) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of bool) 0:36 'b2' ( temp 2-component vector of bool) 0:36 Construct bvec2 ( temp 2-component vector of bool) 0:36 Convert int to bool ( temp bool) 0:36 'u_i' ( uniform int) 0:36 Convert float to bool ( temp bool) 0:36 'u_f' ( uniform float) 0:37 Sequence 0:37 move second child to first child ( temp 3-component vector of bool) 0:37 'b3' ( temp 3-component vector of bool) 0:37 Construct bvec3 ( temp 3-component vector of bool) 0:37 Convert int to bool ( temp bool) 0:37 'u_i' ( uniform int) 0:37 Convert float to bool ( temp bool) 0:37 'u_f' ( uniform float) 0:37 Convert int to bool ( temp bool) 0:37 'i_i' ( flat in int) 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of bool) 0:38 'b4' ( temp 4-component vector of bool) 0:38 Construct bvec4 ( temp 4-component vector of bool) 0:38 Convert int to bool ( temp bool) 0:38 'u_i' ( uniform int) 0:38 Convert float to bool ( temp bool) 0:38 'u_f' ( uniform float) 0:38 Convert int to bool ( temp bool) 0:38 'i_i' ( flat in int) 0:38 Convert float to bool ( temp bool) 0:38 'i_f' ( smooth in float) 0:40 Sequence 0:40 move second child to first child ( temp int) 0:40 'i' ( temp int) 0:40 add ( temp int) 0:40 Convert float to int ( temp int) 0:40 'u_f' ( uniform float) 0:40 Convert bool to int ( temp int) 0:40 'b' ( temp bool) 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of int) 0:41 'i2' ( temp 2-component vector of int) 0:41 add ( temp 2-component vector of int) 0:41 Convert float to int ( temp 2-component vector of int) 0:41 'u_f2' ( uniform 2-component vector of float) 0:41 Convert bool to int ( temp 2-component vector of int) 0:41 'b2' ( temp 2-component vector of bool) 0:42 Sequence 0:42 move second child to first child ( temp 3-component vector of int) 0:42 'i3' ( temp 3-component vector of int) 0:42 add ( temp 3-component vector of int) 0:42 Convert float to int ( temp 3-component vector of int) 0:42 'u_f3' ( uniform 3-component vector of float) 0:42 Convert bool to int ( temp 3-component vector of int) 0:42 'b3' ( temp 3-component vector of bool) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 'i4' ( temp 4-component vector of int) 0:43 add ( temp 4-component vector of int) 0:43 Convert float to int ( temp 4-component vector of int) 0:43 'u_f4' ( uniform 4-component vector of float) 0:43 Convert bool to int ( temp 4-component vector of int) 0:43 'b4' ( temp 4-component vector of bool) 0:45 Sequence 0:45 move second child to first child ( temp float) 0:45 'f' ( temp float) 0:45 Convert int to float ( temp float) 0:45 'i' ( temp int) 0:46 Sequence 0:46 move second child to first child ( temp 2-component vector of float) 0:46 'f2' ( temp 2-component vector of float) 0:46 Convert int to float ( temp 2-component vector of float) 0:46 'i2' ( temp 2-component vector of int) 0:47 Sequence 0:47 move second child to first child ( temp 3-component vector of float) 0:47 'f3' ( temp 3-component vector of float) 0:47 Convert int to float ( temp 3-component vector of float) 0:47 'i3' ( temp 3-component vector of int) 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'f4' ( temp 4-component vector of float) 0:48 Convert int to float ( temp 4-component vector of float) 0:48 'i4' ( temp 4-component vector of int) 0:50 add second child into first child ( temp float) 0:50 'f' ( temp float) 0:50 add ( temp float) 0:50 Convert int to float ( temp float) 0:50 'i' ( temp int) 0:50 Convert bool to float ( temp float) 0:50 'b' ( temp bool) 0:51 subtract second child into first child ( temp 2-component vector of float) 0:51 'f2' ( temp 2-component vector of float) 0:51 add ( temp 2-component vector of float) 0:51 Convert int to float ( temp 2-component vector of float) 0:51 'i2' ( temp 2-component vector of int) 0:51 Convert bool to float ( temp 2-component vector of float) 0:51 'b2' ( temp 2-component vector of bool) 0:52 divide second child into first child ( temp 3-component vector of float) 0:52 'f3' ( temp 3-component vector of float) 0:52 add ( temp 3-component vector of float) 0:52 Convert int to float ( temp 3-component vector of float) 0:52 'i3' ( temp 3-component vector of int) 0:52 Convert bool to float ( temp 3-component vector of float) 0:52 'b3' ( temp 3-component vector of bool) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'f4' ( temp 4-component vector of float) 0:53 add ( temp 4-component vector of float) 0:53 Convert int to float ( temp 4-component vector of float) 0:53 'i4' ( temp 4-component vector of int) 0:53 Convert bool to float ( temp 4-component vector of float) 0:53 'b4' ( temp 4-component vector of bool) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'f4' ( temp 4-component vector of float) 0:55 Convert bool to float ( temp 4-component vector of float) 0:55 Convert int to bool ( temp 4-component vector of bool) 0:55 'i_i4' ( flat in 4-component vector of int) 0:56 add second child into first child ( temp 4-component vector of float) 0:56 'f4' ( temp 4-component vector of float) 0:56 Convert bool to float ( temp 4-component vector of float) 0:56 Convert float to bool ( temp 4-component vector of bool) 0:56 'u_f4' ( uniform 4-component vector of float) 0:58 add second child into first child ( temp float) 0:58 'f' ( temp float) 0:58 subtract ( temp float) 0:58 'f' ( temp float) 0:58 Convert int to float ( temp float) 0:58 'i' ( temp int) 0:59 add second child into first child ( temp 2-component vector of float) 0:59 'f2' ( temp 2-component vector of float) 0:59 add ( temp 2-component vector of float) 0:59 Construct vec2 ( temp 2-component vector of float) 0:59 'f' ( temp float) 0:59 Convert int to float ( temp float) 0:59 'i' ( temp int) 0:59 Convert int to float ( temp 2-component vector of float) 0:59 'i2' ( temp 2-component vector of int) 0:60 add second child into first child ( temp 3-component vector of float) 0:60 'f3' ( temp 3-component vector of float) 0:60 add ( temp 3-component vector of float) 0:60 Convert int to float ( temp 3-component vector of float) 0:60 'i3' ( temp 3-component vector of int) 0:60 Construct vec3 ( temp 3-component vector of float) 0:60 'f' ( temp float) 0:60 Convert int to float ( temp float) 0:60 'i' ( temp int) 0:60 'f' ( temp float) 0:61 add second child into first child ( temp 4-component vector of float) 0:61 'f4' ( temp 4-component vector of float) 0:61 add ( temp 4-component vector of float) 0:61 Construct vec4 ( temp 4-component vector of float) 0:61 Convert bool to float ( temp float) 0:61 'b' ( temp bool) 0:61 Convert int to float ( temp float) 0:61 'i' ( temp int) 0:61 'f' ( temp float) 0:61 Convert int to float ( temp float) 0:61 'i' ( temp int) 0:61 Convert int to float ( temp 4-component vector of float) 0:61 'i4' ( temp 4-component vector of int) 0:63 add second child into first child ( temp 2-component vector of float) 0:63 'f2' ( temp 2-component vector of float) 0:63 vector-scale ( temp 2-component vector of float) 0:63 Construct vec2 ( temp 2-component vector of float) 0:63 'f' ( temp float) 0:63 Convert int to float ( temp float) 0:63 'i' ( temp int) 0:63 Convert int to float ( temp float) 0:63 'i' ( temp int) 0:64 add second child into first child ( temp 3-component vector of float) 0:64 'f3' ( temp 3-component vector of float) 0:64 add ( temp 3-component vector of float) 0:64 Construct vec3 ( temp 3-component vector of float) 0:64 'f' ( temp float) 0:64 Convert int to float ( temp float) 0:64 'i' ( temp int) 0:64 'f' ( temp float) 0:64 Convert int to float ( temp float) 0:64 'i' ( temp int) 0:65 add second child into first child ( temp 4-component vector of float) 0:65 'f4' ( temp 4-component vector of float) 0:65 subtract ( temp 4-component vector of float) 0:65 Convert int to float ( temp float) 0:65 'i' ( temp int) 0:65 Construct vec4 ( temp 4-component vector of float) 0:65 Convert bool to float ( temp float) 0:65 'b' ( temp bool) 0:65 Convert int to float ( temp float) 0:65 'i' ( temp int) 0:65 'f' ( temp float) 0:65 Convert int to float ( temp float) 0:65 'i' ( temp int) 0:67 add second child into first child ( temp 2-component vector of int) 0:67 'i2' ( temp 2-component vector of int) 0:67 Construct ivec2 ( temp 2-component vector of int) 0:67 Convert float to int ( temp int) 0:67 'f' ( temp float) 0:67 'i' ( temp int) 0:68 add second child into first child ( temp 3-component vector of int) 0:68 'i3' ( temp 3-component vector of int) 0:68 Construct ivec3 ( temp 3-component vector of int) 0:68 Convert float to int ( temp int) 0:68 'f' ( temp float) 0:68 'i' ( temp int) 0:68 Convert float to int ( temp int) 0:68 'f' ( temp float) 0:69 add second child into first child ( temp 4-component vector of int) 0:69 'i4' ( temp 4-component vector of int) 0:69 Construct ivec4 ( temp 4-component vector of int) 0:69 Convert bool to int ( temp int) 0:69 'b' ( temp bool) 0:69 'i' ( temp int) 0:69 Convert float to int ( temp int) 0:69 'f' ( temp float) 0:69 'i' ( temp int) 0:71 Test condition and select ( temp void) 0:71 Condition 0:72 logical-or ( temp bool) 0:71 logical-or ( temp bool) 0:71 logical-or ( temp bool) 0:71 Compare Less Than ( temp bool) 0:71 'f' ( temp float) 0:71 Convert int to float ( temp float) 0:71 'i' ( temp int) 0:71 Compare Less Than ( temp bool) 0:71 Convert int to float ( temp float) 0:71 'i' ( temp int) 0:71 'f' ( temp float) 0:72 Compare Equal ( temp bool) 0:72 'f2' ( temp 2-component vector of float) 0:72 Convert int to float ( temp 2-component vector of float) 0:72 'i2' ( temp 2-component vector of int) 0:73 Compare Not Equal ( temp bool) 0:73 Convert int to float ( temp 3-component vector of float) 0:73 'i3' ( temp 3-component vector of int) 0:73 'f3' ( temp 3-component vector of float) 0:71 true case 0:74 move second child to first child ( temp float) 0:74 'f' ( temp float) 0:74 add ( temp float) 0:74 Test condition and select ( temp float) 0:74 Condition 0:74 'b' ( temp bool) 0:74 true case 0:74 Convert int to float ( temp float) 0:74 'i' ( temp int) 0:74 false case 0:74 direct index ( temp float) 0:74 'f2' ( temp 2-component vector of float) 0:74 Constant: 0:74 0 (const int) 0:74 Test condition and select ( temp float) 0:74 Condition 0:74 direct index ( temp bool) 0:74 'b2' ( temp 2-component vector of bool) 0:74 Constant: 0:74 0 (const int) 0:74 true case 0:74 direct index ( temp float) 0:74 'f3' ( temp 3-component vector of float) 0:74 Constant: 0:74 0 (const int) 0:74 false case 0:74 Convert int to float ( temp float) 0:74 direct index ( temp int) 0:74 'i2' ( temp 2-component vector of int) 0:74 Constant: 0:74 1 (const int) 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:86 Test condition and select ( temp 4-component vector of float) 0:86 Condition 0:85 logical-or ( temp bool) 0:84 logical-or ( temp bool) 0:83 logical-or ( temp bool) 0:82 logical-or ( temp bool) 0:81 logical-or ( temp bool) 0:80 logical-or ( temp bool) 0:79 logical-or ( temp bool) 0:78 logical-or ( temp bool) 0:77 logical-or ( temp bool) 0:77 'b' ( temp bool) 0:78 direct index ( temp bool) 0:78 'b2' ( temp 2-component vector of bool) 0:78 Constant: 0:78 0 (const int) 0:79 direct index ( temp bool) 0:79 'b2' ( temp 2-component vector of bool) 0:79 Constant: 0:79 1 (const int) 0:80 direct index ( temp bool) 0:80 'b3' ( temp 3-component vector of bool) 0:80 Constant: 0:80 0 (const int) 0:81 direct index ( temp bool) 0:81 'b3' ( temp 3-component vector of bool) 0:81 Constant: 0:81 1 (const int) 0:82 direct index ( temp bool) 0:82 'b3' ( temp 3-component vector of bool) 0:82 Constant: 0:82 2 (const int) 0:83 direct index ( temp bool) 0:83 'b4' ( temp 4-component vector of bool) 0:83 Constant: 0:83 0 (const int) 0:84 direct index ( temp bool) 0:84 'b4' ( temp 4-component vector of bool) 0:84 Constant: 0:84 1 (const int) 0:85 direct index ( temp bool) 0:85 'b4' ( temp 4-component vector of bool) 0:85 Constant: 0:85 2 (const int) 0:86 direct index ( temp bool) 0:86 'b4' ( temp 4-component vector of bool) 0:86 Constant: 0:86 3 (const int) 0:86 true case 0:105 Construct vec4 ( temp 4-component vector of float) 0:105 add ( temp float) 0:104 add ( temp float) 0:103 add ( temp float) 0:102 add ( temp float) 0:101 add ( temp float) 0:100 add ( temp float) 0:99 add ( temp float) 0:98 add ( temp float) 0:97 add ( temp float) 0:96 add ( temp float) 0:95 Convert int to float ( temp float) 0:95 add ( temp int) 0:94 add ( temp int) 0:93 add ( temp int) 0:92 add ( temp int) 0:91 add ( temp int) 0:90 add ( temp int) 0:89 add ( temp int) 0:88 add ( temp int) 0:87 add ( temp int) 0:87 'i' ( temp int) 0:88 direct index ( temp int) 0:88 'i2' ( temp 2-component vector of int) 0:88 Constant: 0:88 0 (const int) 0:89 direct index ( temp int) 0:89 'i2' ( temp 2-component vector of int) 0:89 Constant: 0:89 1 (const int) 0:90 direct index ( temp int) 0:90 'i3' ( temp 3-component vector of int) 0:90 Constant: 0:90 0 (const int) 0:91 direct index ( temp int) 0:91 'i3' ( temp 3-component vector of int) 0:91 Constant: 0:91 1 (const int) 0:92 direct index ( temp int) 0:92 'i3' ( temp 3-component vector of int) 0:92 Constant: 0:92 2 (const int) 0:93 direct index ( temp int) 0:93 'i4' ( temp 4-component vector of int) 0:93 Constant: 0:93 0 (const int) 0:94 direct index ( temp int) 0:94 'i4' ( temp 4-component vector of int) 0:94 Constant: 0:94 1 (const int) 0:95 direct index ( temp int) 0:95 'i4' ( temp 4-component vector of int) 0:95 Constant: 0:95 2 (const int) 0:96 direct index ( temp int) 0:96 'i4' ( temp 4-component vector of int) 0:96 Constant: 0:96 3 (const int) 0:97 'f' ( temp float) 0:98 direct index ( temp float) 0:98 'f2' ( temp 2-component vector of float) 0:98 Constant: 0:98 0 (const int) 0:99 direct index ( temp float) 0:99 'f2' ( temp 2-component vector of float) 0:99 Constant: 0:99 1 (const int) 0:100 direct index ( temp float) 0:100 'f3' ( temp 3-component vector of float) 0:100 Constant: 0:100 0 (const int) 0:101 direct index ( temp float) 0:101 'f3' ( temp 3-component vector of float) 0:101 Constant: 0:101 1 (const int) 0:102 direct index ( temp float) 0:102 'f3' ( temp 3-component vector of float) 0:102 Constant: 0:102 2 (const int) 0:103 direct index ( temp float) 0:103 'f4' ( temp 4-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:104 direct index ( temp float) 0:104 'f4' ( temp 4-component vector of float) 0:104 Constant: 0:104 1 (const int) 0:105 direct index ( temp float) 0:105 'f4' ( temp 4-component vector of float) 0:105 Constant: 0:105 2 (const int) 0:106 direct index ( temp float) 0:106 'f4' ( temp 4-component vector of float) 0:106 Constant: 0:106 3 (const int) 0:86 false case 0:106 Constant: 0:106 1.000000 0:106 1.000000 0:106 1.000000 0:106 1.000000 0:109 Sequence 0:109 move second child to first child ( temp 4-component vector of int) 0:109 'cv2' ( temp 4-component vector of int) 0:109 Constant: 0:109 1 (const int) 0:109 1 (const int) 0:109 1 (const int) 0:109 1 (const int) 0:110 Sequence 0:110 move second child to first child ( temp 4-component vector of bool) 0:110 'cv5' ( temp 4-component vector of bool) 0:110 Convert int to bool ( temp 4-component vector of bool) 0:110 'cv2' ( temp 4-component vector of int) 0:111 add second child into first child ( temp 4-component vector of float) 0:111 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:111 Construct float ( temp float) 0:111 Convert bool to float ( temp 4-component vector of float) 0:111 'cv5' ( temp 4-component vector of bool) 0:? Linker Objects 0:? 'u_b' ( uniform bool) 0:? 'u_b2' ( uniform 2-component vector of bool) 0:? 'u_b3' ( uniform 3-component vector of bool) 0:? 'u_b4' ( uniform 4-component vector of bool) 0:? 'u_i' ( uniform int) 0:? 'u_i2' ( uniform 2-component vector of int) 0:? 'u_i3' ( uniform 3-component vector of int) 0:? 'u_i4' ( uniform 4-component vector of int) 0:? 'u_f' ( uniform float) 0:? 'u_f2' ( uniform 2-component vector of float) 0:? 'u_f3' ( uniform 3-component vector of float) 0:? 'u_f4' ( uniform 4-component vector of float) 0:? 'i_b' ( uniform bool) 0:? 'i_b2' ( uniform 2-component vector of bool) 0:? 'i_b3' ( uniform 3-component vector of bool) 0:? 'i_b4' ( uniform 4-component vector of bool) 0:? 'i_i' ( flat in int) 0:? 'i_i2' ( flat in 2-component vector of int) 0:? 'i_i3' ( flat in 3-component vector of int) 0:? 'i_i4' ( flat in 4-component vector of int) 0:? 'i_f' ( smooth in float) 0:? 'i_f2' ( smooth in 2-component vector of float) 0:? 'i_f3' ( smooth in 3-component vector of float) 0:? 'i_f4' ( smooth in 4-component vector of float) Linked fragment stage: Shader version: 130 0:? Sequence 0:33 Function Definition: main( ( global void) 0:33 Function Parameters: 0:35 Sequence 0:35 Sequence 0:35 move second child to first child ( temp bool) 0:35 'b' ( temp bool) 0:35 logical-xor ( temp bool) 0:35 Convert int to bool ( temp bool) 0:35 'u_i' ( uniform int) 0:35 Convert float to bool ( temp bool) 0:35 'u_f' ( uniform float) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of bool) 0:36 'b2' ( temp 2-component vector of bool) 0:36 Construct bvec2 ( temp 2-component vector of bool) 0:36 Convert int to bool ( temp bool) 0:36 'u_i' ( uniform int) 0:36 Convert float to bool ( temp bool) 0:36 'u_f' ( uniform float) 0:37 Sequence 0:37 move second child to first child ( temp 3-component vector of bool) 0:37 'b3' ( temp 3-component vector of bool) 0:37 Construct bvec3 ( temp 3-component vector of bool) 0:37 Convert int to bool ( temp bool) 0:37 'u_i' ( uniform int) 0:37 Convert float to bool ( temp bool) 0:37 'u_f' ( uniform float) 0:37 Convert int to bool ( temp bool) 0:37 'i_i' ( flat in int) 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of bool) 0:38 'b4' ( temp 4-component vector of bool) 0:38 Construct bvec4 ( temp 4-component vector of bool) 0:38 Convert int to bool ( temp bool) 0:38 'u_i' ( uniform int) 0:38 Convert float to bool ( temp bool) 0:38 'u_f' ( uniform float) 0:38 Convert int to bool ( temp bool) 0:38 'i_i' ( flat in int) 0:38 Convert float to bool ( temp bool) 0:38 'i_f' ( smooth in float) 0:40 Sequence 0:40 move second child to first child ( temp int) 0:40 'i' ( temp int) 0:40 add ( temp int) 0:40 Convert float to int ( temp int) 0:40 'u_f' ( uniform float) 0:40 Convert bool to int ( temp int) 0:40 'b' ( temp bool) 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of int) 0:41 'i2' ( temp 2-component vector of int) 0:41 add ( temp 2-component vector of int) 0:41 Convert float to int ( temp 2-component vector of int) 0:41 'u_f2' ( uniform 2-component vector of float) 0:41 Convert bool to int ( temp 2-component vector of int) 0:41 'b2' ( temp 2-component vector of bool) 0:42 Sequence 0:42 move second child to first child ( temp 3-component vector of int) 0:42 'i3' ( temp 3-component vector of int) 0:42 add ( temp 3-component vector of int) 0:42 Convert float to int ( temp 3-component vector of int) 0:42 'u_f3' ( uniform 3-component vector of float) 0:42 Convert bool to int ( temp 3-component vector of int) 0:42 'b3' ( temp 3-component vector of bool) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 'i4' ( temp 4-component vector of int) 0:43 add ( temp 4-component vector of int) 0:43 Convert float to int ( temp 4-component vector of int) 0:43 'u_f4' ( uniform 4-component vector of float) 0:43 Convert bool to int ( temp 4-component vector of int) 0:43 'b4' ( temp 4-component vector of bool) 0:45 Sequence 0:45 move second child to first child ( temp float) 0:45 'f' ( temp float) 0:45 Convert int to float ( temp float) 0:45 'i' ( temp int) 0:46 Sequence 0:46 move second child to first child ( temp 2-component vector of float) 0:46 'f2' ( temp 2-component vector of float) 0:46 Convert int to float ( temp 2-component vector of float) 0:46 'i2' ( temp 2-component vector of int) 0:47 Sequence 0:47 move second child to first child ( temp 3-component vector of float) 0:47 'f3' ( temp 3-component vector of float) 0:47 Convert int to float ( temp 3-component vector of float) 0:47 'i3' ( temp 3-component vector of int) 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'f4' ( temp 4-component vector of float) 0:48 Convert int to float ( temp 4-component vector of float) 0:48 'i4' ( temp 4-component vector of int) 0:50 add second child into first child ( temp float) 0:50 'f' ( temp float) 0:50 add ( temp float) 0:50 Convert int to float ( temp float) 0:50 'i' ( temp int) 0:50 Convert bool to float ( temp float) 0:50 'b' ( temp bool) 0:51 subtract second child into first child ( temp 2-component vector of float) 0:51 'f2' ( temp 2-component vector of float) 0:51 add ( temp 2-component vector of float) 0:51 Convert int to float ( temp 2-component vector of float) 0:51 'i2' ( temp 2-component vector of int) 0:51 Convert bool to float ( temp 2-component vector of float) 0:51 'b2' ( temp 2-component vector of bool) 0:52 divide second child into first child ( temp 3-component vector of float) 0:52 'f3' ( temp 3-component vector of float) 0:52 add ( temp 3-component vector of float) 0:52 Convert int to float ( temp 3-component vector of float) 0:52 'i3' ( temp 3-component vector of int) 0:52 Convert bool to float ( temp 3-component vector of float) 0:52 'b3' ( temp 3-component vector of bool) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'f4' ( temp 4-component vector of float) 0:53 add ( temp 4-component vector of float) 0:53 Convert int to float ( temp 4-component vector of float) 0:53 'i4' ( temp 4-component vector of int) 0:53 Convert bool to float ( temp 4-component vector of float) 0:53 'b4' ( temp 4-component vector of bool) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'f4' ( temp 4-component vector of float) 0:55 Convert bool to float ( temp 4-component vector of float) 0:55 Convert int to bool ( temp 4-component vector of bool) 0:55 'i_i4' ( flat in 4-component vector of int) 0:56 add second child into first child ( temp 4-component vector of float) 0:56 'f4' ( temp 4-component vector of float) 0:56 Convert bool to float ( temp 4-component vector of float) 0:56 Convert float to bool ( temp 4-component vector of bool) 0:56 'u_f4' ( uniform 4-component vector of float) 0:58 add second child into first child ( temp float) 0:58 'f' ( temp float) 0:58 subtract ( temp float) 0:58 'f' ( temp float) 0:58 Convert int to float ( temp float) 0:58 'i' ( temp int) 0:59 add second child into first child ( temp 2-component vector of float) 0:59 'f2' ( temp 2-component vector of float) 0:59 add ( temp 2-component vector of float) 0:59 Construct vec2 ( temp 2-component vector of float) 0:59 'f' ( temp float) 0:59 Convert int to float ( temp float) 0:59 'i' ( temp int) 0:59 Convert int to float ( temp 2-component vector of float) 0:59 'i2' ( temp 2-component vector of int) 0:60 add second child into first child ( temp 3-component vector of float) 0:60 'f3' ( temp 3-component vector of float) 0:60 add ( temp 3-component vector of float) 0:60 Convert int to float ( temp 3-component vector of float) 0:60 'i3' ( temp 3-component vector of int) 0:60 Construct vec3 ( temp 3-component vector of float) 0:60 'f' ( temp float) 0:60 Convert int to float ( temp float) 0:60 'i' ( temp int) 0:60 'f' ( temp float) 0:61 add second child into first child ( temp 4-component vector of float) 0:61 'f4' ( temp 4-component vector of float) 0:61 add ( temp 4-component vector of float) 0:61 Construct vec4 ( temp 4-component vector of float) 0:61 Convert bool to float ( temp float) 0:61 'b' ( temp bool) 0:61 Convert int to float ( temp float) 0:61 'i' ( temp int) 0:61 'f' ( temp float) 0:61 Convert int to float ( temp float) 0:61 'i' ( temp int) 0:61 Convert int to float ( temp 4-component vector of float) 0:61 'i4' ( temp 4-component vector of int) 0:63 add second child into first child ( temp 2-component vector of float) 0:63 'f2' ( temp 2-component vector of float) 0:63 vector-scale ( temp 2-component vector of float) 0:63 Construct vec2 ( temp 2-component vector of float) 0:63 'f' ( temp float) 0:63 Convert int to float ( temp float) 0:63 'i' ( temp int) 0:63 Convert int to float ( temp float) 0:63 'i' ( temp int) 0:64 add second child into first child ( temp 3-component vector of float) 0:64 'f3' ( temp 3-component vector of float) 0:64 add ( temp 3-component vector of float) 0:64 Construct vec3 ( temp 3-component vector of float) 0:64 'f' ( temp float) 0:64 Convert int to float ( temp float) 0:64 'i' ( temp int) 0:64 'f' ( temp float) 0:64 Convert int to float ( temp float) 0:64 'i' ( temp int) 0:65 add second child into first child ( temp 4-component vector of float) 0:65 'f4' ( temp 4-component vector of float) 0:65 subtract ( temp 4-component vector of float) 0:65 Convert int to float ( temp float) 0:65 'i' ( temp int) 0:65 Construct vec4 ( temp 4-component vector of float) 0:65 Convert bool to float ( temp float) 0:65 'b' ( temp bool) 0:65 Convert int to float ( temp float) 0:65 'i' ( temp int) 0:65 'f' ( temp float) 0:65 Convert int to float ( temp float) 0:65 'i' ( temp int) 0:67 add second child into first child ( temp 2-component vector of int) 0:67 'i2' ( temp 2-component vector of int) 0:67 Construct ivec2 ( temp 2-component vector of int) 0:67 Convert float to int ( temp int) 0:67 'f' ( temp float) 0:67 'i' ( temp int) 0:68 add second child into first child ( temp 3-component vector of int) 0:68 'i3' ( temp 3-component vector of int) 0:68 Construct ivec3 ( temp 3-component vector of int) 0:68 Convert float to int ( temp int) 0:68 'f' ( temp float) 0:68 'i' ( temp int) 0:68 Convert float to int ( temp int) 0:68 'f' ( temp float) 0:69 add second child into first child ( temp 4-component vector of int) 0:69 'i4' ( temp 4-component vector of int) 0:69 Construct ivec4 ( temp 4-component vector of int) 0:69 Convert bool to int ( temp int) 0:69 'b' ( temp bool) 0:69 'i' ( temp int) 0:69 Convert float to int ( temp int) 0:69 'f' ( temp float) 0:69 'i' ( temp int) 0:71 Test condition and select ( temp void) 0:71 Condition 0:72 logical-or ( temp bool) 0:71 logical-or ( temp bool) 0:71 logical-or ( temp bool) 0:71 Compare Less Than ( temp bool) 0:71 'f' ( temp float) 0:71 Convert int to float ( temp float) 0:71 'i' ( temp int) 0:71 Compare Less Than ( temp bool) 0:71 Convert int to float ( temp float) 0:71 'i' ( temp int) 0:71 'f' ( temp float) 0:72 Compare Equal ( temp bool) 0:72 'f2' ( temp 2-component vector of float) 0:72 Convert int to float ( temp 2-component vector of float) 0:72 'i2' ( temp 2-component vector of int) 0:73 Compare Not Equal ( temp bool) 0:73 Convert int to float ( temp 3-component vector of float) 0:73 'i3' ( temp 3-component vector of int) 0:73 'f3' ( temp 3-component vector of float) 0:71 true case 0:74 move second child to first child ( temp float) 0:74 'f' ( temp float) 0:74 add ( temp float) 0:74 Test condition and select ( temp float) 0:74 Condition 0:74 'b' ( temp bool) 0:74 true case 0:74 Convert int to float ( temp float) 0:74 'i' ( temp int) 0:74 false case 0:74 direct index ( temp float) 0:74 'f2' ( temp 2-component vector of float) 0:74 Constant: 0:74 0 (const int) 0:74 Test condition and select ( temp float) 0:74 Condition 0:74 direct index ( temp bool) 0:74 'b2' ( temp 2-component vector of bool) 0:74 Constant: 0:74 0 (const int) 0:74 true case 0:74 direct index ( temp float) 0:74 'f3' ( temp 3-component vector of float) 0:74 Constant: 0:74 0 (const int) 0:74 false case 0:74 Convert int to float ( temp float) 0:74 direct index ( temp int) 0:74 'i2' ( temp 2-component vector of int) 0:74 Constant: 0:74 1 (const int) 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:86 Test condition and select ( temp 4-component vector of float) 0:86 Condition 0:85 logical-or ( temp bool) 0:84 logical-or ( temp bool) 0:83 logical-or ( temp bool) 0:82 logical-or ( temp bool) 0:81 logical-or ( temp bool) 0:80 logical-or ( temp bool) 0:79 logical-or ( temp bool) 0:78 logical-or ( temp bool) 0:77 logical-or ( temp bool) 0:77 'b' ( temp bool) 0:78 direct index ( temp bool) 0:78 'b2' ( temp 2-component vector of bool) 0:78 Constant: 0:78 0 (const int) 0:79 direct index ( temp bool) 0:79 'b2' ( temp 2-component vector of bool) 0:79 Constant: 0:79 1 (const int) 0:80 direct index ( temp bool) 0:80 'b3' ( temp 3-component vector of bool) 0:80 Constant: 0:80 0 (const int) 0:81 direct index ( temp bool) 0:81 'b3' ( temp 3-component vector of bool) 0:81 Constant: 0:81 1 (const int) 0:82 direct index ( temp bool) 0:82 'b3' ( temp 3-component vector of bool) 0:82 Constant: 0:82 2 (const int) 0:83 direct index ( temp bool) 0:83 'b4' ( temp 4-component vector of bool) 0:83 Constant: 0:83 0 (const int) 0:84 direct index ( temp bool) 0:84 'b4' ( temp 4-component vector of bool) 0:84 Constant: 0:84 1 (const int) 0:85 direct index ( temp bool) 0:85 'b4' ( temp 4-component vector of bool) 0:85 Constant: 0:85 2 (const int) 0:86 direct index ( temp bool) 0:86 'b4' ( temp 4-component vector of bool) 0:86 Constant: 0:86 3 (const int) 0:86 true case 0:105 Construct vec4 ( temp 4-component vector of float) 0:105 add ( temp float) 0:104 add ( temp float) 0:103 add ( temp float) 0:102 add ( temp float) 0:101 add ( temp float) 0:100 add ( temp float) 0:99 add ( temp float) 0:98 add ( temp float) 0:97 add ( temp float) 0:96 add ( temp float) 0:95 Convert int to float ( temp float) 0:95 add ( temp int) 0:94 add ( temp int) 0:93 add ( temp int) 0:92 add ( temp int) 0:91 add ( temp int) 0:90 add ( temp int) 0:89 add ( temp int) 0:88 add ( temp int) 0:87 add ( temp int) 0:87 'i' ( temp int) 0:88 direct index ( temp int) 0:88 'i2' ( temp 2-component vector of int) 0:88 Constant: 0:88 0 (const int) 0:89 direct index ( temp int) 0:89 'i2' ( temp 2-component vector of int) 0:89 Constant: 0:89 1 (const int) 0:90 direct index ( temp int) 0:90 'i3' ( temp 3-component vector of int) 0:90 Constant: 0:90 0 (const int) 0:91 direct index ( temp int) 0:91 'i3' ( temp 3-component vector of int) 0:91 Constant: 0:91 1 (const int) 0:92 direct index ( temp int) 0:92 'i3' ( temp 3-component vector of int) 0:92 Constant: 0:92 2 (const int) 0:93 direct index ( temp int) 0:93 'i4' ( temp 4-component vector of int) 0:93 Constant: 0:93 0 (const int) 0:94 direct index ( temp int) 0:94 'i4' ( temp 4-component vector of int) 0:94 Constant: 0:94 1 (const int) 0:95 direct index ( temp int) 0:95 'i4' ( temp 4-component vector of int) 0:95 Constant: 0:95 2 (const int) 0:96 direct index ( temp int) 0:96 'i4' ( temp 4-component vector of int) 0:96 Constant: 0:96 3 (const int) 0:97 'f' ( temp float) 0:98 direct index ( temp float) 0:98 'f2' ( temp 2-component vector of float) 0:98 Constant: 0:98 0 (const int) 0:99 direct index ( temp float) 0:99 'f2' ( temp 2-component vector of float) 0:99 Constant: 0:99 1 (const int) 0:100 direct index ( temp float) 0:100 'f3' ( temp 3-component vector of float) 0:100 Constant: 0:100 0 (const int) 0:101 direct index ( temp float) 0:101 'f3' ( temp 3-component vector of float) 0:101 Constant: 0:101 1 (const int) 0:102 direct index ( temp float) 0:102 'f3' ( temp 3-component vector of float) 0:102 Constant: 0:102 2 (const int) 0:103 direct index ( temp float) 0:103 'f4' ( temp 4-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:104 direct index ( temp float) 0:104 'f4' ( temp 4-component vector of float) 0:104 Constant: 0:104 1 (const int) 0:105 direct index ( temp float) 0:105 'f4' ( temp 4-component vector of float) 0:105 Constant: 0:105 2 (const int) 0:106 direct index ( temp float) 0:106 'f4' ( temp 4-component vector of float) 0:106 Constant: 0:106 3 (const int) 0:86 false case 0:106 Constant: 0:106 1.000000 0:106 1.000000 0:106 1.000000 0:106 1.000000 0:109 Sequence 0:109 move second child to first child ( temp 4-component vector of int) 0:109 'cv2' ( temp 4-component vector of int) 0:109 Constant: 0:109 1 (const int) 0:109 1 (const int) 0:109 1 (const int) 0:109 1 (const int) 0:110 Sequence 0:110 move second child to first child ( temp 4-component vector of bool) 0:110 'cv5' ( temp 4-component vector of bool) 0:110 Convert int to bool ( temp 4-component vector of bool) 0:110 'cv2' ( temp 4-component vector of int) 0:111 add second child into first child ( temp 4-component vector of float) 0:111 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:111 Construct float ( temp float) 0:111 Convert bool to float ( temp 4-component vector of float) 0:111 'cv5' ( temp 4-component vector of bool) 0:? Linker Objects 0:? 'u_b' ( uniform bool) 0:? 'u_b2' ( uniform 2-component vector of bool) 0:? 'u_b3' ( uniform 3-component vector of bool) 0:? 'u_b4' ( uniform 4-component vector of bool) 0:? 'u_i' ( uniform int) 0:? 'u_i2' ( uniform 2-component vector of int) 0:? 'u_i3' ( uniform 3-component vector of int) 0:? 'u_i4' ( uniform 4-component vector of int) 0:? 'u_f' ( uniform float) 0:? 'u_f2' ( uniform 2-component vector of float) 0:? 'u_f3' ( uniform 3-component vector of float) 0:? 'u_f4' ( uniform 4-component vector of float) 0:? 'i_b' ( uniform bool) 0:? 'i_b2' ( uniform 2-component vector of bool) 0:? 'i_b3' ( uniform 3-component vector of bool) 0:? 'i_b4' ( uniform 4-component vector of bool) 0:? 'i_i' ( flat in int) 0:? 'i_i2' ( flat in 2-component vector of int) 0:? 'i_i3' ( flat in 3-component vector of int) 0:? 'i_i4' ( flat in 4-component vector of int) 0:? 'i_f' ( smooth in float) 0:? 'i_f2' ( smooth in 2-component vector of float) 0:? 'i_f3' ( smooth in 3-component vector of float) 0:? 'i_f4' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/coord_conventions.frag.out000066400000000000000000000234711506534232700236600ustar00rootroot00000000000000coord_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 glslang-16.0.0/Test/baseResults/cppBad.vert.out000066400000000000000000000017311506534232700213520ustar00rootroot00000000000000cppBad.vert WARNING: 0:1: '#define' : missing space after macro name ERROR: 0:1: '#' : (#) can be preceded in its line only by spaces or horizontal tabs ERROR: 0:2: '#' : (#) can be preceded in its line only by spaces or horizontal tabs ERROR: 0:3: 'preprocessor evaluation' : bad expression ERROR: 0:3: '#if' : unexpected tokens following directive ERROR: 0:6: 'string' : End of line in string ERROR: 0:6: 'string literal' : required extension not requested: Possible extensions include: GL_EXT_debug_printf GL_EXT_spirv_intrinsics ERROR: 0:6: '' : syntax error, unexpected INT, expecting COMMA or SEMICOLON ERROR: 7 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'n' ( global highp int) Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'n' ( global highp int) glslang-16.0.0/Test/baseResults/cppBad2.vert.out000066400000000000000000000006371506534232700214400ustar00rootroot00000000000000cppBad2.vert ERROR: 0:3: 'macro expansion' : End of input in macro b ERROR: 0:3: '' : compilation terminated ERROR: 2 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects glslang-16.0.0/Test/baseResults/cppBad3.vert.out000066400000000000000000000006371506534232700214410ustar00rootroot00000000000000cppBad3.vert ERROR: 0:3: 'macro expansion' : End of input in macro y ERROR: 0:3: '' : compilation terminated ERROR: 2 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects glslang-16.0.0/Test/baseResults/cppBad4.vert.out000066400000000000000000000010171506534232700214330ustar00rootroot00000000000000cppBad4.vert ERROR: 0:2: '#' : (#) can be preceded in its line only by spaces or horizontal tabs ERROR: 0:4: 'macro expansion' : unexpected '#' g ERROR: 0:5: '' : syntax error, unexpected SEMICOLON, expecting LEFT_PAREN ERROR: 3 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects glslang-16.0.0/Test/baseResults/cppBad5.vert.out000066400000000000000000000006371506534232700214430ustar00rootroot00000000000000cppBad5.vert ERROR: 0:4: 'macro expansion' : End of input in macro g ERROR: 0:5: '' : compilation terminated ERROR: 2 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects glslang-16.0.0/Test/baseResults/cppComplexExpr.vert.out000066400000000000000000000201241506534232700231270ustar00rootroot00000000000000cppComplexExpr.vert ERROR: 0:46: 'xyxwx' : vector swizzle too long ERROR: 0:46: 'xyxwx' : vector swizzle too long ERROR: 0:46: 'return' : cannot convert return value to function return type WARNING: 0:46: 'return' : type conversion on return values was not explicitly allowed until version 420 ERROR: 0:66: '#define' : Macro redefined; different substitutions: BIG ERROR: 0:81: 'preprocessor evaluation' : bad expression ERROR: 0:81: '#if' : unexpected tokens following directive ERROR: 0:82: '#error' : good macro ERROR: 0:87: 'macro expansion' : End of line in macro substitution: foobar ERROR: 0:88: 'preprocessor evaluation' : can't evaluate expression ERROR: 0:88: 'preprocessor evaluation' : bad expression ERROR: 0:88: '#if' : unexpected tokens following directive ERROR: 0:92: 'macro expansion' : End of line in macro substitution: foobar ERROR: 0:93: 'preprocessor evaluation' : can't evaluate expression ERROR: 0:93: 'preprocessor evaluation' : bad expression ERROR: 0:93: '#if' : unexpected tokens following directive ERROR: 0:99: 'macro expansion' : End of line in macro substitution: foobar ERROR: 0:100: 'preprocessor evaluation' : can't evaluate expression ERROR: 0:100: 'preprocessor evaluation' : bad expression ERROR: 0:100: '#if' : unexpected tokens following directive ERROR: 0:101: 'macro expansion' : End of line in macro substitution: foobar ERROR: 0:102: 'preprocessor evaluation' : can't evaluate expression ERROR: 0:102: 'preprocessor evaluation' : bad expression ERROR: 0:102: '#if' : unexpected tokens following directive ERROR: 0:108: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile UNDEF ERROR: 0:111: '#error' : good 0 ERROR: 0:115: '#error' : good 1 ERROR: 0:120: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile UNDEF ERROR: 0:123: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile UNDEF ERROR: 0:129: '#error' : good 1 ERROR: 0:133: '#error' : good 3 ERROR: 0:139: '#error' : good 4 ERROR: 0:144: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile UNDEF ERROR: 0:153: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile UNDEF ERROR: 0:156: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile UNDEF2 ERROR: 0:159: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile UNDEF2 ERROR: 0:3000: '#error' : line of this error should be 3000 ERROR: 0:3002: '#define' : predefined names can't be (un)defined: __LINE__ ERROR: 0:3003: '#define' : predefined names can't be (un)defined: __FILE__ ERROR: 0:3004: '#define' : predefined names can't be (un)defined: __VERSION__ ERROR: 0:3005: '#define' : names beginning with "GL_" can't be (un)defined: GL_SOME_EXTENSION ERROR: 0:3006: '#undef' : predefined names can't be (un)defined: __LINE__ ERROR: 0:3007: '#undef' : predefined names can't be (un)defined: __FILE__ ERROR: 0:3008: '#undef' : predefined names can't be (un)defined: __VERSION__ ERROR: 0:3009: '#undef' : names beginning with "GL_" can't be (un)defined: GL_SOME_EXTENSION ERROR: 0:4000: 'preprocessor evaluation' : division by 0 ERROR: 0:0: 'preprocessor evaluation' : division by 0 ERROR: 0:3: 'preprocessor evaluation' : bad expression ERROR: 0:3: 'preprocessor evaluation' : division by 0 ERROR: 0:10001: '' : missing #endif ERROR: 49 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:4 Sequence 0:4 move second child to first child ( temp highp float) 0:4 'sum' ( global highp float) 0:4 Constant: 0:4 0.000000 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:10 Sequence 0:10 add second child into first child ( temp highp float) 0:10 'sum' ( global highp float) 0:10 Constant: 0:10 1.000000 0:15 add second child into first child ( temp highp float) 0:15 'sum' ( global highp float) 0:15 Constant: 0:15 20.000000 0:30 add second child into first child ( temp highp float) 0:30 'sum' ( global highp float) 0:30 Constant: 0:30 300.000000 0:39 move second child to first child ( temp highp 4-component vector of float) 0:39 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:39 Construct vec4 ( temp highp 4-component vector of float) 0:39 'sum' ( global highp float) 0:44 Function Definition: foo( ( global highp float) 0:44 Function Parameters: 0:46 Sequence 0:46 Branch: Return with expression 0:46 add ( temp highp 4-component vector of float) 0:46 add ( temp highp 4-component vector of float) 0:46 vector swizzle ( temp highp 4-component vector of float) 0:46 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 3.000000 0:46 add ( temp highp 4-component vector of float) 0:46 vector swizzle ( temp highp 4-component vector of float) 0:46 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 3.000000 0:47 Branch: Return with expression 0:47 add ( temp highp float) 0:47 add ( temp highp float) 0:47 direct index ( temp highp float) 0:47 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 3.000000 0:47 add ( temp highp float) 0:47 direct index ( temp highp float) 0:47 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 3.000000 0:97 Sequence 0:97 move second child to first child ( temp highp float) 0:97 'c' ( global highp float) 0:98 Constant: 0:98 3.300000 0:? Linker Objects 0:? 'sum' ( global highp float) 0:? 'c' ( global highp float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 300 ERROR: node is still EOpNull! 0:4 Sequence 0:4 move second child to first child ( temp highp float) 0:4 'sum' ( global highp float) 0:4 Constant: 0:4 0.000000 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:10 Sequence 0:10 add second child into first child ( temp highp float) 0:10 'sum' ( global highp float) 0:10 Constant: 0:10 1.000000 0:15 add second child into first child ( temp highp float) 0:15 'sum' ( global highp float) 0:15 Constant: 0:15 20.000000 0:30 add second child into first child ( temp highp float) 0:30 'sum' ( global highp float) 0:30 Constant: 0:30 300.000000 0:39 move second child to first child ( temp highp 4-component vector of float) 0:39 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:39 Construct vec4 ( temp highp 4-component vector of float) 0:39 'sum' ( global highp float) 0:97 Sequence 0:97 move second child to first child ( temp highp float) 0:97 'c' ( global highp float) 0:98 Constant: 0:98 3.300000 0:? Linker Objects 0:? 'sum' ( global highp float) 0:? 'c' ( global highp float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/cppDeepNest.frag.out000066400000000000000000000007441506534232700223350ustar00rootroot00000000000000cppDeepNest.frag ERROR: 0:66: '#if/#ifdef/#ifndef' : maximum nesting depth exceeded ERROR: 0:66: '' : missing #endif ERROR: 0:66: '' : syntax error, unexpected end of file ERROR: 3 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects glslang-16.0.0/Test/baseResults/cppIndent.vert.out000066400000000000000000000053501506534232700221060ustar00rootroot00000000000000cppIndent.vert ERROR: 0:61: 'macro expansion' : Too few args in Macro FUNC ERROR: 0:61: '' : syntax error, unexpected COMMA ERROR: 2 compilation errors. No code generated. Shader version: 110 ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'sum' ( global float) 0:5 Constant: 0:5 0.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:12 Sequence 0:12 add second child into first child ( temp float) 0:12 'sum' ( global float) 0:12 Constant: 0:12 1.000000 0:22 add second child into first child ( temp float) 0:22 'sum' ( global float) 0:22 Constant: 0:22 300.000000 0:37 add second child into first child ( temp float) 0:37 'sum' ( global float) 0:37 Constant: 0:37 600000.000000 0:47 add second child into first child ( temp float) 0:47 'sum' ( global float) 0:47 Constant: 0:47 80000000.000000 0:52 add second child into first child ( temp float) 0:52 'sum' ( global float) 0:52 Constant: 0:52 900000000.000000 0:56 move second child to first child ( temp 4-component vector of float) 0:56 'gl_Position' ( gl_Position 4-component vector of float Position) 0:56 Construct vec4 ( temp 4-component vector of float) 0:56 'sum' ( global float) 0:? Linker Objects 0:? 'sum' ( global float) Linked vertex stage: Shader version: 110 ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'sum' ( global float) 0:5 Constant: 0:5 0.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:12 Sequence 0:12 add second child into first child ( temp float) 0:12 'sum' ( global float) 0:12 Constant: 0:12 1.000000 0:22 add second child into first child ( temp float) 0:22 'sum' ( global float) 0:22 Constant: 0:22 300.000000 0:37 add second child into first child ( temp float) 0:37 'sum' ( global float) 0:37 Constant: 0:37 600000.000000 0:47 add second child into first child ( temp float) 0:47 'sum' ( global float) 0:47 Constant: 0:47 80000000.000000 0:52 add second child into first child ( temp float) 0:52 'sum' ( global float) 0:52 Constant: 0:52 900000000.000000 0:56 move second child to first child ( temp 4-component vector of float) 0:56 'gl_Position' ( gl_Position 4-component vector of float Position) 0:56 Construct vec4 ( temp 4-component vector of float) 0:56 'sum' ( global float) 0:? Linker Objects 0:? 'sum' ( global float) glslang-16.0.0/Test/baseResults/cppIntMinOverNegativeOne.frag.out000066400000000000000000000003761506534232700250060ustar00rootroot00000000000000cppIntMinOverNegativeOne.frag Shader version: 100 0:? Sequence 0:? Linker Objects Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 100 0:? Sequence 0:? Linker Objects glslang-16.0.0/Test/baseResults/cppMerge.frag.out000066400000000000000000000013201506534232700216540ustar00rootroot00000000000000cppMerge.frag Shader version: 450 0:? Sequence 0:22 Function Definition: main( ( global void) 0:22 Function Parameters: 0:? Linker Objects 0:? 'dest1' (layout( set=0 binding=0) writeonly uniform image1D) 0:? 'dest2' (layout( set=0 binding=0) writeonly uniform image1D) 0:? 'dest3' (layout( set=0 binding=0) writeonly uniform image1D) Linked fragment stage: Shader version: 450 0:? Sequence 0:22 Function Definition: main( ( global void) 0:22 Function Parameters: 0:? Linker Objects 0:? 'dest1' (layout( set=0 binding=0) writeonly uniform image1D) 0:? 'dest2' (layout( set=0 binding=0) writeonly uniform image1D) 0:? 'dest3' (layout( set=0 binding=0) writeonly uniform image1D) glslang-16.0.0/Test/baseResults/cppNest.vert.out000066400000000000000000000111321506534232700215710ustar00rootroot00000000000000cppNest.vert ERROR: 0:144: '#elif' : #elif after #else ERROR: 0:152: '#else' : #else after #else ERROR: 0:161: '#elif' : #elif after #else ERROR: 0:169: '#else' : #else after #else ERROR: 0:177: 'macro expansion' : End of input in macro FUNC ERROR: 0:178: '' : compilation terminated ERROR: 6 compilation errors. No code generated. Shader version: 110 ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'sum' ( global float) 0:5 Constant: 0:5 0.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:12 Sequence 0:12 add second child into first child ( temp float) 0:12 'sum' ( global float) 0:12 Constant: 0:12 1.000000 0:21 add second child into first child ( temp float) 0:21 'sum' ( global float) 0:21 Constant: 0:21 300.000000 0:61 add second child into first child ( temp float) 0:61 'sum' ( global float) 0:61 Constant: 0:61 600000.000000 0:65 add second child into first child ( temp float) 0:65 'sum' ( global float) 0:65 Constant: 0:65 80000000.000000 0:69 add second child into first child ( temp float) 0:69 'sum' ( global float) 0:69 Constant: 0:69 900000000.000000 0:76 add second child into first child ( temp float) 0:76 'sum' ( global float) 0:76 Constant: 0:76 7000000.000000 0:86 move second child to first child ( temp 4-component vector of float) 0:86 'gl_Position' ( gl_Position 4-component vector of float Position) 0:86 Construct vec4 ( temp 4-component vector of float) 0:86 'sum' ( global float) 0:103 Sequence 0:103 move second child to first child ( temp int) 0:103 'selected4' ( global int) 0:103 Constant: 0:103 4 (const int) 0:115 Sequence 0:115 move second child to first child ( temp int) 0:115 'selected2' ( global int) 0:115 Constant: 0:115 2 (const int) 0:133 Sequence 0:133 move second child to first child ( temp int) 0:133 'selected3' ( global int) 0:133 Constant: 0:133 3 (const int) 0:175 Function Definition: foo985( ( global void) 0:175 Function Parameters: 0:175 Sequence 0:175 add ( temp int) 0:175 Constant: 0:175 2 (const int) 0:175 Comma ( temp int) 0:175 Constant: 0:175 3 (const int) 0:175 Constant: 0:175 4 (const int) 0:? Linker Objects 0:? 'sum' ( global float) 0:? 'selected4' ( global int) 0:? 'selected2' ( global int) 0:? 'selected3' ( global int) Linked vertex stage: Shader version: 110 ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'sum' ( global float) 0:5 Constant: 0:5 0.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:12 Sequence 0:12 add second child into first child ( temp float) 0:12 'sum' ( global float) 0:12 Constant: 0:12 1.000000 0:21 add second child into first child ( temp float) 0:21 'sum' ( global float) 0:21 Constant: 0:21 300.000000 0:61 add second child into first child ( temp float) 0:61 'sum' ( global float) 0:61 Constant: 0:61 600000.000000 0:65 add second child into first child ( temp float) 0:65 'sum' ( global float) 0:65 Constant: 0:65 80000000.000000 0:69 add second child into first child ( temp float) 0:69 'sum' ( global float) 0:69 Constant: 0:69 900000000.000000 0:76 add second child into first child ( temp float) 0:76 'sum' ( global float) 0:76 Constant: 0:76 7000000.000000 0:86 move second child to first child ( temp 4-component vector of float) 0:86 'gl_Position' ( gl_Position 4-component vector of float Position) 0:86 Construct vec4 ( temp 4-component vector of float) 0:86 'sum' ( global float) 0:103 Sequence 0:103 move second child to first child ( temp int) 0:103 'selected4' ( global int) 0:103 Constant: 0:103 4 (const int) 0:115 Sequence 0:115 move second child to first child ( temp int) 0:115 'selected2' ( global int) 0:115 Constant: 0:115 2 (const int) 0:133 Sequence 0:133 move second child to first child ( temp int) 0:133 'selected3' ( global int) 0:133 Constant: 0:133 3 (const int) 0:? Linker Objects 0:? 'sum' ( global float) 0:? 'selected4' ( global int) 0:? 'selected2' ( global int) 0:? 'selected3' ( global int) glslang-16.0.0/Test/baseResults/cppPassMacroName.frag.out000066400000000000000000000046021506534232700233140ustar00rootroot00000000000000cppPassMacroName.frag Shader version: 100 0:? Sequence 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp mediump int) 0:11 'f1' ( temp mediump int) 0:11 Constant: 0:11 4 (const int) 0:12 Sequence 0:12 move second child to first child ( temp mediump int) 0:12 'f2' ( temp mediump int) 0:12 'f1' ( temp mediump int) 0:13 Sequence 0:13 move second child to first child ( temp mediump int) 0:13 'f3' ( temp mediump int) 0:13 Constant: 0:13 9 (const int) 0:14 Sequence 0:14 move second child to first child ( temp mediump int) 0:14 'f4' ( temp mediump int) 0:14 Constant: 0:14 1 (const int) 0:15 Sequence 0:15 move second child to first child ( temp mediump int) 0:15 'f5' ( temp mediump int) 0:15 Constant: 0:15 5 (const int) 0:17 Sequence 0:17 move second child to first child ( temp highp float) 0:17 'fl_f5' ( temp highp float) 0:17 Constant: 0:17 0.460000 0:? Linker Objects Linked fragment stage: Shader version: 100 0:? Sequence 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp mediump int) 0:11 'f1' ( temp mediump int) 0:11 Constant: 0:11 4 (const int) 0:12 Sequence 0:12 move second child to first child ( temp mediump int) 0:12 'f2' ( temp mediump int) 0:12 'f1' ( temp mediump int) 0:13 Sequence 0:13 move second child to first child ( temp mediump int) 0:13 'f3' ( temp mediump int) 0:13 Constant: 0:13 9 (const int) 0:14 Sequence 0:14 move second child to first child ( temp mediump int) 0:14 'f4' ( temp mediump int) 0:14 Constant: 0:14 1 (const int) 0:15 Sequence 0:15 move second child to first child ( temp mediump int) 0:15 'f5' ( temp mediump int) 0:15 Constant: 0:15 5 (const int) 0:17 Sequence 0:17 move second child to first child ( temp highp float) 0:17 'fl_f5' ( temp highp float) 0:17 Constant: 0:17 0.460000 0:? Linker Objects glslang-16.0.0/Test/baseResults/cppRelaxSkipTokensErrors.vert.out000066400000000000000000000003721506534232700251470ustar00rootroot00000000000000cppRelaxSkipTokensErrors.vert Shader version: 110 0:? Sequence 0:? Linker Objects Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point Shader version: 110 0:? Sequence 0:? Linker Objects glslang-16.0.0/Test/baseResults/cppSimple.vert.out000066400000000000000000000320041506534232700221120ustar00rootroot00000000000000cppSimple.vert ERROR: 0:77: '#error' : good1 ERROR: 0:81: '#error' : good2 ERROR: 0:85: '#error' : good3 ERROR: 0:89: '#error' : good4 ERROR: 0:93: '#error' : good5 ERROR: 0:97: '#error' : good6 ERROR: 0:100: 'preprocessor evaluation' : expected ')' ERROR: 0:101: '#error' : bad1 ERROR: 0:104: '#if' : unexpected tokens following directive ERROR: 0:105: '#error' : bad2 ERROR: 0:108: 'preprocessor evaluation' : expected ')' ERROR: 0:109: '#error' : bad3 ERROR: 0:112: '#if' : unexpected tokens following directive ERROR: 0:113: '#error' : bad4 ERROR: 0:116: 'preprocessor evaluation' : expected ')' ERROR: 0:117: '#error' : bad5 ERROR: 0:120: '#if' : unexpected tokens following directive ERROR: 0:121: '#error' : bad6 ERROR: 0:122: '#endif' : unexpected tokens following directive ERROR: 0:135: 'string literal' : required extension not requested: Possible extensions include: GL_EXT_debug_printf GL_EXT_spirv_intrinsics ERROR: 0:136: 'string literal' : required extension not requested: Possible extensions include: GL_EXT_debug_printf GL_EXT_spirv_intrinsics ERROR: 0:136: 'length' : no matching overloaded function found ERROR: 0:136: '=' : cannot convert from ' const float' to ' global int' ERROR: 0:138: ''' : character literals not supported ERROR: 0:138: ''' : character literals not supported ERROR: 0:141: '#define' : names beginning with "GL_" can't be (un)defined: GL_ ERROR: 0:142: '#define' : names beginning with "GL_" can't be (un)defined: GL_Macro WARNING: 0:143: '#define' : names containing consecutive underscores are reserved: __M WARNING: 0:144: '#define' : names containing consecutive underscores are reserved: M__ WARNING: 0:145: '#define' : names containing consecutive underscores are reserved: ABC__DE ERROR: 0:148: '#else' : unexpected tokens following directive ERROR: 0:149: '#elif' : #elif after #else ERROR: 0:155: '#else' : unexpected tokens following directive ERROR: 0:158: '#else' : #else after #else ERROR: 0:160: '#endif' : unexpected tokens following directive ERROR: 0:164: '#define' : duplicate macro parameter ERROR: 0:173: '#define' : Macro redefined; function-like versus object-like: m4 ERROR: 0:177: '#define' : Macro redefined; function-like versus object-like: m5 ERROR: 0:181: '#define' : Macro redefined; different number of arguments: m6 ERROR: 0:185: '#define' : Macro redefined; different substitutions: m7 ERROR: 0:192: '#define' : Macro redefined; different substitutions: m8 ERROR: 0:196: '#define' : Macro redefined; different argument names: m9 WARNING: 0:204: '#undef' : names containing consecutive underscores are reserved: __VERSION__ ERROR: 0:205: '#undef' : names beginning with "GL_" can't be (un)defined: GL_ARB_texture_rectangle ERROR: 0:210: '#' : invalid directive ERROR: 0:211: '#' : invalid directive ERROR: 0:212: '#' : invalid directive ERROR: 0:213: '#' : invalid directive ERROR: 0:214: '#' : invalid directive ERROR: 0:215: '#' : invalid directive ERROR: 0:224: '#pragma' : optimize pragma syntax is incorrect ERROR: 0:225: '#pragma' : optimize pragma syntax is incorrect ERROR: 0:226: '#pragma' : debug pragma syntax is incorrect ERROR: 0:227: '#pragma' : debug pragma syntax is incorrect ERROR: 0:229: '#pragma' : optimize pragma syntax is incorrect ERROR: 0:230: '#pragma' : debug pragma syntax is incorrect ERROR: 0:233: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:235: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:236: '#error' : good continuation ERROR: 0:238: '#' : invalid directive: flizbit ERROR: 0:242: '#' : invalid directive: directive ERROR: 0:12000: '#error' : line should be 12000 ERROR: 7:13000: '#error' : line should be 13000 , string 7 ERROR: 7:14013: '#error' : line should be 14013 , string 7 ERROR: 12:14013: '#error' : line should be 14013 , string 12 ERROR: 12:14025: '#error' : line should be 14025 , string 12 ERROR: 12:1233: '#line' : unexpected tokens following directive ERROR: 12:1236: '#line' : unexpected tokens following directive ERROR: 12:20000: '#error' : line should be 20000 ERROR: 12:20010: '#error' : line should be 20010 ERROR: 12:20020: '#error' : line should be 20020 ERROR: 12:20045: '#define' : Macro redefined; different substitutions: SPACE_IN_MIDDLE ERROR: 12:20051: '#error' : good evaluation 1 ERROR: 12:20055: '#error' : good evaluation 2 ERROR: 12:9000: 'preprocessor evaluation' : expected ')' ERROR: 12:9002: '#if' : unexpected tokens following directive ERROR: 12:9014: 'FOOOM' : undeclared identifier ERROR: 12:9014: '=' : cannot convert from ' temp float' to ' global int' ERROR: 12:9015: 'preprocessor evaluation' : can't evaluate expression ERROR: 12:9016: 'preprocessor evaluation' : bad expression ERROR: 12:9500: 'preprocessor evaluation' : bad expression ERROR: 12:9500: '#if' : unexpected tokens following directive ERROR: 12:9502: 'preprocessor evaluation' : bad expression ERROR: 12:9502: '#if' : unexpected tokens following directive ERROR: 12:9504: 'preprocessor evaluation' : bad expression ERROR: 12:9504: '#if' : unexpected tokens following directive ERROR: 12:9506: '#error' : \ 377 ERROR: 12:9507: '#error' : \ 376 ERROR: 12:9508: '#error' : \ 377 ERROR: 12:9602: 'defined' : cannot use in preprocessor expression when expanded from macros ERROR: 12:9603: '#error' : DEF_DEFINED then ERROR: 12:10002: '' : missing #endif ERROR: 88 compilation errors. No code generated. Shader version: 400 ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'sum' ( global float) 0:5 Constant: 0:5 0.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:12 Sequence 0:12 add second child into first child ( temp float) 0:12 'sum' ( global float) 0:12 Constant: 0:12 1.000000 0:22 add second child into first child ( temp float) 0:22 'sum' ( global float) 0:22 Constant: 0:22 300.000000 0:37 add second child into first child ( temp float) 0:37 'sum' ( global float) 0:37 Constant: 0:37 600000.000000 0:48 add second child into first child ( temp float) 0:48 'sum' ( global float) 0:48 Constant: 0:48 7000000.000000 0:53 add second child into first child ( temp float) 0:53 'sum' ( global float) 0:53 Constant: 0:53 80000000.000000 0:58 add second child into first child ( temp float) 0:58 'sum' ( global float) 0:58 Constant: 0:58 900000000.000000 0:65 add second child into first child ( temp float) 0:65 'sum' ( global float) 0:65 Constant: 0:65 0.050000 0:69 move second child to first child ( temp 4-component vector of float) 0:69 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:69 '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:69 Constant: 0:69 0 (const uint) 0:69 Construct vec4 ( temp 4-component vector of float) 0:69 'sum' ( global float) 0:124 Sequence 0:124 move second child to first child ( temp int) 0:124 'linenumber' ( global int) 0:124 Constant: 0:124 124 (const int) 0:125 Sequence 0:125 move second child to first child ( temp int) 0:125 'filenumber' ( global int) 0:125 Constant: 0:125 0 (const int) 0:126 Sequence 0:126 move second child to first child ( temp int) 0:126 'version' ( global int) 0:126 Constant: 0:126 400 (const int) 0:130 Sequence 0:130 move second child to first child ( temp float) 0:130 'twoPi' ( global float) 0:130 Constant: 0:130 6.280000 0:199 Sequence 0:199 move second child to first child ( temp int) 0:199 'n' ( global int) 0:199 Constant: 0:199 15 (const int) 0:202 Sequence 0:202 move second child to first child ( temp double) 0:202 'f' ( global double) 0:202 Constant: 0:202 0.000800 12:20031 Function Definition: foo234( ( global void) 12:20031 Function Parameters: 12:20033 Sequence 12:20033 move second child to first child ( temp 4-component vector of float) 12:20033 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 12:20033 '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}) 12:20033 Constant: 12:20033 0 (const uint) 12:20033 Constant: 12:20033 6.000000 12:20033 6.000000 12:20033 6.000000 12:20033 6.000000 12:9011 Sequence 12:9011 move second child to first child ( temp int) 12:9011 'R1' ( global int) 12:9011 'RECURSE' ( global int) 0:? Linker Objects 0:? 'sum' ( global 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:? 'linenumber' ( global int) 0:? 'filenumber' ( global int) 0:? 'version' ( global int) 0:? 'twoPi' ( global float) 0:? 'a' ( global int) 0:? 'n' ( global int) 0:? 'f' ( global double) 0:? 'RECURSE' ( global int) 0:? 'R1' ( global int) 0:? 'aoeua' ( global int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 400 ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'sum' ( global float) 0:5 Constant: 0:5 0.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:12 Sequence 0:12 add second child into first child ( temp float) 0:12 'sum' ( global float) 0:12 Constant: 0:12 1.000000 0:22 add second child into first child ( temp float) 0:22 'sum' ( global float) 0:22 Constant: 0:22 300.000000 0:37 add second child into first child ( temp float) 0:37 'sum' ( global float) 0:37 Constant: 0:37 600000.000000 0:48 add second child into first child ( temp float) 0:48 'sum' ( global float) 0:48 Constant: 0:48 7000000.000000 0:53 add second child into first child ( temp float) 0:53 'sum' ( global float) 0:53 Constant: 0:53 80000000.000000 0:58 add second child into first child ( temp float) 0:58 'sum' ( global float) 0:58 Constant: 0:58 900000000.000000 0:65 add second child into first child ( temp float) 0:65 'sum' ( global float) 0:65 Constant: 0:65 0.050000 0:69 move second child to first child ( temp 4-component vector of float) 0:69 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:69 '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:69 Constant: 0:69 0 (const uint) 0:69 Construct vec4 ( temp 4-component vector of float) 0:69 'sum' ( global float) 0:124 Sequence 0:124 move second child to first child ( temp int) 0:124 'linenumber' ( global int) 0:124 Constant: 0:124 124 (const int) 0:125 Sequence 0:125 move second child to first child ( temp int) 0:125 'filenumber' ( global int) 0:125 Constant: 0:125 0 (const int) 0:126 Sequence 0:126 move second child to first child ( temp int) 0:126 'version' ( global int) 0:126 Constant: 0:126 400 (const int) 0:130 Sequence 0:130 move second child to first child ( temp float) 0:130 'twoPi' ( global float) 0:130 Constant: 0:130 6.280000 0:199 Sequence 0:199 move second child to first child ( temp int) 0:199 'n' ( global int) 0:199 Constant: 0:199 15 (const int) 0:202 Sequence 0:202 move second child to first child ( temp double) 0:202 'f' ( global double) 0:202 Constant: 0:202 0.000800 12:9011 Sequence 12:9011 move second child to first child ( temp int) 12:9011 'R1' ( global int) 12:9011 'RECURSE' ( global int) 0:? Linker Objects 0:? 'sum' ( global 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:? 'linenumber' ( global int) 0:? 'filenumber' ( global int) 0:? 'version' ( global int) 0:? 'twoPi' ( global float) 0:? 'a' ( global int) 0:? 'n' ( global int) 0:? 'f' ( global double) 0:? 'RECURSE' ( global int) 0:? 'R1' ( global int) 0:? 'aoeua' ( global int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/dataOut.frag.out000066400000000000000000000023321506534232700215170ustar00rootroot00000000000000dataOut.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 direct index ( temp 4-component vector of float FragData) 0:7 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:7 Constant: 0:7 1 (const int) 0:7 'Color' ( smooth in 4-component vector of float) 0:? Linker Objects 0:? 'Color' ( smooth in 4-component vector of float) Linked fragment stage: Shader version: 130 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 direct index ( temp 4-component vector of float FragData) 0:7 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:7 Constant: 0:7 1 (const int) 0:7 'Color' ( smooth in 4-component vector of float) 0:? Linker Objects 0:? 'Color' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/dataOutIndirect.frag.out000066400000000000000000000023641506534232700232060ustar00rootroot00000000000000dataOutIndirect.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 indirect index ( temp 4-component vector of float FragData) 0:9 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:9 'i' ( uniform int) 0:9 'Color' ( smooth in 4-component vector of float) 0:? Linker Objects 0:? 'Color' ( smooth in 4-component vector of float) 0:? 'i' ( uniform int) Linked fragment stage: Shader version: 130 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 indirect index ( temp 4-component vector of float FragData) 0:9 'gl_FragData' ( fragColor 32-element array of 4-component vector of float FragData) 0:9 'i' ( uniform int) 0:9 'Color' ( smooth in 4-component vector of float) 0:? Linker Objects 0:? 'Color' ( smooth in 4-component vector of float) 0:? 'i' ( uniform int) glslang-16.0.0/Test/baseResults/dce.frag.out000066400000000000000000000110011506534232700206420ustar00rootroot00000000000000dce.frag Shader version: 400 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'c' ( global int) 0:5 Constant: 0:5 0 (const int) 0:7 Function Definition: bar( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Constant: 0:9 false (const bool) 0:9 true case 0:10 Pre-Increment ( temp int) 0:10 'c' ( global int) 0:9 false case 0:12 Pre-Increment ( temp int) 0:12 'c' ( global int) 0:14 Test condition and select ( temp int) 0:14 Condition 0:14 Constant: 0:14 false (const bool) 0:14 true case 0:14 Pre-Increment ( temp int) 0:14 'c' ( global int) 0:14 false case 0:14 Pre-Increment ( temp int) 0:14 'c' ( global int) 0:16 switch 0:16 condition 0:16 'c' ( global int) 0:16 body 0:16 Sequence 0:17 case: with expression 0:17 Constant: 0:17 1 (const int) 0:? Sequence 0:18 Pre-Increment ( temp int) 0:18 'c' ( global int) 0:19 Branch: Break 0:20 Pre-Increment ( temp int) 0:20 'c' ( global int) 0:21 case: with expression 0:21 Constant: 0:21 2 (const int) 0:? Sequence 0:22 Branch: Break 0:23 Pre-Increment ( temp int) 0:23 'c' ( global int) 0:24 default: 0:? Sequence 0:25 Branch: Break 0:28 Sequence 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'i' ( temp int) 0:28 Constant: 0:28 0 (const int) 0:28 Loop with condition tested first 0:28 Loop Condition 0:28 Compare Less Than ( temp bool) 0:28 'i' ( temp int) 0:28 Constant: 0:28 0 (const int) 0:28 Loop Body 0:29 Pre-Increment ( temp int) 0:29 'c' ( global int) 0:28 Loop Terminal Expression 0:28 Pre-Increment ( temp int) 0:28 'i' ( temp int) 0:31 Sequence 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'i' ( temp int) 0:31 Constant: 0:31 0 (const int) 0:31 Loop with condition tested first 0:31 Loop Condition 0:31 Compare Less Than ( temp bool) 0:31 'i' ( temp int) 0:31 Constant: 0:31 10 (const int) 0:31 Loop Body 0:32 Sequence 0:32 Test condition and select ( temp void) 0:32 Condition 0:32 Compare Less Than ( temp bool) 0:32 'c' ( global int) 0:32 Constant: 0:32 3 (const int) 0:32 true case 0:33 Sequence 0:33 Branch: Break 0:34 Pre-Increment ( temp int) 0:34 'c' ( global int) 0:32 false case 0:36 Sequence 0:36 Branch: Continue 0:37 Pre-Increment ( temp int) 0:37 'c' ( global int) 0:31 Loop Terminal Expression 0:31 Pre-Increment ( temp int) 0:31 'i' ( temp int) 0:41 Branch: Return 0:43 Pre-Increment ( temp int) 0:43 'c' ( global int) 0:46 Function Definition: foo( ( global int) 0:46 Function Parameters: 0:48 Sequence 0:48 Test condition and select ( temp void) 0:48 Condition 0:48 Compare Greater Than ( temp bool) 0:48 'c' ( global int) 0:48 Constant: 0:48 4 (const int) 0:48 true case 0:49 Sequence 0:49 Branch: Return with expression 0:49 Constant: 0:49 4 (const int) 0:50 Pre-Increment ( temp int) 0:50 'c' ( global int) 0:53 Branch: Return with expression 0:53 Constant: 0:53 5 (const int) 0:55 Pre-Increment ( temp int) 0:55 'c' ( global int) 0:? Linker Objects 0:? 'flag' ( const bool) 0:? false (const bool) 0:? 'c' ( global int) Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 400 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'c' ( global int) 0:5 Constant: 0:5 0 (const int) 0:? Linker Objects 0:? 'flag' ( const bool) 0:? false (const bool) 0:? 'c' ( global int) glslang-16.0.0/Test/baseResults/decls.frag.out000066400000000000000000000431171506534232700212160ustar00rootroot00000000000000decls.frag ERROR: 0:19: 'vi4' : illegal use of type 'void' ERROR: 0:20: 'vj' : illegal use of type 'void' ERROR: 0:20: 'vk5' : illegal use of type 'void' ERROR: 0:21: 'vm2' : illegal use of type 'void' ERROR: 0:21: 'vm3' : illegal use of type 'void' ERROR: 0:22: 'vn8' : illegal use of type 'void' ERROR: 0:22: 'vp' : illegal use of type 'void' ERROR: 0:25: 'cij' : variables with qualifier 'const' must be initialized ERROR: 0:27: 'cip' : variables with qualifier 'const' must be initialized ERROR: 0:34: 'gl_vi4' : identifiers starting with "gl_" are reserved ERROR: 0:35: 'gl_vj' : identifiers starting with "gl_" are reserved ERROR: 0:35: 'gl_vk5' : identifiers starting with "gl_" are reserved ERROR: 0:36: 'gl_vm2' : identifiers starting with "gl_" are reserved ERROR: 0:36: 'gl_vm3' : identifiers starting with "gl_" are reserved ERROR: 0:37: 'gl_vn8' : identifiers starting with "gl_" are reserved ERROR: 0:37: 'gl_vp' : identifiers starting with "gl_" are reserved ERROR: 0:42: '' : boolean expression expected ERROR: 0:43: 'gl_cond' : identifiers starting with "gl_" are reserved WARNING: 0:46: 'foob__vi4' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:47: 'foob__vj' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:47: 'foob__vk5' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:48: '__foobvm2' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:48: '__foobvm3' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:49: 'foob__vn8' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:49: 'foob__vp' : identifiers containing consecutive underscores ("__") are reserved ERROR: 18 compilation errors. No code generated. Shader version: 120 ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'd1' ( global int) 0:5 Constant: 0:5 1 (const int) 0:6 Sequence 0:6 move second child to first child ( temp int) 0:6 'e2' ( global int) 0:6 Constant: 0:6 2 (const int) 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'h3' ( global int) 0:7 Constant: 0:7 3 (const int) 0:14 Sequence 0:14 move second child to first child ( temp 4-element array of int) 0:14 'ii4' ( global 4-element array of int) 0:14 Constant: 0:14 1 (const int) 0:14 2 (const int) 0:14 3 (const int) 0:14 4 (const int) 0:15 Sequence 0:15 move second child to first child ( temp 5-element array of int) 0:15 'ik5' ( global 5-element array of int) 0:15 Constant: 0:15 5 (const int) 0:15 6 (const int) 0:15 7 (const int) 0:15 8 (const int) 0:15 9 (const int) 0:16 Sequence 0:16 move second child to first child ( temp 2-element array of int) 0:16 'im2' ( global 2-element array of int) 0:16 Constant: 0:16 10 (const int) 0:16 11 (const int) 0:16 move second child to first child ( temp 3-element array of int) 0:16 'im3' ( global 3-element array of int) 0:16 Constant: 0:16 12 (const int) 0:16 13 (const int) 0:16 14 (const int) 0:17 Sequence 0:17 move second child to first child ( temp 4-element array of int) 0:17 'in8' ( global 4-element array of int) 0:17 Constant: 0:17 21 (const int) 0:17 22 (const int) 0:17 23 (const int) 0:17 24 (const int) 0:34 Sequence 0:34 move second child to first child ( temp 4-element array of int) 0:34 'gl_vi4' ( global 4-element array of int) 0:34 Constant: 0:34 1 (const int) 0:34 2 (const int) 0:34 3 (const int) 0:34 4 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 5-element array of int) 0:35 'gl_vk5' ( global 5-element array of int) 0:35 Constant: 0:35 5 (const int) 0:35 6 (const int) 0:35 7 (const int) 0:35 8 (const int) 0:35 9 (const int) 0:36 Sequence 0:36 move second child to first child ( temp 2-element array of int) 0:36 'gl_vm2' ( global 2-element array of int) 0:36 Constant: 0:36 10 (const int) 0:36 11 (const int) 0:36 move second child to first child ( temp 3-element array of int) 0:36 'gl_vm3' ( global 3-element array of int) 0:36 Constant: 0:36 12 (const int) 0:36 13 (const int) 0:36 14 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-element array of int) 0:37 'gl_vn8' ( global 4-element array of int) 0:37 Constant: 0:37 21 (const int) 0:37 22 (const int) 0:37 23 (const int) 0:37 24 (const int) 0:39 Function Definition: main( ( global void) 0:39 Function Parameters: 0:41 Sequence 0:41 Loop with condition tested first 0:41 Loop Condition 0:41 move second child to first child ( temp bool) 0:41 'cond' ( temp bool) 0:41 Compare Less Than ( temp bool) 0:41 'b' ( global int) 0:41 'c' ( global int) 0:41 No loop body 0:42 Loop with condition tested first 0:42 Loop Condition 0:42 move second child to first child ( temp int) 0:42 'icond' ( temp int) 0:42 'b' ( global int) 0:42 No loop body 0:43 Loop with condition tested first 0:43 Loop Condition 0:43 move second child to first child ( temp bool) 0:43 'gl_cond' ( temp bool) 0:43 Compare Less Than ( temp bool) 0:43 'b' ( global int) 0:43 'c' ( global int) 0:43 No loop body 0:46 Sequence 0:46 move second child to first child ( temp 4-element array of int) 0:46 'foob__vi4' ( global 4-element array of int) 0:46 Constant: 0:46 1 (const int) 0:46 2 (const int) 0:46 3 (const int) 0:46 4 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 5-element array of int) 0:47 'foob__vk5' ( global 5-element array of int) 0:47 Constant: 0:47 5 (const int) 0:47 6 (const int) 0:47 7 (const int) 0:47 8 (const int) 0:47 9 (const int) 0:48 Sequence 0:48 move second child to first child ( temp 2-element array of int) 0:48 '__foobvm2' ( global 2-element array of int) 0:48 Constant: 0:48 10 (const int) 0:48 11 (const int) 0:48 move second child to first child ( temp 3-element array of int) 0:48 '__foobvm3' ( global 3-element array of int) 0:48 Constant: 0:48 12 (const int) 0:48 13 (const int) 0:48 14 (const int) 0:49 Sequence 0:49 move second child to first child ( temp 4-element array of int) 0:49 'foob__vn8' ( global 4-element array of int) 0:49 Constant: 0:49 21 (const int) 0:49 22 (const int) 0:49 23 (const int) 0:49 24 (const int) 0:? Linker Objects 0:? 'a' ( global int) 0:? 'b' ( global int) 0:? 'c' ( global int) 0:? 'd1' ( global int) 0:? 'e2' ( global int) 0:? 'f' ( global int) 0:? 'g' ( global int) 0:? 'h3' ( global int) 0:? 'i4' ( global 4-element array of int) 0:? 'j' ( global int) 0:? 'k5' ( global 5-element array of int) 0:? 'm6' ( global 6-element array of int) 0:? 'm7' ( global 7-element array of int) 0:? 'n8' ( global 8-element array of int) 0:? 'p' ( global int) 0:? 'ii4' ( global 4-element array of int) 0:? 'ij' ( global int) 0:? 'ik5' ( global 5-element array of int) 0:? 'im2' ( global 2-element array of int) 0:? 'im3' ( global 3-element array of int) 0:? 'in8' ( global 4-element array of int) 0:? 'ip' ( global int) 0:? 'cii4' ( const 4-element array of int) 0:? 1 (const int) 0:? 2 (const int) 0:? 3 (const int) 0:? 4 (const int) 0:? 'cij' ( temp int) 0:? 'cik5' ( const 5-element array of int) 0:? 5 (const int) 0:? 6 (const int) 0:? 7 (const int) 0:? 8 (const int) 0:? 9 (const int) 0:? 'cim2' ( const 2-element array of int) 0:? 10 (const int) 0:? 11 (const int) 0:? 'cim3' ( const 3-element array of int) 0:? 12 (const int) 0:? 13 (const int) 0:? 14 (const int) 0:? 'cin8' ( const 4-element array of int) 0:? 21 (const int) 0:? 22 (const int) 0:? 23 (const int) 0:? 24 (const int) 0:? 'cip' ( temp int) 0:? 'uii4' ( uniform 4-element array of int) 0:? 1 (const int) 0:? 2 (const int) 0:? 3 (const int) 0:? 4 (const int) 0:? 'uij' ( uniform int) 0:? 'uik5' ( uniform 5-element array of int) 0:? 5 (const int) 0:? 6 (const int) 0:? 7 (const int) 0:? 8 (const int) 0:? 9 (const int) 0:? 'uim2' ( uniform 2-element array of int) 0:? 10 (const int) 0:? 11 (const int) 0:? 'uim3' ( uniform 3-element array of int) 0:? 12 (const int) 0:? 13 (const int) 0:? 14 (const int) 0:? 'uin8' ( uniform 4-element array of int) 0:? 21 (const int) 0:? 22 (const int) 0:? 23 (const int) 0:? 24 (const int) 0:? 'uip' ( uniform int) 0:? 'gl_vi4' ( global 4-element array of int) 0:? 'gl_vj' ( global int) 0:? 'gl_vk5' ( global 5-element array of int) 0:? 'gl_vm2' ( global 2-element array of int) 0:? 'gl_vm3' ( global 3-element array of int) 0:? 'gl_vn8' ( global 4-element array of int) 0:? 'gl_vp' ( global int) 0:? 'foob__vi4' ( global 4-element array of int) 0:? 'foob__vj' ( global int) 0:? 'foob__vk5' ( global 5-element array of int) 0:? '__foobvm2' ( global 2-element array of int) 0:? '__foobvm3' ( global 3-element array of int) 0:? 'foob__vn8' ( global 4-element array of int) 0:? 'foob__vp' ( global int) Linked fragment stage: Shader version: 120 ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'd1' ( global int) 0:5 Constant: 0:5 1 (const int) 0:6 Sequence 0:6 move second child to first child ( temp int) 0:6 'e2' ( global int) 0:6 Constant: 0:6 2 (const int) 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'h3' ( global int) 0:7 Constant: 0:7 3 (const int) 0:14 Sequence 0:14 move second child to first child ( temp 4-element array of int) 0:14 'ii4' ( global 4-element array of int) 0:14 Constant: 0:14 1 (const int) 0:14 2 (const int) 0:14 3 (const int) 0:14 4 (const int) 0:15 Sequence 0:15 move second child to first child ( temp 5-element array of int) 0:15 'ik5' ( global 5-element array of int) 0:15 Constant: 0:15 5 (const int) 0:15 6 (const int) 0:15 7 (const int) 0:15 8 (const int) 0:15 9 (const int) 0:16 Sequence 0:16 move second child to first child ( temp 2-element array of int) 0:16 'im2' ( global 2-element array of int) 0:16 Constant: 0:16 10 (const int) 0:16 11 (const int) 0:16 move second child to first child ( temp 3-element array of int) 0:16 'im3' ( global 3-element array of int) 0:16 Constant: 0:16 12 (const int) 0:16 13 (const int) 0:16 14 (const int) 0:17 Sequence 0:17 move second child to first child ( temp 4-element array of int) 0:17 'in8' ( global 4-element array of int) 0:17 Constant: 0:17 21 (const int) 0:17 22 (const int) 0:17 23 (const int) 0:17 24 (const int) 0:34 Sequence 0:34 move second child to first child ( temp 4-element array of int) 0:34 'gl_vi4' ( global 4-element array of int) 0:34 Constant: 0:34 1 (const int) 0:34 2 (const int) 0:34 3 (const int) 0:34 4 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 5-element array of int) 0:35 'gl_vk5' ( global 5-element array of int) 0:35 Constant: 0:35 5 (const int) 0:35 6 (const int) 0:35 7 (const int) 0:35 8 (const int) 0:35 9 (const int) 0:36 Sequence 0:36 move second child to first child ( temp 2-element array of int) 0:36 'gl_vm2' ( global 2-element array of int) 0:36 Constant: 0:36 10 (const int) 0:36 11 (const int) 0:36 move second child to first child ( temp 3-element array of int) 0:36 'gl_vm3' ( global 3-element array of int) 0:36 Constant: 0:36 12 (const int) 0:36 13 (const int) 0:36 14 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-element array of int) 0:37 'gl_vn8' ( global 4-element array of int) 0:37 Constant: 0:37 21 (const int) 0:37 22 (const int) 0:37 23 (const int) 0:37 24 (const int) 0:39 Function Definition: main( ( global void) 0:39 Function Parameters: 0:41 Sequence 0:41 Loop with condition tested first 0:41 Loop Condition 0:41 move second child to first child ( temp bool) 0:41 'cond' ( temp bool) 0:41 Compare Less Than ( temp bool) 0:41 'b' ( global int) 0:41 'c' ( global int) 0:41 No loop body 0:42 Loop with condition tested first 0:42 Loop Condition 0:42 move second child to first child ( temp int) 0:42 'icond' ( temp int) 0:42 'b' ( global int) 0:42 No loop body 0:43 Loop with condition tested first 0:43 Loop Condition 0:43 move second child to first child ( temp bool) 0:43 'gl_cond' ( temp bool) 0:43 Compare Less Than ( temp bool) 0:43 'b' ( global int) 0:43 'c' ( global int) 0:43 No loop body 0:46 Sequence 0:46 move second child to first child ( temp 4-element array of int) 0:46 'foob__vi4' ( global 4-element array of int) 0:46 Constant: 0:46 1 (const int) 0:46 2 (const int) 0:46 3 (const int) 0:46 4 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 5-element array of int) 0:47 'foob__vk5' ( global 5-element array of int) 0:47 Constant: 0:47 5 (const int) 0:47 6 (const int) 0:47 7 (const int) 0:47 8 (const int) 0:47 9 (const int) 0:48 Sequence 0:48 move second child to first child ( temp 2-element array of int) 0:48 '__foobvm2' ( global 2-element array of int) 0:48 Constant: 0:48 10 (const int) 0:48 11 (const int) 0:48 move second child to first child ( temp 3-element array of int) 0:48 '__foobvm3' ( global 3-element array of int) 0:48 Constant: 0:48 12 (const int) 0:48 13 (const int) 0:48 14 (const int) 0:49 Sequence 0:49 move second child to first child ( temp 4-element array of int) 0:49 'foob__vn8' ( global 4-element array of int) 0:49 Constant: 0:49 21 (const int) 0:49 22 (const int) 0:49 23 (const int) 0:49 24 (const int) 0:? Linker Objects 0:? 'a' ( global int) 0:? 'b' ( global int) 0:? 'c' ( global int) 0:? 'd1' ( global int) 0:? 'e2' ( global int) 0:? 'f' ( global int) 0:? 'g' ( global int) 0:? 'h3' ( global int) 0:? 'i4' ( global 4-element array of int) 0:? 'j' ( global int) 0:? 'k5' ( global 5-element array of int) 0:? 'm6' ( global 6-element array of int) 0:? 'm7' ( global 7-element array of int) 0:? 'n8' ( global 8-element array of int) 0:? 'p' ( global int) 0:? 'ii4' ( global 4-element array of int) 0:? 'ij' ( global int) 0:? 'ik5' ( global 5-element array of int) 0:? 'im2' ( global 2-element array of int) 0:? 'im3' ( global 3-element array of int) 0:? 'in8' ( global 4-element array of int) 0:? 'ip' ( global int) 0:? 'cii4' ( const 4-element array of int) 0:? 1 (const int) 0:? 2 (const int) 0:? 3 (const int) 0:? 4 (const int) 0:? 'cij' ( temp int) 0:? 'cik5' ( const 5-element array of int) 0:? 5 (const int) 0:? 6 (const int) 0:? 7 (const int) 0:? 8 (const int) 0:? 9 (const int) 0:? 'cim2' ( const 2-element array of int) 0:? 10 (const int) 0:? 11 (const int) 0:? 'cim3' ( const 3-element array of int) 0:? 12 (const int) 0:? 13 (const int) 0:? 14 (const int) 0:? 'cin8' ( const 4-element array of int) 0:? 21 (const int) 0:? 22 (const int) 0:? 23 (const int) 0:? 24 (const int) 0:? 'cip' ( temp int) 0:? 'uii4' ( uniform 4-element array of int) 0:? 1 (const int) 0:? 2 (const int) 0:? 3 (const int) 0:? 4 (const int) 0:? 'uij' ( uniform int) 0:? 'uik5' ( uniform 5-element array of int) 0:? 5 (const int) 0:? 6 (const int) 0:? 7 (const int) 0:? 8 (const int) 0:? 9 (const int) 0:? 'uim2' ( uniform 2-element array of int) 0:? 10 (const int) 0:? 11 (const int) 0:? 'uim3' ( uniform 3-element array of int) 0:? 12 (const int) 0:? 13 (const int) 0:? 14 (const int) 0:? 'uin8' ( uniform 4-element array of int) 0:? 21 (const int) 0:? 22 (const int) 0:? 23 (const int) 0:? 24 (const int) 0:? 'uip' ( uniform int) 0:? 'gl_vi4' ( global 4-element array of int) 0:? 'gl_vj' ( global int) 0:? 'gl_vk5' ( global 5-element array of int) 0:? 'gl_vm2' ( global 2-element array of int) 0:? 'gl_vm3' ( global 3-element array of int) 0:? 'gl_vn8' ( global 4-element array of int) 0:? 'gl_vp' ( global int) 0:? 'foob__vi4' ( global 4-element array of int) 0:? 'foob__vj' ( global int) 0:? 'foob__vk5' ( global 5-element array of int) 0:? '__foobvm2' ( global 2-element array of int) 0:? '__foobvm3' ( global 3-element array of int) 0:? 'foob__vn8' ( global 4-element array of int) 0:? 'foob__vp' ( global int) glslang-16.0.0/Test/baseResults/deepRvalue.frag.out000066400000000000000000000256321506534232700222220ustar00rootroot00000000000000deepRvalue.frag Shader version: 120 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'v1' ( global 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 3.000000 0:5 5.000000 0:5 7.000000 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'v2' ( global 4-component vector of float) 0:6 Constant: 0:6 11.000000 0:6 13.000000 0:6 17.000000 0:6 19.000000 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'v3' ( global 4-component vector of float) 0:7 Constant: 0:7 23.000000 0:7 29.000000 0:7 31.000000 0:7 37.000000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'v4' ( global 4-component vector of float) 0:8 Constant: 0:8 41.000000 0:8 43.000000 0:8 47.000000 0:8 53.000000 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 Sequence 0:18 move second child to first child ( temp 4X4 matrix of float) 0:18 'm' ( temp 4X4 matrix of float) 0:18 Construct mat4 ( temp 4X4 matrix of float) 0:18 'v1' ( global 4-component vector of float) 0:18 'v2' ( global 4-component vector of float) 0:18 'v3' ( global 4-component vector of float) 0:18 'v4' ( global 4-component vector of float) 0:20 Sequence 0:20 move second child to first child ( temp 4X4 matrix of float) 0:20 'mm' ( temp 4X4 matrix of float) 0:20 component-wise multiply ( global 4X4 matrix of float) 0:20 'm' ( temp 4X4 matrix of float) 0:20 'm' ( temp 4X4 matrix of float) 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'f' ( temp float) 0:21 direct index ( temp float) 0:21 direct index ( temp 4-component vector of float) 0:21 'mm' ( temp 4X4 matrix of float) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 3 (const int) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'g' ( temp float) 0:24 direct index ( temp float) 0:24 direct index ( temp 4-component vector of float) 0:24 component-wise multiply ( global 4X4 matrix of float) 0:24 'm' ( temp 4X4 matrix of float) 0:24 'm' ( temp 4X4 matrix of float) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 1 (const int) 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'h' ( temp float) 0:26 Constant: 0:26 5.000000 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'i' ( temp float) 0:28 direct index ( temp float) 0:28 texture ( global 4-component vector of float) 0:28 'sampler' ( uniform sampler2D) 0:28 Constant: 0:28 0.500000 0:28 0.500000 0:28 Constant: 0:28 1 (const int) 0:30 add second child into first child ( temp float) 0:30 'i' ( temp float) 0:30 direct index ( temp float) 0:30 Test condition and select ( temp 4-component vector of float) 0:30 Condition 0:30 Compare Greater Than ( temp bool) 0:30 'i' ( temp float) 0:30 Constant: 0:30 0.100000 0:30 true case 0:30 'v1' ( global 4-component vector of float) 0:30 false case 0:30 'v2' ( global 4-component vector of float) 0:30 Constant: 0:30 3 (const int) 0:33 add second child into first child ( temp float) 0:33 'i' ( temp float) 0:33 direct index ( temp float) 0:33 direct index ( temp 2-component vector of float) 0:33 b: direct index for structure ( global 3-element array of 2-component vector of float) 0:33 move second child to first child ( temp structure{ global int a, global 3-element array of 2-component vector of float b, global bool c}) 0:33 't' ( temp structure{ global int a, global 3-element array of 2-component vector of float b, global bool c}) 0:33 Constant: 0:33 1 (const int) 0:33 2.000000 0:33 3.000000 0:33 4.000000 0:33 5.000000 0:33 6.000000 0:33 7.000000 0:33 true (const bool) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 1 (const int) 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:35 Construct vec4 ( temp 4-component vector of float) 0:35 'f' ( temp float) 0:35 'g' ( temp float) 0:35 'h' ( temp float) 0:35 'i' ( temp float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'v1' ( global 4-component vector of float) 0:? 'v2' ( global 4-component vector of float) 0:? 'v3' ( global 4-component vector of float) 0:? 'v4' ( global 4-component vector of float) Linked fragment stage: Shader version: 120 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'v1' ( global 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 3.000000 0:5 5.000000 0:5 7.000000 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'v2' ( global 4-component vector of float) 0:6 Constant: 0:6 11.000000 0:6 13.000000 0:6 17.000000 0:6 19.000000 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'v3' ( global 4-component vector of float) 0:7 Constant: 0:7 23.000000 0:7 29.000000 0:7 31.000000 0:7 37.000000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'v4' ( global 4-component vector of float) 0:8 Constant: 0:8 41.000000 0:8 43.000000 0:8 47.000000 0:8 53.000000 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 Sequence 0:18 move second child to first child ( temp 4X4 matrix of float) 0:18 'm' ( temp 4X4 matrix of float) 0:18 Construct mat4 ( temp 4X4 matrix of float) 0:18 'v1' ( global 4-component vector of float) 0:18 'v2' ( global 4-component vector of float) 0:18 'v3' ( global 4-component vector of float) 0:18 'v4' ( global 4-component vector of float) 0:20 Sequence 0:20 move second child to first child ( temp 4X4 matrix of float) 0:20 'mm' ( temp 4X4 matrix of float) 0:20 component-wise multiply ( global 4X4 matrix of float) 0:20 'm' ( temp 4X4 matrix of float) 0:20 'm' ( temp 4X4 matrix of float) 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'f' ( temp float) 0:21 direct index ( temp float) 0:21 direct index ( temp 4-component vector of float) 0:21 'mm' ( temp 4X4 matrix of float) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 3 (const int) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'g' ( temp float) 0:24 direct index ( temp float) 0:24 direct index ( temp 4-component vector of float) 0:24 component-wise multiply ( global 4X4 matrix of float) 0:24 'm' ( temp 4X4 matrix of float) 0:24 'm' ( temp 4X4 matrix of float) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 1 (const int) 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'h' ( temp float) 0:26 Constant: 0:26 5.000000 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'i' ( temp float) 0:28 direct index ( temp float) 0:28 texture ( global 4-component vector of float) 0:28 'sampler' ( uniform sampler2D) 0:28 Constant: 0:28 0.500000 0:28 0.500000 0:28 Constant: 0:28 1 (const int) 0:30 add second child into first child ( temp float) 0:30 'i' ( temp float) 0:30 direct index ( temp float) 0:30 Test condition and select ( temp 4-component vector of float) 0:30 Condition 0:30 Compare Greater Than ( temp bool) 0:30 'i' ( temp float) 0:30 Constant: 0:30 0.100000 0:30 true case 0:30 'v1' ( global 4-component vector of float) 0:30 false case 0:30 'v2' ( global 4-component vector of float) 0:30 Constant: 0:30 3 (const int) 0:33 add second child into first child ( temp float) 0:33 'i' ( temp float) 0:33 direct index ( temp float) 0:33 direct index ( temp 2-component vector of float) 0:33 b: direct index for structure ( global 3-element array of 2-component vector of float) 0:33 move second child to first child ( temp structure{ global int a, global 3-element array of 2-component vector of float b, global bool c}) 0:33 't' ( temp structure{ global int a, global 3-element array of 2-component vector of float b, global bool c}) 0:33 Constant: 0:33 1 (const int) 0:33 2.000000 0:33 3.000000 0:33 4.000000 0:33 5.000000 0:33 6.000000 0:33 7.000000 0:33 true (const bool) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 1 (const int) 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:35 Construct vec4 ( temp 4-component vector of float) 0:35 'f' ( temp float) 0:35 'g' ( temp float) 0:35 'h' ( temp float) 0:35 'i' ( temp float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'v1' ( global 4-component vector of float) 0:? 'v2' ( global 4-component vector of float) 0:? 'v3' ( global 4-component vector of float) 0:? 'v4' ( global 4-component vector of float) glslang-16.0.0/Test/baseResults/defaultArgs.comp.out000066400000000000000000000025411506534232700224000ustar00rootroot00000000000000defaultArgs.comp ERROR: 0:3: '=' : default argument values are only available for builtins ERROR: 0:9: 'foo' : no matching overloaded function found ERROR: 0:10: 'foo' : no matching overloaded function found ERROR: 3 compilation errors. No code generated. Shader version: 450 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:3 Function Definition: foo(i1;i1; ( global void) 0:3 Function Parameters: 0:3 'n' ( in int) 0:3 'x' ( in int) 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Constant: 0:9 0.000000 0:10 Constant: 0:10 0.000000 0:11 Function Call: foo(i1;i1; ( global void) 0:11 Constant: 0:11 8 (const int) 0:11 Constant: 0:11 3 (const int) 0:? Linker Objects Linked compute stage: Shader version: 450 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:3 Function Definition: foo(i1;i1; ( global void) 0:3 Function Parameters: 0:3 'n' ( in int) 0:3 'x' ( in int) 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Constant: 0:9 0.000000 0:10 Constant: 0:10 0.000000 0:11 Function Call: foo(i1;i1; ( global void) 0:11 Constant: 0:11 8 (const int) 0:11 Constant: 0:11 3 (const int) 0:? Linker Objects glslang-16.0.0/Test/baseResults/depthOut.frag.out000066400000000000000000000026111506534232700217120ustar00rootroot00000000000000depthOut.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release WARNING: 0:4: varying deprecated in version 130; may be removed in future release Shader version: 130 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 float) 0:8 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:8 'Depth' ( smooth in float) 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:9 'Color' ( smooth in 4-component vector of float) 0:? Linker Objects 0:? 'Color' ( smooth in 4-component vector of float) 0:? 'Depth' ( smooth in float) Linked fragment stage: Shader version: 130 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 float) 0:8 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:8 'Depth' ( smooth in float) 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:9 'Color' ( smooth in 4-component vector of float) 0:? Linker Objects 0:? 'Color' ( smooth in 4-component vector of float) 0:? 'Depth' ( smooth in float) glslang-16.0.0/Test/baseResults/discard-dce.frag.out000066400000000000000000000220271506534232700222630ustar00rootroot00000000000000discard-dce.frag Shader version: 110 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'white' ( temp 4-component vector of float) 0:6 Constant: 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'black' ( temp 4-component vector of float) 0:7 Constant: 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'color' ( temp 4-component vector of float) 0:8 'white' ( temp 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp float) 0:11 'x' ( temp float) 0:11 subtract ( temp float) 0:11 component-wise multiply ( temp float) 0:11 direct index ( temp float) 0:11 'tex_coord' ( smooth in 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2.000000 0:11 Constant: 0:11 1.000000 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'y' ( temp float) 0:12 subtract ( temp float) 0:12 component-wise multiply ( temp float) 0:12 direct index ( temp float) 0:12 'tex_coord' ( smooth in 2-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2.000000 0:12 Constant: 0:12 1.000000 0:14 Sequence 0:14 move second child to first child ( temp float) 0:14 'radius' ( temp float) 0:14 sqrt ( global float) 0:14 add ( temp float) 0:14 component-wise multiply ( temp float) 0:14 'x' ( temp float) 0:14 'x' ( temp float) 0:14 component-wise multiply ( temp float) 0:14 'y' ( temp float) 0:14 'y' ( temp float) 0:15 Test condition and select ( temp void) 0:15 Condition 0:15 Compare Greater Than ( temp bool) 0:15 'radius' ( temp float) 0:15 Constant: 0:15 1.000000 0:15 true case 0:16 Sequence 0:16 Test condition and select ( temp void) 0:16 Condition 0:16 Compare Greater Than ( temp bool) 0:16 'radius' ( temp float) 0:16 Constant: 0:16 1.100000 0:16 true case 0:17 Sequence 0:17 Pre-Increment ( temp 4-component vector of float) 0:17 'color' ( temp 4-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:20 'color' ( temp 4-component vector of float) 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Compare Greater Than ( temp bool) 0:22 'radius' ( temp float) 0:22 Constant: 0:22 1.200000 0:22 true case 0:23 Sequence 0:23 Pre-Increment ( temp 4-component vector of float) 0:23 'color' ( temp 4-component vector of float) 0:26 Branch: Kill 0:30 Test condition and select ( temp void) 0:30 Condition 0:30 Compare Greater Than or Equal ( temp bool) 0:30 'radius' ( temp float) 0:30 Constant: 0:30 0.750000 0:30 true case 0:31 subtract second child into first child ( temp 4-component vector of float) 0:31 'color' ( temp 4-component vector of float) 0:31 Absolute value ( global float) 0:31 divide ( temp float) 0:31 pow ( global float) 0:31 'radius' ( temp float) 0:31 Constant: 0:31 16.000000 0:31 Constant: 0:31 2.000000 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:33 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex_coord' ( smooth in 2-component vector of float) Linked fragment stage: Shader version: 110 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'white' ( temp 4-component vector of float) 0:6 Constant: 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'black' ( temp 4-component vector of float) 0:7 Constant: 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:7 0.200000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'color' ( temp 4-component vector of float) 0:8 'white' ( temp 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp float) 0:11 'x' ( temp float) 0:11 subtract ( temp float) 0:11 component-wise multiply ( temp float) 0:11 direct index ( temp float) 0:11 'tex_coord' ( smooth in 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2.000000 0:11 Constant: 0:11 1.000000 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'y' ( temp float) 0:12 subtract ( temp float) 0:12 component-wise multiply ( temp float) 0:12 direct index ( temp float) 0:12 'tex_coord' ( smooth in 2-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2.000000 0:12 Constant: 0:12 1.000000 0:14 Sequence 0:14 move second child to first child ( temp float) 0:14 'radius' ( temp float) 0:14 sqrt ( global float) 0:14 add ( temp float) 0:14 component-wise multiply ( temp float) 0:14 'x' ( temp float) 0:14 'x' ( temp float) 0:14 component-wise multiply ( temp float) 0:14 'y' ( temp float) 0:14 'y' ( temp float) 0:15 Test condition and select ( temp void) 0:15 Condition 0:15 Compare Greater Than ( temp bool) 0:15 'radius' ( temp float) 0:15 Constant: 0:15 1.000000 0:15 true case 0:16 Sequence 0:16 Test condition and select ( temp void) 0:16 Condition 0:16 Compare Greater Than ( temp bool) 0:16 'radius' ( temp float) 0:16 Constant: 0:16 1.100000 0:16 true case 0:17 Sequence 0:17 Pre-Increment ( temp 4-component vector of float) 0:17 'color' ( temp 4-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:20 'color' ( temp 4-component vector of float) 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Compare Greater Than ( temp bool) 0:22 'radius' ( temp float) 0:22 Constant: 0:22 1.200000 0:22 true case 0:23 Sequence 0:23 Pre-Increment ( temp 4-component vector of float) 0:23 'color' ( temp 4-component vector of float) 0:26 Branch: Kill 0:30 Test condition and select ( temp void) 0:30 Condition 0:30 Compare Greater Than or Equal ( temp bool) 0:30 'radius' ( temp float) 0:30 Constant: 0:30 0.750000 0:30 true case 0:31 subtract second child into first child ( temp 4-component vector of float) 0:31 'color' ( temp 4-component vector of float) 0:31 Absolute value ( global float) 0:31 divide ( temp float) 0:31 pow ( global float) 0:31 'radius' ( temp float) 0:31 Constant: 0:31 16.000000 0:31 Constant: 0:31 2.000000 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:33 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex_coord' ( smooth in 2-component vector of float) glslang-16.0.0/Test/baseResults/doWhileLoop.frag.out000066400000000000000000000051051506534232700223440ustar00rootroot00000000000000doWhileLoop.frag Shader version: 110 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'color' ( temp 4-component vector of float) 0:9 'BaseColor' ( smooth in 4-component vector of float) 0:13 Loop with condition not tested first 0:13 Loop Condition 0:13 Compare Less Than ( temp bool) 0:13 direct index ( temp float) 0:13 'color' ( temp 4-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 'd' ( uniform float) 0:13 Loop Body 0:12 Sequence 0:12 add second child into first child ( temp 4-component vector of float) 0:12 'color' ( temp 4-component vector of float) 0:12 'bigColor' ( uniform 4-component vector of float) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:15 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) Linked fragment stage: Shader version: 110 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'color' ( temp 4-component vector of float) 0:9 'BaseColor' ( smooth in 4-component vector of float) 0:13 Loop with condition not tested first 0:13 Loop Condition 0:13 Compare Less Than ( temp bool) 0:13 direct index ( temp float) 0:13 'color' ( temp 4-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 'd' ( uniform float) 0:13 Loop Body 0:12 Sequence 0:12 add second child into first child ( temp 4-component vector of float) 0:12 'color' ( temp 4-component vector of float) 0:12 'bigColor' ( uniform 4-component vector of float) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:15 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) glslang-16.0.0/Test/baseResults/earlyReturnDiscard.frag.out000066400000000000000000000246221506534232700237320ustar00rootroot00000000000000earlyReturnDiscard.frag Shader version: 110 0:? Sequence 0:19 Function Definition: main( ( global void) 0:19 Function Parameters: 0:21 Sequence 0:21 Sequence 0:21 move second child to first child ( temp 4-component vector of float) 0:21 'color' ( temp 4-component vector of float) 0:21 'BaseColor' ( smooth in 4-component vector of float) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'color2' ( temp 4-component vector of float) 0:24 'otherColor' ( uniform 4-component vector of float) 0:26 Test condition and select ( temp void) 0:26 Condition 0:26 Compare Greater Than ( temp bool) 0:26 'c' ( smooth in float) 0:26 'd' ( uniform float) 0:26 true case 0:27 add second child into first child ( temp 4-component vector of float) 0:27 'color' ( temp 4-component vector of float) 0:27 'bigColor' ( uniform 4-component vector of float) 0:26 false case 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'color' ( temp 4-component vector of float) 0:29 'smallColor' ( uniform 4-component vector of float) 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Compare Less Than ( temp bool) 0:31 direct index ( temp float) 0:31 'color' ( temp 4-component vector of float) 0:31 Constant: 0:31 2 (const int) 0:31 'minimum' ( uniform float) 0:31 true case 0:32 Branch: Return 0:34 Post-Increment ( temp float) 0:34 direct index ( temp float) 0:34 'color' ( temp 4-component vector of float) 0:34 Constant: 0:34 2 (const int) 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 Compare Greater Than ( temp bool) 0:36 direct index ( temp float) 0:36 'color' ( temp 4-component vector of float) 0:36 Constant: 0:36 2 (const int) 0:36 'threshhold' ( uniform float) 0:36 true case 0:37 Branch: Kill 0:39 Post-Increment ( temp 4-component vector of float) 0:39 'color' ( temp 4-component vector of float) 0:42 Test condition and select ( temp void) 0:42 Condition 0:42 Compare Greater Than ( temp bool) 0:42 direct index ( temp float) 0:42 'color' ( temp 4-component vector of float) 0:42 Constant: 0:42 3 (const int) 0:42 'threshhold2' ( uniform float) 0:42 true case 0:43 Sequence 0:43 Test condition and select ( temp void) 0:43 Condition 0:43 Compare Greater Than ( temp bool) 0:43 direct index ( temp float) 0:43 'color' ( temp 4-component vector of float) 0:43 Constant: 0:43 2 (const int) 0:43 'threshhold2' ( uniform float) 0:43 true case 0:44 Branch: Return 0:43 false case 0:45 Test condition and select ( temp void) 0:45 Condition 0:45 'b' ( uniform bool) 0:45 true case 0:46 Post-Increment ( temp float) 0:46 direct index ( temp float) 0:46 'color' ( temp 4-component vector of float) 0:46 Constant: 0:46 2 (const int) 0:45 false case 0:48 Sequence 0:48 Test condition and select ( temp void) 0:48 Condition 0:48 Compare Less Than ( temp bool) 0:48 direct index ( temp float) 0:48 'color' ( temp 4-component vector of float) 0:48 Constant: 0:48 0 (const int) 0:48 'minimum' ( uniform float) 0:48 true case 0:49 Sequence 0:49 Branch: Kill 0:48 false case 0:51 Sequence 0:51 Post-Increment ( temp 4-component vector of float) 0:51 'color' ( temp 4-component vector of float) 0:42 false case 0:55 Sequence 0:55 Test condition and select ( temp void) 0:55 Condition 0:55 'b' ( uniform bool) 0:55 true case 0:56 Branch: Kill 0:55 false case 0:58 Branch: Return 0:101 move second child to first child ( temp 4-component vector of float) 0:101 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:101 component-wise multiply ( temp 4-component vector of float) 0:101 'color' ( temp 4-component vector of float) 0:101 'color2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'd' ( uniform float) 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'smallColor' ( uniform 4-component vector of float) 0:? 'otherColor' ( uniform 4-component vector of float) 0:? 'c' ( smooth in float) 0:? 'threshhold' ( uniform float) 0:? 'threshhold2' ( uniform float) 0:? 'threshhold3' ( uniform float) 0:? 'minimum' ( uniform float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'b' ( uniform bool) Linked fragment stage: Shader version: 110 0:? Sequence 0:19 Function Definition: main( ( global void) 0:19 Function Parameters: 0:21 Sequence 0:21 Sequence 0:21 move second child to first child ( temp 4-component vector of float) 0:21 'color' ( temp 4-component vector of float) 0:21 'BaseColor' ( smooth in 4-component vector of float) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'color2' ( temp 4-component vector of float) 0:24 'otherColor' ( uniform 4-component vector of float) 0:26 Test condition and select ( temp void) 0:26 Condition 0:26 Compare Greater Than ( temp bool) 0:26 'c' ( smooth in float) 0:26 'd' ( uniform float) 0:26 true case 0:27 add second child into first child ( temp 4-component vector of float) 0:27 'color' ( temp 4-component vector of float) 0:27 'bigColor' ( uniform 4-component vector of float) 0:26 false case 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'color' ( temp 4-component vector of float) 0:29 'smallColor' ( uniform 4-component vector of float) 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Compare Less Than ( temp bool) 0:31 direct index ( temp float) 0:31 'color' ( temp 4-component vector of float) 0:31 Constant: 0:31 2 (const int) 0:31 'minimum' ( uniform float) 0:31 true case 0:32 Branch: Return 0:34 Post-Increment ( temp float) 0:34 direct index ( temp float) 0:34 'color' ( temp 4-component vector of float) 0:34 Constant: 0:34 2 (const int) 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 Compare Greater Than ( temp bool) 0:36 direct index ( temp float) 0:36 'color' ( temp 4-component vector of float) 0:36 Constant: 0:36 2 (const int) 0:36 'threshhold' ( uniform float) 0:36 true case 0:37 Branch: Kill 0:39 Post-Increment ( temp 4-component vector of float) 0:39 'color' ( temp 4-component vector of float) 0:42 Test condition and select ( temp void) 0:42 Condition 0:42 Compare Greater Than ( temp bool) 0:42 direct index ( temp float) 0:42 'color' ( temp 4-component vector of float) 0:42 Constant: 0:42 3 (const int) 0:42 'threshhold2' ( uniform float) 0:42 true case 0:43 Sequence 0:43 Test condition and select ( temp void) 0:43 Condition 0:43 Compare Greater Than ( temp bool) 0:43 direct index ( temp float) 0:43 'color' ( temp 4-component vector of float) 0:43 Constant: 0:43 2 (const int) 0:43 'threshhold2' ( uniform float) 0:43 true case 0:44 Branch: Return 0:43 false case 0:45 Test condition and select ( temp void) 0:45 Condition 0:45 'b' ( uniform bool) 0:45 true case 0:46 Post-Increment ( temp float) 0:46 direct index ( temp float) 0:46 'color' ( temp 4-component vector of float) 0:46 Constant: 0:46 2 (const int) 0:45 false case 0:48 Sequence 0:48 Test condition and select ( temp void) 0:48 Condition 0:48 Compare Less Than ( temp bool) 0:48 direct index ( temp float) 0:48 'color' ( temp 4-component vector of float) 0:48 Constant: 0:48 0 (const int) 0:48 'minimum' ( uniform float) 0:48 true case 0:49 Sequence 0:49 Branch: Kill 0:48 false case 0:51 Sequence 0:51 Post-Increment ( temp 4-component vector of float) 0:51 'color' ( temp 4-component vector of float) 0:42 false case 0:55 Sequence 0:55 Test condition and select ( temp void) 0:55 Condition 0:55 'b' ( uniform bool) 0:55 true case 0:56 Branch: Kill 0:55 false case 0:58 Branch: Return 0:101 move second child to first child ( temp 4-component vector of float) 0:101 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:101 component-wise multiply ( temp 4-component vector of float) 0:101 'color' ( temp 4-component vector of float) 0:101 'color2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'd' ( uniform float) 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'smallColor' ( uniform 4-component vector of float) 0:? 'otherColor' ( uniform 4-component vector of float) 0:? 'c' ( smooth in float) 0:? 'threshhold' ( uniform float) 0:? 'threshhold2' ( uniform float) 0:? 'threshhold3' ( uniform float) 0:? 'minimum' ( uniform float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'b' ( uniform bool) glslang-16.0.0/Test/baseResults/empty.frag.out000066400000000000000000000004021506534232700212500ustar00rootroot00000000000000empty.frag Shader version: 100 0:? Sequence 0:? Linker Objects empty2.frag Shader version: 100 0:? Sequence 0:? Linker Objects empty3.frag Shader version: 110 0:? Sequence 0:? Linker Objects ERROR: Cannot mix ES profile with non-ES profile shaders glslang-16.0.0/Test/baseResults/enhanced.0.frag.out000066400000000000000000000003211506534232700220150ustar00rootroot00000000000000enhanced.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 glslang-16.0.0/Test/baseResults/enhanced.1.frag.out000066400000000000000000000002721506534232700220230ustar00rootroot00000000000000enhanced.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 glslang-16.0.0/Test/baseResults/enhanced.2.frag.out000066400000000000000000000002721506534232700220240ustar00rootroot00000000000000enhanced.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 glslang-16.0.0/Test/baseResults/enhanced.3.link.out000066400000000000000000000004031506534232700220370ustar00rootroot00000000000000enhanced.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 glslang-16.0.0/Test/baseResults/enhanced.4.link.out000066400000000000000000000004751506534232700220510ustar00rootroot00000000000000enhanced.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 glslang-16.0.0/Test/baseResults/enhanced.5.link.out000066400000000000000000000004061506534232700220440ustar00rootroot00000000000000enhanced.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 glslang-16.0.0/Test/baseResults/enhanced.6.link.out000066400000000000000000000004161506534232700220460ustar00rootroot00000000000000enhanced.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 glslang-16.0.0/Test/baseResults/enhanced.7.link.out000066400000000000000000000004361506534232700220510ustar00rootroot00000000000000enhanced.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 glslang-16.0.0/Test/baseResults/error-column.vert.out000066400000000000000000000015501506534232700226040ustar00rootroot00000000000000error-column.vert ERROR: error-column.vert:7:16: 'model' : member storage qualifier cannot contradict block storage qualifier ERROR: error-column.vert:8:16: 'view' : member storage qualifier cannot contradict block storage qualifier ERROR: error-column.vert:9:16: 'projection' : member storage qualifier cannot contradict block storage qualifier ERROR: error-column.vert:17:16: 'texCoord1' : member storage qualifier cannot contradict block storage qualifier ERROR: error-column.vert:24:52: 'Pos' : undeclared identifier ERROR: error-column.vert:24:60: 'constructor' : not enough data provided for construction ERROR: error-column.vert:24:17: 'assign' : cannot convert from ' temp highp 4X4 matrix of float' to ' gl_Position 4-component vector of float Position' ERROR: 7 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/errors.frag.out000066400000000000000000000014321506534232700214320ustar00rootroot00000000000000errors.frag ERROR: 0:1: 'main' : function cannot take any parameter(s) ERROR: 0:1: 'int' : entry point cannot return a value ERROR: 2 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:1 Function Definition: main(i1; ( global mediump int) 0:1 Function Parameters: 0:1 'foo' ( in mediump int) 0:3 Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 1 (const int) 0:? Linker Objects Linked fragment stage: Shader version: 100 ERROR: node is still EOpNull! 0:1 Function Definition: main(i1; ( global mediump int) 0:1 Function Parameters: 0:1 'foo' ( in mediump int) 0:3 Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 1 (const int) 0:? Linker Objects glslang-16.0.0/Test/baseResults/es-link1.frag.out000066400000000000000000000017551506534232700215510ustar00rootroot00000000000000es-link1.frag Shader version: 100 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp mediump 4-component vector of float) 0:7 'gl_FragColor' ( fragColor mediump 4-component vector of float FragColor) 0:7 Function Call: calculateColor( ( global mediump 4-component vector of float) 0:? Linker Objects es-link2.frag Shader version: 100 0:? Sequence 0:5 Function Definition: calculateColor( ( global mediump 4-component vector of float) 0:5 Function Parameters: 0:7 Sequence 0:7 Branch: Return with expression 0:7 vector-scale ( temp mediump 4-component vector of float) 0:7 'varyingColor' ( smooth in mediump 4-component vector of float) 0:7 Constant: 0:7 0.500000 0:? Linker Objects 0:? 'varyingColor' ( smooth in mediump 4-component vector of float) ERROR: Cannot attach multiple ES shaders of the same type to a single program glslang-16.0.0/Test/baseResults/findFunction.frag.out000066400000000000000000000222071506534232700225470ustar00rootroot00000000000000findFunction.frag ERROR: 0:39: 'func' : ambiguous best function under implicit type conversion ERROR: 0:40: 'func' : no matching overloaded function found ERROR: 0:40: '=' : cannot convert from ' const float' to ' temp int64_t' ERROR: 0:41: 'func' : no matching overloaded function found ERROR: 0:41: '=' : cannot convert from ' const float' to ' temp int64_t' ERROR: 0:44: 'func' : no matching overloaded function found ERROR: 0:44: '=' : cannot convert from ' const float' to ' temp int64_t' ERROR: 0:45: 'func' : ambiguous best function under implicit type conversion ERROR: 8 compilation errors. No code generated. Shader version: 450 Requested GL_EXT_shader_explicit_arithmetic_types ERROR: node is still EOpNull! 0:5 Function Definition: func(i81;i161;i161; ( global int64_t) 0:5 Function Parameters: 0:5 'a' ( in int8_t) 0:5 'b' ( in int16_t) 0:5 'c' ( in int16_t) 0:7 Sequence 0:7 Branch: Return with expression 0:7 Convert int16_t to int64_t ( temp int64_t) 0:7 inclusive-or ( temp int16_t) 0:7 Convert int8_t to int16_t ( temp int16_t) 0:7 'a' ( in int8_t) 0:7 add ( temp int16_t) 0:7 'b' ( in int16_t) 0:7 'c' ( in int16_t) 0:10 Function Definition: func(i81;i161;i1; ( global int64_t) 0:10 Function Parameters: 0:10 'a' ( in int8_t) 0:10 'b' ( in int16_t) 0:10 'c' ( in int) 0:12 Sequence 0:12 Branch: Return with expression 0:12 Convert int to int64_t ( temp int64_t) 0:12 inclusive-or ( temp int) 0:12 Convert int8_t to int ( temp int) 0:12 'a' ( in int8_t) 0:12 subtract ( temp int) 0:12 Convert int16_t to int ( temp int) 0:12 'b' ( in int16_t) 0:12 'c' ( in int) 0:15 Function Definition: func(i1;i1;i1; ( global int64_t) 0:15 Function Parameters: 0:15 'a' ( in int) 0:15 'b' ( in int) 0:15 'c' ( in int) 0:17 Sequence 0:17 Branch: Return with expression 0:17 Convert int to int64_t ( temp int64_t) 0:17 add ( temp int) 0:17 divide ( temp int) 0:17 'a' ( in int) 0:17 'b' ( in int) 0:17 'c' ( in int) 0:20 Function Definition: func(f161;f161;f1; ( global int64_t) 0:20 Function Parameters: 0:20 'a' ( in float16_t) 0:20 'b' ( in float16_t) 0:20 'c' ( in float) 0:22 Sequence 0:22 Branch: Return with expression 0:22 Convert float to int64_t ( temp int64_t) 0:22 subtract ( temp float) 0:22 Convert float16_t to float ( temp float) 0:22 'a' ( in float16_t) 0:22 component-wise multiply ( temp float) 0:22 Convert float16_t to float ( temp float) 0:22 'b' ( in float16_t) 0:22 'c' ( in float) 0:25 Function Definition: func(f161;i161;f1; ( global int64_t) 0:25 Function Parameters: 0:25 'a' ( in float16_t) 0:25 'b' ( in int16_t) 0:25 'c' ( in float) 0:27 Sequence 0:27 Branch: Return with expression 0:27 Convert float to int64_t ( temp int64_t) 0:27 subtract ( temp float) 0:27 Convert float16_t to float ( temp float) 0:27 'a' ( in float16_t) 0:27 component-wise multiply ( temp float) 0:27 Convert int16_t to float ( temp float) 0:27 'b' ( in int16_t) 0:27 'c' ( in float) 0:30 Function Definition: main( ( global void) 0:30 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp int64_t) 0:38 'b1' ( temp int64_t) 0:38 Function Call: func(i81;i161;i1; ( global int64_t) 0:38 'x' ( temp int8_t) 0:38 'y' ( temp int16_t) 0:38 'z' ( temp int) 0:39 Sequence 0:39 move second child to first child ( temp int64_t) 0:39 'b2' ( temp int64_t) 0:39 Function Call: func(f161;i161;f1; ( global int64_t) 0:39 Convert int16_t to float16_t ( temp float16_t) 0:39 'y' ( temp int16_t) 0:39 'y' ( temp int16_t) 0:39 Convert int to float ( temp float) 0:39 'z' ( temp int) 0:42 Sequence 0:42 move second child to first child ( temp int64_t) 0:42 'b5' ( temp int64_t) 0:42 Function Call: func(f161;i161;f1; ( global int64_t) 0:42 Convert int16_t to float16_t ( temp float16_t) 0:42 'y' ( temp int16_t) 0:42 'y' ( temp int16_t) 0:42 Convert float16_t to float ( temp float) 0:42 'f16' ( temp float16_t) 0:43 Sequence 0:43 move second child to first child ( temp int64_t) 0:43 'b7' ( temp int64_t) 0:43 Function Call: func(f161;f161;f1; ( global int64_t) 0:43 'f16' ( temp float16_t) 0:43 'f16' ( temp float16_t) 0:43 Convert int16_t to float ( temp float) 0:43 'y' ( temp int16_t) 0:45 Sequence 0:45 move second child to first child ( temp int64_t) 0:45 'b9' ( temp int64_t) 0:45 Function Call: func(f161;f161;f1; ( global int64_t) 0:45 'f16' ( temp float16_t) 0:45 Convert int8_t to float16_t ( temp float16_t) 0:45 'x' ( temp int8_t) 0:45 Convert float16_t to float ( temp float) 0:45 'f16' ( temp float16_t) 0:? Linker Objects Linked fragment stage: Shader version: 450 Requested GL_EXT_shader_explicit_arithmetic_types ERROR: node is still EOpNull! 0:10 Function Definition: func(i81;i161;i1; ( global int64_t) 0:10 Function Parameters: 0:10 'a' ( in int8_t) 0:10 'b' ( in int16_t) 0:10 'c' ( in int) 0:12 Sequence 0:12 Branch: Return with expression 0:12 Convert int to int64_t ( temp int64_t) 0:12 inclusive-or ( temp int) 0:12 Convert int8_t to int ( temp int) 0:12 'a' ( in int8_t) 0:12 subtract ( temp int) 0:12 Convert int16_t to int ( temp int) 0:12 'b' ( in int16_t) 0:12 'c' ( in int) 0:20 Function Definition: func(f161;f161;f1; ( global int64_t) 0:20 Function Parameters: 0:20 'a' ( in float16_t) 0:20 'b' ( in float16_t) 0:20 'c' ( in float) 0:22 Sequence 0:22 Branch: Return with expression 0:22 Convert float to int64_t ( temp int64_t) 0:22 subtract ( temp float) 0:22 Convert float16_t to float ( temp float) 0:22 'a' ( in float16_t) 0:22 component-wise multiply ( temp float) 0:22 Convert float16_t to float ( temp float) 0:22 'b' ( in float16_t) 0:22 'c' ( in float) 0:25 Function Definition: func(f161;i161;f1; ( global int64_t) 0:25 Function Parameters: 0:25 'a' ( in float16_t) 0:25 'b' ( in int16_t) 0:25 'c' ( in float) 0:27 Sequence 0:27 Branch: Return with expression 0:27 Convert float to int64_t ( temp int64_t) 0:27 subtract ( temp float) 0:27 Convert float16_t to float ( temp float) 0:27 'a' ( in float16_t) 0:27 component-wise multiply ( temp float) 0:27 Convert int16_t to float ( temp float) 0:27 'b' ( in int16_t) 0:27 'c' ( in float) 0:30 Function Definition: main( ( global void) 0:30 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp int64_t) 0:38 'b1' ( temp int64_t) 0:38 Function Call: func(i81;i161;i1; ( global int64_t) 0:38 'x' ( temp int8_t) 0:38 'y' ( temp int16_t) 0:38 'z' ( temp int) 0:39 Sequence 0:39 move second child to first child ( temp int64_t) 0:39 'b2' ( temp int64_t) 0:39 Function Call: func(f161;i161;f1; ( global int64_t) 0:39 Convert int16_t to float16_t ( temp float16_t) 0:39 'y' ( temp int16_t) 0:39 'y' ( temp int16_t) 0:39 Convert int to float ( temp float) 0:39 'z' ( temp int) 0:42 Sequence 0:42 move second child to first child ( temp int64_t) 0:42 'b5' ( temp int64_t) 0:42 Function Call: func(f161;i161;f1; ( global int64_t) 0:42 Convert int16_t to float16_t ( temp float16_t) 0:42 'y' ( temp int16_t) 0:42 'y' ( temp int16_t) 0:42 Convert float16_t to float ( temp float) 0:42 'f16' ( temp float16_t) 0:43 Sequence 0:43 move second child to first child ( temp int64_t) 0:43 'b7' ( temp int64_t) 0:43 Function Call: func(f161;f161;f1; ( global int64_t) 0:43 'f16' ( temp float16_t) 0:43 'f16' ( temp float16_t) 0:43 Convert int16_t to float ( temp float) 0:43 'y' ( temp int16_t) 0:45 Sequence 0:45 move second child to first child ( temp int64_t) 0:45 'b9' ( temp int64_t) 0:45 Function Call: func(f161;f161;f1; ( global int64_t) 0:45 'f16' ( temp float16_t) 0:45 Convert int8_t to float16_t ( temp float16_t) 0:45 'x' ( temp int8_t) 0:45 Convert float16_t to float ( temp float) 0:45 'f16' ( temp float16_t) 0:? Linker Objects glslang-16.0.0/Test/baseResults/floatBitsToInt.vert.out000066400000000000000000000225761506534232700231000ustar00rootroot00000000000000floatBitsToInt.vert 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) glslang-16.0.0/Test/baseResults/flowControl.frag.out000066400000000000000000000072731506534232700224370ustar00rootroot00000000000000flowControl.frag Shader version: 120 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'color' ( temp 4-component vector of float) 0:12 'BaseColor' ( smooth in 4-component vector of float) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'color2' ( temp 4-component vector of float) 0:15 'otherColor' ( uniform 4-component vector of float) 0:17 Test condition and select ( temp void) 0:17 Condition 0:17 Compare Greater Than ( temp bool) 0:17 'c' ( smooth in float) 0:17 'd' ( uniform float) 0:17 true case 0:18 add second child into first child ( temp 4-component vector of float) 0:18 'color' ( temp 4-component vector of float) 0:18 'bigColor' ( uniform 4-component vector of float) 0:17 false case 0:20 add second child into first child ( temp 4-component vector of float) 0:20 'color' ( temp 4-component vector of float) 0:20 'smallColor' ( uniform 4-component vector of float) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:22 component-wise multiply ( temp 4-component vector of float) 0:22 'color' ( temp 4-component vector of float) 0:22 'color2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'd' ( uniform float) 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'smallColor' ( uniform 4-component vector of float) 0:? 'otherColor' ( uniform 4-component vector of float) 0:? 'c' ( smooth in float) 0:? 'BaseColor' ( smooth in 4-component vector of float) Linked fragment stage: Shader version: 120 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'color' ( temp 4-component vector of float) 0:12 'BaseColor' ( smooth in 4-component vector of float) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'color2' ( temp 4-component vector of float) 0:15 'otherColor' ( uniform 4-component vector of float) 0:17 Test condition and select ( temp void) 0:17 Condition 0:17 Compare Greater Than ( temp bool) 0:17 'c' ( smooth in float) 0:17 'd' ( uniform float) 0:17 true case 0:18 add second child into first child ( temp 4-component vector of float) 0:18 'color' ( temp 4-component vector of float) 0:18 'bigColor' ( uniform 4-component vector of float) 0:17 false case 0:20 add second child into first child ( temp 4-component vector of float) 0:20 'color' ( temp 4-component vector of float) 0:20 'smallColor' ( uniform 4-component vector of float) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:22 component-wise multiply ( temp 4-component vector of float) 0:22 'color' ( temp 4-component vector of float) 0:22 'color2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'd' ( uniform float) 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'smallColor' ( uniform 4-component vector of float) 0:? 'otherColor' ( uniform 4-component vector of float) 0:? 'c' ( smooth in float) 0:? 'BaseColor' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/forLoop.frag.out000066400000000000000000000334571506534232700215520ustar00rootroot00000000000000forLoop.frag Shader version: 130 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'color' ( temp 4-component vector of float) 0:12 'BaseColor' ( smooth in 4-component vector of float) 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'i' ( temp int) 0:14 Constant: 0:14 0 (const int) 0:14 Loop with condition tested first 0:14 Loop Condition 0:14 Compare Less Than ( temp bool) 0:14 'i' ( temp int) 0:14 'Count' ( uniform int) 0:14 Loop Body 0:15 Sequence 0:15 add second child into first child ( temp 4-component vector of float) 0:15 'color' ( temp 4-component vector of float) 0:15 'bigColor' ( uniform 4-component vector of float) 0:14 Loop Terminal Expression 0:14 Pre-Increment ( temp int) 0:14 'i' ( temp int) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:18 'color' ( temp 4-component vector of float) 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'sum' ( temp float) 0:20 Constant: 0:20 0.000000 0:21 Sequence 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'i' ( temp int) 0:21 Constant: 0:21 0 (const int) 0:21 Loop with condition tested first 0:21 Loop Condition 0:21 Compare Less Than ( temp bool) 0:21 'i' ( temp int) 0:21 Constant: 0:21 4 (const int) 0:21 Loop Body 0:22 add second child into first child ( temp float) 0:22 'sum' ( temp float) 0:22 Convert uint to float ( temp float) 0:22 indirect index ( temp uint) 0:22 'v4' ( uniform 4-component vector of uint) 0:22 'i' ( temp int) 0:21 Loop Terminal Expression 0:21 Pre-Increment ( temp int) 0:21 'i' ( temp int) 0:26 Sequence 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'i' ( temp int) 0:26 Constant: 0:26 0 (const int) 0:26 Loop with condition tested first 0:26 Loop Condition 0:26 Compare Less Than ( temp bool) 0:26 'i' ( temp int) 0:26 Constant: 0:26 4 (const int) 0:26 Loop Body 0:27 move second child to first child ( temp float) 0:27 indirect index ( temp float) 0:27 'tv4' ( temp 4-component vector of float) 0:27 'i' ( temp int) 0:27 Convert uint to float ( temp float) 0:27 component-wise multiply ( temp uint) 0:27 indirect index ( temp uint) 0:27 'v4' ( uniform 4-component vector of uint) 0:27 'i' ( temp int) 0:27 Constant: 0:27 4 (const uint) 0:26 Loop Terminal Expression 0:26 Pre-Increment ( temp int) 0:26 'i' ( temp int) 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:29 add ( temp 4-component vector of float) 0:29 Construct vec4 ( temp 4-component vector of float) 0:29 'sum' ( temp float) 0:29 'tv4' ( temp 4-component vector of float) 0:32 move second child to first child ( temp 3-component vector of float) 0:32 vector swizzle ( temp 3-component vector of float) 0:32 'r' ( temp 4-component vector of float) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 vector swizzle ( temp 3-component vector of float) 0:32 'BaseColor' ( smooth in 4-component vector of float) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 Sequence 0:34 Sequence 0:34 move second child to first child ( temp int) 0:34 'i' ( temp int) 0:34 Constant: 0:34 0 (const int) 0:34 Loop with condition tested first 0:34 Loop Condition 0:34 Compare Less Than ( temp bool) 0:34 'i' ( temp int) 0:34 'Count' ( uniform int) 0:34 Loop Body 0:35 move second child to first child ( temp float) 0:35 direct index ( temp float) 0:35 'r' ( temp 4-component vector of float) 0:35 Constant: 0:35 3 (const int) 0:35 'f' ( smooth in float) 0:34 Loop Terminal Expression 0:34 Pre-Increment ( temp int) 0:34 'i' ( temp int) 0:37 add second child into first child ( temp 3-component vector of float) 0:37 vector swizzle ( temp 3-component vector of float) 0:37 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 vector swizzle ( temp 3-component vector of float) 0:37 'r' ( temp 4-component vector of float) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:39 Sequence 0:39 Sequence 0:39 move second child to first child ( temp int) 0:39 'i' ( temp int) 0:39 Constant: 0:39 0 (const int) 0:39 Loop with condition tested first 0:39 Loop Condition 0:39 Compare Less Than ( temp bool) 0:39 'i' ( temp int) 0:39 Constant: 0:39 16 (const int) 0:39 Loop Body 0:40 vector scale second child into first child ( temp 4-component vector of float) 0:40 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:40 'f' ( smooth in float) 0:39 Loop Terminal Expression 0:39 add second child into first child ( temp int) 0:39 'i' ( temp int) 0:39 Constant: 0:39 4 (const int) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'f' ( smooth in float) 0:? 'Count' ( uniform int) 0:? 'v4' ( uniform 4-component vector of uint) Linked fragment stage: Shader version: 130 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'color' ( temp 4-component vector of float) 0:12 'BaseColor' ( smooth in 4-component vector of float) 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'i' ( temp int) 0:14 Constant: 0:14 0 (const int) 0:14 Loop with condition tested first 0:14 Loop Condition 0:14 Compare Less Than ( temp bool) 0:14 'i' ( temp int) 0:14 'Count' ( uniform int) 0:14 Loop Body 0:15 Sequence 0:15 add second child into first child ( temp 4-component vector of float) 0:15 'color' ( temp 4-component vector of float) 0:15 'bigColor' ( uniform 4-component vector of float) 0:14 Loop Terminal Expression 0:14 Pre-Increment ( temp int) 0:14 'i' ( temp int) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:18 'color' ( temp 4-component vector of float) 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'sum' ( temp float) 0:20 Constant: 0:20 0.000000 0:21 Sequence 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'i' ( temp int) 0:21 Constant: 0:21 0 (const int) 0:21 Loop with condition tested first 0:21 Loop Condition 0:21 Compare Less Than ( temp bool) 0:21 'i' ( temp int) 0:21 Constant: 0:21 4 (const int) 0:21 Loop Body 0:22 add second child into first child ( temp float) 0:22 'sum' ( temp float) 0:22 Convert uint to float ( temp float) 0:22 indirect index ( temp uint) 0:22 'v4' ( uniform 4-component vector of uint) 0:22 'i' ( temp int) 0:21 Loop Terminal Expression 0:21 Pre-Increment ( temp int) 0:21 'i' ( temp int) 0:26 Sequence 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'i' ( temp int) 0:26 Constant: 0:26 0 (const int) 0:26 Loop with condition tested first 0:26 Loop Condition 0:26 Compare Less Than ( temp bool) 0:26 'i' ( temp int) 0:26 Constant: 0:26 4 (const int) 0:26 Loop Body 0:27 move second child to first child ( temp float) 0:27 indirect index ( temp float) 0:27 'tv4' ( temp 4-component vector of float) 0:27 'i' ( temp int) 0:27 Convert uint to float ( temp float) 0:27 component-wise multiply ( temp uint) 0:27 indirect index ( temp uint) 0:27 'v4' ( uniform 4-component vector of uint) 0:27 'i' ( temp int) 0:27 Constant: 0:27 4 (const uint) 0:26 Loop Terminal Expression 0:26 Pre-Increment ( temp int) 0:26 'i' ( temp int) 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:29 add ( temp 4-component vector of float) 0:29 Construct vec4 ( temp 4-component vector of float) 0:29 'sum' ( temp float) 0:29 'tv4' ( temp 4-component vector of float) 0:32 move second child to first child ( temp 3-component vector of float) 0:32 vector swizzle ( temp 3-component vector of float) 0:32 'r' ( temp 4-component vector of float) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 vector swizzle ( temp 3-component vector of float) 0:32 'BaseColor' ( smooth in 4-component vector of float) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 Sequence 0:34 Sequence 0:34 move second child to first child ( temp int) 0:34 'i' ( temp int) 0:34 Constant: 0:34 0 (const int) 0:34 Loop with condition tested first 0:34 Loop Condition 0:34 Compare Less Than ( temp bool) 0:34 'i' ( temp int) 0:34 'Count' ( uniform int) 0:34 Loop Body 0:35 move second child to first child ( temp float) 0:35 direct index ( temp float) 0:35 'r' ( temp 4-component vector of float) 0:35 Constant: 0:35 3 (const int) 0:35 'f' ( smooth in float) 0:34 Loop Terminal Expression 0:34 Pre-Increment ( temp int) 0:34 'i' ( temp int) 0:37 add second child into first child ( temp 3-component vector of float) 0:37 vector swizzle ( temp 3-component vector of float) 0:37 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 vector swizzle ( temp 3-component vector of float) 0:37 'r' ( temp 4-component vector of float) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:39 Sequence 0:39 Sequence 0:39 move second child to first child ( temp int) 0:39 'i' ( temp int) 0:39 Constant: 0:39 0 (const int) 0:39 Loop with condition tested first 0:39 Loop Condition 0:39 Compare Less Than ( temp bool) 0:39 'i' ( temp int) 0:39 Constant: 0:39 16 (const int) 0:39 Loop Body 0:40 vector scale second child into first child ( temp 4-component vector of float) 0:40 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:40 'f' ( smooth in float) 0:39 Loop Terminal Expression 0:39 add second child into first child ( temp int) 0:39 'i' ( temp int) 0:39 Constant: 0:39 4 (const int) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'f' ( smooth in float) 0:? 'Count' ( uniform int) 0:? 'v4' ( uniform 4-component vector of uint) glslang-16.0.0/Test/baseResults/forwardRef.frag.out000066400000000000000000000112401506534232700222150ustar00rootroot00000000000000forwardRef.frag Shader version: 110 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'color' ( temp 4-component vector of float) 0:13 Construct vec4 ( temp 4-component vector of float) 0:13 Function Call: foo(vf4; ( global float) 0:13 'BaseColor' ( smooth in 4-component vector of float) 0:15 Function Call: bar( ( global void) 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'f' ( temp float) 0:16 Function Call: unreachableReturn( ( global float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:18 vector-scale ( temp 4-component vector of float) 0:18 'color' ( temp 4-component vector of float) 0:18 'f' ( temp float) 0:21 Function Definition: bar( ( global void) 0:21 Function Parameters: 0:25 Function Definition: unreachableReturn( ( global float) 0:25 Function Parameters: 0:27 Sequence 0:27 Function Call: bar( ( global void) 0:28 Test condition and select ( temp void) 0:28 Condition 0:28 Compare Less Than ( temp bool) 0:28 'd' ( uniform float) 0:28 Constant: 0:28 4.200000 0:28 true case 0:29 Branch: Return with expression 0:29 Constant: 0:29 1.200000 0:28 false case 0:31 Branch: Return with expression 0:31 Constant: 0:31 4.500000 0:34 Function Definition: foo(vf4; ( global float) 0:34 Function Parameters: 0:34 'bar' ( in 4-component vector of float) 0:36 Sequence 0:36 Branch: Return with expression 0:36 add ( temp float) 0:36 direct index ( temp float) 0:36 'bar' ( in 4-component vector of float) 0:36 Constant: 0:36 0 (const int) 0:36 direct index ( temp float) 0:36 'bar' ( in 4-component vector of float) 0:36 Constant: 0:36 1 (const int) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) Linked fragment stage: Shader version: 110 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'color' ( temp 4-component vector of float) 0:13 Construct vec4 ( temp 4-component vector of float) 0:13 Function Call: foo(vf4; ( global float) 0:13 'BaseColor' ( smooth in 4-component vector of float) 0:15 Function Call: bar( ( global void) 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'f' ( temp float) 0:16 Function Call: unreachableReturn( ( global float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:18 vector-scale ( temp 4-component vector of float) 0:18 'color' ( temp 4-component vector of float) 0:18 'f' ( temp float) 0:21 Function Definition: bar( ( global void) 0:21 Function Parameters: 0:25 Function Definition: unreachableReturn( ( global float) 0:25 Function Parameters: 0:27 Sequence 0:27 Function Call: bar( ( global void) 0:28 Test condition and select ( temp void) 0:28 Condition 0:28 Compare Less Than ( temp bool) 0:28 'd' ( uniform float) 0:28 Constant: 0:28 4.200000 0:28 true case 0:29 Branch: Return with expression 0:29 Constant: 0:29 1.200000 0:28 false case 0:31 Branch: Return with expression 0:31 Constant: 0:31 4.500000 0:34 Function Definition: foo(vf4; ( global float) 0:34 Function Parameters: 0:34 'bar' ( in 4-component vector of float) 0:36 Sequence 0:36 Branch: Return with expression 0:36 add ( temp float) 0:36 direct index ( temp float) 0:36 'bar' ( in 4-component vector of float) 0:36 Constant: 0:36 0 (const int) 0:36 direct index ( temp float) 0:36 'bar' ( in 4-component vector of float) 0:36 Constant: 0:36 1 (const int) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) glslang-16.0.0/Test/baseResults/functionCall.frag.out000066400000000000000000000151771506534232700225520ustar00rootroot00000000000000functionCall.frag WARNING: 0:4: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 'h' ( global float) 0:7 Constant: 0:7 0.000000 0:9 Function Definition: foo(vf4; ( global float) 0:9 Function Parameters: 0:9 'bar' ( in 4-component vector of float) 0:11 Sequence 0:11 Branch: Return with expression 0:11 add ( temp float) 0:11 direct index ( temp float) 0:11 'bar' ( in 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp float) 0:11 'bar' ( in 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:14 Function Definition: bar( ( global void) 0:14 Function Parameters: 0:18 Function Definition: unreachableReturn( ( global float) 0:18 Function Parameters: 0:20 Sequence 0:20 Test condition and select ( temp void) 0:20 Condition 0:20 Compare Less Than ( temp bool) 0:20 'd' ( uniform float) 0:20 Constant: 0:20 4.200000 0:20 true case 0:21 Branch: Return with expression 0:21 Constant: 0:21 1.200000 0:20 false case 0:23 Branch: Return with expression 0:23 Constant: 0:23 4.500000 0:27 Function Definition: missingReturn( ( global float) 0:27 Function Parameters: 0:29 Sequence 0:29 Test condition and select ( temp void) 0:29 Condition 0:29 Compare Less Than ( temp bool) 0:29 'd' ( uniform float) 0:29 Constant: 0:29 4.500000 0:29 true case 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'h' ( global float) 0:30 'd' ( uniform float) 0:31 Branch: Return with expression 0:31 Constant: 0:31 3.900000 0:35 Function Definition: main( ( global void) 0:35 Function Parameters: 0:37 Sequence 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of float) 0:37 'color' ( temp 4-component vector of float) 0:37 Construct vec4 ( temp 4-component vector of float) 0:37 Function Call: foo(vf4; ( global float) 0:37 'BaseColor' ( smooth in 4-component vector of float) 0:39 Function Call: bar( ( global void) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'f' ( temp float) 0:40 Function Call: unreachableReturn( ( global float) 0:41 Sequence 0:41 move second child to first child ( temp float) 0:41 'g' ( temp float) 0:41 Function Call: missingReturn( ( global float) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:43 vector-scale ( temp 4-component vector of float) 0:43 vector-scale ( temp 4-component vector of float) 0:43 'color' ( temp 4-component vector of float) 0:43 'f' ( temp float) 0:43 'h' ( global float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) 0:? 'h' ( global float) Linked fragment stage: Shader version: 130 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 'h' ( global float) 0:7 Constant: 0:7 0.000000 0:9 Function Definition: foo(vf4; ( global float) 0:9 Function Parameters: 0:9 'bar' ( in 4-component vector of float) 0:11 Sequence 0:11 Branch: Return with expression 0:11 add ( temp float) 0:11 direct index ( temp float) 0:11 'bar' ( in 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp float) 0:11 'bar' ( in 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:14 Function Definition: bar( ( global void) 0:14 Function Parameters: 0:18 Function Definition: unreachableReturn( ( global float) 0:18 Function Parameters: 0:20 Sequence 0:20 Test condition and select ( temp void) 0:20 Condition 0:20 Compare Less Than ( temp bool) 0:20 'd' ( uniform float) 0:20 Constant: 0:20 4.200000 0:20 true case 0:21 Branch: Return with expression 0:21 Constant: 0:21 1.200000 0:20 false case 0:23 Branch: Return with expression 0:23 Constant: 0:23 4.500000 0:27 Function Definition: missingReturn( ( global float) 0:27 Function Parameters: 0:29 Sequence 0:29 Test condition and select ( temp void) 0:29 Condition 0:29 Compare Less Than ( temp bool) 0:29 'd' ( uniform float) 0:29 Constant: 0:29 4.500000 0:29 true case 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'h' ( global float) 0:30 'd' ( uniform float) 0:31 Branch: Return with expression 0:31 Constant: 0:31 3.900000 0:35 Function Definition: main( ( global void) 0:35 Function Parameters: 0:37 Sequence 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of float) 0:37 'color' ( temp 4-component vector of float) 0:37 Construct vec4 ( temp 4-component vector of float) 0:37 Function Call: foo(vf4; ( global float) 0:37 'BaseColor' ( smooth in 4-component vector of float) 0:39 Function Call: bar( ( global void) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'f' ( temp float) 0:40 Function Call: unreachableReturn( ( global float) 0:41 Sequence 0:41 move second child to first child ( temp float) 0:41 'g' ( temp float) 0:41 Function Call: missingReturn( ( global float) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:43 vector-scale ( temp 4-component vector of float) 0:43 vector-scale ( temp 4-component vector of float) 0:43 'color' ( temp 4-component vector of float) 0:43 'f' ( temp float) 0:43 'h' ( global float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) 0:? 'h' ( global float) glslang-16.0.0/Test/baseResults/functionSemantics.frag.out000066400000000000000000000353051506534232700236200ustar00rootroot00000000000000functionSemantics.frag ERROR: 0:74: 'return' : cannot convert return value to function return type WARNING: 0:74: 'return' : type conversion on return values was not explicitly allowed until version 420 ERROR: 1 compilation errors. No code generated. Shader version: 400 ERROR: node is still EOpNull! 0:5 Function Definition: foo(i1;i1;i1;i1;i1;i1; ( global int) 0:5 Function Parameters: 0:5 'a' ( in int) 0:5 'b' ( const (read only) int) 0:5 'c' ( in int) 0:5 'd' ( const (read only) int) 0:5 'e' ( out int) 0:5 'f' ( inout int) 0:7 Sequence 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'sum' ( temp int) 0:7 add ( temp int) 0:7 add ( temp int) 0:7 add ( temp int) 0:7 add ( temp int) 0:7 'a' ( in int) 0:7 'b' ( const (read only) int) 0:7 'c' ( in int) 0:7 'd' ( const (read only) int) 0:7 'f' ( inout int) 0:10 multiply second child into first child ( temp int) 0:10 'a' ( in int) 0:10 Constant: 0:10 64 (const int) 0:12 multiply second child into first child ( temp int) 0:12 'c' ( in int) 0:12 Constant: 0:12 64 (const int) 0:14 move second child to first child ( temp int) 0:14 'e' ( out int) 0:14 Constant: 0:14 1024 (const int) 0:15 multiply second child into first child ( temp int) 0:15 'f' ( inout int) 0:15 Constant: 0:15 64 (const int) 0:17 add second child into first child ( temp int) 0:17 'sum' ( temp int) 0:17 add ( temp int) 0:17 add ( temp int) 0:17 add ( temp int) 0:17 add ( temp int) 0:17 add ( temp int) 0:17 'a' ( in int) 0:17 component-wise multiply ( temp int) 0:17 Constant: 0:17 64 (const int) 0:17 'b' ( const (read only) int) 0:17 'c' ( in int) 0:17 component-wise multiply ( temp int) 0:17 Constant: 0:17 64 (const int) 0:17 'd' ( const (read only) int) 0:17 'e' ( out int) 0:17 'f' ( inout int) 0:20 Branch: Return with expression 0:20 'sum' ( temp int) 0:23 Function Definition: foo2(f1;vf3;i1; ( global int) 0:23 Function Parameters: 0:23 'a' ( in float) 0:23 'b' ( in 3-component vector of float) 0:23 'r' ( out int) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'r' ( out int) 0:25 Convert float to int ( temp int) 0:25 component-wise multiply ( temp float) 0:25 Constant: 0:25 3.000000 0:25 'a' ( in float) 0:26 Branch: Return with expression 0:26 Convert float to int ( temp int) 0:26 component-wise multiply ( temp float) 0:26 Constant: 0:26 5.000000 0:26 direct index ( temp float) 0:26 'b' ( in 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:29 Function Definition: foo3( ( global int) 0:29 Function Parameters: 0:31 Sequence 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Compare Greater Than ( temp bool) 0:31 'u' ( uniform float) 0:31 Constant: 0:31 3.200000 0:31 true case 0:32 Sequence 0:32 Branch: Kill 0:33 Branch: Return with expression 0:33 Constant: 0:33 1000000 (const int) 0:36 Branch: Return with expression 0:36 Constant: 0:36 2000000 (const int) 0:39 Function Definition: main( ( global void) 0:39 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp int) 0:42 't' ( temp int) 0:42 Constant: 0:42 2 (const int) 0:46 move second child to first child ( temp int) 0:46 direct index ( temp int) 0:46 t: direct index for structure ( temp 4-component vector of int) 0:46 'f' ( temp structure{ temp 4-component vector of int t}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 32 (const int) 0:49 Sequence 0:49 move second child to first child ( temp int) 0:49 'color' ( temp int) 0:49 Function Call: foo(i1;i1;i1;i1;i1;i1; ( global int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 add ( temp int) 0:49 't' ( temp int) 0:49 't' ( temp int) 0:49 Constant: 0:49 8 (const int) 0:49 'e' ( temp int) 0:49 direct index ( temp int) 0:49 t: direct index for structure ( temp 4-component vector of int) 0:49 'f' ( temp structure{ temp 4-component vector of int t}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:51 add second child into first child ( temp int) 0:51 'color' ( temp int) 0:51 component-wise multiply ( temp int) 0:51 Constant: 0:51 128 (const int) 0:51 add ( temp int) 0:51 'e' ( temp int) 0:51 direct index ( temp int) 0:51 t: direct index for structure ( temp 4-component vector of int) 0:51 'f' ( temp structure{ temp 4-component vector of int t}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:57 move second child to first child ( temp float) 0:57 'ret' ( temp float) 0:57 Convert int to float ( temp float) 0:57 Comma ( global int) 0:57 move second child to first child ( temp int) 0:57 'tempReturn' ( global int) 0:57 Function Call: foo2(f1;vf3;i1; ( global int) 0:57 Constant: 0:57 4.000000 0:57 Constant: 0:57 1.000000 0:57 2.000000 0:57 3.000000 0:57 'tempArg' ( temp int) 0:57 move second child to first child ( temp float) 0:57 'arg' ( temp float) 0:57 Convert int to float ( temp float) 0:57 'tempArg' ( temp int) 0:57 'tempReturn' ( global int) 0:58 add second child into first child ( temp int) 0:58 'color' ( temp int) 0:58 Convert float to int ( temp int) 0:58 add ( temp float) 0:58 'ret' ( temp float) 0:58 'arg' ( temp float) 0:60 add second child into first child ( temp int) 0:60 'color' ( temp int) 0:60 Function Call: foo3( ( global int) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:62 Construct vec4 ( temp 4-component vector of float) 0:62 Convert int to float ( temp float) 0:62 'color' ( temp int) 0:66 Function Definition: aggCall( ( global void) 0:66 Function Parameters: 0:? Sequence 0:69 Function Call: m(vf2; ( global 3-component vector of float) 0:69 Convert int to float ( temp 2-component vector of float) 0:69 Construct ivec2 ( temp 2-component vector of int) 0:69 Convert float to int ( temp int) 0:69 'F' ( temp float) 0:72 Function Definition: badConv( ( global 4-component vector of float) 0:72 Function Parameters: 0:74 Sequence 0:74 Branch: Return with expression 0:74 'u' ( uniform float) 0:? Linker Objects 0:? 'u' ( uniform float) Linked fragment stage: Shader version: 400 ERROR: node is still EOpNull! 0:5 Function Definition: foo(i1;i1;i1;i1;i1;i1; ( global int) 0:5 Function Parameters: 0:5 'a' ( in int) 0:5 'b' ( const (read only) int) 0:5 'c' ( in int) 0:5 'd' ( const (read only) int) 0:5 'e' ( out int) 0:5 'f' ( inout int) 0:7 Sequence 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'sum' ( temp int) 0:7 add ( temp int) 0:7 add ( temp int) 0:7 add ( temp int) 0:7 add ( temp int) 0:7 'a' ( in int) 0:7 'b' ( const (read only) int) 0:7 'c' ( in int) 0:7 'd' ( const (read only) int) 0:7 'f' ( inout int) 0:10 multiply second child into first child ( temp int) 0:10 'a' ( in int) 0:10 Constant: 0:10 64 (const int) 0:12 multiply second child into first child ( temp int) 0:12 'c' ( in int) 0:12 Constant: 0:12 64 (const int) 0:14 move second child to first child ( temp int) 0:14 'e' ( out int) 0:14 Constant: 0:14 1024 (const int) 0:15 multiply second child into first child ( temp int) 0:15 'f' ( inout int) 0:15 Constant: 0:15 64 (const int) 0:17 add second child into first child ( temp int) 0:17 'sum' ( temp int) 0:17 add ( temp int) 0:17 add ( temp int) 0:17 add ( temp int) 0:17 add ( temp int) 0:17 add ( temp int) 0:17 'a' ( in int) 0:17 component-wise multiply ( temp int) 0:17 Constant: 0:17 64 (const int) 0:17 'b' ( const (read only) int) 0:17 'c' ( in int) 0:17 component-wise multiply ( temp int) 0:17 Constant: 0:17 64 (const int) 0:17 'd' ( const (read only) int) 0:17 'e' ( out int) 0:17 'f' ( inout int) 0:20 Branch: Return with expression 0:20 'sum' ( temp int) 0:23 Function Definition: foo2(f1;vf3;i1; ( global int) 0:23 Function Parameters: 0:23 'a' ( in float) 0:23 'b' ( in 3-component vector of float) 0:23 'r' ( out int) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'r' ( out int) 0:25 Convert float to int ( temp int) 0:25 component-wise multiply ( temp float) 0:25 Constant: 0:25 3.000000 0:25 'a' ( in float) 0:26 Branch: Return with expression 0:26 Convert float to int ( temp int) 0:26 component-wise multiply ( temp float) 0:26 Constant: 0:26 5.000000 0:26 direct index ( temp float) 0:26 'b' ( in 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:29 Function Definition: foo3( ( global int) 0:29 Function Parameters: 0:31 Sequence 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Compare Greater Than ( temp bool) 0:31 'u' ( uniform float) 0:31 Constant: 0:31 3.200000 0:31 true case 0:32 Sequence 0:32 Branch: Kill 0:33 Branch: Return with expression 0:33 Constant: 0:33 1000000 (const int) 0:36 Branch: Return with expression 0:36 Constant: 0:36 2000000 (const int) 0:39 Function Definition: main( ( global void) 0:39 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp int) 0:42 't' ( temp int) 0:42 Constant: 0:42 2 (const int) 0:46 move second child to first child ( temp int) 0:46 direct index ( temp int) 0:46 t: direct index for structure ( temp 4-component vector of int) 0:46 'f' ( temp structure{ temp 4-component vector of int t}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 32 (const int) 0:49 Sequence 0:49 move second child to first child ( temp int) 0:49 'color' ( temp int) 0:49 Function Call: foo(i1;i1;i1;i1;i1;i1; ( global int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 add ( temp int) 0:49 't' ( temp int) 0:49 't' ( temp int) 0:49 Constant: 0:49 8 (const int) 0:49 'e' ( temp int) 0:49 direct index ( temp int) 0:49 t: direct index for structure ( temp 4-component vector of int) 0:49 'f' ( temp structure{ temp 4-component vector of int t}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:51 add second child into first child ( temp int) 0:51 'color' ( temp int) 0:51 component-wise multiply ( temp int) 0:51 Constant: 0:51 128 (const int) 0:51 add ( temp int) 0:51 'e' ( temp int) 0:51 direct index ( temp int) 0:51 t: direct index for structure ( temp 4-component vector of int) 0:51 'f' ( temp structure{ temp 4-component vector of int t}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:57 move second child to first child ( temp float) 0:57 'ret' ( temp float) 0:57 Convert int to float ( temp float) 0:57 Comma ( global int) 0:57 move second child to first child ( temp int) 0:57 'tempReturn' ( global int) 0:57 Function Call: foo2(f1;vf3;i1; ( global int) 0:57 Constant: 0:57 4.000000 0:57 Constant: 0:57 1.000000 0:57 2.000000 0:57 3.000000 0:57 'tempArg' ( temp int) 0:57 move second child to first child ( temp float) 0:57 'arg' ( temp float) 0:57 Convert int to float ( temp float) 0:57 'tempArg' ( temp int) 0:57 'tempReturn' ( global int) 0:58 add second child into first child ( temp int) 0:58 'color' ( temp int) 0:58 Convert float to int ( temp int) 0:58 add ( temp float) 0:58 'ret' ( temp float) 0:58 'arg' ( temp float) 0:60 add second child into first child ( temp int) 0:60 'color' ( temp int) 0:60 Function Call: foo3( ( global int) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:62 Construct vec4 ( temp 4-component vector of float) 0:62 Convert int to float ( temp float) 0:62 'color' ( temp int) 0:? Linker Objects 0:? 'u' ( uniform float) glslang-16.0.0/Test/baseResults/gl_FragCoord.frag.out000066400000000000000000000245061506534232700224550ustar00rootroot00000000000000gl_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 glslang-16.0.0/Test/baseResults/gl_samplemask_array_size.frag.out000066400000000000000000000056321506534232700251730ustar00rootroot00000000000000gl_samplemask_array_size.frag Shader version: 320 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp mediump int) 0:6 'i' ( temp mediump int) 0:6 Constant: 0:6 0 (const int) 0:6 Loop with condition tested first 0:6 Loop Condition 0:6 Compare Less Than ( temp bool) 0:6 'i' ( temp mediump int) 0:6 Constant: 0:6 1 (const int) 0:6 Loop Body 0:7 move second child to first child ( temp highp int) 0:7 indirect index ( temp highp int SampleMaskIn) 0:7 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) 0:7 'i' ( temp mediump int) 0:7 Constant: 0:7 -1431655766 (const int) 0:6 Loop Terminal Expression 0:6 Pre-Increment ( temp mediump int) 0:6 'i' ( temp mediump int) 0:9 move second child to first child ( temp mediump 4-component vector of float) 0:9 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:9 Constant: 0:9 0.000000 0:9 1.000000 0:9 0.000000 0:9 1.000000 0:? Linker Objects 0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:? 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) Linked fragment stage: Shader version: 320 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp mediump int) 0:6 'i' ( temp mediump int) 0:6 Constant: 0:6 0 (const int) 0:6 Loop with condition tested first 0:6 Loop Condition 0:6 Compare Less Than ( temp bool) 0:6 'i' ( temp mediump int) 0:6 Constant: 0:6 1 (const int) 0:6 Loop Body 0:7 move second child to first child ( temp highp int) 0:7 indirect index ( temp highp int SampleMaskIn) 0:7 'gl_SampleMask' ( out 1-element array of highp int SampleMaskIn) 0:7 'i' ( temp mediump int) 0:7 Constant: 0:7 -1431655766 (const int) 0:6 Loop Terminal Expression 0:6 Pre-Increment ( temp mediump int) 0:6 'i' ( temp mediump int) 0:9 move second child to first child ( temp mediump 4-component vector of float) 0:9 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:9 Constant: 0:9 0.000000 0:9 1.000000 0:9 0.000000 0:9 1.000000 0:? Linker Objects 0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:? 'gl_SampleMask' ( out 1-element array of highp int SampleMaskIn) glslang-16.0.0/Test/baseResults/gl_samplemask_array_size_32.frag.out000066400000000000000000000027231506534232700254750ustar00rootroot00000000000000gl_samplemask_array_size.frag Shader version: 320 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp mediump int) 0:6 'i' ( temp mediump int) 0:6 Constant: 0:6 0 (const int) 0:6 Loop with condition tested first 0:6 Loop Condition 0:6 Compare Less Than ( temp bool) 0:6 'i' ( temp mediump int) 0:6 Constant: 0:6 1 (const int) 0:6 Loop Body 0:7 move second child to first child ( temp highp int) 0:7 indirect index ( temp highp int SampleMaskIn) 0:7 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) 0:7 'i' ( temp mediump int) 0:7 Constant: 0:7 -1431655766 (const int) 0:6 Loop Terminal Expression 0:6 Pre-Increment ( temp mediump int) 0:6 'i' ( temp mediump int) 0:9 move second child to first child ( temp mediump 4-component vector of float) 0:9 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:9 Constant: 0:9 0.000000 0:9 1.000000 0:9 0.000000 0:9 1.000000 0:? Linker Objects 0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:? 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) glslang-16.0.0/Test/baseResults/gl_samplemask_array_size_64.frag.out000066400000000000000000000027231506534232700255020ustar00rootroot00000000000000gl_samplemask_array_size.frag Shader version: 320 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp mediump int) 0:6 'i' ( temp mediump int) 0:6 Constant: 0:6 0 (const int) 0:6 Loop with condition tested first 0:6 Loop Condition 0:6 Compare Less Than ( temp bool) 0:6 'i' ( temp mediump int) 0:6 Constant: 0:6 2 (const int) 0:6 Loop Body 0:7 move second child to first child ( temp highp int) 0:7 indirect index ( temp highp int SampleMaskIn) 0:7 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) 0:7 'i' ( temp mediump int) 0:7 Constant: 0:7 -1431655766 (const int) 0:6 Loop Terminal Expression 0:6 Pre-Increment ( temp mediump int) 0:6 'i' ( temp mediump int) 0:9 move second child to first child ( temp mediump 4-component vector of float) 0:9 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:9 Constant: 0:9 0.000000 0:9 1.000000 0:9 0.000000 0:9 1.000000 0:? Linker Objects 0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:? 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) glslang-16.0.0/Test/baseResults/glsl.-D-U.frag.out000066400000000000000000000041051506534232700215200ustar00rootroot00000000000000glsl.-D-U.frag Shader version: 450 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 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 Constant: 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:16 Post-Increment ( temp 4-component vector of float) 0:16 'color' (layout( location=0) out 4-component vector of float) 0:24 vector scale second child into first child ( temp 4-component vector of float) 0:24 'color' (layout( location=0) out 4-component vector of float) 0:24 Constant: 0:24 3.000000 0:28 vector scale second child into first child ( temp 4-component vector of float) 0:28 'color' (layout( location=0) out 4-component vector of float) 0:28 Constant: 0:28 400.000000 0:? Linker Objects 0:? 'color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 450 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 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 Constant: 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:16 Post-Increment ( temp 4-component vector of float) 0:16 'color' (layout( location=0) out 4-component vector of float) 0:24 vector scale second child into first child ( temp 4-component vector of float) 0:24 'color' (layout( location=0) out 4-component vector of float) 0:24 Constant: 0:24 3.000000 0:28 vector scale second child into first child ( temp 4-component vector of float) 0:28 'color' (layout( location=0) out 4-component vector of float) 0:28 Constant: 0:28 400.000000 0:? Linker Objects 0:? 'color' (layout( location=0) out 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.-P.frag.out000066400000000000000000000017611506534232700213370ustar00rootroot00000000000000glsl.-P.frag Shader version: 450 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:19 'color' (layout( location=0) out 4-component vector of float) 0:19 Constant: 0:19 1.000000 0:19 1.000000 0:19 1.000000 0:19 1.000000 0:? Linker Objects 0:? 'color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 450 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:19 'color' (layout( location=0) out 4-component vector of float) 0:19 Constant: 0:19 1.000000 0:19 1.000000 0:19 1.000000 0:19 1.000000 0:? Linker Objects 0:? 'color' (layout( location=0) out 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.-P.function.frag.out000066400000000000000000000027161506534232700231640ustar00rootroot00000000000000glsl.-P.function.frag Shader version: 450 0:? Sequence -1:1 Function Definition: getColor( ( global 4-component vector of float) -1:1 Function Parameters: -1:1 Sequence -1:1 Branch: Return with expression -1:1 Constant: -1:1 1.000000 -1:1 1.000000 -1:1 1.000000 -1:1 1.000000 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'color' (layout( location=0) out 4-component vector of float) 0:7 Function Call: getColor( ( global 4-component vector of float) 0:? Linker Objects 0:? 'color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 450 0:? Sequence -1:1 Function Definition: getColor( ( global 4-component vector of float) -1:1 Function Parameters: -1:1 Sequence -1:1 Branch: Return with expression -1:1 Constant: -1:1 1.000000 -1:1 1.000000 -1:1 1.000000 -1:1 1.000000 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'color' (layout( location=0) out 4-component vector of float) 0:7 Function Call: getColor( ( global 4-component vector of float) 0:? Linker Objects 0:? 'color' (layout( location=0) out 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.-P.include.frag.out000066400000000000000000000031411506534232700227530ustar00rootroot00000000000000glsl.-P.include.frag Shader version: 450 Requested GL_GOOGLE_cpp_style_line_directive Requested GL_GOOGLE_include_directive 0:? Sequence 0:1 Function Definition: getColor( ( global 4-component vector of float) 0:1 Function Parameters: 0:3 Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 1.000000 0:3 1.000000 0:3 1.000000 0:3 1.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'color' (layout( location=0) out 4-component vector of float) 0:9 Function Call: getColor( ( global 4-component vector of float) 0:? Linker Objects 0:? 'color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 450 Requested GL_GOOGLE_cpp_style_line_directive Requested GL_GOOGLE_include_directive 0:? Sequence 0:1 Function Definition: getColor( ( global 4-component vector of float) 0:1 Function Parameters: 0:3 Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 1.000000 0:3 1.000000 0:3 1.000000 0:3 1.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'color' (layout( location=0) out 4-component vector of float) 0:9 Function Call: getColor( ( global 4-component vector of float) 0:? Linker Objects 0:? 'color' (layout( location=0) out 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.140.layoutOffset.error.vert.out000066400000000000000000000046361506534232700252470ustar00rootroot00000000000000glsl.140.layoutOffset.error.vert ERROR: 0:5: 'offset' : not supported with this profile: none ERROR: 0:5: '"offset" on block member' : not supported for this version or the enabled extensions ERROR: 2 compilation errors. No code generated. Shader version: 140 ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'out_vs' ( smooth out 4-component vector of float) 0:13 add ( temp 4-component vector of float) 0:13 'in_vs' ( in 4-component vector of float) 0:13 a: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:13 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a}) 0:13 Constant: 0:13 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a}) 0:? 'in_vs' ( in 4-component vector of float) 0:? 'out_vs' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 140 ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'out_vs' ( smooth out 4-component vector of float) 0:13 add ( temp 4-component vector of float) 0:13 'in_vs' ( in 4-component vector of float) 0:13 a: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:13 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a}) 0:13 Constant: 0:13 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a}) 0:? 'in_vs' ( in 4-component vector of float) 0:? 'out_vs' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/glsl.430.layoutOffset.error.vert.out000066400000000000000000000045411506534232700252440ustar00rootroot00000000000000glsl.430.layoutOffset.error.vert ERROR: 0:5: '"offset" on block member' : not supported for this version or the enabled extensions ERROR: 1 compilation errors. No code generated. Shader version: 430 ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'out_vs' ( smooth out 4-component vector of float) 0:13 add ( temp 4-component vector of float) 0:13 'in_vs' ( in 4-component vector of float) 0:13 a: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:13 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a}) 0:13 Constant: 0:13 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a}) 0:? 'in_vs' ( in 4-component vector of float) 0:? 'out_vs' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 430 ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'out_vs' ( smooth out 4-component vector of float) 0:13 add ( temp 4-component vector of float) 0:13 'in_vs' ( in 4-component vector of float) 0:13 a: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:13 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a}) 0:13 Constant: 0:13 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float a}) 0:? 'in_vs' ( in 4-component vector of float) 0:? 'out_vs' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/glsl.450.subgroup.frag.out000066400000000000000000001134321506534232700232370ustar00rootroot00000000000000glsl.450.subgroup.frag 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' : undeclared identifier ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 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: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:124: 'id' : argument must be compile-time constant ERROR: 0:199: 'id' : argument must be compile-time constant ERROR: 0:236: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:237: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:238: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:239: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 92 compilation errors. No code generated. Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned 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' ( flat in uint SubgroupSize) 0:7 'gl_SubgroupInvocationID' ( flat 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' ( temp float) 0:14 'gl_SubgroupID' ( temp float) 0:15 Constant: 0:15 0.000000 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' ( flat in 4-component vector of uint SubgroupEqMask) 0:22 'gl_SubgroupGeMask' ( flat in 4-component vector of uint SubgroupGeMask) 0:23 'gl_SubgroupGtMask' ( flat in 4-component vector of uint SubgroupGtMask) 0:24 'gl_SubgroupLeMask' ( flat in 4-component vector of uint SubgroupLeMask) 0:25 'gl_SubgroupLtMask' ( flat 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 Sequence 0:77 move second child to first child ( temp 4-component vector of uint) 0:77 'parti' ( temp 4-component vector of uint) 0:77 subgroupPartitionNV ( global 4-component vector of uint) 0:77 'f4' ( in 4-component vector of float) 0:78 subgroupPartitionedAddNV ( global 4-component vector of float) 0:78 'f4' ( in 4-component vector of float) 0:78 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionedMulNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMinNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:82 'ballot' ( temp 4-component vector of uint) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:85 'f4' ( in 4-component vector of float) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:89 'ballot' ( temp 4-component vector of uint) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:92 'f4' ( in 4-component vector of float) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:96 'ballot' ( temp 4-component vector of uint) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:100 Branch: Return with expression 0:100 'result' ( temp 4-component vector of float) 0:105 Function Definition: main( ( global void) 0:105 Function Parameters: 0:107 Sequence 0:107 move second child to first child ( temp 4-component vector of uint) 0:107 'data' (layout( location=0) out 4-component vector of uint) 0:107 Construct uvec4 ( temp 4-component vector of uint) 0:107 'gl_SubgroupSize' ( flat in uint SubgroupSize) 0:107 'gl_SubgroupInvocationID' ( flat in uint SubgroupInvocationID) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 0 (const uint) 0:108 subgroupBarrier ( global void) 0:109 subgroupMemoryBarrier ( global void) 0:110 subgroupMemoryBarrierBuffer ( global void) 0:111 subgroupMemoryBarrierImage ( global void) 0:112 subgroupElect ( global bool) 0:116 Function Definition: ballot_works(vf4; ( global void) 0:116 Function Parameters: 0:116 'f4' ( in 4-component vector of float) 0:? Sequence 0:118 'gl_SubgroupEqMask' ( flat in 4-component vector of uint SubgroupEqMask) 0:119 'gl_SubgroupGeMask' ( flat in 4-component vector of uint SubgroupGeMask) 0:120 'gl_SubgroupGtMask' ( flat in 4-component vector of uint SubgroupGtMask) 0:121 'gl_SubgroupLeMask' ( flat in 4-component vector of uint SubgroupLeMask) 0:122 'gl_SubgroupLtMask' ( flat in 4-component vector of uint SubgroupLtMask) 0:123 subgroupBroadcast ( global 4-component vector of float) 0:123 'f4' ( in 4-component vector of float) 0:123 Constant: 0:123 0 (const uint) 0:124 subgroupBroadcast ( global 4-component vector of float) 0:124 'f4' ( in 4-component vector of float) 0:124 Convert int to uint ( temp uint) 0:124 'i' ( temp int) 0:125 subgroupBroadcastFirst ( global 4-component vector of float) 0:125 'f4' ( in 4-component vector of float) 0:126 Sequence 0:126 move second child to first child ( temp 4-component vector of uint) 0:126 'ballot' ( temp 4-component vector of uint) 0:126 subgroupBallot ( global 4-component vector of uint) 0:126 Constant: 0:126 false (const bool) 0:127 subgroupInverseBallot ( global bool) 0:127 Constant: 0:127 1 (const uint) 0:127 1 (const uint) 0:127 1 (const uint) 0:127 1 (const uint) 0:128 subgroupBallotBitExtract ( global bool) 0:128 'ballot' ( temp 4-component vector of uint) 0:128 Constant: 0:128 0 (const uint) 0:129 subgroupBallotBitCount ( global uint) 0:129 'ballot' ( temp 4-component vector of uint) 0:130 subgroupBallotInclusiveBitCount ( global uint) 0:130 'ballot' ( temp 4-component vector of uint) 0:131 subgroupBallotExclusiveBitCount ( global uint) 0:131 'ballot' ( temp 4-component vector of uint) 0:132 subgroupBallotFindLSB ( global uint) 0:132 'ballot' ( temp 4-component vector of uint) 0:133 subgroupBallotFindMSB ( global uint) 0:133 'ballot' ( temp 4-component vector of uint) 0:137 Function Definition: vote_works(vf4; ( global void) 0:137 Function Parameters: 0:137 'f4' ( in 4-component vector of float) 0:139 Sequence 0:139 subgroupAll ( global bool) 0:139 Constant: 0:139 true (const bool) 0:140 subgroupAny ( global bool) 0:140 Constant: 0:140 false (const bool) 0:141 subgroupAllEqual ( global bool) 0:141 'f4' ( in 4-component vector of float) 0:146 Function Definition: shuffle_works(vf4; ( global void) 0:146 Function Parameters: 0:146 'f4' ( in 4-component vector of float) 0:148 Sequence 0:148 subgroupShuffle ( global 4-component vector of float) 0:148 'f4' ( in 4-component vector of float) 0:148 Constant: 0:148 0 (const uint) 0:149 subgroupShuffleXor ( global 4-component vector of float) 0:149 'f4' ( in 4-component vector of float) 0:149 Constant: 0:149 1 (const uint) 0:150 subgroupShuffleUp ( global 4-component vector of float) 0:150 'f4' ( in 4-component vector of float) 0:150 Constant: 0:150 1 (const uint) 0:151 subgroupShuffleDown ( global 4-component vector of float) 0:151 'f4' ( in 4-component vector of float) 0:151 Constant: 0:151 1 (const uint) 0:155 Function Definition: arith_works(vf4; ( global void) 0:155 Function Parameters: 0:155 'f4' ( in 4-component vector of float) 0:? Sequence 0:158 subgroupAdd ( global 4-component vector of float) 0:158 'f4' ( in 4-component vector of float) 0:159 subgroupMul ( global 4-component vector of float) 0:159 'f4' ( in 4-component vector of float) 0:160 subgroupMin ( global 4-component vector of float) 0:160 'f4' ( in 4-component vector of float) 0:161 subgroupMax ( global 4-component vector of float) 0:161 'f4' ( in 4-component vector of float) 0:162 subgroupAnd ( global 4-component vector of uint) 0:162 'ballot' ( temp 4-component vector of uint) 0:163 subgroupOr ( global 4-component vector of uint) 0:163 'ballot' ( temp 4-component vector of uint) 0:164 subgroupXor ( global 4-component vector of uint) 0:164 'ballot' ( temp 4-component vector of uint) 0:165 subgroupInclusiveAdd ( global 4-component vector of float) 0:165 'f4' ( in 4-component vector of float) 0:166 subgroupInclusiveMul ( global 4-component vector of float) 0:166 'f4' ( in 4-component vector of float) 0:167 subgroupInclusiveMin ( global 4-component vector of float) 0:167 'f4' ( in 4-component vector of float) 0:168 subgroupInclusiveMax ( global 4-component vector of float) 0:168 'f4' ( in 4-component vector of float) 0:169 subgroupInclusiveAnd ( global 4-component vector of uint) 0:169 'ballot' ( temp 4-component vector of uint) 0:170 subgroupInclusiveOr ( global 4-component vector of uint) 0:170 'ballot' ( temp 4-component vector of uint) 0:171 subgroupInclusiveXor ( global 4-component vector of uint) 0:171 'ballot' ( temp 4-component vector of uint) 0:172 subgroupExclusiveAdd ( global 4-component vector of float) 0:172 'f4' ( in 4-component vector of float) 0:173 subgroupExclusiveMul ( global 4-component vector of float) 0:173 'f4' ( in 4-component vector of float) 0:174 subgroupExclusiveMin ( global 4-component vector of float) 0:174 'f4' ( in 4-component vector of float) 0:175 subgroupExclusiveMax ( global 4-component vector of float) 0:175 'f4' ( in 4-component vector of float) 0:176 subgroupExclusiveAnd ( global 4-component vector of uint) 0:176 'ballot' ( temp 4-component vector of uint) 0:177 subgroupExclusiveOr ( global 4-component vector of uint) 0:177 'ballot' ( temp 4-component vector of uint) 0:178 subgroupExclusiveXor ( global 4-component vector of uint) 0:178 'ballot' ( temp 4-component vector of uint) 0:182 Function Definition: clustered_works(vf4; ( global void) 0:182 Function Parameters: 0:182 'f4' ( in 4-component vector of float) 0:184 Sequence 0:184 Sequence 0:184 move second child to first child ( temp 4-component vector of uint) 0:184 'ballot' ( temp 4-component vector of uint) 0:184 Constant: 0:184 85 (const uint) 0:184 0 (const uint) 0:184 0 (const uint) 0:184 0 (const uint) 0:185 subgroupClusteredAdd ( global 4-component vector of float) 0:185 'f4' ( in 4-component vector of float) 0:185 Constant: 0:185 2 (const uint) 0:186 subgroupClusteredMul ( global 4-component vector of float) 0:186 'f4' ( in 4-component vector of float) 0:186 Constant: 0:186 2 (const uint) 0:187 subgroupClusteredMin ( global 4-component vector of float) 0:187 'f4' ( in 4-component vector of float) 0:187 Constant: 0:187 2 (const uint) 0:188 subgroupClusteredMax ( global 4-component vector of float) 0:188 'f4' ( in 4-component vector of float) 0:188 Constant: 0:188 2 (const uint) 0:189 subgroupClusteredAnd ( global 4-component vector of uint) 0:189 'ballot' ( temp 4-component vector of uint) 0:189 Constant: 0:189 2 (const uint) 0:190 subgroupClusteredOr ( global 4-component vector of uint) 0:190 'ballot' ( temp 4-component vector of uint) 0:190 Constant: 0:190 2 (const uint) 0:191 subgroupClusteredXor ( global 4-component vector of uint) 0:191 'ballot' ( temp 4-component vector of uint) 0:191 Constant: 0:191 2 (const uint) 0:195 Function Definition: quad_works(vf4; ( global void) 0:195 Function Parameters: 0:195 'f4' ( in 4-component vector of float) 0:? Sequence 0:198 subgroupQuadBroadcast ( global 4-component vector of float) 0:198 'f4' ( in 4-component vector of float) 0:198 Constant: 0:198 0 (const uint) 0:199 subgroupQuadBroadcast ( global 4-component vector of float) 0:199 'f4' ( in 4-component vector of float) 0:199 Convert int to uint ( temp uint) 0:199 'i' ( temp int) 0:200 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:200 'f4' ( in 4-component vector of float) 0:201 subgroupQuadSwapVertical ( global 4-component vector of float) 0:201 'f4' ( in 4-component vector of float) 0:202 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:202 'f4' ( in 4-component vector of float) 0:206 Function Definition: partitioned_works(vf4; ( global void) 0:206 Function Parameters: 0:206 'f4' ( in 4-component vector of float) 0:208 Sequence 0:208 Sequence 0:208 move second child to first child ( temp 4-component vector of uint) 0:208 'parti' ( temp 4-component vector of uint) 0:208 subgroupPartitionNV ( global 4-component vector of uint) 0:208 'f4' ( in 4-component vector of float) 0:209 Sequence 0:209 move second child to first child ( temp 4-component vector of uint) 0:209 'ballot' ( temp 4-component vector of uint) 0:209 Constant: 0:209 85 (const uint) 0:209 0 (const uint) 0:209 0 (const uint) 0:209 0 (const uint) 0:210 subgroupPartitionedAddNV ( global 4-component vector of float) 0:210 'f4' ( in 4-component vector of float) 0:210 'parti' ( temp 4-component vector of uint) 0:211 subgroupPartitionedMulNV ( global 4-component vector of float) 0:211 'f4' ( in 4-component vector of float) 0:211 'parti' ( temp 4-component vector of uint) 0:212 subgroupPartitionedMinNV ( global 4-component vector of float) 0:212 'f4' ( in 4-component vector of float) 0:212 'parti' ( temp 4-component vector of uint) 0:213 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:213 'parti' ( temp 4-component vector of uint) 0:214 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:214 'ballot' ( temp 4-component vector of uint) 0:214 'parti' ( temp 4-component vector of uint) 0:215 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:215 'ballot' ( temp 4-component vector of uint) 0:215 'parti' ( temp 4-component vector of uint) 0:216 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:216 'ballot' ( temp 4-component vector of uint) 0:216 'parti' ( temp 4-component vector of uint) 0:217 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:217 'f4' ( in 4-component vector of float) 0:217 'parti' ( temp 4-component vector of uint) 0:218 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:218 'f4' ( in 4-component vector of float) 0:218 'parti' ( temp 4-component vector of uint) 0:219 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:219 'f4' ( in 4-component vector of float) 0:219 'parti' ( temp 4-component vector of uint) 0:220 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:220 'parti' ( temp 4-component vector of uint) 0:221 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:221 'ballot' ( temp 4-component vector of uint) 0:221 'parti' ( temp 4-component vector of uint) 0:222 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:222 'ballot' ( temp 4-component vector of uint) 0:222 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:223 'ballot' ( temp 4-component vector of uint) 0:223 'parti' ( temp 4-component vector of uint) 0:224 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:224 'f4' ( in 4-component vector of float) 0:224 'parti' ( temp 4-component vector of uint) 0:225 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:227 'f4' ( in 4-component vector of float) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:228 'ballot' ( temp 4-component vector of uint) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:229 'ballot' ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint) 0:234 Function Definition: sm_builtins_err( ( global void) 0:234 Function Parameters: 0:236 Sequence 0:236 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV) 0:237 'gl_SMCountNV' ( flat in uint SMCountNV) 0:238 'gl_WarpIDNV' ( flat in uint WarpIDNV) 0:239 'gl_SMIDNV' ( flat in uint SMIDNV) 0:246 Function Definition: sm_builtins( ( global void) 0:246 Function Parameters: 0:248 Sequence 0:248 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV) 0:249 'gl_SMCountNV' ( flat in uint SMCountNV) 0:250 'gl_WarpIDNV' ( flat in uint WarpIDNV) 0:251 'gl_SMIDNV' ( flat in uint SMIDNV) 0:? Linker Objects 0:? 'data' (layout( location=0) out 4-component vector of uint) Linked fragment stage: Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:105 Function Definition: main( ( global void) 0:105 Function Parameters: 0:107 Sequence 0:107 move second child to first child ( temp 4-component vector of uint) 0:107 'data' (layout( location=0) out 4-component vector of uint) 0:107 Construct uvec4 ( temp 4-component vector of uint) 0:107 'gl_SubgroupSize' ( flat in uint SubgroupSize) 0:107 'gl_SubgroupInvocationID' ( flat in uint SubgroupInvocationID) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 0 (const uint) 0:108 subgroupBarrier ( global void) 0:109 subgroupMemoryBarrier ( global void) 0:110 subgroupMemoryBarrierBuffer ( global void) 0:111 subgroupMemoryBarrierImage ( global void) 0:112 subgroupElect ( global bool) 0:? Linker Objects 0:? 'data' (layout( location=0) out 4-component vector of uint) glslang-16.0.0/Test/baseResults/glsl.450.subgroup.geom.out000066400000000000000000001147471506534232700232610ustar00rootroot00000000000000glsl.450.subgroup.geom 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' : undeclared identifier ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 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: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:238: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:239: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:240: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:241: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned invocations = -1 max_vertices = 1 input primitive = points output primitive = points 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' ( temp float) 0:14 'gl_SubgroupID' ( temp float) 0:15 Constant: 0:15 0.000000 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 Sequence 0:77 move second child to first child ( temp 4-component vector of uint) 0:77 'parti' ( temp 4-component vector of uint) 0:77 subgroupPartitionNV ( global 4-component vector of uint) 0:77 'f4' ( in 4-component vector of float) 0:78 subgroupPartitionedAddNV ( global 4-component vector of float) 0:78 'f4' ( in 4-component vector of float) 0:78 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionedMulNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMinNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:82 'ballot' ( temp 4-component vector of uint) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:85 'f4' ( in 4-component vector of float) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:89 'ballot' ( temp 4-component vector of uint) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:92 'f4' ( in 4-component vector of float) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:96 'ballot' ( temp 4-component vector of uint) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:100 Branch: Return with expression 0:100 'result' ( temp 4-component vector of float) 0:111 Function Definition: main( ( global void) 0:111 Function Parameters: 0:113 Sequence 0:113 move second child to first child ( temp 4-component vector of uint) 0:113 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) 0:113 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) 0:113 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:113 Constant: 0:113 0 (const uint) 0:113 'gl_PrimitiveIDIn' ( in int PrimitiveID) 0:113 Construct uvec4 ( temp 4-component vector of uint) 0:113 'gl_SubgroupSize' ( in uint SubgroupSize) 0:113 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:113 Constant: 0:113 0 (const uint) 0:113 Constant: 0:113 0 (const uint) 0:114 subgroupBarrier ( global void) 0:115 subgroupMemoryBarrier ( global void) 0:116 subgroupMemoryBarrierBuffer ( global void) 0:117 subgroupMemoryBarrierImage ( global void) 0:118 subgroupElect ( global bool) 0:122 Function Definition: ballot_works(vf4; ( global void) 0:122 Function Parameters: 0:122 'f4' ( in 4-component vector of float) 0:123 Sequence 0:123 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:124 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:125 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:126 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:127 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:128 subgroupBroadcast ( global 4-component vector of float) 0:128 'f4' ( in 4-component vector of float) 0:128 Constant: 0:128 0 (const uint) 0:129 subgroupBroadcastFirst ( global 4-component vector of float) 0:129 'f4' ( in 4-component vector of float) 0:130 Sequence 0:130 move second child to first child ( temp 4-component vector of uint) 0:130 'ballot' ( temp 4-component vector of uint) 0:130 subgroupBallot ( global 4-component vector of uint) 0:130 Constant: 0:130 false (const bool) 0:131 subgroupInverseBallot ( global bool) 0:131 Constant: 0:131 1 (const uint) 0:131 1 (const uint) 0:131 1 (const uint) 0:131 1 (const uint) 0:132 subgroupBallotBitExtract ( global bool) 0:132 'ballot' ( temp 4-component vector of uint) 0:132 Constant: 0:132 0 (const uint) 0:133 subgroupBallotBitCount ( global uint) 0:133 'ballot' ( temp 4-component vector of uint) 0:134 subgroupBallotInclusiveBitCount ( global uint) 0:134 'ballot' ( temp 4-component vector of uint) 0:135 subgroupBallotExclusiveBitCount ( global uint) 0:135 'ballot' ( temp 4-component vector of uint) 0:136 subgroupBallotFindLSB ( global uint) 0:136 'ballot' ( temp 4-component vector of uint) 0:137 subgroupBallotFindMSB ( global uint) 0:137 'ballot' ( temp 4-component vector of uint) 0:141 Function Definition: vote_works(vf4; ( global void) 0:141 Function Parameters: 0:141 'f4' ( in 4-component vector of float) 0:143 Sequence 0:143 subgroupAll ( global bool) 0:143 Constant: 0:143 true (const bool) 0:144 subgroupAny ( global bool) 0:144 Constant: 0:144 false (const bool) 0:145 subgroupAllEqual ( global bool) 0:145 'f4' ( in 4-component vector of float) 0:150 Function Definition: shuffle_works(vf4; ( global void) 0:150 Function Parameters: 0:150 'f4' ( in 4-component vector of float) 0:152 Sequence 0:152 subgroupShuffle ( global 4-component vector of float) 0:152 'f4' ( in 4-component vector of float) 0:152 Constant: 0:152 0 (const uint) 0:153 subgroupShuffleXor ( global 4-component vector of float) 0:153 'f4' ( in 4-component vector of float) 0:153 Constant: 0:153 1 (const uint) 0:154 subgroupShuffleUp ( global 4-component vector of float) 0:154 'f4' ( in 4-component vector of float) 0:154 Constant: 0:154 1 (const uint) 0:155 subgroupShuffleDown ( global 4-component vector of float) 0:155 'f4' ( in 4-component vector of float) 0:155 Constant: 0:155 1 (const uint) 0:159 Function Definition: arith_works(vf4; ( global void) 0:159 Function Parameters: 0:159 'f4' ( in 4-component vector of float) 0:? Sequence 0:162 subgroupAdd ( global 4-component vector of float) 0:162 'f4' ( in 4-component vector of float) 0:163 subgroupMul ( global 4-component vector of float) 0:163 'f4' ( in 4-component vector of float) 0:164 subgroupMin ( global 4-component vector of float) 0:164 'f4' ( in 4-component vector of float) 0:165 subgroupMax ( global 4-component vector of float) 0:165 'f4' ( in 4-component vector of float) 0:166 subgroupAnd ( global 4-component vector of uint) 0:166 'ballot' ( temp 4-component vector of uint) 0:167 subgroupOr ( global 4-component vector of uint) 0:167 'ballot' ( temp 4-component vector of uint) 0:168 subgroupXor ( global 4-component vector of uint) 0:168 'ballot' ( temp 4-component vector of uint) 0:169 subgroupInclusiveAdd ( global 4-component vector of float) 0:169 'f4' ( in 4-component vector of float) 0:170 subgroupInclusiveMul ( global 4-component vector of float) 0:170 'f4' ( in 4-component vector of float) 0:171 subgroupInclusiveMin ( global 4-component vector of float) 0:171 'f4' ( in 4-component vector of float) 0:172 subgroupInclusiveMax ( global 4-component vector of float) 0:172 'f4' ( in 4-component vector of float) 0:173 subgroupInclusiveAnd ( global 4-component vector of uint) 0:173 'ballot' ( temp 4-component vector of uint) 0:174 subgroupInclusiveOr ( global 4-component vector of uint) 0:174 'ballot' ( temp 4-component vector of uint) 0:175 subgroupInclusiveXor ( global 4-component vector of uint) 0:175 'ballot' ( temp 4-component vector of uint) 0:176 subgroupExclusiveAdd ( global 4-component vector of float) 0:176 'f4' ( in 4-component vector of float) 0:177 subgroupExclusiveMul ( global 4-component vector of float) 0:177 'f4' ( in 4-component vector of float) 0:178 subgroupExclusiveMin ( global 4-component vector of float) 0:178 'f4' ( in 4-component vector of float) 0:179 subgroupExclusiveMax ( global 4-component vector of float) 0:179 'f4' ( in 4-component vector of float) 0:180 subgroupExclusiveAnd ( global 4-component vector of uint) 0:180 'ballot' ( temp 4-component vector of uint) 0:181 subgroupExclusiveOr ( global 4-component vector of uint) 0:181 'ballot' ( temp 4-component vector of uint) 0:182 subgroupExclusiveXor ( global 4-component vector of uint) 0:182 'ballot' ( temp 4-component vector of uint) 0:186 Function Definition: clustered_works(vf4; ( global void) 0:186 Function Parameters: 0:186 'f4' ( in 4-component vector of float) 0:188 Sequence 0:188 Sequence 0:188 move second child to first child ( temp 4-component vector of uint) 0:188 'ballot' ( temp 4-component vector of uint) 0:188 Constant: 0:188 85 (const uint) 0:188 0 (const uint) 0:188 0 (const uint) 0:188 0 (const uint) 0:189 subgroupClusteredAdd ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:189 Constant: 0:189 2 (const uint) 0:190 subgroupClusteredMul ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:190 Constant: 0:190 2 (const uint) 0:191 subgroupClusteredMin ( global 4-component vector of float) 0:191 'f4' ( in 4-component vector of float) 0:191 Constant: 0:191 2 (const uint) 0:192 subgroupClusteredMax ( global 4-component vector of float) 0:192 'f4' ( in 4-component vector of float) 0:192 Constant: 0:192 2 (const uint) 0:193 subgroupClusteredAnd ( global 4-component vector of uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:193 Constant: 0:193 2 (const uint) 0:194 subgroupClusteredOr ( global 4-component vector of uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:194 Constant: 0:194 2 (const uint) 0:195 subgroupClusteredXor ( global 4-component vector of uint) 0:195 'ballot' ( temp 4-component vector of uint) 0:195 Constant: 0:195 2 (const uint) 0:199 Function Definition: quad_works(vf4; ( global void) 0:199 Function Parameters: 0:199 'f4' ( in 4-component vector of float) 0:201 Sequence 0:201 subgroupQuadBroadcast ( global 4-component vector of float) 0:201 'f4' ( in 4-component vector of float) 0:201 Constant: 0:201 0 (const uint) 0:202 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:202 'f4' ( in 4-component vector of float) 0:203 subgroupQuadSwapVertical ( global 4-component vector of float) 0:203 'f4' ( in 4-component vector of float) 0:204 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:204 'f4' ( in 4-component vector of float) 0:208 Function Definition: partitioned_works(vf4; ( global void) 0:208 Function Parameters: 0:208 'f4' ( in 4-component vector of float) 0:210 Sequence 0:210 Sequence 0:210 move second child to first child ( temp 4-component vector of uint) 0:210 'parti' ( temp 4-component vector of uint) 0:210 subgroupPartitionNV ( global 4-component vector of uint) 0:210 'f4' ( in 4-component vector of float) 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 subgroupPartitionedAddNV ( global 4-component vector of float) 0:212 'f4' ( in 4-component vector of float) 0:212 'parti' ( temp 4-component vector of uint) 0:213 subgroupPartitionedMulNV ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:213 'parti' ( temp 4-component vector of uint) 0:214 subgroupPartitionedMinNV ( global 4-component vector of float) 0:214 'f4' ( in 4-component vector of float) 0:214 'parti' ( temp 4-component vector of uint) 0:215 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:215 'f4' ( in 4-component vector of float) 0:215 'parti' ( temp 4-component vector of uint) 0:216 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:216 'ballot' ( temp 4-component vector of uint) 0:216 'parti' ( temp 4-component vector of uint) 0:217 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:217 'ballot' ( temp 4-component vector of uint) 0:217 'parti' ( temp 4-component vector of uint) 0:218 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:218 'ballot' ( temp 4-component vector of uint) 0:218 'parti' ( temp 4-component vector of uint) 0:219 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:219 'f4' ( in 4-component vector of float) 0:219 'parti' ( temp 4-component vector of uint) 0:220 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:220 'parti' ( temp 4-component vector of uint) 0:221 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:221 'f4' ( in 4-component vector of float) 0:221 'parti' ( temp 4-component vector of uint) 0:222 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:222 'f4' ( in 4-component vector of float) 0:222 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:223 'ballot' ( temp 4-component vector of uint) 0:223 'parti' ( temp 4-component vector of uint) 0:224 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:224 'ballot' ( temp 4-component vector of uint) 0:224 'parti' ( temp 4-component vector of uint) 0:225 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:225 'ballot' ( temp 4-component vector of uint) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:227 'f4' ( in 4-component vector of float) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:228 'f4' ( in 4-component vector of float) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:229 'f4' ( in 4-component vector of float) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint) 0:231 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint) 0:232 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:232 'ballot' ( temp 4-component vector of uint) 0:232 'parti' ( temp 4-component vector of uint) 0:236 Function Definition: sm_builtins_err( ( global void) 0:236 Function Parameters: 0:238 Sequence 0:238 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:239 'gl_SMCountNV' ( in uint SMCountNV) 0:240 'gl_WarpIDNV' ( in uint WarpIDNV) 0:241 'gl_SMIDNV' ( in uint SMIDNV) 0:248 Function Definition: sm_builtins( ( global void) 0:248 Function Parameters: 0:250 Sequence 0:250 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:251 'gl_SMCountNV' ( in uint SMCountNV) 0:252 'gl_WarpIDNV' ( in uint WarpIDNV) 0:253 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) Linked geometry stage: Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned invocations = 1 max_vertices = 1 input primitive = points output primitive = points ERROR: node is still EOpNull! 0:111 Function Definition: main( ( global void) 0:111 Function Parameters: 0:113 Sequence 0:113 move second child to first child ( temp 4-component vector of uint) 0:113 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) 0:113 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) 0:113 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:113 Constant: 0:113 0 (const uint) 0:113 'gl_PrimitiveIDIn' ( in int PrimitiveID) 0:113 Construct uvec4 ( temp 4-component vector of uint) 0:113 'gl_SubgroupSize' ( in uint SubgroupSize) 0:113 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:113 Constant: 0:113 0 (const uint) 0:113 Constant: 0:113 0 (const uint) 0:114 subgroupBarrier ( global void) 0:115 subgroupMemoryBarrier ( global void) 0:116 subgroupMemoryBarrierBuffer ( global void) 0:117 subgroupMemoryBarrierImage ( global void) 0:118 subgroupElect ( global bool) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) glslang-16.0.0/Test/baseResults/glsl.450.subgroup.tesc.out000066400000000000000000001145401506534232700232570ustar00rootroot00000000000000glsl.450.subgroup.tesc 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' : undeclared identifier ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 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: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:237: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:238: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:239: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:240: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned vertices = 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' ( temp float) 0:14 'gl_SubgroupID' ( temp float) 0:15 Constant: 0:15 0.000000 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 Sequence 0:77 move second child to first child ( temp 4-component vector of uint) 0:77 'parti' ( temp 4-component vector of uint) 0:77 subgroupPartitionNV ( global 4-component vector of uint) 0:77 'f4' ( in 4-component vector of float) 0:78 subgroupPartitionedAddNV ( global 4-component vector of float) 0:78 'f4' ( in 4-component vector of float) 0:78 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionedMulNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMinNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:82 'ballot' ( temp 4-component vector of uint) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:85 'f4' ( in 4-component vector of float) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:89 'ballot' ( temp 4-component vector of uint) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:92 'f4' ( in 4-component vector of float) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:96 'ballot' ( temp 4-component vector of uint) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:100 Branch: Return with expression 0:100 'result' ( temp 4-component vector of float) 0:110 Function Definition: main( ( global void) 0:110 Function Parameters: 0:112 Sequence 0:112 move second child to first child ( temp 4-component vector of uint) 0:112 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) 0:112 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) 0:112 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:112 Constant: 0:112 0 (const uint) 0:112 'gl_PrimitiveID' ( in int PrimitiveID) 0:112 Construct uvec4 ( temp 4-component vector of uint) 0:112 'gl_SubgroupSize' ( in uint SubgroupSize) 0:112 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:112 Constant: 0:112 0 (const uint) 0:112 Constant: 0:112 0 (const uint) 0:113 subgroupBarrier ( global void) 0:114 subgroupMemoryBarrier ( global void) 0:115 subgroupMemoryBarrierBuffer ( global void) 0:116 subgroupMemoryBarrierImage ( global void) 0:117 subgroupElect ( global bool) 0:121 Function Definition: ballot_works(vf4; ( global void) 0:121 Function Parameters: 0:121 'f4' ( in 4-component vector of float) 0:122 Sequence 0:122 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:123 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:124 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:125 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:126 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:127 subgroupBroadcast ( global 4-component vector of float) 0:127 'f4' ( in 4-component vector of float) 0:127 Constant: 0:127 0 (const uint) 0:128 subgroupBroadcastFirst ( global 4-component vector of float) 0:128 'f4' ( in 4-component vector of float) 0:129 Sequence 0:129 move second child to first child ( temp 4-component vector of uint) 0:129 'ballot' ( temp 4-component vector of uint) 0:129 subgroupBallot ( global 4-component vector of uint) 0:129 Constant: 0:129 false (const bool) 0:130 subgroupInverseBallot ( global bool) 0:130 Constant: 0:130 1 (const uint) 0:130 1 (const uint) 0:130 1 (const uint) 0:130 1 (const uint) 0:131 subgroupBallotBitExtract ( global bool) 0:131 'ballot' ( temp 4-component vector of uint) 0:131 Constant: 0:131 0 (const uint) 0:132 subgroupBallotBitCount ( global uint) 0:132 'ballot' ( temp 4-component vector of uint) 0:133 subgroupBallotInclusiveBitCount ( global uint) 0:133 'ballot' ( temp 4-component vector of uint) 0:134 subgroupBallotExclusiveBitCount ( global uint) 0:134 'ballot' ( temp 4-component vector of uint) 0:135 subgroupBallotFindLSB ( global uint) 0:135 'ballot' ( temp 4-component vector of uint) 0:136 subgroupBallotFindMSB ( global uint) 0:136 'ballot' ( temp 4-component vector of uint) 0:140 Function Definition: vote_works(vf4; ( global void) 0:140 Function Parameters: 0:140 'f4' ( in 4-component vector of float) 0:142 Sequence 0:142 subgroupAll ( global bool) 0:142 Constant: 0:142 true (const bool) 0:143 subgroupAny ( global bool) 0:143 Constant: 0:143 false (const bool) 0:144 subgroupAllEqual ( global bool) 0:144 'f4' ( in 4-component vector of float) 0:149 Function Definition: shuffle_works(vf4; ( global void) 0:149 Function Parameters: 0:149 'f4' ( in 4-component vector of float) 0:151 Sequence 0:151 subgroupShuffle ( 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 subgroupShuffleXor ( global 4-component vector of float) 0:152 'f4' ( in 4-component vector of float) 0:152 Constant: 0:152 1 (const uint) 0:153 subgroupShuffleUp ( global 4-component vector of float) 0:153 'f4' ( in 4-component vector of float) 0:153 Constant: 0:153 1 (const uint) 0:154 subgroupShuffleDown ( global 4-component vector of float) 0:154 'f4' ( in 4-component vector of float) 0:154 Constant: 0:154 1 (const uint) 0:158 Function Definition: arith_works(vf4; ( global void) 0:158 Function Parameters: 0:158 'f4' ( in 4-component vector of float) 0:? Sequence 0:161 subgroupAdd ( global 4-component vector of float) 0:161 'f4' ( in 4-component vector of float) 0:162 subgroupMul ( global 4-component vector of float) 0:162 'f4' ( in 4-component vector of float) 0:163 subgroupMin ( global 4-component vector of float) 0:163 'f4' ( in 4-component vector of float) 0:164 subgroupMax ( global 4-component vector of float) 0:164 'f4' ( in 4-component vector of float) 0:165 subgroupAnd ( global 4-component vector of uint) 0:165 'ballot' ( temp 4-component vector of uint) 0:166 subgroupOr ( global 4-component vector of uint) 0:166 'ballot' ( temp 4-component vector of uint) 0:167 subgroupXor ( global 4-component vector of uint) 0:167 'ballot' ( temp 4-component vector of uint) 0:168 subgroupInclusiveAdd ( global 4-component vector of float) 0:168 'f4' ( in 4-component vector of float) 0:169 subgroupInclusiveMul ( global 4-component vector of float) 0:169 'f4' ( in 4-component vector of float) 0:170 subgroupInclusiveMin ( global 4-component vector of float) 0:170 'f4' ( in 4-component vector of float) 0:171 subgroupInclusiveMax ( global 4-component vector of float) 0:171 'f4' ( in 4-component vector of float) 0:172 subgroupInclusiveAnd ( global 4-component vector of uint) 0:172 'ballot' ( temp 4-component vector of uint) 0:173 subgroupInclusiveOr ( global 4-component vector of uint) 0:173 'ballot' ( temp 4-component vector of uint) 0:174 subgroupInclusiveXor ( global 4-component vector of uint) 0:174 'ballot' ( temp 4-component vector of uint) 0:175 subgroupExclusiveAdd ( global 4-component vector of float) 0:175 'f4' ( in 4-component vector of float) 0:176 subgroupExclusiveMul ( global 4-component vector of float) 0:176 'f4' ( in 4-component vector of float) 0:177 subgroupExclusiveMin ( global 4-component vector of float) 0:177 'f4' ( in 4-component vector of float) 0:178 subgroupExclusiveMax ( global 4-component vector of float) 0:178 'f4' ( in 4-component vector of float) 0:179 subgroupExclusiveAnd ( global 4-component vector of uint) 0:179 'ballot' ( temp 4-component vector of uint) 0:180 subgroupExclusiveOr ( global 4-component vector of uint) 0:180 'ballot' ( temp 4-component vector of uint) 0:181 subgroupExclusiveXor ( global 4-component vector of uint) 0:181 'ballot' ( temp 4-component vector of uint) 0:185 Function Definition: clustered_works(vf4; ( global void) 0:185 Function Parameters: 0:185 'f4' ( in 4-component vector of float) 0:187 Sequence 0:187 Sequence 0:187 move second child to first child ( temp 4-component vector of uint) 0:187 'ballot' ( temp 4-component vector of uint) 0:187 Constant: 0:187 85 (const uint) 0:187 0 (const uint) 0:187 0 (const uint) 0:187 0 (const uint) 0:188 subgroupClusteredAdd ( global 4-component vector of float) 0:188 'f4' ( in 4-component vector of float) 0:188 Constant: 0:188 2 (const uint) 0:189 subgroupClusteredMul ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:189 Constant: 0:189 2 (const uint) 0:190 subgroupClusteredMin ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:190 Constant: 0:190 2 (const uint) 0:191 subgroupClusteredMax ( global 4-component vector of float) 0:191 'f4' ( in 4-component vector of float) 0:191 Constant: 0:191 2 (const uint) 0:192 subgroupClusteredAnd ( global 4-component vector of uint) 0:192 'ballot' ( temp 4-component vector of uint) 0:192 Constant: 0:192 2 (const uint) 0:193 subgroupClusteredOr ( global 4-component vector of uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:193 Constant: 0:193 2 (const uint) 0:194 subgroupClusteredXor ( global 4-component vector of uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:194 Constant: 0:194 2 (const uint) 0:198 Function Definition: quad_works(vf4; ( global void) 0:198 Function Parameters: 0:198 'f4' ( in 4-component vector of float) 0:200 Sequence 0:200 subgroupQuadBroadcast ( global 4-component vector of float) 0:200 'f4' ( in 4-component vector of float) 0:200 Constant: 0:200 0 (const uint) 0:201 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:201 'f4' ( in 4-component vector of float) 0:202 subgroupQuadSwapVertical ( global 4-component vector of float) 0:202 'f4' ( in 4-component vector of float) 0:203 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:203 'f4' ( in 4-component vector of float) 0:207 Function Definition: partitioned_works(vf4; ( global void) 0:207 Function Parameters: 0:207 'f4' ( in 4-component vector of float) 0:209 Sequence 0:209 Sequence 0:209 move second child to first child ( temp 4-component vector of uint) 0:209 'parti' ( temp 4-component vector of uint) 0:209 subgroupPartitionNV ( global 4-component vector of uint) 0:209 'f4' ( in 4-component vector of float) 0:210 Sequence 0:210 move second child to first child ( temp 4-component vector of uint) 0:210 'ballot' ( temp 4-component vector of uint) 0:210 Constant: 0:210 85 (const uint) 0:210 0 (const uint) 0:210 0 (const uint) 0:210 0 (const uint) 0:211 subgroupPartitionedAddNV ( global 4-component vector of float) 0:211 'f4' ( in 4-component vector of float) 0:211 'parti' ( temp 4-component vector of uint) 0:212 subgroupPartitionedMulNV ( global 4-component vector of float) 0:212 'f4' ( in 4-component vector of float) 0:212 'parti' ( temp 4-component vector of uint) 0:213 subgroupPartitionedMinNV ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:213 'parti' ( temp 4-component vector of uint) 0:214 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:214 'f4' ( in 4-component vector of float) 0:214 'parti' ( temp 4-component vector of uint) 0:215 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:215 'ballot' ( temp 4-component vector of uint) 0:215 'parti' ( temp 4-component vector of uint) 0:216 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:216 'ballot' ( temp 4-component vector of uint) 0:216 'parti' ( temp 4-component vector of uint) 0:217 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:217 'ballot' ( temp 4-component vector of uint) 0:217 'parti' ( temp 4-component vector of uint) 0:218 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:218 'f4' ( in 4-component vector of float) 0:218 'parti' ( temp 4-component vector of uint) 0:219 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:219 'f4' ( in 4-component vector of float) 0:219 'parti' ( temp 4-component vector of uint) 0:220 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:220 'parti' ( temp 4-component vector of uint) 0:221 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:221 'f4' ( in 4-component vector of float) 0:221 'parti' ( temp 4-component vector of uint) 0:222 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:222 'ballot' ( temp 4-component vector of uint) 0:222 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:223 'ballot' ( temp 4-component vector of uint) 0:223 'parti' ( temp 4-component vector of uint) 0:224 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:224 'ballot' ( temp 4-component vector of uint) 0:224 'parti' ( temp 4-component vector of uint) 0:225 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:227 'f4' ( in 4-component vector of float) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:228 'f4' ( in 4-component vector of float) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:229 'ballot' ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint) 0:231 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint) 0:235 Function Definition: sm_builtins_err( ( global void) 0:235 Function Parameters: 0:237 Sequence 0:237 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:238 'gl_SMCountNV' ( in uint SMCountNV) 0:239 'gl_WarpIDNV' ( in uint WarpIDNV) 0:240 'gl_SMIDNV' ( in uint SMIDNV) 0:247 Function Definition: sm_builtins( ( global void) 0:247 Function Parameters: 0:249 Sequence 0:249 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:250 'gl_SMCountNV' ( in uint SMCountNV) 0:251 'gl_WarpIDNV' ( in uint WarpIDNV) 0:252 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) Linked tessellation control stage: Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned vertices = 1 ERROR: node is still EOpNull! 0:110 Function Definition: main( ( global void) 0:110 Function Parameters: 0:112 Sequence 0:112 move second child to first child ( temp 4-component vector of uint) 0:112 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) 0:112 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) 0:112 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:112 Constant: 0:112 0 (const uint) 0:112 'gl_PrimitiveID' ( in int PrimitiveID) 0:112 Construct uvec4 ( temp 4-component vector of uint) 0:112 'gl_SubgroupSize' ( in uint SubgroupSize) 0:112 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:112 Constant: 0:112 0 (const uint) 0:112 Constant: 0:112 0 (const uint) 0:113 subgroupBarrier ( global void) 0:114 subgroupMemoryBarrier ( global void) 0:115 subgroupMemoryBarrierBuffer ( global void) 0:116 subgroupMemoryBarrierImage ( global void) 0:117 subgroupElect ( global bool) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) glslang-16.0.0/Test/baseResults/glsl.450.subgroup.tese.out000066400000000000000000001147371506534232700232710ustar00rootroot00000000000000glsl.450.subgroup.tese 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' : undeclared identifier ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 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: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:237: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:238: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:239: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:240: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned input primitive = isolines vertex spacing = none triangle order = none 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' ( temp float) 0:14 'gl_SubgroupID' ( temp float) 0:15 Constant: 0:15 0.000000 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 Sequence 0:77 move second child to first child ( temp 4-component vector of uint) 0:77 'parti' ( temp 4-component vector of uint) 0:77 subgroupPartitionNV ( global 4-component vector of uint) 0:77 'f4' ( in 4-component vector of float) 0:78 subgroupPartitionedAddNV ( global 4-component vector of float) 0:78 'f4' ( in 4-component vector of float) 0:78 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionedMulNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMinNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:82 'ballot' ( temp 4-component vector of uint) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:85 'f4' ( in 4-component vector of float) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:89 'ballot' ( temp 4-component vector of uint) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:92 'f4' ( in 4-component vector of float) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:96 'ballot' ( temp 4-component vector of uint) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:100 Branch: Return with expression 0:100 'result' ( temp 4-component vector of float) 0:110 Function Definition: main( ( global void) 0:110 Function Parameters: 0:112 Sequence 0:112 move second child to first child ( temp 4-component vector of uint) 0:112 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) 0:112 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) 0:112 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:112 Constant: 0:112 0 (const uint) 0:112 'gl_PrimitiveID' ( in int PrimitiveID) 0:112 Construct uvec4 ( temp 4-component vector of uint) 0:112 'gl_SubgroupSize' ( in uint SubgroupSize) 0:112 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:112 Constant: 0:112 0 (const uint) 0:112 Constant: 0:112 0 (const uint) 0:113 subgroupBarrier ( global void) 0:114 subgroupMemoryBarrier ( global void) 0:115 subgroupMemoryBarrierBuffer ( global void) 0:116 subgroupMemoryBarrierImage ( global void) 0:117 subgroupElect ( global bool) 0:121 Function Definition: ballot_works(vf4; ( global void) 0:121 Function Parameters: 0:121 'f4' ( in 4-component vector of float) 0:122 Sequence 0:122 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:123 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:124 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:125 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:126 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:127 subgroupBroadcast ( global 4-component vector of float) 0:127 'f4' ( in 4-component vector of float) 0:127 Constant: 0:127 0 (const uint) 0:128 subgroupBroadcastFirst ( global 4-component vector of float) 0:128 'f4' ( in 4-component vector of float) 0:129 Sequence 0:129 move second child to first child ( temp 4-component vector of uint) 0:129 'ballot' ( temp 4-component vector of uint) 0:129 subgroupBallot ( global 4-component vector of uint) 0:129 Constant: 0:129 false (const bool) 0:130 subgroupInverseBallot ( global bool) 0:130 Constant: 0:130 1 (const uint) 0:130 1 (const uint) 0:130 1 (const uint) 0:130 1 (const uint) 0:131 subgroupBallotBitExtract ( global bool) 0:131 'ballot' ( temp 4-component vector of uint) 0:131 Constant: 0:131 0 (const uint) 0:132 subgroupBallotBitCount ( global uint) 0:132 'ballot' ( temp 4-component vector of uint) 0:133 subgroupBallotInclusiveBitCount ( global uint) 0:133 'ballot' ( temp 4-component vector of uint) 0:134 subgroupBallotExclusiveBitCount ( global uint) 0:134 'ballot' ( temp 4-component vector of uint) 0:135 subgroupBallotFindLSB ( global uint) 0:135 'ballot' ( temp 4-component vector of uint) 0:136 subgroupBallotFindMSB ( global uint) 0:136 'ballot' ( temp 4-component vector of uint) 0:140 Function Definition: vote_works(vf4; ( global void) 0:140 Function Parameters: 0:140 'f4' ( in 4-component vector of float) 0:142 Sequence 0:142 subgroupAll ( global bool) 0:142 Constant: 0:142 true (const bool) 0:143 subgroupAny ( global bool) 0:143 Constant: 0:143 false (const bool) 0:144 subgroupAllEqual ( global bool) 0:144 'f4' ( in 4-component vector of float) 0:149 Function Definition: shuffle_works(vf4; ( global void) 0:149 Function Parameters: 0:149 'f4' ( in 4-component vector of float) 0:151 Sequence 0:151 subgroupShuffle ( 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 subgroupShuffleXor ( global 4-component vector of float) 0:152 'f4' ( in 4-component vector of float) 0:152 Constant: 0:152 1 (const uint) 0:153 subgroupShuffleUp ( global 4-component vector of float) 0:153 'f4' ( in 4-component vector of float) 0:153 Constant: 0:153 1 (const uint) 0:154 subgroupShuffleDown ( global 4-component vector of float) 0:154 'f4' ( in 4-component vector of float) 0:154 Constant: 0:154 1 (const uint) 0:158 Function Definition: arith_works(vf4; ( global void) 0:158 Function Parameters: 0:158 'f4' ( in 4-component vector of float) 0:? Sequence 0:161 subgroupAdd ( global 4-component vector of float) 0:161 'f4' ( in 4-component vector of float) 0:162 subgroupMul ( global 4-component vector of float) 0:162 'f4' ( in 4-component vector of float) 0:163 subgroupMin ( global 4-component vector of float) 0:163 'f4' ( in 4-component vector of float) 0:164 subgroupMax ( global 4-component vector of float) 0:164 'f4' ( in 4-component vector of float) 0:165 subgroupAnd ( global 4-component vector of uint) 0:165 'ballot' ( temp 4-component vector of uint) 0:166 subgroupOr ( global 4-component vector of uint) 0:166 'ballot' ( temp 4-component vector of uint) 0:167 subgroupXor ( global 4-component vector of uint) 0:167 'ballot' ( temp 4-component vector of uint) 0:168 subgroupInclusiveAdd ( global 4-component vector of float) 0:168 'f4' ( in 4-component vector of float) 0:169 subgroupInclusiveMul ( global 4-component vector of float) 0:169 'f4' ( in 4-component vector of float) 0:170 subgroupInclusiveMin ( global 4-component vector of float) 0:170 'f4' ( in 4-component vector of float) 0:171 subgroupInclusiveMax ( global 4-component vector of float) 0:171 'f4' ( in 4-component vector of float) 0:172 subgroupInclusiveAnd ( global 4-component vector of uint) 0:172 'ballot' ( temp 4-component vector of uint) 0:173 subgroupInclusiveOr ( global 4-component vector of uint) 0:173 'ballot' ( temp 4-component vector of uint) 0:174 subgroupInclusiveXor ( global 4-component vector of uint) 0:174 'ballot' ( temp 4-component vector of uint) 0:175 subgroupExclusiveAdd ( global 4-component vector of float) 0:175 'f4' ( in 4-component vector of float) 0:176 subgroupExclusiveMul ( global 4-component vector of float) 0:176 'f4' ( in 4-component vector of float) 0:177 subgroupExclusiveMin ( global 4-component vector of float) 0:177 'f4' ( in 4-component vector of float) 0:178 subgroupExclusiveMax ( global 4-component vector of float) 0:178 'f4' ( in 4-component vector of float) 0:179 subgroupExclusiveAnd ( global 4-component vector of uint) 0:179 'ballot' ( temp 4-component vector of uint) 0:180 subgroupExclusiveOr ( global 4-component vector of uint) 0:180 'ballot' ( temp 4-component vector of uint) 0:181 subgroupExclusiveXor ( global 4-component vector of uint) 0:181 'ballot' ( temp 4-component vector of uint) 0:185 Function Definition: clustered_works(vf4; ( global void) 0:185 Function Parameters: 0:185 'f4' ( in 4-component vector of float) 0:187 Sequence 0:187 Sequence 0:187 move second child to first child ( temp 4-component vector of uint) 0:187 'ballot' ( temp 4-component vector of uint) 0:187 Constant: 0:187 85 (const uint) 0:187 0 (const uint) 0:187 0 (const uint) 0:187 0 (const uint) 0:188 subgroupClusteredAdd ( global 4-component vector of float) 0:188 'f4' ( in 4-component vector of float) 0:188 Constant: 0:188 2 (const uint) 0:189 subgroupClusteredMul ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:189 Constant: 0:189 2 (const uint) 0:190 subgroupClusteredMin ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:190 Constant: 0:190 2 (const uint) 0:191 subgroupClusteredMax ( global 4-component vector of float) 0:191 'f4' ( in 4-component vector of float) 0:191 Constant: 0:191 2 (const uint) 0:192 subgroupClusteredAnd ( global 4-component vector of uint) 0:192 'ballot' ( temp 4-component vector of uint) 0:192 Constant: 0:192 2 (const uint) 0:193 subgroupClusteredOr ( global 4-component vector of uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:193 Constant: 0:193 2 (const uint) 0:194 subgroupClusteredXor ( global 4-component vector of uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:194 Constant: 0:194 2 (const uint) 0:198 Function Definition: quad_works(vf4; ( global void) 0:198 Function Parameters: 0:198 'f4' ( in 4-component vector of float) 0:200 Sequence 0:200 subgroupQuadBroadcast ( global 4-component vector of float) 0:200 'f4' ( in 4-component vector of float) 0:200 Constant: 0:200 0 (const uint) 0:201 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:201 'f4' ( in 4-component vector of float) 0:202 subgroupQuadSwapVertical ( global 4-component vector of float) 0:202 'f4' ( in 4-component vector of float) 0:203 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:203 'f4' ( in 4-component vector of float) 0:207 Function Definition: partitioned_works(vf4; ( global void) 0:207 Function Parameters: 0:207 'f4' ( in 4-component vector of float) 0:209 Sequence 0:209 Sequence 0:209 move second child to first child ( temp 4-component vector of uint) 0:209 'parti' ( temp 4-component vector of uint) 0:209 subgroupPartitionNV ( global 4-component vector of uint) 0:209 'f4' ( in 4-component vector of float) 0:210 Sequence 0:210 move second child to first child ( temp 4-component vector of uint) 0:210 'ballot' ( temp 4-component vector of uint) 0:210 Constant: 0:210 85 (const uint) 0:210 0 (const uint) 0:210 0 (const uint) 0:210 0 (const uint) 0:211 subgroupPartitionedAddNV ( global 4-component vector of float) 0:211 'f4' ( in 4-component vector of float) 0:211 'parti' ( temp 4-component vector of uint) 0:212 subgroupPartitionedMulNV ( global 4-component vector of float) 0:212 'f4' ( in 4-component vector of float) 0:212 'parti' ( temp 4-component vector of uint) 0:213 subgroupPartitionedMinNV ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:213 'parti' ( temp 4-component vector of uint) 0:214 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:214 'f4' ( in 4-component vector of float) 0:214 'parti' ( temp 4-component vector of uint) 0:215 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:215 'ballot' ( temp 4-component vector of uint) 0:215 'parti' ( temp 4-component vector of uint) 0:216 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:216 'ballot' ( temp 4-component vector of uint) 0:216 'parti' ( temp 4-component vector of uint) 0:217 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:217 'ballot' ( temp 4-component vector of uint) 0:217 'parti' ( temp 4-component vector of uint) 0:218 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:218 'f4' ( in 4-component vector of float) 0:218 'parti' ( temp 4-component vector of uint) 0:219 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:219 'f4' ( in 4-component vector of float) 0:219 'parti' ( temp 4-component vector of uint) 0:220 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:220 'parti' ( temp 4-component vector of uint) 0:221 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:221 'f4' ( in 4-component vector of float) 0:221 'parti' ( temp 4-component vector of uint) 0:222 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:222 'ballot' ( temp 4-component vector of uint) 0:222 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:223 'ballot' ( temp 4-component vector of uint) 0:223 'parti' ( temp 4-component vector of uint) 0:224 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:224 'ballot' ( temp 4-component vector of uint) 0:224 'parti' ( temp 4-component vector of uint) 0:225 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:227 'f4' ( in 4-component vector of float) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:228 'f4' ( in 4-component vector of float) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:229 'ballot' ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint) 0:231 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint) 0:235 Function Definition: sm_builtins_err( ( global void) 0:235 Function Parameters: 0:237 Sequence 0:237 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:238 'gl_SMCountNV' ( in uint SMCountNV) 0:239 'gl_WarpIDNV' ( in uint WarpIDNV) 0:240 'gl_SMIDNV' ( in uint SMIDNV) 0:247 Function Definition: sm_builtins( ( global void) 0:247 Function Parameters: 0:249 Sequence 0:249 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:250 'gl_SMCountNV' ( in uint SMCountNV) 0:251 'gl_WarpIDNV' ( in uint WarpIDNV) 0:252 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) Linked tessellation evaluation stage: Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned input primitive = isolines vertex spacing = equal_spacing triangle order = ccw ERROR: node is still EOpNull! 0:110 Function Definition: main( ( global void) 0:110 Function Parameters: 0:112 Sequence 0:112 move second child to first child ( temp 4-component vector of uint) 0:112 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) 0:112 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) 0:112 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:112 Constant: 0:112 0 (const uint) 0:112 'gl_PrimitiveID' ( in int PrimitiveID) 0:112 Construct uvec4 ( temp 4-component vector of uint) 0:112 'gl_SubgroupSize' ( in uint SubgroupSize) 0:112 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:112 Constant: 0:112 0 (const uint) 0:112 Constant: 0:112 0 (const uint) 0:113 subgroupBarrier ( global void) 0:114 subgroupMemoryBarrier ( global void) 0:115 subgroupMemoryBarrierBuffer ( global void) 0:116 subgroupMemoryBarrierImage ( global void) 0:117 subgroupElect ( global bool) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) glslang-16.0.0/Test/baseResults/glsl.450.subgroup.vert.out000066400000000000000000001150221506534232700232750ustar00rootroot00000000000000glsl.450.subgroup.vert 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' : undeclared identifier ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 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: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:236: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:237: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:238: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:239: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned 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' ( temp float) 0:14 'gl_SubgroupID' ( temp float) 0:15 Constant: 0:15 0.000000 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 Sequence 0:77 move second child to first child ( temp 4-component vector of uint) 0:77 'parti' ( temp 4-component vector of uint) 0:77 subgroupPartitionNV ( global 4-component vector of uint) 0:77 'f4' ( in 4-component vector of float) 0:78 subgroupPartitionedAddNV ( global 4-component vector of float) 0:78 'f4' ( in 4-component vector of float) 0:78 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionedMulNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMinNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:82 'ballot' ( temp 4-component vector of uint) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:85 'f4' ( in 4-component vector of float) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:89 'ballot' ( temp 4-component vector of uint) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:92 'f4' ( in 4-component vector of float) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:96 'ballot' ( temp 4-component vector of uint) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:100 Branch: Return with expression 0:100 'result' ( temp 4-component vector of float) 0:109 Function Definition: main( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 move second child to first child ( temp 4-component vector of uint) 0:111 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) 0:111 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) 0:111 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:111 Constant: 0:111 0 (const uint) 0:111 'gl_VertexID' ( gl_VertexId int VertexId) 0:111 Construct uvec4 ( temp 4-component vector of uint) 0:111 'gl_SubgroupSize' ( in uint SubgroupSize) 0:111 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:111 Constant: 0:111 0 (const uint) 0:111 Constant: 0:111 0 (const uint) 0:112 subgroupBarrier ( global void) 0:113 subgroupMemoryBarrier ( global void) 0:114 subgroupMemoryBarrierBuffer ( global void) 0:115 subgroupMemoryBarrierImage ( global void) 0:116 subgroupElect ( global bool) 0:120 Function Definition: ballot_works(vf4; ( global void) 0:120 Function Parameters: 0:120 'f4' ( in 4-component vector of float) 0:121 Sequence 0:121 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:122 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:123 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:124 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:125 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:126 subgroupBroadcast ( global 4-component vector of float) 0:126 'f4' ( in 4-component vector of float) 0:126 Constant: 0:126 0 (const uint) 0:127 subgroupBroadcastFirst ( global 4-component vector of float) 0:127 'f4' ( in 4-component vector of float) 0:128 Sequence 0:128 move second child to first child ( temp 4-component vector of uint) 0:128 'ballot' ( temp 4-component vector of uint) 0:128 subgroupBallot ( global 4-component vector of uint) 0:128 Constant: 0:128 false (const bool) 0:129 subgroupInverseBallot ( global bool) 0:129 Constant: 0:129 1 (const uint) 0:129 1 (const uint) 0:129 1 (const uint) 0:129 1 (const uint) 0:130 subgroupBallotBitExtract ( global bool) 0:130 'ballot' ( temp 4-component vector of uint) 0:130 Constant: 0:130 0 (const uint) 0:131 subgroupBallotBitCount ( global uint) 0:131 'ballot' ( temp 4-component vector of uint) 0:132 subgroupBallotInclusiveBitCount ( global uint) 0:132 'ballot' ( temp 4-component vector of uint) 0:133 subgroupBallotExclusiveBitCount ( global uint) 0:133 'ballot' ( temp 4-component vector of uint) 0:134 subgroupBallotFindLSB ( global uint) 0:134 'ballot' ( temp 4-component vector of uint) 0:135 subgroupBallotFindMSB ( global uint) 0:135 'ballot' ( temp 4-component vector of uint) 0:139 Function Definition: vote_works(vf4; ( global void) 0:139 Function Parameters: 0:139 'f4' ( in 4-component vector of float) 0:141 Sequence 0:141 subgroupAll ( global bool) 0:141 Constant: 0:141 true (const bool) 0:142 subgroupAny ( global bool) 0:142 Constant: 0:142 false (const bool) 0:143 subgroupAllEqual ( global bool) 0:143 'f4' ( in 4-component vector of float) 0:148 Function Definition: shuffle_works(vf4; ( global void) 0:148 Function Parameters: 0:148 'f4' ( in 4-component vector of float) 0:150 Sequence 0:150 subgroupShuffle ( global 4-component vector of float) 0:150 'f4' ( in 4-component vector of float) 0:150 Constant: 0:150 0 (const uint) 0:151 subgroupShuffleXor ( global 4-component vector of float) 0:151 'f4' ( in 4-component vector of float) 0:151 Constant: 0:151 1 (const uint) 0:152 subgroupShuffleUp ( global 4-component vector of float) 0:152 'f4' ( in 4-component vector of float) 0:152 Constant: 0:152 1 (const uint) 0:153 subgroupShuffleDown ( global 4-component vector of float) 0:153 'f4' ( in 4-component vector of float) 0:153 Constant: 0:153 1 (const uint) 0:157 Function Definition: arith_works(vf4; ( global void) 0:157 Function Parameters: 0:157 'f4' ( in 4-component vector of float) 0:? Sequence 0:160 subgroupAdd ( global 4-component vector of float) 0:160 'f4' ( in 4-component vector of float) 0:161 subgroupMul ( global 4-component vector of float) 0:161 'f4' ( in 4-component vector of float) 0:162 subgroupMin ( global 4-component vector of float) 0:162 'f4' ( in 4-component vector of float) 0:163 subgroupMax ( global 4-component vector of float) 0:163 'f4' ( in 4-component vector of float) 0:164 subgroupAnd ( global 4-component vector of uint) 0:164 'ballot' ( temp 4-component vector of uint) 0:165 subgroupOr ( global 4-component vector of uint) 0:165 'ballot' ( temp 4-component vector of uint) 0:166 subgroupXor ( global 4-component vector of uint) 0:166 'ballot' ( temp 4-component vector of uint) 0:167 subgroupInclusiveAdd ( global 4-component vector of float) 0:167 'f4' ( in 4-component vector of float) 0:168 subgroupInclusiveMul ( global 4-component vector of float) 0:168 'f4' ( in 4-component vector of float) 0:169 subgroupInclusiveMin ( global 4-component vector of float) 0:169 'f4' ( in 4-component vector of float) 0:170 subgroupInclusiveMax ( global 4-component vector of float) 0:170 'f4' ( in 4-component vector of float) 0:171 subgroupInclusiveAnd ( global 4-component vector of uint) 0:171 'ballot' ( temp 4-component vector of uint) 0:172 subgroupInclusiveOr ( global 4-component vector of uint) 0:172 'ballot' ( temp 4-component vector of uint) 0:173 subgroupInclusiveXor ( global 4-component vector of uint) 0:173 'ballot' ( temp 4-component vector of uint) 0:174 subgroupExclusiveAdd ( global 4-component vector of float) 0:174 'f4' ( in 4-component vector of float) 0:175 subgroupExclusiveMul ( global 4-component vector of float) 0:175 'f4' ( in 4-component vector of float) 0:176 subgroupExclusiveMin ( global 4-component vector of float) 0:176 'f4' ( in 4-component vector of float) 0:177 subgroupExclusiveMax ( global 4-component vector of float) 0:177 'f4' ( in 4-component vector of float) 0:178 subgroupExclusiveAnd ( global 4-component vector of uint) 0:178 'ballot' ( temp 4-component vector of uint) 0:179 subgroupExclusiveOr ( global 4-component vector of uint) 0:179 'ballot' ( temp 4-component vector of uint) 0:180 subgroupExclusiveXor ( global 4-component vector of uint) 0:180 'ballot' ( temp 4-component vector of uint) 0:184 Function Definition: clustered_works(vf4; ( global void) 0:184 Function Parameters: 0:184 'f4' ( in 4-component vector of float) 0:186 Sequence 0:186 Sequence 0:186 move second child to first child ( temp 4-component vector of uint) 0:186 'ballot' ( temp 4-component vector of uint) 0:186 Constant: 0:186 85 (const uint) 0:186 0 (const uint) 0:186 0 (const uint) 0:186 0 (const uint) 0:187 subgroupClusteredAdd ( global 4-component vector of float) 0:187 'f4' ( in 4-component vector of float) 0:187 Constant: 0:187 2 (const uint) 0:188 subgroupClusteredMul ( global 4-component vector of float) 0:188 'f4' ( in 4-component vector of float) 0:188 Constant: 0:188 2 (const uint) 0:189 subgroupClusteredMin ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:189 Constant: 0:189 2 (const uint) 0:190 subgroupClusteredMax ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:190 Constant: 0:190 2 (const uint) 0:191 subgroupClusteredAnd ( global 4-component vector of uint) 0:191 'ballot' ( temp 4-component vector of uint) 0:191 Constant: 0:191 2 (const uint) 0:192 subgroupClusteredOr ( global 4-component vector of uint) 0:192 'ballot' ( temp 4-component vector of uint) 0:192 Constant: 0:192 2 (const uint) 0:193 subgroupClusteredXor ( global 4-component vector of uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:193 Constant: 0:193 2 (const uint) 0:197 Function Definition: quad_works(vf4; ( global void) 0:197 Function Parameters: 0:197 'f4' ( in 4-component vector of float) 0:199 Sequence 0:199 subgroupQuadBroadcast ( global 4-component vector of float) 0:199 'f4' ( in 4-component vector of float) 0:199 Constant: 0:199 0 (const uint) 0:200 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:200 'f4' ( in 4-component vector of float) 0:201 subgroupQuadSwapVertical ( global 4-component vector of float) 0:201 'f4' ( in 4-component vector of float) 0:202 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:202 'f4' ( in 4-component vector of float) 0:206 Function Definition: partitioned_works(vf4; ( global void) 0:206 Function Parameters: 0:206 'f4' ( in 4-component vector of float) 0:208 Sequence 0:208 Sequence 0:208 move second child to first child ( temp 4-component vector of uint) 0:208 'parti' ( temp 4-component vector of uint) 0:208 subgroupPartitionNV ( global 4-component vector of uint) 0:208 'f4' ( in 4-component vector of float) 0:209 Sequence 0:209 move second child to first child ( temp 4-component vector of uint) 0:209 'ballot' ( temp 4-component vector of uint) 0:209 Constant: 0:209 85 (const uint) 0:209 0 (const uint) 0:209 0 (const uint) 0:209 0 (const uint) 0:210 subgroupPartitionedAddNV ( global 4-component vector of float) 0:210 'f4' ( in 4-component vector of float) 0:210 'parti' ( temp 4-component vector of uint) 0:211 subgroupPartitionedMulNV ( global 4-component vector of float) 0:211 'f4' ( in 4-component vector of float) 0:211 'parti' ( temp 4-component vector of uint) 0:212 subgroupPartitionedMinNV ( global 4-component vector of float) 0:212 'f4' ( in 4-component vector of float) 0:212 'parti' ( temp 4-component vector of uint) 0:213 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:213 'parti' ( temp 4-component vector of uint) 0:214 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:214 'ballot' ( temp 4-component vector of uint) 0:214 'parti' ( temp 4-component vector of uint) 0:215 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:215 'ballot' ( temp 4-component vector of uint) 0:215 'parti' ( temp 4-component vector of uint) 0:216 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:216 'ballot' ( temp 4-component vector of uint) 0:216 'parti' ( temp 4-component vector of uint) 0:217 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:217 'f4' ( in 4-component vector of float) 0:217 'parti' ( temp 4-component vector of uint) 0:218 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:218 'f4' ( in 4-component vector of float) 0:218 'parti' ( temp 4-component vector of uint) 0:219 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:219 'f4' ( in 4-component vector of float) 0:219 'parti' ( temp 4-component vector of uint) 0:220 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:220 'parti' ( temp 4-component vector of uint) 0:221 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:221 'ballot' ( temp 4-component vector of uint) 0:221 'parti' ( temp 4-component vector of uint) 0:222 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:222 'ballot' ( temp 4-component vector of uint) 0:222 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:223 'ballot' ( temp 4-component vector of uint) 0:223 'parti' ( temp 4-component vector of uint) 0:224 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:224 'f4' ( in 4-component vector of float) 0:224 'parti' ( temp 4-component vector of uint) 0:225 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:227 'f4' ( in 4-component vector of float) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:228 'ballot' ( temp 4-component vector of uint) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:229 'ballot' ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint) 0:234 Function Definition: sm_builtins_err( ( global void) 0:234 Function Parameters: 0:236 Sequence 0:236 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:237 'gl_SMCountNV' ( in uint SMCountNV) 0:238 'gl_WarpIDNV' ( in uint WarpIDNV) 0:239 'gl_SMIDNV' ( in uint SMIDNV) 0:246 Function Definition: sm_builtins( ( global void) 0:246 Function Parameters: 0:248 Sequence 0:248 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:249 'gl_SMCountNV' ( in uint SMCountNV) 0:250 'gl_WarpIDNV' ( in uint WarpIDNV) 0:251 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:109 Function Definition: main( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 move second child to first child ( temp 4-component vector of uint) 0:111 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) 0:111 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) 0:111 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:111 Constant: 0:111 0 (const uint) 0:111 'gl_VertexID' ( gl_VertexId int VertexId) 0:111 Construct uvec4 ( temp 4-component vector of uint) 0:111 'gl_SubgroupSize' ( in uint SubgroupSize) 0:111 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:111 Constant: 0:111 0 (const uint) 0:111 Constant: 0:111 0 (const uint) 0:112 subgroupBarrier ( global void) 0:113 subgroupMemoryBarrier ( global void) 0:114 subgroupMemoryBarrierBuffer ( global void) 0:115 subgroupMemoryBarrierImage ( global void) 0:116 subgroupElect ( global bool) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/glsl.450.subgroupArithmetic.comp.out000066400000000000000000053242201506534232700252740ustar00rootroot00000000000000glsl.450.subgroupArithmetic.comp Shader version: 450 Requested GL_KHR_shader_subgroup_arithmetic Requested GL_KHR_shader_subgroup_basic local_size = (8, 1, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupAdd ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupAdd ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupAdd ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupAdd ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupAdd ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupAdd ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupAdd ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupAdd ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupAdd ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupAdd ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupAdd ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupAdd ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupAdd ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupAdd ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupAdd ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupAdd ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 subgroupMul ( global float) 0:39 direct index ( temp float) 0:39 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp 2-component vector of float) 0:40 vector swizzle ( temp 2-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 subgroupMul ( global 2-component vector of float) 0:40 vector swizzle ( temp 2-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:41 move second child to first child ( temp 3-component vector of float) 0:41 vector swizzle ( temp 3-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupMul ( global 3-component vector of float) 0:41 vector swizzle ( temp 3-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 0 (const int) 0:42 subgroupMul ( global 4-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 0 (const int) 0:44 move second child to first child ( temp int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupMul ( global int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:45 move second child to first child ( temp 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupMul ( global 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:46 move second child to first child ( temp 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupMul ( global 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:47 move second child to first child ( temp 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 1 (const int) 0:47 subgroupMul ( global 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 1 (const int) 0:49 move second child to first child ( temp uint) 0:49 direct index ( temp uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupMul ( global uint) 0:49 direct index ( temp uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:50 move second child to first child ( temp 2-component vector of uint) 0:50 vector swizzle ( temp 2-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupMul ( global 2-component vector of uint) 0:50 vector swizzle ( temp 2-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:51 move second child to first child ( temp 3-component vector of uint) 0:51 vector swizzle ( temp 3-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupMul ( global 3-component vector of uint) 0:51 vector swizzle ( temp 3-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:52 move second child to first child ( temp 4-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupMul ( global 4-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 2 (const int) 0:54 move second child to first child ( temp double) 0:54 direct index ( temp double) 0:54 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupMul ( global double) 0:54 direct index ( temp double) 0:54 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 0 (const int) 0:55 move second child to first child ( temp 2-component vector of double) 0:55 vector swizzle ( temp 2-component vector of double) 0:55 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 3 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupMul ( global 2-component vector of double) 0:55 vector swizzle ( temp 2-component vector of double) 0:55 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 3 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:56 move second child to first child ( temp 3-component vector of double) 0:56 vector swizzle ( temp 3-component vector of double) 0:56 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 3 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupMul ( global 3-component vector of double) 0:56 vector swizzle ( temp 3-component vector of double) 0:56 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 3 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:57 move second child to first child ( temp 4-component vector of double) 0:57 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 3 (const int) 0:57 subgroupMul ( global 4-component vector of double) 0:57 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 3 (const int) 0:59 move second child to first child ( temp float) 0:59 direct index ( temp float) 0:59 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupMin ( global float) 0:59 direct index ( temp float) 0:59 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:60 move second child to first child ( temp 2-component vector of float) 0:60 vector swizzle ( temp 2-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupMin ( global 2-component vector of float) 0:60 vector swizzle ( temp 2-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 vector swizzle ( temp 3-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 0 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupMin ( global 3-component vector of float) 0:61 vector swizzle ( temp 3-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 0 (const int) 0:62 subgroupMin ( global 4-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 0 (const int) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 subgroupMin ( global int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 subgroupMin ( global 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 subgroupMin ( global 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 subgroupMin ( global 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 3 (const int) 0:67 Constant: 0:67 1 (const int) 0:69 move second child to first child ( temp uint) 0:69 direct index ( temp uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 subgroupMin ( global uint) 0:69 direct index ( temp uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 0 (const int) 0:70 move second child to first child ( temp 2-component vector of uint) 0:70 vector swizzle ( temp 2-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'invocation' ( temp uint) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 subgroupMin ( global 2-component vector of uint) 0:70 vector swizzle ( temp 2-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:71 move second child to first child ( temp 3-component vector of uint) 0:71 vector swizzle ( temp 3-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 subgroupMin ( global 3-component vector of uint) 0:71 vector swizzle ( temp 3-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:72 move second child to first child ( temp 4-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupMin ( global 4-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 3 (const int) 0:72 Constant: 0:72 2 (const int) 0:74 move second child to first child ( temp double) 0:74 direct index ( temp double) 0:74 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupMin ( global double) 0:74 direct index ( temp double) 0:74 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 0 (const int) 0:75 move second child to first child ( temp 2-component vector of double) 0:75 vector swizzle ( temp 2-component vector of double) 0:75 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:75 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'invocation' ( temp uint) 0:75 Constant: 0:75 3 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 subgroupMin ( global 2-component vector of double) 0:75 vector swizzle ( temp 2-component vector of double) 0:75 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 3 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:76 move second child to first child ( temp 3-component vector of double) 0:76 vector swizzle ( temp 3-component vector of double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 3 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupMin ( global 3-component vector of double) 0:76 vector swizzle ( temp 3-component vector of double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 3 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:77 move second child to first child ( temp 4-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 3 (const int) 0:77 subgroupMin ( global 4-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 3 (const int) 0:79 move second child to first child ( temp float) 0:79 direct index ( temp float) 0:79 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 subgroupMax ( global float) 0:79 direct index ( temp float) 0:79 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:80 move second child to first child ( temp 2-component vector of float) 0:80 vector swizzle ( temp 2-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:80 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'invocation' ( temp uint) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 subgroupMax ( global 2-component vector of float) 0:80 vector swizzle ( temp 2-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:81 move second child to first child ( temp 3-component vector of float) 0:81 vector swizzle ( temp 3-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 0 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 subgroupMax ( global 3-component vector of float) 0:81 vector swizzle ( temp 3-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 2 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:82 move second child to first child ( temp 4-component vector of float) 0:82 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 0 (const int) 0:82 subgroupMax ( global 4-component vector of float) 0:82 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 3 (const int) 0:82 Constant: 0:82 0 (const int) 0:84 move second child to first child ( temp int) 0:84 direct index ( temp int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 subgroupMax ( global int) 0:84 direct index ( temp int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:85 move second child to first child ( temp 2-component vector of int) 0:85 vector swizzle ( temp 2-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:85 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'invocation' ( temp uint) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 subgroupMax ( global 2-component vector of int) 0:85 vector swizzle ( temp 2-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:86 move second child to first child ( temp 3-component vector of int) 0:86 vector swizzle ( temp 3-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:86 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'invocation' ( temp uint) 0:86 Constant: 0:86 1 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupMax ( global 3-component vector of int) 0:86 vector swizzle ( temp 3-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:87 move second child to first child ( temp 4-component vector of int) 0:87 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:87 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'invocation' ( temp uint) 0:87 Constant: 0:87 1 (const int) 0:87 subgroupMax ( global 4-component vector of int) 0:87 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 Constant: 0:87 3 (const int) 0:87 Constant: 0:87 1 (const int) 0:89 move second child to first child ( temp uint) 0:89 direct index ( temp uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:89 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'invocation' ( temp uint) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 subgroupMax ( global uint) 0:89 direct index ( temp uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 0 (const int) 0:90 move second child to first child ( temp 2-component vector of uint) 0:90 vector swizzle ( temp 2-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:90 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'invocation' ( temp uint) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 subgroupMax ( global 2-component vector of uint) 0:90 vector swizzle ( temp 2-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:91 move second child to first child ( temp 3-component vector of uint) 0:91 vector swizzle ( temp 3-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:91 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'invocation' ( temp uint) 0:91 Constant: 0:91 2 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 subgroupMax ( global 3-component vector of uint) 0:91 vector swizzle ( temp 3-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:92 move second child to first child ( temp 4-component vector of uint) 0:92 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:92 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'invocation' ( temp uint) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupMax ( global 4-component vector of uint) 0:92 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 Constant: 0:92 3 (const int) 0:92 Constant: 0:92 2 (const int) 0:94 move second child to first child ( temp double) 0:94 direct index ( temp double) 0:94 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:94 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'invocation' ( temp uint) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupMax ( global double) 0:94 direct index ( temp double) 0:94 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 0 (const int) 0:95 move second child to first child ( temp 2-component vector of double) 0:95 vector swizzle ( temp 2-component vector of double) 0:95 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:95 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'invocation' ( temp uint) 0:95 Constant: 0:95 3 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 subgroupMax ( global 2-component vector of double) 0:95 vector swizzle ( temp 2-component vector of double) 0:95 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 3 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 move second child to first child ( temp 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of double) 0:96 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:96 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'invocation' ( temp uint) 0:96 Constant: 0:96 3 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 subgroupMax ( global 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of double) 0:96 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 3 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:97 move second child to first child ( temp 4-component vector of double) 0:97 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:97 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'invocation' ( temp uint) 0:97 Constant: 0:97 3 (const int) 0:97 subgroupMax ( global 4-component vector of double) 0:97 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 Constant: 0:97 3 (const int) 0:97 Constant: 0:97 3 (const int) 0:99 move second child to first child ( temp int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'invocation' ( temp uint) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 subgroupAnd ( global int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:100 move second child to first child ( temp 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'invocation' ( temp uint) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 subgroupAnd ( global 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:101 move second child to first child ( temp 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'invocation' ( temp uint) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupAnd ( global 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:102 move second child to first child ( temp 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'invocation' ( temp uint) 0:102 Constant: 0:102 1 (const int) 0:102 subgroupAnd ( global 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 Constant: 0:102 3 (const int) 0:102 Constant: 0:102 1 (const int) 0:104 move second child to first child ( temp uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'invocation' ( temp uint) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 subgroupAnd ( global uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:105 move second child to first child ( temp 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'invocation' ( temp uint) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 subgroupAnd ( global 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:106 move second child to first child ( temp 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'invocation' ( temp uint) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 subgroupAnd ( global 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 Constant: 0:106 2 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:107 move second child to first child ( temp 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'invocation' ( temp uint) 0:107 Constant: 0:107 2 (const int) 0:107 subgroupAnd ( global 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 Constant: 0:107 3 (const int) 0:107 Constant: 0:107 2 (const int) 0:109 move second child to first child ( temp int) 0:109 direct index ( temp int) 0:109 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:109 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'invocation' ( temp uint) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Convert bool to int ( temp int) 0:109 subgroupAnd ( global bool) 0:109 Compare Less Than ( temp bool) 0:109 direct index ( temp int) 0:109 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 0 (const int) 0:110 move second child to first child ( temp 2-component vector of int) 0:110 vector swizzle ( temp 2-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:110 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'invocation' ( temp uint) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Convert bool to int ( temp 2-component vector of int) 0:110 subgroupAnd ( global 2-component vector of bool) 0:110 Compare Less Than ( global 2-component vector of bool) 0:110 vector swizzle ( temp 2-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 0 (const int) 0:111 move second child to first child ( temp 3-component vector of int) 0:111 vector swizzle ( temp 3-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'invocation' ( temp uint) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 Convert bool to int ( temp 3-component vector of int) 0:111 subgroupAnd ( global 3-component vector of bool) 0:111 Compare Less Than ( global 3-component vector of bool) 0:111 vector swizzle ( temp 3-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 0 (const int) 0:111 0 (const int) 0:112 move second child to first child ( temp 4-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'invocation' ( temp uint) 0:112 Constant: 0:112 1 (const int) 0:112 Convert bool to int ( temp 4-component vector of int) 0:112 subgroupAnd ( global 4-component vector of bool) 0:112 Compare Less Than ( global 4-component vector of bool) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:114 move second child to first child ( temp int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'invocation' ( temp uint) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 subgroupOr ( global int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:115 move second child to first child ( temp 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'invocation' ( temp uint) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 subgroupOr ( global 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:116 move second child to first child ( temp 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'invocation' ( temp uint) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 subgroupOr ( global 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:117 move second child to first child ( temp 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'invocation' ( temp uint) 0:117 Constant: 0:117 1 (const int) 0:117 subgroupOr ( global 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 Constant: 0:117 3 (const int) 0:117 Constant: 0:117 1 (const int) 0:119 move second child to first child ( temp uint) 0:119 direct index ( temp uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'invocation' ( temp uint) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 subgroupOr ( global uint) 0:119 direct index ( temp uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 0 (const int) 0:120 move second child to first child ( temp 2-component vector of uint) 0:120 vector swizzle ( temp 2-component vector of uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:120 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'invocation' ( temp uint) 0:120 Constant: 0:120 2 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 subgroupOr ( global 2-component vector of uint) 0:120 vector swizzle ( temp 2-component vector of uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:121 move second child to first child ( temp 3-component vector of uint) 0:121 vector swizzle ( temp 3-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:121 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'invocation' ( temp uint) 0:121 Constant: 0:121 2 (const int) 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 subgroupOr ( global 3-component vector of uint) 0:121 vector swizzle ( temp 3-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 Constant: 0:121 2 (const int) 0:121 Constant: 0:121 2 (const int) 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 move second child to first child ( temp 4-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:122 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'invocation' ( temp uint) 0:122 Constant: 0:122 2 (const int) 0:122 subgroupOr ( global 4-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 Constant: 0:122 3 (const int) 0:122 Constant: 0:122 2 (const int) 0:124 move second child to first child ( temp int) 0:124 direct index ( temp int) 0:124 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:124 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'invocation' ( temp uint) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Convert bool to int ( temp int) 0:124 subgroupOr ( global bool) 0:124 Compare Less Than ( temp bool) 0:124 direct index ( temp int) 0:124 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:125 move second child to first child ( temp 2-component vector of int) 0:125 vector swizzle ( temp 2-component vector of int) 0:125 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:125 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'invocation' ( temp uint) 0:125 Constant: 0:125 1 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Convert bool to int ( temp 2-component vector of int) 0:125 subgroupOr ( global 2-component vector of bool) 0:125 Compare Less Than ( global 2-component vector of bool) 0:125 vector swizzle ( temp 2-component vector of int) 0:125 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 0 (const int) 0:126 move second child to first child ( temp 3-component vector of int) 0:126 vector swizzle ( temp 3-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'invocation' ( temp uint) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Convert bool to int ( temp 3-component vector of int) 0:126 subgroupOr ( global 3-component vector of bool) 0:126 Compare Less Than ( global 3-component vector of bool) 0:126 vector swizzle ( temp 3-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 0 (const int) 0:126 0 (const int) 0:127 move second child to first child ( temp 4-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'invocation' ( temp uint) 0:127 Constant: 0:127 1 (const int) 0:127 Convert bool to int ( temp 4-component vector of int) 0:127 subgroupOr ( global 4-component vector of bool) 0:127 Compare Less Than ( global 4-component vector of bool) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:129 move second child to first child ( temp int) 0:129 direct index ( temp int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'invocation' ( temp uint) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 0 (const int) 0:129 subgroupXor ( global int) 0:129 direct index ( temp int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 0 (const int) 0:130 move second child to first child ( temp 2-component vector of int) 0:130 vector swizzle ( temp 2-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:130 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'invocation' ( temp uint) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 subgroupXor ( global 2-component vector of int) 0:130 vector swizzle ( temp 2-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:131 move second child to first child ( temp 3-component vector of int) 0:131 vector swizzle ( temp 3-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:131 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'invocation' ( temp uint) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 2 (const int) 0:131 subgroupXor ( global 3-component vector of int) 0:131 vector swizzle ( temp 3-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 2 (const int) 0:132 move second child to first child ( temp 4-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:132 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'invocation' ( temp uint) 0:132 Constant: 0:132 1 (const int) 0:132 subgroupXor ( global 4-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 Constant: 0:132 3 (const int) 0:132 Constant: 0:132 1 (const int) 0:134 move second child to first child ( temp uint) 0:134 direct index ( temp uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'invocation' ( temp uint) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 0 (const int) 0:134 subgroupXor ( global uint) 0:134 direct index ( temp uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 0 (const int) 0:135 move second child to first child ( temp 2-component vector of uint) 0:135 vector swizzle ( temp 2-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:135 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'invocation' ( temp uint) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 subgroupXor ( global 2-component vector of uint) 0:135 vector swizzle ( temp 2-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:136 move second child to first child ( temp 3-component vector of uint) 0:136 vector swizzle ( temp 3-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:136 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'invocation' ( temp uint) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 subgroupXor ( global 3-component vector of uint) 0:136 vector swizzle ( temp 3-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 Constant: 0:136 2 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:137 move second child to first child ( temp 4-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:137 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'invocation' ( temp uint) 0:137 Constant: 0:137 2 (const int) 0:137 subgroupXor ( global 4-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 Constant: 0:137 3 (const int) 0:137 Constant: 0:137 2 (const int) 0:139 move second child to first child ( temp int) 0:139 direct index ( temp int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'invocation' ( temp uint) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Convert bool to int ( temp int) 0:139 subgroupXor ( global bool) 0:139 Compare Less Than ( temp bool) 0:139 direct index ( temp int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 0 (const int) 0:140 move second child to first child ( temp 2-component vector of int) 0:140 vector swizzle ( temp 2-component vector of int) 0:140 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:140 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'invocation' ( temp uint) 0:140 Constant: 0:140 1 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Convert bool to int ( temp 2-component vector of int) 0:140 subgroupXor ( global 2-component vector of bool) 0:140 Compare Less Than ( global 2-component vector of bool) 0:140 vector swizzle ( temp 2-component vector of int) 0:140 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 0 (const int) 0:141 move second child to first child ( temp 3-component vector of int) 0:141 vector swizzle ( temp 3-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'invocation' ( temp uint) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 2 (const int) 0:141 Convert bool to int ( temp 3-component vector of int) 0:141 subgroupXor ( global 3-component vector of bool) 0:141 Compare Less Than ( global 3-component vector of bool) 0:141 vector swizzle ( temp 3-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 2 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 0 (const int) 0:141 0 (const int) 0:142 move second child to first child ( temp 4-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'invocation' ( temp uint) 0:142 Constant: 0:142 1 (const int) 0:142 Convert bool to int ( temp 4-component vector of int) 0:142 subgroupXor ( global 4-component vector of bool) 0:142 Compare Less Than ( global 4-component vector of bool) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:144 move second child to first child ( temp float) 0:144 direct index ( temp float) 0:144 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:144 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'invocation' ( temp uint) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 0 (const int) 0:144 subgroupInclusiveAdd ( global float) 0:144 direct index ( temp float) 0:144 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:144 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 0 (const int) 0:145 move second child to first child ( temp 2-component vector of float) 0:145 vector swizzle ( temp 2-component vector of float) 0:145 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:145 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:145 'invocation' ( temp uint) 0:145 Constant: 0:145 0 (const int) 0:145 Sequence 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 subgroupInclusiveAdd ( global 2-component vector of float) 0:145 vector swizzle ( temp 2-component vector of float) 0:145 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 Sequence 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 1 (const int) 0:146 move second child to first child ( temp 3-component vector of float) 0:146 vector swizzle ( temp 3-component vector of float) 0:146 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:146 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'invocation' ( temp uint) 0:146 Constant: 0:146 0 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 2 (const int) 0:146 subgroupInclusiveAdd ( global 3-component vector of float) 0:146 vector swizzle ( temp 3-component vector of float) 0:146 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 Constant: 0:146 2 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 2 (const int) 0:147 move second child to first child ( temp 4-component vector of float) 0:147 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:147 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'invocation' ( temp uint) 0:147 Constant: 0:147 0 (const int) 0:147 subgroupInclusiveAdd ( global 4-component vector of float) 0:147 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:147 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 Constant: 0:147 3 (const int) 0:147 Constant: 0:147 0 (const int) 0:149 move second child to first child ( temp int) 0:149 direct index ( temp int) 0:149 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:149 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'invocation' ( temp uint) 0:149 Constant: 0:149 1 (const int) 0:149 Constant: 0:149 0 (const int) 0:149 subgroupInclusiveAdd ( global int) 0:149 direct index ( temp int) 0:149 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:149 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 1 (const int) 0:149 Constant: 0:149 0 (const int) 0:150 move second child to first child ( temp 2-component vector of int) 0:150 vector swizzle ( temp 2-component vector of int) 0:150 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:150 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:150 'invocation' ( temp uint) 0:150 Constant: 0:150 1 (const int) 0:150 Sequence 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 subgroupInclusiveAdd ( global 2-component vector of int) 0:150 vector swizzle ( temp 2-component vector of int) 0:150 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Sequence 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:151 move second child to first child ( temp 3-component vector of int) 0:151 vector swizzle ( temp 3-component vector of int) 0:151 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:151 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'invocation' ( temp uint) 0:151 Constant: 0:151 1 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 2 (const int) 0:151 subgroupInclusiveAdd ( global 3-component vector of int) 0:151 vector swizzle ( temp 3-component vector of int) 0:151 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 Constant: 0:151 2 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 2 (const int) 0:152 move second child to first child ( temp 4-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:152 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'invocation' ( temp uint) 0:152 Constant: 0:152 1 (const int) 0:152 subgroupInclusiveAdd ( global 4-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:152 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 Constant: 0:152 3 (const int) 0:152 Constant: 0:152 1 (const int) 0:154 move second child to first child ( temp uint) 0:154 direct index ( temp uint) 0:154 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:154 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'invocation' ( temp uint) 0:154 Constant: 0:154 2 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 subgroupInclusiveAdd ( global uint) 0:154 direct index ( temp uint) 0:154 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:154 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 2 (const int) 0:154 Constant: 0:154 0 (const int) 0:155 move second child to first child ( temp 2-component vector of uint) 0:155 vector swizzle ( temp 2-component vector of uint) 0:155 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:155 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:155 'invocation' ( temp uint) 0:155 Constant: 0:155 2 (const int) 0:155 Sequence 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 1 (const int) 0:155 subgroupInclusiveAdd ( global 2-component vector of uint) 0:155 vector swizzle ( temp 2-component vector of uint) 0:155 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:155 Constant: 0:155 1 (const int) 0:155 Constant: 0:155 2 (const int) 0:155 Sequence 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 1 (const int) 0:156 move second child to first child ( temp 3-component vector of uint) 0:156 vector swizzle ( temp 3-component vector of uint) 0:156 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:156 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'invocation' ( temp uint) 0:156 Constant: 0:156 2 (const int) 0:156 Sequence 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 2 (const int) 0:156 subgroupInclusiveAdd ( global 3-component vector of uint) 0:156 vector swizzle ( temp 3-component vector of uint) 0:156 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 Constant: 0:156 2 (const int) 0:156 Constant: 0:156 2 (const int) 0:156 Sequence 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 2 (const int) 0:157 move second child to first child ( temp 4-component vector of uint) 0:157 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:157 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'invocation' ( temp uint) 0:157 Constant: 0:157 2 (const int) 0:157 subgroupInclusiveAdd ( global 4-component vector of uint) 0:157 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:157 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 Constant: 0:157 3 (const int) 0:157 Constant: 0:157 2 (const int) 0:159 move second child to first child ( temp double) 0:159 direct index ( temp double) 0:159 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:159 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'invocation' ( temp uint) 0:159 Constant: 0:159 3 (const int) 0:159 Constant: 0:159 0 (const int) 0:159 subgroupInclusiveAdd ( global double) 0:159 direct index ( temp double) 0:159 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:159 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 3 (const int) 0:159 Constant: 0:159 0 (const int) 0:160 move second child to first child ( temp 2-component vector of double) 0:160 vector swizzle ( temp 2-component vector of double) 0:160 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:160 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:160 'invocation' ( temp uint) 0:160 Constant: 0:160 3 (const int) 0:160 Sequence 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 subgroupInclusiveAdd ( global 2-component vector of double) 0:160 vector swizzle ( temp 2-component vector of double) 0:160 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:160 Constant: 0:160 1 (const int) 0:160 Constant: 0:160 3 (const int) 0:160 Sequence 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:161 move second child to first child ( temp 3-component vector of double) 0:161 vector swizzle ( temp 3-component vector of double) 0:161 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:161 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'invocation' ( temp uint) 0:161 Constant: 0:161 3 (const int) 0:161 Sequence 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 Constant: 0:161 2 (const int) 0:161 subgroupInclusiveAdd ( global 3-component vector of double) 0:161 vector swizzle ( temp 3-component vector of double) 0:161 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 Constant: 0:161 2 (const int) 0:161 Constant: 0:161 3 (const int) 0:161 Sequence 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 Constant: 0:161 2 (const int) 0:162 move second child to first child ( temp 4-component vector of double) 0:162 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:162 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'invocation' ( temp uint) 0:162 Constant: 0:162 3 (const int) 0:162 subgroupInclusiveAdd ( global 4-component vector of double) 0:162 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:162 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 Constant: 0:162 3 (const int) 0:162 Constant: 0:162 3 (const int) 0:164 move second child to first child ( temp float) 0:164 direct index ( temp float) 0:164 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:164 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'invocation' ( temp uint) 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 0 (const int) 0:164 subgroupInclusiveMul ( global float) 0:164 direct index ( temp float) 0:164 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:164 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 0 (const int) 0:165 move second child to first child ( temp 2-component vector of float) 0:165 vector swizzle ( temp 2-component vector of float) 0:165 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:165 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:165 'invocation' ( temp uint) 0:165 Constant: 0:165 0 (const int) 0:165 Sequence 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 subgroupInclusiveMul ( global 2-component vector of float) 0:165 vector swizzle ( temp 2-component vector of float) 0:165 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 0 (const int) 0:165 Sequence 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:166 move second child to first child ( temp 3-component vector of float) 0:166 vector swizzle ( temp 3-component vector of float) 0:166 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:166 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'invocation' ( temp uint) 0:166 Constant: 0:166 0 (const int) 0:166 Sequence 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 2 (const int) 0:166 subgroupInclusiveMul ( global 3-component vector of float) 0:166 vector swizzle ( temp 3-component vector of float) 0:166 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 Constant: 0:166 2 (const int) 0:166 Constant: 0:166 0 (const int) 0:166 Sequence 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 2 (const int) 0:167 move second child to first child ( temp 4-component vector of float) 0:167 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:167 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'invocation' ( temp uint) 0:167 Constant: 0:167 0 (const int) 0:167 subgroupInclusiveMul ( global 4-component vector of float) 0:167 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:167 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 Constant: 0:167 3 (const int) 0:167 Constant: 0:167 0 (const int) 0:169 move second child to first child ( temp int) 0:169 direct index ( temp int) 0:169 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:169 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'invocation' ( temp uint) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 0 (const int) 0:169 subgroupInclusiveMul ( global int) 0:169 direct index ( temp int) 0:169 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:169 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 Constant: 0:169 0 (const int) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 0 (const int) 0:170 move second child to first child ( temp 2-component vector of int) 0:170 vector swizzle ( temp 2-component vector of int) 0:170 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:170 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:170 'invocation' ( temp uint) 0:170 Constant: 0:170 1 (const int) 0:170 Sequence 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 1 (const int) 0:170 subgroupInclusiveMul ( global 2-component vector of int) 0:170 vector swizzle ( temp 2-component vector of int) 0:170 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:170 Constant: 0:170 1 (const int) 0:170 Constant: 0:170 1 (const int) 0:170 Sequence 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 1 (const int) 0:171 move second child to first child ( temp 3-component vector of int) 0:171 vector swizzle ( temp 3-component vector of int) 0:171 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:171 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'invocation' ( temp uint) 0:171 Constant: 0:171 1 (const int) 0:171 Sequence 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 Constant: 0:171 2 (const int) 0:171 subgroupInclusiveMul ( global 3-component vector of int) 0:171 vector swizzle ( temp 3-component vector of int) 0:171 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 Constant: 0:171 2 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 Sequence 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 Constant: 0:171 2 (const int) 0:172 move second child to first child ( temp 4-component vector of int) 0:172 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:172 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'invocation' ( temp uint) 0:172 Constant: 0:172 1 (const int) 0:172 subgroupInclusiveMul ( global 4-component vector of int) 0:172 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:172 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 Constant: 0:172 3 (const int) 0:172 Constant: 0:172 1 (const int) 0:174 move second child to first child ( temp uint) 0:174 direct index ( temp uint) 0:174 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:174 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'invocation' ( temp uint) 0:174 Constant: 0:174 2 (const int) 0:174 Constant: 0:174 0 (const int) 0:174 subgroupInclusiveMul ( global uint) 0:174 direct index ( temp uint) 0:174 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:174 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 Constant: 0:174 0 (const int) 0:174 Constant: 0:174 2 (const int) 0:174 Constant: 0:174 0 (const int) 0:175 move second child to first child ( temp 2-component vector of uint) 0:175 vector swizzle ( temp 2-component vector of uint) 0:175 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:175 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:175 'invocation' ( temp uint) 0:175 Constant: 0:175 2 (const int) 0:175 Sequence 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 subgroupInclusiveMul ( global 2-component vector of uint) 0:175 vector swizzle ( temp 2-component vector of uint) 0:175 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:175 Constant: 0:175 1 (const int) 0:175 Constant: 0:175 2 (const int) 0:175 Sequence 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 1 (const int) 0:176 move second child to first child ( temp 3-component vector of uint) 0:176 vector swizzle ( temp 3-component vector of uint) 0:176 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:176 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'invocation' ( temp uint) 0:176 Constant: 0:176 2 (const int) 0:176 Sequence 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 2 (const int) 0:176 subgroupInclusiveMul ( global 3-component vector of uint) 0:176 vector swizzle ( temp 3-component vector of uint) 0:176 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 Constant: 0:176 2 (const int) 0:176 Constant: 0:176 2 (const int) 0:176 Sequence 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 2 (const int) 0:177 move second child to first child ( temp 4-component vector of uint) 0:177 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:177 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'invocation' ( temp uint) 0:177 Constant: 0:177 2 (const int) 0:177 subgroupInclusiveMul ( global 4-component vector of uint) 0:177 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:177 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 Constant: 0:177 3 (const int) 0:177 Constant: 0:177 2 (const int) 0:179 move second child to first child ( temp double) 0:179 direct index ( temp double) 0:179 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:179 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'invocation' ( temp uint) 0:179 Constant: 0:179 3 (const int) 0:179 Constant: 0:179 0 (const int) 0:179 subgroupInclusiveMul ( global double) 0:179 direct index ( temp double) 0:179 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:179 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 Constant: 0:179 0 (const int) 0:179 Constant: 0:179 3 (const int) 0:179 Constant: 0:179 0 (const int) 0:180 move second child to first child ( temp 2-component vector of double) 0:180 vector swizzle ( temp 2-component vector of double) 0:180 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:180 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:180 'invocation' ( temp uint) 0:180 Constant: 0:180 3 (const int) 0:180 Sequence 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 subgroupInclusiveMul ( global 2-component vector of double) 0:180 vector swizzle ( temp 2-component vector of double) 0:180 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 3 (const int) 0:180 Sequence 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:181 move second child to first child ( temp 3-component vector of double) 0:181 vector swizzle ( temp 3-component vector of double) 0:181 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:181 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'invocation' ( temp uint) 0:181 Constant: 0:181 3 (const int) 0:181 Sequence 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 Constant: 0:181 2 (const int) 0:181 subgroupInclusiveMul ( global 3-component vector of double) 0:181 vector swizzle ( temp 3-component vector of double) 0:181 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 Constant: 0:181 2 (const int) 0:181 Constant: 0:181 3 (const int) 0:181 Sequence 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 Constant: 0:181 2 (const int) 0:182 move second child to first child ( temp 4-component vector of double) 0:182 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:182 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'invocation' ( temp uint) 0:182 Constant: 0:182 3 (const int) 0:182 subgroupInclusiveMul ( global 4-component vector of double) 0:182 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:182 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 Constant: 0:182 3 (const int) 0:182 Constant: 0:182 3 (const int) 0:184 move second child to first child ( temp float) 0:184 direct index ( temp float) 0:184 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:184 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'invocation' ( temp uint) 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 0 (const int) 0:184 subgroupInclusiveMin ( global float) 0:184 direct index ( temp float) 0:184 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:184 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 0 (const int) 0:185 move second child to first child ( temp 2-component vector of float) 0:185 vector swizzle ( temp 2-component vector of float) 0:185 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:185 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:185 'invocation' ( temp uint) 0:185 Constant: 0:185 0 (const int) 0:185 Sequence 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 subgroupInclusiveMin ( global 2-component vector of float) 0:185 vector swizzle ( temp 2-component vector of float) 0:185 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:185 Constant: 0:185 1 (const int) 0:185 Constant: 0:185 0 (const int) 0:185 Sequence 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 1 (const int) 0:186 move second child to first child ( temp 3-component vector of float) 0:186 vector swizzle ( temp 3-component vector of float) 0:186 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:186 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'invocation' ( temp uint) 0:186 Constant: 0:186 0 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 2 (const int) 0:186 subgroupInclusiveMin ( global 3-component vector of float) 0:186 vector swizzle ( temp 3-component vector of float) 0:186 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 Constant: 0:186 2 (const int) 0:186 Constant: 0:186 0 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 2 (const int) 0:187 move second child to first child ( temp 4-component vector of float) 0:187 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:187 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'invocation' ( temp uint) 0:187 Constant: 0:187 0 (const int) 0:187 subgroupInclusiveMin ( global 4-component vector of float) 0:187 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:187 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 Constant: 0:187 3 (const int) 0:187 Constant: 0:187 0 (const int) 0:189 move second child to first child ( temp int) 0:189 direct index ( temp int) 0:189 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:189 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'invocation' ( temp uint) 0:189 Constant: 0:189 1 (const int) 0:189 Constant: 0:189 0 (const int) 0:189 subgroupInclusiveMin ( global int) 0:189 direct index ( temp int) 0:189 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:189 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 Constant: 0:189 0 (const int) 0:189 Constant: 0:189 1 (const int) 0:189 Constant: 0:189 0 (const int) 0:190 move second child to first child ( temp 2-component vector of int) 0:190 vector swizzle ( temp 2-component vector of int) 0:190 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:190 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:190 'invocation' ( temp uint) 0:190 Constant: 0:190 1 (const int) 0:190 Sequence 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 1 (const int) 0:190 subgroupInclusiveMin ( global 2-component vector of int) 0:190 vector swizzle ( temp 2-component vector of int) 0:190 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:190 Constant: 0:190 1 (const int) 0:190 Constant: 0:190 1 (const int) 0:190 Sequence 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 1 (const int) 0:191 move second child to first child ( temp 3-component vector of int) 0:191 vector swizzle ( temp 3-component vector of int) 0:191 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:191 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'invocation' ( temp uint) 0:191 Constant: 0:191 1 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 2 (const int) 0:191 subgroupInclusiveMin ( global 3-component vector of int) 0:191 vector swizzle ( temp 3-component vector of int) 0:191 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 Constant: 0:191 2 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 2 (const int) 0:192 move second child to first child ( temp 4-component vector of int) 0:192 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:192 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'invocation' ( temp uint) 0:192 Constant: 0:192 1 (const int) 0:192 subgroupInclusiveMin ( global 4-component vector of int) 0:192 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:192 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 Constant: 0:192 3 (const int) 0:192 Constant: 0:192 1 (const int) 0:194 move second child to first child ( temp uint) 0:194 direct index ( temp uint) 0:194 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:194 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'invocation' ( temp uint) 0:194 Constant: 0:194 2 (const int) 0:194 Constant: 0:194 0 (const int) 0:194 subgroupInclusiveMin ( global uint) 0:194 direct index ( temp uint) 0:194 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:194 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 Constant: 0:194 0 (const int) 0:194 Constant: 0:194 2 (const int) 0:194 Constant: 0:194 0 (const int) 0:195 move second child to first child ( temp 2-component vector of uint) 0:195 vector swizzle ( temp 2-component vector of uint) 0:195 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:195 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:195 'invocation' ( temp uint) 0:195 Constant: 0:195 2 (const int) 0:195 Sequence 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 subgroupInclusiveMin ( global 2-component vector of uint) 0:195 vector swizzle ( temp 2-component vector of uint) 0:195 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 2 (const int) 0:195 Sequence 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:196 move second child to first child ( temp 3-component vector of uint) 0:196 vector swizzle ( temp 3-component vector of uint) 0:196 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:196 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'invocation' ( temp uint) 0:196 Constant: 0:196 2 (const int) 0:196 Sequence 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 2 (const int) 0:196 subgroupInclusiveMin ( global 3-component vector of uint) 0:196 vector swizzle ( temp 3-component vector of uint) 0:196 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 Constant: 0:196 2 (const int) 0:196 Constant: 0:196 2 (const int) 0:196 Sequence 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 2 (const int) 0:197 move second child to first child ( temp 4-component vector of uint) 0:197 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:197 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'invocation' ( temp uint) 0:197 Constant: 0:197 2 (const int) 0:197 subgroupInclusiveMin ( global 4-component vector of uint) 0:197 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:197 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 Constant: 0:197 3 (const int) 0:197 Constant: 0:197 2 (const int) 0:199 move second child to first child ( temp double) 0:199 direct index ( temp double) 0:199 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:199 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'invocation' ( temp uint) 0:199 Constant: 0:199 3 (const int) 0:199 Constant: 0:199 0 (const int) 0:199 subgroupInclusiveMin ( global double) 0:199 direct index ( temp double) 0:199 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:199 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 Constant: 0:199 0 (const int) 0:199 Constant: 0:199 3 (const int) 0:199 Constant: 0:199 0 (const int) 0:200 move second child to first child ( temp 2-component vector of double) 0:200 vector swizzle ( temp 2-component vector of double) 0:200 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:200 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:200 'invocation' ( temp uint) 0:200 Constant: 0:200 3 (const int) 0:200 Sequence 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 subgroupInclusiveMin ( global 2-component vector of double) 0:200 vector swizzle ( temp 2-component vector of double) 0:200 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:200 Constant: 0:200 1 (const int) 0:200 Constant: 0:200 3 (const int) 0:200 Sequence 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:201 move second child to first child ( temp 3-component vector of double) 0:201 vector swizzle ( temp 3-component vector of double) 0:201 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:201 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'invocation' ( temp uint) 0:201 Constant: 0:201 3 (const int) 0:201 Sequence 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:201 subgroupInclusiveMin ( global 3-component vector of double) 0:201 vector swizzle ( temp 3-component vector of double) 0:201 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 Constant: 0:201 2 (const int) 0:201 Constant: 0:201 3 (const int) 0:201 Sequence 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:202 move second child to first child ( temp 4-component vector of double) 0:202 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:202 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'invocation' ( temp uint) 0:202 Constant: 0:202 3 (const int) 0:202 subgroupInclusiveMin ( global 4-component vector of double) 0:202 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:202 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 Constant: 0:202 3 (const int) 0:202 Constant: 0:202 3 (const int) 0:204 move second child to first child ( temp float) 0:204 direct index ( temp float) 0:204 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:204 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'invocation' ( temp uint) 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 0 (const int) 0:204 subgroupInclusiveMax ( global float) 0:204 direct index ( temp float) 0:204 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:204 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 0 (const int) 0:205 move second child to first child ( temp 2-component vector of float) 0:205 vector swizzle ( temp 2-component vector of float) 0:205 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:205 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:205 'invocation' ( temp uint) 0:205 Constant: 0:205 0 (const int) 0:205 Sequence 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 subgroupInclusiveMax ( global 2-component vector of float) 0:205 vector swizzle ( temp 2-component vector of float) 0:205 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 0 (const int) 0:205 Sequence 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:206 move second child to first child ( temp 3-component vector of float) 0:206 vector swizzle ( temp 3-component vector of float) 0:206 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:206 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'invocation' ( temp uint) 0:206 Constant: 0:206 0 (const int) 0:206 Sequence 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 2 (const int) 0:206 subgroupInclusiveMax ( global 3-component vector of float) 0:206 vector swizzle ( temp 3-component vector of float) 0:206 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 Constant: 0:206 2 (const int) 0:206 Constant: 0:206 0 (const int) 0:206 Sequence 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 2 (const int) 0:207 move second child to first child ( temp 4-component vector of float) 0:207 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:207 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'invocation' ( temp uint) 0:207 Constant: 0:207 0 (const int) 0:207 subgroupInclusiveMax ( global 4-component vector of float) 0:207 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:207 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 Constant: 0:207 3 (const int) 0:207 Constant: 0:207 0 (const int) 0:209 move second child to first child ( temp int) 0:209 direct index ( temp int) 0:209 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:209 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'invocation' ( temp uint) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 0 (const int) 0:209 subgroupInclusiveMax ( global int) 0:209 direct index ( temp int) 0:209 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:209 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 Constant: 0:209 0 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 0 (const int) 0:210 move second child to first child ( temp 2-component vector of int) 0:210 vector swizzle ( temp 2-component vector of int) 0:210 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:210 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:210 'invocation' ( temp uint) 0:210 Constant: 0:210 1 (const int) 0:210 Sequence 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 subgroupInclusiveMax ( global 2-component vector of int) 0:210 vector swizzle ( temp 2-component vector of int) 0:210 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:210 Constant: 0:210 1 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Sequence 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 1 (const int) 0:211 move second child to first child ( temp 3-component vector of int) 0:211 vector swizzle ( temp 3-component vector of int) 0:211 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:211 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'invocation' ( temp uint) 0:211 Constant: 0:211 1 (const int) 0:211 Sequence 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 2 (const int) 0:211 subgroupInclusiveMax ( global 3-component vector of int) 0:211 vector swizzle ( temp 3-component vector of int) 0:211 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 Constant: 0:211 2 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Sequence 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 2 (const int) 0:212 move second child to first child ( temp 4-component vector of int) 0:212 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:212 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'invocation' ( temp uint) 0:212 Constant: 0:212 1 (const int) 0:212 subgroupInclusiveMax ( global 4-component vector of int) 0:212 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:212 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 Constant: 0:212 3 (const int) 0:212 Constant: 0:212 1 (const int) 0:214 move second child to first child ( temp uint) 0:214 direct index ( temp uint) 0:214 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:214 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'invocation' ( temp uint) 0:214 Constant: 0:214 2 (const int) 0:214 Constant: 0:214 0 (const int) 0:214 subgroupInclusiveMax ( global uint) 0:214 direct index ( temp uint) 0:214 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:214 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 Constant: 0:214 0 (const int) 0:214 Constant: 0:214 2 (const int) 0:214 Constant: 0:214 0 (const int) 0:215 move second child to first child ( temp 2-component vector of uint) 0:215 vector swizzle ( temp 2-component vector of uint) 0:215 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:215 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:215 'invocation' ( temp uint) 0:215 Constant: 0:215 2 (const int) 0:215 Sequence 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 subgroupInclusiveMax ( global 2-component vector of uint) 0:215 vector swizzle ( temp 2-component vector of uint) 0:215 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 2 (const int) 0:215 Sequence 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:216 move second child to first child ( temp 3-component vector of uint) 0:216 vector swizzle ( temp 3-component vector of uint) 0:216 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:216 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'invocation' ( temp uint) 0:216 Constant: 0:216 2 (const int) 0:216 Sequence 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 2 (const int) 0:216 subgroupInclusiveMax ( global 3-component vector of uint) 0:216 vector swizzle ( temp 3-component vector of uint) 0:216 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 Constant: 0:216 2 (const int) 0:216 Constant: 0:216 2 (const int) 0:216 Sequence 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 2 (const int) 0:217 move second child to first child ( temp 4-component vector of uint) 0:217 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:217 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'invocation' ( temp uint) 0:217 Constant: 0:217 2 (const int) 0:217 subgroupInclusiveMax ( global 4-component vector of uint) 0:217 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:217 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 Constant: 0:217 3 (const int) 0:217 Constant: 0:217 2 (const int) 0:219 move second child to first child ( temp double) 0:219 direct index ( temp double) 0:219 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:219 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'invocation' ( temp uint) 0:219 Constant: 0:219 3 (const int) 0:219 Constant: 0:219 0 (const int) 0:219 subgroupInclusiveMax ( global double) 0:219 direct index ( temp double) 0:219 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:219 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 Constant: 0:219 0 (const int) 0:219 Constant: 0:219 3 (const int) 0:219 Constant: 0:219 0 (const int) 0:220 move second child to first child ( temp 2-component vector of double) 0:220 vector swizzle ( temp 2-component vector of double) 0:220 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:220 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:220 'invocation' ( temp uint) 0:220 Constant: 0:220 3 (const int) 0:220 Sequence 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 subgroupInclusiveMax ( global 2-component vector of double) 0:220 vector swizzle ( temp 2-component vector of double) 0:220 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 3 (const int) 0:220 Sequence 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:221 move second child to first child ( temp 3-component vector of double) 0:221 vector swizzle ( temp 3-component vector of double) 0:221 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:221 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'invocation' ( temp uint) 0:221 Constant: 0:221 3 (const int) 0:221 Sequence 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 Constant: 0:221 2 (const int) 0:221 subgroupInclusiveMax ( global 3-component vector of double) 0:221 vector swizzle ( temp 3-component vector of double) 0:221 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 Constant: 0:221 2 (const int) 0:221 Constant: 0:221 3 (const int) 0:221 Sequence 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 Constant: 0:221 2 (const int) 0:222 move second child to first child ( temp 4-component vector of double) 0:222 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:222 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'invocation' ( temp uint) 0:222 Constant: 0:222 3 (const int) 0:222 subgroupInclusiveMax ( global 4-component vector of double) 0:222 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:222 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 Constant: 0:222 3 (const int) 0:222 Constant: 0:222 3 (const int) 0:224 move second child to first child ( temp int) 0:224 direct index ( temp int) 0:224 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:224 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'invocation' ( temp uint) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 0 (const int) 0:224 subgroupInclusiveAnd ( global int) 0:224 direct index ( temp int) 0:224 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:224 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 Constant: 0:224 0 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 0 (const int) 0:225 move second child to first child ( temp 2-component vector of int) 0:225 vector swizzle ( temp 2-component vector of int) 0:225 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:225 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:225 'invocation' ( temp uint) 0:225 Constant: 0:225 1 (const int) 0:225 Sequence 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 subgroupInclusiveAnd ( global 2-component vector of int) 0:225 vector swizzle ( temp 2-component vector of int) 0:225 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Sequence 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 1 (const int) 0:226 move second child to first child ( temp 3-component vector of int) 0:226 vector swizzle ( temp 3-component vector of int) 0:226 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:226 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'invocation' ( temp uint) 0:226 Constant: 0:226 1 (const int) 0:226 Sequence 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 2 (const int) 0:226 subgroupInclusiveAnd ( global 3-component vector of int) 0:226 vector swizzle ( temp 3-component vector of int) 0:226 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 Constant: 0:226 2 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Sequence 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 2 (const int) 0:227 move second child to first child ( temp 4-component vector of int) 0:227 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:227 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'invocation' ( temp uint) 0:227 Constant: 0:227 1 (const int) 0:227 subgroupInclusiveAnd ( global 4-component vector of int) 0:227 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:227 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 Constant: 0:227 3 (const int) 0:227 Constant: 0:227 1 (const int) 0:229 move second child to first child ( temp uint) 0:229 direct index ( temp uint) 0:229 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:229 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'invocation' ( temp uint) 0:229 Constant: 0:229 2 (const int) 0:229 Constant: 0:229 0 (const int) 0:229 subgroupInclusiveAnd ( global uint) 0:229 direct index ( temp uint) 0:229 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:229 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 Constant: 0:229 0 (const int) 0:229 Constant: 0:229 2 (const int) 0:229 Constant: 0:229 0 (const int) 0:230 move second child to first child ( temp 2-component vector of uint) 0:230 vector swizzle ( temp 2-component vector of uint) 0:230 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:230 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:230 'invocation' ( temp uint) 0:230 Constant: 0:230 2 (const int) 0:230 Sequence 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 subgroupInclusiveAnd ( global 2-component vector of uint) 0:230 vector swizzle ( temp 2-component vector of uint) 0:230 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 2 (const int) 0:230 Sequence 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:231 move second child to first child ( temp 3-component vector of uint) 0:231 vector swizzle ( temp 3-component vector of uint) 0:231 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:231 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'invocation' ( temp uint) 0:231 Constant: 0:231 2 (const int) 0:231 Sequence 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Constant: 0:231 2 (const int) 0:231 subgroupInclusiveAnd ( global 3-component vector of uint) 0:231 vector swizzle ( temp 3-component vector of uint) 0:231 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 Constant: 0:231 2 (const int) 0:231 Constant: 0:231 2 (const int) 0:231 Sequence 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Constant: 0:231 2 (const int) 0:232 move second child to first child ( temp 4-component vector of uint) 0:232 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:232 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'invocation' ( temp uint) 0:232 Constant: 0:232 2 (const int) 0:232 subgroupInclusiveAnd ( global 4-component vector of uint) 0:232 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:232 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 Constant: 0:232 3 (const int) 0:232 Constant: 0:232 2 (const int) 0:234 move second child to first child ( temp int) 0:234 direct index ( temp int) 0:234 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:234 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'invocation' ( temp uint) 0:234 Constant: 0:234 1 (const int) 0:234 Constant: 0:234 0 (const int) 0:234 Convert bool to int ( temp int) 0:234 subgroupInclusiveAnd ( global bool) 0:234 Compare Less Than ( temp bool) 0:234 direct index ( temp int) 0:234 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:234 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 Constant: 0:234 0 (const int) 0:234 Constant: 0:234 1 (const int) 0:234 Constant: 0:234 0 (const int) 0:234 Constant: 0:234 0 (const int) 0:235 move second child to first child ( temp 2-component vector of int) 0:235 vector swizzle ( temp 2-component vector of int) 0:235 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:235 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:235 'invocation' ( temp uint) 0:235 Constant: 0:235 1 (const int) 0:235 Sequence 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Convert bool to int ( temp 2-component vector of int) 0:235 subgroupInclusiveAnd ( global 2-component vector of bool) 0:235 Compare Less Than ( global 2-component vector of bool) 0:235 vector swizzle ( temp 2-component vector of int) 0:235 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Sequence 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 0 (const int) 0:235 0 (const int) 0:236 move second child to first child ( temp 3-component vector of int) 0:236 vector swizzle ( temp 3-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:236 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'invocation' ( temp uint) 0:236 Constant: 0:236 1 (const int) 0:236 Sequence 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 2 (const int) 0:236 Convert bool to int ( temp 3-component vector of int) 0:236 subgroupInclusiveAnd ( global 3-component vector of bool) 0:236 Compare Less Than ( global 3-component vector of bool) 0:236 vector swizzle ( temp 3-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Sequence 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 2 (const int) 0:236 Constant: 0:236 0 (const int) 0:236 0 (const int) 0:236 0 (const int) 0:237 move second child to first child ( temp 4-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:237 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'invocation' ( temp uint) 0:237 Constant: 0:237 1 (const int) 0:237 Convert bool to int ( temp 4-component vector of int) 0:237 subgroupInclusiveAnd ( global 4-component vector of bool) 0:237 Compare Less Than ( global 4-component vector of bool) 0:237 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:237 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 0 (const int) 0:237 0 (const int) 0:237 0 (const int) 0:237 0 (const int) 0:239 move second child to first child ( temp int) 0:239 direct index ( temp int) 0:239 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:239 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'invocation' ( temp uint) 0:239 Constant: 0:239 1 (const int) 0:239 Constant: 0:239 0 (const int) 0:239 subgroupInclusiveOr ( global int) 0:239 direct index ( temp int) 0:239 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:239 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 Constant: 0:239 0 (const int) 0:239 Constant: 0:239 1 (const int) 0:239 Constant: 0:239 0 (const int) 0:240 move second child to first child ( temp 2-component vector of int) 0:240 vector swizzle ( temp 2-component vector of int) 0:240 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:240 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:240 'invocation' ( temp uint) 0:240 Constant: 0:240 1 (const int) 0:240 Sequence 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 1 (const int) 0:240 subgroupInclusiveOr ( global 2-component vector of int) 0:240 vector swizzle ( temp 2-component vector of int) 0:240 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:240 Constant: 0:240 1 (const int) 0:240 Constant: 0:240 1 (const int) 0:240 Sequence 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 1 (const int) 0:241 move second child to first child ( temp 3-component vector of int) 0:241 vector swizzle ( temp 3-component vector of int) 0:241 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:241 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'invocation' ( temp uint) 0:241 Constant: 0:241 1 (const int) 0:241 Sequence 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 subgroupInclusiveOr ( global 3-component vector of int) 0:241 vector swizzle ( temp 3-component vector of int) 0:241 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 Constant: 0:241 2 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 Sequence 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 Constant: 0:241 2 (const int) 0:242 move second child to first child ( temp 4-component vector of int) 0:242 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:242 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'invocation' ( temp uint) 0:242 Constant: 0:242 1 (const int) 0:242 subgroupInclusiveOr ( global 4-component vector of int) 0:242 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:242 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 Constant: 0:242 3 (const int) 0:242 Constant: 0:242 1 (const int) 0:244 move second child to first child ( temp uint) 0:244 direct index ( temp uint) 0:244 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:244 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'invocation' ( temp uint) 0:244 Constant: 0:244 2 (const int) 0:244 Constant: 0:244 0 (const int) 0:244 subgroupInclusiveOr ( global uint) 0:244 direct index ( temp uint) 0:244 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:244 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 Constant: 0:244 0 (const int) 0:244 Constant: 0:244 2 (const int) 0:244 Constant: 0:244 0 (const int) 0:245 move second child to first child ( temp 2-component vector of uint) 0:245 vector swizzle ( temp 2-component vector of uint) 0:245 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:245 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:245 'invocation' ( temp uint) 0:245 Constant: 0:245 2 (const int) 0:245 Sequence 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 subgroupInclusiveOr ( global 2-component vector of uint) 0:245 vector swizzle ( temp 2-component vector of uint) 0:245 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 2 (const int) 0:245 Sequence 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:246 move second child to first child ( temp 3-component vector of uint) 0:246 vector swizzle ( temp 3-component vector of uint) 0:246 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:246 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'invocation' ( temp uint) 0:246 Constant: 0:246 2 (const int) 0:246 Sequence 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 2 (const int) 0:246 subgroupInclusiveOr ( global 3-component vector of uint) 0:246 vector swizzle ( temp 3-component vector of uint) 0:246 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 Constant: 0:246 2 (const int) 0:246 Constant: 0:246 2 (const int) 0:246 Sequence 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 2 (const int) 0:247 move second child to first child ( temp 4-component vector of uint) 0:247 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:247 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'invocation' ( temp uint) 0:247 Constant: 0:247 2 (const int) 0:247 subgroupInclusiveOr ( global 4-component vector of uint) 0:247 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:247 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 Constant: 0:247 3 (const int) 0:247 Constant: 0:247 2 (const int) 0:249 move second child to first child ( temp int) 0:249 direct index ( temp int) 0:249 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:249 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'invocation' ( temp uint) 0:249 Constant: 0:249 1 (const int) 0:249 Constant: 0:249 0 (const int) 0:249 Convert bool to int ( temp int) 0:249 subgroupInclusiveOr ( global bool) 0:249 Compare Less Than ( temp bool) 0:249 direct index ( temp int) 0:249 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:249 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 Constant: 0:249 0 (const int) 0:249 Constant: 0:249 1 (const int) 0:249 Constant: 0:249 0 (const int) 0:249 Constant: 0:249 0 (const int) 0:250 move second child to first child ( temp 2-component vector of int) 0:250 vector swizzle ( temp 2-component vector of int) 0:250 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:250 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:250 'invocation' ( temp uint) 0:250 Constant: 0:250 1 (const int) 0:250 Sequence 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Convert bool to int ( temp 2-component vector of int) 0:250 subgroupInclusiveOr ( global 2-component vector of bool) 0:250 Compare Less Than ( global 2-component vector of bool) 0:250 vector swizzle ( temp 2-component vector of int) 0:250 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:250 Constant: 0:250 1 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Sequence 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 0 (const int) 0:251 move second child to first child ( temp 3-component vector of int) 0:251 vector swizzle ( temp 3-component vector of int) 0:251 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:251 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'invocation' ( temp uint) 0:251 Constant: 0:251 1 (const int) 0:251 Sequence 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 2 (const int) 0:251 Convert bool to int ( temp 3-component vector of int) 0:251 subgroupInclusiveOr ( global 3-component vector of bool) 0:251 Compare Less Than ( global 3-component vector of bool) 0:251 vector swizzle ( temp 3-component vector of int) 0:251 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 Sequence 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 2 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 0 (const int) 0:251 0 (const int) 0:252 move second child to first child ( temp 4-component vector of int) 0:252 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:252 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'invocation' ( temp uint) 0:252 Constant: 0:252 1 (const int) 0:252 Convert bool to int ( temp 4-component vector of int) 0:252 subgroupInclusiveOr ( global 4-component vector of bool) 0:252 Compare Less Than ( global 4-component vector of bool) 0:252 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:252 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 0 (const int) 0:252 0 (const int) 0:252 0 (const int) 0:252 0 (const int) 0:254 move second child to first child ( temp int) 0:254 direct index ( temp int) 0:254 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:254 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'invocation' ( temp uint) 0:254 Constant: 0:254 1 (const int) 0:254 Constant: 0:254 0 (const int) 0:254 subgroupInclusiveXor ( global int) 0:254 direct index ( temp int) 0:254 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:254 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 Constant: 0:254 0 (const int) 0:254 Constant: 0:254 1 (const int) 0:254 Constant: 0:254 0 (const int) 0:255 move second child to first child ( temp 2-component vector of int) 0:255 vector swizzle ( temp 2-component vector of int) 0:255 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:255 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:255 'invocation' ( temp uint) 0:255 Constant: 0:255 1 (const int) 0:255 Sequence 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 subgroupInclusiveXor ( global 2-component vector of int) 0:255 vector swizzle ( temp 2-component vector of int) 0:255 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Sequence 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:256 move second child to first child ( temp 3-component vector of int) 0:256 vector swizzle ( temp 3-component vector of int) 0:256 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:256 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'invocation' ( temp uint) 0:256 Constant: 0:256 1 (const int) 0:256 Sequence 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Constant: 0:256 2 (const int) 0:256 subgroupInclusiveXor ( global 3-component vector of int) 0:256 vector swizzle ( temp 3-component vector of int) 0:256 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 Constant: 0:256 2 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Sequence 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Constant: 0:256 2 (const int) 0:257 move second child to first child ( temp 4-component vector of int) 0:257 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:257 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'invocation' ( temp uint) 0:257 Constant: 0:257 1 (const int) 0:257 subgroupInclusiveXor ( global 4-component vector of int) 0:257 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:257 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 Constant: 0:257 3 (const int) 0:257 Constant: 0:257 1 (const int) 0:259 move second child to first child ( temp uint) 0:259 direct index ( temp uint) 0:259 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:259 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'invocation' ( temp uint) 0:259 Constant: 0:259 2 (const int) 0:259 Constant: 0:259 0 (const int) 0:259 subgroupInclusiveXor ( global uint) 0:259 direct index ( temp uint) 0:259 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:259 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 Constant: 0:259 0 (const int) 0:259 Constant: 0:259 2 (const int) 0:259 Constant: 0:259 0 (const int) 0:260 move second child to first child ( temp 2-component vector of uint) 0:260 vector swizzle ( temp 2-component vector of uint) 0:260 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:260 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:260 'invocation' ( temp uint) 0:260 Constant: 0:260 2 (const int) 0:260 Sequence 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 1 (const int) 0:260 subgroupInclusiveXor ( global 2-component vector of uint) 0:260 vector swizzle ( temp 2-component vector of uint) 0:260 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:260 Constant: 0:260 1 (const int) 0:260 Constant: 0:260 2 (const int) 0:260 Sequence 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 1 (const int) 0:261 move second child to first child ( temp 3-component vector of uint) 0:261 vector swizzle ( temp 3-component vector of uint) 0:261 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:261 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'invocation' ( temp uint) 0:261 Constant: 0:261 2 (const int) 0:261 Sequence 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 2 (const int) 0:261 subgroupInclusiveXor ( global 3-component vector of uint) 0:261 vector swizzle ( temp 3-component vector of uint) 0:261 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 Constant: 0:261 2 (const int) 0:261 Constant: 0:261 2 (const int) 0:261 Sequence 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 2 (const int) 0:262 move second child to first child ( temp 4-component vector of uint) 0:262 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:262 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'invocation' ( temp uint) 0:262 Constant: 0:262 2 (const int) 0:262 subgroupInclusiveXor ( global 4-component vector of uint) 0:262 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:262 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 Constant: 0:262 3 (const int) 0:262 Constant: 0:262 2 (const int) 0:264 move second child to first child ( temp int) 0:264 direct index ( temp int) 0:264 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:264 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'invocation' ( temp uint) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 0 (const int) 0:264 Convert bool to int ( temp int) 0:264 subgroupInclusiveXor ( global bool) 0:264 Compare Less Than ( temp bool) 0:264 direct index ( temp int) 0:264 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:264 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 Constant: 0:264 0 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 0 (const int) 0:264 Constant: 0:264 0 (const int) 0:265 move second child to first child ( temp 2-component vector of int) 0:265 vector swizzle ( temp 2-component vector of int) 0:265 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:265 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:265 'invocation' ( temp uint) 0:265 Constant: 0:265 1 (const int) 0:265 Sequence 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Convert bool to int ( temp 2-component vector of int) 0:265 subgroupInclusiveXor ( global 2-component vector of bool) 0:265 Compare Less Than ( global 2-component vector of bool) 0:265 vector swizzle ( temp 2-component vector of int) 0:265 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Sequence 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 0 (const int) 0:266 move second child to first child ( temp 3-component vector of int) 0:266 vector swizzle ( temp 3-component vector of int) 0:266 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:266 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'invocation' ( temp uint) 0:266 Constant: 0:266 1 (const int) 0:266 Sequence 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 2 (const int) 0:266 Convert bool to int ( temp 3-component vector of int) 0:266 subgroupInclusiveXor ( global 3-component vector of bool) 0:266 Compare Less Than ( global 3-component vector of bool) 0:266 vector swizzle ( temp 3-component vector of int) 0:266 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 Sequence 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 2 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 0 (const int) 0:266 0 (const int) 0:267 move second child to first child ( temp 4-component vector of int) 0:267 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:267 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'invocation' ( temp uint) 0:267 Constant: 0:267 1 (const int) 0:267 Convert bool to int ( temp 4-component vector of int) 0:267 subgroupInclusiveXor ( global 4-component vector of bool) 0:267 Compare Less Than ( global 4-component vector of bool) 0:267 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:267 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 0 (const int) 0:267 0 (const int) 0:267 0 (const int) 0:267 0 (const int) 0:269 move second child to first child ( temp float) 0:269 direct index ( temp float) 0:269 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:269 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'invocation' ( temp uint) 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 0 (const int) 0:269 subgroupExclusiveAdd ( global float) 0:269 direct index ( temp float) 0:269 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:269 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 0 (const int) 0:270 move second child to first child ( temp 2-component vector of float) 0:270 vector swizzle ( temp 2-component vector of float) 0:270 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:270 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:270 'invocation' ( temp uint) 0:270 Constant: 0:270 0 (const int) 0:270 Sequence 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 subgroupExclusiveAdd ( global 2-component vector of float) 0:270 vector swizzle ( temp 2-component vector of float) 0:270 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 0 (const int) 0:270 Sequence 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:271 move second child to first child ( temp 3-component vector of float) 0:271 vector swizzle ( temp 3-component vector of float) 0:271 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:271 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'invocation' ( temp uint) 0:271 Constant: 0:271 0 (const int) 0:271 Sequence 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 Constant: 0:271 2 (const int) 0:271 subgroupExclusiveAdd ( global 3-component vector of float) 0:271 vector swizzle ( temp 3-component vector of float) 0:271 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 Constant: 0:271 2 (const int) 0:271 Constant: 0:271 0 (const int) 0:271 Sequence 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 Constant: 0:271 2 (const int) 0:272 move second child to first child ( temp 4-component vector of float) 0:272 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:272 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'invocation' ( temp uint) 0:272 Constant: 0:272 0 (const int) 0:272 subgroupExclusiveAdd ( global 4-component vector of float) 0:272 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:272 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 Constant: 0:272 3 (const int) 0:272 Constant: 0:272 0 (const int) 0:274 move second child to first child ( temp int) 0:274 direct index ( temp int) 0:274 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:274 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'invocation' ( temp uint) 0:274 Constant: 0:274 1 (const int) 0:274 Constant: 0:274 0 (const int) 0:274 subgroupExclusiveAdd ( global int) 0:274 direct index ( temp int) 0:274 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:274 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 Constant: 0:274 0 (const int) 0:274 Constant: 0:274 1 (const int) 0:274 Constant: 0:274 0 (const int) 0:275 move second child to first child ( temp 2-component vector of int) 0:275 vector swizzle ( temp 2-component vector of int) 0:275 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:275 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:275 'invocation' ( temp uint) 0:275 Constant: 0:275 1 (const int) 0:275 Sequence 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 1 (const int) 0:275 subgroupExclusiveAdd ( global 2-component vector of int) 0:275 vector swizzle ( temp 2-component vector of int) 0:275 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:275 Constant: 0:275 1 (const int) 0:275 Constant: 0:275 1 (const int) 0:275 Sequence 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 1 (const int) 0:276 move second child to first child ( temp 3-component vector of int) 0:276 vector swizzle ( temp 3-component vector of int) 0:276 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:276 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'invocation' ( temp uint) 0:276 Constant: 0:276 1 (const int) 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:276 subgroupExclusiveAdd ( global 3-component vector of int) 0:276 vector swizzle ( temp 3-component vector of int) 0:276 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 Constant: 0:276 2 (const int) 0:276 Constant: 0:276 1 (const int) 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 move second child to first child ( temp 4-component vector of int) 0:277 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:277 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'invocation' ( temp uint) 0:277 Constant: 0:277 1 (const int) 0:277 subgroupExclusiveAdd ( global 4-component vector of int) 0:277 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:277 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 Constant: 0:277 3 (const int) 0:277 Constant: 0:277 1 (const int) 0:279 move second child to first child ( temp uint) 0:279 direct index ( temp uint) 0:279 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:279 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'invocation' ( temp uint) 0:279 Constant: 0:279 2 (const int) 0:279 Constant: 0:279 0 (const int) 0:279 subgroupExclusiveAdd ( global uint) 0:279 direct index ( temp uint) 0:279 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:279 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 Constant: 0:279 0 (const int) 0:279 Constant: 0:279 2 (const int) 0:279 Constant: 0:279 0 (const int) 0:280 move second child to first child ( temp 2-component vector of uint) 0:280 vector swizzle ( temp 2-component vector of uint) 0:280 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:280 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:280 'invocation' ( temp uint) 0:280 Constant: 0:280 2 (const int) 0:280 Sequence 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 subgroupExclusiveAdd ( global 2-component vector of uint) 0:280 vector swizzle ( temp 2-component vector of uint) 0:280 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:280 Constant: 0:280 1 (const int) 0:280 Constant: 0:280 2 (const int) 0:280 Sequence 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:281 move second child to first child ( temp 3-component vector of uint) 0:281 vector swizzle ( temp 3-component vector of uint) 0:281 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:281 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'invocation' ( temp uint) 0:281 Constant: 0:281 2 (const int) 0:281 Sequence 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 2 (const int) 0:281 subgroupExclusiveAdd ( global 3-component vector of uint) 0:281 vector swizzle ( temp 3-component vector of uint) 0:281 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 Constant: 0:281 2 (const int) 0:281 Constant: 0:281 2 (const int) 0:281 Sequence 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 2 (const int) 0:282 move second child to first child ( temp 4-component vector of uint) 0:282 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:282 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'invocation' ( temp uint) 0:282 Constant: 0:282 2 (const int) 0:282 subgroupExclusiveAdd ( global 4-component vector of uint) 0:282 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:282 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 Constant: 0:282 3 (const int) 0:282 Constant: 0:282 2 (const int) 0:284 move second child to first child ( temp double) 0:284 direct index ( temp double) 0:284 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:284 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'invocation' ( temp uint) 0:284 Constant: 0:284 3 (const int) 0:284 Constant: 0:284 0 (const int) 0:284 subgroupExclusiveAdd ( global double) 0:284 direct index ( temp double) 0:284 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:284 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 Constant: 0:284 0 (const int) 0:284 Constant: 0:284 3 (const int) 0:284 Constant: 0:284 0 (const int) 0:285 move second child to first child ( temp 2-component vector of double) 0:285 vector swizzle ( temp 2-component vector of double) 0:285 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:285 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:285 'invocation' ( temp uint) 0:285 Constant: 0:285 3 (const int) 0:285 Sequence 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 subgroupExclusiveAdd ( global 2-component vector of double) 0:285 vector swizzle ( temp 2-component vector of double) 0:285 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 3 (const int) 0:285 Sequence 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:286 move second child to first child ( temp 3-component vector of double) 0:286 vector swizzle ( temp 3-component vector of double) 0:286 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:286 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'invocation' ( temp uint) 0:286 Constant: 0:286 3 (const int) 0:286 Sequence 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 2 (const int) 0:286 subgroupExclusiveAdd ( global 3-component vector of double) 0:286 vector swizzle ( temp 3-component vector of double) 0:286 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 Constant: 0:286 2 (const int) 0:286 Constant: 0:286 3 (const int) 0:286 Sequence 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 2 (const int) 0:287 move second child to first child ( temp 4-component vector of double) 0:287 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:287 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'invocation' ( temp uint) 0:287 Constant: 0:287 3 (const int) 0:287 subgroupExclusiveAdd ( global 4-component vector of double) 0:287 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:287 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 Constant: 0:287 3 (const int) 0:287 Constant: 0:287 3 (const int) 0:289 move second child to first child ( temp float) 0:289 direct index ( temp float) 0:289 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:289 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'invocation' ( temp uint) 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 0 (const int) 0:289 subgroupExclusiveMul ( global float) 0:289 direct index ( temp float) 0:289 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:289 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 0 (const int) 0:290 move second child to first child ( temp 2-component vector of float) 0:290 vector swizzle ( temp 2-component vector of float) 0:290 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:290 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:290 'invocation' ( temp uint) 0:290 Constant: 0:290 0 (const int) 0:290 Sequence 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 subgroupExclusiveMul ( global 2-component vector of float) 0:290 vector swizzle ( temp 2-component vector of float) 0:290 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:290 Constant: 0:290 1 (const int) 0:290 Constant: 0:290 0 (const int) 0:290 Sequence 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 1 (const int) 0:291 move second child to first child ( temp 3-component vector of float) 0:291 vector swizzle ( temp 3-component vector of float) 0:291 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:291 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'invocation' ( temp uint) 0:291 Constant: 0:291 0 (const int) 0:291 Sequence 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 2 (const int) 0:291 subgroupExclusiveMul ( global 3-component vector of float) 0:291 vector swizzle ( temp 3-component vector of float) 0:291 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 Constant: 0:291 2 (const int) 0:291 Constant: 0:291 0 (const int) 0:291 Sequence 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 2 (const int) 0:292 move second child to first child ( temp 4-component vector of float) 0:292 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:292 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'invocation' ( temp uint) 0:292 Constant: 0:292 0 (const int) 0:292 subgroupExclusiveMul ( global 4-component vector of float) 0:292 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:292 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 Constant: 0:292 3 (const int) 0:292 Constant: 0:292 0 (const int) 0:294 move second child to first child ( temp int) 0:294 direct index ( temp int) 0:294 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:294 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'invocation' ( temp uint) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 0 (const int) 0:294 subgroupExclusiveMul ( global int) 0:294 direct index ( temp int) 0:294 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:294 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 Constant: 0:294 0 (const int) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 0 (const int) 0:295 move second child to first child ( temp 2-component vector of int) 0:295 vector swizzle ( temp 2-component vector of int) 0:295 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:295 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:295 'invocation' ( temp uint) 0:295 Constant: 0:295 1 (const int) 0:295 Sequence 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 1 (const int) 0:295 subgroupExclusiveMul ( global 2-component vector of int) 0:295 vector swizzle ( temp 2-component vector of int) 0:295 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:295 Constant: 0:295 1 (const int) 0:295 Constant: 0:295 1 (const int) 0:295 Sequence 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 1 (const int) 0:296 move second child to first child ( temp 3-component vector of int) 0:296 vector swizzle ( temp 3-component vector of int) 0:296 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:296 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'invocation' ( temp uint) 0:296 Constant: 0:296 1 (const int) 0:296 Sequence 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 Constant: 0:296 2 (const int) 0:296 subgroupExclusiveMul ( global 3-component vector of int) 0:296 vector swizzle ( temp 3-component vector of int) 0:296 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 Constant: 0:296 2 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 Sequence 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 Constant: 0:296 2 (const int) 0:297 move second child to first child ( temp 4-component vector of int) 0:297 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:297 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'invocation' ( temp uint) 0:297 Constant: 0:297 1 (const int) 0:297 subgroupExclusiveMul ( global 4-component vector of int) 0:297 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:297 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 Constant: 0:297 3 (const int) 0:297 Constant: 0:297 1 (const int) 0:299 move second child to first child ( temp uint) 0:299 direct index ( temp uint) 0:299 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:299 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'invocation' ( temp uint) 0:299 Constant: 0:299 2 (const int) 0:299 Constant: 0:299 0 (const int) 0:299 subgroupExclusiveMul ( global uint) 0:299 direct index ( temp uint) 0:299 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:299 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 Constant: 0:299 0 (const int) 0:299 Constant: 0:299 2 (const int) 0:299 Constant: 0:299 0 (const int) 0:300 move second child to first child ( temp 2-component vector of uint) 0:300 vector swizzle ( temp 2-component vector of uint) 0:300 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:300 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:300 'invocation' ( temp uint) 0:300 Constant: 0:300 2 (const int) 0:300 Sequence 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 subgroupExclusiveMul ( global 2-component vector of uint) 0:300 vector swizzle ( temp 2-component vector of uint) 0:300 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 2 (const int) 0:300 Sequence 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:301 move second child to first child ( temp 3-component vector of uint) 0:301 vector swizzle ( temp 3-component vector of uint) 0:301 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:301 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'invocation' ( temp uint) 0:301 Constant: 0:301 2 (const int) 0:301 Sequence 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 2 (const int) 0:301 subgroupExclusiveMul ( global 3-component vector of uint) 0:301 vector swizzle ( temp 3-component vector of uint) 0:301 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 Constant: 0:301 2 (const int) 0:301 Constant: 0:301 2 (const int) 0:301 Sequence 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 2 (const int) 0:302 move second child to first child ( temp 4-component vector of uint) 0:302 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:302 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'invocation' ( temp uint) 0:302 Constant: 0:302 2 (const int) 0:302 subgroupExclusiveMul ( global 4-component vector of uint) 0:302 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:302 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 Constant: 0:302 3 (const int) 0:302 Constant: 0:302 2 (const int) 0:304 move second child to first child ( temp double) 0:304 direct index ( temp double) 0:304 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:304 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'invocation' ( temp uint) 0:304 Constant: 0:304 3 (const int) 0:304 Constant: 0:304 0 (const int) 0:304 subgroupExclusiveMul ( global double) 0:304 direct index ( temp double) 0:304 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:304 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 Constant: 0:304 0 (const int) 0:304 Constant: 0:304 3 (const int) 0:304 Constant: 0:304 0 (const int) 0:305 move second child to first child ( temp 2-component vector of double) 0:305 vector swizzle ( temp 2-component vector of double) 0:305 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:305 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:305 'invocation' ( temp uint) 0:305 Constant: 0:305 3 (const int) 0:305 Sequence 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 subgroupExclusiveMul ( global 2-component vector of double) 0:305 vector swizzle ( temp 2-component vector of double) 0:305 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:305 Constant: 0:305 1 (const int) 0:305 Constant: 0:305 3 (const int) 0:305 Sequence 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 1 (const int) 0:306 move second child to first child ( temp 3-component vector of double) 0:306 vector swizzle ( temp 3-component vector of double) 0:306 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:306 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'invocation' ( temp uint) 0:306 Constant: 0:306 3 (const int) 0:306 Sequence 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 Constant: 0:306 2 (const int) 0:306 subgroupExclusiveMul ( global 3-component vector of double) 0:306 vector swizzle ( temp 3-component vector of double) 0:306 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 Constant: 0:306 2 (const int) 0:306 Constant: 0:306 3 (const int) 0:306 Sequence 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 Constant: 0:306 2 (const int) 0:307 move second child to first child ( temp 4-component vector of double) 0:307 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:307 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'invocation' ( temp uint) 0:307 Constant: 0:307 3 (const int) 0:307 subgroupExclusiveMul ( global 4-component vector of double) 0:307 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:307 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 Constant: 0:307 3 (const int) 0:307 Constant: 0:307 3 (const int) 0:309 move second child to first child ( temp float) 0:309 direct index ( temp float) 0:309 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:309 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'invocation' ( temp uint) 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 0 (const int) 0:309 subgroupExclusiveMin ( global float) 0:309 direct index ( temp float) 0:309 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:309 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 0 (const int) 0:310 move second child to first child ( temp 2-component vector of float) 0:310 vector swizzle ( temp 2-component vector of float) 0:310 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:310 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:310 'invocation' ( temp uint) 0:310 Constant: 0:310 0 (const int) 0:310 Sequence 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 subgroupExclusiveMin ( global 2-component vector of float) 0:310 vector swizzle ( temp 2-component vector of float) 0:310 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 0 (const int) 0:310 Sequence 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:311 move second child to first child ( temp 3-component vector of float) 0:311 vector swizzle ( temp 3-component vector of float) 0:311 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:311 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'invocation' ( temp uint) 0:311 Constant: 0:311 0 (const int) 0:311 Sequence 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 Constant: 0:311 2 (const int) 0:311 subgroupExclusiveMin ( global 3-component vector of float) 0:311 vector swizzle ( temp 3-component vector of float) 0:311 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 Constant: 0:311 2 (const int) 0:311 Constant: 0:311 0 (const int) 0:311 Sequence 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 Constant: 0:311 2 (const int) 0:312 move second child to first child ( temp 4-component vector of float) 0:312 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:312 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'invocation' ( temp uint) 0:312 Constant: 0:312 0 (const int) 0:312 subgroupExclusiveMin ( global 4-component vector of float) 0:312 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:312 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 Constant: 0:312 3 (const int) 0:312 Constant: 0:312 0 (const int) 0:314 move second child to first child ( temp int) 0:314 direct index ( temp int) 0:314 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:314 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'invocation' ( temp uint) 0:314 Constant: 0:314 1 (const int) 0:314 Constant: 0:314 0 (const int) 0:314 subgroupExclusiveMin ( global int) 0:314 direct index ( temp int) 0:314 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:314 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 Constant: 0:314 0 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Constant: 0:314 0 (const int) 0:315 move second child to first child ( temp 2-component vector of int) 0:315 vector swizzle ( temp 2-component vector of int) 0:315 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:315 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:315 'invocation' ( temp uint) 0:315 Constant: 0:315 1 (const int) 0:315 Sequence 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 subgroupExclusiveMin ( global 2-component vector of int) 0:315 vector swizzle ( temp 2-component vector of int) 0:315 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:315 Constant: 0:315 1 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Sequence 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 1 (const int) 0:316 move second child to first child ( temp 3-component vector of int) 0:316 vector swizzle ( temp 3-component vector of int) 0:316 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:316 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'invocation' ( temp uint) 0:316 Constant: 0:316 1 (const int) 0:316 Sequence 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 2 (const int) 0:316 subgroupExclusiveMin ( global 3-component vector of int) 0:316 vector swizzle ( temp 3-component vector of int) 0:316 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 Constant: 0:316 2 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Sequence 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 2 (const int) 0:317 move second child to first child ( temp 4-component vector of int) 0:317 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:317 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'invocation' ( temp uint) 0:317 Constant: 0:317 1 (const int) 0:317 subgroupExclusiveMin ( global 4-component vector of int) 0:317 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:317 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 Constant: 0:317 3 (const int) 0:317 Constant: 0:317 1 (const int) 0:319 move second child to first child ( temp uint) 0:319 direct index ( temp uint) 0:319 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:319 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'invocation' ( temp uint) 0:319 Constant: 0:319 2 (const int) 0:319 Constant: 0:319 0 (const int) 0:319 subgroupExclusiveMin ( global uint) 0:319 direct index ( temp uint) 0:319 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:319 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 Constant: 0:319 0 (const int) 0:319 Constant: 0:319 2 (const int) 0:319 Constant: 0:319 0 (const int) 0:320 move second child to first child ( temp 2-component vector of uint) 0:320 vector swizzle ( temp 2-component vector of uint) 0:320 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:320 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:320 'invocation' ( temp uint) 0:320 Constant: 0:320 2 (const int) 0:320 Sequence 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 subgroupExclusiveMin ( global 2-component vector of uint) 0:320 vector swizzle ( temp 2-component vector of uint) 0:320 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 2 (const int) 0:320 Sequence 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:321 move second child to first child ( temp 3-component vector of uint) 0:321 vector swizzle ( temp 3-component vector of uint) 0:321 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:321 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'invocation' ( temp uint) 0:321 Constant: 0:321 2 (const int) 0:321 Sequence 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 2 (const int) 0:321 subgroupExclusiveMin ( global 3-component vector of uint) 0:321 vector swizzle ( temp 3-component vector of uint) 0:321 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 Constant: 0:321 2 (const int) 0:321 Constant: 0:321 2 (const int) 0:321 Sequence 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 2 (const int) 0:322 move second child to first child ( temp 4-component vector of uint) 0:322 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:322 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'invocation' ( temp uint) 0:322 Constant: 0:322 2 (const int) 0:322 subgroupExclusiveMin ( global 4-component vector of uint) 0:322 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:322 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 Constant: 0:322 3 (const int) 0:322 Constant: 0:322 2 (const int) 0:324 move second child to first child ( temp double) 0:324 direct index ( temp double) 0:324 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:324 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'invocation' ( temp uint) 0:324 Constant: 0:324 3 (const int) 0:324 Constant: 0:324 0 (const int) 0:324 subgroupExclusiveMin ( global double) 0:324 direct index ( temp double) 0:324 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:324 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 Constant: 0:324 0 (const int) 0:324 Constant: 0:324 3 (const int) 0:324 Constant: 0:324 0 (const int) 0:325 move second child to first child ( temp 2-component vector of double) 0:325 vector swizzle ( temp 2-component vector of double) 0:325 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:325 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:325 'invocation' ( temp uint) 0:325 Constant: 0:325 3 (const int) 0:325 Sequence 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 subgroupExclusiveMin ( global 2-component vector of double) 0:325 vector swizzle ( temp 2-component vector of double) 0:325 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 3 (const int) 0:325 Sequence 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:326 move second child to first child ( temp 3-component vector of double) 0:326 vector swizzle ( temp 3-component vector of double) 0:326 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:326 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'invocation' ( temp uint) 0:326 Constant: 0:326 3 (const int) 0:326 Sequence 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 Constant: 0:326 2 (const int) 0:326 subgroupExclusiveMin ( global 3-component vector of double) 0:326 vector swizzle ( temp 3-component vector of double) 0:326 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 Constant: 0:326 2 (const int) 0:326 Constant: 0:326 3 (const int) 0:326 Sequence 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 Constant: 0:326 2 (const int) 0:327 move second child to first child ( temp 4-component vector of double) 0:327 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:327 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'invocation' ( temp uint) 0:327 Constant: 0:327 3 (const int) 0:327 subgroupExclusiveMin ( global 4-component vector of double) 0:327 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:327 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 Constant: 0:327 3 (const int) 0:327 Constant: 0:327 3 (const int) 0:329 move second child to first child ( temp float) 0:329 direct index ( temp float) 0:329 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:329 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'invocation' ( temp uint) 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 0 (const int) 0:329 subgroupExclusiveMax ( global float) 0:329 direct index ( temp float) 0:329 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:329 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 0 (const int) 0:330 move second child to first child ( temp 2-component vector of float) 0:330 vector swizzle ( temp 2-component vector of float) 0:330 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:330 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:330 'invocation' ( temp uint) 0:330 Constant: 0:330 0 (const int) 0:330 Sequence 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 subgroupExclusiveMax ( global 2-component vector of float) 0:330 vector swizzle ( temp 2-component vector of float) 0:330 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:330 Constant: 0:330 1 (const int) 0:330 Constant: 0:330 0 (const int) 0:330 Sequence 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 1 (const int) 0:331 move second child to first child ( temp 3-component vector of float) 0:331 vector swizzle ( temp 3-component vector of float) 0:331 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:331 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'invocation' ( temp uint) 0:331 Constant: 0:331 0 (const int) 0:331 Sequence 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 2 (const int) 0:331 subgroupExclusiveMax ( global 3-component vector of float) 0:331 vector swizzle ( temp 3-component vector of float) 0:331 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 Constant: 0:331 2 (const int) 0:331 Constant: 0:331 0 (const int) 0:331 Sequence 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 2 (const int) 0:332 move second child to first child ( temp 4-component vector of float) 0:332 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:332 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'invocation' ( temp uint) 0:332 Constant: 0:332 0 (const int) 0:332 subgroupExclusiveMax ( global 4-component vector of float) 0:332 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:332 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 Constant: 0:332 3 (const int) 0:332 Constant: 0:332 0 (const int) 0:334 move second child to first child ( temp int) 0:334 direct index ( temp int) 0:334 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:334 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'invocation' ( temp uint) 0:334 Constant: 0:334 1 (const int) 0:334 Constant: 0:334 0 (const int) 0:334 subgroupExclusiveMax ( global int) 0:334 direct index ( temp int) 0:334 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:334 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 Constant: 0:334 0 (const int) 0:334 Constant: 0:334 1 (const int) 0:334 Constant: 0:334 0 (const int) 0:335 move second child to first child ( temp 2-component vector of int) 0:335 vector swizzle ( temp 2-component vector of int) 0:335 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:335 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:335 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:335 'invocation' ( temp uint) 0:335 Constant: 0:335 1 (const int) 0:335 Sequence 0:335 Constant: 0:335 0 (const int) 0:335 Constant: 0:335 1 (const int) 0:335 subgroupExclusiveMax ( global 2-component vector of int) 0:335 vector swizzle ( temp 2-component vector of int) 0:335 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:335 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:335 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:335 Constant: 0:335 1 (const int) 0:335 Constant: 0:335 1 (const int) 0:335 Sequence 0:335 Constant: 0:335 0 (const int) 0:335 Constant: 0:335 1 (const int) 0:336 move second child to first child ( temp 3-component vector of int) 0:336 vector swizzle ( temp 3-component vector of int) 0:336 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:336 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'invocation' ( temp uint) 0:336 Constant: 0:336 1 (const int) 0:336 Sequence 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Constant: 0:336 2 (const int) 0:336 subgroupExclusiveMax ( global 3-component vector of int) 0:336 vector swizzle ( temp 3-component vector of int) 0:336 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:336 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 Constant: 0:336 2 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Sequence 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Constant: 0:336 2 (const int) 0:337 move second child to first child ( temp 4-component vector of int) 0:337 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:337 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'invocation' ( temp uint) 0:337 Constant: 0:337 1 (const int) 0:337 subgroupExclusiveMax ( global 4-component vector of int) 0:337 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:337 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 Constant: 0:337 3 (const int) 0:337 Constant: 0:337 1 (const int) 0:339 move second child to first child ( temp uint) 0:339 direct index ( temp uint) 0:339 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:339 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'invocation' ( temp uint) 0:339 Constant: 0:339 2 (const int) 0:339 Constant: 0:339 0 (const int) 0:339 subgroupExclusiveMax ( global uint) 0:339 direct index ( temp uint) 0:339 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:339 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 Constant: 0:339 0 (const int) 0:339 Constant: 0:339 2 (const int) 0:339 Constant: 0:339 0 (const int) 0:340 move second child to first child ( temp 2-component vector of uint) 0:340 vector swizzle ( temp 2-component vector of uint) 0:340 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:340 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:340 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:340 'invocation' ( temp uint) 0:340 Constant: 0:340 2 (const int) 0:340 Sequence 0:340 Constant: 0:340 0 (const int) 0:340 Constant: 0:340 1 (const int) 0:340 subgroupExclusiveMax ( global 2-component vector of uint) 0:340 vector swizzle ( temp 2-component vector of uint) 0:340 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:340 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:340 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:340 Constant: 0:340 1 (const int) 0:340 Constant: 0:340 2 (const int) 0:340 Sequence 0:340 Constant: 0:340 0 (const int) 0:340 Constant: 0:340 1 (const int) 0:341 move second child to first child ( temp 3-component vector of uint) 0:341 vector swizzle ( temp 3-component vector of uint) 0:341 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:341 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'invocation' ( temp uint) 0:341 Constant: 0:341 2 (const int) 0:341 Sequence 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 2 (const int) 0:341 subgroupExclusiveMax ( global 3-component vector of uint) 0:341 vector swizzle ( temp 3-component vector of uint) 0:341 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:341 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 Constant: 0:341 2 (const int) 0:341 Constant: 0:341 2 (const int) 0:341 Sequence 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 2 (const int) 0:342 move second child to first child ( temp 4-component vector of uint) 0:342 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:342 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'invocation' ( temp uint) 0:342 Constant: 0:342 2 (const int) 0:342 subgroupExclusiveMax ( global 4-component vector of uint) 0:342 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:342 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 Constant: 0:342 3 (const int) 0:342 Constant: 0:342 2 (const int) 0:344 move second child to first child ( temp double) 0:344 direct index ( temp double) 0:344 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:344 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'invocation' ( temp uint) 0:344 Constant: 0:344 3 (const int) 0:344 Constant: 0:344 0 (const int) 0:344 subgroupExclusiveMax ( global double) 0:344 direct index ( temp double) 0:344 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:344 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 Constant: 0:344 0 (const int) 0:344 Constant: 0:344 3 (const int) 0:344 Constant: 0:344 0 (const int) 0:345 move second child to first child ( temp 2-component vector of double) 0:345 vector swizzle ( temp 2-component vector of double) 0:345 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:345 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:345 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:345 'invocation' ( temp uint) 0:345 Constant: 0:345 3 (const int) 0:345 Sequence 0:345 Constant: 0:345 0 (const int) 0:345 Constant: 0:345 1 (const int) 0:345 subgroupExclusiveMax ( global 2-component vector of double) 0:345 vector swizzle ( temp 2-component vector of double) 0:345 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:345 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:345 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:345 Constant: 0:345 1 (const int) 0:345 Constant: 0:345 3 (const int) 0:345 Sequence 0:345 Constant: 0:345 0 (const int) 0:345 Constant: 0:345 1 (const int) 0:346 move second child to first child ( temp 3-component vector of double) 0:346 vector swizzle ( temp 3-component vector of double) 0:346 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:346 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'invocation' ( temp uint) 0:346 Constant: 0:346 3 (const int) 0:346 Sequence 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 1 (const int) 0:346 Constant: 0:346 2 (const int) 0:346 subgroupExclusiveMax ( global 3-component vector of double) 0:346 vector swizzle ( temp 3-component vector of double) 0:346 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:346 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 Constant: 0:346 2 (const int) 0:346 Constant: 0:346 3 (const int) 0:346 Sequence 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 1 (const int) 0:346 Constant: 0:346 2 (const int) 0:347 move second child to first child ( temp 4-component vector of double) 0:347 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:347 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'invocation' ( temp uint) 0:347 Constant: 0:347 3 (const int) 0:347 subgroupExclusiveMax ( global 4-component vector of double) 0:347 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:347 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 Constant: 0:347 3 (const int) 0:347 Constant: 0:347 3 (const int) 0:349 move second child to first child ( temp int) 0:349 direct index ( temp int) 0:349 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:349 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'invocation' ( temp uint) 0:349 Constant: 0:349 1 (const int) 0:349 Constant: 0:349 0 (const int) 0:349 subgroupExclusiveAnd ( global int) 0:349 direct index ( temp int) 0:349 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:349 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 Constant: 0:349 0 (const int) 0:349 Constant: 0:349 1 (const int) 0:349 Constant: 0:349 0 (const int) 0:350 move second child to first child ( temp 2-component vector of int) 0:350 vector swizzle ( temp 2-component vector of int) 0:350 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:350 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:350 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:350 'invocation' ( temp uint) 0:350 Constant: 0:350 1 (const int) 0:350 Sequence 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 1 (const int) 0:350 subgroupExclusiveAnd ( global 2-component vector of int) 0:350 vector swizzle ( temp 2-component vector of int) 0:350 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:350 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:350 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:350 Constant: 0:350 1 (const int) 0:350 Constant: 0:350 1 (const int) 0:350 Sequence 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 1 (const int) 0:351 move second child to first child ( temp 3-component vector of int) 0:351 vector swizzle ( temp 3-component vector of int) 0:351 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:351 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'invocation' ( temp uint) 0:351 Constant: 0:351 1 (const int) 0:351 Sequence 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Constant: 0:351 2 (const int) 0:351 subgroupExclusiveAnd ( global 3-component vector of int) 0:351 vector swizzle ( temp 3-component vector of int) 0:351 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:351 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 Constant: 0:351 2 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Sequence 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Constant: 0:351 2 (const int) 0:352 move second child to first child ( temp 4-component vector of int) 0:352 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:352 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'invocation' ( temp uint) 0:352 Constant: 0:352 1 (const int) 0:352 subgroupExclusiveAnd ( global 4-component vector of int) 0:352 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:352 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 Constant: 0:352 3 (const int) 0:352 Constant: 0:352 1 (const int) 0:354 move second child to first child ( temp uint) 0:354 direct index ( temp uint) 0:354 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:354 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'invocation' ( temp uint) 0:354 Constant: 0:354 2 (const int) 0:354 Constant: 0:354 0 (const int) 0:354 subgroupExclusiveAnd ( global uint) 0:354 direct index ( temp uint) 0:354 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:354 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 Constant: 0:354 0 (const int) 0:354 Constant: 0:354 2 (const int) 0:354 Constant: 0:354 0 (const int) 0:355 move second child to first child ( temp 2-component vector of uint) 0:355 vector swizzle ( temp 2-component vector of uint) 0:355 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:355 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:355 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:355 'invocation' ( temp uint) 0:355 Constant: 0:355 2 (const int) 0:355 Sequence 0:355 Constant: 0:355 0 (const int) 0:355 Constant: 0:355 1 (const int) 0:355 subgroupExclusiveAnd ( global 2-component vector of uint) 0:355 vector swizzle ( temp 2-component vector of uint) 0:355 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:355 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:355 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:355 Constant: 0:355 1 (const int) 0:355 Constant: 0:355 2 (const int) 0:355 Sequence 0:355 Constant: 0:355 0 (const int) 0:355 Constant: 0:355 1 (const int) 0:356 move second child to first child ( temp 3-component vector of uint) 0:356 vector swizzle ( temp 3-component vector of uint) 0:356 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:356 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'invocation' ( temp uint) 0:356 Constant: 0:356 2 (const int) 0:356 Sequence 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 1 (const int) 0:356 Constant: 0:356 2 (const int) 0:356 subgroupExclusiveAnd ( global 3-component vector of uint) 0:356 vector swizzle ( temp 3-component vector of uint) 0:356 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:356 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 Constant: 0:356 2 (const int) 0:356 Constant: 0:356 2 (const int) 0:356 Sequence 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 1 (const int) 0:356 Constant: 0:356 2 (const int) 0:357 move second child to first child ( temp 4-component vector of uint) 0:357 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:357 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'invocation' ( temp uint) 0:357 Constant: 0:357 2 (const int) 0:357 subgroupExclusiveAnd ( global 4-component vector of uint) 0:357 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:357 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 Constant: 0:357 3 (const int) 0:357 Constant: 0:357 2 (const int) 0:359 move second child to first child ( temp int) 0:359 direct index ( temp int) 0:359 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:359 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'invocation' ( temp uint) 0:359 Constant: 0:359 1 (const int) 0:359 Constant: 0:359 0 (const int) 0:359 Convert bool to int ( temp int) 0:359 subgroupExclusiveAnd ( global bool) 0:359 Compare Less Than ( temp bool) 0:359 direct index ( temp int) 0:359 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:359 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 Constant: 0:359 0 (const int) 0:359 Constant: 0:359 1 (const int) 0:359 Constant: 0:359 0 (const int) 0:359 Constant: 0:359 0 (const int) 0:360 move second child to first child ( temp 2-component vector of int) 0:360 vector swizzle ( temp 2-component vector of int) 0:360 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:360 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:360 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:360 'invocation' ( temp uint) 0:360 Constant: 0:360 1 (const int) 0:360 Sequence 0:360 Constant: 0:360 0 (const int) 0:360 Constant: 0:360 1 (const int) 0:360 Convert bool to int ( temp 2-component vector of int) 0:360 subgroupExclusiveAnd ( global 2-component vector of bool) 0:360 Compare Less Than ( global 2-component vector of bool) 0:360 vector swizzle ( temp 2-component vector of int) 0:360 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:360 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:360 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:360 Constant: 0:360 1 (const int) 0:360 Constant: 0:360 1 (const int) 0:360 Sequence 0:360 Constant: 0:360 0 (const int) 0:360 Constant: 0:360 1 (const int) 0:360 Constant: 0:360 0 (const int) 0:360 0 (const int) 0:361 move second child to first child ( temp 3-component vector of int) 0:361 vector swizzle ( temp 3-component vector of int) 0:361 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:361 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'invocation' ( temp uint) 0:361 Constant: 0:361 1 (const int) 0:361 Sequence 0:361 Constant: 0:361 0 (const int) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 2 (const int) 0:361 Convert bool to int ( temp 3-component vector of int) 0:361 subgroupExclusiveAnd ( global 3-component vector of bool) 0:361 Compare Less Than ( global 3-component vector of bool) 0:361 vector swizzle ( temp 3-component vector of int) 0:361 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:361 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 1 (const int) 0:361 Sequence 0:361 Constant: 0:361 0 (const int) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 2 (const int) 0:361 Constant: 0:361 0 (const int) 0:361 0 (const int) 0:361 0 (const int) 0:362 move second child to first child ( temp 4-component vector of int) 0:362 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:362 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'invocation' ( temp uint) 0:362 Constant: 0:362 1 (const int) 0:362 Convert bool to int ( temp 4-component vector of int) 0:362 subgroupExclusiveAnd ( global 4-component vector of bool) 0:362 Compare Less Than ( global 4-component vector of bool) 0:362 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:362 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 Constant: 0:362 1 (const int) 0:362 Constant: 0:362 1 (const int) 0:362 Constant: 0:362 0 (const int) 0:362 0 (const int) 0:362 0 (const int) 0:362 0 (const int) 0:364 move second child to first child ( temp int) 0:364 direct index ( temp int) 0:364 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:364 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'invocation' ( temp uint) 0:364 Constant: 0:364 1 (const int) 0:364 Constant: 0:364 0 (const int) 0:364 subgroupExclusiveOr ( global int) 0:364 direct index ( temp int) 0:364 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:364 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 Constant: 0:364 0 (const int) 0:364 Constant: 0:364 1 (const int) 0:364 Constant: 0:364 0 (const int) 0:365 move second child to first child ( temp 2-component vector of int) 0:365 vector swizzle ( temp 2-component vector of int) 0:365 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:365 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:365 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:365 'invocation' ( temp uint) 0:365 Constant: 0:365 1 (const int) 0:365 Sequence 0:365 Constant: 0:365 0 (const int) 0:365 Constant: 0:365 1 (const int) 0:365 subgroupExclusiveOr ( global 2-component vector of int) 0:365 vector swizzle ( temp 2-component vector of int) 0:365 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:365 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:365 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:365 Constant: 0:365 1 (const int) 0:365 Constant: 0:365 1 (const int) 0:365 Sequence 0:365 Constant: 0:365 0 (const int) 0:365 Constant: 0:365 1 (const int) 0:366 move second child to first child ( temp 3-component vector of int) 0:366 vector swizzle ( temp 3-component vector of int) 0:366 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:366 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'invocation' ( temp uint) 0:366 Constant: 0:366 1 (const int) 0:366 Sequence 0:366 Constant: 0:366 0 (const int) 0:366 Constant: 0:366 1 (const int) 0:366 Constant: 0:366 2 (const int) 0:366 subgroupExclusiveOr ( global 3-component vector of int) 0:366 vector swizzle ( temp 3-component vector of int) 0:366 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:366 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 Constant: 0:366 2 (const int) 0:366 Constant: 0:366 1 (const int) 0:366 Sequence 0:366 Constant: 0:366 0 (const int) 0:366 Constant: 0:366 1 (const int) 0:366 Constant: 0:366 2 (const int) 0:367 move second child to first child ( temp 4-component vector of int) 0:367 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:367 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'invocation' ( temp uint) 0:367 Constant: 0:367 1 (const int) 0:367 subgroupExclusiveOr ( global 4-component vector of int) 0:367 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:367 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 Constant: 0:367 3 (const int) 0:367 Constant: 0:367 1 (const int) 0:369 move second child to first child ( temp uint) 0:369 direct index ( temp uint) 0:369 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:369 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'invocation' ( temp uint) 0:369 Constant: 0:369 2 (const int) 0:369 Constant: 0:369 0 (const int) 0:369 subgroupExclusiveOr ( global uint) 0:369 direct index ( temp uint) 0:369 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:369 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 Constant: 0:369 0 (const int) 0:369 Constant: 0:369 2 (const int) 0:369 Constant: 0:369 0 (const int) 0:370 move second child to first child ( temp 2-component vector of uint) 0:370 vector swizzle ( temp 2-component vector of uint) 0:370 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:370 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:370 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:370 'invocation' ( temp uint) 0:370 Constant: 0:370 2 (const int) 0:370 Sequence 0:370 Constant: 0:370 0 (const int) 0:370 Constant: 0:370 1 (const int) 0:370 subgroupExclusiveOr ( global 2-component vector of uint) 0:370 vector swizzle ( temp 2-component vector of uint) 0:370 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:370 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:370 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:370 Constant: 0:370 1 (const int) 0:370 Constant: 0:370 2 (const int) 0:370 Sequence 0:370 Constant: 0:370 0 (const int) 0:370 Constant: 0:370 1 (const int) 0:371 move second child to first child ( temp 3-component vector of uint) 0:371 vector swizzle ( temp 3-component vector of uint) 0:371 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:371 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'invocation' ( temp uint) 0:371 Constant: 0:371 2 (const int) 0:371 Sequence 0:371 Constant: 0:371 0 (const int) 0:371 Constant: 0:371 1 (const int) 0:371 Constant: 0:371 2 (const int) 0:371 subgroupExclusiveOr ( global 3-component vector of uint) 0:371 vector swizzle ( temp 3-component vector of uint) 0:371 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:371 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 Constant: 0:371 2 (const int) 0:371 Constant: 0:371 2 (const int) 0:371 Sequence 0:371 Constant: 0:371 0 (const int) 0:371 Constant: 0:371 1 (const int) 0:371 Constant: 0:371 2 (const int) 0:372 move second child to first child ( temp 4-component vector of uint) 0:372 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:372 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'invocation' ( temp uint) 0:372 Constant: 0:372 2 (const int) 0:372 subgroupExclusiveOr ( global 4-component vector of uint) 0:372 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:372 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 Constant: 0:372 3 (const int) 0:372 Constant: 0:372 2 (const int) 0:374 move second child to first child ( temp int) 0:374 direct index ( temp int) 0:374 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:374 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'invocation' ( temp uint) 0:374 Constant: 0:374 1 (const int) 0:374 Constant: 0:374 0 (const int) 0:374 Convert bool to int ( temp int) 0:374 subgroupExclusiveOr ( global bool) 0:374 Compare Less Than ( temp bool) 0:374 direct index ( temp int) 0:374 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:374 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 Constant: 0:374 0 (const int) 0:374 Constant: 0:374 1 (const int) 0:374 Constant: 0:374 0 (const int) 0:374 Constant: 0:374 0 (const int) 0:375 move second child to first child ( temp 2-component vector of int) 0:375 vector swizzle ( temp 2-component vector of int) 0:375 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:375 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:375 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:375 'invocation' ( temp uint) 0:375 Constant: 0:375 1 (const int) 0:375 Sequence 0:375 Constant: 0:375 0 (const int) 0:375 Constant: 0:375 1 (const int) 0:375 Convert bool to int ( temp 2-component vector of int) 0:375 subgroupExclusiveOr ( global 2-component vector of bool) 0:375 Compare Less Than ( global 2-component vector of bool) 0:375 vector swizzle ( temp 2-component vector of int) 0:375 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:375 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:375 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:375 Constant: 0:375 1 (const int) 0:375 Constant: 0:375 1 (const int) 0:375 Sequence 0:375 Constant: 0:375 0 (const int) 0:375 Constant: 0:375 1 (const int) 0:375 Constant: 0:375 0 (const int) 0:375 0 (const int) 0:376 move second child to first child ( temp 3-component vector of int) 0:376 vector swizzle ( temp 3-component vector of int) 0:376 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:376 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'invocation' ( temp uint) 0:376 Constant: 0:376 1 (const int) 0:376 Sequence 0:376 Constant: 0:376 0 (const int) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 2 (const int) 0:376 Convert bool to int ( temp 3-component vector of int) 0:376 subgroupExclusiveOr ( global 3-component vector of bool) 0:376 Compare Less Than ( global 3-component vector of bool) 0:376 vector swizzle ( temp 3-component vector of int) 0:376 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:376 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 1 (const int) 0:376 Sequence 0:376 Constant: 0:376 0 (const int) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 2 (const int) 0:376 Constant: 0:376 0 (const int) 0:376 0 (const int) 0:376 0 (const int) 0:377 move second child to first child ( temp 4-component vector of int) 0:377 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:377 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'invocation' ( temp uint) 0:377 Constant: 0:377 1 (const int) 0:377 Convert bool to int ( temp 4-component vector of int) 0:377 subgroupExclusiveOr ( global 4-component vector of bool) 0:377 Compare Less Than ( global 4-component vector of bool) 0:377 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:377 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 Constant: 0:377 1 (const int) 0:377 Constant: 0:377 1 (const int) 0:377 Constant: 0:377 0 (const int) 0:377 0 (const int) 0:377 0 (const int) 0:377 0 (const int) 0:379 move second child to first child ( temp int) 0:379 direct index ( temp int) 0:379 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:379 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'invocation' ( temp uint) 0:379 Constant: 0:379 1 (const int) 0:379 Constant: 0:379 0 (const int) 0:379 subgroupExclusiveXor ( global int) 0:379 direct index ( temp int) 0:379 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:379 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 Constant: 0:379 0 (const int) 0:379 Constant: 0:379 1 (const int) 0:379 Constant: 0:379 0 (const int) 0:380 move second child to first child ( temp 2-component vector of int) 0:380 vector swizzle ( temp 2-component vector of int) 0:380 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:380 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:380 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:380 'invocation' ( temp uint) 0:380 Constant: 0:380 1 (const int) 0:380 Sequence 0:380 Constant: 0:380 0 (const int) 0:380 Constant: 0:380 1 (const int) 0:380 subgroupExclusiveXor ( global 2-component vector of int) 0:380 vector swizzle ( temp 2-component vector of int) 0:380 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:380 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:380 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:380 Constant: 0:380 1 (const int) 0:380 Constant: 0:380 1 (const int) 0:380 Sequence 0:380 Constant: 0:380 0 (const int) 0:380 Constant: 0:380 1 (const int) 0:381 move second child to first child ( temp 3-component vector of int) 0:381 vector swizzle ( temp 3-component vector of int) 0:381 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:381 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'invocation' ( temp uint) 0:381 Constant: 0:381 1 (const int) 0:381 Sequence 0:381 Constant: 0:381 0 (const int) 0:381 Constant: 0:381 1 (const int) 0:381 Constant: 0:381 2 (const int) 0:381 subgroupExclusiveXor ( global 3-component vector of int) 0:381 vector swizzle ( temp 3-component vector of int) 0:381 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:381 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 Constant: 0:381 2 (const int) 0:381 Constant: 0:381 1 (const int) 0:381 Sequence 0:381 Constant: 0:381 0 (const int) 0:381 Constant: 0:381 1 (const int) 0:381 Constant: 0:381 2 (const int) 0:382 move second child to first child ( temp 4-component vector of int) 0:382 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:382 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'invocation' ( temp uint) 0:382 Constant: 0:382 1 (const int) 0:382 subgroupExclusiveXor ( global 4-component vector of int) 0:382 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:382 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 Constant: 0:382 3 (const int) 0:382 Constant: 0:382 1 (const int) 0:384 move second child to first child ( temp uint) 0:384 direct index ( temp uint) 0:384 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:384 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'invocation' ( temp uint) 0:384 Constant: 0:384 2 (const int) 0:384 Constant: 0:384 0 (const int) 0:384 subgroupExclusiveXor ( global uint) 0:384 direct index ( temp uint) 0:384 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:384 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 Constant: 0:384 0 (const int) 0:384 Constant: 0:384 2 (const int) 0:384 Constant: 0:384 0 (const int) 0:385 move second child to first child ( temp 2-component vector of uint) 0:385 vector swizzle ( temp 2-component vector of uint) 0:385 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:385 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:385 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:385 'invocation' ( temp uint) 0:385 Constant: 0:385 2 (const int) 0:385 Sequence 0:385 Constant: 0:385 0 (const int) 0:385 Constant: 0:385 1 (const int) 0:385 subgroupExclusiveXor ( global 2-component vector of uint) 0:385 vector swizzle ( temp 2-component vector of uint) 0:385 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:385 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:385 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:385 Constant: 0:385 1 (const int) 0:385 Constant: 0:385 2 (const int) 0:385 Sequence 0:385 Constant: 0:385 0 (const int) 0:385 Constant: 0:385 1 (const int) 0:386 move second child to first child ( temp 3-component vector of uint) 0:386 vector swizzle ( temp 3-component vector of uint) 0:386 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:386 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'invocation' ( temp uint) 0:386 Constant: 0:386 2 (const int) 0:386 Sequence 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 2 (const int) 0:386 subgroupExclusiveXor ( global 3-component vector of uint) 0:386 vector swizzle ( temp 3-component vector of uint) 0:386 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:386 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 Constant: 0:386 2 (const int) 0:386 Constant: 0:386 2 (const int) 0:386 Sequence 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 2 (const int) 0:387 move second child to first child ( temp 4-component vector of uint) 0:387 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:387 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'invocation' ( temp uint) 0:387 Constant: 0:387 2 (const int) 0:387 subgroupExclusiveXor ( global 4-component vector of uint) 0:387 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:387 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 Constant: 0:387 3 (const int) 0:387 Constant: 0:387 2 (const int) 0:389 move second child to first child ( temp int) 0:389 direct index ( temp int) 0:389 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:389 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'invocation' ( temp uint) 0:389 Constant: 0:389 1 (const int) 0:389 Constant: 0:389 0 (const int) 0:389 Convert bool to int ( temp int) 0:389 subgroupExclusiveXor ( global bool) 0:389 Compare Less Than ( temp bool) 0:389 direct index ( temp int) 0:389 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:389 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 Constant: 0:389 0 (const int) 0:389 Constant: 0:389 1 (const int) 0:389 Constant: 0:389 0 (const int) 0:389 Constant: 0:389 0 (const int) 0:390 move second child to first child ( temp 2-component vector of int) 0:390 vector swizzle ( temp 2-component vector of int) 0:390 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:390 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:390 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:390 'invocation' ( temp uint) 0:390 Constant: 0:390 1 (const int) 0:390 Sequence 0:390 Constant: 0:390 0 (const int) 0:390 Constant: 0:390 1 (const int) 0:390 Convert bool to int ( temp 2-component vector of int) 0:390 subgroupExclusiveXor ( global 2-component vector of bool) 0:390 Compare Less Than ( global 2-component vector of bool) 0:390 vector swizzle ( temp 2-component vector of int) 0:390 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:390 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:390 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:390 Constant: 0:390 1 (const int) 0:390 Constant: 0:390 1 (const int) 0:390 Sequence 0:390 Constant: 0:390 0 (const int) 0:390 Constant: 0:390 1 (const int) 0:390 Constant: 0:390 0 (const int) 0:390 0 (const int) 0:391 move second child to first child ( temp 3-component vector of int) 0:391 vector swizzle ( temp 3-component vector of int) 0:391 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:391 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'invocation' ( temp uint) 0:391 Constant: 0:391 1 (const int) 0:391 Sequence 0:391 Constant: 0:391 0 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 2 (const int) 0:391 Convert bool to int ( temp 3-component vector of int) 0:391 subgroupExclusiveXor ( global 3-component vector of bool) 0:391 Compare Less Than ( global 3-component vector of bool) 0:391 vector swizzle ( temp 3-component vector of int) 0:391 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:391 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Sequence 0:391 Constant: 0:391 0 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 2 (const int) 0:391 Constant: 0:391 0 (const int) 0:391 0 (const int) 0:391 0 (const int) 0:392 move second child to first child ( temp 4-component vector of int) 0:392 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:392 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'invocation' ( temp uint) 0:392 Constant: 0:392 1 (const int) 0:392 Convert bool to int ( temp 4-component vector of int) 0:392 subgroupExclusiveXor ( global 4-component vector of bool) 0:392 Compare Less Than ( global 4-component vector of bool) 0:392 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:392 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 Constant: 0:392 1 (const int) 0:392 Constant: 0:392 1 (const int) 0:392 Constant: 0:392 0 (const int) 0:392 0 (const int) 0:392 0 (const int) 0:392 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_arithmetic Requested GL_KHR_shader_subgroup_basic local_size = (8, 1, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupAdd ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupAdd ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupAdd ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupAdd ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupAdd ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupAdd ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupAdd ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupAdd ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupAdd ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupAdd ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupAdd ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupAdd ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupAdd ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupAdd ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupAdd ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupAdd ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 subgroupMul ( global float) 0:39 direct index ( temp float) 0:39 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp 2-component vector of float) 0:40 vector swizzle ( temp 2-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 subgroupMul ( global 2-component vector of float) 0:40 vector swizzle ( temp 2-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:41 move second child to first child ( temp 3-component vector of float) 0:41 vector swizzle ( temp 3-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupMul ( global 3-component vector of float) 0:41 vector swizzle ( temp 3-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 0 (const int) 0:42 subgroupMul ( global 4-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 0 (const int) 0:44 move second child to first child ( temp int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupMul ( global int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:45 move second child to first child ( temp 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupMul ( global 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:46 move second child to first child ( temp 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupMul ( global 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:47 move second child to first child ( temp 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 1 (const int) 0:47 subgroupMul ( global 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 1 (const int) 0:49 move second child to first child ( temp uint) 0:49 direct index ( temp uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupMul ( global uint) 0:49 direct index ( temp uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:50 move second child to first child ( temp 2-component vector of uint) 0:50 vector swizzle ( temp 2-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupMul ( global 2-component vector of uint) 0:50 vector swizzle ( temp 2-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:51 move second child to first child ( temp 3-component vector of uint) 0:51 vector swizzle ( temp 3-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupMul ( global 3-component vector of uint) 0:51 vector swizzle ( temp 3-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:52 move second child to first child ( temp 4-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupMul ( global 4-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 2 (const int) 0:54 move second child to first child ( temp double) 0:54 direct index ( temp double) 0:54 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupMul ( global double) 0:54 direct index ( temp double) 0:54 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 0 (const int) 0:55 move second child to first child ( temp 2-component vector of double) 0:55 vector swizzle ( temp 2-component vector of double) 0:55 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 3 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupMul ( global 2-component vector of double) 0:55 vector swizzle ( temp 2-component vector of double) 0:55 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 3 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:56 move second child to first child ( temp 3-component vector of double) 0:56 vector swizzle ( temp 3-component vector of double) 0:56 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 3 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupMul ( global 3-component vector of double) 0:56 vector swizzle ( temp 3-component vector of double) 0:56 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 3 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:57 move second child to first child ( temp 4-component vector of double) 0:57 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 3 (const int) 0:57 subgroupMul ( global 4-component vector of double) 0:57 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 3 (const int) 0:59 move second child to first child ( temp float) 0:59 direct index ( temp float) 0:59 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupMin ( global float) 0:59 direct index ( temp float) 0:59 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:60 move second child to first child ( temp 2-component vector of float) 0:60 vector swizzle ( temp 2-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupMin ( global 2-component vector of float) 0:60 vector swizzle ( temp 2-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 vector swizzle ( temp 3-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 0 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupMin ( global 3-component vector of float) 0:61 vector swizzle ( temp 3-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 0 (const int) 0:62 subgroupMin ( global 4-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 0 (const int) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 subgroupMin ( global int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 subgroupMin ( global 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 subgroupMin ( global 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 subgroupMin ( global 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 3 (const int) 0:67 Constant: 0:67 1 (const int) 0:69 move second child to first child ( temp uint) 0:69 direct index ( temp uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 subgroupMin ( global uint) 0:69 direct index ( temp uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 0 (const int) 0:70 move second child to first child ( temp 2-component vector of uint) 0:70 vector swizzle ( temp 2-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'invocation' ( temp uint) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 subgroupMin ( global 2-component vector of uint) 0:70 vector swizzle ( temp 2-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:71 move second child to first child ( temp 3-component vector of uint) 0:71 vector swizzle ( temp 3-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 subgroupMin ( global 3-component vector of uint) 0:71 vector swizzle ( temp 3-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:72 move second child to first child ( temp 4-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupMin ( global 4-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 3 (const int) 0:72 Constant: 0:72 2 (const int) 0:74 move second child to first child ( temp double) 0:74 direct index ( temp double) 0:74 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupMin ( global double) 0:74 direct index ( temp double) 0:74 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 0 (const int) 0:75 move second child to first child ( temp 2-component vector of double) 0:75 vector swizzle ( temp 2-component vector of double) 0:75 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:75 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'invocation' ( temp uint) 0:75 Constant: 0:75 3 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 subgroupMin ( global 2-component vector of double) 0:75 vector swizzle ( temp 2-component vector of double) 0:75 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 3 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:76 move second child to first child ( temp 3-component vector of double) 0:76 vector swizzle ( temp 3-component vector of double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 3 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupMin ( global 3-component vector of double) 0:76 vector swizzle ( temp 3-component vector of double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 3 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:77 move second child to first child ( temp 4-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 3 (const int) 0:77 subgroupMin ( global 4-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 3 (const int) 0:79 move second child to first child ( temp float) 0:79 direct index ( temp float) 0:79 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 subgroupMax ( global float) 0:79 direct index ( temp float) 0:79 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:80 move second child to first child ( temp 2-component vector of float) 0:80 vector swizzle ( temp 2-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:80 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'invocation' ( temp uint) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 subgroupMax ( global 2-component vector of float) 0:80 vector swizzle ( temp 2-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:81 move second child to first child ( temp 3-component vector of float) 0:81 vector swizzle ( temp 3-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 0 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 subgroupMax ( global 3-component vector of float) 0:81 vector swizzle ( temp 3-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 2 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:82 move second child to first child ( temp 4-component vector of float) 0:82 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 0 (const int) 0:82 subgroupMax ( global 4-component vector of float) 0:82 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 3 (const int) 0:82 Constant: 0:82 0 (const int) 0:84 move second child to first child ( temp int) 0:84 direct index ( temp int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 subgroupMax ( global int) 0:84 direct index ( temp int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:85 move second child to first child ( temp 2-component vector of int) 0:85 vector swizzle ( temp 2-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:85 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'invocation' ( temp uint) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 subgroupMax ( global 2-component vector of int) 0:85 vector swizzle ( temp 2-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:86 move second child to first child ( temp 3-component vector of int) 0:86 vector swizzle ( temp 3-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:86 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'invocation' ( temp uint) 0:86 Constant: 0:86 1 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupMax ( global 3-component vector of int) 0:86 vector swizzle ( temp 3-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:87 move second child to first child ( temp 4-component vector of int) 0:87 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:87 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'invocation' ( temp uint) 0:87 Constant: 0:87 1 (const int) 0:87 subgroupMax ( global 4-component vector of int) 0:87 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 Constant: 0:87 3 (const int) 0:87 Constant: 0:87 1 (const int) 0:89 move second child to first child ( temp uint) 0:89 direct index ( temp uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:89 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'invocation' ( temp uint) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 subgroupMax ( global uint) 0:89 direct index ( temp uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 0 (const int) 0:90 move second child to first child ( temp 2-component vector of uint) 0:90 vector swizzle ( temp 2-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:90 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'invocation' ( temp uint) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 subgroupMax ( global 2-component vector of uint) 0:90 vector swizzle ( temp 2-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:91 move second child to first child ( temp 3-component vector of uint) 0:91 vector swizzle ( temp 3-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:91 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'invocation' ( temp uint) 0:91 Constant: 0:91 2 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 subgroupMax ( global 3-component vector of uint) 0:91 vector swizzle ( temp 3-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:92 move second child to first child ( temp 4-component vector of uint) 0:92 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:92 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'invocation' ( temp uint) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupMax ( global 4-component vector of uint) 0:92 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 Constant: 0:92 3 (const int) 0:92 Constant: 0:92 2 (const int) 0:94 move second child to first child ( temp double) 0:94 direct index ( temp double) 0:94 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:94 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'invocation' ( temp uint) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupMax ( global double) 0:94 direct index ( temp double) 0:94 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 0 (const int) 0:95 move second child to first child ( temp 2-component vector of double) 0:95 vector swizzle ( temp 2-component vector of double) 0:95 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:95 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'invocation' ( temp uint) 0:95 Constant: 0:95 3 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 subgroupMax ( global 2-component vector of double) 0:95 vector swizzle ( temp 2-component vector of double) 0:95 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 3 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 move second child to first child ( temp 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of double) 0:96 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:96 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'invocation' ( temp uint) 0:96 Constant: 0:96 3 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 subgroupMax ( global 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of double) 0:96 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 3 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:97 move second child to first child ( temp 4-component vector of double) 0:97 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:97 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'invocation' ( temp uint) 0:97 Constant: 0:97 3 (const int) 0:97 subgroupMax ( global 4-component vector of double) 0:97 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 Constant: 0:97 3 (const int) 0:97 Constant: 0:97 3 (const int) 0:99 move second child to first child ( temp int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'invocation' ( temp uint) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 subgroupAnd ( global int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:100 move second child to first child ( temp 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'invocation' ( temp uint) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 subgroupAnd ( global 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:101 move second child to first child ( temp 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'invocation' ( temp uint) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupAnd ( global 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:102 move second child to first child ( temp 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'invocation' ( temp uint) 0:102 Constant: 0:102 1 (const int) 0:102 subgroupAnd ( global 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 Constant: 0:102 3 (const int) 0:102 Constant: 0:102 1 (const int) 0:104 move second child to first child ( temp uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'invocation' ( temp uint) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 subgroupAnd ( global uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:105 move second child to first child ( temp 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'invocation' ( temp uint) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 subgroupAnd ( global 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:106 move second child to first child ( temp 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'invocation' ( temp uint) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 subgroupAnd ( global 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 Constant: 0:106 2 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:107 move second child to first child ( temp 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'invocation' ( temp uint) 0:107 Constant: 0:107 2 (const int) 0:107 subgroupAnd ( global 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 Constant: 0:107 3 (const int) 0:107 Constant: 0:107 2 (const int) 0:109 move second child to first child ( temp int) 0:109 direct index ( temp int) 0:109 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:109 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'invocation' ( temp uint) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Convert bool to int ( temp int) 0:109 subgroupAnd ( global bool) 0:109 Compare Less Than ( temp bool) 0:109 direct index ( temp int) 0:109 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 0 (const int) 0:110 move second child to first child ( temp 2-component vector of int) 0:110 vector swizzle ( temp 2-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:110 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'invocation' ( temp uint) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Convert bool to int ( temp 2-component vector of int) 0:110 subgroupAnd ( global 2-component vector of bool) 0:110 Compare Less Than ( global 2-component vector of bool) 0:110 vector swizzle ( temp 2-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 0 (const int) 0:111 move second child to first child ( temp 3-component vector of int) 0:111 vector swizzle ( temp 3-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'invocation' ( temp uint) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 Convert bool to int ( temp 3-component vector of int) 0:111 subgroupAnd ( global 3-component vector of bool) 0:111 Compare Less Than ( global 3-component vector of bool) 0:111 vector swizzle ( temp 3-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 0 (const int) 0:111 0 (const int) 0:112 move second child to first child ( temp 4-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'invocation' ( temp uint) 0:112 Constant: 0:112 1 (const int) 0:112 Convert bool to int ( temp 4-component vector of int) 0:112 subgroupAnd ( global 4-component vector of bool) 0:112 Compare Less Than ( global 4-component vector of bool) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:114 move second child to first child ( temp int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'invocation' ( temp uint) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 subgroupOr ( global int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:115 move second child to first child ( temp 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'invocation' ( temp uint) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 subgroupOr ( global 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:116 move second child to first child ( temp 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'invocation' ( temp uint) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 subgroupOr ( global 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:117 move second child to first child ( temp 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'invocation' ( temp uint) 0:117 Constant: 0:117 1 (const int) 0:117 subgroupOr ( global 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 Constant: 0:117 3 (const int) 0:117 Constant: 0:117 1 (const int) 0:119 move second child to first child ( temp uint) 0:119 direct index ( temp uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'invocation' ( temp uint) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 subgroupOr ( global uint) 0:119 direct index ( temp uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 0 (const int) 0:120 move second child to first child ( temp 2-component vector of uint) 0:120 vector swizzle ( temp 2-component vector of uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:120 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'invocation' ( temp uint) 0:120 Constant: 0:120 2 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 subgroupOr ( global 2-component vector of uint) 0:120 vector swizzle ( temp 2-component vector of uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:121 move second child to first child ( temp 3-component vector of uint) 0:121 vector swizzle ( temp 3-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:121 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'invocation' ( temp uint) 0:121 Constant: 0:121 2 (const int) 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 subgroupOr ( global 3-component vector of uint) 0:121 vector swizzle ( temp 3-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 Constant: 0:121 2 (const int) 0:121 Constant: 0:121 2 (const int) 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 move second child to first child ( temp 4-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:122 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'invocation' ( temp uint) 0:122 Constant: 0:122 2 (const int) 0:122 subgroupOr ( global 4-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 Constant: 0:122 3 (const int) 0:122 Constant: 0:122 2 (const int) 0:124 move second child to first child ( temp int) 0:124 direct index ( temp int) 0:124 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:124 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'invocation' ( temp uint) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Convert bool to int ( temp int) 0:124 subgroupOr ( global bool) 0:124 Compare Less Than ( temp bool) 0:124 direct index ( temp int) 0:124 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:125 move second child to first child ( temp 2-component vector of int) 0:125 vector swizzle ( temp 2-component vector of int) 0:125 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:125 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'invocation' ( temp uint) 0:125 Constant: 0:125 1 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Convert bool to int ( temp 2-component vector of int) 0:125 subgroupOr ( global 2-component vector of bool) 0:125 Compare Less Than ( global 2-component vector of bool) 0:125 vector swizzle ( temp 2-component vector of int) 0:125 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 0 (const int) 0:126 move second child to first child ( temp 3-component vector of int) 0:126 vector swizzle ( temp 3-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'invocation' ( temp uint) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Convert bool to int ( temp 3-component vector of int) 0:126 subgroupOr ( global 3-component vector of bool) 0:126 Compare Less Than ( global 3-component vector of bool) 0:126 vector swizzle ( temp 3-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 0 (const int) 0:126 0 (const int) 0:127 move second child to first child ( temp 4-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'invocation' ( temp uint) 0:127 Constant: 0:127 1 (const int) 0:127 Convert bool to int ( temp 4-component vector of int) 0:127 subgroupOr ( global 4-component vector of bool) 0:127 Compare Less Than ( global 4-component vector of bool) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:129 move second child to first child ( temp int) 0:129 direct index ( temp int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'invocation' ( temp uint) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 0 (const int) 0:129 subgroupXor ( global int) 0:129 direct index ( temp int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 0 (const int) 0:130 move second child to first child ( temp 2-component vector of int) 0:130 vector swizzle ( temp 2-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:130 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'invocation' ( temp uint) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 subgroupXor ( global 2-component vector of int) 0:130 vector swizzle ( temp 2-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:131 move second child to first child ( temp 3-component vector of int) 0:131 vector swizzle ( temp 3-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:131 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'invocation' ( temp uint) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 2 (const int) 0:131 subgroupXor ( global 3-component vector of int) 0:131 vector swizzle ( temp 3-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 2 (const int) 0:132 move second child to first child ( temp 4-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:132 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'invocation' ( temp uint) 0:132 Constant: 0:132 1 (const int) 0:132 subgroupXor ( global 4-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 Constant: 0:132 3 (const int) 0:132 Constant: 0:132 1 (const int) 0:134 move second child to first child ( temp uint) 0:134 direct index ( temp uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'invocation' ( temp uint) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 0 (const int) 0:134 subgroupXor ( global uint) 0:134 direct index ( temp uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 0 (const int) 0:135 move second child to first child ( temp 2-component vector of uint) 0:135 vector swizzle ( temp 2-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:135 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'invocation' ( temp uint) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 subgroupXor ( global 2-component vector of uint) 0:135 vector swizzle ( temp 2-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:136 move second child to first child ( temp 3-component vector of uint) 0:136 vector swizzle ( temp 3-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:136 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'invocation' ( temp uint) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 subgroupXor ( global 3-component vector of uint) 0:136 vector swizzle ( temp 3-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 Constant: 0:136 2 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:137 move second child to first child ( temp 4-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:137 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'invocation' ( temp uint) 0:137 Constant: 0:137 2 (const int) 0:137 subgroupXor ( global 4-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 Constant: 0:137 3 (const int) 0:137 Constant: 0:137 2 (const int) 0:139 move second child to first child ( temp int) 0:139 direct index ( temp int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'invocation' ( temp uint) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Convert bool to int ( temp int) 0:139 subgroupXor ( global bool) 0:139 Compare Less Than ( temp bool) 0:139 direct index ( temp int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 0 (const int) 0:140 move second child to first child ( temp 2-component vector of int) 0:140 vector swizzle ( temp 2-component vector of int) 0:140 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:140 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'invocation' ( temp uint) 0:140 Constant: 0:140 1 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Convert bool to int ( temp 2-component vector of int) 0:140 subgroupXor ( global 2-component vector of bool) 0:140 Compare Less Than ( global 2-component vector of bool) 0:140 vector swizzle ( temp 2-component vector of int) 0:140 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 0 (const int) 0:141 move second child to first child ( temp 3-component vector of int) 0:141 vector swizzle ( temp 3-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'invocation' ( temp uint) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 2 (const int) 0:141 Convert bool to int ( temp 3-component vector of int) 0:141 subgroupXor ( global 3-component vector of bool) 0:141 Compare Less Than ( global 3-component vector of bool) 0:141 vector swizzle ( temp 3-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 2 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 0 (const int) 0:141 0 (const int) 0:142 move second child to first child ( temp 4-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'invocation' ( temp uint) 0:142 Constant: 0:142 1 (const int) 0:142 Convert bool to int ( temp 4-component vector of int) 0:142 subgroupXor ( global 4-component vector of bool) 0:142 Compare Less Than ( global 4-component vector of bool) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:144 move second child to first child ( temp float) 0:144 direct index ( temp float) 0:144 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:144 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'invocation' ( temp uint) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 0 (const int) 0:144 subgroupInclusiveAdd ( global float) 0:144 direct index ( temp float) 0:144 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:144 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 0 (const int) 0:145 move second child to first child ( temp 2-component vector of float) 0:145 vector swizzle ( temp 2-component vector of float) 0:145 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:145 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:145 'invocation' ( temp uint) 0:145 Constant: 0:145 0 (const int) 0:145 Sequence 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 subgroupInclusiveAdd ( global 2-component vector of float) 0:145 vector swizzle ( temp 2-component vector of float) 0:145 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 Sequence 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 1 (const int) 0:146 move second child to first child ( temp 3-component vector of float) 0:146 vector swizzle ( temp 3-component vector of float) 0:146 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:146 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'invocation' ( temp uint) 0:146 Constant: 0:146 0 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 2 (const int) 0:146 subgroupInclusiveAdd ( global 3-component vector of float) 0:146 vector swizzle ( temp 3-component vector of float) 0:146 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 Constant: 0:146 2 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 2 (const int) 0:147 move second child to first child ( temp 4-component vector of float) 0:147 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:147 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'invocation' ( temp uint) 0:147 Constant: 0:147 0 (const int) 0:147 subgroupInclusiveAdd ( global 4-component vector of float) 0:147 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:147 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 Constant: 0:147 3 (const int) 0:147 Constant: 0:147 0 (const int) 0:149 move second child to first child ( temp int) 0:149 direct index ( temp int) 0:149 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:149 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'invocation' ( temp uint) 0:149 Constant: 0:149 1 (const int) 0:149 Constant: 0:149 0 (const int) 0:149 subgroupInclusiveAdd ( global int) 0:149 direct index ( temp int) 0:149 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:149 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 1 (const int) 0:149 Constant: 0:149 0 (const int) 0:150 move second child to first child ( temp 2-component vector of int) 0:150 vector swizzle ( temp 2-component vector of int) 0:150 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:150 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:150 'invocation' ( temp uint) 0:150 Constant: 0:150 1 (const int) 0:150 Sequence 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 subgroupInclusiveAdd ( global 2-component vector of int) 0:150 vector swizzle ( temp 2-component vector of int) 0:150 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Sequence 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:151 move second child to first child ( temp 3-component vector of int) 0:151 vector swizzle ( temp 3-component vector of int) 0:151 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:151 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'invocation' ( temp uint) 0:151 Constant: 0:151 1 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 2 (const int) 0:151 subgroupInclusiveAdd ( global 3-component vector of int) 0:151 vector swizzle ( temp 3-component vector of int) 0:151 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 Constant: 0:151 2 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 2 (const int) 0:152 move second child to first child ( temp 4-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:152 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'invocation' ( temp uint) 0:152 Constant: 0:152 1 (const int) 0:152 subgroupInclusiveAdd ( global 4-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:152 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 Constant: 0:152 3 (const int) 0:152 Constant: 0:152 1 (const int) 0:154 move second child to first child ( temp uint) 0:154 direct index ( temp uint) 0:154 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:154 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'invocation' ( temp uint) 0:154 Constant: 0:154 2 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 subgroupInclusiveAdd ( global uint) 0:154 direct index ( temp uint) 0:154 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:154 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 2 (const int) 0:154 Constant: 0:154 0 (const int) 0:155 move second child to first child ( temp 2-component vector of uint) 0:155 vector swizzle ( temp 2-component vector of uint) 0:155 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:155 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:155 'invocation' ( temp uint) 0:155 Constant: 0:155 2 (const int) 0:155 Sequence 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 1 (const int) 0:155 subgroupInclusiveAdd ( global 2-component vector of uint) 0:155 vector swizzle ( temp 2-component vector of uint) 0:155 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:155 Constant: 0:155 1 (const int) 0:155 Constant: 0:155 2 (const int) 0:155 Sequence 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 1 (const int) 0:156 move second child to first child ( temp 3-component vector of uint) 0:156 vector swizzle ( temp 3-component vector of uint) 0:156 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:156 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'invocation' ( temp uint) 0:156 Constant: 0:156 2 (const int) 0:156 Sequence 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 2 (const int) 0:156 subgroupInclusiveAdd ( global 3-component vector of uint) 0:156 vector swizzle ( temp 3-component vector of uint) 0:156 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 Constant: 0:156 2 (const int) 0:156 Constant: 0:156 2 (const int) 0:156 Sequence 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 2 (const int) 0:157 move second child to first child ( temp 4-component vector of uint) 0:157 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:157 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'invocation' ( temp uint) 0:157 Constant: 0:157 2 (const int) 0:157 subgroupInclusiveAdd ( global 4-component vector of uint) 0:157 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:157 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 Constant: 0:157 3 (const int) 0:157 Constant: 0:157 2 (const int) 0:159 move second child to first child ( temp double) 0:159 direct index ( temp double) 0:159 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:159 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'invocation' ( temp uint) 0:159 Constant: 0:159 3 (const int) 0:159 Constant: 0:159 0 (const int) 0:159 subgroupInclusiveAdd ( global double) 0:159 direct index ( temp double) 0:159 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:159 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 3 (const int) 0:159 Constant: 0:159 0 (const int) 0:160 move second child to first child ( temp 2-component vector of double) 0:160 vector swizzle ( temp 2-component vector of double) 0:160 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:160 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:160 'invocation' ( temp uint) 0:160 Constant: 0:160 3 (const int) 0:160 Sequence 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 subgroupInclusiveAdd ( global 2-component vector of double) 0:160 vector swizzle ( temp 2-component vector of double) 0:160 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:160 Constant: 0:160 1 (const int) 0:160 Constant: 0:160 3 (const int) 0:160 Sequence 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:161 move second child to first child ( temp 3-component vector of double) 0:161 vector swizzle ( temp 3-component vector of double) 0:161 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:161 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'invocation' ( temp uint) 0:161 Constant: 0:161 3 (const int) 0:161 Sequence 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 Constant: 0:161 2 (const int) 0:161 subgroupInclusiveAdd ( global 3-component vector of double) 0:161 vector swizzle ( temp 3-component vector of double) 0:161 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 Constant: 0:161 2 (const int) 0:161 Constant: 0:161 3 (const int) 0:161 Sequence 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 Constant: 0:161 2 (const int) 0:162 move second child to first child ( temp 4-component vector of double) 0:162 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:162 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'invocation' ( temp uint) 0:162 Constant: 0:162 3 (const int) 0:162 subgroupInclusiveAdd ( global 4-component vector of double) 0:162 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:162 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 Constant: 0:162 3 (const int) 0:162 Constant: 0:162 3 (const int) 0:164 move second child to first child ( temp float) 0:164 direct index ( temp float) 0:164 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:164 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'invocation' ( temp uint) 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 0 (const int) 0:164 subgroupInclusiveMul ( global float) 0:164 direct index ( temp float) 0:164 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:164 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 0 (const int) 0:165 move second child to first child ( temp 2-component vector of float) 0:165 vector swizzle ( temp 2-component vector of float) 0:165 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:165 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:165 'invocation' ( temp uint) 0:165 Constant: 0:165 0 (const int) 0:165 Sequence 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 subgroupInclusiveMul ( global 2-component vector of float) 0:165 vector swizzle ( temp 2-component vector of float) 0:165 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 0 (const int) 0:165 Sequence 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:166 move second child to first child ( temp 3-component vector of float) 0:166 vector swizzle ( temp 3-component vector of float) 0:166 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:166 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'invocation' ( temp uint) 0:166 Constant: 0:166 0 (const int) 0:166 Sequence 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 2 (const int) 0:166 subgroupInclusiveMul ( global 3-component vector of float) 0:166 vector swizzle ( temp 3-component vector of float) 0:166 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 Constant: 0:166 2 (const int) 0:166 Constant: 0:166 0 (const int) 0:166 Sequence 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 2 (const int) 0:167 move second child to first child ( temp 4-component vector of float) 0:167 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:167 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'invocation' ( temp uint) 0:167 Constant: 0:167 0 (const int) 0:167 subgroupInclusiveMul ( global 4-component vector of float) 0:167 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:167 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 Constant: 0:167 3 (const int) 0:167 Constant: 0:167 0 (const int) 0:169 move second child to first child ( temp int) 0:169 direct index ( temp int) 0:169 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:169 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'invocation' ( temp uint) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 0 (const int) 0:169 subgroupInclusiveMul ( global int) 0:169 direct index ( temp int) 0:169 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:169 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 Constant: 0:169 0 (const int) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 0 (const int) 0:170 move second child to first child ( temp 2-component vector of int) 0:170 vector swizzle ( temp 2-component vector of int) 0:170 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:170 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:170 'invocation' ( temp uint) 0:170 Constant: 0:170 1 (const int) 0:170 Sequence 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 1 (const int) 0:170 subgroupInclusiveMul ( global 2-component vector of int) 0:170 vector swizzle ( temp 2-component vector of int) 0:170 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:170 Constant: 0:170 1 (const int) 0:170 Constant: 0:170 1 (const int) 0:170 Sequence 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 1 (const int) 0:171 move second child to first child ( temp 3-component vector of int) 0:171 vector swizzle ( temp 3-component vector of int) 0:171 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:171 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'invocation' ( temp uint) 0:171 Constant: 0:171 1 (const int) 0:171 Sequence 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 Constant: 0:171 2 (const int) 0:171 subgroupInclusiveMul ( global 3-component vector of int) 0:171 vector swizzle ( temp 3-component vector of int) 0:171 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 Constant: 0:171 2 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 Sequence 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 Constant: 0:171 2 (const int) 0:172 move second child to first child ( temp 4-component vector of int) 0:172 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:172 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'invocation' ( temp uint) 0:172 Constant: 0:172 1 (const int) 0:172 subgroupInclusiveMul ( global 4-component vector of int) 0:172 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:172 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 Constant: 0:172 3 (const int) 0:172 Constant: 0:172 1 (const int) 0:174 move second child to first child ( temp uint) 0:174 direct index ( temp uint) 0:174 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:174 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'invocation' ( temp uint) 0:174 Constant: 0:174 2 (const int) 0:174 Constant: 0:174 0 (const int) 0:174 subgroupInclusiveMul ( global uint) 0:174 direct index ( temp uint) 0:174 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:174 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 Constant: 0:174 0 (const int) 0:174 Constant: 0:174 2 (const int) 0:174 Constant: 0:174 0 (const int) 0:175 move second child to first child ( temp 2-component vector of uint) 0:175 vector swizzle ( temp 2-component vector of uint) 0:175 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:175 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:175 'invocation' ( temp uint) 0:175 Constant: 0:175 2 (const int) 0:175 Sequence 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 subgroupInclusiveMul ( global 2-component vector of uint) 0:175 vector swizzle ( temp 2-component vector of uint) 0:175 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:175 Constant: 0:175 1 (const int) 0:175 Constant: 0:175 2 (const int) 0:175 Sequence 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 1 (const int) 0:176 move second child to first child ( temp 3-component vector of uint) 0:176 vector swizzle ( temp 3-component vector of uint) 0:176 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:176 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'invocation' ( temp uint) 0:176 Constant: 0:176 2 (const int) 0:176 Sequence 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 2 (const int) 0:176 subgroupInclusiveMul ( global 3-component vector of uint) 0:176 vector swizzle ( temp 3-component vector of uint) 0:176 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 Constant: 0:176 2 (const int) 0:176 Constant: 0:176 2 (const int) 0:176 Sequence 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 2 (const int) 0:177 move second child to first child ( temp 4-component vector of uint) 0:177 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:177 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'invocation' ( temp uint) 0:177 Constant: 0:177 2 (const int) 0:177 subgroupInclusiveMul ( global 4-component vector of uint) 0:177 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:177 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 Constant: 0:177 3 (const int) 0:177 Constant: 0:177 2 (const int) 0:179 move second child to first child ( temp double) 0:179 direct index ( temp double) 0:179 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:179 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'invocation' ( temp uint) 0:179 Constant: 0:179 3 (const int) 0:179 Constant: 0:179 0 (const int) 0:179 subgroupInclusiveMul ( global double) 0:179 direct index ( temp double) 0:179 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:179 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 Constant: 0:179 0 (const int) 0:179 Constant: 0:179 3 (const int) 0:179 Constant: 0:179 0 (const int) 0:180 move second child to first child ( temp 2-component vector of double) 0:180 vector swizzle ( temp 2-component vector of double) 0:180 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:180 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:180 'invocation' ( temp uint) 0:180 Constant: 0:180 3 (const int) 0:180 Sequence 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 subgroupInclusiveMul ( global 2-component vector of double) 0:180 vector swizzle ( temp 2-component vector of double) 0:180 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 3 (const int) 0:180 Sequence 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:181 move second child to first child ( temp 3-component vector of double) 0:181 vector swizzle ( temp 3-component vector of double) 0:181 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:181 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'invocation' ( temp uint) 0:181 Constant: 0:181 3 (const int) 0:181 Sequence 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 Constant: 0:181 2 (const int) 0:181 subgroupInclusiveMul ( global 3-component vector of double) 0:181 vector swizzle ( temp 3-component vector of double) 0:181 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 Constant: 0:181 2 (const int) 0:181 Constant: 0:181 3 (const int) 0:181 Sequence 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 Constant: 0:181 2 (const int) 0:182 move second child to first child ( temp 4-component vector of double) 0:182 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:182 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'invocation' ( temp uint) 0:182 Constant: 0:182 3 (const int) 0:182 subgroupInclusiveMul ( global 4-component vector of double) 0:182 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:182 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 Constant: 0:182 3 (const int) 0:182 Constant: 0:182 3 (const int) 0:184 move second child to first child ( temp float) 0:184 direct index ( temp float) 0:184 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:184 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'invocation' ( temp uint) 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 0 (const int) 0:184 subgroupInclusiveMin ( global float) 0:184 direct index ( temp float) 0:184 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:184 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 0 (const int) 0:185 move second child to first child ( temp 2-component vector of float) 0:185 vector swizzle ( temp 2-component vector of float) 0:185 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:185 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:185 'invocation' ( temp uint) 0:185 Constant: 0:185 0 (const int) 0:185 Sequence 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 subgroupInclusiveMin ( global 2-component vector of float) 0:185 vector swizzle ( temp 2-component vector of float) 0:185 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:185 Constant: 0:185 1 (const int) 0:185 Constant: 0:185 0 (const int) 0:185 Sequence 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 1 (const int) 0:186 move second child to first child ( temp 3-component vector of float) 0:186 vector swizzle ( temp 3-component vector of float) 0:186 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:186 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'invocation' ( temp uint) 0:186 Constant: 0:186 0 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 2 (const int) 0:186 subgroupInclusiveMin ( global 3-component vector of float) 0:186 vector swizzle ( temp 3-component vector of float) 0:186 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 Constant: 0:186 2 (const int) 0:186 Constant: 0:186 0 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 2 (const int) 0:187 move second child to first child ( temp 4-component vector of float) 0:187 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:187 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'invocation' ( temp uint) 0:187 Constant: 0:187 0 (const int) 0:187 subgroupInclusiveMin ( global 4-component vector of float) 0:187 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:187 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 Constant: 0:187 3 (const int) 0:187 Constant: 0:187 0 (const int) 0:189 move second child to first child ( temp int) 0:189 direct index ( temp int) 0:189 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:189 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'invocation' ( temp uint) 0:189 Constant: 0:189 1 (const int) 0:189 Constant: 0:189 0 (const int) 0:189 subgroupInclusiveMin ( global int) 0:189 direct index ( temp int) 0:189 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:189 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 Constant: 0:189 0 (const int) 0:189 Constant: 0:189 1 (const int) 0:189 Constant: 0:189 0 (const int) 0:190 move second child to first child ( temp 2-component vector of int) 0:190 vector swizzle ( temp 2-component vector of int) 0:190 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:190 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:190 'invocation' ( temp uint) 0:190 Constant: 0:190 1 (const int) 0:190 Sequence 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 1 (const int) 0:190 subgroupInclusiveMin ( global 2-component vector of int) 0:190 vector swizzle ( temp 2-component vector of int) 0:190 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:190 Constant: 0:190 1 (const int) 0:190 Constant: 0:190 1 (const int) 0:190 Sequence 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 1 (const int) 0:191 move second child to first child ( temp 3-component vector of int) 0:191 vector swizzle ( temp 3-component vector of int) 0:191 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:191 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'invocation' ( temp uint) 0:191 Constant: 0:191 1 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 2 (const int) 0:191 subgroupInclusiveMin ( global 3-component vector of int) 0:191 vector swizzle ( temp 3-component vector of int) 0:191 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 Constant: 0:191 2 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 2 (const int) 0:192 move second child to first child ( temp 4-component vector of int) 0:192 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:192 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'invocation' ( temp uint) 0:192 Constant: 0:192 1 (const int) 0:192 subgroupInclusiveMin ( global 4-component vector of int) 0:192 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:192 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 Constant: 0:192 3 (const int) 0:192 Constant: 0:192 1 (const int) 0:194 move second child to first child ( temp uint) 0:194 direct index ( temp uint) 0:194 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:194 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'invocation' ( temp uint) 0:194 Constant: 0:194 2 (const int) 0:194 Constant: 0:194 0 (const int) 0:194 subgroupInclusiveMin ( global uint) 0:194 direct index ( temp uint) 0:194 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:194 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 Constant: 0:194 0 (const int) 0:194 Constant: 0:194 2 (const int) 0:194 Constant: 0:194 0 (const int) 0:195 move second child to first child ( temp 2-component vector of uint) 0:195 vector swizzle ( temp 2-component vector of uint) 0:195 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:195 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:195 'invocation' ( temp uint) 0:195 Constant: 0:195 2 (const int) 0:195 Sequence 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 subgroupInclusiveMin ( global 2-component vector of uint) 0:195 vector swizzle ( temp 2-component vector of uint) 0:195 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 2 (const int) 0:195 Sequence 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:196 move second child to first child ( temp 3-component vector of uint) 0:196 vector swizzle ( temp 3-component vector of uint) 0:196 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:196 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'invocation' ( temp uint) 0:196 Constant: 0:196 2 (const int) 0:196 Sequence 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 2 (const int) 0:196 subgroupInclusiveMin ( global 3-component vector of uint) 0:196 vector swizzle ( temp 3-component vector of uint) 0:196 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 Constant: 0:196 2 (const int) 0:196 Constant: 0:196 2 (const int) 0:196 Sequence 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 2 (const int) 0:197 move second child to first child ( temp 4-component vector of uint) 0:197 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:197 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'invocation' ( temp uint) 0:197 Constant: 0:197 2 (const int) 0:197 subgroupInclusiveMin ( global 4-component vector of uint) 0:197 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:197 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 Constant: 0:197 3 (const int) 0:197 Constant: 0:197 2 (const int) 0:199 move second child to first child ( temp double) 0:199 direct index ( temp double) 0:199 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:199 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'invocation' ( temp uint) 0:199 Constant: 0:199 3 (const int) 0:199 Constant: 0:199 0 (const int) 0:199 subgroupInclusiveMin ( global double) 0:199 direct index ( temp double) 0:199 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:199 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 Constant: 0:199 0 (const int) 0:199 Constant: 0:199 3 (const int) 0:199 Constant: 0:199 0 (const int) 0:200 move second child to first child ( temp 2-component vector of double) 0:200 vector swizzle ( temp 2-component vector of double) 0:200 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:200 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:200 'invocation' ( temp uint) 0:200 Constant: 0:200 3 (const int) 0:200 Sequence 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 subgroupInclusiveMin ( global 2-component vector of double) 0:200 vector swizzle ( temp 2-component vector of double) 0:200 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:200 Constant: 0:200 1 (const int) 0:200 Constant: 0:200 3 (const int) 0:200 Sequence 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:201 move second child to first child ( temp 3-component vector of double) 0:201 vector swizzle ( temp 3-component vector of double) 0:201 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:201 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'invocation' ( temp uint) 0:201 Constant: 0:201 3 (const int) 0:201 Sequence 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:201 subgroupInclusiveMin ( global 3-component vector of double) 0:201 vector swizzle ( temp 3-component vector of double) 0:201 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 Constant: 0:201 2 (const int) 0:201 Constant: 0:201 3 (const int) 0:201 Sequence 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:202 move second child to first child ( temp 4-component vector of double) 0:202 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:202 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'invocation' ( temp uint) 0:202 Constant: 0:202 3 (const int) 0:202 subgroupInclusiveMin ( global 4-component vector of double) 0:202 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:202 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 Constant: 0:202 3 (const int) 0:202 Constant: 0:202 3 (const int) 0:204 move second child to first child ( temp float) 0:204 direct index ( temp float) 0:204 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:204 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'invocation' ( temp uint) 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 0 (const int) 0:204 subgroupInclusiveMax ( global float) 0:204 direct index ( temp float) 0:204 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:204 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 0 (const int) 0:205 move second child to first child ( temp 2-component vector of float) 0:205 vector swizzle ( temp 2-component vector of float) 0:205 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:205 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:205 'invocation' ( temp uint) 0:205 Constant: 0:205 0 (const int) 0:205 Sequence 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 subgroupInclusiveMax ( global 2-component vector of float) 0:205 vector swizzle ( temp 2-component vector of float) 0:205 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 0 (const int) 0:205 Sequence 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:206 move second child to first child ( temp 3-component vector of float) 0:206 vector swizzle ( temp 3-component vector of float) 0:206 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:206 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'invocation' ( temp uint) 0:206 Constant: 0:206 0 (const int) 0:206 Sequence 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 2 (const int) 0:206 subgroupInclusiveMax ( global 3-component vector of float) 0:206 vector swizzle ( temp 3-component vector of float) 0:206 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 Constant: 0:206 2 (const int) 0:206 Constant: 0:206 0 (const int) 0:206 Sequence 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 2 (const int) 0:207 move second child to first child ( temp 4-component vector of float) 0:207 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:207 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'invocation' ( temp uint) 0:207 Constant: 0:207 0 (const int) 0:207 subgroupInclusiveMax ( global 4-component vector of float) 0:207 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:207 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 Constant: 0:207 3 (const int) 0:207 Constant: 0:207 0 (const int) 0:209 move second child to first child ( temp int) 0:209 direct index ( temp int) 0:209 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:209 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'invocation' ( temp uint) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 0 (const int) 0:209 subgroupInclusiveMax ( global int) 0:209 direct index ( temp int) 0:209 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:209 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 Constant: 0:209 0 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 0 (const int) 0:210 move second child to first child ( temp 2-component vector of int) 0:210 vector swizzle ( temp 2-component vector of int) 0:210 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:210 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:210 'invocation' ( temp uint) 0:210 Constant: 0:210 1 (const int) 0:210 Sequence 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 subgroupInclusiveMax ( global 2-component vector of int) 0:210 vector swizzle ( temp 2-component vector of int) 0:210 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:210 Constant: 0:210 1 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Sequence 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 1 (const int) 0:211 move second child to first child ( temp 3-component vector of int) 0:211 vector swizzle ( temp 3-component vector of int) 0:211 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:211 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'invocation' ( temp uint) 0:211 Constant: 0:211 1 (const int) 0:211 Sequence 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 2 (const int) 0:211 subgroupInclusiveMax ( global 3-component vector of int) 0:211 vector swizzle ( temp 3-component vector of int) 0:211 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 Constant: 0:211 2 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Sequence 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 2 (const int) 0:212 move second child to first child ( temp 4-component vector of int) 0:212 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:212 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'invocation' ( temp uint) 0:212 Constant: 0:212 1 (const int) 0:212 subgroupInclusiveMax ( global 4-component vector of int) 0:212 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:212 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 Constant: 0:212 3 (const int) 0:212 Constant: 0:212 1 (const int) 0:214 move second child to first child ( temp uint) 0:214 direct index ( temp uint) 0:214 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:214 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'invocation' ( temp uint) 0:214 Constant: 0:214 2 (const int) 0:214 Constant: 0:214 0 (const int) 0:214 subgroupInclusiveMax ( global uint) 0:214 direct index ( temp uint) 0:214 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:214 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 Constant: 0:214 0 (const int) 0:214 Constant: 0:214 2 (const int) 0:214 Constant: 0:214 0 (const int) 0:215 move second child to first child ( temp 2-component vector of uint) 0:215 vector swizzle ( temp 2-component vector of uint) 0:215 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:215 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:215 'invocation' ( temp uint) 0:215 Constant: 0:215 2 (const int) 0:215 Sequence 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 subgroupInclusiveMax ( global 2-component vector of uint) 0:215 vector swizzle ( temp 2-component vector of uint) 0:215 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 2 (const int) 0:215 Sequence 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:216 move second child to first child ( temp 3-component vector of uint) 0:216 vector swizzle ( temp 3-component vector of uint) 0:216 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:216 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'invocation' ( temp uint) 0:216 Constant: 0:216 2 (const int) 0:216 Sequence 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 2 (const int) 0:216 subgroupInclusiveMax ( global 3-component vector of uint) 0:216 vector swizzle ( temp 3-component vector of uint) 0:216 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 Constant: 0:216 2 (const int) 0:216 Constant: 0:216 2 (const int) 0:216 Sequence 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 2 (const int) 0:217 move second child to first child ( temp 4-component vector of uint) 0:217 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:217 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'invocation' ( temp uint) 0:217 Constant: 0:217 2 (const int) 0:217 subgroupInclusiveMax ( global 4-component vector of uint) 0:217 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:217 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 Constant: 0:217 3 (const int) 0:217 Constant: 0:217 2 (const int) 0:219 move second child to first child ( temp double) 0:219 direct index ( temp double) 0:219 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:219 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'invocation' ( temp uint) 0:219 Constant: 0:219 3 (const int) 0:219 Constant: 0:219 0 (const int) 0:219 subgroupInclusiveMax ( global double) 0:219 direct index ( temp double) 0:219 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:219 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 Constant: 0:219 0 (const int) 0:219 Constant: 0:219 3 (const int) 0:219 Constant: 0:219 0 (const int) 0:220 move second child to first child ( temp 2-component vector of double) 0:220 vector swizzle ( temp 2-component vector of double) 0:220 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:220 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:220 'invocation' ( temp uint) 0:220 Constant: 0:220 3 (const int) 0:220 Sequence 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 subgroupInclusiveMax ( global 2-component vector of double) 0:220 vector swizzle ( temp 2-component vector of double) 0:220 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 3 (const int) 0:220 Sequence 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:221 move second child to first child ( temp 3-component vector of double) 0:221 vector swizzle ( temp 3-component vector of double) 0:221 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:221 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'invocation' ( temp uint) 0:221 Constant: 0:221 3 (const int) 0:221 Sequence 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 Constant: 0:221 2 (const int) 0:221 subgroupInclusiveMax ( global 3-component vector of double) 0:221 vector swizzle ( temp 3-component vector of double) 0:221 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 Constant: 0:221 2 (const int) 0:221 Constant: 0:221 3 (const int) 0:221 Sequence 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 Constant: 0:221 2 (const int) 0:222 move second child to first child ( temp 4-component vector of double) 0:222 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:222 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'invocation' ( temp uint) 0:222 Constant: 0:222 3 (const int) 0:222 subgroupInclusiveMax ( global 4-component vector of double) 0:222 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:222 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 Constant: 0:222 3 (const int) 0:222 Constant: 0:222 3 (const int) 0:224 move second child to first child ( temp int) 0:224 direct index ( temp int) 0:224 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:224 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'invocation' ( temp uint) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 0 (const int) 0:224 subgroupInclusiveAnd ( global int) 0:224 direct index ( temp int) 0:224 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:224 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 Constant: 0:224 0 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 0 (const int) 0:225 move second child to first child ( temp 2-component vector of int) 0:225 vector swizzle ( temp 2-component vector of int) 0:225 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:225 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:225 'invocation' ( temp uint) 0:225 Constant: 0:225 1 (const int) 0:225 Sequence 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 subgroupInclusiveAnd ( global 2-component vector of int) 0:225 vector swizzle ( temp 2-component vector of int) 0:225 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Sequence 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 1 (const int) 0:226 move second child to first child ( temp 3-component vector of int) 0:226 vector swizzle ( temp 3-component vector of int) 0:226 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:226 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'invocation' ( temp uint) 0:226 Constant: 0:226 1 (const int) 0:226 Sequence 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 2 (const int) 0:226 subgroupInclusiveAnd ( global 3-component vector of int) 0:226 vector swizzle ( temp 3-component vector of int) 0:226 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 Constant: 0:226 2 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Sequence 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 2 (const int) 0:227 move second child to first child ( temp 4-component vector of int) 0:227 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:227 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'invocation' ( temp uint) 0:227 Constant: 0:227 1 (const int) 0:227 subgroupInclusiveAnd ( global 4-component vector of int) 0:227 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:227 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 Constant: 0:227 3 (const int) 0:227 Constant: 0:227 1 (const int) 0:229 move second child to first child ( temp uint) 0:229 direct index ( temp uint) 0:229 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:229 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'invocation' ( temp uint) 0:229 Constant: 0:229 2 (const int) 0:229 Constant: 0:229 0 (const int) 0:229 subgroupInclusiveAnd ( global uint) 0:229 direct index ( temp uint) 0:229 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:229 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 Constant: 0:229 0 (const int) 0:229 Constant: 0:229 2 (const int) 0:229 Constant: 0:229 0 (const int) 0:230 move second child to first child ( temp 2-component vector of uint) 0:230 vector swizzle ( temp 2-component vector of uint) 0:230 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:230 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:230 'invocation' ( temp uint) 0:230 Constant: 0:230 2 (const int) 0:230 Sequence 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 subgroupInclusiveAnd ( global 2-component vector of uint) 0:230 vector swizzle ( temp 2-component vector of uint) 0:230 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 2 (const int) 0:230 Sequence 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:231 move second child to first child ( temp 3-component vector of uint) 0:231 vector swizzle ( temp 3-component vector of uint) 0:231 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:231 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'invocation' ( temp uint) 0:231 Constant: 0:231 2 (const int) 0:231 Sequence 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Constant: 0:231 2 (const int) 0:231 subgroupInclusiveAnd ( global 3-component vector of uint) 0:231 vector swizzle ( temp 3-component vector of uint) 0:231 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 Constant: 0:231 2 (const int) 0:231 Constant: 0:231 2 (const int) 0:231 Sequence 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Constant: 0:231 2 (const int) 0:232 move second child to first child ( temp 4-component vector of uint) 0:232 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:232 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'invocation' ( temp uint) 0:232 Constant: 0:232 2 (const int) 0:232 subgroupInclusiveAnd ( global 4-component vector of uint) 0:232 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:232 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 Constant: 0:232 3 (const int) 0:232 Constant: 0:232 2 (const int) 0:234 move second child to first child ( temp int) 0:234 direct index ( temp int) 0:234 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:234 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'invocation' ( temp uint) 0:234 Constant: 0:234 1 (const int) 0:234 Constant: 0:234 0 (const int) 0:234 Convert bool to int ( temp int) 0:234 subgroupInclusiveAnd ( global bool) 0:234 Compare Less Than ( temp bool) 0:234 direct index ( temp int) 0:234 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:234 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 Constant: 0:234 0 (const int) 0:234 Constant: 0:234 1 (const int) 0:234 Constant: 0:234 0 (const int) 0:234 Constant: 0:234 0 (const int) 0:235 move second child to first child ( temp 2-component vector of int) 0:235 vector swizzle ( temp 2-component vector of int) 0:235 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:235 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:235 'invocation' ( temp uint) 0:235 Constant: 0:235 1 (const int) 0:235 Sequence 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Convert bool to int ( temp 2-component vector of int) 0:235 subgroupInclusiveAnd ( global 2-component vector of bool) 0:235 Compare Less Than ( global 2-component vector of bool) 0:235 vector swizzle ( temp 2-component vector of int) 0:235 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Sequence 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 0 (const int) 0:235 0 (const int) 0:236 move second child to first child ( temp 3-component vector of int) 0:236 vector swizzle ( temp 3-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:236 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'invocation' ( temp uint) 0:236 Constant: 0:236 1 (const int) 0:236 Sequence 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 2 (const int) 0:236 Convert bool to int ( temp 3-component vector of int) 0:236 subgroupInclusiveAnd ( global 3-component vector of bool) 0:236 Compare Less Than ( global 3-component vector of bool) 0:236 vector swizzle ( temp 3-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Sequence 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 2 (const int) 0:236 Constant: 0:236 0 (const int) 0:236 0 (const int) 0:236 0 (const int) 0:237 move second child to first child ( temp 4-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:237 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'invocation' ( temp uint) 0:237 Constant: 0:237 1 (const int) 0:237 Convert bool to int ( temp 4-component vector of int) 0:237 subgroupInclusiveAnd ( global 4-component vector of bool) 0:237 Compare Less Than ( global 4-component vector of bool) 0:237 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:237 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 0 (const int) 0:237 0 (const int) 0:237 0 (const int) 0:237 0 (const int) 0:239 move second child to first child ( temp int) 0:239 direct index ( temp int) 0:239 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:239 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'invocation' ( temp uint) 0:239 Constant: 0:239 1 (const int) 0:239 Constant: 0:239 0 (const int) 0:239 subgroupInclusiveOr ( global int) 0:239 direct index ( temp int) 0:239 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:239 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 Constant: 0:239 0 (const int) 0:239 Constant: 0:239 1 (const int) 0:239 Constant: 0:239 0 (const int) 0:240 move second child to first child ( temp 2-component vector of int) 0:240 vector swizzle ( temp 2-component vector of int) 0:240 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:240 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:240 'invocation' ( temp uint) 0:240 Constant: 0:240 1 (const int) 0:240 Sequence 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 1 (const int) 0:240 subgroupInclusiveOr ( global 2-component vector of int) 0:240 vector swizzle ( temp 2-component vector of int) 0:240 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:240 Constant: 0:240 1 (const int) 0:240 Constant: 0:240 1 (const int) 0:240 Sequence 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 1 (const int) 0:241 move second child to first child ( temp 3-component vector of int) 0:241 vector swizzle ( temp 3-component vector of int) 0:241 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:241 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'invocation' ( temp uint) 0:241 Constant: 0:241 1 (const int) 0:241 Sequence 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 subgroupInclusiveOr ( global 3-component vector of int) 0:241 vector swizzle ( temp 3-component vector of int) 0:241 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 Constant: 0:241 2 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 Sequence 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 Constant: 0:241 2 (const int) 0:242 move second child to first child ( temp 4-component vector of int) 0:242 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:242 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'invocation' ( temp uint) 0:242 Constant: 0:242 1 (const int) 0:242 subgroupInclusiveOr ( global 4-component vector of int) 0:242 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:242 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 Constant: 0:242 3 (const int) 0:242 Constant: 0:242 1 (const int) 0:244 move second child to first child ( temp uint) 0:244 direct index ( temp uint) 0:244 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:244 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'invocation' ( temp uint) 0:244 Constant: 0:244 2 (const int) 0:244 Constant: 0:244 0 (const int) 0:244 subgroupInclusiveOr ( global uint) 0:244 direct index ( temp uint) 0:244 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:244 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 Constant: 0:244 0 (const int) 0:244 Constant: 0:244 2 (const int) 0:244 Constant: 0:244 0 (const int) 0:245 move second child to first child ( temp 2-component vector of uint) 0:245 vector swizzle ( temp 2-component vector of uint) 0:245 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:245 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:245 'invocation' ( temp uint) 0:245 Constant: 0:245 2 (const int) 0:245 Sequence 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 subgroupInclusiveOr ( global 2-component vector of uint) 0:245 vector swizzle ( temp 2-component vector of uint) 0:245 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 2 (const int) 0:245 Sequence 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:246 move second child to first child ( temp 3-component vector of uint) 0:246 vector swizzle ( temp 3-component vector of uint) 0:246 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:246 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'invocation' ( temp uint) 0:246 Constant: 0:246 2 (const int) 0:246 Sequence 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 2 (const int) 0:246 subgroupInclusiveOr ( global 3-component vector of uint) 0:246 vector swizzle ( temp 3-component vector of uint) 0:246 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 Constant: 0:246 2 (const int) 0:246 Constant: 0:246 2 (const int) 0:246 Sequence 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 2 (const int) 0:247 move second child to first child ( temp 4-component vector of uint) 0:247 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:247 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'invocation' ( temp uint) 0:247 Constant: 0:247 2 (const int) 0:247 subgroupInclusiveOr ( global 4-component vector of uint) 0:247 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:247 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 Constant: 0:247 3 (const int) 0:247 Constant: 0:247 2 (const int) 0:249 move second child to first child ( temp int) 0:249 direct index ( temp int) 0:249 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:249 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'invocation' ( temp uint) 0:249 Constant: 0:249 1 (const int) 0:249 Constant: 0:249 0 (const int) 0:249 Convert bool to int ( temp int) 0:249 subgroupInclusiveOr ( global bool) 0:249 Compare Less Than ( temp bool) 0:249 direct index ( temp int) 0:249 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:249 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 Constant: 0:249 0 (const int) 0:249 Constant: 0:249 1 (const int) 0:249 Constant: 0:249 0 (const int) 0:249 Constant: 0:249 0 (const int) 0:250 move second child to first child ( temp 2-component vector of int) 0:250 vector swizzle ( temp 2-component vector of int) 0:250 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:250 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:250 'invocation' ( temp uint) 0:250 Constant: 0:250 1 (const int) 0:250 Sequence 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Convert bool to int ( temp 2-component vector of int) 0:250 subgroupInclusiveOr ( global 2-component vector of bool) 0:250 Compare Less Than ( global 2-component vector of bool) 0:250 vector swizzle ( temp 2-component vector of int) 0:250 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:250 Constant: 0:250 1 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Sequence 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 0 (const int) 0:251 move second child to first child ( temp 3-component vector of int) 0:251 vector swizzle ( temp 3-component vector of int) 0:251 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:251 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'invocation' ( temp uint) 0:251 Constant: 0:251 1 (const int) 0:251 Sequence 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 2 (const int) 0:251 Convert bool to int ( temp 3-component vector of int) 0:251 subgroupInclusiveOr ( global 3-component vector of bool) 0:251 Compare Less Than ( global 3-component vector of bool) 0:251 vector swizzle ( temp 3-component vector of int) 0:251 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 Sequence 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 2 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 0 (const int) 0:251 0 (const int) 0:252 move second child to first child ( temp 4-component vector of int) 0:252 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:252 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'invocation' ( temp uint) 0:252 Constant: 0:252 1 (const int) 0:252 Convert bool to int ( temp 4-component vector of int) 0:252 subgroupInclusiveOr ( global 4-component vector of bool) 0:252 Compare Less Than ( global 4-component vector of bool) 0:252 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:252 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 0 (const int) 0:252 0 (const int) 0:252 0 (const int) 0:252 0 (const int) 0:254 move second child to first child ( temp int) 0:254 direct index ( temp int) 0:254 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:254 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'invocation' ( temp uint) 0:254 Constant: 0:254 1 (const int) 0:254 Constant: 0:254 0 (const int) 0:254 subgroupInclusiveXor ( global int) 0:254 direct index ( temp int) 0:254 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:254 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 Constant: 0:254 0 (const int) 0:254 Constant: 0:254 1 (const int) 0:254 Constant: 0:254 0 (const int) 0:255 move second child to first child ( temp 2-component vector of int) 0:255 vector swizzle ( temp 2-component vector of int) 0:255 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:255 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:255 'invocation' ( temp uint) 0:255 Constant: 0:255 1 (const int) 0:255 Sequence 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 subgroupInclusiveXor ( global 2-component vector of int) 0:255 vector swizzle ( temp 2-component vector of int) 0:255 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Sequence 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:256 move second child to first child ( temp 3-component vector of int) 0:256 vector swizzle ( temp 3-component vector of int) 0:256 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:256 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'invocation' ( temp uint) 0:256 Constant: 0:256 1 (const int) 0:256 Sequence 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Constant: 0:256 2 (const int) 0:256 subgroupInclusiveXor ( global 3-component vector of int) 0:256 vector swizzle ( temp 3-component vector of int) 0:256 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 Constant: 0:256 2 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Sequence 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Constant: 0:256 2 (const int) 0:257 move second child to first child ( temp 4-component vector of int) 0:257 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:257 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'invocation' ( temp uint) 0:257 Constant: 0:257 1 (const int) 0:257 subgroupInclusiveXor ( global 4-component vector of int) 0:257 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:257 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 Constant: 0:257 3 (const int) 0:257 Constant: 0:257 1 (const int) 0:259 move second child to first child ( temp uint) 0:259 direct index ( temp uint) 0:259 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:259 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'invocation' ( temp uint) 0:259 Constant: 0:259 2 (const int) 0:259 Constant: 0:259 0 (const int) 0:259 subgroupInclusiveXor ( global uint) 0:259 direct index ( temp uint) 0:259 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:259 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 Constant: 0:259 0 (const int) 0:259 Constant: 0:259 2 (const int) 0:259 Constant: 0:259 0 (const int) 0:260 move second child to first child ( temp 2-component vector of uint) 0:260 vector swizzle ( temp 2-component vector of uint) 0:260 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:260 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:260 'invocation' ( temp uint) 0:260 Constant: 0:260 2 (const int) 0:260 Sequence 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 1 (const int) 0:260 subgroupInclusiveXor ( global 2-component vector of uint) 0:260 vector swizzle ( temp 2-component vector of uint) 0:260 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:260 Constant: 0:260 1 (const int) 0:260 Constant: 0:260 2 (const int) 0:260 Sequence 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 1 (const int) 0:261 move second child to first child ( temp 3-component vector of uint) 0:261 vector swizzle ( temp 3-component vector of uint) 0:261 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:261 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'invocation' ( temp uint) 0:261 Constant: 0:261 2 (const int) 0:261 Sequence 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 2 (const int) 0:261 subgroupInclusiveXor ( global 3-component vector of uint) 0:261 vector swizzle ( temp 3-component vector of uint) 0:261 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 Constant: 0:261 2 (const int) 0:261 Constant: 0:261 2 (const int) 0:261 Sequence 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 2 (const int) 0:262 move second child to first child ( temp 4-component vector of uint) 0:262 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:262 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'invocation' ( temp uint) 0:262 Constant: 0:262 2 (const int) 0:262 subgroupInclusiveXor ( global 4-component vector of uint) 0:262 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:262 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 Constant: 0:262 3 (const int) 0:262 Constant: 0:262 2 (const int) 0:264 move second child to first child ( temp int) 0:264 direct index ( temp int) 0:264 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:264 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'invocation' ( temp uint) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 0 (const int) 0:264 Convert bool to int ( temp int) 0:264 subgroupInclusiveXor ( global bool) 0:264 Compare Less Than ( temp bool) 0:264 direct index ( temp int) 0:264 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:264 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 Constant: 0:264 0 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 0 (const int) 0:264 Constant: 0:264 0 (const int) 0:265 move second child to first child ( temp 2-component vector of int) 0:265 vector swizzle ( temp 2-component vector of int) 0:265 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:265 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:265 'invocation' ( temp uint) 0:265 Constant: 0:265 1 (const int) 0:265 Sequence 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Convert bool to int ( temp 2-component vector of int) 0:265 subgroupInclusiveXor ( global 2-component vector of bool) 0:265 Compare Less Than ( global 2-component vector of bool) 0:265 vector swizzle ( temp 2-component vector of int) 0:265 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Sequence 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 0 (const int) 0:266 move second child to first child ( temp 3-component vector of int) 0:266 vector swizzle ( temp 3-component vector of int) 0:266 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:266 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'invocation' ( temp uint) 0:266 Constant: 0:266 1 (const int) 0:266 Sequence 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 2 (const int) 0:266 Convert bool to int ( temp 3-component vector of int) 0:266 subgroupInclusiveXor ( global 3-component vector of bool) 0:266 Compare Less Than ( global 3-component vector of bool) 0:266 vector swizzle ( temp 3-component vector of int) 0:266 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 Sequence 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 2 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 0 (const int) 0:266 0 (const int) 0:267 move second child to first child ( temp 4-component vector of int) 0:267 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:267 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'invocation' ( temp uint) 0:267 Constant: 0:267 1 (const int) 0:267 Convert bool to int ( temp 4-component vector of int) 0:267 subgroupInclusiveXor ( global 4-component vector of bool) 0:267 Compare Less Than ( global 4-component vector of bool) 0:267 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:267 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 0 (const int) 0:267 0 (const int) 0:267 0 (const int) 0:267 0 (const int) 0:269 move second child to first child ( temp float) 0:269 direct index ( temp float) 0:269 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:269 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'invocation' ( temp uint) 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 0 (const int) 0:269 subgroupExclusiveAdd ( global float) 0:269 direct index ( temp float) 0:269 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:269 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 0 (const int) 0:270 move second child to first child ( temp 2-component vector of float) 0:270 vector swizzle ( temp 2-component vector of float) 0:270 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:270 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:270 'invocation' ( temp uint) 0:270 Constant: 0:270 0 (const int) 0:270 Sequence 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 subgroupExclusiveAdd ( global 2-component vector of float) 0:270 vector swizzle ( temp 2-component vector of float) 0:270 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 0 (const int) 0:270 Sequence 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:271 move second child to first child ( temp 3-component vector of float) 0:271 vector swizzle ( temp 3-component vector of float) 0:271 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:271 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'invocation' ( temp uint) 0:271 Constant: 0:271 0 (const int) 0:271 Sequence 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 Constant: 0:271 2 (const int) 0:271 subgroupExclusiveAdd ( global 3-component vector of float) 0:271 vector swizzle ( temp 3-component vector of float) 0:271 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 Constant: 0:271 2 (const int) 0:271 Constant: 0:271 0 (const int) 0:271 Sequence 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 Constant: 0:271 2 (const int) 0:272 move second child to first child ( temp 4-component vector of float) 0:272 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:272 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'invocation' ( temp uint) 0:272 Constant: 0:272 0 (const int) 0:272 subgroupExclusiveAdd ( global 4-component vector of float) 0:272 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:272 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 Constant: 0:272 3 (const int) 0:272 Constant: 0:272 0 (const int) 0:274 move second child to first child ( temp int) 0:274 direct index ( temp int) 0:274 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:274 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'invocation' ( temp uint) 0:274 Constant: 0:274 1 (const int) 0:274 Constant: 0:274 0 (const int) 0:274 subgroupExclusiveAdd ( global int) 0:274 direct index ( temp int) 0:274 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:274 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 Constant: 0:274 0 (const int) 0:274 Constant: 0:274 1 (const int) 0:274 Constant: 0:274 0 (const int) 0:275 move second child to first child ( temp 2-component vector of int) 0:275 vector swizzle ( temp 2-component vector of int) 0:275 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:275 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:275 'invocation' ( temp uint) 0:275 Constant: 0:275 1 (const int) 0:275 Sequence 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 1 (const int) 0:275 subgroupExclusiveAdd ( global 2-component vector of int) 0:275 vector swizzle ( temp 2-component vector of int) 0:275 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:275 Constant: 0:275 1 (const int) 0:275 Constant: 0:275 1 (const int) 0:275 Sequence 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 1 (const int) 0:276 move second child to first child ( temp 3-component vector of int) 0:276 vector swizzle ( temp 3-component vector of int) 0:276 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:276 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'invocation' ( temp uint) 0:276 Constant: 0:276 1 (const int) 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:276 subgroupExclusiveAdd ( global 3-component vector of int) 0:276 vector swizzle ( temp 3-component vector of int) 0:276 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 Constant: 0:276 2 (const int) 0:276 Constant: 0:276 1 (const int) 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 move second child to first child ( temp 4-component vector of int) 0:277 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:277 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'invocation' ( temp uint) 0:277 Constant: 0:277 1 (const int) 0:277 subgroupExclusiveAdd ( global 4-component vector of int) 0:277 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:277 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 Constant: 0:277 3 (const int) 0:277 Constant: 0:277 1 (const int) 0:279 move second child to first child ( temp uint) 0:279 direct index ( temp uint) 0:279 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:279 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'invocation' ( temp uint) 0:279 Constant: 0:279 2 (const int) 0:279 Constant: 0:279 0 (const int) 0:279 subgroupExclusiveAdd ( global uint) 0:279 direct index ( temp uint) 0:279 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:279 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 Constant: 0:279 0 (const int) 0:279 Constant: 0:279 2 (const int) 0:279 Constant: 0:279 0 (const int) 0:280 move second child to first child ( temp 2-component vector of uint) 0:280 vector swizzle ( temp 2-component vector of uint) 0:280 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:280 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:280 'invocation' ( temp uint) 0:280 Constant: 0:280 2 (const int) 0:280 Sequence 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 subgroupExclusiveAdd ( global 2-component vector of uint) 0:280 vector swizzle ( temp 2-component vector of uint) 0:280 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:280 Constant: 0:280 1 (const int) 0:280 Constant: 0:280 2 (const int) 0:280 Sequence 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:281 move second child to first child ( temp 3-component vector of uint) 0:281 vector swizzle ( temp 3-component vector of uint) 0:281 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:281 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'invocation' ( temp uint) 0:281 Constant: 0:281 2 (const int) 0:281 Sequence 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 2 (const int) 0:281 subgroupExclusiveAdd ( global 3-component vector of uint) 0:281 vector swizzle ( temp 3-component vector of uint) 0:281 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 Constant: 0:281 2 (const int) 0:281 Constant: 0:281 2 (const int) 0:281 Sequence 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 2 (const int) 0:282 move second child to first child ( temp 4-component vector of uint) 0:282 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:282 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'invocation' ( temp uint) 0:282 Constant: 0:282 2 (const int) 0:282 subgroupExclusiveAdd ( global 4-component vector of uint) 0:282 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:282 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 Constant: 0:282 3 (const int) 0:282 Constant: 0:282 2 (const int) 0:284 move second child to first child ( temp double) 0:284 direct index ( temp double) 0:284 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:284 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'invocation' ( temp uint) 0:284 Constant: 0:284 3 (const int) 0:284 Constant: 0:284 0 (const int) 0:284 subgroupExclusiveAdd ( global double) 0:284 direct index ( temp double) 0:284 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:284 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 Constant: 0:284 0 (const int) 0:284 Constant: 0:284 3 (const int) 0:284 Constant: 0:284 0 (const int) 0:285 move second child to first child ( temp 2-component vector of double) 0:285 vector swizzle ( temp 2-component vector of double) 0:285 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:285 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:285 'invocation' ( temp uint) 0:285 Constant: 0:285 3 (const int) 0:285 Sequence 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 subgroupExclusiveAdd ( global 2-component vector of double) 0:285 vector swizzle ( temp 2-component vector of double) 0:285 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 3 (const int) 0:285 Sequence 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:286 move second child to first child ( temp 3-component vector of double) 0:286 vector swizzle ( temp 3-component vector of double) 0:286 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:286 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'invocation' ( temp uint) 0:286 Constant: 0:286 3 (const int) 0:286 Sequence 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 2 (const int) 0:286 subgroupExclusiveAdd ( global 3-component vector of double) 0:286 vector swizzle ( temp 3-component vector of double) 0:286 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 Constant: 0:286 2 (const int) 0:286 Constant: 0:286 3 (const int) 0:286 Sequence 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 2 (const int) 0:287 move second child to first child ( temp 4-component vector of double) 0:287 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:287 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'invocation' ( temp uint) 0:287 Constant: 0:287 3 (const int) 0:287 subgroupExclusiveAdd ( global 4-component vector of double) 0:287 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:287 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 Constant: 0:287 3 (const int) 0:287 Constant: 0:287 3 (const int) 0:289 move second child to first child ( temp float) 0:289 direct index ( temp float) 0:289 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:289 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'invocation' ( temp uint) 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 0 (const int) 0:289 subgroupExclusiveMul ( global float) 0:289 direct index ( temp float) 0:289 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:289 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 0 (const int) 0:290 move second child to first child ( temp 2-component vector of float) 0:290 vector swizzle ( temp 2-component vector of float) 0:290 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:290 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:290 'invocation' ( temp uint) 0:290 Constant: 0:290 0 (const int) 0:290 Sequence 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 subgroupExclusiveMul ( global 2-component vector of float) 0:290 vector swizzle ( temp 2-component vector of float) 0:290 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:290 Constant: 0:290 1 (const int) 0:290 Constant: 0:290 0 (const int) 0:290 Sequence 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 1 (const int) 0:291 move second child to first child ( temp 3-component vector of float) 0:291 vector swizzle ( temp 3-component vector of float) 0:291 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:291 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'invocation' ( temp uint) 0:291 Constant: 0:291 0 (const int) 0:291 Sequence 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 2 (const int) 0:291 subgroupExclusiveMul ( global 3-component vector of float) 0:291 vector swizzle ( temp 3-component vector of float) 0:291 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 Constant: 0:291 2 (const int) 0:291 Constant: 0:291 0 (const int) 0:291 Sequence 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 2 (const int) 0:292 move second child to first child ( temp 4-component vector of float) 0:292 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:292 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'invocation' ( temp uint) 0:292 Constant: 0:292 0 (const int) 0:292 subgroupExclusiveMul ( global 4-component vector of float) 0:292 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:292 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 Constant: 0:292 3 (const int) 0:292 Constant: 0:292 0 (const int) 0:294 move second child to first child ( temp int) 0:294 direct index ( temp int) 0:294 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:294 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'invocation' ( temp uint) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 0 (const int) 0:294 subgroupExclusiveMul ( global int) 0:294 direct index ( temp int) 0:294 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:294 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 Constant: 0:294 0 (const int) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 0 (const int) 0:295 move second child to first child ( temp 2-component vector of int) 0:295 vector swizzle ( temp 2-component vector of int) 0:295 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:295 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:295 'invocation' ( temp uint) 0:295 Constant: 0:295 1 (const int) 0:295 Sequence 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 1 (const int) 0:295 subgroupExclusiveMul ( global 2-component vector of int) 0:295 vector swizzle ( temp 2-component vector of int) 0:295 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:295 Constant: 0:295 1 (const int) 0:295 Constant: 0:295 1 (const int) 0:295 Sequence 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 1 (const int) 0:296 move second child to first child ( temp 3-component vector of int) 0:296 vector swizzle ( temp 3-component vector of int) 0:296 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:296 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'invocation' ( temp uint) 0:296 Constant: 0:296 1 (const int) 0:296 Sequence 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 Constant: 0:296 2 (const int) 0:296 subgroupExclusiveMul ( global 3-component vector of int) 0:296 vector swizzle ( temp 3-component vector of int) 0:296 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 Constant: 0:296 2 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 Sequence 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 Constant: 0:296 2 (const int) 0:297 move second child to first child ( temp 4-component vector of int) 0:297 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:297 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'invocation' ( temp uint) 0:297 Constant: 0:297 1 (const int) 0:297 subgroupExclusiveMul ( global 4-component vector of int) 0:297 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:297 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 Constant: 0:297 3 (const int) 0:297 Constant: 0:297 1 (const int) 0:299 move second child to first child ( temp uint) 0:299 direct index ( temp uint) 0:299 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:299 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'invocation' ( temp uint) 0:299 Constant: 0:299 2 (const int) 0:299 Constant: 0:299 0 (const int) 0:299 subgroupExclusiveMul ( global uint) 0:299 direct index ( temp uint) 0:299 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:299 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 Constant: 0:299 0 (const int) 0:299 Constant: 0:299 2 (const int) 0:299 Constant: 0:299 0 (const int) 0:300 move second child to first child ( temp 2-component vector of uint) 0:300 vector swizzle ( temp 2-component vector of uint) 0:300 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:300 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:300 'invocation' ( temp uint) 0:300 Constant: 0:300 2 (const int) 0:300 Sequence 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 subgroupExclusiveMul ( global 2-component vector of uint) 0:300 vector swizzle ( temp 2-component vector of uint) 0:300 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 2 (const int) 0:300 Sequence 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:301 move second child to first child ( temp 3-component vector of uint) 0:301 vector swizzle ( temp 3-component vector of uint) 0:301 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:301 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'invocation' ( temp uint) 0:301 Constant: 0:301 2 (const int) 0:301 Sequence 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 2 (const int) 0:301 subgroupExclusiveMul ( global 3-component vector of uint) 0:301 vector swizzle ( temp 3-component vector of uint) 0:301 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 Constant: 0:301 2 (const int) 0:301 Constant: 0:301 2 (const int) 0:301 Sequence 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 2 (const int) 0:302 move second child to first child ( temp 4-component vector of uint) 0:302 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:302 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'invocation' ( temp uint) 0:302 Constant: 0:302 2 (const int) 0:302 subgroupExclusiveMul ( global 4-component vector of uint) 0:302 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:302 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 Constant: 0:302 3 (const int) 0:302 Constant: 0:302 2 (const int) 0:304 move second child to first child ( temp double) 0:304 direct index ( temp double) 0:304 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:304 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'invocation' ( temp uint) 0:304 Constant: 0:304 3 (const int) 0:304 Constant: 0:304 0 (const int) 0:304 subgroupExclusiveMul ( global double) 0:304 direct index ( temp double) 0:304 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:304 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 Constant: 0:304 0 (const int) 0:304 Constant: 0:304 3 (const int) 0:304 Constant: 0:304 0 (const int) 0:305 move second child to first child ( temp 2-component vector of double) 0:305 vector swizzle ( temp 2-component vector of double) 0:305 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:305 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:305 'invocation' ( temp uint) 0:305 Constant: 0:305 3 (const int) 0:305 Sequence 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 subgroupExclusiveMul ( global 2-component vector of double) 0:305 vector swizzle ( temp 2-component vector of double) 0:305 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:305 Constant: 0:305 1 (const int) 0:305 Constant: 0:305 3 (const int) 0:305 Sequence 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 1 (const int) 0:306 move second child to first child ( temp 3-component vector of double) 0:306 vector swizzle ( temp 3-component vector of double) 0:306 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:306 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'invocation' ( temp uint) 0:306 Constant: 0:306 3 (const int) 0:306 Sequence 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 Constant: 0:306 2 (const int) 0:306 subgroupExclusiveMul ( global 3-component vector of double) 0:306 vector swizzle ( temp 3-component vector of double) 0:306 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 Constant: 0:306 2 (const int) 0:306 Constant: 0:306 3 (const int) 0:306 Sequence 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 Constant: 0:306 2 (const int) 0:307 move second child to first child ( temp 4-component vector of double) 0:307 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:307 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'invocation' ( temp uint) 0:307 Constant: 0:307 3 (const int) 0:307 subgroupExclusiveMul ( global 4-component vector of double) 0:307 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:307 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 Constant: 0:307 3 (const int) 0:307 Constant: 0:307 3 (const int) 0:309 move second child to first child ( temp float) 0:309 direct index ( temp float) 0:309 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:309 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'invocation' ( temp uint) 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 0 (const int) 0:309 subgroupExclusiveMin ( global float) 0:309 direct index ( temp float) 0:309 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:309 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 0 (const int) 0:310 move second child to first child ( temp 2-component vector of float) 0:310 vector swizzle ( temp 2-component vector of float) 0:310 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:310 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:310 'invocation' ( temp uint) 0:310 Constant: 0:310 0 (const int) 0:310 Sequence 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 subgroupExclusiveMin ( global 2-component vector of float) 0:310 vector swizzle ( temp 2-component vector of float) 0:310 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 0 (const int) 0:310 Sequence 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:311 move second child to first child ( temp 3-component vector of float) 0:311 vector swizzle ( temp 3-component vector of float) 0:311 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:311 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'invocation' ( temp uint) 0:311 Constant: 0:311 0 (const int) 0:311 Sequence 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 Constant: 0:311 2 (const int) 0:311 subgroupExclusiveMin ( global 3-component vector of float) 0:311 vector swizzle ( temp 3-component vector of float) 0:311 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 Constant: 0:311 2 (const int) 0:311 Constant: 0:311 0 (const int) 0:311 Sequence 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 Constant: 0:311 2 (const int) 0:312 move second child to first child ( temp 4-component vector of float) 0:312 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:312 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'invocation' ( temp uint) 0:312 Constant: 0:312 0 (const int) 0:312 subgroupExclusiveMin ( global 4-component vector of float) 0:312 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:312 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 Constant: 0:312 3 (const int) 0:312 Constant: 0:312 0 (const int) 0:314 move second child to first child ( temp int) 0:314 direct index ( temp int) 0:314 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:314 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'invocation' ( temp uint) 0:314 Constant: 0:314 1 (const int) 0:314 Constant: 0:314 0 (const int) 0:314 subgroupExclusiveMin ( global int) 0:314 direct index ( temp int) 0:314 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:314 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 Constant: 0:314 0 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Constant: 0:314 0 (const int) 0:315 move second child to first child ( temp 2-component vector of int) 0:315 vector swizzle ( temp 2-component vector of int) 0:315 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:315 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:315 'invocation' ( temp uint) 0:315 Constant: 0:315 1 (const int) 0:315 Sequence 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 subgroupExclusiveMin ( global 2-component vector of int) 0:315 vector swizzle ( temp 2-component vector of int) 0:315 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:315 Constant: 0:315 1 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Sequence 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 1 (const int) 0:316 move second child to first child ( temp 3-component vector of int) 0:316 vector swizzle ( temp 3-component vector of int) 0:316 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:316 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'invocation' ( temp uint) 0:316 Constant: 0:316 1 (const int) 0:316 Sequence 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 2 (const int) 0:316 subgroupExclusiveMin ( global 3-component vector of int) 0:316 vector swizzle ( temp 3-component vector of int) 0:316 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 Constant: 0:316 2 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Sequence 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 2 (const int) 0:317 move second child to first child ( temp 4-component vector of int) 0:317 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:317 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'invocation' ( temp uint) 0:317 Constant: 0:317 1 (const int) 0:317 subgroupExclusiveMin ( global 4-component vector of int) 0:317 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:317 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 Constant: 0:317 3 (const int) 0:317 Constant: 0:317 1 (const int) 0:319 move second child to first child ( temp uint) 0:319 direct index ( temp uint) 0:319 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:319 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'invocation' ( temp uint) 0:319 Constant: 0:319 2 (const int) 0:319 Constant: 0:319 0 (const int) 0:319 subgroupExclusiveMin ( global uint) 0:319 direct index ( temp uint) 0:319 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:319 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 Constant: 0:319 0 (const int) 0:319 Constant: 0:319 2 (const int) 0:319 Constant: 0:319 0 (const int) 0:320 move second child to first child ( temp 2-component vector of uint) 0:320 vector swizzle ( temp 2-component vector of uint) 0:320 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:320 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:320 'invocation' ( temp uint) 0:320 Constant: 0:320 2 (const int) 0:320 Sequence 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 subgroupExclusiveMin ( global 2-component vector of uint) 0:320 vector swizzle ( temp 2-component vector of uint) 0:320 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 2 (const int) 0:320 Sequence 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:321 move second child to first child ( temp 3-component vector of uint) 0:321 vector swizzle ( temp 3-component vector of uint) 0:321 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:321 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'invocation' ( temp uint) 0:321 Constant: 0:321 2 (const int) 0:321 Sequence 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 2 (const int) 0:321 subgroupExclusiveMin ( global 3-component vector of uint) 0:321 vector swizzle ( temp 3-component vector of uint) 0:321 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 Constant: 0:321 2 (const int) 0:321 Constant: 0:321 2 (const int) 0:321 Sequence 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 2 (const int) 0:322 move second child to first child ( temp 4-component vector of uint) 0:322 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:322 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'invocation' ( temp uint) 0:322 Constant: 0:322 2 (const int) 0:322 subgroupExclusiveMin ( global 4-component vector of uint) 0:322 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:322 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 Constant: 0:322 3 (const int) 0:322 Constant: 0:322 2 (const int) 0:324 move second child to first child ( temp double) 0:324 direct index ( temp double) 0:324 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:324 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'invocation' ( temp uint) 0:324 Constant: 0:324 3 (const int) 0:324 Constant: 0:324 0 (const int) 0:324 subgroupExclusiveMin ( global double) 0:324 direct index ( temp double) 0:324 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:324 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 Constant: 0:324 0 (const int) 0:324 Constant: 0:324 3 (const int) 0:324 Constant: 0:324 0 (const int) 0:325 move second child to first child ( temp 2-component vector of double) 0:325 vector swizzle ( temp 2-component vector of double) 0:325 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:325 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:325 'invocation' ( temp uint) 0:325 Constant: 0:325 3 (const int) 0:325 Sequence 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 subgroupExclusiveMin ( global 2-component vector of double) 0:325 vector swizzle ( temp 2-component vector of double) 0:325 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 3 (const int) 0:325 Sequence 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:326 move second child to first child ( temp 3-component vector of double) 0:326 vector swizzle ( temp 3-component vector of double) 0:326 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:326 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'invocation' ( temp uint) 0:326 Constant: 0:326 3 (const int) 0:326 Sequence 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 Constant: 0:326 2 (const int) 0:326 subgroupExclusiveMin ( global 3-component vector of double) 0:326 vector swizzle ( temp 3-component vector of double) 0:326 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 Constant: 0:326 2 (const int) 0:326 Constant: 0:326 3 (const int) 0:326 Sequence 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 Constant: 0:326 2 (const int) 0:327 move second child to first child ( temp 4-component vector of double) 0:327 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:327 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'invocation' ( temp uint) 0:327 Constant: 0:327 3 (const int) 0:327 subgroupExclusiveMin ( global 4-component vector of double) 0:327 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:327 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 Constant: 0:327 3 (const int) 0:327 Constant: 0:327 3 (const int) 0:329 move second child to first child ( temp float) 0:329 direct index ( temp float) 0:329 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:329 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'invocation' ( temp uint) 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 0 (const int) 0:329 subgroupExclusiveMax ( global float) 0:329 direct index ( temp float) 0:329 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:329 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 0 (const int) 0:330 move second child to first child ( temp 2-component vector of float) 0:330 vector swizzle ( temp 2-component vector of float) 0:330 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:330 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:330 'invocation' ( temp uint) 0:330 Constant: 0:330 0 (const int) 0:330 Sequence 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 subgroupExclusiveMax ( global 2-component vector of float) 0:330 vector swizzle ( temp 2-component vector of float) 0:330 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:330 Constant: 0:330 1 (const int) 0:330 Constant: 0:330 0 (const int) 0:330 Sequence 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 1 (const int) 0:331 move second child to first child ( temp 3-component vector of float) 0:331 vector swizzle ( temp 3-component vector of float) 0:331 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:331 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'invocation' ( temp uint) 0:331 Constant: 0:331 0 (const int) 0:331 Sequence 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 2 (const int) 0:331 subgroupExclusiveMax ( global 3-component vector of float) 0:331 vector swizzle ( temp 3-component vector of float) 0:331 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 Constant: 0:331 2 (const int) 0:331 Constant: 0:331 0 (const int) 0:331 Sequence 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 2 (const int) 0:332 move second child to first child ( temp 4-component vector of float) 0:332 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:332 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'invocation' ( temp uint) 0:332 Constant: 0:332 0 (const int) 0:332 subgroupExclusiveMax ( global 4-component vector of float) 0:332 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:332 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 Constant: 0:332 3 (const int) 0:332 Constant: 0:332 0 (const int) 0:334 move second child to first child ( temp int) 0:334 direct index ( temp int) 0:334 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:334 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'invocation' ( temp uint) 0:334 Constant: 0:334 1 (const int) 0:334 Constant: 0:334 0 (const int) 0:334 subgroupExclusiveMax ( global int) 0:334 direct index ( temp int) 0:334 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:334 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 Constant: 0:334 0 (const int) 0:334 Constant: 0:334 1 (const int) 0:334 Constant: 0:334 0 (const int) 0:335 move second child to first child ( temp 2-component vector of int) 0:335 vector swizzle ( temp 2-component vector of int) 0:335 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:335 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:335 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:335 'invocation' ( temp uint) 0:335 Constant: 0:335 1 (const int) 0:335 Sequence 0:335 Constant: 0:335 0 (const int) 0:335 Constant: 0:335 1 (const int) 0:335 subgroupExclusiveMax ( global 2-component vector of int) 0:335 vector swizzle ( temp 2-component vector of int) 0:335 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:335 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:335 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:335 Constant: 0:335 1 (const int) 0:335 Constant: 0:335 1 (const int) 0:335 Sequence 0:335 Constant: 0:335 0 (const int) 0:335 Constant: 0:335 1 (const int) 0:336 move second child to first child ( temp 3-component vector of int) 0:336 vector swizzle ( temp 3-component vector of int) 0:336 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:336 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'invocation' ( temp uint) 0:336 Constant: 0:336 1 (const int) 0:336 Sequence 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Constant: 0:336 2 (const int) 0:336 subgroupExclusiveMax ( global 3-component vector of int) 0:336 vector swizzle ( temp 3-component vector of int) 0:336 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:336 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 Constant: 0:336 2 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Sequence 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Constant: 0:336 2 (const int) 0:337 move second child to first child ( temp 4-component vector of int) 0:337 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:337 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'invocation' ( temp uint) 0:337 Constant: 0:337 1 (const int) 0:337 subgroupExclusiveMax ( global 4-component vector of int) 0:337 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:337 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 Constant: 0:337 3 (const int) 0:337 Constant: 0:337 1 (const int) 0:339 move second child to first child ( temp uint) 0:339 direct index ( temp uint) 0:339 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:339 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'invocation' ( temp uint) 0:339 Constant: 0:339 2 (const int) 0:339 Constant: 0:339 0 (const int) 0:339 subgroupExclusiveMax ( global uint) 0:339 direct index ( temp uint) 0:339 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:339 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 Constant: 0:339 0 (const int) 0:339 Constant: 0:339 2 (const int) 0:339 Constant: 0:339 0 (const int) 0:340 move second child to first child ( temp 2-component vector of uint) 0:340 vector swizzle ( temp 2-component vector of uint) 0:340 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:340 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:340 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:340 'invocation' ( temp uint) 0:340 Constant: 0:340 2 (const int) 0:340 Sequence 0:340 Constant: 0:340 0 (const int) 0:340 Constant: 0:340 1 (const int) 0:340 subgroupExclusiveMax ( global 2-component vector of uint) 0:340 vector swizzle ( temp 2-component vector of uint) 0:340 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:340 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:340 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:340 Constant: 0:340 1 (const int) 0:340 Constant: 0:340 2 (const int) 0:340 Sequence 0:340 Constant: 0:340 0 (const int) 0:340 Constant: 0:340 1 (const int) 0:341 move second child to first child ( temp 3-component vector of uint) 0:341 vector swizzle ( temp 3-component vector of uint) 0:341 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:341 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'invocation' ( temp uint) 0:341 Constant: 0:341 2 (const int) 0:341 Sequence 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 2 (const int) 0:341 subgroupExclusiveMax ( global 3-component vector of uint) 0:341 vector swizzle ( temp 3-component vector of uint) 0:341 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:341 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 Constant: 0:341 2 (const int) 0:341 Constant: 0:341 2 (const int) 0:341 Sequence 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 2 (const int) 0:342 move second child to first child ( temp 4-component vector of uint) 0:342 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:342 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'invocation' ( temp uint) 0:342 Constant: 0:342 2 (const int) 0:342 subgroupExclusiveMax ( global 4-component vector of uint) 0:342 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:342 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 Constant: 0:342 3 (const int) 0:342 Constant: 0:342 2 (const int) 0:344 move second child to first child ( temp double) 0:344 direct index ( temp double) 0:344 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:344 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'invocation' ( temp uint) 0:344 Constant: 0:344 3 (const int) 0:344 Constant: 0:344 0 (const int) 0:344 subgroupExclusiveMax ( global double) 0:344 direct index ( temp double) 0:344 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:344 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 Constant: 0:344 0 (const int) 0:344 Constant: 0:344 3 (const int) 0:344 Constant: 0:344 0 (const int) 0:345 move second child to first child ( temp 2-component vector of double) 0:345 vector swizzle ( temp 2-component vector of double) 0:345 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:345 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:345 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:345 'invocation' ( temp uint) 0:345 Constant: 0:345 3 (const int) 0:345 Sequence 0:345 Constant: 0:345 0 (const int) 0:345 Constant: 0:345 1 (const int) 0:345 subgroupExclusiveMax ( global 2-component vector of double) 0:345 vector swizzle ( temp 2-component vector of double) 0:345 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:345 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:345 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:345 Constant: 0:345 1 (const int) 0:345 Constant: 0:345 3 (const int) 0:345 Sequence 0:345 Constant: 0:345 0 (const int) 0:345 Constant: 0:345 1 (const int) 0:346 move second child to first child ( temp 3-component vector of double) 0:346 vector swizzle ( temp 3-component vector of double) 0:346 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:346 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'invocation' ( temp uint) 0:346 Constant: 0:346 3 (const int) 0:346 Sequence 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 1 (const int) 0:346 Constant: 0:346 2 (const int) 0:346 subgroupExclusiveMax ( global 3-component vector of double) 0:346 vector swizzle ( temp 3-component vector of double) 0:346 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:346 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 Constant: 0:346 2 (const int) 0:346 Constant: 0:346 3 (const int) 0:346 Sequence 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 1 (const int) 0:346 Constant: 0:346 2 (const int) 0:347 move second child to first child ( temp 4-component vector of double) 0:347 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:347 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'invocation' ( temp uint) 0:347 Constant: 0:347 3 (const int) 0:347 subgroupExclusiveMax ( global 4-component vector of double) 0:347 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:347 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 Constant: 0:347 3 (const int) 0:347 Constant: 0:347 3 (const int) 0:349 move second child to first child ( temp int) 0:349 direct index ( temp int) 0:349 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:349 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'invocation' ( temp uint) 0:349 Constant: 0:349 1 (const int) 0:349 Constant: 0:349 0 (const int) 0:349 subgroupExclusiveAnd ( global int) 0:349 direct index ( temp int) 0:349 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:349 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 Constant: 0:349 0 (const int) 0:349 Constant: 0:349 1 (const int) 0:349 Constant: 0:349 0 (const int) 0:350 move second child to first child ( temp 2-component vector of int) 0:350 vector swizzle ( temp 2-component vector of int) 0:350 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:350 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:350 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:350 'invocation' ( temp uint) 0:350 Constant: 0:350 1 (const int) 0:350 Sequence 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 1 (const int) 0:350 subgroupExclusiveAnd ( global 2-component vector of int) 0:350 vector swizzle ( temp 2-component vector of int) 0:350 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:350 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:350 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:350 Constant: 0:350 1 (const int) 0:350 Constant: 0:350 1 (const int) 0:350 Sequence 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 1 (const int) 0:351 move second child to first child ( temp 3-component vector of int) 0:351 vector swizzle ( temp 3-component vector of int) 0:351 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:351 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'invocation' ( temp uint) 0:351 Constant: 0:351 1 (const int) 0:351 Sequence 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Constant: 0:351 2 (const int) 0:351 subgroupExclusiveAnd ( global 3-component vector of int) 0:351 vector swizzle ( temp 3-component vector of int) 0:351 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:351 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 Constant: 0:351 2 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Sequence 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Constant: 0:351 2 (const int) 0:352 move second child to first child ( temp 4-component vector of int) 0:352 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:352 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'invocation' ( temp uint) 0:352 Constant: 0:352 1 (const int) 0:352 subgroupExclusiveAnd ( global 4-component vector of int) 0:352 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:352 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 Constant: 0:352 3 (const int) 0:352 Constant: 0:352 1 (const int) 0:354 move second child to first child ( temp uint) 0:354 direct index ( temp uint) 0:354 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:354 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'invocation' ( temp uint) 0:354 Constant: 0:354 2 (const int) 0:354 Constant: 0:354 0 (const int) 0:354 subgroupExclusiveAnd ( global uint) 0:354 direct index ( temp uint) 0:354 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:354 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 Constant: 0:354 0 (const int) 0:354 Constant: 0:354 2 (const int) 0:354 Constant: 0:354 0 (const int) 0:355 move second child to first child ( temp 2-component vector of uint) 0:355 vector swizzle ( temp 2-component vector of uint) 0:355 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:355 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:355 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:355 'invocation' ( temp uint) 0:355 Constant: 0:355 2 (const int) 0:355 Sequence 0:355 Constant: 0:355 0 (const int) 0:355 Constant: 0:355 1 (const int) 0:355 subgroupExclusiveAnd ( global 2-component vector of uint) 0:355 vector swizzle ( temp 2-component vector of uint) 0:355 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:355 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:355 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:355 Constant: 0:355 1 (const int) 0:355 Constant: 0:355 2 (const int) 0:355 Sequence 0:355 Constant: 0:355 0 (const int) 0:355 Constant: 0:355 1 (const int) 0:356 move second child to first child ( temp 3-component vector of uint) 0:356 vector swizzle ( temp 3-component vector of uint) 0:356 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:356 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'invocation' ( temp uint) 0:356 Constant: 0:356 2 (const int) 0:356 Sequence 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 1 (const int) 0:356 Constant: 0:356 2 (const int) 0:356 subgroupExclusiveAnd ( global 3-component vector of uint) 0:356 vector swizzle ( temp 3-component vector of uint) 0:356 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:356 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 Constant: 0:356 2 (const int) 0:356 Constant: 0:356 2 (const int) 0:356 Sequence 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 1 (const int) 0:356 Constant: 0:356 2 (const int) 0:357 move second child to first child ( temp 4-component vector of uint) 0:357 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:357 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'invocation' ( temp uint) 0:357 Constant: 0:357 2 (const int) 0:357 subgroupExclusiveAnd ( global 4-component vector of uint) 0:357 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:357 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 Constant: 0:357 3 (const int) 0:357 Constant: 0:357 2 (const int) 0:359 move second child to first child ( temp int) 0:359 direct index ( temp int) 0:359 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:359 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'invocation' ( temp uint) 0:359 Constant: 0:359 1 (const int) 0:359 Constant: 0:359 0 (const int) 0:359 Convert bool to int ( temp int) 0:359 subgroupExclusiveAnd ( global bool) 0:359 Compare Less Than ( temp bool) 0:359 direct index ( temp int) 0:359 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:359 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 Constant: 0:359 0 (const int) 0:359 Constant: 0:359 1 (const int) 0:359 Constant: 0:359 0 (const int) 0:359 Constant: 0:359 0 (const int) 0:360 move second child to first child ( temp 2-component vector of int) 0:360 vector swizzle ( temp 2-component vector of int) 0:360 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:360 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:360 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:360 'invocation' ( temp uint) 0:360 Constant: 0:360 1 (const int) 0:360 Sequence 0:360 Constant: 0:360 0 (const int) 0:360 Constant: 0:360 1 (const int) 0:360 Convert bool to int ( temp 2-component vector of int) 0:360 subgroupExclusiveAnd ( global 2-component vector of bool) 0:360 Compare Less Than ( global 2-component vector of bool) 0:360 vector swizzle ( temp 2-component vector of int) 0:360 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:360 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:360 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:360 Constant: 0:360 1 (const int) 0:360 Constant: 0:360 1 (const int) 0:360 Sequence 0:360 Constant: 0:360 0 (const int) 0:360 Constant: 0:360 1 (const int) 0:360 Constant: 0:360 0 (const int) 0:360 0 (const int) 0:361 move second child to first child ( temp 3-component vector of int) 0:361 vector swizzle ( temp 3-component vector of int) 0:361 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:361 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'invocation' ( temp uint) 0:361 Constant: 0:361 1 (const int) 0:361 Sequence 0:361 Constant: 0:361 0 (const int) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 2 (const int) 0:361 Convert bool to int ( temp 3-component vector of int) 0:361 subgroupExclusiveAnd ( global 3-component vector of bool) 0:361 Compare Less Than ( global 3-component vector of bool) 0:361 vector swizzle ( temp 3-component vector of int) 0:361 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:361 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 1 (const int) 0:361 Sequence 0:361 Constant: 0:361 0 (const int) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 2 (const int) 0:361 Constant: 0:361 0 (const int) 0:361 0 (const int) 0:361 0 (const int) 0:362 move second child to first child ( temp 4-component vector of int) 0:362 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:362 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'invocation' ( temp uint) 0:362 Constant: 0:362 1 (const int) 0:362 Convert bool to int ( temp 4-component vector of int) 0:362 subgroupExclusiveAnd ( global 4-component vector of bool) 0:362 Compare Less Than ( global 4-component vector of bool) 0:362 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:362 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 Constant: 0:362 1 (const int) 0:362 Constant: 0:362 1 (const int) 0:362 Constant: 0:362 0 (const int) 0:362 0 (const int) 0:362 0 (const int) 0:362 0 (const int) 0:364 move second child to first child ( temp int) 0:364 direct index ( temp int) 0:364 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:364 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'invocation' ( temp uint) 0:364 Constant: 0:364 1 (const int) 0:364 Constant: 0:364 0 (const int) 0:364 subgroupExclusiveOr ( global int) 0:364 direct index ( temp int) 0:364 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:364 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 Constant: 0:364 0 (const int) 0:364 Constant: 0:364 1 (const int) 0:364 Constant: 0:364 0 (const int) 0:365 move second child to first child ( temp 2-component vector of int) 0:365 vector swizzle ( temp 2-component vector of int) 0:365 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:365 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:365 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:365 'invocation' ( temp uint) 0:365 Constant: 0:365 1 (const int) 0:365 Sequence 0:365 Constant: 0:365 0 (const int) 0:365 Constant: 0:365 1 (const int) 0:365 subgroupExclusiveOr ( global 2-component vector of int) 0:365 vector swizzle ( temp 2-component vector of int) 0:365 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:365 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:365 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:365 Constant: 0:365 1 (const int) 0:365 Constant: 0:365 1 (const int) 0:365 Sequence 0:365 Constant: 0:365 0 (const int) 0:365 Constant: 0:365 1 (const int) 0:366 move second child to first child ( temp 3-component vector of int) 0:366 vector swizzle ( temp 3-component vector of int) 0:366 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:366 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'invocation' ( temp uint) 0:366 Constant: 0:366 1 (const int) 0:366 Sequence 0:366 Constant: 0:366 0 (const int) 0:366 Constant: 0:366 1 (const int) 0:366 Constant: 0:366 2 (const int) 0:366 subgroupExclusiveOr ( global 3-component vector of int) 0:366 vector swizzle ( temp 3-component vector of int) 0:366 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:366 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 Constant: 0:366 2 (const int) 0:366 Constant: 0:366 1 (const int) 0:366 Sequence 0:366 Constant: 0:366 0 (const int) 0:366 Constant: 0:366 1 (const int) 0:366 Constant: 0:366 2 (const int) 0:367 move second child to first child ( temp 4-component vector of int) 0:367 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:367 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'invocation' ( temp uint) 0:367 Constant: 0:367 1 (const int) 0:367 subgroupExclusiveOr ( global 4-component vector of int) 0:367 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:367 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 Constant: 0:367 3 (const int) 0:367 Constant: 0:367 1 (const int) 0:369 move second child to first child ( temp uint) 0:369 direct index ( temp uint) 0:369 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:369 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'invocation' ( temp uint) 0:369 Constant: 0:369 2 (const int) 0:369 Constant: 0:369 0 (const int) 0:369 subgroupExclusiveOr ( global uint) 0:369 direct index ( temp uint) 0:369 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:369 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 Constant: 0:369 0 (const int) 0:369 Constant: 0:369 2 (const int) 0:369 Constant: 0:369 0 (const int) 0:370 move second child to first child ( temp 2-component vector of uint) 0:370 vector swizzle ( temp 2-component vector of uint) 0:370 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:370 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:370 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:370 'invocation' ( temp uint) 0:370 Constant: 0:370 2 (const int) 0:370 Sequence 0:370 Constant: 0:370 0 (const int) 0:370 Constant: 0:370 1 (const int) 0:370 subgroupExclusiveOr ( global 2-component vector of uint) 0:370 vector swizzle ( temp 2-component vector of uint) 0:370 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:370 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:370 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:370 Constant: 0:370 1 (const int) 0:370 Constant: 0:370 2 (const int) 0:370 Sequence 0:370 Constant: 0:370 0 (const int) 0:370 Constant: 0:370 1 (const int) 0:371 move second child to first child ( temp 3-component vector of uint) 0:371 vector swizzle ( temp 3-component vector of uint) 0:371 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:371 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'invocation' ( temp uint) 0:371 Constant: 0:371 2 (const int) 0:371 Sequence 0:371 Constant: 0:371 0 (const int) 0:371 Constant: 0:371 1 (const int) 0:371 Constant: 0:371 2 (const int) 0:371 subgroupExclusiveOr ( global 3-component vector of uint) 0:371 vector swizzle ( temp 3-component vector of uint) 0:371 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:371 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 Constant: 0:371 2 (const int) 0:371 Constant: 0:371 2 (const int) 0:371 Sequence 0:371 Constant: 0:371 0 (const int) 0:371 Constant: 0:371 1 (const int) 0:371 Constant: 0:371 2 (const int) 0:372 move second child to first child ( temp 4-component vector of uint) 0:372 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:372 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'invocation' ( temp uint) 0:372 Constant: 0:372 2 (const int) 0:372 subgroupExclusiveOr ( global 4-component vector of uint) 0:372 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:372 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 Constant: 0:372 3 (const int) 0:372 Constant: 0:372 2 (const int) 0:374 move second child to first child ( temp int) 0:374 direct index ( temp int) 0:374 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:374 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'invocation' ( temp uint) 0:374 Constant: 0:374 1 (const int) 0:374 Constant: 0:374 0 (const int) 0:374 Convert bool to int ( temp int) 0:374 subgroupExclusiveOr ( global bool) 0:374 Compare Less Than ( temp bool) 0:374 direct index ( temp int) 0:374 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:374 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 Constant: 0:374 0 (const int) 0:374 Constant: 0:374 1 (const int) 0:374 Constant: 0:374 0 (const int) 0:374 Constant: 0:374 0 (const int) 0:375 move second child to first child ( temp 2-component vector of int) 0:375 vector swizzle ( temp 2-component vector of int) 0:375 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:375 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:375 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:375 'invocation' ( temp uint) 0:375 Constant: 0:375 1 (const int) 0:375 Sequence 0:375 Constant: 0:375 0 (const int) 0:375 Constant: 0:375 1 (const int) 0:375 Convert bool to int ( temp 2-component vector of int) 0:375 subgroupExclusiveOr ( global 2-component vector of bool) 0:375 Compare Less Than ( global 2-component vector of bool) 0:375 vector swizzle ( temp 2-component vector of int) 0:375 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:375 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:375 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:375 Constant: 0:375 1 (const int) 0:375 Constant: 0:375 1 (const int) 0:375 Sequence 0:375 Constant: 0:375 0 (const int) 0:375 Constant: 0:375 1 (const int) 0:375 Constant: 0:375 0 (const int) 0:375 0 (const int) 0:376 move second child to first child ( temp 3-component vector of int) 0:376 vector swizzle ( temp 3-component vector of int) 0:376 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:376 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'invocation' ( temp uint) 0:376 Constant: 0:376 1 (const int) 0:376 Sequence 0:376 Constant: 0:376 0 (const int) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 2 (const int) 0:376 Convert bool to int ( temp 3-component vector of int) 0:376 subgroupExclusiveOr ( global 3-component vector of bool) 0:376 Compare Less Than ( global 3-component vector of bool) 0:376 vector swizzle ( temp 3-component vector of int) 0:376 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:376 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 1 (const int) 0:376 Sequence 0:376 Constant: 0:376 0 (const int) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 2 (const int) 0:376 Constant: 0:376 0 (const int) 0:376 0 (const int) 0:376 0 (const int) 0:377 move second child to first child ( temp 4-component vector of int) 0:377 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:377 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'invocation' ( temp uint) 0:377 Constant: 0:377 1 (const int) 0:377 Convert bool to int ( temp 4-component vector of int) 0:377 subgroupExclusiveOr ( global 4-component vector of bool) 0:377 Compare Less Than ( global 4-component vector of bool) 0:377 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:377 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 Constant: 0:377 1 (const int) 0:377 Constant: 0:377 1 (const int) 0:377 Constant: 0:377 0 (const int) 0:377 0 (const int) 0:377 0 (const int) 0:377 0 (const int) 0:379 move second child to first child ( temp int) 0:379 direct index ( temp int) 0:379 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:379 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'invocation' ( temp uint) 0:379 Constant: 0:379 1 (const int) 0:379 Constant: 0:379 0 (const int) 0:379 subgroupExclusiveXor ( global int) 0:379 direct index ( temp int) 0:379 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:379 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 Constant: 0:379 0 (const int) 0:379 Constant: 0:379 1 (const int) 0:379 Constant: 0:379 0 (const int) 0:380 move second child to first child ( temp 2-component vector of int) 0:380 vector swizzle ( temp 2-component vector of int) 0:380 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:380 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:380 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:380 'invocation' ( temp uint) 0:380 Constant: 0:380 1 (const int) 0:380 Sequence 0:380 Constant: 0:380 0 (const int) 0:380 Constant: 0:380 1 (const int) 0:380 subgroupExclusiveXor ( global 2-component vector of int) 0:380 vector swizzle ( temp 2-component vector of int) 0:380 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:380 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:380 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:380 Constant: 0:380 1 (const int) 0:380 Constant: 0:380 1 (const int) 0:380 Sequence 0:380 Constant: 0:380 0 (const int) 0:380 Constant: 0:380 1 (const int) 0:381 move second child to first child ( temp 3-component vector of int) 0:381 vector swizzle ( temp 3-component vector of int) 0:381 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:381 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'invocation' ( temp uint) 0:381 Constant: 0:381 1 (const int) 0:381 Sequence 0:381 Constant: 0:381 0 (const int) 0:381 Constant: 0:381 1 (const int) 0:381 Constant: 0:381 2 (const int) 0:381 subgroupExclusiveXor ( global 3-component vector of int) 0:381 vector swizzle ( temp 3-component vector of int) 0:381 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:381 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 Constant: 0:381 2 (const int) 0:381 Constant: 0:381 1 (const int) 0:381 Sequence 0:381 Constant: 0:381 0 (const int) 0:381 Constant: 0:381 1 (const int) 0:381 Constant: 0:381 2 (const int) 0:382 move second child to first child ( temp 4-component vector of int) 0:382 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:382 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'invocation' ( temp uint) 0:382 Constant: 0:382 1 (const int) 0:382 subgroupExclusiveXor ( global 4-component vector of int) 0:382 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:382 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 Constant: 0:382 3 (const int) 0:382 Constant: 0:382 1 (const int) 0:384 move second child to first child ( temp uint) 0:384 direct index ( temp uint) 0:384 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:384 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'invocation' ( temp uint) 0:384 Constant: 0:384 2 (const int) 0:384 Constant: 0:384 0 (const int) 0:384 subgroupExclusiveXor ( global uint) 0:384 direct index ( temp uint) 0:384 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:384 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 Constant: 0:384 0 (const int) 0:384 Constant: 0:384 2 (const int) 0:384 Constant: 0:384 0 (const int) 0:385 move second child to first child ( temp 2-component vector of uint) 0:385 vector swizzle ( temp 2-component vector of uint) 0:385 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:385 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:385 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:385 'invocation' ( temp uint) 0:385 Constant: 0:385 2 (const int) 0:385 Sequence 0:385 Constant: 0:385 0 (const int) 0:385 Constant: 0:385 1 (const int) 0:385 subgroupExclusiveXor ( global 2-component vector of uint) 0:385 vector swizzle ( temp 2-component vector of uint) 0:385 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:385 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:385 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:385 Constant: 0:385 1 (const int) 0:385 Constant: 0:385 2 (const int) 0:385 Sequence 0:385 Constant: 0:385 0 (const int) 0:385 Constant: 0:385 1 (const int) 0:386 move second child to first child ( temp 3-component vector of uint) 0:386 vector swizzle ( temp 3-component vector of uint) 0:386 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:386 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'invocation' ( temp uint) 0:386 Constant: 0:386 2 (const int) 0:386 Sequence 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 2 (const int) 0:386 subgroupExclusiveXor ( global 3-component vector of uint) 0:386 vector swizzle ( temp 3-component vector of uint) 0:386 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:386 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 Constant: 0:386 2 (const int) 0:386 Constant: 0:386 2 (const int) 0:386 Sequence 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 2 (const int) 0:387 move second child to first child ( temp 4-component vector of uint) 0:387 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:387 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'invocation' ( temp uint) 0:387 Constant: 0:387 2 (const int) 0:387 subgroupExclusiveXor ( global 4-component vector of uint) 0:387 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:387 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 Constant: 0:387 3 (const int) 0:387 Constant: 0:387 2 (const int) 0:389 move second child to first child ( temp int) 0:389 direct index ( temp int) 0:389 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:389 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'invocation' ( temp uint) 0:389 Constant: 0:389 1 (const int) 0:389 Constant: 0:389 0 (const int) 0:389 Convert bool to int ( temp int) 0:389 subgroupExclusiveXor ( global bool) 0:389 Compare Less Than ( temp bool) 0:389 direct index ( temp int) 0:389 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:389 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 Constant: 0:389 0 (const int) 0:389 Constant: 0:389 1 (const int) 0:389 Constant: 0:389 0 (const int) 0:389 Constant: 0:389 0 (const int) 0:390 move second child to first child ( temp 2-component vector of int) 0:390 vector swizzle ( temp 2-component vector of int) 0:390 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:390 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:390 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:390 'invocation' ( temp uint) 0:390 Constant: 0:390 1 (const int) 0:390 Sequence 0:390 Constant: 0:390 0 (const int) 0:390 Constant: 0:390 1 (const int) 0:390 Convert bool to int ( temp 2-component vector of int) 0:390 subgroupExclusiveXor ( global 2-component vector of bool) 0:390 Compare Less Than ( global 2-component vector of bool) 0:390 vector swizzle ( temp 2-component vector of int) 0:390 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:390 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:390 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:390 Constant: 0:390 1 (const int) 0:390 Constant: 0:390 1 (const int) 0:390 Sequence 0:390 Constant: 0:390 0 (const int) 0:390 Constant: 0:390 1 (const int) 0:390 Constant: 0:390 0 (const int) 0:390 0 (const int) 0:391 move second child to first child ( temp 3-component vector of int) 0:391 vector swizzle ( temp 3-component vector of int) 0:391 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:391 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'invocation' ( temp uint) 0:391 Constant: 0:391 1 (const int) 0:391 Sequence 0:391 Constant: 0:391 0 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 2 (const int) 0:391 Convert bool to int ( temp 3-component vector of int) 0:391 subgroupExclusiveXor ( global 3-component vector of bool) 0:391 Compare Less Than ( global 3-component vector of bool) 0:391 vector swizzle ( temp 3-component vector of int) 0:391 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:391 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Sequence 0:391 Constant: 0:391 0 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 2 (const int) 0:391 Constant: 0:391 0 (const int) 0:391 0 (const int) 0:391 0 (const int) 0:392 move second child to first child ( temp 4-component vector of int) 0:392 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:392 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'invocation' ( temp uint) 0:392 Constant: 0:392 1 (const int) 0:392 Convert bool to int ( temp 4-component vector of int) 0:392 subgroupExclusiveXor ( global 4-component vector of bool) 0:392 Compare Less Than ( global 4-component vector of bool) 0:392 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:392 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 Constant: 0:392 1 (const int) 0:392 Constant: 0:392 1 (const int) 0:392 Constant: 0:392 0 (const int) 0:392 0 (const int) 0:392 0 (const int) 0:392 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupBallot.comp.out000066400000000000000000006517301506534232700244240ustar00rootroot00000000000000glsl.450.subgroupBallot.comp Shader version: 450 Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of uint) 0:19 'relMask' ( temp 4-component vector of uint) 0:22 add ( temp 4-component vector of uint) 0:21 add ( temp 4-component vector of uint) 0:20 add ( temp 4-component vector of uint) 0:19 add ( temp 4-component vector of uint) 0:19 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:20 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:21 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:22 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:23 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'result' ( temp 4-component vector of uint) 0:25 subgroupBallot ( global 4-component vector of uint) 0:25 Constant: 0:25 true (const bool) 0:27 move second child to first child ( temp uint) 0:27 direct index ( temp uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 subgroupBallotBitCount ( global uint) 0:27 'result' ( temp 4-component vector of uint) 0:28 move second child to first child ( temp uint) 0:28 direct index ( temp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'invocation' ( temp uint) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Convert int to uint ( temp uint) 0:28 Test condition and select ( temp int) 0:28 Condition 0:28 subgroupBallotBitExtract ( global bool) 0:28 'result' ( temp 4-component vector of uint) 0:28 Constant: 0:28 0 (const uint) 0:28 true case 0:28 Constant: 0:28 1 (const int) 0:28 false case 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 add ( temp uint) 0:29 subgroupBallotInclusiveBitCount ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:29 subgroupBallotExclusiveBitCount ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:30 move second child to first child ( temp uint) 0:30 direct index ( temp uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 add ( temp uint) 0:30 subgroupBallotFindLSB ( global uint) 0:30 'result' ( temp 4-component vector of uint) 0:30 subgroupBallotFindMSB ( global uint) 0:30 'result' ( temp 4-component vector of uint) 0:32 Test condition and select ( temp void) 0:32 Condition 0:32 logical-and ( temp bool) 0:32 Compare Equal ( temp bool) 0:32 'relMask' ( temp 4-component vector of uint) 0:32 'result' ( temp 4-component vector of uint) 0:32 subgroupInverseBallot ( global bool) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 true case 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 direct index ( temp float) 0:34 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupBroadcast ( global float) 0:34 direct index ( temp float) 0:34 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const uint) 0:35 move second child to first child ( temp 2-component vector of float) 0:35 vector swizzle ( temp 2-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupBroadcast ( global 2-component vector of float) 0:35 vector swizzle ( temp 2-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const uint) 0:36 move second child to first child ( temp 3-component vector of float) 0:36 vector swizzle ( temp 3-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupBroadcast ( global 3-component vector of float) 0:36 vector swizzle ( temp 3-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const uint) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 0 (const int) 0:37 subgroupBroadcast ( global 4-component vector of float) 0:37 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 3 (const uint) 0:39 move second child to first child ( temp int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 subgroupBroadcast ( global int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 2 (const uint) 0:40 move second child to first child ( temp 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 subgroupBroadcast ( global 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const uint) 0:41 move second child to first child ( temp 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupBroadcast ( global 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 2 (const uint) 0:42 move second child to first child ( temp 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 1 (const int) 0:42 subgroupBroadcast ( global 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const uint) 0:44 move second child to first child ( temp uint) 0:44 direct index ( temp uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupBroadcast ( global uint) 0:44 direct index ( temp uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp 2-component vector of uint) 0:45 vector swizzle ( temp 2-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupBroadcast ( global 2-component vector of uint) 0:45 vector swizzle ( temp 2-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp 3-component vector of uint) 0:46 vector swizzle ( temp 3-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupBroadcast ( global 3-component vector of uint) 0:46 vector swizzle ( temp 3-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupBroadcast ( global 4-component vector of uint) 0:47 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 1 (const uint) 0:49 move second child to first child ( temp double) 0:49 direct index ( temp double) 0:49 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupBroadcast ( global double) 0:49 direct index ( temp double) 0:49 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const uint) 0:50 move second child to first child ( temp 2-component vector of double) 0:50 vector swizzle ( temp 2-component vector of double) 0:50 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 3 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupBroadcast ( global 2-component vector of double) 0:50 vector swizzle ( temp 2-component vector of double) 0:50 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 0 (const uint) 0:51 move second child to first child ( temp 3-component vector of double) 0:51 vector swizzle ( temp 3-component vector of double) 0:51 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupBroadcast ( global 3-component vector of double) 0:51 vector swizzle ( temp 3-component vector of double) 0:51 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 0 (const uint) 0:52 move second child to first child ( temp 4-component vector of double) 0:52 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 3 (const int) 0:52 subgroupBroadcast ( global 4-component vector of double) 0:52 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 0 (const uint) 0:54 move second child to first child ( temp int) 0:54 direct index ( temp int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Convert bool to int ( temp int) 0:54 subgroupBroadcast ( global bool) 0:54 Compare Less Than ( temp bool) 0:54 direct index ( temp int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp 2-component vector of int) 0:55 vector swizzle ( temp 2-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Convert bool to int ( temp 2-component vector of int) 0:55 subgroupBroadcast ( global 2-component vector of bool) 0:55 Compare Less Than ( global 2-component vector of bool) 0:55 vector swizzle ( temp 2-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 0 (const int) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp 3-component vector of int) 0:56 vector swizzle ( temp 3-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 1 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Convert bool to int ( temp 3-component vector of int) 0:56 subgroupBroadcast ( global 3-component vector of bool) 0:56 Compare Less Than ( global 3-component vector of bool) 0:56 vector swizzle ( temp 3-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 Constant: 0:56 1 (const uint) 0:57 move second child to first child ( temp 4-component vector of int) 0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 1 (const int) 0:57 Convert bool to int ( temp 4-component vector of int) 0:57 subgroupBroadcast ( global 4-component vector of bool) 0:57 Compare Less Than ( global 4-component vector of bool) 0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 0 (const int) 0:57 0 (const int) 0:57 0 (const int) 0:57 Constant: 0:57 1 (const uint) 0:32 false case 0:61 Sequence 0:61 move second child to first child ( temp float) 0:61 direct index ( temp float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 subgroupBroadcastFirst ( global float) 0:61 direct index ( temp float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 0 (const int) 0:62 move second child to first child ( temp 2-component vector of float) 0:62 vector swizzle ( temp 2-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 0 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 subgroupBroadcastFirst ( global 2-component vector of float) 0:62 vector swizzle ( temp 2-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 0 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:63 move second child to first child ( temp 3-component vector of float) 0:63 vector swizzle ( temp 3-component vector of float) 0:63 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:63 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'invocation' ( temp uint) 0:63 Constant: 0:63 0 (const int) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 subgroupBroadcastFirst ( global 3-component vector of float) 0:63 vector swizzle ( temp 3-component vector of float) 0:63 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:64 move second child to first child ( temp 4-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 0 (const int) 0:64 subgroupBroadcastFirst ( global 4-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 3 (const int) 0:64 Constant: 0:64 0 (const int) 0:66 move second child to first child ( temp int) 0:66 direct index ( temp int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 subgroupBroadcastFirst ( global int) 0:66 direct index ( temp int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 0 (const int) 0:67 move second child to first child ( temp 2-component vector of int) 0:67 vector swizzle ( temp 2-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 subgroupBroadcastFirst ( global 2-component vector of int) 0:67 vector swizzle ( temp 2-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:68 move second child to first child ( temp 3-component vector of int) 0:68 vector swizzle ( temp 3-component vector of int) 0:68 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:68 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'invocation' ( temp uint) 0:68 Constant: 0:68 1 (const int) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 subgroupBroadcastFirst ( global 3-component vector of int) 0:68 vector swizzle ( temp 3-component vector of int) 0:68 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:69 move second child to first child ( temp 4-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 1 (const int) 0:69 subgroupBroadcastFirst ( global 4-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 3 (const int) 0:69 Constant: 0:69 1 (const int) 0:71 move second child to first child ( temp uint) 0:71 direct index ( temp uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 subgroupBroadcastFirst ( global uint) 0:71 direct index ( temp uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:72 move second child to first child ( temp 2-component vector of uint) 0:72 vector swizzle ( temp 2-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 2 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 subgroupBroadcastFirst ( global 2-component vector of uint) 0:72 vector swizzle ( temp 2-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:73 move second child to first child ( temp 3-component vector of uint) 0:73 vector swizzle ( temp 3-component vector of uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:73 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'invocation' ( temp uint) 0:73 Constant: 0:73 2 (const int) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 subgroupBroadcastFirst ( global 3-component vector of uint) 0:73 vector swizzle ( temp 3-component vector of uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:74 move second child to first child ( temp 4-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 2 (const int) 0:74 subgroupBroadcastFirst ( global 4-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 2 (const int) 0:76 move second child to first child ( temp double) 0:76 direct index ( temp double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 subgroupBroadcastFirst ( global double) 0:76 direct index ( temp double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 0 (const int) 0:77 move second child to first child ( temp 2-component vector of double) 0:77 vector swizzle ( temp 2-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 3 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 subgroupBroadcastFirst ( global 2-component vector of double) 0:77 vector swizzle ( temp 2-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 3 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:78 move second child to first child ( temp 3-component vector of double) 0:78 vector swizzle ( temp 3-component vector of double) 0:78 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:78 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'invocation' ( temp uint) 0:78 Constant: 0:78 3 (const int) 0:78 Sequence 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 2 (const int) 0:78 subgroupBroadcastFirst ( global 3-component vector of double) 0:78 vector swizzle ( temp 3-component vector of double) 0:78 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 Constant: 0:78 2 (const int) 0:78 Constant: 0:78 3 (const int) 0:78 Sequence 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 2 (const int) 0:79 move second child to first child ( temp 4-component vector of double) 0:79 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 3 (const int) 0:79 subgroupBroadcastFirst ( global 4-component vector of double) 0:79 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 3 (const int) 0:79 Constant: 0:79 3 (const int) 0:81 move second child to first child ( temp int) 0:81 direct index ( temp int) 0:81 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 Convert bool to int ( temp int) 0:81 subgroupBroadcastFirst ( global bool) 0:81 Compare Less Than ( temp bool) 0:81 direct index ( temp int) 0:81 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 0 (const int) 0:82 move second child to first child ( temp 2-component vector of int) 0:82 vector swizzle ( temp 2-component vector of int) 0:82 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Convert bool to int ( temp 2-component vector of int) 0:82 subgroupBroadcastFirst ( global 2-component vector of bool) 0:82 Compare Less Than ( global 2-component vector of bool) 0:82 vector swizzle ( temp 2-component vector of int) 0:82 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 0 (const int) 0:83 move second child to first child ( temp 3-component vector of int) 0:83 vector swizzle ( temp 3-component vector of int) 0:83 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:83 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'invocation' ( temp uint) 0:83 Constant: 0:83 1 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Convert bool to int ( temp 3-component vector of int) 0:83 subgroupBroadcastFirst ( global 3-component vector of bool) 0:83 Compare Less Than ( global 3-component vector of bool) 0:83 vector swizzle ( temp 3-component vector of int) 0:83 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 0 (const int) 0:83 0 (const int) 0:84 move second child to first child ( temp 4-component vector of int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 1 (const int) 0:84 Convert bool to int ( temp 4-component vector of int) 0:84 subgroupBroadcastFirst ( global 4-component vector of bool) 0:84 Compare Less Than ( global 4-component vector of bool) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 0 (const int) 0:84 0 (const int) 0:84 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of uint) 0:19 'relMask' ( temp 4-component vector of uint) 0:22 add ( temp 4-component vector of uint) 0:21 add ( temp 4-component vector of uint) 0:20 add ( temp 4-component vector of uint) 0:19 add ( temp 4-component vector of uint) 0:19 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:20 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:21 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:22 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:23 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'result' ( temp 4-component vector of uint) 0:25 subgroupBallot ( global 4-component vector of uint) 0:25 Constant: 0:25 true (const bool) 0:27 move second child to first child ( temp uint) 0:27 direct index ( temp uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 subgroupBallotBitCount ( global uint) 0:27 'result' ( temp 4-component vector of uint) 0:28 move second child to first child ( temp uint) 0:28 direct index ( temp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'invocation' ( temp uint) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Convert int to uint ( temp uint) 0:28 Test condition and select ( temp int) 0:28 Condition 0:28 subgroupBallotBitExtract ( global bool) 0:28 'result' ( temp 4-component vector of uint) 0:28 Constant: 0:28 0 (const uint) 0:28 true case 0:28 Constant: 0:28 1 (const int) 0:28 false case 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 add ( temp uint) 0:29 subgroupBallotInclusiveBitCount ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:29 subgroupBallotExclusiveBitCount ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:30 move second child to first child ( temp uint) 0:30 direct index ( temp uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 add ( temp uint) 0:30 subgroupBallotFindLSB ( global uint) 0:30 'result' ( temp 4-component vector of uint) 0:30 subgroupBallotFindMSB ( global uint) 0:30 'result' ( temp 4-component vector of uint) 0:32 Test condition and select ( temp void) 0:32 Condition 0:32 logical-and ( temp bool) 0:32 Compare Equal ( temp bool) 0:32 'relMask' ( temp 4-component vector of uint) 0:32 'result' ( temp 4-component vector of uint) 0:32 subgroupInverseBallot ( global bool) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 true case 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 direct index ( temp float) 0:34 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupBroadcast ( global float) 0:34 direct index ( temp float) 0:34 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const uint) 0:35 move second child to first child ( temp 2-component vector of float) 0:35 vector swizzle ( temp 2-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupBroadcast ( global 2-component vector of float) 0:35 vector swizzle ( temp 2-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const uint) 0:36 move second child to first child ( temp 3-component vector of float) 0:36 vector swizzle ( temp 3-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupBroadcast ( global 3-component vector of float) 0:36 vector swizzle ( temp 3-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const uint) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 0 (const int) 0:37 subgroupBroadcast ( global 4-component vector of float) 0:37 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 3 (const uint) 0:39 move second child to first child ( temp int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 subgroupBroadcast ( global int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 2 (const uint) 0:40 move second child to first child ( temp 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 subgroupBroadcast ( global 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const uint) 0:41 move second child to first child ( temp 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupBroadcast ( global 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 2 (const uint) 0:42 move second child to first child ( temp 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 1 (const int) 0:42 subgroupBroadcast ( global 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const uint) 0:44 move second child to first child ( temp uint) 0:44 direct index ( temp uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupBroadcast ( global uint) 0:44 direct index ( temp uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp 2-component vector of uint) 0:45 vector swizzle ( temp 2-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupBroadcast ( global 2-component vector of uint) 0:45 vector swizzle ( temp 2-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp 3-component vector of uint) 0:46 vector swizzle ( temp 3-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupBroadcast ( global 3-component vector of uint) 0:46 vector swizzle ( temp 3-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupBroadcast ( global 4-component vector of uint) 0:47 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 1 (const uint) 0:49 move second child to first child ( temp double) 0:49 direct index ( temp double) 0:49 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupBroadcast ( global double) 0:49 direct index ( temp double) 0:49 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const uint) 0:50 move second child to first child ( temp 2-component vector of double) 0:50 vector swizzle ( temp 2-component vector of double) 0:50 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 3 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupBroadcast ( global 2-component vector of double) 0:50 vector swizzle ( temp 2-component vector of double) 0:50 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 0 (const uint) 0:51 move second child to first child ( temp 3-component vector of double) 0:51 vector swizzle ( temp 3-component vector of double) 0:51 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupBroadcast ( global 3-component vector of double) 0:51 vector swizzle ( temp 3-component vector of double) 0:51 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 0 (const uint) 0:52 move second child to first child ( temp 4-component vector of double) 0:52 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 3 (const int) 0:52 subgroupBroadcast ( global 4-component vector of double) 0:52 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 0 (const uint) 0:54 move second child to first child ( temp int) 0:54 direct index ( temp int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Convert bool to int ( temp int) 0:54 subgroupBroadcast ( global bool) 0:54 Compare Less Than ( temp bool) 0:54 direct index ( temp int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp 2-component vector of int) 0:55 vector swizzle ( temp 2-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Convert bool to int ( temp 2-component vector of int) 0:55 subgroupBroadcast ( global 2-component vector of bool) 0:55 Compare Less Than ( global 2-component vector of bool) 0:55 vector swizzle ( temp 2-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 0 (const int) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp 3-component vector of int) 0:56 vector swizzle ( temp 3-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 1 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Convert bool to int ( temp 3-component vector of int) 0:56 subgroupBroadcast ( global 3-component vector of bool) 0:56 Compare Less Than ( global 3-component vector of bool) 0:56 vector swizzle ( temp 3-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 Constant: 0:56 1 (const uint) 0:57 move second child to first child ( temp 4-component vector of int) 0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 1 (const int) 0:57 Convert bool to int ( temp 4-component vector of int) 0:57 subgroupBroadcast ( global 4-component vector of bool) 0:57 Compare Less Than ( global 4-component vector of bool) 0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 0 (const int) 0:57 0 (const int) 0:57 0 (const int) 0:57 Constant: 0:57 1 (const uint) 0:32 false case 0:61 Sequence 0:61 move second child to first child ( temp float) 0:61 direct index ( temp float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 subgroupBroadcastFirst ( global float) 0:61 direct index ( temp float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 0 (const int) 0:62 move second child to first child ( temp 2-component vector of float) 0:62 vector swizzle ( temp 2-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 0 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 subgroupBroadcastFirst ( global 2-component vector of float) 0:62 vector swizzle ( temp 2-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 0 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:63 move second child to first child ( temp 3-component vector of float) 0:63 vector swizzle ( temp 3-component vector of float) 0:63 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:63 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'invocation' ( temp uint) 0:63 Constant: 0:63 0 (const int) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 subgroupBroadcastFirst ( global 3-component vector of float) 0:63 vector swizzle ( temp 3-component vector of float) 0:63 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:64 move second child to first child ( temp 4-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 0 (const int) 0:64 subgroupBroadcastFirst ( global 4-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 3 (const int) 0:64 Constant: 0:64 0 (const int) 0:66 move second child to first child ( temp int) 0:66 direct index ( temp int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 subgroupBroadcastFirst ( global int) 0:66 direct index ( temp int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 0 (const int) 0:67 move second child to first child ( temp 2-component vector of int) 0:67 vector swizzle ( temp 2-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 subgroupBroadcastFirst ( global 2-component vector of int) 0:67 vector swizzle ( temp 2-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:68 move second child to first child ( temp 3-component vector of int) 0:68 vector swizzle ( temp 3-component vector of int) 0:68 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:68 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'invocation' ( temp uint) 0:68 Constant: 0:68 1 (const int) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 subgroupBroadcastFirst ( global 3-component vector of int) 0:68 vector swizzle ( temp 3-component vector of int) 0:68 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:69 move second child to first child ( temp 4-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 1 (const int) 0:69 subgroupBroadcastFirst ( global 4-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 3 (const int) 0:69 Constant: 0:69 1 (const int) 0:71 move second child to first child ( temp uint) 0:71 direct index ( temp uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 subgroupBroadcastFirst ( global uint) 0:71 direct index ( temp uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:72 move second child to first child ( temp 2-component vector of uint) 0:72 vector swizzle ( temp 2-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 2 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 subgroupBroadcastFirst ( global 2-component vector of uint) 0:72 vector swizzle ( temp 2-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:73 move second child to first child ( temp 3-component vector of uint) 0:73 vector swizzle ( temp 3-component vector of uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:73 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'invocation' ( temp uint) 0:73 Constant: 0:73 2 (const int) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 subgroupBroadcastFirst ( global 3-component vector of uint) 0:73 vector swizzle ( temp 3-component vector of uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:74 move second child to first child ( temp 4-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 2 (const int) 0:74 subgroupBroadcastFirst ( global 4-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 2 (const int) 0:76 move second child to first child ( temp double) 0:76 direct index ( temp double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 subgroupBroadcastFirst ( global double) 0:76 direct index ( temp double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 0 (const int) 0:77 move second child to first child ( temp 2-component vector of double) 0:77 vector swizzle ( temp 2-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 3 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 subgroupBroadcastFirst ( global 2-component vector of double) 0:77 vector swizzle ( temp 2-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 3 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:78 move second child to first child ( temp 3-component vector of double) 0:78 vector swizzle ( temp 3-component vector of double) 0:78 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:78 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'invocation' ( temp uint) 0:78 Constant: 0:78 3 (const int) 0:78 Sequence 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 2 (const int) 0:78 subgroupBroadcastFirst ( global 3-component vector of double) 0:78 vector swizzle ( temp 3-component vector of double) 0:78 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 Constant: 0:78 2 (const int) 0:78 Constant: 0:78 3 (const int) 0:78 Sequence 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 2 (const int) 0:79 move second child to first child ( temp 4-component vector of double) 0:79 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 3 (const int) 0:79 subgroupBroadcastFirst ( global 4-component vector of double) 0:79 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 3 (const int) 0:79 Constant: 0:79 3 (const int) 0:81 move second child to first child ( temp int) 0:81 direct index ( temp int) 0:81 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 Convert bool to int ( temp int) 0:81 subgroupBroadcastFirst ( global bool) 0:81 Compare Less Than ( temp bool) 0:81 direct index ( temp int) 0:81 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 0 (const int) 0:82 move second child to first child ( temp 2-component vector of int) 0:82 vector swizzle ( temp 2-component vector of int) 0:82 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Convert bool to int ( temp 2-component vector of int) 0:82 subgroupBroadcastFirst ( global 2-component vector of bool) 0:82 Compare Less Than ( global 2-component vector of bool) 0:82 vector swizzle ( temp 2-component vector of int) 0:82 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 0 (const int) 0:83 move second child to first child ( temp 3-component vector of int) 0:83 vector swizzle ( temp 3-component vector of int) 0:83 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:83 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'invocation' ( temp uint) 0:83 Constant: 0:83 1 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Convert bool to int ( temp 3-component vector of int) 0:83 subgroupBroadcastFirst ( global 3-component vector of bool) 0:83 Compare Less Than ( global 3-component vector of bool) 0:83 vector swizzle ( temp 3-component vector of int) 0:83 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 0 (const int) 0:83 0 (const int) 0:84 move second child to first child ( temp 4-component vector of int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 1 (const int) 0:84 Convert bool to int ( temp 4-component vector of int) 0:84 subgroupBroadcastFirst ( global 4-component vector of bool) 0:84 Compare Less Than ( global 4-component vector of bool) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 0 (const int) 0:84 0 (const int) 0:84 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupBallotNeg.comp.out000066400000000000000000000470501506534232700250500ustar00rootroot00000000000000glsl.450.subgroupBallotNeg.comp ERROR: 0:32: 'id' : argument must be compile-time constant ERROR: 1 compilation errors. No code generated. Shader version: 450 Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) 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 uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of uint) 0:19 'relMask' ( temp 4-component vector of uint) 0:22 add ( temp 4-component vector of uint) 0:21 add ( temp 4-component vector of uint) 0:20 add ( temp 4-component vector of uint) 0:19 add ( temp 4-component vector of uint) 0:19 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:20 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:21 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:22 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:23 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'result' ( temp 4-component vector of uint) 0:25 subgroupBallot ( global 4-component vector of uint) 0:25 Constant: 0:25 true (const bool) 0:27 move second child to first child ( temp uint) 0:27 direct index ( temp uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 subgroupBallotBitCount ( global uint) 0:27 'result' ( temp 4-component vector of uint) 0:28 move second child to first child ( temp uint) 0:28 direct index ( temp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'invocation' ( temp uint) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Convert int to uint ( temp uint) 0:28 Test condition and select ( temp int) 0:28 Condition 0:28 subgroupBallotBitExtract ( global bool) 0:28 'result' ( temp 4-component vector of uint) 0:28 Constant: 0:28 0 (const uint) 0:28 true case 0:28 Constant: 0:28 1 (const int) 0:28 false case 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 add ( temp uint) 0:29 subgroupBallotInclusiveBitCount ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:29 subgroupBallotExclusiveBitCount ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:30 move second child to first child ( temp uint) 0:30 direct index ( temp uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 add ( temp uint) 0:30 subgroupBallotFindLSB ( global uint) 0:30 'result' ( temp 4-component vector of uint) 0:30 subgroupBallotFindMSB ( global uint) 0:30 'result' ( temp 4-component vector of uint) 0:32 move second child to first child ( temp float) 0:32 direct index ( temp float) 0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 subgroupBroadcast ( global float) 0:32 direct index ( temp float) 0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 'invocation' ( temp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) 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 uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of uint) 0:19 'relMask' ( temp 4-component vector of uint) 0:22 add ( temp 4-component vector of uint) 0:21 add ( temp 4-component vector of uint) 0:20 add ( temp 4-component vector of uint) 0:19 add ( temp 4-component vector of uint) 0:19 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:20 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:21 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:22 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:23 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'result' ( temp 4-component vector of uint) 0:25 subgroupBallot ( global 4-component vector of uint) 0:25 Constant: 0:25 true (const bool) 0:27 move second child to first child ( temp uint) 0:27 direct index ( temp uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 subgroupBallotBitCount ( global uint) 0:27 'result' ( temp 4-component vector of uint) 0:28 move second child to first child ( temp uint) 0:28 direct index ( temp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'invocation' ( temp uint) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Convert int to uint ( temp uint) 0:28 Test condition and select ( temp int) 0:28 Condition 0:28 subgroupBallotBitExtract ( global bool) 0:28 'result' ( temp 4-component vector of uint) 0:28 Constant: 0:28 0 (const uint) 0:28 true case 0:28 Constant: 0:28 1 (const int) 0:28 false case 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 add ( temp uint) 0:29 subgroupBallotInclusiveBitCount ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:29 subgroupBallotExclusiveBitCount ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:30 move second child to first child ( temp uint) 0:30 direct index ( temp uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 add ( temp uint) 0:30 subgroupBallotFindLSB ( global uint) 0:30 'result' ( temp 4-component vector of uint) 0:30 subgroupBallotFindMSB ( global uint) 0:30 'result' ( temp 4-component vector of uint) 0:32 move second child to first child ( temp float) 0:32 direct index ( temp float) 0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 subgroupBroadcast ( global float) 0:32 direct index ( temp float) 0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 'invocation' ( temp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupBasic.comp.out000066400000000000000000001232161506534232700242210ustar00rootroot00000000000000glsl.450.subgroupBasic.comp 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: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:242: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:243: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:244: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:245: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned local_size = (8, 8, 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 Sequence 0:77 move second child to first child ( temp 4-component vector of uint) 0:77 'parti' ( temp 4-component vector of uint) 0:77 subgroupPartitionNV ( global 4-component vector of uint) 0:77 'f4' ( in 4-component vector of float) 0:78 subgroupPartitionedAddNV ( global 4-component vector of float) 0:78 'f4' ( in 4-component vector of float) 0:78 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionedMulNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMinNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:82 'ballot' ( temp 4-component vector of uint) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:85 'f4' ( in 4-component vector of float) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:89 'ballot' ( temp 4-component vector of uint) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:92 'f4' ( in 4-component vector of float) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:96 'ballot' ( temp 4-component vector of uint) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:100 Branch: Return with expression 0:100 'result' ( temp 4-component vector of float) 0:112 Function Definition: main( ( global void) 0:112 Function Parameters: 0:114 Sequence 0:114 move second child to first child ( temp int) 0:114 indirect index (layout( column_major shared) temp int) 0:114 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:114 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) 0:114 Constant: 0:114 0 (const int) 0:114 'gl_SubgroupSize' ( in uint SubgroupSize) 0:114 Constant: 0:114 1 (const int) 0:115 move second child to first child ( temp int) 0:115 indirect index (layout( column_major shared) temp int) 0:115 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:115 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) 0:115 Constant: 0:115 0 (const int) 0:115 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:115 Constant: 0:115 1 (const int) 0:116 move second child to first child ( temp int) 0:116 indirect index (layout( column_major shared) temp int) 0:116 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:116 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) 0:116 Constant: 0:116 0 (const int) 0:116 'gl_NumSubgroups' ( in uint NumSubgroups) 0:116 Constant: 0:116 1 (const int) 0:117 move second child to first child ( temp int) 0:117 indirect index (layout( column_major shared) temp int) 0:117 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:117 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) 0:117 Constant: 0:117 0 (const int) 0:117 'gl_SubgroupID' ( in uint SubgroupID) 0:117 Test condition and select ( temp int) 0:117 Condition 0:117 subgroupElect ( global bool) 0:117 true case 0:117 Constant: 0:117 1 (const int) 0:117 false case 0:117 Constant: 0:117 0 (const int) 0:118 subgroupBarrier ( global void) 0:119 subgroupMemoryBarrier ( global void) 0:120 subgroupMemoryBarrierBuffer ( global void) 0:121 subgroupMemoryBarrierShared ( global void) 0:122 subgroupMemoryBarrierImage ( global void) 0:126 Function Definition: ballot_works(vf4; ( global void) 0:126 Function Parameters: 0:126 'f4' ( in 4-component vector of float) 0:127 Sequence 0:127 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:128 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:129 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:130 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:131 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:132 subgroupBroadcast ( global 4-component vector of float) 0:132 'f4' ( in 4-component vector of float) 0:132 Constant: 0:132 0 (const uint) 0:133 subgroupBroadcastFirst ( global 4-component vector of float) 0:133 'f4' ( in 4-component vector of float) 0:134 Sequence 0:134 move second child to first child ( temp 4-component vector of uint) 0:134 'ballot' ( temp 4-component vector of uint) 0:134 subgroupBallot ( global 4-component vector of uint) 0:134 Constant: 0:134 false (const bool) 0:135 subgroupInverseBallot ( global bool) 0:135 Constant: 0:135 1 (const uint) 0:135 1 (const uint) 0:135 1 (const uint) 0:135 1 (const uint) 0:136 subgroupBallotBitExtract ( global bool) 0:136 'ballot' ( temp 4-component vector of uint) 0:136 Constant: 0:136 0 (const uint) 0:137 subgroupBallotBitCount ( global uint) 0:137 'ballot' ( temp 4-component vector of uint) 0:138 subgroupBallotInclusiveBitCount ( global uint) 0:138 'ballot' ( temp 4-component vector of uint) 0:139 subgroupBallotExclusiveBitCount ( global uint) 0:139 'ballot' ( temp 4-component vector of uint) 0:140 subgroupBallotFindLSB ( global uint) 0:140 'ballot' ( temp 4-component vector of uint) 0:141 subgroupBallotFindMSB ( global uint) 0:141 'ballot' ( temp 4-component vector of uint) 0:145 Function Definition: vote_works(vf4; ( global void) 0:145 Function Parameters: 0:145 'f4' ( in 4-component vector of float) 0:147 Sequence 0:147 subgroupAll ( global bool) 0:147 Constant: 0:147 true (const bool) 0:148 subgroupAny ( global bool) 0:148 Constant: 0:148 false (const bool) 0:149 subgroupAllEqual ( global bool) 0:149 'f4' ( in 4-component vector of float) 0:154 Function Definition: shuffle_works(vf4; ( global void) 0:154 Function Parameters: 0:154 'f4' ( in 4-component vector of float) 0:156 Sequence 0:156 subgroupShuffle ( global 4-component vector of float) 0:156 'f4' ( in 4-component vector of float) 0:156 Constant: 0:156 0 (const uint) 0:157 subgroupShuffleXor ( global 4-component vector of float) 0:157 'f4' ( in 4-component vector of float) 0:157 Constant: 0:157 1 (const uint) 0:158 subgroupShuffleUp ( global 4-component vector of float) 0:158 'f4' ( in 4-component vector of float) 0:158 Constant: 0:158 1 (const uint) 0:159 subgroupShuffleDown ( global 4-component vector of float) 0:159 'f4' ( in 4-component vector of float) 0:159 Constant: 0:159 1 (const uint) 0:163 Function Definition: arith_works(vf4; ( global void) 0:163 Function Parameters: 0:163 'f4' ( in 4-component vector of float) 0:? Sequence 0:166 subgroupAdd ( global 4-component vector of float) 0:166 'f4' ( in 4-component vector of float) 0:167 subgroupMul ( global 4-component vector of float) 0:167 'f4' ( in 4-component vector of float) 0:168 subgroupMin ( global 4-component vector of float) 0:168 'f4' ( in 4-component vector of float) 0:169 subgroupMax ( global 4-component vector of float) 0:169 'f4' ( in 4-component vector of float) 0:170 subgroupAnd ( global 4-component vector of uint) 0:170 'ballot' ( temp 4-component vector of uint) 0:171 subgroupOr ( global 4-component vector of uint) 0:171 'ballot' ( temp 4-component vector of uint) 0:172 subgroupXor ( global 4-component vector of uint) 0:172 'ballot' ( temp 4-component vector of uint) 0:173 subgroupInclusiveAdd ( global 4-component vector of float) 0:173 'f4' ( in 4-component vector of float) 0:174 subgroupInclusiveMul ( global 4-component vector of float) 0:174 'f4' ( in 4-component vector of float) 0:175 subgroupInclusiveMin ( global 4-component vector of float) 0:175 'f4' ( in 4-component vector of float) 0:176 subgroupInclusiveMax ( global 4-component vector of float) 0:176 'f4' ( in 4-component vector of float) 0:177 subgroupInclusiveAnd ( global 4-component vector of uint) 0:177 'ballot' ( temp 4-component vector of uint) 0:178 subgroupInclusiveOr ( global 4-component vector of uint) 0:178 'ballot' ( temp 4-component vector of uint) 0:179 subgroupInclusiveXor ( global 4-component vector of uint) 0:179 'ballot' ( temp 4-component vector of uint) 0:180 subgroupExclusiveAdd ( global 4-component vector of float) 0:180 'f4' ( in 4-component vector of float) 0:181 subgroupExclusiveMul ( global 4-component vector of float) 0:181 'f4' ( in 4-component vector of float) 0:182 subgroupExclusiveMin ( global 4-component vector of float) 0:182 'f4' ( in 4-component vector of float) 0:183 subgroupExclusiveMax ( global 4-component vector of float) 0:183 'f4' ( in 4-component vector of float) 0:184 subgroupExclusiveAnd ( global 4-component vector of uint) 0:184 'ballot' ( temp 4-component vector of uint) 0:185 subgroupExclusiveOr ( global 4-component vector of uint) 0:185 'ballot' ( temp 4-component vector of uint) 0:186 subgroupExclusiveXor ( global 4-component vector of uint) 0:186 'ballot' ( temp 4-component vector of uint) 0:190 Function Definition: clustered_works(vf4; ( global void) 0:190 Function Parameters: 0:190 'f4' ( in 4-component vector of float) 0:192 Sequence 0:192 Sequence 0:192 move second child to first child ( temp 4-component vector of uint) 0:192 'ballot' ( temp 4-component vector of uint) 0:192 Constant: 0:192 85 (const uint) 0:192 0 (const uint) 0:192 0 (const uint) 0:192 0 (const uint) 0:193 subgroupClusteredAdd ( global 4-component vector of float) 0:193 'f4' ( in 4-component vector of float) 0:193 Constant: 0:193 2 (const uint) 0:194 subgroupClusteredMul ( global 4-component vector of float) 0:194 'f4' ( in 4-component vector of float) 0:194 Constant: 0:194 2 (const uint) 0:195 subgroupClusteredMin ( global 4-component vector of float) 0:195 'f4' ( in 4-component vector of float) 0:195 Constant: 0:195 2 (const uint) 0:196 subgroupClusteredMax ( global 4-component vector of float) 0:196 'f4' ( in 4-component vector of float) 0:196 Constant: 0:196 2 (const uint) 0:197 subgroupClusteredAnd ( global 4-component vector of uint) 0:197 'ballot' ( temp 4-component vector of uint) 0:197 Constant: 0:197 2 (const uint) 0:198 subgroupClusteredOr ( global 4-component vector of uint) 0:198 'ballot' ( temp 4-component vector of uint) 0:198 Constant: 0:198 2 (const uint) 0:199 subgroupClusteredXor ( global 4-component vector of uint) 0:199 'ballot' ( temp 4-component vector of uint) 0:199 Constant: 0:199 2 (const uint) 0:203 Function Definition: quad_works(vf4; ( global void) 0:203 Function Parameters: 0:203 'f4' ( in 4-component vector of float) 0:205 Sequence 0:205 subgroupQuadBroadcast ( global 4-component vector of float) 0:205 'f4' ( in 4-component vector of float) 0:205 Constant: 0:205 0 (const uint) 0:206 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:206 'f4' ( in 4-component vector of float) 0:207 subgroupQuadSwapVertical ( global 4-component vector of float) 0:207 'f4' ( in 4-component vector of float) 0:208 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:208 'f4' ( in 4-component vector of float) 0:212 Function Definition: partitioned_works(vf4; ( global void) 0:212 Function Parameters: 0:212 'f4' ( in 4-component vector of float) 0:214 Sequence 0:214 Sequence 0:214 move second child to first child ( temp 4-component vector of uint) 0:214 'parti' ( temp 4-component vector of uint) 0:214 subgroupPartitionNV ( global 4-component vector of uint) 0:214 'f4' ( in 4-component vector of float) 0:215 Sequence 0:215 move second child to first child ( temp 4-component vector of uint) 0:215 'ballot' ( temp 4-component vector of uint) 0:215 Constant: 0:215 85 (const uint) 0:215 0 (const uint) 0:215 0 (const uint) 0:215 0 (const uint) 0:216 subgroupPartitionedAddNV ( global 4-component vector of float) 0:216 'f4' ( in 4-component vector of float) 0:216 'parti' ( temp 4-component vector of uint) 0:217 subgroupPartitionedMulNV ( global 4-component vector of float) 0:217 'f4' ( in 4-component vector of float) 0:217 'parti' ( temp 4-component vector of uint) 0:218 subgroupPartitionedMinNV ( global 4-component vector of float) 0:218 'f4' ( in 4-component vector of float) 0:218 'parti' ( temp 4-component vector of uint) 0:219 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:219 'f4' ( in 4-component vector of float) 0:219 'parti' ( temp 4-component vector of uint) 0:220 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:220 'ballot' ( temp 4-component vector of uint) 0:220 'parti' ( temp 4-component vector of uint) 0:221 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:221 'ballot' ( temp 4-component vector of uint) 0:221 'parti' ( temp 4-component vector of uint) 0:222 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:222 'ballot' ( temp 4-component vector of uint) 0:222 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:223 'f4' ( in 4-component vector of float) 0:223 'parti' ( temp 4-component vector of uint) 0:224 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:224 'f4' ( in 4-component vector of float) 0:224 'parti' ( temp 4-component vector of uint) 0:225 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:227 'ballot' ( temp 4-component vector of uint) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:228 'ballot' ( temp 4-component vector of uint) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:229 'ballot' ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:230 'f4' ( in 4-component vector of float) 0:230 'parti' ( temp 4-component vector of uint) 0:231 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:231 'f4' ( in 4-component vector of float) 0:231 'parti' ( temp 4-component vector of uint) 0:232 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:232 'f4' ( in 4-component vector of float) 0:232 'parti' ( temp 4-component vector of uint) 0:233 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:233 'f4' ( in 4-component vector of float) 0:233 'parti' ( temp 4-component vector of uint) 0:234 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:234 'ballot' ( temp 4-component vector of uint) 0:234 'parti' ( temp 4-component vector of uint) 0:235 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:235 'ballot' ( temp 4-component vector of uint) 0:235 'parti' ( temp 4-component vector of uint) 0:236 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:236 'ballot' ( temp 4-component vector of uint) 0:236 'parti' ( temp 4-component vector of uint) 0:240 Function Definition: sm_builtins_err( ( global void) 0:240 Function Parameters: 0:242 Sequence 0:242 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:243 'gl_SMCountNV' ( in uint SMCountNV) 0:244 'gl_WarpIDNV' ( in uint WarpIDNV) 0:245 'gl_SMIDNV' ( in uint SMIDNV) 0:252 Function Definition: sm_builtins( ( global void) 0:252 Function Parameters: 0:254 Sequence 0:254 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:255 'gl_SMCountNV' ( in uint SMCountNV) 0:256 'gl_WarpIDNV' ( in uint WarpIDNV) 0:257 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) Linked compute stage: Shader version: 450 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 Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned local_size = (8, 8, 1) ERROR: node is still EOpNull! 0:112 Function Definition: main( ( global void) 0:112 Function Parameters: 0:114 Sequence 0:114 move second child to first child ( temp int) 0:114 indirect index (layout( column_major shared) temp int) 0:114 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:114 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) 0:114 Constant: 0:114 0 (const int) 0:114 'gl_SubgroupSize' ( in uint SubgroupSize) 0:114 Constant: 0:114 1 (const int) 0:115 move second child to first child ( temp int) 0:115 indirect index (layout( column_major shared) temp int) 0:115 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:115 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) 0:115 Constant: 0:115 0 (const int) 0:115 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:115 Constant: 0:115 1 (const int) 0:116 move second child to first child ( temp int) 0:116 indirect index (layout( column_major shared) temp int) 0:116 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:116 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) 0:116 Constant: 0:116 0 (const int) 0:116 'gl_NumSubgroups' ( in uint NumSubgroups) 0:116 Constant: 0:116 1 (const int) 0:117 move second child to first child ( temp int) 0:117 indirect index (layout( column_major shared) temp int) 0:117 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:117 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) 0:117 Constant: 0:117 0 (const int) 0:117 'gl_SubgroupID' ( in uint SubgroupID) 0:117 Test condition and select ( temp int) 0:117 Condition 0:117 subgroupElect ( global bool) 0:117 true case 0:117 Constant: 0:117 1 (const int) 0:117 false case 0:117 Constant: 0:117 0 (const int) 0:118 subgroupBarrier ( global void) 0:119 subgroupMemoryBarrier ( global void) 0:120 subgroupMemoryBarrierBuffer ( global void) 0:121 subgroupMemoryBarrierShared ( global void) 0:122 subgroupMemoryBarrierImage ( global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupClustered.comp.out000066400000000000000000016622211506534232700251370ustar00rootroot00000000000000glsl.450.subgroupClustered.comp Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_clustered local_size = (8, 1, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupClusteredAdd ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const uint) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupClusteredAdd ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 1 (const uint) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupClusteredAdd ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 1 (const uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupClusteredAdd ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const uint) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupClusteredAdd ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const uint) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupClusteredAdd ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const uint) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupClusteredAdd ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const uint) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupClusteredAdd ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 1 (const uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupClusteredAdd ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const uint) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupClusteredAdd ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 1 (const uint) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupClusteredAdd ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const uint) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupClusteredAdd ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 1 (const uint) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupClusteredAdd ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const uint) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupClusteredAdd ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupClusteredAdd ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 1 (const uint) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupClusteredAdd ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 1 (const uint) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 subgroupClusteredMul ( global float) 0:39 direct index ( temp float) 0:39 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const uint) 0:40 move second child to first child ( temp 2-component vector of float) 0:40 vector swizzle ( temp 2-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 subgroupClusteredMul ( global 2-component vector of float) 0:40 vector swizzle ( temp 2-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const uint) 0:41 move second child to first child ( temp 3-component vector of float) 0:41 vector swizzle ( temp 3-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupClusteredMul ( global 3-component vector of float) 0:41 vector swizzle ( temp 3-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 1 (const uint) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 0 (const int) 0:42 subgroupClusteredMul ( global 4-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const uint) 0:44 move second child to first child ( temp int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupClusteredMul ( global int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupClusteredMul ( global 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupClusteredMul ( global 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 1 (const int) 0:47 subgroupClusteredMul ( global 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 1 (const uint) 0:49 move second child to first child ( temp uint) 0:49 direct index ( temp uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupClusteredMul ( global uint) 0:49 direct index ( temp uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp 2-component vector of uint) 0:50 vector swizzle ( temp 2-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupClusteredMul ( global 2-component vector of uint) 0:50 vector swizzle ( temp 2-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp 3-component vector of uint) 0:51 vector swizzle ( temp 3-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupClusteredMul ( global 3-component vector of uint) 0:51 vector swizzle ( temp 3-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const uint) 0:52 move second child to first child ( temp 4-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupClusteredMul ( global 4-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 Constant: 0:52 1 (const uint) 0:54 move second child to first child ( temp double) 0:54 direct index ( temp double) 0:54 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupClusteredMul ( global double) 0:54 direct index ( temp double) 0:54 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp 2-component vector of double) 0:55 vector swizzle ( temp 2-component vector of double) 0:55 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 3 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupClusteredMul ( global 2-component vector of double) 0:55 vector swizzle ( temp 2-component vector of double) 0:55 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 3 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp 3-component vector of double) 0:56 vector swizzle ( temp 3-component vector of double) 0:56 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 3 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupClusteredMul ( global 3-component vector of double) 0:56 vector swizzle ( temp 3-component vector of double) 0:56 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 3 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 1 (const uint) 0:57 move second child to first child ( temp 4-component vector of double) 0:57 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 3 (const int) 0:57 subgroupClusteredMul ( global 4-component vector of double) 0:57 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 1 (const uint) 0:59 move second child to first child ( temp float) 0:59 direct index ( temp float) 0:59 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupClusteredMin ( global float) 0:59 direct index ( temp float) 0:59 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const uint) 0:60 move second child to first child ( temp 2-component vector of float) 0:60 vector swizzle ( temp 2-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupClusteredMin ( global 2-component vector of float) 0:60 vector swizzle ( temp 2-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 1 (const uint) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 vector swizzle ( temp 3-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 0 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupClusteredMin ( global 3-component vector of float) 0:61 vector swizzle ( temp 3-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const uint) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 0 (const int) 0:62 subgroupClusteredMin ( global 4-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const uint) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 subgroupClusteredMin ( global int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const uint) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 subgroupClusteredMin ( global 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const uint) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 subgroupClusteredMin ( global 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 1 (const uint) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 subgroupClusteredMin ( global 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 3 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const uint) 0:69 move second child to first child ( temp uint) 0:69 direct index ( temp uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 subgroupClusteredMin ( global uint) 0:69 direct index ( temp uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const uint) 0:70 move second child to first child ( temp 2-component vector of uint) 0:70 vector swizzle ( temp 2-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'invocation' ( temp uint) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 subgroupClusteredMin ( global 2-component vector of uint) 0:70 vector swizzle ( temp 2-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 1 (const uint) 0:71 move second child to first child ( temp 3-component vector of uint) 0:71 vector swizzle ( temp 3-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 subgroupClusteredMin ( global 3-component vector of uint) 0:71 vector swizzle ( temp 3-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 1 (const uint) 0:72 move second child to first child ( temp 4-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupClusteredMin ( global 4-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 3 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 1 (const uint) 0:74 move second child to first child ( temp double) 0:74 direct index ( temp double) 0:74 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupClusteredMin ( global double) 0:74 direct index ( temp double) 0:74 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const uint) 0:75 move second child to first child ( temp 2-component vector of double) 0:75 vector swizzle ( temp 2-component vector of double) 0:75 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:75 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'invocation' ( temp uint) 0:75 Constant: 0:75 3 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 subgroupClusteredMin ( global 2-component vector of double) 0:75 vector swizzle ( temp 2-component vector of double) 0:75 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 3 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 1 (const uint) 0:76 move second child to first child ( temp 3-component vector of double) 0:76 vector swizzle ( temp 3-component vector of double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 3 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupClusteredMin ( global 3-component vector of double) 0:76 vector swizzle ( temp 3-component vector of double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 3 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 1 (const uint) 0:77 move second child to first child ( temp 4-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 3 (const int) 0:77 subgroupClusteredMin ( global 4-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 1 (const uint) 0:79 move second child to first child ( temp float) 0:79 direct index ( temp float) 0:79 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 subgroupClusteredMax ( global float) 0:79 direct index ( temp float) 0:79 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const uint) 0:80 move second child to first child ( temp 2-component vector of float) 0:80 vector swizzle ( temp 2-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:80 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'invocation' ( temp uint) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 subgroupClusteredMax ( global 2-component vector of float) 0:80 vector swizzle ( temp 2-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 1 (const uint) 0:81 move second child to first child ( temp 3-component vector of float) 0:81 vector swizzle ( temp 3-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 0 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 subgroupClusteredMax ( global 3-component vector of float) 0:81 vector swizzle ( temp 3-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 2 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 Constant: 0:81 1 (const uint) 0:82 move second child to first child ( temp 4-component vector of float) 0:82 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 0 (const int) 0:82 subgroupClusteredMax ( global 4-component vector of float) 0:82 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 3 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const uint) 0:84 move second child to first child ( temp int) 0:84 direct index ( temp int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 subgroupClusteredMax ( global int) 0:84 direct index ( temp int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const uint) 0:85 move second child to first child ( temp 2-component vector of int) 0:85 vector swizzle ( temp 2-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:85 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'invocation' ( temp uint) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 subgroupClusteredMax ( global 2-component vector of int) 0:85 vector swizzle ( temp 2-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 1 (const uint) 0:86 move second child to first child ( temp 3-component vector of int) 0:86 vector swizzle ( temp 3-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:86 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'invocation' ( temp uint) 0:86 Constant: 0:86 1 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupClusteredMax ( global 3-component vector of int) 0:86 vector swizzle ( temp 3-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 1 (const uint) 0:87 move second child to first child ( temp 4-component vector of int) 0:87 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:87 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'invocation' ( temp uint) 0:87 Constant: 0:87 1 (const int) 0:87 subgroupClusteredMax ( global 4-component vector of int) 0:87 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 Constant: 0:87 3 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 1 (const uint) 0:89 move second child to first child ( temp uint) 0:89 direct index ( temp uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:89 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'invocation' ( temp uint) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 subgroupClusteredMax ( global uint) 0:89 direct index ( temp uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const uint) 0:90 move second child to first child ( temp 2-component vector of uint) 0:90 vector swizzle ( temp 2-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:90 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'invocation' ( temp uint) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 subgroupClusteredMax ( global 2-component vector of uint) 0:90 vector swizzle ( temp 2-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 1 (const uint) 0:91 move second child to first child ( temp 3-component vector of uint) 0:91 vector swizzle ( temp 3-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:91 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'invocation' ( temp uint) 0:91 Constant: 0:91 2 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 subgroupClusteredMax ( global 3-component vector of uint) 0:91 vector swizzle ( temp 3-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 1 (const uint) 0:92 move second child to first child ( temp 4-component vector of uint) 0:92 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:92 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'invocation' ( temp uint) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupClusteredMax ( global 4-component vector of uint) 0:92 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 Constant: 0:92 3 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 1 (const uint) 0:94 move second child to first child ( temp double) 0:94 direct index ( temp double) 0:94 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:94 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'invocation' ( temp uint) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupClusteredMax ( global double) 0:94 direct index ( temp double) 0:94 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const uint) 0:95 move second child to first child ( temp 2-component vector of double) 0:95 vector swizzle ( temp 2-component vector of double) 0:95 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:95 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'invocation' ( temp uint) 0:95 Constant: 0:95 3 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 subgroupClusteredMax ( global 2-component vector of double) 0:95 vector swizzle ( temp 2-component vector of double) 0:95 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 3 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const uint) 0:96 move second child to first child ( temp 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of double) 0:96 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:96 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'invocation' ( temp uint) 0:96 Constant: 0:96 3 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 subgroupClusteredMax ( global 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of double) 0:96 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 3 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 1 (const uint) 0:97 move second child to first child ( temp 4-component vector of double) 0:97 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:97 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'invocation' ( temp uint) 0:97 Constant: 0:97 3 (const int) 0:97 subgroupClusteredMax ( global 4-component vector of double) 0:97 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 Constant: 0:97 3 (const int) 0:97 Constant: 0:97 3 (const int) 0:97 Constant: 0:97 1 (const uint) 0:99 move second child to first child ( temp int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'invocation' ( temp uint) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 subgroupClusteredAnd ( global int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const uint) 0:100 move second child to first child ( temp 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'invocation' ( temp uint) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 subgroupClusteredAnd ( global 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 1 (const uint) 0:101 move second child to first child ( temp 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'invocation' ( temp uint) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupClusteredAnd ( global 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const uint) 0:102 move second child to first child ( temp 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'invocation' ( temp uint) 0:102 Constant: 0:102 1 (const int) 0:102 subgroupClusteredAnd ( global 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 Constant: 0:102 3 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 1 (const uint) 0:104 move second child to first child ( temp uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'invocation' ( temp uint) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 subgroupClusteredAnd ( global uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const uint) 0:105 move second child to first child ( temp 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'invocation' ( temp uint) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 subgroupClusteredAnd ( global 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const uint) 0:106 move second child to first child ( temp 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'invocation' ( temp uint) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 subgroupClusteredAnd ( global 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 Constant: 0:106 2 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Constant: 0:106 1 (const uint) 0:107 move second child to first child ( temp 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'invocation' ( temp uint) 0:107 Constant: 0:107 2 (const int) 0:107 subgroupClusteredAnd ( global 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 Constant: 0:107 3 (const int) 0:107 Constant: 0:107 2 (const int) 0:107 Constant: 0:107 1 (const uint) 0:109 move second child to first child ( temp int) 0:109 direct index ( temp int) 0:109 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:109 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'invocation' ( temp uint) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Convert bool to int ( temp int) 0:109 subgroupClusteredAnd ( global bool) 0:109 Compare Less Than ( temp bool) 0:109 direct index ( temp int) 0:109 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const uint) 0:110 move second child to first child ( temp 2-component vector of int) 0:110 vector swizzle ( temp 2-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:110 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'invocation' ( temp uint) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Convert bool to int ( temp 2-component vector of int) 0:110 subgroupClusteredAnd ( global 2-component vector of bool) 0:110 Compare Less Than ( global 2-component vector of bool) 0:110 vector swizzle ( temp 2-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 0 (const int) 0:110 Constant: 0:110 1 (const uint) 0:111 move second child to first child ( temp 3-component vector of int) 0:111 vector swizzle ( temp 3-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'invocation' ( temp uint) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 Convert bool to int ( temp 3-component vector of int) 0:111 subgroupClusteredAnd ( global 3-component vector of bool) 0:111 Compare Less Than ( global 3-component vector of bool) 0:111 vector swizzle ( temp 3-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 0 (const int) 0:111 0 (const int) 0:111 Constant: 0:111 1 (const uint) 0:112 move second child to first child ( temp 4-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'invocation' ( temp uint) 0:112 Constant: 0:112 1 (const int) 0:112 Convert bool to int ( temp 4-component vector of int) 0:112 subgroupClusteredAnd ( global 4-component vector of bool) 0:112 Compare Less Than ( global 4-component vector of bool) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:112 Constant: 0:112 1 (const uint) 0:114 move second child to first child ( temp int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'invocation' ( temp uint) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 subgroupClusteredOr ( global int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const uint) 0:115 move second child to first child ( temp 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'invocation' ( temp uint) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 subgroupClusteredOr ( global 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const uint) 0:116 move second child to first child ( temp 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'invocation' ( temp uint) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 subgroupClusteredOr ( global 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 1 (const uint) 0:117 move second child to first child ( temp 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'invocation' ( temp uint) 0:117 Constant: 0:117 1 (const int) 0:117 subgroupClusteredOr ( global 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 Constant: 0:117 3 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 1 (const uint) 0:119 move second child to first child ( temp uint) 0:119 direct index ( temp uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'invocation' ( temp uint) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 subgroupClusteredOr ( global uint) 0:119 direct index ( temp uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const uint) 0:120 move second child to first child ( temp 2-component vector of uint) 0:120 vector swizzle ( temp 2-component vector of uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:120 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'invocation' ( temp uint) 0:120 Constant: 0:120 2 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 subgroupClusteredOr ( global 2-component vector of uint) 0:120 vector swizzle ( temp 2-component vector of uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 1 (const uint) 0:121 move second child to first child ( temp 3-component vector of uint) 0:121 vector swizzle ( temp 3-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:121 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'invocation' ( temp uint) 0:121 Constant: 0:121 2 (const int) 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 subgroupClusteredOr ( global 3-component vector of uint) 0:121 vector swizzle ( temp 3-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 Constant: 0:121 2 (const int) 0:121 Constant: 0:121 2 (const int) 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 Constant: 0:121 1 (const uint) 0:122 move second child to first child ( temp 4-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:122 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'invocation' ( temp uint) 0:122 Constant: 0:122 2 (const int) 0:122 subgroupClusteredOr ( global 4-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 Constant: 0:122 3 (const int) 0:122 Constant: 0:122 2 (const int) 0:122 Constant: 0:122 1 (const uint) 0:124 move second child to first child ( temp int) 0:124 direct index ( temp int) 0:124 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:124 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'invocation' ( temp uint) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Convert bool to int ( temp int) 0:124 subgroupClusteredOr ( global bool) 0:124 Compare Less Than ( temp bool) 0:124 direct index ( temp int) 0:124 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const uint) 0:125 move second child to first child ( temp 2-component vector of int) 0:125 vector swizzle ( temp 2-component vector of int) 0:125 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:125 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'invocation' ( temp uint) 0:125 Constant: 0:125 1 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Convert bool to int ( temp 2-component vector of int) 0:125 subgroupClusteredOr ( global 2-component vector of bool) 0:125 Compare Less Than ( global 2-component vector of bool) 0:125 vector swizzle ( temp 2-component vector of int) 0:125 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 0 (const int) 0:125 Constant: 0:125 1 (const uint) 0:126 move second child to first child ( temp 3-component vector of int) 0:126 vector swizzle ( temp 3-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'invocation' ( temp uint) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Convert bool to int ( temp 3-component vector of int) 0:126 subgroupClusteredOr ( global 3-component vector of bool) 0:126 Compare Less Than ( global 3-component vector of bool) 0:126 vector swizzle ( temp 3-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 0 (const int) 0:126 0 (const int) 0:126 Constant: 0:126 1 (const uint) 0:127 move second child to first child ( temp 4-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'invocation' ( temp uint) 0:127 Constant: 0:127 1 (const int) 0:127 Convert bool to int ( temp 4-component vector of int) 0:127 subgroupClusteredOr ( global 4-component vector of bool) 0:127 Compare Less Than ( global 4-component vector of bool) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:127 Constant: 0:127 1 (const uint) 0:129 move second child to first child ( temp int) 0:129 direct index ( temp int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'invocation' ( temp uint) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 0 (const int) 0:129 subgroupClusteredXor ( global int) 0:129 direct index ( temp int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const uint) 0:130 move second child to first child ( temp 2-component vector of int) 0:130 vector swizzle ( temp 2-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:130 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'invocation' ( temp uint) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 subgroupClusteredXor ( global 2-component vector of int) 0:130 vector swizzle ( temp 2-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 1 (const uint) 0:131 move second child to first child ( temp 3-component vector of int) 0:131 vector swizzle ( temp 3-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:131 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'invocation' ( temp uint) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 2 (const int) 0:131 subgroupClusteredXor ( global 3-component vector of int) 0:131 vector swizzle ( temp 3-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const uint) 0:132 move second child to first child ( temp 4-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:132 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'invocation' ( temp uint) 0:132 Constant: 0:132 1 (const int) 0:132 subgroupClusteredXor ( global 4-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 Constant: 0:132 3 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 1 (const uint) 0:134 move second child to first child ( temp uint) 0:134 direct index ( temp uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'invocation' ( temp uint) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 0 (const int) 0:134 subgroupClusteredXor ( global uint) 0:134 direct index ( temp uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 1 (const uint) 0:135 move second child to first child ( temp 2-component vector of uint) 0:135 vector swizzle ( temp 2-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:135 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'invocation' ( temp uint) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 subgroupClusteredXor ( global 2-component vector of uint) 0:135 vector swizzle ( temp 2-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 1 (const uint) 0:136 move second child to first child ( temp 3-component vector of uint) 0:136 vector swizzle ( temp 3-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:136 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'invocation' ( temp uint) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 subgroupClusteredXor ( global 3-component vector of uint) 0:136 vector swizzle ( temp 3-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 Constant: 0:136 2 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Constant: 0:136 1 (const uint) 0:137 move second child to first child ( temp 4-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:137 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'invocation' ( temp uint) 0:137 Constant: 0:137 2 (const int) 0:137 subgroupClusteredXor ( global 4-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 Constant: 0:137 3 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 Constant: 0:137 1 (const uint) 0:139 move second child to first child ( temp int) 0:139 direct index ( temp int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'invocation' ( temp uint) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Convert bool to int ( temp int) 0:139 subgroupClusteredXor ( global bool) 0:139 Compare Less Than ( temp bool) 0:139 direct index ( temp int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const uint) 0:140 move second child to first child ( temp 2-component vector of int) 0:140 vector swizzle ( temp 2-component vector of int) 0:140 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:140 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'invocation' ( temp uint) 0:140 Constant: 0:140 1 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Convert bool to int ( temp 2-component vector of int) 0:140 subgroupClusteredXor ( global 2-component vector of bool) 0:140 Compare Less Than ( global 2-component vector of bool) 0:140 vector swizzle ( temp 2-component vector of int) 0:140 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 0 (const int) 0:140 Constant: 0:140 1 (const uint) 0:141 move second child to first child ( temp 3-component vector of int) 0:141 vector swizzle ( temp 3-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'invocation' ( temp uint) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 2 (const int) 0:141 Convert bool to int ( temp 3-component vector of int) 0:141 subgroupClusteredXor ( global 3-component vector of bool) 0:141 Compare Less Than ( global 3-component vector of bool) 0:141 vector swizzle ( temp 3-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 2 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 0 (const int) 0:141 0 (const int) 0:141 Constant: 0:141 1 (const uint) 0:142 move second child to first child ( temp 4-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'invocation' ( temp uint) 0:142 Constant: 0:142 1 (const int) 0:142 Convert bool to int ( temp 4-component vector of int) 0:142 subgroupClusteredXor ( global 4-component vector of bool) 0:142 Compare Less Than ( global 4-component vector of bool) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:142 Constant: 0:142 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_clustered local_size = (8, 1, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupClusteredAdd ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const uint) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupClusteredAdd ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 1 (const uint) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupClusteredAdd ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 1 (const uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupClusteredAdd ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const uint) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupClusteredAdd ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const uint) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupClusteredAdd ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const uint) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupClusteredAdd ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const uint) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupClusteredAdd ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 1 (const uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupClusteredAdd ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const uint) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupClusteredAdd ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 1 (const uint) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupClusteredAdd ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const uint) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupClusteredAdd ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 1 (const uint) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupClusteredAdd ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const uint) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupClusteredAdd ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupClusteredAdd ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 1 (const uint) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupClusteredAdd ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 1 (const uint) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 subgroupClusteredMul ( global float) 0:39 direct index ( temp float) 0:39 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const uint) 0:40 move second child to first child ( temp 2-component vector of float) 0:40 vector swizzle ( temp 2-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 subgroupClusteredMul ( global 2-component vector of float) 0:40 vector swizzle ( temp 2-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const uint) 0:41 move second child to first child ( temp 3-component vector of float) 0:41 vector swizzle ( temp 3-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupClusteredMul ( global 3-component vector of float) 0:41 vector swizzle ( temp 3-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 1 (const uint) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 0 (const int) 0:42 subgroupClusteredMul ( global 4-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const uint) 0:44 move second child to first child ( temp int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupClusteredMul ( global int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupClusteredMul ( global 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupClusteredMul ( global 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 1 (const int) 0:47 subgroupClusteredMul ( global 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 1 (const uint) 0:49 move second child to first child ( temp uint) 0:49 direct index ( temp uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupClusteredMul ( global uint) 0:49 direct index ( temp uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp 2-component vector of uint) 0:50 vector swizzle ( temp 2-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupClusteredMul ( global 2-component vector of uint) 0:50 vector swizzle ( temp 2-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp 3-component vector of uint) 0:51 vector swizzle ( temp 3-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupClusteredMul ( global 3-component vector of uint) 0:51 vector swizzle ( temp 3-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const uint) 0:52 move second child to first child ( temp 4-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupClusteredMul ( global 4-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 Constant: 0:52 1 (const uint) 0:54 move second child to first child ( temp double) 0:54 direct index ( temp double) 0:54 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupClusteredMul ( global double) 0:54 direct index ( temp double) 0:54 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp 2-component vector of double) 0:55 vector swizzle ( temp 2-component vector of double) 0:55 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 3 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupClusteredMul ( global 2-component vector of double) 0:55 vector swizzle ( temp 2-component vector of double) 0:55 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 3 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp 3-component vector of double) 0:56 vector swizzle ( temp 3-component vector of double) 0:56 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 3 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupClusteredMul ( global 3-component vector of double) 0:56 vector swizzle ( temp 3-component vector of double) 0:56 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 3 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 1 (const uint) 0:57 move second child to first child ( temp 4-component vector of double) 0:57 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 3 (const int) 0:57 subgroupClusteredMul ( global 4-component vector of double) 0:57 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 1 (const uint) 0:59 move second child to first child ( temp float) 0:59 direct index ( temp float) 0:59 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupClusteredMin ( global float) 0:59 direct index ( temp float) 0:59 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const uint) 0:60 move second child to first child ( temp 2-component vector of float) 0:60 vector swizzle ( temp 2-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupClusteredMin ( global 2-component vector of float) 0:60 vector swizzle ( temp 2-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 1 (const uint) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 vector swizzle ( temp 3-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 0 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupClusteredMin ( global 3-component vector of float) 0:61 vector swizzle ( temp 3-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const uint) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 0 (const int) 0:62 subgroupClusteredMin ( global 4-component vector of float) 0:62 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const uint) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 subgroupClusteredMin ( global int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const uint) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 subgroupClusteredMin ( global 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const uint) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 subgroupClusteredMin ( global 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 1 (const uint) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 subgroupClusteredMin ( global 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 3 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const uint) 0:69 move second child to first child ( temp uint) 0:69 direct index ( temp uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 subgroupClusteredMin ( global uint) 0:69 direct index ( temp uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const uint) 0:70 move second child to first child ( temp 2-component vector of uint) 0:70 vector swizzle ( temp 2-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'invocation' ( temp uint) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 subgroupClusteredMin ( global 2-component vector of uint) 0:70 vector swizzle ( temp 2-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 1 (const uint) 0:71 move second child to first child ( temp 3-component vector of uint) 0:71 vector swizzle ( temp 3-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 subgroupClusteredMin ( global 3-component vector of uint) 0:71 vector swizzle ( temp 3-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 1 (const uint) 0:72 move second child to first child ( temp 4-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupClusteredMin ( global 4-component vector of uint) 0:72 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 3 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 1 (const uint) 0:74 move second child to first child ( temp double) 0:74 direct index ( temp double) 0:74 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupClusteredMin ( global double) 0:74 direct index ( temp double) 0:74 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const uint) 0:75 move second child to first child ( temp 2-component vector of double) 0:75 vector swizzle ( temp 2-component vector of double) 0:75 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:75 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'invocation' ( temp uint) 0:75 Constant: 0:75 3 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 subgroupClusteredMin ( global 2-component vector of double) 0:75 vector swizzle ( temp 2-component vector of double) 0:75 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 3 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 1 (const uint) 0:76 move second child to first child ( temp 3-component vector of double) 0:76 vector swizzle ( temp 3-component vector of double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 3 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupClusteredMin ( global 3-component vector of double) 0:76 vector swizzle ( temp 3-component vector of double) 0:76 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 3 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 1 (const uint) 0:77 move second child to first child ( temp 4-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 3 (const int) 0:77 subgroupClusteredMin ( global 4-component vector of double) 0:77 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 1 (const uint) 0:79 move second child to first child ( temp float) 0:79 direct index ( temp float) 0:79 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 subgroupClusteredMax ( global float) 0:79 direct index ( temp float) 0:79 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const uint) 0:80 move second child to first child ( temp 2-component vector of float) 0:80 vector swizzle ( temp 2-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:80 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'invocation' ( temp uint) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 subgroupClusteredMax ( global 2-component vector of float) 0:80 vector swizzle ( temp 2-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 1 (const uint) 0:81 move second child to first child ( temp 3-component vector of float) 0:81 vector swizzle ( temp 3-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 0 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 subgroupClusteredMax ( global 3-component vector of float) 0:81 vector swizzle ( temp 3-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 2 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 Constant: 0:81 1 (const uint) 0:82 move second child to first child ( temp 4-component vector of float) 0:82 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 0 (const int) 0:82 subgroupClusteredMax ( global 4-component vector of float) 0:82 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 3 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const uint) 0:84 move second child to first child ( temp int) 0:84 direct index ( temp int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 subgroupClusteredMax ( global int) 0:84 direct index ( temp int) 0:84 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const uint) 0:85 move second child to first child ( temp 2-component vector of int) 0:85 vector swizzle ( temp 2-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:85 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'invocation' ( temp uint) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 subgroupClusteredMax ( global 2-component vector of int) 0:85 vector swizzle ( temp 2-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 1 (const uint) 0:86 move second child to first child ( temp 3-component vector of int) 0:86 vector swizzle ( temp 3-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:86 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'invocation' ( temp uint) 0:86 Constant: 0:86 1 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupClusteredMax ( global 3-component vector of int) 0:86 vector swizzle ( temp 3-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 1 (const uint) 0:87 move second child to first child ( temp 4-component vector of int) 0:87 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:87 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'invocation' ( temp uint) 0:87 Constant: 0:87 1 (const int) 0:87 subgroupClusteredMax ( global 4-component vector of int) 0:87 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 Constant: 0:87 3 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 1 (const uint) 0:89 move second child to first child ( temp uint) 0:89 direct index ( temp uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:89 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'invocation' ( temp uint) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 subgroupClusteredMax ( global uint) 0:89 direct index ( temp uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const uint) 0:90 move second child to first child ( temp 2-component vector of uint) 0:90 vector swizzle ( temp 2-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:90 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'invocation' ( temp uint) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 subgroupClusteredMax ( global 2-component vector of uint) 0:90 vector swizzle ( temp 2-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 1 (const uint) 0:91 move second child to first child ( temp 3-component vector of uint) 0:91 vector swizzle ( temp 3-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:91 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'invocation' ( temp uint) 0:91 Constant: 0:91 2 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 subgroupClusteredMax ( global 3-component vector of uint) 0:91 vector swizzle ( temp 3-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 1 (const uint) 0:92 move second child to first child ( temp 4-component vector of uint) 0:92 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:92 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'invocation' ( temp uint) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupClusteredMax ( global 4-component vector of uint) 0:92 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 Constant: 0:92 3 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 1 (const uint) 0:94 move second child to first child ( temp double) 0:94 direct index ( temp double) 0:94 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:94 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'invocation' ( temp uint) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupClusteredMax ( global double) 0:94 direct index ( temp double) 0:94 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const uint) 0:95 move second child to first child ( temp 2-component vector of double) 0:95 vector swizzle ( temp 2-component vector of double) 0:95 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:95 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'invocation' ( temp uint) 0:95 Constant: 0:95 3 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 subgroupClusteredMax ( global 2-component vector of double) 0:95 vector swizzle ( temp 2-component vector of double) 0:95 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 3 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const uint) 0:96 move second child to first child ( temp 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of double) 0:96 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:96 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'invocation' ( temp uint) 0:96 Constant: 0:96 3 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 subgroupClusteredMax ( global 3-component vector of double) 0:96 vector swizzle ( temp 3-component vector of double) 0:96 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 3 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 1 (const uint) 0:97 move second child to first child ( temp 4-component vector of double) 0:97 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:97 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'invocation' ( temp uint) 0:97 Constant: 0:97 3 (const int) 0:97 subgroupClusteredMax ( global 4-component vector of double) 0:97 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 Constant: 0:97 3 (const int) 0:97 Constant: 0:97 3 (const int) 0:97 Constant: 0:97 1 (const uint) 0:99 move second child to first child ( temp int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'invocation' ( temp uint) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 subgroupClusteredAnd ( global int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const uint) 0:100 move second child to first child ( temp 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'invocation' ( temp uint) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 subgroupClusteredAnd ( global 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 1 (const uint) 0:101 move second child to first child ( temp 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'invocation' ( temp uint) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupClusteredAnd ( global 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const uint) 0:102 move second child to first child ( temp 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'invocation' ( temp uint) 0:102 Constant: 0:102 1 (const int) 0:102 subgroupClusteredAnd ( global 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 Constant: 0:102 3 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 1 (const uint) 0:104 move second child to first child ( temp uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'invocation' ( temp uint) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 subgroupClusteredAnd ( global uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const uint) 0:105 move second child to first child ( temp 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'invocation' ( temp uint) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 subgroupClusteredAnd ( global 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const uint) 0:106 move second child to first child ( temp 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'invocation' ( temp uint) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 subgroupClusteredAnd ( global 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 Constant: 0:106 2 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Constant: 0:106 1 (const uint) 0:107 move second child to first child ( temp 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'invocation' ( temp uint) 0:107 Constant: 0:107 2 (const int) 0:107 subgroupClusteredAnd ( global 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 Constant: 0:107 3 (const int) 0:107 Constant: 0:107 2 (const int) 0:107 Constant: 0:107 1 (const uint) 0:109 move second child to first child ( temp int) 0:109 direct index ( temp int) 0:109 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:109 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'invocation' ( temp uint) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Convert bool to int ( temp int) 0:109 subgroupClusteredAnd ( global bool) 0:109 Compare Less Than ( temp bool) 0:109 direct index ( temp int) 0:109 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const uint) 0:110 move second child to first child ( temp 2-component vector of int) 0:110 vector swizzle ( temp 2-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:110 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'invocation' ( temp uint) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Convert bool to int ( temp 2-component vector of int) 0:110 subgroupClusteredAnd ( global 2-component vector of bool) 0:110 Compare Less Than ( global 2-component vector of bool) 0:110 vector swizzle ( temp 2-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 0 (const int) 0:110 Constant: 0:110 1 (const uint) 0:111 move second child to first child ( temp 3-component vector of int) 0:111 vector swizzle ( temp 3-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'invocation' ( temp uint) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 Convert bool to int ( temp 3-component vector of int) 0:111 subgroupClusteredAnd ( global 3-component vector of bool) 0:111 Compare Less Than ( global 3-component vector of bool) 0:111 vector swizzle ( temp 3-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 0 (const int) 0:111 0 (const int) 0:111 Constant: 0:111 1 (const uint) 0:112 move second child to first child ( temp 4-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'invocation' ( temp uint) 0:112 Constant: 0:112 1 (const int) 0:112 Convert bool to int ( temp 4-component vector of int) 0:112 subgroupClusteredAnd ( global 4-component vector of bool) 0:112 Compare Less Than ( global 4-component vector of bool) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:112 Constant: 0:112 1 (const uint) 0:114 move second child to first child ( temp int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'invocation' ( temp uint) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 subgroupClusteredOr ( global int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const uint) 0:115 move second child to first child ( temp 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'invocation' ( temp uint) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 subgroupClusteredOr ( global 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const uint) 0:116 move second child to first child ( temp 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'invocation' ( temp uint) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 subgroupClusteredOr ( global 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 1 (const uint) 0:117 move second child to first child ( temp 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'invocation' ( temp uint) 0:117 Constant: 0:117 1 (const int) 0:117 subgroupClusteredOr ( global 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 Constant: 0:117 3 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 1 (const uint) 0:119 move second child to first child ( temp uint) 0:119 direct index ( temp uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'invocation' ( temp uint) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 subgroupClusteredOr ( global uint) 0:119 direct index ( temp uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 2 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const uint) 0:120 move second child to first child ( temp 2-component vector of uint) 0:120 vector swizzle ( temp 2-component vector of uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:120 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'invocation' ( temp uint) 0:120 Constant: 0:120 2 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 subgroupClusteredOr ( global 2-component vector of uint) 0:120 vector swizzle ( temp 2-component vector of uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 1 (const uint) 0:121 move second child to first child ( temp 3-component vector of uint) 0:121 vector swizzle ( temp 3-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:121 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'invocation' ( temp uint) 0:121 Constant: 0:121 2 (const int) 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 subgroupClusteredOr ( global 3-component vector of uint) 0:121 vector swizzle ( temp 3-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 Constant: 0:121 2 (const int) 0:121 Constant: 0:121 2 (const int) 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 Constant: 0:121 1 (const uint) 0:122 move second child to first child ( temp 4-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:122 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'invocation' ( temp uint) 0:122 Constant: 0:122 2 (const int) 0:122 subgroupClusteredOr ( global 4-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 Constant: 0:122 3 (const int) 0:122 Constant: 0:122 2 (const int) 0:122 Constant: 0:122 1 (const uint) 0:124 move second child to first child ( temp int) 0:124 direct index ( temp int) 0:124 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:124 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'invocation' ( temp uint) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Convert bool to int ( temp int) 0:124 subgroupClusteredOr ( global bool) 0:124 Compare Less Than ( temp bool) 0:124 direct index ( temp int) 0:124 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const uint) 0:125 move second child to first child ( temp 2-component vector of int) 0:125 vector swizzle ( temp 2-component vector of int) 0:125 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:125 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'invocation' ( temp uint) 0:125 Constant: 0:125 1 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Convert bool to int ( temp 2-component vector of int) 0:125 subgroupClusteredOr ( global 2-component vector of bool) 0:125 Compare Less Than ( global 2-component vector of bool) 0:125 vector swizzle ( temp 2-component vector of int) 0:125 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 0 (const int) 0:125 Constant: 0:125 1 (const uint) 0:126 move second child to first child ( temp 3-component vector of int) 0:126 vector swizzle ( temp 3-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'invocation' ( temp uint) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Convert bool to int ( temp 3-component vector of int) 0:126 subgroupClusteredOr ( global 3-component vector of bool) 0:126 Compare Less Than ( global 3-component vector of bool) 0:126 vector swizzle ( temp 3-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 0 (const int) 0:126 0 (const int) 0:126 Constant: 0:126 1 (const uint) 0:127 move second child to first child ( temp 4-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'invocation' ( temp uint) 0:127 Constant: 0:127 1 (const int) 0:127 Convert bool to int ( temp 4-component vector of int) 0:127 subgroupClusteredOr ( global 4-component vector of bool) 0:127 Compare Less Than ( global 4-component vector of bool) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:127 Constant: 0:127 1 (const uint) 0:129 move second child to first child ( temp int) 0:129 direct index ( temp int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'invocation' ( temp uint) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 0 (const int) 0:129 subgroupClusteredXor ( global int) 0:129 direct index ( temp int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const uint) 0:130 move second child to first child ( temp 2-component vector of int) 0:130 vector swizzle ( temp 2-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:130 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'invocation' ( temp uint) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 subgroupClusteredXor ( global 2-component vector of int) 0:130 vector swizzle ( temp 2-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 1 (const uint) 0:131 move second child to first child ( temp 3-component vector of int) 0:131 vector swizzle ( temp 3-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:131 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'invocation' ( temp uint) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 2 (const int) 0:131 subgroupClusteredXor ( global 3-component vector of int) 0:131 vector swizzle ( temp 3-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const uint) 0:132 move second child to first child ( temp 4-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:132 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'invocation' ( temp uint) 0:132 Constant: 0:132 1 (const int) 0:132 subgroupClusteredXor ( global 4-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 Constant: 0:132 3 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 1 (const uint) 0:134 move second child to first child ( temp uint) 0:134 direct index ( temp uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'invocation' ( temp uint) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 0 (const int) 0:134 subgroupClusteredXor ( global uint) 0:134 direct index ( temp uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 1 (const uint) 0:135 move second child to first child ( temp 2-component vector of uint) 0:135 vector swizzle ( temp 2-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:135 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'invocation' ( temp uint) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 subgroupClusteredXor ( global 2-component vector of uint) 0:135 vector swizzle ( temp 2-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 1 (const uint) 0:136 move second child to first child ( temp 3-component vector of uint) 0:136 vector swizzle ( temp 3-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:136 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'invocation' ( temp uint) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 subgroupClusteredXor ( global 3-component vector of uint) 0:136 vector swizzle ( temp 3-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 Constant: 0:136 2 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Constant: 0:136 1 (const uint) 0:137 move second child to first child ( temp 4-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:137 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'invocation' ( temp uint) 0:137 Constant: 0:137 2 (const int) 0:137 subgroupClusteredXor ( global 4-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 Constant: 0:137 3 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 Constant: 0:137 1 (const uint) 0:139 move second child to first child ( temp int) 0:139 direct index ( temp int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'invocation' ( temp uint) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Convert bool to int ( temp int) 0:139 subgroupClusteredXor ( global bool) 0:139 Compare Less Than ( temp bool) 0:139 direct index ( temp int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const uint) 0:140 move second child to first child ( temp 2-component vector of int) 0:140 vector swizzle ( temp 2-component vector of int) 0:140 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:140 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'invocation' ( temp uint) 0:140 Constant: 0:140 1 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Convert bool to int ( temp 2-component vector of int) 0:140 subgroupClusteredXor ( global 2-component vector of bool) 0:140 Compare Less Than ( global 2-component vector of bool) 0:140 vector swizzle ( temp 2-component vector of int) 0:140 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 0 (const int) 0:140 Constant: 0:140 1 (const uint) 0:141 move second child to first child ( temp 3-component vector of int) 0:141 vector swizzle ( temp 3-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'invocation' ( temp uint) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 2 (const int) 0:141 Convert bool to int ( temp 3-component vector of int) 0:141 subgroupClusteredXor ( global 3-component vector of bool) 0:141 Compare Less Than ( global 3-component vector of bool) 0:141 vector swizzle ( temp 3-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 2 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 0 (const int) 0:141 0 (const int) 0:141 Constant: 0:141 1 (const uint) 0:142 move second child to first child ( temp 4-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'invocation' ( temp uint) 0:142 Constant: 0:142 1 (const int) 0:142 Convert bool to int ( temp 4-component vector of int) 0:142 subgroupClusteredXor ( global 4-component vector of bool) 0:142 Compare Less Than ( global 4-component vector of bool) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:142 Constant: 0:142 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupClusteredNeg.comp.out000066400000000000000000001562661506534232700255770ustar00rootroot00000000000000glsl.450.subgroupClusteredNeg.comp ERROR: 0:22: 'cluster size' : argument must be at least 1 ERROR: 0:24: 'cluster size' : argument must be a power of 2 ERROR: 0:27: 'cluster size' : argument must be a power of 2 ERROR: 0:29: 'cluster size' : argument must be at least 1 ERROR: 0:31: 'cluster size' : argument must be at least 1 ERROR: 0:33: 'cluster size' : argument must be compile-time constant ERROR: 0:36: 'cluster size' : argument must be compile-time constant ERROR: 0:37: 'cluster size' : argument must be compile-time constant ERROR: 8 compilation errors. No code generated. Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_clustered local_size = (8, 1, 1) 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 int) 0:17 'a' ( temp int) 0:17 Constant: 0:17 1 (const int) 0:20 Sequence 0:20 move second child to first child ( temp uint) 0:20 'invocation' ( temp uint) 0:20 mod ( temp uint) 0:20 add ( temp uint) 0:20 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:20 'gl_SubgroupSize' ( in uint SubgroupSize) 0:20 Constant: 0:20 4 (const uint) 0:22 move second child to first child ( temp 2-component vector of float) 0:22 vector swizzle ( temp 2-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 subgroupClusteredAdd ( global 2-component vector of float) 0:22 vector swizzle ( temp 2-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const uint) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupClusteredMul ( global float) 0:24 direct index ( temp float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 3 (const uint) 0:26 move second child to first child ( temp 2-component vector of int) 0:26 vector swizzle ( temp 2-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupClusteredMin ( global 2-component vector of int) 0:26 vector swizzle ( temp 2-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 8 (const uint) 0:27 move second child to first child ( temp 3-component vector of int) 0:27 vector swizzle ( temp 3-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupClusteredMin ( global 3-component vector of int) 0:27 vector swizzle ( temp 3-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 6 (const uint) 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupClusteredMax ( global float) 0:29 direct index ( temp float) 0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 4294967295 (const uint) 0:31 move second child to first child ( temp 4-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupClusteredAnd ( global 4-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 4294967293 (const uint) 0:33 move second child to first child ( temp int) 0:33 direct index ( temp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'invocation' ( temp uint) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupClusteredOr ( global int) 0:33 direct index ( temp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Convert int to uint ( temp uint) 0:33 'a' ( temp int) 0:34 move second child to first child ( temp 2-component vector of int) 0:34 vector swizzle ( temp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 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 subgroupClusteredOr ( global 2-component vector of int) 0:34 vector swizzle ( temp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 1 (const int) 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 1 (const uint) 0:36 move second child to first child ( temp int) 0:36 direct index ( temp int) 0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 subgroupClusteredXor ( global int) 0:36 direct index ( temp int) 0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Convert int to uint ( temp uint) 0:36 add ( temp int) 0:36 Constant: 0:36 1 (const int) 0:36 'a' ( temp int) 0:37 move second child to first child ( temp 2-component vector of int) 0:37 vector swizzle ( temp 2-component vector of int) 0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 1 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 subgroupClusteredXor ( global 2-component vector of int) 0:37 vector swizzle ( temp 2-component vector of int) 0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Convert int to uint ( temp uint) 0:37 add ( temp int) 0:37 Constant: 0:37 1 (const int) 0:37 'a' ( temp int) 0:38 move second child to first child ( temp 3-component vector of int) 0:38 vector swizzle ( temp 3-component vector of int) 0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:38 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'invocation' ( temp uint) 0:38 Constant: 0:38 1 (const int) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 subgroupClusteredXor ( global 3-component vector of int) 0:38 vector swizzle ( temp 3-component vector of int) 0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 2 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_clustered local_size = (8, 1, 1) 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 int) 0:17 'a' ( temp int) 0:17 Constant: 0:17 1 (const int) 0:20 Sequence 0:20 move second child to first child ( temp uint) 0:20 'invocation' ( temp uint) 0:20 mod ( temp uint) 0:20 add ( temp uint) 0:20 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:20 'gl_SubgroupSize' ( in uint SubgroupSize) 0:20 Constant: 0:20 4 (const uint) 0:22 move second child to first child ( temp 2-component vector of float) 0:22 vector swizzle ( temp 2-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 subgroupClusteredAdd ( global 2-component vector of float) 0:22 vector swizzle ( temp 2-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const uint) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupClusteredMul ( global float) 0:24 direct index ( temp float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 3 (const uint) 0:26 move second child to first child ( temp 2-component vector of int) 0:26 vector swizzle ( temp 2-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupClusteredMin ( global 2-component vector of int) 0:26 vector swizzle ( temp 2-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 8 (const uint) 0:27 move second child to first child ( temp 3-component vector of int) 0:27 vector swizzle ( temp 3-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupClusteredMin ( global 3-component vector of int) 0:27 vector swizzle ( temp 3-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 6 (const uint) 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupClusteredMax ( global float) 0:29 direct index ( temp float) 0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 4294967295 (const uint) 0:31 move second child to first child ( temp 4-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupClusteredAnd ( global 4-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 4294967293 (const uint) 0:33 move second child to first child ( temp int) 0:33 direct index ( temp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'invocation' ( temp uint) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupClusteredOr ( global int) 0:33 direct index ( temp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Convert int to uint ( temp uint) 0:33 'a' ( temp int) 0:34 move second child to first child ( temp 2-component vector of int) 0:34 vector swizzle ( temp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 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 subgroupClusteredOr ( global 2-component vector of int) 0:34 vector swizzle ( temp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 1 (const int) 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 1 (const uint) 0:36 move second child to first child ( temp int) 0:36 direct index ( temp int) 0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 subgroupClusteredXor ( global int) 0:36 direct index ( temp int) 0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Convert int to uint ( temp uint) 0:36 add ( temp int) 0:36 Constant: 0:36 1 (const int) 0:36 'a' ( temp int) 0:37 move second child to first child ( temp 2-component vector of int) 0:37 vector swizzle ( temp 2-component vector of int) 0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 1 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 subgroupClusteredXor ( global 2-component vector of int) 0:37 vector swizzle ( temp 2-component vector of int) 0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Convert int to uint ( temp uint) 0:37 add ( temp int) 0:37 Constant: 0:37 1 (const int) 0:37 'a' ( temp int) 0:38 move second child to first child ( temp 3-component vector of int) 0:38 vector swizzle ( temp 3-component vector of int) 0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:38 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'invocation' ( temp uint) 0:38 Constant: 0:38 1 (const int) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 subgroupClusteredXor ( global 3-component vector of int) 0:38 vector swizzle ( temp 3-component vector of int) 0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 2 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupPartitioned.comp.out000066400000000000000000057267511506534232700255040ustar00rootroot00000000000000glsl.450.subgroupPartitioned.comp Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_NV_shader_subgroup_partitioned local_size = (8, 1, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of uint) 0:19 'ballot' ( temp 4-component vector of uint) 0:19 subgroupPartitionNV ( global 4-component vector of uint) 0:19 'invocation' ( temp uint) 0:21 move second child to first child ( temp 4-component vector of uint) 0:21 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupPartitionNV ( global 4-component vector of uint) 0:21 direct index ( temp float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 move second child to first child ( temp 4-component vector of uint) 0:22 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupPartitionNV ( global 4-component vector of uint) 0:22 vector swizzle ( temp 2-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:23 move second child to first child ( temp 4-component vector of uint) 0:23 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:23 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:23 'invocation' ( temp uint) 0:23 Constant: 0:23 2 (const int) 0:23 subgroupPartitionNV ( global 4-component vector of uint) 0:23 vector swizzle ( temp 3-component vector of float) 0:23 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Sequence 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 2 (const int) 0:24 move second child to first child ( temp 4-component vector of uint) 0:24 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupPartitionNV ( global 4-component vector of uint) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:26 move second child to first child ( temp 4-component vector of uint) 0:26 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupPartitionNV ( global 4-component vector of uint) 0:26 direct index ( temp int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:27 move second child to first child ( temp 4-component vector of uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupPartitionNV ( global 4-component vector of uint) 0:27 vector swizzle ( temp 2-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:28 move second child to first child ( temp 4-component vector of uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'invocation' ( temp uint) 0:28 Constant: 0:28 2 (const int) 0:28 subgroupPartitionNV ( global 4-component vector of uint) 0:28 vector swizzle ( temp 3-component vector of int) 0:28 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Sequence 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 2 (const int) 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 subgroupPartitionNV ( global 4-component vector of uint) 0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:31 move second child to first child ( temp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupPartitionNV ( global 4-component vector of uint) 0:31 direct index ( temp uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 0 (const int) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupPartitionNV ( global 4-component vector of uint) 0:32 vector swizzle ( temp 2-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'invocation' ( temp uint) 0:33 Constant: 0:33 2 (const int) 0:33 subgroupPartitionNV ( global 4-component vector of uint) 0:33 vector swizzle ( temp 3-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 2 (const int) 0:34 subgroupPartitionNV ( global 4-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 2 (const int) 0:36 move second child to first child ( temp 4-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupPartitionNV ( global 4-component vector of uint) 0:36 direct index ( temp double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupPartitionNV ( global 4-component vector of uint) 0:37 vector swizzle ( temp 2-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:38 move second child to first child ( temp 4-component vector of uint) 0:38 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:38 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'invocation' ( temp uint) 0:38 Constant: 0:38 2 (const int) 0:38 subgroupPartitionNV ( global 4-component vector of uint) 0:38 vector swizzle ( temp 3-component vector of double) 0:38 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 3 (const int) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:39 move second child to first child ( temp 4-component vector of uint) 0:39 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 2 (const int) 0:39 subgroupPartitionNV ( global 4-component vector of uint) 0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 3 (const int) 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupPartitionNV ( global 4-component vector of uint) 0:41 Convert int to bool ( temp bool) 0:41 direct index ( temp int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:42 move second child to first child ( temp 4-component vector of uint) 0:42 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupPartitionNV ( global 4-component vector of uint) 0:42 Convert int to bool ( temp 2-component vector of bool) 0:42 vector swizzle ( temp 2-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:43 move second child to first child ( temp 4-component vector of uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:43 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:43 'invocation' ( temp uint) 0:43 Constant: 0:43 2 (const int) 0:43 subgroupPartitionNV ( global 4-component vector of uint) 0:43 Convert int to bool ( temp 3-component vector of bool) 0:43 vector swizzle ( temp 3-component vector of int) 0:43 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Sequence 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 2 (const int) 0:44 move second child to first child ( temp 4-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupPartitionNV ( global 4-component vector of uint) 0:44 Convert int to bool ( temp 4-component vector of bool) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:46 move second child to first child ( temp float) 0:46 direct index ( temp float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 subgroupPartitionedAddNV ( global float) 0:46 direct index ( temp float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 'ballot' ( temp 4-component vector of uint) 0:47 move second child to first child ( temp 2-component vector of float) 0:47 vector swizzle ( temp 2-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 0 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 subgroupPartitionedAddNV ( global 2-component vector of float) 0:47 vector swizzle ( temp 2-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 'ballot' ( temp 4-component vector of uint) 0:48 move second child to first child ( temp 3-component vector of float) 0:48 vector swizzle ( temp 3-component vector of float) 0:48 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:48 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:48 'invocation' ( temp uint) 0:48 Constant: 0:48 0 (const int) 0:48 Sequence 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 subgroupPartitionedAddNV ( global 3-component vector of float) 0:48 vector swizzle ( temp 3-component vector of float) 0:48 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Sequence 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 'ballot' ( temp 4-component vector of uint) 0:49 move second child to first child ( temp 4-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupPartitionedAddNV ( global 4-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'ballot' ( temp 4-component vector of uint) 0:51 move second child to first child ( temp int) 0:51 direct index ( temp int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 subgroupPartitionedAddNV ( global int) 0:51 direct index ( temp int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 'ballot' ( temp 4-component vector of uint) 0:52 move second child to first child ( temp 2-component vector of int) 0:52 vector swizzle ( temp 2-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 1 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 subgroupPartitionedAddNV ( global 2-component vector of int) 0:52 vector swizzle ( temp 2-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 'ballot' ( temp 4-component vector of uint) 0:53 move second child to first child ( temp 3-component vector of int) 0:53 vector swizzle ( temp 3-component vector of int) 0:53 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:53 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:53 'invocation' ( temp uint) 0:53 Constant: 0:53 1 (const int) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 subgroupPartitionedAddNV ( global 3-component vector of int) 0:53 vector swizzle ( temp 3-component vector of int) 0:53 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 'ballot' ( temp 4-component vector of uint) 0:54 move second child to first child ( temp 4-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 1 (const int) 0:54 subgroupPartitionedAddNV ( global 4-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 'ballot' ( temp 4-component vector of uint) 0:56 move second child to first child ( temp uint) 0:56 direct index ( temp uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 subgroupPartitionedAddNV ( global uint) 0:56 direct index ( temp uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 'ballot' ( temp 4-component vector of uint) 0:57 move second child to first child ( temp 2-component vector of uint) 0:57 vector swizzle ( temp 2-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 2 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 subgroupPartitionedAddNV ( global 2-component vector of uint) 0:57 vector swizzle ( temp 2-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 'ballot' ( temp 4-component vector of uint) 0:58 move second child to first child ( temp 3-component vector of uint) 0:58 vector swizzle ( temp 3-component vector of uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:58 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:58 'invocation' ( temp uint) 0:58 Constant: 0:58 2 (const int) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 subgroupPartitionedAddNV ( global 3-component vector of uint) 0:58 vector swizzle ( temp 3-component vector of uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 'ballot' ( temp 4-component vector of uint) 0:59 move second child to first child ( temp 4-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 2 (const int) 0:59 subgroupPartitionedAddNV ( global 4-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 'ballot' ( temp 4-component vector of uint) 0:61 move second child to first child ( temp double) 0:61 direct index ( temp double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 subgroupPartitionedAddNV ( global double) 0:61 direct index ( temp double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 'ballot' ( temp 4-component vector of uint) 0:62 move second child to first child ( temp 2-component vector of double) 0:62 vector swizzle ( temp 2-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 3 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 subgroupPartitionedAddNV ( global 2-component vector of double) 0:62 vector swizzle ( temp 2-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 3 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 'ballot' ( temp 4-component vector of uint) 0:63 move second child to first child ( temp 3-component vector of double) 0:63 vector swizzle ( temp 3-component vector of double) 0:63 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:63 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'invocation' ( temp uint) 0:63 Constant: 0:63 3 (const int) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 subgroupPartitionedAddNV ( global 3-component vector of double) 0:63 vector swizzle ( temp 3-component vector of double) 0:63 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 3 (const int) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 'ballot' ( temp 4-component vector of uint) 0:64 move second child to first child ( temp 4-component vector of double) 0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 3 (const int) 0:64 subgroupPartitionedAddNV ( global 4-component vector of double) 0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 3 (const int) 0:64 Constant: 0:64 3 (const int) 0:64 'ballot' ( temp 4-component vector of uint) 0:66 move second child to first child ( temp float) 0:66 direct index ( temp float) 0:66 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 subgroupPartitionedMulNV ( global float) 0:66 direct index ( temp float) 0:66 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 'ballot' ( temp 4-component vector of uint) 0:67 move second child to first child ( temp 2-component vector of float) 0:67 vector swizzle ( temp 2-component vector of float) 0:67 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 0 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 subgroupPartitionedMulNV ( global 2-component vector of float) 0:67 vector swizzle ( temp 2-component vector of float) 0:67 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 0 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 'ballot' ( temp 4-component vector of uint) 0:68 move second child to first child ( temp 3-component vector of float) 0:68 vector swizzle ( temp 3-component vector of float) 0:68 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:68 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'invocation' ( temp uint) 0:68 Constant: 0:68 0 (const int) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 subgroupPartitionedMulNV ( global 3-component vector of float) 0:68 vector swizzle ( temp 3-component vector of float) 0:68 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 'ballot' ( temp 4-component vector of uint) 0:69 move second child to first child ( temp 4-component vector of float) 0:69 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 0 (const int) 0:69 subgroupPartitionedMulNV ( global 4-component vector of float) 0:69 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 3 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 'ballot' ( temp 4-component vector of uint) 0:71 move second child to first child ( temp int) 0:71 direct index ( temp int) 0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 subgroupPartitionedMulNV ( global int) 0:71 direct index ( temp int) 0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 'ballot' ( temp 4-component vector of uint) 0:72 move second child to first child ( temp 2-component vector of int) 0:72 vector swizzle ( temp 2-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 1 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 subgroupPartitionedMulNV ( global 2-component vector of int) 0:72 vector swizzle ( temp 2-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 'ballot' ( temp 4-component vector of uint) 0:73 move second child to first child ( temp 3-component vector of int) 0:73 vector swizzle ( temp 3-component vector of int) 0:73 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:73 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'invocation' ( temp uint) 0:73 Constant: 0:73 1 (const int) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 subgroupPartitionedMulNV ( global 3-component vector of int) 0:73 vector swizzle ( temp 3-component vector of int) 0:73 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 'ballot' ( temp 4-component vector of uint) 0:74 move second child to first child ( temp 4-component vector of int) 0:74 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 1 (const int) 0:74 subgroupPartitionedMulNV ( global 4-component vector of int) 0:74 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 'ballot' ( temp 4-component vector of uint) 0:76 move second child to first child ( temp uint) 0:76 direct index ( temp uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 subgroupPartitionedMulNV ( global uint) 0:76 direct index ( temp uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 'ballot' ( temp 4-component vector of uint) 0:77 move second child to first child ( temp 2-component vector of uint) 0:77 vector swizzle ( temp 2-component vector of uint) 0:77 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 2 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 subgroupPartitionedMulNV ( global 2-component vector of uint) 0:77 vector swizzle ( temp 2-component vector of uint) 0:77 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 'ballot' ( temp 4-component vector of uint) 0:78 move second child to first child ( temp 3-component vector of uint) 0:78 vector swizzle ( temp 3-component vector of uint) 0:78 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:78 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'invocation' ( temp uint) 0:78 Constant: 0:78 2 (const int) 0:78 Sequence 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 2 (const int) 0:78 subgroupPartitionedMulNV ( global 3-component vector of uint) 0:78 vector swizzle ( temp 3-component vector of uint) 0:78 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 Constant: 0:78 2 (const int) 0:78 Constant: 0:78 2 (const int) 0:78 Sequence 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 2 (const int) 0:78 'ballot' ( temp 4-component vector of uint) 0:79 move second child to first child ( temp 4-component vector of uint) 0:79 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 2 (const int) 0:79 subgroupPartitionedMulNV ( global 4-component vector of uint) 0:79 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 3 (const int) 0:79 Constant: 0:79 2 (const int) 0:79 'ballot' ( temp 4-component vector of uint) 0:81 move second child to first child ( temp double) 0:81 direct index ( temp double) 0:81 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 subgroupPartitionedMulNV ( global double) 0:81 direct index ( temp double) 0:81 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 'ballot' ( temp 4-component vector of uint) 0:82 move second child to first child ( temp 2-component vector of double) 0:82 vector swizzle ( temp 2-component vector of double) 0:82 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 3 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 subgroupPartitionedMulNV ( global 2-component vector of double) 0:82 vector swizzle ( temp 2-component vector of double) 0:82 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 3 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 'ballot' ( temp 4-component vector of uint) 0:83 move second child to first child ( temp 3-component vector of double) 0:83 vector swizzle ( temp 3-component vector of double) 0:83 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:83 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'invocation' ( temp uint) 0:83 Constant: 0:83 3 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 subgroupPartitionedMulNV ( global 3-component vector of double) 0:83 vector swizzle ( temp 3-component vector of double) 0:83 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 3 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 'ballot' ( temp 4-component vector of uint) 0:84 move second child to first child ( temp 4-component vector of double) 0:84 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 3 (const int) 0:84 subgroupPartitionedMulNV ( global 4-component vector of double) 0:84 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 3 (const int) 0:84 Constant: 0:84 3 (const int) 0:84 'ballot' ( temp 4-component vector of uint) 0:86 move second child to first child ( temp float) 0:86 direct index ( temp float) 0:86 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:86 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'invocation' ( temp uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 subgroupPartitionedMinNV ( global float) 0:86 direct index ( temp float) 0:86 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 'ballot' ( temp 4-component vector of uint) 0:87 move second child to first child ( temp 2-component vector of float) 0:87 vector swizzle ( temp 2-component vector of float) 0:87 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:87 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'invocation' ( temp uint) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 subgroupPartitionedMinNV ( global 2-component vector of float) 0:87 vector swizzle ( temp 2-component vector of float) 0:87 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 'ballot' ( temp 4-component vector of uint) 0:88 move second child to first child ( temp 3-component vector of float) 0:88 vector swizzle ( temp 3-component vector of float) 0:88 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:88 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:88 'invocation' ( temp uint) 0:88 Constant: 0:88 0 (const int) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 subgroupPartitionedMinNV ( global 3-component vector of float) 0:88 vector swizzle ( temp 3-component vector of float) 0:88 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 'ballot' ( temp 4-component vector of uint) 0:89 move second child to first child ( temp 4-component vector of float) 0:89 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:89 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'invocation' ( temp uint) 0:89 Constant: 0:89 0 (const int) 0:89 subgroupPartitionedMinNV ( global 4-component vector of float) 0:89 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 Constant: 0:89 3 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 'ballot' ( temp 4-component vector of uint) 0:91 move second child to first child ( temp int) 0:91 direct index ( temp int) 0:91 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:91 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'invocation' ( temp uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 subgroupPartitionedMinNV ( global int) 0:91 direct index ( temp int) 0:91 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 'ballot' ( temp 4-component vector of uint) 0:92 move second child to first child ( temp 2-component vector of int) 0:92 vector swizzle ( temp 2-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:92 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'invocation' ( temp uint) 0:92 Constant: 0:92 1 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 subgroupPartitionedMinNV ( global 2-component vector of int) 0:92 vector swizzle ( temp 2-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 'ballot' ( temp 4-component vector of uint) 0:93 move second child to first child ( temp 3-component vector of int) 0:93 vector swizzle ( temp 3-component vector of int) 0:93 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:93 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:93 'invocation' ( temp uint) 0:93 Constant: 0:93 1 (const int) 0:93 Sequence 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 2 (const int) 0:93 subgroupPartitionedMinNV ( global 3-component vector of int) 0:93 vector swizzle ( temp 3-component vector of int) 0:93 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:93 Constant: 0:93 2 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Sequence 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 2 (const int) 0:93 'ballot' ( temp 4-component vector of uint) 0:94 move second child to first child ( temp 4-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:94 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'invocation' ( temp uint) 0:94 Constant: 0:94 1 (const int) 0:94 subgroupPartitionedMinNV ( global 4-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 'ballot' ( temp 4-component vector of uint) 0:96 move second child to first child ( temp uint) 0:96 direct index ( temp uint) 0:96 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:96 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'invocation' ( temp uint) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 subgroupPartitionedMinNV ( global uint) 0:96 direct index ( temp uint) 0:96 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 'ballot' ( temp 4-component vector of uint) 0:97 move second child to first child ( temp 2-component vector of uint) 0:97 vector swizzle ( temp 2-component vector of uint) 0:97 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:97 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'invocation' ( temp uint) 0:97 Constant: 0:97 2 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 subgroupPartitionedMinNV ( global 2-component vector of uint) 0:97 vector swizzle ( temp 2-component vector of uint) 0:97 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 'ballot' ( temp 4-component vector of uint) 0:98 move second child to first child ( temp 3-component vector of uint) 0:98 vector swizzle ( temp 3-component vector of uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:98 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:98 'invocation' ( temp uint) 0:98 Constant: 0:98 2 (const int) 0:98 Sequence 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 subgroupPartitionedMinNV ( global 3-component vector of uint) 0:98 vector swizzle ( temp 3-component vector of uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Sequence 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 'ballot' ( temp 4-component vector of uint) 0:99 move second child to first child ( temp 4-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:99 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'invocation' ( temp uint) 0:99 Constant: 0:99 2 (const int) 0:99 subgroupPartitionedMinNV ( global 4-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 Constant: 0:99 3 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 'ballot' ( temp 4-component vector of uint) 0:101 move second child to first child ( temp double) 0:101 direct index ( temp double) 0:101 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:101 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'invocation' ( temp uint) 0:101 Constant: 0:101 3 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 subgroupPartitionedMinNV ( global double) 0:101 direct index ( temp double) 0:101 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 3 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 'ballot' ( temp 4-component vector of uint) 0:102 move second child to first child ( temp 2-component vector of double) 0:102 vector swizzle ( temp 2-component vector of double) 0:102 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:102 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'invocation' ( temp uint) 0:102 Constant: 0:102 3 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 subgroupPartitionedMinNV ( global 2-component vector of double) 0:102 vector swizzle ( temp 2-component vector of double) 0:102 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 3 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 'ballot' ( temp 4-component vector of uint) 0:103 move second child to first child ( temp 3-component vector of double) 0:103 vector swizzle ( temp 3-component vector of double) 0:103 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:103 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:103 'invocation' ( temp uint) 0:103 Constant: 0:103 3 (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:103 subgroupPartitionedMinNV ( global 3-component vector of double) 0:103 vector swizzle ( temp 3-component vector of double) 0:103 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:103 Constant: 0:103 2 (const int) 0:103 Constant: 0:103 3 (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:103 'ballot' ( temp 4-component vector of uint) 0:104 move second child to first child ( temp 4-component vector of double) 0:104 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:104 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'invocation' ( temp uint) 0:104 Constant: 0:104 3 (const int) 0:104 subgroupPartitionedMinNV ( global 4-component vector of double) 0:104 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 Constant: 0:104 3 (const int) 0:104 Constant: 0:104 3 (const int) 0:104 'ballot' ( temp 4-component vector of uint) 0:106 move second child to first child ( temp float) 0:106 direct index ( temp float) 0:106 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:106 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'invocation' ( temp uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 subgroupPartitionedMaxNV ( global float) 0:106 direct index ( temp float) 0:106 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 'ballot' ( temp 4-component vector of uint) 0:107 move second child to first child ( temp 2-component vector of float) 0:107 vector swizzle ( temp 2-component vector of float) 0:107 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:107 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'invocation' ( temp uint) 0:107 Constant: 0:107 0 (const int) 0:107 Sequence 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 1 (const int) 0:107 subgroupPartitionedMaxNV ( global 2-component vector of float) 0:107 vector swizzle ( temp 2-component vector of float) 0:107 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 Constant: 0:107 1 (const int) 0:107 Constant: 0:107 0 (const int) 0:107 Sequence 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 1 (const int) 0:107 'ballot' ( temp 4-component vector of uint) 0:108 move second child to first child ( temp 3-component vector of float) 0:108 vector swizzle ( temp 3-component vector of float) 0:108 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:108 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:108 'invocation' ( temp uint) 0:108 Constant: 0:108 0 (const int) 0:108 Sequence 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 2 (const int) 0:108 subgroupPartitionedMaxNV ( global 3-component vector of float) 0:108 vector swizzle ( temp 3-component vector of float) 0:108 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:108 Constant: 0:108 2 (const int) 0:108 Constant: 0:108 0 (const int) 0:108 Sequence 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 2 (const int) 0:108 'ballot' ( temp 4-component vector of uint) 0:109 move second child to first child ( temp 4-component vector of float) 0:109 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:109 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'invocation' ( temp uint) 0:109 Constant: 0:109 0 (const int) 0:109 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:109 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 Constant: 0:109 3 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 'ballot' ( temp 4-component vector of uint) 0:111 move second child to first child ( temp int) 0:111 direct index ( temp int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'invocation' ( temp uint) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 subgroupPartitionedMaxNV ( global int) 0:111 direct index ( temp int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 'ballot' ( temp 4-component vector of uint) 0:112 move second child to first child ( temp 2-component vector of int) 0:112 vector swizzle ( temp 2-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'invocation' ( temp uint) 0:112 Constant: 0:112 1 (const int) 0:112 Sequence 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 subgroupPartitionedMaxNV ( global 2-component vector of int) 0:112 vector swizzle ( temp 2-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 Sequence 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 'ballot' ( temp 4-component vector of uint) 0:113 move second child to first child ( temp 3-component vector of int) 0:113 vector swizzle ( temp 3-component vector of int) 0:113 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:113 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:113 'invocation' ( temp uint) 0:113 Constant: 0:113 1 (const int) 0:113 Sequence 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 subgroupPartitionedMaxNV ( global 3-component vector of int) 0:113 vector swizzle ( temp 3-component vector of int) 0:113 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Sequence 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 'ballot' ( temp 4-component vector of uint) 0:114 move second child to first child ( temp 4-component vector of int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'invocation' ( temp uint) 0:114 Constant: 0:114 1 (const int) 0:114 subgroupPartitionedMaxNV ( global 4-component vector of int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 Constant: 0:114 3 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 'ballot' ( temp 4-component vector of uint) 0:116 move second child to first child ( temp uint) 0:116 direct index ( temp uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:116 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'invocation' ( temp uint) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 subgroupPartitionedMaxNV ( global uint) 0:116 direct index ( temp uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 'ballot' ( temp 4-component vector of uint) 0:117 move second child to first child ( temp 2-component vector of uint) 0:117 vector swizzle ( temp 2-component vector of uint) 0:117 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:117 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'invocation' ( temp uint) 0:117 Constant: 0:117 2 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 subgroupPartitionedMaxNV ( global 2-component vector of uint) 0:117 vector swizzle ( temp 2-component vector of uint) 0:117 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 'ballot' ( temp 4-component vector of uint) 0:118 move second child to first child ( temp 3-component vector of uint) 0:118 vector swizzle ( temp 3-component vector of uint) 0:118 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:118 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:118 'invocation' ( temp uint) 0:118 Constant: 0:118 2 (const int) 0:118 Sequence 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 2 (const int) 0:118 subgroupPartitionedMaxNV ( global 3-component vector of uint) 0:118 vector swizzle ( temp 3-component vector of uint) 0:118 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:118 Constant: 0:118 2 (const int) 0:118 Constant: 0:118 2 (const int) 0:118 Sequence 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 2 (const int) 0:118 'ballot' ( temp 4-component vector of uint) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'invocation' ( temp uint) 0:119 Constant: 0:119 2 (const int) 0:119 subgroupPartitionedMaxNV ( global 4-component vector of uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 Constant: 0:119 3 (const int) 0:119 Constant: 0:119 2 (const int) 0:119 'ballot' ( temp 4-component vector of uint) 0:121 move second child to first child ( temp double) 0:121 direct index ( temp double) 0:121 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:121 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'invocation' ( temp uint) 0:121 Constant: 0:121 3 (const int) 0:121 Constant: 0:121 0 (const int) 0:121 subgroupPartitionedMaxNV ( global double) 0:121 direct index ( temp double) 0:121 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 3 (const int) 0:121 Constant: 0:121 0 (const int) 0:121 'ballot' ( temp 4-component vector of uint) 0:122 move second child to first child ( temp 2-component vector of double) 0:122 vector swizzle ( temp 2-component vector of double) 0:122 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:122 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'invocation' ( temp uint) 0:122 Constant: 0:122 3 (const int) 0:122 Sequence 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 0:122 subgroupPartitionedMaxNV ( global 2-component vector of double) 0:122 vector swizzle ( temp 2-component vector of double) 0:122 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 Constant: 0:122 1 (const int) 0:122 Constant: 0:122 3 (const int) 0:122 Sequence 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 0:122 'ballot' ( temp 4-component vector of uint) 0:123 move second child to first child ( temp 3-component vector of double) 0:123 vector swizzle ( temp 3-component vector of double) 0:123 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:123 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:123 'invocation' ( temp uint) 0:123 Constant: 0:123 3 (const int) 0:123 Sequence 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 1 (const int) 0:123 Constant: 0:123 2 (const int) 0:123 subgroupPartitionedMaxNV ( global 3-component vector of double) 0:123 vector swizzle ( temp 3-component vector of double) 0:123 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:123 Constant: 0:123 2 (const int) 0:123 Constant: 0:123 3 (const int) 0:123 Sequence 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 1 (const int) 0:123 Constant: 0:123 2 (const int) 0:123 'ballot' ( temp 4-component vector of uint) 0:124 move second child to first child ( temp 4-component vector of double) 0:124 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:124 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'invocation' ( temp uint) 0:124 Constant: 0:124 3 (const int) 0:124 subgroupPartitionedMaxNV ( global 4-component vector of double) 0:124 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 Constant: 0:124 3 (const int) 0:124 Constant: 0:124 3 (const int) 0:124 'ballot' ( temp 4-component vector of uint) 0:126 move second child to first child ( temp int) 0:126 direct index ( temp int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'invocation' ( temp uint) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 subgroupPartitionedAndNV ( global int) 0:126 direct index ( temp int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 'ballot' ( temp 4-component vector of uint) 0:127 move second child to first child ( temp 2-component vector of int) 0:127 vector swizzle ( temp 2-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'invocation' ( temp uint) 0:127 Constant: 0:127 1 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 subgroupPartitionedAndNV ( global 2-component vector of int) 0:127 vector swizzle ( temp 2-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 'ballot' ( temp 4-component vector of uint) 0:128 move second child to first child ( temp 3-component vector of int) 0:128 vector swizzle ( temp 3-component vector of int) 0:128 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:128 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:128 'invocation' ( temp uint) 0:128 Constant: 0:128 1 (const int) 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 subgroupPartitionedAndNV ( global 3-component vector of int) 0:128 vector swizzle ( temp 3-component vector of int) 0:128 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:128 Constant: 0:128 2 (const int) 0:128 Constant: 0:128 1 (const int) 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 'ballot' ( temp 4-component vector of uint) 0:129 move second child to first child ( temp 4-component vector of int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'invocation' ( temp uint) 0:129 Constant: 0:129 1 (const int) 0:129 subgroupPartitionedAndNV ( global 4-component vector of int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 Constant: 0:129 3 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 'ballot' ( temp 4-component vector of uint) 0:131 move second child to first child ( temp uint) 0:131 direct index ( temp uint) 0:131 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:131 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'invocation' ( temp uint) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 0 (const int) 0:131 subgroupPartitionedAndNV ( global uint) 0:131 direct index ( temp uint) 0:131 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 0 (const int) 0:131 'ballot' ( temp 4-component vector of uint) 0:132 move second child to first child ( temp 2-component vector of uint) 0:132 vector swizzle ( temp 2-component vector of uint) 0:132 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:132 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'invocation' ( temp uint) 0:132 Constant: 0:132 2 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 subgroupPartitionedAndNV ( global 2-component vector of uint) 0:132 vector swizzle ( temp 2-component vector of uint) 0:132 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 'ballot' ( temp 4-component vector of uint) 0:133 move second child to first child ( temp 3-component vector of uint) 0:133 vector swizzle ( temp 3-component vector of uint) 0:133 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:133 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:133 'invocation' ( temp uint) 0:133 Constant: 0:133 2 (const int) 0:133 Sequence 0:133 Constant: 0:133 0 (const int) 0:133 Constant: 0:133 1 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 subgroupPartitionedAndNV ( global 3-component vector of uint) 0:133 vector swizzle ( temp 3-component vector of uint) 0:133 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:133 Constant: 0:133 2 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 Sequence 0:133 Constant: 0:133 0 (const int) 0:133 Constant: 0:133 1 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 'ballot' ( temp 4-component vector of uint) 0:134 move second child to first child ( temp 4-component vector of uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'invocation' ( temp uint) 0:134 Constant: 0:134 2 (const int) 0:134 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 Constant: 0:134 3 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 'ballot' ( temp 4-component vector of uint) 0:136 move second child to first child ( temp int) 0:136 direct index ( temp int) 0:136 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:136 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'invocation' ( temp uint) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 Convert bool to int ( temp int) 0:136 subgroupPartitionedAndNV ( global bool) 0:136 Compare Less Than ( temp bool) 0:136 direct index ( temp int) 0:136 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 'ballot' ( temp 4-component vector of uint) 0:137 move second child to first child ( temp 2-component vector of int) 0:137 vector swizzle ( temp 2-component vector of int) 0:137 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:137 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'invocation' ( temp uint) 0:137 Constant: 0:137 1 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Convert bool to int ( temp 2-component vector of int) 0:137 subgroupPartitionedAndNV ( global 2-component vector of bool) 0:137 Compare Less Than ( global 2-component vector of bool) 0:137 vector swizzle ( temp 2-component vector of int) 0:137 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 0 (const int) 0:137 0 (const int) 0:137 'ballot' ( temp 4-component vector of uint) 0:138 move second child to first child ( temp 3-component vector of int) 0:138 vector swizzle ( temp 3-component vector of int) 0:138 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:138 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:138 'invocation' ( temp uint) 0:138 Constant: 0:138 1 (const int) 0:138 Sequence 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 1 (const int) 0:138 Constant: 0:138 2 (const int) 0:138 Convert bool to int ( temp 3-component vector of int) 0:138 subgroupPartitionedAndNV ( global 3-component vector of bool) 0:138 Compare Less Than ( global 3-component vector of bool) 0:138 vector swizzle ( temp 3-component vector of int) 0:138 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:138 Constant: 0:138 1 (const int) 0:138 Constant: 0:138 1 (const int) 0:138 Sequence 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 1 (const int) 0:138 Constant: 0:138 2 (const int) 0:138 Constant: 0:138 0 (const int) 0:138 0 (const int) 0:138 0 (const int) 0:138 'ballot' ( temp 4-component vector of uint) 0:139 move second child to first child ( temp 4-component vector of int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'invocation' ( temp uint) 0:139 Constant: 0:139 1 (const int) 0:139 Convert bool to int ( temp 4-component vector of int) 0:139 subgroupPartitionedAndNV ( global 4-component vector of bool) 0:139 Compare Less Than ( global 4-component vector of bool) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 0 (const int) 0:139 0 (const int) 0:139 0 (const int) 0:139 'ballot' ( temp 4-component vector of uint) 0:141 move second child to first child ( temp int) 0:141 direct index ( temp int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'invocation' ( temp uint) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 subgroupPartitionedOrNV ( global int) 0:141 direct index ( temp int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 'ballot' ( temp 4-component vector of uint) 0:142 move second child to first child ( temp 2-component vector of int) 0:142 vector swizzle ( temp 2-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'invocation' ( temp uint) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 subgroupPartitionedOrNV ( global 2-component vector of int) 0:142 vector swizzle ( temp 2-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 'ballot' ( temp 4-component vector of uint) 0:143 move second child to first child ( temp 3-component vector of int) 0:143 vector swizzle ( temp 3-component vector of int) 0:143 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:143 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:143 'invocation' ( temp uint) 0:143 Constant: 0:143 1 (const int) 0:143 Sequence 0:143 Constant: 0:143 0 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 2 (const int) 0:143 subgroupPartitionedOrNV ( global 3-component vector of int) 0:143 vector swizzle ( temp 3-component vector of int) 0:143 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:143 Constant: 0:143 2 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Sequence 0:143 Constant: 0:143 0 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 2 (const int) 0:143 'ballot' ( temp 4-component vector of uint) 0:144 move second child to first child ( temp 4-component vector of int) 0:144 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:144 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'invocation' ( temp uint) 0:144 Constant: 0:144 1 (const int) 0:144 subgroupPartitionedOrNV ( global 4-component vector of int) 0:144 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:144 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 Constant: 0:144 3 (const int) 0:144 Constant: 0:144 1 (const int) 0:144 'ballot' ( temp 4-component vector of uint) 0:146 move second child to first child ( temp uint) 0:146 direct index ( temp uint) 0:146 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:146 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'invocation' ( temp uint) 0:146 Constant: 0:146 2 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 subgroupPartitionedOrNV ( global uint) 0:146 direct index ( temp uint) 0:146 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 2 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 'ballot' ( temp 4-component vector of uint) 0:147 move second child to first child ( temp 2-component vector of uint) 0:147 vector swizzle ( temp 2-component vector of uint) 0:147 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:147 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'invocation' ( temp uint) 0:147 Constant: 0:147 2 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 subgroupPartitionedOrNV ( global 2-component vector of uint) 0:147 vector swizzle ( temp 2-component vector of uint) 0:147 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:147 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 'ballot' ( temp 4-component vector of uint) 0:148 move second child to first child ( temp 3-component vector of uint) 0:148 vector swizzle ( temp 3-component vector of uint) 0:148 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:148 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:148 'invocation' ( temp uint) 0:148 Constant: 0:148 2 (const int) 0:148 Sequence 0:148 Constant: 0:148 0 (const int) 0:148 Constant: 0:148 1 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 subgroupPartitionedOrNV ( global 3-component vector of uint) 0:148 vector swizzle ( temp 3-component vector of uint) 0:148 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:148 Constant: 0:148 2 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 Sequence 0:148 Constant: 0:148 0 (const int) 0:148 Constant: 0:148 1 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 'ballot' ( temp 4-component vector of uint) 0:149 move second child to first child ( temp 4-component vector of uint) 0:149 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:149 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'invocation' ( temp uint) 0:149 Constant: 0:149 2 (const int) 0:149 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:149 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:149 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 Constant: 0:149 3 (const int) 0:149 Constant: 0:149 2 (const int) 0:149 'ballot' ( temp 4-component vector of uint) 0:151 move second child to first child ( temp int) 0:151 direct index ( temp int) 0:151 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:151 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'invocation' ( temp uint) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 0 (const int) 0:151 Convert bool to int ( temp int) 0:151 subgroupPartitionedOrNV ( global bool) 0:151 Compare Less Than ( temp bool) 0:151 direct index ( temp int) 0:151 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 0 (const int) 0:151 'ballot' ( temp 4-component vector of uint) 0:152 move second child to first child ( temp 2-component vector of int) 0:152 vector swizzle ( temp 2-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:152 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'invocation' ( temp uint) 0:152 Constant: 0:152 1 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Convert bool to int ( temp 2-component vector of int) 0:152 subgroupPartitionedOrNV ( global 2-component vector of bool) 0:152 Compare Less Than ( global 2-component vector of bool) 0:152 vector swizzle ( temp 2-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:152 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 0 (const int) 0:152 0 (const int) 0:152 'ballot' ( temp 4-component vector of uint) 0:153 move second child to first child ( temp 3-component vector of int) 0:153 vector swizzle ( temp 3-component vector of int) 0:153 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:153 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:153 'invocation' ( temp uint) 0:153 Constant: 0:153 1 (const int) 0:153 Sequence 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 Constant: 0:153 2 (const int) 0:153 Convert bool to int ( temp 3-component vector of int) 0:153 subgroupPartitionedOrNV ( global 3-component vector of bool) 0:153 Compare Less Than ( global 3-component vector of bool) 0:153 vector swizzle ( temp 3-component vector of int) 0:153 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:153 Constant: 0:153 1 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 Sequence 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 Constant: 0:153 2 (const int) 0:153 Constant: 0:153 0 (const int) 0:153 0 (const int) 0:153 0 (const int) 0:153 'ballot' ( temp 4-component vector of uint) 0:154 move second child to first child ( temp 4-component vector of int) 0:154 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:154 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'invocation' ( temp uint) 0:154 Constant: 0:154 1 (const int) 0:154 Convert bool to int ( temp 4-component vector of int) 0:154 subgroupPartitionedOrNV ( global 4-component vector of bool) 0:154 Compare Less Than ( global 4-component vector of bool) 0:154 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:154 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 Constant: 0:154 1 (const int) 0:154 Constant: 0:154 1 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 0 (const int) 0:154 0 (const int) 0:154 0 (const int) 0:154 'ballot' ( temp 4-component vector of uint) 0:156 move second child to first child ( temp int) 0:156 direct index ( temp int) 0:156 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:156 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'invocation' ( temp uint) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 0 (const int) 0:156 subgroupPartitionedXorNV ( global int) 0:156 direct index ( temp int) 0:156 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 0 (const int) 0:156 'ballot' ( temp 4-component vector of uint) 0:157 move second child to first child ( temp 2-component vector of int) 0:157 vector swizzle ( temp 2-component vector of int) 0:157 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:157 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'invocation' ( temp uint) 0:157 Constant: 0:157 1 (const int) 0:157 Sequence 0:157 Constant: 0:157 0 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 subgroupPartitionedXorNV ( global 2-component vector of int) 0:157 vector swizzle ( temp 2-component vector of int) 0:157 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:157 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 Constant: 0:157 1 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 Sequence 0:157 Constant: 0:157 0 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 'ballot' ( temp 4-component vector of uint) 0:158 move second child to first child ( temp 3-component vector of int) 0:158 vector swizzle ( temp 3-component vector of int) 0:158 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:158 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:158 'invocation' ( temp uint) 0:158 Constant: 0:158 1 (const int) 0:158 Sequence 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Constant: 0:158 2 (const int) 0:158 subgroupPartitionedXorNV ( global 3-component vector of int) 0:158 vector swizzle ( temp 3-component vector of int) 0:158 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:158 Constant: 0:158 2 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Sequence 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Constant: 0:158 2 (const int) 0:158 'ballot' ( temp 4-component vector of uint) 0:159 move second child to first child ( temp 4-component vector of int) 0:159 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:159 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'invocation' ( temp uint) 0:159 Constant: 0:159 1 (const int) 0:159 subgroupPartitionedXorNV ( global 4-component vector of int) 0:159 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:159 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 Constant: 0:159 3 (const int) 0:159 Constant: 0:159 1 (const int) 0:159 'ballot' ( temp 4-component vector of uint) 0:161 move second child to first child ( temp uint) 0:161 direct index ( temp uint) 0:161 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:161 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'invocation' ( temp uint) 0:161 Constant: 0:161 2 (const int) 0:161 Constant: 0:161 0 (const int) 0:161 subgroupPartitionedXorNV ( global uint) 0:161 direct index ( temp uint) 0:161 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 2 (const int) 0:161 Constant: 0:161 0 (const int) 0:161 'ballot' ( temp 4-component vector of uint) 0:162 move second child to first child ( temp 2-component vector of uint) 0:162 vector swizzle ( temp 2-component vector of uint) 0:162 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:162 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'invocation' ( temp uint) 0:162 Constant: 0:162 2 (const int) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 subgroupPartitionedXorNV ( global 2-component vector of uint) 0:162 vector swizzle ( temp 2-component vector of uint) 0:162 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:162 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 'ballot' ( temp 4-component vector of uint) 0:163 move second child to first child ( temp 3-component vector of uint) 0:163 vector swizzle ( temp 3-component vector of uint) 0:163 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:163 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:163 'invocation' ( temp uint) 0:163 Constant: 0:163 2 (const int) 0:163 Sequence 0:163 Constant: 0:163 0 (const int) 0:163 Constant: 0:163 1 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 subgroupPartitionedXorNV ( global 3-component vector of uint) 0:163 vector swizzle ( temp 3-component vector of uint) 0:163 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:163 Constant: 0:163 2 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 Sequence 0:163 Constant: 0:163 0 (const int) 0:163 Constant: 0:163 1 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 'ballot' ( temp 4-component vector of uint) 0:164 move second child to first child ( temp 4-component vector of uint) 0:164 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:164 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'invocation' ( temp uint) 0:164 Constant: 0:164 2 (const int) 0:164 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:164 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:164 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 Constant: 0:164 3 (const int) 0:164 Constant: 0:164 2 (const int) 0:164 'ballot' ( temp 4-component vector of uint) 0:166 move second child to first child ( temp int) 0:166 direct index ( temp int) 0:166 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:166 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'invocation' ( temp uint) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 0 (const int) 0:166 Convert bool to int ( temp int) 0:166 subgroupPartitionedXorNV ( global bool) 0:166 Compare Less Than ( temp bool) 0:166 direct index ( temp int) 0:166 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 0 (const int) 0:166 'ballot' ( temp 4-component vector of uint) 0:167 move second child to first child ( temp 2-component vector of int) 0:167 vector swizzle ( temp 2-component vector of int) 0:167 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:167 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'invocation' ( temp uint) 0:167 Constant: 0:167 1 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Convert bool to int ( temp 2-component vector of int) 0:167 subgroupPartitionedXorNV ( global 2-component vector of bool) 0:167 Compare Less Than ( global 2-component vector of bool) 0:167 vector swizzle ( temp 2-component vector of int) 0:167 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:167 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 0 (const int) 0:167 0 (const int) 0:167 'ballot' ( temp 4-component vector of uint) 0:168 move second child to first child ( temp 3-component vector of int) 0:168 vector swizzle ( temp 3-component vector of int) 0:168 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:168 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:168 'invocation' ( temp uint) 0:168 Constant: 0:168 1 (const int) 0:168 Sequence 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 Constant: 0:168 2 (const int) 0:168 Convert bool to int ( temp 3-component vector of int) 0:168 subgroupPartitionedXorNV ( global 3-component vector of bool) 0:168 Compare Less Than ( global 3-component vector of bool) 0:168 vector swizzle ( temp 3-component vector of int) 0:168 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:168 Constant: 0:168 1 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 Sequence 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 Constant: 0:168 2 (const int) 0:168 Constant: 0:168 0 (const int) 0:168 0 (const int) 0:168 0 (const int) 0:168 'ballot' ( temp 4-component vector of uint) 0:169 move second child to first child ( temp 4-component vector of int) 0:169 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:169 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'invocation' ( temp uint) 0:169 Constant: 0:169 1 (const int) 0:169 Convert bool to int ( temp 4-component vector of int) 0:169 subgroupPartitionedXorNV ( global 4-component vector of bool) 0:169 Compare Less Than ( global 4-component vector of bool) 0:169 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:169 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 0 (const int) 0:169 0 (const int) 0:169 0 (const int) 0:169 0 (const int) 0:169 'ballot' ( temp 4-component vector of uint) 0:171 move second child to first child ( temp float) 0:171 direct index ( temp float) 0:171 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:171 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'invocation' ( temp uint) 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 0 (const int) 0:171 subgroupPartitionedInclusiveAddNV ( global float) 0:171 direct index ( temp float) 0:171 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 0 (const int) 0:171 'ballot' ( temp 4-component vector of uint) 0:172 move second child to first child ( temp 2-component vector of float) 0:172 vector swizzle ( temp 2-component vector of float) 0:172 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:172 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'invocation' ( temp uint) 0:172 Constant: 0:172 0 (const int) 0:172 Sequence 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 1 (const int) 0:172 subgroupPartitionedInclusiveAddNV ( global 2-component vector of float) 0:172 vector swizzle ( temp 2-component vector of float) 0:172 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:172 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 Constant: 0:172 1 (const int) 0:172 Constant: 0:172 0 (const int) 0:172 Sequence 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 1 (const int) 0:172 'ballot' ( temp 4-component vector of uint) 0:173 move second child to first child ( temp 3-component vector of float) 0:173 vector swizzle ( temp 3-component vector of float) 0:173 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:173 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:173 'invocation' ( temp uint) 0:173 Constant: 0:173 0 (const int) 0:173 Sequence 0:173 Constant: 0:173 0 (const int) 0:173 Constant: 0:173 1 (const int) 0:173 Constant: 0:173 2 (const int) 0:173 subgroupPartitionedInclusiveAddNV ( global 3-component vector of float) 0:173 vector swizzle ( temp 3-component vector of float) 0:173 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:173 Constant: 0:173 2 (const int) 0:173 Constant: 0:173 0 (const int) 0:173 Sequence 0:173 Constant: 0:173 0 (const int) 0:173 Constant: 0:173 1 (const int) 0:173 Constant: 0:173 2 (const int) 0:173 'ballot' ( temp 4-component vector of uint) 0:174 move second child to first child ( temp 4-component vector of float) 0:174 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:174 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'invocation' ( temp uint) 0:174 Constant: 0:174 0 (const int) 0:174 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:174 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:174 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 Constant: 0:174 3 (const int) 0:174 Constant: 0:174 0 (const int) 0:174 'ballot' ( temp 4-component vector of uint) 0:176 move second child to first child ( temp int) 0:176 direct index ( temp int) 0:176 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:176 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'invocation' ( temp uint) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 0 (const int) 0:176 subgroupPartitionedInclusiveAddNV ( global int) 0:176 direct index ( temp int) 0:176 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 0 (const int) 0:176 'ballot' ( temp 4-component vector of uint) 0:177 move second child to first child ( temp 2-component vector of int) 0:177 vector swizzle ( temp 2-component vector of int) 0:177 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:177 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'invocation' ( temp uint) 0:177 Constant: 0:177 1 (const int) 0:177 Sequence 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 subgroupPartitionedInclusiveAddNV ( global 2-component vector of int) 0:177 vector swizzle ( temp 2-component vector of int) 0:177 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:177 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 Constant: 0:177 1 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 Sequence 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 'ballot' ( temp 4-component vector of uint) 0:178 move second child to first child ( temp 3-component vector of int) 0:178 vector swizzle ( temp 3-component vector of int) 0:178 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:178 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:178 'invocation' ( temp uint) 0:178 Constant: 0:178 1 (const int) 0:178 Sequence 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 1 (const int) 0:178 Constant: 0:178 2 (const int) 0:178 subgroupPartitionedInclusiveAddNV ( global 3-component vector of int) 0:178 vector swizzle ( temp 3-component vector of int) 0:178 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:178 Constant: 0:178 2 (const int) 0:178 Constant: 0:178 1 (const int) 0:178 Sequence 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 1 (const int) 0:178 Constant: 0:178 2 (const int) 0:178 'ballot' ( temp 4-component vector of uint) 0:179 move second child to first child ( temp 4-component vector of int) 0:179 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:179 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'invocation' ( temp uint) 0:179 Constant: 0:179 1 (const int) 0:179 subgroupPartitionedInclusiveAddNV ( global 4-component vector of int) 0:179 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:179 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 Constant: 0:179 3 (const int) 0:179 Constant: 0:179 1 (const int) 0:179 'ballot' ( temp 4-component vector of uint) 0:181 move second child to first child ( temp uint) 0:181 direct index ( temp uint) 0:181 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:181 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'invocation' ( temp uint) 0:181 Constant: 0:181 2 (const int) 0:181 Constant: 0:181 0 (const int) 0:181 subgroupPartitionedInclusiveAddNV ( global uint) 0:181 direct index ( temp uint) 0:181 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 2 (const int) 0:181 Constant: 0:181 0 (const int) 0:181 'ballot' ( temp 4-component vector of uint) 0:182 move second child to first child ( temp 2-component vector of uint) 0:182 vector swizzle ( temp 2-component vector of uint) 0:182 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:182 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'invocation' ( temp uint) 0:182 Constant: 0:182 2 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 subgroupPartitionedInclusiveAddNV ( global 2-component vector of uint) 0:182 vector swizzle ( temp 2-component vector of uint) 0:182 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:182 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 Constant: 0:182 1 (const int) 0:182 Constant: 0:182 2 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 'ballot' ( temp 4-component vector of uint) 0:183 move second child to first child ( temp 3-component vector of uint) 0:183 vector swizzle ( temp 3-component vector of uint) 0:183 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:183 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:183 'invocation' ( temp uint) 0:183 Constant: 0:183 2 (const int) 0:183 Sequence 0:183 Constant: 0:183 0 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 2 (const int) 0:183 subgroupPartitionedInclusiveAddNV ( global 3-component vector of uint) 0:183 vector swizzle ( temp 3-component vector of uint) 0:183 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:183 Constant: 0:183 2 (const int) 0:183 Constant: 0:183 2 (const int) 0:183 Sequence 0:183 Constant: 0:183 0 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 2 (const int) 0:183 'ballot' ( temp 4-component vector of uint) 0:184 move second child to first child ( temp 4-component vector of uint) 0:184 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:184 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'invocation' ( temp uint) 0:184 Constant: 0:184 2 (const int) 0:184 subgroupPartitionedInclusiveAddNV ( global 4-component vector of uint) 0:184 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:184 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 Constant: 0:184 3 (const int) 0:184 Constant: 0:184 2 (const int) 0:184 'ballot' ( temp 4-component vector of uint) 0:186 move second child to first child ( temp double) 0:186 direct index ( temp double) 0:186 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:186 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'invocation' ( temp uint) 0:186 Constant: 0:186 3 (const int) 0:186 Constant: 0:186 0 (const int) 0:186 subgroupPartitionedInclusiveAddNV ( global double) 0:186 direct index ( temp double) 0:186 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 3 (const int) 0:186 Constant: 0:186 0 (const int) 0:186 'ballot' ( temp 4-component vector of uint) 0:187 move second child to first child ( temp 2-component vector of double) 0:187 vector swizzle ( temp 2-component vector of double) 0:187 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:187 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'invocation' ( temp uint) 0:187 Constant: 0:187 3 (const int) 0:187 Sequence 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 1 (const int) 0:187 subgroupPartitionedInclusiveAddNV ( global 2-component vector of double) 0:187 vector swizzle ( temp 2-component vector of double) 0:187 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:187 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 Constant: 0:187 1 (const int) 0:187 Constant: 0:187 3 (const int) 0:187 Sequence 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 1 (const int) 0:187 'ballot' ( temp 4-component vector of uint) 0:188 move second child to first child ( temp 3-component vector of double) 0:188 vector swizzle ( temp 3-component vector of double) 0:188 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:188 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:188 'invocation' ( temp uint) 0:188 Constant: 0:188 3 (const int) 0:188 Sequence 0:188 Constant: 0:188 0 (const int) 0:188 Constant: 0:188 1 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 subgroupPartitionedInclusiveAddNV ( global 3-component vector of double) 0:188 vector swizzle ( temp 3-component vector of double) 0:188 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:188 Constant: 0:188 2 (const int) 0:188 Constant: 0:188 3 (const int) 0:188 Sequence 0:188 Constant: 0:188 0 (const int) 0:188 Constant: 0:188 1 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 'ballot' ( temp 4-component vector of uint) 0:189 move second child to first child ( temp 4-component vector of double) 0:189 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:189 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'invocation' ( temp uint) 0:189 Constant: 0:189 3 (const int) 0:189 subgroupPartitionedInclusiveAddNV ( global 4-component vector of double) 0:189 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:189 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 Constant: 0:189 3 (const int) 0:189 Constant: 0:189 3 (const int) 0:189 'ballot' ( temp 4-component vector of uint) 0:191 move second child to first child ( temp float) 0:191 direct index ( temp float) 0:191 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:191 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'invocation' ( temp uint) 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 subgroupPartitionedInclusiveMulNV ( global float) 0:191 direct index ( temp float) 0:191 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 'ballot' ( temp 4-component vector of uint) 0:192 move second child to first child ( temp 2-component vector of float) 0:192 vector swizzle ( temp 2-component vector of float) 0:192 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:192 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'invocation' ( temp uint) 0:192 Constant: 0:192 0 (const int) 0:192 Sequence 0:192 Constant: 0:192 0 (const int) 0:192 Constant: 0:192 1 (const int) 0:192 subgroupPartitionedInclusiveMulNV ( global 2-component vector of float) 0:192 vector swizzle ( temp 2-component vector of float) 0:192 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:192 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 Constant: 0:192 1 (const int) 0:192 Constant: 0:192 0 (const int) 0:192 Sequence 0:192 Constant: 0:192 0 (const int) 0:192 Constant: 0:192 1 (const int) 0:192 'ballot' ( temp 4-component vector of uint) 0:193 move second child to first child ( temp 3-component vector of float) 0:193 vector swizzle ( temp 3-component vector of float) 0:193 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:193 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:193 'invocation' ( temp uint) 0:193 Constant: 0:193 0 (const int) 0:193 Sequence 0:193 Constant: 0:193 0 (const int) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 2 (const int) 0:193 subgroupPartitionedInclusiveMulNV ( global 3-component vector of float) 0:193 vector swizzle ( temp 3-component vector of float) 0:193 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:193 Constant: 0:193 2 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 Sequence 0:193 Constant: 0:193 0 (const int) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 2 (const int) 0:193 'ballot' ( temp 4-component vector of uint) 0:194 move second child to first child ( temp 4-component vector of float) 0:194 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:194 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'invocation' ( temp uint) 0:194 Constant: 0:194 0 (const int) 0:194 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:194 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:194 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 Constant: 0:194 3 (const int) 0:194 Constant: 0:194 0 (const int) 0:194 'ballot' ( temp 4-component vector of uint) 0:196 move second child to first child ( temp int) 0:196 direct index ( temp int) 0:196 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:196 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'invocation' ( temp uint) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 0 (const int) 0:196 subgroupPartitionedInclusiveMulNV ( global int) 0:196 direct index ( temp int) 0:196 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 0 (const int) 0:196 'ballot' ( temp 4-component vector of uint) 0:197 move second child to first child ( temp 2-component vector of int) 0:197 vector swizzle ( temp 2-component vector of int) 0:197 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:197 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'invocation' ( temp uint) 0:197 Constant: 0:197 1 (const int) 0:197 Sequence 0:197 Constant: 0:197 0 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 subgroupPartitionedInclusiveMulNV ( global 2-component vector of int) 0:197 vector swizzle ( temp 2-component vector of int) 0:197 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:197 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Sequence 0:197 Constant: 0:197 0 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 'ballot' ( temp 4-component vector of uint) 0:198 move second child to first child ( temp 3-component vector of int) 0:198 vector swizzle ( temp 3-component vector of int) 0:198 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:198 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:198 'invocation' ( temp uint) 0:198 Constant: 0:198 1 (const int) 0:198 Sequence 0:198 Constant: 0:198 0 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 2 (const int) 0:198 subgroupPartitionedInclusiveMulNV ( global 3-component vector of int) 0:198 vector swizzle ( temp 3-component vector of int) 0:198 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:198 Constant: 0:198 2 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Sequence 0:198 Constant: 0:198 0 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 2 (const int) 0:198 'ballot' ( temp 4-component vector of uint) 0:199 move second child to first child ( temp 4-component vector of int) 0:199 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:199 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'invocation' ( temp uint) 0:199 Constant: 0:199 1 (const int) 0:199 subgroupPartitionedInclusiveMulNV ( global 4-component vector of int) 0:199 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:199 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 Constant: 0:199 3 (const int) 0:199 Constant: 0:199 1 (const int) 0:199 'ballot' ( temp 4-component vector of uint) 0:201 move second child to first child ( temp uint) 0:201 direct index ( temp uint) 0:201 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:201 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'invocation' ( temp uint) 0:201 Constant: 0:201 2 (const int) 0:201 Constant: 0:201 0 (const int) 0:201 subgroupPartitionedInclusiveMulNV ( global uint) 0:201 direct index ( temp uint) 0:201 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 2 (const int) 0:201 Constant: 0:201 0 (const int) 0:201 'ballot' ( temp 4-component vector of uint) 0:202 move second child to first child ( temp 2-component vector of uint) 0:202 vector swizzle ( temp 2-component vector of uint) 0:202 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:202 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'invocation' ( temp uint) 0:202 Constant: 0:202 2 (const int) 0:202 Sequence 0:202 Constant: 0:202 0 (const int) 0:202 Constant: 0:202 1 (const int) 0:202 subgroupPartitionedInclusiveMulNV ( global 2-component vector of uint) 0:202 vector swizzle ( temp 2-component vector of uint) 0:202 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:202 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 Sequence 0:202 Constant: 0:202 0 (const int) 0:202 Constant: 0:202 1 (const int) 0:202 'ballot' ( temp 4-component vector of uint) 0:203 move second child to first child ( temp 3-component vector of uint) 0:203 vector swizzle ( temp 3-component vector of uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:203 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:203 'invocation' ( temp uint) 0:203 Constant: 0:203 2 (const int) 0:203 Sequence 0:203 Constant: 0:203 0 (const int) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 subgroupPartitionedInclusiveMulNV ( global 3-component vector of uint) 0:203 vector swizzle ( temp 3-component vector of uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:203 Constant: 0:203 2 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 Sequence 0:203 Constant: 0:203 0 (const int) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 'ballot' ( temp 4-component vector of uint) 0:204 move second child to first child ( temp 4-component vector of uint) 0:204 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:204 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'invocation' ( temp uint) 0:204 Constant: 0:204 2 (const int) 0:204 subgroupPartitionedInclusiveMulNV ( global 4-component vector of uint) 0:204 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:204 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 Constant: 0:204 3 (const int) 0:204 Constant: 0:204 2 (const int) 0:204 'ballot' ( temp 4-component vector of uint) 0:206 move second child to first child ( temp double) 0:206 direct index ( temp double) 0:206 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:206 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'invocation' ( temp uint) 0:206 Constant: 0:206 3 (const int) 0:206 Constant: 0:206 0 (const int) 0:206 subgroupPartitionedInclusiveMulNV ( global double) 0:206 direct index ( temp double) 0:206 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 3 (const int) 0:206 Constant: 0:206 0 (const int) 0:206 'ballot' ( temp 4-component vector of uint) 0:207 move second child to first child ( temp 2-component vector of double) 0:207 vector swizzle ( temp 2-component vector of double) 0:207 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:207 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'invocation' ( temp uint) 0:207 Constant: 0:207 3 (const int) 0:207 Sequence 0:207 Constant: 0:207 0 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 subgroupPartitionedInclusiveMulNV ( global 2-component vector of double) 0:207 vector swizzle ( temp 2-component vector of double) 0:207 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:207 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 3 (const int) 0:207 Sequence 0:207 Constant: 0:207 0 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 'ballot' ( temp 4-component vector of uint) 0:208 move second child to first child ( temp 3-component vector of double) 0:208 vector swizzle ( temp 3-component vector of double) 0:208 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:208 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:208 'invocation' ( temp uint) 0:208 Constant: 0:208 3 (const int) 0:208 Sequence 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 2 (const int) 0:208 subgroupPartitionedInclusiveMulNV ( global 3-component vector of double) 0:208 vector swizzle ( temp 3-component vector of double) 0:208 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:208 Constant: 0:208 2 (const int) 0:208 Constant: 0:208 3 (const int) 0:208 Sequence 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 2 (const int) 0:208 'ballot' ( temp 4-component vector of uint) 0:209 move second child to first child ( temp 4-component vector of double) 0:209 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:209 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'invocation' ( temp uint) 0:209 Constant: 0:209 3 (const int) 0:209 subgroupPartitionedInclusiveMulNV ( global 4-component vector of double) 0:209 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:209 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 Constant: 0:209 3 (const int) 0:209 Constant: 0:209 3 (const int) 0:209 'ballot' ( temp 4-component vector of uint) 0:211 move second child to first child ( temp float) 0:211 direct index ( temp float) 0:211 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:211 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'invocation' ( temp uint) 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 0 (const int) 0:211 subgroupPartitionedInclusiveMinNV ( global float) 0:211 direct index ( temp float) 0:211 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 0 (const int) 0:211 'ballot' ( temp 4-component vector of uint) 0:212 move second child to first child ( temp 2-component vector of float) 0:212 vector swizzle ( temp 2-component vector of float) 0:212 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:212 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'invocation' ( temp uint) 0:212 Constant: 0:212 0 (const int) 0:212 Sequence 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 1 (const int) 0:212 subgroupPartitionedInclusiveMinNV ( global 2-component vector of float) 0:212 vector swizzle ( temp 2-component vector of float) 0:212 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:212 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 Constant: 0:212 1 (const int) 0:212 Constant: 0:212 0 (const int) 0:212 Sequence 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 1 (const int) 0:212 'ballot' ( temp 4-component vector of uint) 0:213 move second child to first child ( temp 3-component vector of float) 0:213 vector swizzle ( temp 3-component vector of float) 0:213 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:213 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:213 'invocation' ( temp uint) 0:213 Constant: 0:213 0 (const int) 0:213 Sequence 0:213 Constant: 0:213 0 (const int) 0:213 Constant: 0:213 1 (const int) 0:213 Constant: 0:213 2 (const int) 0:213 subgroupPartitionedInclusiveMinNV ( global 3-component vector of float) 0:213 vector swizzle ( temp 3-component vector of float) 0:213 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:213 Constant: 0:213 2 (const int) 0:213 Constant: 0:213 0 (const int) 0:213 Sequence 0:213 Constant: 0:213 0 (const int) 0:213 Constant: 0:213 1 (const int) 0:213 Constant: 0:213 2 (const int) 0:213 'ballot' ( temp 4-component vector of uint) 0:214 move second child to first child ( temp 4-component vector of float) 0:214 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:214 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'invocation' ( temp uint) 0:214 Constant: 0:214 0 (const int) 0:214 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:214 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:214 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 Constant: 0:214 3 (const int) 0:214 Constant: 0:214 0 (const int) 0:214 'ballot' ( temp 4-component vector of uint) 0:216 move second child to first child ( temp int) 0:216 direct index ( temp int) 0:216 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:216 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'invocation' ( temp uint) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 0 (const int) 0:216 subgroupPartitionedInclusiveMinNV ( global int) 0:216 direct index ( temp int) 0:216 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 0 (const int) 0:216 'ballot' ( temp 4-component vector of uint) 0:217 move second child to first child ( temp 2-component vector of int) 0:217 vector swizzle ( temp 2-component vector of int) 0:217 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:217 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'invocation' ( temp uint) 0:217 Constant: 0:217 1 (const int) 0:217 Sequence 0:217 Constant: 0:217 0 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 subgroupPartitionedInclusiveMinNV ( global 2-component vector of int) 0:217 vector swizzle ( temp 2-component vector of int) 0:217 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:217 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 Constant: 0:217 1 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Sequence 0:217 Constant: 0:217 0 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 'ballot' ( temp 4-component vector of uint) 0:218 move second child to first child ( temp 3-component vector of int) 0:218 vector swizzle ( temp 3-component vector of int) 0:218 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:218 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:218 'invocation' ( temp uint) 0:218 Constant: 0:218 1 (const int) 0:218 Sequence 0:218 Constant: 0:218 0 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Constant: 0:218 2 (const int) 0:218 subgroupPartitionedInclusiveMinNV ( global 3-component vector of int) 0:218 vector swizzle ( temp 3-component vector of int) 0:218 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:218 Constant: 0:218 2 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Sequence 0:218 Constant: 0:218 0 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Constant: 0:218 2 (const int) 0:218 'ballot' ( temp 4-component vector of uint) 0:219 move second child to first child ( temp 4-component vector of int) 0:219 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:219 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'invocation' ( temp uint) 0:219 Constant: 0:219 1 (const int) 0:219 subgroupPartitionedInclusiveMinNV ( global 4-component vector of int) 0:219 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:219 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 Constant: 0:219 3 (const int) 0:219 Constant: 0:219 1 (const int) 0:219 'ballot' ( temp 4-component vector of uint) 0:221 move second child to first child ( temp uint) 0:221 direct index ( temp uint) 0:221 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:221 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'invocation' ( temp uint) 0:221 Constant: 0:221 2 (const int) 0:221 Constant: 0:221 0 (const int) 0:221 subgroupPartitionedInclusiveMinNV ( global uint) 0:221 direct index ( temp uint) 0:221 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 2 (const int) 0:221 Constant: 0:221 0 (const int) 0:221 'ballot' ( temp 4-component vector of uint) 0:222 move second child to first child ( temp 2-component vector of uint) 0:222 vector swizzle ( temp 2-component vector of uint) 0:222 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:222 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'invocation' ( temp uint) 0:222 Constant: 0:222 2 (const int) 0:222 Sequence 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 subgroupPartitionedInclusiveMinNV ( global 2-component vector of uint) 0:222 vector swizzle ( temp 2-component vector of uint) 0:222 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:222 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 Constant: 0:222 1 (const int) 0:222 Constant: 0:222 2 (const int) 0:222 Sequence 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 'ballot' ( temp 4-component vector of uint) 0:223 move second child to first child ( temp 3-component vector of uint) 0:223 vector swizzle ( temp 3-component vector of uint) 0:223 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:223 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:223 'invocation' ( temp uint) 0:223 Constant: 0:223 2 (const int) 0:223 Sequence 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 2 (const int) 0:223 subgroupPartitionedInclusiveMinNV ( global 3-component vector of uint) 0:223 vector swizzle ( temp 3-component vector of uint) 0:223 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:223 Constant: 0:223 2 (const int) 0:223 Constant: 0:223 2 (const int) 0:223 Sequence 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 2 (const int) 0:223 'ballot' ( temp 4-component vector of uint) 0:224 move second child to first child ( temp 4-component vector of uint) 0:224 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:224 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'invocation' ( temp uint) 0:224 Constant: 0:224 2 (const int) 0:224 subgroupPartitionedInclusiveMinNV ( global 4-component vector of uint) 0:224 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:224 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 Constant: 0:224 3 (const int) 0:224 Constant: 0:224 2 (const int) 0:224 'ballot' ( temp 4-component vector of uint) 0:226 move second child to first child ( temp double) 0:226 direct index ( temp double) 0:226 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:226 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'invocation' ( temp uint) 0:226 Constant: 0:226 3 (const int) 0:226 Constant: 0:226 0 (const int) 0:226 subgroupPartitionedInclusiveMinNV ( global double) 0:226 direct index ( temp double) 0:226 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 3 (const int) 0:226 Constant: 0:226 0 (const int) 0:226 'ballot' ( temp 4-component vector of uint) 0:227 move second child to first child ( temp 2-component vector of double) 0:227 vector swizzle ( temp 2-component vector of double) 0:227 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:227 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'invocation' ( temp uint) 0:227 Constant: 0:227 3 (const int) 0:227 Sequence 0:227 Constant: 0:227 0 (const int) 0:227 Constant: 0:227 1 (const int) 0:227 subgroupPartitionedInclusiveMinNV ( global 2-component vector of double) 0:227 vector swizzle ( temp 2-component vector of double) 0:227 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:227 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 Constant: 0:227 1 (const int) 0:227 Constant: 0:227 3 (const int) 0:227 Sequence 0:227 Constant: 0:227 0 (const int) 0:227 Constant: 0:227 1 (const int) 0:227 'ballot' ( temp 4-component vector of uint) 0:228 move second child to first child ( temp 3-component vector of double) 0:228 vector swizzle ( temp 3-component vector of double) 0:228 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:228 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:228 'invocation' ( temp uint) 0:228 Constant: 0:228 3 (const int) 0:228 Sequence 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 1 (const int) 0:228 Constant: 0:228 2 (const int) 0:228 subgroupPartitionedInclusiveMinNV ( global 3-component vector of double) 0:228 vector swizzle ( temp 3-component vector of double) 0:228 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:228 Constant: 0:228 2 (const int) 0:228 Constant: 0:228 3 (const int) 0:228 Sequence 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 1 (const int) 0:228 Constant: 0:228 2 (const int) 0:228 'ballot' ( temp 4-component vector of uint) 0:229 move second child to first child ( temp 4-component vector of double) 0:229 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:229 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'invocation' ( temp uint) 0:229 Constant: 0:229 3 (const int) 0:229 subgroupPartitionedInclusiveMinNV ( global 4-component vector of double) 0:229 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:229 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 Constant: 0:229 3 (const int) 0:229 Constant: 0:229 3 (const int) 0:229 'ballot' ( temp 4-component vector of uint) 0:231 move second child to first child ( temp float) 0:231 direct index ( temp float) 0:231 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:231 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'invocation' ( temp uint) 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 subgroupPartitionedInclusiveMaxNV ( global float) 0:231 direct index ( temp float) 0:231 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 'ballot' ( temp 4-component vector of uint) 0:232 move second child to first child ( temp 2-component vector of float) 0:232 vector swizzle ( temp 2-component vector of float) 0:232 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:232 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'invocation' ( temp uint) 0:232 Constant: 0:232 0 (const int) 0:232 Sequence 0:232 Constant: 0:232 0 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 subgroupPartitionedInclusiveMaxNV ( global 2-component vector of float) 0:232 vector swizzle ( temp 2-component vector of float) 0:232 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:232 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 Constant: 0:232 1 (const int) 0:232 Constant: 0:232 0 (const int) 0:232 Sequence 0:232 Constant: 0:232 0 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 'ballot' ( temp 4-component vector of uint) 0:233 move second child to first child ( temp 3-component vector of float) 0:233 vector swizzle ( temp 3-component vector of float) 0:233 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:233 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:233 'invocation' ( temp uint) 0:233 Constant: 0:233 0 (const int) 0:233 Sequence 0:233 Constant: 0:233 0 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 2 (const int) 0:233 subgroupPartitionedInclusiveMaxNV ( global 3-component vector of float) 0:233 vector swizzle ( temp 3-component vector of float) 0:233 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:233 Constant: 0:233 2 (const int) 0:233 Constant: 0:233 0 (const int) 0:233 Sequence 0:233 Constant: 0:233 0 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 2 (const int) 0:233 'ballot' ( temp 4-component vector of uint) 0:234 move second child to first child ( temp 4-component vector of float) 0:234 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:234 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'invocation' ( temp uint) 0:234 Constant: 0:234 0 (const int) 0:234 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:234 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:234 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 Constant: 0:234 3 (const int) 0:234 Constant: 0:234 0 (const int) 0:234 'ballot' ( temp 4-component vector of uint) 0:236 move second child to first child ( temp int) 0:236 direct index ( temp int) 0:236 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:236 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'invocation' ( temp uint) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 0 (const int) 0:236 subgroupPartitionedInclusiveMaxNV ( global int) 0:236 direct index ( temp int) 0:236 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 0 (const int) 0:236 'ballot' ( temp 4-component vector of uint) 0:237 move second child to first child ( temp 2-component vector of int) 0:237 vector swizzle ( temp 2-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:237 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'invocation' ( temp uint) 0:237 Constant: 0:237 1 (const int) 0:237 Sequence 0:237 Constant: 0:237 0 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 subgroupPartitionedInclusiveMaxNV ( global 2-component vector of int) 0:237 vector swizzle ( temp 2-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:237 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Sequence 0:237 Constant: 0:237 0 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 'ballot' ( temp 4-component vector of uint) 0:238 move second child to first child ( temp 3-component vector of int) 0:238 vector swizzle ( temp 3-component vector of int) 0:238 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:238 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:238 'invocation' ( temp uint) 0:238 Constant: 0:238 1 (const int) 0:238 Sequence 0:238 Constant: 0:238 0 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 Constant: 0:238 2 (const int) 0:238 subgroupPartitionedInclusiveMaxNV ( global 3-component vector of int) 0:238 vector swizzle ( temp 3-component vector of int) 0:238 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:238 Constant: 0:238 2 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 Sequence 0:238 Constant: 0:238 0 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 Constant: 0:238 2 (const int) 0:238 'ballot' ( temp 4-component vector of uint) 0:239 move second child to first child ( temp 4-component vector of int) 0:239 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:239 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'invocation' ( temp uint) 0:239 Constant: 0:239 1 (const int) 0:239 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of int) 0:239 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:239 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 Constant: 0:239 3 (const int) 0:239 Constant: 0:239 1 (const int) 0:239 'ballot' ( temp 4-component vector of uint) 0:241 move second child to first child ( temp uint) 0:241 direct index ( temp uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:241 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'invocation' ( temp uint) 0:241 Constant: 0:241 2 (const int) 0:241 Constant: 0:241 0 (const int) 0:241 subgroupPartitionedInclusiveMaxNV ( global uint) 0:241 direct index ( temp uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 Constant: 0:241 0 (const int) 0:241 'ballot' ( temp 4-component vector of uint) 0:242 move second child to first child ( temp 2-component vector of uint) 0:242 vector swizzle ( temp 2-component vector of uint) 0:242 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:242 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'invocation' ( temp uint) 0:242 Constant: 0:242 2 (const int) 0:242 Sequence 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1 (const int) 0:242 subgroupPartitionedInclusiveMaxNV ( global 2-component vector of uint) 0:242 vector swizzle ( temp 2-component vector of uint) 0:242 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:242 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 Constant: 0:242 1 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 Sequence 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1 (const int) 0:242 'ballot' ( temp 4-component vector of uint) 0:243 move second child to first child ( temp 3-component vector of uint) 0:243 vector swizzle ( temp 3-component vector of uint) 0:243 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:243 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:243 'invocation' ( temp uint) 0:243 Constant: 0:243 2 (const int) 0:243 Sequence 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 1 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 subgroupPartitionedInclusiveMaxNV ( global 3-component vector of uint) 0:243 vector swizzle ( temp 3-component vector of uint) 0:243 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:243 Constant: 0:243 2 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 Sequence 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 1 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 'ballot' ( temp 4-component vector of uint) 0:244 move second child to first child ( temp 4-component vector of uint) 0:244 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:244 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'invocation' ( temp uint) 0:244 Constant: 0:244 2 (const int) 0:244 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of uint) 0:244 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:244 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 Constant: 0:244 3 (const int) 0:244 Constant: 0:244 2 (const int) 0:244 'ballot' ( temp 4-component vector of uint) 0:246 move second child to first child ( temp double) 0:246 direct index ( temp double) 0:246 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:246 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'invocation' ( temp uint) 0:246 Constant: 0:246 3 (const int) 0:246 Constant: 0:246 0 (const int) 0:246 subgroupPartitionedInclusiveMaxNV ( global double) 0:246 direct index ( temp double) 0:246 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 3 (const int) 0:246 Constant: 0:246 0 (const int) 0:246 'ballot' ( temp 4-component vector of uint) 0:247 move second child to first child ( temp 2-component vector of double) 0:247 vector swizzle ( temp 2-component vector of double) 0:247 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:247 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'invocation' ( temp uint) 0:247 Constant: 0:247 3 (const int) 0:247 Sequence 0:247 Constant: 0:247 0 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 subgroupPartitionedInclusiveMaxNV ( global 2-component vector of double) 0:247 vector swizzle ( temp 2-component vector of double) 0:247 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:247 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 Constant: 0:247 1 (const int) 0:247 Constant: 0:247 3 (const int) 0:247 Sequence 0:247 Constant: 0:247 0 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 'ballot' ( temp 4-component vector of uint) 0:248 move second child to first child ( temp 3-component vector of double) 0:248 vector swizzle ( temp 3-component vector of double) 0:248 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:248 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:248 'invocation' ( temp uint) 0:248 Constant: 0:248 3 (const int) 0:248 Sequence 0:248 Constant: 0:248 0 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 2 (const int) 0:248 subgroupPartitionedInclusiveMaxNV ( global 3-component vector of double) 0:248 vector swizzle ( temp 3-component vector of double) 0:248 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:248 Constant: 0:248 2 (const int) 0:248 Constant: 0:248 3 (const int) 0:248 Sequence 0:248 Constant: 0:248 0 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 2 (const int) 0:248 'ballot' ( temp 4-component vector of uint) 0:249 move second child to first child ( temp 4-component vector of double) 0:249 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:249 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'invocation' ( temp uint) 0:249 Constant: 0:249 3 (const int) 0:249 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of double) 0:249 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:249 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 Constant: 0:249 3 (const int) 0:249 Constant: 0:249 3 (const int) 0:249 'ballot' ( temp 4-component vector of uint) 0:251 move second child to first child ( temp int) 0:251 direct index ( temp int) 0:251 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:251 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'invocation' ( temp uint) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 subgroupPartitionedInclusiveAndNV ( global int) 0:251 direct index ( temp int) 0:251 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 'ballot' ( temp 4-component vector of uint) 0:252 move second child to first child ( temp 2-component vector of int) 0:252 vector swizzle ( temp 2-component vector of int) 0:252 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:252 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'invocation' ( temp uint) 0:252 Constant: 0:252 1 (const int) 0:252 Sequence 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 subgroupPartitionedInclusiveAndNV ( global 2-component vector of int) 0:252 vector swizzle ( temp 2-component vector of int) 0:252 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:252 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 Sequence 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 'ballot' ( temp 4-component vector of uint) 0:253 move second child to first child ( temp 3-component vector of int) 0:253 vector swizzle ( temp 3-component vector of int) 0:253 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:253 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:253 'invocation' ( temp uint) 0:253 Constant: 0:253 1 (const int) 0:253 Sequence 0:253 Constant: 0:253 0 (const int) 0:253 Constant: 0:253 1 (const int) 0:253 Constant: 0:253 2 (const int) 0:253 subgroupPartitionedInclusiveAndNV ( global 3-component vector of int) 0:253 vector swizzle ( temp 3-component vector of int) 0:253 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:253 Constant: 0:253 2 (const int) 0:253 Constant: 0:253 1 (const int) 0:253 Sequence 0:253 Constant: 0:253 0 (const int) 0:253 Constant: 0:253 1 (const int) 0:253 Constant: 0:253 2 (const int) 0:253 'ballot' ( temp 4-component vector of uint) 0:254 move second child to first child ( temp 4-component vector of int) 0:254 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:254 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'invocation' ( temp uint) 0:254 Constant: 0:254 1 (const int) 0:254 subgroupPartitionedInclusiveAndNV ( global 4-component vector of int) 0:254 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:254 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 Constant: 0:254 3 (const int) 0:254 Constant: 0:254 1 (const int) 0:254 'ballot' ( temp 4-component vector of uint) 0:256 move second child to first child ( temp uint) 0:256 direct index ( temp uint) 0:256 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:256 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'invocation' ( temp uint) 0:256 Constant: 0:256 2 (const int) 0:256 Constant: 0:256 0 (const int) 0:256 subgroupPartitionedInclusiveAndNV ( global uint) 0:256 direct index ( temp uint) 0:256 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 2 (const int) 0:256 Constant: 0:256 0 (const int) 0:256 'ballot' ( temp 4-component vector of uint) 0:257 move second child to first child ( temp 2-component vector of uint) 0:257 vector swizzle ( temp 2-component vector of uint) 0:257 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:257 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'invocation' ( temp uint) 0:257 Constant: 0:257 2 (const int) 0:257 Sequence 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 subgroupPartitionedInclusiveAndNV ( global 2-component vector of uint) 0:257 vector swizzle ( temp 2-component vector of uint) 0:257 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:257 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 Constant: 0:257 1 (const int) 0:257 Constant: 0:257 2 (const int) 0:257 Sequence 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 'ballot' ( temp 4-component vector of uint) 0:258 move second child to first child ( temp 3-component vector of uint) 0:258 vector swizzle ( temp 3-component vector of uint) 0:258 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:258 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:258 'invocation' ( temp uint) 0:258 Constant: 0:258 2 (const int) 0:258 Sequence 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 1 (const int) 0:258 Constant: 0:258 2 (const int) 0:258 subgroupPartitionedInclusiveAndNV ( global 3-component vector of uint) 0:258 vector swizzle ( temp 3-component vector of uint) 0:258 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:258 Constant: 0:258 2 (const int) 0:258 Constant: 0:258 2 (const int) 0:258 Sequence 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 1 (const int) 0:258 Constant: 0:258 2 (const int) 0:258 'ballot' ( temp 4-component vector of uint) 0:259 move second child to first child ( temp 4-component vector of uint) 0:259 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:259 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'invocation' ( temp uint) 0:259 Constant: 0:259 2 (const int) 0:259 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:259 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:259 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 Constant: 0:259 3 (const int) 0:259 Constant: 0:259 2 (const int) 0:259 'ballot' ( temp 4-component vector of uint) 0:261 move second child to first child ( temp int) 0:261 direct index ( temp int) 0:261 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:261 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'invocation' ( temp uint) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 0 (const int) 0:261 Convert bool to int ( temp int) 0:261 subgroupPartitionedInclusiveAndNV ( global bool) 0:261 Compare Less Than ( temp bool) 0:261 direct index ( temp int) 0:261 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 0 (const int) 0:261 'ballot' ( temp 4-component vector of uint) 0:262 move second child to first child ( temp 2-component vector of int) 0:262 vector swizzle ( temp 2-component vector of int) 0:262 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:262 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'invocation' ( temp uint) 0:262 Constant: 0:262 1 (const int) 0:262 Sequence 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Convert bool to int ( temp 2-component vector of int) 0:262 subgroupPartitionedInclusiveAndNV ( global 2-component vector of bool) 0:262 Compare Less Than ( global 2-component vector of bool) 0:262 vector swizzle ( temp 2-component vector of int) 0:262 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:262 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 Constant: 0:262 1 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Sequence 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Constant: 0:262 0 (const int) 0:262 0 (const int) 0:262 'ballot' ( temp 4-component vector of uint) 0:263 move second child to first child ( temp 3-component vector of int) 0:263 vector swizzle ( temp 3-component vector of int) 0:263 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:263 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:263 'invocation' ( temp uint) 0:263 Constant: 0:263 1 (const int) 0:263 Sequence 0:263 Constant: 0:263 0 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 2 (const int) 0:263 Convert bool to int ( temp 3-component vector of int) 0:263 subgroupPartitionedInclusiveAndNV ( global 3-component vector of bool) 0:263 Compare Less Than ( global 3-component vector of bool) 0:263 vector swizzle ( temp 3-component vector of int) 0:263 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Sequence 0:263 Constant: 0:263 0 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 2 (const int) 0:263 Constant: 0:263 0 (const int) 0:263 0 (const int) 0:263 0 (const int) 0:263 'ballot' ( temp 4-component vector of uint) 0:264 move second child to first child ( temp 4-component vector of int) 0:264 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:264 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'invocation' ( temp uint) 0:264 Constant: 0:264 1 (const int) 0:264 Convert bool to int ( temp 4-component vector of int) 0:264 subgroupPartitionedInclusiveAndNV ( global 4-component vector of bool) 0:264 Compare Less Than ( global 4-component vector of bool) 0:264 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:264 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 0 (const int) 0:264 0 (const int) 0:264 0 (const int) 0:264 0 (const int) 0:264 'ballot' ( temp 4-component vector of uint) 0:266 move second child to first child ( temp int) 0:266 direct index ( temp int) 0:266 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:266 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'invocation' ( temp uint) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 subgroupPartitionedInclusiveOrNV ( global int) 0:266 direct index ( temp int) 0:266 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 'ballot' ( temp 4-component vector of uint) 0:267 move second child to first child ( temp 2-component vector of int) 0:267 vector swizzle ( temp 2-component vector of int) 0:267 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:267 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'invocation' ( temp uint) 0:267 Constant: 0:267 1 (const int) 0:267 Sequence 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 subgroupPartitionedInclusiveOrNV ( global 2-component vector of int) 0:267 vector swizzle ( temp 2-component vector of int) 0:267 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:267 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 Sequence 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 'ballot' ( temp 4-component vector of uint) 0:268 move second child to first child ( temp 3-component vector of int) 0:268 vector swizzle ( temp 3-component vector of int) 0:268 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:268 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:268 'invocation' ( temp uint) 0:268 Constant: 0:268 1 (const int) 0:268 Sequence 0:268 Constant: 0:268 0 (const int) 0:268 Constant: 0:268 1 (const int) 0:268 Constant: 0:268 2 (const int) 0:268 subgroupPartitionedInclusiveOrNV ( global 3-component vector of int) 0:268 vector swizzle ( temp 3-component vector of int) 0:268 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:268 Constant: 0:268 2 (const int) 0:268 Constant: 0:268 1 (const int) 0:268 Sequence 0:268 Constant: 0:268 0 (const int) 0:268 Constant: 0:268 1 (const int) 0:268 Constant: 0:268 2 (const int) 0:268 'ballot' ( temp 4-component vector of uint) 0:269 move second child to first child ( temp 4-component vector of int) 0:269 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:269 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'invocation' ( temp uint) 0:269 Constant: 0:269 1 (const int) 0:269 subgroupPartitionedInclusiveOrNV ( global 4-component vector of int) 0:269 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:269 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 Constant: 0:269 3 (const int) 0:269 Constant: 0:269 1 (const int) 0:269 'ballot' ( temp 4-component vector of uint) 0:271 move second child to first child ( temp uint) 0:271 direct index ( temp uint) 0:271 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:271 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'invocation' ( temp uint) 0:271 Constant: 0:271 2 (const int) 0:271 Constant: 0:271 0 (const int) 0:271 subgroupPartitionedInclusiveOrNV ( global uint) 0:271 direct index ( temp uint) 0:271 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 2 (const int) 0:271 Constant: 0:271 0 (const int) 0:271 'ballot' ( temp 4-component vector of uint) 0:272 move second child to first child ( temp 2-component vector of uint) 0:272 vector swizzle ( temp 2-component vector of uint) 0:272 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:272 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'invocation' ( temp uint) 0:272 Constant: 0:272 2 (const int) 0:272 Sequence 0:272 Constant: 0:272 0 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 subgroupPartitionedInclusiveOrNV ( global 2-component vector of uint) 0:272 vector swizzle ( temp 2-component vector of uint) 0:272 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:272 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 Constant: 0:272 1 (const int) 0:272 Constant: 0:272 2 (const int) 0:272 Sequence 0:272 Constant: 0:272 0 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 'ballot' ( temp 4-component vector of uint) 0:273 move second child to first child ( temp 3-component vector of uint) 0:273 vector swizzle ( temp 3-component vector of uint) 0:273 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:273 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:273 'invocation' ( temp uint) 0:273 Constant: 0:273 2 (const int) 0:273 Sequence 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 1 (const int) 0:273 Constant: 0:273 2 (const int) 0:273 subgroupPartitionedInclusiveOrNV ( global 3-component vector of uint) 0:273 vector swizzle ( temp 3-component vector of uint) 0:273 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:273 Constant: 0:273 2 (const int) 0:273 Constant: 0:273 2 (const int) 0:273 Sequence 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 1 (const int) 0:273 Constant: 0:273 2 (const int) 0:273 'ballot' ( temp 4-component vector of uint) 0:274 move second child to first child ( temp 4-component vector of uint) 0:274 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:274 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'invocation' ( temp uint) 0:274 Constant: 0:274 2 (const int) 0:274 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:274 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:274 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 Constant: 0:274 3 (const int) 0:274 Constant: 0:274 2 (const int) 0:274 'ballot' ( temp 4-component vector of uint) 0:276 move second child to first child ( temp int) 0:276 direct index ( temp int) 0:276 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:276 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'invocation' ( temp uint) 0:276 Constant: 0:276 1 (const int) 0:276 Constant: 0:276 0 (const int) 0:276 Convert bool to int ( temp int) 0:276 subgroupPartitionedInclusiveOrNV ( global bool) 0:276 Compare Less Than ( temp bool) 0:276 direct index ( temp int) 0:276 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 1 (const int) 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 0 (const int) 0:276 'ballot' ( temp 4-component vector of uint) 0:277 move second child to first child ( temp 2-component vector of int) 0:277 vector swizzle ( temp 2-component vector of int) 0:277 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:277 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'invocation' ( temp uint) 0:277 Constant: 0:277 1 (const int) 0:277 Sequence 0:277 Constant: 0:277 0 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Convert bool to int ( temp 2-component vector of int) 0:277 subgroupPartitionedInclusiveOrNV ( global 2-component vector of bool) 0:277 Compare Less Than ( global 2-component vector of bool) 0:277 vector swizzle ( temp 2-component vector of int) 0:277 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:277 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Sequence 0:277 Constant: 0:277 0 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 0 (const int) 0:277 0 (const int) 0:277 'ballot' ( temp 4-component vector of uint) 0:278 move second child to first child ( temp 3-component vector of int) 0:278 vector swizzle ( temp 3-component vector of int) 0:278 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:278 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:278 'invocation' ( temp uint) 0:278 Constant: 0:278 1 (const int) 0:278 Sequence 0:278 Constant: 0:278 0 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 2 (const int) 0:278 Convert bool to int ( temp 3-component vector of int) 0:278 subgroupPartitionedInclusiveOrNV ( global 3-component vector of bool) 0:278 Compare Less Than ( global 3-component vector of bool) 0:278 vector swizzle ( temp 3-component vector of int) 0:278 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Sequence 0:278 Constant: 0:278 0 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 2 (const int) 0:278 Constant: 0:278 0 (const int) 0:278 0 (const int) 0:278 0 (const int) 0:278 'ballot' ( temp 4-component vector of uint) 0:279 move second child to first child ( temp 4-component vector of int) 0:279 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:279 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'invocation' ( temp uint) 0:279 Constant: 0:279 1 (const int) 0:279 Convert bool to int ( temp 4-component vector of int) 0:279 subgroupPartitionedInclusiveOrNV ( global 4-component vector of bool) 0:279 Compare Less Than ( global 4-component vector of bool) 0:279 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:279 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 Constant: 0:279 1 (const int) 0:279 Constant: 0:279 1 (const int) 0:279 Constant: 0:279 0 (const int) 0:279 0 (const int) 0:279 0 (const int) 0:279 0 (const int) 0:279 'ballot' ( temp 4-component vector of uint) 0:281 move second child to first child ( temp int) 0:281 direct index ( temp int) 0:281 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:281 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'invocation' ( temp uint) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 0 (const int) 0:281 subgroupPartitionedInclusiveXorNV ( global int) 0:281 direct index ( temp int) 0:281 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 0 (const int) 0:281 'ballot' ( temp 4-component vector of uint) 0:282 move second child to first child ( temp 2-component vector of int) 0:282 vector swizzle ( temp 2-component vector of int) 0:282 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:282 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'invocation' ( temp uint) 0:282 Constant: 0:282 1 (const int) 0:282 Sequence 0:282 Constant: 0:282 0 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 subgroupPartitionedInclusiveXorNV ( global 2-component vector of int) 0:282 vector swizzle ( temp 2-component vector of int) 0:282 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:282 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 Constant: 0:282 1 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 Sequence 0:282 Constant: 0:282 0 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 'ballot' ( temp 4-component vector of uint) 0:283 move second child to first child ( temp 3-component vector of int) 0:283 vector swizzle ( temp 3-component vector of int) 0:283 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:283 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:283 'invocation' ( temp uint) 0:283 Constant: 0:283 1 (const int) 0:283 Sequence 0:283 Constant: 0:283 0 (const int) 0:283 Constant: 0:283 1 (const int) 0:283 Constant: 0:283 2 (const int) 0:283 subgroupPartitionedInclusiveXorNV ( global 3-component vector of int) 0:283 vector swizzle ( temp 3-component vector of int) 0:283 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:283 Constant: 0:283 2 (const int) 0:283 Constant: 0:283 1 (const int) 0:283 Sequence 0:283 Constant: 0:283 0 (const int) 0:283 Constant: 0:283 1 (const int) 0:283 Constant: 0:283 2 (const int) 0:283 'ballot' ( temp 4-component vector of uint) 0:284 move second child to first child ( temp 4-component vector of int) 0:284 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:284 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'invocation' ( temp uint) 0:284 Constant: 0:284 1 (const int) 0:284 subgroupPartitionedInclusiveXorNV ( global 4-component vector of int) 0:284 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:284 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 Constant: 0:284 3 (const int) 0:284 Constant: 0:284 1 (const int) 0:284 'ballot' ( temp 4-component vector of uint) 0:286 move second child to first child ( temp uint) 0:286 direct index ( temp uint) 0:286 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:286 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'invocation' ( temp uint) 0:286 Constant: 0:286 2 (const int) 0:286 Constant: 0:286 0 (const int) 0:286 subgroupPartitionedInclusiveXorNV ( global uint) 0:286 direct index ( temp uint) 0:286 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 2 (const int) 0:286 Constant: 0:286 0 (const int) 0:286 'ballot' ( temp 4-component vector of uint) 0:287 move second child to first child ( temp 2-component vector of uint) 0:287 vector swizzle ( temp 2-component vector of uint) 0:287 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:287 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'invocation' ( temp uint) 0:287 Constant: 0:287 2 (const int) 0:287 Sequence 0:287 Constant: 0:287 0 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 subgroupPartitionedInclusiveXorNV ( global 2-component vector of uint) 0:287 vector swizzle ( temp 2-component vector of uint) 0:287 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:287 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 Constant: 0:287 1 (const int) 0:287 Constant: 0:287 2 (const int) 0:287 Sequence 0:287 Constant: 0:287 0 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 'ballot' ( temp 4-component vector of uint) 0:288 move second child to first child ( temp 3-component vector of uint) 0:288 vector swizzle ( temp 3-component vector of uint) 0:288 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:288 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:288 'invocation' ( temp uint) 0:288 Constant: 0:288 2 (const int) 0:288 Sequence 0:288 Constant: 0:288 0 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 2 (const int) 0:288 subgroupPartitionedInclusiveXorNV ( global 3-component vector of uint) 0:288 vector swizzle ( temp 3-component vector of uint) 0:288 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:288 Constant: 0:288 2 (const int) 0:288 Constant: 0:288 2 (const int) 0:288 Sequence 0:288 Constant: 0:288 0 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 2 (const int) 0:288 'ballot' ( temp 4-component vector of uint) 0:289 move second child to first child ( temp 4-component vector of uint) 0:289 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:289 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'invocation' ( temp uint) 0:289 Constant: 0:289 2 (const int) 0:289 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:289 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:289 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 Constant: 0:289 3 (const int) 0:289 Constant: 0:289 2 (const int) 0:289 'ballot' ( temp 4-component vector of uint) 0:291 move second child to first child ( temp int) 0:291 direct index ( temp int) 0:291 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:291 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'invocation' ( temp uint) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 0 (const int) 0:291 Convert bool to int ( temp int) 0:291 subgroupPartitionedInclusiveXorNV ( global bool) 0:291 Compare Less Than ( temp bool) 0:291 direct index ( temp int) 0:291 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 0 (const int) 0:291 'ballot' ( temp 4-component vector of uint) 0:292 move second child to first child ( temp 2-component vector of int) 0:292 vector swizzle ( temp 2-component vector of int) 0:292 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:292 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'invocation' ( temp uint) 0:292 Constant: 0:292 1 (const int) 0:292 Sequence 0:292 Constant: 0:292 0 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Convert bool to int ( temp 2-component vector of int) 0:292 subgroupPartitionedInclusiveXorNV ( global 2-component vector of bool) 0:292 Compare Less Than ( global 2-component vector of bool) 0:292 vector swizzle ( temp 2-component vector of int) 0:292 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:292 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 Constant: 0:292 1 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Sequence 0:292 Constant: 0:292 0 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Constant: 0:292 0 (const int) 0:292 0 (const int) 0:292 'ballot' ( temp 4-component vector of uint) 0:293 move second child to first child ( temp 3-component vector of int) 0:293 vector swizzle ( temp 3-component vector of int) 0:293 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:293 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:293 'invocation' ( temp uint) 0:293 Constant: 0:293 1 (const int) 0:293 Sequence 0:293 Constant: 0:293 0 (const int) 0:293 Constant: 0:293 1 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 Convert bool to int ( temp 3-component vector of int) 0:293 subgroupPartitionedInclusiveXorNV ( global 3-component vector of bool) 0:293 Compare Less Than ( global 3-component vector of bool) 0:293 vector swizzle ( temp 3-component vector of int) 0:293 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:293 Constant: 0:293 1 (const int) 0:293 Constant: 0:293 1 (const int) 0:293 Sequence 0:293 Constant: 0:293 0 (const int) 0:293 Constant: 0:293 1 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 Constant: 0:293 0 (const int) 0:293 0 (const int) 0:293 0 (const int) 0:293 'ballot' ( temp 4-component vector of uint) 0:294 move second child to first child ( temp 4-component vector of int) 0:294 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:294 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'invocation' ( temp uint) 0:294 Constant: 0:294 1 (const int) 0:294 Convert bool to int ( temp 4-component vector of int) 0:294 subgroupPartitionedInclusiveXorNV ( global 4-component vector of bool) 0:294 Compare Less Than ( global 4-component vector of bool) 0:294 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:294 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 0 (const int) 0:294 0 (const int) 0:294 0 (const int) 0:294 0 (const int) 0:294 'ballot' ( temp 4-component vector of uint) 0:296 move second child to first child ( temp float) 0:296 direct index ( temp float) 0:296 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:296 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'invocation' ( temp uint) 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 subgroupPartitionedExclusiveAddNV ( global float) 0:296 direct index ( temp float) 0:296 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 'ballot' ( temp 4-component vector of uint) 0:297 move second child to first child ( temp 2-component vector of float) 0:297 vector swizzle ( temp 2-component vector of float) 0:297 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:297 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'invocation' ( temp uint) 0:297 Constant: 0:297 0 (const int) 0:297 Sequence 0:297 Constant: 0:297 0 (const int) 0:297 Constant: 0:297 1 (const int) 0:297 subgroupPartitionedExclusiveAddNV ( global 2-component vector of float) 0:297 vector swizzle ( temp 2-component vector of float) 0:297 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:297 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 Constant: 0:297 1 (const int) 0:297 Constant: 0:297 0 (const int) 0:297 Sequence 0:297 Constant: 0:297 0 (const int) 0:297 Constant: 0:297 1 (const int) 0:297 'ballot' ( temp 4-component vector of uint) 0:298 move second child to first child ( temp 3-component vector of float) 0:298 vector swizzle ( temp 3-component vector of float) 0:298 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:298 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:298 'invocation' ( temp uint) 0:298 Constant: 0:298 0 (const int) 0:298 Sequence 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 1 (const int) 0:298 Constant: 0:298 2 (const int) 0:298 subgroupPartitionedExclusiveAddNV ( global 3-component vector of float) 0:298 vector swizzle ( temp 3-component vector of float) 0:298 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:298 Constant: 0:298 2 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 Sequence 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 1 (const int) 0:298 Constant: 0:298 2 (const int) 0:298 'ballot' ( temp 4-component vector of uint) 0:299 move second child to first child ( temp 4-component vector of float) 0:299 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:299 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'invocation' ( temp uint) 0:299 Constant: 0:299 0 (const int) 0:299 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:299 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:299 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 Constant: 0:299 3 (const int) 0:299 Constant: 0:299 0 (const int) 0:299 'ballot' ( temp 4-component vector of uint) 0:301 move second child to first child ( temp int) 0:301 direct index ( temp int) 0:301 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:301 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'invocation' ( temp uint) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 0 (const int) 0:301 subgroupPartitionedExclusiveAddNV ( global int) 0:301 direct index ( temp int) 0:301 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 0 (const int) 0:301 'ballot' ( temp 4-component vector of uint) 0:302 move second child to first child ( temp 2-component vector of int) 0:302 vector swizzle ( temp 2-component vector of int) 0:302 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:302 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'invocation' ( temp uint) 0:302 Constant: 0:302 1 (const int) 0:302 Sequence 0:302 Constant: 0:302 0 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 subgroupPartitionedExclusiveAddNV ( global 2-component vector of int) 0:302 vector swizzle ( temp 2-component vector of int) 0:302 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:302 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 Constant: 0:302 1 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Sequence 0:302 Constant: 0:302 0 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 'ballot' ( temp 4-component vector of uint) 0:303 move second child to first child ( temp 3-component vector of int) 0:303 vector swizzle ( temp 3-component vector of int) 0:303 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:303 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:303 'invocation' ( temp uint) 0:303 Constant: 0:303 1 (const int) 0:303 Sequence 0:303 Constant: 0:303 0 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 2 (const int) 0:303 subgroupPartitionedExclusiveAddNV ( global 3-component vector of int) 0:303 vector swizzle ( temp 3-component vector of int) 0:303 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:303 Constant: 0:303 2 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Sequence 0:303 Constant: 0:303 0 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 2 (const int) 0:303 'ballot' ( temp 4-component vector of uint) 0:304 move second child to first child ( temp 4-component vector of int) 0:304 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:304 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'invocation' ( temp uint) 0:304 Constant: 0:304 1 (const int) 0:304 subgroupPartitionedExclusiveAddNV ( global 4-component vector of int) 0:304 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:304 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 Constant: 0:304 3 (const int) 0:304 Constant: 0:304 1 (const int) 0:304 'ballot' ( temp 4-component vector of uint) 0:306 move second child to first child ( temp uint) 0:306 direct index ( temp uint) 0:306 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:306 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'invocation' ( temp uint) 0:306 Constant: 0:306 2 (const int) 0:306 Constant: 0:306 0 (const int) 0:306 subgroupPartitionedExclusiveAddNV ( global uint) 0:306 direct index ( temp uint) 0:306 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 2 (const int) 0:306 Constant: 0:306 0 (const int) 0:306 'ballot' ( temp 4-component vector of uint) 0:307 move second child to first child ( temp 2-component vector of uint) 0:307 vector swizzle ( temp 2-component vector of uint) 0:307 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:307 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'invocation' ( temp uint) 0:307 Constant: 0:307 2 (const int) 0:307 Sequence 0:307 Constant: 0:307 0 (const int) 0:307 Constant: 0:307 1 (const int) 0:307 subgroupPartitionedExclusiveAddNV ( global 2-component vector of uint) 0:307 vector swizzle ( temp 2-component vector of uint) 0:307 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:307 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 Constant: 0:307 1 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 Sequence 0:307 Constant: 0:307 0 (const int) 0:307 Constant: 0:307 1 (const int) 0:307 'ballot' ( temp 4-component vector of uint) 0:308 move second child to first child ( temp 3-component vector of uint) 0:308 vector swizzle ( temp 3-component vector of uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:308 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:308 'invocation' ( temp uint) 0:308 Constant: 0:308 2 (const int) 0:308 Sequence 0:308 Constant: 0:308 0 (const int) 0:308 Constant: 0:308 1 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 subgroupPartitionedExclusiveAddNV ( global 3-component vector of uint) 0:308 vector swizzle ( temp 3-component vector of uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 Sequence 0:308 Constant: 0:308 0 (const int) 0:308 Constant: 0:308 1 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 'ballot' ( temp 4-component vector of uint) 0:309 move second child to first child ( temp 4-component vector of uint) 0:309 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:309 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'invocation' ( temp uint) 0:309 Constant: 0:309 2 (const int) 0:309 subgroupPartitionedExclusiveAddNV ( global 4-component vector of uint) 0:309 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:309 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 Constant: 0:309 3 (const int) 0:309 Constant: 0:309 2 (const int) 0:309 'ballot' ( temp 4-component vector of uint) 0:311 move second child to first child ( temp double) 0:311 direct index ( temp double) 0:311 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:311 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'invocation' ( temp uint) 0:311 Constant: 0:311 3 (const int) 0:311 Constant: 0:311 0 (const int) 0:311 subgroupPartitionedExclusiveAddNV ( global double) 0:311 direct index ( temp double) 0:311 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 3 (const int) 0:311 Constant: 0:311 0 (const int) 0:311 'ballot' ( temp 4-component vector of uint) 0:312 move second child to first child ( temp 2-component vector of double) 0:312 vector swizzle ( temp 2-component vector of double) 0:312 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:312 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'invocation' ( temp uint) 0:312 Constant: 0:312 3 (const int) 0:312 Sequence 0:312 Constant: 0:312 0 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 subgroupPartitionedExclusiveAddNV ( global 2-component vector of double) 0:312 vector swizzle ( temp 2-component vector of double) 0:312 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:312 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 Constant: 0:312 1 (const int) 0:312 Constant: 0:312 3 (const int) 0:312 Sequence 0:312 Constant: 0:312 0 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 'ballot' ( temp 4-component vector of uint) 0:313 move second child to first child ( temp 3-component vector of double) 0:313 vector swizzle ( temp 3-component vector of double) 0:313 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:313 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:313 'invocation' ( temp uint) 0:313 Constant: 0:313 3 (const int) 0:313 Sequence 0:313 Constant: 0:313 0 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 Constant: 0:313 2 (const int) 0:313 subgroupPartitionedExclusiveAddNV ( global 3-component vector of double) 0:313 vector swizzle ( temp 3-component vector of double) 0:313 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:313 Constant: 0:313 2 (const int) 0:313 Constant: 0:313 3 (const int) 0:313 Sequence 0:313 Constant: 0:313 0 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 Constant: 0:313 2 (const int) 0:313 'ballot' ( temp 4-component vector of uint) 0:314 move second child to first child ( temp 4-component vector of double) 0:314 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:314 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'invocation' ( temp uint) 0:314 Constant: 0:314 3 (const int) 0:314 subgroupPartitionedExclusiveAddNV ( global 4-component vector of double) 0:314 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:314 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 Constant: 0:314 3 (const int) 0:314 Constant: 0:314 3 (const int) 0:314 'ballot' ( temp 4-component vector of uint) 0:316 move second child to first child ( temp float) 0:316 direct index ( temp float) 0:316 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:316 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'invocation' ( temp uint) 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 0 (const int) 0:316 subgroupPartitionedExclusiveMulNV ( global float) 0:316 direct index ( temp float) 0:316 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 0 (const int) 0:316 'ballot' ( temp 4-component vector of uint) 0:317 move second child to first child ( temp 2-component vector of float) 0:317 vector swizzle ( temp 2-component vector of float) 0:317 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:317 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'invocation' ( temp uint) 0:317 Constant: 0:317 0 (const int) 0:317 Sequence 0:317 Constant: 0:317 0 (const int) 0:317 Constant: 0:317 1 (const int) 0:317 subgroupPartitionedExclusiveMulNV ( global 2-component vector of float) 0:317 vector swizzle ( temp 2-component vector of float) 0:317 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:317 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 Constant: 0:317 1 (const int) 0:317 Constant: 0:317 0 (const int) 0:317 Sequence 0:317 Constant: 0:317 0 (const int) 0:317 Constant: 0:317 1 (const int) 0:317 'ballot' ( temp 4-component vector of uint) 0:318 move second child to first child ( temp 3-component vector of float) 0:318 vector swizzle ( temp 3-component vector of float) 0:318 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:318 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:318 'invocation' ( temp uint) 0:318 Constant: 0:318 0 (const int) 0:318 Sequence 0:318 Constant: 0:318 0 (const int) 0:318 Constant: 0:318 1 (const int) 0:318 Constant: 0:318 2 (const int) 0:318 subgroupPartitionedExclusiveMulNV ( global 3-component vector of float) 0:318 vector swizzle ( temp 3-component vector of float) 0:318 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:318 Constant: 0:318 2 (const int) 0:318 Constant: 0:318 0 (const int) 0:318 Sequence 0:318 Constant: 0:318 0 (const int) 0:318 Constant: 0:318 1 (const int) 0:318 Constant: 0:318 2 (const int) 0:318 'ballot' ( temp 4-component vector of uint) 0:319 move second child to first child ( temp 4-component vector of float) 0:319 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:319 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'invocation' ( temp uint) 0:319 Constant: 0:319 0 (const int) 0:319 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:319 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:319 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 Constant: 0:319 3 (const int) 0:319 Constant: 0:319 0 (const int) 0:319 'ballot' ( temp 4-component vector of uint) 0:321 move second child to first child ( temp int) 0:321 direct index ( temp int) 0:321 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:321 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'invocation' ( temp uint) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 0 (const int) 0:321 subgroupPartitionedExclusiveMulNV ( global int) 0:321 direct index ( temp int) 0:321 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 0 (const int) 0:321 'ballot' ( temp 4-component vector of uint) 0:322 move second child to first child ( temp 2-component vector of int) 0:322 vector swizzle ( temp 2-component vector of int) 0:322 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:322 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'invocation' ( temp uint) 0:322 Constant: 0:322 1 (const int) 0:322 Sequence 0:322 Constant: 0:322 0 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 subgroupPartitionedExclusiveMulNV ( global 2-component vector of int) 0:322 vector swizzle ( temp 2-component vector of int) 0:322 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:322 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 Constant: 0:322 1 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Sequence 0:322 Constant: 0:322 0 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 'ballot' ( temp 4-component vector of uint) 0:323 move second child to first child ( temp 3-component vector of int) 0:323 vector swizzle ( temp 3-component vector of int) 0:323 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:323 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:323 'invocation' ( temp uint) 0:323 Constant: 0:323 1 (const int) 0:323 Sequence 0:323 Constant: 0:323 0 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 2 (const int) 0:323 subgroupPartitionedExclusiveMulNV ( global 3-component vector of int) 0:323 vector swizzle ( temp 3-component vector of int) 0:323 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:323 Constant: 0:323 2 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Sequence 0:323 Constant: 0:323 0 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 2 (const int) 0:323 'ballot' ( temp 4-component vector of uint) 0:324 move second child to first child ( temp 4-component vector of int) 0:324 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:324 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'invocation' ( temp uint) 0:324 Constant: 0:324 1 (const int) 0:324 subgroupPartitionedExclusiveMulNV ( global 4-component vector of int) 0:324 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:324 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 Constant: 0:324 3 (const int) 0:324 Constant: 0:324 1 (const int) 0:324 'ballot' ( temp 4-component vector of uint) 0:326 move second child to first child ( temp uint) 0:326 direct index ( temp uint) 0:326 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:326 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'invocation' ( temp uint) 0:326 Constant: 0:326 2 (const int) 0:326 Constant: 0:326 0 (const int) 0:326 subgroupPartitionedExclusiveMulNV ( global uint) 0:326 direct index ( temp uint) 0:326 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 2 (const int) 0:326 Constant: 0:326 0 (const int) 0:326 'ballot' ( temp 4-component vector of uint) 0:327 move second child to first child ( temp 2-component vector of uint) 0:327 vector swizzle ( temp 2-component vector of uint) 0:327 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:327 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'invocation' ( temp uint) 0:327 Constant: 0:327 2 (const int) 0:327 Sequence 0:327 Constant: 0:327 0 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 subgroupPartitionedExclusiveMulNV ( global 2-component vector of uint) 0:327 vector swizzle ( temp 2-component vector of uint) 0:327 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:327 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 Constant: 0:327 1 (const int) 0:327 Constant: 0:327 2 (const int) 0:327 Sequence 0:327 Constant: 0:327 0 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 'ballot' ( temp 4-component vector of uint) 0:328 move second child to first child ( temp 3-component vector of uint) 0:328 vector swizzle ( temp 3-component vector of uint) 0:328 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:328 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:328 'invocation' ( temp uint) 0:328 Constant: 0:328 2 (const int) 0:328 Sequence 0:328 Constant: 0:328 0 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 Constant: 0:328 2 (const int) 0:328 subgroupPartitionedExclusiveMulNV ( global 3-component vector of uint) 0:328 vector swizzle ( temp 3-component vector of uint) 0:328 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:328 Constant: 0:328 2 (const int) 0:328 Constant: 0:328 2 (const int) 0:328 Sequence 0:328 Constant: 0:328 0 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 Constant: 0:328 2 (const int) 0:328 'ballot' ( temp 4-component vector of uint) 0:329 move second child to first child ( temp 4-component vector of uint) 0:329 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:329 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'invocation' ( temp uint) 0:329 Constant: 0:329 2 (const int) 0:329 subgroupPartitionedExclusiveMulNV ( global 4-component vector of uint) 0:329 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:329 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 Constant: 0:329 3 (const int) 0:329 Constant: 0:329 2 (const int) 0:329 'ballot' ( temp 4-component vector of uint) 0:331 move second child to first child ( temp double) 0:331 direct index ( temp double) 0:331 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:331 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'invocation' ( temp uint) 0:331 Constant: 0:331 3 (const int) 0:331 Constant: 0:331 0 (const int) 0:331 subgroupPartitionedExclusiveMulNV ( global double) 0:331 direct index ( temp double) 0:331 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 3 (const int) 0:331 Constant: 0:331 0 (const int) 0:331 'ballot' ( temp 4-component vector of uint) 0:332 move second child to first child ( temp 2-component vector of double) 0:332 vector swizzle ( temp 2-component vector of double) 0:332 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:332 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'invocation' ( temp uint) 0:332 Constant: 0:332 3 (const int) 0:332 Sequence 0:332 Constant: 0:332 0 (const int) 0:332 Constant: 0:332 1 (const int) 0:332 subgroupPartitionedExclusiveMulNV ( global 2-component vector of double) 0:332 vector swizzle ( temp 2-component vector of double) 0:332 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:332 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 Constant: 0:332 1 (const int) 0:332 Constant: 0:332 3 (const int) 0:332 Sequence 0:332 Constant: 0:332 0 (const int) 0:332 Constant: 0:332 1 (const int) 0:332 'ballot' ( temp 4-component vector of uint) 0:333 move second child to first child ( temp 3-component vector of double) 0:333 vector swizzle ( temp 3-component vector of double) 0:333 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:333 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:333 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:333 'invocation' ( temp uint) 0:333 Constant: 0:333 3 (const int) 0:333 Sequence 0:333 Constant: 0:333 0 (const int) 0:333 Constant: 0:333 1 (const int) 0:333 Constant: 0:333 2 (const int) 0:333 subgroupPartitionedExclusiveMulNV ( global 3-component vector of double) 0:333 vector swizzle ( temp 3-component vector of double) 0:333 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:333 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:333 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:333 Constant: 0:333 2 (const int) 0:333 Constant: 0:333 3 (const int) 0:333 Sequence 0:333 Constant: 0:333 0 (const int) 0:333 Constant: 0:333 1 (const int) 0:333 Constant: 0:333 2 (const int) 0:333 'ballot' ( temp 4-component vector of uint) 0:334 move second child to first child ( temp 4-component vector of double) 0:334 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:334 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'invocation' ( temp uint) 0:334 Constant: 0:334 3 (const int) 0:334 subgroupPartitionedExclusiveMulNV ( global 4-component vector of double) 0:334 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:334 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 Constant: 0:334 3 (const int) 0:334 Constant: 0:334 3 (const int) 0:334 'ballot' ( temp 4-component vector of uint) 0:336 move second child to first child ( temp float) 0:336 direct index ( temp float) 0:336 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:336 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'invocation' ( temp uint) 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 0 (const int) 0:336 subgroupPartitionedExclusiveMinNV ( global float) 0:336 direct index ( temp float) 0:336 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:336 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 0 (const int) 0:336 'ballot' ( temp 4-component vector of uint) 0:337 move second child to first child ( temp 2-component vector of float) 0:337 vector swizzle ( temp 2-component vector of float) 0:337 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:337 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'invocation' ( temp uint) 0:337 Constant: 0:337 0 (const int) 0:337 Sequence 0:337 Constant: 0:337 0 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 subgroupPartitionedExclusiveMinNV ( global 2-component vector of float) 0:337 vector swizzle ( temp 2-component vector of float) 0:337 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:337 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 Constant: 0:337 1 (const int) 0:337 Constant: 0:337 0 (const int) 0:337 Sequence 0:337 Constant: 0:337 0 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 'ballot' ( temp 4-component vector of uint) 0:338 move second child to first child ( temp 3-component vector of float) 0:338 vector swizzle ( temp 3-component vector of float) 0:338 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:338 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:338 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:338 'invocation' ( temp uint) 0:338 Constant: 0:338 0 (const int) 0:338 Sequence 0:338 Constant: 0:338 0 (const int) 0:338 Constant: 0:338 1 (const int) 0:338 Constant: 0:338 2 (const int) 0:338 subgroupPartitionedExclusiveMinNV ( global 3-component vector of float) 0:338 vector swizzle ( temp 3-component vector of float) 0:338 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:338 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:338 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:338 Constant: 0:338 2 (const int) 0:338 Constant: 0:338 0 (const int) 0:338 Sequence 0:338 Constant: 0:338 0 (const int) 0:338 Constant: 0:338 1 (const int) 0:338 Constant: 0:338 2 (const int) 0:338 'ballot' ( temp 4-component vector of uint) 0:339 move second child to first child ( temp 4-component vector of float) 0:339 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:339 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'invocation' ( temp uint) 0:339 Constant: 0:339 0 (const int) 0:339 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:339 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:339 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 Constant: 0:339 3 (const int) 0:339 Constant: 0:339 0 (const int) 0:339 'ballot' ( temp 4-component vector of uint) 0:341 move second child to first child ( temp int) 0:341 direct index ( temp int) 0:341 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:341 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'invocation' ( temp uint) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 0 (const int) 0:341 subgroupPartitionedExclusiveMinNV ( global int) 0:341 direct index ( temp int) 0:341 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:341 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 0 (const int) 0:341 'ballot' ( temp 4-component vector of uint) 0:342 move second child to first child ( temp 2-component vector of int) 0:342 vector swizzle ( temp 2-component vector of int) 0:342 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:342 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'invocation' ( temp uint) 0:342 Constant: 0:342 1 (const int) 0:342 Sequence 0:342 Constant: 0:342 0 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 subgroupPartitionedExclusiveMinNV ( global 2-component vector of int) 0:342 vector swizzle ( temp 2-component vector of int) 0:342 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:342 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 Constant: 0:342 1 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Sequence 0:342 Constant: 0:342 0 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 'ballot' ( temp 4-component vector of uint) 0:343 move second child to first child ( temp 3-component vector of int) 0:343 vector swizzle ( temp 3-component vector of int) 0:343 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:343 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:343 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:343 'invocation' ( temp uint) 0:343 Constant: 0:343 1 (const int) 0:343 Sequence 0:343 Constant: 0:343 0 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 Constant: 0:343 2 (const int) 0:343 subgroupPartitionedExclusiveMinNV ( global 3-component vector of int) 0:343 vector swizzle ( temp 3-component vector of int) 0:343 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:343 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:343 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:343 Constant: 0:343 2 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 Sequence 0:343 Constant: 0:343 0 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 Constant: 0:343 2 (const int) 0:343 'ballot' ( temp 4-component vector of uint) 0:344 move second child to first child ( temp 4-component vector of int) 0:344 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:344 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'invocation' ( temp uint) 0:344 Constant: 0:344 1 (const int) 0:344 subgroupPartitionedExclusiveMinNV ( global 4-component vector of int) 0:344 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:344 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 Constant: 0:344 3 (const int) 0:344 Constant: 0:344 1 (const int) 0:344 'ballot' ( temp 4-component vector of uint) 0:346 move second child to first child ( temp uint) 0:346 direct index ( temp uint) 0:346 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:346 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'invocation' ( temp uint) 0:346 Constant: 0:346 2 (const int) 0:346 Constant: 0:346 0 (const int) 0:346 subgroupPartitionedExclusiveMinNV ( global uint) 0:346 direct index ( temp uint) 0:346 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:346 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 2 (const int) 0:346 Constant: 0:346 0 (const int) 0:346 'ballot' ( temp 4-component vector of uint) 0:347 move second child to first child ( temp 2-component vector of uint) 0:347 vector swizzle ( temp 2-component vector of uint) 0:347 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:347 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'invocation' ( temp uint) 0:347 Constant: 0:347 2 (const int) 0:347 Sequence 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 1 (const int) 0:347 subgroupPartitionedExclusiveMinNV ( global 2-component vector of uint) 0:347 vector swizzle ( temp 2-component vector of uint) 0:347 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:347 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 Constant: 0:347 1 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 Sequence 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 1 (const int) 0:347 'ballot' ( temp 4-component vector of uint) 0:348 move second child to first child ( temp 3-component vector of uint) 0:348 vector swizzle ( temp 3-component vector of uint) 0:348 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:348 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:348 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:348 'invocation' ( temp uint) 0:348 Constant: 0:348 2 (const int) 0:348 Sequence 0:348 Constant: 0:348 0 (const int) 0:348 Constant: 0:348 1 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 subgroupPartitionedExclusiveMinNV ( global 3-component vector of uint) 0:348 vector swizzle ( temp 3-component vector of uint) 0:348 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:348 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:348 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:348 Constant: 0:348 2 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 Sequence 0:348 Constant: 0:348 0 (const int) 0:348 Constant: 0:348 1 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 'ballot' ( temp 4-component vector of uint) 0:349 move second child to first child ( temp 4-component vector of uint) 0:349 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:349 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'invocation' ( temp uint) 0:349 Constant: 0:349 2 (const int) 0:349 subgroupPartitionedExclusiveMinNV ( global 4-component vector of uint) 0:349 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:349 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 Constant: 0:349 3 (const int) 0:349 Constant: 0:349 2 (const int) 0:349 'ballot' ( temp 4-component vector of uint) 0:351 move second child to first child ( temp double) 0:351 direct index ( temp double) 0:351 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:351 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'invocation' ( temp uint) 0:351 Constant: 0:351 3 (const int) 0:351 Constant: 0:351 0 (const int) 0:351 subgroupPartitionedExclusiveMinNV ( global double) 0:351 direct index ( temp double) 0:351 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:351 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 3 (const int) 0:351 Constant: 0:351 0 (const int) 0:351 'ballot' ( temp 4-component vector of uint) 0:352 move second child to first child ( temp 2-component vector of double) 0:352 vector swizzle ( temp 2-component vector of double) 0:352 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:352 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'invocation' ( temp uint) 0:352 Constant: 0:352 3 (const int) 0:352 Sequence 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 subgroupPartitionedExclusiveMinNV ( global 2-component vector of double) 0:352 vector swizzle ( temp 2-component vector of double) 0:352 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:352 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 Constant: 0:352 1 (const int) 0:352 Constant: 0:352 3 (const int) 0:352 Sequence 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 'ballot' ( temp 4-component vector of uint) 0:353 move second child to first child ( temp 3-component vector of double) 0:353 vector swizzle ( temp 3-component vector of double) 0:353 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:353 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:353 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:353 'invocation' ( temp uint) 0:353 Constant: 0:353 3 (const int) 0:353 Sequence 0:353 Constant: 0:353 0 (const int) 0:353 Constant: 0:353 1 (const int) 0:353 Constant: 0:353 2 (const int) 0:353 subgroupPartitionedExclusiveMinNV ( global 3-component vector of double) 0:353 vector swizzle ( temp 3-component vector of double) 0:353 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:353 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:353 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:353 Constant: 0:353 2 (const int) 0:353 Constant: 0:353 3 (const int) 0:353 Sequence 0:353 Constant: 0:353 0 (const int) 0:353 Constant: 0:353 1 (const int) 0:353 Constant: 0:353 2 (const int) 0:353 'ballot' ( temp 4-component vector of uint) 0:354 move second child to first child ( temp 4-component vector of double) 0:354 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:354 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'invocation' ( temp uint) 0:354 Constant: 0:354 3 (const int) 0:354 subgroupPartitionedExclusiveMinNV ( global 4-component vector of double) 0:354 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:354 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 Constant: 0:354 3 (const int) 0:354 Constant: 0:354 3 (const int) 0:354 'ballot' ( temp 4-component vector of uint) 0:356 move second child to first child ( temp float) 0:356 direct index ( temp float) 0:356 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:356 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'invocation' ( temp uint) 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 0 (const int) 0:356 subgroupPartitionedExclusiveMaxNV ( global float) 0:356 direct index ( temp float) 0:356 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:356 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 0 (const int) 0:356 'ballot' ( temp 4-component vector of uint) 0:357 move second child to first child ( temp 2-component vector of float) 0:357 vector swizzle ( temp 2-component vector of float) 0:357 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:357 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'invocation' ( temp uint) 0:357 Constant: 0:357 0 (const int) 0:357 Sequence 0:357 Constant: 0:357 0 (const int) 0:357 Constant: 0:357 1 (const int) 0:357 subgroupPartitionedExclusiveMaxNV ( global 2-component vector of float) 0:357 vector swizzle ( temp 2-component vector of float) 0:357 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:357 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 Constant: 0:357 1 (const int) 0:357 Constant: 0:357 0 (const int) 0:357 Sequence 0:357 Constant: 0:357 0 (const int) 0:357 Constant: 0:357 1 (const int) 0:357 'ballot' ( temp 4-component vector of uint) 0:358 move second child to first child ( temp 3-component vector of float) 0:358 vector swizzle ( temp 3-component vector of float) 0:358 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:358 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:358 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:358 'invocation' ( temp uint) 0:358 Constant: 0:358 0 (const int) 0:358 Sequence 0:358 Constant: 0:358 0 (const int) 0:358 Constant: 0:358 1 (const int) 0:358 Constant: 0:358 2 (const int) 0:358 subgroupPartitionedExclusiveMaxNV ( global 3-component vector of float) 0:358 vector swizzle ( temp 3-component vector of float) 0:358 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:358 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:358 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:358 Constant: 0:358 2 (const int) 0:358 Constant: 0:358 0 (const int) 0:358 Sequence 0:358 Constant: 0:358 0 (const int) 0:358 Constant: 0:358 1 (const int) 0:358 Constant: 0:358 2 (const int) 0:358 'ballot' ( temp 4-component vector of uint) 0:359 move second child to first child ( temp 4-component vector of float) 0:359 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:359 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'invocation' ( temp uint) 0:359 Constant: 0:359 0 (const int) 0:359 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:359 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:359 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 Constant: 0:359 3 (const int) 0:359 Constant: 0:359 0 (const int) 0:359 'ballot' ( temp 4-component vector of uint) 0:361 move second child to first child ( temp int) 0:361 direct index ( temp int) 0:361 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:361 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'invocation' ( temp uint) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 0 (const int) 0:361 subgroupPartitionedExclusiveMaxNV ( global int) 0:361 direct index ( temp int) 0:361 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:361 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 Constant: 0:361 0 (const int) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 0 (const int) 0:361 'ballot' ( temp 4-component vector of uint) 0:362 move second child to first child ( temp 2-component vector of int) 0:362 vector swizzle ( temp 2-component vector of int) 0:362 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:362 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'invocation' ( temp uint) 0:362 Constant: 0:362 1 (const int) 0:362 Sequence 0:362 Constant: 0:362 0 (const int) 0:362 Constant: 0:362 1 (const int) 0:362 subgroupPartitionedExclusiveMaxNV ( global 2-component vector of int) 0:362 vector swizzle ( temp 2-component vector of int) 0:362 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:362 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 Constant: 0:362 1 (const int) 0:362 Constant: 0:362 1 (const int) 0:362 Sequence 0:362 Constant: 0:362 0 (const int) 0:362 Constant: 0:362 1 (const int) 0:362 'ballot' ( temp 4-component vector of uint) 0:363 move second child to first child ( temp 3-component vector of int) 0:363 vector swizzle ( temp 3-component vector of int) 0:363 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:363 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:363 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:363 'invocation' ( temp uint) 0:363 Constant: 0:363 1 (const int) 0:363 Sequence 0:363 Constant: 0:363 0 (const int) 0:363 Constant: 0:363 1 (const int) 0:363 Constant: 0:363 2 (const int) 0:363 subgroupPartitionedExclusiveMaxNV ( global 3-component vector of int) 0:363 vector swizzle ( temp 3-component vector of int) 0:363 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:363 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:363 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:363 Constant: 0:363 2 (const int) 0:363 Constant: 0:363 1 (const int) 0:363 Sequence 0:363 Constant: 0:363 0 (const int) 0:363 Constant: 0:363 1 (const int) 0:363 Constant: 0:363 2 (const int) 0:363 'ballot' ( temp 4-component vector of uint) 0:364 move second child to first child ( temp 4-component vector of int) 0:364 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:364 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'invocation' ( temp uint) 0:364 Constant: 0:364 1 (const int) 0:364 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of int) 0:364 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:364 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 Constant: 0:364 3 (const int) 0:364 Constant: 0:364 1 (const int) 0:364 'ballot' ( temp 4-component vector of uint) 0:366 move second child to first child ( temp uint) 0:366 direct index ( temp uint) 0:366 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:366 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'invocation' ( temp uint) 0:366 Constant: 0:366 2 (const int) 0:366 Constant: 0:366 0 (const int) 0:366 subgroupPartitionedExclusiveMaxNV ( global uint) 0:366 direct index ( temp uint) 0:366 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:366 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 Constant: 0:366 0 (const int) 0:366 Constant: 0:366 2 (const int) 0:366 Constant: 0:366 0 (const int) 0:366 'ballot' ( temp 4-component vector of uint) 0:367 move second child to first child ( temp 2-component vector of uint) 0:367 vector swizzle ( temp 2-component vector of uint) 0:367 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:367 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'invocation' ( temp uint) 0:367 Constant: 0:367 2 (const int) 0:367 Sequence 0:367 Constant: 0:367 0 (const int) 0:367 Constant: 0:367 1 (const int) 0:367 subgroupPartitionedExclusiveMaxNV ( global 2-component vector of uint) 0:367 vector swizzle ( temp 2-component vector of uint) 0:367 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:367 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 Constant: 0:367 1 (const int) 0:367 Constant: 0:367 2 (const int) 0:367 Sequence 0:367 Constant: 0:367 0 (const int) 0:367 Constant: 0:367 1 (const int) 0:367 'ballot' ( temp 4-component vector of uint) 0:368 move second child to first child ( temp 3-component vector of uint) 0:368 vector swizzle ( temp 3-component vector of uint) 0:368 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:368 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:368 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:368 'invocation' ( temp uint) 0:368 Constant: 0:368 2 (const int) 0:368 Sequence 0:368 Constant: 0:368 0 (const int) 0:368 Constant: 0:368 1 (const int) 0:368 Constant: 0:368 2 (const int) 0:368 subgroupPartitionedExclusiveMaxNV ( global 3-component vector of uint) 0:368 vector swizzle ( temp 3-component vector of uint) 0:368 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:368 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:368 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:368 Constant: 0:368 2 (const int) 0:368 Constant: 0:368 2 (const int) 0:368 Sequence 0:368 Constant: 0:368 0 (const int) 0:368 Constant: 0:368 1 (const int) 0:368 Constant: 0:368 2 (const int) 0:368 'ballot' ( temp 4-component vector of uint) 0:369 move second child to first child ( temp 4-component vector of uint) 0:369 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:369 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'invocation' ( temp uint) 0:369 Constant: 0:369 2 (const int) 0:369 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of uint) 0:369 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:369 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 Constant: 0:369 3 (const int) 0:369 Constant: 0:369 2 (const int) 0:369 'ballot' ( temp 4-component vector of uint) 0:371 move second child to first child ( temp double) 0:371 direct index ( temp double) 0:371 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:371 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'invocation' ( temp uint) 0:371 Constant: 0:371 3 (const int) 0:371 Constant: 0:371 0 (const int) 0:371 subgroupPartitionedExclusiveMaxNV ( global double) 0:371 direct index ( temp double) 0:371 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:371 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 Constant: 0:371 0 (const int) 0:371 Constant: 0:371 3 (const int) 0:371 Constant: 0:371 0 (const int) 0:371 'ballot' ( temp 4-component vector of uint) 0:372 move second child to first child ( temp 2-component vector of double) 0:372 vector swizzle ( temp 2-component vector of double) 0:372 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:372 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'invocation' ( temp uint) 0:372 Constant: 0:372 3 (const int) 0:372 Sequence 0:372 Constant: 0:372 0 (const int) 0:372 Constant: 0:372 1 (const int) 0:372 subgroupPartitionedExclusiveMaxNV ( global 2-component vector of double) 0:372 vector swizzle ( temp 2-component vector of double) 0:372 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:372 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 Constant: 0:372 1 (const int) 0:372 Constant: 0:372 3 (const int) 0:372 Sequence 0:372 Constant: 0:372 0 (const int) 0:372 Constant: 0:372 1 (const int) 0:372 'ballot' ( temp 4-component vector of uint) 0:373 move second child to first child ( temp 3-component vector of double) 0:373 vector swizzle ( temp 3-component vector of double) 0:373 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:373 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:373 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:373 'invocation' ( temp uint) 0:373 Constant: 0:373 3 (const int) 0:373 Sequence 0:373 Constant: 0:373 0 (const int) 0:373 Constant: 0:373 1 (const int) 0:373 Constant: 0:373 2 (const int) 0:373 subgroupPartitionedExclusiveMaxNV ( global 3-component vector of double) 0:373 vector swizzle ( temp 3-component vector of double) 0:373 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:373 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:373 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:373 Constant: 0:373 2 (const int) 0:373 Constant: 0:373 3 (const int) 0:373 Sequence 0:373 Constant: 0:373 0 (const int) 0:373 Constant: 0:373 1 (const int) 0:373 Constant: 0:373 2 (const int) 0:373 'ballot' ( temp 4-component vector of uint) 0:374 move second child to first child ( temp 4-component vector of double) 0:374 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:374 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'invocation' ( temp uint) 0:374 Constant: 0:374 3 (const int) 0:374 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of double) 0:374 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:374 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 Constant: 0:374 3 (const int) 0:374 Constant: 0:374 3 (const int) 0:374 'ballot' ( temp 4-component vector of uint) 0:376 move second child to first child ( temp int) 0:376 direct index ( temp int) 0:376 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:376 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'invocation' ( temp uint) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 0 (const int) 0:376 subgroupPartitionedExclusiveAndNV ( global int) 0:376 direct index ( temp int) 0:376 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:376 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 Constant: 0:376 0 (const int) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 0 (const int) 0:376 'ballot' ( temp 4-component vector of uint) 0:377 move second child to first child ( temp 2-component vector of int) 0:377 vector swizzle ( temp 2-component vector of int) 0:377 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:377 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'invocation' ( temp uint) 0:377 Constant: 0:377 1 (const int) 0:377 Sequence 0:377 Constant: 0:377 0 (const int) 0:377 Constant: 0:377 1 (const int) 0:377 subgroupPartitionedExclusiveAndNV ( global 2-component vector of int) 0:377 vector swizzle ( temp 2-component vector of int) 0:377 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:377 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 Constant: 0:377 1 (const int) 0:377 Constant: 0:377 1 (const int) 0:377 Sequence 0:377 Constant: 0:377 0 (const int) 0:377 Constant: 0:377 1 (const int) 0:377 'ballot' ( temp 4-component vector of uint) 0:378 move second child to first child ( temp 3-component vector of int) 0:378 vector swizzle ( temp 3-component vector of int) 0:378 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:378 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:378 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:378 'invocation' ( temp uint) 0:378 Constant: 0:378 1 (const int) 0:378 Sequence 0:378 Constant: 0:378 0 (const int) 0:378 Constant: 0:378 1 (const int) 0:378 Constant: 0:378 2 (const int) 0:378 subgroupPartitionedExclusiveAndNV ( global 3-component vector of int) 0:378 vector swizzle ( temp 3-component vector of int) 0:378 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:378 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:378 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:378 Constant: 0:378 2 (const int) 0:378 Constant: 0:378 1 (const int) 0:378 Sequence 0:378 Constant: 0:378 0 (const int) 0:378 Constant: 0:378 1 (const int) 0:378 Constant: 0:378 2 (const int) 0:378 'ballot' ( temp 4-component vector of uint) 0:379 move second child to first child ( temp 4-component vector of int) 0:379 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:379 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'invocation' ( temp uint) 0:379 Constant: 0:379 1 (const int) 0:379 subgroupPartitionedExclusiveAndNV ( global 4-component vector of int) 0:379 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:379 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 Constant: 0:379 3 (const int) 0:379 Constant: 0:379 1 (const int) 0:379 'ballot' ( temp 4-component vector of uint) 0:381 move second child to first child ( temp uint) 0:381 direct index ( temp uint) 0:381 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:381 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'invocation' ( temp uint) 0:381 Constant: 0:381 2 (const int) 0:381 Constant: 0:381 0 (const int) 0:381 subgroupPartitionedExclusiveAndNV ( global uint) 0:381 direct index ( temp uint) 0:381 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:381 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 Constant: 0:381 0 (const int) 0:381 Constant: 0:381 2 (const int) 0:381 Constant: 0:381 0 (const int) 0:381 'ballot' ( temp 4-component vector of uint) 0:382 move second child to first child ( temp 2-component vector of uint) 0:382 vector swizzle ( temp 2-component vector of uint) 0:382 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:382 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'invocation' ( temp uint) 0:382 Constant: 0:382 2 (const int) 0:382 Sequence 0:382 Constant: 0:382 0 (const int) 0:382 Constant: 0:382 1 (const int) 0:382 subgroupPartitionedExclusiveAndNV ( global 2-component vector of uint) 0:382 vector swizzle ( temp 2-component vector of uint) 0:382 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:382 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 Constant: 0:382 1 (const int) 0:382 Constant: 0:382 2 (const int) 0:382 Sequence 0:382 Constant: 0:382 0 (const int) 0:382 Constant: 0:382 1 (const int) 0:382 'ballot' ( temp 4-component vector of uint) 0:383 move second child to first child ( temp 3-component vector of uint) 0:383 vector swizzle ( temp 3-component vector of uint) 0:383 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:383 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:383 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:383 'invocation' ( temp uint) 0:383 Constant: 0:383 2 (const int) 0:383 Sequence 0:383 Constant: 0:383 0 (const int) 0:383 Constant: 0:383 1 (const int) 0:383 Constant: 0:383 2 (const int) 0:383 subgroupPartitionedExclusiveAndNV ( global 3-component vector of uint) 0:383 vector swizzle ( temp 3-component vector of uint) 0:383 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:383 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:383 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:383 Constant: 0:383 2 (const int) 0:383 Constant: 0:383 2 (const int) 0:383 Sequence 0:383 Constant: 0:383 0 (const int) 0:383 Constant: 0:383 1 (const int) 0:383 Constant: 0:383 2 (const int) 0:383 'ballot' ( temp 4-component vector of uint) 0:384 move second child to first child ( temp 4-component vector of uint) 0:384 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:384 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'invocation' ( temp uint) 0:384 Constant: 0:384 2 (const int) 0:384 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:384 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:384 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 Constant: 0:384 3 (const int) 0:384 Constant: 0:384 2 (const int) 0:384 'ballot' ( temp 4-component vector of uint) 0:386 move second child to first child ( temp int) 0:386 direct index ( temp int) 0:386 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:386 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'invocation' ( temp uint) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 0 (const int) 0:386 Convert bool to int ( temp int) 0:386 subgroupPartitionedExclusiveAndNV ( global bool) 0:386 Compare Less Than ( temp bool) 0:386 direct index ( temp int) 0:386 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:386 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 0 (const int) 0:386 'ballot' ( temp 4-component vector of uint) 0:387 move second child to first child ( temp 2-component vector of int) 0:387 vector swizzle ( temp 2-component vector of int) 0:387 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:387 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'invocation' ( temp uint) 0:387 Constant: 0:387 1 (const int) 0:387 Sequence 0:387 Constant: 0:387 0 (const int) 0:387 Constant: 0:387 1 (const int) 0:387 Convert bool to int ( temp 2-component vector of int) 0:387 subgroupPartitionedExclusiveAndNV ( global 2-component vector of bool) 0:387 Compare Less Than ( global 2-component vector of bool) 0:387 vector swizzle ( temp 2-component vector of int) 0:387 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:387 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 Constant: 0:387 1 (const int) 0:387 Constant: 0:387 1 (const int) 0:387 Sequence 0:387 Constant: 0:387 0 (const int) 0:387 Constant: 0:387 1 (const int) 0:387 Constant: 0:387 0 (const int) 0:387 0 (const int) 0:387 'ballot' ( temp 4-component vector of uint) 0:388 move second child to first child ( temp 3-component vector of int) 0:388 vector swizzle ( temp 3-component vector of int) 0:388 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:388 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:388 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:388 'invocation' ( temp uint) 0:388 Constant: 0:388 1 (const int) 0:388 Sequence 0:388 Constant: 0:388 0 (const int) 0:388 Constant: 0:388 1 (const int) 0:388 Constant: 0:388 2 (const int) 0:388 Convert bool to int ( temp 3-component vector of int) 0:388 subgroupPartitionedExclusiveAndNV ( global 3-component vector of bool) 0:388 Compare Less Than ( global 3-component vector of bool) 0:388 vector swizzle ( temp 3-component vector of int) 0:388 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:388 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:388 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:388 Constant: 0:388 1 (const int) 0:388 Constant: 0:388 1 (const int) 0:388 Sequence 0:388 Constant: 0:388 0 (const int) 0:388 Constant: 0:388 1 (const int) 0:388 Constant: 0:388 2 (const int) 0:388 Constant: 0:388 0 (const int) 0:388 0 (const int) 0:388 0 (const int) 0:388 'ballot' ( temp 4-component vector of uint) 0:389 move second child to first child ( temp 4-component vector of int) 0:389 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:389 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'invocation' ( temp uint) 0:389 Constant: 0:389 1 (const int) 0:389 Convert bool to int ( temp 4-component vector of int) 0:389 subgroupPartitionedExclusiveAndNV ( global 4-component vector of bool) 0:389 Compare Less Than ( global 4-component vector of bool) 0:389 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:389 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 Constant: 0:389 1 (const int) 0:389 Constant: 0:389 1 (const int) 0:389 Constant: 0:389 0 (const int) 0:389 0 (const int) 0:389 0 (const int) 0:389 0 (const int) 0:389 'ballot' ( temp 4-component vector of uint) 0:391 move second child to first child ( temp int) 0:391 direct index ( temp int) 0:391 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:391 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'invocation' ( temp uint) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 0 (const int) 0:391 subgroupPartitionedExclusiveOrNV ( global int) 0:391 direct index ( temp int) 0:391 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:391 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 Constant: 0:391 0 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 0 (const int) 0:391 'ballot' ( temp 4-component vector of uint) 0:392 move second child to first child ( temp 2-component vector of int) 0:392 vector swizzle ( temp 2-component vector of int) 0:392 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:392 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'invocation' ( temp uint) 0:392 Constant: 0:392 1 (const int) 0:392 Sequence 0:392 Constant: 0:392 0 (const int) 0:392 Constant: 0:392 1 (const int) 0:392 subgroupPartitionedExclusiveOrNV ( global 2-component vector of int) 0:392 vector swizzle ( temp 2-component vector of int) 0:392 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:392 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 Constant: 0:392 1 (const int) 0:392 Constant: 0:392 1 (const int) 0:392 Sequence 0:392 Constant: 0:392 0 (const int) 0:392 Constant: 0:392 1 (const int) 0:392 'ballot' ( temp 4-component vector of uint) 0:393 move second child to first child ( temp 3-component vector of int) 0:393 vector swizzle ( temp 3-component vector of int) 0:393 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:393 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:393 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:393 'invocation' ( temp uint) 0:393 Constant: 0:393 1 (const int) 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 subgroupPartitionedExclusiveOrNV ( global 3-component vector of int) 0:393 vector swizzle ( temp 3-component vector of int) 0:393 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:393 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:393 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:393 Constant: 0:393 2 (const int) 0:393 Constant: 0:393 1 (const int) 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 'ballot' ( temp 4-component vector of uint) 0:394 move second child to first child ( temp 4-component vector of int) 0:394 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:394 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:394 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:394 'invocation' ( temp uint) 0:394 Constant: 0:394 1 (const int) 0:394 subgroupPartitionedExclusiveOrNV ( global 4-component vector of int) 0:394 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:394 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:394 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:394 Constant: 0:394 3 (const int) 0:394 Constant: 0:394 1 (const int) 0:394 'ballot' ( temp 4-component vector of uint) 0:396 move second child to first child ( temp uint) 0:396 direct index ( temp uint) 0:396 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:396 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:396 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:396 'invocation' ( temp uint) 0:396 Constant: 0:396 2 (const int) 0:396 Constant: 0:396 0 (const int) 0:396 subgroupPartitionedExclusiveOrNV ( global uint) 0:396 direct index ( temp uint) 0:396 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:396 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:396 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:396 Constant: 0:396 0 (const int) 0:396 Constant: 0:396 2 (const int) 0:396 Constant: 0:396 0 (const int) 0:396 'ballot' ( temp 4-component vector of uint) 0:397 move second child to first child ( temp 2-component vector of uint) 0:397 vector swizzle ( temp 2-component vector of uint) 0:397 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:397 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:397 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:397 'invocation' ( temp uint) 0:397 Constant: 0:397 2 (const int) 0:397 Sequence 0:397 Constant: 0:397 0 (const int) 0:397 Constant: 0:397 1 (const int) 0:397 subgroupPartitionedExclusiveOrNV ( global 2-component vector of uint) 0:397 vector swizzle ( temp 2-component vector of uint) 0:397 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:397 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:397 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:397 Constant: 0:397 1 (const int) 0:397 Constant: 0:397 2 (const int) 0:397 Sequence 0:397 Constant: 0:397 0 (const int) 0:397 Constant: 0:397 1 (const int) 0:397 'ballot' ( temp 4-component vector of uint) 0:398 move second child to first child ( temp 3-component vector of uint) 0:398 vector swizzle ( temp 3-component vector of uint) 0:398 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:398 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:398 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:398 'invocation' ( temp uint) 0:398 Constant: 0:398 2 (const int) 0:398 Sequence 0:398 Constant: 0:398 0 (const int) 0:398 Constant: 0:398 1 (const int) 0:398 Constant: 0:398 2 (const int) 0:398 subgroupPartitionedExclusiveOrNV ( global 3-component vector of uint) 0:398 vector swizzle ( temp 3-component vector of uint) 0:398 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:398 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:398 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:398 Constant: 0:398 2 (const int) 0:398 Constant: 0:398 2 (const int) 0:398 Sequence 0:398 Constant: 0:398 0 (const int) 0:398 Constant: 0:398 1 (const int) 0:398 Constant: 0:398 2 (const int) 0:398 'ballot' ( temp 4-component vector of uint) 0:399 move second child to first child ( temp 4-component vector of uint) 0:399 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:399 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:399 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:399 'invocation' ( temp uint) 0:399 Constant: 0:399 2 (const int) 0:399 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:399 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:399 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:399 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:399 Constant: 0:399 3 (const int) 0:399 Constant: 0:399 2 (const int) 0:399 'ballot' ( temp 4-component vector of uint) 0:401 move second child to first child ( temp int) 0:401 direct index ( temp int) 0:401 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:401 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:401 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:401 'invocation' ( temp uint) 0:401 Constant: 0:401 1 (const int) 0:401 Constant: 0:401 0 (const int) 0:401 Convert bool to int ( temp int) 0:401 subgroupPartitionedExclusiveOrNV ( global bool) 0:401 Compare Less Than ( temp bool) 0:401 direct index ( temp int) 0:401 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:401 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:401 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:401 Constant: 0:401 0 (const int) 0:401 Constant: 0:401 1 (const int) 0:401 Constant: 0:401 0 (const int) 0:401 Constant: 0:401 0 (const int) 0:401 'ballot' ( temp 4-component vector of uint) 0:402 move second child to first child ( temp 2-component vector of int) 0:402 vector swizzle ( temp 2-component vector of int) 0:402 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:402 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:402 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:402 'invocation' ( temp uint) 0:402 Constant: 0:402 1 (const int) 0:402 Sequence 0:402 Constant: 0:402 0 (const int) 0:402 Constant: 0:402 1 (const int) 0:402 Convert bool to int ( temp 2-component vector of int) 0:402 subgroupPartitionedExclusiveOrNV ( global 2-component vector of bool) 0:402 Compare Less Than ( global 2-component vector of bool) 0:402 vector swizzle ( temp 2-component vector of int) 0:402 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:402 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:402 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:402 Constant: 0:402 1 (const int) 0:402 Constant: 0:402 1 (const int) 0:402 Sequence 0:402 Constant: 0:402 0 (const int) 0:402 Constant: 0:402 1 (const int) 0:402 Constant: 0:402 0 (const int) 0:402 0 (const int) 0:402 'ballot' ( temp 4-component vector of uint) 0:403 move second child to first child ( temp 3-component vector of int) 0:403 vector swizzle ( temp 3-component vector of int) 0:403 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:403 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:403 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:403 'invocation' ( temp uint) 0:403 Constant: 0:403 1 (const int) 0:403 Sequence 0:403 Constant: 0:403 0 (const int) 0:403 Constant: 0:403 1 (const int) 0:403 Constant: 0:403 2 (const int) 0:403 Convert bool to int ( temp 3-component vector of int) 0:403 subgroupPartitionedExclusiveOrNV ( global 3-component vector of bool) 0:403 Compare Less Than ( global 3-component vector of bool) 0:403 vector swizzle ( temp 3-component vector of int) 0:403 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:403 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:403 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:403 Constant: 0:403 1 (const int) 0:403 Constant: 0:403 1 (const int) 0:403 Sequence 0:403 Constant: 0:403 0 (const int) 0:403 Constant: 0:403 1 (const int) 0:403 Constant: 0:403 2 (const int) 0:403 Constant: 0:403 0 (const int) 0:403 0 (const int) 0:403 0 (const int) 0:403 'ballot' ( temp 4-component vector of uint) 0:404 move second child to first child ( temp 4-component vector of int) 0:404 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:404 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:404 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:404 'invocation' ( temp uint) 0:404 Constant: 0:404 1 (const int) 0:404 Convert bool to int ( temp 4-component vector of int) 0:404 subgroupPartitionedExclusiveOrNV ( global 4-component vector of bool) 0:404 Compare Less Than ( global 4-component vector of bool) 0:404 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:404 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:404 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:404 Constant: 0:404 1 (const int) 0:404 Constant: 0:404 1 (const int) 0:404 Constant: 0:404 0 (const int) 0:404 0 (const int) 0:404 0 (const int) 0:404 0 (const int) 0:404 'ballot' ( temp 4-component vector of uint) 0:406 move second child to first child ( temp int) 0:406 direct index ( temp int) 0:406 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:406 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:406 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:406 'invocation' ( temp uint) 0:406 Constant: 0:406 1 (const int) 0:406 Constant: 0:406 0 (const int) 0:406 subgroupPartitionedExclusiveXorNV ( global int) 0:406 direct index ( temp int) 0:406 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:406 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:406 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:406 Constant: 0:406 0 (const int) 0:406 Constant: 0:406 1 (const int) 0:406 Constant: 0:406 0 (const int) 0:406 'ballot' ( temp 4-component vector of uint) 0:407 move second child to first child ( temp 2-component vector of int) 0:407 vector swizzle ( temp 2-component vector of int) 0:407 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:407 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:407 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:407 'invocation' ( temp uint) 0:407 Constant: 0:407 1 (const int) 0:407 Sequence 0:407 Constant: 0:407 0 (const int) 0:407 Constant: 0:407 1 (const int) 0:407 subgroupPartitionedExclusiveXorNV ( global 2-component vector of int) 0:407 vector swizzle ( temp 2-component vector of int) 0:407 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:407 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:407 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:407 Constant: 0:407 1 (const int) 0:407 Constant: 0:407 1 (const int) 0:407 Sequence 0:407 Constant: 0:407 0 (const int) 0:407 Constant: 0:407 1 (const int) 0:407 'ballot' ( temp 4-component vector of uint) 0:408 move second child to first child ( temp 3-component vector of int) 0:408 vector swizzle ( temp 3-component vector of int) 0:408 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:408 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:408 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:408 'invocation' ( temp uint) 0:408 Constant: 0:408 1 (const int) 0:408 Sequence 0:408 Constant: 0:408 0 (const int) 0:408 Constant: 0:408 1 (const int) 0:408 Constant: 0:408 2 (const int) 0:408 subgroupPartitionedExclusiveXorNV ( global 3-component vector of int) 0:408 vector swizzle ( temp 3-component vector of int) 0:408 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:408 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:408 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:408 Constant: 0:408 2 (const int) 0:408 Constant: 0:408 1 (const int) 0:408 Sequence 0:408 Constant: 0:408 0 (const int) 0:408 Constant: 0:408 1 (const int) 0:408 Constant: 0:408 2 (const int) 0:408 'ballot' ( temp 4-component vector of uint) 0:409 move second child to first child ( temp 4-component vector of int) 0:409 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:409 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:409 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:409 'invocation' ( temp uint) 0:409 Constant: 0:409 1 (const int) 0:409 subgroupPartitionedExclusiveXorNV ( global 4-component vector of int) 0:409 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:409 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:409 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:409 Constant: 0:409 3 (const int) 0:409 Constant: 0:409 1 (const int) 0:409 'ballot' ( temp 4-component vector of uint) 0:411 move second child to first child ( temp uint) 0:411 direct index ( temp uint) 0:411 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:411 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:411 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:411 'invocation' ( temp uint) 0:411 Constant: 0:411 2 (const int) 0:411 Constant: 0:411 0 (const int) 0:411 subgroupPartitionedExclusiveXorNV ( global uint) 0:411 direct index ( temp uint) 0:411 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:411 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:411 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:411 Constant: 0:411 0 (const int) 0:411 Constant: 0:411 2 (const int) 0:411 Constant: 0:411 0 (const int) 0:411 'ballot' ( temp 4-component vector of uint) 0:412 move second child to first child ( temp 2-component vector of uint) 0:412 vector swizzle ( temp 2-component vector of uint) 0:412 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:412 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:412 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:412 'invocation' ( temp uint) 0:412 Constant: 0:412 2 (const int) 0:412 Sequence 0:412 Constant: 0:412 0 (const int) 0:412 Constant: 0:412 1 (const int) 0:412 subgroupPartitionedExclusiveXorNV ( global 2-component vector of uint) 0:412 vector swizzle ( temp 2-component vector of uint) 0:412 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:412 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:412 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:412 Constant: 0:412 1 (const int) 0:412 Constant: 0:412 2 (const int) 0:412 Sequence 0:412 Constant: 0:412 0 (const int) 0:412 Constant: 0:412 1 (const int) 0:412 'ballot' ( temp 4-component vector of uint) 0:413 move second child to first child ( temp 3-component vector of uint) 0:413 vector swizzle ( temp 3-component vector of uint) 0:413 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:413 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:413 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:413 'invocation' ( temp uint) 0:413 Constant: 0:413 2 (const int) 0:413 Sequence 0:413 Constant: 0:413 0 (const int) 0:413 Constant: 0:413 1 (const int) 0:413 Constant: 0:413 2 (const int) 0:413 subgroupPartitionedExclusiveXorNV ( global 3-component vector of uint) 0:413 vector swizzle ( temp 3-component vector of uint) 0:413 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:413 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:413 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:413 Constant: 0:413 2 (const int) 0:413 Constant: 0:413 2 (const int) 0:413 Sequence 0:413 Constant: 0:413 0 (const int) 0:413 Constant: 0:413 1 (const int) 0:413 Constant: 0:413 2 (const int) 0:413 'ballot' ( temp 4-component vector of uint) 0:414 move second child to first child ( temp 4-component vector of uint) 0:414 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:414 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:414 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:414 'invocation' ( temp uint) 0:414 Constant: 0:414 2 (const int) 0:414 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:414 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:414 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:414 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:414 Constant: 0:414 3 (const int) 0:414 Constant: 0:414 2 (const int) 0:414 'ballot' ( temp 4-component vector of uint) 0:416 move second child to first child ( temp int) 0:416 direct index ( temp int) 0:416 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:416 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:416 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:416 'invocation' ( temp uint) 0:416 Constant: 0:416 1 (const int) 0:416 Constant: 0:416 0 (const int) 0:416 Convert bool to int ( temp int) 0:416 subgroupPartitionedExclusiveXorNV ( global bool) 0:416 Compare Less Than ( temp bool) 0:416 direct index ( temp int) 0:416 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:416 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:416 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:416 Constant: 0:416 0 (const int) 0:416 Constant: 0:416 1 (const int) 0:416 Constant: 0:416 0 (const int) 0:416 Constant: 0:416 0 (const int) 0:416 'ballot' ( temp 4-component vector of uint) 0:417 move second child to first child ( temp 2-component vector of int) 0:417 vector swizzle ( temp 2-component vector of int) 0:417 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:417 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:417 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:417 'invocation' ( temp uint) 0:417 Constant: 0:417 1 (const int) 0:417 Sequence 0:417 Constant: 0:417 0 (const int) 0:417 Constant: 0:417 1 (const int) 0:417 Convert bool to int ( temp 2-component vector of int) 0:417 subgroupPartitionedExclusiveXorNV ( global 2-component vector of bool) 0:417 Compare Less Than ( global 2-component vector of bool) 0:417 vector swizzle ( temp 2-component vector of int) 0:417 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:417 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:417 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:417 Constant: 0:417 1 (const int) 0:417 Constant: 0:417 1 (const int) 0:417 Sequence 0:417 Constant: 0:417 0 (const int) 0:417 Constant: 0:417 1 (const int) 0:417 Constant: 0:417 0 (const int) 0:417 0 (const int) 0:417 'ballot' ( temp 4-component vector of uint) 0:418 move second child to first child ( temp 3-component vector of int) 0:418 vector swizzle ( temp 3-component vector of int) 0:418 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:418 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:418 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:418 'invocation' ( temp uint) 0:418 Constant: 0:418 1 (const int) 0:418 Sequence 0:418 Constant: 0:418 0 (const int) 0:418 Constant: 0:418 1 (const int) 0:418 Constant: 0:418 2 (const int) 0:418 Convert bool to int ( temp 3-component vector of int) 0:418 subgroupPartitionedExclusiveXorNV ( global 3-component vector of bool) 0:418 Compare Less Than ( global 3-component vector of bool) 0:418 vector swizzle ( temp 3-component vector of int) 0:418 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:418 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:418 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:418 Constant: 0:418 1 (const int) 0:418 Constant: 0:418 1 (const int) 0:418 Sequence 0:418 Constant: 0:418 0 (const int) 0:418 Constant: 0:418 1 (const int) 0:418 Constant: 0:418 2 (const int) 0:418 Constant: 0:418 0 (const int) 0:418 0 (const int) 0:418 0 (const int) 0:418 'ballot' ( temp 4-component vector of uint) 0:419 move second child to first child ( temp 4-component vector of int) 0:419 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:419 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:419 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:419 'invocation' ( temp uint) 0:419 Constant: 0:419 1 (const int) 0:419 Convert bool to int ( temp 4-component vector of int) 0:419 subgroupPartitionedExclusiveXorNV ( global 4-component vector of bool) 0:419 Compare Less Than ( global 4-component vector of bool) 0:419 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:419 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:419 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:419 Constant: 0:419 1 (const int) 0:419 Constant: 0:419 1 (const int) 0:419 Constant: 0:419 0 (const int) 0:419 0 (const int) 0:419 0 (const int) 0:419 0 (const int) 0:419 'ballot' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_NV_shader_subgroup_partitioned local_size = (8, 1, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of uint) 0:19 'ballot' ( temp 4-component vector of uint) 0:19 subgroupPartitionNV ( global 4-component vector of uint) 0:19 'invocation' ( temp uint) 0:21 move second child to first child ( temp 4-component vector of uint) 0:21 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupPartitionNV ( global 4-component vector of uint) 0:21 direct index ( temp float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 move second child to first child ( temp 4-component vector of uint) 0:22 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupPartitionNV ( global 4-component vector of uint) 0:22 vector swizzle ( temp 2-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:23 move second child to first child ( temp 4-component vector of uint) 0:23 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:23 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:23 'invocation' ( temp uint) 0:23 Constant: 0:23 2 (const int) 0:23 subgroupPartitionNV ( global 4-component vector of uint) 0:23 vector swizzle ( temp 3-component vector of float) 0:23 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Sequence 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 2 (const int) 0:24 move second child to first child ( temp 4-component vector of uint) 0:24 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupPartitionNV ( global 4-component vector of uint) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:26 move second child to first child ( temp 4-component vector of uint) 0:26 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupPartitionNV ( global 4-component vector of uint) 0:26 direct index ( temp int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:27 move second child to first child ( temp 4-component vector of uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupPartitionNV ( global 4-component vector of uint) 0:27 vector swizzle ( temp 2-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:28 move second child to first child ( temp 4-component vector of uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'invocation' ( temp uint) 0:28 Constant: 0:28 2 (const int) 0:28 subgroupPartitionNV ( global 4-component vector of uint) 0:28 vector swizzle ( temp 3-component vector of int) 0:28 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Sequence 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 2 (const int) 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 subgroupPartitionNV ( global 4-component vector of uint) 0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:31 move second child to first child ( temp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupPartitionNV ( global 4-component vector of uint) 0:31 direct index ( temp uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 0 (const int) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupPartitionNV ( global 4-component vector of uint) 0:32 vector swizzle ( temp 2-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'invocation' ( temp uint) 0:33 Constant: 0:33 2 (const int) 0:33 subgroupPartitionNV ( global 4-component vector of uint) 0:33 vector swizzle ( temp 3-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 2 (const int) 0:34 subgroupPartitionNV ( global 4-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 2 (const int) 0:36 move second child to first child ( temp 4-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupPartitionNV ( global 4-component vector of uint) 0:36 direct index ( temp double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupPartitionNV ( global 4-component vector of uint) 0:37 vector swizzle ( temp 2-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:38 move second child to first child ( temp 4-component vector of uint) 0:38 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:38 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'invocation' ( temp uint) 0:38 Constant: 0:38 2 (const int) 0:38 subgroupPartitionNV ( global 4-component vector of uint) 0:38 vector swizzle ( temp 3-component vector of double) 0:38 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 3 (const int) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:39 move second child to first child ( temp 4-component vector of uint) 0:39 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 2 (const int) 0:39 subgroupPartitionNV ( global 4-component vector of uint) 0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 3 (const int) 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupPartitionNV ( global 4-component vector of uint) 0:41 Convert int to bool ( temp bool) 0:41 direct index ( temp int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:42 move second child to first child ( temp 4-component vector of uint) 0:42 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupPartitionNV ( global 4-component vector of uint) 0:42 Convert int to bool ( temp 2-component vector of bool) 0:42 vector swizzle ( temp 2-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:43 move second child to first child ( temp 4-component vector of uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:43 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:43 'invocation' ( temp uint) 0:43 Constant: 0:43 2 (const int) 0:43 subgroupPartitionNV ( global 4-component vector of uint) 0:43 Convert int to bool ( temp 3-component vector of bool) 0:43 vector swizzle ( temp 3-component vector of int) 0:43 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Sequence 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 2 (const int) 0:44 move second child to first child ( temp 4-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupPartitionNV ( global 4-component vector of uint) 0:44 Convert int to bool ( temp 4-component vector of bool) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:46 move second child to first child ( temp float) 0:46 direct index ( temp float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 subgroupPartitionedAddNV ( global float) 0:46 direct index ( temp float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 'ballot' ( temp 4-component vector of uint) 0:47 move second child to first child ( temp 2-component vector of float) 0:47 vector swizzle ( temp 2-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 0 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 subgroupPartitionedAddNV ( global 2-component vector of float) 0:47 vector swizzle ( temp 2-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 'ballot' ( temp 4-component vector of uint) 0:48 move second child to first child ( temp 3-component vector of float) 0:48 vector swizzle ( temp 3-component vector of float) 0:48 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:48 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:48 'invocation' ( temp uint) 0:48 Constant: 0:48 0 (const int) 0:48 Sequence 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 subgroupPartitionedAddNV ( global 3-component vector of float) 0:48 vector swizzle ( temp 3-component vector of float) 0:48 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Sequence 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 'ballot' ( temp 4-component vector of uint) 0:49 move second child to first child ( temp 4-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupPartitionedAddNV ( global 4-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'ballot' ( temp 4-component vector of uint) 0:51 move second child to first child ( temp int) 0:51 direct index ( temp int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 subgroupPartitionedAddNV ( global int) 0:51 direct index ( temp int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 'ballot' ( temp 4-component vector of uint) 0:52 move second child to first child ( temp 2-component vector of int) 0:52 vector swizzle ( temp 2-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 1 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 subgroupPartitionedAddNV ( global 2-component vector of int) 0:52 vector swizzle ( temp 2-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 'ballot' ( temp 4-component vector of uint) 0:53 move second child to first child ( temp 3-component vector of int) 0:53 vector swizzle ( temp 3-component vector of int) 0:53 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:53 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:53 'invocation' ( temp uint) 0:53 Constant: 0:53 1 (const int) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 subgroupPartitionedAddNV ( global 3-component vector of int) 0:53 vector swizzle ( temp 3-component vector of int) 0:53 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 'ballot' ( temp 4-component vector of uint) 0:54 move second child to first child ( temp 4-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 1 (const int) 0:54 subgroupPartitionedAddNV ( global 4-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 'ballot' ( temp 4-component vector of uint) 0:56 move second child to first child ( temp uint) 0:56 direct index ( temp uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 subgroupPartitionedAddNV ( global uint) 0:56 direct index ( temp uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 'ballot' ( temp 4-component vector of uint) 0:57 move second child to first child ( temp 2-component vector of uint) 0:57 vector swizzle ( temp 2-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 2 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 subgroupPartitionedAddNV ( global 2-component vector of uint) 0:57 vector swizzle ( temp 2-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 'ballot' ( temp 4-component vector of uint) 0:58 move second child to first child ( temp 3-component vector of uint) 0:58 vector swizzle ( temp 3-component vector of uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:58 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:58 'invocation' ( temp uint) 0:58 Constant: 0:58 2 (const int) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 subgroupPartitionedAddNV ( global 3-component vector of uint) 0:58 vector swizzle ( temp 3-component vector of uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 'ballot' ( temp 4-component vector of uint) 0:59 move second child to first child ( temp 4-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 2 (const int) 0:59 subgroupPartitionedAddNV ( global 4-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 'ballot' ( temp 4-component vector of uint) 0:61 move second child to first child ( temp double) 0:61 direct index ( temp double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 subgroupPartitionedAddNV ( global double) 0:61 direct index ( temp double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 'ballot' ( temp 4-component vector of uint) 0:62 move second child to first child ( temp 2-component vector of double) 0:62 vector swizzle ( temp 2-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 3 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 subgroupPartitionedAddNV ( global 2-component vector of double) 0:62 vector swizzle ( temp 2-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 3 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 'ballot' ( temp 4-component vector of uint) 0:63 move second child to first child ( temp 3-component vector of double) 0:63 vector swizzle ( temp 3-component vector of double) 0:63 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:63 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'invocation' ( temp uint) 0:63 Constant: 0:63 3 (const int) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 subgroupPartitionedAddNV ( global 3-component vector of double) 0:63 vector swizzle ( temp 3-component vector of double) 0:63 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 3 (const int) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 'ballot' ( temp 4-component vector of uint) 0:64 move second child to first child ( temp 4-component vector of double) 0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 3 (const int) 0:64 subgroupPartitionedAddNV ( global 4-component vector of double) 0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 3 (const int) 0:64 Constant: 0:64 3 (const int) 0:64 'ballot' ( temp 4-component vector of uint) 0:66 move second child to first child ( temp float) 0:66 direct index ( temp float) 0:66 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 subgroupPartitionedMulNV ( global float) 0:66 direct index ( temp float) 0:66 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 'ballot' ( temp 4-component vector of uint) 0:67 move second child to first child ( temp 2-component vector of float) 0:67 vector swizzle ( temp 2-component vector of float) 0:67 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 0 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 subgroupPartitionedMulNV ( global 2-component vector of float) 0:67 vector swizzle ( temp 2-component vector of float) 0:67 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 0 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 'ballot' ( temp 4-component vector of uint) 0:68 move second child to first child ( temp 3-component vector of float) 0:68 vector swizzle ( temp 3-component vector of float) 0:68 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:68 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'invocation' ( temp uint) 0:68 Constant: 0:68 0 (const int) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 subgroupPartitionedMulNV ( global 3-component vector of float) 0:68 vector swizzle ( temp 3-component vector of float) 0:68 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 'ballot' ( temp 4-component vector of uint) 0:69 move second child to first child ( temp 4-component vector of float) 0:69 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 0 (const int) 0:69 subgroupPartitionedMulNV ( global 4-component vector of float) 0:69 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 3 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 'ballot' ( temp 4-component vector of uint) 0:71 move second child to first child ( temp int) 0:71 direct index ( temp int) 0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 subgroupPartitionedMulNV ( global int) 0:71 direct index ( temp int) 0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 'ballot' ( temp 4-component vector of uint) 0:72 move second child to first child ( temp 2-component vector of int) 0:72 vector swizzle ( temp 2-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 1 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 subgroupPartitionedMulNV ( global 2-component vector of int) 0:72 vector swizzle ( temp 2-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 'ballot' ( temp 4-component vector of uint) 0:73 move second child to first child ( temp 3-component vector of int) 0:73 vector swizzle ( temp 3-component vector of int) 0:73 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:73 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'invocation' ( temp uint) 0:73 Constant: 0:73 1 (const int) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 subgroupPartitionedMulNV ( global 3-component vector of int) 0:73 vector swizzle ( temp 3-component vector of int) 0:73 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 'ballot' ( temp 4-component vector of uint) 0:74 move second child to first child ( temp 4-component vector of int) 0:74 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 1 (const int) 0:74 subgroupPartitionedMulNV ( global 4-component vector of int) 0:74 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 'ballot' ( temp 4-component vector of uint) 0:76 move second child to first child ( temp uint) 0:76 direct index ( temp uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 subgroupPartitionedMulNV ( global uint) 0:76 direct index ( temp uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 'ballot' ( temp 4-component vector of uint) 0:77 move second child to first child ( temp 2-component vector of uint) 0:77 vector swizzle ( temp 2-component vector of uint) 0:77 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 2 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 subgroupPartitionedMulNV ( global 2-component vector of uint) 0:77 vector swizzle ( temp 2-component vector of uint) 0:77 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 'ballot' ( temp 4-component vector of uint) 0:78 move second child to first child ( temp 3-component vector of uint) 0:78 vector swizzle ( temp 3-component vector of uint) 0:78 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:78 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'invocation' ( temp uint) 0:78 Constant: 0:78 2 (const int) 0:78 Sequence 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 2 (const int) 0:78 subgroupPartitionedMulNV ( global 3-component vector of uint) 0:78 vector swizzle ( temp 3-component vector of uint) 0:78 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:78 Constant: 0:78 2 (const int) 0:78 Constant: 0:78 2 (const int) 0:78 Sequence 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 2 (const int) 0:78 'ballot' ( temp 4-component vector of uint) 0:79 move second child to first child ( temp 4-component vector of uint) 0:79 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 2 (const int) 0:79 subgroupPartitionedMulNV ( global 4-component vector of uint) 0:79 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 3 (const int) 0:79 Constant: 0:79 2 (const int) 0:79 'ballot' ( temp 4-component vector of uint) 0:81 move second child to first child ( temp double) 0:81 direct index ( temp double) 0:81 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 subgroupPartitionedMulNV ( global double) 0:81 direct index ( temp double) 0:81 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 'ballot' ( temp 4-component vector of uint) 0:82 move second child to first child ( temp 2-component vector of double) 0:82 vector swizzle ( temp 2-component vector of double) 0:82 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 3 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 subgroupPartitionedMulNV ( global 2-component vector of double) 0:82 vector swizzle ( temp 2-component vector of double) 0:82 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 3 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 'ballot' ( temp 4-component vector of uint) 0:83 move second child to first child ( temp 3-component vector of double) 0:83 vector swizzle ( temp 3-component vector of double) 0:83 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:83 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'invocation' ( temp uint) 0:83 Constant: 0:83 3 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 subgroupPartitionedMulNV ( global 3-component vector of double) 0:83 vector swizzle ( temp 3-component vector of double) 0:83 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 3 (const int) 0:83 Sequence 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 'ballot' ( temp 4-component vector of uint) 0:84 move second child to first child ( temp 4-component vector of double) 0:84 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 3 (const int) 0:84 subgroupPartitionedMulNV ( global 4-component vector of double) 0:84 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 3 (const int) 0:84 Constant: 0:84 3 (const int) 0:84 'ballot' ( temp 4-component vector of uint) 0:86 move second child to first child ( temp float) 0:86 direct index ( temp float) 0:86 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:86 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'invocation' ( temp uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 subgroupPartitionedMinNV ( global float) 0:86 direct index ( temp float) 0:86 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 'ballot' ( temp 4-component vector of uint) 0:87 move second child to first child ( temp 2-component vector of float) 0:87 vector swizzle ( temp 2-component vector of float) 0:87 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:87 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'invocation' ( temp uint) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 subgroupPartitionedMinNV ( global 2-component vector of float) 0:87 vector swizzle ( temp 2-component vector of float) 0:87 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 'ballot' ( temp 4-component vector of uint) 0:88 move second child to first child ( temp 3-component vector of float) 0:88 vector swizzle ( temp 3-component vector of float) 0:88 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:88 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:88 'invocation' ( temp uint) 0:88 Constant: 0:88 0 (const int) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 subgroupPartitionedMinNV ( global 3-component vector of float) 0:88 vector swizzle ( temp 3-component vector of float) 0:88 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 'ballot' ( temp 4-component vector of uint) 0:89 move second child to first child ( temp 4-component vector of float) 0:89 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:89 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'invocation' ( temp uint) 0:89 Constant: 0:89 0 (const int) 0:89 subgroupPartitionedMinNV ( global 4-component vector of float) 0:89 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 Constant: 0:89 3 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 'ballot' ( temp 4-component vector of uint) 0:91 move second child to first child ( temp int) 0:91 direct index ( temp int) 0:91 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:91 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'invocation' ( temp uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 subgroupPartitionedMinNV ( global int) 0:91 direct index ( temp int) 0:91 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 'ballot' ( temp 4-component vector of uint) 0:92 move second child to first child ( temp 2-component vector of int) 0:92 vector swizzle ( temp 2-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:92 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'invocation' ( temp uint) 0:92 Constant: 0:92 1 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 subgroupPartitionedMinNV ( global 2-component vector of int) 0:92 vector swizzle ( temp 2-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 'ballot' ( temp 4-component vector of uint) 0:93 move second child to first child ( temp 3-component vector of int) 0:93 vector swizzle ( temp 3-component vector of int) 0:93 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:93 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:93 'invocation' ( temp uint) 0:93 Constant: 0:93 1 (const int) 0:93 Sequence 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 2 (const int) 0:93 subgroupPartitionedMinNV ( global 3-component vector of int) 0:93 vector swizzle ( temp 3-component vector of int) 0:93 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:93 Constant: 0:93 2 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Sequence 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 2 (const int) 0:93 'ballot' ( temp 4-component vector of uint) 0:94 move second child to first child ( temp 4-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:94 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'invocation' ( temp uint) 0:94 Constant: 0:94 1 (const int) 0:94 subgroupPartitionedMinNV ( global 4-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 'ballot' ( temp 4-component vector of uint) 0:96 move second child to first child ( temp uint) 0:96 direct index ( temp uint) 0:96 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:96 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'invocation' ( temp uint) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 subgroupPartitionedMinNV ( global uint) 0:96 direct index ( temp uint) 0:96 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 'ballot' ( temp 4-component vector of uint) 0:97 move second child to first child ( temp 2-component vector of uint) 0:97 vector swizzle ( temp 2-component vector of uint) 0:97 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:97 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'invocation' ( temp uint) 0:97 Constant: 0:97 2 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 subgroupPartitionedMinNV ( global 2-component vector of uint) 0:97 vector swizzle ( temp 2-component vector of uint) 0:97 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 'ballot' ( temp 4-component vector of uint) 0:98 move second child to first child ( temp 3-component vector of uint) 0:98 vector swizzle ( temp 3-component vector of uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:98 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:98 'invocation' ( temp uint) 0:98 Constant: 0:98 2 (const int) 0:98 Sequence 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 subgroupPartitionedMinNV ( global 3-component vector of uint) 0:98 vector swizzle ( temp 3-component vector of uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Sequence 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 'ballot' ( temp 4-component vector of uint) 0:99 move second child to first child ( temp 4-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:99 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'invocation' ( temp uint) 0:99 Constant: 0:99 2 (const int) 0:99 subgroupPartitionedMinNV ( global 4-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 Constant: 0:99 3 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 'ballot' ( temp 4-component vector of uint) 0:101 move second child to first child ( temp double) 0:101 direct index ( temp double) 0:101 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:101 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'invocation' ( temp uint) 0:101 Constant: 0:101 3 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 subgroupPartitionedMinNV ( global double) 0:101 direct index ( temp double) 0:101 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 3 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 'ballot' ( temp 4-component vector of uint) 0:102 move second child to first child ( temp 2-component vector of double) 0:102 vector swizzle ( temp 2-component vector of double) 0:102 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:102 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'invocation' ( temp uint) 0:102 Constant: 0:102 3 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 subgroupPartitionedMinNV ( global 2-component vector of double) 0:102 vector swizzle ( temp 2-component vector of double) 0:102 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 3 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 'ballot' ( temp 4-component vector of uint) 0:103 move second child to first child ( temp 3-component vector of double) 0:103 vector swizzle ( temp 3-component vector of double) 0:103 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:103 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:103 'invocation' ( temp uint) 0:103 Constant: 0:103 3 (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:103 subgroupPartitionedMinNV ( global 3-component vector of double) 0:103 vector swizzle ( temp 3-component vector of double) 0:103 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:103 Constant: 0:103 2 (const int) 0:103 Constant: 0:103 3 (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:103 'ballot' ( temp 4-component vector of uint) 0:104 move second child to first child ( temp 4-component vector of double) 0:104 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:104 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'invocation' ( temp uint) 0:104 Constant: 0:104 3 (const int) 0:104 subgroupPartitionedMinNV ( global 4-component vector of double) 0:104 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 Constant: 0:104 3 (const int) 0:104 Constant: 0:104 3 (const int) 0:104 'ballot' ( temp 4-component vector of uint) 0:106 move second child to first child ( temp float) 0:106 direct index ( temp float) 0:106 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:106 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'invocation' ( temp uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 subgroupPartitionedMaxNV ( global float) 0:106 direct index ( temp float) 0:106 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 'ballot' ( temp 4-component vector of uint) 0:107 move second child to first child ( temp 2-component vector of float) 0:107 vector swizzle ( temp 2-component vector of float) 0:107 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:107 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'invocation' ( temp uint) 0:107 Constant: 0:107 0 (const int) 0:107 Sequence 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 1 (const int) 0:107 subgroupPartitionedMaxNV ( global 2-component vector of float) 0:107 vector swizzle ( temp 2-component vector of float) 0:107 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 Constant: 0:107 1 (const int) 0:107 Constant: 0:107 0 (const int) 0:107 Sequence 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 1 (const int) 0:107 'ballot' ( temp 4-component vector of uint) 0:108 move second child to first child ( temp 3-component vector of float) 0:108 vector swizzle ( temp 3-component vector of float) 0:108 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:108 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:108 'invocation' ( temp uint) 0:108 Constant: 0:108 0 (const int) 0:108 Sequence 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 2 (const int) 0:108 subgroupPartitionedMaxNV ( global 3-component vector of float) 0:108 vector swizzle ( temp 3-component vector of float) 0:108 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:108 Constant: 0:108 2 (const int) 0:108 Constant: 0:108 0 (const int) 0:108 Sequence 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 2 (const int) 0:108 'ballot' ( temp 4-component vector of uint) 0:109 move second child to first child ( temp 4-component vector of float) 0:109 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:109 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'invocation' ( temp uint) 0:109 Constant: 0:109 0 (const int) 0:109 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:109 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 Constant: 0:109 3 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 'ballot' ( temp 4-component vector of uint) 0:111 move second child to first child ( temp int) 0:111 direct index ( temp int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'invocation' ( temp uint) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 subgroupPartitionedMaxNV ( global int) 0:111 direct index ( temp int) 0:111 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 'ballot' ( temp 4-component vector of uint) 0:112 move second child to first child ( temp 2-component vector of int) 0:112 vector swizzle ( temp 2-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'invocation' ( temp uint) 0:112 Constant: 0:112 1 (const int) 0:112 Sequence 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 subgroupPartitionedMaxNV ( global 2-component vector of int) 0:112 vector swizzle ( temp 2-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 Sequence 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1 (const int) 0:112 'ballot' ( temp 4-component vector of uint) 0:113 move second child to first child ( temp 3-component vector of int) 0:113 vector swizzle ( temp 3-component vector of int) 0:113 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:113 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:113 'invocation' ( temp uint) 0:113 Constant: 0:113 1 (const int) 0:113 Sequence 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 subgroupPartitionedMaxNV ( global 3-component vector of int) 0:113 vector swizzle ( temp 3-component vector of int) 0:113 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Sequence 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 'ballot' ( temp 4-component vector of uint) 0:114 move second child to first child ( temp 4-component vector of int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'invocation' ( temp uint) 0:114 Constant: 0:114 1 (const int) 0:114 subgroupPartitionedMaxNV ( global 4-component vector of int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 Constant: 0:114 3 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 'ballot' ( temp 4-component vector of uint) 0:116 move second child to first child ( temp uint) 0:116 direct index ( temp uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:116 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'invocation' ( temp uint) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 subgroupPartitionedMaxNV ( global uint) 0:116 direct index ( temp uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 'ballot' ( temp 4-component vector of uint) 0:117 move second child to first child ( temp 2-component vector of uint) 0:117 vector swizzle ( temp 2-component vector of uint) 0:117 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:117 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'invocation' ( temp uint) 0:117 Constant: 0:117 2 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 subgroupPartitionedMaxNV ( global 2-component vector of uint) 0:117 vector swizzle ( temp 2-component vector of uint) 0:117 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 'ballot' ( temp 4-component vector of uint) 0:118 move second child to first child ( temp 3-component vector of uint) 0:118 vector swizzle ( temp 3-component vector of uint) 0:118 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:118 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:118 'invocation' ( temp uint) 0:118 Constant: 0:118 2 (const int) 0:118 Sequence 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 2 (const int) 0:118 subgroupPartitionedMaxNV ( global 3-component vector of uint) 0:118 vector swizzle ( temp 3-component vector of uint) 0:118 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:118 Constant: 0:118 2 (const int) 0:118 Constant: 0:118 2 (const int) 0:118 Sequence 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 2 (const int) 0:118 'ballot' ( temp 4-component vector of uint) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'invocation' ( temp uint) 0:119 Constant: 0:119 2 (const int) 0:119 subgroupPartitionedMaxNV ( global 4-component vector of uint) 0:119 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:119 Constant: 0:119 3 (const int) 0:119 Constant: 0:119 2 (const int) 0:119 'ballot' ( temp 4-component vector of uint) 0:121 move second child to first child ( temp double) 0:121 direct index ( temp double) 0:121 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:121 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'invocation' ( temp uint) 0:121 Constant: 0:121 3 (const int) 0:121 Constant: 0:121 0 (const int) 0:121 subgroupPartitionedMaxNV ( global double) 0:121 direct index ( temp double) 0:121 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 3 (const int) 0:121 Constant: 0:121 0 (const int) 0:121 'ballot' ( temp 4-component vector of uint) 0:122 move second child to first child ( temp 2-component vector of double) 0:122 vector swizzle ( temp 2-component vector of double) 0:122 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:122 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'invocation' ( temp uint) 0:122 Constant: 0:122 3 (const int) 0:122 Sequence 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 0:122 subgroupPartitionedMaxNV ( global 2-component vector of double) 0:122 vector swizzle ( temp 2-component vector of double) 0:122 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:122 Constant: 0:122 1 (const int) 0:122 Constant: 0:122 3 (const int) 0:122 Sequence 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 0:122 'ballot' ( temp 4-component vector of uint) 0:123 move second child to first child ( temp 3-component vector of double) 0:123 vector swizzle ( temp 3-component vector of double) 0:123 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:123 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:123 'invocation' ( temp uint) 0:123 Constant: 0:123 3 (const int) 0:123 Sequence 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 1 (const int) 0:123 Constant: 0:123 2 (const int) 0:123 subgroupPartitionedMaxNV ( global 3-component vector of double) 0:123 vector swizzle ( temp 3-component vector of double) 0:123 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:123 Constant: 0:123 2 (const int) 0:123 Constant: 0:123 3 (const int) 0:123 Sequence 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 1 (const int) 0:123 Constant: 0:123 2 (const int) 0:123 'ballot' ( temp 4-component vector of uint) 0:124 move second child to first child ( temp 4-component vector of double) 0:124 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:124 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'invocation' ( temp uint) 0:124 Constant: 0:124 3 (const int) 0:124 subgroupPartitionedMaxNV ( global 4-component vector of double) 0:124 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:124 Constant: 0:124 3 (const int) 0:124 Constant: 0:124 3 (const int) 0:124 'ballot' ( temp 4-component vector of uint) 0:126 move second child to first child ( temp int) 0:126 direct index ( temp int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'invocation' ( temp uint) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 subgroupPartitionedAndNV ( global int) 0:126 direct index ( temp int) 0:126 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 'ballot' ( temp 4-component vector of uint) 0:127 move second child to first child ( temp 2-component vector of int) 0:127 vector swizzle ( temp 2-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'invocation' ( temp uint) 0:127 Constant: 0:127 1 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 subgroupPartitionedAndNV ( global 2-component vector of int) 0:127 vector swizzle ( temp 2-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 'ballot' ( temp 4-component vector of uint) 0:128 move second child to first child ( temp 3-component vector of int) 0:128 vector swizzle ( temp 3-component vector of int) 0:128 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:128 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:128 'invocation' ( temp uint) 0:128 Constant: 0:128 1 (const int) 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 subgroupPartitionedAndNV ( global 3-component vector of int) 0:128 vector swizzle ( temp 3-component vector of int) 0:128 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:128 Constant: 0:128 2 (const int) 0:128 Constant: 0:128 1 (const int) 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 'ballot' ( temp 4-component vector of uint) 0:129 move second child to first child ( temp 4-component vector of int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'invocation' ( temp uint) 0:129 Constant: 0:129 1 (const int) 0:129 subgroupPartitionedAndNV ( global 4-component vector of int) 0:129 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:129 Constant: 0:129 3 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 'ballot' ( temp 4-component vector of uint) 0:131 move second child to first child ( temp uint) 0:131 direct index ( temp uint) 0:131 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:131 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'invocation' ( temp uint) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 0 (const int) 0:131 subgroupPartitionedAndNV ( global uint) 0:131 direct index ( temp uint) 0:131 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 0 (const int) 0:131 'ballot' ( temp 4-component vector of uint) 0:132 move second child to first child ( temp 2-component vector of uint) 0:132 vector swizzle ( temp 2-component vector of uint) 0:132 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:132 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'invocation' ( temp uint) 0:132 Constant: 0:132 2 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 subgroupPartitionedAndNV ( global 2-component vector of uint) 0:132 vector swizzle ( temp 2-component vector of uint) 0:132 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 'ballot' ( temp 4-component vector of uint) 0:133 move second child to first child ( temp 3-component vector of uint) 0:133 vector swizzle ( temp 3-component vector of uint) 0:133 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:133 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:133 'invocation' ( temp uint) 0:133 Constant: 0:133 2 (const int) 0:133 Sequence 0:133 Constant: 0:133 0 (const int) 0:133 Constant: 0:133 1 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 subgroupPartitionedAndNV ( global 3-component vector of uint) 0:133 vector swizzle ( temp 3-component vector of uint) 0:133 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:133 Constant: 0:133 2 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 Sequence 0:133 Constant: 0:133 0 (const int) 0:133 Constant: 0:133 1 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 'ballot' ( temp 4-component vector of uint) 0:134 move second child to first child ( temp 4-component vector of uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'invocation' ( temp uint) 0:134 Constant: 0:134 2 (const int) 0:134 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:134 Constant: 0:134 3 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 'ballot' ( temp 4-component vector of uint) 0:136 move second child to first child ( temp int) 0:136 direct index ( temp int) 0:136 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:136 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'invocation' ( temp uint) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 Convert bool to int ( temp int) 0:136 subgroupPartitionedAndNV ( global bool) 0:136 Compare Less Than ( temp bool) 0:136 direct index ( temp int) 0:136 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 'ballot' ( temp 4-component vector of uint) 0:137 move second child to first child ( temp 2-component vector of int) 0:137 vector swizzle ( temp 2-component vector of int) 0:137 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:137 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'invocation' ( temp uint) 0:137 Constant: 0:137 1 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Convert bool to int ( temp 2-component vector of int) 0:137 subgroupPartitionedAndNV ( global 2-component vector of bool) 0:137 Compare Less Than ( global 2-component vector of bool) 0:137 vector swizzle ( temp 2-component vector of int) 0:137 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 0 (const int) 0:137 0 (const int) 0:137 'ballot' ( temp 4-component vector of uint) 0:138 move second child to first child ( temp 3-component vector of int) 0:138 vector swizzle ( temp 3-component vector of int) 0:138 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:138 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:138 'invocation' ( temp uint) 0:138 Constant: 0:138 1 (const int) 0:138 Sequence 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 1 (const int) 0:138 Constant: 0:138 2 (const int) 0:138 Convert bool to int ( temp 3-component vector of int) 0:138 subgroupPartitionedAndNV ( global 3-component vector of bool) 0:138 Compare Less Than ( global 3-component vector of bool) 0:138 vector swizzle ( temp 3-component vector of int) 0:138 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:138 Constant: 0:138 1 (const int) 0:138 Constant: 0:138 1 (const int) 0:138 Sequence 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 1 (const int) 0:138 Constant: 0:138 2 (const int) 0:138 Constant: 0:138 0 (const int) 0:138 0 (const int) 0:138 0 (const int) 0:138 'ballot' ( temp 4-component vector of uint) 0:139 move second child to first child ( temp 4-component vector of int) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'invocation' ( temp uint) 0:139 Constant: 0:139 1 (const int) 0:139 Convert bool to int ( temp 4-component vector of int) 0:139 subgroupPartitionedAndNV ( global 4-component vector of bool) 0:139 Compare Less Than ( global 4-component vector of bool) 0:139 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 0 (const int) 0:139 0 (const int) 0:139 0 (const int) 0:139 'ballot' ( temp 4-component vector of uint) 0:141 move second child to first child ( temp int) 0:141 direct index ( temp int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'invocation' ( temp uint) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 subgroupPartitionedOrNV ( global int) 0:141 direct index ( temp int) 0:141 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 'ballot' ( temp 4-component vector of uint) 0:142 move second child to first child ( temp 2-component vector of int) 0:142 vector swizzle ( temp 2-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'invocation' ( temp uint) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 subgroupPartitionedOrNV ( global 2-component vector of int) 0:142 vector swizzle ( temp 2-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 'ballot' ( temp 4-component vector of uint) 0:143 move second child to first child ( temp 3-component vector of int) 0:143 vector swizzle ( temp 3-component vector of int) 0:143 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:143 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:143 'invocation' ( temp uint) 0:143 Constant: 0:143 1 (const int) 0:143 Sequence 0:143 Constant: 0:143 0 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 2 (const int) 0:143 subgroupPartitionedOrNV ( global 3-component vector of int) 0:143 vector swizzle ( temp 3-component vector of int) 0:143 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:143 Constant: 0:143 2 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Sequence 0:143 Constant: 0:143 0 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 2 (const int) 0:143 'ballot' ( temp 4-component vector of uint) 0:144 move second child to first child ( temp 4-component vector of int) 0:144 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:144 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'invocation' ( temp uint) 0:144 Constant: 0:144 1 (const int) 0:144 subgroupPartitionedOrNV ( global 4-component vector of int) 0:144 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:144 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:144 Constant: 0:144 3 (const int) 0:144 Constant: 0:144 1 (const int) 0:144 'ballot' ( temp 4-component vector of uint) 0:146 move second child to first child ( temp uint) 0:146 direct index ( temp uint) 0:146 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:146 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'invocation' ( temp uint) 0:146 Constant: 0:146 2 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 subgroupPartitionedOrNV ( global uint) 0:146 direct index ( temp uint) 0:146 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 2 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 'ballot' ( temp 4-component vector of uint) 0:147 move second child to first child ( temp 2-component vector of uint) 0:147 vector swizzle ( temp 2-component vector of uint) 0:147 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:147 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'invocation' ( temp uint) 0:147 Constant: 0:147 2 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 subgroupPartitionedOrNV ( global 2-component vector of uint) 0:147 vector swizzle ( temp 2-component vector of uint) 0:147 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:147 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 'ballot' ( temp 4-component vector of uint) 0:148 move second child to first child ( temp 3-component vector of uint) 0:148 vector swizzle ( temp 3-component vector of uint) 0:148 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:148 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:148 'invocation' ( temp uint) 0:148 Constant: 0:148 2 (const int) 0:148 Sequence 0:148 Constant: 0:148 0 (const int) 0:148 Constant: 0:148 1 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 subgroupPartitionedOrNV ( global 3-component vector of uint) 0:148 vector swizzle ( temp 3-component vector of uint) 0:148 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:148 Constant: 0:148 2 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 Sequence 0:148 Constant: 0:148 0 (const int) 0:148 Constant: 0:148 1 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 'ballot' ( temp 4-component vector of uint) 0:149 move second child to first child ( temp 4-component vector of uint) 0:149 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:149 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'invocation' ( temp uint) 0:149 Constant: 0:149 2 (const int) 0:149 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:149 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:149 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:149 Constant: 0:149 3 (const int) 0:149 Constant: 0:149 2 (const int) 0:149 'ballot' ( temp 4-component vector of uint) 0:151 move second child to first child ( temp int) 0:151 direct index ( temp int) 0:151 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:151 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'invocation' ( temp uint) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 0 (const int) 0:151 Convert bool to int ( temp int) 0:151 subgroupPartitionedOrNV ( global bool) 0:151 Compare Less Than ( temp bool) 0:151 direct index ( temp int) 0:151 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 0 (const int) 0:151 'ballot' ( temp 4-component vector of uint) 0:152 move second child to first child ( temp 2-component vector of int) 0:152 vector swizzle ( temp 2-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:152 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'invocation' ( temp uint) 0:152 Constant: 0:152 1 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Convert bool to int ( temp 2-component vector of int) 0:152 subgroupPartitionedOrNV ( global 2-component vector of bool) 0:152 Compare Less Than ( global 2-component vector of bool) 0:152 vector swizzle ( temp 2-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:152 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 0 (const int) 0:152 0 (const int) 0:152 'ballot' ( temp 4-component vector of uint) 0:153 move second child to first child ( temp 3-component vector of int) 0:153 vector swizzle ( temp 3-component vector of int) 0:153 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:153 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:153 'invocation' ( temp uint) 0:153 Constant: 0:153 1 (const int) 0:153 Sequence 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 Constant: 0:153 2 (const int) 0:153 Convert bool to int ( temp 3-component vector of int) 0:153 subgroupPartitionedOrNV ( global 3-component vector of bool) 0:153 Compare Less Than ( global 3-component vector of bool) 0:153 vector swizzle ( temp 3-component vector of int) 0:153 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:153 Constant: 0:153 1 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 Sequence 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 Constant: 0:153 2 (const int) 0:153 Constant: 0:153 0 (const int) 0:153 0 (const int) 0:153 0 (const int) 0:153 'ballot' ( temp 4-component vector of uint) 0:154 move second child to first child ( temp 4-component vector of int) 0:154 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:154 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'invocation' ( temp uint) 0:154 Constant: 0:154 1 (const int) 0:154 Convert bool to int ( temp 4-component vector of int) 0:154 subgroupPartitionedOrNV ( global 4-component vector of bool) 0:154 Compare Less Than ( global 4-component vector of bool) 0:154 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:154 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:154 Constant: 0:154 1 (const int) 0:154 Constant: 0:154 1 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 0 (const int) 0:154 0 (const int) 0:154 0 (const int) 0:154 'ballot' ( temp 4-component vector of uint) 0:156 move second child to first child ( temp int) 0:156 direct index ( temp int) 0:156 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:156 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'invocation' ( temp uint) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 0 (const int) 0:156 subgroupPartitionedXorNV ( global int) 0:156 direct index ( temp int) 0:156 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 0 (const int) 0:156 'ballot' ( temp 4-component vector of uint) 0:157 move second child to first child ( temp 2-component vector of int) 0:157 vector swizzle ( temp 2-component vector of int) 0:157 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:157 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'invocation' ( temp uint) 0:157 Constant: 0:157 1 (const int) 0:157 Sequence 0:157 Constant: 0:157 0 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 subgroupPartitionedXorNV ( global 2-component vector of int) 0:157 vector swizzle ( temp 2-component vector of int) 0:157 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:157 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:157 Constant: 0:157 1 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 Sequence 0:157 Constant: 0:157 0 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 'ballot' ( temp 4-component vector of uint) 0:158 move second child to first child ( temp 3-component vector of int) 0:158 vector swizzle ( temp 3-component vector of int) 0:158 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:158 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:158 'invocation' ( temp uint) 0:158 Constant: 0:158 1 (const int) 0:158 Sequence 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Constant: 0:158 2 (const int) 0:158 subgroupPartitionedXorNV ( global 3-component vector of int) 0:158 vector swizzle ( temp 3-component vector of int) 0:158 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:158 Constant: 0:158 2 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Sequence 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Constant: 0:158 2 (const int) 0:158 'ballot' ( temp 4-component vector of uint) 0:159 move second child to first child ( temp 4-component vector of int) 0:159 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:159 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'invocation' ( temp uint) 0:159 Constant: 0:159 1 (const int) 0:159 subgroupPartitionedXorNV ( global 4-component vector of int) 0:159 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:159 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:159 Constant: 0:159 3 (const int) 0:159 Constant: 0:159 1 (const int) 0:159 'ballot' ( temp 4-component vector of uint) 0:161 move second child to first child ( temp uint) 0:161 direct index ( temp uint) 0:161 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:161 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'invocation' ( temp uint) 0:161 Constant: 0:161 2 (const int) 0:161 Constant: 0:161 0 (const int) 0:161 subgroupPartitionedXorNV ( global uint) 0:161 direct index ( temp uint) 0:161 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 2 (const int) 0:161 Constant: 0:161 0 (const int) 0:161 'ballot' ( temp 4-component vector of uint) 0:162 move second child to first child ( temp 2-component vector of uint) 0:162 vector swizzle ( temp 2-component vector of uint) 0:162 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:162 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'invocation' ( temp uint) 0:162 Constant: 0:162 2 (const int) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 subgroupPartitionedXorNV ( global 2-component vector of uint) 0:162 vector swizzle ( temp 2-component vector of uint) 0:162 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:162 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 'ballot' ( temp 4-component vector of uint) 0:163 move second child to first child ( temp 3-component vector of uint) 0:163 vector swizzle ( temp 3-component vector of uint) 0:163 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:163 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:163 'invocation' ( temp uint) 0:163 Constant: 0:163 2 (const int) 0:163 Sequence 0:163 Constant: 0:163 0 (const int) 0:163 Constant: 0:163 1 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 subgroupPartitionedXorNV ( global 3-component vector of uint) 0:163 vector swizzle ( temp 3-component vector of uint) 0:163 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:163 Constant: 0:163 2 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 Sequence 0:163 Constant: 0:163 0 (const int) 0:163 Constant: 0:163 1 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 'ballot' ( temp 4-component vector of uint) 0:164 move second child to first child ( temp 4-component vector of uint) 0:164 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:164 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'invocation' ( temp uint) 0:164 Constant: 0:164 2 (const int) 0:164 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:164 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:164 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:164 Constant: 0:164 3 (const int) 0:164 Constant: 0:164 2 (const int) 0:164 'ballot' ( temp 4-component vector of uint) 0:166 move second child to first child ( temp int) 0:166 direct index ( temp int) 0:166 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:166 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'invocation' ( temp uint) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 0 (const int) 0:166 Convert bool to int ( temp int) 0:166 subgroupPartitionedXorNV ( global bool) 0:166 Compare Less Than ( temp bool) 0:166 direct index ( temp int) 0:166 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 0 (const int) 0:166 'ballot' ( temp 4-component vector of uint) 0:167 move second child to first child ( temp 2-component vector of int) 0:167 vector swizzle ( temp 2-component vector of int) 0:167 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:167 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'invocation' ( temp uint) 0:167 Constant: 0:167 1 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Convert bool to int ( temp 2-component vector of int) 0:167 subgroupPartitionedXorNV ( global 2-component vector of bool) 0:167 Compare Less Than ( global 2-component vector of bool) 0:167 vector swizzle ( temp 2-component vector of int) 0:167 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:167 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 0 (const int) 0:167 0 (const int) 0:167 'ballot' ( temp 4-component vector of uint) 0:168 move second child to first child ( temp 3-component vector of int) 0:168 vector swizzle ( temp 3-component vector of int) 0:168 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:168 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:168 'invocation' ( temp uint) 0:168 Constant: 0:168 1 (const int) 0:168 Sequence 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 Constant: 0:168 2 (const int) 0:168 Convert bool to int ( temp 3-component vector of int) 0:168 subgroupPartitionedXorNV ( global 3-component vector of bool) 0:168 Compare Less Than ( global 3-component vector of bool) 0:168 vector swizzle ( temp 3-component vector of int) 0:168 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:168 Constant: 0:168 1 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 Sequence 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 Constant: 0:168 2 (const int) 0:168 Constant: 0:168 0 (const int) 0:168 0 (const int) 0:168 0 (const int) 0:168 'ballot' ( temp 4-component vector of uint) 0:169 move second child to first child ( temp 4-component vector of int) 0:169 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:169 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'invocation' ( temp uint) 0:169 Constant: 0:169 1 (const int) 0:169 Convert bool to int ( temp 4-component vector of int) 0:169 subgroupPartitionedXorNV ( global 4-component vector of bool) 0:169 Compare Less Than ( global 4-component vector of bool) 0:169 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:169 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 0 (const int) 0:169 0 (const int) 0:169 0 (const int) 0:169 0 (const int) 0:169 'ballot' ( temp 4-component vector of uint) 0:171 move second child to first child ( temp float) 0:171 direct index ( temp float) 0:171 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:171 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'invocation' ( temp uint) 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 0 (const int) 0:171 subgroupPartitionedInclusiveAddNV ( global float) 0:171 direct index ( temp float) 0:171 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 0 (const int) 0:171 'ballot' ( temp 4-component vector of uint) 0:172 move second child to first child ( temp 2-component vector of float) 0:172 vector swizzle ( temp 2-component vector of float) 0:172 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:172 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'invocation' ( temp uint) 0:172 Constant: 0:172 0 (const int) 0:172 Sequence 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 1 (const int) 0:172 subgroupPartitionedInclusiveAddNV ( global 2-component vector of float) 0:172 vector swizzle ( temp 2-component vector of float) 0:172 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:172 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:172 Constant: 0:172 1 (const int) 0:172 Constant: 0:172 0 (const int) 0:172 Sequence 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 1 (const int) 0:172 'ballot' ( temp 4-component vector of uint) 0:173 move second child to first child ( temp 3-component vector of float) 0:173 vector swizzle ( temp 3-component vector of float) 0:173 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:173 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:173 'invocation' ( temp uint) 0:173 Constant: 0:173 0 (const int) 0:173 Sequence 0:173 Constant: 0:173 0 (const int) 0:173 Constant: 0:173 1 (const int) 0:173 Constant: 0:173 2 (const int) 0:173 subgroupPartitionedInclusiveAddNV ( global 3-component vector of float) 0:173 vector swizzle ( temp 3-component vector of float) 0:173 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:173 Constant: 0:173 2 (const int) 0:173 Constant: 0:173 0 (const int) 0:173 Sequence 0:173 Constant: 0:173 0 (const int) 0:173 Constant: 0:173 1 (const int) 0:173 Constant: 0:173 2 (const int) 0:173 'ballot' ( temp 4-component vector of uint) 0:174 move second child to first child ( temp 4-component vector of float) 0:174 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:174 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'invocation' ( temp uint) 0:174 Constant: 0:174 0 (const int) 0:174 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:174 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:174 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:174 Constant: 0:174 3 (const int) 0:174 Constant: 0:174 0 (const int) 0:174 'ballot' ( temp 4-component vector of uint) 0:176 move second child to first child ( temp int) 0:176 direct index ( temp int) 0:176 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:176 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'invocation' ( temp uint) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 0 (const int) 0:176 subgroupPartitionedInclusiveAddNV ( global int) 0:176 direct index ( temp int) 0:176 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 0 (const int) 0:176 'ballot' ( temp 4-component vector of uint) 0:177 move second child to first child ( temp 2-component vector of int) 0:177 vector swizzle ( temp 2-component vector of int) 0:177 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:177 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'invocation' ( temp uint) 0:177 Constant: 0:177 1 (const int) 0:177 Sequence 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 subgroupPartitionedInclusiveAddNV ( global 2-component vector of int) 0:177 vector swizzle ( temp 2-component vector of int) 0:177 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:177 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:177 Constant: 0:177 1 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 Sequence 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 'ballot' ( temp 4-component vector of uint) 0:178 move second child to first child ( temp 3-component vector of int) 0:178 vector swizzle ( temp 3-component vector of int) 0:178 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:178 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:178 'invocation' ( temp uint) 0:178 Constant: 0:178 1 (const int) 0:178 Sequence 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 1 (const int) 0:178 Constant: 0:178 2 (const int) 0:178 subgroupPartitionedInclusiveAddNV ( global 3-component vector of int) 0:178 vector swizzle ( temp 3-component vector of int) 0:178 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:178 Constant: 0:178 2 (const int) 0:178 Constant: 0:178 1 (const int) 0:178 Sequence 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 1 (const int) 0:178 Constant: 0:178 2 (const int) 0:178 'ballot' ( temp 4-component vector of uint) 0:179 move second child to first child ( temp 4-component vector of int) 0:179 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:179 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'invocation' ( temp uint) 0:179 Constant: 0:179 1 (const int) 0:179 subgroupPartitionedInclusiveAddNV ( global 4-component vector of int) 0:179 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:179 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:179 Constant: 0:179 3 (const int) 0:179 Constant: 0:179 1 (const int) 0:179 'ballot' ( temp 4-component vector of uint) 0:181 move second child to first child ( temp uint) 0:181 direct index ( temp uint) 0:181 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:181 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'invocation' ( temp uint) 0:181 Constant: 0:181 2 (const int) 0:181 Constant: 0:181 0 (const int) 0:181 subgroupPartitionedInclusiveAddNV ( global uint) 0:181 direct index ( temp uint) 0:181 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 2 (const int) 0:181 Constant: 0:181 0 (const int) 0:181 'ballot' ( temp 4-component vector of uint) 0:182 move second child to first child ( temp 2-component vector of uint) 0:182 vector swizzle ( temp 2-component vector of uint) 0:182 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:182 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'invocation' ( temp uint) 0:182 Constant: 0:182 2 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 subgroupPartitionedInclusiveAddNV ( global 2-component vector of uint) 0:182 vector swizzle ( temp 2-component vector of uint) 0:182 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:182 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:182 Constant: 0:182 1 (const int) 0:182 Constant: 0:182 2 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 'ballot' ( temp 4-component vector of uint) 0:183 move second child to first child ( temp 3-component vector of uint) 0:183 vector swizzle ( temp 3-component vector of uint) 0:183 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:183 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:183 'invocation' ( temp uint) 0:183 Constant: 0:183 2 (const int) 0:183 Sequence 0:183 Constant: 0:183 0 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 2 (const int) 0:183 subgroupPartitionedInclusiveAddNV ( global 3-component vector of uint) 0:183 vector swizzle ( temp 3-component vector of uint) 0:183 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:183 Constant: 0:183 2 (const int) 0:183 Constant: 0:183 2 (const int) 0:183 Sequence 0:183 Constant: 0:183 0 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 2 (const int) 0:183 'ballot' ( temp 4-component vector of uint) 0:184 move second child to first child ( temp 4-component vector of uint) 0:184 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:184 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'invocation' ( temp uint) 0:184 Constant: 0:184 2 (const int) 0:184 subgroupPartitionedInclusiveAddNV ( global 4-component vector of uint) 0:184 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:184 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:184 Constant: 0:184 3 (const int) 0:184 Constant: 0:184 2 (const int) 0:184 'ballot' ( temp 4-component vector of uint) 0:186 move second child to first child ( temp double) 0:186 direct index ( temp double) 0:186 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:186 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'invocation' ( temp uint) 0:186 Constant: 0:186 3 (const int) 0:186 Constant: 0:186 0 (const int) 0:186 subgroupPartitionedInclusiveAddNV ( global double) 0:186 direct index ( temp double) 0:186 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 3 (const int) 0:186 Constant: 0:186 0 (const int) 0:186 'ballot' ( temp 4-component vector of uint) 0:187 move second child to first child ( temp 2-component vector of double) 0:187 vector swizzle ( temp 2-component vector of double) 0:187 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:187 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'invocation' ( temp uint) 0:187 Constant: 0:187 3 (const int) 0:187 Sequence 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 1 (const int) 0:187 subgroupPartitionedInclusiveAddNV ( global 2-component vector of double) 0:187 vector swizzle ( temp 2-component vector of double) 0:187 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:187 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:187 Constant: 0:187 1 (const int) 0:187 Constant: 0:187 3 (const int) 0:187 Sequence 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 1 (const int) 0:187 'ballot' ( temp 4-component vector of uint) 0:188 move second child to first child ( temp 3-component vector of double) 0:188 vector swizzle ( temp 3-component vector of double) 0:188 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:188 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:188 'invocation' ( temp uint) 0:188 Constant: 0:188 3 (const int) 0:188 Sequence 0:188 Constant: 0:188 0 (const int) 0:188 Constant: 0:188 1 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 subgroupPartitionedInclusiveAddNV ( global 3-component vector of double) 0:188 vector swizzle ( temp 3-component vector of double) 0:188 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:188 Constant: 0:188 2 (const int) 0:188 Constant: 0:188 3 (const int) 0:188 Sequence 0:188 Constant: 0:188 0 (const int) 0:188 Constant: 0:188 1 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 'ballot' ( temp 4-component vector of uint) 0:189 move second child to first child ( temp 4-component vector of double) 0:189 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:189 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'invocation' ( temp uint) 0:189 Constant: 0:189 3 (const int) 0:189 subgroupPartitionedInclusiveAddNV ( global 4-component vector of double) 0:189 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:189 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:189 Constant: 0:189 3 (const int) 0:189 Constant: 0:189 3 (const int) 0:189 'ballot' ( temp 4-component vector of uint) 0:191 move second child to first child ( temp float) 0:191 direct index ( temp float) 0:191 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:191 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'invocation' ( temp uint) 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 subgroupPartitionedInclusiveMulNV ( global float) 0:191 direct index ( temp float) 0:191 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 'ballot' ( temp 4-component vector of uint) 0:192 move second child to first child ( temp 2-component vector of float) 0:192 vector swizzle ( temp 2-component vector of float) 0:192 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:192 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'invocation' ( temp uint) 0:192 Constant: 0:192 0 (const int) 0:192 Sequence 0:192 Constant: 0:192 0 (const int) 0:192 Constant: 0:192 1 (const int) 0:192 subgroupPartitionedInclusiveMulNV ( global 2-component vector of float) 0:192 vector swizzle ( temp 2-component vector of float) 0:192 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:192 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:192 Constant: 0:192 1 (const int) 0:192 Constant: 0:192 0 (const int) 0:192 Sequence 0:192 Constant: 0:192 0 (const int) 0:192 Constant: 0:192 1 (const int) 0:192 'ballot' ( temp 4-component vector of uint) 0:193 move second child to first child ( temp 3-component vector of float) 0:193 vector swizzle ( temp 3-component vector of float) 0:193 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:193 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:193 'invocation' ( temp uint) 0:193 Constant: 0:193 0 (const int) 0:193 Sequence 0:193 Constant: 0:193 0 (const int) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 2 (const int) 0:193 subgroupPartitionedInclusiveMulNV ( global 3-component vector of float) 0:193 vector swizzle ( temp 3-component vector of float) 0:193 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:193 Constant: 0:193 2 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 Sequence 0:193 Constant: 0:193 0 (const int) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 2 (const int) 0:193 'ballot' ( temp 4-component vector of uint) 0:194 move second child to first child ( temp 4-component vector of float) 0:194 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:194 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'invocation' ( temp uint) 0:194 Constant: 0:194 0 (const int) 0:194 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:194 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:194 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:194 Constant: 0:194 3 (const int) 0:194 Constant: 0:194 0 (const int) 0:194 'ballot' ( temp 4-component vector of uint) 0:196 move second child to first child ( temp int) 0:196 direct index ( temp int) 0:196 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:196 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'invocation' ( temp uint) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 0 (const int) 0:196 subgroupPartitionedInclusiveMulNV ( global int) 0:196 direct index ( temp int) 0:196 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 0 (const int) 0:196 'ballot' ( temp 4-component vector of uint) 0:197 move second child to first child ( temp 2-component vector of int) 0:197 vector swizzle ( temp 2-component vector of int) 0:197 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:197 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'invocation' ( temp uint) 0:197 Constant: 0:197 1 (const int) 0:197 Sequence 0:197 Constant: 0:197 0 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 subgroupPartitionedInclusiveMulNV ( global 2-component vector of int) 0:197 vector swizzle ( temp 2-component vector of int) 0:197 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:197 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Sequence 0:197 Constant: 0:197 0 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 'ballot' ( temp 4-component vector of uint) 0:198 move second child to first child ( temp 3-component vector of int) 0:198 vector swizzle ( temp 3-component vector of int) 0:198 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:198 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:198 'invocation' ( temp uint) 0:198 Constant: 0:198 1 (const int) 0:198 Sequence 0:198 Constant: 0:198 0 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 2 (const int) 0:198 subgroupPartitionedInclusiveMulNV ( global 3-component vector of int) 0:198 vector swizzle ( temp 3-component vector of int) 0:198 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:198 Constant: 0:198 2 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Sequence 0:198 Constant: 0:198 0 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 2 (const int) 0:198 'ballot' ( temp 4-component vector of uint) 0:199 move second child to first child ( temp 4-component vector of int) 0:199 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:199 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'invocation' ( temp uint) 0:199 Constant: 0:199 1 (const int) 0:199 subgroupPartitionedInclusiveMulNV ( global 4-component vector of int) 0:199 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:199 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:199 Constant: 0:199 3 (const int) 0:199 Constant: 0:199 1 (const int) 0:199 'ballot' ( temp 4-component vector of uint) 0:201 move second child to first child ( temp uint) 0:201 direct index ( temp uint) 0:201 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:201 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'invocation' ( temp uint) 0:201 Constant: 0:201 2 (const int) 0:201 Constant: 0:201 0 (const int) 0:201 subgroupPartitionedInclusiveMulNV ( global uint) 0:201 direct index ( temp uint) 0:201 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 2 (const int) 0:201 Constant: 0:201 0 (const int) 0:201 'ballot' ( temp 4-component vector of uint) 0:202 move second child to first child ( temp 2-component vector of uint) 0:202 vector swizzle ( temp 2-component vector of uint) 0:202 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:202 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'invocation' ( temp uint) 0:202 Constant: 0:202 2 (const int) 0:202 Sequence 0:202 Constant: 0:202 0 (const int) 0:202 Constant: 0:202 1 (const int) 0:202 subgroupPartitionedInclusiveMulNV ( global 2-component vector of uint) 0:202 vector swizzle ( temp 2-component vector of uint) 0:202 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:202 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 Sequence 0:202 Constant: 0:202 0 (const int) 0:202 Constant: 0:202 1 (const int) 0:202 'ballot' ( temp 4-component vector of uint) 0:203 move second child to first child ( temp 3-component vector of uint) 0:203 vector swizzle ( temp 3-component vector of uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:203 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:203 'invocation' ( temp uint) 0:203 Constant: 0:203 2 (const int) 0:203 Sequence 0:203 Constant: 0:203 0 (const int) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 subgroupPartitionedInclusiveMulNV ( global 3-component vector of uint) 0:203 vector swizzle ( temp 3-component vector of uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:203 Constant: 0:203 2 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 Sequence 0:203 Constant: 0:203 0 (const int) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 'ballot' ( temp 4-component vector of uint) 0:204 move second child to first child ( temp 4-component vector of uint) 0:204 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:204 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'invocation' ( temp uint) 0:204 Constant: 0:204 2 (const int) 0:204 subgroupPartitionedInclusiveMulNV ( global 4-component vector of uint) 0:204 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:204 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:204 Constant: 0:204 3 (const int) 0:204 Constant: 0:204 2 (const int) 0:204 'ballot' ( temp 4-component vector of uint) 0:206 move second child to first child ( temp double) 0:206 direct index ( temp double) 0:206 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:206 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'invocation' ( temp uint) 0:206 Constant: 0:206 3 (const int) 0:206 Constant: 0:206 0 (const int) 0:206 subgroupPartitionedInclusiveMulNV ( global double) 0:206 direct index ( temp double) 0:206 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 3 (const int) 0:206 Constant: 0:206 0 (const int) 0:206 'ballot' ( temp 4-component vector of uint) 0:207 move second child to first child ( temp 2-component vector of double) 0:207 vector swizzle ( temp 2-component vector of double) 0:207 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:207 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'invocation' ( temp uint) 0:207 Constant: 0:207 3 (const int) 0:207 Sequence 0:207 Constant: 0:207 0 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 subgroupPartitionedInclusiveMulNV ( global 2-component vector of double) 0:207 vector swizzle ( temp 2-component vector of double) 0:207 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:207 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 3 (const int) 0:207 Sequence 0:207 Constant: 0:207 0 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 'ballot' ( temp 4-component vector of uint) 0:208 move second child to first child ( temp 3-component vector of double) 0:208 vector swizzle ( temp 3-component vector of double) 0:208 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:208 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:208 'invocation' ( temp uint) 0:208 Constant: 0:208 3 (const int) 0:208 Sequence 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 2 (const int) 0:208 subgroupPartitionedInclusiveMulNV ( global 3-component vector of double) 0:208 vector swizzle ( temp 3-component vector of double) 0:208 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:208 Constant: 0:208 2 (const int) 0:208 Constant: 0:208 3 (const int) 0:208 Sequence 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 2 (const int) 0:208 'ballot' ( temp 4-component vector of uint) 0:209 move second child to first child ( temp 4-component vector of double) 0:209 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:209 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'invocation' ( temp uint) 0:209 Constant: 0:209 3 (const int) 0:209 subgroupPartitionedInclusiveMulNV ( global 4-component vector of double) 0:209 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:209 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:209 Constant: 0:209 3 (const int) 0:209 Constant: 0:209 3 (const int) 0:209 'ballot' ( temp 4-component vector of uint) 0:211 move second child to first child ( temp float) 0:211 direct index ( temp float) 0:211 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:211 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'invocation' ( temp uint) 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 0 (const int) 0:211 subgroupPartitionedInclusiveMinNV ( global float) 0:211 direct index ( temp float) 0:211 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 0 (const int) 0:211 'ballot' ( temp 4-component vector of uint) 0:212 move second child to first child ( temp 2-component vector of float) 0:212 vector swizzle ( temp 2-component vector of float) 0:212 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:212 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'invocation' ( temp uint) 0:212 Constant: 0:212 0 (const int) 0:212 Sequence 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 1 (const int) 0:212 subgroupPartitionedInclusiveMinNV ( global 2-component vector of float) 0:212 vector swizzle ( temp 2-component vector of float) 0:212 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:212 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:212 Constant: 0:212 1 (const int) 0:212 Constant: 0:212 0 (const int) 0:212 Sequence 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 1 (const int) 0:212 'ballot' ( temp 4-component vector of uint) 0:213 move second child to first child ( temp 3-component vector of float) 0:213 vector swizzle ( temp 3-component vector of float) 0:213 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:213 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:213 'invocation' ( temp uint) 0:213 Constant: 0:213 0 (const int) 0:213 Sequence 0:213 Constant: 0:213 0 (const int) 0:213 Constant: 0:213 1 (const int) 0:213 Constant: 0:213 2 (const int) 0:213 subgroupPartitionedInclusiveMinNV ( global 3-component vector of float) 0:213 vector swizzle ( temp 3-component vector of float) 0:213 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:213 Constant: 0:213 2 (const int) 0:213 Constant: 0:213 0 (const int) 0:213 Sequence 0:213 Constant: 0:213 0 (const int) 0:213 Constant: 0:213 1 (const int) 0:213 Constant: 0:213 2 (const int) 0:213 'ballot' ( temp 4-component vector of uint) 0:214 move second child to first child ( temp 4-component vector of float) 0:214 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:214 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'invocation' ( temp uint) 0:214 Constant: 0:214 0 (const int) 0:214 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:214 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:214 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:214 Constant: 0:214 3 (const int) 0:214 Constant: 0:214 0 (const int) 0:214 'ballot' ( temp 4-component vector of uint) 0:216 move second child to first child ( temp int) 0:216 direct index ( temp int) 0:216 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:216 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'invocation' ( temp uint) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 0 (const int) 0:216 subgroupPartitionedInclusiveMinNV ( global int) 0:216 direct index ( temp int) 0:216 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 0 (const int) 0:216 'ballot' ( temp 4-component vector of uint) 0:217 move second child to first child ( temp 2-component vector of int) 0:217 vector swizzle ( temp 2-component vector of int) 0:217 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:217 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'invocation' ( temp uint) 0:217 Constant: 0:217 1 (const int) 0:217 Sequence 0:217 Constant: 0:217 0 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 subgroupPartitionedInclusiveMinNV ( global 2-component vector of int) 0:217 vector swizzle ( temp 2-component vector of int) 0:217 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:217 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:217 Constant: 0:217 1 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Sequence 0:217 Constant: 0:217 0 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 'ballot' ( temp 4-component vector of uint) 0:218 move second child to first child ( temp 3-component vector of int) 0:218 vector swizzle ( temp 3-component vector of int) 0:218 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:218 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:218 'invocation' ( temp uint) 0:218 Constant: 0:218 1 (const int) 0:218 Sequence 0:218 Constant: 0:218 0 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Constant: 0:218 2 (const int) 0:218 subgroupPartitionedInclusiveMinNV ( global 3-component vector of int) 0:218 vector swizzle ( temp 3-component vector of int) 0:218 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:218 Constant: 0:218 2 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Sequence 0:218 Constant: 0:218 0 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Constant: 0:218 2 (const int) 0:218 'ballot' ( temp 4-component vector of uint) 0:219 move second child to first child ( temp 4-component vector of int) 0:219 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:219 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'invocation' ( temp uint) 0:219 Constant: 0:219 1 (const int) 0:219 subgroupPartitionedInclusiveMinNV ( global 4-component vector of int) 0:219 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:219 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:219 Constant: 0:219 3 (const int) 0:219 Constant: 0:219 1 (const int) 0:219 'ballot' ( temp 4-component vector of uint) 0:221 move second child to first child ( temp uint) 0:221 direct index ( temp uint) 0:221 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:221 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'invocation' ( temp uint) 0:221 Constant: 0:221 2 (const int) 0:221 Constant: 0:221 0 (const int) 0:221 subgroupPartitionedInclusiveMinNV ( global uint) 0:221 direct index ( temp uint) 0:221 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 2 (const int) 0:221 Constant: 0:221 0 (const int) 0:221 'ballot' ( temp 4-component vector of uint) 0:222 move second child to first child ( temp 2-component vector of uint) 0:222 vector swizzle ( temp 2-component vector of uint) 0:222 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:222 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'invocation' ( temp uint) 0:222 Constant: 0:222 2 (const int) 0:222 Sequence 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 subgroupPartitionedInclusiveMinNV ( global 2-component vector of uint) 0:222 vector swizzle ( temp 2-component vector of uint) 0:222 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:222 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:222 Constant: 0:222 1 (const int) 0:222 Constant: 0:222 2 (const int) 0:222 Sequence 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 'ballot' ( temp 4-component vector of uint) 0:223 move second child to first child ( temp 3-component vector of uint) 0:223 vector swizzle ( temp 3-component vector of uint) 0:223 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:223 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:223 'invocation' ( temp uint) 0:223 Constant: 0:223 2 (const int) 0:223 Sequence 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 2 (const int) 0:223 subgroupPartitionedInclusiveMinNV ( global 3-component vector of uint) 0:223 vector swizzle ( temp 3-component vector of uint) 0:223 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:223 Constant: 0:223 2 (const int) 0:223 Constant: 0:223 2 (const int) 0:223 Sequence 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 2 (const int) 0:223 'ballot' ( temp 4-component vector of uint) 0:224 move second child to first child ( temp 4-component vector of uint) 0:224 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:224 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'invocation' ( temp uint) 0:224 Constant: 0:224 2 (const int) 0:224 subgroupPartitionedInclusiveMinNV ( global 4-component vector of uint) 0:224 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:224 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:224 Constant: 0:224 3 (const int) 0:224 Constant: 0:224 2 (const int) 0:224 'ballot' ( temp 4-component vector of uint) 0:226 move second child to first child ( temp double) 0:226 direct index ( temp double) 0:226 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:226 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'invocation' ( temp uint) 0:226 Constant: 0:226 3 (const int) 0:226 Constant: 0:226 0 (const int) 0:226 subgroupPartitionedInclusiveMinNV ( global double) 0:226 direct index ( temp double) 0:226 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 3 (const int) 0:226 Constant: 0:226 0 (const int) 0:226 'ballot' ( temp 4-component vector of uint) 0:227 move second child to first child ( temp 2-component vector of double) 0:227 vector swizzle ( temp 2-component vector of double) 0:227 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:227 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'invocation' ( temp uint) 0:227 Constant: 0:227 3 (const int) 0:227 Sequence 0:227 Constant: 0:227 0 (const int) 0:227 Constant: 0:227 1 (const int) 0:227 subgroupPartitionedInclusiveMinNV ( global 2-component vector of double) 0:227 vector swizzle ( temp 2-component vector of double) 0:227 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:227 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:227 Constant: 0:227 1 (const int) 0:227 Constant: 0:227 3 (const int) 0:227 Sequence 0:227 Constant: 0:227 0 (const int) 0:227 Constant: 0:227 1 (const int) 0:227 'ballot' ( temp 4-component vector of uint) 0:228 move second child to first child ( temp 3-component vector of double) 0:228 vector swizzle ( temp 3-component vector of double) 0:228 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:228 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:228 'invocation' ( temp uint) 0:228 Constant: 0:228 3 (const int) 0:228 Sequence 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 1 (const int) 0:228 Constant: 0:228 2 (const int) 0:228 subgroupPartitionedInclusiveMinNV ( global 3-component vector of double) 0:228 vector swizzle ( temp 3-component vector of double) 0:228 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:228 Constant: 0:228 2 (const int) 0:228 Constant: 0:228 3 (const int) 0:228 Sequence 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 1 (const int) 0:228 Constant: 0:228 2 (const int) 0:228 'ballot' ( temp 4-component vector of uint) 0:229 move second child to first child ( temp 4-component vector of double) 0:229 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:229 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'invocation' ( temp uint) 0:229 Constant: 0:229 3 (const int) 0:229 subgroupPartitionedInclusiveMinNV ( global 4-component vector of double) 0:229 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:229 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:229 Constant: 0:229 3 (const int) 0:229 Constant: 0:229 3 (const int) 0:229 'ballot' ( temp 4-component vector of uint) 0:231 move second child to first child ( temp float) 0:231 direct index ( temp float) 0:231 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:231 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'invocation' ( temp uint) 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 subgroupPartitionedInclusiveMaxNV ( global float) 0:231 direct index ( temp float) 0:231 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 'ballot' ( temp 4-component vector of uint) 0:232 move second child to first child ( temp 2-component vector of float) 0:232 vector swizzle ( temp 2-component vector of float) 0:232 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:232 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'invocation' ( temp uint) 0:232 Constant: 0:232 0 (const int) 0:232 Sequence 0:232 Constant: 0:232 0 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 subgroupPartitionedInclusiveMaxNV ( global 2-component vector of float) 0:232 vector swizzle ( temp 2-component vector of float) 0:232 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:232 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:232 Constant: 0:232 1 (const int) 0:232 Constant: 0:232 0 (const int) 0:232 Sequence 0:232 Constant: 0:232 0 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 'ballot' ( temp 4-component vector of uint) 0:233 move second child to first child ( temp 3-component vector of float) 0:233 vector swizzle ( temp 3-component vector of float) 0:233 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:233 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:233 'invocation' ( temp uint) 0:233 Constant: 0:233 0 (const int) 0:233 Sequence 0:233 Constant: 0:233 0 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 2 (const int) 0:233 subgroupPartitionedInclusiveMaxNV ( global 3-component vector of float) 0:233 vector swizzle ( temp 3-component vector of float) 0:233 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:233 Constant: 0:233 2 (const int) 0:233 Constant: 0:233 0 (const int) 0:233 Sequence 0:233 Constant: 0:233 0 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 2 (const int) 0:233 'ballot' ( temp 4-component vector of uint) 0:234 move second child to first child ( temp 4-component vector of float) 0:234 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:234 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'invocation' ( temp uint) 0:234 Constant: 0:234 0 (const int) 0:234 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:234 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:234 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:234 Constant: 0:234 3 (const int) 0:234 Constant: 0:234 0 (const int) 0:234 'ballot' ( temp 4-component vector of uint) 0:236 move second child to first child ( temp int) 0:236 direct index ( temp int) 0:236 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:236 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'invocation' ( temp uint) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 0 (const int) 0:236 subgroupPartitionedInclusiveMaxNV ( global int) 0:236 direct index ( temp int) 0:236 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 0 (const int) 0:236 'ballot' ( temp 4-component vector of uint) 0:237 move second child to first child ( temp 2-component vector of int) 0:237 vector swizzle ( temp 2-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:237 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'invocation' ( temp uint) 0:237 Constant: 0:237 1 (const int) 0:237 Sequence 0:237 Constant: 0:237 0 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 subgroupPartitionedInclusiveMaxNV ( global 2-component vector of int) 0:237 vector swizzle ( temp 2-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:237 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Sequence 0:237 Constant: 0:237 0 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 'ballot' ( temp 4-component vector of uint) 0:238 move second child to first child ( temp 3-component vector of int) 0:238 vector swizzle ( temp 3-component vector of int) 0:238 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:238 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:238 'invocation' ( temp uint) 0:238 Constant: 0:238 1 (const int) 0:238 Sequence 0:238 Constant: 0:238 0 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 Constant: 0:238 2 (const int) 0:238 subgroupPartitionedInclusiveMaxNV ( global 3-component vector of int) 0:238 vector swizzle ( temp 3-component vector of int) 0:238 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:238 Constant: 0:238 2 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 Sequence 0:238 Constant: 0:238 0 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 Constant: 0:238 2 (const int) 0:238 'ballot' ( temp 4-component vector of uint) 0:239 move second child to first child ( temp 4-component vector of int) 0:239 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:239 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'invocation' ( temp uint) 0:239 Constant: 0:239 1 (const int) 0:239 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of int) 0:239 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:239 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:239 Constant: 0:239 3 (const int) 0:239 Constant: 0:239 1 (const int) 0:239 'ballot' ( temp 4-component vector of uint) 0:241 move second child to first child ( temp uint) 0:241 direct index ( temp uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:241 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'invocation' ( temp uint) 0:241 Constant: 0:241 2 (const int) 0:241 Constant: 0:241 0 (const int) 0:241 subgroupPartitionedInclusiveMaxNV ( global uint) 0:241 direct index ( temp uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 Constant: 0:241 0 (const int) 0:241 'ballot' ( temp 4-component vector of uint) 0:242 move second child to first child ( temp 2-component vector of uint) 0:242 vector swizzle ( temp 2-component vector of uint) 0:242 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:242 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'invocation' ( temp uint) 0:242 Constant: 0:242 2 (const int) 0:242 Sequence 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1 (const int) 0:242 subgroupPartitionedInclusiveMaxNV ( global 2-component vector of uint) 0:242 vector swizzle ( temp 2-component vector of uint) 0:242 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:242 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:242 Constant: 0:242 1 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 Sequence 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1 (const int) 0:242 'ballot' ( temp 4-component vector of uint) 0:243 move second child to first child ( temp 3-component vector of uint) 0:243 vector swizzle ( temp 3-component vector of uint) 0:243 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:243 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:243 'invocation' ( temp uint) 0:243 Constant: 0:243 2 (const int) 0:243 Sequence 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 1 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 subgroupPartitionedInclusiveMaxNV ( global 3-component vector of uint) 0:243 vector swizzle ( temp 3-component vector of uint) 0:243 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:243 Constant: 0:243 2 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 Sequence 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 1 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 'ballot' ( temp 4-component vector of uint) 0:244 move second child to first child ( temp 4-component vector of uint) 0:244 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:244 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'invocation' ( temp uint) 0:244 Constant: 0:244 2 (const int) 0:244 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of uint) 0:244 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:244 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:244 Constant: 0:244 3 (const int) 0:244 Constant: 0:244 2 (const int) 0:244 'ballot' ( temp 4-component vector of uint) 0:246 move second child to first child ( temp double) 0:246 direct index ( temp double) 0:246 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:246 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'invocation' ( temp uint) 0:246 Constant: 0:246 3 (const int) 0:246 Constant: 0:246 0 (const int) 0:246 subgroupPartitionedInclusiveMaxNV ( global double) 0:246 direct index ( temp double) 0:246 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 3 (const int) 0:246 Constant: 0:246 0 (const int) 0:246 'ballot' ( temp 4-component vector of uint) 0:247 move second child to first child ( temp 2-component vector of double) 0:247 vector swizzle ( temp 2-component vector of double) 0:247 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:247 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'invocation' ( temp uint) 0:247 Constant: 0:247 3 (const int) 0:247 Sequence 0:247 Constant: 0:247 0 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 subgroupPartitionedInclusiveMaxNV ( global 2-component vector of double) 0:247 vector swizzle ( temp 2-component vector of double) 0:247 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:247 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:247 Constant: 0:247 1 (const int) 0:247 Constant: 0:247 3 (const int) 0:247 Sequence 0:247 Constant: 0:247 0 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 'ballot' ( temp 4-component vector of uint) 0:248 move second child to first child ( temp 3-component vector of double) 0:248 vector swizzle ( temp 3-component vector of double) 0:248 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:248 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:248 'invocation' ( temp uint) 0:248 Constant: 0:248 3 (const int) 0:248 Sequence 0:248 Constant: 0:248 0 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 2 (const int) 0:248 subgroupPartitionedInclusiveMaxNV ( global 3-component vector of double) 0:248 vector swizzle ( temp 3-component vector of double) 0:248 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:248 Constant: 0:248 2 (const int) 0:248 Constant: 0:248 3 (const int) 0:248 Sequence 0:248 Constant: 0:248 0 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 2 (const int) 0:248 'ballot' ( temp 4-component vector of uint) 0:249 move second child to first child ( temp 4-component vector of double) 0:249 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:249 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'invocation' ( temp uint) 0:249 Constant: 0:249 3 (const int) 0:249 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of double) 0:249 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:249 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:249 Constant: 0:249 3 (const int) 0:249 Constant: 0:249 3 (const int) 0:249 'ballot' ( temp 4-component vector of uint) 0:251 move second child to first child ( temp int) 0:251 direct index ( temp int) 0:251 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:251 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'invocation' ( temp uint) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 subgroupPartitionedInclusiveAndNV ( global int) 0:251 direct index ( temp int) 0:251 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 'ballot' ( temp 4-component vector of uint) 0:252 move second child to first child ( temp 2-component vector of int) 0:252 vector swizzle ( temp 2-component vector of int) 0:252 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:252 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'invocation' ( temp uint) 0:252 Constant: 0:252 1 (const int) 0:252 Sequence 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 subgroupPartitionedInclusiveAndNV ( global 2-component vector of int) 0:252 vector swizzle ( temp 2-component vector of int) 0:252 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:252 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 Sequence 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 'ballot' ( temp 4-component vector of uint) 0:253 move second child to first child ( temp 3-component vector of int) 0:253 vector swizzle ( temp 3-component vector of int) 0:253 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:253 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:253 'invocation' ( temp uint) 0:253 Constant: 0:253 1 (const int) 0:253 Sequence 0:253 Constant: 0:253 0 (const int) 0:253 Constant: 0:253 1 (const int) 0:253 Constant: 0:253 2 (const int) 0:253 subgroupPartitionedInclusiveAndNV ( global 3-component vector of int) 0:253 vector swizzle ( temp 3-component vector of int) 0:253 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:253 Constant: 0:253 2 (const int) 0:253 Constant: 0:253 1 (const int) 0:253 Sequence 0:253 Constant: 0:253 0 (const int) 0:253 Constant: 0:253 1 (const int) 0:253 Constant: 0:253 2 (const int) 0:253 'ballot' ( temp 4-component vector of uint) 0:254 move second child to first child ( temp 4-component vector of int) 0:254 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:254 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'invocation' ( temp uint) 0:254 Constant: 0:254 1 (const int) 0:254 subgroupPartitionedInclusiveAndNV ( global 4-component vector of int) 0:254 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:254 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:254 Constant: 0:254 3 (const int) 0:254 Constant: 0:254 1 (const int) 0:254 'ballot' ( temp 4-component vector of uint) 0:256 move second child to first child ( temp uint) 0:256 direct index ( temp uint) 0:256 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:256 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'invocation' ( temp uint) 0:256 Constant: 0:256 2 (const int) 0:256 Constant: 0:256 0 (const int) 0:256 subgroupPartitionedInclusiveAndNV ( global uint) 0:256 direct index ( temp uint) 0:256 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 2 (const int) 0:256 Constant: 0:256 0 (const int) 0:256 'ballot' ( temp 4-component vector of uint) 0:257 move second child to first child ( temp 2-component vector of uint) 0:257 vector swizzle ( temp 2-component vector of uint) 0:257 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:257 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'invocation' ( temp uint) 0:257 Constant: 0:257 2 (const int) 0:257 Sequence 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 subgroupPartitionedInclusiveAndNV ( global 2-component vector of uint) 0:257 vector swizzle ( temp 2-component vector of uint) 0:257 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:257 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:257 Constant: 0:257 1 (const int) 0:257 Constant: 0:257 2 (const int) 0:257 Sequence 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 'ballot' ( temp 4-component vector of uint) 0:258 move second child to first child ( temp 3-component vector of uint) 0:258 vector swizzle ( temp 3-component vector of uint) 0:258 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:258 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:258 'invocation' ( temp uint) 0:258 Constant: 0:258 2 (const int) 0:258 Sequence 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 1 (const int) 0:258 Constant: 0:258 2 (const int) 0:258 subgroupPartitionedInclusiveAndNV ( global 3-component vector of uint) 0:258 vector swizzle ( temp 3-component vector of uint) 0:258 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:258 Constant: 0:258 2 (const int) 0:258 Constant: 0:258 2 (const int) 0:258 Sequence 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 1 (const int) 0:258 Constant: 0:258 2 (const int) 0:258 'ballot' ( temp 4-component vector of uint) 0:259 move second child to first child ( temp 4-component vector of uint) 0:259 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:259 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'invocation' ( temp uint) 0:259 Constant: 0:259 2 (const int) 0:259 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:259 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:259 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:259 Constant: 0:259 3 (const int) 0:259 Constant: 0:259 2 (const int) 0:259 'ballot' ( temp 4-component vector of uint) 0:261 move second child to first child ( temp int) 0:261 direct index ( temp int) 0:261 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:261 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'invocation' ( temp uint) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 0 (const int) 0:261 Convert bool to int ( temp int) 0:261 subgroupPartitionedInclusiveAndNV ( global bool) 0:261 Compare Less Than ( temp bool) 0:261 direct index ( temp int) 0:261 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 0 (const int) 0:261 'ballot' ( temp 4-component vector of uint) 0:262 move second child to first child ( temp 2-component vector of int) 0:262 vector swizzle ( temp 2-component vector of int) 0:262 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:262 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'invocation' ( temp uint) 0:262 Constant: 0:262 1 (const int) 0:262 Sequence 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Convert bool to int ( temp 2-component vector of int) 0:262 subgroupPartitionedInclusiveAndNV ( global 2-component vector of bool) 0:262 Compare Less Than ( global 2-component vector of bool) 0:262 vector swizzle ( temp 2-component vector of int) 0:262 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:262 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:262 Constant: 0:262 1 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Sequence 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Constant: 0:262 0 (const int) 0:262 0 (const int) 0:262 'ballot' ( temp 4-component vector of uint) 0:263 move second child to first child ( temp 3-component vector of int) 0:263 vector swizzle ( temp 3-component vector of int) 0:263 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:263 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:263 'invocation' ( temp uint) 0:263 Constant: 0:263 1 (const int) 0:263 Sequence 0:263 Constant: 0:263 0 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 2 (const int) 0:263 Convert bool to int ( temp 3-component vector of int) 0:263 subgroupPartitionedInclusiveAndNV ( global 3-component vector of bool) 0:263 Compare Less Than ( global 3-component vector of bool) 0:263 vector swizzle ( temp 3-component vector of int) 0:263 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Sequence 0:263 Constant: 0:263 0 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 2 (const int) 0:263 Constant: 0:263 0 (const int) 0:263 0 (const int) 0:263 0 (const int) 0:263 'ballot' ( temp 4-component vector of uint) 0:264 move second child to first child ( temp 4-component vector of int) 0:264 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:264 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'invocation' ( temp uint) 0:264 Constant: 0:264 1 (const int) 0:264 Convert bool to int ( temp 4-component vector of int) 0:264 subgroupPartitionedInclusiveAndNV ( global 4-component vector of bool) 0:264 Compare Less Than ( global 4-component vector of bool) 0:264 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:264 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 0 (const int) 0:264 0 (const int) 0:264 0 (const int) 0:264 0 (const int) 0:264 'ballot' ( temp 4-component vector of uint) 0:266 move second child to first child ( temp int) 0:266 direct index ( temp int) 0:266 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:266 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'invocation' ( temp uint) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 subgroupPartitionedInclusiveOrNV ( global int) 0:266 direct index ( temp int) 0:266 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 'ballot' ( temp 4-component vector of uint) 0:267 move second child to first child ( temp 2-component vector of int) 0:267 vector swizzle ( temp 2-component vector of int) 0:267 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:267 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'invocation' ( temp uint) 0:267 Constant: 0:267 1 (const int) 0:267 Sequence 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 subgroupPartitionedInclusiveOrNV ( global 2-component vector of int) 0:267 vector swizzle ( temp 2-component vector of int) 0:267 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:267 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 Sequence 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 'ballot' ( temp 4-component vector of uint) 0:268 move second child to first child ( temp 3-component vector of int) 0:268 vector swizzle ( temp 3-component vector of int) 0:268 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:268 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:268 'invocation' ( temp uint) 0:268 Constant: 0:268 1 (const int) 0:268 Sequence 0:268 Constant: 0:268 0 (const int) 0:268 Constant: 0:268 1 (const int) 0:268 Constant: 0:268 2 (const int) 0:268 subgroupPartitionedInclusiveOrNV ( global 3-component vector of int) 0:268 vector swizzle ( temp 3-component vector of int) 0:268 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:268 Constant: 0:268 2 (const int) 0:268 Constant: 0:268 1 (const int) 0:268 Sequence 0:268 Constant: 0:268 0 (const int) 0:268 Constant: 0:268 1 (const int) 0:268 Constant: 0:268 2 (const int) 0:268 'ballot' ( temp 4-component vector of uint) 0:269 move second child to first child ( temp 4-component vector of int) 0:269 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:269 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'invocation' ( temp uint) 0:269 Constant: 0:269 1 (const int) 0:269 subgroupPartitionedInclusiveOrNV ( global 4-component vector of int) 0:269 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:269 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:269 Constant: 0:269 3 (const int) 0:269 Constant: 0:269 1 (const int) 0:269 'ballot' ( temp 4-component vector of uint) 0:271 move second child to first child ( temp uint) 0:271 direct index ( temp uint) 0:271 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:271 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'invocation' ( temp uint) 0:271 Constant: 0:271 2 (const int) 0:271 Constant: 0:271 0 (const int) 0:271 subgroupPartitionedInclusiveOrNV ( global uint) 0:271 direct index ( temp uint) 0:271 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 2 (const int) 0:271 Constant: 0:271 0 (const int) 0:271 'ballot' ( temp 4-component vector of uint) 0:272 move second child to first child ( temp 2-component vector of uint) 0:272 vector swizzle ( temp 2-component vector of uint) 0:272 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:272 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'invocation' ( temp uint) 0:272 Constant: 0:272 2 (const int) 0:272 Sequence 0:272 Constant: 0:272 0 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 subgroupPartitionedInclusiveOrNV ( global 2-component vector of uint) 0:272 vector swizzle ( temp 2-component vector of uint) 0:272 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:272 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:272 Constant: 0:272 1 (const int) 0:272 Constant: 0:272 2 (const int) 0:272 Sequence 0:272 Constant: 0:272 0 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 'ballot' ( temp 4-component vector of uint) 0:273 move second child to first child ( temp 3-component vector of uint) 0:273 vector swizzle ( temp 3-component vector of uint) 0:273 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:273 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:273 'invocation' ( temp uint) 0:273 Constant: 0:273 2 (const int) 0:273 Sequence 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 1 (const int) 0:273 Constant: 0:273 2 (const int) 0:273 subgroupPartitionedInclusiveOrNV ( global 3-component vector of uint) 0:273 vector swizzle ( temp 3-component vector of uint) 0:273 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:273 Constant: 0:273 2 (const int) 0:273 Constant: 0:273 2 (const int) 0:273 Sequence 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 1 (const int) 0:273 Constant: 0:273 2 (const int) 0:273 'ballot' ( temp 4-component vector of uint) 0:274 move second child to first child ( temp 4-component vector of uint) 0:274 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:274 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'invocation' ( temp uint) 0:274 Constant: 0:274 2 (const int) 0:274 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:274 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:274 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:274 Constant: 0:274 3 (const int) 0:274 Constant: 0:274 2 (const int) 0:274 'ballot' ( temp 4-component vector of uint) 0:276 move second child to first child ( temp int) 0:276 direct index ( temp int) 0:276 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:276 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'invocation' ( temp uint) 0:276 Constant: 0:276 1 (const int) 0:276 Constant: 0:276 0 (const int) 0:276 Convert bool to int ( temp int) 0:276 subgroupPartitionedInclusiveOrNV ( global bool) 0:276 Compare Less Than ( temp bool) 0:276 direct index ( temp int) 0:276 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 1 (const int) 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 0 (const int) 0:276 'ballot' ( temp 4-component vector of uint) 0:277 move second child to first child ( temp 2-component vector of int) 0:277 vector swizzle ( temp 2-component vector of int) 0:277 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:277 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'invocation' ( temp uint) 0:277 Constant: 0:277 1 (const int) 0:277 Sequence 0:277 Constant: 0:277 0 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Convert bool to int ( temp 2-component vector of int) 0:277 subgroupPartitionedInclusiveOrNV ( global 2-component vector of bool) 0:277 Compare Less Than ( global 2-component vector of bool) 0:277 vector swizzle ( temp 2-component vector of int) 0:277 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:277 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Sequence 0:277 Constant: 0:277 0 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 0 (const int) 0:277 0 (const int) 0:277 'ballot' ( temp 4-component vector of uint) 0:278 move second child to first child ( temp 3-component vector of int) 0:278 vector swizzle ( temp 3-component vector of int) 0:278 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:278 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:278 'invocation' ( temp uint) 0:278 Constant: 0:278 1 (const int) 0:278 Sequence 0:278 Constant: 0:278 0 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 2 (const int) 0:278 Convert bool to int ( temp 3-component vector of int) 0:278 subgroupPartitionedInclusiveOrNV ( global 3-component vector of bool) 0:278 Compare Less Than ( global 3-component vector of bool) 0:278 vector swizzle ( temp 3-component vector of int) 0:278 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Sequence 0:278 Constant: 0:278 0 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 2 (const int) 0:278 Constant: 0:278 0 (const int) 0:278 0 (const int) 0:278 0 (const int) 0:278 'ballot' ( temp 4-component vector of uint) 0:279 move second child to first child ( temp 4-component vector of int) 0:279 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:279 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'invocation' ( temp uint) 0:279 Constant: 0:279 1 (const int) 0:279 Convert bool to int ( temp 4-component vector of int) 0:279 subgroupPartitionedInclusiveOrNV ( global 4-component vector of bool) 0:279 Compare Less Than ( global 4-component vector of bool) 0:279 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:279 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:279 Constant: 0:279 1 (const int) 0:279 Constant: 0:279 1 (const int) 0:279 Constant: 0:279 0 (const int) 0:279 0 (const int) 0:279 0 (const int) 0:279 0 (const int) 0:279 'ballot' ( temp 4-component vector of uint) 0:281 move second child to first child ( temp int) 0:281 direct index ( temp int) 0:281 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:281 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'invocation' ( temp uint) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 0 (const int) 0:281 subgroupPartitionedInclusiveXorNV ( global int) 0:281 direct index ( temp int) 0:281 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 0 (const int) 0:281 'ballot' ( temp 4-component vector of uint) 0:282 move second child to first child ( temp 2-component vector of int) 0:282 vector swizzle ( temp 2-component vector of int) 0:282 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:282 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'invocation' ( temp uint) 0:282 Constant: 0:282 1 (const int) 0:282 Sequence 0:282 Constant: 0:282 0 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 subgroupPartitionedInclusiveXorNV ( global 2-component vector of int) 0:282 vector swizzle ( temp 2-component vector of int) 0:282 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:282 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:282 Constant: 0:282 1 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 Sequence 0:282 Constant: 0:282 0 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 'ballot' ( temp 4-component vector of uint) 0:283 move second child to first child ( temp 3-component vector of int) 0:283 vector swizzle ( temp 3-component vector of int) 0:283 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:283 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:283 'invocation' ( temp uint) 0:283 Constant: 0:283 1 (const int) 0:283 Sequence 0:283 Constant: 0:283 0 (const int) 0:283 Constant: 0:283 1 (const int) 0:283 Constant: 0:283 2 (const int) 0:283 subgroupPartitionedInclusiveXorNV ( global 3-component vector of int) 0:283 vector swizzle ( temp 3-component vector of int) 0:283 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:283 Constant: 0:283 2 (const int) 0:283 Constant: 0:283 1 (const int) 0:283 Sequence 0:283 Constant: 0:283 0 (const int) 0:283 Constant: 0:283 1 (const int) 0:283 Constant: 0:283 2 (const int) 0:283 'ballot' ( temp 4-component vector of uint) 0:284 move second child to first child ( temp 4-component vector of int) 0:284 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:284 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'invocation' ( temp uint) 0:284 Constant: 0:284 1 (const int) 0:284 subgroupPartitionedInclusiveXorNV ( global 4-component vector of int) 0:284 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:284 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:284 Constant: 0:284 3 (const int) 0:284 Constant: 0:284 1 (const int) 0:284 'ballot' ( temp 4-component vector of uint) 0:286 move second child to first child ( temp uint) 0:286 direct index ( temp uint) 0:286 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:286 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'invocation' ( temp uint) 0:286 Constant: 0:286 2 (const int) 0:286 Constant: 0:286 0 (const int) 0:286 subgroupPartitionedInclusiveXorNV ( global uint) 0:286 direct index ( temp uint) 0:286 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 2 (const int) 0:286 Constant: 0:286 0 (const int) 0:286 'ballot' ( temp 4-component vector of uint) 0:287 move second child to first child ( temp 2-component vector of uint) 0:287 vector swizzle ( temp 2-component vector of uint) 0:287 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:287 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'invocation' ( temp uint) 0:287 Constant: 0:287 2 (const int) 0:287 Sequence 0:287 Constant: 0:287 0 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 subgroupPartitionedInclusiveXorNV ( global 2-component vector of uint) 0:287 vector swizzle ( temp 2-component vector of uint) 0:287 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:287 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:287 Constant: 0:287 1 (const int) 0:287 Constant: 0:287 2 (const int) 0:287 Sequence 0:287 Constant: 0:287 0 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 'ballot' ( temp 4-component vector of uint) 0:288 move second child to first child ( temp 3-component vector of uint) 0:288 vector swizzle ( temp 3-component vector of uint) 0:288 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:288 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:288 'invocation' ( temp uint) 0:288 Constant: 0:288 2 (const int) 0:288 Sequence 0:288 Constant: 0:288 0 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 2 (const int) 0:288 subgroupPartitionedInclusiveXorNV ( global 3-component vector of uint) 0:288 vector swizzle ( temp 3-component vector of uint) 0:288 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:288 Constant: 0:288 2 (const int) 0:288 Constant: 0:288 2 (const int) 0:288 Sequence 0:288 Constant: 0:288 0 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 2 (const int) 0:288 'ballot' ( temp 4-component vector of uint) 0:289 move second child to first child ( temp 4-component vector of uint) 0:289 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:289 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'invocation' ( temp uint) 0:289 Constant: 0:289 2 (const int) 0:289 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:289 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:289 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:289 Constant: 0:289 3 (const int) 0:289 Constant: 0:289 2 (const int) 0:289 'ballot' ( temp 4-component vector of uint) 0:291 move second child to first child ( temp int) 0:291 direct index ( temp int) 0:291 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:291 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'invocation' ( temp uint) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 0 (const int) 0:291 Convert bool to int ( temp int) 0:291 subgroupPartitionedInclusiveXorNV ( global bool) 0:291 Compare Less Than ( temp bool) 0:291 direct index ( temp int) 0:291 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 0 (const int) 0:291 'ballot' ( temp 4-component vector of uint) 0:292 move second child to first child ( temp 2-component vector of int) 0:292 vector swizzle ( temp 2-component vector of int) 0:292 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:292 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'invocation' ( temp uint) 0:292 Constant: 0:292 1 (const int) 0:292 Sequence 0:292 Constant: 0:292 0 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Convert bool to int ( temp 2-component vector of int) 0:292 subgroupPartitionedInclusiveXorNV ( global 2-component vector of bool) 0:292 Compare Less Than ( global 2-component vector of bool) 0:292 vector swizzle ( temp 2-component vector of int) 0:292 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:292 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:292 Constant: 0:292 1 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Sequence 0:292 Constant: 0:292 0 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Constant: 0:292 0 (const int) 0:292 0 (const int) 0:292 'ballot' ( temp 4-component vector of uint) 0:293 move second child to first child ( temp 3-component vector of int) 0:293 vector swizzle ( temp 3-component vector of int) 0:293 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:293 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:293 'invocation' ( temp uint) 0:293 Constant: 0:293 1 (const int) 0:293 Sequence 0:293 Constant: 0:293 0 (const int) 0:293 Constant: 0:293 1 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 Convert bool to int ( temp 3-component vector of int) 0:293 subgroupPartitionedInclusiveXorNV ( global 3-component vector of bool) 0:293 Compare Less Than ( global 3-component vector of bool) 0:293 vector swizzle ( temp 3-component vector of int) 0:293 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:293 Constant: 0:293 1 (const int) 0:293 Constant: 0:293 1 (const int) 0:293 Sequence 0:293 Constant: 0:293 0 (const int) 0:293 Constant: 0:293 1 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 Constant: 0:293 0 (const int) 0:293 0 (const int) 0:293 0 (const int) 0:293 'ballot' ( temp 4-component vector of uint) 0:294 move second child to first child ( temp 4-component vector of int) 0:294 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:294 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'invocation' ( temp uint) 0:294 Constant: 0:294 1 (const int) 0:294 Convert bool to int ( temp 4-component vector of int) 0:294 subgroupPartitionedInclusiveXorNV ( global 4-component vector of bool) 0:294 Compare Less Than ( global 4-component vector of bool) 0:294 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:294 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 0 (const int) 0:294 0 (const int) 0:294 0 (const int) 0:294 0 (const int) 0:294 'ballot' ( temp 4-component vector of uint) 0:296 move second child to first child ( temp float) 0:296 direct index ( temp float) 0:296 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:296 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'invocation' ( temp uint) 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 subgroupPartitionedExclusiveAddNV ( global float) 0:296 direct index ( temp float) 0:296 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 'ballot' ( temp 4-component vector of uint) 0:297 move second child to first child ( temp 2-component vector of float) 0:297 vector swizzle ( temp 2-component vector of float) 0:297 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:297 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'invocation' ( temp uint) 0:297 Constant: 0:297 0 (const int) 0:297 Sequence 0:297 Constant: 0:297 0 (const int) 0:297 Constant: 0:297 1 (const int) 0:297 subgroupPartitionedExclusiveAddNV ( global 2-component vector of float) 0:297 vector swizzle ( temp 2-component vector of float) 0:297 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:297 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:297 Constant: 0:297 1 (const int) 0:297 Constant: 0:297 0 (const int) 0:297 Sequence 0:297 Constant: 0:297 0 (const int) 0:297 Constant: 0:297 1 (const int) 0:297 'ballot' ( temp 4-component vector of uint) 0:298 move second child to first child ( temp 3-component vector of float) 0:298 vector swizzle ( temp 3-component vector of float) 0:298 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:298 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:298 'invocation' ( temp uint) 0:298 Constant: 0:298 0 (const int) 0:298 Sequence 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 1 (const int) 0:298 Constant: 0:298 2 (const int) 0:298 subgroupPartitionedExclusiveAddNV ( global 3-component vector of float) 0:298 vector swizzle ( temp 3-component vector of float) 0:298 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:298 Constant: 0:298 2 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 Sequence 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 1 (const int) 0:298 Constant: 0:298 2 (const int) 0:298 'ballot' ( temp 4-component vector of uint) 0:299 move second child to first child ( temp 4-component vector of float) 0:299 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:299 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'invocation' ( temp uint) 0:299 Constant: 0:299 0 (const int) 0:299 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:299 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:299 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:299 Constant: 0:299 3 (const int) 0:299 Constant: 0:299 0 (const int) 0:299 'ballot' ( temp 4-component vector of uint) 0:301 move second child to first child ( temp int) 0:301 direct index ( temp int) 0:301 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:301 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'invocation' ( temp uint) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 0 (const int) 0:301 subgroupPartitionedExclusiveAddNV ( global int) 0:301 direct index ( temp int) 0:301 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 0 (const int) 0:301 'ballot' ( temp 4-component vector of uint) 0:302 move second child to first child ( temp 2-component vector of int) 0:302 vector swizzle ( temp 2-component vector of int) 0:302 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:302 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'invocation' ( temp uint) 0:302 Constant: 0:302 1 (const int) 0:302 Sequence 0:302 Constant: 0:302 0 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 subgroupPartitionedExclusiveAddNV ( global 2-component vector of int) 0:302 vector swizzle ( temp 2-component vector of int) 0:302 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:302 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:302 Constant: 0:302 1 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Sequence 0:302 Constant: 0:302 0 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 'ballot' ( temp 4-component vector of uint) 0:303 move second child to first child ( temp 3-component vector of int) 0:303 vector swizzle ( temp 3-component vector of int) 0:303 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:303 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:303 'invocation' ( temp uint) 0:303 Constant: 0:303 1 (const int) 0:303 Sequence 0:303 Constant: 0:303 0 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 2 (const int) 0:303 subgroupPartitionedExclusiveAddNV ( global 3-component vector of int) 0:303 vector swizzle ( temp 3-component vector of int) 0:303 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:303 Constant: 0:303 2 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Sequence 0:303 Constant: 0:303 0 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 2 (const int) 0:303 'ballot' ( temp 4-component vector of uint) 0:304 move second child to first child ( temp 4-component vector of int) 0:304 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:304 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'invocation' ( temp uint) 0:304 Constant: 0:304 1 (const int) 0:304 subgroupPartitionedExclusiveAddNV ( global 4-component vector of int) 0:304 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:304 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:304 Constant: 0:304 3 (const int) 0:304 Constant: 0:304 1 (const int) 0:304 'ballot' ( temp 4-component vector of uint) 0:306 move second child to first child ( temp uint) 0:306 direct index ( temp uint) 0:306 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:306 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'invocation' ( temp uint) 0:306 Constant: 0:306 2 (const int) 0:306 Constant: 0:306 0 (const int) 0:306 subgroupPartitionedExclusiveAddNV ( global uint) 0:306 direct index ( temp uint) 0:306 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 2 (const int) 0:306 Constant: 0:306 0 (const int) 0:306 'ballot' ( temp 4-component vector of uint) 0:307 move second child to first child ( temp 2-component vector of uint) 0:307 vector swizzle ( temp 2-component vector of uint) 0:307 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:307 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'invocation' ( temp uint) 0:307 Constant: 0:307 2 (const int) 0:307 Sequence 0:307 Constant: 0:307 0 (const int) 0:307 Constant: 0:307 1 (const int) 0:307 subgroupPartitionedExclusiveAddNV ( global 2-component vector of uint) 0:307 vector swizzle ( temp 2-component vector of uint) 0:307 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:307 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:307 Constant: 0:307 1 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 Sequence 0:307 Constant: 0:307 0 (const int) 0:307 Constant: 0:307 1 (const int) 0:307 'ballot' ( temp 4-component vector of uint) 0:308 move second child to first child ( temp 3-component vector of uint) 0:308 vector swizzle ( temp 3-component vector of uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:308 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:308 'invocation' ( temp uint) 0:308 Constant: 0:308 2 (const int) 0:308 Sequence 0:308 Constant: 0:308 0 (const int) 0:308 Constant: 0:308 1 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 subgroupPartitionedExclusiveAddNV ( global 3-component vector of uint) 0:308 vector swizzle ( temp 3-component vector of uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 Sequence 0:308 Constant: 0:308 0 (const int) 0:308 Constant: 0:308 1 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 'ballot' ( temp 4-component vector of uint) 0:309 move second child to first child ( temp 4-component vector of uint) 0:309 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:309 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'invocation' ( temp uint) 0:309 Constant: 0:309 2 (const int) 0:309 subgroupPartitionedExclusiveAddNV ( global 4-component vector of uint) 0:309 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:309 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:309 Constant: 0:309 3 (const int) 0:309 Constant: 0:309 2 (const int) 0:309 'ballot' ( temp 4-component vector of uint) 0:311 move second child to first child ( temp double) 0:311 direct index ( temp double) 0:311 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:311 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'invocation' ( temp uint) 0:311 Constant: 0:311 3 (const int) 0:311 Constant: 0:311 0 (const int) 0:311 subgroupPartitionedExclusiveAddNV ( global double) 0:311 direct index ( temp double) 0:311 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 3 (const int) 0:311 Constant: 0:311 0 (const int) 0:311 'ballot' ( temp 4-component vector of uint) 0:312 move second child to first child ( temp 2-component vector of double) 0:312 vector swizzle ( temp 2-component vector of double) 0:312 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:312 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'invocation' ( temp uint) 0:312 Constant: 0:312 3 (const int) 0:312 Sequence 0:312 Constant: 0:312 0 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 subgroupPartitionedExclusiveAddNV ( global 2-component vector of double) 0:312 vector swizzle ( temp 2-component vector of double) 0:312 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:312 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:312 Constant: 0:312 1 (const int) 0:312 Constant: 0:312 3 (const int) 0:312 Sequence 0:312 Constant: 0:312 0 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 'ballot' ( temp 4-component vector of uint) 0:313 move second child to first child ( temp 3-component vector of double) 0:313 vector swizzle ( temp 3-component vector of double) 0:313 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:313 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:313 'invocation' ( temp uint) 0:313 Constant: 0:313 3 (const int) 0:313 Sequence 0:313 Constant: 0:313 0 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 Constant: 0:313 2 (const int) 0:313 subgroupPartitionedExclusiveAddNV ( global 3-component vector of double) 0:313 vector swizzle ( temp 3-component vector of double) 0:313 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:313 Constant: 0:313 2 (const int) 0:313 Constant: 0:313 3 (const int) 0:313 Sequence 0:313 Constant: 0:313 0 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 Constant: 0:313 2 (const int) 0:313 'ballot' ( temp 4-component vector of uint) 0:314 move second child to first child ( temp 4-component vector of double) 0:314 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:314 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'invocation' ( temp uint) 0:314 Constant: 0:314 3 (const int) 0:314 subgroupPartitionedExclusiveAddNV ( global 4-component vector of double) 0:314 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:314 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:314 Constant: 0:314 3 (const int) 0:314 Constant: 0:314 3 (const int) 0:314 'ballot' ( temp 4-component vector of uint) 0:316 move second child to first child ( temp float) 0:316 direct index ( temp float) 0:316 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:316 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'invocation' ( temp uint) 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 0 (const int) 0:316 subgroupPartitionedExclusiveMulNV ( global float) 0:316 direct index ( temp float) 0:316 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 0 (const int) 0:316 'ballot' ( temp 4-component vector of uint) 0:317 move second child to first child ( temp 2-component vector of float) 0:317 vector swizzle ( temp 2-component vector of float) 0:317 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:317 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'invocation' ( temp uint) 0:317 Constant: 0:317 0 (const int) 0:317 Sequence 0:317 Constant: 0:317 0 (const int) 0:317 Constant: 0:317 1 (const int) 0:317 subgroupPartitionedExclusiveMulNV ( global 2-component vector of float) 0:317 vector swizzle ( temp 2-component vector of float) 0:317 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:317 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:317 Constant: 0:317 1 (const int) 0:317 Constant: 0:317 0 (const int) 0:317 Sequence 0:317 Constant: 0:317 0 (const int) 0:317 Constant: 0:317 1 (const int) 0:317 'ballot' ( temp 4-component vector of uint) 0:318 move second child to first child ( temp 3-component vector of float) 0:318 vector swizzle ( temp 3-component vector of float) 0:318 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:318 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:318 'invocation' ( temp uint) 0:318 Constant: 0:318 0 (const int) 0:318 Sequence 0:318 Constant: 0:318 0 (const int) 0:318 Constant: 0:318 1 (const int) 0:318 Constant: 0:318 2 (const int) 0:318 subgroupPartitionedExclusiveMulNV ( global 3-component vector of float) 0:318 vector swizzle ( temp 3-component vector of float) 0:318 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:318 Constant: 0:318 2 (const int) 0:318 Constant: 0:318 0 (const int) 0:318 Sequence 0:318 Constant: 0:318 0 (const int) 0:318 Constant: 0:318 1 (const int) 0:318 Constant: 0:318 2 (const int) 0:318 'ballot' ( temp 4-component vector of uint) 0:319 move second child to first child ( temp 4-component vector of float) 0:319 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:319 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'invocation' ( temp uint) 0:319 Constant: 0:319 0 (const int) 0:319 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:319 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:319 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:319 Constant: 0:319 3 (const int) 0:319 Constant: 0:319 0 (const int) 0:319 'ballot' ( temp 4-component vector of uint) 0:321 move second child to first child ( temp int) 0:321 direct index ( temp int) 0:321 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:321 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'invocation' ( temp uint) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 0 (const int) 0:321 subgroupPartitionedExclusiveMulNV ( global int) 0:321 direct index ( temp int) 0:321 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 0 (const int) 0:321 'ballot' ( temp 4-component vector of uint) 0:322 move second child to first child ( temp 2-component vector of int) 0:322 vector swizzle ( temp 2-component vector of int) 0:322 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:322 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'invocation' ( temp uint) 0:322 Constant: 0:322 1 (const int) 0:322 Sequence 0:322 Constant: 0:322 0 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 subgroupPartitionedExclusiveMulNV ( global 2-component vector of int) 0:322 vector swizzle ( temp 2-component vector of int) 0:322 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:322 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:322 Constant: 0:322 1 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Sequence 0:322 Constant: 0:322 0 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 'ballot' ( temp 4-component vector of uint) 0:323 move second child to first child ( temp 3-component vector of int) 0:323 vector swizzle ( temp 3-component vector of int) 0:323 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:323 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:323 'invocation' ( temp uint) 0:323 Constant: 0:323 1 (const int) 0:323 Sequence 0:323 Constant: 0:323 0 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 2 (const int) 0:323 subgroupPartitionedExclusiveMulNV ( global 3-component vector of int) 0:323 vector swizzle ( temp 3-component vector of int) 0:323 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:323 Constant: 0:323 2 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Sequence 0:323 Constant: 0:323 0 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 2 (const int) 0:323 'ballot' ( temp 4-component vector of uint) 0:324 move second child to first child ( temp 4-component vector of int) 0:324 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:324 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'invocation' ( temp uint) 0:324 Constant: 0:324 1 (const int) 0:324 subgroupPartitionedExclusiveMulNV ( global 4-component vector of int) 0:324 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:324 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:324 Constant: 0:324 3 (const int) 0:324 Constant: 0:324 1 (const int) 0:324 'ballot' ( temp 4-component vector of uint) 0:326 move second child to first child ( temp uint) 0:326 direct index ( temp uint) 0:326 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:326 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'invocation' ( temp uint) 0:326 Constant: 0:326 2 (const int) 0:326 Constant: 0:326 0 (const int) 0:326 subgroupPartitionedExclusiveMulNV ( global uint) 0:326 direct index ( temp uint) 0:326 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 2 (const int) 0:326 Constant: 0:326 0 (const int) 0:326 'ballot' ( temp 4-component vector of uint) 0:327 move second child to first child ( temp 2-component vector of uint) 0:327 vector swizzle ( temp 2-component vector of uint) 0:327 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:327 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'invocation' ( temp uint) 0:327 Constant: 0:327 2 (const int) 0:327 Sequence 0:327 Constant: 0:327 0 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 subgroupPartitionedExclusiveMulNV ( global 2-component vector of uint) 0:327 vector swizzle ( temp 2-component vector of uint) 0:327 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:327 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:327 Constant: 0:327 1 (const int) 0:327 Constant: 0:327 2 (const int) 0:327 Sequence 0:327 Constant: 0:327 0 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 'ballot' ( temp 4-component vector of uint) 0:328 move second child to first child ( temp 3-component vector of uint) 0:328 vector swizzle ( temp 3-component vector of uint) 0:328 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:328 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:328 'invocation' ( temp uint) 0:328 Constant: 0:328 2 (const int) 0:328 Sequence 0:328 Constant: 0:328 0 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 Constant: 0:328 2 (const int) 0:328 subgroupPartitionedExclusiveMulNV ( global 3-component vector of uint) 0:328 vector swizzle ( temp 3-component vector of uint) 0:328 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:328 Constant: 0:328 2 (const int) 0:328 Constant: 0:328 2 (const int) 0:328 Sequence 0:328 Constant: 0:328 0 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 Constant: 0:328 2 (const int) 0:328 'ballot' ( temp 4-component vector of uint) 0:329 move second child to first child ( temp 4-component vector of uint) 0:329 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:329 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'invocation' ( temp uint) 0:329 Constant: 0:329 2 (const int) 0:329 subgroupPartitionedExclusiveMulNV ( global 4-component vector of uint) 0:329 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:329 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:329 Constant: 0:329 3 (const int) 0:329 Constant: 0:329 2 (const int) 0:329 'ballot' ( temp 4-component vector of uint) 0:331 move second child to first child ( temp double) 0:331 direct index ( temp double) 0:331 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:331 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'invocation' ( temp uint) 0:331 Constant: 0:331 3 (const int) 0:331 Constant: 0:331 0 (const int) 0:331 subgroupPartitionedExclusiveMulNV ( global double) 0:331 direct index ( temp double) 0:331 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 3 (const int) 0:331 Constant: 0:331 0 (const int) 0:331 'ballot' ( temp 4-component vector of uint) 0:332 move second child to first child ( temp 2-component vector of double) 0:332 vector swizzle ( temp 2-component vector of double) 0:332 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:332 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'invocation' ( temp uint) 0:332 Constant: 0:332 3 (const int) 0:332 Sequence 0:332 Constant: 0:332 0 (const int) 0:332 Constant: 0:332 1 (const int) 0:332 subgroupPartitionedExclusiveMulNV ( global 2-component vector of double) 0:332 vector swizzle ( temp 2-component vector of double) 0:332 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:332 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:332 Constant: 0:332 1 (const int) 0:332 Constant: 0:332 3 (const int) 0:332 Sequence 0:332 Constant: 0:332 0 (const int) 0:332 Constant: 0:332 1 (const int) 0:332 'ballot' ( temp 4-component vector of uint) 0:333 move second child to first child ( temp 3-component vector of double) 0:333 vector swizzle ( temp 3-component vector of double) 0:333 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:333 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:333 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:333 'invocation' ( temp uint) 0:333 Constant: 0:333 3 (const int) 0:333 Sequence 0:333 Constant: 0:333 0 (const int) 0:333 Constant: 0:333 1 (const int) 0:333 Constant: 0:333 2 (const int) 0:333 subgroupPartitionedExclusiveMulNV ( global 3-component vector of double) 0:333 vector swizzle ( temp 3-component vector of double) 0:333 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:333 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:333 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:333 Constant: 0:333 2 (const int) 0:333 Constant: 0:333 3 (const int) 0:333 Sequence 0:333 Constant: 0:333 0 (const int) 0:333 Constant: 0:333 1 (const int) 0:333 Constant: 0:333 2 (const int) 0:333 'ballot' ( temp 4-component vector of uint) 0:334 move second child to first child ( temp 4-component vector of double) 0:334 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:334 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'invocation' ( temp uint) 0:334 Constant: 0:334 3 (const int) 0:334 subgroupPartitionedExclusiveMulNV ( global 4-component vector of double) 0:334 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:334 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:334 Constant: 0:334 3 (const int) 0:334 Constant: 0:334 3 (const int) 0:334 'ballot' ( temp 4-component vector of uint) 0:336 move second child to first child ( temp float) 0:336 direct index ( temp float) 0:336 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:336 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'invocation' ( temp uint) 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 0 (const int) 0:336 subgroupPartitionedExclusiveMinNV ( global float) 0:336 direct index ( temp float) 0:336 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:336 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 0 (const int) 0:336 'ballot' ( temp 4-component vector of uint) 0:337 move second child to first child ( temp 2-component vector of float) 0:337 vector swizzle ( temp 2-component vector of float) 0:337 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:337 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'invocation' ( temp uint) 0:337 Constant: 0:337 0 (const int) 0:337 Sequence 0:337 Constant: 0:337 0 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 subgroupPartitionedExclusiveMinNV ( global 2-component vector of float) 0:337 vector swizzle ( temp 2-component vector of float) 0:337 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:337 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:337 Constant: 0:337 1 (const int) 0:337 Constant: 0:337 0 (const int) 0:337 Sequence 0:337 Constant: 0:337 0 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 'ballot' ( temp 4-component vector of uint) 0:338 move second child to first child ( temp 3-component vector of float) 0:338 vector swizzle ( temp 3-component vector of float) 0:338 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:338 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:338 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:338 'invocation' ( temp uint) 0:338 Constant: 0:338 0 (const int) 0:338 Sequence 0:338 Constant: 0:338 0 (const int) 0:338 Constant: 0:338 1 (const int) 0:338 Constant: 0:338 2 (const int) 0:338 subgroupPartitionedExclusiveMinNV ( global 3-component vector of float) 0:338 vector swizzle ( temp 3-component vector of float) 0:338 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:338 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:338 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:338 Constant: 0:338 2 (const int) 0:338 Constant: 0:338 0 (const int) 0:338 Sequence 0:338 Constant: 0:338 0 (const int) 0:338 Constant: 0:338 1 (const int) 0:338 Constant: 0:338 2 (const int) 0:338 'ballot' ( temp 4-component vector of uint) 0:339 move second child to first child ( temp 4-component vector of float) 0:339 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:339 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'invocation' ( temp uint) 0:339 Constant: 0:339 0 (const int) 0:339 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:339 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:339 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:339 Constant: 0:339 3 (const int) 0:339 Constant: 0:339 0 (const int) 0:339 'ballot' ( temp 4-component vector of uint) 0:341 move second child to first child ( temp int) 0:341 direct index ( temp int) 0:341 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:341 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'invocation' ( temp uint) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 0 (const int) 0:341 subgroupPartitionedExclusiveMinNV ( global int) 0:341 direct index ( temp int) 0:341 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:341 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 0 (const int) 0:341 'ballot' ( temp 4-component vector of uint) 0:342 move second child to first child ( temp 2-component vector of int) 0:342 vector swizzle ( temp 2-component vector of int) 0:342 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:342 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'invocation' ( temp uint) 0:342 Constant: 0:342 1 (const int) 0:342 Sequence 0:342 Constant: 0:342 0 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 subgroupPartitionedExclusiveMinNV ( global 2-component vector of int) 0:342 vector swizzle ( temp 2-component vector of int) 0:342 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:342 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:342 Constant: 0:342 1 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Sequence 0:342 Constant: 0:342 0 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 'ballot' ( temp 4-component vector of uint) 0:343 move second child to first child ( temp 3-component vector of int) 0:343 vector swizzle ( temp 3-component vector of int) 0:343 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:343 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:343 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:343 'invocation' ( temp uint) 0:343 Constant: 0:343 1 (const int) 0:343 Sequence 0:343 Constant: 0:343 0 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 Constant: 0:343 2 (const int) 0:343 subgroupPartitionedExclusiveMinNV ( global 3-component vector of int) 0:343 vector swizzle ( temp 3-component vector of int) 0:343 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:343 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:343 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:343 Constant: 0:343 2 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 Sequence 0:343 Constant: 0:343 0 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 Constant: 0:343 2 (const int) 0:343 'ballot' ( temp 4-component vector of uint) 0:344 move second child to first child ( temp 4-component vector of int) 0:344 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:344 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'invocation' ( temp uint) 0:344 Constant: 0:344 1 (const int) 0:344 subgroupPartitionedExclusiveMinNV ( global 4-component vector of int) 0:344 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:344 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:344 Constant: 0:344 3 (const int) 0:344 Constant: 0:344 1 (const int) 0:344 'ballot' ( temp 4-component vector of uint) 0:346 move second child to first child ( temp uint) 0:346 direct index ( temp uint) 0:346 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:346 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'invocation' ( temp uint) 0:346 Constant: 0:346 2 (const int) 0:346 Constant: 0:346 0 (const int) 0:346 subgroupPartitionedExclusiveMinNV ( global uint) 0:346 direct index ( temp uint) 0:346 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:346 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 2 (const int) 0:346 Constant: 0:346 0 (const int) 0:346 'ballot' ( temp 4-component vector of uint) 0:347 move second child to first child ( temp 2-component vector of uint) 0:347 vector swizzle ( temp 2-component vector of uint) 0:347 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:347 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'invocation' ( temp uint) 0:347 Constant: 0:347 2 (const int) 0:347 Sequence 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 1 (const int) 0:347 subgroupPartitionedExclusiveMinNV ( global 2-component vector of uint) 0:347 vector swizzle ( temp 2-component vector of uint) 0:347 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:347 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:347 Constant: 0:347 1 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 Sequence 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 1 (const int) 0:347 'ballot' ( temp 4-component vector of uint) 0:348 move second child to first child ( temp 3-component vector of uint) 0:348 vector swizzle ( temp 3-component vector of uint) 0:348 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:348 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:348 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:348 'invocation' ( temp uint) 0:348 Constant: 0:348 2 (const int) 0:348 Sequence 0:348 Constant: 0:348 0 (const int) 0:348 Constant: 0:348 1 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 subgroupPartitionedExclusiveMinNV ( global 3-component vector of uint) 0:348 vector swizzle ( temp 3-component vector of uint) 0:348 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:348 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:348 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:348 Constant: 0:348 2 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 Sequence 0:348 Constant: 0:348 0 (const int) 0:348 Constant: 0:348 1 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 'ballot' ( temp 4-component vector of uint) 0:349 move second child to first child ( temp 4-component vector of uint) 0:349 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:349 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'invocation' ( temp uint) 0:349 Constant: 0:349 2 (const int) 0:349 subgroupPartitionedExclusiveMinNV ( global 4-component vector of uint) 0:349 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:349 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:349 Constant: 0:349 3 (const int) 0:349 Constant: 0:349 2 (const int) 0:349 'ballot' ( temp 4-component vector of uint) 0:351 move second child to first child ( temp double) 0:351 direct index ( temp double) 0:351 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:351 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'invocation' ( temp uint) 0:351 Constant: 0:351 3 (const int) 0:351 Constant: 0:351 0 (const int) 0:351 subgroupPartitionedExclusiveMinNV ( global double) 0:351 direct index ( temp double) 0:351 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:351 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 3 (const int) 0:351 Constant: 0:351 0 (const int) 0:351 'ballot' ( temp 4-component vector of uint) 0:352 move second child to first child ( temp 2-component vector of double) 0:352 vector swizzle ( temp 2-component vector of double) 0:352 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:352 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'invocation' ( temp uint) 0:352 Constant: 0:352 3 (const int) 0:352 Sequence 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 subgroupPartitionedExclusiveMinNV ( global 2-component vector of double) 0:352 vector swizzle ( temp 2-component vector of double) 0:352 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:352 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:352 Constant: 0:352 1 (const int) 0:352 Constant: 0:352 3 (const int) 0:352 Sequence 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 'ballot' ( temp 4-component vector of uint) 0:353 move second child to first child ( temp 3-component vector of double) 0:353 vector swizzle ( temp 3-component vector of double) 0:353 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:353 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:353 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:353 'invocation' ( temp uint) 0:353 Constant: 0:353 3 (const int) 0:353 Sequence 0:353 Constant: 0:353 0 (const int) 0:353 Constant: 0:353 1 (const int) 0:353 Constant: 0:353 2 (const int) 0:353 subgroupPartitionedExclusiveMinNV ( global 3-component vector of double) 0:353 vector swizzle ( temp 3-component vector of double) 0:353 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:353 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:353 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:353 Constant: 0:353 2 (const int) 0:353 Constant: 0:353 3 (const int) 0:353 Sequence 0:353 Constant: 0:353 0 (const int) 0:353 Constant: 0:353 1 (const int) 0:353 Constant: 0:353 2 (const int) 0:353 'ballot' ( temp 4-component vector of uint) 0:354 move second child to first child ( temp 4-component vector of double) 0:354 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:354 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'invocation' ( temp uint) 0:354 Constant: 0:354 3 (const int) 0:354 subgroupPartitionedExclusiveMinNV ( global 4-component vector of double) 0:354 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:354 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:354 Constant: 0:354 3 (const int) 0:354 Constant: 0:354 3 (const int) 0:354 'ballot' ( temp 4-component vector of uint) 0:356 move second child to first child ( temp float) 0:356 direct index ( temp float) 0:356 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:356 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'invocation' ( temp uint) 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 0 (const int) 0:356 subgroupPartitionedExclusiveMaxNV ( global float) 0:356 direct index ( temp float) 0:356 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:356 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 0 (const int) 0:356 Constant: 0:356 0 (const int) 0:356 'ballot' ( temp 4-component vector of uint) 0:357 move second child to first child ( temp 2-component vector of float) 0:357 vector swizzle ( temp 2-component vector of float) 0:357 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:357 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'invocation' ( temp uint) 0:357 Constant: 0:357 0 (const int) 0:357 Sequence 0:357 Constant: 0:357 0 (const int) 0:357 Constant: 0:357 1 (const int) 0:357 subgroupPartitionedExclusiveMaxNV ( global 2-component vector of float) 0:357 vector swizzle ( temp 2-component vector of float) 0:357 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:357 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:357 Constant: 0:357 1 (const int) 0:357 Constant: 0:357 0 (const int) 0:357 Sequence 0:357 Constant: 0:357 0 (const int) 0:357 Constant: 0:357 1 (const int) 0:357 'ballot' ( temp 4-component vector of uint) 0:358 move second child to first child ( temp 3-component vector of float) 0:358 vector swizzle ( temp 3-component vector of float) 0:358 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:358 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:358 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:358 'invocation' ( temp uint) 0:358 Constant: 0:358 0 (const int) 0:358 Sequence 0:358 Constant: 0:358 0 (const int) 0:358 Constant: 0:358 1 (const int) 0:358 Constant: 0:358 2 (const int) 0:358 subgroupPartitionedExclusiveMaxNV ( global 3-component vector of float) 0:358 vector swizzle ( temp 3-component vector of float) 0:358 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:358 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:358 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:358 Constant: 0:358 2 (const int) 0:358 Constant: 0:358 0 (const int) 0:358 Sequence 0:358 Constant: 0:358 0 (const int) 0:358 Constant: 0:358 1 (const int) 0:358 Constant: 0:358 2 (const int) 0:358 'ballot' ( temp 4-component vector of uint) 0:359 move second child to first child ( temp 4-component vector of float) 0:359 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:359 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'invocation' ( temp uint) 0:359 Constant: 0:359 0 (const int) 0:359 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:359 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:359 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:359 Constant: 0:359 3 (const int) 0:359 Constant: 0:359 0 (const int) 0:359 'ballot' ( temp 4-component vector of uint) 0:361 move second child to first child ( temp int) 0:361 direct index ( temp int) 0:361 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:361 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'invocation' ( temp uint) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 0 (const int) 0:361 subgroupPartitionedExclusiveMaxNV ( global int) 0:361 direct index ( temp int) 0:361 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:361 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:361 Constant: 0:361 0 (const int) 0:361 Constant: 0:361 1 (const int) 0:361 Constant: 0:361 0 (const int) 0:361 'ballot' ( temp 4-component vector of uint) 0:362 move second child to first child ( temp 2-component vector of int) 0:362 vector swizzle ( temp 2-component vector of int) 0:362 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:362 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'invocation' ( temp uint) 0:362 Constant: 0:362 1 (const int) 0:362 Sequence 0:362 Constant: 0:362 0 (const int) 0:362 Constant: 0:362 1 (const int) 0:362 subgroupPartitionedExclusiveMaxNV ( global 2-component vector of int) 0:362 vector swizzle ( temp 2-component vector of int) 0:362 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:362 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:362 Constant: 0:362 1 (const int) 0:362 Constant: 0:362 1 (const int) 0:362 Sequence 0:362 Constant: 0:362 0 (const int) 0:362 Constant: 0:362 1 (const int) 0:362 'ballot' ( temp 4-component vector of uint) 0:363 move second child to first child ( temp 3-component vector of int) 0:363 vector swizzle ( temp 3-component vector of int) 0:363 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:363 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:363 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:363 'invocation' ( temp uint) 0:363 Constant: 0:363 1 (const int) 0:363 Sequence 0:363 Constant: 0:363 0 (const int) 0:363 Constant: 0:363 1 (const int) 0:363 Constant: 0:363 2 (const int) 0:363 subgroupPartitionedExclusiveMaxNV ( global 3-component vector of int) 0:363 vector swizzle ( temp 3-component vector of int) 0:363 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:363 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:363 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:363 Constant: 0:363 2 (const int) 0:363 Constant: 0:363 1 (const int) 0:363 Sequence 0:363 Constant: 0:363 0 (const int) 0:363 Constant: 0:363 1 (const int) 0:363 Constant: 0:363 2 (const int) 0:363 'ballot' ( temp 4-component vector of uint) 0:364 move second child to first child ( temp 4-component vector of int) 0:364 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:364 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'invocation' ( temp uint) 0:364 Constant: 0:364 1 (const int) 0:364 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of int) 0:364 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:364 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:364 Constant: 0:364 3 (const int) 0:364 Constant: 0:364 1 (const int) 0:364 'ballot' ( temp 4-component vector of uint) 0:366 move second child to first child ( temp uint) 0:366 direct index ( temp uint) 0:366 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:366 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'invocation' ( temp uint) 0:366 Constant: 0:366 2 (const int) 0:366 Constant: 0:366 0 (const int) 0:366 subgroupPartitionedExclusiveMaxNV ( global uint) 0:366 direct index ( temp uint) 0:366 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:366 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:366 Constant: 0:366 0 (const int) 0:366 Constant: 0:366 2 (const int) 0:366 Constant: 0:366 0 (const int) 0:366 'ballot' ( temp 4-component vector of uint) 0:367 move second child to first child ( temp 2-component vector of uint) 0:367 vector swizzle ( temp 2-component vector of uint) 0:367 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:367 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'invocation' ( temp uint) 0:367 Constant: 0:367 2 (const int) 0:367 Sequence 0:367 Constant: 0:367 0 (const int) 0:367 Constant: 0:367 1 (const int) 0:367 subgroupPartitionedExclusiveMaxNV ( global 2-component vector of uint) 0:367 vector swizzle ( temp 2-component vector of uint) 0:367 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:367 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:367 Constant: 0:367 1 (const int) 0:367 Constant: 0:367 2 (const int) 0:367 Sequence 0:367 Constant: 0:367 0 (const int) 0:367 Constant: 0:367 1 (const int) 0:367 'ballot' ( temp 4-component vector of uint) 0:368 move second child to first child ( temp 3-component vector of uint) 0:368 vector swizzle ( temp 3-component vector of uint) 0:368 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:368 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:368 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:368 'invocation' ( temp uint) 0:368 Constant: 0:368 2 (const int) 0:368 Sequence 0:368 Constant: 0:368 0 (const int) 0:368 Constant: 0:368 1 (const int) 0:368 Constant: 0:368 2 (const int) 0:368 subgroupPartitionedExclusiveMaxNV ( global 3-component vector of uint) 0:368 vector swizzle ( temp 3-component vector of uint) 0:368 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:368 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:368 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:368 Constant: 0:368 2 (const int) 0:368 Constant: 0:368 2 (const int) 0:368 Sequence 0:368 Constant: 0:368 0 (const int) 0:368 Constant: 0:368 1 (const int) 0:368 Constant: 0:368 2 (const int) 0:368 'ballot' ( temp 4-component vector of uint) 0:369 move second child to first child ( temp 4-component vector of uint) 0:369 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:369 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'invocation' ( temp uint) 0:369 Constant: 0:369 2 (const int) 0:369 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of uint) 0:369 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:369 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:369 Constant: 0:369 3 (const int) 0:369 Constant: 0:369 2 (const int) 0:369 'ballot' ( temp 4-component vector of uint) 0:371 move second child to first child ( temp double) 0:371 direct index ( temp double) 0:371 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:371 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'invocation' ( temp uint) 0:371 Constant: 0:371 3 (const int) 0:371 Constant: 0:371 0 (const int) 0:371 subgroupPartitionedExclusiveMaxNV ( global double) 0:371 direct index ( temp double) 0:371 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:371 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:371 Constant: 0:371 0 (const int) 0:371 Constant: 0:371 3 (const int) 0:371 Constant: 0:371 0 (const int) 0:371 'ballot' ( temp 4-component vector of uint) 0:372 move second child to first child ( temp 2-component vector of double) 0:372 vector swizzle ( temp 2-component vector of double) 0:372 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:372 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'invocation' ( temp uint) 0:372 Constant: 0:372 3 (const int) 0:372 Sequence 0:372 Constant: 0:372 0 (const int) 0:372 Constant: 0:372 1 (const int) 0:372 subgroupPartitionedExclusiveMaxNV ( global 2-component vector of double) 0:372 vector swizzle ( temp 2-component vector of double) 0:372 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:372 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:372 Constant: 0:372 1 (const int) 0:372 Constant: 0:372 3 (const int) 0:372 Sequence 0:372 Constant: 0:372 0 (const int) 0:372 Constant: 0:372 1 (const int) 0:372 'ballot' ( temp 4-component vector of uint) 0:373 move second child to first child ( temp 3-component vector of double) 0:373 vector swizzle ( temp 3-component vector of double) 0:373 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:373 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:373 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:373 'invocation' ( temp uint) 0:373 Constant: 0:373 3 (const int) 0:373 Sequence 0:373 Constant: 0:373 0 (const int) 0:373 Constant: 0:373 1 (const int) 0:373 Constant: 0:373 2 (const int) 0:373 subgroupPartitionedExclusiveMaxNV ( global 3-component vector of double) 0:373 vector swizzle ( temp 3-component vector of double) 0:373 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:373 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:373 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:373 Constant: 0:373 2 (const int) 0:373 Constant: 0:373 3 (const int) 0:373 Sequence 0:373 Constant: 0:373 0 (const int) 0:373 Constant: 0:373 1 (const int) 0:373 Constant: 0:373 2 (const int) 0:373 'ballot' ( temp 4-component vector of uint) 0:374 move second child to first child ( temp 4-component vector of double) 0:374 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:374 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'invocation' ( temp uint) 0:374 Constant: 0:374 3 (const int) 0:374 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of double) 0:374 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:374 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:374 Constant: 0:374 3 (const int) 0:374 Constant: 0:374 3 (const int) 0:374 'ballot' ( temp 4-component vector of uint) 0:376 move second child to first child ( temp int) 0:376 direct index ( temp int) 0:376 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:376 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'invocation' ( temp uint) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 0 (const int) 0:376 subgroupPartitionedExclusiveAndNV ( global int) 0:376 direct index ( temp int) 0:376 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:376 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:376 Constant: 0:376 0 (const int) 0:376 Constant: 0:376 1 (const int) 0:376 Constant: 0:376 0 (const int) 0:376 'ballot' ( temp 4-component vector of uint) 0:377 move second child to first child ( temp 2-component vector of int) 0:377 vector swizzle ( temp 2-component vector of int) 0:377 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:377 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'invocation' ( temp uint) 0:377 Constant: 0:377 1 (const int) 0:377 Sequence 0:377 Constant: 0:377 0 (const int) 0:377 Constant: 0:377 1 (const int) 0:377 subgroupPartitionedExclusiveAndNV ( global 2-component vector of int) 0:377 vector swizzle ( temp 2-component vector of int) 0:377 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:377 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:377 Constant: 0:377 1 (const int) 0:377 Constant: 0:377 1 (const int) 0:377 Sequence 0:377 Constant: 0:377 0 (const int) 0:377 Constant: 0:377 1 (const int) 0:377 'ballot' ( temp 4-component vector of uint) 0:378 move second child to first child ( temp 3-component vector of int) 0:378 vector swizzle ( temp 3-component vector of int) 0:378 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:378 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:378 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:378 'invocation' ( temp uint) 0:378 Constant: 0:378 1 (const int) 0:378 Sequence 0:378 Constant: 0:378 0 (const int) 0:378 Constant: 0:378 1 (const int) 0:378 Constant: 0:378 2 (const int) 0:378 subgroupPartitionedExclusiveAndNV ( global 3-component vector of int) 0:378 vector swizzle ( temp 3-component vector of int) 0:378 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:378 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:378 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:378 Constant: 0:378 2 (const int) 0:378 Constant: 0:378 1 (const int) 0:378 Sequence 0:378 Constant: 0:378 0 (const int) 0:378 Constant: 0:378 1 (const int) 0:378 Constant: 0:378 2 (const int) 0:378 'ballot' ( temp 4-component vector of uint) 0:379 move second child to first child ( temp 4-component vector of int) 0:379 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:379 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'invocation' ( temp uint) 0:379 Constant: 0:379 1 (const int) 0:379 subgroupPartitionedExclusiveAndNV ( global 4-component vector of int) 0:379 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:379 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:379 Constant: 0:379 3 (const int) 0:379 Constant: 0:379 1 (const int) 0:379 'ballot' ( temp 4-component vector of uint) 0:381 move second child to first child ( temp uint) 0:381 direct index ( temp uint) 0:381 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:381 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'invocation' ( temp uint) 0:381 Constant: 0:381 2 (const int) 0:381 Constant: 0:381 0 (const int) 0:381 subgroupPartitionedExclusiveAndNV ( global uint) 0:381 direct index ( temp uint) 0:381 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:381 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:381 Constant: 0:381 0 (const int) 0:381 Constant: 0:381 2 (const int) 0:381 Constant: 0:381 0 (const int) 0:381 'ballot' ( temp 4-component vector of uint) 0:382 move second child to first child ( temp 2-component vector of uint) 0:382 vector swizzle ( temp 2-component vector of uint) 0:382 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:382 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'invocation' ( temp uint) 0:382 Constant: 0:382 2 (const int) 0:382 Sequence 0:382 Constant: 0:382 0 (const int) 0:382 Constant: 0:382 1 (const int) 0:382 subgroupPartitionedExclusiveAndNV ( global 2-component vector of uint) 0:382 vector swizzle ( temp 2-component vector of uint) 0:382 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:382 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:382 Constant: 0:382 1 (const int) 0:382 Constant: 0:382 2 (const int) 0:382 Sequence 0:382 Constant: 0:382 0 (const int) 0:382 Constant: 0:382 1 (const int) 0:382 'ballot' ( temp 4-component vector of uint) 0:383 move second child to first child ( temp 3-component vector of uint) 0:383 vector swizzle ( temp 3-component vector of uint) 0:383 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:383 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:383 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:383 'invocation' ( temp uint) 0:383 Constant: 0:383 2 (const int) 0:383 Sequence 0:383 Constant: 0:383 0 (const int) 0:383 Constant: 0:383 1 (const int) 0:383 Constant: 0:383 2 (const int) 0:383 subgroupPartitionedExclusiveAndNV ( global 3-component vector of uint) 0:383 vector swizzle ( temp 3-component vector of uint) 0:383 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:383 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:383 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:383 Constant: 0:383 2 (const int) 0:383 Constant: 0:383 2 (const int) 0:383 Sequence 0:383 Constant: 0:383 0 (const int) 0:383 Constant: 0:383 1 (const int) 0:383 Constant: 0:383 2 (const int) 0:383 'ballot' ( temp 4-component vector of uint) 0:384 move second child to first child ( temp 4-component vector of uint) 0:384 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:384 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'invocation' ( temp uint) 0:384 Constant: 0:384 2 (const int) 0:384 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:384 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:384 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:384 Constant: 0:384 3 (const int) 0:384 Constant: 0:384 2 (const int) 0:384 'ballot' ( temp 4-component vector of uint) 0:386 move second child to first child ( temp int) 0:386 direct index ( temp int) 0:386 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:386 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'invocation' ( temp uint) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 0 (const int) 0:386 Convert bool to int ( temp int) 0:386 subgroupPartitionedExclusiveAndNV ( global bool) 0:386 Compare Less Than ( temp bool) 0:386 direct index ( temp int) 0:386 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:386 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 1 (const int) 0:386 Constant: 0:386 0 (const int) 0:386 Constant: 0:386 0 (const int) 0:386 'ballot' ( temp 4-component vector of uint) 0:387 move second child to first child ( temp 2-component vector of int) 0:387 vector swizzle ( temp 2-component vector of int) 0:387 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:387 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'invocation' ( temp uint) 0:387 Constant: 0:387 1 (const int) 0:387 Sequence 0:387 Constant: 0:387 0 (const int) 0:387 Constant: 0:387 1 (const int) 0:387 Convert bool to int ( temp 2-component vector of int) 0:387 subgroupPartitionedExclusiveAndNV ( global 2-component vector of bool) 0:387 Compare Less Than ( global 2-component vector of bool) 0:387 vector swizzle ( temp 2-component vector of int) 0:387 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:387 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:387 Constant: 0:387 1 (const int) 0:387 Constant: 0:387 1 (const int) 0:387 Sequence 0:387 Constant: 0:387 0 (const int) 0:387 Constant: 0:387 1 (const int) 0:387 Constant: 0:387 0 (const int) 0:387 0 (const int) 0:387 'ballot' ( temp 4-component vector of uint) 0:388 move second child to first child ( temp 3-component vector of int) 0:388 vector swizzle ( temp 3-component vector of int) 0:388 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:388 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:388 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:388 'invocation' ( temp uint) 0:388 Constant: 0:388 1 (const int) 0:388 Sequence 0:388 Constant: 0:388 0 (const int) 0:388 Constant: 0:388 1 (const int) 0:388 Constant: 0:388 2 (const int) 0:388 Convert bool to int ( temp 3-component vector of int) 0:388 subgroupPartitionedExclusiveAndNV ( global 3-component vector of bool) 0:388 Compare Less Than ( global 3-component vector of bool) 0:388 vector swizzle ( temp 3-component vector of int) 0:388 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:388 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:388 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:388 Constant: 0:388 1 (const int) 0:388 Constant: 0:388 1 (const int) 0:388 Sequence 0:388 Constant: 0:388 0 (const int) 0:388 Constant: 0:388 1 (const int) 0:388 Constant: 0:388 2 (const int) 0:388 Constant: 0:388 0 (const int) 0:388 0 (const int) 0:388 0 (const int) 0:388 'ballot' ( temp 4-component vector of uint) 0:389 move second child to first child ( temp 4-component vector of int) 0:389 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:389 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'invocation' ( temp uint) 0:389 Constant: 0:389 1 (const int) 0:389 Convert bool to int ( temp 4-component vector of int) 0:389 subgroupPartitionedExclusiveAndNV ( global 4-component vector of bool) 0:389 Compare Less Than ( global 4-component vector of bool) 0:389 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:389 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:389 Constant: 0:389 1 (const int) 0:389 Constant: 0:389 1 (const int) 0:389 Constant: 0:389 0 (const int) 0:389 0 (const int) 0:389 0 (const int) 0:389 0 (const int) 0:389 'ballot' ( temp 4-component vector of uint) 0:391 move second child to first child ( temp int) 0:391 direct index ( temp int) 0:391 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:391 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'invocation' ( temp uint) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 0 (const int) 0:391 subgroupPartitionedExclusiveOrNV ( global int) 0:391 direct index ( temp int) 0:391 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:391 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:391 Constant: 0:391 0 (const int) 0:391 Constant: 0:391 1 (const int) 0:391 Constant: 0:391 0 (const int) 0:391 'ballot' ( temp 4-component vector of uint) 0:392 move second child to first child ( temp 2-component vector of int) 0:392 vector swizzle ( temp 2-component vector of int) 0:392 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:392 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'invocation' ( temp uint) 0:392 Constant: 0:392 1 (const int) 0:392 Sequence 0:392 Constant: 0:392 0 (const int) 0:392 Constant: 0:392 1 (const int) 0:392 subgroupPartitionedExclusiveOrNV ( global 2-component vector of int) 0:392 vector swizzle ( temp 2-component vector of int) 0:392 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:392 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:392 Constant: 0:392 1 (const int) 0:392 Constant: 0:392 1 (const int) 0:392 Sequence 0:392 Constant: 0:392 0 (const int) 0:392 Constant: 0:392 1 (const int) 0:392 'ballot' ( temp 4-component vector of uint) 0:393 move second child to first child ( temp 3-component vector of int) 0:393 vector swizzle ( temp 3-component vector of int) 0:393 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:393 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:393 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:393 'invocation' ( temp uint) 0:393 Constant: 0:393 1 (const int) 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 subgroupPartitionedExclusiveOrNV ( global 3-component vector of int) 0:393 vector swizzle ( temp 3-component vector of int) 0:393 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:393 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:393 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:393 Constant: 0:393 2 (const int) 0:393 Constant: 0:393 1 (const int) 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 'ballot' ( temp 4-component vector of uint) 0:394 move second child to first child ( temp 4-component vector of int) 0:394 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:394 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:394 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:394 'invocation' ( temp uint) 0:394 Constant: 0:394 1 (const int) 0:394 subgroupPartitionedExclusiveOrNV ( global 4-component vector of int) 0:394 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:394 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:394 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:394 Constant: 0:394 3 (const int) 0:394 Constant: 0:394 1 (const int) 0:394 'ballot' ( temp 4-component vector of uint) 0:396 move second child to first child ( temp uint) 0:396 direct index ( temp uint) 0:396 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:396 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:396 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:396 'invocation' ( temp uint) 0:396 Constant: 0:396 2 (const int) 0:396 Constant: 0:396 0 (const int) 0:396 subgroupPartitionedExclusiveOrNV ( global uint) 0:396 direct index ( temp uint) 0:396 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:396 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:396 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:396 Constant: 0:396 0 (const int) 0:396 Constant: 0:396 2 (const int) 0:396 Constant: 0:396 0 (const int) 0:396 'ballot' ( temp 4-component vector of uint) 0:397 move second child to first child ( temp 2-component vector of uint) 0:397 vector swizzle ( temp 2-component vector of uint) 0:397 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:397 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:397 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:397 'invocation' ( temp uint) 0:397 Constant: 0:397 2 (const int) 0:397 Sequence 0:397 Constant: 0:397 0 (const int) 0:397 Constant: 0:397 1 (const int) 0:397 subgroupPartitionedExclusiveOrNV ( global 2-component vector of uint) 0:397 vector swizzle ( temp 2-component vector of uint) 0:397 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:397 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:397 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:397 Constant: 0:397 1 (const int) 0:397 Constant: 0:397 2 (const int) 0:397 Sequence 0:397 Constant: 0:397 0 (const int) 0:397 Constant: 0:397 1 (const int) 0:397 'ballot' ( temp 4-component vector of uint) 0:398 move second child to first child ( temp 3-component vector of uint) 0:398 vector swizzle ( temp 3-component vector of uint) 0:398 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:398 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:398 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:398 'invocation' ( temp uint) 0:398 Constant: 0:398 2 (const int) 0:398 Sequence 0:398 Constant: 0:398 0 (const int) 0:398 Constant: 0:398 1 (const int) 0:398 Constant: 0:398 2 (const int) 0:398 subgroupPartitionedExclusiveOrNV ( global 3-component vector of uint) 0:398 vector swizzle ( temp 3-component vector of uint) 0:398 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:398 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:398 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:398 Constant: 0:398 2 (const int) 0:398 Constant: 0:398 2 (const int) 0:398 Sequence 0:398 Constant: 0:398 0 (const int) 0:398 Constant: 0:398 1 (const int) 0:398 Constant: 0:398 2 (const int) 0:398 'ballot' ( temp 4-component vector of uint) 0:399 move second child to first child ( temp 4-component vector of uint) 0:399 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:399 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:399 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:399 'invocation' ( temp uint) 0:399 Constant: 0:399 2 (const int) 0:399 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:399 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:399 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:399 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:399 Constant: 0:399 3 (const int) 0:399 Constant: 0:399 2 (const int) 0:399 'ballot' ( temp 4-component vector of uint) 0:401 move second child to first child ( temp int) 0:401 direct index ( temp int) 0:401 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:401 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:401 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:401 'invocation' ( temp uint) 0:401 Constant: 0:401 1 (const int) 0:401 Constant: 0:401 0 (const int) 0:401 Convert bool to int ( temp int) 0:401 subgroupPartitionedExclusiveOrNV ( global bool) 0:401 Compare Less Than ( temp bool) 0:401 direct index ( temp int) 0:401 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:401 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:401 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:401 Constant: 0:401 0 (const int) 0:401 Constant: 0:401 1 (const int) 0:401 Constant: 0:401 0 (const int) 0:401 Constant: 0:401 0 (const int) 0:401 'ballot' ( temp 4-component vector of uint) 0:402 move second child to first child ( temp 2-component vector of int) 0:402 vector swizzle ( temp 2-component vector of int) 0:402 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:402 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:402 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:402 'invocation' ( temp uint) 0:402 Constant: 0:402 1 (const int) 0:402 Sequence 0:402 Constant: 0:402 0 (const int) 0:402 Constant: 0:402 1 (const int) 0:402 Convert bool to int ( temp 2-component vector of int) 0:402 subgroupPartitionedExclusiveOrNV ( global 2-component vector of bool) 0:402 Compare Less Than ( global 2-component vector of bool) 0:402 vector swizzle ( temp 2-component vector of int) 0:402 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:402 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:402 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:402 Constant: 0:402 1 (const int) 0:402 Constant: 0:402 1 (const int) 0:402 Sequence 0:402 Constant: 0:402 0 (const int) 0:402 Constant: 0:402 1 (const int) 0:402 Constant: 0:402 0 (const int) 0:402 0 (const int) 0:402 'ballot' ( temp 4-component vector of uint) 0:403 move second child to first child ( temp 3-component vector of int) 0:403 vector swizzle ( temp 3-component vector of int) 0:403 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:403 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:403 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:403 'invocation' ( temp uint) 0:403 Constant: 0:403 1 (const int) 0:403 Sequence 0:403 Constant: 0:403 0 (const int) 0:403 Constant: 0:403 1 (const int) 0:403 Constant: 0:403 2 (const int) 0:403 Convert bool to int ( temp 3-component vector of int) 0:403 subgroupPartitionedExclusiveOrNV ( global 3-component vector of bool) 0:403 Compare Less Than ( global 3-component vector of bool) 0:403 vector swizzle ( temp 3-component vector of int) 0:403 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:403 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:403 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:403 Constant: 0:403 1 (const int) 0:403 Constant: 0:403 1 (const int) 0:403 Sequence 0:403 Constant: 0:403 0 (const int) 0:403 Constant: 0:403 1 (const int) 0:403 Constant: 0:403 2 (const int) 0:403 Constant: 0:403 0 (const int) 0:403 0 (const int) 0:403 0 (const int) 0:403 'ballot' ( temp 4-component vector of uint) 0:404 move second child to first child ( temp 4-component vector of int) 0:404 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:404 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:404 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:404 'invocation' ( temp uint) 0:404 Constant: 0:404 1 (const int) 0:404 Convert bool to int ( temp 4-component vector of int) 0:404 subgroupPartitionedExclusiveOrNV ( global 4-component vector of bool) 0:404 Compare Less Than ( global 4-component vector of bool) 0:404 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:404 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:404 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:404 Constant: 0:404 1 (const int) 0:404 Constant: 0:404 1 (const int) 0:404 Constant: 0:404 0 (const int) 0:404 0 (const int) 0:404 0 (const int) 0:404 0 (const int) 0:404 'ballot' ( temp 4-component vector of uint) 0:406 move second child to first child ( temp int) 0:406 direct index ( temp int) 0:406 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:406 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:406 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:406 'invocation' ( temp uint) 0:406 Constant: 0:406 1 (const int) 0:406 Constant: 0:406 0 (const int) 0:406 subgroupPartitionedExclusiveXorNV ( global int) 0:406 direct index ( temp int) 0:406 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:406 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:406 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:406 Constant: 0:406 0 (const int) 0:406 Constant: 0:406 1 (const int) 0:406 Constant: 0:406 0 (const int) 0:406 'ballot' ( temp 4-component vector of uint) 0:407 move second child to first child ( temp 2-component vector of int) 0:407 vector swizzle ( temp 2-component vector of int) 0:407 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:407 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:407 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:407 'invocation' ( temp uint) 0:407 Constant: 0:407 1 (const int) 0:407 Sequence 0:407 Constant: 0:407 0 (const int) 0:407 Constant: 0:407 1 (const int) 0:407 subgroupPartitionedExclusiveXorNV ( global 2-component vector of int) 0:407 vector swizzle ( temp 2-component vector of int) 0:407 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:407 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:407 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:407 Constant: 0:407 1 (const int) 0:407 Constant: 0:407 1 (const int) 0:407 Sequence 0:407 Constant: 0:407 0 (const int) 0:407 Constant: 0:407 1 (const int) 0:407 'ballot' ( temp 4-component vector of uint) 0:408 move second child to first child ( temp 3-component vector of int) 0:408 vector swizzle ( temp 3-component vector of int) 0:408 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:408 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:408 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:408 'invocation' ( temp uint) 0:408 Constant: 0:408 1 (const int) 0:408 Sequence 0:408 Constant: 0:408 0 (const int) 0:408 Constant: 0:408 1 (const int) 0:408 Constant: 0:408 2 (const int) 0:408 subgroupPartitionedExclusiveXorNV ( global 3-component vector of int) 0:408 vector swizzle ( temp 3-component vector of int) 0:408 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:408 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:408 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:408 Constant: 0:408 2 (const int) 0:408 Constant: 0:408 1 (const int) 0:408 Sequence 0:408 Constant: 0:408 0 (const int) 0:408 Constant: 0:408 1 (const int) 0:408 Constant: 0:408 2 (const int) 0:408 'ballot' ( temp 4-component vector of uint) 0:409 move second child to first child ( temp 4-component vector of int) 0:409 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:409 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:409 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:409 'invocation' ( temp uint) 0:409 Constant: 0:409 1 (const int) 0:409 subgroupPartitionedExclusiveXorNV ( global 4-component vector of int) 0:409 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:409 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:409 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:409 Constant: 0:409 3 (const int) 0:409 Constant: 0:409 1 (const int) 0:409 'ballot' ( temp 4-component vector of uint) 0:411 move second child to first child ( temp uint) 0:411 direct index ( temp uint) 0:411 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:411 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:411 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:411 'invocation' ( temp uint) 0:411 Constant: 0:411 2 (const int) 0:411 Constant: 0:411 0 (const int) 0:411 subgroupPartitionedExclusiveXorNV ( global uint) 0:411 direct index ( temp uint) 0:411 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:411 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:411 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:411 Constant: 0:411 0 (const int) 0:411 Constant: 0:411 2 (const int) 0:411 Constant: 0:411 0 (const int) 0:411 'ballot' ( temp 4-component vector of uint) 0:412 move second child to first child ( temp 2-component vector of uint) 0:412 vector swizzle ( temp 2-component vector of uint) 0:412 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:412 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:412 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:412 'invocation' ( temp uint) 0:412 Constant: 0:412 2 (const int) 0:412 Sequence 0:412 Constant: 0:412 0 (const int) 0:412 Constant: 0:412 1 (const int) 0:412 subgroupPartitionedExclusiveXorNV ( global 2-component vector of uint) 0:412 vector swizzle ( temp 2-component vector of uint) 0:412 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:412 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:412 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:412 Constant: 0:412 1 (const int) 0:412 Constant: 0:412 2 (const int) 0:412 Sequence 0:412 Constant: 0:412 0 (const int) 0:412 Constant: 0:412 1 (const int) 0:412 'ballot' ( temp 4-component vector of uint) 0:413 move second child to first child ( temp 3-component vector of uint) 0:413 vector swizzle ( temp 3-component vector of uint) 0:413 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:413 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:413 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:413 'invocation' ( temp uint) 0:413 Constant: 0:413 2 (const int) 0:413 Sequence 0:413 Constant: 0:413 0 (const int) 0:413 Constant: 0:413 1 (const int) 0:413 Constant: 0:413 2 (const int) 0:413 subgroupPartitionedExclusiveXorNV ( global 3-component vector of uint) 0:413 vector swizzle ( temp 3-component vector of uint) 0:413 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:413 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:413 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:413 Constant: 0:413 2 (const int) 0:413 Constant: 0:413 2 (const int) 0:413 Sequence 0:413 Constant: 0:413 0 (const int) 0:413 Constant: 0:413 1 (const int) 0:413 Constant: 0:413 2 (const int) 0:413 'ballot' ( temp 4-component vector of uint) 0:414 move second child to first child ( temp 4-component vector of uint) 0:414 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:414 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:414 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:414 'invocation' ( temp uint) 0:414 Constant: 0:414 2 (const int) 0:414 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:414 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:414 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:414 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:414 Constant: 0:414 3 (const int) 0:414 Constant: 0:414 2 (const int) 0:414 'ballot' ( temp 4-component vector of uint) 0:416 move second child to first child ( temp int) 0:416 direct index ( temp int) 0:416 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:416 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:416 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:416 'invocation' ( temp uint) 0:416 Constant: 0:416 1 (const int) 0:416 Constant: 0:416 0 (const int) 0:416 Convert bool to int ( temp int) 0:416 subgroupPartitionedExclusiveXorNV ( global bool) 0:416 Compare Less Than ( temp bool) 0:416 direct index ( temp int) 0:416 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:416 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:416 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:416 Constant: 0:416 0 (const int) 0:416 Constant: 0:416 1 (const int) 0:416 Constant: 0:416 0 (const int) 0:416 Constant: 0:416 0 (const int) 0:416 'ballot' ( temp 4-component vector of uint) 0:417 move second child to first child ( temp 2-component vector of int) 0:417 vector swizzle ( temp 2-component vector of int) 0:417 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:417 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:417 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:417 'invocation' ( temp uint) 0:417 Constant: 0:417 1 (const int) 0:417 Sequence 0:417 Constant: 0:417 0 (const int) 0:417 Constant: 0:417 1 (const int) 0:417 Convert bool to int ( temp 2-component vector of int) 0:417 subgroupPartitionedExclusiveXorNV ( global 2-component vector of bool) 0:417 Compare Less Than ( global 2-component vector of bool) 0:417 vector swizzle ( temp 2-component vector of int) 0:417 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:417 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:417 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:417 Constant: 0:417 1 (const int) 0:417 Constant: 0:417 1 (const int) 0:417 Sequence 0:417 Constant: 0:417 0 (const int) 0:417 Constant: 0:417 1 (const int) 0:417 Constant: 0:417 0 (const int) 0:417 0 (const int) 0:417 'ballot' ( temp 4-component vector of uint) 0:418 move second child to first child ( temp 3-component vector of int) 0:418 vector swizzle ( temp 3-component vector of int) 0:418 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:418 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:418 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:418 'invocation' ( temp uint) 0:418 Constant: 0:418 1 (const int) 0:418 Sequence 0:418 Constant: 0:418 0 (const int) 0:418 Constant: 0:418 1 (const int) 0:418 Constant: 0:418 2 (const int) 0:418 Convert bool to int ( temp 3-component vector of int) 0:418 subgroupPartitionedExclusiveXorNV ( global 3-component vector of bool) 0:418 Compare Less Than ( global 3-component vector of bool) 0:418 vector swizzle ( temp 3-component vector of int) 0:418 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:418 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:418 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:418 Constant: 0:418 1 (const int) 0:418 Constant: 0:418 1 (const int) 0:418 Sequence 0:418 Constant: 0:418 0 (const int) 0:418 Constant: 0:418 1 (const int) 0:418 Constant: 0:418 2 (const int) 0:418 Constant: 0:418 0 (const int) 0:418 0 (const int) 0:418 0 (const int) 0:418 'ballot' ( temp 4-component vector of uint) 0:419 move second child to first child ( temp 4-component vector of int) 0:419 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:419 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:419 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:419 'invocation' ( temp uint) 0:419 Constant: 0:419 1 (const int) 0:419 Convert bool to int ( temp 4-component vector of int) 0:419 subgroupPartitionedExclusiveXorNV ( global 4-component vector of bool) 0:419 Compare Less Than ( global 4-component vector of bool) 0:419 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:419 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:419 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:419 Constant: 0:419 1 (const int) 0:419 Constant: 0:419 1 (const int) 0:419 Constant: 0:419 0 (const int) 0:419 0 (const int) 0:419 0 (const int) 0:419 0 (const int) 0:419 'ballot' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupQuad.comp.out000066400000000000000000013577661506534232700241160ustar00rootroot00000000000000glsl.450.subgroupQuad.comp Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_quad local_size = (8, 1, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupQuadBroadcast ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const uint) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupQuadBroadcast ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 1 (const uint) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupQuadBroadcast ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 1 (const uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupQuadBroadcast ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const uint) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupQuadBroadcast ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const uint) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupQuadBroadcast ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const uint) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupQuadBroadcast ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const uint) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupQuadBroadcast ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 1 (const uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupQuadBroadcast ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const uint) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupQuadBroadcast ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 1 (const uint) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupQuadBroadcast ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const uint) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupQuadBroadcast ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 1 (const uint) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupQuadBroadcast ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const uint) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupQuadBroadcast ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupQuadBroadcast ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 1 (const uint) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupQuadBroadcast ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 1 (const uint) 0:39 move second child to first child ( temp int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Convert bool to int ( temp int) 0:39 subgroupQuadBroadcast ( global bool) 0:39 Compare Less Than ( temp bool) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const uint) 0:40 move second child to first child ( temp 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Convert bool to int ( temp 2-component vector of int) 0:40 subgroupQuadBroadcast ( global 2-component vector of bool) 0:40 Compare Less Than ( global 2-component vector of bool) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 Constant: 0:40 1 (const uint) 0:41 move second child to first child ( temp 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Convert bool to int ( temp 3-component vector of int) 0:41 subgroupQuadBroadcast ( global 3-component vector of bool) 0:41 Compare Less Than ( global 3-component vector of bool) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 Constant: 0:41 1 (const uint) 0:42 move second child to first child ( temp 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 1 (const int) 0:42 Convert bool to int ( temp 4-component vector of int) 0:42 subgroupQuadBroadcast ( global 4-component vector of bool) 0:42 Compare Less Than ( global 4-component vector of bool) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 Constant: 0:42 1 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupQuadSwapHorizontal ( global float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:45 move second child to first child ( temp 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupQuadSwapHorizontal ( global 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:46 move second child to first child ( temp 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupQuadSwapHorizontal ( global 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 0 (const int) 0:47 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 0 (const int) 0:49 move second child to first child ( temp int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupQuadSwapHorizontal ( global int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:50 move second child to first child ( temp 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupQuadSwapHorizontal ( global 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:51 move second child to first child ( temp 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupQuadSwapHorizontal ( global 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:52 move second child to first child ( temp 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 1 (const int) 0:52 subgroupQuadSwapHorizontal ( global 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 1 (const int) 0:54 move second child to first child ( temp uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupQuadSwapHorizontal ( global uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:55 move second child to first child ( temp 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupQuadSwapHorizontal ( global 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:56 move second child to first child ( temp 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupQuadSwapHorizontal ( global 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:57 move second child to first child ( temp 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupQuadSwapHorizontal ( global 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 2 (const int) 0:59 move second child to first child ( temp double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupQuadSwapHorizontal ( global double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:60 move second child to first child ( temp 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupQuadSwapHorizontal ( global 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:61 move second child to first child ( temp 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupQuadSwapHorizontal ( global 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:62 move second child to first child ( temp 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 3 (const int) 0:62 subgroupQuadSwapHorizontal ( global 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 3 (const int) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Convert bool to int ( temp int) 0:64 subgroupQuadSwapHorizontal ( global bool) 0:64 Compare Less Than ( temp bool) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 0 (const int) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Convert bool to int ( temp 2-component vector of int) 0:65 subgroupQuadSwapHorizontal ( global 2-component vector of bool) 0:65 Compare Less Than ( global 2-component vector of bool) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 0 (const int) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Convert bool to int ( temp 3-component vector of int) 0:66 subgroupQuadSwapHorizontal ( global 3-component vector of bool) 0:66 Compare Less Than ( global 3-component vector of bool) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 0 (const int) 0:66 0 (const int) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 Convert bool to int ( temp 4-component vector of int) 0:67 subgroupQuadSwapHorizontal ( global 4-component vector of bool) 0:67 Compare Less Than ( global 4-component vector of bool) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:69 move second child to first child ( temp float) 0:69 direct index ( temp float) 0:69 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 subgroupQuadSwapVertical ( global float) 0:69 direct index ( temp float) 0:69 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0 (const int) 0:70 move second child to first child ( temp 2-component vector of float) 0:70 vector swizzle ( temp 2-component vector of float) 0:70 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'invocation' ( temp uint) 0:70 Constant: 0:70 0 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 subgroupQuadSwapVertical ( global 2-component vector of float) 0:70 vector swizzle ( temp 2-component vector of float) 0:70 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:71 move second child to first child ( temp 3-component vector of float) 0:71 vector swizzle ( temp 3-component vector of float) 0:71 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 0 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 subgroupQuadSwapVertical ( global 3-component vector of float) 0:71 vector swizzle ( temp 3-component vector of float) 0:71 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:72 move second child to first child ( temp 4-component vector of float) 0:72 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 0 (const int) 0:72 subgroupQuadSwapVertical ( global 4-component vector of float) 0:72 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 3 (const int) 0:72 Constant: 0:72 0 (const int) 0:74 move second child to first child ( temp int) 0:74 direct index ( temp int) 0:74 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupQuadSwapVertical ( global int) 0:74 direct index ( temp int) 0:74 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0 (const int) 0:75 move second child to first child ( temp 2-component vector of int) 0:75 vector swizzle ( temp 2-component vector of int) 0:75 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:75 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'invocation' ( temp uint) 0:75 Constant: 0:75 1 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 subgroupQuadSwapVertical ( global 2-component vector of int) 0:75 vector swizzle ( temp 2-component vector of int) 0:75 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:76 move second child to first child ( temp 3-component vector of int) 0:76 vector swizzle ( temp 3-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 1 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupQuadSwapVertical ( global 3-component vector of int) 0:76 vector swizzle ( temp 3-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:77 move second child to first child ( temp 4-component vector of int) 0:77 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 1 (const int) 0:77 subgroupQuadSwapVertical ( global 4-component vector of int) 0:77 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 1 (const int) 0:79 move second child to first child ( temp uint) 0:79 direct index ( temp uint) 0:79 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 2 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 subgroupQuadSwapVertical ( global uint) 0:79 direct index ( temp uint) 0:79 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 2 (const int) 0:79 Constant: 0:79 0 (const int) 0:80 move second child to first child ( temp 2-component vector of uint) 0:80 vector swizzle ( temp 2-component vector of uint) 0:80 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:80 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'invocation' ( temp uint) 0:80 Constant: 0:80 2 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 subgroupQuadSwapVertical ( global 2-component vector of uint) 0:80 vector swizzle ( temp 2-component vector of uint) 0:80 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:81 move second child to first child ( temp 3-component vector of uint) 0:81 vector swizzle ( temp 3-component vector of uint) 0:81 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 2 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 subgroupQuadSwapVertical ( global 3-component vector of uint) 0:81 vector swizzle ( temp 3-component vector of uint) 0:81 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 2 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:82 move second child to first child ( temp 4-component vector of uint) 0:82 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 2 (const int) 0:82 subgroupQuadSwapVertical ( global 4-component vector of uint) 0:82 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 3 (const int) 0:82 Constant: 0:82 2 (const int) 0:84 move second child to first child ( temp double) 0:84 direct index ( temp double) 0:84 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 3 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 subgroupQuadSwapVertical ( global double) 0:84 direct index ( temp double) 0:84 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 3 (const int) 0:84 Constant: 0:84 0 (const int) 0:85 move second child to first child ( temp 2-component vector of double) 0:85 vector swizzle ( temp 2-component vector of double) 0:85 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:85 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'invocation' ( temp uint) 0:85 Constant: 0:85 3 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 subgroupQuadSwapVertical ( global 2-component vector of double) 0:85 vector swizzle ( temp 2-component vector of double) 0:85 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 3 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:86 move second child to first child ( temp 3-component vector of double) 0:86 vector swizzle ( temp 3-component vector of double) 0:86 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:86 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'invocation' ( temp uint) 0:86 Constant: 0:86 3 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupQuadSwapVertical ( global 3-component vector of double) 0:86 vector swizzle ( temp 3-component vector of double) 0:86 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 3 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:87 move second child to first child ( temp 4-component vector of double) 0:87 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:87 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'invocation' ( temp uint) 0:87 Constant: 0:87 3 (const int) 0:87 subgroupQuadSwapVertical ( global 4-component vector of double) 0:87 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 Constant: 0:87 3 (const int) 0:87 Constant: 0:87 3 (const int) 0:89 move second child to first child ( temp int) 0:89 direct index ( temp int) 0:89 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:89 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'invocation' ( temp uint) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 Convert bool to int ( temp int) 0:89 subgroupQuadSwapVertical ( global bool) 0:89 Compare Less Than ( temp bool) 0:89 direct index ( temp int) 0:89 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 0 (const int) 0:90 move second child to first child ( temp 2-component vector of int) 0:90 vector swizzle ( temp 2-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:90 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'invocation' ( temp uint) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Convert bool to int ( temp 2-component vector of int) 0:90 subgroupQuadSwapVertical ( global 2-component vector of bool) 0:90 Compare Less Than ( global 2-component vector of bool) 0:90 vector swizzle ( temp 2-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 0 (const int) 0:91 move second child to first child ( temp 3-component vector of int) 0:91 vector swizzle ( temp 3-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:91 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'invocation' ( temp uint) 0:91 Constant: 0:91 1 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Convert bool to int ( temp 3-component vector of int) 0:91 subgroupQuadSwapVertical ( global 3-component vector of bool) 0:91 Compare Less Than ( global 3-component vector of bool) 0:91 vector swizzle ( temp 3-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:92 move second child to first child ( temp 4-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:92 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'invocation' ( temp uint) 0:92 Constant: 0:92 1 (const int) 0:92 Convert bool to int ( temp 4-component vector of int) 0:92 subgroupQuadSwapVertical ( global 4-component vector of bool) 0:92 Compare Less Than ( global 4-component vector of bool) 0:92 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) 0:94 move second child to first child ( temp float) 0:94 direct index ( temp float) 0:94 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:94 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'invocation' ( temp uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupQuadSwapDiagonal ( global float) 0:94 direct index ( temp float) 0:94 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:95 move second child to first child ( temp 2-component vector of float) 0:95 vector swizzle ( temp 2-component vector of float) 0:95 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:95 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'invocation' ( temp uint) 0:95 Constant: 0:95 0 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 subgroupQuadSwapDiagonal ( global 2-component vector of float) 0:95 vector swizzle ( temp 2-component vector of float) 0:95 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 move second child to first child ( temp 3-component vector of float) 0:96 vector swizzle ( temp 3-component vector of float) 0:96 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:96 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'invocation' ( temp uint) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 subgroupQuadSwapDiagonal ( global 3-component vector of float) 0:96 vector swizzle ( temp 3-component vector of float) 0:96 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:97 move second child to first child ( temp 4-component vector of float) 0:97 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:97 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'invocation' ( temp uint) 0:97 Constant: 0:97 0 (const int) 0:97 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:97 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 Constant: 0:97 3 (const int) 0:97 Constant: 0:97 0 (const int) 0:99 move second child to first child ( temp int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'invocation' ( temp uint) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 subgroupQuadSwapDiagonal ( global int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:100 move second child to first child ( temp 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'invocation' ( temp uint) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 subgroupQuadSwapDiagonal ( global 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:101 move second child to first child ( temp 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'invocation' ( temp uint) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupQuadSwapDiagonal ( global 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:102 move second child to first child ( temp 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'invocation' ( temp uint) 0:102 Constant: 0:102 1 (const int) 0:102 subgroupQuadSwapDiagonal ( global 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 Constant: 0:102 3 (const int) 0:102 Constant: 0:102 1 (const int) 0:104 move second child to first child ( temp uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'invocation' ( temp uint) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 subgroupQuadSwapDiagonal ( global uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:105 move second child to first child ( temp 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'invocation' ( temp uint) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 subgroupQuadSwapDiagonal ( global 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:106 move second child to first child ( temp 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'invocation' ( temp uint) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 subgroupQuadSwapDiagonal ( global 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 Constant: 0:106 2 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:107 move second child to first child ( temp 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'invocation' ( temp uint) 0:107 Constant: 0:107 2 (const int) 0:107 subgroupQuadSwapDiagonal ( global 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 Constant: 0:107 3 (const int) 0:107 Constant: 0:107 2 (const int) 0:109 move second child to first child ( temp double) 0:109 direct index ( temp double) 0:109 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:109 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'invocation' ( temp uint) 0:109 Constant: 0:109 3 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 subgroupQuadSwapDiagonal ( global double) 0:109 direct index ( temp double) 0:109 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 3 (const int) 0:109 Constant: 0:109 0 (const int) 0:110 move second child to first child ( temp 2-component vector of double) 0:110 vector swizzle ( temp 2-component vector of double) 0:110 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:110 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'invocation' ( temp uint) 0:110 Constant: 0:110 3 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 subgroupQuadSwapDiagonal ( global 2-component vector of double) 0:110 vector swizzle ( temp 2-component vector of double) 0:110 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 3 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:111 move second child to first child ( temp 3-component vector of double) 0:111 vector swizzle ( temp 3-component vector of double) 0:111 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:111 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'invocation' ( temp uint) 0:111 Constant: 0:111 3 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 subgroupQuadSwapDiagonal ( global 3-component vector of double) 0:111 vector swizzle ( temp 3-component vector of double) 0:111 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 3 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:112 move second child to first child ( temp 4-component vector of double) 0:112 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:112 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'invocation' ( temp uint) 0:112 Constant: 0:112 3 (const int) 0:112 subgroupQuadSwapDiagonal ( global 4-component vector of double) 0:112 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 Constant: 0:112 3 (const int) 0:112 Constant: 0:112 3 (const int) 0:114 move second child to first child ( temp int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'invocation' ( temp uint) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 Convert bool to int ( temp int) 0:114 subgroupQuadSwapDiagonal ( global bool) 0:114 Compare Less Than ( temp bool) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:115 move second child to first child ( temp 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'invocation' ( temp uint) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Convert bool to int ( temp 2-component vector of int) 0:115 subgroupQuadSwapDiagonal ( global 2-component vector of bool) 0:115 Compare Less Than ( global 2-component vector of bool) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 0 (const int) 0:116 move second child to first child ( temp 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'invocation' ( temp uint) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Convert bool to int ( temp 3-component vector of int) 0:116 subgroupQuadSwapDiagonal ( global 3-component vector of bool) 0:116 Compare Less Than ( global 3-component vector of bool) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 0 (const int) 0:116 0 (const int) 0:117 move second child to first child ( temp 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'invocation' ( temp uint) 0:117 Constant: 0:117 1 (const int) 0:117 Convert bool to int ( temp 4-component vector of int) 0:117 subgroupQuadSwapDiagonal ( global 4-component vector of bool) 0:117 Compare Less Than ( global 4-component vector of bool) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 0 (const int) 0:117 0 (const int) 0:117 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_quad local_size = (8, 1, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupQuadBroadcast ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const uint) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupQuadBroadcast ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 1 (const uint) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupQuadBroadcast ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 1 (const uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupQuadBroadcast ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const uint) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupQuadBroadcast ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const uint) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupQuadBroadcast ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const uint) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupQuadBroadcast ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const uint) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupQuadBroadcast ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 1 (const uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupQuadBroadcast ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const uint) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupQuadBroadcast ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 1 (const uint) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupQuadBroadcast ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const uint) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupQuadBroadcast ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 1 (const uint) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupQuadBroadcast ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const uint) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupQuadBroadcast ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupQuadBroadcast ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 1 (const uint) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupQuadBroadcast ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 1 (const uint) 0:39 move second child to first child ( temp int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Convert bool to int ( temp int) 0:39 subgroupQuadBroadcast ( global bool) 0:39 Compare Less Than ( temp bool) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const uint) 0:40 move second child to first child ( temp 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Convert bool to int ( temp 2-component vector of int) 0:40 subgroupQuadBroadcast ( global 2-component vector of bool) 0:40 Compare Less Than ( global 2-component vector of bool) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 Constant: 0:40 1 (const uint) 0:41 move second child to first child ( temp 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Convert bool to int ( temp 3-component vector of int) 0:41 subgroupQuadBroadcast ( global 3-component vector of bool) 0:41 Compare Less Than ( global 3-component vector of bool) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 Constant: 0:41 1 (const uint) 0:42 move second child to first child ( temp 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 1 (const int) 0:42 Convert bool to int ( temp 4-component vector of int) 0:42 subgroupQuadBroadcast ( global 4-component vector of bool) 0:42 Compare Less Than ( global 4-component vector of bool) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 Constant: 0:42 1 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupQuadSwapHorizontal ( global float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:45 move second child to first child ( temp 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupQuadSwapHorizontal ( global 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:46 move second child to first child ( temp 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupQuadSwapHorizontal ( global 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 0 (const int) 0:47 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 0 (const int) 0:49 move second child to first child ( temp int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupQuadSwapHorizontal ( global int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:50 move second child to first child ( temp 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupQuadSwapHorizontal ( global 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:51 move second child to first child ( temp 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupQuadSwapHorizontal ( global 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:52 move second child to first child ( temp 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 1 (const int) 0:52 subgroupQuadSwapHorizontal ( global 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 1 (const int) 0:54 move second child to first child ( temp uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupQuadSwapHorizontal ( global uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:55 move second child to first child ( temp 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupQuadSwapHorizontal ( global 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:56 move second child to first child ( temp 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupQuadSwapHorizontal ( global 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:57 move second child to first child ( temp 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupQuadSwapHorizontal ( global 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 2 (const int) 0:59 move second child to first child ( temp double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupQuadSwapHorizontal ( global double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:60 move second child to first child ( temp 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupQuadSwapHorizontal ( global 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:61 move second child to first child ( temp 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupQuadSwapHorizontal ( global 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:62 move second child to first child ( temp 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 3 (const int) 0:62 subgroupQuadSwapHorizontal ( global 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 3 (const int) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Convert bool to int ( temp int) 0:64 subgroupQuadSwapHorizontal ( global bool) 0:64 Compare Less Than ( temp bool) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 0 (const int) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Convert bool to int ( temp 2-component vector of int) 0:65 subgroupQuadSwapHorizontal ( global 2-component vector of bool) 0:65 Compare Less Than ( global 2-component vector of bool) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 0 (const int) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Convert bool to int ( temp 3-component vector of int) 0:66 subgroupQuadSwapHorizontal ( global 3-component vector of bool) 0:66 Compare Less Than ( global 3-component vector of bool) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 0 (const int) 0:66 0 (const int) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 Convert bool to int ( temp 4-component vector of int) 0:67 subgroupQuadSwapHorizontal ( global 4-component vector of bool) 0:67 Compare Less Than ( global 4-component vector of bool) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:69 move second child to first child ( temp float) 0:69 direct index ( temp float) 0:69 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'invocation' ( temp uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 subgroupQuadSwapVertical ( global float) 0:69 direct index ( temp float) 0:69 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0 (const int) 0:70 move second child to first child ( temp 2-component vector of float) 0:70 vector swizzle ( temp 2-component vector of float) 0:70 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'invocation' ( temp uint) 0:70 Constant: 0:70 0 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 subgroupQuadSwapVertical ( global 2-component vector of float) 0:70 vector swizzle ( temp 2-component vector of float) 0:70 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:71 move second child to first child ( temp 3-component vector of float) 0:71 vector swizzle ( temp 3-component vector of float) 0:71 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'invocation' ( temp uint) 0:71 Constant: 0:71 0 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 subgroupQuadSwapVertical ( global 3-component vector of float) 0:71 vector swizzle ( temp 3-component vector of float) 0:71 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:72 move second child to first child ( temp 4-component vector of float) 0:72 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'invocation' ( temp uint) 0:72 Constant: 0:72 0 (const int) 0:72 subgroupQuadSwapVertical ( global 4-component vector of float) 0:72 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 3 (const int) 0:72 Constant: 0:72 0 (const int) 0:74 move second child to first child ( temp int) 0:74 direct index ( temp int) 0:74 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:74 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'invocation' ( temp uint) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupQuadSwapVertical ( global int) 0:74 direct index ( temp int) 0:74 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0 (const int) 0:75 move second child to first child ( temp 2-component vector of int) 0:75 vector swizzle ( temp 2-component vector of int) 0:75 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:75 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'invocation' ( temp uint) 0:75 Constant: 0:75 1 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 subgroupQuadSwapVertical ( global 2-component vector of int) 0:75 vector swizzle ( temp 2-component vector of int) 0:75 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:76 move second child to first child ( temp 3-component vector of int) 0:76 vector swizzle ( temp 3-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:76 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'invocation' ( temp uint) 0:76 Constant: 0:76 1 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupQuadSwapVertical ( global 3-component vector of int) 0:76 vector swizzle ( temp 3-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 2 (const int) 0:77 move second child to first child ( temp 4-component vector of int) 0:77 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:77 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'invocation' ( temp uint) 0:77 Constant: 0:77 1 (const int) 0:77 subgroupQuadSwapVertical ( global 4-component vector of int) 0:77 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 1 (const int) 0:79 move second child to first child ( temp uint) 0:79 direct index ( temp uint) 0:79 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:79 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'invocation' ( temp uint) 0:79 Constant: 0:79 2 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 subgroupQuadSwapVertical ( global uint) 0:79 direct index ( temp uint) 0:79 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 2 (const int) 0:79 Constant: 0:79 0 (const int) 0:80 move second child to first child ( temp 2-component vector of uint) 0:80 vector swizzle ( temp 2-component vector of uint) 0:80 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:80 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'invocation' ( temp uint) 0:80 Constant: 0:80 2 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 subgroupQuadSwapVertical ( global 2-component vector of uint) 0:80 vector swizzle ( temp 2-component vector of uint) 0:80 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:81 move second child to first child ( temp 3-component vector of uint) 0:81 vector swizzle ( temp 3-component vector of uint) 0:81 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:81 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'invocation' ( temp uint) 0:81 Constant: 0:81 2 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 subgroupQuadSwapVertical ( global 3-component vector of uint) 0:81 vector swizzle ( temp 3-component vector of uint) 0:81 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:81 Constant: 0:81 2 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:82 move second child to first child ( temp 4-component vector of uint) 0:82 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:82 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'invocation' ( temp uint) 0:82 Constant: 0:82 2 (const int) 0:82 subgroupQuadSwapVertical ( global 4-component vector of uint) 0:82 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:82 Constant: 0:82 3 (const int) 0:82 Constant: 0:82 2 (const int) 0:84 move second child to first child ( temp double) 0:84 direct index ( temp double) 0:84 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:84 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'invocation' ( temp uint) 0:84 Constant: 0:84 3 (const int) 0:84 Constant: 0:84 0 (const int) 0:84 subgroupQuadSwapVertical ( global double) 0:84 direct index ( temp double) 0:84 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 3 (const int) 0:84 Constant: 0:84 0 (const int) 0:85 move second child to first child ( temp 2-component vector of double) 0:85 vector swizzle ( temp 2-component vector of double) 0:85 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:85 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'invocation' ( temp uint) 0:85 Constant: 0:85 3 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 subgroupQuadSwapVertical ( global 2-component vector of double) 0:85 vector swizzle ( temp 2-component vector of double) 0:85 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 3 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:86 move second child to first child ( temp 3-component vector of double) 0:86 vector swizzle ( temp 3-component vector of double) 0:86 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:86 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'invocation' ( temp uint) 0:86 Constant: 0:86 3 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupQuadSwapVertical ( global 3-component vector of double) 0:86 vector swizzle ( temp 3-component vector of double) 0:86 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 3 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:87 move second child to first child ( temp 4-component vector of double) 0:87 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:87 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'invocation' ( temp uint) 0:87 Constant: 0:87 3 (const int) 0:87 subgroupQuadSwapVertical ( global 4-component vector of double) 0:87 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:87 Constant: 0:87 3 (const int) 0:87 Constant: 0:87 3 (const int) 0:89 move second child to first child ( temp int) 0:89 direct index ( temp int) 0:89 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:89 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'invocation' ( temp uint) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 Convert bool to int ( temp int) 0:89 subgroupQuadSwapVertical ( global bool) 0:89 Compare Less Than ( temp bool) 0:89 direct index ( temp int) 0:89 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 0 (const int) 0:90 move second child to first child ( temp 2-component vector of int) 0:90 vector swizzle ( temp 2-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:90 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'invocation' ( temp uint) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Convert bool to int ( temp 2-component vector of int) 0:90 subgroupQuadSwapVertical ( global 2-component vector of bool) 0:90 Compare Less Than ( global 2-component vector of bool) 0:90 vector swizzle ( temp 2-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 0 (const int) 0:91 move second child to first child ( temp 3-component vector of int) 0:91 vector swizzle ( temp 3-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:91 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'invocation' ( temp uint) 0:91 Constant: 0:91 1 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Convert bool to int ( temp 3-component vector of int) 0:91 subgroupQuadSwapVertical ( global 3-component vector of bool) 0:91 Compare Less Than ( global 3-component vector of bool) 0:91 vector swizzle ( temp 3-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:92 move second child to first child ( temp 4-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:92 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'invocation' ( temp uint) 0:92 Constant: 0:92 1 (const int) 0:92 Convert bool to int ( temp 4-component vector of int) 0:92 subgroupQuadSwapVertical ( global 4-component vector of bool) 0:92 Compare Less Than ( global 4-component vector of bool) 0:92 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) 0:94 move second child to first child ( temp float) 0:94 direct index ( temp float) 0:94 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:94 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'invocation' ( temp uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupQuadSwapDiagonal ( global float) 0:94 direct index ( temp float) 0:94 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:95 move second child to first child ( temp 2-component vector of float) 0:95 vector swizzle ( temp 2-component vector of float) 0:95 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:95 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'invocation' ( temp uint) 0:95 Constant: 0:95 0 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 subgroupQuadSwapDiagonal ( global 2-component vector of float) 0:95 vector swizzle ( temp 2-component vector of float) 0:95 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 move second child to first child ( temp 3-component vector of float) 0:96 vector swizzle ( temp 3-component vector of float) 0:96 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:96 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'invocation' ( temp uint) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 subgroupQuadSwapDiagonal ( global 3-component vector of float) 0:96 vector swizzle ( temp 3-component vector of float) 0:96 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:97 move second child to first child ( temp 4-component vector of float) 0:97 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:97 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'invocation' ( temp uint) 0:97 Constant: 0:97 0 (const int) 0:97 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:97 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:97 Constant: 0:97 3 (const int) 0:97 Constant: 0:97 0 (const int) 0:99 move second child to first child ( temp int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'invocation' ( temp uint) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 subgroupQuadSwapDiagonal ( global int) 0:99 direct index ( temp int) 0:99 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:100 move second child to first child ( temp 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'invocation' ( temp uint) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 subgroupQuadSwapDiagonal ( global 2-component vector of int) 0:100 vector swizzle ( temp 2-component vector of int) 0:100 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:101 move second child to first child ( temp 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'invocation' ( temp uint) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupQuadSwapDiagonal ( global 3-component vector of int) 0:101 vector swizzle ( temp 3-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 2 (const int) 0:102 move second child to first child ( temp 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'invocation' ( temp uint) 0:102 Constant: 0:102 1 (const int) 0:102 subgroupQuadSwapDiagonal ( global 4-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:102 Constant: 0:102 3 (const int) 0:102 Constant: 0:102 1 (const int) 0:104 move second child to first child ( temp uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'invocation' ( temp uint) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 subgroupQuadSwapDiagonal ( global uint) 0:104 direct index ( temp uint) 0:104 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:104 Constant: 0:104 0 (const int) 0:105 move second child to first child ( temp 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'invocation' ( temp uint) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 subgroupQuadSwapDiagonal ( global 2-component vector of uint) 0:105 vector swizzle ( temp 2-component vector of uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:106 move second child to first child ( temp 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'invocation' ( temp uint) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 subgroupQuadSwapDiagonal ( global 3-component vector of uint) 0:106 vector swizzle ( temp 3-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:106 Constant: 0:106 2 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:107 move second child to first child ( temp 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'invocation' ( temp uint) 0:107 Constant: 0:107 2 (const int) 0:107 subgroupQuadSwapDiagonal ( global 4-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:107 Constant: 0:107 3 (const int) 0:107 Constant: 0:107 2 (const int) 0:109 move second child to first child ( temp double) 0:109 direct index ( temp double) 0:109 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:109 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'invocation' ( temp uint) 0:109 Constant: 0:109 3 (const int) 0:109 Constant: 0:109 0 (const int) 0:109 subgroupQuadSwapDiagonal ( global double) 0:109 direct index ( temp double) 0:109 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 3 (const int) 0:109 Constant: 0:109 0 (const int) 0:110 move second child to first child ( temp 2-component vector of double) 0:110 vector swizzle ( temp 2-component vector of double) 0:110 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:110 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'invocation' ( temp uint) 0:110 Constant: 0:110 3 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 subgroupQuadSwapDiagonal ( global 2-component vector of double) 0:110 vector swizzle ( temp 2-component vector of double) 0:110 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 3 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:111 move second child to first child ( temp 3-component vector of double) 0:111 vector swizzle ( temp 3-component vector of double) 0:111 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:111 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'invocation' ( temp uint) 0:111 Constant: 0:111 3 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:111 subgroupQuadSwapDiagonal ( global 3-component vector of double) 0:111 vector swizzle ( temp 3-component vector of double) 0:111 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 3 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 2 (const int) 0:112 move second child to first child ( temp 4-component vector of double) 0:112 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:112 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'invocation' ( temp uint) 0:112 Constant: 0:112 3 (const int) 0:112 subgroupQuadSwapDiagonal ( global 4-component vector of double) 0:112 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:112 Constant: 0:112 3 (const int) 0:112 Constant: 0:112 3 (const int) 0:114 move second child to first child ( temp int) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'invocation' ( temp uint) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 Convert bool to int ( temp int) 0:114 subgroupQuadSwapDiagonal ( global bool) 0:114 Compare Less Than ( temp bool) 0:114 direct index ( temp int) 0:114 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:115 move second child to first child ( temp 2-component vector of int) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'invocation' ( temp uint) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Convert bool to int ( temp 2-component vector of int) 0:115 subgroupQuadSwapDiagonal ( global 2-component vector of bool) 0:115 Compare Less Than ( global 2-component vector of bool) 0:115 vector swizzle ( temp 2-component vector of int) 0:115 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 0 (const int) 0:116 move second child to first child ( temp 3-component vector of int) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'invocation' ( temp uint) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Convert bool to int ( temp 3-component vector of int) 0:116 subgroupQuadSwapDiagonal ( global 3-component vector of bool) 0:116 Compare Less Than ( global 3-component vector of bool) 0:116 vector swizzle ( temp 3-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 0 (const int) 0:116 0 (const int) 0:117 move second child to first child ( temp 4-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'invocation' ( temp uint) 0:117 Constant: 0:117 1 (const int) 0:117 Convert bool to int ( temp 4-component vector of int) 0:117 subgroupQuadSwapDiagonal ( global 4-component vector of bool) 0:117 Compare Less Than ( global 4-component vector of bool) 0:117 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 0 (const int) 0:117 0 (const int) 0:117 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupRotate.comp.out000066400000000000000000006000441506534232700244350ustar00rootroot00000000000000glsl.450.subgroupRotate.comp Shader version: 450 Requested GL_KHR_shader_subgroup_rotate local_size = (8, 8, 1) 0:? Sequence 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'delta' ( temp uint) 0:22 delta: direct index for structure (layout( column_major shared) readonly buffer uint) 0:22 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) 0:22 Constant: 0:22 0 (const int) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'delta' ( temp uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupRotate ( global float) 0:24 direct index ( temp float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 'delta' ( temp uint) 0:25 move second child to first child ( temp 2-component vector of float) 0:25 vector swizzle ( temp 2-component vector of float) 0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'delta' ( temp uint) 0:25 Constant: 0:25 0 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupRotate ( global 2-component vector of float) 0:25 vector swizzle ( temp 2-component vector of float) 0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 'delta' ( temp uint) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 vector swizzle ( temp 3-component vector of float) 0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'delta' ( temp uint) 0:26 Constant: 0:26 0 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupRotate ( global 3-component vector of float) 0:26 vector swizzle ( temp 3-component vector of float) 0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 'delta' ( temp uint) 0:27 move second child to first child ( temp 4-component vector of float) 0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'delta' ( temp uint) 0:27 Constant: 0:27 0 (const int) 0:27 subgroupRotate ( global 4-component vector of float) 0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 'delta' ( temp uint) 0:29 move second child to first child ( temp int) 0:29 direct index ( temp int) 0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'delta' ( temp uint) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupRotate ( global int) 0:29 direct index ( temp int) 0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 'delta' ( temp uint) 0:30 move second child to first child ( temp 2-component vector of int) 0:30 vector swizzle ( temp 2-component vector of int) 0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'delta' ( temp uint) 0:30 Constant: 0:30 1 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupRotate ( global 2-component vector of int) 0:30 vector swizzle ( temp 2-component vector of int) 0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 'delta' ( temp uint) 0:31 move second child to first child ( temp 3-component vector of int) 0:31 vector swizzle ( temp 3-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'delta' ( temp uint) 0:31 Constant: 0:31 1 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupRotate ( global 3-component vector of int) 0:31 vector swizzle ( temp 3-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'delta' ( temp uint) 0:32 move second child to first child ( temp 4-component vector of int) 0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'delta' ( temp uint) 0:32 Constant: 0:32 1 (const int) 0:32 subgroupRotate ( global 4-component vector of int) 0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 'delta' ( temp uint) 0:34 move second child to first child ( temp uint) 0:34 direct index ( temp uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'delta' ( temp uint) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupRotate ( global uint) 0:34 direct index ( temp uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 'delta' ( temp uint) 0:35 move second child to first child ( temp 2-component vector of uint) 0:35 vector swizzle ( temp 2-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'delta' ( temp uint) 0:35 Constant: 0:35 2 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupRotate ( global 2-component vector of uint) 0:35 vector swizzle ( temp 2-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 'delta' ( temp uint) 0:36 move second child to first child ( temp 3-component vector of uint) 0:36 vector swizzle ( temp 3-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'delta' ( temp uint) 0:36 Constant: 0:36 2 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupRotate ( global 3-component vector of uint) 0:36 vector swizzle ( temp 3-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 'delta' ( temp uint) 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'delta' ( temp uint) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupRotate ( global 4-component vector of uint) 0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 'delta' ( temp uint) 0:39 move second child to first child ( temp double) 0:39 direct index ( temp double) 0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'delta' ( temp uint) 0:39 Constant: 0:39 3 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 subgroupRotate ( global double) 0:39 direct index ( temp double) 0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 3 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 'delta' ( temp uint) 0:40 move second child to first child ( temp 2-component vector of double) 0:40 vector swizzle ( temp 2-component vector of double) 0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'delta' ( temp uint) 0:40 Constant: 0:40 3 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 subgroupRotate ( global 2-component vector of double) 0:40 vector swizzle ( temp 2-component vector of double) 0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 3 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 'delta' ( temp uint) 0:41 move second child to first child ( temp 3-component vector of double) 0:41 vector swizzle ( temp 3-component vector of double) 0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'delta' ( temp uint) 0:41 Constant: 0:41 3 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupRotate ( global 3-component vector of double) 0:41 vector swizzle ( temp 3-component vector of double) 0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 3 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 'delta' ( temp uint) 0:42 move second child to first child ( temp 4-component vector of double) 0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'delta' ( temp uint) 0:42 Constant: 0:42 3 (const int) 0:42 subgroupRotate ( global 4-component vector of double) 0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 3 (const int) 0:42 'delta' ( temp uint) 0:44 move second child to first child ( temp int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'delta' ( temp uint) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Convert bool to int ( temp int) 0:44 subgroupRotate ( global bool) 0:44 Compare Less Than ( temp bool) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 'delta' ( temp uint) 0:45 move second child to first child ( temp 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'delta' ( temp uint) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Convert bool to int ( temp 2-component vector of int) 0:45 subgroupRotate ( global 2-component vector of bool) 0:45 Compare Less Than ( global 2-component vector of bool) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 0 (const int) 0:45 'delta' ( temp uint) 0:46 move second child to first child ( temp 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'delta' ( temp uint) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Convert bool to int ( temp 3-component vector of int) 0:46 subgroupRotate ( global 3-component vector of bool) 0:46 Compare Less Than ( global 3-component vector of bool) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 0 (const int) 0:46 0 (const int) 0:46 'delta' ( temp uint) 0:47 move second child to first child ( temp 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'delta' ( temp uint) 0:47 Constant: 0:47 1 (const int) 0:47 Convert bool to int ( temp 4-component vector of int) 0:47 subgroupRotate ( global 4-component vector of bool) 0:47 Compare Less Than ( global 4-component vector of bool) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 0 (const int) 0:47 0 (const int) 0:47 0 (const int) 0:47 'delta' ( temp uint) 0:49 move second child to first child ( temp float) 0:49 direct index ( temp float) 0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'delta' ( temp uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupClusteredRotate ( global float) 0:49 direct index ( temp float) 0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'delta' ( temp uint) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp 2-component vector of float) 0:50 vector swizzle ( temp 2-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'delta' ( temp uint) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupClusteredRotate ( global 2-component vector of float) 0:50 vector swizzle ( temp 2-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 'delta' ( temp uint) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp 3-component vector of float) 0:51 vector swizzle ( temp 3-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'delta' ( temp uint) 0:51 Constant: 0:51 0 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupClusteredRotate ( global 3-component vector of float) 0:51 vector swizzle ( temp 3-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'delta' ( temp uint) 0:51 Constant: 0:51 1 (const uint) 0:52 move second child to first child ( temp 4-component vector of float) 0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'delta' ( temp uint) 0:52 Constant: 0:52 0 (const int) 0:52 subgroupClusteredRotate ( global 4-component vector of float) 0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 0 (const int) 0:52 'delta' ( temp uint) 0:52 Constant: 0:52 1 (const uint) 0:54 move second child to first child ( temp int) 0:54 direct index ( temp int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'delta' ( temp uint) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupClusteredRotate ( global int) 0:54 direct index ( temp int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 'delta' ( temp uint) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp 2-component vector of int) 0:55 vector swizzle ( temp 2-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'delta' ( temp uint) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupClusteredRotate ( global 2-component vector of int) 0:55 vector swizzle ( temp 2-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 'delta' ( temp uint) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp 3-component vector of int) 0:56 vector swizzle ( temp 3-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'delta' ( temp uint) 0:56 Constant: 0:56 1 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupClusteredRotate ( global 3-component vector of int) 0:56 vector swizzle ( temp 3-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 'delta' ( temp uint) 0:56 Constant: 0:56 1 (const uint) 0:57 move second child to first child ( temp 4-component vector of int) 0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'delta' ( temp uint) 0:57 Constant: 0:57 1 (const int) 0:57 subgroupClusteredRotate ( global 4-component vector of int) 0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 'delta' ( temp uint) 0:57 Constant: 0:57 1 (const uint) 0:59 move second child to first child ( temp uint) 0:59 direct index ( temp uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'delta' ( temp uint) 0:59 Constant: 0:59 2 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupClusteredRotate ( global uint) 0:59 direct index ( temp uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 'delta' ( temp uint) 0:59 Constant: 0:59 1 (const uint) 0:60 move second child to first child ( temp 2-component vector of uint) 0:60 vector swizzle ( temp 2-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'delta' ( temp uint) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupClusteredRotate ( global 2-component vector of uint) 0:60 vector swizzle ( temp 2-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 'delta' ( temp uint) 0:60 Constant: 0:60 1 (const uint) 0:61 move second child to first child ( temp 3-component vector of uint) 0:61 vector swizzle ( temp 3-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'delta' ( temp uint) 0:61 Constant: 0:61 2 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupClusteredRotate ( global 3-component vector of uint) 0:61 vector swizzle ( temp 3-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 'delta' ( temp uint) 0:61 Constant: 0:61 1 (const uint) 0:62 move second child to first child ( temp 4-component vector of uint) 0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'delta' ( temp uint) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupClusteredRotate ( global 4-component vector of uint) 0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 'delta' ( temp uint) 0:62 Constant: 0:62 1 (const uint) 0:64 move second child to first child ( temp double) 0:64 direct index ( temp double) 0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'delta' ( temp uint) 0:64 Constant: 0:64 3 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 subgroupClusteredRotate ( global double) 0:64 direct index ( temp double) 0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 3 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 'delta' ( temp uint) 0:64 Constant: 0:64 1 (const uint) 0:65 move second child to first child ( temp 2-component vector of double) 0:65 vector swizzle ( temp 2-component vector of double) 0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'delta' ( temp uint) 0:65 Constant: 0:65 3 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 subgroupClusteredRotate ( global 2-component vector of double) 0:65 vector swizzle ( temp 2-component vector of double) 0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 3 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 'delta' ( temp uint) 0:65 Constant: 0:65 1 (const uint) 0:66 move second child to first child ( temp 3-component vector of double) 0:66 vector swizzle ( temp 3-component vector of double) 0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'delta' ( temp uint) 0:66 Constant: 0:66 3 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 subgroupClusteredRotate ( global 3-component vector of double) 0:66 vector swizzle ( temp 3-component vector of double) 0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 3 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 'delta' ( temp uint) 0:66 Constant: 0:66 1 (const uint) 0:67 move second child to first child ( temp 4-component vector of double) 0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'delta' ( temp uint) 0:67 Constant: 0:67 3 (const int) 0:67 subgroupClusteredRotate ( global 4-component vector of double) 0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 3 (const int) 0:67 Constant: 0:67 3 (const int) 0:67 'delta' ( temp uint) 0:67 Constant: 0:67 1 (const uint) 0:69 move second child to first child ( temp int) 0:69 direct index ( temp int) 0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'delta' ( temp uint) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Convert bool to int ( temp int) 0:69 subgroupClusteredRotate ( global bool) 0:69 Compare Less Than ( temp bool) 0:69 direct index ( temp int) 0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 'delta' ( temp uint) 0:69 Constant: 0:69 1 (const uint) 0:70 move second child to first child ( temp 2-component vector of int) 0:70 vector swizzle ( temp 2-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'delta' ( temp uint) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Convert bool to int ( temp 2-component vector of int) 0:70 subgroupClusteredRotate ( global 2-component vector of bool) 0:70 Compare Less Than ( global 2-component vector of bool) 0:70 vector swizzle ( temp 2-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 0 (const int) 0:70 'delta' ( temp uint) 0:70 Constant: 0:70 1 (const uint) 0:71 move second child to first child ( temp 3-component vector of int) 0:71 vector swizzle ( temp 3-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'delta' ( temp uint) 0:71 Constant: 0:71 1 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Convert bool to int ( temp 3-component vector of int) 0:71 subgroupClusteredRotate ( global 3-component vector of bool) 0:71 Compare Less Than ( global 3-component vector of bool) 0:71 vector swizzle ( temp 3-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 0 (const int) 0:71 0 (const int) 0:71 'delta' ( temp uint) 0:71 Constant: 0:71 1 (const uint) 0:72 move second child to first child ( temp 4-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'delta' ( temp uint) 0:72 Constant: 0:72 1 (const int) 0:72 Convert bool to int ( temp 4-component vector of int) 0:72 subgroupClusteredRotate ( global 4-component vector of bool) 0:72 Compare Less Than ( global 4-component vector of bool) 0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 'delta' ( temp uint) 0:72 Constant: 0:72 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_rotate local_size = (8, 8, 1) 0:? Sequence 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'delta' ( temp uint) 0:22 delta: direct index for structure (layout( column_major shared) readonly buffer uint) 0:22 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) 0:22 Constant: 0:22 0 (const int) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'delta' ( temp uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupRotate ( global float) 0:24 direct index ( temp float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 'delta' ( temp uint) 0:25 move second child to first child ( temp 2-component vector of float) 0:25 vector swizzle ( temp 2-component vector of float) 0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'delta' ( temp uint) 0:25 Constant: 0:25 0 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupRotate ( global 2-component vector of float) 0:25 vector swizzle ( temp 2-component vector of float) 0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 'delta' ( temp uint) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 vector swizzle ( temp 3-component vector of float) 0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'delta' ( temp uint) 0:26 Constant: 0:26 0 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupRotate ( global 3-component vector of float) 0:26 vector swizzle ( temp 3-component vector of float) 0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 'delta' ( temp uint) 0:27 move second child to first child ( temp 4-component vector of float) 0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'delta' ( temp uint) 0:27 Constant: 0:27 0 (const int) 0:27 subgroupRotate ( global 4-component vector of float) 0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 'delta' ( temp uint) 0:29 move second child to first child ( temp int) 0:29 direct index ( temp int) 0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'delta' ( temp uint) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupRotate ( global int) 0:29 direct index ( temp int) 0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 'delta' ( temp uint) 0:30 move second child to first child ( temp 2-component vector of int) 0:30 vector swizzle ( temp 2-component vector of int) 0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'delta' ( temp uint) 0:30 Constant: 0:30 1 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupRotate ( global 2-component vector of int) 0:30 vector swizzle ( temp 2-component vector of int) 0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 'delta' ( temp uint) 0:31 move second child to first child ( temp 3-component vector of int) 0:31 vector swizzle ( temp 3-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'delta' ( temp uint) 0:31 Constant: 0:31 1 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupRotate ( global 3-component vector of int) 0:31 vector swizzle ( temp 3-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'delta' ( temp uint) 0:32 move second child to first child ( temp 4-component vector of int) 0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'delta' ( temp uint) 0:32 Constant: 0:32 1 (const int) 0:32 subgroupRotate ( global 4-component vector of int) 0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 'delta' ( temp uint) 0:34 move second child to first child ( temp uint) 0:34 direct index ( temp uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'delta' ( temp uint) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupRotate ( global uint) 0:34 direct index ( temp uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 'delta' ( temp uint) 0:35 move second child to first child ( temp 2-component vector of uint) 0:35 vector swizzle ( temp 2-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'delta' ( temp uint) 0:35 Constant: 0:35 2 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupRotate ( global 2-component vector of uint) 0:35 vector swizzle ( temp 2-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 'delta' ( temp uint) 0:36 move second child to first child ( temp 3-component vector of uint) 0:36 vector swizzle ( temp 3-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'delta' ( temp uint) 0:36 Constant: 0:36 2 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupRotate ( global 3-component vector of uint) 0:36 vector swizzle ( temp 3-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 'delta' ( temp uint) 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'delta' ( temp uint) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupRotate ( global 4-component vector of uint) 0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 'delta' ( temp uint) 0:39 move second child to first child ( temp double) 0:39 direct index ( temp double) 0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'delta' ( temp uint) 0:39 Constant: 0:39 3 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 subgroupRotate ( global double) 0:39 direct index ( temp double) 0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 3 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 'delta' ( temp uint) 0:40 move second child to first child ( temp 2-component vector of double) 0:40 vector swizzle ( temp 2-component vector of double) 0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'delta' ( temp uint) 0:40 Constant: 0:40 3 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 subgroupRotate ( global 2-component vector of double) 0:40 vector swizzle ( temp 2-component vector of double) 0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 3 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 'delta' ( temp uint) 0:41 move second child to first child ( temp 3-component vector of double) 0:41 vector swizzle ( temp 3-component vector of double) 0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'delta' ( temp uint) 0:41 Constant: 0:41 3 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 subgroupRotate ( global 3-component vector of double) 0:41 vector swizzle ( temp 3-component vector of double) 0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 3 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 'delta' ( temp uint) 0:42 move second child to first child ( temp 4-component vector of double) 0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'delta' ( temp uint) 0:42 Constant: 0:42 3 (const int) 0:42 subgroupRotate ( global 4-component vector of double) 0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 3 (const int) 0:42 'delta' ( temp uint) 0:44 move second child to first child ( temp int) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'delta' ( temp uint) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Convert bool to int ( temp int) 0:44 subgroupRotate ( global bool) 0:44 Compare Less Than ( temp bool) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 'delta' ( temp uint) 0:45 move second child to first child ( temp 2-component vector of int) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'delta' ( temp uint) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Convert bool to int ( temp 2-component vector of int) 0:45 subgroupRotate ( global 2-component vector of bool) 0:45 Compare Less Than ( global 2-component vector of bool) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 0 (const int) 0:45 'delta' ( temp uint) 0:46 move second child to first child ( temp 3-component vector of int) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'delta' ( temp uint) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Convert bool to int ( temp 3-component vector of int) 0:46 subgroupRotate ( global 3-component vector of bool) 0:46 Compare Less Than ( global 3-component vector of bool) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 0 (const int) 0:46 0 (const int) 0:46 'delta' ( temp uint) 0:47 move second child to first child ( temp 4-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'delta' ( temp uint) 0:47 Constant: 0:47 1 (const int) 0:47 Convert bool to int ( temp 4-component vector of int) 0:47 subgroupRotate ( global 4-component vector of bool) 0:47 Compare Less Than ( global 4-component vector of bool) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 0 (const int) 0:47 0 (const int) 0:47 0 (const int) 0:47 'delta' ( temp uint) 0:49 move second child to first child ( temp float) 0:49 direct index ( temp float) 0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'delta' ( temp uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupClusteredRotate ( global float) 0:49 direct index ( temp float) 0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'delta' ( temp uint) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp 2-component vector of float) 0:50 vector swizzle ( temp 2-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'delta' ( temp uint) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupClusteredRotate ( global 2-component vector of float) 0:50 vector swizzle ( temp 2-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 'delta' ( temp uint) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp 3-component vector of float) 0:51 vector swizzle ( temp 3-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'delta' ( temp uint) 0:51 Constant: 0:51 0 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupClusteredRotate ( global 3-component vector of float) 0:51 vector swizzle ( temp 3-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'delta' ( temp uint) 0:51 Constant: 0:51 1 (const uint) 0:52 move second child to first child ( temp 4-component vector of float) 0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'delta' ( temp uint) 0:52 Constant: 0:52 0 (const int) 0:52 subgroupClusteredRotate ( global 4-component vector of float) 0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 0 (const int) 0:52 'delta' ( temp uint) 0:52 Constant: 0:52 1 (const uint) 0:54 move second child to first child ( temp int) 0:54 direct index ( temp int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'delta' ( temp uint) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupClusteredRotate ( global int) 0:54 direct index ( temp int) 0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 'delta' ( temp uint) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp 2-component vector of int) 0:55 vector swizzle ( temp 2-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'delta' ( temp uint) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupClusteredRotate ( global 2-component vector of int) 0:55 vector swizzle ( temp 2-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 'delta' ( temp uint) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp 3-component vector of int) 0:56 vector swizzle ( temp 3-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'delta' ( temp uint) 0:56 Constant: 0:56 1 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupClusteredRotate ( global 3-component vector of int) 0:56 vector swizzle ( temp 3-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 'delta' ( temp uint) 0:56 Constant: 0:56 1 (const uint) 0:57 move second child to first child ( temp 4-component vector of int) 0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'delta' ( temp uint) 0:57 Constant: 0:57 1 (const int) 0:57 subgroupClusteredRotate ( global 4-component vector of int) 0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 'delta' ( temp uint) 0:57 Constant: 0:57 1 (const uint) 0:59 move second child to first child ( temp uint) 0:59 direct index ( temp uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'delta' ( temp uint) 0:59 Constant: 0:59 2 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupClusteredRotate ( global uint) 0:59 direct index ( temp uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 'delta' ( temp uint) 0:59 Constant: 0:59 1 (const uint) 0:60 move second child to first child ( temp 2-component vector of uint) 0:60 vector swizzle ( temp 2-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'delta' ( temp uint) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupClusteredRotate ( global 2-component vector of uint) 0:60 vector swizzle ( temp 2-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 'delta' ( temp uint) 0:60 Constant: 0:60 1 (const uint) 0:61 move second child to first child ( temp 3-component vector of uint) 0:61 vector swizzle ( temp 3-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'delta' ( temp uint) 0:61 Constant: 0:61 2 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupClusteredRotate ( global 3-component vector of uint) 0:61 vector swizzle ( temp 3-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 'delta' ( temp uint) 0:61 Constant: 0:61 1 (const uint) 0:62 move second child to first child ( temp 4-component vector of uint) 0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'delta' ( temp uint) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupClusteredRotate ( global 4-component vector of uint) 0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 'delta' ( temp uint) 0:62 Constant: 0:62 1 (const uint) 0:64 move second child to first child ( temp double) 0:64 direct index ( temp double) 0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'delta' ( temp uint) 0:64 Constant: 0:64 3 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 subgroupClusteredRotate ( global double) 0:64 direct index ( temp double) 0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 3 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 'delta' ( temp uint) 0:64 Constant: 0:64 1 (const uint) 0:65 move second child to first child ( temp 2-component vector of double) 0:65 vector swizzle ( temp 2-component vector of double) 0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'delta' ( temp uint) 0:65 Constant: 0:65 3 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 subgroupClusteredRotate ( global 2-component vector of double) 0:65 vector swizzle ( temp 2-component vector of double) 0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 3 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 'delta' ( temp uint) 0:65 Constant: 0:65 1 (const uint) 0:66 move second child to first child ( temp 3-component vector of double) 0:66 vector swizzle ( temp 3-component vector of double) 0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'delta' ( temp uint) 0:66 Constant: 0:66 3 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 subgroupClusteredRotate ( global 3-component vector of double) 0:66 vector swizzle ( temp 3-component vector of double) 0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 3 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 'delta' ( temp uint) 0:66 Constant: 0:66 1 (const uint) 0:67 move second child to first child ( temp 4-component vector of double) 0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'delta' ( temp uint) 0:67 Constant: 0:67 3 (const int) 0:67 subgroupClusteredRotate ( global 4-component vector of double) 0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 3 (const int) 0:67 Constant: 0:67 3 (const int) 0:67 'delta' ( temp uint) 0:67 Constant: 0:67 1 (const uint) 0:69 move second child to first child ( temp int) 0:69 direct index ( temp int) 0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'delta' ( temp uint) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Convert bool to int ( temp int) 0:69 subgroupClusteredRotate ( global bool) 0:69 Compare Less Than ( temp bool) 0:69 direct index ( temp int) 0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 'delta' ( temp uint) 0:69 Constant: 0:69 1 (const uint) 0:70 move second child to first child ( temp 2-component vector of int) 0:70 vector swizzle ( temp 2-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'delta' ( temp uint) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Convert bool to int ( temp 2-component vector of int) 0:70 subgroupClusteredRotate ( global 2-component vector of bool) 0:70 Compare Less Than ( global 2-component vector of bool) 0:70 vector swizzle ( temp 2-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 0 (const int) 0:70 'delta' ( temp uint) 0:70 Constant: 0:70 1 (const uint) 0:71 move second child to first child ( temp 3-component vector of int) 0:71 vector swizzle ( temp 3-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'delta' ( temp uint) 0:71 Constant: 0:71 1 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Convert bool to int ( temp 3-component vector of int) 0:71 subgroupClusteredRotate ( global 3-component vector of bool) 0:71 Compare Less Than ( global 3-component vector of bool) 0:71 vector swizzle ( temp 3-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 0 (const int) 0:71 0 (const int) 0:71 'delta' ( temp uint) 0:71 Constant: 0:71 1 (const uint) 0:72 move second child to first child ( temp 4-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'delta' ( temp uint) 0:72 Constant: 0:72 1 (const int) 0:72 Convert bool to int ( temp 4-component vector of int) 0:72 subgroupClusteredRotate ( global 4-component vector of bool) 0:72 Compare Less Than ( global 4-component vector of bool) 0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:72 'delta' ( temp uint) 0:72 Constant: 0:72 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupShuffle.comp.out000066400000000000000000005744251506534232700246100ustar00rootroot00000000000000glsl.450.subgroupShuffle.comp Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_shuffle local_size = (8, 8, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupShuffle ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 'invocation' ( temp uint) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupShuffle ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 'invocation' ( temp uint) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupShuffle ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 'invocation' ( temp uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupShuffle ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 'invocation' ( temp uint) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupShuffle ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 'invocation' ( temp uint) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupShuffle ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 'invocation' ( temp uint) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupShuffle ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 'invocation' ( temp uint) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupShuffle ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 'invocation' ( temp uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupShuffle ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 'invocation' ( temp uint) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupShuffle ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 'invocation' ( temp uint) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupShuffle ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'invocation' ( temp uint) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupShuffle ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 'invocation' ( temp uint) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupShuffle ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 'invocation' ( temp uint) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupShuffle ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 'invocation' ( temp uint) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupShuffle ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 'invocation' ( temp uint) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupShuffle ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 'invocation' ( temp uint) 0:39 move second child to first child ( temp int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Convert bool to int ( temp int) 0:39 subgroupShuffle ( global bool) 0:39 Compare Less Than ( temp bool) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 'invocation' ( temp uint) 0:40 move second child to first child ( temp 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Convert bool to int ( temp 2-component vector of int) 0:40 subgroupShuffle ( global 2-component vector of bool) 0:40 Compare Less Than ( global 2-component vector of bool) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 'invocation' ( temp uint) 0:41 move second child to first child ( temp 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Convert bool to int ( temp 3-component vector of int) 0:41 subgroupShuffle ( global 3-component vector of bool) 0:41 Compare Less Than ( global 3-component vector of bool) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 'invocation' ( temp uint) 0:42 move second child to first child ( temp 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 1 (const int) 0:42 Convert bool to int ( temp 4-component vector of int) 0:42 subgroupShuffle ( global 4-component vector of bool) 0:42 Compare Less Than ( global 4-component vector of bool) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 'invocation' ( temp uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupShuffleXor ( global float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 'invocation' ( temp uint) 0:45 move second child to first child ( temp 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupShuffleXor ( global 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 'invocation' ( temp uint) 0:46 move second child to first child ( temp 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupShuffleXor ( global 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 'invocation' ( temp uint) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 0 (const int) 0:47 subgroupShuffleXor ( global 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 'invocation' ( temp uint) 0:49 move second child to first child ( temp int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupShuffleXor ( global int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'invocation' ( temp uint) 0:50 move second child to first child ( temp 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupShuffleXor ( global 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 'invocation' ( temp uint) 0:51 move second child to first child ( temp 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupShuffleXor ( global 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'invocation' ( temp uint) 0:52 move second child to first child ( temp 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 1 (const int) 0:52 subgroupShuffleXor ( global 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 'invocation' ( temp uint) 0:54 move second child to first child ( temp uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupShuffleXor ( global uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 'invocation' ( temp uint) 0:55 move second child to first child ( temp 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupShuffleXor ( global 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 'invocation' ( temp uint) 0:56 move second child to first child ( temp 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupShuffleXor ( global 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 'invocation' ( temp uint) 0:57 move second child to first child ( temp 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupShuffleXor ( global 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 'invocation' ( temp uint) 0:59 move second child to first child ( temp double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupShuffleXor ( global double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 'invocation' ( temp uint) 0:60 move second child to first child ( temp 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupShuffleXor ( global 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 'invocation' ( temp uint) 0:61 move second child to first child ( temp 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupShuffleXor ( global 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 'invocation' ( temp uint) 0:62 move second child to first child ( temp 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 3 (const int) 0:62 subgroupShuffleXor ( global 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 3 (const int) 0:62 'invocation' ( temp uint) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Convert bool to int ( temp int) 0:64 subgroupShuffleXor ( global bool) 0:64 Compare Less Than ( temp bool) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 'invocation' ( temp uint) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Convert bool to int ( temp 2-component vector of int) 0:65 subgroupShuffleXor ( global 2-component vector of bool) 0:65 Compare Less Than ( global 2-component vector of bool) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 0 (const int) 0:65 'invocation' ( temp uint) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Convert bool to int ( temp 3-component vector of int) 0:66 subgroupShuffleXor ( global 3-component vector of bool) 0:66 Compare Less Than ( global 3-component vector of bool) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 0 (const int) 0:66 0 (const int) 0:66 'invocation' ( temp uint) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 Convert bool to int ( temp 4-component vector of int) 0:67 subgroupShuffleXor ( global 4-component vector of bool) 0:67 Compare Less Than ( global 4-component vector of bool) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 'invocation' ( temp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_shuffle local_size = (8, 8, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupShuffle ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 'invocation' ( temp uint) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupShuffle ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 'invocation' ( temp uint) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupShuffle ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 'invocation' ( temp uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupShuffle ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 'invocation' ( temp uint) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupShuffle ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 'invocation' ( temp uint) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupShuffle ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 'invocation' ( temp uint) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupShuffle ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 'invocation' ( temp uint) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupShuffle ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 'invocation' ( temp uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupShuffle ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 'invocation' ( temp uint) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupShuffle ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 'invocation' ( temp uint) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupShuffle ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'invocation' ( temp uint) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupShuffle ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 'invocation' ( temp uint) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupShuffle ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 'invocation' ( temp uint) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupShuffle ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 'invocation' ( temp uint) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupShuffle ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 'invocation' ( temp uint) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupShuffle ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 'invocation' ( temp uint) 0:39 move second child to first child ( temp int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Convert bool to int ( temp int) 0:39 subgroupShuffle ( global bool) 0:39 Compare Less Than ( temp bool) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 'invocation' ( temp uint) 0:40 move second child to first child ( temp 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Convert bool to int ( temp 2-component vector of int) 0:40 subgroupShuffle ( global 2-component vector of bool) 0:40 Compare Less Than ( global 2-component vector of bool) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 'invocation' ( temp uint) 0:41 move second child to first child ( temp 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Convert bool to int ( temp 3-component vector of int) 0:41 subgroupShuffle ( global 3-component vector of bool) 0:41 Compare Less Than ( global 3-component vector of bool) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 'invocation' ( temp uint) 0:42 move second child to first child ( temp 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 1 (const int) 0:42 Convert bool to int ( temp 4-component vector of int) 0:42 subgroupShuffle ( global 4-component vector of bool) 0:42 Compare Less Than ( global 4-component vector of bool) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 'invocation' ( temp uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupShuffleXor ( global float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 'invocation' ( temp uint) 0:45 move second child to first child ( temp 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupShuffleXor ( global 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 'invocation' ( temp uint) 0:46 move second child to first child ( temp 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupShuffleXor ( global 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 'invocation' ( temp uint) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 0 (const int) 0:47 subgroupShuffleXor ( global 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 'invocation' ( temp uint) 0:49 move second child to first child ( temp int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupShuffleXor ( global int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'invocation' ( temp uint) 0:50 move second child to first child ( temp 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupShuffleXor ( global 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 'invocation' ( temp uint) 0:51 move second child to first child ( temp 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupShuffleXor ( global 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'invocation' ( temp uint) 0:52 move second child to first child ( temp 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 1 (const int) 0:52 subgroupShuffleXor ( global 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 'invocation' ( temp uint) 0:54 move second child to first child ( temp uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupShuffleXor ( global uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 'invocation' ( temp uint) 0:55 move second child to first child ( temp 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupShuffleXor ( global 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 'invocation' ( temp uint) 0:56 move second child to first child ( temp 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupShuffleXor ( global 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 'invocation' ( temp uint) 0:57 move second child to first child ( temp 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupShuffleXor ( global 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 'invocation' ( temp uint) 0:59 move second child to first child ( temp double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupShuffleXor ( global double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 'invocation' ( temp uint) 0:60 move second child to first child ( temp 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupShuffleXor ( global 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 'invocation' ( temp uint) 0:61 move second child to first child ( temp 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupShuffleXor ( global 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 'invocation' ( temp uint) 0:62 move second child to first child ( temp 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 3 (const int) 0:62 subgroupShuffleXor ( global 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 3 (const int) 0:62 'invocation' ( temp uint) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Convert bool to int ( temp int) 0:64 subgroupShuffleXor ( global bool) 0:64 Compare Less Than ( temp bool) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 'invocation' ( temp uint) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Convert bool to int ( temp 2-component vector of int) 0:65 subgroupShuffleXor ( global 2-component vector of bool) 0:65 Compare Less Than ( global 2-component vector of bool) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 0 (const int) 0:65 'invocation' ( temp uint) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Convert bool to int ( temp 3-component vector of int) 0:66 subgroupShuffleXor ( global 3-component vector of bool) 0:66 Compare Less Than ( global 3-component vector of bool) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 0 (const int) 0:66 0 (const int) 0:66 'invocation' ( temp uint) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 Convert bool to int ( temp 4-component vector of int) 0:67 subgroupShuffleXor ( global 4-component vector of bool) 0:67 Compare Less Than ( global 4-component vector of bool) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 'invocation' ( temp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupShuffleRelative.comp.out000066400000000000000000005746471506534232700263120ustar00rootroot00000000000000glsl.450.subgroupShuffleRelative.comp Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_shuffle_relative local_size = (8, 8, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupShuffleUp ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 'invocation' ( temp uint) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupShuffleUp ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 'invocation' ( temp uint) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupShuffleUp ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 'invocation' ( temp uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupShuffleUp ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 'invocation' ( temp uint) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupShuffleUp ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 'invocation' ( temp uint) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupShuffleUp ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 'invocation' ( temp uint) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupShuffleUp ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 'invocation' ( temp uint) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupShuffleUp ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 'invocation' ( temp uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupShuffleUp ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 'invocation' ( temp uint) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupShuffleUp ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 'invocation' ( temp uint) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupShuffleUp ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'invocation' ( temp uint) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupShuffleUp ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 'invocation' ( temp uint) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupShuffleUp ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 'invocation' ( temp uint) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupShuffleUp ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 'invocation' ( temp uint) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupShuffleUp ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 'invocation' ( temp uint) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupShuffleUp ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 'invocation' ( temp uint) 0:39 move second child to first child ( temp int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Convert bool to int ( temp int) 0:39 subgroupShuffleUp ( global bool) 0:39 Compare Less Than ( temp bool) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 'invocation' ( temp uint) 0:40 move second child to first child ( temp 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Convert bool to int ( temp 2-component vector of int) 0:40 subgroupShuffleUp ( global 2-component vector of bool) 0:40 Compare Less Than ( global 2-component vector of bool) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 'invocation' ( temp uint) 0:41 move second child to first child ( temp 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Convert bool to int ( temp 3-component vector of int) 0:41 subgroupShuffleUp ( global 3-component vector of bool) 0:41 Compare Less Than ( global 3-component vector of bool) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 'invocation' ( temp uint) 0:42 move second child to first child ( temp 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 1 (const int) 0:42 Convert bool to int ( temp 4-component vector of int) 0:42 subgroupShuffleUp ( global 4-component vector of bool) 0:42 Compare Less Than ( global 4-component vector of bool) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 'invocation' ( temp uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupShuffleDown ( global float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 'invocation' ( temp uint) 0:45 move second child to first child ( temp 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupShuffleDown ( global 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 'invocation' ( temp uint) 0:46 move second child to first child ( temp 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupShuffleDown ( global 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 'invocation' ( temp uint) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 0 (const int) 0:47 subgroupShuffleDown ( global 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 'invocation' ( temp uint) 0:49 move second child to first child ( temp int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupShuffleDown ( global int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'invocation' ( temp uint) 0:50 move second child to first child ( temp 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupShuffleDown ( global 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 'invocation' ( temp uint) 0:51 move second child to first child ( temp 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupShuffleDown ( global 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'invocation' ( temp uint) 0:52 move second child to first child ( temp 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 1 (const int) 0:52 subgroupShuffleDown ( global 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 'invocation' ( temp uint) 0:54 move second child to first child ( temp uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupShuffleDown ( global uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 'invocation' ( temp uint) 0:55 move second child to first child ( temp 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupShuffleDown ( global 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 'invocation' ( temp uint) 0:56 move second child to first child ( temp 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupShuffleDown ( global 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 'invocation' ( temp uint) 0:57 move second child to first child ( temp 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupShuffleDown ( global 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 'invocation' ( temp uint) 0:59 move second child to first child ( temp double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupShuffleDown ( global double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 'invocation' ( temp uint) 0:60 move second child to first child ( temp 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupShuffleDown ( global 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 'invocation' ( temp uint) 0:61 move second child to first child ( temp 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupShuffleDown ( global 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 'invocation' ( temp uint) 0:62 move second child to first child ( temp 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 3 (const int) 0:62 subgroupShuffleDown ( global 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 3 (const int) 0:62 'invocation' ( temp uint) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Convert bool to int ( temp int) 0:64 subgroupShuffleDown ( global bool) 0:64 Compare Less Than ( temp bool) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 'invocation' ( temp uint) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Convert bool to int ( temp 2-component vector of int) 0:65 subgroupShuffleDown ( global 2-component vector of bool) 0:65 Compare Less Than ( global 2-component vector of bool) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 0 (const int) 0:65 'invocation' ( temp uint) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Convert bool to int ( temp 3-component vector of int) 0:66 subgroupShuffleDown ( global 3-component vector of bool) 0:66 Compare Less Than ( global 3-component vector of bool) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 0 (const int) 0:66 0 (const int) 0:66 'invocation' ( temp uint) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 Convert bool to int ( temp 4-component vector of int) 0:67 subgroupShuffleDown ( global 4-component vector of bool) 0:67 Compare Less Than ( global 4-component vector of bool) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 'invocation' ( temp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_shuffle_relative local_size = (8, 8, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'invocation' ( temp uint) 0:17 mod ( temp uint) 0:17 add ( temp uint) 0:17 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'invocation' ( temp uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 subgroupShuffleUp ( global float) 0:19 direct index ( temp float) 0:19 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 'invocation' ( temp uint) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 subgroupShuffleUp ( global 2-component vector of float) 0:20 vector swizzle ( temp 2-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 'invocation' ( temp uint) 0:21 move second child to first child ( temp 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'invocation' ( temp uint) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupShuffleUp ( global 3-component vector of float) 0:21 vector swizzle ( temp 3-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 'invocation' ( temp uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 0 (const int) 0:22 subgroupShuffleUp ( global 4-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 'invocation' ( temp uint) 0:24 move second child to first child ( temp int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 subgroupShuffleUp ( global int) 0:24 direct index ( temp int) 0:24 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 'invocation' ( temp uint) 0:25 move second child to first child ( temp 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupShuffleUp ( global 2-component vector of int) 0:25 vector swizzle ( temp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 'invocation' ( temp uint) 0:26 move second child to first child ( temp 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'invocation' ( temp uint) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupShuffleUp ( global 3-component vector of int) 0:26 vector swizzle ( temp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 'invocation' ( temp uint) 0:27 move second child to first child ( temp 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 1 (const int) 0:27 subgroupShuffleUp ( global 4-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 'invocation' ( temp uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 subgroupShuffleUp ( global uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 'invocation' ( temp uint) 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 subgroupShuffleUp ( global 2-component vector of uint) 0:30 vector swizzle ( temp 2-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 'invocation' ( temp uint) 0:31 move second child to first child ( temp 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'invocation' ( temp uint) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupShuffleUp ( global 3-component vector of uint) 0:31 vector swizzle ( temp 3-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'invocation' ( temp uint) 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupShuffleUp ( global 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:32 Constant: 0:32 3 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 'invocation' ( temp uint) 0:34 move second child to first child ( temp double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupShuffleUp ( global double) 0:34 direct index ( temp double) 0:34 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 'invocation' ( temp uint) 0:35 move second child to first child ( temp 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 subgroupShuffleUp ( global 2-component vector of double) 0:35 vector swizzle ( temp 2-component vector of double) 0:35 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 3 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 'invocation' ( temp uint) 0:36 move second child to first child ( temp 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'invocation' ( temp uint) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupShuffleUp ( global 3-component vector of double) 0:36 vector swizzle ( temp 3-component vector of double) 0:36 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:36 Constant: 0:36 2 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 'invocation' ( temp uint) 0:37 move second child to first child ( temp 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 3 (const int) 0:37 subgroupShuffleUp ( global 4-component vector of double) 0:37 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:37 Constant: 0:37 3 (const int) 0:37 Constant: 0:37 3 (const int) 0:37 'invocation' ( temp uint) 0:39 move second child to first child ( temp int) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Convert bool to int ( temp int) 0:39 subgroupShuffleUp ( global bool) 0:39 Compare Less Than ( temp bool) 0:39 direct index ( temp int) 0:39 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 'invocation' ( temp uint) 0:40 move second child to first child ( temp 2-component vector of int) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Convert bool to int ( temp 2-component vector of int) 0:40 subgroupShuffleUp ( global 2-component vector of bool) 0:40 Compare Less Than ( global 2-component vector of bool) 0:40 vector swizzle ( temp 2-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 'invocation' ( temp uint) 0:41 move second child to first child ( temp 3-component vector of int) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Convert bool to int ( temp 3-component vector of int) 0:41 subgroupShuffleUp ( global 3-component vector of bool) 0:41 Compare Less Than ( global 3-component vector of bool) 0:41 vector swizzle ( temp 3-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 'invocation' ( temp uint) 0:42 move second child to first child ( temp 4-component vector of int) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 1 (const int) 0:42 Convert bool to int ( temp 4-component vector of int) 0:42 subgroupShuffleUp ( global 4-component vector of bool) 0:42 Compare Less Than ( global 4-component vector of bool) 0:42 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 0 (const int) 0:42 'invocation' ( temp uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 subgroupShuffleDown ( global float) 0:44 direct index ( temp float) 0:44 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 'invocation' ( temp uint) 0:45 move second child to first child ( temp 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 subgroupShuffleDown ( global 2-component vector of float) 0:45 vector swizzle ( temp 2-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 'invocation' ( temp uint) 0:46 move second child to first child ( temp 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupShuffleDown ( global 3-component vector of float) 0:46 vector swizzle ( temp 3-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 'invocation' ( temp uint) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 0 (const int) 0:47 subgroupShuffleDown ( global 4-component vector of float) 0:47 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:47 Constant: 0:47 3 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 'invocation' ( temp uint) 0:49 move second child to first child ( temp int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'invocation' ( temp uint) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 subgroupShuffleDown ( global int) 0:49 direct index ( temp int) 0:49 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'invocation' ( temp uint) 0:50 move second child to first child ( temp 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'invocation' ( temp uint) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 subgroupShuffleDown ( global 2-component vector of int) 0:50 vector swizzle ( temp 2-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 'invocation' ( temp uint) 0:51 move second child to first child ( temp 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'invocation' ( temp uint) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupShuffleDown ( global 3-component vector of int) 0:51 vector swizzle ( temp 3-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'invocation' ( temp uint) 0:52 move second child to first child ( temp 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'invocation' ( temp uint) 0:52 Constant: 0:52 1 (const int) 0:52 subgroupShuffleDown ( global 4-component vector of int) 0:52 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 'invocation' ( temp uint) 0:54 move second child to first child ( temp uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'invocation' ( temp uint) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupShuffleDown ( global uint) 0:54 direct index ( temp uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 'invocation' ( temp uint) 0:55 move second child to first child ( temp 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'invocation' ( temp uint) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 subgroupShuffleDown ( global 2-component vector of uint) 0:55 vector swizzle ( temp 2-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 'invocation' ( temp uint) 0:56 move second child to first child ( temp 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'invocation' ( temp uint) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupShuffleDown ( global 3-component vector of uint) 0:56 vector swizzle ( temp 3-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 'invocation' ( temp uint) 0:57 move second child to first child ( temp 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'invocation' ( temp uint) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupShuffleDown ( global 4-component vector of uint) 0:57 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:57 Constant: 0:57 3 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 'invocation' ( temp uint) 0:59 move second child to first child ( temp double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'invocation' ( temp uint) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 subgroupShuffleDown ( global double) 0:59 direct index ( temp double) 0:59 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 'invocation' ( temp uint) 0:60 move second child to first child ( temp 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'invocation' ( temp uint) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 subgroupShuffleDown ( global 2-component vector of double) 0:60 vector swizzle ( temp 2-component vector of double) 0:60 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 3 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 'invocation' ( temp uint) 0:61 move second child to first child ( temp 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'invocation' ( temp uint) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupShuffleDown ( global 3-component vector of double) 0:61 vector swizzle ( temp 3-component vector of double) 0:61 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 3 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 'invocation' ( temp uint) 0:62 move second child to first child ( temp 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'invocation' ( temp uint) 0:62 Constant: 0:62 3 (const int) 0:62 subgroupShuffleDown ( global 4-component vector of double) 0:62 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:62 Constant: 0:62 3 (const int) 0:62 Constant: 0:62 3 (const int) 0:62 'invocation' ( temp uint) 0:64 move second child to first child ( temp int) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'invocation' ( temp uint) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Convert bool to int ( temp int) 0:64 subgroupShuffleDown ( global bool) 0:64 Compare Less Than ( temp bool) 0:64 direct index ( temp int) 0:64 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 'invocation' ( temp uint) 0:65 move second child to first child ( temp 2-component vector of int) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'invocation' ( temp uint) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Convert bool to int ( temp 2-component vector of int) 0:65 subgroupShuffleDown ( global 2-component vector of bool) 0:65 Compare Less Than ( global 2-component vector of bool) 0:65 vector swizzle ( temp 2-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 0 (const int) 0:65 'invocation' ( temp uint) 0:66 move second child to first child ( temp 3-component vector of int) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'invocation' ( temp uint) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Convert bool to int ( temp 3-component vector of int) 0:66 subgroupShuffleDown ( global 3-component vector of bool) 0:66 Compare Less Than ( global 3-component vector of bool) 0:66 vector swizzle ( temp 3-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 0 (const int) 0:66 0 (const int) 0:66 'invocation' ( temp uint) 0:67 move second child to first child ( temp 4-component vector of int) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'invocation' ( temp uint) 0:67 Constant: 0:67 1 (const int) 0:67 Convert bool to int ( temp 4-component vector of int) 0:67 subgroupShuffleDown ( global 4-component vector of bool) 0:67 Compare Less Than ( global 4-component vector of bool) 0:67 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 0 (const int) 0:67 'invocation' ( temp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) glslang-16.0.0/Test/baseResults/glsl.450.subgroupVote.comp.out000066400000000000000000003233521506534232700241200ustar00rootroot00000000000000glsl.450.subgroupVote.comp Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_vote local_size = (8, 8, 1) 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 Sequence 0:18 move second child to first child ( temp uint) 0:18 'invocation' ( temp uint) 0:18 mod ( temp uint) 0:18 add ( temp uint) 0:18 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:18 'gl_SubgroupSize' ( in uint SubgroupSize) 0:18 Constant: 0:18 4 (const uint) 0:20 Test condition and select ( temp void) 0:20 Condition 0:20 subgroupAll ( global bool) 0:20 Compare Less Than ( temp bool) 0:20 r: direct index for structure (layout( column_major shared) buffer int) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 4 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 true case 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 r: direct index for structure (layout( column_major shared) buffer int) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 4 (const int) 0:22 Convert bool to int ( temp int) 0:22 subgroupAllEqual ( global bool) 0:22 direct index ( temp float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 move second child to first child ( temp int) 0:23 r: direct index for structure (layout( column_major shared) buffer int) 0:23 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:23 'invocation' ( temp uint) 0:23 Constant: 0:23 4 (const int) 0:23 Convert bool to int ( temp int) 0:23 subgroupAllEqual ( global bool) 0:23 vector swizzle ( temp 2-component vector of float) 0:23 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Sequence 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:24 move second child to first child ( temp int) 0:24 r: direct index for structure (layout( column_major shared) buffer int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 4 (const int) 0:24 Convert bool to int ( temp int) 0:24 subgroupAllEqual ( global bool) 0:24 vector swizzle ( temp 3-component vector of float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 2 (const int) 0:25 move second child to first child ( temp int) 0:25 r: direct index for structure (layout( column_major shared) buffer int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 4 (const int) 0:25 Convert bool to int ( temp int) 0:25 subgroupAllEqual ( global bool) 0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:25 Constant: 0:25 3 (const int) 0:25 Constant: 0:25 0 (const int) 0:27 move second child to first child ( temp int) 0:27 r: direct index for structure (layout( column_major shared) buffer int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 4 (const int) 0:27 Convert bool to int ( temp int) 0:27 subgroupAllEqual ( global bool) 0:27 direct index ( temp int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 0 (const int) 0:28 move second child to first child ( temp int) 0:28 r: direct index for structure (layout( column_major shared) buffer int) 0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:28 'invocation' ( temp uint) 0:28 Constant: 0:28 4 (const int) 0:28 Convert bool to int ( temp int) 0:28 subgroupAllEqual ( global bool) 0:28 vector swizzle ( temp 2-component vector of int) 0:28 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Sequence 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:29 move second child to first child ( temp int) 0:29 r: direct index for structure (layout( column_major shared) buffer int) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 4 (const int) 0:29 Convert bool to int ( temp int) 0:29 subgroupAllEqual ( global bool) 0:29 vector swizzle ( temp 3-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:30 move second child to first child ( temp int) 0:30 r: direct index for structure (layout( column_major shared) buffer int) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 4 (const int) 0:30 Convert bool to int ( temp int) 0:30 subgroupAllEqual ( global bool) 0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 1 (const int) 0:32 move second child to first child ( temp int) 0:32 r: direct index for structure (layout( column_major shared) buffer int) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 4 (const int) 0:32 Convert bool to int ( temp int) 0:32 subgroupAllEqual ( global bool) 0:32 direct index ( temp uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 move second child to first child ( temp int) 0:33 r: direct index for structure (layout( column_major shared) buffer int) 0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:33 'invocation' ( temp uint) 0:33 Constant: 0:33 4 (const int) 0:33 Convert bool to int ( temp int) 0:33 subgroupAllEqual ( global bool) 0:33 vector swizzle ( temp 2-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:34 move second child to first child ( temp int) 0:34 r: direct index for structure (layout( column_major shared) buffer int) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 4 (const int) 0:34 Convert bool to int ( temp int) 0:34 subgroupAllEqual ( global bool) 0:34 vector swizzle ( temp 3-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 2 (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:35 move second child to first child ( temp int) 0:35 r: direct index for structure (layout( column_major shared) buffer int) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 4 (const int) 0:35 Convert bool to int ( temp int) 0:35 subgroupAllEqual ( global bool) 0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 2 (const int) 0:20 false case 0:37 Test condition and select ( temp void) 0:37 Condition 0:37 subgroupAny ( global bool) 0:37 Compare Less Than ( temp bool) 0:37 r: direct index for structure (layout( column_major shared) buffer int) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 4 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 true case 0:39 Sequence 0:39 move second child to first child ( temp int) 0:39 r: direct index for structure (layout( column_major shared) buffer int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 4 (const int) 0:39 Convert bool to int ( temp int) 0:39 subgroupAllEqual ( global bool) 0:39 direct index ( temp double) 0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 3 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp int) 0:40 r: direct index for structure (layout( column_major shared) buffer int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 4 (const int) 0:40 Convert bool to int ( temp int) 0:40 subgroupAllEqual ( global bool) 0:40 vector swizzle ( temp 2-component vector of double) 0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 3 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:41 move second child to first child ( temp int) 0:41 r: direct index for structure (layout( column_major shared) buffer int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 4 (const int) 0:41 Convert bool to int ( temp int) 0:41 subgroupAllEqual ( global bool) 0:41 vector swizzle ( temp 3-component vector of double) 0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 3 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:42 move second child to first child ( temp int) 0:42 r: direct index for structure (layout( column_major shared) buffer int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 4 (const int) 0:42 Convert bool to int ( temp int) 0:42 subgroupAllEqual ( global bool) 0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 3 (const int) 0:44 move second child to first child ( temp int) 0:44 r: direct index for structure (layout( column_major shared) buffer int) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 4 (const int) 0:44 Construct int ( temp int) 0:44 Convert bool to int ( temp int) 0:44 subgroupAllEqual ( global bool) 0:44 Compare Less Than ( temp bool) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:45 move second child to first child ( temp int) 0:45 r: direct index for structure (layout( column_major shared) buffer int) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 4 (const int) 0:45 Construct int ( temp int) 0:45 Construct ivec2 ( temp 2-component vector of int) 0:45 Convert bool to int ( temp int) 0:45 subgroupAllEqual ( global bool) 0:45 Compare Less Than ( global 2-component vector of bool) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 0 (const int) 0:46 move second child to first child ( temp int) 0:46 r: direct index for structure (layout( column_major shared) buffer int) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 4 (const int) 0:46 Construct int ( temp int) 0:46 Construct ivec3 ( temp 3-component vector of int) 0:46 Convert bool to int ( temp int) 0:46 subgroupAllEqual ( global bool) 0:46 Compare Less Than ( global 3-component vector of bool) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 0 (const int) 0:46 0 (const int) 0:47 move second child to first child ( temp int) 0:47 r: direct index for structure (layout( column_major shared) buffer int) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 4 (const int) 0:47 Construct int ( temp int) 0:47 Construct ivec4 ( temp 4-component vector of int) 0:47 Convert bool to int ( temp int) 0:47 subgroupAllEqual ( global bool) 0:47 Compare Less Than ( global 4-component vector of bool) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 0 (const int) 0:47 0 (const int) 0:47 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_vote local_size = (8, 8, 1) 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 Sequence 0:18 move second child to first child ( temp uint) 0:18 'invocation' ( temp uint) 0:18 mod ( temp uint) 0:18 add ( temp uint) 0:18 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:18 'gl_SubgroupSize' ( in uint SubgroupSize) 0:18 Constant: 0:18 4 (const uint) 0:20 Test condition and select ( temp void) 0:20 Condition 0:20 subgroupAll ( global bool) 0:20 Compare Less Than ( temp bool) 0:20 r: direct index for structure (layout( column_major shared) buffer int) 0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:20 'invocation' ( temp uint) 0:20 Constant: 0:20 4 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 true case 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 r: direct index for structure (layout( column_major shared) buffer int) 0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:22 'invocation' ( temp uint) 0:22 Constant: 0:22 4 (const int) 0:22 Convert bool to int ( temp int) 0:22 subgroupAllEqual ( global bool) 0:22 direct index ( temp float) 0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 move second child to first child ( temp int) 0:23 r: direct index for structure (layout( column_major shared) buffer int) 0:23 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:23 'invocation' ( temp uint) 0:23 Constant: 0:23 4 (const int) 0:23 Convert bool to int ( temp int) 0:23 subgroupAllEqual ( global bool) 0:23 vector swizzle ( temp 2-component vector of float) 0:23 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Sequence 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:24 move second child to first child ( temp int) 0:24 r: direct index for structure (layout( column_major shared) buffer int) 0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:24 'invocation' ( temp uint) 0:24 Constant: 0:24 4 (const int) 0:24 Convert bool to int ( temp int) 0:24 subgroupAllEqual ( global bool) 0:24 vector swizzle ( temp 3-component vector of float) 0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 2 (const int) 0:25 move second child to first child ( temp int) 0:25 r: direct index for structure (layout( column_major shared) buffer int) 0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:25 'invocation' ( temp uint) 0:25 Constant: 0:25 4 (const int) 0:25 Convert bool to int ( temp int) 0:25 subgroupAllEqual ( global bool) 0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:25 Constant: 0:25 3 (const int) 0:25 Constant: 0:25 0 (const int) 0:27 move second child to first child ( temp int) 0:27 r: direct index for structure (layout( column_major shared) buffer int) 0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:27 'invocation' ( temp uint) 0:27 Constant: 0:27 4 (const int) 0:27 Convert bool to int ( temp int) 0:27 subgroupAllEqual ( global bool) 0:27 direct index ( temp int) 0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 0 (const int) 0:28 move second child to first child ( temp int) 0:28 r: direct index for structure (layout( column_major shared) buffer int) 0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:28 'invocation' ( temp uint) 0:28 Constant: 0:28 4 (const int) 0:28 Convert bool to int ( temp int) 0:28 subgroupAllEqual ( global bool) 0:28 vector swizzle ( temp 2-component vector of int) 0:28 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Sequence 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:29 move second child to first child ( temp int) 0:29 r: direct index for structure (layout( column_major shared) buffer int) 0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:29 'invocation' ( temp uint) 0:29 Constant: 0:29 4 (const int) 0:29 Convert bool to int ( temp int) 0:29 subgroupAllEqual ( global bool) 0:29 vector swizzle ( temp 3-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:30 move second child to first child ( temp int) 0:30 r: direct index for structure (layout( column_major shared) buffer int) 0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:30 'invocation' ( temp uint) 0:30 Constant: 0:30 4 (const int) 0:30 Convert bool to int ( temp int) 0:30 subgroupAllEqual ( global bool) 0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 1 (const int) 0:32 move second child to first child ( temp int) 0:32 r: direct index for structure (layout( column_major shared) buffer int) 0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:32 'invocation' ( temp uint) 0:32 Constant: 0:32 4 (const int) 0:32 Convert bool to int ( temp int) 0:32 subgroupAllEqual ( global bool) 0:32 direct index ( temp uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 move second child to first child ( temp int) 0:33 r: direct index for structure (layout( column_major shared) buffer int) 0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:33 'invocation' ( temp uint) 0:33 Constant: 0:33 4 (const int) 0:33 Convert bool to int ( temp int) 0:33 subgroupAllEqual ( global bool) 0:33 vector swizzle ( temp 2-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:34 move second child to first child ( temp int) 0:34 r: direct index for structure (layout( column_major shared) buffer int) 0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:34 'invocation' ( temp uint) 0:34 Constant: 0:34 4 (const int) 0:34 Convert bool to int ( temp int) 0:34 subgroupAllEqual ( global bool) 0:34 vector swizzle ( temp 3-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:34 Constant: 0:34 2 (const int) 0:34 Constant: 0:34 2 (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:35 move second child to first child ( temp int) 0:35 r: direct index for structure (layout( column_major shared) buffer int) 0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:35 'invocation' ( temp uint) 0:35 Constant: 0:35 4 (const int) 0:35 Convert bool to int ( temp int) 0:35 subgroupAllEqual ( global bool) 0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 2 (const int) 0:20 false case 0:37 Test condition and select ( temp void) 0:37 Condition 0:37 subgroupAny ( global bool) 0:37 Compare Less Than ( temp bool) 0:37 r: direct index for structure (layout( column_major shared) buffer int) 0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:37 'invocation' ( temp uint) 0:37 Constant: 0:37 4 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 true case 0:39 Sequence 0:39 move second child to first child ( temp int) 0:39 r: direct index for structure (layout( column_major shared) buffer int) 0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:39 'invocation' ( temp uint) 0:39 Constant: 0:39 4 (const int) 0:39 Convert bool to int ( temp int) 0:39 subgroupAllEqual ( global bool) 0:39 direct index ( temp double) 0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 3 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp int) 0:40 r: direct index for structure (layout( column_major shared) buffer int) 0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:40 'invocation' ( temp uint) 0:40 Constant: 0:40 4 (const int) 0:40 Convert bool to int ( temp int) 0:40 subgroupAllEqual ( global bool) 0:40 vector swizzle ( temp 2-component vector of double) 0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 3 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:41 move second child to first child ( temp int) 0:41 r: direct index for structure (layout( column_major shared) buffer int) 0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:41 'invocation' ( temp uint) 0:41 Constant: 0:41 4 (const int) 0:41 Convert bool to int ( temp int) 0:41 subgroupAllEqual ( global bool) 0:41 vector swizzle ( temp 3-component vector of double) 0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 3 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const int) 0:42 move second child to first child ( temp int) 0:42 r: direct index for structure (layout( column_major shared) buffer int) 0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:42 'invocation' ( temp uint) 0:42 Constant: 0:42 4 (const int) 0:42 Convert bool to int ( temp int) 0:42 subgroupAllEqual ( global bool) 0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:42 Constant: 0:42 3 (const int) 0:42 Constant: 0:42 3 (const int) 0:44 move second child to first child ( temp int) 0:44 r: direct index for structure (layout( column_major shared) buffer int) 0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:44 'invocation' ( temp uint) 0:44 Constant: 0:44 4 (const int) 0:44 Construct int ( temp int) 0:44 Convert bool to int ( temp int) 0:44 subgroupAllEqual ( global bool) 0:44 Compare Less Than ( temp bool) 0:44 direct index ( temp int) 0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 0 (const int) 0:45 move second child to first child ( temp int) 0:45 r: direct index for structure (layout( column_major shared) buffer int) 0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:45 'invocation' ( temp uint) 0:45 Constant: 0:45 4 (const int) 0:45 Construct int ( temp int) 0:45 Construct ivec2 ( temp 2-component vector of int) 0:45 Convert bool to int ( temp int) 0:45 subgroupAllEqual ( global bool) 0:45 Compare Less Than ( global 2-component vector of bool) 0:45 vector swizzle ( temp 2-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 0 (const int) 0:46 move second child to first child ( temp int) 0:46 r: direct index for structure (layout( column_major shared) buffer int) 0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:46 'invocation' ( temp uint) 0:46 Constant: 0:46 4 (const int) 0:46 Construct int ( temp int) 0:46 Construct ivec3 ( temp 3-component vector of int) 0:46 Convert bool to int ( temp int) 0:46 subgroupAllEqual ( global bool) 0:46 Compare Less Than ( global 3-component vector of bool) 0:46 vector swizzle ( temp 3-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 0 (const int) 0:46 0 (const int) 0:47 move second child to first child ( temp int) 0:47 r: direct index for structure (layout( column_major shared) buffer int) 0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:47 'invocation' ( temp uint) 0:47 Constant: 0:47 4 (const int) 0:47 Construct int ( temp int) 0:47 Construct ivec4 ( temp 4-component vector of int) 0:47 Convert bool to int ( temp int) 0:47 subgroupAllEqual ( global bool) 0:47 Compare Less Than ( global 4-component vector of bool) 0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 0 (const int) 0:47 0 (const int) 0:47 0 (const int) 0:47 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r}) glslang-16.0.0/Test/baseResults/glsl.460.subgroup.mesh.out000066400000000000000000003371621506534232700232650ustar00rootroot00000000000000glsl.460.subgroup.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: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:298: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:299: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:300: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:301: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 460 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 Requested GL_NV_mesh_shader Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned 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 Sequence 0:77 move second child to first child ( temp 4-component vector of uint) 0:77 'parti' ( temp 4-component vector of uint) 0:77 subgroupPartitionNV ( global 4-component vector of uint) 0:77 'f4' ( in 4-component vector of float) 0:78 subgroupPartitionedAddNV ( global 4-component vector of float) 0:78 'f4' ( in 4-component vector of float) 0:78 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionedMulNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMinNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:82 'ballot' ( temp 4-component vector of uint) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:85 'f4' ( in 4-component vector of float) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:89 'ballot' ( temp 4-component vector of uint) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:92 'f4' ( in 4-component vector of float) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:96 'ballot' ( temp 4-component vector of uint) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:100 Branch: Return with expression 0:100 'result' ( temp 4-component vector of float) 0:120 Function Definition: main( ( global void) 0:120 Function Parameters: 0:122 Sequence 0:122 Sequence 0:122 move second child to first child ( temp uint) 0:122 'iid' ( temp uint) 0:122 direct index ( temp uint) 0:122 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:122 Constant: 0:122 0 (const int) 0:123 Sequence 0:123 move second child to first child ( temp uint) 0:123 'gid' ( temp uint) 0:123 direct index ( temp uint) 0:123 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:123 Constant: 0:123 0 (const int) 0:125 move second child to first child ( temp 4-component vector of float) 0:125 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:125 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:125 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:125 'iid' ( temp uint) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1.000000 0:125 1.000000 0:125 1.000000 0:125 1.000000 0:126 move second child to first child ( temp float) 0:126 gl_PointSize: direct index for structure ( out float PointSize) 0:126 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:126 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:126 'iid' ( temp uint) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2.000000 0:127 move second child to first child ( temp float) 0:127 direct index ( temp float ClipDistance) 0:127 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) 0:127 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:127 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:127 'iid' ( temp uint) 0:127 Constant: 0:127 2 (const int) 0:127 Constant: 0:127 3 (const int) 0:127 Constant: 0:127 3.000000 0:128 move second child to first child ( temp float) 0:128 direct index ( temp float CullDistance) 0:128 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) 0:128 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:128 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:128 'iid' ( temp uint) 0:128 Constant: 0:128 3 (const int) 0:128 Constant: 0:128 2 (const int) 0:128 Constant: 0:128 4.000000 0:130 MemoryBarrierShared ( global void) 0:130 Barrier ( global void) 0:132 move second child to first child ( temp 4-component vector of float) 0:132 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:132 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:132 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:132 add ( temp uint) 0:132 'iid' ( temp uint) 0:132 Constant: 0:132 1 (const uint) 0:132 Constant: 0:132 0 (const int) 0:132 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:132 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:132 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:132 'iid' ( temp uint) 0:132 Constant: 0:132 0 (const int) 0:133 move second child to first child ( temp float) 0:133 gl_PointSize: direct index for structure ( out float PointSize) 0:133 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:133 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:133 add ( temp uint) 0:133 'iid' ( temp uint) 0:133 Constant: 0:133 1 (const uint) 0:133 Constant: 0:133 1 (const int) 0:133 gl_PointSize: direct index for structure ( out float PointSize) 0:133 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:133 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:133 'iid' ( temp uint) 0:133 Constant: 0:133 1 (const int) 0:134 move second child to first child ( temp float) 0:134 direct index ( temp float ClipDistance) 0:134 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) 0:134 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:134 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:134 add ( temp uint) 0:134 'iid' ( temp uint) 0:134 Constant: 0:134 1 (const uint) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 3 (const int) 0:134 direct index ( temp float ClipDistance) 0:134 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) 0:134 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:134 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:134 'iid' ( temp uint) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 3 (const int) 0:135 move second child to first child ( temp float) 0:135 direct index ( temp float CullDistance) 0:135 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) 0:135 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:135 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:135 add ( temp uint) 0:135 'iid' ( temp uint) 0:135 Constant: 0:135 1 (const uint) 0:135 Constant: 0:135 3 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 direct index ( temp float CullDistance) 0:135 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) 0:135 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:135 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:135 'iid' ( temp uint) 0:135 Constant: 0:135 3 (const int) 0:135 Constant: 0:135 2 (const int) 0:137 MemoryBarrierShared ( global void) 0:137 Barrier ( global void) 0:139 move second child to first child ( temp int) 0:139 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) 0:139 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:139 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:139 'iid' ( temp uint) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 6 (const int) 0:140 move second child to first child ( temp int) 0:140 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) 0:140 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:140 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:140 'iid' ( temp uint) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 7 (const int) 0:141 move second child to first child ( temp int) 0:141 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) 0:141 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:141 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:141 'iid' ( temp uint) 0:141 Constant: 0:141 2 (const int) 0:141 Constant: 0:141 8 (const int) 0:142 move second child to first child ( temp int) 0:142 direct index ( perprimitiveNV temp int ViewportMaskNV) 0:142 gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV) 0:142 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:142 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:142 'iid' ( temp uint) 0:142 Constant: 0:142 3 (const int) 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 9 (const int) 0:144 MemoryBarrierShared ( global void) 0:144 Barrier ( global void) 0:146 move second child to first child ( temp int) 0:146 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) 0:146 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:146 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:146 add ( temp uint) 0:146 'iid' ( temp uint) 0:146 Constant: 0:146 1 (const uint) 0:146 Constant: 0:146 0 (const int) 0:146 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) 0:146 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:146 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:146 'iid' ( temp uint) 0:146 Constant: 0:146 0 (const int) 0:147 move second child to first child ( temp int) 0:147 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) 0:147 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:147 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:147 add ( temp uint) 0:147 'iid' ( temp uint) 0:147 Constant: 0:147 1 (const uint) 0:147 Constant: 0:147 1 (const int) 0:147 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) 0:147 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:147 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:147 'iid' ( temp uint) 0:147 Constant: 0:147 1 (const int) 0:148 move second child to first child ( temp int) 0:148 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) 0:148 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:148 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:148 add ( temp uint) 0:148 'iid' ( temp uint) 0:148 Constant: 0:148 1 (const uint) 0:148 Constant: 0:148 2 (const int) 0:148 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) 0:148 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:148 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:148 'iid' ( temp uint) 0:148 Constant: 0:148 2 (const int) 0:149 move second child to first child ( temp int) 0:149 direct index ( perprimitiveNV temp int ViewportMaskNV) 0:149 gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV) 0:149 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:149 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:149 add ( temp uint) 0:149 'iid' ( temp uint) 0:149 Constant: 0:149 1 (const uint) 0:149 Constant: 0:149 3 (const int) 0:149 Constant: 0:149 0 (const int) 0:149 direct index ( perprimitiveNV temp int ViewportMaskNV) 0:149 gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV) 0:149 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:149 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:149 'iid' ( temp uint) 0:149 Constant: 0:149 3 (const int) 0:149 Constant: 0:149 0 (const int) 0:151 MemoryBarrierShared ( global void) 0:151 Barrier ( global void) 0:154 move second child to first child ( temp uint) 0:154 direct index ( temp uint PrimitiveIndicesNV) 0:154 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 257 (const uint) 0:155 move second child to first child ( temp uint) 0:155 direct index ( temp uint PrimitiveIndicesNV) 0:155 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) 0:155 Constant: 0:155 95 (const int) 0:155 Constant: 0:155 2 (const uint) 0:156 move second child to first child ( temp uint) 0:156 indirect index ( temp uint PrimitiveIndicesNV) 0:156 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) 0:156 'gid' ( temp uint) 0:156 indirect index ( temp uint PrimitiveIndicesNV) 0:156 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) 0:156 subtract ( temp uint) 0:156 'gid' ( temp uint) 0:156 Constant: 0:156 1 (const uint) 0:159 writePackedPrimitiveIndices4x8NV ( global void) 0:159 Convert int to uint ( temp uint) 0:159 'gl_DrawID' ( in int DrawId) 0:159 Constant: 0:159 16909060 (const uint) 0:161 move second child to first child ( temp uint) 0:161 'gl_PrimitiveCountNV' ( out uint PrimitiveCountNV) 0:161 Constant: 0:161 96 (const uint) 0:163 MemoryBarrierShared ( global void) 0:163 Barrier ( global void) 0:167 Function Definition: basic_works( ( global void) 0:167 Function Parameters: 0:169 Sequence 0:169 'gl_SubgroupSize' ( in uint SubgroupSize) 0:170 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:171 subgroupBarrier ( global void) 0:172 subgroupMemoryBarrier ( global void) 0:173 subgroupMemoryBarrierBuffer ( global void) 0:174 subgroupMemoryBarrierImage ( global void) 0:175 subgroupElect ( global bool) 0:176 'gl_NumSubgroups' ( in uint NumSubgroups) 0:177 'gl_SubgroupID' ( in uint SubgroupID) 0:178 subgroupMemoryBarrierShared ( global void) 0:182 Function Definition: ballot_works(vf4; ( global void) 0:182 Function Parameters: 0:182 'f4' ( in 4-component vector of float) 0:183 Sequence 0:183 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:184 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:185 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:186 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:187 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:188 subgroupBroadcast ( 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 subgroupBroadcastFirst ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:190 Sequence 0:190 move second child to first child ( temp 4-component vector of uint) 0:190 'ballot' ( temp 4-component vector of uint) 0:190 subgroupBallot ( global 4-component vector of uint) 0:190 Constant: 0:190 false (const bool) 0:191 subgroupInverseBallot ( global bool) 0:191 Constant: 0:191 1 (const uint) 0:191 1 (const uint) 0:191 1 (const uint) 0:191 1 (const uint) 0:192 subgroupBallotBitExtract ( global bool) 0:192 'ballot' ( temp 4-component vector of uint) 0:192 Constant: 0:192 0 (const uint) 0:193 subgroupBallotBitCount ( global uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:194 subgroupBallotInclusiveBitCount ( global uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:195 subgroupBallotExclusiveBitCount ( global uint) 0:195 'ballot' ( temp 4-component vector of uint) 0:196 subgroupBallotFindLSB ( global uint) 0:196 'ballot' ( temp 4-component vector of uint) 0:197 subgroupBallotFindMSB ( global uint) 0:197 'ballot' ( temp 4-component vector of uint) 0:201 Function Definition: vote_works(vf4; ( global void) 0:201 Function Parameters: 0:201 'f4' ( in 4-component vector of float) 0:203 Sequence 0:203 subgroupAll ( global bool) 0:203 Constant: 0:203 true (const bool) 0:204 subgroupAny ( global bool) 0:204 Constant: 0:204 false (const bool) 0:205 subgroupAllEqual ( global bool) 0:205 'f4' ( in 4-component vector of float) 0:210 Function Definition: shuffle_works(vf4; ( global void) 0:210 Function Parameters: 0:210 'f4' ( in 4-component vector of float) 0:212 Sequence 0:212 subgroupShuffle ( global 4-component vector of float) 0:212 'f4' ( in 4-component vector of float) 0:212 Constant: 0:212 0 (const uint) 0:213 subgroupShuffleXor ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:213 Constant: 0:213 1 (const uint) 0:214 subgroupShuffleUp ( global 4-component vector of float) 0:214 'f4' ( in 4-component vector of float) 0:214 Constant: 0:214 1 (const uint) 0:215 subgroupShuffleDown ( global 4-component vector of float) 0:215 'f4' ( in 4-component vector of float) 0:215 Constant: 0:215 1 (const uint) 0:219 Function Definition: arith_works(vf4; ( global void) 0:219 Function Parameters: 0:219 'f4' ( in 4-component vector of float) 0:? Sequence 0:222 subgroupAdd ( global 4-component vector of float) 0:222 'f4' ( in 4-component vector of float) 0:223 subgroupMul ( global 4-component vector of float) 0:223 'f4' ( in 4-component vector of float) 0:224 subgroupMin ( global 4-component vector of float) 0:224 'f4' ( in 4-component vector of float) 0:225 subgroupMax ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:226 subgroupAnd ( global 4-component vector of uint) 0:226 'ballot' ( temp 4-component vector of uint) 0:227 subgroupOr ( global 4-component vector of uint) 0:227 'ballot' ( temp 4-component vector of uint) 0:228 subgroupXor ( global 4-component vector of uint) 0:228 'ballot' ( temp 4-component vector of uint) 0:229 subgroupInclusiveAdd ( global 4-component vector of float) 0:229 'f4' ( in 4-component vector of float) 0:230 subgroupInclusiveMul ( global 4-component vector of float) 0:230 'f4' ( in 4-component vector of float) 0:231 subgroupInclusiveMin ( global 4-component vector of float) 0:231 'f4' ( in 4-component vector of float) 0:232 subgroupInclusiveMax ( global 4-component vector of float) 0:232 'f4' ( in 4-component vector of float) 0:233 subgroupInclusiveAnd ( global 4-component vector of uint) 0:233 'ballot' ( temp 4-component vector of uint) 0:234 subgroupInclusiveOr ( global 4-component vector of uint) 0:234 'ballot' ( temp 4-component vector of uint) 0:235 subgroupInclusiveXor ( global 4-component vector of uint) 0:235 'ballot' ( temp 4-component vector of uint) 0:236 subgroupExclusiveAdd ( global 4-component vector of float) 0:236 'f4' ( in 4-component vector of float) 0:237 subgroupExclusiveMul ( global 4-component vector of float) 0:237 'f4' ( in 4-component vector of float) 0:238 subgroupExclusiveMin ( global 4-component vector of float) 0:238 'f4' ( in 4-component vector of float) 0:239 subgroupExclusiveMax ( global 4-component vector of float) 0:239 'f4' ( in 4-component vector of float) 0:240 subgroupExclusiveAnd ( global 4-component vector of uint) 0:240 'ballot' ( temp 4-component vector of uint) 0:241 subgroupExclusiveOr ( global 4-component vector of uint) 0:241 'ballot' ( temp 4-component vector of uint) 0:242 subgroupExclusiveXor ( global 4-component vector of uint) 0:242 'ballot' ( temp 4-component vector of uint) 0:246 Function Definition: clustered_works(vf4; ( global void) 0:246 Function Parameters: 0:246 'f4' ( in 4-component vector of float) 0:248 Sequence 0:248 Sequence 0:248 move second child to first child ( temp 4-component vector of uint) 0:248 'ballot' ( temp 4-component vector of uint) 0:248 Constant: 0:248 85 (const uint) 0:248 0 (const uint) 0:248 0 (const uint) 0:248 0 (const uint) 0:249 subgroupClusteredAdd ( global 4-component vector of float) 0:249 'f4' ( in 4-component vector of float) 0:249 Constant: 0:249 2 (const uint) 0:250 subgroupClusteredMul ( global 4-component vector of float) 0:250 'f4' ( in 4-component vector of float) 0:250 Constant: 0:250 2 (const uint) 0:251 subgroupClusteredMin ( global 4-component vector of float) 0:251 'f4' ( in 4-component vector of float) 0:251 Constant: 0:251 2 (const uint) 0:252 subgroupClusteredMax ( global 4-component vector of float) 0:252 'f4' ( in 4-component vector of float) 0:252 Constant: 0:252 2 (const uint) 0:253 subgroupClusteredAnd ( global 4-component vector of uint) 0:253 'ballot' ( temp 4-component vector of uint) 0:253 Constant: 0:253 2 (const uint) 0:254 subgroupClusteredOr ( global 4-component vector of uint) 0:254 'ballot' ( temp 4-component vector of uint) 0:254 Constant: 0:254 2 (const uint) 0:255 subgroupClusteredXor ( global 4-component vector of uint) 0:255 'ballot' ( temp 4-component vector of uint) 0:255 Constant: 0:255 2 (const uint) 0:259 Function Definition: quad_works(vf4; ( global void) 0:259 Function Parameters: 0:259 'f4' ( in 4-component vector of float) 0:261 Sequence 0:261 subgroupQuadBroadcast ( global 4-component vector of float) 0:261 'f4' ( in 4-component vector of float) 0:261 Constant: 0:261 0 (const uint) 0:262 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:262 'f4' ( in 4-component vector of float) 0:263 subgroupQuadSwapVertical ( global 4-component vector of float) 0:263 'f4' ( in 4-component vector of float) 0:264 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:264 'f4' ( in 4-component vector of float) 0:268 Function Definition: partitioned_works(vf4; ( global void) 0:268 Function Parameters: 0:268 'f4' ( in 4-component vector of float) 0:270 Sequence 0:270 Sequence 0:270 move second child to first child ( temp 4-component vector of uint) 0:270 'parti' ( temp 4-component vector of uint) 0:270 subgroupPartitionNV ( global 4-component vector of uint) 0:270 'f4' ( in 4-component vector of float) 0:271 Sequence 0:271 move second child to first child ( temp 4-component vector of uint) 0:271 'ballot' ( temp 4-component vector of uint) 0:271 Constant: 0:271 85 (const uint) 0:271 0 (const uint) 0:271 0 (const uint) 0:271 0 (const uint) 0:272 subgroupPartitionedAddNV ( global 4-component vector of float) 0:272 'f4' ( in 4-component vector of float) 0:272 'parti' ( temp 4-component vector of uint) 0:273 subgroupPartitionedMulNV ( global 4-component vector of float) 0:273 'f4' ( in 4-component vector of float) 0:273 'parti' ( temp 4-component vector of uint) 0:274 subgroupPartitionedMinNV ( global 4-component vector of float) 0:274 'f4' ( in 4-component vector of float) 0:274 'parti' ( temp 4-component vector of uint) 0:275 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:275 'f4' ( in 4-component vector of float) 0:275 'parti' ( temp 4-component vector of uint) 0:276 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:276 'ballot' ( temp 4-component vector of uint) 0:276 'parti' ( temp 4-component vector of uint) 0:277 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:277 'ballot' ( temp 4-component vector of uint) 0:277 'parti' ( temp 4-component vector of uint) 0:278 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:278 'ballot' ( temp 4-component vector of uint) 0:278 'parti' ( temp 4-component vector of uint) 0:279 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:279 'f4' ( in 4-component vector of float) 0:279 'parti' ( temp 4-component vector of uint) 0:280 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:280 'f4' ( in 4-component vector of float) 0:280 'parti' ( temp 4-component vector of uint) 0:281 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:281 'f4' ( in 4-component vector of float) 0:281 'parti' ( temp 4-component vector of uint) 0:282 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:282 'f4' ( in 4-component vector of float) 0:282 'parti' ( temp 4-component vector of uint) 0:283 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:283 'ballot' ( temp 4-component vector of uint) 0:283 'parti' ( temp 4-component vector of uint) 0:284 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:284 'ballot' ( temp 4-component vector of uint) 0:284 'parti' ( temp 4-component vector of uint) 0:285 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:285 'ballot' ( temp 4-component vector of uint) 0:285 'parti' ( temp 4-component vector of uint) 0:286 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:286 'f4' ( in 4-component vector of float) 0:286 'parti' ( temp 4-component vector of uint) 0:287 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:287 'f4' ( in 4-component vector of float) 0:287 'parti' ( temp 4-component vector of uint) 0:288 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:288 'f4' ( in 4-component vector of float) 0:288 'parti' ( temp 4-component vector of uint) 0:289 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:289 'f4' ( in 4-component vector of float) 0:289 'parti' ( temp 4-component vector of uint) 0:290 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:290 'ballot' ( temp 4-component vector of uint) 0:290 'parti' ( temp 4-component vector of uint) 0:291 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:291 'ballot' ( temp 4-component vector of uint) 0:291 'parti' ( temp 4-component vector of uint) 0:292 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:292 'ballot' ( temp 4-component vector of uint) 0:292 'parti' ( temp 4-component vector of uint) 0:296 Function Definition: sm_builtins_err( ( global void) 0:296 Function Parameters: 0:298 Sequence 0:298 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:299 'gl_SMCountNV' ( in uint SMCountNV) 0:300 'gl_WarpIDNV' ( in uint WarpIDNV) 0:301 'gl_SMIDNV' ( in uint SMIDNV) 0:308 Function Definition: sm_builtins( ( global void) 0:308 Function Parameters: 0:310 Sequence 0:310 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:311 'gl_SMCountNV' ( in uint SMCountNV) 0:312 'gl_WarpIDNV' ( in uint WarpIDNV) 0:313 'gl_SMIDNV' ( in uint SMIDNV) 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_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:? 'gl_MeshPrimitivesNV' ( 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 unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:? 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) Linked mesh stage: Shader version: 460 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 Requested GL_NV_mesh_shader Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned max_vertices = 81 max_primitives = 32 output primitive = triangles local_size = (32, 1, 1) ERROR: node is still EOpNull! 0:120 Function Definition: main( ( global void) 0:120 Function Parameters: 0:122 Sequence 0:122 Sequence 0:122 move second child to first child ( temp uint) 0:122 'iid' ( temp uint) 0:122 direct index ( temp uint) 0:122 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:122 Constant: 0:122 0 (const int) 0:123 Sequence 0:123 move second child to first child ( temp uint) 0:123 'gid' ( temp uint) 0:123 direct index ( temp uint) 0:123 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:123 Constant: 0:123 0 (const int) 0:125 move second child to first child ( temp 4-component vector of float) 0:125 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:125 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:125 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:125 'iid' ( temp uint) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1.000000 0:125 1.000000 0:125 1.000000 0:125 1.000000 0:126 move second child to first child ( temp float) 0:126 gl_PointSize: direct index for structure ( out float PointSize) 0:126 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:126 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:126 'iid' ( temp uint) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 2.000000 0:127 move second child to first child ( temp float) 0:127 direct index ( temp float ClipDistance) 0:127 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) 0:127 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:127 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:127 'iid' ( temp uint) 0:127 Constant: 0:127 2 (const int) 0:127 Constant: 0:127 3 (const int) 0:127 Constant: 0:127 3.000000 0:128 move second child to first child ( temp float) 0:128 direct index ( temp float CullDistance) 0:128 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:128 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:128 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:128 'iid' ( temp uint) 0:128 Constant: 0:128 3 (const int) 0:128 Constant: 0:128 2 (const int) 0:128 Constant: 0:128 4.000000 0:130 MemoryBarrierShared ( global void) 0:130 Barrier ( global void) 0:132 move second child to first child ( temp 4-component vector of float) 0:132 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:132 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:132 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:132 add ( temp uint) 0:132 'iid' ( temp uint) 0:132 Constant: 0:132 1 (const uint) 0:132 Constant: 0:132 0 (const int) 0:132 gl_Position: direct index for structure ( out 4-component vector of float Position) 0:132 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:132 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:132 'iid' ( temp uint) 0:132 Constant: 0:132 0 (const int) 0:133 move second child to first child ( temp float) 0:133 gl_PointSize: direct index for structure ( out float PointSize) 0:133 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:133 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:133 add ( temp uint) 0:133 'iid' ( temp uint) 0:133 Constant: 0:133 1 (const uint) 0:133 Constant: 0:133 1 (const int) 0:133 gl_PointSize: direct index for structure ( out float PointSize) 0:133 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:133 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:133 'iid' ( temp uint) 0:133 Constant: 0:133 1 (const int) 0:134 move second child to first child ( temp float) 0:134 direct index ( temp float ClipDistance) 0:134 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) 0:134 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:134 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:134 add ( temp uint) 0:134 'iid' ( temp uint) 0:134 Constant: 0:134 1 (const uint) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 3 (const int) 0:134 direct index ( temp float ClipDistance) 0:134 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) 0:134 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:134 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:134 'iid' ( temp uint) 0:134 Constant: 0:134 2 (const int) 0:134 Constant: 0:134 3 (const int) 0:135 move second child to first child ( temp float) 0:135 direct index ( temp float CullDistance) 0:135 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:135 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:135 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:135 add ( temp uint) 0:135 'iid' ( temp uint) 0:135 Constant: 0:135 1 (const uint) 0:135 Constant: 0:135 3 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 direct index ( temp float CullDistance) 0:135 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) 0:135 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:135 'gl_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:135 'iid' ( temp uint) 0:135 Constant: 0:135 3 (const int) 0:135 Constant: 0:135 2 (const int) 0:137 MemoryBarrierShared ( global void) 0:137 Barrier ( global void) 0:139 move second child to first child ( temp int) 0:139 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) 0:139 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:139 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:139 'iid' ( temp uint) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 6 (const int) 0:140 move second child to first child ( temp int) 0:140 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) 0:140 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:140 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:140 'iid' ( temp uint) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 7 (const int) 0:141 move second child to first child ( temp int) 0:141 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) 0:141 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:141 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:141 'iid' ( temp uint) 0:141 Constant: 0:141 2 (const int) 0:141 Constant: 0:141 8 (const int) 0:142 move second child to first child ( temp int) 0:142 direct index ( perprimitiveNV temp int ViewportMaskNV) 0:142 gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV) 0:142 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:142 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:142 'iid' ( temp uint) 0:142 Constant: 0:142 3 (const int) 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 9 (const int) 0:144 MemoryBarrierShared ( global void) 0:144 Barrier ( global void) 0:146 move second child to first child ( temp int) 0:146 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) 0:146 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:146 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:146 add ( temp uint) 0:146 'iid' ( temp uint) 0:146 Constant: 0:146 1 (const uint) 0:146 Constant: 0:146 0 (const int) 0:146 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) 0:146 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:146 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:146 'iid' ( temp uint) 0:146 Constant: 0:146 0 (const int) 0:147 move second child to first child ( temp int) 0:147 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) 0:147 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:147 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:147 add ( temp uint) 0:147 'iid' ( temp uint) 0:147 Constant: 0:147 1 (const uint) 0:147 Constant: 0:147 1 (const int) 0:147 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) 0:147 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:147 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:147 'iid' ( temp uint) 0:147 Constant: 0:147 1 (const int) 0:148 move second child to first child ( temp int) 0:148 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) 0:148 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:148 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:148 add ( temp uint) 0:148 'iid' ( temp uint) 0:148 Constant: 0:148 1 (const uint) 0:148 Constant: 0:148 2 (const int) 0:148 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) 0:148 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:148 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:148 'iid' ( temp uint) 0:148 Constant: 0:148 2 (const int) 0:149 move second child to first child ( temp int) 0:149 direct index ( perprimitiveNV temp int ViewportMaskNV) 0:149 gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV) 0:149 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:149 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:149 add ( temp uint) 0:149 'iid' ( temp uint) 0:149 Constant: 0:149 1 (const uint) 0:149 Constant: 0:149 3 (const int) 0:149 Constant: 0:149 0 (const int) 0:149 direct index ( perprimitiveNV temp int ViewportMaskNV) 0:149 gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV) 0:149 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:149 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:149 'iid' ( temp uint) 0:149 Constant: 0:149 3 (const int) 0:149 Constant: 0:149 0 (const int) 0:151 MemoryBarrierShared ( global void) 0:151 Barrier ( global void) 0:154 move second child to first child ( temp uint) 0:154 direct index ( temp uint PrimitiveIndicesNV) 0:154 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 257 (const uint) 0:155 move second child to first child ( temp uint) 0:155 direct index ( temp uint PrimitiveIndicesNV) 0:155 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) 0:155 Constant: 0:155 95 (const int) 0:155 Constant: 0:155 2 (const uint) 0:156 move second child to first child ( temp uint) 0:156 indirect index ( temp uint PrimitiveIndicesNV) 0:156 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) 0:156 'gid' ( temp uint) 0:156 indirect index ( temp uint PrimitiveIndicesNV) 0:156 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) 0:156 subtract ( temp uint) 0:156 'gid' ( temp uint) 0:156 Constant: 0:156 1 (const uint) 0:159 writePackedPrimitiveIndices4x8NV ( global void) 0:159 Convert int to uint ( temp uint) 0:159 'gl_DrawID' ( in int DrawId) 0:159 Constant: 0:159 16909060 (const uint) 0:161 move second child to first child ( temp uint) 0:161 'gl_PrimitiveCountNV' ( out uint PrimitiveCountNV) 0:161 Constant: 0:161 96 (const uint) 0:163 MemoryBarrierShared ( global void) 0:163 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_MeshVerticesNV' ( 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, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) 0:? 'gl_MeshPrimitivesNV' ( 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 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) 0:? 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) glslang-16.0.0/Test/baseResults/glsl.460.subgroup.rahit.out000066400000000000000000001272221506534232700234320ustar00rootroot00000000000000glsl.460.subgroup.rahit ERROR: 0:7: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:8: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:22: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:23: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:24: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:25: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:26: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:259: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:260: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:261: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:262: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:4 Function Parameters: 0:4 'f4' ( in 4-component vector of float) 0:? Sequence 0:7 'gl_SubgroupSize' ( in uint SubgroupSize) 0:8 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:9 subgroupBarrier ( global void) 0:10 subgroupMemoryBarrier ( global void) 0:11 subgroupMemoryBarrierBuffer ( global void) 0:12 subgroupMemoryBarrierImage ( global void) 0:13 subgroupElect ( global bool) 0:14 'gl_NumSubgroups' ( temp float) 0:15 'gl_SubgroupID' ( temp float) 0:16 Constant: 0:16 0.000000 0:18 subgroupAll ( global bool) 0:18 Constant: 0:18 true (const bool) 0:19 subgroupAny ( global bool) 0:19 Constant: 0:19 false (const bool) 0:20 subgroupAllEqual ( global bool) 0:20 'f4' ( in 4-component vector of float) 0:22 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:23 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:24 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:25 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:26 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:27 subgroupBroadcast ( global 4-component vector of float) 0:27 'f4' ( in 4-component vector of float) 0:27 Constant: 0:27 0 (const uint) 0:28 subgroupBroadcastFirst ( global 4-component vector of float) 0:28 'f4' ( in 4-component vector of float) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'ballot' ( temp 4-component vector of uint) 0:29 subgroupBallot ( global 4-component vector of uint) 0:29 Constant: 0:29 false (const bool) 0:30 subgroupInverseBallot ( global bool) 0:30 Constant: 0:30 1 (const uint) 0:30 1 (const uint) 0:30 1 (const uint) 0:30 1 (const uint) 0:31 subgroupBallotBitExtract ( global bool) 0:31 'ballot' ( temp 4-component vector of uint) 0:31 Constant: 0:31 0 (const uint) 0:32 subgroupBallotBitCount ( global uint) 0:32 'ballot' ( temp 4-component vector of uint) 0:33 subgroupBallotInclusiveBitCount ( global uint) 0:33 'ballot' ( temp 4-component vector of uint) 0:34 subgroupBallotExclusiveBitCount ( global uint) 0:34 'ballot' ( temp 4-component vector of uint) 0:35 subgroupBallotFindLSB ( global uint) 0:35 'ballot' ( temp 4-component vector of uint) 0:36 subgroupBallotFindMSB ( global uint) 0:36 'ballot' ( temp 4-component vector of uint) 0:38 subgroupShuffle ( global 4-component vector of float) 0:38 'f4' ( in 4-component vector of float) 0:38 Constant: 0:38 0 (const uint) 0:39 subgroupShuffleXor ( 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 subgroupShuffleUp ( global 4-component vector of float) 0:40 'f4' ( in 4-component vector of float) 0:40 Constant: 0:40 1 (const uint) 0:41 subgroupShuffleDown ( global 4-component vector of float) 0:41 'f4' ( in 4-component vector of float) 0:41 Constant: 0:41 1 (const uint) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'result' ( temp 4-component vector of float) 0:43 subgroupAdd ( global 4-component vector of float) 0:43 'f4' ( in 4-component vector of float) 0:44 subgroupMul ( global 4-component vector of float) 0:44 'f4' ( in 4-component vector of float) 0:45 subgroupMin ( global 4-component vector of float) 0:45 'f4' ( in 4-component vector of float) 0:46 subgroupMax ( global 4-component vector of float) 0:46 'f4' ( in 4-component vector of float) 0:47 subgroupAnd ( global 4-component vector of uint) 0:47 'ballot' ( temp 4-component vector of uint) 0:48 subgroupOr ( global 4-component vector of uint) 0:48 'ballot' ( temp 4-component vector of uint) 0:49 subgroupXor ( global 4-component vector of uint) 0:49 'ballot' ( temp 4-component vector of uint) 0:50 subgroupInclusiveAdd ( global 4-component vector of float) 0:50 'f4' ( in 4-component vector of float) 0:51 subgroupInclusiveMul ( global 4-component vector of float) 0:51 'f4' ( in 4-component vector of float) 0:52 subgroupInclusiveMin ( global 4-component vector of float) 0:52 'f4' ( in 4-component vector of float) 0:53 subgroupInclusiveMax ( global 4-component vector of float) 0:53 'f4' ( in 4-component vector of float) 0:54 subgroupInclusiveAnd ( global 4-component vector of uint) 0:54 'ballot' ( temp 4-component vector of uint) 0:55 subgroupInclusiveOr ( global 4-component vector of uint) 0:55 'ballot' ( temp 4-component vector of uint) 0:56 subgroupInclusiveXor ( global 4-component vector of uint) 0:56 'ballot' ( temp 4-component vector of uint) 0:57 subgroupExclusiveAdd ( global 4-component vector of float) 0:57 'f4' ( in 4-component vector of float) 0:58 subgroupExclusiveMul ( global 4-component vector of float) 0:58 'f4' ( in 4-component vector of float) 0:59 subgroupExclusiveMin ( global 4-component vector of float) 0:59 'f4' ( in 4-component vector of float) 0:60 subgroupExclusiveMax ( global 4-component vector of float) 0:60 'f4' ( in 4-component vector of float) 0:61 subgroupExclusiveAnd ( global 4-component vector of uint) 0:61 'ballot' ( temp 4-component vector of uint) 0:62 subgroupExclusiveOr ( global 4-component vector of uint) 0:62 'ballot' ( temp 4-component vector of uint) 0:63 subgroupExclusiveXor ( global 4-component vector of uint) 0:63 'ballot' ( temp 4-component vector of uint) 0:65 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( 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 subgroupClusteredMax ( global 4-component vector of float) 0:68 'f4' ( in 4-component vector of float) 0:68 Constant: 0:68 2 (const uint) 0:69 subgroupClusteredAnd ( 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 subgroupClusteredOr ( global 4-component vector of uint) 0:70 'ballot' ( temp 4-component vector of uint) 0:70 Constant: 0:70 2 (const uint) 0:71 subgroupClusteredXor ( global 4-component vector of uint) 0:71 'ballot' ( temp 4-component vector of uint) 0:71 Constant: 0:71 2 (const uint) 0:73 subgroupQuadBroadcast ( global 4-component vector of float) 0:73 'f4' ( in 4-component vector of float) 0:73 Constant: 0:73 0 (const uint) 0:74 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:74 'f4' ( in 4-component vector of float) 0:75 subgroupQuadSwapVertical ( global 4-component vector of float) 0:75 'f4' ( in 4-component vector of float) 0:76 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:76 'f4' ( in 4-component vector of float) 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of uint) 0:78 'parti' ( temp 4-component vector of uint) 0:78 subgroupPartitionNV ( global 4-component vector of uint) 0:78 'f4' ( in 4-component vector of float) 0:79 subgroupPartitionedAddNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMulNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMinNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:82 'f4' ( in 4-component vector of float) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:85 'ballot' ( temp 4-component vector of uint) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:89 'f4' ( in 4-component vector of float) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:92 'ballot' ( temp 4-component vector of uint) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:96 'f4' ( in 4-component vector of float) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:99 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:99 'ballot' ( temp 4-component vector of uint) 0:99 'parti' ( temp 4-component vector of uint) 0:101 Branch: Return with expression 0:101 'result' ( temp 4-component vector of float) 0:106 Function Definition: main( ( global void) 0:106 Function Parameters: 0:108 Sequence 0:108 Sequence 0:108 move second child to first child ( temp 3-component vector of uint) 0:108 'v0' ( temp 3-component vector of uint) 0:108 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:109 Sequence 0:109 move second child to first child ( temp 3-component vector of uint) 0:109 'v1' ( temp 3-component vector of uint) 0:109 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:110 Sequence 0:110 move second child to first child ( temp int) 0:110 'v2' ( temp int) 0:110 'gl_PrimitiveID' ( in int PrimitiveID) 0:111 Sequence 0:111 move second child to first child ( temp int) 0:111 'v3' ( temp int) 0:111 'gl_InstanceID' ( in int InstanceId) 0:112 Sequence 0:112 move second child to first child ( temp int) 0:112 'v4' ( temp int) 0:112 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) 0:113 Sequence 0:113 move second child to first child ( temp 3-component vector of float) 0:113 'v5' ( temp 3-component vector of float) 0:113 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) 0:114 Sequence 0:114 move second child to first child ( temp 3-component vector of float) 0:114 'v6' ( temp 3-component vector of float) 0:114 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) 0:115 Sequence 0:115 move second child to first child ( temp 3-component vector of float) 0:115 'v7' ( temp 3-component vector of float) 0:115 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v8' ( temp 3-component vector of float) 0:116 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) 0:117 Sequence 0:117 move second child to first child ( temp float) 0:117 'v9' ( temp float) 0:117 'gl_RayTminNV' ( in float ObjectRayTminNV) 0:118 Sequence 0:118 move second child to first child ( temp float) 0:118 'v10' ( temp float) 0:118 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v11' ( temp float) 0:119 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:120 Sequence 0:120 move second child to first child ( temp uint) 0:120 'v12' ( temp uint) 0:120 'gl_HitKindNV' ( in uint HitKindNV) 0:121 Sequence 0:121 move second child to first child ( temp 4X3 matrix of float) 0:121 'v13' ( temp 4X3 matrix of float) 0:121 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) 0:122 Sequence 0:122 move second child to first child ( temp 4X3 matrix of float) 0:122 'v14' ( temp 4X3 matrix of float) 0:122 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) 0:123 move second child to first child ( temp 4-component vector of float) 0:123 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) 0:123 Constant: 0:123 0.500000 0:123 0.500000 0:123 0.500000 0:123 0.500000 0:124 Test condition and select ( temp void) 0:124 Condition 0:124 Compare Equal ( temp bool) 0:124 'v2' ( temp int) 0:124 Constant: 0:124 1 (const int) 0:124 true case 0:125 ignoreIntersectionNV ( global void) 0:124 false case 0:127 terminateRayNV ( global void) 0:131 Function Definition: basic_works( ( global void) 0:131 Function Parameters: 0:133 Sequence 0:133 'gl_SubgroupSize' ( in uint SubgroupSize) 0:134 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:135 subgroupBarrier ( global void) 0:136 subgroupMemoryBarrier ( global void) 0:137 subgroupMemoryBarrierBuffer ( global void) 0:138 subgroupMemoryBarrierImage ( global void) 0:139 subgroupElect ( global bool) 0:143 Function Definition: ballot_works(vf4; ( global void) 0:143 Function Parameters: 0:143 'f4' ( in 4-component vector of float) 0:144 Sequence 0:144 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:145 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:146 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:147 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:148 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:149 subgroupBroadcast ( global 4-component vector of float) 0:149 'f4' ( in 4-component vector of float) 0:149 Constant: 0:149 0 (const uint) 0:150 subgroupBroadcastFirst ( global 4-component vector of float) 0:150 'f4' ( in 4-component vector of float) 0:151 Sequence 0:151 move second child to first child ( temp 4-component vector of uint) 0:151 'ballot' ( temp 4-component vector of uint) 0:151 subgroupBallot ( global 4-component vector of uint) 0:151 Constant: 0:151 false (const bool) 0:152 subgroupInverseBallot ( global bool) 0:152 Constant: 0:152 1 (const uint) 0:152 1 (const uint) 0:152 1 (const uint) 0:152 1 (const uint) 0:153 subgroupBallotBitExtract ( global bool) 0:153 'ballot' ( temp 4-component vector of uint) 0:153 Constant: 0:153 0 (const uint) 0:154 subgroupBallotBitCount ( global uint) 0:154 'ballot' ( temp 4-component vector of uint) 0:155 subgroupBallotInclusiveBitCount ( global uint) 0:155 'ballot' ( temp 4-component vector of uint) 0:156 subgroupBallotExclusiveBitCount ( global uint) 0:156 'ballot' ( temp 4-component vector of uint) 0:157 subgroupBallotFindLSB ( global uint) 0:157 'ballot' ( temp 4-component vector of uint) 0:158 subgroupBallotFindMSB ( global uint) 0:158 'ballot' ( temp 4-component vector of uint) 0:162 Function Definition: vote_works(vf4; ( global void) 0:162 Function Parameters: 0:162 'f4' ( in 4-component vector of float) 0:164 Sequence 0:164 subgroupAll ( global bool) 0:164 Constant: 0:164 true (const bool) 0:165 subgroupAny ( global bool) 0:165 Constant: 0:165 false (const bool) 0:166 subgroupAllEqual ( global bool) 0:166 'f4' ( in 4-component vector of float) 0:171 Function Definition: shuffle_works(vf4; ( global void) 0:171 Function Parameters: 0:171 'f4' ( in 4-component vector of float) 0:173 Sequence 0:173 subgroupShuffle ( global 4-component vector of float) 0:173 'f4' ( in 4-component vector of float) 0:173 Constant: 0:173 0 (const uint) 0:174 subgroupShuffleXor ( global 4-component vector of float) 0:174 'f4' ( in 4-component vector of float) 0:174 Constant: 0:174 1 (const uint) 0:175 subgroupShuffleUp ( global 4-component vector of float) 0:175 'f4' ( in 4-component vector of float) 0:175 Constant: 0:175 1 (const uint) 0:176 subgroupShuffleDown ( global 4-component vector of float) 0:176 'f4' ( in 4-component vector of float) 0:176 Constant: 0:176 1 (const uint) 0:180 Function Definition: arith_works(vf4; ( global void) 0:180 Function Parameters: 0:180 'f4' ( in 4-component vector of float) 0:? Sequence 0:183 subgroupAdd ( global 4-component vector of float) 0:183 'f4' ( in 4-component vector of float) 0:184 subgroupMul ( global 4-component vector of float) 0:184 'f4' ( in 4-component vector of float) 0:185 subgroupMin ( global 4-component vector of float) 0:185 'f4' ( in 4-component vector of float) 0:186 subgroupMax ( global 4-component vector of float) 0:186 'f4' ( in 4-component vector of float) 0:187 subgroupAnd ( global 4-component vector of uint) 0:187 'ballot' ( temp 4-component vector of uint) 0:188 subgroupOr ( global 4-component vector of uint) 0:188 'ballot' ( temp 4-component vector of uint) 0:189 subgroupXor ( global 4-component vector of uint) 0:189 'ballot' ( temp 4-component vector of uint) 0:190 subgroupInclusiveAdd ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:191 subgroupInclusiveMul ( global 4-component vector of float) 0:191 'f4' ( in 4-component vector of float) 0:192 subgroupInclusiveMin ( global 4-component vector of float) 0:192 'f4' ( in 4-component vector of float) 0:193 subgroupInclusiveMax ( global 4-component vector of float) 0:193 'f4' ( in 4-component vector of float) 0:194 subgroupInclusiveAnd ( global 4-component vector of uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:195 subgroupInclusiveOr ( global 4-component vector of uint) 0:195 'ballot' ( temp 4-component vector of uint) 0:196 subgroupInclusiveXor ( global 4-component vector of uint) 0:196 'ballot' ( temp 4-component vector of uint) 0:197 subgroupExclusiveAdd ( global 4-component vector of float) 0:197 'f4' ( in 4-component vector of float) 0:198 subgroupExclusiveMul ( global 4-component vector of float) 0:198 'f4' ( in 4-component vector of float) 0:199 subgroupExclusiveMin ( global 4-component vector of float) 0:199 'f4' ( in 4-component vector of float) 0:200 subgroupExclusiveMax ( global 4-component vector of float) 0:200 'f4' ( in 4-component vector of float) 0:201 subgroupExclusiveAnd ( global 4-component vector of uint) 0:201 'ballot' ( temp 4-component vector of uint) 0:202 subgroupExclusiveOr ( global 4-component vector of uint) 0:202 'ballot' ( temp 4-component vector of uint) 0:203 subgroupExclusiveXor ( global 4-component vector of uint) 0:203 'ballot' ( temp 4-component vector of uint) 0:207 Function Definition: clustered_works(vf4; ( global void) 0:207 Function Parameters: 0:207 'f4' ( in 4-component vector of float) 0:209 Sequence 0:209 Sequence 0:209 move second child to first child ( temp 4-component vector of uint) 0:209 'ballot' ( temp 4-component vector of uint) 0:209 Constant: 0:209 85 (const uint) 0:209 0 (const uint) 0:209 0 (const uint) 0:209 0 (const uint) 0:210 subgroupClusteredAdd ( global 4-component vector of float) 0:210 'f4' ( in 4-component vector of float) 0:210 Constant: 0:210 2 (const uint) 0:211 subgroupClusteredMul ( global 4-component vector of float) 0:211 'f4' ( in 4-component vector of float) 0:211 Constant: 0:211 2 (const uint) 0:212 subgroupClusteredMin ( 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 subgroupClusteredMax ( 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 subgroupClusteredAnd ( global 4-component vector of uint) 0:214 'ballot' ( temp 4-component vector of uint) 0:214 Constant: 0:214 2 (const uint) 0:215 subgroupClusteredOr ( global 4-component vector of uint) 0:215 'ballot' ( temp 4-component vector of uint) 0:215 Constant: 0:215 2 (const uint) 0:216 subgroupClusteredXor ( global 4-component vector of uint) 0:216 'ballot' ( temp 4-component vector of uint) 0:216 Constant: 0:216 2 (const uint) 0:220 Function Definition: quad_works(vf4; ( global void) 0:220 Function Parameters: 0:220 'f4' ( in 4-component vector of float) 0:222 Sequence 0:222 subgroupQuadBroadcast ( global 4-component vector of float) 0:222 'f4' ( in 4-component vector of float) 0:222 Constant: 0:222 0 (const uint) 0:223 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:223 'f4' ( in 4-component vector of float) 0:224 subgroupQuadSwapVertical ( global 4-component vector of float) 0:224 'f4' ( in 4-component vector of float) 0:225 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:229 Function Definition: partitioned_works(vf4; ( global void) 0:229 Function Parameters: 0:229 'f4' ( in 4-component vector of float) 0:231 Sequence 0:231 Sequence 0:231 move second child to first child ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint) 0:231 subgroupPartitionNV ( global 4-component vector of uint) 0:231 'f4' ( in 4-component vector of float) 0:232 Sequence 0:232 move second child to first child ( temp 4-component vector of uint) 0:232 'ballot' ( temp 4-component vector of uint) 0:232 Constant: 0:232 85 (const uint) 0:232 0 (const uint) 0:232 0 (const uint) 0:232 0 (const uint) 0:233 subgroupPartitionedAddNV ( global 4-component vector of float) 0:233 'f4' ( in 4-component vector of float) 0:233 'parti' ( temp 4-component vector of uint) 0:234 subgroupPartitionedMulNV ( global 4-component vector of float) 0:234 'f4' ( in 4-component vector of float) 0:234 'parti' ( temp 4-component vector of uint) 0:235 subgroupPartitionedMinNV ( global 4-component vector of float) 0:235 'f4' ( in 4-component vector of float) 0:235 'parti' ( temp 4-component vector of uint) 0:236 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:236 'f4' ( in 4-component vector of float) 0:236 'parti' ( temp 4-component vector of uint) 0:237 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:237 'ballot' ( temp 4-component vector of uint) 0:237 'parti' ( temp 4-component vector of uint) 0:238 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:238 'ballot' ( temp 4-component vector of uint) 0:238 'parti' ( temp 4-component vector of uint) 0:239 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:239 'ballot' ( temp 4-component vector of uint) 0:239 'parti' ( temp 4-component vector of uint) 0:240 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:240 'f4' ( in 4-component vector of float) 0:240 'parti' ( temp 4-component vector of uint) 0:241 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:241 'f4' ( in 4-component vector of float) 0:241 'parti' ( temp 4-component vector of uint) 0:242 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:242 'f4' ( in 4-component vector of float) 0:242 'parti' ( temp 4-component vector of uint) 0:243 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:243 'f4' ( in 4-component vector of float) 0:243 'parti' ( temp 4-component vector of uint) 0:244 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:244 'ballot' ( temp 4-component vector of uint) 0:244 'parti' ( temp 4-component vector of uint) 0:245 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:245 'ballot' ( temp 4-component vector of uint) 0:245 'parti' ( temp 4-component vector of uint) 0:246 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:246 'ballot' ( temp 4-component vector of uint) 0:246 'parti' ( temp 4-component vector of uint) 0:247 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:247 'f4' ( in 4-component vector of float) 0:247 'parti' ( temp 4-component vector of uint) 0:248 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:248 'f4' ( in 4-component vector of float) 0:248 'parti' ( temp 4-component vector of uint) 0:249 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:249 'f4' ( in 4-component vector of float) 0:249 'parti' ( temp 4-component vector of uint) 0:250 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:250 'f4' ( in 4-component vector of float) 0:250 'parti' ( temp 4-component vector of uint) 0:251 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:251 'ballot' ( temp 4-component vector of uint) 0:251 'parti' ( temp 4-component vector of uint) 0:252 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:252 'ballot' ( temp 4-component vector of uint) 0:252 'parti' ( temp 4-component vector of uint) 0:253 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:253 'ballot' ( temp 4-component vector of uint) 0:253 'parti' ( temp 4-component vector of uint) 0:257 Function Definition: sm_builtins_err( ( global void) 0:257 Function Parameters: 0:259 Sequence 0:259 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:260 'gl_SMCountNV' ( in uint SMCountNV) 0:261 'gl_WarpIDNV' ( in uint WarpIDNV) 0:262 'gl_SMIDNV' ( in uint SMIDNV) 0:269 Function Definition: sm_builtins( ( global void) 0:269 Function Parameters: 0:271 Sequence 0:271 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:272 'gl_SMCountNV' ( in uint SMCountNV) 0:273 'gl_WarpIDNV' ( in uint WarpIDNV) 0:274 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) Linked any-hit stage: Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:106 Function Definition: main( ( global void) 0:106 Function Parameters: 0:108 Sequence 0:108 Sequence 0:108 move second child to first child ( temp 3-component vector of uint) 0:108 'v0' ( temp 3-component vector of uint) 0:108 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:109 Sequence 0:109 move second child to first child ( temp 3-component vector of uint) 0:109 'v1' ( temp 3-component vector of uint) 0:109 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:110 Sequence 0:110 move second child to first child ( temp int) 0:110 'v2' ( temp int) 0:110 'gl_PrimitiveID' ( in int PrimitiveID) 0:111 Sequence 0:111 move second child to first child ( temp int) 0:111 'v3' ( temp int) 0:111 'gl_InstanceID' ( in int InstanceId) 0:112 Sequence 0:112 move second child to first child ( temp int) 0:112 'v4' ( temp int) 0:112 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) 0:113 Sequence 0:113 move second child to first child ( temp 3-component vector of float) 0:113 'v5' ( temp 3-component vector of float) 0:113 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) 0:114 Sequence 0:114 move second child to first child ( temp 3-component vector of float) 0:114 'v6' ( temp 3-component vector of float) 0:114 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) 0:115 Sequence 0:115 move second child to first child ( temp 3-component vector of float) 0:115 'v7' ( temp 3-component vector of float) 0:115 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v8' ( temp 3-component vector of float) 0:116 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) 0:117 Sequence 0:117 move second child to first child ( temp float) 0:117 'v9' ( temp float) 0:117 'gl_RayTminNV' ( in float ObjectRayTminNV) 0:118 Sequence 0:118 move second child to first child ( temp float) 0:118 'v10' ( temp float) 0:118 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v11' ( temp float) 0:119 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:120 Sequence 0:120 move second child to first child ( temp uint) 0:120 'v12' ( temp uint) 0:120 'gl_HitKindNV' ( in uint HitKindNV) 0:121 Sequence 0:121 move second child to first child ( temp 4X3 matrix of float) 0:121 'v13' ( temp 4X3 matrix of float) 0:121 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) 0:122 Sequence 0:122 move second child to first child ( temp 4X3 matrix of float) 0:122 'v14' ( temp 4X3 matrix of float) 0:122 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) 0:123 move second child to first child ( temp 4-component vector of float) 0:123 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) 0:123 Constant: 0:123 0.500000 0:123 0.500000 0:123 0.500000 0:123 0.500000 0:124 Test condition and select ( temp void) 0:124 Condition 0:124 Compare Equal ( temp bool) 0:124 'v2' ( temp int) 0:124 Constant: 0:124 1 (const int) 0:124 true case 0:125 ignoreIntersectionNV ( global void) 0:124 false case 0:127 terminateRayNV ( global void) 0:? Linker Objects 0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.460.subgroup.rcall.out000066400000000000000000001150451506534232700234200ustar00rootroot00000000000000glsl.460.subgroup.rcall ERROR: 0:7: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:8: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:22: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:23: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:24: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:25: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:26: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:247: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:248: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:249: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:250: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:4 Function Parameters: 0:4 'f4' ( in 4-component vector of float) 0:? Sequence 0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:9 subgroupBarrier ( global void) 0:10 subgroupMemoryBarrier ( global void) 0:11 subgroupMemoryBarrierBuffer ( global void) 0:12 subgroupMemoryBarrierImage ( global void) 0:13 subgroupElect ( global bool) 0:14 'gl_NumSubgroups' ( temp float) 0:15 'gl_SubgroupID' ( temp float) 0:16 Constant: 0:16 0.000000 0:18 subgroupAll ( global bool) 0:18 Constant: 0:18 true (const bool) 0:19 subgroupAny ( global bool) 0:19 Constant: 0:19 false (const bool) 0:20 subgroupAllEqual ( global bool) 0:20 'f4' ( in 4-component vector of float) 0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:27 subgroupBroadcast ( global 4-component vector of float) 0:27 'f4' ( in 4-component vector of float) 0:27 Constant: 0:27 0 (const uint) 0:28 subgroupBroadcastFirst ( global 4-component vector of float) 0:28 'f4' ( in 4-component vector of float) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'ballot' ( temp 4-component vector of uint) 0:29 subgroupBallot ( global 4-component vector of uint) 0:29 Constant: 0:29 false (const bool) 0:30 subgroupInverseBallot ( global bool) 0:30 Constant: 0:30 1 (const uint) 0:30 1 (const uint) 0:30 1 (const uint) 0:30 1 (const uint) 0:31 subgroupBallotBitExtract ( global bool) 0:31 'ballot' ( temp 4-component vector of uint) 0:31 Constant: 0:31 0 (const uint) 0:32 subgroupBallotBitCount ( global uint) 0:32 'ballot' ( temp 4-component vector of uint) 0:33 subgroupBallotInclusiveBitCount ( global uint) 0:33 'ballot' ( temp 4-component vector of uint) 0:34 subgroupBallotExclusiveBitCount ( global uint) 0:34 'ballot' ( temp 4-component vector of uint) 0:35 subgroupBallotFindLSB ( global uint) 0:35 'ballot' ( temp 4-component vector of uint) 0:36 subgroupBallotFindMSB ( global uint) 0:36 'ballot' ( temp 4-component vector of uint) 0:38 subgroupShuffle ( global 4-component vector of float) 0:38 'f4' ( in 4-component vector of float) 0:38 Constant: 0:38 0 (const uint) 0:39 subgroupShuffleXor ( 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 subgroupShuffleUp ( global 4-component vector of float) 0:40 'f4' ( in 4-component vector of float) 0:40 Constant: 0:40 1 (const uint) 0:41 subgroupShuffleDown ( global 4-component vector of float) 0:41 'f4' ( in 4-component vector of float) 0:41 Constant: 0:41 1 (const uint) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'result' ( temp 4-component vector of float) 0:43 subgroupAdd ( global 4-component vector of float) 0:43 'f4' ( in 4-component vector of float) 0:44 subgroupMul ( global 4-component vector of float) 0:44 'f4' ( in 4-component vector of float) 0:45 subgroupMin ( global 4-component vector of float) 0:45 'f4' ( in 4-component vector of float) 0:46 subgroupMax ( global 4-component vector of float) 0:46 'f4' ( in 4-component vector of float) 0:47 subgroupAnd ( global 4-component vector of uint) 0:47 'ballot' ( temp 4-component vector of uint) 0:48 subgroupOr ( global 4-component vector of uint) 0:48 'ballot' ( temp 4-component vector of uint) 0:49 subgroupXor ( global 4-component vector of uint) 0:49 'ballot' ( temp 4-component vector of uint) 0:50 subgroupInclusiveAdd ( global 4-component vector of float) 0:50 'f4' ( in 4-component vector of float) 0:51 subgroupInclusiveMul ( global 4-component vector of float) 0:51 'f4' ( in 4-component vector of float) 0:52 subgroupInclusiveMin ( global 4-component vector of float) 0:52 'f4' ( in 4-component vector of float) 0:53 subgroupInclusiveMax ( global 4-component vector of float) 0:53 'f4' ( in 4-component vector of float) 0:54 subgroupInclusiveAnd ( global 4-component vector of uint) 0:54 'ballot' ( temp 4-component vector of uint) 0:55 subgroupInclusiveOr ( global 4-component vector of uint) 0:55 'ballot' ( temp 4-component vector of uint) 0:56 subgroupInclusiveXor ( global 4-component vector of uint) 0:56 'ballot' ( temp 4-component vector of uint) 0:57 subgroupExclusiveAdd ( global 4-component vector of float) 0:57 'f4' ( in 4-component vector of float) 0:58 subgroupExclusiveMul ( global 4-component vector of float) 0:58 'f4' ( in 4-component vector of float) 0:59 subgroupExclusiveMin ( global 4-component vector of float) 0:59 'f4' ( in 4-component vector of float) 0:60 subgroupExclusiveMax ( global 4-component vector of float) 0:60 'f4' ( in 4-component vector of float) 0:61 subgroupExclusiveAnd ( global 4-component vector of uint) 0:61 'ballot' ( temp 4-component vector of uint) 0:62 subgroupExclusiveOr ( global 4-component vector of uint) 0:62 'ballot' ( temp 4-component vector of uint) 0:63 subgroupExclusiveXor ( global 4-component vector of uint) 0:63 'ballot' ( temp 4-component vector of uint) 0:65 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( 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 subgroupClusteredMax ( global 4-component vector of float) 0:68 'f4' ( in 4-component vector of float) 0:68 Constant: 0:68 2 (const uint) 0:69 subgroupClusteredAnd ( 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 subgroupClusteredOr ( global 4-component vector of uint) 0:70 'ballot' ( temp 4-component vector of uint) 0:70 Constant: 0:70 2 (const uint) 0:71 subgroupClusteredXor ( global 4-component vector of uint) 0:71 'ballot' ( temp 4-component vector of uint) 0:71 Constant: 0:71 2 (const uint) 0:73 subgroupQuadBroadcast ( global 4-component vector of float) 0:73 'f4' ( in 4-component vector of float) 0:73 Constant: 0:73 0 (const uint) 0:74 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:74 'f4' ( in 4-component vector of float) 0:75 subgroupQuadSwapVertical ( global 4-component vector of float) 0:75 'f4' ( in 4-component vector of float) 0:76 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:76 'f4' ( in 4-component vector of float) 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of uint) 0:78 'parti' ( temp 4-component vector of uint) 0:78 subgroupPartitionNV ( global 4-component vector of uint) 0:78 'f4' ( in 4-component vector of float) 0:79 subgroupPartitionedAddNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMulNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMinNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:82 'f4' ( in 4-component vector of float) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:85 'ballot' ( temp 4-component vector of uint) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:89 'f4' ( in 4-component vector of float) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:92 'ballot' ( temp 4-component vector of uint) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:96 'f4' ( in 4-component vector of float) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:99 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:99 'ballot' ( temp 4-component vector of uint) 0:99 'parti' ( temp 4-component vector of uint) 0:101 Branch: Return with expression 0:101 'result' ( temp 4-component vector of float) 0:109 Function Definition: main( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 Sequence 0:111 move second child to first child ( temp 3-component vector of uint) 0:111 'id' ( temp 3-component vector of uint) 0:111 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:112 Sequence 0:112 move second child to first child ( temp 3-component vector of uint) 0:112 'size' ( temp 3-component vector of uint) 0:112 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:113 move second child to first child ( temp uint) 0:113 data1: direct index for structure ( callableDataInNV uint) 0:113 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) 0:113 Constant: 0:113 0 (const uint) 0:113 Constant: 0:113 256 (const uint) 0:114 executeCallableNV ( global void) 0:114 Constant: 0:114 2 (const uint) 0:114 Constant: 0:114 1 (const int) 0:119 Function Definition: basic_works( ( global void) 0:119 Function Parameters: 0:121 Sequence 0:121 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:122 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:123 subgroupBarrier ( global void) 0:124 subgroupMemoryBarrier ( global void) 0:125 subgroupMemoryBarrierBuffer ( global void) 0:126 subgroupMemoryBarrierImage ( global void) 0:127 subgroupElect ( global bool) 0:131 Function Definition: ballot_works(vf4; ( global void) 0:131 Function Parameters: 0:131 'f4' ( in 4-component vector of float) 0:132 Sequence 0:132 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:133 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:134 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:135 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:136 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:137 subgroupBroadcast ( global 4-component vector of float) 0:137 'f4' ( in 4-component vector of float) 0:137 Constant: 0:137 0 (const uint) 0:138 subgroupBroadcastFirst ( global 4-component vector of float) 0:138 'f4' ( in 4-component vector of float) 0:139 Sequence 0:139 move second child to first child ( temp 4-component vector of uint) 0:139 'ballot' ( temp 4-component vector of uint) 0:139 subgroupBallot ( global 4-component vector of uint) 0:139 Constant: 0:139 false (const bool) 0:140 subgroupInverseBallot ( global bool) 0:140 Constant: 0:140 1 (const uint) 0:140 1 (const uint) 0:140 1 (const uint) 0:140 1 (const uint) 0:141 subgroupBallotBitExtract ( global bool) 0:141 'ballot' ( temp 4-component vector of uint) 0:141 Constant: 0:141 0 (const uint) 0:142 subgroupBallotBitCount ( global uint) 0:142 'ballot' ( temp 4-component vector of uint) 0:143 subgroupBallotInclusiveBitCount ( global uint) 0:143 'ballot' ( temp 4-component vector of uint) 0:144 subgroupBallotExclusiveBitCount ( global uint) 0:144 'ballot' ( temp 4-component vector of uint) 0:145 subgroupBallotFindLSB ( global uint) 0:145 'ballot' ( temp 4-component vector of uint) 0:146 subgroupBallotFindMSB ( global uint) 0:146 'ballot' ( temp 4-component vector of uint) 0:150 Function Definition: vote_works(vf4; ( global void) 0:150 Function Parameters: 0:150 'f4' ( in 4-component vector of float) 0:152 Sequence 0:152 subgroupAll ( global bool) 0:152 Constant: 0:152 true (const bool) 0:153 subgroupAny ( global bool) 0:153 Constant: 0:153 false (const bool) 0:154 subgroupAllEqual ( global bool) 0:154 'f4' ( in 4-component vector of float) 0:159 Function Definition: shuffle_works(vf4; ( global void) 0:159 Function Parameters: 0:159 'f4' ( in 4-component vector of float) 0:161 Sequence 0:161 subgroupShuffle ( global 4-component vector of float) 0:161 'f4' ( in 4-component vector of float) 0:161 Constant: 0:161 0 (const uint) 0:162 subgroupShuffleXor ( global 4-component vector of float) 0:162 'f4' ( in 4-component vector of float) 0:162 Constant: 0:162 1 (const uint) 0:163 subgroupShuffleUp ( global 4-component vector of float) 0:163 'f4' ( in 4-component vector of float) 0:163 Constant: 0:163 1 (const uint) 0:164 subgroupShuffleDown ( global 4-component vector of float) 0:164 'f4' ( in 4-component vector of float) 0:164 Constant: 0:164 1 (const uint) 0:168 Function Definition: arith_works(vf4; ( global void) 0:168 Function Parameters: 0:168 'f4' ( in 4-component vector of float) 0:? Sequence 0:171 subgroupAdd ( global 4-component vector of float) 0:171 'f4' ( in 4-component vector of float) 0:172 subgroupMul ( global 4-component vector of float) 0:172 'f4' ( in 4-component vector of float) 0:173 subgroupMin ( global 4-component vector of float) 0:173 'f4' ( in 4-component vector of float) 0:174 subgroupMax ( global 4-component vector of float) 0:174 'f4' ( in 4-component vector of float) 0:175 subgroupAnd ( global 4-component vector of uint) 0:175 'ballot' ( temp 4-component vector of uint) 0:176 subgroupOr ( global 4-component vector of uint) 0:176 'ballot' ( temp 4-component vector of uint) 0:177 subgroupXor ( global 4-component vector of uint) 0:177 'ballot' ( temp 4-component vector of uint) 0:178 subgroupInclusiveAdd ( global 4-component vector of float) 0:178 'f4' ( in 4-component vector of float) 0:179 subgroupInclusiveMul ( global 4-component vector of float) 0:179 'f4' ( in 4-component vector of float) 0:180 subgroupInclusiveMin ( global 4-component vector of float) 0:180 'f4' ( in 4-component vector of float) 0:181 subgroupInclusiveMax ( global 4-component vector of float) 0:181 'f4' ( in 4-component vector of float) 0:182 subgroupInclusiveAnd ( global 4-component vector of uint) 0:182 'ballot' ( temp 4-component vector of uint) 0:183 subgroupInclusiveOr ( global 4-component vector of uint) 0:183 'ballot' ( temp 4-component vector of uint) 0:184 subgroupInclusiveXor ( global 4-component vector of uint) 0:184 'ballot' ( temp 4-component vector of uint) 0:185 subgroupExclusiveAdd ( global 4-component vector of float) 0:185 'f4' ( in 4-component vector of float) 0:186 subgroupExclusiveMul ( global 4-component vector of float) 0:186 'f4' ( in 4-component vector of float) 0:187 subgroupExclusiveMin ( global 4-component vector of float) 0:187 'f4' ( in 4-component vector of float) 0:188 subgroupExclusiveMax ( global 4-component vector of float) 0:188 'f4' ( in 4-component vector of float) 0:189 subgroupExclusiveAnd ( global 4-component vector of uint) 0:189 'ballot' ( temp 4-component vector of uint) 0:190 subgroupExclusiveOr ( global 4-component vector of uint) 0:190 'ballot' ( temp 4-component vector of uint) 0:191 subgroupExclusiveXor ( global 4-component vector of uint) 0:191 'ballot' ( temp 4-component vector of uint) 0:195 Function Definition: clustered_works(vf4; ( global void) 0:195 Function Parameters: 0:195 'f4' ( in 4-component vector of float) 0:197 Sequence 0:197 Sequence 0:197 move second child to first child ( temp 4-component vector of uint) 0:197 'ballot' ( temp 4-component vector of uint) 0:197 Constant: 0:197 85 (const uint) 0:197 0 (const uint) 0:197 0 (const uint) 0:197 0 (const uint) 0:198 subgroupClusteredAdd ( global 4-component vector of float) 0:198 'f4' ( in 4-component vector of float) 0:198 Constant: 0:198 2 (const uint) 0:199 subgroupClusteredMul ( global 4-component vector of float) 0:199 'f4' ( in 4-component vector of float) 0:199 Constant: 0:199 2 (const uint) 0:200 subgroupClusteredMin ( global 4-component vector of float) 0:200 'f4' ( in 4-component vector of float) 0:200 Constant: 0:200 2 (const uint) 0:201 subgroupClusteredMax ( global 4-component vector of float) 0:201 'f4' ( in 4-component vector of float) 0:201 Constant: 0:201 2 (const uint) 0:202 subgroupClusteredAnd ( global 4-component vector of uint) 0:202 'ballot' ( temp 4-component vector of uint) 0:202 Constant: 0:202 2 (const uint) 0:203 subgroupClusteredOr ( global 4-component vector of uint) 0:203 'ballot' ( temp 4-component vector of uint) 0:203 Constant: 0:203 2 (const uint) 0:204 subgroupClusteredXor ( global 4-component vector of uint) 0:204 'ballot' ( temp 4-component vector of uint) 0:204 Constant: 0:204 2 (const uint) 0:208 Function Definition: quad_works(vf4; ( global void) 0:208 Function Parameters: 0:208 'f4' ( in 4-component vector of float) 0:210 Sequence 0:210 subgroupQuadBroadcast ( global 4-component vector of float) 0:210 'f4' ( in 4-component vector of float) 0:210 Constant: 0:210 0 (const uint) 0:211 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:211 'f4' ( in 4-component vector of float) 0:212 subgroupQuadSwapVertical ( global 4-component vector of float) 0:212 'f4' ( in 4-component vector of float) 0:213 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:217 Function Definition: partitioned_works(vf4; ( global void) 0:217 Function Parameters: 0:217 'f4' ( in 4-component vector of float) 0:219 Sequence 0:219 Sequence 0:219 move second child to first child ( temp 4-component vector of uint) 0:219 'parti' ( temp 4-component vector of uint) 0:219 subgroupPartitionNV ( global 4-component vector of uint) 0:219 'f4' ( in 4-component vector of float) 0:220 Sequence 0:220 move second child to first child ( temp 4-component vector of uint) 0:220 'ballot' ( temp 4-component vector of uint) 0:220 Constant: 0:220 85 (const uint) 0:220 0 (const uint) 0:220 0 (const uint) 0:220 0 (const uint) 0:221 subgroupPartitionedAddNV ( global 4-component vector of float) 0:221 'f4' ( in 4-component vector of float) 0:221 'parti' ( temp 4-component vector of uint) 0:222 subgroupPartitionedMulNV ( global 4-component vector of float) 0:222 'f4' ( in 4-component vector of float) 0:222 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionedMinNV ( global 4-component vector of float) 0:223 'f4' ( in 4-component vector of float) 0:223 'parti' ( temp 4-component vector of uint) 0:224 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:224 'f4' ( in 4-component vector of float) 0:224 'parti' ( temp 4-component vector of uint) 0:225 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:225 'ballot' ( temp 4-component vector of uint) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:226 'ballot' ( temp 4-component vector of uint) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:227 'ballot' ( temp 4-component vector of uint) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:228 'f4' ( in 4-component vector of float) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:229 'f4' ( in 4-component vector of float) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:230 'f4' ( in 4-component vector of float) 0:230 'parti' ( temp 4-component vector of uint) 0:231 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:231 'f4' ( in 4-component vector of float) 0:231 'parti' ( temp 4-component vector of uint) 0:232 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:232 'ballot' ( temp 4-component vector of uint) 0:232 'parti' ( temp 4-component vector of uint) 0:233 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:233 'ballot' ( temp 4-component vector of uint) 0:233 'parti' ( temp 4-component vector of uint) 0:234 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:234 'ballot' ( temp 4-component vector of uint) 0:234 'parti' ( temp 4-component vector of uint) 0:235 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:235 'f4' ( in 4-component vector of float) 0:235 'parti' ( temp 4-component vector of uint) 0:236 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:236 'f4' ( in 4-component vector of float) 0:236 'parti' ( temp 4-component vector of uint) 0:237 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:237 'f4' ( in 4-component vector of float) 0:237 'parti' ( temp 4-component vector of uint) 0:238 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:238 'f4' ( in 4-component vector of float) 0:238 'parti' ( temp 4-component vector of uint) 0:239 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:239 'ballot' ( temp 4-component vector of uint) 0:239 'parti' ( temp 4-component vector of uint) 0:240 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:240 'ballot' ( temp 4-component vector of uint) 0:240 'parti' ( temp 4-component vector of uint) 0:241 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:241 'ballot' ( temp 4-component vector of uint) 0:241 'parti' ( temp 4-component vector of uint) 0:245 Function Definition: sm_builtins_err( ( global void) 0:245 Function Parameters: 0:247 Sequence 0:247 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:248 'gl_SMCountNV' ( in uint SMCountNV) 0:249 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:250 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:257 Function Definition: sm_builtins( ( global void) 0:257 Function Parameters: 0:259 Sequence 0:259 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:260 'gl_SMCountNV' ( in uint SMCountNV) 0:261 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:262 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float) 0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) Linked callable stage: Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:109 Function Definition: main( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 Sequence 0:111 move second child to first child ( temp 3-component vector of uint) 0:111 'id' ( temp 3-component vector of uint) 0:111 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:112 Sequence 0:112 move second child to first child ( temp 3-component vector of uint) 0:112 'size' ( temp 3-component vector of uint) 0:112 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:113 move second child to first child ( temp uint) 0:113 data1: direct index for structure ( callableDataInNV uint) 0:113 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) 0:113 Constant: 0:113 0 (const uint) 0:113 Constant: 0:113 256 (const uint) 0:114 executeCallableNV ( global void) 0:114 Constant: 0:114 2 (const uint) 0:114 Constant: 0:114 1 (const int) 0:? Linker Objects 0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float) 0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) glslang-16.0.0/Test/baseResults/glsl.460.subgroup.rchit.out000066400000000000000000001304321506534232700234310ustar00rootroot00000000000000glsl.460.subgroup.rchit ERROR: 0:7: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:8: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:22: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:23: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:24: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:25: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:26: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:257: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:258: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:259: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:260: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:4 Function Parameters: 0:4 'f4' ( in 4-component vector of float) 0:? Sequence 0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:9 subgroupBarrier ( global void) 0:10 subgroupMemoryBarrier ( global void) 0:11 subgroupMemoryBarrierBuffer ( global void) 0:12 subgroupMemoryBarrierImage ( global void) 0:13 subgroupElect ( global bool) 0:14 'gl_NumSubgroups' ( temp float) 0:15 'gl_SubgroupID' ( temp float) 0:16 Constant: 0:16 0.000000 0:18 subgroupAll ( global bool) 0:18 Constant: 0:18 true (const bool) 0:19 subgroupAny ( global bool) 0:19 Constant: 0:19 false (const bool) 0:20 subgroupAllEqual ( global bool) 0:20 'f4' ( in 4-component vector of float) 0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:27 subgroupBroadcast ( global 4-component vector of float) 0:27 'f4' ( in 4-component vector of float) 0:27 Constant: 0:27 0 (const uint) 0:28 subgroupBroadcastFirst ( global 4-component vector of float) 0:28 'f4' ( in 4-component vector of float) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'ballot' ( temp 4-component vector of uint) 0:29 subgroupBallot ( global 4-component vector of uint) 0:29 Constant: 0:29 false (const bool) 0:30 subgroupInverseBallot ( global bool) 0:30 Constant: 0:30 1 (const uint) 0:30 1 (const uint) 0:30 1 (const uint) 0:30 1 (const uint) 0:31 subgroupBallotBitExtract ( global bool) 0:31 'ballot' ( temp 4-component vector of uint) 0:31 Constant: 0:31 0 (const uint) 0:32 subgroupBallotBitCount ( global uint) 0:32 'ballot' ( temp 4-component vector of uint) 0:33 subgroupBallotInclusiveBitCount ( global uint) 0:33 'ballot' ( temp 4-component vector of uint) 0:34 subgroupBallotExclusiveBitCount ( global uint) 0:34 'ballot' ( temp 4-component vector of uint) 0:35 subgroupBallotFindLSB ( global uint) 0:35 'ballot' ( temp 4-component vector of uint) 0:36 subgroupBallotFindMSB ( global uint) 0:36 'ballot' ( temp 4-component vector of uint) 0:38 subgroupShuffle ( global 4-component vector of float) 0:38 'f4' ( in 4-component vector of float) 0:38 Constant: 0:38 0 (const uint) 0:39 subgroupShuffleXor ( 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 subgroupShuffleUp ( global 4-component vector of float) 0:40 'f4' ( in 4-component vector of float) 0:40 Constant: 0:40 1 (const uint) 0:41 subgroupShuffleDown ( global 4-component vector of float) 0:41 'f4' ( in 4-component vector of float) 0:41 Constant: 0:41 1 (const uint) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'result' ( temp 4-component vector of float) 0:43 subgroupAdd ( global 4-component vector of float) 0:43 'f4' ( in 4-component vector of float) 0:44 subgroupMul ( global 4-component vector of float) 0:44 'f4' ( in 4-component vector of float) 0:45 subgroupMin ( global 4-component vector of float) 0:45 'f4' ( in 4-component vector of float) 0:46 subgroupMax ( global 4-component vector of float) 0:46 'f4' ( in 4-component vector of float) 0:47 subgroupAnd ( global 4-component vector of uint) 0:47 'ballot' ( temp 4-component vector of uint) 0:48 subgroupOr ( global 4-component vector of uint) 0:48 'ballot' ( temp 4-component vector of uint) 0:49 subgroupXor ( global 4-component vector of uint) 0:49 'ballot' ( temp 4-component vector of uint) 0:50 subgroupInclusiveAdd ( global 4-component vector of float) 0:50 'f4' ( in 4-component vector of float) 0:51 subgroupInclusiveMul ( global 4-component vector of float) 0:51 'f4' ( in 4-component vector of float) 0:52 subgroupInclusiveMin ( global 4-component vector of float) 0:52 'f4' ( in 4-component vector of float) 0:53 subgroupInclusiveMax ( global 4-component vector of float) 0:53 'f4' ( in 4-component vector of float) 0:54 subgroupInclusiveAnd ( global 4-component vector of uint) 0:54 'ballot' ( temp 4-component vector of uint) 0:55 subgroupInclusiveOr ( global 4-component vector of uint) 0:55 'ballot' ( temp 4-component vector of uint) 0:56 subgroupInclusiveXor ( global 4-component vector of uint) 0:56 'ballot' ( temp 4-component vector of uint) 0:57 subgroupExclusiveAdd ( global 4-component vector of float) 0:57 'f4' ( in 4-component vector of float) 0:58 subgroupExclusiveMul ( global 4-component vector of float) 0:58 'f4' ( in 4-component vector of float) 0:59 subgroupExclusiveMin ( global 4-component vector of float) 0:59 'f4' ( in 4-component vector of float) 0:60 subgroupExclusiveMax ( global 4-component vector of float) 0:60 'f4' ( in 4-component vector of float) 0:61 subgroupExclusiveAnd ( global 4-component vector of uint) 0:61 'ballot' ( temp 4-component vector of uint) 0:62 subgroupExclusiveOr ( global 4-component vector of uint) 0:62 'ballot' ( temp 4-component vector of uint) 0:63 subgroupExclusiveXor ( global 4-component vector of uint) 0:63 'ballot' ( temp 4-component vector of uint) 0:65 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( 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 subgroupClusteredMax ( global 4-component vector of float) 0:68 'f4' ( in 4-component vector of float) 0:68 Constant: 0:68 2 (const uint) 0:69 subgroupClusteredAnd ( 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 subgroupClusteredOr ( global 4-component vector of uint) 0:70 'ballot' ( temp 4-component vector of uint) 0:70 Constant: 0:70 2 (const uint) 0:71 subgroupClusteredXor ( global 4-component vector of uint) 0:71 'ballot' ( temp 4-component vector of uint) 0:71 Constant: 0:71 2 (const uint) 0:73 subgroupQuadBroadcast ( global 4-component vector of float) 0:73 'f4' ( in 4-component vector of float) 0:73 Constant: 0:73 0 (const uint) 0:74 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:74 'f4' ( in 4-component vector of float) 0:75 subgroupQuadSwapVertical ( global 4-component vector of float) 0:75 'f4' ( in 4-component vector of float) 0:76 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:76 'f4' ( in 4-component vector of float) 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of uint) 0:78 'parti' ( temp 4-component vector of uint) 0:78 subgroupPartitionNV ( global 4-component vector of uint) 0:78 'f4' ( in 4-component vector of float) 0:79 subgroupPartitionedAddNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMulNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMinNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:82 'f4' ( in 4-component vector of float) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:85 'ballot' ( temp 4-component vector of uint) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:89 'f4' ( in 4-component vector of float) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:92 'ballot' ( temp 4-component vector of uint) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:96 'f4' ( in 4-component vector of float) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:99 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:99 'ballot' ( temp 4-component vector of uint) 0:99 'parti' ( temp 4-component vector of uint) 0:101 Branch: Return with expression 0:101 'result' ( temp 4-component vector of float) 0:108 Function Definition: main( ( global void) 0:108 Function Parameters: 0:110 Sequence 0:110 Sequence 0:110 move second child to first child ( temp 3-component vector of uint) 0:110 'v0' ( temp 3-component vector of uint) 0:110 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:111 Sequence 0:111 move second child to first child ( temp 3-component vector of uint) 0:111 'v1' ( temp 3-component vector of uint) 0:111 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:112 Sequence 0:112 move second child to first child ( temp int) 0:112 'v2' ( temp int) 0:112 'gl_PrimitiveID' ( in int PrimitiveID) 0:113 Sequence 0:113 move second child to first child ( temp int) 0:113 'v3' ( temp int) 0:113 'gl_InstanceID' ( in int InstanceId) 0:114 Sequence 0:114 move second child to first child ( temp int) 0:114 'v4' ( temp int) 0:114 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) 0:115 Sequence 0:115 move second child to first child ( temp 3-component vector of float) 0:115 'v5' ( temp 3-component vector of float) 0:115 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v6' ( temp 3-component vector of float) 0:116 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) 0:117 Sequence 0:117 move second child to first child ( temp 3-component vector of float) 0:117 'v7' ( temp 3-component vector of float) 0:117 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) 0:118 Sequence 0:118 move second child to first child ( temp 3-component vector of float) 0:118 'v8' ( temp 3-component vector of float) 0:118 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v9' ( temp float) 0:119 'gl_RayTminNV' ( in float ObjectRayTminNV) 0:120 Sequence 0:120 move second child to first child ( temp float) 0:120 'v10' ( temp float) 0:120 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:121 Sequence 0:121 move second child to first child ( temp float) 0:121 'v11' ( temp float) 0:121 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:122 Sequence 0:122 move second child to first child ( temp uint) 0:122 'v12' ( temp uint) 0:122 'gl_HitKindNV' ( in uint HitKindNV) 0:123 Sequence 0:123 move second child to first child ( temp 4X3 matrix of float) 0:123 'v13' ( temp 4X3 matrix of float) 0:123 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) 0:124 Sequence 0:124 move second child to first child ( temp 4X3 matrix of float) 0:124 'v14' ( temp 4X3 matrix of float) 0:124 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) 0:125 traceNV ( global void) 0:125 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:125 Constant: 0:125 0 (const uint) 0:125 Constant: 0:125 1 (const uint) 0:125 Constant: 0:125 2 (const uint) 0:125 Constant: 0:125 3 (const uint) 0:125 Constant: 0:125 0 (const uint) 0:125 Constant: 0:125 0.500000 0:125 0.500000 0:125 0.500000 0:125 Constant: 0:125 0.500000 0:125 Constant: 0:125 1.000000 0:125 1.000000 0:125 1.000000 0:125 Constant: 0:125 0.750000 0:125 Constant: 0:125 1 (const int) 0:129 Function Definition: basic_works( ( global void) 0:129 Function Parameters: 0:131 Sequence 0:131 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:132 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:133 subgroupBarrier ( global void) 0:134 subgroupMemoryBarrier ( global void) 0:135 subgroupMemoryBarrierBuffer ( global void) 0:136 subgroupMemoryBarrierImage ( global void) 0:137 subgroupElect ( global bool) 0:141 Function Definition: ballot_works(vf4; ( global void) 0:141 Function Parameters: 0:141 'f4' ( in 4-component vector of float) 0:142 Sequence 0:142 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:143 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:144 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:145 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:146 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:147 subgroupBroadcast ( global 4-component vector of float) 0:147 'f4' ( in 4-component vector of float) 0:147 Constant: 0:147 0 (const uint) 0:148 subgroupBroadcastFirst ( global 4-component vector of float) 0:148 'f4' ( in 4-component vector of float) 0:149 Sequence 0:149 move second child to first child ( temp 4-component vector of uint) 0:149 'ballot' ( temp 4-component vector of uint) 0:149 subgroupBallot ( global 4-component vector of uint) 0:149 Constant: 0:149 false (const bool) 0:150 subgroupInverseBallot ( global bool) 0:150 Constant: 0:150 1 (const uint) 0:150 1 (const uint) 0:150 1 (const uint) 0:150 1 (const uint) 0:151 subgroupBallotBitExtract ( global bool) 0:151 'ballot' ( temp 4-component vector of uint) 0:151 Constant: 0:151 0 (const uint) 0:152 subgroupBallotBitCount ( global uint) 0:152 'ballot' ( temp 4-component vector of uint) 0:153 subgroupBallotInclusiveBitCount ( global uint) 0:153 'ballot' ( temp 4-component vector of uint) 0:154 subgroupBallotExclusiveBitCount ( global uint) 0:154 'ballot' ( temp 4-component vector of uint) 0:155 subgroupBallotFindLSB ( global uint) 0:155 'ballot' ( temp 4-component vector of uint) 0:156 subgroupBallotFindMSB ( global uint) 0:156 'ballot' ( temp 4-component vector of uint) 0:160 Function Definition: vote_works(vf4; ( global void) 0:160 Function Parameters: 0:160 'f4' ( in 4-component vector of float) 0:162 Sequence 0:162 subgroupAll ( global bool) 0:162 Constant: 0:162 true (const bool) 0:163 subgroupAny ( global bool) 0:163 Constant: 0:163 false (const bool) 0:164 subgroupAllEqual ( global bool) 0:164 'f4' ( in 4-component vector of float) 0:169 Function Definition: shuffle_works(vf4; ( global void) 0:169 Function Parameters: 0:169 'f4' ( in 4-component vector of float) 0:171 Sequence 0:171 subgroupShuffle ( global 4-component vector of float) 0:171 'f4' ( in 4-component vector of float) 0:171 Constant: 0:171 0 (const uint) 0:172 subgroupShuffleXor ( global 4-component vector of float) 0:172 'f4' ( in 4-component vector of float) 0:172 Constant: 0:172 1 (const uint) 0:173 subgroupShuffleUp ( global 4-component vector of float) 0:173 'f4' ( in 4-component vector of float) 0:173 Constant: 0:173 1 (const uint) 0:174 subgroupShuffleDown ( global 4-component vector of float) 0:174 'f4' ( in 4-component vector of float) 0:174 Constant: 0:174 1 (const uint) 0:178 Function Definition: arith_works(vf4; ( global void) 0:178 Function Parameters: 0:178 'f4' ( in 4-component vector of float) 0:? Sequence 0:181 subgroupAdd ( global 4-component vector of float) 0:181 'f4' ( in 4-component vector of float) 0:182 subgroupMul ( global 4-component vector of float) 0:182 'f4' ( in 4-component vector of float) 0:183 subgroupMin ( global 4-component vector of float) 0:183 'f4' ( in 4-component vector of float) 0:184 subgroupMax ( global 4-component vector of float) 0:184 'f4' ( in 4-component vector of float) 0:185 subgroupAnd ( global 4-component vector of uint) 0:185 'ballot' ( temp 4-component vector of uint) 0:186 subgroupOr ( global 4-component vector of uint) 0:186 'ballot' ( temp 4-component vector of uint) 0:187 subgroupXor ( global 4-component vector of uint) 0:187 'ballot' ( temp 4-component vector of uint) 0:188 subgroupInclusiveAdd ( global 4-component vector of float) 0:188 'f4' ( in 4-component vector of float) 0:189 subgroupInclusiveMul ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:190 subgroupInclusiveMin ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:191 subgroupInclusiveMax ( global 4-component vector of float) 0:191 'f4' ( in 4-component vector of float) 0:192 subgroupInclusiveAnd ( global 4-component vector of uint) 0:192 'ballot' ( temp 4-component vector of uint) 0:193 subgroupInclusiveOr ( global 4-component vector of uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:194 subgroupInclusiveXor ( global 4-component vector of uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:195 subgroupExclusiveAdd ( global 4-component vector of float) 0:195 'f4' ( in 4-component vector of float) 0:196 subgroupExclusiveMul ( global 4-component vector of float) 0:196 'f4' ( in 4-component vector of float) 0:197 subgroupExclusiveMin ( global 4-component vector of float) 0:197 'f4' ( in 4-component vector of float) 0:198 subgroupExclusiveMax ( global 4-component vector of float) 0:198 'f4' ( in 4-component vector of float) 0:199 subgroupExclusiveAnd ( global 4-component vector of uint) 0:199 'ballot' ( temp 4-component vector of uint) 0:200 subgroupExclusiveOr ( global 4-component vector of uint) 0:200 'ballot' ( temp 4-component vector of uint) 0:201 subgroupExclusiveXor ( global 4-component vector of uint) 0:201 'ballot' ( temp 4-component vector of uint) 0:205 Function Definition: clustered_works(vf4; ( global void) 0:205 Function Parameters: 0:205 'f4' ( in 4-component vector of float) 0:207 Sequence 0:207 Sequence 0:207 move second child to first child ( temp 4-component vector of uint) 0:207 'ballot' ( temp 4-component vector of uint) 0:207 Constant: 0:207 85 (const uint) 0:207 0 (const uint) 0:207 0 (const uint) 0:207 0 (const uint) 0:208 subgroupClusteredAdd ( global 4-component vector of float) 0:208 'f4' ( in 4-component vector of float) 0:208 Constant: 0:208 2 (const uint) 0:209 subgroupClusteredMul ( global 4-component vector of float) 0:209 'f4' ( in 4-component vector of float) 0:209 Constant: 0:209 2 (const uint) 0:210 subgroupClusteredMin ( global 4-component vector of float) 0:210 'f4' ( in 4-component vector of float) 0:210 Constant: 0:210 2 (const uint) 0:211 subgroupClusteredMax ( global 4-component vector of float) 0:211 'f4' ( in 4-component vector of float) 0:211 Constant: 0:211 2 (const uint) 0:212 subgroupClusteredAnd ( global 4-component vector of uint) 0:212 'ballot' ( temp 4-component vector of uint) 0:212 Constant: 0:212 2 (const uint) 0:213 subgroupClusteredOr ( global 4-component vector of uint) 0:213 'ballot' ( temp 4-component vector of uint) 0:213 Constant: 0:213 2 (const uint) 0:214 subgroupClusteredXor ( global 4-component vector of uint) 0:214 'ballot' ( temp 4-component vector of uint) 0:214 Constant: 0:214 2 (const uint) 0:218 Function Definition: quad_works(vf4; ( global void) 0:218 Function Parameters: 0:218 'f4' ( in 4-component vector of float) 0:220 Sequence 0:220 subgroupQuadBroadcast ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:220 Constant: 0:220 0 (const uint) 0:221 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:221 'f4' ( in 4-component vector of float) 0:222 subgroupQuadSwapVertical ( global 4-component vector of float) 0:222 'f4' ( in 4-component vector of float) 0:223 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:223 'f4' ( in 4-component vector of float) 0:227 Function Definition: partitioned_works(vf4; ( global void) 0:227 Function Parameters: 0:227 'f4' ( in 4-component vector of float) 0:229 Sequence 0:229 Sequence 0:229 move second child to first child ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionNV ( global 4-component vector of uint) 0:229 'f4' ( in 4-component vector of float) 0:230 Sequence 0:230 move second child to first child ( temp 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 Constant: 0:230 85 (const uint) 0:230 0 (const uint) 0:230 0 (const uint) 0:230 0 (const uint) 0:231 subgroupPartitionedAddNV ( global 4-component vector of float) 0:231 'f4' ( in 4-component vector of float) 0:231 'parti' ( temp 4-component vector of uint) 0:232 subgroupPartitionedMulNV ( global 4-component vector of float) 0:232 'f4' ( in 4-component vector of float) 0:232 'parti' ( temp 4-component vector of uint) 0:233 subgroupPartitionedMinNV ( global 4-component vector of float) 0:233 'f4' ( in 4-component vector of float) 0:233 'parti' ( temp 4-component vector of uint) 0:234 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:234 'f4' ( in 4-component vector of float) 0:234 'parti' ( temp 4-component vector of uint) 0:235 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:235 'ballot' ( temp 4-component vector of uint) 0:235 'parti' ( temp 4-component vector of uint) 0:236 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:236 'ballot' ( temp 4-component vector of uint) 0:236 'parti' ( temp 4-component vector of uint) 0:237 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:237 'ballot' ( temp 4-component vector of uint) 0:237 'parti' ( temp 4-component vector of uint) 0:238 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:238 'f4' ( in 4-component vector of float) 0:238 'parti' ( temp 4-component vector of uint) 0:239 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:239 'f4' ( in 4-component vector of float) 0:239 'parti' ( temp 4-component vector of uint) 0:240 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:240 'f4' ( in 4-component vector of float) 0:240 'parti' ( temp 4-component vector of uint) 0:241 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:241 'f4' ( in 4-component vector of float) 0:241 'parti' ( temp 4-component vector of uint) 0:242 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:242 'ballot' ( temp 4-component vector of uint) 0:242 'parti' ( temp 4-component vector of uint) 0:243 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:243 'ballot' ( temp 4-component vector of uint) 0:243 'parti' ( temp 4-component vector of uint) 0:244 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:244 'ballot' ( temp 4-component vector of uint) 0:244 'parti' ( temp 4-component vector of uint) 0:245 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:245 'f4' ( in 4-component vector of float) 0:245 'parti' ( temp 4-component vector of uint) 0:246 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:246 'f4' ( in 4-component vector of float) 0:246 'parti' ( temp 4-component vector of uint) 0:247 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:247 'f4' ( in 4-component vector of float) 0:247 'parti' ( temp 4-component vector of uint) 0:248 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:248 'f4' ( in 4-component vector of float) 0:248 'parti' ( temp 4-component vector of uint) 0:249 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:249 'ballot' ( temp 4-component vector of uint) 0:249 'parti' ( temp 4-component vector of uint) 0:250 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:250 'ballot' ( temp 4-component vector of uint) 0:250 'parti' ( temp 4-component vector of uint) 0:251 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:251 'ballot' ( temp 4-component vector of uint) 0:251 'parti' ( temp 4-component vector of uint) 0:255 Function Definition: sm_builtins_err( ( global void) 0:255 Function Parameters: 0:257 Sequence 0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:258 'gl_SMCountNV' ( in uint SMCountNV) 0:259 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:260 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:267 Function Definition: sm_builtins( ( global void) 0:267 Function Parameters: 0:269 Sequence 0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:270 'gl_SMCountNV' ( in uint SMCountNV) 0:271 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:272 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) 0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) Linked closest-hit stage: Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:108 Function Definition: main( ( global void) 0:108 Function Parameters: 0:110 Sequence 0:110 Sequence 0:110 move second child to first child ( temp 3-component vector of uint) 0:110 'v0' ( temp 3-component vector of uint) 0:110 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:111 Sequence 0:111 move second child to first child ( temp 3-component vector of uint) 0:111 'v1' ( temp 3-component vector of uint) 0:111 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:112 Sequence 0:112 move second child to first child ( temp int) 0:112 'v2' ( temp int) 0:112 'gl_PrimitiveID' ( in int PrimitiveID) 0:113 Sequence 0:113 move second child to first child ( temp int) 0:113 'v3' ( temp int) 0:113 'gl_InstanceID' ( in int InstanceId) 0:114 Sequence 0:114 move second child to first child ( temp int) 0:114 'v4' ( temp int) 0:114 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) 0:115 Sequence 0:115 move second child to first child ( temp 3-component vector of float) 0:115 'v5' ( temp 3-component vector of float) 0:115 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v6' ( temp 3-component vector of float) 0:116 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) 0:117 Sequence 0:117 move second child to first child ( temp 3-component vector of float) 0:117 'v7' ( temp 3-component vector of float) 0:117 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) 0:118 Sequence 0:118 move second child to first child ( temp 3-component vector of float) 0:118 'v8' ( temp 3-component vector of float) 0:118 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v9' ( temp float) 0:119 'gl_RayTminNV' ( in float ObjectRayTminNV) 0:120 Sequence 0:120 move second child to first child ( temp float) 0:120 'v10' ( temp float) 0:120 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:121 Sequence 0:121 move second child to first child ( temp float) 0:121 'v11' ( temp float) 0:121 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:122 Sequence 0:122 move second child to first child ( temp uint) 0:122 'v12' ( temp uint) 0:122 'gl_HitKindNV' ( in uint HitKindNV) 0:123 Sequence 0:123 move second child to first child ( temp 4X3 matrix of float) 0:123 'v13' ( temp 4X3 matrix of float) 0:123 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) 0:124 Sequence 0:124 move second child to first child ( temp 4X3 matrix of float) 0:124 'v14' ( temp 4X3 matrix of float) 0:124 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) 0:125 traceNV ( global void) 0:125 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:125 Constant: 0:125 0 (const uint) 0:125 Constant: 0:125 1 (const uint) 0:125 Constant: 0:125 2 (const uint) 0:125 Constant: 0:125 3 (const uint) 0:125 Constant: 0:125 0 (const uint) 0:125 Constant: 0:125 0.500000 0:125 0.500000 0:125 0.500000 0:125 Constant: 0:125 0.500000 0:125 Constant: 0:125 1.000000 0:125 1.000000 0:125 1.000000 0:125 Constant: 0:125 0.750000 0:125 Constant: 0:125 1 (const int) 0:? Linker Objects 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) 0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.460.subgroup.rgen.out000066400000000000000000001240441506534232700232550ustar00rootroot00000000000000glsl.460.subgroup.rgen ERROR: 0:7: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:8: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:22: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:23: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:24: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:25: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:26: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:251: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:252: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:253: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:254: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:4 Function Parameters: 0:4 'f4' ( in 4-component vector of float) 0:? Sequence 0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:9 subgroupBarrier ( global void) 0:10 subgroupMemoryBarrier ( global void) 0:11 subgroupMemoryBarrierBuffer ( global void) 0:12 subgroupMemoryBarrierImage ( global void) 0:13 subgroupElect ( global bool) 0:14 'gl_NumSubgroups' ( temp float) 0:15 'gl_SubgroupID' ( temp float) 0:16 Constant: 0:16 0.000000 0:18 subgroupAll ( global bool) 0:18 Constant: 0:18 true (const bool) 0:19 subgroupAny ( global bool) 0:19 Constant: 0:19 false (const bool) 0:20 subgroupAllEqual ( global bool) 0:20 'f4' ( in 4-component vector of float) 0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:27 subgroupBroadcast ( global 4-component vector of float) 0:27 'f4' ( in 4-component vector of float) 0:27 Constant: 0:27 0 (const uint) 0:28 subgroupBroadcastFirst ( global 4-component vector of float) 0:28 'f4' ( in 4-component vector of float) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'ballot' ( temp 4-component vector of uint) 0:29 subgroupBallot ( global 4-component vector of uint) 0:29 Constant: 0:29 false (const bool) 0:30 subgroupInverseBallot ( global bool) 0:30 Constant: 0:30 1 (const uint) 0:30 1 (const uint) 0:30 1 (const uint) 0:30 1 (const uint) 0:31 subgroupBallotBitExtract ( global bool) 0:31 'ballot' ( temp 4-component vector of uint) 0:31 Constant: 0:31 0 (const uint) 0:32 subgroupBallotBitCount ( global uint) 0:32 'ballot' ( temp 4-component vector of uint) 0:33 subgroupBallotInclusiveBitCount ( global uint) 0:33 'ballot' ( temp 4-component vector of uint) 0:34 subgroupBallotExclusiveBitCount ( global uint) 0:34 'ballot' ( temp 4-component vector of uint) 0:35 subgroupBallotFindLSB ( global uint) 0:35 'ballot' ( temp 4-component vector of uint) 0:36 subgroupBallotFindMSB ( global uint) 0:36 'ballot' ( temp 4-component vector of uint) 0:38 subgroupShuffle ( global 4-component vector of float) 0:38 'f4' ( in 4-component vector of float) 0:38 Constant: 0:38 0 (const uint) 0:39 subgroupShuffleXor ( 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 subgroupShuffleUp ( global 4-component vector of float) 0:40 'f4' ( in 4-component vector of float) 0:40 Constant: 0:40 1 (const uint) 0:41 subgroupShuffleDown ( global 4-component vector of float) 0:41 'f4' ( in 4-component vector of float) 0:41 Constant: 0:41 1 (const uint) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'result' ( temp 4-component vector of float) 0:43 subgroupAdd ( global 4-component vector of float) 0:43 'f4' ( in 4-component vector of float) 0:44 subgroupMul ( global 4-component vector of float) 0:44 'f4' ( in 4-component vector of float) 0:45 subgroupMin ( global 4-component vector of float) 0:45 'f4' ( in 4-component vector of float) 0:46 subgroupMax ( global 4-component vector of float) 0:46 'f4' ( in 4-component vector of float) 0:47 subgroupAnd ( global 4-component vector of uint) 0:47 'ballot' ( temp 4-component vector of uint) 0:48 subgroupOr ( global 4-component vector of uint) 0:48 'ballot' ( temp 4-component vector of uint) 0:49 subgroupXor ( global 4-component vector of uint) 0:49 'ballot' ( temp 4-component vector of uint) 0:50 subgroupInclusiveAdd ( global 4-component vector of float) 0:50 'f4' ( in 4-component vector of float) 0:51 subgroupInclusiveMul ( global 4-component vector of float) 0:51 'f4' ( in 4-component vector of float) 0:52 subgroupInclusiveMin ( global 4-component vector of float) 0:52 'f4' ( in 4-component vector of float) 0:53 subgroupInclusiveMax ( global 4-component vector of float) 0:53 'f4' ( in 4-component vector of float) 0:54 subgroupInclusiveAnd ( global 4-component vector of uint) 0:54 'ballot' ( temp 4-component vector of uint) 0:55 subgroupInclusiveOr ( global 4-component vector of uint) 0:55 'ballot' ( temp 4-component vector of uint) 0:56 subgroupInclusiveXor ( global 4-component vector of uint) 0:56 'ballot' ( temp 4-component vector of uint) 0:57 subgroupExclusiveAdd ( global 4-component vector of float) 0:57 'f4' ( in 4-component vector of float) 0:58 subgroupExclusiveMul ( global 4-component vector of float) 0:58 'f4' ( in 4-component vector of float) 0:59 subgroupExclusiveMin ( global 4-component vector of float) 0:59 'f4' ( in 4-component vector of float) 0:60 subgroupExclusiveMax ( global 4-component vector of float) 0:60 'f4' ( in 4-component vector of float) 0:61 subgroupExclusiveAnd ( global 4-component vector of uint) 0:61 'ballot' ( temp 4-component vector of uint) 0:62 subgroupExclusiveOr ( global 4-component vector of uint) 0:62 'ballot' ( temp 4-component vector of uint) 0:63 subgroupExclusiveXor ( global 4-component vector of uint) 0:63 'ballot' ( temp 4-component vector of uint) 0:65 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( 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 subgroupClusteredMax ( global 4-component vector of float) 0:68 'f4' ( in 4-component vector of float) 0:68 Constant: 0:68 2 (const uint) 0:69 subgroupClusteredAnd ( 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 subgroupClusteredOr ( global 4-component vector of uint) 0:70 'ballot' ( temp 4-component vector of uint) 0:70 Constant: 0:70 2 (const uint) 0:71 subgroupClusteredXor ( global 4-component vector of uint) 0:71 'ballot' ( temp 4-component vector of uint) 0:71 Constant: 0:71 2 (const uint) 0:73 subgroupQuadBroadcast ( global 4-component vector of float) 0:73 'f4' ( in 4-component vector of float) 0:73 Constant: 0:73 0 (const uint) 0:74 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:74 'f4' ( in 4-component vector of float) 0:75 subgroupQuadSwapVertical ( global 4-component vector of float) 0:75 'f4' ( in 4-component vector of float) 0:76 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:76 'f4' ( in 4-component vector of float) 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of uint) 0:78 'parti' ( temp 4-component vector of uint) 0:78 subgroupPartitionNV ( global 4-component vector of uint) 0:78 'f4' ( in 4-component vector of float) 0:79 subgroupPartitionedAddNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMulNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMinNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:82 'f4' ( in 4-component vector of float) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:85 'ballot' ( temp 4-component vector of uint) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:89 'f4' ( in 4-component vector of float) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:92 'ballot' ( temp 4-component vector of uint) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:96 'f4' ( in 4-component vector of float) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:99 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:99 'ballot' ( temp 4-component vector of uint) 0:99 'parti' ( temp 4-component vector of uint) 0:101 Branch: Return with expression 0:101 'result' ( temp 4-component vector of float) 0:113 Function Definition: main( ( global void) 0:113 Function Parameters: 0:115 Sequence 0:115 Sequence 0:115 move second child to first child ( temp uint) 0:115 'lx' ( temp uint) 0:115 direct index ( temp uint) 0:115 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:115 Constant: 0:115 0 (const int) 0:116 Sequence 0:116 move second child to first child ( temp uint) 0:116 'ly' ( temp uint) 0:116 direct index ( temp uint) 0:116 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:116 Constant: 0:116 1 (const int) 0:117 Sequence 0:117 move second child to first child ( temp uint) 0:117 'sx' ( temp uint) 0:117 direct index ( temp uint) 0:117 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:117 Constant: 0:117 0 (const int) 0:118 Sequence 0:118 move second child to first child ( temp uint) 0:118 'sy' ( temp uint) 0:118 direct index ( temp uint) 0:118 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:118 Constant: 0:118 1 (const int) 0:119 traceNV ( global void) 0:119 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:119 'lx' ( temp uint) 0:119 'ly' ( temp uint) 0:119 'sx' ( temp uint) 0:119 'sy' ( temp uint) 0:119 Constant: 0:119 0 (const uint) 0:119 origin: direct index for structure (layout( column_major std430 offset=16) buffer 3-component vector of float) 0:119 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) 0:119 Constant: 0:119 1 (const uint) 0:119 Constant: 0:119 0.500000 0:119 dir: direct index for structure (layout( column_major std430 offset=0) buffer 3-component vector of float) 0:119 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) 0:119 Constant: 0:119 0 (const uint) 0:119 Constant: 0:119 0.750000 0:119 Constant: 0:119 1 (const int) 0:123 Function Definition: basic_works( ( global void) 0:123 Function Parameters: 0:125 Sequence 0:125 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:126 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:127 subgroupBarrier ( global void) 0:128 subgroupMemoryBarrier ( global void) 0:129 subgroupMemoryBarrierBuffer ( global void) 0:130 subgroupMemoryBarrierImage ( global void) 0:131 subgroupElect ( global bool) 0:135 Function Definition: ballot_works(vf4; ( global void) 0:135 Function Parameters: 0:135 'f4' ( in 4-component vector of float) 0:136 Sequence 0:136 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:137 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:138 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:139 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:140 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:141 subgroupBroadcast ( global 4-component vector of float) 0:141 'f4' ( in 4-component vector of float) 0:141 Constant: 0:141 0 (const uint) 0:142 subgroupBroadcastFirst ( global 4-component vector of float) 0:142 'f4' ( in 4-component vector of float) 0:143 Sequence 0:143 move second child to first child ( temp 4-component vector of uint) 0:143 'ballot' ( temp 4-component vector of uint) 0:143 subgroupBallot ( global 4-component vector of uint) 0:143 Constant: 0:143 false (const bool) 0:144 subgroupInverseBallot ( global bool) 0:144 Constant: 0:144 1 (const uint) 0:144 1 (const uint) 0:144 1 (const uint) 0:144 1 (const uint) 0:145 subgroupBallotBitExtract ( global bool) 0:145 'ballot' ( temp 4-component vector of uint) 0:145 Constant: 0:145 0 (const uint) 0:146 subgroupBallotBitCount ( global uint) 0:146 'ballot' ( temp 4-component vector of uint) 0:147 subgroupBallotInclusiveBitCount ( global uint) 0:147 'ballot' ( temp 4-component vector of uint) 0:148 subgroupBallotExclusiveBitCount ( global uint) 0:148 'ballot' ( temp 4-component vector of uint) 0:149 subgroupBallotFindLSB ( global uint) 0:149 'ballot' ( temp 4-component vector of uint) 0:150 subgroupBallotFindMSB ( global uint) 0:150 'ballot' ( temp 4-component vector of uint) 0:154 Function Definition: vote_works(vf4; ( global void) 0:154 Function Parameters: 0:154 'f4' ( in 4-component vector of float) 0:156 Sequence 0:156 subgroupAll ( global bool) 0:156 Constant: 0:156 true (const bool) 0:157 subgroupAny ( global bool) 0:157 Constant: 0:157 false (const bool) 0:158 subgroupAllEqual ( global bool) 0:158 'f4' ( in 4-component vector of float) 0:163 Function Definition: shuffle_works(vf4; ( global void) 0:163 Function Parameters: 0:163 'f4' ( in 4-component vector of float) 0:165 Sequence 0:165 subgroupShuffle ( global 4-component vector of float) 0:165 'f4' ( in 4-component vector of float) 0:165 Constant: 0:165 0 (const uint) 0:166 subgroupShuffleXor ( global 4-component vector of float) 0:166 'f4' ( in 4-component vector of float) 0:166 Constant: 0:166 1 (const uint) 0:167 subgroupShuffleUp ( global 4-component vector of float) 0:167 'f4' ( in 4-component vector of float) 0:167 Constant: 0:167 1 (const uint) 0:168 subgroupShuffleDown ( global 4-component vector of float) 0:168 'f4' ( in 4-component vector of float) 0:168 Constant: 0:168 1 (const uint) 0:172 Function Definition: arith_works(vf4; ( global void) 0:172 Function Parameters: 0:172 'f4' ( in 4-component vector of float) 0:? Sequence 0:175 subgroupAdd ( global 4-component vector of float) 0:175 'f4' ( in 4-component vector of float) 0:176 subgroupMul ( global 4-component vector of float) 0:176 'f4' ( in 4-component vector of float) 0:177 subgroupMin ( global 4-component vector of float) 0:177 'f4' ( in 4-component vector of float) 0:178 subgroupMax ( global 4-component vector of float) 0:178 'f4' ( in 4-component vector of float) 0:179 subgroupAnd ( global 4-component vector of uint) 0:179 'ballot' ( temp 4-component vector of uint) 0:180 subgroupOr ( global 4-component vector of uint) 0:180 'ballot' ( temp 4-component vector of uint) 0:181 subgroupXor ( global 4-component vector of uint) 0:181 'ballot' ( temp 4-component vector of uint) 0:182 subgroupInclusiveAdd ( global 4-component vector of float) 0:182 'f4' ( in 4-component vector of float) 0:183 subgroupInclusiveMul ( global 4-component vector of float) 0:183 'f4' ( in 4-component vector of float) 0:184 subgroupInclusiveMin ( global 4-component vector of float) 0:184 'f4' ( in 4-component vector of float) 0:185 subgroupInclusiveMax ( global 4-component vector of float) 0:185 'f4' ( in 4-component vector of float) 0:186 subgroupInclusiveAnd ( global 4-component vector of uint) 0:186 'ballot' ( temp 4-component vector of uint) 0:187 subgroupInclusiveOr ( global 4-component vector of uint) 0:187 'ballot' ( temp 4-component vector of uint) 0:188 subgroupInclusiveXor ( global 4-component vector of uint) 0:188 'ballot' ( temp 4-component vector of uint) 0:189 subgroupExclusiveAdd ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:190 subgroupExclusiveMul ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:191 subgroupExclusiveMin ( global 4-component vector of float) 0:191 'f4' ( in 4-component vector of float) 0:192 subgroupExclusiveMax ( global 4-component vector of float) 0:192 'f4' ( in 4-component vector of float) 0:193 subgroupExclusiveAnd ( global 4-component vector of uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:194 subgroupExclusiveOr ( global 4-component vector of uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:195 subgroupExclusiveXor ( global 4-component vector of uint) 0:195 'ballot' ( temp 4-component vector of uint) 0:199 Function Definition: clustered_works(vf4; ( global void) 0:199 Function Parameters: 0:199 'f4' ( in 4-component vector of float) 0:201 Sequence 0:201 Sequence 0:201 move second child to first child ( temp 4-component vector of uint) 0:201 'ballot' ( temp 4-component vector of uint) 0:201 Constant: 0:201 85 (const uint) 0:201 0 (const uint) 0:201 0 (const uint) 0:201 0 (const uint) 0:202 subgroupClusteredAdd ( global 4-component vector of float) 0:202 'f4' ( in 4-component vector of float) 0:202 Constant: 0:202 2 (const uint) 0:203 subgroupClusteredMul ( global 4-component vector of float) 0:203 'f4' ( in 4-component vector of float) 0:203 Constant: 0:203 2 (const uint) 0:204 subgroupClusteredMin ( global 4-component vector of float) 0:204 'f4' ( in 4-component vector of float) 0:204 Constant: 0:204 2 (const uint) 0:205 subgroupClusteredMax ( global 4-component vector of float) 0:205 'f4' ( in 4-component vector of float) 0:205 Constant: 0:205 2 (const uint) 0:206 subgroupClusteredAnd ( global 4-component vector of uint) 0:206 'ballot' ( temp 4-component vector of uint) 0:206 Constant: 0:206 2 (const uint) 0:207 subgroupClusteredOr ( global 4-component vector of uint) 0:207 'ballot' ( temp 4-component vector of uint) 0:207 Constant: 0:207 2 (const uint) 0:208 subgroupClusteredXor ( global 4-component vector of uint) 0:208 'ballot' ( temp 4-component vector of uint) 0:208 Constant: 0:208 2 (const uint) 0:212 Function Definition: quad_works(vf4; ( global void) 0:212 Function Parameters: 0:212 'f4' ( in 4-component vector of float) 0:214 Sequence 0:214 subgroupQuadBroadcast ( global 4-component vector of float) 0:214 'f4' ( in 4-component vector of float) 0:214 Constant: 0:214 0 (const uint) 0:215 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:215 'f4' ( in 4-component vector of float) 0:216 subgroupQuadSwapVertical ( global 4-component vector of float) 0:216 'f4' ( in 4-component vector of float) 0:217 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:217 'f4' ( in 4-component vector of float) 0:221 Function Definition: partitioned_works(vf4; ( global void) 0:221 Function Parameters: 0:221 'f4' ( in 4-component vector of float) 0:223 Sequence 0:223 Sequence 0:223 move second child to first child ( temp 4-component vector of uint) 0:223 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionNV ( global 4-component vector of uint) 0:223 'f4' ( in 4-component vector of float) 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 subgroupPartitionedAddNV ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedMulNV ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedMinNV ( global 4-component vector of float) 0:227 'f4' ( in 4-component vector of float) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:228 'f4' ( in 4-component vector of float) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:229 'ballot' ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint) 0:231 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint) 0:232 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:232 'f4' ( in 4-component vector of float) 0:232 'parti' ( temp 4-component vector of uint) 0:233 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:233 'f4' ( in 4-component vector of float) 0:233 'parti' ( temp 4-component vector of uint) 0:234 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:234 'f4' ( in 4-component vector of float) 0:234 'parti' ( temp 4-component vector of uint) 0:235 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:235 'f4' ( in 4-component vector of float) 0:235 'parti' ( temp 4-component vector of uint) 0:236 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:236 'ballot' ( temp 4-component vector of uint) 0:236 'parti' ( temp 4-component vector of uint) 0:237 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:237 'ballot' ( temp 4-component vector of uint) 0:237 'parti' ( temp 4-component vector of uint) 0:238 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:238 'ballot' ( temp 4-component vector of uint) 0:238 'parti' ( temp 4-component vector of uint) 0:239 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:239 'f4' ( in 4-component vector of float) 0:239 'parti' ( temp 4-component vector of uint) 0:240 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:240 'f4' ( in 4-component vector of float) 0:240 'parti' ( temp 4-component vector of uint) 0:241 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:241 'f4' ( in 4-component vector of float) 0:241 'parti' ( temp 4-component vector of uint) 0:242 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:242 'f4' ( in 4-component vector of float) 0:242 'parti' ( temp 4-component vector of uint) 0:243 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:243 'ballot' ( temp 4-component vector of uint) 0:243 'parti' ( temp 4-component vector of uint) 0:244 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:244 'ballot' ( temp 4-component vector of uint) 0:244 'parti' ( temp 4-component vector of uint) 0:245 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:245 'ballot' ( temp 4-component vector of uint) 0:245 'parti' ( temp 4-component vector of uint) 0:249 Function Definition: sm_builtins_err( ( global void) 0:249 Function Parameters: 0:251 Sequence 0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:252 'gl_SMCountNV' ( in uint SMCountNV) 0:253 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:254 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:261 Function Definition: sm_builtins( ( global void) 0:261 Function Parameters: 0:263 Sequence 0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:264 'gl_SMCountNV' ( in uint SMCountNV) 0:265 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:266 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV) 0:? 'payload' (layout( location=0) rayPayloadNV 4-component vector of float) 0:? 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) Linked ray-generation stage: Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:113 Function Definition: main( ( global void) 0:113 Function Parameters: 0:115 Sequence 0:115 Sequence 0:115 move second child to first child ( temp uint) 0:115 'lx' ( temp uint) 0:115 direct index ( temp uint) 0:115 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:115 Constant: 0:115 0 (const int) 0:116 Sequence 0:116 move second child to first child ( temp uint) 0:116 'ly' ( temp uint) 0:116 direct index ( temp uint) 0:116 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:116 Constant: 0:116 1 (const int) 0:117 Sequence 0:117 move second child to first child ( temp uint) 0:117 'sx' ( temp uint) 0:117 direct index ( temp uint) 0:117 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:117 Constant: 0:117 0 (const int) 0:118 Sequence 0:118 move second child to first child ( temp uint) 0:118 'sy' ( temp uint) 0:118 direct index ( temp uint) 0:118 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:118 Constant: 0:118 1 (const int) 0:119 traceNV ( global void) 0:119 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:119 'lx' ( temp uint) 0:119 'ly' ( temp uint) 0:119 'sx' ( temp uint) 0:119 'sy' ( temp uint) 0:119 Constant: 0:119 0 (const uint) 0:119 origin: direct index for structure (layout( column_major std430 offset=16) buffer 3-component vector of float) 0:119 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) 0:119 Constant: 0:119 1 (const uint) 0:119 Constant: 0:119 0.500000 0:119 dir: direct index for structure (layout( column_major std430 offset=0) buffer 3-component vector of float) 0:119 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) 0:119 Constant: 0:119 0 (const uint) 0:119 Constant: 0:119 0.750000 0:119 Constant: 0:119 1 (const int) 0:? Linker Objects 0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV) 0:? 'payload' (layout( location=0) rayPayloadNV 4-component vector of float) 0:? 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) glslang-16.0.0/Test/baseResults/glsl.460.subgroup.rint.out000066400000000000000000001252461506534232700233030ustar00rootroot00000000000000glsl.460.subgroup.rint ERROR: 0:8: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:9: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:10: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:11: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:12: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:13: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:14: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:15: 'gl_NumSubgroups' : undeclared identifier ERROR: 0:16: 'gl_SubgroupID' : undeclared identifier ERROR: 0:17: 'subgroupMemoryBarrierShared' : no matching overloaded function found ERROR: 0:19: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:20: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:21: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:23: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:24: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:25: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:26: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:27: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:28: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:29: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:30: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:31: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:32: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:33: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:34: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:35: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:36: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:37: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:39: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:40: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:41: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:42: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:44: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:45: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:46: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:47: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:48: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:49: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:50: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:51: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:52: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:53: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:54: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:55: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:56: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:57: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:58: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:59: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:60: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:61: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:62: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:63: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:64: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:66: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:67: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:68: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:69: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:70: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:71: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:72: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:74: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:75: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:76: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:77: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:79: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:257: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:258: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:259: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:260: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:5 Function Parameters: 0:5 'f4' ( in 4-component vector of float) 0:? Sequence 0:8 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:9 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:10 subgroupBarrier ( global void) 0:11 subgroupMemoryBarrier ( global void) 0:12 subgroupMemoryBarrierBuffer ( global void) 0:13 subgroupMemoryBarrierImage ( global void) 0:14 subgroupElect ( global bool) 0:15 'gl_NumSubgroups' ( temp float) 0:16 'gl_SubgroupID' ( temp float) 0:17 Constant: 0:17 0.000000 0:19 subgroupAll ( global bool) 0:19 Constant: 0:19 true (const bool) 0:20 subgroupAny ( global bool) 0:20 Constant: 0:20 false (const bool) 0:21 subgroupAllEqual ( global bool) 0:21 'f4' ( in 4-component vector of float) 0:23 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:24 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:25 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:26 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:27 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:28 subgroupBroadcast ( global 4-component vector of float) 0:28 'f4' ( in 4-component vector of float) 0:28 Constant: 0:28 0 (const uint) 0:29 subgroupBroadcastFirst ( global 4-component vector of float) 0:29 'f4' ( in 4-component vector of float) 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of uint) 0:30 'ballot' ( temp 4-component vector of uint) 0:30 subgroupBallot ( global 4-component vector of uint) 0:30 Constant: 0:30 false (const bool) 0:31 subgroupInverseBallot ( global bool) 0:31 Constant: 0:31 1 (const uint) 0:31 1 (const uint) 0:31 1 (const uint) 0:31 1 (const uint) 0:32 subgroupBallotBitExtract ( global bool) 0:32 'ballot' ( temp 4-component vector of uint) 0:32 Constant: 0:32 0 (const uint) 0:33 subgroupBallotBitCount ( global uint) 0:33 'ballot' ( temp 4-component vector of uint) 0:34 subgroupBallotInclusiveBitCount ( global uint) 0:34 'ballot' ( temp 4-component vector of uint) 0:35 subgroupBallotExclusiveBitCount ( global uint) 0:35 'ballot' ( temp 4-component vector of uint) 0:36 subgroupBallotFindLSB ( global uint) 0:36 'ballot' ( temp 4-component vector of uint) 0:37 subgroupBallotFindMSB ( global uint) 0:37 'ballot' ( temp 4-component vector of uint) 0:39 subgroupShuffle ( global 4-component vector of float) 0:39 'f4' ( in 4-component vector of float) 0:39 Constant: 0:39 0 (const uint) 0:40 subgroupShuffleXor ( global 4-component vector of float) 0:40 'f4' ( in 4-component vector of float) 0:40 Constant: 0:40 1 (const uint) 0:41 subgroupShuffleUp ( global 4-component vector of float) 0:41 'f4' ( in 4-component vector of float) 0:41 Constant: 0:41 1 (const uint) 0:42 subgroupShuffleDown ( global 4-component vector of float) 0:42 'f4' ( in 4-component vector of float) 0:42 Constant: 0:42 1 (const uint) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'result' ( temp 4-component vector of float) 0:44 subgroupAdd ( global 4-component vector of float) 0:44 'f4' ( in 4-component vector of float) 0:45 subgroupMul ( global 4-component vector of float) 0:45 'f4' ( in 4-component vector of float) 0:46 subgroupMin ( global 4-component vector of float) 0:46 'f4' ( in 4-component vector of float) 0:47 subgroupMax ( global 4-component vector of float) 0:47 'f4' ( in 4-component vector of float) 0:48 subgroupAnd ( global 4-component vector of uint) 0:48 'ballot' ( temp 4-component vector of uint) 0:49 subgroupOr ( global 4-component vector of uint) 0:49 'ballot' ( temp 4-component vector of uint) 0:50 subgroupXor ( global 4-component vector of uint) 0:50 'ballot' ( temp 4-component vector of uint) 0:51 subgroupInclusiveAdd ( global 4-component vector of float) 0:51 'f4' ( in 4-component vector of float) 0:52 subgroupInclusiveMul ( global 4-component vector of float) 0:52 'f4' ( in 4-component vector of float) 0:53 subgroupInclusiveMin ( global 4-component vector of float) 0:53 'f4' ( in 4-component vector of float) 0:54 subgroupInclusiveMax ( global 4-component vector of float) 0:54 'f4' ( in 4-component vector of float) 0:55 subgroupInclusiveAnd ( global 4-component vector of uint) 0:55 'ballot' ( temp 4-component vector of uint) 0:56 subgroupInclusiveOr ( global 4-component vector of uint) 0:56 'ballot' ( temp 4-component vector of uint) 0:57 subgroupInclusiveXor ( global 4-component vector of uint) 0:57 'ballot' ( temp 4-component vector of uint) 0:58 subgroupExclusiveAdd ( global 4-component vector of float) 0:58 'f4' ( in 4-component vector of float) 0:59 subgroupExclusiveMul ( global 4-component vector of float) 0:59 'f4' ( in 4-component vector of float) 0:60 subgroupExclusiveMin ( global 4-component vector of float) 0:60 'f4' ( in 4-component vector of float) 0:61 subgroupExclusiveMax ( global 4-component vector of float) 0:61 'f4' ( in 4-component vector of float) 0:62 subgroupExclusiveAnd ( global 4-component vector of uint) 0:62 'ballot' ( temp 4-component vector of uint) 0:63 subgroupExclusiveOr ( global 4-component vector of uint) 0:63 'ballot' ( temp 4-component vector of uint) 0:64 subgroupExclusiveXor ( global 4-component vector of uint) 0:64 'ballot' ( temp 4-component vector of uint) 0:66 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( global 4-component vector of float) 0:68 'f4' ( in 4-component vector of float) 0:68 Constant: 0:68 2 (const uint) 0:69 subgroupClusteredMax ( global 4-component vector of float) 0:69 'f4' ( in 4-component vector of float) 0:69 Constant: 0:69 2 (const uint) 0:70 subgroupClusteredAnd ( global 4-component vector of uint) 0:70 'ballot' ( temp 4-component vector of uint) 0:70 Constant: 0:70 2 (const uint) 0:71 subgroupClusteredOr ( global 4-component vector of uint) 0:71 'ballot' ( temp 4-component vector of uint) 0:71 Constant: 0:71 2 (const uint) 0:72 subgroupClusteredXor ( global 4-component vector of uint) 0:72 'ballot' ( temp 4-component vector of uint) 0:72 Constant: 0:72 2 (const uint) 0:74 subgroupQuadBroadcast ( global 4-component vector of float) 0:74 'f4' ( in 4-component vector of float) 0:74 Constant: 0:74 0 (const uint) 0:75 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:75 'f4' ( in 4-component vector of float) 0:76 subgroupQuadSwapVertical ( global 4-component vector of float) 0:76 'f4' ( in 4-component vector of float) 0:77 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:77 'f4' ( in 4-component vector of float) 0:79 Sequence 0:79 move second child to first child ( temp 4-component vector of uint) 0:79 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionNV ( global 4-component vector of uint) 0:79 'f4' ( in 4-component vector of float) 0:80 subgroupPartitionedAddNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMulNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedMinNV ( global 4-component vector of float) 0:82 'f4' ( in 4-component vector of float) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:83 'f4' ( in 4-component vector of float) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:85 'ballot' ( temp 4-component vector of uint) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:86 'ballot' ( temp 4-component vector of uint) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:89 'f4' ( in 4-component vector of float) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:90 'f4' ( in 4-component vector of float) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:92 'ballot' ( temp 4-component vector of uint) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:93 'ballot' ( temp 4-component vector of uint) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:96 'f4' ( in 4-component vector of float) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:97 'f4' ( in 4-component vector of float) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:99 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:99 'ballot' ( temp 4-component vector of uint) 0:99 'parti' ( temp 4-component vector of uint) 0:100 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:100 'ballot' ( temp 4-component vector of uint) 0:100 'parti' ( temp 4-component vector of uint) 0:102 Branch: Return with expression 0:102 'result' ( temp 4-component vector of float) 0:108 Function Definition: main( ( global void) 0:108 Function Parameters: 0:110 Sequence 0:110 Sequence 0:110 move second child to first child ( temp 3-component vector of uint) 0:110 'v0' ( temp 3-component vector of uint) 0:110 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:111 Sequence 0:111 move second child to first child ( temp 3-component vector of uint) 0:111 'v1' ( temp 3-component vector of uint) 0:111 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:112 Sequence 0:112 move second child to first child ( temp int) 0:112 'v2' ( temp int) 0:112 'gl_PrimitiveID' ( in int PrimitiveID) 0:113 Sequence 0:113 move second child to first child ( temp int) 0:113 'v3' ( temp int) 0:113 'gl_InstanceID' ( in int InstanceId) 0:114 Sequence 0:114 move second child to first child ( temp int) 0:114 'v4' ( temp int) 0:114 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) 0:115 Sequence 0:115 move second child to first child ( temp 3-component vector of float) 0:115 'v5' ( temp 3-component vector of float) 0:115 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v6' ( temp 3-component vector of float) 0:116 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) 0:117 Sequence 0:117 move second child to first child ( temp 3-component vector of float) 0:117 'v7' ( temp 3-component vector of float) 0:117 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) 0:118 Sequence 0:118 move second child to first child ( temp 3-component vector of float) 0:118 'v8' ( temp 3-component vector of float) 0:118 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v9' ( temp float) 0:119 'gl_RayTminNV' ( in float ObjectRayTminNV) 0:120 Sequence 0:120 move second child to first child ( temp float) 0:120 'v10' ( temp float) 0:120 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:121 Sequence 0:121 move second child to first child ( temp 4X3 matrix of float) 0:121 'v11' ( temp 4X3 matrix of float) 0:121 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) 0:122 Sequence 0:122 move second child to first child ( temp 4X3 matrix of float) 0:122 'v12' ( temp 4X3 matrix of float) 0:122 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) 0:123 move second child to first child ( temp 4-component vector of float) 0:123 'iAttr' ( hitAttributeNV 4-component vector of float) 0:123 Constant: 0:123 0.500000 0:123 0.500000 0:123 0.000000 0:123 1.000000 0:124 reportIntersectionNV ( global bool) 0:124 Constant: 0:124 0.500000 0:124 Constant: 0:124 1 (const uint) 0:129 Function Definition: basic_works( ( global void) 0:129 Function Parameters: 0:131 Sequence 0:131 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:132 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:133 subgroupBarrier ( global void) 0:134 subgroupMemoryBarrier ( global void) 0:135 subgroupMemoryBarrierBuffer ( global void) 0:136 subgroupMemoryBarrierImage ( global void) 0:137 subgroupElect ( global bool) 0:141 Function Definition: ballot_works(vf4; ( global void) 0:141 Function Parameters: 0:141 'f4' ( in 4-component vector of float) 0:142 Sequence 0:142 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:143 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:144 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:145 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:146 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:147 subgroupBroadcast ( global 4-component vector of float) 0:147 'f4' ( in 4-component vector of float) 0:147 Constant: 0:147 0 (const uint) 0:148 subgroupBroadcastFirst ( global 4-component vector of float) 0:148 'f4' ( in 4-component vector of float) 0:149 Sequence 0:149 move second child to first child ( temp 4-component vector of uint) 0:149 'ballot' ( temp 4-component vector of uint) 0:149 subgroupBallot ( global 4-component vector of uint) 0:149 Constant: 0:149 false (const bool) 0:150 subgroupInverseBallot ( global bool) 0:150 Constant: 0:150 1 (const uint) 0:150 1 (const uint) 0:150 1 (const uint) 0:150 1 (const uint) 0:151 subgroupBallotBitExtract ( global bool) 0:151 'ballot' ( temp 4-component vector of uint) 0:151 Constant: 0:151 0 (const uint) 0:152 subgroupBallotBitCount ( global uint) 0:152 'ballot' ( temp 4-component vector of uint) 0:153 subgroupBallotInclusiveBitCount ( global uint) 0:153 'ballot' ( temp 4-component vector of uint) 0:154 subgroupBallotExclusiveBitCount ( global uint) 0:154 'ballot' ( temp 4-component vector of uint) 0:155 subgroupBallotFindLSB ( global uint) 0:155 'ballot' ( temp 4-component vector of uint) 0:156 subgroupBallotFindMSB ( global uint) 0:156 'ballot' ( temp 4-component vector of uint) 0:160 Function Definition: vote_works(vf4; ( global void) 0:160 Function Parameters: 0:160 'f4' ( in 4-component vector of float) 0:162 Sequence 0:162 subgroupAll ( global bool) 0:162 Constant: 0:162 true (const bool) 0:163 subgroupAny ( global bool) 0:163 Constant: 0:163 false (const bool) 0:164 subgroupAllEqual ( global bool) 0:164 'f4' ( in 4-component vector of float) 0:169 Function Definition: shuffle_works(vf4; ( global void) 0:169 Function Parameters: 0:169 'f4' ( in 4-component vector of float) 0:171 Sequence 0:171 subgroupShuffle ( global 4-component vector of float) 0:171 'f4' ( in 4-component vector of float) 0:171 Constant: 0:171 0 (const uint) 0:172 subgroupShuffleXor ( global 4-component vector of float) 0:172 'f4' ( in 4-component vector of float) 0:172 Constant: 0:172 1 (const uint) 0:173 subgroupShuffleUp ( global 4-component vector of float) 0:173 'f4' ( in 4-component vector of float) 0:173 Constant: 0:173 1 (const uint) 0:174 subgroupShuffleDown ( global 4-component vector of float) 0:174 'f4' ( in 4-component vector of float) 0:174 Constant: 0:174 1 (const uint) 0:178 Function Definition: arith_works(vf4; ( global void) 0:178 Function Parameters: 0:178 'f4' ( in 4-component vector of float) 0:? Sequence 0:181 subgroupAdd ( global 4-component vector of float) 0:181 'f4' ( in 4-component vector of float) 0:182 subgroupMul ( global 4-component vector of float) 0:182 'f4' ( in 4-component vector of float) 0:183 subgroupMin ( global 4-component vector of float) 0:183 'f4' ( in 4-component vector of float) 0:184 subgroupMax ( global 4-component vector of float) 0:184 'f4' ( in 4-component vector of float) 0:185 subgroupAnd ( global 4-component vector of uint) 0:185 'ballot' ( temp 4-component vector of uint) 0:186 subgroupOr ( global 4-component vector of uint) 0:186 'ballot' ( temp 4-component vector of uint) 0:187 subgroupXor ( global 4-component vector of uint) 0:187 'ballot' ( temp 4-component vector of uint) 0:188 subgroupInclusiveAdd ( global 4-component vector of float) 0:188 'f4' ( in 4-component vector of float) 0:189 subgroupInclusiveMul ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:190 subgroupInclusiveMin ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:191 subgroupInclusiveMax ( global 4-component vector of float) 0:191 'f4' ( in 4-component vector of float) 0:192 subgroupInclusiveAnd ( global 4-component vector of uint) 0:192 'ballot' ( temp 4-component vector of uint) 0:193 subgroupInclusiveOr ( global 4-component vector of uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:194 subgroupInclusiveXor ( global 4-component vector of uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:195 subgroupExclusiveAdd ( global 4-component vector of float) 0:195 'f4' ( in 4-component vector of float) 0:196 subgroupExclusiveMul ( global 4-component vector of float) 0:196 'f4' ( in 4-component vector of float) 0:197 subgroupExclusiveMin ( global 4-component vector of float) 0:197 'f4' ( in 4-component vector of float) 0:198 subgroupExclusiveMax ( global 4-component vector of float) 0:198 'f4' ( in 4-component vector of float) 0:199 subgroupExclusiveAnd ( global 4-component vector of uint) 0:199 'ballot' ( temp 4-component vector of uint) 0:200 subgroupExclusiveOr ( global 4-component vector of uint) 0:200 'ballot' ( temp 4-component vector of uint) 0:201 subgroupExclusiveXor ( global 4-component vector of uint) 0:201 'ballot' ( temp 4-component vector of uint) 0:205 Function Definition: clustered_works(vf4; ( global void) 0:205 Function Parameters: 0:205 'f4' ( in 4-component vector of float) 0:207 Sequence 0:207 Sequence 0:207 move second child to first child ( temp 4-component vector of uint) 0:207 'ballot' ( temp 4-component vector of uint) 0:207 Constant: 0:207 85 (const uint) 0:207 0 (const uint) 0:207 0 (const uint) 0:207 0 (const uint) 0:208 subgroupClusteredAdd ( global 4-component vector of float) 0:208 'f4' ( in 4-component vector of float) 0:208 Constant: 0:208 2 (const uint) 0:209 subgroupClusteredMul ( global 4-component vector of float) 0:209 'f4' ( in 4-component vector of float) 0:209 Constant: 0:209 2 (const uint) 0:210 subgroupClusteredMin ( global 4-component vector of float) 0:210 'f4' ( in 4-component vector of float) 0:210 Constant: 0:210 2 (const uint) 0:211 subgroupClusteredMax ( global 4-component vector of float) 0:211 'f4' ( in 4-component vector of float) 0:211 Constant: 0:211 2 (const uint) 0:212 subgroupClusteredAnd ( global 4-component vector of uint) 0:212 'ballot' ( temp 4-component vector of uint) 0:212 Constant: 0:212 2 (const uint) 0:213 subgroupClusteredOr ( global 4-component vector of uint) 0:213 'ballot' ( temp 4-component vector of uint) 0:213 Constant: 0:213 2 (const uint) 0:214 subgroupClusteredXor ( global 4-component vector of uint) 0:214 'ballot' ( temp 4-component vector of uint) 0:214 Constant: 0:214 2 (const uint) 0:218 Function Definition: quad_works(vf4; ( global void) 0:218 Function Parameters: 0:218 'f4' ( in 4-component vector of float) 0:220 Sequence 0:220 subgroupQuadBroadcast ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:220 Constant: 0:220 0 (const uint) 0:221 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:221 'f4' ( in 4-component vector of float) 0:222 subgroupQuadSwapVertical ( global 4-component vector of float) 0:222 'f4' ( in 4-component vector of float) 0:223 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:223 'f4' ( in 4-component vector of float) 0:227 Function Definition: partitioned_works(vf4; ( global void) 0:227 Function Parameters: 0:227 'f4' ( in 4-component vector of float) 0:229 Sequence 0:229 Sequence 0:229 move second child to first child ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionNV ( global 4-component vector of uint) 0:229 'f4' ( in 4-component vector of float) 0:230 Sequence 0:230 move second child to first child ( temp 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 Constant: 0:230 85 (const uint) 0:230 0 (const uint) 0:230 0 (const uint) 0:230 0 (const uint) 0:231 subgroupPartitionedAddNV ( global 4-component vector of float) 0:231 'f4' ( in 4-component vector of float) 0:231 'parti' ( temp 4-component vector of uint) 0:232 subgroupPartitionedMulNV ( global 4-component vector of float) 0:232 'f4' ( in 4-component vector of float) 0:232 'parti' ( temp 4-component vector of uint) 0:233 subgroupPartitionedMinNV ( global 4-component vector of float) 0:233 'f4' ( in 4-component vector of float) 0:233 'parti' ( temp 4-component vector of uint) 0:234 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:234 'f4' ( in 4-component vector of float) 0:234 'parti' ( temp 4-component vector of uint) 0:235 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:235 'ballot' ( temp 4-component vector of uint) 0:235 'parti' ( temp 4-component vector of uint) 0:236 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:236 'ballot' ( temp 4-component vector of uint) 0:236 'parti' ( temp 4-component vector of uint) 0:237 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:237 'ballot' ( temp 4-component vector of uint) 0:237 'parti' ( temp 4-component vector of uint) 0:238 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:238 'f4' ( in 4-component vector of float) 0:238 'parti' ( temp 4-component vector of uint) 0:239 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:239 'f4' ( in 4-component vector of float) 0:239 'parti' ( temp 4-component vector of uint) 0:240 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:240 'f4' ( in 4-component vector of float) 0:240 'parti' ( temp 4-component vector of uint) 0:241 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:241 'f4' ( in 4-component vector of float) 0:241 'parti' ( temp 4-component vector of uint) 0:242 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:242 'ballot' ( temp 4-component vector of uint) 0:242 'parti' ( temp 4-component vector of uint) 0:243 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:243 'ballot' ( temp 4-component vector of uint) 0:243 'parti' ( temp 4-component vector of uint) 0:244 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:244 'ballot' ( temp 4-component vector of uint) 0:244 'parti' ( temp 4-component vector of uint) 0:245 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:245 'f4' ( in 4-component vector of float) 0:245 'parti' ( temp 4-component vector of uint) 0:246 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:246 'f4' ( in 4-component vector of float) 0:246 'parti' ( temp 4-component vector of uint) 0:247 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:247 'f4' ( in 4-component vector of float) 0:247 'parti' ( temp 4-component vector of uint) 0:248 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:248 'f4' ( in 4-component vector of float) 0:248 'parti' ( temp 4-component vector of uint) 0:249 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:249 'ballot' ( temp 4-component vector of uint) 0:249 'parti' ( temp 4-component vector of uint) 0:250 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:250 'ballot' ( temp 4-component vector of uint) 0:250 'parti' ( temp 4-component vector of uint) 0:251 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:251 'ballot' ( temp 4-component vector of uint) 0:251 'parti' ( temp 4-component vector of uint) 0:255 Function Definition: sm_builtins_err( ( global void) 0:255 Function Parameters: 0:257 Sequence 0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:258 'gl_SMCountNV' ( in uint SMCountNV) 0:259 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:260 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:267 Function Definition: sm_builtins( ( global void) 0:267 Function Parameters: 0:269 Sequence 0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:270 'gl_SMCountNV' ( in uint SMCountNV) 0:271 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:272 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'iAttr' ( hitAttributeNV 4-component vector of float) Linked intersection stage: Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:108 Function Definition: main( ( global void) 0:108 Function Parameters: 0:110 Sequence 0:110 Sequence 0:110 move second child to first child ( temp 3-component vector of uint) 0:110 'v0' ( temp 3-component vector of uint) 0:110 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:111 Sequence 0:111 move second child to first child ( temp 3-component vector of uint) 0:111 'v1' ( temp 3-component vector of uint) 0:111 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:112 Sequence 0:112 move second child to first child ( temp int) 0:112 'v2' ( temp int) 0:112 'gl_PrimitiveID' ( in int PrimitiveID) 0:113 Sequence 0:113 move second child to first child ( temp int) 0:113 'v3' ( temp int) 0:113 'gl_InstanceID' ( in int InstanceId) 0:114 Sequence 0:114 move second child to first child ( temp int) 0:114 'v4' ( temp int) 0:114 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) 0:115 Sequence 0:115 move second child to first child ( temp 3-component vector of float) 0:115 'v5' ( temp 3-component vector of float) 0:115 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v6' ( temp 3-component vector of float) 0:116 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) 0:117 Sequence 0:117 move second child to first child ( temp 3-component vector of float) 0:117 'v7' ( temp 3-component vector of float) 0:117 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) 0:118 Sequence 0:118 move second child to first child ( temp 3-component vector of float) 0:118 'v8' ( temp 3-component vector of float) 0:118 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v9' ( temp float) 0:119 'gl_RayTminNV' ( in float ObjectRayTminNV) 0:120 Sequence 0:120 move second child to first child ( temp float) 0:120 'v10' ( temp float) 0:120 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:121 Sequence 0:121 move second child to first child ( temp 4X3 matrix of float) 0:121 'v11' ( temp 4X3 matrix of float) 0:121 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) 0:122 Sequence 0:122 move second child to first child ( temp 4X3 matrix of float) 0:122 'v12' ( temp 4X3 matrix of float) 0:122 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) 0:123 move second child to first child ( temp 4-component vector of float) 0:123 'iAttr' ( hitAttributeNV 4-component vector of float) 0:123 Constant: 0:123 0.500000 0:123 0.500000 0:123 0.000000 0:123 1.000000 0:124 reportIntersectionNV ( global bool) 0:124 Constant: 0:124 0.500000 0:124 Constant: 0:124 1 (const uint) 0:? Linker Objects 0:? 'iAttr' ( hitAttributeNV 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.460.subgroup.rmiss.out000066400000000000000000001234051506534232700234570ustar00rootroot00000000000000glsl.460.subgroup.rmiss ERROR: 0:8: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:9: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:10: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:11: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:12: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:13: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:14: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic ERROR: 0:15: 'gl_NumSubgroups' : undeclared identifier ERROR: 0:16: 'gl_SubgroupID' : undeclared identifier ERROR: 0:17: 'subgroupMemoryBarrierShared' : no matching overloaded function found ERROR: 0:19: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:20: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:21: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote ERROR: 0:23: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:24: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:25: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:26: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:27: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:28: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:29: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:30: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:31: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:32: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:33: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:34: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:35: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:36: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:37: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot ERROR: 0:39: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:40: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle ERROR: 0:41: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:42: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative ERROR: 0:44: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:45: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:46: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:47: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:48: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:49: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:50: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:51: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:52: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:53: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:54: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:55: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:56: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:57: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:58: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:59: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:60: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:61: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:62: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:63: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:64: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic ERROR: 0:66: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:67: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:68: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:69: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:70: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:71: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:72: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered ERROR: 0:74: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:75: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:76: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:77: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad ERROR: 0:79: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:251: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:252: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:253: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:254: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:5 Function Parameters: 0:5 'f4' ( in 4-component vector of float) 0:? Sequence 0:8 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:9 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:10 subgroupBarrier ( global void) 0:11 subgroupMemoryBarrier ( global void) 0:12 subgroupMemoryBarrierBuffer ( global void) 0:13 subgroupMemoryBarrierImage ( global void) 0:14 subgroupElect ( global bool) 0:15 'gl_NumSubgroups' ( temp float) 0:16 'gl_SubgroupID' ( temp float) 0:17 Constant: 0:17 0.000000 0:19 subgroupAll ( global bool) 0:19 Constant: 0:19 true (const bool) 0:20 subgroupAny ( global bool) 0:20 Constant: 0:20 false (const bool) 0:21 subgroupAllEqual ( global bool) 0:21 'f4' ( in 4-component vector of float) 0:23 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:24 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:25 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:26 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:27 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:28 subgroupBroadcast ( global 4-component vector of float) 0:28 'f4' ( in 4-component vector of float) 0:28 Constant: 0:28 0 (const uint) 0:29 subgroupBroadcastFirst ( global 4-component vector of float) 0:29 'f4' ( in 4-component vector of float) 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of uint) 0:30 'ballot' ( temp 4-component vector of uint) 0:30 subgroupBallot ( global 4-component vector of uint) 0:30 Constant: 0:30 false (const bool) 0:31 subgroupInverseBallot ( global bool) 0:31 Constant: 0:31 1 (const uint) 0:31 1 (const uint) 0:31 1 (const uint) 0:31 1 (const uint) 0:32 subgroupBallotBitExtract ( global bool) 0:32 'ballot' ( temp 4-component vector of uint) 0:32 Constant: 0:32 0 (const uint) 0:33 subgroupBallotBitCount ( global uint) 0:33 'ballot' ( temp 4-component vector of uint) 0:34 subgroupBallotInclusiveBitCount ( global uint) 0:34 'ballot' ( temp 4-component vector of uint) 0:35 subgroupBallotExclusiveBitCount ( global uint) 0:35 'ballot' ( temp 4-component vector of uint) 0:36 subgroupBallotFindLSB ( global uint) 0:36 'ballot' ( temp 4-component vector of uint) 0:37 subgroupBallotFindMSB ( global uint) 0:37 'ballot' ( temp 4-component vector of uint) 0:39 subgroupShuffle ( global 4-component vector of float) 0:39 'f4' ( in 4-component vector of float) 0:39 Constant: 0:39 0 (const uint) 0:40 subgroupShuffleXor ( global 4-component vector of float) 0:40 'f4' ( in 4-component vector of float) 0:40 Constant: 0:40 1 (const uint) 0:41 subgroupShuffleUp ( global 4-component vector of float) 0:41 'f4' ( in 4-component vector of float) 0:41 Constant: 0:41 1 (const uint) 0:42 subgroupShuffleDown ( global 4-component vector of float) 0:42 'f4' ( in 4-component vector of float) 0:42 Constant: 0:42 1 (const uint) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'result' ( temp 4-component vector of float) 0:44 subgroupAdd ( global 4-component vector of float) 0:44 'f4' ( in 4-component vector of float) 0:45 subgroupMul ( global 4-component vector of float) 0:45 'f4' ( in 4-component vector of float) 0:46 subgroupMin ( global 4-component vector of float) 0:46 'f4' ( in 4-component vector of float) 0:47 subgroupMax ( global 4-component vector of float) 0:47 'f4' ( in 4-component vector of float) 0:48 subgroupAnd ( global 4-component vector of uint) 0:48 'ballot' ( temp 4-component vector of uint) 0:49 subgroupOr ( global 4-component vector of uint) 0:49 'ballot' ( temp 4-component vector of uint) 0:50 subgroupXor ( global 4-component vector of uint) 0:50 'ballot' ( temp 4-component vector of uint) 0:51 subgroupInclusiveAdd ( global 4-component vector of float) 0:51 'f4' ( in 4-component vector of float) 0:52 subgroupInclusiveMul ( global 4-component vector of float) 0:52 'f4' ( in 4-component vector of float) 0:53 subgroupInclusiveMin ( global 4-component vector of float) 0:53 'f4' ( in 4-component vector of float) 0:54 subgroupInclusiveMax ( global 4-component vector of float) 0:54 'f4' ( in 4-component vector of float) 0:55 subgroupInclusiveAnd ( global 4-component vector of uint) 0:55 'ballot' ( temp 4-component vector of uint) 0:56 subgroupInclusiveOr ( global 4-component vector of uint) 0:56 'ballot' ( temp 4-component vector of uint) 0:57 subgroupInclusiveXor ( global 4-component vector of uint) 0:57 'ballot' ( temp 4-component vector of uint) 0:58 subgroupExclusiveAdd ( global 4-component vector of float) 0:58 'f4' ( in 4-component vector of float) 0:59 subgroupExclusiveMul ( global 4-component vector of float) 0:59 'f4' ( in 4-component vector of float) 0:60 subgroupExclusiveMin ( global 4-component vector of float) 0:60 'f4' ( in 4-component vector of float) 0:61 subgroupExclusiveMax ( global 4-component vector of float) 0:61 'f4' ( in 4-component vector of float) 0:62 subgroupExclusiveAnd ( global 4-component vector of uint) 0:62 'ballot' ( temp 4-component vector of uint) 0:63 subgroupExclusiveOr ( global 4-component vector of uint) 0:63 'ballot' ( temp 4-component vector of uint) 0:64 subgroupExclusiveXor ( global 4-component vector of uint) 0:64 'ballot' ( temp 4-component vector of uint) 0:66 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( global 4-component vector of float) 0:68 'f4' ( in 4-component vector of float) 0:68 Constant: 0:68 2 (const uint) 0:69 subgroupClusteredMax ( global 4-component vector of float) 0:69 'f4' ( in 4-component vector of float) 0:69 Constant: 0:69 2 (const uint) 0:70 subgroupClusteredAnd ( global 4-component vector of uint) 0:70 'ballot' ( temp 4-component vector of uint) 0:70 Constant: 0:70 2 (const uint) 0:71 subgroupClusteredOr ( global 4-component vector of uint) 0:71 'ballot' ( temp 4-component vector of uint) 0:71 Constant: 0:71 2 (const uint) 0:72 subgroupClusteredXor ( global 4-component vector of uint) 0:72 'ballot' ( temp 4-component vector of uint) 0:72 Constant: 0:72 2 (const uint) 0:74 subgroupQuadBroadcast ( global 4-component vector of float) 0:74 'f4' ( in 4-component vector of float) 0:74 Constant: 0:74 0 (const uint) 0:75 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:75 'f4' ( in 4-component vector of float) 0:76 subgroupQuadSwapVertical ( global 4-component vector of float) 0:76 'f4' ( in 4-component vector of float) 0:77 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:77 'f4' ( in 4-component vector of float) 0:79 Sequence 0:79 move second child to first child ( temp 4-component vector of uint) 0:79 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionNV ( global 4-component vector of uint) 0:79 'f4' ( in 4-component vector of float) 0:80 subgroupPartitionedAddNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMulNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedMinNV ( global 4-component vector of float) 0:82 'f4' ( in 4-component vector of float) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:83 'f4' ( in 4-component vector of float) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:85 'ballot' ( temp 4-component vector of uint) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:86 'ballot' ( temp 4-component vector of uint) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:89 'f4' ( in 4-component vector of float) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:90 'f4' ( in 4-component vector of float) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:92 'ballot' ( temp 4-component vector of uint) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:93 'ballot' ( temp 4-component vector of uint) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:96 'f4' ( in 4-component vector of float) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:97 'f4' ( in 4-component vector of float) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:99 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:99 'ballot' ( temp 4-component vector of uint) 0:99 'parti' ( temp 4-component vector of uint) 0:100 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:100 'ballot' ( temp 4-component vector of uint) 0:100 'parti' ( temp 4-component vector of uint) 0:102 Branch: Return with expression 0:102 'result' ( temp 4-component vector of float) 0:109 Function Definition: main( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 Sequence 0:111 move second child to first child ( temp 3-component vector of uint) 0:111 'v0' ( temp 3-component vector of uint) 0:111 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:112 Sequence 0:112 move second child to first child ( temp 3-component vector of uint) 0:112 'v1' ( temp 3-component vector of uint) 0:112 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:113 Sequence 0:113 move second child to first child ( temp 3-component vector of float) 0:113 'v2' ( temp 3-component vector of float) 0:113 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) 0:114 Sequence 0:114 move second child to first child ( temp 3-component vector of float) 0:114 'v3' ( temp 3-component vector of float) 0:114 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) 0:115 Sequence 0:115 move second child to first child ( temp 3-component vector of float) 0:115 'v4' ( temp 3-component vector of float) 0:115 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v5' ( temp 3-component vector of float) 0:116 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) 0:117 Sequence 0:117 move second child to first child ( temp float) 0:117 'v6' ( temp float) 0:117 'gl_RayTminNV' ( in float ObjectRayTminNV) 0:118 Sequence 0:118 move second child to first child ( temp float) 0:118 'v7' ( temp float) 0:118 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:119 traceNV ( global void) 0:119 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:119 Constant: 0:119 0 (const uint) 0:119 Constant: 0:119 1 (const uint) 0:119 Constant: 0:119 2 (const uint) 0:119 Constant: 0:119 3 (const uint) 0:119 Constant: 0:119 0 (const uint) 0:119 Constant: 0:119 0.500000 0:119 0.500000 0:119 0.500000 0:119 Constant: 0:119 0.500000 0:119 Constant: 0:119 1.000000 0:119 1.000000 0:119 1.000000 0:119 Constant: 0:119 0.750000 0:119 Constant: 0:119 1 (const int) 0:123 Function Definition: basic_works( ( global void) 0:123 Function Parameters: 0:125 Sequence 0:125 'gl_SubgroupSize' ( volatile in uint SubgroupSize) 0:126 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:127 subgroupBarrier ( global void) 0:128 subgroupMemoryBarrier ( global void) 0:129 subgroupMemoryBarrierBuffer ( global void) 0:130 subgroupMemoryBarrierImage ( global void) 0:131 subgroupElect ( global bool) 0:135 Function Definition: ballot_works(vf4; ( global void) 0:135 Function Parameters: 0:135 'f4' ( in 4-component vector of float) 0:136 Sequence 0:136 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) 0:137 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) 0:138 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) 0:139 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) 0:140 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:141 subgroupBroadcast ( global 4-component vector of float) 0:141 'f4' ( in 4-component vector of float) 0:141 Constant: 0:141 0 (const uint) 0:142 subgroupBroadcastFirst ( global 4-component vector of float) 0:142 'f4' ( in 4-component vector of float) 0:143 Sequence 0:143 move second child to first child ( temp 4-component vector of uint) 0:143 'ballot' ( temp 4-component vector of uint) 0:143 subgroupBallot ( global 4-component vector of uint) 0:143 Constant: 0:143 false (const bool) 0:144 subgroupInverseBallot ( global bool) 0:144 Constant: 0:144 1 (const uint) 0:144 1 (const uint) 0:144 1 (const uint) 0:144 1 (const uint) 0:145 subgroupBallotBitExtract ( global bool) 0:145 'ballot' ( temp 4-component vector of uint) 0:145 Constant: 0:145 0 (const uint) 0:146 subgroupBallotBitCount ( global uint) 0:146 'ballot' ( temp 4-component vector of uint) 0:147 subgroupBallotInclusiveBitCount ( global uint) 0:147 'ballot' ( temp 4-component vector of uint) 0:148 subgroupBallotExclusiveBitCount ( global uint) 0:148 'ballot' ( temp 4-component vector of uint) 0:149 subgroupBallotFindLSB ( global uint) 0:149 'ballot' ( temp 4-component vector of uint) 0:150 subgroupBallotFindMSB ( global uint) 0:150 'ballot' ( temp 4-component vector of uint) 0:154 Function Definition: vote_works(vf4; ( global void) 0:154 Function Parameters: 0:154 'f4' ( in 4-component vector of float) 0:156 Sequence 0:156 subgroupAll ( global bool) 0:156 Constant: 0:156 true (const bool) 0:157 subgroupAny ( global bool) 0:157 Constant: 0:157 false (const bool) 0:158 subgroupAllEqual ( global bool) 0:158 'f4' ( in 4-component vector of float) 0:163 Function Definition: shuffle_works(vf4; ( global void) 0:163 Function Parameters: 0:163 'f4' ( in 4-component vector of float) 0:165 Sequence 0:165 subgroupShuffle ( global 4-component vector of float) 0:165 'f4' ( in 4-component vector of float) 0:165 Constant: 0:165 0 (const uint) 0:166 subgroupShuffleXor ( global 4-component vector of float) 0:166 'f4' ( in 4-component vector of float) 0:166 Constant: 0:166 1 (const uint) 0:167 subgroupShuffleUp ( global 4-component vector of float) 0:167 'f4' ( in 4-component vector of float) 0:167 Constant: 0:167 1 (const uint) 0:168 subgroupShuffleDown ( global 4-component vector of float) 0:168 'f4' ( in 4-component vector of float) 0:168 Constant: 0:168 1 (const uint) 0:172 Function Definition: arith_works(vf4; ( global void) 0:172 Function Parameters: 0:172 'f4' ( in 4-component vector of float) 0:? Sequence 0:175 subgroupAdd ( global 4-component vector of float) 0:175 'f4' ( in 4-component vector of float) 0:176 subgroupMul ( global 4-component vector of float) 0:176 'f4' ( in 4-component vector of float) 0:177 subgroupMin ( global 4-component vector of float) 0:177 'f4' ( in 4-component vector of float) 0:178 subgroupMax ( global 4-component vector of float) 0:178 'f4' ( in 4-component vector of float) 0:179 subgroupAnd ( global 4-component vector of uint) 0:179 'ballot' ( temp 4-component vector of uint) 0:180 subgroupOr ( global 4-component vector of uint) 0:180 'ballot' ( temp 4-component vector of uint) 0:181 subgroupXor ( global 4-component vector of uint) 0:181 'ballot' ( temp 4-component vector of uint) 0:182 subgroupInclusiveAdd ( global 4-component vector of float) 0:182 'f4' ( in 4-component vector of float) 0:183 subgroupInclusiveMul ( global 4-component vector of float) 0:183 'f4' ( in 4-component vector of float) 0:184 subgroupInclusiveMin ( global 4-component vector of float) 0:184 'f4' ( in 4-component vector of float) 0:185 subgroupInclusiveMax ( global 4-component vector of float) 0:185 'f4' ( in 4-component vector of float) 0:186 subgroupInclusiveAnd ( global 4-component vector of uint) 0:186 'ballot' ( temp 4-component vector of uint) 0:187 subgroupInclusiveOr ( global 4-component vector of uint) 0:187 'ballot' ( temp 4-component vector of uint) 0:188 subgroupInclusiveXor ( global 4-component vector of uint) 0:188 'ballot' ( temp 4-component vector of uint) 0:189 subgroupExclusiveAdd ( global 4-component vector of float) 0:189 'f4' ( in 4-component vector of float) 0:190 subgroupExclusiveMul ( global 4-component vector of float) 0:190 'f4' ( in 4-component vector of float) 0:191 subgroupExclusiveMin ( global 4-component vector of float) 0:191 'f4' ( in 4-component vector of float) 0:192 subgroupExclusiveMax ( global 4-component vector of float) 0:192 'f4' ( in 4-component vector of float) 0:193 subgroupExclusiveAnd ( global 4-component vector of uint) 0:193 'ballot' ( temp 4-component vector of uint) 0:194 subgroupExclusiveOr ( global 4-component vector of uint) 0:194 'ballot' ( temp 4-component vector of uint) 0:195 subgroupExclusiveXor ( global 4-component vector of uint) 0:195 'ballot' ( temp 4-component vector of uint) 0:199 Function Definition: clustered_works(vf4; ( global void) 0:199 Function Parameters: 0:199 'f4' ( in 4-component vector of float) 0:201 Sequence 0:201 Sequence 0:201 move second child to first child ( temp 4-component vector of uint) 0:201 'ballot' ( temp 4-component vector of uint) 0:201 Constant: 0:201 85 (const uint) 0:201 0 (const uint) 0:201 0 (const uint) 0:201 0 (const uint) 0:202 subgroupClusteredAdd ( global 4-component vector of float) 0:202 'f4' ( in 4-component vector of float) 0:202 Constant: 0:202 2 (const uint) 0:203 subgroupClusteredMul ( global 4-component vector of float) 0:203 'f4' ( in 4-component vector of float) 0:203 Constant: 0:203 2 (const uint) 0:204 subgroupClusteredMin ( global 4-component vector of float) 0:204 'f4' ( in 4-component vector of float) 0:204 Constant: 0:204 2 (const uint) 0:205 subgroupClusteredMax ( global 4-component vector of float) 0:205 'f4' ( in 4-component vector of float) 0:205 Constant: 0:205 2 (const uint) 0:206 subgroupClusteredAnd ( global 4-component vector of uint) 0:206 'ballot' ( temp 4-component vector of uint) 0:206 Constant: 0:206 2 (const uint) 0:207 subgroupClusteredOr ( global 4-component vector of uint) 0:207 'ballot' ( temp 4-component vector of uint) 0:207 Constant: 0:207 2 (const uint) 0:208 subgroupClusteredXor ( global 4-component vector of uint) 0:208 'ballot' ( temp 4-component vector of uint) 0:208 Constant: 0:208 2 (const uint) 0:212 Function Definition: quad_works(vf4; ( global void) 0:212 Function Parameters: 0:212 'f4' ( in 4-component vector of float) 0:214 Sequence 0:214 subgroupQuadBroadcast ( global 4-component vector of float) 0:214 'f4' ( in 4-component vector of float) 0:214 Constant: 0:214 0 (const uint) 0:215 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:215 'f4' ( in 4-component vector of float) 0:216 subgroupQuadSwapVertical ( global 4-component vector of float) 0:216 'f4' ( in 4-component vector of float) 0:217 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:217 'f4' ( in 4-component vector of float) 0:221 Function Definition: partitioned_works(vf4; ( global void) 0:221 Function Parameters: 0:221 'f4' ( in 4-component vector of float) 0:223 Sequence 0:223 Sequence 0:223 move second child to first child ( temp 4-component vector of uint) 0:223 'parti' ( temp 4-component vector of uint) 0:223 subgroupPartitionNV ( global 4-component vector of uint) 0:223 'f4' ( in 4-component vector of float) 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 subgroupPartitionedAddNV ( global 4-component vector of float) 0:225 'f4' ( in 4-component vector of float) 0:225 'parti' ( temp 4-component vector of uint) 0:226 subgroupPartitionedMulNV ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) 0:227 subgroupPartitionedMinNV ( global 4-component vector of float) 0:227 'f4' ( in 4-component vector of float) 0:227 'parti' ( temp 4-component vector of uint) 0:228 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:228 'f4' ( in 4-component vector of float) 0:228 'parti' ( temp 4-component vector of uint) 0:229 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:229 'ballot' ( temp 4-component vector of uint) 0:229 'parti' ( temp 4-component vector of uint) 0:230 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint) 0:231 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint) 0:232 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:232 'f4' ( in 4-component vector of float) 0:232 'parti' ( temp 4-component vector of uint) 0:233 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:233 'f4' ( in 4-component vector of float) 0:233 'parti' ( temp 4-component vector of uint) 0:234 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:234 'f4' ( in 4-component vector of float) 0:234 'parti' ( temp 4-component vector of uint) 0:235 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:235 'f4' ( in 4-component vector of float) 0:235 'parti' ( temp 4-component vector of uint) 0:236 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:236 'ballot' ( temp 4-component vector of uint) 0:236 'parti' ( temp 4-component vector of uint) 0:237 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:237 'ballot' ( temp 4-component vector of uint) 0:237 'parti' ( temp 4-component vector of uint) 0:238 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:238 'ballot' ( temp 4-component vector of uint) 0:238 'parti' ( temp 4-component vector of uint) 0:239 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:239 'f4' ( in 4-component vector of float) 0:239 'parti' ( temp 4-component vector of uint) 0:240 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:240 'f4' ( in 4-component vector of float) 0:240 'parti' ( temp 4-component vector of uint) 0:241 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:241 'f4' ( in 4-component vector of float) 0:241 'parti' ( temp 4-component vector of uint) 0:242 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:242 'f4' ( in 4-component vector of float) 0:242 'parti' ( temp 4-component vector of uint) 0:243 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:243 'ballot' ( temp 4-component vector of uint) 0:243 'parti' ( temp 4-component vector of uint) 0:244 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:244 'ballot' ( temp 4-component vector of uint) 0:244 'parti' ( temp 4-component vector of uint) 0:245 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:245 'ballot' ( temp 4-component vector of uint) 0:245 'parti' ( temp 4-component vector of uint) 0:249 Function Definition: sm_builtins_err( ( global void) 0:249 Function Parameters: 0:251 Sequence 0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:252 'gl_SMCountNV' ( in uint SMCountNV) 0:253 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:254 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:261 Function Definition: sm_builtins( ( global void) 0:261 Function Parameters: 0:263 Sequence 0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:264 'gl_SMCountNV' ( in uint SMCountNV) 0:265 'gl_WarpIDNV' ( volatile in uint WarpIDNV) 0:266 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) 0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) Linked miss stage: Shader version: 460 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 Requested GL_NV_ray_tracing Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:109 Function Definition: main( ( global void) 0:109 Function Parameters: 0:111 Sequence 0:111 Sequence 0:111 move second child to first child ( temp 3-component vector of uint) 0:111 'v0' ( temp 3-component vector of uint) 0:111 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) 0:112 Sequence 0:112 move second child to first child ( temp 3-component vector of uint) 0:112 'v1' ( temp 3-component vector of uint) 0:112 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) 0:113 Sequence 0:113 move second child to first child ( temp 3-component vector of float) 0:113 'v2' ( temp 3-component vector of float) 0:113 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) 0:114 Sequence 0:114 move second child to first child ( temp 3-component vector of float) 0:114 'v3' ( temp 3-component vector of float) 0:114 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) 0:115 Sequence 0:115 move second child to first child ( temp 3-component vector of float) 0:115 'v4' ( temp 3-component vector of float) 0:115 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) 0:116 Sequence 0:116 move second child to first child ( temp 3-component vector of float) 0:116 'v5' ( temp 3-component vector of float) 0:116 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) 0:117 Sequence 0:117 move second child to first child ( temp float) 0:117 'v6' ( temp float) 0:117 'gl_RayTminNV' ( in float ObjectRayTminNV) 0:118 Sequence 0:118 move second child to first child ( temp float) 0:118 'v7' ( temp float) 0:118 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:119 traceNV ( global void) 0:119 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:119 Constant: 0:119 0 (const uint) 0:119 Constant: 0:119 1 (const uint) 0:119 Constant: 0:119 2 (const uint) 0:119 Constant: 0:119 3 (const uint) 0:119 Constant: 0:119 0 (const uint) 0:119 Constant: 0:119 0.500000 0:119 0.500000 0:119 0.500000 0:119 Constant: 0:119 0.500000 0:119 Constant: 0:119 1.000000 0:119 1.000000 0:119 1.000000 0:119 Constant: 0:119 0.750000 0:119 Constant: 0:119 1 (const int) 0:? Linker Objects 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) 0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.460.subgroup.task.out000066400000000000000000001516761506534232700232770ustar00rootroot00000000000000glsl.460.subgroup.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: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:288: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:289: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:290: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 0:291: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins ERROR: 90 compilation errors. No code generated. Shader version: 460 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 Requested GL_NV_mesh_shader Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned 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 Sequence 0:77 move second child to first child ( temp 4-component vector of uint) 0:77 'parti' ( temp 4-component vector of uint) 0:77 subgroupPartitionNV ( global 4-component vector of uint) 0:77 'f4' ( in 4-component vector of float) 0:78 subgroupPartitionedAddNV ( global 4-component vector of float) 0:78 'f4' ( in 4-component vector of float) 0:78 'parti' ( temp 4-component vector of uint) 0:79 subgroupPartitionedMulNV ( global 4-component vector of float) 0:79 'f4' ( in 4-component vector of float) 0:79 'parti' ( temp 4-component vector of uint) 0:80 subgroupPartitionedMinNV ( global 4-component vector of float) 0:80 'f4' ( in 4-component vector of float) 0:80 'parti' ( temp 4-component vector of uint) 0:81 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:81 'f4' ( in 4-component vector of float) 0:81 'parti' ( temp 4-component vector of uint) 0:82 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:82 'ballot' ( temp 4-component vector of uint) 0:82 'parti' ( temp 4-component vector of uint) 0:83 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:83 'ballot' ( temp 4-component vector of uint) 0:83 'parti' ( temp 4-component vector of uint) 0:84 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:84 'ballot' ( temp 4-component vector of uint) 0:84 'parti' ( temp 4-component vector of uint) 0:85 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:85 'f4' ( in 4-component vector of float) 0:85 'parti' ( temp 4-component vector of uint) 0:86 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:86 'f4' ( in 4-component vector of float) 0:86 'parti' ( temp 4-component vector of uint) 0:87 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:87 'f4' ( in 4-component vector of float) 0:87 'parti' ( temp 4-component vector of uint) 0:88 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:88 'f4' ( in 4-component vector of float) 0:88 'parti' ( temp 4-component vector of uint) 0:89 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:89 'ballot' ( temp 4-component vector of uint) 0:89 'parti' ( temp 4-component vector of uint) 0:90 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:90 'ballot' ( temp 4-component vector of uint) 0:90 'parti' ( temp 4-component vector of uint) 0:91 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:91 'ballot' ( temp 4-component vector of uint) 0:91 'parti' ( temp 4-component vector of uint) 0:92 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:92 'f4' ( in 4-component vector of float) 0:92 'parti' ( temp 4-component vector of uint) 0:93 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:93 'f4' ( in 4-component vector of float) 0:93 'parti' ( temp 4-component vector of uint) 0:94 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:94 'f4' ( in 4-component vector of float) 0:94 'parti' ( temp 4-component vector of uint) 0:95 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:95 'f4' ( in 4-component vector of float) 0:95 'parti' ( temp 4-component vector of uint) 0:96 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:96 'ballot' ( temp 4-component vector of uint) 0:96 'parti' ( temp 4-component vector of uint) 0:97 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:97 'ballot' ( temp 4-component vector of uint) 0:97 'parti' ( temp 4-component vector of uint) 0:98 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:98 'ballot' ( temp 4-component vector of uint) 0:98 'parti' ( temp 4-component vector of uint) 0:100 Branch: Return with expression 0:100 'result' ( temp 4-component vector of float) 0:127 Function Definition: main( ( global void) 0:127 Function Parameters: 0:129 Sequence 0:129 Sequence 0:129 move second child to first child ( temp uint) 0:129 'iid' ( temp uint) 0:129 direct index ( temp uint) 0:129 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:129 Constant: 0:129 0 (const int) 0:130 Sequence 0:130 move second child to first child ( temp uint) 0:130 'gid' ( temp uint) 0:130 direct index ( temp uint) 0:130 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:130 Constant: 0:130 0 (const int) 0:131 Sequence 0:131 move second child to first child ( temp uint) 0:131 'viewID' ( temp uint) 0:131 indirect index ( temp uint MeshViewIndicesNV) 0:131 'gl_MeshViewIndicesNV' ( in 4-element array of uint MeshViewIndicesNV) 0:131 mod ( temp uint) 0:131 'gl_MeshViewCountNV' ( in uint MeshViewCountNV) 0:131 Constant: 0:131 4 (const uint) 0:134 Sequence 0:134 Sequence 0:134 move second child to first child ( temp uint) 0:134 'i' ( temp uint) 0:134 Constant: 0:134 0 (const uint) 0:134 Loop with condition tested first 0:134 Loop Condition 0:134 Compare Less Than ( temp bool) 0:134 'i' ( temp uint) 0:134 Constant: 0:134 10 (const uint) 0:134 Loop Body 0:135 Sequence 0:135 move second child to first child ( temp 4-component vector of float) 0:135 indirect index ( temp 4-component vector of float) 0:135 'mem' ( shared 10-element array of 4-component vector of float) 0:135 'i' ( temp uint) 0:135 Construct vec4 ( temp 4-component vector of float) 0:135 Convert uint to float ( temp float) 0:135 add ( temp uint) 0:135 'i' ( temp uint) 0:135 uni_value: direct index for structure (layout( column_major shared) uniform uint) 0:135 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) 0:135 Constant: 0:135 0 (const uint) 0:134 Loop Terminal Expression 0:134 Pre-Increment ( temp uint) 0:134 'i' ( temp uint) 0:137 imageStore ( global void) 0:137 'uni_image' (layout( binding=0) writeonly uniform image2D) 0:137 Construct ivec2 ( temp 2-component vector of int) 0:137 Convert uint to int ( temp int) 0:137 'iid' ( temp uint) 0:137 indirect index ( temp 4-component vector of float) 0:137 'mem' ( shared 10-element array of 4-component vector of float) 0:137 'gid' ( temp uint) 0:138 imageStore ( global void) 0:138 'uni_image' (layout( binding=0) writeonly uniform image2D) 0:138 Construct ivec2 ( temp 2-component vector of int) 0:138 Convert uint to int ( temp int) 0:138 'iid' ( temp uint) 0:138 indirect index ( temp 4-component vector of float) 0:138 'mem' ( shared 10-element array of 4-component vector of float) 0:138 add ( temp uint) 0:138 'gid' ( temp uint) 0:138 Constant: 0:138 1 (const uint) 0:140 MemoryBarrierShared ( global void) 0:140 Barrier ( global void) 0:144 move second child to first child ( temp 2-component vector of float) 0:144 dummy: direct index for structure (layout( std430 offset=0) taskNV out 2-component vector of float) 0:144 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 30.000000 0:144 31.000000 0:145 move second child to first child ( temp 2-component vector of float) 0:145 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) 0:145 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) 0:145 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 32.000000 0:145 33.000000 0:146 move second child to first child ( temp 2-component vector of float) 0:146 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) 0:146 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) 0:146 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 34.000000 0:146 35.000000 0:147 move second child to first child ( temp 2-component vector of float) 0:147 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) 0:147 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) 0:147 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 indirect index (layout( std430 offset=8) taskNV temp 2-component vector of float) 0:147 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) 0:147 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:147 Constant: 0:147 1 (const int) 0:147 mod ( temp uint) 0:147 'gid' ( temp uint) 0:147 Constant: 0:147 2 (const uint) 0:148 move second child to first child ( temp uint) 0:148 viewID: direct index for structure (layout( std430 offset=32) taskNV out uint) 0:148 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:148 Constant: 0:148 2 (const int) 0:148 'viewID' ( temp uint) 0:150 MemoryBarrierShared ( global void) 0:150 Barrier ( global void) 0:153 move second child to first child ( temp uint) 0:153 'gl_TaskCountNV' ( out uint TaskCountNV) 0:153 Constant: 0:153 3 (const uint) 0:157 Function Definition: basic_works( ( global void) 0:157 Function Parameters: 0:159 Sequence 0:159 'gl_SubgroupSize' ( in uint SubgroupSize) 0:160 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:161 subgroupBarrier ( global void) 0:162 subgroupMemoryBarrier ( global void) 0:163 subgroupMemoryBarrierBuffer ( global void) 0:164 subgroupMemoryBarrierImage ( global void) 0:165 subgroupElect ( global bool) 0:166 'gl_NumSubgroups' ( in uint NumSubgroups) 0:167 'gl_SubgroupID' ( in uint SubgroupID) 0:168 subgroupMemoryBarrierShared ( global void) 0:172 Function Definition: ballot_works(vf4; ( global void) 0:172 Function Parameters: 0:172 'f4' ( in 4-component vector of float) 0:173 Sequence 0:173 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:174 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:175 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:176 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:177 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:178 subgroupBroadcast ( global 4-component vector of float) 0:178 'f4' ( in 4-component vector of float) 0:178 Constant: 0:178 0 (const uint) 0:179 subgroupBroadcastFirst ( global 4-component vector of float) 0:179 'f4' ( in 4-component vector of float) 0:180 Sequence 0:180 move second child to first child ( temp 4-component vector of uint) 0:180 'ballot' ( temp 4-component vector of uint) 0:180 subgroupBallot ( global 4-component vector of uint) 0:180 Constant: 0:180 false (const bool) 0:181 subgroupInverseBallot ( global bool) 0:181 Constant: 0:181 1 (const uint) 0:181 1 (const uint) 0:181 1 (const uint) 0:181 1 (const uint) 0:182 subgroupBallotBitExtract ( global bool) 0:182 'ballot' ( temp 4-component vector of uint) 0:182 Constant: 0:182 0 (const uint) 0:183 subgroupBallotBitCount ( global uint) 0:183 'ballot' ( temp 4-component vector of uint) 0:184 subgroupBallotInclusiveBitCount ( global uint) 0:184 'ballot' ( temp 4-component vector of uint) 0:185 subgroupBallotExclusiveBitCount ( global uint) 0:185 'ballot' ( temp 4-component vector of uint) 0:186 subgroupBallotFindLSB ( global uint) 0:186 'ballot' ( temp 4-component vector of uint) 0:187 subgroupBallotFindMSB ( global uint) 0:187 'ballot' ( temp 4-component vector of uint) 0:191 Function Definition: vote_works(vf4; ( global void) 0:191 Function Parameters: 0:191 'f4' ( in 4-component vector of float) 0:193 Sequence 0:193 subgroupAll ( global bool) 0:193 Constant: 0:193 true (const bool) 0:194 subgroupAny ( global bool) 0:194 Constant: 0:194 false (const bool) 0:195 subgroupAllEqual ( global bool) 0:195 'f4' ( in 4-component vector of float) 0:200 Function Definition: shuffle_works(vf4; ( global void) 0:200 Function Parameters: 0:200 'f4' ( in 4-component vector of float) 0:202 Sequence 0:202 subgroupShuffle ( global 4-component vector of float) 0:202 'f4' ( in 4-component vector of float) 0:202 Constant: 0:202 0 (const uint) 0:203 subgroupShuffleXor ( global 4-component vector of float) 0:203 'f4' ( in 4-component vector of float) 0:203 Constant: 0:203 1 (const uint) 0:204 subgroupShuffleUp ( global 4-component vector of float) 0:204 'f4' ( in 4-component vector of float) 0:204 Constant: 0:204 1 (const uint) 0:205 subgroupShuffleDown ( global 4-component vector of float) 0:205 'f4' ( in 4-component vector of float) 0:205 Constant: 0:205 1 (const uint) 0:209 Function Definition: arith_works(vf4; ( global void) 0:209 Function Parameters: 0:209 'f4' ( in 4-component vector of float) 0:? Sequence 0:212 subgroupAdd ( global 4-component vector of float) 0:212 'f4' ( in 4-component vector of float) 0:213 subgroupMul ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:214 subgroupMin ( global 4-component vector of float) 0:214 'f4' ( in 4-component vector of float) 0:215 subgroupMax ( global 4-component vector of float) 0:215 'f4' ( in 4-component vector of float) 0:216 subgroupAnd ( global 4-component vector of uint) 0:216 'ballot' ( temp 4-component vector of uint) 0:217 subgroupOr ( global 4-component vector of uint) 0:217 'ballot' ( temp 4-component vector of uint) 0:218 subgroupXor ( global 4-component vector of uint) 0:218 'ballot' ( temp 4-component vector of uint) 0:219 subgroupInclusiveAdd ( global 4-component vector of float) 0:219 'f4' ( in 4-component vector of float) 0:220 subgroupInclusiveMul ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:221 subgroupInclusiveMin ( global 4-component vector of float) 0:221 'f4' ( in 4-component vector of float) 0:222 subgroupInclusiveMax ( global 4-component vector of float) 0:222 'f4' ( in 4-component vector of float) 0:223 subgroupInclusiveAnd ( global 4-component vector of uint) 0:223 'ballot' ( temp 4-component vector of uint) 0:224 subgroupInclusiveOr ( global 4-component vector of uint) 0:224 'ballot' ( temp 4-component vector of uint) 0:225 subgroupInclusiveXor ( global 4-component vector of uint) 0:225 'ballot' ( temp 4-component vector of uint) 0:226 subgroupExclusiveAdd ( global 4-component vector of float) 0:226 'f4' ( in 4-component vector of float) 0:227 subgroupExclusiveMul ( global 4-component vector of float) 0:227 'f4' ( in 4-component vector of float) 0:228 subgroupExclusiveMin ( global 4-component vector of float) 0:228 'f4' ( in 4-component vector of float) 0:229 subgroupExclusiveMax ( global 4-component vector of float) 0:229 'f4' ( in 4-component vector of float) 0:230 subgroupExclusiveAnd ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:231 subgroupExclusiveOr ( global 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint) 0:232 subgroupExclusiveXor ( global 4-component vector of uint) 0:232 'ballot' ( temp 4-component vector of uint) 0:236 Function Definition: clustered_works(vf4; ( global void) 0:236 Function Parameters: 0:236 'f4' ( in 4-component vector of float) 0:238 Sequence 0:238 Sequence 0:238 move second child to first child ( temp 4-component vector of uint) 0:238 'ballot' ( temp 4-component vector of uint) 0:238 Constant: 0:238 85 (const uint) 0:238 0 (const uint) 0:238 0 (const uint) 0:238 0 (const uint) 0:239 subgroupClusteredAdd ( global 4-component vector of float) 0:239 'f4' ( in 4-component vector of float) 0:239 Constant: 0:239 2 (const uint) 0:240 subgroupClusteredMul ( global 4-component vector of float) 0:240 'f4' ( in 4-component vector of float) 0:240 Constant: 0:240 2 (const uint) 0:241 subgroupClusteredMin ( global 4-component vector of float) 0:241 'f4' ( in 4-component vector of float) 0:241 Constant: 0:241 2 (const uint) 0:242 subgroupClusteredMax ( global 4-component vector of float) 0:242 'f4' ( in 4-component vector of float) 0:242 Constant: 0:242 2 (const uint) 0:243 subgroupClusteredAnd ( global 4-component vector of uint) 0:243 'ballot' ( temp 4-component vector of uint) 0:243 Constant: 0:243 2 (const uint) 0:244 subgroupClusteredOr ( global 4-component vector of uint) 0:244 'ballot' ( temp 4-component vector of uint) 0:244 Constant: 0:244 2 (const uint) 0:245 subgroupClusteredXor ( global 4-component vector of uint) 0:245 'ballot' ( temp 4-component vector of uint) 0:245 Constant: 0:245 2 (const uint) 0:249 Function Definition: quad_works(vf4; ( global void) 0:249 Function Parameters: 0:249 'f4' ( in 4-component vector of float) 0:251 Sequence 0:251 subgroupQuadBroadcast ( global 4-component vector of float) 0:251 'f4' ( in 4-component vector of float) 0:251 Constant: 0:251 0 (const uint) 0:252 subgroupQuadSwapHorizontal ( global 4-component vector of float) 0:252 'f4' ( in 4-component vector of float) 0:253 subgroupQuadSwapVertical ( global 4-component vector of float) 0:253 'f4' ( in 4-component vector of float) 0:254 subgroupQuadSwapDiagonal ( global 4-component vector of float) 0:254 'f4' ( in 4-component vector of float) 0:258 Function Definition: partitioned_works(vf4; ( global void) 0:258 Function Parameters: 0:258 'f4' ( in 4-component vector of float) 0:260 Sequence 0:260 Sequence 0:260 move second child to first child ( temp 4-component vector of uint) 0:260 'parti' ( temp 4-component vector of uint) 0:260 subgroupPartitionNV ( global 4-component vector of uint) 0:260 'f4' ( in 4-component vector of float) 0:261 Sequence 0:261 move second child to first child ( temp 4-component vector of uint) 0:261 'ballot' ( temp 4-component vector of uint) 0:261 Constant: 0:261 85 (const uint) 0:261 0 (const uint) 0:261 0 (const uint) 0:261 0 (const uint) 0:262 subgroupPartitionedAddNV ( global 4-component vector of float) 0:262 'f4' ( in 4-component vector of float) 0:262 'parti' ( temp 4-component vector of uint) 0:263 subgroupPartitionedMulNV ( global 4-component vector of float) 0:263 'f4' ( in 4-component vector of float) 0:263 'parti' ( temp 4-component vector of uint) 0:264 subgroupPartitionedMinNV ( global 4-component vector of float) 0:264 'f4' ( in 4-component vector of float) 0:264 'parti' ( temp 4-component vector of uint) 0:265 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:265 'f4' ( in 4-component vector of float) 0:265 'parti' ( temp 4-component vector of uint) 0:266 subgroupPartitionedAndNV ( global 4-component vector of uint) 0:266 'ballot' ( temp 4-component vector of uint) 0:266 'parti' ( temp 4-component vector of uint) 0:267 subgroupPartitionedOrNV ( global 4-component vector of uint) 0:267 'ballot' ( temp 4-component vector of uint) 0:267 'parti' ( temp 4-component vector of uint) 0:268 subgroupPartitionedXorNV ( global 4-component vector of uint) 0:268 'ballot' ( temp 4-component vector of uint) 0:268 'parti' ( temp 4-component vector of uint) 0:269 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) 0:269 'f4' ( in 4-component vector of float) 0:269 'parti' ( temp 4-component vector of uint) 0:270 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) 0:270 'f4' ( in 4-component vector of float) 0:270 'parti' ( temp 4-component vector of uint) 0:271 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) 0:271 'f4' ( in 4-component vector of float) 0:271 'parti' ( temp 4-component vector of uint) 0:272 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:272 'f4' ( in 4-component vector of float) 0:272 'parti' ( temp 4-component vector of uint) 0:273 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) 0:273 'ballot' ( temp 4-component vector of uint) 0:273 'parti' ( temp 4-component vector of uint) 0:274 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) 0:274 'ballot' ( temp 4-component vector of uint) 0:274 'parti' ( temp 4-component vector of uint) 0:275 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) 0:275 'ballot' ( temp 4-component vector of uint) 0:275 'parti' ( temp 4-component vector of uint) 0:276 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) 0:276 'f4' ( in 4-component vector of float) 0:276 'parti' ( temp 4-component vector of uint) 0:277 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) 0:277 'f4' ( in 4-component vector of float) 0:277 'parti' ( temp 4-component vector of uint) 0:278 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) 0:278 'f4' ( in 4-component vector of float) 0:278 'parti' ( temp 4-component vector of uint) 0:279 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) 0:279 'f4' ( in 4-component vector of float) 0:279 'parti' ( temp 4-component vector of uint) 0:280 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) 0:280 'ballot' ( temp 4-component vector of uint) 0:280 'parti' ( temp 4-component vector of uint) 0:281 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) 0:281 'ballot' ( temp 4-component vector of uint) 0:281 'parti' ( temp 4-component vector of uint) 0:282 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:282 'ballot' ( temp 4-component vector of uint) 0:282 'parti' ( temp 4-component vector of uint) 0:286 Function Definition: sm_builtins_err( ( global void) 0:286 Function Parameters: 0:288 Sequence 0:288 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:289 'gl_SMCountNV' ( in uint SMCountNV) 0:290 'gl_WarpIDNV' ( in uint WarpIDNV) 0:291 'gl_SMIDNV' ( in uint SMIDNV) 0:298 Function Definition: sm_builtins( ( global void) 0:298 Function Parameters: 0:300 Sequence 0:300 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:301 'gl_SMCountNV' ( in uint SMCountNV) 0:302 'gl_WarpIDNV' ( in uint WarpIDNV) 0:303 'gl_SMIDNV' ( in uint SMIDNV) 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' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) Linked task stage: Shader version: 460 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 Requested GL_NV_mesh_shader Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned local_size = (32, 1, 1) ERROR: node is still EOpNull! 0:127 Function Definition: main( ( global void) 0:127 Function Parameters: 0:129 Sequence 0:129 Sequence 0:129 move second child to first child ( temp uint) 0:129 'iid' ( temp uint) 0:129 direct index ( temp uint) 0:129 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:129 Constant: 0:129 0 (const int) 0:130 Sequence 0:130 move second child to first child ( temp uint) 0:130 'gid' ( temp uint) 0:130 direct index ( temp uint) 0:130 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:130 Constant: 0:130 0 (const int) 0:131 Sequence 0:131 move second child to first child ( temp uint) 0:131 'viewID' ( temp uint) 0:131 indirect index ( temp uint MeshViewIndicesNV) 0:131 'gl_MeshViewIndicesNV' ( in 4-element array of uint MeshViewIndicesNV) 0:131 mod ( temp uint) 0:131 'gl_MeshViewCountNV' ( in uint MeshViewCountNV) 0:131 Constant: 0:131 4 (const uint) 0:134 Sequence 0:134 Sequence 0:134 move second child to first child ( temp uint) 0:134 'i' ( temp uint) 0:134 Constant: 0:134 0 (const uint) 0:134 Loop with condition tested first 0:134 Loop Condition 0:134 Compare Less Than ( temp bool) 0:134 'i' ( temp uint) 0:134 Constant: 0:134 10 (const uint) 0:134 Loop Body 0:135 Sequence 0:135 move second child to first child ( temp 4-component vector of float) 0:135 indirect index ( temp 4-component vector of float) 0:135 'mem' ( shared 10-element array of 4-component vector of float) 0:135 'i' ( temp uint) 0:135 Construct vec4 ( temp 4-component vector of float) 0:135 Convert uint to float ( temp float) 0:135 add ( temp uint) 0:135 'i' ( temp uint) 0:135 uni_value: direct index for structure (layout( column_major shared) uniform uint) 0:135 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) 0:135 Constant: 0:135 0 (const uint) 0:134 Loop Terminal Expression 0:134 Pre-Increment ( temp uint) 0:134 'i' ( temp uint) 0:137 imageStore ( global void) 0:137 'uni_image' (layout( binding=0) writeonly uniform image2D) 0:137 Construct ivec2 ( temp 2-component vector of int) 0:137 Convert uint to int ( temp int) 0:137 'iid' ( temp uint) 0:137 indirect index ( temp 4-component vector of float) 0:137 'mem' ( shared 10-element array of 4-component vector of float) 0:137 'gid' ( temp uint) 0:138 imageStore ( global void) 0:138 'uni_image' (layout( binding=0) writeonly uniform image2D) 0:138 Construct ivec2 ( temp 2-component vector of int) 0:138 Convert uint to int ( temp int) 0:138 'iid' ( temp uint) 0:138 indirect index ( temp 4-component vector of float) 0:138 'mem' ( shared 10-element array of 4-component vector of float) 0:138 add ( temp uint) 0:138 'gid' ( temp uint) 0:138 Constant: 0:138 1 (const uint) 0:140 MemoryBarrierShared ( global void) 0:140 Barrier ( global void) 0:144 move second child to first child ( temp 2-component vector of float) 0:144 dummy: direct index for structure (layout( std430 offset=0) taskNV out 2-component vector of float) 0:144 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 30.000000 0:144 31.000000 0:145 move second child to first child ( temp 2-component vector of float) 0:145 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) 0:145 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) 0:145 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 32.000000 0:145 33.000000 0:146 move second child to first child ( temp 2-component vector of float) 0:146 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) 0:146 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) 0:146 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 34.000000 0:146 35.000000 0:147 move second child to first child ( temp 2-component vector of float) 0:147 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) 0:147 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) 0:147 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 indirect index (layout( std430 offset=8) taskNV temp 2-component vector of float) 0:147 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) 0:147 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:147 Constant: 0:147 1 (const int) 0:147 mod ( temp uint) 0:147 'gid' ( temp uint) 0:147 Constant: 0:147 2 (const uint) 0:148 move second child to first child ( temp uint) 0:148 viewID: direct index for structure (layout( std430 offset=32) taskNV out uint) 0:148 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) 0:148 Constant: 0:148 2 (const int) 0:148 'viewID' ( temp uint) 0:150 MemoryBarrierShared ( global void) 0:150 Barrier ( global void) 0:153 move second child to first child ( temp uint) 0:153 'gl_TaskCountNV' ( out uint TaskCountNV) 0:153 Constant: 0:153 3 (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' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) glslang-16.0.0/Test/baseResults/glsl.460.subgroupEXT.mesh.out000066400000000000000000002261551506534232700236450ustar00rootroot00000000000000glsl.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) glslang-16.0.0/Test/baseResults/glsl.460.subgroupEXT.task.out000066400000000000000000001121571506534232700236470ustar00rootroot00000000000000glsl.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}) glslang-16.0.0/Test/baseResults/glsl.arbgpushader5.frag.out000066400000000000000000001526661506534232700236320ustar00rootroot00000000000000glsl.arbgpushader5.frag ERROR: 0:6: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output ERROR: 1 compilation errors. No code generated. Shader version: 150 Requested GL_ARB_gpu_shader5 ERROR: node is still EOpNull! 0:13 Function Definition: testIndexing( ( global void) 0:13 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp int) 0:16 'var' ( temp int) 0:16 direct index ( flat temp int SampleMaskIn) 0:16 'gl_SampleMaskIn' ( flat in unsized 1-element array of int SampleMaskIn) 0:16 Constant: 0:16 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'i' ( temp int) 0:17 Constant: 0:17 0 (const int) 0:18 texture ( global 4-component vector of float) 0:18 indirect index ( temp sampler2D) 0:18 'tex' ( uniform 10-element array of sampler2D) 0:18 'i' ( temp int) 0:18 'coord' ( global 2-component vector of float) 0:28 Function Definition: func(u1;vu4; ( global void) 0:28 Function Parameters: 0:28 'a' ( in uint) 0:28 'b' ( in 4-component vector of uint) 0:33 Function Definition: testImplicitConv( ( global void) 0:33 Function Parameters: 0:37 Sequence 0:37 Sequence 0:37 move second child to first child ( temp uint) 0:37 'uv' ( temp uint) 0:37 Constant: 0:37 0 (const uint) 0:38 Sequence 0:38 move second child to first child ( temp 2-component vector of uint) 0:38 'uv2' ( temp 2-component vector of uint) 0:38 Constant: 0:38 0 (const uint) 0:38 0 (const uint) 0:39 Sequence 0:39 move second child to first child ( temp 3-component vector of uint) 0:39 'uv3' ( temp 3-component vector of uint) 0:39 Constant: 0:39 0 (const uint) 0:39 0 (const uint) 0:39 0 (const uint) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of uint) 0:40 'uv4' ( temp 4-component vector of uint) 0:40 Constant: 0:40 0 (const uint) 0:40 0 (const uint) 0:40 0 (const uint) 0:40 0 (const uint) 0:43 Function Call: func(u1;vu4; ( global void) 0:43 Convert int to uint ( temp uint) 0:43 'b' ( flat in int) 0:43 Constant: 0:43 1 (const uint) 0:43 1 (const uint) 0:43 1 (const uint) 0:43 1 (const uint) 0:74 Function Definition: testBuiltins( ( global void) 0:74 Function Parameters: 0:? Sequence 0:94 move second child to first child ( temp float) 0:94 'var0' ( temp float) 0:94 fma ( global float) 0:94 'var0' ( temp float) 0:94 'var0' ( temp float) 0:94 'var0' ( temp float) 0:95 move second child to first child ( temp 2-component vector of float) 0:95 'var1' ( temp 2-component vector of float) 0:95 fma ( global 2-component vector of float) 0:95 'var1' ( temp 2-component vector of float) 0:95 'var1' ( temp 2-component vector of float) 0:95 'var1' ( temp 2-component vector of float) 0:96 move second child to first child ( temp 3-component vector of float) 0:96 'var2' ( temp 3-component vector of float) 0:96 fma ( global 3-component vector of float) 0:96 'var2' ( temp 3-component vector of float) 0:96 'var2' ( temp 3-component vector of float) 0:96 'var2' ( temp 3-component vector of float) 0:97 move second child to first child ( temp 4-component vector of float) 0:97 'var3' ( temp 4-component vector of float) 0:97 fma ( global 4-component vector of float) 0:97 'var3' ( temp 4-component vector of float) 0:97 'var3' ( temp 4-component vector of float) 0:97 'var3' ( temp 4-component vector of float) 0:99 move second child to first child ( temp float) 0:99 'var0' ( temp float) 0:99 frexp ( global float) 0:99 'var0' ( temp float) 0:99 'var4' ( temp int) 0:100 move second child to first child ( temp 2-component vector of float) 0:100 'var1' ( temp 2-component vector of float) 0:100 frexp ( global 2-component vector of float) 0:100 'var1' ( temp 2-component vector of float) 0:100 'var5' ( temp 2-component vector of int) 0:101 move second child to first child ( temp 3-component vector of float) 0:101 'var2' ( temp 3-component vector of float) 0:101 frexp ( global 3-component vector of float) 0:101 'var2' ( temp 3-component vector of float) 0:101 'var6' ( temp 3-component vector of int) 0:102 move second child to first child ( temp 4-component vector of float) 0:102 'var3' ( temp 4-component vector of float) 0:102 frexp ( global 4-component vector of float) 0:102 'var3' ( temp 4-component vector of float) 0:102 'var7' ( temp 4-component vector of int) 0:105 move second child to first child ( temp float) 0:105 'var0' ( temp float) 0:105 ldexp ( global float) 0:105 'var0' ( temp float) 0:105 'var4' ( temp int) 0:106 move second child to first child ( temp 2-component vector of float) 0:106 'var1' ( temp 2-component vector of float) 0:106 ldexp ( global 2-component vector of float) 0:106 'var1' ( temp 2-component vector of float) 0:106 'var5' ( temp 2-component vector of int) 0:107 move second child to first child ( temp 3-component vector of float) 0:107 'var2' ( temp 3-component vector of float) 0:107 ldexp ( global 3-component vector of float) 0:107 'var2' ( temp 3-component vector of float) 0:107 'var6' ( temp 3-component vector of int) 0:108 move second child to first child ( temp 4-component vector of float) 0:108 'var3' ( temp 4-component vector of float) 0:108 ldexp ( global 4-component vector of float) 0:108 'var3' ( temp 4-component vector of float) 0:108 'var7' ( temp 4-component vector of int) 0:111 move second child to first child ( temp int) 0:111 'var4' ( temp int) 0:111 bitfieldExtract ( global int) 0:111 'var4' ( temp int) 0:111 'var4' ( temp int) 0:111 'var4' ( temp int) 0:112 move second child to first child ( temp 2-component vector of int) 0:112 'var5' ( temp 2-component vector of int) 0:112 bitfieldExtract ( global 2-component vector of int) 0:112 'var5' ( temp 2-component vector of int) 0:112 'var4' ( temp int) 0:112 'var4' ( temp int) 0:113 move second child to first child ( temp 3-component vector of int) 0:113 'var6' ( temp 3-component vector of int) 0:113 bitfieldExtract ( global 3-component vector of int) 0:113 'var6' ( temp 3-component vector of int) 0:113 'var4' ( temp int) 0:113 'var4' ( temp int) 0:114 move second child to first child ( temp 4-component vector of int) 0:114 'var7' ( temp 4-component vector of int) 0:114 bitfieldExtract ( global 4-component vector of int) 0:114 'var7' ( temp 4-component vector of int) 0:114 'var4' ( temp int) 0:114 'var4' ( temp int) 0:116 move second child to first child ( temp uint) 0:116 'var8' ( temp uint) 0:116 bitfieldExtract ( global uint) 0:116 'var8' ( temp uint) 0:116 'var4' ( temp int) 0:116 'var4' ( temp int) 0:117 move second child to first child ( temp 2-component vector of uint) 0:117 'var9' ( temp 2-component vector of uint) 0:117 bitfieldExtract ( global 2-component vector of uint) 0:117 'var9' ( temp 2-component vector of uint) 0:117 'var4' ( temp int) 0:117 'var4' ( temp int) 0:118 move second child to first child ( temp 3-component vector of uint) 0:118 'var10' ( temp 3-component vector of uint) 0:118 bitfieldExtract ( global 3-component vector of uint) 0:118 'var10' ( temp 3-component vector of uint) 0:118 'var4' ( temp int) 0:118 'var4' ( temp int) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 'var11' ( temp 4-component vector of uint) 0:119 bitfieldExtract ( global 4-component vector of uint) 0:119 'var11' ( temp 4-component vector of uint) 0:119 'var4' ( temp int) 0:119 'var4' ( temp int) 0:121 move second child to first child ( temp int) 0:121 'var4' ( temp int) 0:121 bitfieldInsert ( global int) 0:121 'var4' ( temp int) 0:121 'var4' ( temp int) 0:121 'var4' ( temp int) 0:121 'var4' ( temp int) 0:122 move second child to first child ( temp 2-component vector of int) 0:122 'var5' ( temp 2-component vector of int) 0:122 bitfieldInsert ( global 2-component vector of int) 0:122 'var5' ( temp 2-component vector of int) 0:122 'var5' ( temp 2-component vector of int) 0:122 'var4' ( temp int) 0:122 'var4' ( temp int) 0:123 move second child to first child ( temp 3-component vector of int) 0:123 'var6' ( temp 3-component vector of int) 0:123 bitfieldInsert ( global 3-component vector of int) 0:123 'var6' ( temp 3-component vector of int) 0:123 'var6' ( temp 3-component vector of int) 0:123 'var4' ( temp int) 0:123 'var4' ( temp int) 0:124 move second child to first child ( temp 4-component vector of int) 0:124 'var7' ( temp 4-component vector of int) 0:124 bitfieldInsert ( global 4-component vector of int) 0:124 'var7' ( temp 4-component vector of int) 0:124 'var7' ( temp 4-component vector of int) 0:124 'var4' ( temp int) 0:124 'var4' ( temp int) 0:126 move second child to first child ( temp uint) 0:126 'var8' ( temp uint) 0:126 bitfieldInsert ( global uint) 0:126 'var8' ( temp uint) 0:126 'var8' ( temp uint) 0:126 'var4' ( temp int) 0:126 'var4' ( temp int) 0:127 move second child to first child ( temp 2-component vector of uint) 0:127 'var9' ( temp 2-component vector of uint) 0:127 bitfieldInsert ( global 2-component vector of uint) 0:127 'var9' ( temp 2-component vector of uint) 0:127 'var9' ( temp 2-component vector of uint) 0:127 'var4' ( temp int) 0:127 'var4' ( temp int) 0:128 move second child to first child ( temp 3-component vector of uint) 0:128 'var10' ( temp 3-component vector of uint) 0:128 bitfieldInsert ( global 3-component vector of uint) 0:128 'var10' ( temp 3-component vector of uint) 0:128 'var10' ( temp 3-component vector of uint) 0:128 'var4' ( temp int) 0:128 'var4' ( temp int) 0:129 move second child to first child ( temp 4-component vector of uint) 0:129 'var11' ( temp 4-component vector of uint) 0:129 bitfieldInsert ( global 4-component vector of uint) 0:129 'var11' ( temp 4-component vector of uint) 0:129 'var11' ( temp 4-component vector of uint) 0:129 'var4' ( temp int) 0:129 'var4' ( temp int) 0:131 move second child to first child ( temp int) 0:131 'var4' ( temp int) 0:131 bitFieldReverse ( global int) 0:131 'var4' ( temp int) 0:132 move second child to first child ( temp 2-component vector of int) 0:132 'var5' ( temp 2-component vector of int) 0:132 bitFieldReverse ( global 2-component vector of int) 0:132 'var5' ( temp 2-component vector of int) 0:133 move second child to first child ( temp 3-component vector of int) 0:133 'var6' ( temp 3-component vector of int) 0:133 bitFieldReverse ( global 3-component vector of int) 0:133 'var6' ( temp 3-component vector of int) 0:134 move second child to first child ( temp 4-component vector of int) 0:134 'var7' ( temp 4-component vector of int) 0:134 bitFieldReverse ( global 4-component vector of int) 0:134 'var7' ( temp 4-component vector of int) 0:136 move second child to first child ( temp uint) 0:136 'var8' ( temp uint) 0:136 bitFieldReverse ( global uint) 0:136 'var8' ( temp uint) 0:137 move second child to first child ( temp 2-component vector of uint) 0:137 'var9' ( temp 2-component vector of uint) 0:137 bitFieldReverse ( global 2-component vector of uint) 0:137 'var9' ( temp 2-component vector of uint) 0:138 move second child to first child ( temp 3-component vector of uint) 0:138 'var10' ( temp 3-component vector of uint) 0:138 bitFieldReverse ( global 3-component vector of uint) 0:138 'var10' ( temp 3-component vector of uint) 0:139 move second child to first child ( temp 4-component vector of uint) 0:139 'var11' ( temp 4-component vector of uint) 0:139 bitFieldReverse ( global 4-component vector of uint) 0:139 'var11' ( temp 4-component vector of uint) 0:141 move second child to first child ( temp int) 0:141 'var4' ( temp int) 0:141 bitCount ( global int) 0:141 'var4' ( temp int) 0:142 move second child to first child ( temp 2-component vector of int) 0:142 'var5' ( temp 2-component vector of int) 0:142 bitCount ( global 2-component vector of int) 0:142 'var5' ( temp 2-component vector of int) 0:143 move second child to first child ( temp 3-component vector of int) 0:143 'var6' ( temp 3-component vector of int) 0:143 bitCount ( global 3-component vector of int) 0:143 'var6' ( temp 3-component vector of int) 0:144 move second child to first child ( temp 4-component vector of int) 0:144 'var7' ( temp 4-component vector of int) 0:144 bitCount ( global 4-component vector of int) 0:144 'var7' ( temp 4-component vector of int) 0:146 move second child to first child ( temp uint) 0:146 'var8' ( temp uint) 0:146 Convert int to uint ( temp uint) 0:146 bitCount ( global int) 0:146 'var8' ( temp uint) 0:147 move second child to first child ( temp 2-component vector of uint) 0:147 'var9' ( temp 2-component vector of uint) 0:147 Convert int to uint ( temp 2-component vector of uint) 0:147 bitCount ( global 2-component vector of int) 0:147 'var9' ( temp 2-component vector of uint) 0:148 move second child to first child ( temp 3-component vector of uint) 0:148 'var10' ( temp 3-component vector of uint) 0:148 Convert int to uint ( temp 3-component vector of uint) 0:148 bitCount ( global 3-component vector of int) 0:148 'var10' ( temp 3-component vector of uint) 0:149 move second child to first child ( temp 4-component vector of uint) 0:149 'var11' ( temp 4-component vector of uint) 0:149 Convert int to uint ( temp 4-component vector of uint) 0:149 bitCount ( global 4-component vector of int) 0:149 'var11' ( temp 4-component vector of uint) 0:151 move second child to first child ( temp uint) 0:151 'var8' ( temp uint) 0:151 Convert int to uint ( temp uint) 0:151 findMSB ( global int) 0:151 'var8' ( temp uint) 0:152 move second child to first child ( temp 2-component vector of uint) 0:152 'var9' ( temp 2-component vector of uint) 0:152 Convert int to uint ( temp 2-component vector of uint) 0:152 findMSB ( global 2-component vector of int) 0:152 'var9' ( temp 2-component vector of uint) 0:153 move second child to first child ( temp 3-component vector of uint) 0:153 'var10' ( temp 3-component vector of uint) 0:153 Convert int to uint ( temp 3-component vector of uint) 0:153 findMSB ( global 3-component vector of int) 0:153 'var10' ( temp 3-component vector of uint) 0:154 move second child to first child ( temp 4-component vector of uint) 0:154 'var11' ( temp 4-component vector of uint) 0:154 Convert int to uint ( temp 4-component vector of uint) 0:154 findMSB ( global 4-component vector of int) 0:154 'var11' ( temp 4-component vector of uint) 0:156 move second child to first child ( temp int) 0:156 'var4' ( temp int) 0:156 findMSB ( global int) 0:156 'var4' ( temp int) 0:157 move second child to first child ( temp 2-component vector of int) 0:157 'var5' ( temp 2-component vector of int) 0:157 findMSB ( global 2-component vector of int) 0:157 'var5' ( temp 2-component vector of int) 0:158 move second child to first child ( temp 3-component vector of int) 0:158 'var6' ( temp 3-component vector of int) 0:158 findMSB ( global 3-component vector of int) 0:158 'var6' ( temp 3-component vector of int) 0:159 move second child to first child ( temp 4-component vector of int) 0:159 'var7' ( temp 4-component vector of int) 0:159 findMSB ( global 4-component vector of int) 0:159 'var7' ( temp 4-component vector of int) 0:161 move second child to first child ( temp int) 0:161 'var4' ( temp int) 0:161 findLSB ( global int) 0:161 'var4' ( temp int) 0:162 move second child to first child ( temp 2-component vector of int) 0:162 'var5' ( temp 2-component vector of int) 0:162 findLSB ( global 2-component vector of int) 0:162 'var5' ( temp 2-component vector of int) 0:163 move second child to first child ( temp 3-component vector of int) 0:163 'var6' ( temp 3-component vector of int) 0:163 findLSB ( global 3-component vector of int) 0:163 'var6' ( temp 3-component vector of int) 0:164 move second child to first child ( temp 4-component vector of int) 0:164 'var7' ( temp 4-component vector of int) 0:164 findLSB ( global 4-component vector of int) 0:164 'var7' ( temp 4-component vector of int) 0:166 move second child to first child ( temp uint) 0:166 'var8' ( temp uint) 0:166 Convert int to uint ( temp uint) 0:166 findLSB ( global int) 0:166 'var8' ( temp uint) 0:167 move second child to first child ( temp 2-component vector of uint) 0:167 'var9' ( temp 2-component vector of uint) 0:167 Convert int to uint ( temp 2-component vector of uint) 0:167 findLSB ( global 2-component vector of int) 0:167 'var9' ( temp 2-component vector of uint) 0:168 move second child to first child ( temp 3-component vector of uint) 0:168 'var10' ( temp 3-component vector of uint) 0:168 Convert int to uint ( temp 3-component vector of uint) 0:168 findLSB ( global 3-component vector of int) 0:168 'var10' ( temp 3-component vector of uint) 0:169 move second child to first child ( temp 4-component vector of uint) 0:169 'var11' ( temp 4-component vector of uint) 0:169 Convert int to uint ( temp 4-component vector of uint) 0:169 findLSB ( global 4-component vector of int) 0:169 'var11' ( temp 4-component vector of uint) 0:172 move second child to first child ( temp int) 0:172 'var4' ( temp int) 0:172 floatBitsToInt ( global int) 0:172 'var0' ( temp float) 0:173 move second child to first child ( temp 2-component vector of int) 0:173 'var5' ( temp 2-component vector of int) 0:173 floatBitsToInt ( global 2-component vector of int) 0:173 'var1' ( temp 2-component vector of float) 0:174 move second child to first child ( temp 3-component vector of int) 0:174 'var6' ( temp 3-component vector of int) 0:174 floatBitsToInt ( global 3-component vector of int) 0:174 'var2' ( temp 3-component vector of float) 0:175 move second child to first child ( temp 4-component vector of int) 0:175 'var7' ( temp 4-component vector of int) 0:175 floatBitsToInt ( global 4-component vector of int) 0:175 'var3' ( temp 4-component vector of float) 0:177 move second child to first child ( temp uint) 0:177 'var8' ( temp uint) 0:177 floatBitsToUint ( global uint) 0:177 'var0' ( temp float) 0:178 move second child to first child ( temp 2-component vector of uint) 0:178 'var9' ( temp 2-component vector of uint) 0:178 floatBitsToUint ( global 2-component vector of uint) 0:178 'var1' ( temp 2-component vector of float) 0:179 move second child to first child ( temp 3-component vector of uint) 0:179 'var10' ( temp 3-component vector of uint) 0:179 floatBitsToUint ( global 3-component vector of uint) 0:179 'var2' ( temp 3-component vector of float) 0:180 move second child to first child ( temp 4-component vector of uint) 0:180 'var11' ( temp 4-component vector of uint) 0:180 floatBitsToUint ( global 4-component vector of uint) 0:180 'var3' ( temp 4-component vector of float) 0:182 move second child to first child ( temp float) 0:182 'var0' ( temp float) 0:182 intBitsToFloat ( global float) 0:182 'var4' ( temp int) 0:183 move second child to first child ( temp 2-component vector of float) 0:183 'var1' ( temp 2-component vector of float) 0:183 intBitsToFloat ( global 2-component vector of float) 0:183 'var5' ( temp 2-component vector of int) 0:184 move second child to first child ( temp 3-component vector of float) 0:184 'var2' ( temp 3-component vector of float) 0:184 intBitsToFloat ( global 3-component vector of float) 0:184 'var6' ( temp 3-component vector of int) 0:185 move second child to first child ( temp 4-component vector of float) 0:185 'var3' ( temp 4-component vector of float) 0:185 intBitsToFloat ( global 4-component vector of float) 0:185 'var7' ( temp 4-component vector of int) 0:187 move second child to first child ( temp float) 0:187 'var0' ( temp float) 0:187 uintBitsToFloat ( global float) 0:187 'var8' ( temp uint) 0:188 move second child to first child ( temp 2-component vector of float) 0:188 'var1' ( temp 2-component vector of float) 0:188 uintBitsToFloat ( global 2-component vector of float) 0:188 'var9' ( temp 2-component vector of uint) 0:189 move second child to first child ( temp 3-component vector of float) 0:189 'var2' ( temp 3-component vector of float) 0:189 uintBitsToFloat ( global 3-component vector of float) 0:189 'var10' ( temp 3-component vector of uint) 0:190 move second child to first child ( temp 4-component vector of float) 0:190 'var3' ( temp 4-component vector of float) 0:190 uintBitsToFloat ( global 4-component vector of float) 0:190 'var11' ( temp 4-component vector of uint) 0:193 move second child to first child ( temp uint) 0:193 'var8' ( temp uint) 0:193 addCarry ( global uint) 0:193 'var8' ( temp uint) 0:193 'var8' ( temp uint) 0:193 'var8' ( temp uint) 0:194 move second child to first child ( temp 2-component vector of uint) 0:194 'var9' ( temp 2-component vector of uint) 0:194 addCarry ( global 2-component vector of uint) 0:194 'var9' ( temp 2-component vector of uint) 0:194 'var9' ( temp 2-component vector of uint) 0:194 'var9' ( temp 2-component vector of uint) 0:195 move second child to first child ( temp 3-component vector of uint) 0:195 'var10' ( temp 3-component vector of uint) 0:195 addCarry ( global 3-component vector of uint) 0:195 'var10' ( temp 3-component vector of uint) 0:195 'var10' ( temp 3-component vector of uint) 0:195 'var10' ( temp 3-component vector of uint) 0:196 move second child to first child ( temp 4-component vector of uint) 0:196 'var11' ( temp 4-component vector of uint) 0:196 addCarry ( global 4-component vector of uint) 0:196 'var11' ( temp 4-component vector of uint) 0:196 'var11' ( temp 4-component vector of uint) 0:196 'var11' ( temp 4-component vector of uint) 0:198 move second child to first child ( temp uint) 0:198 'var8' ( temp uint) 0:198 subBorrow ( global uint) 0:198 'var8' ( temp uint) 0:198 'var8' ( temp uint) 0:198 'var8' ( temp uint) 0:199 move second child to first child ( temp 2-component vector of uint) 0:199 'var9' ( temp 2-component vector of uint) 0:199 subBorrow ( global 2-component vector of uint) 0:199 'var9' ( temp 2-component vector of uint) 0:199 'var9' ( temp 2-component vector of uint) 0:199 'var9' ( temp 2-component vector of uint) 0:200 move second child to first child ( temp 3-component vector of uint) 0:200 'var10' ( temp 3-component vector of uint) 0:200 subBorrow ( global 3-component vector of uint) 0:200 'var10' ( temp 3-component vector of uint) 0:200 'var10' ( temp 3-component vector of uint) 0:200 'var10' ( temp 3-component vector of uint) 0:201 move second child to first child ( temp 4-component vector of uint) 0:201 'var11' ( temp 4-component vector of uint) 0:201 subBorrow ( global 4-component vector of uint) 0:201 'var11' ( temp 4-component vector of uint) 0:201 'var11' ( temp 4-component vector of uint) 0:201 'var11' ( temp 4-component vector of uint) 0:203 uMulExtended ( global void) 0:203 'var8' ( temp uint) 0:203 'var8' ( temp uint) 0:203 'var8' ( temp uint) 0:203 'var8' ( temp uint) 0:204 uMulExtended ( global void) 0:204 'var9' ( temp 2-component vector of uint) 0:204 'var9' ( temp 2-component vector of uint) 0:204 'var9' ( temp 2-component vector of uint) 0:204 'var9' ( temp 2-component vector of uint) 0:205 uMulExtended ( global void) 0:205 'var10' ( temp 3-component vector of uint) 0:205 'var10' ( temp 3-component vector of uint) 0:205 'var10' ( temp 3-component vector of uint) 0:205 'var10' ( temp 3-component vector of uint) 0:206 uMulExtended ( global void) 0:206 'var11' ( temp 4-component vector of uint) 0:206 'var11' ( temp 4-component vector of uint) 0:206 'var11' ( temp 4-component vector of uint) 0:206 'var11' ( temp 4-component vector of uint) 0:208 iMulExtended ( global void) 0:208 'var4' ( temp int) 0:208 'var4' ( temp int) 0:208 'var4' ( temp int) 0:208 'var4' ( temp int) 0:209 iMulExtended ( global void) 0:209 'var5' ( temp 2-component vector of int) 0:209 'var5' ( temp 2-component vector of int) 0:209 'var5' ( temp 2-component vector of int) 0:209 'var5' ( temp 2-component vector of int) 0:210 iMulExtended ( global void) 0:210 'var6' ( temp 3-component vector of int) 0:210 'var6' ( temp 3-component vector of int) 0:210 'var6' ( temp 3-component vector of int) 0:210 'var6' ( temp 3-component vector of int) 0:211 iMulExtended ( global void) 0:211 'var7' ( temp 4-component vector of int) 0:211 'var7' ( temp 4-component vector of int) 0:211 'var7' ( temp 4-component vector of int) 0:211 'var7' ( temp 4-component vector of int) 0:213 move second child to first child ( temp uint) 0:213 'var8' ( temp uint) 0:213 packUnorm2x16 ( global uint) 0:213 'var1' ( temp 2-component vector of float) 0:214 move second child to first child ( temp uint) 0:214 'var8' ( temp uint) 0:214 PackUnorm4x8 ( global uint) 0:214 'var3' ( temp 4-component vector of float) 0:215 move second child to first child ( temp uint) 0:215 'var8' ( temp uint) 0:215 PackSnorm4x8 ( global uint) 0:215 'var3' ( temp 4-component vector of float) 0:217 move second child to first child ( temp 2-component vector of float) 0:217 'var1' ( temp 2-component vector of float) 0:217 unpackUnorm2x16 ( global 2-component vector of float) 0:217 'var8' ( temp uint) 0:218 move second child to first child ( temp 4-component vector of float) 0:218 'var3' ( temp 4-component vector of float) 0:218 UnpackUnorm4x8 ( global 4-component vector of float) 0:218 'var8' ( temp uint) 0:219 move second child to first child ( temp 4-component vector of float) 0:219 'var3' ( temp 4-component vector of float) 0:219 UnpackSnorm4x8 ( global 4-component vector of float) 0:219 'var8' ( temp uint) 0:221 move second child to first child ( temp float) 0:221 'var0' ( temp float) 0:221 interpolateAtCentroid ( global float) 0:221 'fvar0' ( smooth in float) 0:222 move second child to first child ( temp 2-component vector of float) 0:222 'var1' ( temp 2-component vector of float) 0:222 interpolateAtCentroid ( global 2-component vector of float) 0:222 'fvar1' ( smooth in 2-component vector of float) 0:223 move second child to first child ( temp 3-component vector of float) 0:223 'var2' ( temp 3-component vector of float) 0:223 interpolateAtCentroid ( global 3-component vector of float) 0:223 'fvar2' ( smooth in 3-component vector of float) 0:224 move second child to first child ( temp 4-component vector of float) 0:224 'var3' ( temp 4-component vector of float) 0:224 interpolateAtCentroid ( global 4-component vector of float) 0:224 'fvar3' ( smooth in 4-component vector of float) 0:225 move second child to first child ( temp float) 0:225 'var0' ( temp float) 0:225 interpolateAtSample ( global float) 0:225 'fvar0' ( smooth in float) 0:225 'var4' ( temp int) 0:226 move second child to first child ( temp 2-component vector of float) 0:226 'var1' ( temp 2-component vector of float) 0:226 interpolateAtSample ( global 2-component vector of float) 0:226 'fvar1' ( smooth in 2-component vector of float) 0:226 'var4' ( temp int) 0:227 move second child to first child ( temp 3-component vector of float) 0:227 'var2' ( temp 3-component vector of float) 0:227 interpolateAtSample ( global 3-component vector of float) 0:227 'fvar2' ( smooth in 3-component vector of float) 0:227 'var4' ( temp int) 0:228 move second child to first child ( temp 4-component vector of float) 0:228 'var3' ( temp 4-component vector of float) 0:228 interpolateAtSample ( global 4-component vector of float) 0:228 'fvar3' ( smooth in 4-component vector of float) 0:228 'var4' ( temp int) 0:229 move second child to first child ( temp float) 0:229 'var0' ( temp float) 0:229 interpolateAtOffset ( global float) 0:229 'fvar0' ( smooth in float) 0:229 'var1' ( temp 2-component vector of float) 0:230 move second child to first child ( temp 2-component vector of float) 0:230 'var1' ( temp 2-component vector of float) 0:230 interpolateAtOffset ( global 2-component vector of float) 0:230 'fvar1' ( smooth in 2-component vector of float) 0:230 'var1' ( temp 2-component vector of float) 0:231 move second child to first child ( temp 3-component vector of float) 0:231 'var2' ( temp 3-component vector of float) 0:231 interpolateAtOffset ( global 3-component vector of float) 0:231 'fvar2' ( smooth in 3-component vector of float) 0:231 'var1' ( temp 2-component vector of float) 0:232 move second child to first child ( temp 4-component vector of float) 0:232 'var3' ( temp 4-component vector of float) 0:232 interpolateAtOffset ( global 4-component vector of float) 0:232 'fvar3' ( smooth in 4-component vector of float) 0:232 'var1' ( temp 2-component vector of float) 0:236 move second child to first child ( temp 4-component vector of float) 0:236 'var3' ( temp 4-component vector of float) 0:236 textureGatherOffset ( global 4-component vector of float) 0:236 'svar24' ( uniform sampler2D) 0:236 'var1' ( temp 2-component vector of float) 0:236 'var5' ( temp 2-component vector of int) 0:237 move second child to first child ( temp 4-component vector of uint) 0:237 'var11' ( temp 4-component vector of uint) 0:237 textureGatherOffset ( global 4-component vector of uint) 0:237 'svar25' ( uniform usampler2D) 0:237 'var1' ( temp 2-component vector of float) 0:237 'var5' ( temp 2-component vector of int) 0:238 move second child to first child ( temp 4-component vector of int) 0:238 'var7' ( temp 4-component vector of int) 0:238 textureGatherOffset ( global 4-component vector of int) 0:238 'svar26' ( uniform isampler2D) 0:238 'var1' ( temp 2-component vector of float) 0:238 'var5' ( temp 2-component vector of int) 0:241 move second child to first child ( temp 4-component vector of float) 0:241 'var3' ( temp 4-component vector of float) 0:241 textureGatherOffset ( global 4-component vector of float) 0:241 'svar33' ( uniform sampler2DArray) 0:241 'var2' ( temp 3-component vector of float) 0:241 'var5' ( temp 2-component vector of int) 0:242 move second child to first child ( temp 4-component vector of uint) 0:242 'var11' ( temp 4-component vector of uint) 0:242 textureGatherOffset ( global 4-component vector of uint) 0:242 'svar34' ( uniform usampler2DArray) 0:242 'var2' ( temp 3-component vector of float) 0:242 'var5' ( temp 2-component vector of int) 0:243 move second child to first child ( temp 4-component vector of int) 0:243 'var7' ( temp 4-component vector of int) 0:243 textureGatherOffset ( global 4-component vector of int) 0:243 'svar35' ( uniform isampler2DArray) 0:243 'var2' ( temp 3-component vector of float) 0:243 'var5' ( temp 2-component vector of int) 0:245 move second child to first child ( temp 4-component vector of float) 0:245 'var3' ( temp 4-component vector of float) 0:245 textureGatherOffset ( global 4-component vector of float) 0:245 'svar27' ( uniform sampler2DRect) 0:245 'var1' ( temp 2-component vector of float) 0:245 'var5' ( temp 2-component vector of int) 0:246 move second child to first child ( temp 4-component vector of uint) 0:246 'var11' ( temp 4-component vector of uint) 0:246 textureGatherOffset ( global 4-component vector of uint) 0:246 'svar28' ( uniform usampler2DRect) 0:246 'var1' ( temp 2-component vector of float) 0:246 'var5' ( temp 2-component vector of int) 0:247 move second child to first child ( temp 4-component vector of int) 0:247 'var7' ( temp 4-component vector of int) 0:247 textureGatherOffset ( global 4-component vector of int) 0:247 'svar29' ( uniform isampler2DRect) 0:247 'var1' ( temp 2-component vector of float) 0:247 'var5' ( temp 2-component vector of int) 0:249 move second child to first child ( temp 4-component vector of float) 0:249 'var3' ( temp 4-component vector of float) 0:249 textureGatherOffset ( global 4-component vector of float) 0:249 'var16' ( uniform sampler2DShadow) 0:249 'var1' ( temp 2-component vector of float) 0:249 'var0' ( temp float) 0:249 'var5' ( temp 2-component vector of int) 0:251 move second child to first child ( temp 4-component vector of float) 0:251 'var3' ( temp 4-component vector of float) 0:251 textureGatherOffset ( global 4-component vector of float) 0:251 'var18' ( uniform sampler2DArrayShadow) 0:251 'var2' ( temp 3-component vector of float) 0:251 'var0' ( temp float) 0:251 'var5' ( temp 2-component vector of int) 0:253 move second child to first child ( temp 4-component vector of float) 0:253 'var3' ( temp 4-component vector of float) 0:253 textureGatherOffset ( global 4-component vector of float) 0:253 'var20' ( uniform sampler2DRectShadow) 0:253 'var1' ( temp 2-component vector of float) 0:253 'var0' ( temp float) 0:253 'var5' ( temp 2-component vector of int) 0:256 move second child to first child ( temp 4-component vector of float) 0:256 'var3' ( temp 4-component vector of float) 0:256 textureGather ( global 4-component vector of float) 0:256 'svar24' ( uniform sampler2D) 0:256 'var1' ( temp 2-component vector of float) 0:257 move second child to first child ( temp 4-component vector of uint) 0:257 'var11' ( temp 4-component vector of uint) 0:257 textureGather ( global 4-component vector of uint) 0:257 'svar25' ( uniform usampler2D) 0:257 'var1' ( temp 2-component vector of float) 0:258 move second child to first child ( temp 4-component vector of int) 0:258 'var7' ( temp 4-component vector of int) 0:258 textureGather ( global 4-component vector of int) 0:258 'svar26' ( uniform isampler2D) 0:258 'var1' ( temp 2-component vector of float) 0:260 move second child to first child ( temp 4-component vector of float) 0:260 'var3' ( temp 4-component vector of float) 0:260 textureGather ( global 4-component vector of float) 0:260 'svar33' ( uniform sampler2DArray) 0:260 'var2' ( temp 3-component vector of float) 0:261 move second child to first child ( temp 4-component vector of uint) 0:261 'var11' ( temp 4-component vector of uint) 0:261 textureGather ( global 4-component vector of uint) 0:261 'svar34' ( uniform usampler2DArray) 0:261 'var2' ( temp 3-component vector of float) 0:262 move second child to first child ( temp 4-component vector of int) 0:262 'var7' ( temp 4-component vector of int) 0:262 textureGather ( global 4-component vector of int) 0:262 'svar35' ( uniform isampler2DArray) 0:262 'var2' ( temp 3-component vector of float) 0:264 move second child to first child ( temp 4-component vector of float) 0:264 'var3' ( temp 4-component vector of float) 0:264 textureGather ( global 4-component vector of float) 0:264 'svar30' ( uniform samplerCube) 0:264 'var2' ( temp 3-component vector of float) 0:265 move second child to first child ( temp 4-component vector of uint) 0:265 'var11' ( temp 4-component vector of uint) 0:265 textureGather ( global 4-component vector of uint) 0:265 'svar31' ( uniform usamplerCube) 0:265 'var2' ( temp 3-component vector of float) 0:266 move second child to first child ( temp 4-component vector of int) 0:266 'var7' ( temp 4-component vector of int) 0:266 textureGather ( global 4-component vector of int) 0:266 'svar32' ( uniform isamplerCube) 0:266 'var2' ( temp 3-component vector of float) 0:268 move second child to first child ( temp 4-component vector of float) 0:268 'var3' ( temp 4-component vector of float) 0:268 textureGather ( global 4-component vector of float) 0:268 'svar21' ( uniform samplerCubeArray) 0:268 'var3' ( temp 4-component vector of float) 0:269 move second child to first child ( temp 4-component vector of uint) 0:269 'var11' ( temp 4-component vector of uint) 0:269 textureGather ( global 4-component vector of uint) 0:269 'svar22' ( uniform usamplerCubeArray) 0:269 'var3' ( temp 4-component vector of float) 0:270 move second child to first child ( temp 4-component vector of int) 0:270 'var7' ( temp 4-component vector of int) 0:270 textureGather ( global 4-component vector of int) 0:270 'svar23' ( uniform isamplerCubeArray) 0:270 'var3' ( temp 4-component vector of float) 0:272 move second child to first child ( temp 4-component vector of float) 0:272 'var3' ( temp 4-component vector of float) 0:272 textureGather ( global 4-component vector of float) 0:272 'svar27' ( uniform sampler2DRect) 0:272 'var1' ( temp 2-component vector of float) 0:273 move second child to first child ( temp 4-component vector of uint) 0:273 'var11' ( temp 4-component vector of uint) 0:273 textureGather ( global 4-component vector of uint) 0:273 'svar28' ( uniform usampler2DRect) 0:273 'var1' ( temp 2-component vector of float) 0:274 move second child to first child ( temp 4-component vector of int) 0:274 'var7' ( temp 4-component vector of int) 0:274 textureGather ( global 4-component vector of int) 0:274 'svar29' ( uniform isampler2DRect) 0:274 'var1' ( temp 2-component vector of float) 0:276 move second child to first child ( temp 4-component vector of float) 0:276 'var3' ( temp 4-component vector of float) 0:276 textureGather ( global 4-component vector of float) 0:276 'var16' ( uniform sampler2DShadow) 0:276 'var1' ( temp 2-component vector of float) 0:276 'var0' ( temp float) 0:278 move second child to first child ( temp 4-component vector of float) 0:278 'var3' ( temp 4-component vector of float) 0:278 textureGather ( global 4-component vector of float) 0:278 'var18' ( uniform sampler2DArrayShadow) 0:278 'var2' ( temp 3-component vector of float) 0:278 'var0' ( temp float) 0:280 move second child to first child ( temp 4-component vector of float) 0:280 'var3' ( temp 4-component vector of float) 0:280 textureGather ( global 4-component vector of float) 0:280 'var17' ( uniform samplerCubeShadow) 0:280 'var2' ( temp 3-component vector of float) 0:280 'var0' ( temp float) 0:282 move second child to first child ( temp 4-component vector of float) 0:282 'var3' ( temp 4-component vector of float) 0:282 textureGather ( global 4-component vector of float) 0:282 'var19' ( uniform samplerCubeArrayShadow) 0:282 'var3' ( temp 4-component vector of float) 0:282 'var0' ( temp float) 0:284 move second child to first child ( temp 4-component vector of float) 0:284 'var3' ( temp 4-component vector of float) 0:284 textureGather ( global 4-component vector of float) 0:284 'var20' ( uniform sampler2DRectShadow) 0:284 'var1' ( temp 2-component vector of float) 0:284 'var0' ( temp float) 0:287 move second child to first child ( temp 4-component vector of float) 0:287 'var3' ( temp 4-component vector of float) 0:287 textureGatherOffsets ( global 4-component vector of float) 0:287 'svar24' ( uniform sampler2D) 0:287 'var1' ( temp 2-component vector of float) 0:287 Constant: 0:287 1 (const int) 0:287 2 (const int) 0:287 3 (const int) 0:287 4 (const int) 0:287 15 (const int) 0:287 16 (const int) 0:287 -2 (const int) 0:287 0 (const int) 0:288 move second child to first child ( temp 4-component vector of uint) 0:288 'var11' ( temp 4-component vector of uint) 0:288 textureGatherOffsets ( global 4-component vector of uint) 0:288 'svar25' ( uniform usampler2D) 0:288 'var1' ( temp 2-component vector of float) 0:288 Constant: 0:288 1 (const int) 0:288 2 (const int) 0:288 3 (const int) 0:288 4 (const int) 0:288 15 (const int) 0:288 16 (const int) 0:288 -2 (const int) 0:288 0 (const int) 0:289 move second child to first child ( temp 4-component vector of int) 0:289 'var7' ( temp 4-component vector of int) 0:289 textureGatherOffsets ( global 4-component vector of int) 0:289 'svar26' ( uniform isampler2D) 0:289 'var1' ( temp 2-component vector of float) 0:289 Constant: 0:289 1 (const int) 0:289 2 (const int) 0:289 3 (const int) 0:289 4 (const int) 0:289 15 (const int) 0:289 16 (const int) 0:289 -2 (const int) 0:289 0 (const int) 0:291 move second child to first child ( temp 4-component vector of float) 0:291 'var3' ( temp 4-component vector of float) 0:291 textureGatherOffsets ( global 4-component vector of float) 0:291 'svar33' ( uniform sampler2DArray) 0:291 'var2' ( temp 3-component vector of float) 0:291 Constant: 0:291 1 (const int) 0:291 2 (const int) 0:291 3 (const int) 0:291 4 (const int) 0:291 15 (const int) 0:291 16 (const int) 0:291 -2 (const int) 0:291 0 (const int) 0:292 move second child to first child ( temp 4-component vector of uint) 0:292 'var11' ( temp 4-component vector of uint) 0:292 textureGatherOffsets ( global 4-component vector of uint) 0:292 'svar34' ( uniform usampler2DArray) 0:292 'var2' ( temp 3-component vector of float) 0:292 Constant: 0:292 1 (const int) 0:292 2 (const int) 0:292 3 (const int) 0:292 4 (const int) 0:292 15 (const int) 0:292 16 (const int) 0:292 -2 (const int) 0:292 0 (const int) 0:293 move second child to first child ( temp 4-component vector of int) 0:293 'var7' ( temp 4-component vector of int) 0:293 textureGatherOffsets ( global 4-component vector of int) 0:293 'svar35' ( uniform isampler2DArray) 0:293 'var2' ( temp 3-component vector of float) 0:293 Constant: 0:293 1 (const int) 0:293 2 (const int) 0:293 3 (const int) 0:293 4 (const int) 0:293 15 (const int) 0:293 16 (const int) 0:293 -2 (const int) 0:293 0 (const int) 0:295 move second child to first child ( temp 4-component vector of float) 0:295 'var3' ( temp 4-component vector of float) 0:295 textureGatherOffsets ( global 4-component vector of float) 0:295 'svar27' ( uniform sampler2DRect) 0:295 'var1' ( temp 2-component vector of float) 0:295 Constant: 0:295 1 (const int) 0:295 2 (const int) 0:295 3 (const int) 0:295 4 (const int) 0:295 15 (const int) 0:295 16 (const int) 0:295 -2 (const int) 0:295 0 (const int) 0:296 move second child to first child ( temp 4-component vector of uint) 0:296 'var11' ( temp 4-component vector of uint) 0:296 textureGatherOffsets ( global 4-component vector of uint) 0:296 'svar28' ( uniform usampler2DRect) 0:296 'var1' ( temp 2-component vector of float) 0:296 Constant: 0:296 1 (const int) 0:296 2 (const int) 0:296 3 (const int) 0:296 4 (const int) 0:296 15 (const int) 0:296 16 (const int) 0:296 -2 (const int) 0:296 0 (const int) 0:297 move second child to first child ( temp 4-component vector of int) 0:297 'var7' ( temp 4-component vector of int) 0:297 textureGatherOffsets ( global 4-component vector of int) 0:297 'svar29' ( uniform isampler2DRect) 0:297 'var1' ( temp 2-component vector of float) 0:297 Constant: 0:297 1 (const int) 0:297 2 (const int) 0:297 3 (const int) 0:297 4 (const int) 0:297 15 (const int) 0:297 16 (const int) 0:297 -2 (const int) 0:297 0 (const int) 0:299 move second child to first child ( temp 4-component vector of float) 0:299 'var3' ( temp 4-component vector of float) 0:299 textureGatherOffsets ( global 4-component vector of float) 0:299 'var16' ( uniform sampler2DShadow) 0:299 'var1' ( temp 2-component vector of float) 0:299 'var0' ( temp float) 0:299 Constant: 0:299 1 (const int) 0:299 2 (const int) 0:299 3 (const int) 0:299 4 (const int) 0:299 15 (const int) 0:299 16 (const int) 0:299 -2 (const int) 0:299 0 (const int) 0:301 move second child to first child ( temp 4-component vector of float) 0:301 'var3' ( temp 4-component vector of float) 0:301 textureGatherOffsets ( global 4-component vector of float) 0:301 'var18' ( uniform sampler2DArrayShadow) 0:301 'var2' ( temp 3-component vector of float) 0:301 'var0' ( temp float) 0:301 Constant: 0:301 1 (const int) 0:301 2 (const int) 0:301 3 (const int) 0:301 4 (const int) 0:301 15 (const int) 0:301 16 (const int) 0:301 -2 (const int) 0:301 0 (const int) 0:303 move second child to first child ( temp 4-component vector of float) 0:303 'var3' ( temp 4-component vector of float) 0:303 textureGatherOffsets ( global 4-component vector of float) 0:303 'var20' ( uniform sampler2DRectShadow) 0:303 'var1' ( temp 2-component vector of float) 0:303 'var0' ( temp float) 0:303 Constant: 0:303 1 (const int) 0:303 2 (const int) 0:303 3 (const int) 0:303 4 (const int) 0:303 15 (const int) 0:303 16 (const int) 0:303 -2 (const int) 0:303 0 (const int) 0:313 Function Definition: testBlockIndexing( ( global void) 0:313 Function Parameters: 0:315 Sequence 0:315 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform int i}) 0:315 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform int i}) 0:315 Constant: 0:315 1 (const int) 0:317 Sequence 0:317 move second child to first child ( temp int) 0:317 'i' ( temp int) 0:317 Constant: 0:317 0 (const int) 0:318 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform int i}) 0:318 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform int i}) 0:318 'i' ( temp int) 0:? Linker Objects 0:? 'colorSampIn' ( smooth sample in 4-component vector of float) 0:? 'colorSampOut' ( sample out 4-component vector of float) 0:? 'tex' ( uniform 10-element array of sampler2D) 0:? 'coord' ( global 2-component vector of float) 0:? 'gl_SampleMaskIn' ( flat in unsized 1-element array of int SampleMaskIn) 0:? 'b' ( flat in int) 0:? 'var16' ( uniform sampler2DShadow) 0:? 'var17' ( uniform samplerCubeShadow) 0:? 'var18' ( uniform sampler2DArrayShadow) 0:? 'var19' ( uniform samplerCubeArrayShadow) 0:? 'var20' ( uniform sampler2DRectShadow) 0:? 'svar21' ( uniform samplerCubeArray) 0:? 'svar22' ( uniform usamplerCubeArray) 0:? 'svar23' ( uniform isamplerCubeArray) 0:? 'svar24' ( uniform sampler2D) 0:? 'svar25' ( uniform usampler2D) 0:? 'svar26' ( uniform isampler2D) 0:? 'svar27' ( uniform sampler2DRect) 0:? 'svar28' ( uniform usampler2DRect) 0:? 'svar29' ( uniform isampler2DRect) 0:? 'svar30' ( uniform samplerCube) 0:? 'svar31' ( uniform usamplerCube) 0:? 'svar32' ( uniform isamplerCube) 0:? 'svar33' ( uniform sampler2DArray) 0:? 'svar34' ( uniform usampler2DArray) 0:? 'svar35' ( uniform isampler2DArray) 0:? 'fvar0' ( smooth in float) 0:? 'fvar1' ( smooth in 2-component vector of float) 0:? 'fvar2' ( smooth in 3-component vector of float) 0:? 'fvar3' ( smooth in 4-component vector of float) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform int i}) Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 150 Requested GL_ARB_gpu_shader5 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'colorSampIn' ( smooth sample in 4-component vector of float) 0:? 'colorSampOut' ( sample out 4-component vector of float) 0:? 'tex' ( uniform 10-element array of sampler2D) 0:? 'coord' ( global 2-component vector of float) 0:? 'gl_SampleMaskIn' ( flat in unsized 1-element array of int SampleMaskIn) 0:? 'b' ( flat in int) 0:? 'var16' ( uniform sampler2DShadow) 0:? 'var17' ( uniform samplerCubeShadow) 0:? 'var18' ( uniform sampler2DArrayShadow) 0:? 'var19' ( uniform samplerCubeArrayShadow) 0:? 'var20' ( uniform sampler2DRectShadow) 0:? 'svar21' ( uniform samplerCubeArray) 0:? 'svar22' ( uniform usamplerCubeArray) 0:? 'svar23' ( uniform isamplerCubeArray) 0:? 'svar24' ( uniform sampler2D) 0:? 'svar25' ( uniform usampler2D) 0:? 'svar26' ( uniform isampler2D) 0:? 'svar27' ( uniform sampler2DRect) 0:? 'svar28' ( uniform usampler2DRect) 0:? 'svar29' ( uniform isampler2DRect) 0:? 'svar30' ( uniform samplerCube) 0:? 'svar31' ( uniform usamplerCube) 0:? 'svar32' ( uniform isamplerCube) 0:? 'svar33' ( uniform sampler2DArray) 0:? 'svar34' ( uniform usampler2DArray) 0:? 'svar35' ( uniform isampler2DArray) 0:? 'fvar0' ( smooth in float) 0:? 'fvar1' ( smooth in 2-component vector of float) 0:? 'fvar2' ( smooth in 3-component vector of float) 0:? 'fvar3' ( smooth in 4-component vector of float) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform int i}) glslang-16.0.0/Test/baseResults/glsl.autosampledtextures.frag.out000066400000000000000000000042071506534232700252030ustar00rootroot00000000000000glsl.autosampledtextures.frag // 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" 17 21 ExecutionMode 4 OriginUpperLeft Source GLSL 460 Name 4 "main" Name 9 "color" Name 13 "u_Tex" Name 17 "in_UV" Name 21 "out_Color" Decorate 13(u_Tex) Binding 0 Decorate 13(u_Tex) DescriptorSet 0 Decorate 17(in_UV) Location 0 Decorate 21(out_Color) 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(u_Tex): 12(ptr) Variable UniformConstant 15: TypeVector 6(float) 2 16: TypePointer Input 15(fvec2) 17(in_UV): 16(ptr) Variable Input 20: TypePointer Output 7(fvec4) 21(out_Color): 20(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 14: 11 Load 13(u_Tex) 18: 15(fvec2) Load 17(in_UV) 19: 7(fvec4) ImageSampleImplicitLod 14 18 Store 9(color) 19 22: 7(fvec4) Load 9(color) Store 21(out_Color) 22 Return FunctionEnd glslang-16.0.0/Test/baseResults/glsl.entryPointRename.vert.bad.out000066400000000000000000000043321506534232700251510ustar00rootroot00000000000000glsl.entryPointRename.vert ERROR: Source entry point must be "main" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "foo" 13 Source GLSL 460 Name 4 "foo" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16: 6(float) Constant 1065353216 17: 7(fvec4) ConstantComposite 16 16 16 16 18: TypePointer Output 7(fvec4) 4(foo): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 13 15 Store 19 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/glsl.entryPointRename.vert.out000066400000000000000000000042601506534232700244240ustar00rootroot00000000000000glsl.entryPointRename.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "foo" 13 Source GLSL 460 Name 4 "foo" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16: 6(float) Constant 1065353216 17: 7(fvec4) ConstantComposite 16 16 16 16 18: TypePointer Output 7(fvec4) 4(foo): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 13 15 Store 19 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/glsl.entryPointRename2.vert.out000066400000000000000000000002461506534232700245060ustar00rootroot00000000000000glsl.entryPointRename2.vert ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/glsl.es300.layoutOffset.error.vert.out000066400000000000000000000051771506534232700255760ustar00rootroot00000000000000glsl.es300.layoutOffset.error.vert ERROR: 0:3: 'binding' : not supported for this version or the enabled extensions ERROR: 0:3: 'offset' : not supported for this version or the enabled extensions ERROR: 0:3: 'offset' : only applies to block members, not blocks ERROR: 3 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp highp 4-component vector of float) 0:13 'out_vs' ( smooth out highp 4-component vector of float) 0:13 add ( temp highp 4-component vector of float) 0:13 'in_vs' ( in highp 4-component vector of float) 0:13 a: direct index for structure (layout( column_major shared) uniform highp 4-component vector of float) 0:13 'anon@0' (layout( binding=0 column_major shared offset=0) uniform block{layout( column_major shared) uniform highp 4-component vector of float a}) 0:13 Constant: 0:13 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 column_major shared offset=0) uniform block{layout( column_major shared) uniform highp 4-component vector of float a}) 0:? 'in_vs' ( in highp 4-component vector of float) 0:? 'out_vs' ( smooth out highp 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 300 ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp highp 4-component vector of float) 0:13 'out_vs' ( smooth out highp 4-component vector of float) 0:13 add ( temp highp 4-component vector of float) 0:13 'in_vs' ( in highp 4-component vector of float) 0:13 a: direct index for structure (layout( column_major shared) uniform highp 4-component vector of float) 0:13 'anon@0' (layout( binding=0 column_major shared offset=0) uniform block{layout( column_major shared) uniform highp 4-component vector of float a}) 0:13 Constant: 0:13 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 column_major shared offset=0) uniform block{layout( column_major shared) uniform highp 4-component vector of float a}) 0:? 'in_vs' ( in highp 4-component vector of float) 0:? 'out_vs' ( smooth out highp 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/glsl.es320.extTextureShadowLod.frag.out000066400000000000000000000132701506534232700257020ustar00rootroot00000000000000glsl.es320.extTextureShadowLod.frag Shader version: 320 Requested GL_EXT_texture_shadow_lod 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 lowp float) 0:14 'c' ( out lowp float) 0:14 texture ( global lowp float) 0:14 's2da' ( uniform lowp sampler2DArrayShadow) 0:14 'tc' ( smooth in lowp 4-component vector of float) 0:14 Constant: 0:14 0.000000 0:15 move second child to first child ( temp lowp float) 0:15 'c' ( out lowp float) 0:15 texture ( global lowp float) 0:15 'sca' ( uniform lowp samplerCubeArrayShadow) 0:15 'tc' ( smooth in lowp 4-component vector of float) 0:15 Constant: 0:15 0.000000 0:15 Constant: 0:15 0.000000 0:16 move second child to first child ( temp lowp float) 0:16 'c' ( out lowp float) 0:16 textureOffset ( global lowp float) 0:16 's2da' ( uniform lowp sampler2DArrayShadow) 0:16 'tc' ( smooth in lowp 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 0 (const int) 0:16 Constant: 0:16 0.000000 0:17 move second child to first child ( temp lowp float) 0:17 'c' ( out lowp float) 0:17 textureLod ( global lowp float) 0:17 's2da' ( uniform lowp sampler2DArrayShadow) 0:17 'tc' ( smooth in lowp 4-component vector of float) 0:17 Constant: 0:17 0.000000 0:18 move second child to first child ( temp lowp float) 0:18 'c' ( out lowp float) 0:18 textureLod ( global lowp float) 0:18 'sc' ( uniform lowp samplerCubeShadow) 0:18 'tc' ( smooth in lowp 4-component vector of float) 0:18 Constant: 0:18 0.000000 0:19 move second child to first child ( temp lowp float) 0:19 'c' ( out lowp float) 0:19 textureLod ( global lowp float) 0:19 'sca' ( uniform lowp samplerCubeArrayShadow) 0:19 'tc' ( smooth in lowp 4-component vector of float) 0:19 Constant: 0:19 0.000000 0:19 Constant: 0:19 0.000000 0:20 move second child to first child ( temp lowp float) 0:20 'c' ( out lowp float) 0:20 textureLodOffset ( global lowp float) 0:20 's2da' ( uniform lowp sampler2DArrayShadow) 0:20 'tc' ( smooth in lowp 4-component vector of float) 0:20 Constant: 0:20 0.000000 0:20 Constant: 0:20 0 (const int) 0:20 0 (const int) 0:? Linker Objects 0:? 's2da' ( uniform lowp sampler2DArrayShadow) 0:? 'sca' ( uniform lowp samplerCubeArrayShadow) 0:? 'sc' ( uniform lowp samplerCubeShadow) 0:? 'tc' ( smooth in lowp 4-component vector of float) 0:? 'c' ( out lowp float) Linked fragment stage: Shader version: 320 Requested GL_EXT_texture_shadow_lod 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 lowp float) 0:14 'c' ( out lowp float) 0:14 texture ( global lowp float) 0:14 's2da' ( uniform lowp sampler2DArrayShadow) 0:14 'tc' ( smooth in lowp 4-component vector of float) 0:14 Constant: 0:14 0.000000 0:15 move second child to first child ( temp lowp float) 0:15 'c' ( out lowp float) 0:15 texture ( global lowp float) 0:15 'sca' ( uniform lowp samplerCubeArrayShadow) 0:15 'tc' ( smooth in lowp 4-component vector of float) 0:15 Constant: 0:15 0.000000 0:15 Constant: 0:15 0.000000 0:16 move second child to first child ( temp lowp float) 0:16 'c' ( out lowp float) 0:16 textureOffset ( global lowp float) 0:16 's2da' ( uniform lowp sampler2DArrayShadow) 0:16 'tc' ( smooth in lowp 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 0 (const int) 0:16 Constant: 0:16 0.000000 0:17 move second child to first child ( temp lowp float) 0:17 'c' ( out lowp float) 0:17 textureLod ( global lowp float) 0:17 's2da' ( uniform lowp sampler2DArrayShadow) 0:17 'tc' ( smooth in lowp 4-component vector of float) 0:17 Constant: 0:17 0.000000 0:18 move second child to first child ( temp lowp float) 0:18 'c' ( out lowp float) 0:18 textureLod ( global lowp float) 0:18 'sc' ( uniform lowp samplerCubeShadow) 0:18 'tc' ( smooth in lowp 4-component vector of float) 0:18 Constant: 0:18 0.000000 0:19 move second child to first child ( temp lowp float) 0:19 'c' ( out lowp float) 0:19 textureLod ( global lowp float) 0:19 'sca' ( uniform lowp samplerCubeArrayShadow) 0:19 'tc' ( smooth in lowp 4-component vector of float) 0:19 Constant: 0:19 0.000000 0:19 Constant: 0:19 0.000000 0:20 move second child to first child ( temp lowp float) 0:20 'c' ( out lowp float) 0:20 textureLodOffset ( global lowp float) 0:20 's2da' ( uniform lowp sampler2DArrayShadow) 0:20 'tc' ( smooth in lowp 4-component vector of float) 0:20 Constant: 0:20 0.000000 0:20 Constant: 0:20 0 (const int) 0:20 0 (const int) 0:? Linker Objects 0:? 's2da' ( uniform lowp sampler2DArrayShadow) 0:? 'sca' ( uniform lowp samplerCubeArrayShadow) 0:? 'sc' ( uniform lowp samplerCubeShadow) 0:? 'tc' ( smooth in lowp 4-component vector of float) 0:? 'c' ( out lowp float) glslang-16.0.0/Test/baseResults/glsl.es320.subgroup.frag.out000066400000000000000000000030271506534232700235610ustar00rootroot00000000000000glsl.es320.subgroup.frag Shader version: 320 Requested GL_KHR_shader_subgroup_basic 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 move second child to first child ( temp mediump 4-component vector of uint) 0:6 'data' (layout( location=0) out mediump 4-component vector of uint) 0:6 Construct uvec4 ( temp mediump 4-component vector of uint) 0:6 'gl_SubgroupSize' ( flat in mediump uint SubgroupSize) 0:6 'gl_SubgroupInvocationID' ( flat in mediump uint SubgroupInvocationID) 0:6 Constant: 0:6 0 (const uint) 0:6 Constant: 0:6 0 (const uint) 0:? Linker Objects 0:? 'data' (layout( location=0) out mediump 4-component vector of uint) Linked fragment stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:6 Sequence 0:6 move second child to first child ( temp mediump 4-component vector of uint) 0:6 'data' (layout( location=0) out mediump 4-component vector of uint) 0:6 Construct uvec4 ( temp mediump 4-component vector of uint) 0:6 'gl_SubgroupSize' ( flat in mediump uint SubgroupSize) 0:6 'gl_SubgroupInvocationID' ( flat in mediump uint SubgroupInvocationID) 0:6 Constant: 0:6 0 (const uint) 0:6 Constant: 0:6 0 (const uint) 0:? Linker Objects 0:? 'data' (layout( location=0) out mediump 4-component vector of uint) glslang-16.0.0/Test/baseResults/glsl.es320.subgroup.geom.out000066400000000000000000000055621506534232700235770ustar00rootroot00000000000000glsl.es320.subgroup.geom Shader version: 320 Requested GL_KHR_shader_subgroup_basic 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 highp 4-component vector of uint) 0:12 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint) 0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint) 0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:12 Constant: 0:12 0 (const uint) 0:12 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) 0:12 Construct uvec4 ( temp mediump 4-component vector of uint) 0:12 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:12 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:12 Constant: 0:12 0 (const uint) 0:12 Constant: 0:12 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) Linked geometry stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic 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 highp 4-component vector of uint) 0:12 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint) 0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint) 0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:12 Constant: 0:12 0 (const uint) 0:12 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) 0:12 Construct uvec4 ( temp mediump 4-component vector of uint) 0:12 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:12 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:12 Constant: 0:12 0 (const uint) 0:12 Constant: 0:12 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroup.tesc.out000066400000000000000000000053471506534232700236070ustar00rootroot00000000000000glsl.es320.subgroup.tesc Shader version: 320 Requested GL_KHR_shader_subgroup_basic vertices = 1 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 highp 4-component vector of uint) 0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint) 0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint) 0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:11 Constant: 0:11 0 (const uint) 0:11 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:11 Construct uvec4 ( temp mediump 4-component vector of uint) 0:11 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:11 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:11 Constant: 0:11 0 (const uint) 0:11 Constant: 0:11 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) Linked tessellation control stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic vertices = 1 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 highp 4-component vector of uint) 0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint) 0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint) 0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:11 Constant: 0:11 0 (const uint) 0:11 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:11 Construct uvec4 ( temp mediump 4-component vector of uint) 0:11 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:11 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:11 Constant: 0:11 0 (const uint) 0:11 Constant: 0:11 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroup.tese.out000066400000000000000000000055461506534232700236120ustar00rootroot00000000000000glsl.es320.subgroup.tese Shader version: 320 Requested GL_KHR_shader_subgroup_basic input primitive = isolines vertex spacing = none triangle order = none 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 highp 4-component vector of uint) 0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint) 0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint) 0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:11 Constant: 0:11 0 (const uint) 0:11 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:11 Construct uvec4 ( temp mediump 4-component vector of uint) 0:11 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:11 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:11 Constant: 0:11 0 (const uint) 0:11 Constant: 0:11 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) Linked tessellation evaluation stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic input primitive = isolines vertex spacing = equal_spacing triangle order = ccw 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 highp 4-component vector of uint) 0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint) 0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint) 0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:11 Constant: 0:11 0 (const uint) 0:11 'gl_PrimitiveID' ( in highp int PrimitiveID) 0:11 Construct uvec4 ( temp mediump 4-component vector of uint) 0:11 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:11 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:11 Constant: 0:11 0 (const uint) 0:11 Constant: 0:11 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroup.vert.out000066400000000000000000000056611506534232700236300ustar00rootroot00000000000000glsl.es320.subgroup.vert Shader version: 320 Requested GL_KHR_shader_subgroup_basic 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 highp 4-component vector of uint) 0:10 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint) 0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint) 0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:10 Constant: 0:10 0 (const uint) 0:10 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:10 Construct uvec4 ( temp mediump 4-component vector of uint) 0:10 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:10 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:10 Constant: 0:10 0 (const uint) 0:10 Constant: 0:10 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic 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 highp 4-component vector of uint) 0:10 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint) 0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint) 0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:10 Constant: 0:10 0 (const uint) 0:10 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:10 Construct uvec4 ( temp mediump 4-component vector of uint) 0:10 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:10 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:10 Constant: 0:10 0 (const uint) 0:10 Constant: 0:10 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result}) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupArithmetic.comp.out000066400000000000000000042065061506534232700256250ustar00rootroot00000000000000glsl.es320.subgroupArithmetic.comp Shader version: 320 Requested GL_KHR_shader_subgroup_arithmetic Requested GL_KHR_shader_subgroup_basic local_size = (8, 1, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupAdd ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupAdd ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupAdd ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupAdd ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupAdd ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupAdd ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupAdd ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupAdd ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupAdd ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupAdd ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupAdd ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupAdd ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:33 move second child to first child ( temp highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 3 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupMul ( global highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 move second child to first child ( temp highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 subgroupMul ( global highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:35 move second child to first child ( temp highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupMul ( global highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 subgroupMul ( global highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:38 move second child to first child ( temp highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupMul ( global highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 move second child to first child ( temp highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupMul ( global highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupMul ( global highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:41 move second child to first child ( temp highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupMul ( global highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 1 (const int) 0:43 move second child to first child ( temp highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupMul ( global highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:44 move second child to first child ( temp highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupMul ( global highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:45 move second child to first child ( temp highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupMul ( global highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:46 move second child to first child ( temp highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupMul ( global highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 2 (const int) 0:48 move second child to first child ( temp highp float) 0:48 direct index ( temp highp float) 0:48 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupMin ( global highp float) 0:48 direct index ( temp highp float) 0:48 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:49 move second child to first child ( temp highp 2-component vector of float) 0:49 vector swizzle ( temp highp 2-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupMin ( global highp 2-component vector of float) 0:49 vector swizzle ( temp highp 2-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:50 move second child to first child ( temp highp 3-component vector of float) 0:50 vector swizzle ( temp highp 3-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupMin ( global highp 3-component vector of float) 0:50 vector swizzle ( temp highp 3-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:51 move second child to first child ( temp highp 4-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 subgroupMin ( global highp 4-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 0 (const int) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 subgroupMin ( global highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 subgroupMin ( global highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 subgroupMin ( global highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupMin ( global highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:58 move second child to first child ( temp highp uint) 0:58 direct index ( temp highp uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupMin ( global highp uint) 0:58 direct index ( temp highp uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:59 move second child to first child ( temp highp 2-component vector of uint) 0:59 vector swizzle ( temp highp 2-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupMin ( global highp 2-component vector of uint) 0:59 vector swizzle ( temp highp 2-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:60 move second child to first child ( temp highp 3-component vector of uint) 0:60 vector swizzle ( temp highp 3-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 subgroupMin ( global highp 3-component vector of uint) 0:60 vector swizzle ( temp highp 3-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:61 move second child to first child ( temp highp 4-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupMin ( global highp 4-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 2 (const int) 0:63 move second child to first child ( temp highp float) 0:63 direct index ( temp highp float) 0:63 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 subgroupMax ( global highp float) 0:63 direct index ( temp highp float) 0:63 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:64 move second child to first child ( temp highp 2-component vector of float) 0:64 vector swizzle ( temp highp 2-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 subgroupMax ( global highp 2-component vector of float) 0:64 vector swizzle ( temp highp 2-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:65 move second child to first child ( temp highp 3-component vector of float) 0:65 vector swizzle ( temp highp 3-component vector of float) 0:65 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 subgroupMax ( global highp 3-component vector of float) 0:65 vector swizzle ( temp highp 3-component vector of float) 0:65 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:66 move second child to first child ( temp highp 4-component vector of float) 0:66 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 subgroupMax ( global highp 4-component vector of float) 0:66 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 3 (const int) 0:66 Constant: 0:66 0 (const int) 0:68 move second child to first child ( temp highp int) 0:68 direct index ( temp highp int) 0:68 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 subgroupMax ( global highp int) 0:68 direct index ( temp highp int) 0:68 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:69 move second child to first child ( temp highp 2-component vector of int) 0:69 vector swizzle ( temp highp 2-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 subgroupMax ( global highp 2-component vector of int) 0:69 vector swizzle ( temp highp 2-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:70 move second child to first child ( temp highp 3-component vector of int) 0:70 vector swizzle ( temp highp 3-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 subgroupMax ( global highp 3-component vector of int) 0:70 vector swizzle ( temp highp 3-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:71 move second child to first child ( temp highp 4-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupMax ( global highp 4-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 3 (const int) 0:71 Constant: 0:71 1 (const int) 0:73 move second child to first child ( temp highp uint) 0:73 direct index ( temp highp uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 3 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 subgroupMax ( global highp uint) 0:73 direct index ( temp highp uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:74 move second child to first child ( temp highp 2-component vector of uint) 0:74 vector swizzle ( temp highp 2-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 subgroupMax ( global highp 2-component vector of uint) 0:74 vector swizzle ( temp highp 2-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:75 move second child to first child ( temp highp 3-component vector of uint) 0:75 vector swizzle ( temp highp 3-component vector of uint) 0:75 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 3 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 subgroupMax ( global highp 3-component vector of uint) 0:75 vector swizzle ( temp highp 3-component vector of uint) 0:75 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:76 move second child to first child ( temp highp 4-component vector of uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupMax ( global highp 4-component vector of uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 2 (const int) 0:78 move second child to first child ( temp highp int) 0:78 direct index ( temp highp int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 subgroupAnd ( global highp int) 0:78 direct index ( temp highp int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0 (const int) 0:79 move second child to first child ( temp highp 2-component vector of int) 0:79 vector swizzle ( temp highp 2-component vector of int) 0:79 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupAnd ( global highp 2-component vector of int) 0:79 vector swizzle ( temp highp 2-component vector of int) 0:79 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:80 move second child to first child ( temp highp 3-component vector of int) 0:80 vector swizzle ( temp highp 3-component vector of int) 0:80 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 subgroupAnd ( global highp 3-component vector of int) 0:80 vector swizzle ( temp highp 3-component vector of int) 0:80 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:81 move second child to first child ( temp highp 4-component vector of int) 0:81 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupAnd ( global highp 4-component vector of int) 0:81 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 1 (const int) 0:83 move second child to first child ( temp highp uint) 0:83 direct index ( temp highp uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 subgroupAnd ( global highp uint) 0:83 direct index ( temp highp uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:84 move second child to first child ( temp highp 2-component vector of uint) 0:84 vector swizzle ( temp highp 2-component vector of uint) 0:84 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 subgroupAnd ( global highp 2-component vector of uint) 0:84 vector swizzle ( temp highp 2-component vector of uint) 0:84 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:85 move second child to first child ( temp highp 3-component vector of uint) 0:85 vector swizzle ( temp highp 3-component vector of uint) 0:85 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 subgroupAnd ( global highp 3-component vector of uint) 0:85 vector swizzle ( temp highp 3-component vector of uint) 0:85 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:86 move second child to first child ( temp highp 4-component vector of uint) 0:86 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupAnd ( global highp 4-component vector of uint) 0:86 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 2 (const int) 0:88 move second child to first child ( temp highp int) 0:88 direct index ( temp highp int) 0:88 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Convert bool to int ( temp highp int) 0:88 subgroupAnd ( global bool) 0:88 Compare Less Than ( temp bool) 0:88 direct index ( temp highp int) 0:88 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:89 move second child to first child ( temp highp 2-component vector of int) 0:89 vector swizzle ( temp highp 2-component vector of int) 0:89 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Convert bool to int ( temp highp 2-component vector of int) 0:89 subgroupAnd ( global 2-component vector of bool) 0:89 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:89 vector swizzle ( temp highp 2-component vector of int) 0:89 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 0 (const int) 0:90 move second child to first child ( temp highp 3-component vector of int) 0:90 vector swizzle ( temp highp 3-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Convert bool to int ( temp highp 3-component vector of int) 0:90 subgroupAnd ( global 3-component vector of bool) 0:90 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:90 vector swizzle ( temp highp 3-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 0 (const int) 0:90 0 (const int) 0:91 move second child to first child ( temp highp 4-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Convert bool to int ( temp highp 4-component vector of int) 0:91 subgroupAnd ( global 4-component vector of bool) 0:91 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:93 move second child to first child ( temp highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 3 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 subgroupOr ( global highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:94 move second child to first child ( temp highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 subgroupOr ( global highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:95 move second child to first child ( temp highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 3 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 subgroupOr ( global highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:96 move second child to first child ( temp highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupOr ( global highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:98 move second child to first child ( temp highp uint) 0:98 direct index ( temp highp uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 subgroupOr ( global highp uint) 0:98 direct index ( temp highp uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 0 (const int) 0:99 move second child to first child ( temp highp 2-component vector of uint) 0:99 vector swizzle ( temp highp 2-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 Sequence 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 subgroupOr ( global highp 2-component vector of uint) 0:99 vector swizzle ( temp highp 2-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 Sequence 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:100 move second child to first child ( temp highp 3-component vector of uint) 0:100 vector swizzle ( temp highp 3-component vector of uint) 0:100 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 subgroupOr ( global highp 3-component vector of uint) 0:100 vector swizzle ( temp highp 3-component vector of uint) 0:100 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:101 move second child to first child ( temp highp 4-component vector of uint) 0:101 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupOr ( global highp 4-component vector of uint) 0:101 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 3 (const int) 0:101 Constant: 0:101 2 (const int) 0:103 move second child to first child ( temp highp int) 0:103 direct index ( temp highp int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Convert bool to int ( temp highp int) 0:103 subgroupOr ( global bool) 0:103 Compare Less Than ( temp bool) 0:103 direct index ( temp highp int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 0 (const int) 0:104 move second child to first child ( temp highp 2-component vector of int) 0:104 vector swizzle ( temp highp 2-component vector of int) 0:104 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Sequence 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Convert bool to int ( temp highp 2-component vector of int) 0:104 subgroupOr ( global 2-component vector of bool) 0:104 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:104 vector swizzle ( temp highp 2-component vector of int) 0:104 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Sequence 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 0 (const int) 0:105 move second child to first child ( temp highp 3-component vector of int) 0:105 vector swizzle ( temp highp 3-component vector of int) 0:105 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Convert bool to int ( temp highp 3-component vector of int) 0:105 subgroupOr ( global 3-component vector of bool) 0:105 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:105 vector swizzle ( temp highp 3-component vector of int) 0:105 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 0 (const int) 0:105 0 (const int) 0:106 move second child to first child ( temp highp 4-component vector of int) 0:106 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Convert bool to int ( temp highp 4-component vector of int) 0:106 subgroupOr ( global 4-component vector of bool) 0:106 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:106 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 0 (const int) 0:106 0 (const int) 0:106 0 (const int) 0:108 move second child to first child ( temp highp int) 0:108 direct index ( temp highp int) 0:108 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 2 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 0 (const int) 0:108 subgroupXor ( global highp int) 0:108 direct index ( temp highp int) 0:108 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 0 (const int) 0:109 move second child to first child ( temp highp 2-component vector of int) 0:109 vector swizzle ( temp highp 2-component vector of int) 0:109 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 Constant: 0:109 2 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Sequence 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 subgroupXor ( global highp 2-component vector of int) 0:109 vector swizzle ( temp highp 2-component vector of int) 0:109 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Sequence 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:110 move second child to first child ( temp highp 3-component vector of int) 0:110 vector swizzle ( temp highp 3-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 2 (const int) 0:110 subgroupXor ( global highp 3-component vector of int) 0:110 vector swizzle ( temp highp 3-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 2 (const int) 0:111 move second child to first child ( temp highp 4-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 subgroupXor ( global highp 4-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 3 (const int) 0:111 Constant: 0:111 1 (const int) 0:113 move second child to first child ( temp highp uint) 0:113 direct index ( temp highp uint) 0:113 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 3 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 0 (const int) 0:113 subgroupXor ( global highp uint) 0:113 direct index ( temp highp uint) 0:113 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 0 (const int) 0:114 move second child to first child ( temp highp 2-component vector of uint) 0:114 vector swizzle ( temp highp 2-component vector of uint) 0:114 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 Constant: 0:114 3 (const int) 0:114 Constant: 0:114 2 (const int) 0:114 Sequence 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 subgroupXor ( global highp 2-component vector of uint) 0:114 vector swizzle ( temp highp 2-component vector of uint) 0:114 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 2 (const int) 0:114 Sequence 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:115 move second child to first child ( temp highp 3-component vector of uint) 0:115 vector swizzle ( temp highp 3-component vector of uint) 0:115 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 3 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 subgroupXor ( global highp 3-component vector of uint) 0:115 vector swizzle ( temp highp 3-component vector of uint) 0:115 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 2 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 2 (const int) 0:116 move second child to first child ( temp highp 4-component vector of uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 3 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 subgroupXor ( global highp 4-component vector of uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 3 (const int) 0:116 Constant: 0:116 2 (const int) 0:118 move second child to first child ( temp highp int) 0:118 direct index ( temp highp int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Convert bool to int ( temp highp int) 0:118 subgroupXor ( global bool) 0:118 Compare Less Than ( temp bool) 0:118 direct index ( temp highp int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 0 (const int) 0:119 move second child to first child ( temp highp 2-component vector of int) 0:119 vector swizzle ( temp highp 2-component vector of int) 0:119 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Sequence 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Convert bool to int ( temp highp 2-component vector of int) 0:119 subgroupXor ( global 2-component vector of bool) 0:119 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:119 vector swizzle ( temp highp 2-component vector of int) 0:119 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 Constant: 0:119 1 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Sequence 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 0 (const int) 0:120 move second child to first child ( temp highp 3-component vector of int) 0:120 vector swizzle ( temp highp 3-component vector of int) 0:120 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Convert bool to int ( temp highp 3-component vector of int) 0:120 subgroupXor ( global 3-component vector of bool) 0:120 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:120 vector swizzle ( temp highp 3-component vector of int) 0:120 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 0 (const int) 0:120 0 (const int) 0:121 move second child to first child ( temp highp 4-component vector of int) 0:121 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Convert bool to int ( temp highp 4-component vector of int) 0:121 subgroupXor ( global 4-component vector of bool) 0:121 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:121 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 0 (const int) 0:121 0 (const int) 0:121 0 (const int) 0:121 0 (const int) 0:123 move second child to first child ( temp highp float) 0:123 direct index ( temp highp float) 0:123 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 Constant: 0:123 1 (const int) 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 0 (const int) 0:123 subgroupInclusiveAdd ( global highp float) 0:123 direct index ( temp highp float) 0:123 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 0 (const int) 0:124 move second child to first child ( temp highp 2-component vector of float) 0:124 vector swizzle ( temp highp 2-component vector of float) 0:124 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Sequence 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const int) 0:124 subgroupInclusiveAdd ( global highp 2-component vector of float) 0:124 vector swizzle ( temp highp 2-component vector of float) 0:124 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Sequence 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const int) 0:125 move second child to first child ( temp highp 3-component vector of float) 0:125 vector swizzle ( temp highp 3-component vector of float) 0:125 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 2 (const int) 0:125 subgroupInclusiveAdd ( global highp 3-component vector of float) 0:125 vector swizzle ( temp highp 3-component vector of float) 0:125 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 2 (const int) 0:126 move second child to first child ( temp highp 4-component vector of float) 0:126 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 subgroupInclusiveAdd ( global highp 4-component vector of float) 0:126 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 Constant: 0:126 3 (const int) 0:126 Constant: 0:126 0 (const int) 0:128 move second child to first child ( temp highp int) 0:128 direct index ( temp highp int) 0:128 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 Constant: 0:128 2 (const int) 0:128 Constant: 0:128 1 (const int) 0:128 Constant: 0:128 0 (const int) 0:128 subgroupInclusiveAdd ( global highp int) 0:128 direct index ( temp highp int) 0:128 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 Constant: 0:128 0 (const int) 0:128 Constant: 0:128 1 (const int) 0:128 Constant: 0:128 0 (const int) 0:129 move second child to first child ( temp highp 2-component vector of int) 0:129 vector swizzle ( temp highp 2-component vector of int) 0:129 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:129 Constant: 0:129 2 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 Sequence 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 subgroupInclusiveAdd ( global highp 2-component vector of int) 0:129 vector swizzle ( temp highp 2-component vector of int) 0:129 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 Sequence 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const int) 0:130 move second child to first child ( temp highp 3-component vector of int) 0:130 vector swizzle ( temp highp 3-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 Constant: 0:130 2 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 2 (const int) 0:130 subgroupInclusiveAdd ( global highp 3-component vector of int) 0:130 vector swizzle ( temp highp 3-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 Constant: 0:130 2 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 2 (const int) 0:131 move second child to first child ( temp highp 4-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 subgroupInclusiveAdd ( global highp 4-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 Constant: 0:131 3 (const int) 0:131 Constant: 0:131 1 (const int) 0:133 move second child to first child ( temp highp uint) 0:133 direct index ( temp highp uint) 0:133 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 Constant: 0:133 3 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 Constant: 0:133 0 (const int) 0:133 subgroupInclusiveAdd ( global highp uint) 0:133 direct index ( temp highp uint) 0:133 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 Constant: 0:133 0 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 Constant: 0:133 0 (const int) 0:134 move second child to first child ( temp highp 2-component vector of uint) 0:134 vector swizzle ( temp highp 2-component vector of uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:134 Constant: 0:134 3 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 Sequence 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 1 (const int) 0:134 subgroupInclusiveAdd ( global highp 2-component vector of uint) 0:134 vector swizzle ( temp highp 2-component vector of uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:134 Constant: 0:134 1 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 Sequence 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 1 (const int) 0:135 move second child to first child ( temp highp 3-component vector of uint) 0:135 vector swizzle ( temp highp 3-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 Constant: 0:135 3 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 subgroupInclusiveAdd ( global highp 3-component vector of uint) 0:135 vector swizzle ( temp highp 3-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 Constant: 0:135 2 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 2 (const int) 0:136 move second child to first child ( temp highp 4-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 Constant: 0:136 3 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 subgroupInclusiveAdd ( global highp 4-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 Constant: 0:136 3 (const int) 0:136 Constant: 0:136 2 (const int) 0:138 move second child to first child ( temp highp float) 0:138 direct index ( temp highp float) 0:138 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 0 (const int) 0:138 subgroupInclusiveMul ( global highp float) 0:138 direct index ( temp highp float) 0:138 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 0 (const int) 0:139 move second child to first child ( temp highp 2-component vector of float) 0:139 vector swizzle ( temp highp 2-component vector of float) 0:139 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Sequence 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 subgroupInclusiveMul ( global highp 2-component vector of float) 0:139 vector swizzle ( temp highp 2-component vector of float) 0:139 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Sequence 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:140 move second child to first child ( temp highp 3-component vector of float) 0:140 vector swizzle ( temp highp 3-component vector of float) 0:140 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 2 (const int) 0:140 subgroupInclusiveMul ( global highp 3-component vector of float) 0:140 vector swizzle ( temp highp 3-component vector of float) 0:140 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 Constant: 0:140 2 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 2 (const int) 0:141 move second child to first child ( temp highp 4-component vector of float) 0:141 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 subgroupInclusiveMul ( global highp 4-component vector of float) 0:141 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 Constant: 0:141 3 (const int) 0:141 Constant: 0:141 0 (const int) 0:143 move second child to first child ( temp highp int) 0:143 direct index ( temp highp int) 0:143 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 0 (const int) 0:143 subgroupInclusiveMul ( global highp int) 0:143 direct index ( temp highp int) 0:143 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 Constant: 0:143 0 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 0 (const int) 0:144 move second child to first child ( temp highp 2-component vector of int) 0:144 vector swizzle ( temp highp 2-component vector of int) 0:144 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:144 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:144 Constant: 0:144 1 (const int) 0:144 Constant: 0:144 1 (const int) 0:144 Sequence 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 1 (const int) 0:144 subgroupInclusiveMul ( global highp 2-component vector of int) 0:144 vector swizzle ( temp highp 2-component vector of int) 0:144 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:144 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:144 Constant: 0:144 1 (const int) 0:144 Constant: 0:144 1 (const int) 0:144 Sequence 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 1 (const int) 0:145 move second child to first child ( temp highp 3-component vector of int) 0:145 vector swizzle ( temp highp 3-component vector of int) 0:145 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 Sequence 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 2 (const int) 0:145 subgroupInclusiveMul ( global highp 3-component vector of int) 0:145 vector swizzle ( temp highp 3-component vector of int) 0:145 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 Constant: 0:145 2 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 Sequence 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 2 (const int) 0:146 move second child to first child ( temp highp 4-component vector of int) 0:146 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 subgroupInclusiveMul ( global highp 4-component vector of int) 0:146 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 Constant: 0:146 3 (const int) 0:146 Constant: 0:146 1 (const int) 0:148 move second child to first child ( temp highp uint) 0:148 direct index ( temp highp uint) 0:148 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 Constant: 0:148 2 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 Constant: 0:148 0 (const int) 0:148 subgroupInclusiveMul ( global highp uint) 0:148 direct index ( temp highp uint) 0:148 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 Constant: 0:148 0 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 Constant: 0:148 0 (const int) 0:149 move second child to first child ( temp highp 2-component vector of uint) 0:149 vector swizzle ( temp highp 2-component vector of uint) 0:149 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:149 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:149 Constant: 0:149 2 (const int) 0:149 Constant: 0:149 2 (const int) 0:149 Sequence 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 1 (const int) 0:149 subgroupInclusiveMul ( global highp 2-component vector of uint) 0:149 vector swizzle ( temp highp 2-component vector of uint) 0:149 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:149 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:149 Constant: 0:149 1 (const int) 0:149 Constant: 0:149 2 (const int) 0:149 Sequence 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 1 (const int) 0:150 move second child to first child ( temp highp 3-component vector of uint) 0:150 vector swizzle ( temp highp 3-component vector of uint) 0:150 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 Constant: 0:150 2 (const int) 0:150 Constant: 0:150 2 (const int) 0:150 Sequence 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 2 (const int) 0:150 subgroupInclusiveMul ( global highp 3-component vector of uint) 0:150 vector swizzle ( temp highp 3-component vector of uint) 0:150 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 Constant: 0:150 2 (const int) 0:150 Constant: 0:150 2 (const int) 0:150 Sequence 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 2 (const int) 0:151 move second child to first child ( temp highp 4-component vector of uint) 0:151 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 Constant: 0:151 2 (const int) 0:151 Constant: 0:151 2 (const int) 0:151 subgroupInclusiveMul ( global highp 4-component vector of uint) 0:151 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 Constant: 0:151 3 (const int) 0:151 Constant: 0:151 2 (const int) 0:153 move second child to first child ( temp highp float) 0:153 direct index ( temp highp float) 0:153 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 Constant: 0:153 3 (const int) 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 0 (const int) 0:153 subgroupInclusiveMin ( global highp float) 0:153 direct index ( temp highp float) 0:153 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 0 (const int) 0:154 move second child to first child ( temp highp 2-component vector of float) 0:154 vector swizzle ( temp highp 2-component vector of float) 0:154 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:154 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:154 Constant: 0:154 3 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 Sequence 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 1 (const int) 0:154 subgroupInclusiveMin ( global highp 2-component vector of float) 0:154 vector swizzle ( temp highp 2-component vector of float) 0:154 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:154 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:154 Constant: 0:154 1 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 Sequence 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 1 (const int) 0:155 move second child to first child ( temp highp 3-component vector of float) 0:155 vector swizzle ( temp highp 3-component vector of float) 0:155 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 Constant: 0:155 3 (const int) 0:155 Constant: 0:155 0 (const int) 0:155 Sequence 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 1 (const int) 0:155 Constant: 0:155 2 (const int) 0:155 subgroupInclusiveMin ( global highp 3-component vector of float) 0:155 vector swizzle ( temp highp 3-component vector of float) 0:155 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 Constant: 0:155 2 (const int) 0:155 Constant: 0:155 0 (const int) 0:155 Sequence 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 1 (const int) 0:155 Constant: 0:155 2 (const int) 0:156 move second child to first child ( temp highp 4-component vector of float) 0:156 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 Constant: 0:156 3 (const int) 0:156 Constant: 0:156 0 (const int) 0:156 subgroupInclusiveMin ( global highp 4-component vector of float) 0:156 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 Constant: 0:156 3 (const int) 0:156 Constant: 0:156 0 (const int) 0:158 move second child to first child ( temp highp int) 0:158 direct index ( temp highp int) 0:158 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Constant: 0:158 0 (const int) 0:158 subgroupInclusiveMin ( global highp int) 0:158 direct index ( temp highp int) 0:158 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Constant: 0:158 0 (const int) 0:159 move second child to first child ( temp highp 2-component vector of int) 0:159 vector swizzle ( temp highp 2-component vector of int) 0:159 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:159 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 1 (const int) 0:159 Sequence 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 1 (const int) 0:159 subgroupInclusiveMin ( global highp 2-component vector of int) 0:159 vector swizzle ( temp highp 2-component vector of int) 0:159 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:159 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:159 Constant: 0:159 1 (const int) 0:159 Constant: 0:159 1 (const int) 0:159 Sequence 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 1 (const int) 0:160 move second child to first child ( temp highp 3-component vector of int) 0:160 vector swizzle ( temp highp 3-component vector of int) 0:160 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 Sequence 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 Constant: 0:160 2 (const int) 0:160 subgroupInclusiveMin ( global highp 3-component vector of int) 0:160 vector swizzle ( temp highp 3-component vector of int) 0:160 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 Constant: 0:160 2 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 Sequence 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 Constant: 0:160 2 (const int) 0:161 move second child to first child ( temp highp 4-component vector of int) 0:161 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 subgroupInclusiveMin ( global highp 4-component vector of int) 0:161 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 Constant: 0:161 3 (const int) 0:161 Constant: 0:161 1 (const int) 0:163 move second child to first child ( temp highp uint) 0:163 direct index ( temp highp uint) 0:163 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 Constant: 0:163 1 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 Constant: 0:163 0 (const int) 0:163 subgroupInclusiveMin ( global highp uint) 0:163 direct index ( temp highp uint) 0:163 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 Constant: 0:163 0 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 Constant: 0:163 0 (const int) 0:164 move second child to first child ( temp highp 2-component vector of uint) 0:164 vector swizzle ( temp highp 2-component vector of uint) 0:164 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:164 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:164 Constant: 0:164 1 (const int) 0:164 Constant: 0:164 2 (const int) 0:164 Sequence 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 1 (const int) 0:164 subgroupInclusiveMin ( global highp 2-component vector of uint) 0:164 vector swizzle ( temp highp 2-component vector of uint) 0:164 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:164 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:164 Constant: 0:164 1 (const int) 0:164 Constant: 0:164 2 (const int) 0:164 Sequence 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 1 (const int) 0:165 move second child to first child ( temp highp 3-component vector of uint) 0:165 vector swizzle ( temp highp 3-component vector of uint) 0:165 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 2 (const int) 0:165 Sequence 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 2 (const int) 0:165 subgroupInclusiveMin ( global highp 3-component vector of uint) 0:165 vector swizzle ( temp highp 3-component vector of uint) 0:165 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 Constant: 0:165 2 (const int) 0:165 Constant: 0:165 2 (const int) 0:165 Sequence 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 2 (const int) 0:166 move second child to first child ( temp highp 4-component vector of uint) 0:166 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 2 (const int) 0:166 subgroupInclusiveMin ( global highp 4-component vector of uint) 0:166 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 Constant: 0:166 3 (const int) 0:166 Constant: 0:166 2 (const int) 0:168 move second child to first child ( temp highp float) 0:168 direct index ( temp highp float) 0:168 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 Constant: 0:168 2 (const int) 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 0 (const int) 0:168 subgroupInclusiveMax ( global highp float) 0:168 direct index ( temp highp float) 0:168 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 0 (const int) 0:169 move second child to first child ( temp highp 2-component vector of float) 0:169 vector swizzle ( temp highp 2-component vector of float) 0:169 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:169 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:169 Constant: 0:169 2 (const int) 0:169 Constant: 0:169 0 (const int) 0:169 Sequence 0:169 Constant: 0:169 0 (const int) 0:169 Constant: 0:169 1 (const int) 0:169 subgroupInclusiveMax ( global highp 2-component vector of float) 0:169 vector swizzle ( temp highp 2-component vector of float) 0:169 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:169 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 0 (const int) 0:169 Sequence 0:169 Constant: 0:169 0 (const int) 0:169 Constant: 0:169 1 (const int) 0:170 move second child to first child ( temp highp 3-component vector of float) 0:170 vector swizzle ( temp highp 3-component vector of float) 0:170 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 Constant: 0:170 2 (const int) 0:170 Constant: 0:170 0 (const int) 0:170 Sequence 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 1 (const int) 0:170 Constant: 0:170 2 (const int) 0:170 subgroupInclusiveMax ( global highp 3-component vector of float) 0:170 vector swizzle ( temp highp 3-component vector of float) 0:170 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 Constant: 0:170 2 (const int) 0:170 Constant: 0:170 0 (const int) 0:170 Sequence 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 1 (const int) 0:170 Constant: 0:170 2 (const int) 0:171 move second child to first child ( temp highp 4-component vector of float) 0:171 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 Constant: 0:171 2 (const int) 0:171 Constant: 0:171 0 (const int) 0:171 subgroupInclusiveMax ( global highp 4-component vector of float) 0:171 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 Constant: 0:171 3 (const int) 0:171 Constant: 0:171 0 (const int) 0:173 move second child to first child ( temp highp int) 0:173 direct index ( temp highp int) 0:173 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 Constant: 0:173 3 (const int) 0:173 Constant: 0:173 1 (const int) 0:173 Constant: 0:173 0 (const int) 0:173 subgroupInclusiveMax ( global highp int) 0:173 direct index ( temp highp int) 0:173 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 Constant: 0:173 0 (const int) 0:173 Constant: 0:173 1 (const int) 0:173 Constant: 0:173 0 (const int) 0:174 move second child to first child ( temp highp 2-component vector of int) 0:174 vector swizzle ( temp highp 2-component vector of int) 0:174 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:174 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:174 Constant: 0:174 3 (const int) 0:174 Constant: 0:174 1 (const int) 0:174 Sequence 0:174 Constant: 0:174 0 (const int) 0:174 Constant: 0:174 1 (const int) 0:174 subgroupInclusiveMax ( global highp 2-component vector of int) 0:174 vector swizzle ( temp highp 2-component vector of int) 0:174 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:174 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:174 Constant: 0:174 1 (const int) 0:174 Constant: 0:174 1 (const int) 0:174 Sequence 0:174 Constant: 0:174 0 (const int) 0:174 Constant: 0:174 1 (const int) 0:175 move second child to first child ( temp highp 3-component vector of int) 0:175 vector swizzle ( temp highp 3-component vector of int) 0:175 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 Constant: 0:175 3 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 Sequence 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 Constant: 0:175 2 (const int) 0:175 subgroupInclusiveMax ( global highp 3-component vector of int) 0:175 vector swizzle ( temp highp 3-component vector of int) 0:175 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 Constant: 0:175 2 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 Sequence 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 Constant: 0:175 2 (const int) 0:176 move second child to first child ( temp highp 4-component vector of int) 0:176 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 Constant: 0:176 3 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 subgroupInclusiveMax ( global highp 4-component vector of int) 0:176 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 Constant: 0:176 3 (const int) 0:176 Constant: 0:176 1 (const int) 0:178 move second child to first child ( temp highp uint) 0:178 direct index ( temp highp uint) 0:178 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 2 (const int) 0:178 Constant: 0:178 0 (const int) 0:178 subgroupInclusiveMax ( global highp uint) 0:178 direct index ( temp highp uint) 0:178 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 2 (const int) 0:178 Constant: 0:178 0 (const int) 0:179 move second child to first child ( temp highp 2-component vector of uint) 0:179 vector swizzle ( temp highp 2-component vector of uint) 0:179 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:179 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:179 Constant: 0:179 0 (const int) 0:179 Constant: 0:179 2 (const int) 0:179 Sequence 0:179 Constant: 0:179 0 (const int) 0:179 Constant: 0:179 1 (const int) 0:179 subgroupInclusiveMax ( global highp 2-component vector of uint) 0:179 vector swizzle ( temp highp 2-component vector of uint) 0:179 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:179 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:179 Constant: 0:179 1 (const int) 0:179 Constant: 0:179 2 (const int) 0:179 Sequence 0:179 Constant: 0:179 0 (const int) 0:179 Constant: 0:179 1 (const int) 0:180 move second child to first child ( temp highp 3-component vector of uint) 0:180 vector swizzle ( temp highp 3-component vector of uint) 0:180 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 2 (const int) 0:180 Sequence 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 2 (const int) 0:180 subgroupInclusiveMax ( global highp 3-component vector of uint) 0:180 vector swizzle ( temp highp 3-component vector of uint) 0:180 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 Constant: 0:180 2 (const int) 0:180 Constant: 0:180 2 (const int) 0:180 Sequence 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 2 (const int) 0:181 move second child to first child ( temp highp 4-component vector of uint) 0:181 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 2 (const int) 0:181 subgroupInclusiveMax ( global highp 4-component vector of uint) 0:181 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 Constant: 0:181 3 (const int) 0:181 Constant: 0:181 2 (const int) 0:183 move second child to first child ( temp highp int) 0:183 direct index ( temp highp int) 0:183 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 0 (const int) 0:183 subgroupInclusiveAnd ( global highp int) 0:183 direct index ( temp highp int) 0:183 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 Constant: 0:183 0 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 0 (const int) 0:184 move second child to first child ( temp highp 2-component vector of int) 0:184 vector swizzle ( temp highp 2-component vector of int) 0:184 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:184 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:184 Constant: 0:184 1 (const int) 0:184 Constant: 0:184 1 (const int) 0:184 Sequence 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 1 (const int) 0:184 subgroupInclusiveAnd ( global highp 2-component vector of int) 0:184 vector swizzle ( temp highp 2-component vector of int) 0:184 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:184 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:184 Constant: 0:184 1 (const int) 0:184 Constant: 0:184 1 (const int) 0:184 Sequence 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 1 (const int) 0:185 move second child to first child ( temp highp 3-component vector of int) 0:185 vector swizzle ( temp highp 3-component vector of int) 0:185 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 Constant: 0:185 1 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 Sequence 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 Constant: 0:185 2 (const int) 0:185 subgroupInclusiveAnd ( global highp 3-component vector of int) 0:185 vector swizzle ( temp highp 3-component vector of int) 0:185 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 Constant: 0:185 2 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 Sequence 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 Constant: 0:185 2 (const int) 0:186 move second child to first child ( temp highp 4-component vector of int) 0:186 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 subgroupInclusiveAnd ( global highp 4-component vector of int) 0:186 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 Constant: 0:186 3 (const int) 0:186 Constant: 0:186 1 (const int) 0:188 move second child to first child ( temp highp uint) 0:188 direct index ( temp highp uint) 0:188 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 Constant: 0:188 2 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 Constant: 0:188 0 (const int) 0:188 subgroupInclusiveAnd ( global highp uint) 0:188 direct index ( temp highp uint) 0:188 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 Constant: 0:188 0 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 Constant: 0:188 0 (const int) 0:189 move second child to first child ( temp highp 2-component vector of uint) 0:189 vector swizzle ( temp highp 2-component vector of uint) 0:189 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:189 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:189 Constant: 0:189 2 (const int) 0:189 Constant: 0:189 2 (const int) 0:189 Sequence 0:189 Constant: 0:189 0 (const int) 0:189 Constant: 0:189 1 (const int) 0:189 subgroupInclusiveAnd ( global highp 2-component vector of uint) 0:189 vector swizzle ( temp highp 2-component vector of uint) 0:189 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:189 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:189 Constant: 0:189 1 (const int) 0:189 Constant: 0:189 2 (const int) 0:189 Sequence 0:189 Constant: 0:189 0 (const int) 0:189 Constant: 0:189 1 (const int) 0:190 move second child to first child ( temp highp 3-component vector of uint) 0:190 vector swizzle ( temp highp 3-component vector of uint) 0:190 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 Constant: 0:190 2 (const int) 0:190 Constant: 0:190 2 (const int) 0:190 Sequence 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 1 (const int) 0:190 Constant: 0:190 2 (const int) 0:190 subgroupInclusiveAnd ( global highp 3-component vector of uint) 0:190 vector swizzle ( temp highp 3-component vector of uint) 0:190 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 Constant: 0:190 2 (const int) 0:190 Constant: 0:190 2 (const int) 0:190 Sequence 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 1 (const int) 0:190 Constant: 0:190 2 (const int) 0:191 move second child to first child ( temp highp 4-component vector of uint) 0:191 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 Constant: 0:191 2 (const int) 0:191 Constant: 0:191 2 (const int) 0:191 subgroupInclusiveAnd ( global highp 4-component vector of uint) 0:191 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 Constant: 0:191 3 (const int) 0:191 Constant: 0:191 2 (const int) 0:193 move second child to first child ( temp highp int) 0:193 direct index ( temp highp int) 0:193 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 Constant: 0:193 3 (const int) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 Convert bool to int ( temp highp int) 0:193 subgroupInclusiveAnd ( global bool) 0:193 Compare Less Than ( temp bool) 0:193 direct index ( temp highp int) 0:193 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 Constant: 0:193 0 (const int) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 Constant: 0:193 0 (const int) 0:194 move second child to first child ( temp highp 2-component vector of int) 0:194 vector swizzle ( temp highp 2-component vector of int) 0:194 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:194 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:194 Constant: 0:194 3 (const int) 0:194 Constant: 0:194 1 (const int) 0:194 Sequence 0:194 Constant: 0:194 0 (const int) 0:194 Constant: 0:194 1 (const int) 0:194 Convert bool to int ( temp highp 2-component vector of int) 0:194 subgroupInclusiveAnd ( global 2-component vector of bool) 0:194 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:194 vector swizzle ( temp highp 2-component vector of int) 0:194 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:194 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:194 Constant: 0:194 1 (const int) 0:194 Constant: 0:194 1 (const int) 0:194 Sequence 0:194 Constant: 0:194 0 (const int) 0:194 Constant: 0:194 1 (const int) 0:194 Constant: 0:194 0 (const int) 0:194 0 (const int) 0:195 move second child to first child ( temp highp 3-component vector of int) 0:195 vector swizzle ( temp highp 3-component vector of int) 0:195 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 Constant: 0:195 3 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Sequence 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 2 (const int) 0:195 Convert bool to int ( temp highp 3-component vector of int) 0:195 subgroupInclusiveAnd ( global 3-component vector of bool) 0:195 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:195 vector swizzle ( temp highp 3-component vector of int) 0:195 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Sequence 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 2 (const int) 0:195 Constant: 0:195 0 (const int) 0:195 0 (const int) 0:195 0 (const int) 0:196 move second child to first child ( temp highp 4-component vector of int) 0:196 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 Constant: 0:196 3 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Convert bool to int ( temp highp 4-component vector of int) 0:196 subgroupInclusiveAnd ( global 4-component vector of bool) 0:196 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:196 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 0 (const int) 0:196 0 (const int) 0:196 0 (const int) 0:196 0 (const int) 0:198 move second child to first child ( temp highp int) 0:198 direct index ( temp highp int) 0:198 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 Constant: 0:198 0 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 0 (const int) 0:198 subgroupInclusiveOr ( global highp int) 0:198 direct index ( temp highp int) 0:198 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 Constant: 0:198 0 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 0 (const int) 0:199 move second child to first child ( temp highp 2-component vector of int) 0:199 vector swizzle ( temp highp 2-component vector of int) 0:199 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:199 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:199 Constant: 0:199 0 (const int) 0:199 Constant: 0:199 1 (const int) 0:199 Sequence 0:199 Constant: 0:199 0 (const int) 0:199 Constant: 0:199 1 (const int) 0:199 subgroupInclusiveOr ( global highp 2-component vector of int) 0:199 vector swizzle ( temp highp 2-component vector of int) 0:199 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:199 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:199 Constant: 0:199 1 (const int) 0:199 Constant: 0:199 1 (const int) 0:199 Sequence 0:199 Constant: 0:199 0 (const int) 0:199 Constant: 0:199 1 (const int) 0:200 move second child to first child ( temp highp 3-component vector of int) 0:200 vector swizzle ( temp highp 3-component vector of int) 0:200 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 Sequence 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 Constant: 0:200 2 (const int) 0:200 subgroupInclusiveOr ( global highp 3-component vector of int) 0:200 vector swizzle ( temp highp 3-component vector of int) 0:200 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 Constant: 0:200 2 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 Sequence 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 Constant: 0:200 2 (const int) 0:201 move second child to first child ( temp highp 4-component vector of int) 0:201 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 subgroupInclusiveOr ( global highp 4-component vector of int) 0:201 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 Constant: 0:201 3 (const int) 0:201 Constant: 0:201 1 (const int) 0:203 move second child to first child ( temp highp uint) 0:203 direct index ( temp highp uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 Constant: 0:203 0 (const int) 0:203 subgroupInclusiveOr ( global highp uint) 0:203 direct index ( temp highp uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 Constant: 0:203 0 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 Constant: 0:203 0 (const int) 0:204 move second child to first child ( temp highp 2-component vector of uint) 0:204 vector swizzle ( temp highp 2-component vector of uint) 0:204 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:204 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:204 Constant: 0:204 1 (const int) 0:204 Constant: 0:204 2 (const int) 0:204 Sequence 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 1 (const int) 0:204 subgroupInclusiveOr ( global highp 2-component vector of uint) 0:204 vector swizzle ( temp highp 2-component vector of uint) 0:204 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:204 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:204 Constant: 0:204 1 (const int) 0:204 Constant: 0:204 2 (const int) 0:204 Sequence 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 1 (const int) 0:205 move second child to first child ( temp highp 3-component vector of uint) 0:205 vector swizzle ( temp highp 3-component vector of uint) 0:205 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 2 (const int) 0:205 Sequence 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 2 (const int) 0:205 subgroupInclusiveOr ( global highp 3-component vector of uint) 0:205 vector swizzle ( temp highp 3-component vector of uint) 0:205 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 Constant: 0:205 2 (const int) 0:205 Constant: 0:205 2 (const int) 0:205 Sequence 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 2 (const int) 0:206 move second child to first child ( temp highp 4-component vector of uint) 0:206 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 2 (const int) 0:206 subgroupInclusiveOr ( global highp 4-component vector of uint) 0:206 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 Constant: 0:206 3 (const int) 0:206 Constant: 0:206 2 (const int) 0:208 move second child to first child ( temp highp int) 0:208 direct index ( temp highp int) 0:208 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 Constant: 0:208 2 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 0 (const int) 0:208 Convert bool to int ( temp highp int) 0:208 subgroupInclusiveOr ( global bool) 0:208 Compare Less Than ( temp bool) 0:208 direct index ( temp highp int) 0:208 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 0 (const int) 0:209 move second child to first child ( temp highp 2-component vector of int) 0:209 vector swizzle ( temp highp 2-component vector of int) 0:209 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:209 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:209 Constant: 0:209 2 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Sequence 0:209 Constant: 0:209 0 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Convert bool to int ( temp highp 2-component vector of int) 0:209 subgroupInclusiveOr ( global 2-component vector of bool) 0:209 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:209 vector swizzle ( temp highp 2-component vector of int) 0:209 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:209 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Sequence 0:209 Constant: 0:209 0 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 0 (const int) 0:209 0 (const int) 0:210 move second child to first child ( temp highp 3-component vector of int) 0:210 vector swizzle ( temp highp 3-component vector of int) 0:210 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Sequence 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Constant: 0:210 2 (const int) 0:210 Convert bool to int ( temp highp 3-component vector of int) 0:210 subgroupInclusiveOr ( global 3-component vector of bool) 0:210 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:210 vector swizzle ( temp highp 3-component vector of int) 0:210 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 Constant: 0:210 1 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Sequence 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 0 (const int) 0:210 0 (const int) 0:210 0 (const int) 0:211 move second child to first child ( temp highp 4-component vector of int) 0:211 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 Constant: 0:211 2 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Convert bool to int ( temp highp 4-component vector of int) 0:211 subgroupInclusiveOr ( global 4-component vector of bool) 0:211 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:211 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 0 (const int) 0:211 0 (const int) 0:211 0 (const int) 0:211 0 (const int) 0:213 move second child to first child ( temp highp int) 0:213 direct index ( temp highp int) 0:213 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 Constant: 0:213 3 (const int) 0:213 Constant: 0:213 1 (const int) 0:213 Constant: 0:213 0 (const int) 0:213 subgroupInclusiveXor ( global highp int) 0:213 direct index ( temp highp int) 0:213 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 Constant: 0:213 0 (const int) 0:213 Constant: 0:213 1 (const int) 0:213 Constant: 0:213 0 (const int) 0:214 move second child to first child ( temp highp 2-component vector of int) 0:214 vector swizzle ( temp highp 2-component vector of int) 0:214 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:214 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:214 Constant: 0:214 3 (const int) 0:214 Constant: 0:214 1 (const int) 0:214 Sequence 0:214 Constant: 0:214 0 (const int) 0:214 Constant: 0:214 1 (const int) 0:214 subgroupInclusiveXor ( global highp 2-component vector of int) 0:214 vector swizzle ( temp highp 2-component vector of int) 0:214 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:214 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:214 Constant: 0:214 1 (const int) 0:214 Constant: 0:214 1 (const int) 0:214 Sequence 0:214 Constant: 0:214 0 (const int) 0:214 Constant: 0:214 1 (const int) 0:215 move second child to first child ( temp highp 3-component vector of int) 0:215 vector swizzle ( temp highp 3-component vector of int) 0:215 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 Constant: 0:215 3 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Sequence 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 2 (const int) 0:215 subgroupInclusiveXor ( global highp 3-component vector of int) 0:215 vector swizzle ( temp highp 3-component vector of int) 0:215 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 Constant: 0:215 2 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Sequence 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 2 (const int) 0:216 move second child to first child ( temp highp 4-component vector of int) 0:216 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 Constant: 0:216 3 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 subgroupInclusiveXor ( global highp 4-component vector of int) 0:216 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 Constant: 0:216 3 (const int) 0:216 Constant: 0:216 1 (const int) 0:218 move second child to first child ( temp highp uint) 0:218 direct index ( temp highp uint) 0:218 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 Constant: 0:218 0 (const int) 0:218 Constant: 0:218 2 (const int) 0:218 Constant: 0:218 0 (const int) 0:218 subgroupInclusiveXor ( global highp uint) 0:218 direct index ( temp highp uint) 0:218 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 Constant: 0:218 0 (const int) 0:218 Constant: 0:218 2 (const int) 0:218 Constant: 0:218 0 (const int) 0:219 move second child to first child ( temp highp 2-component vector of uint) 0:219 vector swizzle ( temp highp 2-component vector of uint) 0:219 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:219 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:219 Constant: 0:219 0 (const int) 0:219 Constant: 0:219 2 (const int) 0:219 Sequence 0:219 Constant: 0:219 0 (const int) 0:219 Constant: 0:219 1 (const int) 0:219 subgroupInclusiveXor ( global highp 2-component vector of uint) 0:219 vector swizzle ( temp highp 2-component vector of uint) 0:219 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:219 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:219 Constant: 0:219 1 (const int) 0:219 Constant: 0:219 2 (const int) 0:219 Sequence 0:219 Constant: 0:219 0 (const int) 0:219 Constant: 0:219 1 (const int) 0:220 move second child to first child ( temp highp 3-component vector of uint) 0:220 vector swizzle ( temp highp 3-component vector of uint) 0:220 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 2 (const int) 0:220 Sequence 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 2 (const int) 0:220 subgroupInclusiveXor ( global highp 3-component vector of uint) 0:220 vector swizzle ( temp highp 3-component vector of uint) 0:220 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 Constant: 0:220 2 (const int) 0:220 Constant: 0:220 2 (const int) 0:220 Sequence 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 2 (const int) 0:221 move second child to first child ( temp highp 4-component vector of uint) 0:221 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 2 (const int) 0:221 subgroupInclusiveXor ( global highp 4-component vector of uint) 0:221 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 Constant: 0:221 3 (const int) 0:221 Constant: 0:221 2 (const int) 0:223 move second child to first child ( temp highp int) 0:223 direct index ( temp highp int) 0:223 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 0 (const int) 0:223 Convert bool to int ( temp highp int) 0:223 subgroupInclusiveXor ( global bool) 0:223 Compare Less Than ( temp bool) 0:223 direct index ( temp highp int) 0:223 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 0 (const int) 0:224 move second child to first child ( temp highp 2-component vector of int) 0:224 vector swizzle ( temp highp 2-component vector of int) 0:224 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:224 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Sequence 0:224 Constant: 0:224 0 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Convert bool to int ( temp highp 2-component vector of int) 0:224 subgroupInclusiveXor ( global 2-component vector of bool) 0:224 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:224 vector swizzle ( temp highp 2-component vector of int) 0:224 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:224 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Sequence 0:224 Constant: 0:224 0 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 0 (const int) 0:224 0 (const int) 0:225 move second child to first child ( temp highp 3-component vector of int) 0:225 vector swizzle ( temp highp 3-component vector of int) 0:225 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Sequence 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 2 (const int) 0:225 Convert bool to int ( temp highp 3-component vector of int) 0:225 subgroupInclusiveXor ( global 3-component vector of bool) 0:225 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:225 vector swizzle ( temp highp 3-component vector of int) 0:225 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Sequence 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 2 (const int) 0:225 Constant: 0:225 0 (const int) 0:225 0 (const int) 0:225 0 (const int) 0:226 move second child to first child ( temp highp 4-component vector of int) 0:226 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Convert bool to int ( temp highp 4-component vector of int) 0:226 subgroupInclusiveXor ( global 4-component vector of bool) 0:226 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:226 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 0 (const int) 0:226 0 (const int) 0:226 0 (const int) 0:226 0 (const int) 0:228 move second child to first child ( temp highp float) 0:228 direct index ( temp highp float) 0:228 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 Constant: 0:228 2 (const int) 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 0 (const int) 0:228 subgroupExclusiveAdd ( global highp float) 0:228 direct index ( temp highp float) 0:228 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 0 (const int) 0:229 move second child to first child ( temp highp 2-component vector of float) 0:229 vector swizzle ( temp highp 2-component vector of float) 0:229 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:229 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:229 Constant: 0:229 2 (const int) 0:229 Constant: 0:229 0 (const int) 0:229 Sequence 0:229 Constant: 0:229 0 (const int) 0:229 Constant: 0:229 1 (const int) 0:229 subgroupExclusiveAdd ( global highp 2-component vector of float) 0:229 vector swizzle ( temp highp 2-component vector of float) 0:229 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:229 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:229 Constant: 0:229 1 (const int) 0:229 Constant: 0:229 0 (const int) 0:229 Sequence 0:229 Constant: 0:229 0 (const int) 0:229 Constant: 0:229 1 (const int) 0:230 move second child to first child ( temp highp 3-component vector of float) 0:230 vector swizzle ( temp highp 3-component vector of float) 0:230 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 Constant: 0:230 2 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 Sequence 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 2 (const int) 0:230 subgroupExclusiveAdd ( global highp 3-component vector of float) 0:230 vector swizzle ( temp highp 3-component vector of float) 0:230 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 Constant: 0:230 2 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 Sequence 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 2 (const int) 0:231 move second child to first child ( temp highp 4-component vector of float) 0:231 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 Constant: 0:231 2 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 subgroupExclusiveAdd ( global highp 4-component vector of float) 0:231 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 Constant: 0:231 3 (const int) 0:231 Constant: 0:231 0 (const int) 0:233 move second child to first child ( temp highp int) 0:233 direct index ( temp highp int) 0:233 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 Constant: 0:233 3 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 0 (const int) 0:233 subgroupExclusiveAdd ( global highp int) 0:233 direct index ( temp highp int) 0:233 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 Constant: 0:233 0 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 0 (const int) 0:234 move second child to first child ( temp highp 2-component vector of int) 0:234 vector swizzle ( temp highp 2-component vector of int) 0:234 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:234 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:234 Constant: 0:234 3 (const int) 0:234 Constant: 0:234 1 (const int) 0:234 Sequence 0:234 Constant: 0:234 0 (const int) 0:234 Constant: 0:234 1 (const int) 0:234 subgroupExclusiveAdd ( global highp 2-component vector of int) 0:234 vector swizzle ( temp highp 2-component vector of int) 0:234 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:234 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:234 Constant: 0:234 1 (const int) 0:234 Constant: 0:234 1 (const int) 0:234 Sequence 0:234 Constant: 0:234 0 (const int) 0:234 Constant: 0:234 1 (const int) 0:235 move second child to first child ( temp highp 3-component vector of int) 0:235 vector swizzle ( temp highp 3-component vector of int) 0:235 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 Constant: 0:235 3 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Sequence 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 2 (const int) 0:235 subgroupExclusiveAdd ( global highp 3-component vector of int) 0:235 vector swizzle ( temp highp 3-component vector of int) 0:235 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 Constant: 0:235 2 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Sequence 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 2 (const int) 0:236 move second child to first child ( temp highp 4-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 Constant: 0:236 3 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 subgroupExclusiveAdd ( global highp 4-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 Constant: 0:236 3 (const int) 0:236 Constant: 0:236 1 (const int) 0:238 move second child to first child ( temp highp uint) 0:238 direct index ( temp highp uint) 0:238 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 Constant: 0:238 0 (const int) 0:238 Constant: 0:238 2 (const int) 0:238 Constant: 0:238 0 (const int) 0:238 subgroupExclusiveAdd ( global highp uint) 0:238 direct index ( temp highp uint) 0:238 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 Constant: 0:238 0 (const int) 0:238 Constant: 0:238 2 (const int) 0:238 Constant: 0:238 0 (const int) 0:239 move second child to first child ( temp highp 2-component vector of uint) 0:239 vector swizzle ( temp highp 2-component vector of uint) 0:239 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:239 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:239 Constant: 0:239 0 (const int) 0:239 Constant: 0:239 2 (const int) 0:239 Sequence 0:239 Constant: 0:239 0 (const int) 0:239 Constant: 0:239 1 (const int) 0:239 subgroupExclusiveAdd ( global highp 2-component vector of uint) 0:239 vector swizzle ( temp highp 2-component vector of uint) 0:239 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:239 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:239 Constant: 0:239 1 (const int) 0:239 Constant: 0:239 2 (const int) 0:239 Sequence 0:239 Constant: 0:239 0 (const int) 0:239 Constant: 0:239 1 (const int) 0:240 move second child to first child ( temp highp 3-component vector of uint) 0:240 vector swizzle ( temp highp 3-component vector of uint) 0:240 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 Sequence 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 1 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 subgroupExclusiveAdd ( global highp 3-component vector of uint) 0:240 vector swizzle ( temp highp 3-component vector of uint) 0:240 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 Constant: 0:240 2 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 Sequence 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 1 (const int) 0:240 Constant: 0:240 2 (const int) 0:241 move second child to first child ( temp highp 4-component vector of uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 subgroupExclusiveAdd ( global highp 4-component vector of uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 Constant: 0:241 3 (const int) 0:241 Constant: 0:241 2 (const int) 0:243 move second child to first child ( temp highp float) 0:243 direct index ( temp highp float) 0:243 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 Constant: 0:243 1 (const int) 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 0 (const int) 0:243 subgroupExclusiveMul ( global highp float) 0:243 direct index ( temp highp float) 0:243 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 0 (const int) 0:244 move second child to first child ( temp highp 2-component vector of float) 0:244 vector swizzle ( temp highp 2-component vector of float) 0:244 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:244 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:244 Constant: 0:244 1 (const int) 0:244 Constant: 0:244 0 (const int) 0:244 Sequence 0:244 Constant: 0:244 0 (const int) 0:244 Constant: 0:244 1 (const int) 0:244 subgroupExclusiveMul ( global highp 2-component vector of float) 0:244 vector swizzle ( temp highp 2-component vector of float) 0:244 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:244 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:244 Constant: 0:244 1 (const int) 0:244 Constant: 0:244 0 (const int) 0:244 Sequence 0:244 Constant: 0:244 0 (const int) 0:244 Constant: 0:244 1 (const int) 0:245 move second child to first child ( temp highp 3-component vector of float) 0:245 vector swizzle ( temp highp 3-component vector of float) 0:245 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 Sequence 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 2 (const int) 0:245 subgroupExclusiveMul ( global highp 3-component vector of float) 0:245 vector swizzle ( temp highp 3-component vector of float) 0:245 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 Constant: 0:245 2 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 Sequence 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 2 (const int) 0:246 move second child to first child ( temp highp 4-component vector of float) 0:246 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 0 (const int) 0:246 subgroupExclusiveMul ( global highp 4-component vector of float) 0:246 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 Constant: 0:246 3 (const int) 0:246 Constant: 0:246 0 (const int) 0:248 move second child to first child ( temp highp int) 0:248 direct index ( temp highp int) 0:248 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 Constant: 0:248 2 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 0 (const int) 0:248 subgroupExclusiveMul ( global highp int) 0:248 direct index ( temp highp int) 0:248 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 Constant: 0:248 0 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 0 (const int) 0:249 move second child to first child ( temp highp 2-component vector of int) 0:249 vector swizzle ( temp highp 2-component vector of int) 0:249 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:249 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:249 Constant: 0:249 2 (const int) 0:249 Constant: 0:249 1 (const int) 0:249 Sequence 0:249 Constant: 0:249 0 (const int) 0:249 Constant: 0:249 1 (const int) 0:249 subgroupExclusiveMul ( global highp 2-component vector of int) 0:249 vector swizzle ( temp highp 2-component vector of int) 0:249 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:249 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:249 Constant: 0:249 1 (const int) 0:249 Constant: 0:249 1 (const int) 0:249 Sequence 0:249 Constant: 0:249 0 (const int) 0:249 Constant: 0:249 1 (const int) 0:250 move second child to first child ( temp highp 3-component vector of int) 0:250 vector swizzle ( temp highp 3-component vector of int) 0:250 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 Constant: 0:250 2 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Sequence 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Constant: 0:250 2 (const int) 0:250 subgroupExclusiveMul ( global highp 3-component vector of int) 0:250 vector swizzle ( temp highp 3-component vector of int) 0:250 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 Constant: 0:250 2 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Sequence 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Constant: 0:250 2 (const int) 0:251 move second child to first child ( temp highp 4-component vector of int) 0:251 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 Constant: 0:251 2 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 subgroupExclusiveMul ( global highp 4-component vector of int) 0:251 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 Constant: 0:251 3 (const int) 0:251 Constant: 0:251 1 (const int) 0:253 move second child to first child ( temp highp uint) 0:253 direct index ( temp highp uint) 0:253 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 Constant: 0:253 3 (const int) 0:253 Constant: 0:253 2 (const int) 0:253 Constant: 0:253 0 (const int) 0:253 subgroupExclusiveMul ( global highp uint) 0:253 direct index ( temp highp uint) 0:253 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 Constant: 0:253 0 (const int) 0:253 Constant: 0:253 2 (const int) 0:253 Constant: 0:253 0 (const int) 0:254 move second child to first child ( temp highp 2-component vector of uint) 0:254 vector swizzle ( temp highp 2-component vector of uint) 0:254 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:254 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:254 Constant: 0:254 3 (const int) 0:254 Constant: 0:254 2 (const int) 0:254 Sequence 0:254 Constant: 0:254 0 (const int) 0:254 Constant: 0:254 1 (const int) 0:254 subgroupExclusiveMul ( global highp 2-component vector of uint) 0:254 vector swizzle ( temp highp 2-component vector of uint) 0:254 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:254 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:254 Constant: 0:254 1 (const int) 0:254 Constant: 0:254 2 (const int) 0:254 Sequence 0:254 Constant: 0:254 0 (const int) 0:254 Constant: 0:254 1 (const int) 0:255 move second child to first child ( temp highp 3-component vector of uint) 0:255 vector swizzle ( temp highp 3-component vector of uint) 0:255 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 Constant: 0:255 3 (const int) 0:255 Constant: 0:255 2 (const int) 0:255 Sequence 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 2 (const int) 0:255 subgroupExclusiveMul ( global highp 3-component vector of uint) 0:255 vector swizzle ( temp highp 3-component vector of uint) 0:255 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 Constant: 0:255 2 (const int) 0:255 Constant: 0:255 2 (const int) 0:255 Sequence 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 2 (const int) 0:256 move second child to first child ( temp highp 4-component vector of uint) 0:256 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 Constant: 0:256 3 (const int) 0:256 Constant: 0:256 2 (const int) 0:256 subgroupExclusiveMul ( global highp 4-component vector of uint) 0:256 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 Constant: 0:256 3 (const int) 0:256 Constant: 0:256 2 (const int) 0:258 move second child to first child ( temp highp float) 0:258 direct index ( temp highp float) 0:258 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 0 (const int) 0:258 subgroupExclusiveMin ( global highp float) 0:258 direct index ( temp highp float) 0:258 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 0 (const int) 0:259 move second child to first child ( temp highp 2-component vector of float) 0:259 vector swizzle ( temp highp 2-component vector of float) 0:259 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:259 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:259 Constant: 0:259 0 (const int) 0:259 Constant: 0:259 0 (const int) 0:259 Sequence 0:259 Constant: 0:259 0 (const int) 0:259 Constant: 0:259 1 (const int) 0:259 subgroupExclusiveMin ( global highp 2-component vector of float) 0:259 vector swizzle ( temp highp 2-component vector of float) 0:259 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:259 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:259 Constant: 0:259 1 (const int) 0:259 Constant: 0:259 0 (const int) 0:259 Sequence 0:259 Constant: 0:259 0 (const int) 0:259 Constant: 0:259 1 (const int) 0:260 move second child to first child ( temp highp 3-component vector of float) 0:260 vector swizzle ( temp highp 3-component vector of float) 0:260 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 0 (const int) 0:260 Sequence 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 1 (const int) 0:260 Constant: 0:260 2 (const int) 0:260 subgroupExclusiveMin ( global highp 3-component vector of float) 0:260 vector swizzle ( temp highp 3-component vector of float) 0:260 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 Constant: 0:260 2 (const int) 0:260 Constant: 0:260 0 (const int) 0:260 Sequence 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 1 (const int) 0:260 Constant: 0:260 2 (const int) 0:261 move second child to first child ( temp highp 4-component vector of float) 0:261 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 0 (const int) 0:261 subgroupExclusiveMin ( global highp 4-component vector of float) 0:261 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 Constant: 0:261 3 (const int) 0:261 Constant: 0:261 0 (const int) 0:263 move second child to first child ( temp highp int) 0:263 direct index ( temp highp int) 0:263 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 0 (const int) 0:263 subgroupExclusiveMin ( global highp int) 0:263 direct index ( temp highp int) 0:263 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 Constant: 0:263 0 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 0 (const int) 0:264 move second child to first child ( temp highp 2-component vector of int) 0:264 vector swizzle ( temp highp 2-component vector of int) 0:264 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:264 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 Sequence 0:264 Constant: 0:264 0 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 subgroupExclusiveMin ( global highp 2-component vector of int) 0:264 vector swizzle ( temp highp 2-component vector of int) 0:264 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:264 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 Sequence 0:264 Constant: 0:264 0 (const int) 0:264 Constant: 0:264 1 (const int) 0:265 move second child to first child ( temp highp 3-component vector of int) 0:265 vector swizzle ( temp highp 3-component vector of int) 0:265 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Sequence 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 2 (const int) 0:265 subgroupExclusiveMin ( global highp 3-component vector of int) 0:265 vector swizzle ( temp highp 3-component vector of int) 0:265 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 Constant: 0:265 2 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Sequence 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 2 (const int) 0:266 move second child to first child ( temp highp 4-component vector of int) 0:266 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 subgroupExclusiveMin ( global highp 4-component vector of int) 0:266 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 Constant: 0:266 3 (const int) 0:266 Constant: 0:266 1 (const int) 0:268 move second child to first child ( temp highp uint) 0:268 direct index ( temp highp uint) 0:268 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 Constant: 0:268 2 (const int) 0:268 Constant: 0:268 2 (const int) 0:268 Constant: 0:268 0 (const int) 0:268 subgroupExclusiveMin ( global highp uint) 0:268 direct index ( temp highp uint) 0:268 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 Constant: 0:268 0 (const int) 0:268 Constant: 0:268 2 (const int) 0:268 Constant: 0:268 0 (const int) 0:269 move second child to first child ( temp highp 2-component vector of uint) 0:269 vector swizzle ( temp highp 2-component vector of uint) 0:269 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:269 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:269 Constant: 0:269 2 (const int) 0:269 Constant: 0:269 2 (const int) 0:269 Sequence 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 1 (const int) 0:269 subgroupExclusiveMin ( global highp 2-component vector of uint) 0:269 vector swizzle ( temp highp 2-component vector of uint) 0:269 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:269 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:269 Constant: 0:269 1 (const int) 0:269 Constant: 0:269 2 (const int) 0:269 Sequence 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 1 (const int) 0:270 move second child to first child ( temp highp 3-component vector of uint) 0:270 vector swizzle ( temp highp 3-component vector of uint) 0:270 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 Constant: 0:270 2 (const int) 0:270 Constant: 0:270 2 (const int) 0:270 Sequence 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 2 (const int) 0:270 subgroupExclusiveMin ( global highp 3-component vector of uint) 0:270 vector swizzle ( temp highp 3-component vector of uint) 0:270 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 Constant: 0:270 2 (const int) 0:270 Constant: 0:270 2 (const int) 0:270 Sequence 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 2 (const int) 0:271 move second child to first child ( temp highp 4-component vector of uint) 0:271 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 Constant: 0:271 2 (const int) 0:271 Constant: 0:271 2 (const int) 0:271 subgroupExclusiveMin ( global highp 4-component vector of uint) 0:271 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 Constant: 0:271 3 (const int) 0:271 Constant: 0:271 2 (const int) 0:273 move second child to first child ( temp highp float) 0:273 direct index ( temp highp float) 0:273 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 Constant: 0:273 3 (const int) 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 0 (const int) 0:273 subgroupExclusiveMax ( global highp float) 0:273 direct index ( temp highp float) 0:273 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 0 (const int) 0:274 move second child to first child ( temp highp 2-component vector of float) 0:274 vector swizzle ( temp highp 2-component vector of float) 0:274 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:274 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:274 Constant: 0:274 3 (const int) 0:274 Constant: 0:274 0 (const int) 0:274 Sequence 0:274 Constant: 0:274 0 (const int) 0:274 Constant: 0:274 1 (const int) 0:274 subgroupExclusiveMax ( global highp 2-component vector of float) 0:274 vector swizzle ( temp highp 2-component vector of float) 0:274 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:274 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:274 Constant: 0:274 1 (const int) 0:274 Constant: 0:274 0 (const int) 0:274 Sequence 0:274 Constant: 0:274 0 (const int) 0:274 Constant: 0:274 1 (const int) 0:275 move second child to first child ( temp highp 3-component vector of float) 0:275 vector swizzle ( temp highp 3-component vector of float) 0:275 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 Constant: 0:275 3 (const int) 0:275 Constant: 0:275 0 (const int) 0:275 Sequence 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 1 (const int) 0:275 Constant: 0:275 2 (const int) 0:275 subgroupExclusiveMax ( global highp 3-component vector of float) 0:275 vector swizzle ( temp highp 3-component vector of float) 0:275 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 Constant: 0:275 2 (const int) 0:275 Constant: 0:275 0 (const int) 0:275 Sequence 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 1 (const int) 0:275 Constant: 0:275 2 (const int) 0:276 move second child to first child ( temp highp 4-component vector of float) 0:276 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 Constant: 0:276 3 (const int) 0:276 Constant: 0:276 0 (const int) 0:276 subgroupExclusiveMax ( global highp 4-component vector of float) 0:276 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 Constant: 0:276 3 (const int) 0:276 Constant: 0:276 0 (const int) 0:278 move second child to first child ( temp highp int) 0:278 direct index ( temp highp int) 0:278 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 Constant: 0:278 0 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 0 (const int) 0:278 subgroupExclusiveMax ( global highp int) 0:278 direct index ( temp highp int) 0:278 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 Constant: 0:278 0 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 0 (const int) 0:279 move second child to first child ( temp highp 2-component vector of int) 0:279 vector swizzle ( temp highp 2-component vector of int) 0:279 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:279 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:279 Constant: 0:279 0 (const int) 0:279 Constant: 0:279 1 (const int) 0:279 Sequence 0:279 Constant: 0:279 0 (const int) 0:279 Constant: 0:279 1 (const int) 0:279 subgroupExclusiveMax ( global highp 2-component vector of int) 0:279 vector swizzle ( temp highp 2-component vector of int) 0:279 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:279 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:279 Constant: 0:279 1 (const int) 0:279 Constant: 0:279 1 (const int) 0:279 Sequence 0:279 Constant: 0:279 0 (const int) 0:279 Constant: 0:279 1 (const int) 0:280 move second child to first child ( temp highp 3-component vector of int) 0:280 vector swizzle ( temp highp 3-component vector of int) 0:280 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 Sequence 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 Constant: 0:280 2 (const int) 0:280 subgroupExclusiveMax ( global highp 3-component vector of int) 0:280 vector swizzle ( temp highp 3-component vector of int) 0:280 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 Constant: 0:280 2 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 Sequence 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 Constant: 0:280 2 (const int) 0:281 move second child to first child ( temp highp 4-component vector of int) 0:281 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 subgroupExclusiveMax ( global highp 4-component vector of int) 0:281 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 Constant: 0:281 3 (const int) 0:281 Constant: 0:281 1 (const int) 0:283 move second child to first child ( temp highp uint) 0:283 direct index ( temp highp uint) 0:283 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 Constant: 0:283 1 (const int) 0:283 Constant: 0:283 2 (const int) 0:283 Constant: 0:283 0 (const int) 0:283 subgroupExclusiveMax ( global highp uint) 0:283 direct index ( temp highp uint) 0:283 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 Constant: 0:283 0 (const int) 0:283 Constant: 0:283 2 (const int) 0:283 Constant: 0:283 0 (const int) 0:284 move second child to first child ( temp highp 2-component vector of uint) 0:284 vector swizzle ( temp highp 2-component vector of uint) 0:284 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:284 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:284 Constant: 0:284 1 (const int) 0:284 Constant: 0:284 2 (const int) 0:284 Sequence 0:284 Constant: 0:284 0 (const int) 0:284 Constant: 0:284 1 (const int) 0:284 subgroupExclusiveMax ( global highp 2-component vector of uint) 0:284 vector swizzle ( temp highp 2-component vector of uint) 0:284 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:284 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:284 Constant: 0:284 1 (const int) 0:284 Constant: 0:284 2 (const int) 0:284 Sequence 0:284 Constant: 0:284 0 (const int) 0:284 Constant: 0:284 1 (const int) 0:285 move second child to first child ( temp highp 3-component vector of uint) 0:285 vector swizzle ( temp highp 3-component vector of uint) 0:285 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 2 (const int) 0:285 Sequence 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 2 (const int) 0:285 subgroupExclusiveMax ( global highp 3-component vector of uint) 0:285 vector swizzle ( temp highp 3-component vector of uint) 0:285 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 Constant: 0:285 2 (const int) 0:285 Constant: 0:285 2 (const int) 0:285 Sequence 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 2 (const int) 0:286 move second child to first child ( temp highp 4-component vector of uint) 0:286 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 2 (const int) 0:286 subgroupExclusiveMax ( global highp 4-component vector of uint) 0:286 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 Constant: 0:286 3 (const int) 0:286 Constant: 0:286 2 (const int) 0:288 move second child to first child ( temp highp int) 0:288 direct index ( temp highp int) 0:288 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 Constant: 0:288 2 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 0 (const int) 0:288 subgroupExclusiveAnd ( global highp int) 0:288 direct index ( temp highp int) 0:288 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 Constant: 0:288 0 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 0 (const int) 0:289 move second child to first child ( temp highp 2-component vector of int) 0:289 vector swizzle ( temp highp 2-component vector of int) 0:289 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:289 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:289 Constant: 0:289 2 (const int) 0:289 Constant: 0:289 1 (const int) 0:289 Sequence 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 1 (const int) 0:289 subgroupExclusiveAnd ( global highp 2-component vector of int) 0:289 vector swizzle ( temp highp 2-component vector of int) 0:289 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:289 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:289 Constant: 0:289 1 (const int) 0:289 Constant: 0:289 1 (const int) 0:289 Sequence 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 1 (const int) 0:290 move second child to first child ( temp highp 3-component vector of int) 0:290 vector swizzle ( temp highp 3-component vector of int) 0:290 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 Sequence 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 Constant: 0:290 2 (const int) 0:290 subgroupExclusiveAnd ( global highp 3-component vector of int) 0:290 vector swizzle ( temp highp 3-component vector of int) 0:290 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 Sequence 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 Constant: 0:290 2 (const int) 0:291 move second child to first child ( temp highp 4-component vector of int) 0:291 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 Constant: 0:291 2 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 subgroupExclusiveAnd ( global highp 4-component vector of int) 0:291 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 Constant: 0:291 3 (const int) 0:291 Constant: 0:291 1 (const int) 0:293 move second child to first child ( temp highp uint) 0:293 direct index ( temp highp uint) 0:293 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 Constant: 0:293 3 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 Constant: 0:293 0 (const int) 0:293 subgroupExclusiveAnd ( global highp uint) 0:293 direct index ( temp highp uint) 0:293 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 Constant: 0:293 0 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 Constant: 0:293 0 (const int) 0:294 move second child to first child ( temp highp 2-component vector of uint) 0:294 vector swizzle ( temp highp 2-component vector of uint) 0:294 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:294 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:294 Constant: 0:294 3 (const int) 0:294 Constant: 0:294 2 (const int) 0:294 Sequence 0:294 Constant: 0:294 0 (const int) 0:294 Constant: 0:294 1 (const int) 0:294 subgroupExclusiveAnd ( global highp 2-component vector of uint) 0:294 vector swizzle ( temp highp 2-component vector of uint) 0:294 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:294 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 2 (const int) 0:294 Sequence 0:294 Constant: 0:294 0 (const int) 0:294 Constant: 0:294 1 (const int) 0:295 move second child to first child ( temp highp 3-component vector of uint) 0:295 vector swizzle ( temp highp 3-component vector of uint) 0:295 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 Constant: 0:295 3 (const int) 0:295 Constant: 0:295 2 (const int) 0:295 Sequence 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 1 (const int) 0:295 Constant: 0:295 2 (const int) 0:295 subgroupExclusiveAnd ( global highp 3-component vector of uint) 0:295 vector swizzle ( temp highp 3-component vector of uint) 0:295 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 Constant: 0:295 2 (const int) 0:295 Constant: 0:295 2 (const int) 0:295 Sequence 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 1 (const int) 0:295 Constant: 0:295 2 (const int) 0:296 move second child to first child ( temp highp 4-component vector of uint) 0:296 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 Constant: 0:296 3 (const int) 0:296 Constant: 0:296 2 (const int) 0:296 subgroupExclusiveAnd ( global highp 4-component vector of uint) 0:296 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 Constant: 0:296 3 (const int) 0:296 Constant: 0:296 2 (const int) 0:298 move second child to first child ( temp highp int) 0:298 direct index ( temp highp int) 0:298 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 1 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 Convert bool to int ( temp highp int) 0:298 subgroupExclusiveAnd ( global bool) 0:298 Compare Less Than ( temp bool) 0:298 direct index ( temp highp int) 0:298 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 1 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 0 (const int) 0:299 move second child to first child ( temp highp 2-component vector of int) 0:299 vector swizzle ( temp highp 2-component vector of int) 0:299 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:299 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:299 Constant: 0:299 0 (const int) 0:299 Constant: 0:299 1 (const int) 0:299 Sequence 0:299 Constant: 0:299 0 (const int) 0:299 Constant: 0:299 1 (const int) 0:299 Convert bool to int ( temp highp 2-component vector of int) 0:299 subgroupExclusiveAnd ( global 2-component vector of bool) 0:299 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:299 vector swizzle ( temp highp 2-component vector of int) 0:299 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:299 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:299 Constant: 0:299 1 (const int) 0:299 Constant: 0:299 1 (const int) 0:299 Sequence 0:299 Constant: 0:299 0 (const int) 0:299 Constant: 0:299 1 (const int) 0:299 Constant: 0:299 0 (const int) 0:299 0 (const int) 0:300 move second child to first child ( temp highp 3-component vector of int) 0:300 vector swizzle ( temp highp 3-component vector of int) 0:300 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Sequence 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 2 (const int) 0:300 Convert bool to int ( temp highp 3-component vector of int) 0:300 subgroupExclusiveAnd ( global 3-component vector of bool) 0:300 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:300 vector swizzle ( temp highp 3-component vector of int) 0:300 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Sequence 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 2 (const int) 0:300 Constant: 0:300 0 (const int) 0:300 0 (const int) 0:300 0 (const int) 0:301 move second child to first child ( temp highp 4-component vector of int) 0:301 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Convert bool to int ( temp highp 4-component vector of int) 0:301 subgroupExclusiveAnd ( global 4-component vector of bool) 0:301 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:301 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 0 (const int) 0:301 0 (const int) 0:301 0 (const int) 0:301 0 (const int) 0:303 move second child to first child ( temp highp int) 0:303 direct index ( temp highp int) 0:303 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 0 (const int) 0:303 subgroupExclusiveOr ( global highp int) 0:303 direct index ( temp highp int) 0:303 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 Constant: 0:303 0 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 0 (const int) 0:304 move second child to first child ( temp highp 2-component vector of int) 0:304 vector swizzle ( temp highp 2-component vector of int) 0:304 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:304 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:304 Constant: 0:304 1 (const int) 0:304 Constant: 0:304 1 (const int) 0:304 Sequence 0:304 Constant: 0:304 0 (const int) 0:304 Constant: 0:304 1 (const int) 0:304 subgroupExclusiveOr ( global highp 2-component vector of int) 0:304 vector swizzle ( temp highp 2-component vector of int) 0:304 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:304 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:304 Constant: 0:304 1 (const int) 0:304 Constant: 0:304 1 (const int) 0:304 Sequence 0:304 Constant: 0:304 0 (const int) 0:304 Constant: 0:304 1 (const int) 0:305 move second child to first child ( temp highp 3-component vector of int) 0:305 vector swizzle ( temp highp 3-component vector of int) 0:305 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 Constant: 0:305 1 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 Sequence 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 Constant: 0:305 2 (const int) 0:305 subgroupExclusiveOr ( global highp 3-component vector of int) 0:305 vector swizzle ( temp highp 3-component vector of int) 0:305 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 Constant: 0:305 2 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 Sequence 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 Constant: 0:305 2 (const int) 0:306 move second child to first child ( temp highp 4-component vector of int) 0:306 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 Constant: 0:306 1 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 subgroupExclusiveOr ( global highp 4-component vector of int) 0:306 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 Constant: 0:306 3 (const int) 0:306 Constant: 0:306 1 (const int) 0:308 move second child to first child ( temp highp uint) 0:308 direct index ( temp highp uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 0 (const int) 0:308 subgroupExclusiveOr ( global highp uint) 0:308 direct index ( temp highp uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 Constant: 0:308 0 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 0 (const int) 0:309 move second child to first child ( temp highp 2-component vector of uint) 0:309 vector swizzle ( temp highp 2-component vector of uint) 0:309 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:309 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:309 Constant: 0:309 2 (const int) 0:309 Constant: 0:309 2 (const int) 0:309 Sequence 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 1 (const int) 0:309 subgroupExclusiveOr ( global highp 2-component vector of uint) 0:309 vector swizzle ( temp highp 2-component vector of uint) 0:309 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:309 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:309 Constant: 0:309 1 (const int) 0:309 Constant: 0:309 2 (const int) 0:309 Sequence 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 1 (const int) 0:310 move second child to first child ( temp highp 3-component vector of uint) 0:310 vector swizzle ( temp highp 3-component vector of uint) 0:310 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 Constant: 0:310 2 (const int) 0:310 Constant: 0:310 2 (const int) 0:310 Sequence 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 2 (const int) 0:310 subgroupExclusiveOr ( global highp 3-component vector of uint) 0:310 vector swizzle ( temp highp 3-component vector of uint) 0:310 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 Constant: 0:310 2 (const int) 0:310 Constant: 0:310 2 (const int) 0:310 Sequence 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 2 (const int) 0:311 move second child to first child ( temp highp 4-component vector of uint) 0:311 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 Constant: 0:311 2 (const int) 0:311 Constant: 0:311 2 (const int) 0:311 subgroupExclusiveOr ( global highp 4-component vector of uint) 0:311 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 Constant: 0:311 3 (const int) 0:311 Constant: 0:311 2 (const int) 0:313 move second child to first child ( temp highp int) 0:313 direct index ( temp highp int) 0:313 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 Constant: 0:313 3 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 Constant: 0:313 0 (const int) 0:313 Convert bool to int ( temp highp int) 0:313 subgroupExclusiveOr ( global bool) 0:313 Compare Less Than ( temp bool) 0:313 direct index ( temp highp int) 0:313 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 Constant: 0:313 0 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 Constant: 0:313 0 (const int) 0:313 Constant: 0:313 0 (const int) 0:314 move second child to first child ( temp highp 2-component vector of int) 0:314 vector swizzle ( temp highp 2-component vector of int) 0:314 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:314 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:314 Constant: 0:314 3 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Sequence 0:314 Constant: 0:314 0 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Convert bool to int ( temp highp 2-component vector of int) 0:314 subgroupExclusiveOr ( global 2-component vector of bool) 0:314 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:314 vector swizzle ( temp highp 2-component vector of int) 0:314 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:314 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:314 Constant: 0:314 1 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Sequence 0:314 Constant: 0:314 0 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Constant: 0:314 0 (const int) 0:314 0 (const int) 0:315 move second child to first child ( temp highp 3-component vector of int) 0:315 vector swizzle ( temp highp 3-component vector of int) 0:315 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 Constant: 0:315 3 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Sequence 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Constant: 0:315 2 (const int) 0:315 Convert bool to int ( temp highp 3-component vector of int) 0:315 subgroupExclusiveOr ( global 3-component vector of bool) 0:315 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:315 vector swizzle ( temp highp 3-component vector of int) 0:315 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 Constant: 0:315 1 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Sequence 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Constant: 0:315 2 (const int) 0:315 Constant: 0:315 0 (const int) 0:315 0 (const int) 0:315 0 (const int) 0:316 move second child to first child ( temp highp 4-component vector of int) 0:316 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 Constant: 0:316 3 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Convert bool to int ( temp highp 4-component vector of int) 0:316 subgroupExclusiveOr ( global 4-component vector of bool) 0:316 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:316 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 0 (const int) 0:316 0 (const int) 0:316 0 (const int) 0:316 0 (const int) 0:318 move second child to first child ( temp highp int) 0:318 direct index ( temp highp int) 0:318 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 Constant: 0:318 0 (const int) 0:318 Constant: 0:318 1 (const int) 0:318 Constant: 0:318 0 (const int) 0:318 subgroupExclusiveXor ( global highp int) 0:318 direct index ( temp highp int) 0:318 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 Constant: 0:318 0 (const int) 0:318 Constant: 0:318 1 (const int) 0:318 Constant: 0:318 0 (const int) 0:319 move second child to first child ( temp highp 2-component vector of int) 0:319 vector swizzle ( temp highp 2-component vector of int) 0:319 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:319 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:319 Constant: 0:319 0 (const int) 0:319 Constant: 0:319 1 (const int) 0:319 Sequence 0:319 Constant: 0:319 0 (const int) 0:319 Constant: 0:319 1 (const int) 0:319 subgroupExclusiveXor ( global highp 2-component vector of int) 0:319 vector swizzle ( temp highp 2-component vector of int) 0:319 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:319 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:319 Constant: 0:319 1 (const int) 0:319 Constant: 0:319 1 (const int) 0:319 Sequence 0:319 Constant: 0:319 0 (const int) 0:319 Constant: 0:319 1 (const int) 0:320 move second child to first child ( temp highp 3-component vector of int) 0:320 vector swizzle ( temp highp 3-component vector of int) 0:320 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Sequence 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 2 (const int) 0:320 subgroupExclusiveXor ( global highp 3-component vector of int) 0:320 vector swizzle ( temp highp 3-component vector of int) 0:320 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 Constant: 0:320 2 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Sequence 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 2 (const int) 0:321 move second child to first child ( temp highp 4-component vector of int) 0:321 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 subgroupExclusiveXor ( global highp 4-component vector of int) 0:321 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 Constant: 0:321 3 (const int) 0:321 Constant: 0:321 1 (const int) 0:323 move second child to first child ( temp highp uint) 0:323 direct index ( temp highp uint) 0:323 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 2 (const int) 0:323 Constant: 0:323 0 (const int) 0:323 subgroupExclusiveXor ( global highp uint) 0:323 direct index ( temp highp uint) 0:323 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 Constant: 0:323 0 (const int) 0:323 Constant: 0:323 2 (const int) 0:323 Constant: 0:323 0 (const int) 0:324 move second child to first child ( temp highp 2-component vector of uint) 0:324 vector swizzle ( temp highp 2-component vector of uint) 0:324 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:324 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:324 Constant: 0:324 1 (const int) 0:324 Constant: 0:324 2 (const int) 0:324 Sequence 0:324 Constant: 0:324 0 (const int) 0:324 Constant: 0:324 1 (const int) 0:324 subgroupExclusiveXor ( global highp 2-component vector of uint) 0:324 vector swizzle ( temp highp 2-component vector of uint) 0:324 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:324 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:324 Constant: 0:324 1 (const int) 0:324 Constant: 0:324 2 (const int) 0:324 Sequence 0:324 Constant: 0:324 0 (const int) 0:324 Constant: 0:324 1 (const int) 0:325 move second child to first child ( temp highp 3-component vector of uint) 0:325 vector swizzle ( temp highp 3-component vector of uint) 0:325 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 2 (const int) 0:325 Sequence 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 2 (const int) 0:325 subgroupExclusiveXor ( global highp 3-component vector of uint) 0:325 vector swizzle ( temp highp 3-component vector of uint) 0:325 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 Constant: 0:325 2 (const int) 0:325 Constant: 0:325 2 (const int) 0:325 Sequence 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 2 (const int) 0:326 move second child to first child ( temp highp 4-component vector of uint) 0:326 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 Constant: 0:326 1 (const int) 0:326 Constant: 0:326 2 (const int) 0:326 subgroupExclusiveXor ( global highp 4-component vector of uint) 0:326 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 Constant: 0:326 3 (const int) 0:326 Constant: 0:326 2 (const int) 0:328 move second child to first child ( temp highp int) 0:328 direct index ( temp highp int) 0:328 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 Constant: 0:328 2 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 Constant: 0:328 0 (const int) 0:328 Convert bool to int ( temp highp int) 0:328 subgroupExclusiveXor ( global bool) 0:328 Compare Less Than ( temp bool) 0:328 direct index ( temp highp int) 0:328 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 Constant: 0:328 0 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 Constant: 0:328 0 (const int) 0:328 Constant: 0:328 0 (const int) 0:329 move second child to first child ( temp highp 2-component vector of int) 0:329 vector swizzle ( temp highp 2-component vector of int) 0:329 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:329 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:329 Constant: 0:329 2 (const int) 0:329 Constant: 0:329 1 (const int) 0:329 Sequence 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 1 (const int) 0:329 Convert bool to int ( temp highp 2-component vector of int) 0:329 subgroupExclusiveXor ( global 2-component vector of bool) 0:329 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:329 vector swizzle ( temp highp 2-component vector of int) 0:329 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:329 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:329 Constant: 0:329 1 (const int) 0:329 Constant: 0:329 1 (const int) 0:329 Sequence 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 1 (const int) 0:329 Constant: 0:329 0 (const int) 0:329 0 (const int) 0:330 move second child to first child ( temp highp 3-component vector of int) 0:330 vector swizzle ( temp highp 3-component vector of int) 0:330 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 Constant: 0:330 2 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 Sequence 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 Constant: 0:330 2 (const int) 0:330 Convert bool to int ( temp highp 3-component vector of int) 0:330 subgroupExclusiveXor ( global 3-component vector of bool) 0:330 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:330 vector swizzle ( temp highp 3-component vector of int) 0:330 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 Constant: 0:330 1 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 Sequence 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 Constant: 0:330 2 (const int) 0:330 Constant: 0:330 0 (const int) 0:330 0 (const int) 0:330 0 (const int) 0:331 move second child to first child ( temp highp 4-component vector of int) 0:331 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 Constant: 0:331 2 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 Convert bool to int ( temp highp 4-component vector of int) 0:331 subgroupExclusiveXor ( global 4-component vector of bool) 0:331 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:331 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 0 (const int) 0:331 0 (const int) 0:331 0 (const int) 0:331 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_arithmetic Requested GL_KHR_shader_subgroup_basic local_size = (8, 1, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupAdd ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupAdd ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupAdd ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupAdd ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupAdd ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupAdd ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupAdd ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupAdd ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupAdd ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupAdd ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupAdd ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupAdd ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:33 move second child to first child ( temp highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 3 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupMul ( global highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 move second child to first child ( temp highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 subgroupMul ( global highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:35 move second child to first child ( temp highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupMul ( global highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 subgroupMul ( global highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:38 move second child to first child ( temp highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupMul ( global highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 move second child to first child ( temp highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupMul ( global highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupMul ( global highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:41 move second child to first child ( temp highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupMul ( global highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 1 (const int) 0:43 move second child to first child ( temp highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupMul ( global highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:44 move second child to first child ( temp highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupMul ( global highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:45 move second child to first child ( temp highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupMul ( global highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:46 move second child to first child ( temp highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupMul ( global highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 2 (const int) 0:48 move second child to first child ( temp highp float) 0:48 direct index ( temp highp float) 0:48 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupMin ( global highp float) 0:48 direct index ( temp highp float) 0:48 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:49 move second child to first child ( temp highp 2-component vector of float) 0:49 vector swizzle ( temp highp 2-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupMin ( global highp 2-component vector of float) 0:49 vector swizzle ( temp highp 2-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:50 move second child to first child ( temp highp 3-component vector of float) 0:50 vector swizzle ( temp highp 3-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupMin ( global highp 3-component vector of float) 0:50 vector swizzle ( temp highp 3-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:51 move second child to first child ( temp highp 4-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 subgroupMin ( global highp 4-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 0 (const int) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 subgroupMin ( global highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 subgroupMin ( global highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 subgroupMin ( global highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupMin ( global highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:58 move second child to first child ( temp highp uint) 0:58 direct index ( temp highp uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupMin ( global highp uint) 0:58 direct index ( temp highp uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:59 move second child to first child ( temp highp 2-component vector of uint) 0:59 vector swizzle ( temp highp 2-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupMin ( global highp 2-component vector of uint) 0:59 vector swizzle ( temp highp 2-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:60 move second child to first child ( temp highp 3-component vector of uint) 0:60 vector swizzle ( temp highp 3-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 subgroupMin ( global highp 3-component vector of uint) 0:60 vector swizzle ( temp highp 3-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:61 move second child to first child ( temp highp 4-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupMin ( global highp 4-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 2 (const int) 0:63 move second child to first child ( temp highp float) 0:63 direct index ( temp highp float) 0:63 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 subgroupMax ( global highp float) 0:63 direct index ( temp highp float) 0:63 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:64 move second child to first child ( temp highp 2-component vector of float) 0:64 vector swizzle ( temp highp 2-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 subgroupMax ( global highp 2-component vector of float) 0:64 vector swizzle ( temp highp 2-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:65 move second child to first child ( temp highp 3-component vector of float) 0:65 vector swizzle ( temp highp 3-component vector of float) 0:65 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 subgroupMax ( global highp 3-component vector of float) 0:65 vector swizzle ( temp highp 3-component vector of float) 0:65 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:66 move second child to first child ( temp highp 4-component vector of float) 0:66 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 subgroupMax ( global highp 4-component vector of float) 0:66 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 3 (const int) 0:66 Constant: 0:66 0 (const int) 0:68 move second child to first child ( temp highp int) 0:68 direct index ( temp highp int) 0:68 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 subgroupMax ( global highp int) 0:68 direct index ( temp highp int) 0:68 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:69 move second child to first child ( temp highp 2-component vector of int) 0:69 vector swizzle ( temp highp 2-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 subgroupMax ( global highp 2-component vector of int) 0:69 vector swizzle ( temp highp 2-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:70 move second child to first child ( temp highp 3-component vector of int) 0:70 vector swizzle ( temp highp 3-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 subgroupMax ( global highp 3-component vector of int) 0:70 vector swizzle ( temp highp 3-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:71 move second child to first child ( temp highp 4-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupMax ( global highp 4-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 3 (const int) 0:71 Constant: 0:71 1 (const int) 0:73 move second child to first child ( temp highp uint) 0:73 direct index ( temp highp uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 3 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 subgroupMax ( global highp uint) 0:73 direct index ( temp highp uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:74 move second child to first child ( temp highp 2-component vector of uint) 0:74 vector swizzle ( temp highp 2-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 subgroupMax ( global highp 2-component vector of uint) 0:74 vector swizzle ( temp highp 2-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:75 move second child to first child ( temp highp 3-component vector of uint) 0:75 vector swizzle ( temp highp 3-component vector of uint) 0:75 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 3 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 subgroupMax ( global highp 3-component vector of uint) 0:75 vector swizzle ( temp highp 3-component vector of uint) 0:75 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:76 move second child to first child ( temp highp 4-component vector of uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupMax ( global highp 4-component vector of uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 2 (const int) 0:78 move second child to first child ( temp highp int) 0:78 direct index ( temp highp int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 subgroupAnd ( global highp int) 0:78 direct index ( temp highp int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0 (const int) 0:79 move second child to first child ( temp highp 2-component vector of int) 0:79 vector swizzle ( temp highp 2-component vector of int) 0:79 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupAnd ( global highp 2-component vector of int) 0:79 vector swizzle ( temp highp 2-component vector of int) 0:79 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:80 move second child to first child ( temp highp 3-component vector of int) 0:80 vector swizzle ( temp highp 3-component vector of int) 0:80 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 subgroupAnd ( global highp 3-component vector of int) 0:80 vector swizzle ( temp highp 3-component vector of int) 0:80 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:81 move second child to first child ( temp highp 4-component vector of int) 0:81 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupAnd ( global highp 4-component vector of int) 0:81 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 1 (const int) 0:83 move second child to first child ( temp highp uint) 0:83 direct index ( temp highp uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 subgroupAnd ( global highp uint) 0:83 direct index ( temp highp uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:84 move second child to first child ( temp highp 2-component vector of uint) 0:84 vector swizzle ( temp highp 2-component vector of uint) 0:84 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 subgroupAnd ( global highp 2-component vector of uint) 0:84 vector swizzle ( temp highp 2-component vector of uint) 0:84 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:85 move second child to first child ( temp highp 3-component vector of uint) 0:85 vector swizzle ( temp highp 3-component vector of uint) 0:85 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 subgroupAnd ( global highp 3-component vector of uint) 0:85 vector swizzle ( temp highp 3-component vector of uint) 0:85 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:86 move second child to first child ( temp highp 4-component vector of uint) 0:86 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupAnd ( global highp 4-component vector of uint) 0:86 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 2 (const int) 0:88 move second child to first child ( temp highp int) 0:88 direct index ( temp highp int) 0:88 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Convert bool to int ( temp highp int) 0:88 subgroupAnd ( global bool) 0:88 Compare Less Than ( temp bool) 0:88 direct index ( temp highp int) 0:88 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:89 move second child to first child ( temp highp 2-component vector of int) 0:89 vector swizzle ( temp highp 2-component vector of int) 0:89 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Convert bool to int ( temp highp 2-component vector of int) 0:89 subgroupAnd ( global 2-component vector of bool) 0:89 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:89 vector swizzle ( temp highp 2-component vector of int) 0:89 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 0 (const int) 0:90 move second child to first child ( temp highp 3-component vector of int) 0:90 vector swizzle ( temp highp 3-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Convert bool to int ( temp highp 3-component vector of int) 0:90 subgroupAnd ( global 3-component vector of bool) 0:90 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:90 vector swizzle ( temp highp 3-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 0 (const int) 0:90 0 (const int) 0:91 move second child to first child ( temp highp 4-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Convert bool to int ( temp highp 4-component vector of int) 0:91 subgroupAnd ( global 4-component vector of bool) 0:91 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:93 move second child to first child ( temp highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 3 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 subgroupOr ( global highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:94 move second child to first child ( temp highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 subgroupOr ( global highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:95 move second child to first child ( temp highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 3 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 subgroupOr ( global highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:96 move second child to first child ( temp highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupOr ( global highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:98 move second child to first child ( temp highp uint) 0:98 direct index ( temp highp uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 subgroupOr ( global highp uint) 0:98 direct index ( temp highp uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 0 (const int) 0:99 move second child to first child ( temp highp 2-component vector of uint) 0:99 vector swizzle ( temp highp 2-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 Sequence 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 subgroupOr ( global highp 2-component vector of uint) 0:99 vector swizzle ( temp highp 2-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 Sequence 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:100 move second child to first child ( temp highp 3-component vector of uint) 0:100 vector swizzle ( temp highp 3-component vector of uint) 0:100 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 subgroupOr ( global highp 3-component vector of uint) 0:100 vector swizzle ( temp highp 3-component vector of uint) 0:100 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:101 move second child to first child ( temp highp 4-component vector of uint) 0:101 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupOr ( global highp 4-component vector of uint) 0:101 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 3 (const int) 0:101 Constant: 0:101 2 (const int) 0:103 move second child to first child ( temp highp int) 0:103 direct index ( temp highp int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Convert bool to int ( temp highp int) 0:103 subgroupOr ( global bool) 0:103 Compare Less Than ( temp bool) 0:103 direct index ( temp highp int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 0 (const int) 0:104 move second child to first child ( temp highp 2-component vector of int) 0:104 vector swizzle ( temp highp 2-component vector of int) 0:104 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Sequence 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Convert bool to int ( temp highp 2-component vector of int) 0:104 subgroupOr ( global 2-component vector of bool) 0:104 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:104 vector swizzle ( temp highp 2-component vector of int) 0:104 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Sequence 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 0 (const int) 0:105 move second child to first child ( temp highp 3-component vector of int) 0:105 vector swizzle ( temp highp 3-component vector of int) 0:105 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Convert bool to int ( temp highp 3-component vector of int) 0:105 subgroupOr ( global 3-component vector of bool) 0:105 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:105 vector swizzle ( temp highp 3-component vector of int) 0:105 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 0 (const int) 0:105 0 (const int) 0:106 move second child to first child ( temp highp 4-component vector of int) 0:106 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Convert bool to int ( temp highp 4-component vector of int) 0:106 subgroupOr ( global 4-component vector of bool) 0:106 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:106 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 0 (const int) 0:106 0 (const int) 0:106 0 (const int) 0:108 move second child to first child ( temp highp int) 0:108 direct index ( temp highp int) 0:108 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 2 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 0 (const int) 0:108 subgroupXor ( global highp int) 0:108 direct index ( temp highp int) 0:108 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 0 (const int) 0:109 move second child to first child ( temp highp 2-component vector of int) 0:109 vector swizzle ( temp highp 2-component vector of int) 0:109 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 Constant: 0:109 2 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Sequence 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 subgroupXor ( global highp 2-component vector of int) 0:109 vector swizzle ( temp highp 2-component vector of int) 0:109 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Sequence 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:110 move second child to first child ( temp highp 3-component vector of int) 0:110 vector swizzle ( temp highp 3-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 2 (const int) 0:110 subgroupXor ( global highp 3-component vector of int) 0:110 vector swizzle ( temp highp 3-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 2 (const int) 0:111 move second child to first child ( temp highp 4-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 subgroupXor ( global highp 4-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 3 (const int) 0:111 Constant: 0:111 1 (const int) 0:113 move second child to first child ( temp highp uint) 0:113 direct index ( temp highp uint) 0:113 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 3 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 0 (const int) 0:113 subgroupXor ( global highp uint) 0:113 direct index ( temp highp uint) 0:113 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 0 (const int) 0:114 move second child to first child ( temp highp 2-component vector of uint) 0:114 vector swizzle ( temp highp 2-component vector of uint) 0:114 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 Constant: 0:114 3 (const int) 0:114 Constant: 0:114 2 (const int) 0:114 Sequence 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 subgroupXor ( global highp 2-component vector of uint) 0:114 vector swizzle ( temp highp 2-component vector of uint) 0:114 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 2 (const int) 0:114 Sequence 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:115 move second child to first child ( temp highp 3-component vector of uint) 0:115 vector swizzle ( temp highp 3-component vector of uint) 0:115 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 3 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 subgroupXor ( global highp 3-component vector of uint) 0:115 vector swizzle ( temp highp 3-component vector of uint) 0:115 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 2 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 2 (const int) 0:116 move second child to first child ( temp highp 4-component vector of uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 3 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 subgroupXor ( global highp 4-component vector of uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 3 (const int) 0:116 Constant: 0:116 2 (const int) 0:118 move second child to first child ( temp highp int) 0:118 direct index ( temp highp int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Convert bool to int ( temp highp int) 0:118 subgroupXor ( global bool) 0:118 Compare Less Than ( temp bool) 0:118 direct index ( temp highp int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 0 (const int) 0:119 move second child to first child ( temp highp 2-component vector of int) 0:119 vector swizzle ( temp highp 2-component vector of int) 0:119 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Sequence 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Convert bool to int ( temp highp 2-component vector of int) 0:119 subgroupXor ( global 2-component vector of bool) 0:119 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:119 vector swizzle ( temp highp 2-component vector of int) 0:119 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 Constant: 0:119 1 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Sequence 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 0 (const int) 0:120 move second child to first child ( temp highp 3-component vector of int) 0:120 vector swizzle ( temp highp 3-component vector of int) 0:120 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Convert bool to int ( temp highp 3-component vector of int) 0:120 subgroupXor ( global 3-component vector of bool) 0:120 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:120 vector swizzle ( temp highp 3-component vector of int) 0:120 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 0 (const int) 0:120 0 (const int) 0:121 move second child to first child ( temp highp 4-component vector of int) 0:121 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Convert bool to int ( temp highp 4-component vector of int) 0:121 subgroupXor ( global 4-component vector of bool) 0:121 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:121 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 0 (const int) 0:121 0 (const int) 0:121 0 (const int) 0:121 0 (const int) 0:123 move second child to first child ( temp highp float) 0:123 direct index ( temp highp float) 0:123 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 Constant: 0:123 1 (const int) 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 0 (const int) 0:123 subgroupInclusiveAdd ( global highp float) 0:123 direct index ( temp highp float) 0:123 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 0 (const int) 0:123 Constant: 0:123 0 (const int) 0:124 move second child to first child ( temp highp 2-component vector of float) 0:124 vector swizzle ( temp highp 2-component vector of float) 0:124 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Sequence 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const int) 0:124 subgroupInclusiveAdd ( global highp 2-component vector of float) 0:124 vector swizzle ( temp highp 2-component vector of float) 0:124 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:124 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:124 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:124 Constant: 0:124 1 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Sequence 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 1 (const int) 0:125 move second child to first child ( temp highp 3-component vector of float) 0:125 vector swizzle ( temp highp 3-component vector of float) 0:125 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 2 (const int) 0:125 subgroupInclusiveAdd ( global highp 3-component vector of float) 0:125 vector swizzle ( temp highp 3-component vector of float) 0:125 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 Sequence 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 2 (const int) 0:126 move second child to first child ( temp highp 4-component vector of float) 0:126 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 subgroupInclusiveAdd ( global highp 4-component vector of float) 0:126 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 Constant: 0:126 3 (const int) 0:126 Constant: 0:126 0 (const int) 0:128 move second child to first child ( temp highp int) 0:128 direct index ( temp highp int) 0:128 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 Constant: 0:128 2 (const int) 0:128 Constant: 0:128 1 (const int) 0:128 Constant: 0:128 0 (const int) 0:128 subgroupInclusiveAdd ( global highp int) 0:128 direct index ( temp highp int) 0:128 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 Constant: 0:128 0 (const int) 0:128 Constant: 0:128 1 (const int) 0:128 Constant: 0:128 0 (const int) 0:129 move second child to first child ( temp highp 2-component vector of int) 0:129 vector swizzle ( temp highp 2-component vector of int) 0:129 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:129 Constant: 0:129 2 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 Sequence 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 subgroupInclusiveAdd ( global highp 2-component vector of int) 0:129 vector swizzle ( temp highp 2-component vector of int) 0:129 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:129 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:129 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:129 Constant: 0:129 1 (const int) 0:129 Constant: 0:129 1 (const int) 0:129 Sequence 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 1 (const int) 0:130 move second child to first child ( temp highp 3-component vector of int) 0:130 vector swizzle ( temp highp 3-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 Constant: 0:130 2 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 2 (const int) 0:130 subgroupInclusiveAdd ( global highp 3-component vector of int) 0:130 vector swizzle ( temp highp 3-component vector of int) 0:130 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 Constant: 0:130 2 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Sequence 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 2 (const int) 0:131 move second child to first child ( temp highp 4-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 subgroupInclusiveAdd ( global highp 4-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 Constant: 0:131 3 (const int) 0:131 Constant: 0:131 1 (const int) 0:133 move second child to first child ( temp highp uint) 0:133 direct index ( temp highp uint) 0:133 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 Constant: 0:133 3 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 Constant: 0:133 0 (const int) 0:133 subgroupInclusiveAdd ( global highp uint) 0:133 direct index ( temp highp uint) 0:133 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 Constant: 0:133 0 (const int) 0:133 Constant: 0:133 2 (const int) 0:133 Constant: 0:133 0 (const int) 0:134 move second child to first child ( temp highp 2-component vector of uint) 0:134 vector swizzle ( temp highp 2-component vector of uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:134 Constant: 0:134 3 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 Sequence 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 1 (const int) 0:134 subgroupInclusiveAdd ( global highp 2-component vector of uint) 0:134 vector swizzle ( temp highp 2-component vector of uint) 0:134 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:134 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:134 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:134 Constant: 0:134 1 (const int) 0:134 Constant: 0:134 2 (const int) 0:134 Sequence 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 1 (const int) 0:135 move second child to first child ( temp highp 3-component vector of uint) 0:135 vector swizzle ( temp highp 3-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 Constant: 0:135 3 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 subgroupInclusiveAdd ( global highp 3-component vector of uint) 0:135 vector swizzle ( temp highp 3-component vector of uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 Constant: 0:135 2 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Sequence 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 1 (const int) 0:135 Constant: 0:135 2 (const int) 0:136 move second child to first child ( temp highp 4-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 Constant: 0:136 3 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 subgroupInclusiveAdd ( global highp 4-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 Constant: 0:136 3 (const int) 0:136 Constant: 0:136 2 (const int) 0:138 move second child to first child ( temp highp float) 0:138 direct index ( temp highp float) 0:138 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 0 (const int) 0:138 subgroupInclusiveMul ( global highp float) 0:138 direct index ( temp highp float) 0:138 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 0 (const int) 0:138 Constant: 0:138 0 (const int) 0:139 move second child to first child ( temp highp 2-component vector of float) 0:139 vector swizzle ( temp highp 2-component vector of float) 0:139 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Sequence 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 subgroupInclusiveMul ( global highp 2-component vector of float) 0:139 vector swizzle ( temp highp 2-component vector of float) 0:139 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:139 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:139 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:139 Constant: 0:139 1 (const int) 0:139 Constant: 0:139 0 (const int) 0:139 Sequence 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:140 move second child to first child ( temp highp 3-component vector of float) 0:140 vector swizzle ( temp highp 3-component vector of float) 0:140 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 2 (const int) 0:140 subgroupInclusiveMul ( global highp 3-component vector of float) 0:140 vector swizzle ( temp highp 3-component vector of float) 0:140 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 Constant: 0:140 2 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 Sequence 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 2 (const int) 0:141 move second child to first child ( temp highp 4-component vector of float) 0:141 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 subgroupInclusiveMul ( global highp 4-component vector of float) 0:141 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 Constant: 0:141 3 (const int) 0:141 Constant: 0:141 0 (const int) 0:143 move second child to first child ( temp highp int) 0:143 direct index ( temp highp int) 0:143 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 0 (const int) 0:143 subgroupInclusiveMul ( global highp int) 0:143 direct index ( temp highp int) 0:143 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 Constant: 0:143 0 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 0 (const int) 0:144 move second child to first child ( temp highp 2-component vector of int) 0:144 vector swizzle ( temp highp 2-component vector of int) 0:144 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:144 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:144 Constant: 0:144 1 (const int) 0:144 Constant: 0:144 1 (const int) 0:144 Sequence 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 1 (const int) 0:144 subgroupInclusiveMul ( global highp 2-component vector of int) 0:144 vector swizzle ( temp highp 2-component vector of int) 0:144 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:144 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:144 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:144 Constant: 0:144 1 (const int) 0:144 Constant: 0:144 1 (const int) 0:144 Sequence 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 1 (const int) 0:145 move second child to first child ( temp highp 3-component vector of int) 0:145 vector swizzle ( temp highp 3-component vector of int) 0:145 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 Sequence 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 2 (const int) 0:145 subgroupInclusiveMul ( global highp 3-component vector of int) 0:145 vector swizzle ( temp highp 3-component vector of int) 0:145 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 Constant: 0:145 2 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 Sequence 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 1 (const int) 0:145 Constant: 0:145 2 (const int) 0:146 move second child to first child ( temp highp 4-component vector of int) 0:146 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 subgroupInclusiveMul ( global highp 4-component vector of int) 0:146 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 Constant: 0:146 3 (const int) 0:146 Constant: 0:146 1 (const int) 0:148 move second child to first child ( temp highp uint) 0:148 direct index ( temp highp uint) 0:148 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 Constant: 0:148 2 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 Constant: 0:148 0 (const int) 0:148 subgroupInclusiveMul ( global highp uint) 0:148 direct index ( temp highp uint) 0:148 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 Constant: 0:148 0 (const int) 0:148 Constant: 0:148 2 (const int) 0:148 Constant: 0:148 0 (const int) 0:149 move second child to first child ( temp highp 2-component vector of uint) 0:149 vector swizzle ( temp highp 2-component vector of uint) 0:149 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:149 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:149 Constant: 0:149 2 (const int) 0:149 Constant: 0:149 2 (const int) 0:149 Sequence 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 1 (const int) 0:149 subgroupInclusiveMul ( global highp 2-component vector of uint) 0:149 vector swizzle ( temp highp 2-component vector of uint) 0:149 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:149 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:149 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:149 Constant: 0:149 1 (const int) 0:149 Constant: 0:149 2 (const int) 0:149 Sequence 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 1 (const int) 0:150 move second child to first child ( temp highp 3-component vector of uint) 0:150 vector swizzle ( temp highp 3-component vector of uint) 0:150 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 Constant: 0:150 2 (const int) 0:150 Constant: 0:150 2 (const int) 0:150 Sequence 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 2 (const int) 0:150 subgroupInclusiveMul ( global highp 3-component vector of uint) 0:150 vector swizzle ( temp highp 3-component vector of uint) 0:150 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 Constant: 0:150 2 (const int) 0:150 Constant: 0:150 2 (const int) 0:150 Sequence 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 2 (const int) 0:151 move second child to first child ( temp highp 4-component vector of uint) 0:151 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 Constant: 0:151 2 (const int) 0:151 Constant: 0:151 2 (const int) 0:151 subgroupInclusiveMul ( global highp 4-component vector of uint) 0:151 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 Constant: 0:151 3 (const int) 0:151 Constant: 0:151 2 (const int) 0:153 move second child to first child ( temp highp float) 0:153 direct index ( temp highp float) 0:153 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 Constant: 0:153 3 (const int) 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 0 (const int) 0:153 subgroupInclusiveMin ( global highp float) 0:153 direct index ( temp highp float) 0:153 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 0 (const int) 0:153 Constant: 0:153 0 (const int) 0:154 move second child to first child ( temp highp 2-component vector of float) 0:154 vector swizzle ( temp highp 2-component vector of float) 0:154 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:154 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:154 Constant: 0:154 3 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 Sequence 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 1 (const int) 0:154 subgroupInclusiveMin ( global highp 2-component vector of float) 0:154 vector swizzle ( temp highp 2-component vector of float) 0:154 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:154 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:154 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:154 Constant: 0:154 1 (const int) 0:154 Constant: 0:154 0 (const int) 0:154 Sequence 0:154 Constant: 0:154 0 (const int) 0:154 Constant: 0:154 1 (const int) 0:155 move second child to first child ( temp highp 3-component vector of float) 0:155 vector swizzle ( temp highp 3-component vector of float) 0:155 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 Constant: 0:155 3 (const int) 0:155 Constant: 0:155 0 (const int) 0:155 Sequence 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 1 (const int) 0:155 Constant: 0:155 2 (const int) 0:155 subgroupInclusiveMin ( global highp 3-component vector of float) 0:155 vector swizzle ( temp highp 3-component vector of float) 0:155 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 Constant: 0:155 2 (const int) 0:155 Constant: 0:155 0 (const int) 0:155 Sequence 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 1 (const int) 0:155 Constant: 0:155 2 (const int) 0:156 move second child to first child ( temp highp 4-component vector of float) 0:156 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 Constant: 0:156 3 (const int) 0:156 Constant: 0:156 0 (const int) 0:156 subgroupInclusiveMin ( global highp 4-component vector of float) 0:156 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 Constant: 0:156 3 (const int) 0:156 Constant: 0:156 0 (const int) 0:158 move second child to first child ( temp highp int) 0:158 direct index ( temp highp int) 0:158 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Constant: 0:158 0 (const int) 0:158 subgroupInclusiveMin ( global highp int) 0:158 direct index ( temp highp int) 0:158 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 Constant: 0:158 0 (const int) 0:158 Constant: 0:158 1 (const int) 0:158 Constant: 0:158 0 (const int) 0:159 move second child to first child ( temp highp 2-component vector of int) 0:159 vector swizzle ( temp highp 2-component vector of int) 0:159 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:159 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 1 (const int) 0:159 Sequence 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 1 (const int) 0:159 subgroupInclusiveMin ( global highp 2-component vector of int) 0:159 vector swizzle ( temp highp 2-component vector of int) 0:159 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:159 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:159 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:159 Constant: 0:159 1 (const int) 0:159 Constant: 0:159 1 (const int) 0:159 Sequence 0:159 Constant: 0:159 0 (const int) 0:159 Constant: 0:159 1 (const int) 0:160 move second child to first child ( temp highp 3-component vector of int) 0:160 vector swizzle ( temp highp 3-component vector of int) 0:160 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 Sequence 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 Constant: 0:160 2 (const int) 0:160 subgroupInclusiveMin ( global highp 3-component vector of int) 0:160 vector swizzle ( temp highp 3-component vector of int) 0:160 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 Constant: 0:160 2 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 Sequence 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 1 (const int) 0:160 Constant: 0:160 2 (const int) 0:161 move second child to first child ( temp highp 4-component vector of int) 0:161 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 subgroupInclusiveMin ( global highp 4-component vector of int) 0:161 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 Constant: 0:161 3 (const int) 0:161 Constant: 0:161 1 (const int) 0:163 move second child to first child ( temp highp uint) 0:163 direct index ( temp highp uint) 0:163 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 Constant: 0:163 1 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 Constant: 0:163 0 (const int) 0:163 subgroupInclusiveMin ( global highp uint) 0:163 direct index ( temp highp uint) 0:163 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 Constant: 0:163 0 (const int) 0:163 Constant: 0:163 2 (const int) 0:163 Constant: 0:163 0 (const int) 0:164 move second child to first child ( temp highp 2-component vector of uint) 0:164 vector swizzle ( temp highp 2-component vector of uint) 0:164 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:164 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:164 Constant: 0:164 1 (const int) 0:164 Constant: 0:164 2 (const int) 0:164 Sequence 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 1 (const int) 0:164 subgroupInclusiveMin ( global highp 2-component vector of uint) 0:164 vector swizzle ( temp highp 2-component vector of uint) 0:164 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:164 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:164 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:164 Constant: 0:164 1 (const int) 0:164 Constant: 0:164 2 (const int) 0:164 Sequence 0:164 Constant: 0:164 0 (const int) 0:164 Constant: 0:164 1 (const int) 0:165 move second child to first child ( temp highp 3-component vector of uint) 0:165 vector swizzle ( temp highp 3-component vector of uint) 0:165 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 2 (const int) 0:165 Sequence 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 2 (const int) 0:165 subgroupInclusiveMin ( global highp 3-component vector of uint) 0:165 vector swizzle ( temp highp 3-component vector of uint) 0:165 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 Constant: 0:165 2 (const int) 0:165 Constant: 0:165 2 (const int) 0:165 Sequence 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 2 (const int) 0:166 move second child to first child ( temp highp 4-component vector of uint) 0:166 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 2 (const int) 0:166 subgroupInclusiveMin ( global highp 4-component vector of uint) 0:166 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 Constant: 0:166 3 (const int) 0:166 Constant: 0:166 2 (const int) 0:168 move second child to first child ( temp highp float) 0:168 direct index ( temp highp float) 0:168 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 Constant: 0:168 2 (const int) 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 0 (const int) 0:168 subgroupInclusiveMax ( global highp float) 0:168 direct index ( temp highp float) 0:168 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 0 (const int) 0:168 Constant: 0:168 0 (const int) 0:169 move second child to first child ( temp highp 2-component vector of float) 0:169 vector swizzle ( temp highp 2-component vector of float) 0:169 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:169 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:169 Constant: 0:169 2 (const int) 0:169 Constant: 0:169 0 (const int) 0:169 Sequence 0:169 Constant: 0:169 0 (const int) 0:169 Constant: 0:169 1 (const int) 0:169 subgroupInclusiveMax ( global highp 2-component vector of float) 0:169 vector swizzle ( temp highp 2-component vector of float) 0:169 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:169 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:169 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:169 Constant: 0:169 1 (const int) 0:169 Constant: 0:169 0 (const int) 0:169 Sequence 0:169 Constant: 0:169 0 (const int) 0:169 Constant: 0:169 1 (const int) 0:170 move second child to first child ( temp highp 3-component vector of float) 0:170 vector swizzle ( temp highp 3-component vector of float) 0:170 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 Constant: 0:170 2 (const int) 0:170 Constant: 0:170 0 (const int) 0:170 Sequence 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 1 (const int) 0:170 Constant: 0:170 2 (const int) 0:170 subgroupInclusiveMax ( global highp 3-component vector of float) 0:170 vector swizzle ( temp highp 3-component vector of float) 0:170 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 Constant: 0:170 2 (const int) 0:170 Constant: 0:170 0 (const int) 0:170 Sequence 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 1 (const int) 0:170 Constant: 0:170 2 (const int) 0:171 move second child to first child ( temp highp 4-component vector of float) 0:171 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 Constant: 0:171 2 (const int) 0:171 Constant: 0:171 0 (const int) 0:171 subgroupInclusiveMax ( global highp 4-component vector of float) 0:171 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 Constant: 0:171 3 (const int) 0:171 Constant: 0:171 0 (const int) 0:173 move second child to first child ( temp highp int) 0:173 direct index ( temp highp int) 0:173 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 Constant: 0:173 3 (const int) 0:173 Constant: 0:173 1 (const int) 0:173 Constant: 0:173 0 (const int) 0:173 subgroupInclusiveMax ( global highp int) 0:173 direct index ( temp highp int) 0:173 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 Constant: 0:173 0 (const int) 0:173 Constant: 0:173 1 (const int) 0:173 Constant: 0:173 0 (const int) 0:174 move second child to first child ( temp highp 2-component vector of int) 0:174 vector swizzle ( temp highp 2-component vector of int) 0:174 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:174 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:174 Constant: 0:174 3 (const int) 0:174 Constant: 0:174 1 (const int) 0:174 Sequence 0:174 Constant: 0:174 0 (const int) 0:174 Constant: 0:174 1 (const int) 0:174 subgroupInclusiveMax ( global highp 2-component vector of int) 0:174 vector swizzle ( temp highp 2-component vector of int) 0:174 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:174 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:174 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:174 Constant: 0:174 1 (const int) 0:174 Constant: 0:174 1 (const int) 0:174 Sequence 0:174 Constant: 0:174 0 (const int) 0:174 Constant: 0:174 1 (const int) 0:175 move second child to first child ( temp highp 3-component vector of int) 0:175 vector swizzle ( temp highp 3-component vector of int) 0:175 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 Constant: 0:175 3 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 Sequence 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 Constant: 0:175 2 (const int) 0:175 subgroupInclusiveMax ( global highp 3-component vector of int) 0:175 vector swizzle ( temp highp 3-component vector of int) 0:175 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 Constant: 0:175 2 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 Sequence 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 1 (const int) 0:175 Constant: 0:175 2 (const int) 0:176 move second child to first child ( temp highp 4-component vector of int) 0:176 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 Constant: 0:176 3 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 subgroupInclusiveMax ( global highp 4-component vector of int) 0:176 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 Constant: 0:176 3 (const int) 0:176 Constant: 0:176 1 (const int) 0:178 move second child to first child ( temp highp uint) 0:178 direct index ( temp highp uint) 0:178 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 2 (const int) 0:178 Constant: 0:178 0 (const int) 0:178 subgroupInclusiveMax ( global highp uint) 0:178 direct index ( temp highp uint) 0:178 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 2 (const int) 0:178 Constant: 0:178 0 (const int) 0:179 move second child to first child ( temp highp 2-component vector of uint) 0:179 vector swizzle ( temp highp 2-component vector of uint) 0:179 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:179 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:179 Constant: 0:179 0 (const int) 0:179 Constant: 0:179 2 (const int) 0:179 Sequence 0:179 Constant: 0:179 0 (const int) 0:179 Constant: 0:179 1 (const int) 0:179 subgroupInclusiveMax ( global highp 2-component vector of uint) 0:179 vector swizzle ( temp highp 2-component vector of uint) 0:179 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:179 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:179 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:179 Constant: 0:179 1 (const int) 0:179 Constant: 0:179 2 (const int) 0:179 Sequence 0:179 Constant: 0:179 0 (const int) 0:179 Constant: 0:179 1 (const int) 0:180 move second child to first child ( temp highp 3-component vector of uint) 0:180 vector swizzle ( temp highp 3-component vector of uint) 0:180 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 2 (const int) 0:180 Sequence 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 2 (const int) 0:180 subgroupInclusiveMax ( global highp 3-component vector of uint) 0:180 vector swizzle ( temp highp 3-component vector of uint) 0:180 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 Constant: 0:180 2 (const int) 0:180 Constant: 0:180 2 (const int) 0:180 Sequence 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 2 (const int) 0:181 move second child to first child ( temp highp 4-component vector of uint) 0:181 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 2 (const int) 0:181 subgroupInclusiveMax ( global highp 4-component vector of uint) 0:181 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 Constant: 0:181 3 (const int) 0:181 Constant: 0:181 2 (const int) 0:183 move second child to first child ( temp highp int) 0:183 direct index ( temp highp int) 0:183 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 0 (const int) 0:183 subgroupInclusiveAnd ( global highp int) 0:183 direct index ( temp highp int) 0:183 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 Constant: 0:183 0 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 Constant: 0:183 0 (const int) 0:184 move second child to first child ( temp highp 2-component vector of int) 0:184 vector swizzle ( temp highp 2-component vector of int) 0:184 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:184 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:184 Constant: 0:184 1 (const int) 0:184 Constant: 0:184 1 (const int) 0:184 Sequence 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 1 (const int) 0:184 subgroupInclusiveAnd ( global highp 2-component vector of int) 0:184 vector swizzle ( temp highp 2-component vector of int) 0:184 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:184 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:184 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:184 Constant: 0:184 1 (const int) 0:184 Constant: 0:184 1 (const int) 0:184 Sequence 0:184 Constant: 0:184 0 (const int) 0:184 Constant: 0:184 1 (const int) 0:185 move second child to first child ( temp highp 3-component vector of int) 0:185 vector swizzle ( temp highp 3-component vector of int) 0:185 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 Constant: 0:185 1 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 Sequence 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 Constant: 0:185 2 (const int) 0:185 subgroupInclusiveAnd ( global highp 3-component vector of int) 0:185 vector swizzle ( temp highp 3-component vector of int) 0:185 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 Constant: 0:185 2 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 Sequence 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 1 (const int) 0:185 Constant: 0:185 2 (const int) 0:186 move second child to first child ( temp highp 4-component vector of int) 0:186 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 subgroupInclusiveAnd ( global highp 4-component vector of int) 0:186 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 Constant: 0:186 3 (const int) 0:186 Constant: 0:186 1 (const int) 0:188 move second child to first child ( temp highp uint) 0:188 direct index ( temp highp uint) 0:188 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 Constant: 0:188 2 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 Constant: 0:188 0 (const int) 0:188 subgroupInclusiveAnd ( global highp uint) 0:188 direct index ( temp highp uint) 0:188 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 Constant: 0:188 0 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 Constant: 0:188 0 (const int) 0:189 move second child to first child ( temp highp 2-component vector of uint) 0:189 vector swizzle ( temp highp 2-component vector of uint) 0:189 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:189 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:189 Constant: 0:189 2 (const int) 0:189 Constant: 0:189 2 (const int) 0:189 Sequence 0:189 Constant: 0:189 0 (const int) 0:189 Constant: 0:189 1 (const int) 0:189 subgroupInclusiveAnd ( global highp 2-component vector of uint) 0:189 vector swizzle ( temp highp 2-component vector of uint) 0:189 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:189 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:189 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:189 Constant: 0:189 1 (const int) 0:189 Constant: 0:189 2 (const int) 0:189 Sequence 0:189 Constant: 0:189 0 (const int) 0:189 Constant: 0:189 1 (const int) 0:190 move second child to first child ( temp highp 3-component vector of uint) 0:190 vector swizzle ( temp highp 3-component vector of uint) 0:190 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 Constant: 0:190 2 (const int) 0:190 Constant: 0:190 2 (const int) 0:190 Sequence 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 1 (const int) 0:190 Constant: 0:190 2 (const int) 0:190 subgroupInclusiveAnd ( global highp 3-component vector of uint) 0:190 vector swizzle ( temp highp 3-component vector of uint) 0:190 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 Constant: 0:190 2 (const int) 0:190 Constant: 0:190 2 (const int) 0:190 Sequence 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 1 (const int) 0:190 Constant: 0:190 2 (const int) 0:191 move second child to first child ( temp highp 4-component vector of uint) 0:191 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 Constant: 0:191 2 (const int) 0:191 Constant: 0:191 2 (const int) 0:191 subgroupInclusiveAnd ( global highp 4-component vector of uint) 0:191 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 Constant: 0:191 3 (const int) 0:191 Constant: 0:191 2 (const int) 0:193 move second child to first child ( temp highp int) 0:193 direct index ( temp highp int) 0:193 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 Constant: 0:193 3 (const int) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 Convert bool to int ( temp highp int) 0:193 subgroupInclusiveAnd ( global bool) 0:193 Compare Less Than ( temp bool) 0:193 direct index ( temp highp int) 0:193 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 Constant: 0:193 0 (const int) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 Constant: 0:193 0 (const int) 0:194 move second child to first child ( temp highp 2-component vector of int) 0:194 vector swizzle ( temp highp 2-component vector of int) 0:194 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:194 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:194 Constant: 0:194 3 (const int) 0:194 Constant: 0:194 1 (const int) 0:194 Sequence 0:194 Constant: 0:194 0 (const int) 0:194 Constant: 0:194 1 (const int) 0:194 Convert bool to int ( temp highp 2-component vector of int) 0:194 subgroupInclusiveAnd ( global 2-component vector of bool) 0:194 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:194 vector swizzle ( temp highp 2-component vector of int) 0:194 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:194 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:194 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:194 Constant: 0:194 1 (const int) 0:194 Constant: 0:194 1 (const int) 0:194 Sequence 0:194 Constant: 0:194 0 (const int) 0:194 Constant: 0:194 1 (const int) 0:194 Constant: 0:194 0 (const int) 0:194 0 (const int) 0:195 move second child to first child ( temp highp 3-component vector of int) 0:195 vector swizzle ( temp highp 3-component vector of int) 0:195 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 Constant: 0:195 3 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Sequence 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 2 (const int) 0:195 Convert bool to int ( temp highp 3-component vector of int) 0:195 subgroupInclusiveAnd ( global 3-component vector of bool) 0:195 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:195 vector swizzle ( temp highp 3-component vector of int) 0:195 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Sequence 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 2 (const int) 0:195 Constant: 0:195 0 (const int) 0:195 0 (const int) 0:195 0 (const int) 0:196 move second child to first child ( temp highp 4-component vector of int) 0:196 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 Constant: 0:196 3 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Convert bool to int ( temp highp 4-component vector of int) 0:196 subgroupInclusiveAnd ( global 4-component vector of bool) 0:196 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:196 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 0 (const int) 0:196 0 (const int) 0:196 0 (const int) 0:196 0 (const int) 0:198 move second child to first child ( temp highp int) 0:198 direct index ( temp highp int) 0:198 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 Constant: 0:198 0 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 0 (const int) 0:198 subgroupInclusiveOr ( global highp int) 0:198 direct index ( temp highp int) 0:198 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 Constant: 0:198 0 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 0 (const int) 0:199 move second child to first child ( temp highp 2-component vector of int) 0:199 vector swizzle ( temp highp 2-component vector of int) 0:199 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:199 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:199 Constant: 0:199 0 (const int) 0:199 Constant: 0:199 1 (const int) 0:199 Sequence 0:199 Constant: 0:199 0 (const int) 0:199 Constant: 0:199 1 (const int) 0:199 subgroupInclusiveOr ( global highp 2-component vector of int) 0:199 vector swizzle ( temp highp 2-component vector of int) 0:199 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:199 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:199 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:199 Constant: 0:199 1 (const int) 0:199 Constant: 0:199 1 (const int) 0:199 Sequence 0:199 Constant: 0:199 0 (const int) 0:199 Constant: 0:199 1 (const int) 0:200 move second child to first child ( temp highp 3-component vector of int) 0:200 vector swizzle ( temp highp 3-component vector of int) 0:200 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 Sequence 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 Constant: 0:200 2 (const int) 0:200 subgroupInclusiveOr ( global highp 3-component vector of int) 0:200 vector swizzle ( temp highp 3-component vector of int) 0:200 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 Constant: 0:200 2 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 Sequence 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 1 (const int) 0:200 Constant: 0:200 2 (const int) 0:201 move second child to first child ( temp highp 4-component vector of int) 0:201 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 subgroupInclusiveOr ( global highp 4-component vector of int) 0:201 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 Constant: 0:201 3 (const int) 0:201 Constant: 0:201 1 (const int) 0:203 move second child to first child ( temp highp uint) 0:203 direct index ( temp highp uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 Constant: 0:203 0 (const int) 0:203 subgroupInclusiveOr ( global highp uint) 0:203 direct index ( temp highp uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 Constant: 0:203 0 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 Constant: 0:203 0 (const int) 0:204 move second child to first child ( temp highp 2-component vector of uint) 0:204 vector swizzle ( temp highp 2-component vector of uint) 0:204 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:204 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:204 Constant: 0:204 1 (const int) 0:204 Constant: 0:204 2 (const int) 0:204 Sequence 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 1 (const int) 0:204 subgroupInclusiveOr ( global highp 2-component vector of uint) 0:204 vector swizzle ( temp highp 2-component vector of uint) 0:204 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:204 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:204 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:204 Constant: 0:204 1 (const int) 0:204 Constant: 0:204 2 (const int) 0:204 Sequence 0:204 Constant: 0:204 0 (const int) 0:204 Constant: 0:204 1 (const int) 0:205 move second child to first child ( temp highp 3-component vector of uint) 0:205 vector swizzle ( temp highp 3-component vector of uint) 0:205 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 2 (const int) 0:205 Sequence 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 2 (const int) 0:205 subgroupInclusiveOr ( global highp 3-component vector of uint) 0:205 vector swizzle ( temp highp 3-component vector of uint) 0:205 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 Constant: 0:205 2 (const int) 0:205 Constant: 0:205 2 (const int) 0:205 Sequence 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 2 (const int) 0:206 move second child to first child ( temp highp 4-component vector of uint) 0:206 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 2 (const int) 0:206 subgroupInclusiveOr ( global highp 4-component vector of uint) 0:206 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 Constant: 0:206 3 (const int) 0:206 Constant: 0:206 2 (const int) 0:208 move second child to first child ( temp highp int) 0:208 direct index ( temp highp int) 0:208 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 Constant: 0:208 2 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 0 (const int) 0:208 Convert bool to int ( temp highp int) 0:208 subgroupInclusiveOr ( global bool) 0:208 Compare Less Than ( temp bool) 0:208 direct index ( temp highp int) 0:208 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 0 (const int) 0:208 Constant: 0:208 0 (const int) 0:209 move second child to first child ( temp highp 2-component vector of int) 0:209 vector swizzle ( temp highp 2-component vector of int) 0:209 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:209 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:209 Constant: 0:209 2 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Sequence 0:209 Constant: 0:209 0 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Convert bool to int ( temp highp 2-component vector of int) 0:209 subgroupInclusiveOr ( global 2-component vector of bool) 0:209 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:209 vector swizzle ( temp highp 2-component vector of int) 0:209 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:209 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:209 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Sequence 0:209 Constant: 0:209 0 (const int) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: 0:209 0 (const int) 0:209 0 (const int) 0:210 move second child to first child ( temp highp 3-component vector of int) 0:210 vector swizzle ( temp highp 3-component vector of int) 0:210 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Sequence 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Constant: 0:210 2 (const int) 0:210 Convert bool to int ( temp highp 3-component vector of int) 0:210 subgroupInclusiveOr ( global 3-component vector of bool) 0:210 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:210 vector swizzle ( temp highp 3-component vector of int) 0:210 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 Constant: 0:210 1 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Sequence 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 1 (const int) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 0 (const int) 0:210 0 (const int) 0:210 0 (const int) 0:211 move second child to first child ( temp highp 4-component vector of int) 0:211 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 Constant: 0:211 2 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Convert bool to int ( temp highp 4-component vector of int) 0:211 subgroupInclusiveOr ( global 4-component vector of bool) 0:211 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:211 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 0 (const int) 0:211 0 (const int) 0:211 0 (const int) 0:211 0 (const int) 0:213 move second child to first child ( temp highp int) 0:213 direct index ( temp highp int) 0:213 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 Constant: 0:213 3 (const int) 0:213 Constant: 0:213 1 (const int) 0:213 Constant: 0:213 0 (const int) 0:213 subgroupInclusiveXor ( global highp int) 0:213 direct index ( temp highp int) 0:213 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 Constant: 0:213 0 (const int) 0:213 Constant: 0:213 1 (const int) 0:213 Constant: 0:213 0 (const int) 0:214 move second child to first child ( temp highp 2-component vector of int) 0:214 vector swizzle ( temp highp 2-component vector of int) 0:214 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:214 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:214 Constant: 0:214 3 (const int) 0:214 Constant: 0:214 1 (const int) 0:214 Sequence 0:214 Constant: 0:214 0 (const int) 0:214 Constant: 0:214 1 (const int) 0:214 subgroupInclusiveXor ( global highp 2-component vector of int) 0:214 vector swizzle ( temp highp 2-component vector of int) 0:214 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:214 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:214 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:214 Constant: 0:214 1 (const int) 0:214 Constant: 0:214 1 (const int) 0:214 Sequence 0:214 Constant: 0:214 0 (const int) 0:214 Constant: 0:214 1 (const int) 0:215 move second child to first child ( temp highp 3-component vector of int) 0:215 vector swizzle ( temp highp 3-component vector of int) 0:215 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 Constant: 0:215 3 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Sequence 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 2 (const int) 0:215 subgroupInclusiveXor ( global highp 3-component vector of int) 0:215 vector swizzle ( temp highp 3-component vector of int) 0:215 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 Constant: 0:215 2 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Sequence 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 2 (const int) 0:216 move second child to first child ( temp highp 4-component vector of int) 0:216 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 Constant: 0:216 3 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 subgroupInclusiveXor ( global highp 4-component vector of int) 0:216 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 Constant: 0:216 3 (const int) 0:216 Constant: 0:216 1 (const int) 0:218 move second child to first child ( temp highp uint) 0:218 direct index ( temp highp uint) 0:218 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 Constant: 0:218 0 (const int) 0:218 Constant: 0:218 2 (const int) 0:218 Constant: 0:218 0 (const int) 0:218 subgroupInclusiveXor ( global highp uint) 0:218 direct index ( temp highp uint) 0:218 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 Constant: 0:218 0 (const int) 0:218 Constant: 0:218 2 (const int) 0:218 Constant: 0:218 0 (const int) 0:219 move second child to first child ( temp highp 2-component vector of uint) 0:219 vector swizzle ( temp highp 2-component vector of uint) 0:219 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:219 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:219 Constant: 0:219 0 (const int) 0:219 Constant: 0:219 2 (const int) 0:219 Sequence 0:219 Constant: 0:219 0 (const int) 0:219 Constant: 0:219 1 (const int) 0:219 subgroupInclusiveXor ( global highp 2-component vector of uint) 0:219 vector swizzle ( temp highp 2-component vector of uint) 0:219 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:219 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:219 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:219 Constant: 0:219 1 (const int) 0:219 Constant: 0:219 2 (const int) 0:219 Sequence 0:219 Constant: 0:219 0 (const int) 0:219 Constant: 0:219 1 (const int) 0:220 move second child to first child ( temp highp 3-component vector of uint) 0:220 vector swizzle ( temp highp 3-component vector of uint) 0:220 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 2 (const int) 0:220 Sequence 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 2 (const int) 0:220 subgroupInclusiveXor ( global highp 3-component vector of uint) 0:220 vector swizzle ( temp highp 3-component vector of uint) 0:220 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 Constant: 0:220 2 (const int) 0:220 Constant: 0:220 2 (const int) 0:220 Sequence 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 2 (const int) 0:221 move second child to first child ( temp highp 4-component vector of uint) 0:221 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 2 (const int) 0:221 subgroupInclusiveXor ( global highp 4-component vector of uint) 0:221 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 Constant: 0:221 3 (const int) 0:221 Constant: 0:221 2 (const int) 0:223 move second child to first child ( temp highp int) 0:223 direct index ( temp highp int) 0:223 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 0 (const int) 0:223 Convert bool to int ( temp highp int) 0:223 subgroupInclusiveXor ( global bool) 0:223 Compare Less Than ( temp bool) 0:223 direct index ( temp highp int) 0:223 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: 0:223 0 (const int) 0:223 Constant: 0:223 0 (const int) 0:224 move second child to first child ( temp highp 2-component vector of int) 0:224 vector swizzle ( temp highp 2-component vector of int) 0:224 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:224 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Sequence 0:224 Constant: 0:224 0 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Convert bool to int ( temp highp 2-component vector of int) 0:224 subgroupInclusiveXor ( global 2-component vector of bool) 0:224 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:224 vector swizzle ( temp highp 2-component vector of int) 0:224 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:224 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:224 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Sequence 0:224 Constant: 0:224 0 (const int) 0:224 Constant: 0:224 1 (const int) 0:224 Constant: 0:224 0 (const int) 0:224 0 (const int) 0:225 move second child to first child ( temp highp 3-component vector of int) 0:225 vector swizzle ( temp highp 3-component vector of int) 0:225 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Sequence 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 2 (const int) 0:225 Convert bool to int ( temp highp 3-component vector of int) 0:225 subgroupInclusiveXor ( global 3-component vector of bool) 0:225 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:225 vector swizzle ( temp highp 3-component vector of int) 0:225 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Sequence 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 1 (const int) 0:225 Constant: 0:225 2 (const int) 0:225 Constant: 0:225 0 (const int) 0:225 0 (const int) 0:225 0 (const int) 0:226 move second child to first child ( temp highp 4-component vector of int) 0:226 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Convert bool to int ( temp highp 4-component vector of int) 0:226 subgroupInclusiveXor ( global 4-component vector of bool) 0:226 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:226 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 0 (const int) 0:226 0 (const int) 0:226 0 (const int) 0:226 0 (const int) 0:228 move second child to first child ( temp highp float) 0:228 direct index ( temp highp float) 0:228 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 Constant: 0:228 2 (const int) 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 0 (const int) 0:228 subgroupExclusiveAdd ( global highp float) 0:228 direct index ( temp highp float) 0:228 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 0 (const int) 0:228 Constant: 0:228 0 (const int) 0:229 move second child to first child ( temp highp 2-component vector of float) 0:229 vector swizzle ( temp highp 2-component vector of float) 0:229 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:229 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:229 Constant: 0:229 2 (const int) 0:229 Constant: 0:229 0 (const int) 0:229 Sequence 0:229 Constant: 0:229 0 (const int) 0:229 Constant: 0:229 1 (const int) 0:229 subgroupExclusiveAdd ( global highp 2-component vector of float) 0:229 vector swizzle ( temp highp 2-component vector of float) 0:229 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:229 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:229 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:229 Constant: 0:229 1 (const int) 0:229 Constant: 0:229 0 (const int) 0:229 Sequence 0:229 Constant: 0:229 0 (const int) 0:229 Constant: 0:229 1 (const int) 0:230 move second child to first child ( temp highp 3-component vector of float) 0:230 vector swizzle ( temp highp 3-component vector of float) 0:230 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 Constant: 0:230 2 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 Sequence 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 2 (const int) 0:230 subgroupExclusiveAdd ( global highp 3-component vector of float) 0:230 vector swizzle ( temp highp 3-component vector of float) 0:230 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 Constant: 0:230 2 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 Sequence 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 2 (const int) 0:231 move second child to first child ( temp highp 4-component vector of float) 0:231 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 Constant: 0:231 2 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 subgroupExclusiveAdd ( global highp 4-component vector of float) 0:231 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 Constant: 0:231 3 (const int) 0:231 Constant: 0:231 0 (const int) 0:233 move second child to first child ( temp highp int) 0:233 direct index ( temp highp int) 0:233 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 Constant: 0:233 3 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 0 (const int) 0:233 subgroupExclusiveAdd ( global highp int) 0:233 direct index ( temp highp int) 0:233 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 Constant: 0:233 0 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 0 (const int) 0:234 move second child to first child ( temp highp 2-component vector of int) 0:234 vector swizzle ( temp highp 2-component vector of int) 0:234 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:234 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:234 Constant: 0:234 3 (const int) 0:234 Constant: 0:234 1 (const int) 0:234 Sequence 0:234 Constant: 0:234 0 (const int) 0:234 Constant: 0:234 1 (const int) 0:234 subgroupExclusiveAdd ( global highp 2-component vector of int) 0:234 vector swizzle ( temp highp 2-component vector of int) 0:234 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:234 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:234 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:234 Constant: 0:234 1 (const int) 0:234 Constant: 0:234 1 (const int) 0:234 Sequence 0:234 Constant: 0:234 0 (const int) 0:234 Constant: 0:234 1 (const int) 0:235 move second child to first child ( temp highp 3-component vector of int) 0:235 vector swizzle ( temp highp 3-component vector of int) 0:235 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 Constant: 0:235 3 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Sequence 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 2 (const int) 0:235 subgroupExclusiveAdd ( global highp 3-component vector of int) 0:235 vector swizzle ( temp highp 3-component vector of int) 0:235 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 Constant: 0:235 2 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Sequence 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 2 (const int) 0:236 move second child to first child ( temp highp 4-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 Constant: 0:236 3 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 subgroupExclusiveAdd ( global highp 4-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 Constant: 0:236 3 (const int) 0:236 Constant: 0:236 1 (const int) 0:238 move second child to first child ( temp highp uint) 0:238 direct index ( temp highp uint) 0:238 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 Constant: 0:238 0 (const int) 0:238 Constant: 0:238 2 (const int) 0:238 Constant: 0:238 0 (const int) 0:238 subgroupExclusiveAdd ( global highp uint) 0:238 direct index ( temp highp uint) 0:238 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 Constant: 0:238 0 (const int) 0:238 Constant: 0:238 2 (const int) 0:238 Constant: 0:238 0 (const int) 0:239 move second child to first child ( temp highp 2-component vector of uint) 0:239 vector swizzle ( temp highp 2-component vector of uint) 0:239 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:239 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:239 Constant: 0:239 0 (const int) 0:239 Constant: 0:239 2 (const int) 0:239 Sequence 0:239 Constant: 0:239 0 (const int) 0:239 Constant: 0:239 1 (const int) 0:239 subgroupExclusiveAdd ( global highp 2-component vector of uint) 0:239 vector swizzle ( temp highp 2-component vector of uint) 0:239 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:239 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:239 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:239 Constant: 0:239 1 (const int) 0:239 Constant: 0:239 2 (const int) 0:239 Sequence 0:239 Constant: 0:239 0 (const int) 0:239 Constant: 0:239 1 (const int) 0:240 move second child to first child ( temp highp 3-component vector of uint) 0:240 vector swizzle ( temp highp 3-component vector of uint) 0:240 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 Sequence 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 1 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 subgroupExclusiveAdd ( global highp 3-component vector of uint) 0:240 vector swizzle ( temp highp 3-component vector of uint) 0:240 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 Constant: 0:240 2 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 Sequence 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 1 (const int) 0:240 Constant: 0:240 2 (const int) 0:241 move second child to first child ( temp highp 4-component vector of uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 subgroupExclusiveAdd ( global highp 4-component vector of uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 Constant: 0:241 3 (const int) 0:241 Constant: 0:241 2 (const int) 0:243 move second child to first child ( temp highp float) 0:243 direct index ( temp highp float) 0:243 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 Constant: 0:243 1 (const int) 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 0 (const int) 0:243 subgroupExclusiveMul ( global highp float) 0:243 direct index ( temp highp float) 0:243 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 0 (const int) 0:243 Constant: 0:243 0 (const int) 0:244 move second child to first child ( temp highp 2-component vector of float) 0:244 vector swizzle ( temp highp 2-component vector of float) 0:244 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:244 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:244 Constant: 0:244 1 (const int) 0:244 Constant: 0:244 0 (const int) 0:244 Sequence 0:244 Constant: 0:244 0 (const int) 0:244 Constant: 0:244 1 (const int) 0:244 subgroupExclusiveMul ( global highp 2-component vector of float) 0:244 vector swizzle ( temp highp 2-component vector of float) 0:244 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:244 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:244 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:244 Constant: 0:244 1 (const int) 0:244 Constant: 0:244 0 (const int) 0:244 Sequence 0:244 Constant: 0:244 0 (const int) 0:244 Constant: 0:244 1 (const int) 0:245 move second child to first child ( temp highp 3-component vector of float) 0:245 vector swizzle ( temp highp 3-component vector of float) 0:245 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 Sequence 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 2 (const int) 0:245 subgroupExclusiveMul ( global highp 3-component vector of float) 0:245 vector swizzle ( temp highp 3-component vector of float) 0:245 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 Constant: 0:245 2 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 Sequence 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 2 (const int) 0:246 move second child to first child ( temp highp 4-component vector of float) 0:246 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 0 (const int) 0:246 subgroupExclusiveMul ( global highp 4-component vector of float) 0:246 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 Constant: 0:246 3 (const int) 0:246 Constant: 0:246 0 (const int) 0:248 move second child to first child ( temp highp int) 0:248 direct index ( temp highp int) 0:248 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 Constant: 0:248 2 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 0 (const int) 0:248 subgroupExclusiveMul ( global highp int) 0:248 direct index ( temp highp int) 0:248 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 Constant: 0:248 0 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 0 (const int) 0:249 move second child to first child ( temp highp 2-component vector of int) 0:249 vector swizzle ( temp highp 2-component vector of int) 0:249 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:249 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:249 Constant: 0:249 2 (const int) 0:249 Constant: 0:249 1 (const int) 0:249 Sequence 0:249 Constant: 0:249 0 (const int) 0:249 Constant: 0:249 1 (const int) 0:249 subgroupExclusiveMul ( global highp 2-component vector of int) 0:249 vector swizzle ( temp highp 2-component vector of int) 0:249 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:249 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:249 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:249 Constant: 0:249 1 (const int) 0:249 Constant: 0:249 1 (const int) 0:249 Sequence 0:249 Constant: 0:249 0 (const int) 0:249 Constant: 0:249 1 (const int) 0:250 move second child to first child ( temp highp 3-component vector of int) 0:250 vector swizzle ( temp highp 3-component vector of int) 0:250 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 Constant: 0:250 2 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Sequence 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Constant: 0:250 2 (const int) 0:250 subgroupExclusiveMul ( global highp 3-component vector of int) 0:250 vector swizzle ( temp highp 3-component vector of int) 0:250 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 Constant: 0:250 2 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Sequence 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 1 (const int) 0:250 Constant: 0:250 2 (const int) 0:251 move second child to first child ( temp highp 4-component vector of int) 0:251 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 Constant: 0:251 2 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 subgroupExclusiveMul ( global highp 4-component vector of int) 0:251 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 Constant: 0:251 3 (const int) 0:251 Constant: 0:251 1 (const int) 0:253 move second child to first child ( temp highp uint) 0:253 direct index ( temp highp uint) 0:253 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 Constant: 0:253 3 (const int) 0:253 Constant: 0:253 2 (const int) 0:253 Constant: 0:253 0 (const int) 0:253 subgroupExclusiveMul ( global highp uint) 0:253 direct index ( temp highp uint) 0:253 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 Constant: 0:253 0 (const int) 0:253 Constant: 0:253 2 (const int) 0:253 Constant: 0:253 0 (const int) 0:254 move second child to first child ( temp highp 2-component vector of uint) 0:254 vector swizzle ( temp highp 2-component vector of uint) 0:254 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:254 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:254 Constant: 0:254 3 (const int) 0:254 Constant: 0:254 2 (const int) 0:254 Sequence 0:254 Constant: 0:254 0 (const int) 0:254 Constant: 0:254 1 (const int) 0:254 subgroupExclusiveMul ( global highp 2-component vector of uint) 0:254 vector swizzle ( temp highp 2-component vector of uint) 0:254 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:254 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:254 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:254 Constant: 0:254 1 (const int) 0:254 Constant: 0:254 2 (const int) 0:254 Sequence 0:254 Constant: 0:254 0 (const int) 0:254 Constant: 0:254 1 (const int) 0:255 move second child to first child ( temp highp 3-component vector of uint) 0:255 vector swizzle ( temp highp 3-component vector of uint) 0:255 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 Constant: 0:255 3 (const int) 0:255 Constant: 0:255 2 (const int) 0:255 Sequence 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 2 (const int) 0:255 subgroupExclusiveMul ( global highp 3-component vector of uint) 0:255 vector swizzle ( temp highp 3-component vector of uint) 0:255 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 Constant: 0:255 2 (const int) 0:255 Constant: 0:255 2 (const int) 0:255 Sequence 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 2 (const int) 0:256 move second child to first child ( temp highp 4-component vector of uint) 0:256 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 Constant: 0:256 3 (const int) 0:256 Constant: 0:256 2 (const int) 0:256 subgroupExclusiveMul ( global highp 4-component vector of uint) 0:256 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 Constant: 0:256 3 (const int) 0:256 Constant: 0:256 2 (const int) 0:258 move second child to first child ( temp highp float) 0:258 direct index ( temp highp float) 0:258 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 0 (const int) 0:258 subgroupExclusiveMin ( global highp float) 0:258 direct index ( temp highp float) 0:258 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 0 (const int) 0:259 move second child to first child ( temp highp 2-component vector of float) 0:259 vector swizzle ( temp highp 2-component vector of float) 0:259 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:259 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:259 Constant: 0:259 0 (const int) 0:259 Constant: 0:259 0 (const int) 0:259 Sequence 0:259 Constant: 0:259 0 (const int) 0:259 Constant: 0:259 1 (const int) 0:259 subgroupExclusiveMin ( global highp 2-component vector of float) 0:259 vector swizzle ( temp highp 2-component vector of float) 0:259 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:259 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:259 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:259 Constant: 0:259 1 (const int) 0:259 Constant: 0:259 0 (const int) 0:259 Sequence 0:259 Constant: 0:259 0 (const int) 0:259 Constant: 0:259 1 (const int) 0:260 move second child to first child ( temp highp 3-component vector of float) 0:260 vector swizzle ( temp highp 3-component vector of float) 0:260 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 0 (const int) 0:260 Sequence 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 1 (const int) 0:260 Constant: 0:260 2 (const int) 0:260 subgroupExclusiveMin ( global highp 3-component vector of float) 0:260 vector swizzle ( temp highp 3-component vector of float) 0:260 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 Constant: 0:260 2 (const int) 0:260 Constant: 0:260 0 (const int) 0:260 Sequence 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 1 (const int) 0:260 Constant: 0:260 2 (const int) 0:261 move second child to first child ( temp highp 4-component vector of float) 0:261 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 0 (const int) 0:261 subgroupExclusiveMin ( global highp 4-component vector of float) 0:261 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 Constant: 0:261 3 (const int) 0:261 Constant: 0:261 0 (const int) 0:263 move second child to first child ( temp highp int) 0:263 direct index ( temp highp int) 0:263 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 0 (const int) 0:263 subgroupExclusiveMin ( global highp int) 0:263 direct index ( temp highp int) 0:263 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 Constant: 0:263 0 (const int) 0:263 Constant: 0:263 1 (const int) 0:263 Constant: 0:263 0 (const int) 0:264 move second child to first child ( temp highp 2-component vector of int) 0:264 vector swizzle ( temp highp 2-component vector of int) 0:264 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:264 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 Sequence 0:264 Constant: 0:264 0 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 subgroupExclusiveMin ( global highp 2-component vector of int) 0:264 vector swizzle ( temp highp 2-component vector of int) 0:264 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:264 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:264 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:264 Constant: 0:264 1 (const int) 0:264 Constant: 0:264 1 (const int) 0:264 Sequence 0:264 Constant: 0:264 0 (const int) 0:264 Constant: 0:264 1 (const int) 0:265 move second child to first child ( temp highp 3-component vector of int) 0:265 vector swizzle ( temp highp 3-component vector of int) 0:265 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Sequence 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 2 (const int) 0:265 subgroupExclusiveMin ( global highp 3-component vector of int) 0:265 vector swizzle ( temp highp 3-component vector of int) 0:265 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 Constant: 0:265 2 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Sequence 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 1 (const int) 0:265 Constant: 0:265 2 (const int) 0:266 move second child to first child ( temp highp 4-component vector of int) 0:266 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 subgroupExclusiveMin ( global highp 4-component vector of int) 0:266 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 Constant: 0:266 3 (const int) 0:266 Constant: 0:266 1 (const int) 0:268 move second child to first child ( temp highp uint) 0:268 direct index ( temp highp uint) 0:268 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 Constant: 0:268 2 (const int) 0:268 Constant: 0:268 2 (const int) 0:268 Constant: 0:268 0 (const int) 0:268 subgroupExclusiveMin ( global highp uint) 0:268 direct index ( temp highp uint) 0:268 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 Constant: 0:268 0 (const int) 0:268 Constant: 0:268 2 (const int) 0:268 Constant: 0:268 0 (const int) 0:269 move second child to first child ( temp highp 2-component vector of uint) 0:269 vector swizzle ( temp highp 2-component vector of uint) 0:269 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:269 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:269 Constant: 0:269 2 (const int) 0:269 Constant: 0:269 2 (const int) 0:269 Sequence 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 1 (const int) 0:269 subgroupExclusiveMin ( global highp 2-component vector of uint) 0:269 vector swizzle ( temp highp 2-component vector of uint) 0:269 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:269 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:269 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:269 Constant: 0:269 1 (const int) 0:269 Constant: 0:269 2 (const int) 0:269 Sequence 0:269 Constant: 0:269 0 (const int) 0:269 Constant: 0:269 1 (const int) 0:270 move second child to first child ( temp highp 3-component vector of uint) 0:270 vector swizzle ( temp highp 3-component vector of uint) 0:270 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 Constant: 0:270 2 (const int) 0:270 Constant: 0:270 2 (const int) 0:270 Sequence 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 2 (const int) 0:270 subgroupExclusiveMin ( global highp 3-component vector of uint) 0:270 vector swizzle ( temp highp 3-component vector of uint) 0:270 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 Constant: 0:270 2 (const int) 0:270 Constant: 0:270 2 (const int) 0:270 Sequence 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 2 (const int) 0:271 move second child to first child ( temp highp 4-component vector of uint) 0:271 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 Constant: 0:271 2 (const int) 0:271 Constant: 0:271 2 (const int) 0:271 subgroupExclusiveMin ( global highp 4-component vector of uint) 0:271 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 Constant: 0:271 3 (const int) 0:271 Constant: 0:271 2 (const int) 0:273 move second child to first child ( temp highp float) 0:273 direct index ( temp highp float) 0:273 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 Constant: 0:273 3 (const int) 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 0 (const int) 0:273 subgroupExclusiveMax ( global highp float) 0:273 direct index ( temp highp float) 0:273 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 0 (const int) 0:273 Constant: 0:273 0 (const int) 0:274 move second child to first child ( temp highp 2-component vector of float) 0:274 vector swizzle ( temp highp 2-component vector of float) 0:274 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:274 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:274 Constant: 0:274 3 (const int) 0:274 Constant: 0:274 0 (const int) 0:274 Sequence 0:274 Constant: 0:274 0 (const int) 0:274 Constant: 0:274 1 (const int) 0:274 subgroupExclusiveMax ( global highp 2-component vector of float) 0:274 vector swizzle ( temp highp 2-component vector of float) 0:274 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:274 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:274 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:274 Constant: 0:274 1 (const int) 0:274 Constant: 0:274 0 (const int) 0:274 Sequence 0:274 Constant: 0:274 0 (const int) 0:274 Constant: 0:274 1 (const int) 0:275 move second child to first child ( temp highp 3-component vector of float) 0:275 vector swizzle ( temp highp 3-component vector of float) 0:275 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 Constant: 0:275 3 (const int) 0:275 Constant: 0:275 0 (const int) 0:275 Sequence 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 1 (const int) 0:275 Constant: 0:275 2 (const int) 0:275 subgroupExclusiveMax ( global highp 3-component vector of float) 0:275 vector swizzle ( temp highp 3-component vector of float) 0:275 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 Constant: 0:275 2 (const int) 0:275 Constant: 0:275 0 (const int) 0:275 Sequence 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 1 (const int) 0:275 Constant: 0:275 2 (const int) 0:276 move second child to first child ( temp highp 4-component vector of float) 0:276 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 Constant: 0:276 3 (const int) 0:276 Constant: 0:276 0 (const int) 0:276 subgroupExclusiveMax ( global highp 4-component vector of float) 0:276 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 Constant: 0:276 3 (const int) 0:276 Constant: 0:276 0 (const int) 0:278 move second child to first child ( temp highp int) 0:278 direct index ( temp highp int) 0:278 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 Constant: 0:278 0 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 0 (const int) 0:278 subgroupExclusiveMax ( global highp int) 0:278 direct index ( temp highp int) 0:278 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 Constant: 0:278 0 (const int) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 0 (const int) 0:279 move second child to first child ( temp highp 2-component vector of int) 0:279 vector swizzle ( temp highp 2-component vector of int) 0:279 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:279 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:279 Constant: 0:279 0 (const int) 0:279 Constant: 0:279 1 (const int) 0:279 Sequence 0:279 Constant: 0:279 0 (const int) 0:279 Constant: 0:279 1 (const int) 0:279 subgroupExclusiveMax ( global highp 2-component vector of int) 0:279 vector swizzle ( temp highp 2-component vector of int) 0:279 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:279 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:279 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:279 Constant: 0:279 1 (const int) 0:279 Constant: 0:279 1 (const int) 0:279 Sequence 0:279 Constant: 0:279 0 (const int) 0:279 Constant: 0:279 1 (const int) 0:280 move second child to first child ( temp highp 3-component vector of int) 0:280 vector swizzle ( temp highp 3-component vector of int) 0:280 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 Sequence 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 Constant: 0:280 2 (const int) 0:280 subgroupExclusiveMax ( global highp 3-component vector of int) 0:280 vector swizzle ( temp highp 3-component vector of int) 0:280 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 Constant: 0:280 2 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 Sequence 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 1 (const int) 0:280 Constant: 0:280 2 (const int) 0:281 move second child to first child ( temp highp 4-component vector of int) 0:281 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 subgroupExclusiveMax ( global highp 4-component vector of int) 0:281 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 Constant: 0:281 3 (const int) 0:281 Constant: 0:281 1 (const int) 0:283 move second child to first child ( temp highp uint) 0:283 direct index ( temp highp uint) 0:283 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 Constant: 0:283 1 (const int) 0:283 Constant: 0:283 2 (const int) 0:283 Constant: 0:283 0 (const int) 0:283 subgroupExclusiveMax ( global highp uint) 0:283 direct index ( temp highp uint) 0:283 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 Constant: 0:283 0 (const int) 0:283 Constant: 0:283 2 (const int) 0:283 Constant: 0:283 0 (const int) 0:284 move second child to first child ( temp highp 2-component vector of uint) 0:284 vector swizzle ( temp highp 2-component vector of uint) 0:284 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:284 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:284 Constant: 0:284 1 (const int) 0:284 Constant: 0:284 2 (const int) 0:284 Sequence 0:284 Constant: 0:284 0 (const int) 0:284 Constant: 0:284 1 (const int) 0:284 subgroupExclusiveMax ( global highp 2-component vector of uint) 0:284 vector swizzle ( temp highp 2-component vector of uint) 0:284 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:284 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:284 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:284 Constant: 0:284 1 (const int) 0:284 Constant: 0:284 2 (const int) 0:284 Sequence 0:284 Constant: 0:284 0 (const int) 0:284 Constant: 0:284 1 (const int) 0:285 move second child to first child ( temp highp 3-component vector of uint) 0:285 vector swizzle ( temp highp 3-component vector of uint) 0:285 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 2 (const int) 0:285 Sequence 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 2 (const int) 0:285 subgroupExclusiveMax ( global highp 3-component vector of uint) 0:285 vector swizzle ( temp highp 3-component vector of uint) 0:285 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 Constant: 0:285 2 (const int) 0:285 Constant: 0:285 2 (const int) 0:285 Sequence 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 2 (const int) 0:286 move second child to first child ( temp highp 4-component vector of uint) 0:286 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 2 (const int) 0:286 subgroupExclusiveMax ( global highp 4-component vector of uint) 0:286 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 Constant: 0:286 3 (const int) 0:286 Constant: 0:286 2 (const int) 0:288 move second child to first child ( temp highp int) 0:288 direct index ( temp highp int) 0:288 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 Constant: 0:288 2 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 0 (const int) 0:288 subgroupExclusiveAnd ( global highp int) 0:288 direct index ( temp highp int) 0:288 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 Constant: 0:288 0 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 0 (const int) 0:289 move second child to first child ( temp highp 2-component vector of int) 0:289 vector swizzle ( temp highp 2-component vector of int) 0:289 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:289 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:289 Constant: 0:289 2 (const int) 0:289 Constant: 0:289 1 (const int) 0:289 Sequence 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 1 (const int) 0:289 subgroupExclusiveAnd ( global highp 2-component vector of int) 0:289 vector swizzle ( temp highp 2-component vector of int) 0:289 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:289 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:289 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:289 Constant: 0:289 1 (const int) 0:289 Constant: 0:289 1 (const int) 0:289 Sequence 0:289 Constant: 0:289 0 (const int) 0:289 Constant: 0:289 1 (const int) 0:290 move second child to first child ( temp highp 3-component vector of int) 0:290 vector swizzle ( temp highp 3-component vector of int) 0:290 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 Sequence 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 Constant: 0:290 2 (const int) 0:290 subgroupExclusiveAnd ( global highp 3-component vector of int) 0:290 vector swizzle ( temp highp 3-component vector of int) 0:290 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 Sequence 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 1 (const int) 0:290 Constant: 0:290 2 (const int) 0:291 move second child to first child ( temp highp 4-component vector of int) 0:291 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 Constant: 0:291 2 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 subgroupExclusiveAnd ( global highp 4-component vector of int) 0:291 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 Constant: 0:291 3 (const int) 0:291 Constant: 0:291 1 (const int) 0:293 move second child to first child ( temp highp uint) 0:293 direct index ( temp highp uint) 0:293 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 Constant: 0:293 3 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 Constant: 0:293 0 (const int) 0:293 subgroupExclusiveAnd ( global highp uint) 0:293 direct index ( temp highp uint) 0:293 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 Constant: 0:293 0 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 Constant: 0:293 0 (const int) 0:294 move second child to first child ( temp highp 2-component vector of uint) 0:294 vector swizzle ( temp highp 2-component vector of uint) 0:294 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:294 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:294 Constant: 0:294 3 (const int) 0:294 Constant: 0:294 2 (const int) 0:294 Sequence 0:294 Constant: 0:294 0 (const int) 0:294 Constant: 0:294 1 (const int) 0:294 subgroupExclusiveAnd ( global highp 2-component vector of uint) 0:294 vector swizzle ( temp highp 2-component vector of uint) 0:294 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:294 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:294 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:294 Constant: 0:294 1 (const int) 0:294 Constant: 0:294 2 (const int) 0:294 Sequence 0:294 Constant: 0:294 0 (const int) 0:294 Constant: 0:294 1 (const int) 0:295 move second child to first child ( temp highp 3-component vector of uint) 0:295 vector swizzle ( temp highp 3-component vector of uint) 0:295 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 Constant: 0:295 3 (const int) 0:295 Constant: 0:295 2 (const int) 0:295 Sequence 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 1 (const int) 0:295 Constant: 0:295 2 (const int) 0:295 subgroupExclusiveAnd ( global highp 3-component vector of uint) 0:295 vector swizzle ( temp highp 3-component vector of uint) 0:295 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 Constant: 0:295 2 (const int) 0:295 Constant: 0:295 2 (const int) 0:295 Sequence 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 1 (const int) 0:295 Constant: 0:295 2 (const int) 0:296 move second child to first child ( temp highp 4-component vector of uint) 0:296 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 Constant: 0:296 3 (const int) 0:296 Constant: 0:296 2 (const int) 0:296 subgroupExclusiveAnd ( global highp 4-component vector of uint) 0:296 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 Constant: 0:296 3 (const int) 0:296 Constant: 0:296 2 (const int) 0:298 move second child to first child ( temp highp int) 0:298 direct index ( temp highp int) 0:298 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 1 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 Convert bool to int ( temp highp int) 0:298 subgroupExclusiveAnd ( global bool) 0:298 Compare Less Than ( temp bool) 0:298 direct index ( temp highp int) 0:298 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 1 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 Constant: 0:298 0 (const int) 0:299 move second child to first child ( temp highp 2-component vector of int) 0:299 vector swizzle ( temp highp 2-component vector of int) 0:299 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:299 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:299 Constant: 0:299 0 (const int) 0:299 Constant: 0:299 1 (const int) 0:299 Sequence 0:299 Constant: 0:299 0 (const int) 0:299 Constant: 0:299 1 (const int) 0:299 Convert bool to int ( temp highp 2-component vector of int) 0:299 subgroupExclusiveAnd ( global 2-component vector of bool) 0:299 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:299 vector swizzle ( temp highp 2-component vector of int) 0:299 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:299 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:299 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:299 Constant: 0:299 1 (const int) 0:299 Constant: 0:299 1 (const int) 0:299 Sequence 0:299 Constant: 0:299 0 (const int) 0:299 Constant: 0:299 1 (const int) 0:299 Constant: 0:299 0 (const int) 0:299 0 (const int) 0:300 move second child to first child ( temp highp 3-component vector of int) 0:300 vector swizzle ( temp highp 3-component vector of int) 0:300 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Sequence 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 2 (const int) 0:300 Convert bool to int ( temp highp 3-component vector of int) 0:300 subgroupExclusiveAnd ( global 3-component vector of bool) 0:300 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:300 vector swizzle ( temp highp 3-component vector of int) 0:300 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Sequence 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 2 (const int) 0:300 Constant: 0:300 0 (const int) 0:300 0 (const int) 0:300 0 (const int) 0:301 move second child to first child ( temp highp 4-component vector of int) 0:301 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Convert bool to int ( temp highp 4-component vector of int) 0:301 subgroupExclusiveAnd ( global 4-component vector of bool) 0:301 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:301 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 0 (const int) 0:301 0 (const int) 0:301 0 (const int) 0:301 0 (const int) 0:303 move second child to first child ( temp highp int) 0:303 direct index ( temp highp int) 0:303 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 0 (const int) 0:303 subgroupExclusiveOr ( global highp int) 0:303 direct index ( temp highp int) 0:303 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 Constant: 0:303 0 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 Constant: 0:303 0 (const int) 0:304 move second child to first child ( temp highp 2-component vector of int) 0:304 vector swizzle ( temp highp 2-component vector of int) 0:304 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:304 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:304 Constant: 0:304 1 (const int) 0:304 Constant: 0:304 1 (const int) 0:304 Sequence 0:304 Constant: 0:304 0 (const int) 0:304 Constant: 0:304 1 (const int) 0:304 subgroupExclusiveOr ( global highp 2-component vector of int) 0:304 vector swizzle ( temp highp 2-component vector of int) 0:304 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:304 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:304 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:304 Constant: 0:304 1 (const int) 0:304 Constant: 0:304 1 (const int) 0:304 Sequence 0:304 Constant: 0:304 0 (const int) 0:304 Constant: 0:304 1 (const int) 0:305 move second child to first child ( temp highp 3-component vector of int) 0:305 vector swizzle ( temp highp 3-component vector of int) 0:305 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 Constant: 0:305 1 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 Sequence 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 Constant: 0:305 2 (const int) 0:305 subgroupExclusiveOr ( global highp 3-component vector of int) 0:305 vector swizzle ( temp highp 3-component vector of int) 0:305 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 Constant: 0:305 2 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 Sequence 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 1 (const int) 0:305 Constant: 0:305 2 (const int) 0:306 move second child to first child ( temp highp 4-component vector of int) 0:306 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 Constant: 0:306 1 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 subgroupExclusiveOr ( global highp 4-component vector of int) 0:306 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 Constant: 0:306 3 (const int) 0:306 Constant: 0:306 1 (const int) 0:308 move second child to first child ( temp highp uint) 0:308 direct index ( temp highp uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 0 (const int) 0:308 subgroupExclusiveOr ( global highp uint) 0:308 direct index ( temp highp uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 Constant: 0:308 0 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 0 (const int) 0:309 move second child to first child ( temp highp 2-component vector of uint) 0:309 vector swizzle ( temp highp 2-component vector of uint) 0:309 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:309 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:309 Constant: 0:309 2 (const int) 0:309 Constant: 0:309 2 (const int) 0:309 Sequence 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 1 (const int) 0:309 subgroupExclusiveOr ( global highp 2-component vector of uint) 0:309 vector swizzle ( temp highp 2-component vector of uint) 0:309 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:309 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:309 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:309 Constant: 0:309 1 (const int) 0:309 Constant: 0:309 2 (const int) 0:309 Sequence 0:309 Constant: 0:309 0 (const int) 0:309 Constant: 0:309 1 (const int) 0:310 move second child to first child ( temp highp 3-component vector of uint) 0:310 vector swizzle ( temp highp 3-component vector of uint) 0:310 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 Constant: 0:310 2 (const int) 0:310 Constant: 0:310 2 (const int) 0:310 Sequence 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 2 (const int) 0:310 subgroupExclusiveOr ( global highp 3-component vector of uint) 0:310 vector swizzle ( temp highp 3-component vector of uint) 0:310 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 Constant: 0:310 2 (const int) 0:310 Constant: 0:310 2 (const int) 0:310 Sequence 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 2 (const int) 0:311 move second child to first child ( temp highp 4-component vector of uint) 0:311 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 Constant: 0:311 2 (const int) 0:311 Constant: 0:311 2 (const int) 0:311 subgroupExclusiveOr ( global highp 4-component vector of uint) 0:311 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 Constant: 0:311 3 (const int) 0:311 Constant: 0:311 2 (const int) 0:313 move second child to first child ( temp highp int) 0:313 direct index ( temp highp int) 0:313 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 Constant: 0:313 3 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 Constant: 0:313 0 (const int) 0:313 Convert bool to int ( temp highp int) 0:313 subgroupExclusiveOr ( global bool) 0:313 Compare Less Than ( temp bool) 0:313 direct index ( temp highp int) 0:313 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 Constant: 0:313 0 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 Constant: 0:313 0 (const int) 0:313 Constant: 0:313 0 (const int) 0:314 move second child to first child ( temp highp 2-component vector of int) 0:314 vector swizzle ( temp highp 2-component vector of int) 0:314 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:314 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:314 Constant: 0:314 3 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Sequence 0:314 Constant: 0:314 0 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Convert bool to int ( temp highp 2-component vector of int) 0:314 subgroupExclusiveOr ( global 2-component vector of bool) 0:314 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:314 vector swizzle ( temp highp 2-component vector of int) 0:314 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:314 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:314 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:314 Constant: 0:314 1 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Sequence 0:314 Constant: 0:314 0 (const int) 0:314 Constant: 0:314 1 (const int) 0:314 Constant: 0:314 0 (const int) 0:314 0 (const int) 0:315 move second child to first child ( temp highp 3-component vector of int) 0:315 vector swizzle ( temp highp 3-component vector of int) 0:315 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 Constant: 0:315 3 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Sequence 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Constant: 0:315 2 (const int) 0:315 Convert bool to int ( temp highp 3-component vector of int) 0:315 subgroupExclusiveOr ( global 3-component vector of bool) 0:315 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:315 vector swizzle ( temp highp 3-component vector of int) 0:315 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 Constant: 0:315 1 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Sequence 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 1 (const int) 0:315 Constant: 0:315 2 (const int) 0:315 Constant: 0:315 0 (const int) 0:315 0 (const int) 0:315 0 (const int) 0:316 move second child to first child ( temp highp 4-component vector of int) 0:316 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 Constant: 0:316 3 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Convert bool to int ( temp highp 4-component vector of int) 0:316 subgroupExclusiveOr ( global 4-component vector of bool) 0:316 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:316 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 0 (const int) 0:316 0 (const int) 0:316 0 (const int) 0:316 0 (const int) 0:318 move second child to first child ( temp highp int) 0:318 direct index ( temp highp int) 0:318 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 Constant: 0:318 0 (const int) 0:318 Constant: 0:318 1 (const int) 0:318 Constant: 0:318 0 (const int) 0:318 subgroupExclusiveXor ( global highp int) 0:318 direct index ( temp highp int) 0:318 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 Constant: 0:318 0 (const int) 0:318 Constant: 0:318 1 (const int) 0:318 Constant: 0:318 0 (const int) 0:319 move second child to first child ( temp highp 2-component vector of int) 0:319 vector swizzle ( temp highp 2-component vector of int) 0:319 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:319 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:319 Constant: 0:319 0 (const int) 0:319 Constant: 0:319 1 (const int) 0:319 Sequence 0:319 Constant: 0:319 0 (const int) 0:319 Constant: 0:319 1 (const int) 0:319 subgroupExclusiveXor ( global highp 2-component vector of int) 0:319 vector swizzle ( temp highp 2-component vector of int) 0:319 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:319 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:319 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:319 Constant: 0:319 1 (const int) 0:319 Constant: 0:319 1 (const int) 0:319 Sequence 0:319 Constant: 0:319 0 (const int) 0:319 Constant: 0:319 1 (const int) 0:320 move second child to first child ( temp highp 3-component vector of int) 0:320 vector swizzle ( temp highp 3-component vector of int) 0:320 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Sequence 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 2 (const int) 0:320 subgroupExclusiveXor ( global highp 3-component vector of int) 0:320 vector swizzle ( temp highp 3-component vector of int) 0:320 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 Constant: 0:320 2 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Sequence 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 2 (const int) 0:321 move second child to first child ( temp highp 4-component vector of int) 0:321 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 subgroupExclusiveXor ( global highp 4-component vector of int) 0:321 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 Constant: 0:321 3 (const int) 0:321 Constant: 0:321 1 (const int) 0:323 move second child to first child ( temp highp uint) 0:323 direct index ( temp highp uint) 0:323 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 2 (const int) 0:323 Constant: 0:323 0 (const int) 0:323 subgroupExclusiveXor ( global highp uint) 0:323 direct index ( temp highp uint) 0:323 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 Constant: 0:323 0 (const int) 0:323 Constant: 0:323 2 (const int) 0:323 Constant: 0:323 0 (const int) 0:324 move second child to first child ( temp highp 2-component vector of uint) 0:324 vector swizzle ( temp highp 2-component vector of uint) 0:324 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:324 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:324 Constant: 0:324 1 (const int) 0:324 Constant: 0:324 2 (const int) 0:324 Sequence 0:324 Constant: 0:324 0 (const int) 0:324 Constant: 0:324 1 (const int) 0:324 subgroupExclusiveXor ( global highp 2-component vector of uint) 0:324 vector swizzle ( temp highp 2-component vector of uint) 0:324 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:324 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:324 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:324 Constant: 0:324 1 (const int) 0:324 Constant: 0:324 2 (const int) 0:324 Sequence 0:324 Constant: 0:324 0 (const int) 0:324 Constant: 0:324 1 (const int) 0:325 move second child to first child ( temp highp 3-component vector of uint) 0:325 vector swizzle ( temp highp 3-component vector of uint) 0:325 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 2 (const int) 0:325 Sequence 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 2 (const int) 0:325 subgroupExclusiveXor ( global highp 3-component vector of uint) 0:325 vector swizzle ( temp highp 3-component vector of uint) 0:325 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 Constant: 0:325 2 (const int) 0:325 Constant: 0:325 2 (const int) 0:325 Sequence 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 2 (const int) 0:326 move second child to first child ( temp highp 4-component vector of uint) 0:326 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 Constant: 0:326 1 (const int) 0:326 Constant: 0:326 2 (const int) 0:326 subgroupExclusiveXor ( global highp 4-component vector of uint) 0:326 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 Constant: 0:326 3 (const int) 0:326 Constant: 0:326 2 (const int) 0:328 move second child to first child ( temp highp int) 0:328 direct index ( temp highp int) 0:328 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 Constant: 0:328 2 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 Constant: 0:328 0 (const int) 0:328 Convert bool to int ( temp highp int) 0:328 subgroupExclusiveXor ( global bool) 0:328 Compare Less Than ( temp bool) 0:328 direct index ( temp highp int) 0:328 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 Constant: 0:328 0 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 Constant: 0:328 0 (const int) 0:328 Constant: 0:328 0 (const int) 0:329 move second child to first child ( temp highp 2-component vector of int) 0:329 vector swizzle ( temp highp 2-component vector of int) 0:329 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:329 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:329 Constant: 0:329 2 (const int) 0:329 Constant: 0:329 1 (const int) 0:329 Sequence 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 1 (const int) 0:329 Convert bool to int ( temp highp 2-component vector of int) 0:329 subgroupExclusiveXor ( global 2-component vector of bool) 0:329 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:329 vector swizzle ( temp highp 2-component vector of int) 0:329 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:329 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:329 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:329 Constant: 0:329 1 (const int) 0:329 Constant: 0:329 1 (const int) 0:329 Sequence 0:329 Constant: 0:329 0 (const int) 0:329 Constant: 0:329 1 (const int) 0:329 Constant: 0:329 0 (const int) 0:329 0 (const int) 0:330 move second child to first child ( temp highp 3-component vector of int) 0:330 vector swizzle ( temp highp 3-component vector of int) 0:330 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 Constant: 0:330 2 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 Sequence 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 Constant: 0:330 2 (const int) 0:330 Convert bool to int ( temp highp 3-component vector of int) 0:330 subgroupExclusiveXor ( global 3-component vector of bool) 0:330 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:330 vector swizzle ( temp highp 3-component vector of int) 0:330 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 Constant: 0:330 1 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 Sequence 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 1 (const int) 0:330 Constant: 0:330 2 (const int) 0:330 Constant: 0:330 0 (const int) 0:330 0 (const int) 0:330 0 (const int) 0:331 move second child to first child ( temp highp 4-component vector of int) 0:331 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 Constant: 0:331 2 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 Convert bool to int ( temp highp 4-component vector of int) 0:331 subgroupExclusiveXor ( global 4-component vector of bool) 0:331 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:331 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 0 (const int) 0:331 0 (const int) 0:331 0 (const int) 0:331 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupBallot.comp.out000066400000000000000000005121141506534232700247400ustar00rootroot00000000000000glsl.es320.subgroupBallot.comp Shader version: 320 Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of uint) 0:18 'relMask' ( temp highp 4-component vector of uint) 0:21 add ( temp highp 4-component vector of uint) 0:20 add ( temp highp 4-component vector of uint) 0:19 add ( temp highp 4-component vector of uint) 0:18 add ( temp highp 4-component vector of uint) 0:18 'gl_SubgroupEqMask' ( in highp 4-component vector of uint SubgroupEqMask) 0:19 'gl_SubgroupGeMask' ( in highp 4-component vector of uint SubgroupGeMask) 0:20 'gl_SubgroupGtMask' ( in highp 4-component vector of uint SubgroupGtMask) 0:21 'gl_SubgroupLeMask' ( in highp 4-component vector of uint SubgroupLeMask) 0:22 'gl_SubgroupLtMask' ( in highp 4-component vector of uint SubgroupLtMask) 0:24 Sequence 0:24 move second child to first child ( temp highp 4-component vector of uint) 0:24 'result' ( temp highp 4-component vector of uint) 0:24 subgroupBallot ( global highp 4-component vector of uint) 0:24 Constant: 0:24 true (const bool) 0:26 move second child to first child ( temp highp uint) 0:26 direct index ( temp highp uint) 0:26 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 subgroupBallotBitCount ( global highp uint) 0:26 'result' ( temp highp 4-component vector of uint) 0:27 move second child to first child ( temp highp uint) 0:27 direct index ( temp highp uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Test condition and select ( temp highp uint) 0:27 Condition 0:27 subgroupBallotBitExtract ( global bool, operation at highp) 0:27 'result' ( temp highp 4-component vector of uint) 0:27 Constant: 0:27 0 (const uint) 0:27 true case 0:27 Constant: 0:27 1 (const uint) 0:27 false case 0:27 Constant: 0:27 0 (const uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 add ( temp highp uint) 0:28 subgroupBallotInclusiveBitCount ( global highp uint) 0:28 'result' ( temp highp 4-component vector of uint) 0:28 subgroupBallotExclusiveBitCount ( global highp uint) 0:28 'result' ( temp highp 4-component vector of uint) 0:29 move second child to first child ( temp highp uint) 0:29 direct index ( temp highp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 add ( temp highp uint) 0:29 subgroupBallotFindLSB ( global highp uint) 0:29 'result' ( temp highp 4-component vector of uint) 0:29 subgroupBallotFindMSB ( global highp uint) 0:29 'result' ( temp highp 4-component vector of uint) 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 logical-and ( temp bool) 0:31 Compare Equal ( temp bool) 0:31 'relMask' ( temp highp 4-component vector of uint) 0:31 'result' ( temp highp 4-component vector of uint) 0:31 subgroupInverseBallot ( global bool, operation at highp) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 true case 0:33 Sequence 0:33 move second child to first child ( temp highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupBroadcast ( global highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 3 (const uint) 0:34 move second child to first child ( temp highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 subgroupBroadcast ( global highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (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 3 (const uint) 0:35 move second child to first child ( temp highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupBroadcast ( global highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 3 (const uint) 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 subgroupBroadcast ( global highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 3 (const uint) 0:38 move second child to first child ( temp highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupBroadcast ( global highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 2 (const uint) 0:39 move second child to first child ( temp highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupBroadcast ( global highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 2 (const uint) 0:40 move second child to first child ( temp highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupBroadcast ( global highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 2 (const uint) 0:41 move second child to first child ( temp highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupBroadcast ( global highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const uint) 0:43 move second child to first child ( temp highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 3 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupBroadcast ( global highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const uint) 0:44 move second child to first child ( temp highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 3 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupBroadcast ( global highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 3 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupBroadcast ( global highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupBroadcast ( global highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const uint) 0:48 move second child to first child ( temp highp int) 0:48 direct index ( temp highp int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Convert bool to int ( temp highp int) 0:48 subgroupBroadcast ( global bool) 0:48 Compare Less Than ( temp bool) 0:48 direct index ( temp highp int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const uint) 0:49 move second child to first child ( temp highp 2-component vector of int) 0:49 vector swizzle ( temp highp 2-component vector of int) 0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Convert bool to int ( temp highp 2-component vector of int) 0:49 subgroupBroadcast ( global 2-component vector of bool) 0:49 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:49 vector swizzle ( temp highp 2-component vector of int) 0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 0 (const int) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp highp 3-component vector of int) 0:50 vector swizzle ( temp highp 3-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Convert bool to int ( temp highp 3-component vector of int) 0:50 subgroupBroadcast ( global 3-component vector of bool) 0:50 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:50 vector swizzle ( temp highp 3-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 0 (const int) 0:50 0 (const int) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp highp 4-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Convert bool to int ( temp highp 4-component vector of int) 0:51 subgroupBroadcast ( global 4-component vector of bool) 0:51 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 0 (const int) 0:51 0 (const int) 0:51 0 (const int) 0:51 Constant: 0:51 1 (const uint) 0:31 false case 0:55 Sequence 0:55 move second child to first child ( temp highp float) 0:55 direct index ( temp highp float) 0:55 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 subgroupBroadcastFirst ( global highp float) 0:55 direct index ( temp highp float) 0:55 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:56 move second child to first child ( temp highp 2-component vector of float) 0:56 vector swizzle ( temp highp 2-component vector of float) 0:56 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupBroadcastFirst ( global highp 2-component vector of float) 0:56 vector swizzle ( temp highp 2-component vector of float) 0:56 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:57 move second child to first child ( temp highp 3-component vector of float) 0:57 vector swizzle ( temp highp 3-component vector of float) 0:57 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupBroadcastFirst ( global highp 3-component vector of float) 0:57 vector swizzle ( temp highp 3-component vector of float) 0:57 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 Constant: 0:57 2 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:58 move second child to first child ( temp highp 4-component vector of float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupBroadcastFirst ( global highp 4-component vector of float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 3 (const int) 0:58 Constant: 0:58 0 (const int) 0:60 move second child to first child ( temp highp int) 0:60 direct index ( temp highp int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 subgroupBroadcastFirst ( global highp int) 0:60 direct index ( temp highp int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:61 move second child to first child ( temp highp 2-component vector of int) 0:61 vector swizzle ( temp highp 2-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 subgroupBroadcastFirst ( global highp 2-component vector of int) 0:61 vector swizzle ( temp highp 2-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:62 move second child to first child ( temp highp 3-component vector of int) 0:62 vector swizzle ( temp highp 3-component vector of int) 0:62 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupBroadcastFirst ( global highp 3-component vector of int) 0:62 vector swizzle ( temp highp 3-component vector of int) 0:62 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:63 move second child to first child ( temp highp 4-component vector of int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 subgroupBroadcastFirst ( global highp 4-component vector of int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 3 (const int) 0:63 Constant: 0:63 1 (const int) 0:65 move second child to first child ( temp highp uint) 0:65 direct index ( temp highp uint) 0:65 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 3 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 subgroupBroadcastFirst ( global highp uint) 0:65 direct index ( temp highp uint) 0:65 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:66 move second child to first child ( temp highp 2-component vector of uint) 0:66 vector swizzle ( temp highp 2-component vector of uint) 0:66 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 3 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupBroadcastFirst ( global highp 2-component vector of uint) 0:66 vector swizzle ( temp highp 2-component vector of uint) 0:66 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:67 move second child to first child ( temp highp 3-component vector of uint) 0:67 vector swizzle ( temp highp 3-component vector of uint) 0:67 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 Constant: 0:67 3 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 subgroupBroadcastFirst ( global highp 3-component vector of uint) 0:67 vector swizzle ( temp highp 3-component vector of uint) 0:67 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 Constant: 0:67 2 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:68 move second child to first child ( temp highp 4-component vector of uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 3 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 subgroupBroadcastFirst ( global highp 4-component vector of uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 3 (const int) 0:68 Constant: 0:68 2 (const int) 0:70 move second child to first child ( temp highp int) 0:70 direct index ( temp highp int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Convert bool to int ( temp highp int) 0:70 subgroupBroadcastFirst ( global bool) 0:70 Compare Less Than ( temp bool) 0:70 direct index ( temp highp int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0 (const int) 0:71 move second child to first child ( temp highp 2-component vector of int) 0:71 vector swizzle ( temp highp 2-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Convert bool to int ( temp highp 2-component vector of int) 0:71 subgroupBroadcastFirst ( global 2-component vector of bool) 0:71 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:71 vector swizzle ( temp highp 2-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 0 (const int) 0:72 move second child to first child ( temp highp 3-component vector of int) 0:72 vector swizzle ( temp highp 3-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Convert bool to int ( temp highp 3-component vector of int) 0:72 subgroupBroadcastFirst ( global 3-component vector of bool) 0:72 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:72 vector swizzle ( temp highp 3-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:73 move second child to first child ( temp highp 4-component vector of int) 0:73 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Convert bool to int ( temp highp 4-component vector of int) 0:73 subgroupBroadcastFirst ( global 4-component vector of bool) 0:73 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:73 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 0 (const int) 0:73 0 (const int) 0:73 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of uint) 0:18 'relMask' ( temp highp 4-component vector of uint) 0:21 add ( temp highp 4-component vector of uint) 0:20 add ( temp highp 4-component vector of uint) 0:19 add ( temp highp 4-component vector of uint) 0:18 add ( temp highp 4-component vector of uint) 0:18 'gl_SubgroupEqMask' ( in highp 4-component vector of uint SubgroupEqMask) 0:19 'gl_SubgroupGeMask' ( in highp 4-component vector of uint SubgroupGeMask) 0:20 'gl_SubgroupGtMask' ( in highp 4-component vector of uint SubgroupGtMask) 0:21 'gl_SubgroupLeMask' ( in highp 4-component vector of uint SubgroupLeMask) 0:22 'gl_SubgroupLtMask' ( in highp 4-component vector of uint SubgroupLtMask) 0:24 Sequence 0:24 move second child to first child ( temp highp 4-component vector of uint) 0:24 'result' ( temp highp 4-component vector of uint) 0:24 subgroupBallot ( global highp 4-component vector of uint) 0:24 Constant: 0:24 true (const bool) 0:26 move second child to first child ( temp highp uint) 0:26 direct index ( temp highp uint) 0:26 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 subgroupBallotBitCount ( global highp uint) 0:26 'result' ( temp highp 4-component vector of uint) 0:27 move second child to first child ( temp highp uint) 0:27 direct index ( temp highp uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Test condition and select ( temp highp uint) 0:27 Condition 0:27 subgroupBallotBitExtract ( global bool, operation at highp) 0:27 'result' ( temp highp 4-component vector of uint) 0:27 Constant: 0:27 0 (const uint) 0:27 true case 0:27 Constant: 0:27 1 (const uint) 0:27 false case 0:27 Constant: 0:27 0 (const uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 add ( temp highp uint) 0:28 subgroupBallotInclusiveBitCount ( global highp uint) 0:28 'result' ( temp highp 4-component vector of uint) 0:28 subgroupBallotExclusiveBitCount ( global highp uint) 0:28 'result' ( temp highp 4-component vector of uint) 0:29 move second child to first child ( temp highp uint) 0:29 direct index ( temp highp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 add ( temp highp uint) 0:29 subgroupBallotFindLSB ( global highp uint) 0:29 'result' ( temp highp 4-component vector of uint) 0:29 subgroupBallotFindMSB ( global highp uint) 0:29 'result' ( temp highp 4-component vector of uint) 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 logical-and ( temp bool) 0:31 Compare Equal ( temp bool) 0:31 'relMask' ( temp highp 4-component vector of uint) 0:31 'result' ( temp highp 4-component vector of uint) 0:31 subgroupInverseBallot ( global bool, operation at highp) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 true case 0:33 Sequence 0:33 move second child to first child ( temp highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupBroadcast ( global highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 3 (const uint) 0:34 move second child to first child ( temp highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 subgroupBroadcast ( global highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (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 3 (const uint) 0:35 move second child to first child ( temp highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupBroadcast ( global highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 3 (const uint) 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 subgroupBroadcast ( global highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 3 (const uint) 0:38 move second child to first child ( temp highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupBroadcast ( global highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 2 (const uint) 0:39 move second child to first child ( temp highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupBroadcast ( global highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 2 (const uint) 0:40 move second child to first child ( temp highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupBroadcast ( global highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 2 (const uint) 0:41 move second child to first child ( temp highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupBroadcast ( global highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 2 (const uint) 0:43 move second child to first child ( temp highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 3 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupBroadcast ( global highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const uint) 0:44 move second child to first child ( temp highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 3 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupBroadcast ( global highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 3 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupBroadcast ( global highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupBroadcast ( global highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const uint) 0:48 move second child to first child ( temp highp int) 0:48 direct index ( temp highp int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Convert bool to int ( temp highp int) 0:48 subgroupBroadcast ( global bool) 0:48 Compare Less Than ( temp bool) 0:48 direct index ( temp highp int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const uint) 0:49 move second child to first child ( temp highp 2-component vector of int) 0:49 vector swizzle ( temp highp 2-component vector of int) 0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Convert bool to int ( temp highp 2-component vector of int) 0:49 subgroupBroadcast ( global 2-component vector of bool) 0:49 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:49 vector swizzle ( temp highp 2-component vector of int) 0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 0 (const int) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp highp 3-component vector of int) 0:50 vector swizzle ( temp highp 3-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Convert bool to int ( temp highp 3-component vector of int) 0:50 subgroupBroadcast ( global 3-component vector of bool) 0:50 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:50 vector swizzle ( temp highp 3-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 0 (const int) 0:50 0 (const int) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp highp 4-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Convert bool to int ( temp highp 4-component vector of int) 0:51 subgroupBroadcast ( global 4-component vector of bool) 0:51 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 0 (const int) 0:51 0 (const int) 0:51 0 (const int) 0:51 Constant: 0:51 1 (const uint) 0:31 false case 0:55 Sequence 0:55 move second child to first child ( temp highp float) 0:55 direct index ( temp highp float) 0:55 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 subgroupBroadcastFirst ( global highp float) 0:55 direct index ( temp highp float) 0:55 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:56 move second child to first child ( temp highp 2-component vector of float) 0:56 vector swizzle ( temp highp 2-component vector of float) 0:56 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupBroadcastFirst ( global highp 2-component vector of float) 0:56 vector swizzle ( temp highp 2-component vector of float) 0:56 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:57 move second child to first child ( temp highp 3-component vector of float) 0:57 vector swizzle ( temp highp 3-component vector of float) 0:57 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupBroadcastFirst ( global highp 3-component vector of float) 0:57 vector swizzle ( temp highp 3-component vector of float) 0:57 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 Constant: 0:57 2 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:58 move second child to first child ( temp highp 4-component vector of float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupBroadcastFirst ( global highp 4-component vector of float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 3 (const int) 0:58 Constant: 0:58 0 (const int) 0:60 move second child to first child ( temp highp int) 0:60 direct index ( temp highp int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 subgroupBroadcastFirst ( global highp int) 0:60 direct index ( temp highp int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:61 move second child to first child ( temp highp 2-component vector of int) 0:61 vector swizzle ( temp highp 2-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 subgroupBroadcastFirst ( global highp 2-component vector of int) 0:61 vector swizzle ( temp highp 2-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:62 move second child to first child ( temp highp 3-component vector of int) 0:62 vector swizzle ( temp highp 3-component vector of int) 0:62 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupBroadcastFirst ( global highp 3-component vector of int) 0:62 vector swizzle ( temp highp 3-component vector of int) 0:62 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:63 move second child to first child ( temp highp 4-component vector of int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 subgroupBroadcastFirst ( global highp 4-component vector of int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 3 (const int) 0:63 Constant: 0:63 1 (const int) 0:65 move second child to first child ( temp highp uint) 0:65 direct index ( temp highp uint) 0:65 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 3 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 subgroupBroadcastFirst ( global highp uint) 0:65 direct index ( temp highp uint) 0:65 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:66 move second child to first child ( temp highp 2-component vector of uint) 0:66 vector swizzle ( temp highp 2-component vector of uint) 0:66 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 3 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupBroadcastFirst ( global highp 2-component vector of uint) 0:66 vector swizzle ( temp highp 2-component vector of uint) 0:66 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:67 move second child to first child ( temp highp 3-component vector of uint) 0:67 vector swizzle ( temp highp 3-component vector of uint) 0:67 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 Constant: 0:67 3 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 subgroupBroadcastFirst ( global highp 3-component vector of uint) 0:67 vector swizzle ( temp highp 3-component vector of uint) 0:67 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 Constant: 0:67 2 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:68 move second child to first child ( temp highp 4-component vector of uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 3 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 subgroupBroadcastFirst ( global highp 4-component vector of uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 3 (const int) 0:68 Constant: 0:68 2 (const int) 0:70 move second child to first child ( temp highp int) 0:70 direct index ( temp highp int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Convert bool to int ( temp highp int) 0:70 subgroupBroadcastFirst ( global bool) 0:70 Compare Less Than ( temp bool) 0:70 direct index ( temp highp int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0 (const int) 0:71 move second child to first child ( temp highp 2-component vector of int) 0:71 vector swizzle ( temp highp 2-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Convert bool to int ( temp highp 2-component vector of int) 0:71 subgroupBroadcastFirst ( global 2-component vector of bool) 0:71 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:71 vector swizzle ( temp highp 2-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 0 (const int) 0:72 move second child to first child ( temp highp 3-component vector of int) 0:72 vector swizzle ( temp highp 3-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Convert bool to int ( temp highp 3-component vector of int) 0:72 subgroupBroadcastFirst ( global 3-component vector of bool) 0:72 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:72 vector swizzle ( temp highp 3-component vector of int) 0:72 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 0 (const int) 0:72 0 (const int) 0:72 0 (const int) 0:73 move second child to first child ( temp highp 4-component vector of int) 0:73 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Convert bool to int ( temp highp 4-component vector of int) 0:73 subgroupBroadcastFirst ( global 4-component vector of bool) 0:73 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:73 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 0 (const int) 0:73 0 (const int) 0:73 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupBallotNeg.comp.out000066400000000000000000000435041506534232700253740ustar00rootroot00000000000000glsl.es320.subgroupBallotNeg.comp ERROR: 0:31: 'id' : argument must be compile-time constant ERROR: 1 compilation errors. No code generated. Shader version: 450 Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) ERROR: node is still EOpNull! 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp uint) 0:16 'invocation' ( temp uint) 0:16 mod ( temp uint) 0:16 add ( temp uint) 0:16 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of uint) 0:18 'relMask' ( temp 4-component vector of uint) 0:21 add ( temp 4-component vector of uint) 0:20 add ( temp 4-component vector of uint) 0:19 add ( temp 4-component vector of uint) 0:18 add ( temp 4-component vector of uint) 0:18 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:19 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:20 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:21 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:22 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of uint) 0:24 'result' ( temp 4-component vector of uint) 0:24 subgroupBallot ( global 4-component vector of uint) 0:24 Constant: 0:24 true (const bool) 0:26 move second child to first child ( temp uint) 0:26 direct index ( temp uint) 0:26 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 subgroupBallotBitCount ( global uint) 0:26 'result' ( temp 4-component vector of uint) 0:27 move second child to first child ( temp uint) 0:27 direct index ( temp uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Test condition and select ( temp uint) 0:27 Condition 0:27 subgroupBallotBitExtract ( global bool) 0:27 'result' ( temp 4-component vector of uint) 0:27 Constant: 0:27 0 (const uint) 0:27 true case 0:27 Constant: 0:27 1 (const uint) 0:27 false case 0:27 Constant: 0:27 0 (const uint) 0:28 move second child to first child ( temp uint) 0:28 direct index ( temp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 add ( temp uint) 0:28 subgroupBallotInclusiveBitCount ( global uint) 0:28 'result' ( temp 4-component vector of uint) 0:28 subgroupBallotExclusiveBitCount ( global uint) 0:28 'result' ( temp 4-component vector of uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 add ( temp uint) 0:29 subgroupBallotFindLSB ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:29 subgroupBallotFindMSB ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:31 move second child to first child ( temp float) 0:31 direct index ( temp float) 0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 subgroupBroadcast ( global float) 0:31 direct index ( temp float) 0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 'invocation' ( temp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) Linked compute stage: Shader version: 450 Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) ERROR: node is still EOpNull! 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp uint) 0:16 'invocation' ( temp uint) 0:16 mod ( temp uint) 0:16 add ( temp uint) 0:16 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of uint) 0:18 'relMask' ( temp 4-component vector of uint) 0:21 add ( temp 4-component vector of uint) 0:20 add ( temp 4-component vector of uint) 0:19 add ( temp 4-component vector of uint) 0:18 add ( temp 4-component vector of uint) 0:18 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) 0:19 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) 0:20 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) 0:21 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) 0:22 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of uint) 0:24 'result' ( temp 4-component vector of uint) 0:24 subgroupBallot ( global 4-component vector of uint) 0:24 Constant: 0:24 true (const bool) 0:26 move second child to first child ( temp uint) 0:26 direct index ( temp uint) 0:26 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 subgroupBallotBitCount ( global uint) 0:26 'result' ( temp 4-component vector of uint) 0:27 move second child to first child ( temp uint) 0:27 direct index ( temp uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Test condition and select ( temp uint) 0:27 Condition 0:27 subgroupBallotBitExtract ( global bool) 0:27 'result' ( temp 4-component vector of uint) 0:27 Constant: 0:27 0 (const uint) 0:27 true case 0:27 Constant: 0:27 1 (const uint) 0:27 false case 0:27 Constant: 0:27 0 (const uint) 0:28 move second child to first child ( temp uint) 0:28 direct index ( temp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 add ( temp uint) 0:28 subgroupBallotInclusiveBitCount ( global uint) 0:28 'result' ( temp 4-component vector of uint) 0:28 subgroupBallotExclusiveBitCount ( global uint) 0:28 'result' ( temp 4-component vector of uint) 0:29 move second child to first child ( temp uint) 0:29 direct index ( temp uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 add ( temp uint) 0:29 subgroupBallotFindLSB ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:29 subgroupBallotFindMSB ( global uint) 0:29 'result' ( temp 4-component vector of uint) 0:31 move second child to first child ( temp float) 0:31 direct index ( temp float) 0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 subgroupBroadcast ( global float) 0:31 direct index ( temp float) 0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 'invocation' ( temp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupBasic.comp.out000066400000000000000000000147151506534232700245500ustar00rootroot00000000000000glsl.es320.subgroupBasic.comp Shader version: 320 Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) 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 highp int) 0:14 indirect index (layout( column_major shared) temp highp int) 0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int) 0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) 0:14 Constant: 0:14 0 (const int) 0:14 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:14 Constant: 0:14 1 (const int) 0:15 move second child to first child ( temp highp int) 0:15 indirect index (layout( column_major shared) temp highp int) 0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int) 0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) 0:15 Constant: 0:15 0 (const int) 0:15 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:15 Constant: 0:15 1 (const int) 0:16 move second child to first child ( temp highp int) 0:16 indirect index (layout( column_major shared) temp highp int) 0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int) 0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) 0:16 Constant: 0:16 0 (const int) 0:16 'gl_NumSubgroups' ( in highp uint NumSubgroups) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp highp int) 0:17 indirect index (layout( column_major shared) temp highp int) 0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int) 0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) 0:17 Constant: 0:17 0 (const int) 0:17 'gl_SubgroupID' ( in highp uint SubgroupID) 0:17 Test condition and select ( temp highp int) 0:17 Condition 0:17 subgroupElect ( global bool) 0:17 true case 0:17 Constant: 0:17 1 (const int) 0:17 false case 0:17 Constant: 0:17 0 (const int) 0:18 subgroupBarrier ( global void) 0:19 subgroupMemoryBarrier ( global void) 0:20 subgroupMemoryBarrierBuffer ( global void) 0:21 subgroupMemoryBarrierShared ( global void) 0:22 subgroupMemoryBarrierImage ( global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic local_size = (8, 8, 1) 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 highp int) 0:14 indirect index (layout( column_major shared) temp highp int) 0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int) 0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) 0:14 Constant: 0:14 0 (const int) 0:14 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:14 Constant: 0:14 1 (const int) 0:15 move second child to first child ( temp highp int) 0:15 indirect index (layout( column_major shared) temp highp int) 0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int) 0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) 0:15 Constant: 0:15 0 (const int) 0:15 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:15 Constant: 0:15 1 (const int) 0:16 move second child to first child ( temp highp int) 0:16 indirect index (layout( column_major shared) temp highp int) 0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int) 0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) 0:16 Constant: 0:16 0 (const int) 0:16 'gl_NumSubgroups' ( in highp uint NumSubgroups) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp highp int) 0:17 indirect index (layout( column_major shared) temp highp int) 0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int) 0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) 0:17 Constant: 0:17 0 (const int) 0:17 'gl_SubgroupID' ( in highp uint SubgroupID) 0:17 Test condition and select ( temp highp int) 0:17 Condition 0:17 subgroupElect ( global bool) 0:17 true case 0:17 Constant: 0:17 1 (const int) 0:17 false case 0:17 Constant: 0:17 0 (const int) 0:18 subgroupBarrier ( global void) 0:19 subgroupMemoryBarrier ( global void) 0:20 subgroupMemoryBarrierBuffer ( global void) 0:21 subgroupMemoryBarrierShared ( global void) 0:22 subgroupMemoryBarrierImage ( global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupClustered.comp.out000066400000000000000000013515331506534232700254640ustar00rootroot00000000000000glsl.es320.subgroupClustered.comp Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_clustered local_size = (8, 1, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupClusteredAdd ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 1 (const uint) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupClusteredAdd ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 1 (const uint) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupClusteredAdd ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 1 (const uint) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupClusteredAdd ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const uint) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupClusteredAdd ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const uint) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupClusteredAdd ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const uint) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupClusteredAdd ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const uint) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupClusteredAdd ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupClusteredAdd ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const uint) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupClusteredAdd ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const uint) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupClusteredAdd ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const uint) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupClusteredAdd ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const uint) 0:33 move second child to first child ( temp highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 3 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupClusteredMul ( global highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const uint) 0:34 move second child to first child ( temp highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 subgroupClusteredMul ( global highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (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 1 (const uint) 0:35 move second child to first child ( temp highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupClusteredMul ( global highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 subgroupClusteredMul ( global highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const uint) 0:38 move second child to first child ( temp highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupClusteredMul ( global highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const uint) 0:39 move second child to first child ( temp highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupClusteredMul ( global highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const uint) 0:40 move second child to first child ( temp highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupClusteredMul ( global highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const uint) 0:41 move second child to first child ( temp highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupClusteredMul ( global highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const uint) 0:43 move second child to first child ( temp highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupClusteredMul ( global highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const uint) 0:44 move second child to first child ( temp highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupClusteredMul ( global highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupClusteredMul ( global highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupClusteredMul ( global highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const uint) 0:48 move second child to first child ( temp highp float) 0:48 direct index ( temp highp float) 0:48 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupClusteredMin ( global highp float) 0:48 direct index ( temp highp float) 0:48 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const uint) 0:49 move second child to first child ( temp highp 2-component vector of float) 0:49 vector swizzle ( temp highp 2-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupClusteredMin ( global highp 2-component vector of float) 0:49 vector swizzle ( temp highp 2-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp highp 3-component vector of float) 0:50 vector swizzle ( temp highp 3-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupClusteredMin ( global highp 3-component vector of float) 0:50 vector swizzle ( temp highp 3-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp highp 4-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 subgroupClusteredMin ( global highp 4-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const uint) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 subgroupClusteredMin ( global highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const uint) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 subgroupClusteredMin ( global highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 subgroupClusteredMin ( global highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupClusteredMin ( global highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const uint) 0:58 move second child to first child ( temp highp uint) 0:58 direct index ( temp highp uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupClusteredMin ( global highp uint) 0:58 direct index ( temp highp uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const uint) 0:59 move second child to first child ( temp highp 2-component vector of uint) 0:59 vector swizzle ( temp highp 2-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupClusteredMin ( global highp 2-component vector of uint) 0:59 vector swizzle ( temp highp 2-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 1 (const uint) 0:60 move second child to first child ( temp highp 3-component vector of uint) 0:60 vector swizzle ( temp highp 3-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 subgroupClusteredMin ( global highp 3-component vector of uint) 0:60 vector swizzle ( temp highp 3-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 1 (const uint) 0:61 move second child to first child ( temp highp 4-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupClusteredMin ( global highp 4-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const uint) 0:63 move second child to first child ( temp highp float) 0:63 direct index ( temp highp float) 0:63 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 subgroupClusteredMax ( global highp float) 0:63 direct index ( temp highp float) 0:63 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const uint) 0:64 move second child to first child ( temp highp 2-component vector of float) 0:64 vector swizzle ( temp highp 2-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 subgroupClusteredMax ( global highp 2-component vector of float) 0:64 vector swizzle ( temp highp 2-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 1 (const uint) 0:65 move second child to first child ( temp highp 3-component vector of float) 0:65 vector swizzle ( temp highp 3-component vector of float) 0:65 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 subgroupClusteredMax ( global highp 3-component vector of float) 0:65 vector swizzle ( temp highp 3-component vector of float) 0:65 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 1 (const uint) 0:66 move second child to first child ( temp highp 4-component vector of float) 0:66 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 subgroupClusteredMax ( global highp 4-component vector of float) 0:66 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 3 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const uint) 0:68 move second child to first child ( temp highp int) 0:68 direct index ( temp highp int) 0:68 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 subgroupClusteredMax ( global highp int) 0:68 direct index ( temp highp int) 0:68 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const uint) 0:69 move second child to first child ( temp highp 2-component vector of int) 0:69 vector swizzle ( temp highp 2-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 subgroupClusteredMax ( global highp 2-component vector of int) 0:69 vector swizzle ( temp highp 2-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 1 (const uint) 0:70 move second child to first child ( temp highp 3-component vector of int) 0:70 vector swizzle ( temp highp 3-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 subgroupClusteredMax ( global highp 3-component vector of int) 0:70 vector swizzle ( temp highp 3-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const uint) 0:71 move second child to first child ( temp highp 4-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupClusteredMax ( global highp 4-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 3 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 1 (const uint) 0:73 move second child to first child ( temp highp uint) 0:73 direct index ( temp highp uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 3 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 subgroupClusteredMax ( global highp uint) 0:73 direct index ( temp highp uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const uint) 0:74 move second child to first child ( temp highp 2-component vector of uint) 0:74 vector swizzle ( temp highp 2-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 subgroupClusteredMax ( global highp 2-component vector of uint) 0:74 vector swizzle ( temp highp 2-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 1 (const uint) 0:75 move second child to first child ( temp highp 3-component vector of uint) 0:75 vector swizzle ( temp highp 3-component vector of uint) 0:75 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 3 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 subgroupClusteredMax ( global highp 3-component vector of uint) 0:75 vector swizzle ( temp highp 3-component vector of uint) 0:75 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 1 (const uint) 0:76 move second child to first child ( temp highp 4-component vector of uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupClusteredMax ( global highp 4-component vector of uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 1 (const uint) 0:78 move second child to first child ( temp highp int) 0:78 direct index ( temp highp int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 subgroupClusteredAnd ( global highp int) 0:78 direct index ( temp highp int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const uint) 0:79 move second child to first child ( temp highp 2-component vector of int) 0:79 vector swizzle ( temp highp 2-component vector of int) 0:79 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupClusteredAnd ( global highp 2-component vector of int) 0:79 vector swizzle ( temp highp 2-component vector of int) 0:79 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 1 (const uint) 0:80 move second child to first child ( temp highp 3-component vector of int) 0:80 vector swizzle ( temp highp 3-component vector of int) 0:80 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 subgroupClusteredAnd ( global highp 3-component vector of int) 0:80 vector swizzle ( temp highp 3-component vector of int) 0:80 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 1 (const uint) 0:81 move second child to first child ( temp highp 4-component vector of int) 0:81 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupClusteredAnd ( global highp 4-component vector of int) 0:81 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 1 (const uint) 0:83 move second child to first child ( temp highp uint) 0:83 direct index ( temp highp uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 subgroupClusteredAnd ( global highp uint) 0:83 direct index ( temp highp uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const uint) 0:84 move second child to first child ( temp highp 2-component vector of uint) 0:84 vector swizzle ( temp highp 2-component vector of uint) 0:84 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 subgroupClusteredAnd ( global highp 2-component vector of uint) 0:84 vector swizzle ( temp highp 2-component vector of uint) 0:84 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 1 (const uint) 0:85 move second child to first child ( temp highp 3-component vector of uint) 0:85 vector swizzle ( temp highp 3-component vector of uint) 0:85 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 subgroupClusteredAnd ( global highp 3-component vector of uint) 0:85 vector swizzle ( temp highp 3-component vector of uint) 0:85 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 1 (const uint) 0:86 move second child to first child ( temp highp 4-component vector of uint) 0:86 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupClusteredAnd ( global highp 4-component vector of uint) 0:86 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 1 (const uint) 0:88 move second child to first child ( temp highp int) 0:88 direct index ( temp highp int) 0:88 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Convert bool to int ( temp highp int) 0:88 subgroupClusteredAnd ( global bool) 0:88 Compare Less Than ( temp bool) 0:88 direct index ( temp highp int) 0:88 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const uint) 0:89 move second child to first child ( temp highp 2-component vector of int) 0:89 vector swizzle ( temp highp 2-component vector of int) 0:89 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Convert bool to int ( temp highp 2-component vector of int) 0:89 subgroupClusteredAnd ( global 2-component vector of bool) 0:89 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:89 vector swizzle ( temp highp 2-component vector of int) 0:89 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 0 (const int) 0:89 Constant: 0:89 1 (const uint) 0:90 move second child to first child ( temp highp 3-component vector of int) 0:90 vector swizzle ( temp highp 3-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Convert bool to int ( temp highp 3-component vector of int) 0:90 subgroupClusteredAnd ( global 3-component vector of bool) 0:90 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:90 vector swizzle ( temp highp 3-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 0 (const int) 0:90 0 (const int) 0:90 Constant: 0:90 1 (const uint) 0:91 move second child to first child ( temp highp 4-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Convert bool to int ( temp highp 4-component vector of int) 0:91 subgroupClusteredAnd ( global 4-component vector of bool) 0:91 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:91 Constant: 0:91 1 (const uint) 0:93 move second child to first child ( temp highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 3 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 subgroupClusteredOr ( global highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const uint) 0:94 move second child to first child ( temp highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 subgroupClusteredOr ( global highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const uint) 0:95 move second child to first child ( temp highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 3 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 subgroupClusteredOr ( global highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 1 (const uint) 0:96 move second child to first child ( temp highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupClusteredOr ( global highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 1 (const uint) 0:98 move second child to first child ( temp highp uint) 0:98 direct index ( temp highp uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 subgroupClusteredOr ( global highp uint) 0:98 direct index ( temp highp uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 1 (const uint) 0:99 move second child to first child ( temp highp 2-component vector of uint) 0:99 vector swizzle ( temp highp 2-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 Sequence 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 subgroupClusteredOr ( global highp 2-component vector of uint) 0:99 vector swizzle ( temp highp 2-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 Sequence 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 1 (const uint) 0:100 move second child to first child ( temp highp 3-component vector of uint) 0:100 vector swizzle ( temp highp 3-component vector of uint) 0:100 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 subgroupClusteredOr ( global highp 3-component vector of uint) 0:100 vector swizzle ( temp highp 3-component vector of uint) 0:100 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 1 (const uint) 0:101 move second child to first child ( temp highp 4-component vector of uint) 0:101 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupClusteredOr ( global highp 4-component vector of uint) 0:101 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 3 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const uint) 0:103 move second child to first child ( temp highp int) 0:103 direct index ( temp highp int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Convert bool to int ( temp highp int) 0:103 subgroupClusteredOr ( global bool) 0:103 Compare Less Than ( temp bool) 0:103 direct index ( temp highp int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 1 (const uint) 0:104 move second child to first child ( temp highp 2-component vector of int) 0:104 vector swizzle ( temp highp 2-component vector of int) 0:104 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Sequence 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Convert bool to int ( temp highp 2-component vector of int) 0:104 subgroupClusteredOr ( global 2-component vector of bool) 0:104 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:104 vector swizzle ( temp highp 2-component vector of int) 0:104 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Sequence 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 0 (const int) 0:104 Constant: 0:104 1 (const uint) 0:105 move second child to first child ( temp highp 3-component vector of int) 0:105 vector swizzle ( temp highp 3-component vector of int) 0:105 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Convert bool to int ( temp highp 3-component vector of int) 0:105 subgroupClusteredOr ( global 3-component vector of bool) 0:105 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:105 vector swizzle ( temp highp 3-component vector of int) 0:105 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 0 (const int) 0:105 0 (const int) 0:105 Constant: 0:105 1 (const uint) 0:106 move second child to first child ( temp highp 4-component vector of int) 0:106 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Convert bool to int ( temp highp 4-component vector of int) 0:106 subgroupClusteredOr ( global 4-component vector of bool) 0:106 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:106 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 0 (const int) 0:106 0 (const int) 0:106 0 (const int) 0:106 Constant: 0:106 1 (const uint) 0:108 move second child to first child ( temp highp int) 0:108 direct index ( temp highp int) 0:108 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 2 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 0 (const int) 0:108 subgroupClusteredXor ( global highp int) 0:108 direct index ( temp highp int) 0:108 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const uint) 0:109 move second child to first child ( temp highp 2-component vector of int) 0:109 vector swizzle ( temp highp 2-component vector of int) 0:109 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 Constant: 0:109 2 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Sequence 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 subgroupClusteredXor ( global highp 2-component vector of int) 0:109 vector swizzle ( temp highp 2-component vector of int) 0:109 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Sequence 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 1 (const uint) 0:110 move second child to first child ( temp highp 3-component vector of int) 0:110 vector swizzle ( temp highp 3-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 2 (const int) 0:110 subgroupClusteredXor ( global highp 3-component vector of int) 0:110 vector swizzle ( temp highp 3-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const uint) 0:111 move second child to first child ( temp highp 4-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 subgroupClusteredXor ( global highp 4-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 3 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const uint) 0:113 move second child to first child ( temp highp uint) 0:113 direct index ( temp highp uint) 0:113 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 3 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 0 (const int) 0:113 subgroupClusteredXor ( global highp uint) 0:113 direct index ( temp highp uint) 0:113 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 1 (const uint) 0:114 move second child to first child ( temp highp 2-component vector of uint) 0:114 vector swizzle ( temp highp 2-component vector of uint) 0:114 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 Constant: 0:114 3 (const int) 0:114 Constant: 0:114 2 (const int) 0:114 Sequence 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 subgroupClusteredXor ( global highp 2-component vector of uint) 0:114 vector swizzle ( temp highp 2-component vector of uint) 0:114 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 2 (const int) 0:114 Sequence 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 1 (const uint) 0:115 move second child to first child ( temp highp 3-component vector of uint) 0:115 vector swizzle ( temp highp 3-component vector of uint) 0:115 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 3 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 subgroupClusteredXor ( global highp 3-component vector of uint) 0:115 vector swizzle ( temp highp 3-component vector of uint) 0:115 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 2 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Constant: 0:115 1 (const uint) 0:116 move second child to first child ( temp highp 4-component vector of uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 3 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 subgroupClusteredXor ( global highp 4-component vector of uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 3 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 1 (const uint) 0:118 move second child to first child ( temp highp int) 0:118 direct index ( temp highp int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Convert bool to int ( temp highp int) 0:118 subgroupClusteredXor ( global bool) 0:118 Compare Less Than ( temp bool) 0:118 direct index ( temp highp int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const uint) 0:119 move second child to first child ( temp highp 2-component vector of int) 0:119 vector swizzle ( temp highp 2-component vector of int) 0:119 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Sequence 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Convert bool to int ( temp highp 2-component vector of int) 0:119 subgroupClusteredXor ( global 2-component vector of bool) 0:119 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:119 vector swizzle ( temp highp 2-component vector of int) 0:119 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 Constant: 0:119 1 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Sequence 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 0 (const int) 0:119 Constant: 0:119 1 (const uint) 0:120 move second child to first child ( temp highp 3-component vector of int) 0:120 vector swizzle ( temp highp 3-component vector of int) 0:120 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Convert bool to int ( temp highp 3-component vector of int) 0:120 subgroupClusteredXor ( global 3-component vector of bool) 0:120 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:120 vector swizzle ( temp highp 3-component vector of int) 0:120 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 0 (const int) 0:120 0 (const int) 0:120 Constant: 0:120 1 (const uint) 0:121 move second child to first child ( temp highp 4-component vector of int) 0:121 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Convert bool to int ( temp highp 4-component vector of int) 0:121 subgroupClusteredXor ( global 4-component vector of bool) 0:121 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:121 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 0 (const int) 0:121 0 (const int) 0:121 0 (const int) 0:121 0 (const int) 0:121 Constant: 0:121 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_clustered local_size = (8, 1, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupClusteredAdd ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 1 (const uint) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupClusteredAdd ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 1 (const uint) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupClusteredAdd ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 1 (const uint) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupClusteredAdd ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const uint) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupClusteredAdd ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const uint) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupClusteredAdd ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const uint) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupClusteredAdd ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const uint) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupClusteredAdd ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupClusteredAdd ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const uint) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupClusteredAdd ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const uint) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupClusteredAdd ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const uint) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupClusteredAdd ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const uint) 0:33 move second child to first child ( temp highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 3 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupClusteredMul ( global highp float) 0:33 direct index ( temp highp float) 0:33 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const uint) 0:34 move second child to first child ( temp highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 subgroupClusteredMul ( global highp 2-component vector of float) 0:34 vector swizzle ( temp highp 2-component vector of float) 0:34 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (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 1 (const uint) 0:35 move second child to first child ( temp highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 3 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupClusteredMul ( global highp 3-component vector of float) 0:35 vector swizzle ( temp highp 3-component vector of float) 0:35 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 subgroupClusteredMul ( global highp 4-component vector of float) 0:36 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const uint) 0:38 move second child to first child ( temp highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupClusteredMul ( global highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const uint) 0:39 move second child to first child ( temp highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupClusteredMul ( global highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const uint) 0:40 move second child to first child ( temp highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupClusteredMul ( global highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 1 (const uint) 0:41 move second child to first child ( temp highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupClusteredMul ( global highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const uint) 0:43 move second child to first child ( temp highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupClusteredMul ( global highp uint) 0:43 direct index ( temp highp uint) 0:43 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const uint) 0:44 move second child to first child ( temp highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupClusteredMul ( global highp 2-component vector of uint) 0:44 vector swizzle ( temp highp 2-component vector of uint) 0:44 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupClusteredMul ( global highp 3-component vector of uint) 0:45 vector swizzle ( temp highp 3-component vector of uint) 0:45 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 subgroupClusteredMul ( global highp 4-component vector of uint) 0:46 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const uint) 0:48 move second child to first child ( temp highp float) 0:48 direct index ( temp highp float) 0:48 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupClusteredMin ( global highp float) 0:48 direct index ( temp highp float) 0:48 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const uint) 0:49 move second child to first child ( temp highp 2-component vector of float) 0:49 vector swizzle ( temp highp 2-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupClusteredMin ( global highp 2-component vector of float) 0:49 vector swizzle ( temp highp 2-component vector of float) 0:49 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp highp 3-component vector of float) 0:50 vector swizzle ( temp highp 3-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupClusteredMin ( global highp 3-component vector of float) 0:50 vector swizzle ( temp highp 3-component vector of float) 0:50 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp highp 4-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 subgroupClusteredMin ( global highp 4-component vector of float) 0:51 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const uint) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 subgroupClusteredMin ( global highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const uint) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 subgroupClusteredMin ( global highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 subgroupClusteredMin ( global highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupClusteredMin ( global highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const uint) 0:58 move second child to first child ( temp highp uint) 0:58 direct index ( temp highp uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupClusteredMin ( global highp uint) 0:58 direct index ( temp highp uint) 0:58 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const uint) 0:59 move second child to first child ( temp highp 2-component vector of uint) 0:59 vector swizzle ( temp highp 2-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupClusteredMin ( global highp 2-component vector of uint) 0:59 vector swizzle ( temp highp 2-component vector of uint) 0:59 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 1 (const uint) 0:60 move second child to first child ( temp highp 3-component vector of uint) 0:60 vector swizzle ( temp highp 3-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 subgroupClusteredMin ( global highp 3-component vector of uint) 0:60 vector swizzle ( temp highp 3-component vector of uint) 0:60 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 1 (const uint) 0:61 move second child to first child ( temp highp 4-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 subgroupClusteredMin ( global highp 4-component vector of uint) 0:61 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const uint) 0:63 move second child to first child ( temp highp float) 0:63 direct index ( temp highp float) 0:63 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 subgroupClusteredMax ( global highp float) 0:63 direct index ( temp highp float) 0:63 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const uint) 0:64 move second child to first child ( temp highp 2-component vector of float) 0:64 vector swizzle ( temp highp 2-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 subgroupClusteredMax ( global highp 2-component vector of float) 0:64 vector swizzle ( temp highp 2-component vector of float) 0:64 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 0 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 1 (const uint) 0:65 move second child to first child ( temp highp 3-component vector of float) 0:65 vector swizzle ( temp highp 3-component vector of float) 0:65 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 subgroupClusteredMax ( global highp 3-component vector of float) 0:65 vector swizzle ( temp highp 3-component vector of float) 0:65 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 1 (const uint) 0:66 move second child to first child ( temp highp 4-component vector of float) 0:66 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 subgroupClusteredMax ( global highp 4-component vector of float) 0:66 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 3 (const int) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const uint) 0:68 move second child to first child ( temp highp int) 0:68 direct index ( temp highp int) 0:68 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 subgroupClusteredMax ( global highp int) 0:68 direct index ( temp highp int) 0:68 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const uint) 0:69 move second child to first child ( temp highp 2-component vector of int) 0:69 vector swizzle ( temp highp 2-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 subgroupClusteredMax ( global highp 2-component vector of int) 0:69 vector swizzle ( temp highp 2-component vector of int) 0:69 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 1 (const uint) 0:70 move second child to first child ( temp highp 3-component vector of int) 0:70 vector swizzle ( temp highp 3-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 subgroupClusteredMax ( global highp 3-component vector of int) 0:70 vector swizzle ( temp highp 3-component vector of int) 0:70 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const uint) 0:71 move second child to first child ( temp highp 4-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupClusteredMax ( global highp 4-component vector of int) 0:71 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 3 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 1 (const uint) 0:73 move second child to first child ( temp highp uint) 0:73 direct index ( temp highp uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 3 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 subgroupClusteredMax ( global highp uint) 0:73 direct index ( temp highp uint) 0:73 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const uint) 0:74 move second child to first child ( temp highp 2-component vector of uint) 0:74 vector swizzle ( temp highp 2-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 subgroupClusteredMax ( global highp 2-component vector of uint) 0:74 vector swizzle ( temp highp 2-component vector of uint) 0:74 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 1 (const uint) 0:75 move second child to first child ( temp highp 3-component vector of uint) 0:75 vector swizzle ( temp highp 3-component vector of uint) 0:75 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 3 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 subgroupClusteredMax ( global highp 3-component vector of uint) 0:75 vector swizzle ( temp highp 3-component vector of uint) 0:75 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 1 (const uint) 0:76 move second child to first child ( temp highp 4-component vector of uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 subgroupClusteredMax ( global highp 4-component vector of uint) 0:76 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 2 (const int) 0:76 Constant: 0:76 1 (const uint) 0:78 move second child to first child ( temp highp int) 0:78 direct index ( temp highp int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 subgroupClusteredAnd ( global highp int) 0:78 direct index ( temp highp int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 1 (const uint) 0:79 move second child to first child ( temp highp 2-component vector of int) 0:79 vector swizzle ( temp highp 2-component vector of int) 0:79 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupClusteredAnd ( global highp 2-component vector of int) 0:79 vector swizzle ( temp highp 2-component vector of int) 0:79 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 1 (const uint) 0:80 move second child to first child ( temp highp 3-component vector of int) 0:80 vector swizzle ( temp highp 3-component vector of int) 0:80 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 subgroupClusteredAnd ( global highp 3-component vector of int) 0:80 vector swizzle ( temp highp 3-component vector of int) 0:80 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 1 (const uint) 0:81 move second child to first child ( temp highp 4-component vector of int) 0:81 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupClusteredAnd ( global highp 4-component vector of int) 0:81 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 1 (const uint) 0:83 move second child to first child ( temp highp uint) 0:83 direct index ( temp highp uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 subgroupClusteredAnd ( global highp uint) 0:83 direct index ( temp highp uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const uint) 0:84 move second child to first child ( temp highp 2-component vector of uint) 0:84 vector swizzle ( temp highp 2-component vector of uint) 0:84 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 subgroupClusteredAnd ( global highp 2-component vector of uint) 0:84 vector swizzle ( temp highp 2-component vector of uint) 0:84 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 1 (const uint) 0:85 move second child to first child ( temp highp 3-component vector of uint) 0:85 vector swizzle ( temp highp 3-component vector of uint) 0:85 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 subgroupClusteredAnd ( global highp 3-component vector of uint) 0:85 vector swizzle ( temp highp 3-component vector of uint) 0:85 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 1 (const uint) 0:86 move second child to first child ( temp highp 4-component vector of uint) 0:86 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 subgroupClusteredAnd ( global highp 4-component vector of uint) 0:86 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Constant: 0:86 1 (const uint) 0:88 move second child to first child ( temp highp int) 0:88 direct index ( temp highp int) 0:88 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Convert bool to int ( temp highp int) 0:88 subgroupClusteredAnd ( global bool) 0:88 Compare Less Than ( temp bool) 0:88 direct index ( temp highp int) 0:88 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const uint) 0:89 move second child to first child ( temp highp 2-component vector of int) 0:89 vector swizzle ( temp highp 2-component vector of int) 0:89 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 2 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Convert bool to int ( temp highp 2-component vector of int) 0:89 subgroupClusteredAnd ( global 2-component vector of bool) 0:89 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:89 vector swizzle ( temp highp 2-component vector of int) 0:89 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0 (const int) 0:89 0 (const int) 0:89 Constant: 0:89 1 (const uint) 0:90 move second child to first child ( temp highp 3-component vector of int) 0:90 vector swizzle ( temp highp 3-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Convert bool to int ( temp highp 3-component vector of int) 0:90 subgroupClusteredAnd ( global 3-component vector of bool) 0:90 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:90 vector swizzle ( temp highp 3-component vector of int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 0 (const int) 0:90 0 (const int) 0:90 Constant: 0:90 1 (const uint) 0:91 move second child to first child ( temp highp 4-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 2 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Convert bool to int ( temp highp 4-component vector of int) 0:91 subgroupClusteredAnd ( global 4-component vector of bool) 0:91 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:91 0 (const int) 0:91 Constant: 0:91 1 (const uint) 0:93 move second child to first child ( temp highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 3 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 subgroupClusteredOr ( global highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const uint) 0:94 move second child to first child ( temp highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 subgroupClusteredOr ( global highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const uint) 0:95 move second child to first child ( temp highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 3 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 subgroupClusteredOr ( global highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 1 (const uint) 0:96 move second child to first child ( temp highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupClusteredOr ( global highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 1 (const uint) 0:98 move second child to first child ( temp highp uint) 0:98 direct index ( temp highp uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 subgroupClusteredOr ( global highp uint) 0:98 direct index ( temp highp uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 1 (const uint) 0:99 move second child to first child ( temp highp 2-component vector of uint) 0:99 vector swizzle ( temp highp 2-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 Sequence 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 subgroupClusteredOr ( global highp 2-component vector of uint) 0:99 vector swizzle ( temp highp 2-component vector of uint) 0:99 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:99 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 2 (const int) 0:99 Sequence 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 1 (const uint) 0:100 move second child to first child ( temp highp 3-component vector of uint) 0:100 vector swizzle ( temp highp 3-component vector of uint) 0:100 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 subgroupClusteredOr ( global highp 3-component vector of uint) 0:100 vector swizzle ( temp highp 3-component vector of uint) 0:100 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Sequence 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 1 (const uint) 0:101 move second child to first child ( temp highp 4-component vector of uint) 0:101 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 subgroupClusteredOr ( global highp 4-component vector of uint) 0:101 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 3 (const int) 0:101 Constant: 0:101 2 (const int) 0:101 Constant: 0:101 1 (const uint) 0:103 move second child to first child ( temp highp int) 0:103 direct index ( temp highp int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Convert bool to int ( temp highp int) 0:103 subgroupClusteredOr ( global bool) 0:103 Compare Less Than ( temp bool) 0:103 direct index ( temp highp int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 1 (const uint) 0:104 move second child to first child ( temp highp 2-component vector of int) 0:104 vector swizzle ( temp highp 2-component vector of int) 0:104 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Sequence 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Convert bool to int ( temp highp 2-component vector of int) 0:104 subgroupClusteredOr ( global 2-component vector of bool) 0:104 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:104 vector swizzle ( temp highp 2-component vector of int) 0:104 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:104 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Sequence 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 0 (const int) 0:104 Constant: 0:104 1 (const uint) 0:105 move second child to first child ( temp highp 3-component vector of int) 0:105 vector swizzle ( temp highp 3-component vector of int) 0:105 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Convert bool to int ( temp highp 3-component vector of int) 0:105 subgroupClusteredOr ( global 3-component vector of bool) 0:105 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:105 vector swizzle ( temp highp 3-component vector of int) 0:105 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Sequence 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 0 (const int) 0:105 0 (const int) 0:105 Constant: 0:105 1 (const uint) 0:106 move second child to first child ( temp highp 4-component vector of int) 0:106 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Convert bool to int ( temp highp 4-component vector of int) 0:106 subgroupClusteredOr ( global 4-component vector of bool) 0:106 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:106 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 0 (const int) 0:106 0 (const int) 0:106 0 (const int) 0:106 Constant: 0:106 1 (const uint) 0:108 move second child to first child ( temp highp int) 0:108 direct index ( temp highp int) 0:108 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 2 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 0 (const int) 0:108 subgroupClusteredXor ( global highp int) 0:108 direct index ( temp highp int) 0:108 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 1 (const uint) 0:109 move second child to first child ( temp highp 2-component vector of int) 0:109 vector swizzle ( temp highp 2-component vector of int) 0:109 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 Constant: 0:109 2 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Sequence 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 subgroupClusteredXor ( global highp 2-component vector of int) 0:109 vector swizzle ( temp highp 2-component vector of int) 0:109 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:109 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Sequence 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 1 (const uint) 0:110 move second child to first child ( temp highp 3-component vector of int) 0:110 vector swizzle ( temp highp 3-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 2 (const int) 0:110 subgroupClusteredXor ( global highp 3-component vector of int) 0:110 vector swizzle ( temp highp 3-component vector of int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Sequence 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 2 (const int) 0:110 Constant: 0:110 1 (const uint) 0:111 move second child to first child ( temp highp 4-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 2 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 subgroupClusteredXor ( global highp 4-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 3 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const uint) 0:113 move second child to first child ( temp highp uint) 0:113 direct index ( temp highp uint) 0:113 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 3 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 0 (const int) 0:113 subgroupClusteredXor ( global highp uint) 0:113 direct index ( temp highp uint) 0:113 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 2 (const int) 0:113 Constant: 0:113 0 (const int) 0:113 Constant: 0:113 1 (const uint) 0:114 move second child to first child ( temp highp 2-component vector of uint) 0:114 vector swizzle ( temp highp 2-component vector of uint) 0:114 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 Constant: 0:114 3 (const int) 0:114 Constant: 0:114 2 (const int) 0:114 Sequence 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 subgroupClusteredXor ( global highp 2-component vector of uint) 0:114 vector swizzle ( temp highp 2-component vector of uint) 0:114 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:114 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 2 (const int) 0:114 Sequence 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: 0:114 1 (const uint) 0:115 move second child to first child ( temp highp 3-component vector of uint) 0:115 vector swizzle ( temp highp 3-component vector of uint) 0:115 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 3 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 subgroupClusteredXor ( global highp 3-component vector of uint) 0:115 vector swizzle ( temp highp 3-component vector of uint) 0:115 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 2 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Sequence 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 2 (const int) 0:115 Constant: 0:115 1 (const uint) 0:116 move second child to first child ( temp highp 4-component vector of uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 3 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 subgroupClusteredXor ( global highp 4-component vector of uint) 0:116 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 3 (const int) 0:116 Constant: 0:116 2 (const int) 0:116 Constant: 0:116 1 (const uint) 0:118 move second child to first child ( temp highp int) 0:118 direct index ( temp highp int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Convert bool to int ( temp highp int) 0:118 subgroupClusteredXor ( global bool) 0:118 Compare Less Than ( temp bool) 0:118 direct index ( temp highp int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 0 (const int) 0:118 Constant: 0:118 1 (const uint) 0:119 move second child to first child ( temp highp 2-component vector of int) 0:119 vector swizzle ( temp highp 2-component vector of int) 0:119 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Sequence 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Convert bool to int ( temp highp 2-component vector of int) 0:119 subgroupClusteredXor ( global 2-component vector of bool) 0:119 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:119 vector swizzle ( temp highp 2-component vector of int) 0:119 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:119 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:119 Constant: 0:119 1 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Sequence 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 Constant: 0:119 0 (const int) 0:119 0 (const int) 0:119 Constant: 0:119 1 (const uint) 0:120 move second child to first child ( temp highp 3-component vector of int) 0:120 vector swizzle ( temp highp 3-component vector of int) 0:120 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Convert bool to int ( temp highp 3-component vector of int) 0:120 subgroupClusteredXor ( global 3-component vector of bool) 0:120 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:120 vector swizzle ( temp highp 3-component vector of int) 0:120 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Sequence 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 0 (const int) 0:120 0 (const int) 0:120 Constant: 0:120 1 (const uint) 0:121 move second child to first child ( temp highp 4-component vector of int) 0:121 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Convert bool to int ( temp highp 4-component vector of int) 0:121 subgroupClusteredXor ( global 4-component vector of bool) 0:121 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:121 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 0 (const int) 0:121 0 (const int) 0:121 0 (const int) 0:121 0 (const int) 0:121 Constant: 0:121 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupClusteredNeg.comp.out000066400000000000000000001300441506534232700261050ustar00rootroot00000000000000glsl.es320.subgroupClusteredNeg.comp ERROR: 0:21: 'cluster size' : argument must be at least 1 ERROR: 0:23: 'cluster size' : argument must be a power of 2 ERROR: 0:26: 'cluster size' : argument must be a power of 2 ERROR: 0:28: 'cluster size' : argument must be compile-time constant ERROR: 0:31: 'cluster size' : argument must be compile-time constant ERROR: 0:32: 'cluster size' : argument must be compile-time constant ERROR: 6 compilation errors. No code generated. Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_clustered local_size = (8, 1, 1) ERROR: node is still EOpNull! 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp int) 0:16 'a' ( temp highp int) 0:16 Constant: 0:16 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp highp uint) 0:19 'invocation' ( temp highp uint) 0:19 mod ( temp mediump uint) 0:19 add ( temp mediump uint) 0:19 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:19 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:19 Constant: 0:19 4 (const uint) 0:21 move second child to first child ( temp highp 2-component vector of float) 0:21 vector swizzle ( temp highp 2-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupClusteredAdd ( global highp 2-component vector of float) 0:21 vector swizzle ( temp highp 2-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const uint) 0:23 move second child to first child ( temp highp float) 0:23 direct index ( temp highp float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupClusteredMul ( global highp float) 0:23 direct index ( temp highp float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 3 (const uint) 0:25 move second child to first child ( temp highp 2-component vector of int) 0:25 vector swizzle ( temp highp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupClusteredMin ( global highp 2-component vector of int) 0:25 vector swizzle ( temp highp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 8 (const uint) 0:26 move second child to first child ( temp highp 3-component vector of int) 0:26 vector swizzle ( temp highp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupClusteredMin ( global highp 3-component vector of int) 0:26 vector swizzle ( temp highp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 6 (const uint) 0:28 move second child to first child ( temp highp int) 0:28 direct index ( temp highp int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 3 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupClusteredOr ( global highp int) 0:28 direct index ( temp highp int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Convert int to uint ( temp highp uint) 0:28 'a' ( temp highp int) 0:29 move second child to first child ( temp highp 2-component vector of int) 0:29 vector swizzle ( temp highp 2-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 3 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupClusteredOr ( global highp 2-component vector of int) 0:29 vector swizzle ( temp highp 2-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const uint) 0:31 move second child to first child ( temp highp int) 0:31 direct index ( temp highp int) 0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 subgroupClusteredXor ( global highp int) 0:31 direct index ( temp highp int) 0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 Convert int to uint ( temp highp uint) 0:31 add ( temp highp int) 0:31 Constant: 0:31 1 (const int) 0:31 'a' ( temp highp int) 0:32 move second child to first child ( temp highp 2-component vector of int) 0:32 vector swizzle ( temp highp 2-component vector of int) 0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 subgroupClusteredXor ( global highp 2-component vector of int) 0:32 vector swizzle ( temp highp 2-component vector of int) 0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Convert int to uint ( temp highp uint) 0:32 add ( temp highp int) 0:32 Constant: 0:32 1 (const int) 0:32 'a' ( temp highp int) 0:33 move second child to first child ( temp highp 3-component vector of int) 0:33 vector swizzle ( temp highp 3-component vector of int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 subgroupClusteredXor ( global highp 3-component vector of int) 0:33 vector swizzle ( temp highp 3-component vector of int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 2 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_clustered local_size = (8, 1, 1) ERROR: node is still EOpNull! 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp int) 0:16 'a' ( temp highp int) 0:16 Constant: 0:16 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp highp uint) 0:19 'invocation' ( temp highp uint) 0:19 mod ( temp mediump uint) 0:19 add ( temp mediump uint) 0:19 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:19 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:19 Constant: 0:19 4 (const uint) 0:21 move second child to first child ( temp highp 2-component vector of float) 0:21 vector swizzle ( temp highp 2-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupClusteredAdd ( global highp 2-component vector of float) 0:21 vector swizzle ( temp highp 2-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const uint) 0:23 move second child to first child ( temp highp float) 0:23 direct index ( temp highp float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupClusteredMul ( global highp float) 0:23 direct index ( temp highp float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 3 (const uint) 0:25 move second child to first child ( temp highp 2-component vector of int) 0:25 vector swizzle ( temp highp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 subgroupClusteredMin ( global highp 2-component vector of int) 0:25 vector swizzle ( temp highp 2-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 8 (const uint) 0:26 move second child to first child ( temp highp 3-component vector of int) 0:26 vector swizzle ( temp highp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupClusteredMin ( global highp 3-component vector of int) 0:26 vector swizzle ( temp highp 3-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 6 (const uint) 0:28 move second child to first child ( temp highp int) 0:28 direct index ( temp highp int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 3 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupClusteredOr ( global highp int) 0:28 direct index ( temp highp int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Convert int to uint ( temp highp uint) 0:28 'a' ( temp highp int) 0:29 move second child to first child ( temp highp 2-component vector of int) 0:29 vector swizzle ( temp highp 2-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 3 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupClusteredOr ( global highp 2-component vector of int) 0:29 vector swizzle ( temp highp 2-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const uint) 0:31 move second child to first child ( temp highp int) 0:31 direct index ( temp highp int) 0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 subgroupClusteredXor ( global highp int) 0:31 direct index ( temp highp int) 0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 Convert int to uint ( temp highp uint) 0:31 add ( temp highp int) 0:31 Constant: 0:31 1 (const int) 0:31 'a' ( temp highp int) 0:32 move second child to first child ( temp highp 2-component vector of int) 0:32 vector swizzle ( temp highp 2-component vector of int) 0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 subgroupClusteredXor ( global highp 2-component vector of int) 0:32 vector swizzle ( temp highp 2-component vector of int) 0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Convert int to uint ( temp highp uint) 0:32 add ( temp highp int) 0:32 Constant: 0:32 1 (const int) 0:32 'a' ( temp highp int) 0:33 move second child to first child ( temp highp 3-component vector of int) 0:33 vector swizzle ( temp highp 3-component vector of int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 subgroupClusteredXor ( global highp 3-component vector of int) 0:33 vector swizzle ( temp highp 3-component vector of int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 2 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupPartitioned.comp.out000066400000000000000000045303051506534232700260130ustar00rootroot00000000000000glsl.es320.subgroupPartitioned.comp Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_NV_shader_subgroup_partitioned local_size = (8, 1, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of uint) 0:18 'ballot' ( temp highp 4-component vector of uint) 0:18 subgroupPartitionNV ( global highp 4-component vector of uint) 0:18 'invocation' ( temp highp uint) 0:20 move second child to first child ( temp highp 4-component vector of uint) 0:20 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupPartitionNV ( global highp 4-component vector of uint) 0:20 direct index ( temp highp float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp highp 4-component vector of uint) 0:21 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupPartitionNV ( global highp 4-component vector of uint) 0:21 vector swizzle ( temp highp 2-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp highp 4-component vector of uint) 0:22 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupPartitionNV ( global highp 4-component vector of uint) 0:22 vector swizzle ( temp highp 3-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:23 move second child to first child ( temp highp 4-component vector of uint) 0:23 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 2 (const int) 0:23 subgroupPartitionNV ( global highp 4-component vector of uint) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:25 move second child to first child ( temp highp 4-component vector of uint) 0:25 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupPartitionNV ( global highp 4-component vector of uint) 0:25 direct index ( temp highp int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 move second child to first child ( temp highp 4-component vector of uint) 0:26 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupPartitionNV ( global highp 4-component vector of uint) 0:26 vector swizzle ( temp highp 2-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:27 move second child to first child ( temp highp 4-component vector of uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupPartitionNV ( global highp 4-component vector of uint) 0:27 vector swizzle ( temp highp 3-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:28 move second child to first child ( temp highp 4-component vector of uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 subgroupPartitionNV ( global highp 4-component vector of uint) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:30 move second child to first child ( temp highp 4-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupPartitionNV ( global highp 4-component vector of uint) 0:30 direct index ( temp highp uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupPartitionNV ( global highp 4-component vector of uint) 0:31 vector swizzle ( temp highp 2-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:32 move second child to first child ( temp highp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupPartitionNV ( global highp 4-component vector of uint) 0:32 vector swizzle ( temp highp 3-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:33 move second child to first child ( temp highp 4-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 subgroupPartitionNV ( global highp 4-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 2 (const int) 0:35 move second child to first child ( temp highp 4-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupPartitionNV ( global highp 4-component vector of uint) 0:35 Convert int to bool ( temp bool) 0:35 direct index ( temp highp int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 move second child to first child ( temp highp 4-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupPartitionNV ( global highp 4-component vector of uint) 0:36 Convert int to bool ( temp 2-component vector of bool) 0:36 vector swizzle ( temp highp 2-component vector of int) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:37 move second child to first child ( temp highp 4-component vector of uint) 0:37 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupPartitionNV ( global highp 4-component vector of uint) 0:37 Convert int to bool ( temp 3-component vector of bool) 0:37 vector swizzle ( temp highp 3-component vector of int) 0:37 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:38 move second child to first child ( temp highp 4-component vector of uint) 0:38 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 subgroupPartitionNV ( global highp 4-component vector of uint) 0:38 Convert int to bool ( temp 4-component vector of bool) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:40 move second child to first child ( temp highp float) 0:40 direct index ( temp highp float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupPartitionedAddNV ( global highp float) 0:40 direct index ( temp highp float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 'ballot' ( temp highp 4-component vector of uint) 0:41 move second child to first child ( temp highp 2-component vector of float) 0:41 vector swizzle ( temp highp 2-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupPartitionedAddNV ( global highp 2-component vector of float) 0:41 vector swizzle ( temp highp 2-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 'ballot' ( temp highp 4-component vector of uint) 0:42 move second child to first child ( temp highp 3-component vector of float) 0:42 vector swizzle ( temp highp 3-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupPartitionedAddNV ( global highp 3-component vector of float) 0:42 vector swizzle ( temp highp 3-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:42 Constant: 0:42 2 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 'ballot' ( temp highp 4-component vector of uint) 0:43 move second child to first child ( temp highp 4-component vector of float) 0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupPartitionedAddNV ( global highp 4-component vector of float) 0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 3 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 'ballot' ( temp highp 4-component vector of uint) 0:45 move second child to first child ( temp highp int) 0:45 direct index ( temp highp int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupPartitionedAddNV ( global highp int) 0:45 direct index ( temp highp int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 'ballot' ( temp highp 4-component vector of uint) 0:46 move second child to first child ( temp highp 2-component vector of int) 0:46 vector swizzle ( temp highp 2-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupPartitionedAddNV ( global highp 2-component vector of int) 0:46 vector swizzle ( temp highp 2-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 'ballot' ( temp highp 4-component vector of uint) 0:47 move second child to first child ( temp highp 3-component vector of int) 0:47 vector swizzle ( temp highp 3-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupPartitionedAddNV ( global highp 3-component vector of int) 0:47 vector swizzle ( temp highp 3-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 'ballot' ( temp highp 4-component vector of uint) 0:48 move second child to first child ( temp highp 4-component vector of int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 subgroupPartitionedAddNV ( global highp 4-component vector of int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 3 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 'ballot' ( temp highp 4-component vector of uint) 0:50 move second child to first child ( temp highp uint) 0:50 direct index ( temp highp uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupPartitionedAddNV ( global highp uint) 0:50 direct index ( temp highp uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 'ballot' ( temp highp 4-component vector of uint) 0:51 move second child to first child ( temp highp 2-component vector of uint) 0:51 vector swizzle ( temp highp 2-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupPartitionedAddNV ( global highp 2-component vector of uint) 0:51 vector swizzle ( temp highp 2-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 'ballot' ( temp highp 4-component vector of uint) 0:52 move second child to first child ( temp highp 3-component vector of uint) 0:52 vector swizzle ( temp highp 3-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupPartitionedAddNV ( global highp 3-component vector of uint) 0:52 vector swizzle ( temp highp 3-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:52 Constant: 0:52 2 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 'ballot' ( temp highp 4-component vector of uint) 0:53 move second child to first child ( temp highp 4-component vector of uint) 0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 subgroupPartitionedAddNV ( global highp 4-component vector of uint) 0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 'ballot' ( temp highp 4-component vector of uint) 0:55 move second child to first child ( temp highp float) 0:55 direct index ( temp highp float) 0:55 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 subgroupPartitionedMulNV ( global highp float) 0:55 direct index ( temp highp float) 0:55 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 'ballot' ( temp highp 4-component vector of uint) 0:56 move second child to first child ( temp highp 2-component vector of float) 0:56 vector swizzle ( temp highp 2-component vector of float) 0:56 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupPartitionedMulNV ( global highp 2-component vector of float) 0:56 vector swizzle ( temp highp 2-component vector of float) 0:56 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 'ballot' ( temp highp 4-component vector of uint) 0:57 move second child to first child ( temp highp 3-component vector of float) 0:57 vector swizzle ( temp highp 3-component vector of float) 0:57 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 Constant: 0:57 2 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupPartitionedMulNV ( global highp 3-component vector of float) 0:57 vector swizzle ( temp highp 3-component vector of float) 0:57 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 Constant: 0:57 2 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 'ballot' ( temp highp 4-component vector of uint) 0:58 move second child to first child ( temp highp 4-component vector of float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupPartitionedMulNV ( global highp 4-component vector of float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 3 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 'ballot' ( temp highp 4-component vector of uint) 0:60 move second child to first child ( temp highp int) 0:60 direct index ( temp highp int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 subgroupPartitionedMulNV ( global highp int) 0:60 direct index ( temp highp int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 'ballot' ( temp highp 4-component vector of uint) 0:61 move second child to first child ( temp highp 2-component vector of int) 0:61 vector swizzle ( temp highp 2-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 subgroupPartitionedMulNV ( global highp 2-component vector of int) 0:61 vector swizzle ( temp highp 2-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 'ballot' ( temp highp 4-component vector of uint) 0:62 move second child to first child ( temp highp 3-component vector of int) 0:62 vector swizzle ( temp highp 3-component vector of int) 0:62 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupPartitionedMulNV ( global highp 3-component vector of int) 0:62 vector swizzle ( temp highp 3-component vector of int) 0:62 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 'ballot' ( temp highp 4-component vector of uint) 0:63 move second child to first child ( temp highp 4-component vector of int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 subgroupPartitionedMulNV ( global highp 4-component vector of int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 3 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 'ballot' ( temp highp 4-component vector of uint) 0:65 move second child to first child ( temp highp uint) 0:65 direct index ( temp highp uint) 0:65 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 subgroupPartitionedMulNV ( global highp uint) 0:65 direct index ( temp highp uint) 0:65 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 'ballot' ( temp highp 4-component vector of uint) 0:66 move second child to first child ( temp highp 2-component vector of uint) 0:66 vector swizzle ( temp highp 2-component vector of uint) 0:66 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupPartitionedMulNV ( global highp 2-component vector of uint) 0:66 vector swizzle ( temp highp 2-component vector of uint) 0:66 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 'ballot' ( temp highp 4-component vector of uint) 0:67 move second child to first child ( temp highp 3-component vector of uint) 0:67 vector swizzle ( temp highp 3-component vector of uint) 0:67 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 Constant: 0:67 2 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 subgroupPartitionedMulNV ( global highp 3-component vector of uint) 0:67 vector swizzle ( temp highp 3-component vector of uint) 0:67 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 Constant: 0:67 2 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 'ballot' ( temp highp 4-component vector of uint) 0:68 move second child to first child ( temp highp 4-component vector of uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 subgroupPartitionedMulNV ( global highp 4-component vector of uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 3 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 'ballot' ( temp highp 4-component vector of uint) 0:70 move second child to first child ( temp highp float) 0:70 direct index ( temp highp float) 0:70 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 subgroupPartitionedMinNV ( global highp float) 0:70 direct index ( temp highp float) 0:70 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 'ballot' ( temp highp 4-component vector of uint) 0:71 move second child to first child ( temp highp 2-component vector of float) 0:71 vector swizzle ( temp highp 2-component vector of float) 0:71 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupPartitionedMinNV ( global highp 2-component vector of float) 0:71 vector swizzle ( temp highp 2-component vector of float) 0:71 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 'ballot' ( temp highp 4-component vector of uint) 0:72 move second child to first child ( temp highp 3-component vector of float) 0:72 vector swizzle ( temp highp 3-component vector of float) 0:72 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 0 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupPartitionedMinNV ( global highp 3-component vector of float) 0:72 vector swizzle ( temp highp 3-component vector of float) 0:72 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 0 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 'ballot' ( temp highp 4-component vector of uint) 0:73 move second child to first child ( temp highp 4-component vector of float) 0:73 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 subgroupPartitionedMinNV ( global highp 4-component vector of float) 0:73 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 3 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 'ballot' ( temp highp 4-component vector of uint) 0:75 move second child to first child ( temp highp int) 0:75 direct index ( temp highp int) 0:75 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 3 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 subgroupPartitionedMinNV ( global highp int) 0:75 direct index ( temp highp int) 0:75 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 'ballot' ( temp highp 4-component vector of uint) 0:76 move second child to first child ( temp highp 2-component vector of int) 0:76 vector swizzle ( temp highp 2-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 subgroupPartitionedMinNV ( global highp 2-component vector of int) 0:76 vector swizzle ( temp highp 2-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 'ballot' ( temp highp 4-component vector of uint) 0:77 move second child to first child ( temp highp 3-component vector of int) 0:77 vector swizzle ( temp highp 3-component vector of int) 0:77 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 subgroupPartitionedMinNV ( global highp 3-component vector of int) 0:77 vector swizzle ( temp highp 3-component vector of int) 0:77 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:77 Constant: 0:77 2 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 'ballot' ( temp highp 4-component vector of uint) 0:78 move second child to first child ( temp highp 4-component vector of int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 3 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 subgroupPartitionedMinNV ( global highp 4-component vector of int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 3 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 'ballot' ( temp highp 4-component vector of uint) 0:80 move second child to first child ( temp highp uint) 0:80 direct index ( temp highp uint) 0:80 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 3 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 subgroupPartitionedMinNV ( global highp uint) 0:80 direct index ( temp highp uint) 0:80 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 'ballot' ( temp highp 4-component vector of uint) 0:81 move second child to first child ( temp highp 2-component vector of uint) 0:81 vector swizzle ( temp highp 2-component vector of uint) 0:81 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupPartitionedMinNV ( global highp 2-component vector of uint) 0:81 vector swizzle ( temp highp 2-component vector of uint) 0:81 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 'ballot' ( temp highp 4-component vector of uint) 0:82 move second child to first child ( temp highp 3-component vector of uint) 0:82 vector swizzle ( temp highp 3-component vector of uint) 0:82 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:82 Constant: 0:82 3 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 subgroupPartitionedMinNV ( global highp 3-component vector of uint) 0:82 vector swizzle ( temp highp 3-component vector of uint) 0:82 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 'ballot' ( temp highp 4-component vector of uint) 0:83 move second child to first child ( temp highp 4-component vector of uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 3 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 subgroupPartitionedMinNV ( global highp 4-component vector of uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 3 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 'ballot' ( temp highp 4-component vector of uint) 0:85 move second child to first child ( temp highp float) 0:85 direct index ( temp highp float) 0:85 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 3 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 subgroupPartitionedMaxNV ( global highp float) 0:85 direct index ( temp highp float) 0:85 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 'ballot' ( temp highp 4-component vector of uint) 0:86 move second child to first child ( temp highp 2-component vector of float) 0:86 vector swizzle ( temp highp 2-component vector of float) 0:86 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 subgroupPartitionedMaxNV ( global highp 2-component vector of float) 0:86 vector swizzle ( temp highp 2-component vector of float) 0:86 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 'ballot' ( temp highp 4-component vector of uint) 0:87 move second child to first child ( temp highp 3-component vector of float) 0:87 vector swizzle ( temp highp 3-component vector of float) 0:87 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:87 Constant: 0:87 3 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 subgroupPartitionedMaxNV ( global highp 3-component vector of float) 0:87 vector swizzle ( temp highp 3-component vector of float) 0:87 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:87 Constant: 0:87 2 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 'ballot' ( temp highp 4-component vector of uint) 0:88 move second child to first child ( temp highp 4-component vector of float) 0:88 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 3 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 subgroupPartitionedMaxNV ( global highp 4-component vector of float) 0:88 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 3 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 'ballot' ( temp highp 4-component vector of uint) 0:90 move second child to first child ( temp highp int) 0:90 direct index ( temp highp int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 subgroupPartitionedMaxNV ( global highp int) 0:90 direct index ( temp highp int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 'ballot' ( temp highp 4-component vector of uint) 0:91 move second child to first child ( temp highp 2-component vector of int) 0:91 vector swizzle ( temp highp 2-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 subgroupPartitionedMaxNV ( global highp 2-component vector of int) 0:91 vector swizzle ( temp highp 2-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 'ballot' ( temp highp 4-component vector of uint) 0:92 move second child to first child ( temp highp 3-component vector of int) 0:92 vector swizzle ( temp highp 3-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupPartitionedMaxNV ( global highp 3-component vector of int) 0:92 vector swizzle ( temp highp 3-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 'ballot' ( temp highp 4-component vector of uint) 0:93 move second child to first child ( temp highp 4-component vector of int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 subgroupPartitionedMaxNV ( global highp 4-component vector of int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 3 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 'ballot' ( temp highp 4-component vector of uint) 0:95 move second child to first child ( temp highp uint) 0:95 direct index ( temp highp uint) 0:95 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 subgroupPartitionedMaxNV ( global highp uint) 0:95 direct index ( temp highp uint) 0:95 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 'ballot' ( temp highp 4-component vector of uint) 0:96 move second child to first child ( temp highp 2-component vector of uint) 0:96 vector swizzle ( temp highp 2-component vector of uint) 0:96 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupPartitionedMaxNV ( global highp 2-component vector of uint) 0:96 vector swizzle ( temp highp 2-component vector of uint) 0:96 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 'ballot' ( temp highp 4-component vector of uint) 0:97 move second child to first child ( temp highp 3-component vector of uint) 0:97 vector swizzle ( temp highp 3-component vector of uint) 0:97 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 subgroupPartitionedMaxNV ( global highp 3-component vector of uint) 0:97 vector swizzle ( temp highp 3-component vector of uint) 0:97 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:97 Constant: 0:97 2 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 'ballot' ( temp highp 4-component vector of uint) 0:98 move second child to first child ( temp highp 4-component vector of uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 subgroupPartitionedMaxNV ( global highp 4-component vector of uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 3 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 'ballot' ( temp highp 4-component vector of uint) 0:100 move second child to first child ( temp highp int) 0:100 direct index ( temp highp int) 0:100 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 subgroupPartitionedAndNV ( global highp int) 0:100 direct index ( temp highp int) 0:100 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 'ballot' ( temp highp 4-component vector of uint) 0:101 move second child to first child ( temp highp 2-component vector of int) 0:101 vector swizzle ( temp highp 2-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 subgroupPartitionedAndNV ( global highp 2-component vector of int) 0:101 vector swizzle ( temp highp 2-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 'ballot' ( temp highp 4-component vector of uint) 0:102 move second child to first child ( temp highp 3-component vector of int) 0:102 vector swizzle ( temp highp 3-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:102 subgroupPartitionedAndNV ( global highp 3-component vector of int) 0:102 vector swizzle ( temp highp 3-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:102 'ballot' ( temp highp 4-component vector of uint) 0:103 move second child to first child ( temp highp 4-component vector of int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 subgroupPartitionedAndNV ( global highp 4-component vector of int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 3 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 'ballot' ( temp highp 4-component vector of uint) 0:105 move second child to first child ( temp highp uint) 0:105 direct index ( temp highp uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 subgroupPartitionedAndNV ( global highp uint) 0:105 direct index ( temp highp uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 'ballot' ( temp highp 4-component vector of uint) 0:106 move second child to first child ( temp highp 2-component vector of uint) 0:106 vector swizzle ( temp highp 2-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 subgroupPartitionedAndNV ( global highp 2-component vector of uint) 0:106 vector swizzle ( temp highp 2-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 'ballot' ( temp highp 4-component vector of uint) 0:107 move second child to first child ( temp highp 3-component vector of uint) 0:107 vector swizzle ( temp highp 3-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:107 Constant: 0:107 1 (const int) 0:107 Constant: 0:107 2 (const int) 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:107 subgroupPartitionedAndNV ( global highp 3-component vector of uint) 0:107 vector swizzle ( temp highp 3-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:107 Constant: 0:107 2 (const int) 0:107 Constant: 0:107 2 (const int) 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:107 'ballot' ( temp highp 4-component vector of uint) 0:108 move second child to first child ( temp highp 4-component vector of uint) 0:108 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 2 (const int) 0:108 subgroupPartitionedAndNV ( global highp 4-component vector of uint) 0:108 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 3 (const int) 0:108 Constant: 0:108 2 (const int) 0:108 'ballot' ( temp highp 4-component vector of uint) 0:110 move second child to first child ( temp highp int) 0:110 direct index ( temp highp int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 Convert bool to int ( temp highp int) 0:110 subgroupPartitionedAndNV ( global bool, operation at highp) 0:110 Compare Less Than ( temp bool) 0:110 direct index ( temp highp int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 'ballot' ( temp highp 4-component vector of uint) 0:111 move second child to first child ( temp highp 2-component vector of int) 0:111 vector swizzle ( temp highp 2-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Convert bool to int ( temp highp 2-component vector of int) 0:111 subgroupPartitionedAndNV ( global 2-component vector of bool, operation at highp) 0:111 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:111 vector swizzle ( temp highp 2-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 0 (const int) 0:111 'ballot' ( temp highp 4-component vector of uint) 0:112 move second child to first child ( temp highp 3-component vector of int) 0:112 vector swizzle ( temp highp 3-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (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:112 Convert bool to int ( temp highp 3-component vector of int) 0:112 subgroupPartitionedAndNV ( global 3-component vector of bool, operation at highp) 0:112 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:112 vector swizzle ( temp highp 3-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (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:112 Constant: 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:112 'ballot' ( temp highp 4-component vector of uint) 0:113 move second child to first child ( temp highp 4-component vector of int) 0:113 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Convert bool to int ( temp highp 4-component vector of int) 0:113 subgroupPartitionedAndNV ( global 4-component vector of bool, operation at highp) 0:113 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:113 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 0 (const int) 0:113 0 (const int) 0:113 0 (const int) 0:113 0 (const int) 0:113 'ballot' ( temp highp 4-component vector of uint) 0:115 move second child to first child ( temp highp int) 0:115 direct index ( temp highp int) 0:115 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 subgroupPartitionedOrNV ( global highp int) 0:115 direct index ( temp highp int) 0:115 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 'ballot' ( temp highp 4-component vector of uint) 0:116 move second child to first child ( temp highp 2-component vector of int) 0:116 vector swizzle ( temp highp 2-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 subgroupPartitionedOrNV ( global highp 2-component vector of int) 0:116 vector swizzle ( temp highp 2-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 'ballot' ( temp highp 4-component vector of uint) 0:117 move second child to first child ( temp highp 3-component vector of int) 0:117 vector swizzle ( temp highp 3-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 subgroupPartitionedOrNV ( global highp 3-component vector of int) 0:117 vector swizzle ( temp highp 3-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:117 Constant: 0:117 2 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 'ballot' ( temp highp 4-component vector of uint) 0:118 move second child to first child ( temp highp 4-component vector of int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 subgroupPartitionedOrNV ( global highp 4-component vector of int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 3 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 'ballot' ( temp highp 4-component vector of uint) 0:120 move second child to first child ( temp highp uint) 0:120 direct index ( temp highp uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 subgroupPartitionedOrNV ( global highp uint) 0:120 direct index ( temp highp uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 'ballot' ( temp highp 4-component vector of uint) 0:121 move second child to first child ( temp highp 2-component vector of uint) 0:121 vector swizzle ( temp highp 2-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 2 (const int) 0:121 Constant: 0:121 2 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 subgroupPartitionedOrNV ( global highp 2-component vector of uint) 0:121 vector swizzle ( temp highp 2-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 2 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 'ballot' ( temp highp 4-component vector of uint) 0:122 move second child to first child ( temp highp 3-component vector of uint) 0:122 vector swizzle ( temp highp 3-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:122 Constant: 0:122 2 (const int) 0:122 Constant: 0:122 2 (const int) 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 subgroupPartitionedOrNV ( global highp 3-component vector of uint) 0:122 vector swizzle ( temp highp 3-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:122 Constant: 0:122 2 (const int) 0:122 Constant: 0:122 2 (const int) 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 'ballot' ( temp highp 4-component vector of uint) 0:123 move second child to first child ( temp highp 4-component vector of uint) 0:123 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 Constant: 0:123 2 (const int) 0:123 Constant: 0:123 2 (const int) 0:123 subgroupPartitionedOrNV ( global highp 4-component vector of uint) 0:123 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 Constant: 0:123 3 (const int) 0:123 Constant: 0:123 2 (const int) 0:123 'ballot' ( temp highp 4-component vector of uint) 0:125 move second child to first child ( temp highp int) 0:125 direct index ( temp highp int) 0:125 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 Convert bool to int ( temp highp int) 0:125 subgroupPartitionedOrNV ( global bool, operation at highp) 0:125 Compare Less Than ( temp bool) 0:125 direct index ( temp highp int) 0:125 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 'ballot' ( temp highp 4-component vector of uint) 0:126 move second child to first child ( temp highp 2-component vector of int) 0:126 vector swizzle ( temp highp 2-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 Constant: 0:126 2 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Convert bool to int ( temp highp 2-component vector of int) 0:126 subgroupPartitionedOrNV ( global 2-component vector of bool, operation at highp) 0:126 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:126 vector swizzle ( temp highp 2-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 0 (const int) 0:126 'ballot' ( temp highp 4-component vector of uint) 0:127 move second child to first child ( temp highp 3-component vector of int) 0:127 vector swizzle ( temp highp 3-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:127 Constant: 0:127 2 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 Convert bool to int ( temp highp 3-component vector of int) 0:127 subgroupPartitionedOrNV ( global 3-component vector of bool, operation at highp) 0:127 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:127 vector swizzle ( temp highp 3-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 Constant: 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:127 'ballot' ( temp highp 4-component vector of uint) 0:128 move second child to first child ( temp highp 4-component vector of int) 0:128 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 Constant: 0:128 2 (const int) 0:128 Constant: 0:128 1 (const int) 0:128 Convert bool to int ( temp highp 4-component vector of int) 0:128 subgroupPartitionedOrNV ( global 4-component vector of bool, operation at highp) 0:128 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:128 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 Constant: 0:128 1 (const int) 0:128 Constant: 0:128 1 (const int) 0:128 Constant: 0:128 0 (const int) 0:128 0 (const int) 0:128 0 (const int) 0:128 0 (const int) 0:128 'ballot' ( temp highp 4-component vector of uint) 0:130 move second child to first child ( temp highp int) 0:130 direct index ( temp highp int) 0:130 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 Constant: 0:130 2 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 0 (const int) 0:130 subgroupPartitionedXorNV ( global highp int) 0:130 direct index ( temp highp int) 0:130 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 0 (const int) 0:130 'ballot' ( temp highp 4-component vector of uint) 0:131 move second child to first child ( temp highp 2-component vector of int) 0:131 vector swizzle ( temp highp 2-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 subgroupPartitionedXorNV ( global highp 2-component vector of int) 0:131 vector swizzle ( temp highp 2-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 'ballot' ( temp highp 4-component vector of uint) 0:132 move second child to first child ( temp highp 3-component vector of int) 0:132 vector swizzle ( temp highp 3-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:132 Constant: 0:132 2 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:132 subgroupPartitionedXorNV ( global highp 3-component vector of int) 0:132 vector swizzle ( temp highp 3-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:132 Constant: 0:132 2 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:132 'ballot' ( temp highp 4-component vector of uint) 0:133 move second child to first child ( temp highp 4-component vector of int) 0:133 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 Constant: 0:133 2 (const int) 0:133 Constant: 0:133 1 (const int) 0:133 subgroupPartitionedXorNV ( global highp 4-component vector of int) 0:133 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 Constant: 0:133 3 (const int) 0:133 Constant: 0:133 1 (const int) 0:133 'ballot' ( temp highp 4-component vector of uint) 0:135 move second child to first child ( temp highp uint) 0:135 direct index ( temp highp uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 Constant: 0:135 2 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 subgroupPartitionedXorNV ( global highp uint) 0:135 direct index ( temp highp uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 'ballot' ( temp highp 4-component vector of uint) 0:136 move second child to first child ( temp highp 2-component vector of uint) 0:136 vector swizzle ( temp highp 2-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 Constant: 0:136 2 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 subgroupPartitionedXorNV ( global highp 2-component vector of uint) 0:136 vector swizzle ( temp highp 2-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 'ballot' ( temp highp 4-component vector of uint) 0:137 move second child to first child ( temp highp 3-component vector of uint) 0:137 vector swizzle ( temp highp 3-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:137 Constant: 0:137 2 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 subgroupPartitionedXorNV ( global highp 3-component vector of uint) 0:137 vector swizzle ( temp highp 3-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:137 Constant: 0:137 2 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 'ballot' ( temp highp 4-component vector of uint) 0:138 move second child to first child ( temp highp 4-component vector of uint) 0:138 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 Constant: 0:138 2 (const int) 0:138 Constant: 0:138 2 (const int) 0:138 subgroupPartitionedXorNV ( global highp 4-component vector of uint) 0:138 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 Constant: 0:138 3 (const int) 0:138 Constant: 0:138 2 (const int) 0:138 'ballot' ( temp highp 4-component vector of uint) 0:140 move second child to first child ( temp highp int) 0:140 direct index ( temp highp int) 0:140 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 Constant: 0:140 3 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 Convert bool to int ( temp highp int) 0:140 subgroupPartitionedXorNV ( global bool, operation at highp) 0:140 Compare Less Than ( temp bool) 0:140 direct index ( temp highp int) 0:140 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 'ballot' ( temp highp 4-component vector of uint) 0:141 move second child to first child ( temp highp 2-component vector of int) 0:141 vector swizzle ( temp highp 2-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 Constant: 0:141 3 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Convert bool to int ( temp highp 2-component vector of int) 0:141 subgroupPartitionedXorNV ( global 2-component vector of bool, operation at highp) 0:141 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:141 vector swizzle ( temp highp 2-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 0 (const int) 0:141 'ballot' ( temp highp 4-component vector of uint) 0:142 move second child to first child ( temp highp 3-component vector of int) 0:142 vector swizzle ( temp highp 3-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:142 Constant: 0:142 3 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 2 (const int) 0:142 Convert bool to int ( temp highp 3-component vector of int) 0:142 subgroupPartitionedXorNV ( global 3-component vector of bool, operation at highp) 0:142 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:142 vector swizzle ( temp highp 3-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 2 (const int) 0:142 Constant: 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:142 'ballot' ( temp highp 4-component vector of uint) 0:143 move second child to first child ( temp highp 4-component vector of int) 0:143 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 Constant: 0:143 3 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Convert bool to int ( temp highp 4-component vector of int) 0:143 subgroupPartitionedXorNV ( global 4-component vector of bool, operation at highp) 0:143 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:143 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 0 (const int) 0:143 0 (const int) 0:143 0 (const int) 0:143 0 (const int) 0:143 'ballot' ( temp highp 4-component vector of uint) 0:145 move second child to first child ( temp highp float) 0:145 direct index ( temp highp float) 0:145 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 Constant: 0:145 3 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 subgroupPartitionedInclusiveAddNV ( global highp float) 0:145 direct index ( temp highp float) 0:145 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 'ballot' ( temp highp 4-component vector of uint) 0:146 move second child to first child ( temp highp 2-component vector of float) 0:146 vector swizzle ( temp highp 2-component vector of float) 0:146 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 Constant: 0:146 3 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 subgroupPartitionedInclusiveAddNV ( global highp 2-component vector of float) 0:146 vector swizzle ( temp highp 2-component vector of float) 0:146 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 'ballot' ( temp highp 4-component vector of uint) 0:147 move second child to first child ( temp highp 3-component vector of float) 0:147 vector swizzle ( temp highp 3-component vector of float) 0:147 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:147 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:147 Constant: 0:147 3 (const int) 0:147 Constant: 0:147 0 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 subgroupPartitionedInclusiveAddNV ( global highp 3-component vector of float) 0:147 vector swizzle ( temp highp 3-component vector of float) 0:147 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:147 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:147 Constant: 0:147 2 (const int) 0:147 Constant: 0:147 0 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 'ballot' ( temp highp 4-component vector of uint) 0:148 move second child to first child ( temp highp 4-component vector of float) 0:148 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 Constant: 0:148 3 (const int) 0:148 Constant: 0:148 0 (const int) 0:148 subgroupPartitionedInclusiveAddNV ( global highp 4-component vector of float) 0:148 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 Constant: 0:148 3 (const int) 0:148 Constant: 0:148 0 (const int) 0:148 'ballot' ( temp highp 4-component vector of uint) 0:150 move second child to first child ( temp highp int) 0:150 direct index ( temp highp int) 0:150 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 Constant: 0:150 3 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 0 (const int) 0:150 subgroupPartitionedInclusiveAddNV ( global highp int) 0:150 direct index ( temp highp int) 0:150 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 0 (const int) 0:150 'ballot' ( temp highp 4-component vector of uint) 0:151 move second child to first child ( temp highp 2-component vector of int) 0:151 vector swizzle ( temp highp 2-component vector of int) 0:151 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 Constant: 0:151 3 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 subgroupPartitionedInclusiveAddNV ( global highp 2-component vector of int) 0:151 vector swizzle ( temp highp 2-component vector of int) 0:151 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 'ballot' ( temp highp 4-component vector of uint) 0:152 move second child to first child ( temp highp 3-component vector of int) 0:152 vector swizzle ( temp highp 3-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:152 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:152 Constant: 0:152 3 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 2 (const int) 0:152 subgroupPartitionedInclusiveAddNV ( global highp 3-component vector of int) 0:152 vector swizzle ( temp highp 3-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:152 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:152 Constant: 0:152 2 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 2 (const int) 0:152 'ballot' ( temp highp 4-component vector of uint) 0:153 move second child to first child ( temp highp 4-component vector of int) 0:153 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 Constant: 0:153 3 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 subgroupPartitionedInclusiveAddNV ( global highp 4-component vector of int) 0:153 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 Constant: 0:153 3 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 'ballot' ( temp highp 4-component vector of uint) 0:155 move second child to first child ( temp highp uint) 0:155 direct index ( temp highp uint) 0:155 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 Constant: 0:155 3 (const int) 0:155 Constant: 0:155 2 (const int) 0:155 Constant: 0:155 0 (const int) 0:155 subgroupPartitionedInclusiveAddNV ( global highp uint) 0:155 direct index ( temp highp uint) 0:155 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 2 (const int) 0:155 Constant: 0:155 0 (const int) 0:155 'ballot' ( temp highp 4-component vector of uint) 0:156 move second child to first child ( temp highp 2-component vector of uint) 0:156 vector swizzle ( temp highp 2-component vector of uint) 0:156 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 Constant: 0:156 3 (const int) 0:156 Constant: 0:156 2 (const int) 0:156 Sequence 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 subgroupPartitionedInclusiveAddNV ( global highp 2-component vector of uint) 0:156 vector swizzle ( temp highp 2-component vector of uint) 0:156 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 2 (const int) 0:156 Sequence 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 'ballot' ( temp highp 4-component vector of uint) 0:157 move second child to first child ( temp highp 3-component vector of uint) 0:157 vector swizzle ( temp highp 3-component vector of uint) 0:157 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:157 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:157 Constant: 0:157 3 (const int) 0:157 Constant: 0:157 2 (const int) 0:157 Sequence 0:157 Constant: 0:157 0 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 Constant: 0:157 2 (const int) 0:157 subgroupPartitionedInclusiveAddNV ( global highp 3-component vector of uint) 0:157 vector swizzle ( temp highp 3-component vector of uint) 0:157 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:157 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:157 Constant: 0:157 2 (const int) 0:157 Constant: 0:157 2 (const int) 0:157 Sequence 0:157 Constant: 0:157 0 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 Constant: 0:157 2 (const int) 0:157 'ballot' ( temp highp 4-component vector of uint) 0:158 move second child to first child ( temp highp 4-component vector of uint) 0:158 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 Constant: 0:158 3 (const int) 0:158 Constant: 0:158 2 (const int) 0:158 subgroupPartitionedInclusiveAddNV ( global highp 4-component vector of uint) 0:158 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 Constant: 0:158 3 (const int) 0:158 Constant: 0:158 2 (const int) 0:158 'ballot' ( temp highp 4-component vector of uint) 0:160 move second child to first child ( temp highp float) 0:160 direct index ( temp highp float) 0:160 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 Constant: 0:160 3 (const int) 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 0 (const int) 0:160 subgroupPartitionedInclusiveMulNV ( global highp float) 0:160 direct index ( temp highp float) 0:160 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 0 (const int) 0:160 'ballot' ( temp highp 4-component vector of uint) 0:161 move second child to first child ( temp highp 2-component vector of float) 0:161 vector swizzle ( temp highp 2-component vector of float) 0:161 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 Constant: 0:161 3 (const int) 0:161 Constant: 0:161 0 (const int) 0:161 Sequence 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 subgroupPartitionedInclusiveMulNV ( global highp 2-component vector of float) 0:161 vector swizzle ( temp highp 2-component vector of float) 0:161 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 Constant: 0:161 1 (const int) 0:161 Constant: 0:161 0 (const int) 0:161 Sequence 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 'ballot' ( temp highp 4-component vector of uint) 0:162 move second child to first child ( temp highp 3-component vector of float) 0:162 vector swizzle ( temp highp 3-component vector of float) 0:162 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:162 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:162 Constant: 0:162 3 (const int) 0:162 Constant: 0:162 0 (const int) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 subgroupPartitionedInclusiveMulNV ( global highp 3-component vector of float) 0:162 vector swizzle ( temp highp 3-component vector of float) 0:162 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:162 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:162 Constant: 0:162 2 (const int) 0:162 Constant: 0:162 0 (const int) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 'ballot' ( temp highp 4-component vector of uint) 0:163 move second child to first child ( temp highp 4-component vector of float) 0:163 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 Constant: 0:163 3 (const int) 0:163 Constant: 0:163 0 (const int) 0:163 subgroupPartitionedInclusiveMulNV ( global highp 4-component vector of float) 0:163 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 Constant: 0:163 3 (const int) 0:163 Constant: 0:163 0 (const int) 0:163 'ballot' ( temp highp 4-component vector of uint) 0:165 move second child to first child ( temp highp int) 0:165 direct index ( temp highp int) 0:165 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 Constant: 0:165 3 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 0 (const int) 0:165 subgroupPartitionedInclusiveMulNV ( global highp int) 0:165 direct index ( temp highp int) 0:165 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 0 (const int) 0:165 'ballot' ( temp highp 4-component vector of uint) 0:166 move second child to first child ( temp highp 2-component vector of int) 0:166 vector swizzle ( temp highp 2-component vector of int) 0:166 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 Constant: 0:166 3 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Sequence 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 subgroupPartitionedInclusiveMulNV ( global highp 2-component vector of int) 0:166 vector swizzle ( temp highp 2-component vector of int) 0:166 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Sequence 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 'ballot' ( temp highp 4-component vector of uint) 0:167 move second child to first child ( temp highp 3-component vector of int) 0:167 vector swizzle ( temp highp 3-component vector of int) 0:167 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:167 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:167 Constant: 0:167 3 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 2 (const int) 0:167 subgroupPartitionedInclusiveMulNV ( global highp 3-component vector of int) 0:167 vector swizzle ( temp highp 3-component vector of int) 0:167 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:167 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:167 Constant: 0:167 2 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 2 (const int) 0:167 'ballot' ( temp highp 4-component vector of uint) 0:168 move second child to first child ( temp highp 4-component vector of int) 0:168 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 Constant: 0:168 3 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 subgroupPartitionedInclusiveMulNV ( global highp 4-component vector of int) 0:168 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 Constant: 0:168 3 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 'ballot' ( temp highp 4-component vector of uint) 0:170 move second child to first child ( temp highp uint) 0:170 direct index ( temp highp uint) 0:170 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 2 (const int) 0:170 Constant: 0:170 0 (const int) 0:170 subgroupPartitionedInclusiveMulNV ( global highp uint) 0:170 direct index ( temp highp uint) 0:170 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 2 (const int) 0:170 Constant: 0:170 0 (const int) 0:170 'ballot' ( temp highp 4-component vector of uint) 0:171 move second child to first child ( temp highp 2-component vector of uint) 0:171 vector swizzle ( temp highp 2-component vector of uint) 0:171 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 2 (const int) 0:171 Sequence 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 subgroupPartitionedInclusiveMulNV ( global highp 2-component vector of uint) 0:171 vector swizzle ( temp highp 2-component vector of uint) 0:171 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 Constant: 0:171 1 (const int) 0:171 Constant: 0:171 2 (const int) 0:171 Sequence 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 'ballot' ( temp highp 4-component vector of uint) 0:172 move second child to first child ( temp highp 3-component vector of uint) 0:172 vector swizzle ( temp highp 3-component vector of uint) 0:172 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:172 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 2 (const int) 0:172 Sequence 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 1 (const int) 0:172 Constant: 0:172 2 (const int) 0:172 subgroupPartitionedInclusiveMulNV ( global highp 3-component vector of uint) 0:172 vector swizzle ( temp highp 3-component vector of uint) 0:172 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:172 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:172 Constant: 0:172 2 (const int) 0:172 Constant: 0:172 2 (const int) 0:172 Sequence 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 1 (const int) 0:172 Constant: 0:172 2 (const int) 0:172 'ballot' ( temp highp 4-component vector of uint) 0:173 move second child to first child ( temp highp 4-component vector of uint) 0:173 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 Constant: 0:173 0 (const int) 0:173 Constant: 0:173 2 (const int) 0:173 subgroupPartitionedInclusiveMulNV ( global highp 4-component vector of uint) 0:173 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 Constant: 0:173 3 (const int) 0:173 Constant: 0:173 2 (const int) 0:173 'ballot' ( temp highp 4-component vector of uint) 0:175 move second child to first child ( temp highp float) 0:175 direct index ( temp highp float) 0:175 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 0 (const int) 0:175 subgroupPartitionedInclusiveMinNV ( global highp float) 0:175 direct index ( temp highp float) 0:175 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 0 (const int) 0:175 'ballot' ( temp highp 4-component vector of uint) 0:176 move second child to first child ( temp highp 2-component vector of float) 0:176 vector swizzle ( temp highp 2-component vector of float) 0:176 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 0 (const int) 0:176 Sequence 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 subgroupPartitionedInclusiveMinNV ( global highp 2-component vector of float) 0:176 vector swizzle ( temp highp 2-component vector of float) 0:176 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 0 (const int) 0:176 Sequence 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 'ballot' ( temp highp 4-component vector of uint) 0:177 move second child to first child ( temp highp 3-component vector of float) 0:177 vector swizzle ( temp highp 3-component vector of float) 0:177 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:177 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 0 (const int) 0:177 Sequence 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 Constant: 0:177 2 (const int) 0:177 subgroupPartitionedInclusiveMinNV ( global highp 3-component vector of float) 0:177 vector swizzle ( temp highp 3-component vector of float) 0:177 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:177 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:177 Constant: 0:177 2 (const int) 0:177 Constant: 0:177 0 (const int) 0:177 Sequence 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 Constant: 0:177 2 (const int) 0:177 'ballot' ( temp highp 4-component vector of uint) 0:178 move second child to first child ( temp highp 4-component vector of float) 0:178 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 0 (const int) 0:178 subgroupPartitionedInclusiveMinNV ( global highp 4-component vector of float) 0:178 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 Constant: 0:178 3 (const int) 0:178 Constant: 0:178 0 (const int) 0:178 'ballot' ( temp highp 4-component vector of uint) 0:180 move second child to first child ( temp highp int) 0:180 direct index ( temp highp int) 0:180 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 0 (const int) 0:180 subgroupPartitionedInclusiveMinNV ( global highp int) 0:180 direct index ( temp highp int) 0:180 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 0 (const int) 0:180 'ballot' ( temp highp 4-component vector of uint) 0:181 move second child to first child ( temp highp 2-component vector of int) 0:181 vector swizzle ( temp highp 2-component vector of int) 0:181 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 Sequence 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 subgroupPartitionedInclusiveMinNV ( global highp 2-component vector of int) 0:181 vector swizzle ( temp highp 2-component vector of int) 0:181 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 Constant: 0:181 1 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 Sequence 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 'ballot' ( temp highp 4-component vector of uint) 0:182 move second child to first child ( temp highp 3-component vector of int) 0:182 vector swizzle ( temp highp 3-component vector of int) 0:182 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:182 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 Constant: 0:182 2 (const int) 0:182 subgroupPartitionedInclusiveMinNV ( global highp 3-component vector of int) 0:182 vector swizzle ( temp highp 3-component vector of int) 0:182 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:182 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:182 Constant: 0:182 2 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 Constant: 0:182 2 (const int) 0:182 'ballot' ( temp highp 4-component vector of uint) 0:183 move second child to first child ( temp highp 4-component vector of int) 0:183 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 Constant: 0:183 0 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 subgroupPartitionedInclusiveMinNV ( global highp 4-component vector of int) 0:183 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 Constant: 0:183 3 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 'ballot' ( temp highp 4-component vector of uint) 0:185 move second child to first child ( temp highp uint) 0:185 direct index ( temp highp uint) 0:185 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 2 (const int) 0:185 Constant: 0:185 0 (const int) 0:185 subgroupPartitionedInclusiveMinNV ( global highp uint) 0:185 direct index ( temp highp uint) 0:185 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 2 (const int) 0:185 Constant: 0:185 0 (const int) 0:185 'ballot' ( temp highp 4-component vector of uint) 0:186 move second child to first child ( temp highp 2-component vector of uint) 0:186 vector swizzle ( temp highp 2-component vector of uint) 0:186 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 2 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 subgroupPartitionedInclusiveMinNV ( global highp 2-component vector of uint) 0:186 vector swizzle ( temp highp 2-component vector of uint) 0:186 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 2 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 'ballot' ( temp highp 4-component vector of uint) 0:187 move second child to first child ( temp highp 3-component vector of uint) 0:187 vector swizzle ( temp highp 3-component vector of uint) 0:187 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:187 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 2 (const int) 0:187 Sequence 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 1 (const int) 0:187 Constant: 0:187 2 (const int) 0:187 subgroupPartitionedInclusiveMinNV ( global highp 3-component vector of uint) 0:187 vector swizzle ( temp highp 3-component vector of uint) 0:187 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:187 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:187 Constant: 0:187 2 (const int) 0:187 Constant: 0:187 2 (const int) 0:187 Sequence 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 1 (const int) 0:187 Constant: 0:187 2 (const int) 0:187 'ballot' ( temp highp 4-component vector of uint) 0:188 move second child to first child ( temp highp 4-component vector of uint) 0:188 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 Constant: 0:188 0 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 subgroupPartitionedInclusiveMinNV ( global highp 4-component vector of uint) 0:188 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 Constant: 0:188 3 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 'ballot' ( temp highp 4-component vector of uint) 0:190 move second child to first child ( temp highp float) 0:190 direct index ( temp highp float) 0:190 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 Constant: 0:190 1 (const int) 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 0 (const int) 0:190 subgroupPartitionedInclusiveMaxNV ( global highp float) 0:190 direct index ( temp highp float) 0:190 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 0 (const int) 0:190 'ballot' ( temp highp 4-component vector of uint) 0:191 move second child to first child ( temp highp 2-component vector of float) 0:191 vector swizzle ( temp highp 2-component vector of float) 0:191 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 subgroupPartitionedInclusiveMaxNV ( global highp 2-component vector of float) 0:191 vector swizzle ( temp highp 2-component vector of float) 0:191 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 'ballot' ( temp highp 4-component vector of uint) 0:192 move second child to first child ( temp highp 3-component vector of float) 0:192 vector swizzle ( temp highp 3-component vector of float) 0:192 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:192 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:192 Constant: 0:192 1 (const int) 0:192 Constant: 0:192 0 (const int) 0:192 Sequence 0:192 Constant: 0:192 0 (const int) 0:192 Constant: 0:192 1 (const int) 0:192 Constant: 0:192 2 (const int) 0:192 subgroupPartitionedInclusiveMaxNV ( global highp 3-component vector of float) 0:192 vector swizzle ( temp highp 3-component vector of float) 0:192 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:192 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:192 Constant: 0:192 2 (const int) 0:192 Constant: 0:192 0 (const int) 0:192 Sequence 0:192 Constant: 0:192 0 (const int) 0:192 Constant: 0:192 1 (const int) 0:192 Constant: 0:192 2 (const int) 0:192 'ballot' ( temp highp 4-component vector of uint) 0:193 move second child to first child ( temp highp 4-component vector of float) 0:193 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 subgroupPartitionedInclusiveMaxNV ( global highp 4-component vector of float) 0:193 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 Constant: 0:193 3 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 'ballot' ( temp highp 4-component vector of uint) 0:195 move second child to first child ( temp highp int) 0:195 direct index ( temp highp int) 0:195 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 0 (const int) 0:195 subgroupPartitionedInclusiveMaxNV ( global highp int) 0:195 direct index ( temp highp int) 0:195 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 0 (const int) 0:195 'ballot' ( temp highp 4-component vector of uint) 0:196 move second child to first child ( temp highp 2-component vector of int) 0:196 vector swizzle ( temp highp 2-component vector of int) 0:196 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Sequence 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 subgroupPartitionedInclusiveMaxNV ( global highp 2-component vector of int) 0:196 vector swizzle ( temp highp 2-component vector of int) 0:196 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Sequence 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 'ballot' ( temp highp 4-component vector of uint) 0:197 move second child to first child ( temp highp 3-component vector of int) 0:197 vector swizzle ( temp highp 3-component vector of int) 0:197 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:197 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Sequence 0:197 Constant: 0:197 0 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 2 (const int) 0:197 subgroupPartitionedInclusiveMaxNV ( global highp 3-component vector of int) 0:197 vector swizzle ( temp highp 3-component vector of int) 0:197 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:197 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:197 Constant: 0:197 2 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Sequence 0:197 Constant: 0:197 0 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 2 (const int) 0:197 'ballot' ( temp highp 4-component vector of uint) 0:198 move second child to first child ( temp highp 4-component vector of int) 0:198 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 subgroupPartitionedInclusiveMaxNV ( global highp 4-component vector of int) 0:198 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 Constant: 0:198 3 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 'ballot' ( temp highp 4-component vector of uint) 0:200 move second child to first child ( temp highp uint) 0:200 direct index ( temp highp uint) 0:200 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 Constant: 0:200 1 (const int) 0:200 Constant: 0:200 2 (const int) 0:200 Constant: 0:200 0 (const int) 0:200 subgroupPartitionedInclusiveMaxNV ( global highp uint) 0:200 direct index ( temp highp uint) 0:200 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 2 (const int) 0:200 Constant: 0:200 0 (const int) 0:200 'ballot' ( temp highp 4-component vector of uint) 0:201 move second child to first child ( temp highp 2-component vector of uint) 0:201 vector swizzle ( temp highp 2-component vector of uint) 0:201 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:201 Sequence 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 subgroupPartitionedInclusiveMaxNV ( global highp 2-component vector of uint) 0:201 vector swizzle ( temp highp 2-component vector of uint) 0:201 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:201 Sequence 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 'ballot' ( temp highp 4-component vector of uint) 0:202 move second child to first child ( temp highp 3-component vector of uint) 0:202 vector swizzle ( temp highp 3-component vector of uint) 0:202 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:202 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 Sequence 0:202 Constant: 0:202 0 (const int) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 subgroupPartitionedInclusiveMaxNV ( global highp 3-component vector of uint) 0:202 vector swizzle ( temp highp 3-component vector of uint) 0:202 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:202 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:202 Constant: 0:202 2 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 Sequence 0:202 Constant: 0:202 0 (const int) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 'ballot' ( temp highp 4-component vector of uint) 0:203 move second child to first child ( temp highp 4-component vector of uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 subgroupPartitionedInclusiveMaxNV ( global highp 4-component vector of uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 Constant: 0:203 3 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 'ballot' ( temp highp 4-component vector of uint) 0:205 move second child to first child ( temp highp int) 0:205 direct index ( temp highp int) 0:205 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 0 (const int) 0:205 subgroupPartitionedInclusiveAndNV ( global highp int) 0:205 direct index ( temp highp int) 0:205 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 0 (const int) 0:205 'ballot' ( temp highp 4-component vector of uint) 0:206 move second child to first child ( temp highp 2-component vector of int) 0:206 vector swizzle ( temp highp 2-component vector of int) 0:206 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 Sequence 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 subgroupPartitionedInclusiveAndNV ( global highp 2-component vector of int) 0:206 vector swizzle ( temp highp 2-component vector of int) 0:206 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 Sequence 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 'ballot' ( temp highp 4-component vector of uint) 0:207 move second child to first child ( temp highp 3-component vector of int) 0:207 vector swizzle ( temp highp 3-component vector of int) 0:207 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:207 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 Sequence 0:207 Constant: 0:207 0 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 2 (const int) 0:207 subgroupPartitionedInclusiveAndNV ( global highp 3-component vector of int) 0:207 vector swizzle ( temp highp 3-component vector of int) 0:207 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:207 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:207 Constant: 0:207 2 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 Sequence 0:207 Constant: 0:207 0 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 2 (const int) 0:207 'ballot' ( temp highp 4-component vector of uint) 0:208 move second child to first child ( temp highp 4-component vector of int) 0:208 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 subgroupPartitionedInclusiveAndNV ( global highp 4-component vector of int) 0:208 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 Constant: 0:208 3 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 'ballot' ( temp highp 4-component vector of uint) 0:210 move second child to first child ( temp highp uint) 0:210 direct index ( temp highp uint) 0:210 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 0 (const int) 0:210 subgroupPartitionedInclusiveAndNV ( global highp uint) 0:210 direct index ( temp highp uint) 0:210 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 0 (const int) 0:210 'ballot' ( temp highp 4-component vector of uint) 0:211 move second child to first child ( temp highp 2-component vector of uint) 0:211 vector swizzle ( temp highp 2-component vector of uint) 0:211 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 Constant: 0:211 2 (const int) 0:211 Constant: 0:211 2 (const int) 0:211 Sequence 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 subgroupPartitionedInclusiveAndNV ( global highp 2-component vector of uint) 0:211 vector swizzle ( temp highp 2-component vector of uint) 0:211 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 2 (const int) 0:211 Sequence 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 'ballot' ( temp highp 4-component vector of uint) 0:212 move second child to first child ( temp highp 3-component vector of uint) 0:212 vector swizzle ( temp highp 3-component vector of uint) 0:212 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:212 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:212 Constant: 0:212 2 (const int) 0:212 Constant: 0:212 2 (const int) 0:212 Sequence 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 1 (const int) 0:212 Constant: 0:212 2 (const int) 0:212 subgroupPartitionedInclusiveAndNV ( global highp 3-component vector of uint) 0:212 vector swizzle ( temp highp 3-component vector of uint) 0:212 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:212 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:212 Constant: 0:212 2 (const int) 0:212 Constant: 0:212 2 (const int) 0:212 Sequence 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 1 (const int) 0:212 Constant: 0:212 2 (const int) 0:212 'ballot' ( temp highp 4-component vector of uint) 0:213 move second child to first child ( temp highp 4-component vector of uint) 0:213 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 Constant: 0:213 2 (const int) 0:213 Constant: 0:213 2 (const int) 0:213 subgroupPartitionedInclusiveAndNV ( global highp 4-component vector of uint) 0:213 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 Constant: 0:213 3 (const int) 0:213 Constant: 0:213 2 (const int) 0:213 'ballot' ( temp highp 4-component vector of uint) 0:215 move second child to first child ( temp highp int) 0:215 direct index ( temp highp int) 0:215 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 Constant: 0:215 2 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 0 (const int) 0:215 Convert bool to int ( temp highp int) 0:215 subgroupPartitionedInclusiveAndNV ( global bool, operation at highp) 0:215 Compare Less Than ( temp bool) 0:215 direct index ( temp highp int) 0:215 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 0 (const int) 0:215 'ballot' ( temp highp 4-component vector of uint) 0:216 move second child to first child ( temp highp 2-component vector of int) 0:216 vector swizzle ( temp highp 2-component vector of int) 0:216 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 Constant: 0:216 2 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Sequence 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Convert bool to int ( temp highp 2-component vector of int) 0:216 subgroupPartitionedInclusiveAndNV ( global 2-component vector of bool, operation at highp) 0:216 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:216 vector swizzle ( temp highp 2-component vector of int) 0:216 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Sequence 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 0 (const int) 0:216 0 (const int) 0:216 'ballot' ( temp highp 4-component vector of uint) 0:217 move second child to first child ( temp highp 3-component vector of int) 0:217 vector swizzle ( temp highp 3-component vector of int) 0:217 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:217 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:217 Constant: 0:217 2 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Sequence 0:217 Constant: 0:217 0 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Constant: 0:217 2 (const int) 0:217 Convert bool to int ( temp highp 3-component vector of int) 0:217 subgroupPartitionedInclusiveAndNV ( global 3-component vector of bool, operation at highp) 0:217 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:217 vector swizzle ( temp highp 3-component vector of int) 0:217 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:217 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:217 Constant: 0:217 1 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Sequence 0:217 Constant: 0:217 0 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Constant: 0:217 2 (const int) 0:217 Constant: 0:217 0 (const int) 0:217 0 (const int) 0:217 0 (const int) 0:217 'ballot' ( temp highp 4-component vector of uint) 0:218 move second child to first child ( temp highp 4-component vector of int) 0:218 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 Constant: 0:218 2 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Convert bool to int ( temp highp 4-component vector of int) 0:218 subgroupPartitionedInclusiveAndNV ( global 4-component vector of bool, operation at highp) 0:218 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:218 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 Constant: 0:218 1 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Constant: 0:218 0 (const int) 0:218 0 (const int) 0:218 0 (const int) 0:218 0 (const int) 0:218 'ballot' ( temp highp 4-component vector of uint) 0:220 move second child to first child ( temp highp int) 0:220 direct index ( temp highp int) 0:220 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 Constant: 0:220 2 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 0 (const int) 0:220 subgroupPartitionedInclusiveOrNV ( global highp int) 0:220 direct index ( temp highp int) 0:220 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 0 (const int) 0:220 'ballot' ( temp highp 4-component vector of uint) 0:221 move second child to first child ( temp highp 2-component vector of int) 0:221 vector swizzle ( temp highp 2-component vector of int) 0:221 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 Constant: 0:221 2 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 Sequence 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 subgroupPartitionedInclusiveOrNV ( global highp 2-component vector of int) 0:221 vector swizzle ( temp highp 2-component vector of int) 0:221 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 Constant: 0:221 1 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 Sequence 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 'ballot' ( temp highp 4-component vector of uint) 0:222 move second child to first child ( temp highp 3-component vector of int) 0:222 vector swizzle ( temp highp 3-component vector of int) 0:222 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:222 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:222 Constant: 0:222 2 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 Sequence 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 Constant: 0:222 2 (const int) 0:222 subgroupPartitionedInclusiveOrNV ( global highp 3-component vector of int) 0:222 vector swizzle ( temp highp 3-component vector of int) 0:222 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:222 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:222 Constant: 0:222 2 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 Sequence 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 Constant: 0:222 2 (const int) 0:222 'ballot' ( temp highp 4-component vector of uint) 0:223 move second child to first child ( temp highp 4-component vector of int) 0:223 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 Constant: 0:223 2 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 subgroupPartitionedInclusiveOrNV ( global highp 4-component vector of int) 0:223 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 Constant: 0:223 3 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 'ballot' ( temp highp 4-component vector of uint) 0:225 move second child to first child ( temp highp uint) 0:225 direct index ( temp highp uint) 0:225 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 Constant: 0:225 2 (const int) 0:225 Constant: 0:225 2 (const int) 0:225 Constant: 0:225 0 (const int) 0:225 subgroupPartitionedInclusiveOrNV ( global highp uint) 0:225 direct index ( temp highp uint) 0:225 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 2 (const int) 0:225 Constant: 0:225 0 (const int) 0:225 'ballot' ( temp highp 4-component vector of uint) 0:226 move second child to first child ( temp highp 2-component vector of uint) 0:226 vector swizzle ( temp highp 2-component vector of uint) 0:226 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 Constant: 0:226 2 (const int) 0:226 Constant: 0:226 2 (const int) 0:226 Sequence 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 subgroupPartitionedInclusiveOrNV ( global highp 2-component vector of uint) 0:226 vector swizzle ( temp highp 2-component vector of uint) 0:226 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 2 (const int) 0:226 Sequence 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 'ballot' ( temp highp 4-component vector of uint) 0:227 move second child to first child ( temp highp 3-component vector of uint) 0:227 vector swizzle ( temp highp 3-component vector of uint) 0:227 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:227 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:227 Constant: 0:227 2 (const int) 0:227 Constant: 0:227 2 (const int) 0:227 Sequence 0:227 Constant: 0:227 0 (const int) 0:227 Constant: 0:227 1 (const int) 0:227 Constant: 0:227 2 (const int) 0:227 subgroupPartitionedInclusiveOrNV ( global highp 3-component vector of uint) 0:227 vector swizzle ( temp highp 3-component vector of uint) 0:227 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:227 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:227 Constant: 0:227 2 (const int) 0:227 Constant: 0:227 2 (const int) 0:227 Sequence 0:227 Constant: 0:227 0 (const int) 0:227 Constant: 0:227 1 (const int) 0:227 Constant: 0:227 2 (const int) 0:227 'ballot' ( temp highp 4-component vector of uint) 0:228 move second child to first child ( temp highp 4-component vector of uint) 0:228 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 Constant: 0:228 2 (const int) 0:228 Constant: 0:228 2 (const int) 0:228 subgroupPartitionedInclusiveOrNV ( global highp 4-component vector of uint) 0:228 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 Constant: 0:228 3 (const int) 0:228 Constant: 0:228 2 (const int) 0:228 'ballot' ( temp highp 4-component vector of uint) 0:230 move second child to first child ( temp highp int) 0:230 direct index ( temp highp int) 0:230 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 Constant: 0:230 3 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 Convert bool to int ( temp highp int) 0:230 subgroupPartitionedInclusiveOrNV ( global bool, operation at highp) 0:230 Compare Less Than ( temp bool) 0:230 direct index ( temp highp int) 0:230 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 'ballot' ( temp highp 4-component vector of uint) 0:231 move second child to first child ( temp highp 2-component vector of int) 0:231 vector swizzle ( temp highp 2-component vector of int) 0:231 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 Constant: 0:231 3 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Sequence 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Convert bool to int ( temp highp 2-component vector of int) 0:231 subgroupPartitionedInclusiveOrNV ( global 2-component vector of bool, operation at highp) 0:231 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:231 vector swizzle ( temp highp 2-component vector of int) 0:231 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 Constant: 0:231 1 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Sequence 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 0 (const int) 0:231 'ballot' ( temp highp 4-component vector of uint) 0:232 move second child to first child ( temp highp 3-component vector of int) 0:232 vector swizzle ( temp highp 3-component vector of int) 0:232 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:232 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:232 Constant: 0:232 3 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 Sequence 0:232 Constant: 0:232 0 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 Constant: 0:232 2 (const int) 0:232 Convert bool to int ( temp highp 3-component vector of int) 0:232 subgroupPartitionedInclusiveOrNV ( global 3-component vector of bool, operation at highp) 0:232 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:232 vector swizzle ( temp highp 3-component vector of int) 0:232 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:232 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:232 Constant: 0:232 1 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 Sequence 0:232 Constant: 0:232 0 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 Constant: 0:232 2 (const int) 0:232 Constant: 0:232 0 (const int) 0:232 0 (const int) 0:232 0 (const int) 0:232 'ballot' ( temp highp 4-component vector of uint) 0:233 move second child to first child ( temp highp 4-component vector of int) 0:233 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 Constant: 0:233 3 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Convert bool to int ( temp highp 4-component vector of int) 0:233 subgroupPartitionedInclusiveOrNV ( global 4-component vector of bool, operation at highp) 0:233 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:233 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 0 (const int) 0:233 0 (const int) 0:233 0 (const int) 0:233 0 (const int) 0:233 'ballot' ( temp highp 4-component vector of uint) 0:235 move second child to first child ( temp highp int) 0:235 direct index ( temp highp int) 0:235 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 Constant: 0:235 3 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 0 (const int) 0:235 subgroupPartitionedInclusiveXorNV ( global highp int) 0:235 direct index ( temp highp int) 0:235 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 0 (const int) 0:235 'ballot' ( temp highp 4-component vector of uint) 0:236 move second child to first child ( temp highp 2-component vector of int) 0:236 vector swizzle ( temp highp 2-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 Constant: 0:236 3 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Sequence 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 subgroupPartitionedInclusiveXorNV ( global highp 2-component vector of int) 0:236 vector swizzle ( temp highp 2-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Sequence 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 'ballot' ( temp highp 4-component vector of uint) 0:237 move second child to first child ( temp highp 3-component vector of int) 0:237 vector swizzle ( temp highp 3-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:237 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:237 Constant: 0:237 3 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Sequence 0:237 Constant: 0:237 0 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 2 (const int) 0:237 subgroupPartitionedInclusiveXorNV ( global highp 3-component vector of int) 0:237 vector swizzle ( temp highp 3-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:237 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:237 Constant: 0:237 2 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Sequence 0:237 Constant: 0:237 0 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 2 (const int) 0:237 'ballot' ( temp highp 4-component vector of uint) 0:238 move second child to first child ( temp highp 4-component vector of int) 0:238 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 Constant: 0:238 3 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 subgroupPartitionedInclusiveXorNV ( global highp 4-component vector of int) 0:238 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 Constant: 0:238 3 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 'ballot' ( temp highp 4-component vector of uint) 0:240 move second child to first child ( temp highp uint) 0:240 direct index ( temp highp uint) 0:240 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 Constant: 0:240 3 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 Constant: 0:240 0 (const int) 0:240 subgroupPartitionedInclusiveXorNV ( global highp uint) 0:240 direct index ( temp highp uint) 0:240 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 Constant: 0:240 0 (const int) 0:240 'ballot' ( temp highp 4-component vector of uint) 0:241 move second child to first child ( temp highp 2-component vector of uint) 0:241 vector swizzle ( temp highp 2-component vector of uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 Constant: 0:241 3 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 Sequence 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 subgroupPartitionedInclusiveXorNV ( global highp 2-component vector of uint) 0:241 vector swizzle ( temp highp 2-component vector of uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 Constant: 0:241 1 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 Sequence 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 'ballot' ( temp highp 4-component vector of uint) 0:242 move second child to first child ( temp highp 3-component vector of uint) 0:242 vector swizzle ( temp highp 3-component vector of uint) 0:242 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:242 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:242 Constant: 0:242 3 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 Sequence 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 subgroupPartitionedInclusiveXorNV ( global highp 3-component vector of uint) 0:242 vector swizzle ( temp highp 3-component vector of uint) 0:242 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:242 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:242 Constant: 0:242 2 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 Sequence 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 'ballot' ( temp highp 4-component vector of uint) 0:243 move second child to first child ( temp highp 4-component vector of uint) 0:243 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 Constant: 0:243 3 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 subgroupPartitionedInclusiveXorNV ( global highp 4-component vector of uint) 0:243 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 Constant: 0:243 3 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 'ballot' ( temp highp 4-component vector of uint) 0:245 move second child to first child ( temp highp int) 0:245 direct index ( temp highp int) 0:245 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 Constant: 0:245 3 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 Convert bool to int ( temp highp int) 0:245 subgroupPartitionedInclusiveXorNV ( global bool, operation at highp) 0:245 Compare Less Than ( temp bool) 0:245 direct index ( temp highp int) 0:245 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 'ballot' ( temp highp 4-component vector of uint) 0:246 move second child to first child ( temp highp 2-component vector of int) 0:246 vector swizzle ( temp highp 2-component vector of int) 0:246 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 Constant: 0:246 3 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Sequence 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Convert bool to int ( temp highp 2-component vector of int) 0:246 subgroupPartitionedInclusiveXorNV ( global 2-component vector of bool, operation at highp) 0:246 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:246 vector swizzle ( temp highp 2-component vector of int) 0:246 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Sequence 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 0 (const int) 0:246 0 (const int) 0:246 'ballot' ( temp highp 4-component vector of uint) 0:247 move second child to first child ( temp highp 3-component vector of int) 0:247 vector swizzle ( temp highp 3-component vector of int) 0:247 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:247 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:247 Constant: 0:247 3 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 Sequence 0:247 Constant: 0:247 0 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 Constant: 0:247 2 (const int) 0:247 Convert bool to int ( temp highp 3-component vector of int) 0:247 subgroupPartitionedInclusiveXorNV ( global 3-component vector of bool, operation at highp) 0:247 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:247 vector swizzle ( temp highp 3-component vector of int) 0:247 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:247 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:247 Constant: 0:247 1 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 Sequence 0:247 Constant: 0:247 0 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 Constant: 0:247 2 (const int) 0:247 Constant: 0:247 0 (const int) 0:247 0 (const int) 0:247 0 (const int) 0:247 'ballot' ( temp highp 4-component vector of uint) 0:248 move second child to first child ( temp highp 4-component vector of int) 0:248 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 Constant: 0:248 3 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Convert bool to int ( temp highp 4-component vector of int) 0:248 subgroupPartitionedInclusiveXorNV ( global 4-component vector of bool, operation at highp) 0:248 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:248 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 0 (const int) 0:248 0 (const int) 0:248 0 (const int) 0:248 0 (const int) 0:248 'ballot' ( temp highp 4-component vector of uint) 0:250 move second child to first child ( temp highp float) 0:250 direct index ( temp highp float) 0:250 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 subgroupPartitionedExclusiveAddNV ( global highp float) 0:250 direct index ( temp highp float) 0:250 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 'ballot' ( temp highp 4-component vector of uint) 0:251 move second child to first child ( temp highp 2-component vector of float) 0:251 vector swizzle ( temp highp 2-component vector of float) 0:251 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 Sequence 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 subgroupPartitionedExclusiveAddNV ( global highp 2-component vector of float) 0:251 vector swizzle ( temp highp 2-component vector of float) 0:251 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 Sequence 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 'ballot' ( temp highp 4-component vector of uint) 0:252 move second child to first child ( temp highp 3-component vector of float) 0:252 vector swizzle ( temp highp 3-component vector of float) 0:252 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:252 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 0 (const int) 0:252 Sequence 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 2 (const int) 0:252 subgroupPartitionedExclusiveAddNV ( global highp 3-component vector of float) 0:252 vector swizzle ( temp highp 3-component vector of float) 0:252 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:252 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:252 Constant: 0:252 2 (const int) 0:252 Constant: 0:252 0 (const int) 0:252 Sequence 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 2 (const int) 0:252 'ballot' ( temp highp 4-component vector of uint) 0:253 move second child to first child ( temp highp 4-component vector of float) 0:253 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 Constant: 0:253 0 (const int) 0:253 Constant: 0:253 0 (const int) 0:253 subgroupPartitionedExclusiveAddNV ( global highp 4-component vector of float) 0:253 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 Constant: 0:253 3 (const int) 0:253 Constant: 0:253 0 (const int) 0:253 'ballot' ( temp highp 4-component vector of uint) 0:255 move second child to first child ( temp highp int) 0:255 direct index ( temp highp int) 0:255 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 0 (const int) 0:255 subgroupPartitionedExclusiveAddNV ( global highp int) 0:255 direct index ( temp highp int) 0:255 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 0 (const int) 0:255 'ballot' ( temp highp 4-component vector of uint) 0:256 move second child to first child ( temp highp 2-component vector of int) 0:256 vector swizzle ( temp highp 2-component vector of int) 0:256 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Sequence 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 subgroupPartitionedExclusiveAddNV ( global highp 2-component vector of int) 0:256 vector swizzle ( temp highp 2-component vector of int) 0:256 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 Constant: 0:256 1 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Sequence 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 'ballot' ( temp highp 4-component vector of uint) 0:257 move second child to first child ( temp highp 3-component vector of int) 0:257 vector swizzle ( temp highp 3-component vector of int) 0:257 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:257 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 Sequence 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 Constant: 0:257 2 (const int) 0:257 subgroupPartitionedExclusiveAddNV ( global highp 3-component vector of int) 0:257 vector swizzle ( temp highp 3-component vector of int) 0:257 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:257 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:257 Constant: 0:257 2 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 Sequence 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 Constant: 0:257 2 (const int) 0:257 'ballot' ( temp highp 4-component vector of uint) 0:258 move second child to first child ( temp highp 4-component vector of int) 0:258 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 1 (const int) 0:258 subgroupPartitionedExclusiveAddNV ( global highp 4-component vector of int) 0:258 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 Constant: 0:258 3 (const int) 0:258 Constant: 0:258 1 (const int) 0:258 'ballot' ( temp highp 4-component vector of uint) 0:260 move second child to first child ( temp highp uint) 0:260 direct index ( temp highp uint) 0:260 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 2 (const int) 0:260 Constant: 0:260 0 (const int) 0:260 subgroupPartitionedExclusiveAddNV ( global highp uint) 0:260 direct index ( temp highp uint) 0:260 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 2 (const int) 0:260 Constant: 0:260 0 (const int) 0:260 'ballot' ( temp highp 4-component vector of uint) 0:261 move second child to first child ( temp highp 2-component vector of uint) 0:261 vector swizzle ( temp highp 2-component vector of uint) 0:261 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 2 (const int) 0:261 Sequence 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 subgroupPartitionedExclusiveAddNV ( global highp 2-component vector of uint) 0:261 vector swizzle ( temp highp 2-component vector of uint) 0:261 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 2 (const int) 0:261 Sequence 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 'ballot' ( temp highp 4-component vector of uint) 0:262 move second child to first child ( temp highp 3-component vector of uint) 0:262 vector swizzle ( temp highp 3-component vector of uint) 0:262 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:262 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 2 (const int) 0:262 Sequence 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Constant: 0:262 2 (const int) 0:262 subgroupPartitionedExclusiveAddNV ( global highp 3-component vector of uint) 0:262 vector swizzle ( temp highp 3-component vector of uint) 0:262 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:262 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:262 Constant: 0:262 2 (const int) 0:262 Constant: 0:262 2 (const int) 0:262 Sequence 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Constant: 0:262 2 (const int) 0:262 'ballot' ( temp highp 4-component vector of uint) 0:263 move second child to first child ( temp highp 4-component vector of uint) 0:263 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 Constant: 0:263 0 (const int) 0:263 Constant: 0:263 2 (const int) 0:263 subgroupPartitionedExclusiveAddNV ( global highp 4-component vector of uint) 0:263 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 Constant: 0:263 3 (const int) 0:263 Constant: 0:263 2 (const int) 0:263 'ballot' ( temp highp 4-component vector of uint) 0:265 move second child to first child ( temp highp float) 0:265 direct index ( temp highp float) 0:265 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 subgroupPartitionedExclusiveMulNV ( global highp float) 0:265 direct index ( temp highp float) 0:265 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 'ballot' ( temp highp 4-component vector of uint) 0:266 move second child to first child ( temp highp 2-component vector of float) 0:266 vector swizzle ( temp highp 2-component vector of float) 0:266 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 Sequence 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 subgroupPartitionedExclusiveMulNV ( global highp 2-component vector of float) 0:266 vector swizzle ( temp highp 2-component vector of float) 0:266 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 Sequence 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 'ballot' ( temp highp 4-component vector of uint) 0:267 move second child to first child ( temp highp 3-component vector of float) 0:267 vector swizzle ( temp highp 3-component vector of float) 0:267 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:267 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 0 (const int) 0:267 Sequence 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 2 (const int) 0:267 subgroupPartitionedExclusiveMulNV ( global highp 3-component vector of float) 0:267 vector swizzle ( temp highp 3-component vector of float) 0:267 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:267 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:267 Constant: 0:267 2 (const int) 0:267 Constant: 0:267 0 (const int) 0:267 Sequence 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 2 (const int) 0:267 'ballot' ( temp highp 4-component vector of uint) 0:268 move second child to first child ( temp highp 4-component vector of float) 0:268 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 Constant: 0:268 0 (const int) 0:268 Constant: 0:268 0 (const int) 0:268 subgroupPartitionedExclusiveMulNV ( global highp 4-component vector of float) 0:268 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 Constant: 0:268 3 (const int) 0:268 Constant: 0:268 0 (const int) 0:268 'ballot' ( temp highp 4-component vector of uint) 0:270 move second child to first child ( temp highp int) 0:270 direct index ( temp highp int) 0:270 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 0 (const int) 0:270 subgroupPartitionedExclusiveMulNV ( global highp int) 0:270 direct index ( temp highp int) 0:270 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 0 (const int) 0:270 'ballot' ( temp highp 4-component vector of uint) 0:271 move second child to first child ( temp highp 2-component vector of int) 0:271 vector swizzle ( temp highp 2-component vector of int) 0:271 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 Constant: 0:271 1 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 Sequence 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 subgroupPartitionedExclusiveMulNV ( global highp 2-component vector of int) 0:271 vector swizzle ( temp highp 2-component vector of int) 0:271 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 Constant: 0:271 1 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 Sequence 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 'ballot' ( temp highp 4-component vector of uint) 0:272 move second child to first child ( temp highp 3-component vector of int) 0:272 vector swizzle ( temp highp 3-component vector of int) 0:272 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:272 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:272 Constant: 0:272 1 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 Sequence 0:272 Constant: 0:272 0 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 Constant: 0:272 2 (const int) 0:272 subgroupPartitionedExclusiveMulNV ( global highp 3-component vector of int) 0:272 vector swizzle ( temp highp 3-component vector of int) 0:272 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:272 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:272 Constant: 0:272 2 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 Sequence 0:272 Constant: 0:272 0 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 Constant: 0:272 2 (const int) 0:272 'ballot' ( temp highp 4-component vector of uint) 0:273 move second child to first child ( temp highp 4-component vector of int) 0:273 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 Constant: 0:273 1 (const int) 0:273 Constant: 0:273 1 (const int) 0:273 subgroupPartitionedExclusiveMulNV ( global highp 4-component vector of int) 0:273 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 Constant: 0:273 3 (const int) 0:273 Constant: 0:273 1 (const int) 0:273 'ballot' ( temp highp 4-component vector of uint) 0:275 move second child to first child ( temp highp uint) 0:275 direct index ( temp highp uint) 0:275 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 Constant: 0:275 1 (const int) 0:275 Constant: 0:275 2 (const int) 0:275 Constant: 0:275 0 (const int) 0:275 subgroupPartitionedExclusiveMulNV ( global highp uint) 0:275 direct index ( temp highp uint) 0:275 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 2 (const int) 0:275 Constant: 0:275 0 (const int) 0:275 'ballot' ( temp highp 4-component vector of uint) 0:276 move second child to first child ( temp highp 2-component vector of uint) 0:276 vector swizzle ( temp highp 2-component vector of uint) 0:276 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 Constant: 0:276 1 (const int) 0:276 Constant: 0:276 2 (const int) 0:276 Sequence 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 1 (const int) 0:276 subgroupPartitionedExclusiveMulNV ( global highp 2-component vector of uint) 0:276 vector swizzle ( temp highp 2-component vector of uint) 0:276 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 Constant: 0:276 1 (const int) 0:276 Constant: 0:276 2 (const int) 0:276 Sequence 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 1 (const int) 0:276 'ballot' ( temp highp 4-component vector of uint) 0:277 move second child to first child ( temp highp 3-component vector of uint) 0:277 vector swizzle ( temp highp 3-component vector of uint) 0:277 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:277 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 2 (const int) 0:277 Sequence 0:277 Constant: 0:277 0 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 2 (const int) 0:277 subgroupPartitionedExclusiveMulNV ( global highp 3-component vector of uint) 0:277 vector swizzle ( temp highp 3-component vector of uint) 0:277 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:277 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:277 Constant: 0:277 2 (const int) 0:277 Constant: 0:277 2 (const int) 0:277 Sequence 0:277 Constant: 0:277 0 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 2 (const int) 0:277 'ballot' ( temp highp 4-component vector of uint) 0:278 move second child to first child ( temp highp 4-component vector of uint) 0:278 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 2 (const int) 0:278 subgroupPartitionedExclusiveMulNV ( global highp 4-component vector of uint) 0:278 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 Constant: 0:278 3 (const int) 0:278 Constant: 0:278 2 (const int) 0:278 'ballot' ( temp highp 4-component vector of uint) 0:280 move second child to first child ( temp highp float) 0:280 direct index ( temp highp float) 0:280 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 Constant: 0:280 1 (const int) 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 0 (const int) 0:280 subgroupPartitionedExclusiveMinNV ( global highp float) 0:280 direct index ( temp highp float) 0:280 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 0 (const int) 0:280 'ballot' ( temp highp 4-component vector of uint) 0:281 move second child to first child ( temp highp 2-component vector of float) 0:281 vector swizzle ( temp highp 2-component vector of float) 0:281 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 0 (const int) 0:281 Sequence 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 subgroupPartitionedExclusiveMinNV ( global highp 2-component vector of float) 0:281 vector swizzle ( temp highp 2-component vector of float) 0:281 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 0 (const int) 0:281 Sequence 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 'ballot' ( temp highp 4-component vector of uint) 0:282 move second child to first child ( temp highp 3-component vector of float) 0:282 vector swizzle ( temp highp 3-component vector of float) 0:282 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:282 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:282 Constant: 0:282 1 (const int) 0:282 Constant: 0:282 0 (const int) 0:282 Sequence 0:282 Constant: 0:282 0 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 Constant: 0:282 2 (const int) 0:282 subgroupPartitionedExclusiveMinNV ( global highp 3-component vector of float) 0:282 vector swizzle ( temp highp 3-component vector of float) 0:282 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:282 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:282 Constant: 0:282 2 (const int) 0:282 Constant: 0:282 0 (const int) 0:282 Sequence 0:282 Constant: 0:282 0 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 Constant: 0:282 2 (const int) 0:282 'ballot' ( temp highp 4-component vector of uint) 0:283 move second child to first child ( temp highp 4-component vector of float) 0:283 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 Constant: 0:283 1 (const int) 0:283 Constant: 0:283 0 (const int) 0:283 subgroupPartitionedExclusiveMinNV ( global highp 4-component vector of float) 0:283 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 Constant: 0:283 3 (const int) 0:283 Constant: 0:283 0 (const int) 0:283 'ballot' ( temp highp 4-component vector of uint) 0:285 move second child to first child ( temp highp int) 0:285 direct index ( temp highp int) 0:285 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 0 (const int) 0:285 subgroupPartitionedExclusiveMinNV ( global highp int) 0:285 direct index ( temp highp int) 0:285 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 0 (const int) 0:285 'ballot' ( temp highp 4-component vector of uint) 0:286 move second child to first child ( temp highp 2-component vector of int) 0:286 vector swizzle ( temp highp 2-component vector of int) 0:286 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 Sequence 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 subgroupPartitionedExclusiveMinNV ( global highp 2-component vector of int) 0:286 vector swizzle ( temp highp 2-component vector of int) 0:286 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 Sequence 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 'ballot' ( temp highp 4-component vector of uint) 0:287 move second child to first child ( temp highp 3-component vector of int) 0:287 vector swizzle ( temp highp 3-component vector of int) 0:287 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:287 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:287 Constant: 0:287 1 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 Sequence 0:287 Constant: 0:287 0 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 Constant: 0:287 2 (const int) 0:287 subgroupPartitionedExclusiveMinNV ( global highp 3-component vector of int) 0:287 vector swizzle ( temp highp 3-component vector of int) 0:287 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:287 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:287 Constant: 0:287 2 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 Sequence 0:287 Constant: 0:287 0 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 Constant: 0:287 2 (const int) 0:287 'ballot' ( temp highp 4-component vector of uint) 0:288 move second child to first child ( temp highp 4-component vector of int) 0:288 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 subgroupPartitionedExclusiveMinNV ( global highp 4-component vector of int) 0:288 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 Constant: 0:288 3 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 'ballot' ( temp highp 4-component vector of uint) 0:290 move second child to first child ( temp highp uint) 0:290 direct index ( temp highp uint) 0:290 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 0 (const int) 0:290 subgroupPartitionedExclusiveMinNV ( global highp uint) 0:290 direct index ( temp highp uint) 0:290 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 0 (const int) 0:290 'ballot' ( temp highp 4-component vector of uint) 0:291 move second child to first child ( temp highp 2-component vector of uint) 0:291 vector swizzle ( temp highp 2-component vector of uint) 0:291 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 Constant: 0:291 2 (const int) 0:291 Constant: 0:291 2 (const int) 0:291 Sequence 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 subgroupPartitionedExclusiveMinNV ( global highp 2-component vector of uint) 0:291 vector swizzle ( temp highp 2-component vector of uint) 0:291 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 2 (const int) 0:291 Sequence 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 'ballot' ( temp highp 4-component vector of uint) 0:292 move second child to first child ( temp highp 3-component vector of uint) 0:292 vector swizzle ( temp highp 3-component vector of uint) 0:292 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:292 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:292 Constant: 0:292 2 (const int) 0:292 Constant: 0:292 2 (const int) 0:292 Sequence 0:292 Constant: 0:292 0 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Constant: 0:292 2 (const int) 0:292 subgroupPartitionedExclusiveMinNV ( global highp 3-component vector of uint) 0:292 vector swizzle ( temp highp 3-component vector of uint) 0:292 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:292 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:292 Constant: 0:292 2 (const int) 0:292 Constant: 0:292 2 (const int) 0:292 Sequence 0:292 Constant: 0:292 0 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Constant: 0:292 2 (const int) 0:292 'ballot' ( temp highp 4-component vector of uint) 0:293 move second child to first child ( temp highp 4-component vector of uint) 0:293 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 Constant: 0:293 2 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 subgroupPartitionedExclusiveMinNV ( global highp 4-component vector of uint) 0:293 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 Constant: 0:293 3 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 'ballot' ( temp highp 4-component vector of uint) 0:295 move second child to first child ( temp highp float) 0:295 direct index ( temp highp float) 0:295 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 Constant: 0:295 2 (const int) 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 0 (const int) 0:295 subgroupPartitionedExclusiveMaxNV ( global highp float) 0:295 direct index ( temp highp float) 0:295 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 0 (const int) 0:295 'ballot' ( temp highp 4-component vector of uint) 0:296 move second child to first child ( temp highp 2-component vector of float) 0:296 vector swizzle ( temp highp 2-component vector of float) 0:296 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 Constant: 0:296 2 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 Sequence 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 subgroupPartitionedExclusiveMaxNV ( global highp 2-component vector of float) 0:296 vector swizzle ( temp highp 2-component vector of float) 0:296 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 Constant: 0:296 1 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 Sequence 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 'ballot' ( temp highp 4-component vector of uint) 0:297 move second child to first child ( temp highp 3-component vector of float) 0:297 vector swizzle ( temp highp 3-component vector of float) 0:297 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:297 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:297 Constant: 0:297 2 (const int) 0:297 Constant: 0:297 0 (const int) 0:297 Sequence 0:297 Constant: 0:297 0 (const int) 0:297 Constant: 0:297 1 (const int) 0:297 Constant: 0:297 2 (const int) 0:297 subgroupPartitionedExclusiveMaxNV ( global highp 3-component vector of float) 0:297 vector swizzle ( temp highp 3-component vector of float) 0:297 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:297 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:297 Constant: 0:297 2 (const int) 0:297 Constant: 0:297 0 (const int) 0:297 Sequence 0:297 Constant: 0:297 0 (const int) 0:297 Constant: 0:297 1 (const int) 0:297 Constant: 0:297 2 (const int) 0:297 'ballot' ( temp highp 4-component vector of uint) 0:298 move second child to first child ( temp highp 4-component vector of float) 0:298 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 Constant: 0:298 2 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 subgroupPartitionedExclusiveMaxNV ( global highp 4-component vector of float) 0:298 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 Constant: 0:298 3 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 'ballot' ( temp highp 4-component vector of uint) 0:300 move second child to first child ( temp highp int) 0:300 direct index ( temp highp int) 0:300 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 Constant: 0:300 2 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 0 (const int) 0:300 subgroupPartitionedExclusiveMaxNV ( global highp int) 0:300 direct index ( temp highp int) 0:300 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 0 (const int) 0:300 'ballot' ( temp highp 4-component vector of uint) 0:301 move second child to first child ( temp highp 2-component vector of int) 0:301 vector swizzle ( temp highp 2-component vector of int) 0:301 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 Constant: 0:301 2 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Sequence 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 subgroupPartitionedExclusiveMaxNV ( global highp 2-component vector of int) 0:301 vector swizzle ( temp highp 2-component vector of int) 0:301 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Sequence 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 'ballot' ( temp highp 4-component vector of uint) 0:302 move second child to first child ( temp highp 3-component vector of int) 0:302 vector swizzle ( temp highp 3-component vector of int) 0:302 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:302 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:302 Constant: 0:302 2 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Sequence 0:302 Constant: 0:302 0 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Constant: 0:302 2 (const int) 0:302 subgroupPartitionedExclusiveMaxNV ( global highp 3-component vector of int) 0:302 vector swizzle ( temp highp 3-component vector of int) 0:302 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:302 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:302 Constant: 0:302 2 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Sequence 0:302 Constant: 0:302 0 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Constant: 0:302 2 (const int) 0:302 'ballot' ( temp highp 4-component vector of uint) 0:303 move second child to first child ( temp highp 4-component vector of int) 0:303 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 Constant: 0:303 2 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 subgroupPartitionedExclusiveMaxNV ( global highp 4-component vector of int) 0:303 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 Constant: 0:303 3 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 'ballot' ( temp highp 4-component vector of uint) 0:305 move second child to first child ( temp highp uint) 0:305 direct index ( temp highp uint) 0:305 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 Constant: 0:305 2 (const int) 0:305 Constant: 0:305 2 (const int) 0:305 Constant: 0:305 0 (const int) 0:305 subgroupPartitionedExclusiveMaxNV ( global highp uint) 0:305 direct index ( temp highp uint) 0:305 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 2 (const int) 0:305 Constant: 0:305 0 (const int) 0:305 'ballot' ( temp highp 4-component vector of uint) 0:306 move second child to first child ( temp highp 2-component vector of uint) 0:306 vector swizzle ( temp highp 2-component vector of uint) 0:306 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 Constant: 0:306 2 (const int) 0:306 Constant: 0:306 2 (const int) 0:306 Sequence 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 subgroupPartitionedExclusiveMaxNV ( global highp 2-component vector of uint) 0:306 vector swizzle ( temp highp 2-component vector of uint) 0:306 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 Constant: 0:306 1 (const int) 0:306 Constant: 0:306 2 (const int) 0:306 Sequence 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 'ballot' ( temp highp 4-component vector of uint) 0:307 move second child to first child ( temp highp 3-component vector of uint) 0:307 vector swizzle ( temp highp 3-component vector of uint) 0:307 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:307 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:307 Constant: 0:307 2 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 Sequence 0:307 Constant: 0:307 0 (const int) 0:307 Constant: 0:307 1 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 subgroupPartitionedExclusiveMaxNV ( global highp 3-component vector of uint) 0:307 vector swizzle ( temp highp 3-component vector of uint) 0:307 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:307 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:307 Constant: 0:307 2 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 Sequence 0:307 Constant: 0:307 0 (const int) 0:307 Constant: 0:307 1 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 'ballot' ( temp highp 4-component vector of uint) 0:308 move second child to first child ( temp highp 4-component vector of uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 subgroupPartitionedExclusiveMaxNV ( global highp 4-component vector of uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 Constant: 0:308 3 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 'ballot' ( temp highp 4-component vector of uint) 0:310 move second child to first child ( temp highp int) 0:310 direct index ( temp highp int) 0:310 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 Constant: 0:310 2 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 0 (const int) 0:310 subgroupPartitionedExclusiveAndNV ( global highp int) 0:310 direct index ( temp highp int) 0:310 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 0 (const int) 0:310 'ballot' ( temp highp 4-component vector of uint) 0:311 move second child to first child ( temp highp 2-component vector of int) 0:311 vector swizzle ( temp highp 2-component vector of int) 0:311 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 Constant: 0:311 2 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 Sequence 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 subgroupPartitionedExclusiveAndNV ( global highp 2-component vector of int) 0:311 vector swizzle ( temp highp 2-component vector of int) 0:311 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 Constant: 0:311 1 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 Sequence 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 'ballot' ( temp highp 4-component vector of uint) 0:312 move second child to first child ( temp highp 3-component vector of int) 0:312 vector swizzle ( temp highp 3-component vector of int) 0:312 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:312 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:312 Constant: 0:312 2 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 Sequence 0:312 Constant: 0:312 0 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 Constant: 0:312 2 (const int) 0:312 subgroupPartitionedExclusiveAndNV ( global highp 3-component vector of int) 0:312 vector swizzle ( temp highp 3-component vector of int) 0:312 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:312 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:312 Constant: 0:312 2 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 Sequence 0:312 Constant: 0:312 0 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 Constant: 0:312 2 (const int) 0:312 'ballot' ( temp highp 4-component vector of uint) 0:313 move second child to first child ( temp highp 4-component vector of int) 0:313 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 Constant: 0:313 2 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 subgroupPartitionedExclusiveAndNV ( global highp 4-component vector of int) 0:313 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 Constant: 0:313 3 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 'ballot' ( temp highp 4-component vector of uint) 0:315 move second child to first child ( temp highp uint) 0:315 direct index ( temp highp uint) 0:315 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 Constant: 0:315 2 (const int) 0:315 Constant: 0:315 2 (const int) 0:315 Constant: 0:315 0 (const int) 0:315 subgroupPartitionedExclusiveAndNV ( global highp uint) 0:315 direct index ( temp highp uint) 0:315 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 2 (const int) 0:315 Constant: 0:315 0 (const int) 0:315 'ballot' ( temp highp 4-component vector of uint) 0:316 move second child to first child ( temp highp 2-component vector of uint) 0:316 vector swizzle ( temp highp 2-component vector of uint) 0:316 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 Constant: 0:316 2 (const int) 0:316 Constant: 0:316 2 (const int) 0:316 Sequence 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 subgroupPartitionedExclusiveAndNV ( global highp 2-component vector of uint) 0:316 vector swizzle ( temp highp 2-component vector of uint) 0:316 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 2 (const int) 0:316 Sequence 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 'ballot' ( temp highp 4-component vector of uint) 0:317 move second child to first child ( temp highp 3-component vector of uint) 0:317 vector swizzle ( temp highp 3-component vector of uint) 0:317 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:317 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:317 Constant: 0:317 2 (const int) 0:317 Constant: 0:317 2 (const int) 0:317 Sequence 0:317 Constant: 0:317 0 (const int) 0:317 Constant: 0:317 1 (const int) 0:317 Constant: 0:317 2 (const int) 0:317 subgroupPartitionedExclusiveAndNV ( global highp 3-component vector of uint) 0:317 vector swizzle ( temp highp 3-component vector of uint) 0:317 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:317 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:317 Constant: 0:317 2 (const int) 0:317 Constant: 0:317 2 (const int) 0:317 Sequence 0:317 Constant: 0:317 0 (const int) 0:317 Constant: 0:317 1 (const int) 0:317 Constant: 0:317 2 (const int) 0:317 'ballot' ( temp highp 4-component vector of uint) 0:318 move second child to first child ( temp highp 4-component vector of uint) 0:318 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 Constant: 0:318 2 (const int) 0:318 Constant: 0:318 2 (const int) 0:318 subgroupPartitionedExclusiveAndNV ( global highp 4-component vector of uint) 0:318 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 Constant: 0:318 3 (const int) 0:318 Constant: 0:318 2 (const int) 0:318 'ballot' ( temp highp 4-component vector of uint) 0:320 move second child to first child ( temp highp int) 0:320 direct index ( temp highp int) 0:320 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 Constant: 0:320 3 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 0 (const int) 0:320 Convert bool to int ( temp highp int) 0:320 subgroupPartitionedExclusiveAndNV ( global bool, operation at highp) 0:320 Compare Less Than ( temp bool) 0:320 direct index ( temp highp int) 0:320 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 0 (const int) 0:320 'ballot' ( temp highp 4-component vector of uint) 0:321 move second child to first child ( temp highp 2-component vector of int) 0:321 vector swizzle ( temp highp 2-component vector of int) 0:321 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 Constant: 0:321 3 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Sequence 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Convert bool to int ( temp highp 2-component vector of int) 0:321 subgroupPartitionedExclusiveAndNV ( global 2-component vector of bool, operation at highp) 0:321 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:321 vector swizzle ( temp highp 2-component vector of int) 0:321 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Sequence 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 0 (const int) 0:321 0 (const int) 0:321 'ballot' ( temp highp 4-component vector of uint) 0:322 move second child to first child ( temp highp 3-component vector of int) 0:322 vector swizzle ( temp highp 3-component vector of int) 0:322 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:322 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:322 Constant: 0:322 3 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Sequence 0:322 Constant: 0:322 0 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Constant: 0:322 2 (const int) 0:322 Convert bool to int ( temp highp 3-component vector of int) 0:322 subgroupPartitionedExclusiveAndNV ( global 3-component vector of bool, operation at highp) 0:322 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:322 vector swizzle ( temp highp 3-component vector of int) 0:322 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:322 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:322 Constant: 0:322 1 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Sequence 0:322 Constant: 0:322 0 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Constant: 0:322 2 (const int) 0:322 Constant: 0:322 0 (const int) 0:322 0 (const int) 0:322 0 (const int) 0:322 'ballot' ( temp highp 4-component vector of uint) 0:323 move second child to first child ( temp highp 4-component vector of int) 0:323 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 Constant: 0:323 3 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Convert bool to int ( temp highp 4-component vector of int) 0:323 subgroupPartitionedExclusiveAndNV ( global 4-component vector of bool, operation at highp) 0:323 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:323 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 0 (const int) 0:323 0 (const int) 0:323 0 (const int) 0:323 0 (const int) 0:323 'ballot' ( temp highp 4-component vector of uint) 0:325 move second child to first child ( temp highp int) 0:325 direct index ( temp highp int) 0:325 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 Constant: 0:325 3 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 0 (const int) 0:325 subgroupPartitionedExclusiveOrNV ( global highp int) 0:325 direct index ( temp highp int) 0:325 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 0 (const int) 0:325 'ballot' ( temp highp 4-component vector of uint) 0:326 move second child to first child ( temp highp 2-component vector of int) 0:326 vector swizzle ( temp highp 2-component vector of int) 0:326 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 Constant: 0:326 3 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 Sequence 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 subgroupPartitionedExclusiveOrNV ( global highp 2-component vector of int) 0:326 vector swizzle ( temp highp 2-component vector of int) 0:326 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 Constant: 0:326 1 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 Sequence 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 'ballot' ( temp highp 4-component vector of uint) 0:327 move second child to first child ( temp highp 3-component vector of int) 0:327 vector swizzle ( temp highp 3-component vector of int) 0:327 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:327 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:327 Constant: 0:327 3 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 Sequence 0:327 Constant: 0:327 0 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 Constant: 0:327 2 (const int) 0:327 subgroupPartitionedExclusiveOrNV ( global highp 3-component vector of int) 0:327 vector swizzle ( temp highp 3-component vector of int) 0:327 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:327 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:327 Constant: 0:327 2 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 Sequence 0:327 Constant: 0:327 0 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 Constant: 0:327 2 (const int) 0:327 'ballot' ( temp highp 4-component vector of uint) 0:328 move second child to first child ( temp highp 4-component vector of int) 0:328 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 Constant: 0:328 3 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 subgroupPartitionedExclusiveOrNV ( global highp 4-component vector of int) 0:328 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 Constant: 0:328 3 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 'ballot' ( temp highp 4-component vector of uint) 0:330 move second child to first child ( temp highp uint) 0:330 direct index ( temp highp uint) 0:330 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 Constant: 0:330 3 (const int) 0:330 Constant: 0:330 2 (const int) 0:330 Constant: 0:330 0 (const int) 0:330 subgroupPartitionedExclusiveOrNV ( global highp uint) 0:330 direct index ( temp highp uint) 0:330 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 2 (const int) 0:330 Constant: 0:330 0 (const int) 0:330 'ballot' ( temp highp 4-component vector of uint) 0:331 move second child to first child ( temp highp 2-component vector of uint) 0:331 vector swizzle ( temp highp 2-component vector of uint) 0:331 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 Constant: 0:331 3 (const int) 0:331 Constant: 0:331 2 (const int) 0:331 Sequence 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 subgroupPartitionedExclusiveOrNV ( global highp 2-component vector of uint) 0:331 vector swizzle ( temp highp 2-component vector of uint) 0:331 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 2 (const int) 0:331 Sequence 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 'ballot' ( temp highp 4-component vector of uint) 0:332 move second child to first child ( temp highp 3-component vector of uint) 0:332 vector swizzle ( temp highp 3-component vector of uint) 0:332 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:332 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:332 Constant: 0:332 3 (const int) 0:332 Constant: 0:332 2 (const int) 0:332 Sequence 0:332 Constant: 0:332 0 (const int) 0:332 Constant: 0:332 1 (const int) 0:332 Constant: 0:332 2 (const int) 0:332 subgroupPartitionedExclusiveOrNV ( global highp 3-component vector of uint) 0:332 vector swizzle ( temp highp 3-component vector of uint) 0:332 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:332 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:332 Constant: 0:332 2 (const int) 0:332 Constant: 0:332 2 (const int) 0:332 Sequence 0:332 Constant: 0:332 0 (const int) 0:332 Constant: 0:332 1 (const int) 0:332 Constant: 0:332 2 (const int) 0:332 'ballot' ( temp highp 4-component vector of uint) 0:333 move second child to first child ( temp highp 4-component vector of uint) 0:333 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:333 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:333 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:333 Constant: 0:333 3 (const int) 0:333 Constant: 0:333 2 (const int) 0:333 subgroupPartitionedExclusiveOrNV ( global highp 4-component vector of uint) 0:333 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:333 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:333 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:333 Constant: 0:333 3 (const int) 0:333 Constant: 0:333 2 (const int) 0:333 'ballot' ( temp highp 4-component vector of uint) 0:335 move second child to first child ( temp highp int) 0:335 direct index ( temp highp int) 0:335 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:335 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:335 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:335 Constant: 0:335 3 (const int) 0:335 Constant: 0:335 1 (const int) 0:335 Constant: 0:335 0 (const int) 0:335 Convert bool to int ( temp highp int) 0:335 subgroupPartitionedExclusiveOrNV ( global bool, operation at highp) 0:335 Compare Less Than ( temp bool) 0:335 direct index ( temp highp int) 0:335 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:335 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:335 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:335 Constant: 0:335 0 (const int) 0:335 Constant: 0:335 1 (const int) 0:335 Constant: 0:335 0 (const int) 0:335 Constant: 0:335 0 (const int) 0:335 'ballot' ( temp highp 4-component vector of uint) 0:336 move second child to first child ( temp highp 2-component vector of int) 0:336 vector swizzle ( temp highp 2-component vector of int) 0:336 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:336 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:336 Constant: 0:336 3 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Sequence 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Convert bool to int ( temp highp 2-component vector of int) 0:336 subgroupPartitionedExclusiveOrNV ( global 2-component vector of bool, operation at highp) 0:336 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:336 vector swizzle ( temp highp 2-component vector of int) 0:336 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:336 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:336 Constant: 0:336 1 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Sequence 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Constant: 0:336 0 (const int) 0:336 0 (const int) 0:336 'ballot' ( temp highp 4-component vector of uint) 0:337 move second child to first child ( temp highp 3-component vector of int) 0:337 vector swizzle ( temp highp 3-component vector of int) 0:337 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:337 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:337 Constant: 0:337 3 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 Sequence 0:337 Constant: 0:337 0 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 Constant: 0:337 2 (const int) 0:337 Convert bool to int ( temp highp 3-component vector of int) 0:337 subgroupPartitionedExclusiveOrNV ( global 3-component vector of bool, operation at highp) 0:337 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:337 vector swizzle ( temp highp 3-component vector of int) 0:337 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:337 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:337 Constant: 0:337 1 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 Sequence 0:337 Constant: 0:337 0 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 Constant: 0:337 2 (const int) 0:337 Constant: 0:337 0 (const int) 0:337 0 (const int) 0:337 0 (const int) 0:337 'ballot' ( temp highp 4-component vector of uint) 0:338 move second child to first child ( temp highp 4-component vector of int) 0:338 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:338 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:338 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:338 Constant: 0:338 3 (const int) 0:338 Constant: 0:338 1 (const int) 0:338 Convert bool to int ( temp highp 4-component vector of int) 0:338 subgroupPartitionedExclusiveOrNV ( global 4-component vector of bool, operation at highp) 0:338 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:338 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:338 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:338 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:338 Constant: 0:338 1 (const int) 0:338 Constant: 0:338 1 (const int) 0:338 Constant: 0:338 0 (const int) 0:338 0 (const int) 0:338 0 (const int) 0:338 0 (const int) 0:338 'ballot' ( temp highp 4-component vector of uint) 0:340 move second child to first child ( temp highp int) 0:340 direct index ( temp highp int) 0:340 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:340 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:340 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:340 Constant: 0:340 3 (const int) 0:340 Constant: 0:340 1 (const int) 0:340 Constant: 0:340 0 (const int) 0:340 subgroupPartitionedExclusiveXorNV ( global highp int) 0:340 direct index ( temp highp int) 0:340 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:340 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:340 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:340 Constant: 0:340 0 (const int) 0:340 Constant: 0:340 1 (const int) 0:340 Constant: 0:340 0 (const int) 0:340 'ballot' ( temp highp 4-component vector of uint) 0:341 move second child to first child ( temp highp 2-component vector of int) 0:341 vector swizzle ( temp highp 2-component vector of int) 0:341 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:341 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:341 Constant: 0:341 3 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Sequence 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 subgroupPartitionedExclusiveXorNV ( global highp 2-component vector of int) 0:341 vector swizzle ( temp highp 2-component vector of int) 0:341 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:341 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Sequence 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 'ballot' ( temp highp 4-component vector of uint) 0:342 move second child to first child ( temp highp 3-component vector of int) 0:342 vector swizzle ( temp highp 3-component vector of int) 0:342 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:342 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:342 Constant: 0:342 3 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Sequence 0:342 Constant: 0:342 0 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Constant: 0:342 2 (const int) 0:342 subgroupPartitionedExclusiveXorNV ( global highp 3-component vector of int) 0:342 vector swizzle ( temp highp 3-component vector of int) 0:342 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:342 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:342 Constant: 0:342 2 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Sequence 0:342 Constant: 0:342 0 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Constant: 0:342 2 (const int) 0:342 'ballot' ( temp highp 4-component vector of uint) 0:343 move second child to first child ( temp highp 4-component vector of int) 0:343 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:343 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:343 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:343 Constant: 0:343 3 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 subgroupPartitionedExclusiveXorNV ( global highp 4-component vector of int) 0:343 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:343 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:343 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:343 Constant: 0:343 3 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 'ballot' ( temp highp 4-component vector of uint) 0:345 move second child to first child ( temp highp uint) 0:345 direct index ( temp highp uint) 0:345 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:345 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:345 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:345 Constant: 0:345 0 (const int) 0:345 Constant: 0:345 2 (const int) 0:345 Constant: 0:345 0 (const int) 0:345 subgroupPartitionedExclusiveXorNV ( global highp uint) 0:345 direct index ( temp highp uint) 0:345 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:345 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:345 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:345 Constant: 0:345 0 (const int) 0:345 Constant: 0:345 2 (const int) 0:345 Constant: 0:345 0 (const int) 0:345 'ballot' ( temp highp 4-component vector of uint) 0:346 move second child to first child ( temp highp 2-component vector of uint) 0:346 vector swizzle ( temp highp 2-component vector of uint) 0:346 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:346 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 2 (const int) 0:346 Sequence 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 1 (const int) 0:346 subgroupPartitionedExclusiveXorNV ( global highp 2-component vector of uint) 0:346 vector swizzle ( temp highp 2-component vector of uint) 0:346 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:346 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:346 Constant: 0:346 1 (const int) 0:346 Constant: 0:346 2 (const int) 0:346 Sequence 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 1 (const int) 0:346 'ballot' ( temp highp 4-component vector of uint) 0:347 move second child to first child ( temp highp 3-component vector of uint) 0:347 vector swizzle ( temp highp 3-component vector of uint) 0:347 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:347 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 Sequence 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 1 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 subgroupPartitionedExclusiveXorNV ( global highp 3-component vector of uint) 0:347 vector swizzle ( temp highp 3-component vector of uint) 0:347 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:347 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:347 Constant: 0:347 2 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 Sequence 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 1 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 'ballot' ( temp highp 4-component vector of uint) 0:348 move second child to first child ( temp highp 4-component vector of uint) 0:348 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:348 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:348 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:348 Constant: 0:348 0 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 subgroupPartitionedExclusiveXorNV ( global highp 4-component vector of uint) 0:348 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:348 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:348 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:348 Constant: 0:348 3 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 'ballot' ( temp highp 4-component vector of uint) 0:350 move second child to first child ( temp highp int) 0:350 direct index ( temp highp int) 0:350 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:350 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:350 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 1 (const int) 0:350 Constant: 0:350 0 (const int) 0:350 Convert bool to int ( temp highp int) 0:350 subgroupPartitionedExclusiveXorNV ( global bool, operation at highp) 0:350 Compare Less Than ( temp bool) 0:350 direct index ( temp highp int) 0:350 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:350 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:350 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 1 (const int) 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 0 (const int) 0:350 'ballot' ( temp highp 4-component vector of uint) 0:351 move second child to first child ( temp highp 2-component vector of int) 0:351 vector swizzle ( temp highp 2-component vector of int) 0:351 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:351 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Sequence 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Convert bool to int ( temp highp 2-component vector of int) 0:351 subgroupPartitionedExclusiveXorNV ( global 2-component vector of bool, operation at highp) 0:351 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:351 vector swizzle ( temp highp 2-component vector of int) 0:351 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:351 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:351 Constant: 0:351 1 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Sequence 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Constant: 0:351 0 (const int) 0:351 0 (const int) 0:351 'ballot' ( temp highp 4-component vector of uint) 0:352 move second child to first child ( temp highp 3-component vector of int) 0:352 vector swizzle ( temp highp 3-component vector of int) 0:352 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:352 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 Sequence 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 Constant: 0:352 2 (const int) 0:352 Convert bool to int ( temp highp 3-component vector of int) 0:352 subgroupPartitionedExclusiveXorNV ( global 3-component vector of bool, operation at highp) 0:352 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:352 vector swizzle ( temp highp 3-component vector of int) 0:352 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:352 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:352 Constant: 0:352 1 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 Sequence 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 Constant: 0:352 2 (const int) 0:352 Constant: 0:352 0 (const int) 0:352 0 (const int) 0:352 0 (const int) 0:352 'ballot' ( temp highp 4-component vector of uint) 0:353 move second child to first child ( temp highp 4-component vector of int) 0:353 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:353 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:353 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:353 Constant: 0:353 0 (const int) 0:353 Constant: 0:353 1 (const int) 0:353 Convert bool to int ( temp highp 4-component vector of int) 0:353 subgroupPartitionedExclusiveXorNV ( global 4-component vector of bool, operation at highp) 0:353 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:353 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:353 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:353 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:353 Constant: 0:353 1 (const int) 0:353 Constant: 0:353 1 (const int) 0:353 Constant: 0:353 0 (const int) 0:353 0 (const int) 0:353 0 (const int) 0:353 0 (const int) 0:353 'ballot' ( temp highp 4-component vector of uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_NV_shader_subgroup_partitioned local_size = (8, 1, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of uint) 0:18 'ballot' ( temp highp 4-component vector of uint) 0:18 subgroupPartitionNV ( global highp 4-component vector of uint) 0:18 'invocation' ( temp highp uint) 0:20 move second child to first child ( temp highp 4-component vector of uint) 0:20 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupPartitionNV ( global highp 4-component vector of uint) 0:20 direct index ( temp highp float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp highp 4-component vector of uint) 0:21 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 subgroupPartitionNV ( global highp 4-component vector of uint) 0:21 vector swizzle ( temp highp 2-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp highp 4-component vector of uint) 0:22 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupPartitionNV ( global highp 4-component vector of uint) 0:22 vector swizzle ( temp highp 3-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:23 move second child to first child ( temp highp 4-component vector of uint) 0:23 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 2 (const int) 0:23 subgroupPartitionNV ( global highp 4-component vector of uint) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:25 move second child to first child ( temp highp 4-component vector of uint) 0:25 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupPartitionNV ( global highp 4-component vector of uint) 0:25 direct index ( temp highp int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 move second child to first child ( temp highp 4-component vector of uint) 0:26 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 subgroupPartitionNV ( global highp 4-component vector of uint) 0:26 vector swizzle ( temp highp 2-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:27 move second child to first child ( temp highp 4-component vector of uint) 0:27 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupPartitionNV ( global highp 4-component vector of uint) 0:27 vector swizzle ( temp highp 3-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:28 move second child to first child ( temp highp 4-component vector of uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 subgroupPartitionNV ( global highp 4-component vector of uint) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:30 move second child to first child ( temp highp 4-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupPartitionNV ( global highp 4-component vector of uint) 0:30 direct index ( temp highp uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupPartitionNV ( global highp 4-component vector of uint) 0:31 vector swizzle ( temp highp 2-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:32 move second child to first child ( temp highp 4-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupPartitionNV ( global highp 4-component vector of uint) 0:32 vector swizzle ( temp highp 3-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:33 move second child to first child ( temp highp 4-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 subgroupPartitionNV ( global highp 4-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 2 (const int) 0:35 move second child to first child ( temp highp 4-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupPartitionNV ( global highp 4-component vector of uint) 0:35 Convert int to bool ( temp bool) 0:35 direct index ( temp highp int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 move second child to first child ( temp highp 4-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupPartitionNV ( global highp 4-component vector of uint) 0:36 Convert int to bool ( temp 2-component vector of bool) 0:36 vector swizzle ( temp highp 2-component vector of int) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:37 move second child to first child ( temp highp 4-component vector of uint) 0:37 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupPartitionNV ( global highp 4-component vector of uint) 0:37 Convert int to bool ( temp 3-component vector of bool) 0:37 vector swizzle ( temp highp 3-component vector of int) 0:37 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:38 move second child to first child ( temp highp 4-component vector of uint) 0:38 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 subgroupPartitionNV ( global highp 4-component vector of uint) 0:38 Convert int to bool ( temp 4-component vector of bool) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:40 move second child to first child ( temp highp float) 0:40 direct index ( temp highp float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupPartitionedAddNV ( global highp float) 0:40 direct index ( temp highp float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 'ballot' ( temp highp 4-component vector of uint) 0:41 move second child to first child ( temp highp 2-component vector of float) 0:41 vector swizzle ( temp highp 2-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupPartitionedAddNV ( global highp 2-component vector of float) 0:41 vector swizzle ( temp highp 2-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 'ballot' ( temp highp 4-component vector of uint) 0:42 move second child to first child ( temp highp 3-component vector of float) 0:42 vector swizzle ( temp highp 3-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupPartitionedAddNV ( global highp 3-component vector of float) 0:42 vector swizzle ( temp highp 3-component vector of float) 0:42 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:42 Constant: 0:42 2 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 'ballot' ( temp highp 4-component vector of uint) 0:43 move second child to first child ( temp highp 4-component vector of float) 0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupPartitionedAddNV ( global highp 4-component vector of float) 0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 3 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 'ballot' ( temp highp 4-component vector of uint) 0:45 move second child to first child ( temp highp int) 0:45 direct index ( temp highp int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupPartitionedAddNV ( global highp int) 0:45 direct index ( temp highp int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 'ballot' ( temp highp 4-component vector of uint) 0:46 move second child to first child ( temp highp 2-component vector of int) 0:46 vector swizzle ( temp highp 2-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupPartitionedAddNV ( global highp 2-component vector of int) 0:46 vector swizzle ( temp highp 2-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 'ballot' ( temp highp 4-component vector of uint) 0:47 move second child to first child ( temp highp 3-component vector of int) 0:47 vector swizzle ( temp highp 3-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupPartitionedAddNV ( global highp 3-component vector of int) 0:47 vector swizzle ( temp highp 3-component vector of int) 0:47 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 'ballot' ( temp highp 4-component vector of uint) 0:48 move second child to first child ( temp highp 4-component vector of int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 subgroupPartitionedAddNV ( global highp 4-component vector of int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 3 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 'ballot' ( temp highp 4-component vector of uint) 0:50 move second child to first child ( temp highp uint) 0:50 direct index ( temp highp uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupPartitionedAddNV ( global highp uint) 0:50 direct index ( temp highp uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 'ballot' ( temp highp 4-component vector of uint) 0:51 move second child to first child ( temp highp 2-component vector of uint) 0:51 vector swizzle ( temp highp 2-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupPartitionedAddNV ( global highp 2-component vector of uint) 0:51 vector swizzle ( temp highp 2-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 'ballot' ( temp highp 4-component vector of uint) 0:52 move second child to first child ( temp highp 3-component vector of uint) 0:52 vector swizzle ( temp highp 3-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupPartitionedAddNV ( global highp 3-component vector of uint) 0:52 vector swizzle ( temp highp 3-component vector of uint) 0:52 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:52 Constant: 0:52 2 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 'ballot' ( temp highp 4-component vector of uint) 0:53 move second child to first child ( temp highp 4-component vector of uint) 0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 subgroupPartitionedAddNV ( global highp 4-component vector of uint) 0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 'ballot' ( temp highp 4-component vector of uint) 0:55 move second child to first child ( temp highp float) 0:55 direct index ( temp highp float) 0:55 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 subgroupPartitionedMulNV ( global highp float) 0:55 direct index ( temp highp float) 0:55 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 'ballot' ( temp highp 4-component vector of uint) 0:56 move second child to first child ( temp highp 2-component vector of float) 0:56 vector swizzle ( temp highp 2-component vector of float) 0:56 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupPartitionedMulNV ( global highp 2-component vector of float) 0:56 vector swizzle ( temp highp 2-component vector of float) 0:56 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 'ballot' ( temp highp 4-component vector of uint) 0:57 move second child to first child ( temp highp 3-component vector of float) 0:57 vector swizzle ( temp highp 3-component vector of float) 0:57 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 Constant: 0:57 2 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupPartitionedMulNV ( global highp 3-component vector of float) 0:57 vector swizzle ( temp highp 3-component vector of float) 0:57 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:57 Constant: 0:57 2 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 'ballot' ( temp highp 4-component vector of uint) 0:58 move second child to first child ( temp highp 4-component vector of float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupPartitionedMulNV ( global highp 4-component vector of float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 3 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 'ballot' ( temp highp 4-component vector of uint) 0:60 move second child to first child ( temp highp int) 0:60 direct index ( temp highp int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 subgroupPartitionedMulNV ( global highp int) 0:60 direct index ( temp highp int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 'ballot' ( temp highp 4-component vector of uint) 0:61 move second child to first child ( temp highp 2-component vector of int) 0:61 vector swizzle ( temp highp 2-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 subgroupPartitionedMulNV ( global highp 2-component vector of int) 0:61 vector swizzle ( temp highp 2-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 'ballot' ( temp highp 4-component vector of uint) 0:62 move second child to first child ( temp highp 3-component vector of int) 0:62 vector swizzle ( temp highp 3-component vector of int) 0:62 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupPartitionedMulNV ( global highp 3-component vector of int) 0:62 vector swizzle ( temp highp 3-component vector of int) 0:62 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 'ballot' ( temp highp 4-component vector of uint) 0:63 move second child to first child ( temp highp 4-component vector of int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 subgroupPartitionedMulNV ( global highp 4-component vector of int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 3 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 'ballot' ( temp highp 4-component vector of uint) 0:65 move second child to first child ( temp highp uint) 0:65 direct index ( temp highp uint) 0:65 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 subgroupPartitionedMulNV ( global highp uint) 0:65 direct index ( temp highp uint) 0:65 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 'ballot' ( temp highp 4-component vector of uint) 0:66 move second child to first child ( temp highp 2-component vector of uint) 0:66 vector swizzle ( temp highp 2-component vector of uint) 0:66 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupPartitionedMulNV ( global highp 2-component vector of uint) 0:66 vector swizzle ( temp highp 2-component vector of uint) 0:66 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 'ballot' ( temp highp 4-component vector of uint) 0:67 move second child to first child ( temp highp 3-component vector of uint) 0:67 vector swizzle ( temp highp 3-component vector of uint) 0:67 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 Constant: 0:67 2 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 subgroupPartitionedMulNV ( global highp 3-component vector of uint) 0:67 vector swizzle ( temp highp 3-component vector of uint) 0:67 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:67 Constant: 0:67 2 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 'ballot' ( temp highp 4-component vector of uint) 0:68 move second child to first child ( temp highp 4-component vector of uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 subgroupPartitionedMulNV ( global highp 4-component vector of uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 3 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 'ballot' ( temp highp 4-component vector of uint) 0:70 move second child to first child ( temp highp float) 0:70 direct index ( temp highp float) 0:70 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 subgroupPartitionedMinNV ( global highp float) 0:70 direct index ( temp highp float) 0:70 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 'ballot' ( temp highp 4-component vector of uint) 0:71 move second child to first child ( temp highp 2-component vector of float) 0:71 vector swizzle ( temp highp 2-component vector of float) 0:71 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupPartitionedMinNV ( global highp 2-component vector of float) 0:71 vector swizzle ( temp highp 2-component vector of float) 0:71 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 'ballot' ( temp highp 4-component vector of uint) 0:72 move second child to first child ( temp highp 3-component vector of float) 0:72 vector swizzle ( temp highp 3-component vector of float) 0:72 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 0 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupPartitionedMinNV ( global highp 3-component vector of float) 0:72 vector swizzle ( temp highp 3-component vector of float) 0:72 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 0 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 'ballot' ( temp highp 4-component vector of uint) 0:73 move second child to first child ( temp highp 4-component vector of float) 0:73 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 2 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 subgroupPartitionedMinNV ( global highp 4-component vector of float) 0:73 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 3 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 'ballot' ( temp highp 4-component vector of uint) 0:75 move second child to first child ( temp highp int) 0:75 direct index ( temp highp int) 0:75 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 3 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 subgroupPartitionedMinNV ( global highp int) 0:75 direct index ( temp highp int) 0:75 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 'ballot' ( temp highp 4-component vector of uint) 0:76 move second child to first child ( temp highp 2-component vector of int) 0:76 vector swizzle ( temp highp 2-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 subgroupPartitionedMinNV ( global highp 2-component vector of int) 0:76 vector swizzle ( temp highp 2-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 'ballot' ( temp highp 4-component vector of uint) 0:77 move second child to first child ( temp highp 3-component vector of int) 0:77 vector swizzle ( temp highp 3-component vector of int) 0:77 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:77 Constant: 0:77 3 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 subgroupPartitionedMinNV ( global highp 3-component vector of int) 0:77 vector swizzle ( temp highp 3-component vector of int) 0:77 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:77 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:77 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:77 Constant: 0:77 2 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 'ballot' ( temp highp 4-component vector of uint) 0:78 move second child to first child ( temp highp 4-component vector of int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 3 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 subgroupPartitionedMinNV ( global highp 4-component vector of int) 0:78 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 3 (const int) 0:78 Constant: 0:78 1 (const int) 0:78 'ballot' ( temp highp 4-component vector of uint) 0:80 move second child to first child ( temp highp uint) 0:80 direct index ( temp highp uint) 0:80 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 3 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 subgroupPartitionedMinNV ( global highp uint) 0:80 direct index ( temp highp uint) 0:80 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 'ballot' ( temp highp 4-component vector of uint) 0:81 move second child to first child ( temp highp 2-component vector of uint) 0:81 vector swizzle ( temp highp 2-component vector of uint) 0:81 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupPartitionedMinNV ( global highp 2-component vector of uint) 0:81 vector swizzle ( temp highp 2-component vector of uint) 0:81 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 2 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 'ballot' ( temp highp 4-component vector of uint) 0:82 move second child to first child ( temp highp 3-component vector of uint) 0:82 vector swizzle ( temp highp 3-component vector of uint) 0:82 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:82 Constant: 0:82 3 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 subgroupPartitionedMinNV ( global highp 3-component vector of uint) 0:82 vector swizzle ( temp highp 3-component vector of uint) 0:82 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:82 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:82 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 'ballot' ( temp highp 4-component vector of uint) 0:83 move second child to first child ( temp highp 4-component vector of uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 3 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 subgroupPartitionedMinNV ( global highp 4-component vector of uint) 0:83 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 3 (const int) 0:83 Constant: 0:83 2 (const int) 0:83 'ballot' ( temp highp 4-component vector of uint) 0:85 move second child to first child ( temp highp float) 0:85 direct index ( temp highp float) 0:85 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 3 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 subgroupPartitionedMaxNV ( global highp float) 0:85 direct index ( temp highp float) 0:85 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 'ballot' ( temp highp 4-component vector of uint) 0:86 move second child to first child ( temp highp 2-component vector of float) 0:86 vector swizzle ( temp highp 2-component vector of float) 0:86 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 subgroupPartitionedMaxNV ( global highp 2-component vector of float) 0:86 vector swizzle ( temp highp 2-component vector of float) 0:86 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 'ballot' ( temp highp 4-component vector of uint) 0:87 move second child to first child ( temp highp 3-component vector of float) 0:87 vector swizzle ( temp highp 3-component vector of float) 0:87 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:87 Constant: 0:87 3 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 subgroupPartitionedMaxNV ( global highp 3-component vector of float) 0:87 vector swizzle ( temp highp 3-component vector of float) 0:87 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:87 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:87 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:87 Constant: 0:87 2 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 'ballot' ( temp highp 4-component vector of uint) 0:88 move second child to first child ( temp highp 4-component vector of float) 0:88 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 3 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 subgroupPartitionedMaxNV ( global highp 4-component vector of float) 0:88 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 3 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 'ballot' ( temp highp 4-component vector of uint) 0:90 move second child to first child ( temp highp int) 0:90 direct index ( temp highp int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 subgroupPartitionedMaxNV ( global highp int) 0:90 direct index ( temp highp int) 0:90 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 'ballot' ( temp highp 4-component vector of uint) 0:91 move second child to first child ( temp highp 2-component vector of int) 0:91 vector swizzle ( temp highp 2-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 subgroupPartitionedMaxNV ( global highp 2-component vector of int) 0:91 vector swizzle ( temp highp 2-component vector of int) 0:91 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 'ballot' ( temp highp 4-component vector of uint) 0:92 move second child to first child ( temp highp 3-component vector of int) 0:92 vector swizzle ( temp highp 3-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupPartitionedMaxNV ( global highp 3-component vector of int) 0:92 vector swizzle ( temp highp 3-component vector of int) 0:92 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:92 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:92 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 'ballot' ( temp highp 4-component vector of uint) 0:93 move second child to first child ( temp highp 4-component vector of int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 subgroupPartitionedMaxNV ( global highp 4-component vector of int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 3 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 'ballot' ( temp highp 4-component vector of uint) 0:95 move second child to first child ( temp highp uint) 0:95 direct index ( temp highp uint) 0:95 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 subgroupPartitionedMaxNV ( global highp uint) 0:95 direct index ( temp highp uint) 0:95 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 'ballot' ( temp highp 4-component vector of uint) 0:96 move second child to first child ( temp highp 2-component vector of uint) 0:96 vector swizzle ( temp highp 2-component vector of uint) 0:96 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupPartitionedMaxNV ( global highp 2-component vector of uint) 0:96 vector swizzle ( temp highp 2-component vector of uint) 0:96 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 2 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 'ballot' ( temp highp 4-component vector of uint) 0:97 move second child to first child ( temp highp 3-component vector of uint) 0:97 vector swizzle ( temp highp 3-component vector of uint) 0:97 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 subgroupPartitionedMaxNV ( global highp 3-component vector of uint) 0:97 vector swizzle ( temp highp 3-component vector of uint) 0:97 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:97 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:97 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:97 Constant: 0:97 2 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 'ballot' ( temp highp 4-component vector of uint) 0:98 move second child to first child ( temp highp 4-component vector of uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 subgroupPartitionedMaxNV ( global highp 4-component vector of uint) 0:98 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:98 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:98 Constant: 0:98 3 (const int) 0:98 Constant: 0:98 2 (const int) 0:98 'ballot' ( temp highp 4-component vector of uint) 0:100 move second child to first child ( temp highp int) 0:100 direct index ( temp highp int) 0:100 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 subgroupPartitionedAndNV ( global highp int) 0:100 direct index ( temp highp int) 0:100 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:100 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 'ballot' ( temp highp 4-component vector of uint) 0:101 move second child to first child ( temp highp 2-component vector of int) 0:101 vector swizzle ( temp highp 2-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 subgroupPartitionedAndNV ( global highp 2-component vector of int) 0:101 vector swizzle ( temp highp 2-component vector of int) 0:101 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:101 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 'ballot' ( temp highp 4-component vector of uint) 0:102 move second child to first child ( temp highp 3-component vector of int) 0:102 vector swizzle ( temp highp 3-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:102 subgroupPartitionedAndNV ( global highp 3-component vector of int) 0:102 vector swizzle ( temp highp 3-component vector of int) 0:102 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:102 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:102 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:102 'ballot' ( temp highp 4-component vector of uint) 0:103 move second child to first child ( temp highp 4-component vector of int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 0 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 subgroupPartitionedAndNV ( global highp 4-component vector of int) 0:103 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:103 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:103 Constant: 0:103 3 (const int) 0:103 Constant: 0:103 1 (const int) 0:103 'ballot' ( temp highp 4-component vector of uint) 0:105 move second child to first child ( temp highp uint) 0:105 direct index ( temp highp uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 1 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 subgroupPartitionedAndNV ( global highp uint) 0:105 direct index ( temp highp uint) 0:105 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:105 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 'ballot' ( temp highp 4-component vector of uint) 0:106 move second child to first child ( temp highp 2-component vector of uint) 0:106 vector swizzle ( temp highp 2-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 subgroupPartitionedAndNV ( global highp 2-component vector of uint) 0:106 vector swizzle ( temp highp 2-component vector of uint) 0:106 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:106 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:106 Constant: 0:106 1 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 'ballot' ( temp highp 4-component vector of uint) 0:107 move second child to first child ( temp highp 3-component vector of uint) 0:107 vector swizzle ( temp highp 3-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:107 Constant: 0:107 1 (const int) 0:107 Constant: 0:107 2 (const int) 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:107 subgroupPartitionedAndNV ( global highp 3-component vector of uint) 0:107 vector swizzle ( temp highp 3-component vector of uint) 0:107 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:107 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:107 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:107 Constant: 0:107 2 (const int) 0:107 Constant: 0:107 2 (const int) 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:107 'ballot' ( temp highp 4-component vector of uint) 0:108 move second child to first child ( temp highp 4-component vector of uint) 0:108 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 1 (const int) 0:108 Constant: 0:108 2 (const int) 0:108 subgroupPartitionedAndNV ( global highp 4-component vector of uint) 0:108 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:108 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:108 Constant: 0:108 3 (const int) 0:108 Constant: 0:108 2 (const int) 0:108 'ballot' ( temp highp 4-component vector of uint) 0:110 move second child to first child ( temp highp int) 0:110 direct index ( temp highp int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 Convert bool to int ( temp highp int) 0:110 subgroupPartitionedAndNV ( global bool, operation at highp) 0:110 Compare Less Than ( temp bool) 0:110 direct index ( temp highp int) 0:110 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:110 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 'ballot' ( temp highp 4-component vector of uint) 0:111 move second child to first child ( temp highp 2-component vector of int) 0:111 vector swizzle ( temp highp 2-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Convert bool to int ( temp highp 2-component vector of int) 0:111 subgroupPartitionedAndNV ( global 2-component vector of bool, operation at highp) 0:111 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:111 vector swizzle ( temp highp 2-component vector of int) 0:111 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:111 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 0 (const int) 0:111 0 (const int) 0:111 'ballot' ( temp highp 4-component vector of uint) 0:112 move second child to first child ( temp highp 3-component vector of int) 0:112 vector swizzle ( temp highp 3-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (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:112 Convert bool to int ( temp highp 3-component vector of int) 0:112 subgroupPartitionedAndNV ( global 3-component vector of bool, operation at highp) 0:112 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:112 vector swizzle ( temp highp 3-component vector of int) 0:112 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:112 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:112 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:112 Constant: 0:112 1 (const int) 0:112 Constant: 0:112 1 (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:112 Constant: 0:112 0 (const int) 0:112 0 (const int) 0:112 0 (const int) 0:112 'ballot' ( temp highp 4-component vector of uint) 0:113 move second child to first child ( temp highp 4-component vector of int) 0:113 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Convert bool to int ( temp highp 4-component vector of int) 0:113 subgroupPartitionedAndNV ( global 4-component vector of bool, operation at highp) 0:113 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:113 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:113 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 0 (const int) 0:113 0 (const int) 0:113 0 (const int) 0:113 0 (const int) 0:113 'ballot' ( temp highp 4-component vector of uint) 0:115 move second child to first child ( temp highp int) 0:115 direct index ( temp highp int) 0:115 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 subgroupPartitionedOrNV ( global highp int) 0:115 direct index ( temp highp int) 0:115 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:115 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 1 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 'ballot' ( temp highp 4-component vector of uint) 0:116 move second child to first child ( temp highp 2-component vector of int) 0:116 vector swizzle ( temp highp 2-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 subgroupPartitionedOrNV ( global highp 2-component vector of int) 0:116 vector swizzle ( temp highp 2-component vector of int) 0:116 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:116 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:116 Constant: 0:116 1 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 'ballot' ( temp highp 4-component vector of uint) 0:117 move second child to first child ( temp highp 3-component vector of int) 0:117 vector swizzle ( temp highp 3-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 subgroupPartitionedOrNV ( global highp 3-component vector of int) 0:117 vector swizzle ( temp highp 3-component vector of int) 0:117 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:117 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:117 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:117 Constant: 0:117 2 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 'ballot' ( temp highp 4-component vector of uint) 0:118 move second child to first child ( temp highp 4-component vector of int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 1 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 subgroupPartitionedOrNV ( global highp 4-component vector of int) 0:118 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:118 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:118 Constant: 0:118 3 (const int) 0:118 Constant: 0:118 1 (const int) 0:118 'ballot' ( temp highp 4-component vector of uint) 0:120 move second child to first child ( temp highp uint) 0:120 direct index ( temp highp uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 subgroupPartitionedOrNV ( global highp uint) 0:120 direct index ( temp highp uint) 0:120 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:120 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 2 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 'ballot' ( temp highp 4-component vector of uint) 0:121 move second child to first child ( temp highp 2-component vector of uint) 0:121 vector swizzle ( temp highp 2-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 2 (const int) 0:121 Constant: 0:121 2 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 subgroupPartitionedOrNV ( global highp 2-component vector of uint) 0:121 vector swizzle ( temp highp 2-component vector of uint) 0:121 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:121 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:121 Constant: 0:121 1 (const int) 0:121 Constant: 0:121 2 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 'ballot' ( temp highp 4-component vector of uint) 0:122 move second child to first child ( temp highp 3-component vector of uint) 0:122 vector swizzle ( temp highp 3-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:122 Constant: 0:122 2 (const int) 0:122 Constant: 0:122 2 (const int) 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 subgroupPartitionedOrNV ( global highp 3-component vector of uint) 0:122 vector swizzle ( temp highp 3-component vector of uint) 0:122 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:122 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:122 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:122 Constant: 0:122 2 (const int) 0:122 Constant: 0:122 2 (const int) 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 'ballot' ( temp highp 4-component vector of uint) 0:123 move second child to first child ( temp highp 4-component vector of uint) 0:123 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 Constant: 0:123 2 (const int) 0:123 Constant: 0:123 2 (const int) 0:123 subgroupPartitionedOrNV ( global highp 4-component vector of uint) 0:123 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:123 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:123 Constant: 0:123 3 (const int) 0:123 Constant: 0:123 2 (const int) 0:123 'ballot' ( temp highp 4-component vector of uint) 0:125 move second child to first child ( temp highp int) 0:125 direct index ( temp highp int) 0:125 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 Convert bool to int ( temp highp int) 0:125 subgroupPartitionedOrNV ( global bool, operation at highp) 0:125 Compare Less Than ( temp bool) 0:125 direct index ( temp highp int) 0:125 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:125 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 1 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 'ballot' ( temp highp 4-component vector of uint) 0:126 move second child to first child ( temp highp 2-component vector of int) 0:126 vector swizzle ( temp highp 2-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 Constant: 0:126 2 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Convert bool to int ( temp highp 2-component vector of int) 0:126 subgroupPartitionedOrNV ( global 2-component vector of bool, operation at highp) 0:126 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:126 vector swizzle ( temp highp 2-component vector of int) 0:126 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:126 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 Constant: 0:126 0 (const int) 0:126 0 (const int) 0:126 'ballot' ( temp highp 4-component vector of uint) 0:127 move second child to first child ( temp highp 3-component vector of int) 0:127 vector swizzle ( temp highp 3-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:127 Constant: 0:127 2 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 Convert bool to int ( temp highp 3-component vector of int) 0:127 subgroupPartitionedOrNV ( global 3-component vector of bool, operation at highp) 0:127 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:127 vector swizzle ( temp highp 3-component vector of int) 0:127 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:127 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:127 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 Constant: 0:127 0 (const int) 0:127 0 (const int) 0:127 0 (const int) 0:127 'ballot' ( temp highp 4-component vector of uint) 0:128 move second child to first child ( temp highp 4-component vector of int) 0:128 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 Constant: 0:128 2 (const int) 0:128 Constant: 0:128 1 (const int) 0:128 Convert bool to int ( temp highp 4-component vector of int) 0:128 subgroupPartitionedOrNV ( global 4-component vector of bool, operation at highp) 0:128 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:128 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:128 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:128 Constant: 0:128 1 (const int) 0:128 Constant: 0:128 1 (const int) 0:128 Constant: 0:128 0 (const int) 0:128 0 (const int) 0:128 0 (const int) 0:128 0 (const int) 0:128 'ballot' ( temp highp 4-component vector of uint) 0:130 move second child to first child ( temp highp int) 0:130 direct index ( temp highp int) 0:130 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 Constant: 0:130 2 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 0 (const int) 0:130 subgroupPartitionedXorNV ( global highp int) 0:130 direct index ( temp highp int) 0:130 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:130 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 1 (const int) 0:130 Constant: 0:130 0 (const int) 0:130 'ballot' ( temp highp 4-component vector of uint) 0:131 move second child to first child ( temp highp 2-component vector of int) 0:131 vector swizzle ( temp highp 2-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 Constant: 0:131 2 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 subgroupPartitionedXorNV ( global highp 2-component vector of int) 0:131 vector swizzle ( temp highp 2-component vector of int) 0:131 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:131 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:131 Constant: 0:131 1 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 'ballot' ( temp highp 4-component vector of uint) 0:132 move second child to first child ( temp highp 3-component vector of int) 0:132 vector swizzle ( temp highp 3-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:132 Constant: 0:132 2 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:132 subgroupPartitionedXorNV ( global highp 3-component vector of int) 0:132 vector swizzle ( temp highp 3-component vector of int) 0:132 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:132 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:132 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:132 Constant: 0:132 2 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:132 'ballot' ( temp highp 4-component vector of uint) 0:133 move second child to first child ( temp highp 4-component vector of int) 0:133 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 Constant: 0:133 2 (const int) 0:133 Constant: 0:133 1 (const int) 0:133 subgroupPartitionedXorNV ( global highp 4-component vector of int) 0:133 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:133 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:133 Constant: 0:133 3 (const int) 0:133 Constant: 0:133 1 (const int) 0:133 'ballot' ( temp highp 4-component vector of uint) 0:135 move second child to first child ( temp highp uint) 0:135 direct index ( temp highp uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 Constant: 0:135 2 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 subgroupPartitionedXorNV ( global highp uint) 0:135 direct index ( temp highp uint) 0:135 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:135 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 2 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 'ballot' ( temp highp 4-component vector of uint) 0:136 move second child to first child ( temp highp 2-component vector of uint) 0:136 vector swizzle ( temp highp 2-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 Constant: 0:136 2 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 subgroupPartitionedXorNV ( global highp 2-component vector of uint) 0:136 vector swizzle ( temp highp 2-component vector of uint) 0:136 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:136 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:136 Constant: 0:136 1 (const int) 0:136 Constant: 0:136 2 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 'ballot' ( temp highp 4-component vector of uint) 0:137 move second child to first child ( temp highp 3-component vector of uint) 0:137 vector swizzle ( temp highp 3-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:137 Constant: 0:137 2 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 subgroupPartitionedXorNV ( global highp 3-component vector of uint) 0:137 vector swizzle ( temp highp 3-component vector of uint) 0:137 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:137 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:137 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:137 Constant: 0:137 2 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 'ballot' ( temp highp 4-component vector of uint) 0:138 move second child to first child ( temp highp 4-component vector of uint) 0:138 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 Constant: 0:138 2 (const int) 0:138 Constant: 0:138 2 (const int) 0:138 subgroupPartitionedXorNV ( global highp 4-component vector of uint) 0:138 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:138 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:138 Constant: 0:138 3 (const int) 0:138 Constant: 0:138 2 (const int) 0:138 'ballot' ( temp highp 4-component vector of uint) 0:140 move second child to first child ( temp highp int) 0:140 direct index ( temp highp int) 0:140 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 Constant: 0:140 3 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 Convert bool to int ( temp highp int) 0:140 subgroupPartitionedXorNV ( global bool, operation at highp) 0:140 Compare Less Than ( temp bool) 0:140 direct index ( temp highp int) 0:140 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:140 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 'ballot' ( temp highp 4-component vector of uint) 0:141 move second child to first child ( temp highp 2-component vector of int) 0:141 vector swizzle ( temp highp 2-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 Constant: 0:141 3 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Convert bool to int ( temp highp 2-component vector of int) 0:141 subgroupPartitionedXorNV ( global 2-component vector of bool, operation at highp) 0:141 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:141 vector swizzle ( temp highp 2-component vector of int) 0:141 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:141 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Constant: 0:141 0 (const int) 0:141 0 (const int) 0:141 'ballot' ( temp highp 4-component vector of uint) 0:142 move second child to first child ( temp highp 3-component vector of int) 0:142 vector swizzle ( temp highp 3-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:142 Constant: 0:142 3 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 2 (const int) 0:142 Convert bool to int ( temp highp 3-component vector of int) 0:142 subgroupPartitionedXorNV ( global 3-component vector of bool, operation at highp) 0:142 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:142 vector swizzle ( temp highp 3-component vector of int) 0:142 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:142 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:142 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 2 (const int) 0:142 Constant: 0:142 0 (const int) 0:142 0 (const int) 0:142 0 (const int) 0:142 'ballot' ( temp highp 4-component vector of uint) 0:143 move second child to first child ( temp highp 4-component vector of int) 0:143 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 Constant: 0:143 3 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Convert bool to int ( temp highp 4-component vector of int) 0:143 subgroupPartitionedXorNV ( global 4-component vector of bool, operation at highp) 0:143 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:143 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:143 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 1 (const int) 0:143 Constant: 0:143 0 (const int) 0:143 0 (const int) 0:143 0 (const int) 0:143 0 (const int) 0:143 'ballot' ( temp highp 4-component vector of uint) 0:145 move second child to first child ( temp highp float) 0:145 direct index ( temp highp float) 0:145 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 Constant: 0:145 3 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 subgroupPartitionedInclusiveAddNV ( global highp float) 0:145 direct index ( temp highp float) 0:145 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:145 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 'ballot' ( temp highp 4-component vector of uint) 0:146 move second child to first child ( temp highp 2-component vector of float) 0:146 vector swizzle ( temp highp 2-component vector of float) 0:146 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 Constant: 0:146 3 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 subgroupPartitionedInclusiveAddNV ( global highp 2-component vector of float) 0:146 vector swizzle ( temp highp 2-component vector of float) 0:146 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:146 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:146 Constant: 0:146 1 (const int) 0:146 Constant: 0:146 0 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 'ballot' ( temp highp 4-component vector of uint) 0:147 move second child to first child ( temp highp 3-component vector of float) 0:147 vector swizzle ( temp highp 3-component vector of float) 0:147 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:147 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:147 Constant: 0:147 3 (const int) 0:147 Constant: 0:147 0 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 subgroupPartitionedInclusiveAddNV ( global highp 3-component vector of float) 0:147 vector swizzle ( temp highp 3-component vector of float) 0:147 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:147 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:147 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:147 Constant: 0:147 2 (const int) 0:147 Constant: 0:147 0 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 'ballot' ( temp highp 4-component vector of uint) 0:148 move second child to first child ( temp highp 4-component vector of float) 0:148 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 Constant: 0:148 3 (const int) 0:148 Constant: 0:148 0 (const int) 0:148 subgroupPartitionedInclusiveAddNV ( global highp 4-component vector of float) 0:148 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:148 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:148 Constant: 0:148 3 (const int) 0:148 Constant: 0:148 0 (const int) 0:148 'ballot' ( temp highp 4-component vector of uint) 0:150 move second child to first child ( temp highp int) 0:150 direct index ( temp highp int) 0:150 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 Constant: 0:150 3 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 0 (const int) 0:150 subgroupPartitionedInclusiveAddNV ( global highp int) 0:150 direct index ( temp highp int) 0:150 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:150 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 1 (const int) 0:150 Constant: 0:150 0 (const int) 0:150 'ballot' ( temp highp 4-component vector of uint) 0:151 move second child to first child ( temp highp 2-component vector of int) 0:151 vector swizzle ( temp highp 2-component vector of int) 0:151 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 Constant: 0:151 3 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 subgroupPartitionedInclusiveAddNV ( global highp 2-component vector of int) 0:151 vector swizzle ( temp highp 2-component vector of int) 0:151 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:151 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:151 Constant: 0:151 1 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 'ballot' ( temp highp 4-component vector of uint) 0:152 move second child to first child ( temp highp 3-component vector of int) 0:152 vector swizzle ( temp highp 3-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:152 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:152 Constant: 0:152 3 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 2 (const int) 0:152 subgroupPartitionedInclusiveAddNV ( global highp 3-component vector of int) 0:152 vector swizzle ( temp highp 3-component vector of int) 0:152 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:152 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:152 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:152 Constant: 0:152 2 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 2 (const int) 0:152 'ballot' ( temp highp 4-component vector of uint) 0:153 move second child to first child ( temp highp 4-component vector of int) 0:153 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 Constant: 0:153 3 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 subgroupPartitionedInclusiveAddNV ( global highp 4-component vector of int) 0:153 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:153 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:153 Constant: 0:153 3 (const int) 0:153 Constant: 0:153 1 (const int) 0:153 'ballot' ( temp highp 4-component vector of uint) 0:155 move second child to first child ( temp highp uint) 0:155 direct index ( temp highp uint) 0:155 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 Constant: 0:155 3 (const int) 0:155 Constant: 0:155 2 (const int) 0:155 Constant: 0:155 0 (const int) 0:155 subgroupPartitionedInclusiveAddNV ( global highp uint) 0:155 direct index ( temp highp uint) 0:155 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:155 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:155 Constant: 0:155 0 (const int) 0:155 Constant: 0:155 2 (const int) 0:155 Constant: 0:155 0 (const int) 0:155 'ballot' ( temp highp 4-component vector of uint) 0:156 move second child to first child ( temp highp 2-component vector of uint) 0:156 vector swizzle ( temp highp 2-component vector of uint) 0:156 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 Constant: 0:156 3 (const int) 0:156 Constant: 0:156 2 (const int) 0:156 Sequence 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 subgroupPartitionedInclusiveAddNV ( global highp 2-component vector of uint) 0:156 vector swizzle ( temp highp 2-component vector of uint) 0:156 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:156 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:156 Constant: 0:156 1 (const int) 0:156 Constant: 0:156 2 (const int) 0:156 Sequence 0:156 Constant: 0:156 0 (const int) 0:156 Constant: 0:156 1 (const int) 0:156 'ballot' ( temp highp 4-component vector of uint) 0:157 move second child to first child ( temp highp 3-component vector of uint) 0:157 vector swizzle ( temp highp 3-component vector of uint) 0:157 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:157 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:157 Constant: 0:157 3 (const int) 0:157 Constant: 0:157 2 (const int) 0:157 Sequence 0:157 Constant: 0:157 0 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 Constant: 0:157 2 (const int) 0:157 subgroupPartitionedInclusiveAddNV ( global highp 3-component vector of uint) 0:157 vector swizzle ( temp highp 3-component vector of uint) 0:157 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:157 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:157 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:157 Constant: 0:157 2 (const int) 0:157 Constant: 0:157 2 (const int) 0:157 Sequence 0:157 Constant: 0:157 0 (const int) 0:157 Constant: 0:157 1 (const int) 0:157 Constant: 0:157 2 (const int) 0:157 'ballot' ( temp highp 4-component vector of uint) 0:158 move second child to first child ( temp highp 4-component vector of uint) 0:158 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 Constant: 0:158 3 (const int) 0:158 Constant: 0:158 2 (const int) 0:158 subgroupPartitionedInclusiveAddNV ( global highp 4-component vector of uint) 0:158 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:158 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:158 Constant: 0:158 3 (const int) 0:158 Constant: 0:158 2 (const int) 0:158 'ballot' ( temp highp 4-component vector of uint) 0:160 move second child to first child ( temp highp float) 0:160 direct index ( temp highp float) 0:160 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 Constant: 0:160 3 (const int) 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 0 (const int) 0:160 subgroupPartitionedInclusiveMulNV ( global highp float) 0:160 direct index ( temp highp float) 0:160 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:160 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 0 (const int) 0:160 Constant: 0:160 0 (const int) 0:160 'ballot' ( temp highp 4-component vector of uint) 0:161 move second child to first child ( temp highp 2-component vector of float) 0:161 vector swizzle ( temp highp 2-component vector of float) 0:161 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 Constant: 0:161 3 (const int) 0:161 Constant: 0:161 0 (const int) 0:161 Sequence 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 subgroupPartitionedInclusiveMulNV ( global highp 2-component vector of float) 0:161 vector swizzle ( temp highp 2-component vector of float) 0:161 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:161 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:161 Constant: 0:161 1 (const int) 0:161 Constant: 0:161 0 (const int) 0:161 Sequence 0:161 Constant: 0:161 0 (const int) 0:161 Constant: 0:161 1 (const int) 0:161 'ballot' ( temp highp 4-component vector of uint) 0:162 move second child to first child ( temp highp 3-component vector of float) 0:162 vector swizzle ( temp highp 3-component vector of float) 0:162 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:162 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:162 Constant: 0:162 3 (const int) 0:162 Constant: 0:162 0 (const int) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 subgroupPartitionedInclusiveMulNV ( global highp 3-component vector of float) 0:162 vector swizzle ( temp highp 3-component vector of float) 0:162 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:162 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:162 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:162 Constant: 0:162 2 (const int) 0:162 Constant: 0:162 0 (const int) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 'ballot' ( temp highp 4-component vector of uint) 0:163 move second child to first child ( temp highp 4-component vector of float) 0:163 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 Constant: 0:163 3 (const int) 0:163 Constant: 0:163 0 (const int) 0:163 subgroupPartitionedInclusiveMulNV ( global highp 4-component vector of float) 0:163 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:163 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:163 Constant: 0:163 3 (const int) 0:163 Constant: 0:163 0 (const int) 0:163 'ballot' ( temp highp 4-component vector of uint) 0:165 move second child to first child ( temp highp int) 0:165 direct index ( temp highp int) 0:165 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 Constant: 0:165 3 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 0 (const int) 0:165 subgroupPartitionedInclusiveMulNV ( global highp int) 0:165 direct index ( temp highp int) 0:165 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:165 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:165 Constant: 0:165 0 (const int) 0:165 Constant: 0:165 1 (const int) 0:165 Constant: 0:165 0 (const int) 0:165 'ballot' ( temp highp 4-component vector of uint) 0:166 move second child to first child ( temp highp 2-component vector of int) 0:166 vector swizzle ( temp highp 2-component vector of int) 0:166 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 Constant: 0:166 3 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Sequence 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 subgroupPartitionedInclusiveMulNV ( global highp 2-component vector of int) 0:166 vector swizzle ( temp highp 2-component vector of int) 0:166 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:166 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:166 Constant: 0:166 1 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 Sequence 0:166 Constant: 0:166 0 (const int) 0:166 Constant: 0:166 1 (const int) 0:166 'ballot' ( temp highp 4-component vector of uint) 0:167 move second child to first child ( temp highp 3-component vector of int) 0:167 vector swizzle ( temp highp 3-component vector of int) 0:167 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:167 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:167 Constant: 0:167 3 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 2 (const int) 0:167 subgroupPartitionedInclusiveMulNV ( global highp 3-component vector of int) 0:167 vector swizzle ( temp highp 3-component vector of int) 0:167 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:167 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:167 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:167 Constant: 0:167 2 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Sequence 0:167 Constant: 0:167 0 (const int) 0:167 Constant: 0:167 1 (const int) 0:167 Constant: 0:167 2 (const int) 0:167 'ballot' ( temp highp 4-component vector of uint) 0:168 move second child to first child ( temp highp 4-component vector of int) 0:168 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 Constant: 0:168 3 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 subgroupPartitionedInclusiveMulNV ( global highp 4-component vector of int) 0:168 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:168 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:168 Constant: 0:168 3 (const int) 0:168 Constant: 0:168 1 (const int) 0:168 'ballot' ( temp highp 4-component vector of uint) 0:170 move second child to first child ( temp highp uint) 0:170 direct index ( temp highp uint) 0:170 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 2 (const int) 0:170 Constant: 0:170 0 (const int) 0:170 subgroupPartitionedInclusiveMulNV ( global highp uint) 0:170 direct index ( temp highp uint) 0:170 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:170 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:170 Constant: 0:170 0 (const int) 0:170 Constant: 0:170 2 (const int) 0:170 Constant: 0:170 0 (const int) 0:170 'ballot' ( temp highp 4-component vector of uint) 0:171 move second child to first child ( temp highp 2-component vector of uint) 0:171 vector swizzle ( temp highp 2-component vector of uint) 0:171 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 2 (const int) 0:171 Sequence 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 subgroupPartitionedInclusiveMulNV ( global highp 2-component vector of uint) 0:171 vector swizzle ( temp highp 2-component vector of uint) 0:171 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:171 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:171 Constant: 0:171 1 (const int) 0:171 Constant: 0:171 2 (const int) 0:171 Sequence 0:171 Constant: 0:171 0 (const int) 0:171 Constant: 0:171 1 (const int) 0:171 'ballot' ( temp highp 4-component vector of uint) 0:172 move second child to first child ( temp highp 3-component vector of uint) 0:172 vector swizzle ( temp highp 3-component vector of uint) 0:172 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:172 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 2 (const int) 0:172 Sequence 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 1 (const int) 0:172 Constant: 0:172 2 (const int) 0:172 subgroupPartitionedInclusiveMulNV ( global highp 3-component vector of uint) 0:172 vector swizzle ( temp highp 3-component vector of uint) 0:172 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:172 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:172 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:172 Constant: 0:172 2 (const int) 0:172 Constant: 0:172 2 (const int) 0:172 Sequence 0:172 Constant: 0:172 0 (const int) 0:172 Constant: 0:172 1 (const int) 0:172 Constant: 0:172 2 (const int) 0:172 'ballot' ( temp highp 4-component vector of uint) 0:173 move second child to first child ( temp highp 4-component vector of uint) 0:173 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 Constant: 0:173 0 (const int) 0:173 Constant: 0:173 2 (const int) 0:173 subgroupPartitionedInclusiveMulNV ( global highp 4-component vector of uint) 0:173 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:173 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:173 Constant: 0:173 3 (const int) 0:173 Constant: 0:173 2 (const int) 0:173 'ballot' ( temp highp 4-component vector of uint) 0:175 move second child to first child ( temp highp float) 0:175 direct index ( temp highp float) 0:175 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 0 (const int) 0:175 subgroupPartitionedInclusiveMinNV ( global highp float) 0:175 direct index ( temp highp float) 0:175 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:175 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 0 (const int) 0:175 Constant: 0:175 0 (const int) 0:175 'ballot' ( temp highp 4-component vector of uint) 0:176 move second child to first child ( temp highp 2-component vector of float) 0:176 vector swizzle ( temp highp 2-component vector of float) 0:176 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 0 (const int) 0:176 Sequence 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 subgroupPartitionedInclusiveMinNV ( global highp 2-component vector of float) 0:176 vector swizzle ( temp highp 2-component vector of float) 0:176 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:176 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:176 Constant: 0:176 1 (const int) 0:176 Constant: 0:176 0 (const int) 0:176 Sequence 0:176 Constant: 0:176 0 (const int) 0:176 Constant: 0:176 1 (const int) 0:176 'ballot' ( temp highp 4-component vector of uint) 0:177 move second child to first child ( temp highp 3-component vector of float) 0:177 vector swizzle ( temp highp 3-component vector of float) 0:177 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:177 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 0 (const int) 0:177 Sequence 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 Constant: 0:177 2 (const int) 0:177 subgroupPartitionedInclusiveMinNV ( global highp 3-component vector of float) 0:177 vector swizzle ( temp highp 3-component vector of float) 0:177 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:177 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:177 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:177 Constant: 0:177 2 (const int) 0:177 Constant: 0:177 0 (const int) 0:177 Sequence 0:177 Constant: 0:177 0 (const int) 0:177 Constant: 0:177 1 (const int) 0:177 Constant: 0:177 2 (const int) 0:177 'ballot' ( temp highp 4-component vector of uint) 0:178 move second child to first child ( temp highp 4-component vector of float) 0:178 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 Constant: 0:178 0 (const int) 0:178 Constant: 0:178 0 (const int) 0:178 subgroupPartitionedInclusiveMinNV ( global highp 4-component vector of float) 0:178 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:178 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:178 Constant: 0:178 3 (const int) 0:178 Constant: 0:178 0 (const int) 0:178 'ballot' ( temp highp 4-component vector of uint) 0:180 move second child to first child ( temp highp int) 0:180 direct index ( temp highp int) 0:180 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 0 (const int) 0:180 subgroupPartitionedInclusiveMinNV ( global highp int) 0:180 direct index ( temp highp int) 0:180 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:180 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:180 Constant: 0:180 0 (const int) 0:180 Constant: 0:180 1 (const int) 0:180 Constant: 0:180 0 (const int) 0:180 'ballot' ( temp highp 4-component vector of uint) 0:181 move second child to first child ( temp highp 2-component vector of int) 0:181 vector swizzle ( temp highp 2-component vector of int) 0:181 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 Sequence 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 subgroupPartitionedInclusiveMinNV ( global highp 2-component vector of int) 0:181 vector swizzle ( temp highp 2-component vector of int) 0:181 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:181 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:181 Constant: 0:181 1 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 Sequence 0:181 Constant: 0:181 0 (const int) 0:181 Constant: 0:181 1 (const int) 0:181 'ballot' ( temp highp 4-component vector of uint) 0:182 move second child to first child ( temp highp 3-component vector of int) 0:182 vector swizzle ( temp highp 3-component vector of int) 0:182 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:182 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 Constant: 0:182 2 (const int) 0:182 subgroupPartitionedInclusiveMinNV ( global highp 3-component vector of int) 0:182 vector swizzle ( temp highp 3-component vector of int) 0:182 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:182 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:182 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:182 Constant: 0:182 2 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 Sequence 0:182 Constant: 0:182 0 (const int) 0:182 Constant: 0:182 1 (const int) 0:182 Constant: 0:182 2 (const int) 0:182 'ballot' ( temp highp 4-component vector of uint) 0:183 move second child to first child ( temp highp 4-component vector of int) 0:183 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 Constant: 0:183 0 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 subgroupPartitionedInclusiveMinNV ( global highp 4-component vector of int) 0:183 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:183 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:183 Constant: 0:183 3 (const int) 0:183 Constant: 0:183 1 (const int) 0:183 'ballot' ( temp highp 4-component vector of uint) 0:185 move second child to first child ( temp highp uint) 0:185 direct index ( temp highp uint) 0:185 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 2 (const int) 0:185 Constant: 0:185 0 (const int) 0:185 subgroupPartitionedInclusiveMinNV ( global highp uint) 0:185 direct index ( temp highp uint) 0:185 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:185 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:185 Constant: 0:185 0 (const int) 0:185 Constant: 0:185 2 (const int) 0:185 Constant: 0:185 0 (const int) 0:185 'ballot' ( temp highp 4-component vector of uint) 0:186 move second child to first child ( temp highp 2-component vector of uint) 0:186 vector swizzle ( temp highp 2-component vector of uint) 0:186 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 2 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 subgroupPartitionedInclusiveMinNV ( global highp 2-component vector of uint) 0:186 vector swizzle ( temp highp 2-component vector of uint) 0:186 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:186 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:186 Constant: 0:186 1 (const int) 0:186 Constant: 0:186 2 (const int) 0:186 Sequence 0:186 Constant: 0:186 0 (const int) 0:186 Constant: 0:186 1 (const int) 0:186 'ballot' ( temp highp 4-component vector of uint) 0:187 move second child to first child ( temp highp 3-component vector of uint) 0:187 vector swizzle ( temp highp 3-component vector of uint) 0:187 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:187 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 2 (const int) 0:187 Sequence 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 1 (const int) 0:187 Constant: 0:187 2 (const int) 0:187 subgroupPartitionedInclusiveMinNV ( global highp 3-component vector of uint) 0:187 vector swizzle ( temp highp 3-component vector of uint) 0:187 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:187 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:187 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:187 Constant: 0:187 2 (const int) 0:187 Constant: 0:187 2 (const int) 0:187 Sequence 0:187 Constant: 0:187 0 (const int) 0:187 Constant: 0:187 1 (const int) 0:187 Constant: 0:187 2 (const int) 0:187 'ballot' ( temp highp 4-component vector of uint) 0:188 move second child to first child ( temp highp 4-component vector of uint) 0:188 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 Constant: 0:188 0 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 subgroupPartitionedInclusiveMinNV ( global highp 4-component vector of uint) 0:188 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:188 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:188 Constant: 0:188 3 (const int) 0:188 Constant: 0:188 2 (const int) 0:188 'ballot' ( temp highp 4-component vector of uint) 0:190 move second child to first child ( temp highp float) 0:190 direct index ( temp highp float) 0:190 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 Constant: 0:190 1 (const int) 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 0 (const int) 0:190 subgroupPartitionedInclusiveMaxNV ( global highp float) 0:190 direct index ( temp highp float) 0:190 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:190 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 0 (const int) 0:190 Constant: 0:190 0 (const int) 0:190 'ballot' ( temp highp 4-component vector of uint) 0:191 move second child to first child ( temp highp 2-component vector of float) 0:191 vector swizzle ( temp highp 2-component vector of float) 0:191 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 subgroupPartitionedInclusiveMaxNV ( global highp 2-component vector of float) 0:191 vector swizzle ( temp highp 2-component vector of float) 0:191 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:191 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:191 Constant: 0:191 1 (const int) 0:191 Constant: 0:191 0 (const int) 0:191 Sequence 0:191 Constant: 0:191 0 (const int) 0:191 Constant: 0:191 1 (const int) 0:191 'ballot' ( temp highp 4-component vector of uint) 0:192 move second child to first child ( temp highp 3-component vector of float) 0:192 vector swizzle ( temp highp 3-component vector of float) 0:192 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:192 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:192 Constant: 0:192 1 (const int) 0:192 Constant: 0:192 0 (const int) 0:192 Sequence 0:192 Constant: 0:192 0 (const int) 0:192 Constant: 0:192 1 (const int) 0:192 Constant: 0:192 2 (const int) 0:192 subgroupPartitionedInclusiveMaxNV ( global highp 3-component vector of float) 0:192 vector swizzle ( temp highp 3-component vector of float) 0:192 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:192 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:192 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:192 Constant: 0:192 2 (const int) 0:192 Constant: 0:192 0 (const int) 0:192 Sequence 0:192 Constant: 0:192 0 (const int) 0:192 Constant: 0:192 1 (const int) 0:192 Constant: 0:192 2 (const int) 0:192 'ballot' ( temp highp 4-component vector of uint) 0:193 move second child to first child ( temp highp 4-component vector of float) 0:193 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 Constant: 0:193 1 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 subgroupPartitionedInclusiveMaxNV ( global highp 4-component vector of float) 0:193 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:193 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:193 Constant: 0:193 3 (const int) 0:193 Constant: 0:193 0 (const int) 0:193 'ballot' ( temp highp 4-component vector of uint) 0:195 move second child to first child ( temp highp int) 0:195 direct index ( temp highp int) 0:195 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 0 (const int) 0:195 subgroupPartitionedInclusiveMaxNV ( global highp int) 0:195 direct index ( temp highp int) 0:195 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:195 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:195 Constant: 0:195 0 (const int) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 0 (const int) 0:195 'ballot' ( temp highp 4-component vector of uint) 0:196 move second child to first child ( temp highp 2-component vector of int) 0:196 vector swizzle ( temp highp 2-component vector of int) 0:196 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Sequence 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 subgroupPartitionedInclusiveMaxNV ( global highp 2-component vector of int) 0:196 vector swizzle ( temp highp 2-component vector of int) 0:196 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:196 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 Sequence 0:196 Constant: 0:196 0 (const int) 0:196 Constant: 0:196 1 (const int) 0:196 'ballot' ( temp highp 4-component vector of uint) 0:197 move second child to first child ( temp highp 3-component vector of int) 0:197 vector swizzle ( temp highp 3-component vector of int) 0:197 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:197 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Sequence 0:197 Constant: 0:197 0 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 2 (const int) 0:197 subgroupPartitionedInclusiveMaxNV ( global highp 3-component vector of int) 0:197 vector swizzle ( temp highp 3-component vector of int) 0:197 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:197 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:197 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:197 Constant: 0:197 2 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Sequence 0:197 Constant: 0:197 0 (const int) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 2 (const int) 0:197 'ballot' ( temp highp 4-component vector of uint) 0:198 move second child to first child ( temp highp 4-component vector of int) 0:198 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 subgroupPartitionedInclusiveMaxNV ( global highp 4-component vector of int) 0:198 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:198 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:198 Constant: 0:198 3 (const int) 0:198 Constant: 0:198 1 (const int) 0:198 'ballot' ( temp highp 4-component vector of uint) 0:200 move second child to first child ( temp highp uint) 0:200 direct index ( temp highp uint) 0:200 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 Constant: 0:200 1 (const int) 0:200 Constant: 0:200 2 (const int) 0:200 Constant: 0:200 0 (const int) 0:200 subgroupPartitionedInclusiveMaxNV ( global highp uint) 0:200 direct index ( temp highp uint) 0:200 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:200 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:200 Constant: 0:200 0 (const int) 0:200 Constant: 0:200 2 (const int) 0:200 Constant: 0:200 0 (const int) 0:200 'ballot' ( temp highp 4-component vector of uint) 0:201 move second child to first child ( temp highp 2-component vector of uint) 0:201 vector swizzle ( temp highp 2-component vector of uint) 0:201 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:201 Sequence 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 subgroupPartitionedInclusiveMaxNV ( global highp 2-component vector of uint) 0:201 vector swizzle ( temp highp 2-component vector of uint) 0:201 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:201 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: 0:201 2 (const int) 0:201 Sequence 0:201 Constant: 0:201 0 (const int) 0:201 Constant: 0:201 1 (const int) 0:201 'ballot' ( temp highp 4-component vector of uint) 0:202 move second child to first child ( temp highp 3-component vector of uint) 0:202 vector swizzle ( temp highp 3-component vector of uint) 0:202 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:202 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 Sequence 0:202 Constant: 0:202 0 (const int) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 subgroupPartitionedInclusiveMaxNV ( global highp 3-component vector of uint) 0:202 vector swizzle ( temp highp 3-component vector of uint) 0:202 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:202 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:202 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:202 Constant: 0:202 2 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 Sequence 0:202 Constant: 0:202 0 (const int) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: 0:202 2 (const int) 0:202 'ballot' ( temp highp 4-component vector of uint) 0:203 move second child to first child ( temp highp 4-component vector of uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 subgroupPartitionedInclusiveMaxNV ( global highp 4-component vector of uint) 0:203 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:203 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:203 Constant: 0:203 3 (const int) 0:203 Constant: 0:203 2 (const int) 0:203 'ballot' ( temp highp 4-component vector of uint) 0:205 move second child to first child ( temp highp int) 0:205 direct index ( temp highp int) 0:205 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 0 (const int) 0:205 subgroupPartitionedInclusiveAndNV ( global highp int) 0:205 direct index ( temp highp int) 0:205 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:205 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:205 Constant: 0:205 0 (const int) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: 0:205 0 (const int) 0:205 'ballot' ( temp highp 4-component vector of uint) 0:206 move second child to first child ( temp highp 2-component vector of int) 0:206 vector swizzle ( temp highp 2-component vector of int) 0:206 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 Sequence 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 subgroupPartitionedInclusiveAndNV ( global highp 2-component vector of int) 0:206 vector swizzle ( temp highp 2-component vector of int) 0:206 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:206 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:206 Constant: 0:206 1 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 Sequence 0:206 Constant: 0:206 0 (const int) 0:206 Constant: 0:206 1 (const int) 0:206 'ballot' ( temp highp 4-component vector of uint) 0:207 move second child to first child ( temp highp 3-component vector of int) 0:207 vector swizzle ( temp highp 3-component vector of int) 0:207 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:207 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 Sequence 0:207 Constant: 0:207 0 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 2 (const int) 0:207 subgroupPartitionedInclusiveAndNV ( global highp 3-component vector of int) 0:207 vector swizzle ( temp highp 3-component vector of int) 0:207 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:207 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:207 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:207 Constant: 0:207 2 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 Sequence 0:207 Constant: 0:207 0 (const int) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: 0:207 2 (const int) 0:207 'ballot' ( temp highp 4-component vector of uint) 0:208 move second child to first child ( temp highp 4-component vector of int) 0:208 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 Constant: 0:208 1 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 subgroupPartitionedInclusiveAndNV ( global highp 4-component vector of int) 0:208 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:208 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:208 Constant: 0:208 3 (const int) 0:208 Constant: 0:208 1 (const int) 0:208 'ballot' ( temp highp 4-component vector of uint) 0:210 move second child to first child ( temp highp uint) 0:210 direct index ( temp highp uint) 0:210 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 0 (const int) 0:210 subgroupPartitionedInclusiveAndNV ( global highp uint) 0:210 direct index ( temp highp uint) 0:210 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:210 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:210 Constant: 0:210 0 (const int) 0:210 Constant: 0:210 2 (const int) 0:210 Constant: 0:210 0 (const int) 0:210 'ballot' ( temp highp 4-component vector of uint) 0:211 move second child to first child ( temp highp 2-component vector of uint) 0:211 vector swizzle ( temp highp 2-component vector of uint) 0:211 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 Constant: 0:211 2 (const int) 0:211 Constant: 0:211 2 (const int) 0:211 Sequence 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 subgroupPartitionedInclusiveAndNV ( global highp 2-component vector of uint) 0:211 vector swizzle ( temp highp 2-component vector of uint) 0:211 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:211 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:211 Constant: 0:211 1 (const int) 0:211 Constant: 0:211 2 (const int) 0:211 Sequence 0:211 Constant: 0:211 0 (const int) 0:211 Constant: 0:211 1 (const int) 0:211 'ballot' ( temp highp 4-component vector of uint) 0:212 move second child to first child ( temp highp 3-component vector of uint) 0:212 vector swizzle ( temp highp 3-component vector of uint) 0:212 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:212 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:212 Constant: 0:212 2 (const int) 0:212 Constant: 0:212 2 (const int) 0:212 Sequence 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 1 (const int) 0:212 Constant: 0:212 2 (const int) 0:212 subgroupPartitionedInclusiveAndNV ( global highp 3-component vector of uint) 0:212 vector swizzle ( temp highp 3-component vector of uint) 0:212 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:212 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:212 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:212 Constant: 0:212 2 (const int) 0:212 Constant: 0:212 2 (const int) 0:212 Sequence 0:212 Constant: 0:212 0 (const int) 0:212 Constant: 0:212 1 (const int) 0:212 Constant: 0:212 2 (const int) 0:212 'ballot' ( temp highp 4-component vector of uint) 0:213 move second child to first child ( temp highp 4-component vector of uint) 0:213 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 Constant: 0:213 2 (const int) 0:213 Constant: 0:213 2 (const int) 0:213 subgroupPartitionedInclusiveAndNV ( global highp 4-component vector of uint) 0:213 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:213 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:213 Constant: 0:213 3 (const int) 0:213 Constant: 0:213 2 (const int) 0:213 'ballot' ( temp highp 4-component vector of uint) 0:215 move second child to first child ( temp highp int) 0:215 direct index ( temp highp int) 0:215 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 Constant: 0:215 2 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 0 (const int) 0:215 Convert bool to int ( temp highp int) 0:215 subgroupPartitionedInclusiveAndNV ( global bool, operation at highp) 0:215 Compare Less Than ( temp bool) 0:215 direct index ( temp highp int) 0:215 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:215 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 1 (const int) 0:215 Constant: 0:215 0 (const int) 0:215 Constant: 0:215 0 (const int) 0:215 'ballot' ( temp highp 4-component vector of uint) 0:216 move second child to first child ( temp highp 2-component vector of int) 0:216 vector swizzle ( temp highp 2-component vector of int) 0:216 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 Constant: 0:216 2 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Sequence 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Convert bool to int ( temp highp 2-component vector of int) 0:216 subgroupPartitionedInclusiveAndNV ( global 2-component vector of bool, operation at highp) 0:216 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:216 vector swizzle ( temp highp 2-component vector of int) 0:216 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:216 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Sequence 0:216 Constant: 0:216 0 (const int) 0:216 Constant: 0:216 1 (const int) 0:216 Constant: 0:216 0 (const int) 0:216 0 (const int) 0:216 'ballot' ( temp highp 4-component vector of uint) 0:217 move second child to first child ( temp highp 3-component vector of int) 0:217 vector swizzle ( temp highp 3-component vector of int) 0:217 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:217 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:217 Constant: 0:217 2 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Sequence 0:217 Constant: 0:217 0 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Constant: 0:217 2 (const int) 0:217 Convert bool to int ( temp highp 3-component vector of int) 0:217 subgroupPartitionedInclusiveAndNV ( global 3-component vector of bool, operation at highp) 0:217 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:217 vector swizzle ( temp highp 3-component vector of int) 0:217 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:217 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:217 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:217 Constant: 0:217 1 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Sequence 0:217 Constant: 0:217 0 (const int) 0:217 Constant: 0:217 1 (const int) 0:217 Constant: 0:217 2 (const int) 0:217 Constant: 0:217 0 (const int) 0:217 0 (const int) 0:217 0 (const int) 0:217 'ballot' ( temp highp 4-component vector of uint) 0:218 move second child to first child ( temp highp 4-component vector of int) 0:218 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 Constant: 0:218 2 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Convert bool to int ( temp highp 4-component vector of int) 0:218 subgroupPartitionedInclusiveAndNV ( global 4-component vector of bool, operation at highp) 0:218 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:218 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:218 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:218 Constant: 0:218 1 (const int) 0:218 Constant: 0:218 1 (const int) 0:218 Constant: 0:218 0 (const int) 0:218 0 (const int) 0:218 0 (const int) 0:218 0 (const int) 0:218 'ballot' ( temp highp 4-component vector of uint) 0:220 move second child to first child ( temp highp int) 0:220 direct index ( temp highp int) 0:220 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 Constant: 0:220 2 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 0 (const int) 0:220 subgroupPartitionedInclusiveOrNV ( global highp int) 0:220 direct index ( temp highp int) 0:220 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:220 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:220 Constant: 0:220 0 (const int) 0:220 Constant: 0:220 1 (const int) 0:220 Constant: 0:220 0 (const int) 0:220 'ballot' ( temp highp 4-component vector of uint) 0:221 move second child to first child ( temp highp 2-component vector of int) 0:221 vector swizzle ( temp highp 2-component vector of int) 0:221 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 Constant: 0:221 2 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 Sequence 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 subgroupPartitionedInclusiveOrNV ( global highp 2-component vector of int) 0:221 vector swizzle ( temp highp 2-component vector of int) 0:221 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:221 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:221 Constant: 0:221 1 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 Sequence 0:221 Constant: 0:221 0 (const int) 0:221 Constant: 0:221 1 (const int) 0:221 'ballot' ( temp highp 4-component vector of uint) 0:222 move second child to first child ( temp highp 3-component vector of int) 0:222 vector swizzle ( temp highp 3-component vector of int) 0:222 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:222 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:222 Constant: 0:222 2 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 Sequence 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 Constant: 0:222 2 (const int) 0:222 subgroupPartitionedInclusiveOrNV ( global highp 3-component vector of int) 0:222 vector swizzle ( temp highp 3-component vector of int) 0:222 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:222 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:222 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:222 Constant: 0:222 2 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 Sequence 0:222 Constant: 0:222 0 (const int) 0:222 Constant: 0:222 1 (const int) 0:222 Constant: 0:222 2 (const int) 0:222 'ballot' ( temp highp 4-component vector of uint) 0:223 move second child to first child ( temp highp 4-component vector of int) 0:223 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 Constant: 0:223 2 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 subgroupPartitionedInclusiveOrNV ( global highp 4-component vector of int) 0:223 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:223 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:223 Constant: 0:223 3 (const int) 0:223 Constant: 0:223 1 (const int) 0:223 'ballot' ( temp highp 4-component vector of uint) 0:225 move second child to first child ( temp highp uint) 0:225 direct index ( temp highp uint) 0:225 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 Constant: 0:225 2 (const int) 0:225 Constant: 0:225 2 (const int) 0:225 Constant: 0:225 0 (const int) 0:225 subgroupPartitionedInclusiveOrNV ( global highp uint) 0:225 direct index ( temp highp uint) 0:225 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:225 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:225 Constant: 0:225 0 (const int) 0:225 Constant: 0:225 2 (const int) 0:225 Constant: 0:225 0 (const int) 0:225 'ballot' ( temp highp 4-component vector of uint) 0:226 move second child to first child ( temp highp 2-component vector of uint) 0:226 vector swizzle ( temp highp 2-component vector of uint) 0:226 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 Constant: 0:226 2 (const int) 0:226 Constant: 0:226 2 (const int) 0:226 Sequence 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 subgroupPartitionedInclusiveOrNV ( global highp 2-component vector of uint) 0:226 vector swizzle ( temp highp 2-component vector of uint) 0:226 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:226 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:226 Constant: 0:226 1 (const int) 0:226 Constant: 0:226 2 (const int) 0:226 Sequence 0:226 Constant: 0:226 0 (const int) 0:226 Constant: 0:226 1 (const int) 0:226 'ballot' ( temp highp 4-component vector of uint) 0:227 move second child to first child ( temp highp 3-component vector of uint) 0:227 vector swizzle ( temp highp 3-component vector of uint) 0:227 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:227 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:227 Constant: 0:227 2 (const int) 0:227 Constant: 0:227 2 (const int) 0:227 Sequence 0:227 Constant: 0:227 0 (const int) 0:227 Constant: 0:227 1 (const int) 0:227 Constant: 0:227 2 (const int) 0:227 subgroupPartitionedInclusiveOrNV ( global highp 3-component vector of uint) 0:227 vector swizzle ( temp highp 3-component vector of uint) 0:227 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:227 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:227 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:227 Constant: 0:227 2 (const int) 0:227 Constant: 0:227 2 (const int) 0:227 Sequence 0:227 Constant: 0:227 0 (const int) 0:227 Constant: 0:227 1 (const int) 0:227 Constant: 0:227 2 (const int) 0:227 'ballot' ( temp highp 4-component vector of uint) 0:228 move second child to first child ( temp highp 4-component vector of uint) 0:228 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 Constant: 0:228 2 (const int) 0:228 Constant: 0:228 2 (const int) 0:228 subgroupPartitionedInclusiveOrNV ( global highp 4-component vector of uint) 0:228 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:228 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:228 Constant: 0:228 3 (const int) 0:228 Constant: 0:228 2 (const int) 0:228 'ballot' ( temp highp 4-component vector of uint) 0:230 move second child to first child ( temp highp int) 0:230 direct index ( temp highp int) 0:230 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 Constant: 0:230 3 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 Convert bool to int ( temp highp int) 0:230 subgroupPartitionedInclusiveOrNV ( global bool, operation at highp) 0:230 Compare Less Than ( temp bool) 0:230 direct index ( temp highp int) 0:230 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:230 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 1 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 Constant: 0:230 0 (const int) 0:230 'ballot' ( temp highp 4-component vector of uint) 0:231 move second child to first child ( temp highp 2-component vector of int) 0:231 vector swizzle ( temp highp 2-component vector of int) 0:231 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 Constant: 0:231 3 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Sequence 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Convert bool to int ( temp highp 2-component vector of int) 0:231 subgroupPartitionedInclusiveOrNV ( global 2-component vector of bool, operation at highp) 0:231 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:231 vector swizzle ( temp highp 2-component vector of int) 0:231 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:231 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:231 Constant: 0:231 1 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Sequence 0:231 Constant: 0:231 0 (const int) 0:231 Constant: 0:231 1 (const int) 0:231 Constant: 0:231 0 (const int) 0:231 0 (const int) 0:231 'ballot' ( temp highp 4-component vector of uint) 0:232 move second child to first child ( temp highp 3-component vector of int) 0:232 vector swizzle ( temp highp 3-component vector of int) 0:232 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:232 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:232 Constant: 0:232 3 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 Sequence 0:232 Constant: 0:232 0 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 Constant: 0:232 2 (const int) 0:232 Convert bool to int ( temp highp 3-component vector of int) 0:232 subgroupPartitionedInclusiveOrNV ( global 3-component vector of bool, operation at highp) 0:232 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:232 vector swizzle ( temp highp 3-component vector of int) 0:232 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:232 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:232 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:232 Constant: 0:232 1 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 Sequence 0:232 Constant: 0:232 0 (const int) 0:232 Constant: 0:232 1 (const int) 0:232 Constant: 0:232 2 (const int) 0:232 Constant: 0:232 0 (const int) 0:232 0 (const int) 0:232 0 (const int) 0:232 'ballot' ( temp highp 4-component vector of uint) 0:233 move second child to first child ( temp highp 4-component vector of int) 0:233 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 Constant: 0:233 3 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Convert bool to int ( temp highp 4-component vector of int) 0:233 subgroupPartitionedInclusiveOrNV ( global 4-component vector of bool, operation at highp) 0:233 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:233 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:233 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 1 (const int) 0:233 Constant: 0:233 0 (const int) 0:233 0 (const int) 0:233 0 (const int) 0:233 0 (const int) 0:233 'ballot' ( temp highp 4-component vector of uint) 0:235 move second child to first child ( temp highp int) 0:235 direct index ( temp highp int) 0:235 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 Constant: 0:235 3 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 0 (const int) 0:235 subgroupPartitionedInclusiveXorNV ( global highp int) 0:235 direct index ( temp highp int) 0:235 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:235 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:235 Constant: 0:235 0 (const int) 0:235 Constant: 0:235 1 (const int) 0:235 Constant: 0:235 0 (const int) 0:235 'ballot' ( temp highp 4-component vector of uint) 0:236 move second child to first child ( temp highp 2-component vector of int) 0:236 vector swizzle ( temp highp 2-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 Constant: 0:236 3 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Sequence 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 subgroupPartitionedInclusiveXorNV ( global highp 2-component vector of int) 0:236 vector swizzle ( temp highp 2-component vector of int) 0:236 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:236 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:236 Constant: 0:236 1 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 Sequence 0:236 Constant: 0:236 0 (const int) 0:236 Constant: 0:236 1 (const int) 0:236 'ballot' ( temp highp 4-component vector of uint) 0:237 move second child to first child ( temp highp 3-component vector of int) 0:237 vector swizzle ( temp highp 3-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:237 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:237 Constant: 0:237 3 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Sequence 0:237 Constant: 0:237 0 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 2 (const int) 0:237 subgroupPartitionedInclusiveXorNV ( global highp 3-component vector of int) 0:237 vector swizzle ( temp highp 3-component vector of int) 0:237 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:237 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:237 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:237 Constant: 0:237 2 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Sequence 0:237 Constant: 0:237 0 (const int) 0:237 Constant: 0:237 1 (const int) 0:237 Constant: 0:237 2 (const int) 0:237 'ballot' ( temp highp 4-component vector of uint) 0:238 move second child to first child ( temp highp 4-component vector of int) 0:238 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 Constant: 0:238 3 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 subgroupPartitionedInclusiveXorNV ( global highp 4-component vector of int) 0:238 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:238 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:238 Constant: 0:238 3 (const int) 0:238 Constant: 0:238 1 (const int) 0:238 'ballot' ( temp highp 4-component vector of uint) 0:240 move second child to first child ( temp highp uint) 0:240 direct index ( temp highp uint) 0:240 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 Constant: 0:240 3 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 Constant: 0:240 0 (const int) 0:240 subgroupPartitionedInclusiveXorNV ( global highp uint) 0:240 direct index ( temp highp uint) 0:240 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:240 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:240 Constant: 0:240 0 (const int) 0:240 Constant: 0:240 2 (const int) 0:240 Constant: 0:240 0 (const int) 0:240 'ballot' ( temp highp 4-component vector of uint) 0:241 move second child to first child ( temp highp 2-component vector of uint) 0:241 vector swizzle ( temp highp 2-component vector of uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 Constant: 0:241 3 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 Sequence 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 subgroupPartitionedInclusiveXorNV ( global highp 2-component vector of uint) 0:241 vector swizzle ( temp highp 2-component vector of uint) 0:241 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:241 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:241 Constant: 0:241 1 (const int) 0:241 Constant: 0:241 2 (const int) 0:241 Sequence 0:241 Constant: 0:241 0 (const int) 0:241 Constant: 0:241 1 (const int) 0:241 'ballot' ( temp highp 4-component vector of uint) 0:242 move second child to first child ( temp highp 3-component vector of uint) 0:242 vector swizzle ( temp highp 3-component vector of uint) 0:242 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:242 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:242 Constant: 0:242 3 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 Sequence 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 subgroupPartitionedInclusiveXorNV ( global highp 3-component vector of uint) 0:242 vector swizzle ( temp highp 3-component vector of uint) 0:242 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:242 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:242 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:242 Constant: 0:242 2 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 Sequence 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1 (const int) 0:242 Constant: 0:242 2 (const int) 0:242 'ballot' ( temp highp 4-component vector of uint) 0:243 move second child to first child ( temp highp 4-component vector of uint) 0:243 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 Constant: 0:243 3 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 subgroupPartitionedInclusiveXorNV ( global highp 4-component vector of uint) 0:243 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:243 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:243 Constant: 0:243 3 (const int) 0:243 Constant: 0:243 2 (const int) 0:243 'ballot' ( temp highp 4-component vector of uint) 0:245 move second child to first child ( temp highp int) 0:245 direct index ( temp highp int) 0:245 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 Constant: 0:245 3 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 Convert bool to int ( temp highp int) 0:245 subgroupPartitionedInclusiveXorNV ( global bool, operation at highp) 0:245 Compare Less Than ( temp bool) 0:245 direct index ( temp highp int) 0:245 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:245 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 1 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 Constant: 0:245 0 (const int) 0:245 'ballot' ( temp highp 4-component vector of uint) 0:246 move second child to first child ( temp highp 2-component vector of int) 0:246 vector swizzle ( temp highp 2-component vector of int) 0:246 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 Constant: 0:246 3 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Sequence 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Convert bool to int ( temp highp 2-component vector of int) 0:246 subgroupPartitionedInclusiveXorNV ( global 2-component vector of bool, operation at highp) 0:246 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:246 vector swizzle ( temp highp 2-component vector of int) 0:246 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:246 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Sequence 0:246 Constant: 0:246 0 (const int) 0:246 Constant: 0:246 1 (const int) 0:246 Constant: 0:246 0 (const int) 0:246 0 (const int) 0:246 'ballot' ( temp highp 4-component vector of uint) 0:247 move second child to first child ( temp highp 3-component vector of int) 0:247 vector swizzle ( temp highp 3-component vector of int) 0:247 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:247 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:247 Constant: 0:247 3 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 Sequence 0:247 Constant: 0:247 0 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 Constant: 0:247 2 (const int) 0:247 Convert bool to int ( temp highp 3-component vector of int) 0:247 subgroupPartitionedInclusiveXorNV ( global 3-component vector of bool, operation at highp) 0:247 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:247 vector swizzle ( temp highp 3-component vector of int) 0:247 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:247 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:247 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:247 Constant: 0:247 1 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 Sequence 0:247 Constant: 0:247 0 (const int) 0:247 Constant: 0:247 1 (const int) 0:247 Constant: 0:247 2 (const int) 0:247 Constant: 0:247 0 (const int) 0:247 0 (const int) 0:247 0 (const int) 0:247 'ballot' ( temp highp 4-component vector of uint) 0:248 move second child to first child ( temp highp 4-component vector of int) 0:248 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 Constant: 0:248 3 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Convert bool to int ( temp highp 4-component vector of int) 0:248 subgroupPartitionedInclusiveXorNV ( global 4-component vector of bool, operation at highp) 0:248 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:248 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:248 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 1 (const int) 0:248 Constant: 0:248 0 (const int) 0:248 0 (const int) 0:248 0 (const int) 0:248 0 (const int) 0:248 'ballot' ( temp highp 4-component vector of uint) 0:250 move second child to first child ( temp highp float) 0:250 direct index ( temp highp float) 0:250 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 subgroupPartitionedExclusiveAddNV ( global highp float) 0:250 direct index ( temp highp float) 0:250 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:250 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 Constant: 0:250 0 (const int) 0:250 'ballot' ( temp highp 4-component vector of uint) 0:251 move second child to first child ( temp highp 2-component vector of float) 0:251 vector swizzle ( temp highp 2-component vector of float) 0:251 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 Sequence 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 subgroupPartitionedExclusiveAddNV ( global highp 2-component vector of float) 0:251 vector swizzle ( temp highp 2-component vector of float) 0:251 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:251 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:251 Constant: 0:251 1 (const int) 0:251 Constant: 0:251 0 (const int) 0:251 Sequence 0:251 Constant: 0:251 0 (const int) 0:251 Constant: 0:251 1 (const int) 0:251 'ballot' ( temp highp 4-component vector of uint) 0:252 move second child to first child ( temp highp 3-component vector of float) 0:252 vector swizzle ( temp highp 3-component vector of float) 0:252 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:252 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 0 (const int) 0:252 Sequence 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 2 (const int) 0:252 subgroupPartitionedExclusiveAddNV ( global highp 3-component vector of float) 0:252 vector swizzle ( temp highp 3-component vector of float) 0:252 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:252 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:252 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:252 Constant: 0:252 2 (const int) 0:252 Constant: 0:252 0 (const int) 0:252 Sequence 0:252 Constant: 0:252 0 (const int) 0:252 Constant: 0:252 1 (const int) 0:252 Constant: 0:252 2 (const int) 0:252 'ballot' ( temp highp 4-component vector of uint) 0:253 move second child to first child ( temp highp 4-component vector of float) 0:253 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 Constant: 0:253 0 (const int) 0:253 Constant: 0:253 0 (const int) 0:253 subgroupPartitionedExclusiveAddNV ( global highp 4-component vector of float) 0:253 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:253 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:253 Constant: 0:253 3 (const int) 0:253 Constant: 0:253 0 (const int) 0:253 'ballot' ( temp highp 4-component vector of uint) 0:255 move second child to first child ( temp highp int) 0:255 direct index ( temp highp int) 0:255 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 0 (const int) 0:255 subgroupPartitionedExclusiveAddNV ( global highp int) 0:255 direct index ( temp highp int) 0:255 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:255 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:255 Constant: 0:255 0 (const int) 0:255 Constant: 0:255 1 (const int) 0:255 Constant: 0:255 0 (const int) 0:255 'ballot' ( temp highp 4-component vector of uint) 0:256 move second child to first child ( temp highp 2-component vector of int) 0:256 vector swizzle ( temp highp 2-component vector of int) 0:256 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Sequence 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 subgroupPartitionedExclusiveAddNV ( global highp 2-component vector of int) 0:256 vector swizzle ( temp highp 2-component vector of int) 0:256 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:256 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:256 Constant: 0:256 1 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 Sequence 0:256 Constant: 0:256 0 (const int) 0:256 Constant: 0:256 1 (const int) 0:256 'ballot' ( temp highp 4-component vector of uint) 0:257 move second child to first child ( temp highp 3-component vector of int) 0:257 vector swizzle ( temp highp 3-component vector of int) 0:257 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:257 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 Sequence 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 Constant: 0:257 2 (const int) 0:257 subgroupPartitionedExclusiveAddNV ( global highp 3-component vector of int) 0:257 vector swizzle ( temp highp 3-component vector of int) 0:257 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:257 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:257 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:257 Constant: 0:257 2 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 Sequence 0:257 Constant: 0:257 0 (const int) 0:257 Constant: 0:257 1 (const int) 0:257 Constant: 0:257 2 (const int) 0:257 'ballot' ( temp highp 4-component vector of uint) 0:258 move second child to first child ( temp highp 4-component vector of int) 0:258 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 Constant: 0:258 0 (const int) 0:258 Constant: 0:258 1 (const int) 0:258 subgroupPartitionedExclusiveAddNV ( global highp 4-component vector of int) 0:258 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:258 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:258 Constant: 0:258 3 (const int) 0:258 Constant: 0:258 1 (const int) 0:258 'ballot' ( temp highp 4-component vector of uint) 0:260 move second child to first child ( temp highp uint) 0:260 direct index ( temp highp uint) 0:260 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 2 (const int) 0:260 Constant: 0:260 0 (const int) 0:260 subgroupPartitionedExclusiveAddNV ( global highp uint) 0:260 direct index ( temp highp uint) 0:260 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:260 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:260 Constant: 0:260 0 (const int) 0:260 Constant: 0:260 2 (const int) 0:260 Constant: 0:260 0 (const int) 0:260 'ballot' ( temp highp 4-component vector of uint) 0:261 move second child to first child ( temp highp 2-component vector of uint) 0:261 vector swizzle ( temp highp 2-component vector of uint) 0:261 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 2 (const int) 0:261 Sequence 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 subgroupPartitionedExclusiveAddNV ( global highp 2-component vector of uint) 0:261 vector swizzle ( temp highp 2-component vector of uint) 0:261 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:261 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:261 Constant: 0:261 1 (const int) 0:261 Constant: 0:261 2 (const int) 0:261 Sequence 0:261 Constant: 0:261 0 (const int) 0:261 Constant: 0:261 1 (const int) 0:261 'ballot' ( temp highp 4-component vector of uint) 0:262 move second child to first child ( temp highp 3-component vector of uint) 0:262 vector swizzle ( temp highp 3-component vector of uint) 0:262 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:262 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 2 (const int) 0:262 Sequence 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Constant: 0:262 2 (const int) 0:262 subgroupPartitionedExclusiveAddNV ( global highp 3-component vector of uint) 0:262 vector swizzle ( temp highp 3-component vector of uint) 0:262 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:262 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:262 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:262 Constant: 0:262 2 (const int) 0:262 Constant: 0:262 2 (const int) 0:262 Sequence 0:262 Constant: 0:262 0 (const int) 0:262 Constant: 0:262 1 (const int) 0:262 Constant: 0:262 2 (const int) 0:262 'ballot' ( temp highp 4-component vector of uint) 0:263 move second child to first child ( temp highp 4-component vector of uint) 0:263 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 Constant: 0:263 0 (const int) 0:263 Constant: 0:263 2 (const int) 0:263 subgroupPartitionedExclusiveAddNV ( global highp 4-component vector of uint) 0:263 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:263 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:263 Constant: 0:263 3 (const int) 0:263 Constant: 0:263 2 (const int) 0:263 'ballot' ( temp highp 4-component vector of uint) 0:265 move second child to first child ( temp highp float) 0:265 direct index ( temp highp float) 0:265 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 subgroupPartitionedExclusiveMulNV ( global highp float) 0:265 direct index ( temp highp float) 0:265 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:265 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 Constant: 0:265 0 (const int) 0:265 'ballot' ( temp highp 4-component vector of uint) 0:266 move second child to first child ( temp highp 2-component vector of float) 0:266 vector swizzle ( temp highp 2-component vector of float) 0:266 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 Sequence 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 subgroupPartitionedExclusiveMulNV ( global highp 2-component vector of float) 0:266 vector swizzle ( temp highp 2-component vector of float) 0:266 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:266 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:266 Constant: 0:266 1 (const int) 0:266 Constant: 0:266 0 (const int) 0:266 Sequence 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 1 (const int) 0:266 'ballot' ( temp highp 4-component vector of uint) 0:267 move second child to first child ( temp highp 3-component vector of float) 0:267 vector swizzle ( temp highp 3-component vector of float) 0:267 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:267 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 0 (const int) 0:267 Sequence 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 2 (const int) 0:267 subgroupPartitionedExclusiveMulNV ( global highp 3-component vector of float) 0:267 vector swizzle ( temp highp 3-component vector of float) 0:267 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:267 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:267 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:267 Constant: 0:267 2 (const int) 0:267 Constant: 0:267 0 (const int) 0:267 Sequence 0:267 Constant: 0:267 0 (const int) 0:267 Constant: 0:267 1 (const int) 0:267 Constant: 0:267 2 (const int) 0:267 'ballot' ( temp highp 4-component vector of uint) 0:268 move second child to first child ( temp highp 4-component vector of float) 0:268 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 Constant: 0:268 0 (const int) 0:268 Constant: 0:268 0 (const int) 0:268 subgroupPartitionedExclusiveMulNV ( global highp 4-component vector of float) 0:268 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:268 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:268 Constant: 0:268 3 (const int) 0:268 Constant: 0:268 0 (const int) 0:268 'ballot' ( temp highp 4-component vector of uint) 0:270 move second child to first child ( temp highp int) 0:270 direct index ( temp highp int) 0:270 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 0 (const int) 0:270 subgroupPartitionedExclusiveMulNV ( global highp int) 0:270 direct index ( temp highp int) 0:270 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:270 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:270 Constant: 0:270 0 (const int) 0:270 Constant: 0:270 1 (const int) 0:270 Constant: 0:270 0 (const int) 0:270 'ballot' ( temp highp 4-component vector of uint) 0:271 move second child to first child ( temp highp 2-component vector of int) 0:271 vector swizzle ( temp highp 2-component vector of int) 0:271 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 Constant: 0:271 1 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 Sequence 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 subgroupPartitionedExclusiveMulNV ( global highp 2-component vector of int) 0:271 vector swizzle ( temp highp 2-component vector of int) 0:271 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:271 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:271 Constant: 0:271 1 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 Sequence 0:271 Constant: 0:271 0 (const int) 0:271 Constant: 0:271 1 (const int) 0:271 'ballot' ( temp highp 4-component vector of uint) 0:272 move second child to first child ( temp highp 3-component vector of int) 0:272 vector swizzle ( temp highp 3-component vector of int) 0:272 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:272 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:272 Constant: 0:272 1 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 Sequence 0:272 Constant: 0:272 0 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 Constant: 0:272 2 (const int) 0:272 subgroupPartitionedExclusiveMulNV ( global highp 3-component vector of int) 0:272 vector swizzle ( temp highp 3-component vector of int) 0:272 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:272 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:272 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:272 Constant: 0:272 2 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 Sequence 0:272 Constant: 0:272 0 (const int) 0:272 Constant: 0:272 1 (const int) 0:272 Constant: 0:272 2 (const int) 0:272 'ballot' ( temp highp 4-component vector of uint) 0:273 move second child to first child ( temp highp 4-component vector of int) 0:273 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 Constant: 0:273 1 (const int) 0:273 Constant: 0:273 1 (const int) 0:273 subgroupPartitionedExclusiveMulNV ( global highp 4-component vector of int) 0:273 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:273 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:273 Constant: 0:273 3 (const int) 0:273 Constant: 0:273 1 (const int) 0:273 'ballot' ( temp highp 4-component vector of uint) 0:275 move second child to first child ( temp highp uint) 0:275 direct index ( temp highp uint) 0:275 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 Constant: 0:275 1 (const int) 0:275 Constant: 0:275 2 (const int) 0:275 Constant: 0:275 0 (const int) 0:275 subgroupPartitionedExclusiveMulNV ( global highp uint) 0:275 direct index ( temp highp uint) 0:275 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:275 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:275 Constant: 0:275 0 (const int) 0:275 Constant: 0:275 2 (const int) 0:275 Constant: 0:275 0 (const int) 0:275 'ballot' ( temp highp 4-component vector of uint) 0:276 move second child to first child ( temp highp 2-component vector of uint) 0:276 vector swizzle ( temp highp 2-component vector of uint) 0:276 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 Constant: 0:276 1 (const int) 0:276 Constant: 0:276 2 (const int) 0:276 Sequence 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 1 (const int) 0:276 subgroupPartitionedExclusiveMulNV ( global highp 2-component vector of uint) 0:276 vector swizzle ( temp highp 2-component vector of uint) 0:276 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:276 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:276 Constant: 0:276 1 (const int) 0:276 Constant: 0:276 2 (const int) 0:276 Sequence 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 1 (const int) 0:276 'ballot' ( temp highp 4-component vector of uint) 0:277 move second child to first child ( temp highp 3-component vector of uint) 0:277 vector swizzle ( temp highp 3-component vector of uint) 0:277 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:277 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 2 (const int) 0:277 Sequence 0:277 Constant: 0:277 0 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 2 (const int) 0:277 subgroupPartitionedExclusiveMulNV ( global highp 3-component vector of uint) 0:277 vector swizzle ( temp highp 3-component vector of uint) 0:277 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:277 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:277 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:277 Constant: 0:277 2 (const int) 0:277 Constant: 0:277 2 (const int) 0:277 Sequence 0:277 Constant: 0:277 0 (const int) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 2 (const int) 0:277 'ballot' ( temp highp 4-component vector of uint) 0:278 move second child to first child ( temp highp 4-component vector of uint) 0:278 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 Constant: 0:278 1 (const int) 0:278 Constant: 0:278 2 (const int) 0:278 subgroupPartitionedExclusiveMulNV ( global highp 4-component vector of uint) 0:278 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:278 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:278 Constant: 0:278 3 (const int) 0:278 Constant: 0:278 2 (const int) 0:278 'ballot' ( temp highp 4-component vector of uint) 0:280 move second child to first child ( temp highp float) 0:280 direct index ( temp highp float) 0:280 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 Constant: 0:280 1 (const int) 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 0 (const int) 0:280 subgroupPartitionedExclusiveMinNV ( global highp float) 0:280 direct index ( temp highp float) 0:280 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:280 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 0 (const int) 0:280 Constant: 0:280 0 (const int) 0:280 'ballot' ( temp highp 4-component vector of uint) 0:281 move second child to first child ( temp highp 2-component vector of float) 0:281 vector swizzle ( temp highp 2-component vector of float) 0:281 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 0 (const int) 0:281 Sequence 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 subgroupPartitionedExclusiveMinNV ( global highp 2-component vector of float) 0:281 vector swizzle ( temp highp 2-component vector of float) 0:281 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:281 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:281 Constant: 0:281 1 (const int) 0:281 Constant: 0:281 0 (const int) 0:281 Sequence 0:281 Constant: 0:281 0 (const int) 0:281 Constant: 0:281 1 (const int) 0:281 'ballot' ( temp highp 4-component vector of uint) 0:282 move second child to first child ( temp highp 3-component vector of float) 0:282 vector swizzle ( temp highp 3-component vector of float) 0:282 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:282 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:282 Constant: 0:282 1 (const int) 0:282 Constant: 0:282 0 (const int) 0:282 Sequence 0:282 Constant: 0:282 0 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 Constant: 0:282 2 (const int) 0:282 subgroupPartitionedExclusiveMinNV ( global highp 3-component vector of float) 0:282 vector swizzle ( temp highp 3-component vector of float) 0:282 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:282 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:282 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:282 Constant: 0:282 2 (const int) 0:282 Constant: 0:282 0 (const int) 0:282 Sequence 0:282 Constant: 0:282 0 (const int) 0:282 Constant: 0:282 1 (const int) 0:282 Constant: 0:282 2 (const int) 0:282 'ballot' ( temp highp 4-component vector of uint) 0:283 move second child to first child ( temp highp 4-component vector of float) 0:283 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 Constant: 0:283 1 (const int) 0:283 Constant: 0:283 0 (const int) 0:283 subgroupPartitionedExclusiveMinNV ( global highp 4-component vector of float) 0:283 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:283 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:283 Constant: 0:283 3 (const int) 0:283 Constant: 0:283 0 (const int) 0:283 'ballot' ( temp highp 4-component vector of uint) 0:285 move second child to first child ( temp highp int) 0:285 direct index ( temp highp int) 0:285 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 0 (const int) 0:285 subgroupPartitionedExclusiveMinNV ( global highp int) 0:285 direct index ( temp highp int) 0:285 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:285 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:285 Constant: 0:285 0 (const int) 0:285 Constant: 0:285 1 (const int) 0:285 Constant: 0:285 0 (const int) 0:285 'ballot' ( temp highp 4-component vector of uint) 0:286 move second child to first child ( temp highp 2-component vector of int) 0:286 vector swizzle ( temp highp 2-component vector of int) 0:286 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 Sequence 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 subgroupPartitionedExclusiveMinNV ( global highp 2-component vector of int) 0:286 vector swizzle ( temp highp 2-component vector of int) 0:286 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:286 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:286 Constant: 0:286 1 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 Sequence 0:286 Constant: 0:286 0 (const int) 0:286 Constant: 0:286 1 (const int) 0:286 'ballot' ( temp highp 4-component vector of uint) 0:287 move second child to first child ( temp highp 3-component vector of int) 0:287 vector swizzle ( temp highp 3-component vector of int) 0:287 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:287 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:287 Constant: 0:287 1 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 Sequence 0:287 Constant: 0:287 0 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 Constant: 0:287 2 (const int) 0:287 subgroupPartitionedExclusiveMinNV ( global highp 3-component vector of int) 0:287 vector swizzle ( temp highp 3-component vector of int) 0:287 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:287 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:287 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:287 Constant: 0:287 2 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 Sequence 0:287 Constant: 0:287 0 (const int) 0:287 Constant: 0:287 1 (const int) 0:287 Constant: 0:287 2 (const int) 0:287 'ballot' ( temp highp 4-component vector of uint) 0:288 move second child to first child ( temp highp 4-component vector of int) 0:288 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 Constant: 0:288 1 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 subgroupPartitionedExclusiveMinNV ( global highp 4-component vector of int) 0:288 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:288 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:288 Constant: 0:288 3 (const int) 0:288 Constant: 0:288 1 (const int) 0:288 'ballot' ( temp highp 4-component vector of uint) 0:290 move second child to first child ( temp highp uint) 0:290 direct index ( temp highp uint) 0:290 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 0 (const int) 0:290 subgroupPartitionedExclusiveMinNV ( global highp uint) 0:290 direct index ( temp highp uint) 0:290 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:290 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:290 Constant: 0:290 0 (const int) 0:290 Constant: 0:290 2 (const int) 0:290 Constant: 0:290 0 (const int) 0:290 'ballot' ( temp highp 4-component vector of uint) 0:291 move second child to first child ( temp highp 2-component vector of uint) 0:291 vector swizzle ( temp highp 2-component vector of uint) 0:291 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 Constant: 0:291 2 (const int) 0:291 Constant: 0:291 2 (const int) 0:291 Sequence 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 subgroupPartitionedExclusiveMinNV ( global highp 2-component vector of uint) 0:291 vector swizzle ( temp highp 2-component vector of uint) 0:291 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:291 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:291 Constant: 0:291 1 (const int) 0:291 Constant: 0:291 2 (const int) 0:291 Sequence 0:291 Constant: 0:291 0 (const int) 0:291 Constant: 0:291 1 (const int) 0:291 'ballot' ( temp highp 4-component vector of uint) 0:292 move second child to first child ( temp highp 3-component vector of uint) 0:292 vector swizzle ( temp highp 3-component vector of uint) 0:292 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:292 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:292 Constant: 0:292 2 (const int) 0:292 Constant: 0:292 2 (const int) 0:292 Sequence 0:292 Constant: 0:292 0 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Constant: 0:292 2 (const int) 0:292 subgroupPartitionedExclusiveMinNV ( global highp 3-component vector of uint) 0:292 vector swizzle ( temp highp 3-component vector of uint) 0:292 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:292 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:292 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:292 Constant: 0:292 2 (const int) 0:292 Constant: 0:292 2 (const int) 0:292 Sequence 0:292 Constant: 0:292 0 (const int) 0:292 Constant: 0:292 1 (const int) 0:292 Constant: 0:292 2 (const int) 0:292 'ballot' ( temp highp 4-component vector of uint) 0:293 move second child to first child ( temp highp 4-component vector of uint) 0:293 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 Constant: 0:293 2 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 subgroupPartitionedExclusiveMinNV ( global highp 4-component vector of uint) 0:293 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:293 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:293 Constant: 0:293 3 (const int) 0:293 Constant: 0:293 2 (const int) 0:293 'ballot' ( temp highp 4-component vector of uint) 0:295 move second child to first child ( temp highp float) 0:295 direct index ( temp highp float) 0:295 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 Constant: 0:295 2 (const int) 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 0 (const int) 0:295 subgroupPartitionedExclusiveMaxNV ( global highp float) 0:295 direct index ( temp highp float) 0:295 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:295 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 0 (const int) 0:295 Constant: 0:295 0 (const int) 0:295 'ballot' ( temp highp 4-component vector of uint) 0:296 move second child to first child ( temp highp 2-component vector of float) 0:296 vector swizzle ( temp highp 2-component vector of float) 0:296 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 Constant: 0:296 2 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 Sequence 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 subgroupPartitionedExclusiveMaxNV ( global highp 2-component vector of float) 0:296 vector swizzle ( temp highp 2-component vector of float) 0:296 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:296 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:296 Constant: 0:296 1 (const int) 0:296 Constant: 0:296 0 (const int) 0:296 Sequence 0:296 Constant: 0:296 0 (const int) 0:296 Constant: 0:296 1 (const int) 0:296 'ballot' ( temp highp 4-component vector of uint) 0:297 move second child to first child ( temp highp 3-component vector of float) 0:297 vector swizzle ( temp highp 3-component vector of float) 0:297 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:297 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:297 Constant: 0:297 2 (const int) 0:297 Constant: 0:297 0 (const int) 0:297 Sequence 0:297 Constant: 0:297 0 (const int) 0:297 Constant: 0:297 1 (const int) 0:297 Constant: 0:297 2 (const int) 0:297 subgroupPartitionedExclusiveMaxNV ( global highp 3-component vector of float) 0:297 vector swizzle ( temp highp 3-component vector of float) 0:297 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:297 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:297 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:297 Constant: 0:297 2 (const int) 0:297 Constant: 0:297 0 (const int) 0:297 Sequence 0:297 Constant: 0:297 0 (const int) 0:297 Constant: 0:297 1 (const int) 0:297 Constant: 0:297 2 (const int) 0:297 'ballot' ( temp highp 4-component vector of uint) 0:298 move second child to first child ( temp highp 4-component vector of float) 0:298 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 Constant: 0:298 2 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 subgroupPartitionedExclusiveMaxNV ( global highp 4-component vector of float) 0:298 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:298 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:298 Constant: 0:298 3 (const int) 0:298 Constant: 0:298 0 (const int) 0:298 'ballot' ( temp highp 4-component vector of uint) 0:300 move second child to first child ( temp highp int) 0:300 direct index ( temp highp int) 0:300 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 Constant: 0:300 2 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 0 (const int) 0:300 subgroupPartitionedExclusiveMaxNV ( global highp int) 0:300 direct index ( temp highp int) 0:300 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:300 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:300 Constant: 0:300 0 (const int) 0:300 Constant: 0:300 1 (const int) 0:300 Constant: 0:300 0 (const int) 0:300 'ballot' ( temp highp 4-component vector of uint) 0:301 move second child to first child ( temp highp 2-component vector of int) 0:301 vector swizzle ( temp highp 2-component vector of int) 0:301 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 Constant: 0:301 2 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Sequence 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 subgroupPartitionedExclusiveMaxNV ( global highp 2-component vector of int) 0:301 vector swizzle ( temp highp 2-component vector of int) 0:301 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:301 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:301 Constant: 0:301 1 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 Sequence 0:301 Constant: 0:301 0 (const int) 0:301 Constant: 0:301 1 (const int) 0:301 'ballot' ( temp highp 4-component vector of uint) 0:302 move second child to first child ( temp highp 3-component vector of int) 0:302 vector swizzle ( temp highp 3-component vector of int) 0:302 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:302 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:302 Constant: 0:302 2 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Sequence 0:302 Constant: 0:302 0 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Constant: 0:302 2 (const int) 0:302 subgroupPartitionedExclusiveMaxNV ( global highp 3-component vector of int) 0:302 vector swizzle ( temp highp 3-component vector of int) 0:302 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:302 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:302 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:302 Constant: 0:302 2 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Sequence 0:302 Constant: 0:302 0 (const int) 0:302 Constant: 0:302 1 (const int) 0:302 Constant: 0:302 2 (const int) 0:302 'ballot' ( temp highp 4-component vector of uint) 0:303 move second child to first child ( temp highp 4-component vector of int) 0:303 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 Constant: 0:303 2 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 subgroupPartitionedExclusiveMaxNV ( global highp 4-component vector of int) 0:303 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:303 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:303 Constant: 0:303 3 (const int) 0:303 Constant: 0:303 1 (const int) 0:303 'ballot' ( temp highp 4-component vector of uint) 0:305 move second child to first child ( temp highp uint) 0:305 direct index ( temp highp uint) 0:305 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 Constant: 0:305 2 (const int) 0:305 Constant: 0:305 2 (const int) 0:305 Constant: 0:305 0 (const int) 0:305 subgroupPartitionedExclusiveMaxNV ( global highp uint) 0:305 direct index ( temp highp uint) 0:305 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:305 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:305 Constant: 0:305 0 (const int) 0:305 Constant: 0:305 2 (const int) 0:305 Constant: 0:305 0 (const int) 0:305 'ballot' ( temp highp 4-component vector of uint) 0:306 move second child to first child ( temp highp 2-component vector of uint) 0:306 vector swizzle ( temp highp 2-component vector of uint) 0:306 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 Constant: 0:306 2 (const int) 0:306 Constant: 0:306 2 (const int) 0:306 Sequence 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 subgroupPartitionedExclusiveMaxNV ( global highp 2-component vector of uint) 0:306 vector swizzle ( temp highp 2-component vector of uint) 0:306 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:306 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:306 Constant: 0:306 1 (const int) 0:306 Constant: 0:306 2 (const int) 0:306 Sequence 0:306 Constant: 0:306 0 (const int) 0:306 Constant: 0:306 1 (const int) 0:306 'ballot' ( temp highp 4-component vector of uint) 0:307 move second child to first child ( temp highp 3-component vector of uint) 0:307 vector swizzle ( temp highp 3-component vector of uint) 0:307 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:307 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:307 Constant: 0:307 2 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 Sequence 0:307 Constant: 0:307 0 (const int) 0:307 Constant: 0:307 1 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 subgroupPartitionedExclusiveMaxNV ( global highp 3-component vector of uint) 0:307 vector swizzle ( temp highp 3-component vector of uint) 0:307 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:307 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:307 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:307 Constant: 0:307 2 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 Sequence 0:307 Constant: 0:307 0 (const int) 0:307 Constant: 0:307 1 (const int) 0:307 Constant: 0:307 2 (const int) 0:307 'ballot' ( temp highp 4-component vector of uint) 0:308 move second child to first child ( temp highp 4-component vector of uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 Constant: 0:308 2 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 subgroupPartitionedExclusiveMaxNV ( global highp 4-component vector of uint) 0:308 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:308 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:308 Constant: 0:308 3 (const int) 0:308 Constant: 0:308 2 (const int) 0:308 'ballot' ( temp highp 4-component vector of uint) 0:310 move second child to first child ( temp highp int) 0:310 direct index ( temp highp int) 0:310 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 Constant: 0:310 2 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 0 (const int) 0:310 subgroupPartitionedExclusiveAndNV ( global highp int) 0:310 direct index ( temp highp int) 0:310 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:310 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:310 Constant: 0:310 0 (const int) 0:310 Constant: 0:310 1 (const int) 0:310 Constant: 0:310 0 (const int) 0:310 'ballot' ( temp highp 4-component vector of uint) 0:311 move second child to first child ( temp highp 2-component vector of int) 0:311 vector swizzle ( temp highp 2-component vector of int) 0:311 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 Constant: 0:311 2 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 Sequence 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 subgroupPartitionedExclusiveAndNV ( global highp 2-component vector of int) 0:311 vector swizzle ( temp highp 2-component vector of int) 0:311 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:311 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:311 Constant: 0:311 1 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 Sequence 0:311 Constant: 0:311 0 (const int) 0:311 Constant: 0:311 1 (const int) 0:311 'ballot' ( temp highp 4-component vector of uint) 0:312 move second child to first child ( temp highp 3-component vector of int) 0:312 vector swizzle ( temp highp 3-component vector of int) 0:312 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:312 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:312 Constant: 0:312 2 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 Sequence 0:312 Constant: 0:312 0 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 Constant: 0:312 2 (const int) 0:312 subgroupPartitionedExclusiveAndNV ( global highp 3-component vector of int) 0:312 vector swizzle ( temp highp 3-component vector of int) 0:312 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:312 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:312 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:312 Constant: 0:312 2 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 Sequence 0:312 Constant: 0:312 0 (const int) 0:312 Constant: 0:312 1 (const int) 0:312 Constant: 0:312 2 (const int) 0:312 'ballot' ( temp highp 4-component vector of uint) 0:313 move second child to first child ( temp highp 4-component vector of int) 0:313 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 Constant: 0:313 2 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 subgroupPartitionedExclusiveAndNV ( global highp 4-component vector of int) 0:313 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:313 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:313 Constant: 0:313 3 (const int) 0:313 Constant: 0:313 1 (const int) 0:313 'ballot' ( temp highp 4-component vector of uint) 0:315 move second child to first child ( temp highp uint) 0:315 direct index ( temp highp uint) 0:315 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 Constant: 0:315 2 (const int) 0:315 Constant: 0:315 2 (const int) 0:315 Constant: 0:315 0 (const int) 0:315 subgroupPartitionedExclusiveAndNV ( global highp uint) 0:315 direct index ( temp highp uint) 0:315 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:315 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:315 Constant: 0:315 0 (const int) 0:315 Constant: 0:315 2 (const int) 0:315 Constant: 0:315 0 (const int) 0:315 'ballot' ( temp highp 4-component vector of uint) 0:316 move second child to first child ( temp highp 2-component vector of uint) 0:316 vector swizzle ( temp highp 2-component vector of uint) 0:316 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 Constant: 0:316 2 (const int) 0:316 Constant: 0:316 2 (const int) 0:316 Sequence 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 subgroupPartitionedExclusiveAndNV ( global highp 2-component vector of uint) 0:316 vector swizzle ( temp highp 2-component vector of uint) 0:316 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:316 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:316 Constant: 0:316 1 (const int) 0:316 Constant: 0:316 2 (const int) 0:316 Sequence 0:316 Constant: 0:316 0 (const int) 0:316 Constant: 0:316 1 (const int) 0:316 'ballot' ( temp highp 4-component vector of uint) 0:317 move second child to first child ( temp highp 3-component vector of uint) 0:317 vector swizzle ( temp highp 3-component vector of uint) 0:317 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:317 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:317 Constant: 0:317 2 (const int) 0:317 Constant: 0:317 2 (const int) 0:317 Sequence 0:317 Constant: 0:317 0 (const int) 0:317 Constant: 0:317 1 (const int) 0:317 Constant: 0:317 2 (const int) 0:317 subgroupPartitionedExclusiveAndNV ( global highp 3-component vector of uint) 0:317 vector swizzle ( temp highp 3-component vector of uint) 0:317 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:317 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:317 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:317 Constant: 0:317 2 (const int) 0:317 Constant: 0:317 2 (const int) 0:317 Sequence 0:317 Constant: 0:317 0 (const int) 0:317 Constant: 0:317 1 (const int) 0:317 Constant: 0:317 2 (const int) 0:317 'ballot' ( temp highp 4-component vector of uint) 0:318 move second child to first child ( temp highp 4-component vector of uint) 0:318 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 Constant: 0:318 2 (const int) 0:318 Constant: 0:318 2 (const int) 0:318 subgroupPartitionedExclusiveAndNV ( global highp 4-component vector of uint) 0:318 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:318 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:318 Constant: 0:318 3 (const int) 0:318 Constant: 0:318 2 (const int) 0:318 'ballot' ( temp highp 4-component vector of uint) 0:320 move second child to first child ( temp highp int) 0:320 direct index ( temp highp int) 0:320 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 Constant: 0:320 3 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 0 (const int) 0:320 Convert bool to int ( temp highp int) 0:320 subgroupPartitionedExclusiveAndNV ( global bool, operation at highp) 0:320 Compare Less Than ( temp bool) 0:320 direct index ( temp highp int) 0:320 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:320 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 1 (const int) 0:320 Constant: 0:320 0 (const int) 0:320 Constant: 0:320 0 (const int) 0:320 'ballot' ( temp highp 4-component vector of uint) 0:321 move second child to first child ( temp highp 2-component vector of int) 0:321 vector swizzle ( temp highp 2-component vector of int) 0:321 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 Constant: 0:321 3 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Sequence 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Convert bool to int ( temp highp 2-component vector of int) 0:321 subgroupPartitionedExclusiveAndNV ( global 2-component vector of bool, operation at highp) 0:321 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:321 vector swizzle ( temp highp 2-component vector of int) 0:321 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:321 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Sequence 0:321 Constant: 0:321 0 (const int) 0:321 Constant: 0:321 1 (const int) 0:321 Constant: 0:321 0 (const int) 0:321 0 (const int) 0:321 'ballot' ( temp highp 4-component vector of uint) 0:322 move second child to first child ( temp highp 3-component vector of int) 0:322 vector swizzle ( temp highp 3-component vector of int) 0:322 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:322 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:322 Constant: 0:322 3 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Sequence 0:322 Constant: 0:322 0 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Constant: 0:322 2 (const int) 0:322 Convert bool to int ( temp highp 3-component vector of int) 0:322 subgroupPartitionedExclusiveAndNV ( global 3-component vector of bool, operation at highp) 0:322 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:322 vector swizzle ( temp highp 3-component vector of int) 0:322 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:322 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:322 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:322 Constant: 0:322 1 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Sequence 0:322 Constant: 0:322 0 (const int) 0:322 Constant: 0:322 1 (const int) 0:322 Constant: 0:322 2 (const int) 0:322 Constant: 0:322 0 (const int) 0:322 0 (const int) 0:322 0 (const int) 0:322 'ballot' ( temp highp 4-component vector of uint) 0:323 move second child to first child ( temp highp 4-component vector of int) 0:323 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 Constant: 0:323 3 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Convert bool to int ( temp highp 4-component vector of int) 0:323 subgroupPartitionedExclusiveAndNV ( global 4-component vector of bool, operation at highp) 0:323 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:323 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:323 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 1 (const int) 0:323 Constant: 0:323 0 (const int) 0:323 0 (const int) 0:323 0 (const int) 0:323 0 (const int) 0:323 'ballot' ( temp highp 4-component vector of uint) 0:325 move second child to first child ( temp highp int) 0:325 direct index ( temp highp int) 0:325 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 Constant: 0:325 3 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 0 (const int) 0:325 subgroupPartitionedExclusiveOrNV ( global highp int) 0:325 direct index ( temp highp int) 0:325 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:325 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:325 Constant: 0:325 0 (const int) 0:325 Constant: 0:325 1 (const int) 0:325 Constant: 0:325 0 (const int) 0:325 'ballot' ( temp highp 4-component vector of uint) 0:326 move second child to first child ( temp highp 2-component vector of int) 0:326 vector swizzle ( temp highp 2-component vector of int) 0:326 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 Constant: 0:326 3 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 Sequence 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 subgroupPartitionedExclusiveOrNV ( global highp 2-component vector of int) 0:326 vector swizzle ( temp highp 2-component vector of int) 0:326 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:326 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:326 Constant: 0:326 1 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 Sequence 0:326 Constant: 0:326 0 (const int) 0:326 Constant: 0:326 1 (const int) 0:326 'ballot' ( temp highp 4-component vector of uint) 0:327 move second child to first child ( temp highp 3-component vector of int) 0:327 vector swizzle ( temp highp 3-component vector of int) 0:327 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:327 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:327 Constant: 0:327 3 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 Sequence 0:327 Constant: 0:327 0 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 Constant: 0:327 2 (const int) 0:327 subgroupPartitionedExclusiveOrNV ( global highp 3-component vector of int) 0:327 vector swizzle ( temp highp 3-component vector of int) 0:327 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:327 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:327 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:327 Constant: 0:327 2 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 Sequence 0:327 Constant: 0:327 0 (const int) 0:327 Constant: 0:327 1 (const int) 0:327 Constant: 0:327 2 (const int) 0:327 'ballot' ( temp highp 4-component vector of uint) 0:328 move second child to first child ( temp highp 4-component vector of int) 0:328 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 Constant: 0:328 3 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 subgroupPartitionedExclusiveOrNV ( global highp 4-component vector of int) 0:328 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:328 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:328 Constant: 0:328 3 (const int) 0:328 Constant: 0:328 1 (const int) 0:328 'ballot' ( temp highp 4-component vector of uint) 0:330 move second child to first child ( temp highp uint) 0:330 direct index ( temp highp uint) 0:330 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 Constant: 0:330 3 (const int) 0:330 Constant: 0:330 2 (const int) 0:330 Constant: 0:330 0 (const int) 0:330 subgroupPartitionedExclusiveOrNV ( global highp uint) 0:330 direct index ( temp highp uint) 0:330 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:330 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:330 Constant: 0:330 0 (const int) 0:330 Constant: 0:330 2 (const int) 0:330 Constant: 0:330 0 (const int) 0:330 'ballot' ( temp highp 4-component vector of uint) 0:331 move second child to first child ( temp highp 2-component vector of uint) 0:331 vector swizzle ( temp highp 2-component vector of uint) 0:331 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 Constant: 0:331 3 (const int) 0:331 Constant: 0:331 2 (const int) 0:331 Sequence 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 subgroupPartitionedExclusiveOrNV ( global highp 2-component vector of uint) 0:331 vector swizzle ( temp highp 2-component vector of uint) 0:331 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:331 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:331 Constant: 0:331 1 (const int) 0:331 Constant: 0:331 2 (const int) 0:331 Sequence 0:331 Constant: 0:331 0 (const int) 0:331 Constant: 0:331 1 (const int) 0:331 'ballot' ( temp highp 4-component vector of uint) 0:332 move second child to first child ( temp highp 3-component vector of uint) 0:332 vector swizzle ( temp highp 3-component vector of uint) 0:332 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:332 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:332 Constant: 0:332 3 (const int) 0:332 Constant: 0:332 2 (const int) 0:332 Sequence 0:332 Constant: 0:332 0 (const int) 0:332 Constant: 0:332 1 (const int) 0:332 Constant: 0:332 2 (const int) 0:332 subgroupPartitionedExclusiveOrNV ( global highp 3-component vector of uint) 0:332 vector swizzle ( temp highp 3-component vector of uint) 0:332 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:332 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:332 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:332 Constant: 0:332 2 (const int) 0:332 Constant: 0:332 2 (const int) 0:332 Sequence 0:332 Constant: 0:332 0 (const int) 0:332 Constant: 0:332 1 (const int) 0:332 Constant: 0:332 2 (const int) 0:332 'ballot' ( temp highp 4-component vector of uint) 0:333 move second child to first child ( temp highp 4-component vector of uint) 0:333 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:333 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:333 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:333 Constant: 0:333 3 (const int) 0:333 Constant: 0:333 2 (const int) 0:333 subgroupPartitionedExclusiveOrNV ( global highp 4-component vector of uint) 0:333 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:333 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:333 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:333 Constant: 0:333 3 (const int) 0:333 Constant: 0:333 2 (const int) 0:333 'ballot' ( temp highp 4-component vector of uint) 0:335 move second child to first child ( temp highp int) 0:335 direct index ( temp highp int) 0:335 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:335 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:335 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:335 Constant: 0:335 3 (const int) 0:335 Constant: 0:335 1 (const int) 0:335 Constant: 0:335 0 (const int) 0:335 Convert bool to int ( temp highp int) 0:335 subgroupPartitionedExclusiveOrNV ( global bool, operation at highp) 0:335 Compare Less Than ( temp bool) 0:335 direct index ( temp highp int) 0:335 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:335 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:335 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:335 Constant: 0:335 0 (const int) 0:335 Constant: 0:335 1 (const int) 0:335 Constant: 0:335 0 (const int) 0:335 Constant: 0:335 0 (const int) 0:335 'ballot' ( temp highp 4-component vector of uint) 0:336 move second child to first child ( temp highp 2-component vector of int) 0:336 vector swizzle ( temp highp 2-component vector of int) 0:336 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:336 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:336 Constant: 0:336 3 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Sequence 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Convert bool to int ( temp highp 2-component vector of int) 0:336 subgroupPartitionedExclusiveOrNV ( global 2-component vector of bool, operation at highp) 0:336 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:336 vector swizzle ( temp highp 2-component vector of int) 0:336 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:336 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:336 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:336 Constant: 0:336 1 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Sequence 0:336 Constant: 0:336 0 (const int) 0:336 Constant: 0:336 1 (const int) 0:336 Constant: 0:336 0 (const int) 0:336 0 (const int) 0:336 'ballot' ( temp highp 4-component vector of uint) 0:337 move second child to first child ( temp highp 3-component vector of int) 0:337 vector swizzle ( temp highp 3-component vector of int) 0:337 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:337 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:337 Constant: 0:337 3 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 Sequence 0:337 Constant: 0:337 0 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 Constant: 0:337 2 (const int) 0:337 Convert bool to int ( temp highp 3-component vector of int) 0:337 subgroupPartitionedExclusiveOrNV ( global 3-component vector of bool, operation at highp) 0:337 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:337 vector swizzle ( temp highp 3-component vector of int) 0:337 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:337 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:337 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:337 Constant: 0:337 1 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 Sequence 0:337 Constant: 0:337 0 (const int) 0:337 Constant: 0:337 1 (const int) 0:337 Constant: 0:337 2 (const int) 0:337 Constant: 0:337 0 (const int) 0:337 0 (const int) 0:337 0 (const int) 0:337 'ballot' ( temp highp 4-component vector of uint) 0:338 move second child to first child ( temp highp 4-component vector of int) 0:338 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:338 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:338 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:338 Constant: 0:338 3 (const int) 0:338 Constant: 0:338 1 (const int) 0:338 Convert bool to int ( temp highp 4-component vector of int) 0:338 subgroupPartitionedExclusiveOrNV ( global 4-component vector of bool, operation at highp) 0:338 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:338 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:338 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:338 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:338 Constant: 0:338 1 (const int) 0:338 Constant: 0:338 1 (const int) 0:338 Constant: 0:338 0 (const int) 0:338 0 (const int) 0:338 0 (const int) 0:338 0 (const int) 0:338 'ballot' ( temp highp 4-component vector of uint) 0:340 move second child to first child ( temp highp int) 0:340 direct index ( temp highp int) 0:340 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:340 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:340 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:340 Constant: 0:340 3 (const int) 0:340 Constant: 0:340 1 (const int) 0:340 Constant: 0:340 0 (const int) 0:340 subgroupPartitionedExclusiveXorNV ( global highp int) 0:340 direct index ( temp highp int) 0:340 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:340 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:340 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:340 Constant: 0:340 0 (const int) 0:340 Constant: 0:340 1 (const int) 0:340 Constant: 0:340 0 (const int) 0:340 'ballot' ( temp highp 4-component vector of uint) 0:341 move second child to first child ( temp highp 2-component vector of int) 0:341 vector swizzle ( temp highp 2-component vector of int) 0:341 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:341 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:341 Constant: 0:341 3 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Sequence 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 subgroupPartitionedExclusiveXorNV ( global highp 2-component vector of int) 0:341 vector swizzle ( temp highp 2-component vector of int) 0:341 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:341 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:341 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:341 Constant: 0:341 1 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 Sequence 0:341 Constant: 0:341 0 (const int) 0:341 Constant: 0:341 1 (const int) 0:341 'ballot' ( temp highp 4-component vector of uint) 0:342 move second child to first child ( temp highp 3-component vector of int) 0:342 vector swizzle ( temp highp 3-component vector of int) 0:342 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:342 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:342 Constant: 0:342 3 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Sequence 0:342 Constant: 0:342 0 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Constant: 0:342 2 (const int) 0:342 subgroupPartitionedExclusiveXorNV ( global highp 3-component vector of int) 0:342 vector swizzle ( temp highp 3-component vector of int) 0:342 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:342 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:342 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:342 Constant: 0:342 2 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Sequence 0:342 Constant: 0:342 0 (const int) 0:342 Constant: 0:342 1 (const int) 0:342 Constant: 0:342 2 (const int) 0:342 'ballot' ( temp highp 4-component vector of uint) 0:343 move second child to first child ( temp highp 4-component vector of int) 0:343 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:343 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:343 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:343 Constant: 0:343 3 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 subgroupPartitionedExclusiveXorNV ( global highp 4-component vector of int) 0:343 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:343 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:343 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:343 Constant: 0:343 3 (const int) 0:343 Constant: 0:343 1 (const int) 0:343 'ballot' ( temp highp 4-component vector of uint) 0:345 move second child to first child ( temp highp uint) 0:345 direct index ( temp highp uint) 0:345 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:345 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:345 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:345 Constant: 0:345 0 (const int) 0:345 Constant: 0:345 2 (const int) 0:345 Constant: 0:345 0 (const int) 0:345 subgroupPartitionedExclusiveXorNV ( global highp uint) 0:345 direct index ( temp highp uint) 0:345 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:345 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:345 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:345 Constant: 0:345 0 (const int) 0:345 Constant: 0:345 2 (const int) 0:345 Constant: 0:345 0 (const int) 0:345 'ballot' ( temp highp 4-component vector of uint) 0:346 move second child to first child ( temp highp 2-component vector of uint) 0:346 vector swizzle ( temp highp 2-component vector of uint) 0:346 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:346 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 2 (const int) 0:346 Sequence 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 1 (const int) 0:346 subgroupPartitionedExclusiveXorNV ( global highp 2-component vector of uint) 0:346 vector swizzle ( temp highp 2-component vector of uint) 0:346 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:346 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:346 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:346 Constant: 0:346 1 (const int) 0:346 Constant: 0:346 2 (const int) 0:346 Sequence 0:346 Constant: 0:346 0 (const int) 0:346 Constant: 0:346 1 (const int) 0:346 'ballot' ( temp highp 4-component vector of uint) 0:347 move second child to first child ( temp highp 3-component vector of uint) 0:347 vector swizzle ( temp highp 3-component vector of uint) 0:347 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:347 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 Sequence 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 1 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 subgroupPartitionedExclusiveXorNV ( global highp 3-component vector of uint) 0:347 vector swizzle ( temp highp 3-component vector of uint) 0:347 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:347 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:347 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:347 Constant: 0:347 2 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 Sequence 0:347 Constant: 0:347 0 (const int) 0:347 Constant: 0:347 1 (const int) 0:347 Constant: 0:347 2 (const int) 0:347 'ballot' ( temp highp 4-component vector of uint) 0:348 move second child to first child ( temp highp 4-component vector of uint) 0:348 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:348 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:348 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:348 Constant: 0:348 0 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 subgroupPartitionedExclusiveXorNV ( global highp 4-component vector of uint) 0:348 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:348 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:348 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:348 Constant: 0:348 3 (const int) 0:348 Constant: 0:348 2 (const int) 0:348 'ballot' ( temp highp 4-component vector of uint) 0:350 move second child to first child ( temp highp int) 0:350 direct index ( temp highp int) 0:350 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:350 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:350 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 1 (const int) 0:350 Constant: 0:350 0 (const int) 0:350 Convert bool to int ( temp highp int) 0:350 subgroupPartitionedExclusiveXorNV ( global bool, operation at highp) 0:350 Compare Less Than ( temp bool) 0:350 direct index ( temp highp int) 0:350 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:350 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:350 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 1 (const int) 0:350 Constant: 0:350 0 (const int) 0:350 Constant: 0:350 0 (const int) 0:350 'ballot' ( temp highp 4-component vector of uint) 0:351 move second child to first child ( temp highp 2-component vector of int) 0:351 vector swizzle ( temp highp 2-component vector of int) 0:351 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:351 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Sequence 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Convert bool to int ( temp highp 2-component vector of int) 0:351 subgroupPartitionedExclusiveXorNV ( global 2-component vector of bool, operation at highp) 0:351 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:351 vector swizzle ( temp highp 2-component vector of int) 0:351 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:351 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:351 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:351 Constant: 0:351 1 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Sequence 0:351 Constant: 0:351 0 (const int) 0:351 Constant: 0:351 1 (const int) 0:351 Constant: 0:351 0 (const int) 0:351 0 (const int) 0:351 'ballot' ( temp highp 4-component vector of uint) 0:352 move second child to first child ( temp highp 3-component vector of int) 0:352 vector swizzle ( temp highp 3-component vector of int) 0:352 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:352 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 Sequence 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 Constant: 0:352 2 (const int) 0:352 Convert bool to int ( temp highp 3-component vector of int) 0:352 subgroupPartitionedExclusiveXorNV ( global 3-component vector of bool, operation at highp) 0:352 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:352 vector swizzle ( temp highp 3-component vector of int) 0:352 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:352 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:352 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:352 Constant: 0:352 1 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 Sequence 0:352 Constant: 0:352 0 (const int) 0:352 Constant: 0:352 1 (const int) 0:352 Constant: 0:352 2 (const int) 0:352 Constant: 0:352 0 (const int) 0:352 0 (const int) 0:352 0 (const int) 0:352 'ballot' ( temp highp 4-component vector of uint) 0:353 move second child to first child ( temp highp 4-component vector of int) 0:353 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:353 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:353 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:353 Constant: 0:353 0 (const int) 0:353 Constant: 0:353 1 (const int) 0:353 Convert bool to int ( temp highp 4-component vector of int) 0:353 subgroupPartitionedExclusiveXorNV ( global 4-component vector of bool, operation at highp) 0:353 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:353 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:353 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:353 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:353 Constant: 0:353 1 (const int) 0:353 Constant: 0:353 1 (const int) 0:353 Constant: 0:353 0 (const int) 0:353 0 (const int) 0:353 0 (const int) 0:353 0 (const int) 0:353 'ballot' ( temp highp 4-component vector of uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupQuad.comp.out000066400000000000000000010662641506534232700244300ustar00rootroot00000000000000glsl.es320.subgroupQuad.comp Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_quad local_size = (8, 1, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupQuadBroadcast ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 1 (const uint) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupQuadBroadcast ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 1 (const uint) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupQuadBroadcast ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 1 (const uint) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupQuadBroadcast ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const uint) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupQuadBroadcast ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const uint) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupQuadBroadcast ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const uint) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupQuadBroadcast ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const uint) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupQuadBroadcast ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupQuadBroadcast ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const uint) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupQuadBroadcast ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const uint) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupQuadBroadcast ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const uint) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupQuadBroadcast ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const uint) 0:33 move second child to first child ( temp highp int) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Convert bool to int ( temp highp int) 0:33 subgroupQuadBroadcast ( global bool) 0:33 Compare Less Than ( temp bool) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const uint) 0:34 move second child to first child ( temp highp 2-component vector of int) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 Convert bool to int ( temp highp 2-component vector of int) 0:34 subgroupQuadBroadcast ( global 2-component vector of bool) 0:34 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 0 (const int) 0:34 0 (const int) 0:34 Constant: 0:34 1 (const uint) 0:35 move second child to first child ( temp highp 3-component vector of int) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Convert bool to int ( temp highp 3-component vector of int) 0:35 subgroupQuadBroadcast ( global 3-component vector of bool) 0:35 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 0 (const int) 0:35 0 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp highp 4-component vector of int) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Convert bool to int ( temp highp 4-component vector of int) 0:36 subgroupQuadBroadcast ( global 4-component vector of bool) 0:36 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 Constant: 0:36 1 (const uint) 0:38 move second child to first child ( temp highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupQuadSwapHorizontal ( global highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 move second child to first child ( temp highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupQuadSwapHorizontal ( global highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupQuadSwapHorizontal ( global highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:41 move second child to first child ( temp highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 subgroupQuadSwapHorizontal ( global highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 0 (const int) 0:43 move second child to first child ( temp highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupQuadSwapHorizontal ( global highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:44 move second child to first child ( temp highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupQuadSwapHorizontal ( global highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:45 move second child to first child ( temp highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupQuadSwapHorizontal ( global highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:46 move second child to first child ( temp highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupQuadSwapHorizontal ( global highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 1 (const int) 0:48 move second child to first child ( temp highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupQuadSwapHorizontal ( global highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:49 move second child to first child ( temp highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupQuadSwapHorizontal ( global highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:50 move second child to first child ( temp highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupQuadSwapHorizontal ( global highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:51 move second child to first child ( temp highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupQuadSwapHorizontal ( global highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Convert bool to int ( temp highp int) 0:53 subgroupQuadSwapHorizontal ( global bool) 0:53 Compare Less Than ( temp bool) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 0 (const int) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Convert bool to int ( temp highp 2-component vector of int) 0:54 subgroupQuadSwapHorizontal ( global 2-component vector of bool) 0:54 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 0 (const int) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Convert bool to int ( temp highp 3-component vector of int) 0:55 subgroupQuadSwapHorizontal ( global 3-component vector of bool) 0:55 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 0 (const int) 0:55 0 (const int) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Convert bool to int ( temp highp 4-component vector of int) 0:56 subgroupQuadSwapHorizontal ( global 4-component vector of bool) 0:56 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:58 move second child to first child ( temp highp float) 0:58 direct index ( temp highp float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupQuadSwapVertical ( global highp float) 0:58 direct index ( temp highp float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 0 (const int) 0:59 move second child to first child ( temp highp 2-component vector of float) 0:59 vector swizzle ( temp highp 2-component vector of float) 0:59 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 2 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupQuadSwapVertical ( global highp 2-component vector of float) 0:59 vector swizzle ( temp highp 2-component vector of float) 0:59 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:60 move second child to first child ( temp highp 3-component vector of float) 0:60 vector swizzle ( temp highp 3-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 subgroupQuadSwapVertical ( global highp 3-component vector of float) 0:60 vector swizzle ( temp highp 3-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:61 move second child to first child ( temp highp 4-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 subgroupQuadSwapVertical ( global highp 4-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 0 (const int) 0:63 move second child to first child ( temp highp int) 0:63 direct index ( temp highp int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 subgroupQuadSwapVertical ( global highp int) 0:63 direct index ( temp highp int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:64 move second child to first child ( temp highp 2-component vector of int) 0:64 vector swizzle ( temp highp 2-component vector of int) 0:64 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 2 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 subgroupQuadSwapVertical ( global highp 2-component vector of int) 0:64 vector swizzle ( temp highp 2-component vector of int) 0:64 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:65 move second child to first child ( temp highp 3-component vector of int) 0:65 vector swizzle ( temp highp 3-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 subgroupQuadSwapVertical ( global highp 3-component vector of int) 0:65 vector swizzle ( temp highp 3-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:66 move second child to first child ( temp highp 4-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupQuadSwapVertical ( global highp 4-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 3 (const int) 0:66 Constant: 0:66 1 (const int) 0:68 move second child to first child ( temp highp uint) 0:68 direct index ( temp highp uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 subgroupQuadSwapVertical ( global highp uint) 0:68 direct index ( temp highp uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 0 (const int) 0:69 move second child to first child ( temp highp 2-component vector of uint) 0:69 vector swizzle ( temp highp 2-component vector of uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 subgroupQuadSwapVertical ( global highp 2-component vector of uint) 0:69 vector swizzle ( temp highp 2-component vector of uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:70 move second child to first child ( temp highp 3-component vector of uint) 0:70 vector swizzle ( temp highp 3-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 subgroupQuadSwapVertical ( global highp 3-component vector of uint) 0:70 vector swizzle ( temp highp 3-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:71 move second child to first child ( temp highp 4-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 subgroupQuadSwapVertical ( global highp 4-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 3 (const int) 0:71 Constant: 0:71 2 (const int) 0:73 move second child to first child ( temp highp int) 0:73 direct index ( temp highp int) 0:73 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 3 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 Convert bool to int ( temp highp int) 0:73 subgroupQuadSwapVertical ( global bool) 0:73 Compare Less Than ( temp bool) 0:73 direct index ( temp highp int) 0:73 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0 (const int) 0:74 move second child to first child ( temp highp 2-component vector of int) 0:74 vector swizzle ( temp highp 2-component vector of int) 0:74 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Convert bool to int ( temp highp 2-component vector of int) 0:74 subgroupQuadSwapVertical ( global 2-component vector of bool) 0:74 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:74 vector swizzle ( temp highp 2-component vector of int) 0:74 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 0 (const int) 0:75 move second child to first child ( temp highp 3-component vector of int) 0:75 vector swizzle ( temp highp 3-component vector of int) 0:75 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 3 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Convert bool to int ( temp highp 3-component vector of int) 0:75 subgroupQuadSwapVertical ( global 3-component vector of bool) 0:75 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:75 vector swizzle ( temp highp 3-component vector of int) 0:75 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 0 (const int) 0:75 0 (const int) 0:76 move second child to first child ( temp highp 4-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Convert bool to int ( temp highp 4-component vector of int) 0:76 subgroupQuadSwapVertical ( global 4-component vector of bool) 0:76 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:76 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 0 (const int) 0:76 0 (const int) 0:76 0 (const int) 0:78 move second child to first child ( temp highp float) 0:78 direct index ( temp highp float) 0:78 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 3 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 subgroupQuadSwapDiagonal ( global highp float) 0:78 direct index ( temp highp float) 0:78 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 0 (const int) 0:79 move second child to first child ( temp highp 2-component vector of float) 0:79 vector swizzle ( temp highp 2-component vector of float) 0:79 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 3 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupQuadSwapDiagonal ( global highp 2-component vector of float) 0:79 vector swizzle ( temp highp 2-component vector of float) 0:79 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:80 move second child to first child ( temp highp 3-component vector of float) 0:80 vector swizzle ( temp highp 3-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 3 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 subgroupQuadSwapDiagonal ( global highp 3-component vector of float) 0:80 vector swizzle ( temp highp 3-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:81 move second child to first child ( temp highp 4-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 subgroupQuadSwapDiagonal ( global highp 4-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 0 (const int) 0:83 move second child to first child ( temp highp int) 0:83 direct index ( temp highp int) 0:83 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 3 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 subgroupQuadSwapDiagonal ( global highp int) 0:83 direct index ( temp highp int) 0:83 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0 (const int) 0:84 move second child to first child ( temp highp 2-component vector of int) 0:84 vector swizzle ( temp highp 2-component vector of int) 0:84 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 3 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 subgroupQuadSwapDiagonal ( global highp 2-component vector of int) 0:84 vector swizzle ( temp highp 2-component vector of int) 0:84 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:85 move second child to first child ( temp highp 3-component vector of int) 0:85 vector swizzle ( temp highp 3-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 3 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 subgroupQuadSwapDiagonal ( global highp 3-component vector of int) 0:85 vector swizzle ( temp highp 3-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:86 move second child to first child ( temp highp 4-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 subgroupQuadSwapDiagonal ( global highp 4-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 1 (const int) 0:88 move second child to first child ( temp highp uint) 0:88 direct index ( temp highp uint) 0:88 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 3 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 subgroupQuadSwapDiagonal ( global highp uint) 0:88 direct index ( temp highp uint) 0:88 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0 (const int) 0:89 move second child to first child ( temp highp 2-component vector of uint) 0:89 vector swizzle ( temp highp 2-component vector of uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 3 (const int) 0:89 Constant: 0:89 2 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 subgroupQuadSwapDiagonal ( global highp 2-component vector of uint) 0:89 vector swizzle ( temp highp 2-component vector of uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 2 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:90 move second child to first child ( temp highp 3-component vector of uint) 0:90 vector swizzle ( temp highp 3-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 subgroupQuadSwapDiagonal ( global highp 3-component vector of uint) 0:90 vector swizzle ( temp highp 3-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:91 move second child to first child ( temp highp 4-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 3 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 subgroupQuadSwapDiagonal ( global highp 4-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 3 (const int) 0:91 Constant: 0:91 2 (const int) 0:93 move second child to first child ( temp highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 3 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 Convert bool to int ( temp highp int) 0:93 subgroupQuadSwapDiagonal ( global bool) 0:93 Compare Less Than ( temp bool) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 0 (const int) 0:94 move second child to first child ( temp highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Convert bool to int ( temp highp 2-component vector of int) 0:94 subgroupQuadSwapDiagonal ( global 2-component vector of bool) 0:94 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 0 (const int) 0:95 move second child to first child ( temp highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 3 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Convert bool to int ( temp highp 3-component vector of int) 0:95 subgroupQuadSwapDiagonal ( global 3-component vector of bool) 0:95 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 0 (const int) 0:95 0 (const int) 0:96 move second child to first child ( temp highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Convert bool to int ( temp highp 4-component vector of int) 0:96 subgroupQuadSwapDiagonal ( global 4-component vector of bool) 0:96 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 0 (const int) 0:96 0 (const int) 0:96 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_quad local_size = (8, 1, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupQuadBroadcast ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 1 (const uint) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupQuadBroadcast ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 1 (const uint) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupQuadBroadcast ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 1 (const uint) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupQuadBroadcast ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const uint) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupQuadBroadcast ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const uint) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupQuadBroadcast ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const uint) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupQuadBroadcast ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const uint) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupQuadBroadcast ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 1 (const uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupQuadBroadcast ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const uint) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupQuadBroadcast ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const uint) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupQuadBroadcast ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const uint) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupQuadBroadcast ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 1 (const uint) 0:33 move second child to first child ( temp highp int) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Convert bool to int ( temp highp int) 0:33 subgroupQuadBroadcast ( global bool) 0:33 Compare Less Than ( temp bool) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const uint) 0:34 move second child to first child ( temp highp 2-component vector of int) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 Convert bool to int ( temp highp 2-component vector of int) 0:34 subgroupQuadBroadcast ( global 2-component vector of bool) 0:34 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 0 (const int) 0:34 0 (const int) 0:34 Constant: 0:34 1 (const uint) 0:35 move second child to first child ( temp highp 3-component vector of int) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Convert bool to int ( temp highp 3-component vector of int) 0:35 subgroupQuadBroadcast ( global 3-component vector of bool) 0:35 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 0 (const int) 0:35 0 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp highp 4-component vector of int) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Convert bool to int ( temp highp 4-component vector of int) 0:36 subgroupQuadBroadcast ( global 4-component vector of bool) 0:36 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 Constant: 0:36 1 (const uint) 0:38 move second child to first child ( temp highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupQuadSwapHorizontal ( global highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 move second child to first child ( temp highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupQuadSwapHorizontal ( global highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupQuadSwapHorizontal ( global highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:41 move second child to first child ( temp highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 subgroupQuadSwapHorizontal ( global highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 0 (const int) 0:43 move second child to first child ( temp highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupQuadSwapHorizontal ( global highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:44 move second child to first child ( temp highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupQuadSwapHorizontal ( global highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:45 move second child to first child ( temp highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupQuadSwapHorizontal ( global highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:46 move second child to first child ( temp highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupQuadSwapHorizontal ( global highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 1 (const int) 0:48 move second child to first child ( temp highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupQuadSwapHorizontal ( global highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:49 move second child to first child ( temp highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupQuadSwapHorizontal ( global highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:50 move second child to first child ( temp highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupQuadSwapHorizontal ( global highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:51 move second child to first child ( temp highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupQuadSwapHorizontal ( global highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Convert bool to int ( temp highp int) 0:53 subgroupQuadSwapHorizontal ( global bool) 0:53 Compare Less Than ( temp bool) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 0 (const int) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 2 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Convert bool to int ( temp highp 2-component vector of int) 0:54 subgroupQuadSwapHorizontal ( global 2-component vector of bool) 0:54 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 0 (const int) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Convert bool to int ( temp highp 3-component vector of int) 0:55 subgroupQuadSwapHorizontal ( global 3-component vector of bool) 0:55 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 0 (const int) 0:55 0 (const int) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 2 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Convert bool to int ( temp highp 4-component vector of int) 0:56 subgroupQuadSwapHorizontal ( global 4-component vector of bool) 0:56 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:58 move second child to first child ( temp highp float) 0:58 direct index ( temp highp float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 subgroupQuadSwapVertical ( global highp float) 0:58 direct index ( temp highp float) 0:58 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 0 (const int) 0:59 move second child to first child ( temp highp 2-component vector of float) 0:59 vector swizzle ( temp highp 2-component vector of float) 0:59 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 2 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupQuadSwapVertical ( global highp 2-component vector of float) 0:59 vector swizzle ( temp highp 2-component vector of float) 0:59 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:60 move second child to first child ( temp highp 3-component vector of float) 0:60 vector swizzle ( temp highp 3-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 subgroupQuadSwapVertical ( global highp 3-component vector of float) 0:60 vector swizzle ( temp highp 3-component vector of float) 0:60 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:61 move second child to first child ( temp highp 4-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 subgroupQuadSwapVertical ( global highp 4-component vector of float) 0:61 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 0 (const int) 0:63 move second child to first child ( temp highp int) 0:63 direct index ( temp highp int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 subgroupQuadSwapVertical ( global highp int) 0:63 direct index ( temp highp int) 0:63 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:63 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:64 move second child to first child ( temp highp 2-component vector of int) 0:64 vector swizzle ( temp highp 2-component vector of int) 0:64 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 2 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 subgroupQuadSwapVertical ( global highp 2-component vector of int) 0:64 vector swizzle ( temp highp 2-component vector of int) 0:64 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:65 move second child to first child ( temp highp 3-component vector of int) 0:65 vector swizzle ( temp highp 3-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 subgroupQuadSwapVertical ( global highp 3-component vector of int) 0:65 vector swizzle ( temp highp 3-component vector of int) 0:65 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Sequence 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:66 move second child to first child ( temp highp 4-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 2 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupQuadSwapVertical ( global highp 4-component vector of int) 0:66 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:66 Constant: 0:66 3 (const int) 0:66 Constant: 0:66 1 (const int) 0:68 move second child to first child ( temp highp uint) 0:68 direct index ( temp highp uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 subgroupQuadSwapVertical ( global highp uint) 0:68 direct index ( temp highp uint) 0:68 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:68 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 0 (const int) 0:69 move second child to first child ( temp highp 2-component vector of uint) 0:69 vector swizzle ( temp highp 2-component vector of uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 subgroupQuadSwapVertical ( global highp 2-component vector of uint) 0:69 vector swizzle ( temp highp 2-component vector of uint) 0:69 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:70 move second child to first child ( temp highp 3-component vector of uint) 0:70 vector swizzle ( temp highp 3-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 subgroupQuadSwapVertical ( global highp 3-component vector of uint) 0:70 vector swizzle ( temp highp 3-component vector of uint) 0:70 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 2 (const int) 0:70 Sequence 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 2 (const int) 0:71 move second child to first child ( temp highp 4-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 subgroupQuadSwapVertical ( global highp 4-component vector of uint) 0:71 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:71 Constant: 0:71 3 (const int) 0:71 Constant: 0:71 2 (const int) 0:73 move second child to first child ( temp highp int) 0:73 direct index ( temp highp int) 0:73 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 3 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 Convert bool to int ( temp highp int) 0:73 subgroupQuadSwapVertical ( global bool) 0:73 Compare Less Than ( temp bool) 0:73 direct index ( temp highp int) 0:73 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:73 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0 (const int) 0:74 move second child to first child ( temp highp 2-component vector of int) 0:74 vector swizzle ( temp highp 2-component vector of int) 0:74 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 3 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Convert bool to int ( temp highp 2-component vector of int) 0:74 subgroupQuadSwapVertical ( global 2-component vector of bool) 0:74 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:74 vector swizzle ( temp highp 2-component vector of int) 0:74 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:74 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 0 (const int) 0:75 move second child to first child ( temp highp 3-component vector of int) 0:75 vector swizzle ( temp highp 3-component vector of int) 0:75 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 3 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Convert bool to int ( temp highp 3-component vector of int) 0:75 subgroupQuadSwapVertical ( global 3-component vector of bool) 0:75 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:75 vector swizzle ( temp highp 3-component vector of int) 0:75 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:75 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Sequence 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 1 (const int) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 0 (const int) 0:75 0 (const int) 0:76 move second child to first child ( temp highp 4-component vector of int) 0:76 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 3 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Convert bool to int ( temp highp 4-component vector of int) 0:76 subgroupQuadSwapVertical ( global 4-component vector of bool) 0:76 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:76 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:76 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 0 (const int) 0:76 0 (const int) 0:76 0 (const int) 0:78 move second child to first child ( temp highp float) 0:78 direct index ( temp highp float) 0:78 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 3 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 subgroupQuadSwapDiagonal ( global highp float) 0:78 direct index ( temp highp float) 0:78 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:78 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 0 (const int) 0:79 move second child to first child ( temp highp 2-component vector of float) 0:79 vector swizzle ( temp highp 2-component vector of float) 0:79 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 3 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupQuadSwapDiagonal ( global highp 2-component vector of float) 0:79 vector swizzle ( temp highp 2-component vector of float) 0:79 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:79 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 0 (const int) 0:79 Sequence 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:80 move second child to first child ( temp highp 3-component vector of float) 0:80 vector swizzle ( temp highp 3-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 3 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:80 subgroupQuadSwapDiagonal ( global highp 3-component vector of float) 0:80 vector swizzle ( temp highp 3-component vector of float) 0:80 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:80 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:80 Constant: 0:80 2 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Sequence 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 2 (const int) 0:81 move second child to first child ( temp highp 4-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 0 (const int) 0:81 subgroupQuadSwapDiagonal ( global highp 4-component vector of float) 0:81 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:81 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:81 Constant: 0:81 3 (const int) 0:81 Constant: 0:81 0 (const int) 0:83 move second child to first child ( temp highp int) 0:83 direct index ( temp highp int) 0:83 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 3 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0 (const int) 0:83 subgroupQuadSwapDiagonal ( global highp int) 0:83 direct index ( temp highp int) 0:83 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:83 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0 (const int) 0:84 move second child to first child ( temp highp 2-component vector of int) 0:84 vector swizzle ( temp highp 2-component vector of int) 0:84 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 3 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 subgroupQuadSwapDiagonal ( global highp 2-component vector of int) 0:84 vector swizzle ( temp highp 2-component vector of int) 0:84 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:84 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:84 Constant: 0:84 1 (const int) 0:84 Constant: 0:84 1 (const int) 0:84 Sequence 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 1 (const int) 0:85 move second child to first child ( temp highp 3-component vector of int) 0:85 vector swizzle ( temp highp 3-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 3 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 subgroupQuadSwapDiagonal ( global highp 3-component vector of int) 0:85 vector swizzle ( temp highp 3-component vector of int) 0:85 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:85 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Sequence 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 2 (const int) 0:86 move second child to first child ( temp highp 4-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 subgroupQuadSwapDiagonal ( global highp 4-component vector of int) 0:86 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:86 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:86 Constant: 0:86 3 (const int) 0:86 Constant: 0:86 1 (const int) 0:88 move second child to first child ( temp highp uint) 0:88 direct index ( temp highp uint) 0:88 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 3 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 subgroupQuadSwapDiagonal ( global highp uint) 0:88 direct index ( temp highp uint) 0:88 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:88 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0 (const int) 0:89 move second child to first child ( temp highp 2-component vector of uint) 0:89 vector swizzle ( temp highp 2-component vector of uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 3 (const int) 0:89 Constant: 0:89 2 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 subgroupQuadSwapDiagonal ( global highp 2-component vector of uint) 0:89 vector swizzle ( temp highp 2-component vector of uint) 0:89 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:89 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 2 (const int) 0:89 Sequence 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:90 move second child to first child ( temp highp 3-component vector of uint) 0:90 vector swizzle ( temp highp 3-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 subgroupQuadSwapDiagonal ( global highp 3-component vector of uint) 0:90 vector swizzle ( temp highp 3-component vector of uint) 0:90 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:90 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:91 move second child to first child ( temp highp 4-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 3 (const int) 0:91 Constant: 0:91 2 (const int) 0:91 subgroupQuadSwapDiagonal ( global highp 4-component vector of uint) 0:91 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:91 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:91 Constant: 0:91 3 (const int) 0:91 Constant: 0:91 2 (const int) 0:93 move second child to first child ( temp highp int) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 3 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 Convert bool to int ( temp highp int) 0:93 subgroupQuadSwapDiagonal ( global bool) 0:93 Compare Less Than ( temp bool) 0:93 direct index ( temp highp int) 0:93 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:93 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0 (const int) 0:93 Constant: 0:93 0 (const int) 0:94 move second child to first child ( temp highp 2-component vector of int) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 3 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Convert bool to int ( temp highp 2-component vector of int) 0:94 subgroupQuadSwapDiagonal ( global 2-component vector of bool) 0:94 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:94 vector swizzle ( temp highp 2-component vector of int) 0:94 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:94 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Sequence 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 1 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 0 (const int) 0:95 move second child to first child ( temp highp 3-component vector of int) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 3 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Convert bool to int ( temp highp 3-component vector of int) 0:95 subgroupQuadSwapDiagonal ( global 3-component vector of bool) 0:95 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:95 vector swizzle ( temp highp 3-component vector of int) 0:95 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:95 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 2 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 0 (const int) 0:95 0 (const int) 0:96 move second child to first child ( temp highp 4-component vector of int) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 3 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Convert bool to int ( temp highp 4-component vector of int) 0:96 subgroupQuadSwapDiagonal ( global 4-component vector of bool) 0:96 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:96 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:96 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 0 (const int) 0:96 0 (const int) 0:96 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupRotate.comp.out000066400000000000000000004445701506534232700247730ustar00rootroot00000000000000glsl.es320.subgroupRotate.comp Shader version: 320 Requested GL_KHR_shader_subgroup_rotate local_size = (8, 8, 1) 0:? Sequence 0:19 Function Definition: main( ( global void) 0:19 Function Parameters: 0:21 Sequence 0:21 Sequence 0:21 move second child to first child ( temp highp uint) 0:21 'delta' ( temp highp uint) 0:21 delta: direct index for structure (layout( column_major shared) readonly buffer highp uint) 0:21 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) 0:21 Constant: 0:21 0 (const int) 0:23 move second child to first child ( temp highp float) 0:23 direct index ( temp highp float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupRotate ( global highp float) 0:23 direct index ( temp highp float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 'delta' ( temp highp uint) 0:24 move second child to first child ( temp highp 2-component vector of float) 0:24 vector swizzle ( temp highp 2-component vector of float) 0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupRotate ( global highp 2-component vector of float) 0:24 vector swizzle ( temp highp 2-component vector of float) 0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 'delta' ( temp highp uint) 0:25 move second child to first child ( temp highp 3-component vector of float) 0:25 vector swizzle ( temp highp 3-component vector of float) 0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupRotate ( global highp 3-component vector of float) 0:25 vector swizzle ( temp highp 3-component vector of float) 0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 'delta' ( temp highp uint) 0:26 move second child to first child ( temp highp 4-component vector of float) 0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 subgroupRotate ( global highp 4-component vector of float) 0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 'delta' ( temp highp uint) 0:28 move second child to first child ( temp highp int) 0:28 direct index ( temp highp int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupRotate ( global highp int) 0:28 direct index ( temp highp int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 'delta' ( temp highp uint) 0:29 move second child to first child ( temp highp 2-component vector of int) 0:29 vector swizzle ( temp highp 2-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupRotate ( global highp 2-component vector of int) 0:29 vector swizzle ( temp highp 2-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 'delta' ( temp highp uint) 0:30 move second child to first child ( temp highp 3-component vector of int) 0:30 vector swizzle ( temp highp 3-component vector of int) 0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupRotate ( global highp 3-component vector of int) 0:30 vector swizzle ( temp highp 3-component vector of int) 0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 'delta' ( temp highp uint) 0:31 move second child to first child ( temp highp 4-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupRotate ( global highp 4-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 'delta' ( temp highp uint) 0:33 move second child to first child ( temp highp uint) 0:33 direct index ( temp highp uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupRotate ( global highp uint) 0:33 direct index ( temp highp uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 'delta' ( temp highp uint) 0:34 move second child to first child ( temp highp 2-component vector of uint) 0:34 vector swizzle ( temp highp 2-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 subgroupRotate ( global highp 2-component vector of uint) 0:34 vector swizzle ( temp highp 2-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 'delta' ( temp highp uint) 0:35 move second child to first child ( temp highp 3-component vector of uint) 0:35 vector swizzle ( temp highp 3-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupRotate ( global highp 3-component vector of uint) 0:35 vector swizzle ( temp highp 3-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 'delta' ( temp highp uint) 0:36 move second child to first child ( temp highp 4-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupRotate ( global highp 4-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 'delta' ( temp highp uint) 0:38 move second child to first child ( temp highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Convert bool to int ( temp highp int) 0:38 subgroupRotate ( global bool, operation at highp) 0:38 Compare Less Than ( temp bool) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 'delta' ( temp highp uint) 0:39 move second child to first child ( temp highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Convert bool to int ( temp highp 2-component vector of int) 0:39 subgroupRotate ( global 2-component vector of bool, operation at highp) 0:39 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 0 (const int) 0:39 'delta' ( temp highp uint) 0:40 move second child to first child ( temp highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Convert bool to int ( temp highp 3-component vector of int) 0:40 subgroupRotate ( global 3-component vector of bool, operation at highp) 0:40 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 0 (const int) 0:40 'delta' ( temp highp uint) 0:41 move second child to first child ( temp highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Convert bool to int ( temp highp 4-component vector of int) 0:41 subgroupRotate ( global 4-component vector of bool, operation at highp) 0:41 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 'delta' ( temp highp uint) 0:43 move second child to first child ( temp highp float) 0:43 direct index ( temp highp float) 0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupClusteredRotate ( global highp float) 0:43 direct index ( temp highp float) 0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 'delta' ( temp highp uint) 0:43 Constant: 0:43 1 (const uint) 0:44 move second child to first child ( temp highp 2-component vector of float) 0:44 vector swizzle ( temp highp 2-component vector of float) 0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupClusteredRotate ( global highp 2-component vector of float) 0:44 vector swizzle ( temp highp 2-component vector of float) 0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 'delta' ( temp highp uint) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp highp 3-component vector of float) 0:45 vector swizzle ( temp highp 3-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupClusteredRotate ( global highp 3-component vector of float) 0:45 vector swizzle ( temp highp 3-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 'delta' ( temp highp uint) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 subgroupClusteredRotate ( global highp 4-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 'delta' ( temp highp uint) 0:46 Constant: 0:46 1 (const uint) 0:48 move second child to first child ( temp highp int) 0:48 direct index ( temp highp int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupClusteredRotate ( global highp int) 0:48 direct index ( temp highp int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 'delta' ( temp highp uint) 0:48 Constant: 0:48 1 (const uint) 0:49 move second child to first child ( temp highp 2-component vector of int) 0:49 vector swizzle ( temp highp 2-component vector of int) 0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupClusteredRotate ( global highp 2-component vector of int) 0:49 vector swizzle ( temp highp 2-component vector of int) 0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 'delta' ( temp highp uint) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp highp 3-component vector of int) 0:50 vector swizzle ( temp highp 3-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupClusteredRotate ( global highp 3-component vector of int) 0:50 vector swizzle ( temp highp 3-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 'delta' ( temp highp uint) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp highp 4-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupClusteredRotate ( global highp 4-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 'delta' ( temp highp uint) 0:51 Constant: 0:51 1 (const uint) 0:53 move second child to first child ( temp highp uint) 0:53 direct index ( temp highp uint) 0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 subgroupClusteredRotate ( global highp uint) 0:53 direct index ( temp highp uint) 0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 'delta' ( temp highp uint) 0:53 Constant: 0:53 1 (const uint) 0:54 move second child to first child ( temp highp 2-component vector of uint) 0:54 vector swizzle ( temp highp 2-component vector of uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 subgroupClusteredRotate ( global highp 2-component vector of uint) 0:54 vector swizzle ( temp highp 2-component vector of uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 'delta' ( temp highp uint) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp highp 3-component vector of uint) 0:55 vector swizzle ( temp highp 3-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 subgroupClusteredRotate ( global highp 3-component vector of uint) 0:55 vector swizzle ( temp highp 3-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 'delta' ( temp highp uint) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp highp 4-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupClusteredRotate ( global highp 4-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 'delta' ( temp highp uint) 0:56 Constant: 0:56 1 (const uint) 0:58 move second child to first child ( temp highp int) 0:58 direct index ( temp highp int) 0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 3 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Convert bool to int ( temp highp int) 0:58 subgroupClusteredRotate ( global bool, operation at highp) 0:58 Compare Less Than ( temp bool) 0:58 direct index ( temp highp int) 0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 'delta' ( temp highp uint) 0:58 Constant: 0:58 1 (const uint) 0:59 move second child to first child ( temp highp 2-component vector of int) 0:59 vector swizzle ( temp highp 2-component vector of int) 0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Convert bool to int ( temp highp 2-component vector of int) 0:59 subgroupClusteredRotate ( global 2-component vector of bool, operation at highp) 0:59 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:59 vector swizzle ( temp highp 2-component vector of int) 0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 0 (const int) 0:59 'delta' ( temp highp uint) 0:59 Constant: 0:59 1 (const uint) 0:60 move second child to first child ( temp highp 3-component vector of int) 0:60 vector swizzle ( temp highp 3-component vector of int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 3 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Convert bool to int ( temp highp 3-component vector of int) 0:60 subgroupClusteredRotate ( global 3-component vector of bool, operation at highp) 0:60 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:60 vector swizzle ( temp highp 3-component vector of int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 0 (const int) 0:60 0 (const int) 0:60 'delta' ( temp highp uint) 0:60 Constant: 0:60 1 (const uint) 0:61 move second child to first child ( temp highp 4-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Convert bool to int ( temp highp 4-component vector of int) 0:61 subgroupClusteredRotate ( global 4-component vector of bool, operation at highp) 0:61 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 0 (const int) 0:61 0 (const int) 0:61 0 (const int) 0:61 'delta' ( temp highp uint) 0:61 Constant: 0:61 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_rotate local_size = (8, 8, 1) 0:? Sequence 0:19 Function Definition: main( ( global void) 0:19 Function Parameters: 0:21 Sequence 0:21 Sequence 0:21 move second child to first child ( temp highp uint) 0:21 'delta' ( temp highp uint) 0:21 delta: direct index for structure (layout( column_major shared) readonly buffer highp uint) 0:21 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) 0:21 Constant: 0:21 0 (const int) 0:23 move second child to first child ( temp highp float) 0:23 direct index ( temp highp float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupRotate ( global highp float) 0:23 direct index ( temp highp float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 'delta' ( temp highp uint) 0:24 move second child to first child ( temp highp 2-component vector of float) 0:24 vector swizzle ( temp highp 2-component vector of float) 0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupRotate ( global highp 2-component vector of float) 0:24 vector swizzle ( temp highp 2-component vector of float) 0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 'delta' ( temp highp uint) 0:25 move second child to first child ( temp highp 3-component vector of float) 0:25 vector swizzle ( temp highp 3-component vector of float) 0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupRotate ( global highp 3-component vector of float) 0:25 vector swizzle ( temp highp 3-component vector of float) 0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 'delta' ( temp highp uint) 0:26 move second child to first child ( temp highp 4-component vector of float) 0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 subgroupRotate ( global highp 4-component vector of float) 0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 'delta' ( temp highp uint) 0:28 move second child to first child ( temp highp int) 0:28 direct index ( temp highp int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupRotate ( global highp int) 0:28 direct index ( temp highp int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 'delta' ( temp highp uint) 0:29 move second child to first child ( temp highp 2-component vector of int) 0:29 vector swizzle ( temp highp 2-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupRotate ( global highp 2-component vector of int) 0:29 vector swizzle ( temp highp 2-component vector of int) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 'delta' ( temp highp uint) 0:30 move second child to first child ( temp highp 3-component vector of int) 0:30 vector swizzle ( temp highp 3-component vector of int) 0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupRotate ( global highp 3-component vector of int) 0:30 vector swizzle ( temp highp 3-component vector of int) 0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 'delta' ( temp highp uint) 0:31 move second child to first child ( temp highp 4-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupRotate ( global highp 4-component vector of int) 0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 'delta' ( temp highp uint) 0:33 move second child to first child ( temp highp uint) 0:33 direct index ( temp highp uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 subgroupRotate ( global highp uint) 0:33 direct index ( temp highp uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 'delta' ( temp highp uint) 0:34 move second child to first child ( temp highp 2-component vector of uint) 0:34 vector swizzle ( temp highp 2-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 subgroupRotate ( global highp 2-component vector of uint) 0:34 vector swizzle ( temp highp 2-component vector of uint) 0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 2 (const int) 0:34 Sequence 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 'delta' ( temp highp uint) 0:35 move second child to first child ( temp highp 3-component vector of uint) 0:35 vector swizzle ( temp highp 3-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 subgroupRotate ( global highp 3-component vector of uint) 0:35 vector swizzle ( temp highp 3-component vector of uint) 0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 'delta' ( temp highp uint) 0:36 move second child to first child ( temp highp 4-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 subgroupRotate ( global highp 4-component vector of uint) 0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 2 (const int) 0:36 'delta' ( temp highp uint) 0:38 move second child to first child ( temp highp int) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Convert bool to int ( temp highp int) 0:38 subgroupRotate ( global bool, operation at highp) 0:38 Compare Less Than ( temp bool) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 'delta' ( temp highp uint) 0:39 move second child to first child ( temp highp 2-component vector of int) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Convert bool to int ( temp highp 2-component vector of int) 0:39 subgroupRotate ( global 2-component vector of bool, operation at highp) 0:39 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 0 (const int) 0:39 'delta' ( temp highp uint) 0:40 move second child to first child ( temp highp 3-component vector of int) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Convert bool to int ( temp highp 3-component vector of int) 0:40 subgroupRotate ( global 3-component vector of bool, operation at highp) 0:40 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 0 (const int) 0:40 'delta' ( temp highp uint) 0:41 move second child to first child ( temp highp 4-component vector of int) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Convert bool to int ( temp highp 4-component vector of int) 0:41 subgroupRotate ( global 4-component vector of bool, operation at highp) 0:41 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 'delta' ( temp highp uint) 0:43 move second child to first child ( temp highp float) 0:43 direct index ( temp highp float) 0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupClusteredRotate ( global highp float) 0:43 direct index ( temp highp float) 0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 'delta' ( temp highp uint) 0:43 Constant: 0:43 1 (const uint) 0:44 move second child to first child ( temp highp 2-component vector of float) 0:44 vector swizzle ( temp highp 2-component vector of float) 0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupClusteredRotate ( global highp 2-component vector of float) 0:44 vector swizzle ( temp highp 2-component vector of float) 0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 0 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 'delta' ( temp highp uint) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp highp 3-component vector of float) 0:45 vector swizzle ( temp highp 3-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupClusteredRotate ( global highp 3-component vector of float) 0:45 vector swizzle ( temp highp 3-component vector of float) 0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 'delta' ( temp highp uint) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 subgroupClusteredRotate ( global highp 4-component vector of float) 0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 0 (const int) 0:46 'delta' ( temp highp uint) 0:46 Constant: 0:46 1 (const uint) 0:48 move second child to first child ( temp highp int) 0:48 direct index ( temp highp int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupClusteredRotate ( global highp int) 0:48 direct index ( temp highp int) 0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 'delta' ( temp highp uint) 0:48 Constant: 0:48 1 (const uint) 0:49 move second child to first child ( temp highp 2-component vector of int) 0:49 vector swizzle ( temp highp 2-component vector of int) 0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 2 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupClusteredRotate ( global highp 2-component vector of int) 0:49 vector swizzle ( temp highp 2-component vector of int) 0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 'delta' ( temp highp uint) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp highp 3-component vector of int) 0:50 vector swizzle ( temp highp 3-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupClusteredRotate ( global highp 3-component vector of int) 0:50 vector swizzle ( temp highp 3-component vector of int) 0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 'delta' ( temp highp uint) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp highp 4-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 2 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupClusteredRotate ( global highp 4-component vector of int) 0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 'delta' ( temp highp uint) 0:51 Constant: 0:51 1 (const uint) 0:53 move second child to first child ( temp highp uint) 0:53 direct index ( temp highp uint) 0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 subgroupClusteredRotate ( global highp uint) 0:53 direct index ( temp highp uint) 0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 'delta' ( temp highp uint) 0:53 Constant: 0:53 1 (const uint) 0:54 move second child to first child ( temp highp 2-component vector of uint) 0:54 vector swizzle ( temp highp 2-component vector of uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 subgroupClusteredRotate ( global highp 2-component vector of uint) 0:54 vector swizzle ( temp highp 2-component vector of uint) 0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 2 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 'delta' ( temp highp uint) 0:54 Constant: 0:54 1 (const uint) 0:55 move second child to first child ( temp highp 3-component vector of uint) 0:55 vector swizzle ( temp highp 3-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 subgroupClusteredRotate ( global highp 3-component vector of uint) 0:55 vector swizzle ( temp highp 3-component vector of uint) 0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 'delta' ( temp highp uint) 0:55 Constant: 0:55 1 (const uint) 0:56 move second child to first child ( temp highp 4-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 subgroupClusteredRotate ( global highp 4-component vector of uint) 0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 2 (const int) 0:56 'delta' ( temp highp uint) 0:56 Constant: 0:56 1 (const uint) 0:58 move second child to first child ( temp highp int) 0:58 direct index ( temp highp int) 0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 3 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Convert bool to int ( temp highp int) 0:58 subgroupClusteredRotate ( global bool, operation at highp) 0:58 Compare Less Than ( temp bool) 0:58 direct index ( temp highp int) 0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 0 (const int) 0:58 'delta' ( temp highp uint) 0:58 Constant: 0:58 1 (const uint) 0:59 move second child to first child ( temp highp 2-component vector of int) 0:59 vector swizzle ( temp highp 2-component vector of int) 0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Convert bool to int ( temp highp 2-component vector of int) 0:59 subgroupClusteredRotate ( global 2-component vector of bool, operation at highp) 0:59 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:59 vector swizzle ( temp highp 2-component vector of int) 0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 0 (const int) 0:59 0 (const int) 0:59 'delta' ( temp highp uint) 0:59 Constant: 0:59 1 (const uint) 0:60 move second child to first child ( temp highp 3-component vector of int) 0:60 vector swizzle ( temp highp 3-component vector of int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 3 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Convert bool to int ( temp highp 3-component vector of int) 0:60 subgroupClusteredRotate ( global 3-component vector of bool, operation at highp) 0:60 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:60 vector swizzle ( temp highp 3-component vector of int) 0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Sequence 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 2 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 0 (const int) 0:60 0 (const int) 0:60 'delta' ( temp highp uint) 0:60 Constant: 0:60 1 (const uint) 0:61 move second child to first child ( temp highp 4-component vector of int) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 3 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Convert bool to int ( temp highp 4-component vector of int) 0:61 subgroupClusteredRotate ( global 4-component vector of bool, operation at highp) 0:61 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 0 (const int) 0:61 0 (const int) 0:61 0 (const int) 0:61 'delta' ( temp highp uint) 0:61 Constant: 0:61 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupShuffle.comp.out000066400000000000000000004411751506534232700251270ustar00rootroot00000000000000glsl.es320.subgroupShuffle.comp Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_shuffle local_size = (8, 8, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupShuffle ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 'invocation' ( temp highp uint) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupShuffle ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 'invocation' ( temp highp uint) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupShuffle ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 'invocation' ( temp highp uint) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupShuffle ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 'invocation' ( temp highp uint) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupShuffle ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 'invocation' ( temp highp uint) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupShuffle ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 'invocation' ( temp highp uint) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupShuffle ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 'invocation' ( temp highp uint) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupShuffle ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 'invocation' ( temp highp uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupShuffle ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 'invocation' ( temp highp uint) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupShuffle ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 'invocation' ( temp highp uint) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupShuffle ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 'invocation' ( temp highp uint) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupShuffle ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'invocation' ( temp highp uint) 0:33 move second child to first child ( temp highp int) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Convert bool to int ( temp highp int) 0:33 subgroupShuffle ( global bool, operation at highp) 0:33 Compare Less Than ( temp bool) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 'invocation' ( temp highp uint) 0:34 move second child to first child ( temp highp 2-component vector of int) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 Convert bool to int ( temp highp 2-component vector of int) 0:34 subgroupShuffle ( global 2-component vector of bool, operation at highp) 0:34 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 0 (const int) 0:34 0 (const int) 0:34 'invocation' ( temp highp uint) 0:35 move second child to first child ( temp highp 3-component vector of int) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Convert bool to int ( temp highp 3-component vector of int) 0:35 subgroupShuffle ( global 3-component vector of bool, operation at highp) 0:35 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 0 (const int) 0:35 0 (const int) 0:35 'invocation' ( temp highp uint) 0:36 move second child to first child ( temp highp 4-component vector of int) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Convert bool to int ( temp highp 4-component vector of int) 0:36 subgroupShuffle ( global 4-component vector of bool, operation at highp) 0:36 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 'invocation' ( temp highp uint) 0:38 move second child to first child ( temp highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupShuffleXor ( global highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 'invocation' ( temp highp uint) 0:39 move second child to first child ( temp highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupShuffleXor ( global highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 'invocation' ( temp highp uint) 0:40 move second child to first child ( temp highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupShuffleXor ( global highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 'invocation' ( temp highp uint) 0:41 move second child to first child ( temp highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 subgroupShuffleXor ( global highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 'invocation' ( temp highp uint) 0:43 move second child to first child ( temp highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupShuffleXor ( global highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 'invocation' ( temp highp uint) 0:44 move second child to first child ( temp highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupShuffleXor ( global highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 'invocation' ( temp highp uint) 0:45 move second child to first child ( temp highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupShuffleXor ( global highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 'invocation' ( temp highp uint) 0:46 move second child to first child ( temp highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupShuffleXor ( global highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 'invocation' ( temp highp uint) 0:48 move second child to first child ( temp highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 3 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupShuffleXor ( global highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 'invocation' ( temp highp uint) 0:49 move second child to first child ( temp highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupShuffleXor ( global highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 'invocation' ( temp highp uint) 0:50 move second child to first child ( temp highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupShuffleXor ( global highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 'invocation' ( temp highp uint) 0:51 move second child to first child ( temp highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupShuffleXor ( global highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'invocation' ( temp highp uint) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Convert bool to int ( temp highp int) 0:53 subgroupShuffleXor ( global bool, operation at highp) 0:53 Compare Less Than ( temp bool) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 'invocation' ( temp highp uint) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Convert bool to int ( temp highp 2-component vector of int) 0:54 subgroupShuffleXor ( global 2-component vector of bool, operation at highp) 0:54 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 0 (const int) 0:54 'invocation' ( temp highp uint) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Convert bool to int ( temp highp 3-component vector of int) 0:55 subgroupShuffleXor ( global 3-component vector of bool, operation at highp) 0:55 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 0 (const int) 0:55 0 (const int) 0:55 'invocation' ( temp highp uint) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Convert bool to int ( temp highp 4-component vector of int) 0:56 subgroupShuffleXor ( global 4-component vector of bool, operation at highp) 0:56 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 'invocation' ( temp highp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_shuffle local_size = (8, 8, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupShuffle ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 'invocation' ( temp highp uint) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupShuffle ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 'invocation' ( temp highp uint) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupShuffle ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 'invocation' ( temp highp uint) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupShuffle ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 'invocation' ( temp highp uint) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupShuffle ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 'invocation' ( temp highp uint) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupShuffle ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 'invocation' ( temp highp uint) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupShuffle ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 'invocation' ( temp highp uint) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupShuffle ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 'invocation' ( temp highp uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupShuffle ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 'invocation' ( temp highp uint) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupShuffle ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 'invocation' ( temp highp uint) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupShuffle ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 'invocation' ( temp highp uint) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupShuffle ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'invocation' ( temp highp uint) 0:33 move second child to first child ( temp highp int) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Convert bool to int ( temp highp int) 0:33 subgroupShuffle ( global bool, operation at highp) 0:33 Compare Less Than ( temp bool) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 'invocation' ( temp highp uint) 0:34 move second child to first child ( temp highp 2-component vector of int) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 Convert bool to int ( temp highp 2-component vector of int) 0:34 subgroupShuffle ( global 2-component vector of bool, operation at highp) 0:34 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 0 (const int) 0:34 0 (const int) 0:34 'invocation' ( temp highp uint) 0:35 move second child to first child ( temp highp 3-component vector of int) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Convert bool to int ( temp highp 3-component vector of int) 0:35 subgroupShuffle ( global 3-component vector of bool, operation at highp) 0:35 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 0 (const int) 0:35 0 (const int) 0:35 'invocation' ( temp highp uint) 0:36 move second child to first child ( temp highp 4-component vector of int) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Convert bool to int ( temp highp 4-component vector of int) 0:36 subgroupShuffle ( global 4-component vector of bool, operation at highp) 0:36 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 'invocation' ( temp highp uint) 0:38 move second child to first child ( temp highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupShuffleXor ( global highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 'invocation' ( temp highp uint) 0:39 move second child to first child ( temp highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupShuffleXor ( global highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 'invocation' ( temp highp uint) 0:40 move second child to first child ( temp highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupShuffleXor ( global highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 'invocation' ( temp highp uint) 0:41 move second child to first child ( temp highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 subgroupShuffleXor ( global highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 'invocation' ( temp highp uint) 0:43 move second child to first child ( temp highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupShuffleXor ( global highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 'invocation' ( temp highp uint) 0:44 move second child to first child ( temp highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupShuffleXor ( global highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 'invocation' ( temp highp uint) 0:45 move second child to first child ( temp highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupShuffleXor ( global highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 'invocation' ( temp highp uint) 0:46 move second child to first child ( temp highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupShuffleXor ( global highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 'invocation' ( temp highp uint) 0:48 move second child to first child ( temp highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 3 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupShuffleXor ( global highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 'invocation' ( temp highp uint) 0:49 move second child to first child ( temp highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupShuffleXor ( global highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 'invocation' ( temp highp uint) 0:50 move second child to first child ( temp highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupShuffleXor ( global highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 'invocation' ( temp highp uint) 0:51 move second child to first child ( temp highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupShuffleXor ( global highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'invocation' ( temp highp uint) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Convert bool to int ( temp highp int) 0:53 subgroupShuffleXor ( global bool, operation at highp) 0:53 Compare Less Than ( temp bool) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 'invocation' ( temp highp uint) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Convert bool to int ( temp highp 2-component vector of int) 0:54 subgroupShuffleXor ( global 2-component vector of bool, operation at highp) 0:54 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 0 (const int) 0:54 'invocation' ( temp highp uint) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Convert bool to int ( temp highp 3-component vector of int) 0:55 subgroupShuffleXor ( global 3-component vector of bool, operation at highp) 0:55 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 0 (const int) 0:55 0 (const int) 0:55 'invocation' ( temp highp uint) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Convert bool to int ( temp highp 4-component vector of int) 0:56 subgroupShuffleXor ( global 4-component vector of bool, operation at highp) 0:56 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 'invocation' ( temp highp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupShuffleRelative.comp.out000066400000000000000000004413671506534232700266260ustar00rootroot00000000000000glsl.es320.subgroupShuffleRelative.comp Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_shuffle_relative local_size = (8, 8, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupShuffleUp ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 'invocation' ( temp highp uint) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupShuffleUp ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 'invocation' ( temp highp uint) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupShuffleUp ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 'invocation' ( temp highp uint) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupShuffleUp ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 'invocation' ( temp highp uint) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupShuffleUp ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 'invocation' ( temp highp uint) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupShuffleUp ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 'invocation' ( temp highp uint) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupShuffleUp ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 'invocation' ( temp highp uint) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupShuffleUp ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 'invocation' ( temp highp uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupShuffleUp ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 'invocation' ( temp highp uint) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupShuffleUp ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 'invocation' ( temp highp uint) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupShuffleUp ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 'invocation' ( temp highp uint) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupShuffleUp ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'invocation' ( temp highp uint) 0:33 move second child to first child ( temp highp int) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Convert bool to int ( temp highp int) 0:33 subgroupShuffleUp ( global bool, operation at highp) 0:33 Compare Less Than ( temp bool) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 'invocation' ( temp highp uint) 0:34 move second child to first child ( temp highp 2-component vector of int) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 Convert bool to int ( temp highp 2-component vector of int) 0:34 subgroupShuffleUp ( global 2-component vector of bool, operation at highp) 0:34 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 0 (const int) 0:34 0 (const int) 0:34 'invocation' ( temp highp uint) 0:35 move second child to first child ( temp highp 3-component vector of int) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Convert bool to int ( temp highp 3-component vector of int) 0:35 subgroupShuffleUp ( global 3-component vector of bool, operation at highp) 0:35 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 0 (const int) 0:35 0 (const int) 0:35 'invocation' ( temp highp uint) 0:36 move second child to first child ( temp highp 4-component vector of int) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Convert bool to int ( temp highp 4-component vector of int) 0:36 subgroupShuffleUp ( global 4-component vector of bool, operation at highp) 0:36 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 'invocation' ( temp highp uint) 0:38 move second child to first child ( temp highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupShuffleDown ( global highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 'invocation' ( temp highp uint) 0:39 move second child to first child ( temp highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupShuffleDown ( global highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 'invocation' ( temp highp uint) 0:40 move second child to first child ( temp highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupShuffleDown ( global highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 'invocation' ( temp highp uint) 0:41 move second child to first child ( temp highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 subgroupShuffleDown ( global highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 'invocation' ( temp highp uint) 0:43 move second child to first child ( temp highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupShuffleDown ( global highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 'invocation' ( temp highp uint) 0:44 move second child to first child ( temp highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupShuffleDown ( global highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 'invocation' ( temp highp uint) 0:45 move second child to first child ( temp highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupShuffleDown ( global highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 'invocation' ( temp highp uint) 0:46 move second child to first child ( temp highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupShuffleDown ( global highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 'invocation' ( temp highp uint) 0:48 move second child to first child ( temp highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 3 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupShuffleDown ( global highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 'invocation' ( temp highp uint) 0:49 move second child to first child ( temp highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupShuffleDown ( global highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 'invocation' ( temp highp uint) 0:50 move second child to first child ( temp highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupShuffleDown ( global highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 'invocation' ( temp highp uint) 0:51 move second child to first child ( temp highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupShuffleDown ( global highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'invocation' ( temp highp uint) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Convert bool to int ( temp highp int) 0:53 subgroupShuffleDown ( global bool, operation at highp) 0:53 Compare Less Than ( temp bool) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 'invocation' ( temp highp uint) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Convert bool to int ( temp highp 2-component vector of int) 0:54 subgroupShuffleDown ( global 2-component vector of bool, operation at highp) 0:54 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 0 (const int) 0:54 'invocation' ( temp highp uint) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Convert bool to int ( temp highp 3-component vector of int) 0:55 subgroupShuffleDown ( global 3-component vector of bool, operation at highp) 0:55 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 0 (const int) 0:55 0 (const int) 0:55 'invocation' ( temp highp uint) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Convert bool to int ( temp highp 4-component vector of int) 0:56 subgroupShuffleDown ( global 4-component vector of bool, operation at highp) 0:56 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 'invocation' ( temp highp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_shuffle_relative local_size = (8, 8, 1) 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp highp uint) 0:16 'invocation' ( temp highp uint) 0:16 mod ( temp mediump uint) 0:16 add ( temp mediump uint) 0:16 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:16 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:16 Constant: 0:16 4 (const uint) 0:18 move second child to first child ( temp highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 subgroupShuffleUp ( global highp float) 0:18 direct index ( temp highp float) 0:18 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:18 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 'invocation' ( temp highp uint) 0:19 move second child to first child ( temp highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupShuffleUp ( global highp 2-component vector of float) 0:19 vector swizzle ( temp highp 2-component vector of float) 0:19 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Sequence 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 'invocation' ( temp highp uint) 0:20 move second child to first child ( temp highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 subgroupShuffleUp ( global highp 3-component vector of float) 0:20 vector swizzle ( temp highp 3-component vector of float) 0:20 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:20 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 'invocation' ( temp highp uint) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 subgroupShuffleUp ( global highp 4-component vector of float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:21 Constant: 0:21 3 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 'invocation' ( temp highp uint) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 subgroupShuffleUp ( global highp int) 0:23 direct index ( temp highp int) 0:23 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 'invocation' ( temp highp uint) 0:24 move second child to first child ( temp highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 subgroupShuffleUp ( global highp 2-component vector of int) 0:24 vector swizzle ( temp highp 2-component vector of int) 0:24 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 'invocation' ( temp highp uint) 0:25 move second child to first child ( temp highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 subgroupShuffleUp ( global highp 3-component vector of int) 0:25 vector swizzle ( temp highp 3-component vector of int) 0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Sequence 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 'invocation' ( temp highp uint) 0:26 move second child to first child ( temp highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupShuffleUp ( global highp 4-component vector of int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 'invocation' ( temp highp uint) 0:28 move second child to first child ( temp highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 subgroupShuffleUp ( global highp uint) 0:28 direct index ( temp highp uint) 0:28 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 'invocation' ( temp highp uint) 0:29 move second child to first child ( temp highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 subgroupShuffleUp ( global highp 2-component vector of uint) 0:29 vector swizzle ( temp highp 2-component vector of uint) 0:29 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2 (const int) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 'invocation' ( temp highp uint) 0:30 move second child to first child ( temp highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 subgroupShuffleUp ( global highp 3-component vector of uint) 0:30 vector swizzle ( temp highp 3-component vector of uint) 0:30 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2 (const int) 0:30 'invocation' ( temp highp uint) 0:31 move second child to first child ( temp highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 subgroupShuffleUp ( global highp 4-component vector of uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:31 Constant: 0:31 3 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 'invocation' ( temp highp uint) 0:33 move second child to first child ( temp highp int) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Convert bool to int ( temp highp int) 0:33 subgroupShuffleUp ( global bool, operation at highp) 0:33 Compare Less Than ( temp bool) 0:33 direct index ( temp highp int) 0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 'invocation' ( temp highp uint) 0:34 move second child to first child ( temp highp 2-component vector of int) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 Convert bool to int ( temp highp 2-component vector of int) 0:34 subgroupShuffleUp ( global 2-component vector of bool, operation at highp) 0:34 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:34 vector swizzle ( temp highp 2-component vector of int) 0:34 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:34 Constant: 0:34 1 (const int) 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 0 (const int) 0:34 0 (const int) 0:34 'invocation' ( temp highp uint) 0:35 move second child to first child ( temp highp 3-component vector of int) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Convert bool to int ( temp highp 3-component vector of int) 0:35 subgroupShuffleUp ( global 3-component vector of bool, operation at highp) 0:35 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:35 vector swizzle ( temp highp 3-component vector of int) 0:35 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 0 (const int) 0:35 0 (const int) 0:35 'invocation' ( temp highp uint) 0:36 move second child to first child ( temp highp 4-component vector of int) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Convert bool to int ( temp highp 4-component vector of int) 0:36 subgroupShuffleUp ( global 4-component vector of bool, operation at highp) 0:36 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:36 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 0 (const int) 0:36 'invocation' ( temp highp uint) 0:38 move second child to first child ( temp highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 subgroupShuffleDown ( global highp float) 0:38 direct index ( temp highp float) 0:38 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 'invocation' ( temp highp uint) 0:39 move second child to first child ( temp highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupShuffleDown ( global highp 2-component vector of float) 0:39 vector swizzle ( temp highp 2-component vector of float) 0:39 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 'invocation' ( temp highp uint) 0:40 move second child to first child ( temp highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 subgroupShuffleDown ( global highp 3-component vector of float) 0:40 vector swizzle ( temp highp 3-component vector of float) 0:40 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 'invocation' ( temp highp uint) 0:41 move second child to first child ( temp highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 subgroupShuffleDown ( global highp 4-component vector of float) 0:41 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:41 Constant: 0:41 3 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 'invocation' ( temp highp uint) 0:43 move second child to first child ( temp highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 subgroupShuffleDown ( global highp int) 0:43 direct index ( temp highp int) 0:43 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 'invocation' ( temp highp uint) 0:44 move second child to first child ( temp highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 subgroupShuffleDown ( global highp 2-component vector of int) 0:44 vector swizzle ( temp highp 2-component vector of int) 0:44 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Sequence 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 'invocation' ( temp highp uint) 0:45 move second child to first child ( temp highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 subgroupShuffleDown ( global highp 3-component vector of int) 0:45 vector swizzle ( temp highp 3-component vector of int) 0:45 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Sequence 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 'invocation' ( temp highp uint) 0:46 move second child to first child ( temp highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupShuffleDown ( global highp 4-component vector of int) 0:46 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:46 Constant: 0:46 3 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 'invocation' ( temp highp uint) 0:48 move second child to first child ( temp highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 3 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 subgroupShuffleDown ( global highp uint) 0:48 direct index ( temp highp uint) 0:48 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 0 (const int) 0:48 'invocation' ( temp highp uint) 0:49 move second child to first child ( temp highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 subgroupShuffleDown ( global highp 2-component vector of uint) 0:49 vector swizzle ( temp highp 2-component vector of uint) 0:49 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 2 (const int) 0:49 Sequence 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 1 (const int) 0:49 'invocation' ( temp highp uint) 0:50 move second child to first child ( temp highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 subgroupShuffleDown ( global highp 3-component vector of uint) 0:50 vector swizzle ( temp highp 3-component vector of uint) 0:50 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 Sequence 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const int) 0:50 Constant: 0:50 2 (const int) 0:50 'invocation' ( temp highp uint) 0:51 move second child to first child ( temp highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 subgroupShuffleDown ( global highp 4-component vector of uint) 0:51 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 2 (const int) 0:51 'invocation' ( temp highp uint) 0:53 move second child to first child ( temp highp int) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Convert bool to int ( temp highp int) 0:53 subgroupShuffleDown ( global bool, operation at highp) 0:53 Compare Less Than ( temp bool) 0:53 direct index ( temp highp int) 0:53 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 'invocation' ( temp highp uint) 0:54 move second child to first child ( temp highp 2-component vector of int) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Convert bool to int ( temp highp 2-component vector of int) 0:54 subgroupShuffleDown ( global 2-component vector of bool, operation at highp) 0:54 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:54 vector swizzle ( temp highp 2-component vector of int) 0:54 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 0 (const int) 0:54 'invocation' ( temp highp uint) 0:55 move second child to first child ( temp highp 3-component vector of int) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 3 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Convert bool to int ( temp highp 3-component vector of int) 0:55 subgroupShuffleDown ( global 3-component vector of bool, operation at highp) 0:55 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:55 vector swizzle ( temp highp 3-component vector of int) 0:55 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Sequence 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 1 (const int) 0:55 Constant: 0:55 2 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 0 (const int) 0:55 0 (const int) 0:55 'invocation' ( temp highp uint) 0:56 move second child to first child ( temp highp 4-component vector of int) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 3 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Convert bool to int ( temp highp 4-component vector of int) 0:56 subgroupShuffleDown ( global 4-component vector of bool, operation at highp) 0:56 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:56 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 0 (const int) 0:56 'invocation' ( temp highp uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) glslang-16.0.0/Test/baseResults/glsl.es320.subgroupVote.comp.out000066400000000000000000002453421506534232700244460ustar00rootroot00000000000000glsl.es320.subgroupVote.comp Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_vote local_size = (8, 8, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp highp uint) 0:17 'invocation' ( temp highp uint) 0:17 mod ( temp mediump uint) 0:17 add ( temp mediump uint) 0:17 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 subgroupAll ( global bool) 0:19 Compare Less Than ( temp bool) 0:19 r: direct index for structure (layout( column_major shared) buffer highp int) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 3 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 true case 0:21 Sequence 0:21 move second child to first child ( temp highp int) 0:21 r: direct index for structure (layout( column_major shared) buffer highp int) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 3 (const int) 0:21 Convert bool to int ( temp highp int) 0:21 subgroupAllEqual ( global bool, operation at highp) 0:21 direct index ( temp highp float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 move second child to first child ( temp highp int) 0:22 r: direct index for structure (layout( column_major shared) buffer highp int) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 3 (const int) 0:22 Convert bool to int ( temp highp int) 0:22 subgroupAllEqual ( global bool, operation at highp) 0:22 vector swizzle ( temp highp 2-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:23 move second child to first child ( temp highp int) 0:23 r: direct index for structure (layout( column_major shared) buffer highp int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 3 (const int) 0:23 Convert bool to int ( temp highp int) 0:23 subgroupAllEqual ( global bool, operation at highp) 0:23 vector swizzle ( temp highp 3-component vector of float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Sequence 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 2 (const int) 0:24 move second child to first child ( temp highp int) 0:24 r: direct index for structure (layout( column_major shared) buffer highp int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 3 (const int) 0:24 Convert bool to int ( temp highp int) 0:24 subgroupAllEqual ( global bool, operation at highp) 0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: 0:24 0 (const int) 0:26 move second child to first child ( temp highp int) 0:26 r: direct index for structure (layout( column_major shared) buffer highp int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 3 (const int) 0:26 Convert bool to int ( temp highp int) 0:26 subgroupAllEqual ( global bool, operation at highp) 0:26 direct index ( temp highp int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:27 move second child to first child ( temp highp int) 0:27 r: direct index for structure (layout( column_major shared) buffer highp int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 3 (const int) 0:27 Convert bool to int ( temp highp int) 0:27 subgroupAllEqual ( global bool, operation at highp) 0:27 vector swizzle ( temp highp 2-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:28 move second child to first child ( temp highp int) 0:28 r: direct index for structure (layout( column_major shared) buffer highp int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 3 (const int) 0:28 Convert bool to int ( temp highp int) 0:28 subgroupAllEqual ( global bool, operation at highp) 0:28 vector swizzle ( temp highp 3-component vector of int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Sequence 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 2 (const int) 0:29 move second child to first child ( temp highp int) 0:29 r: direct index for structure (layout( column_major shared) buffer highp int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 Convert bool to int ( temp highp int) 0:29 subgroupAllEqual ( global bool, operation at highp) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:29 Constant: 0:29 3 (const int) 0:29 Constant: 0:29 1 (const int) 0:31 move second child to first child ( temp highp int) 0:31 r: direct index for structure (layout( column_major shared) buffer highp int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Convert bool to int ( temp highp int) 0:31 subgroupAllEqual ( global bool, operation at highp) 0:31 direct index ( temp highp uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 0 (const int) 0:32 move second child to first child ( temp highp int) 0:32 r: direct index for structure (layout( column_major shared) buffer highp int) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Convert bool to int ( temp highp int) 0:32 subgroupAllEqual ( global bool, operation at highp) 0:32 vector swizzle ( temp highp 2-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:33 move second child to first child ( temp highp int) 0:33 r: direct index for structure (layout( column_major shared) buffer highp int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 3 (const int) 0:33 Convert bool to int ( temp highp int) 0:33 subgroupAllEqual ( global bool, operation at highp) 0:33 vector swizzle ( temp highp 3-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:34 move second child to first child ( temp highp int) 0:34 r: direct index for structure (layout( column_major shared) buffer highp int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Convert bool to int ( temp highp int) 0:34 subgroupAllEqual ( global bool, operation at highp) 0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 2 (const int) 0:19 false case 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 subgroupAny ( global bool) 0:36 Compare Less Than ( temp bool) 0:36 r: direct index for structure (layout( column_major shared) buffer highp int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 true case 0:38 Sequence 0:38 move second child to first child ( temp highp int) 0:38 r: direct index for structure (layout( column_major shared) buffer highp int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 3 (const int) 0:38 Construct int ( temp highp int) 0:38 Convert bool to int ( temp highp int) 0:38 subgroupAllEqual ( global bool) 0:38 Compare Less Than ( temp bool) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 move second child to first child ( temp highp int) 0:39 r: direct index for structure (layout( column_major shared) buffer highp int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 3 (const int) 0:39 Construct int ( temp highp int) 0:39 Construct ivec2 ( temp highp 2-component vector of int) 0:39 Convert bool to int ( temp highp int) 0:39 subgroupAllEqual ( global bool) 0:39 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 0 (const int) 0:40 move second child to first child ( temp highp int) 0:40 r: direct index for structure (layout( column_major shared) buffer highp int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 3 (const int) 0:40 Construct int ( temp highp int) 0:40 Construct ivec3 ( temp highp 3-component vector of int) 0:40 Convert bool to int ( temp highp int) 0:40 subgroupAllEqual ( global bool) 0:40 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 0 (const int) 0:41 move second child to first child ( temp highp int) 0:41 r: direct index for structure (layout( column_major shared) buffer highp int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 3 (const int) 0:41 Construct int ( temp highp int) 0:41 Construct ivec4 ( temp highp 4-component vector of int) 0:41 Convert bool to int ( temp highp int) 0:41 subgroupAllEqual ( global bool) 0:41 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) Linked compute stage: Shader version: 320 Requested GL_KHR_shader_subgroup_basic Requested GL_KHR_shader_subgroup_vote local_size = (8, 8, 1) 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp highp uint) 0:17 'invocation' ( temp highp uint) 0:17 mod ( temp mediump uint) 0:17 add ( temp mediump uint) 0:17 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:17 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:17 Constant: 0:17 4 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 subgroupAll ( global bool) 0:19 Compare Less Than ( temp bool) 0:19 r: direct index for structure (layout( column_major shared) buffer highp int) 0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 3 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 true case 0:21 Sequence 0:21 move second child to first child ( temp highp int) 0:21 r: direct index for structure (layout( column_major shared) buffer highp int) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 3 (const int) 0:21 Convert bool to int ( temp highp int) 0:21 subgroupAllEqual ( global bool, operation at highp) 0:21 direct index ( temp highp float) 0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 move second child to first child ( temp highp int) 0:22 r: direct index for structure (layout( column_major shared) buffer highp int) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 3 (const int) 0:22 Convert bool to int ( temp highp int) 0:22 subgroupAllEqual ( global bool, operation at highp) 0:22 vector swizzle ( temp highp 2-component vector of float) 0:22 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:23 move second child to first child ( temp highp int) 0:23 r: direct index for structure (layout( column_major shared) buffer highp int) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 3 (const int) 0:23 Convert bool to int ( temp highp int) 0:23 subgroupAllEqual ( global bool, operation at highp) 0:23 vector swizzle ( temp highp 3-component vector of float) 0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Sequence 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 2 (const int) 0:24 move second child to first child ( temp highp int) 0:24 r: direct index for structure (layout( column_major shared) buffer highp int) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 3 (const int) 0:24 Convert bool to int ( temp highp int) 0:24 subgroupAllEqual ( global bool, operation at highp) 0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) 0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: 0:24 0 (const int) 0:26 move second child to first child ( temp highp int) 0:26 r: direct index for structure (layout( column_major shared) buffer highp int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 3 (const int) 0:26 Convert bool to int ( temp highp int) 0:26 subgroupAllEqual ( global bool, operation at highp) 0:26 direct index ( temp highp int) 0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:27 move second child to first child ( temp highp int) 0:27 r: direct index for structure (layout( column_major shared) buffer highp int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 3 (const int) 0:27 Convert bool to int ( temp highp int) 0:27 subgroupAllEqual ( global bool, operation at highp) 0:27 vector swizzle ( temp highp 2-component vector of int) 0:27 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:28 move second child to first child ( temp highp int) 0:28 r: direct index for structure (layout( column_major shared) buffer highp int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 3 (const int) 0:28 Convert bool to int ( temp highp int) 0:28 subgroupAllEqual ( global bool, operation at highp) 0:28 vector swizzle ( temp highp 3-component vector of int) 0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Sequence 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 2 (const int) 0:29 move second child to first child ( temp highp int) 0:29 r: direct index for structure (layout( column_major shared) buffer highp int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 Convert bool to int ( temp highp int) 0:29 subgroupAllEqual ( global bool, operation at highp) 0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:29 Constant: 0:29 3 (const int) 0:29 Constant: 0:29 1 (const int) 0:31 move second child to first child ( temp highp int) 0:31 r: direct index for structure (layout( column_major shared) buffer highp int) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Convert bool to int ( temp highp int) 0:31 subgroupAllEqual ( global bool, operation at highp) 0:31 direct index ( temp highp uint) 0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 0 (const int) 0:32 move second child to first child ( temp highp int) 0:32 r: direct index for structure (layout( column_major shared) buffer highp int) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Convert bool to int ( temp highp int) 0:32 subgroupAllEqual ( global bool, operation at highp) 0:32 vector swizzle ( temp highp 2-component vector of uint) 0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:33 move second child to first child ( temp highp int) 0:33 r: direct index for structure (layout( column_major shared) buffer highp int) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 3 (const int) 0:33 Convert bool to int ( temp highp int) 0:33 subgroupAllEqual ( global bool, operation at highp) 0:33 vector swizzle ( temp highp 3-component vector of uint) 0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 2 (const int) 0:34 move second child to first child ( temp highp int) 0:34 r: direct index for structure (layout( column_major shared) buffer highp int) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 3 (const int) 0:34 Convert bool to int ( temp highp int) 0:34 subgroupAllEqual ( global bool, operation at highp) 0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) 0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:34 Constant: 0:34 3 (const int) 0:34 Constant: 0:34 2 (const int) 0:19 false case 0:36 Test condition and select ( temp void) 0:36 Condition 0:36 subgroupAny ( global bool) 0:36 Compare Less Than ( temp bool) 0:36 r: direct index for structure (layout( column_major shared) buffer highp int) 0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 3 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 true case 0:38 Sequence 0:38 move second child to first child ( temp highp int) 0:38 r: direct index for structure (layout( column_major shared) buffer highp int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 3 (const int) 0:38 Construct int ( temp highp int) 0:38 Convert bool to int ( temp highp int) 0:38 subgroupAllEqual ( global bool) 0:38 Compare Less Than ( temp bool) 0:38 direct index ( temp highp int) 0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 move second child to first child ( temp highp int) 0:39 r: direct index for structure (layout( column_major shared) buffer highp int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 3 (const int) 0:39 Construct int ( temp highp int) 0:39 Construct ivec2 ( temp highp 2-component vector of int) 0:39 Convert bool to int ( temp highp int) 0:39 subgroupAllEqual ( global bool) 0:39 Compare Less Than ( global 2-component vector of bool, operation at highp) 0:39 vector swizzle ( temp highp 2-component vector of int) 0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 0 (const int) 0:40 move second child to first child ( temp highp int) 0:40 r: direct index for structure (layout( column_major shared) buffer highp int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 3 (const int) 0:40 Construct int ( temp highp int) 0:40 Construct ivec3 ( temp highp 3-component vector of int) 0:40 Convert bool to int ( temp highp int) 0:40 subgroupAllEqual ( global bool) 0:40 Compare Less Than ( global 3-component vector of bool, operation at highp) 0:40 vector swizzle ( temp highp 3-component vector of int) 0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Sequence 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 2 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 0 (const int) 0:40 0 (const int) 0:41 move second child to first child ( temp highp int) 0:41 r: direct index for structure (layout( column_major shared) buffer highp int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 3 (const int) 0:41 Construct int ( temp highp int) 0:41 Construct ivec4 ( temp highp 4-component vector of int) 0:41 Convert bool to int ( temp highp int) 0:41 subgroupAllEqual ( global bool) 0:41 Compare Less Than ( global 4-component vector of bool, operation at highp) 0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) 0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:41 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) 0:? 8 (const uint) 0:? 1 (const uint) 0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r}) glslang-16.0.0/Test/baseResults/glsl.ext.textureShadowLod.frag.out000066400000000000000000000142771506534232700251750ustar00rootroot00000000000000glsl.ext.textureShadowLod.frag ERROR: 0:24: 'texture(..., float bias)' : required extension not requested: GL_EXT_texture_shadow_lod ERROR: 0:25: 'texture(..., float bias)' : required extension not requested: GL_EXT_texture_shadow_lod ERROR: 0:26: 'textureOffset for sampler2DArrayShadow' : required extension not requested: GL_EXT_texture_shadow_lod ERROR: 0:27: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod ERROR: 0:28: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod ERROR: 0:29: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod ERROR: 0:30: 'textureLodOffset for sampler2DArrayShadow' : required extension not requested: GL_EXT_texture_shadow_lod ERROR: 7 compilation errors. No code generated. Shader version: 450 Requested GL_EXT_texture_shadow_lod ERROR: node is still EOpNull! 0:11 Function Definition: pass( ( global void) 0:11 Function Parameters: 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'c' ( out float) 0:12 texture ( global float) 0:12 's2da' ( uniform sampler2DArrayShadow) 0:12 'tc' ( smooth in 4-component vector of float) 0:12 Constant: 0:12 0.000000 0:13 move second child to first child ( temp float) 0:13 'c' ( out float) 0:13 texture ( global float) 0:13 'sca' ( uniform samplerCubeArrayShadow) 0:13 'tc' ( smooth in 4-component vector of float) 0:13 Constant: 0:13 0.000000 0:13 Constant: 0:13 0.000000 0:14 move second child to first child ( temp float) 0:14 'c' ( out float) 0:14 textureOffset ( global float) 0:14 's2da' ( uniform sampler2DArrayShadow) 0:14 'tc' ( smooth in 4-component vector of float) 0:14 Constant: 0:14 0 (const int) 0:14 0 (const int) 0:14 Constant: 0:14 0.000000 0:15 move second child to first child ( temp float) 0:15 'c' ( out float) 0:15 textureLod ( global float) 0:15 's2da' ( uniform sampler2DArrayShadow) 0:15 'tc' ( smooth in 4-component vector of float) 0:15 Constant: 0:15 0.000000 0:16 move second child to first child ( temp float) 0:16 'c' ( out float) 0:16 textureLod ( global float) 0:16 'sc' ( uniform samplerCubeShadow) 0:16 'tc' ( smooth in 4-component vector of float) 0:16 Constant: 0:16 0.000000 0:17 move second child to first child ( temp float) 0:17 'c' ( out float) 0:17 textureLod ( global float) 0:17 'sca' ( uniform samplerCubeArrayShadow) 0:17 'tc' ( smooth in 4-component vector of float) 0:17 Constant: 0:17 0.000000 0:17 Constant: 0:17 0.000000 0:18 move second child to first child ( temp float) 0:18 'c' ( out float) 0:18 textureLodOffset ( global float) 0:18 's2da' ( uniform sampler2DArrayShadow) 0:18 'tc' ( smooth in 4-component vector of float) 0:18 Constant: 0:18 0.000000 0:18 Constant: 0:18 0 (const int) 0:18 0 (const int) 0:22 Function Definition: fail( ( global void) 0:22 Function Parameters: 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'c' ( out float) 0:24 texture ( global float) 0:24 's2da' ( uniform sampler2DArrayShadow) 0:24 'tc' ( smooth in 4-component vector of float) 0:24 Constant: 0:24 0.000000 0:25 move second child to first child ( temp float) 0:25 'c' ( out float) 0:25 texture ( global float) 0:25 'sca' ( uniform samplerCubeArrayShadow) 0:25 'tc' ( smooth in 4-component vector of float) 0:25 Constant: 0:25 0.000000 0:25 Constant: 0:25 0.000000 0:26 move second child to first child ( temp float) 0:26 'c' ( out float) 0:26 textureOffset ( global float) 0:26 's2da' ( uniform sampler2DArrayShadow) 0:26 'tc' ( smooth in 4-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 0 (const int) 0:26 Constant: 0:26 0.000000 0:27 move second child to first child ( temp float) 0:27 'c' ( out float) 0:27 textureLod ( global float) 0:27 's2da' ( uniform sampler2DArrayShadow) 0:27 'tc' ( smooth in 4-component vector of float) 0:27 Constant: 0:27 0.000000 0:28 move second child to first child ( temp float) 0:28 'c' ( out float) 0:28 textureLod ( global float) 0:28 'sc' ( uniform samplerCubeShadow) 0:28 'tc' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 0.000000 0:29 move second child to first child ( temp float) 0:29 'c' ( out float) 0:29 textureLod ( global float) 0:29 'sca' ( uniform samplerCubeArrayShadow) 0:29 'tc' ( smooth in 4-component vector of float) 0:29 Constant: 0:29 0.000000 0:29 Constant: 0:29 0.000000 0:30 move second child to first child ( temp float) 0:30 'c' ( out float) 0:30 textureLodOffset ( global float) 0:30 's2da' ( uniform sampler2DArrayShadow) 0:30 'tc' ( smooth in 4-component vector of float) 0:30 Constant: 0:30 0.000000 0:30 Constant: 0:30 0 (const int) 0:30 0 (const int) 0:? Linker Objects 0:? 's2da' ( uniform sampler2DArrayShadow) 0:? 'sca' ( uniform samplerCubeArrayShadow) 0:? 'sc' ( uniform samplerCubeShadow) 0:? 'c' ( out float) 0:? 'tc' ( smooth in 4-component vector of float) Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 450 Requested GL_EXT_texture_shadow_lod ERROR: node is still EOpNull! 0:? Linker Objects 0:? 's2da' ( uniform sampler2DArrayShadow) 0:? 'sca' ( uniform samplerCubeArrayShadow) 0:? 'sc' ( uniform samplerCubeShadow) 0:? 'c' ( out float) 0:? 'tc' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.interpOp.error.frag.out000066400000000000000000001010501506534232700240030ustar00rootroot00000000000000glsl.interpOp.error.frag ERROR: 0:39: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). ERROR: 0:40: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:41: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). ERROR: 0:54: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). ERROR: 0:55: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element ERROR: 0:56: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). ERROR: 0:69: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). ERROR: 0:70: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:71: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). ERROR: 9 compilation errors. No code generated. Shader version: 320 ERROR: node is still EOpNull! 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:32 Sequence 0:32 Sequence 0:32 move second child to first child ( temp mediump 4-component vector of float) 0:32 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:32 Construct vec4 ( temp mediump 4-component vector of float) 0:32 interpolateAtCentroid ( global highp float) 0:32 'v' (layout( location=2) smooth in highp float) 0:33 move second child to first child ( temp mediump 4-component vector of float) 0:33 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:33 Construct vec4 ( temp mediump 4-component vector of float) 0:33 interpolateAtCentroid ( global highp float) 0:33 x: direct index for structure ( in highp float) 0:33 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:33 Constant: 0:33 0 (const uint) 0:34 move second child to first child ( temp mediump 4-component vector of float) 0:34 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:34 Construct vec4 ( temp mediump 4-component vector of float) 0:34 interpolateAtCentroid ( global highp float) 0:34 direct index (layout( location=7) smooth temp highp float) 0:34 'z' (layout( location=7) smooth in 1-element array of highp float) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp highp 4-component vector of float) 0:35 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:35 interpolateAtCentroid ( global highp 4-component vector of float) 0:35 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:36 interpolateAtCentroid ( global highp 4-component vector of float) 0:36 direct index ( temp highp 4-component vector of float) 0:36 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) 0:36 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:36 Constant: 0:36 1 (const uint) 0:36 Constant: 0:36 0 (const int) 0:39 move second child to first child ( temp mediump 4-component vector of float) 0:39 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:39 Construct vec4 ( temp mediump 4-component vector of float) 0:39 interpolateAtCentroid ( global highp float) 0:39 a: direct index for structure ( global highp float) 0:39 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp mediump 4-component vector of float) 0:40 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:40 Construct vec4 ( temp mediump 4-component vector of float) 0:40 interpolateAtCentroid ( global highp float) 0:40 direct index ( temp highp float) 0:40 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:40 Constant: 0:40 0 (const int) 0:41 move second child to first child ( temp mediump 4-component vector of float) 0:41 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:41 Construct vec4 ( temp mediump 4-component vector of float) 0:41 interpolateAtCentroid ( global highp 4-component vector of float) 0:41 s_v: direct index for structure ( global highp 4-component vector of float) 0:41 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) 0:41 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:41 Constant: 0:41 2 (const uint) 0:41 Constant: 0:41 0 (const int) 0:47 Sequence 0:47 move second child to first child ( temp mediump 4-component vector of float) 0:47 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:47 Construct vec4 ( temp mediump 4-component vector of float) 0:47 interpolateAtSample ( global highp float) 0:47 'v' (layout( location=2) smooth in highp float) 0:47 Constant: 0:47 0 (const int) 0:48 move second child to first child ( temp mediump 4-component vector of float) 0:48 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:48 Construct vec4 ( temp mediump 4-component vector of float) 0:48 interpolateAtSample ( global highp float) 0:48 x: direct index for structure ( in highp float) 0:48 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:48 Constant: 0:48 0 (const uint) 0:48 Constant: 0:48 0 (const int) 0:49 move second child to first child ( temp mediump 4-component vector of float) 0:49 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:49 Construct vec4 ( temp mediump 4-component vector of float) 0:49 interpolateAtSample ( global highp float) 0:49 direct index (layout( location=7) smooth temp highp float) 0:49 'z' (layout( location=7) smooth in 1-element array of highp float) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:50 move second child to first child ( temp highp 4-component vector of float) 0:50 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:50 interpolateAtSample ( global highp 4-component vector of float) 0:50 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:50 Constant: 0:50 0 (const int) 0:51 move second child to first child ( temp highp 4-component vector of float) 0:51 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:51 interpolateAtSample ( global highp 4-component vector of float) 0:51 direct index ( temp highp 4-component vector of float) 0:51 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) 0:51 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:51 Constant: 0:51 1 (const uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 0 (const int) 0:54 move second child to first child ( temp mediump 4-component vector of float) 0:54 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:54 Construct vec4 ( temp mediump 4-component vector of float) 0:54 interpolateAtSample ( global highp float) 0:54 a: direct index for structure ( global highp float) 0:54 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:55 move second child to first child ( temp mediump 4-component vector of float) 0:55 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:55 Construct vec4 ( temp mediump 4-component vector of float) 0:55 interpolateAtSample ( global highp float) 0:55 direct index ( temp highp float) 0:55 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:56 move second child to first child ( temp mediump 4-component vector of float) 0:56 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:56 Construct vec4 ( temp mediump 4-component vector of float) 0:56 interpolateAtSample ( global highp 4-component vector of float) 0:56 s_v: direct index for structure ( global highp 4-component vector of float) 0:56 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) 0:56 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:56 Constant: 0:56 2 (const uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:62 Sequence 0:62 move second child to first child ( temp mediump 4-component vector of float) 0:62 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:62 Construct vec4 ( temp mediump 4-component vector of float) 0:62 interpolateAtOffset ( global highp float) 0:62 'v' (layout( location=2) smooth in highp float) 0:62 Constant: 0:62 0.000000 0:62 0.000000 0:63 move second child to first child ( temp mediump 4-component vector of float) 0:63 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:63 Construct vec4 ( temp mediump 4-component vector of float) 0:63 interpolateAtOffset ( global highp float) 0:63 x: direct index for structure ( in highp float) 0:63 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:63 Constant: 0:63 0 (const uint) 0:63 Constant: 0:63 0.000000 0:63 0.000000 0:64 move second child to first child ( temp mediump 4-component vector of float) 0:64 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:64 Construct vec4 ( temp mediump 4-component vector of float) 0:64 interpolateAtOffset ( global highp float) 0:64 direct index (layout( location=7) smooth temp highp float) 0:64 'z' (layout( location=7) smooth in 1-element array of highp float) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 0.000000 0:64 0.000000 0:65 move second child to first child ( temp highp 4-component vector of float) 0:65 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:65 interpolateAtOffset ( global highp 4-component vector of float) 0:65 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:65 Constant: 0:65 0.000000 0:65 0.000000 0:66 move second child to first child ( temp highp 4-component vector of float) 0:66 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:66 interpolateAtOffset ( global highp 4-component vector of float) 0:66 direct index ( temp highp 4-component vector of float) 0:66 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) 0:66 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:66 Constant: 0:66 1 (const uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 0.000000 0:66 0.000000 0:69 move second child to first child ( temp mediump 4-component vector of float) 0:69 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:69 Construct vec4 ( temp mediump 4-component vector of float) 0:69 interpolateAtOffset ( global highp float) 0:69 a: direct index for structure ( global highp float) 0:69 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0.000000 0:69 0.000000 0:70 move second child to first child ( temp mediump 4-component vector of float) 0:70 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:70 Construct vec4 ( temp mediump 4-component vector of float) 0:70 interpolateAtOffset ( global highp float) 0:70 direct index ( temp highp float) 0:70 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp mediump 4-component vector of float) 0:71 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:71 Construct vec4 ( temp mediump 4-component vector of float) 0:71 interpolateAtOffset ( global highp 4-component vector of float) 0:71 s_v: direct index for structure ( global highp 4-component vector of float) 0:71 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) 0:71 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:71 Constant: 0:71 2 (const uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:? Linker Objects 0:? 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) 0:? 'v' (layout( location=2) smooth in highp float) 0:? 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:? 'z' (layout( location=7) smooth in 1-element array of highp float) 0:? 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) Linked fragment stage: Shader version: 320 ERROR: node is still EOpNull! 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:32 Sequence 0:32 Sequence 0:32 move second child to first child ( temp mediump 4-component vector of float) 0:32 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:32 Construct vec4 ( temp mediump 4-component vector of float) 0:32 interpolateAtCentroid ( global highp float) 0:32 'v' (layout( location=2) smooth in highp float) 0:33 move second child to first child ( temp mediump 4-component vector of float) 0:33 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:33 Construct vec4 ( temp mediump 4-component vector of float) 0:33 interpolateAtCentroid ( global highp float) 0:33 x: direct index for structure ( in highp float) 0:33 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:33 Constant: 0:33 0 (const uint) 0:34 move second child to first child ( temp mediump 4-component vector of float) 0:34 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:34 Construct vec4 ( temp mediump 4-component vector of float) 0:34 interpolateAtCentroid ( global highp float) 0:34 direct index (layout( location=7) smooth temp highp float) 0:34 'z' (layout( location=7) smooth in 1-element array of highp float) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp highp 4-component vector of float) 0:35 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:35 interpolateAtCentroid ( global highp 4-component vector of float) 0:35 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:36 interpolateAtCentroid ( global highp 4-component vector of float) 0:36 direct index ( temp highp 4-component vector of float) 0:36 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) 0:36 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:36 Constant: 0:36 1 (const uint) 0:36 Constant: 0:36 0 (const int) 0:39 move second child to first child ( temp mediump 4-component vector of float) 0:39 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:39 Construct vec4 ( temp mediump 4-component vector of float) 0:39 interpolateAtCentroid ( global highp float) 0:39 a: direct index for structure ( global highp float) 0:39 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp mediump 4-component vector of float) 0:40 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:40 Construct vec4 ( temp mediump 4-component vector of float) 0:40 interpolateAtCentroid ( global highp float) 0:40 direct index ( temp highp float) 0:40 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:40 Constant: 0:40 0 (const int) 0:41 move second child to first child ( temp mediump 4-component vector of float) 0:41 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:41 Construct vec4 ( temp mediump 4-component vector of float) 0:41 interpolateAtCentroid ( global highp 4-component vector of float) 0:41 s_v: direct index for structure ( global highp 4-component vector of float) 0:41 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) 0:41 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:41 Constant: 0:41 2 (const uint) 0:41 Constant: 0:41 0 (const int) 0:47 Sequence 0:47 move second child to first child ( temp mediump 4-component vector of float) 0:47 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:47 Construct vec4 ( temp mediump 4-component vector of float) 0:47 interpolateAtSample ( global highp float) 0:47 'v' (layout( location=2) smooth in highp float) 0:47 Constant: 0:47 0 (const int) 0:48 move second child to first child ( temp mediump 4-component vector of float) 0:48 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:48 Construct vec4 ( temp mediump 4-component vector of float) 0:48 interpolateAtSample ( global highp float) 0:48 x: direct index for structure ( in highp float) 0:48 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:48 Constant: 0:48 0 (const uint) 0:48 Constant: 0:48 0 (const int) 0:49 move second child to first child ( temp mediump 4-component vector of float) 0:49 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:49 Construct vec4 ( temp mediump 4-component vector of float) 0:49 interpolateAtSample ( global highp float) 0:49 direct index (layout( location=7) smooth temp highp float) 0:49 'z' (layout( location=7) smooth in 1-element array of highp float) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 0 (const int) 0:50 move second child to first child ( temp highp 4-component vector of float) 0:50 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:50 interpolateAtSample ( global highp 4-component vector of float) 0:50 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:50 Constant: 0:50 0 (const int) 0:51 move second child to first child ( temp highp 4-component vector of float) 0:51 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:51 interpolateAtSample ( global highp 4-component vector of float) 0:51 direct index ( temp highp 4-component vector of float) 0:51 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) 0:51 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:51 Constant: 0:51 1 (const uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 0 (const int) 0:54 move second child to first child ( temp mediump 4-component vector of float) 0:54 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:54 Construct vec4 ( temp mediump 4-component vector of float) 0:54 interpolateAtSample ( global highp float) 0:54 a: direct index for structure ( global highp float) 0:54 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:55 move second child to first child ( temp mediump 4-component vector of float) 0:55 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:55 Construct vec4 ( temp mediump 4-component vector of float) 0:55 interpolateAtSample ( global highp float) 0:55 direct index ( temp highp float) 0:55 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:56 move second child to first child ( temp mediump 4-component vector of float) 0:56 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:56 Construct vec4 ( temp mediump 4-component vector of float) 0:56 interpolateAtSample ( global highp 4-component vector of float) 0:56 s_v: direct index for structure ( global highp 4-component vector of float) 0:56 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) 0:56 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:56 Constant: 0:56 2 (const uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:62 Sequence 0:62 move second child to first child ( temp mediump 4-component vector of float) 0:62 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:62 Construct vec4 ( temp mediump 4-component vector of float) 0:62 interpolateAtOffset ( global highp float) 0:62 'v' (layout( location=2) smooth in highp float) 0:62 Constant: 0:62 0.000000 0:62 0.000000 0:63 move second child to first child ( temp mediump 4-component vector of float) 0:63 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:63 Construct vec4 ( temp mediump 4-component vector of float) 0:63 interpolateAtOffset ( global highp float) 0:63 x: direct index for structure ( in highp float) 0:63 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:63 Constant: 0:63 0 (const uint) 0:63 Constant: 0:63 0.000000 0:63 0.000000 0:64 move second child to first child ( temp mediump 4-component vector of float) 0:64 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:64 Construct vec4 ( temp mediump 4-component vector of float) 0:64 interpolateAtOffset ( global highp float) 0:64 direct index (layout( location=7) smooth temp highp float) 0:64 'z' (layout( location=7) smooth in 1-element array of highp float) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 0.000000 0:64 0.000000 0:65 move second child to first child ( temp highp 4-component vector of float) 0:65 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:65 interpolateAtOffset ( global highp 4-component vector of float) 0:65 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:65 Constant: 0:65 0.000000 0:65 0.000000 0:66 move second child to first child ( temp highp 4-component vector of float) 0:66 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:66 interpolateAtOffset ( global highp 4-component vector of float) 0:66 direct index ( temp highp 4-component vector of float) 0:66 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) 0:66 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:66 Constant: 0:66 1 (const uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 0.000000 0:66 0.000000 0:69 move second child to first child ( temp mediump 4-component vector of float) 0:69 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:69 Construct vec4 ( temp mediump 4-component vector of float) 0:69 interpolateAtOffset ( global highp float) 0:69 a: direct index for structure ( global highp float) 0:69 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 0.000000 0:69 0.000000 0:70 move second child to first child ( temp mediump 4-component vector of float) 0:70 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:70 Construct vec4 ( temp mediump 4-component vector of float) 0:70 interpolateAtOffset ( global highp float) 0:70 direct index ( temp highp float) 0:70 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp mediump 4-component vector of float) 0:71 'fragColor' (layout( location=0) out mediump 4-component vector of float) 0:71 Construct vec4 ( temp mediump 4-component vector of float) 0:71 interpolateAtOffset ( global highp 4-component vector of float) 0:71 s_v: direct index for structure ( global highp 4-component vector of float) 0:71 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) 0:71 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:71 Constant: 0:71 2 (const uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:? Linker Objects 0:? 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) 0:? 'v' (layout( location=2) smooth in highp float) 0:? 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) 0:? 'z' (layout( location=7) smooth in 1-element array of highp float) 0:? 'w' (layout( location=8) smooth in highp 4-component vector of float) 0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.nvgpushader5.frag.out000066400000000000000000017632421506534232700235100ustar00rootroot00000000000000glsl.nvgpushader5.frag Shader version: 150 Requested GL_ARB_gpu_shader_fp64 Requested GL_NV_gpu_shader5 0:? Sequence 0:15 Function Definition: testIndexing( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'i' ( temp int) 0:17 Constant: 0:17 0 (const int) 0:18 texture ( global 4-component vector of float) 0:18 indirect index ( temp sampler2D) 0:18 'tex' ( uniform 10-element array of sampler2D) 0:18 'i' ( temp int) 0:18 'coord' ( global 2-component vector of float) 0:19 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform int i}) 0:19 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform int i}) 0:19 'i' ( temp int) 0:24 Function Definition: testImplictConversion( ( global void) 0:24 Function Parameters: 0:26 Sequence 0:26 Sequence 0:26 move second child to first child ( temp uint) 0:26 'var0' ( temp uint) 0:26 Constant: 0:26 0 (const uint) 0:27 Sequence 0:27 move second child to first child ( temp int64_t) 0:27 'var1' ( temp int64_t) 0:27 Constant: 0:27 0 (const int64_t) 0:28 Sequence 0:28 move second child to first child ( temp uint64_t) 0:28 'var2' ( temp uint64_t) 0:28 Constant: 0:28 0 (const uint64_t) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'var3' ( temp float) 0:29 Constant: 0:29 0.000000 0:30 Sequence 0:30 move second child to first child ( temp double) 0:30 'var4' ( temp double) 0:30 Constant: 0:30 0.000000 0:34 Sequence 0:34 move second child to first child ( temp 2-component vector of uint) 0:34 'var5' ( temp 2-component vector of uint) 0:34 Constant: 0:34 0 (const uint) 0:34 0 (const uint) 0:35 Sequence 0:35 move second child to first child ( temp 2-component vector of int64_t) 0:35 'var6' ( temp 2-component vector of int64_t) 0:35 Constant: 0:35 0 (const int64_t) 0:35 0 (const int64_t) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of uint64_t) 0:36 'var7' ( temp 2-component vector of uint64_t) 0:36 Constant: 0:36 0 (const uint64_t) 0:36 0 (const uint64_t) 0:37 Sequence 0:37 move second child to first child ( temp 2-component vector of float) 0:37 'var8' ( temp 2-component vector of float) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:38 Sequence 0:38 move second child to first child ( temp 2-component vector of double) 0:38 'var9' ( temp 2-component vector of double) 0:38 Constant: 0:38 0.000000 0:38 0.000000 0:42 Sequence 0:42 move second child to first child ( temp 3-component vector of uint) 0:42 'var10' ( temp 3-component vector of uint) 0:42 Constant: 0:42 0 (const uint) 0:42 0 (const uint) 0:42 0 (const uint) 0:43 Sequence 0:43 move second child to first child ( temp 3-component vector of int64_t) 0:43 'var11' ( temp 3-component vector of int64_t) 0:43 Constant: 0:43 0 (const int64_t) 0:43 0 (const int64_t) 0:43 0 (const int64_t) 0:44 Sequence 0:44 move second child to first child ( temp 3-component vector of uint64_t) 0:44 'var12' ( temp 3-component vector of uint64_t) 0:44 Constant: 0:44 0 (const uint64_t) 0:44 0 (const uint64_t) 0:44 0 (const uint64_t) 0:45 Sequence 0:45 move second child to first child ( temp 3-component vector of float) 0:45 'var13' ( temp 3-component vector of float) 0:45 Constant: 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:46 Sequence 0:46 move second child to first child ( temp 3-component vector of double) 0:46 'var14' ( temp 3-component vector of double) 0:46 Constant: 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:50 Sequence 0:50 move second child to first child ( temp 4-component vector of uint) 0:50 'var15' ( temp 4-component vector of uint) 0:50 Constant: 0:50 0 (const uint) 0:50 0 (const uint) 0:50 0 (const uint) 0:50 0 (const uint) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of int64_t) 0:51 'var16' ( temp 4-component vector of int64_t) 0:51 Constant: 0:51 0 (const int64_t) 0:51 0 (const int64_t) 0:51 0 (const int64_t) 0:51 0 (const int64_t) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of uint64_t) 0:52 'var17' ( temp 4-component vector of uint64_t) 0:52 Constant: 0:52 0 (const uint64_t) 0:52 0 (const uint64_t) 0:52 0 (const uint64_t) 0:52 0 (const uint64_t) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:53 'var18' ( temp 4-component vector of float) 0:53 Constant: 0:53 0.000000 0:53 0.000000 0:53 0.000000 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp 4-component vector of double) 0:54 'var19' ( temp 4-component vector of double) 0:54 Constant: 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:58 Sequence 0:58 move second child to first child ( temp int) 0:58 'var20' ( temp int) 0:58 Constant: 0:58 0 (const int) 0:59 Sequence 0:59 move second child to first child ( temp int64_t) 0:59 'var21' ( temp int64_t) 0:59 Constant: 0:59 0 (const int64_t) 0:60 Sequence 0:60 move second child to first child ( temp uint) 0:60 'var22' ( temp uint) 0:60 Constant: 0:60 0 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp uint64_t) 0:61 'var23' ( temp uint64_t) 0:61 Constant: 0:61 0 (const uint64_t) 0:62 Sequence 0:62 move second child to first child ( temp float) 0:62 'var24' ( temp float) 0:62 Constant: 0:62 0.000000 0:63 Sequence 0:63 move second child to first child ( temp double) 0:63 'var25' ( temp double) 0:63 Constant: 0:63 0.000000 0:67 Sequence 0:67 move second child to first child ( temp int) 0:67 'var26' ( temp int) 0:67 Constant: 0:67 0 (const int) 0:68 Sequence 0:68 move second child to first child ( temp int64_t) 0:68 'var27' ( temp int64_t) 0:68 Constant: 0:68 0 (const int64_t) 0:69 Sequence 0:69 move second child to first child ( temp uint) 0:69 'var28' ( temp uint) 0:69 Constant: 0:69 0 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp uint64_t) 0:70 'var29' ( temp uint64_t) 0:70 Constant: 0:70 0 (const uint64_t) 0:71 Sequence 0:71 move second child to first child ( temp float) 0:71 'var30' ( temp float) 0:71 Constant: 0:71 0.000000 0:72 Sequence 0:72 move second child to first child ( temp double) 0:72 'var31' ( temp double) 0:72 Constant: 0:72 0.000000 0:76 Sequence 0:76 move second child to first child ( temp 2-component vector of int) 0:76 'var32' ( temp 2-component vector of int) 0:76 Constant: 0:76 0 (const int) 0:76 0 (const int) 0:77 Sequence 0:77 move second child to first child ( temp 2-component vector of int64_t) 0:77 'var33' ( temp 2-component vector of int64_t) 0:77 Constant: 0:77 0 (const int64_t) 0:77 0 (const int64_t) 0:78 Sequence 0:78 move second child to first child ( temp 2-component vector of uint) 0:78 'var34' ( temp 2-component vector of uint) 0:78 Constant: 0:78 0 (const uint) 0:78 0 (const uint) 0:79 Sequence 0:79 move second child to first child ( temp 2-component vector of uint64_t) 0:79 'var35' ( temp 2-component vector of uint64_t) 0:79 Constant: 0:79 0 (const uint64_t) 0:79 0 (const uint64_t) 0:80 Sequence 0:80 move second child to first child ( temp 2-component vector of float) 0:80 'var36' ( temp 2-component vector of float) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:81 Sequence 0:81 move second child to first child ( temp 2-component vector of double) 0:81 'var37' ( temp 2-component vector of double) 0:81 Constant: 0:81 0.000000 0:81 0.000000 0:85 Sequence 0:85 move second child to first child ( temp 2-component vector of int) 0:85 'var38' ( temp 2-component vector of int) 0:85 Constant: 0:85 0 (const int) 0:85 0 (const int) 0:86 Sequence 0:86 move second child to first child ( temp 2-component vector of int64_t) 0:86 'var39' ( temp 2-component vector of int64_t) 0:86 Constant: 0:86 0 (const int64_t) 0:86 0 (const int64_t) 0:87 Sequence 0:87 move second child to first child ( temp 2-component vector of uint) 0:87 'var40' ( temp 2-component vector of uint) 0:87 Constant: 0:87 0 (const uint) 0:87 0 (const uint) 0:88 Sequence 0:88 move second child to first child ( temp 2-component vector of uint64_t) 0:88 'var41' ( temp 2-component vector of uint64_t) 0:88 Constant: 0:88 0 (const uint64_t) 0:88 0 (const uint64_t) 0:89 Sequence 0:89 move second child to first child ( temp 2-component vector of float) 0:89 'var42' ( temp 2-component vector of float) 0:89 Constant: 0:89 0.000000 0:89 0.000000 0:90 Sequence 0:90 move second child to first child ( temp 2-component vector of double) 0:90 'var43' ( temp 2-component vector of double) 0:90 Constant: 0:90 0.000000 0:90 0.000000 0:94 Sequence 0:94 move second child to first child ( temp 3-component vector of int) 0:94 'var44' ( temp 3-component vector of int) 0:94 Constant: 0:94 0 (const int) 0:94 0 (const int) 0:94 0 (const int) 0:95 Sequence 0:95 move second child to first child ( temp 3-component vector of int64_t) 0:95 'var45' ( temp 3-component vector of int64_t) 0:95 Constant: 0:95 0 (const int64_t) 0:95 0 (const int64_t) 0:95 0 (const int64_t) 0:96 Sequence 0:96 move second child to first child ( temp 3-component vector of uint) 0:96 'var46' ( temp 3-component vector of uint) 0:96 Constant: 0:96 0 (const uint) 0:96 0 (const uint) 0:96 0 (const uint) 0:97 Sequence 0:97 move second child to first child ( temp 3-component vector of uint64_t) 0:97 'var47' ( temp 3-component vector of uint64_t) 0:97 Constant: 0:97 0 (const uint64_t) 0:97 0 (const uint64_t) 0:97 0 (const uint64_t) 0:98 Sequence 0:98 move second child to first child ( temp 3-component vector of float) 0:98 'var48' ( temp 3-component vector of float) 0:98 Constant: 0:98 0.000000 0:98 0.000000 0:98 0.000000 0:99 Sequence 0:99 move second child to first child ( temp 3-component vector of double) 0:99 'var49' ( temp 3-component vector of double) 0:99 Constant: 0:99 0.000000 0:99 0.000000 0:99 0.000000 0:103 Sequence 0:103 move second child to first child ( temp 3-component vector of uint) 0:103 'var50' ( temp 3-component vector of uint) 0:103 Constant: 0:103 0 (const uint) 0:103 0 (const uint) 0:103 0 (const uint) 0:104 Sequence 0:104 move second child to first child ( temp 3-component vector of uint64_t) 0:104 'var51' ( temp 3-component vector of uint64_t) 0:104 Constant: 0:104 0 (const uint64_t) 0:104 0 (const uint64_t) 0:104 0 (const uint64_t) 0:105 Sequence 0:105 move second child to first child ( temp 3-component vector of float) 0:105 'var52' ( temp 3-component vector of float) 0:105 Constant: 0:105 0.000000 0:105 0.000000 0:105 0.000000 0:106 Sequence 0:106 move second child to first child ( temp 3-component vector of double) 0:106 'var53' ( temp 3-component vector of double) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:106 0.000000 0:110 Sequence 0:110 move second child to first child ( temp 4-component vector of int) 0:110 'var54' ( temp 4-component vector of int) 0:110 Constant: 0:110 0 (const int) 0:110 0 (const int) 0:110 0 (const int) 0:110 0 (const int) 0:111 Sequence 0:111 move second child to first child ( temp 4-component vector of int64_t) 0:111 'var55' ( temp 4-component vector of int64_t) 0:111 Constant: 0:111 0 (const int64_t) 0:111 0 (const int64_t) 0:111 0 (const int64_t) 0:111 0 (const int64_t) 0:112 Sequence 0:112 move second child to first child ( temp 4-component vector of uint) 0:112 'var56' ( temp 4-component vector of uint) 0:112 Constant: 0:112 0 (const uint) 0:112 0 (const uint) 0:112 0 (const uint) 0:112 0 (const uint) 0:113 Sequence 0:113 move second child to first child ( temp 4-component vector of uint64_t) 0:113 'var57' ( temp 4-component vector of uint64_t) 0:113 Constant: 0:113 0 (const uint64_t) 0:113 0 (const uint64_t) 0:113 0 (const uint64_t) 0:113 0 (const uint64_t) 0:114 Sequence 0:114 move second child to first child ( temp 4-component vector of float) 0:114 'var58' ( temp 4-component vector of float) 0:114 Constant: 0:114 0.000000 0:114 0.000000 0:114 0.000000 0:114 0.000000 0:115 Sequence 0:115 move second child to first child ( temp 4-component vector of double) 0:115 'var59' ( temp 4-component vector of double) 0:115 Constant: 0:115 0.000000 0:115 0.000000 0:115 0.000000 0:115 0.000000 0:119 Sequence 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 'var60' ( temp 4-component vector of uint) 0:119 Constant: 0:119 0 (const uint) 0:119 0 (const uint) 0:119 0 (const uint) 0:119 0 (const uint) 0:120 Sequence 0:120 move second child to first child ( temp 4-component vector of uint64_t) 0:120 'var61' ( temp 4-component vector of uint64_t) 0:120 Constant: 0:120 0 (const uint64_t) 0:120 0 (const uint64_t) 0:120 0 (const uint64_t) 0:120 0 (const uint64_t) 0:121 Sequence 0:121 move second child to first child ( temp 4-component vector of float) 0:121 'var62' ( temp 4-component vector of float) 0:121 Constant: 0:121 0.000000 0:121 0.000000 0:121 0.000000 0:121 0.000000 0:122 Sequence 0:122 move second child to first child ( temp 4-component vector of double) 0:122 'var63' ( temp 4-component vector of double) 0:122 Constant: 0:122 0.000000 0:122 0.000000 0:122 0.000000 0:122 0.000000 0:126 Sequence 0:126 move second child to first child ( temp uint64_t) 0:126 'var64' ( temp uint64_t) 0:126 Constant: 0:126 0 (const uint64_t) 0:127 Sequence 0:127 move second child to first child ( temp double) 0:127 'var65' ( temp double) 0:127 Constant: 0:127 0.000000 0:131 Sequence 0:131 move second child to first child ( temp 2-component vector of uint64_t) 0:131 'var66' ( temp 2-component vector of uint64_t) 0:131 Constant: 0:131 0 (const uint64_t) 0:131 0 (const uint64_t) 0:132 Sequence 0:132 move second child to first child ( temp 2-component vector of double) 0:132 'var67' ( temp 2-component vector of double) 0:132 Constant: 0:132 0.000000 0:132 0.000000 0:136 Sequence 0:136 move second child to first child ( temp 3-component vector of uint64_t) 0:136 'var68' ( temp 3-component vector of uint64_t) 0:136 Constant: 0:136 0 (const uint64_t) 0:136 0 (const uint64_t) 0:136 0 (const uint64_t) 0:137 Sequence 0:137 move second child to first child ( temp 3-component vector of double) 0:137 'var69' ( temp 3-component vector of double) 0:137 Constant: 0:137 0.000000 0:137 0.000000 0:137 0.000000 0:141 Sequence 0:141 move second child to first child ( temp 4-component vector of uint64_t) 0:141 'var70' ( temp 4-component vector of uint64_t) 0:141 Constant: 0:141 0 (const uint64_t) 0:141 0 (const uint64_t) 0:141 0 (const uint64_t) 0:141 0 (const uint64_t) 0:142 Sequence 0:142 move second child to first child ( temp 4-component vector of double) 0:142 'var71' ( temp 4-component vector of double) 0:142 Constant: 0:142 0.000000 0:142 0.000000 0:142 0.000000 0:142 0.000000 0:146 Sequence 0:146 move second child to first child ( temp uint64_t) 0:146 'var72' ( temp uint64_t) 0:146 Constant: 0:146 0 (const uint64_t) 0:147 Sequence 0:147 move second child to first child ( temp float) 0:147 'var73' ( temp float) 0:147 Constant: 0:147 0.000000 0:148 Sequence 0:148 move second child to first child ( temp double) 0:148 'var74' ( temp double) 0:148 Constant: 0:148 0.000000 0:152 Sequence 0:152 move second child to first child ( temp 2-component vector of uint64_t) 0:152 'var75' ( temp 2-component vector of uint64_t) 0:152 Constant: 0:152 0 (const uint64_t) 0:152 0 (const uint64_t) 0:153 Sequence 0:153 move second child to first child ( temp 2-component vector of float) 0:153 'var76' ( temp 2-component vector of float) 0:153 Constant: 0:153 0.000000 0:153 0.000000 0:154 Sequence 0:154 move second child to first child ( temp 2-component vector of double) 0:154 'var77' ( temp 2-component vector of double) 0:154 Constant: 0:154 0.000000 0:154 0.000000 0:158 Sequence 0:158 move second child to first child ( temp 3-component vector of uint64_t) 0:158 'var78' ( temp 3-component vector of uint64_t) 0:158 Constant: 0:158 0 (const uint64_t) 0:158 0 (const uint64_t) 0:158 0 (const uint64_t) 0:159 Sequence 0:159 move second child to first child ( temp 3-component vector of float) 0:159 'var79' ( temp 3-component vector of float) 0:159 Constant: 0:159 0.000000 0:159 0.000000 0:159 0.000000 0:160 Sequence 0:160 move second child to first child ( temp 3-component vector of double) 0:160 'var80' ( temp 3-component vector of double) 0:160 Constant: 0:160 0.000000 0:160 0.000000 0:160 0.000000 0:164 Sequence 0:164 move second child to first child ( temp 4-component vector of uint64_t) 0:164 'var81' ( temp 4-component vector of uint64_t) 0:164 Constant: 0:164 0 (const uint64_t) 0:164 0 (const uint64_t) 0:164 0 (const uint64_t) 0:164 0 (const uint64_t) 0:165 Sequence 0:165 move second child to first child ( temp 4-component vector of float) 0:165 'var82' ( temp 4-component vector of float) 0:165 Constant: 0:165 0.000000 0:165 0.000000 0:165 0.000000 0:165 0.000000 0:166 Sequence 0:166 move second child to first child ( temp 4-component vector of double) 0:166 'var83' ( temp 4-component vector of double) 0:166 Constant: 0:166 0.000000 0:166 0.000000 0:166 0.000000 0:166 0.000000 0:169 Sequence 0:169 move second child to first child ( temp uint) 0:169 'var84' ( temp uint) 0:169 Constant: 0:169 0 (const uint) 0:170 Sequence 0:170 move second child to first child ( temp uint64_t) 0:170 'var85' ( temp uint64_t) 0:170 Constant: 0:170 0 (const uint64_t) 0:171 Sequence 0:171 move second child to first child ( temp float) 0:171 'var86' ( temp float) 0:171 Constant: 0:171 0.000000 0:172 Sequence 0:172 move second child to first child ( temp double) 0:172 'var87' ( temp double) 0:172 Constant: 0:172 0.000000 0:176 Sequence 0:176 move second child to first child ( temp uint) 0:176 'var88' ( temp uint) 0:176 Constant: 0:176 0 (const uint) 0:177 Sequence 0:177 move second child to first child ( temp uint64_t) 0:177 'var89' ( temp uint64_t) 0:177 Constant: 0:177 0 (const uint64_t) 0:178 Sequence 0:178 move second child to first child ( temp float) 0:178 'var90' ( temp float) 0:178 Constant: 0:178 0.000000 0:179 Sequence 0:179 move second child to first child ( temp double) 0:179 'var91' ( temp double) 0:179 Constant: 0:179 0.000000 0:183 Sequence 0:183 move second child to first child ( temp 2-component vector of uint) 0:183 'var92' ( temp 2-component vector of uint) 0:183 Constant: 0:183 0 (const uint) 0:183 0 (const uint) 0:184 Sequence 0:184 move second child to first child ( temp 2-component vector of uint64_t) 0:184 'var93' ( temp 2-component vector of uint64_t) 0:184 Constant: 0:184 0 (const uint64_t) 0:184 0 (const uint64_t) 0:185 Sequence 0:185 move second child to first child ( temp 2-component vector of float) 0:185 'var94' ( temp 2-component vector of float) 0:185 Constant: 0:185 0.000000 0:185 0.000000 0:186 Sequence 0:186 move second child to first child ( temp 2-component vector of double) 0:186 'var95' ( temp 2-component vector of double) 0:186 Constant: 0:186 0.000000 0:186 0.000000 0:190 Sequence 0:190 move second child to first child ( temp 2-component vector of uint) 0:190 'var96' ( temp 2-component vector of uint) 0:190 Constant: 0:190 0 (const uint) 0:190 0 (const uint) 0:191 Sequence 0:191 move second child to first child ( temp 2-component vector of uint64_t) 0:191 'var97' ( temp 2-component vector of uint64_t) 0:191 Constant: 0:191 0 (const uint64_t) 0:191 0 (const uint64_t) 0:192 Sequence 0:192 move second child to first child ( temp 2-component vector of float) 0:192 'var98' ( temp 2-component vector of float) 0:192 Constant: 0:192 0.000000 0:192 0.000000 0:193 Sequence 0:193 move second child to first child ( temp 2-component vector of double) 0:193 'var99' ( temp 2-component vector of double) 0:193 Constant: 0:193 0.000000 0:193 0.000000 0:197 Sequence 0:197 move second child to first child ( temp 3-component vector of uint) 0:197 'var100' ( temp 3-component vector of uint) 0:197 Constant: 0:197 0 (const uint) 0:197 0 (const uint) 0:197 0 (const uint) 0:198 Sequence 0:198 move second child to first child ( temp 3-component vector of uint64_t) 0:198 'var101' ( temp 3-component vector of uint64_t) 0:198 Constant: 0:198 0 (const uint64_t) 0:198 0 (const uint64_t) 0:198 0 (const uint64_t) 0:199 Sequence 0:199 move second child to first child ( temp 3-component vector of float) 0:199 'var102' ( temp 3-component vector of float) 0:199 Constant: 0:199 0.000000 0:199 0.000000 0:199 0.000000 0:200 Sequence 0:200 move second child to first child ( temp 3-component vector of double) 0:200 'var103' ( temp 3-component vector of double) 0:200 Constant: 0:200 0.000000 0:200 0.000000 0:200 0.000000 0:204 Sequence 0:204 move second child to first child ( temp 4-component vector of uint) 0:204 'var104' ( temp 4-component vector of uint) 0:204 Constant: 0:204 0 (const uint) 0:204 0 (const uint) 0:204 0 (const uint) 0:204 0 (const uint) 0:205 Sequence 0:205 move second child to first child ( temp 4-component vector of uint64_t) 0:205 'var105' ( temp 4-component vector of uint64_t) 0:205 Constant: 0:205 0 (const uint64_t) 0:205 0 (const uint64_t) 0:205 0 (const uint64_t) 0:205 0 (const uint64_t) 0:206 Sequence 0:206 move second child to first child ( temp 4-component vector of float) 0:206 'var106' ( temp 4-component vector of float) 0:206 Constant: 0:206 0.000000 0:206 0.000000 0:206 0.000000 0:206 0.000000 0:207 Sequence 0:207 move second child to first child ( temp 4-component vector of double) 0:207 'var107' ( temp 4-component vector of double) 0:207 Constant: 0:207 0.000000 0:207 0.000000 0:207 0.000000 0:207 0.000000 0:211 Sequence 0:211 move second child to first child ( temp double) 0:211 'var108' ( temp double) 0:211 Constant: 0:211 0.000000 0:215 Sequence 0:215 move second child to first child ( temp 2-component vector of double) 0:215 'var109' ( temp 2-component vector of double) 0:215 Constant: 0:215 0.000000 0:215 0.000000 0:219 Sequence 0:219 move second child to first child ( temp 3-component vector of double) 0:219 'var110' ( temp 3-component vector of double) 0:219 Constant: 0:219 0.000000 0:219 0.000000 0:219 0.000000 0:223 Sequence 0:223 move second child to first child ( temp 4-component vector of double) 0:223 'var111' ( temp 4-component vector of double) 0:223 Constant: 0:223 0.000000 0:223 0.000000 0:223 0.000000 0:223 0.000000 0:227 Sequence 0:227 move second child to first child ( temp double) 0:227 'var112' ( temp double) 0:227 Constant: 0:227 0.000000 0:231 Sequence 0:231 move second child to first child ( temp 2-component vector of double) 0:231 'var113' ( temp 2-component vector of double) 0:231 Constant: 0:231 0.000000 0:231 0.000000 0:235 Sequence 0:235 move second child to first child ( temp 3-component vector of double) 0:235 'var114' ( temp 3-component vector of double) 0:235 Constant: 0:235 0.000000 0:235 0.000000 0:235 0.000000 0:239 Sequence 0:239 move second child to first child ( temp 4-component vector of double) 0:239 'var115' ( temp 4-component vector of double) 0:239 Constant: 0:239 0.000000 0:239 0.000000 0:239 0.000000 0:239 0.000000 0:243 Sequence 0:243 move second child to first child ( temp float) 0:243 'var116' ( temp float) 0:243 Constant: 0:243 0.000000 0:244 Sequence 0:244 move second child to first child ( temp double) 0:244 'var117' ( temp double) 0:244 Constant: 0:244 0.000000 0:248 Sequence 0:248 move second child to first child ( temp 2-component vector of float) 0:248 'var118' ( temp 2-component vector of float) 0:248 Constant: 0:248 0.000000 0:248 0.000000 0:249 Sequence 0:249 move second child to first child ( temp 2-component vector of double) 0:249 'var119' ( temp 2-component vector of double) 0:249 Constant: 0:249 0.000000 0:249 0.000000 0:253 Sequence 0:253 move second child to first child ( temp 3-component vector of float) 0:253 'var120' ( temp 3-component vector of float) 0:253 Constant: 0:253 0.000000 0:253 0.000000 0:253 0.000000 0:254 Sequence 0:254 move second child to first child ( temp 3-component vector of double) 0:254 'var121' ( temp 3-component vector of double) 0:254 Constant: 0:254 0.000000 0:254 0.000000 0:254 0.000000 0:258 Sequence 0:258 move second child to first child ( temp 4-component vector of float) 0:258 'var122' ( temp 4-component vector of float) 0:258 Constant: 0:258 0.000000 0:258 0.000000 0:258 0.000000 0:258 0.000000 0:259 Sequence 0:259 move second child to first child ( temp 4-component vector of double) 0:259 'var123' ( temp 4-component vector of double) 0:259 Constant: 0:259 0.000000 0:259 0.000000 0:259 0.000000 0:259 0.000000 0:293 Function Definition: testbuiltinARB( ( global void) 0:293 Function Parameters: 0:? Sequence 0:312 move second child to first child ( temp float) 0:312 'var0' ( temp float) 0:312 fma ( global float) 0:312 'var0' ( temp float) 0:312 'var0' ( temp float) 0:312 'var0' ( temp float) 0:313 move second child to first child ( temp 2-component vector of float) 0:313 'var1' ( temp 2-component vector of float) 0:313 fma ( global 2-component vector of float) 0:313 'var1' ( temp 2-component vector of float) 0:313 'var1' ( temp 2-component vector of float) 0:313 'var1' ( temp 2-component vector of float) 0:314 move second child to first child ( temp 3-component vector of float) 0:314 'var2' ( temp 3-component vector of float) 0:314 fma ( global 3-component vector of float) 0:314 'var2' ( temp 3-component vector of float) 0:314 'var2' ( temp 3-component vector of float) 0:314 'var2' ( temp 3-component vector of float) 0:315 move second child to first child ( temp 4-component vector of float) 0:315 'var3' ( temp 4-component vector of float) 0:315 fma ( global 4-component vector of float) 0:315 'var3' ( temp 4-component vector of float) 0:315 'var3' ( temp 4-component vector of float) 0:315 'var3' ( temp 4-component vector of float) 0:317 move second child to first child ( temp float) 0:317 'var0' ( temp float) 0:317 frexp ( global float) 0:317 'var0' ( temp float) 0:317 'var4' ( temp int) 0:318 move second child to first child ( temp 2-component vector of float) 0:318 'var1' ( temp 2-component vector of float) 0:318 frexp ( global 2-component vector of float) 0:318 'var1' ( temp 2-component vector of float) 0:318 'var5' ( temp 2-component vector of int) 0:319 move second child to first child ( temp 3-component vector of float) 0:319 'var2' ( temp 3-component vector of float) 0:319 frexp ( global 3-component vector of float) 0:319 'var2' ( temp 3-component vector of float) 0:319 'var6' ( temp 3-component vector of int) 0:320 move second child to first child ( temp 4-component vector of float) 0:320 'var3' ( temp 4-component vector of float) 0:320 frexp ( global 4-component vector of float) 0:320 'var3' ( temp 4-component vector of float) 0:320 'var7' ( temp 4-component vector of int) 0:323 move second child to first child ( temp float) 0:323 'var0' ( temp float) 0:323 ldexp ( global float) 0:323 'var0' ( temp float) 0:323 'var4' ( temp int) 0:324 move second child to first child ( temp 2-component vector of float) 0:324 'var1' ( temp 2-component vector of float) 0:324 ldexp ( global 2-component vector of float) 0:324 'var1' ( temp 2-component vector of float) 0:324 'var5' ( temp 2-component vector of int) 0:325 move second child to first child ( temp 3-component vector of float) 0:325 'var2' ( temp 3-component vector of float) 0:325 ldexp ( global 3-component vector of float) 0:325 'var2' ( temp 3-component vector of float) 0:325 'var6' ( temp 3-component vector of int) 0:326 move second child to first child ( temp 4-component vector of float) 0:326 'var3' ( temp 4-component vector of float) 0:326 ldexp ( global 4-component vector of float) 0:326 'var3' ( temp 4-component vector of float) 0:326 'var7' ( temp 4-component vector of int) 0:329 move second child to first child ( temp int) 0:329 'var4' ( temp int) 0:329 bitfieldExtract ( global int) 0:329 'var4' ( temp int) 0:329 'var4' ( temp int) 0:329 'var4' ( temp int) 0:330 move second child to first child ( temp 2-component vector of int) 0:330 'var5' ( temp 2-component vector of int) 0:330 bitfieldExtract ( global 2-component vector of int) 0:330 'var5' ( temp 2-component vector of int) 0:330 'var4' ( temp int) 0:330 'var4' ( temp int) 0:331 move second child to first child ( temp 3-component vector of int) 0:331 'var6' ( temp 3-component vector of int) 0:331 bitfieldExtract ( global 3-component vector of int) 0:331 'var6' ( temp 3-component vector of int) 0:331 'var4' ( temp int) 0:331 'var4' ( temp int) 0:332 move second child to first child ( temp 4-component vector of int) 0:332 'var7' ( temp 4-component vector of int) 0:332 bitfieldExtract ( global 4-component vector of int) 0:332 'var7' ( temp 4-component vector of int) 0:332 'var4' ( temp int) 0:332 'var4' ( temp int) 0:334 move second child to first child ( temp uint) 0:334 'var8' ( temp uint) 0:334 bitfieldExtract ( global uint) 0:334 'var8' ( temp uint) 0:334 'var4' ( temp int) 0:334 'var4' ( temp int) 0:335 move second child to first child ( temp 2-component vector of uint) 0:335 'var9' ( temp 2-component vector of uint) 0:335 bitfieldExtract ( global 2-component vector of uint) 0:335 'var9' ( temp 2-component vector of uint) 0:335 'var4' ( temp int) 0:335 'var4' ( temp int) 0:336 move second child to first child ( temp 3-component vector of uint) 0:336 'var10' ( temp 3-component vector of uint) 0:336 bitfieldExtract ( global 3-component vector of uint) 0:336 'var10' ( temp 3-component vector of uint) 0:336 'var4' ( temp int) 0:336 'var4' ( temp int) 0:337 move second child to first child ( temp 4-component vector of uint) 0:337 'var11' ( temp 4-component vector of uint) 0:337 bitfieldExtract ( global 4-component vector of uint) 0:337 'var11' ( temp 4-component vector of uint) 0:337 'var4' ( temp int) 0:337 'var4' ( temp int) 0:339 move second child to first child ( temp int) 0:339 'var4' ( temp int) 0:339 bitfieldInsert ( global int) 0:339 'var4' ( temp int) 0:339 'var4' ( temp int) 0:339 'var4' ( temp int) 0:339 'var4' ( temp int) 0:340 move second child to first child ( temp 2-component vector of int) 0:340 'var5' ( temp 2-component vector of int) 0:340 bitfieldInsert ( global 2-component vector of int) 0:340 'var5' ( temp 2-component vector of int) 0:340 'var5' ( temp 2-component vector of int) 0:340 'var4' ( temp int) 0:340 'var4' ( temp int) 0:341 move second child to first child ( temp 3-component vector of int) 0:341 'var6' ( temp 3-component vector of int) 0:341 bitfieldInsert ( global 3-component vector of int) 0:341 'var6' ( temp 3-component vector of int) 0:341 'var6' ( temp 3-component vector of int) 0:341 'var4' ( temp int) 0:341 'var4' ( temp int) 0:342 move second child to first child ( temp 4-component vector of int) 0:342 'var7' ( temp 4-component vector of int) 0:342 bitfieldInsert ( global 4-component vector of int) 0:342 'var7' ( temp 4-component vector of int) 0:342 'var7' ( temp 4-component vector of int) 0:342 'var4' ( temp int) 0:342 'var4' ( temp int) 0:344 move second child to first child ( temp uint) 0:344 'var8' ( temp uint) 0:344 bitfieldInsert ( global uint) 0:344 'var8' ( temp uint) 0:344 'var8' ( temp uint) 0:344 'var4' ( temp int) 0:344 'var4' ( temp int) 0:345 move second child to first child ( temp 2-component vector of uint) 0:345 'var9' ( temp 2-component vector of uint) 0:345 bitfieldInsert ( global 2-component vector of uint) 0:345 'var9' ( temp 2-component vector of uint) 0:345 'var9' ( temp 2-component vector of uint) 0:345 'var4' ( temp int) 0:345 'var4' ( temp int) 0:346 move second child to first child ( temp 3-component vector of uint) 0:346 'var10' ( temp 3-component vector of uint) 0:346 bitfieldInsert ( global 3-component vector of uint) 0:346 'var10' ( temp 3-component vector of uint) 0:346 'var10' ( temp 3-component vector of uint) 0:346 'var4' ( temp int) 0:346 'var4' ( temp int) 0:347 move second child to first child ( temp 4-component vector of uint) 0:347 'var11' ( temp 4-component vector of uint) 0:347 bitfieldInsert ( global 4-component vector of uint) 0:347 'var11' ( temp 4-component vector of uint) 0:347 'var11' ( temp 4-component vector of uint) 0:347 'var4' ( temp int) 0:347 'var4' ( temp int) 0:349 move second child to first child ( temp int) 0:349 'var4' ( temp int) 0:349 bitFieldReverse ( global int) 0:349 'var4' ( temp int) 0:350 move second child to first child ( temp 2-component vector of int) 0:350 'var5' ( temp 2-component vector of int) 0:350 bitFieldReverse ( global 2-component vector of int) 0:350 'var5' ( temp 2-component vector of int) 0:351 move second child to first child ( temp 3-component vector of int) 0:351 'var6' ( temp 3-component vector of int) 0:351 bitFieldReverse ( global 3-component vector of int) 0:351 'var6' ( temp 3-component vector of int) 0:352 move second child to first child ( temp 4-component vector of int) 0:352 'var7' ( temp 4-component vector of int) 0:352 bitFieldReverse ( global 4-component vector of int) 0:352 'var7' ( temp 4-component vector of int) 0:354 move second child to first child ( temp uint) 0:354 'var8' ( temp uint) 0:354 bitFieldReverse ( global uint) 0:354 'var8' ( temp uint) 0:355 move second child to first child ( temp 2-component vector of uint) 0:355 'var9' ( temp 2-component vector of uint) 0:355 bitFieldReverse ( global 2-component vector of uint) 0:355 'var9' ( temp 2-component vector of uint) 0:356 move second child to first child ( temp 3-component vector of uint) 0:356 'var10' ( temp 3-component vector of uint) 0:356 bitFieldReverse ( global 3-component vector of uint) 0:356 'var10' ( temp 3-component vector of uint) 0:357 move second child to first child ( temp 4-component vector of uint) 0:357 'var11' ( temp 4-component vector of uint) 0:357 bitFieldReverse ( global 4-component vector of uint) 0:357 'var11' ( temp 4-component vector of uint) 0:359 move second child to first child ( temp int) 0:359 'var4' ( temp int) 0:359 bitCount ( global int) 0:359 'var4' ( temp int) 0:360 move second child to first child ( temp 2-component vector of int) 0:360 'var5' ( temp 2-component vector of int) 0:360 bitCount ( global 2-component vector of int) 0:360 'var5' ( temp 2-component vector of int) 0:361 move second child to first child ( temp 3-component vector of int) 0:361 'var6' ( temp 3-component vector of int) 0:361 bitCount ( global 3-component vector of int) 0:361 'var6' ( temp 3-component vector of int) 0:362 move second child to first child ( temp 4-component vector of int) 0:362 'var7' ( temp 4-component vector of int) 0:362 bitCount ( global 4-component vector of int) 0:362 'var7' ( temp 4-component vector of int) 0:364 move second child to first child ( temp uint) 0:364 'var8' ( temp uint) 0:364 Convert int to uint ( temp uint) 0:364 bitCount ( global int) 0:364 'var8' ( temp uint) 0:365 move second child to first child ( temp 2-component vector of uint) 0:365 'var9' ( temp 2-component vector of uint) 0:365 Convert int to uint ( temp 2-component vector of uint) 0:365 bitCount ( global 2-component vector of int) 0:365 'var9' ( temp 2-component vector of uint) 0:366 move second child to first child ( temp 3-component vector of uint) 0:366 'var10' ( temp 3-component vector of uint) 0:366 Convert int to uint ( temp 3-component vector of uint) 0:366 bitCount ( global 3-component vector of int) 0:366 'var10' ( temp 3-component vector of uint) 0:367 move second child to first child ( temp 4-component vector of uint) 0:367 'var11' ( temp 4-component vector of uint) 0:367 Convert int to uint ( temp 4-component vector of uint) 0:367 bitCount ( global 4-component vector of int) 0:367 'var11' ( temp 4-component vector of uint) 0:369 move second child to first child ( temp uint) 0:369 'var8' ( temp uint) 0:369 Convert int to uint ( temp uint) 0:369 findMSB ( global int) 0:369 'var8' ( temp uint) 0:370 move second child to first child ( temp 2-component vector of uint) 0:370 'var9' ( temp 2-component vector of uint) 0:370 Convert int to uint ( temp 2-component vector of uint) 0:370 findMSB ( global 2-component vector of int) 0:370 'var9' ( temp 2-component vector of uint) 0:371 move second child to first child ( temp 3-component vector of uint) 0:371 'var10' ( temp 3-component vector of uint) 0:371 Convert int to uint ( temp 3-component vector of uint) 0:371 findMSB ( global 3-component vector of int) 0:371 'var10' ( temp 3-component vector of uint) 0:372 move second child to first child ( temp 4-component vector of uint) 0:372 'var11' ( temp 4-component vector of uint) 0:372 Convert int to uint ( temp 4-component vector of uint) 0:372 findMSB ( global 4-component vector of int) 0:372 'var11' ( temp 4-component vector of uint) 0:374 move second child to first child ( temp int) 0:374 'var4' ( temp int) 0:374 findMSB ( global int) 0:374 'var4' ( temp int) 0:375 move second child to first child ( temp 2-component vector of int) 0:375 'var5' ( temp 2-component vector of int) 0:375 findMSB ( global 2-component vector of int) 0:375 'var5' ( temp 2-component vector of int) 0:376 move second child to first child ( temp 3-component vector of int) 0:376 'var6' ( temp 3-component vector of int) 0:376 findMSB ( global 3-component vector of int) 0:376 'var6' ( temp 3-component vector of int) 0:377 move second child to first child ( temp 4-component vector of int) 0:377 'var7' ( temp 4-component vector of int) 0:377 findMSB ( global 4-component vector of int) 0:377 'var7' ( temp 4-component vector of int) 0:379 move second child to first child ( temp int) 0:379 'var4' ( temp int) 0:379 findLSB ( global int) 0:379 'var4' ( temp int) 0:380 move second child to first child ( temp 2-component vector of int) 0:380 'var5' ( temp 2-component vector of int) 0:380 findLSB ( global 2-component vector of int) 0:380 'var5' ( temp 2-component vector of int) 0:381 move second child to first child ( temp 3-component vector of int) 0:381 'var6' ( temp 3-component vector of int) 0:381 findLSB ( global 3-component vector of int) 0:381 'var6' ( temp 3-component vector of int) 0:382 move second child to first child ( temp 4-component vector of int) 0:382 'var7' ( temp 4-component vector of int) 0:382 findLSB ( global 4-component vector of int) 0:382 'var7' ( temp 4-component vector of int) 0:384 move second child to first child ( temp uint) 0:384 'var8' ( temp uint) 0:384 Convert int to uint ( temp uint) 0:384 findLSB ( global int) 0:384 'var8' ( temp uint) 0:385 move second child to first child ( temp 2-component vector of uint) 0:385 'var9' ( temp 2-component vector of uint) 0:385 Convert int to uint ( temp 2-component vector of uint) 0:385 findLSB ( global 2-component vector of int) 0:385 'var9' ( temp 2-component vector of uint) 0:386 move second child to first child ( temp 3-component vector of uint) 0:386 'var10' ( temp 3-component vector of uint) 0:386 Convert int to uint ( temp 3-component vector of uint) 0:386 findLSB ( global 3-component vector of int) 0:386 'var10' ( temp 3-component vector of uint) 0:387 move second child to first child ( temp 4-component vector of uint) 0:387 'var11' ( temp 4-component vector of uint) 0:387 Convert int to uint ( temp 4-component vector of uint) 0:387 findLSB ( global 4-component vector of int) 0:387 'var11' ( temp 4-component vector of uint) 0:390 move second child to first child ( temp int) 0:390 'var4' ( temp int) 0:390 floatBitsToInt ( global int) 0:390 'var0' ( temp float) 0:391 move second child to first child ( temp 2-component vector of int) 0:391 'var5' ( temp 2-component vector of int) 0:391 floatBitsToInt ( global 2-component vector of int) 0:391 'var1' ( temp 2-component vector of float) 0:392 move second child to first child ( temp 3-component vector of int) 0:392 'var6' ( temp 3-component vector of int) 0:392 floatBitsToInt ( global 3-component vector of int) 0:392 'var2' ( temp 3-component vector of float) 0:393 move second child to first child ( temp 4-component vector of int) 0:393 'var7' ( temp 4-component vector of int) 0:393 floatBitsToInt ( global 4-component vector of int) 0:393 'var3' ( temp 4-component vector of float) 0:395 move second child to first child ( temp uint) 0:395 'var8' ( temp uint) 0:395 floatBitsToUint ( global uint) 0:395 'var0' ( temp float) 0:396 move second child to first child ( temp 2-component vector of uint) 0:396 'var9' ( temp 2-component vector of uint) 0:396 floatBitsToUint ( global 2-component vector of uint) 0:396 'var1' ( temp 2-component vector of float) 0:397 move second child to first child ( temp 3-component vector of uint) 0:397 'var10' ( temp 3-component vector of uint) 0:397 floatBitsToUint ( global 3-component vector of uint) 0:397 'var2' ( temp 3-component vector of float) 0:398 move second child to first child ( temp 4-component vector of uint) 0:398 'var11' ( temp 4-component vector of uint) 0:398 floatBitsToUint ( global 4-component vector of uint) 0:398 'var3' ( temp 4-component vector of float) 0:400 move second child to first child ( temp float) 0:400 'var0' ( temp float) 0:400 intBitsToFloat ( global float) 0:400 'var4' ( temp int) 0:401 move second child to first child ( temp 2-component vector of float) 0:401 'var1' ( temp 2-component vector of float) 0:401 intBitsToFloat ( global 2-component vector of float) 0:401 'var5' ( temp 2-component vector of int) 0:402 move second child to first child ( temp 3-component vector of float) 0:402 'var2' ( temp 3-component vector of float) 0:402 intBitsToFloat ( global 3-component vector of float) 0:402 'var6' ( temp 3-component vector of int) 0:403 move second child to first child ( temp 4-component vector of float) 0:403 'var3' ( temp 4-component vector of float) 0:403 intBitsToFloat ( global 4-component vector of float) 0:403 'var7' ( temp 4-component vector of int) 0:405 move second child to first child ( temp float) 0:405 'var0' ( temp float) 0:405 uintBitsToFloat ( global float) 0:405 'var8' ( temp uint) 0:406 move second child to first child ( temp 2-component vector of float) 0:406 'var1' ( temp 2-component vector of float) 0:406 uintBitsToFloat ( global 2-component vector of float) 0:406 'var9' ( temp 2-component vector of uint) 0:407 move second child to first child ( temp 3-component vector of float) 0:407 'var2' ( temp 3-component vector of float) 0:407 uintBitsToFloat ( global 3-component vector of float) 0:407 'var10' ( temp 3-component vector of uint) 0:408 move second child to first child ( temp 4-component vector of float) 0:408 'var3' ( temp 4-component vector of float) 0:408 uintBitsToFloat ( global 4-component vector of float) 0:408 'var11' ( temp 4-component vector of uint) 0:411 move second child to first child ( temp uint) 0:411 'var8' ( temp uint) 0:411 addCarry ( global uint) 0:411 'var8' ( temp uint) 0:411 'var8' ( temp uint) 0:411 'var8' ( temp uint) 0:412 move second child to first child ( temp 2-component vector of uint) 0:412 'var9' ( temp 2-component vector of uint) 0:412 addCarry ( global 2-component vector of uint) 0:412 'var9' ( temp 2-component vector of uint) 0:412 'var9' ( temp 2-component vector of uint) 0:412 'var9' ( temp 2-component vector of uint) 0:413 move second child to first child ( temp 3-component vector of uint) 0:413 'var10' ( temp 3-component vector of uint) 0:413 addCarry ( global 3-component vector of uint) 0:413 'var10' ( temp 3-component vector of uint) 0:413 'var10' ( temp 3-component vector of uint) 0:413 'var10' ( temp 3-component vector of uint) 0:414 move second child to first child ( temp 4-component vector of uint) 0:414 'var11' ( temp 4-component vector of uint) 0:414 addCarry ( global 4-component vector of uint) 0:414 'var11' ( temp 4-component vector of uint) 0:414 'var11' ( temp 4-component vector of uint) 0:414 'var11' ( temp 4-component vector of uint) 0:416 move second child to first child ( temp uint) 0:416 'var8' ( temp uint) 0:416 subBorrow ( global uint) 0:416 'var8' ( temp uint) 0:416 'var8' ( temp uint) 0:416 'var8' ( temp uint) 0:417 move second child to first child ( temp 2-component vector of uint) 0:417 'var9' ( temp 2-component vector of uint) 0:417 subBorrow ( global 2-component vector of uint) 0:417 'var9' ( temp 2-component vector of uint) 0:417 'var9' ( temp 2-component vector of uint) 0:417 'var9' ( temp 2-component vector of uint) 0:418 move second child to first child ( temp 3-component vector of uint) 0:418 'var10' ( temp 3-component vector of uint) 0:418 subBorrow ( global 3-component vector of uint) 0:418 'var10' ( temp 3-component vector of uint) 0:418 'var10' ( temp 3-component vector of uint) 0:418 'var10' ( temp 3-component vector of uint) 0:419 move second child to first child ( temp 4-component vector of uint) 0:419 'var11' ( temp 4-component vector of uint) 0:419 subBorrow ( global 4-component vector of uint) 0:419 'var11' ( temp 4-component vector of uint) 0:419 'var11' ( temp 4-component vector of uint) 0:419 'var11' ( temp 4-component vector of uint) 0:421 uMulExtended ( global void) 0:421 'var8' ( temp uint) 0:421 'var8' ( temp uint) 0:421 'var8' ( temp uint) 0:421 'var8' ( temp uint) 0:422 uMulExtended ( global void) 0:422 'var9' ( temp 2-component vector of uint) 0:422 'var9' ( temp 2-component vector of uint) 0:422 'var9' ( temp 2-component vector of uint) 0:422 'var9' ( temp 2-component vector of uint) 0:423 uMulExtended ( global void) 0:423 'var10' ( temp 3-component vector of uint) 0:423 'var10' ( temp 3-component vector of uint) 0:423 'var10' ( temp 3-component vector of uint) 0:423 'var10' ( temp 3-component vector of uint) 0:424 uMulExtended ( global void) 0:424 'var11' ( temp 4-component vector of uint) 0:424 'var11' ( temp 4-component vector of uint) 0:424 'var11' ( temp 4-component vector of uint) 0:424 'var11' ( temp 4-component vector of uint) 0:426 iMulExtended ( global void) 0:426 'var4' ( temp int) 0:426 'var4' ( temp int) 0:426 'var4' ( temp int) 0:426 'var4' ( temp int) 0:427 iMulExtended ( global void) 0:427 'var5' ( temp 2-component vector of int) 0:427 'var5' ( temp 2-component vector of int) 0:427 'var5' ( temp 2-component vector of int) 0:427 'var5' ( temp 2-component vector of int) 0:428 iMulExtended ( global void) 0:428 'var6' ( temp 3-component vector of int) 0:428 'var6' ( temp 3-component vector of int) 0:428 'var6' ( temp 3-component vector of int) 0:428 'var6' ( temp 3-component vector of int) 0:429 iMulExtended ( global void) 0:429 'var7' ( temp 4-component vector of int) 0:429 'var7' ( temp 4-component vector of int) 0:429 'var7' ( temp 4-component vector of int) 0:429 'var7' ( temp 4-component vector of int) 0:431 move second child to first child ( temp uint) 0:431 'var8' ( temp uint) 0:431 packUnorm2x16 ( global uint) 0:431 'var1' ( temp 2-component vector of float) 0:432 move second child to first child ( temp uint) 0:432 'var8' ( temp uint) 0:432 PackUnorm4x8 ( global uint) 0:432 'var3' ( temp 4-component vector of float) 0:433 move second child to first child ( temp uint) 0:433 'var8' ( temp uint) 0:433 PackSnorm4x8 ( global uint) 0:433 'var3' ( temp 4-component vector of float) 0:435 move second child to first child ( temp 2-component vector of float) 0:435 'var1' ( temp 2-component vector of float) 0:435 unpackUnorm2x16 ( global 2-component vector of float) 0:435 'var8' ( temp uint) 0:436 move second child to first child ( temp 4-component vector of float) 0:436 'var3' ( temp 4-component vector of float) 0:436 UnpackUnorm4x8 ( global 4-component vector of float) 0:436 'var8' ( temp uint) 0:437 move second child to first child ( temp 4-component vector of float) 0:437 'var3' ( temp 4-component vector of float) 0:437 UnpackSnorm4x8 ( global 4-component vector of float) 0:437 'var8' ( temp uint) 0:439 move second child to first child ( temp float) 0:439 'var0' ( temp float) 0:439 interpolateAtCentroid ( global float) 0:439 'fvar0' ( smooth in float) 0:440 move second child to first child ( temp 2-component vector of float) 0:440 'var1' ( temp 2-component vector of float) 0:440 interpolateAtCentroid ( global 2-component vector of float) 0:440 'fvar1' ( smooth in 2-component vector of float) 0:441 move second child to first child ( temp 3-component vector of float) 0:441 'var2' ( temp 3-component vector of float) 0:441 interpolateAtCentroid ( global 3-component vector of float) 0:441 'fvar2' ( smooth in 3-component vector of float) 0:442 move second child to first child ( temp 4-component vector of float) 0:442 'var3' ( temp 4-component vector of float) 0:442 interpolateAtCentroid ( global 4-component vector of float) 0:442 'fvar3' ( smooth in 4-component vector of float) 0:443 move second child to first child ( temp float) 0:443 'var0' ( temp float) 0:443 interpolateAtSample ( global float) 0:443 'fvar0' ( smooth in float) 0:443 'var4' ( temp int) 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'var1' ( temp 2-component vector of float) 0:444 interpolateAtSample ( global 2-component vector of float) 0:444 'fvar1' ( smooth in 2-component vector of float) 0:444 'var4' ( temp int) 0:445 move second child to first child ( temp 3-component vector of float) 0:445 'var2' ( temp 3-component vector of float) 0:445 interpolateAtSample ( global 3-component vector of float) 0:445 'fvar2' ( smooth in 3-component vector of float) 0:445 'var4' ( temp int) 0:446 move second child to first child ( temp 4-component vector of float) 0:446 'var3' ( temp 4-component vector of float) 0:446 interpolateAtSample ( global 4-component vector of float) 0:446 'fvar3' ( smooth in 4-component vector of float) 0:446 'var4' ( temp int) 0:447 move second child to first child ( temp float) 0:447 'var0' ( temp float) 0:447 interpolateAtOffset ( global float) 0:447 'fvar0' ( smooth in float) 0:447 'var1' ( temp 2-component vector of float) 0:448 move second child to first child ( temp 2-component vector of float) 0:448 'var1' ( temp 2-component vector of float) 0:448 interpolateAtOffset ( global 2-component vector of float) 0:448 'fvar1' ( smooth in 2-component vector of float) 0:448 'var1' ( temp 2-component vector of float) 0:449 move second child to first child ( temp 3-component vector of float) 0:449 'var2' ( temp 3-component vector of float) 0:449 interpolateAtOffset ( global 3-component vector of float) 0:449 'fvar2' ( smooth in 3-component vector of float) 0:449 'var1' ( temp 2-component vector of float) 0:450 move second child to first child ( temp 4-component vector of float) 0:450 'var3' ( temp 4-component vector of float) 0:450 interpolateAtOffset ( global 4-component vector of float) 0:450 'fvar3' ( smooth in 4-component vector of float) 0:450 'var1' ( temp 2-component vector of float) 0:454 move second child to first child ( temp 4-component vector of float) 0:454 'var3' ( temp 4-component vector of float) 0:454 textureGatherOffset ( global 4-component vector of float) 0:454 'svar24' ( uniform sampler2D) 0:454 'var1' ( temp 2-component vector of float) 0:454 'var5' ( temp 2-component vector of int) 0:455 move second child to first child ( temp 4-component vector of uint) 0:455 'var11' ( temp 4-component vector of uint) 0:455 textureGatherOffset ( global 4-component vector of uint) 0:455 'svar25' ( uniform usampler2D) 0:455 'var1' ( temp 2-component vector of float) 0:455 'var5' ( temp 2-component vector of int) 0:456 move second child to first child ( temp 4-component vector of int) 0:456 'var7' ( temp 4-component vector of int) 0:456 textureGatherOffset ( global 4-component vector of int) 0:456 'svar26' ( uniform isampler2D) 0:456 'var1' ( temp 2-component vector of float) 0:456 'var5' ( temp 2-component vector of int) 0:459 move second child to first child ( temp 4-component vector of float) 0:459 'var3' ( temp 4-component vector of float) 0:459 textureGatherOffset ( global 4-component vector of float) 0:459 'svar33' ( uniform sampler2DArray) 0:459 'var2' ( temp 3-component vector of float) 0:459 'var5' ( temp 2-component vector of int) 0:460 move second child to first child ( temp 4-component vector of uint) 0:460 'var11' ( temp 4-component vector of uint) 0:460 textureGatherOffset ( global 4-component vector of uint) 0:460 'svar34' ( uniform usampler2DArray) 0:460 'var2' ( temp 3-component vector of float) 0:460 'var5' ( temp 2-component vector of int) 0:461 move second child to first child ( temp 4-component vector of int) 0:461 'var7' ( temp 4-component vector of int) 0:461 textureGatherOffset ( global 4-component vector of int) 0:461 'svar35' ( uniform isampler2DArray) 0:461 'var2' ( temp 3-component vector of float) 0:461 'var5' ( temp 2-component vector of int) 0:463 move second child to first child ( temp 4-component vector of float) 0:463 'var3' ( temp 4-component vector of float) 0:463 textureGatherOffset ( global 4-component vector of float) 0:463 'svar27' ( uniform sampler2DRect) 0:463 'var1' ( temp 2-component vector of float) 0:463 'var5' ( temp 2-component vector of int) 0:464 move second child to first child ( temp 4-component vector of uint) 0:464 'var11' ( temp 4-component vector of uint) 0:464 textureGatherOffset ( global 4-component vector of uint) 0:464 'svar28' ( uniform usampler2DRect) 0:464 'var1' ( temp 2-component vector of float) 0:464 'var5' ( temp 2-component vector of int) 0:465 move second child to first child ( temp 4-component vector of int) 0:465 'var7' ( temp 4-component vector of int) 0:465 textureGatherOffset ( global 4-component vector of int) 0:465 'svar29' ( uniform isampler2DRect) 0:465 'var1' ( temp 2-component vector of float) 0:465 'var5' ( temp 2-component vector of int) 0:467 move second child to first child ( temp 4-component vector of float) 0:467 'var3' ( temp 4-component vector of float) 0:467 textureGatherOffset ( global 4-component vector of float) 0:467 'var16' ( uniform sampler2DShadow) 0:467 'var1' ( temp 2-component vector of float) 0:467 'var0' ( temp float) 0:467 'var5' ( temp 2-component vector of int) 0:469 move second child to first child ( temp 4-component vector of float) 0:469 'var3' ( temp 4-component vector of float) 0:469 textureGatherOffset ( global 4-component vector of float) 0:469 'var18' ( uniform sampler2DArrayShadow) 0:469 'var2' ( temp 3-component vector of float) 0:469 'var0' ( temp float) 0:469 'var5' ( temp 2-component vector of int) 0:471 move second child to first child ( temp 4-component vector of float) 0:471 'var3' ( temp 4-component vector of float) 0:471 textureGatherOffset ( global 4-component vector of float) 0:471 'var20' ( uniform sampler2DRectShadow) 0:471 'var1' ( temp 2-component vector of float) 0:471 'var0' ( temp float) 0:471 'var5' ( temp 2-component vector of int) 0:474 move second child to first child ( temp 4-component vector of float) 0:474 'var3' ( temp 4-component vector of float) 0:474 textureGather ( global 4-component vector of float) 0:474 'svar24' ( uniform sampler2D) 0:474 'var1' ( temp 2-component vector of float) 0:475 move second child to first child ( temp 4-component vector of uint) 0:475 'var11' ( temp 4-component vector of uint) 0:475 textureGather ( global 4-component vector of uint) 0:475 'svar25' ( uniform usampler2D) 0:475 'var1' ( temp 2-component vector of float) 0:476 move second child to first child ( temp 4-component vector of int) 0:476 'var7' ( temp 4-component vector of int) 0:476 textureGather ( global 4-component vector of int) 0:476 'svar26' ( uniform isampler2D) 0:476 'var1' ( temp 2-component vector of float) 0:478 move second child to first child ( temp 4-component vector of float) 0:478 'var3' ( temp 4-component vector of float) 0:478 textureGather ( global 4-component vector of float) 0:478 'svar33' ( uniform sampler2DArray) 0:478 'var2' ( temp 3-component vector of float) 0:479 move second child to first child ( temp 4-component vector of uint) 0:479 'var11' ( temp 4-component vector of uint) 0:479 textureGather ( global 4-component vector of uint) 0:479 'svar34' ( uniform usampler2DArray) 0:479 'var2' ( temp 3-component vector of float) 0:480 move second child to first child ( temp 4-component vector of int) 0:480 'var7' ( temp 4-component vector of int) 0:480 textureGather ( global 4-component vector of int) 0:480 'svar35' ( uniform isampler2DArray) 0:480 'var2' ( temp 3-component vector of float) 0:482 move second child to first child ( temp 4-component vector of float) 0:482 'var3' ( temp 4-component vector of float) 0:482 textureGather ( global 4-component vector of float) 0:482 'svar30' ( uniform samplerCube) 0:482 'var2' ( temp 3-component vector of float) 0:483 move second child to first child ( temp 4-component vector of uint) 0:483 'var11' ( temp 4-component vector of uint) 0:483 textureGather ( global 4-component vector of uint) 0:483 'svar31' ( uniform usamplerCube) 0:483 'var2' ( temp 3-component vector of float) 0:484 move second child to first child ( temp 4-component vector of int) 0:484 'var7' ( temp 4-component vector of int) 0:484 textureGather ( global 4-component vector of int) 0:484 'svar32' ( uniform isamplerCube) 0:484 'var2' ( temp 3-component vector of float) 0:486 move second child to first child ( temp 4-component vector of float) 0:486 'var3' ( temp 4-component vector of float) 0:486 textureGather ( global 4-component vector of float) 0:486 'svar21' ( uniform samplerCubeArray) 0:486 'var3' ( temp 4-component vector of float) 0:487 move second child to first child ( temp 4-component vector of uint) 0:487 'var11' ( temp 4-component vector of uint) 0:487 textureGather ( global 4-component vector of uint) 0:487 'svar22' ( uniform usamplerCubeArray) 0:487 'var3' ( temp 4-component vector of float) 0:488 move second child to first child ( temp 4-component vector of int) 0:488 'var7' ( temp 4-component vector of int) 0:488 textureGather ( global 4-component vector of int) 0:488 'svar23' ( uniform isamplerCubeArray) 0:488 'var3' ( temp 4-component vector of float) 0:490 move second child to first child ( temp 4-component vector of float) 0:490 'var3' ( temp 4-component vector of float) 0:490 textureGather ( global 4-component vector of float) 0:490 'svar27' ( uniform sampler2DRect) 0:490 'var1' ( temp 2-component vector of float) 0:491 move second child to first child ( temp 4-component vector of uint) 0:491 'var11' ( temp 4-component vector of uint) 0:491 textureGather ( global 4-component vector of uint) 0:491 'svar28' ( uniform usampler2DRect) 0:491 'var1' ( temp 2-component vector of float) 0:492 move second child to first child ( temp 4-component vector of int) 0:492 'var7' ( temp 4-component vector of int) 0:492 textureGather ( global 4-component vector of int) 0:492 'svar29' ( uniform isampler2DRect) 0:492 'var1' ( temp 2-component vector of float) 0:494 move second child to first child ( temp 4-component vector of float) 0:494 'var3' ( temp 4-component vector of float) 0:494 textureGather ( global 4-component vector of float) 0:494 'var16' ( uniform sampler2DShadow) 0:494 'var1' ( temp 2-component vector of float) 0:494 'var0' ( temp float) 0:496 move second child to first child ( temp 4-component vector of float) 0:496 'var3' ( temp 4-component vector of float) 0:496 textureGather ( global 4-component vector of float) 0:496 'var18' ( uniform sampler2DArrayShadow) 0:496 'var2' ( temp 3-component vector of float) 0:496 'var0' ( temp float) 0:498 move second child to first child ( temp 4-component vector of float) 0:498 'var3' ( temp 4-component vector of float) 0:498 textureGather ( global 4-component vector of float) 0:498 'var17' ( uniform samplerCubeShadow) 0:498 'var2' ( temp 3-component vector of float) 0:498 'var0' ( temp float) 0:500 move second child to first child ( temp 4-component vector of float) 0:500 'var3' ( temp 4-component vector of float) 0:500 textureGather ( global 4-component vector of float) 0:500 'var19' ( uniform samplerCubeArrayShadow) 0:500 'var3' ( temp 4-component vector of float) 0:500 'var0' ( temp float) 0:502 move second child to first child ( temp 4-component vector of float) 0:502 'var3' ( temp 4-component vector of float) 0:502 textureGather ( global 4-component vector of float) 0:502 'var20' ( uniform sampler2DRectShadow) 0:502 'var1' ( temp 2-component vector of float) 0:502 'var0' ( temp float) 0:505 move second child to first child ( temp 4-component vector of float) 0:505 'var3' ( temp 4-component vector of float) 0:505 textureGatherOffsets ( global 4-component vector of float) 0:505 'svar24' ( uniform sampler2D) 0:505 'var1' ( temp 2-component vector of float) 0:505 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:506 move second child to first child ( temp 4-component vector of uint) 0:506 'var11' ( temp 4-component vector of uint) 0:506 textureGatherOffsets ( global 4-component vector of uint) 0:506 'svar25' ( uniform usampler2D) 0:506 'var1' ( temp 2-component vector of float) 0:506 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:507 move second child to first child ( temp 4-component vector of int) 0:507 'var7' ( temp 4-component vector of int) 0:507 textureGatherOffsets ( global 4-component vector of int) 0:507 'svar26' ( uniform isampler2D) 0:507 'var1' ( temp 2-component vector of float) 0:507 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:509 move second child to first child ( temp 4-component vector of float) 0:509 'var3' ( temp 4-component vector of float) 0:509 textureGatherOffsets ( global 4-component vector of float) 0:509 'svar33' ( uniform sampler2DArray) 0:509 'var2' ( temp 3-component vector of float) 0:509 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:510 move second child to first child ( temp 4-component vector of uint) 0:510 'var11' ( temp 4-component vector of uint) 0:510 textureGatherOffsets ( global 4-component vector of uint) 0:510 'svar34' ( uniform usampler2DArray) 0:510 'var2' ( temp 3-component vector of float) 0:510 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:511 move second child to first child ( temp 4-component vector of int) 0:511 'var7' ( temp 4-component vector of int) 0:511 textureGatherOffsets ( global 4-component vector of int) 0:511 'svar35' ( uniform isampler2DArray) 0:511 'var2' ( temp 3-component vector of float) 0:511 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:513 move second child to first child ( temp 4-component vector of float) 0:513 'var3' ( temp 4-component vector of float) 0:513 textureGatherOffsets ( global 4-component vector of float) 0:513 'svar27' ( uniform sampler2DRect) 0:513 'var1' ( temp 2-component vector of float) 0:513 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:514 move second child to first child ( temp 4-component vector of uint) 0:514 'var11' ( temp 4-component vector of uint) 0:514 textureGatherOffsets ( global 4-component vector of uint) 0:514 'svar28' ( uniform usampler2DRect) 0:514 'var1' ( temp 2-component vector of float) 0:514 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:515 move second child to first child ( temp 4-component vector of int) 0:515 'var7' ( temp 4-component vector of int) 0:515 textureGatherOffsets ( global 4-component vector of int) 0:515 'svar29' ( uniform isampler2DRect) 0:515 'var1' ( temp 2-component vector of float) 0:515 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:517 move second child to first child ( temp 4-component vector of float) 0:517 'var3' ( temp 4-component vector of float) 0:517 textureGatherOffsets ( global 4-component vector of float) 0:517 'var16' ( uniform sampler2DShadow) 0:517 'var1' ( temp 2-component vector of float) 0:517 'var0' ( temp float) 0:517 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:519 move second child to first child ( temp 4-component vector of float) 0:519 'var3' ( temp 4-component vector of float) 0:519 textureGatherOffsets ( global 4-component vector of float) 0:519 'var18' ( uniform sampler2DArrayShadow) 0:519 'var2' ( temp 3-component vector of float) 0:519 'var0' ( temp float) 0:519 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:521 move second child to first child ( temp 4-component vector of float) 0:521 'var3' ( temp 4-component vector of float) 0:521 textureGatherOffsets ( global 4-component vector of float) 0:521 'var20' ( uniform sampler2DRectShadow) 0:521 'var1' ( temp 2-component vector of float) 0:521 'var0' ( temp float) 0:521 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:524 Function Definition: testDataTypes( ( global void) 0:524 Function Parameters: 0:596 Function Definition: testConstructors( ( global void) 0:596 Function Parameters: 0:598 Sequence 0:598 Sequence 0:598 move second child to first child ( temp uint8_t) 0:598 'uiv' ( temp uint8_t) 0:598 Constant: 0:598 1 (const uint8_t) 0:599 Sequence 0:599 move second child to first child ( temp double) 0:599 'dv' ( temp double) 0:599 Constant: 0:599 1.000000 0:600 Sequence 0:600 move second child to first child ( temp int16_t) 0:600 'iv' ( temp int16_t) 0:600 Constant: 0:600 1 (const int16_t) 0:601 Sequence 0:601 move second child to first child ( temp bool) 0:601 'bv' ( temp bool) 0:601 Constant: 0:601 false (const bool) 0:602 Convert uint8_t to float ( temp float) 0:602 'uiv' ( temp uint8_t) 0:603 Convert double to int64_t ( temp int64_t) 0:603 'dv' ( temp double) 0:604 Convert int16_t to double ( temp double) 0:604 'iv' ( temp int16_t) 0:605 Convert bool to uint16_t ( temp uint16_t) 0:605 'bv' ( temp bool) 0:609 Function Definition: testBinaryOps( ( global void) 0:609 Function Parameters: 0:611 Sequence 0:611 Sequence 0:611 move second child to first child ( temp int) 0:611 'var0' ( temp int) 0:611 Constant: 0:611 0 (const int) 0:612 Sequence 0:612 move second child to first child ( temp uint) 0:612 'var1' ( temp uint) 0:612 Constant: 0:612 1 (const uint) 0:613 Sequence 0:613 move second child to first child ( temp int64_t) 0:613 'var2' ( temp int64_t) 0:613 Constant: 0:613 2 (const int64_t) 0:614 Sequence 0:614 move second child to first child ( temp uint64_t) 0:614 'var3' ( temp uint64_t) 0:614 Constant: 0:614 3 (const uint64_t) 0:615 Sequence 0:615 move second child to first child ( temp float) 0:615 'var4' ( temp float) 0:615 Constant: 0:615 4.000000 0:616 Sequence 0:616 move second child to first child ( temp double) 0:616 'var5' ( temp double) 0:616 Constant: 0:616 5.000000 0:617 Sequence 0:617 move second child to first child ( temp 2-component vector of int) 0:617 'var6' ( temp 2-component vector of int) 0:617 Constant: 0:617 6 (const int) 0:617 6 (const int) 0:618 Sequence 0:618 move second child to first child ( temp 2-component vector of uint) 0:618 'var7' ( temp 2-component vector of uint) 0:618 Constant: 0:618 7 (const uint) 0:618 7 (const uint) 0:619 Sequence 0:619 move second child to first child ( temp 2-component vector of int64_t) 0:619 'var8' ( temp 2-component vector of int64_t) 0:619 Constant: 0:619 8 (const int64_t) 0:619 8 (const int64_t) 0:620 Sequence 0:620 move second child to first child ( temp 2-component vector of uint64_t) 0:620 'var9' ( temp 2-component vector of uint64_t) 0:620 Constant: 0:620 9 (const uint64_t) 0:620 9 (const uint64_t) 0:621 Sequence 0:621 move second child to first child ( temp 2-component vector of float) 0:621 'var10' ( temp 2-component vector of float) 0:621 Constant: 0:621 10.000000 0:621 10.000000 0:622 Sequence 0:622 move second child to first child ( temp 2-component vector of double) 0:622 'var11' ( temp 2-component vector of double) 0:622 Constant: 0:622 11.000000 0:622 11.000000 0:623 Sequence 0:623 move second child to first child ( temp 3-component vector of int) 0:623 'var12' ( temp 3-component vector of int) 0:623 Constant: 0:623 12 (const int) 0:623 12 (const int) 0:623 12 (const int) 0:624 Sequence 0:624 move second child to first child ( temp 3-component vector of uint) 0:624 'var13' ( temp 3-component vector of uint) 0:624 Constant: 0:624 13 (const uint) 0:624 13 (const uint) 0:624 13 (const uint) 0:625 Sequence 0:625 move second child to first child ( temp 3-component vector of int64_t) 0:625 'var14' ( temp 3-component vector of int64_t) 0:625 Constant: 0:625 14 (const int64_t) 0:625 14 (const int64_t) 0:625 14 (const int64_t) 0:626 Sequence 0:626 move second child to first child ( temp 3-component vector of uint64_t) 0:626 'var15' ( temp 3-component vector of uint64_t) 0:626 Constant: 0:626 15 (const uint64_t) 0:626 15 (const uint64_t) 0:626 15 (const uint64_t) 0:627 Sequence 0:627 move second child to first child ( temp 3-component vector of float) 0:627 'var16' ( temp 3-component vector of float) 0:627 Constant: 0:627 16.000000 0:627 16.000000 0:627 16.000000 0:628 Sequence 0:628 move second child to first child ( temp 3-component vector of double) 0:628 'var17' ( temp 3-component vector of double) 0:628 Constant: 0:628 17.000000 0:628 17.000000 0:628 17.000000 0:629 Sequence 0:629 move second child to first child ( temp 4-component vector of int) 0:629 'var18' ( temp 4-component vector of int) 0:629 Constant: 0:629 18 (const int) 0:629 18 (const int) 0:629 18 (const int) 0:629 18 (const int) 0:630 Sequence 0:630 move second child to first child ( temp 4-component vector of uint) 0:630 'var19' ( temp 4-component vector of uint) 0:630 Constant: 0:630 19 (const uint) 0:630 19 (const uint) 0:630 19 (const uint) 0:630 19 (const uint) 0:631 Sequence 0:631 move second child to first child ( temp 4-component vector of int64_t) 0:631 'var20' ( temp 4-component vector of int64_t) 0:631 Constant: 0:631 20 (const int64_t) 0:631 20 (const int64_t) 0:631 20 (const int64_t) 0:631 20 (const int64_t) 0:632 Sequence 0:632 move second child to first child ( temp 4-component vector of uint64_t) 0:632 'var21' ( temp 4-component vector of uint64_t) 0:632 Constant: 0:632 21 (const uint64_t) 0:632 21 (const uint64_t) 0:632 21 (const uint64_t) 0:632 21 (const uint64_t) 0:633 Sequence 0:633 move second child to first child ( temp 4-component vector of float) 0:633 'var22' ( temp 4-component vector of float) 0:633 Constant: 0:633 22.000000 0:633 22.000000 0:633 22.000000 0:633 22.000000 0:634 Sequence 0:634 move second child to first child ( temp 4-component vector of double) 0:634 'var23' ( temp 4-component vector of double) 0:634 Constant: 0:634 23.000000 0:634 23.000000 0:634 23.000000 0:634 23.000000 0:635 Sequence 0:635 move second child to first child ( temp int8_t) 0:635 'var24' ( temp int8_t) 0:635 Constant: 0:635 24 (const int8_t) 0:636 Sequence 0:636 move second child to first child ( temp int16_t) 0:636 'var25' ( temp int16_t) 0:636 Constant: 0:636 25 (const int16_t) 0:637 Sequence 0:637 move second child to first child ( temp 2-component vector of int8_t) 0:637 'var26' ( temp 2-component vector of int8_t) 0:637 Constant: 0:637 26 (const int8_t) 0:637 26 (const int8_t) 0:638 Sequence 0:638 move second child to first child ( temp 2-component vector of int16_t) 0:638 'var27' ( temp 2-component vector of int16_t) 0:638 Constant: 0:638 27 (const int16_t) 0:638 27 (const int16_t) 0:639 Sequence 0:639 move second child to first child ( temp 3-component vector of int8_t) 0:639 'var28' ( temp 3-component vector of int8_t) 0:639 Constant: 0:639 28 (const int8_t) 0:639 28 (const int8_t) 0:639 28 (const int8_t) 0:640 Sequence 0:640 move second child to first child ( temp 3-component vector of int16_t) 0:640 'var29' ( temp 3-component vector of int16_t) 0:640 Constant: 0:640 29 (const int16_t) 0:640 29 (const int16_t) 0:640 29 (const int16_t) 0:641 Sequence 0:641 move second child to first child ( temp 4-component vector of int8_t) 0:641 'var30' ( temp 4-component vector of int8_t) 0:641 Constant: 0:641 30 (const int8_t) 0:641 30 (const int8_t) 0:641 30 (const int8_t) 0:641 30 (const int8_t) 0:642 Sequence 0:642 move second child to first child ( temp 4-component vector of int16_t) 0:642 'var31' ( temp 4-component vector of int16_t) 0:642 Constant: 0:642 31 (const int16_t) 0:642 31 (const int16_t) 0:642 31 (const int16_t) 0:642 31 (const int16_t) 0:643 Sequence 0:643 move second child to first child ( temp uint8_t) 0:643 'var32' ( temp uint8_t) 0:643 Constant: 0:643 32 (const uint8_t) 0:644 Sequence 0:644 move second child to first child ( temp uint16_t) 0:644 'var33' ( temp uint16_t) 0:644 Constant: 0:644 33 (const uint16_t) 0:645 Sequence 0:645 move second child to first child ( temp 2-component vector of uint8_t) 0:645 'var34' ( temp 2-component vector of uint8_t) 0:645 Constant: 0:645 34 (const uint8_t) 0:645 34 (const uint8_t) 0:646 Sequence 0:646 move second child to first child ( temp 2-component vector of uint16_t) 0:646 'var35' ( temp 2-component vector of uint16_t) 0:646 Constant: 0:646 35 (const uint16_t) 0:646 35 (const uint16_t) 0:647 Sequence 0:647 move second child to first child ( temp 3-component vector of uint8_t) 0:647 'var36' ( temp 3-component vector of uint8_t) 0:647 Constant: 0:647 36 (const uint8_t) 0:647 36 (const uint8_t) 0:647 36 (const uint8_t) 0:648 Sequence 0:648 move second child to first child ( temp 4-component vector of uint8_t) 0:648 'var37' ( temp 4-component vector of uint8_t) 0:648 Constant: 0:648 37 (const uint8_t) 0:648 37 (const uint8_t) 0:648 37 (const uint8_t) 0:648 37 (const uint8_t) 0:649 Sequence 0:649 move second child to first child ( temp float16_t) 0:649 'var38' ( temp float16_t) 0:649 Constant: 0:649 38.000000 0:650 Sequence 0:650 move second child to first child ( temp 2-component vector of float16_t) 0:650 'var39' ( temp 2-component vector of float16_t) 0:650 Constant: 0:650 39.000000 0:650 39.000000 0:651 Sequence 0:651 move second child to first child ( temp 3-component vector of float16_t) 0:651 'var40' ( temp 3-component vector of float16_t) 0:651 Constant: 0:651 40.000000 0:651 40.000000 0:651 40.000000 0:652 Sequence 0:652 move second child to first child ( temp 4-component vector of float16_t) 0:652 'var41' ( temp 4-component vector of float16_t) 0:652 Constant: 0:652 41.000000 0:652 41.000000 0:652 41.000000 0:652 41.000000 0:655 Sequence 0:655 move second child to first child ( temp uint) 0:655 'var42' ( temp uint) 0:655 add ( temp uint) 0:655 'var1' ( temp uint) 0:655 Convert int to uint ( temp uint) 0:655 'var0' ( temp int) 0:656 Sequence 0:656 move second child to first child ( temp int64_t) 0:656 'var43' ( temp int64_t) 0:656 add ( temp int64_t) 0:656 'var2' ( temp int64_t) 0:656 Convert int to int64_t ( temp int64_t) 0:656 'var0' ( temp int) 0:657 Sequence 0:657 move second child to first child ( temp uint64_t) 0:657 'var44' ( temp uint64_t) 0:657 add ( temp uint64_t) 0:657 'var3' ( temp uint64_t) 0:657 Convert int to uint64_t ( temp uint64_t) 0:657 'var0' ( temp int) 0:658 Sequence 0:658 move second child to first child ( temp float) 0:658 'var45' ( temp float) 0:658 add ( temp float) 0:658 'var4' ( temp float) 0:658 Convert int to float ( temp float) 0:658 'var0' ( temp int) 0:659 Sequence 0:659 move second child to first child ( temp double) 0:659 'var46' ( temp double) 0:659 add ( temp double) 0:659 'var5' ( temp double) 0:659 Convert int to double ( temp double) 0:659 'var0' ( temp int) 0:661 Sequence 0:661 move second child to first child ( temp 2-component vector of uint) 0:661 'var47' ( temp 2-component vector of uint) 0:661 add ( temp 2-component vector of uint) 0:661 'var7' ( temp 2-component vector of uint) 0:661 Convert int to uint ( temp 2-component vector of uint) 0:661 'var6' ( temp 2-component vector of int) 0:662 Sequence 0:662 move second child to first child ( temp 2-component vector of int64_t) 0:662 'var48' ( temp 2-component vector of int64_t) 0:662 add ( temp 2-component vector of int64_t) 0:662 'var8' ( temp 2-component vector of int64_t) 0:662 Convert int to int64_t ( temp 2-component vector of int64_t) 0:662 'var6' ( temp 2-component vector of int) 0:663 Sequence 0:663 move second child to first child ( temp 2-component vector of uint64_t) 0:663 'var49' ( temp 2-component vector of uint64_t) 0:663 add ( temp 2-component vector of uint64_t) 0:663 'var9' ( temp 2-component vector of uint64_t) 0:663 Convert int to uint64_t ( temp 2-component vector of uint64_t) 0:663 'var6' ( temp 2-component vector of int) 0:664 Sequence 0:664 move second child to first child ( temp 2-component vector of float) 0:664 'var50' ( temp 2-component vector of float) 0:664 add ( temp 2-component vector of float) 0:664 'var10' ( temp 2-component vector of float) 0:664 Convert int to float ( temp 2-component vector of float) 0:664 'var6' ( temp 2-component vector of int) 0:665 Sequence 0:665 move second child to first child ( temp 2-component vector of double) 0:665 'var51' ( temp 2-component vector of double) 0:665 add ( temp 2-component vector of double) 0:665 'var11' ( temp 2-component vector of double) 0:665 Convert int to double ( temp 2-component vector of double) 0:665 'var6' ( temp 2-component vector of int) 0:667 Sequence 0:667 move second child to first child ( temp 3-component vector of uint) 0:667 'var52' ( temp 3-component vector of uint) 0:667 add ( temp 3-component vector of uint) 0:667 'var13' ( temp 3-component vector of uint) 0:667 Convert int to uint ( temp 3-component vector of uint) 0:667 'var12' ( temp 3-component vector of int) 0:668 Sequence 0:668 move second child to first child ( temp 3-component vector of int64_t) 0:668 'var53' ( temp 3-component vector of int64_t) 0:668 add ( temp 3-component vector of int64_t) 0:668 'var14' ( temp 3-component vector of int64_t) 0:668 Convert int to int64_t ( temp 3-component vector of int64_t) 0:668 'var12' ( temp 3-component vector of int) 0:669 Sequence 0:669 move second child to first child ( temp 3-component vector of uint64_t) 0:669 'var54' ( temp 3-component vector of uint64_t) 0:669 add ( temp 3-component vector of uint64_t) 0:669 'var15' ( temp 3-component vector of uint64_t) 0:669 Convert int to uint64_t ( temp 3-component vector of uint64_t) 0:669 'var12' ( temp 3-component vector of int) 0:670 Sequence 0:670 move second child to first child ( temp 3-component vector of float) 0:670 'var55' ( temp 3-component vector of float) 0:670 add ( temp 3-component vector of float) 0:670 'var16' ( temp 3-component vector of float) 0:670 Convert int to float ( temp 3-component vector of float) 0:670 'var12' ( temp 3-component vector of int) 0:671 Sequence 0:671 move second child to first child ( temp 3-component vector of double) 0:671 'var56' ( temp 3-component vector of double) 0:671 add ( temp 3-component vector of double) 0:671 'var17' ( temp 3-component vector of double) 0:671 Convert int to double ( temp 3-component vector of double) 0:671 'var12' ( temp 3-component vector of int) 0:673 Sequence 0:673 move second child to first child ( temp 4-component vector of uint) 0:673 'var57' ( temp 4-component vector of uint) 0:673 add ( temp 4-component vector of uint) 0:673 'var19' ( temp 4-component vector of uint) 0:673 Convert int to uint ( temp 4-component vector of uint) 0:673 'var18' ( temp 4-component vector of int) 0:674 Sequence 0:674 move second child to first child ( temp 4-component vector of int64_t) 0:674 'var58' ( temp 4-component vector of int64_t) 0:674 add ( temp 4-component vector of int64_t) 0:674 'var20' ( temp 4-component vector of int64_t) 0:674 Convert int to int64_t ( temp 4-component vector of int64_t) 0:674 'var18' ( temp 4-component vector of int) 0:675 Sequence 0:675 move second child to first child ( temp 4-component vector of uint64_t) 0:675 'var59' ( temp 4-component vector of uint64_t) 0:675 add ( temp 4-component vector of uint64_t) 0:675 'var21' ( temp 4-component vector of uint64_t) 0:675 Convert int to uint64_t ( temp 4-component vector of uint64_t) 0:675 'var18' ( temp 4-component vector of int) 0:676 Sequence 0:676 move second child to first child ( temp 4-component vector of float) 0:676 'var60' ( temp 4-component vector of float) 0:676 add ( temp 4-component vector of float) 0:676 'var22' ( temp 4-component vector of float) 0:676 Convert int to float ( temp 4-component vector of float) 0:676 'var18' ( temp 4-component vector of int) 0:677 Sequence 0:677 move second child to first child ( temp 4-component vector of double) 0:677 'var61' ( temp 4-component vector of double) 0:677 add ( temp 4-component vector of double) 0:677 'var23' ( temp 4-component vector of double) 0:677 Convert int to double ( temp 4-component vector of double) 0:677 'var18' ( temp 4-component vector of int) 0:679 Sequence 0:679 move second child to first child ( temp int) 0:679 'var62' ( temp int) 0:679 add ( temp int) 0:679 'var0' ( temp int) 0:679 Convert int8_t to int ( temp int) 0:679 'var24' ( temp int8_t) 0:680 Sequence 0:680 move second child to first child ( temp int64_t) 0:680 'var63' ( temp int64_t) 0:680 add ( temp int64_t) 0:680 'var2' ( temp int64_t) 0:680 Convert int8_t to int64_t ( temp int64_t) 0:680 'var24' ( temp int8_t) 0:681 Sequence 0:681 move second child to first child ( temp uint) 0:681 'var64' ( temp uint) 0:681 add ( temp uint) 0:681 'var1' ( temp uint) 0:681 Convert int8_t to uint ( temp uint) 0:681 'var24' ( temp int8_t) 0:682 Sequence 0:682 move second child to first child ( temp uint64_t) 0:682 'var65' ( temp uint64_t) 0:682 add ( temp uint64_t) 0:682 'var3' ( temp uint64_t) 0:682 Convert int8_t to uint64_t ( temp uint64_t) 0:682 'var24' ( temp int8_t) 0:683 Sequence 0:683 move second child to first child ( temp float) 0:683 'var66' ( temp float) 0:683 add ( temp float) 0:683 'var4' ( temp float) 0:683 Convert int8_t to float ( temp float) 0:683 'var24' ( temp int8_t) 0:684 Sequence 0:684 move second child to first child ( temp double) 0:684 'var67' ( temp double) 0:684 add ( temp double) 0:684 'var5' ( temp double) 0:684 Convert int8_t to double ( temp double) 0:684 'var24' ( temp int8_t) 0:686 Sequence 0:686 move second child to first child ( temp int) 0:686 'var68' ( temp int) 0:686 add ( temp int) 0:686 'var0' ( temp int) 0:686 Convert int16_t to int ( temp int) 0:686 'var25' ( temp int16_t) 0:687 Sequence 0:687 move second child to first child ( temp int64_t) 0:687 'var69' ( temp int64_t) 0:687 add ( temp int64_t) 0:687 'var2' ( temp int64_t) 0:687 Convert int16_t to int64_t ( temp int64_t) 0:687 'var25' ( temp int16_t) 0:688 Sequence 0:688 move second child to first child ( temp uint) 0:688 'var70' ( temp uint) 0:688 add ( temp uint) 0:688 'var1' ( temp uint) 0:688 Convert int16_t to uint ( temp uint) 0:688 'var25' ( temp int16_t) 0:689 Sequence 0:689 move second child to first child ( temp uint64_t) 0:689 'var71' ( temp uint64_t) 0:689 add ( temp uint64_t) 0:689 'var3' ( temp uint64_t) 0:689 Convert int16_t to uint64_t ( temp uint64_t) 0:689 'var25' ( temp int16_t) 0:690 Sequence 0:690 move second child to first child ( temp float) 0:690 'var72' ( temp float) 0:690 add ( temp float) 0:690 'var4' ( temp float) 0:690 Convert int16_t to float ( temp float) 0:690 'var25' ( temp int16_t) 0:691 Sequence 0:691 move second child to first child ( temp double) 0:691 'var73' ( temp double) 0:691 add ( temp double) 0:691 'var5' ( temp double) 0:691 Convert int16_t to double ( temp double) 0:691 'var25' ( temp int16_t) 0:693 Sequence 0:693 move second child to first child ( temp 2-component vector of int) 0:693 'var74' ( temp 2-component vector of int) 0:693 add ( temp 2-component vector of int) 0:693 'var6' ( temp 2-component vector of int) 0:693 Convert int8_t to int ( temp 2-component vector of int) 0:693 'var26' ( temp 2-component vector of int8_t) 0:694 Sequence 0:694 move second child to first child ( temp 2-component vector of int64_t) 0:694 'var75' ( temp 2-component vector of int64_t) 0:694 add ( temp 2-component vector of int64_t) 0:694 'var8' ( temp 2-component vector of int64_t) 0:694 Convert int8_t to int64_t ( temp 2-component vector of int64_t) 0:694 'var26' ( temp 2-component vector of int8_t) 0:695 Sequence 0:695 move second child to first child ( temp 2-component vector of uint) 0:695 'var76' ( temp 2-component vector of uint) 0:695 add ( temp 2-component vector of uint) 0:695 'var7' ( temp 2-component vector of uint) 0:695 Convert int8_t to uint ( temp 2-component vector of uint) 0:695 'var26' ( temp 2-component vector of int8_t) 0:696 Sequence 0:696 move second child to first child ( temp 2-component vector of uint64_t) 0:696 'var77' ( temp 2-component vector of uint64_t) 0:696 add ( temp 2-component vector of uint64_t) 0:696 'var9' ( temp 2-component vector of uint64_t) 0:696 Convert int8_t to uint64_t ( temp 2-component vector of uint64_t) 0:696 'var26' ( temp 2-component vector of int8_t) 0:697 Sequence 0:697 move second child to first child ( temp 2-component vector of float) 0:697 'var78' ( temp 2-component vector of float) 0:697 add ( temp 2-component vector of float) 0:697 'var10' ( temp 2-component vector of float) 0:697 Convert int8_t to float ( temp 2-component vector of float) 0:697 'var26' ( temp 2-component vector of int8_t) 0:698 Sequence 0:698 move second child to first child ( temp 2-component vector of double) 0:698 'var79' ( temp 2-component vector of double) 0:698 add ( temp 2-component vector of double) 0:698 'var11' ( temp 2-component vector of double) 0:698 Convert int8_t to double ( temp 2-component vector of double) 0:698 'var26' ( temp 2-component vector of int8_t) 0:700 Sequence 0:700 move second child to first child ( temp 2-component vector of int) 0:700 'var80' ( temp 2-component vector of int) 0:700 add ( temp 2-component vector of int) 0:700 'var6' ( temp 2-component vector of int) 0:700 Convert int16_t to int ( temp 2-component vector of int) 0:700 'var27' ( temp 2-component vector of int16_t) 0:701 Sequence 0:701 move second child to first child ( temp 2-component vector of int64_t) 0:701 'var81' ( temp 2-component vector of int64_t) 0:701 add ( temp 2-component vector of int64_t) 0:701 'var8' ( temp 2-component vector of int64_t) 0:701 Convert int16_t to int64_t ( temp 2-component vector of int64_t) 0:701 'var27' ( temp 2-component vector of int16_t) 0:702 Sequence 0:702 move second child to first child ( temp 2-component vector of uint) 0:702 'var82' ( temp 2-component vector of uint) 0:702 add ( temp 2-component vector of uint) 0:702 'var7' ( temp 2-component vector of uint) 0:702 Convert int16_t to uint ( temp 2-component vector of uint) 0:702 'var27' ( temp 2-component vector of int16_t) 0:703 Sequence 0:703 move second child to first child ( temp 2-component vector of uint64_t) 0:703 'var83' ( temp 2-component vector of uint64_t) 0:703 add ( temp 2-component vector of uint64_t) 0:703 'var9' ( temp 2-component vector of uint64_t) 0:703 Convert int16_t to uint64_t ( temp 2-component vector of uint64_t) 0:703 'var27' ( temp 2-component vector of int16_t) 0:704 Sequence 0:704 move second child to first child ( temp 2-component vector of float) 0:704 'var84' ( temp 2-component vector of float) 0:704 add ( temp 2-component vector of float) 0:704 'var10' ( temp 2-component vector of float) 0:704 Convert int16_t to float ( temp 2-component vector of float) 0:704 'var27' ( temp 2-component vector of int16_t) 0:705 Sequence 0:705 move second child to first child ( temp 2-component vector of double) 0:705 'var85' ( temp 2-component vector of double) 0:705 add ( temp 2-component vector of double) 0:705 'var11' ( temp 2-component vector of double) 0:705 Convert int16_t to double ( temp 2-component vector of double) 0:705 'var27' ( temp 2-component vector of int16_t) 0:707 Sequence 0:707 move second child to first child ( temp 3-component vector of int) 0:707 'var86' ( temp 3-component vector of int) 0:707 add ( temp 3-component vector of int) 0:707 'var12' ( temp 3-component vector of int) 0:707 Convert int8_t to int ( temp 3-component vector of int) 0:707 'var28' ( temp 3-component vector of int8_t) 0:708 Sequence 0:708 move second child to first child ( temp 3-component vector of int64_t) 0:708 'var87' ( temp 3-component vector of int64_t) 0:708 add ( temp 3-component vector of int64_t) 0:708 'var14' ( temp 3-component vector of int64_t) 0:708 Convert int8_t to int64_t ( temp 3-component vector of int64_t) 0:708 'var28' ( temp 3-component vector of int8_t) 0:709 Sequence 0:709 move second child to first child ( temp 3-component vector of uint) 0:709 'var88' ( temp 3-component vector of uint) 0:709 add ( temp 3-component vector of uint) 0:709 'var13' ( temp 3-component vector of uint) 0:709 Convert int8_t to uint ( temp 3-component vector of uint) 0:709 'var28' ( temp 3-component vector of int8_t) 0:710 Sequence 0:710 move second child to first child ( temp 3-component vector of uint64_t) 0:710 'var89' ( temp 3-component vector of uint64_t) 0:710 add ( temp 3-component vector of uint64_t) 0:710 'var15' ( temp 3-component vector of uint64_t) 0:710 Convert int8_t to uint64_t ( temp 3-component vector of uint64_t) 0:710 'var28' ( temp 3-component vector of int8_t) 0:711 Sequence 0:711 move second child to first child ( temp 3-component vector of float) 0:711 'var90' ( temp 3-component vector of float) 0:711 add ( temp 3-component vector of float) 0:711 'var16' ( temp 3-component vector of float) 0:711 Convert int8_t to float ( temp 3-component vector of float) 0:711 'var28' ( temp 3-component vector of int8_t) 0:712 Sequence 0:712 move second child to first child ( temp 3-component vector of double) 0:712 'var91' ( temp 3-component vector of double) 0:712 add ( temp 3-component vector of double) 0:712 'var17' ( temp 3-component vector of double) 0:712 Convert int8_t to double ( temp 3-component vector of double) 0:712 'var28' ( temp 3-component vector of int8_t) 0:714 Sequence 0:714 move second child to first child ( temp 3-component vector of uint) 0:714 'var92' ( temp 3-component vector of uint) 0:714 add ( temp 3-component vector of uint) 0:714 'var13' ( temp 3-component vector of uint) 0:714 Convert int16_t to uint ( temp 3-component vector of uint) 0:714 'var29' ( temp 3-component vector of int16_t) 0:715 Sequence 0:715 move second child to first child ( temp 3-component vector of uint64_t) 0:715 'var93' ( temp 3-component vector of uint64_t) 0:715 add ( temp 3-component vector of uint64_t) 0:715 'var15' ( temp 3-component vector of uint64_t) 0:715 Convert int16_t to uint64_t ( temp 3-component vector of uint64_t) 0:715 'var29' ( temp 3-component vector of int16_t) 0:716 Sequence 0:716 move second child to first child ( temp 3-component vector of float) 0:716 'var94' ( temp 3-component vector of float) 0:716 add ( temp 3-component vector of float) 0:716 'var16' ( temp 3-component vector of float) 0:716 Convert int16_t to float ( temp 3-component vector of float) 0:716 'var29' ( temp 3-component vector of int16_t) 0:717 Sequence 0:717 move second child to first child ( temp 3-component vector of double) 0:717 'var95' ( temp 3-component vector of double) 0:717 add ( temp 3-component vector of double) 0:717 'var17' ( temp 3-component vector of double) 0:717 Convert int16_t to double ( temp 3-component vector of double) 0:717 'var29' ( temp 3-component vector of int16_t) 0:719 Sequence 0:719 move second child to first child ( temp 4-component vector of int) 0:719 'var96' ( temp 4-component vector of int) 0:719 add ( temp 4-component vector of int) 0:719 'var18' ( temp 4-component vector of int) 0:719 Convert int8_t to int ( temp 4-component vector of int) 0:719 'var30' ( temp 4-component vector of int8_t) 0:720 Sequence 0:720 move second child to first child ( temp 4-component vector of int64_t) 0:720 'var97' ( temp 4-component vector of int64_t) 0:720 add ( temp 4-component vector of int64_t) 0:720 'var20' ( temp 4-component vector of int64_t) 0:720 Convert int8_t to int64_t ( temp 4-component vector of int64_t) 0:720 'var30' ( temp 4-component vector of int8_t) 0:721 Sequence 0:721 move second child to first child ( temp 4-component vector of uint) 0:721 'var98' ( temp 4-component vector of uint) 0:721 add ( temp 4-component vector of uint) 0:721 'var19' ( temp 4-component vector of uint) 0:721 Convert int8_t to uint ( temp 4-component vector of uint) 0:721 'var30' ( temp 4-component vector of int8_t) 0:722 Sequence 0:722 move second child to first child ( temp 4-component vector of uint64_t) 0:722 'var99' ( temp 4-component vector of uint64_t) 0:722 add ( temp 4-component vector of uint64_t) 0:722 'var21' ( temp 4-component vector of uint64_t) 0:722 Convert int8_t to uint64_t ( temp 4-component vector of uint64_t) 0:722 'var30' ( temp 4-component vector of int8_t) 0:723 Sequence 0:723 move second child to first child ( temp 4-component vector of float) 0:723 'var100' ( temp 4-component vector of float) 0:723 add ( temp 4-component vector of float) 0:723 'var22' ( temp 4-component vector of float) 0:723 Convert int8_t to float ( temp 4-component vector of float) 0:723 'var30' ( temp 4-component vector of int8_t) 0:724 Sequence 0:724 move second child to first child ( temp 4-component vector of double) 0:724 'var101' ( temp 4-component vector of double) 0:724 add ( temp 4-component vector of double) 0:724 'var23' ( temp 4-component vector of double) 0:724 Convert int8_t to double ( temp 4-component vector of double) 0:724 'var30' ( temp 4-component vector of int8_t) 0:726 Sequence 0:726 move second child to first child ( temp 4-component vector of uint) 0:726 'var102' ( temp 4-component vector of uint) 0:726 add ( temp 4-component vector of uint) 0:726 'var19' ( temp 4-component vector of uint) 0:726 Convert int16_t to uint ( temp 4-component vector of uint) 0:726 'var31' ( temp 4-component vector of int16_t) 0:727 Sequence 0:727 move second child to first child ( temp 4-component vector of uint64_t) 0:727 'var103' ( temp 4-component vector of uint64_t) 0:727 add ( temp 4-component vector of uint64_t) 0:727 'var21' ( temp 4-component vector of uint64_t) 0:727 Convert int16_t to uint64_t ( temp 4-component vector of uint64_t) 0:727 'var31' ( temp 4-component vector of int16_t) 0:728 Sequence 0:728 move second child to first child ( temp 4-component vector of float) 0:728 'var104' ( temp 4-component vector of float) 0:728 add ( temp 4-component vector of float) 0:728 'var22' ( temp 4-component vector of float) 0:728 Convert int16_t to float ( temp 4-component vector of float) 0:728 'var31' ( temp 4-component vector of int16_t) 0:729 Sequence 0:729 move second child to first child ( temp 4-component vector of double) 0:729 'var105' ( temp 4-component vector of double) 0:729 add ( temp 4-component vector of double) 0:729 'var23' ( temp 4-component vector of double) 0:729 Convert int16_t to double ( temp 4-component vector of double) 0:729 'var31' ( temp 4-component vector of int16_t) 0:731 Sequence 0:731 move second child to first child ( temp uint64_t) 0:731 'var106' ( temp uint64_t) 0:731 add ( temp uint64_t) 0:731 'var3' ( temp uint64_t) 0:731 Convert int64_t to uint64_t ( temp uint64_t) 0:731 'var2' ( temp int64_t) 0:732 Sequence 0:732 move second child to first child ( temp double) 0:732 'var107' ( temp double) 0:732 add ( temp double) 0:732 'var5' ( temp double) 0:732 Convert int64_t to double ( temp double) 0:732 'var2' ( temp int64_t) 0:734 Sequence 0:734 move second child to first child ( temp 2-component vector of uint64_t) 0:734 'var108' ( temp 2-component vector of uint64_t) 0:734 add ( temp 2-component vector of uint64_t) 0:734 'var9' ( temp 2-component vector of uint64_t) 0:734 Convert int64_t to uint64_t ( temp 2-component vector of uint64_t) 0:734 'var8' ( temp 2-component vector of int64_t) 0:735 Sequence 0:735 move second child to first child ( temp 2-component vector of double) 0:735 'var109' ( temp 2-component vector of double) 0:735 add ( temp 2-component vector of double) 0:735 'var11' ( temp 2-component vector of double) 0:735 Convert int64_t to double ( temp 2-component vector of double) 0:735 'var8' ( temp 2-component vector of int64_t) 0:737 Sequence 0:737 move second child to first child ( temp 3-component vector of uint64_t) 0:737 'var110' ( temp 3-component vector of uint64_t) 0:737 add ( temp 3-component vector of uint64_t) 0:737 'var15' ( temp 3-component vector of uint64_t) 0:737 Convert int64_t to uint64_t ( temp 3-component vector of uint64_t) 0:737 'var14' ( temp 3-component vector of int64_t) 0:738 Sequence 0:738 move second child to first child ( temp 3-component vector of double) 0:738 'var111' ( temp 3-component vector of double) 0:738 add ( temp 3-component vector of double) 0:738 'var17' ( temp 3-component vector of double) 0:738 Convert int64_t to double ( temp 3-component vector of double) 0:738 'var14' ( temp 3-component vector of int64_t) 0:740 Sequence 0:740 move second child to first child ( temp 4-component vector of uint64_t) 0:740 'var112' ( temp 4-component vector of uint64_t) 0:740 add ( temp 4-component vector of uint64_t) 0:740 'var21' ( temp 4-component vector of uint64_t) 0:740 Convert int64_t to uint64_t ( temp 4-component vector of uint64_t) 0:740 'var20' ( temp 4-component vector of int64_t) 0:741 Sequence 0:741 move second child to first child ( temp 4-component vector of double) 0:741 'var113' ( temp 4-component vector of double) 0:741 add ( temp 4-component vector of double) 0:741 'var23' ( temp 4-component vector of double) 0:741 Convert int64_t to double ( temp 4-component vector of double) 0:741 'var20' ( temp 4-component vector of int64_t) 0:743 Sequence 0:743 move second child to first child ( temp uint64_t) 0:743 'var114' ( temp uint64_t) 0:743 add ( temp uint64_t) 0:743 'var3' ( temp uint64_t) 0:743 Convert uint to uint64_t ( temp uint64_t) 0:743 'var1' ( temp uint) 0:744 Sequence 0:744 move second child to first child ( temp float) 0:744 'var115' ( temp float) 0:744 add ( temp float) 0:744 'var4' ( temp float) 0:744 Convert uint to float ( temp float) 0:744 'var1' ( temp uint) 0:745 Sequence 0:745 move second child to first child ( temp double) 0:745 'var116' ( temp double) 0:745 add ( temp double) 0:745 'var5' ( temp double) 0:745 Convert uint to double ( temp double) 0:745 'var1' ( temp uint) 0:747 Sequence 0:747 move second child to first child ( temp 2-component vector of uint64_t) 0:747 'var117' ( temp 2-component vector of uint64_t) 0:747 add ( temp 2-component vector of uint64_t) 0:747 'var9' ( temp 2-component vector of uint64_t) 0:747 Convert uint to uint64_t ( temp 2-component vector of uint64_t) 0:747 'var7' ( temp 2-component vector of uint) 0:748 Sequence 0:748 move second child to first child ( temp 2-component vector of float) 0:748 'var118' ( temp 2-component vector of float) 0:748 add ( temp 2-component vector of float) 0:748 'var10' ( temp 2-component vector of float) 0:748 Convert uint to float ( temp 2-component vector of float) 0:748 'var7' ( temp 2-component vector of uint) 0:749 Sequence 0:749 move second child to first child ( temp 2-component vector of double) 0:749 'var119' ( temp 2-component vector of double) 0:749 add ( temp 2-component vector of double) 0:749 'var11' ( temp 2-component vector of double) 0:749 Convert uint to double ( temp 2-component vector of double) 0:749 'var7' ( temp 2-component vector of uint) 0:751 Sequence 0:751 move second child to first child ( temp 3-component vector of uint64_t) 0:751 'var120' ( temp 3-component vector of uint64_t) 0:751 add ( temp 3-component vector of uint64_t) 0:751 'var15' ( temp 3-component vector of uint64_t) 0:751 Convert uint to uint64_t ( temp 3-component vector of uint64_t) 0:751 'var13' ( temp 3-component vector of uint) 0:752 Sequence 0:752 move second child to first child ( temp 3-component vector of float) 0:752 'var121' ( temp 3-component vector of float) 0:752 add ( temp 3-component vector of float) 0:752 'var16' ( temp 3-component vector of float) 0:752 Convert uint to float ( temp 3-component vector of float) 0:752 'var13' ( temp 3-component vector of uint) 0:753 Sequence 0:753 move second child to first child ( temp 3-component vector of double) 0:753 'var122' ( temp 3-component vector of double) 0:753 add ( temp 3-component vector of double) 0:753 'var17' ( temp 3-component vector of double) 0:753 Convert uint to double ( temp 3-component vector of double) 0:753 'var13' ( temp 3-component vector of uint) 0:755 Sequence 0:755 move second child to first child ( temp 4-component vector of uint64_t) 0:755 'var123' ( temp 4-component vector of uint64_t) 0:755 add ( temp 4-component vector of uint64_t) 0:755 'var21' ( temp 4-component vector of uint64_t) 0:755 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:755 'var19' ( temp 4-component vector of uint) 0:756 Sequence 0:756 move second child to first child ( temp 4-component vector of float) 0:756 'var124' ( temp 4-component vector of float) 0:756 add ( temp 4-component vector of float) 0:756 'var22' ( temp 4-component vector of float) 0:756 Convert uint to float ( temp 4-component vector of float) 0:756 'var19' ( temp 4-component vector of uint) 0:757 Sequence 0:757 move second child to first child ( temp 4-component vector of double) 0:757 'var125' ( temp 4-component vector of double) 0:757 add ( temp 4-component vector of double) 0:757 'var23' ( temp 4-component vector of double) 0:757 Convert uint to double ( temp 4-component vector of double) 0:757 'var19' ( temp 4-component vector of uint) 0:759 Sequence 0:759 move second child to first child ( temp uint) 0:759 'var126' ( temp uint) 0:759 add ( temp uint) 0:759 'var1' ( temp uint) 0:759 Convert uint8_t to uint ( temp uint) 0:759 'var32' ( temp uint8_t) 0:760 Sequence 0:760 move second child to first child ( temp uint64_t) 0:760 'var127' ( temp uint64_t) 0:760 add ( temp uint64_t) 0:760 'var3' ( temp uint64_t) 0:760 Convert uint8_t to uint64_t ( temp uint64_t) 0:760 'var32' ( temp uint8_t) 0:761 Sequence 0:761 move second child to first child ( temp float) 0:761 'var128' ( temp float) 0:761 add ( temp float) 0:761 'var4' ( temp float) 0:761 Convert uint8_t to float ( temp float) 0:761 'var32' ( temp uint8_t) 0:762 Sequence 0:762 move second child to first child ( temp double) 0:762 'var129' ( temp double) 0:762 add ( temp double) 0:762 'var5' ( temp double) 0:762 Convert uint8_t to double ( temp double) 0:762 'var32' ( temp uint8_t) 0:764 Sequence 0:764 move second child to first child ( temp uint) 0:764 'var130' ( temp uint) 0:764 add ( temp uint) 0:764 'var1' ( temp uint) 0:764 Convert uint16_t to uint ( temp uint) 0:764 'var33' ( temp uint16_t) 0:765 Sequence 0:765 move second child to first child ( temp uint64_t) 0:765 'var131' ( temp uint64_t) 0:765 add ( temp uint64_t) 0:765 'var3' ( temp uint64_t) 0:765 Convert uint16_t to uint64_t ( temp uint64_t) 0:765 'var33' ( temp uint16_t) 0:766 Sequence 0:766 move second child to first child ( temp float) 0:766 'var132' ( temp float) 0:766 add ( temp float) 0:766 'var4' ( temp float) 0:766 Convert uint16_t to float ( temp float) 0:766 'var33' ( temp uint16_t) 0:767 Sequence 0:767 move second child to first child ( temp double) 0:767 'var133' ( temp double) 0:767 add ( temp double) 0:767 'var5' ( temp double) 0:767 Convert uint16_t to double ( temp double) 0:767 'var33' ( temp uint16_t) 0:769 Sequence 0:769 move second child to first child ( temp 2-component vector of uint) 0:769 'var134' ( temp 2-component vector of uint) 0:769 add ( temp 2-component vector of uint) 0:769 'var7' ( temp 2-component vector of uint) 0:769 Convert uint8_t to uint ( temp 2-component vector of uint) 0:769 'var34' ( temp 2-component vector of uint8_t) 0:770 Sequence 0:770 move second child to first child ( temp 2-component vector of uint64_t) 0:770 'var135' ( temp 2-component vector of uint64_t) 0:770 add ( temp 2-component vector of uint64_t) 0:770 'var9' ( temp 2-component vector of uint64_t) 0:770 Convert uint8_t to uint64_t ( temp 2-component vector of uint64_t) 0:770 'var34' ( temp 2-component vector of uint8_t) 0:771 Sequence 0:771 move second child to first child ( temp 2-component vector of float) 0:771 'var136' ( temp 2-component vector of float) 0:771 add ( temp 2-component vector of float) 0:771 'var10' ( temp 2-component vector of float) 0:771 Convert uint8_t to float ( temp 2-component vector of float) 0:771 'var34' ( temp 2-component vector of uint8_t) 0:772 Sequence 0:772 move second child to first child ( temp 2-component vector of double) 0:772 'var137' ( temp 2-component vector of double) 0:772 add ( temp 2-component vector of double) 0:772 'var11' ( temp 2-component vector of double) 0:772 Convert uint8_t to double ( temp 2-component vector of double) 0:772 'var34' ( temp 2-component vector of uint8_t) 0:774 Sequence 0:774 move second child to first child ( temp 2-component vector of uint) 0:774 'var138' ( temp 2-component vector of uint) 0:774 add ( temp 2-component vector of uint) 0:774 'var7' ( temp 2-component vector of uint) 0:774 Convert uint16_t to uint ( temp 2-component vector of uint) 0:774 'var35' ( temp 2-component vector of uint16_t) 0:775 Sequence 0:775 move second child to first child ( temp 2-component vector of uint64_t) 0:775 'var139' ( temp 2-component vector of uint64_t) 0:775 add ( temp 2-component vector of uint64_t) 0:775 'var9' ( temp 2-component vector of uint64_t) 0:775 Convert uint16_t to uint64_t ( temp 2-component vector of uint64_t) 0:775 'var35' ( temp 2-component vector of uint16_t) 0:776 Sequence 0:776 move second child to first child ( temp 2-component vector of float) 0:776 'var140' ( temp 2-component vector of float) 0:776 add ( temp 2-component vector of float) 0:776 'var10' ( temp 2-component vector of float) 0:776 Convert uint16_t to float ( temp 2-component vector of float) 0:776 'var35' ( temp 2-component vector of uint16_t) 0:777 Sequence 0:777 move second child to first child ( temp 2-component vector of double) 0:777 'var141' ( temp 2-component vector of double) 0:777 add ( temp 2-component vector of double) 0:777 'var11' ( temp 2-component vector of double) 0:777 Convert uint16_t to double ( temp 2-component vector of double) 0:777 'var35' ( temp 2-component vector of uint16_t) 0:779 Sequence 0:779 move second child to first child ( temp 3-component vector of uint) 0:779 'var142' ( temp 3-component vector of uint) 0:779 add ( temp 3-component vector of uint) 0:779 'var13' ( temp 3-component vector of uint) 0:779 Convert uint8_t to uint ( temp 3-component vector of uint) 0:779 'var36' ( temp 3-component vector of uint8_t) 0:780 Sequence 0:780 move second child to first child ( temp 3-component vector of uint64_t) 0:780 'var143' ( temp 3-component vector of uint64_t) 0:780 add ( temp 3-component vector of uint64_t) 0:780 'var15' ( temp 3-component vector of uint64_t) 0:780 Convert uint8_t to uint64_t ( temp 3-component vector of uint64_t) 0:780 'var36' ( temp 3-component vector of uint8_t) 0:781 Sequence 0:781 move second child to first child ( temp 3-component vector of float) 0:781 'var144' ( temp 3-component vector of float) 0:781 add ( temp 3-component vector of float) 0:781 'var16' ( temp 3-component vector of float) 0:781 Convert uint8_t to float ( temp 3-component vector of float) 0:781 'var36' ( temp 3-component vector of uint8_t) 0:782 Sequence 0:782 move second child to first child ( temp 3-component vector of double) 0:782 'var145' ( temp 3-component vector of double) 0:782 add ( temp 3-component vector of double) 0:782 'var17' ( temp 3-component vector of double) 0:782 Convert uint8_t to double ( temp 3-component vector of double) 0:782 'var36' ( temp 3-component vector of uint8_t) 0:784 Sequence 0:784 move second child to first child ( temp 4-component vector of uint) 0:784 'var146' ( temp 4-component vector of uint) 0:784 add ( temp 4-component vector of uint) 0:784 'var19' ( temp 4-component vector of uint) 0:784 Convert uint8_t to uint ( temp 4-component vector of uint) 0:784 'var37' ( temp 4-component vector of uint8_t) 0:785 Sequence 0:785 move second child to first child ( temp 4-component vector of uint64_t) 0:785 'var147' ( temp 4-component vector of uint64_t) 0:785 add ( temp 4-component vector of uint64_t) 0:785 'var21' ( temp 4-component vector of uint64_t) 0:785 Convert uint8_t to uint64_t ( temp 4-component vector of uint64_t) 0:785 'var37' ( temp 4-component vector of uint8_t) 0:786 Sequence 0:786 move second child to first child ( temp 4-component vector of float) 0:786 'var148' ( temp 4-component vector of float) 0:786 add ( temp 4-component vector of float) 0:786 'var22' ( temp 4-component vector of float) 0:786 Convert uint8_t to float ( temp 4-component vector of float) 0:786 'var37' ( temp 4-component vector of uint8_t) 0:787 Sequence 0:787 move second child to first child ( temp 4-component vector of double) 0:787 'var149' ( temp 4-component vector of double) 0:787 add ( temp 4-component vector of double) 0:787 'var23' ( temp 4-component vector of double) 0:787 Convert uint8_t to double ( temp 4-component vector of double) 0:787 'var37' ( temp 4-component vector of uint8_t) 0:789 Sequence 0:789 move second child to first child ( temp double) 0:789 'var150' ( temp double) 0:789 add ( temp double) 0:789 'var5' ( temp double) 0:789 Convert uint64_t to double ( temp double) 0:789 'var3' ( temp uint64_t) 0:791 Sequence 0:791 move second child to first child ( temp 2-component vector of double) 0:791 'var151' ( temp 2-component vector of double) 0:791 add ( temp 2-component vector of double) 0:791 'var11' ( temp 2-component vector of double) 0:791 Convert uint64_t to double ( temp 2-component vector of double) 0:791 'var9' ( temp 2-component vector of uint64_t) 0:793 Sequence 0:793 move second child to first child ( temp 3-component vector of double) 0:793 'var152' ( temp 3-component vector of double) 0:793 add ( temp 3-component vector of double) 0:793 'var17' ( temp 3-component vector of double) 0:793 Convert uint64_t to double ( temp 3-component vector of double) 0:793 'var15' ( temp 3-component vector of uint64_t) 0:795 Sequence 0:795 move second child to first child ( temp 4-component vector of double) 0:795 'var153' ( temp 4-component vector of double) 0:795 add ( temp 4-component vector of double) 0:795 'var23' ( temp 4-component vector of double) 0:795 Convert uint64_t to double ( temp 4-component vector of double) 0:795 'var21' ( temp 4-component vector of uint64_t) 0:797 Sequence 0:797 move second child to first child ( temp double) 0:797 'var154' ( temp double) 0:797 add ( temp double) 0:797 'var5' ( temp double) 0:797 Convert float to double ( temp double) 0:797 'var4' ( temp float) 0:799 Sequence 0:799 move second child to first child ( temp 2-component vector of double) 0:799 'var155' ( temp 2-component vector of double) 0:799 add ( temp 2-component vector of double) 0:799 'var11' ( temp 2-component vector of double) 0:799 Convert float to double ( temp 2-component vector of double) 0:799 'var10' ( temp 2-component vector of float) 0:801 Sequence 0:801 move second child to first child ( temp 3-component vector of double) 0:801 'var156' ( temp 3-component vector of double) 0:801 add ( temp 3-component vector of double) 0:801 'var17' ( temp 3-component vector of double) 0:801 Convert float to double ( temp 3-component vector of double) 0:801 'var16' ( temp 3-component vector of float) 0:803 Sequence 0:803 move second child to first child ( temp 4-component vector of double) 0:803 'var157' ( temp 4-component vector of double) 0:803 add ( temp 4-component vector of double) 0:803 'var23' ( temp 4-component vector of double) 0:803 Convert float to double ( temp 4-component vector of double) 0:803 'var22' ( temp 4-component vector of float) 0:805 Sequence 0:805 move second child to first child ( temp float) 0:805 'var158' ( temp float) 0:805 add ( temp float) 0:805 'var4' ( temp float) 0:805 Convert float16_t to float ( temp float) 0:805 'var38' ( temp float16_t) 0:806 Sequence 0:806 move second child to first child ( temp double) 0:806 'var159' ( temp double) 0:806 add ( temp double) 0:806 'var5' ( temp double) 0:806 Convert float16_t to double ( temp double) 0:806 'var38' ( temp float16_t) 0:808 Sequence 0:808 move second child to first child ( temp 2-component vector of float) 0:808 'var160' ( temp 2-component vector of float) 0:808 add ( temp 2-component vector of float) 0:808 'var10' ( temp 2-component vector of float) 0:808 Convert float16_t to float ( temp 2-component vector of float) 0:808 'var39' ( temp 2-component vector of float16_t) 0:809 Sequence 0:809 move second child to first child ( temp 2-component vector of double) 0:809 'var161' ( temp 2-component vector of double) 0:809 add ( temp 2-component vector of double) 0:809 'var11' ( temp 2-component vector of double) 0:809 Convert float16_t to double ( temp 2-component vector of double) 0:809 'var39' ( temp 2-component vector of float16_t) 0:811 Sequence 0:811 move second child to first child ( temp 3-component vector of float) 0:811 'var162' ( temp 3-component vector of float) 0:811 add ( temp 3-component vector of float) 0:811 'var16' ( temp 3-component vector of float) 0:811 Convert float16_t to float ( temp 3-component vector of float) 0:811 'var40' ( temp 3-component vector of float16_t) 0:812 Sequence 0:812 move second child to first child ( temp 3-component vector of double) 0:812 'var163' ( temp 3-component vector of double) 0:812 add ( temp 3-component vector of double) 0:812 'var17' ( temp 3-component vector of double) 0:812 Convert float16_t to double ( temp 3-component vector of double) 0:812 'var40' ( temp 3-component vector of float16_t) 0:814 Sequence 0:814 move second child to first child ( temp 4-component vector of float) 0:814 'var164' ( temp 4-component vector of float) 0:814 add ( temp 4-component vector of float) 0:814 'var22' ( temp 4-component vector of float) 0:814 Convert float16_t to float ( temp 4-component vector of float) 0:814 'var41' ( temp 4-component vector of float16_t) 0:815 Sequence 0:815 move second child to first child ( temp 4-component vector of double) 0:815 'var165' ( temp 4-component vector of double) 0:815 add ( temp 4-component vector of double) 0:815 'var23' ( temp 4-component vector of double) 0:815 Convert float16_t to double ( temp 4-component vector of double) 0:815 'var41' ( temp 4-component vector of float16_t) 0:818 Sequence 0:818 move second child to first child ( temp uint) 0:818 'var166' ( temp uint) 0:818 subtract ( temp uint) 0:818 'var1' ( temp uint) 0:818 Convert int to uint ( temp uint) 0:818 'var0' ( temp int) 0:819 Sequence 0:819 move second child to first child ( temp int64_t) 0:819 'var167' ( temp int64_t) 0:819 subtract ( temp int64_t) 0:819 'var2' ( temp int64_t) 0:819 Convert int to int64_t ( temp int64_t) 0:819 'var0' ( temp int) 0:820 Sequence 0:820 move second child to first child ( temp uint64_t) 0:820 'var168' ( temp uint64_t) 0:820 subtract ( temp uint64_t) 0:820 'var3' ( temp uint64_t) 0:820 Convert int to uint64_t ( temp uint64_t) 0:820 'var0' ( temp int) 0:821 Sequence 0:821 move second child to first child ( temp float) 0:821 'var169' ( temp float) 0:821 subtract ( temp float) 0:821 'var4' ( temp float) 0:821 Convert int to float ( temp float) 0:821 'var0' ( temp int) 0:822 Sequence 0:822 move second child to first child ( temp double) 0:822 'var170' ( temp double) 0:822 subtract ( temp double) 0:822 'var5' ( temp double) 0:822 Convert int to double ( temp double) 0:822 'var0' ( temp int) 0:824 Sequence 0:824 move second child to first child ( temp 2-component vector of uint) 0:824 'var171' ( temp 2-component vector of uint) 0:824 subtract ( temp 2-component vector of uint) 0:824 'var7' ( temp 2-component vector of uint) 0:824 Convert int to uint ( temp 2-component vector of uint) 0:824 'var6' ( temp 2-component vector of int) 0:825 Sequence 0:825 move second child to first child ( temp 2-component vector of int64_t) 0:825 'var172' ( temp 2-component vector of int64_t) 0:825 subtract ( temp 2-component vector of int64_t) 0:825 'var8' ( temp 2-component vector of int64_t) 0:825 Convert int to int64_t ( temp 2-component vector of int64_t) 0:825 'var6' ( temp 2-component vector of int) 0:826 Sequence 0:826 move second child to first child ( temp 2-component vector of uint64_t) 0:826 'var173' ( temp 2-component vector of uint64_t) 0:826 subtract ( temp 2-component vector of uint64_t) 0:826 'var9' ( temp 2-component vector of uint64_t) 0:826 Convert int to uint64_t ( temp 2-component vector of uint64_t) 0:826 'var6' ( temp 2-component vector of int) 0:827 Sequence 0:827 move second child to first child ( temp 2-component vector of float) 0:827 'var174' ( temp 2-component vector of float) 0:827 subtract ( temp 2-component vector of float) 0:827 'var10' ( temp 2-component vector of float) 0:827 Convert int to float ( temp 2-component vector of float) 0:827 'var6' ( temp 2-component vector of int) 0:828 Sequence 0:828 move second child to first child ( temp 2-component vector of double) 0:828 'var175' ( temp 2-component vector of double) 0:828 subtract ( temp 2-component vector of double) 0:828 'var11' ( temp 2-component vector of double) 0:828 Convert int to double ( temp 2-component vector of double) 0:828 'var6' ( temp 2-component vector of int) 0:830 Sequence 0:830 move second child to first child ( temp 3-component vector of uint) 0:830 'var176' ( temp 3-component vector of uint) 0:830 subtract ( temp 3-component vector of uint) 0:830 'var13' ( temp 3-component vector of uint) 0:830 Convert int to uint ( temp 3-component vector of uint) 0:830 'var12' ( temp 3-component vector of int) 0:831 Sequence 0:831 move second child to first child ( temp 3-component vector of int64_t) 0:831 'var177' ( temp 3-component vector of int64_t) 0:831 subtract ( temp 3-component vector of int64_t) 0:831 'var14' ( temp 3-component vector of int64_t) 0:831 Convert int to int64_t ( temp 3-component vector of int64_t) 0:831 'var12' ( temp 3-component vector of int) 0:832 Sequence 0:832 move second child to first child ( temp 3-component vector of uint64_t) 0:832 'var178' ( temp 3-component vector of uint64_t) 0:832 subtract ( temp 3-component vector of uint64_t) 0:832 'var15' ( temp 3-component vector of uint64_t) 0:832 Convert int to uint64_t ( temp 3-component vector of uint64_t) 0:832 'var12' ( temp 3-component vector of int) 0:833 Sequence 0:833 move second child to first child ( temp 3-component vector of float) 0:833 'var179' ( temp 3-component vector of float) 0:833 subtract ( temp 3-component vector of float) 0:833 'var16' ( temp 3-component vector of float) 0:833 Convert int to float ( temp 3-component vector of float) 0:833 'var12' ( temp 3-component vector of int) 0:834 Sequence 0:834 move second child to first child ( temp 3-component vector of double) 0:834 'var180' ( temp 3-component vector of double) 0:834 subtract ( temp 3-component vector of double) 0:834 'var17' ( temp 3-component vector of double) 0:834 Convert int to double ( temp 3-component vector of double) 0:834 'var12' ( temp 3-component vector of int) 0:836 Sequence 0:836 move second child to first child ( temp 4-component vector of uint) 0:836 'var181' ( temp 4-component vector of uint) 0:836 subtract ( temp 4-component vector of uint) 0:836 'var19' ( temp 4-component vector of uint) 0:836 Convert int to uint ( temp 4-component vector of uint) 0:836 'var18' ( temp 4-component vector of int) 0:837 Sequence 0:837 move second child to first child ( temp 4-component vector of int64_t) 0:837 'var182' ( temp 4-component vector of int64_t) 0:837 subtract ( temp 4-component vector of int64_t) 0:837 'var20' ( temp 4-component vector of int64_t) 0:837 Convert int to int64_t ( temp 4-component vector of int64_t) 0:837 'var18' ( temp 4-component vector of int) 0:838 Sequence 0:838 move second child to first child ( temp 4-component vector of uint64_t) 0:838 'var183' ( temp 4-component vector of uint64_t) 0:838 subtract ( temp 4-component vector of uint64_t) 0:838 'var21' ( temp 4-component vector of uint64_t) 0:838 Convert int to uint64_t ( temp 4-component vector of uint64_t) 0:838 'var18' ( temp 4-component vector of int) 0:839 Sequence 0:839 move second child to first child ( temp 4-component vector of float) 0:839 'var184' ( temp 4-component vector of float) 0:839 subtract ( temp 4-component vector of float) 0:839 'var22' ( temp 4-component vector of float) 0:839 Convert int to float ( temp 4-component vector of float) 0:839 'var18' ( temp 4-component vector of int) 0:840 Sequence 0:840 move second child to first child ( temp 4-component vector of double) 0:840 'var185' ( temp 4-component vector of double) 0:840 subtract ( temp 4-component vector of double) 0:840 'var23' ( temp 4-component vector of double) 0:840 Convert int to double ( temp 4-component vector of double) 0:840 'var18' ( temp 4-component vector of int) 0:842 Sequence 0:842 move second child to first child ( temp int) 0:842 'var186' ( temp int) 0:842 subtract ( temp int) 0:842 'var0' ( temp int) 0:842 Convert int8_t to int ( temp int) 0:842 'var24' ( temp int8_t) 0:843 Sequence 0:843 move second child to first child ( temp int64_t) 0:843 'var187' ( temp int64_t) 0:843 subtract ( temp int64_t) 0:843 'var2' ( temp int64_t) 0:843 Convert int8_t to int64_t ( temp int64_t) 0:843 'var24' ( temp int8_t) 0:844 Sequence 0:844 move second child to first child ( temp uint) 0:844 'var188' ( temp uint) 0:844 subtract ( temp uint) 0:844 'var1' ( temp uint) 0:844 Convert int8_t to uint ( temp uint) 0:844 'var24' ( temp int8_t) 0:845 Sequence 0:845 move second child to first child ( temp uint64_t) 0:845 'var189' ( temp uint64_t) 0:845 subtract ( temp uint64_t) 0:845 'var3' ( temp uint64_t) 0:845 Convert int8_t to uint64_t ( temp uint64_t) 0:845 'var24' ( temp int8_t) 0:846 Sequence 0:846 move second child to first child ( temp float) 0:846 'var190' ( temp float) 0:846 subtract ( temp float) 0:846 'var4' ( temp float) 0:846 Convert int8_t to float ( temp float) 0:846 'var24' ( temp int8_t) 0:847 Sequence 0:847 move second child to first child ( temp double) 0:847 'var191' ( temp double) 0:847 subtract ( temp double) 0:847 'var5' ( temp double) 0:847 Convert int8_t to double ( temp double) 0:847 'var24' ( temp int8_t) 0:849 Sequence 0:849 move second child to first child ( temp int) 0:849 'var192' ( temp int) 0:849 subtract ( temp int) 0:849 'var0' ( temp int) 0:849 Convert int16_t to int ( temp int) 0:849 'var25' ( temp int16_t) 0:850 Sequence 0:850 move second child to first child ( temp int64_t) 0:850 'var193' ( temp int64_t) 0:850 subtract ( temp int64_t) 0:850 'var2' ( temp int64_t) 0:850 Convert int16_t to int64_t ( temp int64_t) 0:850 'var25' ( temp int16_t) 0:851 Sequence 0:851 move second child to first child ( temp uint) 0:851 'var194' ( temp uint) 0:851 subtract ( temp uint) 0:851 'var1' ( temp uint) 0:851 Convert int16_t to uint ( temp uint) 0:851 'var25' ( temp int16_t) 0:852 Sequence 0:852 move second child to first child ( temp uint64_t) 0:852 'var195' ( temp uint64_t) 0:852 subtract ( temp uint64_t) 0:852 'var3' ( temp uint64_t) 0:852 Convert int16_t to uint64_t ( temp uint64_t) 0:852 'var25' ( temp int16_t) 0:853 Sequence 0:853 move second child to first child ( temp float) 0:853 'var196' ( temp float) 0:853 subtract ( temp float) 0:853 'var4' ( temp float) 0:853 Convert int16_t to float ( temp float) 0:853 'var25' ( temp int16_t) 0:854 Sequence 0:854 move second child to first child ( temp double) 0:854 'var197' ( temp double) 0:854 subtract ( temp double) 0:854 'var5' ( temp double) 0:854 Convert int16_t to double ( temp double) 0:854 'var25' ( temp int16_t) 0:856 Sequence 0:856 move second child to first child ( temp 2-component vector of int) 0:856 'var198' ( temp 2-component vector of int) 0:856 subtract ( temp 2-component vector of int) 0:856 'var6' ( temp 2-component vector of int) 0:856 Convert int8_t to int ( temp 2-component vector of int) 0:856 'var26' ( temp 2-component vector of int8_t) 0:857 Sequence 0:857 move second child to first child ( temp 2-component vector of int64_t) 0:857 'var199' ( temp 2-component vector of int64_t) 0:857 subtract ( temp 2-component vector of int64_t) 0:857 'var8' ( temp 2-component vector of int64_t) 0:857 Convert int8_t to int64_t ( temp 2-component vector of int64_t) 0:857 'var26' ( temp 2-component vector of int8_t) 0:858 Sequence 0:858 move second child to first child ( temp 2-component vector of uint) 0:858 'var200' ( temp 2-component vector of uint) 0:858 subtract ( temp 2-component vector of uint) 0:858 'var7' ( temp 2-component vector of uint) 0:858 Convert int8_t to uint ( temp 2-component vector of uint) 0:858 'var26' ( temp 2-component vector of int8_t) 0:859 Sequence 0:859 move second child to first child ( temp 2-component vector of uint64_t) 0:859 'var201' ( temp 2-component vector of uint64_t) 0:859 subtract ( temp 2-component vector of uint64_t) 0:859 'var9' ( temp 2-component vector of uint64_t) 0:859 Convert int8_t to uint64_t ( temp 2-component vector of uint64_t) 0:859 'var26' ( temp 2-component vector of int8_t) 0:860 Sequence 0:860 move second child to first child ( temp 2-component vector of float) 0:860 'var202' ( temp 2-component vector of float) 0:860 subtract ( temp 2-component vector of float) 0:860 'var10' ( temp 2-component vector of float) 0:860 Convert int8_t to float ( temp 2-component vector of float) 0:860 'var26' ( temp 2-component vector of int8_t) 0:861 Sequence 0:861 move second child to first child ( temp 2-component vector of double) 0:861 'var203' ( temp 2-component vector of double) 0:861 subtract ( temp 2-component vector of double) 0:861 'var11' ( temp 2-component vector of double) 0:861 Convert int8_t to double ( temp 2-component vector of double) 0:861 'var26' ( temp 2-component vector of int8_t) 0:863 Sequence 0:863 move second child to first child ( temp 2-component vector of int) 0:863 'var204' ( temp 2-component vector of int) 0:863 subtract ( temp 2-component vector of int) 0:863 'var6' ( temp 2-component vector of int) 0:863 Convert int16_t to int ( temp 2-component vector of int) 0:863 'var27' ( temp 2-component vector of int16_t) 0:864 Sequence 0:864 move second child to first child ( temp 2-component vector of int64_t) 0:864 'var205' ( temp 2-component vector of int64_t) 0:864 subtract ( temp 2-component vector of int64_t) 0:864 'var8' ( temp 2-component vector of int64_t) 0:864 Convert int16_t to int64_t ( temp 2-component vector of int64_t) 0:864 'var27' ( temp 2-component vector of int16_t) 0:865 Sequence 0:865 move second child to first child ( temp 2-component vector of uint) 0:865 'var206' ( temp 2-component vector of uint) 0:865 subtract ( temp 2-component vector of uint) 0:865 'var7' ( temp 2-component vector of uint) 0:865 Convert int16_t to uint ( temp 2-component vector of uint) 0:865 'var27' ( temp 2-component vector of int16_t) 0:866 Sequence 0:866 move second child to first child ( temp 2-component vector of uint64_t) 0:866 'var207' ( temp 2-component vector of uint64_t) 0:866 subtract ( temp 2-component vector of uint64_t) 0:866 'var9' ( temp 2-component vector of uint64_t) 0:866 Convert int16_t to uint64_t ( temp 2-component vector of uint64_t) 0:866 'var27' ( temp 2-component vector of int16_t) 0:867 Sequence 0:867 move second child to first child ( temp 2-component vector of float) 0:867 'var208' ( temp 2-component vector of float) 0:867 subtract ( temp 2-component vector of float) 0:867 'var10' ( temp 2-component vector of float) 0:867 Convert int16_t to float ( temp 2-component vector of float) 0:867 'var27' ( temp 2-component vector of int16_t) 0:868 Sequence 0:868 move second child to first child ( temp 2-component vector of double) 0:868 'var209' ( temp 2-component vector of double) 0:868 subtract ( temp 2-component vector of double) 0:868 'var11' ( temp 2-component vector of double) 0:868 Convert int16_t to double ( temp 2-component vector of double) 0:868 'var27' ( temp 2-component vector of int16_t) 0:870 Sequence 0:870 move second child to first child ( temp 3-component vector of int) 0:870 'var210' ( temp 3-component vector of int) 0:870 subtract ( temp 3-component vector of int) 0:870 'var12' ( temp 3-component vector of int) 0:870 Convert int8_t to int ( temp 3-component vector of int) 0:870 'var28' ( temp 3-component vector of int8_t) 0:871 Sequence 0:871 move second child to first child ( temp 3-component vector of int64_t) 0:871 'var211' ( temp 3-component vector of int64_t) 0:871 subtract ( temp 3-component vector of int64_t) 0:871 'var14' ( temp 3-component vector of int64_t) 0:871 Convert int8_t to int64_t ( temp 3-component vector of int64_t) 0:871 'var28' ( temp 3-component vector of int8_t) 0:872 Sequence 0:872 move second child to first child ( temp 3-component vector of uint) 0:872 'var212' ( temp 3-component vector of uint) 0:872 subtract ( temp 3-component vector of uint) 0:872 'var13' ( temp 3-component vector of uint) 0:872 Convert int8_t to uint ( temp 3-component vector of uint) 0:872 'var28' ( temp 3-component vector of int8_t) 0:873 Sequence 0:873 move second child to first child ( temp 3-component vector of uint64_t) 0:873 'var213' ( temp 3-component vector of uint64_t) 0:873 subtract ( temp 3-component vector of uint64_t) 0:873 'var15' ( temp 3-component vector of uint64_t) 0:873 Convert int8_t to uint64_t ( temp 3-component vector of uint64_t) 0:873 'var28' ( temp 3-component vector of int8_t) 0:874 Sequence 0:874 move second child to first child ( temp 3-component vector of float) 0:874 'var214' ( temp 3-component vector of float) 0:874 subtract ( temp 3-component vector of float) 0:874 'var16' ( temp 3-component vector of float) 0:874 Convert int8_t to float ( temp 3-component vector of float) 0:874 'var28' ( temp 3-component vector of int8_t) 0:875 Sequence 0:875 move second child to first child ( temp 3-component vector of double) 0:875 'var215' ( temp 3-component vector of double) 0:875 subtract ( temp 3-component vector of double) 0:875 'var17' ( temp 3-component vector of double) 0:875 Convert int8_t to double ( temp 3-component vector of double) 0:875 'var28' ( temp 3-component vector of int8_t) 0:877 Sequence 0:877 move second child to first child ( temp 3-component vector of uint) 0:877 'var216' ( temp 3-component vector of uint) 0:877 subtract ( temp 3-component vector of uint) 0:877 'var13' ( temp 3-component vector of uint) 0:877 Convert int16_t to uint ( temp 3-component vector of uint) 0:877 'var29' ( temp 3-component vector of int16_t) 0:878 Sequence 0:878 move second child to first child ( temp 3-component vector of uint64_t) 0:878 'var217' ( temp 3-component vector of uint64_t) 0:878 subtract ( temp 3-component vector of uint64_t) 0:878 'var15' ( temp 3-component vector of uint64_t) 0:878 Convert int16_t to uint64_t ( temp 3-component vector of uint64_t) 0:878 'var29' ( temp 3-component vector of int16_t) 0:879 Sequence 0:879 move second child to first child ( temp 3-component vector of float) 0:879 'var218' ( temp 3-component vector of float) 0:879 subtract ( temp 3-component vector of float) 0:879 'var16' ( temp 3-component vector of float) 0:879 Convert int16_t to float ( temp 3-component vector of float) 0:879 'var29' ( temp 3-component vector of int16_t) 0:880 Sequence 0:880 move second child to first child ( temp 3-component vector of double) 0:880 'var219' ( temp 3-component vector of double) 0:880 subtract ( temp 3-component vector of double) 0:880 'var17' ( temp 3-component vector of double) 0:880 Convert int16_t to double ( temp 3-component vector of double) 0:880 'var29' ( temp 3-component vector of int16_t) 0:882 Sequence 0:882 move second child to first child ( temp 4-component vector of int) 0:882 'var220' ( temp 4-component vector of int) 0:882 subtract ( temp 4-component vector of int) 0:882 'var18' ( temp 4-component vector of int) 0:882 Convert int8_t to int ( temp 4-component vector of int) 0:882 'var30' ( temp 4-component vector of int8_t) 0:883 Sequence 0:883 move second child to first child ( temp 4-component vector of int64_t) 0:883 'var221' ( temp 4-component vector of int64_t) 0:883 subtract ( temp 4-component vector of int64_t) 0:883 'var20' ( temp 4-component vector of int64_t) 0:883 Convert int8_t to int64_t ( temp 4-component vector of int64_t) 0:883 'var30' ( temp 4-component vector of int8_t) 0:884 Sequence 0:884 move second child to first child ( temp 4-component vector of uint) 0:884 'var222' ( temp 4-component vector of uint) 0:884 subtract ( temp 4-component vector of uint) 0:884 'var19' ( temp 4-component vector of uint) 0:884 Convert int8_t to uint ( temp 4-component vector of uint) 0:884 'var30' ( temp 4-component vector of int8_t) 0:885 Sequence 0:885 move second child to first child ( temp 4-component vector of uint64_t) 0:885 'var223' ( temp 4-component vector of uint64_t) 0:885 subtract ( temp 4-component vector of uint64_t) 0:885 'var21' ( temp 4-component vector of uint64_t) 0:885 Convert int8_t to uint64_t ( temp 4-component vector of uint64_t) 0:885 'var30' ( temp 4-component vector of int8_t) 0:886 Sequence 0:886 move second child to first child ( temp 4-component vector of float) 0:886 'var224' ( temp 4-component vector of float) 0:886 subtract ( temp 4-component vector of float) 0:886 'var22' ( temp 4-component vector of float) 0:886 Convert int8_t to float ( temp 4-component vector of float) 0:886 'var30' ( temp 4-component vector of int8_t) 0:887 Sequence 0:887 move second child to first child ( temp 4-component vector of double) 0:887 'var225' ( temp 4-component vector of double) 0:887 subtract ( temp 4-component vector of double) 0:887 'var23' ( temp 4-component vector of double) 0:887 Convert int8_t to double ( temp 4-component vector of double) 0:887 'var30' ( temp 4-component vector of int8_t) 0:889 Sequence 0:889 move second child to first child ( temp 4-component vector of uint) 0:889 'var226' ( temp 4-component vector of uint) 0:889 subtract ( temp 4-component vector of uint) 0:889 'var19' ( temp 4-component vector of uint) 0:889 Convert int16_t to uint ( temp 4-component vector of uint) 0:889 'var31' ( temp 4-component vector of int16_t) 0:890 Sequence 0:890 move second child to first child ( temp 4-component vector of uint64_t) 0:890 'var227' ( temp 4-component vector of uint64_t) 0:890 subtract ( temp 4-component vector of uint64_t) 0:890 'var21' ( temp 4-component vector of uint64_t) 0:890 Convert int16_t to uint64_t ( temp 4-component vector of uint64_t) 0:890 'var31' ( temp 4-component vector of int16_t) 0:891 Sequence 0:891 move second child to first child ( temp 4-component vector of float) 0:891 'var228' ( temp 4-component vector of float) 0:891 subtract ( temp 4-component vector of float) 0:891 'var22' ( temp 4-component vector of float) 0:891 Convert int16_t to float ( temp 4-component vector of float) 0:891 'var31' ( temp 4-component vector of int16_t) 0:892 Sequence 0:892 move second child to first child ( temp 4-component vector of double) 0:892 'var229' ( temp 4-component vector of double) 0:892 subtract ( temp 4-component vector of double) 0:892 'var23' ( temp 4-component vector of double) 0:892 Convert int16_t to double ( temp 4-component vector of double) 0:892 'var31' ( temp 4-component vector of int16_t) 0:894 Sequence 0:894 move second child to first child ( temp uint64_t) 0:894 'var230' ( temp uint64_t) 0:894 subtract ( temp uint64_t) 0:894 'var3' ( temp uint64_t) 0:894 Convert int64_t to uint64_t ( temp uint64_t) 0:894 'var2' ( temp int64_t) 0:895 Sequence 0:895 move second child to first child ( temp double) 0:895 'var231' ( temp double) 0:895 subtract ( temp double) 0:895 'var5' ( temp double) 0:895 Convert int64_t to double ( temp double) 0:895 'var2' ( temp int64_t) 0:897 Sequence 0:897 move second child to first child ( temp 2-component vector of uint64_t) 0:897 'var232' ( temp 2-component vector of uint64_t) 0:897 subtract ( temp 2-component vector of uint64_t) 0:897 'var9' ( temp 2-component vector of uint64_t) 0:897 Convert int64_t to uint64_t ( temp 2-component vector of uint64_t) 0:897 'var8' ( temp 2-component vector of int64_t) 0:898 Sequence 0:898 move second child to first child ( temp 2-component vector of double) 0:898 'var233' ( temp 2-component vector of double) 0:898 subtract ( temp 2-component vector of double) 0:898 'var11' ( temp 2-component vector of double) 0:898 Convert int64_t to double ( temp 2-component vector of double) 0:898 'var8' ( temp 2-component vector of int64_t) 0:900 Sequence 0:900 move second child to first child ( temp 3-component vector of uint64_t) 0:900 'var234' ( temp 3-component vector of uint64_t) 0:900 subtract ( temp 3-component vector of uint64_t) 0:900 'var15' ( temp 3-component vector of uint64_t) 0:900 Convert int64_t to uint64_t ( temp 3-component vector of uint64_t) 0:900 'var14' ( temp 3-component vector of int64_t) 0:901 Sequence 0:901 move second child to first child ( temp 3-component vector of double) 0:901 'var235' ( temp 3-component vector of double) 0:901 subtract ( temp 3-component vector of double) 0:901 'var17' ( temp 3-component vector of double) 0:901 Convert int64_t to double ( temp 3-component vector of double) 0:901 'var14' ( temp 3-component vector of int64_t) 0:903 Sequence 0:903 move second child to first child ( temp 4-component vector of uint64_t) 0:903 'var236' ( temp 4-component vector of uint64_t) 0:903 subtract ( temp 4-component vector of uint64_t) 0:903 'var21' ( temp 4-component vector of uint64_t) 0:903 Convert int64_t to uint64_t ( temp 4-component vector of uint64_t) 0:903 'var20' ( temp 4-component vector of int64_t) 0:904 Sequence 0:904 move second child to first child ( temp 4-component vector of double) 0:904 'var237' ( temp 4-component vector of double) 0:904 subtract ( temp 4-component vector of double) 0:904 'var23' ( temp 4-component vector of double) 0:904 Convert int64_t to double ( temp 4-component vector of double) 0:904 'var20' ( temp 4-component vector of int64_t) 0:906 Sequence 0:906 move second child to first child ( temp uint64_t) 0:906 'var238' ( temp uint64_t) 0:906 subtract ( temp uint64_t) 0:906 'var3' ( temp uint64_t) 0:906 Convert uint to uint64_t ( temp uint64_t) 0:906 'var1' ( temp uint) 0:907 Sequence 0:907 move second child to first child ( temp float) 0:907 'var239' ( temp float) 0:907 subtract ( temp float) 0:907 'var4' ( temp float) 0:907 Convert uint to float ( temp float) 0:907 'var1' ( temp uint) 0:908 Sequence 0:908 move second child to first child ( temp double) 0:908 'var240' ( temp double) 0:908 subtract ( temp double) 0:908 'var5' ( temp double) 0:908 Convert uint to double ( temp double) 0:908 'var1' ( temp uint) 0:910 Sequence 0:910 move second child to first child ( temp 2-component vector of uint64_t) 0:910 'var241' ( temp 2-component vector of uint64_t) 0:910 subtract ( temp 2-component vector of uint64_t) 0:910 'var9' ( temp 2-component vector of uint64_t) 0:910 Convert uint to uint64_t ( temp 2-component vector of uint64_t) 0:910 'var7' ( temp 2-component vector of uint) 0:911 Sequence 0:911 move second child to first child ( temp 2-component vector of float) 0:911 'var242' ( temp 2-component vector of float) 0:911 subtract ( temp 2-component vector of float) 0:911 'var10' ( temp 2-component vector of float) 0:911 Convert uint to float ( temp 2-component vector of float) 0:911 'var7' ( temp 2-component vector of uint) 0:912 Sequence 0:912 move second child to first child ( temp 2-component vector of double) 0:912 'var243' ( temp 2-component vector of double) 0:912 subtract ( temp 2-component vector of double) 0:912 'var11' ( temp 2-component vector of double) 0:912 Convert uint to double ( temp 2-component vector of double) 0:912 'var7' ( temp 2-component vector of uint) 0:914 Sequence 0:914 move second child to first child ( temp 3-component vector of uint64_t) 0:914 'var244' ( temp 3-component vector of uint64_t) 0:914 subtract ( temp 3-component vector of uint64_t) 0:914 'var15' ( temp 3-component vector of uint64_t) 0:914 Convert uint to uint64_t ( temp 3-component vector of uint64_t) 0:914 'var13' ( temp 3-component vector of uint) 0:915 Sequence 0:915 move second child to first child ( temp 3-component vector of float) 0:915 'var245' ( temp 3-component vector of float) 0:915 subtract ( temp 3-component vector of float) 0:915 'var16' ( temp 3-component vector of float) 0:915 Convert uint to float ( temp 3-component vector of float) 0:915 'var13' ( temp 3-component vector of uint) 0:916 Sequence 0:916 move second child to first child ( temp 3-component vector of double) 0:916 'var246' ( temp 3-component vector of double) 0:916 subtract ( temp 3-component vector of double) 0:916 'var17' ( temp 3-component vector of double) 0:916 Convert uint to double ( temp 3-component vector of double) 0:916 'var13' ( temp 3-component vector of uint) 0:918 Sequence 0:918 move second child to first child ( temp 4-component vector of uint64_t) 0:918 'var247' ( temp 4-component vector of uint64_t) 0:918 subtract ( temp 4-component vector of uint64_t) 0:918 'var21' ( temp 4-component vector of uint64_t) 0:918 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:918 'var19' ( temp 4-component vector of uint) 0:919 Sequence 0:919 move second child to first child ( temp 4-component vector of float) 0:919 'var248' ( temp 4-component vector of float) 0:919 subtract ( temp 4-component vector of float) 0:919 'var22' ( temp 4-component vector of float) 0:919 Convert uint to float ( temp 4-component vector of float) 0:919 'var19' ( temp 4-component vector of uint) 0:920 Sequence 0:920 move second child to first child ( temp 4-component vector of double) 0:920 'var249' ( temp 4-component vector of double) 0:920 subtract ( temp 4-component vector of double) 0:920 'var23' ( temp 4-component vector of double) 0:920 Convert uint to double ( temp 4-component vector of double) 0:920 'var19' ( temp 4-component vector of uint) 0:922 Sequence 0:922 move second child to first child ( temp uint) 0:922 'var250' ( temp uint) 0:922 subtract ( temp uint) 0:922 'var1' ( temp uint) 0:922 Convert uint8_t to uint ( temp uint) 0:922 'var32' ( temp uint8_t) 0:923 Sequence 0:923 move second child to first child ( temp uint64_t) 0:923 'var251' ( temp uint64_t) 0:923 subtract ( temp uint64_t) 0:923 'var3' ( temp uint64_t) 0:923 Convert uint8_t to uint64_t ( temp uint64_t) 0:923 'var32' ( temp uint8_t) 0:924 Sequence 0:924 move second child to first child ( temp float) 0:924 'var252' ( temp float) 0:924 subtract ( temp float) 0:924 'var4' ( temp float) 0:924 Convert uint8_t to float ( temp float) 0:924 'var32' ( temp uint8_t) 0:925 Sequence 0:925 move second child to first child ( temp double) 0:925 'var253' ( temp double) 0:925 subtract ( temp double) 0:925 'var5' ( temp double) 0:925 Convert uint8_t to double ( temp double) 0:925 'var32' ( temp uint8_t) 0:927 Sequence 0:927 move second child to first child ( temp uint) 0:927 'var254' ( temp uint) 0:927 subtract ( temp uint) 0:927 'var1' ( temp uint) 0:927 Convert uint16_t to uint ( temp uint) 0:927 'var33' ( temp uint16_t) 0:928 Sequence 0:928 move second child to first child ( temp uint64_t) 0:928 'var255' ( temp uint64_t) 0:928 subtract ( temp uint64_t) 0:928 'var3' ( temp uint64_t) 0:928 Convert uint16_t to uint64_t ( temp uint64_t) 0:928 'var33' ( temp uint16_t) 0:929 Sequence 0:929 move second child to first child ( temp float) 0:929 'var256' ( temp float) 0:929 subtract ( temp float) 0:929 'var4' ( temp float) 0:929 Convert uint16_t to float ( temp float) 0:929 'var33' ( temp uint16_t) 0:930 Sequence 0:930 move second child to first child ( temp double) 0:930 'var257' ( temp double) 0:930 subtract ( temp double) 0:930 'var5' ( temp double) 0:930 Convert uint16_t to double ( temp double) 0:930 'var33' ( temp uint16_t) 0:932 Sequence 0:932 move second child to first child ( temp 2-component vector of uint) 0:932 'var258' ( temp 2-component vector of uint) 0:932 subtract ( temp 2-component vector of uint) 0:932 'var7' ( temp 2-component vector of uint) 0:932 Convert uint8_t to uint ( temp 2-component vector of uint) 0:932 'var34' ( temp 2-component vector of uint8_t) 0:933 Sequence 0:933 move second child to first child ( temp 2-component vector of uint64_t) 0:933 'var259' ( temp 2-component vector of uint64_t) 0:933 subtract ( temp 2-component vector of uint64_t) 0:933 'var9' ( temp 2-component vector of uint64_t) 0:933 Convert uint8_t to uint64_t ( temp 2-component vector of uint64_t) 0:933 'var34' ( temp 2-component vector of uint8_t) 0:934 Sequence 0:934 move second child to first child ( temp 2-component vector of float) 0:934 'var260' ( temp 2-component vector of float) 0:934 subtract ( temp 2-component vector of float) 0:934 'var10' ( temp 2-component vector of float) 0:934 Convert uint8_t to float ( temp 2-component vector of float) 0:934 'var34' ( temp 2-component vector of uint8_t) 0:935 Sequence 0:935 move second child to first child ( temp 2-component vector of double) 0:935 'var261' ( temp 2-component vector of double) 0:935 subtract ( temp 2-component vector of double) 0:935 'var11' ( temp 2-component vector of double) 0:935 Convert uint8_t to double ( temp 2-component vector of double) 0:935 'var34' ( temp 2-component vector of uint8_t) 0:937 Sequence 0:937 move second child to first child ( temp 2-component vector of uint) 0:937 'var262' ( temp 2-component vector of uint) 0:937 subtract ( temp 2-component vector of uint) 0:937 'var7' ( temp 2-component vector of uint) 0:937 Convert uint16_t to uint ( temp 2-component vector of uint) 0:937 'var35' ( temp 2-component vector of uint16_t) 0:938 Sequence 0:938 move second child to first child ( temp 2-component vector of uint64_t) 0:938 'var263' ( temp 2-component vector of uint64_t) 0:938 subtract ( temp 2-component vector of uint64_t) 0:938 'var9' ( temp 2-component vector of uint64_t) 0:938 Convert uint16_t to uint64_t ( temp 2-component vector of uint64_t) 0:938 'var35' ( temp 2-component vector of uint16_t) 0:939 Sequence 0:939 move second child to first child ( temp 2-component vector of float) 0:939 'var264' ( temp 2-component vector of float) 0:939 subtract ( temp 2-component vector of float) 0:939 'var10' ( temp 2-component vector of float) 0:939 Convert uint16_t to float ( temp 2-component vector of float) 0:939 'var35' ( temp 2-component vector of uint16_t) 0:940 Sequence 0:940 move second child to first child ( temp 2-component vector of double) 0:940 'var265' ( temp 2-component vector of double) 0:940 subtract ( temp 2-component vector of double) 0:940 'var11' ( temp 2-component vector of double) 0:940 Convert uint16_t to double ( temp 2-component vector of double) 0:940 'var35' ( temp 2-component vector of uint16_t) 0:942 Sequence 0:942 move second child to first child ( temp 3-component vector of uint) 0:942 'var266' ( temp 3-component vector of uint) 0:942 subtract ( temp 3-component vector of uint) 0:942 'var13' ( temp 3-component vector of uint) 0:942 Convert uint8_t to uint ( temp 3-component vector of uint) 0:942 'var36' ( temp 3-component vector of uint8_t) 0:943 Sequence 0:943 move second child to first child ( temp 3-component vector of uint64_t) 0:943 'var267' ( temp 3-component vector of uint64_t) 0:943 subtract ( temp 3-component vector of uint64_t) 0:943 'var15' ( temp 3-component vector of uint64_t) 0:943 Convert uint8_t to uint64_t ( temp 3-component vector of uint64_t) 0:943 'var36' ( temp 3-component vector of uint8_t) 0:944 Sequence 0:944 move second child to first child ( temp 3-component vector of float) 0:944 'var268' ( temp 3-component vector of float) 0:944 subtract ( temp 3-component vector of float) 0:944 'var16' ( temp 3-component vector of float) 0:944 Convert uint8_t to float ( temp 3-component vector of float) 0:944 'var36' ( temp 3-component vector of uint8_t) 0:945 Sequence 0:945 move second child to first child ( temp 3-component vector of double) 0:945 'var269' ( temp 3-component vector of double) 0:945 subtract ( temp 3-component vector of double) 0:945 'var17' ( temp 3-component vector of double) 0:945 Convert uint8_t to double ( temp 3-component vector of double) 0:945 'var36' ( temp 3-component vector of uint8_t) 0:947 Sequence 0:947 move second child to first child ( temp 4-component vector of uint) 0:947 'var270' ( temp 4-component vector of uint) 0:947 subtract ( temp 4-component vector of uint) 0:947 'var19' ( temp 4-component vector of uint) 0:947 Convert uint8_t to uint ( temp 4-component vector of uint) 0:947 'var37' ( temp 4-component vector of uint8_t) 0:948 Sequence 0:948 move second child to first child ( temp 4-component vector of uint64_t) 0:948 'var271' ( temp 4-component vector of uint64_t) 0:948 subtract ( temp 4-component vector of uint64_t) 0:948 'var21' ( temp 4-component vector of uint64_t) 0:948 Convert uint8_t to uint64_t ( temp 4-component vector of uint64_t) 0:948 'var37' ( temp 4-component vector of uint8_t) 0:949 Sequence 0:949 move second child to first child ( temp 4-component vector of float) 0:949 'var272' ( temp 4-component vector of float) 0:949 subtract ( temp 4-component vector of float) 0:949 'var22' ( temp 4-component vector of float) 0:949 Convert uint8_t to float ( temp 4-component vector of float) 0:949 'var37' ( temp 4-component vector of uint8_t) 0:950 Sequence 0:950 move second child to first child ( temp 4-component vector of double) 0:950 'var273' ( temp 4-component vector of double) 0:950 subtract ( temp 4-component vector of double) 0:950 'var23' ( temp 4-component vector of double) 0:950 Convert uint8_t to double ( temp 4-component vector of double) 0:950 'var37' ( temp 4-component vector of uint8_t) 0:952 Sequence 0:952 move second child to first child ( temp double) 0:952 'var274' ( temp double) 0:952 subtract ( temp double) 0:952 'var5' ( temp double) 0:952 Convert uint64_t to double ( temp double) 0:952 'var3' ( temp uint64_t) 0:954 Sequence 0:954 move second child to first child ( temp 2-component vector of double) 0:954 'var275' ( temp 2-component vector of double) 0:954 subtract ( temp 2-component vector of double) 0:954 'var11' ( temp 2-component vector of double) 0:954 Convert uint64_t to double ( temp 2-component vector of double) 0:954 'var9' ( temp 2-component vector of uint64_t) 0:956 Sequence 0:956 move second child to first child ( temp 3-component vector of double) 0:956 'var276' ( temp 3-component vector of double) 0:956 subtract ( temp 3-component vector of double) 0:956 'var17' ( temp 3-component vector of double) 0:956 Convert uint64_t to double ( temp 3-component vector of double) 0:956 'var15' ( temp 3-component vector of uint64_t) 0:958 Sequence 0:958 move second child to first child ( temp 4-component vector of double) 0:958 'var277' ( temp 4-component vector of double) 0:958 subtract ( temp 4-component vector of double) 0:958 'var23' ( temp 4-component vector of double) 0:958 Convert uint64_t to double ( temp 4-component vector of double) 0:958 'var21' ( temp 4-component vector of uint64_t) 0:960 Sequence 0:960 move second child to first child ( temp double) 0:960 'var278' ( temp double) 0:960 subtract ( temp double) 0:960 'var5' ( temp double) 0:960 Convert float to double ( temp double) 0:960 'var4' ( temp float) 0:962 Sequence 0:962 move second child to first child ( temp 2-component vector of double) 0:962 'var279' ( temp 2-component vector of double) 0:962 subtract ( temp 2-component vector of double) 0:962 'var11' ( temp 2-component vector of double) 0:962 Convert float to double ( temp 2-component vector of double) 0:962 'var10' ( temp 2-component vector of float) 0:964 Sequence 0:964 move second child to first child ( temp 3-component vector of double) 0:964 'var280' ( temp 3-component vector of double) 0:964 subtract ( temp 3-component vector of double) 0:964 'var17' ( temp 3-component vector of double) 0:964 Convert float to double ( temp 3-component vector of double) 0:964 'var16' ( temp 3-component vector of float) 0:966 Sequence 0:966 move second child to first child ( temp 4-component vector of double) 0:966 'var281' ( temp 4-component vector of double) 0:966 subtract ( temp 4-component vector of double) 0:966 'var23' ( temp 4-component vector of double) 0:966 Convert float to double ( temp 4-component vector of double) 0:966 'var22' ( temp 4-component vector of float) 0:968 Sequence 0:968 move second child to first child ( temp float) 0:968 'var282' ( temp float) 0:968 subtract ( temp float) 0:968 'var4' ( temp float) 0:968 Convert float16_t to float ( temp float) 0:968 'var38' ( temp float16_t) 0:969 Sequence 0:969 move second child to first child ( temp double) 0:969 'var283' ( temp double) 0:969 subtract ( temp double) 0:969 'var5' ( temp double) 0:969 Convert float16_t to double ( temp double) 0:969 'var38' ( temp float16_t) 0:971 Sequence 0:971 move second child to first child ( temp 2-component vector of float) 0:971 'var284' ( temp 2-component vector of float) 0:971 subtract ( temp 2-component vector of float) 0:971 'var10' ( temp 2-component vector of float) 0:971 Convert float16_t to float ( temp 2-component vector of float) 0:971 'var39' ( temp 2-component vector of float16_t) 0:972 Sequence 0:972 move second child to first child ( temp 2-component vector of double) 0:972 'var285' ( temp 2-component vector of double) 0:972 subtract ( temp 2-component vector of double) 0:972 'var11' ( temp 2-component vector of double) 0:972 Convert float16_t to double ( temp 2-component vector of double) 0:972 'var39' ( temp 2-component vector of float16_t) 0:974 Sequence 0:974 move second child to first child ( temp 3-component vector of float) 0:974 'var286' ( temp 3-component vector of float) 0:974 subtract ( temp 3-component vector of float) 0:974 'var16' ( temp 3-component vector of float) 0:974 Convert float16_t to float ( temp 3-component vector of float) 0:974 'var40' ( temp 3-component vector of float16_t) 0:975 Sequence 0:975 move second child to first child ( temp 3-component vector of double) 0:975 'var287' ( temp 3-component vector of double) 0:975 subtract ( temp 3-component vector of double) 0:975 'var17' ( temp 3-component vector of double) 0:975 Convert float16_t to double ( temp 3-component vector of double) 0:975 'var40' ( temp 3-component vector of float16_t) 0:977 Sequence 0:977 move second child to first child ( temp 4-component vector of float) 0:977 'var288' ( temp 4-component vector of float) 0:977 subtract ( temp 4-component vector of float) 0:977 'var22' ( temp 4-component vector of float) 0:977 Convert float16_t to float ( temp 4-component vector of float) 0:977 'var41' ( temp 4-component vector of float16_t) 0:978 Sequence 0:978 move second child to first child ( temp 4-component vector of double) 0:978 'var289' ( temp 4-component vector of double) 0:978 subtract ( temp 4-component vector of double) 0:978 'var23' ( temp 4-component vector of double) 0:978 Convert float16_t to double ( temp 4-component vector of double) 0:978 'var41' ( temp 4-component vector of float16_t) 0:981 Sequence 0:981 move second child to first child ( temp uint) 0:981 'var290' ( temp uint) 0:981 component-wise multiply ( temp uint) 0:981 'var1' ( temp uint) 0:981 Convert int to uint ( temp uint) 0:981 'var0' ( temp int) 0:982 Sequence 0:982 move second child to first child ( temp int64_t) 0:982 'var291' ( temp int64_t) 0:982 component-wise multiply ( temp int64_t) 0:982 'var2' ( temp int64_t) 0:982 Convert int to int64_t ( temp int64_t) 0:982 'var0' ( temp int) 0:983 Sequence 0:983 move second child to first child ( temp uint64_t) 0:983 'var292' ( temp uint64_t) 0:983 component-wise multiply ( temp uint64_t) 0:983 'var3' ( temp uint64_t) 0:983 Convert int to uint64_t ( temp uint64_t) 0:983 'var0' ( temp int) 0:984 Sequence 0:984 move second child to first child ( temp float) 0:984 'var293' ( temp float) 0:984 component-wise multiply ( temp float) 0:984 'var4' ( temp float) 0:984 Convert int to float ( temp float) 0:984 'var0' ( temp int) 0:985 Sequence 0:985 move second child to first child ( temp double) 0:985 'var294' ( temp double) 0:985 component-wise multiply ( temp double) 0:985 'var5' ( temp double) 0:985 Convert int to double ( temp double) 0:985 'var0' ( temp int) 0:987 Sequence 0:987 move second child to first child ( temp 2-component vector of uint) 0:987 'var295' ( temp 2-component vector of uint) 0:987 component-wise multiply ( temp 2-component vector of uint) 0:987 'var7' ( temp 2-component vector of uint) 0:987 Convert int to uint ( temp 2-component vector of uint) 0:987 'var6' ( temp 2-component vector of int) 0:988 Sequence 0:988 move second child to first child ( temp 2-component vector of int64_t) 0:988 'var296' ( temp 2-component vector of int64_t) 0:988 component-wise multiply ( temp 2-component vector of int64_t) 0:988 'var8' ( temp 2-component vector of int64_t) 0:988 Convert int to int64_t ( temp 2-component vector of int64_t) 0:988 'var6' ( temp 2-component vector of int) 0:989 Sequence 0:989 move second child to first child ( temp 2-component vector of uint64_t) 0:989 'var297' ( temp 2-component vector of uint64_t) 0:989 component-wise multiply ( temp 2-component vector of uint64_t) 0:989 'var9' ( temp 2-component vector of uint64_t) 0:989 Convert int to uint64_t ( temp 2-component vector of uint64_t) 0:989 'var6' ( temp 2-component vector of int) 0:990 Sequence 0:990 move second child to first child ( temp 2-component vector of float) 0:990 'var298' ( temp 2-component vector of float) 0:990 component-wise multiply ( temp 2-component vector of float) 0:990 'var10' ( temp 2-component vector of float) 0:990 Convert int to float ( temp 2-component vector of float) 0:990 'var6' ( temp 2-component vector of int) 0:991 Sequence 0:991 move second child to first child ( temp 2-component vector of double) 0:991 'var299' ( temp 2-component vector of double) 0:991 component-wise multiply ( temp 2-component vector of double) 0:991 'var11' ( temp 2-component vector of double) 0:991 Convert int to double ( temp 2-component vector of double) 0:991 'var6' ( temp 2-component vector of int) 0:993 Sequence 0:993 move second child to first child ( temp 3-component vector of uint) 0:993 'var300' ( temp 3-component vector of uint) 0:993 component-wise multiply ( temp 3-component vector of uint) 0:993 'var13' ( temp 3-component vector of uint) 0:993 Convert int to uint ( temp 3-component vector of uint) 0:993 'var12' ( temp 3-component vector of int) 0:994 Sequence 0:994 move second child to first child ( temp 3-component vector of int64_t) 0:994 'var301' ( temp 3-component vector of int64_t) 0:994 component-wise multiply ( temp 3-component vector of int64_t) 0:994 'var14' ( temp 3-component vector of int64_t) 0:994 Convert int to int64_t ( temp 3-component vector of int64_t) 0:994 'var12' ( temp 3-component vector of int) 0:995 Sequence 0:995 move second child to first child ( temp 3-component vector of uint64_t) 0:995 'var302' ( temp 3-component vector of uint64_t) 0:995 component-wise multiply ( temp 3-component vector of uint64_t) 0:995 'var15' ( temp 3-component vector of uint64_t) 0:995 Convert int to uint64_t ( temp 3-component vector of uint64_t) 0:995 'var12' ( temp 3-component vector of int) 0:996 Sequence 0:996 move second child to first child ( temp 3-component vector of float) 0:996 'var303' ( temp 3-component vector of float) 0:996 component-wise multiply ( temp 3-component vector of float) 0:996 'var16' ( temp 3-component vector of float) 0:996 Convert int to float ( temp 3-component vector of float) 0:996 'var12' ( temp 3-component vector of int) 0:997 Sequence 0:997 move second child to first child ( temp 3-component vector of double) 0:997 'var304' ( temp 3-component vector of double) 0:997 component-wise multiply ( temp 3-component vector of double) 0:997 'var17' ( temp 3-component vector of double) 0:997 Convert int to double ( temp 3-component vector of double) 0:997 'var12' ( temp 3-component vector of int) 0:999 Sequence 0:999 move second child to first child ( temp 4-component vector of uint) 0:999 'var305' ( temp 4-component vector of uint) 0:999 component-wise multiply ( temp 4-component vector of uint) 0:999 'var19' ( temp 4-component vector of uint) 0:999 Convert int to uint ( temp 4-component vector of uint) 0:999 'var18' ( temp 4-component vector of int) 0:1000 Sequence 0:1000 move second child to first child ( temp 4-component vector of int64_t) 0:1000 'var306' ( temp 4-component vector of int64_t) 0:1000 component-wise multiply ( temp 4-component vector of int64_t) 0:1000 'var20' ( temp 4-component vector of int64_t) 0:1000 Convert int to int64_t ( temp 4-component vector of int64_t) 0:1000 'var18' ( temp 4-component vector of int) 0:1001 Sequence 0:1001 move second child to first child ( temp 4-component vector of uint64_t) 0:1001 'var307' ( temp 4-component vector of uint64_t) 0:1001 component-wise multiply ( temp 4-component vector of uint64_t) 0:1001 'var21' ( temp 4-component vector of uint64_t) 0:1001 Convert int to uint64_t ( temp 4-component vector of uint64_t) 0:1001 'var18' ( temp 4-component vector of int) 0:1002 Sequence 0:1002 move second child to first child ( temp 4-component vector of float) 0:1002 'var308' ( temp 4-component vector of float) 0:1002 component-wise multiply ( temp 4-component vector of float) 0:1002 'var22' ( temp 4-component vector of float) 0:1002 Convert int to float ( temp 4-component vector of float) 0:1002 'var18' ( temp 4-component vector of int) 0:1003 Sequence 0:1003 move second child to first child ( temp 4-component vector of double) 0:1003 'var309' ( temp 4-component vector of double) 0:1003 component-wise multiply ( temp 4-component vector of double) 0:1003 'var23' ( temp 4-component vector of double) 0:1003 Convert int to double ( temp 4-component vector of double) 0:1003 'var18' ( temp 4-component vector of int) 0:1005 Sequence 0:1005 move second child to first child ( temp int) 0:1005 'var310' ( temp int) 0:1005 component-wise multiply ( temp int) 0:1005 'var0' ( temp int) 0:1005 Convert int8_t to int ( temp int) 0:1005 'var24' ( temp int8_t) 0:1006 Sequence 0:1006 move second child to first child ( temp int64_t) 0:1006 'var311' ( temp int64_t) 0:1006 component-wise multiply ( temp int64_t) 0:1006 'var2' ( temp int64_t) 0:1006 Convert int8_t to int64_t ( temp int64_t) 0:1006 'var24' ( temp int8_t) 0:1007 Sequence 0:1007 move second child to first child ( temp uint) 0:1007 'var312' ( temp uint) 0:1007 component-wise multiply ( temp uint) 0:1007 'var1' ( temp uint) 0:1007 Convert int8_t to uint ( temp uint) 0:1007 'var24' ( temp int8_t) 0:1008 Sequence 0:1008 move second child to first child ( temp uint64_t) 0:1008 'var313' ( temp uint64_t) 0:1008 component-wise multiply ( temp uint64_t) 0:1008 'var3' ( temp uint64_t) 0:1008 Convert int8_t to uint64_t ( temp uint64_t) 0:1008 'var24' ( temp int8_t) 0:1009 Sequence 0:1009 move second child to first child ( temp float) 0:1009 'var314' ( temp float) 0:1009 component-wise multiply ( temp float) 0:1009 'var4' ( temp float) 0:1009 Convert int8_t to float ( temp float) 0:1009 'var24' ( temp int8_t) 0:1010 Sequence 0:1010 move second child to first child ( temp double) 0:1010 'var315' ( temp double) 0:1010 component-wise multiply ( temp double) 0:1010 'var5' ( temp double) 0:1010 Convert int8_t to double ( temp double) 0:1010 'var24' ( temp int8_t) 0:1012 Sequence 0:1012 move second child to first child ( temp int) 0:1012 'var316' ( temp int) 0:1012 component-wise multiply ( temp int) 0:1012 'var0' ( temp int) 0:1012 Convert int16_t to int ( temp int) 0:1012 'var25' ( temp int16_t) 0:1013 Sequence 0:1013 move second child to first child ( temp int64_t) 0:1013 'var317' ( temp int64_t) 0:1013 component-wise multiply ( temp int64_t) 0:1013 'var2' ( temp int64_t) 0:1013 Convert int16_t to int64_t ( temp int64_t) 0:1013 'var25' ( temp int16_t) 0:1014 Sequence 0:1014 move second child to first child ( temp uint) 0:1014 'var318' ( temp uint) 0:1014 component-wise multiply ( temp uint) 0:1014 'var1' ( temp uint) 0:1014 Convert int16_t to uint ( temp uint) 0:1014 'var25' ( temp int16_t) 0:1015 Sequence 0:1015 move second child to first child ( temp uint64_t) 0:1015 'var319' ( temp uint64_t) 0:1015 component-wise multiply ( temp uint64_t) 0:1015 'var3' ( temp uint64_t) 0:1015 Convert int16_t to uint64_t ( temp uint64_t) 0:1015 'var25' ( temp int16_t) 0:1016 Sequence 0:1016 move second child to first child ( temp float) 0:1016 'var320' ( temp float) 0:1016 component-wise multiply ( temp float) 0:1016 'var4' ( temp float) 0:1016 Convert int16_t to float ( temp float) 0:1016 'var25' ( temp int16_t) 0:1017 Sequence 0:1017 move second child to first child ( temp double) 0:1017 'var321' ( temp double) 0:1017 component-wise multiply ( temp double) 0:1017 'var5' ( temp double) 0:1017 Convert int16_t to double ( temp double) 0:1017 'var25' ( temp int16_t) 0:1019 Sequence 0:1019 move second child to first child ( temp 2-component vector of int) 0:1019 'var322' ( temp 2-component vector of int) 0:1019 component-wise multiply ( temp 2-component vector of int) 0:1019 'var6' ( temp 2-component vector of int) 0:1019 Convert int8_t to int ( temp 2-component vector of int) 0:1019 'var26' ( temp 2-component vector of int8_t) 0:1020 Sequence 0:1020 move second child to first child ( temp 2-component vector of int64_t) 0:1020 'var323' ( temp 2-component vector of int64_t) 0:1020 component-wise multiply ( temp 2-component vector of int64_t) 0:1020 'var8' ( temp 2-component vector of int64_t) 0:1020 Convert int8_t to int64_t ( temp 2-component vector of int64_t) 0:1020 'var26' ( temp 2-component vector of int8_t) 0:1021 Sequence 0:1021 move second child to first child ( temp 2-component vector of uint) 0:1021 'var324' ( temp 2-component vector of uint) 0:1021 component-wise multiply ( temp 2-component vector of uint) 0:1021 'var7' ( temp 2-component vector of uint) 0:1021 Convert int8_t to uint ( temp 2-component vector of uint) 0:1021 'var26' ( temp 2-component vector of int8_t) 0:1022 Sequence 0:1022 move second child to first child ( temp 2-component vector of uint64_t) 0:1022 'var325' ( temp 2-component vector of uint64_t) 0:1022 component-wise multiply ( temp 2-component vector of uint64_t) 0:1022 'var9' ( temp 2-component vector of uint64_t) 0:1022 Convert int8_t to uint64_t ( temp 2-component vector of uint64_t) 0:1022 'var26' ( temp 2-component vector of int8_t) 0:1023 Sequence 0:1023 move second child to first child ( temp 2-component vector of float) 0:1023 'var326' ( temp 2-component vector of float) 0:1023 component-wise multiply ( temp 2-component vector of float) 0:1023 'var10' ( temp 2-component vector of float) 0:1023 Convert int8_t to float ( temp 2-component vector of float) 0:1023 'var26' ( temp 2-component vector of int8_t) 0:1024 Sequence 0:1024 move second child to first child ( temp 2-component vector of double) 0:1024 'var327' ( temp 2-component vector of double) 0:1024 component-wise multiply ( temp 2-component vector of double) 0:1024 'var11' ( temp 2-component vector of double) 0:1024 Convert int8_t to double ( temp 2-component vector of double) 0:1024 'var26' ( temp 2-component vector of int8_t) 0:1026 Sequence 0:1026 move second child to first child ( temp 2-component vector of int) 0:1026 'var328' ( temp 2-component vector of int) 0:1026 component-wise multiply ( temp 2-component vector of int) 0:1026 'var6' ( temp 2-component vector of int) 0:1026 Convert int16_t to int ( temp 2-component vector of int) 0:1026 'var27' ( temp 2-component vector of int16_t) 0:1027 Sequence 0:1027 move second child to first child ( temp 2-component vector of int64_t) 0:1027 'var329' ( temp 2-component vector of int64_t) 0:1027 component-wise multiply ( temp 2-component vector of int64_t) 0:1027 'var8' ( temp 2-component vector of int64_t) 0:1027 Convert int16_t to int64_t ( temp 2-component vector of int64_t) 0:1027 'var27' ( temp 2-component vector of int16_t) 0:1028 Sequence 0:1028 move second child to first child ( temp 2-component vector of uint) 0:1028 'var330' ( temp 2-component vector of uint) 0:1028 component-wise multiply ( temp 2-component vector of uint) 0:1028 'var7' ( temp 2-component vector of uint) 0:1028 Convert int16_t to uint ( temp 2-component vector of uint) 0:1028 'var27' ( temp 2-component vector of int16_t) 0:1029 Sequence 0:1029 move second child to first child ( temp 2-component vector of uint64_t) 0:1029 'var331' ( temp 2-component vector of uint64_t) 0:1029 component-wise multiply ( temp 2-component vector of uint64_t) 0:1029 'var9' ( temp 2-component vector of uint64_t) 0:1029 Convert int16_t to uint64_t ( temp 2-component vector of uint64_t) 0:1029 'var27' ( temp 2-component vector of int16_t) 0:1030 Sequence 0:1030 move second child to first child ( temp 2-component vector of float) 0:1030 'var332' ( temp 2-component vector of float) 0:1030 component-wise multiply ( temp 2-component vector of float) 0:1030 'var10' ( temp 2-component vector of float) 0:1030 Convert int16_t to float ( temp 2-component vector of float) 0:1030 'var27' ( temp 2-component vector of int16_t) 0:1031 Sequence 0:1031 move second child to first child ( temp 2-component vector of double) 0:1031 'var333' ( temp 2-component vector of double) 0:1031 component-wise multiply ( temp 2-component vector of double) 0:1031 'var11' ( temp 2-component vector of double) 0:1031 Convert int16_t to double ( temp 2-component vector of double) 0:1031 'var27' ( temp 2-component vector of int16_t) 0:1033 Sequence 0:1033 move second child to first child ( temp 3-component vector of int) 0:1033 'var334' ( temp 3-component vector of int) 0:1033 component-wise multiply ( temp 3-component vector of int) 0:1033 'var12' ( temp 3-component vector of int) 0:1033 Convert int8_t to int ( temp 3-component vector of int) 0:1033 'var28' ( temp 3-component vector of int8_t) 0:1034 Sequence 0:1034 move second child to first child ( temp 3-component vector of int64_t) 0:1034 'var335' ( temp 3-component vector of int64_t) 0:1034 component-wise multiply ( temp 3-component vector of int64_t) 0:1034 'var14' ( temp 3-component vector of int64_t) 0:1034 Convert int8_t to int64_t ( temp 3-component vector of int64_t) 0:1034 'var28' ( temp 3-component vector of int8_t) 0:1035 Sequence 0:1035 move second child to first child ( temp 3-component vector of uint) 0:1035 'var336' ( temp 3-component vector of uint) 0:1035 component-wise multiply ( temp 3-component vector of uint) 0:1035 'var13' ( temp 3-component vector of uint) 0:1035 Convert int8_t to uint ( temp 3-component vector of uint) 0:1035 'var28' ( temp 3-component vector of int8_t) 0:1036 Sequence 0:1036 move second child to first child ( temp 3-component vector of uint64_t) 0:1036 'var337' ( temp 3-component vector of uint64_t) 0:1036 component-wise multiply ( temp 3-component vector of uint64_t) 0:1036 'var15' ( temp 3-component vector of uint64_t) 0:1036 Convert int8_t to uint64_t ( temp 3-component vector of uint64_t) 0:1036 'var28' ( temp 3-component vector of int8_t) 0:1037 Sequence 0:1037 move second child to first child ( temp 3-component vector of float) 0:1037 'var338' ( temp 3-component vector of float) 0:1037 component-wise multiply ( temp 3-component vector of float) 0:1037 'var16' ( temp 3-component vector of float) 0:1037 Convert int8_t to float ( temp 3-component vector of float) 0:1037 'var28' ( temp 3-component vector of int8_t) 0:1038 Sequence 0:1038 move second child to first child ( temp 3-component vector of double) 0:1038 'var339' ( temp 3-component vector of double) 0:1038 component-wise multiply ( temp 3-component vector of double) 0:1038 'var17' ( temp 3-component vector of double) 0:1038 Convert int8_t to double ( temp 3-component vector of double) 0:1038 'var28' ( temp 3-component vector of int8_t) 0:1040 Sequence 0:1040 move second child to first child ( temp 3-component vector of uint) 0:1040 'var340' ( temp 3-component vector of uint) 0:1040 component-wise multiply ( temp 3-component vector of uint) 0:1040 'var13' ( temp 3-component vector of uint) 0:1040 Convert int16_t to uint ( temp 3-component vector of uint) 0:1040 'var29' ( temp 3-component vector of int16_t) 0:1041 Sequence 0:1041 move second child to first child ( temp 3-component vector of uint64_t) 0:1041 'var341' ( temp 3-component vector of uint64_t) 0:1041 component-wise multiply ( temp 3-component vector of uint64_t) 0:1041 'var15' ( temp 3-component vector of uint64_t) 0:1041 Convert int16_t to uint64_t ( temp 3-component vector of uint64_t) 0:1041 'var29' ( temp 3-component vector of int16_t) 0:1042 Sequence 0:1042 move second child to first child ( temp 3-component vector of float) 0:1042 'var342' ( temp 3-component vector of float) 0:1042 component-wise multiply ( temp 3-component vector of float) 0:1042 'var16' ( temp 3-component vector of float) 0:1042 Convert int16_t to float ( temp 3-component vector of float) 0:1042 'var29' ( temp 3-component vector of int16_t) 0:1043 Sequence 0:1043 move second child to first child ( temp 3-component vector of double) 0:1043 'var343' ( temp 3-component vector of double) 0:1043 component-wise multiply ( temp 3-component vector of double) 0:1043 'var17' ( temp 3-component vector of double) 0:1043 Convert int16_t to double ( temp 3-component vector of double) 0:1043 'var29' ( temp 3-component vector of int16_t) 0:1045 Sequence 0:1045 move second child to first child ( temp 4-component vector of int) 0:1045 'var344' ( temp 4-component vector of int) 0:1045 component-wise multiply ( temp 4-component vector of int) 0:1045 'var18' ( temp 4-component vector of int) 0:1045 Convert int8_t to int ( temp 4-component vector of int) 0:1045 'var30' ( temp 4-component vector of int8_t) 0:1046 Sequence 0:1046 move second child to first child ( temp 4-component vector of int64_t) 0:1046 'var345' ( temp 4-component vector of int64_t) 0:1046 component-wise multiply ( temp 4-component vector of int64_t) 0:1046 'var20' ( temp 4-component vector of int64_t) 0:1046 Convert int8_t to int64_t ( temp 4-component vector of int64_t) 0:1046 'var30' ( temp 4-component vector of int8_t) 0:1047 Sequence 0:1047 move second child to first child ( temp 4-component vector of uint) 0:1047 'var346' ( temp 4-component vector of uint) 0:1047 component-wise multiply ( temp 4-component vector of uint) 0:1047 'var19' ( temp 4-component vector of uint) 0:1047 Convert int8_t to uint ( temp 4-component vector of uint) 0:1047 'var30' ( temp 4-component vector of int8_t) 0:1048 Sequence 0:1048 move second child to first child ( temp 4-component vector of uint64_t) 0:1048 'var347' ( temp 4-component vector of uint64_t) 0:1048 component-wise multiply ( temp 4-component vector of uint64_t) 0:1048 'var21' ( temp 4-component vector of uint64_t) 0:1048 Convert int8_t to uint64_t ( temp 4-component vector of uint64_t) 0:1048 'var30' ( temp 4-component vector of int8_t) 0:1049 Sequence 0:1049 move second child to first child ( temp 4-component vector of float) 0:1049 'var348' ( temp 4-component vector of float) 0:1049 component-wise multiply ( temp 4-component vector of float) 0:1049 'var22' ( temp 4-component vector of float) 0:1049 Convert int8_t to float ( temp 4-component vector of float) 0:1049 'var30' ( temp 4-component vector of int8_t) 0:1050 Sequence 0:1050 move second child to first child ( temp 4-component vector of double) 0:1050 'var349' ( temp 4-component vector of double) 0:1050 component-wise multiply ( temp 4-component vector of double) 0:1050 'var23' ( temp 4-component vector of double) 0:1050 Convert int8_t to double ( temp 4-component vector of double) 0:1050 'var30' ( temp 4-component vector of int8_t) 0:1052 Sequence 0:1052 move second child to first child ( temp 4-component vector of uint) 0:1052 'var350' ( temp 4-component vector of uint) 0:1052 component-wise multiply ( temp 4-component vector of uint) 0:1052 'var19' ( temp 4-component vector of uint) 0:1052 Convert int16_t to uint ( temp 4-component vector of uint) 0:1052 'var31' ( temp 4-component vector of int16_t) 0:1053 Sequence 0:1053 move second child to first child ( temp 4-component vector of uint64_t) 0:1053 'var351' ( temp 4-component vector of uint64_t) 0:1053 component-wise multiply ( temp 4-component vector of uint64_t) 0:1053 'var21' ( temp 4-component vector of uint64_t) 0:1053 Convert int16_t to uint64_t ( temp 4-component vector of uint64_t) 0:1053 'var31' ( temp 4-component vector of int16_t) 0:1054 Sequence 0:1054 move second child to first child ( temp 4-component vector of float) 0:1054 'var352' ( temp 4-component vector of float) 0:1054 component-wise multiply ( temp 4-component vector of float) 0:1054 'var22' ( temp 4-component vector of float) 0:1054 Convert int16_t to float ( temp 4-component vector of float) 0:1054 'var31' ( temp 4-component vector of int16_t) 0:1055 Sequence 0:1055 move second child to first child ( temp 4-component vector of double) 0:1055 'var353' ( temp 4-component vector of double) 0:1055 component-wise multiply ( temp 4-component vector of double) 0:1055 'var23' ( temp 4-component vector of double) 0:1055 Convert int16_t to double ( temp 4-component vector of double) 0:1055 'var31' ( temp 4-component vector of int16_t) 0:1057 Sequence 0:1057 move second child to first child ( temp uint64_t) 0:1057 'var354' ( temp uint64_t) 0:1057 component-wise multiply ( temp uint64_t) 0:1057 'var3' ( temp uint64_t) 0:1057 Convert int64_t to uint64_t ( temp uint64_t) 0:1057 'var2' ( temp int64_t) 0:1058 Sequence 0:1058 move second child to first child ( temp double) 0:1058 'var355' ( temp double) 0:1058 component-wise multiply ( temp double) 0:1058 'var5' ( temp double) 0:1058 Convert int64_t to double ( temp double) 0:1058 'var2' ( temp int64_t) 0:1060 Sequence 0:1060 move second child to first child ( temp 2-component vector of uint64_t) 0:1060 'var356' ( temp 2-component vector of uint64_t) 0:1060 component-wise multiply ( temp 2-component vector of uint64_t) 0:1060 'var9' ( temp 2-component vector of uint64_t) 0:1060 Convert int64_t to uint64_t ( temp 2-component vector of uint64_t) 0:1060 'var8' ( temp 2-component vector of int64_t) 0:1061 Sequence 0:1061 move second child to first child ( temp 2-component vector of double) 0:1061 'var357' ( temp 2-component vector of double) 0:1061 component-wise multiply ( temp 2-component vector of double) 0:1061 'var11' ( temp 2-component vector of double) 0:1061 Convert int64_t to double ( temp 2-component vector of double) 0:1061 'var8' ( temp 2-component vector of int64_t) 0:1063 Sequence 0:1063 move second child to first child ( temp 3-component vector of uint64_t) 0:1063 'var358' ( temp 3-component vector of uint64_t) 0:1063 component-wise multiply ( temp 3-component vector of uint64_t) 0:1063 'var15' ( temp 3-component vector of uint64_t) 0:1063 Convert int64_t to uint64_t ( temp 3-component vector of uint64_t) 0:1063 'var14' ( temp 3-component vector of int64_t) 0:1064 Sequence 0:1064 move second child to first child ( temp 3-component vector of double) 0:1064 'var359' ( temp 3-component vector of double) 0:1064 component-wise multiply ( temp 3-component vector of double) 0:1064 'var17' ( temp 3-component vector of double) 0:1064 Convert int64_t to double ( temp 3-component vector of double) 0:1064 'var14' ( temp 3-component vector of int64_t) 0:1066 Sequence 0:1066 move second child to first child ( temp 4-component vector of uint64_t) 0:1066 'var360' ( temp 4-component vector of uint64_t) 0:1066 component-wise multiply ( temp 4-component vector of uint64_t) 0:1066 'var21' ( temp 4-component vector of uint64_t) 0:1066 Convert int64_t to uint64_t ( temp 4-component vector of uint64_t) 0:1066 'var20' ( temp 4-component vector of int64_t) 0:1067 Sequence 0:1067 move second child to first child ( temp 4-component vector of double) 0:1067 'var361' ( temp 4-component vector of double) 0:1067 component-wise multiply ( temp 4-component vector of double) 0:1067 'var23' ( temp 4-component vector of double) 0:1067 Convert int64_t to double ( temp 4-component vector of double) 0:1067 'var20' ( temp 4-component vector of int64_t) 0:1069 Sequence 0:1069 move second child to first child ( temp uint64_t) 0:1069 'var362' ( temp uint64_t) 0:1069 component-wise multiply ( temp uint64_t) 0:1069 'var3' ( temp uint64_t) 0:1069 Convert uint to uint64_t ( temp uint64_t) 0:1069 'var1' ( temp uint) 0:1070 Sequence 0:1070 move second child to first child ( temp float) 0:1070 'var363' ( temp float) 0:1070 component-wise multiply ( temp float) 0:1070 'var4' ( temp float) 0:1070 Convert uint to float ( temp float) 0:1070 'var1' ( temp uint) 0:1071 Sequence 0:1071 move second child to first child ( temp double) 0:1071 'var364' ( temp double) 0:1071 component-wise multiply ( temp double) 0:1071 'var5' ( temp double) 0:1071 Convert uint to double ( temp double) 0:1071 'var1' ( temp uint) 0:1073 Sequence 0:1073 move second child to first child ( temp 2-component vector of uint64_t) 0:1073 'var365' ( temp 2-component vector of uint64_t) 0:1073 component-wise multiply ( temp 2-component vector of uint64_t) 0:1073 'var9' ( temp 2-component vector of uint64_t) 0:1073 Convert uint to uint64_t ( temp 2-component vector of uint64_t) 0:1073 'var7' ( temp 2-component vector of uint) 0:1074 Sequence 0:1074 move second child to first child ( temp 2-component vector of float) 0:1074 'var366' ( temp 2-component vector of float) 0:1074 component-wise multiply ( temp 2-component vector of float) 0:1074 'var10' ( temp 2-component vector of float) 0:1074 Convert uint to float ( temp 2-component vector of float) 0:1074 'var7' ( temp 2-component vector of uint) 0:1075 Sequence 0:1075 move second child to first child ( temp 2-component vector of double) 0:1075 'var367' ( temp 2-component vector of double) 0:1075 component-wise multiply ( temp 2-component vector of double) 0:1075 'var11' ( temp 2-component vector of double) 0:1075 Convert uint to double ( temp 2-component vector of double) 0:1075 'var7' ( temp 2-component vector of uint) 0:1077 Sequence 0:1077 move second child to first child ( temp 3-component vector of uint64_t) 0:1077 'var368' ( temp 3-component vector of uint64_t) 0:1077 component-wise multiply ( temp 3-component vector of uint64_t) 0:1077 'var15' ( temp 3-component vector of uint64_t) 0:1077 Convert uint to uint64_t ( temp 3-component vector of uint64_t) 0:1077 'var13' ( temp 3-component vector of uint) 0:1078 Sequence 0:1078 move second child to first child ( temp 3-component vector of float) 0:1078 'var369' ( temp 3-component vector of float) 0:1078 component-wise multiply ( temp 3-component vector of float) 0:1078 'var16' ( temp 3-component vector of float) 0:1078 Convert uint to float ( temp 3-component vector of float) 0:1078 'var13' ( temp 3-component vector of uint) 0:1079 Sequence 0:1079 move second child to first child ( temp 3-component vector of double) 0:1079 'var370' ( temp 3-component vector of double) 0:1079 component-wise multiply ( temp 3-component vector of double) 0:1079 'var17' ( temp 3-component vector of double) 0:1079 Convert uint to double ( temp 3-component vector of double) 0:1079 'var13' ( temp 3-component vector of uint) 0:1081 Sequence 0:1081 move second child to first child ( temp 4-component vector of uint64_t) 0:1081 'var371' ( temp 4-component vector of uint64_t) 0:1081 component-wise multiply ( temp 4-component vector of uint64_t) 0:1081 'var21' ( temp 4-component vector of uint64_t) 0:1081 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:1081 'var19' ( temp 4-component vector of uint) 0:1082 Sequence 0:1082 move second child to first child ( temp 4-component vector of float) 0:1082 'var372' ( temp 4-component vector of float) 0:1082 component-wise multiply ( temp 4-component vector of float) 0:1082 'var22' ( temp 4-component vector of float) 0:1082 Convert uint to float ( temp 4-component vector of float) 0:1082 'var19' ( temp 4-component vector of uint) 0:1083 Sequence 0:1083 move second child to first child ( temp 4-component vector of double) 0:1083 'var373' ( temp 4-component vector of double) 0:1083 component-wise multiply ( temp 4-component vector of double) 0:1083 'var23' ( temp 4-component vector of double) 0:1083 Convert uint to double ( temp 4-component vector of double) 0:1083 'var19' ( temp 4-component vector of uint) 0:1085 Sequence 0:1085 move second child to first child ( temp uint) 0:1085 'var374' ( temp uint) 0:1085 component-wise multiply ( temp uint) 0:1085 'var1' ( temp uint) 0:1085 Convert uint8_t to uint ( temp uint) 0:1085 'var32' ( temp uint8_t) 0:1086 Sequence 0:1086 move second child to first child ( temp uint64_t) 0:1086 'var375' ( temp uint64_t) 0:1086 component-wise multiply ( temp uint64_t) 0:1086 'var3' ( temp uint64_t) 0:1086 Convert uint8_t to uint64_t ( temp uint64_t) 0:1086 'var32' ( temp uint8_t) 0:1087 Sequence 0:1087 move second child to first child ( temp float) 0:1087 'var376' ( temp float) 0:1087 component-wise multiply ( temp float) 0:1087 'var4' ( temp float) 0:1087 Convert uint8_t to float ( temp float) 0:1087 'var32' ( temp uint8_t) 0:1088 Sequence 0:1088 move second child to first child ( temp double) 0:1088 'var377' ( temp double) 0:1088 component-wise multiply ( temp double) 0:1088 'var5' ( temp double) 0:1088 Convert uint8_t to double ( temp double) 0:1088 'var32' ( temp uint8_t) 0:1090 Sequence 0:1090 move second child to first child ( temp uint) 0:1090 'var378' ( temp uint) 0:1090 component-wise multiply ( temp uint) 0:1090 'var1' ( temp uint) 0:1090 Convert uint16_t to uint ( temp uint) 0:1090 'var33' ( temp uint16_t) 0:1091 Sequence 0:1091 move second child to first child ( temp uint64_t) 0:1091 'var379' ( temp uint64_t) 0:1091 component-wise multiply ( temp uint64_t) 0:1091 'var3' ( temp uint64_t) 0:1091 Convert uint16_t to uint64_t ( temp uint64_t) 0:1091 'var33' ( temp uint16_t) 0:1092 Sequence 0:1092 move second child to first child ( temp float) 0:1092 'var380' ( temp float) 0:1092 component-wise multiply ( temp float) 0:1092 'var4' ( temp float) 0:1092 Convert uint16_t to float ( temp float) 0:1092 'var33' ( temp uint16_t) 0:1093 Sequence 0:1093 move second child to first child ( temp double) 0:1093 'var381' ( temp double) 0:1093 component-wise multiply ( temp double) 0:1093 'var5' ( temp double) 0:1093 Convert uint16_t to double ( temp double) 0:1093 'var33' ( temp uint16_t) 0:1095 Sequence 0:1095 move second child to first child ( temp 2-component vector of uint) 0:1095 'var382' ( temp 2-component vector of uint) 0:1095 component-wise multiply ( temp 2-component vector of uint) 0:1095 'var7' ( temp 2-component vector of uint) 0:1095 Convert uint8_t to uint ( temp 2-component vector of uint) 0:1095 'var34' ( temp 2-component vector of uint8_t) 0:1096 Sequence 0:1096 move second child to first child ( temp 2-component vector of uint64_t) 0:1096 'var383' ( temp 2-component vector of uint64_t) 0:1096 component-wise multiply ( temp 2-component vector of uint64_t) 0:1096 'var9' ( temp 2-component vector of uint64_t) 0:1096 Convert uint8_t to uint64_t ( temp 2-component vector of uint64_t) 0:1096 'var34' ( temp 2-component vector of uint8_t) 0:1097 Sequence 0:1097 move second child to first child ( temp 2-component vector of float) 0:1097 'var384' ( temp 2-component vector of float) 0:1097 component-wise multiply ( temp 2-component vector of float) 0:1097 'var10' ( temp 2-component vector of float) 0:1097 Convert uint8_t to float ( temp 2-component vector of float) 0:1097 'var34' ( temp 2-component vector of uint8_t) 0:1098 Sequence 0:1098 move second child to first child ( temp 2-component vector of double) 0:1098 'var385' ( temp 2-component vector of double) 0:1098 component-wise multiply ( temp 2-component vector of double) 0:1098 'var11' ( temp 2-component vector of double) 0:1098 Convert uint8_t to double ( temp 2-component vector of double) 0:1098 'var34' ( temp 2-component vector of uint8_t) 0:1100 Sequence 0:1100 move second child to first child ( temp 2-component vector of uint) 0:1100 'var386' ( temp 2-component vector of uint) 0:1100 component-wise multiply ( temp 2-component vector of uint) 0:1100 'var7' ( temp 2-component vector of uint) 0:1100 Convert uint16_t to uint ( temp 2-component vector of uint) 0:1100 'var35' ( temp 2-component vector of uint16_t) 0:1101 Sequence 0:1101 move second child to first child ( temp 2-component vector of uint64_t) 0:1101 'var387' ( temp 2-component vector of uint64_t) 0:1101 component-wise multiply ( temp 2-component vector of uint64_t) 0:1101 'var9' ( temp 2-component vector of uint64_t) 0:1101 Convert uint16_t to uint64_t ( temp 2-component vector of uint64_t) 0:1101 'var35' ( temp 2-component vector of uint16_t) 0:1102 Sequence 0:1102 move second child to first child ( temp 2-component vector of float) 0:1102 'var388' ( temp 2-component vector of float) 0:1102 component-wise multiply ( temp 2-component vector of float) 0:1102 'var10' ( temp 2-component vector of float) 0:1102 Convert uint16_t to float ( temp 2-component vector of float) 0:1102 'var35' ( temp 2-component vector of uint16_t) 0:1103 Sequence 0:1103 move second child to first child ( temp 2-component vector of double) 0:1103 'var389' ( temp 2-component vector of double) 0:1103 component-wise multiply ( temp 2-component vector of double) 0:1103 'var11' ( temp 2-component vector of double) 0:1103 Convert uint16_t to double ( temp 2-component vector of double) 0:1103 'var35' ( temp 2-component vector of uint16_t) 0:1105 Sequence 0:1105 move second child to first child ( temp 3-component vector of uint) 0:1105 'var390' ( temp 3-component vector of uint) 0:1105 component-wise multiply ( temp 3-component vector of uint) 0:1105 'var13' ( temp 3-component vector of uint) 0:1105 Convert uint8_t to uint ( temp 3-component vector of uint) 0:1105 'var36' ( temp 3-component vector of uint8_t) 0:1106 Sequence 0:1106 move second child to first child ( temp 3-component vector of uint64_t) 0:1106 'var391' ( temp 3-component vector of uint64_t) 0:1106 component-wise multiply ( temp 3-component vector of uint64_t) 0:1106 'var15' ( temp 3-component vector of uint64_t) 0:1106 Convert uint8_t to uint64_t ( temp 3-component vector of uint64_t) 0:1106 'var36' ( temp 3-component vector of uint8_t) 0:1107 Sequence 0:1107 move second child to first child ( temp 3-component vector of float) 0:1107 'var392' ( temp 3-component vector of float) 0:1107 component-wise multiply ( temp 3-component vector of float) 0:1107 'var16' ( temp 3-component vector of float) 0:1107 Convert uint8_t to float ( temp 3-component vector of float) 0:1107 'var36' ( temp 3-component vector of uint8_t) 0:1108 Sequence 0:1108 move second child to first child ( temp 3-component vector of double) 0:1108 'var393' ( temp 3-component vector of double) 0:1108 component-wise multiply ( temp 3-component vector of double) 0:1108 'var17' ( temp 3-component vector of double) 0:1108 Convert uint8_t to double ( temp 3-component vector of double) 0:1108 'var36' ( temp 3-component vector of uint8_t) 0:1110 Sequence 0:1110 move second child to first child ( temp 4-component vector of uint) 0:1110 'var394' ( temp 4-component vector of uint) 0:1110 component-wise multiply ( temp 4-component vector of uint) 0:1110 'var19' ( temp 4-component vector of uint) 0:1110 Convert uint8_t to uint ( temp 4-component vector of uint) 0:1110 'var37' ( temp 4-component vector of uint8_t) 0:1111 Sequence 0:1111 move second child to first child ( temp 4-component vector of uint64_t) 0:1111 'var395' ( temp 4-component vector of uint64_t) 0:1111 component-wise multiply ( temp 4-component vector of uint64_t) 0:1111 'var21' ( temp 4-component vector of uint64_t) 0:1111 Convert uint8_t to uint64_t ( temp 4-component vector of uint64_t) 0:1111 'var37' ( temp 4-component vector of uint8_t) 0:1112 Sequence 0:1112 move second child to first child ( temp 4-component vector of float) 0:1112 'var396' ( temp 4-component vector of float) 0:1112 component-wise multiply ( temp 4-component vector of float) 0:1112 'var22' ( temp 4-component vector of float) 0:1112 Convert uint8_t to float ( temp 4-component vector of float) 0:1112 'var37' ( temp 4-component vector of uint8_t) 0:1113 Sequence 0:1113 move second child to first child ( temp 4-component vector of double) 0:1113 'var397' ( temp 4-component vector of double) 0:1113 component-wise multiply ( temp 4-component vector of double) 0:1113 'var23' ( temp 4-component vector of double) 0:1113 Convert uint8_t to double ( temp 4-component vector of double) 0:1113 'var37' ( temp 4-component vector of uint8_t) 0:1115 Sequence 0:1115 move second child to first child ( temp double) 0:1115 'var398' ( temp double) 0:1115 component-wise multiply ( temp double) 0:1115 'var5' ( temp double) 0:1115 Convert uint64_t to double ( temp double) 0:1115 'var3' ( temp uint64_t) 0:1117 Sequence 0:1117 move second child to first child ( temp 2-component vector of double) 0:1117 'var399' ( temp 2-component vector of double) 0:1117 component-wise multiply ( temp 2-component vector of double) 0:1117 'var11' ( temp 2-component vector of double) 0:1117 Convert uint64_t to double ( temp 2-component vector of double) 0:1117 'var9' ( temp 2-component vector of uint64_t) 0:1119 Sequence 0:1119 move second child to first child ( temp 3-component vector of double) 0:1119 'var400' ( temp 3-component vector of double) 0:1119 component-wise multiply ( temp 3-component vector of double) 0:1119 'var17' ( temp 3-component vector of double) 0:1119 Convert uint64_t to double ( temp 3-component vector of double) 0:1119 'var15' ( temp 3-component vector of uint64_t) 0:1121 Sequence 0:1121 move second child to first child ( temp 4-component vector of double) 0:1121 'var401' ( temp 4-component vector of double) 0:1121 component-wise multiply ( temp 4-component vector of double) 0:1121 'var23' ( temp 4-component vector of double) 0:1121 Convert uint64_t to double ( temp 4-component vector of double) 0:1121 'var21' ( temp 4-component vector of uint64_t) 0:1123 Sequence 0:1123 move second child to first child ( temp double) 0:1123 'var402' ( temp double) 0:1123 component-wise multiply ( temp double) 0:1123 'var5' ( temp double) 0:1123 Convert float to double ( temp double) 0:1123 'var4' ( temp float) 0:1125 Sequence 0:1125 move second child to first child ( temp 2-component vector of double) 0:1125 'var403' ( temp 2-component vector of double) 0:1125 component-wise multiply ( temp 2-component vector of double) 0:1125 'var11' ( temp 2-component vector of double) 0:1125 Convert float to double ( temp 2-component vector of double) 0:1125 'var10' ( temp 2-component vector of float) 0:1127 Sequence 0:1127 move second child to first child ( temp 3-component vector of double) 0:1127 'var404' ( temp 3-component vector of double) 0:1127 component-wise multiply ( temp 3-component vector of double) 0:1127 'var17' ( temp 3-component vector of double) 0:1127 Convert float to double ( temp 3-component vector of double) 0:1127 'var16' ( temp 3-component vector of float) 0:1129 Sequence 0:1129 move second child to first child ( temp 4-component vector of double) 0:1129 'var405' ( temp 4-component vector of double) 0:1129 component-wise multiply ( temp 4-component vector of double) 0:1129 'var23' ( temp 4-component vector of double) 0:1129 Convert float to double ( temp 4-component vector of double) 0:1129 'var22' ( temp 4-component vector of float) 0:1131 Sequence 0:1131 move second child to first child ( temp float) 0:1131 'var406' ( temp float) 0:1131 component-wise multiply ( temp float) 0:1131 'var4' ( temp float) 0:1131 Convert float16_t to float ( temp float) 0:1131 'var38' ( temp float16_t) 0:1132 Sequence 0:1132 move second child to first child ( temp double) 0:1132 'var407' ( temp double) 0:1132 component-wise multiply ( temp double) 0:1132 'var5' ( temp double) 0:1132 Convert float16_t to double ( temp double) 0:1132 'var38' ( temp float16_t) 0:1134 Sequence 0:1134 move second child to first child ( temp 2-component vector of float) 0:1134 'var408' ( temp 2-component vector of float) 0:1134 component-wise multiply ( temp 2-component vector of float) 0:1134 'var10' ( temp 2-component vector of float) 0:1134 Convert float16_t to float ( temp 2-component vector of float) 0:1134 'var39' ( temp 2-component vector of float16_t) 0:1135 Sequence 0:1135 move second child to first child ( temp 2-component vector of double) 0:1135 'var409' ( temp 2-component vector of double) 0:1135 component-wise multiply ( temp 2-component vector of double) 0:1135 'var11' ( temp 2-component vector of double) 0:1135 Convert float16_t to double ( temp 2-component vector of double) 0:1135 'var39' ( temp 2-component vector of float16_t) 0:1137 Sequence 0:1137 move second child to first child ( temp 3-component vector of float) 0:1137 'var410' ( temp 3-component vector of float) 0:1137 component-wise multiply ( temp 3-component vector of float) 0:1137 'var16' ( temp 3-component vector of float) 0:1137 Convert float16_t to float ( temp 3-component vector of float) 0:1137 'var40' ( temp 3-component vector of float16_t) 0:1138 Sequence 0:1138 move second child to first child ( temp 3-component vector of double) 0:1138 'var411' ( temp 3-component vector of double) 0:1138 component-wise multiply ( temp 3-component vector of double) 0:1138 'var17' ( temp 3-component vector of double) 0:1138 Convert float16_t to double ( temp 3-component vector of double) 0:1138 'var40' ( temp 3-component vector of float16_t) 0:1140 Sequence 0:1140 move second child to first child ( temp 4-component vector of float) 0:1140 'var412' ( temp 4-component vector of float) 0:1140 component-wise multiply ( temp 4-component vector of float) 0:1140 'var22' ( temp 4-component vector of float) 0:1140 Convert float16_t to float ( temp 4-component vector of float) 0:1140 'var41' ( temp 4-component vector of float16_t) 0:1141 Sequence 0:1141 move second child to first child ( temp 4-component vector of double) 0:1141 'var413' ( temp 4-component vector of double) 0:1141 component-wise multiply ( temp 4-component vector of double) 0:1141 'var23' ( temp 4-component vector of double) 0:1141 Convert float16_t to double ( temp 4-component vector of double) 0:1141 'var41' ( temp 4-component vector of float16_t) 0:1144 Function Definition: testModuloOps( ( global void) 0:1144 Function Parameters: 0:1145 Sequence 0:1145 Sequence 0:1145 move second child to first child ( temp int) 0:1145 'var0' ( temp int) 0:1145 Constant: 0:1145 0 (const int) 0:1146 Sequence 0:1146 move second child to first child ( temp uint) 0:1146 'var1' ( temp uint) 0:1146 Constant: 0:1146 1 (const uint) 0:1147 Sequence 0:1147 move second child to first child ( temp int64_t) 0:1147 'var2' ( temp int64_t) 0:1147 Constant: 0:1147 2 (const int64_t) 0:1148 Sequence 0:1148 move second child to first child ( temp uint64_t) 0:1148 'var3' ( temp uint64_t) 0:1148 Constant: 0:1148 3 (const uint64_t) 0:1149 Sequence 0:1149 move second child to first child ( temp float) 0:1149 'var4' ( temp float) 0:1149 Constant: 0:1149 4.000000 0:1150 Sequence 0:1150 move second child to first child ( temp double) 0:1150 'var5' ( temp double) 0:1150 Constant: 0:1150 5.000000 0:1151 Sequence 0:1151 move second child to first child ( temp 2-component vector of int) 0:1151 'var6' ( temp 2-component vector of int) 0:1151 Constant: 0:1151 6 (const int) 0:1151 6 (const int) 0:1152 Sequence 0:1152 move second child to first child ( temp 2-component vector of uint) 0:1152 'var7' ( temp 2-component vector of uint) 0:1152 Constant: 0:1152 7 (const uint) 0:1152 7 (const uint) 0:1153 Sequence 0:1153 move second child to first child ( temp 2-component vector of int64_t) 0:1153 'var8' ( temp 2-component vector of int64_t) 0:1153 Constant: 0:1153 8 (const int64_t) 0:1153 8 (const int64_t) 0:1154 Sequence 0:1154 move second child to first child ( temp 2-component vector of uint64_t) 0:1154 'var9' ( temp 2-component vector of uint64_t) 0:1154 Constant: 0:1154 9 (const uint64_t) 0:1154 9 (const uint64_t) 0:1155 Sequence 0:1155 move second child to first child ( temp 2-component vector of float) 0:1155 'var10' ( temp 2-component vector of float) 0:1155 Constant: 0:1155 10.000000 0:1155 10.000000 0:1156 Sequence 0:1156 move second child to first child ( temp 2-component vector of double) 0:1156 'var11' ( temp 2-component vector of double) 0:1156 Constant: 0:1156 11.000000 0:1156 11.000000 0:1157 Sequence 0:1157 move second child to first child ( temp 3-component vector of int) 0:1157 'var12' ( temp 3-component vector of int) 0:1157 Constant: 0:1157 12 (const int) 0:1157 12 (const int) 0:1157 12 (const int) 0:1158 Sequence 0:1158 move second child to first child ( temp 3-component vector of uint) 0:1158 'var13' ( temp 3-component vector of uint) 0:1158 Constant: 0:1158 13 (const uint) 0:1158 13 (const uint) 0:1158 13 (const uint) 0:1159 Sequence 0:1159 move second child to first child ( temp 3-component vector of int64_t) 0:1159 'var14' ( temp 3-component vector of int64_t) 0:1159 Constant: 0:1159 14 (const int64_t) 0:1159 14 (const int64_t) 0:1159 14 (const int64_t) 0:1160 Sequence 0:1160 move second child to first child ( temp 3-component vector of uint64_t) 0:1160 'var15' ( temp 3-component vector of uint64_t) 0:1160 Constant: 0:1160 15 (const uint64_t) 0:1160 15 (const uint64_t) 0:1160 15 (const uint64_t) 0:1161 Sequence 0:1161 move second child to first child ( temp 3-component vector of float) 0:1161 'var16' ( temp 3-component vector of float) 0:1161 Constant: 0:1161 16.000000 0:1161 16.000000 0:1161 16.000000 0:1162 Sequence 0:1162 move second child to first child ( temp 3-component vector of double) 0:1162 'var17' ( temp 3-component vector of double) 0:1162 Constant: 0:1162 17.000000 0:1162 17.000000 0:1162 17.000000 0:1163 Sequence 0:1163 move second child to first child ( temp 4-component vector of int) 0:1163 'var18' ( temp 4-component vector of int) 0:1163 Constant: 0:1163 18 (const int) 0:1163 18 (const int) 0:1163 18 (const int) 0:1163 18 (const int) 0:1164 Sequence 0:1164 move second child to first child ( temp 4-component vector of uint) 0:1164 'var19' ( temp 4-component vector of uint) 0:1164 Constant: 0:1164 19 (const uint) 0:1164 19 (const uint) 0:1164 19 (const uint) 0:1164 19 (const uint) 0:1165 Sequence 0:1165 move second child to first child ( temp 4-component vector of int64_t) 0:1165 'var20' ( temp 4-component vector of int64_t) 0:1165 Constant: 0:1165 20 (const int64_t) 0:1165 20 (const int64_t) 0:1165 20 (const int64_t) 0:1165 20 (const int64_t) 0:1166 Sequence 0:1166 move second child to first child ( temp 4-component vector of uint64_t) 0:1166 'var21' ( temp 4-component vector of uint64_t) 0:1166 Constant: 0:1166 21 (const uint64_t) 0:1166 21 (const uint64_t) 0:1166 21 (const uint64_t) 0:1166 21 (const uint64_t) 0:1167 Sequence 0:1167 move second child to first child ( temp 4-component vector of float) 0:1167 'var22' ( temp 4-component vector of float) 0:1167 Constant: 0:1167 22.000000 0:1167 22.000000 0:1167 22.000000 0:1167 22.000000 0:1168 Sequence 0:1168 move second child to first child ( temp 4-component vector of double) 0:1168 'var23' ( temp 4-component vector of double) 0:1168 Constant: 0:1168 23.000000 0:1168 23.000000 0:1168 23.000000 0:1168 23.000000 0:1169 Sequence 0:1169 move second child to first child ( temp int8_t) 0:1169 'var24' ( temp int8_t) 0:1169 Constant: 0:1169 24 (const int8_t) 0:1170 Sequence 0:1170 move second child to first child ( temp int16_t) 0:1170 'var25' ( temp int16_t) 0:1170 Constant: 0:1170 25 (const int16_t) 0:1171 Sequence 0:1171 move second child to first child ( temp 2-component vector of int8_t) 0:1171 'var26' ( temp 2-component vector of int8_t) 0:1171 Constant: 0:1171 26 (const int8_t) 0:1171 26 (const int8_t) 0:1172 Sequence 0:1172 move second child to first child ( temp 2-component vector of int16_t) 0:1172 'var27' ( temp 2-component vector of int16_t) 0:1172 Constant: 0:1172 27 (const int16_t) 0:1172 27 (const int16_t) 0:1173 Sequence 0:1173 move second child to first child ( temp 3-component vector of int8_t) 0:1173 'var28' ( temp 3-component vector of int8_t) 0:1173 Constant: 0:1173 28 (const int8_t) 0:1173 28 (const int8_t) 0:1173 28 (const int8_t) 0:1174 Sequence 0:1174 move second child to first child ( temp 3-component vector of int16_t) 0:1174 'var29' ( temp 3-component vector of int16_t) 0:1174 Constant: 0:1174 29 (const int16_t) 0:1174 29 (const int16_t) 0:1174 29 (const int16_t) 0:1175 Sequence 0:1175 move second child to first child ( temp 4-component vector of int8_t) 0:1175 'var30' ( temp 4-component vector of int8_t) 0:1175 Constant: 0:1175 30 (const int8_t) 0:1175 30 (const int8_t) 0:1175 30 (const int8_t) 0:1175 30 (const int8_t) 0:1176 Sequence 0:1176 move second child to first child ( temp 4-component vector of int16_t) 0:1176 'var31' ( temp 4-component vector of int16_t) 0:1176 Constant: 0:1176 31 (const int16_t) 0:1176 31 (const int16_t) 0:1176 31 (const int16_t) 0:1176 31 (const int16_t) 0:1177 Sequence 0:1177 move second child to first child ( temp uint8_t) 0:1177 'var32' ( temp uint8_t) 0:1177 Constant: 0:1177 32 (const uint8_t) 0:1178 Sequence 0:1178 move second child to first child ( temp uint16_t) 0:1178 'var33' ( temp uint16_t) 0:1178 Constant: 0:1178 33 (const uint16_t) 0:1179 Sequence 0:1179 move second child to first child ( temp 2-component vector of uint8_t) 0:1179 'var34' ( temp 2-component vector of uint8_t) 0:1179 Constant: 0:1179 34 (const uint8_t) 0:1179 34 (const uint8_t) 0:1180 Sequence 0:1180 move second child to first child ( temp 2-component vector of uint16_t) 0:1180 'var35' ( temp 2-component vector of uint16_t) 0:1180 Constant: 0:1180 35 (const uint16_t) 0:1180 35 (const uint16_t) 0:1181 Sequence 0:1181 move second child to first child ( temp 3-component vector of uint8_t) 0:1181 'var36' ( temp 3-component vector of uint8_t) 0:1181 Constant: 0:1181 36 (const uint8_t) 0:1181 36 (const uint8_t) 0:1181 36 (const uint8_t) 0:1182 Sequence 0:1182 move second child to first child ( temp 4-component vector of uint8_t) 0:1182 'var37' ( temp 4-component vector of uint8_t) 0:1182 Constant: 0:1182 37 (const uint8_t) 0:1182 37 (const uint8_t) 0:1182 37 (const uint8_t) 0:1182 37 (const uint8_t) 0:1183 Sequence 0:1183 move second child to first child ( temp float16_t) 0:1183 'var38' ( temp float16_t) 0:1183 Constant: 0:1183 38.000000 0:1184 Sequence 0:1184 move second child to first child ( temp 2-component vector of float16_t) 0:1184 'var39' ( temp 2-component vector of float16_t) 0:1184 Constant: 0:1184 39.000000 0:1184 39.000000 0:1185 Sequence 0:1185 move second child to first child ( temp 3-component vector of float16_t) 0:1185 'var40' ( temp 3-component vector of float16_t) 0:1185 Constant: 0:1185 40.000000 0:1185 40.000000 0:1185 40.000000 0:1186 Sequence 0:1186 move second child to first child ( temp 4-component vector of float16_t) 0:1186 'var41' ( temp 4-component vector of float16_t) 0:1186 Constant: 0:1186 41.000000 0:1186 41.000000 0:1186 41.000000 0:1186 41.000000 0:1187 Sequence 0:1187 move second child to first child ( temp uint) 0:1187 'var42' ( temp uint) 0:1187 mod ( temp uint) 0:1187 'var1' ( temp uint) 0:1187 Convert int to uint ( temp uint) 0:1187 'var0' ( temp int) 0:1188 Sequence 0:1188 move second child to first child ( temp int64_t) 0:1188 'var43' ( temp int64_t) 0:1188 mod ( temp int64_t) 0:1188 'var2' ( temp int64_t) 0:1188 Convert int to int64_t ( temp int64_t) 0:1188 'var0' ( temp int) 0:1189 Sequence 0:1189 move second child to first child ( temp uint64_t) 0:1189 'var44' ( temp uint64_t) 0:1189 mod ( temp uint64_t) 0:1189 'var3' ( temp uint64_t) 0:1189 Convert int to uint64_t ( temp uint64_t) 0:1189 'var0' ( temp int) 0:1190 Sequence 0:1190 move second child to first child ( temp 2-component vector of uint) 0:1190 'var45' ( temp 2-component vector of uint) 0:1190 mod ( temp 2-component vector of uint) 0:1190 'var7' ( temp 2-component vector of uint) 0:1190 Convert int to uint ( temp 2-component vector of uint) 0:1190 'var6' ( temp 2-component vector of int) 0:1191 Sequence 0:1191 move second child to first child ( temp 2-component vector of int64_t) 0:1191 'var46' ( temp 2-component vector of int64_t) 0:1191 mod ( temp 2-component vector of int64_t) 0:1191 'var8' ( temp 2-component vector of int64_t) 0:1191 Convert int to int64_t ( temp 2-component vector of int64_t) 0:1191 'var6' ( temp 2-component vector of int) 0:1192 Sequence 0:1192 move second child to first child ( temp 2-component vector of uint64_t) 0:1192 'var47' ( temp 2-component vector of uint64_t) 0:1192 mod ( temp 2-component vector of uint64_t) 0:1192 'var9' ( temp 2-component vector of uint64_t) 0:1192 Convert int to uint64_t ( temp 2-component vector of uint64_t) 0:1192 'var6' ( temp 2-component vector of int) 0:1193 Sequence 0:1193 move second child to first child ( temp 3-component vector of uint) 0:1193 'var48' ( temp 3-component vector of uint) 0:1193 mod ( temp 3-component vector of uint) 0:1193 'var13' ( temp 3-component vector of uint) 0:1193 Convert int to uint ( temp 3-component vector of uint) 0:1193 'var12' ( temp 3-component vector of int) 0:1194 Sequence 0:1194 move second child to first child ( temp 3-component vector of int64_t) 0:1194 'var49' ( temp 3-component vector of int64_t) 0:1194 mod ( temp 3-component vector of int64_t) 0:1194 'var14' ( temp 3-component vector of int64_t) 0:1194 Convert int to int64_t ( temp 3-component vector of int64_t) 0:1194 'var12' ( temp 3-component vector of int) 0:1195 Sequence 0:1195 move second child to first child ( temp 3-component vector of uint64_t) 0:1195 'var50' ( temp 3-component vector of uint64_t) 0:1195 mod ( temp 3-component vector of uint64_t) 0:1195 'var15' ( temp 3-component vector of uint64_t) 0:1195 Convert int to uint64_t ( temp 3-component vector of uint64_t) 0:1195 'var12' ( temp 3-component vector of int) 0:1196 Sequence 0:1196 move second child to first child ( temp 4-component vector of uint) 0:1196 'var51' ( temp 4-component vector of uint) 0:1196 mod ( temp 4-component vector of uint) 0:1196 'var19' ( temp 4-component vector of uint) 0:1196 Convert int to uint ( temp 4-component vector of uint) 0:1196 'var18' ( temp 4-component vector of int) 0:1197 Sequence 0:1197 move second child to first child ( temp 4-component vector of int64_t) 0:1197 'var52' ( temp 4-component vector of int64_t) 0:1197 mod ( temp 4-component vector of int64_t) 0:1197 'var20' ( temp 4-component vector of int64_t) 0:1197 Convert int to int64_t ( temp 4-component vector of int64_t) 0:1197 'var18' ( temp 4-component vector of int) 0:1198 Sequence 0:1198 move second child to first child ( temp 4-component vector of uint64_t) 0:1198 'var53' ( temp 4-component vector of uint64_t) 0:1198 mod ( temp 4-component vector of uint64_t) 0:1198 'var21' ( temp 4-component vector of uint64_t) 0:1198 Convert int to uint64_t ( temp 4-component vector of uint64_t) 0:1198 'var18' ( temp 4-component vector of int) 0:1199 Sequence 0:1199 move second child to first child ( temp int) 0:1199 'var54' ( temp int) 0:1199 mod ( temp int) 0:1199 'var0' ( temp int) 0:1199 Convert int8_t to int ( temp int) 0:1199 'var24' ( temp int8_t) 0:1200 Sequence 0:1200 move second child to first child ( temp int64_t) 0:1200 'var55' ( temp int64_t) 0:1200 mod ( temp int64_t) 0:1200 'var2' ( temp int64_t) 0:1200 Convert int8_t to int64_t ( temp int64_t) 0:1200 'var24' ( temp int8_t) 0:1201 Sequence 0:1201 move second child to first child ( temp uint) 0:1201 'var56' ( temp uint) 0:1201 mod ( temp uint) 0:1201 'var1' ( temp uint) 0:1201 Convert int8_t to uint ( temp uint) 0:1201 'var24' ( temp int8_t) 0:1202 Sequence 0:1202 move second child to first child ( temp uint64_t) 0:1202 'var57' ( temp uint64_t) 0:1202 mod ( temp uint64_t) 0:1202 'var3' ( temp uint64_t) 0:1202 Convert int8_t to uint64_t ( temp uint64_t) 0:1202 'var24' ( temp int8_t) 0:1203 Sequence 0:1203 move second child to first child ( temp int) 0:1203 'var58' ( temp int) 0:1203 mod ( temp int) 0:1203 'var0' ( temp int) 0:1203 Convert int16_t to int ( temp int) 0:1203 'var25' ( temp int16_t) 0:1204 Sequence 0:1204 move second child to first child ( temp int64_t) 0:1204 'var59' ( temp int64_t) 0:1204 mod ( temp int64_t) 0:1204 'var2' ( temp int64_t) 0:1204 Convert int16_t to int64_t ( temp int64_t) 0:1204 'var25' ( temp int16_t) 0:1205 Sequence 0:1205 move second child to first child ( temp uint) 0:1205 'var60' ( temp uint) 0:1205 mod ( temp uint) 0:1205 'var1' ( temp uint) 0:1205 Convert int16_t to uint ( temp uint) 0:1205 'var25' ( temp int16_t) 0:1206 Sequence 0:1206 move second child to first child ( temp uint64_t) 0:1206 'var61' ( temp uint64_t) 0:1206 mod ( temp uint64_t) 0:1206 'var3' ( temp uint64_t) 0:1206 Convert int16_t to uint64_t ( temp uint64_t) 0:1206 'var25' ( temp int16_t) 0:1207 Sequence 0:1207 move second child to first child ( temp 2-component vector of int) 0:1207 'var62' ( temp 2-component vector of int) 0:1207 mod ( temp 2-component vector of int) 0:1207 'var6' ( temp 2-component vector of int) 0:1207 Convert int8_t to int ( temp 2-component vector of int) 0:1207 'var26' ( temp 2-component vector of int8_t) 0:1208 Sequence 0:1208 move second child to first child ( temp 2-component vector of int64_t) 0:1208 'var63' ( temp 2-component vector of int64_t) 0:1208 mod ( temp 2-component vector of int64_t) 0:1208 'var8' ( temp 2-component vector of int64_t) 0:1208 Convert int8_t to int64_t ( temp 2-component vector of int64_t) 0:1208 'var26' ( temp 2-component vector of int8_t) 0:1209 Sequence 0:1209 move second child to first child ( temp 2-component vector of uint) 0:1209 'var64' ( temp 2-component vector of uint) 0:1209 mod ( temp 2-component vector of uint) 0:1209 'var7' ( temp 2-component vector of uint) 0:1209 Convert int8_t to uint ( temp 2-component vector of uint) 0:1209 'var26' ( temp 2-component vector of int8_t) 0:1210 Sequence 0:1210 move second child to first child ( temp 2-component vector of uint64_t) 0:1210 'var65' ( temp 2-component vector of uint64_t) 0:1210 mod ( temp 2-component vector of uint64_t) 0:1210 'var9' ( temp 2-component vector of uint64_t) 0:1210 Convert int8_t to uint64_t ( temp 2-component vector of uint64_t) 0:1210 'var26' ( temp 2-component vector of int8_t) 0:1211 Sequence 0:1211 move second child to first child ( temp 2-component vector of int) 0:1211 'var66' ( temp 2-component vector of int) 0:1211 mod ( temp 2-component vector of int) 0:1211 'var6' ( temp 2-component vector of int) 0:1211 Convert int16_t to int ( temp 2-component vector of int) 0:1211 'var27' ( temp 2-component vector of int16_t) 0:1212 Sequence 0:1212 move second child to first child ( temp 2-component vector of int64_t) 0:1212 'var67' ( temp 2-component vector of int64_t) 0:1212 mod ( temp 2-component vector of int64_t) 0:1212 'var8' ( temp 2-component vector of int64_t) 0:1212 Convert int16_t to int64_t ( temp 2-component vector of int64_t) 0:1212 'var27' ( temp 2-component vector of int16_t) 0:1213 Sequence 0:1213 move second child to first child ( temp 2-component vector of uint) 0:1213 'var68' ( temp 2-component vector of uint) 0:1213 mod ( temp 2-component vector of uint) 0:1213 'var7' ( temp 2-component vector of uint) 0:1213 Convert int16_t to uint ( temp 2-component vector of uint) 0:1213 'var27' ( temp 2-component vector of int16_t) 0:1214 Sequence 0:1214 move second child to first child ( temp 2-component vector of uint64_t) 0:1214 'var69' ( temp 2-component vector of uint64_t) 0:1214 mod ( temp 2-component vector of uint64_t) 0:1214 'var9' ( temp 2-component vector of uint64_t) 0:1214 Convert int16_t to uint64_t ( temp 2-component vector of uint64_t) 0:1214 'var27' ( temp 2-component vector of int16_t) 0:1215 Sequence 0:1215 move second child to first child ( temp 3-component vector of int) 0:1215 'var70' ( temp 3-component vector of int) 0:1215 mod ( temp 3-component vector of int) 0:1215 'var12' ( temp 3-component vector of int) 0:1215 Convert int8_t to int ( temp 3-component vector of int) 0:1215 'var28' ( temp 3-component vector of int8_t) 0:1216 Sequence 0:1216 move second child to first child ( temp 3-component vector of int64_t) 0:1216 'var71' ( temp 3-component vector of int64_t) 0:1216 mod ( temp 3-component vector of int64_t) 0:1216 'var14' ( temp 3-component vector of int64_t) 0:1216 Convert int8_t to int64_t ( temp 3-component vector of int64_t) 0:1216 'var28' ( temp 3-component vector of int8_t) 0:1217 Sequence 0:1217 move second child to first child ( temp 3-component vector of uint) 0:1217 'var72' ( temp 3-component vector of uint) 0:1217 mod ( temp 3-component vector of uint) 0:1217 'var13' ( temp 3-component vector of uint) 0:1217 Convert int8_t to uint ( temp 3-component vector of uint) 0:1217 'var28' ( temp 3-component vector of int8_t) 0:1218 Sequence 0:1218 move second child to first child ( temp 3-component vector of uint64_t) 0:1218 'var73' ( temp 3-component vector of uint64_t) 0:1218 mod ( temp 3-component vector of uint64_t) 0:1218 'var15' ( temp 3-component vector of uint64_t) 0:1218 Convert int8_t to uint64_t ( temp 3-component vector of uint64_t) 0:1218 'var28' ( temp 3-component vector of int8_t) 0:1219 Sequence 0:1219 move second child to first child ( temp 3-component vector of uint) 0:1219 'var74' ( temp 3-component vector of uint) 0:1219 mod ( temp 3-component vector of uint) 0:1219 'var13' ( temp 3-component vector of uint) 0:1219 Convert int16_t to uint ( temp 3-component vector of uint) 0:1219 'var29' ( temp 3-component vector of int16_t) 0:1220 Sequence 0:1220 move second child to first child ( temp 3-component vector of uint64_t) 0:1220 'var75' ( temp 3-component vector of uint64_t) 0:1220 mod ( temp 3-component vector of uint64_t) 0:1220 'var15' ( temp 3-component vector of uint64_t) 0:1220 Convert int16_t to uint64_t ( temp 3-component vector of uint64_t) 0:1220 'var29' ( temp 3-component vector of int16_t) 0:1221 Sequence 0:1221 move second child to first child ( temp 4-component vector of int) 0:1221 'var76' ( temp 4-component vector of int) 0:1221 mod ( temp 4-component vector of int) 0:1221 'var18' ( temp 4-component vector of int) 0:1221 Convert int8_t to int ( temp 4-component vector of int) 0:1221 'var30' ( temp 4-component vector of int8_t) 0:1222 Sequence 0:1222 move second child to first child ( temp 4-component vector of int64_t) 0:1222 'var77' ( temp 4-component vector of int64_t) 0:1222 mod ( temp 4-component vector of int64_t) 0:1222 'var20' ( temp 4-component vector of int64_t) 0:1222 Convert int8_t to int64_t ( temp 4-component vector of int64_t) 0:1222 'var30' ( temp 4-component vector of int8_t) 0:1223 Sequence 0:1223 move second child to first child ( temp 4-component vector of uint) 0:1223 'var78' ( temp 4-component vector of uint) 0:1223 mod ( temp 4-component vector of uint) 0:1223 'var19' ( temp 4-component vector of uint) 0:1223 Convert int8_t to uint ( temp 4-component vector of uint) 0:1223 'var30' ( temp 4-component vector of int8_t) 0:1224 Sequence 0:1224 move second child to first child ( temp 4-component vector of uint64_t) 0:1224 'var79' ( temp 4-component vector of uint64_t) 0:1224 mod ( temp 4-component vector of uint64_t) 0:1224 'var21' ( temp 4-component vector of uint64_t) 0:1224 Convert int8_t to uint64_t ( temp 4-component vector of uint64_t) 0:1224 'var30' ( temp 4-component vector of int8_t) 0:1225 Sequence 0:1225 move second child to first child ( temp 4-component vector of uint) 0:1225 'var80' ( temp 4-component vector of uint) 0:1225 mod ( temp 4-component vector of uint) 0:1225 'var19' ( temp 4-component vector of uint) 0:1225 Convert int16_t to uint ( temp 4-component vector of uint) 0:1225 'var31' ( temp 4-component vector of int16_t) 0:1226 Sequence 0:1226 move second child to first child ( temp 4-component vector of uint64_t) 0:1226 'var81' ( temp 4-component vector of uint64_t) 0:1226 mod ( temp 4-component vector of uint64_t) 0:1226 'var21' ( temp 4-component vector of uint64_t) 0:1226 Convert int16_t to uint64_t ( temp 4-component vector of uint64_t) 0:1226 'var31' ( temp 4-component vector of int16_t) 0:1227 Sequence 0:1227 move second child to first child ( temp uint64_t) 0:1227 'var82' ( temp uint64_t) 0:1227 mod ( temp uint64_t) 0:1227 'var3' ( temp uint64_t) 0:1227 Convert int64_t to uint64_t ( temp uint64_t) 0:1227 'var2' ( temp int64_t) 0:1228 Sequence 0:1228 move second child to first child ( temp 2-component vector of uint64_t) 0:1228 'var83' ( temp 2-component vector of uint64_t) 0:1228 mod ( temp 2-component vector of uint64_t) 0:1228 'var9' ( temp 2-component vector of uint64_t) 0:1228 Convert int64_t to uint64_t ( temp 2-component vector of uint64_t) 0:1228 'var8' ( temp 2-component vector of int64_t) 0:1229 Sequence 0:1229 move second child to first child ( temp 3-component vector of uint64_t) 0:1229 'var84' ( temp 3-component vector of uint64_t) 0:1229 mod ( temp 3-component vector of uint64_t) 0:1229 'var15' ( temp 3-component vector of uint64_t) 0:1229 Convert int64_t to uint64_t ( temp 3-component vector of uint64_t) 0:1229 'var14' ( temp 3-component vector of int64_t) 0:1230 Sequence 0:1230 move second child to first child ( temp 4-component vector of uint64_t) 0:1230 'var85' ( temp 4-component vector of uint64_t) 0:1230 mod ( temp 4-component vector of uint64_t) 0:1230 'var21' ( temp 4-component vector of uint64_t) 0:1230 Convert int64_t to uint64_t ( temp 4-component vector of uint64_t) 0:1230 'var20' ( temp 4-component vector of int64_t) 0:1231 Sequence 0:1231 move second child to first child ( temp uint64_t) 0:1231 'var86' ( temp uint64_t) 0:1231 mod ( temp uint64_t) 0:1231 'var3' ( temp uint64_t) 0:1231 Convert uint to uint64_t ( temp uint64_t) 0:1231 'var1' ( temp uint) 0:1232 Sequence 0:1232 move second child to first child ( temp 2-component vector of uint64_t) 0:1232 'var87' ( temp 2-component vector of uint64_t) 0:1232 mod ( temp 2-component vector of uint64_t) 0:1232 'var9' ( temp 2-component vector of uint64_t) 0:1232 Convert uint to uint64_t ( temp 2-component vector of uint64_t) 0:1232 'var7' ( temp 2-component vector of uint) 0:1233 Sequence 0:1233 move second child to first child ( temp 3-component vector of uint64_t) 0:1233 'var88' ( temp 3-component vector of uint64_t) 0:1233 mod ( temp 3-component vector of uint64_t) 0:1233 'var15' ( temp 3-component vector of uint64_t) 0:1233 Convert uint to uint64_t ( temp 3-component vector of uint64_t) 0:1233 'var13' ( temp 3-component vector of uint) 0:1234 Sequence 0:1234 move second child to first child ( temp 4-component vector of uint64_t) 0:1234 'var89' ( temp 4-component vector of uint64_t) 0:1234 mod ( temp 4-component vector of uint64_t) 0:1234 'var21' ( temp 4-component vector of uint64_t) 0:1234 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:1234 'var19' ( temp 4-component vector of uint) 0:1235 Sequence 0:1235 move second child to first child ( temp uint) 0:1235 'var90' ( temp uint) 0:1235 mod ( temp uint) 0:1235 'var1' ( temp uint) 0:1235 Convert uint8_t to uint ( temp uint) 0:1235 'var32' ( temp uint8_t) 0:1236 Sequence 0:1236 move second child to first child ( temp uint64_t) 0:1236 'var91' ( temp uint64_t) 0:1236 mod ( temp uint64_t) 0:1236 'var3' ( temp uint64_t) 0:1236 Convert uint8_t to uint64_t ( temp uint64_t) 0:1236 'var32' ( temp uint8_t) 0:1237 Sequence 0:1237 move second child to first child ( temp uint) 0:1237 'var92' ( temp uint) 0:1237 mod ( temp uint) 0:1237 'var1' ( temp uint) 0:1237 Convert uint16_t to uint ( temp uint) 0:1237 'var33' ( temp uint16_t) 0:1238 Sequence 0:1238 move second child to first child ( temp uint64_t) 0:1238 'var93' ( temp uint64_t) 0:1238 mod ( temp uint64_t) 0:1238 'var3' ( temp uint64_t) 0:1238 Convert uint16_t to uint64_t ( temp uint64_t) 0:1238 'var33' ( temp uint16_t) 0:1239 Sequence 0:1239 move second child to first child ( temp 2-component vector of uint) 0:1239 'var94' ( temp 2-component vector of uint) 0:1239 mod ( temp 2-component vector of uint) 0:1239 'var7' ( temp 2-component vector of uint) 0:1239 Convert uint8_t to uint ( temp 2-component vector of uint) 0:1239 'var34' ( temp 2-component vector of uint8_t) 0:1240 Sequence 0:1240 move second child to first child ( temp 2-component vector of uint64_t) 0:1240 'var95' ( temp 2-component vector of uint64_t) 0:1240 mod ( temp 2-component vector of uint64_t) 0:1240 'var9' ( temp 2-component vector of uint64_t) 0:1240 Convert uint8_t to uint64_t ( temp 2-component vector of uint64_t) 0:1240 'var34' ( temp 2-component vector of uint8_t) 0:1241 Sequence 0:1241 move second child to first child ( temp 2-component vector of uint) 0:1241 'var96' ( temp 2-component vector of uint) 0:1241 mod ( temp 2-component vector of uint) 0:1241 'var7' ( temp 2-component vector of uint) 0:1241 Convert uint16_t to uint ( temp 2-component vector of uint) 0:1241 'var35' ( temp 2-component vector of uint16_t) 0:1242 Sequence 0:1242 move second child to first child ( temp 2-component vector of uint64_t) 0:1242 'var97' ( temp 2-component vector of uint64_t) 0:1242 mod ( temp 2-component vector of uint64_t) 0:1242 'var9' ( temp 2-component vector of uint64_t) 0:1242 Convert uint16_t to uint64_t ( temp 2-component vector of uint64_t) 0:1242 'var35' ( temp 2-component vector of uint16_t) 0:1243 Sequence 0:1243 move second child to first child ( temp 3-component vector of uint) 0:1243 'var98' ( temp 3-component vector of uint) 0:1243 mod ( temp 3-component vector of uint) 0:1243 'var13' ( temp 3-component vector of uint) 0:1243 Convert uint8_t to uint ( temp 3-component vector of uint) 0:1243 'var36' ( temp 3-component vector of uint8_t) 0:1244 Sequence 0:1244 move second child to first child ( temp 3-component vector of uint64_t) 0:1244 'var99' ( temp 3-component vector of uint64_t) 0:1244 mod ( temp 3-component vector of uint64_t) 0:1244 'var15' ( temp 3-component vector of uint64_t) 0:1244 Convert uint8_t to uint64_t ( temp 3-component vector of uint64_t) 0:1244 'var36' ( temp 3-component vector of uint8_t) 0:1245 Sequence 0:1245 move second child to first child ( temp 4-component vector of uint) 0:1245 'var100' ( temp 4-component vector of uint) 0:1245 mod ( temp 4-component vector of uint) 0:1245 'var19' ( temp 4-component vector of uint) 0:1245 Convert uint8_t to uint ( temp 4-component vector of uint) 0:1245 'var37' ( temp 4-component vector of uint8_t) 0:1246 Sequence 0:1246 move second child to first child ( temp 4-component vector of uint64_t) 0:1246 'var101' ( temp 4-component vector of uint64_t) 0:1246 mod ( temp 4-component vector of uint64_t) 0:1246 'var21' ( temp 4-component vector of uint64_t) 0:1246 Convert uint8_t to uint64_t ( temp 4-component vector of uint64_t) 0:1246 'var37' ( temp 4-component vector of uint8_t) 0:1250 Function Definition: testUnaryOps( ( global void) 0:1250 Function Parameters: 0:1251 Sequence 0:1251 Sequence 0:1251 move second child to first child ( temp int) 0:1251 'var0' ( temp int) 0:1251 Constant: 0:1251 0 (const int) 0:1252 Sequence 0:1252 move second child to first child ( temp uint) 0:1252 'var1' ( temp uint) 0:1252 Constant: 0:1252 1 (const uint) 0:1253 Sequence 0:1253 move second child to first child ( temp int64_t) 0:1253 'var2' ( temp int64_t) 0:1253 Constant: 0:1253 2 (const int64_t) 0:1254 Sequence 0:1254 move second child to first child ( temp uint64_t) 0:1254 'var3' ( temp uint64_t) 0:1254 Constant: 0:1254 3 (const uint64_t) 0:1255 Sequence 0:1255 move second child to first child ( temp float) 0:1255 'var4' ( temp float) 0:1255 Constant: 0:1255 4.000000 0:1256 Sequence 0:1256 move second child to first child ( temp double) 0:1256 'var5' ( temp double) 0:1256 Constant: 0:1256 5.000000 0:1257 Sequence 0:1257 move second child to first child ( temp 2-component vector of int) 0:1257 'var6' ( temp 2-component vector of int) 0:1257 Constant: 0:1257 6 (const int) 0:1257 6 (const int) 0:1258 Sequence 0:1258 move second child to first child ( temp 2-component vector of uint) 0:1258 'var7' ( temp 2-component vector of uint) 0:1258 Constant: 0:1258 7 (const uint) 0:1258 7 (const uint) 0:1259 Sequence 0:1259 move second child to first child ( temp 2-component vector of int64_t) 0:1259 'var8' ( temp 2-component vector of int64_t) 0:1259 Constant: 0:1259 8 (const int64_t) 0:1259 8 (const int64_t) 0:1260 Sequence 0:1260 move second child to first child ( temp 2-component vector of uint64_t) 0:1260 'var9' ( temp 2-component vector of uint64_t) 0:1260 Constant: 0:1260 9 (const uint64_t) 0:1260 9 (const uint64_t) 0:1261 Sequence 0:1261 move second child to first child ( temp 2-component vector of float) 0:1261 'var10' ( temp 2-component vector of float) 0:1261 Constant: 0:1261 10.000000 0:1261 10.000000 0:1262 Sequence 0:1262 move second child to first child ( temp 2-component vector of double) 0:1262 'var11' ( temp 2-component vector of double) 0:1262 Constant: 0:1262 11.000000 0:1262 11.000000 0:1263 Sequence 0:1263 move second child to first child ( temp 3-component vector of int) 0:1263 'var12' ( temp 3-component vector of int) 0:1263 Constant: 0:1263 12 (const int) 0:1263 12 (const int) 0:1263 12 (const int) 0:1264 Sequence 0:1264 move second child to first child ( temp 3-component vector of uint) 0:1264 'var13' ( temp 3-component vector of uint) 0:1264 Constant: 0:1264 13 (const uint) 0:1264 13 (const uint) 0:1264 13 (const uint) 0:1265 Sequence 0:1265 move second child to first child ( temp 3-component vector of int64_t) 0:1265 'var14' ( temp 3-component vector of int64_t) 0:1265 Constant: 0:1265 14 (const int64_t) 0:1265 14 (const int64_t) 0:1265 14 (const int64_t) 0:1266 Sequence 0:1266 move second child to first child ( temp 3-component vector of uint64_t) 0:1266 'var15' ( temp 3-component vector of uint64_t) 0:1266 Constant: 0:1266 15 (const uint64_t) 0:1266 15 (const uint64_t) 0:1266 15 (const uint64_t) 0:1267 Sequence 0:1267 move second child to first child ( temp 3-component vector of float) 0:1267 'var16' ( temp 3-component vector of float) 0:1267 Constant: 0:1267 16.000000 0:1267 16.000000 0:1267 16.000000 0:1268 Sequence 0:1268 move second child to first child ( temp 3-component vector of double) 0:1268 'var17' ( temp 3-component vector of double) 0:1268 Constant: 0:1268 17.000000 0:1268 17.000000 0:1268 17.000000 0:1269 Sequence 0:1269 move second child to first child ( temp 4-component vector of int) 0:1269 'var18' ( temp 4-component vector of int) 0:1269 Constant: 0:1269 18 (const int) 0:1269 18 (const int) 0:1269 18 (const int) 0:1269 18 (const int) 0:1270 Sequence 0:1270 move second child to first child ( temp 4-component vector of uint) 0:1270 'var19' ( temp 4-component vector of uint) 0:1270 Constant: 0:1270 19 (const uint) 0:1270 19 (const uint) 0:1270 19 (const uint) 0:1270 19 (const uint) 0:1271 Sequence 0:1271 move second child to first child ( temp 4-component vector of int64_t) 0:1271 'var20' ( temp 4-component vector of int64_t) 0:1271 Constant: 0:1271 20 (const int64_t) 0:1271 20 (const int64_t) 0:1271 20 (const int64_t) 0:1271 20 (const int64_t) 0:1272 Sequence 0:1272 move second child to first child ( temp 4-component vector of uint64_t) 0:1272 'var21' ( temp 4-component vector of uint64_t) 0:1272 Constant: 0:1272 21 (const uint64_t) 0:1272 21 (const uint64_t) 0:1272 21 (const uint64_t) 0:1272 21 (const uint64_t) 0:1273 Sequence 0:1273 move second child to first child ( temp 4-component vector of float) 0:1273 'var22' ( temp 4-component vector of float) 0:1273 Constant: 0:1273 22.000000 0:1273 22.000000 0:1273 22.000000 0:1273 22.000000 0:1274 Sequence 0:1274 move second child to first child ( temp 4-component vector of double) 0:1274 'var23' ( temp 4-component vector of double) 0:1274 Constant: 0:1274 23.000000 0:1274 23.000000 0:1274 23.000000 0:1274 23.000000 0:1275 Sequence 0:1275 move second child to first child ( temp int8_t) 0:1275 'var24' ( temp int8_t) 0:1275 Constant: 0:1275 24 (const int8_t) 0:1276 Sequence 0:1276 move second child to first child ( temp int16_t) 0:1276 'var25' ( temp int16_t) 0:1276 Constant: 0:1276 25 (const int16_t) 0:1277 Sequence 0:1277 move second child to first child ( temp 2-component vector of int8_t) 0:1277 'var26' ( temp 2-component vector of int8_t) 0:1277 Constant: 0:1277 26 (const int8_t) 0:1277 26 (const int8_t) 0:1278 Sequence 0:1278 move second child to first child ( temp 2-component vector of int16_t) 0:1278 'var27' ( temp 2-component vector of int16_t) 0:1278 Constant: 0:1278 27 (const int16_t) 0:1278 27 (const int16_t) 0:1279 Sequence 0:1279 move second child to first child ( temp 3-component vector of int8_t) 0:1279 'var28' ( temp 3-component vector of int8_t) 0:1279 Constant: 0:1279 28 (const int8_t) 0:1279 28 (const int8_t) 0:1279 28 (const int8_t) 0:1280 Sequence 0:1280 move second child to first child ( temp 3-component vector of int16_t) 0:1280 'var29' ( temp 3-component vector of int16_t) 0:1280 Constant: 0:1280 29 (const int16_t) 0:1280 29 (const int16_t) 0:1280 29 (const int16_t) 0:1281 Sequence 0:1281 move second child to first child ( temp 4-component vector of int8_t) 0:1281 'var30' ( temp 4-component vector of int8_t) 0:1281 Constant: 0:1281 30 (const int8_t) 0:1281 30 (const int8_t) 0:1281 30 (const int8_t) 0:1281 30 (const int8_t) 0:1282 Sequence 0:1282 move second child to first child ( temp 4-component vector of int16_t) 0:1282 'var31' ( temp 4-component vector of int16_t) 0:1282 Constant: 0:1282 31 (const int16_t) 0:1282 31 (const int16_t) 0:1282 31 (const int16_t) 0:1282 31 (const int16_t) 0:1283 Sequence 0:1283 move second child to first child ( temp uint8_t) 0:1283 'var32' ( temp uint8_t) 0:1283 Constant: 0:1283 32 (const uint8_t) 0:1284 Sequence 0:1284 move second child to first child ( temp uint16_t) 0:1284 'var33' ( temp uint16_t) 0:1284 Constant: 0:1284 33 (const uint16_t) 0:1285 Sequence 0:1285 move second child to first child ( temp 2-component vector of uint8_t) 0:1285 'var34' ( temp 2-component vector of uint8_t) 0:1285 Constant: 0:1285 34 (const uint8_t) 0:1285 34 (const uint8_t) 0:1286 Sequence 0:1286 move second child to first child ( temp 2-component vector of uint16_t) 0:1286 'var35' ( temp 2-component vector of uint16_t) 0:1286 Constant: 0:1286 35 (const uint16_t) 0:1286 35 (const uint16_t) 0:1287 Sequence 0:1287 move second child to first child ( temp 3-component vector of uint8_t) 0:1287 'var36' ( temp 3-component vector of uint8_t) 0:1287 Constant: 0:1287 36 (const uint8_t) 0:1287 36 (const uint8_t) 0:1287 36 (const uint8_t) 0:1288 Sequence 0:1288 move second child to first child ( temp 4-component vector of uint8_t) 0:1288 'var37' ( temp 4-component vector of uint8_t) 0:1288 Constant: 0:1288 37 (const uint8_t) 0:1288 37 (const uint8_t) 0:1288 37 (const uint8_t) 0:1288 37 (const uint8_t) 0:1289 Sequence 0:1289 move second child to first child ( temp float16_t) 0:1289 'var38' ( temp float16_t) 0:1289 Constant: 0:1289 38.000000 0:1290 Sequence 0:1290 move second child to first child ( temp 2-component vector of float16_t) 0:1290 'var39' ( temp 2-component vector of float16_t) 0:1290 Constant: 0:1290 39.000000 0:1290 39.000000 0:1291 Sequence 0:1291 move second child to first child ( temp 3-component vector of float16_t) 0:1291 'var40' ( temp 3-component vector of float16_t) 0:1291 Constant: 0:1291 40.000000 0:1291 40.000000 0:1291 40.000000 0:1292 Sequence 0:1292 move second child to first child ( temp 4-component vector of float16_t) 0:1292 'var41' ( temp 4-component vector of float16_t) 0:1292 Constant: 0:1292 41.000000 0:1292 41.000000 0:1292 41.000000 0:1292 41.000000 0:1294 Sequence 0:1294 move second child to first child ( temp uint) 0:1294 'var42' ( temp uint) 0:1294 Negate value ( temp uint) 0:1294 'var1' ( temp uint) 0:1295 Sequence 0:1295 move second child to first child ( temp int64_t) 0:1295 'var43' ( temp int64_t) 0:1295 Negate value ( temp int64_t) 0:1295 'var2' ( temp int64_t) 0:1296 Sequence 0:1296 move second child to first child ( temp uint64_t) 0:1296 'var44' ( temp uint64_t) 0:1296 Negate value ( temp uint64_t) 0:1296 'var3' ( temp uint64_t) 0:1297 Sequence 0:1297 move second child to first child ( temp float) 0:1297 'var45' ( temp float) 0:1297 Negate value ( temp float) 0:1297 'var4' ( temp float) 0:1298 Sequence 0:1298 move second child to first child ( temp double) 0:1298 'var46' ( temp double) 0:1298 Negate value ( temp double) 0:1298 'var5' ( temp double) 0:1300 Sequence 0:1300 move second child to first child ( temp 2-component vector of uint) 0:1300 'var47' ( temp 2-component vector of uint) 0:1300 Negate value ( temp 2-component vector of uint) 0:1300 'var7' ( temp 2-component vector of uint) 0:1301 Sequence 0:1301 move second child to first child ( temp 2-component vector of int64_t) 0:1301 'var48' ( temp 2-component vector of int64_t) 0:1301 Negate value ( temp 2-component vector of int64_t) 0:1301 'var8' ( temp 2-component vector of int64_t) 0:1302 Sequence 0:1302 move second child to first child ( temp 2-component vector of uint64_t) 0:1302 'var49' ( temp 2-component vector of uint64_t) 0:1302 Negate value ( temp 2-component vector of uint64_t) 0:1302 'var9' ( temp 2-component vector of uint64_t) 0:1303 Sequence 0:1303 move second child to first child ( temp 2-component vector of float) 0:1303 'var50' ( temp 2-component vector of float) 0:1303 Negate value ( temp 2-component vector of float) 0:1303 'var10' ( temp 2-component vector of float) 0:1304 Sequence 0:1304 move second child to first child ( temp 2-component vector of double) 0:1304 'var51' ( temp 2-component vector of double) 0:1304 Negate value ( temp 2-component vector of double) 0:1304 'var11' ( temp 2-component vector of double) 0:1306 Sequence 0:1306 move second child to first child ( temp 3-component vector of uint) 0:1306 'var52' ( temp 3-component vector of uint) 0:1306 Negate value ( temp 3-component vector of uint) 0:1306 'var13' ( temp 3-component vector of uint) 0:1307 Sequence 0:1307 move second child to first child ( temp 3-component vector of int64_t) 0:1307 'var53' ( temp 3-component vector of int64_t) 0:1307 Negate value ( temp 3-component vector of int64_t) 0:1307 'var14' ( temp 3-component vector of int64_t) 0:1308 Sequence 0:1308 move second child to first child ( temp 3-component vector of uint64_t) 0:1308 'var54' ( temp 3-component vector of uint64_t) 0:1308 Negate value ( temp 3-component vector of uint64_t) 0:1308 'var15' ( temp 3-component vector of uint64_t) 0:1309 Sequence 0:1309 move second child to first child ( temp 3-component vector of float) 0:1309 'var55' ( temp 3-component vector of float) 0:1309 Negate value ( temp 3-component vector of float) 0:1309 'var16' ( temp 3-component vector of float) 0:1310 Sequence 0:1310 move second child to first child ( temp 3-component vector of double) 0:1310 'var56' ( temp 3-component vector of double) 0:1310 Negate value ( temp 3-component vector of double) 0:1310 'var17' ( temp 3-component vector of double) 0:1312 Sequence 0:1312 move second child to first child ( temp 4-component vector of uint) 0:1312 'var57' ( temp 4-component vector of uint) 0:1312 Negate value ( temp 4-component vector of uint) 0:1312 'var19' ( temp 4-component vector of uint) 0:1313 Sequence 0:1313 move second child to first child ( temp 4-component vector of int64_t) 0:1313 'var58' ( temp 4-component vector of int64_t) 0:1313 Negate value ( temp 4-component vector of int64_t) 0:1313 'var20' ( temp 4-component vector of int64_t) 0:1314 Sequence 0:1314 move second child to first child ( temp 4-component vector of uint64_t) 0:1314 'var59' ( temp 4-component vector of uint64_t) 0:1314 Negate value ( temp 4-component vector of uint64_t) 0:1314 'var21' ( temp 4-component vector of uint64_t) 0:1315 Sequence 0:1315 move second child to first child ( temp 4-component vector of float) 0:1315 'var60' ( temp 4-component vector of float) 0:1315 Negate value ( temp 4-component vector of float) 0:1315 'var22' ( temp 4-component vector of float) 0:1316 Sequence 0:1316 move second child to first child ( temp 4-component vector of double) 0:1316 'var61' ( temp 4-component vector of double) 0:1316 Negate value ( temp 4-component vector of double) 0:1316 'var23' ( temp 4-component vector of double) 0:1318 Sequence 0:1318 move second child to first child ( temp int) 0:1318 'var62' ( temp int) 0:1318 Negate value ( temp int) 0:1318 'var0' ( temp int) 0:1319 Sequence 0:1319 move second child to first child ( temp int64_t) 0:1319 'var63' ( temp int64_t) 0:1319 Negate value ( temp int64_t) 0:1319 'var2' ( temp int64_t) 0:1320 Sequence 0:1320 move second child to first child ( temp uint) 0:1320 'var64' ( temp uint) 0:1320 Negate value ( temp uint) 0:1320 'var1' ( temp uint) 0:1321 Sequence 0:1321 move second child to first child ( temp uint64_t) 0:1321 'var65' ( temp uint64_t) 0:1321 Negate value ( temp uint64_t) 0:1321 'var3' ( temp uint64_t) 0:1322 Sequence 0:1322 move second child to first child ( temp float) 0:1322 'var66' ( temp float) 0:1322 Negate value ( temp float) 0:1322 'var4' ( temp float) 0:1323 Sequence 0:1323 move second child to first child ( temp double) 0:1323 'var67' ( temp double) 0:1323 Negate value ( temp double) 0:1323 'var5' ( temp double) 0:1325 Sequence 0:1325 move second child to first child ( temp int) 0:1325 'var68' ( temp int) 0:1325 Negate value ( temp int) 0:1325 'var0' ( temp int) 0:1326 Sequence 0:1326 move second child to first child ( temp int64_t) 0:1326 'var69' ( temp int64_t) 0:1326 Negate value ( temp int64_t) 0:1326 'var2' ( temp int64_t) 0:1327 Sequence 0:1327 move second child to first child ( temp uint) 0:1327 'var70' ( temp uint) 0:1327 Negate value ( temp uint) 0:1327 'var1' ( temp uint) 0:1328 Sequence 0:1328 move second child to first child ( temp uint64_t) 0:1328 'var71' ( temp uint64_t) 0:1328 Negate value ( temp uint64_t) 0:1328 'var3' ( temp uint64_t) 0:1329 Sequence 0:1329 move second child to first child ( temp float) 0:1329 'var72' ( temp float) 0:1329 Negate value ( temp float) 0:1329 'var4' ( temp float) 0:1330 Sequence 0:1330 move second child to first child ( temp double) 0:1330 'var73' ( temp double) 0:1330 Negate value ( temp double) 0:1330 'var5' ( temp double) 0:1332 Sequence 0:1332 move second child to first child ( temp 2-component vector of int) 0:1332 'var74' ( temp 2-component vector of int) 0:1332 Negate value ( temp 2-component vector of int) 0:1332 'var6' ( temp 2-component vector of int) 0:1333 Sequence 0:1333 move second child to first child ( temp 2-component vector of int64_t) 0:1333 'var75' ( temp 2-component vector of int64_t) 0:1333 Negate value ( temp 2-component vector of int64_t) 0:1333 'var8' ( temp 2-component vector of int64_t) 0:1334 Sequence 0:1334 move second child to first child ( temp 2-component vector of uint) 0:1334 'var76' ( temp 2-component vector of uint) 0:1334 Negate value ( temp 2-component vector of uint) 0:1334 'var7' ( temp 2-component vector of uint) 0:1335 Sequence 0:1335 move second child to first child ( temp 2-component vector of uint64_t) 0:1335 'var77' ( temp 2-component vector of uint64_t) 0:1335 Negate value ( temp 2-component vector of uint64_t) 0:1335 'var9' ( temp 2-component vector of uint64_t) 0:1336 Sequence 0:1336 move second child to first child ( temp 2-component vector of float) 0:1336 'var78' ( temp 2-component vector of float) 0:1336 Negate value ( temp 2-component vector of float) 0:1336 'var10' ( temp 2-component vector of float) 0:1337 Sequence 0:1337 move second child to first child ( temp 2-component vector of double) 0:1337 'var79' ( temp 2-component vector of double) 0:1337 Negate value ( temp 2-component vector of double) 0:1337 'var11' ( temp 2-component vector of double) 0:1339 Sequence 0:1339 move second child to first child ( temp 2-component vector of int) 0:1339 'var80' ( temp 2-component vector of int) 0:1339 Negate value ( temp 2-component vector of int) 0:1339 'var6' ( temp 2-component vector of int) 0:1340 Sequence 0:1340 move second child to first child ( temp 2-component vector of int64_t) 0:1340 'var81' ( temp 2-component vector of int64_t) 0:1340 Negate value ( temp 2-component vector of int64_t) 0:1340 'var8' ( temp 2-component vector of int64_t) 0:1341 Sequence 0:1341 move second child to first child ( temp 2-component vector of uint) 0:1341 'var82' ( temp 2-component vector of uint) 0:1341 Negate value ( temp 2-component vector of uint) 0:1341 'var7' ( temp 2-component vector of uint) 0:1342 Sequence 0:1342 move second child to first child ( temp 2-component vector of uint64_t) 0:1342 'var83' ( temp 2-component vector of uint64_t) 0:1342 Negate value ( temp 2-component vector of uint64_t) 0:1342 'var9' ( temp 2-component vector of uint64_t) 0:1343 Sequence 0:1343 move second child to first child ( temp 2-component vector of float) 0:1343 'var84' ( temp 2-component vector of float) 0:1343 Negate value ( temp 2-component vector of float) 0:1343 'var10' ( temp 2-component vector of float) 0:1344 Sequence 0:1344 move second child to first child ( temp 2-component vector of double) 0:1344 'var85' ( temp 2-component vector of double) 0:1344 Negate value ( temp 2-component vector of double) 0:1344 'var11' ( temp 2-component vector of double) 0:1346 Sequence 0:1346 move second child to first child ( temp 3-component vector of int) 0:1346 'var86' ( temp 3-component vector of int) 0:1346 Negate value ( temp 3-component vector of int) 0:1346 'var12' ( temp 3-component vector of int) 0:1347 Sequence 0:1347 move second child to first child ( temp 3-component vector of int64_t) 0:1347 'var87' ( temp 3-component vector of int64_t) 0:1347 Negate value ( temp 3-component vector of int64_t) 0:1347 'var14' ( temp 3-component vector of int64_t) 0:1348 Sequence 0:1348 move second child to first child ( temp 3-component vector of uint) 0:1348 'var88' ( temp 3-component vector of uint) 0:1348 Negate value ( temp 3-component vector of uint) 0:1348 'var13' ( temp 3-component vector of uint) 0:1349 Sequence 0:1349 move second child to first child ( temp 3-component vector of uint64_t) 0:1349 'var89' ( temp 3-component vector of uint64_t) 0:1349 Negate value ( temp 3-component vector of uint64_t) 0:1349 'var15' ( temp 3-component vector of uint64_t) 0:1350 Sequence 0:1350 move second child to first child ( temp 3-component vector of float) 0:1350 'var90' ( temp 3-component vector of float) 0:1350 Negate value ( temp 3-component vector of float) 0:1350 'var16' ( temp 3-component vector of float) 0:1351 Sequence 0:1351 move second child to first child ( temp 3-component vector of double) 0:1351 'var91' ( temp 3-component vector of double) 0:1351 Negate value ( temp 3-component vector of double) 0:1351 'var17' ( temp 3-component vector of double) 0:1353 Sequence 0:1353 move second child to first child ( temp 3-component vector of uint) 0:1353 'var92' ( temp 3-component vector of uint) 0:1353 Negate value ( temp 3-component vector of uint) 0:1353 'var13' ( temp 3-component vector of uint) 0:1354 Sequence 0:1354 move second child to first child ( temp 3-component vector of uint64_t) 0:1354 'var93' ( temp 3-component vector of uint64_t) 0:1354 Negate value ( temp 3-component vector of uint64_t) 0:1354 'var15' ( temp 3-component vector of uint64_t) 0:1355 Sequence 0:1355 move second child to first child ( temp 3-component vector of float) 0:1355 'var94' ( temp 3-component vector of float) 0:1355 Negate value ( temp 3-component vector of float) 0:1355 'var16' ( temp 3-component vector of float) 0:1356 Sequence 0:1356 move second child to first child ( temp 3-component vector of double) 0:1356 'var95' ( temp 3-component vector of double) 0:1356 Negate value ( temp 3-component vector of double) 0:1356 'var17' ( temp 3-component vector of double) 0:1358 Sequence 0:1358 move second child to first child ( temp 4-component vector of int) 0:1358 'var96' ( temp 4-component vector of int) 0:1358 Negate value ( temp 4-component vector of int) 0:1358 'var18' ( temp 4-component vector of int) 0:1359 Sequence 0:1359 move second child to first child ( temp 4-component vector of int64_t) 0:1359 'var97' ( temp 4-component vector of int64_t) 0:1359 Negate value ( temp 4-component vector of int64_t) 0:1359 'var20' ( temp 4-component vector of int64_t) 0:1360 Sequence 0:1360 move second child to first child ( temp 4-component vector of uint) 0:1360 'var98' ( temp 4-component vector of uint) 0:1360 Negate value ( temp 4-component vector of uint) 0:1360 'var19' ( temp 4-component vector of uint) 0:1361 Sequence 0:1361 move second child to first child ( temp 4-component vector of uint64_t) 0:1361 'var99' ( temp 4-component vector of uint64_t) 0:1361 Negate value ( temp 4-component vector of uint64_t) 0:1361 'var21' ( temp 4-component vector of uint64_t) 0:1362 Sequence 0:1362 move second child to first child ( temp 4-component vector of float) 0:1362 'var100' ( temp 4-component vector of float) 0:1362 Negate value ( temp 4-component vector of float) 0:1362 'var22' ( temp 4-component vector of float) 0:1363 Sequence 0:1363 move second child to first child ( temp 4-component vector of double) 0:1363 'var101' ( temp 4-component vector of double) 0:1363 Negate value ( temp 4-component vector of double) 0:1363 'var23' ( temp 4-component vector of double) 0:1365 Sequence 0:1365 move second child to first child ( temp 4-component vector of uint) 0:1365 'var102' ( temp 4-component vector of uint) 0:1365 Negate value ( temp 4-component vector of uint) 0:1365 'var19' ( temp 4-component vector of uint) 0:1366 Sequence 0:1366 move second child to first child ( temp 4-component vector of uint64_t) 0:1366 'var103' ( temp 4-component vector of uint64_t) 0:1366 Negate value ( temp 4-component vector of uint64_t) 0:1366 'var21' ( temp 4-component vector of uint64_t) 0:1367 Sequence 0:1367 move second child to first child ( temp 4-component vector of float) 0:1367 'var104' ( temp 4-component vector of float) 0:1367 Negate value ( temp 4-component vector of float) 0:1367 'var22' ( temp 4-component vector of float) 0:1368 Sequence 0:1368 move second child to first child ( temp 4-component vector of double) 0:1368 'var105' ( temp 4-component vector of double) 0:1368 Negate value ( temp 4-component vector of double) 0:1368 'var23' ( temp 4-component vector of double) 0:1370 Sequence 0:1370 move second child to first child ( temp uint64_t) 0:1370 'var106' ( temp uint64_t) 0:1370 Negate value ( temp uint64_t) 0:1370 'var3' ( temp uint64_t) 0:1371 Sequence 0:1371 move second child to first child ( temp double) 0:1371 'var107' ( temp double) 0:1371 Negate value ( temp double) 0:1371 'var5' ( temp double) 0:1373 Sequence 0:1373 move second child to first child ( temp 2-component vector of uint64_t) 0:1373 'var108' ( temp 2-component vector of uint64_t) 0:1373 Negate value ( temp 2-component vector of uint64_t) 0:1373 'var9' ( temp 2-component vector of uint64_t) 0:1374 Sequence 0:1374 move second child to first child ( temp 2-component vector of double) 0:1374 'var109' ( temp 2-component vector of double) 0:1374 Negate value ( temp 2-component vector of double) 0:1374 'var11' ( temp 2-component vector of double) 0:1376 Sequence 0:1376 move second child to first child ( temp 3-component vector of uint64_t) 0:1376 'var110' ( temp 3-component vector of uint64_t) 0:1376 Negate value ( temp 3-component vector of uint64_t) 0:1376 'var15' ( temp 3-component vector of uint64_t) 0:1377 Sequence 0:1377 move second child to first child ( temp 3-component vector of double) 0:1377 'var111' ( temp 3-component vector of double) 0:1377 Negate value ( temp 3-component vector of double) 0:1377 'var17' ( temp 3-component vector of double) 0:1379 Sequence 0:1379 move second child to first child ( temp 4-component vector of uint64_t) 0:1379 'var112' ( temp 4-component vector of uint64_t) 0:1379 Negate value ( temp 4-component vector of uint64_t) 0:1379 'var21' ( temp 4-component vector of uint64_t) 0:1380 Sequence 0:1380 move second child to first child ( temp 4-component vector of double) 0:1380 'var113' ( temp 4-component vector of double) 0:1380 Negate value ( temp 4-component vector of double) 0:1380 'var23' ( temp 4-component vector of double) 0:1382 Sequence 0:1382 move second child to first child ( temp uint64_t) 0:1382 'var114' ( temp uint64_t) 0:1382 Negate value ( temp uint64_t) 0:1382 'var3' ( temp uint64_t) 0:1383 Sequence 0:1383 move second child to first child ( temp float) 0:1383 'var115' ( temp float) 0:1383 Negate value ( temp float) 0:1383 'var4' ( temp float) 0:1384 Sequence 0:1384 move second child to first child ( temp double) 0:1384 'var116' ( temp double) 0:1384 Negate value ( temp double) 0:1384 'var5' ( temp double) 0:1386 Sequence 0:1386 move second child to first child ( temp 2-component vector of uint64_t) 0:1386 'var117' ( temp 2-component vector of uint64_t) 0:1386 Negate value ( temp 2-component vector of uint64_t) 0:1386 'var9' ( temp 2-component vector of uint64_t) 0:1387 Sequence 0:1387 move second child to first child ( temp 2-component vector of float) 0:1387 'var118' ( temp 2-component vector of float) 0:1387 Negate value ( temp 2-component vector of float) 0:1387 'var10' ( temp 2-component vector of float) 0:1388 Sequence 0:1388 move second child to first child ( temp 2-component vector of double) 0:1388 'var119' ( temp 2-component vector of double) 0:1388 Negate value ( temp 2-component vector of double) 0:1388 'var11' ( temp 2-component vector of double) 0:1390 Sequence 0:1390 move second child to first child ( temp 3-component vector of uint64_t) 0:1390 'var120' ( temp 3-component vector of uint64_t) 0:1390 Negate value ( temp 3-component vector of uint64_t) 0:1390 'var15' ( temp 3-component vector of uint64_t) 0:1391 Sequence 0:1391 move second child to first child ( temp 3-component vector of float) 0:1391 'var121' ( temp 3-component vector of float) 0:1391 Negate value ( temp 3-component vector of float) 0:1391 'var16' ( temp 3-component vector of float) 0:1392 Sequence 0:1392 move second child to first child ( temp 3-component vector of double) 0:1392 'var122' ( temp 3-component vector of double) 0:1392 Negate value ( temp 3-component vector of double) 0:1392 'var17' ( temp 3-component vector of double) 0:1394 Sequence 0:1394 move second child to first child ( temp 4-component vector of uint64_t) 0:1394 'var123' ( temp 4-component vector of uint64_t) 0:1394 Negate value ( temp 4-component vector of uint64_t) 0:1394 'var21' ( temp 4-component vector of uint64_t) 0:1395 Sequence 0:1395 move second child to first child ( temp 4-component vector of float) 0:1395 'var124' ( temp 4-component vector of float) 0:1395 Negate value ( temp 4-component vector of float) 0:1395 'var22' ( temp 4-component vector of float) 0:1396 Sequence 0:1396 move second child to first child ( temp 4-component vector of double) 0:1396 'var125' ( temp 4-component vector of double) 0:1396 Negate value ( temp 4-component vector of double) 0:1396 'var23' ( temp 4-component vector of double) 0:1398 Sequence 0:1398 move second child to first child ( temp uint) 0:1398 'var126' ( temp uint) 0:1398 Negate value ( temp uint) 0:1398 'var1' ( temp uint) 0:1399 Sequence 0:1399 move second child to first child ( temp uint64_t) 0:1399 'var127' ( temp uint64_t) 0:1399 Negate value ( temp uint64_t) 0:1399 'var3' ( temp uint64_t) 0:1400 Sequence 0:1400 move second child to first child ( temp float) 0:1400 'var128' ( temp float) 0:1400 Negate value ( temp float) 0:1400 'var4' ( temp float) 0:1401 Sequence 0:1401 move second child to first child ( temp double) 0:1401 'var129' ( temp double) 0:1401 Negate value ( temp double) 0:1401 'var5' ( temp double) 0:1403 Sequence 0:1403 move second child to first child ( temp uint) 0:1403 'var130' ( temp uint) 0:1403 Negate value ( temp uint) 0:1403 'var1' ( temp uint) 0:1404 Sequence 0:1404 move second child to first child ( temp uint64_t) 0:1404 'var131' ( temp uint64_t) 0:1404 Negate value ( temp uint64_t) 0:1404 'var3' ( temp uint64_t) 0:1405 Sequence 0:1405 move second child to first child ( temp float) 0:1405 'var132' ( temp float) 0:1405 Negate value ( temp float) 0:1405 'var4' ( temp float) 0:1406 Sequence 0:1406 move second child to first child ( temp double) 0:1406 'var133' ( temp double) 0:1406 Negate value ( temp double) 0:1406 'var5' ( temp double) 0:1408 Sequence 0:1408 move second child to first child ( temp 2-component vector of uint) 0:1408 'var134' ( temp 2-component vector of uint) 0:1408 Negate value ( temp 2-component vector of uint) 0:1408 'var7' ( temp 2-component vector of uint) 0:1409 Sequence 0:1409 move second child to first child ( temp 2-component vector of uint64_t) 0:1409 'var135' ( temp 2-component vector of uint64_t) 0:1409 Negate value ( temp 2-component vector of uint64_t) 0:1409 'var9' ( temp 2-component vector of uint64_t) 0:1410 Sequence 0:1410 move second child to first child ( temp 2-component vector of float) 0:1410 'var136' ( temp 2-component vector of float) 0:1410 Negate value ( temp 2-component vector of float) 0:1410 'var10' ( temp 2-component vector of float) 0:1411 Sequence 0:1411 move second child to first child ( temp 2-component vector of double) 0:1411 'var137' ( temp 2-component vector of double) 0:1411 Negate value ( temp 2-component vector of double) 0:1411 'var11' ( temp 2-component vector of double) 0:1413 Sequence 0:1413 move second child to first child ( temp 2-component vector of uint) 0:1413 'var138' ( temp 2-component vector of uint) 0:1413 Negate value ( temp 2-component vector of uint) 0:1413 'var7' ( temp 2-component vector of uint) 0:1414 Sequence 0:1414 move second child to first child ( temp 2-component vector of uint64_t) 0:1414 'var139' ( temp 2-component vector of uint64_t) 0:1414 Negate value ( temp 2-component vector of uint64_t) 0:1414 'var9' ( temp 2-component vector of uint64_t) 0:1415 Sequence 0:1415 move second child to first child ( temp 2-component vector of float) 0:1415 'var140' ( temp 2-component vector of float) 0:1415 Negate value ( temp 2-component vector of float) 0:1415 'var10' ( temp 2-component vector of float) 0:1416 Sequence 0:1416 move second child to first child ( temp 2-component vector of double) 0:1416 'var141' ( temp 2-component vector of double) 0:1416 Negate value ( temp 2-component vector of double) 0:1416 'var11' ( temp 2-component vector of double) 0:1418 Sequence 0:1418 move second child to first child ( temp 3-component vector of uint) 0:1418 'var142' ( temp 3-component vector of uint) 0:1418 Negate value ( temp 3-component vector of uint) 0:1418 'var13' ( temp 3-component vector of uint) 0:1419 Sequence 0:1419 move second child to first child ( temp 3-component vector of uint64_t) 0:1419 'var143' ( temp 3-component vector of uint64_t) 0:1419 Negate value ( temp 3-component vector of uint64_t) 0:1419 'var15' ( temp 3-component vector of uint64_t) 0:1420 Sequence 0:1420 move second child to first child ( temp 3-component vector of float) 0:1420 'var144' ( temp 3-component vector of float) 0:1420 Negate value ( temp 3-component vector of float) 0:1420 'var16' ( temp 3-component vector of float) 0:1421 Sequence 0:1421 move second child to first child ( temp 3-component vector of double) 0:1421 'var145' ( temp 3-component vector of double) 0:1421 Negate value ( temp 3-component vector of double) 0:1421 'var17' ( temp 3-component vector of double) 0:1423 Sequence 0:1423 move second child to first child ( temp 4-component vector of uint) 0:1423 'var146' ( temp 4-component vector of uint) 0:1423 Negate value ( temp 4-component vector of uint) 0:1423 'var19' ( temp 4-component vector of uint) 0:1424 Sequence 0:1424 move second child to first child ( temp 4-component vector of uint64_t) 0:1424 'var147' ( temp 4-component vector of uint64_t) 0:1424 Negate value ( temp 4-component vector of uint64_t) 0:1424 'var21' ( temp 4-component vector of uint64_t) 0:1425 Sequence 0:1425 move second child to first child ( temp 4-component vector of float) 0:1425 'var148' ( temp 4-component vector of float) 0:1425 Negate value ( temp 4-component vector of float) 0:1425 'var22' ( temp 4-component vector of float) 0:1426 Sequence 0:1426 move second child to first child ( temp 4-component vector of double) 0:1426 'var149' ( temp 4-component vector of double) 0:1426 Negate value ( temp 4-component vector of double) 0:1426 'var23' ( temp 4-component vector of double) 0:1428 Sequence 0:1428 move second child to first child ( temp double) 0:1428 'var150' ( temp double) 0:1428 Negate value ( temp double) 0:1428 'var5' ( temp double) 0:1430 Sequence 0:1430 move second child to first child ( temp 2-component vector of double) 0:1430 'var151' ( temp 2-component vector of double) 0:1430 Negate value ( temp 2-component vector of double) 0:1430 'var11' ( temp 2-component vector of double) 0:1432 Sequence 0:1432 move second child to first child ( temp 3-component vector of double) 0:1432 'var152' ( temp 3-component vector of double) 0:1432 Negate value ( temp 3-component vector of double) 0:1432 'var17' ( temp 3-component vector of double) 0:1434 Sequence 0:1434 move second child to first child ( temp 4-component vector of double) 0:1434 'var153' ( temp 4-component vector of double) 0:1434 Negate value ( temp 4-component vector of double) 0:1434 'var23' ( temp 4-component vector of double) 0:1436 Sequence 0:1436 move second child to first child ( temp double) 0:1436 'var154' ( temp double) 0:1436 Negate value ( temp double) 0:1436 'var5' ( temp double) 0:1438 Sequence 0:1438 move second child to first child ( temp 2-component vector of double) 0:1438 'var155' ( temp 2-component vector of double) 0:1438 Negate value ( temp 2-component vector of double) 0:1438 'var11' ( temp 2-component vector of double) 0:1440 Sequence 0:1440 move second child to first child ( temp 3-component vector of double) 0:1440 'var156' ( temp 3-component vector of double) 0:1440 Negate value ( temp 3-component vector of double) 0:1440 'var17' ( temp 3-component vector of double) 0:1442 Sequence 0:1442 move second child to first child ( temp 4-component vector of double) 0:1442 'var157' ( temp 4-component vector of double) 0:1442 Negate value ( temp 4-component vector of double) 0:1442 'var23' ( temp 4-component vector of double) 0:1444 Sequence 0:1444 move second child to first child ( temp float) 0:1444 'var158' ( temp float) 0:1444 Negate value ( temp float) 0:1444 'var4' ( temp float) 0:1445 Sequence 0:1445 move second child to first child ( temp double) 0:1445 'var159' ( temp double) 0:1445 Negate value ( temp double) 0:1445 'var5' ( temp double) 0:1447 Sequence 0:1447 move second child to first child ( temp 2-component vector of float) 0:1447 'var160' ( temp 2-component vector of float) 0:1447 Negate value ( temp 2-component vector of float) 0:1447 'var10' ( temp 2-component vector of float) 0:1448 Sequence 0:1448 move second child to first child ( temp 2-component vector of double) 0:1448 'var161' ( temp 2-component vector of double) 0:1448 Negate value ( temp 2-component vector of double) 0:1448 'var11' ( temp 2-component vector of double) 0:1450 Sequence 0:1450 move second child to first child ( temp 3-component vector of float) 0:1450 'var162' ( temp 3-component vector of float) 0:1450 Negate value ( temp 3-component vector of float) 0:1450 'var16' ( temp 3-component vector of float) 0:1451 Sequence 0:1451 move second child to first child ( temp 3-component vector of double) 0:1451 'var163' ( temp 3-component vector of double) 0:1451 Negate value ( temp 3-component vector of double) 0:1451 'var17' ( temp 3-component vector of double) 0:1453 Sequence 0:1453 move second child to first child ( temp 4-component vector of float) 0:1453 'var164' ( temp 4-component vector of float) 0:1453 Negate value ( temp 4-component vector of float) 0:1453 'var22' ( temp 4-component vector of float) 0:1454 Sequence 0:1454 move second child to first child ( temp 4-component vector of double) 0:1454 'var165' ( temp 4-component vector of double) 0:1454 Negate value ( temp 4-component vector of double) 0:1454 'var23' ( temp 4-component vector of double) 0:1456 Sequence 0:1456 move second child to first child ( temp uint) 0:1456 'var166' ( temp uint) 0:1456 Pre-Increment ( temp uint) 0:1456 'var1' ( temp uint) 0:1457 Sequence 0:1457 move second child to first child ( temp int64_t) 0:1457 'var167' ( temp int64_t) 0:1457 Pre-Increment ( temp int64_t) 0:1457 'var2' ( temp int64_t) 0:1458 Sequence 0:1458 move second child to first child ( temp uint64_t) 0:1458 'var168' ( temp uint64_t) 0:1458 Pre-Increment ( temp uint64_t) 0:1458 'var3' ( temp uint64_t) 0:1459 Sequence 0:1459 move second child to first child ( temp float) 0:1459 'var169' ( temp float) 0:1459 Pre-Increment ( temp float) 0:1459 'var4' ( temp float) 0:1460 Sequence 0:1460 move second child to first child ( temp double) 0:1460 'var170' ( temp double) 0:1460 Pre-Increment ( temp double) 0:1460 'var5' ( temp double) 0:1462 Sequence 0:1462 move second child to first child ( temp 2-component vector of uint) 0:1462 'var171' ( temp 2-component vector of uint) 0:1462 Pre-Increment ( temp 2-component vector of uint) 0:1462 'var7' ( temp 2-component vector of uint) 0:1463 Sequence 0:1463 move second child to first child ( temp 2-component vector of int64_t) 0:1463 'var172' ( temp 2-component vector of int64_t) 0:1463 Pre-Increment ( temp 2-component vector of int64_t) 0:1463 'var8' ( temp 2-component vector of int64_t) 0:1464 Sequence 0:1464 move second child to first child ( temp 2-component vector of uint64_t) 0:1464 'var173' ( temp 2-component vector of uint64_t) 0:1464 Pre-Increment ( temp 2-component vector of uint64_t) 0:1464 'var9' ( temp 2-component vector of uint64_t) 0:1465 Sequence 0:1465 move second child to first child ( temp 2-component vector of float) 0:1465 'var174' ( temp 2-component vector of float) 0:1465 Pre-Increment ( temp 2-component vector of float) 0:1465 'var10' ( temp 2-component vector of float) 0:1466 Sequence 0:1466 move second child to first child ( temp 2-component vector of double) 0:1466 'var175' ( temp 2-component vector of double) 0:1466 Pre-Increment ( temp 2-component vector of double) 0:1466 'var11' ( temp 2-component vector of double) 0:1468 Sequence 0:1468 move second child to first child ( temp 3-component vector of uint) 0:1468 'var176' ( temp 3-component vector of uint) 0:1468 Pre-Increment ( temp 3-component vector of uint) 0:1468 'var13' ( temp 3-component vector of uint) 0:1469 Sequence 0:1469 move second child to first child ( temp 3-component vector of int64_t) 0:1469 'var177' ( temp 3-component vector of int64_t) 0:1469 Pre-Increment ( temp 3-component vector of int64_t) 0:1469 'var14' ( temp 3-component vector of int64_t) 0:1470 Sequence 0:1470 move second child to first child ( temp 3-component vector of uint64_t) 0:1470 'var178' ( temp 3-component vector of uint64_t) 0:1470 Pre-Increment ( temp 3-component vector of uint64_t) 0:1470 'var15' ( temp 3-component vector of uint64_t) 0:1471 Sequence 0:1471 move second child to first child ( temp 3-component vector of float) 0:1471 'var179' ( temp 3-component vector of float) 0:1471 Pre-Increment ( temp 3-component vector of float) 0:1471 'var16' ( temp 3-component vector of float) 0:1472 Sequence 0:1472 move second child to first child ( temp 3-component vector of double) 0:1472 'var180' ( temp 3-component vector of double) 0:1472 Pre-Increment ( temp 3-component vector of double) 0:1472 'var17' ( temp 3-component vector of double) 0:1474 Sequence 0:1474 move second child to first child ( temp 4-component vector of uint) 0:1474 'var181' ( temp 4-component vector of uint) 0:1474 Pre-Increment ( temp 4-component vector of uint) 0:1474 'var19' ( temp 4-component vector of uint) 0:1475 Sequence 0:1475 move second child to first child ( temp 4-component vector of int64_t) 0:1475 'var182' ( temp 4-component vector of int64_t) 0:1475 Pre-Increment ( temp 4-component vector of int64_t) 0:1475 'var20' ( temp 4-component vector of int64_t) 0:1476 Sequence 0:1476 move second child to first child ( temp 4-component vector of uint64_t) 0:1476 'var183' ( temp 4-component vector of uint64_t) 0:1476 Pre-Increment ( temp 4-component vector of uint64_t) 0:1476 'var21' ( temp 4-component vector of uint64_t) 0:1477 Sequence 0:1477 move second child to first child ( temp 4-component vector of float) 0:1477 'var184' ( temp 4-component vector of float) 0:1477 Pre-Increment ( temp 4-component vector of float) 0:1477 'var22' ( temp 4-component vector of float) 0:1478 Sequence 0:1478 move second child to first child ( temp 4-component vector of double) 0:1478 'var185' ( temp 4-component vector of double) 0:1478 Pre-Increment ( temp 4-component vector of double) 0:1478 'var23' ( temp 4-component vector of double) 0:1480 Sequence 0:1480 move second child to first child ( temp int) 0:1480 'var186' ( temp int) 0:1480 Pre-Increment ( temp int) 0:1480 'var0' ( temp int) 0:1481 Sequence 0:1481 move second child to first child ( temp int64_t) 0:1481 'var187' ( temp int64_t) 0:1481 Pre-Increment ( temp int64_t) 0:1481 'var2' ( temp int64_t) 0:1482 Sequence 0:1482 move second child to first child ( temp uint) 0:1482 'var188' ( temp uint) 0:1482 Pre-Increment ( temp uint) 0:1482 'var1' ( temp uint) 0:1483 Sequence 0:1483 move second child to first child ( temp uint64_t) 0:1483 'var189' ( temp uint64_t) 0:1483 Pre-Increment ( temp uint64_t) 0:1483 'var3' ( temp uint64_t) 0:1484 Sequence 0:1484 move second child to first child ( temp float) 0:1484 'var190' ( temp float) 0:1484 Pre-Increment ( temp float) 0:1484 'var4' ( temp float) 0:1485 Sequence 0:1485 move second child to first child ( temp double) 0:1485 'var191' ( temp double) 0:1485 Pre-Increment ( temp double) 0:1485 'var5' ( temp double) 0:1487 Sequence 0:1487 move second child to first child ( temp int) 0:1487 'var192' ( temp int) 0:1487 Pre-Increment ( temp int) 0:1487 'var0' ( temp int) 0:1488 Sequence 0:1488 move second child to first child ( temp int64_t) 0:1488 'var193' ( temp int64_t) 0:1488 Pre-Increment ( temp int64_t) 0:1488 'var2' ( temp int64_t) 0:1489 Sequence 0:1489 move second child to first child ( temp uint) 0:1489 'var194' ( temp uint) 0:1489 Pre-Increment ( temp uint) 0:1489 'var1' ( temp uint) 0:1490 Sequence 0:1490 move second child to first child ( temp uint64_t) 0:1490 'var195' ( temp uint64_t) 0:1490 Pre-Increment ( temp uint64_t) 0:1490 'var3' ( temp uint64_t) 0:1491 Sequence 0:1491 move second child to first child ( temp float) 0:1491 'var196' ( temp float) 0:1491 Pre-Increment ( temp float) 0:1491 'var4' ( temp float) 0:1492 Sequence 0:1492 move second child to first child ( temp double) 0:1492 'var197' ( temp double) 0:1492 Pre-Increment ( temp double) 0:1492 'var5' ( temp double) 0:1494 Sequence 0:1494 move second child to first child ( temp 2-component vector of int) 0:1494 'var198' ( temp 2-component vector of int) 0:1494 Pre-Increment ( temp 2-component vector of int) 0:1494 'var6' ( temp 2-component vector of int) 0:1495 Sequence 0:1495 move second child to first child ( temp 2-component vector of int64_t) 0:1495 'var199' ( temp 2-component vector of int64_t) 0:1495 Pre-Increment ( temp 2-component vector of int64_t) 0:1495 'var8' ( temp 2-component vector of int64_t) 0:1496 Sequence 0:1496 move second child to first child ( temp 2-component vector of uint) 0:1496 'var200' ( temp 2-component vector of uint) 0:1496 Pre-Increment ( temp 2-component vector of uint) 0:1496 'var7' ( temp 2-component vector of uint) 0:1497 Sequence 0:1497 move second child to first child ( temp 2-component vector of uint64_t) 0:1497 'var201' ( temp 2-component vector of uint64_t) 0:1497 Pre-Increment ( temp 2-component vector of uint64_t) 0:1497 'var9' ( temp 2-component vector of uint64_t) 0:1498 Sequence 0:1498 move second child to first child ( temp 2-component vector of float) 0:1498 'var202' ( temp 2-component vector of float) 0:1498 Pre-Increment ( temp 2-component vector of float) 0:1498 'var10' ( temp 2-component vector of float) 0:1499 Sequence 0:1499 move second child to first child ( temp 2-component vector of double) 0:1499 'var203' ( temp 2-component vector of double) 0:1499 Pre-Increment ( temp 2-component vector of double) 0:1499 'var11' ( temp 2-component vector of double) 0:1501 Sequence 0:1501 move second child to first child ( temp 2-component vector of int) 0:1501 'var204' ( temp 2-component vector of int) 0:1501 Pre-Increment ( temp 2-component vector of int) 0:1501 'var6' ( temp 2-component vector of int) 0:1502 Sequence 0:1502 move second child to first child ( temp 2-component vector of int64_t) 0:1502 'var205' ( temp 2-component vector of int64_t) 0:1502 Pre-Increment ( temp 2-component vector of int64_t) 0:1502 'var8' ( temp 2-component vector of int64_t) 0:1503 Sequence 0:1503 move second child to first child ( temp 2-component vector of uint) 0:1503 'var206' ( temp 2-component vector of uint) 0:1503 Pre-Increment ( temp 2-component vector of uint) 0:1503 'var7' ( temp 2-component vector of uint) 0:1504 Sequence 0:1504 move second child to first child ( temp 2-component vector of uint64_t) 0:1504 'var207' ( temp 2-component vector of uint64_t) 0:1504 Pre-Increment ( temp 2-component vector of uint64_t) 0:1504 'var9' ( temp 2-component vector of uint64_t) 0:1505 Sequence 0:1505 move second child to first child ( temp 2-component vector of float) 0:1505 'var208' ( temp 2-component vector of float) 0:1505 Pre-Increment ( temp 2-component vector of float) 0:1505 'var10' ( temp 2-component vector of float) 0:1506 Sequence 0:1506 move second child to first child ( temp 2-component vector of double) 0:1506 'var209' ( temp 2-component vector of double) 0:1506 Pre-Increment ( temp 2-component vector of double) 0:1506 'var11' ( temp 2-component vector of double) 0:1508 Sequence 0:1508 move second child to first child ( temp 3-component vector of int) 0:1508 'var210' ( temp 3-component vector of int) 0:1508 Pre-Increment ( temp 3-component vector of int) 0:1508 'var12' ( temp 3-component vector of int) 0:1509 Sequence 0:1509 move second child to first child ( temp 3-component vector of int64_t) 0:1509 'var211' ( temp 3-component vector of int64_t) 0:1509 Pre-Increment ( temp 3-component vector of int64_t) 0:1509 'var14' ( temp 3-component vector of int64_t) 0:1510 Sequence 0:1510 move second child to first child ( temp 3-component vector of uint) 0:1510 'var212' ( temp 3-component vector of uint) 0:1510 Pre-Increment ( temp 3-component vector of uint) 0:1510 'var13' ( temp 3-component vector of uint) 0:1511 Sequence 0:1511 move second child to first child ( temp 3-component vector of uint64_t) 0:1511 'var213' ( temp 3-component vector of uint64_t) 0:1511 Pre-Increment ( temp 3-component vector of uint64_t) 0:1511 'var15' ( temp 3-component vector of uint64_t) 0:1512 Sequence 0:1512 move second child to first child ( temp 3-component vector of float) 0:1512 'var214' ( temp 3-component vector of float) 0:1512 Pre-Increment ( temp 3-component vector of float) 0:1512 'var16' ( temp 3-component vector of float) 0:1513 Sequence 0:1513 move second child to first child ( temp 3-component vector of double) 0:1513 'var215' ( temp 3-component vector of double) 0:1513 Pre-Increment ( temp 3-component vector of double) 0:1513 'var17' ( temp 3-component vector of double) 0:1515 Sequence 0:1515 move second child to first child ( temp 3-component vector of uint) 0:1515 'var216' ( temp 3-component vector of uint) 0:1515 Pre-Increment ( temp 3-component vector of uint) 0:1515 'var13' ( temp 3-component vector of uint) 0:1516 Sequence 0:1516 move second child to first child ( temp 3-component vector of uint64_t) 0:1516 'var217' ( temp 3-component vector of uint64_t) 0:1516 Pre-Increment ( temp 3-component vector of uint64_t) 0:1516 'var15' ( temp 3-component vector of uint64_t) 0:1517 Sequence 0:1517 move second child to first child ( temp 3-component vector of float) 0:1517 'var218' ( temp 3-component vector of float) 0:1517 Pre-Increment ( temp 3-component vector of float) 0:1517 'var16' ( temp 3-component vector of float) 0:1518 Sequence 0:1518 move second child to first child ( temp 3-component vector of double) 0:1518 'var219' ( temp 3-component vector of double) 0:1518 Pre-Increment ( temp 3-component vector of double) 0:1518 'var17' ( temp 3-component vector of double) 0:1520 Sequence 0:1520 move second child to first child ( temp 4-component vector of int) 0:1520 'var220' ( temp 4-component vector of int) 0:1520 Pre-Increment ( temp 4-component vector of int) 0:1520 'var18' ( temp 4-component vector of int) 0:1521 Sequence 0:1521 move second child to first child ( temp 4-component vector of int64_t) 0:1521 'var221' ( temp 4-component vector of int64_t) 0:1521 Pre-Increment ( temp 4-component vector of int64_t) 0:1521 'var20' ( temp 4-component vector of int64_t) 0:1522 Sequence 0:1522 move second child to first child ( temp 4-component vector of uint) 0:1522 'var222' ( temp 4-component vector of uint) 0:1522 Pre-Increment ( temp 4-component vector of uint) 0:1522 'var19' ( temp 4-component vector of uint) 0:1523 Sequence 0:1523 move second child to first child ( temp 4-component vector of uint64_t) 0:1523 'var223' ( temp 4-component vector of uint64_t) 0:1523 Pre-Increment ( temp 4-component vector of uint64_t) 0:1523 'var21' ( temp 4-component vector of uint64_t) 0:1524 Sequence 0:1524 move second child to first child ( temp 4-component vector of float) 0:1524 'var224' ( temp 4-component vector of float) 0:1524 Pre-Increment ( temp 4-component vector of float) 0:1524 'var22' ( temp 4-component vector of float) 0:1525 Sequence 0:1525 move second child to first child ( temp 4-component vector of double) 0:1525 'var225' ( temp 4-component vector of double) 0:1525 Pre-Increment ( temp 4-component vector of double) 0:1525 'var23' ( temp 4-component vector of double) 0:1527 Sequence 0:1527 move second child to first child ( temp 4-component vector of uint) 0:1527 'var226' ( temp 4-component vector of uint) 0:1527 Pre-Increment ( temp 4-component vector of uint) 0:1527 'var19' ( temp 4-component vector of uint) 0:1528 Sequence 0:1528 move second child to first child ( temp 4-component vector of uint64_t) 0:1528 'var227' ( temp 4-component vector of uint64_t) 0:1528 Pre-Increment ( temp 4-component vector of uint64_t) 0:1528 'var21' ( temp 4-component vector of uint64_t) 0:1529 Sequence 0:1529 move second child to first child ( temp 4-component vector of float) 0:1529 'var228' ( temp 4-component vector of float) 0:1529 Pre-Increment ( temp 4-component vector of float) 0:1529 'var22' ( temp 4-component vector of float) 0:1530 Sequence 0:1530 move second child to first child ( temp 4-component vector of double) 0:1530 'var229' ( temp 4-component vector of double) 0:1530 Pre-Increment ( temp 4-component vector of double) 0:1530 'var23' ( temp 4-component vector of double) 0:1532 Sequence 0:1532 move second child to first child ( temp uint64_t) 0:1532 'var230' ( temp uint64_t) 0:1532 Pre-Increment ( temp uint64_t) 0:1532 'var3' ( temp uint64_t) 0:1533 Sequence 0:1533 move second child to first child ( temp double) 0:1533 'var231' ( temp double) 0:1533 Pre-Increment ( temp double) 0:1533 'var5' ( temp double) 0:1535 Sequence 0:1535 move second child to first child ( temp 2-component vector of uint64_t) 0:1535 'var232' ( temp 2-component vector of uint64_t) 0:1535 Pre-Increment ( temp 2-component vector of uint64_t) 0:1535 'var9' ( temp 2-component vector of uint64_t) 0:1536 Sequence 0:1536 move second child to first child ( temp 2-component vector of double) 0:1536 'var233' ( temp 2-component vector of double) 0:1536 Pre-Increment ( temp 2-component vector of double) 0:1536 'var11' ( temp 2-component vector of double) 0:1538 Sequence 0:1538 move second child to first child ( temp 3-component vector of uint64_t) 0:1538 'var234' ( temp 3-component vector of uint64_t) 0:1538 Pre-Increment ( temp 3-component vector of uint64_t) 0:1538 'var15' ( temp 3-component vector of uint64_t) 0:1539 Sequence 0:1539 move second child to first child ( temp 3-component vector of double) 0:1539 'var235' ( temp 3-component vector of double) 0:1539 Pre-Increment ( temp 3-component vector of double) 0:1539 'var17' ( temp 3-component vector of double) 0:1541 Sequence 0:1541 move second child to first child ( temp 4-component vector of uint64_t) 0:1541 'var236' ( temp 4-component vector of uint64_t) 0:1541 Pre-Increment ( temp 4-component vector of uint64_t) 0:1541 'var21' ( temp 4-component vector of uint64_t) 0:1542 Sequence 0:1542 move second child to first child ( temp 4-component vector of double) 0:1542 'var237' ( temp 4-component vector of double) 0:1542 Pre-Increment ( temp 4-component vector of double) 0:1542 'var23' ( temp 4-component vector of double) 0:1544 Sequence 0:1544 move second child to first child ( temp uint64_t) 0:1544 'var238' ( temp uint64_t) 0:1544 Pre-Increment ( temp uint64_t) 0:1544 'var3' ( temp uint64_t) 0:1545 Sequence 0:1545 move second child to first child ( temp float) 0:1545 'var239' ( temp float) 0:1545 Pre-Increment ( temp float) 0:1545 'var4' ( temp float) 0:1546 Sequence 0:1546 move second child to first child ( temp double) 0:1546 'var240' ( temp double) 0:1546 Pre-Increment ( temp double) 0:1546 'var5' ( temp double) 0:1548 Sequence 0:1548 move second child to first child ( temp 2-component vector of uint64_t) 0:1548 'var241' ( temp 2-component vector of uint64_t) 0:1548 Pre-Increment ( temp 2-component vector of uint64_t) 0:1548 'var9' ( temp 2-component vector of uint64_t) 0:1549 Sequence 0:1549 move second child to first child ( temp 2-component vector of float) 0:1549 'var242' ( temp 2-component vector of float) 0:1549 Pre-Increment ( temp 2-component vector of float) 0:1549 'var10' ( temp 2-component vector of float) 0:1550 Sequence 0:1550 move second child to first child ( temp 2-component vector of double) 0:1550 'var243' ( temp 2-component vector of double) 0:1550 Pre-Increment ( temp 2-component vector of double) 0:1550 'var11' ( temp 2-component vector of double) 0:1552 Sequence 0:1552 move second child to first child ( temp 3-component vector of uint64_t) 0:1552 'var244' ( temp 3-component vector of uint64_t) 0:1552 Pre-Increment ( temp 3-component vector of uint64_t) 0:1552 'var15' ( temp 3-component vector of uint64_t) 0:1553 Sequence 0:1553 move second child to first child ( temp 3-component vector of float) 0:1553 'var245' ( temp 3-component vector of float) 0:1553 Pre-Increment ( temp 3-component vector of float) 0:1553 'var16' ( temp 3-component vector of float) 0:1554 Sequence 0:1554 move second child to first child ( temp 3-component vector of double) 0:1554 'var246' ( temp 3-component vector of double) 0:1554 Pre-Increment ( temp 3-component vector of double) 0:1554 'var17' ( temp 3-component vector of double) 0:1556 Sequence 0:1556 move second child to first child ( temp 4-component vector of uint64_t) 0:1556 'var247' ( temp 4-component vector of uint64_t) 0:1556 Pre-Increment ( temp 4-component vector of uint64_t) 0:1556 'var21' ( temp 4-component vector of uint64_t) 0:1557 Sequence 0:1557 move second child to first child ( temp 4-component vector of float) 0:1557 'var248' ( temp 4-component vector of float) 0:1557 Pre-Increment ( temp 4-component vector of float) 0:1557 'var22' ( temp 4-component vector of float) 0:1558 Sequence 0:1558 move second child to first child ( temp 4-component vector of double) 0:1558 'var249' ( temp 4-component vector of double) 0:1558 Pre-Increment ( temp 4-component vector of double) 0:1558 'var23' ( temp 4-component vector of double) 0:1560 Sequence 0:1560 move second child to first child ( temp uint) 0:1560 'var250' ( temp uint) 0:1560 Pre-Increment ( temp uint) 0:1560 'var1' ( temp uint) 0:1561 Sequence 0:1561 move second child to first child ( temp uint64_t) 0:1561 'var251' ( temp uint64_t) 0:1561 Pre-Increment ( temp uint64_t) 0:1561 'var3' ( temp uint64_t) 0:1562 Sequence 0:1562 move second child to first child ( temp float) 0:1562 'var252' ( temp float) 0:1562 Pre-Increment ( temp float) 0:1562 'var4' ( temp float) 0:1563 Sequence 0:1563 move second child to first child ( temp double) 0:1563 'var253' ( temp double) 0:1563 Pre-Increment ( temp double) 0:1563 'var5' ( temp double) 0:1565 Sequence 0:1565 move second child to first child ( temp uint) 0:1565 'var254' ( temp uint) 0:1565 Pre-Increment ( temp uint) 0:1565 'var1' ( temp uint) 0:1566 Sequence 0:1566 move second child to first child ( temp uint64_t) 0:1566 'var255' ( temp uint64_t) 0:1566 Pre-Increment ( temp uint64_t) 0:1566 'var3' ( temp uint64_t) 0:1567 Sequence 0:1567 move second child to first child ( temp float) 0:1567 'var256' ( temp float) 0:1567 Pre-Increment ( temp float) 0:1567 'var4' ( temp float) 0:1568 Sequence 0:1568 move second child to first child ( temp double) 0:1568 'var257' ( temp double) 0:1568 Pre-Increment ( temp double) 0:1568 'var5' ( temp double) 0:1570 Sequence 0:1570 move second child to first child ( temp 2-component vector of uint) 0:1570 'var258' ( temp 2-component vector of uint) 0:1570 Pre-Increment ( temp 2-component vector of uint) 0:1570 'var7' ( temp 2-component vector of uint) 0:1571 Sequence 0:1571 move second child to first child ( temp 2-component vector of uint64_t) 0:1571 'var259' ( temp 2-component vector of uint64_t) 0:1571 Pre-Increment ( temp 2-component vector of uint64_t) 0:1571 'var9' ( temp 2-component vector of uint64_t) 0:1572 Sequence 0:1572 move second child to first child ( temp 2-component vector of float) 0:1572 'var260' ( temp 2-component vector of float) 0:1572 Pre-Increment ( temp 2-component vector of float) 0:1572 'var10' ( temp 2-component vector of float) 0:1573 Sequence 0:1573 move second child to first child ( temp 2-component vector of double) 0:1573 'var261' ( temp 2-component vector of double) 0:1573 Pre-Increment ( temp 2-component vector of double) 0:1573 'var11' ( temp 2-component vector of double) 0:1575 Sequence 0:1575 move second child to first child ( temp 2-component vector of uint) 0:1575 'var262' ( temp 2-component vector of uint) 0:1575 Pre-Increment ( temp 2-component vector of uint) 0:1575 'var7' ( temp 2-component vector of uint) 0:1576 Sequence 0:1576 move second child to first child ( temp 2-component vector of uint64_t) 0:1576 'var263' ( temp 2-component vector of uint64_t) 0:1576 Pre-Increment ( temp 2-component vector of uint64_t) 0:1576 'var9' ( temp 2-component vector of uint64_t) 0:1577 Sequence 0:1577 move second child to first child ( temp 2-component vector of float) 0:1577 'var264' ( temp 2-component vector of float) 0:1577 Pre-Increment ( temp 2-component vector of float) 0:1577 'var10' ( temp 2-component vector of float) 0:1578 Sequence 0:1578 move second child to first child ( temp 2-component vector of double) 0:1578 'var265' ( temp 2-component vector of double) 0:1578 Pre-Increment ( temp 2-component vector of double) 0:1578 'var11' ( temp 2-component vector of double) 0:1580 Sequence 0:1580 move second child to first child ( temp 3-component vector of uint) 0:1580 'var266' ( temp 3-component vector of uint) 0:1580 Pre-Increment ( temp 3-component vector of uint) 0:1580 'var13' ( temp 3-component vector of uint) 0:1581 Sequence 0:1581 move second child to first child ( temp 3-component vector of uint64_t) 0:1581 'var267' ( temp 3-component vector of uint64_t) 0:1581 Pre-Increment ( temp 3-component vector of uint64_t) 0:1581 'var15' ( temp 3-component vector of uint64_t) 0:1582 Sequence 0:1582 move second child to first child ( temp 3-component vector of float) 0:1582 'var268' ( temp 3-component vector of float) 0:1582 Pre-Increment ( temp 3-component vector of float) 0:1582 'var16' ( temp 3-component vector of float) 0:1583 Sequence 0:1583 move second child to first child ( temp 3-component vector of double) 0:1583 'var269' ( temp 3-component vector of double) 0:1583 Pre-Increment ( temp 3-component vector of double) 0:1583 'var17' ( temp 3-component vector of double) 0:1585 Sequence 0:1585 move second child to first child ( temp 4-component vector of uint) 0:1585 'var270' ( temp 4-component vector of uint) 0:1585 Pre-Increment ( temp 4-component vector of uint) 0:1585 'var19' ( temp 4-component vector of uint) 0:1586 Sequence 0:1586 move second child to first child ( temp 4-component vector of uint64_t) 0:1586 'var271' ( temp 4-component vector of uint64_t) 0:1586 Pre-Increment ( temp 4-component vector of uint64_t) 0:1586 'var21' ( temp 4-component vector of uint64_t) 0:1587 Sequence 0:1587 move second child to first child ( temp 4-component vector of float) 0:1587 'var272' ( temp 4-component vector of float) 0:1587 Pre-Increment ( temp 4-component vector of float) 0:1587 'var22' ( temp 4-component vector of float) 0:1588 Sequence 0:1588 move second child to first child ( temp 4-component vector of double) 0:1588 'var273' ( temp 4-component vector of double) 0:1588 Pre-Increment ( temp 4-component vector of double) 0:1588 'var23' ( temp 4-component vector of double) 0:1590 Sequence 0:1590 move second child to first child ( temp double) 0:1590 'var274' ( temp double) 0:1590 Pre-Increment ( temp double) 0:1590 'var5' ( temp double) 0:1592 Sequence 0:1592 move second child to first child ( temp 2-component vector of double) 0:1592 'var275' ( temp 2-component vector of double) 0:1592 Pre-Increment ( temp 2-component vector of double) 0:1592 'var11' ( temp 2-component vector of double) 0:1594 Sequence 0:1594 move second child to first child ( temp 3-component vector of double) 0:1594 'var276' ( temp 3-component vector of double) 0:1594 Pre-Increment ( temp 3-component vector of double) 0:1594 'var17' ( temp 3-component vector of double) 0:1596 Sequence 0:1596 move second child to first child ( temp 4-component vector of double) 0:1596 'var277' ( temp 4-component vector of double) 0:1596 Pre-Increment ( temp 4-component vector of double) 0:1596 'var23' ( temp 4-component vector of double) 0:1598 Sequence 0:1598 move second child to first child ( temp double) 0:1598 'var278' ( temp double) 0:1598 Pre-Increment ( temp double) 0:1598 'var5' ( temp double) 0:1600 Sequence 0:1600 move second child to first child ( temp 2-component vector of double) 0:1600 'var279' ( temp 2-component vector of double) 0:1600 Pre-Increment ( temp 2-component vector of double) 0:1600 'var11' ( temp 2-component vector of double) 0:1602 Sequence 0:1602 move second child to first child ( temp 3-component vector of double) 0:1602 'var280' ( temp 3-component vector of double) 0:1602 Pre-Increment ( temp 3-component vector of double) 0:1602 'var17' ( temp 3-component vector of double) 0:1604 Sequence 0:1604 move second child to first child ( temp 4-component vector of double) 0:1604 'var281' ( temp 4-component vector of double) 0:1604 Pre-Increment ( temp 4-component vector of double) 0:1604 'var23' ( temp 4-component vector of double) 0:1606 Sequence 0:1606 move second child to first child ( temp float) 0:1606 'var282' ( temp float) 0:1606 Pre-Increment ( temp float) 0:1606 'var4' ( temp float) 0:1607 Sequence 0:1607 move second child to first child ( temp double) 0:1607 'var283' ( temp double) 0:1607 Pre-Increment ( temp double) 0:1607 'var5' ( temp double) 0:1609 Sequence 0:1609 move second child to first child ( temp 2-component vector of float) 0:1609 'var284' ( temp 2-component vector of float) 0:1609 Pre-Increment ( temp 2-component vector of float) 0:1609 'var10' ( temp 2-component vector of float) 0:1610 Sequence 0:1610 move second child to first child ( temp 2-component vector of double) 0:1610 'var285' ( temp 2-component vector of double) 0:1610 Pre-Increment ( temp 2-component vector of double) 0:1610 'var11' ( temp 2-component vector of double) 0:1612 Sequence 0:1612 move second child to first child ( temp 3-component vector of float) 0:1612 'var286' ( temp 3-component vector of float) 0:1612 Pre-Increment ( temp 3-component vector of float) 0:1612 'var16' ( temp 3-component vector of float) 0:1613 Sequence 0:1613 move second child to first child ( temp 3-component vector of double) 0:1613 'var287' ( temp 3-component vector of double) 0:1613 Pre-Increment ( temp 3-component vector of double) 0:1613 'var17' ( temp 3-component vector of double) 0:1615 Sequence 0:1615 move second child to first child ( temp 4-component vector of float) 0:1615 'var288' ( temp 4-component vector of float) 0:1615 Pre-Increment ( temp 4-component vector of float) 0:1615 'var22' ( temp 4-component vector of float) 0:1616 Sequence 0:1616 move second child to first child ( temp 4-component vector of double) 0:1616 'var289' ( temp 4-component vector of double) 0:1616 Pre-Increment ( temp 4-component vector of double) 0:1616 'var23' ( temp 4-component vector of double) 0:1618 Sequence 0:1618 move second child to first child ( temp uint) 0:1618 'var290' ( temp uint) 0:1618 Pre-Decrement ( temp uint) 0:1618 'var1' ( temp uint) 0:1619 Sequence 0:1619 move second child to first child ( temp int64_t) 0:1619 'var291' ( temp int64_t) 0:1619 Pre-Decrement ( temp int64_t) 0:1619 'var2' ( temp int64_t) 0:1620 Sequence 0:1620 move second child to first child ( temp uint64_t) 0:1620 'var292' ( temp uint64_t) 0:1620 Pre-Decrement ( temp uint64_t) 0:1620 'var3' ( temp uint64_t) 0:1621 Sequence 0:1621 move second child to first child ( temp float) 0:1621 'var293' ( temp float) 0:1621 Pre-Decrement ( temp float) 0:1621 'var4' ( temp float) 0:1622 Sequence 0:1622 move second child to first child ( temp double) 0:1622 'var294' ( temp double) 0:1622 Pre-Decrement ( temp double) 0:1622 'var5' ( temp double) 0:1624 Sequence 0:1624 move second child to first child ( temp 2-component vector of uint) 0:1624 'var295' ( temp 2-component vector of uint) 0:1624 Pre-Decrement ( temp 2-component vector of uint) 0:1624 'var7' ( temp 2-component vector of uint) 0:1625 Sequence 0:1625 move second child to first child ( temp 2-component vector of int64_t) 0:1625 'var296' ( temp 2-component vector of int64_t) 0:1625 Pre-Decrement ( temp 2-component vector of int64_t) 0:1625 'var8' ( temp 2-component vector of int64_t) 0:1626 Sequence 0:1626 move second child to first child ( temp 2-component vector of uint64_t) 0:1626 'var297' ( temp 2-component vector of uint64_t) 0:1626 Pre-Decrement ( temp 2-component vector of uint64_t) 0:1626 'var9' ( temp 2-component vector of uint64_t) 0:1627 Sequence 0:1627 move second child to first child ( temp 2-component vector of float) 0:1627 'var298' ( temp 2-component vector of float) 0:1627 Pre-Decrement ( temp 2-component vector of float) 0:1627 'var10' ( temp 2-component vector of float) 0:1628 Sequence 0:1628 move second child to first child ( temp 2-component vector of double) 0:1628 'var299' ( temp 2-component vector of double) 0:1628 Pre-Decrement ( temp 2-component vector of double) 0:1628 'var11' ( temp 2-component vector of double) 0:1630 Sequence 0:1630 move second child to first child ( temp 3-component vector of uint) 0:1630 'var300' ( temp 3-component vector of uint) 0:1630 Pre-Decrement ( temp 3-component vector of uint) 0:1630 'var13' ( temp 3-component vector of uint) 0:1631 Sequence 0:1631 move second child to first child ( temp 3-component vector of int64_t) 0:1631 'var301' ( temp 3-component vector of int64_t) 0:1631 Pre-Decrement ( temp 3-component vector of int64_t) 0:1631 'var14' ( temp 3-component vector of int64_t) 0:1632 Sequence 0:1632 move second child to first child ( temp 3-component vector of uint64_t) 0:1632 'var302' ( temp 3-component vector of uint64_t) 0:1632 Pre-Decrement ( temp 3-component vector of uint64_t) 0:1632 'var15' ( temp 3-component vector of uint64_t) 0:1633 Sequence 0:1633 move second child to first child ( temp 3-component vector of float) 0:1633 'var303' ( temp 3-component vector of float) 0:1633 Pre-Decrement ( temp 3-component vector of float) 0:1633 'var16' ( temp 3-component vector of float) 0:1634 Sequence 0:1634 move second child to first child ( temp 3-component vector of double) 0:1634 'var304' ( temp 3-component vector of double) 0:1634 Pre-Decrement ( temp 3-component vector of double) 0:1634 'var17' ( temp 3-component vector of double) 0:1636 Sequence 0:1636 move second child to first child ( temp 4-component vector of uint) 0:1636 'var305' ( temp 4-component vector of uint) 0:1636 Pre-Decrement ( temp 4-component vector of uint) 0:1636 'var19' ( temp 4-component vector of uint) 0:1637 Sequence 0:1637 move second child to first child ( temp 4-component vector of int64_t) 0:1637 'var306' ( temp 4-component vector of int64_t) 0:1637 Pre-Decrement ( temp 4-component vector of int64_t) 0:1637 'var20' ( temp 4-component vector of int64_t) 0:1638 Sequence 0:1638 move second child to first child ( temp 4-component vector of uint64_t) 0:1638 'var307' ( temp 4-component vector of uint64_t) 0:1638 Pre-Decrement ( temp 4-component vector of uint64_t) 0:1638 'var21' ( temp 4-component vector of uint64_t) 0:1639 Sequence 0:1639 move second child to first child ( temp 4-component vector of float) 0:1639 'var308' ( temp 4-component vector of float) 0:1639 Pre-Decrement ( temp 4-component vector of float) 0:1639 'var22' ( temp 4-component vector of float) 0:1640 Sequence 0:1640 move second child to first child ( temp 4-component vector of double) 0:1640 'var309' ( temp 4-component vector of double) 0:1640 Pre-Decrement ( temp 4-component vector of double) 0:1640 'var23' ( temp 4-component vector of double) 0:1642 Sequence 0:1642 move second child to first child ( temp int) 0:1642 'var310' ( temp int) 0:1642 Pre-Decrement ( temp int) 0:1642 'var0' ( temp int) 0:1643 Sequence 0:1643 move second child to first child ( temp int64_t) 0:1643 'var311' ( temp int64_t) 0:1643 Pre-Decrement ( temp int64_t) 0:1643 'var2' ( temp int64_t) 0:1644 Sequence 0:1644 move second child to first child ( temp uint) 0:1644 'var312' ( temp uint) 0:1644 Pre-Decrement ( temp uint) 0:1644 'var1' ( temp uint) 0:1645 Sequence 0:1645 move second child to first child ( temp uint64_t) 0:1645 'var313' ( temp uint64_t) 0:1645 Pre-Decrement ( temp uint64_t) 0:1645 'var3' ( temp uint64_t) 0:1646 Sequence 0:1646 move second child to first child ( temp float) 0:1646 'var314' ( temp float) 0:1646 Pre-Decrement ( temp float) 0:1646 'var4' ( temp float) 0:1647 Sequence 0:1647 move second child to first child ( temp double) 0:1647 'var315' ( temp double) 0:1647 Pre-Decrement ( temp double) 0:1647 'var5' ( temp double) 0:1649 Sequence 0:1649 move second child to first child ( temp int) 0:1649 'var316' ( temp int) 0:1649 Pre-Decrement ( temp int) 0:1649 'var0' ( temp int) 0:1650 Sequence 0:1650 move second child to first child ( temp int64_t) 0:1650 'var317' ( temp int64_t) 0:1650 Pre-Decrement ( temp int64_t) 0:1650 'var2' ( temp int64_t) 0:1651 Sequence 0:1651 move second child to first child ( temp uint) 0:1651 'var318' ( temp uint) 0:1651 Pre-Decrement ( temp uint) 0:1651 'var1' ( temp uint) 0:1652 Sequence 0:1652 move second child to first child ( temp uint64_t) 0:1652 'var319' ( temp uint64_t) 0:1652 Pre-Decrement ( temp uint64_t) 0:1652 'var3' ( temp uint64_t) 0:1653 Sequence 0:1653 move second child to first child ( temp float) 0:1653 'var320' ( temp float) 0:1653 Pre-Decrement ( temp float) 0:1653 'var4' ( temp float) 0:1654 Sequence 0:1654 move second child to first child ( temp double) 0:1654 'var321' ( temp double) 0:1654 Pre-Decrement ( temp double) 0:1654 'var5' ( temp double) 0:1656 Sequence 0:1656 move second child to first child ( temp 2-component vector of int) 0:1656 'var322' ( temp 2-component vector of int) 0:1656 Pre-Decrement ( temp 2-component vector of int) 0:1656 'var6' ( temp 2-component vector of int) 0:1657 Sequence 0:1657 move second child to first child ( temp 2-component vector of int64_t) 0:1657 'var323' ( temp 2-component vector of int64_t) 0:1657 Pre-Decrement ( temp 2-component vector of int64_t) 0:1657 'var8' ( temp 2-component vector of int64_t) 0:1658 Sequence 0:1658 move second child to first child ( temp 2-component vector of uint) 0:1658 'var324' ( temp 2-component vector of uint) 0:1658 Pre-Decrement ( temp 2-component vector of uint) 0:1658 'var7' ( temp 2-component vector of uint) 0:1659 Sequence 0:1659 move second child to first child ( temp 2-component vector of uint64_t) 0:1659 'var325' ( temp 2-component vector of uint64_t) 0:1659 Pre-Decrement ( temp 2-component vector of uint64_t) 0:1659 'var9' ( temp 2-component vector of uint64_t) 0:1660 Sequence 0:1660 move second child to first child ( temp 2-component vector of float) 0:1660 'var326' ( temp 2-component vector of float) 0:1660 Pre-Decrement ( temp 2-component vector of float) 0:1660 'var10' ( temp 2-component vector of float) 0:1661 Sequence 0:1661 move second child to first child ( temp 2-component vector of double) 0:1661 'var327' ( temp 2-component vector of double) 0:1661 Pre-Decrement ( temp 2-component vector of double) 0:1661 'var11' ( temp 2-component vector of double) 0:1663 Sequence 0:1663 move second child to first child ( temp 2-component vector of int) 0:1663 'var328' ( temp 2-component vector of int) 0:1663 Pre-Decrement ( temp 2-component vector of int) 0:1663 'var6' ( temp 2-component vector of int) 0:1664 Sequence 0:1664 move second child to first child ( temp 2-component vector of int64_t) 0:1664 'var329' ( temp 2-component vector of int64_t) 0:1664 Pre-Decrement ( temp 2-component vector of int64_t) 0:1664 'var8' ( temp 2-component vector of int64_t) 0:1665 Sequence 0:1665 move second child to first child ( temp 2-component vector of uint) 0:1665 'var330' ( temp 2-component vector of uint) 0:1665 Pre-Decrement ( temp 2-component vector of uint) 0:1665 'var7' ( temp 2-component vector of uint) 0:1666 Sequence 0:1666 move second child to first child ( temp 2-component vector of uint64_t) 0:1666 'var331' ( temp 2-component vector of uint64_t) 0:1666 Pre-Decrement ( temp 2-component vector of uint64_t) 0:1666 'var9' ( temp 2-component vector of uint64_t) 0:1667 Sequence 0:1667 move second child to first child ( temp 2-component vector of float) 0:1667 'var332' ( temp 2-component vector of float) 0:1667 Pre-Decrement ( temp 2-component vector of float) 0:1667 'var10' ( temp 2-component vector of float) 0:1668 Sequence 0:1668 move second child to first child ( temp 2-component vector of double) 0:1668 'var333' ( temp 2-component vector of double) 0:1668 Pre-Decrement ( temp 2-component vector of double) 0:1668 'var11' ( temp 2-component vector of double) 0:1670 Sequence 0:1670 move second child to first child ( temp 3-component vector of int) 0:1670 'var334' ( temp 3-component vector of int) 0:1670 Pre-Decrement ( temp 3-component vector of int) 0:1670 'var12' ( temp 3-component vector of int) 0:1671 Sequence 0:1671 move second child to first child ( temp 3-component vector of int64_t) 0:1671 'var335' ( temp 3-component vector of int64_t) 0:1671 Pre-Decrement ( temp 3-component vector of int64_t) 0:1671 'var14' ( temp 3-component vector of int64_t) 0:1672 Sequence 0:1672 move second child to first child ( temp 3-component vector of uint) 0:1672 'var336' ( temp 3-component vector of uint) 0:1672 Pre-Decrement ( temp 3-component vector of uint) 0:1672 'var13' ( temp 3-component vector of uint) 0:1673 Sequence 0:1673 move second child to first child ( temp 3-component vector of uint64_t) 0:1673 'var337' ( temp 3-component vector of uint64_t) 0:1673 Pre-Decrement ( temp 3-component vector of uint64_t) 0:1673 'var15' ( temp 3-component vector of uint64_t) 0:1674 Sequence 0:1674 move second child to first child ( temp 3-component vector of float) 0:1674 'var338' ( temp 3-component vector of float) 0:1674 Pre-Decrement ( temp 3-component vector of float) 0:1674 'var16' ( temp 3-component vector of float) 0:1675 Sequence 0:1675 move second child to first child ( temp 3-component vector of double) 0:1675 'var339' ( temp 3-component vector of double) 0:1675 Pre-Decrement ( temp 3-component vector of double) 0:1675 'var17' ( temp 3-component vector of double) 0:1677 Sequence 0:1677 move second child to first child ( temp 3-component vector of uint) 0:1677 'var340' ( temp 3-component vector of uint) 0:1677 Pre-Decrement ( temp 3-component vector of uint) 0:1677 'var13' ( temp 3-component vector of uint) 0:1678 Sequence 0:1678 move second child to first child ( temp 3-component vector of uint64_t) 0:1678 'var341' ( temp 3-component vector of uint64_t) 0:1678 Pre-Decrement ( temp 3-component vector of uint64_t) 0:1678 'var15' ( temp 3-component vector of uint64_t) 0:1679 Sequence 0:1679 move second child to first child ( temp 3-component vector of float) 0:1679 'var342' ( temp 3-component vector of float) 0:1679 Pre-Decrement ( temp 3-component vector of float) 0:1679 'var16' ( temp 3-component vector of float) 0:1680 Sequence 0:1680 move second child to first child ( temp 3-component vector of double) 0:1680 'var343' ( temp 3-component vector of double) 0:1680 Pre-Decrement ( temp 3-component vector of double) 0:1680 'var17' ( temp 3-component vector of double) 0:1682 Sequence 0:1682 move second child to first child ( temp 4-component vector of int) 0:1682 'var344' ( temp 4-component vector of int) 0:1682 Pre-Decrement ( temp 4-component vector of int) 0:1682 'var18' ( temp 4-component vector of int) 0:1683 Sequence 0:1683 move second child to first child ( temp 4-component vector of int64_t) 0:1683 'var345' ( temp 4-component vector of int64_t) 0:1683 Pre-Decrement ( temp 4-component vector of int64_t) 0:1683 'var20' ( temp 4-component vector of int64_t) 0:1684 Sequence 0:1684 move second child to first child ( temp 4-component vector of uint) 0:1684 'var346' ( temp 4-component vector of uint) 0:1684 Pre-Decrement ( temp 4-component vector of uint) 0:1684 'var19' ( temp 4-component vector of uint) 0:1685 Sequence 0:1685 move second child to first child ( temp 4-component vector of uint64_t) 0:1685 'var347' ( temp 4-component vector of uint64_t) 0:1685 Pre-Decrement ( temp 4-component vector of uint64_t) 0:1685 'var21' ( temp 4-component vector of uint64_t) 0:1686 Sequence 0:1686 move second child to first child ( temp 4-component vector of float) 0:1686 'var348' ( temp 4-component vector of float) 0:1686 Pre-Decrement ( temp 4-component vector of float) 0:1686 'var22' ( temp 4-component vector of float) 0:1687 Sequence 0:1687 move second child to first child ( temp 4-component vector of double) 0:1687 'var349' ( temp 4-component vector of double) 0:1687 Pre-Decrement ( temp 4-component vector of double) 0:1687 'var23' ( temp 4-component vector of double) 0:1689 Sequence 0:1689 move second child to first child ( temp 4-component vector of uint) 0:1689 'var350' ( temp 4-component vector of uint) 0:1689 Pre-Decrement ( temp 4-component vector of uint) 0:1689 'var19' ( temp 4-component vector of uint) 0:1690 Sequence 0:1690 move second child to first child ( temp 4-component vector of uint64_t) 0:1690 'var351' ( temp 4-component vector of uint64_t) 0:1690 Pre-Decrement ( temp 4-component vector of uint64_t) 0:1690 'var21' ( temp 4-component vector of uint64_t) 0:1691 Sequence 0:1691 move second child to first child ( temp 4-component vector of float) 0:1691 'var352' ( temp 4-component vector of float) 0:1691 Pre-Decrement ( temp 4-component vector of float) 0:1691 'var22' ( temp 4-component vector of float) 0:1692 Sequence 0:1692 move second child to first child ( temp 4-component vector of double) 0:1692 'var353' ( temp 4-component vector of double) 0:1692 Pre-Decrement ( temp 4-component vector of double) 0:1692 'var23' ( temp 4-component vector of double) 0:1694 Sequence 0:1694 move second child to first child ( temp uint64_t) 0:1694 'var354' ( temp uint64_t) 0:1694 Pre-Decrement ( temp uint64_t) 0:1694 'var3' ( temp uint64_t) 0:1695 Sequence 0:1695 move second child to first child ( temp double) 0:1695 'var355' ( temp double) 0:1695 Pre-Decrement ( temp double) 0:1695 'var5' ( temp double) 0:1697 Sequence 0:1697 move second child to first child ( temp 2-component vector of uint64_t) 0:1697 'var356' ( temp 2-component vector of uint64_t) 0:1697 Pre-Decrement ( temp 2-component vector of uint64_t) 0:1697 'var9' ( temp 2-component vector of uint64_t) 0:1698 Sequence 0:1698 move second child to first child ( temp 2-component vector of double) 0:1698 'var357' ( temp 2-component vector of double) 0:1698 Pre-Decrement ( temp 2-component vector of double) 0:1698 'var11' ( temp 2-component vector of double) 0:1700 Sequence 0:1700 move second child to first child ( temp 3-component vector of uint64_t) 0:1700 'var358' ( temp 3-component vector of uint64_t) 0:1700 Pre-Decrement ( temp 3-component vector of uint64_t) 0:1700 'var15' ( temp 3-component vector of uint64_t) 0:1701 Sequence 0:1701 move second child to first child ( temp 3-component vector of double) 0:1701 'var359' ( temp 3-component vector of double) 0:1701 Pre-Decrement ( temp 3-component vector of double) 0:1701 'var17' ( temp 3-component vector of double) 0:1703 Sequence 0:1703 move second child to first child ( temp 4-component vector of uint64_t) 0:1703 'var360' ( temp 4-component vector of uint64_t) 0:1703 Pre-Decrement ( temp 4-component vector of uint64_t) 0:1703 'var21' ( temp 4-component vector of uint64_t) 0:1704 Sequence 0:1704 move second child to first child ( temp 4-component vector of double) 0:1704 'var361' ( temp 4-component vector of double) 0:1704 Pre-Decrement ( temp 4-component vector of double) 0:1704 'var23' ( temp 4-component vector of double) 0:1706 Sequence 0:1706 move second child to first child ( temp uint64_t) 0:1706 'var362' ( temp uint64_t) 0:1706 Pre-Decrement ( temp uint64_t) 0:1706 'var3' ( temp uint64_t) 0:1707 Sequence 0:1707 move second child to first child ( temp float) 0:1707 'var363' ( temp float) 0:1707 Pre-Decrement ( temp float) 0:1707 'var4' ( temp float) 0:1708 Sequence 0:1708 move second child to first child ( temp double) 0:1708 'var364' ( temp double) 0:1708 Pre-Decrement ( temp double) 0:1708 'var5' ( temp double) 0:1710 Sequence 0:1710 move second child to first child ( temp 2-component vector of uint64_t) 0:1710 'var365' ( temp 2-component vector of uint64_t) 0:1710 Pre-Decrement ( temp 2-component vector of uint64_t) 0:1710 'var9' ( temp 2-component vector of uint64_t) 0:1711 Sequence 0:1711 move second child to first child ( temp 2-component vector of float) 0:1711 'var366' ( temp 2-component vector of float) 0:1711 Pre-Decrement ( temp 2-component vector of float) 0:1711 'var10' ( temp 2-component vector of float) 0:1712 Sequence 0:1712 move second child to first child ( temp 2-component vector of double) 0:1712 'var367' ( temp 2-component vector of double) 0:1712 Pre-Decrement ( temp 2-component vector of double) 0:1712 'var11' ( temp 2-component vector of double) 0:1714 Sequence 0:1714 move second child to first child ( temp 3-component vector of uint64_t) 0:1714 'var368' ( temp 3-component vector of uint64_t) 0:1714 Pre-Decrement ( temp 3-component vector of uint64_t) 0:1714 'var15' ( temp 3-component vector of uint64_t) 0:1715 Sequence 0:1715 move second child to first child ( temp 3-component vector of float) 0:1715 'var369' ( temp 3-component vector of float) 0:1715 Pre-Decrement ( temp 3-component vector of float) 0:1715 'var16' ( temp 3-component vector of float) 0:1716 Sequence 0:1716 move second child to first child ( temp 3-component vector of double) 0:1716 'var370' ( temp 3-component vector of double) 0:1716 Pre-Decrement ( temp 3-component vector of double) 0:1716 'var17' ( temp 3-component vector of double) 0:1718 Sequence 0:1718 move second child to first child ( temp 4-component vector of uint64_t) 0:1718 'var371' ( temp 4-component vector of uint64_t) 0:1718 Pre-Decrement ( temp 4-component vector of uint64_t) 0:1718 'var21' ( temp 4-component vector of uint64_t) 0:1719 Sequence 0:1719 move second child to first child ( temp 4-component vector of float) 0:1719 'var372' ( temp 4-component vector of float) 0:1719 Pre-Decrement ( temp 4-component vector of float) 0:1719 'var22' ( temp 4-component vector of float) 0:1720 Sequence 0:1720 move second child to first child ( temp 4-component vector of double) 0:1720 'var373' ( temp 4-component vector of double) 0:1720 Pre-Decrement ( temp 4-component vector of double) 0:1720 'var23' ( temp 4-component vector of double) 0:1722 Sequence 0:1722 move second child to first child ( temp uint) 0:1722 'var374' ( temp uint) 0:1722 Pre-Decrement ( temp uint) 0:1722 'var1' ( temp uint) 0:1723 Sequence 0:1723 move second child to first child ( temp uint64_t) 0:1723 'var375' ( temp uint64_t) 0:1723 Pre-Decrement ( temp uint64_t) 0:1723 'var3' ( temp uint64_t) 0:1724 Sequence 0:1724 move second child to first child ( temp float) 0:1724 'var376' ( temp float) 0:1724 Pre-Decrement ( temp float) 0:1724 'var4' ( temp float) 0:1725 Sequence 0:1725 move second child to first child ( temp double) 0:1725 'var377' ( temp double) 0:1725 Pre-Decrement ( temp double) 0:1725 'var5' ( temp double) 0:1727 Sequence 0:1727 move second child to first child ( temp uint) 0:1727 'var378' ( temp uint) 0:1727 Pre-Decrement ( temp uint) 0:1727 'var1' ( temp uint) 0:1728 Sequence 0:1728 move second child to first child ( temp uint64_t) 0:1728 'var379' ( temp uint64_t) 0:1728 Pre-Decrement ( temp uint64_t) 0:1728 'var3' ( temp uint64_t) 0:1729 Sequence 0:1729 move second child to first child ( temp float) 0:1729 'var380' ( temp float) 0:1729 Pre-Decrement ( temp float) 0:1729 'var4' ( temp float) 0:1730 Sequence 0:1730 move second child to first child ( temp double) 0:1730 'var381' ( temp double) 0:1730 Pre-Decrement ( temp double) 0:1730 'var5' ( temp double) 0:1732 Sequence 0:1732 move second child to first child ( temp 2-component vector of uint) 0:1732 'var382' ( temp 2-component vector of uint) 0:1732 Pre-Decrement ( temp 2-component vector of uint) 0:1732 'var7' ( temp 2-component vector of uint) 0:1733 Sequence 0:1733 move second child to first child ( temp 2-component vector of uint64_t) 0:1733 'var383' ( temp 2-component vector of uint64_t) 0:1733 Pre-Decrement ( temp 2-component vector of uint64_t) 0:1733 'var9' ( temp 2-component vector of uint64_t) 0:1734 Sequence 0:1734 move second child to first child ( temp 2-component vector of float) 0:1734 'var384' ( temp 2-component vector of float) 0:1734 Pre-Decrement ( temp 2-component vector of float) 0:1734 'var10' ( temp 2-component vector of float) 0:1735 Sequence 0:1735 move second child to first child ( temp 2-component vector of double) 0:1735 'var385' ( temp 2-component vector of double) 0:1735 Pre-Decrement ( temp 2-component vector of double) 0:1735 'var11' ( temp 2-component vector of double) 0:1737 Sequence 0:1737 move second child to first child ( temp 2-component vector of uint) 0:1737 'var386' ( temp 2-component vector of uint) 0:1737 Pre-Decrement ( temp 2-component vector of uint) 0:1737 'var7' ( temp 2-component vector of uint) 0:1738 Sequence 0:1738 move second child to first child ( temp 2-component vector of uint64_t) 0:1738 'var387' ( temp 2-component vector of uint64_t) 0:1738 Pre-Decrement ( temp 2-component vector of uint64_t) 0:1738 'var9' ( temp 2-component vector of uint64_t) 0:1739 Sequence 0:1739 move second child to first child ( temp 2-component vector of float) 0:1739 'var388' ( temp 2-component vector of float) 0:1739 Pre-Decrement ( temp 2-component vector of float) 0:1739 'var10' ( temp 2-component vector of float) 0:1740 Sequence 0:1740 move second child to first child ( temp 2-component vector of double) 0:1740 'var389' ( temp 2-component vector of double) 0:1740 Pre-Decrement ( temp 2-component vector of double) 0:1740 'var11' ( temp 2-component vector of double) 0:1742 Sequence 0:1742 move second child to first child ( temp 3-component vector of uint) 0:1742 'var390' ( temp 3-component vector of uint) 0:1742 Pre-Decrement ( temp 3-component vector of uint) 0:1742 'var13' ( temp 3-component vector of uint) 0:1743 Sequence 0:1743 move second child to first child ( temp 3-component vector of uint64_t) 0:1743 'var391' ( temp 3-component vector of uint64_t) 0:1743 Pre-Decrement ( temp 3-component vector of uint64_t) 0:1743 'var15' ( temp 3-component vector of uint64_t) 0:1744 Sequence 0:1744 move second child to first child ( temp 3-component vector of float) 0:1744 'var392' ( temp 3-component vector of float) 0:1744 Pre-Decrement ( temp 3-component vector of float) 0:1744 'var16' ( temp 3-component vector of float) 0:1745 Sequence 0:1745 move second child to first child ( temp 3-component vector of double) 0:1745 'var393' ( temp 3-component vector of double) 0:1745 Pre-Decrement ( temp 3-component vector of double) 0:1745 'var17' ( temp 3-component vector of double) 0:1747 Sequence 0:1747 move second child to first child ( temp 4-component vector of uint) 0:1747 'var394' ( temp 4-component vector of uint) 0:1747 Pre-Decrement ( temp 4-component vector of uint) 0:1747 'var19' ( temp 4-component vector of uint) 0:1748 Sequence 0:1748 move second child to first child ( temp 4-component vector of uint64_t) 0:1748 'var395' ( temp 4-component vector of uint64_t) 0:1748 Pre-Decrement ( temp 4-component vector of uint64_t) 0:1748 'var21' ( temp 4-component vector of uint64_t) 0:1749 Sequence 0:1749 move second child to first child ( temp 4-component vector of float) 0:1749 'var396' ( temp 4-component vector of float) 0:1749 Pre-Decrement ( temp 4-component vector of float) 0:1749 'var22' ( temp 4-component vector of float) 0:1750 Sequence 0:1750 move second child to first child ( temp 4-component vector of double) 0:1750 'var397' ( temp 4-component vector of double) 0:1750 Pre-Decrement ( temp 4-component vector of double) 0:1750 'var23' ( temp 4-component vector of double) 0:1752 Sequence 0:1752 move second child to first child ( temp double) 0:1752 'var398' ( temp double) 0:1752 Pre-Decrement ( temp double) 0:1752 'var5' ( temp double) 0:1754 Sequence 0:1754 move second child to first child ( temp 2-component vector of double) 0:1754 'var399' ( temp 2-component vector of double) 0:1754 Pre-Decrement ( temp 2-component vector of double) 0:1754 'var11' ( temp 2-component vector of double) 0:1756 Sequence 0:1756 move second child to first child ( temp 3-component vector of double) 0:1756 'var400' ( temp 3-component vector of double) 0:1756 Pre-Decrement ( temp 3-component vector of double) 0:1756 'var17' ( temp 3-component vector of double) 0:1758 Sequence 0:1758 move second child to first child ( temp 4-component vector of double) 0:1758 'var401' ( temp 4-component vector of double) 0:1758 Pre-Decrement ( temp 4-component vector of double) 0:1758 'var23' ( temp 4-component vector of double) 0:1760 Sequence 0:1760 move second child to first child ( temp double) 0:1760 'var402' ( temp double) 0:1760 Pre-Decrement ( temp double) 0:1760 'var5' ( temp double) 0:1762 Sequence 0:1762 move second child to first child ( temp 2-component vector of double) 0:1762 'var403' ( temp 2-component vector of double) 0:1762 Pre-Decrement ( temp 2-component vector of double) 0:1762 'var11' ( temp 2-component vector of double) 0:1764 Sequence 0:1764 move second child to first child ( temp 3-component vector of double) 0:1764 'var404' ( temp 3-component vector of double) 0:1764 Pre-Decrement ( temp 3-component vector of double) 0:1764 'var17' ( temp 3-component vector of double) 0:1766 Sequence 0:1766 move second child to first child ( temp 4-component vector of double) 0:1766 'var405' ( temp 4-component vector of double) 0:1766 Pre-Decrement ( temp 4-component vector of double) 0:1766 'var23' ( temp 4-component vector of double) 0:1768 Sequence 0:1768 move second child to first child ( temp float) 0:1768 'var406' ( temp float) 0:1768 Pre-Decrement ( temp float) 0:1768 'var4' ( temp float) 0:1769 Sequence 0:1769 move second child to first child ( temp double) 0:1769 'var407' ( temp double) 0:1769 Pre-Decrement ( temp double) 0:1769 'var5' ( temp double) 0:1771 Sequence 0:1771 move second child to first child ( temp 2-component vector of float) 0:1771 'var408' ( temp 2-component vector of float) 0:1771 Pre-Decrement ( temp 2-component vector of float) 0:1771 'var10' ( temp 2-component vector of float) 0:1772 Sequence 0:1772 move second child to first child ( temp 2-component vector of double) 0:1772 'var409' ( temp 2-component vector of double) 0:1772 Pre-Decrement ( temp 2-component vector of double) 0:1772 'var11' ( temp 2-component vector of double) 0:1774 Sequence 0:1774 move second child to first child ( temp 3-component vector of float) 0:1774 'var410' ( temp 3-component vector of float) 0:1774 Pre-Decrement ( temp 3-component vector of float) 0:1774 'var16' ( temp 3-component vector of float) 0:1775 Sequence 0:1775 move second child to first child ( temp 3-component vector of double) 0:1775 'var411' ( temp 3-component vector of double) 0:1775 Pre-Decrement ( temp 3-component vector of double) 0:1775 'var17' ( temp 3-component vector of double) 0:1777 Sequence 0:1777 move second child to first child ( temp 4-component vector of float) 0:1777 'var412' ( temp 4-component vector of float) 0:1777 Pre-Decrement ( temp 4-component vector of float) 0:1777 'var22' ( temp 4-component vector of float) 0:1778 Sequence 0:1778 move second child to first child ( temp 4-component vector of double) 0:1778 'var413' ( temp 4-component vector of double) 0:1778 Pre-Decrement ( temp 4-component vector of double) 0:1778 'var23' ( temp 4-component vector of double) 0:1781 Function Definition: testConditionExpressions( ( global void) 0:1781 Function Parameters: 0:1782 Sequence 0:1782 Sequence 0:1782 move second child to first child ( temp int8_t) 0:1782 'var1' ( temp int8_t) 0:1782 Constant: 0:1782 0 (const int8_t) 0:1783 Sequence 0:1783 move second child to first child ( temp int16_t) 0:1783 'var5' ( temp int16_t) 0:1783 Constant: 0:1783 0 (const int16_t) 0:1784 Sequence 0:1784 move second child to first child ( temp int) 0:1784 'var9' ( temp int) 0:1784 Constant: 0:1784 0 (const int) 0:1785 Sequence 0:1785 move second child to first child ( temp int64_t) 0:1785 'var13' ( temp int64_t) 0:1785 Constant: 0:1785 0 (const int64_t) 0:1786 Sequence 0:1786 move second child to first child ( temp float16_t) 0:1786 'var33' ( temp float16_t) 0:1786 Constant: 0:1786 0.000000 0:1787 Sequence 0:1787 move second child to first child ( temp double) 0:1787 'var41' ( temp double) 0:1787 Constant: 0:1787 0.000000 0:1788 Sequence 0:1788 move second child to first child ( temp double) 0:1788 'var42' ( temp double) 0:1788 Constant: 0:1788 0.000000 0:1790 Sequence 0:1790 move second child to first child ( temp bool) 0:1790 'b' ( temp bool) 0:1790 Compare Equal ( temp bool) 0:1790 'var1' ( temp int8_t) 0:1790 Constant: 0:1790 0 (const int8_t) 0:1791 move second child to first child ( temp bool) 0:1791 'b' ( temp bool) 0:1791 Compare Equal ( temp bool) 0:1791 'var5' ( temp int16_t) 0:1791 Constant: 0:1791 0 (const int16_t) 0:1792 move second child to first child ( temp bool) 0:1792 'b' ( temp bool) 0:1792 Compare Equal ( temp bool) 0:1792 'var9' ( temp int) 0:1792 Constant: 0:1792 0 (const int) 0:1793 move second child to first child ( temp bool) 0:1793 'b' ( temp bool) 0:1793 Compare Equal ( temp bool) 0:1793 'var13' ( temp int64_t) 0:1793 Constant: 0:1793 0 (const int64_t) 0:1794 move second child to first child ( temp bool) 0:1794 'b' ( temp bool) 0:1794 Compare Equal ( temp bool) 0:1794 'var33' ( temp float16_t) 0:1794 Constant: 0:1794 0.000000 0:1795 move second child to first child ( temp bool) 0:1795 'b' ( temp bool) 0:1795 Compare Equal ( temp bool) 0:1795 'var41' ( temp double) 0:1795 Constant: 0:1795 0.000000 0:1796 move second child to first child ( temp bool) 0:1796 'b' ( temp bool) 0:1796 Compare Equal ( temp bool) 0:1796 'var42' ( temp double) 0:1796 Constant: 0:1796 0.000000 0:1798 move second child to first child ( temp bool) 0:1798 'b' ( temp bool) 0:1798 Compare Not Equal ( temp bool) 0:1798 'var5' ( temp int16_t) 0:1798 Constant: 0:1798 0 (const int16_t) 0:1799 move second child to first child ( temp bool) 0:1799 'b' ( temp bool) 0:1799 Compare Not Equal ( temp bool) 0:1799 'var9' ( temp int) 0:1799 Constant: 0:1799 0 (const int) 0:1800 move second child to first child ( temp bool) 0:1800 'b' ( temp bool) 0:1800 Compare Not Equal ( temp bool) 0:1800 'var13' ( temp int64_t) 0:1800 Constant: 0:1800 0 (const int64_t) 0:1801 move second child to first child ( temp bool) 0:1801 'b' ( temp bool) 0:1801 Compare Not Equal ( temp bool) 0:1801 'var33' ( temp float16_t) 0:1801 Constant: 0:1801 0.000000 0:1802 move second child to first child ( temp bool) 0:1802 'b' ( temp bool) 0:1802 Compare Not Equal ( temp bool) 0:1802 'var41' ( temp double) 0:1802 Constant: 0:1802 0.000000 0:1803 move second child to first child ( temp bool) 0:1803 'b' ( temp bool) 0:1803 Compare Not Equal ( temp bool) 0:1803 'var42' ( temp double) 0:1803 Constant: 0:1803 0.000000 0:1805 move second child to first child ( temp bool) 0:1805 'b' ( temp bool) 0:1805 Compare Greater Than ( temp bool) 0:1805 'var5' ( temp int16_t) 0:1805 Constant: 0:1805 0 (const int16_t) 0:1806 move second child to first child ( temp bool) 0:1806 'b' ( temp bool) 0:1806 Compare Greater Than ( temp bool) 0:1806 'var9' ( temp int) 0:1806 Constant: 0:1806 0 (const int) 0:1807 move second child to first child ( temp bool) 0:1807 'b' ( temp bool) 0:1807 Compare Greater Than ( temp bool) 0:1807 'var13' ( temp int64_t) 0:1807 Constant: 0:1807 0 (const int64_t) 0:1808 move second child to first child ( temp bool) 0:1808 'b' ( temp bool) 0:1808 Compare Greater Than ( temp bool) 0:1808 'var33' ( temp float16_t) 0:1808 Constant: 0:1808 0.000000 0:1809 move second child to first child ( temp bool) 0:1809 'b' ( temp bool) 0:1809 Compare Greater Than ( temp bool) 0:1809 'var41' ( temp double) 0:1809 Constant: 0:1809 0.000000 0:1810 move second child to first child ( temp bool) 0:1810 'b' ( temp bool) 0:1810 Compare Greater Than ( temp bool) 0:1810 'var42' ( temp double) 0:1810 Constant: 0:1810 0.000000 0:1818 Function Definition: func(i641; ( global void) 0:1818 Function Parameters: 0:1818 'a' ( in int64_t) 0:1822 Function Definition: func(i1; ( global void) 0:1822 Function Parameters: 0:1822 'a' ( in int) 0:1827 Function Definition: func(u1; ( global void) 0:1827 Function Parameters: 0:1827 'a' ( in uint) 0:1832 Function Definition: func(u641; ( global void) 0:1832 Function Parameters: 0:1832 'a' ( in uint64_t) 0:1837 Function Definition: func(f1; ( global void) 0:1837 Function Parameters: 0:1837 'a' ( in float) 0:1841 Function Definition: func64(d1; ( global void) 0:1841 Function Parameters: 0:1841 'a' ( in double) 0:1845 Function Definition: func64(i641; ( global void) 0:1845 Function Parameters: 0:1845 'a' ( in int64_t) 0:1850 Function Definition: func64(u641; ( global void) 0:1850 Function Parameters: 0:1850 'a' ( in uint64_t) 0:1855 Function Definition: testFunctionDefinition( ( global void) 0:1855 Function Parameters: 0:1857 Sequence 0:1857 Sequence 0:1857 move second child to first child ( temp int8_t) 0:1857 'var1' ( temp int8_t) 0:1857 Constant: 0:1857 0 (const int8_t) 0:1858 Sequence 0:1858 move second child to first child ( temp int16_t) 0:1858 'var5' ( temp int16_t) 0:1858 Constant: 0:1858 0 (const int16_t) 0:1859 Sequence 0:1859 move second child to first child ( temp uint8_t) 0:1859 'var2' ( temp uint8_t) 0:1859 Constant: 0:1859 0 (const uint8_t) 0:1860 Sequence 0:1860 move second child to first child ( temp uint16_t) 0:1860 'var3' ( temp uint16_t) 0:1860 Constant: 0:1860 0 (const uint16_t) 0:1861 Sequence 0:1861 move second child to first child ( temp int) 0:1861 'var9' ( temp int) 0:1861 Constant: 0:1861 0 (const int) 0:1862 Sequence 0:1862 move second child to first child ( temp int) 0:1862 'var10' ( temp int) 0:1862 Constant: 0:1862 0 (const int) 0:1863 Sequence 0:1863 move second child to first child ( temp uint) 0:1863 'var11' ( temp uint) 0:1863 Constant: 0:1863 0 (const uint) 0:1864 Sequence 0:1864 move second child to first child ( temp int64_t) 0:1864 'var13' ( temp int64_t) 0:1864 Constant: 0:1864 0 (const int64_t) 0:1865 Sequence 0:1865 move second child to first child ( temp float16_t) 0:1865 'var33' ( temp float16_t) 0:1865 Constant: 0:1865 0.000000 0:1866 Sequence 0:1866 move second child to first child ( temp float) 0:1866 'var34' ( temp float) 0:1866 Constant: 0:1866 0.000000 0:1878 Function Call: func(i1; ( global void) 0:1878 Convert int8_t to int ( temp int) 0:1878 'var1' ( temp int8_t) 0:1879 Function Call: func(i1; ( global void) 0:1879 Convert int16_t to int ( temp int) 0:1879 'var5' ( temp int16_t) 0:1880 Function Call: func(i1; ( global void) 0:1880 'var10' ( temp int) 0:1882 Function Call: func(u1; ( global void) 0:1882 Convert uint8_t to uint ( temp uint) 0:1882 'var2' ( temp uint8_t) 0:1883 Function Call: func(u1; ( global void) 0:1883 Convert uint16_t to uint ( temp uint) 0:1883 'var3' ( temp uint16_t) 0:1885 Function Call: func(f1; ( global void) 0:1885 Convert float16_t to float ( temp float) 0:1885 'var33' ( temp float16_t) 0:1887 Function Call: func64(i641; ( global void) 0:1887 Convert int8_t to int64_t ( temp int64_t) 0:1887 'var1' ( temp int8_t) 0:1888 Function Call: func64(i641; ( global void) 0:1888 Convert int16_t to int64_t ( temp int64_t) 0:1888 'var5' ( temp int16_t) 0:1889 Function Call: func64(i641; ( global void) 0:1889 Convert int to int64_t ( temp int64_t) 0:1889 'var9' ( temp int) 0:1891 Function Call: func64(u641; ( global void) 0:1891 Convert uint8_t to uint64_t ( temp uint64_t) 0:1891 'var2' ( temp uint8_t) 0:1892 Function Call: func64(u641; ( global void) 0:1892 Convert uint16_t to uint64_t ( temp uint64_t) 0:1892 'var3' ( temp uint16_t) 0:1893 Function Call: func64(u641; ( global void) 0:1893 Convert uint to uint64_t ( temp uint64_t) 0:1893 'var11' ( temp uint) 0:1894 Function Call: func64(d1; ( global void) 0:1894 Convert float to double ( temp double) 0:1894 'var34' ( temp float) 0:1901 Function Definition: testBuiltinNVOnly( ( global void) 0:1901 Function Parameters: 0:1904 Sequence 0:1904 Sequence 0:1904 move second child to first child ( temp int64_t) 0:1904 'v1' ( temp int64_t) 0:1904 packInt2x32 ( global int64_t) 0:1904 Constant: 0:1904 0 (const int) 0:1904 0 (const int) 0:1905 Sequence 0:1905 move second child to first child ( temp uint64_t) 0:1905 'v2' ( temp uint64_t) 0:1905 packUint2x32 ( global uint64_t) 0:1905 Constant: 0:1905 0 (const uint) 0:1905 0 (const uint) 0:1907 Sequence 0:1907 move second child to first child ( temp 2-component vector of int) 0:1907 'v3' ( temp 2-component vector of int) 0:1907 unpackInt2x32 ( global 2-component vector of int) 0:1907 Constant: 0:1907 0 (const int64_t) 0:1908 Sequence 0:1908 move second child to first child ( temp 2-component vector of uint) 0:1908 'v4' ( temp 2-component vector of uint) 0:1908 unpackUint2x32 ( global 2-component vector of uint) 0:1908 Constant: 0:1908 0 (const uint64_t) 0:1909 Sequence 0:1909 move second child to first child ( temp uint) 0:1909 'v5' ( temp uint) 0:1909 packFloat2x16 ( global uint) 0:1909 Constant: 0:1909 0.000000 0:1909 0.000000 0:1910 Sequence 0:1910 move second child to first child ( temp 2-component vector of float16_t) 0:1910 'v6' ( temp 2-component vector of float16_t) 0:1910 unpackFloat2x16 ( global 2-component vector of float16_t) 0:1910 Constant: 0:1910 0 (const uint) 0:1911 Sequence 0:1911 move second child to first child ( temp int64_t) 0:1911 'v7' ( temp int64_t) 0:1911 doubleBitsToInt64 ( global int64_t) 0:1911 Constant: 0:1911 0.000000 0:1912 Sequence 0:1912 move second child to first child ( temp 2-component vector of int64_t) 0:1912 'v8' ( temp 2-component vector of int64_t) 0:1912 doubleBitsToInt64 ( global 2-component vector of int64_t) 0:1912 Constant: 0:1912 0.000000 0:1912 0.000000 0:1913 Sequence 0:1913 move second child to first child ( temp 3-component vector of int64_t) 0:1913 'v9' ( temp 3-component vector of int64_t) 0:1913 doubleBitsToInt64 ( global 3-component vector of int64_t) 0:1913 Constant: 0:1913 0.000000 0:1913 0.000000 0:1913 0.000000 0:1914 Sequence 0:1914 move second child to first child ( temp 4-component vector of int64_t) 0:1914 'v10' ( temp 4-component vector of int64_t) 0:1914 doubleBitsToInt64 ( global 4-component vector of int64_t) 0:1914 Constant: 0:1914 0.000000 0:1914 0.000000 0:1914 0.000000 0:1914 0.000000 0:1916 Sequence 0:1916 move second child to first child ( temp uint64_t) 0:1916 'v11' ( temp uint64_t) 0:1916 doubleBitsToUint64 ( global uint64_t) 0:1916 Constant: 0:1916 0.000000 0:1917 Sequence 0:1917 move second child to first child ( temp 2-component vector of uint64_t) 0:1917 'v12' ( temp 2-component vector of uint64_t) 0:1917 doubleBitsToUint64 ( global 2-component vector of uint64_t) 0:1917 Constant: 0:1917 0.000000 0:1917 0.000000 0:1918 Sequence 0:1918 move second child to first child ( temp 3-component vector of uint64_t) 0:1918 'v13' ( temp 3-component vector of uint64_t) 0:1918 doubleBitsToUint64 ( global 3-component vector of uint64_t) 0:1918 Constant: 0:1918 0.000000 0:1918 0.000000 0:1918 0.000000 0:1919 Sequence 0:1919 move second child to first child ( temp 4-component vector of uint64_t) 0:1919 'v14' ( temp 4-component vector of uint64_t) 0:1919 doubleBitsToUint64 ( global 4-component vector of uint64_t) 0:1919 Constant: 0:1919 0.000000 0:1919 0.000000 0:1919 0.000000 0:1919 0.000000 0:1921 Sequence 0:1921 move second child to first child ( temp double) 0:1921 'v15' ( temp double) 0:1921 int64BitsToDouble ( global double) 0:1921 Constant: 0:1921 0 (const int64_t) 0:1922 Sequence 0:1922 move second child to first child ( temp 2-component vector of double) 0:1922 'v16' ( temp 2-component vector of double) 0:1922 int64BitsToDouble ( global 2-component vector of double) 0:1922 Constant: 0:1922 0 (const int64_t) 0:1922 0 (const int64_t) 0:1923 Sequence 0:1923 move second child to first child ( temp 3-component vector of double) 0:1923 'v17' ( temp 3-component vector of double) 0:1923 int64BitsToDouble ( global 3-component vector of double) 0:1923 Constant: 0:1923 0 (const int64_t) 0:1923 0 (const int64_t) 0:1923 0 (const int64_t) 0:1924 Sequence 0:1924 move second child to first child ( temp 4-component vector of double) 0:1924 'v18' ( temp 4-component vector of double) 0:1924 int64BitsToDouble ( global 4-component vector of double) 0:1924 Constant: 0:1924 0 (const int64_t) 0:1924 0 (const int64_t) 0:1924 0 (const int64_t) 0:1924 0 (const int64_t) 0:1926 Sequence 0:1926 move second child to first child ( temp double) 0:1926 'v19' ( temp double) 0:1926 uint64BitsToDouble ( global double) 0:1926 Constant: 0:1926 0 (const uint64_t) 0:1927 Sequence 0:1927 move second child to first child ( temp 2-component vector of double) 0:1927 'v20' ( temp 2-component vector of double) 0:1927 uint64BitsToDouble ( global 2-component vector of double) 0:1927 Constant: 0:1927 0 (const uint64_t) 0:1927 0 (const uint64_t) 0:1928 Sequence 0:1928 move second child to first child ( temp 3-component vector of double) 0:1928 'v21' ( temp 3-component vector of double) 0:1928 uint64BitsToDouble ( global 3-component vector of double) 0:1928 Constant: 0:1928 0 (const uint64_t) 0:1928 0 (const uint64_t) 0:1928 0 (const uint64_t) 0:1929 Sequence 0:1929 move second child to first child ( temp 4-component vector of double) 0:1929 'v22' ( temp 4-component vector of double) 0:1929 uint64BitsToDouble ( global 4-component vector of double) 0:1929 Constant: 0:1929 0 (const uint64_t) 0:1929 0 (const uint64_t) 0:1929 0 (const uint64_t) 0:1929 0 (const uint64_t) 0:1931 Sequence 0:1931 move second child to first child ( temp bool) 0:1931 'b1' ( temp bool) 0:1931 anyInvocation ( global bool) 0:1931 Compare Equal ( temp bool) 0:1931 'var' ( flat in int) 0:1931 Constant: 0:1931 1 (const int) 0:1932 Sequence 0:1932 move second child to first child ( temp bool) 0:1932 'b2' ( temp bool) 0:1932 allInvocations ( global bool) 0:1932 Compare Equal ( temp bool) 0:1932 'var' ( flat in int) 0:1932 Constant: 0:1932 1 (const int) 0:1933 Sequence 0:1933 move second child to first child ( temp bool) 0:1933 'b3' ( temp bool) 0:1933 allInvocationsEqual ( global bool) 0:1933 Compare Equal ( temp bool) 0:1933 'var' ( flat in int) 0:1933 Constant: 0:1933 1 (const int) 0:1941 Function Definition: testVectorRelationBuiltins( ( global void) 0:1941 Function Parameters: 0:1945 Sequence 0:1945 Sequence 0:1945 move second child to first child ( temp 2-component vector of bool) 0:1945 'b1' ( temp 2-component vector of bool) 0:1945 Constant: 0:1945 true (const bool) 0:1945 true (const bool) 0:1946 Sequence 0:1946 move second child to first child ( temp 3-component vector of bool) 0:1946 'b2' ( temp 3-component vector of bool) 0:1946 Constant: 0:1946 true (const bool) 0:1946 true (const bool) 0:1946 true (const bool) 0:1947 Sequence 0:1947 move second child to first child ( temp 4-component vector of bool) 0:1947 'b3' ( temp 4-component vector of bool) 0:1947 Constant: 0:1947 true (const bool) 0:1947 true (const bool) 0:1947 true (const bool) 0:1947 true (const bool) 0:1948 Sequence 0:1948 move second child to first child ( temp 2-component vector of bool) 0:1948 'b4' ( temp 2-component vector of bool) 0:1948 Constant: 0:1948 true (const bool) 0:1948 true (const bool) 0:1949 Sequence 0:1949 move second child to first child ( temp 3-component vector of bool) 0:1949 'b5' ( temp 3-component vector of bool) 0:1949 Constant: 0:1949 true (const bool) 0:1949 true (const bool) 0:1949 true (const bool) 0:1950 Sequence 0:1950 move second child to first child ( temp 4-component vector of bool) 0:1950 'b6' ( temp 4-component vector of bool) 0:1950 Constant: 0:1950 true (const bool) 0:1950 true (const bool) 0:1950 true (const bool) 0:1950 true (const bool) 0:1952 Sequence 0:1952 move second child to first child ( temp 2-component vector of bool) 0:1952 'b7' ( temp 2-component vector of bool) 0:1952 Constant: 0:1952 true (const bool) 0:1952 true (const bool) 0:1953 Sequence 0:1953 move second child to first child ( temp 3-component vector of bool) 0:1953 'b8' ( temp 3-component vector of bool) 0:1953 Constant: 0:1953 true (const bool) 0:1953 true (const bool) 0:1953 true (const bool) 0:1954 Sequence 0:1954 move second child to first child ( temp 4-component vector of bool) 0:1954 'b9' ( temp 4-component vector of bool) 0:1954 Constant: 0:1954 true (const bool) 0:1954 true (const bool) 0:1954 true (const bool) 0:1954 true (const bool) 0:1955 Sequence 0:1955 move second child to first child ( temp 2-component vector of bool) 0:1955 'b10' ( temp 2-component vector of bool) 0:1955 Constant: 0:1955 true (const bool) 0:1955 true (const bool) 0:1956 Sequence 0:1956 move second child to first child ( temp 3-component vector of bool) 0:1956 'b11' ( temp 3-component vector of bool) 0:1956 Constant: 0:1956 true (const bool) 0:1956 true (const bool) 0:1956 true (const bool) 0:1957 Sequence 0:1957 move second child to first child ( temp 4-component vector of bool) 0:1957 'b12' ( temp 4-component vector of bool) 0:1957 Constant: 0:1957 true (const bool) 0:1957 true (const bool) 0:1957 true (const bool) 0:1957 true (const bool) 0:1959 Sequence 0:1959 move second child to first child ( temp 2-component vector of bool) 0:1959 'b13' ( temp 2-component vector of bool) 0:1959 Constant: 0:1959 false (const bool) 0:1959 false (const bool) 0:1960 Sequence 0:1960 move second child to first child ( temp 3-component vector of bool) 0:1960 'b14' ( temp 3-component vector of bool) 0:1960 Constant: 0:1960 false (const bool) 0:1960 false (const bool) 0:1960 false (const bool) 0:1961 Sequence 0:1961 move second child to first child ( temp 4-component vector of bool) 0:1961 'b15' ( temp 4-component vector of bool) 0:1961 Constant: 0:1961 false (const bool) 0:1961 false (const bool) 0:1961 false (const bool) 0:1961 false (const bool) 0:1962 Sequence 0:1962 move second child to first child ( temp 2-component vector of bool) 0:1962 'b16' ( temp 2-component vector of bool) 0:1962 Constant: 0:1962 false (const bool) 0:1962 false (const bool) 0:1963 Sequence 0:1963 move second child to first child ( temp 3-component vector of bool) 0:1963 'b17' ( temp 3-component vector of bool) 0:1963 Constant: 0:1963 false (const bool) 0:1963 false (const bool) 0:1963 false (const bool) 0:1964 Sequence 0:1964 move second child to first child ( temp 4-component vector of bool) 0:1964 'b18' ( temp 4-component vector of bool) 0:1964 Constant: 0:1964 false (const bool) 0:1964 false (const bool) 0:1964 false (const bool) 0:1964 false (const bool) 0:1966 Sequence 0:1966 move second child to first child ( temp 2-component vector of bool) 0:1966 'b19' ( temp 2-component vector of bool) 0:1966 Constant: 0:1966 false (const bool) 0:1966 false (const bool) 0:1967 Sequence 0:1967 move second child to first child ( temp 3-component vector of bool) 0:1967 'b20' ( temp 3-component vector of bool) 0:1967 Constant: 0:1967 false (const bool) 0:1967 false (const bool) 0:1967 false (const bool) 0:1968 Sequence 0:1968 move second child to first child ( temp 4-component vector of bool) 0:1968 'b21' ( temp 4-component vector of bool) 0:1968 Constant: 0:1968 false (const bool) 0:1968 false (const bool) 0:1968 false (const bool) 0:1968 false (const bool) 0:1969 Sequence 0:1969 move second child to first child ( temp 2-component vector of bool) 0:1969 'b22' ( temp 2-component vector of bool) 0:1969 Constant: 0:1969 false (const bool) 0:1969 false (const bool) 0:1970 Sequence 0:1970 move second child to first child ( temp 3-component vector of bool) 0:1970 'b23' ( temp 3-component vector of bool) 0:1970 Constant: 0:1970 false (const bool) 0:1970 false (const bool) 0:1970 false (const bool) 0:1971 Sequence 0:1971 move second child to first child ( temp 4-component vector of bool) 0:1971 'b24' ( temp 4-component vector of bool) 0:1971 Constant: 0:1971 false (const bool) 0:1971 false (const bool) 0:1971 false (const bool) 0:1971 false (const bool) 0:1973 Sequence 0:1973 move second child to first child ( temp 2-component vector of bool) 0:1973 'b25' ( temp 2-component vector of bool) 0:1973 Constant: 0:1973 false (const bool) 0:1973 false (const bool) 0:1974 Sequence 0:1974 move second child to first child ( temp 3-component vector of bool) 0:1974 'b26' ( temp 3-component vector of bool) 0:1974 Constant: 0:1974 false (const bool) 0:1974 false (const bool) 0:1974 false (const bool) 0:1975 Sequence 0:1975 move second child to first child ( temp 4-component vector of bool) 0:1975 'b27' ( temp 4-component vector of bool) 0:1975 Constant: 0:1975 false (const bool) 0:1975 false (const bool) 0:1975 false (const bool) 0:1975 false (const bool) 0:1976 Sequence 0:1976 move second child to first child ( temp 2-component vector of bool) 0:1976 'b28' ( temp 2-component vector of bool) 0:1976 Constant: 0:1976 false (const bool) 0:1976 false (const bool) 0:1977 Sequence 0:1977 move second child to first child ( temp 3-component vector of bool) 0:1977 'b29' ( temp 3-component vector of bool) 0:1977 Constant: 0:1977 false (const bool) 0:1977 false (const bool) 0:1977 false (const bool) 0:1978 Sequence 0:1978 move second child to first child ( temp 4-component vector of bool) 0:1978 'b30' ( temp 4-component vector of bool) 0:1978 Constant: 0:1978 false (const bool) 0:1978 false (const bool) 0:1978 false (const bool) 0:1978 false (const bool) 0:1980 Sequence 0:1980 move second child to first child ( temp 2-component vector of bool) 0:1980 'b31' ( temp 2-component vector of bool) 0:1980 Constant: 0:1980 true (const bool) 0:1980 true (const bool) 0:1981 Sequence 0:1981 move second child to first child ( temp 3-component vector of bool) 0:1981 'b32' ( temp 3-component vector of bool) 0:1981 Constant: 0:1981 true (const bool) 0:1981 true (const bool) 0:1981 true (const bool) 0:1982 Sequence 0:1982 move second child to first child ( temp 4-component vector of bool) 0:1982 'b33' ( temp 4-component vector of bool) 0:1982 Constant: 0:1982 true (const bool) 0:1982 true (const bool) 0:1982 true (const bool) 0:1982 true (const bool) 0:1983 Sequence 0:1983 move second child to first child ( temp 2-component vector of bool) 0:1983 'b34' ( temp 2-component vector of bool) 0:1983 Constant: 0:1983 true (const bool) 0:1983 true (const bool) 0:1984 Sequence 0:1984 move second child to first child ( temp 3-component vector of bool) 0:1984 'b35' ( temp 3-component vector of bool) 0:1984 Constant: 0:1984 true (const bool) 0:1984 true (const bool) 0:1984 true (const bool) 0:1985 Sequence 0:1985 move second child to first child ( temp 4-component vector of bool) 0:1985 'b36' ( temp 4-component vector of bool) 0:1985 Constant: 0:1985 true (const bool) 0:1985 true (const bool) 0:1985 true (const bool) 0:1985 true (const bool) 0:1987 Sequence 0:1987 move second child to first child ( temp 2-component vector of bool) 0:1987 'b37' ( temp 2-component vector of bool) 0:1987 Constant: 0:1987 true (const bool) 0:1987 true (const bool) 0:1988 Sequence 0:1988 move second child to first child ( temp 3-component vector of bool) 0:1988 'b38' ( temp 3-component vector of bool) 0:1988 Constant: 0:1988 true (const bool) 0:1988 true (const bool) 0:1988 true (const bool) 0:1989 Sequence 0:1989 move second child to first child ( temp 4-component vector of bool) 0:1989 'b39' ( temp 4-component vector of bool) 0:1989 Constant: 0:1989 true (const bool) 0:1989 true (const bool) 0:1989 true (const bool) 0:1989 true (const bool) 0:1991 Sequence 0:1991 move second child to first child ( temp 2-component vector of bool) 0:1991 'b40' ( temp 2-component vector of bool) 0:1991 Constant: 0:1991 true (const bool) 0:1991 true (const bool) 0:1992 Sequence 0:1992 move second child to first child ( temp 3-component vector of bool) 0:1992 'b41' ( temp 3-component vector of bool) 0:1992 Constant: 0:1992 true (const bool) 0:1992 true (const bool) 0:1992 true (const bool) 0:1993 Sequence 0:1993 move second child to first child ( temp 4-component vector of bool) 0:1993 'b42' ( temp 4-component vector of bool) 0:1993 Constant: 0:1993 true (const bool) 0:1993 true (const bool) 0:1993 true (const bool) 0:1993 true (const bool) 0:1995 Sequence 0:1995 move second child to first child ( temp 2-component vector of bool) 0:1995 'b43' ( temp 2-component vector of bool) 0:1995 Constant: 0:1995 false (const bool) 0:1995 false (const bool) 0:1996 Sequence 0:1996 move second child to first child ( temp 3-component vector of bool) 0:1996 'b44' ( temp 3-component vector of bool) 0:1996 Constant: 0:1996 false (const bool) 0:1996 false (const bool) 0:1996 false (const bool) 0:1997 Sequence 0:1997 move second child to first child ( temp 4-component vector of bool) 0:1997 'b45' ( temp 4-component vector of bool) 0:1997 Constant: 0:1997 false (const bool) 0:1997 false (const bool) 0:1997 false (const bool) 0:1997 false (const bool) 0:1999 Sequence 0:1999 move second child to first child ( temp 2-component vector of bool) 0:1999 'b46' ( temp 2-component vector of bool) 0:1999 Constant: 0:1999 false (const bool) 0:1999 false (const bool) 0:2000 Sequence 0:2000 move second child to first child ( temp 3-component vector of bool) 0:2000 'b47' ( temp 3-component vector of bool) 0:2000 Constant: 0:2000 false (const bool) 0:2000 false (const bool) 0:2000 false (const bool) 0:2001 Sequence 0:2001 move second child to first child ( temp 4-component vector of bool) 0:2001 'b48' ( temp 4-component vector of bool) 0:2001 Constant: 0:2001 false (const bool) 0:2001 false (const bool) 0:2001 false (const bool) 0:2001 false (const bool) 0:2003 Sequence 0:2003 move second child to first child ( temp 2-component vector of bool) 0:2003 'b49' ( temp 2-component vector of bool) 0:2003 Constant: 0:2003 false (const bool) 0:2003 false (const bool) 0:2004 Sequence 0:2004 move second child to first child ( temp 3-component vector of bool) 0:2004 'b50' ( temp 3-component vector of bool) 0:2004 Constant: 0:2004 false (const bool) 0:2004 false (const bool) 0:2004 false (const bool) 0:2005 Sequence 0:2005 move second child to first child ( temp 4-component vector of bool) 0:2005 'b51' ( temp 4-component vector of bool) 0:2005 Constant: 0:2005 false (const bool) 0:2005 false (const bool) 0:2005 false (const bool) 0:2005 false (const bool) 0:2007 Sequence 0:2007 move second child to first child ( temp 2-component vector of bool) 0:2007 'b52' ( temp 2-component vector of bool) 0:2007 Constant: 0:2007 true (const bool) 0:2007 true (const bool) 0:2008 Sequence 0:2008 move second child to first child ( temp 3-component vector of bool) 0:2008 'b53' ( temp 3-component vector of bool) 0:2008 Constant: 0:2008 true (const bool) 0:2008 true (const bool) 0:2008 true (const bool) 0:2009 Sequence 0:2009 move second child to first child ( temp 4-component vector of bool) 0:2009 'b54' ( temp 4-component vector of bool) 0:2009 Constant: 0:2009 true (const bool) 0:2009 true (const bool) 0:2009 true (const bool) 0:2009 true (const bool) 0:2012 Sequence 0:2012 move second child to first child ( temp 2-component vector of bool) 0:2012 'b55' ( temp 2-component vector of bool) 0:2012 Constant: 0:2012 true (const bool) 0:2012 true (const bool) 0:2013 Sequence 0:2013 move second child to first child ( temp 3-component vector of bool) 0:2013 'b56' ( temp 3-component vector of bool) 0:2013 Constant: 0:2013 true (const bool) 0:2013 true (const bool) 0:2013 true (const bool) 0:2014 Sequence 0:2014 move second child to first child ( temp 4-component vector of bool) 0:2014 'b57' ( temp 4-component vector of bool) 0:2014 Constant: 0:2014 true (const bool) 0:2014 true (const bool) 0:2014 true (const bool) 0:2014 true (const bool) 0:2016 Sequence 0:2016 move second child to first child ( temp 2-component vector of bool) 0:2016 'b58' ( temp 2-component vector of bool) 0:2016 Constant: 0:2016 true (const bool) 0:2016 true (const bool) 0:2017 Sequence 0:2017 move second child to first child ( temp 3-component vector of bool) 0:2017 'b59' ( temp 3-component vector of bool) 0:2017 Constant: 0:2017 true (const bool) 0:2017 true (const bool) 0:2017 true (const bool) 0:2018 Sequence 0:2018 move second child to first child ( temp 4-component vector of bool) 0:2018 'b60' ( temp 4-component vector of bool) 0:2018 Constant: 0:2018 true (const bool) 0:2018 true (const bool) 0:2018 true (const bool) 0:2018 true (const bool) 0:2020 Sequence 0:2020 move second child to first child ( temp 2-component vector of bool) 0:2020 'b61' ( temp 2-component vector of bool) 0:2020 Constant: 0:2020 false (const bool) 0:2020 false (const bool) 0:2021 Sequence 0:2021 move second child to first child ( temp 3-component vector of bool) 0:2021 'b62' ( temp 3-component vector of bool) 0:2021 Constant: 0:2021 false (const bool) 0:2021 false (const bool) 0:2021 false (const bool) 0:2022 Sequence 0:2022 move second child to first child ( temp 4-component vector of bool) 0:2022 'b63' ( temp 4-component vector of bool) 0:2022 Constant: 0:2022 false (const bool) 0:2022 false (const bool) 0:2022 false (const bool) 0:2022 false (const bool) 0:2024 Sequence 0:2024 move second child to first child ( temp 2-component vector of bool) 0:2024 'b64' ( temp 2-component vector of bool) 0:2024 Constant: 0:2024 false (const bool) 0:2024 false (const bool) 0:2025 Sequence 0:2025 move second child to first child ( temp 3-component vector of bool) 0:2025 'b65' ( temp 3-component vector of bool) 0:2025 Constant: 0:2025 false (const bool) 0:2025 false (const bool) 0:2025 false (const bool) 0:2026 Sequence 0:2026 move second child to first child ( temp 4-component vector of bool) 0:2026 'b66' ( temp 4-component vector of bool) 0:2026 Constant: 0:2026 false (const bool) 0:2026 false (const bool) 0:2026 false (const bool) 0:2026 false (const bool) 0:2028 Sequence 0:2028 move second child to first child ( temp 2-component vector of bool) 0:2028 'b67' ( temp 2-component vector of bool) 0:2028 Constant: 0:2028 false (const bool) 0:2028 false (const bool) 0:2029 Sequence 0:2029 move second child to first child ( temp 3-component vector of bool) 0:2029 'b68' ( temp 3-component vector of bool) 0:2029 Constant: 0:2029 false (const bool) 0:2029 false (const bool) 0:2029 false (const bool) 0:2030 Sequence 0:2030 move second child to first child ( temp 4-component vector of bool) 0:2030 'b69' ( temp 4-component vector of bool) 0:2030 Constant: 0:2030 false (const bool) 0:2030 false (const bool) 0:2030 false (const bool) 0:2030 false (const bool) 0:2032 Sequence 0:2032 move second child to first child ( temp 2-component vector of bool) 0:2032 'b70' ( temp 2-component vector of bool) 0:2032 Constant: 0:2032 true (const bool) 0:2032 true (const bool) 0:2033 Sequence 0:2033 move second child to first child ( temp 3-component vector of bool) 0:2033 'b71' ( temp 3-component vector of bool) 0:2033 Constant: 0:2033 true (const bool) 0:2033 true (const bool) 0:2033 true (const bool) 0:2034 Sequence 0:2034 move second child to first child ( temp 4-component vector of bool) 0:2034 'b72' ( temp 4-component vector of bool) 0:2034 Constant: 0:2034 true (const bool) 0:2034 true (const bool) 0:2034 true (const bool) 0:2034 true (const bool) 0:2081 Function Definition: main( ( global void) 0:2081 Function Parameters: 0:2082 Sequence 0:2082 Sequence 0:2082 move second child to first child ( temp 4-component vector of float) 0:2082 'tvar31' ( temp 4-component vector of float) 0:2082 textureOffset ( global 4-component vector of float) 0:2082 'tvar22' ( uniform sampler1D) 0:2082 'tvar32' ( smooth in float) 0:2082 'tvar33' ( flat in int) 0:2082 'tvar32' ( smooth in float) 0:2083 Sequence 0:2083 move second child to first child ( temp 4-component vector of int) 0:2083 'tvar34' ( temp 4-component vector of int) 0:2083 textureOffset ( global 4-component vector of int) 0:2083 'tvar24' ( uniform isampler1D) 0:2083 'tvar32' ( smooth in float) 0:2083 'tvar33' ( flat in int) 0:2083 'tvar32' ( smooth in float) 0:2084 Sequence 0:2084 move second child to first child ( temp 4-component vector of uint) 0:2084 'tvar35' ( temp 4-component vector of uint) 0:2084 textureOffset ( global 4-component vector of uint) 0:2084 'tvar23' ( uniform usampler1D) 0:2084 'tvar32' ( smooth in float) 0:2084 'tvar33' ( flat in int) 0:2084 'tvar32' ( smooth in float) 0:2085 Sequence 0:2085 move second child to first child ( temp 4-component vector of float) 0:2085 'tvar36' ( temp 4-component vector of float) 0:2085 textureOffset ( global 4-component vector of float) 0:2085 'tvar11' ( uniform sampler2D) 0:2085 'tvar37' ( smooth in 2-component vector of float) 0:2085 'tvar38' ( flat in 2-component vector of int) 0:2085 'tvar32' ( smooth in float) 0:2086 Sequence 0:2086 move second child to first child ( temp 4-component vector of int) 0:2086 'tvar39' ( temp 4-component vector of int) 0:2086 textureOffset ( global 4-component vector of int) 0:2086 'tvar12' ( uniform isampler2D) 0:2086 'tvar37' ( smooth in 2-component vector of float) 0:2086 'tvar38' ( flat in 2-component vector of int) 0:2086 'tvar32' ( smooth in float) 0:2087 Sequence 0:2087 move second child to first child ( temp 4-component vector of uint) 0:2087 'tvar40' ( temp 4-component vector of uint) 0:2087 textureOffset ( global 4-component vector of uint) 0:2087 'tvar10' ( uniform usampler2D) 0:2087 'tvar37' ( smooth in 2-component vector of float) 0:2087 'tvar38' ( flat in 2-component vector of int) 0:2087 'tvar32' ( smooth in float) 0:2088 Sequence 0:2088 move second child to first child ( temp 4-component vector of float) 0:2088 'tvar41' ( temp 4-component vector of float) 0:2088 textureOffset ( global 4-component vector of float) 0:2088 'tvar20' ( uniform sampler3D) 0:2088 'tvar42' ( smooth in 3-component vector of float) 0:2088 'tvar43' ( flat in 3-component vector of int) 0:2088 'tvar32' ( smooth in float) 0:2089 Sequence 0:2089 move second child to first child ( temp 4-component vector of int) 0:2089 'tvar44' ( temp 4-component vector of int) 0:2089 textureOffset ( global 4-component vector of int) 0:2089 'tvar21' ( uniform isampler3D) 0:2089 'tvar42' ( smooth in 3-component vector of float) 0:2089 'tvar43' ( flat in 3-component vector of int) 0:2089 'tvar32' ( smooth in float) 0:2090 Sequence 0:2090 move second child to first child ( temp 4-component vector of uint) 0:2090 'tvar45' ( temp 4-component vector of uint) 0:2090 textureOffset ( global 4-component vector of uint) 0:2090 'tvar19' ( uniform usampler3D) 0:2090 'tvar42' ( smooth in 3-component vector of float) 0:2090 'tvar43' ( flat in 3-component vector of int) 0:2090 'tvar32' ( smooth in float) 0:2091 Sequence 0:2091 move second child to first child ( temp 4-component vector of float) 0:2091 'tvar46' ( temp 4-component vector of float) 0:2091 textureOffset ( global 4-component vector of float) 0:2091 'tvar14' ( uniform sampler2DRect) 0:2091 'tvar37' ( smooth in 2-component vector of float) 0:2091 'tvar38' ( flat in 2-component vector of int) 0:2092 Sequence 0:2092 move second child to first child ( temp 4-component vector of int) 0:2092 'tvar47' ( temp 4-component vector of int) 0:2092 textureOffset ( global 4-component vector of int) 0:2092 'tvar13' ( uniform isampler2DRect) 0:2092 'tvar37' ( smooth in 2-component vector of float) 0:2092 'tvar38' ( flat in 2-component vector of int) 0:2093 Sequence 0:2093 move second child to first child ( temp 4-component vector of uint) 0:2093 'tvar48' ( temp 4-component vector of uint) 0:2093 textureOffset ( global 4-component vector of uint) 0:2093 'tvar15' ( uniform usampler2DRect) 0:2093 'tvar37' ( smooth in 2-component vector of float) 0:2093 'tvar38' ( flat in 2-component vector of int) 0:2094 Sequence 0:2094 move second child to first child ( temp float) 0:2094 'tvar49' ( temp float) 0:2094 textureOffset ( global float) 0:2094 'tvar0' ( uniform sampler2DRectShadow) 0:2094 'tvar42' ( smooth in 3-component vector of float) 0:2094 'tvar38' ( flat in 2-component vector of int) 0:2095 Sequence 0:2095 move second child to first child ( temp float) 0:2095 'tvar50' ( temp float) 0:2095 textureOffset ( global float) 0:2095 'tvar3' ( uniform sampler1DShadow) 0:2095 'tvar42' ( smooth in 3-component vector of float) 0:2095 'tvar33' ( flat in int) 0:2095 'tvar32' ( smooth in float) 0:2096 Sequence 0:2096 move second child to first child ( temp float) 0:2096 'tvar51' ( temp float) 0:2096 textureOffset ( global float) 0:2096 'tvar4' ( uniform sampler2DShadow) 0:2096 'tvar42' ( smooth in 3-component vector of float) 0:2096 'tvar38' ( flat in 2-component vector of int) 0:2096 'tvar32' ( smooth in float) 0:2097 Sequence 0:2097 move second child to first child ( temp 4-component vector of float) 0:2097 'tvar52' ( temp 4-component vector of float) 0:2097 textureOffset ( global 4-component vector of float) 0:2097 'tvar30' ( uniform sampler1DArray) 0:2097 'tvar37' ( smooth in 2-component vector of float) 0:2097 'tvar33' ( flat in int) 0:2097 'tvar32' ( smooth in float) 0:2098 Sequence 0:2098 move second child to first child ( temp 4-component vector of int) 0:2098 'tvar53' ( temp 4-component vector of int) 0:2098 textureOffset ( global 4-component vector of int) 0:2098 'tvar28' ( uniform isampler1DArray) 0:2098 'tvar37' ( smooth in 2-component vector of float) 0:2098 'tvar33' ( flat in int) 0:2098 'tvar32' ( smooth in float) 0:2099 Sequence 0:2099 move second child to first child ( temp 4-component vector of uint) 0:2099 'tvar54' ( temp 4-component vector of uint) 0:2099 textureOffset ( global 4-component vector of uint) 0:2099 'tvar29' ( uniform usampler1DArray) 0:2099 'tvar37' ( smooth in 2-component vector of float) 0:2099 'tvar33' ( flat in int) 0:2099 'tvar32' ( smooth in float) 0:2100 Sequence 0:2100 move second child to first child ( temp 4-component vector of float) 0:2100 'tvar55' ( temp 4-component vector of float) 0:2100 textureOffset ( global 4-component vector of float) 0:2100 'tvar9' ( uniform sampler2DArray) 0:2100 'tvar42' ( smooth in 3-component vector of float) 0:2100 'tvar38' ( flat in 2-component vector of int) 0:2100 'tvar32' ( smooth in float) 0:2101 Sequence 0:2101 move second child to first child ( temp 4-component vector of int) 0:2101 'tvar56' ( temp 4-component vector of int) 0:2101 textureOffset ( global 4-component vector of int) 0:2101 'tvar7' ( uniform isampler2DArray) 0:2101 'tvar42' ( smooth in 3-component vector of float) 0:2101 'tvar38' ( flat in 2-component vector of int) 0:2101 'tvar32' ( smooth in float) 0:2102 Sequence 0:2102 move second child to first child ( temp 4-component vector of uint) 0:2102 'tvar57' ( temp 4-component vector of uint) 0:2102 textureOffset ( global 4-component vector of uint) 0:2102 'tvar8' ( uniform usampler2DArray) 0:2102 'tvar42' ( smooth in 3-component vector of float) 0:2102 'tvar38' ( flat in 2-component vector of int) 0:2102 'tvar32' ( smooth in float) 0:2103 Sequence 0:2103 move second child to first child ( temp float) 0:2103 'tvar58' ( temp float) 0:2103 textureOffset ( global float) 0:2103 'tvar2' ( uniform sampler1DArrayShadow) 0:2103 'tvar42' ( smooth in 3-component vector of float) 0:2103 'tvar33' ( flat in int) 0:2103 'tvar32' ( smooth in float) 0:2104 Sequence 0:2104 move second child to first child ( temp 4-component vector of float) 0:2104 'tvar59' ( temp 4-component vector of float) 0:2104 textureFetchOffset ( global 4-component vector of float) 0:2104 'tvar22' ( uniform sampler1D) 0:2104 'tvar33' ( flat in int) 0:2104 'tvar33' ( flat in int) 0:2104 'tvar33' ( flat in int) 0:2105 Sequence 0:2105 move second child to first child ( temp 4-component vector of int) 0:2105 'tvar60' ( temp 4-component vector of int) 0:2105 textureFetchOffset ( global 4-component vector of int) 0:2105 'tvar24' ( uniform isampler1D) 0:2105 'tvar33' ( flat in int) 0:2105 'tvar33' ( flat in int) 0:2105 'tvar33' ( flat in int) 0:2106 Sequence 0:2106 move second child to first child ( temp 4-component vector of uint) 0:2106 'tvar61' ( temp 4-component vector of uint) 0:2106 textureFetchOffset ( global 4-component vector of uint) 0:2106 'tvar23' ( uniform usampler1D) 0:2106 'tvar33' ( flat in int) 0:2106 'tvar33' ( flat in int) 0:2106 'tvar33' ( flat in int) 0:2107 Sequence 0:2107 move second child to first child ( temp 4-component vector of float) 0:2107 'tvar62' ( temp 4-component vector of float) 0:2107 textureFetchOffset ( global 4-component vector of float) 0:2107 'tvar11' ( uniform sampler2D) 0:2107 'tvar38' ( flat in 2-component vector of int) 0:2107 'tvar33' ( flat in int) 0:2107 'tvar38' ( flat in 2-component vector of int) 0:2108 Sequence 0:2108 move second child to first child ( temp 4-component vector of int) 0:2108 'tvar63' ( temp 4-component vector of int) 0:2108 textureFetchOffset ( global 4-component vector of int) 0:2108 'tvar12' ( uniform isampler2D) 0:2108 'tvar38' ( flat in 2-component vector of int) 0:2108 'tvar33' ( flat in int) 0:2108 'tvar38' ( flat in 2-component vector of int) 0:2109 Sequence 0:2109 move second child to first child ( temp 4-component vector of uint) 0:2109 'tvar64' ( temp 4-component vector of uint) 0:2109 textureFetchOffset ( global 4-component vector of uint) 0:2109 'tvar10' ( uniform usampler2D) 0:2109 'tvar38' ( flat in 2-component vector of int) 0:2109 'tvar33' ( flat in int) 0:2109 'tvar38' ( flat in 2-component vector of int) 0:2110 Sequence 0:2110 move second child to first child ( temp 4-component vector of float) 0:2110 'tvar65' ( temp 4-component vector of float) 0:2110 textureFetchOffset ( global 4-component vector of float) 0:2110 'tvar20' ( uniform sampler3D) 0:2110 'tvar43' ( flat in 3-component vector of int) 0:2110 'tvar33' ( flat in int) 0:2110 'tvar43' ( flat in 3-component vector of int) 0:2111 Sequence 0:2111 move second child to first child ( temp 4-component vector of int) 0:2111 'tvar66' ( temp 4-component vector of int) 0:2111 textureFetchOffset ( global 4-component vector of int) 0:2111 'tvar21' ( uniform isampler3D) 0:2111 'tvar43' ( flat in 3-component vector of int) 0:2111 'tvar33' ( flat in int) 0:2111 'tvar43' ( flat in 3-component vector of int) 0:2112 Sequence 0:2112 move second child to first child ( temp 4-component vector of uint) 0:2112 'tvar67' ( temp 4-component vector of uint) 0:2112 textureFetchOffset ( global 4-component vector of uint) 0:2112 'tvar19' ( uniform usampler3D) 0:2112 'tvar43' ( flat in 3-component vector of int) 0:2112 'tvar33' ( flat in int) 0:2112 'tvar43' ( flat in 3-component vector of int) 0:2113 Sequence 0:2113 move second child to first child ( temp 4-component vector of float) 0:2113 'tvar68' ( temp 4-component vector of float) 0:2113 textureFetchOffset ( global 4-component vector of float) 0:2113 'tvar14' ( uniform sampler2DRect) 0:2113 'tvar38' ( flat in 2-component vector of int) 0:2113 'tvar38' ( flat in 2-component vector of int) 0:2114 Sequence 0:2114 move second child to first child ( temp 4-component vector of int) 0:2114 'tvar69' ( temp 4-component vector of int) 0:2114 textureFetchOffset ( global 4-component vector of int) 0:2114 'tvar13' ( uniform isampler2DRect) 0:2114 'tvar38' ( flat in 2-component vector of int) 0:2114 'tvar38' ( flat in 2-component vector of int) 0:2115 Sequence 0:2115 move second child to first child ( temp 4-component vector of uint) 0:2115 'tvar70' ( temp 4-component vector of uint) 0:2115 textureFetchOffset ( global 4-component vector of uint) 0:2115 'tvar15' ( uniform usampler2DRect) 0:2115 'tvar38' ( flat in 2-component vector of int) 0:2115 'tvar38' ( flat in 2-component vector of int) 0:2116 Sequence 0:2116 move second child to first child ( temp 4-component vector of float) 0:2116 'tvar71' ( temp 4-component vector of float) 0:2116 textureFetchOffset ( global 4-component vector of float) 0:2116 'tvar30' ( uniform sampler1DArray) 0:2116 'tvar38' ( flat in 2-component vector of int) 0:2116 'tvar33' ( flat in int) 0:2116 'tvar33' ( flat in int) 0:2117 Sequence 0:2117 move second child to first child ( temp 4-component vector of int) 0:2117 'tvar72' ( temp 4-component vector of int) 0:2117 textureFetchOffset ( global 4-component vector of int) 0:2117 'tvar28' ( uniform isampler1DArray) 0:2117 'tvar38' ( flat in 2-component vector of int) 0:2117 'tvar33' ( flat in int) 0:2117 'tvar33' ( flat in int) 0:2118 Sequence 0:2118 move second child to first child ( temp 4-component vector of uint) 0:2118 'tvar73' ( temp 4-component vector of uint) 0:2118 textureFetchOffset ( global 4-component vector of uint) 0:2118 'tvar29' ( uniform usampler1DArray) 0:2118 'tvar38' ( flat in 2-component vector of int) 0:2118 'tvar33' ( flat in int) 0:2118 'tvar33' ( flat in int) 0:2119 Sequence 0:2119 move second child to first child ( temp 4-component vector of float) 0:2119 'tvar74' ( temp 4-component vector of float) 0:2119 textureFetchOffset ( global 4-component vector of float) 0:2119 'tvar9' ( uniform sampler2DArray) 0:2119 'tvar43' ( flat in 3-component vector of int) 0:2119 'tvar33' ( flat in int) 0:2119 'tvar38' ( flat in 2-component vector of int) 0:2120 Sequence 0:2120 move second child to first child ( temp 4-component vector of int) 0:2120 'tvar75' ( temp 4-component vector of int) 0:2120 textureFetchOffset ( global 4-component vector of int) 0:2120 'tvar7' ( uniform isampler2DArray) 0:2120 'tvar43' ( flat in 3-component vector of int) 0:2120 'tvar33' ( flat in int) 0:2120 'tvar38' ( flat in 2-component vector of int) 0:2121 Sequence 0:2121 move second child to first child ( temp 4-component vector of uint) 0:2121 'tvar76' ( temp 4-component vector of uint) 0:2121 textureFetchOffset ( global 4-component vector of uint) 0:2121 'tvar8' ( uniform usampler2DArray) 0:2121 'tvar43' ( flat in 3-component vector of int) 0:2121 'tvar33' ( flat in int) 0:2121 'tvar38' ( flat in 2-component vector of int) 0:2122 Sequence 0:2122 move second child to first child ( temp 4-component vector of float) 0:2122 'tvar77' ( temp 4-component vector of float) 0:2122 textureProjOffset ( global 4-component vector of float) 0:2122 'tvar22' ( uniform sampler1D) 0:2122 'tvar37' ( smooth in 2-component vector of float) 0:2122 'tvar33' ( flat in int) 0:2122 'tvar32' ( smooth in float) 0:2123 Sequence 0:2123 move second child to first child ( temp 4-component vector of int) 0:2123 'tvar78' ( temp 4-component vector of int) 0:2123 textureProjOffset ( global 4-component vector of int) 0:2123 'tvar24' ( uniform isampler1D) 0:2123 'tvar37' ( smooth in 2-component vector of float) 0:2123 'tvar33' ( flat in int) 0:2123 'tvar32' ( smooth in float) 0:2124 Sequence 0:2124 move second child to first child ( temp 4-component vector of uint) 0:2124 'tvar79' ( temp 4-component vector of uint) 0:2124 textureProjOffset ( global 4-component vector of uint) 0:2124 'tvar23' ( uniform usampler1D) 0:2124 'tvar37' ( smooth in 2-component vector of float) 0:2124 'tvar33' ( flat in int) 0:2124 'tvar32' ( smooth in float) 0:2125 Sequence 0:2125 move second child to first child ( temp 4-component vector of float) 0:2125 'tvar80' ( temp 4-component vector of float) 0:2125 textureProjOffset ( global 4-component vector of float) 0:2125 'tvar22' ( uniform sampler1D) 0:2125 'tvar81' ( smooth in 4-component vector of float) 0:2125 'tvar33' ( flat in int) 0:2125 'tvar32' ( smooth in float) 0:2126 Sequence 0:2126 move second child to first child ( temp 4-component vector of int) 0:2126 'tvar82' ( temp 4-component vector of int) 0:2126 textureProjOffset ( global 4-component vector of int) 0:2126 'tvar24' ( uniform isampler1D) 0:2126 'tvar81' ( smooth in 4-component vector of float) 0:2126 'tvar33' ( flat in int) 0:2126 'tvar32' ( smooth in float) 0:2127 Sequence 0:2127 move second child to first child ( temp 4-component vector of uint) 0:2127 'tvar83' ( temp 4-component vector of uint) 0:2127 textureProjOffset ( global 4-component vector of uint) 0:2127 'tvar23' ( uniform usampler1D) 0:2127 'tvar81' ( smooth in 4-component vector of float) 0:2127 'tvar33' ( flat in int) 0:2127 'tvar32' ( smooth in float) 0:2128 Sequence 0:2128 move second child to first child ( temp 4-component vector of float) 0:2128 'tvar84' ( temp 4-component vector of float) 0:2128 textureProjOffset ( global 4-component vector of float) 0:2128 'tvar11' ( uniform sampler2D) 0:2128 'tvar42' ( smooth in 3-component vector of float) 0:2128 'tvar38' ( flat in 2-component vector of int) 0:2128 'tvar32' ( smooth in float) 0:2129 Sequence 0:2129 move second child to first child ( temp 4-component vector of int) 0:2129 'tvar85' ( temp 4-component vector of int) 0:2129 textureProjOffset ( global 4-component vector of int) 0:2129 'tvar12' ( uniform isampler2D) 0:2129 'tvar42' ( smooth in 3-component vector of float) 0:2129 'tvar38' ( flat in 2-component vector of int) 0:2129 'tvar32' ( smooth in float) 0:2130 Sequence 0:2130 move second child to first child ( temp 4-component vector of uint) 0:2130 'tvar86' ( temp 4-component vector of uint) 0:2130 textureProjOffset ( global 4-component vector of uint) 0:2130 'tvar10' ( uniform usampler2D) 0:2130 'tvar42' ( smooth in 3-component vector of float) 0:2130 'tvar38' ( flat in 2-component vector of int) 0:2130 'tvar32' ( smooth in float) 0:2131 Sequence 0:2131 move second child to first child ( temp 4-component vector of float) 0:2131 'tvar87' ( temp 4-component vector of float) 0:2131 textureProjOffset ( global 4-component vector of float) 0:2131 'tvar11' ( uniform sampler2D) 0:2131 'tvar81' ( smooth in 4-component vector of float) 0:2131 'tvar38' ( flat in 2-component vector of int) 0:2131 'tvar32' ( smooth in float) 0:2132 Sequence 0:2132 move second child to first child ( temp 4-component vector of int) 0:2132 'tvar88' ( temp 4-component vector of int) 0:2132 textureProjOffset ( global 4-component vector of int) 0:2132 'tvar12' ( uniform isampler2D) 0:2132 'tvar81' ( smooth in 4-component vector of float) 0:2132 'tvar38' ( flat in 2-component vector of int) 0:2132 'tvar32' ( smooth in float) 0:2133 Sequence 0:2133 move second child to first child ( temp 4-component vector of uint) 0:2133 'tvar89' ( temp 4-component vector of uint) 0:2133 textureProjOffset ( global 4-component vector of uint) 0:2133 'tvar10' ( uniform usampler2D) 0:2133 'tvar81' ( smooth in 4-component vector of float) 0:2133 'tvar38' ( flat in 2-component vector of int) 0:2133 'tvar32' ( smooth in float) 0:2134 Sequence 0:2134 move second child to first child ( temp 4-component vector of float) 0:2134 'tvar90' ( temp 4-component vector of float) 0:2134 textureProjOffset ( global 4-component vector of float) 0:2134 'tvar20' ( uniform sampler3D) 0:2134 'tvar81' ( smooth in 4-component vector of float) 0:2134 'tvar43' ( flat in 3-component vector of int) 0:2134 'tvar32' ( smooth in float) 0:2135 Sequence 0:2135 move second child to first child ( temp 4-component vector of int) 0:2135 'tvar91' ( temp 4-component vector of int) 0:2135 textureProjOffset ( global 4-component vector of int) 0:2135 'tvar21' ( uniform isampler3D) 0:2135 'tvar81' ( smooth in 4-component vector of float) 0:2135 'tvar43' ( flat in 3-component vector of int) 0:2135 'tvar32' ( smooth in float) 0:2136 Sequence 0:2136 move second child to first child ( temp 4-component vector of uint) 0:2136 'tvar92' ( temp 4-component vector of uint) 0:2136 textureProjOffset ( global 4-component vector of uint) 0:2136 'tvar19' ( uniform usampler3D) 0:2136 'tvar81' ( smooth in 4-component vector of float) 0:2136 'tvar43' ( flat in 3-component vector of int) 0:2136 'tvar32' ( smooth in float) 0:2137 Sequence 0:2137 move second child to first child ( temp 4-component vector of float) 0:2137 'tvar93' ( temp 4-component vector of float) 0:2137 textureProjOffset ( global 4-component vector of float) 0:2137 'tvar14' ( uniform sampler2DRect) 0:2137 'tvar42' ( smooth in 3-component vector of float) 0:2137 'tvar38' ( flat in 2-component vector of int) 0:2138 Sequence 0:2138 move second child to first child ( temp 4-component vector of int) 0:2138 'tvar94' ( temp 4-component vector of int) 0:2138 textureProjOffset ( global 4-component vector of int) 0:2138 'tvar13' ( uniform isampler2DRect) 0:2138 'tvar42' ( smooth in 3-component vector of float) 0:2138 'tvar38' ( flat in 2-component vector of int) 0:2139 Sequence 0:2139 move second child to first child ( temp 4-component vector of uint) 0:2139 'tvar95' ( temp 4-component vector of uint) 0:2139 textureProjOffset ( global 4-component vector of uint) 0:2139 'tvar15' ( uniform usampler2DRect) 0:2139 'tvar42' ( smooth in 3-component vector of float) 0:2139 'tvar38' ( flat in 2-component vector of int) 0:2140 Sequence 0:2140 move second child to first child ( temp 4-component vector of float) 0:2140 'tvar96' ( temp 4-component vector of float) 0:2140 textureProjOffset ( global 4-component vector of float) 0:2140 'tvar14' ( uniform sampler2DRect) 0:2140 'tvar81' ( smooth in 4-component vector of float) 0:2140 'tvar38' ( flat in 2-component vector of int) 0:2141 Sequence 0:2141 move second child to first child ( temp 4-component vector of int) 0:2141 'tvar97' ( temp 4-component vector of int) 0:2141 textureProjOffset ( global 4-component vector of int) 0:2141 'tvar13' ( uniform isampler2DRect) 0:2141 'tvar81' ( smooth in 4-component vector of float) 0:2141 'tvar38' ( flat in 2-component vector of int) 0:2142 Sequence 0:2142 move second child to first child ( temp 4-component vector of uint) 0:2142 'tvar98' ( temp 4-component vector of uint) 0:2142 textureProjOffset ( global 4-component vector of uint) 0:2142 'tvar15' ( uniform usampler2DRect) 0:2142 'tvar81' ( smooth in 4-component vector of float) 0:2142 'tvar38' ( flat in 2-component vector of int) 0:2143 Sequence 0:2143 move second child to first child ( temp float) 0:2143 'tvar99' ( temp float) 0:2143 textureProjOffset ( global float) 0:2143 'tvar0' ( uniform sampler2DRectShadow) 0:2143 'tvar81' ( smooth in 4-component vector of float) 0:2143 'tvar38' ( flat in 2-component vector of int) 0:2144 Sequence 0:2144 move second child to first child ( temp float) 0:2144 'tvar100' ( temp float) 0:2144 textureProjOffset ( global float) 0:2144 'tvar3' ( uniform sampler1DShadow) 0:2144 'tvar81' ( smooth in 4-component vector of float) 0:2144 'tvar33' ( flat in int) 0:2144 'tvar32' ( smooth in float) 0:2145 Sequence 0:2145 move second child to first child ( temp float) 0:2145 'tvar101' ( temp float) 0:2145 textureProjOffset ( global float) 0:2145 'tvar4' ( uniform sampler2DShadow) 0:2145 'tvar81' ( smooth in 4-component vector of float) 0:2145 'tvar38' ( flat in 2-component vector of int) 0:2145 'tvar32' ( smooth in float) 0:2146 Sequence 0:2146 move second child to first child ( temp 4-component vector of float) 0:2146 'tvar102' ( temp 4-component vector of float) 0:2146 textureLodOffset ( global 4-component vector of float) 0:2146 'tvar22' ( uniform sampler1D) 0:2146 'tvar32' ( smooth in float) 0:2146 'tvar32' ( smooth in float) 0:2146 'tvar33' ( flat in int) 0:2147 Sequence 0:2147 move second child to first child ( temp 4-component vector of int) 0:2147 'tvar103' ( temp 4-component vector of int) 0:2147 textureLodOffset ( global 4-component vector of int) 0:2147 'tvar24' ( uniform isampler1D) 0:2147 'tvar32' ( smooth in float) 0:2147 'tvar32' ( smooth in float) 0:2147 'tvar33' ( flat in int) 0:2148 Sequence 0:2148 move second child to first child ( temp 4-component vector of uint) 0:2148 'tvar104' ( temp 4-component vector of uint) 0:2148 textureLodOffset ( global 4-component vector of uint) 0:2148 'tvar23' ( uniform usampler1D) 0:2148 'tvar32' ( smooth in float) 0:2148 'tvar32' ( smooth in float) 0:2148 'tvar33' ( flat in int) 0:2149 Sequence 0:2149 move second child to first child ( temp 4-component vector of float) 0:2149 'tvar105' ( temp 4-component vector of float) 0:2149 textureLodOffset ( global 4-component vector of float) 0:2149 'tvar11' ( uniform sampler2D) 0:2149 'tvar37' ( smooth in 2-component vector of float) 0:2149 'tvar32' ( smooth in float) 0:2149 'tvar38' ( flat in 2-component vector of int) 0:2150 Sequence 0:2150 move second child to first child ( temp 4-component vector of int) 0:2150 'tvar106' ( temp 4-component vector of int) 0:2150 textureLodOffset ( global 4-component vector of int) 0:2150 'tvar12' ( uniform isampler2D) 0:2150 'tvar37' ( smooth in 2-component vector of float) 0:2150 'tvar32' ( smooth in float) 0:2150 'tvar38' ( flat in 2-component vector of int) 0:2151 Sequence 0:2151 move second child to first child ( temp 4-component vector of uint) 0:2151 'tvar107' ( temp 4-component vector of uint) 0:2151 textureLodOffset ( global 4-component vector of uint) 0:2151 'tvar10' ( uniform usampler2D) 0:2151 'tvar37' ( smooth in 2-component vector of float) 0:2151 'tvar32' ( smooth in float) 0:2151 'tvar38' ( flat in 2-component vector of int) 0:2152 Sequence 0:2152 move second child to first child ( temp 4-component vector of float) 0:2152 'tvar108' ( temp 4-component vector of float) 0:2152 textureLodOffset ( global 4-component vector of float) 0:2152 'tvar20' ( uniform sampler3D) 0:2152 'tvar42' ( smooth in 3-component vector of float) 0:2152 'tvar32' ( smooth in float) 0:2152 'tvar43' ( flat in 3-component vector of int) 0:2153 Sequence 0:2153 move second child to first child ( temp 4-component vector of int) 0:2153 'tvar109' ( temp 4-component vector of int) 0:2153 textureLodOffset ( global 4-component vector of int) 0:2153 'tvar21' ( uniform isampler3D) 0:2153 'tvar42' ( smooth in 3-component vector of float) 0:2153 'tvar32' ( smooth in float) 0:2153 'tvar43' ( flat in 3-component vector of int) 0:2154 Sequence 0:2154 move second child to first child ( temp 4-component vector of uint) 0:2154 'tvar110' ( temp 4-component vector of uint) 0:2154 textureLodOffset ( global 4-component vector of uint) 0:2154 'tvar19' ( uniform usampler3D) 0:2154 'tvar42' ( smooth in 3-component vector of float) 0:2154 'tvar32' ( smooth in float) 0:2154 'tvar43' ( flat in 3-component vector of int) 0:2155 Sequence 0:2155 move second child to first child ( temp float) 0:2155 'tvar111' ( temp float) 0:2155 textureLodOffset ( global float) 0:2155 'tvar3' ( uniform sampler1DShadow) 0:2155 'tvar42' ( smooth in 3-component vector of float) 0:2155 'tvar32' ( smooth in float) 0:2155 'tvar33' ( flat in int) 0:2156 Sequence 0:2156 move second child to first child ( temp float) 0:2156 'tvar112' ( temp float) 0:2156 textureLodOffset ( global float) 0:2156 'tvar4' ( uniform sampler2DShadow) 0:2156 'tvar42' ( smooth in 3-component vector of float) 0:2156 'tvar32' ( smooth in float) 0:2156 'tvar38' ( flat in 2-component vector of int) 0:2157 Sequence 0:2157 move second child to first child ( temp 4-component vector of float) 0:2157 'tvar113' ( temp 4-component vector of float) 0:2157 textureLodOffset ( global 4-component vector of float) 0:2157 'tvar30' ( uniform sampler1DArray) 0:2157 'tvar37' ( smooth in 2-component vector of float) 0:2157 'tvar32' ( smooth in float) 0:2157 'tvar33' ( flat in int) 0:2158 Sequence 0:2158 move second child to first child ( temp 4-component vector of int) 0:2158 'tvar114' ( temp 4-component vector of int) 0:2158 textureLodOffset ( global 4-component vector of int) 0:2158 'tvar28' ( uniform isampler1DArray) 0:2158 'tvar37' ( smooth in 2-component vector of float) 0:2158 'tvar32' ( smooth in float) 0:2158 'tvar33' ( flat in int) 0:2159 Sequence 0:2159 move second child to first child ( temp 4-component vector of uint) 0:2159 'tvar115' ( temp 4-component vector of uint) 0:2159 textureLodOffset ( global 4-component vector of uint) 0:2159 'tvar29' ( uniform usampler1DArray) 0:2159 'tvar37' ( smooth in 2-component vector of float) 0:2159 'tvar32' ( smooth in float) 0:2159 'tvar33' ( flat in int) 0:2160 Sequence 0:2160 move second child to first child ( temp 4-component vector of float) 0:2160 'tvar116' ( temp 4-component vector of float) 0:2160 textureLodOffset ( global 4-component vector of float) 0:2160 'tvar9' ( uniform sampler2DArray) 0:2160 'tvar42' ( smooth in 3-component vector of float) 0:2160 'tvar32' ( smooth in float) 0:2160 'tvar38' ( flat in 2-component vector of int) 0:2161 Sequence 0:2161 move second child to first child ( temp 4-component vector of int) 0:2161 'tvar117' ( temp 4-component vector of int) 0:2161 textureLodOffset ( global 4-component vector of int) 0:2161 'tvar7' ( uniform isampler2DArray) 0:2161 'tvar42' ( smooth in 3-component vector of float) 0:2161 'tvar32' ( smooth in float) 0:2161 'tvar38' ( flat in 2-component vector of int) 0:2162 Sequence 0:2162 move second child to first child ( temp 4-component vector of uint) 0:2162 'tvar118' ( temp 4-component vector of uint) 0:2162 textureLodOffset ( global 4-component vector of uint) 0:2162 'tvar8' ( uniform usampler2DArray) 0:2162 'tvar42' ( smooth in 3-component vector of float) 0:2162 'tvar32' ( smooth in float) 0:2162 'tvar38' ( flat in 2-component vector of int) 0:2163 Sequence 0:2163 move second child to first child ( temp float) 0:2163 'tvar119' ( temp float) 0:2163 textureLodOffset ( global float) 0:2163 'tvar2' ( uniform sampler1DArrayShadow) 0:2163 'tvar42' ( smooth in 3-component vector of float) 0:2163 'tvar32' ( smooth in float) 0:2163 'tvar33' ( flat in int) 0:2164 Sequence 0:2164 move second child to first child ( temp 4-component vector of float) 0:2164 'tvar120' ( temp 4-component vector of float) 0:2164 textureProjLodOffset ( global 4-component vector of float) 0:2164 'tvar22' ( uniform sampler1D) 0:2164 'tvar37' ( smooth in 2-component vector of float) 0:2164 'tvar32' ( smooth in float) 0:2164 'tvar33' ( flat in int) 0:2165 Sequence 0:2165 move second child to first child ( temp 4-component vector of int) 0:2165 'tvar121' ( temp 4-component vector of int) 0:2165 textureProjLodOffset ( global 4-component vector of int) 0:2165 'tvar24' ( uniform isampler1D) 0:2165 'tvar37' ( smooth in 2-component vector of float) 0:2165 'tvar32' ( smooth in float) 0:2165 'tvar33' ( flat in int) 0:2166 Sequence 0:2166 move second child to first child ( temp 4-component vector of uint) 0:2166 'tvar122' ( temp 4-component vector of uint) 0:2166 textureProjLodOffset ( global 4-component vector of uint) 0:2166 'tvar23' ( uniform usampler1D) 0:2166 'tvar37' ( smooth in 2-component vector of float) 0:2166 'tvar32' ( smooth in float) 0:2166 'tvar33' ( flat in int) 0:2167 Sequence 0:2167 move second child to first child ( temp 4-component vector of float) 0:2167 'tvar123' ( temp 4-component vector of float) 0:2167 textureProjLodOffset ( global 4-component vector of float) 0:2167 'tvar22' ( uniform sampler1D) 0:2167 'tvar81' ( smooth in 4-component vector of float) 0:2167 'tvar32' ( smooth in float) 0:2167 'tvar33' ( flat in int) 0:2168 Sequence 0:2168 move second child to first child ( temp 4-component vector of int) 0:2168 'tvar124' ( temp 4-component vector of int) 0:2168 textureProjLodOffset ( global 4-component vector of int) 0:2168 'tvar24' ( uniform isampler1D) 0:2168 'tvar81' ( smooth in 4-component vector of float) 0:2168 'tvar32' ( smooth in float) 0:2168 'tvar33' ( flat in int) 0:2169 Sequence 0:2169 move second child to first child ( temp 4-component vector of uint) 0:2169 'tvar125' ( temp 4-component vector of uint) 0:2169 textureProjLodOffset ( global 4-component vector of uint) 0:2169 'tvar23' ( uniform usampler1D) 0:2169 'tvar81' ( smooth in 4-component vector of float) 0:2169 'tvar32' ( smooth in float) 0:2169 'tvar33' ( flat in int) 0:2170 Sequence 0:2170 move second child to first child ( temp 4-component vector of float) 0:2170 'tvar126' ( temp 4-component vector of float) 0:2170 textureProjLodOffset ( global 4-component vector of float) 0:2170 'tvar11' ( uniform sampler2D) 0:2170 'tvar42' ( smooth in 3-component vector of float) 0:2170 'tvar32' ( smooth in float) 0:2170 'tvar38' ( flat in 2-component vector of int) 0:2171 Sequence 0:2171 move second child to first child ( temp 4-component vector of int) 0:2171 'tvar127' ( temp 4-component vector of int) 0:2171 textureProjLodOffset ( global 4-component vector of int) 0:2171 'tvar12' ( uniform isampler2D) 0:2171 'tvar42' ( smooth in 3-component vector of float) 0:2171 'tvar32' ( smooth in float) 0:2171 'tvar38' ( flat in 2-component vector of int) 0:2172 Sequence 0:2172 move second child to first child ( temp 4-component vector of uint) 0:2172 'tvar128' ( temp 4-component vector of uint) 0:2172 textureProjLodOffset ( global 4-component vector of uint) 0:2172 'tvar10' ( uniform usampler2D) 0:2172 'tvar42' ( smooth in 3-component vector of float) 0:2172 'tvar32' ( smooth in float) 0:2172 'tvar38' ( flat in 2-component vector of int) 0:2173 Sequence 0:2173 move second child to first child ( temp 4-component vector of float) 0:2173 'tvar129' ( temp 4-component vector of float) 0:2173 textureProjLodOffset ( global 4-component vector of float) 0:2173 'tvar11' ( uniform sampler2D) 0:2173 'tvar81' ( smooth in 4-component vector of float) 0:2173 'tvar32' ( smooth in float) 0:2173 'tvar38' ( flat in 2-component vector of int) 0:2174 Sequence 0:2174 move second child to first child ( temp 4-component vector of int) 0:2174 'tvar130' ( temp 4-component vector of int) 0:2174 textureProjLodOffset ( global 4-component vector of int) 0:2174 'tvar12' ( uniform isampler2D) 0:2174 'tvar81' ( smooth in 4-component vector of float) 0:2174 'tvar32' ( smooth in float) 0:2174 'tvar38' ( flat in 2-component vector of int) 0:2175 Sequence 0:2175 move second child to first child ( temp 4-component vector of uint) 0:2175 'tvar131' ( temp 4-component vector of uint) 0:2175 textureProjLodOffset ( global 4-component vector of uint) 0:2175 'tvar10' ( uniform usampler2D) 0:2175 'tvar81' ( smooth in 4-component vector of float) 0:2175 'tvar32' ( smooth in float) 0:2175 'tvar38' ( flat in 2-component vector of int) 0:2176 Sequence 0:2176 move second child to first child ( temp 4-component vector of float) 0:2176 'tvar132' ( temp 4-component vector of float) 0:2176 textureProjLodOffset ( global 4-component vector of float) 0:2176 'tvar20' ( uniform sampler3D) 0:2176 'tvar81' ( smooth in 4-component vector of float) 0:2176 'tvar32' ( smooth in float) 0:2176 'tvar43' ( flat in 3-component vector of int) 0:2177 Sequence 0:2177 move second child to first child ( temp 4-component vector of int) 0:2177 'tvar133' ( temp 4-component vector of int) 0:2177 textureProjLodOffset ( global 4-component vector of int) 0:2177 'tvar21' ( uniform isampler3D) 0:2177 'tvar81' ( smooth in 4-component vector of float) 0:2177 'tvar32' ( smooth in float) 0:2177 'tvar43' ( flat in 3-component vector of int) 0:2178 Sequence 0:2178 move second child to first child ( temp 4-component vector of uint) 0:2178 'tvar134' ( temp 4-component vector of uint) 0:2178 textureProjLodOffset ( global 4-component vector of uint) 0:2178 'tvar19' ( uniform usampler3D) 0:2178 'tvar81' ( smooth in 4-component vector of float) 0:2178 'tvar32' ( smooth in float) 0:2178 'tvar43' ( flat in 3-component vector of int) 0:2179 Sequence 0:2179 move second child to first child ( temp float) 0:2179 'tvar135' ( temp float) 0:2179 textureProjLodOffset ( global float) 0:2179 'tvar3' ( uniform sampler1DShadow) 0:2179 'tvar81' ( smooth in 4-component vector of float) 0:2179 'tvar32' ( smooth in float) 0:2179 'tvar33' ( flat in int) 0:2180 Sequence 0:2180 move second child to first child ( temp float) 0:2180 'tvar136' ( temp float) 0:2180 textureProjLodOffset ( global float) 0:2180 'tvar4' ( uniform sampler2DShadow) 0:2180 'tvar81' ( smooth in 4-component vector of float) 0:2180 'tvar32' ( smooth in float) 0:2180 'tvar38' ( flat in 2-component vector of int) 0:? Linker Objects 0:? 'tex' ( uniform 10-element array of sampler2D) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform int i}) 0:? 'coord' ( global 2-component vector of float) 0:? 'var16' ( uniform sampler2DShadow) 0:? 'var17' ( uniform samplerCubeShadow) 0:? 'var18' ( uniform sampler2DArrayShadow) 0:? 'var19' ( uniform samplerCubeArrayShadow) 0:? 'var20' ( uniform sampler2DRectShadow) 0:? 'svar21' ( uniform samplerCubeArray) 0:? 'svar22' ( uniform usamplerCubeArray) 0:? 'svar23' ( uniform isamplerCubeArray) 0:? 'svar24' ( uniform sampler2D) 0:? 'svar25' ( uniform usampler2D) 0:? 'svar26' ( uniform isampler2D) 0:? 'svar27' ( uniform sampler2DRect) 0:? 'svar28' ( uniform usampler2DRect) 0:? 'svar29' ( uniform isampler2DRect) 0:? 'svar30' ( uniform samplerCube) 0:? 'svar31' ( uniform usamplerCube) 0:? 'svar32' ( uniform isamplerCube) 0:? 'svar33' ( uniform sampler2DArray) 0:? 'svar34' ( uniform usampler2DArray) 0:? 'svar35' ( uniform isampler2DArray) 0:? 'fvar0' ( smooth in float) 0:? 'fvar1' ( smooth in 2-component vector of float) 0:? 'fvar2' ( smooth in 3-component vector of float) 0:? 'fvar3' ( smooth in 4-component vector of float) 0:? 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:? 'var1_in' ( flat in int8_t) 0:? 'var5_in' ( flat in int16_t) 0:? 'var9_in' ( flat in int) 0:? 'var13_in' ( flat in int64_t) 0:? 'var33_in' ( flat in float16_t) 0:? 'var41_in' ( flat in double) 0:? 'var42_in' ( flat in double) 0:? 'var11_out' ( out int8_t) 0:? 'var51_out' ( out int16_t) 0:? 'var91_out' ( out int) 0:? 'var331_out' ( out float16_t) 0:? 'var' ( flat in int) 0:? 'tvar0' ( uniform sampler2DRectShadow) 0:? 'tvar1' ( uniform samplerCubeShadow) 0:? 'tvar2' ( uniform sampler1DArrayShadow) 0:? 'tvar3' ( uniform sampler1DShadow) 0:? 'tvar4' ( uniform sampler2DShadow) 0:? 'tvar5' ( uniform sampler2DArrayShadow) 0:? 'tvar6' ( uniform samplerCubeArrayShadow) 0:? 'tvar7' ( uniform isampler2DArray) 0:? 'tvar8' ( uniform usampler2DArray) 0:? 'tvar9' ( uniform sampler2DArray) 0:? 'tvar10' ( uniform usampler2D) 0:? 'tvar11' ( uniform sampler2D) 0:? 'tvar12' ( uniform isampler2D) 0:? 'tvar13' ( uniform isampler2DRect) 0:? 'tvar14' ( uniform sampler2DRect) 0:? 'tvar15' ( uniform usampler2DRect) 0:? 'tvar16' ( uniform usamplerCubeArray) 0:? 'tvar17' ( uniform isamplerCubeArray) 0:? 'tvar18' ( uniform samplerCubeArray) 0:? 'tvar19' ( uniform usampler3D) 0:? 'tvar20' ( uniform sampler3D) 0:? 'tvar21' ( uniform isampler3D) 0:? 'tvar22' ( uniform sampler1D) 0:? 'tvar23' ( uniform usampler1D) 0:? 'tvar24' ( uniform isampler1D) 0:? 'tvar25' ( uniform isamplerCube) 0:? 'tvar26' ( uniform samplerCube) 0:? 'tvar27' ( uniform usamplerCube) 0:? 'tvar28' ( uniform isampler1DArray) 0:? 'tvar29' ( uniform usampler1DArray) 0:? 'tvar30' ( uniform sampler1DArray) 0:? 'tvar32' ( smooth in float) 0:? 'tvar33' ( flat in int) 0:? 'tvar37' ( smooth in 2-component vector of float) 0:? 'tvar38' ( flat in 2-component vector of int) 0:? 'tvar42' ( smooth in 3-component vector of float) 0:? 'tvar43' ( flat in 3-component vector of int) 0:? 'tvar81' ( smooth in 4-component vector of float) Linked fragment stage: Shader version: 150 Requested GL_ARB_gpu_shader_fp64 Requested GL_NV_gpu_shader5 0:? Sequence 0:2081 Function Definition: main( ( global void) 0:2081 Function Parameters: 0:2082 Sequence 0:2082 Sequence 0:2082 move second child to first child ( temp 4-component vector of float) 0:2082 'tvar31' ( temp 4-component vector of float) 0:2082 textureOffset ( global 4-component vector of float) 0:2082 'tvar22' ( uniform sampler1D) 0:2082 'tvar32' ( smooth in float) 0:2082 'tvar33' ( flat in int) 0:2082 'tvar32' ( smooth in float) 0:2083 Sequence 0:2083 move second child to first child ( temp 4-component vector of int) 0:2083 'tvar34' ( temp 4-component vector of int) 0:2083 textureOffset ( global 4-component vector of int) 0:2083 'tvar24' ( uniform isampler1D) 0:2083 'tvar32' ( smooth in float) 0:2083 'tvar33' ( flat in int) 0:2083 'tvar32' ( smooth in float) 0:2084 Sequence 0:2084 move second child to first child ( temp 4-component vector of uint) 0:2084 'tvar35' ( temp 4-component vector of uint) 0:2084 textureOffset ( global 4-component vector of uint) 0:2084 'tvar23' ( uniform usampler1D) 0:2084 'tvar32' ( smooth in float) 0:2084 'tvar33' ( flat in int) 0:2084 'tvar32' ( smooth in float) 0:2085 Sequence 0:2085 move second child to first child ( temp 4-component vector of float) 0:2085 'tvar36' ( temp 4-component vector of float) 0:2085 textureOffset ( global 4-component vector of float) 0:2085 'tvar11' ( uniform sampler2D) 0:2085 'tvar37' ( smooth in 2-component vector of float) 0:2085 'tvar38' ( flat in 2-component vector of int) 0:2085 'tvar32' ( smooth in float) 0:2086 Sequence 0:2086 move second child to first child ( temp 4-component vector of int) 0:2086 'tvar39' ( temp 4-component vector of int) 0:2086 textureOffset ( global 4-component vector of int) 0:2086 'tvar12' ( uniform isampler2D) 0:2086 'tvar37' ( smooth in 2-component vector of float) 0:2086 'tvar38' ( flat in 2-component vector of int) 0:2086 'tvar32' ( smooth in float) 0:2087 Sequence 0:2087 move second child to first child ( temp 4-component vector of uint) 0:2087 'tvar40' ( temp 4-component vector of uint) 0:2087 textureOffset ( global 4-component vector of uint) 0:2087 'tvar10' ( uniform usampler2D) 0:2087 'tvar37' ( smooth in 2-component vector of float) 0:2087 'tvar38' ( flat in 2-component vector of int) 0:2087 'tvar32' ( smooth in float) 0:2088 Sequence 0:2088 move second child to first child ( temp 4-component vector of float) 0:2088 'tvar41' ( temp 4-component vector of float) 0:2088 textureOffset ( global 4-component vector of float) 0:2088 'tvar20' ( uniform sampler3D) 0:2088 'tvar42' ( smooth in 3-component vector of float) 0:2088 'tvar43' ( flat in 3-component vector of int) 0:2088 'tvar32' ( smooth in float) 0:2089 Sequence 0:2089 move second child to first child ( temp 4-component vector of int) 0:2089 'tvar44' ( temp 4-component vector of int) 0:2089 textureOffset ( global 4-component vector of int) 0:2089 'tvar21' ( uniform isampler3D) 0:2089 'tvar42' ( smooth in 3-component vector of float) 0:2089 'tvar43' ( flat in 3-component vector of int) 0:2089 'tvar32' ( smooth in float) 0:2090 Sequence 0:2090 move second child to first child ( temp 4-component vector of uint) 0:2090 'tvar45' ( temp 4-component vector of uint) 0:2090 textureOffset ( global 4-component vector of uint) 0:2090 'tvar19' ( uniform usampler3D) 0:2090 'tvar42' ( smooth in 3-component vector of float) 0:2090 'tvar43' ( flat in 3-component vector of int) 0:2090 'tvar32' ( smooth in float) 0:2091 Sequence 0:2091 move second child to first child ( temp 4-component vector of float) 0:2091 'tvar46' ( temp 4-component vector of float) 0:2091 textureOffset ( global 4-component vector of float) 0:2091 'tvar14' ( uniform sampler2DRect) 0:2091 'tvar37' ( smooth in 2-component vector of float) 0:2091 'tvar38' ( flat in 2-component vector of int) 0:2092 Sequence 0:2092 move second child to first child ( temp 4-component vector of int) 0:2092 'tvar47' ( temp 4-component vector of int) 0:2092 textureOffset ( global 4-component vector of int) 0:2092 'tvar13' ( uniform isampler2DRect) 0:2092 'tvar37' ( smooth in 2-component vector of float) 0:2092 'tvar38' ( flat in 2-component vector of int) 0:2093 Sequence 0:2093 move second child to first child ( temp 4-component vector of uint) 0:2093 'tvar48' ( temp 4-component vector of uint) 0:2093 textureOffset ( global 4-component vector of uint) 0:2093 'tvar15' ( uniform usampler2DRect) 0:2093 'tvar37' ( smooth in 2-component vector of float) 0:2093 'tvar38' ( flat in 2-component vector of int) 0:2094 Sequence 0:2094 move second child to first child ( temp float) 0:2094 'tvar49' ( temp float) 0:2094 textureOffset ( global float) 0:2094 'tvar0' ( uniform sampler2DRectShadow) 0:2094 'tvar42' ( smooth in 3-component vector of float) 0:2094 'tvar38' ( flat in 2-component vector of int) 0:2095 Sequence 0:2095 move second child to first child ( temp float) 0:2095 'tvar50' ( temp float) 0:2095 textureOffset ( global float) 0:2095 'tvar3' ( uniform sampler1DShadow) 0:2095 'tvar42' ( smooth in 3-component vector of float) 0:2095 'tvar33' ( flat in int) 0:2095 'tvar32' ( smooth in float) 0:2096 Sequence 0:2096 move second child to first child ( temp float) 0:2096 'tvar51' ( temp float) 0:2096 textureOffset ( global float) 0:2096 'tvar4' ( uniform sampler2DShadow) 0:2096 'tvar42' ( smooth in 3-component vector of float) 0:2096 'tvar38' ( flat in 2-component vector of int) 0:2096 'tvar32' ( smooth in float) 0:2097 Sequence 0:2097 move second child to first child ( temp 4-component vector of float) 0:2097 'tvar52' ( temp 4-component vector of float) 0:2097 textureOffset ( global 4-component vector of float) 0:2097 'tvar30' ( uniform sampler1DArray) 0:2097 'tvar37' ( smooth in 2-component vector of float) 0:2097 'tvar33' ( flat in int) 0:2097 'tvar32' ( smooth in float) 0:2098 Sequence 0:2098 move second child to first child ( temp 4-component vector of int) 0:2098 'tvar53' ( temp 4-component vector of int) 0:2098 textureOffset ( global 4-component vector of int) 0:2098 'tvar28' ( uniform isampler1DArray) 0:2098 'tvar37' ( smooth in 2-component vector of float) 0:2098 'tvar33' ( flat in int) 0:2098 'tvar32' ( smooth in float) 0:2099 Sequence 0:2099 move second child to first child ( temp 4-component vector of uint) 0:2099 'tvar54' ( temp 4-component vector of uint) 0:2099 textureOffset ( global 4-component vector of uint) 0:2099 'tvar29' ( uniform usampler1DArray) 0:2099 'tvar37' ( smooth in 2-component vector of float) 0:2099 'tvar33' ( flat in int) 0:2099 'tvar32' ( smooth in float) 0:2100 Sequence 0:2100 move second child to first child ( temp 4-component vector of float) 0:2100 'tvar55' ( temp 4-component vector of float) 0:2100 textureOffset ( global 4-component vector of float) 0:2100 'tvar9' ( uniform sampler2DArray) 0:2100 'tvar42' ( smooth in 3-component vector of float) 0:2100 'tvar38' ( flat in 2-component vector of int) 0:2100 'tvar32' ( smooth in float) 0:2101 Sequence 0:2101 move second child to first child ( temp 4-component vector of int) 0:2101 'tvar56' ( temp 4-component vector of int) 0:2101 textureOffset ( global 4-component vector of int) 0:2101 'tvar7' ( uniform isampler2DArray) 0:2101 'tvar42' ( smooth in 3-component vector of float) 0:2101 'tvar38' ( flat in 2-component vector of int) 0:2101 'tvar32' ( smooth in float) 0:2102 Sequence 0:2102 move second child to first child ( temp 4-component vector of uint) 0:2102 'tvar57' ( temp 4-component vector of uint) 0:2102 textureOffset ( global 4-component vector of uint) 0:2102 'tvar8' ( uniform usampler2DArray) 0:2102 'tvar42' ( smooth in 3-component vector of float) 0:2102 'tvar38' ( flat in 2-component vector of int) 0:2102 'tvar32' ( smooth in float) 0:2103 Sequence 0:2103 move second child to first child ( temp float) 0:2103 'tvar58' ( temp float) 0:2103 textureOffset ( global float) 0:2103 'tvar2' ( uniform sampler1DArrayShadow) 0:2103 'tvar42' ( smooth in 3-component vector of float) 0:2103 'tvar33' ( flat in int) 0:2103 'tvar32' ( smooth in float) 0:2104 Sequence 0:2104 move second child to first child ( temp 4-component vector of float) 0:2104 'tvar59' ( temp 4-component vector of float) 0:2104 textureFetchOffset ( global 4-component vector of float) 0:2104 'tvar22' ( uniform sampler1D) 0:2104 'tvar33' ( flat in int) 0:2104 'tvar33' ( flat in int) 0:2104 'tvar33' ( flat in int) 0:2105 Sequence 0:2105 move second child to first child ( temp 4-component vector of int) 0:2105 'tvar60' ( temp 4-component vector of int) 0:2105 textureFetchOffset ( global 4-component vector of int) 0:2105 'tvar24' ( uniform isampler1D) 0:2105 'tvar33' ( flat in int) 0:2105 'tvar33' ( flat in int) 0:2105 'tvar33' ( flat in int) 0:2106 Sequence 0:2106 move second child to first child ( temp 4-component vector of uint) 0:2106 'tvar61' ( temp 4-component vector of uint) 0:2106 textureFetchOffset ( global 4-component vector of uint) 0:2106 'tvar23' ( uniform usampler1D) 0:2106 'tvar33' ( flat in int) 0:2106 'tvar33' ( flat in int) 0:2106 'tvar33' ( flat in int) 0:2107 Sequence 0:2107 move second child to first child ( temp 4-component vector of float) 0:2107 'tvar62' ( temp 4-component vector of float) 0:2107 textureFetchOffset ( global 4-component vector of float) 0:2107 'tvar11' ( uniform sampler2D) 0:2107 'tvar38' ( flat in 2-component vector of int) 0:2107 'tvar33' ( flat in int) 0:2107 'tvar38' ( flat in 2-component vector of int) 0:2108 Sequence 0:2108 move second child to first child ( temp 4-component vector of int) 0:2108 'tvar63' ( temp 4-component vector of int) 0:2108 textureFetchOffset ( global 4-component vector of int) 0:2108 'tvar12' ( uniform isampler2D) 0:2108 'tvar38' ( flat in 2-component vector of int) 0:2108 'tvar33' ( flat in int) 0:2108 'tvar38' ( flat in 2-component vector of int) 0:2109 Sequence 0:2109 move second child to first child ( temp 4-component vector of uint) 0:2109 'tvar64' ( temp 4-component vector of uint) 0:2109 textureFetchOffset ( global 4-component vector of uint) 0:2109 'tvar10' ( uniform usampler2D) 0:2109 'tvar38' ( flat in 2-component vector of int) 0:2109 'tvar33' ( flat in int) 0:2109 'tvar38' ( flat in 2-component vector of int) 0:2110 Sequence 0:2110 move second child to first child ( temp 4-component vector of float) 0:2110 'tvar65' ( temp 4-component vector of float) 0:2110 textureFetchOffset ( global 4-component vector of float) 0:2110 'tvar20' ( uniform sampler3D) 0:2110 'tvar43' ( flat in 3-component vector of int) 0:2110 'tvar33' ( flat in int) 0:2110 'tvar43' ( flat in 3-component vector of int) 0:2111 Sequence 0:2111 move second child to first child ( temp 4-component vector of int) 0:2111 'tvar66' ( temp 4-component vector of int) 0:2111 textureFetchOffset ( global 4-component vector of int) 0:2111 'tvar21' ( uniform isampler3D) 0:2111 'tvar43' ( flat in 3-component vector of int) 0:2111 'tvar33' ( flat in int) 0:2111 'tvar43' ( flat in 3-component vector of int) 0:2112 Sequence 0:2112 move second child to first child ( temp 4-component vector of uint) 0:2112 'tvar67' ( temp 4-component vector of uint) 0:2112 textureFetchOffset ( global 4-component vector of uint) 0:2112 'tvar19' ( uniform usampler3D) 0:2112 'tvar43' ( flat in 3-component vector of int) 0:2112 'tvar33' ( flat in int) 0:2112 'tvar43' ( flat in 3-component vector of int) 0:2113 Sequence 0:2113 move second child to first child ( temp 4-component vector of float) 0:2113 'tvar68' ( temp 4-component vector of float) 0:2113 textureFetchOffset ( global 4-component vector of float) 0:2113 'tvar14' ( uniform sampler2DRect) 0:2113 'tvar38' ( flat in 2-component vector of int) 0:2113 'tvar38' ( flat in 2-component vector of int) 0:2114 Sequence 0:2114 move second child to first child ( temp 4-component vector of int) 0:2114 'tvar69' ( temp 4-component vector of int) 0:2114 textureFetchOffset ( global 4-component vector of int) 0:2114 'tvar13' ( uniform isampler2DRect) 0:2114 'tvar38' ( flat in 2-component vector of int) 0:2114 'tvar38' ( flat in 2-component vector of int) 0:2115 Sequence 0:2115 move second child to first child ( temp 4-component vector of uint) 0:2115 'tvar70' ( temp 4-component vector of uint) 0:2115 textureFetchOffset ( global 4-component vector of uint) 0:2115 'tvar15' ( uniform usampler2DRect) 0:2115 'tvar38' ( flat in 2-component vector of int) 0:2115 'tvar38' ( flat in 2-component vector of int) 0:2116 Sequence 0:2116 move second child to first child ( temp 4-component vector of float) 0:2116 'tvar71' ( temp 4-component vector of float) 0:2116 textureFetchOffset ( global 4-component vector of float) 0:2116 'tvar30' ( uniform sampler1DArray) 0:2116 'tvar38' ( flat in 2-component vector of int) 0:2116 'tvar33' ( flat in int) 0:2116 'tvar33' ( flat in int) 0:2117 Sequence 0:2117 move second child to first child ( temp 4-component vector of int) 0:2117 'tvar72' ( temp 4-component vector of int) 0:2117 textureFetchOffset ( global 4-component vector of int) 0:2117 'tvar28' ( uniform isampler1DArray) 0:2117 'tvar38' ( flat in 2-component vector of int) 0:2117 'tvar33' ( flat in int) 0:2117 'tvar33' ( flat in int) 0:2118 Sequence 0:2118 move second child to first child ( temp 4-component vector of uint) 0:2118 'tvar73' ( temp 4-component vector of uint) 0:2118 textureFetchOffset ( global 4-component vector of uint) 0:2118 'tvar29' ( uniform usampler1DArray) 0:2118 'tvar38' ( flat in 2-component vector of int) 0:2118 'tvar33' ( flat in int) 0:2118 'tvar33' ( flat in int) 0:2119 Sequence 0:2119 move second child to first child ( temp 4-component vector of float) 0:2119 'tvar74' ( temp 4-component vector of float) 0:2119 textureFetchOffset ( global 4-component vector of float) 0:2119 'tvar9' ( uniform sampler2DArray) 0:2119 'tvar43' ( flat in 3-component vector of int) 0:2119 'tvar33' ( flat in int) 0:2119 'tvar38' ( flat in 2-component vector of int) 0:2120 Sequence 0:2120 move second child to first child ( temp 4-component vector of int) 0:2120 'tvar75' ( temp 4-component vector of int) 0:2120 textureFetchOffset ( global 4-component vector of int) 0:2120 'tvar7' ( uniform isampler2DArray) 0:2120 'tvar43' ( flat in 3-component vector of int) 0:2120 'tvar33' ( flat in int) 0:2120 'tvar38' ( flat in 2-component vector of int) 0:2121 Sequence 0:2121 move second child to first child ( temp 4-component vector of uint) 0:2121 'tvar76' ( temp 4-component vector of uint) 0:2121 textureFetchOffset ( global 4-component vector of uint) 0:2121 'tvar8' ( uniform usampler2DArray) 0:2121 'tvar43' ( flat in 3-component vector of int) 0:2121 'tvar33' ( flat in int) 0:2121 'tvar38' ( flat in 2-component vector of int) 0:2122 Sequence 0:2122 move second child to first child ( temp 4-component vector of float) 0:2122 'tvar77' ( temp 4-component vector of float) 0:2122 textureProjOffset ( global 4-component vector of float) 0:2122 'tvar22' ( uniform sampler1D) 0:2122 'tvar37' ( smooth in 2-component vector of float) 0:2122 'tvar33' ( flat in int) 0:2122 'tvar32' ( smooth in float) 0:2123 Sequence 0:2123 move second child to first child ( temp 4-component vector of int) 0:2123 'tvar78' ( temp 4-component vector of int) 0:2123 textureProjOffset ( global 4-component vector of int) 0:2123 'tvar24' ( uniform isampler1D) 0:2123 'tvar37' ( smooth in 2-component vector of float) 0:2123 'tvar33' ( flat in int) 0:2123 'tvar32' ( smooth in float) 0:2124 Sequence 0:2124 move second child to first child ( temp 4-component vector of uint) 0:2124 'tvar79' ( temp 4-component vector of uint) 0:2124 textureProjOffset ( global 4-component vector of uint) 0:2124 'tvar23' ( uniform usampler1D) 0:2124 'tvar37' ( smooth in 2-component vector of float) 0:2124 'tvar33' ( flat in int) 0:2124 'tvar32' ( smooth in float) 0:2125 Sequence 0:2125 move second child to first child ( temp 4-component vector of float) 0:2125 'tvar80' ( temp 4-component vector of float) 0:2125 textureProjOffset ( global 4-component vector of float) 0:2125 'tvar22' ( uniform sampler1D) 0:2125 'tvar81' ( smooth in 4-component vector of float) 0:2125 'tvar33' ( flat in int) 0:2125 'tvar32' ( smooth in float) 0:2126 Sequence 0:2126 move second child to first child ( temp 4-component vector of int) 0:2126 'tvar82' ( temp 4-component vector of int) 0:2126 textureProjOffset ( global 4-component vector of int) 0:2126 'tvar24' ( uniform isampler1D) 0:2126 'tvar81' ( smooth in 4-component vector of float) 0:2126 'tvar33' ( flat in int) 0:2126 'tvar32' ( smooth in float) 0:2127 Sequence 0:2127 move second child to first child ( temp 4-component vector of uint) 0:2127 'tvar83' ( temp 4-component vector of uint) 0:2127 textureProjOffset ( global 4-component vector of uint) 0:2127 'tvar23' ( uniform usampler1D) 0:2127 'tvar81' ( smooth in 4-component vector of float) 0:2127 'tvar33' ( flat in int) 0:2127 'tvar32' ( smooth in float) 0:2128 Sequence 0:2128 move second child to first child ( temp 4-component vector of float) 0:2128 'tvar84' ( temp 4-component vector of float) 0:2128 textureProjOffset ( global 4-component vector of float) 0:2128 'tvar11' ( uniform sampler2D) 0:2128 'tvar42' ( smooth in 3-component vector of float) 0:2128 'tvar38' ( flat in 2-component vector of int) 0:2128 'tvar32' ( smooth in float) 0:2129 Sequence 0:2129 move second child to first child ( temp 4-component vector of int) 0:2129 'tvar85' ( temp 4-component vector of int) 0:2129 textureProjOffset ( global 4-component vector of int) 0:2129 'tvar12' ( uniform isampler2D) 0:2129 'tvar42' ( smooth in 3-component vector of float) 0:2129 'tvar38' ( flat in 2-component vector of int) 0:2129 'tvar32' ( smooth in float) 0:2130 Sequence 0:2130 move second child to first child ( temp 4-component vector of uint) 0:2130 'tvar86' ( temp 4-component vector of uint) 0:2130 textureProjOffset ( global 4-component vector of uint) 0:2130 'tvar10' ( uniform usampler2D) 0:2130 'tvar42' ( smooth in 3-component vector of float) 0:2130 'tvar38' ( flat in 2-component vector of int) 0:2130 'tvar32' ( smooth in float) 0:2131 Sequence 0:2131 move second child to first child ( temp 4-component vector of float) 0:2131 'tvar87' ( temp 4-component vector of float) 0:2131 textureProjOffset ( global 4-component vector of float) 0:2131 'tvar11' ( uniform sampler2D) 0:2131 'tvar81' ( smooth in 4-component vector of float) 0:2131 'tvar38' ( flat in 2-component vector of int) 0:2131 'tvar32' ( smooth in float) 0:2132 Sequence 0:2132 move second child to first child ( temp 4-component vector of int) 0:2132 'tvar88' ( temp 4-component vector of int) 0:2132 textureProjOffset ( global 4-component vector of int) 0:2132 'tvar12' ( uniform isampler2D) 0:2132 'tvar81' ( smooth in 4-component vector of float) 0:2132 'tvar38' ( flat in 2-component vector of int) 0:2132 'tvar32' ( smooth in float) 0:2133 Sequence 0:2133 move second child to first child ( temp 4-component vector of uint) 0:2133 'tvar89' ( temp 4-component vector of uint) 0:2133 textureProjOffset ( global 4-component vector of uint) 0:2133 'tvar10' ( uniform usampler2D) 0:2133 'tvar81' ( smooth in 4-component vector of float) 0:2133 'tvar38' ( flat in 2-component vector of int) 0:2133 'tvar32' ( smooth in float) 0:2134 Sequence 0:2134 move second child to first child ( temp 4-component vector of float) 0:2134 'tvar90' ( temp 4-component vector of float) 0:2134 textureProjOffset ( global 4-component vector of float) 0:2134 'tvar20' ( uniform sampler3D) 0:2134 'tvar81' ( smooth in 4-component vector of float) 0:2134 'tvar43' ( flat in 3-component vector of int) 0:2134 'tvar32' ( smooth in float) 0:2135 Sequence 0:2135 move second child to first child ( temp 4-component vector of int) 0:2135 'tvar91' ( temp 4-component vector of int) 0:2135 textureProjOffset ( global 4-component vector of int) 0:2135 'tvar21' ( uniform isampler3D) 0:2135 'tvar81' ( smooth in 4-component vector of float) 0:2135 'tvar43' ( flat in 3-component vector of int) 0:2135 'tvar32' ( smooth in float) 0:2136 Sequence 0:2136 move second child to first child ( temp 4-component vector of uint) 0:2136 'tvar92' ( temp 4-component vector of uint) 0:2136 textureProjOffset ( global 4-component vector of uint) 0:2136 'tvar19' ( uniform usampler3D) 0:2136 'tvar81' ( smooth in 4-component vector of float) 0:2136 'tvar43' ( flat in 3-component vector of int) 0:2136 'tvar32' ( smooth in float) 0:2137 Sequence 0:2137 move second child to first child ( temp 4-component vector of float) 0:2137 'tvar93' ( temp 4-component vector of float) 0:2137 textureProjOffset ( global 4-component vector of float) 0:2137 'tvar14' ( uniform sampler2DRect) 0:2137 'tvar42' ( smooth in 3-component vector of float) 0:2137 'tvar38' ( flat in 2-component vector of int) 0:2138 Sequence 0:2138 move second child to first child ( temp 4-component vector of int) 0:2138 'tvar94' ( temp 4-component vector of int) 0:2138 textureProjOffset ( global 4-component vector of int) 0:2138 'tvar13' ( uniform isampler2DRect) 0:2138 'tvar42' ( smooth in 3-component vector of float) 0:2138 'tvar38' ( flat in 2-component vector of int) 0:2139 Sequence 0:2139 move second child to first child ( temp 4-component vector of uint) 0:2139 'tvar95' ( temp 4-component vector of uint) 0:2139 textureProjOffset ( global 4-component vector of uint) 0:2139 'tvar15' ( uniform usampler2DRect) 0:2139 'tvar42' ( smooth in 3-component vector of float) 0:2139 'tvar38' ( flat in 2-component vector of int) 0:2140 Sequence 0:2140 move second child to first child ( temp 4-component vector of float) 0:2140 'tvar96' ( temp 4-component vector of float) 0:2140 textureProjOffset ( global 4-component vector of float) 0:2140 'tvar14' ( uniform sampler2DRect) 0:2140 'tvar81' ( smooth in 4-component vector of float) 0:2140 'tvar38' ( flat in 2-component vector of int) 0:2141 Sequence 0:2141 move second child to first child ( temp 4-component vector of int) 0:2141 'tvar97' ( temp 4-component vector of int) 0:2141 textureProjOffset ( global 4-component vector of int) 0:2141 'tvar13' ( uniform isampler2DRect) 0:2141 'tvar81' ( smooth in 4-component vector of float) 0:2141 'tvar38' ( flat in 2-component vector of int) 0:2142 Sequence 0:2142 move second child to first child ( temp 4-component vector of uint) 0:2142 'tvar98' ( temp 4-component vector of uint) 0:2142 textureProjOffset ( global 4-component vector of uint) 0:2142 'tvar15' ( uniform usampler2DRect) 0:2142 'tvar81' ( smooth in 4-component vector of float) 0:2142 'tvar38' ( flat in 2-component vector of int) 0:2143 Sequence 0:2143 move second child to first child ( temp float) 0:2143 'tvar99' ( temp float) 0:2143 textureProjOffset ( global float) 0:2143 'tvar0' ( uniform sampler2DRectShadow) 0:2143 'tvar81' ( smooth in 4-component vector of float) 0:2143 'tvar38' ( flat in 2-component vector of int) 0:2144 Sequence 0:2144 move second child to first child ( temp float) 0:2144 'tvar100' ( temp float) 0:2144 textureProjOffset ( global float) 0:2144 'tvar3' ( uniform sampler1DShadow) 0:2144 'tvar81' ( smooth in 4-component vector of float) 0:2144 'tvar33' ( flat in int) 0:2144 'tvar32' ( smooth in float) 0:2145 Sequence 0:2145 move second child to first child ( temp float) 0:2145 'tvar101' ( temp float) 0:2145 textureProjOffset ( global float) 0:2145 'tvar4' ( uniform sampler2DShadow) 0:2145 'tvar81' ( smooth in 4-component vector of float) 0:2145 'tvar38' ( flat in 2-component vector of int) 0:2145 'tvar32' ( smooth in float) 0:2146 Sequence 0:2146 move second child to first child ( temp 4-component vector of float) 0:2146 'tvar102' ( temp 4-component vector of float) 0:2146 textureLodOffset ( global 4-component vector of float) 0:2146 'tvar22' ( uniform sampler1D) 0:2146 'tvar32' ( smooth in float) 0:2146 'tvar32' ( smooth in float) 0:2146 'tvar33' ( flat in int) 0:2147 Sequence 0:2147 move second child to first child ( temp 4-component vector of int) 0:2147 'tvar103' ( temp 4-component vector of int) 0:2147 textureLodOffset ( global 4-component vector of int) 0:2147 'tvar24' ( uniform isampler1D) 0:2147 'tvar32' ( smooth in float) 0:2147 'tvar32' ( smooth in float) 0:2147 'tvar33' ( flat in int) 0:2148 Sequence 0:2148 move second child to first child ( temp 4-component vector of uint) 0:2148 'tvar104' ( temp 4-component vector of uint) 0:2148 textureLodOffset ( global 4-component vector of uint) 0:2148 'tvar23' ( uniform usampler1D) 0:2148 'tvar32' ( smooth in float) 0:2148 'tvar32' ( smooth in float) 0:2148 'tvar33' ( flat in int) 0:2149 Sequence 0:2149 move second child to first child ( temp 4-component vector of float) 0:2149 'tvar105' ( temp 4-component vector of float) 0:2149 textureLodOffset ( global 4-component vector of float) 0:2149 'tvar11' ( uniform sampler2D) 0:2149 'tvar37' ( smooth in 2-component vector of float) 0:2149 'tvar32' ( smooth in float) 0:2149 'tvar38' ( flat in 2-component vector of int) 0:2150 Sequence 0:2150 move second child to first child ( temp 4-component vector of int) 0:2150 'tvar106' ( temp 4-component vector of int) 0:2150 textureLodOffset ( global 4-component vector of int) 0:2150 'tvar12' ( uniform isampler2D) 0:2150 'tvar37' ( smooth in 2-component vector of float) 0:2150 'tvar32' ( smooth in float) 0:2150 'tvar38' ( flat in 2-component vector of int) 0:2151 Sequence 0:2151 move second child to first child ( temp 4-component vector of uint) 0:2151 'tvar107' ( temp 4-component vector of uint) 0:2151 textureLodOffset ( global 4-component vector of uint) 0:2151 'tvar10' ( uniform usampler2D) 0:2151 'tvar37' ( smooth in 2-component vector of float) 0:2151 'tvar32' ( smooth in float) 0:2151 'tvar38' ( flat in 2-component vector of int) 0:2152 Sequence 0:2152 move second child to first child ( temp 4-component vector of float) 0:2152 'tvar108' ( temp 4-component vector of float) 0:2152 textureLodOffset ( global 4-component vector of float) 0:2152 'tvar20' ( uniform sampler3D) 0:2152 'tvar42' ( smooth in 3-component vector of float) 0:2152 'tvar32' ( smooth in float) 0:2152 'tvar43' ( flat in 3-component vector of int) 0:2153 Sequence 0:2153 move second child to first child ( temp 4-component vector of int) 0:2153 'tvar109' ( temp 4-component vector of int) 0:2153 textureLodOffset ( global 4-component vector of int) 0:2153 'tvar21' ( uniform isampler3D) 0:2153 'tvar42' ( smooth in 3-component vector of float) 0:2153 'tvar32' ( smooth in float) 0:2153 'tvar43' ( flat in 3-component vector of int) 0:2154 Sequence 0:2154 move second child to first child ( temp 4-component vector of uint) 0:2154 'tvar110' ( temp 4-component vector of uint) 0:2154 textureLodOffset ( global 4-component vector of uint) 0:2154 'tvar19' ( uniform usampler3D) 0:2154 'tvar42' ( smooth in 3-component vector of float) 0:2154 'tvar32' ( smooth in float) 0:2154 'tvar43' ( flat in 3-component vector of int) 0:2155 Sequence 0:2155 move second child to first child ( temp float) 0:2155 'tvar111' ( temp float) 0:2155 textureLodOffset ( global float) 0:2155 'tvar3' ( uniform sampler1DShadow) 0:2155 'tvar42' ( smooth in 3-component vector of float) 0:2155 'tvar32' ( smooth in float) 0:2155 'tvar33' ( flat in int) 0:2156 Sequence 0:2156 move second child to first child ( temp float) 0:2156 'tvar112' ( temp float) 0:2156 textureLodOffset ( global float) 0:2156 'tvar4' ( uniform sampler2DShadow) 0:2156 'tvar42' ( smooth in 3-component vector of float) 0:2156 'tvar32' ( smooth in float) 0:2156 'tvar38' ( flat in 2-component vector of int) 0:2157 Sequence 0:2157 move second child to first child ( temp 4-component vector of float) 0:2157 'tvar113' ( temp 4-component vector of float) 0:2157 textureLodOffset ( global 4-component vector of float) 0:2157 'tvar30' ( uniform sampler1DArray) 0:2157 'tvar37' ( smooth in 2-component vector of float) 0:2157 'tvar32' ( smooth in float) 0:2157 'tvar33' ( flat in int) 0:2158 Sequence 0:2158 move second child to first child ( temp 4-component vector of int) 0:2158 'tvar114' ( temp 4-component vector of int) 0:2158 textureLodOffset ( global 4-component vector of int) 0:2158 'tvar28' ( uniform isampler1DArray) 0:2158 'tvar37' ( smooth in 2-component vector of float) 0:2158 'tvar32' ( smooth in float) 0:2158 'tvar33' ( flat in int) 0:2159 Sequence 0:2159 move second child to first child ( temp 4-component vector of uint) 0:2159 'tvar115' ( temp 4-component vector of uint) 0:2159 textureLodOffset ( global 4-component vector of uint) 0:2159 'tvar29' ( uniform usampler1DArray) 0:2159 'tvar37' ( smooth in 2-component vector of float) 0:2159 'tvar32' ( smooth in float) 0:2159 'tvar33' ( flat in int) 0:2160 Sequence 0:2160 move second child to first child ( temp 4-component vector of float) 0:2160 'tvar116' ( temp 4-component vector of float) 0:2160 textureLodOffset ( global 4-component vector of float) 0:2160 'tvar9' ( uniform sampler2DArray) 0:2160 'tvar42' ( smooth in 3-component vector of float) 0:2160 'tvar32' ( smooth in float) 0:2160 'tvar38' ( flat in 2-component vector of int) 0:2161 Sequence 0:2161 move second child to first child ( temp 4-component vector of int) 0:2161 'tvar117' ( temp 4-component vector of int) 0:2161 textureLodOffset ( global 4-component vector of int) 0:2161 'tvar7' ( uniform isampler2DArray) 0:2161 'tvar42' ( smooth in 3-component vector of float) 0:2161 'tvar32' ( smooth in float) 0:2161 'tvar38' ( flat in 2-component vector of int) 0:2162 Sequence 0:2162 move second child to first child ( temp 4-component vector of uint) 0:2162 'tvar118' ( temp 4-component vector of uint) 0:2162 textureLodOffset ( global 4-component vector of uint) 0:2162 'tvar8' ( uniform usampler2DArray) 0:2162 'tvar42' ( smooth in 3-component vector of float) 0:2162 'tvar32' ( smooth in float) 0:2162 'tvar38' ( flat in 2-component vector of int) 0:2163 Sequence 0:2163 move second child to first child ( temp float) 0:2163 'tvar119' ( temp float) 0:2163 textureLodOffset ( global float) 0:2163 'tvar2' ( uniform sampler1DArrayShadow) 0:2163 'tvar42' ( smooth in 3-component vector of float) 0:2163 'tvar32' ( smooth in float) 0:2163 'tvar33' ( flat in int) 0:2164 Sequence 0:2164 move second child to first child ( temp 4-component vector of float) 0:2164 'tvar120' ( temp 4-component vector of float) 0:2164 textureProjLodOffset ( global 4-component vector of float) 0:2164 'tvar22' ( uniform sampler1D) 0:2164 'tvar37' ( smooth in 2-component vector of float) 0:2164 'tvar32' ( smooth in float) 0:2164 'tvar33' ( flat in int) 0:2165 Sequence 0:2165 move second child to first child ( temp 4-component vector of int) 0:2165 'tvar121' ( temp 4-component vector of int) 0:2165 textureProjLodOffset ( global 4-component vector of int) 0:2165 'tvar24' ( uniform isampler1D) 0:2165 'tvar37' ( smooth in 2-component vector of float) 0:2165 'tvar32' ( smooth in float) 0:2165 'tvar33' ( flat in int) 0:2166 Sequence 0:2166 move second child to first child ( temp 4-component vector of uint) 0:2166 'tvar122' ( temp 4-component vector of uint) 0:2166 textureProjLodOffset ( global 4-component vector of uint) 0:2166 'tvar23' ( uniform usampler1D) 0:2166 'tvar37' ( smooth in 2-component vector of float) 0:2166 'tvar32' ( smooth in float) 0:2166 'tvar33' ( flat in int) 0:2167 Sequence 0:2167 move second child to first child ( temp 4-component vector of float) 0:2167 'tvar123' ( temp 4-component vector of float) 0:2167 textureProjLodOffset ( global 4-component vector of float) 0:2167 'tvar22' ( uniform sampler1D) 0:2167 'tvar81' ( smooth in 4-component vector of float) 0:2167 'tvar32' ( smooth in float) 0:2167 'tvar33' ( flat in int) 0:2168 Sequence 0:2168 move second child to first child ( temp 4-component vector of int) 0:2168 'tvar124' ( temp 4-component vector of int) 0:2168 textureProjLodOffset ( global 4-component vector of int) 0:2168 'tvar24' ( uniform isampler1D) 0:2168 'tvar81' ( smooth in 4-component vector of float) 0:2168 'tvar32' ( smooth in float) 0:2168 'tvar33' ( flat in int) 0:2169 Sequence 0:2169 move second child to first child ( temp 4-component vector of uint) 0:2169 'tvar125' ( temp 4-component vector of uint) 0:2169 textureProjLodOffset ( global 4-component vector of uint) 0:2169 'tvar23' ( uniform usampler1D) 0:2169 'tvar81' ( smooth in 4-component vector of float) 0:2169 'tvar32' ( smooth in float) 0:2169 'tvar33' ( flat in int) 0:2170 Sequence 0:2170 move second child to first child ( temp 4-component vector of float) 0:2170 'tvar126' ( temp 4-component vector of float) 0:2170 textureProjLodOffset ( global 4-component vector of float) 0:2170 'tvar11' ( uniform sampler2D) 0:2170 'tvar42' ( smooth in 3-component vector of float) 0:2170 'tvar32' ( smooth in float) 0:2170 'tvar38' ( flat in 2-component vector of int) 0:2171 Sequence 0:2171 move second child to first child ( temp 4-component vector of int) 0:2171 'tvar127' ( temp 4-component vector of int) 0:2171 textureProjLodOffset ( global 4-component vector of int) 0:2171 'tvar12' ( uniform isampler2D) 0:2171 'tvar42' ( smooth in 3-component vector of float) 0:2171 'tvar32' ( smooth in float) 0:2171 'tvar38' ( flat in 2-component vector of int) 0:2172 Sequence 0:2172 move second child to first child ( temp 4-component vector of uint) 0:2172 'tvar128' ( temp 4-component vector of uint) 0:2172 textureProjLodOffset ( global 4-component vector of uint) 0:2172 'tvar10' ( uniform usampler2D) 0:2172 'tvar42' ( smooth in 3-component vector of float) 0:2172 'tvar32' ( smooth in float) 0:2172 'tvar38' ( flat in 2-component vector of int) 0:2173 Sequence 0:2173 move second child to first child ( temp 4-component vector of float) 0:2173 'tvar129' ( temp 4-component vector of float) 0:2173 textureProjLodOffset ( global 4-component vector of float) 0:2173 'tvar11' ( uniform sampler2D) 0:2173 'tvar81' ( smooth in 4-component vector of float) 0:2173 'tvar32' ( smooth in float) 0:2173 'tvar38' ( flat in 2-component vector of int) 0:2174 Sequence 0:2174 move second child to first child ( temp 4-component vector of int) 0:2174 'tvar130' ( temp 4-component vector of int) 0:2174 textureProjLodOffset ( global 4-component vector of int) 0:2174 'tvar12' ( uniform isampler2D) 0:2174 'tvar81' ( smooth in 4-component vector of float) 0:2174 'tvar32' ( smooth in float) 0:2174 'tvar38' ( flat in 2-component vector of int) 0:2175 Sequence 0:2175 move second child to first child ( temp 4-component vector of uint) 0:2175 'tvar131' ( temp 4-component vector of uint) 0:2175 textureProjLodOffset ( global 4-component vector of uint) 0:2175 'tvar10' ( uniform usampler2D) 0:2175 'tvar81' ( smooth in 4-component vector of float) 0:2175 'tvar32' ( smooth in float) 0:2175 'tvar38' ( flat in 2-component vector of int) 0:2176 Sequence 0:2176 move second child to first child ( temp 4-component vector of float) 0:2176 'tvar132' ( temp 4-component vector of float) 0:2176 textureProjLodOffset ( global 4-component vector of float) 0:2176 'tvar20' ( uniform sampler3D) 0:2176 'tvar81' ( smooth in 4-component vector of float) 0:2176 'tvar32' ( smooth in float) 0:2176 'tvar43' ( flat in 3-component vector of int) 0:2177 Sequence 0:2177 move second child to first child ( temp 4-component vector of int) 0:2177 'tvar133' ( temp 4-component vector of int) 0:2177 textureProjLodOffset ( global 4-component vector of int) 0:2177 'tvar21' ( uniform isampler3D) 0:2177 'tvar81' ( smooth in 4-component vector of float) 0:2177 'tvar32' ( smooth in float) 0:2177 'tvar43' ( flat in 3-component vector of int) 0:2178 Sequence 0:2178 move second child to first child ( temp 4-component vector of uint) 0:2178 'tvar134' ( temp 4-component vector of uint) 0:2178 textureProjLodOffset ( global 4-component vector of uint) 0:2178 'tvar19' ( uniform usampler3D) 0:2178 'tvar81' ( smooth in 4-component vector of float) 0:2178 'tvar32' ( smooth in float) 0:2178 'tvar43' ( flat in 3-component vector of int) 0:2179 Sequence 0:2179 move second child to first child ( temp float) 0:2179 'tvar135' ( temp float) 0:2179 textureProjLodOffset ( global float) 0:2179 'tvar3' ( uniform sampler1DShadow) 0:2179 'tvar81' ( smooth in 4-component vector of float) 0:2179 'tvar32' ( smooth in float) 0:2179 'tvar33' ( flat in int) 0:2180 Sequence 0:2180 move second child to first child ( temp float) 0:2180 'tvar136' ( temp float) 0:2180 textureProjLodOffset ( global float) 0:2180 'tvar4' ( uniform sampler2DShadow) 0:2180 'tvar81' ( smooth in 4-component vector of float) 0:2180 'tvar32' ( smooth in float) 0:2180 'tvar38' ( flat in 2-component vector of int) 0:? Linker Objects 0:? 'tex' ( uniform 10-element array of sampler2D) 0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform int i}) 0:? 'coord' ( global 2-component vector of float) 0:? 'var16' ( uniform sampler2DShadow) 0:? 'var17' ( uniform samplerCubeShadow) 0:? 'var18' ( uniform sampler2DArrayShadow) 0:? 'var19' ( uniform samplerCubeArrayShadow) 0:? 'var20' ( uniform sampler2DRectShadow) 0:? 'svar21' ( uniform samplerCubeArray) 0:? 'svar22' ( uniform usamplerCubeArray) 0:? 'svar23' ( uniform isamplerCubeArray) 0:? 'svar24' ( uniform sampler2D) 0:? 'svar25' ( uniform usampler2D) 0:? 'svar26' ( uniform isampler2D) 0:? 'svar27' ( uniform sampler2DRect) 0:? 'svar28' ( uniform usampler2DRect) 0:? 'svar29' ( uniform isampler2DRect) 0:? 'svar30' ( uniform samplerCube) 0:? 'svar31' ( uniform usamplerCube) 0:? 'svar32' ( uniform isamplerCube) 0:? 'svar33' ( uniform sampler2DArray) 0:? 'svar34' ( uniform usampler2DArray) 0:? 'svar35' ( uniform isampler2DArray) 0:? 'fvar0' ( smooth in float) 0:? 'fvar1' ( smooth in 2-component vector of float) 0:? 'fvar2' ( smooth in 3-component vector of float) 0:? 'fvar3' ( smooth in 4-component vector of float) 0:? 'Offsets' ( flat in 4-element array of 2-component vector of int) 0:? 'var1_in' ( flat in int8_t) 0:? 'var5_in' ( flat in int16_t) 0:? 'var9_in' ( flat in int) 0:? 'var13_in' ( flat in int64_t) 0:? 'var33_in' ( flat in float16_t) 0:? 'var41_in' ( flat in double) 0:? 'var42_in' ( flat in double) 0:? 'var11_out' ( out int8_t) 0:? 'var51_out' ( out int16_t) 0:? 'var91_out' ( out int) 0:? 'var331_out' ( out float16_t) 0:? 'var' ( flat in int) 0:? 'tvar0' ( uniform sampler2DRectShadow) 0:? 'tvar1' ( uniform samplerCubeShadow) 0:? 'tvar2' ( uniform sampler1DArrayShadow) 0:? 'tvar3' ( uniform sampler1DShadow) 0:? 'tvar4' ( uniform sampler2DShadow) 0:? 'tvar5' ( uniform sampler2DArrayShadow) 0:? 'tvar6' ( uniform samplerCubeArrayShadow) 0:? 'tvar7' ( uniform isampler2DArray) 0:? 'tvar8' ( uniform usampler2DArray) 0:? 'tvar9' ( uniform sampler2DArray) 0:? 'tvar10' ( uniform usampler2D) 0:? 'tvar11' ( uniform sampler2D) 0:? 'tvar12' ( uniform isampler2D) 0:? 'tvar13' ( uniform isampler2DRect) 0:? 'tvar14' ( uniform sampler2DRect) 0:? 'tvar15' ( uniform usampler2DRect) 0:? 'tvar16' ( uniform usamplerCubeArray) 0:? 'tvar17' ( uniform isamplerCubeArray) 0:? 'tvar18' ( uniform samplerCubeArray) 0:? 'tvar19' ( uniform usampler3D) 0:? 'tvar20' ( uniform sampler3D) 0:? 'tvar21' ( uniform isampler3D) 0:? 'tvar22' ( uniform sampler1D) 0:? 'tvar23' ( uniform usampler1D) 0:? 'tvar24' ( uniform isampler1D) 0:? 'tvar25' ( uniform isamplerCube) 0:? 'tvar26' ( uniform samplerCube) 0:? 'tvar27' ( uniform usamplerCube) 0:? 'tvar28' ( uniform isampler1DArray) 0:? 'tvar29' ( uniform usampler1DArray) 0:? 'tvar30' ( uniform sampler1DArray) 0:? 'tvar32' ( smooth in float) 0:? 'tvar33' ( flat in int) 0:? 'tvar37' ( smooth in 2-component vector of float) 0:? 'tvar38' ( flat in 2-component vector of int) 0:? 'tvar42' ( smooth in 3-component vector of float) 0:? 'tvar43' ( flat in 3-component vector of int) 0:? 'tvar81' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/glsl.nvgpushader5.geom.out000066400000000000000000000076141506534232700235110ustar00rootroot00000000000000glsl.nvgpushader5.geom ERROR: 0:50: 'gl_PatchVerticesIn' : undeclared identifier ERROR: 0:50: '=' : cannot convert from ' temp float' to ' temp int' ERROR: 0:51: 'gl_TessLevelOuter' : undeclared identifier ERROR: 0:51: 'gl_TessLevelOuter' : left of '[' is not of type array, matrix, or vector ERROR: 0:52: 'gl_TessLevelInner' : undeclared identifier ERROR: 0:52: 'gl_TessLevelInner' : left of '[' is not of type array, matrix, or vector ERROR: 6 compilation errors. No code generated. Shader version: 150 Requested GL_ARB_gpu_shader_fp64 Requested GL_NV_gpu_shader5 invocations = 6 max_vertices = -1 input primitive = triangles output primitive = points ERROR: node is still EOpNull! 0:38 Function Definition: testGeomBuiltins( ( global void) 0:38 Function Parameters: 0:40 Sequence 0:40 EmitStreamVertex ( global void) 0:40 Constant: 0:40 1 (const int) 0:41 EndStreamPrimitive ( global void) 0:41 Constant: 0:41 0 (const int) 0:43 EmitVertex ( global void) 0:44 EndPrimitive ( global void) 0:46 Sequence 0:46 move second child to first child ( temp int) 0:46 'i' ( temp int) 0:46 'gl_InvocationID' ( in int InvocationID) 0:51 Sequence 0:51 move second child to first child ( temp float) 0:51 'k' ( temp float) 0:51 Constant: 0:51 0.000000 0:52 move second child to first child ( temp float) 0:52 'k' ( temp float) 0:52 Constant: 0:52 0.000000 0:55 Function Definition: main( ( global void) 0:55 Function Parameters: 0:? Linker Objects 0:? 'colorSampIn' ( sample in 3-element array of 4-component vector of float) 0:? 'colorSampOut' (layout( stream=0) sample out 4-component vector of float) 0:? 'color' ( in 3-element array of 4-component vector of float) 0:? 'Ocolor' (layout( stream=0) out 3-component vector of float) 0:? 'var1' ( in 3-element array of int8_t) 0:? 'var5' ( in 3-element array of int16_t) 0:? 'var9' ( in 3-element array of int) 0:? 'var13' ( in 3-element array of int64_t) 0:? 'var33' ( in 3-element array of float16_t) 0:? 'var41' ( in 3-element array of double) 0:? 'var42' ( in 3-element array of double) 0:? 'var11' (layout( stream=1) out int8_t) 0:? 'var51' (layout( stream=1) out int16_t) 0:? 'var91' (layout( stream=1) out int) 0:? 'var131' (layout( stream=1) out int64_t) 0:? 'var331' (layout( stream=1) out float16_t) 0:? 'var411' (layout( stream=1) out double) 0:? 'var421' (layout( stream=1) out double) Linked geometry stage: ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value) Shader version: 150 Requested GL_ARB_gpu_shader_fp64 Requested GL_NV_gpu_shader5 invocations = 6 max_vertices = -1 input primitive = triangles output primitive = points ERROR: node is still EOpNull! 0:55 Function Definition: main( ( global void) 0:55 Function Parameters: 0:? Linker Objects 0:? 'colorSampIn' ( sample in 3-element array of 4-component vector of float) 0:? 'colorSampOut' (layout( stream=0) sample out 4-component vector of float) 0:? 'color' ( in 3-element array of 4-component vector of float) 0:? 'Ocolor' (layout( stream=0) out 3-component vector of float) 0:? 'var1' ( in 3-element array of int8_t) 0:? 'var5' ( in 3-element array of int16_t) 0:? 'var9' ( in 3-element array of int) 0:? 'var13' ( in 3-element array of int64_t) 0:? 'var33' ( in 3-element array of float16_t) 0:? 'var41' ( in 3-element array of double) 0:? 'var42' ( in 3-element array of double) 0:? 'var11' (layout( stream=1) out int8_t) 0:? 'var51' (layout( stream=1) out int16_t) 0:? 'var91' (layout( stream=1) out int) 0:? 'var131' (layout( stream=1) out int64_t) 0:? 'var331' (layout( stream=1) out float16_t) 0:? 'var411' (layout( stream=1) out double) 0:? 'var421' (layout( stream=1) out double) glslang-16.0.0/Test/baseResults/glsl.nvgpushader5.vert.out000066400000000000000000000034551506534232700235410ustar00rootroot00000000000000glsl.nvgpushader5.vert Shader version: 150 Requested GL_ARB_gpu_shader_fp64 Requested GL_NV_gpu_shader5 0:? Sequence 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:? Linker Objects 0:? 'colorSampIn' ( in 4-component vector of float) 0:? 'colorSampOut' ( smooth sample out 4-component vector of float) 0:? 'var1' ( in int8_t) 0:? 'var5' ( in int16_t) 0:? 'var9' ( in int) 0:? 'var13' ( in int64_t) 0:? 'var33' ( in float16_t) 0:? 'var41' ( in double) 0:? 'var42' ( in double) 0:? 'var11' ( smooth out int8_t) 0:? 'var51' ( smooth out int16_t) 0:? 'var91' ( smooth out int) 0:? 'var131' ( smooth out int64_t) 0:? 'var331' ( smooth out float16_t) 0:? 'var411' ( smooth out double) 0:? 'var421' ( smooth out double) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 150 Requested GL_ARB_gpu_shader_fp64 Requested GL_NV_gpu_shader5 0:? Sequence 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:? Linker Objects 0:? 'colorSampIn' ( in 4-component vector of float) 0:? 'colorSampOut' ( smooth sample out 4-component vector of float) 0:? 'var1' ( in int8_t) 0:? 'var5' ( in int16_t) 0:? 'var9' ( in int) 0:? 'var13' ( in int64_t) 0:? 'var33' ( in float16_t) 0:? 'var41' ( in double) 0:? 'var42' ( in double) 0:? 'var11' ( smooth out int8_t) 0:? 'var51' ( smooth out int16_t) 0:? 'var91' ( smooth out int) 0:? 'var131' ( smooth out int64_t) 0:? 'var331' ( smooth out float16_t) 0:? 'var411' ( smooth out double) 0:? 'var421' ( smooth out double) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/glsl.versionOverride.comp.out000066400000000000000000000000321506534232700242550ustar00rootroot00000000000000glsl.versionOverride.comp glslang-16.0.0/Test/baseResults/glsl.versionOverride.frag.out000066400000000000000000000000321506534232700242360ustar00rootroot00000000000000glsl.versionOverride.frag glslang-16.0.0/Test/baseResults/glsl.versionOverride.geom.out000066400000000000000000000000321506534232700242460ustar00rootroot00000000000000glsl.versionOverride.geom glslang-16.0.0/Test/baseResults/glsl.versionOverride.tesc.out000066400000000000000000000000321506534232700242550ustar00rootroot00000000000000glsl.versionOverride.tesc glslang-16.0.0/Test/baseResults/glsl.versionOverride.tese.out000066400000000000000000000000321506534232700242570ustar00rootroot00000000000000glsl.versionOverride.tese glslang-16.0.0/Test/baseResults/glsl.versionOverride.vert.out000066400000000000000000000000321506534232700242770ustar00rootroot00000000000000glsl.versionOverride.vert glslang-16.0.0/Test/baseResults/glspv.esversion.vert.out000066400000000000000000000021301506534232700233220ustar00rootroot00000000000000glspv.esversion.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 10 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 8 9 Source ESSL 310 Name 4 "main" Name 8 "gl_VertexID" Name 9 "gl_InstanceID" Decorate 8(gl_VertexID) BuiltIn VertexId Decorate 9(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Input 6(int) 8(gl_VertexID): 7(ptr) Variable Input 9(gl_InstanceID): 7(ptr) Variable Input 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/glspv.frag.out000066400000000000000000000014071506534232700212530ustar00rootroot00000000000000glspv.frag ERROR: 0:4: '#error' : GL_SPIRV is set ( correct , not an error ) ERROR: 0:6: '#error' : GL_SPIR is 100 ERROR: 0:14: 'f' : non-opaque uniform variables need a layout(location=L) ERROR: 0:21: 'noise1' : no matching overloaded function found ERROR: 0:22: 'noise2' : no matching overloaded function found ERROR: 0:23: 'noise3' : no matching overloaded function found ERROR: 0:24: 'noise4' : no matching overloaded function found ERROR: 0:27: 'atomic_uint' : layout(binding=X) is required ERROR: 0:28: 'input_attachment_index' : only allowed when using GLSL for Vulkan ERROR: 0:28: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 10 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/glspv.version.frag.out000066400000000000000000000014551506534232700227420ustar00rootroot00000000000000glspv.version.frag ERROR: #version: compilation for SPIR-V does not support the compatibility profile // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 6 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginLowerLeft Source GLSL 330 Name 4 "main" 2: TypeVoid 3: TypeFunction 2 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/glspv.version.vert.out000066400000000000000000000003121506534232700227720ustar00rootroot00000000000000glspv.version.vert ERROR: #version: Desktop shaders for OpenGL SPIR-V require version 330 or higher ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/glspv.vert.out000066400000000000000000000014161506534232700213140ustar00rootroot00000000000000glspv.vert ERROR: 0:3: 'push_constant' : only allowed when using GLSL for Vulkan ERROR: 0:6: 'descriptor set' : only allowed when using GLSL for Vulkan ERROR: 0:8: 'shared' : not allowed when generating SPIR-V ERROR: 0:8: 'binding' : uniform/buffer blocks require layout(binding=X) ERROR: 0:9: 'packed' : not allowed when generating SPIR-V ERROR: 0:9: 'binding' : uniform/buffer blocks require layout(binding=X) ERROR: 0:13: 'gl_VertexIndex' : undeclared identifier ERROR: 0:14: 'gl_InstanceIndex' : undeclared identifier ERROR: 0:17: 'gl_DepthRangeParameters' : undeclared identifier ERROR: 0:20: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 10 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.-D-U.frag.out000066400000000000000000000043331506534232700215240ustar00rootroot00000000000000hlsl.-D-U.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'color' ( global 4-component vector of float) 0:9 Constant: 0:9 1.000000 0:9 1.000000 0:9 1.000000 0:9 1.000000 0:15 subtract second child into first child ( temp 4-component vector of float) 0:15 'color' ( global 4-component vector of float) 0:15 Constant: 0:15 5.000000 0:21 Post-Increment ( temp 4-component vector of float) 0:21 'color' ( global 4-component vector of float) 0:29 vector scale second child into first child ( temp 4-component vector of float) 0:29 'color' ( global 4-component vector of float) 0:29 Constant: 0:29 3.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'color' ( global 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'color' ( global 4-component vector of float) 0:9 Constant: 0:9 1.000000 0:9 1.000000 0:9 1.000000 0:9 1.000000 0:15 subtract second child into first child ( temp 4-component vector of float) 0:15 'color' ( global 4-component vector of float) 0:15 Constant: 0:15 5.000000 0:21 Post-Increment ( temp 4-component vector of float) 0:21 'color' ( global 4-component vector of float) 0:29 vector scale second child into first child ( temp 4-component vector of float) 0:29 'color' ( global 4-component vector of float) 0:29 Constant: 0:29 3.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'color' ( global 4-component vector of float) glslang-16.0.0/Test/baseResults/hlsl.PointSize.geom.out000066400000000000000000000137661506534232700230300ustar00rootroot00000000000000hlsl.PointSize.geom Shader version: 500 invocations = -1 max_vertices = 4 input primitive = triangles output primitive = line_strip 0:? Sequence 0:8 Function Definition: @main(u1[3];struct-S-f11; ( temp void) 0:8 Function Parameters: 0:8 'ps' ( in 3-element array of uint) 0:8 'OutputStream' ( out structure{ temp float ps}) 0:? Sequence 0:10 Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:? 'OutputStream.ps' ( out float PointSize) 0:10 ps: direct index for structure ( temp float) 0:10 's' ( temp structure{ temp float ps}) 0:10 Constant: 0:10 0 (const int) 0:10 EmitVertex ( temp void) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 3-element array of uint) 0:? 'ps' ( temp 3-element array of uint) 0:? 'ps' ( in 3-element array of uint PointSize) 0:8 Function Call: @main(u1[3];struct-S-f11; ( temp void) 0:? 'ps' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp float ps}) 0:? Linker Objects 0:? 'ps' ( in 3-element array of uint PointSize) 0:? 'OutputStream.ps' ( out float PointSize) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 4 input primitive = triangles output primitive = line_strip 0:? Sequence 0:8 Function Definition: @main(u1[3];struct-S-f11; ( temp void) 0:8 Function Parameters: 0:8 'ps' ( in 3-element array of uint) 0:8 'OutputStream' ( out structure{ temp float ps}) 0:? Sequence 0:10 Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:? 'OutputStream.ps' ( out float PointSize) 0:10 ps: direct index for structure ( temp float) 0:10 's' ( temp structure{ temp float ps}) 0:10 Constant: 0:10 0 (const int) 0:10 EmitVertex ( temp void) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 3-element array of uint) 0:? 'ps' ( temp 3-element array of uint) 0:? 'ps' ( in 3-element array of uint PointSize) 0:8 Function Call: @main(u1[3];struct-S-f11; ( temp void) 0:? 'ps' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp float ps}) 0:? Linker Objects 0:? 'ps' ( in 3-element array of uint PointSize) 0:? 'OutputStream.ps' ( out float PointSize) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 36 Capability Geometry Capability GeometryPointSize 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 19 28 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 4 Source HLSL 500 Name 4 "main" Name 11 "S" MemberName 11(S) 0 "ps" Name 16 "@main(u1[3];struct-S-f11;" Name 14 "ps" Name 15 "OutputStream" Name 19 "OutputStream.ps" Name 20 "s" Name 26 "ps" Name 28 "ps" Name 30 "OutputStream" Name 31 "param" Name 33 "param" Decorate 19(OutputStream.ps) BuiltIn PointSize Decorate 28(ps) BuiltIn PointSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 3 8: TypeArray 6(int) 7 9: TypePointer Function 8 10: TypeFloat 32 11(S): TypeStruct 10(float) 12: TypePointer Function 11(S) 13: TypeFunction 2 9(ptr) 12(ptr) 18: TypePointer Output 10(float) 19(OutputStream.ps): 18(ptr) Variable Output 21: TypeInt 32 1 22: 21(int) Constant 0 23: TypePointer Function 10(float) 27: TypePointer Input 8 28(ps): 27(ptr) Variable Input 4(main): 2 Function None 3 5: Label 26(ps): 9(ptr) Variable Function 30(OutputStream): 12(ptr) Variable Function 31(param): 9(ptr) Variable Function 33(param): 12(ptr) Variable Function 29: 8 Load 28(ps) Store 26(ps) 29 32: 8 Load 26(ps) Store 31(param) 32 34: 2 FunctionCall 16(@main(u1[3];struct-S-f11;) 31(param) 33(param) 35: 11(S) Load 33(param) Store 30(OutputStream) 35 Return FunctionEnd 16(@main(u1[3];struct-S-f11;): 2 Function None 13 14(ps): 9(ptr) FunctionParameter 15(OutputStream): 12(ptr) FunctionParameter 17: Label 20(s): 12(ptr) Variable Function 24: 23(ptr) AccessChain 20(s) 22 25: 10(float) Load 24 Store 19(OutputStream.ps) 25 EmitVertex Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.PointSize.vert.out000066400000000000000000000046561506534232700230570ustar00rootroot00000000000000hlsl.PointSize.vert Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp float) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 2.300000 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? '@entryPointOutput' ( out float PointSize) 0:2 Function Call: @main( ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' ( out float PointSize) Linked vertex stage: Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp float) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 2.300000 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? '@entryPointOutput' ( out float PointSize) 0:2 Function Call: @main( ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' ( out float PointSize) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 14 Source HLSL 500 Name 4 "main" Name 8 "@main(" Name 14 "@entryPointOutput" Decorate 14(@entryPointOutput) BuiltIn PointSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: 6(float) Constant 1075000115 13: TypePointer Output 6(float) 14(@entryPointOutput): 13(ptr) Variable Output 4(main): 2 Function None 3 5: Label 15: 6(float) FunctionCall 8(@main() Store 14(@entryPointOutput) 15 Return FunctionEnd 8(@main(): 6(float) Function None 7 9: Label ReturnValue 10 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.aliasOpaque.frag.out000066400000000000000000000270441506534232700233320ustar00rootroot00000000000000hlsl.aliasOpaque.frag WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: osCall(struct-OS-p1-f1-t211; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 's' ( in structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:? Sequence 0:13 Branch: Return with expression 0:13 vector-scale ( temp 4-component vector of float) 0:13 a: direct index for structure ( temp float) 0:13 's' ( in structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:13 Constant: 0:13 1 (const int) 0:13 texture ( temp 4-component vector of float) 0:13 Construct combined texture-sampler ( temp sampler2D) 0:13 tex: direct index for structure ( temp texture2D) 0:13 's' ( in structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:13 Constant: 0:13 2 (const int) 0:13 ss: direct index for structure ( temp sampler) 0:13 's' ( in structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.200000 0:13 0.300000 0:17 Function Definition: @main( ( temp 4-component vector of float) 0:17 Function Parameters: 0:? Sequence 0:19 move second child to first child ( temp sampler) 0:19 ss: direct index for structure ( temp sampler) 0:19 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:19 Constant: 0:19 0 (const int) 0:19 'gss2' ( uniform sampler) 0:20 move second child to first child ( temp sampler) 0:20 ss: direct index for structure ( temp sampler) 0:20 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:20 Constant: 0:20 0 (const int) 0:20 'gss' ( uniform sampler) 0:21 move second child to first child ( temp texture2D) 0:21 tex: direct index for structure ( temp texture2D) 0:21 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:21 Constant: 0:21 2 (const int) 0:21 'gtex' ( uniform texture2D) 0:22 move second child to first child ( temp float) 0:22 a: direct index for structure ( temp float) 0:22 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 3.000000 0:28 Branch: Return with expression 0:28 Function Call: osCall(struct-OS-p1-f1-t211; ( temp 4-component vector of float) 0:28 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:17 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'gss' ( uniform sampler) 0:? 'gss2' ( uniform sampler) 0:? 'gtex' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: osCall(struct-OS-p1-f1-t211; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 's' ( in structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:? Sequence 0:13 Branch: Return with expression 0:13 vector-scale ( temp 4-component vector of float) 0:13 a: direct index for structure ( temp float) 0:13 's' ( in structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:13 Constant: 0:13 1 (const int) 0:13 texture ( temp 4-component vector of float) 0:13 Construct combined texture-sampler ( temp sampler2D) 0:13 tex: direct index for structure ( temp texture2D) 0:13 's' ( in structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:13 Constant: 0:13 2 (const int) 0:13 ss: direct index for structure ( temp sampler) 0:13 's' ( in structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.200000 0:13 0.300000 0:17 Function Definition: @main( ( temp 4-component vector of float) 0:17 Function Parameters: 0:? Sequence 0:19 move second child to first child ( temp sampler) 0:19 ss: direct index for structure ( temp sampler) 0:19 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:19 Constant: 0:19 0 (const int) 0:19 'gss2' ( uniform sampler) 0:20 move second child to first child ( temp sampler) 0:20 ss: direct index for structure ( temp sampler) 0:20 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:20 Constant: 0:20 0 (const int) 0:20 'gss' ( uniform sampler) 0:21 move second child to first child ( temp texture2D) 0:21 tex: direct index for structure ( temp texture2D) 0:21 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:21 Constant: 0:21 2 (const int) 0:21 'gtex' ( uniform texture2D) 0:22 move second child to first child ( temp float) 0:22 a: direct index for structure ( temp float) 0:22 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 3.000000 0:28 Branch: Return with expression 0:28 Function Call: osCall(struct-OS-p1-f1-t211; ( temp 4-component vector of float) 0:28 'os' ( temp structure{ temp sampler ss, temp float a, temp texture2D tex}) 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:17 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'gss' ( uniform sampler) 0:? 'gss2' ( uniform sampler) 0:? 'gtex' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 62 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "OS" MemberName 9(OS) 0 "ss" MemberName 9(OS) 1 "a" MemberName 9(OS) 2 "tex" Name 14 "osCall(struct-OS-p1-f1-t211;" Name 13 "s" Name 17 "@main(" Name 42 "os" Name 44 "gss2" Name 47 "gss" Name 51 "gtex" Name 56 "param" Name 62 "@entryPointOutput" Decorate 44(gss2) Binding 1 Decorate 44(gss2) DescriptorSet 0 Decorate 47(gss) Binding 0 Decorate 47(gss) DescriptorSet 0 Decorate 51(gtex) Binding 2 Decorate 51(gtex) DescriptorSet 0 Decorate 62(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeSampler 7: TypeFloat 32 8: TypeImage 7(float) 2D sampled format:Unknown 9(OS): TypeStruct 6 7(float) 8 10: TypePointer Function 9(OS) 11: TypeVector 7(float) 4 12: TypeFunction 11(fvec4) 10(ptr) 16: TypeFunction 11(fvec4) 19: TypeInt 32 1 20: 19(int) Constant 1 21: TypePointer Function 7(float) 24: 19(int) Constant 2 25: TypePointer Function 8 28: 19(int) Constant 0 29: TypePointer Function 6 32: TypeSampledImage 8 34: TypeVector 7(float) 2 35: 7(float) Constant 1045220557 36: 7(float) Constant 1050253722 37: 34(fvec2) ConstantComposite 35 36 43: TypePointer UniformConstant 6 44(gss2): 43(ptr) Variable UniformConstant 47(gss): 43(ptr) Variable UniformConstant 50: TypePointer UniformConstant 8 51(gtex): 50(ptr) Variable UniformConstant 54: 7(float) Constant 1077936128 61: TypePointer Output 11(fvec4) 62(@entryPointOutput): 61(ptr) Variable Output 4(main): 2 Function None 3 5: Label 63: 11(fvec4) FunctionCall 17(@main() Store 62(@entryPointOutput) 63 Return FunctionEnd 14(osCall(struct-OS-p1-f1-t211;): 11(fvec4) Function None 12 13(s): 10(ptr) FunctionParameter 15: Label 22: 21(ptr) AccessChain 13(s) 20 23: 7(float) Load 22 26: 25(ptr) AccessChain 13(s) 24 27: 8 Load 26 30: 29(ptr) AccessChain 13(s) 28 31: 6 Load 30 33: 32 SampledImage 27 31 38: 11(fvec4) ImageSampleImplicitLod 33 37 39: 11(fvec4) VectorTimesScalar 38 23 ReturnValue 39 FunctionEnd 17(@main(): 11(fvec4) Function None 16 18: Label 42(os): 10(ptr) Variable Function 56(param): 10(ptr) Variable Function 45: 6 Load 44(gss2) 46: 29(ptr) AccessChain 42(os) 28 Store 46 45 48: 6 Load 47(gss) 49: 29(ptr) AccessChain 42(os) 28 Store 49 48 52: 8 Load 51(gtex) 53: 25(ptr) AccessChain 42(os) 24 Store 53 52 55: 21(ptr) AccessChain 42(os) 20 Store 55 54 57: 9(OS) Load 42(os) Store 56(param) 57 58: 11(fvec4) FunctionCall 14(osCall(struct-OS-p1-f1-t211;) 56(param) ReturnValue 58 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.amend.frag.out000066400000000000000000000331711506534232700221500ustar00rootroot00000000000000hlsl.amend.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:3 'm' ( global 4-component vector of float) 0:3 vector-scale ( temp 4-component vector of float) 0:3 a: direct index for structure ( uniform 4-component vector of float) 0:3 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:3 Constant: 0:3 0 (const uint) 0:3 b: direct index for structure ( uniform float) 0:3 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:3 Constant: 0:3 1 (const uint) 0:5 Function Definition: @f1( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:6 vector-scale ( temp 4-component vector of float) 0:6 a: direct index for structure ( uniform 4-component vector of float) 0:6 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:6 Constant: 0:6 0 (const uint) 0:6 b: direct index for structure ( uniform float) 0:6 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:6 Constant: 0:6 1 (const uint) 0:5 Function Definition: f1( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 Function Call: @f1( ( temp void) 0:12 Function Definition: f2( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:13 add ( temp float) 0:13 add ( temp float) 0:13 direct index ( temp float) 0:13 a: direct index for structure ( uniform 4-component vector of float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:13 Constant: 0:13 0 (const uint) 0:13 Constant: 0:13 0 (const int) 0:13 b: direct index for structure ( uniform float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:13 Constant: 0:13 1 (const uint) 0:13 direct index ( temp float) 0:13 c: direct index for structure ( uniform 3-component vector of float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:13 Constant: 0:13 2 (const uint) 0:13 Constant: 0:13 0 (const int) 0:17 Function Definition: f3( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:18 c: direct index for structure ( uniform 3-component vector of float) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:18 Constant: 0:18 2 (const uint) 0:24 Function Definition: f4( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:25 vector-scale ( temp 4-component vector of float) 0:25 Convert int to float ( temp float) 0:25 d: direct index for structure ( uniform int) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:25 Constant: 0:25 3 (const uint) 0:25 a: direct index for structure ( uniform 4-component vector of float) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:25 Constant: 0:25 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:? 'm' ( global 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:3 'm' ( global 4-component vector of float) 0:3 vector-scale ( temp 4-component vector of float) 0:3 a: direct index for structure ( uniform 4-component vector of float) 0:3 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:3 Constant: 0:3 0 (const uint) 0:3 b: direct index for structure ( uniform float) 0:3 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:3 Constant: 0:3 1 (const uint) 0:5 Function Definition: @f1( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:6 vector-scale ( temp 4-component vector of float) 0:6 a: direct index for structure ( uniform 4-component vector of float) 0:6 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:6 Constant: 0:6 0 (const uint) 0:6 b: direct index for structure ( uniform float) 0:6 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:6 Constant: 0:6 1 (const uint) 0:5 Function Definition: f1( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 Function Call: @f1( ( temp void) 0:12 Function Definition: f2( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:13 add ( temp float) 0:13 add ( temp float) 0:13 direct index ( temp float) 0:13 a: direct index for structure ( uniform 4-component vector of float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:13 Constant: 0:13 0 (const uint) 0:13 Constant: 0:13 0 (const int) 0:13 b: direct index for structure ( uniform float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:13 Constant: 0:13 1 (const uint) 0:13 direct index ( temp float) 0:13 c: direct index for structure ( uniform 3-component vector of float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:13 Constant: 0:13 2 (const uint) 0:13 Constant: 0:13 0 (const int) 0:17 Function Definition: f3( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:18 c: direct index for structure ( uniform 3-component vector of float) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:18 Constant: 0:18 2 (const uint) 0:24 Function Definition: f4( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:25 vector-scale ( temp 4-component vector of float) 0:25 Convert int to float ( temp float) 0:25 d: direct index for structure ( uniform int) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:25 Constant: 0:25 3 (const uint) 0:25 a: direct index for structure ( uniform 4-component vector of float) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:25 Constant: 0:25 0 (const uint) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float a, uniform float b, uniform 3-component vector of float c, uniform int d, uniform int e}) 0:? 'm' ( global 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "f1" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "f1" Name 6 "@f1(" Name 8 "f2(" Name 10 "f3(" Name 12 "f4(" Name 17 "m" Name 20 "$Global" MemberName 20($Global) 0 "a" MemberName 20($Global) 1 "b" MemberName 20($Global) 2 "c" MemberName 20($Global) 3 "d" MemberName 20($Global) 4 "e" Name 22 "" Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 16 MemberDecorate 20($Global) 2 Offset 32 MemberDecorate 20($Global) 3 Offset 44 MemberDecorate 20($Global) 4 Offset 48 Decorate 22 Binding 0 Decorate 22 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 14: TypeFloat 32 15: TypeVector 14(float) 4 16: TypePointer Private 15(fvec4) 17(m): 16(ptr) Variable Private 18: TypeVector 14(float) 3 19: TypeInt 32 1 20($Global): TypeStruct 15(fvec4) 14(float) 18(fvec3) 19(int) 19(int) 21: TypePointer Uniform 20($Global) 22: 21(ptr) Variable Uniform 23: 19(int) Constant 0 24: TypePointer Uniform 15(fvec4) 27: 19(int) Constant 1 28: TypePointer Uniform 14(float) 38: TypeInt 32 0 39: 38(int) Constant 0 45: 19(int) Constant 2 49: 19(int) Constant 3 50: TypePointer Uniform 19(int) 4(f1): 2 Function None 3 5: Label 25: 24(ptr) AccessChain 22 23 26: 15(fvec4) Load 25 29: 28(ptr) AccessChain 22 27 30: 14(float) Load 29 31: 15(fvec4) VectorTimesScalar 26 30 Store 17(m) 31 37: 2 FunctionCall 6(@f1() Return FunctionEnd 6(@f1(): 2 Function None 3 7: Label 32: 24(ptr) AccessChain 22 23 33: 15(fvec4) Load 32 34: 28(ptr) AccessChain 22 27 35: 14(float) Load 34 36: 15(fvec4) VectorTimesScalar 33 35 Return FunctionEnd 8(f2(): 2 Function None 3 9: Label 40: 28(ptr) AccessChain 22 23 39 41: 14(float) Load 40 42: 28(ptr) AccessChain 22 27 43: 14(float) Load 42 44: 14(float) FAdd 41 43 46: 28(ptr) AccessChain 22 45 39 47: 14(float) Load 46 48: 14(float) FAdd 44 47 Return FunctionEnd 10(f3(): 2 Function None 3 11: Label Return FunctionEnd 12(f4(): 2 Function None 3 13: Label 51: 50(ptr) AccessChain 22 49 52: 19(int) Load 51 53: 14(float) ConvertSToF 52 54: 24(ptr) AccessChain 22 23 55: 15(fvec4) Load 54 56: 15(fvec4) VectorTimesScalar 55 53 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.array.flatten.frag.out000066400000000000000000000745431506534232700236460ustar00rootroot00000000000000hlsl.array.flatten.frag WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:17 Function Definition: TestFn1( ( temp 4-component vector of float) 0:17 Function Parameters: 0:? Sequence 0:18 Branch: Return with expression 0:18 texture ( temp 4-component vector of float) 0:18 Construct combined texture-sampler ( temp sampler1D) 0:? 'g_tex[1]' ( uniform texture1D) 0:? 'g_samp[1]' ( uniform sampler) 0:18 Constant: 0:18 0.200000 0:22 Function Definition: TestFn2(t11[3];p1[3]; ( temp 4-component vector of float) 0:22 Function Parameters: 0:22 'l_tex' ( in 3-element array of texture1D) 0:22 'l_samp' ( in 3-element array of sampler) 0:? Sequence 0:23 Branch: Return with expression 0:23 texture ( temp 4-component vector of float) 0:23 Construct combined texture-sampler ( temp sampler1D) 0:23 direct index ( temp texture1D) 0:23 'l_tex' ( in 3-element array of texture1D) 0:23 Constant: 0:23 2 (const int) 0:23 direct index ( temp sampler) 0:23 'l_samp' ( in 3-element array of sampler) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0.200000 0:26 Sequence 0:26 move second child to first child ( temp 5-element array of int) 0:26 'not_flattened_a' ( global 5-element array of int) 0:26 Constant: 0:26 1 (const int) 0:26 2 (const int) 0:26 3 (const int) 0:26 4 (const int) 0:26 5 (const int) 0:31 Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void) 0:31 Function Parameters: 0:31 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:? Sequence 0:33 Sequence 0:33 Sequence 0:33 move second child to first child ( temp sampler) 0:33 direct index ( temp sampler) 0:33 'local_sampler_array' ( temp 3-element array of sampler) 0:33 Constant: 0:33 0 (const int) 0:? 'g_samp[0]' ( uniform sampler) 0:33 move second child to first child ( temp sampler) 0:33 direct index ( temp sampler) 0:33 'local_sampler_array' ( temp 3-element array of sampler) 0:33 Constant: 0:33 1 (const int) 0:? 'g_samp[1]' ( uniform sampler) 0:33 move second child to first child ( temp sampler) 0:33 direct index ( temp sampler) 0:33 'local_sampler_array' ( temp 3-element array of sampler) 0:33 Constant: 0:33 2 (const int) 0:? 'g_samp[2]' ( uniform sampler) 0:34 Sequence 0:34 Sequence 0:34 move second child to first child ( temp texture1D) 0:34 direct index ( temp texture1D) 0:34 'local_texture_array' ( temp 3-element array of texture1D) 0:34 Constant: 0:34 0 (const int) 0:? 'g_tex[0]' ( uniform texture1D) 0:34 move second child to first child ( temp texture1D) 0:34 direct index ( temp texture1D) 0:34 'local_texture_array' ( temp 3-element array of texture1D) 0:34 Constant: 0:34 1 (const int) 0:? 'g_tex[1]' ( uniform texture1D) 0:34 move second child to first child ( temp texture1D) 0:34 direct index ( temp texture1D) 0:34 'local_texture_array' ( temp 3-element array of texture1D) 0:34 Constant: 0:34 2 (const int) 0:? 'g_tex[2]' ( uniform texture1D) 0:35 Sequence 0:35 move second child to first child ( temp 4-element array of float) 0:35 'local_float_array' ( temp 4-element array of float) 0:35 g_floats: direct index for structure ( uniform 4-element array of float) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 3X3 matrix of float g_mats, layout( binding=10) uniform 4-element array of 3X3 matrix of float g_mats_explicit, uniform 4-element array of float g_floats}) 0:35 Constant: 0:35 2 (const uint) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 color: direct index for structure ( temp 4-component vector of float) 0:37 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:37 Constant: 0:37 0 (const int) 0:37 add ( temp 4-component vector of float) 0:37 Function Call: TestFn1( ( temp 4-component vector of float) 0:37 Function Call: TestFn2(t11[3];p1[3]; ( temp 4-component vector of float) 0:37 Comma ( temp 3-element array of texture1D) 0:37 Sequence 0:37 move second child to first child ( temp texture1D) 0:37 direct index ( temp texture1D) 0:37 'aggShadow' ( temp 3-element array of texture1D) 0:37 Constant: 0:37 0 (const int) 0:? 'g_tex[0]' ( uniform texture1D) 0:37 move second child to first child ( temp texture1D) 0:37 direct index ( temp texture1D) 0:37 'aggShadow' ( temp 3-element array of texture1D) 0:37 Constant: 0:37 1 (const int) 0:? 'g_tex[1]' ( uniform texture1D) 0:37 move second child to first child ( temp texture1D) 0:37 direct index ( temp texture1D) 0:37 'aggShadow' ( temp 3-element array of texture1D) 0:37 Constant: 0:37 2 (const int) 0:? 'g_tex[2]' ( uniform texture1D) 0:37 'aggShadow' ( temp 3-element array of texture1D) 0:37 Comma ( temp 3-element array of sampler) 0:37 Sequence 0:37 move second child to first child ( temp sampler) 0:37 direct index ( temp sampler) 0:37 'aggShadow' ( temp 3-element array of sampler) 0:37 Constant: 0:37 0 (const int) 0:? 'g_samp[0]' ( uniform sampler) 0:37 move second child to first child ( temp sampler) 0:37 direct index ( temp sampler) 0:37 'aggShadow' ( temp 3-element array of sampler) 0:37 Constant: 0:37 1 (const int) 0:? 'g_samp[1]' ( uniform sampler) 0:37 move second child to first child ( temp sampler) 0:37 direct index ( temp sampler) 0:37 'aggShadow' ( temp 3-element array of sampler) 0:37 Constant: 0:37 2 (const int) 0:? 'g_samp[2]' ( uniform sampler) 0:37 'aggShadow' ( temp 3-element array of sampler) 0:31 Function Definition: main( ( temp void) 0:31 Function Parameters: 0:? Sequence 0:31 Function Call: @main(struct-PS_OUTPUT-vf41; ( temp void) 0:? 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) 0:31 color: direct index for structure ( temp 4-component vector of float) 0:? 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:31 Constant: 0:31 0 (const int) 0:? Linker Objects 0:? 'g_tex[0]' ( uniform texture1D) 0:? 'g_tex[1]' ( uniform texture1D) 0:? 'g_tex[2]' ( uniform texture1D) 0:? 'g_tex_explicit[0]' (layout( binding=1) uniform texture1D) 0:? 'g_tex_explicit[1]' (layout( binding=2) uniform texture1D) 0:? 'g_tex_explicit[2]' (layout( binding=3) uniform texture1D) 0:? 'g_samp[0]' ( uniform sampler) 0:? 'g_samp[1]' ( uniform sampler) 0:? 'g_samp[2]' ( uniform sampler) 0:? 'g_samp_explicit[0]' (layout( binding=5) uniform sampler) 0:? 'g_samp_explicit[1]' (layout( binding=6) uniform sampler) 0:? 'g_samp_explicit[2]' (layout( binding=7) uniform sampler) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 3X3 matrix of float g_mats, layout( binding=10) uniform 4-element array of 3X3 matrix of float g_mats_explicit, uniform 4-element array of float g_floats}) 0:? 'not_flattened_a' ( global 5-element array of int) 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:17 Function Definition: TestFn1( ( temp 4-component vector of float) 0:17 Function Parameters: 0:? Sequence 0:18 Branch: Return with expression 0:18 texture ( temp 4-component vector of float) 0:18 Construct combined texture-sampler ( temp sampler1D) 0:? 'g_tex[1]' ( uniform texture1D) 0:? 'g_samp[1]' ( uniform sampler) 0:18 Constant: 0:18 0.200000 0:22 Function Definition: TestFn2(t11[3];p1[3]; ( temp 4-component vector of float) 0:22 Function Parameters: 0:22 'l_tex' ( in 3-element array of texture1D) 0:22 'l_samp' ( in 3-element array of sampler) 0:? Sequence 0:23 Branch: Return with expression 0:23 texture ( temp 4-component vector of float) 0:23 Construct combined texture-sampler ( temp sampler1D) 0:23 direct index ( temp texture1D) 0:23 'l_tex' ( in 3-element array of texture1D) 0:23 Constant: 0:23 2 (const int) 0:23 direct index ( temp sampler) 0:23 'l_samp' ( in 3-element array of sampler) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0.200000 0:26 Sequence 0:26 move second child to first child ( temp 5-element array of int) 0:26 'not_flattened_a' ( global 5-element array of int) 0:26 Constant: 0:26 1 (const int) 0:26 2 (const int) 0:26 3 (const int) 0:26 4 (const int) 0:26 5 (const int) 0:31 Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void) 0:31 Function Parameters: 0:31 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:? Sequence 0:33 Sequence 0:33 Sequence 0:33 move second child to first child ( temp sampler) 0:33 direct index ( temp sampler) 0:33 'local_sampler_array' ( temp 3-element array of sampler) 0:33 Constant: 0:33 0 (const int) 0:? 'g_samp[0]' ( uniform sampler) 0:33 move second child to first child ( temp sampler) 0:33 direct index ( temp sampler) 0:33 'local_sampler_array' ( temp 3-element array of sampler) 0:33 Constant: 0:33 1 (const int) 0:? 'g_samp[1]' ( uniform sampler) 0:33 move second child to first child ( temp sampler) 0:33 direct index ( temp sampler) 0:33 'local_sampler_array' ( temp 3-element array of sampler) 0:33 Constant: 0:33 2 (const int) 0:? 'g_samp[2]' ( uniform sampler) 0:34 Sequence 0:34 Sequence 0:34 move second child to first child ( temp texture1D) 0:34 direct index ( temp texture1D) 0:34 'local_texture_array' ( temp 3-element array of texture1D) 0:34 Constant: 0:34 0 (const int) 0:? 'g_tex[0]' ( uniform texture1D) 0:34 move second child to first child ( temp texture1D) 0:34 direct index ( temp texture1D) 0:34 'local_texture_array' ( temp 3-element array of texture1D) 0:34 Constant: 0:34 1 (const int) 0:? 'g_tex[1]' ( uniform texture1D) 0:34 move second child to first child ( temp texture1D) 0:34 direct index ( temp texture1D) 0:34 'local_texture_array' ( temp 3-element array of texture1D) 0:34 Constant: 0:34 2 (const int) 0:? 'g_tex[2]' ( uniform texture1D) 0:35 Sequence 0:35 move second child to first child ( temp 4-element array of float) 0:35 'local_float_array' ( temp 4-element array of float) 0:35 g_floats: direct index for structure ( uniform 4-element array of float) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 3X3 matrix of float g_mats, layout( binding=10) uniform 4-element array of 3X3 matrix of float g_mats_explicit, uniform 4-element array of float g_floats}) 0:35 Constant: 0:35 2 (const uint) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 color: direct index for structure ( temp 4-component vector of float) 0:37 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:37 Constant: 0:37 0 (const int) 0:37 add ( temp 4-component vector of float) 0:37 Function Call: TestFn1( ( temp 4-component vector of float) 0:37 Function Call: TestFn2(t11[3];p1[3]; ( temp 4-component vector of float) 0:37 Comma ( temp 3-element array of texture1D) 0:37 Sequence 0:37 move second child to first child ( temp texture1D) 0:37 direct index ( temp texture1D) 0:37 'aggShadow' ( temp 3-element array of texture1D) 0:37 Constant: 0:37 0 (const int) 0:? 'g_tex[0]' ( uniform texture1D) 0:37 move second child to first child ( temp texture1D) 0:37 direct index ( temp texture1D) 0:37 'aggShadow' ( temp 3-element array of texture1D) 0:37 Constant: 0:37 1 (const int) 0:? 'g_tex[1]' ( uniform texture1D) 0:37 move second child to first child ( temp texture1D) 0:37 direct index ( temp texture1D) 0:37 'aggShadow' ( temp 3-element array of texture1D) 0:37 Constant: 0:37 2 (const int) 0:? 'g_tex[2]' ( uniform texture1D) 0:37 'aggShadow' ( temp 3-element array of texture1D) 0:37 Comma ( temp 3-element array of sampler) 0:37 Sequence 0:37 move second child to first child ( temp sampler) 0:37 direct index ( temp sampler) 0:37 'aggShadow' ( temp 3-element array of sampler) 0:37 Constant: 0:37 0 (const int) 0:? 'g_samp[0]' ( uniform sampler) 0:37 move second child to first child ( temp sampler) 0:37 direct index ( temp sampler) 0:37 'aggShadow' ( temp 3-element array of sampler) 0:37 Constant: 0:37 1 (const int) 0:? 'g_samp[1]' ( uniform sampler) 0:37 move second child to first child ( temp sampler) 0:37 direct index ( temp sampler) 0:37 'aggShadow' ( temp 3-element array of sampler) 0:37 Constant: 0:37 2 (const int) 0:? 'g_samp[2]' ( uniform sampler) 0:37 'aggShadow' ( temp 3-element array of sampler) 0:31 Function Definition: main( ( temp void) 0:31 Function Parameters: 0:? Sequence 0:31 Function Call: @main(struct-PS_OUTPUT-vf41; ( temp void) 0:? 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) 0:31 color: direct index for structure ( temp 4-component vector of float) 0:? 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:31 Constant: 0:31 0 (const int) 0:? Linker Objects 0:? 'g_tex[0]' ( uniform texture1D) 0:? 'g_tex[1]' ( uniform texture1D) 0:? 'g_tex[2]' ( uniform texture1D) 0:? 'g_tex_explicit[0]' (layout( binding=1) uniform texture1D) 0:? 'g_tex_explicit[1]' (layout( binding=2) uniform texture1D) 0:? 'g_tex_explicit[2]' (layout( binding=3) uniform texture1D) 0:? 'g_samp[0]' ( uniform sampler) 0:? 'g_samp[1]' ( uniform sampler) 0:? 'g_samp[2]' ( uniform sampler) 0:? 'g_samp_explicit[0]' (layout( binding=5) uniform sampler) 0:? 'g_samp_explicit[1]' (layout( binding=6) uniform sampler) 0:? 'g_samp_explicit[2]' (layout( binding=7) uniform sampler) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 3X3 matrix of float g_mats, layout( binding=10) uniform 4-element array of 3X3 matrix of float g_mats_explicit, uniform 4-element array of float g_floats}) 0:? 'not_flattened_a' ( global 5-element array of int) 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 143 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 134 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "TestFn1(" Name 22 "TestFn2(t11[3];p1[3];" Name 20 "l_tex" Name 21 "l_samp" Name 24 "PS_OUTPUT" MemberName 24(PS_OUTPUT) 0 "color" Name 28 "@main(struct-PS_OUTPUT-vf41;" Name 27 "ps_output" Name 34 "not_flattened_a" Name 42 "g_tex[1]" Name 45 "g_samp[1]" Name 63 "local_sampler_array" Name 65 "g_samp[0]" Name 70 "g_samp[2]" Name 73 "local_texture_array" Name 74 "g_tex[0]" Name 79 "g_tex[2]" Name 85 "local_float_array" Name 91 "$Global" MemberName 91($Global) 0 "g_mats" MemberName 91($Global) 1 "g_mats_explicit" MemberName 91($Global) 2 "g_floats" Name 93 "" Name 107 "aggShadow" Name 114 "aggShadow" Name 121 "param" Name 123 "param" Name 129 "ps_output" Name 130 "param" Name 134 "ps_output.color" Name 137 "g_tex_explicit[0]" Name 138 "g_tex_explicit[1]" Name 139 "g_tex_explicit[2]" Name 140 "g_samp_explicit[0]" Name 141 "g_samp_explicit[1]" Name 142 "g_samp_explicit[2]" Decorate 42(g_tex[1]) Binding 4 Decorate 42(g_tex[1]) DescriptorSet 0 Decorate 45(g_samp[1]) Binding 10 Decorate 45(g_samp[1]) DescriptorSet 0 Decorate 65(g_samp[0]) Binding 9 Decorate 65(g_samp[0]) DescriptorSet 0 Decorate 70(g_samp[2]) Binding 11 Decorate 70(g_samp[2]) DescriptorSet 0 Decorate 74(g_tex[0]) Binding 0 Decorate 74(g_tex[0]) DescriptorSet 0 Decorate 79(g_tex[2]) Binding 8 Decorate 79(g_tex[2]) DescriptorSet 0 Decorate 88 ArrayStride 48 Decorate 89 ArrayStride 48 Decorate 90 ArrayStride 16 Decorate 91($Global) Block MemberDecorate 91($Global) 0 RowMajor MemberDecorate 91($Global) 0 MatrixStride 16 MemberDecorate 91($Global) 0 Offset 0 MemberDecorate 91($Global) 1 RowMajor MemberDecorate 91($Global) 1 MatrixStride 16 MemberDecorate 91($Global) 1 Offset 192 MemberDecorate 91($Global) 2 Offset 384 Decorate 93 Binding 12 Decorate 93 DescriptorSet 0 Decorate 134(ps_output.color) Location 0 Decorate 137(g_tex_explicit[0]) Binding 1 Decorate 137(g_tex_explicit[0]) DescriptorSet 0 Decorate 138(g_tex_explicit[1]) Binding 2 Decorate 138(g_tex_explicit[1]) DescriptorSet 0 Decorate 139(g_tex_explicit[2]) Binding 3 Decorate 139(g_tex_explicit[2]) DescriptorSet 0 Decorate 140(g_samp_explicit[0]) Binding 5 Decorate 140(g_samp_explicit[0]) DescriptorSet 0 Decorate 141(g_samp_explicit[1]) Binding 6 Decorate 141(g_samp_explicit[1]) DescriptorSet 0 Decorate 142(g_samp_explicit[2]) Binding 7 Decorate 142(g_samp_explicit[2]) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeImage 6(float) 1D sampled format:Unknown 12: TypeInt 32 0 13: 12(int) Constant 3 14: TypeArray 11 13 15: TypePointer Function 14 16: TypeSampler 17: TypeArray 16 13 18: TypePointer Function 17 19: TypeFunction 7(fvec4) 15(ptr) 18(ptr) 24(PS_OUTPUT): TypeStruct 7(fvec4) 25: TypePointer Function 24(PS_OUTPUT) 26: TypeFunction 2 25(ptr) 30: TypeInt 32 1 31: 12(int) Constant 5 32: TypeArray 30(int) 31 33: TypePointer Private 32 34(not_flattened_a): 33(ptr) Variable Private 35: 30(int) Constant 1 36: 30(int) Constant 2 37: 30(int) Constant 3 38: 30(int) Constant 4 39: 30(int) Constant 5 40: 32 ConstantComposite 35 36 37 38 39 41: TypePointer UniformConstant 11 42(g_tex[1]): 41(ptr) Variable UniformConstant 44: TypePointer UniformConstant 16 45(g_samp[1]): 44(ptr) Variable UniformConstant 47: TypeSampledImage 11 49: 6(float) Constant 1045220557 53: TypePointer Function 11 56: TypePointer Function 16 64: 30(int) Constant 0 65(g_samp[0]): 44(ptr) Variable UniformConstant 70(g_samp[2]): 44(ptr) Variable UniformConstant 74(g_tex[0]): 41(ptr) Variable UniformConstant 79(g_tex[2]): 41(ptr) Variable UniformConstant 82: 12(int) Constant 4 83: TypeArray 6(float) 82 84: TypePointer Function 83 86: TypeVector 6(float) 3 87: TypeMatrix 86(fvec3) 3 88: TypeArray 87 82 89: TypeArray 87 82 90: TypeArray 6(float) 82 91($Global): TypeStruct 88 89 90 92: TypePointer Uniform 91($Global) 93: 92(ptr) Variable Uniform 94: TypePointer Uniform 90 98: TypePointer Function 6(float) 127: TypePointer Function 7(fvec4) 133: TypePointer Output 7(fvec4) 134(ps_output.color): 133(ptr) Variable Output 137(g_tex_explicit[0]): 41(ptr) Variable UniformConstant 138(g_tex_explicit[1]): 41(ptr) Variable UniformConstant 139(g_tex_explicit[2]): 41(ptr) Variable UniformConstant 140(g_samp_explicit[0]): 44(ptr) Variable UniformConstant 141(g_samp_explicit[1]): 44(ptr) Variable UniformConstant 142(g_samp_explicit[2]): 44(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 129(ps_output): 25(ptr) Variable Function 130(param): 25(ptr) Variable Function Store 34(not_flattened_a) 40 131: 2 FunctionCall 28(@main(struct-PS_OUTPUT-vf41;) 130(param) 132:24(PS_OUTPUT) Load 130(param) Store 129(ps_output) 132 135: 127(ptr) AccessChain 129(ps_output) 64 136: 7(fvec4) Load 135 Store 134(ps_output.color) 136 Return FunctionEnd 9(TestFn1(): 7(fvec4) Function None 8 10: Label 43: 11 Load 42(g_tex[1]) 46: 16 Load 45(g_samp[1]) 48: 47 SampledImage 43 46 50: 7(fvec4) ImageSampleImplicitLod 48 49 ReturnValue 50 FunctionEnd 22(TestFn2(t11[3];p1[3];): 7(fvec4) Function None 19 20(l_tex): 15(ptr) FunctionParameter 21(l_samp): 18(ptr) FunctionParameter 23: Label 54: 53(ptr) AccessChain 20(l_tex) 36 55: 11 Load 54 57: 56(ptr) AccessChain 21(l_samp) 36 58: 16 Load 57 59: 47 SampledImage 55 58 60: 7(fvec4) ImageSampleImplicitLod 59 49 ReturnValue 60 FunctionEnd 28(@main(struct-PS_OUTPUT-vf41;): 2 Function None 26 27(ps_output): 25(ptr) FunctionParameter 29: Label 63(local_sampler_array): 18(ptr) Variable Function 73(local_texture_array): 15(ptr) Variable Function 85(local_float_array): 84(ptr) Variable Function 107(aggShadow): 15(ptr) Variable Function 114(aggShadow): 18(ptr) Variable Function 121(param): 15(ptr) Variable Function 123(param): 18(ptr) Variable Function 66: 16 Load 65(g_samp[0]) 67: 56(ptr) AccessChain 63(local_sampler_array) 64 Store 67 66 68: 16 Load 45(g_samp[1]) 69: 56(ptr) AccessChain 63(local_sampler_array) 35 Store 69 68 71: 16 Load 70(g_samp[2]) 72: 56(ptr) AccessChain 63(local_sampler_array) 36 Store 72 71 75: 11 Load 74(g_tex[0]) 76: 53(ptr) AccessChain 73(local_texture_array) 64 Store 76 75 77: 11 Load 42(g_tex[1]) 78: 53(ptr) AccessChain 73(local_texture_array) 35 Store 78 77 80: 11 Load 79(g_tex[2]) 81: 53(ptr) AccessChain 73(local_texture_array) 36 Store 81 80 95: 94(ptr) AccessChain 93 36 96: 90 Load 95 97: 6(float) CompositeExtract 96 0 99: 98(ptr) AccessChain 85(local_float_array) 64 Store 99 97 100: 6(float) CompositeExtract 96 1 101: 98(ptr) AccessChain 85(local_float_array) 35 Store 101 100 102: 6(float) CompositeExtract 96 2 103: 98(ptr) AccessChain 85(local_float_array) 36 Store 103 102 104: 6(float) CompositeExtract 96 3 105: 98(ptr) AccessChain 85(local_float_array) 37 Store 105 104 106: 7(fvec4) FunctionCall 9(TestFn1() 108: 11 Load 74(g_tex[0]) 109: 53(ptr) AccessChain 107(aggShadow) 64 Store 109 108 110: 11 Load 42(g_tex[1]) 111: 53(ptr) AccessChain 107(aggShadow) 35 Store 111 110 112: 11 Load 79(g_tex[2]) 113: 53(ptr) AccessChain 107(aggShadow) 36 Store 113 112 115: 16 Load 65(g_samp[0]) 116: 56(ptr) AccessChain 114(aggShadow) 64 Store 116 115 117: 16 Load 45(g_samp[1]) 118: 56(ptr) AccessChain 114(aggShadow) 35 Store 118 117 119: 16 Load 70(g_samp[2]) 120: 56(ptr) AccessChain 114(aggShadow) 36 Store 120 119 122: 14 Load 107(aggShadow) Store 121(param) 122 124: 17 Load 114(aggShadow) Store 123(param) 124 125: 7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 121(param) 123(param) 126: 7(fvec4) FAdd 106 125 128: 127(ptr) AccessChain 27(ps_output) 64 Store 128 126 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.array.frag.out000066400000000000000000000655061506534232700222110ustar00rootroot00000000000000hlsl.array.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'C' ( global 4-component vector of float) 0:7 Constant: 0:7 1.000000 0:7 2.000000 0:7 3.000000 0:7 4.000000 0:11 Sequence 0:11 move second child to first child ( temp 2-element array of 4-component vector of float) 0:11 'c2' ( global 2-element array of 4-component vector of float) 0:11 Construct vec4 ( temp 2-element array of 4-component vector of float) 0:11 'C' ( global 4-component vector of float) 0:11 Constant: 0:11 1.000000 0:11 2.000000 0:11 3.000000 0:11 4.000000 0:14 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) 0:14 Function Parameters: 0:14 'i' ( in int) 0:14 'input' ( in 3-element array of 4-component vector of float) 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp 10-element array of 4-component vector of float) 0:15 'b' ( temp 10-element array of 4-component vector of float) 0:15 Construct vec4 ( temp 10-element array of 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'tmp' ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 'C' ( global 4-component vector of float) 0:16 direct index ( temp 4-component vector of float) 0:16 a1: direct index for structure ( uniform 1-element array of 4-component vector of float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:16 Constant: 0:16 2 (const uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1.000000 0:16 2.000000 0:16 3.000000 0:16 4.000000 0:16 indirect index ( temp 4-component vector of float) 0:16 a2: direct index for structure ( uniform 2-element array of 4-component vector of float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:16 Constant: 0:16 3 (const uint) 0:16 'i' ( in int) 0:16 indirect index ( temp 4-component vector of float) 0:16 'c2' ( global 2-element array of 4-component vector of float) 0:16 'i' ( in int) 0:17 Branch: Return with expression 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 direct index ( temp 4-component vector of float) 0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:17 Constant: 0:17 0 (const uint) 0:17 Constant: 0:17 1 (const int) 0:17 indirect index ( temp 4-component vector of float) 0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:17 Constant: 0:17 0 (const uint) 0:17 'i' ( in int) 0:17 direct index ( temp 4-component vector of float) 0:17 'input' ( in 3-element array of 4-component vector of float) 0:17 Constant: 0:17 2 (const int) 0:17 indirect index ( temp 4-component vector of float) 0:17 'input' ( in 3-element array of 4-component vector of float) 0:17 'i' ( in int) 0:17 direct index ( temp 4-component vector of float) 0:17 'b' ( temp 10-element array of 4-component vector of float) 0:17 Constant: 0:17 5 (const int) 0:17 indirect index ( temp 4-component vector of float) 0:17 'b' ( temp 10-element array of 4-component vector of float) 0:17 'i' ( in int) 0:17 indirect index ( temp 4-component vector of float) 0:17 m: direct index for structure ( temp 7-element array of 4-component vector of float) 0:17 indirect index ( temp structure{ temp 7-element array of 4-component vector of float m}) 0:17 s: direct index for structure ( uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m}) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:17 Constant: 0:17 1 (const uint) 0:17 'i' ( in int) 0:17 Constant: 0:17 0 (const int) 0:17 'i' ( in int) 0:17 'tmp' ( temp 4-component vector of float) 0:14 Function Definition: PixelShaderFunction( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 move second child to first child ( temp int) 0:? 'i' ( temp int) 0:? 'i' (layout( location=0) flat in int) 0:14 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'input' ( temp 3-element array of 4-component vector of float) 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) 0:14 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:14 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) 0:? 'i' ( temp int) 0:? 'input' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:? 'C' ( global 4-component vector of float) 0:? 'c1' ( const 1-element array of 4-component vector of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 'c2' ( global 2-element array of 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'i' (layout( location=0) flat in int) 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'C' ( global 4-component vector of float) 0:7 Constant: 0:7 1.000000 0:7 2.000000 0:7 3.000000 0:7 4.000000 0:11 Sequence 0:11 move second child to first child ( temp 2-element array of 4-component vector of float) 0:11 'c2' ( global 2-element array of 4-component vector of float) 0:11 Construct vec4 ( temp 2-element array of 4-component vector of float) 0:11 'C' ( global 4-component vector of float) 0:11 Constant: 0:11 1.000000 0:11 2.000000 0:11 3.000000 0:11 4.000000 0:14 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) 0:14 Function Parameters: 0:14 'i' ( in int) 0:14 'input' ( in 3-element array of 4-component vector of float) 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp 10-element array of 4-component vector of float) 0:15 'b' ( temp 10-element array of 4-component vector of float) 0:15 Construct vec4 ( temp 10-element array of 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:15 'C' ( global 4-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'tmp' ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 'C' ( global 4-component vector of float) 0:16 direct index ( temp 4-component vector of float) 0:16 a1: direct index for structure ( uniform 1-element array of 4-component vector of float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:16 Constant: 0:16 2 (const uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1.000000 0:16 2.000000 0:16 3.000000 0:16 4.000000 0:16 indirect index ( temp 4-component vector of float) 0:16 a2: direct index for structure ( uniform 2-element array of 4-component vector of float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:16 Constant: 0:16 3 (const uint) 0:16 'i' ( in int) 0:16 indirect index ( temp 4-component vector of float) 0:16 'c2' ( global 2-element array of 4-component vector of float) 0:16 'i' ( in int) 0:17 Branch: Return with expression 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 add ( temp 4-component vector of float) 0:17 direct index ( temp 4-component vector of float) 0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:17 Constant: 0:17 0 (const uint) 0:17 Constant: 0:17 1 (const int) 0:17 indirect index ( temp 4-component vector of float) 0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:17 Constant: 0:17 0 (const uint) 0:17 'i' ( in int) 0:17 direct index ( temp 4-component vector of float) 0:17 'input' ( in 3-element array of 4-component vector of float) 0:17 Constant: 0:17 2 (const int) 0:17 indirect index ( temp 4-component vector of float) 0:17 'input' ( in 3-element array of 4-component vector of float) 0:17 'i' ( in int) 0:17 direct index ( temp 4-component vector of float) 0:17 'b' ( temp 10-element array of 4-component vector of float) 0:17 Constant: 0:17 5 (const int) 0:17 indirect index ( temp 4-component vector of float) 0:17 'b' ( temp 10-element array of 4-component vector of float) 0:17 'i' ( in int) 0:17 indirect index ( temp 4-component vector of float) 0:17 m: direct index for structure ( temp 7-element array of 4-component vector of float) 0:17 indirect index ( temp structure{ temp 7-element array of 4-component vector of float m}) 0:17 s: direct index for structure ( uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m}) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:17 Constant: 0:17 1 (const uint) 0:17 'i' ( in int) 0:17 Constant: 0:17 0 (const int) 0:17 'i' ( in int) 0:17 'tmp' ( temp 4-component vector of float) 0:14 Function Definition: PixelShaderFunction( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 move second child to first child ( temp int) 0:? 'i' ( temp int) 0:? 'i' (layout( location=0) flat in int) 0:14 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'input' ( temp 3-element array of 4-component vector of float) 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) 0:14 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:14 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) 0:? 'i' ( temp int) 0:? 'input' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) 0:? 'C' ( global 4-component vector of float) 0:? 'c1' ( const 1-element array of 4-component vector of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 'c2' ( global 2-element array of 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'i' (layout( location=0) flat in int) 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 118 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 103 107 110 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 17 "@PixelShaderFunction(i1;vf4[3];" Name 15 "i" Name 16 "input" Name 20 "C" Name 29 "c2" Name 35 "b" Name 39 "tmp" Name 45 "" MemberName 45 0 "m" Name 51 "$Global" MemberName 51($Global) 0 "a" MemberName 51($Global) 1 "s" MemberName 51($Global) 2 "a1" MemberName 51($Global) 3 "a2" Name 53 "" Name 101 "i" Name 103 "i" Name 105 "input" Name 107 "input" Name 110 "@entryPointOutput" Name 111 "param" Name 113 "param" Decorate 42 ArrayStride 16 Decorate 44 ArrayStride 16 MemberDecorate 45 0 Offset 0 Decorate 47 ArrayStride 112 Decorate 49 ArrayStride 16 Decorate 50 ArrayStride 16 Decorate 51($Global) Block MemberDecorate 51($Global) 0 Offset 0 MemberDecorate 51($Global) 1 Offset 64 MemberDecorate 51($Global) 2 Offset 1296 MemberDecorate 51($Global) 3 Offset 1312 Decorate 53 Binding 0 Decorate 53 DescriptorSet 0 Decorate 103(i) Flat Decorate 103(i) Location 0 Decorate 107(input) Location 1 Decorate 110(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeInt 32 0 11: 10(int) Constant 3 12: TypeArray 9(fvec4) 11 13: TypePointer Function 12 14: TypeFunction 9(fvec4) 7(ptr) 13(ptr) 19: TypePointer Private 9(fvec4) 20(C): 19(ptr) Variable Private 21: 8(float) Constant 1065353216 22: 8(float) Constant 1073741824 23: 8(float) Constant 1077936128 24: 8(float) Constant 1082130432 25: 9(fvec4) ConstantComposite 21 22 23 24 26: 10(int) Constant 2 27: TypeArray 9(fvec4) 26 28: TypePointer Private 27 29(c2): 28(ptr) Variable Private 32: 10(int) Constant 10 33: TypeArray 9(fvec4) 32 34: TypePointer Function 33 38: TypePointer Function 9(fvec4) 41: 10(int) Constant 4 42: TypeArray 9(fvec4) 41 43: 10(int) Constant 7 44: TypeArray 9(fvec4) 43 45: TypeStruct 44 46: 10(int) Constant 11 47: TypeArray 45(struct) 46 48: 10(int) Constant 1 49: TypeArray 9(fvec4) 48 50: TypeArray 9(fvec4) 26 51($Global): TypeStruct 42 47 49 50 52: TypePointer Uniform 51($Global) 53: 52(ptr) Variable Uniform 54: 6(int) Constant 2 55: 6(int) Constant 0 56: TypePointer Uniform 9(fvec4) 61: 6(int) Constant 3 70: 6(int) Constant 1 84: 6(int) Constant 5 102: TypePointer Input 6(int) 103(i): 102(ptr) Variable Input 106: TypePointer Input 12 107(input): 106(ptr) Variable Input 109: TypePointer Output 9(fvec4) 110(@entryPointOutput): 109(ptr) Variable Output 116: TypeArray 9(fvec4) 48 117: 116 ConstantComposite 25 4(PixelShaderFunction): 2 Function None 3 5: Label 101(i): 7(ptr) Variable Function 105(input): 13(ptr) Variable Function 111(param): 7(ptr) Variable Function 113(param): 13(ptr) Variable Function Store 20(C) 25 30: 9(fvec4) Load 20(C) 31: 27 CompositeConstruct 30 25 Store 29(c2) 31 104: 6(int) Load 103(i) Store 101(i) 104 108: 12 Load 107(input) Store 105(input) 108 112: 6(int) Load 101(i) Store 111(param) 112 114: 12 Load 105(input) Store 113(param) 114 115: 9(fvec4) FunctionCall 17(@PixelShaderFunction(i1;vf4[3];) 111(param) 113(param) Store 110(@entryPointOutput) 115 Return FunctionEnd 17(@PixelShaderFunction(i1;vf4[3];): 9(fvec4) Function None 14 15(i): 7(ptr) FunctionParameter 16(input): 13(ptr) FunctionParameter 18: Label 35(b): 34(ptr) Variable Function 39(tmp): 38(ptr) Variable Function 36: 9(fvec4) Load 20(C) 37: 33 CompositeConstruct 36 36 36 36 36 36 36 36 36 36 Store 35(b) 37 40: 9(fvec4) Load 20(C) 57: 56(ptr) AccessChain 53 54 55 58: 9(fvec4) Load 57 59: 9(fvec4) FAdd 40 58 60: 9(fvec4) FAdd 59 25 62: 6(int) Load 15(i) 63: 56(ptr) AccessChain 53 61 62 64: 9(fvec4) Load 63 65: 9(fvec4) FAdd 60 64 66: 6(int) Load 15(i) 67: 19(ptr) AccessChain 29(c2) 66 68: 9(fvec4) Load 67 69: 9(fvec4) FAdd 65 68 Store 39(tmp) 69 71: 56(ptr) AccessChain 53 55 70 72: 9(fvec4) Load 71 73: 6(int) Load 15(i) 74: 56(ptr) AccessChain 53 55 73 75: 9(fvec4) Load 74 76: 9(fvec4) FAdd 72 75 77: 38(ptr) AccessChain 16(input) 54 78: 9(fvec4) Load 77 79: 9(fvec4) FAdd 76 78 80: 6(int) Load 15(i) 81: 38(ptr) AccessChain 16(input) 80 82: 9(fvec4) Load 81 83: 9(fvec4) FAdd 79 82 85: 38(ptr) AccessChain 35(b) 84 86: 9(fvec4) Load 85 87: 9(fvec4) FAdd 83 86 88: 6(int) Load 15(i) 89: 38(ptr) AccessChain 35(b) 88 90: 9(fvec4) Load 89 91: 9(fvec4) FAdd 87 90 92: 6(int) Load 15(i) 93: 6(int) Load 15(i) 94: 56(ptr) AccessChain 53 70 92 55 93 95: 9(fvec4) Load 94 96: 9(fvec4) FAdd 91 95 97: 9(fvec4) Load 39(tmp) 98: 9(fvec4) FAdd 96 97 ReturnValue 98 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.array.implicit-size.frag.out000066400000000000000000000264771506534232700247760ustar00rootroot00000000000000hlsl.array.implicit-size.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp 5-element array of float) 0:3 'g_array' ( global 5-element array of float) 0:3 Constant: 0:3 1.000000 0:3 2.000000 0:3 3.000000 0:3 4.000000 0:3 5.000000 0:6 Sequence 0:6 move second child to first child ( temp 7-element array of float) 0:6 'g_array_unused' ( global 7-element array of float) 0:6 Constant: 0:6 1.000000 0:6 2.000000 0:6 3.000000 0:6 4.000000 0:6 5.000000 0:6 6.000000 0:6 7.000000 0:12 Sequence 0:12 move second child to first child ( temp 2-element array of structure{ temp int i, temp float f}) 0:12 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f}) 0:12 Constant: 0:12 1 (const int) 0:12 2.000000 0:12 3 (const int) 0:12 4.000000 0:26 Function Definition: main(struct-PS_OUTPUT-vf41; ( temp void) 0:26 Function Parameters: 0:26 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp 3-element array of float) 0:28 'l_array' ( temp 3-element array of float) 0:28 Constant: 0:28 1.000000 0:28 2.000000 0:28 3.000000 0:31 move second child to first child ( temp 4-component vector of float) 0:31 color: direct index for structure ( temp 4-component vector of float) 0:31 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:31 Constant: 0:31 0 (const int) 0:31 Construct vec4 ( temp 4-component vector of float) 0:31 add ( temp float) 0:31 add ( temp float) 0:31 add ( temp float) 0:31 add ( temp float) 0:31 direct index ( temp float) 0:31 'g_array' ( global 5-element array of float) 0:31 Constant: 0:31 0 (const int) 0:31 direct index ( temp float) 0:31 'g_array' ( global 5-element array of float) 0:31 Constant: 0:31 4 (const int) 0:31 direct index ( temp float) 0:31 'l_array' ( temp 3-element array of float) 0:31 Constant: 0:31 1 (const int) 0:31 f: direct index for structure ( temp float) 0:31 direct index ( temp structure{ temp int i, temp float f}) 0:31 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 indirect index ( temp float) 0:31 'g_array' ( global 5-element array of float) 0:31 'idx' ( temp int) 0:? Linker Objects 0:? 'g_array' ( global 5-element array of float) 0:? 'g_array_unused' ( global 7-element array of float) 0:? 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f}) Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp 5-element array of float) 0:3 'g_array' ( global 5-element array of float) 0:3 Constant: 0:3 1.000000 0:3 2.000000 0:3 3.000000 0:3 4.000000 0:3 5.000000 0:6 Sequence 0:6 move second child to first child ( temp 7-element array of float) 0:6 'g_array_unused' ( global 7-element array of float) 0:6 Constant: 0:6 1.000000 0:6 2.000000 0:6 3.000000 0:6 4.000000 0:6 5.000000 0:6 6.000000 0:6 7.000000 0:12 Sequence 0:12 move second child to first child ( temp 2-element array of structure{ temp int i, temp float f}) 0:12 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f}) 0:12 Constant: 0:12 1 (const int) 0:12 2.000000 0:12 3 (const int) 0:12 4.000000 0:26 Function Definition: main(struct-PS_OUTPUT-vf41; ( temp void) 0:26 Function Parameters: 0:26 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp 3-element array of float) 0:28 'l_array' ( temp 3-element array of float) 0:28 Constant: 0:28 1.000000 0:28 2.000000 0:28 3.000000 0:31 move second child to first child ( temp 4-component vector of float) 0:31 color: direct index for structure ( temp 4-component vector of float) 0:31 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:31 Constant: 0:31 0 (const int) 0:31 Construct vec4 ( temp 4-component vector of float) 0:31 add ( temp float) 0:31 add ( temp float) 0:31 add ( temp float) 0:31 add ( temp float) 0:31 direct index ( temp float) 0:31 'g_array' ( global 5-element array of float) 0:31 Constant: 0:31 0 (const int) 0:31 direct index ( temp float) 0:31 'g_array' ( global 5-element array of float) 0:31 Constant: 0:31 4 (const int) 0:31 direct index ( temp float) 0:31 'l_array' ( temp 3-element array of float) 0:31 Constant: 0:31 1 (const int) 0:31 f: direct index for structure ( temp float) 0:31 direct index ( temp structure{ temp int i, temp float f}) 0:31 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f}) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 indirect index ( temp float) 0:31 'g_array' ( global 5-element array of float) 0:31 'idx' ( temp int) 0:? Linker Objects 0:? 'g_array' ( global 5-element array of float) 0:? 'g_array_unused' ( global 7-element array of float) 0:? 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f}) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "color" Name 12 "main(struct-PS_OUTPUT-vf41;" Name 11 "ps_output" Name 18 "g_array" Name 28 "g_array_unused" Name 33 "mystruct" MemberName 33(mystruct) 0 "i" MemberName 33(mystruct) 1 "f" Name 37 "g_mystruct" Name 46 "l_array" Name 64 "idx" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypePointer Function 8(PS_OUTPUT) 10: TypeFunction 2 9(ptr) 14: TypeInt 32 0 15: 14(int) Constant 5 16: TypeArray 6(float) 15 17: TypePointer Private 16 18(g_array): 17(ptr) Variable Private 19: 6(float) Constant 1065353216 20: 6(float) Constant 1073741824 21: 6(float) Constant 1077936128 22: 6(float) Constant 1082130432 23: 6(float) Constant 1084227584 24: 16 ConstantComposite 19 20 21 22 23 25: 14(int) Constant 7 26: TypeArray 6(float) 25 27: TypePointer Private 26 28(g_array_unused): 27(ptr) Variable Private 29: 6(float) Constant 1086324736 30: 6(float) Constant 1088421888 31: 26 ConstantComposite 19 20 21 22 23 29 30 32: TypeInt 32 1 33(mystruct): TypeStruct 32(int) 6(float) 34: 14(int) Constant 2 35: TypeArray 33(mystruct) 34 36: TypePointer Private 35 37(g_mystruct): 36(ptr) Variable Private 38: 32(int) Constant 1 39:33(mystruct) ConstantComposite 38 20 40: 32(int) Constant 3 41:33(mystruct) ConstantComposite 40 22 42: 35 ConstantComposite 39 41 43: 14(int) Constant 3 44: TypeArray 6(float) 43 45: TypePointer Function 44 47: 44 ConstantComposite 19 20 21 48: 32(int) Constant 0 49: TypePointer Private 6(float) 52: 32(int) Constant 4 56: TypePointer Function 6(float) 63: TypePointer Function 32(int) 70: TypePointer Function 7(fvec4) 4(PixelShaderFunction): 2 Function None 3 5: Label Store 18(g_array) 24 Store 28(g_array_unused) 31 Store 37(g_mystruct) 42 Return FunctionEnd 12(main(struct-PS_OUTPUT-vf41;): 2 Function None 10 11(ps_output): 9(ptr) FunctionParameter 13: Label 46(l_array): 45(ptr) Variable Function 64(idx): 63(ptr) Variable Function Store 46(l_array) 47 50: 49(ptr) AccessChain 18(g_array) 48 51: 6(float) Load 50 53: 49(ptr) AccessChain 18(g_array) 52 54: 6(float) Load 53 55: 6(float) FAdd 51 54 57: 56(ptr) AccessChain 46(l_array) 38 58: 6(float) Load 57 59: 6(float) FAdd 55 58 60: 49(ptr) AccessChain 37(g_mystruct) 48 38 61: 6(float) Load 60 62: 6(float) FAdd 59 61 65: 32(int) Load 64(idx) 66: 49(ptr) AccessChain 18(g_array) 65 67: 6(float) Load 66 68: 6(float) FAdd 62 67 69: 7(fvec4) CompositeConstruct 68 68 68 68 71: 70(ptr) AccessChain 11(ps_output) 48 Store 71 69 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.array.multidim.frag.out000066400000000000000000000266441506534232700240340ustar00rootroot00000000000000hlsl.array.multidim.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Parameters: 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 direct index ( temp 4-component vector of float) 0:14 direct index ( temp 3-element array of 4-component vector of float) 0:14 'float4_array_1' ( temp 2-element array of 3-element array of 4-component vector of float) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Construct vec4 ( temp 4-component vector of float) 0:14 direct index ( temp float) 0:14 direct index ( temp 3-element array of float) 0:14 direct index ( temp 4-element array of 3-element array of float) 0:14 float_array: direct index for structure ( uniform 5-element array of 4-element array of 3-element array of float) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform 5-element array of 4-element array of 3-element array of float float_array}) 0:14 Constant: 0:14 0 (const uint) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 3 (const int) 0:14 Constant: 0:14 1 (const int) 0:15 move second child to first child ( temp 3-element array of 4-component vector of float) 0:15 direct index ( temp 3-element array of 4-component vector of float) 0:15 'float4_array_2' ( temp 5-element array of 3-element array of 4-component vector of float) 0:15 Constant: 0:15 1 (const int) 0:15 direct index ( temp 3-element array of 4-component vector of float) 0:15 'float4_array_1' ( temp 2-element array of 3-element array of 4-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 Color: direct index for structure ( temp 4-component vector of float) 0:18 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp 4-component vector of float) 0:18 direct index ( temp 3-element array of 4-component vector of float) 0:18 'float4_array_1' ( temp 2-element array of 3-element array of 4-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 2 (const int) 0:19 Branch: Return with expression 0:19 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Definition: main( ( 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:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:10 Color: direct index for structure ( temp 4-component vector of float) 0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Constant: 0:10 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 5-element array of 4-element array of 3-element array of float float_array}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Parameters: 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 direct index ( temp 4-component vector of float) 0:14 direct index ( temp 3-element array of 4-component vector of float) 0:14 'float4_array_1' ( temp 2-element array of 3-element array of 4-component vector of float) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Construct vec4 ( temp 4-component vector of float) 0:14 direct index ( temp float) 0:14 direct index ( temp 3-element array of float) 0:14 direct index ( temp 4-element array of 3-element array of float) 0:14 float_array: direct index for structure ( uniform 5-element array of 4-element array of 3-element array of float) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform 5-element array of 4-element array of 3-element array of float float_array}) 0:14 Constant: 0:14 0 (const uint) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 3 (const int) 0:14 Constant: 0:14 1 (const int) 0:15 move second child to first child ( temp 3-element array of 4-component vector of float) 0:15 direct index ( temp 3-element array of 4-component vector of float) 0:15 'float4_array_2' ( temp 5-element array of 3-element array of 4-component vector of float) 0:15 Constant: 0:15 1 (const int) 0:15 direct index ( temp 3-element array of 4-component vector of float) 0:15 'float4_array_1' ( temp 2-element array of 3-element array of 4-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 Color: direct index for structure ( temp 4-component vector of float) 0:18 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp 4-component vector of float) 0:18 direct index ( temp 3-element array of 4-component vector of float) 0:18 'float4_array_1' ( temp 2-element array of 3-element array of 4-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 2 (const int) 0:19 Branch: Return with expression 0:19 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Definition: main( ( 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:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:10 Color: direct index for structure ( temp 4-component vector of float) 0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Constant: 0:10 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 5-element array of 4-element array of 3-element array of float float_array}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 54 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 18 "float4_array_1" Name 27 "$Global" MemberName 27($Global) 0 "float_array" Name 29 "" Name 40 "float4_array_2" Name 46 "psout" Name 54 "@entryPointOutput.Color" Decorate 22 ArrayStride 16 Decorate 24 ArrayStride 48 Decorate 26 ArrayStride 192 Decorate 27($Global) Block MemberDecorate 27($Global) 0 Offset 0 Decorate 29 Binding 0 Decorate 29 DescriptorSet 0 Decorate 54(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 0 13: 12(int) Constant 3 14: TypeArray 7(fvec4) 13 15: 12(int) Constant 2 16: TypeArray 14 15 17: TypePointer Function 16 19: TypeInt 32 1 20: 19(int) Constant 1 21: 19(int) Constant 2 22: TypeArray 6(float) 13 23: 12(int) Constant 4 24: TypeArray 22 23 25: 12(int) Constant 5 26: TypeArray 24 25 27($Global): TypeStruct 26 28: TypePointer Uniform 27($Global) 29: 28(ptr) Variable Uniform 30: 19(int) Constant 0 31: 19(int) Constant 3 32: TypePointer Uniform 6(float) 36: TypePointer Function 7(fvec4) 38: TypeArray 14 25 39: TypePointer Function 38 41: TypePointer Function 14 45: TypePointer Function 8(PS_OUTPUT) 53: TypePointer Output 7(fvec4) 54(@entryPointOutput.Color): 53(ptr) Variable Output 4(main): 2 Function None 3 5: Label 55:8(PS_OUTPUT) FunctionCall 10(@main() 56: 7(fvec4) CompositeExtract 55 0 Store 54(@entryPointOutput.Color) 56 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 18(float4_array_1): 17(ptr) Variable Function 40(float4_array_2): 39(ptr) Variable Function 46(psout): 45(ptr) Variable Function 33: 32(ptr) AccessChain 29 30 21 31 20 34: 6(float) Load 33 35: 7(fvec4) CompositeConstruct 34 34 34 34 37: 36(ptr) AccessChain 18(float4_array_1) 20 21 Store 37 35 42: 41(ptr) AccessChain 18(float4_array_1) 30 43: 14 Load 42 44: 41(ptr) AccessChain 40(float4_array_2) 20 Store 44 43 47: 36(ptr) AccessChain 18(float4_array_1) 20 21 48: 7(fvec4) Load 47 49: 36(ptr) AccessChain 46(psout) 30 Store 49 48 50:8(PS_OUTPUT) Load 46(psout) ReturnValue 50 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.assoc.frag.out000066400000000000000000000310111506534232700221630ustar00rootroot00000000000000hlsl.assoc.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'a1' ( in 4-component vector of float) 0:8 'a2' ( in 4-component vector of float) 0:8 'a3' ( in 4-component vector of float) 0:8 'a4' ( in 4-component vector of float) 0:8 'a5' ( in 4-component vector of float) 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'a1' ( in 4-component vector of float) 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'a2' ( in 4-component vector of float) 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'a3' ( in 4-component vector of float) 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'a4' ( in 4-component vector of float) 0:9 'a5' ( in 4-component vector of float) 0:10 Branch: Return with expression 0:10 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:10 'a1' ( in 4-component vector of float) 0:10 'a2' ( in 4-component vector of float) 0:10 'a3' ( in 4-component vector of float) 0:10 'a4' ( in 4-component vector of float) 0:10 'a5' ( in 4-component vector of float) 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:? 'a1' ( temp 4-component vector of float) 0:? 'a1' (layout( location=0) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'a2' ( temp 4-component vector of float) 0:? 'a2' (layout( location=1) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'a3' ( temp 4-component vector of float) 0:? 'a3' (layout( location=2) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'a4' ( temp 4-component vector of float) 0:? 'a4' (layout( location=3) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'a5' ( temp 4-component vector of float) 0:? 'a5' (layout( location=4) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; ( temp 4-component vector of float) 0:? 'a1' ( temp 4-component vector of float) 0:? 'a2' ( temp 4-component vector of float) 0:? 'a3' ( temp 4-component vector of float) 0:? 'a4' ( temp 4-component vector of float) 0:? 'a5' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'a1' (layout( location=0) in 4-component vector of float) 0:? 'a2' (layout( location=1) in 4-component vector of float) 0:? 'a3' (layout( location=2) in 4-component vector of float) 0:? 'a4' (layout( location=3) in 4-component vector of float) 0:? 'a5' (layout( location=4) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'a1' ( in 4-component vector of float) 0:8 'a2' ( in 4-component vector of float) 0:8 'a3' ( in 4-component vector of float) 0:8 'a4' ( in 4-component vector of float) 0:8 'a5' ( in 4-component vector of float) 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'a1' ( in 4-component vector of float) 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'a2' ( in 4-component vector of float) 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'a3' ( in 4-component vector of float) 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'a4' ( in 4-component vector of float) 0:9 'a5' ( in 4-component vector of float) 0:10 Branch: Return with expression 0:10 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:10 'a1' ( in 4-component vector of float) 0:10 'a2' ( in 4-component vector of float) 0:10 'a3' ( in 4-component vector of float) 0:10 'a4' ( in 4-component vector of float) 0:10 'a5' ( in 4-component vector of float) 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:? 'a1' ( temp 4-component vector of float) 0:? 'a1' (layout( location=0) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'a2' ( temp 4-component vector of float) 0:? 'a2' (layout( location=1) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'a3' ( temp 4-component vector of float) 0:? 'a3' (layout( location=2) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'a4' ( temp 4-component vector of float) 0:? 'a4' (layout( location=3) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'a5' ( temp 4-component vector of float) 0:? 'a5' (layout( location=4) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; ( temp 4-component vector of float) 0:? 'a1' ( temp 4-component vector of float) 0:? 'a2' ( temp 4-component vector of float) 0:? 'a3' ( temp 4-component vector of float) 0:? 'a4' ( temp 4-component vector of float) 0:? 'a5' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'a1' (layout( location=0) in 4-component vector of float) 0:? 'a2' (layout( location=1) in 4-component vector of float) 0:? 'a3' (layout( location=2) in 4-component vector of float) 0:? 'a4' (layout( location=3) in 4-component vector of float) 0:? 'a5' (layout( location=4) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 58 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 31 34 37 40 43 46 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 15 "@PixelShaderFunction(vf4;vf4;vf4;vf4;vf4;" Name 10 "a1" Name 11 "a2" Name 12 "a3" Name 13 "a4" Name 14 "a5" Name 29 "a1" Name 31 "a1" Name 33 "a2" Name 34 "a2" Name 36 "a3" Name 37 "a3" Name 39 "a4" Name 40 "a4" Name 42 "a5" Name 43 "a5" Name 46 "@entryPointOutput" Name 47 "param" Name 49 "param" Name 51 "param" Name 53 "param" Name 55 "param" Decorate 31(a1) Location 0 Decorate 34(a2) Location 1 Decorate 37(a3) Location 2 Decorate 40(a4) Location 3 Decorate 43(a5) Location 4 Decorate 46(@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) 8(ptr) 8(ptr) 8(ptr) 8(ptr) 30: TypePointer Input 7(fvec4) 31(a1): 30(ptr) Variable Input 34(a2): 30(ptr) Variable Input 37(a3): 30(ptr) Variable Input 40(a4): 30(ptr) Variable Input 43(a5): 30(ptr) Variable Input 45: TypePointer Output 7(fvec4) 46(@entryPointOutput): 45(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 29(a1): 8(ptr) Variable Function 33(a2): 8(ptr) Variable Function 36(a3): 8(ptr) Variable Function 39(a4): 8(ptr) Variable Function 42(a5): 8(ptr) Variable Function 47(param): 8(ptr) Variable Function 49(param): 8(ptr) Variable Function 51(param): 8(ptr) Variable Function 53(param): 8(ptr) Variable Function 55(param): 8(ptr) Variable Function 32: 7(fvec4) Load 31(a1) Store 29(a1) 32 35: 7(fvec4) Load 34(a2) Store 33(a2) 35 38: 7(fvec4) Load 37(a3) Store 36(a3) 38 41: 7(fvec4) Load 40(a4) Store 39(a4) 41 44: 7(fvec4) Load 43(a5) Store 42(a5) 44 48: 7(fvec4) Load 29(a1) Store 47(param) 48 50: 7(fvec4) Load 33(a2) Store 49(param) 50 52: 7(fvec4) Load 36(a3) Store 51(param) 52 54: 7(fvec4) Load 39(a4) Store 53(param) 54 56: 7(fvec4) Load 42(a5) Store 55(param) 56 57: 7(fvec4) FunctionCall 15(@PixelShaderFunction(vf4;vf4;vf4;vf4;vf4;) 47(param) 49(param) 51(param) 53(param) 55(param) Store 46(@entryPointOutput) 57 Return FunctionEnd 15(@PixelShaderFunction(vf4;vf4;vf4;vf4;vf4;): 7(fvec4) Function None 9 10(a1): 8(ptr) FunctionParameter 11(a2): 8(ptr) FunctionParameter 12(a3): 8(ptr) FunctionParameter 13(a4): 8(ptr) FunctionParameter 14(a5): 8(ptr) FunctionParameter 16: Label 17: 7(fvec4) Load 14(a5) Store 13(a4) 17 Store 12(a3) 17 Store 11(a2) 17 Store 10(a1) 17 18: 7(fvec4) Load 10(a1) 19: 7(fvec4) Load 11(a2) 20: 7(fvec4) FAdd 18 19 21: 7(fvec4) Load 12(a3) 22: 7(fvec4) FAdd 20 21 23: 7(fvec4) Load 13(a4) 24: 7(fvec4) FAdd 22 23 25: 7(fvec4) Load 14(a5) 26: 7(fvec4) FAdd 24 25 ReturnValue 26 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.attribute.expression.comp.out000066400000000000000000000114101506534232700252740ustar00rootroot00000000000000hlsl.attribute.expression.comp Shader version: 500 local_size = (4, 6, 8) 0:? Sequence 0:9 Function Definition: @main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp int) 0:11 'x' ( temp int) 0:11 Constant: 0:11 0 (const int) 0:11 Loop with condition tested first: Unroll 0:11 Loop Condition 0:11 Compare Less Than ( temp bool) 0:11 'x' ( temp int) 0:11 bound: direct index for structure ( uniform int) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform int bound}) 0:11 Constant: 0:11 0 (const uint) 0:11 No loop body 0:11 Loop Terminal Expression 0:11 Pre-Increment ( temp int) 0:11 'x' ( temp int) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int bound}) Linked compute stage: Shader version: 500 local_size = (4, 6, 8) 0:? Sequence 0:9 Function Definition: @main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp int) 0:11 'x' ( temp int) 0:11 Constant: 0:11 0 (const int) 0:11 Loop with condition tested first: Unroll 0:11 Loop Condition 0:11 Compare Less Than ( temp bool) 0:11 'x' ( temp int) 0:11 bound: direct index for structure ( uniform int) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform int bound}) 0:11 Constant: 0:11 0 (const uint) 0:11 No loop body 0:11 Loop Terminal Expression 0:11 Pre-Increment ( temp int) 0:11 'x' ( temp int) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int bound}) // 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 4 6 8 Source HLSL 500 Name 4 "main" Name 6 "@main(" Name 10 "x" Name 18 "$Global" MemberName 18($Global) 0 "bound" Name 20 "" Decorate 18($Global) Block MemberDecorate 18($Global) 0 Offset 0 Decorate 20 Binding 0 Decorate 20 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeInt 32 1 9: TypePointer Function 8(int) 11: 8(int) Constant 0 18($Global): TypeStruct 8(int) 19: TypePointer Uniform 18($Global) 20: 19(ptr) Variable Uniform 21: TypePointer Uniform 8(int) 24: TypeBool 27: 8(int) Constant 1 4(main): 2 Function None 3 5: Label 29: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label 10(x): 9(ptr) Variable Function Store 10(x) 11 Branch 12 12: Label LoopMerge 14 15 Unroll Branch 16 16: Label 17: 8(int) Load 10(x) 22: 21(ptr) AccessChain 20 11 23: 8(int) Load 22 25: 24(bool) SLessThan 17 23 BranchConditional 25 13 14 13: Label Branch 15 15: Label 26: 8(int) Load 10(x) 28: 8(int) IAdd 26 27 Store 10(x) 28 Branch 12 14: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.attribute.frag.out000066400000000000000000000101101506534232700230530ustar00rootroot00000000000000hlsl.attribute.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4; ( temp void) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:11 Test condition and select ( temp void): DontFlatten 0:11 Condition 0:11 Constant: 0:11 false (const bool) 0:11 true case is null 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 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: @PixelShaderFunction(vf4; ( temp void) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:11 Test condition and select ( temp void): DontFlatten 0:11 Condition 0:11 Constant: 0:11 false (const bool) 0:11 true case is null 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 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 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 19 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "@PixelShaderFunction(vf4;" Name 10 "input" Name 17 "input" Name 19 "input" Name 21 "param" Decorate 19(input) 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: TypeBool 14: 13(bool) ConstantFalse 18: TypePointer Input 7(fvec4) 19(input): 18(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 17(input): 8(ptr) Variable Function 21(param): 8(ptr) Variable Function 20: 7(fvec4) Load 19(input) Store 17(input) 20 22: 7(fvec4) Load 17(input) Store 21(param) 22 23: 2 FunctionCall 11(@PixelShaderFunction(vf4;) 21(param) Return FunctionEnd 11(@PixelShaderFunction(vf4;): 2 Function None 9 10(input): 8(ptr) FunctionParameter 12: Label SelectionMerge 16 DontFlatten BranchConditional 14 15 16 15: Label Branch 16 16: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.attributeC11.frag.out000066400000000000000000000233021506534232700233270ustar00rootroot00000000000000hlsl.attributeC11.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:20 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:20 Function Parameters: 0:20 'input' ( in 4-component vector of float) 0:? Sequence 0:21 Branch: Return with expression 0:21 add ( temp 4-component vector of float) 0:21 'input' ( in 4-component vector of float) 0:21 textureFetch ( temp 4-component vector of float) 0:21 'attach' ( uniform texture2D) 0:21 vector swizzle ( temp int) 0:21 Constant: 0:21 0 (const int) 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp int) 0:21 Constant: 0:21 0 (const int) 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=8) in 4-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float) 0:20 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'buffer1' (layout( set=0 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 2-component vector of float f} @data}) 0:? 'buffer3' (layout( set=2 binding=3 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 2-component vector of float f} @data}) 0:? 'attach' ( uniform texture2D) 0:? 'ci' ( specialization-constant const int) 0:? 11 (const int) 0:? 'anon@0' (layout( row_major std430 push_constant) uniform block{layout( row_major std430 offset=0) uniform int a}) 0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float) 0:? 'input' (layout( location=8) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:20 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:20 Function Parameters: 0:20 'input' ( in 4-component vector of float) 0:? Sequence 0:21 Branch: Return with expression 0:21 add ( temp 4-component vector of float) 0:21 'input' ( in 4-component vector of float) 0:21 textureFetch ( temp 4-component vector of float) 0:21 'attach' ( uniform texture2D) 0:21 vector swizzle ( temp int) 0:21 Constant: 0:21 0 (const int) 0:21 0 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp int) 0:21 Constant: 0:21 0 (const int) 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=8) in 4-component vector of float) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float) 0:20 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'buffer1' (layout( set=0 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 2-component vector of float f} @data}) 0:? 'buffer3' (layout( set=2 binding=3 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 2-component vector of float f} @data}) 0:? 'attach' ( uniform texture2D) 0:? 'ci' ( specialization-constant const int) 0:? 11 (const int) 0:? 'anon@0' (layout( row_major std430 push_constant) uniform block{layout( row_major std430 offset=0) uniform int a}) 0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float) 0:? 'input' (layout( location=8) in 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 51 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 33 36 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "input" Name 16 "attach" Name 31 "input" Name 33 "input" Name 36 "@entryPointOutput" Name 37 "param" Name 41 "S" MemberName 41(S) 0 "f" Name 43 "buffer1" MemberName 43(buffer1) 0 "@data" Name 45 "buffer1" Name 46 "buffer3" Name 47 "ci" Name 48 "pcBuf" MemberName 48(pcBuf) 0 "a" Name 50 "" Decorate 16(attach) Binding 0 Decorate 16(attach) DescriptorSet 0 Decorate 16(attach) InputAttachmentIndex 4 Decorate 33(input) Location 8 Decorate 36(@entryPointOutput) Location 7 MemberDecorate 41(S) 0 Offset 0 Decorate 42 ArrayStride 8 Decorate 43(buffer1) BufferBlock MemberDecorate 43(buffer1) 0 NonWritable MemberDecorate 43(buffer1) 0 Offset 0 Decorate 45(buffer1) NonWritable Decorate 45(buffer1) Binding 1 Decorate 45(buffer1) DescriptorSet 0 Decorate 46(buffer3) NonWritable Decorate 46(buffer3) Binding 3 Decorate 46(buffer3) DescriptorSet 2 Decorate 47(ci) SpecId 13 Decorate 48(pcBuf) Block MemberDecorate 48(pcBuf) 0 Offset 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: TypeImage 6(float) 2D sampled format:Unknown 15: TypePointer UniformConstant 14 16(attach): 15(ptr) Variable UniformConstant 18: TypeInt 32 1 19: TypeVector 18(int) 2 20: 18(int) Constant 0 21: 19(ivec2) ConstantComposite 20 20 22: TypeInt 32 0 23: 22(int) Constant 0 25: 22(int) Constant 1 32: TypePointer Input 7(fvec4) 33(input): 32(ptr) Variable Input 35: TypePointer Output 7(fvec4) 36(@entryPointOutput): 35(ptr) Variable Output 40: TypeVector 6(float) 2 41(S): TypeStruct 40(fvec2) 42: TypeRuntimeArray 41(S) 43(buffer1): TypeStruct 42 44: TypePointer Uniform 43(buffer1) 45(buffer1): 44(ptr) Variable Uniform 46(buffer3): 44(ptr) Variable Uniform 47(ci): 18(int) SpecConstant 11 48(pcBuf): TypeStruct 18(int) 49: TypePointer PushConstant 48(pcBuf) 50: 49(ptr) Variable PushConstant 4(main): 2 Function None 3 5: Label 31(input): 8(ptr) Variable Function 37(param): 8(ptr) Variable Function 34: 7(fvec4) Load 33(input) Store 31(input) 34 38: 7(fvec4) Load 31(input) Store 37(param) 38 39: 7(fvec4) FunctionCall 11(@main(vf4;) 37(param) Store 36(@entryPointOutput) 39 Return FunctionEnd 11(@main(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 13: 7(fvec4) Load 10(input) 17: 14 Load 16(attach) 24: 18(int) CompositeExtract 21 0 26: 18(int) CompositeExtract 21 1 27: 7(fvec4) ImageFetch 17 24 Lod 26 28: 7(fvec4) FAdd 13 27 ReturnValue 28 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out000066400000000000000000000125771506534232700253510ustar00rootroot00000000000000hlsl.attributeGlobalBuffer.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: @main( ( temp 4-component vector of float) 0:6 Function Parameters: 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp 4-component vector of float) 0:7 u1: direct index for structure ( uniform 4-component vector of float) 0:7 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2}) 0:7 Constant: 0:7 0 (const uint) 0:7 u2: direct index for structure ( uniform 4-component vector of float) 0:7 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2}) 0:7 Constant: 0:7 1 (const uint) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: @main( ( temp 4-component vector of float) 0:6 Function Parameters: 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp 4-component vector of float) 0:7 u1: direct index for structure ( uniform 4-component vector of float) 0:7 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2}) 0:7 Constant: 0:7 0 (const uint) 0:7 u2: direct index for structure ( uniform 4-component vector of float) 0:7 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2}) 0:7 Constant: 0:7 1 (const uint) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 26 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 11 "$Global" MemberName 11($Global) 0 "u1" MemberName 11($Global) 1 "u2" Name 13 "" Name 26 "@entryPointOutput" Decorate 11($Global) Block MemberDecorate 11($Global) 0 Offset 0 MemberDecorate 11($Global) 1 Offset 16 Decorate 13 Binding 5 Decorate 13 DescriptorSet 2 Decorate 26(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11($Global): TypeStruct 7(fvec4) 7(fvec4) 12: TypePointer Uniform 11($Global) 13: 12(ptr) Variable Uniform 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Uniform 7(fvec4) 19: 14(int) Constant 1 25: TypePointer Output 7(fvec4) 26(@entryPointOutput): 25(ptr) Variable Output 4(main): 2 Function None 3 5: Label 27: 7(fvec4) FunctionCall 9(@main() Store 26(@entryPointOutput) 27 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 17: 16(ptr) AccessChain 13 15 18: 7(fvec4) Load 17 20: 16(ptr) AccessChain 13 19 21: 7(fvec4) Load 20 22: 7(fvec4) FAdd 18 21 ReturnValue 22 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.automap.frag.out000066400000000000000000000036661506534232700225400ustar00rootroot00000000000000hlsl.automap.frag Uniform reflection: t1: offset -1, type 8b5d, size 1, index -1, binding 11, stages 16 t2: offset -1, type 8b5e, size 1, index -1, binding 12, stages 16 t3: offset -1, type 8b5f, size 1, index -1, binding 13, stages 16 t4.@data: offset 0, type 8b52, size 1, index 0, binding -1, stages 16, arrayStride 16, topLevelArrayStride 16 t5.@data: offset 0, type 1405, size 0, index 1, binding -1, stages 16, arrayStride 4, topLevelArrayStride 4 t6: offset -1, type 8dc2, size 1, index -1, binding 16, stages 16 s1: offset -1, type 0, size 1, index -1, binding 31, stages 16 s2: offset -1, type 0, size 1, index -1, binding 32, stages 16 u1: offset -1, type 904c, size 1, index -1, binding 41, stages 16 u2: offset -1, type 904d, size 1, index -1, binding 42, stages 16 u3: offset -1, type 904e, size 1, index -1, binding 43, stages 16 u4: offset -1, type 9051, size 1, index -1, binding 44, stages 16 u5.@data: offset 0, type 1405, size 0, index 2, binding -1, stages 16, arrayStride 4, topLevelArrayStride 4 u6.@data: offset 0, type 1406, size 1, index 3, binding -1, stages 16, arrayStride 4, topLevelArrayStride 4 cb1: offset 0, type 1404, size 1, index 4, binding -1, stages 16 tb1: offset 0, type 1404, size 1, index 5, binding -1, stages 16 Uniform block reflection: t4: offset -1, type ffffffff, size 16, index 0, binding 14, stages 16, numMembers 1 t5: offset -1, type ffffffff, size 4, index 1, binding 15, stages 16, numMembers 1 u5: offset -1, type ffffffff, size 4, index 2, binding 45, stages 16, numMembers 1 u6: offset -1, type ffffffff, size 4, index 3, binding 46, stages 16, numMembers 1 cb: offset -1, type ffffffff, size 4, index 4, binding 51, stages 16, numMembers 1 tb: offset -1, type ffffffff, size 4, index 5, binding 17, stages 16, numMembers 1 Buffer variable reflection: Buffer block reflection: Pipeline input reflection: Pipeline output reflection: @entryPointOutput: offset 0, type 8b52, size 1, index 0, binding -1, stages 16 glslang-16.0.0/Test/baseResults/hlsl.autosampledtextures.frag.out000066400000000000000000000076171506534232700252140ustar00rootroot00000000000000hlsl.autosampledtextures.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "MainPs" 36 40 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "MainPs" Name 8 "PS_INPUT" MemberName 8(PS_INPUT) 0 "vTextureCoords" Name 11 "PS_OUTPUT" MemberName 11(PS_OUTPUT) 0 "vColor" Name 14 "@MainPs(struct-PS_INPUT-vf21;" Name 13 "i" Name 17 "ps_output" Name 23 "g_tColor" Name 34 "i" Name 36 "i.vTextureCoords" Name 40 "@entryPointOutput.vColor" Name 41 "param" Decorate 23(g_tColor) Binding 0 Decorate 23(g_tColor) DescriptorSet 0 Decorate 36(i.vTextureCoords) Location 0 Decorate 40(@entryPointOutput.vColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8(PS_INPUT): TypeStruct 7(fvec2) 9: TypePointer Function 8(PS_INPUT) 10: TypeVector 6(float) 4 11(PS_OUTPUT): TypeStruct 10(fvec4) 12: TypeFunction 11(PS_OUTPUT) 9(ptr) 16: TypePointer Function 11(PS_OUTPUT) 18: TypeInt 32 1 19: 18(int) Constant 0 20: TypeImage 6(float) 2D sampled format:Unknown 21: TypeSampledImage 20 22: TypePointer UniformConstant 21 23(g_tColor): 22(ptr) Variable UniformConstant 25: TypePointer Function 7(fvec2) 29: TypePointer Function 10(fvec4) 35: TypePointer Input 7(fvec2) 36(i.vTextureCoords): 35(ptr) Variable Input 39: TypePointer Output 10(fvec4) 40(@entryPointOutput.vColor): 39(ptr) Variable Output 4(MainPs): 2 Function None 3 5: Label 34(i): 9(ptr) Variable Function 41(param): 9(ptr) Variable Function 37: 7(fvec2) Load 36(i.vTextureCoords) 38: 25(ptr) AccessChain 34(i) 19 Store 38 37 42: 8(PS_INPUT) Load 34(i) Store 41(param) 42 43:11(PS_OUTPUT) FunctionCall 14(@MainPs(struct-PS_INPUT-vf21;) 41(param) 44: 10(fvec4) CompositeExtract 43 0 Store 40(@entryPointOutput.vColor) 44 Return FunctionEnd 14(@MainPs(struct-PS_INPUT-vf21;):11(PS_OUTPUT) Function None 12 13(i): 9(ptr) FunctionParameter 15: Label 17(ps_output): 16(ptr) Variable Function 24: 21 Load 23(g_tColor) 26: 25(ptr) AccessChain 13(i) 19 27: 7(fvec2) Load 26 28: 10(fvec4) ImageSampleImplicitLod 24 27 30: 29(ptr) AccessChain 17(ps_output) 19 Store 30 28 31:11(PS_OUTPUT) Load 17(ps_output) ReturnValue 31 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.basic.comp.out000066400000000000000000000124021506534232700221560ustar00rootroot00000000000000hlsl.basic.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:4 Function Definition: @main(i1;i1; ( temp void) 0:4 Function Parameters: 0:4 'dti' ( in int) 0:4 'gti' ( in int) 0:? Sequence 0:5 subtract ( temp int) 0:5 'dti' ( in int) 0:5 'gti' ( in int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp int) 0:? 'dti' ( temp int) 0:? Construct int ( temp int) 0:? 'dti' ( in 3-component vector of int GlobalInvocationID) 0:4 move second child to first child ( temp int) 0:? 'gti' ( temp int) 0:? Construct int ( temp int) 0:? 'gti' ( in 3-component vector of int LocalInvocationID) 0:4 Function Call: @main(i1;i1; ( temp void) 0:? 'dti' ( temp int) 0:? 'gti' ( temp int) 0:? Linker Objects 0:? 'a' ( shared 100-element array of 4-component vector of float) 0:? 'dti' ( in 3-component vector of int GlobalInvocationID) 0:? 'gti' ( in 3-component vector of int LocalInvocationID) Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:4 Function Definition: @main(i1;i1; ( temp void) 0:4 Function Parameters: 0:4 'dti' ( in int) 0:4 'gti' ( in int) 0:? Sequence 0:5 subtract ( temp int) 0:5 'dti' ( in int) 0:5 'gti' ( in int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp int) 0:? 'dti' ( temp int) 0:? Construct int ( temp int) 0:? 'dti' ( in 3-component vector of int GlobalInvocationID) 0:4 move second child to first child ( temp int) 0:? 'gti' ( temp int) 0:? Construct int ( temp int) 0:? 'gti' ( in 3-component vector of int LocalInvocationID) 0:4 Function Call: @main(i1;i1; ( temp void) 0:? 'dti' ( temp int) 0:? 'gti' ( temp int) 0:? Linker Objects 0:? 'a' ( shared 100-element array of 4-component vector of float) 0:? 'dti' ( in 3-component vector of int GlobalInvocationID) 0:? 'gti' ( in 3-component vector of int LocalInvocationID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 19 23 ExecutionMode 4 LocalSize 1 1 1 Source HLSL 500 Name 4 "main" Name 11 "@main(i1;i1;" Name 9 "dti" Name 10 "gti" Name 16 "dti" Name 19 "dti" Name 22 "gti" Name 23 "gti" Name 26 "param" Name 28 "param" Name 37 "a" Decorate 19(dti) BuiltIn GlobalInvocationId Decorate 23(gti) BuiltIn LocalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFunction 2 7(ptr) 7(ptr) 17: TypeVector 6(int) 3 18: TypePointer Input 17(ivec3) 19(dti): 18(ptr) Variable Input 23(gti): 18(ptr) Variable Input 31: TypeFloat 32 32: TypeVector 31(float) 4 33: TypeInt 32 0 34: 33(int) Constant 100 35: TypeArray 32(fvec4) 34 36: TypePointer Workgroup 35 37(a): 36(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label 16(dti): 7(ptr) Variable Function 22(gti): 7(ptr) Variable Function 26(param): 7(ptr) Variable Function 28(param): 7(ptr) Variable Function 20: 17(ivec3) Load 19(dti) 21: 6(int) CompositeExtract 20 0 Store 16(dti) 21 24: 17(ivec3) Load 23(gti) 25: 6(int) CompositeExtract 24 0 Store 22(gti) 25 27: 6(int) Load 16(dti) Store 26(param) 27 29: 6(int) Load 22(gti) Store 28(param) 29 30: 2 FunctionCall 11(@main(i1;i1;) 26(param) 28(param) Return FunctionEnd 11(@main(i1;i1;): 2 Function None 8 9(dti): 7(ptr) FunctionParameter 10(gti): 7(ptr) FunctionParameter 12: Label 13: 6(int) Load 9(dti) 14: 6(int) Load 10(gti) 15: 6(int) ISub 13 14 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.basic.geom.out000066400000000000000000000346711506534232700221630ustar00rootroot00000000000000hlsl.basic.geom Shader version: 500 invocations = -1 max_vertices = 4 input primitive = triangles output primitive = line_strip 0:? Sequence 0:16 Function Definition: @main(u1[3];u1[3];struct-PSInput-f1-i11; ( temp void) 0:16 Function Parameters: 0:16 'VertexID' ( in 3-element array of uint) 0:16 'test' ( in 3-element array of uint) 0:16 'OutputStream' ( out structure{ temp float myfloat, temp int something}) 0:? Sequence 0:19 move second child to first child ( temp float) 0:19 myfloat: direct index for structure ( temp float) 0:19 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:19 Constant: 0:19 0 (const int) 0:19 Convert uint to float ( temp float) 0:19 add ( temp uint) 0:19 add ( temp uint) 0:19 direct index ( temp uint) 0:19 'test' ( in 3-element array of uint) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp uint) 0:19 'test' ( in 3-element array of uint) 0:19 Constant: 0:19 1 (const int) 0:19 direct index ( temp uint) 0:19 'test' ( in 3-element array of uint) 0:19 Constant: 0:19 2 (const int) 0:20 move second child to first child ( temp int) 0:20 something: direct index for structure ( temp int) 0:20 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:20 Constant: 0:20 1 (const int) 0:20 Convert uint to int ( temp int) 0:20 direct index ( temp uint) 0:20 'VertexID' ( in 3-element array of uint) 0:20 Constant: 0:20 0 (const int) 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:? 'OutputStream.myfloat' (layout( location=0) out float) 0:22 myfloat: direct index for structure ( temp float) 0:22 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp int) 0:? 'OutputStream.something' (layout( location=1) out int) 0:22 something: direct index for structure ( temp int) 0:22 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:22 Constant: 0:22 1 (const int) 0:22 EmitVertex ( temp void) 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp float) 0:? 'OutputStream.myfloat' (layout( location=0) out float) 0:23 myfloat: direct index for structure ( temp float) 0:23 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:23 Constant: 0:23 0 (const int) 0:23 move second child to first child ( temp int) 0:? 'OutputStream.something' (layout( location=1) out int) 0:23 something: direct index for structure ( temp int) 0:23 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:23 Constant: 0:23 1 (const int) 0:23 EmitVertex ( temp void) 0:24 EndPrimitive ( temp void) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:16 move second child to first child ( temp 3-element array of uint) 0:? 'test' ( temp 3-element array of uint) 0:? 'test' (layout( location=1) in 3-element array of uint) 0:16 Function Call: @main(u1[3];u1[3];struct-PSInput-f1-i11; ( temp void) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'test' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp float myfloat, temp int something}) 0:? Linker Objects 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'test' (layout( location=1) in 3-element array of uint) 0:? 'OutputStream.myfloat' (layout( location=0) out float) 0:? 'OutputStream.something' (layout( location=1) out int) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 4 input primitive = triangles output primitive = line_strip 0:? Sequence 0:16 Function Definition: @main(u1[3];u1[3];struct-PSInput-f1-i11; ( temp void) 0:16 Function Parameters: 0:16 'VertexID' ( in 3-element array of uint) 0:16 'test' ( in 3-element array of uint) 0:16 'OutputStream' ( out structure{ temp float myfloat, temp int something}) 0:? Sequence 0:19 move second child to first child ( temp float) 0:19 myfloat: direct index for structure ( temp float) 0:19 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:19 Constant: 0:19 0 (const int) 0:19 Convert uint to float ( temp float) 0:19 add ( temp uint) 0:19 add ( temp uint) 0:19 direct index ( temp uint) 0:19 'test' ( in 3-element array of uint) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp uint) 0:19 'test' ( in 3-element array of uint) 0:19 Constant: 0:19 1 (const int) 0:19 direct index ( temp uint) 0:19 'test' ( in 3-element array of uint) 0:19 Constant: 0:19 2 (const int) 0:20 move second child to first child ( temp int) 0:20 something: direct index for structure ( temp int) 0:20 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:20 Constant: 0:20 1 (const int) 0:20 Convert uint to int ( temp int) 0:20 direct index ( temp uint) 0:20 'VertexID' ( in 3-element array of uint) 0:20 Constant: 0:20 0 (const int) 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:? 'OutputStream.myfloat' (layout( location=0) out float) 0:22 myfloat: direct index for structure ( temp float) 0:22 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp int) 0:? 'OutputStream.something' (layout( location=1) out int) 0:22 something: direct index for structure ( temp int) 0:22 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:22 Constant: 0:22 1 (const int) 0:22 EmitVertex ( temp void) 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp float) 0:? 'OutputStream.myfloat' (layout( location=0) out float) 0:23 myfloat: direct index for structure ( temp float) 0:23 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:23 Constant: 0:23 0 (const int) 0:23 move second child to first child ( temp int) 0:? 'OutputStream.something' (layout( location=1) out int) 0:23 something: direct index for structure ( temp int) 0:23 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:23 Constant: 0:23 1 (const int) 0:23 EmitVertex ( temp void) 0:24 EndPrimitive ( temp void) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:16 move second child to first child ( temp 3-element array of uint) 0:? 'test' ( temp 3-element array of uint) 0:? 'test' (layout( location=1) in 3-element array of uint) 0:16 Function Call: @main(u1[3];u1[3];struct-PSInput-f1-i11; ( temp void) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'test' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp float myfloat, temp int something}) 0:? Linker Objects 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'test' (layout( location=1) in 3-element array of uint) 0:? 'OutputStream.myfloat' (layout( location=0) out float) 0:? 'OutputStream.something' (layout( location=1) out int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 68 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 42 46 55 58 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 4 Source HLSL 500 Name 4 "main" Name 12 "PSInput" MemberName 12(PSInput) 0 "myfloat" MemberName 12(PSInput) 1 "something" Name 18 "@main(u1[3];u1[3];struct-PSInput-f1-i11;" Name 15 "VertexID" Name 16 "test" Name 17 "OutputStream" Name 20 "Vert" Name 42 "OutputStream.myfloat" Name 46 "OutputStream.something" Name 53 "VertexID" Name 55 "VertexID" Name 57 "test" Name 58 "test" Name 60 "OutputStream" Name 61 "param" Name 63 "param" Name 65 "param" Decorate 42(OutputStream.myfloat) Location 0 Decorate 46(OutputStream.something) Location 1 Decorate 55(VertexID) Location 0 Decorate 58(test) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 3 8: TypeArray 6(int) 7 9: TypePointer Function 8 10: TypeFloat 32 11: TypeInt 32 1 12(PSInput): TypeStruct 10(float) 11(int) 13: TypePointer Function 12(PSInput) 14: TypeFunction 2 9(ptr) 9(ptr) 13(ptr) 21: 11(int) Constant 0 22: TypePointer Function 6(int) 25: 11(int) Constant 1 29: 11(int) Constant 2 34: TypePointer Function 10(float) 39: TypePointer Function 11(int) 41: TypePointer Output 10(float) 42(OutputStream.myfloat): 41(ptr) Variable Output 45: TypePointer Output 11(int) 46(OutputStream.something): 45(ptr) Variable Output 54: TypePointer Input 8 55(VertexID): 54(ptr) Variable Input 58(test): 54(ptr) Variable Input 4(main): 2 Function None 3 5: Label 53(VertexID): 9(ptr) Variable Function 57(test): 9(ptr) Variable Function 60(OutputStream): 13(ptr) Variable Function 61(param): 9(ptr) Variable Function 63(param): 9(ptr) Variable Function 65(param): 13(ptr) Variable Function 56: 8 Load 55(VertexID) Store 53(VertexID) 56 59: 8 Load 58(test) Store 57(test) 59 62: 8 Load 53(VertexID) Store 61(param) 62 64: 8 Load 57(test) Store 63(param) 64 66: 2 FunctionCall 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;) 61(param) 63(param) 65(param) 67: 12(PSInput) Load 65(param) Store 60(OutputStream) 67 Return FunctionEnd 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;): 2 Function None 14 15(VertexID): 9(ptr) FunctionParameter 16(test): 9(ptr) FunctionParameter 17(OutputStream): 13(ptr) FunctionParameter 19: Label 20(Vert): 13(ptr) Variable Function 23: 22(ptr) AccessChain 16(test) 21 24: 6(int) Load 23 26: 22(ptr) AccessChain 16(test) 25 27: 6(int) Load 26 28: 6(int) IAdd 24 27 30: 22(ptr) AccessChain 16(test) 29 31: 6(int) Load 30 32: 6(int) IAdd 28 31 33: 10(float) ConvertUToF 32 35: 34(ptr) AccessChain 20(Vert) 21 Store 35 33 36: 22(ptr) AccessChain 15(VertexID) 21 37: 6(int) Load 36 38: 11(int) Bitcast 37 40: 39(ptr) AccessChain 20(Vert) 25 Store 40 38 43: 34(ptr) AccessChain 20(Vert) 21 44: 10(float) Load 43 Store 42(OutputStream.myfloat) 44 47: 39(ptr) AccessChain 20(Vert) 25 48: 11(int) Load 47 Store 46(OutputStream.something) 48 EmitVertex 49: 34(ptr) AccessChain 20(Vert) 21 50: 10(float) Load 49 Store 42(OutputStream.myfloat) 50 51: 39(ptr) AccessChain 20(Vert) 25 52: 11(int) Load 51 Store 46(OutputStream.something) 52 EmitVertex EndPrimitive Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.boolConv.vert.out000066400000000000000000000322261506534232700227060ustar00rootroot00000000000000hlsl.boolConv.vert Shader version: 500 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp bool) 0:1 'b' ( global bool) 0:1 Constant: 0:1 true (const bool) 0:3 Function Definition: @main( ( temp 4-component vector of float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp int) 0:4 'r' ( temp int) 0:4 Constant: 0:4 0 (const int) 0:6 add second child into first child ( temp int) 0:6 'r' ( temp int) 0:6 add ( temp int) 0:6 Convert bool to int ( temp int) 0:6 'a' ( global bool) 0:6 Convert bool to int ( temp int) 0:6 'b' ( global bool) 0:7 add second child into first child ( temp int) 0:7 'r' ( temp int) 0:7 subtract ( temp int) 0:7 Convert bool to int ( temp int) 0:7 'a' ( global bool) 0:7 Convert bool to int ( temp int) 0:7 'b' ( global bool) 0:8 add second child into first child ( temp int) 0:8 'r' ( temp int) 0:8 component-wise multiply ( temp int) 0:8 Convert bool to int ( temp int) 0:8 'a' ( global bool) 0:8 Convert bool to int ( temp int) 0:8 'b' ( global bool) 0:9 add second child into first child ( temp int) 0:9 'r' ( temp int) 0:9 divide ( temp int) 0:9 Convert bool to int ( temp int) 0:9 'a' ( global bool) 0:9 Convert bool to int ( temp int) 0:9 'b' ( global bool) 0:10 add second child into first child ( temp int) 0:10 'r' ( temp int) 0:10 mod ( temp int) 0:10 Convert bool to int ( temp int) 0:10 'a' ( global bool) 0:10 Convert bool to int ( temp int) 0:10 'b' ( global bool) 0:12 add second child into first child ( temp int) 0:12 'r' ( temp int) 0:12 bitwise and ( temp int) 0:12 Convert bool to int ( temp int) 0:12 'a' ( global bool) 0:12 Convert bool to int ( temp int) 0:12 'b' ( global bool) 0:13 add second child into first child ( temp int) 0:13 'r' ( temp int) 0:13 inclusive-or ( temp int) 0:13 Convert bool to int ( temp int) 0:13 'a' ( global bool) 0:13 Convert bool to int ( temp int) 0:13 'b' ( global bool) 0:14 add second child into first child ( temp int) 0:14 'r' ( temp int) 0:14 exclusive-or ( temp int) 0:14 Convert bool to int ( temp int) 0:14 'a' ( global bool) 0:14 Convert bool to int ( temp int) 0:14 'b' ( global bool) 0:16 add second child into first child ( temp int) 0:16 'r' ( temp int) 0:16 left-shift ( temp int) 0:16 Convert bool to int ( temp int) 0:16 'a' ( global bool) 0:16 Convert bool to int ( temp int) 0:16 'b' ( global bool) 0:17 add second child into first child ( temp int) 0:17 'r' ( temp int) 0:17 right-shift ( temp int) 0:17 Convert bool to int ( temp int) 0:17 'a' ( global bool) 0:17 Convert bool to int ( temp int) 0:17 'b' ( global bool) 0:19 Branch: Return with expression 0:19 Construct vec4 ( temp 4-component vector of float) 0:19 Convert int to float ( temp float) 0:19 'r' ( temp int) 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:3 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'a' ( global bool) 0:? 'b' ( global bool) 0:? '@entryPointOutput' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp bool) 0:1 'b' ( global bool) 0:1 Constant: 0:1 true (const bool) 0:3 Function Definition: @main( ( temp 4-component vector of float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp int) 0:4 'r' ( temp int) 0:4 Constant: 0:4 0 (const int) 0:6 add second child into first child ( temp int) 0:6 'r' ( temp int) 0:6 add ( temp int) 0:6 Convert bool to int ( temp int) 0:6 'a' ( global bool) 0:6 Convert bool to int ( temp int) 0:6 'b' ( global bool) 0:7 add second child into first child ( temp int) 0:7 'r' ( temp int) 0:7 subtract ( temp int) 0:7 Convert bool to int ( temp int) 0:7 'a' ( global bool) 0:7 Convert bool to int ( temp int) 0:7 'b' ( global bool) 0:8 add second child into first child ( temp int) 0:8 'r' ( temp int) 0:8 component-wise multiply ( temp int) 0:8 Convert bool to int ( temp int) 0:8 'a' ( global bool) 0:8 Convert bool to int ( temp int) 0:8 'b' ( global bool) 0:9 add second child into first child ( temp int) 0:9 'r' ( temp int) 0:9 divide ( temp int) 0:9 Convert bool to int ( temp int) 0:9 'a' ( global bool) 0:9 Convert bool to int ( temp int) 0:9 'b' ( global bool) 0:10 add second child into first child ( temp int) 0:10 'r' ( temp int) 0:10 mod ( temp int) 0:10 Convert bool to int ( temp int) 0:10 'a' ( global bool) 0:10 Convert bool to int ( temp int) 0:10 'b' ( global bool) 0:12 add second child into first child ( temp int) 0:12 'r' ( temp int) 0:12 bitwise and ( temp int) 0:12 Convert bool to int ( temp int) 0:12 'a' ( global bool) 0:12 Convert bool to int ( temp int) 0:12 'b' ( global bool) 0:13 add second child into first child ( temp int) 0:13 'r' ( temp int) 0:13 inclusive-or ( temp int) 0:13 Convert bool to int ( temp int) 0:13 'a' ( global bool) 0:13 Convert bool to int ( temp int) 0:13 'b' ( global bool) 0:14 add second child into first child ( temp int) 0:14 'r' ( temp int) 0:14 exclusive-or ( temp int) 0:14 Convert bool to int ( temp int) 0:14 'a' ( global bool) 0:14 Convert bool to int ( temp int) 0:14 'b' ( global bool) 0:16 add second child into first child ( temp int) 0:16 'r' ( temp int) 0:16 left-shift ( temp int) 0:16 Convert bool to int ( temp int) 0:16 'a' ( global bool) 0:16 Convert bool to int ( temp int) 0:16 'b' ( global bool) 0:17 add second child into first child ( temp int) 0:17 'r' ( temp int) 0:17 right-shift ( temp int) 0:17 Convert bool to int ( temp int) 0:17 'a' ( global bool) 0:17 Convert bool to int ( temp int) 0:17 'b' ( global bool) 0:19 Branch: Return with expression 0:19 Construct vec4 ( temp 4-component vector of float) 0:19 Convert int to float ( temp float) 0:19 'r' ( temp int) 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:3 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'a' ( global bool) 0:? 'b' ( global bool) 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 99 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 97 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "b" Name 17 "r" Name 19 "a" Name 97 "@entryPointOutput" Decorate 97(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeBool 12: TypePointer Private 11(bool) 13(b): 12(ptr) Variable Private 14: 11(bool) ConstantTrue 15: TypeInt 32 1 16: TypePointer Function 15(int) 18: 15(int) Constant 0 19(a): 12(ptr) Variable Private 21: 15(int) Constant 1 96: TypePointer Output 7(fvec4) 97(@entryPointOutput): 96(ptr) Variable Output 4(main): 2 Function None 3 5: Label Store 13(b) 14 98: 7(fvec4) FunctionCall 9(@main() Store 97(@entryPointOutput) 98 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 17(r): 16(ptr) Variable Function Store 17(r) 18 20: 11(bool) Load 19(a) 22: 15(int) Select 20 21 18 23: 11(bool) Load 13(b) 24: 15(int) Select 23 21 18 25: 15(int) IAdd 22 24 26: 15(int) Load 17(r) 27: 15(int) IAdd 26 25 Store 17(r) 27 28: 11(bool) Load 19(a) 29: 15(int) Select 28 21 18 30: 11(bool) Load 13(b) 31: 15(int) Select 30 21 18 32: 15(int) ISub 29 31 33: 15(int) Load 17(r) 34: 15(int) IAdd 33 32 Store 17(r) 34 35: 11(bool) Load 19(a) 36: 15(int) Select 35 21 18 37: 11(bool) Load 13(b) 38: 15(int) Select 37 21 18 39: 15(int) IMul 36 38 40: 15(int) Load 17(r) 41: 15(int) IAdd 40 39 Store 17(r) 41 42: 11(bool) Load 19(a) 43: 15(int) Select 42 21 18 44: 11(bool) Load 13(b) 45: 15(int) Select 44 21 18 46: 15(int) SDiv 43 45 47: 15(int) Load 17(r) 48: 15(int) IAdd 47 46 Store 17(r) 48 49: 11(bool) Load 19(a) 50: 15(int) Select 49 21 18 51: 11(bool) Load 13(b) 52: 15(int) Select 51 21 18 53: 15(int) SMod 50 52 54: 15(int) Load 17(r) 55: 15(int) IAdd 54 53 Store 17(r) 55 56: 11(bool) Load 19(a) 57: 15(int) Select 56 21 18 58: 11(bool) Load 13(b) 59: 15(int) Select 58 21 18 60: 15(int) BitwiseAnd 57 59 61: 15(int) Load 17(r) 62: 15(int) IAdd 61 60 Store 17(r) 62 63: 11(bool) Load 19(a) 64: 15(int) Select 63 21 18 65: 11(bool) Load 13(b) 66: 15(int) Select 65 21 18 67: 15(int) BitwiseOr 64 66 68: 15(int) Load 17(r) 69: 15(int) IAdd 68 67 Store 17(r) 69 70: 11(bool) Load 19(a) 71: 15(int) Select 70 21 18 72: 11(bool) Load 13(b) 73: 15(int) Select 72 21 18 74: 15(int) BitwiseXor 71 73 75: 15(int) Load 17(r) 76: 15(int) IAdd 75 74 Store 17(r) 76 77: 11(bool) Load 19(a) 78: 15(int) Select 77 21 18 79: 11(bool) Load 13(b) 80: 15(int) Select 79 21 18 81: 15(int) ShiftLeftLogical 78 80 82: 15(int) Load 17(r) 83: 15(int) IAdd 82 81 Store 17(r) 83 84: 11(bool) Load 19(a) 85: 15(int) Select 84 21 18 86: 11(bool) Load 13(b) 87: 15(int) Select 86 21 18 88: 15(int) ShiftRightArithmetic 85 87 89: 15(int) Load 17(r) 90: 15(int) IAdd 89 88 Store 17(r) 90 91: 15(int) Load 17(r) 92: 6(float) ConvertSToF 91 93: 7(fvec4) CompositeConstruct 92 92 92 92 ReturnValue 93 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.buffer-offsets.comp.out000066400000000000000000000076051506534232700240260ustar00rootroot00000000000000hlsl.buffer-offsets.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:12 Function Definition: @main( ( temp void) 0:12 Function Parameters: 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'bIterData' (layout( binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 24-element array of float mIntegrationTrafo, temp 3-element array of float mWind, temp uint mIsTurning} @data}) Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:12 Function Definition: @main( ( temp void) 0:12 Function Parameters: 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'bIterData' (layout( binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 24-element array of float mIntegrationTrafo, temp 3-element array of float mWind, temp uint mIsTurning} @data}) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 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 15 "GfxIterationData" MemberName 15(GfxIterationData) 0 "mIntegrationTrafo" MemberName 15(GfxIterationData) 1 "mWind" MemberName 15(GfxIterationData) 2 "mIsTurning" Name 17 "bIterData" MemberName 17(bIterData) 0 "@data" Name 19 "bIterData" Decorate 12 ArrayStride 4 Decorate 14 ArrayStride 4 MemberDecorate 15(GfxIterationData) 0 Offset 0 MemberDecorate 15(GfxIterationData) 1 Offset 96 MemberDecorate 15(GfxIterationData) 2 Offset 108 Decorate 16 ArrayStride 112 Decorate 17(bIterData) BufferBlock MemberDecorate 17(bIterData) 0 NonWritable MemberDecorate 17(bIterData) 0 Offset 0 Decorate 19(bIterData) NonWritable Decorate 19(bIterData) Binding 2 Decorate 19(bIterData) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 9: TypeFloat 32 10: TypeInt 32 0 11: 10(int) Constant 24 12: TypeArray 9(float) 11 13: 10(int) Constant 3 14: TypeArray 9(float) 13 15(GfxIterationData): TypeStruct 12 14 10(int) 16: TypeRuntimeArray 15(GfxIterationData) 17(bIterData): TypeStruct 16 18: TypePointer Uniform 17(bIterData) 19(bIterData): 18(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 8: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.buffer.frag.out000066400000000000000000000533201506534232700223330ustar00rootroot00000000000000hlsl.buffer.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:30 Function Definition: foo( ( temp float) 0:30 Function Parameters: 0:? Sequence 0:31 Branch: Return with expression 0:31 Constant: 0:31 1.000000 0:43 Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a}) 0:43 Function Parameters: 0:43 'input' ( in 4-component vector of float) 0:? Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 a: direct index for structure ( temp 4-component vector of float) 0:45 'ret' ( temp structure{ temp 4-component vector of float a}) 0:45 Constant: 0:45 0 (const int) 0:45 add ( temp 4-component vector of float) 0:45 v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:45 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24}) 0:45 Constant: 0:45 0 (const uint) 0:45 vector-scale ( temp 4-component vector of float) 0:45 add ( temp 4-component vector of float) 0:45 add ( temp 4-component vector of float) 0:45 add ( temp 4-component vector of float) 0:45 add ( temp 4-component vector of float) 0:45 'input' ( in 4-component vector of float) 0:45 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1}) 0:45 Constant: 0:45 0 (const uint) 0:45 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float) 0:45 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2}) 0:45 Constant: 0:45 0 (const uint) 0:45 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float) 0:45 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3}) 0:45 Constant: 0:45 0 (const uint) 0:45 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float) 0:45 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4}) 0:45 Constant: 0:45 0 (const uint) 0:45 Function Call: foo( ( temp float) 0:46 Branch: Return with expression 0:46 'ret' ( temp structure{ temp 4-component vector of float a}) 0:43 Function Definition: PixelShaderFunction( ( temp void) 0:43 Function Parameters: 0:? Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' ( in 4-component vector of float FragCoord) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float) 0:43 a: direct index for structure ( temp 4-component vector of float) 0:43 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a}) 0:? 'input' ( temp 4-component vector of float) 0:43 Constant: 0:43 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1}) 0:? 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2}) 0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3}) 0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4}) 0:? 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24}) 0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float) 0:? 'input' ( in 4-component vector of float FragCoord) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:30 Function Definition: foo( ( temp float) 0:30 Function Parameters: 0:? Sequence 0:31 Branch: Return with expression 0:31 Constant: 0:31 1.000000 0:43 Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a}) 0:43 Function Parameters: 0:43 'input' ( in 4-component vector of float) 0:? Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 a: direct index for structure ( temp 4-component vector of float) 0:45 'ret' ( temp structure{ temp 4-component vector of float a}) 0:45 Constant: 0:45 0 (const int) 0:45 add ( temp 4-component vector of float) 0:45 v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:45 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24}) 0:45 Constant: 0:45 0 (const uint) 0:45 vector-scale ( temp 4-component vector of float) 0:45 add ( temp 4-component vector of float) 0:45 add ( temp 4-component vector of float) 0:45 add ( temp 4-component vector of float) 0:45 add ( temp 4-component vector of float) 0:45 'input' ( in 4-component vector of float) 0:45 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1}) 0:45 Constant: 0:45 0 (const uint) 0:45 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float) 0:45 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2}) 0:45 Constant: 0:45 0 (const uint) 0:45 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float) 0:45 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3}) 0:45 Constant: 0:45 0 (const uint) 0:45 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float) 0:45 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4}) 0:45 Constant: 0:45 0 (const uint) 0:45 Function Call: foo( ( temp float) 0:46 Branch: Return with expression 0:46 'ret' ( temp structure{ temp 4-component vector of float a}) 0:43 Function Definition: PixelShaderFunction( ( temp void) 0:43 Function Parameters: 0:? Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' ( in 4-component vector of float FragCoord) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float) 0:43 a: direct index for structure ( temp 4-component vector of float) 0:43 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a}) 0:? 'input' ( temp 4-component vector of float) 0:43 Constant: 0:43 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1}) 0:? 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2}) 0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3}) 0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4}) 0:? 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24}) 0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float) 0:? 'input' ( in 4-component vector of float FragCoord) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 65 68 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 8 "foo(" Name 12 "id" MemberName 12(id) 0 "a" Name 15 "@PixelShaderFunction(vf4;" Name 14 "input" Name 21 "ret" Name 24 "cbufName2" MemberName 24(cbufName2) 0 "v24" Name 26 "" Name 31 "buf1" MemberName 31(buf1) 0 "v1" Name 33 "" Name 37 "buf2" MemberName 37(buf2) 0 "v2" Name 39 "" Name 43 "cbufName" MemberName 43(cbufName) 0 "v3" MemberName 43(cbufName) 1 "i3" Name 45 "" Name 50 "tbufName" MemberName 50(tbufName) 0 "v4" MemberName 50(tbufName) 1 "i4" MemberName 50(tbufName) 2 "f1" MemberName 50(tbufName) 3 "f3" MemberName 50(tbufName) 4 "f4" MemberName 50(tbufName) 5 "f5" MemberName 50(tbufName) 6 "f6" MemberName 50(tbufName) 7 "f7" MemberName 50(tbufName) 8 "m1" MemberName 50(tbufName) 9 "m2" MemberName 50(tbufName) 10 "m3" MemberName 50(tbufName) 11 "m4" Name 52 "" Name 63 "input" Name 65 "input" Name 68 "@entryPointOutput.a" Name 69 "param" Decorate 24(cbufName2) Block MemberDecorate 24(cbufName2) 0 Offset 0 Decorate 26 Binding 3 Decorate 26 DescriptorSet 0 Decorate 31(buf1) Block MemberDecorate 31(buf1) 0 Offset 0 Decorate 33 Binding 0 Decorate 33 DescriptorSet 0 Decorate 37(buf2) BufferBlock MemberDecorate 37(buf2) 0 NonWritable MemberDecorate 37(buf2) 0 Offset 0 Decorate 39 NonWritable Decorate 39 Binding 1 Decorate 39 DescriptorSet 0 Decorate 43(cbufName) Block MemberDecorate 43(cbufName) 0 Offset 0 MemberDecorate 43(cbufName) 1 Offset 20 Decorate 45 Binding 2 Decorate 45 DescriptorSet 0 Decorate 50(tbufName) BufferBlock MemberDecorate 50(tbufName) 0 NonWritable MemberDecorate 50(tbufName) 0 Offset 16 MemberDecorate 50(tbufName) 1 NonWritable MemberDecorate 50(tbufName) 1 Offset 48 MemberDecorate 50(tbufName) 2 NonWritable MemberDecorate 50(tbufName) 2 Offset 60 MemberDecorate 50(tbufName) 3 NonWritable MemberDecorate 50(tbufName) 3 Offset 64 MemberDecorate 50(tbufName) 4 NonWritable MemberDecorate 50(tbufName) 4 Offset 68 MemberDecorate 50(tbufName) 5 NonWritable MemberDecorate 50(tbufName) 5 Offset 72 MemberDecorate 50(tbufName) 6 NonWritable MemberDecorate 50(tbufName) 6 Offset 76 MemberDecorate 50(tbufName) 7 NonWritable MemberDecorate 50(tbufName) 7 Offset 128 MemberDecorate 50(tbufName) 8 RowMajor MemberDecorate 50(tbufName) 8 MatrixStride 16 MemberDecorate 50(tbufName) 8 NonWritable MemberDecorate 50(tbufName) 8 Offset 112 MemberDecorate 50(tbufName) 9 ColMajor MemberDecorate 50(tbufName) 9 MatrixStride 16 MemberDecorate 50(tbufName) 9 NonWritable MemberDecorate 50(tbufName) 9 Offset 176 MemberDecorate 50(tbufName) 10 RowMajor MemberDecorate 50(tbufName) 10 MatrixStride 16 MemberDecorate 50(tbufName) 10 NonWritable MemberDecorate 50(tbufName) 10 Offset 240 MemberDecorate 50(tbufName) 11 RowMajor MemberDecorate 50(tbufName) 11 MatrixStride 16 MemberDecorate 50(tbufName) 11 NonWritable MemberDecorate 50(tbufName) 11 Offset 304 Decorate 52 NonWritable Decorate 52 Binding 8 Decorate 52 DescriptorSet 0 Decorate 65(input) BuiltIn FragCoord Decorate 68(@entryPointOutput.a) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypeVector 6(float) 4 11: TypePointer Function 10(fvec4) 12(id): TypeStruct 10(fvec4) 13: TypeFunction 12(id) 11(ptr) 17: 6(float) Constant 1065353216 20: TypePointer Function 12(id) 22: TypeInt 32 1 23: 22(int) Constant 0 24(cbufName2): TypeStruct 10(fvec4) 25: TypePointer Uniform 24(cbufName2) 26: 25(ptr) Variable Uniform 27: TypePointer Uniform 10(fvec4) 31(buf1): TypeStruct 10(fvec4) 32: TypePointer Uniform 31(buf1) 33: 32(ptr) Variable Uniform 37(buf2): TypeStruct 10(fvec4) 38: TypePointer Uniform 37(buf2) 39: 38(ptr) Variable Uniform 43(cbufName): TypeStruct 10(fvec4) 22(int) 44: TypePointer Uniform 43(cbufName) 45: 44(ptr) Variable Uniform 49: TypeMatrix 10(fvec4) 3 50(tbufName): TypeStruct 10(fvec4) 22(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 49 49 49 49 51: TypePointer Uniform 50(tbufName) 52: 51(ptr) Variable Uniform 64: TypePointer Input 10(fvec4) 65(input): 64(ptr) Variable Input 67: TypePointer Output 10(fvec4) 68(@entryPointOutput.a): 67(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 63(input): 11(ptr) Variable Function 69(param): 11(ptr) Variable Function 66: 10(fvec4) Load 65(input) Store 63(input) 66 70: 10(fvec4) Load 63(input) Store 69(param) 70 71: 12(id) FunctionCall 15(@PixelShaderFunction(vf4;) 69(param) 72: 10(fvec4) CompositeExtract 71 0 Store 68(@entryPointOutput.a) 72 Return FunctionEnd 8(foo(): 6(float) Function None 7 9: Label ReturnValue 17 FunctionEnd 15(@PixelShaderFunction(vf4;): 12(id) Function None 13 14(input): 11(ptr) FunctionParameter 16: Label 21(ret): 20(ptr) Variable Function 28: 27(ptr) AccessChain 26 23 29: 10(fvec4) Load 28 30: 10(fvec4) Load 14(input) 34: 27(ptr) AccessChain 33 23 35: 10(fvec4) Load 34 36: 10(fvec4) FAdd 30 35 40: 27(ptr) AccessChain 39 23 41: 10(fvec4) Load 40 42: 10(fvec4) FAdd 36 41 46: 27(ptr) AccessChain 45 23 47: 10(fvec4) Load 46 48: 10(fvec4) FAdd 42 47 53: 27(ptr) AccessChain 52 23 54: 10(fvec4) Load 53 55: 10(fvec4) FAdd 48 54 56: 6(float) FunctionCall 8(foo() 57: 10(fvec4) VectorTimesScalar 55 56 58: 10(fvec4) FAdd 29 57 59: 11(ptr) AccessChain 21(ret) 23 Store 59 58 60: 12(id) Load 21(ret) ReturnValue 60 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.buffer_ref_parameter.comp.out000066400000000000000000000476261506534232700252620ustar00rootroot00000000000000hlsl.buffer_ref_parameter.comp Shader version: 500 local_size = (64, 1, 1) 0:? Sequence 0:4 Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float) 0:4 Function Parameters: 0:4 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:4 'vertex_id' ( in uint) 0:? Sequence 0:5 Branch: Return with expression 0:? intBitsToFloat ( temp 3-component vector of float) 0:? Sequence 0:5 move second child to first child ( temp int) 0:5 'byteAddrTemp' ( temp int) 0:5 right-shift ( temp int) 0:5 component-wise multiply ( temp uint) 0:5 component-wise multiply ( temp uint) 0:5 'vertex_id' ( in uint) 0:5 Constant: 0:5 3 (const uint) 0:5 Constant: 0:5 4 (const uint) 0:5 Constant: 0:5 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:5 indirect index ( temp uint) 0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:5 Constant: 0:5 0 (const uint) 0:5 'byteAddrTemp' ( temp int) 0:5 indirect index ( temp uint) 0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:5 Constant: 0:5 0 (const uint) 0:5 add ( temp int) 0:5 'byteAddrTemp' ( temp int) 0:5 Constant: 0:5 1 (const int) 0:5 indirect index ( temp uint) 0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:5 Constant: 0:5 0 (const uint) 0:5 add ( temp int) 0:5 'byteAddrTemp' ( temp int) 0:5 Constant: 0:5 2 (const int) 0:9 Function Definition: @main(u1; ( temp void) 0:9 Function Parameters: 0:9 'gi' ( in uint) 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp 3-component vector of float) 0:10 'position_ms' ( temp 3-component vector of float) 0:10 Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float) 0:10 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 'gi' ( in uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 direct index ( temp uint) 0:12 floatBitsToUint ( temp 3-component vector of uint) 0:12 'position_ms' ( temp 3-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( temp uint) 0:12 floatBitsToUint ( temp 3-component vector of uint) 0:12 'position_ms' ( temp 3-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( temp uint) 0:12 floatBitsToUint ( temp 3-component vector of uint) 0:12 'position_ms' ( temp 3-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp uint) 0:? 'gi' ( temp uint) 0:? 'gi' ( in uint LocalInvocationIndex) 0:9 Function Call: @main(u1; ( temp void) 0:? 'gi' ( temp uint) 0:? Linker Objects 0:? 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'gi' ( in uint LocalInvocationIndex) Linked compute stage: Shader version: 500 local_size = (64, 1, 1) 0:? Sequence 0:4 Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float) 0:4 Function Parameters: 0:4 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:4 'vertex_id' ( in uint) 0:? Sequence 0:5 Branch: Return with expression 0:? intBitsToFloat ( temp 3-component vector of float) 0:? Sequence 0:5 move second child to first child ( temp int) 0:5 'byteAddrTemp' ( temp int) 0:5 right-shift ( temp int) 0:5 component-wise multiply ( temp uint) 0:5 component-wise multiply ( temp uint) 0:5 'vertex_id' ( in uint) 0:5 Constant: 0:5 3 (const uint) 0:5 Constant: 0:5 4 (const uint) 0:5 Constant: 0:5 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:5 indirect index ( temp uint) 0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:5 Constant: 0:5 0 (const uint) 0:5 'byteAddrTemp' ( temp int) 0:5 indirect index ( temp uint) 0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:5 Constant: 0:5 0 (const uint) 0:5 add ( temp int) 0:5 'byteAddrTemp' ( temp int) 0:5 Constant: 0:5 1 (const int) 0:5 indirect index ( temp uint) 0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:5 Constant: 0:5 0 (const uint) 0:5 add ( temp int) 0:5 'byteAddrTemp' ( temp int) 0:5 Constant: 0:5 2 (const int) 0:9 Function Definition: @main(u1; ( temp void) 0:9 Function Parameters: 0:9 'gi' ( in uint) 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp 3-component vector of float) 0:10 'position_ms' ( temp 3-component vector of float) 0:10 Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float) 0:10 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 'gi' ( in uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 direct index ( temp uint) 0:12 floatBitsToUint ( temp 3-component vector of uint) 0:12 'position_ms' ( temp 3-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( temp uint) 0:12 floatBitsToUint ( temp 3-component vector of uint) 0:12 'position_ms' ( temp 3-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( temp uint) 0:12 floatBitsToUint ( temp 3-component vector of uint) 0:12 'position_ms' ( temp 3-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp uint) 0:? 'gi' ( temp uint) 0:? 'gi' ( in uint LocalInvocationIndex) 0:9 Function Call: @main(u1; ( temp void) 0:? 'gi' ( temp uint) 0:? Linker Objects 0:? 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'gi' ( in uint LocalInvocationIndex) // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 90 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 53 62 85 ExecutionMode 4 LocalSize 64 1 1 Source HLSL 500 Name 4 "main" Name 8 "" MemberName 8 0 "@data" Name 16 "pull_position(block--u1[0]1;u1;" Name 14 "buffer_position" Name 15 "vertex_id" Name 20 "@main(u1;" Name 19 "gi" Name 24 "byteAddrTemp" Name 52 "position_ms" Name 53 "buffer_position_ms" Name 54 "param" Name 57 "byteAddrTemp" Name 60 "r" MemberName 60(r) 0 "@data" Name 62 "r" Name 83 "gi" Name 85 "gi" Name 87 "param" Decorate 7 ArrayStride 4 Decorate 8 Block MemberDecorate 8 0 NonWritable MemberDecorate 8 0 Offset 0 Decorate 14(buffer_position) NonWritable Decorate 53(buffer_position_ms) NonWritable Decorate 53(buffer_position_ms) Binding 0 Decorate 53(buffer_position_ms) DescriptorSet 0 Decorate 59 ArrayStride 4 Decorate 60(r) Block MemberDecorate 60(r) 0 Offset 0 Decorate 62(r) Binding 1 Decorate 62(r) DescriptorSet 0 Decorate 85(gi) BuiltIn LocalInvocationIndex 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeRuntimeArray 6(int) 8: TypeStruct 7 9: TypePointer StorageBuffer 8(struct) 10: TypePointer Function 6(int) 11: TypeFloat 32 12: TypeVector 11(float) 3 13: TypeFunction 12(fvec3) 9(ptr) 10(ptr) 18: TypeFunction 2 10(ptr) 22: TypeInt 32 1 23: TypePointer Function 22(int) 26: 6(int) Constant 3 28: 6(int) Constant 4 30: 22(int) Constant 2 32: 22(int) Constant 0 34: TypePointer StorageBuffer 6(int) 38: 22(int) Constant 1 46: TypeVector 6(int) 3 51: TypePointer Function 12(fvec3) 53(buffer_position_ms): 9(ptr) Variable StorageBuffer 59: TypeRuntimeArray 6(int) 60(r): TypeStruct 59 61: TypePointer StorageBuffer 60(r) 62(r): 61(ptr) Variable StorageBuffer 66: 6(int) Constant 0 73: 6(int) Constant 1 80: 6(int) Constant 2 84: TypePointer Input 6(int) 85(gi): 84(ptr) Variable Input 4(main): 2 Function None 3 5: Label 83(gi): 10(ptr) Variable Function 87(param): 10(ptr) Variable Function 86: 6(int) Load 85(gi) Store 83(gi) 86 88: 6(int) Load 83(gi) Store 87(param) 88 89: 2 FunctionCall 20(@main(u1;) 87(param) Return FunctionEnd 16(pull_position(block--u1[0]1;u1;): 12(fvec3) Function None 13 14(buffer_position): 9(ptr) FunctionParameter 15(vertex_id): 10(ptr) FunctionParameter 17: Label 24(byteAddrTemp): 23(ptr) Variable Function 25: 6(int) Load 15(vertex_id) 27: 6(int) IMul 25 26 29: 6(int) IMul 27 28 31: 22(int) ShiftRightLogical 29 30 Store 24(byteAddrTemp) 31 33: 22(int) Load 24(byteAddrTemp) 35: 34(ptr) AccessChain 14(buffer_position) 32 33 36: 6(int) Load 35 37: 22(int) Load 24(byteAddrTemp) 39: 22(int) IAdd 37 38 40: 34(ptr) AccessChain 14(buffer_position) 32 39 41: 6(int) Load 40 42: 22(int) Load 24(byteAddrTemp) 43: 22(int) IAdd 42 30 44: 34(ptr) AccessChain 14(buffer_position) 32 43 45: 6(int) Load 44 47: 46(ivec3) CompositeConstruct 36 41 45 48: 12(fvec3) Bitcast 47 ReturnValue 48 FunctionEnd 20(@main(u1;): 2 Function None 18 19(gi): 10(ptr) FunctionParameter 21: Label 52(position_ms): 51(ptr) Variable Function 54(param): 10(ptr) Variable Function 57(byteAddrTemp): 23(ptr) Variable Function 55: 6(int) Load 19(gi) Store 54(param) 55 56: 12(fvec3) FunctionCall 16(pull_position(block--u1[0]1;u1;) 53(buffer_position_ms) 54(param) Store 52(position_ms) 56 58: 22(int) ShiftRightArithmetic 32 30 Store 57(byteAddrTemp) 58 63: 22(int) Load 57(byteAddrTemp) 64: 12(fvec3) Load 52(position_ms) 65: 46(ivec3) Bitcast 64 67: 6(int) CompositeExtract 65 0 68: 34(ptr) AccessChain 62(r) 32 63 Store 68 67 69: 22(int) Load 57(byteAddrTemp) 70: 22(int) IAdd 69 38 71: 12(fvec3) Load 52(position_ms) 72: 46(ivec3) Bitcast 71 74: 6(int) CompositeExtract 72 1 75: 34(ptr) AccessChain 62(r) 32 70 Store 75 74 76: 22(int) Load 57(byteAddrTemp) 77: 22(int) IAdd 76 30 78: 12(fvec3) Load 52(position_ms) 79: 46(ivec3) Bitcast 78 81: 6(int) CompositeExtract 79 2 82: 34(ptr) AccessChain 62(r) 32 77 Store 82 81 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.calculatelod.dx10.frag.out000066400000000000000000000700151506534232700242710ustar00rootroot00000000000000hlsl.calculatelod.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'txval10' ( temp float) 0:28 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:28 Construct combined texture-sampler ( temp sampler1DArray) 0:28 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.100000 0:28 Constant: 0:28 0 (const int) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'txval11' ( temp float) 0:29 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:29 Construct combined texture-sampler ( temp isampler1DArray) 0:29 'g_tTex1di4a' ( uniform itexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.200000 0:29 Constant: 0:29 0 (const int) 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'txval12' ( temp float) 0:30 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:30 Construct combined texture-sampler ( temp usampler1DArray) 0:30 'g_tTex1du4a' ( uniform utexture1DArray) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.300000 0:30 Constant: 0:30 0 (const int) 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'txval20' ( temp float) 0:32 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:32 Construct combined texture-sampler ( temp sampler2DArray) 0:32 'g_tTex2df4a' ( uniform texture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 0.200000 0:32 Constant: 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'txval21' ( temp float) 0:33 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:33 Construct combined texture-sampler ( temp isampler2DArray) 0:33 'g_tTex2di4a' ( uniform itexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 0.400000 0:33 Constant: 0:33 0 (const int) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'txval22' ( temp float) 0:34 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:34 Construct combined texture-sampler ( temp usampler2DArray) 0:34 'g_tTex2du4a' ( uniform utexture2DArray) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.500000 0:34 0.600000 0:34 Constant: 0:34 0 (const int) 0:36 Sequence 0:36 move second child to first child ( temp float) 0:36 'txval40' ( temp float) 0:36 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:36 Construct combined texture-sampler ( temp samplerCubeArray) 0:36 'g_tTexcdf4a' ( uniform textureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 0.300000 0:36 Constant: 0:36 0 (const int) 0:37 Sequence 0:37 move second child to first child ( temp float) 0:37 'txval41' ( temp float) 0:37 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:37 Construct combined texture-sampler ( temp isamplerCubeArray) 0:37 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.400000 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 0 (const int) 0:38 Sequence 0:38 move second child to first child ( temp float) 0:38 'txval42' ( temp float) 0:38 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:38 Construct combined texture-sampler ( temp usamplerCubeArray) 0:38 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.700000 0:38 0.800000 0:38 0.900000 0:38 Constant: 0:38 0 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:41 move second child to first child ( temp float) 0:41 Depth: direct index for structure ( temp float) 0:41 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 0:43 Branch: Return with expression 0:43 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'txval10' ( temp float) 0:28 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:28 Construct combined texture-sampler ( temp sampler1DArray) 0:28 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.100000 0:28 Constant: 0:28 0 (const int) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'txval11' ( temp float) 0:29 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:29 Construct combined texture-sampler ( temp isampler1DArray) 0:29 'g_tTex1di4a' ( uniform itexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.200000 0:29 Constant: 0:29 0 (const int) 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'txval12' ( temp float) 0:30 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:30 Construct combined texture-sampler ( temp usampler1DArray) 0:30 'g_tTex1du4a' ( uniform utexture1DArray) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.300000 0:30 Constant: 0:30 0 (const int) 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'txval20' ( temp float) 0:32 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:32 Construct combined texture-sampler ( temp sampler2DArray) 0:32 'g_tTex2df4a' ( uniform texture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 0.200000 0:32 Constant: 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'txval21' ( temp float) 0:33 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:33 Construct combined texture-sampler ( temp isampler2DArray) 0:33 'g_tTex2di4a' ( uniform itexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 0.400000 0:33 Constant: 0:33 0 (const int) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'txval22' ( temp float) 0:34 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:34 Construct combined texture-sampler ( temp usampler2DArray) 0:34 'g_tTex2du4a' ( uniform utexture2DArray) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.500000 0:34 0.600000 0:34 Constant: 0:34 0 (const int) 0:36 Sequence 0:36 move second child to first child ( temp float) 0:36 'txval40' ( temp float) 0:36 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:36 Construct combined texture-sampler ( temp samplerCubeArray) 0:36 'g_tTexcdf4a' ( uniform textureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 0.300000 0:36 Constant: 0:36 0 (const int) 0:37 Sequence 0:37 move second child to first child ( temp float) 0:37 'txval41' ( temp float) 0:37 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:37 Construct combined texture-sampler ( temp isamplerCubeArray) 0:37 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.400000 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 0 (const int) 0:38 Sequence 0:38 move second child to first child ( temp float) 0:38 'txval42' ( temp float) 0:38 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:38 Construct combined texture-sampler ( temp usamplerCubeArray) 0:38 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.700000 0:38 0.800000 0:38 0.900000 0:38 Constant: 0:38 0 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:41 move second child to first child ( temp float) 0:41 Depth: direct index for structure ( temp float) 0:41 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 0:43 Branch: Return with expression 0:43 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 148 Capability Shader Capability Sampled1D Capability SampledCubeArray Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 140 144 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4a" Name 20 "g_sSamp" Name 30 "txval11" Name 33 "g_tTex1di4a" Name 41 "txval12" Name 45 "g_tTex1du4a" Name 53 "txval20" Name 56 "g_tTex2df4a" Name 64 "txval21" Name 67 "g_tTex2di4a" Name 76 "txval22" Name 79 "g_tTex2du4a" Name 89 "txval40" Name 92 "g_tTexcdf4a" Name 101 "txval41" Name 104 "g_tTexcdi4a" Name 112 "txval42" Name 115 "g_tTexcdu4a" Name 127 "psout" Name 137 "flattenTemp" Name 140 "@entryPointOutput.Color" Name 144 "@entryPointOutput.Depth" Name 147 "g_tTex1df4" Decorate 16(g_tTex1df4a) Binding 1 Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4a) Binding 2 Decorate 33(g_tTex1di4a) DescriptorSet 0 Decorate 45(g_tTex1du4a) Binding 3 Decorate 45(g_tTex1du4a) DescriptorSet 0 Decorate 56(g_tTex2df4a) Binding 4 Decorate 56(g_tTex2df4a) DescriptorSet 0 Decorate 67(g_tTex2di4a) Binding 5 Decorate 67(g_tTex2di4a) DescriptorSet 0 Decorate 79(g_tTex2du4a) Binding 6 Decorate 79(g_tTex2du4a) DescriptorSet 0 Decorate 92(g_tTexcdf4a) Binding 7 Decorate 92(g_tTexcdf4a) DescriptorSet 0 Decorate 104(g_tTexcdi4a) Binding 8 Decorate 104(g_tTexcdi4a) DescriptorSet 0 Decorate 115(g_tTexcdu4a) Binding 9 Decorate 115(g_tTexcdu4a) DescriptorSet 0 Decorate 140(@entryPointOutput.Color) Location 0 Decorate 144(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 147(g_tTex1df4) Binding 0 Decorate 147(g_tTex1df4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: TypeVector 6(float) 2 27: TypeInt 32 1 28: 27(int) Constant 0 31: TypeImage 27(int) 1D array sampled format:Unknown 32: TypePointer UniformConstant 31 33(g_tTex1di4a): 32(ptr) Variable UniformConstant 36: TypeSampledImage 31 38: 6(float) Constant 1045220557 42: TypeInt 32 0 43: TypeImage 42(int) 1D array sampled format:Unknown 44: TypePointer UniformConstant 43 45(g_tTex1du4a): 44(ptr) Variable UniformConstant 48: TypeSampledImage 43 50: 6(float) Constant 1050253722 54: TypeImage 6(float) 2D array sampled format:Unknown 55: TypePointer UniformConstant 54 56(g_tTex2df4a): 55(ptr) Variable UniformConstant 59: TypeSampledImage 54 61: 25(fvec2) ConstantComposite 24 38 65: TypeImage 27(int) 2D array sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2di4a): 66(ptr) Variable UniformConstant 70: TypeSampledImage 65 72: 6(float) Constant 1053609165 73: 25(fvec2) ConstantComposite 50 72 77: TypeImage 42(int) 2D array sampled format:Unknown 78: TypePointer UniformConstant 77 79(g_tTex2du4a): 78(ptr) Variable UniformConstant 82: TypeSampledImage 77 84: 6(float) Constant 1056964608 85: 6(float) Constant 1058642330 86: 25(fvec2) ConstantComposite 84 85 90: TypeImage 6(float) Cube array sampled format:Unknown 91: TypePointer UniformConstant 90 92(g_tTexcdf4a): 91(ptr) Variable UniformConstant 95: TypeSampledImage 90 97: TypeVector 6(float) 3 98: 97(fvec3) ConstantComposite 24 38 50 102: TypeImage 27(int) Cube array sampled format:Unknown 103: TypePointer UniformConstant 102 104(g_tTexcdi4a): 103(ptr) Variable UniformConstant 107: TypeSampledImage 102 109: 97(fvec3) ConstantComposite 72 84 85 113: TypeImage 42(int) Cube array sampled format:Unknown 114: TypePointer UniformConstant 113 115(g_tTexcdu4a): 114(ptr) Variable UniformConstant 118: TypeSampledImage 113 120: 6(float) Constant 1060320051 121: 6(float) Constant 1061997773 122: 6(float) Constant 1063675494 123: 97(fvec3) ConstantComposite 120 121 122 126: TypePointer Function 8(PS_OUTPUT) 128: 6(float) Constant 1065353216 129: 7(fvec4) ConstantComposite 128 128 128 128 130: TypePointer Function 7(fvec4) 132: 27(int) Constant 1 139: TypePointer Output 7(fvec4) 140(@entryPointOutput.Color): 139(ptr) Variable Output 143: TypePointer Output 6(float) 144(@entryPointOutput.Depth): 143(ptr) Variable Output 147(g_tTex1df4): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 137(flattenTemp): 126(ptr) Variable Function 138:8(PS_OUTPUT) FunctionCall 10(@main() Store 137(flattenTemp) 138 141: 130(ptr) AccessChain 137(flattenTemp) 28 142: 7(fvec4) Load 141 Store 140(@entryPointOutput.Color) 142 145: 12(ptr) AccessChain 137(flattenTemp) 132 146: 6(float) Load 145 Store 144(@entryPointOutput.Depth) 146 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 30(txval11): 12(ptr) Variable Function 41(txval12): 12(ptr) Variable Function 53(txval20): 12(ptr) Variable Function 64(txval21): 12(ptr) Variable Function 76(txval22): 12(ptr) Variable Function 89(txval40): 12(ptr) Variable Function 101(txval41): 12(ptr) Variable Function 112(txval42): 12(ptr) Variable Function 127(psout): 126(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 26: 25(fvec2) ImageQueryLod 23 24 29: 6(float) CompositeExtract 26 0 Store 13(txval10) 29 34: 31 Load 33(g_tTex1di4a) 35: 18 Load 20(g_sSamp) 37: 36 SampledImage 34 35 39: 25(fvec2) ImageQueryLod 37 38 40: 6(float) CompositeExtract 39 0 Store 30(txval11) 40 46: 43 Load 45(g_tTex1du4a) 47: 18 Load 20(g_sSamp) 49: 48 SampledImage 46 47 51: 25(fvec2) ImageQueryLod 49 50 52: 6(float) CompositeExtract 51 0 Store 41(txval12) 52 57: 54 Load 56(g_tTex2df4a) 58: 18 Load 20(g_sSamp) 60: 59 SampledImage 57 58 62: 25(fvec2) ImageQueryLod 60 61 63: 6(float) CompositeExtract 62 0 Store 53(txval20) 63 68: 65 Load 67(g_tTex2di4a) 69: 18 Load 20(g_sSamp) 71: 70 SampledImage 68 69 74: 25(fvec2) ImageQueryLod 71 73 75: 6(float) CompositeExtract 74 0 Store 64(txval21) 75 80: 77 Load 79(g_tTex2du4a) 81: 18 Load 20(g_sSamp) 83: 82 SampledImage 80 81 87: 25(fvec2) ImageQueryLod 83 86 88: 6(float) CompositeExtract 87 0 Store 76(txval22) 88 93: 90 Load 92(g_tTexcdf4a) 94: 18 Load 20(g_sSamp) 96: 95 SampledImage 93 94 99: 25(fvec2) ImageQueryLod 96 98 100: 6(float) CompositeExtract 99 0 Store 89(txval40) 100 105: 102 Load 104(g_tTexcdi4a) 106: 18 Load 20(g_sSamp) 108: 107 SampledImage 105 106 110: 25(fvec2) ImageQueryLod 108 109 111: 6(float) CompositeExtract 110 0 Store 101(txval41) 111 116: 113 Load 115(g_tTexcdu4a) 117: 18 Load 20(g_sSamp) 119: 118 SampledImage 116 117 124: 25(fvec2) ImageQueryLod 119 123 125: 6(float) CompositeExtract 124 0 Store 112(txval42) 125 131: 130(ptr) AccessChain 127(psout) 28 Store 131 129 133: 12(ptr) AccessChain 127(psout) 132 Store 133 128 134:8(PS_OUTPUT) Load 127(psout) ReturnValue 134 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out000066400000000000000000000700261506534232700261640ustar00rootroot00000000000000hlsl.calculatelodunclamped.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'txval10' ( temp float) 0:28 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:28 Construct combined texture-sampler ( temp sampler1DArray) 0:28 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.100000 0:28 Constant: 0:28 1 (const int) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'txval11' ( temp float) 0:29 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:29 Construct combined texture-sampler ( temp isampler1DArray) 0:29 'g_tTex1di4a' ( uniform itexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.200000 0:29 Constant: 0:29 1 (const int) 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'txval12' ( temp float) 0:30 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:30 Construct combined texture-sampler ( temp usampler1DArray) 0:30 'g_tTex1du4a' ( uniform utexture1DArray) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.300000 0:30 Constant: 0:30 1 (const int) 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'txval20' ( temp float) 0:32 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:32 Construct combined texture-sampler ( temp sampler2DArray) 0:32 'g_tTex2df4a' ( uniform texture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 0.200000 0:32 Constant: 0:32 1 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'txval21' ( temp float) 0:33 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:33 Construct combined texture-sampler ( temp isampler2DArray) 0:33 'g_tTex2di4a' ( uniform itexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 0.400000 0:33 Constant: 0:33 1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'txval22' ( temp float) 0:34 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:34 Construct combined texture-sampler ( temp usampler2DArray) 0:34 'g_tTex2du4a' ( uniform utexture2DArray) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.500000 0:34 0.600000 0:34 Constant: 0:34 1 (const int) 0:36 Sequence 0:36 move second child to first child ( temp float) 0:36 'txval40' ( temp float) 0:36 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:36 Construct combined texture-sampler ( temp samplerCubeArray) 0:36 'g_tTexcdf4a' ( uniform textureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 0.300000 0:36 Constant: 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp float) 0:37 'txval41' ( temp float) 0:37 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:37 Construct combined texture-sampler ( temp isamplerCubeArray) 0:37 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.400000 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 1 (const int) 0:38 Sequence 0:38 move second child to first child ( temp float) 0:38 'txval42' ( temp float) 0:38 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:38 Construct combined texture-sampler ( temp usamplerCubeArray) 0:38 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.700000 0:38 0.800000 0:38 0.900000 0:38 Constant: 0:38 1 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:41 move second child to first child ( temp float) 0:41 Depth: direct index for structure ( temp float) 0:41 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 0:43 Branch: Return with expression 0:43 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'txval10' ( temp float) 0:28 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:28 Construct combined texture-sampler ( temp sampler1DArray) 0:28 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.100000 0:28 Constant: 0:28 1 (const int) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'txval11' ( temp float) 0:29 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:29 Construct combined texture-sampler ( temp isampler1DArray) 0:29 'g_tTex1di4a' ( uniform itexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.200000 0:29 Constant: 0:29 1 (const int) 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'txval12' ( temp float) 0:30 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:30 Construct combined texture-sampler ( temp usampler1DArray) 0:30 'g_tTex1du4a' ( uniform utexture1DArray) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.300000 0:30 Constant: 0:30 1 (const int) 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'txval20' ( temp float) 0:32 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:32 Construct combined texture-sampler ( temp sampler2DArray) 0:32 'g_tTex2df4a' ( uniform texture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 0.200000 0:32 Constant: 0:32 1 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'txval21' ( temp float) 0:33 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:33 Construct combined texture-sampler ( temp isampler2DArray) 0:33 'g_tTex2di4a' ( uniform itexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 0.400000 0:33 Constant: 0:33 1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'txval22' ( temp float) 0:34 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:34 Construct combined texture-sampler ( temp usampler2DArray) 0:34 'g_tTex2du4a' ( uniform utexture2DArray) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.500000 0:34 0.600000 0:34 Constant: 0:34 1 (const int) 0:36 Sequence 0:36 move second child to first child ( temp float) 0:36 'txval40' ( temp float) 0:36 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:36 Construct combined texture-sampler ( temp samplerCubeArray) 0:36 'g_tTexcdf4a' ( uniform textureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 0.300000 0:36 Constant: 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp float) 0:37 'txval41' ( temp float) 0:37 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:37 Construct combined texture-sampler ( temp isamplerCubeArray) 0:37 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.400000 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 1 (const int) 0:38 Sequence 0:38 move second child to first child ( temp float) 0:38 'txval42' ( temp float) 0:38 direct index ( temp float) 0:? textureQueryLod ( temp float) 0:38 Construct combined texture-sampler ( temp usamplerCubeArray) 0:38 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.700000 0:38 0.800000 0:38 0.900000 0:38 Constant: 0:38 1 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:41 move second child to first child ( temp float) 0:41 Depth: direct index for structure ( temp float) 0:41 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 0:43 Branch: Return with expression 0:43 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 148 Capability Shader Capability Sampled1D Capability SampledCubeArray Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 140 144 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4a" Name 20 "g_sSamp" Name 30 "txval11" Name 33 "g_tTex1di4a" Name 41 "txval12" Name 45 "g_tTex1du4a" Name 53 "txval20" Name 56 "g_tTex2df4a" Name 64 "txval21" Name 67 "g_tTex2di4a" Name 76 "txval22" Name 79 "g_tTex2du4a" Name 89 "txval40" Name 92 "g_tTexcdf4a" Name 101 "txval41" Name 104 "g_tTexcdi4a" Name 112 "txval42" Name 115 "g_tTexcdu4a" Name 127 "psout" Name 137 "flattenTemp" Name 140 "@entryPointOutput.Color" Name 144 "@entryPointOutput.Depth" Name 147 "g_tTex1df4" Decorate 16(g_tTex1df4a) Binding 1 Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4a) Binding 2 Decorate 33(g_tTex1di4a) DescriptorSet 0 Decorate 45(g_tTex1du4a) Binding 3 Decorate 45(g_tTex1du4a) DescriptorSet 0 Decorate 56(g_tTex2df4a) Binding 4 Decorate 56(g_tTex2df4a) DescriptorSet 0 Decorate 67(g_tTex2di4a) Binding 5 Decorate 67(g_tTex2di4a) DescriptorSet 0 Decorate 79(g_tTex2du4a) Binding 6 Decorate 79(g_tTex2du4a) DescriptorSet 0 Decorate 92(g_tTexcdf4a) Binding 7 Decorate 92(g_tTexcdf4a) DescriptorSet 0 Decorate 104(g_tTexcdi4a) Binding 8 Decorate 104(g_tTexcdi4a) DescriptorSet 0 Decorate 115(g_tTexcdu4a) Binding 9 Decorate 115(g_tTexcdu4a) DescriptorSet 0 Decorate 140(@entryPointOutput.Color) Location 0 Decorate 144(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 147(g_tTex1df4) Binding 0 Decorate 147(g_tTex1df4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: TypeVector 6(float) 2 27: TypeInt 32 1 28: 27(int) Constant 1 31: TypeImage 27(int) 1D array sampled format:Unknown 32: TypePointer UniformConstant 31 33(g_tTex1di4a): 32(ptr) Variable UniformConstant 36: TypeSampledImage 31 38: 6(float) Constant 1045220557 42: TypeInt 32 0 43: TypeImage 42(int) 1D array sampled format:Unknown 44: TypePointer UniformConstant 43 45(g_tTex1du4a): 44(ptr) Variable UniformConstant 48: TypeSampledImage 43 50: 6(float) Constant 1050253722 54: TypeImage 6(float) 2D array sampled format:Unknown 55: TypePointer UniformConstant 54 56(g_tTex2df4a): 55(ptr) Variable UniformConstant 59: TypeSampledImage 54 61: 25(fvec2) ConstantComposite 24 38 65: TypeImage 27(int) 2D array sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2di4a): 66(ptr) Variable UniformConstant 70: TypeSampledImage 65 72: 6(float) Constant 1053609165 73: 25(fvec2) ConstantComposite 50 72 77: TypeImage 42(int) 2D array sampled format:Unknown 78: TypePointer UniformConstant 77 79(g_tTex2du4a): 78(ptr) Variable UniformConstant 82: TypeSampledImage 77 84: 6(float) Constant 1056964608 85: 6(float) Constant 1058642330 86: 25(fvec2) ConstantComposite 84 85 90: TypeImage 6(float) Cube array sampled format:Unknown 91: TypePointer UniformConstant 90 92(g_tTexcdf4a): 91(ptr) Variable UniformConstant 95: TypeSampledImage 90 97: TypeVector 6(float) 3 98: 97(fvec3) ConstantComposite 24 38 50 102: TypeImage 27(int) Cube array sampled format:Unknown 103: TypePointer UniformConstant 102 104(g_tTexcdi4a): 103(ptr) Variable UniformConstant 107: TypeSampledImage 102 109: 97(fvec3) ConstantComposite 72 84 85 113: TypeImage 42(int) Cube array sampled format:Unknown 114: TypePointer UniformConstant 113 115(g_tTexcdu4a): 114(ptr) Variable UniformConstant 118: TypeSampledImage 113 120: 6(float) Constant 1060320051 121: 6(float) Constant 1061997773 122: 6(float) Constant 1063675494 123: 97(fvec3) ConstantComposite 120 121 122 126: TypePointer Function 8(PS_OUTPUT) 128: 27(int) Constant 0 129: 6(float) Constant 1065353216 130: 7(fvec4) ConstantComposite 129 129 129 129 131: TypePointer Function 7(fvec4) 139: TypePointer Output 7(fvec4) 140(@entryPointOutput.Color): 139(ptr) Variable Output 143: TypePointer Output 6(float) 144(@entryPointOutput.Depth): 143(ptr) Variable Output 147(g_tTex1df4): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 137(flattenTemp): 126(ptr) Variable Function 138:8(PS_OUTPUT) FunctionCall 10(@main() Store 137(flattenTemp) 138 141: 131(ptr) AccessChain 137(flattenTemp) 128 142: 7(fvec4) Load 141 Store 140(@entryPointOutput.Color) 142 145: 12(ptr) AccessChain 137(flattenTemp) 28 146: 6(float) Load 145 Store 144(@entryPointOutput.Depth) 146 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 30(txval11): 12(ptr) Variable Function 41(txval12): 12(ptr) Variable Function 53(txval20): 12(ptr) Variable Function 64(txval21): 12(ptr) Variable Function 76(txval22): 12(ptr) Variable Function 89(txval40): 12(ptr) Variable Function 101(txval41): 12(ptr) Variable Function 112(txval42): 12(ptr) Variable Function 127(psout): 126(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 26: 25(fvec2) ImageQueryLod 23 24 29: 6(float) CompositeExtract 26 1 Store 13(txval10) 29 34: 31 Load 33(g_tTex1di4a) 35: 18 Load 20(g_sSamp) 37: 36 SampledImage 34 35 39: 25(fvec2) ImageQueryLod 37 38 40: 6(float) CompositeExtract 39 1 Store 30(txval11) 40 46: 43 Load 45(g_tTex1du4a) 47: 18 Load 20(g_sSamp) 49: 48 SampledImage 46 47 51: 25(fvec2) ImageQueryLod 49 50 52: 6(float) CompositeExtract 51 1 Store 41(txval12) 52 57: 54 Load 56(g_tTex2df4a) 58: 18 Load 20(g_sSamp) 60: 59 SampledImage 57 58 62: 25(fvec2) ImageQueryLod 60 61 63: 6(float) CompositeExtract 62 1 Store 53(txval20) 63 68: 65 Load 67(g_tTex2di4a) 69: 18 Load 20(g_sSamp) 71: 70 SampledImage 68 69 74: 25(fvec2) ImageQueryLod 71 73 75: 6(float) CompositeExtract 74 1 Store 64(txval21) 75 80: 77 Load 79(g_tTex2du4a) 81: 18 Load 20(g_sSamp) 83: 82 SampledImage 80 81 87: 25(fvec2) ImageQueryLod 83 86 88: 6(float) CompositeExtract 87 1 Store 76(txval22) 88 93: 90 Load 92(g_tTexcdf4a) 94: 18 Load 20(g_sSamp) 96: 95 SampledImage 93 94 99: 25(fvec2) ImageQueryLod 96 98 100: 6(float) CompositeExtract 99 1 Store 89(txval40) 100 105: 102 Load 104(g_tTexcdi4a) 106: 18 Load 20(g_sSamp) 108: 107 SampledImage 105 106 110: 25(fvec2) ImageQueryLod 108 109 111: 6(float) CompositeExtract 110 1 Store 101(txval41) 111 116: 113 Load 115(g_tTexcdu4a) 117: 18 Load 20(g_sSamp) 119: 118 SampledImage 116 117 124: 25(fvec2) ImageQueryLod 119 123 125: 6(float) CompositeExtract 124 1 Store 112(txval42) 125 132: 131(ptr) AccessChain 127(psout) 128 Store 132 130 133: 12(ptr) AccessChain 127(psout) 28 Store 133 129 134:8(PS_OUTPUT) Load 127(psout) ReturnValue 134 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.cast.frag.out000066400000000000000000000134571506534232700220230ustar00rootroot00000000000000hlsl.cast.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:3 Branch: Return with expression 0:3 add ( temp 4-component vector of float) 0:3 add ( temp 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:3 Convert int to float ( temp 4-component vector of float) 0:3 Convert float to int ( temp 4-component vector of int) 0:3 'input' ( in 4-component vector of float) 0:3 Constant: 0:3 1.198000 0:3 1.198000 0:3 1.198000 0:3 1.198000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:3 Branch: Return with expression 0:3 add ( temp 4-component vector of float) 0:3 add ( temp 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:3 Convert int to float ( temp 4-component vector of float) 0:3 Convert float to int ( temp 4-component vector of int) 0:3 'input' ( in 4-component vector of float) 0:3 Constant: 0:3 1.198000 0:3 1.198000 0:3 1.198000 0:3 1.198000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 27 30 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "@PixelShaderFunction(vf4;" Name 10 "input" Name 25 "input" Name 27 "input" Name 30 "@entryPointOutput" Name 31 "param" Decorate 27(input) Location 0 Decorate 30(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) 15: TypeInt 32 1 16: TypeVector 15(int) 4 20: 6(float) Constant 1067014160 21: 7(fvec4) ConstantComposite 20 20 20 20 26: TypePointer Input 7(fvec4) 27(input): 26(ptr) Variable Input 29: TypePointer Output 7(fvec4) 30(@entryPointOutput): 29(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 25(input): 8(ptr) Variable Function 31(param): 8(ptr) Variable Function 28: 7(fvec4) Load 27(input) Store 25(input) 28 32: 7(fvec4) Load 25(input) Store 31(param) 32 33: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 31(param) Store 30(@entryPointOutput) 33 Return FunctionEnd 11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 13: 7(fvec4) Load 10(input) 14: 7(fvec4) Load 10(input) 17: 16(ivec4) ConvertFToS 14 18: 7(fvec4) ConvertSToF 17 19: 7(fvec4) FAdd 13 18 22: 7(fvec4) FAdd 19 21 ReturnValue 22 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.cbuffer-identifier.vert.out000066400000000000000000000614221506534232700246610ustar00rootroot00000000000000hlsl.cbuffer-identifier.vert WARNING: 0:29: '' : mul() matrix size mismatch Shader version: 500 0:? Sequence 0:22 Function Definition: @main(struct-VS_INPUT-vf4-vf31; ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Function Parameters: 0:22 'input' ( in structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'ConstantBuffer' ( temp int) 0:23 Constant: 0:23 42 (const int) 0:25 Sequence 0:25 move second child to first child ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:25 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:26 move second child to first child ( temp 4-component vector of float) 0:26 Pos: direct index for structure ( temp 4-component vector of float) 0:26 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:26 Constant: 0:26 0 (const int) 0:26 matrix-times-vector ( temp 4-component vector of float) 0:26 World: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:26 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:26 Constant: 0:26 0 (const uint) 0:26 Pos: direct index for structure ( temp 4-component vector of float) 0:26 'input' ( in structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:26 Constant: 0:26 0 (const int) 0:27 move second child to first child ( temp 4-component vector of float) 0:27 Pos: direct index for structure ( temp 4-component vector of float) 0:27 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:27 Constant: 0:27 0 (const int) 0:27 matrix-times-vector ( temp 4-component vector of float) 0:27 View: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:27 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:27 Constant: 0:27 1 (const uint) 0:27 Pos: direct index for structure ( temp 4-component vector of float) 0:27 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:27 Constant: 0:27 0 (const int) 0:28 move second child to first child ( temp 4-component vector of float) 0:28 Pos: direct index for structure ( temp 4-component vector of float) 0:28 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:28 Constant: 0:28 0 (const int) 0:28 matrix-times-vector ( temp 4-component vector of float) 0:28 Projection: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:28 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:28 Constant: 0:28 2 (const uint) 0:28 Pos: direct index for structure ( temp 4-component vector of float) 0:28 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp 3-component vector of float) 0:29 Norm: direct index for structure ( temp 3-component vector of float) 0:29 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:29 Constant: 0:29 1 (const int) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 matrix-times-vector ( temp 4-component vector of float) 0:29 Construct mat3x4 ( uniform 3X4 matrix of float) 0:29 World: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:29 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:29 Constant: 0:29 0 (const uint) 0:29 Norm: direct index for structure ( temp 3-component vector of float) 0:29 'input' ( in structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:29 Constant: 0:29 1 (const int) 0:31 Branch: Return with expression 0:31 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Pos: direct index for structure ( temp 4-component vector of float) 0:? 'input' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Constant: 0:22 0 (const int) 0:? 'input.Pos' (layout( location=0) in 4-component vector of float) 0:22 move second child to first child ( temp 3-component vector of float) 0:22 Norm: direct index for structure ( temp 3-component vector of float) 0:? 'input' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Constant: 0:22 1 (const int) 0:? 'input.Norm' (layout( location=1) in 3-component vector of float) 0:22 Sequence 0:22 move second child to first child ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Function Call: @main(struct-VS_INPUT-vf4-vf31; ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:? 'input' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:22 Pos: direct index for structure ( temp 4-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:? '@entryPointOutput.Norm' (layout( location=0) out 3-component vector of float) 0:22 Norm: direct index for structure ( temp 3-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Constant: 0:22 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:? '@entryPointOutput.Norm' (layout( location=0) out 3-component vector of float) 0:? 'input.Pos' (layout( location=0) in 4-component vector of float) 0:? 'input.Norm' (layout( location=1) in 3-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:22 Function Definition: @main(struct-VS_INPUT-vf4-vf31; ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Function Parameters: 0:22 'input' ( in structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'ConstantBuffer' ( temp int) 0:23 Constant: 0:23 42 (const int) 0:25 Sequence 0:25 move second child to first child ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:25 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:26 move second child to first child ( temp 4-component vector of float) 0:26 Pos: direct index for structure ( temp 4-component vector of float) 0:26 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:26 Constant: 0:26 0 (const int) 0:26 matrix-times-vector ( temp 4-component vector of float) 0:26 World: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:26 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:26 Constant: 0:26 0 (const uint) 0:26 Pos: direct index for structure ( temp 4-component vector of float) 0:26 'input' ( in structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:26 Constant: 0:26 0 (const int) 0:27 move second child to first child ( temp 4-component vector of float) 0:27 Pos: direct index for structure ( temp 4-component vector of float) 0:27 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:27 Constant: 0:27 0 (const int) 0:27 matrix-times-vector ( temp 4-component vector of float) 0:27 View: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:27 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:27 Constant: 0:27 1 (const uint) 0:27 Pos: direct index for structure ( temp 4-component vector of float) 0:27 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:27 Constant: 0:27 0 (const int) 0:28 move second child to first child ( temp 4-component vector of float) 0:28 Pos: direct index for structure ( temp 4-component vector of float) 0:28 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:28 Constant: 0:28 0 (const int) 0:28 matrix-times-vector ( temp 4-component vector of float) 0:28 Projection: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:28 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:28 Constant: 0:28 2 (const uint) 0:28 Pos: direct index for structure ( temp 4-component vector of float) 0:28 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp 3-component vector of float) 0:29 Norm: direct index for structure ( temp 3-component vector of float) 0:29 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:29 Constant: 0:29 1 (const int) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 matrix-times-vector ( temp 4-component vector of float) 0:29 Construct mat3x4 ( uniform 3X4 matrix of float) 0:29 World: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:29 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:29 Constant: 0:29 0 (const uint) 0:29 Norm: direct index for structure ( temp 3-component vector of float) 0:29 'input' ( in structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:29 Constant: 0:29 1 (const int) 0:31 Branch: Return with expression 0:31 'output' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Pos: direct index for structure ( temp 4-component vector of float) 0:? 'input' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Constant: 0:22 0 (const int) 0:? 'input.Pos' (layout( location=0) in 4-component vector of float) 0:22 move second child to first child ( temp 3-component vector of float) 0:22 Norm: direct index for structure ( temp 3-component vector of float) 0:? 'input' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Constant: 0:22 1 (const int) 0:? 'input.Norm' (layout( location=1) in 3-component vector of float) 0:22 Sequence 0:22 move second child to first child ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Function Call: @main(struct-VS_INPUT-vf4-vf31; ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:? 'input' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:22 Pos: direct index for structure ( temp 4-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:? '@entryPointOutput.Norm' (layout( location=0) out 3-component vector of float) 0:22 Norm: direct index for structure ( temp 3-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) 0:22 Constant: 0:22 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float World, layout( row_major std140) uniform 4X4 matrix of float View, layout( row_major std140) uniform 4X4 matrix of float Projection}) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:? '@entryPointOutput.Norm' (layout( location=0) out 3-component vector of float) 0:? 'input.Pos' (layout( location=0) in 4-component vector of float) 0:? 'input.Norm' (layout( location=1) in 3-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 74 78 86 90 Source HLSL 500 Name 4 "main" Name 9 "VS_INPUT" MemberName 9(VS_INPUT) 0 "Pos" MemberName 9(VS_INPUT) 1 "Norm" Name 11 "PS_INPUT" MemberName 11(PS_INPUT) 0 "Pos" MemberName 11(PS_INPUT) 1 "Norm" Name 14 "@main(struct-VS_INPUT-vf4-vf31;" Name 13 "input" Name 18 "ConstantBuffer" Name 21 "output" Name 28 "C" MemberName 28(C) 0 "World" MemberName 28(C) 1 "View" MemberName 28(C) 2 "Projection" Name 30 "" Name 72 "input" Name 74 "input.Pos" Name 78 "input.Norm" Name 81 "flattenTemp" Name 82 "param" Name 86 "@entryPointOutput.Pos" Name 90 "@entryPointOutput.Norm" Decorate 28(C) Block MemberDecorate 28(C) 0 RowMajor MemberDecorate 28(C) 0 MatrixStride 16 MemberDecorate 28(C) 0 Offset 0 MemberDecorate 28(C) 1 RowMajor MemberDecorate 28(C) 1 MatrixStride 16 MemberDecorate 28(C) 1 Offset 64 MemberDecorate 28(C) 2 RowMajor MemberDecorate 28(C) 2 MatrixStride 16 MemberDecorate 28(C) 2 Offset 128 Decorate 30 Binding 0 Decorate 30 DescriptorSet 0 Decorate 74(input.Pos) Location 0 Decorate 78(input.Norm) Location 1 Decorate 86(@entryPointOutput.Pos) BuiltIn Position Decorate 90(@entryPointOutput.Norm) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 3 9(VS_INPUT): TypeStruct 7(fvec4) 8(fvec3) 10: TypePointer Function 9(VS_INPUT) 11(PS_INPUT): TypeStruct 7(fvec4) 8(fvec3) 12: TypeFunction 11(PS_INPUT) 10(ptr) 16: TypeInt 32 1 17: TypePointer Function 16(int) 19: 16(int) Constant 42 20: TypePointer Function 11(PS_INPUT) 22: 6(float) Constant 0 23: 7(fvec4) ConstantComposite 22 22 22 22 24: 8(fvec3) ConstantComposite 22 22 22 25:11(PS_INPUT) ConstantComposite 23 24 26: 16(int) Constant 0 27: TypeMatrix 7(fvec4) 4 28(C): TypeStruct 27 27 27 29: TypePointer Uniform 28(C) 30: 29(ptr) Variable Uniform 31: TypePointer Uniform 27 34: TypePointer Function 7(fvec4) 39: 16(int) Constant 1 46: 16(int) Constant 2 55: TypeMatrix 7(fvec4) 3 60: TypePointer Function 8(fvec3) 73: TypePointer Input 7(fvec4) 74(input.Pos): 73(ptr) Variable Input 77: TypePointer Input 8(fvec3) 78(input.Norm): 77(ptr) Variable Input 85: TypePointer Output 7(fvec4) 86(@entryPointOutput.Pos): 85(ptr) Variable Output 89: TypePointer Output 8(fvec3) 90(@entryPointOutput.Norm): 89(ptr) Variable Output 4(main): 2 Function None 3 5: Label 72(input): 10(ptr) Variable Function 81(flattenTemp): 20(ptr) Variable Function 82(param): 10(ptr) Variable Function 75: 7(fvec4) Load 74(input.Pos) 76: 34(ptr) AccessChain 72(input) 26 Store 76 75 79: 8(fvec3) Load 78(input.Norm) 80: 60(ptr) AccessChain 72(input) 39 Store 80 79 83: 9(VS_INPUT) Load 72(input) Store 82(param) 83 84:11(PS_INPUT) FunctionCall 14(@main(struct-VS_INPUT-vf4-vf31;) 82(param) Store 81(flattenTemp) 84 87: 34(ptr) AccessChain 81(flattenTemp) 26 88: 7(fvec4) Load 87 Store 86(@entryPointOutput.Pos) 88 91: 60(ptr) AccessChain 81(flattenTemp) 39 92: 8(fvec3) Load 91 Store 90(@entryPointOutput.Norm) 92 Return FunctionEnd 14(@main(struct-VS_INPUT-vf4-vf31;):11(PS_INPUT) Function None 12 13(input): 10(ptr) FunctionParameter 15: Label 18(ConstantBuffer): 17(ptr) Variable Function 21(output): 20(ptr) Variable Function Store 18(ConstantBuffer) 19 Store 21(output) 25 32: 31(ptr) AccessChain 30 26 33: 27 Load 32 35: 34(ptr) AccessChain 13(input) 26 36: 7(fvec4) Load 35 37: 7(fvec4) MatrixTimesVector 33 36 38: 34(ptr) AccessChain 21(output) 26 Store 38 37 40: 31(ptr) AccessChain 30 39 41: 27 Load 40 42: 34(ptr) AccessChain 21(output) 26 43: 7(fvec4) Load 42 44: 7(fvec4) MatrixTimesVector 41 43 45: 34(ptr) AccessChain 21(output) 26 Store 45 44 47: 31(ptr) AccessChain 30 46 48: 27 Load 47 49: 34(ptr) AccessChain 21(output) 26 50: 7(fvec4) Load 49 51: 7(fvec4) MatrixTimesVector 48 50 52: 34(ptr) AccessChain 21(output) 26 Store 52 51 53: 31(ptr) AccessChain 30 26 54: 27 Load 53 56: 7(fvec4) CompositeExtract 54 0 57: 7(fvec4) CompositeExtract 54 1 58: 7(fvec4) CompositeExtract 54 2 59: 55 CompositeConstruct 56 57 58 61: 60(ptr) AccessChain 13(input) 39 62: 8(fvec3) Load 61 63: 7(fvec4) MatrixTimesVector 59 62 64: 6(float) CompositeExtract 63 0 65: 6(float) CompositeExtract 63 1 66: 6(float) CompositeExtract 63 2 67: 8(fvec3) CompositeConstruct 64 65 66 68: 60(ptr) AccessChain 21(output) 39 Store 68 67 69:11(PS_INPUT) Load 21(output) ReturnValue 69 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.cbuffer-offsets.comp.out000066400000000000000000000256431506534232700241730ustar00rootroot00000000000000hlsl.cbuffer-offsets.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:43 Function Definition: @main( ( temp void) 0:43 Function Parameters: 0:43 Function Definition: main( ( temp void) 0:43 Function Parameters: 0:? Sequence 0:43 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float f1, layout( row_major std140) uniform 3-element array of 3-component vector of float f3a3, layout( row_major std140) uniform float f2, layout( row_major std140) uniform float f3, layout( row_major std140) uniform 1X1 matrix of float m11, layout( row_major std140) uniform 1X2 matrix of float m12, layout( row_major std140) uniform 2X1 matrix of float m21, layout( row_major std140) uniform 2X2 matrix of float m22, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform float f4, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform float f5, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform float f6, layout( column_major std140) uniform 1X1 matrix of float rm11, layout( column_major std140) uniform 1X2 matrix of float rm12, layout( column_major std140) uniform 2X1 matrix of float rm21, layout( column_major std140) uniform 2X2 matrix of float rm22, layout( column_major std140) uniform 3X3 matrix of float rm33, layout( row_major std140) uniform float f7, layout( column_major std140) uniform 3X4 matrix of float rm34, layout( row_major std140) uniform float f8, layout( column_major std140) uniform 4X3 matrix of float rm43, layout( row_major std140) uniform float f9, layout( row_major std140) uniform 3-element array of float f1a3, layout( row_major std140) uniform float f10}) Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:43 Function Definition: @main( ( temp void) 0:43 Function Parameters: 0:43 Function Definition: main( ( temp void) 0:43 Function Parameters: 0:? Sequence 0:43 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float f1, layout( row_major std140) uniform 3-element array of 3-component vector of float f3a3, layout( row_major std140) uniform float f2, layout( row_major std140) uniform float f3, layout( row_major std140) uniform 1X1 matrix of float m11, layout( row_major std140) uniform 1X2 matrix of float m12, layout( row_major std140) uniform 2X1 matrix of float m21, layout( row_major std140) uniform 2X2 matrix of float m22, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform float f4, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform float f5, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform float f6, layout( column_major std140) uniform 1X1 matrix of float rm11, layout( column_major std140) uniform 1X2 matrix of float rm12, layout( column_major std140) uniform 2X1 matrix of float rm21, layout( column_major std140) uniform 2X2 matrix of float rm22, layout( column_major std140) uniform 3X3 matrix of float rm33, layout( row_major std140) uniform float f7, layout( column_major std140) uniform 3X4 matrix of float rm34, layout( row_major std140) uniform float f8, layout( column_major std140) uniform 4X3 matrix of float rm43, layout( row_major std140) uniform float f9, layout( row_major std140) uniform 3-element array of float f1a3, layout( row_major std140) uniform float f10}) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 28 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 25 "CB" MemberName 25(CB) 0 "f1" MemberName 25(CB) 1 "f3a3" MemberName 25(CB) 2 "f2" MemberName 25(CB) 3 "f3" MemberName 25(CB) 4 "m11" MemberName 25(CB) 5 "m12" MemberName 25(CB) 6 "m21" MemberName 25(CB) 7 "m22" MemberName 25(CB) 8 "m33" MemberName 25(CB) 9 "f4" MemberName 25(CB) 10 "m34" MemberName 25(CB) 11 "f5" MemberName 25(CB) 12 "m43" MemberName 25(CB) 13 "f6" MemberName 25(CB) 14 "rm11" MemberName 25(CB) 15 "rm12" MemberName 25(CB) 16 "rm21" MemberName 25(CB) 17 "rm22" MemberName 25(CB) 18 "rm33" MemberName 25(CB) 19 "f7" MemberName 25(CB) 20 "rm34" MemberName 25(CB) 21 "f8" MemberName 25(CB) 22 "rm43" MemberName 25(CB) 23 "f9" MemberName 25(CB) 24 "f1a3" MemberName 25(CB) 25 "f10" Name 27 "" Decorate 13 ArrayStride 16 Decorate 24 ArrayStride 16 Decorate 25(CB) Block MemberDecorate 25(CB) 0 Offset 0 MemberDecorate 25(CB) 1 Offset 16 MemberDecorate 25(CB) 2 Offset 60 MemberDecorate 25(CB) 3 Offset 64 MemberDecorate 25(CB) 4 RowMajor MemberDecorate 25(CB) 4 MatrixStride 16 MemberDecorate 25(CB) 4 Offset 68 MemberDecorate 25(CB) 5 RowMajor MemberDecorate 25(CB) 5 MatrixStride 16 MemberDecorate 25(CB) 5 Offset 80 MemberDecorate 25(CB) 6 RowMajor MemberDecorate 25(CB) 6 MatrixStride 16 MemberDecorate 25(CB) 6 Offset 100 MemberDecorate 25(CB) 7 RowMajor MemberDecorate 25(CB) 7 MatrixStride 16 MemberDecorate 25(CB) 7 Offset 112 MemberDecorate 25(CB) 8 RowMajor MemberDecorate 25(CB) 8 MatrixStride 16 MemberDecorate 25(CB) 8 Offset 144 MemberDecorate 25(CB) 9 Offset 188 MemberDecorate 25(CB) 10 RowMajor MemberDecorate 25(CB) 10 MatrixStride 16 MemberDecorate 25(CB) 10 Offset 192 MemberDecorate 25(CB) 11 Offset 252 MemberDecorate 25(CB) 12 RowMajor MemberDecorate 25(CB) 12 MatrixStride 16 MemberDecorate 25(CB) 12 Offset 256 MemberDecorate 25(CB) 13 Offset 304 MemberDecorate 25(CB) 14 ColMajor MemberDecorate 25(CB) 14 MatrixStride 16 MemberDecorate 25(CB) 14 Offset 308 MemberDecorate 25(CB) 15 ColMajor MemberDecorate 25(CB) 15 MatrixStride 16 MemberDecorate 25(CB) 15 Offset 312 MemberDecorate 25(CB) 16 ColMajor MemberDecorate 25(CB) 16 MatrixStride 16 MemberDecorate 25(CB) 16 Offset 320 MemberDecorate 25(CB) 17 ColMajor MemberDecorate 25(CB) 17 MatrixStride 16 MemberDecorate 25(CB) 17 Offset 352 MemberDecorate 25(CB) 18 ColMajor MemberDecorate 25(CB) 18 MatrixStride 16 MemberDecorate 25(CB) 18 Offset 384 MemberDecorate 25(CB) 19 Offset 428 MemberDecorate 25(CB) 20 ColMajor MemberDecorate 25(CB) 20 MatrixStride 16 MemberDecorate 25(CB) 20 Offset 432 MemberDecorate 25(CB) 21 Offset 480 MemberDecorate 25(CB) 22 ColMajor MemberDecorate 25(CB) 22 MatrixStride 16 MemberDecorate 25(CB) 22 Offset 496 MemberDecorate 25(CB) 23 Offset 556 MemberDecorate 25(CB) 24 Offset 560 MemberDecorate 25(CB) 25 Offset 596 Decorate 27 Binding 0 Decorate 27 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 9: TypeFloat 32 10: TypeVector 9(float) 3 11: TypeInt 32 0 12: 11(int) Constant 3 13: TypeArray 10(fvec3) 12 14: TypeVector 9(float) 1 15: TypeMatrix 14(fvec) 1 16: TypeVector 9(float) 2 17: TypeMatrix 16(fvec2) 1 18: TypeMatrix 14(fvec) 2 19: TypeMatrix 16(fvec2) 2 20: TypeMatrix 10(fvec3) 3 21: TypeVector 9(float) 4 22: TypeMatrix 21(fvec4) 3 23: TypeMatrix 10(fvec3) 4 24: TypeArray 9(float) 12 25(CB): TypeStruct 9(float) 13 9(float) 9(float) 15 17 18 19 20 9(float) 22 9(float) 23 9(float) 15 17 18 19 20 9(float) 22 9(float) 23 9(float) 24 9(float) 26: TypePointer Uniform 25(CB) 27: 26(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 8: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.charLit.vert.out000066400000000000000000000215011506534232700225050ustar00rootroot00000000000000hlsl.charLit.vert Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp uint) 0:3 'a1' ( temp uint) 0:3 Constant: 0:3 65 (const uint) 0:4 Sequence 0:4 move second child to first child ( temp int) 0:4 'a2' ( temp int) 0:4 Constant: 0:4 48 (const int) 0:6 Sequence 0:6 move second child to first child ( temp int) 0:6 'a3' ( temp int) 0:6 Constant: 0:6 7 (const int) 0:7 add second child into first child ( temp int) 0:7 'a3' ( temp int) 0:7 Constant: 0:7 8 (const int) 0:8 add second child into first child ( temp int) 0:8 'a3' ( temp int) 0:8 Constant: 0:8 9 (const int) 0:9 add second child into first child ( temp int) 0:9 'a3' ( temp int) 0:9 Constant: 0:9 10 (const int) 0:10 add second child into first child ( temp int) 0:10 'a3' ( temp int) 0:10 Constant: 0:10 11 (const int) 0:11 add second child into first child ( temp int) 0:11 'a3' ( temp int) 0:11 Constant: 0:11 12 (const int) 0:12 add second child into first child ( temp int) 0:12 'a3' ( temp int) 0:12 Constant: 0:12 13 (const int) 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'a10' ( temp int) 0:14 Constant: 0:14 99 (const int) 0:16 Branch: Return with expression 0:16 Construct vec4 ( temp 4-component vector of float) 0:16 Convert uint to float ( temp float) 0:16 add ( temp uint) 0:16 add ( temp uint) 0:16 add ( temp uint) 0:16 'a1' ( temp uint) 0:16 Convert int to uint ( temp uint) 0:16 'a2' ( temp int) 0:16 Convert int to uint ( temp uint) 0:16 'a3' ( temp int) 0:16 Convert int to uint ( temp uint) 0:16 'a10' ( temp int) 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp uint) 0:3 'a1' ( temp uint) 0:3 Constant: 0:3 65 (const uint) 0:4 Sequence 0:4 move second child to first child ( temp int) 0:4 'a2' ( temp int) 0:4 Constant: 0:4 48 (const int) 0:6 Sequence 0:6 move second child to first child ( temp int) 0:6 'a3' ( temp int) 0:6 Constant: 0:6 7 (const int) 0:7 add second child into first child ( temp int) 0:7 'a3' ( temp int) 0:7 Constant: 0:7 8 (const int) 0:8 add second child into first child ( temp int) 0:8 'a3' ( temp int) 0:8 Constant: 0:8 9 (const int) 0:9 add second child into first child ( temp int) 0:9 'a3' ( temp int) 0:9 Constant: 0:9 10 (const int) 0:10 add second child into first child ( temp int) 0:10 'a3' ( temp int) 0:10 Constant: 0:10 11 (const int) 0:11 add second child into first child ( temp int) 0:11 'a3' ( temp int) 0:11 Constant: 0:11 12 (const int) 0:12 add second child into first child ( temp int) 0:12 'a3' ( temp int) 0:12 Constant: 0:12 13 (const int) 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'a10' ( temp int) 0:14 Constant: 0:14 99 (const int) 0:16 Branch: Return with expression 0:16 Construct vec4 ( temp 4-component vector of float) 0:16 Convert uint to float ( temp float) 0:16 add ( temp uint) 0:16 add ( temp uint) 0:16 add ( temp uint) 0:16 'a1' ( temp uint) 0:16 Convert int to uint ( temp uint) 0:16 'a2' ( temp int) 0:16 Convert int to uint ( temp uint) 0:16 'a3' ( temp int) 0:16 Convert int to uint ( temp uint) 0:16 'a10' ( temp int) 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 58 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 56 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "a1" Name 17 "a2" Name 19 "a3" Name 39 "a10" Name 56 "@entryPointOutput" Decorate 56(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 0 12: TypePointer Function 11(int) 14: 11(int) Constant 65 15: TypeInt 32 1 16: TypePointer Function 15(int) 18: 15(int) Constant 48 20: 15(int) Constant 7 21: 15(int) Constant 8 24: 15(int) Constant 9 27: 15(int) Constant 10 30: 15(int) Constant 11 33: 15(int) Constant 12 36: 15(int) Constant 13 40: 15(int) Constant 99 55: TypePointer Output 7(fvec4) 56(@entryPointOutput): 55(ptr) Variable Output 4(main): 2 Function None 3 5: Label 57: 7(fvec4) FunctionCall 9(@main() Store 56(@entryPointOutput) 57 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 13(a1): 12(ptr) Variable Function 17(a2): 16(ptr) Variable Function 19(a3): 16(ptr) Variable Function 39(a10): 16(ptr) Variable Function Store 13(a1) 14 Store 17(a2) 18 Store 19(a3) 20 22: 15(int) Load 19(a3) 23: 15(int) IAdd 22 21 Store 19(a3) 23 25: 15(int) Load 19(a3) 26: 15(int) IAdd 25 24 Store 19(a3) 26 28: 15(int) Load 19(a3) 29: 15(int) IAdd 28 27 Store 19(a3) 29 31: 15(int) Load 19(a3) 32: 15(int) IAdd 31 30 Store 19(a3) 32 34: 15(int) Load 19(a3) 35: 15(int) IAdd 34 33 Store 19(a3) 35 37: 15(int) Load 19(a3) 38: 15(int) IAdd 37 36 Store 19(a3) 38 Store 39(a10) 40 41: 11(int) Load 13(a1) 42: 15(int) Load 17(a2) 43: 11(int) Bitcast 42 44: 11(int) IAdd 41 43 45: 15(int) Load 19(a3) 46: 11(int) Bitcast 45 47: 11(int) IAdd 44 46 48: 15(int) Load 39(a10) 49: 11(int) Bitcast 48 50: 11(int) IAdd 47 49 51: 6(float) ConvertUToF 50 52: 7(fvec4) CompositeConstruct 51 51 51 51 ReturnValue 52 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clip.frag.out000066400000000000000000000111771506534232700220150ustar00rootroot00000000000000hlsl.clip.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: GetEntitySelectClip( ( temp float) 0:3 Function Parameters: 0:? Sequence 0:4 Branch: Return with expression 0:4 Constant: 0:4 1.000000 0:8 Function Definition: @main( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Compare Less Than ( temp bool) 0:9 Function Call: GetEntitySelectClip( ( temp float) 0:9 Constant: 0:9 0.000000 0:9 true case 0:9 Branch: Kill 0:11 Branch: Return with expression 0:11 Constant: 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: GetEntitySelectClip( ( temp float) 0:3 Function Parameters: 0:? Sequence 0:4 Branch: Return with expression 0:4 Constant: 0:4 1.000000 0:8 Function Definition: @main( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Compare Less Than ( temp bool) 0:9 Function Call: GetEntitySelectClip( ( temp float) 0:9 Constant: 0:9 0.000000 0:9 true case 0:9 Branch: Kill 0:11 Branch: Return with expression 0:11 Constant: 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // 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 Fragment 4 "main" 28 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "GetEntitySelectClip(" Name 12 "@main(" Name 28 "@entryPointOutput" Decorate 28(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypeVector 6(float) 4 11: TypeFunction 10(fvec4) 14: 6(float) Constant 1065353216 18: 6(float) Constant 0 19: TypeBool 24: 10(fvec4) ConstantComposite 18 18 18 18 27: TypePointer Output 10(fvec4) 28(@entryPointOutput): 27(ptr) Variable Output 4(main): 2 Function None 3 5: Label 29: 10(fvec4) FunctionCall 12(@main() Store 28(@entryPointOutput) 29 Return FunctionEnd 8(GetEntitySelectClip(): 6(float) Function None 7 9: Label ReturnValue 14 FunctionEnd 12(@main(): 10(fvec4) Function None 11 13: Label 17: 6(float) FunctionCall 8(GetEntitySelectClip() 20: 19(bool) FOrdLessThan 17 18 SelectionMerge 22 None BranchConditional 20 21 22 21: Label Kill 22: Label ReturnValue 24 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-1.frag.out000066400000000000000000000206571506534232700236710ustar00rootroot00000000000000hlsl.clipdistance-1.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main(vf4;f1;f1; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'pos' ( in 4-component vector of float) 0:4 'clip' ( in float) 0:4 'cull' ( in float) 0:? Sequence 0:5 Branch: Return with expression 0:5 add ( temp 4-component vector of float) 0:5 add ( temp 4-component vector of float) 0:5 'pos' ( in 4-component vector of float) 0:5 'clip' ( in float) 0:5 'cull' ( in float) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'clip' ( temp float) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 1-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'cull' ( temp float) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 1-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main(vf4;f1;f1; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp float) 0:? 'cull' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? 'clip' ( in 1-element array of float ClipDistance) 0:? 'cull' ( in 1-element array of float CullDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main(vf4;f1;f1; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'pos' ( in 4-component vector of float) 0:4 'clip' ( in float) 0:4 'cull' ( in float) 0:? Sequence 0:5 Branch: Return with expression 0:5 add ( temp 4-component vector of float) 0:5 add ( temp 4-component vector of float) 0:5 'pos' ( in 4-component vector of float) 0:5 'clip' ( in float) 0:5 'cull' ( in float) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'clip' ( temp float) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 1-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'cull' ( temp float) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 1-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main(vf4;f1;f1; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp float) 0:? 'cull' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? 'clip' ( in 1-element array of float ClipDistance) 0:? 'cull' ( in 1-element array of float CullDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader Capability ClipDistance Capability CullDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 27 34 41 45 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 14 "@main(vf4;f1;f1;" Name 11 "pos" Name 12 "clip" Name 13 "cull" Name 25 "pos" Name 27 "pos" Name 29 "clip" Name 34 "clip" Name 40 "cull" Name 41 "cull" Name 45 "@entryPointOutput" Name 46 "param" Name 48 "param" Name 50 "param" Decorate 27(pos) BuiltIn FragCoord Decorate 34(clip) BuiltIn ClipDistance Decorate 41(cull) BuiltIn CullDistance Decorate 45(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypePointer Function 6(float) 10: TypeFunction 7(fvec4) 8(ptr) 9(ptr) 9(ptr) 26: TypePointer Input 7(fvec4) 27(pos): 26(ptr) Variable Input 30: TypeInt 32 0 31: 30(int) Constant 1 32: TypeArray 6(float) 31 33: TypePointer Input 32 34(clip): 33(ptr) Variable Input 35: TypeInt 32 1 36: 35(int) Constant 0 37: TypePointer Input 6(float) 41(cull): 33(ptr) Variable Input 44: TypePointer Output 7(fvec4) 45(@entryPointOutput): 44(ptr) Variable Output 4(main): 2 Function None 3 5: Label 25(pos): 8(ptr) Variable Function 29(clip): 9(ptr) Variable Function 40(cull): 9(ptr) Variable Function 46(param): 8(ptr) Variable Function 48(param): 9(ptr) Variable Function 50(param): 9(ptr) Variable Function 28: 7(fvec4) Load 27(pos) Store 25(pos) 28 38: 37(ptr) AccessChain 34(clip) 36 39: 6(float) Load 38 Store 29(clip) 39 42: 37(ptr) AccessChain 41(cull) 36 43: 6(float) Load 42 Store 40(cull) 43 47: 7(fvec4) Load 25(pos) Store 46(param) 47 49: 6(float) Load 29(clip) Store 48(param) 49 51: 6(float) Load 40(cull) Store 50(param) 51 52: 7(fvec4) FunctionCall 14(@main(vf4;f1;f1;) 46(param) 48(param) 50(param) Store 45(@entryPointOutput) 52 Return FunctionEnd 14(@main(vf4;f1;f1;): 7(fvec4) Function None 10 11(pos): 8(ptr) FunctionParameter 12(clip): 9(ptr) FunctionParameter 13(cull): 9(ptr) FunctionParameter 15: Label 16: 7(fvec4) Load 11(pos) 17: 6(float) Load 12(clip) 18: 7(fvec4) CompositeConstruct 17 17 17 17 19: 7(fvec4) FAdd 16 18 20: 6(float) Load 13(cull) 21: 7(fvec4) CompositeConstruct 20 20 20 20 22: 7(fvec4) FAdd 19 21 ReturnValue 22 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-1.geom.out000066400000000000000000001064461506534232700237020ustar00rootroot00000000000000hlsl.clipdistance-1.geom Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = line_strip 0:? Sequence 0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void) 0:11 Function Parameters: 0:11 'pos' ( in 3-element array of 4-component vector of float) 0:11 'VertexID' ( in 3-element array of uint) 0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:11 'clip' ( in 3-element array of 4-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( temp 4-component vector of float) 0:14 'pos' ( 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 clip: direct index for structure ( temp 2-component vector of float) 0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:15 Constant: 0:15 1 (const int) 0:15 vector swizzle ( temp 2-component vector of float) 0:15 direct index ( temp 4-component vector of float) 0:15 'clip' ( in 3-element array of 4-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:15 Sequence 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1 (const int) 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:17 pos: direct index for structure ( temp 4-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:17 Constant: 0:17 0 (const int) 0:? Sequence 0:17 move second child to first child ( temp float) 0:17 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) 0:17 Constant: 0:17 0 (const int) 0:17 direct index ( temp float) 0:17 clip: direct index for structure ( temp 2-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 move second child to first child ( temp float) 0:17 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) 0:17 Constant: 0:17 1 (const int) 0:17 direct index ( temp float) 0:17 clip: direct index for structure ( temp 2-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 EmitVertex ( temp void) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:11 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? Sequence 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = line_strip 0:? Sequence 0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void) 0:11 Function Parameters: 0:11 'pos' ( in 3-element array of 4-component vector of float) 0:11 'VertexID' ( in 3-element array of uint) 0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:11 'clip' ( in 3-element array of 4-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( temp 4-component vector of float) 0:14 'pos' ( 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 clip: direct index for structure ( temp 2-component vector of float) 0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:15 Constant: 0:15 1 (const int) 0:15 vector swizzle ( temp 2-component vector of float) 0:15 direct index ( temp 4-component vector of float) 0:15 'clip' ( in 3-element array of 4-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:15 Sequence 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1 (const int) 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:17 pos: direct index for structure ( temp 4-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:17 Constant: 0:17 0 (const int) 0:? Sequence 0:17 move second child to first child ( temp float) 0:17 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) 0:17 Constant: 0:17 0 (const int) 0:17 direct index ( temp float) 0:17 clip: direct index for structure ( temp 2-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 move second child to first child ( temp float) 0:17 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) 0:17 Constant: 0:17 1 (const int) 0:17 direct index ( temp float) 0:17 clip: direct index for structure ( temp 2-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 EmitVertex ( temp void) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:11 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? Sequence 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 118 Capability Geometry Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 38 44 57 61 68 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 3 Source HLSL 500 Name 4 "main" Name 15 "S" MemberName 15(S) 0 "pos" MemberName 15(S) 1 "clip" Name 22 "@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];" Name 18 "pos" Name 19 "VertexID" Name 20 "OutputStream" Name 21 "clip" Name 24 "s" Name 38 "OutputStream.pos" Name 44 "OutputStream.clip" Name 55 "pos" Name 57 "pos" Name 59 "VertexID" Name 61 "VertexID" Name 63 "clip" Name 68 "clip" Name 108 "OutputStream" Name 109 "param" Name 111 "param" Name 113 "param" Name 114 "param" Decorate 38(OutputStream.pos) BuiltIn Position Decorate 44(OutputStream.clip) BuiltIn ClipDistance Decorate 57(pos) BuiltIn Position Decorate 61(VertexID) Location 0 Decorate 68(clip) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 3 10: TypeArray 7(fvec4) 9 11: TypePointer Function 10 12: TypeArray 8(int) 9 13: TypePointer Function 12 14: TypeVector 6(float) 2 15(S): TypeStruct 7(fvec4) 14(fvec2) 16: TypePointer Function 15(S) 17: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 11(ptr) 25: TypeInt 32 1 26: 25(int) Constant 0 27: TypePointer Function 7(fvec4) 31: 25(int) Constant 1 35: TypePointer Function 14(fvec2) 37: TypePointer Output 7(fvec4) 38(OutputStream.pos): 37(ptr) Variable Output 41: 8(int) Constant 2 42: TypeArray 6(float) 41 43: TypePointer Output 42 44(OutputStream.clip): 43(ptr) Variable Output 45: 8(int) Constant 0 46: TypePointer Function 6(float) 49: TypePointer Output 6(float) 51: 8(int) Constant 1 56: TypePointer Input 10 57(pos): 56(ptr) Variable Input 60: TypePointer Input 12 61(VertexID): 60(ptr) Variable Input 64: 8(int) Constant 4 65: TypeArray 6(float) 64 66: TypeArray 65 9 67: TypePointer Input 66 68(clip): 67(ptr) Variable Input 69: TypePointer Input 6(float) 76: 25(int) Constant 2 80: 25(int) Constant 3 4(main): 2 Function None 3 5: Label 55(pos): 11(ptr) Variable Function 59(VertexID): 13(ptr) Variable Function 63(clip): 11(ptr) Variable Function 108(OutputStream): 16(ptr) Variable Function 109(param): 11(ptr) Variable Function 111(param): 13(ptr) Variable Function 113(param): 16(ptr) Variable Function 114(param): 11(ptr) Variable Function 58: 10 Load 57(pos) Store 55(pos) 58 62: 12 Load 61(VertexID) Store 59(VertexID) 62 70: 69(ptr) AccessChain 68(clip) 26 26 71: 6(float) Load 70 72: 46(ptr) AccessChain 63(clip) 26 45 Store 72 71 73: 69(ptr) AccessChain 68(clip) 26 31 74: 6(float) Load 73 75: 46(ptr) AccessChain 63(clip) 26 51 Store 75 74 77: 69(ptr) AccessChain 68(clip) 26 76 78: 6(float) Load 77 79: 46(ptr) AccessChain 63(clip) 26 41 Store 79 78 81: 69(ptr) AccessChain 68(clip) 26 80 82: 6(float) Load 81 83: 46(ptr) AccessChain 63(clip) 26 9 Store 83 82 84: 69(ptr) AccessChain 68(clip) 31 26 85: 6(float) Load 84 86: 46(ptr) AccessChain 63(clip) 31 45 Store 86 85 87: 69(ptr) AccessChain 68(clip) 31 31 88: 6(float) Load 87 89: 46(ptr) AccessChain 63(clip) 31 51 Store 89 88 90: 69(ptr) AccessChain 68(clip) 31 76 91: 6(float) Load 90 92: 46(ptr) AccessChain 63(clip) 31 41 Store 92 91 93: 69(ptr) AccessChain 68(clip) 31 80 94: 6(float) Load 93 95: 46(ptr) AccessChain 63(clip) 31 9 Store 95 94 96: 69(ptr) AccessChain 68(clip) 76 26 97: 6(float) Load 96 98: 46(ptr) AccessChain 63(clip) 76 45 Store 98 97 99: 69(ptr) AccessChain 68(clip) 76 31 100: 6(float) Load 99 101: 46(ptr) AccessChain 63(clip) 76 51 Store 101 100 102: 69(ptr) AccessChain 68(clip) 76 76 103: 6(float) Load 102 104: 46(ptr) AccessChain 63(clip) 76 41 Store 104 103 105: 69(ptr) AccessChain 68(clip) 76 80 106: 6(float) Load 105 107: 46(ptr) AccessChain 63(clip) 76 9 Store 107 106 110: 10 Load 55(pos) Store 109(param) 110 112: 12 Load 59(VertexID) Store 111(param) 112 115: 10 Load 63(clip) Store 114(param) 115 116: 2 FunctionCall 22(@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];) 109(param) 111(param) 113(param) 114(param) 117: 15(S) Load 113(param) Store 108(OutputStream) 117 Return FunctionEnd 22(@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];): 2 Function None 17 18(pos): 11(ptr) FunctionParameter 19(VertexID): 13(ptr) FunctionParameter 20(OutputStream): 16(ptr) FunctionParameter 21(clip): 11(ptr) FunctionParameter 23: Label 24(s): 16(ptr) Variable Function 28: 27(ptr) AccessChain 18(pos) 26 29: 7(fvec4) Load 28 30: 27(ptr) AccessChain 24(s) 26 Store 30 29 32: 27(ptr) AccessChain 21(clip) 26 33: 7(fvec4) Load 32 34: 14(fvec2) VectorShuffle 33 33 0 1 36: 35(ptr) AccessChain 24(s) 31 Store 36 34 39: 27(ptr) AccessChain 24(s) 26 40: 7(fvec4) Load 39 Store 38(OutputStream.pos) 40 47: 46(ptr) AccessChain 24(s) 31 45 48: 6(float) Load 47 50: 49(ptr) AccessChain 44(OutputStream.clip) 26 Store 50 48 52: 46(ptr) AccessChain 24(s) 31 51 53: 6(float) Load 52 54: 49(ptr) AccessChain 44(OutputStream.clip) 31 Store 54 53 EmitVertex Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-1.vert.out000066400000000000000000000176171506534232700237340ustar00rootroot00000000000000hlsl.clipdistance-1.vert Shader version: 500 0:? Sequence 0:4 Function Definition: @main(vf4;f1;f1; ( temp void) 0:4 Function Parameters: 0:4 'pos' ( out 4-component vector of float) 0:4 'clip' ( out float) 0:4 'cull' ( out float) 0:? Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'pos' ( out 4-component vector of float) 0:5 Constant: 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:6 move second child to first child ( temp float) 0:6 'clip' ( out float) 0:6 Constant: 0:6 0.500000 0:7 move second child to first child ( temp float) 0:7 'cull' ( out float) 0:7 Constant: 0:7 0.510000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Function Call: @main(vf4;f1;f1; ( temp void) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp float) 0:? 'cull' ( temp float) 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 1-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:? 'clip' ( temp float) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 1-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) 0:? 'cull' ( temp float) 0:? Linker Objects 0:? 'pos' ( out 4-component vector of float Position) 0:? 'clip' ( out 1-element array of float ClipDistance) 0:? 'cull' ( out 1-element array of float CullDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:4 Function Definition: @main(vf4;f1;f1; ( temp void) 0:4 Function Parameters: 0:4 'pos' ( out 4-component vector of float) 0:4 'clip' ( out float) 0:4 'cull' ( out float) 0:? Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'pos' ( out 4-component vector of float) 0:5 Constant: 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:6 move second child to first child ( temp float) 0:6 'clip' ( out float) 0:6 Constant: 0:6 0.500000 0:7 move second child to first child ( temp float) 0:7 'cull' ( out float) 0:7 Constant: 0:7 0.510000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Function Call: @main(vf4;f1;f1; ( temp void) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp float) 0:? 'cull' ( temp float) 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 1-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:? 'clip' ( temp float) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 1-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) 0:? 'cull' ( temp float) 0:? Linker Objects 0:? 'pos' ( out 4-component vector of float Position) 0:? 'clip' ( out 1-element array of float ClipDistance) 0:? 'cull' ( out 1-element array of float CullDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader Capability ClipDistance Capability CullDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 31 37 43 Source HLSL 500 Name 4 "main" Name 14 "@main(vf4;f1;f1;" Name 11 "pos" Name 12 "clip" Name 13 "cull" Name 20 "pos" Name 21 "clip" Name 22 "cull" Name 23 "param" Name 24 "param" Name 25 "param" Name 31 "pos" Name 37 "clip" Name 43 "cull" Decorate 31(pos) BuiltIn Position Decorate 37(clip) BuiltIn ClipDistance Decorate 43(cull) BuiltIn CullDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypePointer Function 6(float) 10: TypeFunction 2 8(ptr) 9(ptr) 9(ptr) 16: 6(float) Constant 1065353216 17: 7(fvec4) ConstantComposite 16 16 16 16 18: 6(float) Constant 1056964608 19: 6(float) Constant 1057132380 30: TypePointer Output 7(fvec4) 31(pos): 30(ptr) Variable Output 33: TypeInt 32 0 34: 33(int) Constant 1 35: TypeArray 6(float) 34 36: TypePointer Output 35 37(clip): 36(ptr) Variable Output 38: TypeInt 32 1 39: 38(int) Constant 0 41: TypePointer Output 6(float) 43(cull): 36(ptr) Variable Output 4(main): 2 Function None 3 5: Label 20(pos): 8(ptr) Variable Function 21(clip): 9(ptr) Variable Function 22(cull): 9(ptr) Variable Function 23(param): 8(ptr) Variable Function 24(param): 9(ptr) Variable Function 25(param): 9(ptr) Variable Function 26: 2 FunctionCall 14(@main(vf4;f1;f1;) 23(param) 24(param) 25(param) 27: 7(fvec4) Load 23(param) Store 20(pos) 27 28: 6(float) Load 24(param) Store 21(clip) 28 29: 6(float) Load 25(param) Store 22(cull) 29 32: 7(fvec4) Load 20(pos) Store 31(pos) 32 40: 6(float) Load 21(clip) 42: 41(ptr) AccessChain 37(clip) 39 Store 42 40 44: 6(float) Load 22(cull) 45: 41(ptr) AccessChain 43(cull) 39 Store 45 44 Return FunctionEnd 14(@main(vf4;f1;f1;): 2 Function None 10 11(pos): 8(ptr) FunctionParameter 12(clip): 9(ptr) FunctionParameter 13(cull): 9(ptr) FunctionParameter 15: Label Store 11(pos) 17 Store 12(clip) 18 Store 13(cull) 19 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-2.frag.out000066400000000000000000000455331506534232700236720ustar00rootroot00000000000000hlsl.clipdistance-2.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'pos' ( in 4-component vector of float) 0:4 'clip' ( in 2-element array of 2-component vector of float) 0:4 'cull' ( in 2-element array of 2-component vector of float) 0:? Sequence 0:6 Branch: Return with expression 0:6 add ( temp 4-component vector of float) 0:6 add ( temp 4-component vector of float) 0:6 'pos' ( in 4-component vector of float) 0:6 direct index ( temp float) 0:6 direct index ( temp 2-component vector of float) 0:6 'clip' ( in 2-element array of 2-component vector of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const int) 0:6 direct index ( temp float) 0:6 direct index ( temp 2-component vector of float) 0:6 'cull' ( in 2-element array of 2-component vector of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 2 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 3 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 2 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 3 (const int) 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:? 'cull' ( in 4-element array of float CullDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'pos' ( in 4-component vector of float) 0:4 'clip' ( in 2-element array of 2-component vector of float) 0:4 'cull' ( in 2-element array of 2-component vector of float) 0:? Sequence 0:6 Branch: Return with expression 0:6 add ( temp 4-component vector of float) 0:6 add ( temp 4-component vector of float) 0:6 'pos' ( in 4-component vector of float) 0:6 direct index ( temp float) 0:6 direct index ( temp 2-component vector of float) 0:6 'clip' ( in 2-element array of 2-component vector of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const int) 0:6 direct index ( temp float) 0:6 direct index ( temp 2-component vector of float) 0:6 'cull' ( in 2-element array of 2-component vector of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 2 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 3 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 2 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 3 (const int) 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:? 'cull' ( in 4-element array of float CullDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader Capability ClipDistance Capability CullDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 37 43 62 76 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 18 "@main(vf4;vf2[2];vf2[2];" Name 15 "pos" Name 16 "clip" Name 17 "cull" Name 35 "pos" Name 37 "pos" Name 39 "clip" Name 43 "clip" Name 61 "cull" Name 62 "cull" Name 76 "@entryPointOutput" Name 77 "param" Name 79 "param" Name 81 "param" Decorate 37(pos) BuiltIn FragCoord Decorate 43(clip) BuiltIn ClipDistance Decorate 62(cull) BuiltIn CullDistance Decorate 76(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeVector 6(float) 2 10: TypeInt 32 0 11: 10(int) Constant 2 12: TypeArray 9(fvec2) 11 13: TypePointer Function 12 14: TypeFunction 7(fvec4) 8(ptr) 13(ptr) 13(ptr) 21: TypeInt 32 1 22: 21(int) Constant 0 23: 10(int) Constant 0 24: TypePointer Function 6(float) 36: TypePointer Input 7(fvec4) 37(pos): 36(ptr) Variable Input 40: 10(int) Constant 4 41: TypeArray 6(float) 40 42: TypePointer Input 41 43(clip): 42(ptr) Variable Input 44: TypePointer Input 6(float) 48: 21(int) Constant 1 51: 10(int) Constant 1 53: 21(int) Constant 2 57: 21(int) Constant 3 62(cull): 42(ptr) Variable Input 75: TypePointer Output 7(fvec4) 76(@entryPointOutput): 75(ptr) Variable Output 4(main): 2 Function None 3 5: Label 35(pos): 8(ptr) Variable Function 39(clip): 13(ptr) Variable Function 61(cull): 13(ptr) Variable Function 77(param): 8(ptr) Variable Function 79(param): 13(ptr) Variable Function 81(param): 13(ptr) Variable Function 38: 7(fvec4) Load 37(pos) Store 35(pos) 38 45: 44(ptr) AccessChain 43(clip) 22 46: 6(float) Load 45 47: 24(ptr) AccessChain 39(clip) 22 23 Store 47 46 49: 44(ptr) AccessChain 43(clip) 48 50: 6(float) Load 49 52: 24(ptr) AccessChain 39(clip) 22 51 Store 52 50 54: 44(ptr) AccessChain 43(clip) 53 55: 6(float) Load 54 56: 24(ptr) AccessChain 39(clip) 48 23 Store 56 55 58: 44(ptr) AccessChain 43(clip) 57 59: 6(float) Load 58 60: 24(ptr) AccessChain 39(clip) 48 51 Store 60 59 63: 44(ptr) AccessChain 62(cull) 22 64: 6(float) Load 63 65: 24(ptr) AccessChain 61(cull) 22 23 Store 65 64 66: 44(ptr) AccessChain 62(cull) 48 67: 6(float) Load 66 68: 24(ptr) AccessChain 61(cull) 22 51 Store 68 67 69: 44(ptr) AccessChain 62(cull) 53 70: 6(float) Load 69 71: 24(ptr) AccessChain 61(cull) 48 23 Store 71 70 72: 44(ptr) AccessChain 62(cull) 57 73: 6(float) Load 72 74: 24(ptr) AccessChain 61(cull) 48 51 Store 74 73 78: 7(fvec4) Load 35(pos) Store 77(param) 78 80: 12 Load 39(clip) Store 79(param) 80 82: 12 Load 61(cull) Store 81(param) 82 83: 7(fvec4) FunctionCall 18(@main(vf4;vf2[2];vf2[2];) 77(param) 79(param) 81(param) Store 76(@entryPointOutput) 83 Return FunctionEnd 18(@main(vf4;vf2[2];vf2[2];): 7(fvec4) Function None 14 15(pos): 8(ptr) FunctionParameter 16(clip): 13(ptr) FunctionParameter 17(cull): 13(ptr) FunctionParameter 19: Label 20: 7(fvec4) Load 15(pos) 25: 24(ptr) AccessChain 16(clip) 22 23 26: 6(float) Load 25 27: 7(fvec4) CompositeConstruct 26 26 26 26 28: 7(fvec4) FAdd 20 27 29: 24(ptr) AccessChain 17(cull) 22 23 30: 6(float) Load 29 31: 7(fvec4) CompositeConstruct 30 30 30 30 32: 7(fvec4) FAdd 28 31 ReturnValue 32 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-2.geom.out000066400000000000000000001342771506534232700237060ustar00rootroot00000000000000hlsl.clipdistance-2.geom Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = line_strip 0:? Sequence 0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void) 0:11 Function Parameters: 0:11 'pos' ( in 3-element array of 4-component vector of float) 0:11 'VertexID' ( in 3-element array of uint) 0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:11 'clip' ( in 3-element array of 2-element array of 2-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( temp 4-component vector of float) 0:14 'pos' ( 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 direct index ( temp 2-component vector of float) 0:15 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 direct index ( temp 2-component vector of float) 0:15 direct index ( temp 2-element array of 2-component vector of float) 0:15 'clip' ( in 3-element array of 2-element array of 2-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:16 direct index ( temp 2-component vector of float) 0:16 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 direct index ( temp 2-component vector of float) 0:16 direct index ( temp 2-element array of 2-component vector of float) 0:16 'clip' ( in 3-element array of 2-element array of 2-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:18 Sequence 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:18 pos: direct index for structure ( temp 4-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 0 (const int) 0:? Sequence 0:18 move second child to first child ( temp float) 0:18 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) 0:18 Constant: 0:18 1 (const int) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) 0:18 Constant: 0:18 2 (const int) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) 0:18 Constant: 0:18 3 (const int) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 EmitVertex ( temp void) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:11 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? Sequence 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = line_strip 0:? Sequence 0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void) 0:11 Function Parameters: 0:11 'pos' ( in 3-element array of 4-component vector of float) 0:11 'VertexID' ( in 3-element array of uint) 0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:11 'clip' ( in 3-element array of 2-element array of 2-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( temp 4-component vector of float) 0:14 'pos' ( 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 direct index ( temp 2-component vector of float) 0:15 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 direct index ( temp 2-component vector of float) 0:15 direct index ( temp 2-element array of 2-component vector of float) 0:15 'clip' ( in 3-element array of 2-element array of 2-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:16 direct index ( temp 2-component vector of float) 0:16 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 direct index ( temp 2-component vector of float) 0:16 direct index ( temp 2-element array of 2-component vector of float) 0:16 'clip' ( in 3-element array of 2-element array of 2-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:18 Sequence 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:18 pos: direct index for structure ( temp 4-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 0 (const int) 0:? Sequence 0:18 move second child to first child ( temp float) 0:18 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) 0:18 Constant: 0:18 1 (const int) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) 0:18 Constant: 0:18 2 (const int) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( out float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) 0:18 Constant: 0:18 3 (const int) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 EmitVertex ( temp void) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:11 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? Sequence 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 direct index ( temp 2-element array of 2-component vector of float) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( in float ClipDistance) 0:11 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 3 (const int) 0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 128 Capability Geometry Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 44 50 71 75 80 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 3 Source HLSL 500 Name 4 "main" Name 17 "S" MemberName 17(S) 0 "pos" MemberName 17(S) 1 "clip" Name 26 "@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];" Name 22 "pos" Name 23 "VertexID" Name 24 "OutputStream" Name 25 "clip" Name 28 "s" Name 44 "OutputStream.pos" Name 50 "OutputStream.clip" Name 69 "pos" Name 71 "pos" Name 73 "VertexID" Name 75 "VertexID" Name 77 "clip" Name 80 "clip" Name 118 "OutputStream" Name 119 "param" Name 121 "param" Name 123 "param" Name 124 "param" Decorate 44(OutputStream.pos) BuiltIn Position Decorate 50(OutputStream.clip) BuiltIn ClipDistance Decorate 71(pos) BuiltIn Position Decorate 75(VertexID) Location 0 Decorate 80(clip) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 3 10: TypeArray 7(fvec4) 9 11: TypePointer Function 10 12: TypeArray 8(int) 9 13: TypePointer Function 12 14: TypeVector 6(float) 2 15: 8(int) Constant 2 16: TypeArray 14(fvec2) 15 17(S): TypeStruct 7(fvec4) 16 18: TypePointer Function 17(S) 19: TypeArray 16 9 20: TypePointer Function 19 21: TypeFunction 2 11(ptr) 13(ptr) 18(ptr) 20(ptr) 29: TypeInt 32 1 30: 29(int) Constant 0 31: TypePointer Function 7(fvec4) 35: 29(int) Constant 1 36: TypePointer Function 14(fvec2) 43: TypePointer Output 7(fvec4) 44(OutputStream.pos): 43(ptr) Variable Output 47: 8(int) Constant 4 48: TypeArray 6(float) 47 49: TypePointer Output 48 50(OutputStream.clip): 49(ptr) Variable Output 51: 8(int) Constant 0 52: TypePointer Function 6(float) 55: TypePointer Output 6(float) 57: 8(int) Constant 1 61: 29(int) Constant 2 65: 29(int) Constant 3 70: TypePointer Input 10 71(pos): 70(ptr) Variable Input 74: TypePointer Input 12 75(VertexID): 74(ptr) Variable Input 78: TypeArray 48 9 79: TypePointer Input 78 80(clip): 79(ptr) Variable Input 81: TypePointer Input 6(float) 4(main): 2 Function None 3 5: Label 69(pos): 11(ptr) Variable Function 73(VertexID): 13(ptr) Variable Function 77(clip): 20(ptr) Variable Function 118(OutputStream): 18(ptr) Variable Function 119(param): 11(ptr) Variable Function 121(param): 13(ptr) Variable Function 123(param): 18(ptr) Variable Function 124(param): 20(ptr) Variable Function 72: 10 Load 71(pos) Store 69(pos) 72 76: 12 Load 75(VertexID) Store 73(VertexID) 76 82: 81(ptr) AccessChain 80(clip) 30 30 83: 6(float) Load 82 84: 52(ptr) AccessChain 77(clip) 30 30 51 Store 84 83 85: 81(ptr) AccessChain 80(clip) 30 35 86: 6(float) Load 85 87: 52(ptr) AccessChain 77(clip) 30 30 57 Store 87 86 88: 81(ptr) AccessChain 80(clip) 30 61 89: 6(float) Load 88 90: 52(ptr) AccessChain 77(clip) 30 35 51 Store 90 89 91: 81(ptr) AccessChain 80(clip) 30 65 92: 6(float) Load 91 93: 52(ptr) AccessChain 77(clip) 30 35 57 Store 93 92 94: 81(ptr) AccessChain 80(clip) 35 30 95: 6(float) Load 94 96: 52(ptr) AccessChain 77(clip) 35 30 51 Store 96 95 97: 81(ptr) AccessChain 80(clip) 35 35 98: 6(float) Load 97 99: 52(ptr) AccessChain 77(clip) 35 30 57 Store 99 98 100: 81(ptr) AccessChain 80(clip) 35 61 101: 6(float) Load 100 102: 52(ptr) AccessChain 77(clip) 35 35 51 Store 102 101 103: 81(ptr) AccessChain 80(clip) 35 65 104: 6(float) Load 103 105: 52(ptr) AccessChain 77(clip) 35 35 57 Store 105 104 106: 81(ptr) AccessChain 80(clip) 61 30 107: 6(float) Load 106 108: 52(ptr) AccessChain 77(clip) 61 30 51 Store 108 107 109: 81(ptr) AccessChain 80(clip) 61 35 110: 6(float) Load 109 111: 52(ptr) AccessChain 77(clip) 61 30 57 Store 111 110 112: 81(ptr) AccessChain 80(clip) 61 61 113: 6(float) Load 112 114: 52(ptr) AccessChain 77(clip) 61 35 51 Store 114 113 115: 81(ptr) AccessChain 80(clip) 61 65 116: 6(float) Load 115 117: 52(ptr) AccessChain 77(clip) 61 35 57 Store 117 116 120: 10 Load 69(pos) Store 119(param) 120 122: 12 Load 73(VertexID) Store 121(param) 122 125: 19 Load 77(clip) Store 124(param) 125 126: 2 FunctionCall 26(@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];) 119(param) 121(param) 123(param) 124(param) 127: 17(S) Load 123(param) Store 118(OutputStream) 127 Return FunctionEnd 26(@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];): 2 Function None 21 22(pos): 11(ptr) FunctionParameter 23(VertexID): 13(ptr) FunctionParameter 24(OutputStream): 18(ptr) FunctionParameter 25(clip): 20(ptr) FunctionParameter 27: Label 28(s): 18(ptr) Variable Function 32: 31(ptr) AccessChain 22(pos) 30 33: 7(fvec4) Load 32 34: 31(ptr) AccessChain 28(s) 30 Store 34 33 37: 36(ptr) AccessChain 25(clip) 30 30 38: 14(fvec2) Load 37 39: 36(ptr) AccessChain 28(s) 35 30 Store 39 38 40: 36(ptr) AccessChain 25(clip) 30 35 41: 14(fvec2) Load 40 42: 36(ptr) AccessChain 28(s) 35 35 Store 42 41 45: 31(ptr) AccessChain 28(s) 30 46: 7(fvec4) Load 45 Store 44(OutputStream.pos) 46 53: 52(ptr) AccessChain 28(s) 35 30 51 54: 6(float) Load 53 56: 55(ptr) AccessChain 50(OutputStream.clip) 30 Store 56 54 58: 52(ptr) AccessChain 28(s) 35 30 57 59: 6(float) Load 58 60: 55(ptr) AccessChain 50(OutputStream.clip) 35 Store 60 59 62: 52(ptr) AccessChain 28(s) 35 35 51 63: 6(float) Load 62 64: 55(ptr) AccessChain 50(OutputStream.clip) 61 Store 64 63 66: 52(ptr) AccessChain 28(s) 35 35 57 67: 6(float) Load 66 68: 55(ptr) AccessChain 50(OutputStream.clip) 65 Store 68 67 EmitVertex Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-2.vert.out000066400000000000000000000573151506534232700237340ustar00rootroot00000000000000hlsl.clipdistance-2.vert Shader version: 500 0:? Sequence 0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp void) 0:4 Function Parameters: 0:4 'pos' ( out 4-component vector of float) 0:4 'clip' ( out 2-element array of 2-component vector of float) 0:4 'cull' ( out 2-element array of 2-component vector of float) 0:? Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'pos' ( out 4-component vector of float) 0:5 Constant: 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:6 direct index ( temp 2-component vector of float) 0:6 'clip' ( out 2-element array of 2-component vector of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0.500000 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 'clip' ( out 2-element array of 2-component vector of float) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0.600000 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 direct index ( temp 2-component vector of float) 0:8 'clip' ( out 2-element array of 2-component vector of float) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0.700000 0:9 move second child to first child ( temp float) 0:9 direct index ( temp float) 0:9 direct index ( temp 2-component vector of float) 0:9 'clip' ( out 2-element array of 2-component vector of float) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0.800000 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 'cull' ( out 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0.525000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 2-component vector of float) 0:12 'cull' ( out 2-element array of 2-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0.625000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:13 'cull' ( out 2-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.725000 0:14 move second child to first child ( temp float) 0:14 direct index ( temp float) 0:14 direct index ( temp 2-component vector of float) 0:14 'cull' ( out 2-element array of 2-component vector of float) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 0.825000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp void) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 2 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 3 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 2 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 3 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) 0:? Linker Objects 0:? 'pos' ( out 4-component vector of float Position) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:? 'cull' ( out 4-element array of float CullDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp void) 0:4 Function Parameters: 0:4 'pos' ( out 4-component vector of float) 0:4 'clip' ( out 2-element array of 2-component vector of float) 0:4 'cull' ( out 2-element array of 2-component vector of float) 0:? Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'pos' ( out 4-component vector of float) 0:5 Constant: 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:6 direct index ( temp 2-component vector of float) 0:6 'clip' ( out 2-element array of 2-component vector of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0.500000 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 'clip' ( out 2-element array of 2-component vector of float) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0.600000 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 direct index ( temp 2-component vector of float) 0:8 'clip' ( out 2-element array of 2-component vector of float) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0.700000 0:9 move second child to first child ( temp float) 0:9 direct index ( temp float) 0:9 direct index ( temp 2-component vector of float) 0:9 'clip' ( out 2-element array of 2-component vector of float) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0.800000 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 'cull' ( out 2-element array of 2-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0.525000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 2-component vector of float) 0:12 'cull' ( out 2-element array of 2-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0.625000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:13 'cull' ( out 2-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.725000 0:14 move second child to first child ( temp float) 0:14 direct index ( temp float) 0:14 direct index ( temp 2-component vector of float) 0:14 'cull' ( out 2-element array of 2-component vector of float) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 0.825000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp void) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 2 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 3 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'clip' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 1 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 2 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 3 (const int) 0:4 direct index ( temp float) 0:4 direct index ( temp 2-component vector of float) 0:? 'cull' ( temp 2-element array of 2-component vector of float) 0:4 Constant: 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) 0:? Linker Objects 0:? 'pos' ( out 4-component vector of float Position) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:? 'cull' ( out 4-element array of float CullDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 89 Capability Shader Capability ClipDistance Capability CullDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 55 60 76 Source HLSL 500 Name 4 "main" Name 18 "@main(vf4;vf2[2];vf2[2];" Name 15 "pos" Name 16 "clip" Name 17 "cull" Name 44 "pos" Name 45 "clip" Name 46 "cull" Name 47 "param" Name 48 "param" Name 49 "param" Name 55 "pos" Name 60 "clip" Name 76 "cull" Decorate 55(pos) BuiltIn Position Decorate 60(clip) BuiltIn ClipDistance Decorate 76(cull) BuiltIn CullDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeVector 6(float) 2 10: TypeInt 32 0 11: 10(int) Constant 2 12: TypeArray 9(fvec2) 11 13: TypePointer Function 12 14: TypeFunction 2 8(ptr) 13(ptr) 13(ptr) 20: 6(float) Constant 1065353216 21: 7(fvec4) ConstantComposite 20 20 20 20 22: TypeInt 32 1 23: 22(int) Constant 0 24: 6(float) Constant 1056964608 25: 10(int) Constant 0 26: TypePointer Function 6(float) 28: 6(float) Constant 1058642330 29: 10(int) Constant 1 31: 22(int) Constant 1 32: 6(float) Constant 1060320051 34: 6(float) Constant 1061997773 36: 6(float) Constant 1057384038 38: 6(float) Constant 1059061760 40: 6(float) Constant 1060739482 42: 6(float) Constant 1062417203 54: TypePointer Output 7(fvec4) 55(pos): 54(ptr) Variable Output 57: 10(int) Constant 4 58: TypeArray 6(float) 57 59: TypePointer Output 58 60(clip): 59(ptr) Variable Output 63: TypePointer Output 6(float) 68: 22(int) Constant 2 72: 22(int) Constant 3 76(cull): 59(ptr) Variable Output 4(main): 2 Function None 3 5: Label 44(pos): 8(ptr) Variable Function 45(clip): 13(ptr) Variable Function 46(cull): 13(ptr) Variable Function 47(param): 8(ptr) Variable Function 48(param): 13(ptr) Variable Function 49(param): 13(ptr) Variable Function 50: 2 FunctionCall 18(@main(vf4;vf2[2];vf2[2];) 47(param) 48(param) 49(param) 51: 7(fvec4) Load 47(param) Store 44(pos) 51 52: 12 Load 48(param) Store 45(clip) 52 53: 12 Load 49(param) Store 46(cull) 53 56: 7(fvec4) Load 44(pos) Store 55(pos) 56 61: 26(ptr) AccessChain 45(clip) 23 25 62: 6(float) Load 61 64: 63(ptr) AccessChain 60(clip) 23 Store 64 62 65: 26(ptr) AccessChain 45(clip) 23 29 66: 6(float) Load 65 67: 63(ptr) AccessChain 60(clip) 31 Store 67 66 69: 26(ptr) AccessChain 45(clip) 31 25 70: 6(float) Load 69 71: 63(ptr) AccessChain 60(clip) 68 Store 71 70 73: 26(ptr) AccessChain 45(clip) 31 29 74: 6(float) Load 73 75: 63(ptr) AccessChain 60(clip) 72 Store 75 74 77: 26(ptr) AccessChain 46(cull) 23 25 78: 6(float) Load 77 79: 63(ptr) AccessChain 76(cull) 23 Store 79 78 80: 26(ptr) AccessChain 46(cull) 23 29 81: 6(float) Load 80 82: 63(ptr) AccessChain 76(cull) 31 Store 82 81 83: 26(ptr) AccessChain 46(cull) 31 25 84: 6(float) Load 83 85: 63(ptr) AccessChain 76(cull) 68 Store 85 84 86: 26(ptr) AccessChain 46(cull) 31 29 87: 6(float) Load 86 88: 63(ptr) AccessChain 76(cull) 72 Store 88 87 Return FunctionEnd 18(@main(vf4;vf2[2];vf2[2];): 2 Function None 14 15(pos): 8(ptr) FunctionParameter 16(clip): 13(ptr) FunctionParameter 17(cull): 13(ptr) FunctionParameter 19: Label Store 15(pos) 21 27: 26(ptr) AccessChain 16(clip) 23 25 Store 27 24 30: 26(ptr) AccessChain 16(clip) 23 29 Store 30 28 33: 26(ptr) AccessChain 16(clip) 31 25 Store 33 32 35: 26(ptr) AccessChain 16(clip) 31 29 Store 35 34 37: 26(ptr) AccessChain 17(cull) 23 25 Store 37 36 39: 26(ptr) AccessChain 17(cull) 23 29 Store 39 38 41: 26(ptr) AccessChain 17(cull) 31 25 Store 41 40 43: 26(ptr) AccessChain 17(cull) 31 29 Store 43 42 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-3.frag.out000066400000000000000000000214641506534232700236700ustar00rootroot00000000000000hlsl.clipdistance-3.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'pos' ( in 4-component vector of float) 0:4 'clip' ( in 2-element array of float) 0:4 'cull' ( in 2-element array of float) 0:? Sequence 0:5 Branch: Return with expression 0:5 add ( temp 4-component vector of float) 0:5 add ( temp 4-component vector of float) 0:5 'pos' ( in 4-component vector of float) 0:5 direct index ( temp float) 0:5 'clip' ( in 2-element array of float) 0:5 Constant: 0:5 0 (const int) 0:5 direct index ( temp float) 0:5 'cull' ( in 2-element array of float) 0:5 Constant: 0:5 0 (const int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? Sequence 0:4 move second child to first child ( temp 2-element array of float) 0:? 'clip' ( temp 2-element array of float) 0:? 'clip' ( in 2-element array of float ClipDistance) 0:? Sequence 0:4 move second child to first child ( temp 2-element array of float) 0:? 'cull' ( temp 2-element array of float) 0:? 'cull' ( in 2-element array of float CullDistance) 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp 2-element array of float) 0:? 'cull' ( temp 2-element array of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? 'clip' ( in 2-element array of float ClipDistance) 0:? 'cull' ( in 2-element array of float CullDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'pos' ( in 4-component vector of float) 0:4 'clip' ( in 2-element array of float) 0:4 'cull' ( in 2-element array of float) 0:? Sequence 0:5 Branch: Return with expression 0:5 add ( temp 4-component vector of float) 0:5 add ( temp 4-component vector of float) 0:5 'pos' ( in 4-component vector of float) 0:5 direct index ( temp float) 0:5 'clip' ( in 2-element array of float) 0:5 Constant: 0:5 0 (const int) 0:5 direct index ( temp float) 0:5 'cull' ( in 2-element array of float) 0:5 Constant: 0:5 0 (const int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? Sequence 0:4 move second child to first child ( temp 2-element array of float) 0:? 'clip' ( temp 2-element array of float) 0:? 'clip' ( in 2-element array of float ClipDistance) 0:? Sequence 0:4 move second child to first child ( temp 2-element array of float) 0:? 'cull' ( temp 2-element array of float) 0:? 'cull' ( in 2-element array of float CullDistance) 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp 2-element array of float) 0:? 'cull' ( temp 2-element array of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:? 'clip' ( in 2-element array of float ClipDistance) 0:? 'cull' ( in 2-element array of float CullDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader Capability ClipDistance Capability CullDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 35 39 42 45 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 17 "@main(vf4;f1[2];f1[2];" Name 14 "pos" Name 15 "clip" Name 16 "cull" Name 33 "pos" Name 35 "pos" Name 37 "clip" Name 39 "clip" Name 41 "cull" Name 42 "cull" Name 45 "@entryPointOutput" Name 46 "param" Name 48 "param" Name 50 "param" Decorate 35(pos) BuiltIn FragCoord Decorate 39(clip) BuiltIn ClipDistance Decorate 42(cull) BuiltIn CullDistance Decorate 45(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(float) 10 12: TypePointer Function 11 13: TypeFunction 7(fvec4) 8(ptr) 12(ptr) 12(ptr) 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypePointer Function 6(float) 34: TypePointer Input 7(fvec4) 35(pos): 34(ptr) Variable Input 38: TypePointer Input 11 39(clip): 38(ptr) Variable Input 42(cull): 38(ptr) Variable Input 44: TypePointer Output 7(fvec4) 45(@entryPointOutput): 44(ptr) Variable Output 4(main): 2 Function None 3 5: Label 33(pos): 8(ptr) Variable Function 37(clip): 12(ptr) Variable Function 41(cull): 12(ptr) Variable Function 46(param): 8(ptr) Variable Function 48(param): 12(ptr) Variable Function 50(param): 12(ptr) Variable Function 36: 7(fvec4) Load 35(pos) Store 33(pos) 36 40: 11 Load 39(clip) Store 37(clip) 40 43: 11 Load 42(cull) Store 41(cull) 43 47: 7(fvec4) Load 33(pos) Store 46(param) 47 49: 11 Load 37(clip) Store 48(param) 49 51: 11 Load 41(cull) Store 50(param) 51 52: 7(fvec4) FunctionCall 17(@main(vf4;f1[2];f1[2];) 46(param) 48(param) 50(param) Store 45(@entryPointOutput) 52 Return FunctionEnd 17(@main(vf4;f1[2];f1[2];): 7(fvec4) Function None 13 14(pos): 8(ptr) FunctionParameter 15(clip): 12(ptr) FunctionParameter 16(cull): 12(ptr) FunctionParameter 18: Label 19: 7(fvec4) Load 14(pos) 23: 22(ptr) AccessChain 15(clip) 21 24: 6(float) Load 23 25: 7(fvec4) CompositeConstruct 24 24 24 24 26: 7(fvec4) FAdd 19 25 27: 22(ptr) AccessChain 16(cull) 21 28: 6(float) Load 27 29: 7(fvec4) CompositeConstruct 28 28 28 28 30: 7(fvec4) FAdd 26 29 ReturnValue 30 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-3.geom.out000066400000000000000000001216001506534232700236710ustar00rootroot00000000000000hlsl.clipdistance-3.geom Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = line_strip 0:? Sequence 0:12 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void) 0:12 Function Parameters: 0:12 'pos' ( in 3-element array of 4-component vector of float) 0:12 'VertexID' ( in 3-element array of uint) 0:12 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:12 'clip' ( in 3-element array of 4-component vector of float) 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 pos: direct index for structure ( temp 4-component vector of float) 0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:15 Constant: 0:15 0 (const int) 0:15 direct index ( temp 4-component vector of float) 0:15 'pos' ( in 3-element array of 4-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:16 clip0: direct index for structure ( temp 2-component vector of float) 0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:16 Constant: 0:16 1 (const int) 0:16 vector swizzle ( temp 2-component vector of float) 0:16 direct index ( temp 4-component vector of float) 0:16 'clip' ( in 3-element array of 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp 2-component vector of float) 0:17 clip1: direct index for structure ( temp 2-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:17 Constant: 0:17 2 (const int) 0:17 vector swizzle ( temp 2-component vector of float) 0:17 direct index ( temp 4-component vector of float) 0:17 'clip' ( in 3-element array of 4-component vector of float) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 3 (const int) 0:19 Sequence 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:19 pos: direct index for structure ( temp 4-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 0 (const int) 0:? Sequence 0:19 move second child to first child ( temp float) 0:19 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp float) 0:19 clip0: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 move second child to first child ( temp float) 0:19 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:19 Constant: 0:19 1 (const int) 0:19 direct index ( temp float) 0:19 clip0: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 1 (const int) 0:? Sequence 0:19 move second child to first child ( temp float) 0:19 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:19 Constant: 0:19 2 (const int) 0:19 direct index ( temp float) 0:19 clip1: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 move second child to first child ( temp float) 0:19 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:19 Constant: 0:19 3 (const int) 0:19 direct index ( temp float) 0:19 clip1: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 EmitVertex ( temp void) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:12 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? Sequence 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = line_strip 0:? Sequence 0:12 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void) 0:12 Function Parameters: 0:12 'pos' ( in 3-element array of 4-component vector of float) 0:12 'VertexID' ( in 3-element array of uint) 0:12 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:12 'clip' ( in 3-element array of 4-component vector of float) 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 pos: direct index for structure ( temp 4-component vector of float) 0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:15 Constant: 0:15 0 (const int) 0:15 direct index ( temp 4-component vector of float) 0:15 'pos' ( in 3-element array of 4-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:16 clip0: direct index for structure ( temp 2-component vector of float) 0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:16 Constant: 0:16 1 (const int) 0:16 vector swizzle ( temp 2-component vector of float) 0:16 direct index ( temp 4-component vector of float) 0:16 'clip' ( in 3-element array of 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp 2-component vector of float) 0:17 clip1: direct index for structure ( temp 2-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:17 Constant: 0:17 2 (const int) 0:17 vector swizzle ( temp 2-component vector of float) 0:17 direct index ( temp 4-component vector of float) 0:17 'clip' ( in 3-element array of 4-component vector of float) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 3 (const int) 0:19 Sequence 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:19 pos: direct index for structure ( temp 4-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 0 (const int) 0:? Sequence 0:19 move second child to first child ( temp float) 0:19 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp float) 0:19 clip0: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 move second child to first child ( temp float) 0:19 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:19 Constant: 0:19 1 (const int) 0:19 direct index ( temp float) 0:19 clip0: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 1 (const int) 0:? Sequence 0:19 move second child to first child ( temp float) 0:19 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:19 Constant: 0:19 2 (const int) 0:19 direct index ( temp float) 0:19 clip1: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 move second child to first child ( temp float) 0:19 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:19 Constant: 0:19 3 (const int) 0:19 direct index ( temp float) 0:19 clip1: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 EmitVertex ( temp void) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:12 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? Sequence 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 direct index ( temp 4-component vector of float) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 direct index ( in float ClipDistance) 0:12 direct index ( in 4-element array of float ClipDistance) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 127 Capability Geometry Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 43 49 69 73 78 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 3 Source HLSL 500 Name 4 "main" Name 15 "S" MemberName 15(S) 0 "pos" MemberName 15(S) 1 "clip0" MemberName 15(S) 2 "clip1" Name 22 "@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];" Name 18 "pos" Name 19 "VertexID" Name 20 "OutputStream" Name 21 "clip" Name 24 "s" Name 43 "OutputStream.pos" Name 49 "OutputStream.clip1" Name 67 "pos" Name 69 "pos" Name 71 "VertexID" Name 73 "VertexID" Name 75 "clip" Name 78 "clip" Name 117 "OutputStream" Name 118 "param" Name 120 "param" Name 122 "param" Name 123 "param" Decorate 43(OutputStream.pos) BuiltIn Position Decorate 49(OutputStream.clip1) BuiltIn ClipDistance Decorate 69(pos) BuiltIn Position Decorate 73(VertexID) Location 0 Decorate 78(clip) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 3 10: TypeArray 7(fvec4) 9 11: TypePointer Function 10 12: TypeArray 8(int) 9 13: TypePointer Function 12 14: TypeVector 6(float) 2 15(S): TypeStruct 7(fvec4) 14(fvec2) 14(fvec2) 16: TypePointer Function 15(S) 17: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 11(ptr) 25: TypeInt 32 1 26: 25(int) Constant 0 27: TypePointer Function 7(fvec4) 31: 25(int) Constant 1 35: TypePointer Function 14(fvec2) 37: 25(int) Constant 2 42: TypePointer Output 7(fvec4) 43(OutputStream.pos): 42(ptr) Variable Output 46: 8(int) Constant 4 47: TypeArray 6(float) 46 48: TypePointer Output 47 49(OutputStream.clip1): 48(ptr) Variable Output 50: 8(int) Constant 0 51: TypePointer Function 6(float) 54: TypePointer Output 6(float) 56: 8(int) Constant 1 63: 25(int) Constant 3 68: TypePointer Input 10 69(pos): 68(ptr) Variable Input 72: TypePointer Input 12 73(VertexID): 72(ptr) Variable Input 76: TypeArray 47 9 77: TypePointer Input 76 78(clip): 77(ptr) Variable Input 79: TypePointer Input 6(float) 88: 8(int) Constant 2 4(main): 2 Function None 3 5: Label 67(pos): 11(ptr) Variable Function 71(VertexID): 13(ptr) Variable Function 75(clip): 11(ptr) Variable Function 117(OutputStream): 16(ptr) Variable Function 118(param): 11(ptr) Variable Function 120(param): 13(ptr) Variable Function 122(param): 16(ptr) Variable Function 123(param): 11(ptr) Variable Function 70: 10 Load 69(pos) Store 67(pos) 70 74: 12 Load 73(VertexID) Store 71(VertexID) 74 80: 79(ptr) AccessChain 78(clip) 26 26 81: 6(float) Load 80 82: 51(ptr) AccessChain 75(clip) 26 50 Store 82 81 83: 79(ptr) AccessChain 78(clip) 26 31 84: 6(float) Load 83 85: 51(ptr) AccessChain 75(clip) 26 56 Store 85 84 86: 79(ptr) AccessChain 78(clip) 26 37 87: 6(float) Load 86 89: 51(ptr) AccessChain 75(clip) 26 88 Store 89 87 90: 79(ptr) AccessChain 78(clip) 26 63 91: 6(float) Load 90 92: 51(ptr) AccessChain 75(clip) 26 9 Store 92 91 93: 79(ptr) AccessChain 78(clip) 31 26 94: 6(float) Load 93 95: 51(ptr) AccessChain 75(clip) 31 50 Store 95 94 96: 79(ptr) AccessChain 78(clip) 31 31 97: 6(float) Load 96 98: 51(ptr) AccessChain 75(clip) 31 56 Store 98 97 99: 79(ptr) AccessChain 78(clip) 31 37 100: 6(float) Load 99 101: 51(ptr) AccessChain 75(clip) 31 88 Store 101 100 102: 79(ptr) AccessChain 78(clip) 31 63 103: 6(float) Load 102 104: 51(ptr) AccessChain 75(clip) 31 9 Store 104 103 105: 79(ptr) AccessChain 78(clip) 37 26 106: 6(float) Load 105 107: 51(ptr) AccessChain 75(clip) 37 50 Store 107 106 108: 79(ptr) AccessChain 78(clip) 37 31 109: 6(float) Load 108 110: 51(ptr) AccessChain 75(clip) 37 56 Store 110 109 111: 79(ptr) AccessChain 78(clip) 37 37 112: 6(float) Load 111 113: 51(ptr) AccessChain 75(clip) 37 88 Store 113 112 114: 79(ptr) AccessChain 78(clip) 37 63 115: 6(float) Load 114 116: 51(ptr) AccessChain 75(clip) 37 9 Store 116 115 119: 10 Load 67(pos) Store 118(param) 119 121: 12 Load 71(VertexID) Store 120(param) 121 124: 10 Load 75(clip) Store 123(param) 124 125: 2 FunctionCall 22(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];) 118(param) 120(param) 122(param) 123(param) 126: 15(S) Load 122(param) Store 117(OutputStream) 126 Return FunctionEnd 22(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];): 2 Function None 17 18(pos): 11(ptr) FunctionParameter 19(VertexID): 13(ptr) FunctionParameter 20(OutputStream): 16(ptr) FunctionParameter 21(clip): 11(ptr) FunctionParameter 23: Label 24(s): 16(ptr) Variable Function 28: 27(ptr) AccessChain 18(pos) 26 29: 7(fvec4) Load 28 30: 27(ptr) AccessChain 24(s) 26 Store 30 29 32: 27(ptr) AccessChain 21(clip) 26 33: 7(fvec4) Load 32 34: 14(fvec2) VectorShuffle 33 33 0 1 36: 35(ptr) AccessChain 24(s) 31 Store 36 34 38: 27(ptr) AccessChain 21(clip) 26 39: 7(fvec4) Load 38 40: 14(fvec2) VectorShuffle 39 39 2 3 41: 35(ptr) AccessChain 24(s) 37 Store 41 40 44: 27(ptr) AccessChain 24(s) 26 45: 7(fvec4) Load 44 Store 43(OutputStream.pos) 45 52: 51(ptr) AccessChain 24(s) 31 50 53: 6(float) Load 52 55: 54(ptr) AccessChain 49(OutputStream.clip1) 26 Store 55 53 57: 51(ptr) AccessChain 24(s) 31 56 58: 6(float) Load 57 59: 54(ptr) AccessChain 49(OutputStream.clip1) 31 Store 59 58 60: 51(ptr) AccessChain 24(s) 37 50 61: 6(float) Load 60 62: 54(ptr) AccessChain 49(OutputStream.clip1) 37 Store 62 61 64: 51(ptr) AccessChain 24(s) 37 56 65: 6(float) Load 64 66: 54(ptr) AccessChain 49(OutputStream.clip1) 63 Store 66 65 EmitVertex Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-3.vert.out000066400000000000000000000230121506534232700237200ustar00rootroot00000000000000hlsl.clipdistance-3.vert Shader version: 500 0:? Sequence 0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp void) 0:4 Function Parameters: 0:4 'pos' ( out 4-component vector of float) 0:4 'clip' ( out 2-element array of float) 0:4 'cull' ( out 2-element array of float) 0:? Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'pos' ( out 4-component vector of float) 0:5 Constant: 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:6 'clip' ( out 2-element array of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0.500000 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 'clip' ( out 2-element array of float) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0.600000 0:9 move second child to first child ( temp float) 0:9 direct index ( temp float) 0:9 'cull' ( out 2-element array of float) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 0.525000 0:10 move second child to first child ( temp float) 0:10 direct index ( temp float) 0:10 'cull' ( out 2-element array of float) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0.625000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp void) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp 2-element array of float) 0:? 'cull' ( temp 2-element array of float) 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp 2-element array of float) 0:? 'clip' ( out 2-element array of float ClipDistance) 0:? 'clip' ( temp 2-element array of float) 0:? Sequence 0:4 move second child to first child ( temp 2-element array of float) 0:? 'cull' ( out 2-element array of float CullDistance) 0:? 'cull' ( temp 2-element array of float) 0:? Linker Objects 0:? 'pos' ( out 4-component vector of float Position) 0:? 'clip' ( out 2-element array of float ClipDistance) 0:? 'cull' ( out 2-element array of float CullDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp void) 0:4 Function Parameters: 0:4 'pos' ( out 4-component vector of float) 0:4 'clip' ( out 2-element array of float) 0:4 'cull' ( out 2-element array of float) 0:? Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'pos' ( out 4-component vector of float) 0:5 Constant: 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:6 'clip' ( out 2-element array of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0.500000 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 'clip' ( out 2-element array of float) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0.600000 0:9 move second child to first child ( temp float) 0:9 direct index ( temp float) 0:9 'cull' ( out 2-element array of float) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 0.525000 0:10 move second child to first child ( temp float) 0:10 direct index ( temp float) 0:10 'cull' ( out 2-element array of float) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0.625000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp void) 0:? 'pos' ( temp 4-component vector of float) 0:? 'clip' ( temp 2-element array of float) 0:? 'cull' ( temp 2-element array of float) 0:4 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp 2-element array of float) 0:? 'clip' ( out 2-element array of float ClipDistance) 0:? 'clip' ( temp 2-element array of float) 0:? Sequence 0:4 move second child to first child ( temp 2-element array of float) 0:? 'cull' ( out 2-element array of float CullDistance) 0:? 'cull' ( temp 2-element array of float) 0:? Linker Objects 0:? 'pos' ( out 4-component vector of float Position) 0:? 'clip' ( out 2-element array of float ClipDistance) 0:? 'cull' ( out 2-element array of float CullDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 51 Capability Shader Capability ClipDistance Capability CullDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 44 47 49 Source HLSL 500 Name 4 "main" Name 17 "@main(vf4;f1[2];f1[2];" Name 14 "pos" Name 15 "clip" Name 16 "cull" Name 33 "pos" Name 34 "clip" Name 35 "cull" Name 36 "param" Name 37 "param" Name 38 "param" Name 44 "pos" Name 47 "clip" Name 49 "cull" Decorate 44(pos) BuiltIn Position Decorate 47(clip) BuiltIn ClipDistance Decorate 49(cull) BuiltIn CullDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(float) 10 12: TypePointer Function 11 13: TypeFunction 2 8(ptr) 12(ptr) 12(ptr) 19: 6(float) Constant 1065353216 20: 7(fvec4) ConstantComposite 19 19 19 19 21: TypeInt 32 1 22: 21(int) Constant 0 23: 6(float) Constant 1056964608 24: TypePointer Function 6(float) 26: 21(int) Constant 1 27: 6(float) Constant 1058642330 29: 6(float) Constant 1057384038 31: 6(float) Constant 1059061760 43: TypePointer Output 7(fvec4) 44(pos): 43(ptr) Variable Output 46: TypePointer Output 11 47(clip): 46(ptr) Variable Output 49(cull): 46(ptr) Variable Output 4(main): 2 Function None 3 5: Label 33(pos): 8(ptr) Variable Function 34(clip): 12(ptr) Variable Function 35(cull): 12(ptr) Variable Function 36(param): 8(ptr) Variable Function 37(param): 12(ptr) Variable Function 38(param): 12(ptr) Variable Function 39: 2 FunctionCall 17(@main(vf4;f1[2];f1[2];) 36(param) 37(param) 38(param) 40: 7(fvec4) Load 36(param) Store 33(pos) 40 41: 11 Load 37(param) Store 34(clip) 41 42: 11 Load 38(param) Store 35(cull) 42 45: 7(fvec4) Load 33(pos) Store 44(pos) 45 48: 11 Load 34(clip) Store 47(clip) 48 50: 11 Load 35(cull) Store 49(cull) 50 Return FunctionEnd 17(@main(vf4;f1[2];f1[2];): 2 Function None 13 14(pos): 8(ptr) FunctionParameter 15(clip): 12(ptr) FunctionParameter 16(cull): 12(ptr) FunctionParameter 18: Label Store 14(pos) 20 25: 24(ptr) AccessChain 15(clip) 22 Store 25 23 28: 24(ptr) AccessChain 15(clip) 26 Store 28 27 30: 24(ptr) AccessChain 16(cull) 22 Store 30 29 32: 24(ptr) AccessChain 16(cull) 26 Store 32 31 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-4.frag.out000066400000000000000000000326711506534232700236730ustar00rootroot00000000000000hlsl.clipdistance-4.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(struct-VS_OUTPUT-vf4-vf41; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:? Sequence 0:8 Branch: Return with expression 0:8 add ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:8 Constant: 0:8 0 (const int) 0:8 ClipRect: direct index for structure ( temp 4-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:8 Constant: 0:8 1 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 ClipRect: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 ClipRect: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 ClipRect: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 2 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 ClipRect: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 3 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(struct-VS_OUTPUT-vf4-vf41; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(struct-VS_OUTPUT-vf4-vf41; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:? Sequence 0:8 Branch: Return with expression 0:8 add ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:8 Constant: 0:8 0 (const int) 0:8 ClipRect: direct index for structure ( temp 4-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:8 Constant: 0:8 1 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 ClipRect: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 ClipRect: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 ClipRect: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 2 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 ClipRect: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 3 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(struct-VS_OUTPUT-vf4-vf41; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 24 32 54 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Position" MemberName 8(VS_OUTPUT) 1 "ClipRect" Name 11 "@main(struct-VS_OUTPUT-vf4-vf41;" Name 10 "v" Name 22 "v" Name 24 "v.Position" Name 32 "v.ClipRect" Name 54 "@entryPointOutput" Decorate 24(v.Position) BuiltIn FragCoord Decorate 32(v.ClipRect) BuiltIn ClipDistance Decorate 54(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4) 9: TypeFunction 7(fvec4) 8(VS_OUTPUT) 13: TypeInt 32 1 14: 13(int) Constant 0 16: 13(int) Constant 1 21: TypePointer Function 8(VS_OUTPUT) 23: TypePointer Input 7(fvec4) 24(v.Position): 23(ptr) Variable Input 26: TypePointer Function 7(fvec4) 28: TypeInt 32 0 29: 28(int) Constant 4 30: TypeArray 6(float) 29 31: TypePointer Input 30 32(v.ClipRect): 31(ptr) Variable Input 33: TypePointer Input 6(float) 36: 28(int) Constant 0 37: TypePointer Function 6(float) 41: 28(int) Constant 1 43: 13(int) Constant 2 46: 28(int) Constant 2 48: 13(int) Constant 3 51: 28(int) Constant 3 53: TypePointer Output 7(fvec4) 54(@entryPointOutput): 53(ptr) Variable Output 4(main): 2 Function None 3 5: Label 22(v): 21(ptr) Variable Function 25: 7(fvec4) Load 24(v.Position) 27: 26(ptr) AccessChain 22(v) 14 Store 27 25 34: 33(ptr) AccessChain 32(v.ClipRect) 14 35: 6(float) Load 34 38: 37(ptr) AccessChain 22(v) 16 36 Store 38 35 39: 33(ptr) AccessChain 32(v.ClipRect) 16 40: 6(float) Load 39 42: 37(ptr) AccessChain 22(v) 16 41 Store 42 40 44: 33(ptr) AccessChain 32(v.ClipRect) 43 45: 6(float) Load 44 47: 37(ptr) AccessChain 22(v) 16 46 Store 47 45 49: 33(ptr) AccessChain 32(v.ClipRect) 48 50: 6(float) Load 49 52: 37(ptr) AccessChain 22(v) 16 51 Store 52 50 55:8(VS_OUTPUT) Load 22(v) 56: 7(fvec4) FunctionCall 11(@main(struct-VS_OUTPUT-vf4-vf41;) 55 Store 54(@entryPointOutput) 56 Return FunctionEnd 11(@main(struct-VS_OUTPUT-vf4-vf41;): 7(fvec4) Function None 9 10(v):8(VS_OUTPUT) FunctionParameter 12: Label 15: 7(fvec4) CompositeExtract 10(v) 0 17: 7(fvec4) CompositeExtract 10(v) 1 18: 7(fvec4) FAdd 15 17 ReturnValue 18 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-4.geom.out000066400000000000000000001215661506534232700237050ustar00rootroot00000000000000hlsl.clipdistance-4.geom Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = line_strip 0:? Sequence 0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void) 0:13 Function Parameters: 0:13 'pos' ( in 3-element array of 4-component vector of float) 0:13 'VertexID' ( in 3-element array of uint) 0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:13 'clip0' ( in 3-element array of 2-component vector of float) 0:13 'clip1' ( in 3-element array of 2-component vector of float) 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 pos: direct index for structure ( temp 4-component vector of float) 0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:16 Constant: 0:16 0 (const int) 0:16 direct index ( temp 4-component vector of float) 0:16 'pos' ( in 3-element array of 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:17 move second child to first child ( temp 2-component vector of float) 0:17 clip0: direct index for structure ( temp 2-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:17 Constant: 0:17 1 (const int) 0:17 direct index ( temp 2-component vector of float) 0:17 'clip0' ( in 3-element array of 2-component vector of float) 0:17 Constant: 0:17 0 (const int) 0:18 move second child to first child ( temp 2-component vector of float) 0:18 clip1: direct index for structure ( temp 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:18 Constant: 0:18 2 (const int) 0:18 direct index ( temp 2-component vector of float) 0:18 'clip1' ( in 3-element array of 2-component vector of float) 0:18 Constant: 0:18 0 (const int) 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:20 pos: direct index for structure ( temp 4-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 0 (const int) 0:? Sequence 0:20 move second child to first child ( temp float) 0:20 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp float) 0:20 clip0: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:20 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:20 Constant: 0:20 1 (const int) 0:20 direct index ( temp float) 0:20 clip0: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 1 (const int) 0:? Sequence 0:20 move second child to first child ( temp float) 0:20 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:20 Constant: 0:20 2 (const int) 0:20 direct index ( temp float) 0:20 clip1: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:20 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:20 Constant: 0:20 3 (const int) 0:20 direct index ( temp float) 0:20 clip1: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 EmitVertex ( temp void) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:13 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? Sequence 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 3 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:? Sequence 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 3 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 3 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 3 (const int) 0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = line_strip 0:? Sequence 0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void) 0:13 Function Parameters: 0:13 'pos' ( in 3-element array of 4-component vector of float) 0:13 'VertexID' ( in 3-element array of uint) 0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:13 'clip0' ( in 3-element array of 2-component vector of float) 0:13 'clip1' ( in 3-element array of 2-component vector of float) 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 pos: direct index for structure ( temp 4-component vector of float) 0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:16 Constant: 0:16 0 (const int) 0:16 direct index ( temp 4-component vector of float) 0:16 'pos' ( in 3-element array of 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:17 move second child to first child ( temp 2-component vector of float) 0:17 clip0: direct index for structure ( temp 2-component vector of float) 0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:17 Constant: 0:17 1 (const int) 0:17 direct index ( temp 2-component vector of float) 0:17 'clip0' ( in 3-element array of 2-component vector of float) 0:17 Constant: 0:17 0 (const int) 0:18 move second child to first child ( temp 2-component vector of float) 0:18 clip1: direct index for structure ( temp 2-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:18 Constant: 0:18 2 (const int) 0:18 direct index ( temp 2-component vector of float) 0:18 'clip1' ( in 3-element array of 2-component vector of float) 0:18 Constant: 0:18 0 (const int) 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:20 pos: direct index for structure ( temp 4-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 0 (const int) 0:? Sequence 0:20 move second child to first child ( temp float) 0:20 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp float) 0:20 clip0: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:20 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:20 Constant: 0:20 1 (const int) 0:20 direct index ( temp float) 0:20 clip0: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 1 (const int) 0:? Sequence 0:20 move second child to first child ( temp float) 0:20 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:20 Constant: 0:20 2 (const int) 0:20 direct index ( temp float) 0:20 clip1: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:20 direct index ( out float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) 0:20 Constant: 0:20 3 (const int) 0:20 direct index ( temp float) 0:20 clip1: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 EmitVertex ( temp void) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:13 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? Sequence 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 3 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:? Sequence 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 3 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 3 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 direct index ( temp 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( in float ClipDistance) 0:13 direct index ( in 4-element array of float ClipDistance) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 3 (const int) 0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) 0:? 'clip0' ( temp 3-element array of 2-component vector of float) 0:? 'clip1' ( temp 3-element array of 2-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) 0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 130 Capability Geometry Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 44 50 70 74 79 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 3 Source HLSL 500 Name 4 "main" Name 15 "S" MemberName 15(S) 0 "pos" MemberName 15(S) 1 "clip0" MemberName 15(S) 2 "clip1" Name 25 "@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];" Name 20 "pos" Name 21 "VertexID" Name 22 "OutputStream" Name 23 "clip0" Name 24 "clip1" Name 27 "s" Name 44 "OutputStream.pos" Name 50 "OutputStream.clip1" Name 68 "pos" Name 70 "pos" Name 72 "VertexID" Name 74 "VertexID" Name 76 "clip0" Name 79 "clip0" Name 99 "clip1" Name 118 "OutputStream" Name 119 "param" Name 121 "param" Name 123 "param" Name 124 "param" Name 126 "param" Decorate 44(OutputStream.pos) BuiltIn Position Decorate 50(OutputStream.clip1) BuiltIn ClipDistance Decorate 70(pos) BuiltIn Position Decorate 74(VertexID) Location 0 Decorate 79(clip0) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 3 10: TypeArray 7(fvec4) 9 11: TypePointer Function 10 12: TypeArray 8(int) 9 13: TypePointer Function 12 14: TypeVector 6(float) 2 15(S): TypeStruct 7(fvec4) 14(fvec2) 14(fvec2) 16: TypePointer Function 15(S) 17: TypeArray 14(fvec2) 9 18: TypePointer Function 17 19: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 18(ptr) 18(ptr) 28: TypeInt 32 1 29: 28(int) Constant 0 30: TypePointer Function 7(fvec4) 34: 28(int) Constant 1 35: TypePointer Function 14(fvec2) 39: 28(int) Constant 2 43: TypePointer Output 7(fvec4) 44(OutputStream.pos): 43(ptr) Variable Output 47: 8(int) Constant 4 48: TypeArray 6(float) 47 49: TypePointer Output 48 50(OutputStream.clip1): 49(ptr) Variable Output 51: 8(int) Constant 0 52: TypePointer Function 6(float) 55: TypePointer Output 6(float) 57: 8(int) Constant 1 64: 28(int) Constant 3 69: TypePointer Input 10 70(pos): 69(ptr) Variable Input 73: TypePointer Input 12 74(VertexID): 73(ptr) Variable Input 77: TypeArray 48 9 78: TypePointer Input 77 79(clip0): 78(ptr) Variable Input 80: TypePointer Input 6(float) 4(main): 2 Function None 3 5: Label 68(pos): 11(ptr) Variable Function 72(VertexID): 13(ptr) Variable Function 76(clip0): 18(ptr) Variable Function 99(clip1): 18(ptr) Variable Function 118(OutputStream): 16(ptr) Variable Function 119(param): 11(ptr) Variable Function 121(param): 13(ptr) Variable Function 123(param): 16(ptr) Variable Function 124(param): 18(ptr) Variable Function 126(param): 18(ptr) Variable Function 71: 10 Load 70(pos) Store 68(pos) 71 75: 12 Load 74(VertexID) Store 72(VertexID) 75 81: 80(ptr) AccessChain 79(clip0) 29 29 82: 6(float) Load 81 83: 52(ptr) AccessChain 76(clip0) 29 51 Store 83 82 84: 80(ptr) AccessChain 79(clip0) 29 34 85: 6(float) Load 84 86: 52(ptr) AccessChain 76(clip0) 29 57 Store 86 85 87: 80(ptr) AccessChain 79(clip0) 29 39 88: 6(float) Load 87 89: 52(ptr) AccessChain 76(clip0) 34 51 Store 89 88 90: 80(ptr) AccessChain 79(clip0) 29 64 91: 6(float) Load 90 92: 52(ptr) AccessChain 76(clip0) 34 57 Store 92 91 93: 80(ptr) AccessChain 79(clip0) 34 29 94: 6(float) Load 93 95: 52(ptr) AccessChain 76(clip0) 39 51 Store 95 94 96: 80(ptr) AccessChain 79(clip0) 34 34 97: 6(float) Load 96 98: 52(ptr) AccessChain 76(clip0) 39 57 Store 98 97 100: 80(ptr) AccessChain 79(clip0) 29 39 101: 6(float) Load 100 102: 52(ptr) AccessChain 99(clip1) 29 51 Store 102 101 103: 80(ptr) AccessChain 79(clip0) 29 64 104: 6(float) Load 103 105: 52(ptr) AccessChain 99(clip1) 29 57 Store 105 104 106: 80(ptr) AccessChain 79(clip0) 34 39 107: 6(float) Load 106 108: 52(ptr) AccessChain 99(clip1) 34 51 Store 108 107 109: 80(ptr) AccessChain 79(clip0) 34 64 110: 6(float) Load 109 111: 52(ptr) AccessChain 99(clip1) 34 57 Store 111 110 112: 80(ptr) AccessChain 79(clip0) 39 39 113: 6(float) Load 112 114: 52(ptr) AccessChain 99(clip1) 39 51 Store 114 113 115: 80(ptr) AccessChain 79(clip0) 39 64 116: 6(float) Load 115 117: 52(ptr) AccessChain 99(clip1) 39 57 Store 117 116 120: 10 Load 68(pos) Store 119(param) 120 122: 12 Load 72(VertexID) Store 121(param) 122 125: 17 Load 76(clip0) Store 124(param) 125 127: 17 Load 99(clip1) Store 126(param) 127 128: 2 FunctionCall 25(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];) 119(param) 121(param) 123(param) 124(param) 126(param) 129: 15(S) Load 123(param) Store 118(OutputStream) 129 Return FunctionEnd 25(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];): 2 Function None 19 20(pos): 11(ptr) FunctionParameter 21(VertexID): 13(ptr) FunctionParameter 22(OutputStream): 16(ptr) FunctionParameter 23(clip0): 18(ptr) FunctionParameter 24(clip1): 18(ptr) FunctionParameter 26: Label 27(s): 16(ptr) Variable Function 31: 30(ptr) AccessChain 20(pos) 29 32: 7(fvec4) Load 31 33: 30(ptr) AccessChain 27(s) 29 Store 33 32 36: 35(ptr) AccessChain 23(clip0) 29 37: 14(fvec2) Load 36 38: 35(ptr) AccessChain 27(s) 34 Store 38 37 40: 35(ptr) AccessChain 24(clip1) 29 41: 14(fvec2) Load 40 42: 35(ptr) AccessChain 27(s) 39 Store 42 41 45: 30(ptr) AccessChain 27(s) 29 46: 7(fvec4) Load 45 Store 44(OutputStream.pos) 46 53: 52(ptr) AccessChain 27(s) 34 51 54: 6(float) Load 53 56: 55(ptr) AccessChain 50(OutputStream.clip1) 29 Store 56 54 58: 52(ptr) AccessChain 27(s) 34 57 59: 6(float) Load 58 60: 55(ptr) AccessChain 50(OutputStream.clip1) 34 Store 60 59 61: 52(ptr) AccessChain 27(s) 39 51 62: 6(float) Load 61 63: 55(ptr) AccessChain 50(OutputStream.clip1) 39 Store 63 62 65: 52(ptr) AccessChain 27(s) 39 57 66: 6(float) Load 65 67: 55(ptr) AccessChain 50(OutputStream.clip1) 64 Store 67 66 EmitVertex Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-4.vert.out000066400000000000000000000476261506534232700237420ustar00rootroot00000000000000hlsl.clipdistance-4.vert Shader version: 500 0:? Sequence 0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Function Parameters: 0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position}) 0:? Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 Position: direct index for structure ( temp 4-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:15 move second child to first child ( temp float) 0:15 direct index ( temp float) 0:15 ClipRect: direct index for structure ( temp 4-component vector of float) 0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1.000000 0:16 move second child to first child ( temp float) 0:16 direct index ( temp float) 0:16 ClipRect: direct index for structure ( temp 4-component vector of float) 0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 2.000000 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float) 0:17 ClipRect: direct index for structure ( temp 4-component vector of float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 3.000000 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 ClipRect: direct index for structure ( temp 4-component vector of float) 0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 3 (const int) 0:18 Constant: 0:18 4.000000 0:20 Branch: Return with expression 0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position}) 0:11 Constant: 0:11 0 (const int) 0:? 'v.Position' (layout( location=0) in 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:? 'v' ( temp structure{ temp 4-component vector of float Position}) 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:11 Position: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 0 (const int) 0:? Sequence 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp float) 0:11 ClipRect: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp float) 0:11 ClipRect: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp float) 0:11 ClipRect: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( temp float) 0:11 ClipRect: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? 'v.Position' (layout( location=0) in 4-component vector of float) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Function Parameters: 0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position}) 0:? Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 Position: direct index for structure ( temp 4-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:15 move second child to first child ( temp float) 0:15 direct index ( temp float) 0:15 ClipRect: direct index for structure ( temp 4-component vector of float) 0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1.000000 0:16 move second child to first child ( temp float) 0:16 direct index ( temp float) 0:16 ClipRect: direct index for structure ( temp 4-component vector of float) 0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 2.000000 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float) 0:17 ClipRect: direct index for structure ( temp 4-component vector of float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 3.000000 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 ClipRect: direct index for structure ( temp 4-component vector of float) 0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 3 (const int) 0:18 Constant: 0:18 4.000000 0:20 Branch: Return with expression 0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position}) 0:11 Constant: 0:11 0 (const int) 0:? 'v.Position' (layout( location=0) in 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:? 'v' ( temp structure{ temp 4-component vector of float Position}) 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:11 Position: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 0 (const int) 0:? Sequence 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp float) 0:11 ClipRect: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp float) 0:11 ClipRect: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp float) 0:11 ClipRect: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( temp float) 0:11 ClipRect: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? 'v.Position' (layout( location=0) in 4-component vector of float) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 43 50 56 Source HLSL 500 Name 4 "main" Name 8 "VS_INPUT" MemberName 8(VS_INPUT) 0 "Position" Name 9 "VS_OUTPUT" MemberName 9(VS_OUTPUT) 0 "Position" MemberName 9(VS_OUTPUT) 1 "ClipRect" Name 12 "@main(struct-VS_INPUT-vf41;" Name 11 "v" Name 15 "Output" Name 41 "v" Name 43 "v.Position" Name 46 "flattenTemp" Name 50 "@entryPointOutput.Position" Name 56 "@entryPointOutput.ClipRect" Decorate 43(v.Position) Location 0 Decorate 50(@entryPointOutput.Position) BuiltIn Position Decorate 56(@entryPointOutput.ClipRect) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_INPUT): TypeStruct 7(fvec4) 9(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4) 10: TypeFunction 9(VS_OUTPUT) 8(VS_INPUT) 14: TypePointer Function 9(VS_OUTPUT) 16: TypeInt 32 1 17: 16(int) Constant 0 18: 6(float) Constant 0 19: 7(fvec4) ConstantComposite 18 18 18 18 20: TypePointer Function 7(fvec4) 22: 16(int) Constant 1 23: 6(float) Constant 1065353216 24: TypeInt 32 0 25: 24(int) Constant 0 26: TypePointer Function 6(float) 28: 6(float) Constant 1073741824 29: 24(int) Constant 1 31: 6(float) Constant 1077936128 32: 24(int) Constant 2 34: 6(float) Constant 1082130432 35: 24(int) Constant 3 40: TypePointer Function 8(VS_INPUT) 42: TypePointer Input 7(fvec4) 43(v.Position): 42(ptr) Variable Input 49: TypePointer Output 7(fvec4) 50(@entryPointOutput.Position): 49(ptr) Variable Output 53: 24(int) Constant 4 54: TypeArray 6(float) 53 55: TypePointer Output 54 56(@entryPointOutput.ClipRect): 55(ptr) Variable Output 59: TypePointer Output 6(float) 64: 16(int) Constant 2 68: 16(int) Constant 3 4(main): 2 Function None 3 5: Label 41(v): 40(ptr) Variable Function 46(flattenTemp): 14(ptr) Variable Function 44: 7(fvec4) Load 43(v.Position) 45: 20(ptr) AccessChain 41(v) 17 Store 45 44 47: 8(VS_INPUT) Load 41(v) 48:9(VS_OUTPUT) FunctionCall 12(@main(struct-VS_INPUT-vf41;) 47 Store 46(flattenTemp) 48 51: 20(ptr) AccessChain 46(flattenTemp) 17 52: 7(fvec4) Load 51 Store 50(@entryPointOutput.Position) 52 57: 26(ptr) AccessChain 46(flattenTemp) 22 25 58: 6(float) Load 57 60: 59(ptr) AccessChain 56(@entryPointOutput.ClipRect) 17 Store 60 58 61: 26(ptr) AccessChain 46(flattenTemp) 22 29 62: 6(float) Load 61 63: 59(ptr) AccessChain 56(@entryPointOutput.ClipRect) 22 Store 63 62 65: 26(ptr) AccessChain 46(flattenTemp) 22 32 66: 6(float) Load 65 67: 59(ptr) AccessChain 56(@entryPointOutput.ClipRect) 64 Store 67 66 69: 26(ptr) AccessChain 46(flattenTemp) 22 35 70: 6(float) Load 69 71: 59(ptr) AccessChain 56(@entryPointOutput.ClipRect) 68 Store 71 70 Return FunctionEnd 12(@main(struct-VS_INPUT-vf41;):9(VS_OUTPUT) Function None 10 11(v): 8(VS_INPUT) FunctionParameter 13: Label 15(Output): 14(ptr) Variable Function 21: 20(ptr) AccessChain 15(Output) 17 Store 21 19 27: 26(ptr) AccessChain 15(Output) 22 25 Store 27 23 30: 26(ptr) AccessChain 15(Output) 22 29 Store 30 28 33: 26(ptr) AccessChain 15(Output) 22 32 Store 33 31 36: 26(ptr) AccessChain 15(Output) 22 35 Store 36 34 37:9(VS_OUTPUT) Load 15(Output) ReturnValue 37 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-5.frag.out000066400000000000000000000420571506534232700236730ustar00rootroot00000000000000hlsl.clipdistance-5.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(struct-VS_OUTPUT-vf4-vf2[2]1; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:? Sequence 0:8 Branch: Return with expression 0:8 add ( temp 4-component vector of float) 0:8 add ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 direct index ( temp 2-component vector of float) 0:8 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 direct index ( temp 2-component vector of float) 0:8 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(struct-VS_OUTPUT-vf4-vf2[2]1; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(struct-VS_OUTPUT-vf4-vf2[2]1; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:? Sequence 0:8 Branch: Return with expression 0:8 add ( temp 4-component vector of float) 0:8 add ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 direct index ( temp 2-component vector of float) 0:8 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 direct index ( temp 2-component vector of float) 0:8 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 2-component vector of float) 0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(struct-VS_OUTPUT-vf4-vf2[2]1; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 33 40 59 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "VS_OUTPUT" MemberName 12(VS_OUTPUT) 0 "Position" MemberName 12(VS_OUTPUT) 1 "ClipRect" Name 15 "@main(struct-VS_OUTPUT-vf4-vf2[2]1;" Name 14 "v" Name 31 "v" Name 33 "v.Position" Name 40 "v.ClipRect" Name 59 "@entryPointOutput" Decorate 33(v.Position) BuiltIn FragCoord Decorate 40(v.ClipRect) BuiltIn ClipDistance Decorate 59(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 2 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 8(fvec2) 10 12(VS_OUTPUT): TypeStruct 7(fvec4) 11 13: TypeFunction 7(fvec4) 12(VS_OUTPUT) 17: TypeInt 32 1 18: 17(int) Constant 0 20: 17(int) Constant 1 21: 9(int) Constant 0 30: TypePointer Function 12(VS_OUTPUT) 32: TypePointer Input 7(fvec4) 33(v.Position): 32(ptr) Variable Input 35: TypePointer Function 7(fvec4) 37: 9(int) Constant 4 38: TypeArray 6(float) 37 39: TypePointer Input 38 40(v.ClipRect): 39(ptr) Variable Input 41: TypePointer Input 6(float) 44: TypePointer Function 6(float) 48: 9(int) Constant 1 50: 17(int) Constant 2 54: 17(int) Constant 3 58: TypePointer Output 7(fvec4) 59(@entryPointOutput): 58(ptr) Variable Output 4(main): 2 Function None 3 5: Label 31(v): 30(ptr) Variable Function 34: 7(fvec4) Load 33(v.Position) 36: 35(ptr) AccessChain 31(v) 18 Store 36 34 42: 41(ptr) AccessChain 40(v.ClipRect) 18 43: 6(float) Load 42 45: 44(ptr) AccessChain 31(v) 20 18 21 Store 45 43 46: 41(ptr) AccessChain 40(v.ClipRect) 20 47: 6(float) Load 46 49: 44(ptr) AccessChain 31(v) 20 18 48 Store 49 47 51: 41(ptr) AccessChain 40(v.ClipRect) 50 52: 6(float) Load 51 53: 44(ptr) AccessChain 31(v) 20 20 21 Store 53 52 55: 41(ptr) AccessChain 40(v.ClipRect) 54 56: 6(float) Load 55 57: 44(ptr) AccessChain 31(v) 20 20 48 Store 57 56 60:12(VS_OUTPUT) Load 31(v) 61: 7(fvec4) FunctionCall 15(@main(struct-VS_OUTPUT-vf4-vf2[2]1;) 60 Store 59(@entryPointOutput) 61 Return FunctionEnd 15(@main(struct-VS_OUTPUT-vf4-vf2[2]1;): 7(fvec4) Function None 13 14(v):12(VS_OUTPUT) FunctionParameter 16: Label 19: 7(fvec4) CompositeExtract 14(v) 0 22: 6(float) CompositeExtract 14(v) 1 0 0 23: 7(fvec4) CompositeConstruct 22 22 22 22 24: 7(fvec4) FAdd 19 23 25: 6(float) CompositeExtract 14(v) 1 1 0 26: 7(fvec4) CompositeConstruct 25 25 25 25 27: 7(fvec4) FAdd 24 26 ReturnValue 27 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-5.vert.out000066400000000000000000000557111506534232700237350ustar00rootroot00000000000000hlsl.clipdistance-5.vert Shader version: 500 0:? Sequence 0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Function Parameters: 0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position}) 0:? Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 Position: direct index for structure ( temp 4-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:15 move second child to first child ( temp float) 0:15 direct index ( temp float) 0:15 direct index ( temp 2-component vector of float) 0:15 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1.000000 0:16 move second child to first child ( temp float) 0:16 direct index ( temp float) 0:16 direct index ( temp 2-component vector of float) 0:16 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 2.000000 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float) 0:17 direct index ( temp 2-component vector of float) 0:17 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 3.000000 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 4.000000 0:20 Branch: Return with expression 0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position}) 0:11 Constant: 0:11 0 (const int) 0:? 'v.Position' (layout( location=0) in 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:? 'v' ( temp structure{ temp 4-component vector of float Position}) 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:11 Position: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 0 (const int) 0:? Sequence 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? 'v.Position' (layout( location=0) in 4-component vector of float) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Function Parameters: 0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position}) 0:? Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 Position: direct index for structure ( temp 4-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:15 move second child to first child ( temp float) 0:15 direct index ( temp float) 0:15 direct index ( temp 2-component vector of float) 0:15 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1.000000 0:16 move second child to first child ( temp float) 0:16 direct index ( temp float) 0:16 direct index ( temp 2-component vector of float) 0:16 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 2.000000 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float) 0:17 direct index ( temp 2-component vector of float) 0:17 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 3.000000 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 direct index ( temp 2-component vector of float) 0:18 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 4.000000 0:20 Branch: Return with expression 0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position}) 0:11 Constant: 0:11 0 (const int) 0:? 'v.Position' (layout( location=0) in 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:? 'v' ( temp structure{ temp 4-component vector of float Position}) 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:11 Position: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 0 (const int) 0:? Sequence 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 3 (const int) 0:11 direct index ( temp float) 0:11 direct index ( temp 2-component vector of float) 0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? 'v.Position' (layout( location=0) in 4-component vector of float) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 44 51 57 Source HLSL 500 Name 4 "main" Name 8 "VS_INPUT" MemberName 8(VS_INPUT) 0 "Position" Name 13 "VS_OUTPUT" MemberName 13(VS_OUTPUT) 0 "Position" MemberName 13(VS_OUTPUT) 1 "ClipRect" Name 16 "@main(struct-VS_INPUT-vf41;" Name 15 "v" Name 19 "Output" Name 42 "v" Name 44 "v.Position" Name 47 "flattenTemp" Name 51 "@entryPointOutput.Position" Name 57 "@entryPointOutput.ClipRect" Decorate 44(v.Position) Location 0 Decorate 51(@entryPointOutput.Position) BuiltIn Position Decorate 57(@entryPointOutput.ClipRect) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_INPUT): TypeStruct 7(fvec4) 9: TypeVector 6(float) 2 10: TypeInt 32 0 11: 10(int) Constant 2 12: TypeArray 9(fvec2) 11 13(VS_OUTPUT): TypeStruct 7(fvec4) 12 14: TypeFunction 13(VS_OUTPUT) 8(VS_INPUT) 18: TypePointer Function 13(VS_OUTPUT) 20: TypeInt 32 1 21: 20(int) Constant 0 22: 6(float) Constant 0 23: 7(fvec4) ConstantComposite 22 22 22 22 24: TypePointer Function 7(fvec4) 26: 20(int) Constant 1 27: 6(float) Constant 1065353216 28: 10(int) Constant 0 29: TypePointer Function 6(float) 31: 6(float) Constant 1073741824 32: 10(int) Constant 1 34: 6(float) Constant 1077936128 36: 6(float) Constant 1082130432 41: TypePointer Function 8(VS_INPUT) 43: TypePointer Input 7(fvec4) 44(v.Position): 43(ptr) Variable Input 50: TypePointer Output 7(fvec4) 51(@entryPointOutput.Position): 50(ptr) Variable Output 54: 10(int) Constant 4 55: TypeArray 6(float) 54 56: TypePointer Output 55 57(@entryPointOutput.ClipRect): 56(ptr) Variable Output 60: TypePointer Output 6(float) 65: 20(int) Constant 2 69: 20(int) Constant 3 4(main): 2 Function None 3 5: Label 42(v): 41(ptr) Variable Function 47(flattenTemp): 18(ptr) Variable Function 45: 7(fvec4) Load 44(v.Position) 46: 24(ptr) AccessChain 42(v) 21 Store 46 45 48: 8(VS_INPUT) Load 42(v) 49:13(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-vf41;) 48 Store 47(flattenTemp) 49 52: 24(ptr) AccessChain 47(flattenTemp) 21 53: 7(fvec4) Load 52 Store 51(@entryPointOutput.Position) 53 58: 29(ptr) AccessChain 47(flattenTemp) 26 21 28 59: 6(float) Load 58 61: 60(ptr) AccessChain 57(@entryPointOutput.ClipRect) 21 Store 61 59 62: 29(ptr) AccessChain 47(flattenTemp) 26 21 32 63: 6(float) Load 62 64: 60(ptr) AccessChain 57(@entryPointOutput.ClipRect) 26 Store 64 63 66: 29(ptr) AccessChain 47(flattenTemp) 26 26 28 67: 6(float) Load 66 68: 60(ptr) AccessChain 57(@entryPointOutput.ClipRect) 65 Store 68 67 70: 29(ptr) AccessChain 47(flattenTemp) 26 26 32 71: 6(float) Load 70 72: 60(ptr) AccessChain 57(@entryPointOutput.ClipRect) 69 Store 72 71 Return FunctionEnd 16(@main(struct-VS_INPUT-vf41;):13(VS_OUTPUT) Function None 14 15(v): 8(VS_INPUT) FunctionParameter 17: Label 19(Output): 18(ptr) Variable Function 25: 24(ptr) AccessChain 19(Output) 21 Store 25 23 30: 29(ptr) AccessChain 19(Output) 26 21 28 Store 30 27 33: 29(ptr) AccessChain 19(Output) 26 21 32 Store 33 31 35: 29(ptr) AccessChain 19(Output) 26 26 28 Store 35 34 37: 29(ptr) AccessChain 19(Output) 26 26 32 Store 37 36 38:13(VS_OUTPUT) Load 19(Output) ReturnValue 38 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-6.frag.out000066400000000000000000000523641506534232700236760ustar00rootroot00000000000000hlsl.clipdistance-6.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf4-vf41; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:? Sequence 0:9 Branch: Return with expression 0:9 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 Position: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 0 (const int) 0:9 clip0: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 1 (const int) 0:9 clip1: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 2 (const int) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 3 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf4-vf41; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf4-vf41; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:? Sequence 0:9 Branch: Return with expression 0:9 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 Position: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 0 (const int) 0:9 clip0: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 1 (const int) 0:9 clip1: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 2 (const int) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 3 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf4-vf41; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 79 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 31 38 75 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Position" MemberName 8(VS_OUTPUT) 1 "clip0" MemberName 8(VS_OUTPUT) 2 "clip1" Name 12 "@main(struct-VS_OUTPUT-vf4-vf4-vf41;" Name 11 "v" Name 29 "v" Name 31 "v.Position" Name 38 "v.clip1" Name 75 "@entryPointOutput" Name 76 "param" Decorate 31(v.Position) BuiltIn FragCoord Decorate 38(v.clip1) BuiltIn ClipDistance Decorate 75(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 9: TypePointer Function 8(VS_OUTPUT) 10: TypeFunction 7(fvec4) 9(ptr) 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Function 7(fvec4) 19: 14(int) Constant 1 23: 14(int) Constant 2 30: TypePointer Input 7(fvec4) 31(v.Position): 30(ptr) Variable Input 34: TypeInt 32 0 35: 34(int) Constant 8 36: TypeArray 6(float) 35 37: TypePointer Input 36 38(v.clip1): 37(ptr) Variable Input 39: TypePointer Input 6(float) 42: 34(int) Constant 0 43: TypePointer Function 6(float) 47: 34(int) Constant 1 51: 34(int) Constant 2 53: 14(int) Constant 3 56: 34(int) Constant 3 58: 14(int) Constant 4 62: 14(int) Constant 5 66: 14(int) Constant 6 70: 14(int) Constant 7 74: TypePointer Output 7(fvec4) 75(@entryPointOutput): 74(ptr) Variable Output 4(main): 2 Function None 3 5: Label 29(v): 9(ptr) Variable Function 76(param): 9(ptr) Variable Function 32: 7(fvec4) Load 31(v.Position) 33: 16(ptr) AccessChain 29(v) 15 Store 33 32 40: 39(ptr) AccessChain 38(v.clip1) 15 41: 6(float) Load 40 44: 43(ptr) AccessChain 29(v) 19 42 Store 44 41 45: 39(ptr) AccessChain 38(v.clip1) 19 46: 6(float) Load 45 48: 43(ptr) AccessChain 29(v) 19 47 Store 48 46 49: 39(ptr) AccessChain 38(v.clip1) 23 50: 6(float) Load 49 52: 43(ptr) AccessChain 29(v) 19 51 Store 52 50 54: 39(ptr) AccessChain 38(v.clip1) 53 55: 6(float) Load 54 57: 43(ptr) AccessChain 29(v) 19 56 Store 57 55 59: 39(ptr) AccessChain 38(v.clip1) 58 60: 6(float) Load 59 61: 43(ptr) AccessChain 29(v) 23 42 Store 61 60 63: 39(ptr) AccessChain 38(v.clip1) 62 64: 6(float) Load 63 65: 43(ptr) AccessChain 29(v) 23 47 Store 65 64 67: 39(ptr) AccessChain 38(v.clip1) 66 68: 6(float) Load 67 69: 43(ptr) AccessChain 29(v) 23 51 Store 69 68 71: 39(ptr) AccessChain 38(v.clip1) 70 72: 6(float) Load 71 73: 43(ptr) AccessChain 29(v) 23 56 Store 73 72 77:8(VS_OUTPUT) Load 29(v) Store 76(param) 77 78: 7(fvec4) FunctionCall 12(@main(struct-VS_OUTPUT-vf4-vf4-vf41;) 76(param) Store 75(@entryPointOutput) 78 Return FunctionEnd 12(@main(struct-VS_OUTPUT-vf4-vf4-vf41;): 7(fvec4) Function None 10 11(v): 9(ptr) FunctionParameter 13: Label 17: 16(ptr) AccessChain 11(v) 15 18: 7(fvec4) Load 17 20: 16(ptr) AccessChain 11(v) 19 21: 7(fvec4) Load 20 22: 7(fvec4) FAdd 18 21 24: 16(ptr) AccessChain 11(v) 23 25: 7(fvec4) Load 24 26: 7(fvec4) FAdd 22 25 ReturnValue 26 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-6.vert.out000066400000000000000000000731521506534232700237350ustar00rootroot00000000000000hlsl.clipdistance-6.vert Shader version: 500 0:? Sequence 0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 clip0: direct index for structure ( temp 4-component vector of float) 0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0.000000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 clip0: direct index for structure ( temp 4-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1.000000 0:14 move second child to first child ( temp float) 0:14 direct index ( temp float) 0:14 clip0: direct index for structure ( temp 4-component vector of float) 0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 2.000000 0:15 move second child to first child ( temp float) 0:15 direct index ( temp float) 0:15 clip0: direct index for structure ( temp 4-component vector of float) 0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 3 (const int) 0:15 Constant: 0:15 3.000000 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float) 0:17 clip1: direct index for structure ( temp 4-component vector of float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 4.000000 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 clip1: direct index for structure ( temp 4-component vector of float) 0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 5.000000 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 clip1: direct index for structure ( temp 4-component vector of float) 0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 6.000000 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 clip1: direct index for structure ( temp 4-component vector of float) 0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 3 (const int) 0:20 Constant: 0:20 7.000000 0:22 Branch: Return with expression 0:22 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 3 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 clip0: direct index for structure ( temp 4-component vector of float) 0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0.000000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 clip0: direct index for structure ( temp 4-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1.000000 0:14 move second child to first child ( temp float) 0:14 direct index ( temp float) 0:14 clip0: direct index for structure ( temp 4-component vector of float) 0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 2.000000 0:15 move second child to first child ( temp float) 0:15 direct index ( temp float) 0:15 clip0: direct index for structure ( temp 4-component vector of float) 0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 3 (const int) 0:15 Constant: 0:15 3.000000 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float) 0:17 clip1: direct index for structure ( temp 4-component vector of float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 4.000000 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 clip1: direct index for structure ( temp 4-component vector of float) 0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 5.000000 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 clip1: direct index for structure ( temp 4-component vector of float) 0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 6.000000 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 clip1: direct index for structure ( temp 4-component vector of float) 0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 3 (const int) 0:20 Constant: 0:20 7.000000 0:22 Branch: Return with expression 0:22 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 3 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 86 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 49 55 Source HLSL 500 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Position" MemberName 8(VS_OUTPUT) 1 "clip0" MemberName 8(VS_OUTPUT) 2 "clip1" Name 10 "@main(" Name 13 "Output" Name 46 "flattenTemp" Name 49 "@entryPointOutput.Position" Name 55 "@entryPointOutput.clip1" Decorate 49(@entryPointOutput.Position) BuiltIn Position Decorate 55(@entryPointOutput.clip1) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 9: TypeFunction 8(VS_OUTPUT) 12: TypePointer Function 8(VS_OUTPUT) 14: TypeInt 32 1 15: 14(int) Constant 0 16: 6(float) Constant 0 17: 7(fvec4) ConstantComposite 16 16 16 16 18: TypePointer Function 7(fvec4) 20: 14(int) Constant 1 21: TypeInt 32 0 22: 21(int) Constant 0 23: TypePointer Function 6(float) 25: 6(float) Constant 1065353216 26: 21(int) Constant 1 28: 6(float) Constant 1073741824 29: 21(int) Constant 2 31: 6(float) Constant 1077936128 32: 21(int) Constant 3 34: 14(int) Constant 2 35: 6(float) Constant 1082130432 37: 6(float) Constant 1084227584 39: 6(float) Constant 1086324736 41: 6(float) Constant 1088421888 48: TypePointer Output 7(fvec4) 49(@entryPointOutput.Position): 48(ptr) Variable Output 52: 21(int) Constant 8 53: TypeArray 6(float) 52 54: TypePointer Output 53 55(@entryPointOutput.clip1): 54(ptr) Variable Output 58: TypePointer Output 6(float) 66: 14(int) Constant 3 70: 14(int) Constant 4 74: 14(int) Constant 5 78: 14(int) Constant 6 82: 14(int) Constant 7 4(main): 2 Function None 3 5: Label 46(flattenTemp): 12(ptr) Variable Function 47:8(VS_OUTPUT) FunctionCall 10(@main() Store 46(flattenTemp) 47 50: 18(ptr) AccessChain 46(flattenTemp) 15 51: 7(fvec4) Load 50 Store 49(@entryPointOutput.Position) 51 56: 23(ptr) AccessChain 46(flattenTemp) 20 22 57: 6(float) Load 56 59: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 15 Store 59 57 60: 23(ptr) AccessChain 46(flattenTemp) 20 26 61: 6(float) Load 60 62: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 20 Store 62 61 63: 23(ptr) AccessChain 46(flattenTemp) 20 29 64: 6(float) Load 63 65: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 34 Store 65 64 67: 23(ptr) AccessChain 46(flattenTemp) 20 32 68: 6(float) Load 67 69: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 66 Store 69 68 71: 23(ptr) AccessChain 46(flattenTemp) 34 22 72: 6(float) Load 71 73: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 70 Store 73 72 75: 23(ptr) AccessChain 46(flattenTemp) 34 26 76: 6(float) Load 75 77: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 74 Store 77 76 79: 23(ptr) AccessChain 46(flattenTemp) 34 29 80: 6(float) Load 79 81: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 78 Store 81 80 83: 23(ptr) AccessChain 46(flattenTemp) 34 32 84: 6(float) Load 83 85: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 82 Store 85 84 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 11: Label 13(Output): 12(ptr) Variable Function 19: 18(ptr) AccessChain 13(Output) 15 Store 19 17 24: 23(ptr) AccessChain 13(Output) 20 22 Store 24 16 27: 23(ptr) AccessChain 13(Output) 20 26 Store 27 25 30: 23(ptr) AccessChain 13(Output) 20 29 Store 30 28 33: 23(ptr) AccessChain 13(Output) 20 32 Store 33 31 36: 23(ptr) AccessChain 13(Output) 34 22 Store 36 35 38: 23(ptr) AccessChain 13(Output) 34 26 Store 38 37 40: 23(ptr) AccessChain 13(Output) 34 29 Store 40 39 42: 23(ptr) AccessChain 13(Output) 34 32 Store 42 41 43:8(VS_OUTPUT) Load 13(Output) ReturnValue 43 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-7.frag.out000066400000000000000000000504711506534232700236740ustar00rootroot00000000000000hlsl.clipdistance-7.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf3-vf41; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:? Sequence 0:9 Branch: Return with expression 0:9 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 Position: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 0 (const int) 0:9 direct index ( temp float) 0:9 clip0: direct index for structure ( temp 3-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) 0:9 direct index ( temp float) 0:9 clip1: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 0 (const int) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf3-vf41; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf3-vf41; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:? Sequence 0:9 Branch: Return with expression 0:9 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 Position: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 0 (const int) 0:9 direct index ( temp float) 0:9 clip0: direct index for structure ( temp 3-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) 0:9 direct index ( temp float) 0:9 clip1: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 0 (const int) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf3-vf41; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 37 43 74 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "VS_OUTPUT" MemberName 9(VS_OUTPUT) 0 "Position" MemberName 9(VS_OUTPUT) 1 "clip0" MemberName 9(VS_OUTPUT) 2 "clip1" Name 13 "@main(struct-VS_OUTPUT-vf4-vf3-vf41;" Name 12 "v" Name 35 "v" Name 37 "v.Position" Name 43 "v.clip1" Name 74 "@entryPointOutput" Name 75 "param" Decorate 37(v.Position) BuiltIn FragCoord Decorate 43(v.clip1) BuiltIn ClipDistance Decorate 74(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 3 9(VS_OUTPUT): TypeStruct 7(fvec4) 8(fvec3) 7(fvec4) 10: TypePointer Function 9(VS_OUTPUT) 11: TypeFunction 7(fvec4) 10(ptr) 15: TypeInt 32 1 16: 15(int) Constant 0 17: TypePointer Function 7(fvec4) 20: 15(int) Constant 1 21: TypeInt 32 0 22: 21(int) Constant 0 23: TypePointer Function 6(float) 28: 15(int) Constant 2 36: TypePointer Input 7(fvec4) 37(v.Position): 36(ptr) Variable Input 40: 21(int) Constant 8 41: TypeArray 6(float) 40 42: TypePointer Input 41 43(v.clip1): 42(ptr) Variable Input 44: TypePointer Input 6(float) 50: 21(int) Constant 1 54: 21(int) Constant 2 56: 15(int) Constant 4 60: 15(int) Constant 5 64: 15(int) Constant 6 68: 15(int) Constant 7 71: 21(int) Constant 3 73: TypePointer Output 7(fvec4) 74(@entryPointOutput): 73(ptr) Variable Output 4(main): 2 Function None 3 5: Label 35(v): 10(ptr) Variable Function 75(param): 10(ptr) Variable Function 38: 7(fvec4) Load 37(v.Position) 39: 17(ptr) AccessChain 35(v) 16 Store 39 38 45: 44(ptr) AccessChain 43(v.clip1) 16 46: 6(float) Load 45 47: 23(ptr) AccessChain 35(v) 20 22 Store 47 46 48: 44(ptr) AccessChain 43(v.clip1) 20 49: 6(float) Load 48 51: 23(ptr) AccessChain 35(v) 20 50 Store 51 49 52: 44(ptr) AccessChain 43(v.clip1) 28 53: 6(float) Load 52 55: 23(ptr) AccessChain 35(v) 20 54 Store 55 53 57: 44(ptr) AccessChain 43(v.clip1) 56 58: 6(float) Load 57 59: 23(ptr) AccessChain 35(v) 28 22 Store 59 58 61: 44(ptr) AccessChain 43(v.clip1) 60 62: 6(float) Load 61 63: 23(ptr) AccessChain 35(v) 28 50 Store 63 62 65: 44(ptr) AccessChain 43(v.clip1) 64 66: 6(float) Load 65 67: 23(ptr) AccessChain 35(v) 28 54 Store 67 66 69: 44(ptr) AccessChain 43(v.clip1) 68 70: 6(float) Load 69 72: 23(ptr) AccessChain 35(v) 28 71 Store 72 70 76:9(VS_OUTPUT) Load 35(v) Store 75(param) 76 77: 7(fvec4) FunctionCall 13(@main(struct-VS_OUTPUT-vf4-vf3-vf41;) 75(param) Store 74(@entryPointOutput) 77 Return FunctionEnd 13(@main(struct-VS_OUTPUT-vf4-vf3-vf41;): 7(fvec4) Function None 11 12(v): 10(ptr) FunctionParameter 14: Label 18: 17(ptr) AccessChain 12(v) 16 19: 7(fvec4) Load 18 24: 23(ptr) AccessChain 12(v) 20 22 25: 6(float) Load 24 26: 7(fvec4) CompositeConstruct 25 25 25 25 27: 7(fvec4) FAdd 19 26 29: 23(ptr) AccessChain 12(v) 28 22 30: 6(float) Load 29 31: 7(fvec4) CompositeConstruct 30 30 30 30 32: 7(fvec4) FAdd 27 31 ReturnValue 32 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-7.vert.out000066400000000000000000000656501506534232700237420ustar00rootroot00000000000000hlsl.clipdistance-7.vert Shader version: 500 0:? Sequence 0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 clip0: direct index for structure ( temp 3-component vector of float) 0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0.000000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 clip0: direct index for structure ( temp 3-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1.000000 0:14 move second child to first child ( temp float) 0:14 direct index ( temp float) 0:14 clip0: direct index for structure ( temp 3-component vector of float) 0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 2.000000 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float) 0:17 clip1: direct index for structure ( temp 4-component vector of float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 4.000000 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 clip1: direct index for structure ( temp 4-component vector of float) 0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 5.000000 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 clip1: direct index for structure ( temp 4-component vector of float) 0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 6.000000 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 clip1: direct index for structure ( temp 4-component vector of float) 0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 3 (const int) 0:20 Constant: 0:20 7.000000 0:22 Branch: Return with expression 0:22 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 clip0: direct index for structure ( temp 3-component vector of float) 0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0.000000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 clip0: direct index for structure ( temp 3-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1.000000 0:14 move second child to first child ( temp float) 0:14 direct index ( temp float) 0:14 clip0: direct index for structure ( temp 3-component vector of float) 0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 2.000000 0:17 move second child to first child ( temp float) 0:17 direct index ( temp float) 0:17 clip1: direct index for structure ( temp 4-component vector of float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 4.000000 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 clip1: direct index for structure ( temp 4-component vector of float) 0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 5.000000 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 clip1: direct index for structure ( temp 4-component vector of float) 0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 6.000000 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 clip1: direct index for structure ( temp 4-component vector of float) 0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 3 (const int) 0:20 Constant: 0:20 7.000000 0:22 Branch: Return with expression 0:22 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) 0:8 direct index ( temp float) 0:8 clip1: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 81 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 48 54 Source HLSL 500 Name 4 "main" Name 9 "VS_OUTPUT" MemberName 9(VS_OUTPUT) 0 "Position" MemberName 9(VS_OUTPUT) 1 "clip0" MemberName 9(VS_OUTPUT) 2 "clip1" Name 11 "@main(" Name 14 "Output" Name 45 "flattenTemp" Name 48 "@entryPointOutput.Position" Name 54 "@entryPointOutput.clip1" Decorate 48(@entryPointOutput.Position) BuiltIn Position Decorate 54(@entryPointOutput.clip1) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 3 9(VS_OUTPUT): TypeStruct 7(fvec4) 8(fvec3) 7(fvec4) 10: TypeFunction 9(VS_OUTPUT) 13: TypePointer Function 9(VS_OUTPUT) 15: TypeInt 32 1 16: 15(int) Constant 0 17: 6(float) Constant 0 18: 7(fvec4) ConstantComposite 17 17 17 17 19: TypePointer Function 7(fvec4) 21: 15(int) Constant 1 22: TypeInt 32 0 23: 22(int) Constant 0 24: TypePointer Function 6(float) 26: 6(float) Constant 1065353216 27: 22(int) Constant 1 29: 6(float) Constant 1073741824 30: 22(int) Constant 2 32: 15(int) Constant 2 33: 6(float) Constant 1082130432 35: 6(float) Constant 1084227584 37: 6(float) Constant 1086324736 39: 6(float) Constant 1088421888 40: 22(int) Constant 3 47: TypePointer Output 7(fvec4) 48(@entryPointOutput.Position): 47(ptr) Variable Output 51: 22(int) Constant 8 52: TypeArray 6(float) 51 53: TypePointer Output 52 54(@entryPointOutput.clip1): 53(ptr) Variable Output 57: TypePointer Output 6(float) 65: 15(int) Constant 4 69: 15(int) Constant 5 73: 15(int) Constant 6 77: 15(int) Constant 7 4(main): 2 Function None 3 5: Label 45(flattenTemp): 13(ptr) Variable Function 46:9(VS_OUTPUT) FunctionCall 11(@main() Store 45(flattenTemp) 46 49: 19(ptr) AccessChain 45(flattenTemp) 16 50: 7(fvec4) Load 49 Store 48(@entryPointOutput.Position) 50 55: 24(ptr) AccessChain 45(flattenTemp) 21 23 56: 6(float) Load 55 58: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 16 Store 58 56 59: 24(ptr) AccessChain 45(flattenTemp) 21 27 60: 6(float) Load 59 61: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 21 Store 61 60 62: 24(ptr) AccessChain 45(flattenTemp) 21 30 63: 6(float) Load 62 64: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 32 Store 64 63 66: 24(ptr) AccessChain 45(flattenTemp) 32 23 67: 6(float) Load 66 68: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 65 Store 68 67 70: 24(ptr) AccessChain 45(flattenTemp) 32 27 71: 6(float) Load 70 72: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 69 Store 72 71 74: 24(ptr) AccessChain 45(flattenTemp) 32 30 75: 6(float) Load 74 76: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 73 Store 76 75 78: 24(ptr) AccessChain 45(flattenTemp) 32 40 79: 6(float) Load 78 80: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 77 Store 80 79 Return FunctionEnd 11(@main():9(VS_OUTPUT) Function None 10 12: Label 14(Output): 13(ptr) Variable Function 20: 19(ptr) AccessChain 14(Output) 16 Store 20 18 25: 24(ptr) AccessChain 14(Output) 21 23 Store 25 17 28: 24(ptr) AccessChain 14(Output) 21 27 Store 28 26 31: 24(ptr) AccessChain 14(Output) 21 30 Store 31 29 34: 24(ptr) AccessChain 14(Output) 32 23 Store 34 33 36: 24(ptr) AccessChain 14(Output) 32 27 Store 36 35 38: 24(ptr) AccessChain 14(Output) 32 30 Store 38 37 41: 24(ptr) AccessChain 14(Output) 32 40 Store 41 39 42:9(VS_OUTPUT) Load 14(Output) ReturnValue 42 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-8.frag.out000066400000000000000000000353631506534232700237000ustar00rootroot00000000000000hlsl.clipdistance-8.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf3-f11; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:? Sequence 0:9 Branch: Return with expression 0:9 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 Position: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:9 Constant: 0:9 0 (const int) 0:9 direct index ( temp float) 0:9 clip0: direct index for structure ( temp 3-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) 0:9 clip1: direct index for structure ( temp float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:9 Constant: 0:9 2 (const int) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 clip1: direct index for structure ( temp float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf3-f11; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf3-f11; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:? Sequence 0:9 Branch: Return with expression 0:9 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 Position: direct index for structure ( temp 4-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:9 Constant: 0:9 0 (const int) 0:9 direct index ( temp float) 0:9 clip0: direct index for structure ( temp 3-component vector of float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) 0:9 clip1: direct index for structure ( temp float) 0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:9 Constant: 0:9 2 (const int) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 clip1: direct index for structure ( temp float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf3-f11; ( temp 4-component vector of float) 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'v.Position' ( in 4-component vector of float FragCoord) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 37 43 61 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "VS_OUTPUT" MemberName 9(VS_OUTPUT) 0 "Position" MemberName 9(VS_OUTPUT) 1 "clip0" MemberName 9(VS_OUTPUT) 2 "clip1" Name 13 "@main(struct-VS_OUTPUT-vf4-vf3-f11;" Name 12 "v" Name 35 "v" Name 37 "v.Position" Name 43 "v.clip1" Name 61 "@entryPointOutput" Name 62 "param" Decorate 37(v.Position) BuiltIn FragCoord Decorate 43(v.clip1) BuiltIn ClipDistance Decorate 61(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 3 9(VS_OUTPUT): TypeStruct 7(fvec4) 8(fvec3) 6(float) 10: TypePointer Function 9(VS_OUTPUT) 11: TypeFunction 7(fvec4) 10(ptr) 15: TypeInt 32 1 16: 15(int) Constant 0 17: TypePointer Function 7(fvec4) 20: 15(int) Constant 1 21: TypeInt 32 0 22: 21(int) Constant 0 23: TypePointer Function 6(float) 28: 15(int) Constant 2 36: TypePointer Input 7(fvec4) 37(v.Position): 36(ptr) Variable Input 40: 21(int) Constant 4 41: TypeArray 6(float) 40 42: TypePointer Input 41 43(v.clip1): 42(ptr) Variable Input 44: TypePointer Input 6(float) 50: 21(int) Constant 1 54: 21(int) Constant 2 56: 15(int) Constant 3 60: TypePointer Output 7(fvec4) 61(@entryPointOutput): 60(ptr) Variable Output 4(main): 2 Function None 3 5: Label 35(v): 10(ptr) Variable Function 62(param): 10(ptr) Variable Function 38: 7(fvec4) Load 37(v.Position) 39: 17(ptr) AccessChain 35(v) 16 Store 39 38 45: 44(ptr) AccessChain 43(v.clip1) 16 46: 6(float) Load 45 47: 23(ptr) AccessChain 35(v) 20 22 Store 47 46 48: 44(ptr) AccessChain 43(v.clip1) 20 49: 6(float) Load 48 51: 23(ptr) AccessChain 35(v) 20 50 Store 51 49 52: 44(ptr) AccessChain 43(v.clip1) 28 53: 6(float) Load 52 55: 23(ptr) AccessChain 35(v) 20 54 Store 55 53 57: 44(ptr) AccessChain 43(v.clip1) 56 58: 6(float) Load 57 59: 23(ptr) AccessChain 35(v) 28 Store 59 58 63:9(VS_OUTPUT) Load 35(v) Store 62(param) 63 64: 7(fvec4) FunctionCall 13(@main(struct-VS_OUTPUT-vf4-vf3-f11;) 62(param) Store 61(@entryPointOutput) 64 Return FunctionEnd 13(@main(struct-VS_OUTPUT-vf4-vf3-f11;): 7(fvec4) Function None 11 12(v): 10(ptr) FunctionParameter 14: Label 18: 17(ptr) AccessChain 12(v) 16 19: 7(fvec4) Load 18 24: 23(ptr) AccessChain 12(v) 20 22 25: 6(float) Load 24 26: 7(fvec4) CompositeConstruct 25 25 25 25 27: 7(fvec4) FAdd 19 26 29: 23(ptr) AccessChain 12(v) 28 30: 6(float) Load 29 31: 7(fvec4) CompositeConstruct 30 30 30 30 32: 7(fvec4) FAdd 27 31 ReturnValue 32 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-8.vert.out000066400000000000000000000430021506534232700237260ustar00rootroot00000000000000hlsl.clipdistance-8.vert Shader version: 500 0:? Sequence 0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 clip0: direct index for structure ( temp 3-component vector of float) 0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0.000000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 clip0: direct index for structure ( temp 3-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1.000000 0:14 move second child to first child ( temp float) 0:14 direct index ( temp float) 0:14 clip0: direct index for structure ( temp 3-component vector of float) 0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 2.000000 0:17 move second child to first child ( temp float) 0:17 clip1: direct index for structure ( temp float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 3.000000 0:19 Branch: Return with expression 0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) 0:8 clip1: direct index for structure ( temp float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 2 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 clip0: direct index for structure ( temp 3-component vector of float) 0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 0.000000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 clip0: direct index for structure ( temp 3-component vector of float) 0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1.000000 0:14 move second child to first child ( temp float) 0:14 direct index ( temp float) 0:14 clip0: direct index for structure ( temp 3-component vector of float) 0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 2.000000 0:17 move second child to first child ( temp float) 0:17 clip1: direct index for structure ( temp float) 0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 3.000000 0:19 Branch: Return with expression 0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) 0:8 direct index ( temp float) 0:8 clip0: direct index for structure ( temp 3-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) 0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) 0:8 clip1: direct index for structure ( temp float) 0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 2 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 41 47 Source HLSL 500 Name 4 "main" Name 9 "VS_OUTPUT" MemberName 9(VS_OUTPUT) 0 "Position" MemberName 9(VS_OUTPUT) 1 "clip0" MemberName 9(VS_OUTPUT) 2 "clip1" Name 11 "@main(" Name 14 "Output" Name 38 "flattenTemp" Name 41 "@entryPointOutput.Position" Name 47 "@entryPointOutput.clip1" Decorate 41(@entryPointOutput.Position) BuiltIn Position Decorate 47(@entryPointOutput.clip1) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 3 9(VS_OUTPUT): TypeStruct 7(fvec4) 8(fvec3) 6(float) 10: TypeFunction 9(VS_OUTPUT) 13: TypePointer Function 9(VS_OUTPUT) 15: TypeInt 32 1 16: 15(int) Constant 0 17: 6(float) Constant 0 18: 7(fvec4) ConstantComposite 17 17 17 17 19: TypePointer Function 7(fvec4) 21: 15(int) Constant 1 22: TypeInt 32 0 23: 22(int) Constant 0 24: TypePointer Function 6(float) 26: 6(float) Constant 1065353216 27: 22(int) Constant 1 29: 6(float) Constant 1073741824 30: 22(int) Constant 2 32: 15(int) Constant 2 33: 6(float) Constant 1077936128 40: TypePointer Output 7(fvec4) 41(@entryPointOutput.Position): 40(ptr) Variable Output 44: 22(int) Constant 4 45: TypeArray 6(float) 44 46: TypePointer Output 45 47(@entryPointOutput.clip1): 46(ptr) Variable Output 50: TypePointer Output 6(float) 58: 15(int) Constant 3 4(main): 2 Function None 3 5: Label 38(flattenTemp): 13(ptr) Variable Function 39:9(VS_OUTPUT) FunctionCall 11(@main() Store 38(flattenTemp) 39 42: 19(ptr) AccessChain 38(flattenTemp) 16 43: 7(fvec4) Load 42 Store 41(@entryPointOutput.Position) 43 48: 24(ptr) AccessChain 38(flattenTemp) 21 23 49: 6(float) Load 48 51: 50(ptr) AccessChain 47(@entryPointOutput.clip1) 16 Store 51 49 52: 24(ptr) AccessChain 38(flattenTemp) 21 27 53: 6(float) Load 52 54: 50(ptr) AccessChain 47(@entryPointOutput.clip1) 21 Store 54 53 55: 24(ptr) AccessChain 38(flattenTemp) 21 30 56: 6(float) Load 55 57: 50(ptr) AccessChain 47(@entryPointOutput.clip1) 32 Store 57 56 59: 24(ptr) AccessChain 38(flattenTemp) 32 60: 6(float) Load 59 61: 50(ptr) AccessChain 47(@entryPointOutput.clip1) 58 Store 61 60 Return FunctionEnd 11(@main():9(VS_OUTPUT) Function None 10 12: Label 14(Output): 13(ptr) Variable Function 20: 19(ptr) AccessChain 14(Output) 16 Store 20 18 25: 24(ptr) AccessChain 14(Output) 21 23 Store 25 17 28: 24(ptr) AccessChain 14(Output) 21 27 Store 28 26 31: 24(ptr) AccessChain 14(Output) 21 30 Store 31 29 34: 24(ptr) AccessChain 14(Output) 32 Store 34 33 35:9(VS_OUTPUT) Load 14(Output) ReturnValue 35 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-9.frag.out000066400000000000000000000262131506534232700236730ustar00rootroot00000000000000hlsl.clipdistance-9.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: @main(vf4;vf3;f1; ( temp 4-component vector of float) 0:6 Function Parameters: 0:6 'Position' ( in 4-component vector of float) 0:6 'clip0' ( in 3-component vector of float) 0:6 'clip1' ( in float) 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp 4-component vector of float) 0:7 add ( temp 4-component vector of float) 0:7 'Position' ( in 4-component vector of float) 0:7 direct index ( temp float) 0:7 'clip0' ( in 3-component vector of float) 0:7 Constant: 0:7 0 (const int) 0:7 'clip1' ( in float) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? 'Position' ( temp 4-component vector of float) 0:? 'Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 0 (const int) 0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 0 (const int) 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 1 (const int) 0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 1 (const int) 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 2 (const int) 0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 2 (const int) 0:? Sequence 0:6 move second child to first child ( temp float) 0:? 'clip1' ( temp float) 0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 3 (const int) 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main(vf4;vf3;f1; ( temp 4-component vector of float) 0:? 'Position' ( temp 4-component vector of float) 0:? 'clip0' ( temp 3-component vector of float) 0:? 'clip1' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'Position' ( in 4-component vector of float FragCoord) 0:? 'clip0' ( in 4-element array of float ClipDistance) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: @main(vf4;vf3;f1; ( temp 4-component vector of float) 0:6 Function Parameters: 0:6 'Position' ( in 4-component vector of float) 0:6 'clip0' ( in 3-component vector of float) 0:6 'clip1' ( in float) 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp 4-component vector of float) 0:7 add ( temp 4-component vector of float) 0:7 'Position' ( in 4-component vector of float) 0:7 direct index ( temp float) 0:7 'clip0' ( in 3-component vector of float) 0:7 Constant: 0:7 0 (const int) 0:7 'clip1' ( in float) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? 'Position' ( temp 4-component vector of float) 0:? 'Position' ( in 4-component vector of float FragCoord) 0:? Sequence 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 0 (const int) 0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 0 (const int) 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 1 (const int) 0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 1 (const int) 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 2 (const int) 0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 2 (const int) 0:? Sequence 0:6 move second child to first child ( temp float) 0:? 'clip1' ( temp float) 0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 3 (const int) 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main(vf4;vf3;f1; ( temp 4-component vector of float) 0:? 'Position' ( temp 4-component vector of float) 0:? 'clip0' ( temp 3-component vector of float) 0:? 'clip1' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'Position' ( in 4-component vector of float FragCoord) 0:? 'clip0' ( in 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 68 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 32 38 60 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 16 "@main(vf4;vf3;f1;" Name 13 "Position" Name 14 "clip0" Name 15 "clip1" Name 30 "Position" Name 32 "Position" Name 34 "clip0" Name 38 "clip0" Name 55 "clip1" Name 60 "@entryPointOutput" Name 61 "param" Name 63 "param" Name 65 "param" Decorate 32(Position) BuiltIn FragCoord Decorate 38(clip0) BuiltIn ClipDistance Decorate 60(@entryPointOutput) Location 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: TypePointer Function 6(float) 12: TypeFunction 7(fvec4) 8(ptr) 10(ptr) 11(ptr) 19: TypeInt 32 0 20: 19(int) Constant 0 31: TypePointer Input 7(fvec4) 32(Position): 31(ptr) Variable Input 35: 19(int) Constant 4 36: TypeArray 6(float) 35 37: TypePointer Input 36 38(clip0): 37(ptr) Variable Input 39: TypeInt 32 1 40: 39(int) Constant 0 41: TypePointer Input 6(float) 45: 39(int) Constant 1 48: 19(int) Constant 1 50: 39(int) Constant 2 53: 19(int) Constant 2 56: 39(int) Constant 3 59: TypePointer Output 7(fvec4) 60(@entryPointOutput): 59(ptr) Variable Output 4(main): 2 Function None 3 5: Label 30(Position): 8(ptr) Variable Function 34(clip0): 10(ptr) Variable Function 55(clip1): 11(ptr) Variable Function 61(param): 8(ptr) Variable Function 63(param): 10(ptr) Variable Function 65(param): 11(ptr) Variable Function 33: 7(fvec4) Load 32(Position) Store 30(Position) 33 42: 41(ptr) AccessChain 38(clip0) 40 43: 6(float) Load 42 44: 11(ptr) AccessChain 34(clip0) 20 Store 44 43 46: 41(ptr) AccessChain 38(clip0) 45 47: 6(float) Load 46 49: 11(ptr) AccessChain 34(clip0) 48 Store 49 47 51: 41(ptr) AccessChain 38(clip0) 50 52: 6(float) Load 51 54: 11(ptr) AccessChain 34(clip0) 53 Store 54 52 57: 41(ptr) AccessChain 38(clip0) 56 58: 6(float) Load 57 Store 55(clip1) 58 62: 7(fvec4) Load 30(Position) Store 61(param) 62 64: 9(fvec3) Load 34(clip0) Store 63(param) 64 66: 6(float) Load 55(clip1) Store 65(param) 66 67: 7(fvec4) FunctionCall 16(@main(vf4;vf3;f1;) 61(param) 63(param) 65(param) Store 60(@entryPointOutput) 67 Return FunctionEnd 16(@main(vf4;vf3;f1;): 7(fvec4) Function None 12 13(Position): 8(ptr) FunctionParameter 14(clip0): 10(ptr) FunctionParameter 15(clip1): 11(ptr) FunctionParameter 17: Label 18: 7(fvec4) Load 13(Position) 21: 11(ptr) AccessChain 14(clip0) 20 22: 6(float) Load 21 23: 7(fvec4) CompositeConstruct 22 22 22 22 24: 7(fvec4) FAdd 18 23 25: 6(float) Load 15(clip1) 26: 7(fvec4) CompositeConstruct 25 25 25 25 27: 7(fvec4) FAdd 24 26 ReturnValue 27 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.clipdistance-9.vert.out000066400000000000000000000313731506534232700237370ustar00rootroot00000000000000hlsl.clipdistance-9.vert Shader version: 500 0:? Sequence 0:7 Function Definition: @main(vf3;f1; ( temp structure{ temp 4-component vector of float Position}) 0:7 Function Parameters: 0:7 'clip0' ( out 3-component vector of float) 0:7 'clip1' ( out float) 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 Position: direct index for structure ( temp 4-component vector of float) 0:9 'Output' ( temp structure{ temp 4-component vector of float Position}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 'clip0' ( out 3-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0.000000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 'clip0' ( out 3-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 1.000000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 'clip0' ( out 3-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 2.000000 0:16 move second child to first child ( temp float) 0:16 'clip1' ( out float) 0:16 Constant: 0:16 3.000000 0:18 Branch: Return with expression 0:18 'Output' ( temp structure{ temp 4-component vector of float Position}) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:7 Position: direct index for structure ( temp 4-component vector of float) 0:7 Function Call: @main(vf3;f1; ( temp structure{ temp 4-component vector of float Position}) 0:? 'clip0' ( temp 3-component vector of float) 0:? 'clip1' ( temp float) 0:7 Constant: 0:7 0 (const int) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) 0:7 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:7 Constant: 0:7 2 (const int) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) 0:? 'clip1' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? 'clip0' ( out 4-element array of float ClipDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:7 Function Definition: @main(vf3;f1; ( temp structure{ temp 4-component vector of float Position}) 0:7 Function Parameters: 0:7 'clip0' ( out 3-component vector of float) 0:7 'clip1' ( out float) 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 Position: direct index for structure ( temp 4-component vector of float) 0:9 'Output' ( temp structure{ temp 4-component vector of float Position}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 'clip0' ( out 3-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0.000000 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 'clip0' ( out 3-component vector of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 1.000000 0:13 move second child to first child ( temp float) 0:13 direct index ( temp float) 0:13 'clip0' ( out 3-component vector of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 2.000000 0:16 move second child to first child ( temp float) 0:16 'clip1' ( out float) 0:16 Constant: 0:16 3.000000 0:18 Branch: Return with expression 0:18 'Output' ( temp structure{ temp 4-component vector of float Position}) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:7 Position: direct index for structure ( temp 4-component vector of float) 0:7 Function Call: @main(vf3;f1; ( temp structure{ temp 4-component vector of float Position}) 0:? 'clip0' ( temp 3-component vector of float) 0:? 'clip1' ( temp float) 0:7 Constant: 0:7 0 (const int) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) 0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) 0:7 direct index ( temp float) 0:? 'clip0' ( temp 3-component vector of float) 0:7 Constant: 0:7 2 (const int) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) 0:? 'clip1' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput.Position' ( out 4-component vector of float Position) 0:? 'clip0' ( out 4-element array of float ClipDistance) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 67 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 39 51 Source HLSL 500 Name 4 "main" Name 11 "VS_OUTPUT" MemberName 11(VS_OUTPUT) 0 "Position" Name 15 "@main(vf3;f1;" Name 13 "clip0" Name 14 "clip1" Name 18 "Output" Name 39 "@entryPointOutput.Position" Name 40 "clip0" Name 41 "clip1" Name 42 "param" Name 43 "param" Name 51 "clip0" Decorate 39(@entryPointOutput.Position) BuiltIn Position Decorate 51(clip0) BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) 9: TypePointer Function 6(float) 10: TypeVector 6(float) 4 11(VS_OUTPUT): TypeStruct 10(fvec4) 12: TypeFunction 11(VS_OUTPUT) 8(ptr) 9(ptr) 17: TypePointer Function 11(VS_OUTPUT) 19: TypeInt 32 1 20: 19(int) Constant 0 21: 6(float) Constant 0 22: 10(fvec4) ConstantComposite 21 21 21 21 23: TypePointer Function 10(fvec4) 25: TypeInt 32 0 26: 25(int) Constant 0 28: 6(float) Constant 1065353216 29: 25(int) Constant 1 31: 6(float) Constant 1073741824 32: 25(int) Constant 2 34: 6(float) Constant 1077936128 38: TypePointer Output 10(fvec4) 39(@entryPointOutput.Position): 38(ptr) Variable Output 48: 25(int) Constant 4 49: TypeArray 6(float) 48 50: TypePointer Output 49 51(clip0): 50(ptr) Variable Output 54: TypePointer Output 6(float) 56: 19(int) Constant 1 60: 19(int) Constant 2 64: 19(int) Constant 3 4(main): 2 Function None 3 5: Label 40(clip0): 8(ptr) Variable Function 41(clip1): 9(ptr) Variable Function 42(param): 8(ptr) Variable Function 43(param): 9(ptr) Variable Function 44:11(VS_OUTPUT) FunctionCall 15(@main(vf3;f1;) 42(param) 43(param) 45: 7(fvec3) Load 42(param) Store 40(clip0) 45 46: 6(float) Load 43(param) Store 41(clip1) 46 47: 10(fvec4) CompositeExtract 44 0 Store 39(@entryPointOutput.Position) 47 52: 9(ptr) AccessChain 40(clip0) 26 53: 6(float) Load 52 55: 54(ptr) AccessChain 51(clip0) 20 Store 55 53 57: 9(ptr) AccessChain 40(clip0) 29 58: 6(float) Load 57 59: 54(ptr) AccessChain 51(clip0) 56 Store 59 58 61: 9(ptr) AccessChain 40(clip0) 32 62: 6(float) Load 61 63: 54(ptr) AccessChain 51(clip0) 60 Store 63 62 65: 6(float) Load 41(clip1) 66: 54(ptr) AccessChain 51(clip0) 64 Store 66 65 Return FunctionEnd 15(@main(vf3;f1;):11(VS_OUTPUT) Function None 12 13(clip0): 8(ptr) FunctionParameter 14(clip1): 9(ptr) FunctionParameter 16: Label 18(Output): 17(ptr) Variable Function 24: 23(ptr) AccessChain 18(Output) 20 Store 24 22 27: 9(ptr) AccessChain 13(clip0) 26 Store 27 21 30: 9(ptr) AccessChain 13(clip0) 29 Store 30 28 33: 9(ptr) AccessChain 13(clip0) 32 Store 33 31 Store 14(clip1) 34 35:11(VS_OUTPUT) Load 18(Output) ReturnValue 35 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.color.hull.tesc.out000066400000000000000000001372061506534232700231700ustar00rootroot00000000000000hlsl.color.hull.tesc Shader version: 500 vertices = 3 vertex spacing = equal_spacing triangle order = cw 0:? Sequence 0:37 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:37 Function Parameters: 0:37 'inputPatch' ( in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:37 'patchId' ( in uint) 0:? Sequence 0:42 move second child to first child ( temp float) 0:42 direct index ( temp float) 0:42 edges: direct index for structure ( temp 3-element array of float) 0:42 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 tessellationAmount: direct index for structure (layout( row_major std140) uniform float) 0:42 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:42 Constant: 0:42 0 (const uint) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 edges: direct index for structure ( temp 3-element array of float) 0:43 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 tessellationAmount: direct index for structure (layout( row_major std140) uniform float) 0:43 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:43 Constant: 0:43 0 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 edges: direct index for structure ( temp 3-element array of float) 0:44 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 tessellationAmount: direct index for structure (layout( row_major std140) uniform float) 0:44 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:44 Constant: 0:44 0 (const uint) 0:47 move second child to first child ( temp float) 0:47 inside: direct index for structure ( temp float) 0:47 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:47 Constant: 0:47 1 (const int) 0:47 tessellationAmount: direct index for structure (layout( row_major std140) uniform float) 0:47 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:47 Constant: 0:47 0 (const uint) 0:49 Branch: Return with expression 0:49 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:63 Function Definition: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Function Parameters: 0:63 'patch' ( in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 'pointId' ( in uint) 0:63 'patchId' ( in uint) 0:? Sequence 0:67 move second child to first child ( temp 3-component vector of float) 0:67 position: direct index for structure ( temp 3-component vector of float) 0:67 'output' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:67 Constant: 0:67 0 (const int) 0:67 position: direct index for structure ( temp 3-component vector of float) 0:67 indirect index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:67 'patch' ( in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:67 'pointId' ( in uint) 0:67 Constant: 0:67 0 (const int) 0:70 move second child to first child ( temp 4-component vector of float) 0:70 color: direct index for structure ( temp 4-component vector of float) 0:70 'output' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:70 Constant: 0:70 1 (const int) 0:70 color: direct index for structure ( temp 4-component vector of float) 0:70 indirect index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:70 'patch' ( in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:70 'pointId' ( in uint) 0:70 Constant: 0:70 1 (const int) 0:72 Branch: Return with expression 0:72 'output' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Function Definition: main( ( temp void) 0:63 Function Parameters: 0:? Sequence 0:63 Sequence 0:63 move second child to first child ( temp 3-component vector of float) 0:63 position: direct index for structure ( temp 3-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 color: direct index for structure ( temp 4-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 direct index (layout( location=1) in 4-component vector of float) 0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:63 move second child to first child ( temp 3-component vector of float) 0:63 position: direct index for structure ( temp 3-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float) 0:63 Constant: 0:63 1 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 color: direct index for structure ( temp 4-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 direct index (layout( location=1) in 4-component vector of float) 0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float) 0:63 Constant: 0:63 1 (const int) 0:63 move second child to first child ( temp 3-component vector of float) 0:63 position: direct index for structure ( temp 3-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float) 0:63 Constant: 0:63 2 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 color: direct index for structure ( temp 4-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 direct index (layout( location=1) in 4-component vector of float) 0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float) 0:63 Constant: 0:63 2 (const int) 0:63 move second child to first child ( temp uint) 0:? 'pointId' ( temp uint) 0:? 'pointId' ( in uint InvocationID) 0:63 move second child to first child ( temp uint) 0:? 'patchId' ( temp uint) 0:? 'patchId' ( in uint PrimitiveID) 0:63 Sequence 0:63 move second child to first child ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Function Call: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'pointId' ( temp uint) 0:? 'patchId' ( temp uint) 0:63 move second child to first child ( temp 3-component vector of float) 0:63 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'pointId' ( in uint InvocationID) 0:63 position: direct index for structure ( temp 3-component vector of float) 0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 0 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 indirect index (layout( location=1) out 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float) 0:? 'pointId' ( in uint InvocationID) 0:63 color: direct index for structure ( temp 4-component vector of float) 0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 1 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'pointId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patchId' ( in uint PrimitiveID) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? inside: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:? '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float) 0:? '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float) 0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float) 0:? 'pointId' ( in uint InvocationID) 0:? 'patchId' ( in uint PrimitiveID) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) Linked tessellation control stage: Shader version: 500 vertices = 3 vertex spacing = equal_spacing triangle order = cw 0:? Sequence 0:37 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:37 Function Parameters: 0:37 'inputPatch' ( in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:37 'patchId' ( in uint) 0:? Sequence 0:42 move second child to first child ( temp float) 0:42 direct index ( temp float) 0:42 edges: direct index for structure ( temp 3-element array of float) 0:42 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 tessellationAmount: direct index for structure (layout( row_major std140) uniform float) 0:42 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:42 Constant: 0:42 0 (const uint) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 edges: direct index for structure ( temp 3-element array of float) 0:43 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 1 (const int) 0:43 tessellationAmount: direct index for structure (layout( row_major std140) uniform float) 0:43 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:43 Constant: 0:43 0 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 edges: direct index for structure ( temp 3-element array of float) 0:44 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 tessellationAmount: direct index for structure (layout( row_major std140) uniform float) 0:44 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:44 Constant: 0:44 0 (const uint) 0:47 move second child to first child ( temp float) 0:47 inside: direct index for structure ( temp float) 0:47 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:47 Constant: 0:47 1 (const int) 0:47 tessellationAmount: direct index for structure (layout( row_major std140) uniform float) 0:47 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:47 Constant: 0:47 0 (const uint) 0:49 Branch: Return with expression 0:49 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:63 Function Definition: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Function Parameters: 0:63 'patch' ( in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 'pointId' ( in uint) 0:63 'patchId' ( in uint) 0:? Sequence 0:67 move second child to first child ( temp 3-component vector of float) 0:67 position: direct index for structure ( temp 3-component vector of float) 0:67 'output' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:67 Constant: 0:67 0 (const int) 0:67 position: direct index for structure ( temp 3-component vector of float) 0:67 indirect index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:67 'patch' ( in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:67 'pointId' ( in uint) 0:67 Constant: 0:67 0 (const int) 0:70 move second child to first child ( temp 4-component vector of float) 0:70 color: direct index for structure ( temp 4-component vector of float) 0:70 'output' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:70 Constant: 0:70 1 (const int) 0:70 color: direct index for structure ( temp 4-component vector of float) 0:70 indirect index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:70 'patch' ( in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:70 'pointId' ( in uint) 0:70 Constant: 0:70 1 (const int) 0:72 Branch: Return with expression 0:72 'output' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Function Definition: main( ( temp void) 0:63 Function Parameters: 0:? Sequence 0:63 Sequence 0:63 move second child to first child ( temp 3-component vector of float) 0:63 position: direct index for structure ( temp 3-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 color: direct index for structure ( temp 4-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 direct index (layout( location=1) in 4-component vector of float) 0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:63 move second child to first child ( temp 3-component vector of float) 0:63 position: direct index for structure ( temp 3-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float) 0:63 Constant: 0:63 1 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 color: direct index for structure ( temp 4-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 direct index (layout( location=1) in 4-component vector of float) 0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float) 0:63 Constant: 0:63 1 (const int) 0:63 move second child to first child ( temp 3-component vector of float) 0:63 position: direct index for structure ( temp 3-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 0 (const int) 0:63 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float) 0:63 Constant: 0:63 2 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 color: direct index for structure ( temp 4-component vector of float) 0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 2 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 direct index (layout( location=1) in 4-component vector of float) 0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float) 0:63 Constant: 0:63 2 (const int) 0:63 move second child to first child ( temp uint) 0:? 'pointId' ( temp uint) 0:? 'pointId' ( in uint InvocationID) 0:63 move second child to first child ( temp uint) 0:? 'patchId' ( temp uint) 0:? 'patchId' ( in uint PrimitiveID) 0:63 Sequence 0:63 move second child to first child ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Function Call: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'pointId' ( temp uint) 0:? 'patchId' ( temp uint) 0:63 move second child to first child ( temp 3-component vector of float) 0:63 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'pointId' ( in uint InvocationID) 0:63 position: direct index for structure ( temp 3-component vector of float) 0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 0 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 indirect index (layout( location=1) out 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float) 0:? 'pointId' ( in uint InvocationID) 0:63 color: direct index for structure ( temp 4-component vector of float) 0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Constant: 0:63 1 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'pointId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patchId' ( in uint PrimitiveID) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? inside: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:? '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float) 0:? '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float) 0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float) 0:? 'pointId' ( in uint InvocationID) 0:? 'patchId' ( in uint PrimitiveID) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 159 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 73 80 99 102 113 120 142 155 ExecutionMode 4 OutputVertices 3 ExecutionMode 4 Triangles ExecutionMode 4 SpacingEqual ExecutionMode 4 VertexOrderCw Source HLSL 500 Name 4 "main" Name 9 "HullInputType" MemberName 9(HullInputType) 0 "position" MemberName 9(HullInputType) 1 "color" Name 16 "ConstantOutputType" MemberName 16(ConstantOutputType) 0 "edges" MemberName 16(ConstantOutputType) 1 "inside" Name 20 "ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;" Name 18 "inputPatch" Name 19 "patchId" Name 22 "HullOutputType" MemberName 22(HullOutputType) 0 "position" MemberName 22(HullOutputType) 1 "color" Name 27 "@main(struct-HullInputType-vf3-vf41[3];u1;u1;" Name 24 "patch" Name 25 "pointId" Name 26 "patchId" Name 30 "output" Name 33 "TessellationBuffer" MemberName 33(TessellationBuffer) 0 "tessellationAmount" MemberName 33(TessellationBuffer) 1 "padding" Name 35 "" Name 56 "output" Name 70 "patch" Name 73 "patch.position" Name 80 "patch.color" Name 97 "pointId" Name 99 "pointId" Name 101 "patchId" Name 102 "patchId" Name 104 "flattenTemp" Name 105 "param" Name 107 "param" Name 109 "param" Name 113 "@entryPointOutput.position" Name 120 "@entryPointOutput.color" Name 134 "@patchConstantResult" Name 135 "param" Name 137 "param" Name 142 "@patchConstantOutput.edges" Name 155 "@patchConstantOutput.inside" Decorate 33(TessellationBuffer) Block MemberDecorate 33(TessellationBuffer) 0 Offset 0 MemberDecorate 33(TessellationBuffer) 1 Offset 4 Decorate 35 Binding 0 Decorate 35 DescriptorSet 0 Decorate 73(patch.position) Location 0 Decorate 80(patch.color) Location 1 Decorate 99(pointId) BuiltIn InvocationId Decorate 102(patchId) BuiltIn PrimitiveId Decorate 113(@entryPointOutput.position) Location 0 Decorate 120(@entryPointOutput.color) Location 1 Decorate 142(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 142(@patchConstantOutput.edges) Patch Decorate 155(@patchConstantOutput.inside) BuiltIn TessLevelInner Decorate 155(@patchConstantOutput.inside) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeVector 6(float) 4 9(HullInputType): TypeStruct 7(fvec3) 8(fvec4) 10: TypeInt 32 0 11: 10(int) Constant 3 12: TypeArray 9(HullInputType) 11 13: TypePointer Function 12 14: TypePointer Function 10(int) 15: TypeArray 6(float) 11 16(ConstantOutputType): TypeStruct 15 6(float) 17: TypeFunction 16(ConstantOutputType) 13(ptr) 14(ptr) 22(HullOutputType): TypeStruct 7(fvec3) 8(fvec4) 23: TypeFunction 22(HullOutputType) 13(ptr) 14(ptr) 14(ptr) 29: TypePointer Function 16(ConstantOutputType) 31: TypeInt 32 1 32: 31(int) Constant 0 33(TessellationBuffer): TypeStruct 6(float) 7(fvec3) 34: TypePointer Uniform 33(TessellationBuffer) 35: 34(ptr) Variable Uniform 36: TypePointer Uniform 6(float) 39: TypePointer Function 6(float) 41: 31(int) Constant 1 45: 31(int) Constant 2 55: TypePointer Function 22(HullOutputType) 58: TypePointer Function 7(fvec3) 63: TypePointer Function 8(fvec4) 71: TypeArray 7(fvec3) 11 72: TypePointer Input 71 73(patch.position): 72(ptr) Variable Input 74: TypePointer Input 7(fvec3) 78: TypeArray 8(fvec4) 11 79: TypePointer Input 78 80(patch.color): 79(ptr) Variable Input 81: TypePointer Input 8(fvec4) 98: TypePointer Input 10(int) 99(pointId): 98(ptr) Variable Input 102(patchId): 98(ptr) Variable Input 112: TypePointer Output 71 113(@entryPointOutput.position): 112(ptr) Variable Output 117: TypePointer Output 7(fvec3) 119: TypePointer Output 78 120(@entryPointOutput.color): 119(ptr) Variable Output 124: TypePointer Output 8(fvec4) 126: 10(int) Constant 2 127: 10(int) Constant 4 128: 10(int) Constant 0 130: TypeBool 140: TypeArray 6(float) 127 141: TypePointer Output 140 142(@patchConstantOutput.edges): 141(ptr) Variable Output 145: TypePointer Output 6(float) 153: TypeArray 6(float) 126 154: TypePointer Output 153 155(@patchConstantOutput.inside): 154(ptr) Variable Output 4(main): 2 Function None 3 5: Label 70(patch): 13(ptr) Variable Function 97(pointId): 14(ptr) Variable Function 101(patchId): 14(ptr) Variable Function 104(flattenTemp): 55(ptr) Variable Function 105(param): 13(ptr) Variable Function 107(param): 14(ptr) Variable Function 109(param): 14(ptr) Variable Function 134(@patchConstantResult): 29(ptr) Variable Function 135(param): 13(ptr) Variable Function 137(param): 14(ptr) Variable Function 75: 74(ptr) AccessChain 73(patch.position) 32 76: 7(fvec3) Load 75 77: 58(ptr) AccessChain 70(patch) 32 32 Store 77 76 82: 81(ptr) AccessChain 80(patch.color) 32 83: 8(fvec4) Load 82 84: 63(ptr) AccessChain 70(patch) 32 41 Store 84 83 85: 74(ptr) AccessChain 73(patch.position) 41 86: 7(fvec3) Load 85 87: 58(ptr) AccessChain 70(patch) 41 32 Store 87 86 88: 81(ptr) AccessChain 80(patch.color) 41 89: 8(fvec4) Load 88 90: 63(ptr) AccessChain 70(patch) 41 41 Store 90 89 91: 74(ptr) AccessChain 73(patch.position) 45 92: 7(fvec3) Load 91 93: 58(ptr) AccessChain 70(patch) 45 32 Store 93 92 94: 81(ptr) AccessChain 80(patch.color) 45 95: 8(fvec4) Load 94 96: 63(ptr) AccessChain 70(patch) 45 41 Store 96 95 100: 10(int) Load 99(pointId) Store 97(pointId) 100 103: 10(int) Load 102(patchId) Store 101(patchId) 103 106: 12 Load 70(patch) Store 105(param) 106 108: 10(int) Load 97(pointId) Store 107(param) 108 110: 10(int) Load 101(patchId) Store 109(param) 110 111:22(HullOutputType) FunctionCall 27(@main(struct-HullInputType-vf3-vf41[3];u1;u1;) 105(param) 107(param) 109(param) Store 104(flattenTemp) 111 114: 10(int) Load 99(pointId) 115: 58(ptr) AccessChain 104(flattenTemp) 32 116: 7(fvec3) Load 115 118: 117(ptr) AccessChain 113(@entryPointOutput.position) 114 Store 118 116 121: 10(int) Load 99(pointId) 122: 63(ptr) AccessChain 104(flattenTemp) 41 123: 8(fvec4) Load 122 125: 124(ptr) AccessChain 120(@entryPointOutput.color) 121 Store 125 123 ControlBarrier 126 127 128 129: 10(int) Load 99(pointId) 131: 130(bool) IEqual 129 32 SelectionMerge 133 None BranchConditional 131 132 133 132: Label 136: 12 Load 70(patch) Store 135(param) 136 138: 10(int) Load 102(patchId) Store 137(param) 138 139:16(ConstantOutputType) FunctionCall 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;) 135(param) 137(param) Store 134(@patchConstantResult) 139 143: 39(ptr) AccessChain 134(@patchConstantResult) 32 32 144: 6(float) Load 143 146: 145(ptr) AccessChain 142(@patchConstantOutput.edges) 32 Store 146 144 147: 39(ptr) AccessChain 134(@patchConstantResult) 32 41 148: 6(float) Load 147 149: 145(ptr) AccessChain 142(@patchConstantOutput.edges) 41 Store 149 148 150: 39(ptr) AccessChain 134(@patchConstantResult) 32 45 151: 6(float) Load 150 152: 145(ptr) AccessChain 142(@patchConstantOutput.edges) 45 Store 152 151 156: 39(ptr) AccessChain 134(@patchConstantResult) 41 157: 6(float) Load 156 158: 145(ptr) AccessChain 155(@patchConstantOutput.inside) 32 Store 158 157 Branch 133 133: Label Return FunctionEnd 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;):16(ConstantOutputType) Function None 17 18(inputPatch): 13(ptr) FunctionParameter 19(patchId): 14(ptr) FunctionParameter 21: Label 30(output): 29(ptr) Variable Function 37: 36(ptr) AccessChain 35 32 38: 6(float) Load 37 40: 39(ptr) AccessChain 30(output) 32 32 Store 40 38 42: 36(ptr) AccessChain 35 32 43: 6(float) Load 42 44: 39(ptr) AccessChain 30(output) 32 41 Store 44 43 46: 36(ptr) AccessChain 35 32 47: 6(float) Load 46 48: 39(ptr) AccessChain 30(output) 32 45 Store 48 47 49: 36(ptr) AccessChain 35 32 50: 6(float) Load 49 51: 39(ptr) AccessChain 30(output) 41 Store 51 50 52:16(ConstantOutputType) Load 30(output) ReturnValue 52 FunctionEnd 27(@main(struct-HullInputType-vf3-vf41[3];u1;u1;):22(HullOutputType) Function None 23 24(patch): 13(ptr) FunctionParameter 25(pointId): 14(ptr) FunctionParameter 26(patchId): 14(ptr) FunctionParameter 28: Label 56(output): 55(ptr) Variable Function 57: 10(int) Load 25(pointId) 59: 58(ptr) AccessChain 24(patch) 57 32 60: 7(fvec3) Load 59 61: 58(ptr) AccessChain 56(output) 32 Store 61 60 62: 10(int) Load 25(pointId) 64: 63(ptr) AccessChain 24(patch) 62 41 65: 8(fvec4) Load 64 66: 63(ptr) AccessChain 56(output) 41 Store 66 65 67:22(HullOutputType) Load 56(output) ReturnValue 67 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.comparison.vec.frag.out000066400000000000000000000472231506534232700240150ustar00rootroot00000000000000hlsl.comparison.vec.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: Bug1(vf4; ( temp void) 0:4 Function Parameters: 0:4 'a' ( in 4-component vector of float) 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'v04' ( temp 4-component vector of float) 0:5 Constant: 0:5 0.000000 0:5 0.000000 0:5 0.000000 0:5 0.000000 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'v01' ( temp float) 0:6 Constant: 0:6 0.000000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of bool) 0:8 'r00' ( temp 4-component vector of bool) 0:8 Equal ( temp 4-component vector of bool) 0:8 'a' ( in 4-component vector of float) 0:8 'v04' ( temp 4-component vector of float) 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of bool) 0:9 'r01' ( temp 4-component vector of bool) 0:9 NotEqual ( temp 4-component vector of bool) 0:9 'a' ( in 4-component vector of float) 0:9 'v04' ( temp 4-component vector of float) 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of bool) 0:10 'r02' ( temp 4-component vector of bool) 0:10 Compare Less Than ( temp 4-component vector of bool) 0:10 'a' ( in 4-component vector of float) 0:10 'v04' ( temp 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of bool) 0:11 'r03' ( temp 4-component vector of bool) 0:11 Compare Greater Than ( temp 4-component vector of bool) 0:11 'a' ( in 4-component vector of float) 0:11 'v04' ( temp 4-component vector of float) 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of bool) 0:13 'r10' ( temp 4-component vector of bool) 0:13 Equal ( temp 4-component vector of bool) 0:13 'a' ( in 4-component vector of float) 0:13 Construct vec4 ( in 4-component vector of float) 0:13 'v01' ( temp float) 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of bool) 0:14 'r11' ( temp 4-component vector of bool) 0:14 NotEqual ( temp 4-component vector of bool) 0:14 'a' ( in 4-component vector of float) 0:14 Construct vec4 ( in 4-component vector of float) 0:14 'v01' ( temp float) 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of bool) 0:15 'r12' ( temp 4-component vector of bool) 0:15 Compare Less Than ( temp 4-component vector of bool) 0:15 'a' ( in 4-component vector of float) 0:15 Construct vec4 ( in 4-component vector of float) 0:15 'v01' ( temp float) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of bool) 0:16 'r13' ( temp 4-component vector of bool) 0:16 Compare Greater Than ( temp 4-component vector of bool) 0:16 'a' ( in 4-component vector of float) 0:16 Construct vec4 ( in 4-component vector of float) 0:16 'v01' ( temp float) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of bool) 0:18 'r20' ( temp 4-component vector of bool) 0:18 Equal ( temp 4-component vector of bool) 0:18 Construct vec4 ( in 4-component vector of float) 0:18 'v01' ( temp float) 0:18 'a' ( in 4-component vector of float) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of bool) 0:19 'r21' ( temp 4-component vector of bool) 0:19 NotEqual ( temp 4-component vector of bool) 0:19 Construct vec4 ( in 4-component vector of float) 0:19 'v01' ( temp float) 0:19 'a' ( in 4-component vector of float) 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of bool) 0:20 'r22' ( temp 4-component vector of bool) 0:20 Compare Less Than ( temp 4-component vector of bool) 0:20 Construct vec4 ( in 4-component vector of float) 0:20 'v01' ( temp float) 0:20 'a' ( in 4-component vector of float) 0:21 Sequence 0:21 move second child to first child ( temp 4-component vector of bool) 0:21 'r23' ( temp 4-component vector of bool) 0:21 Compare Greater Than ( temp 4-component vector of bool) 0:21 Construct vec4 ( in 4-component vector of float) 0:21 'v01' ( temp float) 0:21 'a' ( in 4-component vector of float) 0:30 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:30 Function Parameters: 0:? Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 Color: direct index for structure ( temp 4-component vector of float) 0:32 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:33 Branch: Return with expression 0:33 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:30 Function Definition: main( ( temp void) 0:30 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:30 Color: direct index for structure ( temp 4-component vector of float) 0:30 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:30 Constant: 0:30 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: Bug1(vf4; ( temp void) 0:4 Function Parameters: 0:4 'a' ( in 4-component vector of float) 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'v04' ( temp 4-component vector of float) 0:5 Constant: 0:5 0.000000 0:5 0.000000 0:5 0.000000 0:5 0.000000 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'v01' ( temp float) 0:6 Constant: 0:6 0.000000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of bool) 0:8 'r00' ( temp 4-component vector of bool) 0:8 Equal ( temp 4-component vector of bool) 0:8 'a' ( in 4-component vector of float) 0:8 'v04' ( temp 4-component vector of float) 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of bool) 0:9 'r01' ( temp 4-component vector of bool) 0:9 NotEqual ( temp 4-component vector of bool) 0:9 'a' ( in 4-component vector of float) 0:9 'v04' ( temp 4-component vector of float) 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of bool) 0:10 'r02' ( temp 4-component vector of bool) 0:10 Compare Less Than ( temp 4-component vector of bool) 0:10 'a' ( in 4-component vector of float) 0:10 'v04' ( temp 4-component vector of float) 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of bool) 0:11 'r03' ( temp 4-component vector of bool) 0:11 Compare Greater Than ( temp 4-component vector of bool) 0:11 'a' ( in 4-component vector of float) 0:11 'v04' ( temp 4-component vector of float) 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of bool) 0:13 'r10' ( temp 4-component vector of bool) 0:13 Equal ( temp 4-component vector of bool) 0:13 'a' ( in 4-component vector of float) 0:13 Construct vec4 ( in 4-component vector of float) 0:13 'v01' ( temp float) 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of bool) 0:14 'r11' ( temp 4-component vector of bool) 0:14 NotEqual ( temp 4-component vector of bool) 0:14 'a' ( in 4-component vector of float) 0:14 Construct vec4 ( in 4-component vector of float) 0:14 'v01' ( temp float) 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of bool) 0:15 'r12' ( temp 4-component vector of bool) 0:15 Compare Less Than ( temp 4-component vector of bool) 0:15 'a' ( in 4-component vector of float) 0:15 Construct vec4 ( in 4-component vector of float) 0:15 'v01' ( temp float) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of bool) 0:16 'r13' ( temp 4-component vector of bool) 0:16 Compare Greater Than ( temp 4-component vector of bool) 0:16 'a' ( in 4-component vector of float) 0:16 Construct vec4 ( in 4-component vector of float) 0:16 'v01' ( temp float) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of bool) 0:18 'r20' ( temp 4-component vector of bool) 0:18 Equal ( temp 4-component vector of bool) 0:18 Construct vec4 ( in 4-component vector of float) 0:18 'v01' ( temp float) 0:18 'a' ( in 4-component vector of float) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of bool) 0:19 'r21' ( temp 4-component vector of bool) 0:19 NotEqual ( temp 4-component vector of bool) 0:19 Construct vec4 ( in 4-component vector of float) 0:19 'v01' ( temp float) 0:19 'a' ( in 4-component vector of float) 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of bool) 0:20 'r22' ( temp 4-component vector of bool) 0:20 Compare Less Than ( temp 4-component vector of bool) 0:20 Construct vec4 ( in 4-component vector of float) 0:20 'v01' ( temp float) 0:20 'a' ( in 4-component vector of float) 0:21 Sequence 0:21 move second child to first child ( temp 4-component vector of bool) 0:21 'r23' ( temp 4-component vector of bool) 0:21 Compare Greater Than ( temp 4-component vector of bool) 0:21 Construct vec4 ( in 4-component vector of float) 0:21 'v01' ( temp float) 0:21 'a' ( in 4-component vector of float) 0:30 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:30 Function Parameters: 0:? Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 Color: direct index for structure ( temp 4-component vector of float) 0:32 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:33 Branch: Return with expression 0:33 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:30 Function Definition: main( ( temp void) 0:30 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:30 Color: direct index for structure ( temp 4-component vector of float) 0:30 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:30 Constant: 0:30 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 96 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 90 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "Bug1(vf4;" Name 10 "a" Name 13 "PS_OUTPUT" MemberName 13(PS_OUTPUT) 0 "Color" Name 15 "@main(" Name 17 "v04" Name 21 "v01" Name 25 "r00" Name 29 "r01" Name 33 "r02" Name 37 "r03" Name 41 "r10" Name 46 "r11" Name 51 "r12" Name 56 "r13" Name 61 "r20" Name 66 "r21" Name 71 "r22" Name 76 "r23" Name 82 "psout" Name 90 "@entryPointOutput.Color" Name 93 "$Global" MemberName 93($Global) 0 "uf4" Name 95 "" Decorate 90(@entryPointOutput.Color) Location 0 Decorate 93($Global) Block MemberDecorate 93($Global) 0 Offset 0 Decorate 95 Binding 0 Decorate 95 DescriptorSet 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(PS_OUTPUT): TypeStruct 7(fvec4) 14: TypeFunction 13(PS_OUTPUT) 18: 6(float) Constant 0 19: 7(fvec4) ConstantComposite 18 18 18 18 20: TypePointer Function 6(float) 22: TypeBool 23: TypeVector 22(bool) 4 24: TypePointer Function 23(bvec4) 81: TypePointer Function 13(PS_OUTPUT) 83: TypeInt 32 1 84: 83(int) Constant 0 89: TypePointer Output 7(fvec4) 90(@entryPointOutput.Color): 89(ptr) Variable Output 93($Global): TypeStruct 7(fvec4) 94: TypePointer Uniform 93($Global) 95: 94(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 91:13(PS_OUTPUT) FunctionCall 15(@main() 92: 7(fvec4) CompositeExtract 91 0 Store 90(@entryPointOutput.Color) 92 Return FunctionEnd 11(Bug1(vf4;): 2 Function None 9 10(a): 8(ptr) FunctionParameter 12: Label 17(v04): 8(ptr) Variable Function 21(v01): 20(ptr) Variable Function 25(r00): 24(ptr) Variable Function 29(r01): 24(ptr) Variable Function 33(r02): 24(ptr) Variable Function 37(r03): 24(ptr) Variable Function 41(r10): 24(ptr) Variable Function 46(r11): 24(ptr) Variable Function 51(r12): 24(ptr) Variable Function 56(r13): 24(ptr) Variable Function 61(r20): 24(ptr) Variable Function 66(r21): 24(ptr) Variable Function 71(r22): 24(ptr) Variable Function 76(r23): 24(ptr) Variable Function Store 17(v04) 19 Store 21(v01) 18 26: 7(fvec4) Load 10(a) 27: 7(fvec4) Load 17(v04) 28: 23(bvec4) FOrdEqual 26 27 Store 25(r00) 28 30: 7(fvec4) Load 10(a) 31: 7(fvec4) Load 17(v04) 32: 23(bvec4) FUnordNotEqual 30 31 Store 29(r01) 32 34: 7(fvec4) Load 10(a) 35: 7(fvec4) Load 17(v04) 36: 23(bvec4) FOrdLessThan 34 35 Store 33(r02) 36 38: 7(fvec4) Load 10(a) 39: 7(fvec4) Load 17(v04) 40: 23(bvec4) FOrdGreaterThan 38 39 Store 37(r03) 40 42: 7(fvec4) Load 10(a) 43: 6(float) Load 21(v01) 44: 7(fvec4) CompositeConstruct 43 43 43 43 45: 23(bvec4) FOrdEqual 42 44 Store 41(r10) 45 47: 7(fvec4) Load 10(a) 48: 6(float) Load 21(v01) 49: 7(fvec4) CompositeConstruct 48 48 48 48 50: 23(bvec4) FUnordNotEqual 47 49 Store 46(r11) 50 52: 7(fvec4) Load 10(a) 53: 6(float) Load 21(v01) 54: 7(fvec4) CompositeConstruct 53 53 53 53 55: 23(bvec4) FOrdLessThan 52 54 Store 51(r12) 55 57: 7(fvec4) Load 10(a) 58: 6(float) Load 21(v01) 59: 7(fvec4) CompositeConstruct 58 58 58 58 60: 23(bvec4) FOrdGreaterThan 57 59 Store 56(r13) 60 62: 6(float) Load 21(v01) 63: 7(fvec4) CompositeConstruct 62 62 62 62 64: 7(fvec4) Load 10(a) 65: 23(bvec4) FOrdEqual 63 64 Store 61(r20) 65 67: 6(float) Load 21(v01) 68: 7(fvec4) CompositeConstruct 67 67 67 67 69: 7(fvec4) Load 10(a) 70: 23(bvec4) FUnordNotEqual 68 69 Store 66(r21) 70 72: 6(float) Load 21(v01) 73: 7(fvec4) CompositeConstruct 72 72 72 72 74: 7(fvec4) Load 10(a) 75: 23(bvec4) FOrdLessThan 73 74 Store 71(r22) 75 77: 6(float) Load 21(v01) 78: 7(fvec4) CompositeConstruct 77 77 77 77 79: 7(fvec4) Load 10(a) 80: 23(bvec4) FOrdGreaterThan 78 79 Store 76(r23) 80 Return FunctionEnd 15(@main():13(PS_OUTPUT) Function None 14 16: Label 82(psout): 81(ptr) Variable Function 85: 8(ptr) AccessChain 82(psout) 84 Store 85 19 86:13(PS_OUTPUT) Load 82(psout) ReturnValue 86 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.conditional.frag.out000066400000000000000000001431551506534232700233730ustar00rootroot00000000000000hlsl.conditional.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: vectorCond( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence 0:12 Branch: Return with expression 0:11 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 mix ( temp 4-component vector of float) 0:9 f4: direct index for structure ( uniform 4-component vector of float) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:9 Constant: 0:9 2 (const uint) 0:9 t4: direct index for structure ( uniform 4-component vector of float) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:9 Constant: 0:9 1 (const uint) 0:9 Convert float to bool ( temp 4-component vector of bool) 0:9 c4: direct index for structure ( uniform 4-component vector of float) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:9 Constant: 0:9 0 (const uint) 0:10 mix ( temp 4-component vector of float) 0:10 Construct vec4 ( temp 4-component vector of float) 0:10 f: direct index for structure ( uniform float) 0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:10 Constant: 0:10 4 (const uint) 0:10 Construct vec4 ( temp 4-component vector of float) 0:10 t: direct index for structure ( uniform float) 0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:10 Constant: 0:10 3 (const uint) 0:10 Convert float to bool ( temp 4-component vector of bool) 0:10 c4: 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 c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:10 Constant: 0:10 0 (const uint) 0:11 mix ( temp 4-component vector of float) 0:11 f4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 2 (const uint) 0:11 t4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 1 (const uint) 0:11 Compare Less Than ( temp 4-component vector of bool) 0:11 t4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 1 (const uint) 0:11 f4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 2 (const uint) 0:12 mix ( temp 4-component vector of float) 0:12 f4: direct index for structure ( uniform 4-component vector of float) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:12 Constant: 0:12 2 (const uint) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 t: direct index for structure ( uniform float) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:12 Constant: 0:12 3 (const uint) 0:12 Convert float to bool ( temp 4-component vector of bool) 0:12 c4: direct index for structure ( uniform 4-component vector of float) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:12 Constant: 0:12 0 (const uint) 0:16 Function Definition: scalarCond( ( temp 4-component vector of float) 0:16 Function Parameters: 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'ret' ( temp 4-component vector of float) 0:17 Test condition and select ( temp 4-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Not Equal ( temp bool) 0:17 t: direct index for structure ( uniform float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:17 Constant: 0:17 3 (const uint) 0:17 f: direct index for structure ( uniform float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:17 Constant: 0:17 4 (const uint) 0:17 true case 0:17 vector-scale ( temp 4-component vector of float) 0:17 t: direct index for structure ( uniform float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:17 Constant: 0:17 3 (const uint) 0:17 f4: 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 c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:17 Constant: 0:17 2 (const uint) 0:17 false case 0:17 Constant: 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:18 Branch: Return with expression 0:18 'ret' ( temp 4-component vector of float) 0:22 Function Definition: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) 0:22 Function Parameters: 0:22 'cnd' ( in 2-component vector of bool) 0:22 'src0' ( in 2-component vector of float) 0:22 'src1' ( in 2-component vector of float) 0:? Sequence 0:23 Branch: Return with expression 0:23 mix ( temp 2-component vector of float) 0:23 'src1' ( in 2-component vector of float) 0:23 'src0' ( in 2-component vector of float) 0:23 'cnd' ( in 2-component vector of bool) 0:27 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:27 Function Parameters: 0:27 'input' ( in 4-component vector of float) 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'a' ( temp int) 0:28 Constant: 0:28 5 (const int) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'b' ( temp int) 0:29 Constant: 0:29 6 (const int) 0:30 Sequence 0:30 move second child to first child ( temp int) 0:30 'c' ( temp int) 0:30 Constant: 0:30 7 (const int) 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'd' ( temp int) 0:31 Constant: 0:31 7 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'ret' ( temp 4-component vector of float) 0:34 add ( temp 4-component vector of float) 0:33 add ( temp 4-component vector of float) 0:32 add ( temp 4-component vector of float) 0:32 vector-scale ( temp 4-component vector of float) 0:32 Convert int to float ( temp float) 0:32 'a' ( temp int) 0:32 'input' ( in 4-component vector of float) 0:33 vector-scale ( temp 4-component vector of float) 0:33 Convert int to float ( temp float) 0:33 'b' ( temp int) 0:33 'input' ( in 4-component vector of float) 0:34 vector-scale ( temp 4-component vector of float) 0:34 Convert int to float ( temp float) 0:34 'c' ( temp int) 0:34 'input' ( in 4-component vector of float) 0:35 vector-scale ( temp 4-component vector of float) 0:35 Convert int to float ( temp float) 0:35 'd' ( temp int) 0:35 'input' ( in 4-component vector of float) 0:37 Comma ( temp int) 0:37 move second child to first child ( temp int) 0:37 'e' ( temp int) 0:37 move second child to first child ( temp int) 0:37 'a' ( temp int) 0:37 Test condition and select ( temp int): no shortcircuit 0:37 Condition 0:37 Convert int to bool ( temp bool) 0:37 'b' ( temp int) 0:37 true case 0:37 move second child to first child ( temp int) 0:37 'c' ( temp int) 0:37 'd' ( temp int) 0:37 false case 0:37 Constant: 0:37 10 (const int) 0:37 move second child to first child ( temp int) 0:37 'b' ( temp int) 0:37 Test condition and select ( temp int): no shortcircuit 0:37 Condition 0:37 Convert int to bool ( temp bool) 0:37 'a' ( temp int) 0:37 true case 0:37 move second child to first child ( temp int) 0:37 'd' ( temp int) 0:37 'c' ( temp int) 0:37 false case 0:37 Constant: 0:37 11 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'f' ( temp 4-component vector of float) 0:39 Test condition and select ( temp 4-component vector of float): no shortcircuit 0:39 Condition 0:39 Compare Less Than ( temp bool) 0:39 direct index ( temp float) 0:39 'ret' ( temp 4-component vector of float) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( temp float) 0:39 'input' ( in 4-component vector of float) 0:39 Constant: 0:39 1 (const int) 0:39 true case 0:39 vector-scale ( temp 4-component vector of float) 0:39 Convert int to float ( temp float) 0:39 'c' ( temp int) 0:39 'input' ( in 4-component vector of float) 0:39 false case 0:39 vector-scale ( temp 4-component vector of float) 0:39 Convert int to float ( temp float) 0:39 'd' ( temp int) 0:39 'input' ( in 4-component vector of float) 0:40 Sequence 0:40 move second child to first child ( temp uint) 0:40 'g' ( temp uint) 0:40 Test condition and select ( temp uint): no shortcircuit 0:40 Condition 0:40 Compare Greater Than ( temp bool) 0:40 Convert int to float ( temp float) 0:40 'd' ( temp int) 0:40 Constant: 0:40 0.000000 0:40 true case 0:40 Constant: 0:40 21 (const uint) 0:40 false case 0:40 Constant: 0:40 0 (const uint) 0:41 Sequence 0:41 move second child to first child ( temp uint) 0:41 'h' ( temp uint) 0:41 Test condition and select ( temp uint): no shortcircuit 0:41 Condition 0:41 Compare Greater Than ( temp bool) 0:41 Convert uint to float ( temp float) 0:41 'g' ( temp uint) 0:41 Constant: 0:41 0.000000 0:41 true case 0:41 Constant: 0:41 63 (const uint) 0:41 false case 0:41 Constant: 0:41 0 (const uint) 0:42 Sequence 0:42 move second child to first child ( temp uint) 0:42 'i' ( temp uint) 0:42 Test condition and select ( temp uint): no shortcircuit 0:42 Condition 0:42 Compare Greater Than ( temp bool) 0:42 Convert uint to float ( temp float) 0:42 'h' ( temp uint) 0:42 Constant: 0:42 0.000000 0:42 true case 0:42 Constant: 0:42 5 (const uint) 0:42 false case 0:42 Constant: 0:42 1 (const uint) 0:43 Sequence 0:43 move second child to first child ( temp uint) 0:43 'j' ( temp uint) 0:43 Convert int to uint ( temp uint) 0:43 Test condition and select ( temp int): no shortcircuit 0:43 Condition 0:43 Compare Greater Than ( temp bool) 0:43 Convert uint to float ( temp float) 0:43 'i' ( temp uint) 0:43 Constant: 0:43 0.000000 0:43 true case 0:43 Constant: 0:43 43981 (const int) 0:43 false case 0:43 Constant: 0:43 48346 (const int) 0:45 Branch: Return with expression 0:44 add ( temp 4-component vector of float) 0:44 add ( temp 4-component vector of float) 0:44 add ( temp 4-component vector of float) 0:44 add ( temp 4-component vector of float) 0:44 vector-scale ( temp 4-component vector of float) 0:44 Convert int to float ( temp float) 0:44 'e' ( temp int) 0:44 'ret' ( temp 4-component vector of float) 0:44 'f' ( temp 4-component vector of float) 0:44 Function Call: vectorCond( ( temp 4-component vector of float) 0:44 Function Call: scalarCond( ( temp 4-component vector of float) 0:45 Construct vec4 ( temp 4-component vector of float) 0:45 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) 0:45 Constant: 0:45 true (const bool) 0:45 false (const bool) 0:45 Constant: 0:45 1.000000 0:45 2.000000 0:45 Constant: 0:45 3.000000 0:45 4.000000 0:45 Constant: 0:45 10.000000 0:45 Constant: 0:45 10.000000 0:27 Function Definition: PixelShaderFunction( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 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:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:27 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 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:8 Function Definition: vectorCond( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence 0:12 Branch: Return with expression 0:11 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 mix ( temp 4-component vector of float) 0:9 f4: direct index for structure ( uniform 4-component vector of float) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:9 Constant: 0:9 2 (const uint) 0:9 t4: direct index for structure ( uniform 4-component vector of float) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:9 Constant: 0:9 1 (const uint) 0:9 Convert float to bool ( temp 4-component vector of bool) 0:9 c4: direct index for structure ( uniform 4-component vector of float) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:9 Constant: 0:9 0 (const uint) 0:10 mix ( temp 4-component vector of float) 0:10 Construct vec4 ( temp 4-component vector of float) 0:10 f: direct index for structure ( uniform float) 0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:10 Constant: 0:10 4 (const uint) 0:10 Construct vec4 ( temp 4-component vector of float) 0:10 t: direct index for structure ( uniform float) 0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:10 Constant: 0:10 3 (const uint) 0:10 Convert float to bool ( temp 4-component vector of bool) 0:10 c4: 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 c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:10 Constant: 0:10 0 (const uint) 0:11 mix ( temp 4-component vector of float) 0:11 f4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 2 (const uint) 0:11 t4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 1 (const uint) 0:11 Compare Less Than ( temp 4-component vector of bool) 0:11 t4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 1 (const uint) 0:11 f4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 2 (const uint) 0:12 mix ( temp 4-component vector of float) 0:12 f4: direct index for structure ( uniform 4-component vector of float) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:12 Constant: 0:12 2 (const uint) 0:12 Construct vec4 ( temp 4-component vector of float) 0:12 t: direct index for structure ( uniform float) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:12 Constant: 0:12 3 (const uint) 0:12 Convert float to bool ( temp 4-component vector of bool) 0:12 c4: direct index for structure ( uniform 4-component vector of float) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:12 Constant: 0:12 0 (const uint) 0:16 Function Definition: scalarCond( ( temp 4-component vector of float) 0:16 Function Parameters: 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'ret' ( temp 4-component vector of float) 0:17 Test condition and select ( temp 4-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Not Equal ( temp bool) 0:17 t: direct index for structure ( uniform float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:17 Constant: 0:17 3 (const uint) 0:17 f: direct index for structure ( uniform float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:17 Constant: 0:17 4 (const uint) 0:17 true case 0:17 vector-scale ( temp 4-component vector of float) 0:17 t: direct index for structure ( uniform float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:17 Constant: 0:17 3 (const uint) 0:17 f4: 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 c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:17 Constant: 0:17 2 (const uint) 0:17 false case 0:17 Constant: 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:18 Branch: Return with expression 0:18 'ret' ( temp 4-component vector of float) 0:22 Function Definition: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) 0:22 Function Parameters: 0:22 'cnd' ( in 2-component vector of bool) 0:22 'src0' ( in 2-component vector of float) 0:22 'src1' ( in 2-component vector of float) 0:? Sequence 0:23 Branch: Return with expression 0:23 mix ( temp 2-component vector of float) 0:23 'src1' ( in 2-component vector of float) 0:23 'src0' ( in 2-component vector of float) 0:23 'cnd' ( in 2-component vector of bool) 0:27 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:27 Function Parameters: 0:27 'input' ( in 4-component vector of float) 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'a' ( temp int) 0:28 Constant: 0:28 5 (const int) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'b' ( temp int) 0:29 Constant: 0:29 6 (const int) 0:30 Sequence 0:30 move second child to first child ( temp int) 0:30 'c' ( temp int) 0:30 Constant: 0:30 7 (const int) 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'd' ( temp int) 0:31 Constant: 0:31 7 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'ret' ( temp 4-component vector of float) 0:34 add ( temp 4-component vector of float) 0:33 add ( temp 4-component vector of float) 0:32 add ( temp 4-component vector of float) 0:32 vector-scale ( temp 4-component vector of float) 0:32 Convert int to float ( temp float) 0:32 'a' ( temp int) 0:32 'input' ( in 4-component vector of float) 0:33 vector-scale ( temp 4-component vector of float) 0:33 Convert int to float ( temp float) 0:33 'b' ( temp int) 0:33 'input' ( in 4-component vector of float) 0:34 vector-scale ( temp 4-component vector of float) 0:34 Convert int to float ( temp float) 0:34 'c' ( temp int) 0:34 'input' ( in 4-component vector of float) 0:35 vector-scale ( temp 4-component vector of float) 0:35 Convert int to float ( temp float) 0:35 'd' ( temp int) 0:35 'input' ( in 4-component vector of float) 0:37 Comma ( temp int) 0:37 move second child to first child ( temp int) 0:37 'e' ( temp int) 0:37 move second child to first child ( temp int) 0:37 'a' ( temp int) 0:37 Test condition and select ( temp int): no shortcircuit 0:37 Condition 0:37 Convert int to bool ( temp bool) 0:37 'b' ( temp int) 0:37 true case 0:37 move second child to first child ( temp int) 0:37 'c' ( temp int) 0:37 'd' ( temp int) 0:37 false case 0:37 Constant: 0:37 10 (const int) 0:37 move second child to first child ( temp int) 0:37 'b' ( temp int) 0:37 Test condition and select ( temp int): no shortcircuit 0:37 Condition 0:37 Convert int to bool ( temp bool) 0:37 'a' ( temp int) 0:37 true case 0:37 move second child to first child ( temp int) 0:37 'd' ( temp int) 0:37 'c' ( temp int) 0:37 false case 0:37 Constant: 0:37 11 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'f' ( temp 4-component vector of float) 0:39 Test condition and select ( temp 4-component vector of float): no shortcircuit 0:39 Condition 0:39 Compare Less Than ( temp bool) 0:39 direct index ( temp float) 0:39 'ret' ( temp 4-component vector of float) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( temp float) 0:39 'input' ( in 4-component vector of float) 0:39 Constant: 0:39 1 (const int) 0:39 true case 0:39 vector-scale ( temp 4-component vector of float) 0:39 Convert int to float ( temp float) 0:39 'c' ( temp int) 0:39 'input' ( in 4-component vector of float) 0:39 false case 0:39 vector-scale ( temp 4-component vector of float) 0:39 Convert int to float ( temp float) 0:39 'd' ( temp int) 0:39 'input' ( in 4-component vector of float) 0:40 Sequence 0:40 move second child to first child ( temp uint) 0:40 'g' ( temp uint) 0:40 Test condition and select ( temp uint): no shortcircuit 0:40 Condition 0:40 Compare Greater Than ( temp bool) 0:40 Convert int to float ( temp float) 0:40 'd' ( temp int) 0:40 Constant: 0:40 0.000000 0:40 true case 0:40 Constant: 0:40 21 (const uint) 0:40 false case 0:40 Constant: 0:40 0 (const uint) 0:41 Sequence 0:41 move second child to first child ( temp uint) 0:41 'h' ( temp uint) 0:41 Test condition and select ( temp uint): no shortcircuit 0:41 Condition 0:41 Compare Greater Than ( temp bool) 0:41 Convert uint to float ( temp float) 0:41 'g' ( temp uint) 0:41 Constant: 0:41 0.000000 0:41 true case 0:41 Constant: 0:41 63 (const uint) 0:41 false case 0:41 Constant: 0:41 0 (const uint) 0:42 Sequence 0:42 move second child to first child ( temp uint) 0:42 'i' ( temp uint) 0:42 Test condition and select ( temp uint): no shortcircuit 0:42 Condition 0:42 Compare Greater Than ( temp bool) 0:42 Convert uint to float ( temp float) 0:42 'h' ( temp uint) 0:42 Constant: 0:42 0.000000 0:42 true case 0:42 Constant: 0:42 5 (const uint) 0:42 false case 0:42 Constant: 0:42 1 (const uint) 0:43 Sequence 0:43 move second child to first child ( temp uint) 0:43 'j' ( temp uint) 0:43 Convert int to uint ( temp uint) 0:43 Test condition and select ( temp int): no shortcircuit 0:43 Condition 0:43 Compare Greater Than ( temp bool) 0:43 Convert uint to float ( temp float) 0:43 'i' ( temp uint) 0:43 Constant: 0:43 0.000000 0:43 true case 0:43 Constant: 0:43 43981 (const int) 0:43 false case 0:43 Constant: 0:43 48346 (const int) 0:45 Branch: Return with expression 0:44 add ( temp 4-component vector of float) 0:44 add ( temp 4-component vector of float) 0:44 add ( temp 4-component vector of float) 0:44 add ( temp 4-component vector of float) 0:44 vector-scale ( temp 4-component vector of float) 0:44 Convert int to float ( temp float) 0:44 'e' ( temp int) 0:44 'ret' ( temp 4-component vector of float) 0:44 'f' ( temp 4-component vector of float) 0:44 Function Call: vectorCond( ( temp 4-component vector of float) 0:44 Function Call: scalarCond( ( temp 4-component vector of float) 0:45 Construct vec4 ( temp 4-component vector of float) 0:45 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) 0:45 Constant: 0:45 true (const bool) 0:45 false (const bool) 0:45 Constant: 0:45 1.000000 0:45 2.000000 0:45 Constant: 0:45 3.000000 0:45 4.000000 0:45 Constant: 0:45 10.000000 0:45 Constant: 0:45 10.000000 0:27 Function Definition: PixelShaderFunction( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 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:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:27 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 233 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 226 229 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 9 "vectorCond(" Name 11 "scalarCond(" Name 22 "fbSelect(vb2;vf2;vf2;" Name 19 "cnd" Name 20 "src0" Name 21 "src1" Name 27 "@PixelShaderFunction(vf4;" Name 26 "input" Name 29 "$Global" MemberName 29($Global) 0 "c4" MemberName 29($Global) 1 "t4" MemberName 29($Global) 2 "f4" MemberName 29($Global) 3 "t" MemberName 29($Global) 4 "f" Name 31 "" Name 85 "ret" Name 110 "a" Name 112 "b" Name 114 "c" Name 116 "d" Name 117 "ret" Name 137 "e" Name 150 "f" Name 169 "g" Name 175 "h" Name 181 "i" Name 187 "j" Name 213 "param" Name 214 "param" Name 215 "param" Name 224 "input" Name 226 "input" Name 229 "@entryPointOutput" Name 230 "param" Decorate 29($Global) Block MemberDecorate 29($Global) 0 Offset 0 MemberDecorate 29($Global) 1 Offset 16 MemberDecorate 29($Global) 2 Offset 32 MemberDecorate 29($Global) 3 Offset 48 MemberDecorate 29($Global) 4 Offset 52 Decorate 31 Binding 0 Decorate 31 DescriptorSet 0 Decorate 226(input) Location 0 Decorate 229(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 13: TypeBool 14: TypeVector 13(bool) 2 15: TypePointer Function 14(bvec2) 16: TypeVector 6(float) 2 17: TypePointer Function 16(fvec2) 18: TypeFunction 16(fvec2) 15(ptr) 17(ptr) 17(ptr) 24: TypePointer Function 7(fvec4) 25: TypeFunction 7(fvec4) 24(ptr) 29($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 6(float) 6(float) 30: TypePointer Uniform 29($Global) 31: 30(ptr) Variable Uniform 32: TypeInt 32 1 33: 32(int) Constant 2 34: TypePointer Uniform 7(fvec4) 37: 32(int) Constant 1 40: 32(int) Constant 0 43: TypeVector 13(bool) 4 44: 6(float) Constant 0 45: 7(fvec4) ConstantComposite 44 44 44 44 48: 32(int) Constant 4 49: TypePointer Uniform 6(float) 53: 32(int) Constant 3 96: 6(float) Constant 1065353216 97: 7(fvec4) ConstantComposite 96 96 96 96 109: TypePointer Function 32(int) 111: 32(int) Constant 5 113: 32(int) Constant 6 115: 32(int) Constant 7 139: TypeInt 32 0 140: 139(int) Constant 0 143: 32(int) Constant 10 148: 32(int) Constant 11 151: TypePointer Function 6(float) 154: 139(int) Constant 1 168: TypePointer Function 139(int) 173: 139(int) Constant 21 179: 139(int) Constant 63 185: 139(int) Constant 5 191: 32(int) Constant 43981 192: 32(int) Constant 48346 205: 13(bool) ConstantTrue 206: 13(bool) ConstantFalse 207: 14(bvec2) ConstantComposite 205 206 208: 6(float) Constant 1073741824 209: 16(fvec2) ConstantComposite 96 208 210: 6(float) Constant 1077936128 211: 6(float) Constant 1082130432 212: 16(fvec2) ConstantComposite 210 211 217: 6(float) Constant 1092616192 225: TypePointer Input 7(fvec4) 226(input): 225(ptr) Variable Input 228: TypePointer Output 7(fvec4) 229(@entryPointOutput): 228(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 224(input): 24(ptr) Variable Function 230(param): 24(ptr) Variable Function 227: 7(fvec4) Load 226(input) Store 224(input) 227 231: 7(fvec4) Load 224(input) Store 230(param) 231 232: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 230(param) Store 229(@entryPointOutput) 232 Return FunctionEnd 9(vectorCond(): 7(fvec4) Function None 8 10: Label 35: 34(ptr) AccessChain 31 33 36: 7(fvec4) Load 35 38: 34(ptr) AccessChain 31 37 39: 7(fvec4) Load 38 41: 34(ptr) AccessChain 31 40 42: 7(fvec4) Load 41 46: 43(bvec4) FUnordNotEqual 42 45 47: 7(fvec4) Select 46 39 36 50: 49(ptr) AccessChain 31 48 51: 6(float) Load 50 52: 7(fvec4) CompositeConstruct 51 51 51 51 54: 49(ptr) AccessChain 31 53 55: 6(float) Load 54 56: 7(fvec4) CompositeConstruct 55 55 55 55 57: 34(ptr) AccessChain 31 40 58: 7(fvec4) Load 57 59: 43(bvec4) FUnordNotEqual 58 45 60: 7(fvec4) Select 59 56 52 61: 7(fvec4) FAdd 47 60 62: 34(ptr) AccessChain 31 33 63: 7(fvec4) Load 62 64: 34(ptr) AccessChain 31 37 65: 7(fvec4) Load 64 66: 34(ptr) AccessChain 31 37 67: 7(fvec4) Load 66 68: 34(ptr) AccessChain 31 33 69: 7(fvec4) Load 68 70: 43(bvec4) FOrdLessThan 67 69 71: 7(fvec4) Select 70 65 63 72: 7(fvec4) FAdd 61 71 73: 34(ptr) AccessChain 31 33 74: 7(fvec4) Load 73 75: 49(ptr) AccessChain 31 53 76: 6(float) Load 75 77: 7(fvec4) CompositeConstruct 76 76 76 76 78: 34(ptr) AccessChain 31 40 79: 7(fvec4) Load 78 80: 43(bvec4) FUnordNotEqual 79 45 81: 7(fvec4) Select 80 77 74 82: 7(fvec4) FAdd 72 81 ReturnValue 82 FunctionEnd 11(scalarCond(): 7(fvec4) Function None 8 12: Label 85(ret): 24(ptr) Variable Function 86: 49(ptr) AccessChain 31 53 87: 6(float) Load 86 88: 49(ptr) AccessChain 31 48 89: 6(float) Load 88 90: 13(bool) FUnordNotEqual 87 89 91: 49(ptr) AccessChain 31 53 92: 6(float) Load 91 93: 34(ptr) AccessChain 31 33 94: 7(fvec4) Load 93 95: 7(fvec4) VectorTimesScalar 94 92 98: 43(bvec4) CompositeConstruct 90 90 90 90 99: 7(fvec4) Select 98 95 97 Store 85(ret) 99 100: 7(fvec4) Load 85(ret) ReturnValue 100 FunctionEnd 22(fbSelect(vb2;vf2;vf2;): 16(fvec2) Function None 18 19(cnd): 15(ptr) FunctionParameter 20(src0): 17(ptr) FunctionParameter 21(src1): 17(ptr) FunctionParameter 23: Label 103: 16(fvec2) Load 21(src1) 104: 16(fvec2) Load 20(src0) 105: 14(bvec2) Load 19(cnd) 106: 16(fvec2) Select 105 104 103 ReturnValue 106 FunctionEnd 27(@PixelShaderFunction(vf4;): 7(fvec4) Function None 25 26(input): 24(ptr) FunctionParameter 28: Label 110(a): 109(ptr) Variable Function 112(b): 109(ptr) Variable Function 114(c): 109(ptr) Variable Function 116(d): 109(ptr) Variable Function 117(ret): 24(ptr) Variable Function 137(e): 109(ptr) Variable Function 150(f): 24(ptr) Variable Function 169(g): 168(ptr) Variable Function 175(h): 168(ptr) Variable Function 181(i): 168(ptr) Variable Function 187(j): 168(ptr) Variable Function 213(param): 15(ptr) Variable Function 214(param): 17(ptr) Variable Function 215(param): 17(ptr) Variable Function Store 110(a) 111 Store 112(b) 113 Store 114(c) 115 Store 116(d) 115 118: 32(int) Load 110(a) 119: 6(float) ConvertSToF 118 120: 7(fvec4) Load 26(input) 121: 7(fvec4) VectorTimesScalar 120 119 122: 32(int) Load 112(b) 123: 6(float) ConvertSToF 122 124: 7(fvec4) Load 26(input) 125: 7(fvec4) VectorTimesScalar 124 123 126: 7(fvec4) FAdd 121 125 127: 32(int) Load 114(c) 128: 6(float) ConvertSToF 127 129: 7(fvec4) Load 26(input) 130: 7(fvec4) VectorTimesScalar 129 128 131: 7(fvec4) FAdd 126 130 132: 32(int) Load 116(d) 133: 6(float) ConvertSToF 132 134: 7(fvec4) Load 26(input) 135: 7(fvec4) VectorTimesScalar 134 133 136: 7(fvec4) FAdd 131 135 Store 117(ret) 136 138: 32(int) Load 112(b) 141: 13(bool) INotEqual 138 140 142: 32(int) Load 116(d) Store 114(c) 142 144: 32(int) Select 141 142 143 Store 110(a) 144 Store 137(e) 144 145: 32(int) Load 110(a) 146: 13(bool) INotEqual 145 140 147: 32(int) Load 114(c) Store 116(d) 147 149: 32(int) Select 146 147 148 Store 112(b) 149 152: 151(ptr) AccessChain 117(ret) 140 153: 6(float) Load 152 155: 151(ptr) AccessChain 26(input) 154 156: 6(float) Load 155 157: 13(bool) FOrdLessThan 153 156 158: 32(int) Load 114(c) 159: 6(float) ConvertSToF 158 160: 7(fvec4) Load 26(input) 161: 7(fvec4) VectorTimesScalar 160 159 162: 32(int) Load 116(d) 163: 6(float) ConvertSToF 162 164: 7(fvec4) Load 26(input) 165: 7(fvec4) VectorTimesScalar 164 163 166: 43(bvec4) CompositeConstruct 157 157 157 157 167: 7(fvec4) Select 166 161 165 Store 150(f) 167 170: 32(int) Load 116(d) 171: 6(float) ConvertSToF 170 172: 13(bool) FOrdGreaterThan 171 44 174: 139(int) Select 172 173 140 Store 169(g) 174 176: 139(int) Load 169(g) 177: 6(float) ConvertUToF 176 178: 13(bool) FOrdGreaterThan 177 44 180: 139(int) Select 178 179 140 Store 175(h) 180 182: 139(int) Load 175(h) 183: 6(float) ConvertUToF 182 184: 13(bool) FOrdGreaterThan 183 44 186: 139(int) Select 184 185 154 Store 181(i) 186 188: 139(int) Load 181(i) 189: 6(float) ConvertUToF 188 190: 13(bool) FOrdGreaterThan 189 44 193: 32(int) Select 190 191 192 194: 139(int) Bitcast 193 Store 187(j) 194 195: 32(int) Load 137(e) 196: 6(float) ConvertSToF 195 197: 7(fvec4) Load 117(ret) 198: 7(fvec4) VectorTimesScalar 197 196 199: 7(fvec4) Load 150(f) 200: 7(fvec4) FAdd 198 199 201: 7(fvec4) FunctionCall 9(vectorCond() 202: 7(fvec4) FAdd 200 201 203: 7(fvec4) FunctionCall 11(scalarCond() 204: 7(fvec4) FAdd 202 203 Store 213(param) 207 Store 214(param) 209 Store 215(param) 212 216: 16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 213(param) 214(param) 215(param) 218: 6(float) CompositeExtract 216 0 219: 6(float) CompositeExtract 216 1 220: 7(fvec4) CompositeConstruct 218 219 217 217 221: 7(fvec4) FAdd 204 220 ReturnValue 221 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.constantbuffer.frag.out000066400000000000000000000335471506534232700241160ustar00rootroot00000000000000hlsl.constantbuffer.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:20 Function Definition: @main( ( temp 4-component vector of float) 0:20 Function Parameters: 0:? Sequence 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 x: direct index for structure (layout( row_major std140) uniform bool) 0:21 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:21 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:21 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 true case 0:22 Branch: Return with expression 0:22 add ( temp 4-component vector of float) 0:22 add ( temp 4-component vector of float) 0:22 x: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:22 'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x}) 0:22 Constant: 0:22 0 (const int) 0:22 y: direct index for structure (layout( row_major std140) uniform float) 0:22 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:22 'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Convert int to float ( temp float) 0:22 c1: direct index for structure (layout( row_major std140) uniform int) 0:22 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1}) 0:22 Constant: 0:22 0 (const uint) 0:21 false case 0:24 Branch: Return with expression 0:24 Construct vec4 ( temp 4-component vector of float) 0:24 y: direct index for structure (layout( row_major std140) uniform float) 0:24 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: 0:24 1 (const int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:20 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x}) 0:? 'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:? 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:20 Function Definition: @main( ( temp 4-component vector of float) 0:20 Function Parameters: 0:? Sequence 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 x: direct index for structure (layout( row_major std140) uniform bool) 0:21 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:21 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:21 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 true case 0:22 Branch: Return with expression 0:22 add ( temp 4-component vector of float) 0:22 add ( temp 4-component vector of float) 0:22 x: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:22 'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x}) 0:22 Constant: 0:22 0 (const int) 0:22 y: direct index for structure (layout( row_major std140) uniform float) 0:22 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:22 'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Convert int to float ( temp float) 0:22 c1: direct index for structure (layout( row_major std140) uniform int) 0:22 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1}) 0:22 Constant: 0:22 0 (const uint) 0:21 false case 0:24 Branch: Return with expression 0:24 Construct vec4 ( temp 4-component vector of float) 0:24 y: direct index for structure (layout( row_major std140) uniform float) 0:24 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: 0:24 1 (const int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:20 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x}) 0:? 'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:? 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 64 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "cb3" MemberName 12(cb3) 0 "x" MemberName 12(cb3) 1 "y" Name 18 "cb3" Name 31 "cb1" MemberName 31(cb1) 0 "x" Name 33 "cb1" Name 40 "cb2" Name 46 "cbuff" MemberName 46(cbuff) 0 "c1" Name 48 "" Name 64 "@entryPointOutput" Decorate 12(cb3) Block MemberDecorate 12(cb3) 0 Offset 0 MemberDecorate 12(cb3) 1 Offset 4 Decorate 18(cb3) Binding 1 Decorate 18(cb3) DescriptorSet 0 Decorate 31(cb1) Block MemberDecorate 31(cb1) 0 Offset 0 Decorate 33(cb1) Binding 12 Decorate 33(cb1) DescriptorSet 0 Decorate 40(cb2) Binding 0 Decorate 40(cb2) DescriptorSet 0 Decorate 46(cbuff) Block MemberDecorate 46(cbuff) 0 Offset 0 Decorate 48 Binding 2 Decorate 48 DescriptorSet 0 Decorate 64(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 0 12(cb3): TypeStruct 11(int) 6(float) 13: 11(int) Constant 4 14: TypeArray 12(cb3) 13 15: 11(int) Constant 2 16: TypeArray 14 15 17: TypePointer Uniform 16 18(cb3): 17(ptr) Variable Uniform 19: TypeInt 32 1 20: 19(int) Constant 1 21: 19(int) Constant 2 22: 19(int) Constant 0 23: TypePointer Uniform 11(int) 26: TypeBool 27: 11(int) Constant 0 31(cb1): TypeStruct 7(fvec4) 32: TypePointer Uniform 31(cb1) 33(cb1): 32(ptr) Variable Uniform 34: TypePointer Uniform 7(fvec4) 37: 11(int) Constant 3 38: TypeArray 12(cb3) 37 39: TypePointer Uniform 38 40(cb2): 39(ptr) Variable Uniform 41: TypePointer Uniform 6(float) 46(cbuff): TypeStruct 19(int) 47: TypePointer Uniform 46(cbuff) 48: 47(ptr) Variable Uniform 49: TypePointer Uniform 19(int) 57: 19(int) Constant 3 63: TypePointer Output 7(fvec4) 64(@entryPointOutput): 63(ptr) Variable Output 4(main): 2 Function None 3 5: Label 65: 7(fvec4) FunctionCall 9(@main() Store 64(@entryPointOutput) 65 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 24: 23(ptr) AccessChain 18(cb3) 20 21 22 25: 11(int) Load 24 28: 26(bool) INotEqual 25 27 SelectionMerge 30 None BranchConditional 28 29 56 29: Label 35: 34(ptr) AccessChain 33(cb1) 22 36: 7(fvec4) Load 35 42: 41(ptr) AccessChain 40(cb2) 20 20 43: 6(float) Load 42 44: 7(fvec4) CompositeConstruct 43 43 43 43 45: 7(fvec4) FAdd 36 44 50: 49(ptr) AccessChain 48 22 51: 19(int) Load 50 52: 6(float) ConvertSToF 51 53: 7(fvec4) CompositeConstruct 52 52 52 52 54: 7(fvec4) FAdd 45 53 ReturnValue 54 56: Label 58: 41(ptr) AccessChain 18(cb3) 20 57 20 59: 6(float) Load 58 60: 7(fvec4) CompositeConstruct 59 59 59 59 ReturnValue 60 30: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.constructArray.vert.out000066400000000000000000000447771506534232700241660ustar00rootroot00000000000000hlsl.constructArray.vert Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp 2-element array of 4-component vector of float) 0:4 'float4_array_times' ( temp 2-element array of 4-component vector of float) 0:4 Construct structure ( temp 2-element array of 4-component vector of float) 0:4 Convert int to float ( temp 4-component vector of float) 0:4 direct index ( temp 4-component vector of int) 0:4 'int4_array' ( temp 3-element array of 4-component vector of int) 0:4 Constant: 0:4 0 (const int) 0:4 Convert int to float ( temp 4-component vector of float) 0:4 direct index ( temp 4-component vector of int) 0:4 'int4_array' ( temp 3-element array of 4-component vector of int) 0:4 Constant: 0:4 1 (const int) 0:5 Sequence 0:5 move second child to first child ( temp 4-element array of 2-component vector of float) 0:5 'float2_array_times2' ( temp 4-element array of 2-component vector of float) 0:5 Construct structure ( temp 4-element array of 2-component vector of float) 0:5 Convert int to float ( temp 2-component vector of float) 0:5 Construct ivec2 ( temp 2-component vector of int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 0 (const int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 1 (const int) 0:5 Convert int to float ( temp 2-component vector of float) 0:5 Construct ivec2 ( temp 2-component vector of int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 2 (const int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 3 (const int) 0:5 Convert int to float ( temp 2-component vector of float) 0:5 Construct ivec2 ( temp 2-component vector of int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 0 (const int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 1 (const int) 0:5 Convert int to float ( temp 2-component vector of float) 0:5 Construct ivec2 ( temp 2-component vector of int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 2 (const int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 3 (const int) 0:6 Sequence 0:6 move second child to first child ( temp 2-element array of 4-component vector of int) 0:6 'int4_array2' ( temp 2-element array of 4-component vector of int) 0:6 Construct structure ( temp 2-element array of 4-component vector of int) 0:6 direct index ( temp 4-component vector of int) 0:6 'int4_array' ( temp 3-element array of 4-component vector of int) 0:6 Constant: 0:6 0 (const int) 0:6 direct index ( temp 4-component vector of int) 0:6 'int4_array' ( temp 3-element array of 4-component vector of int) 0:6 Constant: 0:6 1 (const int) 0:7 Sequence 0:7 move second child to first child ( temp 2-element array of int) 0:7 'int1_array' ( temp 2-element array of int) 0:7 Construct structure ( temp 2-element array of int) 0:7 direct index ( temp int) 0:7 direct index ( temp 4-component vector of int) 0:7 'int4_array' ( temp 3-element array of 4-component vector of int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( temp int) 0:7 direct index ( temp 4-component vector of int) 0:7 'int4_array' ( temp 3-element array of 4-component vector of int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) 0:9 Branch: Return with expression 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp 2-element array of 4-component vector of float) 0:4 'float4_array_times' ( temp 2-element array of 4-component vector of float) 0:4 Construct structure ( temp 2-element array of 4-component vector of float) 0:4 Convert int to float ( temp 4-component vector of float) 0:4 direct index ( temp 4-component vector of int) 0:4 'int4_array' ( temp 3-element array of 4-component vector of int) 0:4 Constant: 0:4 0 (const int) 0:4 Convert int to float ( temp 4-component vector of float) 0:4 direct index ( temp 4-component vector of int) 0:4 'int4_array' ( temp 3-element array of 4-component vector of int) 0:4 Constant: 0:4 1 (const int) 0:5 Sequence 0:5 move second child to first child ( temp 4-element array of 2-component vector of float) 0:5 'float2_array_times2' ( temp 4-element array of 2-component vector of float) 0:5 Construct structure ( temp 4-element array of 2-component vector of float) 0:5 Convert int to float ( temp 2-component vector of float) 0:5 Construct ivec2 ( temp 2-component vector of int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 0 (const int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 1 (const int) 0:5 Convert int to float ( temp 2-component vector of float) 0:5 Construct ivec2 ( temp 2-component vector of int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 2 (const int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 3 (const int) 0:5 Convert int to float ( temp 2-component vector of float) 0:5 Construct ivec2 ( temp 2-component vector of int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 0 (const int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 1 (const int) 0:5 Convert int to float ( temp 2-component vector of float) 0:5 Construct ivec2 ( temp 2-component vector of int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 2 (const int) 0:5 direct index ( temp int) 0:5 direct index ( temp 4-component vector of int) 0:5 'int4_array' ( temp 3-element array of 4-component vector of int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 3 (const int) 0:6 Sequence 0:6 move second child to first child ( temp 2-element array of 4-component vector of int) 0:6 'int4_array2' ( temp 2-element array of 4-component vector of int) 0:6 Construct structure ( temp 2-element array of 4-component vector of int) 0:6 direct index ( temp 4-component vector of int) 0:6 'int4_array' ( temp 3-element array of 4-component vector of int) 0:6 Constant: 0:6 0 (const int) 0:6 direct index ( temp 4-component vector of int) 0:6 'int4_array' ( temp 3-element array of 4-component vector of int) 0:6 Constant: 0:6 1 (const int) 0:7 Sequence 0:7 move second child to first child ( temp 2-element array of int) 0:7 'int1_array' ( temp 2-element array of int) 0:7 Construct structure ( temp 2-element array of int) 0:7 direct index ( temp int) 0:7 direct index ( temp 4-component vector of int) 0:7 'int4_array' ( temp 3-element array of 4-component vector of int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( temp int) 0:7 direct index ( temp 4-component vector of int) 0:7 'int4_array' ( temp 3-element array of 4-component vector of int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) 0:9 Branch: Return with expression 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 89 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 87 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 15 "float4_array_times" Name 21 "int4_array" Name 36 "float2_array_times2" Name 68 "int4_array2" Name 76 "int1_array" Name 87 "@entryPointOutput" Decorate 87(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 0 12: 11(int) Constant 2 13: TypeArray 7(fvec4) 12 14: TypePointer Function 13 16: TypeInt 32 1 17: TypeVector 16(int) 4 18: 11(int) Constant 3 19: TypeArray 17(ivec4) 18 20: TypePointer Function 19 22: 16(int) Constant 0 23: TypePointer Function 17(ivec4) 27: 16(int) Constant 1 32: TypeVector 6(float) 2 33: 11(int) Constant 4 34: TypeArray 32(fvec2) 33 35: TypePointer Function 34 37: 11(int) Constant 0 38: TypePointer Function 16(int) 41: 11(int) Constant 1 44: TypeVector 16(int) 2 66: TypeArray 17(ivec4) 12 67: TypePointer Function 66 74: TypeArray 16(int) 12 75: TypePointer Function 74 82: 6(float) Constant 0 83: 7(fvec4) ConstantComposite 82 82 82 82 86: TypePointer Output 7(fvec4) 87(@entryPointOutput): 86(ptr) Variable Output 4(main): 2 Function None 3 5: Label 88: 7(fvec4) FunctionCall 9(@main() Store 87(@entryPointOutput) 88 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 15(float4_array_times): 14(ptr) Variable Function 21(int4_array): 20(ptr) Variable Function 36(float2_array_times2): 35(ptr) Variable Function 68(int4_array2): 67(ptr) Variable Function 76(int1_array): 75(ptr) Variable Function 24: 23(ptr) AccessChain 21(int4_array) 22 25: 17(ivec4) Load 24 26: 7(fvec4) ConvertSToF 25 28: 23(ptr) AccessChain 21(int4_array) 27 29: 17(ivec4) Load 28 30: 7(fvec4) ConvertSToF 29 31: 13 CompositeConstruct 26 30 Store 15(float4_array_times) 31 39: 38(ptr) AccessChain 21(int4_array) 22 37 40: 16(int) Load 39 42: 38(ptr) AccessChain 21(int4_array) 22 41 43: 16(int) Load 42 45: 44(ivec2) CompositeConstruct 40 43 46: 32(fvec2) ConvertSToF 45 47: 38(ptr) AccessChain 21(int4_array) 22 12 48: 16(int) Load 47 49: 38(ptr) AccessChain 21(int4_array) 22 18 50: 16(int) Load 49 51: 44(ivec2) CompositeConstruct 48 50 52: 32(fvec2) ConvertSToF 51 53: 38(ptr) AccessChain 21(int4_array) 27 37 54: 16(int) Load 53 55: 38(ptr) AccessChain 21(int4_array) 27 41 56: 16(int) Load 55 57: 44(ivec2) CompositeConstruct 54 56 58: 32(fvec2) ConvertSToF 57 59: 38(ptr) AccessChain 21(int4_array) 27 12 60: 16(int) Load 59 61: 38(ptr) AccessChain 21(int4_array) 27 18 62: 16(int) Load 61 63: 44(ivec2) CompositeConstruct 60 62 64: 32(fvec2) ConvertSToF 63 65: 34 CompositeConstruct 46 52 58 64 Store 36(float2_array_times2) 65 69: 23(ptr) AccessChain 21(int4_array) 22 70: 17(ivec4) Load 69 71: 23(ptr) AccessChain 21(int4_array) 27 72: 17(ivec4) Load 71 73: 66 CompositeConstruct 70 72 Store 68(int4_array2) 73 77: 38(ptr) AccessChain 21(int4_array) 22 37 78: 16(int) Load 77 79: 38(ptr) AccessChain 21(int4_array) 22 41 80: 16(int) Load 79 81: 74 CompositeConstruct 78 80 Store 76(int1_array) 81 ReturnValue 83 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.constructexpr.frag.out000066400000000000000000000146411506534232700240100ustar00rootroot00000000000000hlsl.constructexpr.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:4 Function Parameters: 0:? Sequence 0:6 Constant: 0:6 3 (const int) 0:7 Constant: 0:7 4 (const int) 0:8 Constant: 0:8 5 (const int) 0:9 Constant: 0:9 6 (const int) 0:10 Constant: 0:10 7 (const int) 0:11 Constant: 0:11 8 (const int) 0:12 Comma ( temp 2-component vector of float) 0:12 Constant: 0:12 9.000000 0:12 10.000000 0:12 Constant: 0:12 11.000000 0:12 12.000000 0:15 move second child to first child ( temp 4-component vector of float) 0:15 color: direct index for structure ( temp 4-component vector of float) 0:15 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:16 Branch: Return with expression 0:16 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:4 color: direct index for structure ( temp 4-component vector of float) 0:4 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:4 Constant: 0:4 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:4 Function Parameters: 0:? Sequence 0:6 Constant: 0:6 3 (const int) 0:7 Constant: 0:7 4 (const int) 0:8 Constant: 0:8 5 (const int) 0:9 Constant: 0:9 6 (const int) 0:10 Constant: 0:10 7 (const int) 0:11 Constant: 0:11 8 (const int) 0:12 Comma ( temp 2-component vector of float) 0:12 Constant: 0:12 9.000000 0:12 10.000000 0:12 Constant: 0:12 11.000000 0:12 12.000000 0:15 move second child to first child ( temp 4-component vector of float) 0:15 color: direct index for structure ( temp 4-component vector of float) 0:15 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:16 Branch: Return with expression 0:16 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:4 color: direct index for structure ( temp 4-component vector of float) 0:4 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:4 Constant: 0:4 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 37 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "color" Name 10 "@main(" Name 27 "ps_output" Name 37 "@entryPointOutput.color" Decorate 37(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 1 13: 12(int) Constant 3 14: 12(int) Constant 4 15: 12(int) Constant 5 16: 12(int) Constant 6 17: 12(int) Constant 7 18: 12(int) Constant 8 19: TypeVector 6(float) 2 20: 6(float) Constant 1091567616 21: 6(float) Constant 1092616192 22: 19(fvec2) ConstantComposite 20 21 23: 6(float) Constant 1093664768 24: 6(float) Constant 1094713344 25: 19(fvec2) ConstantComposite 23 24 26: TypePointer Function 8(PS_OUTPUT) 28: 12(int) Constant 0 29: 6(float) Constant 1065353216 30: 7(fvec4) ConstantComposite 29 29 29 29 31: TypePointer Function 7(fvec4) 36: TypePointer Output 7(fvec4) 37(@entryPointOutput.color): 36(ptr) Variable Output 4(main): 2 Function None 3 5: Label 38:8(PS_OUTPUT) FunctionCall 10(@main() 39: 7(fvec4) CompositeExtract 38 0 Store 37(@entryPointOutput.color) 39 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 27(ps_output): 26(ptr) Variable Function 32: 31(ptr) AccessChain 27(ps_output) 28 Store 32 30 33:8(PS_OUTPUT) Load 27(ps_output) ReturnValue 33 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.constructimat.frag.out000066400000000000000000000627521506534232700237720ustar00rootroot00000000000000hlsl.constructimat.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @main( ( temp int) 0:2 Function Parameters: 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4X4 matrix of int) 0:6 'var443' ( temp 4X4 matrix of int) 0:6 Constant: 0:6 0 (const int) 0:6 1 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 1 (const int) 0:6 1 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 1 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:7 Sequence 0:7 move second child to first child ( temp 4X4 matrix of int) 0:7 'var444' ( temp 4X4 matrix of int) 0:7 Constant: 0:7 0 (const int) 0:7 1 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 1 (const int) 0:7 1 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 1 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:11 Sequence 0:11 move second child to first child ( temp 4X2 matrix of int) 0:11 'var423' ( temp 4X2 matrix of int) 0:11 Constant: 0:11 0 (const int) 0:11 1 (const int) 0:11 1 (const int) 0:11 1 (const int) 0:11 1 (const int) 0:11 0 (const int) 0:11 0 (const int) 0:11 0 (const int) 0:12 Sequence 0:12 move second child to first child ( temp 4X2 matrix of int) 0:12 'var424' ( temp 4X2 matrix of int) 0:12 Constant: 0:12 0 (const int) 0:12 1 (const int) 0:12 1 (const int) 0:12 1 (const int) 0:12 1 (const int) 0:12 0 (const int) 0:12 0 (const int) 0:12 0 (const int) 0:16 Sequence 0:16 move second child to first child ( temp 3X2 matrix of int) 0:16 'var323' ( temp 3X2 matrix of int) 0:16 Constant: 0:16 0 (const int) 0:16 1 (const int) 0:16 1 (const int) 0:16 1 (const int) 0:16 1 (const int) 0:16 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp 3X2 matrix of int) 0:17 'var234' ( temp 3X2 matrix of int) 0:17 Constant: 0:17 0 (const int) 0:17 1 (const int) 0:17 1 (const int) 0:17 1 (const int) 0:17 1 (const int) 0:17 0 (const int) 0:22 Sequence 0:22 move second child to first child ( temp 4X4 matrix of uint) 0:22 'uvar443' ( temp 4X4 matrix of uint) 0:22 Constant: 0:22 0 (const uint) 0:22 1 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 1 (const uint) 0:22 1 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 1 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:23 Sequence 0:23 move second child to first child ( temp 4X4 matrix of uint) 0:23 'uvar444' ( temp 4X4 matrix of uint) 0:23 Constant: 0:23 0 (const uint) 0:23 1 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 1 (const uint) 0:23 1 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 1 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:27 Sequence 0:27 move second child to first child ( temp 4X2 matrix of uint) 0:27 'uvar423' ( temp 4X2 matrix of uint) 0:27 Constant: 0:27 0 (const uint) 0:27 1 (const uint) 0:27 1 (const uint) 0:27 1 (const uint) 0:27 1 (const uint) 0:27 0 (const uint) 0:27 0 (const uint) 0:27 0 (const uint) 0:28 Sequence 0:28 move second child to first child ( temp 4X2 matrix of uint) 0:28 'uvar424' ( temp 4X2 matrix of uint) 0:28 Constant: 0:28 0 (const uint) 0:28 1 (const uint) 0:28 1 (const uint) 0:28 1 (const uint) 0:28 1 (const uint) 0:28 0 (const uint) 0:28 0 (const uint) 0:28 0 (const uint) 0:32 Sequence 0:32 move second child to first child ( temp 3X2 matrix of uint) 0:32 'uvar323' ( temp 3X2 matrix of uint) 0:32 Constant: 0:32 0 (const uint) 0:32 1 (const uint) 0:32 1 (const uint) 0:32 1 (const uint) 0:32 1 (const uint) 0:32 0 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp 3X2 matrix of uint) 0:33 'uvar234' ( temp 3X2 matrix of uint) 0:33 Constant: 0:33 0 (const uint) 0:33 1 (const uint) 0:33 1 (const uint) 0:33 1 (const uint) 0:33 1 (const uint) 0:33 0 (const uint) 0:38 Sequence 0:38 move second child to first child ( temp 4X4 matrix of bool) 0:38 'bvar443' ( temp 4X4 matrix of bool) 0:38 Constant: 0:38 false (const bool) 0:38 true (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 true (const bool) 0:38 true (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 true (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:39 Sequence 0:39 move second child to first child ( temp 4X4 matrix of bool) 0:39 'bvar444' ( temp 4X4 matrix of bool) 0:39 Constant: 0:39 false (const bool) 0:39 true (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 true (const bool) 0:39 true (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 true (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:43 Sequence 0:43 move second child to first child ( temp 4X2 matrix of bool) 0:43 'bvar423' ( temp 4X2 matrix of bool) 0:43 Constant: 0:43 false (const bool) 0:43 true (const bool) 0:43 true (const bool) 0:43 true (const bool) 0:43 true (const bool) 0:43 false (const bool) 0:43 false (const bool) 0:43 false (const bool) 0:44 Sequence 0:44 move second child to first child ( temp 4X2 matrix of bool) 0:44 'bvar424' ( temp 4X2 matrix of bool) 0:44 Constant: 0:44 false (const bool) 0:44 true (const bool) 0:44 true (const bool) 0:44 true (const bool) 0:44 true (const bool) 0:44 false (const bool) 0:44 false (const bool) 0:44 false (const bool) 0:48 Sequence 0:48 move second child to first child ( temp 3X2 matrix of bool) 0:48 'bvar323' ( temp 3X2 matrix of bool) 0:48 Constant: 0:48 false (const bool) 0:48 true (const bool) 0:48 true (const bool) 0:48 true (const bool) 0:48 true (const bool) 0:48 false (const bool) 0:49 Sequence 0:49 move second child to first child ( temp 3X2 matrix of bool) 0:49 'bvar234' ( temp 3X2 matrix of bool) 0:49 Constant: 0:49 false (const bool) 0:49 true (const bool) 0:49 true (const bool) 0:49 true (const bool) 0:49 true (const bool) 0:49 false (const bool) 0:51 Branch: Return with expression 0:51 Constant: 0:51 0 (const int) 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) 0:2 Function Call: @main( ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @main( ( temp int) 0:2 Function Parameters: 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4X4 matrix of int) 0:6 'var443' ( temp 4X4 matrix of int) 0:6 Constant: 0:6 0 (const int) 0:6 1 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 1 (const int) 0:6 1 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 1 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:6 0 (const int) 0:7 Sequence 0:7 move second child to first child ( temp 4X4 matrix of int) 0:7 'var444' ( temp 4X4 matrix of int) 0:7 Constant: 0:7 0 (const int) 0:7 1 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 1 (const int) 0:7 1 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 1 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:7 0 (const int) 0:11 Sequence 0:11 move second child to first child ( temp 4X2 matrix of int) 0:11 'var423' ( temp 4X2 matrix of int) 0:11 Constant: 0:11 0 (const int) 0:11 1 (const int) 0:11 1 (const int) 0:11 1 (const int) 0:11 1 (const int) 0:11 0 (const int) 0:11 0 (const int) 0:11 0 (const int) 0:12 Sequence 0:12 move second child to first child ( temp 4X2 matrix of int) 0:12 'var424' ( temp 4X2 matrix of int) 0:12 Constant: 0:12 0 (const int) 0:12 1 (const int) 0:12 1 (const int) 0:12 1 (const int) 0:12 1 (const int) 0:12 0 (const int) 0:12 0 (const int) 0:12 0 (const int) 0:16 Sequence 0:16 move second child to first child ( temp 3X2 matrix of int) 0:16 'var323' ( temp 3X2 matrix of int) 0:16 Constant: 0:16 0 (const int) 0:16 1 (const int) 0:16 1 (const int) 0:16 1 (const int) 0:16 1 (const int) 0:16 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp 3X2 matrix of int) 0:17 'var234' ( temp 3X2 matrix of int) 0:17 Constant: 0:17 0 (const int) 0:17 1 (const int) 0:17 1 (const int) 0:17 1 (const int) 0:17 1 (const int) 0:17 0 (const int) 0:22 Sequence 0:22 move second child to first child ( temp 4X4 matrix of uint) 0:22 'uvar443' ( temp 4X4 matrix of uint) 0:22 Constant: 0:22 0 (const uint) 0:22 1 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 1 (const uint) 0:22 1 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 1 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:22 0 (const uint) 0:23 Sequence 0:23 move second child to first child ( temp 4X4 matrix of uint) 0:23 'uvar444' ( temp 4X4 matrix of uint) 0:23 Constant: 0:23 0 (const uint) 0:23 1 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 1 (const uint) 0:23 1 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 1 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:23 0 (const uint) 0:27 Sequence 0:27 move second child to first child ( temp 4X2 matrix of uint) 0:27 'uvar423' ( temp 4X2 matrix of uint) 0:27 Constant: 0:27 0 (const uint) 0:27 1 (const uint) 0:27 1 (const uint) 0:27 1 (const uint) 0:27 1 (const uint) 0:27 0 (const uint) 0:27 0 (const uint) 0:27 0 (const uint) 0:28 Sequence 0:28 move second child to first child ( temp 4X2 matrix of uint) 0:28 'uvar424' ( temp 4X2 matrix of uint) 0:28 Constant: 0:28 0 (const uint) 0:28 1 (const uint) 0:28 1 (const uint) 0:28 1 (const uint) 0:28 1 (const uint) 0:28 0 (const uint) 0:28 0 (const uint) 0:28 0 (const uint) 0:32 Sequence 0:32 move second child to first child ( temp 3X2 matrix of uint) 0:32 'uvar323' ( temp 3X2 matrix of uint) 0:32 Constant: 0:32 0 (const uint) 0:32 1 (const uint) 0:32 1 (const uint) 0:32 1 (const uint) 0:32 1 (const uint) 0:32 0 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp 3X2 matrix of uint) 0:33 'uvar234' ( temp 3X2 matrix of uint) 0:33 Constant: 0:33 0 (const uint) 0:33 1 (const uint) 0:33 1 (const uint) 0:33 1 (const uint) 0:33 1 (const uint) 0:33 0 (const uint) 0:38 Sequence 0:38 move second child to first child ( temp 4X4 matrix of bool) 0:38 'bvar443' ( temp 4X4 matrix of bool) 0:38 Constant: 0:38 false (const bool) 0:38 true (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 true (const bool) 0:38 true (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 true (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:38 false (const bool) 0:39 Sequence 0:39 move second child to first child ( temp 4X4 matrix of bool) 0:39 'bvar444' ( temp 4X4 matrix of bool) 0:39 Constant: 0:39 false (const bool) 0:39 true (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 true (const bool) 0:39 true (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 true (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:39 false (const bool) 0:43 Sequence 0:43 move second child to first child ( temp 4X2 matrix of bool) 0:43 'bvar423' ( temp 4X2 matrix of bool) 0:43 Constant: 0:43 false (const bool) 0:43 true (const bool) 0:43 true (const bool) 0:43 true (const bool) 0:43 true (const bool) 0:43 false (const bool) 0:43 false (const bool) 0:43 false (const bool) 0:44 Sequence 0:44 move second child to first child ( temp 4X2 matrix of bool) 0:44 'bvar424' ( temp 4X2 matrix of bool) 0:44 Constant: 0:44 false (const bool) 0:44 true (const bool) 0:44 true (const bool) 0:44 true (const bool) 0:44 true (const bool) 0:44 false (const bool) 0:44 false (const bool) 0:44 false (const bool) 0:48 Sequence 0:48 move second child to first child ( temp 3X2 matrix of bool) 0:48 'bvar323' ( temp 3X2 matrix of bool) 0:48 Constant: 0:48 false (const bool) 0:48 true (const bool) 0:48 true (const bool) 0:48 true (const bool) 0:48 true (const bool) 0:48 false (const bool) 0:49 Sequence 0:49 move second child to first child ( temp 3X2 matrix of bool) 0:49 'bvar234' ( temp 3X2 matrix of bool) 0:49 Constant: 0:49 false (const bool) 0:49 true (const bool) 0:49 true (const bool) 0:49 true (const bool) 0:49 true (const bool) 0:49 false (const bool) 0:51 Branch: Return with expression 0:51 Constant: 0:51 0 (const int) 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) 0:2 Function Call: @main( ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 98 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 96 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "@main(" Name 13 "var443" Name 21 "var444" Name 25 "var423" Name 31 "var424" Name 34 "var323" Name 36 "var234" Name 41 "uvar443" Name 49 "uvar444" Name 53 "uvar423" Name 59 "uvar424" Name 62 "uvar323" Name 64 "uvar234" Name 69 "bvar443" Name 77 "bvar444" Name 81 "bvar423" Name 87 "bvar424" Name 90 "bvar323" Name 92 "bvar234" Name 96 "@entryPointOutput" Decorate 96(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFunction 6(int) 10: TypeVector 6(int) 4 11: TypeMatrix 10(ivec4) 4 12: TypePointer Function 11 14: 6(int) Constant 0 15: 6(int) Constant 1 16: 10(ivec4) ConstantComposite 14 15 14 14 17: 10(ivec4) ConstantComposite 15 15 14 14 18: 10(ivec4) ConstantComposite 15 14 14 14 19: 10(ivec4) ConstantComposite 14 14 14 14 20: 11 ConstantComposite 16 17 18 19 22: TypeVector 6(int) 2 23: TypeMatrix 22(ivec2) 4 24: TypePointer Function 23 26: 22(ivec2) ConstantComposite 14 15 27: 22(ivec2) ConstantComposite 15 15 28: 22(ivec2) ConstantComposite 15 14 29: 22(ivec2) ConstantComposite 14 14 30: 23 ConstantComposite 26 27 28 29 32: TypeMatrix 22(ivec2) 3 33: TypePointer Function 32 35: 32 ConstantComposite 26 27 28 37: TypeInt 32 0 38: TypeVector 37(int) 4 39: TypeMatrix 38(ivec4) 4 40: TypePointer Function 39 42: 37(int) Constant 0 43: 37(int) Constant 1 44: 38(ivec4) ConstantComposite 42 43 42 42 45: 38(ivec4) ConstantComposite 43 43 42 42 46: 38(ivec4) ConstantComposite 43 42 42 42 47: 38(ivec4) ConstantComposite 42 42 42 42 48: 39 ConstantComposite 44 45 46 47 50: TypeVector 37(int) 2 51: TypeMatrix 50(ivec2) 4 52: TypePointer Function 51 54: 50(ivec2) ConstantComposite 42 43 55: 50(ivec2) ConstantComposite 43 43 56: 50(ivec2) ConstantComposite 43 42 57: 50(ivec2) ConstantComposite 42 42 58: 51 ConstantComposite 54 55 56 57 60: TypeMatrix 50(ivec2) 3 61: TypePointer Function 60 63: 60 ConstantComposite 54 55 56 65: TypeBool 66: TypeVector 65(bool) 4 67: TypeMatrix 66(bvec4) 4 68: TypePointer Function 67 70: 65(bool) ConstantFalse 71: 65(bool) ConstantTrue 72: 66(bvec4) ConstantComposite 70 71 70 70 73: 66(bvec4) ConstantComposite 71 71 70 70 74: 66(bvec4) ConstantComposite 71 70 70 70 75: 66(bvec4) ConstantComposite 70 70 70 70 76: 67 ConstantComposite 72 73 74 75 78: TypeVector 65(bool) 2 79: TypeMatrix 78(bvec2) 4 80: TypePointer Function 79 82: 78(bvec2) ConstantComposite 70 71 83: 78(bvec2) ConstantComposite 71 71 84: 78(bvec2) ConstantComposite 71 70 85: 78(bvec2) ConstantComposite 70 70 86: 79 ConstantComposite 82 83 84 85 88: TypeMatrix 78(bvec2) 3 89: TypePointer Function 88 91: 88 ConstantComposite 82 83 84 95: TypePointer Output 6(int) 96(@entryPointOutput): 95(ptr) Variable Output 4(main): 2 Function None 3 5: Label 97: 6(int) FunctionCall 8(@main() Store 96(@entryPointOutput) 97 Return FunctionEnd 8(@main(): 6(int) Function None 7 9: Label 13(var443): 12(ptr) Variable Function 21(var444): 12(ptr) Variable Function 25(var423): 24(ptr) Variable Function 31(var424): 24(ptr) Variable Function 34(var323): 33(ptr) Variable Function 36(var234): 33(ptr) Variable Function 41(uvar443): 40(ptr) Variable Function 49(uvar444): 40(ptr) Variable Function 53(uvar423): 52(ptr) Variable Function 59(uvar424): 52(ptr) Variable Function 62(uvar323): 61(ptr) Variable Function 64(uvar234): 61(ptr) Variable Function 69(bvar443): 68(ptr) Variable Function 77(bvar444): 68(ptr) Variable Function 81(bvar423): 80(ptr) Variable Function 87(bvar424): 80(ptr) Variable Function 90(bvar323): 89(ptr) Variable Function 92(bvar234): 89(ptr) Variable Function Store 13(var443) 20 Store 21(var444) 20 Store 25(var423) 30 Store 31(var424) 30 Store 34(var323) 35 Store 36(var234) 35 Store 41(uvar443) 48 Store 49(uvar444) 48 Store 53(uvar423) 58 Store 59(uvar424) 58 Store 62(uvar323) 63 Store 64(uvar234) 63 Store 69(bvar443) 76 Store 77(bvar444) 76 Store 81(bvar423) 86 Store 87(bvar424) 86 Store 90(bvar323) 91 Store 92(bvar234) 91 ReturnValue 14 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.coverage.frag.out000066400000000000000000000242641506534232700226620ustar00rootroot00000000000000hlsl.coverage.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Function Parameters: 0:15 'i' ( in structure{}) 0:? Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 vColor: direct index for structure ( temp 4-component vector of float) 0:17 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1.000000 0:17 0.000000 0:17 0.000000 0:17 1.000000 0:18 move second child to first child ( temp uint) 0:18 nCoverageMask: direct index for structure ( temp uint) 0:18 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const uint) 0:19 Branch: Return with expression 0:19 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? 'i' ( in structure{}) 0:15 Sequence 0:15 move second child to first child ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Function Call: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:? 'i' ( temp structure{}) 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float) 0:15 vColor: direct index for structure ( temp 4-component vector of float) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Constant: 0:15 0 (const int) 0:15 move second child to first child ( temp uint) 0:15 direct index ( out uint SampleMaskIn) 0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn) 0:15 Constant: 0:15 0 (const int) 0:15 nCoverageMask: direct index for structure ( temp uint) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Constant: 0:15 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn) 0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Function Parameters: 0:15 'i' ( in structure{}) 0:? Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 vColor: direct index for structure ( temp 4-component vector of float) 0:17 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1.000000 0:17 0.000000 0:17 0.000000 0:17 1.000000 0:18 move second child to first child ( temp uint) 0:18 nCoverageMask: direct index for structure ( temp uint) 0:18 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const uint) 0:19 Branch: Return with expression 0:19 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? 'i' ( in structure{}) 0:15 Sequence 0:15 move second child to first child ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Function Call: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:? 'i' ( temp structure{}) 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float) 0:15 vColor: direct index for structure ( temp 4-component vector of float) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Constant: 0:15 0 (const int) 0:15 move second child to first child ( temp uint) 0:15 direct index ( out uint SampleMaskIn) 0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn) 0:15 Constant: 0:15 0 (const int) 0:15 nCoverageMask: direct index for structure ( temp uint) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask}) 0:15 Constant: 0:15 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn) 0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 41 47 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 6 "PS_INPUT" Name 11 "PS_OUTPUT" MemberName 11(PS_OUTPUT) 0 "vColor" MemberName 11(PS_OUTPUT) 1 "nCoverageMask" Name 14 "@main(struct-PS_INPUT1;" Name 13 "i" Name 17 "o" Name 32 "i" Name 34 "i" Name 36 "flattenTemp" Name 37 "param" Name 41 "@entryPointOutput.vColor" Name 47 "@entryPointOutput.nCoverageMask" Decorate 41(@entryPointOutput.vColor) Location 0 Decorate 47(@entryPointOutput.nCoverageMask) BuiltIn SampleMask 2: TypeVoid 3: TypeFunction 2 6(PS_INPUT): TypeStruct 7: TypePointer Function 6(PS_INPUT) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeInt 32 0 11(PS_OUTPUT): TypeStruct 9(fvec4) 10(int) 12: TypeFunction 11(PS_OUTPUT) 7(ptr) 16: TypePointer Function 11(PS_OUTPUT) 18: TypeInt 32 1 19: 18(int) Constant 0 20: 8(float) Constant 1065353216 21: 8(float) Constant 0 22: 9(fvec4) ConstantComposite 20 21 21 20 23: TypePointer Function 9(fvec4) 25: 18(int) Constant 1 26: 10(int) Constant 0 27: TypePointer Function 10(int) 33: TypePointer Input 6(PS_INPUT) 34(i): 33(ptr) Variable Input 40: TypePointer Output 9(fvec4) 41(@entryPointOutput.vColor): 40(ptr) Variable Output 44: 10(int) Constant 1 45: TypeArray 10(int) 44 46: TypePointer Output 45 47(@entryPointOutput.nCoverageMask): 46(ptr) Variable Output 50: TypePointer Output 10(int) 4(main): 2 Function None 3 5: Label 32(i): 7(ptr) Variable Function 36(flattenTemp): 16(ptr) Variable Function 37(param): 7(ptr) Variable Function 35: 6(PS_INPUT) Load 34(i) Store 32(i) 35 38: 6(PS_INPUT) Load 32(i) Store 37(param) 38 39:11(PS_OUTPUT) FunctionCall 14(@main(struct-PS_INPUT1;) 37(param) Store 36(flattenTemp) 39 42: 23(ptr) AccessChain 36(flattenTemp) 19 43: 9(fvec4) Load 42 Store 41(@entryPointOutput.vColor) 43 48: 27(ptr) AccessChain 36(flattenTemp) 25 49: 10(int) Load 48 51: 50(ptr) AccessChain 47(@entryPointOutput.nCoverageMask) 19 Store 51 49 Return FunctionEnd 14(@main(struct-PS_INPUT1;):11(PS_OUTPUT) Function None 12 13(i): 7(ptr) FunctionParameter 15: Label 17(o): 16(ptr) Variable Function 24: 23(ptr) AccessChain 17(o) 19 Store 24 22 28: 27(ptr) AccessChain 17(o) 25 Store 28 26 29:11(PS_OUTPUT) Load 17(o) ReturnValue 29 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.dashI.vert.d.out000066400000000000000000000001511506534232700223670ustar00rootroot00000000000000vert.spv: hlsl.dashI.vert ./bar.h ./parent.h inc1/path1/local.h inc1/path1/notHere.h inc1/path2/remote.h glslang-16.0.0/Test/baseResults/hlsl.dashI.vert.out000066400000000000000000000065001506534232700221510ustar00rootroot00000000000000hlsl.dashI.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 38 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 11 "$Global" MemberName 11($Global) 0 "i1" MemberName 11($Global) 1 "p1" MemberName 11($Global) 2 "p2" MemberName 11($Global) 3 "p3" MemberName 11($Global) 4 "i4" Name 13 "" Name 38 "@entryPointOutput" Decorate 11($Global) Block MemberDecorate 11($Global) 0 Offset 0 MemberDecorate 11($Global) 1 Offset 16 MemberDecorate 11($Global) 2 Offset 32 MemberDecorate 11($Global) 3 Offset 48 MemberDecorate 11($Global) 4 Offset 64 Decorate 13 Binding 0 Decorate 13 DescriptorSet 0 Decorate 38(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 12: TypePointer Uniform 11($Global) 13: 12(ptr) Variable Uniform 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Uniform 7(fvec4) 19: 14(int) Constant 4 23: 14(int) Constant 1 27: 14(int) Constant 2 31: 14(int) Constant 3 37: TypePointer Output 7(fvec4) 38(@entryPointOutput): 37(ptr) Variable Output 4(main): 2 Function None 3 5: Label 39: 7(fvec4) FunctionCall 9(@main() Store 38(@entryPointOutput) 39 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 17: 16(ptr) AccessChain 13 15 18: 7(fvec4) Load 17 20: 16(ptr) AccessChain 13 19 21: 7(fvec4) Load 20 22: 7(fvec4) FAdd 18 21 24: 16(ptr) AccessChain 13 23 25: 7(fvec4) Load 24 26: 7(fvec4) FAdd 22 25 28: 16(ptr) AccessChain 13 27 29: 7(fvec4) Load 28 30: 7(fvec4) FAdd 26 29 32: 16(ptr) AccessChain 13 31 33: 7(fvec4) Load 32 34: 7(fvec4) FAdd 30 33 ReturnValue 34 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out000066400000000000000000000027361506534232700257030ustar00rootroot00000000000000hlsl.deadFunctionMissingBody.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 16 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 16 "@entryPointOutput" Decorate 16(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: 6(float) Constant 0 12: 7(fvec4) ConstantComposite 11 11 11 11 15: TypePointer Output 7(fvec4) 16(@entryPointOutput): 15(ptr) Variable Output 4(main): 2 Function None 3 5: Label 17: 7(fvec4) FunctionCall 9(@main() Store 16(@entryPointOutput) 17 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label ReturnValue 12 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.depthGreater.frag.out000066400000000000000000000071531506534232700235030ustar00rootroot00000000000000hlsl.depthGreater.frag Shader version: 500 gl_FragCoord origin is upper left using depth_greater 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(f1; ( temp void) 0:2 Function Parameters: 0:2 'depth' ( out float) 0:? Sequence 0:3 move second child to first child ( temp float) 0:3 'depth' ( out float) 0:3 Constant: 0:3 0.200000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 Function Call: @PixelShaderFunction(f1; ( temp void) 0:? 'depth' ( temp float) 0:2 move second child to first child ( temp float) 0:? 'depth' ( out float FragDepth) 0:? 'depth' ( temp float) 0:? Linker Objects 0:? 'depth' ( out float FragDepth) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_greater 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(f1; ( temp void) 0:2 Function Parameters: 0:2 'depth' ( out float) 0:? Sequence 0:3 move second child to first child ( temp float) 0:3 'depth' ( out float) 0:3 Constant: 0:3 0.200000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 Function Call: @PixelShaderFunction(f1; ( temp void) 0:? 'depth' ( temp float) 0:2 move second child to first child ( temp float) 0:? 'depth' ( out float FragDepth) 0:? 'depth' ( temp float) 0:? Linker Objects 0:? 'depth' ( out float FragDepth) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 18 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing ExecutionMode 4 DepthGreater Source HLSL 500 Name 4 "PixelShaderFunction" Name 10 "@PixelShaderFunction(f1;" Name 9 "depth" Name 13 "depth" Name 14 "param" Name 18 "depth" Decorate 18(depth) BuiltIn FragDepth 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 2 7(ptr) 12: 6(float) Constant 1045220557 17: TypePointer Output 6(float) 18(depth): 17(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 13(depth): 7(ptr) Variable Function 14(param): 7(ptr) Variable Function 15: 2 FunctionCall 10(@PixelShaderFunction(f1;) 14(param) 16: 6(float) Load 14(param) Store 13(depth) 16 19: 6(float) Load 13(depth) Store 18(depth) 19 Return FunctionEnd 10(@PixelShaderFunction(f1;): 2 Function None 8 9(depth): 7(ptr) FunctionParameter 11: Label Store 9(depth) 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.depthLess.frag.out000066400000000000000000000055571506534232700230260ustar00rootroot00000000000000hlsl.depthLess.frag Shader version: 500 gl_FragCoord origin is upper left using depth_less 0:? Sequence 0:2 Function Definition: @PixelShaderFunction( ( temp float) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 0.200000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? '@entryPointOutput' ( out float FragDepth) 0:2 Function Call: @PixelShaderFunction( ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' ( out float FragDepth) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_less 0:? Sequence 0:2 Function Definition: @PixelShaderFunction( ( temp float) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 0.200000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? '@entryPointOutput' ( out float FragDepth) 0:2 Function Call: @PixelShaderFunction( ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' ( out float FragDepth) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 14 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing ExecutionMode 4 DepthLess Source HLSL 500 Name 4 "PixelShaderFunction" Name 8 "@PixelShaderFunction(" Name 14 "@entryPointOutput" Decorate 14(@entryPointOutput) BuiltIn FragDepth 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: 6(float) Constant 1045220557 13: TypePointer Output 6(float) 14(@entryPointOutput): 13(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 15: 6(float) FunctionCall 8(@PixelShaderFunction() Store 14(@entryPointOutput) 15 Return FunctionEnd 8(@PixelShaderFunction(): 6(float) Function None 7 9: Label ReturnValue 10 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.discard.frag.out000066400000000000000000000170121506534232700224710ustar00rootroot00000000000000hlsl.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 10000 // Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 45 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 10 "foo(f1;" Name 9 "f" Name 16 "@PixelShaderFunction(vf4;" Name 15 "input" Name 25 "param" Name 39 "f" Name 43 "input" Name 45 "input" Name 47 "param" Decorate 45(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 26: TypeInt 32 0 27: 26(int) Constant 2 31: 26(int) Constant 0 34: 6(float) Constant 0 44: TypePointer Input 12(fvec4) 45(input): 44(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 43(input): 13(ptr) Variable Function 47(param): 13(ptr) Variable Function 46: 12(fvec4) Load 45(input) Store 43(input) 46 48: 12(fvec4) Load 43(input) Store 47(param) 48 49: 2 FunctionCall 16(@PixelShaderFunction(vf4;) 47(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 Kill 23: Label Return FunctionEnd 16(@PixelShaderFunction(vf4;): 2 Function None 14 15(input): 13(ptr) FunctionParameter 17: Label 25(param): 7(ptr) Variable Function 39(f): 7(ptr) Variable Function 28: 7(ptr) AccessChain 15(input) 27 29: 6(float) Load 28 Store 25(param) 29 30: 2 FunctionCall 10(foo(f1;) 25(param) 32: 7(ptr) AccessChain 15(input) 31 33: 6(float) Load 32 35: 20(bool) FUnordNotEqual 33 34 SelectionMerge 37 None BranchConditional 35 36 37 36: Label Kill 37: Label 40: 7(ptr) AccessChain 15(input) 31 41: 6(float) Load 40 Store 39(f) 41 Kill FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.doLoop.frag.out000066400000000000000000000353701506534232700223230ustar00rootroot00000000000000hlsl.doLoop.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: f0( ( temp void) 0:1 Function Parameters: 0:? Sequence 0:2 Loop with condition not tested first: Unroll 0:2 Loop Condition 0:2 Constant: 0:2 false (const bool) 0:2 No loop body 0:5 Function Definition: f1( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:6 Loop with condition not tested first: Unroll 0:6 Loop Condition 0:6 Constant: 0:6 false (const bool) 0:6 No loop body 0:9 Function Definition: f2(f1; ( temp float) 0:9 Function Parameters: 0:9 'input' ( in float) 0:? Sequence 0:10 Loop with condition not tested first 0:10 Loop Condition 0:10 Compare Greater Than ( temp bool) 0:10 'input' ( in float) 0:10 Constant: 0:10 2.000000 0:10 Loop Body 0:? Sequence 0:10 Branch: Return with expression 0:10 Construct float ( temp float) 0:10 Construct vec4 ( temp 4-component vector of float) 0:10 'input' ( in float) 0:13 Function Definition: f3(f1; ( temp void) 0:13 Function Parameters: 0:13 'input' ( in float) 0:? Sequence 0:14 Loop with condition not tested first 0:14 Loop Condition 0:14 Compare Less Than ( temp bool) 0:14 'input' ( in float) 0:14 Constant: 0:14 10.000000 0:14 Loop Body 0:14 Pre-Increment ( temp float) 0:14 'input' ( in float) 0:17 Function Definition: f4(f1; ( temp void) 0:17 Function Parameters: 0:17 'input' ( in float) 0:? Sequence 0:18 Loop with condition not tested first 0:18 Loop Condition 0:18 Compare Less Than ( temp bool) 0:18 Pre-Increment ( temp float) 0:18 'input' ( in float) 0:18 Constant: 0:18 10.000000 0:18 Loop Body 0:18 Loop with condition tested first 0:18 Loop Condition 0:18 Compare Less Than ( temp bool) 0:18 Pre-Increment ( temp float) 0:18 'input' ( in float) 0:18 Constant: 0:18 10.000000 0:18 No loop body 0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float) 0:22 Function Parameters: 0:22 'input' ( in float) 0:? Sequence 0:23 Function Call: f0( ( temp void) 0:24 Function Call: f1( ( temp void) 0:25 Function Call: f2(f1; ( temp float) 0:25 'input' ( in float) 0:26 Function Call: f3(f1; ( temp void) 0:26 'input' ( in float) 0:27 Function Call: f4(f1; ( temp void) 0:27 'input' ( in float) 0:28 Branch: Return with expression 0:28 Construct vec4 ( temp 4-component vector of float) 0:28 'input' ( in float) 0:22 Function Definition: PixelShaderFunction( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 move second child to first child ( temp float) 0:? 'input' ( temp float) 0:? 'input' (layout( location=0) in float) 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float) 0:? 'input' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: f0( ( temp void) 0:1 Function Parameters: 0:? Sequence 0:2 Loop with condition not tested first: Unroll 0:2 Loop Condition 0:2 Constant: 0:2 false (const bool) 0:2 No loop body 0:5 Function Definition: f1( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:6 Loop with condition not tested first: Unroll 0:6 Loop Condition 0:6 Constant: 0:6 false (const bool) 0:6 No loop body 0:9 Function Definition: f2(f1; ( temp float) 0:9 Function Parameters: 0:9 'input' ( in float) 0:? Sequence 0:10 Loop with condition not tested first 0:10 Loop Condition 0:10 Compare Greater Than ( temp bool) 0:10 'input' ( in float) 0:10 Constant: 0:10 2.000000 0:10 Loop Body 0:? Sequence 0:10 Branch: Return with expression 0:10 Construct float ( temp float) 0:10 Construct vec4 ( temp 4-component vector of float) 0:10 'input' ( in float) 0:13 Function Definition: f3(f1; ( temp void) 0:13 Function Parameters: 0:13 'input' ( in float) 0:? Sequence 0:14 Loop with condition not tested first 0:14 Loop Condition 0:14 Compare Less Than ( temp bool) 0:14 'input' ( in float) 0:14 Constant: 0:14 10.000000 0:14 Loop Body 0:14 Pre-Increment ( temp float) 0:14 'input' ( in float) 0:17 Function Definition: f4(f1; ( temp void) 0:17 Function Parameters: 0:17 'input' ( in float) 0:? Sequence 0:18 Loop with condition not tested first 0:18 Loop Condition 0:18 Compare Less Than ( temp bool) 0:18 Pre-Increment ( temp float) 0:18 'input' ( in float) 0:18 Constant: 0:18 10.000000 0:18 Loop Body 0:18 Loop with condition tested first 0:18 Loop Condition 0:18 Compare Less Than ( temp bool) 0:18 Pre-Increment ( temp float) 0:18 'input' ( in float) 0:18 Constant: 0:18 10.000000 0:18 No loop body 0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float) 0:22 Function Parameters: 0:22 'input' ( in float) 0:? Sequence 0:23 Function Call: f0( ( temp void) 0:24 Function Call: f1( ( temp void) 0:25 Function Call: f2(f1; ( temp float) 0:25 'input' ( in float) 0:26 Function Call: f3(f1; ( temp void) 0:26 'input' ( in float) 0:27 Function Call: f4(f1; ( temp void) 0:27 'input' ( in float) 0:28 Branch: Return with expression 0:28 Construct vec4 ( temp 4-component vector of float) 0:28 'input' ( in float) 0:22 Function Definition: PixelShaderFunction( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 move second child to first child ( temp float) 0:? 'input' ( temp float) 0:? 'input' (layout( location=0) in float) 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float) 0:? 'input' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 99 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 92 95 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 6 "f0(" Name 8 "f1(" Name 14 "f2(f1;" Name 13 "input" Name 18 "f3(f1;" Name 17 "input" Name 21 "f4(f1;" Name 20 "input" Name 26 "@PixelShaderFunction(f1;" Name 25 "input" Name 77 "param" Name 80 "param" Name 83 "param" Name 90 "input" Name 92 "input" Name 95 "@entryPointOutput" Name 96 "param" Decorate 92(input) Location 0 Decorate 95(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 11: TypePointer Function 10(float) 12: TypeFunction 10(float) 11(ptr) 16: TypeFunction 2 11(ptr) 23: TypeVector 10(float) 4 24: TypeFunction 23(fvec4) 11(ptr) 32: TypeBool 33: 32(bool) ConstantFalse 47: 10(float) Constant 1073741824 55: 10(float) Constant 1065353216 58: 10(float) Constant 1092616192 91: TypePointer Input 10(float) 92(input): 91(ptr) Variable Input 94: TypePointer Output 23(fvec4) 95(@entryPointOutput): 94(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 90(input): 11(ptr) Variable Function 96(param): 11(ptr) Variable Function 93: 10(float) Load 92(input) Store 90(input) 93 97: 10(float) Load 90(input) Store 96(param) 97 98: 23(fvec4) FunctionCall 26(@PixelShaderFunction(f1;) 96(param) Store 95(@entryPointOutput) 98 Return FunctionEnd 6(f0(): 2 Function None 3 7: Label Branch 28 28: Label LoopMerge 30 31 Unroll Branch 29 29: Label Branch 31 31: Label BranchConditional 33 28 30 30: Label Return FunctionEnd 8(f1(): 2 Function None 3 9: Label Branch 34 34: Label LoopMerge 36 37 Unroll Branch 35 35: Label Branch 37 37: Label BranchConditional 33 34 36 36: Label Return FunctionEnd 14(f2(f1;): 10(float) Function None 12 13(input): 11(ptr) FunctionParameter 15: Label Branch 38 38: Label LoopMerge 40 41 None Branch 39 39: Label 42: 10(float) Load 13(input) 43: 23(fvec4) CompositeConstruct 42 42 42 42 44: 10(float) CompositeExtract 43 0 ReturnValue 44 41: Label Branch 38 40: Label Unreachable FunctionEnd 18(f3(f1;): 2 Function None 16 17(input): 11(ptr) FunctionParameter 19: Label Branch 50 50: Label LoopMerge 52 53 None Branch 51 51: Label 54: 10(float) Load 17(input) 56: 10(float) FAdd 54 55 Store 17(input) 56 Branch 53 53: Label 57: 10(float) Load 17(input) 59: 32(bool) FOrdLessThan 57 58 BranchConditional 59 50 52 52: Label Return FunctionEnd 21(f4(f1;): 2 Function None 16 20(input): 11(ptr) FunctionParameter 22: Label Branch 60 60: Label LoopMerge 62 63 None Branch 61 61: Label Branch 64 64: Label LoopMerge 66 67 None Branch 68 68: Label 69: 10(float) Load 20(input) 70: 10(float) FAdd 69 55 Store 20(input) 70 71: 32(bool) FOrdLessThan 70 58 BranchConditional 71 65 66 65: Label Branch 67 67: Label Branch 64 66: Label Branch 63 63: Label 72: 10(float) Load 20(input) 73: 10(float) FAdd 72 55 Store 20(input) 73 74: 32(bool) FOrdLessThan 73 58 BranchConditional 74 60 62 62: Label Return FunctionEnd 26(@PixelShaderFunction(f1;): 23(fvec4) Function None 24 25(input): 11(ptr) FunctionParameter 27: Label 77(param): 11(ptr) Variable Function 80(param): 11(ptr) Variable Function 83(param): 11(ptr) Variable Function 75: 2 FunctionCall 6(f0() 76: 2 FunctionCall 8(f1() 78: 10(float) Load 25(input) Store 77(param) 78 79: 10(float) FunctionCall 14(f2(f1;) 77(param) 81: 10(float) Load 25(input) Store 80(param) 81 82: 2 FunctionCall 18(f3(f1;) 80(param) 84: 10(float) Load 25(input) Store 83(param) 84 85: 2 FunctionCall 21(f4(f1;) 83(param) 86: 10(float) Load 25(input) 87: 23(fvec4) CompositeConstruct 86 86 86 86 ReturnValue 87 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.domain.1.tese.out000066400000000000000000001076311506534232700225160ustar00rootroot00000000000000hlsl.domain.1.tese Shader version: 500 input primitive = triangles vertex spacing = none triangle order = none 0:? Sequence 0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Function Parameters: 0:22 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 'f' ( in float) 0:22 'tesscoord' ( in 3-component vector of float) 0:22 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:? Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 add ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 component-wise multiply ( temp float) 0:25 direct index ( temp float) 0:25 'tesscoord' ( in 3-component vector of float) 0:25 Constant: 0:25 0 (const int) 0:25 'f' ( in float) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 norm: direct index for structure ( temp 3-component vector of float) 0:26 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:26 Constant: 0:26 1 (const int) 0:26 add ( temp 3-component vector of float) 0:26 norm: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:26 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 direct index ( temp float) 0:26 'tesscoord' ( in 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:28 direct index ( temp float) 0:28 'tesscoord' ( in 3-component vector of float) 0:28 Constant: 0:28 2 (const int) 0:30 Branch: Return with expression 0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 pos: direct index for structure ( temp 4-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:22 norm: direct index for structure ( temp 3-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 pos: direct index for structure ( temp 4-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:22 norm: direct index for structure ( temp 3-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 pos: direct index for structure ( temp 4-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:22 Constant: 0:22 2 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:22 norm: direct index for structure ( temp 3-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:22 Constant: 0:22 2 (const int) 0:22 move second child to first child ( temp float) 0:? 'f' ( temp float) 0:? 'f' (layout( location=2) patch in float) 0:22 move second child to first child ( temp 3-component vector of float) 0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 direct index ( temp float) 0:22 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp float) 0:22 direct index ( temp float) 0:22 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp float) 0:22 direct index ( temp float) 0:22 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:22 Constant: 0:22 2 (const int) 0:22 move second child to first child ( temp float) 0:22 flInsideTessFactor: direct index for structure ( temp float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 Constant: 0:22 1 (const int) 0:22 direct index ( patch in float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'f' ( temp float) 0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:22 pos: direct index for structure ( temp 4-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:22 norm: direct index for structure ( temp 3-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:? 'f' (layout( location=2) patch in float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) Linked tessellation evaluation stage: Shader version: 500 input primitive = triangles vertex spacing = none triangle order = none 0:? Sequence 0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Function Parameters: 0:22 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 'f' ( in float) 0:22 'tesscoord' ( in 3-component vector of float) 0:22 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:? Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 add ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 component-wise multiply ( temp float) 0:25 direct index ( temp float) 0:25 'tesscoord' ( in 3-component vector of float) 0:25 Constant: 0:25 0 (const int) 0:25 'f' ( in float) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 norm: direct index for structure ( temp 3-component vector of float) 0:26 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:26 Constant: 0:26 1 (const int) 0:26 add ( temp 3-component vector of float) 0:26 norm: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:26 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 direct index ( temp float) 0:26 'tesscoord' ( in 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:28 direct index ( temp float) 0:28 'tesscoord' ( in 3-component vector of float) 0:28 Constant: 0:28 2 (const int) 0:30 Branch: Return with expression 0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 pos: direct index for structure ( temp 4-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:22 norm: direct index for structure ( temp 3-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 pos: direct index for structure ( temp 4-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:22 norm: direct index for structure ( temp 3-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 pos: direct index for structure ( temp 4-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:22 Constant: 0:22 2 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:22 norm: direct index for structure ( temp 3-component vector of float) 0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:22 Constant: 0:22 2 (const int) 0:22 move second child to first child ( temp float) 0:? 'f' ( temp float) 0:? 'f' (layout( location=2) patch in float) 0:22 move second child to first child ( temp 3-component vector of float) 0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 direct index ( temp float) 0:22 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp float) 0:22 direct index ( temp float) 0:22 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp float) 0:22 direct index ( temp float) 0:22 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:22 Constant: 0:22 2 (const int) 0:22 move second child to first child ( temp float) 0:22 flInsideTessFactor: direct index for structure ( temp float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 Constant: 0:22 1 (const int) 0:22 direct index ( patch in float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:22 Constant: 0:22 0 (const int) 0:22 Sequence 0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'f' ( temp float) 0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:22 pos: direct index for structure ( temp 4-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:22 norm: direct index for structure ( temp 3-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Constant: 0:22 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:? 'f' (layout( location=2) patch in float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 125 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 4 "main" 55 62 82 85 91 104 118 122 ExecutionMode 4 Triangles Source HLSL 500 Name 4 "main" Name 9 "ds_in_t" MemberName 9(ds_in_t) 0 "pos" MemberName 9(ds_in_t) 1 "norm" Name 16 "pcf_in_t" MemberName 16(pcf_in_t) 0 "flTessFactor" MemberName 16(pcf_in_t) 1 "flInsideTessFactor" Name 18 "gs_in_t" MemberName 18(gs_in_t) 0 "pos" MemberName 18(gs_in_t) 1 "norm" Name 24 "@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;" Name 20 "i" Name 21 "f" Name 22 "tesscoord" Name 23 "pcf_data" Name 27 "o" Name 52 "i" Name 55 "i.pos" Name 62 "i.norm" Name 80 "f" Name 82 "f" Name 84 "tesscoord" Name 85 "tesscoord" Name 87 "pcf_data" Name 91 "pcf_data.flTessFactor" Name 104 "pcf_data.flInsideTessFactor" Name 108 "flattenTemp" Name 110 "param" Name 112 "param" Name 114 "param" Name 118 "@entryPointOutput.pos" Name 122 "@entryPointOutput.norm" Decorate 55(i.pos) Location 0 Decorate 62(i.norm) Location 1 Decorate 82(f) Patch Decorate 82(f) Location 2 Decorate 85(tesscoord) BuiltIn TessCoord Decorate 85(tesscoord) Patch Decorate 91(pcf_data.flTessFactor) BuiltIn TessLevelOuter Decorate 91(pcf_data.flTessFactor) Patch Decorate 104(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner Decorate 104(pcf_data.flInsideTessFactor) Patch Decorate 118(@entryPointOutput.pos) Location 0 Decorate 122(@entryPointOutput.norm) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 3 9(ds_in_t): TypeStruct 7(fvec4) 8(fvec3) 10: TypeInt 32 0 11: 10(int) Constant 3 12: TypeArray 9(ds_in_t) 11 13: TypePointer Function 6(float) 14: TypePointer Function 8(fvec3) 15: TypeArray 6(float) 11 16(pcf_in_t): TypeStruct 15 6(float) 17: TypePointer Function 16(pcf_in_t) 18(gs_in_t): TypeStruct 7(fvec4) 8(fvec3) 19: TypeFunction 18(gs_in_t) 12 13(ptr) 14(ptr) 17(ptr) 26: TypePointer Function 18(gs_in_t) 28: TypeInt 32 1 29: 28(int) Constant 0 31: 10(int) Constant 0 38: TypePointer Function 7(fvec4) 40: 28(int) Constant 1 42: 10(int) Constant 1 51: TypePointer Function 12 53: TypeArray 7(fvec4) 11 54: TypePointer Input 53 55(i.pos): 54(ptr) Variable Input 56: TypePointer Input 7(fvec4) 60: TypeArray 8(fvec3) 11 61: TypePointer Input 60 62(i.norm): 61(ptr) Variable Input 63: TypePointer Input 8(fvec3) 73: 28(int) Constant 2 81: TypePointer Input 6(float) 82(f): 81(ptr) Variable Input 85(tesscoord): 63(ptr) Variable Input 88: 10(int) Constant 4 89: TypeArray 6(float) 88 90: TypePointer Input 89 91(pcf_data.flTessFactor): 90(ptr) Variable Input 101: 10(int) Constant 2 102: TypeArray 6(float) 101 103: TypePointer Input 102 104(pcf_data.flInsideTessFactor): 103(ptr) Variable Input 117: TypePointer Output 7(fvec4) 118(@entryPointOutput.pos): 117(ptr) Variable Output 121: TypePointer Output 8(fvec3) 122(@entryPointOutput.norm): 121(ptr) Variable Output 4(main): 2 Function None 3 5: Label 52(i): 51(ptr) Variable Function 80(f): 13(ptr) Variable Function 84(tesscoord): 14(ptr) Variable Function 87(pcf_data): 17(ptr) Variable Function 108(flattenTemp): 26(ptr) Variable Function 110(param): 13(ptr) Variable Function 112(param): 14(ptr) Variable Function 114(param): 17(ptr) Variable Function 57: 56(ptr) AccessChain 55(i.pos) 29 58: 7(fvec4) Load 57 59: 38(ptr) AccessChain 52(i) 29 29 Store 59 58 64: 63(ptr) AccessChain 62(i.norm) 29 65: 8(fvec3) Load 64 66: 14(ptr) AccessChain 52(i) 29 40 Store 66 65 67: 56(ptr) AccessChain 55(i.pos) 40 68: 7(fvec4) Load 67 69: 38(ptr) AccessChain 52(i) 40 29 Store 69 68 70: 63(ptr) AccessChain 62(i.norm) 40 71: 8(fvec3) Load 70 72: 14(ptr) AccessChain 52(i) 40 40 Store 72 71 74: 56(ptr) AccessChain 55(i.pos) 73 75: 7(fvec4) Load 74 76: 38(ptr) AccessChain 52(i) 73 29 Store 76 75 77: 63(ptr) AccessChain 62(i.norm) 73 78: 8(fvec3) Load 77 79: 14(ptr) AccessChain 52(i) 73 40 Store 79 78 83: 6(float) Load 82(f) Store 80(f) 83 86: 8(fvec3) Load 85(tesscoord) Store 84(tesscoord) 86 92: 81(ptr) AccessChain 91(pcf_data.flTessFactor) 29 93: 6(float) Load 92 94: 13(ptr) AccessChain 87(pcf_data) 29 29 Store 94 93 95: 81(ptr) AccessChain 91(pcf_data.flTessFactor) 40 96: 6(float) Load 95 97: 13(ptr) AccessChain 87(pcf_data) 29 40 Store 97 96 98: 81(ptr) AccessChain 91(pcf_data.flTessFactor) 73 99: 6(float) Load 98 100: 13(ptr) AccessChain 87(pcf_data) 29 73 Store 100 99 105: 81(ptr) AccessChain 104(pcf_data.flInsideTessFactor) 29 106: 6(float) Load 105 107: 13(ptr) AccessChain 87(pcf_data) 40 Store 107 106 109: 12 Load 52(i) 111: 6(float) Load 80(f) Store 110(param) 111 113: 8(fvec3) Load 84(tesscoord) Store 112(param) 113 115:16(pcf_in_t) Load 87(pcf_data) Store 114(param) 115 116: 18(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;) 109 110(param) 112(param) 114(param) Store 108(flattenTemp) 116 119: 38(ptr) AccessChain 108(flattenTemp) 29 120: 7(fvec4) Load 119 Store 118(@entryPointOutput.pos) 120 123: 14(ptr) AccessChain 108(flattenTemp) 40 124: 8(fvec3) Load 123 Store 122(@entryPointOutput.norm) 124 Return FunctionEnd 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;): 18(gs_in_t) Function None 19 20(i): 12 FunctionParameter 21(f): 13(ptr) FunctionParameter 22(tesscoord): 14(ptr) FunctionParameter 23(pcf_data): 17(ptr) FunctionParameter 25: Label 27(o): 26(ptr) Variable Function 30: 7(fvec4) CompositeExtract 20(i) 0 0 32: 13(ptr) AccessChain 22(tesscoord) 31 33: 6(float) Load 32 34: 6(float) Load 21(f) 35: 6(float) FMul 33 34 36: 7(fvec4) CompositeConstruct 35 35 35 35 37: 7(fvec4) FAdd 30 36 39: 38(ptr) AccessChain 27(o) 29 Store 39 37 41: 8(fvec3) CompositeExtract 20(i) 0 1 43: 13(ptr) AccessChain 22(tesscoord) 42 44: 6(float) Load 43 45: 8(fvec3) CompositeConstruct 44 44 44 46: 8(fvec3) FAdd 41 45 47: 14(ptr) AccessChain 27(o) 40 Store 47 46 48: 18(gs_in_t) Load 27(o) ReturnValue 48 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.domain.2.tese.out000066400000000000000000001100151506534232700225050ustar00rootroot00000000000000hlsl.domain.2.tese Shader version: 500 input primitive = triangles vertex spacing = none triangle order = none 0:? Sequence 0:25 Function Definition: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Function Parameters: 0:25 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 'tesscoord' ( in 3-component vector of float) 0:? Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 pos: direct index for structure ( temp 4-component vector of float) 0:28 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 Constant: 0:28 0 (const int) 0:28 add ( temp 4-component vector of float) 0:28 pos: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 direct index ( temp float) 0:28 'tesscoord' ( in 3-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp 3-component vector of float) 0:29 norm: direct index for structure ( temp 3-component vector of float) 0:29 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:29 Constant: 0:29 1 (const int) 0:29 add ( temp 3-component vector of float) 0:29 norm: direct index for structure ( temp 3-component vector of float) 0:29 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:29 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 direct index ( temp float) 0:29 'tesscoord' ( in 3-component vector of float) 0:29 Constant: 0:29 1 (const int) 0:31 direct index ( temp float) 0:31 'tesscoord' ( in 3-component vector of float) 0:31 Constant: 0:31 2 (const int) 0:33 Branch: Return with expression 0:33 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Function Definition: main( ( temp void) 0:25 Function Parameters: 0:? Sequence 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:25 Constant: 0:25 1 (const int) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:25 Constant: 0:25 2 (const int) 0:25 move second child to first child ( temp float) 0:25 flInsideTessFactor: direct index for structure ( temp float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 1 (const int) 0:25 direct index ( patch in float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp float) 0:25 foo: direct index for structure ( temp float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 2 (const int) 0:? 'pcf_data.foo' (layout( location=2) patch in float) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:25 norm: direct index for structure ( temp 3-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:25 Constant: 0:25 1 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:25 norm: direct index for structure ( temp 3-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:25 Constant: 0:25 1 (const int) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:25 Constant: 0:25 2 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:25 norm: direct index for structure ( temp 3-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:25 Constant: 0:25 2 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:25 Sequence 0:25 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'tesscoord' ( temp 3-component vector of float) 0:25 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:25 norm: direct index for structure ( temp 3-component vector of float) 0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data.foo' (layout( location=2) patch in float) Linked tessellation evaluation stage: Shader version: 500 input primitive = triangles vertex spacing = none triangle order = none 0:? Sequence 0:25 Function Definition: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Function Parameters: 0:25 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 'tesscoord' ( in 3-component vector of float) 0:? Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 pos: direct index for structure ( temp 4-component vector of float) 0:28 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 Constant: 0:28 0 (const int) 0:28 add ( temp 4-component vector of float) 0:28 pos: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 direct index ( temp float) 0:28 'tesscoord' ( in 3-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:29 move second child to first child ( temp 3-component vector of float) 0:29 norm: direct index for structure ( temp 3-component vector of float) 0:29 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:29 Constant: 0:29 1 (const int) 0:29 add ( temp 3-component vector of float) 0:29 norm: direct index for structure ( temp 3-component vector of float) 0:29 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:29 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:29 direct index ( temp float) 0:29 'tesscoord' ( in 3-component vector of float) 0:29 Constant: 0:29 1 (const int) 0:31 direct index ( temp float) 0:31 'tesscoord' ( in 3-component vector of float) 0:31 Constant: 0:31 2 (const int) 0:33 Branch: Return with expression 0:33 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Function Definition: main( ( temp void) 0:25 Function Parameters: 0:? Sequence 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:25 Constant: 0:25 1 (const int) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:25 Constant: 0:25 2 (const int) 0:25 move second child to first child ( temp float) 0:25 flInsideTessFactor: direct index for structure ( temp float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 1 (const int) 0:25 direct index ( patch in float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp float) 0:25 foo: direct index for structure ( temp float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Constant: 0:25 2 (const int) 0:? 'pcf_data.foo' (layout( location=2) patch in float) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:25 norm: direct index for structure ( temp 3-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:25 Constant: 0:25 1 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:25 norm: direct index for structure ( temp 3-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:25 Constant: 0:25 1 (const int) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:25 Constant: 0:25 2 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:25 norm: direct index for structure ( temp 3-component vector of float) 0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:25 Constant: 0:25 2 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:25 Sequence 0:25 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'tesscoord' ( temp 3-component vector of float) 0:25 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:25 pos: direct index for structure ( temp 4-component vector of float) 0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:25 norm: direct index for structure ( temp 3-component vector of float) 0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Constant: 0:25 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float) 0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data.foo' (layout( location=2) patch in float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 120 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 4 "main" 52 67 71 78 85 103 113 117 ExecutionMode 4 Triangles Source HLSL 500 Name 4 "main" Name 10 "pcf_in_t" MemberName 10(pcf_in_t) 0 "flTessFactor" MemberName 10(pcf_in_t) 1 "flInsideTessFactor" MemberName 10(pcf_in_t) 2 "foo" Name 14 "ds_in_t" MemberName 14(ds_in_t) 0 "pos" MemberName 14(ds_in_t) 1 "norm" Name 17 "gs_in_t" MemberName 17(gs_in_t) 0 "pos" MemberName 17(gs_in_t) 1 "norm" Name 22 "@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;" Name 19 "pcf_data" Name 20 "i" Name 21 "tesscoord" Name 25 "o" Name 48 "pcf_data" Name 52 "pcf_data.flTessFactor" Name 67 "pcf_data.flInsideTessFactor" Name 71 "pcf_data.foo" Name 75 "i" Name 78 "i.pos" Name 85 "i.norm" Name 102 "tesscoord" Name 103 "tesscoord" Name 105 "flattenTemp" Name 107 "param" Name 109 "param" Name 113 "@entryPointOutput.pos" Name 117 "@entryPointOutput.norm" Decorate 52(pcf_data.flTessFactor) BuiltIn TessLevelOuter Decorate 52(pcf_data.flTessFactor) Patch Decorate 67(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner Decorate 67(pcf_data.flInsideTessFactor) Patch Decorate 71(pcf_data.foo) Patch Decorate 71(pcf_data.foo) Location 2 Decorate 78(i.pos) Location 0 Decorate 85(i.norm) Location 1 Decorate 103(tesscoord) BuiltIn TessCoord Decorate 103(tesscoord) Patch Decorate 113(@entryPointOutput.pos) Location 0 Decorate 117(@entryPointOutput.norm) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 3 9: TypeArray 6(float) 8 10(pcf_in_t): TypeStruct 9 6(float) 6(float) 11: TypePointer Function 10(pcf_in_t) 12: TypeVector 6(float) 4 13: TypeVector 6(float) 3 14(ds_in_t): TypeStruct 12(fvec4) 13(fvec3) 15: TypeArray 14(ds_in_t) 8 16: TypePointer Function 13(fvec3) 17(gs_in_t): TypeStruct 12(fvec4) 13(fvec3) 18: TypeFunction 17(gs_in_t) 11(ptr) 15 16(ptr) 24: TypePointer Function 17(gs_in_t) 26: TypeInt 32 1 27: 26(int) Constant 0 29: 7(int) Constant 0 30: TypePointer Function 6(float) 35: TypePointer Function 12(fvec4) 37: 26(int) Constant 1 39: 7(int) Constant 1 49: 7(int) Constant 4 50: TypeArray 6(float) 49 51: TypePointer Input 50 52(pcf_data.flTessFactor): 51(ptr) Variable Input 53: TypePointer Input 6(float) 60: 26(int) Constant 2 64: 7(int) Constant 2 65: TypeArray 6(float) 64 66: TypePointer Input 65 67(pcf_data.flInsideTessFactor): 66(ptr) Variable Input 71(pcf_data.foo): 53(ptr) Variable Input 74: TypePointer Function 15 76: TypeArray 12(fvec4) 8 77: TypePointer Input 76 78(i.pos): 77(ptr) Variable Input 79: TypePointer Input 12(fvec4) 83: TypeArray 13(fvec3) 8 84: TypePointer Input 83 85(i.norm): 84(ptr) Variable Input 86: TypePointer Input 13(fvec3) 103(tesscoord): 86(ptr) Variable Input 112: TypePointer Output 12(fvec4) 113(@entryPointOutput.pos): 112(ptr) Variable Output 116: TypePointer Output 13(fvec3) 117(@entryPointOutput.norm): 116(ptr) Variable Output 4(main): 2 Function None 3 5: Label 48(pcf_data): 11(ptr) Variable Function 75(i): 74(ptr) Variable Function 102(tesscoord): 16(ptr) Variable Function 105(flattenTemp): 24(ptr) Variable Function 107(param): 11(ptr) Variable Function 109(param): 16(ptr) Variable Function 54: 53(ptr) AccessChain 52(pcf_data.flTessFactor) 27 55: 6(float) Load 54 56: 30(ptr) AccessChain 48(pcf_data) 27 27 Store 56 55 57: 53(ptr) AccessChain 52(pcf_data.flTessFactor) 37 58: 6(float) Load 57 59: 30(ptr) AccessChain 48(pcf_data) 27 37 Store 59 58 61: 53(ptr) AccessChain 52(pcf_data.flTessFactor) 60 62: 6(float) Load 61 63: 30(ptr) AccessChain 48(pcf_data) 27 60 Store 63 62 68: 53(ptr) AccessChain 67(pcf_data.flInsideTessFactor) 27 69: 6(float) Load 68 70: 30(ptr) AccessChain 48(pcf_data) 37 Store 70 69 72: 6(float) Load 71(pcf_data.foo) 73: 30(ptr) AccessChain 48(pcf_data) 60 Store 73 72 80: 79(ptr) AccessChain 78(i.pos) 27 81: 12(fvec4) Load 80 82: 35(ptr) AccessChain 75(i) 27 27 Store 82 81 87: 86(ptr) AccessChain 85(i.norm) 27 88: 13(fvec3) Load 87 89: 16(ptr) AccessChain 75(i) 27 37 Store 89 88 90: 79(ptr) AccessChain 78(i.pos) 37 91: 12(fvec4) Load 90 92: 35(ptr) AccessChain 75(i) 37 27 Store 92 91 93: 86(ptr) AccessChain 85(i.norm) 37 94: 13(fvec3) Load 93 95: 16(ptr) AccessChain 75(i) 37 37 Store 95 94 96: 79(ptr) AccessChain 78(i.pos) 60 97: 12(fvec4) Load 96 98: 35(ptr) AccessChain 75(i) 60 27 Store 98 97 99: 86(ptr) AccessChain 85(i.norm) 60 100: 13(fvec3) Load 99 101: 16(ptr) AccessChain 75(i) 60 37 Store 101 100 104: 13(fvec3) Load 103(tesscoord) Store 102(tesscoord) 104 106: 15 Load 75(i) 108:10(pcf_in_t) Load 48(pcf_data) Store 107(param) 108 110: 13(fvec3) Load 102(tesscoord) Store 109(param) 110 111: 17(gs_in_t) FunctionCall 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;) 107(param) 106 109(param) Store 105(flattenTemp) 111 114: 35(ptr) AccessChain 105(flattenTemp) 27 115: 12(fvec4) Load 114 Store 113(@entryPointOutput.pos) 115 118: 16(ptr) AccessChain 105(flattenTemp) 37 119: 13(fvec3) Load 118 Store 117(@entryPointOutput.norm) 119 Return FunctionEnd 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;): 17(gs_in_t) Function None 18 19(pcf_data): 11(ptr) FunctionParameter 20(i): 15 FunctionParameter 21(tesscoord): 16(ptr) FunctionParameter 23: Label 25(o): 24(ptr) Variable Function 28: 12(fvec4) CompositeExtract 20(i) 0 0 31: 30(ptr) AccessChain 21(tesscoord) 29 32: 6(float) Load 31 33: 12(fvec4) CompositeConstruct 32 32 32 32 34: 12(fvec4) FAdd 28 33 36: 35(ptr) AccessChain 25(o) 27 Store 36 34 38: 13(fvec3) CompositeExtract 20(i) 0 1 40: 30(ptr) AccessChain 21(tesscoord) 39 41: 6(float) Load 40 42: 13(fvec3) CompositeConstruct 41 41 41 43: 13(fvec3) FAdd 38 42 44: 16(ptr) AccessChain 25(o) 37 Store 44 43 45: 17(gs_in_t) Load 25(o) ReturnValue 45 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.domain.3.tese.out000066400000000000000000000762261506534232700225250ustar00rootroot00000000000000hlsl.domain.3.tese Shader version: 500 input primitive = isolines vertex spacing = none triangle order = none 0:? Sequence 0:24 Function Definition: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Function Parameters: 0:24 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 'tesscoord' ( in 2-component vector of float) 0:24 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 pos: direct index for structure ( temp 4-component vector of float) 0:27 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:27 Constant: 0:27 0 (const int) 0:27 add ( temp 4-component vector of float) 0:27 pos: direct index for structure ( temp 4-component vector of float) 0:27 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:27 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index ( temp float) 0:27 'tesscoord' ( in 2-component vector of float) 0:27 Constant: 0:27 0 (const int) 0:28 move second child to first child ( temp 3-component vector of float) 0:28 norm: direct index for structure ( temp 3-component vector of float) 0:28 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 Constant: 0:28 1 (const int) 0:28 add ( temp 3-component vector of float) 0:28 norm: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 direct index ( temp float) 0:28 'tesscoord' ( in 2-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:30 Branch: Return with expression 0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 3-component vector of float) 0:24 norm: direct index for structure ( temp 3-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp 3-component vector of float) 0:24 norm: direct index for structure ( temp 3-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp 2-component vector of float) 0:? 'tesscoord' ( temp 2-component vector of float) 0:? Construct vec2 ( temp 2-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:24 Constant: 0:24 2 (const int) 0:24 move second child to first child ( temp float) 0:24 flInsideTessFactor: direct index for structure ( temp float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 Constant: 0:24 1 (const int) 0:24 direct index ( patch in float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:24 Constant: 0:24 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'tesscoord' ( temp 2-component vector of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:24 norm: direct index for structure ( temp 3-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float) 0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) Linked tessellation evaluation stage: Shader version: 500 input primitive = isolines vertex spacing = none triangle order = none 0:? Sequence 0:24 Function Definition: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Function Parameters: 0:24 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 'tesscoord' ( in 2-component vector of float) 0:24 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 pos: direct index for structure ( temp 4-component vector of float) 0:27 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:27 Constant: 0:27 0 (const int) 0:27 add ( temp 4-component vector of float) 0:27 pos: direct index for structure ( temp 4-component vector of float) 0:27 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:27 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index ( temp float) 0:27 'tesscoord' ( in 2-component vector of float) 0:27 Constant: 0:27 0 (const int) 0:28 move second child to first child ( temp 3-component vector of float) 0:28 norm: direct index for structure ( temp 3-component vector of float) 0:28 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 Constant: 0:28 1 (const int) 0:28 add ( temp 3-component vector of float) 0:28 norm: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 direct index ( temp float) 0:28 'tesscoord' ( in 2-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:30 Branch: Return with expression 0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 3-component vector of float) 0:24 norm: direct index for structure ( temp 3-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index (layout( location=0) in 4-component vector of float) 0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp 3-component vector of float) 0:24 norm: direct index for structure ( temp 3-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=1) in 3-component vector of float) 0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp 2-component vector of float) 0:? 'tesscoord' ( temp 2-component vector of float) 0:? Construct vec2 ( temp 2-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 flTessFactor: direct index for structure ( temp 3-element array of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 direct index ( patch in float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:24 Constant: 0:24 2 (const int) 0:24 move second child to first child ( temp float) 0:24 flInsideTessFactor: direct index for structure ( temp float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 Constant: 0:24 1 (const int) 0:24 direct index ( patch in float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:24 Constant: 0:24 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'tesscoord' ( temp 2-component vector of float) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:24 norm: direct index for structure ( temp 3-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float) 0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 116 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 4 "main" 55 62 74 83 97 109 113 ExecutionMode 4 Isolines Source HLSL 500 Name 4 "main" Name 9 "ds_in_t" MemberName 9(ds_in_t) 0 "pos" MemberName 9(ds_in_t) 1 "norm" Name 17 "pcf_in_t" MemberName 17(pcf_in_t) 0 "flTessFactor" MemberName 17(pcf_in_t) 1 "flInsideTessFactor" Name 19 "gs_in_t" MemberName 19(gs_in_t) 0 "pos" MemberName 19(gs_in_t) 1 "norm" Name 24 "@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;" Name 21 "i" Name 22 "tesscoord" Name 23 "pcf_data" Name 27 "o" Name 52 "i" Name 55 "i.pos" Name 62 "i.norm" Name 73 "tesscoord" Name 74 "tesscoord" Name 79 "pcf_data" Name 83 "pcf_data.flTessFactor" Name 97 "pcf_data.flInsideTessFactor" Name 101 "flattenTemp" Name 103 "param" Name 105 "param" Name 109 "@entryPointOutput.pos" Name 113 "@entryPointOutput.norm" Decorate 55(i.pos) Location 0 Decorate 62(i.norm) Location 1 Decorate 74(tesscoord) BuiltIn TessCoord Decorate 74(tesscoord) Patch Decorate 83(pcf_data.flTessFactor) BuiltIn TessLevelOuter Decorate 83(pcf_data.flTessFactor) Patch Decorate 97(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner Decorate 97(pcf_data.flInsideTessFactor) Patch Decorate 109(@entryPointOutput.pos) Location 0 Decorate 113(@entryPointOutput.norm) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 3 9(ds_in_t): TypeStruct 7(fvec4) 8(fvec3) 10: TypeInt 32 0 11: 10(int) Constant 2 12: TypeArray 9(ds_in_t) 11 13: TypeVector 6(float) 2 14: TypePointer Function 13(fvec2) 15: 10(int) Constant 3 16: TypeArray 6(float) 15 17(pcf_in_t): TypeStruct 16 6(float) 18: TypePointer Function 17(pcf_in_t) 19(gs_in_t): TypeStruct 7(fvec4) 8(fvec3) 20: TypeFunction 19(gs_in_t) 12 14(ptr) 18(ptr) 26: TypePointer Function 19(gs_in_t) 28: TypeInt 32 1 29: 28(int) Constant 0 31: 10(int) Constant 0 32: TypePointer Function 6(float) 37: TypePointer Function 7(fvec4) 39: 28(int) Constant 1 41: 10(int) Constant 1 46: TypePointer Function 8(fvec3) 51: TypePointer Function 12 53: TypeArray 7(fvec4) 11 54: TypePointer Input 53 55(i.pos): 54(ptr) Variable Input 56: TypePointer Input 7(fvec4) 60: TypeArray 8(fvec3) 11 61: TypePointer Input 60 62(i.norm): 61(ptr) Variable Input 63: TypePointer Input 8(fvec3) 74(tesscoord): 63(ptr) Variable Input 80: 10(int) Constant 4 81: TypeArray 6(float) 80 82: TypePointer Input 81 83(pcf_data.flTessFactor): 82(ptr) Variable Input 84: TypePointer Input 6(float) 91: 28(int) Constant 2 95: TypeArray 6(float) 11 96: TypePointer Input 95 97(pcf_data.flInsideTessFactor): 96(ptr) Variable Input 108: TypePointer Output 7(fvec4) 109(@entryPointOutput.pos): 108(ptr) Variable Output 112: TypePointer Output 8(fvec3) 113(@entryPointOutput.norm): 112(ptr) Variable Output 4(main): 2 Function None 3 5: Label 52(i): 51(ptr) Variable Function 73(tesscoord): 14(ptr) Variable Function 79(pcf_data): 18(ptr) Variable Function 101(flattenTemp): 26(ptr) Variable Function 103(param): 14(ptr) Variable Function 105(param): 18(ptr) Variable Function 57: 56(ptr) AccessChain 55(i.pos) 29 58: 7(fvec4) Load 57 59: 37(ptr) AccessChain 52(i) 29 29 Store 59 58 64: 63(ptr) AccessChain 62(i.norm) 29 65: 8(fvec3) Load 64 66: 46(ptr) AccessChain 52(i) 29 39 Store 66 65 67: 56(ptr) AccessChain 55(i.pos) 39 68: 7(fvec4) Load 67 69: 37(ptr) AccessChain 52(i) 39 29 Store 69 68 70: 63(ptr) AccessChain 62(i.norm) 39 71: 8(fvec3) Load 70 72: 46(ptr) AccessChain 52(i) 39 39 Store 72 71 75: 8(fvec3) Load 74(tesscoord) 76: 6(float) CompositeExtract 75 0 77: 6(float) CompositeExtract 75 1 78: 13(fvec2) CompositeConstruct 76 77 Store 73(tesscoord) 78 85: 84(ptr) AccessChain 83(pcf_data.flTessFactor) 29 86: 6(float) Load 85 87: 32(ptr) AccessChain 79(pcf_data) 29 29 Store 87 86 88: 84(ptr) AccessChain 83(pcf_data.flTessFactor) 39 89: 6(float) Load 88 90: 32(ptr) AccessChain 79(pcf_data) 29 39 Store 90 89 92: 84(ptr) AccessChain 83(pcf_data.flTessFactor) 91 93: 6(float) Load 92 94: 32(ptr) AccessChain 79(pcf_data) 29 91 Store 94 93 98: 84(ptr) AccessChain 97(pcf_data.flInsideTessFactor) 29 99: 6(float) Load 98 100: 32(ptr) AccessChain 79(pcf_data) 39 Store 100 99 102: 12 Load 52(i) 104: 13(fvec2) Load 73(tesscoord) Store 103(param) 104 106:17(pcf_in_t) Load 79(pcf_data) Store 105(param) 106 107: 19(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;) 102 103(param) 105(param) Store 101(flattenTemp) 107 110: 37(ptr) AccessChain 101(flattenTemp) 29 111: 7(fvec4) Load 110 Store 109(@entryPointOutput.pos) 111 114: 46(ptr) AccessChain 101(flattenTemp) 39 115: 8(fvec3) Load 114 Store 113(@entryPointOutput.norm) 115 Return FunctionEnd 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;): 19(gs_in_t) Function None 20 21(i): 12 FunctionParameter 22(tesscoord): 14(ptr) FunctionParameter 23(pcf_data): 18(ptr) FunctionParameter 25: Label 27(o): 26(ptr) Variable Function 30: 7(fvec4) CompositeExtract 21(i) 0 0 33: 32(ptr) AccessChain 22(tesscoord) 31 34: 6(float) Load 33 35: 7(fvec4) CompositeConstruct 34 34 34 34 36: 7(fvec4) FAdd 30 35 38: 37(ptr) AccessChain 27(o) 29 Store 38 36 40: 8(fvec3) CompositeExtract 21(i) 0 1 42: 32(ptr) AccessChain 22(tesscoord) 41 43: 6(float) Load 42 44: 8(fvec3) CompositeConstruct 43 43 43 45: 8(fvec3) FAdd 40 44 47: 46(ptr) AccessChain 27(o) 39 Store 47 45 48: 19(gs_in_t) Load 27(o) ReturnValue 48 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.earlydepthstencil.frag.out000066400000000000000000000216041506534232700246050ustar00rootroot00000000000000hlsl.earlydepthstencil.frag Shader version: 500 gl_FragCoord origin is upper left using early_fragment_tests 0:? Sequence 0:8 Function Definition: @main(struct-InputStruct-vf41; ( temp uint) 0:8 Function Parameters: 0:8 'input' ( in structure{ temp 4-component vector of float Position}) 0:? Sequence 0:10 move second child to first child ( temp uint) 0:10 'oldVal' ( temp uint) 0:10 imageAtomicExchange ( temp uint) 0:10 'Values' (layout( r32ui) uniform uimage2D) 0:10 Construct uvec2 ( temp 2-component vector of uint) 0:10 Convert float to uint ( temp uint) 0:10 direct index ( temp float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'input' ( in structure{ temp 4-component vector of float Position}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 0 (const int) 0:10 Convert float to uint ( temp uint) 0:10 direct index ( temp float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'input' ( in structure{ temp 4-component vector of float Position}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 1 (const uint) 0:11 Branch: Return with expression 0:11 'oldVal' ( temp uint) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:? 'input' ( temp structure{ temp 4-component vector of float Position}) 0:8 Constant: 0:8 0 (const int) 0:? 'input.Position' ( in 4-component vector of float FragCoord) 0:8 move second child to first child ( temp uint) 0:? '@entryPointOutput' (layout( location=0) out uint) 0:8 Function Call: @main(struct-InputStruct-vf41; ( temp uint) 0:? 'input' ( temp structure{ temp 4-component vector of float Position}) 0:? Linker Objects 0:? 'Values' (layout( r32ui) uniform uimage2D) 0:? '@entryPointOutput' (layout( location=0) out uint) 0:? 'input.Position' ( in 4-component vector of float FragCoord) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using early_fragment_tests 0:? Sequence 0:8 Function Definition: @main(struct-InputStruct-vf41; ( temp uint) 0:8 Function Parameters: 0:8 'input' ( in structure{ temp 4-component vector of float Position}) 0:? Sequence 0:10 move second child to first child ( temp uint) 0:10 'oldVal' ( temp uint) 0:10 imageAtomicExchange ( temp uint) 0:10 'Values' (layout( r32ui) uniform uimage2D) 0:10 Construct uvec2 ( temp 2-component vector of uint) 0:10 Convert float to uint ( temp uint) 0:10 direct index ( temp float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'input' ( in structure{ temp 4-component vector of float Position}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 0 (const int) 0:10 Convert float to uint ( temp uint) 0:10 direct index ( temp float) 0:10 Position: direct index for structure ( temp 4-component vector of float) 0:10 'input' ( in structure{ temp 4-component vector of float Position}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 1 (const uint) 0:11 Branch: Return with expression 0:11 'oldVal' ( temp uint) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 Position: direct index for structure ( temp 4-component vector of float) 0:? 'input' ( temp structure{ temp 4-component vector of float Position}) 0:8 Constant: 0:8 0 (const int) 0:? 'input.Position' ( in 4-component vector of float FragCoord) 0:8 move second child to first child ( temp uint) 0:? '@entryPointOutput' (layout( location=0) out uint) 0:8 Function Call: @main(struct-InputStruct-vf41; ( temp uint) 0:? 'input' ( temp structure{ temp 4-component vector of float Position}) 0:? Linker Objects 0:? 'Values' (layout( r32ui) uniform uimage2D) 0:? '@entryPointOutput' (layout( location=0) out uint) 0:? 'input.Position' ( in 4-component vector of float FragCoord) // Module Version 10000 // 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" 41 46 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 EarlyFragmentTests Source HLSL 500 Name 4 "main" Name 8 "InputStruct" MemberName 8(InputStruct) 0 "Position" Name 13 "@main(struct-InputStruct-vf41;" Name 12 "input" Name 16 "oldVal" Name 19 "Values" Name 39 "input" Name 41 "input.Position" Name 46 "@entryPointOutput" Name 47 "param" Decorate 19(Values) Binding 0 Decorate 19(Values) DescriptorSet 0 Decorate 41(input.Position) BuiltIn FragCoord Decorate 46(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(InputStruct): TypeStruct 7(fvec4) 9: TypePointer Function 8(InputStruct) 10: TypeInt 32 0 11: TypeFunction 10(int) 9(ptr) 15: TypePointer Function 10(int) 17: TypeImage 10(int) 2D nonsampled format:R32ui 18: TypePointer UniformConstant 17 19(Values): 18(ptr) Variable UniformConstant 20: TypeInt 32 1 21: 20(int) Constant 0 22: 10(int) Constant 0 23: TypePointer Function 6(float) 27: 10(int) Constant 1 31: TypeVector 10(int) 2 33: TypePointer Image 10(int) 40: TypePointer Input 7(fvec4) 41(input.Position): 40(ptr) Variable Input 43: TypePointer Function 7(fvec4) 45: TypePointer Output 10(int) 46(@entryPointOutput): 45(ptr) Variable Output 4(main): 2 Function None 3 5: Label 39(input): 9(ptr) Variable Function 47(param): 9(ptr) Variable Function 42: 7(fvec4) Load 41(input.Position) 44: 43(ptr) AccessChain 39(input) 21 Store 44 42 48:8(InputStruct) Load 39(input) Store 47(param) 48 49: 10(int) FunctionCall 13(@main(struct-InputStruct-vf41;) 47(param) Store 46(@entryPointOutput) 49 Return FunctionEnd 13(@main(struct-InputStruct-vf41;): 10(int) Function None 11 12(input): 9(ptr) FunctionParameter 14: Label 16(oldVal): 15(ptr) Variable Function 24: 23(ptr) AccessChain 12(input) 21 22 25: 6(float) Load 24 26: 10(int) ConvertFToU 25 28: 23(ptr) AccessChain 12(input) 21 27 29: 6(float) Load 28 30: 10(int) ConvertFToU 29 32: 31(ivec2) CompositeConstruct 26 30 34: 33(ptr) ImageTexelPointer 19(Values) 32 22 35: 10(int) AtomicExchange 34 27 22 27 Store 16(oldVal) 35 36: 10(int) Load 16(oldVal) ReturnValue 36 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.emptystruct.init.vert.out000066400000000000000000000111401506534232700244620ustar00rootroot00000000000000hlsl.emptystruct.init.vert WARNING: 0:3: 'Test_Empty' : variable with qualifier 'const' not initialized; zero initializing Shader version: 500 0:? Sequence 0:6 Function Definition: @main(u1; ( temp 4-component vector of float) 0:6 Function Parameters: 0:6 'vertexIndex' ( in uint) 0:? Sequence 0:7 Branch: Return with expression 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp uint) 0:? 'vertexIndex' ( temp uint) 0:? 'vertexIndex' (layout( location=0) in uint) 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'vertexIndex' ( temp uint) 0:? Linker Objects 0:? 'Test_Empty' ( const structure{}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'vertexIndex' (layout( location=0) in uint) Linked vertex stage: Shader version: 500 0:? Sequence 0:6 Function Definition: @main(u1; ( temp 4-component vector of float) 0:6 Function Parameters: 0:6 'vertexIndex' ( in uint) 0:? Sequence 0:7 Branch: Return with expression 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp uint) 0:? 'vertexIndex' ( temp uint) 0:? 'vertexIndex' (layout( location=0) in uint) 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'vertexIndex' ( temp uint) 0:? Linker Objects 0:? 'Test_Empty' ( const structure{}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'vertexIndex' (layout( location=0) in uint) // 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" 20 23 Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "vertexIndex" Name 18 "vertexIndex" Name 20 "vertexIndex" Name 23 "@entryPointOutput" Name 24 "param" Name 27 "Test" Decorate 20(vertexIndex) Location 0 Decorate 23(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 14: 8(float) Constant 0 15: 9(fvec4) ConstantComposite 14 14 14 14 19: TypePointer Input 6(int) 20(vertexIndex): 19(ptr) Variable Input 22: TypePointer Output 9(fvec4) 23(@entryPointOutput): 22(ptr) Variable Output 27(Test): TypeStruct 28: 27(Test) ConstantComposite 4(main): 2 Function None 3 5: Label 18(vertexIndex): 7(ptr) Variable Function 24(param): 7(ptr) Variable Function 21: 6(int) Load 20(vertexIndex) Store 18(vertexIndex) 21 25: 6(int) Load 18(vertexIndex) Store 24(param) 25 26: 9(fvec4) FunctionCall 12(@main(u1;) 24(param) Store 23(@entryPointOutput) 26 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(vertexIndex): 7(ptr) FunctionParameter 13: Label ReturnValue 15 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.emptystructreturn.frag.out000066400000000000000000000077061506534232700247340ustar00rootroot00000000000000hlsl.emptystructreturn.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main(struct-ps_in1; ( temp structure{}) 0:10 Function Parameters: 0:10 'i' ( in structure{}) 0:? Sequence 0:12 Branch: Return with expression 0:12 'o' ( temp structure{}) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? 'i' ( in structure{}) 0:10 Sequence 0:10 move second child to first child ( temp structure{}) 0:? '@entryPointOutput' ( out structure{}) 0:10 Function Call: @main(struct-ps_in1; ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? Linker Objects Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main(struct-ps_in1; ( temp structure{}) 0:10 Function Parameters: 0:10 'i' ( in structure{}) 0:? Sequence 0:12 Branch: Return with expression 0:12 'o' ( temp structure{}) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? 'i' ( in structure{}) 0:10 Sequence 0:10 move second child to first child ( temp structure{}) 0:? '@entryPointOutput' ( out structure{}) 0:10 Function Call: @main(struct-ps_in1; ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? Linker Objects Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 6 "ps_in" Name 8 "ps_out" Name 11 "@main(struct-ps_in1;" Name 10 "i" Name 14 "o" Name 18 "i" Name 20 "i" Name 23 "@entryPointOutput" Name 24 "param" 2: TypeVoid 3: TypeFunction 2 6(ps_in): TypeStruct 7: TypePointer Function 6(ps_in) 8(ps_out): TypeStruct 9: TypeFunction 8(ps_out) 7(ptr) 13: TypePointer Function 8(ps_out) 19: TypePointer Input 6(ps_in) 20(i): 19(ptr) Variable Input 22: TypePointer Output 8(ps_out) 23(@entryPointOutput): 22(ptr) Variable Output 4(main): 2 Function None 3 5: Label 18(i): 7(ptr) Variable Function 24(param): 7(ptr) Variable Function 21: 6(ps_in) Load 20(i) Store 18(i) 21 25: 6(ps_in) Load 18(i) Store 24(param) 25 26: 8(ps_out) FunctionCall 11(@main(struct-ps_in1;) 24(param) Store 23(@entryPointOutput) 26 Return FunctionEnd 11(@main(struct-ps_in1;): 8(ps_out) Function None 9 10(i): 7(ptr) FunctionParameter 12: Label 14(o): 13(ptr) Variable Function 15: 8(ps_out) Load 14(o) ReturnValue 15 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.emptystructreturn.tesc.out000066400000000000000000000771611506534232700247550ustar00rootroot00000000000000hlsl.emptystructreturn.tesc Shader version: 500 vertices = 3 vertex spacing = equal_spacing triangle order = cw 0:? Sequence 0:16 Function Definition: blob(struct-HullInputType-vf41[3]; ( temp void) 0:16 Function Parameters: 0:16 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) 0:20 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:20 Function Parameters: 0:20 'inputPatch' ( in 3-element array of structure{ temp 4-component vector of float position}) 0:20 'patchId' ( in uint) 0:? Sequence 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 edges: direct index for structure ( temp 3-element array of float) 0:24 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2.000000 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 edges: direct index for structure ( temp 3-element array of float) 0:25 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2.000000 0:26 move second child to first child ( temp float) 0:26 direct index ( temp float) 0:26 edges: direct index for structure ( temp 3-element array of float) 0:26 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 2.000000 0:29 move second child to first child ( temp float) 0:29 inside: direct index for structure ( temp float) 0:29 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2.000000 0:31 Branch: Return with expression 0:31 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:42 Function Definition: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{}) 0:42 Function Parameters: 0:42 'stage_input' ( in structure{}) 0:42 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) 0:42 'pointId' ( in uint) 0:42 'patchId' ( in uint) 0:? Sequence 0:44 Function Call: blob(struct-HullInputType-vf41[3]; ( temp void) 0:44 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) 0:46 Branch: Return with expression 0:46 'output' ( temp structure{}) 0:42 Function Definition: main( ( temp void) 0:42 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp structure{}) 0:? 'stage_input' ( temp structure{}) 0:? 'stage_input' ( in structure{}) 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 position: direct index for structure ( temp 4-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float position}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( in 4-component vector of float Position) 0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) 0:42 Constant: 0:42 0 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 position: direct index for structure ( temp 4-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float position}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( in 4-component vector of float Position) 0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) 0:42 Constant: 0:42 1 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 position: direct index for structure ( temp 4-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float position}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:42 Constant: 0:42 2 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( in 4-component vector of float Position) 0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) 0:42 Constant: 0:42 2 (const int) 0:42 move second child to first child ( temp uint) 0:? 'pointId' ( temp uint) 0:? 'pointId' ( in uint InvocationID) 0:42 move second child to first child ( temp uint) 0:? 'patchId' ( temp uint) 0:? 'patchId' ( in uint PrimitiveID) 0:42 Sequence 0:42 move second child to first child ( temp structure{}) 0:42 indirect index ( out structure{}) 0:? '@entryPointOutput' ( out 3-element array of structure{}) 0:? 'pointId' ( in uint InvocationID) 0:42 Function Call: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{}) 0:? 'stage_input' ( temp structure{}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:? 'pointId' ( temp uint) 0:? 'patchId' ( temp uint) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'pointId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:? 'patchId' ( in uint PrimitiveID) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? inside: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 1 (const int) 0:? Linker Objects 0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) 0:? 'pointId' ( in uint InvocationID) 0:? 'patchId' ( in uint PrimitiveID) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) Linked tessellation control stage: Shader version: 500 vertices = 3 vertex spacing = equal_spacing triangle order = cw 0:? Sequence 0:16 Function Definition: blob(struct-HullInputType-vf41[3]; ( temp void) 0:16 Function Parameters: 0:16 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) 0:20 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:20 Function Parameters: 0:20 'inputPatch' ( in 3-element array of structure{ temp 4-component vector of float position}) 0:20 'patchId' ( in uint) 0:? Sequence 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 edges: direct index for structure ( temp 3-element array of float) 0:24 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2.000000 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 edges: direct index for structure ( temp 3-element array of float) 0:25 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 2.000000 0:26 move second child to first child ( temp float) 0:26 direct index ( temp float) 0:26 edges: direct index for structure ( temp 3-element array of float) 0:26 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 2.000000 0:29 move second child to first child ( temp float) 0:29 inside: direct index for structure ( temp float) 0:29 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 2.000000 0:31 Branch: Return with expression 0:31 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:42 Function Definition: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{}) 0:42 Function Parameters: 0:42 'stage_input' ( in structure{}) 0:42 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) 0:42 'pointId' ( in uint) 0:42 'patchId' ( in uint) 0:? Sequence 0:44 Function Call: blob(struct-HullInputType-vf41[3]; ( temp void) 0:44 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) 0:46 Branch: Return with expression 0:46 'output' ( temp structure{}) 0:42 Function Definition: main( ( temp void) 0:42 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp structure{}) 0:? 'stage_input' ( temp structure{}) 0:? 'stage_input' ( in structure{}) 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 position: direct index for structure ( temp 4-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float position}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( in 4-component vector of float Position) 0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) 0:42 Constant: 0:42 0 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 position: direct index for structure ( temp 4-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float position}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( in 4-component vector of float Position) 0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) 0:42 Constant: 0:42 1 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 position: direct index for structure ( temp 4-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float position}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:42 Constant: 0:42 2 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( in 4-component vector of float Position) 0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) 0:42 Constant: 0:42 2 (const int) 0:42 move second child to first child ( temp uint) 0:? 'pointId' ( temp uint) 0:? 'pointId' ( in uint InvocationID) 0:42 move second child to first child ( temp uint) 0:? 'patchId' ( temp uint) 0:? 'patchId' ( in uint PrimitiveID) 0:42 Sequence 0:42 move second child to first child ( temp structure{}) 0:42 indirect index ( out structure{}) 0:? '@entryPointOutput' ( out 3-element array of structure{}) 0:? 'pointId' ( in uint InvocationID) 0:42 Function Call: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{}) 0:? 'stage_input' ( temp structure{}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:? 'pointId' ( temp uint) 0:? 'patchId' ( temp uint) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'pointId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) 0:? 'patchId' ( in uint PrimitiveID) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? inside: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) 0:? Constant: 0:? 1 (const int) 0:? Linker Objects 0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) 0:? 'pointId' ( in uint InvocationID) 0:? 'patchId' ( in uint PrimitiveID) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 132 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 65 79 82 115 128 ExecutionMode 4 OutputVertices 3 ExecutionMode 4 Triangles ExecutionMode 4 SpacingEqual ExecutionMode 4 VertexOrderCw Source HLSL 500 Name 4 "main" Name 8 "HullInputType" MemberName 8(HullInputType) 0 "position" Name 15 "blob(struct-HullInputType-vf41[3];" Name 14 "patch" Name 19 "ConstantOutputType" MemberName 19(ConstantOutputType) 0 "edges" MemberName 19(ConstantOutputType) 1 "inside" Name 23 "ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;" Name 21 "inputPatch" Name 22 "patchId" Name 25 "EmptyStruct" Name 27 "HullOutputType" Name 33 "@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;" Name 29 "stage_input" Name 30 "patch" Name 31 "pointId" Name 32 "patchId" Name 36 "output" Name 50 "param" Name 54 "output" Name 58 "stage_input" Name 60 "stage_input" Name 62 "patch" Name 65 "patch.position" Name 77 "pointId" Name 79 "pointId" Name 81 "patchId" Name 82 "patchId" Name 86 "@entryPointOutput" Name 88 "param" Name 90 "param" Name 92 "param" Name 94 "param" Name 107 "@patchConstantResult" Name 108 "param" Name 110 "param" Name 115 "@patchConstantOutput.edges" Name 128 "@patchConstantOutput.inside" Decorate 65(patch.position) BuiltIn Position Decorate 79(pointId) BuiltIn InvocationId Decorate 82(patchId) BuiltIn PrimitiveId Decorate 115(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 115(@patchConstantOutput.edges) Patch Decorate 128(@patchConstantOutput.inside) BuiltIn TessLevelInner Decorate 128(@patchConstantOutput.inside) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(HullInputType): TypeStruct 7(fvec4) 9: TypeInt 32 0 10: 9(int) Constant 3 11: TypeArray 8(HullInputType) 10 12: TypePointer Function 11 13: TypeFunction 2 12(ptr) 17: TypePointer Function 9(int) 18: TypeArray 6(float) 10 19(ConstantOutputType): TypeStruct 18 6(float) 20: TypeFunction 19(ConstantOutputType) 12(ptr) 17(ptr) 25(EmptyStruct): TypeStruct 26: TypePointer Function 25(EmptyStruct) 27(HullOutputType): TypeStruct 28: TypeFunction 27(HullOutputType) 26(ptr) 12(ptr) 17(ptr) 17(ptr) 35: TypePointer Function 19(ConstantOutputType) 37: TypeInt 32 1 38: 37(int) Constant 0 39: 6(float) Constant 1073741824 40: TypePointer Function 6(float) 42: 37(int) Constant 1 44: 37(int) Constant 2 53: TypePointer Function 27(HullOutputType) 59: TypePointer Input 25(EmptyStruct) 60(stage_input): 59(ptr) Variable Input 63: TypeArray 7(fvec4) 10 64: TypePointer Input 63 65(patch.position): 64(ptr) Variable Input 66: TypePointer Input 7(fvec4) 69: TypePointer Function 7(fvec4) 78: TypePointer Input 9(int) 79(pointId): 78(ptr) Variable Input 82(patchId): 78(ptr) Variable Input 84: TypeArray 27(HullOutputType) 10 85: TypePointer Output 84 86(@entryPointOutput): 85(ptr) Variable Output 97: TypePointer Output 27(HullOutputType) 99: 9(int) Constant 2 100: 9(int) Constant 4 101: 9(int) Constant 0 103: TypeBool 113: TypeArray 6(float) 100 114: TypePointer Output 113 115(@patchConstantOutput.edges): 114(ptr) Variable Output 118: TypePointer Output 6(float) 126: TypeArray 6(float) 99 127: TypePointer Output 126 128(@patchConstantOutput.inside): 127(ptr) Variable Output 4(main): 2 Function None 3 5: Label 58(stage_input): 26(ptr) Variable Function 62(patch): 12(ptr) Variable Function 77(pointId): 17(ptr) Variable Function 81(patchId): 17(ptr) Variable Function 88(param): 26(ptr) Variable Function 90(param): 12(ptr) Variable Function 92(param): 17(ptr) Variable Function 94(param): 17(ptr) Variable Function 107(@patchConstantResult): 35(ptr) Variable Function 108(param): 12(ptr) Variable Function 110(param): 17(ptr) Variable Function 61:25(EmptyStruct) Load 60(stage_input) Store 58(stage_input) 61 67: 66(ptr) AccessChain 65(patch.position) 38 68: 7(fvec4) Load 67 70: 69(ptr) AccessChain 62(patch) 38 38 Store 70 68 71: 66(ptr) AccessChain 65(patch.position) 42 72: 7(fvec4) Load 71 73: 69(ptr) AccessChain 62(patch) 42 38 Store 73 72 74: 66(ptr) AccessChain 65(patch.position) 44 75: 7(fvec4) Load 74 76: 69(ptr) AccessChain 62(patch) 44 38 Store 76 75 80: 9(int) Load 79(pointId) Store 77(pointId) 80 83: 9(int) Load 82(patchId) Store 81(patchId) 83 87: 9(int) Load 79(pointId) 89:25(EmptyStruct) Load 58(stage_input) Store 88(param) 89 91: 11 Load 62(patch) Store 90(param) 91 93: 9(int) Load 77(pointId) Store 92(param) 93 95: 9(int) Load 81(patchId) Store 94(param) 95 96:27(HullOutputType) FunctionCall 33(@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;) 88(param) 90(param) 92(param) 94(param) 98: 97(ptr) AccessChain 86(@entryPointOutput) 87 Store 98 96 ControlBarrier 99 100 101 102: 9(int) Load 79(pointId) 104: 103(bool) IEqual 102 38 SelectionMerge 106 None BranchConditional 104 105 106 105: Label 109: 11 Load 62(patch) Store 108(param) 109 111: 9(int) Load 82(patchId) Store 110(param) 111 112:19(ConstantOutputType) FunctionCall 23(ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;) 108(param) 110(param) Store 107(@patchConstantResult) 112 116: 40(ptr) AccessChain 107(@patchConstantResult) 38 38 117: 6(float) Load 116 119: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 38 Store 119 117 120: 40(ptr) AccessChain 107(@patchConstantResult) 38 42 121: 6(float) Load 120 122: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 42 Store 122 121 123: 40(ptr) AccessChain 107(@patchConstantResult) 38 44 124: 6(float) Load 123 125: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 44 Store 125 124 129: 40(ptr) AccessChain 107(@patchConstantResult) 42 130: 6(float) Load 129 131: 118(ptr) AccessChain 128(@patchConstantOutput.inside) 38 Store 131 130 Branch 106 106: Label Return FunctionEnd 15(blob(struct-HullInputType-vf41[3];): 2 Function None 13 14(patch): 12(ptr) FunctionParameter 16: Label Return FunctionEnd 23(ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;):19(ConstantOutputType) Function None 20 21(inputPatch): 12(ptr) FunctionParameter 22(patchId): 17(ptr) FunctionParameter 24: Label 36(output): 35(ptr) Variable Function 41: 40(ptr) AccessChain 36(output) 38 38 Store 41 39 43: 40(ptr) AccessChain 36(output) 38 42 Store 43 39 45: 40(ptr) AccessChain 36(output) 38 44 Store 45 39 46: 40(ptr) AccessChain 36(output) 42 Store 46 39 47:19(ConstantOutputType) Load 36(output) ReturnValue 47 FunctionEnd 33(@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;):27(HullOutputType) Function None 28 29(stage_input): 26(ptr) FunctionParameter 30(patch): 12(ptr) FunctionParameter 31(pointId): 17(ptr) FunctionParameter 32(patchId): 17(ptr) FunctionParameter 34: Label 50(param): 12(ptr) Variable Function 54(output): 53(ptr) Variable Function 51: 11 Load 30(patch) Store 50(param) 51 52: 2 FunctionCall 15(blob(struct-HullInputType-vf41[3];) 50(param) 55:27(HullOutputType) Load 54(output) ReturnValue 55 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.emptystructreturn.vert.out000066400000000000000000000075001506534232700247650ustar00rootroot00000000000000hlsl.emptystructreturn.vert Shader version: 500 0:? Sequence 0:10 Function Definition: @main(struct-vs_in1; ( temp structure{}) 0:10 Function Parameters: 0:10 'i' ( in structure{}) 0:? Sequence 0:12 Branch: Return with expression 0:12 'o' ( temp structure{}) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? 'i' ( in structure{}) 0:10 Sequence 0:10 move second child to first child ( temp structure{}) 0:? '@entryPointOutput' ( out structure{}) 0:10 Function Call: @main(struct-vs_in1; ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? Linker Objects Linked vertex stage: Shader version: 500 0:? Sequence 0:10 Function Definition: @main(struct-vs_in1; ( temp structure{}) 0:10 Function Parameters: 0:10 'i' ( in structure{}) 0:? Sequence 0:12 Branch: Return with expression 0:12 'o' ( temp structure{}) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? 'i' ( in structure{}) 0:10 Sequence 0:10 move second child to first child ( temp structure{}) 0:? '@entryPointOutput' ( out structure{}) 0:10 Function Call: @main(struct-vs_in1; ( temp structure{}) 0:? 'i' ( temp structure{}) 0:? Linker Objects Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source HLSL 500 Name 4 "main" Name 6 "vs_in" Name 8 "vs_out" Name 11 "@main(struct-vs_in1;" Name 10 "i" Name 14 "o" Name 18 "i" Name 20 "i" Name 23 "@entryPointOutput" Name 24 "param" 2: TypeVoid 3: TypeFunction 2 6(vs_in): TypeStruct 7: TypePointer Function 6(vs_in) 8(vs_out): TypeStruct 9: TypeFunction 8(vs_out) 7(ptr) 13: TypePointer Function 8(vs_out) 19: TypePointer Input 6(vs_in) 20(i): 19(ptr) Variable Input 22: TypePointer Output 8(vs_out) 23(@entryPointOutput): 22(ptr) Variable Output 4(main): 2 Function None 3 5: Label 18(i): 7(ptr) Variable Function 24(param): 7(ptr) Variable Function 21: 6(vs_in) Load 20(i) Store 18(i) 21 25: 6(vs_in) Load 18(i) Store 24(param) 25 26: 8(vs_out) FunctionCall 11(@main(struct-vs_in1;) 24(param) Store 23(@entryPointOutput) 26 Return FunctionEnd 11(@main(struct-vs_in1;): 8(vs_out) Function None 9 10(i): 7(ptr) FunctionParameter 12: Label 14(o): 13(ptr) Variable Function 15: 8(vs_out) Load 14(o) ReturnValue 15 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.entry-in.frag.out000066400000000000000000000411451506534232700226310ustar00rootroot00000000000000hlsl.entry-in.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; ( temp float) 0:8 Function Parameters: 0:8 'p' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:9 Branch: Return with expression 0:9 add ( temp float) 0:9 direct index ( temp float) 0:9 v: direct index for structure ( temp 2-component vector of float) 0:9 'p' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 1 (const int) 0:9 direct index ( temp float) 0:9 fragCoord: direct index for structure ( temp 4-component vector of float) 0:9 'p' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) 0:13 Function Definition: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; ( temp 4-component vector of float) 0:13 Function Parameters: 0:13 'i' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:15 move second child to first child ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:15 'local' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:15 'i' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'ret1' ( temp float) 0:16 Function Call: fun(struct-InParam-vf2-vf4-vi21; ( temp float) 0:16 'local' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'ret2' ( temp float) 0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; ( temp float) 0:17 'i' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:19 Branch: Return with expression 0:19 vector-scale ( temp 4-component vector of float) 0:19 vector-scale ( temp 4-component vector of float) 0:19 fragCoord: direct index for structure ( temp 4-component vector of float) 0:19 'local' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:19 Constant: 0:19 1 (const int) 0:19 'ret1' ( temp float) 0:19 'ret2' ( temp float) 0:13 Function Definition: PixelShaderFunction( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of float) 0:13 v: direct index for structure ( temp 2-component vector of float) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 0 (const int) 0:? 'i.v' (layout( location=0) in 2-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float) 0:13 fragCoord: direct index for structure ( temp 4-component vector of float) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 1 (const int) 0:? 'i.fragCoord' ( in 4-component vector of float FragCoord) 0:13 move second child to first child ( temp 2-component vector of int) 0:13 i2: direct index for structure ( temp 2-component vector of int) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 2 (const int) 0:? 'i.i2' (layout( location=1) flat in 2-component vector of int) 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: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; ( temp 4-component vector of float) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'i.fragCoord' ( in 4-component vector of float FragCoord) 0:? 'i.v' (layout( location=0) in 2-component vector of float) 0:? 'i.i2' (layout( location=1) flat in 2-component vector of int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; ( temp float) 0:8 Function Parameters: 0:8 'p' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:9 Branch: Return with expression 0:9 add ( temp float) 0:9 direct index ( temp float) 0:9 v: direct index for structure ( temp 2-component vector of float) 0:9 'p' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 1 (const int) 0:9 direct index ( temp float) 0:9 fragCoord: direct index for structure ( temp 4-component vector of float) 0:9 'p' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) 0:13 Function Definition: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; ( temp 4-component vector of float) 0:13 Function Parameters: 0:13 'i' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:15 move second child to first child ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:15 'local' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:15 'i' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'ret1' ( temp float) 0:16 Function Call: fun(struct-InParam-vf2-vf4-vi21; ( temp float) 0:16 'local' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'ret2' ( temp float) 0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; ( temp float) 0:17 'i' ( in structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:19 Branch: Return with expression 0:19 vector-scale ( temp 4-component vector of float) 0:19 vector-scale ( temp 4-component vector of float) 0:19 fragCoord: direct index for structure ( temp 4-component vector of float) 0:19 'local' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:19 Constant: 0:19 1 (const int) 0:19 'ret1' ( temp float) 0:19 'ret2' ( temp float) 0:13 Function Definition: PixelShaderFunction( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of float) 0:13 v: direct index for structure ( temp 2-component vector of float) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 0 (const int) 0:? 'i.v' (layout( location=0) in 2-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float) 0:13 fragCoord: direct index for structure ( temp 4-component vector of float) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 1 (const int) 0:? 'i.fragCoord' ( in 4-component vector of float FragCoord) 0:13 move second child to first child ( temp 2-component vector of int) 0:13 i2: direct index for structure ( temp 2-component vector of int) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 2 (const int) 0:? 'i.i2' (layout( location=1) flat in 2-component vector of int) 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: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; ( temp 4-component vector of float) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'i.fragCoord' ( in 4-component vector of float FragCoord) 0:? 'i.v' (layout( location=0) in 2-component vector of float) 0:? 'i.i2' (layout( location=1) flat in 2-component vector of int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 74 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 55 60 65 70 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "InParam" MemberName 11(InParam) 0 "v" MemberName 11(InParam) 1 "fragCoord" MemberName 11(InParam) 2 "i2" Name 15 "fun(struct-InParam-vf2-vf4-vi21;" Name 14 "p" Name 19 "@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;" Name 18 "i" Name 34 "local" Name 36 "ret1" Name 37 "param" Name 40 "ret2" Name 41 "param" Name 53 "i" Name 55 "i.v" Name 60 "i.fragCoord" Name 65 "i.i2" Name 70 "@entryPointOutput" Name 71 "param" Decorate 55(i.v) Location 0 Decorate 60(i.fragCoord) BuiltIn FragCoord Decorate 65(i.i2) Flat Decorate 65(i.i2) Location 1 Decorate 70(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeVector 6(float) 4 9: TypeInt 32 1 10: TypeVector 9(int) 2 11(InParam): TypeStruct 7(fvec2) 8(fvec4) 10(ivec2) 12: TypePointer Function 11(InParam) 13: TypeFunction 6(float) 12(ptr) 17: TypeFunction 8(fvec4) 12(ptr) 21: 9(int) Constant 0 22: TypeInt 32 0 23: 22(int) Constant 1 24: TypePointer Function 6(float) 27: 9(int) Constant 1 28: 22(int) Constant 0 44: TypePointer Function 8(fvec4) 54: TypePointer Input 7(fvec2) 55(i.v): 54(ptr) Variable Input 57: TypePointer Function 7(fvec2) 59: TypePointer Input 8(fvec4) 60(i.fragCoord): 59(ptr) Variable Input 63: 9(int) Constant 2 64: TypePointer Input 10(ivec2) 65(i.i2): 64(ptr) Variable Input 67: TypePointer Function 10(ivec2) 69: TypePointer Output 8(fvec4) 70(@entryPointOutput): 69(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 53(i): 12(ptr) Variable Function 71(param): 12(ptr) Variable Function 56: 7(fvec2) Load 55(i.v) 58: 57(ptr) AccessChain 53(i) 21 Store 58 56 61: 8(fvec4) Load 60(i.fragCoord) 62: 44(ptr) AccessChain 53(i) 27 Store 62 61 66: 10(ivec2) Load 65(i.i2) 68: 67(ptr) AccessChain 53(i) 63 Store 68 66 72: 11(InParam) Load 53(i) Store 71(param) 72 73: 8(fvec4) FunctionCall 19(@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;) 71(param) Store 70(@entryPointOutput) 73 Return FunctionEnd 15(fun(struct-InParam-vf2-vf4-vi21;): 6(float) Function None 13 14(p): 12(ptr) FunctionParameter 16: Label 25: 24(ptr) AccessChain 14(p) 21 23 26: 6(float) Load 25 29: 24(ptr) AccessChain 14(p) 27 28 30: 6(float) Load 29 31: 6(float) FAdd 26 30 ReturnValue 31 FunctionEnd 19(@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;): 8(fvec4) Function None 17 18(i): 12(ptr) FunctionParameter 20: Label 34(local): 12(ptr) Variable Function 36(ret1): 24(ptr) Variable Function 37(param): 12(ptr) Variable Function 40(ret2): 24(ptr) Variable Function 41(param): 12(ptr) Variable Function 35: 11(InParam) Load 18(i) Store 34(local) 35 38: 11(InParam) Load 34(local) Store 37(param) 38 39: 6(float) FunctionCall 15(fun(struct-InParam-vf2-vf4-vi21;) 37(param) Store 36(ret1) 39 42: 11(InParam) Load 18(i) Store 41(param) 42 43: 6(float) FunctionCall 15(fun(struct-InParam-vf2-vf4-vi21;) 41(param) Store 40(ret2) 43 45: 44(ptr) AccessChain 34(local) 27 46: 8(fvec4) Load 45 47: 6(float) Load 36(ret1) 48: 8(fvec4) VectorTimesScalar 46 47 49: 6(float) Load 40(ret2) 50: 8(fvec4) VectorTimesScalar 48 49 ReturnValue 50 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.entry-inout.vert.out000066400000000000000000000146141506534232700234230ustar00rootroot00000000000000hlsl.entry-inout.vert Shader version: 500 0:? Sequence 0:1 Function Definition: @main(vf4;vf2; ( temp void) 0:1 Function Parameters: 0:1 'pos' ( inout 4-component vector of float) 0:1 'uv' ( inout 2-component vector of float) 0:1 Function Definition: main( ( temp void) 0:1 Function Parameters: 0:? Sequence 0:1 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' (layout( location=0) in 4-component vector of float) 0:1 move second child to first child ( temp 2-component vector of float) 0:? 'uv' ( temp 2-component vector of float) 0:? 'uv' (layout( location=1) in 2-component vector of float) 0:1 Function Call: @main(vf4;vf2; ( temp void) 0:? 'pos' ( temp 4-component vector of float) 0:? 'uv' ( temp 2-component vector of float) 0:1 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'pos' ( temp 4-component vector of float) 0:1 move second child to first child ( temp 2-component vector of float) 0:? 'uv' (layout( location=0) out 2-component vector of float) 0:? 'uv' ( temp 2-component vector of float) 0:? Linker Objects 0:? 'pos' (layout( location=0) in 4-component vector of float) 0:? 'uv' (layout( location=1) in 2-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'uv' (layout( location=0) out 2-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:1 Function Definition: @main(vf4;vf2; ( temp void) 0:1 Function Parameters: 0:1 'pos' ( inout 4-component vector of float) 0:1 'uv' ( inout 2-component vector of float) 0:1 Function Definition: main( ( temp void) 0:1 Function Parameters: 0:? Sequence 0:1 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' (layout( location=0) in 4-component vector of float) 0:1 move second child to first child ( temp 2-component vector of float) 0:? 'uv' ( temp 2-component vector of float) 0:? 'uv' (layout( location=1) in 2-component vector of float) 0:1 Function Call: @main(vf4;vf2; ( temp void) 0:? 'pos' ( temp 4-component vector of float) 0:? 'uv' ( temp 2-component vector of float) 0:1 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'pos' ( temp 4-component vector of float) 0:1 move second child to first child ( temp 2-component vector of float) 0:? 'uv' (layout( location=0) out 2-component vector of float) 0:? 'uv' ( temp 2-component vector of float) 0:? Linker Objects 0:? 'pos' (layout( location=0) in 4-component vector of float) 0:? 'uv' (layout( location=1) in 2-component vector of float) 0:? 'pos' ( out 4-component vector of float Position) 0:? 'uv' (layout( location=0) out 2-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 18 22 32 35 Source HLSL 500 Name 4 "main" Name 14 "@main(vf4;vf2;" Name 12 "pos" Name 13 "uv" Name 16 "pos" Name 18 "pos" Name 20 "uv" Name 22 "uv" Name 24 "param" Name 26 "param" Name 32 "pos" Name 35 "uv" Decorate 18(pos) Location 0 Decorate 22(uv) Location 1 Decorate 32(pos) BuiltIn Position Decorate 35(uv) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeVector 6(float) 2 10: TypePointer Function 9(fvec2) 11: TypeFunction 2 8(ptr) 10(ptr) 17: TypePointer Input 7(fvec4) 18(pos): 17(ptr) Variable Input 21: TypePointer Input 9(fvec2) 22(uv): 21(ptr) Variable Input 31: TypePointer Output 7(fvec4) 32(pos): 31(ptr) Variable Output 34: TypePointer Output 9(fvec2) 35(uv): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label 16(pos): 8(ptr) Variable Function 20(uv): 10(ptr) Variable Function 24(param): 8(ptr) Variable Function 26(param): 10(ptr) Variable Function 19: 7(fvec4) Load 18(pos) Store 16(pos) 19 23: 9(fvec2) Load 22(uv) Store 20(uv) 23 25: 7(fvec4) Load 16(pos) Store 24(param) 25 27: 9(fvec2) Load 20(uv) Store 26(param) 27 28: 2 FunctionCall 14(@main(vf4;vf2;) 24(param) 26(param) 29: 7(fvec4) Load 24(param) Store 16(pos) 29 30: 9(fvec2) Load 26(param) Store 20(uv) 30 33: 7(fvec4) Load 16(pos) Store 32(pos) 33 36: 9(fvec2) Load 20(uv) Store 35(uv) 36 Return FunctionEnd 14(@main(vf4;vf2;): 2 Function None 11 12(pos): 8(ptr) FunctionParameter 13(uv): 10(ptr) FunctionParameter 15: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.entry-out.frag.out000066400000000000000000000525161506534232700230360ustar00rootroot00000000000000hlsl.entry-out.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: fun(struct-OutParam-vf2-vi21; ( temp void) 0:7 Function Parameters: 0:7 'op' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:? Sequence 0:8 move second child to first child ( temp 2-component vector of float) 0:8 v: direct index for structure ( temp 2-component vector of float) 0:8 'op' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0.400000 0:8 0.400000 0:9 move second child to first child ( temp 2-component vector of int) 0:9 i: direct index for structure ( temp 2-component vector of int) 0:9 'op' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 7 (const int) 0:9 7 (const int) 0:13 Function Definition: @PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; ( temp 4-component vector of float) 0:13 Function Parameters: 0:13 'input' ( in 4-component vector of float) 0:13 'out1' ( out 4-component vector of float) 0:13 'out2' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 'out3' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'out1' ( out 4-component vector of float) 0:14 'input' ( in 4-component vector of float) 0:15 move second child to first child ( temp 2-component vector of float) 0:15 v: direct index for structure ( temp 2-component vector of float) 0:15 'out2' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 2.000000 0:15 2.000000 0:16 move second child to first child ( temp 2-component vector of int) 0:16 i: direct index for structure ( temp 2-component vector of int) 0:16 'out2' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 3 (const int) 0:16 3 (const int) 0:18 move second child to first child ( temp 2-component vector of float) 0:18 v: direct index for structure ( temp 2-component vector of float) 0:18 'local' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 12.000000 0:18 12.000000 0:19 move second child to first child ( temp 2-component vector of int) 0:19 i: direct index for structure ( temp 2-component vector of int) 0:19 'local' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 13 (const int) 0:19 13 (const int) 0:20 Function Call: fun(struct-OutParam-vf2-vi21; ( temp void) 0:20 'out3' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:22 Branch: Return with expression 0:22 'out1' ( out 4-component vector of float) 0:13 Function Definition: PixelShaderFunction( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 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: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: @PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'out1' ( temp 4-component vector of float) 0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 move second child to first child ( temp 4-component vector of float) 0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out1' ( temp 4-component vector of float) 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of float) 0:? 'out2.v' (layout( location=2) out 2-component vector of float) 0:13 v: direct index for structure ( temp 2-component vector of float) 0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp 2-component vector of int) 0:? 'out2.i' (layout( location=3) out 2-component vector of int) 0:13 i: direct index for structure ( temp 2-component vector of int) 0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 Constant: 0:13 1 (const int) 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of float) 0:? 'out3.v' (layout( location=4) out 2-component vector of float) 0:13 v: direct index for structure ( temp 2-component vector of float) 0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp 2-component vector of int) 0:? 'out3.i' (layout( location=5) out 2-component vector of int) 0:13 i: direct index for structure ( temp 2-component vector of int) 0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 Constant: 0:13 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out2.v' (layout( location=2) out 2-component vector of float) 0:? 'out2.i' (layout( location=3) out 2-component vector of int) 0:? 'out3.v' (layout( location=4) out 2-component vector of float) 0:? 'out3.i' (layout( location=5) out 2-component vector of int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: fun(struct-OutParam-vf2-vi21; ( temp void) 0:7 Function Parameters: 0:7 'op' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:? Sequence 0:8 move second child to first child ( temp 2-component vector of float) 0:8 v: direct index for structure ( temp 2-component vector of float) 0:8 'op' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0.400000 0:8 0.400000 0:9 move second child to first child ( temp 2-component vector of int) 0:9 i: direct index for structure ( temp 2-component vector of int) 0:9 'op' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 7 (const int) 0:9 7 (const int) 0:13 Function Definition: @PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; ( temp 4-component vector of float) 0:13 Function Parameters: 0:13 'input' ( in 4-component vector of float) 0:13 'out1' ( out 4-component vector of float) 0:13 'out2' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 'out3' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'out1' ( out 4-component vector of float) 0:14 'input' ( in 4-component vector of float) 0:15 move second child to first child ( temp 2-component vector of float) 0:15 v: direct index for structure ( temp 2-component vector of float) 0:15 'out2' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 2.000000 0:15 2.000000 0:16 move second child to first child ( temp 2-component vector of int) 0:16 i: direct index for structure ( temp 2-component vector of int) 0:16 'out2' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 3 (const int) 0:16 3 (const int) 0:18 move second child to first child ( temp 2-component vector of float) 0:18 v: direct index for structure ( temp 2-component vector of float) 0:18 'local' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 12.000000 0:18 12.000000 0:19 move second child to first child ( temp 2-component vector of int) 0:19 i: direct index for structure ( temp 2-component vector of int) 0:19 'local' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 13 (const int) 0:19 13 (const int) 0:20 Function Call: fun(struct-OutParam-vf2-vi21; ( temp void) 0:20 'out3' ( out structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:22 Branch: Return with expression 0:22 'out1' ( out 4-component vector of float) 0:13 Function Definition: PixelShaderFunction( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 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: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: @PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'out1' ( temp 4-component vector of float) 0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 move second child to first child ( temp 4-component vector of float) 0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out1' ( temp 4-component vector of float) 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of float) 0:? 'out2.v' (layout( location=2) out 2-component vector of float) 0:13 v: direct index for structure ( temp 2-component vector of float) 0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp 2-component vector of int) 0:? 'out2.i' (layout( location=3) out 2-component vector of int) 0:13 i: direct index for structure ( temp 2-component vector of int) 0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 Constant: 0:13 1 (const int) 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of float) 0:? 'out3.v' (layout( location=4) out 2-component vector of float) 0:13 v: direct index for structure ( temp 2-component vector of float) 0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp 2-component vector of int) 0:? 'out3.i' (layout( location=5) out 2-component vector of int) 0:13 i: direct index for structure ( temp 2-component vector of int) 0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i}) 0:13 Constant: 0:13 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out2.v' (layout( location=2) out 2-component vector of float) 0:? 'out2.i' (layout( location=3) out 2-component vector of int) 0:? 'out3.v' (layout( location=4) out 2-component vector of float) 0:? 'out3.i' (layout( location=5) out 2-component vector of int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 89 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 57 60 73 76 80 83 86 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 10 "OutParam" MemberName 10(OutParam) 0 "v" MemberName 10(OutParam) 1 "i" Name 14 "fun(struct-OutParam-vf2-vi21;" Name 13 "op" Name 23 "@PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21;" Name 19 "input" Name 20 "out1" Name 21 "out2" Name 22 "out3" Name 42 "local" Name 49 "param" Name 55 "input" Name 57 "input" Name 60 "@entryPointOutput" Name 61 "out1" Name 62 "out2" Name 63 "out3" Name 64 "param" Name 66 "param" Name 67 "param" Name 68 "param" Name 73 "out1" Name 76 "out2.v" Name 80 "out2.i" Name 83 "out3.v" Name 86 "out3.i" Decorate 57(input) Location 0 Decorate 60(@entryPointOutput) Location 0 Decorate 73(out1) Location 1 Decorate 76(out2.v) Location 2 Decorate 80(out2.i) Location 3 Decorate 83(out3.v) Location 4 Decorate 86(out3.i) Location 5 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeInt 32 1 9: TypeVector 8(int) 2 10(OutParam): TypeStruct 7(fvec2) 9(ivec2) 11: TypePointer Function 10(OutParam) 12: TypeFunction 2 11(ptr) 16: TypeVector 6(float) 4 17: TypePointer Function 16(fvec4) 18: TypeFunction 16(fvec4) 17(ptr) 17(ptr) 11(ptr) 11(ptr) 25: 8(int) Constant 0 26: 6(float) Constant 1053609165 27: 7(fvec2) ConstantComposite 26 26 28: TypePointer Function 7(fvec2) 30: 8(int) Constant 1 31: 8(int) Constant 7 32: 9(ivec2) ConstantComposite 31 31 33: TypePointer Function 9(ivec2) 36: 6(float) Constant 1073741824 37: 7(fvec2) ConstantComposite 36 36 39: 8(int) Constant 3 40: 9(ivec2) ConstantComposite 39 39 43: 6(float) Constant 1094713344 44: 7(fvec2) ConstantComposite 43 43 46: 8(int) Constant 13 47: 9(ivec2) ConstantComposite 46 46 56: TypePointer Input 16(fvec4) 57(input): 56(ptr) Variable Input 59: TypePointer Output 16(fvec4) 60(@entryPointOutput): 59(ptr) Variable Output 73(out1): 59(ptr) Variable Output 75: TypePointer Output 7(fvec2) 76(out2.v): 75(ptr) Variable Output 79: TypePointer Output 9(ivec2) 80(out2.i): 79(ptr) Variable Output 83(out3.v): 75(ptr) Variable Output 86(out3.i): 79(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 55(input): 17(ptr) Variable Function 61(out1): 17(ptr) Variable Function 62(out2): 11(ptr) Variable Function 63(out3): 11(ptr) Variable Function 64(param): 17(ptr) Variable Function 66(param): 17(ptr) Variable Function 67(param): 11(ptr) Variable Function 68(param): 11(ptr) Variable Function 58: 16(fvec4) Load 57(input) Store 55(input) 58 65: 16(fvec4) Load 55(input) Store 64(param) 65 69: 16(fvec4) FunctionCall 23(@PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21;) 64(param) 66(param) 67(param) 68(param) 70: 16(fvec4) Load 66(param) Store 61(out1) 70 71:10(OutParam) Load 67(param) Store 62(out2) 71 72:10(OutParam) Load 68(param) Store 63(out3) 72 Store 60(@entryPointOutput) 69 74: 16(fvec4) Load 61(out1) Store 73(out1) 74 77: 28(ptr) AccessChain 62(out2) 25 78: 7(fvec2) Load 77 Store 76(out2.v) 78 81: 33(ptr) AccessChain 62(out2) 30 82: 9(ivec2) Load 81 Store 80(out2.i) 82 84: 28(ptr) AccessChain 63(out3) 25 85: 7(fvec2) Load 84 Store 83(out3.v) 85 87: 33(ptr) AccessChain 63(out3) 30 88: 9(ivec2) Load 87 Store 86(out3.i) 88 Return FunctionEnd 14(fun(struct-OutParam-vf2-vi21;): 2 Function None 12 13(op): 11(ptr) FunctionParameter 15: Label 29: 28(ptr) AccessChain 13(op) 25 Store 29 27 34: 33(ptr) AccessChain 13(op) 30 Store 34 32 Return FunctionEnd 23(@PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21;): 16(fvec4) Function None 18 19(input): 17(ptr) FunctionParameter 20(out1): 17(ptr) FunctionParameter 21(out2): 11(ptr) FunctionParameter 22(out3): 11(ptr) FunctionParameter 24: Label 42(local): 11(ptr) Variable Function 49(param): 11(ptr) Variable Function 35: 16(fvec4) Load 19(input) Store 20(out1) 35 38: 28(ptr) AccessChain 21(out2) 25 Store 38 37 41: 33(ptr) AccessChain 21(out2) 30 Store 41 40 45: 28(ptr) AccessChain 42(local) 25 Store 45 44 48: 33(ptr) AccessChain 42(local) 30 Store 48 47 50: 2 FunctionCall 14(fun(struct-OutParam-vf2-vi21;) 49(param) 51:10(OutParam) Load 49(param) Store 22(out3) 51 52: 16(fvec4) Load 20(out1) ReturnValue 52 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.entry.rename.frag.out000066400000000000000000000141741506534232700234750ustar00rootroot00000000000000hlsl.entry.rename.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: not_the_entry_point( ( temp void) 0:7 Function Parameters: 0:11 Function Definition: @main_in_spv( ( temp structure{ temp 4-component vector of float Color}) 0:11 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 Color: direct index for structure ( temp 4-component vector of float) 0:13 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:14 Branch: Return with expression 0:14 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:11 Function Definition: main_in_spv( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:11 Color: direct index for structure ( temp 4-component vector of float) 0:11 Function Call: @main_in_spv( ( temp structure{ temp 4-component vector of float Color}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int also_not_the_entry_point}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: not_the_entry_point( ( temp void) 0:7 Function Parameters: 0:11 Function Definition: @main_in_spv( ( temp structure{ temp 4-component vector of float Color}) 0:11 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 Color: direct index for structure ( temp 4-component vector of float) 0:13 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:14 Branch: Return with expression 0:14 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:11 Function Definition: main_in_spv( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:11 Color: direct index for structure ( temp 4-component vector of float) 0:11 Function Call: @main_in_spv( ( temp structure{ temp 4-component vector of float Color}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int also_not_the_entry_point}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main_in_spv" 26 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main_in_spv" Name 6 "not_the_entry_point(" Name 10 "PS_OUTPUT" MemberName 10(PS_OUTPUT) 0 "Color" Name 12 "@main_in_spv(" Name 15 "psout" Name 26 "@entryPointOutput.Color" Name 29 "$Global" MemberName 29($Global) 0 "also_not_the_entry_point" Name 31 "" Decorate 26(@entryPointOutput.Color) Location 0 Decorate 29($Global) Block MemberDecorate 29($Global) 0 Offset 0 Decorate 31 Binding 0 Decorate 31 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10(PS_OUTPUT): TypeStruct 9(fvec4) 11: TypeFunction 10(PS_OUTPUT) 14: TypePointer Function 10(PS_OUTPUT) 16: TypeInt 32 1 17: 16(int) Constant 0 18: 8(float) Constant 0 19: 9(fvec4) ConstantComposite 18 18 18 18 20: TypePointer Function 9(fvec4) 25: TypePointer Output 9(fvec4) 26(@entryPointOutput.Color): 25(ptr) Variable Output 29($Global): TypeStruct 16(int) 30: TypePointer Uniform 29($Global) 31: 30(ptr) Variable Uniform 4(main_in_spv): 2 Function None 3 5: Label 27:10(PS_OUTPUT) FunctionCall 12(@main_in_spv() 28: 9(fvec4) CompositeExtract 27 0 Store 26(@entryPointOutput.Color) 28 Return FunctionEnd 6(not_the_entry_point(): 2 Function None 3 7: Label Return FunctionEnd 12(@main_in_spv():10(PS_OUTPUT) Function None 11 13: Label 15(psout): 14(ptr) Variable Function 21: 20(ptr) AccessChain 15(psout) 17 Store 21 19 22:10(PS_OUTPUT) Load 15(psout) ReturnValue 22 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out000066400000000000000000000067531506534232700255650ustar00rootroot00000000000000hlsl.explicitDescriptorSet.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader Capability Sampled1D Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 19 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "g_sSamp2_amb" Name 19 "@entryPointOutput" Name 21 "g_sSamp" Name 24 "g_tTex1df4" Name 25 "$Global" MemberName 25($Global) 0 "floatval_amb" Name 27 "" Name 30 "floatbuff" Decorate 13(g_sSamp2_amb) Binding 10 Decorate 13(g_sSamp2_amb) DescriptorSet 3 Decorate 19(@entryPointOutput) Location 0 Decorate 21(g_sSamp) Binding 11 Decorate 21(g_sSamp) DescriptorSet 3 Decorate 24(g_tTex1df4) Binding 20 Decorate 24(g_tTex1df4) DescriptorSet 3 Decorate 25($Global) Block MemberDecorate 25($Global) 0 Offset 0 Decorate 27 Binding 0 Decorate 27 DescriptorSet 3 Decorate 30(floatbuff) Binding 0 Decorate 30(floatbuff) DescriptorSet 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeSampler 12: TypePointer UniformConstant 11 13(g_sSamp2_amb): 12(ptr) Variable UniformConstant 14: 6(float) Constant 0 15: 7(fvec4) ConstantComposite 14 14 14 14 18: TypePointer Output 7(fvec4) 19(@entryPointOutput): 18(ptr) Variable Output 21(g_sSamp): 12(ptr) Variable UniformConstant 22: TypeImage 6(float) 1D sampled format:Unknown 23: TypePointer UniformConstant 22 24(g_tTex1df4): 23(ptr) Variable UniformConstant 25($Global): TypeStruct 6(float) 26: TypePointer Uniform 25($Global) 27: 26(ptr) Variable Uniform 28: TypeImage 6(float) Buffer sampled format:R32f 29: TypePointer UniformConstant 28 30(floatbuff): 29(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 20: 7(fvec4) FunctionCall 9(@main() Store 19(@entryPointOutput) 20 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label ReturnValue 15 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.explicitDescriptorSet.frag.out000066400000000000000000000067531506534232700254260ustar00rootroot00000000000000hlsl.explicitDescriptorSet.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader Capability Sampled1D Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 19 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "g_sSamp2_amb" Name 19 "@entryPointOutput" Name 21 "g_sSamp" Name 24 "g_tTex1df4" Name 25 "$Global" MemberName 25($Global) 0 "floatval_amb" Name 27 "" Name 30 "floatbuff" Decorate 13(g_sSamp2_amb) Binding 10 Decorate 13(g_sSamp2_amb) DescriptorSet 4 Decorate 19(@entryPointOutput) Location 0 Decorate 21(g_sSamp) Binding 11 Decorate 21(g_sSamp) DescriptorSet 4 Decorate 24(g_tTex1df4) Binding 20 Decorate 24(g_tTex1df4) DescriptorSet 4 Decorate 25($Global) Block MemberDecorate 25($Global) 0 Offset 0 Decorate 27 Binding 0 Decorate 27 DescriptorSet 4 Decorate 30(floatbuff) Binding 0 Decorate 30(floatbuff) DescriptorSet 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeSampler 12: TypePointer UniformConstant 11 13(g_sSamp2_amb): 12(ptr) Variable UniformConstant 14: 6(float) Constant 0 15: 7(fvec4) ConstantComposite 14 14 14 14 18: TypePointer Output 7(fvec4) 19(@entryPointOutput): 18(ptr) Variable Output 21(g_sSamp): 12(ptr) Variable UniformConstant 22: TypeImage 6(float) 1D sampled format:Unknown 23: TypePointer UniformConstant 22 24(g_tTex1df4): 23(ptr) Variable UniformConstant 25($Global): TypeStruct 6(float) 26: TypePointer Uniform 25($Global) 27: 26(ptr) Variable Uniform 28: TypeImage 6(float) Buffer sampled format:R32f 29: TypePointer UniformConstant 28 30(floatbuff): 29(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 20: 7(fvec4) FunctionCall 9(@main() Store 19(@entryPointOutput) 20 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label ReturnValue 15 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.flatten.return.frag.out000066400000000000000000000303361506534232700240370ustar00rootroot00000000000000hlsl.flatten.return.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: Func1( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:11 Function Parameters: 0:? Sequence 0:12 Branch: Return with expression 0:12 Constant: 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:12 2.000000 0:12 3.000000 0:12 4.000000 0:16 Function Definition: @main( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Function Parameters: 0:? Sequence 0:17 Branch: Return with expression 0:17 Function Call: Func1( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Function Call: @main( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp float) 0:? '@entryPointOutput.other_struct_member1' (layout( location=1) out float) 0:16 other_struct_member1: direct index for structure ( temp float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp float) 0:? '@entryPointOutput.other_struct_member2' (layout( location=2) out float) 0:16 other_struct_member2: direct index for structure ( temp float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Constant: 0:16 2 (const int) 0:16 move second child to first child ( temp float) 0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float) 0:16 other_struct_member3: direct index for structure ( temp float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Constant: 0:16 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.other_struct_member1' (layout( location=1) out float) 0:? '@entryPointOutput.other_struct_member2' (layout( location=2) out float) 0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: Func1( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:11 Function Parameters: 0:? Sequence 0:12 Branch: Return with expression 0:12 Constant: 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:12 2.000000 0:12 3.000000 0:12 4.000000 0:16 Function Definition: @main( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Function Parameters: 0:? Sequence 0:17 Branch: Return with expression 0:17 Function Call: Func1( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Function Call: @main( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp float) 0:? '@entryPointOutput.other_struct_member1' (layout( location=1) out float) 0:16 other_struct_member1: direct index for structure ( temp float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp float) 0:? '@entryPointOutput.other_struct_member2' (layout( location=2) out float) 0:16 other_struct_member2: direct index for structure ( temp float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Constant: 0:16 2 (const int) 0:16 move second child to first child ( temp float) 0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float) 0:16 other_struct_member3: direct index for structure ( temp float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) 0:16 Constant: 0:16 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.other_struct_member1' (layout( location=1) out float) 0:? '@entryPointOutput.other_struct_member2' (layout( location=2) out float) 0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 49 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 29 36 41 45 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "color" MemberName 8(PS_OUTPUT) 1 "other_struct_member1" MemberName 8(PS_OUTPUT) 2 "other_struct_member2" MemberName 8(PS_OUTPUT) 3 "other_struct_member3" Name 10 "Func1(" Name 12 "@main(" Name 26 "flattenTemp" Name 29 "@entryPointOutput.color" Name 36 "@entryPointOutput.other_struct_member1" Name 41 "@entryPointOutput.other_struct_member2" Name 45 "@entryPointOutput.other_struct_member3" Decorate 29(@entryPointOutput.color) Location 0 Decorate 36(@entryPointOutput.other_struct_member1) Location 1 Decorate 41(@entryPointOutput.other_struct_member2) Location 2 Decorate 45(@entryPointOutput.other_struct_member3) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 6(float) 6(float) 9: TypeFunction 8(PS_OUTPUT) 14: 6(float) Constant 1065353216 15: 7(fvec4) ConstantComposite 14 14 14 14 16: 6(float) Constant 1073741824 17: 6(float) Constant 1077936128 18: 6(float) Constant 1082130432 19:8(PS_OUTPUT) ConstantComposite 15 16 17 18 25: TypePointer Function 8(PS_OUTPUT) 28: TypePointer Output 7(fvec4) 29(@entryPointOutput.color): 28(ptr) Variable Output 30: TypeInt 32 1 31: 30(int) Constant 0 32: TypePointer Function 7(fvec4) 35: TypePointer Output 6(float) 36(@entryPointOutput.other_struct_member1): 35(ptr) Variable Output 37: 30(int) Constant 1 38: TypePointer Function 6(float) 41(@entryPointOutput.other_struct_member2): 35(ptr) Variable Output 42: 30(int) Constant 2 45(@entryPointOutput.other_struct_member3): 35(ptr) Variable Output 46: 30(int) Constant 3 4(main): 2 Function None 3 5: Label 26(flattenTemp): 25(ptr) Variable Function 27:8(PS_OUTPUT) FunctionCall 12(@main() Store 26(flattenTemp) 27 33: 32(ptr) AccessChain 26(flattenTemp) 31 34: 7(fvec4) Load 33 Store 29(@entryPointOutput.color) 34 39: 38(ptr) AccessChain 26(flattenTemp) 37 40: 6(float) Load 39 Store 36(@entryPointOutput.other_struct_member1) 40 43: 38(ptr) AccessChain 26(flattenTemp) 42 44: 6(float) Load 43 Store 41(@entryPointOutput.other_struct_member2) 44 47: 38(ptr) AccessChain 26(flattenTemp) 46 48: 6(float) Load 47 Store 45(@entryPointOutput.other_struct_member3) 48 Return FunctionEnd 10(Func1():8(PS_OUTPUT) Function None 9 11: Label ReturnValue 19 FunctionEnd 12(@main():8(PS_OUTPUT) Function None 9 13: Label 22:8(PS_OUTPUT) FunctionCall 10(Func1() ReturnValue 22 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.flattenOpaque.frag.out000066400000000000000000000577031506534232700237030ustar00rootroot00000000000000hlsl.flattenOpaque.frag WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: osCall1(struct-os-p11; ( temp 4-component vector of float) 0:15 Function Parameters: 0:15 's' ( in structure{ temp sampler s2D}) 0:? Sequence 0:16 Branch: Return with expression 0:16 texture ( temp 4-component vector of float) 0:16 Construct combined texture-sampler ( temp sampler2D) 0:16 'tex' ( uniform texture2D) 0:16 s2D: direct index for structure ( temp sampler) 0:16 's' ( in structure{ temp sampler s2D}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0.200000 0:16 0.300000 0:20 Function Definition: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float) 0:20 Function Parameters: 0:20 's' ( in structure{ temp sampler s2D}) 0:20 'f2' ( in 2-component vector of float) 0:? Sequence 0:21 Branch: Return with expression 0:21 texture ( temp 4-component vector of float) 0:21 Construct combined texture-sampler ( temp sampler2D) 0:21 'tex' ( uniform texture2D) 0:21 s2D: direct index for structure ( temp sampler) 0:21 's' ( in structure{ temp sampler s2D}) 0:21 Constant: 0:21 0 (const int) 0:21 'f2' ( in 2-component vector of float) 0:25 Function Definition: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float) 0:25 Function Parameters: 0:25 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:? Sequence 0:26 Branch: Return with expression 0:26 texture ( temp 4-component vector of float) 0:26 Construct combined texture-sampler ( temp sampler2D) 0:26 tex: direct index for structure ( temp texture2D) 0:26 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:26 Constant: 0:26 1 (const int) 0:26 s2D: direct index for structure ( temp sampler) 0:26 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0.200000 0:26 0.300000 0:30 Function Definition: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float) 0:30 Function Parameters: 0:30 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:30 'f2' ( in 2-component vector of float) 0:? Sequence 0:31 Branch: Return with expression 0:31 texture ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2D) 0:31 tex: direct index for structure ( temp texture2D) 0:31 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:31 Constant: 0:31 1 (const int) 0:31 s2D: direct index for structure ( temp sampler) 0:31 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:31 Constant: 0:31 0 (const int) 0:31 'f2' ( in 2-component vector of float) 0:35 Function Definition: @main( ( temp 4-component vector of float) 0:35 Function Parameters: 0:? Sequence 0:39 Branch: Return with expression 0:38 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:36 add ( temp 4-component vector of float) 0:36 Function Call: osCall1(struct-os-p11; ( temp 4-component vector of float) 0:36 Comma ( temp structure{ temp sampler s2D}) 0:36 Sequence 0:36 move second child to first child ( temp sampler) 0:36 s2D: direct index for structure ( temp sampler) 0:36 'aggShadow' ( temp structure{ temp sampler s2D}) 0:36 Constant: 0:36 0 (const int) 0:? 's.s2D' ( uniform sampler) 0:36 'aggShadow' ( temp structure{ temp sampler s2D}) 0:37 Function Call: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float) 0:37 Comma ( temp structure{ temp sampler s2D}) 0:37 Sequence 0:37 move second child to first child ( temp sampler) 0:37 s2D: direct index for structure ( temp sampler) 0:37 'aggShadow' ( temp structure{ temp sampler s2D}) 0:37 Constant: 0:37 0 (const int) 0:? 's.s2D' ( uniform sampler) 0:37 'aggShadow' ( temp structure{ temp sampler s2D}) 0:37 Constant: 0:37 0.200000 0:37 0.300000 0:38 Function Call: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float) 0:38 Comma ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:38 Sequence 0:38 move second child to first child ( temp sampler) 0:38 s2D: direct index for structure ( temp sampler) 0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:38 Constant: 0:38 0 (const int) 0:? 's2.s2D' ( uniform sampler) 0:38 move second child to first child ( temp texture2D) 0:38 tex: direct index for structure ( temp texture2D) 0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:38 Constant: 0:38 1 (const int) 0:? 's2.tex' ( uniform texture2D) 0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Function Call: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float) 0:39 Comma ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Sequence 0:39 move second child to first child ( temp sampler) 0:39 s2D: direct index for structure ( temp sampler) 0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Constant: 0:39 0 (const int) 0:? 's2.s2D' ( uniform sampler) 0:39 move second child to first child ( temp texture2D) 0:39 tex: direct index for structure ( temp texture2D) 0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Constant: 0:39 1 (const int) 0:? 's2.tex' ( uniform texture2D) 0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Constant: 0:39 0.200000 0:39 0.300000 0:35 Function Definition: main( ( temp void) 0:35 Function Parameters: 0:? Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:35 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex' ( uniform texture2D) 0:? 's.s2D' ( uniform sampler) 0:? 's2.s2D' ( uniform sampler) 0:? 's2.tex' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: osCall1(struct-os-p11; ( temp 4-component vector of float) 0:15 Function Parameters: 0:15 's' ( in structure{ temp sampler s2D}) 0:? Sequence 0:16 Branch: Return with expression 0:16 texture ( temp 4-component vector of float) 0:16 Construct combined texture-sampler ( temp sampler2D) 0:16 'tex' ( uniform texture2D) 0:16 s2D: direct index for structure ( temp sampler) 0:16 's' ( in structure{ temp sampler s2D}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0.200000 0:16 0.300000 0:20 Function Definition: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float) 0:20 Function Parameters: 0:20 's' ( in structure{ temp sampler s2D}) 0:20 'f2' ( in 2-component vector of float) 0:? Sequence 0:21 Branch: Return with expression 0:21 texture ( temp 4-component vector of float) 0:21 Construct combined texture-sampler ( temp sampler2D) 0:21 'tex' ( uniform texture2D) 0:21 s2D: direct index for structure ( temp sampler) 0:21 's' ( in structure{ temp sampler s2D}) 0:21 Constant: 0:21 0 (const int) 0:21 'f2' ( in 2-component vector of float) 0:25 Function Definition: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float) 0:25 Function Parameters: 0:25 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:? Sequence 0:26 Branch: Return with expression 0:26 texture ( temp 4-component vector of float) 0:26 Construct combined texture-sampler ( temp sampler2D) 0:26 tex: direct index for structure ( temp texture2D) 0:26 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:26 Constant: 0:26 1 (const int) 0:26 s2D: direct index for structure ( temp sampler) 0:26 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0.200000 0:26 0.300000 0:30 Function Definition: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float) 0:30 Function Parameters: 0:30 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:30 'f2' ( in 2-component vector of float) 0:? Sequence 0:31 Branch: Return with expression 0:31 texture ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2D) 0:31 tex: direct index for structure ( temp texture2D) 0:31 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:31 Constant: 0:31 1 (const int) 0:31 s2D: direct index for structure ( temp sampler) 0:31 's' ( in structure{ temp sampler s2D, temp texture2D tex}) 0:31 Constant: 0:31 0 (const int) 0:31 'f2' ( in 2-component vector of float) 0:35 Function Definition: @main( ( temp 4-component vector of float) 0:35 Function Parameters: 0:? Sequence 0:39 Branch: Return with expression 0:38 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:36 add ( temp 4-component vector of float) 0:36 Function Call: osCall1(struct-os-p11; ( temp 4-component vector of float) 0:36 Comma ( temp structure{ temp sampler s2D}) 0:36 Sequence 0:36 move second child to first child ( temp sampler) 0:36 s2D: direct index for structure ( temp sampler) 0:36 'aggShadow' ( temp structure{ temp sampler s2D}) 0:36 Constant: 0:36 0 (const int) 0:? 's.s2D' ( uniform sampler) 0:36 'aggShadow' ( temp structure{ temp sampler s2D}) 0:37 Function Call: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float) 0:37 Comma ( temp structure{ temp sampler s2D}) 0:37 Sequence 0:37 move second child to first child ( temp sampler) 0:37 s2D: direct index for structure ( temp sampler) 0:37 'aggShadow' ( temp structure{ temp sampler s2D}) 0:37 Constant: 0:37 0 (const int) 0:? 's.s2D' ( uniform sampler) 0:37 'aggShadow' ( temp structure{ temp sampler s2D}) 0:37 Constant: 0:37 0.200000 0:37 0.300000 0:38 Function Call: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float) 0:38 Comma ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:38 Sequence 0:38 move second child to first child ( temp sampler) 0:38 s2D: direct index for structure ( temp sampler) 0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:38 Constant: 0:38 0 (const int) 0:? 's2.s2D' ( uniform sampler) 0:38 move second child to first child ( temp texture2D) 0:38 tex: direct index for structure ( temp texture2D) 0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:38 Constant: 0:38 1 (const int) 0:? 's2.tex' ( uniform texture2D) 0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Function Call: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float) 0:39 Comma ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Sequence 0:39 move second child to first child ( temp sampler) 0:39 s2D: direct index for structure ( temp sampler) 0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Constant: 0:39 0 (const int) 0:? 's2.s2D' ( uniform sampler) 0:39 move second child to first child ( temp texture2D) 0:39 tex: direct index for structure ( temp texture2D) 0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Constant: 0:39 1 (const int) 0:? 's2.tex' ( uniform texture2D) 0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex}) 0:39 Constant: 0:39 0.200000 0:39 0.300000 0:35 Function Definition: main( ( temp void) 0:35 Function Parameters: 0:? Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:35 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex' ( uniform texture2D) 0:? 's.s2D' ( uniform sampler) 0:? 's2.s2D' ( uniform sampler) 0:? 's2.tex' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 122 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 120 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 7 "os" MemberName 7(os) 0 "s2D" Name 13 "osCall1(struct-os-p11;" Name 12 "s" Name 20 "osCall2(struct-os-p11;vf2;" Name 18 "s" Name 19 "f2" Name 23 "os2" MemberName 23(os2) 0 "s2D" MemberName 23(os2) 1 "tex" Name 27 "os2Call1(struct-os2-p1-t211;" Name 26 "s" Name 32 "os2Call2(struct-os2-p1-t211;vf2;" Name 30 "s" Name 31 "f2" Name 35 "@main(" Name 38 "tex" Name 80 "aggShadow" Name 82 "s.s2D" Name 85 "param" Name 88 "aggShadow" Name 91 "param" Name 93 "param" Name 96 "aggShadow" Name 97 "s2.s2D" Name 100 "s2.tex" Name 103 "param" Name 107 "aggShadow" Name 112 "param" Name 114 "param" Name 120 "@entryPointOutput" Decorate 38(tex) Binding 0 Decorate 38(tex) DescriptorSet 0 Decorate 82(s.s2D) Binding 1 Decorate 82(s.s2D) DescriptorSet 0 Decorate 97(s2.s2D) Binding 2 Decorate 97(s2.s2D) DescriptorSet 0 Decorate 100(s2.tex) Binding 3 Decorate 100(s2.tex) DescriptorSet 0 Decorate 120(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeSampler 7(os): TypeStruct 6 8: TypePointer Function 7(os) 9: TypeFloat 32 10: TypeVector 9(float) 4 11: TypeFunction 10(fvec4) 8(ptr) 15: TypeVector 9(float) 2 16: TypePointer Function 15(fvec2) 17: TypeFunction 10(fvec4) 8(ptr) 16(ptr) 22: TypeImage 9(float) 2D sampled format:Unknown 23(os2): TypeStruct 6 22 24: TypePointer Function 23(os2) 25: TypeFunction 10(fvec4) 24(ptr) 29: TypeFunction 10(fvec4) 24(ptr) 16(ptr) 34: TypeFunction 10(fvec4) 37: TypePointer UniformConstant 22 38(tex): 37(ptr) Variable UniformConstant 40: TypeInt 32 1 41: 40(int) Constant 0 42: TypePointer Function 6 45: TypeSampledImage 22 47: 9(float) Constant 1045220557 48: 9(float) Constant 1050253722 49: 15(fvec2) ConstantComposite 47 48 61: 40(int) Constant 1 62: TypePointer Function 22 81: TypePointer UniformConstant 6 82(s.s2D): 81(ptr) Variable UniformConstant 97(s2.s2D): 81(ptr) Variable UniformConstant 100(s2.tex): 37(ptr) Variable UniformConstant 119: TypePointer Output 10(fvec4) 120(@entryPointOutput): 119(ptr) Variable Output 4(main): 2 Function None 3 5: Label 121: 10(fvec4) FunctionCall 35(@main() Store 120(@entryPointOutput) 121 Return FunctionEnd 13(osCall1(struct-os-p11;): 10(fvec4) Function None 11 12(s): 8(ptr) FunctionParameter 14: Label 39: 22 Load 38(tex) 43: 42(ptr) AccessChain 12(s) 41 44: 6 Load 43 46: 45 SampledImage 39 44 50: 10(fvec4) ImageSampleImplicitLod 46 49 ReturnValue 50 FunctionEnd 20(osCall2(struct-os-p11;vf2;): 10(fvec4) Function None 17 18(s): 8(ptr) FunctionParameter 19(f2): 16(ptr) FunctionParameter 21: Label 53: 22 Load 38(tex) 54: 42(ptr) AccessChain 18(s) 41 55: 6 Load 54 56: 45 SampledImage 53 55 57: 15(fvec2) Load 19(f2) 58: 10(fvec4) ImageSampleImplicitLod 56 57 ReturnValue 58 FunctionEnd 27(os2Call1(struct-os2-p1-t211;): 10(fvec4) Function None 25 26(s): 24(ptr) FunctionParameter 28: Label 63: 62(ptr) AccessChain 26(s) 61 64: 22 Load 63 65: 42(ptr) AccessChain 26(s) 41 66: 6 Load 65 67: 45 SampledImage 64 66 68: 10(fvec4) ImageSampleImplicitLod 67 49 ReturnValue 68 FunctionEnd 32(os2Call2(struct-os2-p1-t211;vf2;): 10(fvec4) Function None 29 30(s): 24(ptr) FunctionParameter 31(f2): 16(ptr) FunctionParameter 33: Label 71: 62(ptr) AccessChain 30(s) 61 72: 22 Load 71 73: 42(ptr) AccessChain 30(s) 41 74: 6 Load 73 75: 45 SampledImage 72 74 76: 15(fvec2) Load 31(f2) 77: 10(fvec4) ImageSampleImplicitLod 75 76 ReturnValue 77 FunctionEnd 35(@main(): 10(fvec4) Function None 34 36: Label 80(aggShadow): 8(ptr) Variable Function 85(param): 8(ptr) Variable Function 88(aggShadow): 8(ptr) Variable Function 91(param): 8(ptr) Variable Function 93(param): 16(ptr) Variable Function 96(aggShadow): 24(ptr) Variable Function 103(param): 24(ptr) Variable Function 107(aggShadow): 24(ptr) Variable Function 112(param): 24(ptr) Variable Function 114(param): 16(ptr) Variable Function 83: 6 Load 82(s.s2D) 84: 42(ptr) AccessChain 80(aggShadow) 41 Store 84 83 86: 7(os) Load 80(aggShadow) Store 85(param) 86 87: 10(fvec4) FunctionCall 13(osCall1(struct-os-p11;) 85(param) 89: 6 Load 82(s.s2D) 90: 42(ptr) AccessChain 88(aggShadow) 41 Store 90 89 92: 7(os) Load 88(aggShadow) Store 91(param) 92 Store 93(param) 49 94: 10(fvec4) FunctionCall 20(osCall2(struct-os-p11;vf2;) 91(param) 93(param) 95: 10(fvec4) FAdd 87 94 98: 6 Load 97(s2.s2D) 99: 42(ptr) AccessChain 96(aggShadow) 41 Store 99 98 101: 22 Load 100(s2.tex) 102: 62(ptr) AccessChain 96(aggShadow) 61 Store 102 101 104: 23(os2) Load 96(aggShadow) Store 103(param) 104 105: 10(fvec4) FunctionCall 27(os2Call1(struct-os2-p1-t211;) 103(param) 106: 10(fvec4) FAdd 95 105 108: 6 Load 97(s2.s2D) 109: 42(ptr) AccessChain 107(aggShadow) 41 Store 109 108 110: 22 Load 100(s2.tex) 111: 62(ptr) AccessChain 107(aggShadow) 61 Store 111 110 113: 23(os2) Load 107(aggShadow) Store 112(param) 113 Store 114(param) 49 115: 10(fvec4) FunctionCall 32(os2Call2(struct-os2-p1-t211;vf2;) 112(param) 114(param) 116: 10(fvec4) FAdd 106 115 ReturnValue 116 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.flattenOpaqueInit.vert.out000066400000000000000000000361271506534232700245650ustar00rootroot00000000000000hlsl.flattenOpaqueInit.vert WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 0:? Sequence 0:5 Function Definition: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'tex' ( in structure{ temp sampler smpl, temp texture2D tex}) 0:? Sequence 0:6 Branch: Return with expression 0:6 texture ( temp 4-component vector of float) 0:6 Construct combined texture-sampler ( temp sampler2D) 0:6 tex: direct index for structure ( temp texture2D) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex}) 0:6 Constant: 0:6 1 (const int) 0:6 smpl: direct index for structure ( temp sampler) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex}) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0.300000 0:6 0.400000 0:10 Function Definition: fillOpaque( ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:10 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp sampler) 0:12 smpl: direct index for structure ( temp sampler) 0:12 't' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:12 Constant: 0:12 0 (const int) 0:12 'g_tInputTexture_sampler' ( uniform sampler) 0:13 move second child to first child ( temp texture2D) 0:13 tex: direct index for structure ( temp texture2D) 0:13 't' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:13 Constant: 0:13 1 (const int) 0:13 'g_tInputTexture' ( uniform texture2D) 0:14 Branch: Return with expression 0:14 't' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:19 'tex1' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:19 Construct structure ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:19 'g_tInputTexture_sampler' ( uniform sampler) 0:19 'g_tInputTexture' ( uniform texture2D) 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'res' ( temp 4-component vector of float) 0:20 Function Call: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float) 0:20 'tex1' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:21 Sequence 0:21 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:21 'tex2' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:21 Function Call: fillOpaque( ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:22 add second child into first child ( temp 4-component vector of float) 0:22 'res' ( temp 4-component vector of float) 0:22 Function Call: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float) 0:22 'tex2' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:23 Sequence 0:23 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:23 'tex3' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:23 'tex1' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:24 add second child into first child ( temp 4-component vector of float) 0:24 'res' ( temp 4-component vector of float) 0:24 Function Call: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float) 0:24 'tex3' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:26 Branch: Return with expression 0:26 'res' ( temp 4-component vector of float) 0:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tInputTexture_sampler' ( uniform sampler) 0:? 'g_tInputTexture' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:5 Function Definition: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'tex' ( in structure{ temp sampler smpl, temp texture2D tex}) 0:? Sequence 0:6 Branch: Return with expression 0:6 texture ( temp 4-component vector of float) 0:6 Construct combined texture-sampler ( temp sampler2D) 0:6 tex: direct index for structure ( temp texture2D) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex}) 0:6 Constant: 0:6 1 (const int) 0:6 smpl: direct index for structure ( temp sampler) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex}) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0.300000 0:6 0.400000 0:10 Function Definition: fillOpaque( ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:10 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp sampler) 0:12 smpl: direct index for structure ( temp sampler) 0:12 't' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:12 Constant: 0:12 0 (const int) 0:12 'g_tInputTexture_sampler' ( uniform sampler) 0:13 move second child to first child ( temp texture2D) 0:13 tex: direct index for structure ( temp texture2D) 0:13 't' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:13 Constant: 0:13 1 (const int) 0:13 'g_tInputTexture' ( uniform texture2D) 0:14 Branch: Return with expression 0:14 't' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:19 'tex1' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:19 Construct structure ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:19 'g_tInputTexture_sampler' ( uniform sampler) 0:19 'g_tInputTexture' ( uniform texture2D) 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'res' ( temp 4-component vector of float) 0:20 Function Call: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float) 0:20 'tex1' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:21 Sequence 0:21 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:21 'tex2' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:21 Function Call: fillOpaque( ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:22 add second child into first child ( temp 4-component vector of float) 0:22 'res' ( temp 4-component vector of float) 0:22 Function Call: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float) 0:22 'tex2' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:23 Sequence 0:23 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:23 'tex3' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:23 'tex1' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:24 add second child into first child ( temp 4-component vector of float) 0:24 'res' ( temp 4-component vector of float) 0:24 Function Call: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float) 0:24 'tex3' ( temp structure{ temp sampler smpl, temp texture2D tex}) 0:26 Branch: Return with expression 0:26 'res' ( temp 4-component vector of float) 0:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tInputTexture_sampler' ( uniform sampler) 0:? 'g_tInputTexture' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 82 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 80 Source HLSL 500 Name 4 "main" Name 9 "FxaaTex" MemberName 9(FxaaTex) 0 "smpl" MemberName 9(FxaaTex) 1 "tex" Name 14 "lookUp(struct-FxaaTex-p1-t211;" Name 13 "tex" Name 17 "fillOpaque(" Name 20 "@main(" Name 41 "t" Name 43 "g_tInputTexture_sampler" Name 47 "g_tInputTexture" Name 53 "tex1" Name 58 "res" Name 59 "param" Name 62 "tex2" Name 64 "param" Name 69 "tex3" Name 71 "param" Name 80 "@entryPointOutput" Decorate 43(g_tInputTexture_sampler) Binding 0 Decorate 43(g_tInputTexture_sampler) DescriptorSet 0 Decorate 47(g_tInputTexture) Binding 1 Decorate 47(g_tInputTexture) DescriptorSet 0 Decorate 80(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeSampler 7: TypeFloat 32 8: TypeImage 7(float) 2D sampled format:Unknown 9(FxaaTex): TypeStruct 6 8 10: TypePointer Function 9(FxaaTex) 11: TypeVector 7(float) 4 12: TypeFunction 11(fvec4) 10(ptr) 16: TypeFunction 9(FxaaTex) 19: TypeFunction 11(fvec4) 22: TypeInt 32 1 23: 22(int) Constant 1 24: TypePointer Function 8 27: 22(int) Constant 0 28: TypePointer Function 6 31: TypeSampledImage 8 33: TypeVector 7(float) 2 34: 7(float) Constant 1050253722 35: 7(float) Constant 1053609165 36: 33(fvec2) ConstantComposite 34 35 37: 7(float) Constant 0 42: TypePointer UniformConstant 6 43(g_tInputTexture_sampler): 42(ptr) Variable UniformConstant 46: TypePointer UniformConstant 8 47(g_tInputTexture): 46(ptr) Variable UniformConstant 57: TypePointer Function 11(fvec4) 79: TypePointer Output 11(fvec4) 80(@entryPointOutput): 79(ptr) Variable Output 4(main): 2 Function None 3 5: Label 81: 11(fvec4) FunctionCall 20(@main() Store 80(@entryPointOutput) 81 Return FunctionEnd 14(lookUp(struct-FxaaTex-p1-t211;): 11(fvec4) Function None 12 13(tex): 10(ptr) FunctionParameter 15: Label 25: 24(ptr) AccessChain 13(tex) 23 26: 8 Load 25 29: 28(ptr) AccessChain 13(tex) 27 30: 6 Load 29 32: 31 SampledImage 26 30 38: 11(fvec4) ImageSampleExplicitLod 32 36 Lod 37 ReturnValue 38 FunctionEnd 17(fillOpaque(): 9(FxaaTex) Function None 16 18: Label 41(t): 10(ptr) Variable Function 44: 6 Load 43(g_tInputTexture_sampler) 45: 28(ptr) AccessChain 41(t) 27 Store 45 44 48: 8 Load 47(g_tInputTexture) 49: 24(ptr) AccessChain 41(t) 23 Store 49 48 50: 9(FxaaTex) Load 41(t) ReturnValue 50 FunctionEnd 20(@main(): 11(fvec4) Function None 19 21: Label 53(tex1): 10(ptr) Variable Function 58(res): 57(ptr) Variable Function 59(param): 10(ptr) Variable Function 62(tex2): 10(ptr) Variable Function 64(param): 10(ptr) Variable Function 69(tex3): 10(ptr) Variable Function 71(param): 10(ptr) Variable Function 54: 6 Load 43(g_tInputTexture_sampler) 55: 8 Load 47(g_tInputTexture) 56: 9(FxaaTex) CompositeConstruct 54 55 Store 53(tex1) 56 60: 9(FxaaTex) Load 53(tex1) Store 59(param) 60 61: 11(fvec4) FunctionCall 14(lookUp(struct-FxaaTex-p1-t211;) 59(param) Store 58(res) 61 63: 9(FxaaTex) FunctionCall 17(fillOpaque() Store 62(tex2) 63 65: 9(FxaaTex) Load 62(tex2) Store 64(param) 65 66: 11(fvec4) FunctionCall 14(lookUp(struct-FxaaTex-p1-t211;) 64(param) 67: 11(fvec4) Load 58(res) 68: 11(fvec4) FAdd 67 66 Store 58(res) 68 70: 9(FxaaTex) Load 53(tex1) Store 69(tex3) 70 72: 9(FxaaTex) Load 69(tex3) Store 71(param) 72 73: 11(fvec4) FunctionCall 14(lookUp(struct-FxaaTex-p1-t211;) 71(param) 74: 11(fvec4) Load 58(res) 75: 11(fvec4) FAdd 74 73 Store 58(res) 75 76: 11(fvec4) Load 58(res) ReturnValue 76 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out000066400000000000000000000237151506534232700252420ustar00rootroot00000000000000hlsl.flattenOpaqueInitMix.vert WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 0:? Sequence 0:5 Function Definition: lookUp(struct-FxaaTex-p1-t21-f11; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:? Sequence 0:6 Branch: Return with expression 0:6 texture ( temp 4-component vector of float) 0:6 Construct combined texture-sampler ( temp sampler2D) 0:6 tex: direct index for structure ( temp texture2D) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:6 Constant: 0:6 1 (const int) 0:6 smpl: direct index for structure ( temp sampler) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:6 Constant: 0:6 0 (const int) 0:6 Construct vec2 ( temp 2-component vector of float) 0:6 f: direct index for structure ( temp float) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:6 Constant: 0:6 2 (const int) 0:6 f: direct index for structure ( temp float) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:6 Constant: 0:6 2 (const int) 0:10 Function Definition: @main( ( temp 4-component vector of float) 0:10 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:11 'tex' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:11 Construct structure ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:11 'g_tInputTexture_sampler' ( uniform sampler) 0:11 'g_tInputTexture' ( uniform texture2D) 0:11 Constant: 0:11 0.500000 0:12 Branch: Return with expression 0:12 Function Call: lookUp(struct-FxaaTex-p1-t21-f11; ( temp 4-component vector of float) 0:12 'tex' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:10 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tInputTexture_sampler' ( uniform sampler) 0:? 'g_tInputTexture' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:5 Function Definition: lookUp(struct-FxaaTex-p1-t21-f11; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:? Sequence 0:6 Branch: Return with expression 0:6 texture ( temp 4-component vector of float) 0:6 Construct combined texture-sampler ( temp sampler2D) 0:6 tex: direct index for structure ( temp texture2D) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:6 Constant: 0:6 1 (const int) 0:6 smpl: direct index for structure ( temp sampler) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:6 Constant: 0:6 0 (const int) 0:6 Construct vec2 ( temp 2-component vector of float) 0:6 f: direct index for structure ( temp float) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:6 Constant: 0:6 2 (const int) 0:6 f: direct index for structure ( temp float) 0:6 'tex' ( in structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:6 Constant: 0:6 2 (const int) 0:10 Function Definition: @main( ( temp 4-component vector of float) 0:10 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:11 'tex' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:11 Construct structure ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:11 'g_tInputTexture_sampler' ( uniform sampler) 0:11 'g_tInputTexture' ( uniform texture2D) 0:11 Constant: 0:11 0.500000 0:12 Branch: Return with expression 0:12 Function Call: lookUp(struct-FxaaTex-p1-t21-f11; ( temp 4-component vector of float) 0:12 'tex' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f}) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:10 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tInputTexture_sampler' ( uniform sampler) 0:? 'g_tInputTexture' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 59 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 57 Source HLSL 500 Name 4 "main" Name 9 "FxaaTex" MemberName 9(FxaaTex) 0 "smpl" MemberName 9(FxaaTex) 1 "tex" MemberName 9(FxaaTex) 2 "f" Name 14 "lookUp(struct-FxaaTex-p1-t21-f11;" Name 13 "tex" Name 17 "@main(" Name 42 "tex" Name 44 "g_tInputTexture_sampler" Name 47 "g_tInputTexture" Name 51 "param" Name 57 "@entryPointOutput" Decorate 44(g_tInputTexture_sampler) Binding 0 Decorate 44(g_tInputTexture_sampler) DescriptorSet 0 Decorate 47(g_tInputTexture) Binding 1 Decorate 47(g_tInputTexture) DescriptorSet 0 Decorate 57(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeSampler 7: TypeFloat 32 8: TypeImage 7(float) 2D sampled format:Unknown 9(FxaaTex): TypeStruct 6 8 7(float) 10: TypePointer Function 9(FxaaTex) 11: TypeVector 7(float) 4 12: TypeFunction 11(fvec4) 10(ptr) 16: TypeFunction 11(fvec4) 19: TypeInt 32 1 20: 19(int) Constant 1 21: TypePointer Function 8 24: 19(int) Constant 0 25: TypePointer Function 6 28: TypeSampledImage 8 30: 19(int) Constant 2 31: TypePointer Function 7(float) 36: TypeVector 7(float) 2 38: 7(float) Constant 0 43: TypePointer UniformConstant 6 44(g_tInputTexture_sampler): 43(ptr) Variable UniformConstant 46: TypePointer UniformConstant 8 47(g_tInputTexture): 46(ptr) Variable UniformConstant 49: 7(float) Constant 1056964608 56: TypePointer Output 11(fvec4) 57(@entryPointOutput): 56(ptr) Variable Output 4(main): 2 Function None 3 5: Label 58: 11(fvec4) FunctionCall 17(@main() Store 57(@entryPointOutput) 58 Return FunctionEnd 14(lookUp(struct-FxaaTex-p1-t21-f11;): 11(fvec4) Function None 12 13(tex): 10(ptr) FunctionParameter 15: Label 22: 21(ptr) AccessChain 13(tex) 20 23: 8 Load 22 26: 25(ptr) AccessChain 13(tex) 24 27: 6 Load 26 29: 28 SampledImage 23 27 32: 31(ptr) AccessChain 13(tex) 30 33: 7(float) Load 32 34: 31(ptr) AccessChain 13(tex) 30 35: 7(float) Load 34 37: 36(fvec2) CompositeConstruct 33 35 39: 11(fvec4) ImageSampleExplicitLod 29 37 Lod 38 ReturnValue 39 FunctionEnd 17(@main(): 11(fvec4) Function None 16 18: Label 42(tex): 10(ptr) Variable Function 51(param): 10(ptr) Variable Function 45: 6 Load 44(g_tInputTexture_sampler) 48: 8 Load 47(g_tInputTexture) 50: 9(FxaaTex) CompositeConstruct 45 48 49 Store 42(tex) 50 52: 9(FxaaTex) Load 42(tex) Store 51(param) 52 53: 11(fvec4) FunctionCall 14(lookUp(struct-FxaaTex-p1-t21-f11;) 51(param) ReturnValue 53 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.flattenSubset.frag.out000066400000000000000000000301571506534232700237100ustar00rootroot00000000000000hlsl.flattenSubset.frag WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:30 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:30 Function Parameters: 0:30 'vpos' ( in 4-component vector of float) 0:? Sequence 0:33 move second child to first child ( temp sampler) 0:33 ss: direct index for structure ( temp sampler) 0:33 s0: direct index for structure ( temp structure{ temp int x, temp int y, temp sampler ss}) 0:33 's1' ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 'samp' ( uniform sampler) 0:34 move second child to first child ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:34 resources: direct index for structure ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:34 's2' ( temp structure{ temp int a1, temp int a2, temp int a3, temp int a4, temp int a5, temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a} resources}) 0:34 Constant: 0:34 5 (const int) 0:34 's1' ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:35 Branch: Return with expression 0:35 texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'tex' ( uniform texture2D) 0:35 ss: direct index for structure ( temp sampler) 0:35 s0: direct index for structure ( temp structure{ temp int x, temp int y, temp sampler ss}) 0:35 resources: direct index for structure ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:35 's2' ( temp structure{ temp int a1, temp int a2, temp int a3, temp int a4, temp int a5, temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a} resources}) 0:35 Constant: 0:35 5 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0.500000 0:35 0.500000 0:30 Function Definition: main( ( temp void) 0:30 Function Parameters: 0:? Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:? 'vpos' ( temp 4-component vector of float) 0:? 'vpos' (layout( location=0) in 4-component vector of float) 0:30 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:30 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'vpos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'samp' ( uniform sampler) 0:? 'tex' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'vpos' (layout( location=0) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:30 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:30 Function Parameters: 0:30 'vpos' ( in 4-component vector of float) 0:? Sequence 0:33 move second child to first child ( temp sampler) 0:33 ss: direct index for structure ( temp sampler) 0:33 s0: direct index for structure ( temp structure{ temp int x, temp int y, temp sampler ss}) 0:33 's1' ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 2 (const int) 0:33 'samp' ( uniform sampler) 0:34 move second child to first child ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:34 resources: direct index for structure ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:34 's2' ( temp structure{ temp int a1, temp int a2, temp int a3, temp int a4, temp int a5, temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a} resources}) 0:34 Constant: 0:34 5 (const int) 0:34 's1' ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:35 Branch: Return with expression 0:35 texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'tex' ( uniform texture2D) 0:35 ss: direct index for structure ( temp sampler) 0:35 s0: direct index for structure ( temp structure{ temp int x, temp int y, temp sampler ss}) 0:35 resources: direct index for structure ( temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a}) 0:35 's2' ( temp structure{ temp int a1, temp int a2, temp int a3, temp int a4, temp int a5, temp structure{ temp float b, temp sampler samplerState, temp structure{ temp int x, temp int y, temp sampler ss} s0, temp int a} resources}) 0:35 Constant: 0:35 5 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 0.500000 0:35 0.500000 0:30 Function Definition: main( ( temp void) 0:30 Function Parameters: 0:? Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:? 'vpos' ( temp 4-component vector of float) 0:? 'vpos' (layout( location=0) in 4-component vector of float) 0:30 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:30 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'vpos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'samp' ( uniform sampler) 0:? 'tex' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'vpos' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 47 50 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "vpos" Name 15 "S0" MemberName 15(S0) 0 "x" MemberName 15(S0) 1 "y" MemberName 15(S0) 2 "ss" Name 16 "S1" MemberName 16(S1) 0 "b" MemberName 16(S1) 1 "samplerState" MemberName 16(S1) 2 "s0" MemberName 16(S1) 3 "a" Name 18 "s1" Name 21 "samp" Name 25 "S2" MemberName 25(S2) 0 "a1" MemberName 25(S2) 1 "a2" MemberName 25(S2) 2 "a3" MemberName 25(S2) 3 "a4" MemberName 25(S2) 4 "a5" MemberName 25(S2) 5 "resources" Name 27 "s2" Name 33 "tex" Name 45 "vpos" Name 47 "vpos" Name 50 "@entryPointOutput" Name 51 "param" Decorate 21(samp) Binding 0 Decorate 21(samp) DescriptorSet 0 Decorate 33(tex) Binding 1 Decorate 33(tex) DescriptorSet 0 Decorate 47(vpos) Location 0 Decorate 50(@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) 13: TypeSampler 14: TypeInt 32 1 15(S0): TypeStruct 14(int) 14(int) 13 16(S1): TypeStruct 6(float) 13 15(S0) 14(int) 17: TypePointer Function 16(S1) 19: 14(int) Constant 2 20: TypePointer UniformConstant 13 21(samp): 20(ptr) Variable UniformConstant 23: TypePointer Function 13 25(S2): TypeStruct 14(int) 14(int) 14(int) 14(int) 14(int) 16(S1) 26: TypePointer Function 25(S2) 28: 14(int) Constant 5 31: TypeImage 6(float) 2D sampled format:Unknown 32: TypePointer UniformConstant 31 33(tex): 32(ptr) Variable UniformConstant 37: TypeSampledImage 31 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 5: Label 45(vpos): 8(ptr) Variable Function 51(param): 8(ptr) Variable Function 48: 7(fvec4) Load 47(vpos) Store 45(vpos) 48 52: 7(fvec4) Load 45(vpos) Store 51(param) 52 53: 7(fvec4) FunctionCall 11(@main(vf4;) 51(param) Store 50(@entryPointOutput) 53 Return FunctionEnd 11(@main(vf4;): 7(fvec4) Function None 9 10(vpos): 8(ptr) FunctionParameter 12: Label 18(s1): 17(ptr) Variable Function 27(s2): 26(ptr) Variable Function 22: 13 Load 21(samp) 24: 23(ptr) AccessChain 18(s1) 19 19 Store 24 22 29: 16(S1) Load 18(s1) 30: 17(ptr) AccessChain 27(s2) 28 Store 30 29 34: 31 Load 33(tex) 35: 23(ptr) AccessChain 27(s2) 28 19 19 36: 13 Load 35 38: 37 SampledImage 34 36 42: 7(fvec4) ImageSampleImplicitLod 38 41 ReturnValue 42 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.flattenSubset2.frag.out000066400000000000000000000311631506534232700237700ustar00rootroot00000000000000hlsl.flattenSubset2.frag WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'vpos' ( in 4-component vector of float) 0:? Sequence 0:13 move second child to first child ( temp structure{ temp float y, temp texture2D texNested}) 0:13 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:13 'a1' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:13 Constant: 0:13 0 (const int) 0:13 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:13 'a2' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:13 Constant: 0:13 0 (const int) 0:14 move second child to first child ( temp structure{ temp float y, temp texture2D texNested}) 0:14 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:14 'b' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp texture2D tex}) 0:14 Constant: 0:14 0 (const int) 0:14 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:14 'a1' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:14 Constant: 0:14 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp structure{ temp float y, temp texture2D texNested}) 0:17 'n' ( temp structure{ temp float y, temp texture2D texNested}) 0:17 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:17 'b' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp texture2D tex}) 0:17 Constant: 0:17 0 (const int) 0:20 move second child to first child ( temp texture2D) 0:20 texNested: direct index for structure ( temp texture2D) 0:20 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:20 'a2' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 'someTex' ( uniform texture2D) 0:21 move second child to first child ( temp float) 0:21 y: direct index for structure ( temp float) 0:21 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:21 'a1' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1.000000 0:23 Branch: Return with expression 0:23 Constant: 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'vpos' ( temp 4-component vector of float) 0:? 'vpos' (layout( location=0) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'vpos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'someTex' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'vpos' (layout( location=0) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'vpos' ( in 4-component vector of float) 0:? Sequence 0:13 move second child to first child ( temp structure{ temp float y, temp texture2D texNested}) 0:13 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:13 'a1' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:13 Constant: 0:13 0 (const int) 0:13 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:13 'a2' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:13 Constant: 0:13 0 (const int) 0:14 move second child to first child ( temp structure{ temp float y, temp texture2D texNested}) 0:14 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:14 'b' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp texture2D tex}) 0:14 Constant: 0:14 0 (const int) 0:14 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:14 'a1' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:14 Constant: 0:14 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp structure{ temp float y, temp texture2D texNested}) 0:17 'n' ( temp structure{ temp float y, temp texture2D texNested}) 0:17 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:17 'b' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp texture2D tex}) 0:17 Constant: 0:17 0 (const int) 0:20 move second child to first child ( temp texture2D) 0:20 texNested: direct index for structure ( temp texture2D) 0:20 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:20 'a2' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 'someTex' ( uniform texture2D) 0:21 move second child to first child ( temp float) 0:21 y: direct index for structure ( temp float) 0:21 n: direct index for structure ( temp structure{ temp float y, temp texture2D texNested}) 0:21 'a1' ( temp structure{ temp structure{ temp float y, temp texture2D texNested} n, temp float x}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1.000000 0:23 Branch: Return with expression 0:23 Constant: 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'vpos' ( temp 4-component vector of float) 0:? 'vpos' (layout( location=0) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'vpos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'someTex' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'vpos' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 49 52 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "vpos" Name 14 "Nested" MemberName 14(Nested) 0 "y" MemberName 14(Nested) 1 "texNested" Name 15 "A" MemberName 15(A) 0 "n" MemberName 15(A) 1 "x" Name 17 "a1" Name 20 "a2" Name 25 "B" MemberName 25(B) 0 "n" MemberName 25(B) 1 "tex" Name 27 "b" Name 31 "n" Name 36 "someTex" Name 47 "vpos" Name 49 "vpos" Name 52 "@entryPointOutput" Name 53 "param" Decorate 36(someTex) Binding 0 Decorate 36(someTex) DescriptorSet 0 Decorate 49(vpos) Location 0 Decorate 52(@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) 13: TypeImage 6(float) 2D sampled format:Unknown 14(Nested): TypeStruct 6(float) 13 15(A): TypeStruct 14(Nested) 6(float) 16: TypePointer Function 15(A) 18: TypeInt 32 1 19: 18(int) Constant 0 21: TypePointer Function 14(Nested) 25(B): TypeStruct 14(Nested) 13 26: TypePointer Function 25(B) 34: 18(int) Constant 1 35: TypePointer UniformConstant 13 36(someTex): 35(ptr) Variable UniformConstant 38: TypePointer Function 13 40: 6(float) Constant 1065353216 41: TypePointer Function 6(float) 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 5: Label 47(vpos): 8(ptr) Variable Function 53(param): 8(ptr) Variable Function 50: 7(fvec4) Load 49(vpos) Store 47(vpos) 50 54: 7(fvec4) Load 47(vpos) Store 53(param) 54 55: 7(fvec4) FunctionCall 11(@main(vf4;) 53(param) Store 52(@entryPointOutput) 55 Return FunctionEnd 11(@main(vf4;): 7(fvec4) Function None 9 10(vpos): 8(ptr) FunctionParameter 12: Label 17(a1): 16(ptr) Variable Function 20(a2): 16(ptr) Variable Function 27(b): 26(ptr) Variable Function 31(n): 21(ptr) Variable Function 22: 21(ptr) AccessChain 20(a2) 19 23: 14(Nested) Load 22 24: 21(ptr) AccessChain 17(a1) 19 Store 24 23 28: 21(ptr) AccessChain 17(a1) 19 29: 14(Nested) Load 28 30: 21(ptr) AccessChain 27(b) 19 Store 30 29 32: 21(ptr) AccessChain 27(b) 19 33: 14(Nested) Load 32 Store 31(n) 33 37: 13 Load 36(someTex) 39: 38(ptr) AccessChain 20(a2) 19 34 Store 39 37 42: 41(ptr) AccessChain 17(a1) 19 19 Store 42 40 ReturnValue 44 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.float1.frag.out000066400000000000000000000105351506534232700222510ustar00rootroot00000000000000hlsl.float1.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 1-component vector of float) 0:1 'f1' ( global 1-component vector of float) 0:1 Constant: 0:1 1.000000 0:2 Sequence 0:2 move second child to first child ( temp float) 0:2 'scalar' ( global float) 0:2 Constant: 0:2 2.000000 0:5 Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float) 0:5 Function Parameters: 0:5 'inFloat1' ( in 1-component vector of float) 0:5 'inScalar' ( in float) 0:? Sequence 0:6 Branch: Return with expression 0:6 add ( temp 1-component vector of float) 0:6 vector-scale ( temp 1-component vector of float) 0:6 'f1' ( global 1-component vector of float) 0:6 'scalar' ( global float) 0:6 vector-scale ( temp 1-component vector of float) 0:6 'inFloat1' ( in 1-component vector of float) 0:6 'inScalar' ( in float) 0:? Linker Objects 0:? 'f1' ( global 1-component vector of float) 0:? 'scalar' ( global float) Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 1-component vector of float) 0:1 'f1' ( global 1-component vector of float) 0:1 Constant: 0:1 1.000000 0:2 Sequence 0:2 move second child to first child ( temp float) 0:2 'scalar' ( global float) 0:2 Constant: 0:2 2.000000 0:5 Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float) 0:5 Function Parameters: 0:5 'inFloat1' ( in 1-component vector of float) 0:5 'inScalar' ( in float) 0:? Sequence 0:6 Branch: Return with expression 0:6 add ( temp 1-component vector of float) 0:6 vector-scale ( temp 1-component vector of float) 0:6 'f1' ( global 1-component vector of float) 0:6 'scalar' ( global float) 0:6 vector-scale ( temp 1-component vector of float) 0:6 'inFloat1' ( in 1-component vector of float) 0:6 'inScalar' ( in float) 0:? Linker Objects 0:? 'f1' ( global 1-component vector of float) 0:? 'scalar' ( global float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "ShaderFunction(vf1;f1;" Name 9 "inFloat1" Name 10 "inScalar" Name 14 "f1" Name 16 "scalar" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 7(ptr) 13: TypePointer Private 6(float) 14(f1): 13(ptr) Variable Private 15: 6(float) Constant 1065353216 16(scalar): 13(ptr) Variable Private 17: 6(float) Constant 1073741824 4(PixelShaderFunction): 2 Function None 3 5: Label Store 14(f1) 15 Store 16(scalar) 17 Return FunctionEnd 11(ShaderFunction(vf1;f1;): 6(float) Function None 8 9(inFloat1): 7(ptr) FunctionParameter 10(inScalar): 7(ptr) FunctionParameter 12: Label 18: 6(float) Load 14(f1) 19: 6(float) Load 16(scalar) 20: 6(float) FMul 18 19 21: 6(float) Load 9(inFloat1) 22: 6(float) Load 10(inScalar) 23: 6(float) FMul 21 22 24: 6(float) FAdd 20 23 ReturnValue 24 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.float4.frag.out000066400000000000000000000124211506534232700222500ustar00rootroot00000000000000hlsl.float4.frag WARNING: 0:5: 'register' : ignoring shader_profile WARNING: 0:6: 'register' : ignoring shader_profile Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 'input' ( in 4-component vector of float) 0:? Sequence 0:10 Branch: Return with expression 0:10 component-wise multiply ( temp 4-component vector of float) 0:10 'input' ( in 4-component vector of float) 0:10 AmbientColor: 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 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}) 0:10 Constant: 0:10 0 (const uint) 0:? Linker Objects 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}) Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 'input' ( in 4-component vector of float) 0:? Sequence 0:10 Branch: Return with expression 0:10 component-wise multiply ( temp 4-component vector of float) 0:10 'input' ( in 4-component vector of float) 0:10 AmbientColor: 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 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}) 0:10 Constant: 0:10 0 (const uint) 0:? Linker Objects 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): 8000b // Id's are bound by 26 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "ShaderFunction(vf4;" Name 10 "input" Name 15 "$Global" MemberName 15($Global) 0 "AmbientColor" MemberName 15($Global) 1 "ff1" MemberName 15($Global) 2 "ff2" MemberName 15($Global) 3 "ff3" MemberName 15($Global) 4 "ff4" Name 17 "" Decorate 15($Global) Block MemberDecorate 15($Global) 0 Offset 0 MemberDecorate 15($Global) 1 Offset 16 MemberDecorate 15($Global) 2 Offset 20 MemberDecorate 15($Global) 3 Offset 32 MemberDecorate 15($Global) 4 Offset 48 Decorate 17 Binding 0 Decorate 17 DescriptorSet 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: TypeInt 32 0 15($Global): TypeStruct 7(fvec4) 14(int) 6(float) 7(fvec4) 7(fvec4) 16: TypePointer Uniform 15($Global) 17: 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 20: TypePointer Uniform 7(fvec4) 4(PixelShaderFunction): 2 Function None 3 5: Label Return FunctionEnd 11(ShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 13: 7(fvec4) Load 10(input) 21: 20(ptr) AccessChain 17 19 22: 7(fvec4) Load 21 23: 7(fvec4) FMul 13 22 ReturnValue 23 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.forLoop.frag.out000066400000000000000000001123761506534232700225110ustar00rootroot00000000000000hlsl.forLoop.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: f0( ( temp void) 0:1 Function Parameters: 0:? Sequence 0:? Sequence 0:2 Loop with condition tested first 0:2 No loop condition 0:2 No loop body 0:5 Function Definition: f1(vf4; ( temp void) 0:5 Function Parameters: 0:5 'input' ( in 4-component vector of float) 0:? Sequence 0:6 Sequence 0:6 Pre-Increment ( temp 4-component vector of float) 0:6 'input' ( in 4-component vector of float) 0:6 Loop with condition tested first 0:6 No loop condition 0:6 No loop body 0:9 Function Definition: f2(vf4; ( temp void) 0:9 Function Parameters: 0:9 'input' ( in 4-component vector of float) 0:? Sequence 0:? Sequence 0:10 Loop with condition tested first: Unroll 0:10 Loop Condition 0:10 any ( temp bool) 0:10 NotEqual ( temp 4-component vector of bool) 0:10 'input' ( in 4-component vector of float) 0:10 'input' ( in 4-component vector of float) 0:10 No loop body 0:13 Function Definition: f3(vf4; ( temp float) 0:13 Function Parameters: 0:13 'input' ( in 4-component vector of float) 0:? Sequence 0:? Sequence 0:14 Loop with condition tested first 0:14 Loop Condition 0:14 any ( temp bool) 0:14 NotEqual ( temp 4-component vector of bool) 0:14 'input' ( in 4-component vector of float) 0:14 'input' ( in 4-component vector of float) 0:14 Loop Body 0:? Sequence 0:14 Branch: Return with expression 0:14 Construct float ( temp float) 0:14 Negate value ( temp 4-component vector of float) 0:14 'input' ( in 4-component vector of float) 0:17 Function Definition: f4(vf4; ( temp float) 0:17 Function Parameters: 0:17 'input' ( in 4-component vector of float) 0:? Sequence 0:18 Sequence 0:18 Pre-Decrement ( temp 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 Loop with condition tested first 0:18 Loop Condition 0:18 any ( temp bool) 0:18 NotEqual ( temp 4-component vector of bool) 0:18 'input' ( in 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 Loop Body 0:? Sequence 0:18 Branch: Return with expression 0:18 Construct float ( temp float) 0:18 Negate value ( temp 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 Loop Terminal Expression 0:18 add second child into first child ( temp 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 Constant: 0:18 2.000000 0:21 Function Definition: f5(vf4; ( temp void) 0:21 Function Parameters: 0:21 'input' ( in 4-component vector of float) 0:? Sequence 0:? Sequence 0:22 Loop with condition tested first 0:22 No loop condition 0:22 Loop Body 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Compare Greater Than ( temp bool) 0:22 direct index ( temp float) 0:22 'input' ( in 4-component vector of float) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 2.000000 0:22 true case 0:22 Branch: Break 0:25 Function Definition: f6(vf4; ( temp void) 0:25 Function Parameters: 0:25 'input' ( in 4-component vector of float) 0:? Sequence 0:? Sequence 0:26 Loop with condition tested first 0:26 No loop condition 0:26 Loop Body 0:26 Test condition and select ( temp void) 0:26 Condition 0:26 Compare Greater Than ( temp bool) 0:26 direct index ( temp float) 0:26 'input' ( in 4-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2.000000 0:26 true case 0:26 Branch: Continue 0:29 Function Definition: f99( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp int) 0:30 'first' ( temp int) 0:30 Constant: 0:30 0 (const int) 0:30 move second child to first child ( temp int) 0:30 'second' ( temp int) 0:30 Constant: 0:30 1 (const int) 0:30 Loop with condition tested first 0:30 No loop condition 0:30 Loop Body 0:30 add ( temp int) 0:30 'first' ( temp int) 0:30 'second' ( temp int) 0:33 Function Definition: f100(f1; ( temp void) 0:33 Function Parameters: 0:33 'ii' ( in float) 0:? Sequence 0:? Sequence 0:34 Comma ( temp float) 0:34 Comma ( temp float) 0:34 Pre-Decrement ( temp float) 0:34 'ii' ( in float) 0:34 Pre-Decrement ( temp float) 0:34 'ii' ( in float) 0:34 Pre-Decrement ( temp float) 0:34 'ii' ( in float) 0:34 Loop with condition tested first 0:34 No loop condition 0:34 Loop Body 0:34 'ii' ( in float) 0:38 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:38 Function Parameters: 0:38 'input' ( in 4-component vector of float) 0:? Sequence 0:39 Function Call: f0( ( temp void) 0:40 Function Call: f1(vf4; ( temp void) 0:40 'input' ( in 4-component vector of float) 0:41 Function Call: f2(vf4; ( temp void) 0:41 'input' ( in 4-component vector of float) 0:42 Function Call: f3(vf4; ( temp float) 0:42 'input' ( in 4-component vector of float) 0:43 Function Call: f4(vf4; ( temp float) 0:43 'input' ( in 4-component vector of float) 0:44 Function Call: f5(vf4; ( temp void) 0:44 'input' ( in 4-component vector of float) 0:45 Function Call: f6(vf4; ( temp void) 0:45 'input' ( in 4-component vector of float) 0:48 Sequence 0:48 move second child to first child ( temp int) 0:48 'ii' ( temp int) 0:48 Constant: 0:48 -1 (const int) 0:48 Loop with condition tested first 0:48 Loop Condition 0:48 Compare Less Than ( temp bool) 0:48 'ii' ( temp int) 0:48 Constant: 0:48 3 (const int) 0:48 Loop Body 0:48 Test condition and select ( temp void) 0:48 Condition 0:48 Compare Equal ( temp bool) 0:48 'ii' ( temp int) 0:48 Constant: 0:48 2 (const int) 0:48 true case 0:48 Branch: Continue 0:48 Loop Terminal Expression 0:48 Pre-Increment ( temp int) 0:48 'ii' ( temp int) 0:49 Pre-Decrement ( temp float) 0:49 'ii' ( temp float) 0:51 Function Call: f99( ( temp void) 0:53 Sequence 0:53 move second child to first child ( temp int) 0:53 'i' ( temp int) 0:53 Constant: 0:53 0 (const int) 0:53 move second child to first child ( temp int) 0:53 'count' ( temp int) 0:53 Convert float to int ( temp int) 0:53 'ii' ( temp float) 0:53 Loop with condition tested first 0:53 Loop Condition 0:53 Compare Less Than ( temp bool) 0:53 'i' ( temp int) 0:53 'count' ( temp int) 0:53 No loop body 0:53 Loop Terminal Expression 0:53 Post-Increment ( temp int) 0:53 'i' ( temp int) 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'first' ( temp float) 0:54 Constant: 0:54 0.000000 0:54 Loop with condition tested first 0:54 Loop Condition 0:54 Compare Less Than ( temp bool) 0:54 'first' ( temp float) 0:54 direct index ( temp float) 0:54 'second' ( temp 2-element array of float) 0:54 Constant: 0:54 0 (const int) 0:54 Loop Body 0:54 add ( temp float) 0:54 add ( temp float) 0:54 'first' ( temp float) 0:54 direct index ( temp float) 0:54 'second' ( temp 2-element array of float) 0:54 Constant: 0:54 1 (const int) 0:54 'third' ( temp float) 0:54 Loop Terminal Expression 0:54 Pre-Increment ( temp float) 0:54 direct index ( temp float) 0:54 'second' ( temp 2-element array of float) 0:54 Constant: 0:54 1 (const int) 0:56 Function Call: f100(f1; ( temp void) 0:56 'ii' ( temp float) 0:58 Branch: Return with expression 0:58 'input' ( in 4-component vector of float) 0:38 Function Definition: PixelShaderFunction( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:38 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: f0( ( temp void) 0:1 Function Parameters: 0:? Sequence 0:? Sequence 0:2 Loop with condition tested first 0:2 No loop condition 0:2 No loop body 0:5 Function Definition: f1(vf4; ( temp void) 0:5 Function Parameters: 0:5 'input' ( in 4-component vector of float) 0:? Sequence 0:6 Sequence 0:6 Pre-Increment ( temp 4-component vector of float) 0:6 'input' ( in 4-component vector of float) 0:6 Loop with condition tested first 0:6 No loop condition 0:6 No loop body 0:9 Function Definition: f2(vf4; ( temp void) 0:9 Function Parameters: 0:9 'input' ( in 4-component vector of float) 0:? Sequence 0:? Sequence 0:10 Loop with condition tested first: Unroll 0:10 Loop Condition 0:10 any ( temp bool) 0:10 NotEqual ( temp 4-component vector of bool) 0:10 'input' ( in 4-component vector of float) 0:10 'input' ( in 4-component vector of float) 0:10 No loop body 0:13 Function Definition: f3(vf4; ( temp float) 0:13 Function Parameters: 0:13 'input' ( in 4-component vector of float) 0:? Sequence 0:? Sequence 0:14 Loop with condition tested first 0:14 Loop Condition 0:14 any ( temp bool) 0:14 NotEqual ( temp 4-component vector of bool) 0:14 'input' ( in 4-component vector of float) 0:14 'input' ( in 4-component vector of float) 0:14 Loop Body 0:? Sequence 0:14 Branch: Return with expression 0:14 Construct float ( temp float) 0:14 Negate value ( temp 4-component vector of float) 0:14 'input' ( in 4-component vector of float) 0:17 Function Definition: f4(vf4; ( temp float) 0:17 Function Parameters: 0:17 'input' ( in 4-component vector of float) 0:? Sequence 0:18 Sequence 0:18 Pre-Decrement ( temp 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 Loop with condition tested first 0:18 Loop Condition 0:18 any ( temp bool) 0:18 NotEqual ( temp 4-component vector of bool) 0:18 'input' ( in 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 Loop Body 0:? Sequence 0:18 Branch: Return with expression 0:18 Construct float ( temp float) 0:18 Negate value ( temp 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 Loop Terminal Expression 0:18 add second child into first child ( temp 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 Constant: 0:18 2.000000 0:21 Function Definition: f5(vf4; ( temp void) 0:21 Function Parameters: 0:21 'input' ( in 4-component vector of float) 0:? Sequence 0:? Sequence 0:22 Loop with condition tested first 0:22 No loop condition 0:22 Loop Body 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Compare Greater Than ( temp bool) 0:22 direct index ( temp float) 0:22 'input' ( in 4-component vector of float) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 2.000000 0:22 true case 0:22 Branch: Break 0:25 Function Definition: f6(vf4; ( temp void) 0:25 Function Parameters: 0:25 'input' ( in 4-component vector of float) 0:? Sequence 0:? Sequence 0:26 Loop with condition tested first 0:26 No loop condition 0:26 Loop Body 0:26 Test condition and select ( temp void) 0:26 Condition 0:26 Compare Greater Than ( temp bool) 0:26 direct index ( temp float) 0:26 'input' ( in 4-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2.000000 0:26 true case 0:26 Branch: Continue 0:29 Function Definition: f99( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp int) 0:30 'first' ( temp int) 0:30 Constant: 0:30 0 (const int) 0:30 move second child to first child ( temp int) 0:30 'second' ( temp int) 0:30 Constant: 0:30 1 (const int) 0:30 Loop with condition tested first 0:30 No loop condition 0:30 Loop Body 0:30 add ( temp int) 0:30 'first' ( temp int) 0:30 'second' ( temp int) 0:33 Function Definition: f100(f1; ( temp void) 0:33 Function Parameters: 0:33 'ii' ( in float) 0:? Sequence 0:? Sequence 0:34 Comma ( temp float) 0:34 Comma ( temp float) 0:34 Pre-Decrement ( temp float) 0:34 'ii' ( in float) 0:34 Pre-Decrement ( temp float) 0:34 'ii' ( in float) 0:34 Pre-Decrement ( temp float) 0:34 'ii' ( in float) 0:34 Loop with condition tested first 0:34 No loop condition 0:34 Loop Body 0:34 'ii' ( in float) 0:38 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:38 Function Parameters: 0:38 'input' ( in 4-component vector of float) 0:? Sequence 0:39 Function Call: f0( ( temp void) 0:40 Function Call: f1(vf4; ( temp void) 0:40 'input' ( in 4-component vector of float) 0:41 Function Call: f2(vf4; ( temp void) 0:41 'input' ( in 4-component vector of float) 0:42 Function Call: f3(vf4; ( temp float) 0:42 'input' ( in 4-component vector of float) 0:43 Function Call: f4(vf4; ( temp float) 0:43 'input' ( in 4-component vector of float) 0:44 Function Call: f5(vf4; ( temp void) 0:44 'input' ( in 4-component vector of float) 0:45 Function Call: f6(vf4; ( temp void) 0:45 'input' ( in 4-component vector of float) 0:48 Sequence 0:48 move second child to first child ( temp int) 0:48 'ii' ( temp int) 0:48 Constant: 0:48 -1 (const int) 0:48 Loop with condition tested first 0:48 Loop Condition 0:48 Compare Less Than ( temp bool) 0:48 'ii' ( temp int) 0:48 Constant: 0:48 3 (const int) 0:48 Loop Body 0:48 Test condition and select ( temp void) 0:48 Condition 0:48 Compare Equal ( temp bool) 0:48 'ii' ( temp int) 0:48 Constant: 0:48 2 (const int) 0:48 true case 0:48 Branch: Continue 0:48 Loop Terminal Expression 0:48 Pre-Increment ( temp int) 0:48 'ii' ( temp int) 0:49 Pre-Decrement ( temp float) 0:49 'ii' ( temp float) 0:51 Function Call: f99( ( temp void) 0:53 Sequence 0:53 move second child to first child ( temp int) 0:53 'i' ( temp int) 0:53 Constant: 0:53 0 (const int) 0:53 move second child to first child ( temp int) 0:53 'count' ( temp int) 0:53 Convert float to int ( temp int) 0:53 'ii' ( temp float) 0:53 Loop with condition tested first 0:53 Loop Condition 0:53 Compare Less Than ( temp bool) 0:53 'i' ( temp int) 0:53 'count' ( temp int) 0:53 No loop body 0:53 Loop Terminal Expression 0:53 Post-Increment ( temp int) 0:53 'i' ( temp int) 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'first' ( temp float) 0:54 Constant: 0:54 0.000000 0:54 Loop with condition tested first 0:54 Loop Condition 0:54 Compare Less Than ( temp bool) 0:54 'first' ( temp float) 0:54 direct index ( temp float) 0:54 'second' ( temp 2-element array of float) 0:54 Constant: 0:54 0 (const int) 0:54 Loop Body 0:54 add ( temp float) 0:54 add ( temp float) 0:54 'first' ( temp float) 0:54 direct index ( temp float) 0:54 'second' ( temp 2-element array of float) 0:54 Constant: 0:54 1 (const int) 0:54 'third' ( temp float) 0:54 Loop Terminal Expression 0:54 Pre-Increment ( temp float) 0:54 direct index ( temp float) 0:54 'second' ( temp 2-element array of float) 0:54 Constant: 0:54 1 (const int) 0:56 Function Call: f100(f1; ( temp void) 0:56 'ii' ( temp float) 0:58 Branch: Return with expression 0:58 'input' ( in 4-component vector of float) 0:38 Function Definition: PixelShaderFunction( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:38 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 240 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 233 236 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 6 "f0(" Name 13 "f1(vf4;" Name 12 "input" Name 16 "f2(vf4;" Name 15 "input" Name 20 "f3(vf4;" Name 19 "input" Name 23 "f4(vf4;" Name 22 "input" Name 26 "f5(vf4;" Name 25 "input" Name 29 "f6(vf4;" Name 28 "input" Name 31 "f99(" Name 36 "f100(f1;" Name 35 "ii" Name 40 "@PixelShaderFunction(vf4;" Name 39 "input" Name 124 "first" Name 126 "second" Name 146 "param" Name 149 "param" Name 152 "param" Name 155 "param" Name 158 "param" Name 161 "param" Name 164 "ii" Name 182 "ii" Name 186 "i" Name 187 "count" Name 200 "first" Name 211 "second" Name 219 "third" Name 225 "param" Name 231 "input" Name 233 "input" Name 236 "@entryPointOutput" Name 237 "param" Decorate 233(input) Location 0 Decorate 236(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypePointer Function 9(fvec4) 11: TypeFunction 2 10(ptr) 18: TypeFunction 8(float) 10(ptr) 33: TypePointer Function 8(float) 34: TypeFunction 2 33(ptr) 38: TypeFunction 9(fvec4) 10(ptr) 47: 8(float) Constant 1065353216 61: TypeBool 62: TypeVector 61(bool) 4 95: 8(float) Constant 1073741824 104: TypeInt 32 0 105: 104(int) Constant 0 122: TypeInt 32 1 123: TypePointer Function 122(int) 125: 122(int) Constant 0 127: 122(int) Constant 1 165: 122(int) Constant 4294967295 172: 122(int) Constant 3 175: 122(int) Constant 2 201: 8(float) Constant 0 208: 104(int) Constant 2 209: TypeArray 8(float) 208 210: TypePointer Function 209 232: TypePointer Input 9(fvec4) 233(input): 232(ptr) Variable Input 235: TypePointer Output 9(fvec4) 236(@entryPointOutput): 235(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 231(input): 10(ptr) Variable Function 237(param): 10(ptr) Variable Function 234: 9(fvec4) Load 233(input) Store 231(input) 234 238: 9(fvec4) Load 231(input) Store 237(param) 238 239: 9(fvec4) FunctionCall 40(@PixelShaderFunction(vf4;) 237(param) Store 236(@entryPointOutput) 239 Return FunctionEnd 6(f0(): 2 Function None 3 7: Label Branch 42 42: Label LoopMerge 44 45 None Branch 43 43: Label Branch 45 45: Label Branch 42 44: Label Unreachable FunctionEnd 13(f1(vf4;): 2 Function None 11 12(input): 10(ptr) FunctionParameter 14: Label 46: 9(fvec4) Load 12(input) 48: 9(fvec4) CompositeConstruct 47 47 47 47 49: 9(fvec4) FAdd 46 48 Store 12(input) 49 Branch 50 50: Label LoopMerge 52 53 None Branch 51 51: Label Branch 53 53: Label Branch 50 52: Label Unreachable FunctionEnd 16(f2(vf4;): 2 Function None 11 15(input): 10(ptr) FunctionParameter 17: Label Branch 54 54: Label LoopMerge 56 57 Unroll Branch 58 58: Label 59: 9(fvec4) Load 15(input) 60: 9(fvec4) Load 15(input) 63: 62(bvec4) FUnordNotEqual 59 60 64: 61(bool) Any 63 BranchConditional 64 55 56 55: Label Branch 57 57: Label Branch 54 56: Label Return FunctionEnd 20(f3(vf4;): 8(float) Function None 18 19(input): 10(ptr) FunctionParameter 21: Label Branch 65 65: Label LoopMerge 67 68 None Branch 69 69: Label 70: 9(fvec4) Load 19(input) 71: 9(fvec4) Load 19(input) 72: 62(bvec4) FUnordNotEqual 70 71 73: 61(bool) Any 72 BranchConditional 73 66 67 66: Label 74: 9(fvec4) Load 19(input) 75: 9(fvec4) FNegate 74 76: 8(float) CompositeExtract 75 0 ReturnValue 76 68: Label Branch 65 67: Label 78: 8(float) Undef ReturnValue 78 FunctionEnd 23(f4(vf4;): 8(float) Function None 18 22(input): 10(ptr) FunctionParameter 24: Label 79: 9(fvec4) Load 22(input) 80: 9(fvec4) CompositeConstruct 47 47 47 47 81: 9(fvec4) FSub 79 80 Store 22(input) 81 Branch 82 82: Label LoopMerge 84 85 None Branch 86 86: Label 87: 9(fvec4) Load 22(input) 88: 9(fvec4) Load 22(input) 89: 62(bvec4) FUnordNotEqual 87 88 90: 61(bool) Any 89 BranchConditional 90 83 84 83: Label 91: 9(fvec4) Load 22(input) 92: 9(fvec4) FNegate 91 93: 8(float) CompositeExtract 92 0 ReturnValue 93 85: Label Branch 82 84: Label 99: 8(float) Undef ReturnValue 99 FunctionEnd 26(f5(vf4;): 2 Function None 11 25(input): 10(ptr) FunctionParameter 27: Label Branch 100 100: Label LoopMerge 102 103 None Branch 101 101: Label 106: 33(ptr) AccessChain 25(input) 105 107: 8(float) Load 106 108: 61(bool) FOrdGreaterThan 107 95 SelectionMerge 110 None BranchConditional 108 109 110 109: Label Branch 102 110: Label Branch 103 103: Label Branch 100 102: Label Return FunctionEnd 29(f6(vf4;): 2 Function None 11 28(input): 10(ptr) FunctionParameter 30: Label Branch 112 112: Label LoopMerge 114 115 None Branch 113 113: Label 116: 33(ptr) AccessChain 28(input) 105 117: 8(float) Load 116 118: 61(bool) FOrdGreaterThan 117 95 SelectionMerge 120 None BranchConditional 118 119 120 119: Label Branch 115 120: Label Branch 115 115: Label Branch 112 114: Label Unreachable FunctionEnd 31(f99(): 2 Function None 3 32: Label 124(first): 123(ptr) Variable Function 126(second): 123(ptr) Variable Function Store 124(first) 125 Store 126(second) 127 Branch 128 128: Label LoopMerge 130 131 None Branch 129 129: Label 132: 122(int) Load 124(first) 133: 122(int) Load 126(second) 134: 122(int) IAdd 132 133 Branch 131 131: Label Branch 128 130: Label Unreachable FunctionEnd 36(f100(f1;): 2 Function None 34 35(ii): 33(ptr) FunctionParameter 37: Label 135: 8(float) Load 35(ii) 136: 8(float) FSub 135 47 Store 35(ii) 136 137: 8(float) Load 35(ii) 138: 8(float) FSub 137 47 Store 35(ii) 138 139: 8(float) Load 35(ii) 140: 8(float) FSub 139 47 Store 35(ii) 140 Branch 141 141: Label LoopMerge 143 144 None Branch 142 142: Label Branch 144 144: Label Branch 141 143: Label Unreachable FunctionEnd 40(@PixelShaderFunction(vf4;): 9(fvec4) Function None 38 39(input): 10(ptr) FunctionParameter 41: Label 146(param): 10(ptr) Variable Function 149(param): 10(ptr) Variable Function 152(param): 10(ptr) Variable Function 155(param): 10(ptr) Variable Function 158(param): 10(ptr) Variable Function 161(param): 10(ptr) Variable Function 164(ii): 123(ptr) Variable Function 182(ii): 33(ptr) Variable Function 186(i): 123(ptr) Variable Function 187(count): 123(ptr) Variable Function 200(first): 33(ptr) Variable Function 211(second): 210(ptr) Variable Function 219(third): 33(ptr) Variable Function 225(param): 33(ptr) Variable Function 145: 2 FunctionCall 6(f0() 147: 9(fvec4) Load 39(input) Store 146(param) 147 148: 2 FunctionCall 13(f1(vf4;) 146(param) 150: 9(fvec4) Load 39(input) Store 149(param) 150 151: 2 FunctionCall 16(f2(vf4;) 149(param) 153: 9(fvec4) Load 39(input) Store 152(param) 153 154: 8(float) FunctionCall 20(f3(vf4;) 152(param) 156: 9(fvec4) Load 39(input) Store 155(param) 156 157: 8(float) FunctionCall 23(f4(vf4;) 155(param) 159: 9(fvec4) Load 39(input) Store 158(param) 159 160: 2 FunctionCall 26(f5(vf4;) 158(param) 162: 9(fvec4) Load 39(input) Store 161(param) 162 163: 2 FunctionCall 29(f6(vf4;) 161(param) Store 164(ii) 165 Branch 166 166: Label LoopMerge 168 169 None Branch 170 170: Label 171: 122(int) Load 164(ii) 173: 61(bool) SLessThan 171 172 BranchConditional 173 167 168 167: Label 174: 122(int) Load 164(ii) 176: 61(bool) IEqual 174 175 SelectionMerge 178 None BranchConditional 176 177 178 177: Label Branch 169 178: Label Branch 169 169: Label 180: 122(int) Load 164(ii) 181: 122(int) IAdd 180 127 Store 164(ii) 181 Branch 166 168: Label 183: 8(float) Load 182(ii) 184: 8(float) FSub 183 47 Store 182(ii) 184 185: 2 FunctionCall 31(f99() Store 186(i) 125 188: 8(float) Load 182(ii) 189: 122(int) ConvertFToS 188 Store 187(count) 189 Branch 190 190: Label LoopMerge 192 193 None Branch 194 194: Label 195: 122(int) Load 186(i) 196: 122(int) Load 187(count) 197: 61(bool) SLessThan 195 196 BranchConditional 197 191 192 191: Label Branch 193 193: Label 198: 122(int) Load 186(i) 199: 122(int) IAdd 198 127 Store 186(i) 199 Branch 190 192: Label Store 200(first) 201 Branch 202 202: Label LoopMerge 204 205 None Branch 206 206: Label 207: 8(float) Load 200(first) 212: 33(ptr) AccessChain 211(second) 125 213: 8(float) Load 212 214: 61(bool) FOrdLessThan 207 213 BranchConditional 214 203 204 203: Label 215: 8(float) Load 200(first) 216: 33(ptr) AccessChain 211(second) 127 217: 8(float) Load 216 218: 8(float) FAdd 215 217 220: 8(float) Load 219(third) 221: 8(float) FAdd 218 220 Branch 205 205: Label 222: 33(ptr) AccessChain 211(second) 127 223: 8(float) Load 222 224: 8(float) FAdd 223 47 Store 222 224 Branch 202 204: Label 226: 8(float) Load 182(ii) Store 225(param) 226 227: 2 FunctionCall 36(f100(f1;) 225(param) 228: 9(fvec4) Load 39(input) ReturnValue 228 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.format.rwtexture.frag.out000066400000000000000000000710701506534232700244240ustar00rootroot00000000000000hlsl.format.rwtexture.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:56 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Function Parameters: 0:? Sequence 0:59 move second child to first child ( temp 4-component vector of float) 0:59 Color: direct index for structure ( temp 4-component vector of float) 0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1.000000 0:59 1.000000 0:59 1.000000 0:59 1.000000 0:60 move second child to first child ( temp float) 0:60 Depth: direct index for structure ( temp float) 0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 1.000000 0:62 Branch: Return with expression 0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Function Definition: main( ( temp void) 0:56 Function Parameters: 0:? Sequence 0:56 Sequence 0:56 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:56 Color: direct index for structure ( temp 4-component vector of float) 0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Constant: 0:56 0 (const int) 0:56 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:56 Depth: direct index for structure ( temp float) 0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Constant: 0:56 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rg32f) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba8_snorm) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba8i) uniform image2D) 0:? 'g_tTex2di4' (layout( r11f_g11f_b10f) uniform iimage2D) 0:? 'g_tTex2du4' (layout( r8_snorm) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rg8) readonly uniform image3D) 0:? 'g_tTex3di4' (layout( rgba16i) writeonly uniform iimage3D) 0:? 'g_tTex3du4' (layout( r8i) readonly writeonly uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba8ui) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rg32ui) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( r16ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgb10_a2ui) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( r8ui) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba16f) uniform uimage2DArray) 0:? 'g_tTex01' (layout( rgba8) uniform iimage2DArray) 0:? 'g_tTex02' (layout( rg16f) uniform iimage2DArray) 0:? 'g_tTex03' (layout( r16f) uniform iimage2DArray) 0:? 'g_tTex04' (layout( rgb10_a2) uniform iimage2DArray) 0:? 'g_tTex05' (layout( rg16) uniform iimage2DArray) 0:? 'g_tTex06' (layout( r32f) uniform iimage2DArray) 0:? 'g_tTex07' (layout( rgba16) uniform iimage2DArray) 0:? 'g_tTex08' (layout( r16) uniform iimage2DArray) 0:? 'g_tTex09' (layout( r8) uniform iimage2DArray) 0:? 'g_tTex10' (layout( rgba16_snorm) uniform iimage2DArray) 0:? 'g_tTex11' (layout( rg16_snorm) uniform iimage2DArray) 0:? 'g_tTex12' (layout( r16_snorm) uniform iimage2DArray) 0:? 'g_tTex13' (layout( r8_snorm) uniform iimage2DArray) 0:? 'g_tTex14' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex15' (layout( r32i) uniform iimage2DArray) 0:? 'g_tTex16' (layout( r32ui) uniform iimage2DArray) 0:? 'g_tTex17' (layout( rg16i) uniform iimage2DArray) 0:? 'g_tTex18' (layout( r16i) uniform iimage2DArray) 0:? 'g_tTex19' (layout( rg32i) uniform iimage2DArray) 0:? 'g_tTex20' (layout( rg8i) uniform iimage2DArray) 0:? 'g_tTex21' (layout( rg8ui) uniform iimage2DArray) 0:? 'g_tTex22' (layout( rgba32ui) uniform iimage2DArray) 0:? 'g_tTex23' (layout( rgba16ui) uniform iimage2DArray) 0:? 'g_tTex24' (layout( rg32ui) uniform iimage2DArray) 0:? 'g_tTex25' (layout( rg16ui) uniform iimage2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:56 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Function Parameters: 0:? Sequence 0:59 move second child to first child ( temp 4-component vector of float) 0:59 Color: direct index for structure ( temp 4-component vector of float) 0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1.000000 0:59 1.000000 0:59 1.000000 0:59 1.000000 0:60 move second child to first child ( temp float) 0:60 Depth: direct index for structure ( temp float) 0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 1.000000 0:62 Branch: Return with expression 0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Function Definition: main( ( temp void) 0:56 Function Parameters: 0:? Sequence 0:56 Sequence 0:56 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:56 Color: direct index for structure ( temp 4-component vector of float) 0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Constant: 0:56 0 (const int) 0:56 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:56 Depth: direct index for structure ( temp float) 0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Constant: 0:56 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rg32f) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba8_snorm) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba8i) uniform image2D) 0:? 'g_tTex2di4' (layout( r11f_g11f_b10f) uniform iimage2D) 0:? 'g_tTex2du4' (layout( r8_snorm) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rg8) readonly uniform image3D) 0:? 'g_tTex3di4' (layout( rgba16i) writeonly uniform iimage3D) 0:? 'g_tTex3du4' (layout( r8i) readonly writeonly uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba8ui) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rg32ui) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( r16ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgb10_a2ui) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( r8ui) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba16f) uniform uimage2DArray) 0:? 'g_tTex01' (layout( rgba8) uniform iimage2DArray) 0:? 'g_tTex02' (layout( rg16f) uniform iimage2DArray) 0:? 'g_tTex03' (layout( r16f) uniform iimage2DArray) 0:? 'g_tTex04' (layout( rgb10_a2) uniform iimage2DArray) 0:? 'g_tTex05' (layout( rg16) uniform iimage2DArray) 0:? 'g_tTex06' (layout( r32f) uniform iimage2DArray) 0:? 'g_tTex07' (layout( rgba16) uniform iimage2DArray) 0:? 'g_tTex08' (layout( r16) uniform iimage2DArray) 0:? 'g_tTex09' (layout( r8) uniform iimage2DArray) 0:? 'g_tTex10' (layout( rgba16_snorm) uniform iimage2DArray) 0:? 'g_tTex11' (layout( rg16_snorm) uniform iimage2DArray) 0:? 'g_tTex12' (layout( r16_snorm) uniform iimage2DArray) 0:? 'g_tTex13' (layout( r8_snorm) uniform iimage2DArray) 0:? 'g_tTex14' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex15' (layout( r32i) uniform iimage2DArray) 0:? 'g_tTex16' (layout( r32ui) uniform iimage2DArray) 0:? 'g_tTex17' (layout( rg16i) uniform iimage2DArray) 0:? 'g_tTex18' (layout( r16i) uniform iimage2DArray) 0:? 'g_tTex19' (layout( rg32i) uniform iimage2DArray) 0:? 'g_tTex20' (layout( rg8i) uniform iimage2DArray) 0:? 'g_tTex21' (layout( rg8ui) uniform iimage2DArray) 0:? 'g_tTex22' (layout( rgba32ui) uniform iimage2DArray) 0:? 'g_tTex23' (layout( rgba16ui) uniform iimage2DArray) 0:? 'g_tTex24' (layout( rg32ui) uniform iimage2DArray) 0:? 'g_tTex25' (layout( rg16ui) uniform iimage2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 160 Capability Shader Capability Image1D Capability StorageImageExtendedFormats 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 29 33 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "psout" Name 26 "flattenTemp" Name 29 "@entryPointOutput.Color" Name 33 "@entryPointOutput.Depth" Name 38 "g_sSamp" Name 41 "g_tTex1df4" Name 44 "g_tTex1di4" Name 48 "g_tTex1du4" Name 51 "g_tTex2df4" Name 54 "g_tTex2di4" Name 57 "g_tTex2du4" Name 60 "g_tTex3df4" Name 63 "g_tTex3di4" Name 66 "g_tTex3du4" Name 69 "g_tTex1df4a" Name 72 "g_tTex1di4a" Name 75 "g_tTex1du4a" Name 78 "g_tTex2df4a" Name 81 "g_tTex2di4a" Name 84 "g_tTex2du4a" Name 87 "g_tTex01" Name 90 "g_tTex02" Name 93 "g_tTex03" Name 96 "g_tTex04" Name 99 "g_tTex05" Name 102 "g_tTex06" Name 105 "g_tTex07" Name 108 "g_tTex08" Name 111 "g_tTex09" Name 114 "g_tTex10" Name 117 "g_tTex11" Name 120 "g_tTex12" Name 123 "g_tTex13" Name 126 "g_tTex14" Name 129 "g_tTex15" Name 132 "g_tTex16" Name 135 "g_tTex17" Name 138 "g_tTex18" Name 141 "g_tTex19" Name 144 "g_tTex20" Name 147 "g_tTex21" Name 150 "g_tTex22" Name 153 "g_tTex23" Name 156 "g_tTex24" Name 159 "g_tTex25" Decorate 29(@entryPointOutput.Color) Location 0 Decorate 33(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 38(g_sSamp) Binding 0 Decorate 38(g_sSamp) DescriptorSet 0 Decorate 41(g_tTex1df4) Binding 0 Decorate 41(g_tTex1df4) DescriptorSet 0 Decorate 44(g_tTex1di4) Binding 0 Decorate 44(g_tTex1di4) DescriptorSet 0 Decorate 48(g_tTex1du4) Binding 0 Decorate 48(g_tTex1du4) DescriptorSet 0 Decorate 51(g_tTex2df4) Binding 0 Decorate 51(g_tTex2df4) DescriptorSet 0 Decorate 54(g_tTex2di4) Binding 0 Decorate 54(g_tTex2di4) DescriptorSet 0 Decorate 57(g_tTex2du4) Binding 0 Decorate 57(g_tTex2du4) DescriptorSet 0 Decorate 60(g_tTex3df4) NonWritable Decorate 60(g_tTex3df4) Binding 0 Decorate 60(g_tTex3df4) DescriptorSet 0 Decorate 63(g_tTex3di4) NonReadable Decorate 63(g_tTex3di4) Binding 0 Decorate 63(g_tTex3di4) DescriptorSet 0 Decorate 66(g_tTex3du4) NonWritable Decorate 66(g_tTex3du4) NonReadable Decorate 66(g_tTex3du4) Binding 0 Decorate 66(g_tTex3du4) DescriptorSet 0 Decorate 69(g_tTex1df4a) Binding 0 Decorate 69(g_tTex1df4a) DescriptorSet 0 Decorate 72(g_tTex1di4a) Binding 0 Decorate 72(g_tTex1di4a) DescriptorSet 0 Decorate 75(g_tTex1du4a) Binding 0 Decorate 75(g_tTex1du4a) DescriptorSet 0 Decorate 78(g_tTex2df4a) Binding 0 Decorate 78(g_tTex2df4a) DescriptorSet 0 Decorate 81(g_tTex2di4a) Binding 0 Decorate 81(g_tTex2di4a) DescriptorSet 0 Decorate 84(g_tTex2du4a) Binding 0 Decorate 84(g_tTex2du4a) DescriptorSet 0 Decorate 87(g_tTex01) Binding 0 Decorate 87(g_tTex01) DescriptorSet 0 Decorate 90(g_tTex02) Binding 0 Decorate 90(g_tTex02) DescriptorSet 0 Decorate 93(g_tTex03) Binding 0 Decorate 93(g_tTex03) DescriptorSet 0 Decorate 96(g_tTex04) Binding 0 Decorate 96(g_tTex04) DescriptorSet 0 Decorate 99(g_tTex05) Binding 0 Decorate 99(g_tTex05) DescriptorSet 0 Decorate 102(g_tTex06) Binding 0 Decorate 102(g_tTex06) DescriptorSet 0 Decorate 105(g_tTex07) Binding 0 Decorate 105(g_tTex07) DescriptorSet 0 Decorate 108(g_tTex08) Binding 0 Decorate 108(g_tTex08) DescriptorSet 0 Decorate 111(g_tTex09) Binding 0 Decorate 111(g_tTex09) DescriptorSet 0 Decorate 114(g_tTex10) Binding 0 Decorate 114(g_tTex10) DescriptorSet 0 Decorate 117(g_tTex11) Binding 0 Decorate 117(g_tTex11) DescriptorSet 0 Decorate 120(g_tTex12) Binding 0 Decorate 120(g_tTex12) DescriptorSet 0 Decorate 123(g_tTex13) Binding 0 Decorate 123(g_tTex13) DescriptorSet 0 Decorate 126(g_tTex14) Binding 0 Decorate 126(g_tTex14) DescriptorSet 0 Decorate 129(g_tTex15) Binding 0 Decorate 129(g_tTex15) DescriptorSet 0 Decorate 132(g_tTex16) Binding 0 Decorate 132(g_tTex16) DescriptorSet 0 Decorate 135(g_tTex17) Binding 0 Decorate 135(g_tTex17) DescriptorSet 0 Decorate 138(g_tTex18) Binding 0 Decorate 138(g_tTex18) DescriptorSet 0 Decorate 141(g_tTex19) Binding 0 Decorate 141(g_tTex19) DescriptorSet 0 Decorate 144(g_tTex20) Binding 0 Decorate 144(g_tTex20) DescriptorSet 0 Decorate 147(g_tTex21) Binding 0 Decorate 147(g_tTex21) DescriptorSet 0 Decorate 150(g_tTex22) Binding 0 Decorate 150(g_tTex22) DescriptorSet 0 Decorate 153(g_tTex23) Binding 0 Decorate 153(g_tTex23) DescriptorSet 0 Decorate 156(g_tTex24) Binding 0 Decorate 156(g_tTex24) DescriptorSet 0 Decorate 159(g_tTex25) Binding 0 Decorate 159(g_tTex25) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 8(PS_OUTPUT) 14: TypeInt 32 1 15: 14(int) Constant 0 16: 6(float) Constant 1065353216 17: 7(fvec4) ConstantComposite 16 16 16 16 18: TypePointer Function 7(fvec4) 20: 14(int) Constant 1 21: TypePointer Function 6(float) 28: TypePointer Output 7(fvec4) 29(@entryPointOutput.Color): 28(ptr) Variable Output 32: TypePointer Output 6(float) 33(@entryPointOutput.Depth): 32(ptr) Variable Output 36: TypeSampler 37: TypePointer UniformConstant 36 38(g_sSamp): 37(ptr) Variable UniformConstant 39: TypeImage 6(float) 1D nonsampled format:Rgba32f 40: TypePointer UniformConstant 39 41(g_tTex1df4): 40(ptr) Variable UniformConstant 42: TypeImage 14(int) 1D nonsampled format:Rg32f 43: TypePointer UniformConstant 42 44(g_tTex1di4): 43(ptr) Variable UniformConstant 45: TypeInt 32 0 46: TypeImage 45(int) 1D nonsampled format:Rgba8Snorm 47: TypePointer UniformConstant 46 48(g_tTex1du4): 47(ptr) Variable UniformConstant 49: TypeImage 6(float) 2D nonsampled format:Rgba8i 50: TypePointer UniformConstant 49 51(g_tTex2df4): 50(ptr) Variable UniformConstant 52: TypeImage 14(int) 2D nonsampled format:R11fG11fB10f 53: TypePointer UniformConstant 52 54(g_tTex2di4): 53(ptr) Variable UniformConstant 55: TypeImage 45(int) 2D nonsampled format:R8Snorm 56: TypePointer UniformConstant 55 57(g_tTex2du4): 56(ptr) Variable UniformConstant 58: TypeImage 6(float) 3D nonsampled format:Rg8 59: TypePointer UniformConstant 58 60(g_tTex3df4): 59(ptr) Variable UniformConstant 61: TypeImage 14(int) 3D nonsampled format:Rgba16i 62: TypePointer UniformConstant 61 63(g_tTex3di4): 62(ptr) Variable UniformConstant 64: TypeImage 45(int) 3D nonsampled format:R8i 65: TypePointer UniformConstant 64 66(g_tTex3du4): 65(ptr) Variable UniformConstant 67: TypeImage 6(float) 1D array nonsampled format:Rgba8ui 68: TypePointer UniformConstant 67 69(g_tTex1df4a): 68(ptr) Variable UniformConstant 70: TypeImage 14(int) 1D array nonsampled format:Rg32ui 71: TypePointer UniformConstant 70 72(g_tTex1di4a): 71(ptr) Variable UniformConstant 73: TypeImage 45(int) 1D array nonsampled format:R16ui 74: TypePointer UniformConstant 73 75(g_tTex1du4a): 74(ptr) Variable UniformConstant 76: TypeImage 6(float) 2D array nonsampled format:Rgb10a2ui 77: TypePointer UniformConstant 76 78(g_tTex2df4a): 77(ptr) Variable UniformConstant 79: TypeImage 14(int) 2D array nonsampled format:R8ui 80: TypePointer UniformConstant 79 81(g_tTex2di4a): 80(ptr) Variable UniformConstant 82: TypeImage 45(int) 2D array nonsampled format:Rgba16f 83: TypePointer UniformConstant 82 84(g_tTex2du4a): 83(ptr) Variable UniformConstant 85: TypeImage 14(int) 2D array nonsampled format:Rgba8 86: TypePointer UniformConstant 85 87(g_tTex01): 86(ptr) Variable UniformConstant 88: TypeImage 14(int) 2D array nonsampled format:Rg16f 89: TypePointer UniformConstant 88 90(g_tTex02): 89(ptr) Variable UniformConstant 91: TypeImage 14(int) 2D array nonsampled format:R16f 92: TypePointer UniformConstant 91 93(g_tTex03): 92(ptr) Variable UniformConstant 94: TypeImage 14(int) 2D array nonsampled format:Rgb10A2 95: TypePointer UniformConstant 94 96(g_tTex04): 95(ptr) Variable UniformConstant 97: TypeImage 14(int) 2D array nonsampled format:Rg16 98: TypePointer UniformConstant 97 99(g_tTex05): 98(ptr) Variable UniformConstant 100: TypeImage 14(int) 2D array nonsampled format:R32f 101: TypePointer UniformConstant 100 102(g_tTex06): 101(ptr) Variable UniformConstant 103: TypeImage 14(int) 2D array nonsampled format:Rgba16 104: TypePointer UniformConstant 103 105(g_tTex07): 104(ptr) Variable UniformConstant 106: TypeImage 14(int) 2D array nonsampled format:R16 107: TypePointer UniformConstant 106 108(g_tTex08): 107(ptr) Variable UniformConstant 109: TypeImage 14(int) 2D array nonsampled format:R8 110: TypePointer UniformConstant 109 111(g_tTex09): 110(ptr) Variable UniformConstant 112: TypeImage 14(int) 2D array nonsampled format:Rgba16Snorm 113: TypePointer UniformConstant 112 114(g_tTex10): 113(ptr) Variable UniformConstant 115: TypeImage 14(int) 2D array nonsampled format:Rg16Snorm 116: TypePointer UniformConstant 115 117(g_tTex11): 116(ptr) Variable UniformConstant 118: TypeImage 14(int) 2D array nonsampled format:R16Snorm 119: TypePointer UniformConstant 118 120(g_tTex12): 119(ptr) Variable UniformConstant 121: TypeImage 14(int) 2D array nonsampled format:R8Snorm 122: TypePointer UniformConstant 121 123(g_tTex13): 122(ptr) Variable UniformConstant 124: TypeImage 14(int) 2D array nonsampled format:Rgba32i 125: TypePointer UniformConstant 124 126(g_tTex14): 125(ptr) Variable UniformConstant 127: TypeImage 14(int) 2D array nonsampled format:R32i 128: TypePointer UniformConstant 127 129(g_tTex15): 128(ptr) Variable UniformConstant 130: TypeImage 14(int) 2D array nonsampled format:R32ui 131: TypePointer UniformConstant 130 132(g_tTex16): 131(ptr) Variable UniformConstant 133: TypeImage 14(int) 2D array nonsampled format:Rg16i 134: TypePointer UniformConstant 133 135(g_tTex17): 134(ptr) Variable UniformConstant 136: TypeImage 14(int) 2D array nonsampled format:R16i 137: TypePointer UniformConstant 136 138(g_tTex18): 137(ptr) Variable UniformConstant 139: TypeImage 14(int) 2D array nonsampled format:Rg32i 140: TypePointer UniformConstant 139 141(g_tTex19): 140(ptr) Variable UniformConstant 142: TypeImage 14(int) 2D array nonsampled format:Rg8i 143: TypePointer UniformConstant 142 144(g_tTex20): 143(ptr) Variable UniformConstant 145: TypeImage 14(int) 2D array nonsampled format:Rg8ui 146: TypePointer UniformConstant 145 147(g_tTex21): 146(ptr) Variable UniformConstant 148: TypeImage 14(int) 2D array nonsampled format:Rgba32ui 149: TypePointer UniformConstant 148 150(g_tTex22): 149(ptr) Variable UniformConstant 151: TypeImage 14(int) 2D array nonsampled format:Rgba16ui 152: TypePointer UniformConstant 151 153(g_tTex23): 152(ptr) Variable UniformConstant 154: TypeImage 14(int) 2D array nonsampled format:Rg32ui 155: TypePointer UniformConstant 154 156(g_tTex24): 155(ptr) Variable UniformConstant 157: TypeImage 14(int) 2D array nonsampled format:Rg16ui 158: TypePointer UniformConstant 157 159(g_tTex25): 158(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 26(flattenTemp): 12(ptr) Variable Function 27:8(PS_OUTPUT) FunctionCall 10(@main() Store 26(flattenTemp) 27 30: 18(ptr) AccessChain 26(flattenTemp) 15 31: 7(fvec4) Load 30 Store 29(@entryPointOutput.Color) 31 34: 21(ptr) AccessChain 26(flattenTemp) 20 35: 6(float) Load 34 Store 33(@entryPointOutput.Depth) 35 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(psout): 12(ptr) Variable Function 19: 18(ptr) AccessChain 13(psout) 15 Store 19 17 22: 21(ptr) AccessChain 13(psout) 20 Store 22 16 23:8(PS_OUTPUT) Load 13(psout) ReturnValue 23 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.frag.out000066400000000000000000000164431506534232700210700ustar00rootroot00000000000000hlsl.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:1 move second child to first child (temp 4-component vector of float) 0:1 'AmbientColor' (temp 4-component vector of float) 0:? Constant: 0:? 1.000000 0:? 0.500000 0:? 0.000000 0:? 1.000000 0:2 move second child to first child (temp float) 0:2 'AmbientIntensity' (temp float) 0:2 Constant: 0:2 0.100000 0:13 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:5 Function Parameters: 0:5 'input' (in 4-component vector of float) 0:? Sequence 0:6 Branch: Return with expression 0:6 add (temp 4-component vector of float) 0:6 vector-scale (temp 4-component vector of float) 0:6 'input' (in 4-component vector of float) 0:6 'AmbientIntensity' (temp float) 0:6 'AmbientColor' (temp 4-component vector of float) 0:7 Branch: Return with expression 0:7 add (temp 4-component vector of float) 0:7 component-wise multiply (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float) 0:7 'input' (in 4-component vector of float) 0:7 component-wise multiply (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float) 0:7 'input' (in 4-component vector of float) 0:8 Branch: Return with expression 0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float) 0:8 component-wise multiply (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float) 0:8 'input' (in 4-component vector of float) 0:8 'input' (in 4-component vector of float) 0:9 Branch: Return with expression 0:9 component-wise multiply (temp 4-component vector of float) 0:9 Pre-Increment (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float) 0:9 Negate value (temp 4-component vector of float) 0:9 Negate value (temp 4-component vector of float) 0:9 Pre-Decrement (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float) 0:10 Branch: Return with expression 0:10 add (temp 4-component vector of float) 0:10 Post-Increment (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) 0:10 Pre-Increment (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) 0:11 Branch: Return with expression 0:11 sine (global 4-component vector of float) 0:11 'input' (in 4-component vector of float) 0:? Linker Objects 0:? 'AmbientColor' (temp 4-component vector of float) 0:? 'AmbientIntensity' (temp float) Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:1 move second child to first child (temp 4-component vector of float) 0:1 'AmbientColor' (temp 4-component vector of float) 0:? Constant: 0:? 1.000000 0:? 0.500000 0:? 0.000000 0:? 1.000000 0:2 move second child to first child (temp float) 0:2 'AmbientIntensity' (temp float) 0:2 Constant: 0:2 0.100000 0:13 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:5 Function Parameters: 0:5 'input' (in 4-component vector of float) 0:? Sequence 0:6 Branch: Return with expression 0:6 add (temp 4-component vector of float) 0:6 vector-scale (temp 4-component vector of float) 0:6 'input' (in 4-component vector of float) 0:6 'AmbientIntensity' (temp float) 0:6 'AmbientColor' (temp 4-component vector of float) 0:7 Branch: Return with expression 0:7 add (temp 4-component vector of float) 0:7 component-wise multiply (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float) 0:7 'input' (in 4-component vector of float) 0:7 component-wise multiply (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float) 0:7 'input' (in 4-component vector of float) 0:8 Branch: Return with expression 0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float) 0:8 component-wise multiply (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float) 0:8 'input' (in 4-component vector of float) 0:8 'input' (in 4-component vector of float) 0:9 Branch: Return with expression 0:9 component-wise multiply (temp 4-component vector of float) 0:9 Pre-Increment (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float) 0:9 Negate value (temp 4-component vector of float) 0:9 Negate value (temp 4-component vector of float) 0:9 Pre-Decrement (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float) 0:10 Branch: Return with expression 0:10 add (temp 4-component vector of float) 0:10 Post-Increment (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) 0:10 Pre-Increment (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) 0:11 Branch: Return with expression 0:11 sine (global 4-component vector of float) 0:11 'input' (in 4-component vector of float) 0:? Linker Objects 0:? 'AmbientColor' (temp 4-component vector of float) 0:? 'AmbientIntensity' (temp float) // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 58 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 9 ExecutionMode 4 OriginUpperLeft Source HLSL 450 Name 4 "PixelShaderFunction" Name 9 "input" Name 12 "AmbientIntensity" Name 16 "AmbientColor" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Input 7(fvec4) 9(input): 8(ptr) Variable Input 11: TypePointer Function 6(float) 15: TypePointer Function 7(fvec4) 37: 6(float) Constant 1065353216 4(PixelShaderFunction): 2 Function None 3 5: Label 12(AmbientIntensity): 11(ptr) Variable Function 16(AmbientColor): 15(ptr) Variable Function 10: 7(fvec4) Load 9(input) 13: 6(float) Load 12(AmbientIntensity) 14: 7(fvec4) VectorTimesScalar 10 13 17: 7(fvec4) Load 16(AmbientColor) 18: 7(fvec4) FAdd 14 17 ReturnValue 18 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.fraggeom.frag.out000066400000000000000000000110211506534232700226410ustar00rootroot00000000000000hlsl.fraggeom.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: GS_Draw(struct-myVertex-vf41;struct-myVertex-vf41; ( temp void) 0:9 Function Parameters: 0:9 'IN' ( in structure{ temp 4-component vector of float pos}) 0:9 'OutputStream' ( out structure{ temp 4-component vector of float pos}) 0:? Sequence 0:10 Constant: 0:10 0.000000 0:11 Constant: 0:11 0.000000 0:15 Function Definition: @main( ( temp 4-component vector of float) 0:15 Function Parameters: 0:? Sequence 0:16 Branch: Return with expression 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:15 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: GS_Draw(struct-myVertex-vf41;struct-myVertex-vf41; ( temp void) 0:9 Function Parameters: 0:9 'IN' ( in structure{ temp 4-component vector of float pos}) 0:9 'OutputStream' ( out structure{ temp 4-component vector of float pos}) 0:? Sequence 0:10 Constant: 0:10 0.000000 0:11 Constant: 0:11 0.000000 0:15 Function Definition: @main( ( temp 4-component vector of float) 0:15 Function Parameters: 0:? Sequence 0:16 Branch: Return with expression 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:15 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 23 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "myVertex" MemberName 8(myVertex) 0 "pos" Name 13 "GS_Draw(struct-myVertex-vf41;struct-myVertex-vf41;" Name 11 "IN" Name 12 "OutputStream" Name 16 "@main(" Name 23 "@entryPointOutput" Decorate 23(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(myVertex): TypeStruct 7(fvec4) 9: TypePointer Function 8(myVertex) 10: TypeFunction 2 9(ptr) 9(ptr) 15: TypeFunction 7(fvec4) 18: 6(float) Constant 0 19: 7(fvec4) ConstantComposite 18 18 18 18 22: TypePointer Output 7(fvec4) 23(@entryPointOutput): 22(ptr) Variable Output 4(main): 2 Function None 3 5: Label 24: 7(fvec4) FunctionCall 16(@main() Store 23(@entryPointOutput) 24 Return FunctionEnd 13(GS_Draw(struct-myVertex-vf41;struct-myVertex-vf41;): 2 Function None 10 11(IN): 9(ptr) FunctionParameter 12(OutputStream): 9(ptr) FunctionParameter 14: Label Return FunctionEnd 16(@main(): 7(fvec4) Function None 15 17: Label ReturnValue 19 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.function.frag.out000066400000000000000000000132241506534232700227060ustar00rootroot00000000000000hlsl.function.frag ERROR: 0:29: 'fun1' : unknown variable ERROR: 0:29: 'return' : type does not match, or is not convertible to, the function's return type ERROR: 2 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:2 Function Definition: fun0( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 1.000000 0:3 1.000000 0:3 1.000000 0:3 1.000000 0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'col' ( const (read only) 4-component vector of float) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct vec4 ( temp 4-component vector of float) 0:8 Comma ( temp float) 0:8 Comma ( temp float) 0:8 Comma ( temp float) 0:8 Constant: 0:8 1.000000 0:8 Constant: 0:8 2.000000 0:8 Constant: 0:8 3.000000 0:8 Constant: 0:8 4.000000 0:12 Function Definition: fun3(vf4; ( temp uint) 0:12 Function Parameters: 0:12 'col' ( const (read only) 4-component vector of float) 0:? Sequence 0:13 Branch: Return with expression 0:13 Constant: 0:13 7 (const uint) 0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of float) 0:17 Function Parameters: 0:17 'id1' ( in uint) 0:17 'id2' ( uniform uint) 0:? Sequence 0:18 Branch: Return with expression 0:18 Construct vec4 ( temp 4-component vector of float) 0:18 Convert uint to float ( temp float) 0:18 component-wise multiply ( temp uint) 0:18 'id1' ( in uint) 0:18 'id2' ( uniform uint) 0:22 Function Definition: fun1(i1; ( temp 4-component vector of float) 0:22 Function Parameters: 0:22 'index' ( in int) 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp uint) 0:23 'entityId' ( temp uint) 0:23 Function Call: fun3(vf4; ( temp uint) 0:23 Function Call: fun2(vf4; ( temp 4-component vector of float) 0:23 Function Call: fun0( ( temp 4-component vector of float) 0:24 Branch: Return with expression 0:24 Function Call: fun4(u1;u1; ( temp 4-component vector of float) 0:24 'entityId' ( temp uint) 0:24 'entityId' ( temp uint) 0:28 Function Definition: @main( ( temp int) 0:28 Function Parameters: 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) 0:28 Function Call: @main( ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:2 Function Definition: fun0( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 1.000000 0:3 1.000000 0:3 1.000000 0:3 1.000000 0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'col' ( const (read only) 4-component vector of float) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct vec4 ( temp 4-component vector of float) 0:8 Comma ( temp float) 0:8 Comma ( temp float) 0:8 Comma ( temp float) 0:8 Constant: 0:8 1.000000 0:8 Constant: 0:8 2.000000 0:8 Constant: 0:8 3.000000 0:8 Constant: 0:8 4.000000 0:12 Function Definition: fun3(vf4; ( temp uint) 0:12 Function Parameters: 0:12 'col' ( const (read only) 4-component vector of float) 0:? Sequence 0:13 Branch: Return with expression 0:13 Constant: 0:13 7 (const uint) 0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of float) 0:17 Function Parameters: 0:17 'id1' ( in uint) 0:17 'id2' ( uniform uint) 0:? Sequence 0:18 Branch: Return with expression 0:18 Construct vec4 ( temp 4-component vector of float) 0:18 Convert uint to float ( temp float) 0:18 component-wise multiply ( temp uint) 0:18 'id1' ( in uint) 0:18 'id2' ( uniform uint) 0:22 Function Definition: fun1(i1; ( temp 4-component vector of float) 0:22 Function Parameters: 0:22 'index' ( in int) 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp uint) 0:23 'entityId' ( temp uint) 0:23 Function Call: fun3(vf4; ( temp uint) 0:23 Function Call: fun2(vf4; ( temp 4-component vector of float) 0:23 Function Call: fun0( ( temp 4-component vector of float) 0:24 Branch: Return with expression 0:24 Function Call: fun4(u1;u1; ( temp 4-component vector of float) 0:24 'entityId' ( temp uint) 0:24 'entityId' ( temp uint) 0:28 Function Definition: @main( ( temp int) 0:28 Function Parameters: 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) 0:28 Function Call: @main( ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.gather.array.dx10.frag.out000066400000000000000000000561551506534232700242350ustar00rootroot00000000000000hlsl.gather.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of float) 0:29 'txval20' ( temp 4-component vector of float) 0:29 textureGather ( temp 4-component vector of float) 0:29 Construct combined texture-sampler ( temp sampler2DArray) 0:29 'g_tTex2df4a' ( uniform texture2DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.100000 0:29 0.200000 0:29 0.300000 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of int) 0:30 'txval21' ( temp 4-component vector of int) 0:30 textureGather ( temp 4-component vector of int) 0:30 Construct combined texture-sampler ( temp isampler2DArray) 0:30 'g_tTex2di4a' ( uniform itexture2DArray) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.300000 0:30 0.400000 0:30 0.500000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of uint) 0:31 'txval22' ( temp 4-component vector of uint) 0:31 textureGather ( temp 4-component vector of uint) 0:31 Construct combined texture-sampler ( temp usampler2DArray) 0:31 'g_tTex2du4a' ( uniform utexture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.500000 0:31 0.600000 0:31 0.700000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 textureGather ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4a' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 textureGather ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.400000 0:36 0.500000 0:36 0.600000 0:36 0.700000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 textureGather ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.700000 0:37 0.800000 0:37 0.900000 0:37 1.000000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of float) 0:29 'txval20' ( temp 4-component vector of float) 0:29 textureGather ( temp 4-component vector of float) 0:29 Construct combined texture-sampler ( temp sampler2DArray) 0:29 'g_tTex2df4a' ( uniform texture2DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.100000 0:29 0.200000 0:29 0.300000 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of int) 0:30 'txval21' ( temp 4-component vector of int) 0:30 textureGather ( temp 4-component vector of int) 0:30 Construct combined texture-sampler ( temp isampler2DArray) 0:30 'g_tTex2di4a' ( uniform itexture2DArray) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.300000 0:30 0.400000 0:30 0.500000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of uint) 0:31 'txval22' ( temp 4-component vector of uint) 0:31 textureGather ( temp 4-component vector of uint) 0:31 Construct combined texture-sampler ( temp usampler2DArray) 0:31 'g_tTex2du4a' ( uniform utexture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.500000 0:31 0.600000 0:31 0.700000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 textureGather ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4a' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 textureGather ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.400000 0:36 0.500000 0:36 0.600000 0:36 0.700000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 textureGather ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.700000 0:37 0.800000 0:37 0.900000 0:37 1.000000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 124 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 107 111 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval20" Name 16 "g_tTex2df4a" Name 20 "g_sSamp" Name 34 "txval21" Name 37 "g_tTex2di4a" Name 49 "txval22" Name 52 "g_tTex2du4a" Name 61 "txval40" Name 64 "g_tTexcdf4a" Name 71 "txval41" Name 74 "g_tTexcdi4a" Name 81 "txval42" Name 84 "g_tTexcdu4a" Name 95 "psout" Name 104 "flattenTemp" Name 107 "@entryPointOutput.Color" Name 111 "@entryPointOutput.Depth" Name 116 "g_tTex1df4a" Name 117 "g_tTex1df4" Name 120 "g_tTex1di4a" Name 123 "g_tTex1du4a" Decorate 16(g_tTex2df4a) Binding 2 Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 37(g_tTex2di4a) Binding 3 Decorate 37(g_tTex2di4a) DescriptorSet 0 Decorate 52(g_tTex2du4a) Binding 4 Decorate 52(g_tTex2du4a) DescriptorSet 0 Decorate 64(g_tTexcdf4a) Binding 5 Decorate 64(g_tTexcdf4a) DescriptorSet 0 Decorate 74(g_tTexcdi4a) Binding 6 Decorate 74(g_tTexcdi4a) DescriptorSet 0 Decorate 84(g_tTexcdu4a) Binding 7 Decorate 84(g_tTexcdu4a) DescriptorSet 0 Decorate 107(@entryPointOutput.Color) Location 0 Decorate 111(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 116(g_tTex1df4a) Binding 1 Decorate 116(g_tTex1df4a) DescriptorSet 0 Decorate 117(g_tTex1df4) Binding 0 Decorate 117(g_tTex1df4) DescriptorSet 0 Decorate 120(g_tTex1di4a) Binding 0 Decorate 120(g_tTex1di4a) DescriptorSet 0 Decorate 123(g_tTex1du4a) Binding 0 Decorate 123(g_tTex1du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 3 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 6(float) Constant 1050253722 28: 24(fvec3) ConstantComposite 25 26 27 29: TypeInt 32 1 30: 29(int) Constant 0 32: TypeVector 29(int) 4 33: TypePointer Function 32(ivec4) 35: TypeImage 29(int) 2D array sampled format:Unknown 36: TypePointer UniformConstant 35 37(g_tTex2di4a): 36(ptr) Variable UniformConstant 40: TypeSampledImage 35 42: 6(float) Constant 1053609165 43: 6(float) Constant 1056964608 44: 24(fvec3) ConstantComposite 27 42 43 46: TypeInt 32 0 47: TypeVector 46(int) 4 48: TypePointer Function 47(ivec4) 50: TypeImage 46(int) 2D array sampled format:Unknown 51: TypePointer UniformConstant 50 52(g_tTex2du4a): 51(ptr) Variable UniformConstant 55: TypeSampledImage 50 57: 6(float) Constant 1058642330 58: 6(float) Constant 1060320051 59: 24(fvec3) ConstantComposite 43 57 58 62: TypeImage 6(float) Cube array sampled format:Unknown 63: TypePointer UniformConstant 62 64(g_tTexcdf4a): 63(ptr) Variable UniformConstant 67: TypeSampledImage 62 69: 7(fvec4) ConstantComposite 25 26 27 42 72: TypeImage 29(int) Cube array sampled format:Unknown 73: TypePointer UniformConstant 72 74(g_tTexcdi4a): 73(ptr) Variable UniformConstant 77: TypeSampledImage 72 79: 7(fvec4) ConstantComposite 42 43 57 58 82: TypeImage 46(int) Cube array sampled format:Unknown 83: TypePointer UniformConstant 82 84(g_tTexcdu4a): 83(ptr) Variable UniformConstant 87: TypeSampledImage 82 89: 6(float) Constant 1061997773 90: 6(float) Constant 1063675494 91: 6(float) Constant 1065353216 92: 7(fvec4) ConstantComposite 58 89 90 91 94: TypePointer Function 8(PS_OUTPUT) 96: 7(fvec4) ConstantComposite 91 91 91 91 98: 29(int) Constant 1 99: TypePointer Function 6(float) 106: TypePointer Output 7(fvec4) 107(@entryPointOutput.Color): 106(ptr) Variable Output 110: TypePointer Output 6(float) 111(@entryPointOutput.Depth): 110(ptr) Variable Output 114: TypeImage 6(float) 1D array sampled format:Unknown 115: TypePointer UniformConstant 114 116(g_tTex1df4a): 115(ptr) Variable UniformConstant 117(g_tTex1df4): 115(ptr) Variable UniformConstant 118: TypeImage 29(int) 1D array sampled format:Unknown 119: TypePointer UniformConstant 118 120(g_tTex1di4a): 119(ptr) Variable UniformConstant 121: TypeImage 46(int) 1D array sampled format:Unknown 122: TypePointer UniformConstant 121 123(g_tTex1du4a): 122(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 104(flattenTemp): 94(ptr) Variable Function 105:8(PS_OUTPUT) FunctionCall 10(@main() Store 104(flattenTemp) 105 108: 12(ptr) AccessChain 104(flattenTemp) 30 109: 7(fvec4) Load 108 Store 107(@entryPointOutput.Color) 109 112: 99(ptr) AccessChain 104(flattenTemp) 98 113: 6(float) Load 112 Store 111(@entryPointOutput.Depth) 113 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval20): 12(ptr) Variable Function 34(txval21): 33(ptr) Variable Function 49(txval22): 48(ptr) Variable Function 61(txval40): 12(ptr) Variable Function 71(txval41): 33(ptr) Variable Function 81(txval42): 48(ptr) Variable Function 95(psout): 94(ptr) Variable Function 17: 14 Load 16(g_tTex2df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 31: 7(fvec4) ImageGather 23 28 30 Store 13(txval20) 31 38: 35 Load 37(g_tTex2di4a) 39: 18 Load 20(g_sSamp) 41: 40 SampledImage 38 39 45: 32(ivec4) ImageGather 41 44 30 Store 34(txval21) 45 53: 50 Load 52(g_tTex2du4a) 54: 18 Load 20(g_sSamp) 56: 55 SampledImage 53 54 60: 47(ivec4) ImageGather 56 59 30 Store 49(txval22) 60 65: 62 Load 64(g_tTexcdf4a) 66: 18 Load 20(g_sSamp) 68: 67 SampledImage 65 66 70: 7(fvec4) ImageGather 68 69 30 Store 61(txval40) 70 75: 72 Load 74(g_tTexcdi4a) 76: 18 Load 20(g_sSamp) 78: 77 SampledImage 75 76 80: 32(ivec4) ImageGather 78 79 30 Store 71(txval41) 80 85: 82 Load 84(g_tTexcdu4a) 86: 18 Load 20(g_sSamp) 88: 87 SampledImage 85 86 93: 47(ivec4) ImageGather 88 92 30 Store 81(txval42) 93 97: 12(ptr) AccessChain 95(psout) 30 Store 97 96 100: 99(ptr) AccessChain 95(psout) 98 Store 100 91 101:8(PS_OUTPUT) Load 95(psout) ReturnValue 101 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gather.basic.dx10.frag.out000066400000000000000000000601711506534232700241710ustar00rootroot00000000000000hlsl.gather.basic.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Parameters: 0:? Sequence 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'txval20' ( temp 4-component vector of float) 0:34 textureGather ( temp 4-component vector of float) 0:34 Construct combined texture-sampler ( temp sampler2D) 0:34 'g_tTex2df4' ( uniform texture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.100000 0:34 0.200000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of int) 0:35 'txval21' ( temp 4-component vector of int) 0:35 textureGather ( temp 4-component vector of int) 0:35 Construct combined texture-sampler ( temp isampler2D) 0:35 'g_tTex2di4' ( uniform itexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.300000 0:35 0.400000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of uint) 0:36 'txval22' ( temp 4-component vector of uint) 0:36 textureGather ( temp 4-component vector of uint) 0:36 Construct combined texture-sampler ( temp usampler2D) 0:36 'g_tTex2du4' ( uniform utexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.500000 0:36 0.600000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'txval40' ( temp 4-component vector of float) 0:40 textureGather ( temp 4-component vector of float) 0:40 Construct combined texture-sampler ( temp samplerCube) 0:40 'g_tTexcdf4' ( uniform textureCube) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.100000 0:40 0.200000 0:40 0.300000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of int) 0:41 'txval41' ( temp 4-component vector of int) 0:41 textureGather ( temp 4-component vector of int) 0:41 Construct combined texture-sampler ( temp isamplerCube) 0:41 'g_tTexcdi4' ( uniform itextureCube) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.400000 0:41 0.500000 0:41 0.600000 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of uint) 0:42 'txval42' ( temp 4-component vector of uint) 0:42 textureGather ( temp 4-component vector of uint) 0:42 Construct combined texture-sampler ( temp usamplerCube) 0:42 'g_tTexcdu4' ( uniform utextureCube) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Constant: 0:42 0.700000 0:42 0.800000 0:42 0.900000 0:44 move second child to first child ( temp 4-component vector of float) 0:44 Color: direct index for structure ( temp 4-component vector of float) 0:44 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1.000000 0:44 1.000000 0:44 1.000000 0:44 1.000000 0:45 move second child to first child ( temp float) 0:45 Depth: direct index for structure ( temp float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1.000000 0:47 Branch: Return with expression 0:47 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Definition: main( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:29 Sequence 0:29 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:29 Color: direct index for structure ( temp 4-component vector of float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Constant: 0:29 0 (const int) 0:29 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:29 Depth: direct index for structure ( temp float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Constant: 0:29 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Parameters: 0:? Sequence 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'txval20' ( temp 4-component vector of float) 0:34 textureGather ( temp 4-component vector of float) 0:34 Construct combined texture-sampler ( temp sampler2D) 0:34 'g_tTex2df4' ( uniform texture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.100000 0:34 0.200000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of int) 0:35 'txval21' ( temp 4-component vector of int) 0:35 textureGather ( temp 4-component vector of int) 0:35 Construct combined texture-sampler ( temp isampler2D) 0:35 'g_tTex2di4' ( uniform itexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.300000 0:35 0.400000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of uint) 0:36 'txval22' ( temp 4-component vector of uint) 0:36 textureGather ( temp 4-component vector of uint) 0:36 Construct combined texture-sampler ( temp usampler2D) 0:36 'g_tTex2du4' ( uniform utexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.500000 0:36 0.600000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'txval40' ( temp 4-component vector of float) 0:40 textureGather ( temp 4-component vector of float) 0:40 Construct combined texture-sampler ( temp samplerCube) 0:40 'g_tTexcdf4' ( uniform textureCube) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.100000 0:40 0.200000 0:40 0.300000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of int) 0:41 'txval41' ( temp 4-component vector of int) 0:41 textureGather ( temp 4-component vector of int) 0:41 Construct combined texture-sampler ( temp isamplerCube) 0:41 'g_tTexcdi4' ( uniform itextureCube) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.400000 0:41 0.500000 0:41 0.600000 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of uint) 0:42 'txval42' ( temp 4-component vector of uint) 0:42 textureGather ( temp 4-component vector of uint) 0:42 Construct combined texture-sampler ( temp usamplerCube) 0:42 'g_tTexcdu4' ( uniform utextureCube) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Constant: 0:42 0.700000 0:42 0.800000 0:42 0.900000 0:44 move second child to first child ( temp 4-component vector of float) 0:44 Color: direct index for structure ( temp 4-component vector of float) 0:44 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 1.000000 0:44 1.000000 0:44 1.000000 0:44 1.000000 0:45 move second child to first child ( temp float) 0:45 Depth: direct index for structure ( temp float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 1 (const int) 0:45 Constant: 0:45 1.000000 0:47 Branch: Return with expression 0:47 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Definition: main( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:29 Sequence 0:29 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:29 Color: direct index for structure ( temp 4-component vector of float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Constant: 0:29 0 (const int) 0:29 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:29 Depth: direct index for structure ( temp float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Constant: 0:29 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 135 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 108 112 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval20" Name 16 "g_tTex2df4" Name 20 "g_sSamp" Name 33 "txval21" Name 36 "g_tTex2di4" Name 48 "txval22" Name 51 "g_tTex2du4" Name 60 "txval40" Name 63 "g_tTexcdf4" Name 71 "txval41" Name 74 "g_tTexcdi4" Name 81 "txval42" Name 84 "g_tTexcdu4" Name 95 "psout" Name 105 "flattenTemp" Name 108 "@entryPointOutput.Color" Name 112 "@entryPointOutput.Depth" Name 115 "g_sSamp2d" Name 118 "g_tTex1df4a" Name 119 "g_tTex1df4" Name 122 "g_tTex1di4" Name 125 "g_tTex1du4" Name 128 "g_tTex3df4" Name 131 "g_tTex3di4" Name 134 "g_tTex3du4" Decorate 16(g_tTex2df4) Binding 2 Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex2di4) Binding 3 Decorate 36(g_tTex2di4) DescriptorSet 0 Decorate 51(g_tTex2du4) Binding 4 Decorate 51(g_tTex2du4) DescriptorSet 0 Decorate 63(g_tTexcdf4) Binding 5 Decorate 63(g_tTexcdf4) DescriptorSet 0 Decorate 74(g_tTexcdi4) Binding 6 Decorate 74(g_tTexcdi4) DescriptorSet 0 Decorate 84(g_tTexcdu4) Binding 7 Decorate 84(g_tTexcdu4) DescriptorSet 0 Decorate 108(@entryPointOutput.Color) Location 0 Decorate 112(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 115(g_sSamp2d) Binding 0 Decorate 115(g_sSamp2d) DescriptorSet 0 Decorate 118(g_tTex1df4a) Binding 1 Decorate 118(g_tTex1df4a) DescriptorSet 0 Decorate 119(g_tTex1df4) Binding 0 Decorate 119(g_tTex1df4) DescriptorSet 0 Decorate 122(g_tTex1di4) Binding 0 Decorate 122(g_tTex1di4) DescriptorSet 0 Decorate 125(g_tTex1du4) Binding 0 Decorate 125(g_tTex1du4) DescriptorSet 0 Decorate 128(g_tTex3df4) Binding 0 Decorate 128(g_tTex3df4) DescriptorSet 0 Decorate 131(g_tTex3di4) Binding 0 Decorate 131(g_tTex3di4) DescriptorSet 0 Decorate 134(g_tTex3du4) Binding 0 Decorate 134(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: TypeInt 32 1 29: 28(int) Constant 0 31: TypeVector 28(int) 4 32: TypePointer Function 31(ivec4) 34: TypeImage 28(int) 2D sampled format:Unknown 35: TypePointer UniformConstant 34 36(g_tTex2di4): 35(ptr) Variable UniformConstant 39: TypeSampledImage 34 41: 6(float) Constant 1050253722 42: 6(float) Constant 1053609165 43: 24(fvec2) ConstantComposite 41 42 45: TypeInt 32 0 46: TypeVector 45(int) 4 47: TypePointer Function 46(ivec4) 49: TypeImage 45(int) 2D sampled format:Unknown 50: TypePointer UniformConstant 49 51(g_tTex2du4): 50(ptr) Variable UniformConstant 54: TypeSampledImage 49 56: 6(float) Constant 1056964608 57: 6(float) Constant 1058642330 58: 24(fvec2) ConstantComposite 56 57 61: TypeImage 6(float) Cube sampled format:Unknown 62: TypePointer UniformConstant 61 63(g_tTexcdf4): 62(ptr) Variable UniformConstant 66: TypeSampledImage 61 68: TypeVector 6(float) 3 69: 68(fvec3) ConstantComposite 25 26 41 72: TypeImage 28(int) Cube sampled format:Unknown 73: TypePointer UniformConstant 72 74(g_tTexcdi4): 73(ptr) Variable UniformConstant 77: TypeSampledImage 72 79: 68(fvec3) ConstantComposite 42 56 57 82: TypeImage 45(int) Cube sampled format:Unknown 83: TypePointer UniformConstant 82 84(g_tTexcdu4): 83(ptr) Variable UniformConstant 87: TypeSampledImage 82 89: 6(float) Constant 1060320051 90: 6(float) Constant 1061997773 91: 6(float) Constant 1063675494 92: 68(fvec3) ConstantComposite 89 90 91 94: TypePointer Function 8(PS_OUTPUT) 96: 6(float) Constant 1065353216 97: 7(fvec4) ConstantComposite 96 96 96 96 99: 28(int) Constant 1 100: TypePointer Function 6(float) 107: TypePointer Output 7(fvec4) 108(@entryPointOutput.Color): 107(ptr) Variable Output 111: TypePointer Output 6(float) 112(@entryPointOutput.Depth): 111(ptr) Variable Output 115(g_sSamp2d): 19(ptr) Variable UniformConstant 116: TypeImage 6(float) 1D sampled format:Unknown 117: TypePointer UniformConstant 116 118(g_tTex1df4a): 117(ptr) Variable UniformConstant 119(g_tTex1df4): 117(ptr) Variable UniformConstant 120: TypeImage 28(int) 1D sampled format:Unknown 121: TypePointer UniformConstant 120 122(g_tTex1di4): 121(ptr) Variable UniformConstant 123: TypeImage 45(int) 1D sampled format:Unknown 124: TypePointer UniformConstant 123 125(g_tTex1du4): 124(ptr) Variable UniformConstant 126: TypeImage 6(float) 3D sampled format:Unknown 127: TypePointer UniformConstant 126 128(g_tTex3df4): 127(ptr) Variable UniformConstant 129: TypeImage 28(int) 3D sampled format:Unknown 130: TypePointer UniformConstant 129 131(g_tTex3di4): 130(ptr) Variable UniformConstant 132: TypeImage 45(int) 3D sampled format:Unknown 133: TypePointer UniformConstant 132 134(g_tTex3du4): 133(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 105(flattenTemp): 94(ptr) Variable Function 106:8(PS_OUTPUT) FunctionCall 10(@main() Store 105(flattenTemp) 106 109: 12(ptr) AccessChain 105(flattenTemp) 29 110: 7(fvec4) Load 109 Store 108(@entryPointOutput.Color) 110 113: 100(ptr) AccessChain 105(flattenTemp) 99 114: 6(float) Load 113 Store 112(@entryPointOutput.Depth) 114 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval20): 12(ptr) Variable Function 33(txval21): 32(ptr) Variable Function 48(txval22): 47(ptr) Variable Function 60(txval40): 12(ptr) Variable Function 71(txval41): 32(ptr) Variable Function 81(txval42): 47(ptr) Variable Function 95(psout): 94(ptr) Variable Function 17: 14 Load 16(g_tTex2df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 30: 7(fvec4) ImageGather 23 27 29 Store 13(txval20) 30 37: 34 Load 36(g_tTex2di4) 38: 18 Load 20(g_sSamp) 40: 39 SampledImage 37 38 44: 31(ivec4) ImageGather 40 43 29 Store 33(txval21) 44 52: 49 Load 51(g_tTex2du4) 53: 18 Load 20(g_sSamp) 55: 54 SampledImage 52 53 59: 46(ivec4) ImageGather 55 58 29 Store 48(txval22) 59 64: 61 Load 63(g_tTexcdf4) 65: 18 Load 20(g_sSamp) 67: 66 SampledImage 64 65 70: 7(fvec4) ImageGather 67 69 29 Store 60(txval40) 70 75: 72 Load 74(g_tTexcdi4) 76: 18 Load 20(g_sSamp) 78: 77 SampledImage 75 76 80: 31(ivec4) ImageGather 78 79 29 Store 71(txval41) 80 85: 82 Load 84(g_tTexcdu4) 86: 18 Load 20(g_sSamp) 88: 87 SampledImage 85 86 93: 46(ivec4) ImageGather 88 92 29 Store 81(txval42) 93 98: 12(ptr) AccessChain 95(psout) 29 Store 98 97 101: 100(ptr) AccessChain 95(psout) 99 Store 101 96 102:8(PS_OUTPUT) Load 95(psout) ReturnValue 102 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gather.basic.dx10.vert.out000066400000000000000000000513121506534232700242270ustar00rootroot00000000000000hlsl.gather.basic.dx10.vert Shader version: 500 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'txval20' ( temp 4-component vector of float) 0:33 textureGather ( temp 4-component vector of float) 0:33 Construct combined texture-sampler ( temp sampler2D) 0:33 'g_tTex2df4' ( uniform texture2D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.100000 0:33 0.200000 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of int) 0:34 'txval21' ( temp 4-component vector of int) 0:34 textureGather ( temp 4-component vector of int) 0:34 Construct combined texture-sampler ( temp isampler2D) 0:34 'g_tTex2di4' ( uniform itexture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.300000 0:34 0.400000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of uint) 0:35 'txval22' ( temp 4-component vector of uint) 0:35 textureGather ( temp 4-component vector of uint) 0:35 Construct combined texture-sampler ( temp usampler2D) 0:35 'g_tTex2du4' ( uniform utexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.500000 0:35 0.600000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval40' ( temp 4-component vector of float) 0:39 textureGather ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp samplerCube) 0:39 'g_tTexcdf4' ( uniform textureCube) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval41' ( temp 4-component vector of int) 0:40 textureGather ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isamplerCube) 0:40 'g_tTexcdi4' ( uniform itextureCube) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval42' ( temp 4-component vector of uint) 0:41 textureGather ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usamplerCube) 0:41 'g_tTexcdu4' ( uniform utextureCube) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:43 move second child to first child ( temp 4-component vector of float) 0:43 Pos: direct index for structure ( temp 4-component vector of float) 0:43 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:45 Branch: Return with expression 0:45 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:28 Pos: direct index for structure ( temp 4-component vector of float) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:28 Constant: 0:28 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'txval20' ( temp 4-component vector of float) 0:33 textureGather ( temp 4-component vector of float) 0:33 Construct combined texture-sampler ( temp sampler2D) 0:33 'g_tTex2df4' ( uniform texture2D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.100000 0:33 0.200000 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of int) 0:34 'txval21' ( temp 4-component vector of int) 0:34 textureGather ( temp 4-component vector of int) 0:34 Construct combined texture-sampler ( temp isampler2D) 0:34 'g_tTex2di4' ( uniform itexture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.300000 0:34 0.400000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of uint) 0:35 'txval22' ( temp 4-component vector of uint) 0:35 textureGather ( temp 4-component vector of uint) 0:35 Construct combined texture-sampler ( temp usampler2D) 0:35 'g_tTex2du4' ( uniform utexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.500000 0:35 0.600000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval40' ( temp 4-component vector of float) 0:39 textureGather ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp samplerCube) 0:39 'g_tTexcdf4' ( uniform textureCube) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval41' ( temp 4-component vector of int) 0:40 textureGather ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isamplerCube) 0:40 'g_tTexcdi4' ( uniform itextureCube) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval42' ( temp 4-component vector of uint) 0:41 textureGather ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usamplerCube) 0:41 'g_tTexcdu4' ( uniform utextureCube) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:43 move second child to first child ( temp 4-component vector of float) 0:43 Pos: direct index for structure ( temp 4-component vector of float) 0:43 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:45 Branch: Return with expression 0:45 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:28 Pos: direct index for structure ( temp 4-component vector of float) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:28 Constant: 0:28 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 126 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 103 Source HLSL 500 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" Name 10 "@main(" Name 13 "txval20" Name 16 "g_tTex2df4" Name 20 "g_sSamp" Name 33 "txval21" Name 36 "g_tTex2di4" Name 48 "txval22" Name 51 "g_tTex2du4" Name 60 "txval40" Name 63 "g_tTexcdf4" Name 71 "txval41" Name 74 "g_tTexcdi4" Name 81 "txval42" Name 84 "g_tTexcdu4" Name 95 "vsout" Name 103 "@entryPointOutput.Pos" Name 106 "g_sSamp2d" Name 109 "g_tTex1df4a" Name 110 "g_tTex1df4" Name 113 "g_tTex1di4" Name 116 "g_tTex1du4" Name 119 "g_tTex3df4" Name 122 "g_tTex3di4" Name 125 "g_tTex3du4" Decorate 16(g_tTex2df4) Binding 2 Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex2di4) Binding 3 Decorate 36(g_tTex2di4) DescriptorSet 0 Decorate 51(g_tTex2du4) Binding 4 Decorate 51(g_tTex2du4) DescriptorSet 0 Decorate 63(g_tTexcdf4) Binding 5 Decorate 63(g_tTexcdf4) DescriptorSet 0 Decorate 74(g_tTexcdi4) Binding 6 Decorate 74(g_tTexcdi4) DescriptorSet 0 Decorate 84(g_tTexcdu4) Binding 7 Decorate 84(g_tTexcdu4) DescriptorSet 0 Decorate 103(@entryPointOutput.Pos) BuiltIn Position Decorate 106(g_sSamp2d) Binding 0 Decorate 106(g_sSamp2d) DescriptorSet 0 Decorate 109(g_tTex1df4a) Binding 1 Decorate 109(g_tTex1df4a) DescriptorSet 0 Decorate 110(g_tTex1df4) Binding 0 Decorate 110(g_tTex1df4) DescriptorSet 0 Decorate 113(g_tTex1di4) Binding 0 Decorate 113(g_tTex1di4) DescriptorSet 0 Decorate 116(g_tTex1du4) Binding 0 Decorate 116(g_tTex1du4) DescriptorSet 0 Decorate 119(g_tTex3df4) Binding 0 Decorate 119(g_tTex3df4) DescriptorSet 0 Decorate 122(g_tTex3di4) Binding 0 Decorate 122(g_tTex3di4) DescriptorSet 0 Decorate 125(g_tTex3du4) Binding 0 Decorate 125(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(VS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: TypeInt 32 1 29: 28(int) Constant 0 31: TypeVector 28(int) 4 32: TypePointer Function 31(ivec4) 34: TypeImage 28(int) 2D sampled format:Unknown 35: TypePointer UniformConstant 34 36(g_tTex2di4): 35(ptr) Variable UniformConstant 39: TypeSampledImage 34 41: 6(float) Constant 1050253722 42: 6(float) Constant 1053609165 43: 24(fvec2) ConstantComposite 41 42 45: TypeInt 32 0 46: TypeVector 45(int) 4 47: TypePointer Function 46(ivec4) 49: TypeImage 45(int) 2D sampled format:Unknown 50: TypePointer UniformConstant 49 51(g_tTex2du4): 50(ptr) Variable UniformConstant 54: TypeSampledImage 49 56: 6(float) Constant 1056964608 57: 6(float) Constant 1058642330 58: 24(fvec2) ConstantComposite 56 57 61: TypeImage 6(float) Cube sampled format:Unknown 62: TypePointer UniformConstant 61 63(g_tTexcdf4): 62(ptr) Variable UniformConstant 66: TypeSampledImage 61 68: TypeVector 6(float) 3 69: 68(fvec3) ConstantComposite 25 26 41 72: TypeImage 28(int) Cube sampled format:Unknown 73: TypePointer UniformConstant 72 74(g_tTexcdi4): 73(ptr) Variable UniformConstant 77: TypeSampledImage 72 79: 68(fvec3) ConstantComposite 42 56 57 82: TypeImage 45(int) Cube sampled format:Unknown 83: TypePointer UniformConstant 82 84(g_tTexcdu4): 83(ptr) Variable UniformConstant 87: TypeSampledImage 82 89: 6(float) Constant 1060320051 90: 6(float) Constant 1061997773 91: 6(float) Constant 1063675494 92: 68(fvec3) ConstantComposite 89 90 91 94: TypePointer Function 8(VS_OUTPUT) 96: 6(float) Constant 0 97: 7(fvec4) ConstantComposite 96 96 96 96 102: TypePointer Output 7(fvec4) 103(@entryPointOutput.Pos): 102(ptr) Variable Output 106(g_sSamp2d): 19(ptr) Variable UniformConstant 107: TypeImage 6(float) 1D sampled format:Unknown 108: TypePointer UniformConstant 107 109(g_tTex1df4a): 108(ptr) Variable UniformConstant 110(g_tTex1df4): 108(ptr) Variable UniformConstant 111: TypeImage 28(int) 1D sampled format:Unknown 112: TypePointer UniformConstant 111 113(g_tTex1di4): 112(ptr) Variable UniformConstant 114: TypeImage 45(int) 1D sampled format:Unknown 115: TypePointer UniformConstant 114 116(g_tTex1du4): 115(ptr) Variable UniformConstant 117: TypeImage 6(float) 3D sampled format:Unknown 118: TypePointer UniformConstant 117 119(g_tTex3df4): 118(ptr) Variable UniformConstant 120: TypeImage 28(int) 3D sampled format:Unknown 121: TypePointer UniformConstant 120 122(g_tTex3di4): 121(ptr) Variable UniformConstant 123: TypeImage 45(int) 3D sampled format:Unknown 124: TypePointer UniformConstant 123 125(g_tTex3du4): 124(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 104:8(VS_OUTPUT) FunctionCall 10(@main() 105: 7(fvec4) CompositeExtract 104 0 Store 103(@entryPointOutput.Pos) 105 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 11: Label 13(txval20): 12(ptr) Variable Function 33(txval21): 32(ptr) Variable Function 48(txval22): 47(ptr) Variable Function 60(txval40): 12(ptr) Variable Function 71(txval41): 32(ptr) Variable Function 81(txval42): 47(ptr) Variable Function 95(vsout): 94(ptr) Variable Function 17: 14 Load 16(g_tTex2df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 30: 7(fvec4) ImageGather 23 27 29 Store 13(txval20) 30 37: 34 Load 36(g_tTex2di4) 38: 18 Load 20(g_sSamp) 40: 39 SampledImage 37 38 44: 31(ivec4) ImageGather 40 43 29 Store 33(txval21) 44 52: 49 Load 51(g_tTex2du4) 53: 18 Load 20(g_sSamp) 55: 54 SampledImage 52 53 59: 46(ivec4) ImageGather 55 58 29 Store 48(txval22) 59 64: 61 Load 63(g_tTexcdf4) 65: 18 Load 20(g_sSamp) 67: 66 SampledImage 64 65 70: 7(fvec4) ImageGather 67 69 29 Store 60(txval40) 70 75: 72 Load 74(g_tTexcdi4) 76: 18 Load 20(g_sSamp) 78: 77 SampledImage 75 76 80: 31(ivec4) ImageGather 78 79 29 Store 71(txval41) 80 85: 82 Load 84(g_tTexcdu4) 86: 18 Load 20(g_sSamp) 88: 87 SampledImage 85 86 93: 46(ivec4) ImageGather 88 92 29 Store 81(txval42) 93 98: 12(ptr) AccessChain 95(vsout) 29 Store 98 97 99:8(VS_OUTPUT) Load 95(vsout) ReturnValue 99 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gather.offset.dx10.frag.out000066400000000000000000000501221506534232700243710ustar00rootroot00000000000000hlsl.gather.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'txval20' ( temp 4-component vector of float) 0:33 textureGatherOffset ( temp 4-component vector of float) 0:33 Construct combined texture-sampler ( temp sampler2D) 0:33 'g_tTex2df4' ( uniform texture2D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.100000 0:33 0.200000 0:33 Constant: 0:33 1 (const int) 0:33 0 (const int) 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of int) 0:34 'txval21' ( temp 4-component vector of int) 0:34 textureGatherOffset ( temp 4-component vector of int) 0:34 Construct combined texture-sampler ( temp isampler2D) 0:34 'g_tTex2di4' ( uniform itexture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.300000 0:34 0.400000 0:34 Constant: 0:34 1 (const int) 0:34 1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of uint) 0:35 'txval22' ( temp 4-component vector of uint) 0:35 textureGatherOffset ( temp 4-component vector of uint) 0:35 Construct combined texture-sampler ( temp usampler2D) 0:35 'g_tTex2du4' ( uniform utexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.500000 0:35 0.600000 0:35 Constant: 0:35 1 (const int) 0:35 -1 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:41 move second child to first child ( temp float) 0:41 Depth: direct index for structure ( temp float) 0:41 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 0:43 Branch: Return with expression 0:43 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'txval20' ( temp 4-component vector of float) 0:33 textureGatherOffset ( temp 4-component vector of float) 0:33 Construct combined texture-sampler ( temp sampler2D) 0:33 'g_tTex2df4' ( uniform texture2D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.100000 0:33 0.200000 0:33 Constant: 0:33 1 (const int) 0:33 0 (const int) 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of int) 0:34 'txval21' ( temp 4-component vector of int) 0:34 textureGatherOffset ( temp 4-component vector of int) 0:34 Construct combined texture-sampler ( temp isampler2D) 0:34 'g_tTex2di4' ( uniform itexture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.300000 0:34 0.400000 0:34 Constant: 0:34 1 (const int) 0:34 1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of uint) 0:35 'txval22' ( temp 4-component vector of uint) 0:35 textureGatherOffset ( temp 4-component vector of uint) 0:35 Construct combined texture-sampler ( temp usampler2D) 0:35 'g_tTex2du4' ( uniform utexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.500000 0:35 0.600000 0:35 Constant: 0:35 1 (const int) 0:35 -1 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:41 move second child to first child ( temp float) 0:41 Depth: direct index for structure ( temp float) 0:41 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 0:43 Branch: Return with expression 0:43 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 114 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 79 83 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval20" Name 16 "g_tTex2df4" Name 20 "g_sSamp" Name 36 "txval21" Name 39 "g_tTex2di4" Name 52 "txval22" Name 55 "g_tTex2du4" Name 67 "psout" Name 76 "flattenTemp" Name 79 "@entryPointOutput.Color" Name 83 "@entryPointOutput.Depth" Name 88 "g_tTex1df4a" Name 89 "g_tTex1df4" Name 92 "g_tTex1di4" Name 95 "g_tTex1du4" Name 98 "g_tTex3df4" Name 101 "g_tTex3di4" Name 104 "g_tTex3du4" Name 107 "g_tTexcdf4" Name 110 "g_tTexcdi4" Name 113 "g_tTexcdu4" Decorate 16(g_tTex2df4) Binding 2 Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 39(g_tTex2di4) Binding 3 Decorate 39(g_tTex2di4) DescriptorSet 0 Decorate 55(g_tTex2du4) Binding 4 Decorate 55(g_tTex2du4) DescriptorSet 0 Decorate 79(@entryPointOutput.Color) Location 0 Decorate 83(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 88(g_tTex1df4a) Binding 1 Decorate 88(g_tTex1df4a) DescriptorSet 0 Decorate 89(g_tTex1df4) Binding 0 Decorate 89(g_tTex1df4) DescriptorSet 0 Decorate 92(g_tTex1di4) Binding 0 Decorate 92(g_tTex1di4) DescriptorSet 0 Decorate 95(g_tTex1du4) Binding 0 Decorate 95(g_tTex1du4) DescriptorSet 0 Decorate 98(g_tTex3df4) Binding 0 Decorate 98(g_tTex3df4) DescriptorSet 0 Decorate 101(g_tTex3di4) Binding 0 Decorate 101(g_tTex3di4) DescriptorSet 0 Decorate 104(g_tTex3du4) Binding 0 Decorate 104(g_tTex3du4) DescriptorSet 0 Decorate 107(g_tTexcdf4) Binding 0 Decorate 107(g_tTexcdf4) DescriptorSet 0 Decorate 110(g_tTexcdi4) Binding 0 Decorate 110(g_tTexcdi4) DescriptorSet 0 Decorate 113(g_tTexcdu4) Binding 0 Decorate 113(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: TypeInt 32 1 29: TypeVector 28(int) 2 30: 28(int) Constant 1 31: 28(int) Constant 0 32: 29(ivec2) ConstantComposite 30 31 34: TypeVector 28(int) 4 35: TypePointer Function 34(ivec4) 37: TypeImage 28(int) 2D sampled format:Unknown 38: TypePointer UniformConstant 37 39(g_tTex2di4): 38(ptr) Variable UniformConstant 42: TypeSampledImage 37 44: 6(float) Constant 1050253722 45: 6(float) Constant 1053609165 46: 24(fvec2) ConstantComposite 44 45 47: 29(ivec2) ConstantComposite 30 30 49: TypeInt 32 0 50: TypeVector 49(int) 4 51: TypePointer Function 50(ivec4) 53: TypeImage 49(int) 2D sampled format:Unknown 54: TypePointer UniformConstant 53 55(g_tTex2du4): 54(ptr) Variable UniformConstant 58: TypeSampledImage 53 60: 6(float) Constant 1056964608 61: 6(float) Constant 1058642330 62: 24(fvec2) ConstantComposite 60 61 63: 28(int) Constant 4294967295 64: 29(ivec2) ConstantComposite 30 63 66: TypePointer Function 8(PS_OUTPUT) 68: 6(float) Constant 1065353216 69: 7(fvec4) ConstantComposite 68 68 68 68 71: TypePointer Function 6(float) 78: TypePointer Output 7(fvec4) 79(@entryPointOutput.Color): 78(ptr) Variable Output 82: TypePointer Output 6(float) 83(@entryPointOutput.Depth): 82(ptr) Variable Output 86: TypeImage 6(float) 1D sampled format:Unknown 87: TypePointer UniformConstant 86 88(g_tTex1df4a): 87(ptr) Variable UniformConstant 89(g_tTex1df4): 87(ptr) Variable UniformConstant 90: TypeImage 28(int) 1D sampled format:Unknown 91: TypePointer UniformConstant 90 92(g_tTex1di4): 91(ptr) Variable UniformConstant 93: TypeImage 49(int) 1D sampled format:Unknown 94: TypePointer UniformConstant 93 95(g_tTex1du4): 94(ptr) Variable UniformConstant 96: TypeImage 6(float) 3D sampled format:Unknown 97: TypePointer UniformConstant 96 98(g_tTex3df4): 97(ptr) Variable UniformConstant 99: TypeImage 28(int) 3D sampled format:Unknown 100: TypePointer UniformConstant 99 101(g_tTex3di4): 100(ptr) Variable UniformConstant 102: TypeImage 49(int) 3D sampled format:Unknown 103: TypePointer UniformConstant 102 104(g_tTex3du4): 103(ptr) Variable UniformConstant 105: TypeImage 6(float) Cube sampled format:Unknown 106: TypePointer UniformConstant 105 107(g_tTexcdf4): 106(ptr) Variable UniformConstant 108: TypeImage 28(int) Cube sampled format:Unknown 109: TypePointer UniformConstant 108 110(g_tTexcdi4): 109(ptr) Variable UniformConstant 111: TypeImage 49(int) Cube sampled format:Unknown 112: TypePointer UniformConstant 111 113(g_tTexcdu4): 112(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 76(flattenTemp): 66(ptr) Variable Function 77:8(PS_OUTPUT) FunctionCall 10(@main() Store 76(flattenTemp) 77 80: 12(ptr) AccessChain 76(flattenTemp) 31 81: 7(fvec4) Load 80 Store 79(@entryPointOutput.Color) 81 84: 71(ptr) AccessChain 76(flattenTemp) 30 85: 6(float) Load 84 Store 83(@entryPointOutput.Depth) 85 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval20): 12(ptr) Variable Function 36(txval21): 35(ptr) Variable Function 52(txval22): 51(ptr) Variable Function 67(psout): 66(ptr) Variable Function 17: 14 Load 16(g_tTex2df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 33: 7(fvec4) ImageGather 23 27 31 ConstOffset 32 Store 13(txval20) 33 40: 37 Load 39(g_tTex2di4) 41: 18 Load 20(g_sSamp) 43: 42 SampledImage 40 41 48: 34(ivec4) ImageGather 43 46 31 ConstOffset 47 Store 36(txval21) 48 56: 53 Load 55(g_tTex2du4) 57: 18 Load 20(g_sSamp) 59: 58 SampledImage 56 57 65: 50(ivec4) ImageGather 59 62 31 ConstOffset 64 Store 52(txval22) 65 70: 12(ptr) AccessChain 67(psout) 31 Store 70 69 72: 71(ptr) AccessChain 67(psout) 30 Store 72 68 73:8(PS_OUTPUT) Load 67(psout) ReturnValue 73 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out000066400000000000000000000433421506534232700254360ustar00rootroot00000000000000hlsl.gather.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'txval20' ( temp 4-component vector of float) 0:25 textureGatherOffset ( temp 4-component vector of float) 0:25 Construct combined texture-sampler ( temp sampler2DArray) 0:25 'g_tTex2df4' ( uniform texture2DArray) 0:25 'g_sSamp' (layout( binding=0) uniform sampler) 0:25 Constant: 0:25 0.100000 0:25 0.200000 0:25 0.300000 0:25 Constant: 0:25 1 (const int) 0:25 0 (const int) 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of int) 0:26 'txval21' ( temp 4-component vector of int) 0:26 textureGatherOffset ( temp 4-component vector of int) 0:26 Construct combined texture-sampler ( temp isampler2DArray) 0:26 'g_tTex2di4' ( uniform itexture2DArray) 0:26 'g_sSamp' (layout( binding=0) uniform sampler) 0:26 Constant: 0:26 0.300000 0:26 0.400000 0:26 0.400000 0:26 Constant: 0:26 1 (const int) 0:26 1 (const int) 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of uint) 0:27 'txval22' ( temp 4-component vector of uint) 0:27 textureGatherOffset ( temp 4-component vector of uint) 0:27 Construct combined texture-sampler ( temp usampler2DArray) 0:27 'g_tTex2du4' ( uniform utexture2DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.500000 0:27 0.600000 0:27 0.700000 0:27 Constant: 0:27 1 (const int) 0:27 -1 (const int) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 Color: direct index for structure ( temp 4-component vector of float) 0:32 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:33 move second child to first child ( temp float) 0:33 Depth: direct index for structure ( temp float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1.000000 0:35 Branch: Return with expression 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:20 Color: direct index for structure ( temp 4-component vector of float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:20 Depth: direct index for structure ( temp float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'txval20' ( temp 4-component vector of float) 0:25 textureGatherOffset ( temp 4-component vector of float) 0:25 Construct combined texture-sampler ( temp sampler2DArray) 0:25 'g_tTex2df4' ( uniform texture2DArray) 0:25 'g_sSamp' (layout( binding=0) uniform sampler) 0:25 Constant: 0:25 0.100000 0:25 0.200000 0:25 0.300000 0:25 Constant: 0:25 1 (const int) 0:25 0 (const int) 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of int) 0:26 'txval21' ( temp 4-component vector of int) 0:26 textureGatherOffset ( temp 4-component vector of int) 0:26 Construct combined texture-sampler ( temp isampler2DArray) 0:26 'g_tTex2di4' ( uniform itexture2DArray) 0:26 'g_sSamp' (layout( binding=0) uniform sampler) 0:26 Constant: 0:26 0.300000 0:26 0.400000 0:26 0.400000 0:26 Constant: 0:26 1 (const int) 0:26 1 (const int) 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of uint) 0:27 'txval22' ( temp 4-component vector of uint) 0:27 textureGatherOffset ( temp 4-component vector of uint) 0:27 Construct combined texture-sampler ( temp usampler2DArray) 0:27 'g_tTex2du4' ( uniform utexture2DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.500000 0:27 0.600000 0:27 0.700000 0:27 Constant: 0:27 1 (const int) 0:27 -1 (const int) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 Color: direct index for structure ( temp 4-component vector of float) 0:32 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:33 move second child to first child ( temp float) 0:33 Depth: direct index for structure ( temp float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1.000000 0:35 Branch: Return with expression 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:20 Color: direct index for structure ( temp 4-component vector of float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:20 Depth: direct index for structure ( temp float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 97 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 80 84 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval20" Name 16 "g_tTex2df4" Name 20 "g_sSamp" Name 37 "txval21" Name 40 "g_tTex2di4" Name 52 "txval22" Name 55 "g_tTex2du4" Name 68 "psout" Name 77 "flattenTemp" Name 80 "@entryPointOutput.Color" Name 84 "@entryPointOutput.Depth" Name 89 "g_tTex1df4a" Name 90 "g_tTex1df4" Name 93 "g_tTex1di4" Name 96 "g_tTex1du4" Decorate 16(g_tTex2df4) Binding 2 Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 40(g_tTex2di4) Binding 3 Decorate 40(g_tTex2di4) DescriptorSet 0 Decorate 55(g_tTex2du4) Binding 4 Decorate 55(g_tTex2du4) DescriptorSet 0 Decorate 80(@entryPointOutput.Color) Location 0 Decorate 84(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 89(g_tTex1df4a) Binding 1 Decorate 89(g_tTex1df4a) DescriptorSet 0 Decorate 90(g_tTex1df4) Binding 0 Decorate 90(g_tTex1df4) DescriptorSet 0 Decorate 93(g_tTex1di4) Binding 0 Decorate 93(g_tTex1di4) DescriptorSet 0 Decorate 96(g_tTex1du4) Binding 0 Decorate 96(g_tTex1du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 3 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 6(float) Constant 1050253722 28: 24(fvec3) ConstantComposite 25 26 27 29: TypeInt 32 1 30: TypeVector 29(int) 2 31: 29(int) Constant 1 32: 29(int) Constant 0 33: 30(ivec2) ConstantComposite 31 32 35: TypeVector 29(int) 4 36: TypePointer Function 35(ivec4) 38: TypeImage 29(int) 2D array sampled format:Unknown 39: TypePointer UniformConstant 38 40(g_tTex2di4): 39(ptr) Variable UniformConstant 43: TypeSampledImage 38 45: 6(float) Constant 1053609165 46: 24(fvec3) ConstantComposite 27 45 45 47: 30(ivec2) ConstantComposite 31 31 49: TypeInt 32 0 50: TypeVector 49(int) 4 51: TypePointer Function 50(ivec4) 53: TypeImage 49(int) 2D array sampled format:Unknown 54: TypePointer UniformConstant 53 55(g_tTex2du4): 54(ptr) Variable UniformConstant 58: TypeSampledImage 53 60: 6(float) Constant 1056964608 61: 6(float) Constant 1058642330 62: 6(float) Constant 1060320051 63: 24(fvec3) ConstantComposite 60 61 62 64: 29(int) Constant 4294967295 65: 30(ivec2) ConstantComposite 31 64 67: TypePointer Function 8(PS_OUTPUT) 69: 6(float) Constant 1065353216 70: 7(fvec4) ConstantComposite 69 69 69 69 72: TypePointer Function 6(float) 79: TypePointer Output 7(fvec4) 80(@entryPointOutput.Color): 79(ptr) Variable Output 83: TypePointer Output 6(float) 84(@entryPointOutput.Depth): 83(ptr) Variable Output 87: TypeImage 6(float) 1D array sampled format:Unknown 88: TypePointer UniformConstant 87 89(g_tTex1df4a): 88(ptr) Variable UniformConstant 90(g_tTex1df4): 88(ptr) Variable UniformConstant 91: TypeImage 29(int) 1D array sampled format:Unknown 92: TypePointer UniformConstant 91 93(g_tTex1di4): 92(ptr) Variable UniformConstant 94: TypeImage 49(int) 1D array sampled format:Unknown 95: TypePointer UniformConstant 94 96(g_tTex1du4): 95(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 77(flattenTemp): 67(ptr) Variable Function 78:8(PS_OUTPUT) FunctionCall 10(@main() Store 77(flattenTemp) 78 81: 12(ptr) AccessChain 77(flattenTemp) 32 82: 7(fvec4) Load 81 Store 80(@entryPointOutput.Color) 82 85: 72(ptr) AccessChain 77(flattenTemp) 31 86: 6(float) Load 85 Store 84(@entryPointOutput.Depth) 86 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval20): 12(ptr) Variable Function 37(txval21): 36(ptr) Variable Function 52(txval22): 51(ptr) Variable Function 68(psout): 67(ptr) Variable Function 17: 14 Load 16(g_tTex2df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 34: 7(fvec4) ImageGather 23 28 32 ConstOffset 33 Store 13(txval20) 34 41: 38 Load 40(g_tTex2di4) 42: 18 Load 20(g_sSamp) 44: 43 SampledImage 41 42 48: 35(ivec4) ImageGather 44 46 32 ConstOffset 47 Store 37(txval21) 48 56: 53 Load 55(g_tTex2du4) 57: 18 Load 20(g_sSamp) 59: 58 SampledImage 56 57 66: 50(ivec4) ImageGather 59 63 32 ConstOffset 65 Store 52(txval22) 66 71: 12(ptr) AccessChain 68(psout) 32 Store 71 70 73: 72(ptr) AccessChain 68(psout) 31 Store 73 69 74:8(PS_OUTPUT) Load 68(psout) ReturnValue 74 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out000066400000000000000000002022001506534232700246510ustar00rootroot00000000000000hlsl.gatherRGBA.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'txval00' ( temp 4-component vector of float) 0:33 textureGather ( temp 4-component vector of float) 0:33 Construct combined texture-sampler ( temp sampler2DArray) 0:33 'g_tTex2df4a' ( uniform texture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 c3: direct index for structure ( uniform 3-component vector of float) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:33 Constant: 0:33 2 (const uint) 0:33 Constant: 0:33 0 (const int) 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of int) 0:34 'txval01' ( temp 4-component vector of int) 0:34 textureGather ( temp 4-component vector of int) 0:34 Construct combined texture-sampler ( temp isampler2DArray) 0:34 'g_tTex2di4a' ( uniform itexture2DArray) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 c3: direct index for structure ( uniform 3-component vector of float) 0:34 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:34 Constant: 0:34 2 (const uint) 0:34 Constant: 0:34 0 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of uint) 0:35 'txval02' ( temp 4-component vector of uint) 0:35 textureGather ( temp 4-component vector of uint) 0:35 Construct combined texture-sampler ( temp usampler2DArray) 0:35 'g_tTex2du4a' ( uniform utexture2DArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 c3: direct index for structure ( uniform 3-component vector of float) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:35 Constant: 0:35 2 (const uint) 0:35 Constant: 0:35 0 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of float) 0:37 'txval10' ( temp 4-component vector of float) 0:37 textureGather ( temp 4-component vector of float) 0:37 Construct combined texture-sampler ( temp sampler2DArray) 0:37 'g_tTex2df4a' ( uniform texture2DArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 c3: direct index for structure ( uniform 3-component vector of float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:37 Constant: 0:37 2 (const uint) 0:37 Constant: 0:37 1 (const int) 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of int) 0:38 'txval11' ( temp 4-component vector of int) 0:38 textureGather ( temp 4-component vector of int) 0:38 Construct combined texture-sampler ( temp isampler2DArray) 0:38 'g_tTex2di4a' ( uniform itexture2DArray) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 c3: direct index for structure ( uniform 3-component vector of float) 0:38 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:38 Constant: 0:38 2 (const uint) 0:38 Constant: 0:38 1 (const int) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of uint) 0:39 'txval12' ( temp 4-component vector of uint) 0:39 textureGather ( temp 4-component vector of uint) 0:39 Construct combined texture-sampler ( temp usampler2DArray) 0:39 'g_tTex2du4a' ( uniform utexture2DArray) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 c3: direct index for structure ( uniform 3-component vector of float) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:39 Constant: 0:39 2 (const uint) 0:39 Constant: 0:39 1 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of float) 0:41 'txval20' ( temp 4-component vector of float) 0:41 textureGather ( temp 4-component vector of float) 0:41 Construct combined texture-sampler ( temp sampler2DArray) 0:41 'g_tTex2df4a' ( uniform texture2DArray) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 c3: direct index for structure ( uniform 3-component vector of float) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:41 Constant: 0:41 2 (const uint) 0:41 Constant: 0:41 2 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of int) 0:42 'txval21' ( temp 4-component vector of int) 0:42 textureGather ( temp 4-component vector of int) 0:42 Construct combined texture-sampler ( temp isampler2DArray) 0:42 'g_tTex2di4a' ( uniform itexture2DArray) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 c3: direct index for structure ( uniform 3-component vector of float) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:42 Constant: 0:42 2 (const uint) 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of uint) 0:43 'txval22' ( temp 4-component vector of uint) 0:43 textureGather ( temp 4-component vector of uint) 0:43 Construct combined texture-sampler ( temp usampler2DArray) 0:43 'g_tTex2du4a' ( uniform utexture2DArray) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 c3: direct index for structure ( uniform 3-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:43 Constant: 0:43 2 (const uint) 0:43 Constant: 0:43 2 (const int) 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 'txval30' ( temp 4-component vector of float) 0:45 textureGather ( temp 4-component vector of float) 0:45 Construct combined texture-sampler ( temp sampler2DArray) 0:45 'g_tTex2df4a' ( uniform texture2DArray) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 c3: direct index for structure ( uniform 3-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:45 Constant: 0:45 2 (const uint) 0:45 Constant: 0:45 3 (const int) 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of int) 0:46 'txval31' ( temp 4-component vector of int) 0:46 textureGather ( temp 4-component vector of int) 0:46 Construct combined texture-sampler ( temp isampler2DArray) 0:46 'g_tTex2di4a' ( uniform itexture2DArray) 0:46 'g_sSamp' (layout( binding=0) uniform sampler) 0:46 c3: direct index for structure ( uniform 3-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:46 Constant: 0:46 2 (const uint) 0:46 Constant: 0:46 3 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 'txval32' ( temp 4-component vector of uint) 0:47 textureGather ( temp 4-component vector of uint) 0:47 Construct combined texture-sampler ( temp usampler2DArray) 0:47 'g_tTex2du4a' ( uniform utexture2DArray) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 c3: direct index for structure ( uniform 3-component vector of float) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:47 Constant: 0:47 2 (const uint) 0:47 Constant: 0:47 3 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'txval40' ( temp 4-component vector of float) 0:51 textureGather ( temp 4-component vector of float) 0:51 Construct combined texture-sampler ( temp samplerCubeArray) 0:51 'g_tTexcdf4a' ( uniform textureCubeArray) 0:51 'g_sSamp' (layout( binding=0) uniform sampler) 0:51 c4: direct index for structure ( uniform 4-component vector of float) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:51 Constant: 0:51 3 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of int) 0:52 'txval41' ( temp 4-component vector of int) 0:52 textureGather ( temp 4-component vector of int) 0:52 Construct combined texture-sampler ( temp isamplerCubeArray) 0:52 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 c4: direct index for structure ( uniform 4-component vector of float) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:52 Constant: 0:52 3 (const uint) 0:52 Constant: 0:52 0 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of uint) 0:53 'txval42' ( temp 4-component vector of uint) 0:53 textureGather ( temp 4-component vector of uint) 0:53 Construct combined texture-sampler ( temp usamplerCubeArray) 0:53 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 c4: direct index for structure ( uniform 4-component vector of float) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:53 Constant: 0:53 3 (const uint) 0:53 Constant: 0:53 0 (const int) 0:55 Sequence 0:55 move second child to first child ( temp 4-component vector of float) 0:55 'txval50' ( temp 4-component vector of float) 0:55 textureGather ( temp 4-component vector of float) 0:55 Construct combined texture-sampler ( temp samplerCubeArray) 0:55 'g_tTexcdf4a' ( uniform textureCubeArray) 0:55 'g_sSamp' (layout( binding=0) uniform sampler) 0:55 c4: direct index for structure ( uniform 4-component vector of float) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:55 Constant: 0:55 3 (const uint) 0:55 Constant: 0:55 1 (const int) 0:56 Sequence 0:56 move second child to first child ( temp 4-component vector of int) 0:56 'txval51' ( temp 4-component vector of int) 0:56 textureGather ( temp 4-component vector of int) 0:56 Construct combined texture-sampler ( temp isamplerCubeArray) 0:56 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:56 'g_sSamp' (layout( binding=0) uniform sampler) 0:56 c4: direct index for structure ( uniform 4-component vector of float) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:56 Constant: 0:56 3 (const uint) 0:56 Constant: 0:56 1 (const int) 0:57 Sequence 0:57 move second child to first child ( temp 4-component vector of uint) 0:57 'txval52' ( temp 4-component vector of uint) 0:57 textureGather ( temp 4-component vector of uint) 0:57 Construct combined texture-sampler ( temp usamplerCubeArray) 0:57 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:57 'g_sSamp' (layout( binding=0) uniform sampler) 0:57 c4: direct index for structure ( uniform 4-component vector of float) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:57 Constant: 0:57 3 (const uint) 0:57 Constant: 0:57 1 (const int) 0:59 Sequence 0:59 move second child to first child ( temp 4-component vector of float) 0:59 'txval60' ( temp 4-component vector of float) 0:59 textureGather ( temp 4-component vector of float) 0:59 Construct combined texture-sampler ( temp samplerCubeArray) 0:59 'g_tTexcdf4a' ( uniform textureCubeArray) 0:59 'g_sSamp' (layout( binding=0) uniform sampler) 0:59 c4: direct index for structure ( uniform 4-component vector of float) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:59 Constant: 0:59 3 (const uint) 0:59 Constant: 0:59 2 (const int) 0:60 Sequence 0:60 move second child to first child ( temp 4-component vector of int) 0:60 'txval61' ( temp 4-component vector of int) 0:60 textureGather ( temp 4-component vector of int) 0:60 Construct combined texture-sampler ( temp isamplerCubeArray) 0:60 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:60 'g_sSamp' (layout( binding=0) uniform sampler) 0:60 c4: direct index for structure ( uniform 4-component vector of float) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:60 Constant: 0:60 3 (const uint) 0:60 Constant: 0:60 2 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of uint) 0:61 'txval62' ( temp 4-component vector of uint) 0:61 textureGather ( temp 4-component vector of uint) 0:61 Construct combined texture-sampler ( temp usamplerCubeArray) 0:61 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:61 'g_sSamp' (layout( binding=0) uniform sampler) 0:61 c4: direct index for structure ( uniform 4-component vector of float) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:61 Constant: 0:61 3 (const uint) 0:61 Constant: 0:61 2 (const int) 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of float) 0:63 'txval70' ( temp 4-component vector of float) 0:63 textureGather ( temp 4-component vector of float) 0:63 Construct combined texture-sampler ( temp samplerCubeArray) 0:63 'g_tTexcdf4a' ( uniform textureCubeArray) 0:63 'g_sSamp' (layout( binding=0) uniform sampler) 0:63 c4: direct index for structure ( uniform 4-component vector of float) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:64 Sequence 0:64 move second child to first child ( temp 4-component vector of int) 0:64 'txval71' ( temp 4-component vector of int) 0:64 textureGather ( temp 4-component vector of int) 0:64 Construct combined texture-sampler ( temp isamplerCubeArray) 0:64 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:64 'g_sSamp' (layout( binding=0) uniform sampler) 0:64 c4: direct index for structure ( uniform 4-component vector of float) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:65 Sequence 0:65 move second child to first child ( temp 4-component vector of uint) 0:65 'txval72' ( temp 4-component vector of uint) 0:65 textureGather ( temp 4-component vector of uint) 0:65 Construct combined texture-sampler ( temp usamplerCubeArray) 0:65 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:65 'g_sSamp' (layout( binding=0) uniform sampler) 0:65 c4: direct index for structure ( uniform 4-component vector of float) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:65 Constant: 0:65 3 (const uint) 0:65 Constant: 0:65 3 (const int) 0:67 move second child to first child ( temp 4-component vector of float) 0:67 Color: direct index for structure ( temp 4-component vector of float) 0:67 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1.000000 0:67 1.000000 0:67 1.000000 0:67 1.000000 0:68 move second child to first child ( temp float) 0:68 Depth: direct index for structure ( temp float) 0:68 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 1.000000 0:70 Branch: Return with expression 0:70 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'txval00' ( temp 4-component vector of float) 0:33 textureGather ( temp 4-component vector of float) 0:33 Construct combined texture-sampler ( temp sampler2DArray) 0:33 'g_tTex2df4a' ( uniform texture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 c3: direct index for structure ( uniform 3-component vector of float) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:33 Constant: 0:33 2 (const uint) 0:33 Constant: 0:33 0 (const int) 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of int) 0:34 'txval01' ( temp 4-component vector of int) 0:34 textureGather ( temp 4-component vector of int) 0:34 Construct combined texture-sampler ( temp isampler2DArray) 0:34 'g_tTex2di4a' ( uniform itexture2DArray) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 c3: direct index for structure ( uniform 3-component vector of float) 0:34 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:34 Constant: 0:34 2 (const uint) 0:34 Constant: 0:34 0 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of uint) 0:35 'txval02' ( temp 4-component vector of uint) 0:35 textureGather ( temp 4-component vector of uint) 0:35 Construct combined texture-sampler ( temp usampler2DArray) 0:35 'g_tTex2du4a' ( uniform utexture2DArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 c3: direct index for structure ( uniform 3-component vector of float) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:35 Constant: 0:35 2 (const uint) 0:35 Constant: 0:35 0 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of float) 0:37 'txval10' ( temp 4-component vector of float) 0:37 textureGather ( temp 4-component vector of float) 0:37 Construct combined texture-sampler ( temp sampler2DArray) 0:37 'g_tTex2df4a' ( uniform texture2DArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 c3: direct index for structure ( uniform 3-component vector of float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:37 Constant: 0:37 2 (const uint) 0:37 Constant: 0:37 1 (const int) 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of int) 0:38 'txval11' ( temp 4-component vector of int) 0:38 textureGather ( temp 4-component vector of int) 0:38 Construct combined texture-sampler ( temp isampler2DArray) 0:38 'g_tTex2di4a' ( uniform itexture2DArray) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 c3: direct index for structure ( uniform 3-component vector of float) 0:38 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:38 Constant: 0:38 2 (const uint) 0:38 Constant: 0:38 1 (const int) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of uint) 0:39 'txval12' ( temp 4-component vector of uint) 0:39 textureGather ( temp 4-component vector of uint) 0:39 Construct combined texture-sampler ( temp usampler2DArray) 0:39 'g_tTex2du4a' ( uniform utexture2DArray) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 c3: direct index for structure ( uniform 3-component vector of float) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:39 Constant: 0:39 2 (const uint) 0:39 Constant: 0:39 1 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of float) 0:41 'txval20' ( temp 4-component vector of float) 0:41 textureGather ( temp 4-component vector of float) 0:41 Construct combined texture-sampler ( temp sampler2DArray) 0:41 'g_tTex2df4a' ( uniform texture2DArray) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 c3: direct index for structure ( uniform 3-component vector of float) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:41 Constant: 0:41 2 (const uint) 0:41 Constant: 0:41 2 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of int) 0:42 'txval21' ( temp 4-component vector of int) 0:42 textureGather ( temp 4-component vector of int) 0:42 Construct combined texture-sampler ( temp isampler2DArray) 0:42 'g_tTex2di4a' ( uniform itexture2DArray) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 c3: direct index for structure ( uniform 3-component vector of float) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:42 Constant: 0:42 2 (const uint) 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of uint) 0:43 'txval22' ( temp 4-component vector of uint) 0:43 textureGather ( temp 4-component vector of uint) 0:43 Construct combined texture-sampler ( temp usampler2DArray) 0:43 'g_tTex2du4a' ( uniform utexture2DArray) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 c3: direct index for structure ( uniform 3-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:43 Constant: 0:43 2 (const uint) 0:43 Constant: 0:43 2 (const int) 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 'txval30' ( temp 4-component vector of float) 0:45 textureGather ( temp 4-component vector of float) 0:45 Construct combined texture-sampler ( temp sampler2DArray) 0:45 'g_tTex2df4a' ( uniform texture2DArray) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 c3: direct index for structure ( uniform 3-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:45 Constant: 0:45 2 (const uint) 0:45 Constant: 0:45 3 (const int) 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of int) 0:46 'txval31' ( temp 4-component vector of int) 0:46 textureGather ( temp 4-component vector of int) 0:46 Construct combined texture-sampler ( temp isampler2DArray) 0:46 'g_tTex2di4a' ( uniform itexture2DArray) 0:46 'g_sSamp' (layout( binding=0) uniform sampler) 0:46 c3: direct index for structure ( uniform 3-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:46 Constant: 0:46 2 (const uint) 0:46 Constant: 0:46 3 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 'txval32' ( temp 4-component vector of uint) 0:47 textureGather ( temp 4-component vector of uint) 0:47 Construct combined texture-sampler ( temp usampler2DArray) 0:47 'g_tTex2du4a' ( uniform utexture2DArray) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 c3: direct index for structure ( uniform 3-component vector of float) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:47 Constant: 0:47 2 (const uint) 0:47 Constant: 0:47 3 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'txval40' ( temp 4-component vector of float) 0:51 textureGather ( temp 4-component vector of float) 0:51 Construct combined texture-sampler ( temp samplerCubeArray) 0:51 'g_tTexcdf4a' ( uniform textureCubeArray) 0:51 'g_sSamp' (layout( binding=0) uniform sampler) 0:51 c4: direct index for structure ( uniform 4-component vector of float) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:51 Constant: 0:51 3 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of int) 0:52 'txval41' ( temp 4-component vector of int) 0:52 textureGather ( temp 4-component vector of int) 0:52 Construct combined texture-sampler ( temp isamplerCubeArray) 0:52 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 c4: direct index for structure ( uniform 4-component vector of float) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:52 Constant: 0:52 3 (const uint) 0:52 Constant: 0:52 0 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of uint) 0:53 'txval42' ( temp 4-component vector of uint) 0:53 textureGather ( temp 4-component vector of uint) 0:53 Construct combined texture-sampler ( temp usamplerCubeArray) 0:53 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 c4: direct index for structure ( uniform 4-component vector of float) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:53 Constant: 0:53 3 (const uint) 0:53 Constant: 0:53 0 (const int) 0:55 Sequence 0:55 move second child to first child ( temp 4-component vector of float) 0:55 'txval50' ( temp 4-component vector of float) 0:55 textureGather ( temp 4-component vector of float) 0:55 Construct combined texture-sampler ( temp samplerCubeArray) 0:55 'g_tTexcdf4a' ( uniform textureCubeArray) 0:55 'g_sSamp' (layout( binding=0) uniform sampler) 0:55 c4: direct index for structure ( uniform 4-component vector of float) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:55 Constant: 0:55 3 (const uint) 0:55 Constant: 0:55 1 (const int) 0:56 Sequence 0:56 move second child to first child ( temp 4-component vector of int) 0:56 'txval51' ( temp 4-component vector of int) 0:56 textureGather ( temp 4-component vector of int) 0:56 Construct combined texture-sampler ( temp isamplerCubeArray) 0:56 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:56 'g_sSamp' (layout( binding=0) uniform sampler) 0:56 c4: direct index for structure ( uniform 4-component vector of float) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:56 Constant: 0:56 3 (const uint) 0:56 Constant: 0:56 1 (const int) 0:57 Sequence 0:57 move second child to first child ( temp 4-component vector of uint) 0:57 'txval52' ( temp 4-component vector of uint) 0:57 textureGather ( temp 4-component vector of uint) 0:57 Construct combined texture-sampler ( temp usamplerCubeArray) 0:57 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:57 'g_sSamp' (layout( binding=0) uniform sampler) 0:57 c4: direct index for structure ( uniform 4-component vector of float) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:57 Constant: 0:57 3 (const uint) 0:57 Constant: 0:57 1 (const int) 0:59 Sequence 0:59 move second child to first child ( temp 4-component vector of float) 0:59 'txval60' ( temp 4-component vector of float) 0:59 textureGather ( temp 4-component vector of float) 0:59 Construct combined texture-sampler ( temp samplerCubeArray) 0:59 'g_tTexcdf4a' ( uniform textureCubeArray) 0:59 'g_sSamp' (layout( binding=0) uniform sampler) 0:59 c4: direct index for structure ( uniform 4-component vector of float) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:59 Constant: 0:59 3 (const uint) 0:59 Constant: 0:59 2 (const int) 0:60 Sequence 0:60 move second child to first child ( temp 4-component vector of int) 0:60 'txval61' ( temp 4-component vector of int) 0:60 textureGather ( temp 4-component vector of int) 0:60 Construct combined texture-sampler ( temp isamplerCubeArray) 0:60 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:60 'g_sSamp' (layout( binding=0) uniform sampler) 0:60 c4: direct index for structure ( uniform 4-component vector of float) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:60 Constant: 0:60 3 (const uint) 0:60 Constant: 0:60 2 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of uint) 0:61 'txval62' ( temp 4-component vector of uint) 0:61 textureGather ( temp 4-component vector of uint) 0:61 Construct combined texture-sampler ( temp usamplerCubeArray) 0:61 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:61 'g_sSamp' (layout( binding=0) uniform sampler) 0:61 c4: direct index for structure ( uniform 4-component vector of float) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:61 Constant: 0:61 3 (const uint) 0:61 Constant: 0:61 2 (const int) 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of float) 0:63 'txval70' ( temp 4-component vector of float) 0:63 textureGather ( temp 4-component vector of float) 0:63 Construct combined texture-sampler ( temp samplerCubeArray) 0:63 'g_tTexcdf4a' ( uniform textureCubeArray) 0:63 'g_sSamp' (layout( binding=0) uniform sampler) 0:63 c4: direct index for structure ( uniform 4-component vector of float) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:64 Sequence 0:64 move second child to first child ( temp 4-component vector of int) 0:64 'txval71' ( temp 4-component vector of int) 0:64 textureGather ( temp 4-component vector of int) 0:64 Construct combined texture-sampler ( temp isamplerCubeArray) 0:64 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:64 'g_sSamp' (layout( binding=0) uniform sampler) 0:64 c4: direct index for structure ( uniform 4-component vector of float) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:65 Sequence 0:65 move second child to first child ( temp 4-component vector of uint) 0:65 'txval72' ( temp 4-component vector of uint) 0:65 textureGather ( temp 4-component vector of uint) 0:65 Construct combined texture-sampler ( temp usamplerCubeArray) 0:65 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:65 'g_sSamp' (layout( binding=0) uniform sampler) 0:65 c4: direct index for structure ( uniform 4-component vector of float) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:65 Constant: 0:65 3 (const uint) 0:65 Constant: 0:65 3 (const int) 0:67 move second child to first child ( temp 4-component vector of float) 0:67 Color: direct index for structure ( temp 4-component vector of float) 0:67 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1.000000 0:67 1.000000 0:67 1.000000 0:67 1.000000 0:68 move second child to first child ( temp float) 0:68 Depth: direct index for structure ( temp float) 0:68 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 1.000000 0:70 Branch: Return with expression 0:70 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 255 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 238 242 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval00" Name 16 "g_tTex2df4a" Name 20 "g_sSamp" Name 26 "$Global" MemberName 26($Global) 0 "c1" MemberName 26($Global) 1 "c2" MemberName 26($Global) 2 "c3" MemberName 26($Global) 3 "c4" Name 28 "" Name 38 "txval01" Name 41 "g_tTex2di4a" Name 52 "txval02" Name 55 "g_tTex2du4a" Name 63 "txval10" Name 71 "txval11" Name 78 "txval12" Name 85 "txval20" Name 92 "txval21" Name 99 "txval22" Name 106 "txval30" Name 114 "txval31" Name 121 "txval32" Name 128 "txval40" Name 131 "g_tTexcdf4a" Name 140 "txval41" Name 143 "g_tTexcdi4a" Name 151 "txval42" Name 154 "g_tTexcdu4a" Name 162 "txval50" Name 169 "txval51" Name 176 "txval52" Name 183 "txval60" Name 190 "txval61" Name 197 "txval62" Name 204 "txval70" Name 211 "txval71" Name 218 "txval72" Name 226 "psout" Name 235 "flattenTemp" Name 238 "@entryPointOutput.Color" Name 242 "@entryPointOutput.Depth" Name 245 "g_sSamp2d" Name 248 "g_tTex1df4a" Name 251 "g_tTex1di4a" Name 254 "g_tTex1du4a" Decorate 16(g_tTex2df4a) Binding 1 Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 26($Global) Block MemberDecorate 26($Global) 0 Offset 0 MemberDecorate 26($Global) 1 Offset 8 MemberDecorate 26($Global) 2 Offset 16 MemberDecorate 26($Global) 3 Offset 32 Decorate 28 Binding 7 Decorate 28 DescriptorSet 0 Decorate 41(g_tTex2di4a) Binding 2 Decorate 41(g_tTex2di4a) DescriptorSet 0 Decorate 55(g_tTex2du4a) Binding 3 Decorate 55(g_tTex2du4a) DescriptorSet 0 Decorate 131(g_tTexcdf4a) Binding 4 Decorate 131(g_tTexcdf4a) DescriptorSet 0 Decorate 143(g_tTexcdi4a) Binding 5 Decorate 143(g_tTexcdi4a) DescriptorSet 0 Decorate 154(g_tTexcdu4a) Binding 6 Decorate 154(g_tTexcdu4a) DescriptorSet 0 Decorate 238(@entryPointOutput.Color) Location 0 Decorate 242(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 245(g_sSamp2d) Binding 0 Decorate 245(g_sSamp2d) DescriptorSet 0 Decorate 248(g_tTex1df4a) Binding 0 Decorate 248(g_tTex1df4a) DescriptorSet 0 Decorate 251(g_tTex1di4a) Binding 0 Decorate 251(g_tTex1di4a) DescriptorSet 0 Decorate 254(g_tTex1du4a) Binding 0 Decorate 254(g_tTex1du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: TypeVector 6(float) 3 26($Global): TypeStruct 6(float) 24(fvec2) 25(fvec3) 7(fvec4) 27: TypePointer Uniform 26($Global) 28: 27(ptr) Variable Uniform 29: TypeInt 32 1 30: 29(int) Constant 2 31: TypePointer Uniform 25(fvec3) 34: 29(int) Constant 0 36: TypeVector 29(int) 4 37: TypePointer Function 36(ivec4) 39: TypeImage 29(int) 2D array sampled format:Unknown 40: TypePointer UniformConstant 39 41(g_tTex2di4a): 40(ptr) Variable UniformConstant 44: TypeSampledImage 39 49: TypeInt 32 0 50: TypeVector 49(int) 4 51: TypePointer Function 50(ivec4) 53: TypeImage 49(int) 2D array sampled format:Unknown 54: TypePointer UniformConstant 53 55(g_tTex2du4a): 54(ptr) Variable UniformConstant 58: TypeSampledImage 53 69: 29(int) Constant 1 112: 29(int) Constant 3 129: TypeImage 6(float) Cube array sampled format:Unknown 130: TypePointer UniformConstant 129 131(g_tTexcdf4a): 130(ptr) Variable UniformConstant 134: TypeSampledImage 129 136: TypePointer Uniform 7(fvec4) 141: TypeImage 29(int) Cube array sampled format:Unknown 142: TypePointer UniformConstant 141 143(g_tTexcdi4a): 142(ptr) Variable UniformConstant 146: TypeSampledImage 141 152: TypeImage 49(int) Cube array sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTexcdu4a): 153(ptr) Variable UniformConstant 157: TypeSampledImage 152 225: TypePointer Function 8(PS_OUTPUT) 227: 6(float) Constant 1065353216 228: 7(fvec4) ConstantComposite 227 227 227 227 230: TypePointer Function 6(float) 237: TypePointer Output 7(fvec4) 238(@entryPointOutput.Color): 237(ptr) Variable Output 241: TypePointer Output 6(float) 242(@entryPointOutput.Depth): 241(ptr) Variable Output 245(g_sSamp2d): 19(ptr) Variable UniformConstant 246: TypeImage 6(float) 1D array sampled format:Unknown 247: TypePointer UniformConstant 246 248(g_tTex1df4a): 247(ptr) Variable UniformConstant 249: TypeImage 29(int) 1D array sampled format:Unknown 250: TypePointer UniformConstant 249 251(g_tTex1di4a): 250(ptr) Variable UniformConstant 252: TypeImage 49(int) 1D array sampled format:Unknown 253: TypePointer UniformConstant 252 254(g_tTex1du4a): 253(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 235(flattenTemp): 225(ptr) Variable Function 236:8(PS_OUTPUT) FunctionCall 10(@main() Store 235(flattenTemp) 236 239: 12(ptr) AccessChain 235(flattenTemp) 34 240: 7(fvec4) Load 239 Store 238(@entryPointOutput.Color) 240 243: 230(ptr) AccessChain 235(flattenTemp) 69 244: 6(float) Load 243 Store 242(@entryPointOutput.Depth) 244 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval00): 12(ptr) Variable Function 38(txval01): 37(ptr) Variable Function 52(txval02): 51(ptr) Variable Function 63(txval10): 12(ptr) Variable Function 71(txval11): 37(ptr) Variable Function 78(txval12): 51(ptr) Variable Function 85(txval20): 12(ptr) Variable Function 92(txval21): 37(ptr) Variable Function 99(txval22): 51(ptr) Variable Function 106(txval30): 12(ptr) Variable Function 114(txval31): 37(ptr) Variable Function 121(txval32): 51(ptr) Variable Function 128(txval40): 12(ptr) Variable Function 140(txval41): 37(ptr) Variable Function 151(txval42): 51(ptr) Variable Function 162(txval50): 12(ptr) Variable Function 169(txval51): 37(ptr) Variable Function 176(txval52): 51(ptr) Variable Function 183(txval60): 12(ptr) Variable Function 190(txval61): 37(ptr) Variable Function 197(txval62): 51(ptr) Variable Function 204(txval70): 12(ptr) Variable Function 211(txval71): 37(ptr) Variable Function 218(txval72): 51(ptr) Variable Function 226(psout): 225(ptr) Variable Function 17: 14 Load 16(g_tTex2df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 32: 31(ptr) AccessChain 28 30 33: 25(fvec3) Load 32 35: 7(fvec4) ImageGather 23 33 34 Store 13(txval00) 35 42: 39 Load 41(g_tTex2di4a) 43: 18 Load 20(g_sSamp) 45: 44 SampledImage 42 43 46: 31(ptr) AccessChain 28 30 47: 25(fvec3) Load 46 48: 36(ivec4) ImageGather 45 47 34 Store 38(txval01) 48 56: 53 Load 55(g_tTex2du4a) 57: 18 Load 20(g_sSamp) 59: 58 SampledImage 56 57 60: 31(ptr) AccessChain 28 30 61: 25(fvec3) Load 60 62: 50(ivec4) ImageGather 59 61 34 Store 52(txval02) 62 64: 14 Load 16(g_tTex2df4a) 65: 18 Load 20(g_sSamp) 66: 22 SampledImage 64 65 67: 31(ptr) AccessChain 28 30 68: 25(fvec3) Load 67 70: 7(fvec4) ImageGather 66 68 69 Store 63(txval10) 70 72: 39 Load 41(g_tTex2di4a) 73: 18 Load 20(g_sSamp) 74: 44 SampledImage 72 73 75: 31(ptr) AccessChain 28 30 76: 25(fvec3) Load 75 77: 36(ivec4) ImageGather 74 76 69 Store 71(txval11) 77 79: 53 Load 55(g_tTex2du4a) 80: 18 Load 20(g_sSamp) 81: 58 SampledImage 79 80 82: 31(ptr) AccessChain 28 30 83: 25(fvec3) Load 82 84: 50(ivec4) ImageGather 81 83 69 Store 78(txval12) 84 86: 14 Load 16(g_tTex2df4a) 87: 18 Load 20(g_sSamp) 88: 22 SampledImage 86 87 89: 31(ptr) AccessChain 28 30 90: 25(fvec3) Load 89 91: 7(fvec4) ImageGather 88 90 30 Store 85(txval20) 91 93: 39 Load 41(g_tTex2di4a) 94: 18 Load 20(g_sSamp) 95: 44 SampledImage 93 94 96: 31(ptr) AccessChain 28 30 97: 25(fvec3) Load 96 98: 36(ivec4) ImageGather 95 97 30 Store 92(txval21) 98 100: 53 Load 55(g_tTex2du4a) 101: 18 Load 20(g_sSamp) 102: 58 SampledImage 100 101 103: 31(ptr) AccessChain 28 30 104: 25(fvec3) Load 103 105: 50(ivec4) ImageGather 102 104 30 Store 99(txval22) 105 107: 14 Load 16(g_tTex2df4a) 108: 18 Load 20(g_sSamp) 109: 22 SampledImage 107 108 110: 31(ptr) AccessChain 28 30 111: 25(fvec3) Load 110 113: 7(fvec4) ImageGather 109 111 112 Store 106(txval30) 113 115: 39 Load 41(g_tTex2di4a) 116: 18 Load 20(g_sSamp) 117: 44 SampledImage 115 116 118: 31(ptr) AccessChain 28 30 119: 25(fvec3) Load 118 120: 36(ivec4) ImageGather 117 119 112 Store 114(txval31) 120 122: 53 Load 55(g_tTex2du4a) 123: 18 Load 20(g_sSamp) 124: 58 SampledImage 122 123 125: 31(ptr) AccessChain 28 30 126: 25(fvec3) Load 125 127: 50(ivec4) ImageGather 124 126 112 Store 121(txval32) 127 132: 129 Load 131(g_tTexcdf4a) 133: 18 Load 20(g_sSamp) 135: 134 SampledImage 132 133 137: 136(ptr) AccessChain 28 112 138: 7(fvec4) Load 137 139: 7(fvec4) ImageGather 135 138 34 Store 128(txval40) 139 144: 141 Load 143(g_tTexcdi4a) 145: 18 Load 20(g_sSamp) 147: 146 SampledImage 144 145 148: 136(ptr) AccessChain 28 112 149: 7(fvec4) Load 148 150: 36(ivec4) ImageGather 147 149 34 Store 140(txval41) 150 155: 152 Load 154(g_tTexcdu4a) 156: 18 Load 20(g_sSamp) 158: 157 SampledImage 155 156 159: 136(ptr) AccessChain 28 112 160: 7(fvec4) Load 159 161: 50(ivec4) ImageGather 158 160 34 Store 151(txval42) 161 163: 129 Load 131(g_tTexcdf4a) 164: 18 Load 20(g_sSamp) 165: 134 SampledImage 163 164 166: 136(ptr) AccessChain 28 112 167: 7(fvec4) Load 166 168: 7(fvec4) ImageGather 165 167 69 Store 162(txval50) 168 170: 141 Load 143(g_tTexcdi4a) 171: 18 Load 20(g_sSamp) 172: 146 SampledImage 170 171 173: 136(ptr) AccessChain 28 112 174: 7(fvec4) Load 173 175: 36(ivec4) ImageGather 172 174 69 Store 169(txval51) 175 177: 152 Load 154(g_tTexcdu4a) 178: 18 Load 20(g_sSamp) 179: 157 SampledImage 177 178 180: 136(ptr) AccessChain 28 112 181: 7(fvec4) Load 180 182: 50(ivec4) ImageGather 179 181 69 Store 176(txval52) 182 184: 129 Load 131(g_tTexcdf4a) 185: 18 Load 20(g_sSamp) 186: 134 SampledImage 184 185 187: 136(ptr) AccessChain 28 112 188: 7(fvec4) Load 187 189: 7(fvec4) ImageGather 186 188 30 Store 183(txval60) 189 191: 141 Load 143(g_tTexcdi4a) 192: 18 Load 20(g_sSamp) 193: 146 SampledImage 191 192 194: 136(ptr) AccessChain 28 112 195: 7(fvec4) Load 194 196: 36(ivec4) ImageGather 193 195 30 Store 190(txval61) 196 198: 152 Load 154(g_tTexcdu4a) 199: 18 Load 20(g_sSamp) 200: 157 SampledImage 198 199 201: 136(ptr) AccessChain 28 112 202: 7(fvec4) Load 201 203: 50(ivec4) ImageGather 200 202 30 Store 197(txval62) 203 205: 129 Load 131(g_tTexcdf4a) 206: 18 Load 20(g_sSamp) 207: 134 SampledImage 205 206 208: 136(ptr) AccessChain 28 112 209: 7(fvec4) Load 208 210: 7(fvec4) ImageGather 207 209 112 Store 204(txval70) 210 212: 141 Load 143(g_tTexcdi4a) 213: 18 Load 20(g_sSamp) 214: 146 SampledImage 212 213 215: 136(ptr) AccessChain 28 112 216: 7(fvec4) Load 215 217: 36(ivec4) ImageGather 214 216 112 Store 211(txval71) 217 219: 152 Load 154(g_tTexcdu4a) 220: 18 Load 20(g_sSamp) 221: 157 SampledImage 219 220 222: 136(ptr) AccessChain 28 112 223: 7(fvec4) Load 222 224: 50(ivec4) ImageGather 221 223 112 Store 218(txval72) 224 229: 12(ptr) AccessChain 226(psout) 34 Store 229 228 231: 230(ptr) AccessChain 226(psout) 69 Store 231 227 232:8(PS_OUTPUT) Load 226(psout) ReturnValue 232 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out000066400000000000000000002040741506534232700246270ustar00rootroot00000000000000hlsl.gatherRGBA.basic.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:34 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Function Parameters: 0:? Sequence 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval00' ( temp 4-component vector of float) 0:39 textureGather ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler2D) 0:39 'g_tTex2df4' ( uniform texture2D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 c2: direct index for structure ( uniform 2-component vector of float) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 0 (const int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval01' ( temp 4-component vector of int) 0:40 textureGather ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler2D) 0:40 'g_tTex2di4' ( uniform itexture2D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 c2: direct index for structure ( uniform 2-component vector of float) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:40 Constant: 0:40 1 (const uint) 0:40 Constant: 0:40 0 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval02' ( temp 4-component vector of uint) 0:41 textureGather ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler2D) 0:41 'g_tTex2du4' ( uniform utexture2D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 c2: direct index for structure ( uniform 2-component vector of float) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:41 Constant: 0:41 1 (const uint) 0:41 Constant: 0:41 0 (const int) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'txval10' ( temp 4-component vector of float) 0:43 textureGather ( temp 4-component vector of float) 0:43 Construct combined texture-sampler ( temp sampler2D) 0:43 'g_tTex2df4' ( uniform texture2D) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 c2: direct index for structure ( uniform 2-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:43 Constant: 0:43 1 (const uint) 0:43 Constant: 0:43 1 (const int) 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of int) 0:44 'txval11' ( temp 4-component vector of int) 0:44 textureGather ( temp 4-component vector of int) 0:44 Construct combined texture-sampler ( temp isampler2D) 0:44 'g_tTex2di4' ( uniform itexture2D) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 c2: direct index for structure ( uniform 2-component vector of float) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:44 Constant: 0:44 1 (const uint) 0:44 Constant: 0:44 1 (const int) 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of uint) 0:45 'txval12' ( temp 4-component vector of uint) 0:45 textureGather ( temp 4-component vector of uint) 0:45 Construct combined texture-sampler ( temp usampler2D) 0:45 'g_tTex2du4' ( uniform utexture2D) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 c2: direct index for structure ( uniform 2-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:45 Constant: 0:45 1 (const uint) 0:45 Constant: 0:45 1 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of float) 0:47 'txval20' ( temp 4-component vector of float) 0:47 textureGather ( temp 4-component vector of float) 0:47 Construct combined texture-sampler ( temp sampler2D) 0:47 'g_tTex2df4' ( uniform texture2D) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 c2: direct index for structure ( uniform 2-component vector of float) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:47 Constant: 0:47 1 (const uint) 0:47 Constant: 0:47 2 (const int) 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of int) 0:48 'txval21' ( temp 4-component vector of int) 0:48 textureGather ( temp 4-component vector of int) 0:48 Construct combined texture-sampler ( temp isampler2D) 0:48 'g_tTex2di4' ( uniform itexture2D) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 c2: direct index for structure ( uniform 2-component vector of float) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:48 Constant: 0:48 1 (const uint) 0:48 Constant: 0:48 2 (const int) 0:49 Sequence 0:49 move second child to first child ( temp 4-component vector of uint) 0:49 'txval22' ( temp 4-component vector of uint) 0:49 textureGather ( temp 4-component vector of uint) 0:49 Construct combined texture-sampler ( temp usampler2D) 0:49 'g_tTex2du4' ( uniform utexture2D) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 c2: direct index for structure ( uniform 2-component vector of float) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:49 Constant: 0:49 1 (const uint) 0:49 Constant: 0:49 2 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'txval30' ( temp 4-component vector of float) 0:51 textureGather ( temp 4-component vector of float) 0:51 Construct combined texture-sampler ( temp sampler2D) 0:51 'g_tTex2df4' ( uniform texture2D) 0:51 'g_sSamp' (layout( binding=0) uniform sampler) 0:51 c2: direct index for structure ( uniform 2-component vector of float) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Constant: 0:51 3 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of int) 0:52 'txval31' ( temp 4-component vector of int) 0:52 textureGather ( temp 4-component vector of int) 0:52 Construct combined texture-sampler ( temp isampler2D) 0:52 'g_tTex2di4' ( uniform itexture2D) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 c2: direct index for structure ( uniform 2-component vector of float) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Constant: 0:52 3 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of uint) 0:53 'txval32' ( temp 4-component vector of uint) 0:53 textureGather ( temp 4-component vector of uint) 0:53 Construct combined texture-sampler ( temp usampler2D) 0:53 'g_tTex2du4' ( uniform utexture2D) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 c2: direct index for structure ( uniform 2-component vector of float) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Constant: 0:53 3 (const int) 0:57 Sequence 0:57 move second child to first child ( temp 4-component vector of float) 0:57 'txval40' ( temp 4-component vector of float) 0:57 textureGather ( temp 4-component vector of float) 0:57 Construct combined texture-sampler ( temp samplerCube) 0:57 'g_tTexcdf4' ( uniform textureCube) 0:57 'g_sSamp' (layout( binding=0) uniform sampler) 0:57 c3: direct index for structure ( uniform 3-component vector of float) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Constant: 0:57 0 (const int) 0:58 Sequence 0:58 move second child to first child ( temp 4-component vector of int) 0:58 'txval41' ( temp 4-component vector of int) 0:58 textureGather ( temp 4-component vector of int) 0:58 Construct combined texture-sampler ( temp isamplerCube) 0:58 'g_tTexcdi4' ( uniform itextureCube) 0:58 'g_sSamp' (layout( binding=0) uniform sampler) 0:58 c3: direct index for structure ( uniform 3-component vector of float) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Constant: 0:58 0 (const int) 0:59 Sequence 0:59 move second child to first child ( temp 4-component vector of uint) 0:59 'txval42' ( temp 4-component vector of uint) 0:59 textureGather ( temp 4-component vector of uint) 0:59 Construct combined texture-sampler ( temp usamplerCube) 0:59 'g_tTexcdu4' ( uniform utextureCube) 0:59 'g_sSamp' (layout( binding=0) uniform sampler) 0:59 c3: direct index for structure ( uniform 3-component vector of float) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Constant: 0:59 0 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of float) 0:61 'txval50' ( temp 4-component vector of float) 0:61 textureGather ( temp 4-component vector of float) 0:61 Construct combined texture-sampler ( temp samplerCube) 0:61 'g_tTexcdf4' ( uniform textureCube) 0:61 'g_sSamp' (layout( binding=0) uniform sampler) 0:61 c3: direct index for structure ( uniform 3-component vector of float) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:61 Constant: 0:61 2 (const uint) 0:61 Constant: 0:61 1 (const int) 0:62 Sequence 0:62 move second child to first child ( temp 4-component vector of int) 0:62 'txval51' ( temp 4-component vector of int) 0:62 textureGather ( temp 4-component vector of int) 0:62 Construct combined texture-sampler ( temp isamplerCube) 0:62 'g_tTexcdi4' ( uniform itextureCube) 0:62 'g_sSamp' (layout( binding=0) uniform sampler) 0:62 c3: direct index for structure ( uniform 3-component vector of float) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:62 Constant: 0:62 2 (const uint) 0:62 Constant: 0:62 1 (const int) 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of uint) 0:63 'txval52' ( temp 4-component vector of uint) 0:63 textureGather ( temp 4-component vector of uint) 0:63 Construct combined texture-sampler ( temp usamplerCube) 0:63 'g_tTexcdu4' ( uniform utextureCube) 0:63 'g_sSamp' (layout( binding=0) uniform sampler) 0:63 c3: direct index for structure ( uniform 3-component vector of float) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:63 Constant: 0:63 2 (const uint) 0:63 Constant: 0:63 1 (const int) 0:65 Sequence 0:65 move second child to first child ( temp 4-component vector of float) 0:65 'txval60' ( temp 4-component vector of float) 0:65 textureGather ( temp 4-component vector of float) 0:65 Construct combined texture-sampler ( temp samplerCube) 0:65 'g_tTexcdf4' ( uniform textureCube) 0:65 'g_sSamp' (layout( binding=0) uniform sampler) 0:65 c3: direct index for structure ( uniform 3-component vector of float) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:65 Constant: 0:65 2 (const uint) 0:65 Constant: 0:65 2 (const int) 0:66 Sequence 0:66 move second child to first child ( temp 4-component vector of int) 0:66 'txval61' ( temp 4-component vector of int) 0:66 textureGather ( temp 4-component vector of int) 0:66 Construct combined texture-sampler ( temp isamplerCube) 0:66 'g_tTexcdi4' ( uniform itextureCube) 0:66 'g_sSamp' (layout( binding=0) uniform sampler) 0:66 c3: direct index for structure ( uniform 3-component vector of float) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:66 Constant: 0:66 2 (const uint) 0:66 Constant: 0:66 2 (const int) 0:67 Sequence 0:67 move second child to first child ( temp 4-component vector of uint) 0:67 'txval62' ( temp 4-component vector of uint) 0:67 textureGather ( temp 4-component vector of uint) 0:67 Construct combined texture-sampler ( temp usamplerCube) 0:67 'g_tTexcdu4' ( uniform utextureCube) 0:67 'g_sSamp' (layout( binding=0) uniform sampler) 0:67 c3: direct index for structure ( uniform 3-component vector of float) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:67 Constant: 0:67 2 (const uint) 0:67 Constant: 0:67 2 (const int) 0:69 Sequence 0:69 move second child to first child ( temp 4-component vector of float) 0:69 'txval70' ( temp 4-component vector of float) 0:69 textureGather ( temp 4-component vector of float) 0:69 Construct combined texture-sampler ( temp samplerCube) 0:69 'g_tTexcdf4' ( uniform textureCube) 0:69 'g_sSamp' (layout( binding=0) uniform sampler) 0:69 c3: direct index for structure ( uniform 3-component vector of float) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:69 Constant: 0:69 2 (const uint) 0:69 Constant: 0:69 3 (const int) 0:70 Sequence 0:70 move second child to first child ( temp 4-component vector of int) 0:70 'txval71' ( temp 4-component vector of int) 0:70 textureGather ( temp 4-component vector of int) 0:70 Construct combined texture-sampler ( temp isamplerCube) 0:70 'g_tTexcdi4' ( uniform itextureCube) 0:70 'g_sSamp' (layout( binding=0) uniform sampler) 0:70 c3: direct index for structure ( uniform 3-component vector of float) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:70 Constant: 0:70 2 (const uint) 0:70 Constant: 0:70 3 (const int) 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of uint) 0:71 'txval72' ( temp 4-component vector of uint) 0:71 textureGather ( temp 4-component vector of uint) 0:71 Construct combined texture-sampler ( temp usamplerCube) 0:71 'g_tTexcdu4' ( uniform utextureCube) 0:71 'g_sSamp' (layout( binding=0) uniform sampler) 0:71 c3: direct index for structure ( uniform 3-component vector of float) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:71 Constant: 0:71 2 (const uint) 0:71 Constant: 0:71 3 (const int) 0:73 move second child to first child ( temp 4-component vector of float) 0:73 Color: direct index for structure ( temp 4-component vector of float) 0:73 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1.000000 0:73 1.000000 0:73 1.000000 0:73 1.000000 0:74 move second child to first child ( temp float) 0:74 Depth: direct index for structure ( temp float) 0:74 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 1.000000 0:76 Branch: Return with expression 0:76 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Function Definition: main( ( temp void) 0:34 Function Parameters: 0:? Sequence 0:34 Sequence 0:34 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:34 Color: direct index for structure ( temp 4-component vector of float) 0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 0 (const int) 0:34 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:34 Depth: direct index for structure ( temp float) 0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:34 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Function Parameters: 0:? Sequence 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval00' ( temp 4-component vector of float) 0:39 textureGather ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler2D) 0:39 'g_tTex2df4' ( uniform texture2D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 c2: direct index for structure ( uniform 2-component vector of float) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 0 (const int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval01' ( temp 4-component vector of int) 0:40 textureGather ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler2D) 0:40 'g_tTex2di4' ( uniform itexture2D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 c2: direct index for structure ( uniform 2-component vector of float) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:40 Constant: 0:40 1 (const uint) 0:40 Constant: 0:40 0 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval02' ( temp 4-component vector of uint) 0:41 textureGather ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler2D) 0:41 'g_tTex2du4' ( uniform utexture2D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 c2: direct index for structure ( uniform 2-component vector of float) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:41 Constant: 0:41 1 (const uint) 0:41 Constant: 0:41 0 (const int) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'txval10' ( temp 4-component vector of float) 0:43 textureGather ( temp 4-component vector of float) 0:43 Construct combined texture-sampler ( temp sampler2D) 0:43 'g_tTex2df4' ( uniform texture2D) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 c2: direct index for structure ( uniform 2-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:43 Constant: 0:43 1 (const uint) 0:43 Constant: 0:43 1 (const int) 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of int) 0:44 'txval11' ( temp 4-component vector of int) 0:44 textureGather ( temp 4-component vector of int) 0:44 Construct combined texture-sampler ( temp isampler2D) 0:44 'g_tTex2di4' ( uniform itexture2D) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 c2: direct index for structure ( uniform 2-component vector of float) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:44 Constant: 0:44 1 (const uint) 0:44 Constant: 0:44 1 (const int) 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of uint) 0:45 'txval12' ( temp 4-component vector of uint) 0:45 textureGather ( temp 4-component vector of uint) 0:45 Construct combined texture-sampler ( temp usampler2D) 0:45 'g_tTex2du4' ( uniform utexture2D) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 c2: direct index for structure ( uniform 2-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:45 Constant: 0:45 1 (const uint) 0:45 Constant: 0:45 1 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of float) 0:47 'txval20' ( temp 4-component vector of float) 0:47 textureGather ( temp 4-component vector of float) 0:47 Construct combined texture-sampler ( temp sampler2D) 0:47 'g_tTex2df4' ( uniform texture2D) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 c2: direct index for structure ( uniform 2-component vector of float) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:47 Constant: 0:47 1 (const uint) 0:47 Constant: 0:47 2 (const int) 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of int) 0:48 'txval21' ( temp 4-component vector of int) 0:48 textureGather ( temp 4-component vector of int) 0:48 Construct combined texture-sampler ( temp isampler2D) 0:48 'g_tTex2di4' ( uniform itexture2D) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 c2: direct index for structure ( uniform 2-component vector of float) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:48 Constant: 0:48 1 (const uint) 0:48 Constant: 0:48 2 (const int) 0:49 Sequence 0:49 move second child to first child ( temp 4-component vector of uint) 0:49 'txval22' ( temp 4-component vector of uint) 0:49 textureGather ( temp 4-component vector of uint) 0:49 Construct combined texture-sampler ( temp usampler2D) 0:49 'g_tTex2du4' ( uniform utexture2D) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 c2: direct index for structure ( uniform 2-component vector of float) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:49 Constant: 0:49 1 (const uint) 0:49 Constant: 0:49 2 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'txval30' ( temp 4-component vector of float) 0:51 textureGather ( temp 4-component vector of float) 0:51 Construct combined texture-sampler ( temp sampler2D) 0:51 'g_tTex2df4' ( uniform texture2D) 0:51 'g_sSamp' (layout( binding=0) uniform sampler) 0:51 c2: direct index for structure ( uniform 2-component vector of float) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Constant: 0:51 3 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of int) 0:52 'txval31' ( temp 4-component vector of int) 0:52 textureGather ( temp 4-component vector of int) 0:52 Construct combined texture-sampler ( temp isampler2D) 0:52 'g_tTex2di4' ( uniform itexture2D) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 c2: direct index for structure ( uniform 2-component vector of float) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Constant: 0:52 3 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of uint) 0:53 'txval32' ( temp 4-component vector of uint) 0:53 textureGather ( temp 4-component vector of uint) 0:53 Construct combined texture-sampler ( temp usampler2D) 0:53 'g_tTex2du4' ( uniform utexture2D) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 c2: direct index for structure ( uniform 2-component vector of float) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Constant: 0:53 3 (const int) 0:57 Sequence 0:57 move second child to first child ( temp 4-component vector of float) 0:57 'txval40' ( temp 4-component vector of float) 0:57 textureGather ( temp 4-component vector of float) 0:57 Construct combined texture-sampler ( temp samplerCube) 0:57 'g_tTexcdf4' ( uniform textureCube) 0:57 'g_sSamp' (layout( binding=0) uniform sampler) 0:57 c3: direct index for structure ( uniform 3-component vector of float) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Constant: 0:57 0 (const int) 0:58 Sequence 0:58 move second child to first child ( temp 4-component vector of int) 0:58 'txval41' ( temp 4-component vector of int) 0:58 textureGather ( temp 4-component vector of int) 0:58 Construct combined texture-sampler ( temp isamplerCube) 0:58 'g_tTexcdi4' ( uniform itextureCube) 0:58 'g_sSamp' (layout( binding=0) uniform sampler) 0:58 c3: direct index for structure ( uniform 3-component vector of float) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Constant: 0:58 0 (const int) 0:59 Sequence 0:59 move second child to first child ( temp 4-component vector of uint) 0:59 'txval42' ( temp 4-component vector of uint) 0:59 textureGather ( temp 4-component vector of uint) 0:59 Construct combined texture-sampler ( temp usamplerCube) 0:59 'g_tTexcdu4' ( uniform utextureCube) 0:59 'g_sSamp' (layout( binding=0) uniform sampler) 0:59 c3: direct index for structure ( uniform 3-component vector of float) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Constant: 0:59 0 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of float) 0:61 'txval50' ( temp 4-component vector of float) 0:61 textureGather ( temp 4-component vector of float) 0:61 Construct combined texture-sampler ( temp samplerCube) 0:61 'g_tTexcdf4' ( uniform textureCube) 0:61 'g_sSamp' (layout( binding=0) uniform sampler) 0:61 c3: direct index for structure ( uniform 3-component vector of float) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:61 Constant: 0:61 2 (const uint) 0:61 Constant: 0:61 1 (const int) 0:62 Sequence 0:62 move second child to first child ( temp 4-component vector of int) 0:62 'txval51' ( temp 4-component vector of int) 0:62 textureGather ( temp 4-component vector of int) 0:62 Construct combined texture-sampler ( temp isamplerCube) 0:62 'g_tTexcdi4' ( uniform itextureCube) 0:62 'g_sSamp' (layout( binding=0) uniform sampler) 0:62 c3: direct index for structure ( uniform 3-component vector of float) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:62 Constant: 0:62 2 (const uint) 0:62 Constant: 0:62 1 (const int) 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of uint) 0:63 'txval52' ( temp 4-component vector of uint) 0:63 textureGather ( temp 4-component vector of uint) 0:63 Construct combined texture-sampler ( temp usamplerCube) 0:63 'g_tTexcdu4' ( uniform utextureCube) 0:63 'g_sSamp' (layout( binding=0) uniform sampler) 0:63 c3: direct index for structure ( uniform 3-component vector of float) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:63 Constant: 0:63 2 (const uint) 0:63 Constant: 0:63 1 (const int) 0:65 Sequence 0:65 move second child to first child ( temp 4-component vector of float) 0:65 'txval60' ( temp 4-component vector of float) 0:65 textureGather ( temp 4-component vector of float) 0:65 Construct combined texture-sampler ( temp samplerCube) 0:65 'g_tTexcdf4' ( uniform textureCube) 0:65 'g_sSamp' (layout( binding=0) uniform sampler) 0:65 c3: direct index for structure ( uniform 3-component vector of float) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:65 Constant: 0:65 2 (const uint) 0:65 Constant: 0:65 2 (const int) 0:66 Sequence 0:66 move second child to first child ( temp 4-component vector of int) 0:66 'txval61' ( temp 4-component vector of int) 0:66 textureGather ( temp 4-component vector of int) 0:66 Construct combined texture-sampler ( temp isamplerCube) 0:66 'g_tTexcdi4' ( uniform itextureCube) 0:66 'g_sSamp' (layout( binding=0) uniform sampler) 0:66 c3: direct index for structure ( uniform 3-component vector of float) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:66 Constant: 0:66 2 (const uint) 0:66 Constant: 0:66 2 (const int) 0:67 Sequence 0:67 move second child to first child ( temp 4-component vector of uint) 0:67 'txval62' ( temp 4-component vector of uint) 0:67 textureGather ( temp 4-component vector of uint) 0:67 Construct combined texture-sampler ( temp usamplerCube) 0:67 'g_tTexcdu4' ( uniform utextureCube) 0:67 'g_sSamp' (layout( binding=0) uniform sampler) 0:67 c3: direct index for structure ( uniform 3-component vector of float) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:67 Constant: 0:67 2 (const uint) 0:67 Constant: 0:67 2 (const int) 0:69 Sequence 0:69 move second child to first child ( temp 4-component vector of float) 0:69 'txval70' ( temp 4-component vector of float) 0:69 textureGather ( temp 4-component vector of float) 0:69 Construct combined texture-sampler ( temp samplerCube) 0:69 'g_tTexcdf4' ( uniform textureCube) 0:69 'g_sSamp' (layout( binding=0) uniform sampler) 0:69 c3: direct index for structure ( uniform 3-component vector of float) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:69 Constant: 0:69 2 (const uint) 0:69 Constant: 0:69 3 (const int) 0:70 Sequence 0:70 move second child to first child ( temp 4-component vector of int) 0:70 'txval71' ( temp 4-component vector of int) 0:70 textureGather ( temp 4-component vector of int) 0:70 Construct combined texture-sampler ( temp isamplerCube) 0:70 'g_tTexcdi4' ( uniform itextureCube) 0:70 'g_sSamp' (layout( binding=0) uniform sampler) 0:70 c3: direct index for structure ( uniform 3-component vector of float) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:70 Constant: 0:70 2 (const uint) 0:70 Constant: 0:70 3 (const int) 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of uint) 0:71 'txval72' ( temp 4-component vector of uint) 0:71 textureGather ( temp 4-component vector of uint) 0:71 Construct combined texture-sampler ( temp usamplerCube) 0:71 'g_tTexcdu4' ( uniform utextureCube) 0:71 'g_sSamp' (layout( binding=0) uniform sampler) 0:71 c3: direct index for structure ( uniform 3-component vector of float) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:71 Constant: 0:71 2 (const uint) 0:71 Constant: 0:71 3 (const int) 0:73 move second child to first child ( temp 4-component vector of float) 0:73 Color: direct index for structure ( temp 4-component vector of float) 0:73 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1.000000 0:73 1.000000 0:73 1.000000 0:73 1.000000 0:74 move second child to first child ( temp float) 0:74 Depth: direct index for structure ( temp float) 0:74 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 1.000000 0:76 Branch: Return with expression 0:76 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Function Definition: main( ( temp void) 0:34 Function Parameters: 0:? Sequence 0:34 Sequence 0:34 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:34 Color: direct index for structure ( temp 4-component vector of float) 0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 0 (const int) 0:34 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:34 Depth: direct index for structure ( temp float) 0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 265 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 238 242 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval00" Name 16 "g_tTex2df4" Name 20 "g_sSamp" Name 26 "$Global" MemberName 26($Global) 0 "c1" MemberName 26($Global) 1 "c2" MemberName 26($Global) 2 "c3" MemberName 26($Global) 3 "c4" Name 28 "" Name 38 "txval01" Name 41 "g_tTex2di4" Name 52 "txval02" Name 55 "g_tTex2du4" Name 63 "txval10" Name 70 "txval11" Name 77 "txval12" Name 84 "txval20" Name 92 "txval21" Name 99 "txval22" Name 106 "txval30" Name 114 "txval31" Name 121 "txval32" Name 128 "txval40" Name 131 "g_tTexcdf4" Name 140 "txval41" Name 143 "g_tTexcdi4" Name 151 "txval42" Name 154 "g_tTexcdu4" Name 162 "txval50" Name 169 "txval51" Name 176 "txval52" Name 183 "txval60" Name 190 "txval61" Name 197 "txval62" Name 204 "txval70" Name 211 "txval71" Name 218 "txval72" Name 226 "psout" Name 235 "flattenTemp" Name 238 "@entryPointOutput.Color" Name 242 "@entryPointOutput.Depth" Name 245 "g_sSamp2d" Name 248 "g_tTex1df4a" Name 249 "g_tTex1df4" Name 252 "g_tTex1di4" Name 255 "g_tTex1du4" Name 258 "g_tTex3df4" Name 261 "g_tTex3di4" Name 264 "g_tTex3du4" Decorate 16(g_tTex2df4) Binding 2 Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 26($Global) Block MemberDecorate 26($Global) 0 Offset 0 MemberDecorate 26($Global) 1 Offset 8 MemberDecorate 26($Global) 2 Offset 16 MemberDecorate 26($Global) 3 Offset 32 Decorate 28 Binding 8 Decorate 28 DescriptorSet 0 Decorate 41(g_tTex2di4) Binding 3 Decorate 41(g_tTex2di4) DescriptorSet 0 Decorate 55(g_tTex2du4) Binding 4 Decorate 55(g_tTex2du4) DescriptorSet 0 Decorate 131(g_tTexcdf4) Binding 5 Decorate 131(g_tTexcdf4) DescriptorSet 0 Decorate 143(g_tTexcdi4) Binding 6 Decorate 143(g_tTexcdi4) DescriptorSet 0 Decorate 154(g_tTexcdu4) Binding 7 Decorate 154(g_tTexcdu4) DescriptorSet 0 Decorate 238(@entryPointOutput.Color) Location 0 Decorate 242(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 245(g_sSamp2d) Binding 0 Decorate 245(g_sSamp2d) DescriptorSet 0 Decorate 248(g_tTex1df4a) Binding 1 Decorate 248(g_tTex1df4a) DescriptorSet 0 Decorate 249(g_tTex1df4) Binding 0 Decorate 249(g_tTex1df4) DescriptorSet 0 Decorate 252(g_tTex1di4) Binding 0 Decorate 252(g_tTex1di4) DescriptorSet 0 Decorate 255(g_tTex1du4) Binding 0 Decorate 255(g_tTex1du4) DescriptorSet 0 Decorate 258(g_tTex3df4) Binding 0 Decorate 258(g_tTex3df4) DescriptorSet 0 Decorate 261(g_tTex3di4) Binding 0 Decorate 261(g_tTex3di4) DescriptorSet 0 Decorate 264(g_tTex3du4) Binding 0 Decorate 264(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: TypeVector 6(float) 3 26($Global): TypeStruct 6(float) 24(fvec2) 25(fvec3) 7(fvec4) 27: TypePointer Uniform 26($Global) 28: 27(ptr) Variable Uniform 29: TypeInt 32 1 30: 29(int) Constant 1 31: TypePointer Uniform 24(fvec2) 34: 29(int) Constant 0 36: TypeVector 29(int) 4 37: TypePointer Function 36(ivec4) 39: TypeImage 29(int) 2D sampled format:Unknown 40: TypePointer UniformConstant 39 41(g_tTex2di4): 40(ptr) Variable UniformConstant 44: TypeSampledImage 39 49: TypeInt 32 0 50: TypeVector 49(int) 4 51: TypePointer Function 50(ivec4) 53: TypeImage 49(int) 2D sampled format:Unknown 54: TypePointer UniformConstant 53 55(g_tTex2du4): 54(ptr) Variable UniformConstant 58: TypeSampledImage 53 90: 29(int) Constant 2 112: 29(int) Constant 3 129: TypeImage 6(float) Cube sampled format:Unknown 130: TypePointer UniformConstant 129 131(g_tTexcdf4): 130(ptr) Variable UniformConstant 134: TypeSampledImage 129 136: TypePointer Uniform 25(fvec3) 141: TypeImage 29(int) Cube sampled format:Unknown 142: TypePointer UniformConstant 141 143(g_tTexcdi4): 142(ptr) Variable UniformConstant 146: TypeSampledImage 141 152: TypeImage 49(int) Cube sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTexcdu4): 153(ptr) Variable UniformConstant 157: TypeSampledImage 152 225: TypePointer Function 8(PS_OUTPUT) 227: 6(float) Constant 1065353216 228: 7(fvec4) ConstantComposite 227 227 227 227 230: TypePointer Function 6(float) 237: TypePointer Output 7(fvec4) 238(@entryPointOutput.Color): 237(ptr) Variable Output 241: TypePointer Output 6(float) 242(@entryPointOutput.Depth): 241(ptr) Variable Output 245(g_sSamp2d): 19(ptr) Variable UniformConstant 246: TypeImage 6(float) 1D sampled format:Unknown 247: TypePointer UniformConstant 246 248(g_tTex1df4a): 247(ptr) Variable UniformConstant 249(g_tTex1df4): 247(ptr) Variable UniformConstant 250: TypeImage 29(int) 1D sampled format:Unknown 251: TypePointer UniformConstant 250 252(g_tTex1di4): 251(ptr) Variable UniformConstant 253: TypeImage 49(int) 1D sampled format:Unknown 254: TypePointer UniformConstant 253 255(g_tTex1du4): 254(ptr) Variable UniformConstant 256: TypeImage 6(float) 3D sampled format:Unknown 257: TypePointer UniformConstant 256 258(g_tTex3df4): 257(ptr) Variable UniformConstant 259: TypeImage 29(int) 3D sampled format:Unknown 260: TypePointer UniformConstant 259 261(g_tTex3di4): 260(ptr) Variable UniformConstant 262: TypeImage 49(int) 3D sampled format:Unknown 263: TypePointer UniformConstant 262 264(g_tTex3du4): 263(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 235(flattenTemp): 225(ptr) Variable Function 236:8(PS_OUTPUT) FunctionCall 10(@main() Store 235(flattenTemp) 236 239: 12(ptr) AccessChain 235(flattenTemp) 34 240: 7(fvec4) Load 239 Store 238(@entryPointOutput.Color) 240 243: 230(ptr) AccessChain 235(flattenTemp) 30 244: 6(float) Load 243 Store 242(@entryPointOutput.Depth) 244 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval00): 12(ptr) Variable Function 38(txval01): 37(ptr) Variable Function 52(txval02): 51(ptr) Variable Function 63(txval10): 12(ptr) Variable Function 70(txval11): 37(ptr) Variable Function 77(txval12): 51(ptr) Variable Function 84(txval20): 12(ptr) Variable Function 92(txval21): 37(ptr) Variable Function 99(txval22): 51(ptr) Variable Function 106(txval30): 12(ptr) Variable Function 114(txval31): 37(ptr) Variable Function 121(txval32): 51(ptr) Variable Function 128(txval40): 12(ptr) Variable Function 140(txval41): 37(ptr) Variable Function 151(txval42): 51(ptr) Variable Function 162(txval50): 12(ptr) Variable Function 169(txval51): 37(ptr) Variable Function 176(txval52): 51(ptr) Variable Function 183(txval60): 12(ptr) Variable Function 190(txval61): 37(ptr) Variable Function 197(txval62): 51(ptr) Variable Function 204(txval70): 12(ptr) Variable Function 211(txval71): 37(ptr) Variable Function 218(txval72): 51(ptr) Variable Function 226(psout): 225(ptr) Variable Function 17: 14 Load 16(g_tTex2df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 32: 31(ptr) AccessChain 28 30 33: 24(fvec2) Load 32 35: 7(fvec4) ImageGather 23 33 34 Store 13(txval00) 35 42: 39 Load 41(g_tTex2di4) 43: 18 Load 20(g_sSamp) 45: 44 SampledImage 42 43 46: 31(ptr) AccessChain 28 30 47: 24(fvec2) Load 46 48: 36(ivec4) ImageGather 45 47 34 Store 38(txval01) 48 56: 53 Load 55(g_tTex2du4) 57: 18 Load 20(g_sSamp) 59: 58 SampledImage 56 57 60: 31(ptr) AccessChain 28 30 61: 24(fvec2) Load 60 62: 50(ivec4) ImageGather 59 61 34 Store 52(txval02) 62 64: 14 Load 16(g_tTex2df4) 65: 18 Load 20(g_sSamp) 66: 22 SampledImage 64 65 67: 31(ptr) AccessChain 28 30 68: 24(fvec2) Load 67 69: 7(fvec4) ImageGather 66 68 30 Store 63(txval10) 69 71: 39 Load 41(g_tTex2di4) 72: 18 Load 20(g_sSamp) 73: 44 SampledImage 71 72 74: 31(ptr) AccessChain 28 30 75: 24(fvec2) Load 74 76: 36(ivec4) ImageGather 73 75 30 Store 70(txval11) 76 78: 53 Load 55(g_tTex2du4) 79: 18 Load 20(g_sSamp) 80: 58 SampledImage 78 79 81: 31(ptr) AccessChain 28 30 82: 24(fvec2) Load 81 83: 50(ivec4) ImageGather 80 82 30 Store 77(txval12) 83 85: 14 Load 16(g_tTex2df4) 86: 18 Load 20(g_sSamp) 87: 22 SampledImage 85 86 88: 31(ptr) AccessChain 28 30 89: 24(fvec2) Load 88 91: 7(fvec4) ImageGather 87 89 90 Store 84(txval20) 91 93: 39 Load 41(g_tTex2di4) 94: 18 Load 20(g_sSamp) 95: 44 SampledImage 93 94 96: 31(ptr) AccessChain 28 30 97: 24(fvec2) Load 96 98: 36(ivec4) ImageGather 95 97 90 Store 92(txval21) 98 100: 53 Load 55(g_tTex2du4) 101: 18 Load 20(g_sSamp) 102: 58 SampledImage 100 101 103: 31(ptr) AccessChain 28 30 104: 24(fvec2) Load 103 105: 50(ivec4) ImageGather 102 104 90 Store 99(txval22) 105 107: 14 Load 16(g_tTex2df4) 108: 18 Load 20(g_sSamp) 109: 22 SampledImage 107 108 110: 31(ptr) AccessChain 28 30 111: 24(fvec2) Load 110 113: 7(fvec4) ImageGather 109 111 112 Store 106(txval30) 113 115: 39 Load 41(g_tTex2di4) 116: 18 Load 20(g_sSamp) 117: 44 SampledImage 115 116 118: 31(ptr) AccessChain 28 30 119: 24(fvec2) Load 118 120: 36(ivec4) ImageGather 117 119 112 Store 114(txval31) 120 122: 53 Load 55(g_tTex2du4) 123: 18 Load 20(g_sSamp) 124: 58 SampledImage 122 123 125: 31(ptr) AccessChain 28 30 126: 24(fvec2) Load 125 127: 50(ivec4) ImageGather 124 126 112 Store 121(txval32) 127 132: 129 Load 131(g_tTexcdf4) 133: 18 Load 20(g_sSamp) 135: 134 SampledImage 132 133 137: 136(ptr) AccessChain 28 90 138: 25(fvec3) Load 137 139: 7(fvec4) ImageGather 135 138 34 Store 128(txval40) 139 144: 141 Load 143(g_tTexcdi4) 145: 18 Load 20(g_sSamp) 147: 146 SampledImage 144 145 148: 136(ptr) AccessChain 28 90 149: 25(fvec3) Load 148 150: 36(ivec4) ImageGather 147 149 34 Store 140(txval41) 150 155: 152 Load 154(g_tTexcdu4) 156: 18 Load 20(g_sSamp) 158: 157 SampledImage 155 156 159: 136(ptr) AccessChain 28 90 160: 25(fvec3) Load 159 161: 50(ivec4) ImageGather 158 160 34 Store 151(txval42) 161 163: 129 Load 131(g_tTexcdf4) 164: 18 Load 20(g_sSamp) 165: 134 SampledImage 163 164 166: 136(ptr) AccessChain 28 90 167: 25(fvec3) Load 166 168: 7(fvec4) ImageGather 165 167 30 Store 162(txval50) 168 170: 141 Load 143(g_tTexcdi4) 171: 18 Load 20(g_sSamp) 172: 146 SampledImage 170 171 173: 136(ptr) AccessChain 28 90 174: 25(fvec3) Load 173 175: 36(ivec4) ImageGather 172 174 30 Store 169(txval51) 175 177: 152 Load 154(g_tTexcdu4) 178: 18 Load 20(g_sSamp) 179: 157 SampledImage 177 178 180: 136(ptr) AccessChain 28 90 181: 25(fvec3) Load 180 182: 50(ivec4) ImageGather 179 181 30 Store 176(txval52) 182 184: 129 Load 131(g_tTexcdf4) 185: 18 Load 20(g_sSamp) 186: 134 SampledImage 184 185 187: 136(ptr) AccessChain 28 90 188: 25(fvec3) Load 187 189: 7(fvec4) ImageGather 186 188 90 Store 183(txval60) 189 191: 141 Load 143(g_tTexcdi4) 192: 18 Load 20(g_sSamp) 193: 146 SampledImage 191 192 194: 136(ptr) AccessChain 28 90 195: 25(fvec3) Load 194 196: 36(ivec4) ImageGather 193 195 90 Store 190(txval61) 196 198: 152 Load 154(g_tTexcdu4) 199: 18 Load 20(g_sSamp) 200: 157 SampledImage 198 199 201: 136(ptr) AccessChain 28 90 202: 25(fvec3) Load 201 203: 50(ivec4) ImageGather 200 202 90 Store 197(txval62) 203 205: 129 Load 131(g_tTexcdf4) 206: 18 Load 20(g_sSamp) 207: 134 SampledImage 205 206 208: 136(ptr) AccessChain 28 90 209: 25(fvec3) Load 208 210: 7(fvec4) ImageGather 207 209 112 Store 204(txval70) 210 212: 141 Load 143(g_tTexcdi4) 213: 18 Load 20(g_sSamp) 214: 146 SampledImage 212 213 215: 136(ptr) AccessChain 28 90 216: 25(fvec3) Load 215 217: 36(ivec4) ImageGather 214 216 112 Store 211(txval71) 217 219: 152 Load 154(g_tTexcdu4) 220: 18 Load 20(g_sSamp) 221: 157 SampledImage 219 220 222: 136(ptr) AccessChain 28 90 223: 25(fvec3) Load 222 224: 50(ivec4) ImageGather 221 223 112 Store 218(txval72) 224 229: 12(ptr) AccessChain 226(psout) 34 Store 229 228 231: 230(ptr) AccessChain 226(psout) 30 Store 231 227 232:8(PS_OUTPUT) Load 226(psout) ReturnValue 232 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out000066400000000000000000004304571506534232700250420ustar00rootroot00000000000000hlsl.gatherRGBA.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:39 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Function Parameters: 0:? Sequence 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of float) 0:46 'txval001' ( temp 4-component vector of float) 0:46 textureGatherOffset ( temp 4-component vector of float) 0:46 Construct combined texture-sampler ( temp sampler2D) 0:46 'g_tTex2df4' ( uniform texture2D) 0:46 'g_sSamp' (layout( binding=0) uniform sampler) 0:46 c2: direct index for structure ( uniform 2-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 1 (const uint) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 Constant: 0:46 0 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of int) 0:47 'txval011' ( temp 4-component vector of int) 0:47 textureGatherOffset ( temp 4-component vector of int) 0:47 Construct combined texture-sampler ( temp isampler2D) 0:47 'g_tTex2di4' ( uniform itexture2D) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 c2: direct index for structure ( uniform 2-component vector of float) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:47 Constant: 0:47 1 (const uint) 0:47 o2: direct index for structure ( uniform 2-component vector of int) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:47 Constant: 0:47 5 (const uint) 0:47 Constant: 0:47 0 (const int) 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of uint) 0:48 'txval021' ( temp 4-component vector of uint) 0:48 textureGatherOffset ( temp 4-component vector of uint) 0:48 Construct combined texture-sampler ( temp usampler2D) 0:48 'g_tTex2du4' ( uniform utexture2D) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 c2: direct index for structure ( uniform 2-component vector of float) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:48 Constant: 0:48 1 (const uint) 0:48 o2: direct index for structure ( uniform 2-component vector of int) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:48 Constant: 0:48 5 (const uint) 0:48 Constant: 0:48 0 (const int) 0:50 Sequence 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'txval004' ( temp 4-component vector of float) 0:50 textureGatherOffsets ( temp 4-component vector of float) 0:50 Construct combined texture-sampler ( temp sampler2D) 0:50 'g_tTex2df4' ( uniform texture2D) 0:50 'g_sSamp' (layout( binding=0) uniform sampler) 0:50 c2: direct index for structure ( uniform 2-component vector of float) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 1 (const uint) 0:50 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:50 o2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 5 (const uint) 0:50 o2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 5 (const uint) 0:50 o2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 5 (const uint) 0:50 o2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 5 (const uint) 0:50 Constant: 0:50 0 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of int) 0:51 'txval014' ( temp 4-component vector of int) 0:51 textureGatherOffsets ( temp 4-component vector of int) 0:51 Construct combined texture-sampler ( temp isampler2D) 0:51 'g_tTex2di4' ( uniform itexture2D) 0:51 'g_sSamp' (layout( binding=0) uniform sampler) 0:51 c2: direct index for structure ( uniform 2-component vector of float) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:51 o2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 5 (const uint) 0:51 o2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 5 (const uint) 0:51 o2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 5 (const uint) 0:51 o2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 5 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of uint) 0:52 'txval024' ( temp 4-component vector of uint) 0:52 textureGatherOffsets ( temp 4-component vector of uint) 0:52 Construct combined texture-sampler ( temp usampler2D) 0:52 'g_tTex2du4' ( uniform utexture2D) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 c2: direct index for structure ( uniform 2-component vector of float) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:52 o2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 5 (const uint) 0:52 o2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 5 (const uint) 0:52 o2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 5 (const uint) 0:52 o2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 5 (const uint) 0:52 Constant: 0:52 0 (const int) 0:62 Sequence 0:62 move second child to first child ( temp 4-component vector of float) 0:62 'txval101' ( temp 4-component vector of float) 0:62 textureGatherOffset ( temp 4-component vector of float) 0:62 Construct combined texture-sampler ( temp sampler2D) 0:62 'g_tTex2df4' ( uniform texture2D) 0:62 'g_sSamp' (layout( binding=0) uniform sampler) 0:62 c2: direct index for structure ( uniform 2-component vector of float) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 1 (const uint) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 Constant: 0:62 1 (const int) 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of int) 0:63 'txval111' ( temp 4-component vector of int) 0:63 textureGatherOffset ( temp 4-component vector of int) 0:63 Construct combined texture-sampler ( temp isampler2D) 0:63 'g_tTex2di4' ( uniform itexture2D) 0:63 'g_sSamp' (layout( binding=0) uniform sampler) 0:63 c2: direct index for structure ( uniform 2-component vector of float) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 1 (const uint) 0:63 o2: direct index for structure ( uniform 2-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 5 (const uint) 0:63 Constant: 0:63 1 (const int) 0:64 Sequence 0:64 move second child to first child ( temp 4-component vector of uint) 0:64 'txval121' ( temp 4-component vector of uint) 0:64 textureGatherOffset ( temp 4-component vector of uint) 0:64 Construct combined texture-sampler ( temp usampler2D) 0:64 'g_tTex2du4' ( uniform utexture2D) 0:64 'g_sSamp' (layout( binding=0) uniform sampler) 0:64 c2: direct index for structure ( uniform 2-component vector of float) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:64 Constant: 0:64 1 (const uint) 0:64 o2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:64 Constant: 0:64 5 (const uint) 0:64 Constant: 0:64 1 (const int) 0:66 Sequence 0:66 move second child to first child ( temp 4-component vector of float) 0:66 'txval104' ( temp 4-component vector of float) 0:66 textureGatherOffsets ( temp 4-component vector of float) 0:66 Construct combined texture-sampler ( temp sampler2D) 0:66 'g_tTex2df4' ( uniform texture2D) 0:66 'g_sSamp' (layout( binding=0) uniform sampler) 0:66 c2: direct index for structure ( uniform 2-component vector of float) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 1 (const uint) 0:66 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:66 o2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 5 (const uint) 0:66 o2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 5 (const uint) 0:66 o2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 5 (const uint) 0:66 o2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 5 (const uint) 0:66 Constant: 0:66 1 (const int) 0:67 Sequence 0:67 move second child to first child ( temp 4-component vector of int) 0:67 'txval114' ( temp 4-component vector of int) 0:67 textureGatherOffsets ( temp 4-component vector of int) 0:67 Construct combined texture-sampler ( temp isampler2D) 0:67 'g_tTex2di4' ( uniform itexture2D) 0:67 'g_sSamp' (layout( binding=0) uniform sampler) 0:67 c2: direct index for structure ( uniform 2-component vector of float) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 1 (const uint) 0:67 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:67 o2: direct index for structure ( uniform 2-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 5 (const uint) 0:67 o2: direct index for structure ( uniform 2-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 5 (const uint) 0:67 o2: direct index for structure ( uniform 2-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 5 (const uint) 0:67 o2: direct index for structure ( uniform 2-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 5 (const uint) 0:67 Constant: 0:67 1 (const int) 0:68 Sequence 0:68 move second child to first child ( temp 4-component vector of uint) 0:68 'txval124' ( temp 4-component vector of uint) 0:68 textureGatherOffsets ( temp 4-component vector of uint) 0:68 Construct combined texture-sampler ( temp usampler2D) 0:68 'g_tTex2du4' ( uniform utexture2D) 0:68 'g_sSamp' (layout( binding=0) uniform sampler) 0:68 c2: direct index for structure ( uniform 2-component vector of float) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 1 (const uint) 0:68 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:68 o2: direct index for structure ( uniform 2-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 5 (const uint) 0:68 o2: direct index for structure ( uniform 2-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 5 (const uint) 0:68 o2: direct index for structure ( uniform 2-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 5 (const uint) 0:68 o2: direct index for structure ( uniform 2-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 5 (const uint) 0:68 Constant: 0:68 1 (const int) 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of float) 0:78 'txval201' ( temp 4-component vector of float) 0:78 textureGatherOffset ( temp 4-component vector of float) 0:78 Construct combined texture-sampler ( temp sampler2D) 0:78 'g_tTex2df4' ( uniform texture2D) 0:78 'g_sSamp' (layout( binding=0) uniform sampler) 0:78 c2: direct index for structure ( uniform 2-component vector of float) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 1 (const uint) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 Constant: 0:78 2 (const int) 0:79 Sequence 0:79 move second child to first child ( temp 4-component vector of int) 0:79 'txval211' ( temp 4-component vector of int) 0:79 textureGatherOffset ( temp 4-component vector of int) 0:79 Construct combined texture-sampler ( temp isampler2D) 0:79 'g_tTex2di4' ( uniform itexture2D) 0:79 'g_sSamp' (layout( binding=0) uniform sampler) 0:79 c2: direct index for structure ( uniform 2-component vector of float) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:79 Constant: 0:79 1 (const uint) 0:79 o2: direct index for structure ( uniform 2-component vector of int) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:79 Constant: 0:79 5 (const uint) 0:79 Constant: 0:79 2 (const int) 0:80 Sequence 0:80 move second child to first child ( temp 4-component vector of uint) 0:80 'txval221' ( temp 4-component vector of uint) 0:80 textureGatherOffset ( temp 4-component vector of uint) 0:80 Construct combined texture-sampler ( temp usampler2D) 0:80 'g_tTex2du4' ( uniform utexture2D) 0:80 'g_sSamp' (layout( binding=0) uniform sampler) 0:80 c2: direct index for structure ( uniform 2-component vector of float) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:80 Constant: 0:80 1 (const uint) 0:80 o2: direct index for structure ( uniform 2-component vector of int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:80 Constant: 0:80 5 (const uint) 0:80 Constant: 0:80 2 (const int) 0:82 Sequence 0:82 move second child to first child ( temp 4-component vector of float) 0:82 'txval204' ( temp 4-component vector of float) 0:82 textureGatherOffsets ( temp 4-component vector of float) 0:82 Construct combined texture-sampler ( temp sampler2D) 0:82 'g_tTex2df4' ( uniform texture2D) 0:82 'g_sSamp' (layout( binding=0) uniform sampler) 0:82 c2: direct index for structure ( uniform 2-component vector of float) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 1 (const uint) 0:82 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:82 o2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 5 (const uint) 0:82 o2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 5 (const uint) 0:82 o2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 5 (const uint) 0:82 o2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 5 (const uint) 0:82 Constant: 0:82 2 (const int) 0:83 Sequence 0:83 move second child to first child ( temp 4-component vector of int) 0:83 'txval214' ( temp 4-component vector of int) 0:83 textureGatherOffsets ( temp 4-component vector of int) 0:83 Construct combined texture-sampler ( temp isampler2D) 0:83 'g_tTex2di4' ( uniform itexture2D) 0:83 'g_sSamp' (layout( binding=0) uniform sampler) 0:83 c2: direct index for structure ( uniform 2-component vector of float) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 1 (const uint) 0:83 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:83 o2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 5 (const uint) 0:83 o2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 5 (const uint) 0:83 o2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 5 (const uint) 0:83 o2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 5 (const uint) 0:83 Constant: 0:83 2 (const int) 0:84 Sequence 0:84 move second child to first child ( temp 4-component vector of uint) 0:84 'txval224' ( temp 4-component vector of uint) 0:84 textureGatherOffsets ( temp 4-component vector of uint) 0:84 Construct combined texture-sampler ( temp usampler2D) 0:84 'g_tTex2du4' ( uniform utexture2D) 0:84 'g_sSamp' (layout( binding=0) uniform sampler) 0:84 c2: direct index for structure ( uniform 2-component vector of float) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 1 (const uint) 0:84 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:84 o2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 5 (const uint) 0:84 o2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 5 (const uint) 0:84 o2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 5 (const uint) 0:84 o2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 5 (const uint) 0:84 Constant: 0:84 2 (const int) 0:94 Sequence 0:94 move second child to first child ( temp 4-component vector of float) 0:94 'txval301' ( temp 4-component vector of float) 0:94 textureGatherOffset ( temp 4-component vector of float) 0:94 Construct combined texture-sampler ( temp sampler2D) 0:94 'g_tTex2df4' ( uniform texture2D) 0:94 'g_sSamp' (layout( binding=0) uniform sampler) 0:94 c2: direct index for structure ( uniform 2-component vector of float) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 1 (const uint) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 Constant: 0:94 3 (const int) 0:95 Sequence 0:95 move second child to first child ( temp 4-component vector of int) 0:95 'txval311' ( temp 4-component vector of int) 0:95 textureGatherOffset ( temp 4-component vector of int) 0:95 Construct combined texture-sampler ( temp isampler2D) 0:95 'g_tTex2di4' ( uniform itexture2D) 0:95 'g_sSamp' (layout( binding=0) uniform sampler) 0:95 c2: direct index for structure ( uniform 2-component vector of float) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:95 Constant: 0:95 1 (const uint) 0:95 o2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:95 Constant: 0:95 5 (const uint) 0:95 Constant: 0:95 3 (const int) 0:96 Sequence 0:96 move second child to first child ( temp 4-component vector of uint) 0:96 'txval321' ( temp 4-component vector of uint) 0:96 textureGatherOffset ( temp 4-component vector of uint) 0:96 Construct combined texture-sampler ( temp usampler2D) 0:96 'g_tTex2du4' ( uniform utexture2D) 0:96 'g_sSamp' (layout( binding=0) uniform sampler) 0:96 c2: direct index for structure ( uniform 2-component vector of float) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:96 Constant: 0:96 1 (const uint) 0:96 o2: direct index for structure ( uniform 2-component vector of int) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:96 Constant: 0:96 5 (const uint) 0:96 Constant: 0:96 3 (const int) 0:98 Sequence 0:98 move second child to first child ( temp 4-component vector of float) 0:98 'txval304' ( temp 4-component vector of float) 0:98 textureGatherOffsets ( temp 4-component vector of float) 0:98 Construct combined texture-sampler ( temp sampler2D) 0:98 'g_tTex2df4' ( uniform texture2D) 0:98 'g_sSamp' (layout( binding=0) uniform sampler) 0:98 c2: direct index for structure ( uniform 2-component vector of float) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 1 (const uint) 0:98 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:98 o2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 5 (const uint) 0:98 o2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 5 (const uint) 0:98 o2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 5 (const uint) 0:98 o2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 5 (const uint) 0:98 Constant: 0:98 3 (const int) 0:99 Sequence 0:99 move second child to first child ( temp 4-component vector of int) 0:99 'txval314' ( temp 4-component vector of int) 0:99 textureGatherOffsets ( temp 4-component vector of int) 0:99 Construct combined texture-sampler ( temp isampler2D) 0:99 'g_tTex2di4' ( uniform itexture2D) 0:99 'g_sSamp' (layout( binding=0) uniform sampler) 0:99 c2: direct index for structure ( uniform 2-component vector of float) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 1 (const uint) 0:99 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:99 o2: direct index for structure ( uniform 2-component vector of int) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 5 (const uint) 0:99 o2: direct index for structure ( uniform 2-component vector of int) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 5 (const uint) 0:99 o2: direct index for structure ( uniform 2-component vector of int) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 5 (const uint) 0:99 o2: direct index for structure ( uniform 2-component vector of int) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 5 (const uint) 0:99 Constant: 0:99 3 (const int) 0:100 Sequence 0:100 move second child to first child ( temp 4-component vector of uint) 0:100 'txval324' ( temp 4-component vector of uint) 0:100 textureGatherOffsets ( temp 4-component vector of uint) 0:100 Construct combined texture-sampler ( temp usampler2D) 0:100 'g_tTex2du4' ( uniform utexture2D) 0:100 'g_sSamp' (layout( binding=0) uniform sampler) 0:100 c2: direct index for structure ( uniform 2-component vector of float) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 1 (const uint) 0:100 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:100 o2: direct index for structure ( uniform 2-component vector of int) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 5 (const uint) 0:100 o2: direct index for structure ( uniform 2-component vector of int) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 5 (const uint) 0:100 o2: direct index for structure ( uniform 2-component vector of int) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 5 (const uint) 0:100 o2: direct index for structure ( uniform 2-component vector of int) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 5 (const uint) 0:100 Constant: 0:100 3 (const int) 0:112 move second child to first child ( temp 4-component vector of float) 0:112 Color: direct index for structure ( temp 4-component vector of float) 0:112 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1.000000 0:112 1.000000 0:112 1.000000 0:112 1.000000 0:113 move second child to first child ( temp float) 0:113 Depth: direct index for structure ( temp float) 0:113 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 1.000000 0:115 Branch: Return with expression 0:115 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Function Definition: main( ( temp void) 0:39 Function Parameters: 0:? Sequence 0:39 Sequence 0:39 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:39 Depth: direct index for structure ( temp float) 0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:39 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Function Parameters: 0:? Sequence 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of float) 0:46 'txval001' ( temp 4-component vector of float) 0:46 textureGatherOffset ( temp 4-component vector of float) 0:46 Construct combined texture-sampler ( temp sampler2D) 0:46 'g_tTex2df4' ( uniform texture2D) 0:46 'g_sSamp' (layout( binding=0) uniform sampler) 0:46 c2: direct index for structure ( uniform 2-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 1 (const uint) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 Constant: 0:46 0 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of int) 0:47 'txval011' ( temp 4-component vector of int) 0:47 textureGatherOffset ( temp 4-component vector of int) 0:47 Construct combined texture-sampler ( temp isampler2D) 0:47 'g_tTex2di4' ( uniform itexture2D) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 c2: direct index for structure ( uniform 2-component vector of float) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:47 Constant: 0:47 1 (const uint) 0:47 o2: direct index for structure ( uniform 2-component vector of int) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:47 Constant: 0:47 5 (const uint) 0:47 Constant: 0:47 0 (const int) 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of uint) 0:48 'txval021' ( temp 4-component vector of uint) 0:48 textureGatherOffset ( temp 4-component vector of uint) 0:48 Construct combined texture-sampler ( temp usampler2D) 0:48 'g_tTex2du4' ( uniform utexture2D) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 c2: direct index for structure ( uniform 2-component vector of float) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:48 Constant: 0:48 1 (const uint) 0:48 o2: direct index for structure ( uniform 2-component vector of int) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:48 Constant: 0:48 5 (const uint) 0:48 Constant: 0:48 0 (const int) 0:50 Sequence 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'txval004' ( temp 4-component vector of float) 0:50 textureGatherOffsets ( temp 4-component vector of float) 0:50 Construct combined texture-sampler ( temp sampler2D) 0:50 'g_tTex2df4' ( uniform texture2D) 0:50 'g_sSamp' (layout( binding=0) uniform sampler) 0:50 c2: direct index for structure ( uniform 2-component vector of float) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 1 (const uint) 0:50 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:50 o2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 5 (const uint) 0:50 o2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 5 (const uint) 0:50 o2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 5 (const uint) 0:50 o2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 5 (const uint) 0:50 Constant: 0:50 0 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of int) 0:51 'txval014' ( temp 4-component vector of int) 0:51 textureGatherOffsets ( temp 4-component vector of int) 0:51 Construct combined texture-sampler ( temp isampler2D) 0:51 'g_tTex2di4' ( uniform itexture2D) 0:51 'g_sSamp' (layout( binding=0) uniform sampler) 0:51 c2: direct index for structure ( uniform 2-component vector of float) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:51 o2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 5 (const uint) 0:51 o2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 5 (const uint) 0:51 o2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 5 (const uint) 0:51 o2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 5 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of uint) 0:52 'txval024' ( temp 4-component vector of uint) 0:52 textureGatherOffsets ( temp 4-component vector of uint) 0:52 Construct combined texture-sampler ( temp usampler2D) 0:52 'g_tTex2du4' ( uniform utexture2D) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 c2: direct index for structure ( uniform 2-component vector of float) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:52 o2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 5 (const uint) 0:52 o2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 5 (const uint) 0:52 o2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 5 (const uint) 0:52 o2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 5 (const uint) 0:52 Constant: 0:52 0 (const int) 0:62 Sequence 0:62 move second child to first child ( temp 4-component vector of float) 0:62 'txval101' ( temp 4-component vector of float) 0:62 textureGatherOffset ( temp 4-component vector of float) 0:62 Construct combined texture-sampler ( temp sampler2D) 0:62 'g_tTex2df4' ( uniform texture2D) 0:62 'g_sSamp' (layout( binding=0) uniform sampler) 0:62 c2: direct index for structure ( uniform 2-component vector of float) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 1 (const uint) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 Constant: 0:62 1 (const int) 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of int) 0:63 'txval111' ( temp 4-component vector of int) 0:63 textureGatherOffset ( temp 4-component vector of int) 0:63 Construct combined texture-sampler ( temp isampler2D) 0:63 'g_tTex2di4' ( uniform itexture2D) 0:63 'g_sSamp' (layout( binding=0) uniform sampler) 0:63 c2: direct index for structure ( uniform 2-component vector of float) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 1 (const uint) 0:63 o2: direct index for structure ( uniform 2-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 5 (const uint) 0:63 Constant: 0:63 1 (const int) 0:64 Sequence 0:64 move second child to first child ( temp 4-component vector of uint) 0:64 'txval121' ( temp 4-component vector of uint) 0:64 textureGatherOffset ( temp 4-component vector of uint) 0:64 Construct combined texture-sampler ( temp usampler2D) 0:64 'g_tTex2du4' ( uniform utexture2D) 0:64 'g_sSamp' (layout( binding=0) uniform sampler) 0:64 c2: direct index for structure ( uniform 2-component vector of float) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:64 Constant: 0:64 1 (const uint) 0:64 o2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:64 Constant: 0:64 5 (const uint) 0:64 Constant: 0:64 1 (const int) 0:66 Sequence 0:66 move second child to first child ( temp 4-component vector of float) 0:66 'txval104' ( temp 4-component vector of float) 0:66 textureGatherOffsets ( temp 4-component vector of float) 0:66 Construct combined texture-sampler ( temp sampler2D) 0:66 'g_tTex2df4' ( uniform texture2D) 0:66 'g_sSamp' (layout( binding=0) uniform sampler) 0:66 c2: direct index for structure ( uniform 2-component vector of float) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 1 (const uint) 0:66 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:66 o2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 5 (const uint) 0:66 o2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 5 (const uint) 0:66 o2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 5 (const uint) 0:66 o2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 5 (const uint) 0:66 Constant: 0:66 1 (const int) 0:67 Sequence 0:67 move second child to first child ( temp 4-component vector of int) 0:67 'txval114' ( temp 4-component vector of int) 0:67 textureGatherOffsets ( temp 4-component vector of int) 0:67 Construct combined texture-sampler ( temp isampler2D) 0:67 'g_tTex2di4' ( uniform itexture2D) 0:67 'g_sSamp' (layout( binding=0) uniform sampler) 0:67 c2: direct index for structure ( uniform 2-component vector of float) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 1 (const uint) 0:67 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:67 o2: direct index for structure ( uniform 2-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 5 (const uint) 0:67 o2: direct index for structure ( uniform 2-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 5 (const uint) 0:67 o2: direct index for structure ( uniform 2-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 5 (const uint) 0:67 o2: direct index for structure ( uniform 2-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 5 (const uint) 0:67 Constant: 0:67 1 (const int) 0:68 Sequence 0:68 move second child to first child ( temp 4-component vector of uint) 0:68 'txval124' ( temp 4-component vector of uint) 0:68 textureGatherOffsets ( temp 4-component vector of uint) 0:68 Construct combined texture-sampler ( temp usampler2D) 0:68 'g_tTex2du4' ( uniform utexture2D) 0:68 'g_sSamp' (layout( binding=0) uniform sampler) 0:68 c2: direct index for structure ( uniform 2-component vector of float) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 1 (const uint) 0:68 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:68 o2: direct index for structure ( uniform 2-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 5 (const uint) 0:68 o2: direct index for structure ( uniform 2-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 5 (const uint) 0:68 o2: direct index for structure ( uniform 2-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 5 (const uint) 0:68 o2: direct index for structure ( uniform 2-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 5 (const uint) 0:68 Constant: 0:68 1 (const int) 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of float) 0:78 'txval201' ( temp 4-component vector of float) 0:78 textureGatherOffset ( temp 4-component vector of float) 0:78 Construct combined texture-sampler ( temp sampler2D) 0:78 'g_tTex2df4' ( uniform texture2D) 0:78 'g_sSamp' (layout( binding=0) uniform sampler) 0:78 c2: direct index for structure ( uniform 2-component vector of float) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 1 (const uint) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 Constant: 0:78 2 (const int) 0:79 Sequence 0:79 move second child to first child ( temp 4-component vector of int) 0:79 'txval211' ( temp 4-component vector of int) 0:79 textureGatherOffset ( temp 4-component vector of int) 0:79 Construct combined texture-sampler ( temp isampler2D) 0:79 'g_tTex2di4' ( uniform itexture2D) 0:79 'g_sSamp' (layout( binding=0) uniform sampler) 0:79 c2: direct index for structure ( uniform 2-component vector of float) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:79 Constant: 0:79 1 (const uint) 0:79 o2: direct index for structure ( uniform 2-component vector of int) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:79 Constant: 0:79 5 (const uint) 0:79 Constant: 0:79 2 (const int) 0:80 Sequence 0:80 move second child to first child ( temp 4-component vector of uint) 0:80 'txval221' ( temp 4-component vector of uint) 0:80 textureGatherOffset ( temp 4-component vector of uint) 0:80 Construct combined texture-sampler ( temp usampler2D) 0:80 'g_tTex2du4' ( uniform utexture2D) 0:80 'g_sSamp' (layout( binding=0) uniform sampler) 0:80 c2: direct index for structure ( uniform 2-component vector of float) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:80 Constant: 0:80 1 (const uint) 0:80 o2: direct index for structure ( uniform 2-component vector of int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:80 Constant: 0:80 5 (const uint) 0:80 Constant: 0:80 2 (const int) 0:82 Sequence 0:82 move second child to first child ( temp 4-component vector of float) 0:82 'txval204' ( temp 4-component vector of float) 0:82 textureGatherOffsets ( temp 4-component vector of float) 0:82 Construct combined texture-sampler ( temp sampler2D) 0:82 'g_tTex2df4' ( uniform texture2D) 0:82 'g_sSamp' (layout( binding=0) uniform sampler) 0:82 c2: direct index for structure ( uniform 2-component vector of float) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 1 (const uint) 0:82 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:82 o2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 5 (const uint) 0:82 o2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 5 (const uint) 0:82 o2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 5 (const uint) 0:82 o2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:82 Constant: 0:82 5 (const uint) 0:82 Constant: 0:82 2 (const int) 0:83 Sequence 0:83 move second child to first child ( temp 4-component vector of int) 0:83 'txval214' ( temp 4-component vector of int) 0:83 textureGatherOffsets ( temp 4-component vector of int) 0:83 Construct combined texture-sampler ( temp isampler2D) 0:83 'g_tTex2di4' ( uniform itexture2D) 0:83 'g_sSamp' (layout( binding=0) uniform sampler) 0:83 c2: direct index for structure ( uniform 2-component vector of float) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 1 (const uint) 0:83 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:83 o2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 5 (const uint) 0:83 o2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 5 (const uint) 0:83 o2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 5 (const uint) 0:83 o2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:83 Constant: 0:83 5 (const uint) 0:83 Constant: 0:83 2 (const int) 0:84 Sequence 0:84 move second child to first child ( temp 4-component vector of uint) 0:84 'txval224' ( temp 4-component vector of uint) 0:84 textureGatherOffsets ( temp 4-component vector of uint) 0:84 Construct combined texture-sampler ( temp usampler2D) 0:84 'g_tTex2du4' ( uniform utexture2D) 0:84 'g_sSamp' (layout( binding=0) uniform sampler) 0:84 c2: direct index for structure ( uniform 2-component vector of float) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 1 (const uint) 0:84 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:84 o2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 5 (const uint) 0:84 o2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 5 (const uint) 0:84 o2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 5 (const uint) 0:84 o2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:84 Constant: 0:84 5 (const uint) 0:84 Constant: 0:84 2 (const int) 0:94 Sequence 0:94 move second child to first child ( temp 4-component vector of float) 0:94 'txval301' ( temp 4-component vector of float) 0:94 textureGatherOffset ( temp 4-component vector of float) 0:94 Construct combined texture-sampler ( temp sampler2D) 0:94 'g_tTex2df4' ( uniform texture2D) 0:94 'g_sSamp' (layout( binding=0) uniform sampler) 0:94 c2: direct index for structure ( uniform 2-component vector of float) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 1 (const uint) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 Constant: 0:94 3 (const int) 0:95 Sequence 0:95 move second child to first child ( temp 4-component vector of int) 0:95 'txval311' ( temp 4-component vector of int) 0:95 textureGatherOffset ( temp 4-component vector of int) 0:95 Construct combined texture-sampler ( temp isampler2D) 0:95 'g_tTex2di4' ( uniform itexture2D) 0:95 'g_sSamp' (layout( binding=0) uniform sampler) 0:95 c2: direct index for structure ( uniform 2-component vector of float) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:95 Constant: 0:95 1 (const uint) 0:95 o2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:95 Constant: 0:95 5 (const uint) 0:95 Constant: 0:95 3 (const int) 0:96 Sequence 0:96 move second child to first child ( temp 4-component vector of uint) 0:96 'txval321' ( temp 4-component vector of uint) 0:96 textureGatherOffset ( temp 4-component vector of uint) 0:96 Construct combined texture-sampler ( temp usampler2D) 0:96 'g_tTex2du4' ( uniform utexture2D) 0:96 'g_sSamp' (layout( binding=0) uniform sampler) 0:96 c2: direct index for structure ( uniform 2-component vector of float) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:96 Constant: 0:96 1 (const uint) 0:96 o2: direct index for structure ( uniform 2-component vector of int) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:96 Constant: 0:96 5 (const uint) 0:96 Constant: 0:96 3 (const int) 0:98 Sequence 0:98 move second child to first child ( temp 4-component vector of float) 0:98 'txval304' ( temp 4-component vector of float) 0:98 textureGatherOffsets ( temp 4-component vector of float) 0:98 Construct combined texture-sampler ( temp sampler2D) 0:98 'g_tTex2df4' ( uniform texture2D) 0:98 'g_sSamp' (layout( binding=0) uniform sampler) 0:98 c2: direct index for structure ( uniform 2-component vector of float) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 1 (const uint) 0:98 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:98 o2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 5 (const uint) 0:98 o2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 5 (const uint) 0:98 o2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 5 (const uint) 0:98 o2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:98 Constant: 0:98 5 (const uint) 0:98 Constant: 0:98 3 (const int) 0:99 Sequence 0:99 move second child to first child ( temp 4-component vector of int) 0:99 'txval314' ( temp 4-component vector of int) 0:99 textureGatherOffsets ( temp 4-component vector of int) 0:99 Construct combined texture-sampler ( temp isampler2D) 0:99 'g_tTex2di4' ( uniform itexture2D) 0:99 'g_sSamp' (layout( binding=0) uniform sampler) 0:99 c2: direct index for structure ( uniform 2-component vector of float) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 1 (const uint) 0:99 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:99 o2: direct index for structure ( uniform 2-component vector of int) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 5 (const uint) 0:99 o2: direct index for structure ( uniform 2-component vector of int) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 5 (const uint) 0:99 o2: direct index for structure ( uniform 2-component vector of int) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 5 (const uint) 0:99 o2: direct index for structure ( uniform 2-component vector of int) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:99 Constant: 0:99 5 (const uint) 0:99 Constant: 0:99 3 (const int) 0:100 Sequence 0:100 move second child to first child ( temp 4-component vector of uint) 0:100 'txval324' ( temp 4-component vector of uint) 0:100 textureGatherOffsets ( temp 4-component vector of uint) 0:100 Construct combined texture-sampler ( temp usampler2D) 0:100 'g_tTex2du4' ( uniform utexture2D) 0:100 'g_sSamp' (layout( binding=0) uniform sampler) 0:100 c2: direct index for structure ( uniform 2-component vector of float) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 1 (const uint) 0:100 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:100 o2: direct index for structure ( uniform 2-component vector of int) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 5 (const uint) 0:100 o2: direct index for structure ( uniform 2-component vector of int) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 5 (const uint) 0:100 o2: direct index for structure ( uniform 2-component vector of int) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 5 (const uint) 0:100 o2: direct index for structure ( uniform 2-component vector of int) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:100 Constant: 0:100 5 (const uint) 0:100 Constant: 0:100 3 (const int) 0:112 move second child to first child ( temp 4-component vector of float) 0:112 Color: direct index for structure ( temp 4-component vector of float) 0:112 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1.000000 0:112 1.000000 0:112 1.000000 0:112 1.000000 0:113 move second child to first child ( temp float) 0:113 Depth: direct index for structure ( temp float) 0:113 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:113 Constant: 0:113 1 (const int) 0:113 Constant: 0:113 1.000000 0:115 Branch: Return with expression 0:115 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Function Definition: main( ( temp void) 0:39 Function Parameters: 0:? Sequence 0:39 Sequence 0:39 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:39 Depth: direct index for structure ( temp float) 0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 399 Capability Shader Capability ImageGatherExtended Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 363 367 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval001" Name 16 "g_tTex2df4" Name 20 "g_sSamp" Name 30 "$Global" MemberName 30($Global) 0 "c1" MemberName 30($Global) 1 "c2" MemberName 30($Global) 2 "c3" MemberName 30($Global) 3 "c4" MemberName 30($Global) 4 "o1" MemberName 30($Global) 5 "o2" MemberName 30($Global) 6 "o3" MemberName 30($Global) 7 "o4" Name 32 "" Name 44 "txval011" Name 47 "g_tTex2di4" Name 60 "txval021" Name 63 "g_tTex2du4" Name 73 "txval004" Name 91 "txval014" Name 107 "txval024" Name 123 "txval101" Name 132 "txval111" Name 141 "txval121" Name 150 "txval104" Name 166 "txval114" Name 182 "txval124" Name 198 "txval201" Name 208 "txval211" Name 217 "txval221" Name 226 "txval204" Name 242 "txval214" Name 258 "txval224" Name 274 "txval301" Name 284 "txval311" Name 293 "txval321" Name 302 "txval304" Name 318 "txval314" Name 334 "txval324" Name 351 "psout" Name 360 "flattenTemp" Name 363 "@entryPointOutput.Color" Name 367 "@entryPointOutput.Depth" Name 370 "g_sSamp2d" Name 373 "g_tTex1df4a" Name 374 "g_tTex1df4" Name 377 "g_tTex1di4" Name 380 "g_tTex1du4" Name 383 "g_tTex3df4" Name 386 "g_tTex3di4" Name 389 "g_tTex3du4" Name 392 "g_tTexcdf4" Name 395 "g_tTexcdi4" Name 398 "g_tTexcdu4" Decorate 16(g_tTex2df4) Binding 2 Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 30($Global) Block MemberDecorate 30($Global) 0 Offset 0 MemberDecorate 30($Global) 1 Offset 8 MemberDecorate 30($Global) 2 Offset 16 MemberDecorate 30($Global) 3 Offset 32 MemberDecorate 30($Global) 4 Offset 48 MemberDecorate 30($Global) 5 Offset 56 MemberDecorate 30($Global) 6 Offset 64 MemberDecorate 30($Global) 7 Offset 80 Decorate 32 Binding 5 Decorate 32 DescriptorSet 0 Decorate 47(g_tTex2di4) Binding 3 Decorate 47(g_tTex2di4) DescriptorSet 0 Decorate 63(g_tTex2du4) Binding 4 Decorate 63(g_tTex2du4) DescriptorSet 0 Decorate 363(@entryPointOutput.Color) Location 0 Decorate 367(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 370(g_sSamp2d) Binding 0 Decorate 370(g_sSamp2d) DescriptorSet 0 Decorate 373(g_tTex1df4a) Binding 1 Decorate 373(g_tTex1df4a) DescriptorSet 0 Decorate 374(g_tTex1df4) Binding 0 Decorate 374(g_tTex1df4) DescriptorSet 0 Decorate 377(g_tTex1di4) Binding 0 Decorate 377(g_tTex1di4) DescriptorSet 0 Decorate 380(g_tTex1du4) Binding 0 Decorate 380(g_tTex1du4) DescriptorSet 0 Decorate 383(g_tTex3df4) Binding 0 Decorate 383(g_tTex3df4) DescriptorSet 0 Decorate 386(g_tTex3di4) Binding 0 Decorate 386(g_tTex3di4) DescriptorSet 0 Decorate 389(g_tTex3du4) Binding 0 Decorate 389(g_tTex3du4) DescriptorSet 0 Decorate 392(g_tTexcdf4) Binding 0 Decorate 392(g_tTexcdf4) DescriptorSet 0 Decorate 395(g_tTexcdi4) Binding 0 Decorate 395(g_tTexcdi4) DescriptorSet 0 Decorate 398(g_tTexcdu4) Binding 0 Decorate 398(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: TypeVector 6(float) 3 26: TypeInt 32 1 27: TypeVector 26(int) 2 28: TypeVector 26(int) 3 29: TypeVector 26(int) 4 30($Global): TypeStruct 6(float) 24(fvec2) 25(fvec3) 7(fvec4) 26(int) 27(ivec2) 28(ivec3) 29(ivec4) 31: TypePointer Uniform 30($Global) 32: 31(ptr) Variable Uniform 33: 26(int) Constant 1 34: TypePointer Uniform 24(fvec2) 37: 26(int) Constant 5 38: TypePointer Uniform 27(ivec2) 41: 26(int) Constant 0 43: TypePointer Function 29(ivec4) 45: TypeImage 26(int) 2D sampled format:Unknown 46: TypePointer UniformConstant 45 47(g_tTex2di4): 46(ptr) Variable UniformConstant 50: TypeSampledImage 45 57: TypeInt 32 0 58: TypeVector 57(int) 4 59: TypePointer Function 58(ivec4) 61: TypeImage 57(int) 2D sampled format:Unknown 62: TypePointer UniformConstant 61 63(g_tTex2du4): 62(ptr) Variable UniformConstant 66: TypeSampledImage 61 87: 57(int) Constant 4 88: TypeArray 27(ivec2) 87 206: 26(int) Constant 2 282: 26(int) Constant 3 350: TypePointer Function 8(PS_OUTPUT) 352: 6(float) Constant 1065353216 353: 7(fvec4) ConstantComposite 352 352 352 352 355: TypePointer Function 6(float) 362: TypePointer Output 7(fvec4) 363(@entryPointOutput.Color): 362(ptr) Variable Output 366: TypePointer Output 6(float) 367(@entryPointOutput.Depth): 366(ptr) Variable Output 370(g_sSamp2d): 19(ptr) Variable UniformConstant 371: TypeImage 6(float) 1D sampled format:Unknown 372: TypePointer UniformConstant 371 373(g_tTex1df4a): 372(ptr) Variable UniformConstant 374(g_tTex1df4): 372(ptr) Variable UniformConstant 375: TypeImage 26(int) 1D sampled format:Unknown 376: TypePointer UniformConstant 375 377(g_tTex1di4): 376(ptr) Variable UniformConstant 378: TypeImage 57(int) 1D sampled format:Unknown 379: TypePointer UniformConstant 378 380(g_tTex1du4): 379(ptr) Variable UniformConstant 381: TypeImage 6(float) 3D sampled format:Unknown 382: TypePointer UniformConstant 381 383(g_tTex3df4): 382(ptr) Variable UniformConstant 384: TypeImage 26(int) 3D sampled format:Unknown 385: TypePointer UniformConstant 384 386(g_tTex3di4): 385(ptr) Variable UniformConstant 387: TypeImage 57(int) 3D sampled format:Unknown 388: TypePointer UniformConstant 387 389(g_tTex3du4): 388(ptr) Variable UniformConstant 390: TypeImage 6(float) Cube sampled format:Unknown 391: TypePointer UniformConstant 390 392(g_tTexcdf4): 391(ptr) Variable UniformConstant 393: TypeImage 26(int) Cube sampled format:Unknown 394: TypePointer UniformConstant 393 395(g_tTexcdi4): 394(ptr) Variable UniformConstant 396: TypeImage 57(int) Cube sampled format:Unknown 397: TypePointer UniformConstant 396 398(g_tTexcdu4): 397(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 360(flattenTemp): 350(ptr) Variable Function 361:8(PS_OUTPUT) FunctionCall 10(@main() Store 360(flattenTemp) 361 364: 12(ptr) AccessChain 360(flattenTemp) 41 365: 7(fvec4) Load 364 Store 363(@entryPointOutput.Color) 365 368: 355(ptr) AccessChain 360(flattenTemp) 33 369: 6(float) Load 368 Store 367(@entryPointOutput.Depth) 369 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval001): 12(ptr) Variable Function 44(txval011): 43(ptr) Variable Function 60(txval021): 59(ptr) Variable Function 73(txval004): 12(ptr) Variable Function 91(txval014): 43(ptr) Variable Function 107(txval024): 59(ptr) Variable Function 123(txval101): 12(ptr) Variable Function 132(txval111): 43(ptr) Variable Function 141(txval121): 59(ptr) Variable Function 150(txval104): 12(ptr) Variable Function 166(txval114): 43(ptr) Variable Function 182(txval124): 59(ptr) Variable Function 198(txval201): 12(ptr) Variable Function 208(txval211): 43(ptr) Variable Function 217(txval221): 59(ptr) Variable Function 226(txval204): 12(ptr) Variable Function 242(txval214): 43(ptr) Variable Function 258(txval224): 59(ptr) Variable Function 274(txval301): 12(ptr) Variable Function 284(txval311): 43(ptr) Variable Function 293(txval321): 59(ptr) Variable Function 302(txval304): 12(ptr) Variable Function 318(txval314): 43(ptr) Variable Function 334(txval324): 59(ptr) Variable Function 351(psout): 350(ptr) Variable Function 17: 14 Load 16(g_tTex2df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 35: 34(ptr) AccessChain 32 33 36: 24(fvec2) Load 35 39: 38(ptr) AccessChain 32 37 40: 27(ivec2) Load 39 42: 7(fvec4) ImageGather 23 36 41 Offset 40 Store 13(txval001) 42 48: 45 Load 47(g_tTex2di4) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 52: 34(ptr) AccessChain 32 33 53: 24(fvec2) Load 52 54: 38(ptr) AccessChain 32 37 55: 27(ivec2) Load 54 56: 29(ivec4) ImageGather 51 53 41 Offset 55 Store 44(txval011) 56 64: 61 Load 63(g_tTex2du4) 65: 18 Load 20(g_sSamp) 67: 66 SampledImage 64 65 68: 34(ptr) AccessChain 32 33 69: 24(fvec2) Load 68 70: 38(ptr) AccessChain 32 37 71: 27(ivec2) Load 70 72: 58(ivec4) ImageGather 67 69 41 Offset 71 Store 60(txval021) 72 74: 14 Load 16(g_tTex2df4) 75: 18 Load 20(g_sSamp) 76: 22 SampledImage 74 75 77: 34(ptr) AccessChain 32 33 78: 24(fvec2) Load 77 79: 38(ptr) AccessChain 32 37 80: 27(ivec2) Load 79 81: 38(ptr) AccessChain 32 37 82: 27(ivec2) Load 81 83: 38(ptr) AccessChain 32 37 84: 27(ivec2) Load 83 85: 38(ptr) AccessChain 32 37 86: 27(ivec2) Load 85 89: 88 CompositeConstruct 80 82 84 86 90: 7(fvec4) ImageGather 76 78 41 ConstOffsets 89 Store 73(txval004) 90 92: 45 Load 47(g_tTex2di4) 93: 18 Load 20(g_sSamp) 94: 50 SampledImage 92 93 95: 34(ptr) AccessChain 32 33 96: 24(fvec2) Load 95 97: 38(ptr) AccessChain 32 37 98: 27(ivec2) Load 97 99: 38(ptr) AccessChain 32 37 100: 27(ivec2) Load 99 101: 38(ptr) AccessChain 32 37 102: 27(ivec2) Load 101 103: 38(ptr) AccessChain 32 37 104: 27(ivec2) Load 103 105: 88 CompositeConstruct 98 100 102 104 106: 29(ivec4) ImageGather 94 96 41 ConstOffsets 105 Store 91(txval014) 106 108: 61 Load 63(g_tTex2du4) 109: 18 Load 20(g_sSamp) 110: 66 SampledImage 108 109 111: 34(ptr) AccessChain 32 33 112: 24(fvec2) Load 111 113: 38(ptr) AccessChain 32 37 114: 27(ivec2) Load 113 115: 38(ptr) AccessChain 32 37 116: 27(ivec2) Load 115 117: 38(ptr) AccessChain 32 37 118: 27(ivec2) Load 117 119: 38(ptr) AccessChain 32 37 120: 27(ivec2) Load 119 121: 88 CompositeConstruct 114 116 118 120 122: 58(ivec4) ImageGather 110 112 41 ConstOffsets 121 Store 107(txval024) 122 124: 14 Load 16(g_tTex2df4) 125: 18 Load 20(g_sSamp) 126: 22 SampledImage 124 125 127: 34(ptr) AccessChain 32 33 128: 24(fvec2) Load 127 129: 38(ptr) AccessChain 32 37 130: 27(ivec2) Load 129 131: 7(fvec4) ImageGather 126 128 33 Offset 130 Store 123(txval101) 131 133: 45 Load 47(g_tTex2di4) 134: 18 Load 20(g_sSamp) 135: 50 SampledImage 133 134 136: 34(ptr) AccessChain 32 33 137: 24(fvec2) Load 136 138: 38(ptr) AccessChain 32 37 139: 27(ivec2) Load 138 140: 29(ivec4) ImageGather 135 137 33 Offset 139 Store 132(txval111) 140 142: 61 Load 63(g_tTex2du4) 143: 18 Load 20(g_sSamp) 144: 66 SampledImage 142 143 145: 34(ptr) AccessChain 32 33 146: 24(fvec2) Load 145 147: 38(ptr) AccessChain 32 37 148: 27(ivec2) Load 147 149: 58(ivec4) ImageGather 144 146 33 Offset 148 Store 141(txval121) 149 151: 14 Load 16(g_tTex2df4) 152: 18 Load 20(g_sSamp) 153: 22 SampledImage 151 152 154: 34(ptr) AccessChain 32 33 155: 24(fvec2) Load 154 156: 38(ptr) AccessChain 32 37 157: 27(ivec2) Load 156 158: 38(ptr) AccessChain 32 37 159: 27(ivec2) Load 158 160: 38(ptr) AccessChain 32 37 161: 27(ivec2) Load 160 162: 38(ptr) AccessChain 32 37 163: 27(ivec2) Load 162 164: 88 CompositeConstruct 157 159 161 163 165: 7(fvec4) ImageGather 153 155 33 ConstOffsets 164 Store 150(txval104) 165 167: 45 Load 47(g_tTex2di4) 168: 18 Load 20(g_sSamp) 169: 50 SampledImage 167 168 170: 34(ptr) AccessChain 32 33 171: 24(fvec2) Load 170 172: 38(ptr) AccessChain 32 37 173: 27(ivec2) Load 172 174: 38(ptr) AccessChain 32 37 175: 27(ivec2) Load 174 176: 38(ptr) AccessChain 32 37 177: 27(ivec2) Load 176 178: 38(ptr) AccessChain 32 37 179: 27(ivec2) Load 178 180: 88 CompositeConstruct 173 175 177 179 181: 29(ivec4) ImageGather 169 171 33 ConstOffsets 180 Store 166(txval114) 181 183: 61 Load 63(g_tTex2du4) 184: 18 Load 20(g_sSamp) 185: 66 SampledImage 183 184 186: 34(ptr) AccessChain 32 33 187: 24(fvec2) Load 186 188: 38(ptr) AccessChain 32 37 189: 27(ivec2) Load 188 190: 38(ptr) AccessChain 32 37 191: 27(ivec2) Load 190 192: 38(ptr) AccessChain 32 37 193: 27(ivec2) Load 192 194: 38(ptr) AccessChain 32 37 195: 27(ivec2) Load 194 196: 88 CompositeConstruct 189 191 193 195 197: 58(ivec4) ImageGather 185 187 33 ConstOffsets 196 Store 182(txval124) 197 199: 14 Load 16(g_tTex2df4) 200: 18 Load 20(g_sSamp) 201: 22 SampledImage 199 200 202: 34(ptr) AccessChain 32 33 203: 24(fvec2) Load 202 204: 38(ptr) AccessChain 32 37 205: 27(ivec2) Load 204 207: 7(fvec4) ImageGather 201 203 206 Offset 205 Store 198(txval201) 207 209: 45 Load 47(g_tTex2di4) 210: 18 Load 20(g_sSamp) 211: 50 SampledImage 209 210 212: 34(ptr) AccessChain 32 33 213: 24(fvec2) Load 212 214: 38(ptr) AccessChain 32 37 215: 27(ivec2) Load 214 216: 29(ivec4) ImageGather 211 213 206 Offset 215 Store 208(txval211) 216 218: 61 Load 63(g_tTex2du4) 219: 18 Load 20(g_sSamp) 220: 66 SampledImage 218 219 221: 34(ptr) AccessChain 32 33 222: 24(fvec2) Load 221 223: 38(ptr) AccessChain 32 37 224: 27(ivec2) Load 223 225: 58(ivec4) ImageGather 220 222 206 Offset 224 Store 217(txval221) 225 227: 14 Load 16(g_tTex2df4) 228: 18 Load 20(g_sSamp) 229: 22 SampledImage 227 228 230: 34(ptr) AccessChain 32 33 231: 24(fvec2) Load 230 232: 38(ptr) AccessChain 32 37 233: 27(ivec2) Load 232 234: 38(ptr) AccessChain 32 37 235: 27(ivec2) Load 234 236: 38(ptr) AccessChain 32 37 237: 27(ivec2) Load 236 238: 38(ptr) AccessChain 32 37 239: 27(ivec2) Load 238 240: 88 CompositeConstruct 233 235 237 239 241: 7(fvec4) ImageGather 229 231 206 ConstOffsets 240 Store 226(txval204) 241 243: 45 Load 47(g_tTex2di4) 244: 18 Load 20(g_sSamp) 245: 50 SampledImage 243 244 246: 34(ptr) AccessChain 32 33 247: 24(fvec2) Load 246 248: 38(ptr) AccessChain 32 37 249: 27(ivec2) Load 248 250: 38(ptr) AccessChain 32 37 251: 27(ivec2) Load 250 252: 38(ptr) AccessChain 32 37 253: 27(ivec2) Load 252 254: 38(ptr) AccessChain 32 37 255: 27(ivec2) Load 254 256: 88 CompositeConstruct 249 251 253 255 257: 29(ivec4) ImageGather 245 247 206 ConstOffsets 256 Store 242(txval214) 257 259: 61 Load 63(g_tTex2du4) 260: 18 Load 20(g_sSamp) 261: 66 SampledImage 259 260 262: 34(ptr) AccessChain 32 33 263: 24(fvec2) Load 262 264: 38(ptr) AccessChain 32 37 265: 27(ivec2) Load 264 266: 38(ptr) AccessChain 32 37 267: 27(ivec2) Load 266 268: 38(ptr) AccessChain 32 37 269: 27(ivec2) Load 268 270: 38(ptr) AccessChain 32 37 271: 27(ivec2) Load 270 272: 88 CompositeConstruct 265 267 269 271 273: 58(ivec4) ImageGather 261 263 206 ConstOffsets 272 Store 258(txval224) 273 275: 14 Load 16(g_tTex2df4) 276: 18 Load 20(g_sSamp) 277: 22 SampledImage 275 276 278: 34(ptr) AccessChain 32 33 279: 24(fvec2) Load 278 280: 38(ptr) AccessChain 32 37 281: 27(ivec2) Load 280 283: 7(fvec4) ImageGather 277 279 282 Offset 281 Store 274(txval301) 283 285: 45 Load 47(g_tTex2di4) 286: 18 Load 20(g_sSamp) 287: 50 SampledImage 285 286 288: 34(ptr) AccessChain 32 33 289: 24(fvec2) Load 288 290: 38(ptr) AccessChain 32 37 291: 27(ivec2) Load 290 292: 29(ivec4) ImageGather 287 289 282 Offset 291 Store 284(txval311) 292 294: 61 Load 63(g_tTex2du4) 295: 18 Load 20(g_sSamp) 296: 66 SampledImage 294 295 297: 34(ptr) AccessChain 32 33 298: 24(fvec2) Load 297 299: 38(ptr) AccessChain 32 37 300: 27(ivec2) Load 299 301: 58(ivec4) ImageGather 296 298 282 Offset 300 Store 293(txval321) 301 303: 14 Load 16(g_tTex2df4) 304: 18 Load 20(g_sSamp) 305: 22 SampledImage 303 304 306: 34(ptr) AccessChain 32 33 307: 24(fvec2) Load 306 308: 38(ptr) AccessChain 32 37 309: 27(ivec2) Load 308 310: 38(ptr) AccessChain 32 37 311: 27(ivec2) Load 310 312: 38(ptr) AccessChain 32 37 313: 27(ivec2) Load 312 314: 38(ptr) AccessChain 32 37 315: 27(ivec2) Load 314 316: 88 CompositeConstruct 309 311 313 315 317: 7(fvec4) ImageGather 305 307 282 ConstOffsets 316 Store 302(txval304) 317 319: 45 Load 47(g_tTex2di4) 320: 18 Load 20(g_sSamp) 321: 50 SampledImage 319 320 322: 34(ptr) AccessChain 32 33 323: 24(fvec2) Load 322 324: 38(ptr) AccessChain 32 37 325: 27(ivec2) Load 324 326: 38(ptr) AccessChain 32 37 327: 27(ivec2) Load 326 328: 38(ptr) AccessChain 32 37 329: 27(ivec2) Load 328 330: 38(ptr) AccessChain 32 37 331: 27(ivec2) Load 330 332: 88 CompositeConstruct 325 327 329 331 333: 29(ivec4) ImageGather 321 323 282 ConstOffsets 332 Store 318(txval314) 333 335: 61 Load 63(g_tTex2du4) 336: 18 Load 20(g_sSamp) 337: 66 SampledImage 335 336 338: 34(ptr) AccessChain 32 33 339: 24(fvec2) Load 338 340: 38(ptr) AccessChain 32 37 341: 27(ivec2) Load 340 342: 38(ptr) AccessChain 32 37 343: 27(ivec2) Load 342 344: 38(ptr) AccessChain 32 37 345: 27(ivec2) Load 344 346: 38(ptr) AccessChain 32 37 347: 27(ivec2) Load 346 348: 88 CompositeConstruct 341 343 345 347 349: 58(ivec4) ImageGather 337 339 282 ConstOffsets 348 Store 334(txval324) 349 354: 12(ptr) AccessChain 351(psout) 41 Store 354 353 356: 355(ptr) AccessChain 351(psout) 33 Store 356 352 357:8(PS_OUTPUT) Load 351(psout) ReturnValue 357 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out000066400000000000000000004264631506534232700261030ustar00rootroot00000000000000hlsl.gatherRGBA.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Function Parameters: 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'txval001' ( temp 4-component vector of float) 0:40 textureGatherOffset ( temp 4-component vector of float) 0:40 Construct combined texture-sampler ( temp sampler2DArray) 0:40 'g_tTex2df4a' ( uniform texture2DArray) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 c3: direct index for structure ( uniform 3-component vector of float) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:40 Constant: 0:40 2 (const uint) 0:40 o2: direct index for structure ( uniform 2-component vector of int) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:40 Constant: 0:40 5 (const uint) 0:40 Constant: 0:40 0 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of int) 0:41 'txval011' ( temp 4-component vector of int) 0:41 textureGatherOffset ( temp 4-component vector of int) 0:41 Construct combined texture-sampler ( temp isampler2DArray) 0:41 'g_tTex2di4a' ( uniform itexture2DArray) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 c3: direct index for structure ( uniform 3-component vector of float) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:41 Constant: 0:41 2 (const uint) 0:41 o2: direct index for structure ( uniform 2-component vector of int) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:41 Constant: 0:41 5 (const uint) 0:41 Constant: 0:41 0 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of uint) 0:42 'txval021' ( temp 4-component vector of uint) 0:42 textureGatherOffset ( temp 4-component vector of uint) 0:42 Construct combined texture-sampler ( temp usampler2DArray) 0:42 'g_tTex2du4a' ( uniform utexture2DArray) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 c3: direct index for structure ( uniform 3-component vector of float) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:42 Constant: 0:42 2 (const uint) 0:42 o2: direct index for structure ( uniform 2-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:42 Constant: 0:42 5 (const uint) 0:42 Constant: 0:42 0 (const int) 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'txval004' ( temp 4-component vector of float) 0:44 textureGatherOffsets ( temp 4-component vector of float) 0:44 Construct combined texture-sampler ( temp sampler2DArray) 0:44 'g_tTex2df4a' ( uniform texture2DArray) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 c3: direct index for structure ( uniform 3-component vector of float) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 2 (const uint) 0:44 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:44 o2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 5 (const uint) 0:44 o2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 5 (const uint) 0:44 o2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 5 (const uint) 0:44 o2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 5 (const uint) 0:44 Constant: 0:44 0 (const int) 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of int) 0:45 'txval014' ( temp 4-component vector of int) 0:45 textureGatherOffsets ( temp 4-component vector of int) 0:45 Construct combined texture-sampler ( temp isampler2DArray) 0:45 'g_tTex2di4a' ( uniform itexture2DArray) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 c3: direct index for structure ( uniform 3-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 2 (const uint) 0:45 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:45 o2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 5 (const uint) 0:45 o2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 5 (const uint) 0:45 o2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 5 (const uint) 0:45 o2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 5 (const uint) 0:45 Constant: 0:45 0 (const int) 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of uint) 0:46 'txval024' ( temp 4-component vector of uint) 0:46 textureGatherOffsets ( temp 4-component vector of uint) 0:46 Construct combined texture-sampler ( temp usampler2DArray) 0:46 'g_tTex2du4a' ( uniform utexture2DArray) 0:46 'g_sSamp' (layout( binding=0) uniform sampler) 0:46 c3: direct index for structure ( uniform 3-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 2 (const uint) 0:46 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 Constant: 0:46 0 (const int) 0:56 Sequence 0:56 move second child to first child ( temp 4-component vector of float) 0:56 'txval101' ( temp 4-component vector of float) 0:56 textureGatherOffset ( temp 4-component vector of float) 0:56 Construct combined texture-sampler ( temp sampler2DArray) 0:56 'g_tTex2df4a' ( uniform texture2DArray) 0:56 'g_sSamp' (layout( binding=0) uniform sampler) 0:56 c3: direct index for structure ( uniform 3-component vector of float) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 2 (const uint) 0:56 o2: direct index for structure ( uniform 2-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 5 (const uint) 0:56 Constant: 0:56 1 (const int) 0:57 Sequence 0:57 move second child to first child ( temp 4-component vector of int) 0:57 'txval111' ( temp 4-component vector of int) 0:57 textureGatherOffset ( temp 4-component vector of int) 0:57 Construct combined texture-sampler ( temp isampler2DArray) 0:57 'g_tTex2di4a' ( uniform itexture2DArray) 0:57 'g_sSamp' (layout( binding=0) uniform sampler) 0:57 c3: direct index for structure ( uniform 3-component vector of float) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 o2: direct index for structure ( uniform 2-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 5 (const uint) 0:57 Constant: 0:57 1 (const int) 0:58 Sequence 0:58 move second child to first child ( temp 4-component vector of uint) 0:58 'txval121' ( temp 4-component vector of uint) 0:58 textureGatherOffset ( temp 4-component vector of uint) 0:58 Construct combined texture-sampler ( temp usampler2DArray) 0:58 'g_tTex2du4a' ( uniform utexture2DArray) 0:58 'g_sSamp' (layout( binding=0) uniform sampler) 0:58 c3: direct index for structure ( uniform 3-component vector of float) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 o2: direct index for structure ( uniform 2-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 5 (const uint) 0:58 Constant: 0:58 1 (const int) 0:60 Sequence 0:60 move second child to first child ( temp 4-component vector of float) 0:60 'txval104' ( temp 4-component vector of float) 0:60 textureGatherOffsets ( temp 4-component vector of float) 0:60 Construct combined texture-sampler ( temp sampler2DArray) 0:60 'g_tTex2df4a' ( uniform texture2DArray) 0:60 'g_sSamp' (layout( binding=0) uniform sampler) 0:60 c3: direct index for structure ( uniform 3-component vector of float) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 2 (const uint) 0:60 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:60 o2: direct index for structure ( uniform 2-component vector of int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 5 (const uint) 0:60 o2: direct index for structure ( uniform 2-component vector of int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 5 (const uint) 0:60 o2: direct index for structure ( uniform 2-component vector of int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 5 (const uint) 0:60 o2: direct index for structure ( uniform 2-component vector of int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 5 (const uint) 0:60 Constant: 0:60 1 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of int) 0:61 'txval114' ( temp 4-component vector of int) 0:61 textureGatherOffsets ( temp 4-component vector of int) 0:61 Construct combined texture-sampler ( temp isampler2DArray) 0:61 'g_tTex2di4a' ( uniform itexture2DArray) 0:61 'g_sSamp' (layout( binding=0) uniform sampler) 0:61 c3: direct index for structure ( uniform 3-component vector of float) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 2 (const uint) 0:61 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:61 o2: direct index for structure ( uniform 2-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 5 (const uint) 0:61 o2: direct index for structure ( uniform 2-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 5 (const uint) 0:61 o2: direct index for structure ( uniform 2-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 5 (const uint) 0:61 o2: direct index for structure ( uniform 2-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 5 (const uint) 0:61 Constant: 0:61 1 (const int) 0:62 Sequence 0:62 move second child to first child ( temp 4-component vector of uint) 0:62 'txval124' ( temp 4-component vector of uint) 0:62 textureGatherOffsets ( temp 4-component vector of uint) 0:62 Construct combined texture-sampler ( temp usampler2DArray) 0:62 'g_tTex2du4a' ( uniform utexture2DArray) 0:62 'g_sSamp' (layout( binding=0) uniform sampler) 0:62 c3: direct index for structure ( uniform 3-component vector of float) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 2 (const uint) 0:62 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 Constant: 0:62 1 (const int) 0:72 Sequence 0:72 move second child to first child ( temp 4-component vector of float) 0:72 'txval201' ( temp 4-component vector of float) 0:72 textureGatherOffset ( temp 4-component vector of float) 0:72 Construct combined texture-sampler ( temp sampler2DArray) 0:72 'g_tTex2df4a' ( uniform texture2DArray) 0:72 'g_sSamp' (layout( binding=0) uniform sampler) 0:72 c3: direct index for structure ( uniform 3-component vector of float) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:72 Constant: 0:72 2 (const uint) 0:72 o2: direct index for structure ( uniform 2-component vector of int) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:72 Constant: 0:72 5 (const uint) 0:72 Constant: 0:72 2 (const int) 0:73 Sequence 0:73 move second child to first child ( temp 4-component vector of int) 0:73 'txval211' ( temp 4-component vector of int) 0:73 textureGatherOffset ( temp 4-component vector of int) 0:73 Construct combined texture-sampler ( temp isampler2DArray) 0:73 'g_tTex2di4a' ( uniform itexture2DArray) 0:73 'g_sSamp' (layout( binding=0) uniform sampler) 0:73 c3: direct index for structure ( uniform 3-component vector of float) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:73 Constant: 0:73 2 (const uint) 0:73 o2: direct index for structure ( uniform 2-component vector of int) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:73 Constant: 0:73 5 (const uint) 0:73 Constant: 0:73 2 (const int) 0:74 Sequence 0:74 move second child to first child ( temp 4-component vector of uint) 0:74 'txval221' ( temp 4-component vector of uint) 0:74 textureGatherOffset ( temp 4-component vector of uint) 0:74 Construct combined texture-sampler ( temp usampler2DArray) 0:74 'g_tTex2du4a' ( uniform utexture2DArray) 0:74 'g_sSamp' (layout( binding=0) uniform sampler) 0:74 c3: direct index for structure ( uniform 3-component vector of float) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:74 Constant: 0:74 2 (const uint) 0:74 o2: direct index for structure ( uniform 2-component vector of int) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:74 Constant: 0:74 5 (const uint) 0:74 Constant: 0:74 2 (const int) 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'txval204' ( temp 4-component vector of float) 0:76 textureGatherOffsets ( temp 4-component vector of float) 0:76 Construct combined texture-sampler ( temp sampler2DArray) 0:76 'g_tTex2df4a' ( uniform texture2DArray) 0:76 'g_sSamp' (layout( binding=0) uniform sampler) 0:76 c3: direct index for structure ( uniform 3-component vector of float) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 2 (const uint) 0:76 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:76 o2: direct index for structure ( uniform 2-component vector of int) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 5 (const uint) 0:76 o2: direct index for structure ( uniform 2-component vector of int) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 5 (const uint) 0:76 o2: direct index for structure ( uniform 2-component vector of int) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 5 (const uint) 0:76 o2: direct index for structure ( uniform 2-component vector of int) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 5 (const uint) 0:76 Constant: 0:76 2 (const int) 0:77 Sequence 0:77 move second child to first child ( temp 4-component vector of int) 0:77 'txval214' ( temp 4-component vector of int) 0:77 textureGatherOffsets ( temp 4-component vector of int) 0:77 Construct combined texture-sampler ( temp isampler2DArray) 0:77 'g_tTex2di4a' ( uniform itexture2DArray) 0:77 'g_sSamp' (layout( binding=0) uniform sampler) 0:77 c3: direct index for structure ( uniform 3-component vector of float) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 2 (const uint) 0:77 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:77 o2: direct index for structure ( uniform 2-component vector of int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 5 (const uint) 0:77 o2: direct index for structure ( uniform 2-component vector of int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 5 (const uint) 0:77 o2: direct index for structure ( uniform 2-component vector of int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 5 (const uint) 0:77 o2: direct index for structure ( uniform 2-component vector of int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 5 (const uint) 0:77 Constant: 0:77 2 (const int) 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of uint) 0:78 'txval224' ( temp 4-component vector of uint) 0:78 textureGatherOffsets ( temp 4-component vector of uint) 0:78 Construct combined texture-sampler ( temp usampler2DArray) 0:78 'g_tTex2du4a' ( uniform utexture2DArray) 0:78 'g_sSamp' (layout( binding=0) uniform sampler) 0:78 c3: direct index for structure ( uniform 3-component vector of float) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 2 (const uint) 0:78 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 Constant: 0:78 2 (const int) 0:88 Sequence 0:88 move second child to first child ( temp 4-component vector of float) 0:88 'txval301' ( temp 4-component vector of float) 0:88 textureGatherOffset ( temp 4-component vector of float) 0:88 Construct combined texture-sampler ( temp sampler2DArray) 0:88 'g_tTex2df4a' ( uniform texture2DArray) 0:88 'g_sSamp' (layout( binding=0) uniform sampler) 0:88 c3: direct index for structure ( uniform 3-component vector of float) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:88 Constant: 0:88 2 (const uint) 0:88 o2: direct index for structure ( uniform 2-component vector of int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:88 Constant: 0:88 5 (const uint) 0:88 Constant: 0:88 3 (const int) 0:89 Sequence 0:89 move second child to first child ( temp 4-component vector of int) 0:89 'txval311' ( temp 4-component vector of int) 0:89 textureGatherOffset ( temp 4-component vector of int) 0:89 Construct combined texture-sampler ( temp isampler2DArray) 0:89 'g_tTex2di4a' ( uniform itexture2DArray) 0:89 'g_sSamp' (layout( binding=0) uniform sampler) 0:89 c3: direct index for structure ( uniform 3-component vector of float) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:89 Constant: 0:89 2 (const uint) 0:89 o2: direct index for structure ( uniform 2-component vector of int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:89 Constant: 0:89 5 (const uint) 0:89 Constant: 0:89 3 (const int) 0:90 Sequence 0:90 move second child to first child ( temp 4-component vector of uint) 0:90 'txval321' ( temp 4-component vector of uint) 0:90 textureGatherOffset ( temp 4-component vector of uint) 0:90 Construct combined texture-sampler ( temp usampler2DArray) 0:90 'g_tTex2du4a' ( uniform utexture2DArray) 0:90 'g_sSamp' (layout( binding=0) uniform sampler) 0:90 c3: direct index for structure ( uniform 3-component vector of float) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:90 Constant: 0:90 2 (const uint) 0:90 o2: direct index for structure ( uniform 2-component vector of int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:90 Constant: 0:90 5 (const uint) 0:90 Constant: 0:90 3 (const int) 0:92 Sequence 0:92 move second child to first child ( temp 4-component vector of float) 0:92 'txval304' ( temp 4-component vector of float) 0:92 textureGatherOffsets ( temp 4-component vector of float) 0:92 Construct combined texture-sampler ( temp sampler2DArray) 0:92 'g_tTex2df4a' ( uniform texture2DArray) 0:92 'g_sSamp' (layout( binding=0) uniform sampler) 0:92 c3: direct index for structure ( uniform 3-component vector of float) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 2 (const uint) 0:92 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:92 o2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 5 (const uint) 0:92 o2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 5 (const uint) 0:92 o2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 5 (const uint) 0:92 o2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 5 (const uint) 0:92 Constant: 0:92 3 (const int) 0:93 Sequence 0:93 move second child to first child ( temp 4-component vector of int) 0:93 'txval314' ( temp 4-component vector of int) 0:93 textureGatherOffsets ( temp 4-component vector of int) 0:93 Construct combined texture-sampler ( temp isampler2DArray) 0:93 'g_tTex2di4a' ( uniform itexture2DArray) 0:93 'g_sSamp' (layout( binding=0) uniform sampler) 0:93 c3: direct index for structure ( uniform 3-component vector of float) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 2 (const uint) 0:93 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:93 o2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 5 (const uint) 0:93 o2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 5 (const uint) 0:93 o2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 5 (const uint) 0:93 o2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 5 (const uint) 0:93 Constant: 0:93 3 (const int) 0:94 Sequence 0:94 move second child to first child ( temp 4-component vector of uint) 0:94 'txval324' ( temp 4-component vector of uint) 0:94 textureGatherOffsets ( temp 4-component vector of uint) 0:94 Construct combined texture-sampler ( temp usampler2DArray) 0:94 'g_tTex2du4a' ( uniform utexture2DArray) 0:94 'g_sSamp' (layout( binding=0) uniform sampler) 0:94 c3: direct index for structure ( uniform 3-component vector of float) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 2 (const uint) 0:94 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 Constant: 0:94 3 (const int) 0:106 move second child to first child ( temp 4-component vector of float) 0:106 Color: direct index for structure ( temp 4-component vector of float) 0:106 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1.000000 0:106 1.000000 0:106 1.000000 0:106 1.000000 0:107 move second child to first child ( temp float) 0:107 Depth: direct index for structure ( temp float) 0:107 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:107 Constant: 0:107 1 (const int) 0:107 Constant: 0:107 1.000000 0:109 Branch: Return with expression 0:109 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Function Definition: main( ( temp void) 0:33 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 0 (const int) 0:33 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:33 Depth: direct index for structure ( temp float) 0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Function Parameters: 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'txval001' ( temp 4-component vector of float) 0:40 textureGatherOffset ( temp 4-component vector of float) 0:40 Construct combined texture-sampler ( temp sampler2DArray) 0:40 'g_tTex2df4a' ( uniform texture2DArray) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 c3: direct index for structure ( uniform 3-component vector of float) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:40 Constant: 0:40 2 (const uint) 0:40 o2: direct index for structure ( uniform 2-component vector of int) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:40 Constant: 0:40 5 (const uint) 0:40 Constant: 0:40 0 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of int) 0:41 'txval011' ( temp 4-component vector of int) 0:41 textureGatherOffset ( temp 4-component vector of int) 0:41 Construct combined texture-sampler ( temp isampler2DArray) 0:41 'g_tTex2di4a' ( uniform itexture2DArray) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 c3: direct index for structure ( uniform 3-component vector of float) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:41 Constant: 0:41 2 (const uint) 0:41 o2: direct index for structure ( uniform 2-component vector of int) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:41 Constant: 0:41 5 (const uint) 0:41 Constant: 0:41 0 (const int) 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of uint) 0:42 'txval021' ( temp 4-component vector of uint) 0:42 textureGatherOffset ( temp 4-component vector of uint) 0:42 Construct combined texture-sampler ( temp usampler2DArray) 0:42 'g_tTex2du4a' ( uniform utexture2DArray) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 c3: direct index for structure ( uniform 3-component vector of float) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:42 Constant: 0:42 2 (const uint) 0:42 o2: direct index for structure ( uniform 2-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:42 Constant: 0:42 5 (const uint) 0:42 Constant: 0:42 0 (const int) 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'txval004' ( temp 4-component vector of float) 0:44 textureGatherOffsets ( temp 4-component vector of float) 0:44 Construct combined texture-sampler ( temp sampler2DArray) 0:44 'g_tTex2df4a' ( uniform texture2DArray) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 c3: direct index for structure ( uniform 3-component vector of float) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 2 (const uint) 0:44 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:44 o2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 5 (const uint) 0:44 o2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 5 (const uint) 0:44 o2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 5 (const uint) 0:44 o2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 5 (const uint) 0:44 Constant: 0:44 0 (const int) 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of int) 0:45 'txval014' ( temp 4-component vector of int) 0:45 textureGatherOffsets ( temp 4-component vector of int) 0:45 Construct combined texture-sampler ( temp isampler2DArray) 0:45 'g_tTex2di4a' ( uniform itexture2DArray) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 c3: direct index for structure ( uniform 3-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 2 (const uint) 0:45 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:45 o2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 5 (const uint) 0:45 o2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 5 (const uint) 0:45 o2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 5 (const uint) 0:45 o2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 5 (const uint) 0:45 Constant: 0:45 0 (const int) 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of uint) 0:46 'txval024' ( temp 4-component vector of uint) 0:46 textureGatherOffsets ( temp 4-component vector of uint) 0:46 Construct combined texture-sampler ( temp usampler2DArray) 0:46 'g_tTex2du4a' ( uniform utexture2DArray) 0:46 'g_sSamp' (layout( binding=0) uniform sampler) 0:46 c3: direct index for structure ( uniform 3-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 2 (const uint) 0:46 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 o2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 5 (const uint) 0:46 Constant: 0:46 0 (const int) 0:56 Sequence 0:56 move second child to first child ( temp 4-component vector of float) 0:56 'txval101' ( temp 4-component vector of float) 0:56 textureGatherOffset ( temp 4-component vector of float) 0:56 Construct combined texture-sampler ( temp sampler2DArray) 0:56 'g_tTex2df4a' ( uniform texture2DArray) 0:56 'g_sSamp' (layout( binding=0) uniform sampler) 0:56 c3: direct index for structure ( uniform 3-component vector of float) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 2 (const uint) 0:56 o2: direct index for structure ( uniform 2-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 5 (const uint) 0:56 Constant: 0:56 1 (const int) 0:57 Sequence 0:57 move second child to first child ( temp 4-component vector of int) 0:57 'txval111' ( temp 4-component vector of int) 0:57 textureGatherOffset ( temp 4-component vector of int) 0:57 Construct combined texture-sampler ( temp isampler2DArray) 0:57 'g_tTex2di4a' ( uniform itexture2DArray) 0:57 'g_sSamp' (layout( binding=0) uniform sampler) 0:57 c3: direct index for structure ( uniform 3-component vector of float) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 o2: direct index for structure ( uniform 2-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 5 (const uint) 0:57 Constant: 0:57 1 (const int) 0:58 Sequence 0:58 move second child to first child ( temp 4-component vector of uint) 0:58 'txval121' ( temp 4-component vector of uint) 0:58 textureGatherOffset ( temp 4-component vector of uint) 0:58 Construct combined texture-sampler ( temp usampler2DArray) 0:58 'g_tTex2du4a' ( uniform utexture2DArray) 0:58 'g_sSamp' (layout( binding=0) uniform sampler) 0:58 c3: direct index for structure ( uniform 3-component vector of float) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 o2: direct index for structure ( uniform 2-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 5 (const uint) 0:58 Constant: 0:58 1 (const int) 0:60 Sequence 0:60 move second child to first child ( temp 4-component vector of float) 0:60 'txval104' ( temp 4-component vector of float) 0:60 textureGatherOffsets ( temp 4-component vector of float) 0:60 Construct combined texture-sampler ( temp sampler2DArray) 0:60 'g_tTex2df4a' ( uniform texture2DArray) 0:60 'g_sSamp' (layout( binding=0) uniform sampler) 0:60 c3: direct index for structure ( uniform 3-component vector of float) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 2 (const uint) 0:60 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:60 o2: direct index for structure ( uniform 2-component vector of int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 5 (const uint) 0:60 o2: direct index for structure ( uniform 2-component vector of int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 5 (const uint) 0:60 o2: direct index for structure ( uniform 2-component vector of int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 5 (const uint) 0:60 o2: direct index for structure ( uniform 2-component vector of int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:60 Constant: 0:60 5 (const uint) 0:60 Constant: 0:60 1 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of int) 0:61 'txval114' ( temp 4-component vector of int) 0:61 textureGatherOffsets ( temp 4-component vector of int) 0:61 Construct combined texture-sampler ( temp isampler2DArray) 0:61 'g_tTex2di4a' ( uniform itexture2DArray) 0:61 'g_sSamp' (layout( binding=0) uniform sampler) 0:61 c3: direct index for structure ( uniform 3-component vector of float) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 2 (const uint) 0:61 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:61 o2: direct index for structure ( uniform 2-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 5 (const uint) 0:61 o2: direct index for structure ( uniform 2-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 5 (const uint) 0:61 o2: direct index for structure ( uniform 2-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 5 (const uint) 0:61 o2: direct index for structure ( uniform 2-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 5 (const uint) 0:61 Constant: 0:61 1 (const int) 0:62 Sequence 0:62 move second child to first child ( temp 4-component vector of uint) 0:62 'txval124' ( temp 4-component vector of uint) 0:62 textureGatherOffsets ( temp 4-component vector of uint) 0:62 Construct combined texture-sampler ( temp usampler2DArray) 0:62 'g_tTex2du4a' ( uniform utexture2DArray) 0:62 'g_sSamp' (layout( binding=0) uniform sampler) 0:62 c3: direct index for structure ( uniform 3-component vector of float) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 2 (const uint) 0:62 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 o2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 5 (const uint) 0:62 Constant: 0:62 1 (const int) 0:72 Sequence 0:72 move second child to first child ( temp 4-component vector of float) 0:72 'txval201' ( temp 4-component vector of float) 0:72 textureGatherOffset ( temp 4-component vector of float) 0:72 Construct combined texture-sampler ( temp sampler2DArray) 0:72 'g_tTex2df4a' ( uniform texture2DArray) 0:72 'g_sSamp' (layout( binding=0) uniform sampler) 0:72 c3: direct index for structure ( uniform 3-component vector of float) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:72 Constant: 0:72 2 (const uint) 0:72 o2: direct index for structure ( uniform 2-component vector of int) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:72 Constant: 0:72 5 (const uint) 0:72 Constant: 0:72 2 (const int) 0:73 Sequence 0:73 move second child to first child ( temp 4-component vector of int) 0:73 'txval211' ( temp 4-component vector of int) 0:73 textureGatherOffset ( temp 4-component vector of int) 0:73 Construct combined texture-sampler ( temp isampler2DArray) 0:73 'g_tTex2di4a' ( uniform itexture2DArray) 0:73 'g_sSamp' (layout( binding=0) uniform sampler) 0:73 c3: direct index for structure ( uniform 3-component vector of float) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:73 Constant: 0:73 2 (const uint) 0:73 o2: direct index for structure ( uniform 2-component vector of int) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:73 Constant: 0:73 5 (const uint) 0:73 Constant: 0:73 2 (const int) 0:74 Sequence 0:74 move second child to first child ( temp 4-component vector of uint) 0:74 'txval221' ( temp 4-component vector of uint) 0:74 textureGatherOffset ( temp 4-component vector of uint) 0:74 Construct combined texture-sampler ( temp usampler2DArray) 0:74 'g_tTex2du4a' ( uniform utexture2DArray) 0:74 'g_sSamp' (layout( binding=0) uniform sampler) 0:74 c3: direct index for structure ( uniform 3-component vector of float) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:74 Constant: 0:74 2 (const uint) 0:74 o2: direct index for structure ( uniform 2-component vector of int) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:74 Constant: 0:74 5 (const uint) 0:74 Constant: 0:74 2 (const int) 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'txval204' ( temp 4-component vector of float) 0:76 textureGatherOffsets ( temp 4-component vector of float) 0:76 Construct combined texture-sampler ( temp sampler2DArray) 0:76 'g_tTex2df4a' ( uniform texture2DArray) 0:76 'g_sSamp' (layout( binding=0) uniform sampler) 0:76 c3: direct index for structure ( uniform 3-component vector of float) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 2 (const uint) 0:76 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:76 o2: direct index for structure ( uniform 2-component vector of int) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 5 (const uint) 0:76 o2: direct index for structure ( uniform 2-component vector of int) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 5 (const uint) 0:76 o2: direct index for structure ( uniform 2-component vector of int) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 5 (const uint) 0:76 o2: direct index for structure ( uniform 2-component vector of int) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:76 Constant: 0:76 5 (const uint) 0:76 Constant: 0:76 2 (const int) 0:77 Sequence 0:77 move second child to first child ( temp 4-component vector of int) 0:77 'txval214' ( temp 4-component vector of int) 0:77 textureGatherOffsets ( temp 4-component vector of int) 0:77 Construct combined texture-sampler ( temp isampler2DArray) 0:77 'g_tTex2di4a' ( uniform itexture2DArray) 0:77 'g_sSamp' (layout( binding=0) uniform sampler) 0:77 c3: direct index for structure ( uniform 3-component vector of float) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 2 (const uint) 0:77 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:77 o2: direct index for structure ( uniform 2-component vector of int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 5 (const uint) 0:77 o2: direct index for structure ( uniform 2-component vector of int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 5 (const uint) 0:77 o2: direct index for structure ( uniform 2-component vector of int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 5 (const uint) 0:77 o2: direct index for structure ( uniform 2-component vector of int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:77 Constant: 0:77 5 (const uint) 0:77 Constant: 0:77 2 (const int) 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of uint) 0:78 'txval224' ( temp 4-component vector of uint) 0:78 textureGatherOffsets ( temp 4-component vector of uint) 0:78 Construct combined texture-sampler ( temp usampler2DArray) 0:78 'g_tTex2du4a' ( uniform utexture2DArray) 0:78 'g_sSamp' (layout( binding=0) uniform sampler) 0:78 c3: direct index for structure ( uniform 3-component vector of float) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 2 (const uint) 0:78 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 o2: direct index for structure ( uniform 2-component vector of int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:78 Constant: 0:78 5 (const uint) 0:78 Constant: 0:78 2 (const int) 0:88 Sequence 0:88 move second child to first child ( temp 4-component vector of float) 0:88 'txval301' ( temp 4-component vector of float) 0:88 textureGatherOffset ( temp 4-component vector of float) 0:88 Construct combined texture-sampler ( temp sampler2DArray) 0:88 'g_tTex2df4a' ( uniform texture2DArray) 0:88 'g_sSamp' (layout( binding=0) uniform sampler) 0:88 c3: direct index for structure ( uniform 3-component vector of float) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:88 Constant: 0:88 2 (const uint) 0:88 o2: direct index for structure ( uniform 2-component vector of int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:88 Constant: 0:88 5 (const uint) 0:88 Constant: 0:88 3 (const int) 0:89 Sequence 0:89 move second child to first child ( temp 4-component vector of int) 0:89 'txval311' ( temp 4-component vector of int) 0:89 textureGatherOffset ( temp 4-component vector of int) 0:89 Construct combined texture-sampler ( temp isampler2DArray) 0:89 'g_tTex2di4a' ( uniform itexture2DArray) 0:89 'g_sSamp' (layout( binding=0) uniform sampler) 0:89 c3: direct index for structure ( uniform 3-component vector of float) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:89 Constant: 0:89 2 (const uint) 0:89 o2: direct index for structure ( uniform 2-component vector of int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:89 Constant: 0:89 5 (const uint) 0:89 Constant: 0:89 3 (const int) 0:90 Sequence 0:90 move second child to first child ( temp 4-component vector of uint) 0:90 'txval321' ( temp 4-component vector of uint) 0:90 textureGatherOffset ( temp 4-component vector of uint) 0:90 Construct combined texture-sampler ( temp usampler2DArray) 0:90 'g_tTex2du4a' ( uniform utexture2DArray) 0:90 'g_sSamp' (layout( binding=0) uniform sampler) 0:90 c3: direct index for structure ( uniform 3-component vector of float) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:90 Constant: 0:90 2 (const uint) 0:90 o2: direct index for structure ( uniform 2-component vector of int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:90 Constant: 0:90 5 (const uint) 0:90 Constant: 0:90 3 (const int) 0:92 Sequence 0:92 move second child to first child ( temp 4-component vector of float) 0:92 'txval304' ( temp 4-component vector of float) 0:92 textureGatherOffsets ( temp 4-component vector of float) 0:92 Construct combined texture-sampler ( temp sampler2DArray) 0:92 'g_tTex2df4a' ( uniform texture2DArray) 0:92 'g_sSamp' (layout( binding=0) uniform sampler) 0:92 c3: direct index for structure ( uniform 3-component vector of float) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 2 (const uint) 0:92 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:92 o2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 5 (const uint) 0:92 o2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 5 (const uint) 0:92 o2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 5 (const uint) 0:92 o2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:92 Constant: 0:92 5 (const uint) 0:92 Constant: 0:92 3 (const int) 0:93 Sequence 0:93 move second child to first child ( temp 4-component vector of int) 0:93 'txval314' ( temp 4-component vector of int) 0:93 textureGatherOffsets ( temp 4-component vector of int) 0:93 Construct combined texture-sampler ( temp isampler2DArray) 0:93 'g_tTex2di4a' ( uniform itexture2DArray) 0:93 'g_sSamp' (layout( binding=0) uniform sampler) 0:93 c3: direct index for structure ( uniform 3-component vector of float) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 2 (const uint) 0:93 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:93 o2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 5 (const uint) 0:93 o2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 5 (const uint) 0:93 o2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 5 (const uint) 0:93 o2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:93 Constant: 0:93 5 (const uint) 0:93 Constant: 0:93 3 (const int) 0:94 Sequence 0:94 move second child to first child ( temp 4-component vector of uint) 0:94 'txval324' ( temp 4-component vector of uint) 0:94 textureGatherOffsets ( temp 4-component vector of uint) 0:94 Construct combined texture-sampler ( temp usampler2DArray) 0:94 'g_tTex2du4a' ( uniform utexture2DArray) 0:94 'g_sSamp' (layout( binding=0) uniform sampler) 0:94 c3: direct index for structure ( uniform 3-component vector of float) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 2 (const uint) 0:94 Construct ivec2 ( temp 4-element array of 2-component vector of int) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 o2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:94 Constant: 0:94 5 (const uint) 0:94 Constant: 0:94 3 (const int) 0:106 move second child to first child ( temp 4-component vector of float) 0:106 Color: direct index for structure ( temp 4-component vector of float) 0:106 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1.000000 0:106 1.000000 0:106 1.000000 0:106 1.000000 0:107 move second child to first child ( temp float) 0:107 Depth: direct index for structure ( temp float) 0:107 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:107 Constant: 0:107 1 (const int) 0:107 Constant: 0:107 1.000000 0:109 Branch: Return with expression 0:109 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Function Definition: main( ( temp void) 0:33 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 0 (const int) 0:33 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:33 Depth: direct index for structure ( temp float) 0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 389 Capability Shader Capability ImageGatherExtended Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 363 367 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval001" Name 16 "g_tTex2df4a" Name 20 "g_sSamp" Name 30 "$Global" MemberName 30($Global) 0 "c1" MemberName 30($Global) 1 "c2" MemberName 30($Global) 2 "c3" MemberName 30($Global) 3 "c4" MemberName 30($Global) 4 "o1" MemberName 30($Global) 5 "o2" MemberName 30($Global) 6 "o3" MemberName 30($Global) 7 "o4" Name 32 "" Name 44 "txval011" Name 47 "g_tTex2di4a" Name 60 "txval021" Name 63 "g_tTex2du4a" Name 73 "txval004" Name 91 "txval014" Name 107 "txval024" Name 123 "txval101" Name 133 "txval111" Name 142 "txval121" Name 151 "txval104" Name 167 "txval114" Name 183 "txval124" Name 199 "txval201" Name 208 "txval211" Name 217 "txval221" Name 226 "txval204" Name 242 "txval214" Name 258 "txval224" Name 274 "txval301" Name 284 "txval311" Name 293 "txval321" Name 302 "txval304" Name 318 "txval314" Name 334 "txval324" Name 351 "psout" Name 360 "flattenTemp" Name 363 "@entryPointOutput.Color" Name 367 "@entryPointOutput.Depth" Name 370 "g_sSamp2d" Name 373 "g_tTex1df4a" Name 376 "g_tTex1di4a" Name 379 "g_tTex1du4a" Name 382 "g_tTexcdf4a" Name 385 "g_tTexcdi4a" Name 388 "g_tTexcdu4a" Decorate 16(g_tTex2df4a) Binding 1 Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 30($Global) Block MemberDecorate 30($Global) 0 Offset 0 MemberDecorate 30($Global) 1 Offset 8 MemberDecorate 30($Global) 2 Offset 16 MemberDecorate 30($Global) 3 Offset 32 MemberDecorate 30($Global) 4 Offset 48 MemberDecorate 30($Global) 5 Offset 56 MemberDecorate 30($Global) 6 Offset 64 MemberDecorate 30($Global) 7 Offset 80 Decorate 32 Binding 4 Decorate 32 DescriptorSet 0 Decorate 47(g_tTex2di4a) Binding 2 Decorate 47(g_tTex2di4a) DescriptorSet 0 Decorate 63(g_tTex2du4a) Binding 3 Decorate 63(g_tTex2du4a) DescriptorSet 0 Decorate 363(@entryPointOutput.Color) Location 0 Decorate 367(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 370(g_sSamp2d) Binding 0 Decorate 370(g_sSamp2d) DescriptorSet 0 Decorate 373(g_tTex1df4a) Binding 0 Decorate 373(g_tTex1df4a) DescriptorSet 0 Decorate 376(g_tTex1di4a) Binding 0 Decorate 376(g_tTex1di4a) DescriptorSet 0 Decorate 379(g_tTex1du4a) Binding 0 Decorate 379(g_tTex1du4a) DescriptorSet 0 Decorate 382(g_tTexcdf4a) Binding 0 Decorate 382(g_tTexcdf4a) DescriptorSet 0 Decorate 385(g_tTexcdi4a) Binding 0 Decorate 385(g_tTexcdi4a) DescriptorSet 0 Decorate 388(g_tTexcdu4a) Binding 0 Decorate 388(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: TypeVector 6(float) 3 26: TypeInt 32 1 27: TypeVector 26(int) 2 28: TypeVector 26(int) 3 29: TypeVector 26(int) 4 30($Global): TypeStruct 6(float) 24(fvec2) 25(fvec3) 7(fvec4) 26(int) 27(ivec2) 28(ivec3) 29(ivec4) 31: TypePointer Uniform 30($Global) 32: 31(ptr) Variable Uniform 33: 26(int) Constant 2 34: TypePointer Uniform 25(fvec3) 37: 26(int) Constant 5 38: TypePointer Uniform 27(ivec2) 41: 26(int) Constant 0 43: TypePointer Function 29(ivec4) 45: TypeImage 26(int) 2D array sampled format:Unknown 46: TypePointer UniformConstant 45 47(g_tTex2di4a): 46(ptr) Variable UniformConstant 50: TypeSampledImage 45 57: TypeInt 32 0 58: TypeVector 57(int) 4 59: TypePointer Function 58(ivec4) 61: TypeImage 57(int) 2D array sampled format:Unknown 62: TypePointer UniformConstant 61 63(g_tTex2du4a): 62(ptr) Variable UniformConstant 66: TypeSampledImage 61 87: 57(int) Constant 4 88: TypeArray 27(ivec2) 87 131: 26(int) Constant 1 282: 26(int) Constant 3 350: TypePointer Function 8(PS_OUTPUT) 352: 6(float) Constant 1065353216 353: 7(fvec4) ConstantComposite 352 352 352 352 355: TypePointer Function 6(float) 362: TypePointer Output 7(fvec4) 363(@entryPointOutput.Color): 362(ptr) Variable Output 366: TypePointer Output 6(float) 367(@entryPointOutput.Depth): 366(ptr) Variable Output 370(g_sSamp2d): 19(ptr) Variable UniformConstant 371: TypeImage 6(float) 1D array sampled format:Unknown 372: TypePointer UniformConstant 371 373(g_tTex1df4a): 372(ptr) Variable UniformConstant 374: TypeImage 26(int) 1D array sampled format:Unknown 375: TypePointer UniformConstant 374 376(g_tTex1di4a): 375(ptr) Variable UniformConstant 377: TypeImage 57(int) 1D array sampled format:Unknown 378: TypePointer UniformConstant 377 379(g_tTex1du4a): 378(ptr) Variable UniformConstant 380: TypeImage 6(float) Cube array sampled format:Unknown 381: TypePointer UniformConstant 380 382(g_tTexcdf4a): 381(ptr) Variable UniformConstant 383: TypeImage 26(int) Cube array sampled format:Unknown 384: TypePointer UniformConstant 383 385(g_tTexcdi4a): 384(ptr) Variable UniformConstant 386: TypeImage 57(int) Cube array sampled format:Unknown 387: TypePointer UniformConstant 386 388(g_tTexcdu4a): 387(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 360(flattenTemp): 350(ptr) Variable Function 361:8(PS_OUTPUT) FunctionCall 10(@main() Store 360(flattenTemp) 361 364: 12(ptr) AccessChain 360(flattenTemp) 41 365: 7(fvec4) Load 364 Store 363(@entryPointOutput.Color) 365 368: 355(ptr) AccessChain 360(flattenTemp) 131 369: 6(float) Load 368 Store 367(@entryPointOutput.Depth) 369 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval001): 12(ptr) Variable Function 44(txval011): 43(ptr) Variable Function 60(txval021): 59(ptr) Variable Function 73(txval004): 12(ptr) Variable Function 91(txval014): 43(ptr) Variable Function 107(txval024): 59(ptr) Variable Function 123(txval101): 12(ptr) Variable Function 133(txval111): 43(ptr) Variable Function 142(txval121): 59(ptr) Variable Function 151(txval104): 12(ptr) Variable Function 167(txval114): 43(ptr) Variable Function 183(txval124): 59(ptr) Variable Function 199(txval201): 12(ptr) Variable Function 208(txval211): 43(ptr) Variable Function 217(txval221): 59(ptr) Variable Function 226(txval204): 12(ptr) Variable Function 242(txval214): 43(ptr) Variable Function 258(txval224): 59(ptr) Variable Function 274(txval301): 12(ptr) Variable Function 284(txval311): 43(ptr) Variable Function 293(txval321): 59(ptr) Variable Function 302(txval304): 12(ptr) Variable Function 318(txval314): 43(ptr) Variable Function 334(txval324): 59(ptr) Variable Function 351(psout): 350(ptr) Variable Function 17: 14 Load 16(g_tTex2df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 35: 34(ptr) AccessChain 32 33 36: 25(fvec3) Load 35 39: 38(ptr) AccessChain 32 37 40: 27(ivec2) Load 39 42: 7(fvec4) ImageGather 23 36 41 Offset 40 Store 13(txval001) 42 48: 45 Load 47(g_tTex2di4a) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 52: 34(ptr) AccessChain 32 33 53: 25(fvec3) Load 52 54: 38(ptr) AccessChain 32 37 55: 27(ivec2) Load 54 56: 29(ivec4) ImageGather 51 53 41 Offset 55 Store 44(txval011) 56 64: 61 Load 63(g_tTex2du4a) 65: 18 Load 20(g_sSamp) 67: 66 SampledImage 64 65 68: 34(ptr) AccessChain 32 33 69: 25(fvec3) Load 68 70: 38(ptr) AccessChain 32 37 71: 27(ivec2) Load 70 72: 58(ivec4) ImageGather 67 69 41 Offset 71 Store 60(txval021) 72 74: 14 Load 16(g_tTex2df4a) 75: 18 Load 20(g_sSamp) 76: 22 SampledImage 74 75 77: 34(ptr) AccessChain 32 33 78: 25(fvec3) Load 77 79: 38(ptr) AccessChain 32 37 80: 27(ivec2) Load 79 81: 38(ptr) AccessChain 32 37 82: 27(ivec2) Load 81 83: 38(ptr) AccessChain 32 37 84: 27(ivec2) Load 83 85: 38(ptr) AccessChain 32 37 86: 27(ivec2) Load 85 89: 88 CompositeConstruct 80 82 84 86 90: 7(fvec4) ImageGather 76 78 41 ConstOffsets 89 Store 73(txval004) 90 92: 45 Load 47(g_tTex2di4a) 93: 18 Load 20(g_sSamp) 94: 50 SampledImage 92 93 95: 34(ptr) AccessChain 32 33 96: 25(fvec3) Load 95 97: 38(ptr) AccessChain 32 37 98: 27(ivec2) Load 97 99: 38(ptr) AccessChain 32 37 100: 27(ivec2) Load 99 101: 38(ptr) AccessChain 32 37 102: 27(ivec2) Load 101 103: 38(ptr) AccessChain 32 37 104: 27(ivec2) Load 103 105: 88 CompositeConstruct 98 100 102 104 106: 29(ivec4) ImageGather 94 96 41 ConstOffsets 105 Store 91(txval014) 106 108: 61 Load 63(g_tTex2du4a) 109: 18 Load 20(g_sSamp) 110: 66 SampledImage 108 109 111: 34(ptr) AccessChain 32 33 112: 25(fvec3) Load 111 113: 38(ptr) AccessChain 32 37 114: 27(ivec2) Load 113 115: 38(ptr) AccessChain 32 37 116: 27(ivec2) Load 115 117: 38(ptr) AccessChain 32 37 118: 27(ivec2) Load 117 119: 38(ptr) AccessChain 32 37 120: 27(ivec2) Load 119 121: 88 CompositeConstruct 114 116 118 120 122: 58(ivec4) ImageGather 110 112 41 ConstOffsets 121 Store 107(txval024) 122 124: 14 Load 16(g_tTex2df4a) 125: 18 Load 20(g_sSamp) 126: 22 SampledImage 124 125 127: 34(ptr) AccessChain 32 33 128: 25(fvec3) Load 127 129: 38(ptr) AccessChain 32 37 130: 27(ivec2) Load 129 132: 7(fvec4) ImageGather 126 128 131 Offset 130 Store 123(txval101) 132 134: 45 Load 47(g_tTex2di4a) 135: 18 Load 20(g_sSamp) 136: 50 SampledImage 134 135 137: 34(ptr) AccessChain 32 33 138: 25(fvec3) Load 137 139: 38(ptr) AccessChain 32 37 140: 27(ivec2) Load 139 141: 29(ivec4) ImageGather 136 138 131 Offset 140 Store 133(txval111) 141 143: 61 Load 63(g_tTex2du4a) 144: 18 Load 20(g_sSamp) 145: 66 SampledImage 143 144 146: 34(ptr) AccessChain 32 33 147: 25(fvec3) Load 146 148: 38(ptr) AccessChain 32 37 149: 27(ivec2) Load 148 150: 58(ivec4) ImageGather 145 147 131 Offset 149 Store 142(txval121) 150 152: 14 Load 16(g_tTex2df4a) 153: 18 Load 20(g_sSamp) 154: 22 SampledImage 152 153 155: 34(ptr) AccessChain 32 33 156: 25(fvec3) Load 155 157: 38(ptr) AccessChain 32 37 158: 27(ivec2) Load 157 159: 38(ptr) AccessChain 32 37 160: 27(ivec2) Load 159 161: 38(ptr) AccessChain 32 37 162: 27(ivec2) Load 161 163: 38(ptr) AccessChain 32 37 164: 27(ivec2) Load 163 165: 88 CompositeConstruct 158 160 162 164 166: 7(fvec4) ImageGather 154 156 131 ConstOffsets 165 Store 151(txval104) 166 168: 45 Load 47(g_tTex2di4a) 169: 18 Load 20(g_sSamp) 170: 50 SampledImage 168 169 171: 34(ptr) AccessChain 32 33 172: 25(fvec3) Load 171 173: 38(ptr) AccessChain 32 37 174: 27(ivec2) Load 173 175: 38(ptr) AccessChain 32 37 176: 27(ivec2) Load 175 177: 38(ptr) AccessChain 32 37 178: 27(ivec2) Load 177 179: 38(ptr) AccessChain 32 37 180: 27(ivec2) Load 179 181: 88 CompositeConstruct 174 176 178 180 182: 29(ivec4) ImageGather 170 172 131 ConstOffsets 181 Store 167(txval114) 182 184: 61 Load 63(g_tTex2du4a) 185: 18 Load 20(g_sSamp) 186: 66 SampledImage 184 185 187: 34(ptr) AccessChain 32 33 188: 25(fvec3) Load 187 189: 38(ptr) AccessChain 32 37 190: 27(ivec2) Load 189 191: 38(ptr) AccessChain 32 37 192: 27(ivec2) Load 191 193: 38(ptr) AccessChain 32 37 194: 27(ivec2) Load 193 195: 38(ptr) AccessChain 32 37 196: 27(ivec2) Load 195 197: 88 CompositeConstruct 190 192 194 196 198: 58(ivec4) ImageGather 186 188 131 ConstOffsets 197 Store 183(txval124) 198 200: 14 Load 16(g_tTex2df4a) 201: 18 Load 20(g_sSamp) 202: 22 SampledImage 200 201 203: 34(ptr) AccessChain 32 33 204: 25(fvec3) Load 203 205: 38(ptr) AccessChain 32 37 206: 27(ivec2) Load 205 207: 7(fvec4) ImageGather 202 204 33 Offset 206 Store 199(txval201) 207 209: 45 Load 47(g_tTex2di4a) 210: 18 Load 20(g_sSamp) 211: 50 SampledImage 209 210 212: 34(ptr) AccessChain 32 33 213: 25(fvec3) Load 212 214: 38(ptr) AccessChain 32 37 215: 27(ivec2) Load 214 216: 29(ivec4) ImageGather 211 213 33 Offset 215 Store 208(txval211) 216 218: 61 Load 63(g_tTex2du4a) 219: 18 Load 20(g_sSamp) 220: 66 SampledImage 218 219 221: 34(ptr) AccessChain 32 33 222: 25(fvec3) Load 221 223: 38(ptr) AccessChain 32 37 224: 27(ivec2) Load 223 225: 58(ivec4) ImageGather 220 222 33 Offset 224 Store 217(txval221) 225 227: 14 Load 16(g_tTex2df4a) 228: 18 Load 20(g_sSamp) 229: 22 SampledImage 227 228 230: 34(ptr) AccessChain 32 33 231: 25(fvec3) Load 230 232: 38(ptr) AccessChain 32 37 233: 27(ivec2) Load 232 234: 38(ptr) AccessChain 32 37 235: 27(ivec2) Load 234 236: 38(ptr) AccessChain 32 37 237: 27(ivec2) Load 236 238: 38(ptr) AccessChain 32 37 239: 27(ivec2) Load 238 240: 88 CompositeConstruct 233 235 237 239 241: 7(fvec4) ImageGather 229 231 33 ConstOffsets 240 Store 226(txval204) 241 243: 45 Load 47(g_tTex2di4a) 244: 18 Load 20(g_sSamp) 245: 50 SampledImage 243 244 246: 34(ptr) AccessChain 32 33 247: 25(fvec3) Load 246 248: 38(ptr) AccessChain 32 37 249: 27(ivec2) Load 248 250: 38(ptr) AccessChain 32 37 251: 27(ivec2) Load 250 252: 38(ptr) AccessChain 32 37 253: 27(ivec2) Load 252 254: 38(ptr) AccessChain 32 37 255: 27(ivec2) Load 254 256: 88 CompositeConstruct 249 251 253 255 257: 29(ivec4) ImageGather 245 247 33 ConstOffsets 256 Store 242(txval214) 257 259: 61 Load 63(g_tTex2du4a) 260: 18 Load 20(g_sSamp) 261: 66 SampledImage 259 260 262: 34(ptr) AccessChain 32 33 263: 25(fvec3) Load 262 264: 38(ptr) AccessChain 32 37 265: 27(ivec2) Load 264 266: 38(ptr) AccessChain 32 37 267: 27(ivec2) Load 266 268: 38(ptr) AccessChain 32 37 269: 27(ivec2) Load 268 270: 38(ptr) AccessChain 32 37 271: 27(ivec2) Load 270 272: 88 CompositeConstruct 265 267 269 271 273: 58(ivec4) ImageGather 261 263 33 ConstOffsets 272 Store 258(txval224) 273 275: 14 Load 16(g_tTex2df4a) 276: 18 Load 20(g_sSamp) 277: 22 SampledImage 275 276 278: 34(ptr) AccessChain 32 33 279: 25(fvec3) Load 278 280: 38(ptr) AccessChain 32 37 281: 27(ivec2) Load 280 283: 7(fvec4) ImageGather 277 279 282 Offset 281 Store 274(txval301) 283 285: 45 Load 47(g_tTex2di4a) 286: 18 Load 20(g_sSamp) 287: 50 SampledImage 285 286 288: 34(ptr) AccessChain 32 33 289: 25(fvec3) Load 288 290: 38(ptr) AccessChain 32 37 291: 27(ivec2) Load 290 292: 29(ivec4) ImageGather 287 289 282 Offset 291 Store 284(txval311) 292 294: 61 Load 63(g_tTex2du4a) 295: 18 Load 20(g_sSamp) 296: 66 SampledImage 294 295 297: 34(ptr) AccessChain 32 33 298: 25(fvec3) Load 297 299: 38(ptr) AccessChain 32 37 300: 27(ivec2) Load 299 301: 58(ivec4) ImageGather 296 298 282 Offset 300 Store 293(txval321) 301 303: 14 Load 16(g_tTex2df4a) 304: 18 Load 20(g_sSamp) 305: 22 SampledImage 303 304 306: 34(ptr) AccessChain 32 33 307: 25(fvec3) Load 306 308: 38(ptr) AccessChain 32 37 309: 27(ivec2) Load 308 310: 38(ptr) AccessChain 32 37 311: 27(ivec2) Load 310 312: 38(ptr) AccessChain 32 37 313: 27(ivec2) Load 312 314: 38(ptr) AccessChain 32 37 315: 27(ivec2) Load 314 316: 88 CompositeConstruct 309 311 313 315 317: 7(fvec4) ImageGather 305 307 282 ConstOffsets 316 Store 302(txval304) 317 319: 45 Load 47(g_tTex2di4a) 320: 18 Load 20(g_sSamp) 321: 50 SampledImage 319 320 322: 34(ptr) AccessChain 32 33 323: 25(fvec3) Load 322 324: 38(ptr) AccessChain 32 37 325: 27(ivec2) Load 324 326: 38(ptr) AccessChain 32 37 327: 27(ivec2) Load 326 328: 38(ptr) AccessChain 32 37 329: 27(ivec2) Load 328 330: 38(ptr) AccessChain 32 37 331: 27(ivec2) Load 330 332: 88 CompositeConstruct 325 327 329 331 333: 29(ivec4) ImageGather 321 323 282 ConstOffsets 332 Store 318(txval314) 333 335: 61 Load 63(g_tTex2du4a) 336: 18 Load 20(g_sSamp) 337: 66 SampledImage 335 336 338: 34(ptr) AccessChain 32 33 339: 25(fvec3) Load 338 340: 38(ptr) AccessChain 32 37 341: 27(ivec2) Load 340 342: 38(ptr) AccessChain 32 37 343: 27(ivec2) Load 342 344: 38(ptr) AccessChain 32 37 345: 27(ivec2) Load 344 346: 38(ptr) AccessChain 32 37 347: 27(ivec2) Load 346 348: 88 CompositeConstruct 341 343 345 347 349: 58(ivec4) ImageGather 337 339 282 ConstOffsets 348 Store 334(txval324) 349 354: 12(ptr) AccessChain 351(psout) 41 Store 354 353 356: 355(ptr) AccessChain 351(psout) 131 Store 356 352 357:8(PS_OUTPUT) Load 351(psout) ReturnValue 357 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out000066400000000000000000001153131506534232700255310ustar00rootroot00000000000000hlsl.gathercmpRGBA.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 'txval001' ( temp 4-component vector of float) 0:45 textureGatherOffset ( temp 4-component vector of float) 0:45 Construct combined texture-sampler ( temp sampler2DShadow) 0:45 'g_tTex2df4' ( uniform texture2DShadow) 0:45 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:45 c2: direct index for structure ( uniform 2-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:45 Constant: 0:45 1 (const uint) 0:45 Constant: 0:45 0.750000 0:45 Constant: 0:45 1 (const int) 0:45 0 (const int) 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of int) 0:46 'txval011' ( temp 4-component vector of int) 0:46 textureGatherOffset ( temp 4-component vector of int) 0:46 Construct combined texture-sampler ( temp isampler2DShadow) 0:46 'g_tTex2di4' ( uniform itexture2DShadow) 0:46 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:46 c2: direct index for structure ( uniform 2-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:46 Constant: 0:46 1 (const uint) 0:46 Constant: 0:46 0.750000 0:46 Constant: 0:46 1 (const int) 0:46 -1 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 'txval021' ( temp 4-component vector of uint) 0:47 textureGatherOffset ( temp 4-component vector of uint) 0:47 Construct combined texture-sampler ( temp usampler2DShadow) 0:47 'g_tTex2du4' ( uniform utexture2DShadow) 0:47 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:47 c2: direct index for structure ( uniform 2-component vector of float) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:47 Constant: 0:47 1 (const uint) 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 1 (const int) 0:47 1 (const int) 0:49 Sequence 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'txval004' ( temp 4-component vector of float) 0:49 textureGatherOffsets ( temp 4-component vector of float) 0:49 Construct combined texture-sampler ( temp sampler2DShadow) 0:49 'g_tTex2df4' ( uniform texture2DShadow) 0:49 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:49 c2: direct index for structure ( uniform 2-component vector of float) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:49 Constant: 0:49 1 (const uint) 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 1 (const int) 0:49 0 (const int) 0:49 1 (const int) 0:49 0 (const int) 0:49 1 (const int) 0:49 0 (const int) 0:49 1 (const int) 0:49 0 (const int) 0:50 Sequence 0:50 move second child to first child ( temp 4-component vector of int) 0:50 'txval014' ( temp 4-component vector of int) 0:50 textureGatherOffsets ( temp 4-component vector of int) 0:50 Construct combined texture-sampler ( temp isampler2DShadow) 0:50 'g_tTex2di4' ( uniform itexture2DShadow) 0:50 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:50 c2: direct index for structure ( uniform 2-component vector of float) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:50 Constant: 0:50 1 (const uint) 0:50 Constant: 0:50 0.750000 0:50 Constant: 0:50 1 (const int) 0:50 -1 (const int) 0:50 1 (const int) 0:50 -1 (const int) 0:50 1 (const int) 0:50 -1 (const int) 0:50 1 (const int) 0:50 -1 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of uint) 0:51 'txval024' ( temp 4-component vector of uint) 0:51 textureGatherOffsets ( temp 4-component vector of uint) 0:51 Construct combined texture-sampler ( temp usampler2DShadow) 0:51 'g_tTex2du4' ( uniform utexture2DShadow) 0:51 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:51 c2: direct index for structure ( uniform 2-component vector of float) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Constant: 0:51 0.750000 0:51 Constant: 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:53 'txval401' ( temp 4-component vector of float) 0:53 textureGatherOffset ( temp 4-component vector of float) 0:53 Construct combined texture-sampler ( temp sampler2DShadow) 0:53 'g_tTex2df4' ( uniform texture2DShadow) 0:53 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:53 c2: direct index for structure ( uniform 2-component vector of float) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Constant: 0:53 0.750000 0:53 Constant: 0:53 1 (const int) 0:53 0 (const int) 0:54 Sequence 0:54 move second child to first child ( temp 4-component vector of int) 0:54 'txval411' ( temp 4-component vector of int) 0:54 textureGatherOffset ( temp 4-component vector of int) 0:54 Construct combined texture-sampler ( temp isampler2DShadow) 0:54 'g_tTex2di4' ( uniform itexture2DShadow) 0:54 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:54 c2: direct index for structure ( uniform 2-component vector of float) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:54 Constant: 0:54 1 (const uint) 0:54 Constant: 0:54 0.750000 0:54 Constant: 0:54 1 (const int) 0:54 -1 (const int) 0:55 Sequence 0:55 move second child to first child ( temp 4-component vector of uint) 0:55 'txval421' ( temp 4-component vector of uint) 0:55 textureGatherOffset ( temp 4-component vector of uint) 0:55 Construct combined texture-sampler ( temp usampler2DShadow) 0:55 'g_tTex2du4' ( uniform utexture2DShadow) 0:55 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:55 c2: direct index for structure ( uniform 2-component vector of float) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:55 Constant: 0:55 1 (const uint) 0:55 Constant: 0:55 0.750000 0:55 Constant: 0:55 1 (const int) 0:55 1 (const int) 0:110 move second child to first child ( temp 4-component vector of float) 0:110 Color: direct index for structure ( temp 4-component vector of float) 0:110 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1.000000 0:110 1.000000 0:110 1.000000 0:110 1.000000 0:111 move second child to first child ( temp float) 0:111 Depth: direct index for structure ( temp float) 0:111 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1.000000 0:113 Branch: Return with expression 0:113 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 'txval001' ( temp 4-component vector of float) 0:45 textureGatherOffset ( temp 4-component vector of float) 0:45 Construct combined texture-sampler ( temp sampler2DShadow) 0:45 'g_tTex2df4' ( uniform texture2DShadow) 0:45 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:45 c2: direct index for structure ( uniform 2-component vector of float) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:45 Constant: 0:45 1 (const uint) 0:45 Constant: 0:45 0.750000 0:45 Constant: 0:45 1 (const int) 0:45 0 (const int) 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of int) 0:46 'txval011' ( temp 4-component vector of int) 0:46 textureGatherOffset ( temp 4-component vector of int) 0:46 Construct combined texture-sampler ( temp isampler2DShadow) 0:46 'g_tTex2di4' ( uniform itexture2DShadow) 0:46 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:46 c2: direct index for structure ( uniform 2-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:46 Constant: 0:46 1 (const uint) 0:46 Constant: 0:46 0.750000 0:46 Constant: 0:46 1 (const int) 0:46 -1 (const int) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 'txval021' ( temp 4-component vector of uint) 0:47 textureGatherOffset ( temp 4-component vector of uint) 0:47 Construct combined texture-sampler ( temp usampler2DShadow) 0:47 'g_tTex2du4' ( uniform utexture2DShadow) 0:47 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:47 c2: direct index for structure ( uniform 2-component vector of float) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:47 Constant: 0:47 1 (const uint) 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 1 (const int) 0:47 1 (const int) 0:49 Sequence 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'txval004' ( temp 4-component vector of float) 0:49 textureGatherOffsets ( temp 4-component vector of float) 0:49 Construct combined texture-sampler ( temp sampler2DShadow) 0:49 'g_tTex2df4' ( uniform texture2DShadow) 0:49 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:49 c2: direct index for structure ( uniform 2-component vector of float) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:49 Constant: 0:49 1 (const uint) 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 1 (const int) 0:49 0 (const int) 0:49 1 (const int) 0:49 0 (const int) 0:49 1 (const int) 0:49 0 (const int) 0:49 1 (const int) 0:49 0 (const int) 0:50 Sequence 0:50 move second child to first child ( temp 4-component vector of int) 0:50 'txval014' ( temp 4-component vector of int) 0:50 textureGatherOffsets ( temp 4-component vector of int) 0:50 Construct combined texture-sampler ( temp isampler2DShadow) 0:50 'g_tTex2di4' ( uniform itexture2DShadow) 0:50 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:50 c2: direct index for structure ( uniform 2-component vector of float) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:50 Constant: 0:50 1 (const uint) 0:50 Constant: 0:50 0.750000 0:50 Constant: 0:50 1 (const int) 0:50 -1 (const int) 0:50 1 (const int) 0:50 -1 (const int) 0:50 1 (const int) 0:50 -1 (const int) 0:50 1 (const int) 0:50 -1 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of uint) 0:51 'txval024' ( temp 4-component vector of uint) 0:51 textureGatherOffsets ( temp 4-component vector of uint) 0:51 Construct combined texture-sampler ( temp usampler2DShadow) 0:51 'g_tTex2du4' ( uniform utexture2DShadow) 0:51 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:51 c2: direct index for structure ( uniform 2-component vector of float) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Constant: 0:51 0.750000 0:51 Constant: 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:51 1 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:53 'txval401' ( temp 4-component vector of float) 0:53 textureGatherOffset ( temp 4-component vector of float) 0:53 Construct combined texture-sampler ( temp sampler2DShadow) 0:53 'g_tTex2df4' ( uniform texture2DShadow) 0:53 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:53 c2: direct index for structure ( uniform 2-component vector of float) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Constant: 0:53 0.750000 0:53 Constant: 0:53 1 (const int) 0:53 0 (const int) 0:54 Sequence 0:54 move second child to first child ( temp 4-component vector of int) 0:54 'txval411' ( temp 4-component vector of int) 0:54 textureGatherOffset ( temp 4-component vector of int) 0:54 Construct combined texture-sampler ( temp isampler2DShadow) 0:54 'g_tTex2di4' ( uniform itexture2DShadow) 0:54 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:54 c2: direct index for structure ( uniform 2-component vector of float) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:54 Constant: 0:54 1 (const uint) 0:54 Constant: 0:54 0.750000 0:54 Constant: 0:54 1 (const int) 0:54 -1 (const int) 0:55 Sequence 0:55 move second child to first child ( temp 4-component vector of uint) 0:55 'txval421' ( temp 4-component vector of uint) 0:55 textureGatherOffset ( temp 4-component vector of uint) 0:55 Construct combined texture-sampler ( temp usampler2DShadow) 0:55 'g_tTex2du4' ( uniform utexture2DShadow) 0:55 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:55 c2: direct index for structure ( uniform 2-component vector of float) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:55 Constant: 0:55 1 (const uint) 0:55 Constant: 0:55 0.750000 0:55 Constant: 0:55 1 (const int) 0:55 1 (const int) 0:110 move second child to first child ( temp 4-component vector of float) 0:110 Color: direct index for structure ( temp 4-component vector of float) 0:110 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1.000000 0:110 1.000000 0:110 1.000000 0:110 1.000000 0:111 move second child to first child ( temp float) 0:111 Depth: direct index for structure ( temp float) 0:111 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:111 Constant: 0:111 1 (const int) 0:111 Constant: 0:111 1.000000 0:113 Branch: Return with expression 0:113 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSampCmp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 164 Capability Shader Capability ImageGatherExtended Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 129 133 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval001" Name 16 "g_tTex2df4" Name 20 "g_sSampCmp" Name 26 "$Global" MemberName 26($Global) 0 "c1" MemberName 26($Global) 1 "c2" MemberName 26($Global) 2 "c3" MemberName 26($Global) 3 "c4" Name 28 "" Name 41 "txval011" Name 44 "g_tTex2di4" Name 57 "txval021" Name 60 "g_tTex2du4" Name 69 "txval004" Name 79 "txval014" Name 87 "txval024" Name 95 "txval401" Name 102 "txval411" Name 109 "txval421" Name 117 "psout" Name 126 "flattenTemp" Name 129 "@entryPointOutput.Color" Name 133 "@entryPointOutput.Depth" Name 138 "g_tTex1df4a" Name 139 "g_tTex1df4" Name 142 "g_tTex1di4" Name 145 "g_tTex1du4" Name 148 "g_tTex3df4" Name 151 "g_tTex3di4" Name 154 "g_tTex3du4" Name 157 "g_tTexcdf4" Name 160 "g_tTexcdi4" Name 163 "g_tTexcdu4" Decorate 16(g_tTex2df4) Binding 2 Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSampCmp) Binding 0 Decorate 20(g_sSampCmp) DescriptorSet 0 Decorate 26($Global) Block MemberDecorate 26($Global) 0 Offset 0 MemberDecorate 26($Global) 1 Offset 8 MemberDecorate 26($Global) 2 Offset 16 MemberDecorate 26($Global) 3 Offset 32 Decorate 28 Binding 5 Decorate 28 DescriptorSet 0 Decorate 44(g_tTex2di4) Binding 3 Decorate 44(g_tTex2di4) DescriptorSet 0 Decorate 60(g_tTex2du4) Binding 4 Decorate 60(g_tTex2du4) DescriptorSet 0 Decorate 129(@entryPointOutput.Color) Location 0 Decorate 133(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 138(g_tTex1df4a) Binding 1 Decorate 138(g_tTex1df4a) DescriptorSet 0 Decorate 139(g_tTex1df4) Binding 0 Decorate 139(g_tTex1df4) DescriptorSet 0 Decorate 142(g_tTex1di4) Binding 0 Decorate 142(g_tTex1di4) DescriptorSet 0 Decorate 145(g_tTex1du4) Binding 0 Decorate 145(g_tTex1du4) DescriptorSet 0 Decorate 148(g_tTex3df4) Binding 0 Decorate 148(g_tTex3df4) DescriptorSet 0 Decorate 151(g_tTex3di4) Binding 0 Decorate 151(g_tTex3di4) DescriptorSet 0 Decorate 154(g_tTex3du4) Binding 0 Decorate 154(g_tTex3du4) DescriptorSet 0 Decorate 157(g_tTexcdf4) Binding 0 Decorate 157(g_tTexcdf4) DescriptorSet 0 Decorate 160(g_tTexcdi4) Binding 0 Decorate 160(g_tTexcdi4) DescriptorSet 0 Decorate 163(g_tTexcdu4) Binding 0 Decorate 163(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 2D depth sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex2df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSampCmp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: TypeVector 6(float) 3 26($Global): TypeStruct 6(float) 24(fvec2) 25(fvec3) 7(fvec4) 27: TypePointer Uniform 26($Global) 28: 27(ptr) Variable Uniform 29: TypeInt 32 1 30: 29(int) Constant 1 31: TypePointer Uniform 24(fvec2) 34: 6(float) Constant 1061158912 35: TypeVector 29(int) 2 36: 29(int) Constant 0 37: 35(ivec2) ConstantComposite 30 36 39: TypeVector 29(int) 4 40: TypePointer Function 39(ivec4) 42: TypeImage 29(int) 2D depth sampled format:Unknown 43: TypePointer UniformConstant 42 44(g_tTex2di4): 43(ptr) Variable UniformConstant 47: TypeSampledImage 42 51: 29(int) Constant 4294967295 52: 35(ivec2) ConstantComposite 30 51 54: TypeInt 32 0 55: TypeVector 54(int) 4 56: TypePointer Function 55(ivec4) 58: TypeImage 54(int) 2D depth sampled format:Unknown 59: TypePointer UniformConstant 58 60(g_tTex2du4): 59(ptr) Variable UniformConstant 63: TypeSampledImage 58 67: 35(ivec2) ConstantComposite 30 30 75: 54(int) Constant 4 76: TypeArray 35(ivec2) 75 77: 76 ConstantComposite 37 37 37 37 85: 76 ConstantComposite 52 52 52 52 93: 76 ConstantComposite 67 67 67 67 116: TypePointer Function 8(PS_OUTPUT) 118: 6(float) Constant 1065353216 119: 7(fvec4) ConstantComposite 118 118 118 118 121: TypePointer Function 6(float) 128: TypePointer Output 7(fvec4) 129(@entryPointOutput.Color): 128(ptr) Variable Output 132: TypePointer Output 6(float) 133(@entryPointOutput.Depth): 132(ptr) Variable Output 136: TypeImage 6(float) 1D sampled format:Unknown 137: TypePointer UniformConstant 136 138(g_tTex1df4a): 137(ptr) Variable UniformConstant 139(g_tTex1df4): 137(ptr) Variable UniformConstant 140: TypeImage 29(int) 1D sampled format:Unknown 141: TypePointer UniformConstant 140 142(g_tTex1di4): 141(ptr) Variable UniformConstant 143: TypeImage 54(int) 1D sampled format:Unknown 144: TypePointer UniformConstant 143 145(g_tTex1du4): 144(ptr) Variable UniformConstant 146: TypeImage 6(float) 3D sampled format:Unknown 147: TypePointer UniformConstant 146 148(g_tTex3df4): 147(ptr) Variable UniformConstant 149: TypeImage 29(int) 3D sampled format:Unknown 150: TypePointer UniformConstant 149 151(g_tTex3di4): 150(ptr) Variable UniformConstant 152: TypeImage 54(int) 3D sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTex3du4): 153(ptr) Variable UniformConstant 155: TypeImage 6(float) Cube sampled format:Unknown 156: TypePointer UniformConstant 155 157(g_tTexcdf4): 156(ptr) Variable UniformConstant 158: TypeImage 29(int) Cube sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTexcdi4): 159(ptr) Variable UniformConstant 161: TypeImage 54(int) Cube sampled format:Unknown 162: TypePointer UniformConstant 161 163(g_tTexcdu4): 162(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 126(flattenTemp): 116(ptr) Variable Function 127:8(PS_OUTPUT) FunctionCall 10(@main() Store 126(flattenTemp) 127 130: 12(ptr) AccessChain 126(flattenTemp) 36 131: 7(fvec4) Load 130 Store 129(@entryPointOutput.Color) 131 134: 121(ptr) AccessChain 126(flattenTemp) 30 135: 6(float) Load 134 Store 133(@entryPointOutput.Depth) 135 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval001): 12(ptr) Variable Function 41(txval011): 40(ptr) Variable Function 57(txval021): 56(ptr) Variable Function 69(txval004): 12(ptr) Variable Function 79(txval014): 40(ptr) Variable Function 87(txval024): 56(ptr) Variable Function 95(txval401): 12(ptr) Variable Function 102(txval411): 40(ptr) Variable Function 109(txval421): 56(ptr) Variable Function 117(psout): 116(ptr) Variable Function 17: 14 Load 16(g_tTex2df4) 21: 18 Load 20(g_sSampCmp) 23: 22 SampledImage 17 21 32: 31(ptr) AccessChain 28 30 33: 24(fvec2) Load 32 38: 7(fvec4) ImageDrefGather 23 33 34 ConstOffset 37 Store 13(txval001) 38 45: 42 Load 44(g_tTex2di4) 46: 18 Load 20(g_sSampCmp) 48: 47 SampledImage 45 46 49: 31(ptr) AccessChain 28 30 50: 24(fvec2) Load 49 53: 39(ivec4) ImageDrefGather 48 50 34 ConstOffset 52 Store 41(txval011) 53 61: 58 Load 60(g_tTex2du4) 62: 18 Load 20(g_sSampCmp) 64: 63 SampledImage 61 62 65: 31(ptr) AccessChain 28 30 66: 24(fvec2) Load 65 68: 55(ivec4) ImageDrefGather 64 66 34 ConstOffset 67 Store 57(txval021) 68 70: 14 Load 16(g_tTex2df4) 71: 18 Load 20(g_sSampCmp) 72: 22 SampledImage 70 71 73: 31(ptr) AccessChain 28 30 74: 24(fvec2) Load 73 78: 7(fvec4) ImageDrefGather 72 74 34 ConstOffsets 77 Store 69(txval004) 78 80: 42 Load 44(g_tTex2di4) 81: 18 Load 20(g_sSampCmp) 82: 47 SampledImage 80 81 83: 31(ptr) AccessChain 28 30 84: 24(fvec2) Load 83 86: 39(ivec4) ImageDrefGather 82 84 34 ConstOffsets 85 Store 79(txval014) 86 88: 58 Load 60(g_tTex2du4) 89: 18 Load 20(g_sSampCmp) 90: 63 SampledImage 88 89 91: 31(ptr) AccessChain 28 30 92: 24(fvec2) Load 91 94: 55(ivec4) ImageDrefGather 90 92 34 ConstOffsets 93 Store 87(txval024) 94 96: 14 Load 16(g_tTex2df4) 97: 18 Load 20(g_sSampCmp) 98: 22 SampledImage 96 97 99: 31(ptr) AccessChain 28 30 100: 24(fvec2) Load 99 101: 7(fvec4) ImageDrefGather 98 100 34 ConstOffset 37 Store 95(txval401) 101 103: 42 Load 44(g_tTex2di4) 104: 18 Load 20(g_sSampCmp) 105: 47 SampledImage 103 104 106: 31(ptr) AccessChain 28 30 107: 24(fvec2) Load 106 108: 39(ivec4) ImageDrefGather 105 107 34 ConstOffset 52 Store 102(txval411) 108 110: 58 Load 60(g_tTex2du4) 111: 18 Load 20(g_sSampCmp) 112: 63 SampledImage 110 111 113: 31(ptr) AccessChain 28 30 114: 24(fvec2) Load 113 115: 55(ivec4) ImageDrefGather 112 114 34 ConstOffset 67 Store 109(txval421) 115 120: 12(ptr) AccessChain 117(psout) 36 Store 120 119 122: 121(ptr) AccessChain 117(psout) 30 Store 122 118 123:8(PS_OUTPUT) Load 117(psout) ReturnValue 123 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.getdimensions.dx10.frag.out000066400000000000000000004630401506534232700245110ustar00rootroot00000000000000hlsl.getdimensions.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Function Parameters: 0:? Sequence 0:65 Sequence 0:65 move second child to first child ( temp uint) 0:65 'sizeQueryTemp' ( temp uint) 0:65 textureSize ( temp uint) 0:65 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:65 Constant: 0:65 0 (const int) 0:65 move second child to first child ( temp uint) 0:65 'WidthU' ( temp uint) 0:65 'sizeQueryTemp' ( temp uint) 0:66 Sequence 0:66 move second child to first child ( temp uint) 0:66 'sizeQueryTemp' ( temp uint) 0:66 textureSize ( temp uint) 0:66 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:66 Constant: 0:66 6 (const uint) 0:66 move second child to first child ( temp uint) 0:66 'WidthU' ( temp uint) 0:66 'sizeQueryTemp' ( temp uint) 0:66 move second child to first child ( temp uint) 0:66 'NumberOfLevelsU' ( temp uint) 0:66 textureQueryLevels ( temp uint) 0:66 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:69 Sequence 0:69 move second child to first child ( temp uint) 0:69 'sizeQueryTemp' ( temp uint) 0:69 textureSize ( temp uint) 0:69 'g_tTex1di4' ( uniform itexture1D) 0:69 Constant: 0:69 0 (const int) 0:69 move second child to first child ( temp uint) 0:69 'WidthU' ( temp uint) 0:69 'sizeQueryTemp' ( temp uint) 0:70 Sequence 0:70 move second child to first child ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:70 textureSize ( temp uint) 0:70 'g_tTex1di4' ( uniform itexture1D) 0:70 Constant: 0:70 6 (const uint) 0:70 move second child to first child ( temp uint) 0:70 'WidthU' ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:70 move second child to first child ( temp uint) 0:70 'NumberOfLevelsU' ( temp uint) 0:70 textureQueryLevels ( temp uint) 0:70 'g_tTex1di4' ( uniform itexture1D) 0:73 Sequence 0:73 move second child to first child ( temp uint) 0:73 'sizeQueryTemp' ( temp uint) 0:73 textureSize ( temp uint) 0:73 'g_tTex1du4' ( uniform utexture1D) 0:73 Constant: 0:73 0 (const int) 0:73 move second child to first child ( temp uint) 0:73 'WidthU' ( temp uint) 0:73 'sizeQueryTemp' ( temp uint) 0:74 Sequence 0:74 move second child to first child ( temp uint) 0:74 'sizeQueryTemp' ( temp uint) 0:74 textureSize ( temp uint) 0:74 'g_tTex1du4' ( uniform utexture1D) 0:74 Constant: 0:74 6 (const uint) 0:74 move second child to first child ( temp uint) 0:74 'WidthU' ( temp uint) 0:74 'sizeQueryTemp' ( temp uint) 0:74 move second child to first child ( temp uint) 0:74 'NumberOfLevelsU' ( temp uint) 0:74 textureQueryLevels ( temp uint) 0:74 'g_tTex1du4' ( uniform utexture1D) 0:77 Sequence 0:77 move second child to first child ( temp 2-component vector of uint) 0:77 'sizeQueryTemp' ( temp 2-component vector of uint) 0:77 textureSize ( temp 2-component vector of uint) 0:77 'g_tTex1df4a' ( uniform texture1DArray) 0:77 Constant: 0:77 0 (const int) 0:77 move second child to first child ( temp uint) 0:77 'WidthU' ( temp uint) 0:77 direct index ( temp uint) 0:77 'sizeQueryTemp' ( temp 2-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 move second child to first child ( temp uint) 0:77 'ElementsU' ( temp uint) 0:77 direct index ( temp uint) 0:77 'sizeQueryTemp' ( temp 2-component vector of uint) 0:77 Constant: 0:77 1 (const int) 0:78 Sequence 0:78 move second child to first child ( temp 2-component vector of uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 textureSize ( temp 2-component vector of uint) 0:78 'g_tTex1df4a' ( uniform texture1DArray) 0:78 Constant: 0:78 6 (const uint) 0:78 move second child to first child ( temp uint) 0:78 'WidthU' ( temp uint) 0:78 direct index ( temp uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 Constant: 0:78 0 (const int) 0:78 move second child to first child ( temp uint) 0:78 'ElementsU' ( temp uint) 0:78 direct index ( temp uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 Constant: 0:78 1 (const int) 0:78 move second child to first child ( temp uint) 0:78 'NumberOfLevelsU' ( temp uint) 0:78 textureQueryLevels ( temp uint) 0:78 'g_tTex1df4a' ( uniform texture1DArray) 0:81 Sequence 0:81 move second child to first child ( temp 2-component vector of uint) 0:81 'sizeQueryTemp' ( temp 2-component vector of uint) 0:81 textureSize ( temp 2-component vector of uint) 0:81 'g_tTex1di4a' ( uniform itexture1DArray) 0:81 Constant: 0:81 0 (const int) 0:81 move second child to first child ( temp uint) 0:81 'WidthU' ( temp uint) 0:81 direct index ( temp uint) 0:81 'sizeQueryTemp' ( temp 2-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 move second child to first child ( temp uint) 0:81 'ElementsU' ( temp uint) 0:81 direct index ( temp uint) 0:81 'sizeQueryTemp' ( temp 2-component vector of uint) 0:81 Constant: 0:81 1 (const int) 0:82 Sequence 0:82 move second child to first child ( temp 2-component vector of uint) 0:82 'sizeQueryTemp' ( temp 2-component vector of uint) 0:82 textureSize ( temp 2-component vector of uint) 0:82 'g_tTex1di4a' ( uniform itexture1DArray) 0:82 Constant: 0:82 6 (const uint) 0:82 move second child to first child ( temp uint) 0:82 'WidthU' ( temp uint) 0:82 direct index ( temp uint) 0:82 'sizeQueryTemp' ( temp 2-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 move second child to first child ( temp uint) 0:82 'ElementsU' ( temp uint) 0:82 direct index ( temp uint) 0:82 'sizeQueryTemp' ( temp 2-component vector of uint) 0:82 Constant: 0:82 1 (const int) 0:82 move second child to first child ( temp uint) 0:82 'NumberOfLevelsU' ( temp uint) 0:82 textureQueryLevels ( temp uint) 0:82 'g_tTex1di4a' ( uniform itexture1DArray) 0:85 Sequence 0:85 move second child to first child ( temp 2-component vector of uint) 0:85 'sizeQueryTemp' ( temp 2-component vector of uint) 0:85 textureSize ( temp 2-component vector of uint) 0:85 'g_tTex1du4a' ( uniform utexture1DArray) 0:85 Constant: 0:85 0 (const int) 0:85 move second child to first child ( temp uint) 0:85 'WidthU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 2-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 move second child to first child ( temp uint) 0:85 'ElementsU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 2-component vector of uint) 0:85 Constant: 0:85 1 (const int) 0:86 Sequence 0:86 move second child to first child ( temp 2-component vector of uint) 0:86 'sizeQueryTemp' ( temp 2-component vector of uint) 0:86 textureSize ( temp 2-component vector of uint) 0:86 'g_tTex1du4a' ( uniform utexture1DArray) 0:86 Constant: 0:86 6 (const uint) 0:86 move second child to first child ( temp uint) 0:86 'WidthU' ( temp uint) 0:86 direct index ( temp uint) 0:86 'sizeQueryTemp' ( temp 2-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 move second child to first child ( temp uint) 0:86 'ElementsU' ( temp uint) 0:86 direct index ( temp uint) 0:86 'sizeQueryTemp' ( temp 2-component vector of uint) 0:86 Constant: 0:86 1 (const int) 0:86 move second child to first child ( temp uint) 0:86 'NumberOfLevelsU' ( temp uint) 0:86 textureQueryLevels ( temp uint) 0:86 'g_tTex1du4a' ( uniform utexture1DArray) 0:89 Sequence 0:89 move second child to first child ( temp 2-component vector of uint) 0:89 'sizeQueryTemp' ( temp 2-component vector of uint) 0:89 textureSize ( temp 2-component vector of uint) 0:89 'g_tTex2df4' ( uniform texture2D) 0:89 Constant: 0:89 0 (const int) 0:89 move second child to first child ( temp uint) 0:89 'WidthU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 2-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 move second child to first child ( temp uint) 0:89 'HeightU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 2-component vector of uint) 0:89 Constant: 0:89 1 (const int) 0:90 Sequence 0:90 move second child to first child ( temp 2-component vector of uint) 0:90 'sizeQueryTemp' ( temp 2-component vector of uint) 0:90 textureSize ( temp 2-component vector of uint) 0:90 'g_tTex2df4' ( uniform texture2D) 0:90 Constant: 0:90 6 (const uint) 0:90 move second child to first child ( temp uint) 0:90 'WidthU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 2-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 move second child to first child ( temp uint) 0:90 'HeightU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 2-component vector of uint) 0:90 Constant: 0:90 1 (const int) 0:90 move second child to first child ( temp uint) 0:90 'NumberOfLevelsU' ( temp uint) 0:90 textureQueryLevels ( temp uint) 0:90 'g_tTex2df4' ( uniform texture2D) 0:93 Sequence 0:93 move second child to first child ( temp 2-component vector of uint) 0:93 'sizeQueryTemp' ( temp 2-component vector of uint) 0:93 textureSize ( temp 2-component vector of uint) 0:93 'g_tTex2di4' ( uniform itexture2D) 0:93 Constant: 0:93 0 (const int) 0:93 move second child to first child ( temp uint) 0:93 'WidthU' ( temp uint) 0:93 direct index ( temp uint) 0:93 'sizeQueryTemp' ( temp 2-component vector of uint) 0:93 Constant: 0:93 0 (const int) 0:93 move second child to first child ( temp uint) 0:93 'HeightU' ( temp uint) 0:93 direct index ( temp uint) 0:93 'sizeQueryTemp' ( temp 2-component vector of uint) 0:93 Constant: 0:93 1 (const int) 0:94 Sequence 0:94 move second child to first child ( temp 2-component vector of uint) 0:94 'sizeQueryTemp' ( temp 2-component vector of uint) 0:94 textureSize ( temp 2-component vector of uint) 0:94 'g_tTex2di4' ( uniform itexture2D) 0:94 Constant: 0:94 6 (const uint) 0:94 move second child to first child ( temp uint) 0:94 'WidthU' ( temp uint) 0:94 direct index ( temp uint) 0:94 'sizeQueryTemp' ( temp 2-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 move second child to first child ( temp uint) 0:94 'HeightU' ( temp uint) 0:94 direct index ( temp uint) 0:94 'sizeQueryTemp' ( temp 2-component vector of uint) 0:94 Constant: 0:94 1 (const int) 0:94 move second child to first child ( temp uint) 0:94 'NumberOfLevelsU' ( temp uint) 0:94 textureQueryLevels ( temp uint) 0:94 'g_tTex2di4' ( uniform itexture2D) 0:97 Sequence 0:97 move second child to first child ( temp 2-component vector of uint) 0:97 'sizeQueryTemp' ( temp 2-component vector of uint) 0:97 textureSize ( temp 2-component vector of uint) 0:97 'g_tTex2du4' ( uniform utexture2D) 0:97 Constant: 0:97 0 (const int) 0:97 move second child to first child ( temp uint) 0:97 'WidthU' ( temp uint) 0:97 direct index ( temp uint) 0:97 'sizeQueryTemp' ( temp 2-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 move second child to first child ( temp uint) 0:97 'HeightU' ( temp uint) 0:97 direct index ( temp uint) 0:97 'sizeQueryTemp' ( temp 2-component vector of uint) 0:97 Constant: 0:97 1 (const int) 0:98 Sequence 0:98 move second child to first child ( temp 2-component vector of uint) 0:98 'sizeQueryTemp' ( temp 2-component vector of uint) 0:98 textureSize ( temp 2-component vector of uint) 0:98 'g_tTex2du4' ( uniform utexture2D) 0:98 Constant: 0:98 6 (const uint) 0:98 move second child to first child ( temp uint) 0:98 'WidthU' ( temp uint) 0:98 direct index ( temp uint) 0:98 'sizeQueryTemp' ( temp 2-component vector of uint) 0:98 Constant: 0:98 0 (const int) 0:98 move second child to first child ( temp uint) 0:98 'HeightU' ( temp uint) 0:98 direct index ( temp uint) 0:98 'sizeQueryTemp' ( temp 2-component vector of uint) 0:98 Constant: 0:98 1 (const int) 0:98 move second child to first child ( temp uint) 0:98 'NumberOfLevelsU' ( temp uint) 0:98 textureQueryLevels ( temp uint) 0:98 'g_tTex2du4' ( uniform utexture2D) 0:101 Sequence 0:101 move second child to first child ( temp 3-component vector of uint) 0:101 'sizeQueryTemp' ( temp 3-component vector of uint) 0:101 textureSize ( temp 3-component vector of uint) 0:101 'g_tTex2df4a' ( uniform texture2DArray) 0:101 Constant: 0:101 0 (const int) 0:101 move second child to first child ( temp uint) 0:101 'WidthU' ( temp uint) 0:101 direct index ( temp uint) 0:101 'sizeQueryTemp' ( temp 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 move second child to first child ( temp uint) 0:101 'HeightU' ( temp uint) 0:101 direct index ( temp uint) 0:101 'sizeQueryTemp' ( temp 3-component vector of uint) 0:101 Constant: 0:101 1 (const int) 0:101 move second child to first child ( temp uint) 0:101 'ElementsU' ( temp uint) 0:101 direct index ( temp uint) 0:101 'sizeQueryTemp' ( temp 3-component vector of uint) 0:101 Constant: 0:101 2 (const int) 0:102 Sequence 0:102 move second child to first child ( temp 3-component vector of uint) 0:102 'sizeQueryTemp' ( temp 3-component vector of uint) 0:102 textureSize ( temp 3-component vector of uint) 0:102 'g_tTex2df4a' ( uniform texture2DArray) 0:102 Constant: 0:102 6 (const uint) 0:102 move second child to first child ( temp uint) 0:102 'WidthU' ( temp uint) 0:102 direct index ( temp uint) 0:102 'sizeQueryTemp' ( temp 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 move second child to first child ( temp uint) 0:102 'HeightU' ( temp uint) 0:102 direct index ( temp uint) 0:102 'sizeQueryTemp' ( temp 3-component vector of uint) 0:102 Constant: 0:102 1 (const int) 0:102 move second child to first child ( temp uint) 0:102 'ElementsU' ( temp uint) 0:102 direct index ( temp uint) 0:102 'sizeQueryTemp' ( temp 3-component vector of uint) 0:102 Constant: 0:102 2 (const int) 0:102 move second child to first child ( temp uint) 0:102 'NumberOfLevelsU' ( temp uint) 0:102 textureQueryLevels ( temp uint) 0:102 'g_tTex2df4a' ( uniform texture2DArray) 0:105 Sequence 0:105 move second child to first child ( temp 3-component vector of uint) 0:105 'sizeQueryTemp' ( temp 3-component vector of uint) 0:105 textureSize ( temp 3-component vector of uint) 0:105 'g_tTex2di4a' ( uniform itexture2DArray) 0:105 Constant: 0:105 0 (const int) 0:105 move second child to first child ( temp uint) 0:105 'WidthU' ( temp uint) 0:105 direct index ( temp uint) 0:105 'sizeQueryTemp' ( temp 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 move second child to first child ( temp uint) 0:105 'HeightU' ( temp uint) 0:105 direct index ( temp uint) 0:105 'sizeQueryTemp' ( temp 3-component vector of uint) 0:105 Constant: 0:105 1 (const int) 0:105 move second child to first child ( temp uint) 0:105 'ElementsU' ( temp uint) 0:105 direct index ( temp uint) 0:105 'sizeQueryTemp' ( temp 3-component vector of uint) 0:105 Constant: 0:105 2 (const int) 0:106 Sequence 0:106 move second child to first child ( temp 3-component vector of uint) 0:106 'sizeQueryTemp' ( temp 3-component vector of uint) 0:106 textureSize ( temp 3-component vector of uint) 0:106 'g_tTex2di4a' ( uniform itexture2DArray) 0:106 Constant: 0:106 6 (const uint) 0:106 move second child to first child ( temp uint) 0:106 'WidthU' ( temp uint) 0:106 direct index ( temp uint) 0:106 'sizeQueryTemp' ( temp 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 move second child to first child ( temp uint) 0:106 'HeightU' ( temp uint) 0:106 direct index ( temp uint) 0:106 'sizeQueryTemp' ( temp 3-component vector of uint) 0:106 Constant: 0:106 1 (const int) 0:106 move second child to first child ( temp uint) 0:106 'ElementsU' ( temp uint) 0:106 direct index ( temp uint) 0:106 'sizeQueryTemp' ( temp 3-component vector of uint) 0:106 Constant: 0:106 2 (const int) 0:106 move second child to first child ( temp uint) 0:106 'NumberOfLevelsU' ( temp uint) 0:106 textureQueryLevels ( temp uint) 0:106 'g_tTex2di4a' ( uniform itexture2DArray) 0:109 Sequence 0:109 move second child to first child ( temp 3-component vector of uint) 0:109 'sizeQueryTemp' ( temp 3-component vector of uint) 0:109 textureSize ( temp 3-component vector of uint) 0:109 'g_tTex2du4a' ( uniform utexture2DArray) 0:109 Constant: 0:109 0 (const int) 0:109 move second child to first child ( temp uint) 0:109 'WidthU' ( temp uint) 0:109 direct index ( temp uint) 0:109 'sizeQueryTemp' ( temp 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 move second child to first child ( temp uint) 0:109 'HeightU' ( temp uint) 0:109 direct index ( temp uint) 0:109 'sizeQueryTemp' ( temp 3-component vector of uint) 0:109 Constant: 0:109 1 (const int) 0:109 move second child to first child ( temp uint) 0:109 'ElementsU' ( temp uint) 0:109 direct index ( temp uint) 0:109 'sizeQueryTemp' ( temp 3-component vector of uint) 0:109 Constant: 0:109 2 (const int) 0:110 Sequence 0:110 move second child to first child ( temp 3-component vector of uint) 0:110 'sizeQueryTemp' ( temp 3-component vector of uint) 0:110 textureSize ( temp 3-component vector of uint) 0:110 'g_tTex2du4a' ( uniform utexture2DArray) 0:110 Constant: 0:110 6 (const uint) 0:110 move second child to first child ( temp uint) 0:110 'WidthU' ( temp uint) 0:110 direct index ( temp uint) 0:110 'sizeQueryTemp' ( temp 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 move second child to first child ( temp uint) 0:110 'HeightU' ( temp uint) 0:110 direct index ( temp uint) 0:110 'sizeQueryTemp' ( temp 3-component vector of uint) 0:110 Constant: 0:110 1 (const int) 0:110 move second child to first child ( temp uint) 0:110 'ElementsU' ( temp uint) 0:110 direct index ( temp uint) 0:110 'sizeQueryTemp' ( temp 3-component vector of uint) 0:110 Constant: 0:110 2 (const int) 0:110 move second child to first child ( temp uint) 0:110 'NumberOfLevelsU' ( temp uint) 0:110 textureQueryLevels ( temp uint) 0:110 'g_tTex2du4a' ( uniform utexture2DArray) 0:113 Sequence 0:113 move second child to first child ( temp 3-component vector of uint) 0:113 'sizeQueryTemp' ( temp 3-component vector of uint) 0:113 textureSize ( temp 3-component vector of uint) 0:113 'g_tTex3df4' ( uniform texture3D) 0:113 Constant: 0:113 0 (const int) 0:113 move second child to first child ( temp uint) 0:113 'WidthU' ( temp uint) 0:113 direct index ( temp uint) 0:113 'sizeQueryTemp' ( temp 3-component vector of uint) 0:113 Constant: 0:113 0 (const int) 0:113 move second child to first child ( temp uint) 0:113 'HeightU' ( temp uint) 0:113 direct index ( temp uint) 0:113 'sizeQueryTemp' ( temp 3-component vector of uint) 0:113 Constant: 0:113 1 (const int) 0:113 move second child to first child ( temp uint) 0:113 'DepthU' ( temp uint) 0:113 direct index ( temp uint) 0:113 'sizeQueryTemp' ( temp 3-component vector of uint) 0:113 Constant: 0:113 2 (const int) 0:114 Sequence 0:114 move second child to first child ( temp 3-component vector of uint) 0:114 'sizeQueryTemp' ( temp 3-component vector of uint) 0:114 textureSize ( temp 3-component vector of uint) 0:114 'g_tTex3df4' ( uniform texture3D) 0:114 Constant: 0:114 6 (const uint) 0:114 move second child to first child ( temp uint) 0:114 'WidthU' ( temp uint) 0:114 direct index ( temp uint) 0:114 'sizeQueryTemp' ( temp 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 move second child to first child ( temp uint) 0:114 'HeightU' ( temp uint) 0:114 direct index ( temp uint) 0:114 'sizeQueryTemp' ( temp 3-component vector of uint) 0:114 Constant: 0:114 1 (const int) 0:114 move second child to first child ( temp uint) 0:114 'DepthU' ( temp uint) 0:114 direct index ( temp uint) 0:114 'sizeQueryTemp' ( temp 3-component vector of uint) 0:114 Constant: 0:114 2 (const int) 0:114 move second child to first child ( temp uint) 0:114 'NumberOfLevelsU' ( temp uint) 0:114 textureQueryLevels ( temp uint) 0:114 'g_tTex3df4' ( uniform texture3D) 0:117 Sequence 0:117 move second child to first child ( temp 3-component vector of uint) 0:117 'sizeQueryTemp' ( temp 3-component vector of uint) 0:117 textureSize ( temp 3-component vector of uint) 0:117 'g_tTex3di4' ( uniform itexture3D) 0:117 Constant: 0:117 0 (const int) 0:117 move second child to first child ( temp uint) 0:117 'WidthU' ( temp uint) 0:117 direct index ( temp uint) 0:117 'sizeQueryTemp' ( temp 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 move second child to first child ( temp uint) 0:117 'HeightU' ( temp uint) 0:117 direct index ( temp uint) 0:117 'sizeQueryTemp' ( temp 3-component vector of uint) 0:117 Constant: 0:117 1 (const int) 0:117 move second child to first child ( temp uint) 0:117 'DepthU' ( temp uint) 0:117 direct index ( temp uint) 0:117 'sizeQueryTemp' ( temp 3-component vector of uint) 0:117 Constant: 0:117 2 (const int) 0:118 Sequence 0:118 move second child to first child ( temp 3-component vector of uint) 0:118 'sizeQueryTemp' ( temp 3-component vector of uint) 0:118 textureSize ( temp 3-component vector of uint) 0:118 'g_tTex3di4' ( uniform itexture3D) 0:118 Constant: 0:118 6 (const uint) 0:118 move second child to first child ( temp uint) 0:118 'WidthU' ( temp uint) 0:118 direct index ( temp uint) 0:118 'sizeQueryTemp' ( temp 3-component vector of uint) 0:118 Constant: 0:118 0 (const int) 0:118 move second child to first child ( temp uint) 0:118 'HeightU' ( temp uint) 0:118 direct index ( temp uint) 0:118 'sizeQueryTemp' ( temp 3-component vector of uint) 0:118 Constant: 0:118 1 (const int) 0:118 move second child to first child ( temp uint) 0:118 'DepthU' ( temp uint) 0:118 direct index ( temp uint) 0:118 'sizeQueryTemp' ( temp 3-component vector of uint) 0:118 Constant: 0:118 2 (const int) 0:118 move second child to first child ( temp uint) 0:118 'NumberOfLevelsU' ( temp uint) 0:118 textureQueryLevels ( temp uint) 0:118 'g_tTex3di4' ( uniform itexture3D) 0:121 Sequence 0:121 move second child to first child ( temp 3-component vector of uint) 0:121 'sizeQueryTemp' ( temp 3-component vector of uint) 0:121 textureSize ( temp 3-component vector of uint) 0:121 'g_tTex3du4' ( uniform utexture3D) 0:121 Constant: 0:121 0 (const int) 0:121 move second child to first child ( temp uint) 0:121 'WidthU' ( temp uint) 0:121 direct index ( temp uint) 0:121 'sizeQueryTemp' ( temp 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 move second child to first child ( temp uint) 0:121 'HeightU' ( temp uint) 0:121 direct index ( temp uint) 0:121 'sizeQueryTemp' ( temp 3-component vector of uint) 0:121 Constant: 0:121 1 (const int) 0:121 move second child to first child ( temp uint) 0:121 'DepthU' ( temp uint) 0:121 direct index ( temp uint) 0:121 'sizeQueryTemp' ( temp 3-component vector of uint) 0:121 Constant: 0:121 2 (const int) 0:122 Sequence 0:122 move second child to first child ( temp 3-component vector of uint) 0:122 'sizeQueryTemp' ( temp 3-component vector of uint) 0:122 textureSize ( temp 3-component vector of uint) 0:122 'g_tTex3du4' ( uniform utexture3D) 0:122 Constant: 0:122 6 (const uint) 0:122 move second child to first child ( temp uint) 0:122 'WidthU' ( temp uint) 0:122 direct index ( temp uint) 0:122 'sizeQueryTemp' ( temp 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 move second child to first child ( temp uint) 0:122 'HeightU' ( temp uint) 0:122 direct index ( temp uint) 0:122 'sizeQueryTemp' ( temp 3-component vector of uint) 0:122 Constant: 0:122 1 (const int) 0:122 move second child to first child ( temp uint) 0:122 'DepthU' ( temp uint) 0:122 direct index ( temp uint) 0:122 'sizeQueryTemp' ( temp 3-component vector of uint) 0:122 Constant: 0:122 2 (const int) 0:122 move second child to first child ( temp uint) 0:122 'NumberOfLevelsU' ( temp uint) 0:122 textureQueryLevels ( temp uint) 0:122 'g_tTex3du4' ( uniform utexture3D) 0:125 Sequence 0:125 move second child to first child ( temp 2-component vector of uint) 0:125 'sizeQueryTemp' ( temp 2-component vector of uint) 0:125 textureSize ( temp 2-component vector of uint) 0:125 'g_tTexcdf4' ( uniform textureCube) 0:125 Constant: 0:125 0 (const int) 0:125 move second child to first child ( temp uint) 0:125 'WidthU' ( temp uint) 0:125 direct index ( temp uint) 0:125 'sizeQueryTemp' ( temp 2-component vector of uint) 0:125 Constant: 0:125 0 (const int) 0:125 move second child to first child ( temp uint) 0:125 'HeightU' ( temp uint) 0:125 direct index ( temp uint) 0:125 'sizeQueryTemp' ( temp 2-component vector of uint) 0:125 Constant: 0:125 1 (const int) 0:126 Sequence 0:126 move second child to first child ( temp 2-component vector of uint) 0:126 'sizeQueryTemp' ( temp 2-component vector of uint) 0:126 textureSize ( temp 2-component vector of uint) 0:126 'g_tTexcdf4' ( uniform textureCube) 0:126 Constant: 0:126 6 (const uint) 0:126 move second child to first child ( temp uint) 0:126 'WidthU' ( temp uint) 0:126 direct index ( temp uint) 0:126 'sizeQueryTemp' ( temp 2-component vector of uint) 0:126 Constant: 0:126 0 (const int) 0:126 move second child to first child ( temp uint) 0:126 'HeightU' ( temp uint) 0:126 direct index ( temp uint) 0:126 'sizeQueryTemp' ( temp 2-component vector of uint) 0:126 Constant: 0:126 1 (const int) 0:126 move second child to first child ( temp uint) 0:126 'NumberOfLevelsU' ( temp uint) 0:126 textureQueryLevels ( temp uint) 0:126 'g_tTexcdf4' ( uniform textureCube) 0:129 Sequence 0:129 move second child to first child ( temp 2-component vector of uint) 0:129 'sizeQueryTemp' ( temp 2-component vector of uint) 0:129 textureSize ( temp 2-component vector of uint) 0:129 'g_tTexcdi4' ( uniform itextureCube) 0:129 Constant: 0:129 0 (const int) 0:129 move second child to first child ( temp uint) 0:129 'WidthU' ( temp uint) 0:129 direct index ( temp uint) 0:129 'sizeQueryTemp' ( temp 2-component vector of uint) 0:129 Constant: 0:129 0 (const int) 0:129 move second child to first child ( temp uint) 0:129 'HeightU' ( temp uint) 0:129 direct index ( temp uint) 0:129 'sizeQueryTemp' ( temp 2-component vector of uint) 0:129 Constant: 0:129 1 (const int) 0:130 Sequence 0:130 move second child to first child ( temp 2-component vector of uint) 0:130 'sizeQueryTemp' ( temp 2-component vector of uint) 0:130 textureSize ( temp 2-component vector of uint) 0:130 'g_tTexcdi4' ( uniform itextureCube) 0:130 Constant: 0:130 6 (const uint) 0:130 move second child to first child ( temp uint) 0:130 'WidthU' ( temp uint) 0:130 direct index ( temp uint) 0:130 'sizeQueryTemp' ( temp 2-component vector of uint) 0:130 Constant: 0:130 0 (const int) 0:130 move second child to first child ( temp uint) 0:130 'HeightU' ( temp uint) 0:130 direct index ( temp uint) 0:130 'sizeQueryTemp' ( temp 2-component vector of uint) 0:130 Constant: 0:130 1 (const int) 0:130 move second child to first child ( temp uint) 0:130 'NumberOfLevelsU' ( temp uint) 0:130 textureQueryLevels ( temp uint) 0:130 'g_tTexcdi4' ( uniform itextureCube) 0:133 Sequence 0:133 move second child to first child ( temp 2-component vector of uint) 0:133 'sizeQueryTemp' ( temp 2-component vector of uint) 0:133 textureSize ( temp 2-component vector of uint) 0:133 'g_tTexcdu4' ( uniform utextureCube) 0:133 Constant: 0:133 0 (const int) 0:133 move second child to first child ( temp uint) 0:133 'WidthU' ( temp uint) 0:133 direct index ( temp uint) 0:133 'sizeQueryTemp' ( temp 2-component vector of uint) 0:133 Constant: 0:133 0 (const int) 0:133 move second child to first child ( temp uint) 0:133 'HeightU' ( temp uint) 0:133 direct index ( temp uint) 0:133 'sizeQueryTemp' ( temp 2-component vector of uint) 0:133 Constant: 0:133 1 (const int) 0:134 Sequence 0:134 move second child to first child ( temp 2-component vector of uint) 0:134 'sizeQueryTemp' ( temp 2-component vector of uint) 0:134 textureSize ( temp 2-component vector of uint) 0:134 'g_tTexcdu4' ( uniform utextureCube) 0:134 Constant: 0:134 6 (const uint) 0:134 move second child to first child ( temp uint) 0:134 'WidthU' ( temp uint) 0:134 direct index ( temp uint) 0:134 'sizeQueryTemp' ( temp 2-component vector of uint) 0:134 Constant: 0:134 0 (const int) 0:134 move second child to first child ( temp uint) 0:134 'HeightU' ( temp uint) 0:134 direct index ( temp uint) 0:134 'sizeQueryTemp' ( temp 2-component vector of uint) 0:134 Constant: 0:134 1 (const int) 0:134 move second child to first child ( temp uint) 0:134 'NumberOfLevelsU' ( temp uint) 0:134 textureQueryLevels ( temp uint) 0:134 'g_tTexcdu4' ( uniform utextureCube) 0:137 Sequence 0:137 move second child to first child ( temp 3-component vector of uint) 0:137 'sizeQueryTemp' ( temp 3-component vector of uint) 0:137 textureSize ( temp 3-component vector of uint) 0:137 'g_tTexcdf4a' ( uniform textureCubeArray) 0:137 Constant: 0:137 0 (const int) 0:137 move second child to first child ( temp uint) 0:137 'WidthU' ( temp uint) 0:137 direct index ( temp uint) 0:137 'sizeQueryTemp' ( temp 3-component vector of uint) 0:137 Constant: 0:137 0 (const int) 0:137 move second child to first child ( temp uint) 0:137 'HeightU' ( temp uint) 0:137 direct index ( temp uint) 0:137 'sizeQueryTemp' ( temp 3-component vector of uint) 0:137 Constant: 0:137 1 (const int) 0:137 move second child to first child ( temp uint) 0:137 'ElementsU' ( temp uint) 0:137 direct index ( temp uint) 0:137 'sizeQueryTemp' ( temp 3-component vector of uint) 0:137 Constant: 0:137 2 (const int) 0:138 Sequence 0:138 move second child to first child ( temp 3-component vector of uint) 0:138 'sizeQueryTemp' ( temp 3-component vector of uint) 0:138 textureSize ( temp 3-component vector of uint) 0:138 'g_tTexcdf4a' ( uniform textureCubeArray) 0:138 Constant: 0:138 6 (const uint) 0:138 move second child to first child ( temp uint) 0:138 'WidthU' ( temp uint) 0:138 direct index ( temp uint) 0:138 'sizeQueryTemp' ( temp 3-component vector of uint) 0:138 Constant: 0:138 0 (const int) 0:138 move second child to first child ( temp uint) 0:138 'HeightU' ( temp uint) 0:138 direct index ( temp uint) 0:138 'sizeQueryTemp' ( temp 3-component vector of uint) 0:138 Constant: 0:138 1 (const int) 0:138 move second child to first child ( temp uint) 0:138 'ElementsU' ( temp uint) 0:138 direct index ( temp uint) 0:138 'sizeQueryTemp' ( temp 3-component vector of uint) 0:138 Constant: 0:138 2 (const int) 0:138 move second child to first child ( temp uint) 0:138 'NumberOfLevelsU' ( temp uint) 0:138 textureQueryLevels ( temp uint) 0:138 'g_tTexcdf4a' ( uniform textureCubeArray) 0:141 Sequence 0:141 move second child to first child ( temp 3-component vector of uint) 0:141 'sizeQueryTemp' ( temp 3-component vector of uint) 0:141 textureSize ( temp 3-component vector of uint) 0:141 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:141 Constant: 0:141 0 (const int) 0:141 move second child to first child ( temp uint) 0:141 'WidthU' ( temp uint) 0:141 direct index ( temp uint) 0:141 'sizeQueryTemp' ( temp 3-component vector of uint) 0:141 Constant: 0:141 0 (const int) 0:141 move second child to first child ( temp uint) 0:141 'HeightU' ( temp uint) 0:141 direct index ( temp uint) 0:141 'sizeQueryTemp' ( temp 3-component vector of uint) 0:141 Constant: 0:141 1 (const int) 0:141 move second child to first child ( temp uint) 0:141 'ElementsU' ( temp uint) 0:141 direct index ( temp uint) 0:141 'sizeQueryTemp' ( temp 3-component vector of uint) 0:141 Constant: 0:141 2 (const int) 0:142 Sequence 0:142 move second child to first child ( temp 3-component vector of uint) 0:142 'sizeQueryTemp' ( temp 3-component vector of uint) 0:142 textureSize ( temp 3-component vector of uint) 0:142 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:142 Constant: 0:142 6 (const uint) 0:142 move second child to first child ( temp uint) 0:142 'WidthU' ( temp uint) 0:142 direct index ( temp uint) 0:142 'sizeQueryTemp' ( temp 3-component vector of uint) 0:142 Constant: 0:142 0 (const int) 0:142 move second child to first child ( temp uint) 0:142 'HeightU' ( temp uint) 0:142 direct index ( temp uint) 0:142 'sizeQueryTemp' ( temp 3-component vector of uint) 0:142 Constant: 0:142 1 (const int) 0:142 move second child to first child ( temp uint) 0:142 'ElementsU' ( temp uint) 0:142 direct index ( temp uint) 0:142 'sizeQueryTemp' ( temp 3-component vector of uint) 0:142 Constant: 0:142 2 (const int) 0:142 move second child to first child ( temp uint) 0:142 'NumberOfLevelsU' ( temp uint) 0:142 textureQueryLevels ( temp uint) 0:142 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:145 Sequence 0:145 move second child to first child ( temp 3-component vector of uint) 0:145 'sizeQueryTemp' ( temp 3-component vector of uint) 0:145 textureSize ( temp 3-component vector of uint) 0:145 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:145 Constant: 0:145 0 (const int) 0:145 move second child to first child ( temp uint) 0:145 'WidthU' ( temp uint) 0:145 direct index ( temp uint) 0:145 'sizeQueryTemp' ( temp 3-component vector of uint) 0:145 Constant: 0:145 0 (const int) 0:145 move second child to first child ( temp uint) 0:145 'HeightU' ( temp uint) 0:145 direct index ( temp uint) 0:145 'sizeQueryTemp' ( temp 3-component vector of uint) 0:145 Constant: 0:145 1 (const int) 0:145 move second child to first child ( temp uint) 0:145 'ElementsU' ( temp uint) 0:145 direct index ( temp uint) 0:145 'sizeQueryTemp' ( temp 3-component vector of uint) 0:145 Constant: 0:145 2 (const int) 0:146 Sequence 0:146 move second child to first child ( temp 3-component vector of uint) 0:146 'sizeQueryTemp' ( temp 3-component vector of uint) 0:146 textureSize ( temp 3-component vector of uint) 0:146 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:146 Constant: 0:146 6 (const uint) 0:146 move second child to first child ( temp uint) 0:146 'WidthU' ( temp uint) 0:146 direct index ( temp uint) 0:146 'sizeQueryTemp' ( temp 3-component vector of uint) 0:146 Constant: 0:146 0 (const int) 0:146 move second child to first child ( temp uint) 0:146 'HeightU' ( temp uint) 0:146 direct index ( temp uint) 0:146 'sizeQueryTemp' ( temp 3-component vector of uint) 0:146 Constant: 0:146 1 (const int) 0:146 move second child to first child ( temp uint) 0:146 'ElementsU' ( temp uint) 0:146 direct index ( temp uint) 0:146 'sizeQueryTemp' ( temp 3-component vector of uint) 0:146 Constant: 0:146 2 (const int) 0:146 move second child to first child ( temp uint) 0:146 'NumberOfLevelsU' ( temp uint) 0:146 textureQueryLevels ( temp uint) 0:146 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:149 Sequence 0:149 move second child to first child ( temp 2-component vector of uint) 0:149 'sizeQueryTemp' ( temp 2-component vector of uint) 0:149 textureSize ( temp 2-component vector of uint) 0:149 'g_tTex2dmsf4' ( uniform texture2DMS) 0:149 move second child to first child ( temp uint) 0:149 'WidthU' ( temp uint) 0:149 direct index ( temp uint) 0:149 'sizeQueryTemp' ( temp 2-component vector of uint) 0:149 Constant: 0:149 0 (const int) 0:149 move second child to first child ( temp uint) 0:149 'HeightU' ( temp uint) 0:149 direct index ( temp uint) 0:149 'sizeQueryTemp' ( temp 2-component vector of uint) 0:149 Constant: 0:149 1 (const int) 0:149 move second child to first child ( temp uint) 0:149 'NumberOfSamplesU' ( temp uint) 0:149 imageQuerySamples ( temp uint) 0:149 'g_tTex2dmsf4' ( uniform texture2DMS) 0:152 Sequence 0:152 move second child to first child ( temp 2-component vector of uint) 0:152 'sizeQueryTemp' ( temp 2-component vector of uint) 0:152 textureSize ( temp 2-component vector of uint) 0:152 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:152 move second child to first child ( temp uint) 0:152 'WidthU' ( temp uint) 0:152 direct index ( temp uint) 0:152 'sizeQueryTemp' ( temp 2-component vector of uint) 0:152 Constant: 0:152 0 (const int) 0:152 move second child to first child ( temp uint) 0:152 'HeightU' ( temp uint) 0:152 direct index ( temp uint) 0:152 'sizeQueryTemp' ( temp 2-component vector of uint) 0:152 Constant: 0:152 1 (const int) 0:152 move second child to first child ( temp uint) 0:152 'NumberOfSamplesU' ( temp uint) 0:152 imageQuerySamples ( temp uint) 0:152 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:155 Sequence 0:155 move second child to first child ( temp 2-component vector of uint) 0:155 'sizeQueryTemp' ( temp 2-component vector of uint) 0:155 textureSize ( temp 2-component vector of uint) 0:155 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:155 move second child to first child ( temp uint) 0:155 'WidthU' ( temp uint) 0:155 direct index ( temp uint) 0:155 'sizeQueryTemp' ( temp 2-component vector of uint) 0:155 Constant: 0:155 0 (const int) 0:155 move second child to first child ( temp uint) 0:155 'HeightU' ( temp uint) 0:155 direct index ( temp uint) 0:155 'sizeQueryTemp' ( temp 2-component vector of uint) 0:155 Constant: 0:155 1 (const int) 0:155 move second child to first child ( temp uint) 0:155 'NumberOfSamplesU' ( temp uint) 0:155 imageQuerySamples ( temp uint) 0:155 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:158 Sequence 0:158 move second child to first child ( temp 3-component vector of uint) 0:158 'sizeQueryTemp' ( temp 3-component vector of uint) 0:158 textureSize ( temp 3-component vector of uint) 0:158 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:158 move second child to first child ( temp uint) 0:158 'WidthU' ( temp uint) 0:158 direct index ( temp uint) 0:158 'sizeQueryTemp' ( temp 3-component vector of uint) 0:158 Constant: 0:158 0 (const int) 0:158 move second child to first child ( temp uint) 0:158 'HeightU' ( temp uint) 0:158 direct index ( temp uint) 0:158 'sizeQueryTemp' ( temp 3-component vector of uint) 0:158 Constant: 0:158 1 (const int) 0:158 move second child to first child ( temp uint) 0:158 'ElementsU' ( temp uint) 0:158 direct index ( temp uint) 0:158 'sizeQueryTemp' ( temp 3-component vector of uint) 0:158 Constant: 0:158 2 (const int) 0:158 move second child to first child ( temp uint) 0:158 'NumberOfSamplesU' ( temp uint) 0:158 imageQuerySamples ( temp uint) 0:158 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:161 Sequence 0:161 move second child to first child ( temp 3-component vector of uint) 0:161 'sizeQueryTemp' ( temp 3-component vector of uint) 0:161 textureSize ( temp 3-component vector of uint) 0:161 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:161 move second child to first child ( temp uint) 0:161 'WidthU' ( temp uint) 0:161 direct index ( temp uint) 0:161 'sizeQueryTemp' ( temp 3-component vector of uint) 0:161 Constant: 0:161 0 (const int) 0:161 move second child to first child ( temp uint) 0:161 'HeightU' ( temp uint) 0:161 direct index ( temp uint) 0:161 'sizeQueryTemp' ( temp 3-component vector of uint) 0:161 Constant: 0:161 1 (const int) 0:161 move second child to first child ( temp uint) 0:161 'ElementsU' ( temp uint) 0:161 direct index ( temp uint) 0:161 'sizeQueryTemp' ( temp 3-component vector of uint) 0:161 Constant: 0:161 2 (const int) 0:161 move second child to first child ( temp uint) 0:161 'NumberOfSamplesU' ( temp uint) 0:161 imageQuerySamples ( temp uint) 0:161 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:164 Sequence 0:164 move second child to first child ( temp 3-component vector of uint) 0:164 'sizeQueryTemp' ( temp 3-component vector of uint) 0:164 textureSize ( temp 3-component vector of uint) 0:164 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:164 move second child to first child ( temp uint) 0:164 'WidthU' ( temp uint) 0:164 direct index ( temp uint) 0:164 'sizeQueryTemp' ( temp 3-component vector of uint) 0:164 Constant: 0:164 0 (const int) 0:164 move second child to first child ( temp uint) 0:164 'HeightU' ( temp uint) 0:164 direct index ( temp uint) 0:164 'sizeQueryTemp' ( temp 3-component vector of uint) 0:164 Constant: 0:164 1 (const int) 0:164 move second child to first child ( temp uint) 0:164 'ElementsU' ( temp uint) 0:164 direct index ( temp uint) 0:164 'sizeQueryTemp' ( temp 3-component vector of uint) 0:164 Constant: 0:164 2 (const int) 0:164 move second child to first child ( temp uint) 0:164 'NumberOfSamplesU' ( temp uint) 0:164 imageQuerySamples ( temp uint) 0:164 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:276 move second child to first child ( temp 4-component vector of float) 0:276 Color: direct index for structure ( temp 4-component vector of float) 0:276 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 1.000000 0:276 1.000000 0:276 1.000000 0:276 1.000000 0:277 move second child to first child ( temp float) 0:277 Depth: direct index for structure ( temp float) 0:277 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 1.000000 0:279 Branch: Return with expression 0:279 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Function Definition: main( ( temp void) 0:46 Function Parameters: 0:? Sequence 0:46 Sequence 0:46 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:46 Color: direct index for structure ( temp 4-component vector of float) 0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 0 (const int) 0:46 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:46 Depth: direct index for structure ( temp float) 0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'g_tTex2dmsf4' ( uniform texture2DMS) 0:? 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:? 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Function Parameters: 0:? Sequence 0:65 Sequence 0:65 move second child to first child ( temp uint) 0:65 'sizeQueryTemp' ( temp uint) 0:65 textureSize ( temp uint) 0:65 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:65 Constant: 0:65 0 (const int) 0:65 move second child to first child ( temp uint) 0:65 'WidthU' ( temp uint) 0:65 'sizeQueryTemp' ( temp uint) 0:66 Sequence 0:66 move second child to first child ( temp uint) 0:66 'sizeQueryTemp' ( temp uint) 0:66 textureSize ( temp uint) 0:66 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:66 Constant: 0:66 6 (const uint) 0:66 move second child to first child ( temp uint) 0:66 'WidthU' ( temp uint) 0:66 'sizeQueryTemp' ( temp uint) 0:66 move second child to first child ( temp uint) 0:66 'NumberOfLevelsU' ( temp uint) 0:66 textureQueryLevels ( temp uint) 0:66 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:69 Sequence 0:69 move second child to first child ( temp uint) 0:69 'sizeQueryTemp' ( temp uint) 0:69 textureSize ( temp uint) 0:69 'g_tTex1di4' ( uniform itexture1D) 0:69 Constant: 0:69 0 (const int) 0:69 move second child to first child ( temp uint) 0:69 'WidthU' ( temp uint) 0:69 'sizeQueryTemp' ( temp uint) 0:70 Sequence 0:70 move second child to first child ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:70 textureSize ( temp uint) 0:70 'g_tTex1di4' ( uniform itexture1D) 0:70 Constant: 0:70 6 (const uint) 0:70 move second child to first child ( temp uint) 0:70 'WidthU' ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:70 move second child to first child ( temp uint) 0:70 'NumberOfLevelsU' ( temp uint) 0:70 textureQueryLevels ( temp uint) 0:70 'g_tTex1di4' ( uniform itexture1D) 0:73 Sequence 0:73 move second child to first child ( temp uint) 0:73 'sizeQueryTemp' ( temp uint) 0:73 textureSize ( temp uint) 0:73 'g_tTex1du4' ( uniform utexture1D) 0:73 Constant: 0:73 0 (const int) 0:73 move second child to first child ( temp uint) 0:73 'WidthU' ( temp uint) 0:73 'sizeQueryTemp' ( temp uint) 0:74 Sequence 0:74 move second child to first child ( temp uint) 0:74 'sizeQueryTemp' ( temp uint) 0:74 textureSize ( temp uint) 0:74 'g_tTex1du4' ( uniform utexture1D) 0:74 Constant: 0:74 6 (const uint) 0:74 move second child to first child ( temp uint) 0:74 'WidthU' ( temp uint) 0:74 'sizeQueryTemp' ( temp uint) 0:74 move second child to first child ( temp uint) 0:74 'NumberOfLevelsU' ( temp uint) 0:74 textureQueryLevels ( temp uint) 0:74 'g_tTex1du4' ( uniform utexture1D) 0:77 Sequence 0:77 move second child to first child ( temp 2-component vector of uint) 0:77 'sizeQueryTemp' ( temp 2-component vector of uint) 0:77 textureSize ( temp 2-component vector of uint) 0:77 'g_tTex1df4a' ( uniform texture1DArray) 0:77 Constant: 0:77 0 (const int) 0:77 move second child to first child ( temp uint) 0:77 'WidthU' ( temp uint) 0:77 direct index ( temp uint) 0:77 'sizeQueryTemp' ( temp 2-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 move second child to first child ( temp uint) 0:77 'ElementsU' ( temp uint) 0:77 direct index ( temp uint) 0:77 'sizeQueryTemp' ( temp 2-component vector of uint) 0:77 Constant: 0:77 1 (const int) 0:78 Sequence 0:78 move second child to first child ( temp 2-component vector of uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 textureSize ( temp 2-component vector of uint) 0:78 'g_tTex1df4a' ( uniform texture1DArray) 0:78 Constant: 0:78 6 (const uint) 0:78 move second child to first child ( temp uint) 0:78 'WidthU' ( temp uint) 0:78 direct index ( temp uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 Constant: 0:78 0 (const int) 0:78 move second child to first child ( temp uint) 0:78 'ElementsU' ( temp uint) 0:78 direct index ( temp uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 Constant: 0:78 1 (const int) 0:78 move second child to first child ( temp uint) 0:78 'NumberOfLevelsU' ( temp uint) 0:78 textureQueryLevels ( temp uint) 0:78 'g_tTex1df4a' ( uniform texture1DArray) 0:81 Sequence 0:81 move second child to first child ( temp 2-component vector of uint) 0:81 'sizeQueryTemp' ( temp 2-component vector of uint) 0:81 textureSize ( temp 2-component vector of uint) 0:81 'g_tTex1di4a' ( uniform itexture1DArray) 0:81 Constant: 0:81 0 (const int) 0:81 move second child to first child ( temp uint) 0:81 'WidthU' ( temp uint) 0:81 direct index ( temp uint) 0:81 'sizeQueryTemp' ( temp 2-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 move second child to first child ( temp uint) 0:81 'ElementsU' ( temp uint) 0:81 direct index ( temp uint) 0:81 'sizeQueryTemp' ( temp 2-component vector of uint) 0:81 Constant: 0:81 1 (const int) 0:82 Sequence 0:82 move second child to first child ( temp 2-component vector of uint) 0:82 'sizeQueryTemp' ( temp 2-component vector of uint) 0:82 textureSize ( temp 2-component vector of uint) 0:82 'g_tTex1di4a' ( uniform itexture1DArray) 0:82 Constant: 0:82 6 (const uint) 0:82 move second child to first child ( temp uint) 0:82 'WidthU' ( temp uint) 0:82 direct index ( temp uint) 0:82 'sizeQueryTemp' ( temp 2-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 move second child to first child ( temp uint) 0:82 'ElementsU' ( temp uint) 0:82 direct index ( temp uint) 0:82 'sizeQueryTemp' ( temp 2-component vector of uint) 0:82 Constant: 0:82 1 (const int) 0:82 move second child to first child ( temp uint) 0:82 'NumberOfLevelsU' ( temp uint) 0:82 textureQueryLevels ( temp uint) 0:82 'g_tTex1di4a' ( uniform itexture1DArray) 0:85 Sequence 0:85 move second child to first child ( temp 2-component vector of uint) 0:85 'sizeQueryTemp' ( temp 2-component vector of uint) 0:85 textureSize ( temp 2-component vector of uint) 0:85 'g_tTex1du4a' ( uniform utexture1DArray) 0:85 Constant: 0:85 0 (const int) 0:85 move second child to first child ( temp uint) 0:85 'WidthU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 2-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 move second child to first child ( temp uint) 0:85 'ElementsU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 2-component vector of uint) 0:85 Constant: 0:85 1 (const int) 0:86 Sequence 0:86 move second child to first child ( temp 2-component vector of uint) 0:86 'sizeQueryTemp' ( temp 2-component vector of uint) 0:86 textureSize ( temp 2-component vector of uint) 0:86 'g_tTex1du4a' ( uniform utexture1DArray) 0:86 Constant: 0:86 6 (const uint) 0:86 move second child to first child ( temp uint) 0:86 'WidthU' ( temp uint) 0:86 direct index ( temp uint) 0:86 'sizeQueryTemp' ( temp 2-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 move second child to first child ( temp uint) 0:86 'ElementsU' ( temp uint) 0:86 direct index ( temp uint) 0:86 'sizeQueryTemp' ( temp 2-component vector of uint) 0:86 Constant: 0:86 1 (const int) 0:86 move second child to first child ( temp uint) 0:86 'NumberOfLevelsU' ( temp uint) 0:86 textureQueryLevels ( temp uint) 0:86 'g_tTex1du4a' ( uniform utexture1DArray) 0:89 Sequence 0:89 move second child to first child ( temp 2-component vector of uint) 0:89 'sizeQueryTemp' ( temp 2-component vector of uint) 0:89 textureSize ( temp 2-component vector of uint) 0:89 'g_tTex2df4' ( uniform texture2D) 0:89 Constant: 0:89 0 (const int) 0:89 move second child to first child ( temp uint) 0:89 'WidthU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 2-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 move second child to first child ( temp uint) 0:89 'HeightU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 2-component vector of uint) 0:89 Constant: 0:89 1 (const int) 0:90 Sequence 0:90 move second child to first child ( temp 2-component vector of uint) 0:90 'sizeQueryTemp' ( temp 2-component vector of uint) 0:90 textureSize ( temp 2-component vector of uint) 0:90 'g_tTex2df4' ( uniform texture2D) 0:90 Constant: 0:90 6 (const uint) 0:90 move second child to first child ( temp uint) 0:90 'WidthU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 2-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 move second child to first child ( temp uint) 0:90 'HeightU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 2-component vector of uint) 0:90 Constant: 0:90 1 (const int) 0:90 move second child to first child ( temp uint) 0:90 'NumberOfLevelsU' ( temp uint) 0:90 textureQueryLevels ( temp uint) 0:90 'g_tTex2df4' ( uniform texture2D) 0:93 Sequence 0:93 move second child to first child ( temp 2-component vector of uint) 0:93 'sizeQueryTemp' ( temp 2-component vector of uint) 0:93 textureSize ( temp 2-component vector of uint) 0:93 'g_tTex2di4' ( uniform itexture2D) 0:93 Constant: 0:93 0 (const int) 0:93 move second child to first child ( temp uint) 0:93 'WidthU' ( temp uint) 0:93 direct index ( temp uint) 0:93 'sizeQueryTemp' ( temp 2-component vector of uint) 0:93 Constant: 0:93 0 (const int) 0:93 move second child to first child ( temp uint) 0:93 'HeightU' ( temp uint) 0:93 direct index ( temp uint) 0:93 'sizeQueryTemp' ( temp 2-component vector of uint) 0:93 Constant: 0:93 1 (const int) 0:94 Sequence 0:94 move second child to first child ( temp 2-component vector of uint) 0:94 'sizeQueryTemp' ( temp 2-component vector of uint) 0:94 textureSize ( temp 2-component vector of uint) 0:94 'g_tTex2di4' ( uniform itexture2D) 0:94 Constant: 0:94 6 (const uint) 0:94 move second child to first child ( temp uint) 0:94 'WidthU' ( temp uint) 0:94 direct index ( temp uint) 0:94 'sizeQueryTemp' ( temp 2-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 move second child to first child ( temp uint) 0:94 'HeightU' ( temp uint) 0:94 direct index ( temp uint) 0:94 'sizeQueryTemp' ( temp 2-component vector of uint) 0:94 Constant: 0:94 1 (const int) 0:94 move second child to first child ( temp uint) 0:94 'NumberOfLevelsU' ( temp uint) 0:94 textureQueryLevels ( temp uint) 0:94 'g_tTex2di4' ( uniform itexture2D) 0:97 Sequence 0:97 move second child to first child ( temp 2-component vector of uint) 0:97 'sizeQueryTemp' ( temp 2-component vector of uint) 0:97 textureSize ( temp 2-component vector of uint) 0:97 'g_tTex2du4' ( uniform utexture2D) 0:97 Constant: 0:97 0 (const int) 0:97 move second child to first child ( temp uint) 0:97 'WidthU' ( temp uint) 0:97 direct index ( temp uint) 0:97 'sizeQueryTemp' ( temp 2-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 move second child to first child ( temp uint) 0:97 'HeightU' ( temp uint) 0:97 direct index ( temp uint) 0:97 'sizeQueryTemp' ( temp 2-component vector of uint) 0:97 Constant: 0:97 1 (const int) 0:98 Sequence 0:98 move second child to first child ( temp 2-component vector of uint) 0:98 'sizeQueryTemp' ( temp 2-component vector of uint) 0:98 textureSize ( temp 2-component vector of uint) 0:98 'g_tTex2du4' ( uniform utexture2D) 0:98 Constant: 0:98 6 (const uint) 0:98 move second child to first child ( temp uint) 0:98 'WidthU' ( temp uint) 0:98 direct index ( temp uint) 0:98 'sizeQueryTemp' ( temp 2-component vector of uint) 0:98 Constant: 0:98 0 (const int) 0:98 move second child to first child ( temp uint) 0:98 'HeightU' ( temp uint) 0:98 direct index ( temp uint) 0:98 'sizeQueryTemp' ( temp 2-component vector of uint) 0:98 Constant: 0:98 1 (const int) 0:98 move second child to first child ( temp uint) 0:98 'NumberOfLevelsU' ( temp uint) 0:98 textureQueryLevels ( temp uint) 0:98 'g_tTex2du4' ( uniform utexture2D) 0:101 Sequence 0:101 move second child to first child ( temp 3-component vector of uint) 0:101 'sizeQueryTemp' ( temp 3-component vector of uint) 0:101 textureSize ( temp 3-component vector of uint) 0:101 'g_tTex2df4a' ( uniform texture2DArray) 0:101 Constant: 0:101 0 (const int) 0:101 move second child to first child ( temp uint) 0:101 'WidthU' ( temp uint) 0:101 direct index ( temp uint) 0:101 'sizeQueryTemp' ( temp 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 move second child to first child ( temp uint) 0:101 'HeightU' ( temp uint) 0:101 direct index ( temp uint) 0:101 'sizeQueryTemp' ( temp 3-component vector of uint) 0:101 Constant: 0:101 1 (const int) 0:101 move second child to first child ( temp uint) 0:101 'ElementsU' ( temp uint) 0:101 direct index ( temp uint) 0:101 'sizeQueryTemp' ( temp 3-component vector of uint) 0:101 Constant: 0:101 2 (const int) 0:102 Sequence 0:102 move second child to first child ( temp 3-component vector of uint) 0:102 'sizeQueryTemp' ( temp 3-component vector of uint) 0:102 textureSize ( temp 3-component vector of uint) 0:102 'g_tTex2df4a' ( uniform texture2DArray) 0:102 Constant: 0:102 6 (const uint) 0:102 move second child to first child ( temp uint) 0:102 'WidthU' ( temp uint) 0:102 direct index ( temp uint) 0:102 'sizeQueryTemp' ( temp 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 move second child to first child ( temp uint) 0:102 'HeightU' ( temp uint) 0:102 direct index ( temp uint) 0:102 'sizeQueryTemp' ( temp 3-component vector of uint) 0:102 Constant: 0:102 1 (const int) 0:102 move second child to first child ( temp uint) 0:102 'ElementsU' ( temp uint) 0:102 direct index ( temp uint) 0:102 'sizeQueryTemp' ( temp 3-component vector of uint) 0:102 Constant: 0:102 2 (const int) 0:102 move second child to first child ( temp uint) 0:102 'NumberOfLevelsU' ( temp uint) 0:102 textureQueryLevels ( temp uint) 0:102 'g_tTex2df4a' ( uniform texture2DArray) 0:105 Sequence 0:105 move second child to first child ( temp 3-component vector of uint) 0:105 'sizeQueryTemp' ( temp 3-component vector of uint) 0:105 textureSize ( temp 3-component vector of uint) 0:105 'g_tTex2di4a' ( uniform itexture2DArray) 0:105 Constant: 0:105 0 (const int) 0:105 move second child to first child ( temp uint) 0:105 'WidthU' ( temp uint) 0:105 direct index ( temp uint) 0:105 'sizeQueryTemp' ( temp 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 move second child to first child ( temp uint) 0:105 'HeightU' ( temp uint) 0:105 direct index ( temp uint) 0:105 'sizeQueryTemp' ( temp 3-component vector of uint) 0:105 Constant: 0:105 1 (const int) 0:105 move second child to first child ( temp uint) 0:105 'ElementsU' ( temp uint) 0:105 direct index ( temp uint) 0:105 'sizeQueryTemp' ( temp 3-component vector of uint) 0:105 Constant: 0:105 2 (const int) 0:106 Sequence 0:106 move second child to first child ( temp 3-component vector of uint) 0:106 'sizeQueryTemp' ( temp 3-component vector of uint) 0:106 textureSize ( temp 3-component vector of uint) 0:106 'g_tTex2di4a' ( uniform itexture2DArray) 0:106 Constant: 0:106 6 (const uint) 0:106 move second child to first child ( temp uint) 0:106 'WidthU' ( temp uint) 0:106 direct index ( temp uint) 0:106 'sizeQueryTemp' ( temp 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 move second child to first child ( temp uint) 0:106 'HeightU' ( temp uint) 0:106 direct index ( temp uint) 0:106 'sizeQueryTemp' ( temp 3-component vector of uint) 0:106 Constant: 0:106 1 (const int) 0:106 move second child to first child ( temp uint) 0:106 'ElementsU' ( temp uint) 0:106 direct index ( temp uint) 0:106 'sizeQueryTemp' ( temp 3-component vector of uint) 0:106 Constant: 0:106 2 (const int) 0:106 move second child to first child ( temp uint) 0:106 'NumberOfLevelsU' ( temp uint) 0:106 textureQueryLevels ( temp uint) 0:106 'g_tTex2di4a' ( uniform itexture2DArray) 0:109 Sequence 0:109 move second child to first child ( temp 3-component vector of uint) 0:109 'sizeQueryTemp' ( temp 3-component vector of uint) 0:109 textureSize ( temp 3-component vector of uint) 0:109 'g_tTex2du4a' ( uniform utexture2DArray) 0:109 Constant: 0:109 0 (const int) 0:109 move second child to first child ( temp uint) 0:109 'WidthU' ( temp uint) 0:109 direct index ( temp uint) 0:109 'sizeQueryTemp' ( temp 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 move second child to first child ( temp uint) 0:109 'HeightU' ( temp uint) 0:109 direct index ( temp uint) 0:109 'sizeQueryTemp' ( temp 3-component vector of uint) 0:109 Constant: 0:109 1 (const int) 0:109 move second child to first child ( temp uint) 0:109 'ElementsU' ( temp uint) 0:109 direct index ( temp uint) 0:109 'sizeQueryTemp' ( temp 3-component vector of uint) 0:109 Constant: 0:109 2 (const int) 0:110 Sequence 0:110 move second child to first child ( temp 3-component vector of uint) 0:110 'sizeQueryTemp' ( temp 3-component vector of uint) 0:110 textureSize ( temp 3-component vector of uint) 0:110 'g_tTex2du4a' ( uniform utexture2DArray) 0:110 Constant: 0:110 6 (const uint) 0:110 move second child to first child ( temp uint) 0:110 'WidthU' ( temp uint) 0:110 direct index ( temp uint) 0:110 'sizeQueryTemp' ( temp 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 move second child to first child ( temp uint) 0:110 'HeightU' ( temp uint) 0:110 direct index ( temp uint) 0:110 'sizeQueryTemp' ( temp 3-component vector of uint) 0:110 Constant: 0:110 1 (const int) 0:110 move second child to first child ( temp uint) 0:110 'ElementsU' ( temp uint) 0:110 direct index ( temp uint) 0:110 'sizeQueryTemp' ( temp 3-component vector of uint) 0:110 Constant: 0:110 2 (const int) 0:110 move second child to first child ( temp uint) 0:110 'NumberOfLevelsU' ( temp uint) 0:110 textureQueryLevels ( temp uint) 0:110 'g_tTex2du4a' ( uniform utexture2DArray) 0:113 Sequence 0:113 move second child to first child ( temp 3-component vector of uint) 0:113 'sizeQueryTemp' ( temp 3-component vector of uint) 0:113 textureSize ( temp 3-component vector of uint) 0:113 'g_tTex3df4' ( uniform texture3D) 0:113 Constant: 0:113 0 (const int) 0:113 move second child to first child ( temp uint) 0:113 'WidthU' ( temp uint) 0:113 direct index ( temp uint) 0:113 'sizeQueryTemp' ( temp 3-component vector of uint) 0:113 Constant: 0:113 0 (const int) 0:113 move second child to first child ( temp uint) 0:113 'HeightU' ( temp uint) 0:113 direct index ( temp uint) 0:113 'sizeQueryTemp' ( temp 3-component vector of uint) 0:113 Constant: 0:113 1 (const int) 0:113 move second child to first child ( temp uint) 0:113 'DepthU' ( temp uint) 0:113 direct index ( temp uint) 0:113 'sizeQueryTemp' ( temp 3-component vector of uint) 0:113 Constant: 0:113 2 (const int) 0:114 Sequence 0:114 move second child to first child ( temp 3-component vector of uint) 0:114 'sizeQueryTemp' ( temp 3-component vector of uint) 0:114 textureSize ( temp 3-component vector of uint) 0:114 'g_tTex3df4' ( uniform texture3D) 0:114 Constant: 0:114 6 (const uint) 0:114 move second child to first child ( temp uint) 0:114 'WidthU' ( temp uint) 0:114 direct index ( temp uint) 0:114 'sizeQueryTemp' ( temp 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 move second child to first child ( temp uint) 0:114 'HeightU' ( temp uint) 0:114 direct index ( temp uint) 0:114 'sizeQueryTemp' ( temp 3-component vector of uint) 0:114 Constant: 0:114 1 (const int) 0:114 move second child to first child ( temp uint) 0:114 'DepthU' ( temp uint) 0:114 direct index ( temp uint) 0:114 'sizeQueryTemp' ( temp 3-component vector of uint) 0:114 Constant: 0:114 2 (const int) 0:114 move second child to first child ( temp uint) 0:114 'NumberOfLevelsU' ( temp uint) 0:114 textureQueryLevels ( temp uint) 0:114 'g_tTex3df4' ( uniform texture3D) 0:117 Sequence 0:117 move second child to first child ( temp 3-component vector of uint) 0:117 'sizeQueryTemp' ( temp 3-component vector of uint) 0:117 textureSize ( temp 3-component vector of uint) 0:117 'g_tTex3di4' ( uniform itexture3D) 0:117 Constant: 0:117 0 (const int) 0:117 move second child to first child ( temp uint) 0:117 'WidthU' ( temp uint) 0:117 direct index ( temp uint) 0:117 'sizeQueryTemp' ( temp 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 move second child to first child ( temp uint) 0:117 'HeightU' ( temp uint) 0:117 direct index ( temp uint) 0:117 'sizeQueryTemp' ( temp 3-component vector of uint) 0:117 Constant: 0:117 1 (const int) 0:117 move second child to first child ( temp uint) 0:117 'DepthU' ( temp uint) 0:117 direct index ( temp uint) 0:117 'sizeQueryTemp' ( temp 3-component vector of uint) 0:117 Constant: 0:117 2 (const int) 0:118 Sequence 0:118 move second child to first child ( temp 3-component vector of uint) 0:118 'sizeQueryTemp' ( temp 3-component vector of uint) 0:118 textureSize ( temp 3-component vector of uint) 0:118 'g_tTex3di4' ( uniform itexture3D) 0:118 Constant: 0:118 6 (const uint) 0:118 move second child to first child ( temp uint) 0:118 'WidthU' ( temp uint) 0:118 direct index ( temp uint) 0:118 'sizeQueryTemp' ( temp 3-component vector of uint) 0:118 Constant: 0:118 0 (const int) 0:118 move second child to first child ( temp uint) 0:118 'HeightU' ( temp uint) 0:118 direct index ( temp uint) 0:118 'sizeQueryTemp' ( temp 3-component vector of uint) 0:118 Constant: 0:118 1 (const int) 0:118 move second child to first child ( temp uint) 0:118 'DepthU' ( temp uint) 0:118 direct index ( temp uint) 0:118 'sizeQueryTemp' ( temp 3-component vector of uint) 0:118 Constant: 0:118 2 (const int) 0:118 move second child to first child ( temp uint) 0:118 'NumberOfLevelsU' ( temp uint) 0:118 textureQueryLevels ( temp uint) 0:118 'g_tTex3di4' ( uniform itexture3D) 0:121 Sequence 0:121 move second child to first child ( temp 3-component vector of uint) 0:121 'sizeQueryTemp' ( temp 3-component vector of uint) 0:121 textureSize ( temp 3-component vector of uint) 0:121 'g_tTex3du4' ( uniform utexture3D) 0:121 Constant: 0:121 0 (const int) 0:121 move second child to first child ( temp uint) 0:121 'WidthU' ( temp uint) 0:121 direct index ( temp uint) 0:121 'sizeQueryTemp' ( temp 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 move second child to first child ( temp uint) 0:121 'HeightU' ( temp uint) 0:121 direct index ( temp uint) 0:121 'sizeQueryTemp' ( temp 3-component vector of uint) 0:121 Constant: 0:121 1 (const int) 0:121 move second child to first child ( temp uint) 0:121 'DepthU' ( temp uint) 0:121 direct index ( temp uint) 0:121 'sizeQueryTemp' ( temp 3-component vector of uint) 0:121 Constant: 0:121 2 (const int) 0:122 Sequence 0:122 move second child to first child ( temp 3-component vector of uint) 0:122 'sizeQueryTemp' ( temp 3-component vector of uint) 0:122 textureSize ( temp 3-component vector of uint) 0:122 'g_tTex3du4' ( uniform utexture3D) 0:122 Constant: 0:122 6 (const uint) 0:122 move second child to first child ( temp uint) 0:122 'WidthU' ( temp uint) 0:122 direct index ( temp uint) 0:122 'sizeQueryTemp' ( temp 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 move second child to first child ( temp uint) 0:122 'HeightU' ( temp uint) 0:122 direct index ( temp uint) 0:122 'sizeQueryTemp' ( temp 3-component vector of uint) 0:122 Constant: 0:122 1 (const int) 0:122 move second child to first child ( temp uint) 0:122 'DepthU' ( temp uint) 0:122 direct index ( temp uint) 0:122 'sizeQueryTemp' ( temp 3-component vector of uint) 0:122 Constant: 0:122 2 (const int) 0:122 move second child to first child ( temp uint) 0:122 'NumberOfLevelsU' ( temp uint) 0:122 textureQueryLevels ( temp uint) 0:122 'g_tTex3du4' ( uniform utexture3D) 0:125 Sequence 0:125 move second child to first child ( temp 2-component vector of uint) 0:125 'sizeQueryTemp' ( temp 2-component vector of uint) 0:125 textureSize ( temp 2-component vector of uint) 0:125 'g_tTexcdf4' ( uniform textureCube) 0:125 Constant: 0:125 0 (const int) 0:125 move second child to first child ( temp uint) 0:125 'WidthU' ( temp uint) 0:125 direct index ( temp uint) 0:125 'sizeQueryTemp' ( temp 2-component vector of uint) 0:125 Constant: 0:125 0 (const int) 0:125 move second child to first child ( temp uint) 0:125 'HeightU' ( temp uint) 0:125 direct index ( temp uint) 0:125 'sizeQueryTemp' ( temp 2-component vector of uint) 0:125 Constant: 0:125 1 (const int) 0:126 Sequence 0:126 move second child to first child ( temp 2-component vector of uint) 0:126 'sizeQueryTemp' ( temp 2-component vector of uint) 0:126 textureSize ( temp 2-component vector of uint) 0:126 'g_tTexcdf4' ( uniform textureCube) 0:126 Constant: 0:126 6 (const uint) 0:126 move second child to first child ( temp uint) 0:126 'WidthU' ( temp uint) 0:126 direct index ( temp uint) 0:126 'sizeQueryTemp' ( temp 2-component vector of uint) 0:126 Constant: 0:126 0 (const int) 0:126 move second child to first child ( temp uint) 0:126 'HeightU' ( temp uint) 0:126 direct index ( temp uint) 0:126 'sizeQueryTemp' ( temp 2-component vector of uint) 0:126 Constant: 0:126 1 (const int) 0:126 move second child to first child ( temp uint) 0:126 'NumberOfLevelsU' ( temp uint) 0:126 textureQueryLevels ( temp uint) 0:126 'g_tTexcdf4' ( uniform textureCube) 0:129 Sequence 0:129 move second child to first child ( temp 2-component vector of uint) 0:129 'sizeQueryTemp' ( temp 2-component vector of uint) 0:129 textureSize ( temp 2-component vector of uint) 0:129 'g_tTexcdi4' ( uniform itextureCube) 0:129 Constant: 0:129 0 (const int) 0:129 move second child to first child ( temp uint) 0:129 'WidthU' ( temp uint) 0:129 direct index ( temp uint) 0:129 'sizeQueryTemp' ( temp 2-component vector of uint) 0:129 Constant: 0:129 0 (const int) 0:129 move second child to first child ( temp uint) 0:129 'HeightU' ( temp uint) 0:129 direct index ( temp uint) 0:129 'sizeQueryTemp' ( temp 2-component vector of uint) 0:129 Constant: 0:129 1 (const int) 0:130 Sequence 0:130 move second child to first child ( temp 2-component vector of uint) 0:130 'sizeQueryTemp' ( temp 2-component vector of uint) 0:130 textureSize ( temp 2-component vector of uint) 0:130 'g_tTexcdi4' ( uniform itextureCube) 0:130 Constant: 0:130 6 (const uint) 0:130 move second child to first child ( temp uint) 0:130 'WidthU' ( temp uint) 0:130 direct index ( temp uint) 0:130 'sizeQueryTemp' ( temp 2-component vector of uint) 0:130 Constant: 0:130 0 (const int) 0:130 move second child to first child ( temp uint) 0:130 'HeightU' ( temp uint) 0:130 direct index ( temp uint) 0:130 'sizeQueryTemp' ( temp 2-component vector of uint) 0:130 Constant: 0:130 1 (const int) 0:130 move second child to first child ( temp uint) 0:130 'NumberOfLevelsU' ( temp uint) 0:130 textureQueryLevels ( temp uint) 0:130 'g_tTexcdi4' ( uniform itextureCube) 0:133 Sequence 0:133 move second child to first child ( temp 2-component vector of uint) 0:133 'sizeQueryTemp' ( temp 2-component vector of uint) 0:133 textureSize ( temp 2-component vector of uint) 0:133 'g_tTexcdu4' ( uniform utextureCube) 0:133 Constant: 0:133 0 (const int) 0:133 move second child to first child ( temp uint) 0:133 'WidthU' ( temp uint) 0:133 direct index ( temp uint) 0:133 'sizeQueryTemp' ( temp 2-component vector of uint) 0:133 Constant: 0:133 0 (const int) 0:133 move second child to first child ( temp uint) 0:133 'HeightU' ( temp uint) 0:133 direct index ( temp uint) 0:133 'sizeQueryTemp' ( temp 2-component vector of uint) 0:133 Constant: 0:133 1 (const int) 0:134 Sequence 0:134 move second child to first child ( temp 2-component vector of uint) 0:134 'sizeQueryTemp' ( temp 2-component vector of uint) 0:134 textureSize ( temp 2-component vector of uint) 0:134 'g_tTexcdu4' ( uniform utextureCube) 0:134 Constant: 0:134 6 (const uint) 0:134 move second child to first child ( temp uint) 0:134 'WidthU' ( temp uint) 0:134 direct index ( temp uint) 0:134 'sizeQueryTemp' ( temp 2-component vector of uint) 0:134 Constant: 0:134 0 (const int) 0:134 move second child to first child ( temp uint) 0:134 'HeightU' ( temp uint) 0:134 direct index ( temp uint) 0:134 'sizeQueryTemp' ( temp 2-component vector of uint) 0:134 Constant: 0:134 1 (const int) 0:134 move second child to first child ( temp uint) 0:134 'NumberOfLevelsU' ( temp uint) 0:134 textureQueryLevels ( temp uint) 0:134 'g_tTexcdu4' ( uniform utextureCube) 0:137 Sequence 0:137 move second child to first child ( temp 3-component vector of uint) 0:137 'sizeQueryTemp' ( temp 3-component vector of uint) 0:137 textureSize ( temp 3-component vector of uint) 0:137 'g_tTexcdf4a' ( uniform textureCubeArray) 0:137 Constant: 0:137 0 (const int) 0:137 move second child to first child ( temp uint) 0:137 'WidthU' ( temp uint) 0:137 direct index ( temp uint) 0:137 'sizeQueryTemp' ( temp 3-component vector of uint) 0:137 Constant: 0:137 0 (const int) 0:137 move second child to first child ( temp uint) 0:137 'HeightU' ( temp uint) 0:137 direct index ( temp uint) 0:137 'sizeQueryTemp' ( temp 3-component vector of uint) 0:137 Constant: 0:137 1 (const int) 0:137 move second child to first child ( temp uint) 0:137 'ElementsU' ( temp uint) 0:137 direct index ( temp uint) 0:137 'sizeQueryTemp' ( temp 3-component vector of uint) 0:137 Constant: 0:137 2 (const int) 0:138 Sequence 0:138 move second child to first child ( temp 3-component vector of uint) 0:138 'sizeQueryTemp' ( temp 3-component vector of uint) 0:138 textureSize ( temp 3-component vector of uint) 0:138 'g_tTexcdf4a' ( uniform textureCubeArray) 0:138 Constant: 0:138 6 (const uint) 0:138 move second child to first child ( temp uint) 0:138 'WidthU' ( temp uint) 0:138 direct index ( temp uint) 0:138 'sizeQueryTemp' ( temp 3-component vector of uint) 0:138 Constant: 0:138 0 (const int) 0:138 move second child to first child ( temp uint) 0:138 'HeightU' ( temp uint) 0:138 direct index ( temp uint) 0:138 'sizeQueryTemp' ( temp 3-component vector of uint) 0:138 Constant: 0:138 1 (const int) 0:138 move second child to first child ( temp uint) 0:138 'ElementsU' ( temp uint) 0:138 direct index ( temp uint) 0:138 'sizeQueryTemp' ( temp 3-component vector of uint) 0:138 Constant: 0:138 2 (const int) 0:138 move second child to first child ( temp uint) 0:138 'NumberOfLevelsU' ( temp uint) 0:138 textureQueryLevels ( temp uint) 0:138 'g_tTexcdf4a' ( uniform textureCubeArray) 0:141 Sequence 0:141 move second child to first child ( temp 3-component vector of uint) 0:141 'sizeQueryTemp' ( temp 3-component vector of uint) 0:141 textureSize ( temp 3-component vector of uint) 0:141 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:141 Constant: 0:141 0 (const int) 0:141 move second child to first child ( temp uint) 0:141 'WidthU' ( temp uint) 0:141 direct index ( temp uint) 0:141 'sizeQueryTemp' ( temp 3-component vector of uint) 0:141 Constant: 0:141 0 (const int) 0:141 move second child to first child ( temp uint) 0:141 'HeightU' ( temp uint) 0:141 direct index ( temp uint) 0:141 'sizeQueryTemp' ( temp 3-component vector of uint) 0:141 Constant: 0:141 1 (const int) 0:141 move second child to first child ( temp uint) 0:141 'ElementsU' ( temp uint) 0:141 direct index ( temp uint) 0:141 'sizeQueryTemp' ( temp 3-component vector of uint) 0:141 Constant: 0:141 2 (const int) 0:142 Sequence 0:142 move second child to first child ( temp 3-component vector of uint) 0:142 'sizeQueryTemp' ( temp 3-component vector of uint) 0:142 textureSize ( temp 3-component vector of uint) 0:142 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:142 Constant: 0:142 6 (const uint) 0:142 move second child to first child ( temp uint) 0:142 'WidthU' ( temp uint) 0:142 direct index ( temp uint) 0:142 'sizeQueryTemp' ( temp 3-component vector of uint) 0:142 Constant: 0:142 0 (const int) 0:142 move second child to first child ( temp uint) 0:142 'HeightU' ( temp uint) 0:142 direct index ( temp uint) 0:142 'sizeQueryTemp' ( temp 3-component vector of uint) 0:142 Constant: 0:142 1 (const int) 0:142 move second child to first child ( temp uint) 0:142 'ElementsU' ( temp uint) 0:142 direct index ( temp uint) 0:142 'sizeQueryTemp' ( temp 3-component vector of uint) 0:142 Constant: 0:142 2 (const int) 0:142 move second child to first child ( temp uint) 0:142 'NumberOfLevelsU' ( temp uint) 0:142 textureQueryLevels ( temp uint) 0:142 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:145 Sequence 0:145 move second child to first child ( temp 3-component vector of uint) 0:145 'sizeQueryTemp' ( temp 3-component vector of uint) 0:145 textureSize ( temp 3-component vector of uint) 0:145 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:145 Constant: 0:145 0 (const int) 0:145 move second child to first child ( temp uint) 0:145 'WidthU' ( temp uint) 0:145 direct index ( temp uint) 0:145 'sizeQueryTemp' ( temp 3-component vector of uint) 0:145 Constant: 0:145 0 (const int) 0:145 move second child to first child ( temp uint) 0:145 'HeightU' ( temp uint) 0:145 direct index ( temp uint) 0:145 'sizeQueryTemp' ( temp 3-component vector of uint) 0:145 Constant: 0:145 1 (const int) 0:145 move second child to first child ( temp uint) 0:145 'ElementsU' ( temp uint) 0:145 direct index ( temp uint) 0:145 'sizeQueryTemp' ( temp 3-component vector of uint) 0:145 Constant: 0:145 2 (const int) 0:146 Sequence 0:146 move second child to first child ( temp 3-component vector of uint) 0:146 'sizeQueryTemp' ( temp 3-component vector of uint) 0:146 textureSize ( temp 3-component vector of uint) 0:146 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:146 Constant: 0:146 6 (const uint) 0:146 move second child to first child ( temp uint) 0:146 'WidthU' ( temp uint) 0:146 direct index ( temp uint) 0:146 'sizeQueryTemp' ( temp 3-component vector of uint) 0:146 Constant: 0:146 0 (const int) 0:146 move second child to first child ( temp uint) 0:146 'HeightU' ( temp uint) 0:146 direct index ( temp uint) 0:146 'sizeQueryTemp' ( temp 3-component vector of uint) 0:146 Constant: 0:146 1 (const int) 0:146 move second child to first child ( temp uint) 0:146 'ElementsU' ( temp uint) 0:146 direct index ( temp uint) 0:146 'sizeQueryTemp' ( temp 3-component vector of uint) 0:146 Constant: 0:146 2 (const int) 0:146 move second child to first child ( temp uint) 0:146 'NumberOfLevelsU' ( temp uint) 0:146 textureQueryLevels ( temp uint) 0:146 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:149 Sequence 0:149 move second child to first child ( temp 2-component vector of uint) 0:149 'sizeQueryTemp' ( temp 2-component vector of uint) 0:149 textureSize ( temp 2-component vector of uint) 0:149 'g_tTex2dmsf4' ( uniform texture2DMS) 0:149 move second child to first child ( temp uint) 0:149 'WidthU' ( temp uint) 0:149 direct index ( temp uint) 0:149 'sizeQueryTemp' ( temp 2-component vector of uint) 0:149 Constant: 0:149 0 (const int) 0:149 move second child to first child ( temp uint) 0:149 'HeightU' ( temp uint) 0:149 direct index ( temp uint) 0:149 'sizeQueryTemp' ( temp 2-component vector of uint) 0:149 Constant: 0:149 1 (const int) 0:149 move second child to first child ( temp uint) 0:149 'NumberOfSamplesU' ( temp uint) 0:149 imageQuerySamples ( temp uint) 0:149 'g_tTex2dmsf4' ( uniform texture2DMS) 0:152 Sequence 0:152 move second child to first child ( temp 2-component vector of uint) 0:152 'sizeQueryTemp' ( temp 2-component vector of uint) 0:152 textureSize ( temp 2-component vector of uint) 0:152 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:152 move second child to first child ( temp uint) 0:152 'WidthU' ( temp uint) 0:152 direct index ( temp uint) 0:152 'sizeQueryTemp' ( temp 2-component vector of uint) 0:152 Constant: 0:152 0 (const int) 0:152 move second child to first child ( temp uint) 0:152 'HeightU' ( temp uint) 0:152 direct index ( temp uint) 0:152 'sizeQueryTemp' ( temp 2-component vector of uint) 0:152 Constant: 0:152 1 (const int) 0:152 move second child to first child ( temp uint) 0:152 'NumberOfSamplesU' ( temp uint) 0:152 imageQuerySamples ( temp uint) 0:152 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:155 Sequence 0:155 move second child to first child ( temp 2-component vector of uint) 0:155 'sizeQueryTemp' ( temp 2-component vector of uint) 0:155 textureSize ( temp 2-component vector of uint) 0:155 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:155 move second child to first child ( temp uint) 0:155 'WidthU' ( temp uint) 0:155 direct index ( temp uint) 0:155 'sizeQueryTemp' ( temp 2-component vector of uint) 0:155 Constant: 0:155 0 (const int) 0:155 move second child to first child ( temp uint) 0:155 'HeightU' ( temp uint) 0:155 direct index ( temp uint) 0:155 'sizeQueryTemp' ( temp 2-component vector of uint) 0:155 Constant: 0:155 1 (const int) 0:155 move second child to first child ( temp uint) 0:155 'NumberOfSamplesU' ( temp uint) 0:155 imageQuerySamples ( temp uint) 0:155 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:158 Sequence 0:158 move second child to first child ( temp 3-component vector of uint) 0:158 'sizeQueryTemp' ( temp 3-component vector of uint) 0:158 textureSize ( temp 3-component vector of uint) 0:158 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:158 move second child to first child ( temp uint) 0:158 'WidthU' ( temp uint) 0:158 direct index ( temp uint) 0:158 'sizeQueryTemp' ( temp 3-component vector of uint) 0:158 Constant: 0:158 0 (const int) 0:158 move second child to first child ( temp uint) 0:158 'HeightU' ( temp uint) 0:158 direct index ( temp uint) 0:158 'sizeQueryTemp' ( temp 3-component vector of uint) 0:158 Constant: 0:158 1 (const int) 0:158 move second child to first child ( temp uint) 0:158 'ElementsU' ( temp uint) 0:158 direct index ( temp uint) 0:158 'sizeQueryTemp' ( temp 3-component vector of uint) 0:158 Constant: 0:158 2 (const int) 0:158 move second child to first child ( temp uint) 0:158 'NumberOfSamplesU' ( temp uint) 0:158 imageQuerySamples ( temp uint) 0:158 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:161 Sequence 0:161 move second child to first child ( temp 3-component vector of uint) 0:161 'sizeQueryTemp' ( temp 3-component vector of uint) 0:161 textureSize ( temp 3-component vector of uint) 0:161 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:161 move second child to first child ( temp uint) 0:161 'WidthU' ( temp uint) 0:161 direct index ( temp uint) 0:161 'sizeQueryTemp' ( temp 3-component vector of uint) 0:161 Constant: 0:161 0 (const int) 0:161 move second child to first child ( temp uint) 0:161 'HeightU' ( temp uint) 0:161 direct index ( temp uint) 0:161 'sizeQueryTemp' ( temp 3-component vector of uint) 0:161 Constant: 0:161 1 (const int) 0:161 move second child to first child ( temp uint) 0:161 'ElementsU' ( temp uint) 0:161 direct index ( temp uint) 0:161 'sizeQueryTemp' ( temp 3-component vector of uint) 0:161 Constant: 0:161 2 (const int) 0:161 move second child to first child ( temp uint) 0:161 'NumberOfSamplesU' ( temp uint) 0:161 imageQuerySamples ( temp uint) 0:161 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:164 Sequence 0:164 move second child to first child ( temp 3-component vector of uint) 0:164 'sizeQueryTemp' ( temp 3-component vector of uint) 0:164 textureSize ( temp 3-component vector of uint) 0:164 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:164 move second child to first child ( temp uint) 0:164 'WidthU' ( temp uint) 0:164 direct index ( temp uint) 0:164 'sizeQueryTemp' ( temp 3-component vector of uint) 0:164 Constant: 0:164 0 (const int) 0:164 move second child to first child ( temp uint) 0:164 'HeightU' ( temp uint) 0:164 direct index ( temp uint) 0:164 'sizeQueryTemp' ( temp 3-component vector of uint) 0:164 Constant: 0:164 1 (const int) 0:164 move second child to first child ( temp uint) 0:164 'ElementsU' ( temp uint) 0:164 direct index ( temp uint) 0:164 'sizeQueryTemp' ( temp 3-component vector of uint) 0:164 Constant: 0:164 2 (const int) 0:164 move second child to first child ( temp uint) 0:164 'NumberOfSamplesU' ( temp uint) 0:164 imageQuerySamples ( temp uint) 0:164 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:276 move second child to first child ( temp 4-component vector of float) 0:276 Color: direct index for structure ( temp 4-component vector of float) 0:276 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:276 Constant: 0:276 0 (const int) 0:276 Constant: 0:276 1.000000 0:276 1.000000 0:276 1.000000 0:276 1.000000 0:277 move second child to first child ( temp float) 0:277 Depth: direct index for structure ( temp float) 0:277 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:277 Constant: 0:277 1 (const int) 0:277 Constant: 0:277 1.000000 0:279 Branch: Return with expression 0:279 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Function Definition: main( ( temp void) 0:46 Function Parameters: 0:? Sequence 0:46 Sequence 0:46 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:46 Color: direct index for structure ( temp 4-component vector of float) 0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 0 (const int) 0:46 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:46 Depth: direct index for structure ( temp float) 0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'g_tTex2dmsf4' ( uniform texture2DMS) 0:? 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:? 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 550 Capability Shader Capability Sampled1D Capability SampledCubeArray Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 540 544 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 14 "sizeQueryTemp" Name 17 "g_tTex1df4" Name 22 "WidthU" Name 24 "sizeQueryTemp" Name 29 "NumberOfLevelsU" Name 32 "sizeQueryTemp" Name 35 "g_tTex1di4" Name 39 "sizeQueryTemp" Name 45 "sizeQueryTemp" Name 48 "g_tTex1du4" Name 52 "sizeQueryTemp" Name 60 "sizeQueryTemp" Name 63 "g_tTex1df4a" Name 69 "ElementsU" Name 73 "sizeQueryTemp" Name 82 "sizeQueryTemp" Name 85 "g_tTex1di4a" Name 92 "sizeQueryTemp" Name 101 "sizeQueryTemp" Name 104 "g_tTex1du4a" Name 111 "sizeQueryTemp" Name 120 "sizeQueryTemp" Name 123 "g_tTex2df4" Name 128 "HeightU" Name 131 "sizeQueryTemp" Name 140 "sizeQueryTemp" Name 143 "g_tTex2di4" Name 150 "sizeQueryTemp" Name 159 "sizeQueryTemp" Name 162 "g_tTex2du4" Name 169 "sizeQueryTemp" Name 180 "sizeQueryTemp" Name 183 "g_tTex2df4a" Name 193 "sizeQueryTemp" Name 204 "sizeQueryTemp" Name 207 "g_tTex2di4a" Name 216 "sizeQueryTemp" Name 227 "sizeQueryTemp" Name 230 "g_tTex2du4a" Name 239 "sizeQueryTemp" Name 250 "sizeQueryTemp" Name 253 "g_tTex3df4" Name 260 "DepthU" Name 263 "sizeQueryTemp" Name 274 "sizeQueryTemp" Name 277 "g_tTex3di4" Name 286 "sizeQueryTemp" Name 297 "sizeQueryTemp" Name 300 "g_tTex3du4" Name 309 "sizeQueryTemp" Name 320 "sizeQueryTemp" Name 323 "g_tTexcdf4" Name 330 "sizeQueryTemp" Name 339 "sizeQueryTemp" Name 342 "g_tTexcdi4" Name 349 "sizeQueryTemp" Name 358 "sizeQueryTemp" Name 361 "g_tTexcdu4" Name 368 "sizeQueryTemp" Name 377 "sizeQueryTemp" Name 380 "g_tTexcdf4a" Name 389 "sizeQueryTemp" Name 400 "sizeQueryTemp" Name 403 "g_tTexcdi4a" Name 412 "sizeQueryTemp" Name 423 "sizeQueryTemp" Name 426 "g_tTexcdu4a" Name 435 "sizeQueryTemp" Name 446 "sizeQueryTemp" Name 449 "g_tTex2dmsf4" Name 456 "NumberOfSamplesU" Name 459 "sizeQueryTemp" Name 462 "g_tTex2dmsi4" Name 471 "sizeQueryTemp" Name 474 "g_tTex2dmsu4" Name 483 "sizeQueryTemp" Name 486 "g_tTex2dmsf4a" Name 497 "sizeQueryTemp" Name 500 "g_tTex2dmsi4a" Name 511 "sizeQueryTemp" Name 514 "g_tTex2dmsu4a" Name 526 "psout" Name 537 "flattenTemp" Name 540 "@entryPointOutput.Color" Name 544 "@entryPointOutput.Depth" Name 549 "g_sSamp" Decorate 17(g_tTex1df4) Binding 0 Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 48(g_tTex1du4) Binding 2 Decorate 48(g_tTex1du4) DescriptorSet 0 Decorate 63(g_tTex1df4a) Binding 12 Decorate 63(g_tTex1df4a) DescriptorSet 0 Decorate 85(g_tTex1di4a) Binding 13 Decorate 85(g_tTex1di4a) DescriptorSet 0 Decorate 104(g_tTex1du4a) Binding 14 Decorate 104(g_tTex1du4a) DescriptorSet 0 Decorate 123(g_tTex2df4) Binding 3 Decorate 123(g_tTex2df4) DescriptorSet 0 Decorate 143(g_tTex2di4) Binding 4 Decorate 143(g_tTex2di4) DescriptorSet 0 Decorate 162(g_tTex2du4) Binding 5 Decorate 162(g_tTex2du4) DescriptorSet 0 Decorate 183(g_tTex2df4a) Binding 15 Decorate 183(g_tTex2df4a) DescriptorSet 0 Decorate 207(g_tTex2di4a) Binding 16 Decorate 207(g_tTex2di4a) DescriptorSet 0 Decorate 230(g_tTex2du4a) Binding 17 Decorate 230(g_tTex2du4a) DescriptorSet 0 Decorate 253(g_tTex3df4) Binding 6 Decorate 253(g_tTex3df4) DescriptorSet 0 Decorate 277(g_tTex3di4) Binding 7 Decorate 277(g_tTex3di4) DescriptorSet 0 Decorate 300(g_tTex3du4) Binding 8 Decorate 300(g_tTex3du4) DescriptorSet 0 Decorate 323(g_tTexcdf4) Binding 9 Decorate 323(g_tTexcdf4) DescriptorSet 0 Decorate 342(g_tTexcdi4) Binding 10 Decorate 342(g_tTexcdi4) DescriptorSet 0 Decorate 361(g_tTexcdu4) Binding 11 Decorate 361(g_tTexcdu4) DescriptorSet 0 Decorate 380(g_tTexcdf4a) Binding 18 Decorate 380(g_tTexcdf4a) DescriptorSet 0 Decorate 403(g_tTexcdi4a) Binding 19 Decorate 403(g_tTexcdi4a) DescriptorSet 0 Decorate 426(g_tTexcdu4a) Binding 20 Decorate 426(g_tTexcdu4a) DescriptorSet 0 Decorate 449(g_tTex2dmsf4) Binding 21 Decorate 449(g_tTex2dmsf4) DescriptorSet 0 Decorate 462(g_tTex2dmsi4) Binding 22 Decorate 462(g_tTex2dmsi4) DescriptorSet 0 Decorate 474(g_tTex2dmsu4) Binding 23 Decorate 474(g_tTex2dmsu4) DescriptorSet 0 Decorate 486(g_tTex2dmsf4a) Binding 24 Decorate 486(g_tTex2dmsf4a) DescriptorSet 0 Decorate 500(g_tTex2dmsi4a) Binding 25 Decorate 500(g_tTex2dmsi4a) DescriptorSet 0 Decorate 514(g_tTex2dmsu4a) Binding 26 Decorate 514(g_tTex2dmsu4a) DescriptorSet 0 Decorate 540(@entryPointOutput.Color) Location 0 Decorate 544(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 549(g_sSamp) Binding 0 Decorate 549(g_sSamp) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 0 13: TypePointer Function 12(int) 15: TypeImage 6(float) 1D sampled format:Unknown 16: TypePointer UniformConstant 15 17(g_tTex1df4): 16(ptr) Variable UniformConstant 19: TypeInt 32 1 20: 19(int) Constant 0 26: 12(int) Constant 6 33: TypeImage 19(int) 1D sampled format:Unknown 34: TypePointer UniformConstant 33 35(g_tTex1di4): 34(ptr) Variable UniformConstant 46: TypeImage 12(int) 1D sampled format:Unknown 47: TypePointer UniformConstant 46 48(g_tTex1du4): 47(ptr) Variable UniformConstant 58: TypeVector 12(int) 2 59: TypePointer Function 58(ivec2) 61: TypeImage 6(float) 1D array sampled format:Unknown 62: TypePointer UniformConstant 61 63(g_tTex1df4a): 62(ptr) Variable UniformConstant 66: 12(int) Constant 0 70: 12(int) Constant 1 83: TypeImage 19(int) 1D array sampled format:Unknown 84: TypePointer UniformConstant 83 85(g_tTex1di4a): 84(ptr) Variable UniformConstant 102: TypeImage 12(int) 1D array sampled format:Unknown 103: TypePointer UniformConstant 102 104(g_tTex1du4a): 103(ptr) Variable UniformConstant 121: TypeImage 6(float) 2D sampled format:Unknown 122: TypePointer UniformConstant 121 123(g_tTex2df4): 122(ptr) Variable UniformConstant 141: TypeImage 19(int) 2D sampled format:Unknown 142: TypePointer UniformConstant 141 143(g_tTex2di4): 142(ptr) Variable UniformConstant 160: TypeImage 12(int) 2D sampled format:Unknown 161: TypePointer UniformConstant 160 162(g_tTex2du4): 161(ptr) Variable UniformConstant 178: TypeVector 12(int) 3 179: TypePointer Function 178(ivec3) 181: TypeImage 6(float) 2D array sampled format:Unknown 182: TypePointer UniformConstant 181 183(g_tTex2df4a): 182(ptr) Variable UniformConstant 190: 12(int) Constant 2 205: TypeImage 19(int) 2D array sampled format:Unknown 206: TypePointer UniformConstant 205 207(g_tTex2di4a): 206(ptr) Variable UniformConstant 228: TypeImage 12(int) 2D array sampled format:Unknown 229: TypePointer UniformConstant 228 230(g_tTex2du4a): 229(ptr) Variable UniformConstant 251: TypeImage 6(float) 3D sampled format:Unknown 252: TypePointer UniformConstant 251 253(g_tTex3df4): 252(ptr) Variable UniformConstant 275: TypeImage 19(int) 3D sampled format:Unknown 276: TypePointer UniformConstant 275 277(g_tTex3di4): 276(ptr) Variable UniformConstant 298: TypeImage 12(int) 3D sampled format:Unknown 299: TypePointer UniformConstant 298 300(g_tTex3du4): 299(ptr) Variable UniformConstant 321: TypeImage 6(float) Cube sampled format:Unknown 322: TypePointer UniformConstant 321 323(g_tTexcdf4): 322(ptr) Variable UniformConstant 340: TypeImage 19(int) Cube sampled format:Unknown 341: TypePointer UniformConstant 340 342(g_tTexcdi4): 341(ptr) Variable UniformConstant 359: TypeImage 12(int) Cube sampled format:Unknown 360: TypePointer UniformConstant 359 361(g_tTexcdu4): 360(ptr) Variable UniformConstant 378: TypeImage 6(float) Cube array sampled format:Unknown 379: TypePointer UniformConstant 378 380(g_tTexcdf4a): 379(ptr) Variable UniformConstant 401: TypeImage 19(int) Cube array sampled format:Unknown 402: TypePointer UniformConstant 401 403(g_tTexcdi4a): 402(ptr) Variable UniformConstant 424: TypeImage 12(int) Cube array sampled format:Unknown 425: TypePointer UniformConstant 424 426(g_tTexcdu4a): 425(ptr) Variable UniformConstant 447: TypeImage 6(float) 2D multi-sampled sampled format:Unknown 448: TypePointer UniformConstant 447 449(g_tTex2dmsf4): 448(ptr) Variable UniformConstant 460: TypeImage 19(int) 2D multi-sampled sampled format:Unknown 461: TypePointer UniformConstant 460 462(g_tTex2dmsi4): 461(ptr) Variable UniformConstant 472: TypeImage 12(int) 2D multi-sampled sampled format:Unknown 473: TypePointer UniformConstant 472 474(g_tTex2dmsu4): 473(ptr) Variable UniformConstant 484: TypeImage 6(float) 2D array multi-sampled sampled format:Unknown 485: TypePointer UniformConstant 484 486(g_tTex2dmsf4a): 485(ptr) Variable UniformConstant 498: TypeImage 19(int) 2D array multi-sampled sampled format:Unknown 499: TypePointer UniformConstant 498 500(g_tTex2dmsi4a): 499(ptr) Variable UniformConstant 512: TypeImage 12(int) 2D array multi-sampled sampled format:Unknown 513: TypePointer UniformConstant 512 514(g_tTex2dmsu4a): 513(ptr) Variable UniformConstant 525: TypePointer Function 8(PS_OUTPUT) 527: 6(float) Constant 1065353216 528: 7(fvec4) ConstantComposite 527 527 527 527 529: TypePointer Function 7(fvec4) 531: 19(int) Constant 1 532: TypePointer Function 6(float) 539: TypePointer Output 7(fvec4) 540(@entryPointOutput.Color): 539(ptr) Variable Output 543: TypePointer Output 6(float) 544(@entryPointOutput.Depth): 543(ptr) Variable Output 547: TypeSampler 548: TypePointer UniformConstant 547 549(g_sSamp): 548(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 537(flattenTemp): 525(ptr) Variable Function 538:8(PS_OUTPUT) FunctionCall 10(@main() Store 537(flattenTemp) 538 541: 529(ptr) AccessChain 537(flattenTemp) 20 542: 7(fvec4) Load 541 Store 540(@entryPointOutput.Color) 542 545: 532(ptr) AccessChain 537(flattenTemp) 531 546: 6(float) Load 545 Store 544(@entryPointOutput.Depth) 546 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 14(sizeQueryTemp): 13(ptr) Variable Function 22(WidthU): 13(ptr) Variable Function 24(sizeQueryTemp): 13(ptr) Variable Function 29(NumberOfLevelsU): 13(ptr) Variable Function 32(sizeQueryTemp): 13(ptr) Variable Function 39(sizeQueryTemp): 13(ptr) Variable Function 45(sizeQueryTemp): 13(ptr) Variable Function 52(sizeQueryTemp): 13(ptr) Variable Function 60(sizeQueryTemp): 59(ptr) Variable Function 69(ElementsU): 13(ptr) Variable Function 73(sizeQueryTemp): 59(ptr) Variable Function 82(sizeQueryTemp): 59(ptr) Variable Function 92(sizeQueryTemp): 59(ptr) Variable Function 101(sizeQueryTemp): 59(ptr) Variable Function 111(sizeQueryTemp): 59(ptr) Variable Function 120(sizeQueryTemp): 59(ptr) Variable Function 128(HeightU): 13(ptr) Variable Function 131(sizeQueryTemp): 59(ptr) Variable Function 140(sizeQueryTemp): 59(ptr) Variable Function 150(sizeQueryTemp): 59(ptr) Variable Function 159(sizeQueryTemp): 59(ptr) Variable Function 169(sizeQueryTemp): 59(ptr) Variable Function 180(sizeQueryTemp): 179(ptr) Variable Function 193(sizeQueryTemp): 179(ptr) Variable Function 204(sizeQueryTemp): 179(ptr) Variable Function 216(sizeQueryTemp): 179(ptr) Variable Function 227(sizeQueryTemp): 179(ptr) Variable Function 239(sizeQueryTemp): 179(ptr) Variable Function 250(sizeQueryTemp): 179(ptr) Variable Function 260(DepthU): 13(ptr) Variable Function 263(sizeQueryTemp): 179(ptr) Variable Function 274(sizeQueryTemp): 179(ptr) Variable Function 286(sizeQueryTemp): 179(ptr) Variable Function 297(sizeQueryTemp): 179(ptr) Variable Function 309(sizeQueryTemp): 179(ptr) Variable Function 320(sizeQueryTemp): 59(ptr) Variable Function 330(sizeQueryTemp): 59(ptr) Variable Function 339(sizeQueryTemp): 59(ptr) Variable Function 349(sizeQueryTemp): 59(ptr) Variable Function 358(sizeQueryTemp): 59(ptr) Variable Function 368(sizeQueryTemp): 59(ptr) Variable Function 377(sizeQueryTemp): 179(ptr) Variable Function 389(sizeQueryTemp): 179(ptr) Variable Function 400(sizeQueryTemp): 179(ptr) Variable Function 412(sizeQueryTemp): 179(ptr) Variable Function 423(sizeQueryTemp): 179(ptr) Variable Function 435(sizeQueryTemp): 179(ptr) Variable Function 446(sizeQueryTemp): 59(ptr) Variable Function 456(NumberOfSamplesU): 13(ptr) Variable Function 459(sizeQueryTemp): 59(ptr) Variable Function 471(sizeQueryTemp): 59(ptr) Variable Function 483(sizeQueryTemp): 179(ptr) Variable Function 497(sizeQueryTemp): 179(ptr) Variable Function 511(sizeQueryTemp): 179(ptr) Variable Function 526(psout): 525(ptr) Variable Function 18: 15 Load 17(g_tTex1df4) 21: 12(int) ImageQuerySizeLod 18 20 Store 14(sizeQueryTemp) 21 23: 12(int) Load 14(sizeQueryTemp) Store 22(WidthU) 23 25: 15 Load 17(g_tTex1df4) 27: 12(int) ImageQuerySizeLod 25 26 Store 24(sizeQueryTemp) 27 28: 12(int) Load 24(sizeQueryTemp) Store 22(WidthU) 28 30: 15 Load 17(g_tTex1df4) 31: 12(int) ImageQueryLevels 30 Store 29(NumberOfLevelsU) 31 36: 33 Load 35(g_tTex1di4) 37: 12(int) ImageQuerySizeLod 36 20 Store 32(sizeQueryTemp) 37 38: 12(int) Load 32(sizeQueryTemp) Store 22(WidthU) 38 40: 33 Load 35(g_tTex1di4) 41: 12(int) ImageQuerySizeLod 40 26 Store 39(sizeQueryTemp) 41 42: 12(int) Load 39(sizeQueryTemp) Store 22(WidthU) 42 43: 33 Load 35(g_tTex1di4) 44: 12(int) ImageQueryLevels 43 Store 29(NumberOfLevelsU) 44 49: 46 Load 48(g_tTex1du4) 50: 12(int) ImageQuerySizeLod 49 20 Store 45(sizeQueryTemp) 50 51: 12(int) Load 45(sizeQueryTemp) Store 22(WidthU) 51 53: 46 Load 48(g_tTex1du4) 54: 12(int) ImageQuerySizeLod 53 26 Store 52(sizeQueryTemp) 54 55: 12(int) Load 52(sizeQueryTemp) Store 22(WidthU) 55 56: 46 Load 48(g_tTex1du4) 57: 12(int) ImageQueryLevels 56 Store 29(NumberOfLevelsU) 57 64: 61 Load 63(g_tTex1df4a) 65: 58(ivec2) ImageQuerySizeLod 64 20 Store 60(sizeQueryTemp) 65 67: 13(ptr) AccessChain 60(sizeQueryTemp) 66 68: 12(int) Load 67 Store 22(WidthU) 68 71: 13(ptr) AccessChain 60(sizeQueryTemp) 70 72: 12(int) Load 71 Store 69(ElementsU) 72 74: 61 Load 63(g_tTex1df4a) 75: 58(ivec2) ImageQuerySizeLod 74 26 Store 73(sizeQueryTemp) 75 76: 13(ptr) AccessChain 73(sizeQueryTemp) 66 77: 12(int) Load 76 Store 22(WidthU) 77 78: 13(ptr) AccessChain 73(sizeQueryTemp) 70 79: 12(int) Load 78 Store 69(ElementsU) 79 80: 61 Load 63(g_tTex1df4a) 81: 12(int) ImageQueryLevels 80 Store 29(NumberOfLevelsU) 81 86: 83 Load 85(g_tTex1di4a) 87: 58(ivec2) ImageQuerySizeLod 86 20 Store 82(sizeQueryTemp) 87 88: 13(ptr) AccessChain 82(sizeQueryTemp) 66 89: 12(int) Load 88 Store 22(WidthU) 89 90: 13(ptr) AccessChain 82(sizeQueryTemp) 70 91: 12(int) Load 90 Store 69(ElementsU) 91 93: 83 Load 85(g_tTex1di4a) 94: 58(ivec2) ImageQuerySizeLod 93 26 Store 92(sizeQueryTemp) 94 95: 13(ptr) AccessChain 92(sizeQueryTemp) 66 96: 12(int) Load 95 Store 22(WidthU) 96 97: 13(ptr) AccessChain 92(sizeQueryTemp) 70 98: 12(int) Load 97 Store 69(ElementsU) 98 99: 83 Load 85(g_tTex1di4a) 100: 12(int) ImageQueryLevels 99 Store 29(NumberOfLevelsU) 100 105: 102 Load 104(g_tTex1du4a) 106: 58(ivec2) ImageQuerySizeLod 105 20 Store 101(sizeQueryTemp) 106 107: 13(ptr) AccessChain 101(sizeQueryTemp) 66 108: 12(int) Load 107 Store 22(WidthU) 108 109: 13(ptr) AccessChain 101(sizeQueryTemp) 70 110: 12(int) Load 109 Store 69(ElementsU) 110 112: 102 Load 104(g_tTex1du4a) 113: 58(ivec2) ImageQuerySizeLod 112 26 Store 111(sizeQueryTemp) 113 114: 13(ptr) AccessChain 111(sizeQueryTemp) 66 115: 12(int) Load 114 Store 22(WidthU) 115 116: 13(ptr) AccessChain 111(sizeQueryTemp) 70 117: 12(int) Load 116 Store 69(ElementsU) 117 118: 102 Load 104(g_tTex1du4a) 119: 12(int) ImageQueryLevels 118 Store 29(NumberOfLevelsU) 119 124: 121 Load 123(g_tTex2df4) 125: 58(ivec2) ImageQuerySizeLod 124 20 Store 120(sizeQueryTemp) 125 126: 13(ptr) AccessChain 120(sizeQueryTemp) 66 127: 12(int) Load 126 Store 22(WidthU) 127 129: 13(ptr) AccessChain 120(sizeQueryTemp) 70 130: 12(int) Load 129 Store 128(HeightU) 130 132: 121 Load 123(g_tTex2df4) 133: 58(ivec2) ImageQuerySizeLod 132 26 Store 131(sizeQueryTemp) 133 134: 13(ptr) AccessChain 131(sizeQueryTemp) 66 135: 12(int) Load 134 Store 22(WidthU) 135 136: 13(ptr) AccessChain 131(sizeQueryTemp) 70 137: 12(int) Load 136 Store 128(HeightU) 137 138: 121 Load 123(g_tTex2df4) 139: 12(int) ImageQueryLevels 138 Store 29(NumberOfLevelsU) 139 144: 141 Load 143(g_tTex2di4) 145: 58(ivec2) ImageQuerySizeLod 144 20 Store 140(sizeQueryTemp) 145 146: 13(ptr) AccessChain 140(sizeQueryTemp) 66 147: 12(int) Load 146 Store 22(WidthU) 147 148: 13(ptr) AccessChain 140(sizeQueryTemp) 70 149: 12(int) Load 148 Store 128(HeightU) 149 151: 141 Load 143(g_tTex2di4) 152: 58(ivec2) ImageQuerySizeLod 151 26 Store 150(sizeQueryTemp) 152 153: 13(ptr) AccessChain 150(sizeQueryTemp) 66 154: 12(int) Load 153 Store 22(WidthU) 154 155: 13(ptr) AccessChain 150(sizeQueryTemp) 70 156: 12(int) Load 155 Store 128(HeightU) 156 157: 141 Load 143(g_tTex2di4) 158: 12(int) ImageQueryLevels 157 Store 29(NumberOfLevelsU) 158 163: 160 Load 162(g_tTex2du4) 164: 58(ivec2) ImageQuerySizeLod 163 20 Store 159(sizeQueryTemp) 164 165: 13(ptr) AccessChain 159(sizeQueryTemp) 66 166: 12(int) Load 165 Store 22(WidthU) 166 167: 13(ptr) AccessChain 159(sizeQueryTemp) 70 168: 12(int) Load 167 Store 128(HeightU) 168 170: 160 Load 162(g_tTex2du4) 171: 58(ivec2) ImageQuerySizeLod 170 26 Store 169(sizeQueryTemp) 171 172: 13(ptr) AccessChain 169(sizeQueryTemp) 66 173: 12(int) Load 172 Store 22(WidthU) 173 174: 13(ptr) AccessChain 169(sizeQueryTemp) 70 175: 12(int) Load 174 Store 128(HeightU) 175 176: 160 Load 162(g_tTex2du4) 177: 12(int) ImageQueryLevels 176 Store 29(NumberOfLevelsU) 177 184: 181 Load 183(g_tTex2df4a) 185: 178(ivec3) ImageQuerySizeLod 184 20 Store 180(sizeQueryTemp) 185 186: 13(ptr) AccessChain 180(sizeQueryTemp) 66 187: 12(int) Load 186 Store 22(WidthU) 187 188: 13(ptr) AccessChain 180(sizeQueryTemp) 70 189: 12(int) Load 188 Store 128(HeightU) 189 191: 13(ptr) AccessChain 180(sizeQueryTemp) 190 192: 12(int) Load 191 Store 69(ElementsU) 192 194: 181 Load 183(g_tTex2df4a) 195: 178(ivec3) ImageQuerySizeLod 194 26 Store 193(sizeQueryTemp) 195 196: 13(ptr) AccessChain 193(sizeQueryTemp) 66 197: 12(int) Load 196 Store 22(WidthU) 197 198: 13(ptr) AccessChain 193(sizeQueryTemp) 70 199: 12(int) Load 198 Store 128(HeightU) 199 200: 13(ptr) AccessChain 193(sizeQueryTemp) 190 201: 12(int) Load 200 Store 69(ElementsU) 201 202: 181 Load 183(g_tTex2df4a) 203: 12(int) ImageQueryLevels 202 Store 29(NumberOfLevelsU) 203 208: 205 Load 207(g_tTex2di4a) 209: 178(ivec3) ImageQuerySizeLod 208 20 Store 204(sizeQueryTemp) 209 210: 13(ptr) AccessChain 204(sizeQueryTemp) 66 211: 12(int) Load 210 Store 22(WidthU) 211 212: 13(ptr) AccessChain 204(sizeQueryTemp) 70 213: 12(int) Load 212 Store 128(HeightU) 213 214: 13(ptr) AccessChain 204(sizeQueryTemp) 190 215: 12(int) Load 214 Store 69(ElementsU) 215 217: 205 Load 207(g_tTex2di4a) 218: 178(ivec3) ImageQuerySizeLod 217 26 Store 216(sizeQueryTemp) 218 219: 13(ptr) AccessChain 216(sizeQueryTemp) 66 220: 12(int) Load 219 Store 22(WidthU) 220 221: 13(ptr) AccessChain 216(sizeQueryTemp) 70 222: 12(int) Load 221 Store 128(HeightU) 222 223: 13(ptr) AccessChain 216(sizeQueryTemp) 190 224: 12(int) Load 223 Store 69(ElementsU) 224 225: 205 Load 207(g_tTex2di4a) 226: 12(int) ImageQueryLevels 225 Store 29(NumberOfLevelsU) 226 231: 228 Load 230(g_tTex2du4a) 232: 178(ivec3) ImageQuerySizeLod 231 20 Store 227(sizeQueryTemp) 232 233: 13(ptr) AccessChain 227(sizeQueryTemp) 66 234: 12(int) Load 233 Store 22(WidthU) 234 235: 13(ptr) AccessChain 227(sizeQueryTemp) 70 236: 12(int) Load 235 Store 128(HeightU) 236 237: 13(ptr) AccessChain 227(sizeQueryTemp) 190 238: 12(int) Load 237 Store 69(ElementsU) 238 240: 228 Load 230(g_tTex2du4a) 241: 178(ivec3) ImageQuerySizeLod 240 26 Store 239(sizeQueryTemp) 241 242: 13(ptr) AccessChain 239(sizeQueryTemp) 66 243: 12(int) Load 242 Store 22(WidthU) 243 244: 13(ptr) AccessChain 239(sizeQueryTemp) 70 245: 12(int) Load 244 Store 128(HeightU) 245 246: 13(ptr) AccessChain 239(sizeQueryTemp) 190 247: 12(int) Load 246 Store 69(ElementsU) 247 248: 228 Load 230(g_tTex2du4a) 249: 12(int) ImageQueryLevels 248 Store 29(NumberOfLevelsU) 249 254: 251 Load 253(g_tTex3df4) 255: 178(ivec3) ImageQuerySizeLod 254 20 Store 250(sizeQueryTemp) 255 256: 13(ptr) AccessChain 250(sizeQueryTemp) 66 257: 12(int) Load 256 Store 22(WidthU) 257 258: 13(ptr) AccessChain 250(sizeQueryTemp) 70 259: 12(int) Load 258 Store 128(HeightU) 259 261: 13(ptr) AccessChain 250(sizeQueryTemp) 190 262: 12(int) Load 261 Store 260(DepthU) 262 264: 251 Load 253(g_tTex3df4) 265: 178(ivec3) ImageQuerySizeLod 264 26 Store 263(sizeQueryTemp) 265 266: 13(ptr) AccessChain 263(sizeQueryTemp) 66 267: 12(int) Load 266 Store 22(WidthU) 267 268: 13(ptr) AccessChain 263(sizeQueryTemp) 70 269: 12(int) Load 268 Store 128(HeightU) 269 270: 13(ptr) AccessChain 263(sizeQueryTemp) 190 271: 12(int) Load 270 Store 260(DepthU) 271 272: 251 Load 253(g_tTex3df4) 273: 12(int) ImageQueryLevels 272 Store 29(NumberOfLevelsU) 273 278: 275 Load 277(g_tTex3di4) 279: 178(ivec3) ImageQuerySizeLod 278 20 Store 274(sizeQueryTemp) 279 280: 13(ptr) AccessChain 274(sizeQueryTemp) 66 281: 12(int) Load 280 Store 22(WidthU) 281 282: 13(ptr) AccessChain 274(sizeQueryTemp) 70 283: 12(int) Load 282 Store 128(HeightU) 283 284: 13(ptr) AccessChain 274(sizeQueryTemp) 190 285: 12(int) Load 284 Store 260(DepthU) 285 287: 275 Load 277(g_tTex3di4) 288: 178(ivec3) ImageQuerySizeLod 287 26 Store 286(sizeQueryTemp) 288 289: 13(ptr) AccessChain 286(sizeQueryTemp) 66 290: 12(int) Load 289 Store 22(WidthU) 290 291: 13(ptr) AccessChain 286(sizeQueryTemp) 70 292: 12(int) Load 291 Store 128(HeightU) 292 293: 13(ptr) AccessChain 286(sizeQueryTemp) 190 294: 12(int) Load 293 Store 260(DepthU) 294 295: 275 Load 277(g_tTex3di4) 296: 12(int) ImageQueryLevels 295 Store 29(NumberOfLevelsU) 296 301: 298 Load 300(g_tTex3du4) 302: 178(ivec3) ImageQuerySizeLod 301 20 Store 297(sizeQueryTemp) 302 303: 13(ptr) AccessChain 297(sizeQueryTemp) 66 304: 12(int) Load 303 Store 22(WidthU) 304 305: 13(ptr) AccessChain 297(sizeQueryTemp) 70 306: 12(int) Load 305 Store 128(HeightU) 306 307: 13(ptr) AccessChain 297(sizeQueryTemp) 190 308: 12(int) Load 307 Store 260(DepthU) 308 310: 298 Load 300(g_tTex3du4) 311: 178(ivec3) ImageQuerySizeLod 310 26 Store 309(sizeQueryTemp) 311 312: 13(ptr) AccessChain 309(sizeQueryTemp) 66 313: 12(int) Load 312 Store 22(WidthU) 313 314: 13(ptr) AccessChain 309(sizeQueryTemp) 70 315: 12(int) Load 314 Store 128(HeightU) 315 316: 13(ptr) AccessChain 309(sizeQueryTemp) 190 317: 12(int) Load 316 Store 260(DepthU) 317 318: 298 Load 300(g_tTex3du4) 319: 12(int) ImageQueryLevels 318 Store 29(NumberOfLevelsU) 319 324: 321 Load 323(g_tTexcdf4) 325: 58(ivec2) ImageQuerySizeLod 324 20 Store 320(sizeQueryTemp) 325 326: 13(ptr) AccessChain 320(sizeQueryTemp) 66 327: 12(int) Load 326 Store 22(WidthU) 327 328: 13(ptr) AccessChain 320(sizeQueryTemp) 70 329: 12(int) Load 328 Store 128(HeightU) 329 331: 321 Load 323(g_tTexcdf4) 332: 58(ivec2) ImageQuerySizeLod 331 26 Store 330(sizeQueryTemp) 332 333: 13(ptr) AccessChain 330(sizeQueryTemp) 66 334: 12(int) Load 333 Store 22(WidthU) 334 335: 13(ptr) AccessChain 330(sizeQueryTemp) 70 336: 12(int) Load 335 Store 128(HeightU) 336 337: 321 Load 323(g_tTexcdf4) 338: 12(int) ImageQueryLevels 337 Store 29(NumberOfLevelsU) 338 343: 340 Load 342(g_tTexcdi4) 344: 58(ivec2) ImageQuerySizeLod 343 20 Store 339(sizeQueryTemp) 344 345: 13(ptr) AccessChain 339(sizeQueryTemp) 66 346: 12(int) Load 345 Store 22(WidthU) 346 347: 13(ptr) AccessChain 339(sizeQueryTemp) 70 348: 12(int) Load 347 Store 128(HeightU) 348 350: 340 Load 342(g_tTexcdi4) 351: 58(ivec2) ImageQuerySizeLod 350 26 Store 349(sizeQueryTemp) 351 352: 13(ptr) AccessChain 349(sizeQueryTemp) 66 353: 12(int) Load 352 Store 22(WidthU) 353 354: 13(ptr) AccessChain 349(sizeQueryTemp) 70 355: 12(int) Load 354 Store 128(HeightU) 355 356: 340 Load 342(g_tTexcdi4) 357: 12(int) ImageQueryLevels 356 Store 29(NumberOfLevelsU) 357 362: 359 Load 361(g_tTexcdu4) 363: 58(ivec2) ImageQuerySizeLod 362 20 Store 358(sizeQueryTemp) 363 364: 13(ptr) AccessChain 358(sizeQueryTemp) 66 365: 12(int) Load 364 Store 22(WidthU) 365 366: 13(ptr) AccessChain 358(sizeQueryTemp) 70 367: 12(int) Load 366 Store 128(HeightU) 367 369: 359 Load 361(g_tTexcdu4) 370: 58(ivec2) ImageQuerySizeLod 369 26 Store 368(sizeQueryTemp) 370 371: 13(ptr) AccessChain 368(sizeQueryTemp) 66 372: 12(int) Load 371 Store 22(WidthU) 372 373: 13(ptr) AccessChain 368(sizeQueryTemp) 70 374: 12(int) Load 373 Store 128(HeightU) 374 375: 359 Load 361(g_tTexcdu4) 376: 12(int) ImageQueryLevels 375 Store 29(NumberOfLevelsU) 376 381: 378 Load 380(g_tTexcdf4a) 382: 178(ivec3) ImageQuerySizeLod 381 20 Store 377(sizeQueryTemp) 382 383: 13(ptr) AccessChain 377(sizeQueryTemp) 66 384: 12(int) Load 383 Store 22(WidthU) 384 385: 13(ptr) AccessChain 377(sizeQueryTemp) 70 386: 12(int) Load 385 Store 128(HeightU) 386 387: 13(ptr) AccessChain 377(sizeQueryTemp) 190 388: 12(int) Load 387 Store 69(ElementsU) 388 390: 378 Load 380(g_tTexcdf4a) 391: 178(ivec3) ImageQuerySizeLod 390 26 Store 389(sizeQueryTemp) 391 392: 13(ptr) AccessChain 389(sizeQueryTemp) 66 393: 12(int) Load 392 Store 22(WidthU) 393 394: 13(ptr) AccessChain 389(sizeQueryTemp) 70 395: 12(int) Load 394 Store 128(HeightU) 395 396: 13(ptr) AccessChain 389(sizeQueryTemp) 190 397: 12(int) Load 396 Store 69(ElementsU) 397 398: 378 Load 380(g_tTexcdf4a) 399: 12(int) ImageQueryLevels 398 Store 29(NumberOfLevelsU) 399 404: 401 Load 403(g_tTexcdi4a) 405: 178(ivec3) ImageQuerySizeLod 404 20 Store 400(sizeQueryTemp) 405 406: 13(ptr) AccessChain 400(sizeQueryTemp) 66 407: 12(int) Load 406 Store 22(WidthU) 407 408: 13(ptr) AccessChain 400(sizeQueryTemp) 70 409: 12(int) Load 408 Store 128(HeightU) 409 410: 13(ptr) AccessChain 400(sizeQueryTemp) 190 411: 12(int) Load 410 Store 69(ElementsU) 411 413: 401 Load 403(g_tTexcdi4a) 414: 178(ivec3) ImageQuerySizeLod 413 26 Store 412(sizeQueryTemp) 414 415: 13(ptr) AccessChain 412(sizeQueryTemp) 66 416: 12(int) Load 415 Store 22(WidthU) 416 417: 13(ptr) AccessChain 412(sizeQueryTemp) 70 418: 12(int) Load 417 Store 128(HeightU) 418 419: 13(ptr) AccessChain 412(sizeQueryTemp) 190 420: 12(int) Load 419 Store 69(ElementsU) 420 421: 401 Load 403(g_tTexcdi4a) 422: 12(int) ImageQueryLevels 421 Store 29(NumberOfLevelsU) 422 427: 424 Load 426(g_tTexcdu4a) 428: 178(ivec3) ImageQuerySizeLod 427 20 Store 423(sizeQueryTemp) 428 429: 13(ptr) AccessChain 423(sizeQueryTemp) 66 430: 12(int) Load 429 Store 22(WidthU) 430 431: 13(ptr) AccessChain 423(sizeQueryTemp) 70 432: 12(int) Load 431 Store 128(HeightU) 432 433: 13(ptr) AccessChain 423(sizeQueryTemp) 190 434: 12(int) Load 433 Store 69(ElementsU) 434 436: 424 Load 426(g_tTexcdu4a) 437: 178(ivec3) ImageQuerySizeLod 436 26 Store 435(sizeQueryTemp) 437 438: 13(ptr) AccessChain 435(sizeQueryTemp) 66 439: 12(int) Load 438 Store 22(WidthU) 439 440: 13(ptr) AccessChain 435(sizeQueryTemp) 70 441: 12(int) Load 440 Store 128(HeightU) 441 442: 13(ptr) AccessChain 435(sizeQueryTemp) 190 443: 12(int) Load 442 Store 69(ElementsU) 443 444: 424 Load 426(g_tTexcdu4a) 445: 12(int) ImageQueryLevels 444 Store 29(NumberOfLevelsU) 445 450: 447 Load 449(g_tTex2dmsf4) 451: 58(ivec2) ImageQuerySize 450 Store 446(sizeQueryTemp) 451 452: 13(ptr) AccessChain 446(sizeQueryTemp) 66 453: 12(int) Load 452 Store 22(WidthU) 453 454: 13(ptr) AccessChain 446(sizeQueryTemp) 70 455: 12(int) Load 454 Store 128(HeightU) 455 457: 447 Load 449(g_tTex2dmsf4) 458: 12(int) ImageQuerySamples 457 Store 456(NumberOfSamplesU) 458 463: 460 Load 462(g_tTex2dmsi4) 464: 58(ivec2) ImageQuerySize 463 Store 459(sizeQueryTemp) 464 465: 13(ptr) AccessChain 459(sizeQueryTemp) 66 466: 12(int) Load 465 Store 22(WidthU) 466 467: 13(ptr) AccessChain 459(sizeQueryTemp) 70 468: 12(int) Load 467 Store 128(HeightU) 468 469: 460 Load 462(g_tTex2dmsi4) 470: 12(int) ImageQuerySamples 469 Store 456(NumberOfSamplesU) 470 475: 472 Load 474(g_tTex2dmsu4) 476: 58(ivec2) ImageQuerySize 475 Store 471(sizeQueryTemp) 476 477: 13(ptr) AccessChain 471(sizeQueryTemp) 66 478: 12(int) Load 477 Store 22(WidthU) 478 479: 13(ptr) AccessChain 471(sizeQueryTemp) 70 480: 12(int) Load 479 Store 128(HeightU) 480 481: 472 Load 474(g_tTex2dmsu4) 482: 12(int) ImageQuerySamples 481 Store 456(NumberOfSamplesU) 482 487: 484 Load 486(g_tTex2dmsf4a) 488: 178(ivec3) ImageQuerySize 487 Store 483(sizeQueryTemp) 488 489: 13(ptr) AccessChain 483(sizeQueryTemp) 66 490: 12(int) Load 489 Store 22(WidthU) 490 491: 13(ptr) AccessChain 483(sizeQueryTemp) 70 492: 12(int) Load 491 Store 128(HeightU) 492 493: 13(ptr) AccessChain 483(sizeQueryTemp) 190 494: 12(int) Load 493 Store 69(ElementsU) 494 495: 484 Load 486(g_tTex2dmsf4a) 496: 12(int) ImageQuerySamples 495 Store 456(NumberOfSamplesU) 496 501: 498 Load 500(g_tTex2dmsi4a) 502: 178(ivec3) ImageQuerySize 501 Store 497(sizeQueryTemp) 502 503: 13(ptr) AccessChain 497(sizeQueryTemp) 66 504: 12(int) Load 503 Store 22(WidthU) 504 505: 13(ptr) AccessChain 497(sizeQueryTemp) 70 506: 12(int) Load 505 Store 128(HeightU) 506 507: 13(ptr) AccessChain 497(sizeQueryTemp) 190 508: 12(int) Load 507 Store 69(ElementsU) 508 509: 498 Load 500(g_tTex2dmsi4a) 510: 12(int) ImageQuerySamples 509 Store 456(NumberOfSamplesU) 510 515: 512 Load 514(g_tTex2dmsu4a) 516: 178(ivec3) ImageQuerySize 515 Store 511(sizeQueryTemp) 516 517: 13(ptr) AccessChain 511(sizeQueryTemp) 66 518: 12(int) Load 517 Store 22(WidthU) 518 519: 13(ptr) AccessChain 511(sizeQueryTemp) 70 520: 12(int) Load 519 Store 128(HeightU) 520 521: 13(ptr) AccessChain 511(sizeQueryTemp) 190 522: 12(int) Load 521 Store 69(ElementsU) 522 523: 512 Load 514(g_tTex2dmsu4a) 524: 12(int) ImageQuerySamples 523 Store 456(NumberOfSamplesU) 524 530: 529(ptr) AccessChain 526(psout) 20 Store 530 528 533: 532(ptr) AccessChain 526(psout) 531 Store 533 527 534:8(PS_OUTPUT) Load 526(psout) ReturnValue 534 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.getdimensions.dx10.vert.out000066400000000000000000000220121506534232700245400ustar00rootroot00000000000000hlsl.getdimensions.dx10.vert Shader version: 500 0:? Sequence 0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:11 Function Parameters: 0:? Sequence 0:21 Sequence 0:21 move second child to first child ( temp uint) 0:21 'sizeQueryTemp' ( temp uint) 0:21 textureSize ( temp uint) 0:21 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:21 Constant: 0:21 0 (const int) 0:21 move second child to first child ( temp uint) 0:21 'WidthU' ( temp uint) 0:21 'sizeQueryTemp' ( temp uint) 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'sizeQueryTemp' ( temp uint) 0:22 textureSize ( temp uint) 0:22 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:22 Constant: 0:22 6 (const uint) 0:22 move second child to first child ( temp uint) 0:22 'WidthU' ( temp uint) 0:22 'sizeQueryTemp' ( temp uint) 0:22 move second child to first child ( temp uint) 0:22 'NumberOfLevelsU' ( temp uint) 0:22 textureQueryLevels ( temp uint) 0:22 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 Pos: direct index for structure ( temp 4-component vector of float) 0:24 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:26 Branch: Return with expression 0:26 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:11 Pos: direct index for structure ( temp 4-component vector of float) 0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:11 Function Parameters: 0:? Sequence 0:21 Sequence 0:21 move second child to first child ( temp uint) 0:21 'sizeQueryTemp' ( temp uint) 0:21 textureSize ( temp uint) 0:21 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:21 Constant: 0:21 0 (const int) 0:21 move second child to first child ( temp uint) 0:21 'WidthU' ( temp uint) 0:21 'sizeQueryTemp' ( temp uint) 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'sizeQueryTemp' ( temp uint) 0:22 textureSize ( temp uint) 0:22 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:22 Constant: 0:22 6 (const uint) 0:22 move second child to first child ( temp uint) 0:22 'WidthU' ( temp uint) 0:22 'sizeQueryTemp' ( temp uint) 0:22 move second child to first child ( temp uint) 0:22 'NumberOfLevelsU' ( temp uint) 0:22 textureQueryLevels ( temp uint) 0:22 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 Pos: direct index for structure ( temp 4-component vector of float) 0:24 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:26 Branch: Return with expression 0:26 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:11 Pos: direct index for structure ( temp 4-component vector of float) 0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader Capability Sampled1D Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 42 Source HLSL 500 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" Name 10 "@main(" Name 14 "sizeQueryTemp" Name 17 "g_tTex1df4" Name 22 "WidthU" Name 24 "sizeQueryTemp" Name 29 "NumberOfLevelsU" Name 33 "vsout" Name 42 "@entryPointOutput.Pos" Name 47 "g_sSamp" Decorate 17(g_tTex1df4) Binding 0 Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 42(@entryPointOutput.Pos) BuiltIn Position Decorate 47(g_sSamp) Binding 0 Decorate 47(g_sSamp) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(VS_OUTPUT) 12: TypeInt 32 0 13: TypePointer Function 12(int) 15: TypeImage 6(float) 1D sampled format:Unknown 16: TypePointer UniformConstant 15 17(g_tTex1df4): 16(ptr) Variable UniformConstant 19: TypeInt 32 1 20: 19(int) Constant 0 26: 12(int) Constant 6 32: TypePointer Function 8(VS_OUTPUT) 34: 6(float) Constant 0 35: 7(fvec4) ConstantComposite 34 34 34 34 36: TypePointer Function 7(fvec4) 41: TypePointer Output 7(fvec4) 42(@entryPointOutput.Pos): 41(ptr) Variable Output 45: TypeSampler 46: TypePointer UniformConstant 45 47(g_sSamp): 46(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 43:8(VS_OUTPUT) FunctionCall 10(@main() 44: 7(fvec4) CompositeExtract 43 0 Store 42(@entryPointOutput.Pos) 44 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 11: Label 14(sizeQueryTemp): 13(ptr) Variable Function 22(WidthU): 13(ptr) Variable Function 24(sizeQueryTemp): 13(ptr) Variable Function 29(NumberOfLevelsU): 13(ptr) Variable Function 33(vsout): 32(ptr) Variable Function 18: 15 Load 17(g_tTex1df4) 21: 12(int) ImageQuerySizeLod 18 20 Store 14(sizeQueryTemp) 21 23: 12(int) Load 14(sizeQueryTemp) Store 22(WidthU) 23 25: 15 Load 17(g_tTex1df4) 27: 12(int) ImageQuerySizeLod 25 26 Store 24(sizeQueryTemp) 27 28: 12(int) Load 24(sizeQueryTemp) Store 22(WidthU) 28 30: 15 Load 17(g_tTex1df4) 31: 12(int) ImageQueryLevels 30 Store 29(NumberOfLevelsU) 31 37: 36(ptr) AccessChain 33(vsout) 20 Store 37 35 38:8(VS_OUTPUT) Load 33(vsout) ReturnValue 38 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out000066400000000000000000001616641506534232700251470ustar00rootroot00000000000000hlsl.getdimensions.rw.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:44 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Function Parameters: 0:? Sequence 0:63 Sequence 0:63 move second child to first child ( temp uint) 0:63 'sizeQueryTemp' ( temp uint) 0:63 imageQuerySize ( temp uint) 0:63 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:63 move second child to first child ( temp uint) 0:63 'WidthU' ( temp uint) 0:63 'sizeQueryTemp' ( temp uint) 0:64 Sequence 0:64 move second child to first child ( temp uint) 0:64 'sizeQueryTemp' ( temp uint) 0:64 imageQuerySize ( temp uint) 0:64 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:64 move second child to first child ( temp uint) 0:64 'WidthU' ( temp uint) 0:64 'sizeQueryTemp' ( temp uint) 0:65 Sequence 0:65 move second child to first child ( temp uint) 0:65 'sizeQueryTemp' ( temp uint) 0:65 imageQuerySize ( temp uint) 0:65 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:65 move second child to first child ( temp uint) 0:65 'WidthU' ( temp uint) 0:65 'sizeQueryTemp' ( temp uint) 0:68 Sequence 0:68 move second child to first child ( temp uint) 0:68 'sizeQueryTemp' ( temp uint) 0:68 imageQuerySize ( temp uint) 0:68 'g_tBuffF' (layout( rgba32f) uniform imageBuffer) 0:68 move second child to first child ( temp uint) 0:68 'WidthU' ( temp uint) 0:68 'sizeQueryTemp' ( temp uint) 0:69 Sequence 0:69 move second child to first child ( temp uint) 0:69 'sizeQueryTemp' ( temp uint) 0:69 imageQuerySize ( temp uint) 0:69 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer) 0:69 move second child to first child ( temp uint) 0:69 'WidthU' ( temp uint) 0:69 'sizeQueryTemp' ( temp uint) 0:70 Sequence 0:70 move second child to first child ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:70 imageQuerySize ( temp uint) 0:70 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer) 0:70 move second child to first child ( temp uint) 0:70 'WidthU' ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:73 Sequence 0:73 move second child to first child ( temp 2-component vector of uint) 0:73 'sizeQueryTemp' ( temp 2-component vector of uint) 0:73 imageQuerySize ( temp 2-component vector of uint) 0:73 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:73 move second child to first child ( temp uint) 0:73 'WidthU' ( temp uint) 0:73 direct index ( temp uint) 0:73 'sizeQueryTemp' ( temp 2-component vector of uint) 0:73 Constant: 0:73 0 (const int) 0:73 move second child to first child ( temp uint) 0:73 'ElementsU' ( temp uint) 0:73 direct index ( temp uint) 0:73 'sizeQueryTemp' ( temp 2-component vector of uint) 0:73 Constant: 0:73 1 (const int) 0:74 Sequence 0:74 move second child to first child ( temp 2-component vector of uint) 0:74 'sizeQueryTemp' ( temp 2-component vector of uint) 0:74 imageQuerySize ( temp 2-component vector of uint) 0:74 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:74 move second child to first child ( temp uint) 0:74 'WidthU' ( temp uint) 0:74 direct index ( temp uint) 0:74 'sizeQueryTemp' ( temp 2-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 move second child to first child ( temp uint) 0:74 'ElementsU' ( temp uint) 0:74 direct index ( temp uint) 0:74 'sizeQueryTemp' ( temp 2-component vector of uint) 0:74 Constant: 0:74 1 (const int) 0:75 Sequence 0:75 move second child to first child ( temp 2-component vector of uint) 0:75 'sizeQueryTemp' ( temp 2-component vector of uint) 0:75 imageQuerySize ( temp 2-component vector of uint) 0:75 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:75 move second child to first child ( temp uint) 0:75 'WidthU' ( temp uint) 0:75 direct index ( temp uint) 0:75 'sizeQueryTemp' ( temp 2-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 move second child to first child ( temp uint) 0:75 'ElementsU' ( temp uint) 0:75 direct index ( temp uint) 0:75 'sizeQueryTemp' ( temp 2-component vector of uint) 0:75 Constant: 0:75 1 (const int) 0:78 Sequence 0:78 move second child to first child ( temp 2-component vector of uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 imageQuerySize ( temp 2-component vector of uint) 0:78 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:78 move second child to first child ( temp uint) 0:78 'WidthU' ( temp uint) 0:78 direct index ( temp uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 Constant: 0:78 0 (const int) 0:78 move second child to first child ( temp uint) 0:78 'HeightU' ( temp uint) 0:78 direct index ( temp uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 Constant: 0:78 1 (const int) 0:79 Sequence 0:79 move second child to first child ( temp 2-component vector of uint) 0:79 'sizeQueryTemp' ( temp 2-component vector of uint) 0:79 imageQuerySize ( temp 2-component vector of uint) 0:79 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:79 move second child to first child ( temp uint) 0:79 'WidthU' ( temp uint) 0:79 direct index ( temp uint) 0:79 'sizeQueryTemp' ( temp 2-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 move second child to first child ( temp uint) 0:79 'HeightU' ( temp uint) 0:79 direct index ( temp uint) 0:79 'sizeQueryTemp' ( temp 2-component vector of uint) 0:79 Constant: 0:79 1 (const int) 0:80 Sequence 0:80 move second child to first child ( temp 2-component vector of uint) 0:80 'sizeQueryTemp' ( temp 2-component vector of uint) 0:80 imageQuerySize ( temp 2-component vector of uint) 0:80 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:80 move second child to first child ( temp uint) 0:80 'WidthU' ( temp uint) 0:80 direct index ( temp uint) 0:80 'sizeQueryTemp' ( temp 2-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 move second child to first child ( temp uint) 0:80 'HeightU' ( temp uint) 0:80 direct index ( temp uint) 0:80 'sizeQueryTemp' ( temp 2-component vector of uint) 0:80 Constant: 0:80 1 (const int) 0:83 Sequence 0:83 move second child to first child ( temp 3-component vector of uint) 0:83 'sizeQueryTemp' ( temp 3-component vector of uint) 0:83 imageQuerySize ( temp 3-component vector of uint) 0:83 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:83 move second child to first child ( temp uint) 0:83 'WidthU' ( temp uint) 0:83 direct index ( temp uint) 0:83 'sizeQueryTemp' ( temp 3-component vector of uint) 0:83 Constant: 0:83 0 (const int) 0:83 move second child to first child ( temp uint) 0:83 'HeightU' ( temp uint) 0:83 direct index ( temp uint) 0:83 'sizeQueryTemp' ( temp 3-component vector of uint) 0:83 Constant: 0:83 1 (const int) 0:83 move second child to first child ( temp uint) 0:83 'ElementsU' ( temp uint) 0:83 direct index ( temp uint) 0:83 'sizeQueryTemp' ( temp 3-component vector of uint) 0:83 Constant: 0:83 2 (const int) 0:84 Sequence 0:84 move second child to first child ( temp 3-component vector of uint) 0:84 'sizeQueryTemp' ( temp 3-component vector of uint) 0:84 imageQuerySize ( temp 3-component vector of uint) 0:84 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:84 move second child to first child ( temp uint) 0:84 'WidthU' ( temp uint) 0:84 direct index ( temp uint) 0:84 'sizeQueryTemp' ( temp 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 move second child to first child ( temp uint) 0:84 'HeightU' ( temp uint) 0:84 direct index ( temp uint) 0:84 'sizeQueryTemp' ( temp 3-component vector of uint) 0:84 Constant: 0:84 1 (const int) 0:84 move second child to first child ( temp uint) 0:84 'ElementsU' ( temp uint) 0:84 direct index ( temp uint) 0:84 'sizeQueryTemp' ( temp 3-component vector of uint) 0:84 Constant: 0:84 2 (const int) 0:85 Sequence 0:85 move second child to first child ( temp 3-component vector of uint) 0:85 'sizeQueryTemp' ( temp 3-component vector of uint) 0:85 imageQuerySize ( temp 3-component vector of uint) 0:85 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:85 move second child to first child ( temp uint) 0:85 'WidthU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 move second child to first child ( temp uint) 0:85 'HeightU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 3-component vector of uint) 0:85 Constant: 0:85 1 (const int) 0:85 move second child to first child ( temp uint) 0:85 'ElementsU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 3-component vector of uint) 0:85 Constant: 0:85 2 (const int) 0:88 Sequence 0:88 move second child to first child ( temp 3-component vector of uint) 0:88 'sizeQueryTemp' ( temp 3-component vector of uint) 0:88 imageQuerySize ( temp 3-component vector of uint) 0:88 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:88 move second child to first child ( temp uint) 0:88 'WidthU' ( temp uint) 0:88 direct index ( temp uint) 0:88 'sizeQueryTemp' ( temp 3-component vector of uint) 0:88 Constant: 0:88 0 (const int) 0:88 move second child to first child ( temp uint) 0:88 'HeightU' ( temp uint) 0:88 direct index ( temp uint) 0:88 'sizeQueryTemp' ( temp 3-component vector of uint) 0:88 Constant: 0:88 1 (const int) 0:88 move second child to first child ( temp uint) 0:88 'DepthU' ( temp uint) 0:88 direct index ( temp uint) 0:88 'sizeQueryTemp' ( temp 3-component vector of uint) 0:88 Constant: 0:88 2 (const int) 0:89 Sequence 0:89 move second child to first child ( temp 3-component vector of uint) 0:89 'sizeQueryTemp' ( temp 3-component vector of uint) 0:89 imageQuerySize ( temp 3-component vector of uint) 0:89 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:89 move second child to first child ( temp uint) 0:89 'WidthU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 move second child to first child ( temp uint) 0:89 'HeightU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 3-component vector of uint) 0:89 Constant: 0:89 1 (const int) 0:89 move second child to first child ( temp uint) 0:89 'DepthU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 3-component vector of uint) 0:89 Constant: 0:89 2 (const int) 0:90 Sequence 0:90 move second child to first child ( temp 3-component vector of uint) 0:90 'sizeQueryTemp' ( temp 3-component vector of uint) 0:90 imageQuerySize ( temp 3-component vector of uint) 0:90 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:90 move second child to first child ( temp uint) 0:90 'WidthU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 move second child to first child ( temp uint) 0:90 'HeightU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 3-component vector of uint) 0:90 Constant: 0:90 1 (const int) 0:90 move second child to first child ( temp uint) 0:90 'DepthU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 3-component vector of uint) 0:90 Constant: 0:90 2 (const int) 0:92 move second child to first child ( temp 4-component vector of float) 0:92 Color: direct index for structure ( temp 4-component vector of float) 0:92 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1.000000 0:92 1.000000 0:92 1.000000 0:92 1.000000 0:93 move second child to first child ( temp float) 0:93 Depth: direct index for structure ( temp float) 0:93 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1.000000 0:95 Branch: Return with expression 0:95 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Function Definition: main( ( temp void) 0:44 Function Parameters: 0:? Sequence 0:44 Sequence 0:44 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:44 Color: direct index for structure ( temp 4-component vector of float) 0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Constant: 0:44 0 (const int) 0:44 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:44 Depth: direct index for structure ( temp float) 0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Constant: 0:44 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:? 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:? 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:? 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:? 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:? 'g_tBuffF' (layout( rgba32f) uniform imageBuffer) 0:? 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer) 0:? 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:44 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Function Parameters: 0:? Sequence 0:63 Sequence 0:63 move second child to first child ( temp uint) 0:63 'sizeQueryTemp' ( temp uint) 0:63 imageQuerySize ( temp uint) 0:63 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:63 move second child to first child ( temp uint) 0:63 'WidthU' ( temp uint) 0:63 'sizeQueryTemp' ( temp uint) 0:64 Sequence 0:64 move second child to first child ( temp uint) 0:64 'sizeQueryTemp' ( temp uint) 0:64 imageQuerySize ( temp uint) 0:64 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:64 move second child to first child ( temp uint) 0:64 'WidthU' ( temp uint) 0:64 'sizeQueryTemp' ( temp uint) 0:65 Sequence 0:65 move second child to first child ( temp uint) 0:65 'sizeQueryTemp' ( temp uint) 0:65 imageQuerySize ( temp uint) 0:65 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:65 move second child to first child ( temp uint) 0:65 'WidthU' ( temp uint) 0:65 'sizeQueryTemp' ( temp uint) 0:68 Sequence 0:68 move second child to first child ( temp uint) 0:68 'sizeQueryTemp' ( temp uint) 0:68 imageQuerySize ( temp uint) 0:68 'g_tBuffF' (layout( rgba32f) uniform imageBuffer) 0:68 move second child to first child ( temp uint) 0:68 'WidthU' ( temp uint) 0:68 'sizeQueryTemp' ( temp uint) 0:69 Sequence 0:69 move second child to first child ( temp uint) 0:69 'sizeQueryTemp' ( temp uint) 0:69 imageQuerySize ( temp uint) 0:69 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer) 0:69 move second child to first child ( temp uint) 0:69 'WidthU' ( temp uint) 0:69 'sizeQueryTemp' ( temp uint) 0:70 Sequence 0:70 move second child to first child ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:70 imageQuerySize ( temp uint) 0:70 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer) 0:70 move second child to first child ( temp uint) 0:70 'WidthU' ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:73 Sequence 0:73 move second child to first child ( temp 2-component vector of uint) 0:73 'sizeQueryTemp' ( temp 2-component vector of uint) 0:73 imageQuerySize ( temp 2-component vector of uint) 0:73 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:73 move second child to first child ( temp uint) 0:73 'WidthU' ( temp uint) 0:73 direct index ( temp uint) 0:73 'sizeQueryTemp' ( temp 2-component vector of uint) 0:73 Constant: 0:73 0 (const int) 0:73 move second child to first child ( temp uint) 0:73 'ElementsU' ( temp uint) 0:73 direct index ( temp uint) 0:73 'sizeQueryTemp' ( temp 2-component vector of uint) 0:73 Constant: 0:73 1 (const int) 0:74 Sequence 0:74 move second child to first child ( temp 2-component vector of uint) 0:74 'sizeQueryTemp' ( temp 2-component vector of uint) 0:74 imageQuerySize ( temp 2-component vector of uint) 0:74 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:74 move second child to first child ( temp uint) 0:74 'WidthU' ( temp uint) 0:74 direct index ( temp uint) 0:74 'sizeQueryTemp' ( temp 2-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 move second child to first child ( temp uint) 0:74 'ElementsU' ( temp uint) 0:74 direct index ( temp uint) 0:74 'sizeQueryTemp' ( temp 2-component vector of uint) 0:74 Constant: 0:74 1 (const int) 0:75 Sequence 0:75 move second child to first child ( temp 2-component vector of uint) 0:75 'sizeQueryTemp' ( temp 2-component vector of uint) 0:75 imageQuerySize ( temp 2-component vector of uint) 0:75 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:75 move second child to first child ( temp uint) 0:75 'WidthU' ( temp uint) 0:75 direct index ( temp uint) 0:75 'sizeQueryTemp' ( temp 2-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 move second child to first child ( temp uint) 0:75 'ElementsU' ( temp uint) 0:75 direct index ( temp uint) 0:75 'sizeQueryTemp' ( temp 2-component vector of uint) 0:75 Constant: 0:75 1 (const int) 0:78 Sequence 0:78 move second child to first child ( temp 2-component vector of uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 imageQuerySize ( temp 2-component vector of uint) 0:78 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:78 move second child to first child ( temp uint) 0:78 'WidthU' ( temp uint) 0:78 direct index ( temp uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 Constant: 0:78 0 (const int) 0:78 move second child to first child ( temp uint) 0:78 'HeightU' ( temp uint) 0:78 direct index ( temp uint) 0:78 'sizeQueryTemp' ( temp 2-component vector of uint) 0:78 Constant: 0:78 1 (const int) 0:79 Sequence 0:79 move second child to first child ( temp 2-component vector of uint) 0:79 'sizeQueryTemp' ( temp 2-component vector of uint) 0:79 imageQuerySize ( temp 2-component vector of uint) 0:79 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:79 move second child to first child ( temp uint) 0:79 'WidthU' ( temp uint) 0:79 direct index ( temp uint) 0:79 'sizeQueryTemp' ( temp 2-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 move second child to first child ( temp uint) 0:79 'HeightU' ( temp uint) 0:79 direct index ( temp uint) 0:79 'sizeQueryTemp' ( temp 2-component vector of uint) 0:79 Constant: 0:79 1 (const int) 0:80 Sequence 0:80 move second child to first child ( temp 2-component vector of uint) 0:80 'sizeQueryTemp' ( temp 2-component vector of uint) 0:80 imageQuerySize ( temp 2-component vector of uint) 0:80 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:80 move second child to first child ( temp uint) 0:80 'WidthU' ( temp uint) 0:80 direct index ( temp uint) 0:80 'sizeQueryTemp' ( temp 2-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 move second child to first child ( temp uint) 0:80 'HeightU' ( temp uint) 0:80 direct index ( temp uint) 0:80 'sizeQueryTemp' ( temp 2-component vector of uint) 0:80 Constant: 0:80 1 (const int) 0:83 Sequence 0:83 move second child to first child ( temp 3-component vector of uint) 0:83 'sizeQueryTemp' ( temp 3-component vector of uint) 0:83 imageQuerySize ( temp 3-component vector of uint) 0:83 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:83 move second child to first child ( temp uint) 0:83 'WidthU' ( temp uint) 0:83 direct index ( temp uint) 0:83 'sizeQueryTemp' ( temp 3-component vector of uint) 0:83 Constant: 0:83 0 (const int) 0:83 move second child to first child ( temp uint) 0:83 'HeightU' ( temp uint) 0:83 direct index ( temp uint) 0:83 'sizeQueryTemp' ( temp 3-component vector of uint) 0:83 Constant: 0:83 1 (const int) 0:83 move second child to first child ( temp uint) 0:83 'ElementsU' ( temp uint) 0:83 direct index ( temp uint) 0:83 'sizeQueryTemp' ( temp 3-component vector of uint) 0:83 Constant: 0:83 2 (const int) 0:84 Sequence 0:84 move second child to first child ( temp 3-component vector of uint) 0:84 'sizeQueryTemp' ( temp 3-component vector of uint) 0:84 imageQuerySize ( temp 3-component vector of uint) 0:84 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:84 move second child to first child ( temp uint) 0:84 'WidthU' ( temp uint) 0:84 direct index ( temp uint) 0:84 'sizeQueryTemp' ( temp 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 move second child to first child ( temp uint) 0:84 'HeightU' ( temp uint) 0:84 direct index ( temp uint) 0:84 'sizeQueryTemp' ( temp 3-component vector of uint) 0:84 Constant: 0:84 1 (const int) 0:84 move second child to first child ( temp uint) 0:84 'ElementsU' ( temp uint) 0:84 direct index ( temp uint) 0:84 'sizeQueryTemp' ( temp 3-component vector of uint) 0:84 Constant: 0:84 2 (const int) 0:85 Sequence 0:85 move second child to first child ( temp 3-component vector of uint) 0:85 'sizeQueryTemp' ( temp 3-component vector of uint) 0:85 imageQuerySize ( temp 3-component vector of uint) 0:85 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:85 move second child to first child ( temp uint) 0:85 'WidthU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 move second child to first child ( temp uint) 0:85 'HeightU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 3-component vector of uint) 0:85 Constant: 0:85 1 (const int) 0:85 move second child to first child ( temp uint) 0:85 'ElementsU' ( temp uint) 0:85 direct index ( temp uint) 0:85 'sizeQueryTemp' ( temp 3-component vector of uint) 0:85 Constant: 0:85 2 (const int) 0:88 Sequence 0:88 move second child to first child ( temp 3-component vector of uint) 0:88 'sizeQueryTemp' ( temp 3-component vector of uint) 0:88 imageQuerySize ( temp 3-component vector of uint) 0:88 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:88 move second child to first child ( temp uint) 0:88 'WidthU' ( temp uint) 0:88 direct index ( temp uint) 0:88 'sizeQueryTemp' ( temp 3-component vector of uint) 0:88 Constant: 0:88 0 (const int) 0:88 move second child to first child ( temp uint) 0:88 'HeightU' ( temp uint) 0:88 direct index ( temp uint) 0:88 'sizeQueryTemp' ( temp 3-component vector of uint) 0:88 Constant: 0:88 1 (const int) 0:88 move second child to first child ( temp uint) 0:88 'DepthU' ( temp uint) 0:88 direct index ( temp uint) 0:88 'sizeQueryTemp' ( temp 3-component vector of uint) 0:88 Constant: 0:88 2 (const int) 0:89 Sequence 0:89 move second child to first child ( temp 3-component vector of uint) 0:89 'sizeQueryTemp' ( temp 3-component vector of uint) 0:89 imageQuerySize ( temp 3-component vector of uint) 0:89 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:89 move second child to first child ( temp uint) 0:89 'WidthU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 move second child to first child ( temp uint) 0:89 'HeightU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 3-component vector of uint) 0:89 Constant: 0:89 1 (const int) 0:89 move second child to first child ( temp uint) 0:89 'DepthU' ( temp uint) 0:89 direct index ( temp uint) 0:89 'sizeQueryTemp' ( temp 3-component vector of uint) 0:89 Constant: 0:89 2 (const int) 0:90 Sequence 0:90 move second child to first child ( temp 3-component vector of uint) 0:90 'sizeQueryTemp' ( temp 3-component vector of uint) 0:90 imageQuerySize ( temp 3-component vector of uint) 0:90 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:90 move second child to first child ( temp uint) 0:90 'WidthU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 move second child to first child ( temp uint) 0:90 'HeightU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 3-component vector of uint) 0:90 Constant: 0:90 1 (const int) 0:90 move second child to first child ( temp uint) 0:90 'DepthU' ( temp uint) 0:90 direct index ( temp uint) 0:90 'sizeQueryTemp' ( temp 3-component vector of uint) 0:90 Constant: 0:90 2 (const int) 0:92 move second child to first child ( temp 4-component vector of float) 0:92 Color: direct index for structure ( temp 4-component vector of float) 0:92 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1.000000 0:92 1.000000 0:92 1.000000 0:92 1.000000 0:93 move second child to first child ( temp float) 0:93 Depth: direct index for structure ( temp float) 0:93 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1.000000 0:95 Branch: Return with expression 0:95 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Function Definition: main( ( temp void) 0:44 Function Parameters: 0:? Sequence 0:44 Sequence 0:44 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:44 Color: direct index for structure ( temp 4-component vector of float) 0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Constant: 0:44 0 (const int) 0:44 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:44 Depth: direct index for structure ( temp float) 0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:44 Constant: 0:44 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:? 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:? 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:? 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:? 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:? 'g_tBuffF' (layout( rgba32f) uniform imageBuffer) 0:? 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer) 0:? 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 232 Capability Shader Capability Image1D Capability ImageBuffer Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 216 220 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 14 "sizeQueryTemp" Name 17 "g_tTex1df4" Name 20 "WidthU" Name 22 "sizeQueryTemp" Name 26 "g_tTex1di4" Name 30 "sizeQueryTemp" Name 33 "g_tTex1du4" Name 37 "sizeQueryTemp" Name 40 "g_tBuffF" Name 44 "sizeQueryTemp" Name 47 "g_tBuffI" Name 51 "sizeQueryTemp" Name 54 "g_tBuffU" Name 60 "sizeQueryTemp" Name 63 "g_tTex1df4a" Name 69 "ElementsU" Name 73 "sizeQueryTemp" Name 76 "g_tTex1di4a" Name 83 "sizeQueryTemp" Name 86 "g_tTex1du4a" Name 93 "sizeQueryTemp" Name 96 "g_tTex2df4" Name 101 "HeightU" Name 104 "sizeQueryTemp" Name 107 "g_tTex2di4" Name 114 "sizeQueryTemp" Name 117 "g_tTex2du4" Name 126 "sizeQueryTemp" Name 129 "g_tTex2df4a" Name 139 "sizeQueryTemp" Name 142 "g_tTex2di4a" Name 151 "sizeQueryTemp" Name 154 "g_tTex2du4a" Name 163 "sizeQueryTemp" Name 166 "g_tTex3df4" Name 173 "DepthU" Name 176 "sizeQueryTemp" Name 179 "g_tTex3di4" Name 188 "sizeQueryTemp" Name 191 "g_tTex3du4" Name 201 "psout" Name 213 "flattenTemp" Name 216 "@entryPointOutput.Color" Name 220 "@entryPointOutput.Depth" Name 225 "g_sSamp" Name 229 "$Global" MemberName 229($Global) 0 "c1" MemberName 229($Global) 1 "c2" MemberName 229($Global) 2 "c3" MemberName 229($Global) 3 "c4" MemberName 229($Global) 4 "o1" MemberName 229($Global) 5 "o2" MemberName 229($Global) 6 "o3" MemberName 229($Global) 7 "o4" Name 231 "" Decorate 17(g_tTex1df4) Binding 0 Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 26(g_tTex1di4) Binding 1 Decorate 26(g_tTex1di4) DescriptorSet 0 Decorate 33(g_tTex1du4) Binding 2 Decorate 33(g_tTex1du4) DescriptorSet 0 Decorate 40(g_tBuffF) Binding 15 Decorate 40(g_tBuffF) DescriptorSet 0 Decorate 47(g_tBuffI) Binding 16 Decorate 47(g_tBuffI) DescriptorSet 0 Decorate 54(g_tBuffU) Binding 17 Decorate 54(g_tBuffU) DescriptorSet 0 Decorate 63(g_tTex1df4a) Binding 9 Decorate 63(g_tTex1df4a) DescriptorSet 0 Decorate 76(g_tTex1di4a) Binding 10 Decorate 76(g_tTex1di4a) DescriptorSet 0 Decorate 86(g_tTex1du4a) Binding 11 Decorate 86(g_tTex1du4a) DescriptorSet 0 Decorate 96(g_tTex2df4) Binding 3 Decorate 96(g_tTex2df4) DescriptorSet 0 Decorate 107(g_tTex2di4) Binding 4 Decorate 107(g_tTex2di4) DescriptorSet 0 Decorate 117(g_tTex2du4) Binding 5 Decorate 117(g_tTex2du4) DescriptorSet 0 Decorate 129(g_tTex2df4a) Binding 12 Decorate 129(g_tTex2df4a) DescriptorSet 0 Decorate 142(g_tTex2di4a) Binding 13 Decorate 142(g_tTex2di4a) DescriptorSet 0 Decorate 154(g_tTex2du4a) Binding 14 Decorate 154(g_tTex2du4a) DescriptorSet 0 Decorate 166(g_tTex3df4) Binding 6 Decorate 166(g_tTex3df4) DescriptorSet 0 Decorate 179(g_tTex3di4) Binding 7 Decorate 179(g_tTex3di4) DescriptorSet 0 Decorate 191(g_tTex3du4) Binding 8 Decorate 191(g_tTex3du4) DescriptorSet 0 Decorate 216(@entryPointOutput.Color) Location 0 Decorate 220(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 225(g_sSamp) Binding 0 Decorate 225(g_sSamp) DescriptorSet 0 Decorate 229($Global) Block MemberDecorate 229($Global) 0 Offset 0 MemberDecorate 229($Global) 1 Offset 8 MemberDecorate 229($Global) 2 Offset 16 MemberDecorate 229($Global) 3 Offset 32 MemberDecorate 229($Global) 4 Offset 48 MemberDecorate 229($Global) 5 Offset 56 MemberDecorate 229($Global) 6 Offset 64 MemberDecorate 229($Global) 7 Offset 80 Decorate 231 Binding 0 Decorate 231 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 0 13: TypePointer Function 12(int) 15: TypeImage 6(float) 1D nonsampled format:Rgba32f 16: TypePointer UniformConstant 15 17(g_tTex1df4): 16(ptr) Variable UniformConstant 23: TypeInt 32 1 24: TypeImage 23(int) 1D nonsampled format:Rgba32i 25: TypePointer UniformConstant 24 26(g_tTex1di4): 25(ptr) Variable UniformConstant 31: TypeImage 12(int) 1D nonsampled format:Rgba32ui 32: TypePointer UniformConstant 31 33(g_tTex1du4): 32(ptr) Variable UniformConstant 38: TypeImage 6(float) Buffer nonsampled format:Rgba32f 39: TypePointer UniformConstant 38 40(g_tBuffF): 39(ptr) Variable UniformConstant 45: TypeImage 23(int) Buffer nonsampled format:Rgba32i 46: TypePointer UniformConstant 45 47(g_tBuffI): 46(ptr) Variable UniformConstant 52: TypeImage 12(int) Buffer nonsampled format:Rgba32ui 53: TypePointer UniformConstant 52 54(g_tBuffU): 53(ptr) Variable UniformConstant 58: TypeVector 12(int) 2 59: TypePointer Function 58(ivec2) 61: TypeImage 6(float) 1D array nonsampled format:Rgba32f 62: TypePointer UniformConstant 61 63(g_tTex1df4a): 62(ptr) Variable UniformConstant 66: 12(int) Constant 0 70: 12(int) Constant 1 74: TypeImage 23(int) 1D array nonsampled format:Rgba32i 75: TypePointer UniformConstant 74 76(g_tTex1di4a): 75(ptr) Variable UniformConstant 84: TypeImage 12(int) 1D array nonsampled format:Rgba32ui 85: TypePointer UniformConstant 84 86(g_tTex1du4a): 85(ptr) Variable UniformConstant 94: TypeImage 6(float) 2D nonsampled format:Rgba32f 95: TypePointer UniformConstant 94 96(g_tTex2df4): 95(ptr) Variable UniformConstant 105: TypeImage 23(int) 2D nonsampled format:Rgba32i 106: TypePointer UniformConstant 105 107(g_tTex2di4): 106(ptr) Variable UniformConstant 115: TypeImage 12(int) 2D nonsampled format:Rgba32ui 116: TypePointer UniformConstant 115 117(g_tTex2du4): 116(ptr) Variable UniformConstant 124: TypeVector 12(int) 3 125: TypePointer Function 124(ivec3) 127: TypeImage 6(float) 2D array nonsampled format:Rgba32f 128: TypePointer UniformConstant 127 129(g_tTex2df4a): 128(ptr) Variable UniformConstant 136: 12(int) Constant 2 140: TypeImage 23(int) 2D array nonsampled format:Rgba32i 141: TypePointer UniformConstant 140 142(g_tTex2di4a): 141(ptr) Variable UniformConstant 152: TypeImage 12(int) 2D array nonsampled format:Rgba32ui 153: TypePointer UniformConstant 152 154(g_tTex2du4a): 153(ptr) Variable UniformConstant 164: TypeImage 6(float) 3D nonsampled format:Rgba32f 165: TypePointer UniformConstant 164 166(g_tTex3df4): 165(ptr) Variable UniformConstant 177: TypeImage 23(int) 3D nonsampled format:Rgba32i 178: TypePointer UniformConstant 177 179(g_tTex3di4): 178(ptr) Variable UniformConstant 189: TypeImage 12(int) 3D nonsampled format:Rgba32ui 190: TypePointer UniformConstant 189 191(g_tTex3du4): 190(ptr) Variable UniformConstant 200: TypePointer Function 8(PS_OUTPUT) 202: 23(int) Constant 0 203: 6(float) Constant 1065353216 204: 7(fvec4) ConstantComposite 203 203 203 203 205: TypePointer Function 7(fvec4) 207: 23(int) Constant 1 208: TypePointer Function 6(float) 215: TypePointer Output 7(fvec4) 216(@entryPointOutput.Color): 215(ptr) Variable Output 219: TypePointer Output 6(float) 220(@entryPointOutput.Depth): 219(ptr) Variable Output 223: TypeSampler 224: TypePointer UniformConstant 223 225(g_sSamp): 224(ptr) Variable UniformConstant 226: TypeVector 23(int) 2 227: TypeVector 23(int) 3 228: TypeVector 23(int) 4 229($Global): TypeStruct 23(int) 226(ivec2) 227(ivec3) 228(ivec4) 23(int) 226(ivec2) 227(ivec3) 228(ivec4) 230: TypePointer Uniform 229($Global) 231: 230(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 213(flattenTemp): 200(ptr) Variable Function 214:8(PS_OUTPUT) FunctionCall 10(@main() Store 213(flattenTemp) 214 217: 205(ptr) AccessChain 213(flattenTemp) 202 218: 7(fvec4) Load 217 Store 216(@entryPointOutput.Color) 218 221: 208(ptr) AccessChain 213(flattenTemp) 207 222: 6(float) Load 221 Store 220(@entryPointOutput.Depth) 222 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 14(sizeQueryTemp): 13(ptr) Variable Function 20(WidthU): 13(ptr) Variable Function 22(sizeQueryTemp): 13(ptr) Variable Function 30(sizeQueryTemp): 13(ptr) Variable Function 37(sizeQueryTemp): 13(ptr) Variable Function 44(sizeQueryTemp): 13(ptr) Variable Function 51(sizeQueryTemp): 13(ptr) Variable Function 60(sizeQueryTemp): 59(ptr) Variable Function 69(ElementsU): 13(ptr) Variable Function 73(sizeQueryTemp): 59(ptr) Variable Function 83(sizeQueryTemp): 59(ptr) Variable Function 93(sizeQueryTemp): 59(ptr) Variable Function 101(HeightU): 13(ptr) Variable Function 104(sizeQueryTemp): 59(ptr) Variable Function 114(sizeQueryTemp): 59(ptr) Variable Function 126(sizeQueryTemp): 125(ptr) Variable Function 139(sizeQueryTemp): 125(ptr) Variable Function 151(sizeQueryTemp): 125(ptr) Variable Function 163(sizeQueryTemp): 125(ptr) Variable Function 173(DepthU): 13(ptr) Variable Function 176(sizeQueryTemp): 125(ptr) Variable Function 188(sizeQueryTemp): 125(ptr) Variable Function 201(psout): 200(ptr) Variable Function 18: 15 Load 17(g_tTex1df4) 19: 12(int) ImageQuerySize 18 Store 14(sizeQueryTemp) 19 21: 12(int) Load 14(sizeQueryTemp) Store 20(WidthU) 21 27: 24 Load 26(g_tTex1di4) 28: 12(int) ImageQuerySize 27 Store 22(sizeQueryTemp) 28 29: 12(int) Load 22(sizeQueryTemp) Store 20(WidthU) 29 34: 31 Load 33(g_tTex1du4) 35: 12(int) ImageQuerySize 34 Store 30(sizeQueryTemp) 35 36: 12(int) Load 30(sizeQueryTemp) Store 20(WidthU) 36 41: 38 Load 40(g_tBuffF) 42: 12(int) ImageQuerySize 41 Store 37(sizeQueryTemp) 42 43: 12(int) Load 37(sizeQueryTemp) Store 20(WidthU) 43 48: 45 Load 47(g_tBuffI) 49: 12(int) ImageQuerySize 48 Store 44(sizeQueryTemp) 49 50: 12(int) Load 44(sizeQueryTemp) Store 20(WidthU) 50 55: 52 Load 54(g_tBuffU) 56: 12(int) ImageQuerySize 55 Store 51(sizeQueryTemp) 56 57: 12(int) Load 51(sizeQueryTemp) Store 20(WidthU) 57 64: 61 Load 63(g_tTex1df4a) 65: 58(ivec2) ImageQuerySize 64 Store 60(sizeQueryTemp) 65 67: 13(ptr) AccessChain 60(sizeQueryTemp) 66 68: 12(int) Load 67 Store 20(WidthU) 68 71: 13(ptr) AccessChain 60(sizeQueryTemp) 70 72: 12(int) Load 71 Store 69(ElementsU) 72 77: 74 Load 76(g_tTex1di4a) 78: 58(ivec2) ImageQuerySize 77 Store 73(sizeQueryTemp) 78 79: 13(ptr) AccessChain 73(sizeQueryTemp) 66 80: 12(int) Load 79 Store 20(WidthU) 80 81: 13(ptr) AccessChain 73(sizeQueryTemp) 70 82: 12(int) Load 81 Store 69(ElementsU) 82 87: 84 Load 86(g_tTex1du4a) 88: 58(ivec2) ImageQuerySize 87 Store 83(sizeQueryTemp) 88 89: 13(ptr) AccessChain 83(sizeQueryTemp) 66 90: 12(int) Load 89 Store 20(WidthU) 90 91: 13(ptr) AccessChain 83(sizeQueryTemp) 70 92: 12(int) Load 91 Store 69(ElementsU) 92 97: 94 Load 96(g_tTex2df4) 98: 58(ivec2) ImageQuerySize 97 Store 93(sizeQueryTemp) 98 99: 13(ptr) AccessChain 93(sizeQueryTemp) 66 100: 12(int) Load 99 Store 20(WidthU) 100 102: 13(ptr) AccessChain 93(sizeQueryTemp) 70 103: 12(int) Load 102 Store 101(HeightU) 103 108: 105 Load 107(g_tTex2di4) 109: 58(ivec2) ImageQuerySize 108 Store 104(sizeQueryTemp) 109 110: 13(ptr) AccessChain 104(sizeQueryTemp) 66 111: 12(int) Load 110 Store 20(WidthU) 111 112: 13(ptr) AccessChain 104(sizeQueryTemp) 70 113: 12(int) Load 112 Store 101(HeightU) 113 118: 115 Load 117(g_tTex2du4) 119: 58(ivec2) ImageQuerySize 118 Store 114(sizeQueryTemp) 119 120: 13(ptr) AccessChain 114(sizeQueryTemp) 66 121: 12(int) Load 120 Store 20(WidthU) 121 122: 13(ptr) AccessChain 114(sizeQueryTemp) 70 123: 12(int) Load 122 Store 101(HeightU) 123 130: 127 Load 129(g_tTex2df4a) 131: 124(ivec3) ImageQuerySize 130 Store 126(sizeQueryTemp) 131 132: 13(ptr) AccessChain 126(sizeQueryTemp) 66 133: 12(int) Load 132 Store 20(WidthU) 133 134: 13(ptr) AccessChain 126(sizeQueryTemp) 70 135: 12(int) Load 134 Store 101(HeightU) 135 137: 13(ptr) AccessChain 126(sizeQueryTemp) 136 138: 12(int) Load 137 Store 69(ElementsU) 138 143: 140 Load 142(g_tTex2di4a) 144: 124(ivec3) ImageQuerySize 143 Store 139(sizeQueryTemp) 144 145: 13(ptr) AccessChain 139(sizeQueryTemp) 66 146: 12(int) Load 145 Store 20(WidthU) 146 147: 13(ptr) AccessChain 139(sizeQueryTemp) 70 148: 12(int) Load 147 Store 101(HeightU) 148 149: 13(ptr) AccessChain 139(sizeQueryTemp) 136 150: 12(int) Load 149 Store 69(ElementsU) 150 155: 152 Load 154(g_tTex2du4a) 156: 124(ivec3) ImageQuerySize 155 Store 151(sizeQueryTemp) 156 157: 13(ptr) AccessChain 151(sizeQueryTemp) 66 158: 12(int) Load 157 Store 20(WidthU) 158 159: 13(ptr) AccessChain 151(sizeQueryTemp) 70 160: 12(int) Load 159 Store 101(HeightU) 160 161: 13(ptr) AccessChain 151(sizeQueryTemp) 136 162: 12(int) Load 161 Store 69(ElementsU) 162 167: 164 Load 166(g_tTex3df4) 168: 124(ivec3) ImageQuerySize 167 Store 163(sizeQueryTemp) 168 169: 13(ptr) AccessChain 163(sizeQueryTemp) 66 170: 12(int) Load 169 Store 20(WidthU) 170 171: 13(ptr) AccessChain 163(sizeQueryTemp) 70 172: 12(int) Load 171 Store 101(HeightU) 172 174: 13(ptr) AccessChain 163(sizeQueryTemp) 136 175: 12(int) Load 174 Store 173(DepthU) 175 180: 177 Load 179(g_tTex3di4) 181: 124(ivec3) ImageQuerySize 180 Store 176(sizeQueryTemp) 181 182: 13(ptr) AccessChain 176(sizeQueryTemp) 66 183: 12(int) Load 182 Store 20(WidthU) 183 184: 13(ptr) AccessChain 176(sizeQueryTemp) 70 185: 12(int) Load 184 Store 101(HeightU) 185 186: 13(ptr) AccessChain 176(sizeQueryTemp) 136 187: 12(int) Load 186 Store 173(DepthU) 187 192: 189 Load 191(g_tTex3du4) 193: 124(ivec3) ImageQuerySize 192 Store 188(sizeQueryTemp) 193 194: 13(ptr) AccessChain 188(sizeQueryTemp) 66 195: 12(int) Load 194 Store 20(WidthU) 195 196: 13(ptr) AccessChain 188(sizeQueryTemp) 70 197: 12(int) Load 196 Store 101(HeightU) 197 198: 13(ptr) AccessChain 188(sizeQueryTemp) 136 199: 12(int) Load 198 Store 173(DepthU) 199 206: 205(ptr) AccessChain 201(psout) 202 Store 206 204 209: 208(ptr) AccessChain 201(psout) 207 Store 209 203 210:8(PS_OUTPUT) Load 201(psout) ReturnValue 210 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.getsampleposition.dx10.frag.out000066400000000000000000001134261506534232700254070ustar00rootroot00000000000000hlsl.getsampleposition.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:13 Function Definition: @main(i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Function Parameters: 0:13 'sample' ( in int) 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 2-component vector of float) 0:16 'r00' ( temp 2-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp uint) 0:16 '@sampleCount' ( temp uint) 0:16 imageQuerySamples ( temp uint) 0:16 'g_tTex2dmsf4' ( uniform texture2DMS) 0:16 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:16 Condition 0:16 Compare Equal ( temp bool) 0:16 '@sampleCount' ( temp uint) 0:16 Constant: 0:16 2 (const int) 0:16 true case 0:16 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.250000 0:? 0.250000 0:? -0.250000 0:? -0.250000 0:16 'sample' ( in int) 0:16 false case 0:16 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:16 Condition 0:16 Compare Equal ( temp bool) 0:16 '@sampleCount' ( temp uint) 0:16 Constant: 0:16 4 (const int) 0:16 true case 0:16 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? -0.125000 0:? -0.375000 0:? 0.375000 0:? -0.125000 0:? -0.375000 0:? 0.125000 0:? 0.125000 0:? 0.375000 0:16 'sample' ( in int) 0:16 false case 0:16 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:16 Condition 0:16 Compare Equal ( temp bool) 0:16 '@sampleCount' ( temp uint) 0:16 Constant: 0:16 8 (const int) 0:16 true case 0:16 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.062500 0:? -0.187500 0:? -0.062500 0:? 0.187500 0:? 0.312500 0:? 0.062500 0:? -0.187500 0:? -0.312500 0:? -0.312500 0:? 0.312500 0:? -0.437500 0:? -0.062500 0:? 0.187500 0:? 0.437500 0:? 0.437500 0:? -0.437500 0:16 'sample' ( in int) 0:16 false case 0:16 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:16 Condition 0:16 Compare Equal ( temp bool) 0:16 '@sampleCount' ( temp uint) 0:16 Constant: 0:16 16 (const int) 0:16 true case 0:16 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.062500 0:? 0.062500 0:? -0.062500 0:? -0.187500 0:? -0.187500 0:? 0.125000 0:? 0.250000 0:? -0.062500 0:? -0.312500 0:? -0.125000 0:? 0.125000 0:? 0.312500 0:? 0.312500 0:? 0.187500 0:? 0.187500 0:? -0.312500 0:? -0.125000 0:? 0.375000 0:? 0.000000 0:? -0.437500 0:? -0.250000 0:? -0.375000 0:? -0.375000 0:? 0.250000 0:? -0.500000 0:? 0.000000 0:? 0.437500 0:? -0.250000 0:? 0.375000 0:? 0.437500 0:? -0.437500 0:? -0.500000 0:16 'sample' ( in int) 0:16 false case 0:? Constant: 0:? 0.000000 0:? 0.000000 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of float) 0:17 'r01' ( temp 2-component vector of float) 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 '@sampleCount' ( temp uint) 0:17 imageQuerySamples ( temp uint) 0:17 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:17 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Equal ( temp bool) 0:17 '@sampleCount' ( temp uint) 0:17 Constant: 0:17 2 (const int) 0:17 true case 0:17 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.250000 0:? 0.250000 0:? -0.250000 0:? -0.250000 0:17 'sample' ( in int) 0:17 false case 0:17 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Equal ( temp bool) 0:17 '@sampleCount' ( temp uint) 0:17 Constant: 0:17 4 (const int) 0:17 true case 0:17 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? -0.125000 0:? -0.375000 0:? 0.375000 0:? -0.125000 0:? -0.375000 0:? 0.125000 0:? 0.125000 0:? 0.375000 0:17 'sample' ( in int) 0:17 false case 0:17 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Equal ( temp bool) 0:17 '@sampleCount' ( temp uint) 0:17 Constant: 0:17 8 (const int) 0:17 true case 0:17 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.062500 0:? -0.187500 0:? -0.062500 0:? 0.187500 0:? 0.312500 0:? 0.062500 0:? -0.187500 0:? -0.312500 0:? -0.312500 0:? 0.312500 0:? -0.437500 0:? -0.062500 0:? 0.187500 0:? 0.437500 0:? 0.437500 0:? -0.437500 0:17 'sample' ( in int) 0:17 false case 0:17 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Equal ( temp bool) 0:17 '@sampleCount' ( temp uint) 0:17 Constant: 0:17 16 (const int) 0:17 true case 0:17 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.062500 0:? 0.062500 0:? -0.062500 0:? -0.187500 0:? -0.187500 0:? 0.125000 0:? 0.250000 0:? -0.062500 0:? -0.312500 0:? -0.125000 0:? 0.125000 0:? 0.312500 0:? 0.312500 0:? 0.187500 0:? 0.187500 0:? -0.312500 0:? -0.125000 0:? 0.375000 0:? 0.000000 0:? -0.437500 0:? -0.250000 0:? -0.375000 0:? -0.375000 0:? 0.250000 0:? -0.500000 0:? 0.000000 0:? 0.437500 0:? -0.250000 0:? 0.375000 0:? 0.437500 0:? -0.437500 0:? -0.500000 0:17 'sample' ( in int) 0:17 false case 0:? Constant: 0:? 0.000000 0:? 0.000000 0:19 move second child to first child ( temp 4-component vector of float) 0:19 Color: direct index for structure ( temp 4-component vector of float) 0:19 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1.000000 0:19 1.000000 0:19 1.000000 0:19 1.000000 0:20 move second child to first child ( temp float) 0:20 Depth: direct index for structure ( temp float) 0:20 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 1.000000 0:22 Branch: Return with expression 0:22 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp int) 0:? 'sample' ( temp int) 0:? 'sample' (layout( location=0) flat in int) 0:13 Sequence 0:13 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Function Call: @main(i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:? 'sample' ( temp int) 0:13 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:13 Color: direct index for structure ( temp 4-component vector of float) 0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:13 Depth: direct index for structure ( temp float) 0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Constant: 0:13 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex2dmsf4' ( uniform texture2DMS) 0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:? 'sample' (layout( location=0) flat in int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:13 Function Definition: @main(i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Function Parameters: 0:13 'sample' ( in int) 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 2-component vector of float) 0:16 'r00' ( temp 2-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp uint) 0:16 '@sampleCount' ( temp uint) 0:16 imageQuerySamples ( temp uint) 0:16 'g_tTex2dmsf4' ( uniform texture2DMS) 0:16 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:16 Condition 0:16 Compare Equal ( temp bool) 0:16 '@sampleCount' ( temp uint) 0:16 Constant: 0:16 2 (const int) 0:16 true case 0:16 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.250000 0:? 0.250000 0:? -0.250000 0:? -0.250000 0:16 'sample' ( in int) 0:16 false case 0:16 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:16 Condition 0:16 Compare Equal ( temp bool) 0:16 '@sampleCount' ( temp uint) 0:16 Constant: 0:16 4 (const int) 0:16 true case 0:16 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? -0.125000 0:? -0.375000 0:? 0.375000 0:? -0.125000 0:? -0.375000 0:? 0.125000 0:? 0.125000 0:? 0.375000 0:16 'sample' ( in int) 0:16 false case 0:16 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:16 Condition 0:16 Compare Equal ( temp bool) 0:16 '@sampleCount' ( temp uint) 0:16 Constant: 0:16 8 (const int) 0:16 true case 0:16 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.062500 0:? -0.187500 0:? -0.062500 0:? 0.187500 0:? 0.312500 0:? 0.062500 0:? -0.187500 0:? -0.312500 0:? -0.312500 0:? 0.312500 0:? -0.437500 0:? -0.062500 0:? 0.187500 0:? 0.437500 0:? 0.437500 0:? -0.437500 0:16 'sample' ( in int) 0:16 false case 0:16 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:16 Condition 0:16 Compare Equal ( temp bool) 0:16 '@sampleCount' ( temp uint) 0:16 Constant: 0:16 16 (const int) 0:16 true case 0:16 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.062500 0:? 0.062500 0:? -0.062500 0:? -0.187500 0:? -0.187500 0:? 0.125000 0:? 0.250000 0:? -0.062500 0:? -0.312500 0:? -0.125000 0:? 0.125000 0:? 0.312500 0:? 0.312500 0:? 0.187500 0:? 0.187500 0:? -0.312500 0:? -0.125000 0:? 0.375000 0:? 0.000000 0:? -0.437500 0:? -0.250000 0:? -0.375000 0:? -0.375000 0:? 0.250000 0:? -0.500000 0:? 0.000000 0:? 0.437500 0:? -0.250000 0:? 0.375000 0:? 0.437500 0:? -0.437500 0:? -0.500000 0:16 'sample' ( in int) 0:16 false case 0:? Constant: 0:? 0.000000 0:? 0.000000 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of float) 0:17 'r01' ( temp 2-component vector of float) 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 '@sampleCount' ( temp uint) 0:17 imageQuerySamples ( temp uint) 0:17 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:17 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Equal ( temp bool) 0:17 '@sampleCount' ( temp uint) 0:17 Constant: 0:17 2 (const int) 0:17 true case 0:17 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.250000 0:? 0.250000 0:? -0.250000 0:? -0.250000 0:17 'sample' ( in int) 0:17 false case 0:17 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Equal ( temp bool) 0:17 '@sampleCount' ( temp uint) 0:17 Constant: 0:17 4 (const int) 0:17 true case 0:17 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? -0.125000 0:? -0.375000 0:? 0.375000 0:? -0.125000 0:? -0.375000 0:? 0.125000 0:? 0.125000 0:? 0.375000 0:17 'sample' ( in int) 0:17 false case 0:17 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Equal ( temp bool) 0:17 '@sampleCount' ( temp uint) 0:17 Constant: 0:17 8 (const int) 0:17 true case 0:17 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.062500 0:? -0.187500 0:? -0.062500 0:? 0.187500 0:? 0.312500 0:? 0.062500 0:? -0.187500 0:? -0.312500 0:? -0.312500 0:? 0.312500 0:? -0.437500 0:? -0.062500 0:? 0.187500 0:? 0.437500 0:? 0.437500 0:? -0.437500 0:17 'sample' ( in int) 0:17 false case 0:17 Test condition and select ( temp 2-component vector of float): no shortcircuit 0:17 Condition 0:17 Compare Equal ( temp bool) 0:17 '@sampleCount' ( temp uint) 0:17 Constant: 0:17 16 (const int) 0:17 true case 0:17 indirect index ( temp 2-component vector of float) 0:? Constant: 0:? 0.062500 0:? 0.062500 0:? -0.062500 0:? -0.187500 0:? -0.187500 0:? 0.125000 0:? 0.250000 0:? -0.062500 0:? -0.312500 0:? -0.125000 0:? 0.125000 0:? 0.312500 0:? 0.312500 0:? 0.187500 0:? 0.187500 0:? -0.312500 0:? -0.125000 0:? 0.375000 0:? 0.000000 0:? -0.437500 0:? -0.250000 0:? -0.375000 0:? -0.375000 0:? 0.250000 0:? -0.500000 0:? 0.000000 0:? 0.437500 0:? -0.250000 0:? 0.375000 0:? 0.437500 0:? -0.437500 0:? -0.500000 0:17 'sample' ( in int) 0:17 false case 0:? Constant: 0:? 0.000000 0:? 0.000000 0:19 move second child to first child ( temp 4-component vector of float) 0:19 Color: direct index for structure ( temp 4-component vector of float) 0:19 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1.000000 0:19 1.000000 0:19 1.000000 0:19 1.000000 0:20 move second child to first child ( temp float) 0:20 Depth: direct index for structure ( temp float) 0:20 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 1.000000 0:22 Branch: Return with expression 0:22 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp int) 0:? 'sample' ( temp int) 0:? 'sample' (layout( location=0) flat in int) 0:13 Sequence 0:13 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Function Call: @main(i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:? 'sample' ( temp int) 0:13 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:13 Color: direct index for structure ( temp 4-component vector of float) 0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:13 Depth: direct index for structure ( temp float) 0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:13 Constant: 0:13 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex2dmsf4' ( uniform texture2DMS) 0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:? 'sample' (layout( location=0) flat in int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 181 188 192 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 10 "PS_OUTPUT" MemberName 10(PS_OUTPUT) 0 "Color" MemberName 10(PS_OUTPUT) 1 "Depth" Name 13 "@main(i1;" Name 12 "sample" Name 17 "r00" Name 20 "@sampleCount" Name 23 "g_tTex2dmsf4" Name 39 "indexable" Name 58 "indexable" Name 85 "indexable" Name 114 "indexable" Name 127 "r01" Name 128 "@sampleCount" Name 131 "g_tTex2dmsf4a" Name 137 "indexable" Name 143 "indexable" Name 149 "indexable" Name 155 "indexable" Name 167 "psout" Name 179 "sample" Name 181 "sample" Name 183 "flattenTemp" Name 184 "param" Name 188 "@entryPointOutput.Color" Name 192 "@entryPointOutput.Depth" Name 197 "g_sSamp" Decorate 23(g_tTex2dmsf4) Binding 1 Decorate 23(g_tTex2dmsf4) DescriptorSet 0 Decorate 131(g_tTex2dmsf4a) Binding 2 Decorate 131(g_tTex2dmsf4a) DescriptorSet 0 Decorate 181(sample) Flat Decorate 181(sample) Location 0 Decorate 188(@entryPointOutput.Color) Location 0 Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 197(g_sSamp) Binding 0 Decorate 197(g_sSamp) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10(PS_OUTPUT): TypeStruct 9(fvec4) 8(float) 11: TypeFunction 10(PS_OUTPUT) 7(ptr) 15: TypeVector 8(float) 2 16: TypePointer Function 15(fvec2) 18: TypeInt 32 0 19: TypePointer Function 18(int) 21: TypeImage 8(float) 2D multi-sampled sampled format:Unknown 22: TypePointer UniformConstant 21 23(g_tTex2dmsf4): 22(ptr) Variable UniformConstant 27: 6(int) Constant 2 28: TypeBool 30: 18(int) Constant 2 31: TypeArray 15(fvec2) 30 32: 8(float) Constant 1048576000 33: 15(fvec2) ConstantComposite 32 32 34: 8(float) Constant 3196059648 35: 15(fvec2) ConstantComposite 34 34 36: 31 ConstantComposite 33 35 38: TypePointer Function 31 43: 6(int) Constant 4 45: 18(int) Constant 4 46: TypeArray 15(fvec2) 45 47: 8(float) Constant 3187671040 48: 8(float) Constant 3200253952 49: 15(fvec2) ConstantComposite 47 48 50: 8(float) Constant 1052770304 51: 15(fvec2) ConstantComposite 50 47 52: 8(float) Constant 1040187392 53: 15(fvec2) ConstantComposite 48 52 54: 15(fvec2) ConstantComposite 52 50 55: 46 ConstantComposite 49 51 53 54 57: TypePointer Function 46 62: 6(int) Constant 8 64: 18(int) Constant 8 65: TypeArray 15(fvec2) 64 66: 8(float) Constant 1031798784 67: 8(float) Constant 3191865344 68: 15(fvec2) ConstantComposite 66 67 69: 8(float) Constant 3179282432 70: 8(float) Constant 1044381696 71: 15(fvec2) ConstantComposite 69 70 72: 8(float) Constant 1050673152 73: 15(fvec2) ConstantComposite 72 66 74: 8(float) Constant 3198156800 75: 15(fvec2) ConstantComposite 67 74 76: 15(fvec2) ConstantComposite 74 72 77: 8(float) Constant 3202351104 78: 15(fvec2) ConstantComposite 77 69 79: 8(float) Constant 1054867456 80: 15(fvec2) ConstantComposite 70 79 81: 15(fvec2) ConstantComposite 79 77 82: 65 ConstantComposite 68 71 73 75 76 78 80 81 84: TypePointer Function 65 89: 6(int) Constant 16 91: 18(int) Constant 16 92: TypeArray 15(fvec2) 91 93: 15(fvec2) ConstantComposite 66 66 94: 15(fvec2) ConstantComposite 69 67 95: 15(fvec2) ConstantComposite 67 52 96: 15(fvec2) ConstantComposite 32 69 97: 15(fvec2) ConstantComposite 74 47 98: 15(fvec2) ConstantComposite 52 72 99: 15(fvec2) ConstantComposite 72 70 100: 15(fvec2) ConstantComposite 70 74 101: 15(fvec2) ConstantComposite 47 50 102: 8(float) Constant 0 103: 15(fvec2) ConstantComposite 102 77 104: 15(fvec2) ConstantComposite 34 48 105: 15(fvec2) ConstantComposite 48 32 106: 8(float) Constant 3204448256 107: 15(fvec2) ConstantComposite 106 102 108: 15(fvec2) ConstantComposite 79 34 109: 15(fvec2) ConstantComposite 50 79 110: 15(fvec2) ConstantComposite 77 106 111: 92 ConstantComposite 93 94 95 96 97 98 99 100 101 103 104 105 107 108 109 110 113: TypePointer Function 92 117: 15(fvec2) ConstantComposite 102 102 118: TypeVector 28(bool) 2 129: TypeImage 8(float) 2D array multi-sampled sampled format:Unknown 130: TypePointer UniformConstant 129 131(g_tTex2dmsf4a): 130(ptr) Variable UniformConstant 166: TypePointer Function 10(PS_OUTPUT) 168: 6(int) Constant 0 169: 8(float) Constant 1065353216 170: 9(fvec4) ConstantComposite 169 169 169 169 171: TypePointer Function 9(fvec4) 173: 6(int) Constant 1 174: TypePointer Function 8(float) 180: TypePointer Input 6(int) 181(sample): 180(ptr) Variable Input 187: TypePointer Output 9(fvec4) 188(@entryPointOutput.Color): 187(ptr) Variable Output 191: TypePointer Output 8(float) 192(@entryPointOutput.Depth): 191(ptr) Variable Output 195: TypeSampler 196: TypePointer UniformConstant 195 197(g_sSamp): 196(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 179(sample): 7(ptr) Variable Function 183(flattenTemp): 166(ptr) Variable Function 184(param): 7(ptr) Variable Function 182: 6(int) Load 181(sample) Store 179(sample) 182 185: 6(int) Load 179(sample) Store 184(param) 185 186:10(PS_OUTPUT) FunctionCall 13(@main(i1;) 184(param) Store 183(flattenTemp) 186 189: 171(ptr) AccessChain 183(flattenTemp) 168 190: 9(fvec4) Load 189 Store 188(@entryPointOutput.Color) 190 193: 174(ptr) AccessChain 183(flattenTemp) 173 194: 8(float) Load 193 Store 192(@entryPointOutput.Depth) 194 Return FunctionEnd 13(@main(i1;):10(PS_OUTPUT) Function None 11 12(sample): 7(ptr) FunctionParameter 14: Label 17(r00): 16(ptr) Variable Function 20(@sampleCount): 19(ptr) Variable Function 39(indexable): 38(ptr) Variable Function 58(indexable): 57(ptr) Variable Function 85(indexable): 84(ptr) Variable Function 114(indexable): 113(ptr) Variable Function 127(r01): 16(ptr) Variable Function 128(@sampleCount): 19(ptr) Variable Function 137(indexable): 38(ptr) Variable Function 143(indexable): 57(ptr) Variable Function 149(indexable): 84(ptr) Variable Function 155(indexable): 113(ptr) Variable Function 167(psout): 166(ptr) Variable Function 24: 21 Load 23(g_tTex2dmsf4) 25: 18(int) ImageQuerySamples 24 Store 20(@sampleCount) 25 26: 18(int) Load 20(@sampleCount) 29: 28(bool) IEqual 26 27 37: 6(int) Load 12(sample) Store 39(indexable) 36 40: 16(ptr) AccessChain 39(indexable) 37 41: 15(fvec2) Load 40 42: 18(int) Load 20(@sampleCount) 44: 28(bool) IEqual 42 43 56: 6(int) Load 12(sample) Store 58(indexable) 55 59: 16(ptr) AccessChain 58(indexable) 56 60: 15(fvec2) Load 59 61: 18(int) Load 20(@sampleCount) 63: 28(bool) IEqual 61 62 83: 6(int) Load 12(sample) Store 85(indexable) 82 86: 16(ptr) AccessChain 85(indexable) 83 87: 15(fvec2) Load 86 88: 18(int) Load 20(@sampleCount) 90: 28(bool) IEqual 88 89 112: 6(int) Load 12(sample) Store 114(indexable) 111 115: 16(ptr) AccessChain 114(indexable) 112 116: 15(fvec2) Load 115 119: 118(bvec2) CompositeConstruct 90 90 120: 15(fvec2) Select 119 116 117 121: 118(bvec2) CompositeConstruct 63 63 122: 15(fvec2) Select 121 87 120 123: 118(bvec2) CompositeConstruct 44 44 124: 15(fvec2) Select 123 60 122 125: 118(bvec2) CompositeConstruct 29 29 126: 15(fvec2) Select 125 41 124 Store 17(r00) 126 132: 129 Load 131(g_tTex2dmsf4a) 133: 18(int) ImageQuerySamples 132 Store 128(@sampleCount) 133 134: 18(int) Load 128(@sampleCount) 135: 28(bool) IEqual 134 27 136: 6(int) Load 12(sample) Store 137(indexable) 36 138: 16(ptr) AccessChain 137(indexable) 136 139: 15(fvec2) Load 138 140: 18(int) Load 128(@sampleCount) 141: 28(bool) IEqual 140 43 142: 6(int) Load 12(sample) Store 143(indexable) 55 144: 16(ptr) AccessChain 143(indexable) 142 145: 15(fvec2) Load 144 146: 18(int) Load 128(@sampleCount) 147: 28(bool) IEqual 146 62 148: 6(int) Load 12(sample) Store 149(indexable) 82 150: 16(ptr) AccessChain 149(indexable) 148 151: 15(fvec2) Load 150 152: 18(int) Load 128(@sampleCount) 153: 28(bool) IEqual 152 89 154: 6(int) Load 12(sample) Store 155(indexable) 111 156: 16(ptr) AccessChain 155(indexable) 154 157: 15(fvec2) Load 156 158: 118(bvec2) CompositeConstruct 153 153 159: 15(fvec2) Select 158 157 117 160: 118(bvec2) CompositeConstruct 147 147 161: 15(fvec2) Select 160 151 159 162: 118(bvec2) CompositeConstruct 141 141 163: 15(fvec2) Select 162 145 161 164: 118(bvec2) CompositeConstruct 135 135 165: 15(fvec2) Select 164 139 163 Store 127(r01) 165 172: 171(ptr) AccessChain 167(psout) 168 Store 172 170 175: 174(ptr) AccessChain 167(psout) 173 Store 175 169 176:10(PS_OUTPUT) Load 167(psout) ReturnValue 176 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.global-const-init.frag.out000066400000000000000000000204111506534232700244020ustar00rootroot00000000000000hlsl.global-const-init.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'bar' ( global 4-component vector of float) 0:6 foo: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:6 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo}) 0:6 Constant: 0:6 0 (const uint) 0:8 Sequence 0:8 move second child to first child ( temp 2-element array of 2-component vector of float) 0:8 'a1' ( global 2-element array of 2-component vector of float) 0:8 Construct vec2 ( temp 2-element array of 2-component vector of float) 0:8 Constant: 0:8 1.000000 0:8 2.000000 0:8 Construct vec2 ( temp 2-component vector of float) 0:8 direct index ( temp float) 0:8 foo: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:8 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo}) 0:8 Constant: 0:8 0 (const uint) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 4.000000 0:12 Function Definition: @main( ( temp 4-component vector of float) 0:12 Function Parameters: 0:? Sequence 0:13 Branch: Return with expression 0:13 'bar' ( global 4-component vector of float) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo}) 0:? 'bar' ( global 4-component vector of float) 0:? 'a1' ( global 2-element array of 2-component vector of float) 0:? 'a2' ( const 2-element array of 2-component vector of float) 0:? 5.000000 0:? 6.000000 0:? 7.000000 0:? 8.000000 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'bar' ( global 4-component vector of float) 0:6 foo: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:6 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo}) 0:6 Constant: 0:6 0 (const uint) 0:8 Sequence 0:8 move second child to first child ( temp 2-element array of 2-component vector of float) 0:8 'a1' ( global 2-element array of 2-component vector of float) 0:8 Construct vec2 ( temp 2-element array of 2-component vector of float) 0:8 Constant: 0:8 1.000000 0:8 2.000000 0:8 Construct vec2 ( temp 2-component vector of float) 0:8 direct index ( temp float) 0:8 foo: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:8 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo}) 0:8 Constant: 0:8 0 (const uint) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 4.000000 0:12 Function Definition: @main( ( temp 4-component vector of float) 0:12 Function Parameters: 0:? Sequence 0:13 Branch: Return with expression 0:13 'bar' ( global 4-component vector of float) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo}) 0:? 'bar' ( global 4-component vector of float) 0:? 'a1' ( global 2-element array of 2-component vector of float) 0:? 'a2' ( const 2-element array of 2-component vector of float) 0:? 5.000000 0:? 6.000000 0:? 7.000000 0:? 8.000000 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // 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" 41 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "bar" Name 13 "CB" MemberName 13(CB) 0 "foo" Name 15 "" Name 26 "a1" Name 41 "@entryPointOutput" Decorate 13(CB) Block MemberDecorate 13(CB) 0 Offset 0 Decorate 15 Binding 0 Decorate 15 DescriptorSet 0 Decorate 41(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Private 7(fvec4) 12(bar): 11(ptr) Variable Private 13(CB): TypeStruct 7(fvec4) 14: TypePointer Uniform 13(CB) 15: 14(ptr) Variable Uniform 16: TypeInt 32 1 17: 16(int) Constant 0 18: TypePointer Uniform 7(fvec4) 21: TypeVector 6(float) 2 22: TypeInt 32 0 23: 22(int) Constant 2 24: TypeArray 21(fvec2) 23 25: TypePointer Private 24 26(a1): 25(ptr) Variable Private 27: 6(float) Constant 1065353216 28: 6(float) Constant 1073741824 29: 21(fvec2) ConstantComposite 27 28 30: 22(int) Constant 0 31: TypePointer Uniform 6(float) 34: 6(float) Constant 1082130432 40: TypePointer Output 7(fvec4) 41(@entryPointOutput): 40(ptr) Variable Output 43: 6(float) Constant 1084227584 44: 6(float) Constant 1086324736 45: 21(fvec2) ConstantComposite 43 44 46: 6(float) Constant 1088421888 47: 6(float) Constant 1090519040 48: 21(fvec2) ConstantComposite 46 47 49: 24 ConstantComposite 45 48 4(main): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 15 17 20: 7(fvec4) Load 19 Store 12(bar) 20 32: 31(ptr) AccessChain 15 17 30 33: 6(float) Load 32 35: 21(fvec2) CompositeConstruct 33 34 36: 24 CompositeConstruct 29 35 Store 26(a1) 36 42: 7(fvec4) FunctionCall 9(@main() Store 41(@entryPointOutput) 42 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 37: 7(fvec4) Load 12(bar) ReturnValue 37 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.groupid.comp.out000066400000000000000000000143451506534232700225560ustar00rootroot00000000000000hlsl.groupid.comp Shader version: 500 local_size = (8, 8, 1) 0:? Sequence 0:7 Function Definition: @main(vu2; ( temp void) 0:7 Function Parameters: 0:7 'vGroupId' ( in 2-component vector of uint) 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'storeTemp' ( temp 4-component vector of float) 0:8 Constant: 0:8 1.000000 0:8 0.000000 0:8 0.000000 0:8 1.000000 0:8 imageStore ( temp void) 0:8 'OutputTexture' (layout( rgba32f) uniform image2D) 0:8 vector swizzle ( temp 2-component vector of uint) 0:8 'vGroupId' ( in 2-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 'storeTemp' ( temp 4-component vector of float) 0:8 'storeTemp' ( temp 4-component vector of float) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 2-component vector of uint) 0:? 'vGroupId' ( temp 2-component vector of uint) 0:? Construct uvec2 ( temp 2-component vector of uint) 0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID) 0:7 Function Call: @main(vu2; ( temp void) 0:? 'vGroupId' ( temp 2-component vector of uint) 0:? Linker Objects 0:? 'OutputTexture' (layout( rgba32f) uniform image2D) 0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID) Linked compute stage: Shader version: 500 local_size = (8, 8, 1) 0:? Sequence 0:7 Function Definition: @main(vu2; ( temp void) 0:7 Function Parameters: 0:7 'vGroupId' ( in 2-component vector of uint) 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'storeTemp' ( temp 4-component vector of float) 0:8 Constant: 0:8 1.000000 0:8 0.000000 0:8 0.000000 0:8 1.000000 0:8 imageStore ( temp void) 0:8 'OutputTexture' (layout( rgba32f) uniform image2D) 0:8 vector swizzle ( temp 2-component vector of uint) 0:8 'vGroupId' ( in 2-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 'storeTemp' ( temp 4-component vector of float) 0:8 'storeTemp' ( temp 4-component vector of float) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 2-component vector of uint) 0:? 'vGroupId' ( temp 2-component vector of uint) 0:? Construct uvec2 ( temp 2-component vector of uint) 0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID) 0:7 Function Call: @main(vu2; ( temp void) 0:? 'vGroupId' ( temp 2-component vector of uint) 0:? Linker Objects 0:? 'OutputTexture' (layout( rgba32f) uniform image2D) 0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 29 ExecutionMode 4 LocalSize 8 8 1 Source HLSL 500 Name 4 "main" Name 11 "@main(vu2;" Name 10 "vGroupId" Name 16 "storeTemp" Name 22 "OutputTexture" Name 26 "vGroupId" Name 29 "vGroupId" Name 34 "param" Decorate 22(OutputTexture) Binding 0 Decorate 22(OutputTexture) DescriptorSet 0 Decorate 29(vGroupId) BuiltIn WorkgroupId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 9: TypeFunction 2 8(ptr) 13: TypeFloat 32 14: TypeVector 13(float) 4 15: TypePointer Function 14(fvec4) 17: 13(float) Constant 1065353216 18: 13(float) Constant 0 19: 14(fvec4) ConstantComposite 17 18 18 17 20: TypeImage 13(float) 2D nonsampled format:Rgba32f 21: TypePointer UniformConstant 20 22(OutputTexture): 21(ptr) Variable UniformConstant 27: TypeVector 6(int) 3 28: TypePointer Input 27(ivec3) 29(vGroupId): 28(ptr) Variable Input 4(main): 2 Function None 3 5: Label 26(vGroupId): 8(ptr) Variable Function 34(param): 8(ptr) Variable Function 30: 27(ivec3) Load 29(vGroupId) 31: 6(int) CompositeExtract 30 0 32: 6(int) CompositeExtract 30 1 33: 7(ivec2) CompositeConstruct 31 32 Store 26(vGroupId) 33 35: 7(ivec2) Load 26(vGroupId) Store 34(param) 35 36: 2 FunctionCall 11(@main(vu2;) 34(param) Return FunctionEnd 11(@main(vu2;): 2 Function None 9 10(vGroupId): 8(ptr) FunctionParameter 12: Label 16(storeTemp): 15(ptr) Variable Function Store 16(storeTemp) 19 23: 20 Load 22(OutputTexture) 24: 7(ivec2) Load 10(vGroupId) 25: 14(fvec4) Load 16(storeTemp) ImageWrite 23 24 25 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.gs-hs-mix.tesc.out000066400000000000000000002514721506534232700227250ustar00rootroot00000000000000hlsl.gs-hs-mix.tesc Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = ccw 0:? Sequence 0:31 Function Definition: HSPatchConstant(struct-HSInput-vf3-vf31[3]; ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:31 Function Parameters: 0:31 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? Sequence 0:32 Sequence 0:32 move second child to first child ( temp 3-component vector of float) 0:32 'roundedEdgeTessFactor' ( temp 3-component vector of float) 0:32 tess_factor: direct index for structure (layout( row_major std140) uniform 3-component vector of float) 0:32 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:32 Constant: 0:32 6 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'roundedInsideTessFactor' ( temp float) 0:33 Constant: 0:33 3.000000 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'insideTessFactor' ( temp float) 0:34 Constant: 0:34 1.000000 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:39 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( temp float) 0:39 'roundedEdgeTessFactor' ( temp 3-component vector of float) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp float) 0:40 direct index ( temp float) 0:40 EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:40 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 direct index ( temp float) 0:40 'roundedEdgeTessFactor' ( temp 3-component vector of float) 0:40 Constant: 0:40 1 (const int) 0:41 move second child to first child ( temp float) 0:41 direct index ( temp float) 0:41 EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:41 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 direct index ( temp float) 0:41 'roundedEdgeTessFactor' ( temp 3-component vector of float) 0:41 Constant: 0:41 2 (const int) 0:42 move second child to first child ( temp float) 0:42 InsideTessFactor: direct index for structure ( temp float) 0:42 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:42 Constant: 0:42 1 (const int) 0:42 'roundedInsideTessFactor' ( temp float) 0:45 move second child to first child ( temp 3-component vector of float) 0:45 direct index ( temp 3-component vector of float) 0:45 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:45 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 NormalWS: direct index for structure ( temp 3-component vector of float) 0:45 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:45 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:46 move second child to first child ( temp 3-component vector of float) 0:46 direct index ( temp 3-component vector of float) 0:46 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:46 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 NormalWS: direct index for structure ( temp 3-component vector of float) 0:46 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:46 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 direct index ( temp 3-component vector of float) 0:47 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:47 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 NormalWS: direct index for structure ( temp 3-component vector of float) 0:47 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:47 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 1 (const int) 0:49 Branch: Return with expression 0:49 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:61 Function Definition: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS}) 0:61 Function Parameters: 0:61 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 'id' ( in uint) 0:? Sequence 0:63 move second child to first child ( temp 3-component vector of float) 0:63 PositionWS: direct index for structure ( temp 3-component vector of float) 0:63 'output' ( temp structure{ temp 3-component vector of float PositionWS}) 0:63 Constant: 0:63 0 (const int) 0:63 PositionWS: direct index for structure ( temp 3-component vector of float) 0:63 indirect index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:63 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:63 'id' ( in uint) 0:63 Constant: 0:63 0 (const int) 0:64 Branch: Return with expression 0:64 'output' ( temp structure{ temp 3-component vector of float PositionWS}) 0:61 Function Definition: HSMain( ( temp void) 0:61 Function Parameters: 0:? Sequence 0:61 Sequence 0:61 move second child to first child ( temp 3-component vector of float) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 0 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 NormalWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 direct index (layout( location=1) in 3-component vector of float) 0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 0 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 1 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 NormalWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 direct index (layout( location=1) in 3-component vector of float) 0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 1 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 2 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 NormalWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 direct index (layout( location=1) in 3-component vector of float) 0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 2 (const int) 0:61 move second child to first child ( temp uint) 0:? 'id' ( temp uint) 0:? 'id' ( in uint InvocationID) 0:61 Sequence 0:61 move second child to first child ( temp 3-component vector of float) 0:61 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.PositionWS' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'id' ( in uint InvocationID) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float) 0:61 Function Call: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'id' ( temp uint) 0:61 Constant: 0:61 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'id' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Function Call: HSPatchConstant(struct-HSInput-vf3-vf31[3]; ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? InsideTessFactor: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[0]' (layout( location=1) patch out 3-component vector of float) 0:? direct index ( temp 3-component vector of float) 0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 2 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[1]' (layout( location=2) patch out 3-component vector of float) 0:? direct index ( temp 3-component vector of float) 0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 2 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float) 0:? direct index ( temp 3-component vector of float) 0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 2 (const int) 0:? Constant: 0:? 2 (const int) 0:84 Function Definition: GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41; ( temp void) 0:84 Function Parameters: 0:84 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:84 'output' ( out structure{ temp 4-component vector of float PositionCS}) 0:? Sequence 0:86 Sequence 0:86 move second child to first child ( temp 3-component vector of float) 0:86 'P0' ( temp 3-component vector of float) 0:86 vector swizzle ( temp 3-component vector of float) 0:86 PositionWS: direct index for structure ( temp 3-component vector of float) 0:86 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:86 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:87 Sequence 0:87 move second child to first child ( temp 3-component vector of float) 0:87 'P1' ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 PositionWS: direct index for structure ( temp 3-component vector of float) 0:87 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:87 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:88 Sequence 0:88 move second child to first child ( temp 3-component vector of float) 0:88 'P2' ( temp 3-component vector of float) 0:88 vector swizzle ( temp 3-component vector of float) 0:88 PositionWS: direct index for structure ( temp 3-component vector of float) 0:88 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:88 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 2 (const int) 0:92 add second child into first child ( temp float) 0:92 direct index ( temp float) 0:92 'P0' ( temp 3-component vector of float) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.001000 0:93 add second child into first child ( temp float) 0:93 direct index ( temp float) 0:93 'P1' ( temp 3-component vector of float) 0:93 Constant: 0:93 2 (const int) 0:93 Constant: 0:93 0.001000 0:94 add second child into first child ( temp float) 0:94 direct index ( temp float) 0:94 'P2' ( temp 3-component vector of float) 0:94 Constant: 0:94 2 (const int) 0:94 Constant: 0:94 0.001000 0:95 Sequence 0:95 move second child to first child ( temp 4-component vector of float) 0:95 'Q0' ( temp 4-component vector of float) 0:95 vector-times-matrix ( temp 4-component vector of float) 0:95 Construct vec4 ( temp 4-component vector of float) 0:95 'P0' ( temp 3-component vector of float) 0:95 Constant: 0:95 1.000000 0:95 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:95 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:95 Constant: 0:95 1 (const uint) 0:96 Sequence 0:96 move second child to first child ( temp 4-component vector of float) 0:96 'Q1' ( temp 4-component vector of float) 0:96 vector-times-matrix ( temp 4-component vector of float) 0:96 Construct vec4 ( temp 4-component vector of float) 0:96 'P1' ( temp 3-component vector of float) 0:96 Constant: 0:96 1.000000 0:96 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:96 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:96 Constant: 0:96 1 (const uint) 0:97 Sequence 0:97 move second child to first child ( temp 4-component vector of float) 0:97 'Q2' ( temp 4-component vector of float) 0:97 vector-times-matrix ( temp 4-component vector of float) 0:97 Construct vec4 ( temp 4-component vector of float) 0:97 'P2' ( temp 3-component vector of float) 0:97 Constant: 0:97 1.000000 0:97 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:97 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:97 Constant: 0:97 1 (const uint) 0:100 move second child to first child ( temp 4-component vector of float) 0:100 PositionCS: direct index for structure ( temp 4-component vector of float) 0:100 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:100 Constant: 0:100 0 (const int) 0:100 'Q0' ( temp 4-component vector of float) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp 4-component vector of float) 0:102 PositionCS: direct index for structure ( temp 4-component vector of float) 0:102 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:102 Constant: 0:102 0 (const int) 0:102 'Q1' ( temp 4-component vector of float) 0:103 Constant: 0:103 0.000000 0:104 Constant: 0:104 0.000000 0:107 move second child to first child ( temp 4-component vector of float) 0:107 PositionCS: direct index for structure ( temp 4-component vector of float) 0:107 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:107 Constant: 0:107 0 (const int) 0:107 'Q1' ( temp 4-component vector of float) 0:108 Constant: 0:108 0.000000 0:109 move second child to first child ( temp 4-component vector of float) 0:109 PositionCS: direct index for structure ( temp 4-component vector of float) 0:109 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:109 Constant: 0:109 0 (const int) 0:109 'Q2' ( temp 4-component vector of float) 0:110 Constant: 0:110 0.000000 0:111 Constant: 0:111 0.000000 0:114 move second child to first child ( temp 4-component vector of float) 0:114 PositionCS: direct index for structure ( temp 4-component vector of float) 0:114 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:114 Constant: 0:114 0 (const int) 0:114 'Q2' ( temp 4-component vector of float) 0:115 Constant: 0:115 0.000000 0:116 move second child to first child ( temp 4-component vector of float) 0:116 PositionCS: direct index for structure ( temp 4-component vector of float) 0:116 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:116 Constant: 0:116 0 (const int) 0:116 'Q0' ( temp 4-component vector of float) 0:117 Constant: 0:117 0.000000 0:118 Constant: 0:118 0.000000 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:? '@entryPointOutput.PositionWS' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float) 0:? 'id' ( in uint InvocationID) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.NormalWS[0]' (layout( location=1) patch out 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[1]' (layout( location=2) patch out 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float) Linked tessellation control stage: Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = ccw 0:? Sequence 0:31 Function Definition: HSPatchConstant(struct-HSInput-vf3-vf31[3]; ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:31 Function Parameters: 0:31 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? Sequence 0:32 Sequence 0:32 move second child to first child ( temp 3-component vector of float) 0:32 'roundedEdgeTessFactor' ( temp 3-component vector of float) 0:32 tess_factor: direct index for structure (layout( row_major std140) uniform 3-component vector of float) 0:32 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:32 Constant: 0:32 6 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'roundedInsideTessFactor' ( temp float) 0:33 Constant: 0:33 3.000000 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'insideTessFactor' ( temp float) 0:34 Constant: 0:34 1.000000 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:39 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( temp float) 0:39 'roundedEdgeTessFactor' ( temp 3-component vector of float) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp float) 0:40 direct index ( temp float) 0:40 EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:40 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 direct index ( temp float) 0:40 'roundedEdgeTessFactor' ( temp 3-component vector of float) 0:40 Constant: 0:40 1 (const int) 0:41 move second child to first child ( temp float) 0:41 direct index ( temp float) 0:41 EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:41 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 2 (const int) 0:41 direct index ( temp float) 0:41 'roundedEdgeTessFactor' ( temp 3-component vector of float) 0:41 Constant: 0:41 2 (const int) 0:42 move second child to first child ( temp float) 0:42 InsideTessFactor: direct index for structure ( temp float) 0:42 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:42 Constant: 0:42 1 (const int) 0:42 'roundedInsideTessFactor' ( temp float) 0:45 move second child to first child ( temp 3-component vector of float) 0:45 direct index ( temp 3-component vector of float) 0:45 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:45 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 NormalWS: direct index for structure ( temp 3-component vector of float) 0:45 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:45 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const int) 0:46 move second child to first child ( temp 3-component vector of float) 0:46 direct index ( temp 3-component vector of float) 0:46 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:46 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:46 Constant: 0:46 2 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 NormalWS: direct index for structure ( temp 3-component vector of float) 0:46 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:46 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 direct index ( temp 3-component vector of float) 0:47 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:47 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 NormalWS: direct index for structure ( temp 3-component vector of float) 0:47 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:47 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 1 (const int) 0:49 Branch: Return with expression 0:49 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:61 Function Definition: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS}) 0:61 Function Parameters: 0:61 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 'id' ( in uint) 0:? Sequence 0:63 move second child to first child ( temp 3-component vector of float) 0:63 PositionWS: direct index for structure ( temp 3-component vector of float) 0:63 'output' ( temp structure{ temp 3-component vector of float PositionWS}) 0:63 Constant: 0:63 0 (const int) 0:63 PositionWS: direct index for structure ( temp 3-component vector of float) 0:63 indirect index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:63 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:63 'id' ( in uint) 0:63 Constant: 0:63 0 (const int) 0:64 Branch: Return with expression 0:64 'output' ( temp structure{ temp 3-component vector of float PositionWS}) 0:61 Function Definition: HSMain( ( temp void) 0:61 Function Parameters: 0:? Sequence 0:61 Sequence 0:61 move second child to first child ( temp 3-component vector of float) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 0 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 NormalWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 direct index (layout( location=1) in 3-component vector of float) 0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 0 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 1 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 NormalWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 direct index (layout( location=1) in 3-component vector of float) 0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 1 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 0 (const int) 0:61 direct index (layout( location=0) in 3-component vector of float) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 2 (const int) 0:61 move second child to first child ( temp 3-component vector of float) 0:61 NormalWS: direct index for structure ( temp 3-component vector of float) 0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 direct index (layout( location=1) in 3-component vector of float) 0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float) 0:61 Constant: 0:61 2 (const int) 0:61 move second child to first child ( temp uint) 0:? 'id' ( temp uint) 0:? 'id' ( in uint InvocationID) 0:61 Sequence 0:61 move second child to first child ( temp 3-component vector of float) 0:61 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.PositionWS' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'id' ( in uint InvocationID) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float) 0:61 Function Call: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'id' ( temp uint) 0:61 Constant: 0:61 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'id' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Function Call: HSPatchConstant(struct-HSInput-vf3-vf31[3]; ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? InsideTessFactor: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[0]' (layout( location=1) patch out 3-component vector of float) 0:? direct index ( temp 3-component vector of float) 0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 2 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[1]' (layout( location=2) patch out 3-component vector of float) 0:? direct index ( temp 3-component vector of float) 0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 2 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float) 0:? direct index ( temp 3-component vector of float) 0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? Constant: 0:? 2 (const int) 0:? Constant: 0:? 2 (const int) 0:84 Function Definition: GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41; ( temp void) 0:84 Function Parameters: 0:84 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:84 'output' ( out structure{ temp 4-component vector of float PositionCS}) 0:? Sequence 0:86 Sequence 0:86 move second child to first child ( temp 3-component vector of float) 0:86 'P0' ( temp 3-component vector of float) 0:86 vector swizzle ( temp 3-component vector of float) 0:86 PositionWS: direct index for structure ( temp 3-component vector of float) 0:86 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:86 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 2 (const int) 0:87 Sequence 0:87 move second child to first child ( temp 3-component vector of float) 0:87 'P1' ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 PositionWS: direct index for structure ( temp 3-component vector of float) 0:87 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:87 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:88 Sequence 0:88 move second child to first child ( temp 3-component vector of float) 0:88 'P2' ( temp 3-component vector of float) 0:88 vector swizzle ( temp 3-component vector of float) 0:88 PositionWS: direct index for structure ( temp 3-component vector of float) 0:88 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:88 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 2 (const int) 0:92 add second child into first child ( temp float) 0:92 direct index ( temp float) 0:92 'P0' ( temp 3-component vector of float) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.001000 0:93 add second child into first child ( temp float) 0:93 direct index ( temp float) 0:93 'P1' ( temp 3-component vector of float) 0:93 Constant: 0:93 2 (const int) 0:93 Constant: 0:93 0.001000 0:94 add second child into first child ( temp float) 0:94 direct index ( temp float) 0:94 'P2' ( temp 3-component vector of float) 0:94 Constant: 0:94 2 (const int) 0:94 Constant: 0:94 0.001000 0:95 Sequence 0:95 move second child to first child ( temp 4-component vector of float) 0:95 'Q0' ( temp 4-component vector of float) 0:95 vector-times-matrix ( temp 4-component vector of float) 0:95 Construct vec4 ( temp 4-component vector of float) 0:95 'P0' ( temp 3-component vector of float) 0:95 Constant: 0:95 1.000000 0:95 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:95 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:95 Constant: 0:95 1 (const uint) 0:96 Sequence 0:96 move second child to first child ( temp 4-component vector of float) 0:96 'Q1' ( temp 4-component vector of float) 0:96 vector-times-matrix ( temp 4-component vector of float) 0:96 Construct vec4 ( temp 4-component vector of float) 0:96 'P1' ( temp 3-component vector of float) 0:96 Constant: 0:96 1.000000 0:96 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:96 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:96 Constant: 0:96 1 (const uint) 0:97 Sequence 0:97 move second child to first child ( temp 4-component vector of float) 0:97 'Q2' ( temp 4-component vector of float) 0:97 vector-times-matrix ( temp 4-component vector of float) 0:97 Construct vec4 ( temp 4-component vector of float) 0:97 'P2' ( temp 3-component vector of float) 0:97 Constant: 0:97 1.000000 0:97 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:97 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:97 Constant: 0:97 1 (const uint) 0:100 move second child to first child ( temp 4-component vector of float) 0:100 PositionCS: direct index for structure ( temp 4-component vector of float) 0:100 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:100 Constant: 0:100 0 (const int) 0:100 'Q0' ( temp 4-component vector of float) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp 4-component vector of float) 0:102 PositionCS: direct index for structure ( temp 4-component vector of float) 0:102 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:102 Constant: 0:102 0 (const int) 0:102 'Q1' ( temp 4-component vector of float) 0:103 Constant: 0:103 0.000000 0:104 Constant: 0:104 0.000000 0:107 move second child to first child ( temp 4-component vector of float) 0:107 PositionCS: direct index for structure ( temp 4-component vector of float) 0:107 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:107 Constant: 0:107 0 (const int) 0:107 'Q1' ( temp 4-component vector of float) 0:108 Constant: 0:108 0.000000 0:109 move second child to first child ( temp 4-component vector of float) 0:109 PositionCS: direct index for structure ( temp 4-component vector of float) 0:109 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:109 Constant: 0:109 0 (const int) 0:109 'Q2' ( temp 4-component vector of float) 0:110 Constant: 0:110 0.000000 0:111 Constant: 0:111 0.000000 0:114 move second child to first child ( temp 4-component vector of float) 0:114 PositionCS: direct index for structure ( temp 4-component vector of float) 0:114 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:114 Constant: 0:114 0 (const int) 0:114 'Q2' ( temp 4-component vector of float) 0:115 Constant: 0:115 0.000000 0:116 move second child to first child ( temp 4-component vector of float) 0:116 PositionCS: direct index for structure ( temp 4-component vector of float) 0:116 'vertex' ( temp structure{ temp 4-component vector of float PositionCS}) 0:116 Constant: 0:116 0 (const int) 0:116 'Q0' ( temp 4-component vector of float) 0:117 Constant: 0:117 0.000000 0:118 Constant: 0:118 0.000000 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:? '@entryPointOutput.PositionWS' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float) 0:? 'id' ( in uint InvocationID) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.NormalWS[0]' (layout( location=1) patch out 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[1]' (layout( location=2) patch out 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 236 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "HSMain" 97 102 120 123 145 158 162 165 168 ExecutionMode 4 OutputVertices 3 ExecutionMode 4 Triangles ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 VertexOrderCcw Source HLSL 500 Name 4 "HSMain" Name 8 "HSInput" MemberName 8(HSInput) 0 "PositionWS" MemberName 8(HSInput) 1 "NormalWS" Name 15 "HSTrianglePatchConstant" MemberName 15(HSTrianglePatchConstant) 0 "EdgeTessFactor" MemberName 15(HSTrianglePatchConstant) 1 "InsideTessFactor" MemberName 15(HSTrianglePatchConstant) 2 "NormalWS" Name 18 "HSPatchConstant(struct-HSInput-vf3-vf31[3];" Name 17 "patch" Name 21 "HSOutput" MemberName 21(HSOutput) 0 "PositionWS" Name 25 "@HSMain(struct-HSInput-vf3-vf31[3];u1;" Name 23 "patch" Name 24 "id" Name 27 "GSVertexInput" MemberName 27(GSVertexInput) 0 "PositionWS" MemberName 27(GSVertexInput) 1 "NormalWS" Name 31 "GSVertexOutput" MemberName 31(GSVertexOutput) 0 "PositionCS" Name 36 "GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41;" Name 34 "input" Name 35 "output" Name 39 "roundedEdgeTessFactor" Name 42 "UniformBlock0" MemberName 42(UniformBlock0) 0 "model_view_matrix" MemberName 42(UniformBlock0) 1 "proj_matrix" MemberName 42(UniformBlock0) 2 "model_view_proj_matrix" MemberName 42(UniformBlock0) 3 "normal_matrix" MemberName 42(UniformBlock0) 4 "color" MemberName 42(UniformBlock0) 5 "view_dir" MemberName 42(UniformBlock0) 6 "tess_factor" Name 44 "" Name 51 "roundedInsideTessFactor" Name 53 "insideTessFactor" Name 56 "result" Name 87 "output" Name 95 "patch" Name 97 "patch.PositionWS" Name 102 "patch.NormalWS" Name 118 "id" Name 120 "id" Name 123 "@entryPointOutput.PositionWS" Name 125 "param" Name 127 "param" Name 139 "@patchConstantResult" Name 140 "param" Name 145 "@patchConstantOutput.EdgeTessFactor" Name 158 "@patchConstantOutput.InsideTessFactor" Name 162 "@patchConstantOutput.NormalWS[0]" Name 165 "@patchConstantOutput.NormalWS[1]" Name 168 "@patchConstantOutput.NormalWS[2]" Name 171 "P0" Name 174 "P1" Name 177 "P2" Name 194 "Q0" Name 204 "Q1" Name 213 "Q2" Name 222 "vertex" Decorate 42(UniformBlock0) Block MemberDecorate 42(UniformBlock0) 0 RowMajor MemberDecorate 42(UniformBlock0) 0 MatrixStride 16 MemberDecorate 42(UniformBlock0) 0 Offset 0 MemberDecorate 42(UniformBlock0) 1 RowMajor MemberDecorate 42(UniformBlock0) 1 MatrixStride 16 MemberDecorate 42(UniformBlock0) 1 Offset 64 MemberDecorate 42(UniformBlock0) 2 RowMajor MemberDecorate 42(UniformBlock0) 2 MatrixStride 16 MemberDecorate 42(UniformBlock0) 2 Offset 128 MemberDecorate 42(UniformBlock0) 3 RowMajor MemberDecorate 42(UniformBlock0) 3 MatrixStride 16 MemberDecorate 42(UniformBlock0) 3 Offset 192 MemberDecorate 42(UniformBlock0) 4 Offset 240 MemberDecorate 42(UniformBlock0) 5 Offset 256 MemberDecorate 42(UniformBlock0) 6 Offset 272 Decorate 44 Binding 0 Decorate 44 DescriptorSet 0 Decorate 97(patch.PositionWS) Location 0 Decorate 102(patch.NormalWS) Location 1 Decorate 120(id) BuiltIn InvocationId Decorate 123(@entryPointOutput.PositionWS) Location 0 Decorate 145(@patchConstantOutput.EdgeTessFactor) BuiltIn TessLevelOuter Decorate 145(@patchConstantOutput.EdgeTessFactor) Patch Decorate 158(@patchConstantOutput.InsideTessFactor) BuiltIn TessLevelInner Decorate 158(@patchConstantOutput.InsideTessFactor) Patch Decorate 162(@patchConstantOutput.NormalWS[0]) Patch Decorate 162(@patchConstantOutput.NormalWS[0]) Location 1 Decorate 165(@patchConstantOutput.NormalWS[1]) Patch Decorate 165(@patchConstantOutput.NormalWS[1]) Location 2 Decorate 168(@patchConstantOutput.NormalWS[2]) Patch Decorate 168(@patchConstantOutput.NormalWS[2]) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(HSInput): TypeStruct 7(fvec3) 7(fvec3) 9: TypeInt 32 0 10: 9(int) Constant 3 11: TypeArray 8(HSInput) 10 12: TypePointer Function 11 13: TypeArray 6(float) 10 14: TypeArray 7(fvec3) 10 15(HSTrianglePatchConstant): TypeStruct 13 6(float) 14 16: TypeFunction 15(HSTrianglePatchConstant) 12(ptr) 20: TypePointer Function 9(int) 21(HSOutput): TypeStruct 7(fvec3) 22: TypeFunction 21(HSOutput) 12(ptr) 20(ptr) 27(GSVertexInput): TypeStruct 7(fvec3) 7(fvec3) 28: TypeArray 27(GSVertexInput) 10 29: TypePointer Function 28 30: TypeVector 6(float) 4 31(GSVertexOutput): TypeStruct 30(fvec4) 32: TypePointer Function 31(GSVertexOutput) 33: TypeFunction 2 29(ptr) 32(ptr) 38: TypePointer Function 7(fvec3) 40: TypeMatrix 30(fvec4) 4 41: TypeMatrix 7(fvec3) 3 42(UniformBlock0): TypeStruct 40 40 40 41 7(fvec3) 7(fvec3) 7(fvec3) 43: TypePointer Uniform 42(UniformBlock0) 44: 43(ptr) Variable Uniform 45: TypeInt 32 1 46: 45(int) Constant 6 47: TypePointer Uniform 7(fvec3) 50: TypePointer Function 6(float) 52: 6(float) Constant 1077936128 54: 6(float) Constant 1065353216 55: TypePointer Function 15(HSTrianglePatchConstant) 57: 45(int) Constant 0 58: 9(int) Constant 0 62: 45(int) Constant 1 63: 9(int) Constant 1 67: 45(int) Constant 2 68: 9(int) Constant 2 86: TypePointer Function 21(HSOutput) 96: TypePointer Input 14 97(patch.PositionWS): 96(ptr) Variable Input 98: TypePointer Input 7(fvec3) 102(patch.NormalWS): 96(ptr) Variable Input 119: TypePointer Input 9(int) 120(id): 119(ptr) Variable Input 122: TypePointer Output 14 123(@entryPointOutput.PositionWS): 122(ptr) Variable Output 131: TypePointer Output 7(fvec3) 133: 9(int) Constant 4 135: TypeBool 143: TypeArray 6(float) 133 144: TypePointer Output 143 145(@patchConstantOutput.EdgeTessFactor): 144(ptr) Variable Output 148: TypePointer Output 6(float) 156: TypeArray 6(float) 68 157: TypePointer Output 156 158(@patchConstantOutput.InsideTessFactor): 157(ptr) Variable Output 162(@patchConstantOutput.NormalWS[0]): 131(ptr) Variable Output 165(@patchConstantOutput.NormalWS[1]): 131(ptr) Variable Output 168(@patchConstantOutput.NormalWS[2]): 131(ptr) Variable Output 180: 6(float) Constant 981668463 193: TypePointer Function 30(fvec4) 200: TypePointer Uniform 40 225: 6(float) Constant 0 4(HSMain): 2 Function None 3 5: Label 95(patch): 12(ptr) Variable Function 118(id): 20(ptr) Variable Function 125(param): 12(ptr) Variable Function 127(param): 20(ptr) Variable Function 139(@patchConstantResult): 55(ptr) Variable Function 140(param): 12(ptr) Variable Function 99: 98(ptr) AccessChain 97(patch.PositionWS) 57 100: 7(fvec3) Load 99 101: 38(ptr) AccessChain 95(patch) 57 57 Store 101 100 103: 98(ptr) AccessChain 102(patch.NormalWS) 57 104: 7(fvec3) Load 103 105: 38(ptr) AccessChain 95(patch) 57 62 Store 105 104 106: 98(ptr) AccessChain 97(patch.PositionWS) 62 107: 7(fvec3) Load 106 108: 38(ptr) AccessChain 95(patch) 62 57 Store 108 107 109: 98(ptr) AccessChain 102(patch.NormalWS) 62 110: 7(fvec3) Load 109 111: 38(ptr) AccessChain 95(patch) 62 62 Store 111 110 112: 98(ptr) AccessChain 97(patch.PositionWS) 67 113: 7(fvec3) Load 112 114: 38(ptr) AccessChain 95(patch) 67 57 Store 114 113 115: 98(ptr) AccessChain 102(patch.NormalWS) 67 116: 7(fvec3) Load 115 117: 38(ptr) AccessChain 95(patch) 67 62 Store 117 116 121: 9(int) Load 120(id) Store 118(id) 121 124: 9(int) Load 120(id) 126: 11 Load 95(patch) Store 125(param) 126 128: 9(int) Load 118(id) Store 127(param) 128 129:21(HSOutput) FunctionCall 25(@HSMain(struct-HSInput-vf3-vf31[3];u1;) 125(param) 127(param) 130: 7(fvec3) CompositeExtract 129 0 132: 131(ptr) AccessChain 123(@entryPointOutput.PositionWS) 124 Store 132 130 ControlBarrier 68 133 58 134: 9(int) Load 120(id) 136: 135(bool) IEqual 134 57 SelectionMerge 138 None BranchConditional 136 137 138 137: Label 141: 11 Load 95(patch) Store 140(param) 141 142:15(HSTrianglePatchConstant) FunctionCall 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];) 140(param) Store 139(@patchConstantResult) 142 146: 50(ptr) AccessChain 139(@patchConstantResult) 57 57 147: 6(float) Load 146 149: 148(ptr) AccessChain 145(@patchConstantOutput.EdgeTessFactor) 57 Store 149 147 150: 50(ptr) AccessChain 139(@patchConstantResult) 57 62 151: 6(float) Load 150 152: 148(ptr) AccessChain 145(@patchConstantOutput.EdgeTessFactor) 62 Store 152 151 153: 50(ptr) AccessChain 139(@patchConstantResult) 57 67 154: 6(float) Load 153 155: 148(ptr) AccessChain 145(@patchConstantOutput.EdgeTessFactor) 67 Store 155 154 159: 50(ptr) AccessChain 139(@patchConstantResult) 62 160: 6(float) Load 159 161: 148(ptr) AccessChain 158(@patchConstantOutput.InsideTessFactor) 57 Store 161 160 163: 38(ptr) AccessChain 139(@patchConstantResult) 67 57 164: 7(fvec3) Load 163 Store 162(@patchConstantOutput.NormalWS[0]) 164 166: 38(ptr) AccessChain 139(@patchConstantResult) 67 62 167: 7(fvec3) Load 166 Store 165(@patchConstantOutput.NormalWS[1]) 167 169: 38(ptr) AccessChain 139(@patchConstantResult) 67 67 170: 7(fvec3) Load 169 Store 168(@patchConstantOutput.NormalWS[2]) 170 Branch 138 138: Label Return FunctionEnd 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];):15(HSTrianglePatchConstant) Function None 16 17(patch): 12(ptr) FunctionParameter 19: Label 39(roundedEdgeTessFactor): 38(ptr) Variable Function 51(roundedInsideTessFactor): 50(ptr) Variable Function 53(insideTessFactor): 50(ptr) Variable Function 56(result): 55(ptr) Variable Function 48: 47(ptr) AccessChain 44 46 49: 7(fvec3) Load 48 Store 39(roundedEdgeTessFactor) 49 Store 51(roundedInsideTessFactor) 52 Store 53(insideTessFactor) 54 59: 50(ptr) AccessChain 39(roundedEdgeTessFactor) 58 60: 6(float) Load 59 61: 50(ptr) AccessChain 56(result) 57 57 Store 61 60 64: 50(ptr) AccessChain 39(roundedEdgeTessFactor) 63 65: 6(float) Load 64 66: 50(ptr) AccessChain 56(result) 57 62 Store 66 65 69: 50(ptr) AccessChain 39(roundedEdgeTessFactor) 68 70: 6(float) Load 69 71: 50(ptr) AccessChain 56(result) 57 67 Store 71 70 72: 6(float) Load 51(roundedInsideTessFactor) 73: 50(ptr) AccessChain 56(result) 62 Store 73 72 74: 38(ptr) AccessChain 17(patch) 57 62 75: 7(fvec3) Load 74 76: 38(ptr) AccessChain 56(result) 67 57 Store 76 75 77: 38(ptr) AccessChain 17(patch) 62 62 78: 7(fvec3) Load 77 79: 38(ptr) AccessChain 56(result) 67 62 Store 79 78 80: 38(ptr) AccessChain 17(patch) 67 62 81: 7(fvec3) Load 80 82: 38(ptr) AccessChain 56(result) 67 67 Store 82 81 83:15(HSTrianglePatchConstant) Load 56(result) ReturnValue 83 FunctionEnd 25(@HSMain(struct-HSInput-vf3-vf31[3];u1;):21(HSOutput) Function None 22 23(patch): 12(ptr) FunctionParameter 24(id): 20(ptr) FunctionParameter 26: Label 87(output): 86(ptr) Variable Function 88: 9(int) Load 24(id) 89: 38(ptr) AccessChain 23(patch) 88 57 90: 7(fvec3) Load 89 91: 38(ptr) AccessChain 87(output) 57 Store 91 90 92:21(HSOutput) Load 87(output) ReturnValue 92 FunctionEnd 36(GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41;): 2 Function None 33 34(input): 29(ptr) FunctionParameter 35(output): 32(ptr) FunctionParameter 37: Label 171(P0): 38(ptr) Variable Function 174(P1): 38(ptr) Variable Function 177(P2): 38(ptr) Variable Function 194(Q0): 193(ptr) Variable Function 204(Q1): 193(ptr) Variable Function 213(Q2): 193(ptr) Variable Function 222(vertex): 32(ptr) Variable Function 172: 38(ptr) AccessChain 34(input) 57 57 173: 7(fvec3) Load 172 Store 171(P0) 173 175: 38(ptr) AccessChain 34(input) 62 57 176: 7(fvec3) Load 175 Store 174(P1) 176 178: 38(ptr) AccessChain 34(input) 67 57 179: 7(fvec3) Load 178 Store 177(P2) 179 181: 50(ptr) AccessChain 171(P0) 68 182: 6(float) Load 181 183: 6(float) FAdd 182 180 184: 50(ptr) AccessChain 171(P0) 68 Store 184 183 185: 50(ptr) AccessChain 174(P1) 68 186: 6(float) Load 185 187: 6(float) FAdd 186 180 188: 50(ptr) AccessChain 174(P1) 68 Store 188 187 189: 50(ptr) AccessChain 177(P2) 68 190: 6(float) Load 189 191: 6(float) FAdd 190 180 192: 50(ptr) AccessChain 177(P2) 68 Store 192 191 195: 7(fvec3) Load 171(P0) 196: 6(float) CompositeExtract 195 0 197: 6(float) CompositeExtract 195 1 198: 6(float) CompositeExtract 195 2 199: 30(fvec4) CompositeConstruct 196 197 198 54 201: 200(ptr) AccessChain 44 62 202: 40 Load 201 203: 30(fvec4) VectorTimesMatrix 199 202 Store 194(Q0) 203 205: 7(fvec3) Load 174(P1) 206: 6(float) CompositeExtract 205 0 207: 6(float) CompositeExtract 205 1 208: 6(float) CompositeExtract 205 2 209: 30(fvec4) CompositeConstruct 206 207 208 54 210: 200(ptr) AccessChain 44 62 211: 40 Load 210 212: 30(fvec4) VectorTimesMatrix 209 211 Store 204(Q1) 212 214: 7(fvec3) Load 177(P2) 215: 6(float) CompositeExtract 214 0 216: 6(float) CompositeExtract 214 1 217: 6(float) CompositeExtract 214 2 218: 30(fvec4) CompositeConstruct 215 216 217 54 219: 200(ptr) AccessChain 44 62 220: 40 Load 219 221: 30(fvec4) VectorTimesMatrix 218 220 Store 213(Q2) 221 223: 30(fvec4) Load 194(Q0) 224: 193(ptr) AccessChain 222(vertex) 57 Store 224 223 226: 30(fvec4) Load 204(Q1) 227: 193(ptr) AccessChain 222(vertex) 57 Store 227 226 228: 30(fvec4) Load 204(Q1) 229: 193(ptr) AccessChain 222(vertex) 57 Store 229 228 230: 30(fvec4) Load 213(Q2) 231: 193(ptr) AccessChain 222(vertex) 57 Store 231 230 232: 30(fvec4) Load 213(Q2) 233: 193(ptr) AccessChain 222(vertex) 57 Store 233 232 234: 30(fvec4) Load 194(Q0) 235: 193(ptr) AccessChain 222(vertex) 57 Store 235 234 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hlslOffset.vert.out000066400000000000000000000117471506534232700232430ustar00rootroot00000000000000hlsl.hlslOffset.vert Shader version: 500 0:? Sequence 0:20 Function Definition: @main( ( temp void) 0:20 Function Parameters: 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Function Call: @main( ( temp void) 0:? Linker Objects 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}) Linked vertex stage: Shader version: 500 0:? Sequence 0:20 Function Definition: @main( ( temp void) 0:20 Function Parameters: 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Function Call: @main( ( temp void) 0:? Linker Objects 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): 8000b // Id's are bound by 18 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source HLSL 500 Name 4 "main" Name 6 "@main(" Name 15 "b" MemberName 15(b) 0 "m0" MemberName 15(b) 1 "m4" MemberName 15(b) 2 "m16" MemberName 15(b) 3 "m20" MemberName 15(b) 4 "m36" MemberName 15(b) 5 "m56" MemberName 15(b) 6 "m64" MemberName 15(b) 7 "m68" MemberName 15(b) 8 "m76" MemberName 15(b) 9 "m80" MemberName 15(b) 10 "m96" Name 17 "" Decorate 14 ArrayStride 16 Decorate 15(b) Block MemberDecorate 15(b) 0 Offset 0 MemberDecorate 15(b) 1 Offset 4 MemberDecorate 15(b) 2 Offset 16 MemberDecorate 15(b) 3 Offset 20 MemberDecorate 15(b) 4 Offset 36 MemberDecorate 15(b) 5 Offset 56 MemberDecorate 15(b) 6 Offset 64 MemberDecorate 15(b) 7 Offset 68 MemberDecorate 15(b) 8 Offset 76 MemberDecorate 15(b) 9 Offset 80 MemberDecorate 15(b) 10 Offset 96 Decorate 17 Binding 0 Decorate 17 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 9: TypeFloat 32 10: TypeVector 9(float) 3 11: TypeVector 9(float) 2 12: TypeInt 32 0 13: 12(int) Constant 1 14: TypeArray 11(fvec2) 13 15(b): TypeStruct 9(float) 10(fvec3) 9(float) 10(fvec3) 10(fvec3) 11(fvec2) 9(float) 11(fvec2) 9(float) 9(float) 14 16: TypePointer Uniform 15(b) 17: 16(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 8: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hull.1.tesc.out000066400000000000000000000620161506534232700222060ustar00rootroot00000000000000hlsl.hull.1.tesc Shader version: 500 vertices = 4 vertex spacing = equal_spacing 0:? Sequence 0:26 Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Parameters: 0:26 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 'm_cpid' ( in uint) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:28 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 Branch: Return with expression 0:29 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Definition: main( ( temp void) 0:26 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 2 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 3 (const int) 0:26 move second child to first child ( temp uint) 0:? 'm_cpid' ( temp uint) 0:? 'm_cpid' ( in uint InvocationID) 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'm_cpid' ( in uint InvocationID) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'm_cpid' ( temp uint) 0:26 Constant: 0:26 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'm_cpid' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 2-element array of float edges}) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Function Call: PCF(u1; ( temp structure{ temp 2-element array of float edges}) 0:? 'pid' ( in uint PrimitiveID) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:33 Function Definition: PCF(u1; ( temp structure{ temp 2-element array of float edges}) 0:33 Function Parameters: 0:33 'pid' ( in uint) 0:? Sequence 0:36 move second child to first child ( temp float) 0:36 direct index ( temp float) 0:36 edges: direct index for structure ( temp 2-element array of float) 0:36 'output' ( temp structure{ temp 2-element array of float edges}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 2.000000 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 edges: direct index for structure ( temp 2-element array of float) 0:37 'output' ( temp structure{ temp 2-element array of float edges}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 8.000000 0:38 Branch: Return with expression 0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:? Linker Objects 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:? 'm_cpid' ( in uint InvocationID) 0:? 'pid' ( in uint PrimitiveID) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) Linked tessellation control stage: Shader version: 500 vertices = 4 vertex spacing = equal_spacing 0:? Sequence 0:26 Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Parameters: 0:26 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 'm_cpid' ( in uint) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:28 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 Branch: Return with expression 0:29 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Definition: main( ( temp void) 0:26 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 2 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 3 (const int) 0:26 move second child to first child ( temp uint) 0:? 'm_cpid' ( temp uint) 0:? 'm_cpid' ( in uint InvocationID) 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'm_cpid' ( in uint InvocationID) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'm_cpid' ( temp uint) 0:26 Constant: 0:26 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'm_cpid' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 2-element array of float edges}) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Function Call: PCF(u1; ( temp structure{ temp 2-element array of float edges}) 0:? 'pid' ( in uint PrimitiveID) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:33 Function Definition: PCF(u1; ( temp structure{ temp 2-element array of float edges}) 0:33 Function Parameters: 0:33 'pid' ( in uint) 0:? Sequence 0:36 move second child to first child ( temp float) 0:36 direct index ( temp float) 0:36 edges: direct index for structure ( temp 2-element array of float) 0:36 'output' ( temp structure{ temp 2-element array of float edges}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 2.000000 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 edges: direct index for structure ( temp 2-element array of float) 0:37 'output' ( temp structure{ temp 2-element array of float edges}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 8.000000 0:38 Branch: Return with expression 0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:? Linker Objects 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:? 'm_cpid' ( in uint InvocationID) 0:? 'pid' ( in uint PrimitiveID) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 104 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 41 60 63 81 87 ExecutionMode 4 OutputVertices 4 ExecutionMode 4 Isolines ExecutionMode 4 SpacingEqual Source HLSL 500 Name 4 "main" Name 8 "VS_OUT" MemberName 8(VS_OUT) 0 "cpoint" Name 14 "HS_OUT" MemberName 14(HS_OUT) 0 "cpoint" Name 18 "@main(struct-VS_OUT-vf31[4];u1;" Name 16 "ip" Name 17 "m_cpid" Name 22 "HS_CONSTANT_OUT" MemberName 22(HS_CONSTANT_OUT) 0 "edges" Name 25 "PCF(u1;" Name 24 "pid" Name 28 "output" Name 38 "ip" Name 41 "ip.cpoint" Name 58 "m_cpid" Name 60 "m_cpid" Name 63 "@entryPointOutput.cpoint" Name 65 "param" Name 67 "param" Name 80 "@patchConstantResult" Name 81 "pid" Name 82 "param" Name 87 "@patchConstantOutput.edges" Name 96 "output" Decorate 41(ip.cpoint) Location 0 Decorate 60(m_cpid) BuiltIn InvocationId Decorate 63(@entryPointOutput.cpoint) Location 0 Decorate 81(pid) BuiltIn PrimitiveId Decorate 87(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 87(@patchConstantOutput.edges) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(VS_OUT): TypeStruct 7(fvec3) 9: TypeInt 32 0 10: 9(int) Constant 4 11: TypeArray 8(VS_OUT) 10 12: TypePointer Function 11 13: TypePointer Function 9(int) 14(HS_OUT): TypeStruct 7(fvec3) 15: TypeFunction 14(HS_OUT) 12(ptr) 13(ptr) 20: 9(int) Constant 2 21: TypeArray 6(float) 20 22(HS_CONSTANT_OUT): TypeStruct 21 23: TypeFunction 22(HS_CONSTANT_OUT) 13(ptr) 27: TypePointer Function 14(HS_OUT) 29: TypeInt 32 1 30: 29(int) Constant 0 31: TypePointer Function 7(fvec3) 39: TypeArray 7(fvec3) 10 40: TypePointer Input 39 41(ip.cpoint): 40(ptr) Variable Input 42: TypePointer Input 7(fvec3) 46: 29(int) Constant 1 50: 29(int) Constant 2 54: 29(int) Constant 3 59: TypePointer Input 9(int) 60(m_cpid): 59(ptr) Variable Input 62: TypePointer Output 39 63(@entryPointOutput.cpoint): 62(ptr) Variable Output 71: TypePointer Output 7(fvec3) 73: 9(int) Constant 0 75: TypeBool 79: TypePointer Function 22(HS_CONSTANT_OUT) 81(pid): 59(ptr) Variable Input 85: TypeArray 6(float) 10 86: TypePointer Output 85 87(@patchConstantOutput.edges): 86(ptr) Variable Output 88: TypePointer Function 6(float) 91: TypePointer Output 6(float) 97: 6(float) Constant 1073741824 99: 6(float) Constant 1090519040 4(main): 2 Function None 3 5: Label 38(ip): 12(ptr) Variable Function 58(m_cpid): 13(ptr) Variable Function 65(param): 12(ptr) Variable Function 67(param): 13(ptr) Variable Function 80(@patchConstantResult): 79(ptr) Variable Function 82(param): 13(ptr) Variable Function 43: 42(ptr) AccessChain 41(ip.cpoint) 30 44: 7(fvec3) Load 43 45: 31(ptr) AccessChain 38(ip) 30 30 Store 45 44 47: 42(ptr) AccessChain 41(ip.cpoint) 46 48: 7(fvec3) Load 47 49: 31(ptr) AccessChain 38(ip) 46 30 Store 49 48 51: 42(ptr) AccessChain 41(ip.cpoint) 50 52: 7(fvec3) Load 51 53: 31(ptr) AccessChain 38(ip) 50 30 Store 53 52 55: 42(ptr) AccessChain 41(ip.cpoint) 54 56: 7(fvec3) Load 55 57: 31(ptr) AccessChain 38(ip) 54 30 Store 57 56 61: 9(int) Load 60(m_cpid) Store 58(m_cpid) 61 64: 9(int) Load 60(m_cpid) 66: 11 Load 38(ip) Store 65(param) 66 68: 9(int) Load 58(m_cpid) Store 67(param) 68 69: 14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 65(param) 67(param) 70: 7(fvec3) CompositeExtract 69 0 72: 71(ptr) AccessChain 63(@entryPointOutput.cpoint) 64 Store 72 70 ControlBarrier 20 10 73 74: 9(int) Load 60(m_cpid) 76: 75(bool) IEqual 74 30 SelectionMerge 78 None BranchConditional 76 77 78 77: Label 83: 9(int) Load 81(pid) Store 82(param) 83 84:22(HS_CONSTANT_OUT) FunctionCall 25(PCF(u1;) 82(param) Store 80(@patchConstantResult) 84 89: 88(ptr) AccessChain 80(@patchConstantResult) 30 30 90: 6(float) Load 89 92: 91(ptr) AccessChain 87(@patchConstantOutput.edges) 30 Store 92 90 93: 88(ptr) AccessChain 80(@patchConstantResult) 30 46 94: 6(float) Load 93 95: 91(ptr) AccessChain 87(@patchConstantOutput.edges) 46 Store 95 94 Branch 78 78: Label Return FunctionEnd 18(@main(struct-VS_OUT-vf31[4];u1;): 14(HS_OUT) Function None 15 16(ip): 12(ptr) FunctionParameter 17(m_cpid): 13(ptr) FunctionParameter 19: Label 28(output): 27(ptr) Variable Function 32: 31(ptr) AccessChain 16(ip) 30 30 33: 7(fvec3) Load 32 34: 31(ptr) AccessChain 28(output) 30 Store 34 33 35: 14(HS_OUT) Load 28(output) ReturnValue 35 FunctionEnd 25(PCF(u1;):22(HS_CONSTANT_OUT) Function None 23 24(pid): 13(ptr) FunctionParameter 26: Label 96(output): 79(ptr) Variable Function 98: 88(ptr) AccessChain 96(output) 30 30 Store 98 97 100: 88(ptr) AccessChain 96(output) 30 46 Store 100 99 101:22(HS_CONSTANT_OUT) Load 96(output) ReturnValue 101 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hull.2.tesc.out000066400000000000000000000622271506534232700222130ustar00rootroot00000000000000hlsl.hull.2.tesc Shader version: 500 vertices = 4 vertex spacing = equal_spacing 0:? Sequence 0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Parameters: 0:26 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:28 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 Branch: Return with expression 0:29 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Definition: main( ( temp void) 0:26 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 2 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 3 (const int) 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'InvocationId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 2-element array of float edges}) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Function Call: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges}) 0:? 'pid' ( in uint PrimitiveID) 0:? 'pos' ( in 4-component vector of float Position) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:33 Function Definition: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges}) 0:33 Function Parameters: 0:33 'pid' ( in uint) 0:33 'pos' ( in 4-component vector of float) 0:? Sequence 0:36 move second child to first child ( temp float) 0:36 direct index ( temp float) 0:36 edges: direct index for structure ( temp 2-element array of float) 0:36 'output' ( temp structure{ temp 2-element array of float edges}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 2.000000 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 edges: direct index for structure ( temp 2-element array of float) 0:37 'output' ( temp structure{ temp 2-element array of float edges}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 8.000000 0:38 Branch: Return with expression 0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:? Linker Objects 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:? 'pid' ( in uint PrimitiveID) 0:? 'pos' ( in 4-component vector of float Position) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) Linked tessellation control stage: Shader version: 500 vertices = 4 vertex spacing = equal_spacing 0:? Sequence 0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Parameters: 0:26 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:28 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 Branch: Return with expression 0:29 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Definition: main( ( temp void) 0:26 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 2 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 3 (const int) 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'InvocationId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 2-element array of float edges}) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Function Call: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges}) 0:? 'pid' ( in uint PrimitiveID) 0:? 'pos' ( in 4-component vector of float Position) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:33 Function Definition: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges}) 0:33 Function Parameters: 0:33 'pid' ( in uint) 0:33 'pos' ( in 4-component vector of float) 0:? Sequence 0:36 move second child to first child ( temp float) 0:36 direct index ( temp float) 0:36 edges: direct index for structure ( temp 2-element array of float) 0:36 'output' ( temp structure{ temp 2-element array of float edges}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 2.000000 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 edges: direct index for structure ( temp 2-element array of float) 0:37 'output' ( temp structure{ temp 2-element array of float edges}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 8.000000 0:38 Branch: Return with expression 0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:? Linker Objects 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:? 'pid' ( in uint PrimitiveID) 0:? 'pos' ( in 4-component vector of float Position) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 106 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 43 61 63 79 81 89 ExecutionMode 4 OutputVertices 4 ExecutionMode 4 Isolines ExecutionMode 4 SpacingEqual Source HLSL 500 Name 4 "main" Name 8 "VS_OUT" MemberName 8(VS_OUT) 0 "cpoint" Name 13 "HS_OUT" MemberName 13(HS_OUT) 0 "cpoint" Name 16 "@main(struct-VS_OUT-vf31[4];" Name 15 "ip" Name 23 "HS_CONSTANT_OUT" MemberName 23(HS_CONSTANT_OUT) 0 "edges" Name 27 "PCF(u1;vf4;" Name 25 "pid" Name 26 "pos" Name 30 "output" Name 40 "ip" Name 43 "ip.cpoint" Name 61 "@entryPointOutput.cpoint" Name 63 "InvocationId" Name 65 "param" Name 78 "@patchConstantResult" Name 79 "pid" Name 81 "pos" Name 82 "param" Name 84 "param" Name 89 "@patchConstantOutput.edges" Name 98 "output" Decorate 43(ip.cpoint) Location 0 Decorate 61(@entryPointOutput.cpoint) Location 0 Decorate 63(InvocationId) BuiltIn InvocationId Decorate 79(pid) BuiltIn PrimitiveId Decorate 81(pos) BuiltIn Position Decorate 89(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 89(@patchConstantOutput.edges) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(VS_OUT): TypeStruct 7(fvec3) 9: TypeInt 32 0 10: 9(int) Constant 4 11: TypeArray 8(VS_OUT) 10 12: TypePointer Function 11 13(HS_OUT): TypeStruct 7(fvec3) 14: TypeFunction 13(HS_OUT) 12(ptr) 18: TypePointer Function 9(int) 19: TypeVector 6(float) 4 20: TypePointer Function 19(fvec4) 21: 9(int) Constant 2 22: TypeArray 6(float) 21 23(HS_CONSTANT_OUT): TypeStruct 22 24: TypeFunction 23(HS_CONSTANT_OUT) 18(ptr) 20(ptr) 29: TypePointer Function 13(HS_OUT) 31: TypeInt 32 1 32: 31(int) Constant 0 33: TypePointer Function 7(fvec3) 41: TypeArray 7(fvec3) 10 42: TypePointer Input 41 43(ip.cpoint): 42(ptr) Variable Input 44: TypePointer Input 7(fvec3) 48: 31(int) Constant 1 52: 31(int) Constant 2 56: 31(int) Constant 3 60: TypePointer Output 41 61(@entryPointOutput.cpoint): 60(ptr) Variable Output 62: TypePointer Input 9(int) 63(InvocationId): 62(ptr) Variable Input 69: TypePointer Output 7(fvec3) 71: 9(int) Constant 0 73: TypeBool 77: TypePointer Function 23(HS_CONSTANT_OUT) 79(pid): 62(ptr) Variable Input 80: TypePointer Input 19(fvec4) 81(pos): 80(ptr) Variable Input 87: TypeArray 6(float) 10 88: TypePointer Output 87 89(@patchConstantOutput.edges): 88(ptr) Variable Output 90: TypePointer Function 6(float) 93: TypePointer Output 6(float) 99: 6(float) Constant 1073741824 101: 6(float) Constant 1090519040 4(main): 2 Function None 3 5: Label 40(ip): 12(ptr) Variable Function 65(param): 12(ptr) Variable Function 78(@patchConstantResult): 77(ptr) Variable Function 82(param): 18(ptr) Variable Function 84(param): 20(ptr) Variable Function 45: 44(ptr) AccessChain 43(ip.cpoint) 32 46: 7(fvec3) Load 45 47: 33(ptr) AccessChain 40(ip) 32 32 Store 47 46 49: 44(ptr) AccessChain 43(ip.cpoint) 48 50: 7(fvec3) Load 49 51: 33(ptr) AccessChain 40(ip) 48 32 Store 51 50 53: 44(ptr) AccessChain 43(ip.cpoint) 52 54: 7(fvec3) Load 53 55: 33(ptr) AccessChain 40(ip) 52 32 Store 55 54 57: 44(ptr) AccessChain 43(ip.cpoint) 56 58: 7(fvec3) Load 57 59: 33(ptr) AccessChain 40(ip) 56 32 Store 59 58 64: 9(int) Load 63(InvocationId) 66: 11 Load 40(ip) Store 65(param) 66 67: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 65(param) 68: 7(fvec3) CompositeExtract 67 0 70: 69(ptr) AccessChain 61(@entryPointOutput.cpoint) 64 Store 70 68 ControlBarrier 21 10 71 72: 9(int) Load 63(InvocationId) 74: 73(bool) IEqual 72 32 SelectionMerge 76 None BranchConditional 74 75 76 75: Label 83: 9(int) Load 79(pid) Store 82(param) 83 85: 19(fvec4) Load 81(pos) Store 84(param) 85 86:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 82(param) 84(param) Store 78(@patchConstantResult) 86 91: 90(ptr) AccessChain 78(@patchConstantResult) 32 32 92: 6(float) Load 91 94: 93(ptr) AccessChain 89(@patchConstantOutput.edges) 32 Store 94 92 95: 90(ptr) AccessChain 78(@patchConstantResult) 32 48 96: 6(float) Load 95 97: 93(ptr) AccessChain 89(@patchConstantOutput.edges) 48 Store 97 96 Branch 76 76: Label Return FunctionEnd 16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14 15(ip): 12(ptr) FunctionParameter 17: Label 30(output): 29(ptr) Variable Function 34: 33(ptr) AccessChain 15(ip) 32 32 35: 7(fvec3) Load 34 36: 33(ptr) AccessChain 30(output) 32 Store 36 35 37: 13(HS_OUT) Load 30(output) ReturnValue 37 FunctionEnd 27(PCF(u1;vf4;):23(HS_CONSTANT_OUT) Function None 24 25(pid): 18(ptr) FunctionParameter 26(pos): 20(ptr) FunctionParameter 28: Label 98(output): 77(ptr) Variable Function 100: 90(ptr) AccessChain 98(output) 32 32 Store 100 99 102: 90(ptr) AccessChain 98(output) 32 48 Store 102 101 103:23(HS_CONSTANT_OUT) Load 98(output) ReturnValue 103 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hull.3.tesc.out000066400000000000000000000623201506534232700222060ustar00rootroot00000000000000hlsl.hull.3.tesc Shader version: 500 vertices = 4 vertex spacing = equal_spacing 0:? Sequence 0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Parameters: 0:26 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:28 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 Branch: Return with expression 0:29 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Definition: main( ( temp void) 0:26 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 2 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 3 (const int) 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'InvocationId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 2-element array of float edges}) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Function Call: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges}) 0:? 'pid' ( in uint PrimitiveID) 0:? 'pos' ( in 4-component vector of float Position) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:33 Function Definition: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges}) 0:33 Function Parameters: 0:33 'pid' ( in uint) 0:33 'pos' ( in 4-component vector of float) 0:? Sequence 0:36 move second child to first child ( temp float) 0:36 direct index ( temp float) 0:36 edges: direct index for structure ( temp 2-element array of float) 0:36 'output' ( temp structure{ temp 2-element array of float edges}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 2.000000 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 edges: direct index for structure ( temp 2-element array of float) 0:37 'output' ( temp structure{ temp 2-element array of float edges}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 8.000000 0:38 Branch: Return with expression 0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:? Linker Objects 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:? 'pid' ( in uint PrimitiveID) 0:? 'pos' ( in 4-component vector of float Position) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) Linked tessellation control stage: Shader version: 500 vertices = 4 vertex spacing = equal_spacing 0:? Sequence 0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Parameters: 0:26 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:28 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 Branch: Return with expression 0:29 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Definition: main( ( temp void) 0:26 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 2 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:26 Constant: 0:26 3 (const int) 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'InvocationId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 2-element array of float edges}) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Function Call: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges}) 0:? 'pid' ( in uint PrimitiveID) 0:? 'pos' ( in 4-component vector of float Position) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? edges: direct index for structure ( temp 2-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:33 Function Definition: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges}) 0:33 Function Parameters: 0:33 'pid' ( in uint) 0:33 'pos' ( in 4-component vector of float) 0:? Sequence 0:36 move second child to first child ( temp float) 0:36 direct index ( temp float) 0:36 edges: direct index for structure ( temp 2-element array of float) 0:36 'output' ( temp structure{ temp 2-element array of float edges}) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 2.000000 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 edges: direct index for structure ( temp 2-element array of float) 0:37 'output' ( temp structure{ temp 2-element array of float edges}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 8.000000 0:38 Branch: Return with expression 0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:? Linker Objects 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:? 'pid' ( in uint PrimitiveID) 0:? 'pos' ( in 4-component vector of float Position) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 106 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 43 61 63 79 81 89 ExecutionMode 4 OutputVertices 4 ExecutionMode 4 Triangles ExecutionMode 4 SpacingEqual ExecutionMode 4 PointMode Source HLSL 500 Name 4 "main" Name 8 "VS_OUT" MemberName 8(VS_OUT) 0 "cpoint" Name 13 "HS_OUT" MemberName 13(HS_OUT) 0 "cpoint" Name 16 "@main(struct-VS_OUT-vf31[4];" Name 15 "ip" Name 23 "HS_CONSTANT_OUT" MemberName 23(HS_CONSTANT_OUT) 0 "edges" Name 27 "PCF(u1;vf4;" Name 25 "pid" Name 26 "pos" Name 30 "output" Name 40 "ip" Name 43 "ip.cpoint" Name 61 "@entryPointOutput.cpoint" Name 63 "InvocationId" Name 65 "param" Name 78 "@patchConstantResult" Name 79 "pid" Name 81 "pos" Name 82 "param" Name 84 "param" Name 89 "@patchConstantOutput.edges" Name 98 "output" Decorate 43(ip.cpoint) Location 0 Decorate 61(@entryPointOutput.cpoint) Location 0 Decorate 63(InvocationId) BuiltIn InvocationId Decorate 79(pid) BuiltIn PrimitiveId Decorate 81(pos) BuiltIn Position Decorate 89(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 89(@patchConstantOutput.edges) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(VS_OUT): TypeStruct 7(fvec3) 9: TypeInt 32 0 10: 9(int) Constant 4 11: TypeArray 8(VS_OUT) 10 12: TypePointer Function 11 13(HS_OUT): TypeStruct 7(fvec3) 14: TypeFunction 13(HS_OUT) 12(ptr) 18: TypePointer Function 9(int) 19: TypeVector 6(float) 4 20: TypePointer Function 19(fvec4) 21: 9(int) Constant 2 22: TypeArray 6(float) 21 23(HS_CONSTANT_OUT): TypeStruct 22 24: TypeFunction 23(HS_CONSTANT_OUT) 18(ptr) 20(ptr) 29: TypePointer Function 13(HS_OUT) 31: TypeInt 32 1 32: 31(int) Constant 0 33: TypePointer Function 7(fvec3) 41: TypeArray 7(fvec3) 10 42: TypePointer Input 41 43(ip.cpoint): 42(ptr) Variable Input 44: TypePointer Input 7(fvec3) 48: 31(int) Constant 1 52: 31(int) Constant 2 56: 31(int) Constant 3 60: TypePointer Output 41 61(@entryPointOutput.cpoint): 60(ptr) Variable Output 62: TypePointer Input 9(int) 63(InvocationId): 62(ptr) Variable Input 69: TypePointer Output 7(fvec3) 71: 9(int) Constant 0 73: TypeBool 77: TypePointer Function 23(HS_CONSTANT_OUT) 79(pid): 62(ptr) Variable Input 80: TypePointer Input 19(fvec4) 81(pos): 80(ptr) Variable Input 87: TypeArray 6(float) 10 88: TypePointer Output 87 89(@patchConstantOutput.edges): 88(ptr) Variable Output 90: TypePointer Function 6(float) 93: TypePointer Output 6(float) 99: 6(float) Constant 1073741824 101: 6(float) Constant 1090519040 4(main): 2 Function None 3 5: Label 40(ip): 12(ptr) Variable Function 65(param): 12(ptr) Variable Function 78(@patchConstantResult): 77(ptr) Variable Function 82(param): 18(ptr) Variable Function 84(param): 20(ptr) Variable Function 45: 44(ptr) AccessChain 43(ip.cpoint) 32 46: 7(fvec3) Load 45 47: 33(ptr) AccessChain 40(ip) 32 32 Store 47 46 49: 44(ptr) AccessChain 43(ip.cpoint) 48 50: 7(fvec3) Load 49 51: 33(ptr) AccessChain 40(ip) 48 32 Store 51 50 53: 44(ptr) AccessChain 43(ip.cpoint) 52 54: 7(fvec3) Load 53 55: 33(ptr) AccessChain 40(ip) 52 32 Store 55 54 57: 44(ptr) AccessChain 43(ip.cpoint) 56 58: 7(fvec3) Load 57 59: 33(ptr) AccessChain 40(ip) 56 32 Store 59 58 64: 9(int) Load 63(InvocationId) 66: 11 Load 40(ip) Store 65(param) 66 67: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 65(param) 68: 7(fvec3) CompositeExtract 67 0 70: 69(ptr) AccessChain 61(@entryPointOutput.cpoint) 64 Store 70 68 ControlBarrier 21 10 71 72: 9(int) Load 63(InvocationId) 74: 73(bool) IEqual 72 32 SelectionMerge 76 None BranchConditional 74 75 76 75: Label 83: 9(int) Load 79(pid) Store 82(param) 83 85: 19(fvec4) Load 81(pos) Store 84(param) 85 86:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 82(param) 84(param) Store 78(@patchConstantResult) 86 91: 90(ptr) AccessChain 78(@patchConstantResult) 32 32 92: 6(float) Load 91 94: 93(ptr) AccessChain 89(@patchConstantOutput.edges) 32 Store 94 92 95: 90(ptr) AccessChain 78(@patchConstantResult) 32 48 96: 6(float) Load 95 97: 93(ptr) AccessChain 89(@patchConstantOutput.edges) 48 Store 97 96 Branch 76 76: Label Return FunctionEnd 16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14 15(ip): 12(ptr) FunctionParameter 17: Label 30(output): 29(ptr) Variable Function 34: 33(ptr) AccessChain 15(ip) 32 32 35: 7(fvec3) Load 34 36: 33(ptr) AccessChain 30(output) 32 Store 36 35 37: 13(HS_OUT) Load 30(output) ReturnValue 37 FunctionEnd 27(PCF(u1;vf4;):23(HS_CONSTANT_OUT) Function None 24 25(pid): 18(ptr) FunctionParameter 26(pos): 20(ptr) FunctionParameter 28: Label 98(output): 77(ptr) Variable Function 100: 90(ptr) AccessChain 98(output) 32 32 Store 100 99 102: 90(ptr) AccessChain 98(output) 32 48 Store 102 101 103:23(HS_CONSTANT_OUT) Load 98(output) ReturnValue 103 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hull.4.tesc.out000066400000000000000000001125641506534232700222150ustar00rootroot00000000000000hlsl.hull.4.tesc Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = cw 0:? Sequence 0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:25 Function Parameters: 0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:28 move second child to first child ( temp float) 0:28 fInsideTessFactor: direct index for structure ( temp float) 0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:28 Constant: 0:28 1 (const int) 0:28 add ( temp float) 0:28 direct index ( temp float) 0:28 m_Position: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 3 (const int) 0:28 direct index ( temp float) 0:28 m_Normal: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 3 (const int) 0:30 Branch: Return with expression 0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:39 Function Definition: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position}) 0:39 Function Parameters: 0:39 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 'cpid' ( in uint) 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position}) 0:40 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:40 Constant: 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:41 move second child to first child ( temp 4-component vector of float) 0:41 m_Position: direct index for structure ( temp 4-component vector of float) 0:41 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:42 Branch: Return with expression 0:42 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:39 Function Definition: main( ( temp void) 0:39 Function Parameters: 0:? Sequence 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( in 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:39 Constant: 0:39 0 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 direct index (layout( location=0) in 4-component vector of float) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float) 0:39 Constant: 0:39 0 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( in 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:39 Constant: 0:39 1 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 direct index (layout( location=0) in 4-component vector of float) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float) 0:39 Constant: 0:39 1 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( in 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:39 Constant: 0:39 2 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 direct index (layout( location=0) in 4-component vector of float) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float) 0:39 Constant: 0:39 2 (const int) 0:39 move second child to first child ( temp uint) 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 indirect index ( out 4-component vector of float Position) 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? 'cpid' ( in uint InvocationID) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 Function Call: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'cpid' ( temp uint) 0:39 Constant: 0:39 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'cpid' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Function Call: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? fTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? fTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? fTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? fInsideTessFactor: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Constant: 0:? 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) Linked tessellation control stage: Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = cw 0:? Sequence 0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:25 Function Parameters: 0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:28 move second child to first child ( temp float) 0:28 fInsideTessFactor: direct index for structure ( temp float) 0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:28 Constant: 0:28 1 (const int) 0:28 add ( temp float) 0:28 direct index ( temp float) 0:28 m_Position: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 3 (const int) 0:28 direct index ( temp float) 0:28 m_Normal: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 3 (const int) 0:30 Branch: Return with expression 0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:39 Function Definition: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position}) 0:39 Function Parameters: 0:39 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 'cpid' ( in uint) 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position}) 0:40 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:40 Constant: 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:41 move second child to first child ( temp 4-component vector of float) 0:41 m_Position: direct index for structure ( temp 4-component vector of float) 0:41 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:42 Branch: Return with expression 0:42 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:39 Function Definition: main( ( temp void) 0:39 Function Parameters: 0:? Sequence 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( in 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:39 Constant: 0:39 0 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 direct index (layout( location=0) in 4-component vector of float) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float) 0:39 Constant: 0:39 0 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( in 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:39 Constant: 0:39 1 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 direct index (layout( location=0) in 4-component vector of float) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float) 0:39 Constant: 0:39 1 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( in 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:39 Constant: 0:39 2 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 direct index (layout( location=0) in 4-component vector of float) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float) 0:39 Constant: 0:39 2 (const int) 0:39 move second child to first child ( temp uint) 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 indirect index ( out 4-component vector of float Position) 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? 'cpid' ( in uint InvocationID) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 Function Call: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? 'cpid' ( temp uint) 0:39 Constant: 0:39 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'cpid' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Function Call: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? fTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? fTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? fTessFactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? fInsideTessFactor: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:? Constant: 0:? 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 124 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 56 61 80 83 107 120 ExecutionMode 4 OutputVertices 3 ExecutionMode 4 Triangles ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 VertexOrderCw Source HLSL 500 Name 4 "main" Name 8 "HS_Input" MemberName 8(HS_Input) 0 "m_Position" MemberName 8(HS_Input) 1 "m_Normal" Name 14 "HS_Output" MemberName 14(HS_Output) 0 "fTessFactor" MemberName 14(HS_Output) 1 "fInsideTessFactor" Name 17 "HS_ConstFunc(struct-HS_Input-vf4-vf41[3];" Name 16 "I" Name 20 "HS_Main_Output" MemberName 20(HS_Main_Output) 0 "m_Position" Name 24 "@main(struct-HS_Input-vf4-vf41[3];u1;" Name 22 "I" Name 23 "cpid" Name 27 "O" Name 45 "output" Name 53 "I" Name 56 "I.m_Position" Name 61 "I.m_Normal" Name 78 "cpid" Name 80 "cpid" Name 83 "@entryPointOutput.m_Position" Name 85 "param" Name 87 "param" Name 101 "@patchConstantResult" Name 102 "param" Name 107 "@patchConstantOutput.fTessFactor" Name 120 "@patchConstantOutput.fInsideTessFactor" Decorate 56(I.m_Position) BuiltIn Position Decorate 61(I.m_Normal) Location 0 Decorate 80(cpid) BuiltIn InvocationId Decorate 83(@entryPointOutput.m_Position) BuiltIn Position Decorate 107(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter Decorate 107(@patchConstantOutput.fTessFactor) Patch Decorate 120(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner Decorate 120(@patchConstantOutput.fInsideTessFactor) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(HS_Input): TypeStruct 7(fvec4) 7(fvec4) 9: TypeInt 32 0 10: 9(int) Constant 3 11: TypeArray 8(HS_Input) 10 12: TypePointer Function 11 13: TypeArray 6(float) 10 14(HS_Output): TypeStruct 13 6(float) 15: TypeFunction 14(HS_Output) 12(ptr) 19: TypePointer Function 9(int) 20(HS_Main_Output): TypeStruct 7(fvec4) 21: TypeFunction 20(HS_Main_Output) 12(ptr) 19(ptr) 26: TypePointer Function 14(HS_Output) 28: 6(float) Constant 0 29: 13 ConstantComposite 28 28 28 30:14(HS_Output) ConstantComposite 29 28 31: TypeInt 32 1 32: 31(int) Constant 1 33: 31(int) Constant 0 34: TypePointer Function 6(float) 44: TypePointer Function 20(HS_Main_Output) 46: 7(fvec4) ConstantComposite 28 28 28 28 47:20(HS_Main_Output) ConstantComposite 46 48: TypePointer Function 7(fvec4) 54: TypeArray 7(fvec4) 10 55: TypePointer Input 54 56(I.m_Position): 55(ptr) Variable Input 57: TypePointer Input 7(fvec4) 61(I.m_Normal): 55(ptr) Variable Input 71: 31(int) Constant 2 79: TypePointer Input 9(int) 80(cpid): 79(ptr) Variable Input 82: TypePointer Output 54 83(@entryPointOutput.m_Position): 82(ptr) Variable Output 91: TypePointer Output 7(fvec4) 93: 9(int) Constant 2 94: 9(int) Constant 4 95: 9(int) Constant 0 97: TypeBool 105: TypeArray 6(float) 94 106: TypePointer Output 105 107(@patchConstantOutput.fTessFactor): 106(ptr) Variable Output 110: TypePointer Output 6(float) 118: TypeArray 6(float) 93 119: TypePointer Output 118 120(@patchConstantOutput.fInsideTessFactor): 119(ptr) Variable Output 4(main): 2 Function None 3 5: Label 53(I): 12(ptr) Variable Function 78(cpid): 19(ptr) Variable Function 85(param): 12(ptr) Variable Function 87(param): 19(ptr) Variable Function 101(@patchConstantResult): 26(ptr) Variable Function 102(param): 12(ptr) Variable Function 58: 57(ptr) AccessChain 56(I.m_Position) 33 59: 7(fvec4) Load 58 60: 48(ptr) AccessChain 53(I) 33 33 Store 60 59 62: 57(ptr) AccessChain 61(I.m_Normal) 33 63: 7(fvec4) Load 62 64: 48(ptr) AccessChain 53(I) 33 32 Store 64 63 65: 57(ptr) AccessChain 56(I.m_Position) 32 66: 7(fvec4) Load 65 67: 48(ptr) AccessChain 53(I) 32 33 Store 67 66 68: 57(ptr) AccessChain 61(I.m_Normal) 32 69: 7(fvec4) Load 68 70: 48(ptr) AccessChain 53(I) 32 32 Store 70 69 72: 57(ptr) AccessChain 56(I.m_Position) 71 73: 7(fvec4) Load 72 74: 48(ptr) AccessChain 53(I) 71 33 Store 74 73 75: 57(ptr) AccessChain 61(I.m_Normal) 71 76: 7(fvec4) Load 75 77: 48(ptr) AccessChain 53(I) 71 32 Store 77 76 81: 9(int) Load 80(cpid) Store 78(cpid) 81 84: 9(int) Load 80(cpid) 86: 11 Load 53(I) Store 85(param) 86 88: 9(int) Load 78(cpid) Store 87(param) 88 89:20(HS_Main_Output) FunctionCall 24(@main(struct-HS_Input-vf4-vf41[3];u1;) 85(param) 87(param) 90: 7(fvec4) CompositeExtract 89 0 92: 91(ptr) AccessChain 83(@entryPointOutput.m_Position) 84 Store 92 90 ControlBarrier 93 94 95 96: 9(int) Load 80(cpid) 98: 97(bool) IEqual 96 33 SelectionMerge 100 None BranchConditional 98 99 100 99: Label 103: 11 Load 53(I) Store 102(param) 103 104:14(HS_Output) FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 102(param) Store 101(@patchConstantResult) 104 108: 34(ptr) AccessChain 101(@patchConstantResult) 33 33 109: 6(float) Load 108 111: 110(ptr) AccessChain 107(@patchConstantOutput.fTessFactor) 33 Store 111 109 112: 34(ptr) AccessChain 101(@patchConstantResult) 33 32 113: 6(float) Load 112 114: 110(ptr) AccessChain 107(@patchConstantOutput.fTessFactor) 32 Store 114 113 115: 34(ptr) AccessChain 101(@patchConstantResult) 33 71 116: 6(float) Load 115 117: 110(ptr) AccessChain 107(@patchConstantOutput.fTessFactor) 71 Store 117 116 121: 34(ptr) AccessChain 101(@patchConstantResult) 32 122: 6(float) Load 121 123: 110(ptr) AccessChain 120(@patchConstantOutput.fInsideTessFactor) 33 Store 123 122 Branch 100 100: Label Return FunctionEnd 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];):14(HS_Output) Function None 15 16(I): 12(ptr) FunctionParameter 18: Label 27(O): 26(ptr) Variable Function Store 27(O) 30 35: 34(ptr) AccessChain 16(I) 33 33 10 36: 6(float) Load 35 37: 34(ptr) AccessChain 16(I) 33 32 10 38: 6(float) Load 37 39: 6(float) FAdd 36 38 40: 34(ptr) AccessChain 27(O) 32 Store 40 39 41:14(HS_Output) Load 27(O) ReturnValue 41 FunctionEnd 24(@main(struct-HS_Input-vf4-vf41[3];u1;):20(HS_Main_Output) Function None 21 22(I): 12(ptr) FunctionParameter 23(cpid): 19(ptr) FunctionParameter 25: Label 45(output): 44(ptr) Variable Function Store 45(output) 47 49: 48(ptr) AccessChain 45(output) 33 Store 49 46 50:20(HS_Main_Output) Load 45(output) ReturnValue 50 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hull.5.tesc.out000066400000000000000000000224101506534232700222040ustar00rootroot00000000000000hlsl.hull.5.tesc ERROR: 0:0: '' : unimplemented: PCF input patch without entry point input patch parameter ERROR: 1 compilation errors. No code generated. Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = cw ERROR: node is still EOpNull! 0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:25 Function Parameters: 0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:28 move second child to first child ( temp float) 0:28 fInsideTessFactor: direct index for structure ( temp float) 0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:28 Constant: 0:28 1 (const int) 0:28 add ( temp float) 0:28 direct index ( temp float) 0:28 m_Position: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 3 (const int) 0:28 direct index ( temp float) 0:28 m_Normal: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 3 (const int) 0:30 Branch: Return with expression 0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:39 Function Definition: @main(u1; ( temp structure{ temp 4-component vector of float m_Position}) 0:39 Function Parameters: 0:39 'cpid' ( in uint) 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position}) 0:40 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:40 Constant: 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:41 move second child to first child ( temp 4-component vector of float) 0:41 m_Position: direct index for structure ( temp 4-component vector of float) 0:41 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:42 Branch: Return with expression 0:42 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:39 Function Definition: main( ( temp void) 0:39 Function Parameters: 0:? Sequence 0:39 move second child to first child ( temp uint) 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 indirect index ( out 4-component vector of float Position) 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? 'cpid' ( in uint InvocationID) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 Function Call: @main(u1; ( temp structure{ temp 4-component vector of float m_Position}) 0:? 'cpid' ( temp uint) 0:39 Constant: 0:39 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? 'cpid' ( in uint InvocationID) Linked tessellation control stage: Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = cw ERROR: node is still EOpNull! 0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:25 Function Parameters: 0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:28 move second child to first child ( temp float) 0:28 fInsideTessFactor: direct index for structure ( temp float) 0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:28 Constant: 0:28 1 (const int) 0:28 add ( temp float) 0:28 direct index ( temp float) 0:28 m_Position: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 3 (const int) 0:28 direct index ( temp float) 0:28 m_Normal: direct index for structure ( temp 4-component vector of float) 0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 3 (const int) 0:30 Branch: Return with expression 0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) 0:39 Function Definition: @main(u1; ( temp structure{ temp 4-component vector of float m_Position}) 0:39 Function Parameters: 0:39 'cpid' ( in uint) 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position}) 0:40 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:40 Constant: 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:41 move second child to first child ( temp 4-component vector of float) 0:41 m_Position: direct index for structure ( temp 4-component vector of float) 0:41 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:42 Branch: Return with expression 0:42 'output' ( temp structure{ temp 4-component vector of float m_Position}) 0:39 Function Definition: main( ( temp void) 0:39 Function Parameters: 0:? Sequence 0:39 move second child to first child ( temp uint) 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 indirect index ( out 4-component vector of float Position) 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? 'cpid' ( in uint InvocationID) 0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 Function Call: @main(u1; ( temp structure{ temp 4-component vector of float m_Position}) 0:? 'cpid' ( temp uint) 0:39 Constant: 0:39 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? 'cpid' ( in uint InvocationID) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.hull.6.tesc.out000066400000000000000000001127121506534232700222120ustar00rootroot00000000000000hlsl.hull.6.tesc Shader version: 500 vertices = 1 vertex spacing = fractional_even_spacing triangle order = ccw 0:? Sequence 0:17 Function Definition: ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2]; ( temp structure{ temp 4-element array of float Edges}) 0:17 Function Parameters: 0:17 'p' ( in 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:17 'BlockID' ( in uint) 0:17 'Inside' ( out 2-element array of float) 0:? Sequence 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 Edges: direct index for structure ( temp 4-element array of float) 0:19 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 2.500000 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 Edges: direct index for structure ( temp 4-element array of float) 0:20 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 4.250000 0:21 move second child to first child ( temp float) 0:21 direct index ( temp float) 0:21 Edges: direct index for structure ( temp 4-element array of float) 0:21 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 5.750000 0:22 move second child to first child ( temp float) 0:22 direct index ( temp float) 0:22 Edges: direct index for structure ( temp 4-element array of float) 0:22 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 7.500000 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 'Inside' ( out 2-element array of float) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 6.750000 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 'Inside' ( out 2-element array of float) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 7.250000 0:27 Branch: Return with expression 0:27 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:42 Function Definition: @main(struct-VSOutput-vf4-vf31[1];u1; ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Function Parameters: 0:42 'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:42 'uCPID' ( in uint) 0:? Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 Position: direct index for structure ( temp 4-component vector of float) 0:44 'Out' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:44 Constant: 0:44 0 (const int) 0:44 f4Position: direct index for structure ( temp 4-component vector of float) 0:44 indirect index ( temp structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:44 'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:44 'uCPID' ( in uint) 0:44 Constant: 0:44 0 (const int) 0:45 move second child to first child ( temp 3-component vector of float) 0:45 Color: direct index for structure ( temp 3-component vector of float) 0:45 'Out' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:45 Constant: 0:45 1 (const int) 0:45 f3Color: direct index for structure ( temp 3-component vector of float) 0:45 indirect index ( temp structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:45 'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:45 'uCPID' ( in uint) 0:45 Constant: 0:45 1 (const int) 0:46 Branch: Return with expression 0:46 'Out' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Function Definition: main( ( temp void) 0:42 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 f4Position: direct index for structure ( temp 4-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:? 'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( in 4-component vector of float Position) 0:? 'inputPatch.f4Position' ( in 1-element array of 4-component vector of float Position) 0:42 Constant: 0:42 0 (const int) 0:42 move second child to first child ( temp 3-component vector of float) 0:42 f3Color: direct index for structure ( temp 3-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:? 'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 direct index (layout( location=0) in 3-component vector of float) 0:? 'inputPatch.f3Color' (layout( location=0) in 1-element array of 3-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 move second child to first child ( temp uint) 0:? 'uCPID' ( temp uint) 0:? 'uCPID' ( in uint InvocationID) 0:42 Sequence 0:42 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Function Call: @main(struct-VSOutput-vf4-vf31[1];u1; ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:? 'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:? 'uCPID' ( temp uint) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 indirect index (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.Position' (layout( location=0) out 1-element array of 4-component vector of float) 0:? 'uCPID' ( in uint InvocationID) 0:42 Position: direct index for structure ( temp 4-component vector of float) 0:42 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Constant: 0:42 0 (const int) 0:42 move second child to first child ( temp 3-component vector of float) 0:42 indirect index (layout( location=1) out 3-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=1) out 1-element array of 3-component vector of float) 0:? 'uCPID' ( in uint InvocationID) 0:42 Color: direct index for structure ( temp 3-component vector of float) 0:42 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Constant: 0:42 1 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'uCPID' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 4-element array of float Edges}) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Function Call: ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2]; ( temp structure{ temp 4-element array of float Edges}) 0:? 'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:? 'BlockID' ( in uint PrimitiveID) 0:? 'Inside' ( patch out 2-element array of float TessLevelInner) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? Edges: direct index for structure ( temp 4-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? Edges: direct index for structure ( temp 4-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? Edges: direct index for structure ( temp 4-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 3 (const int) 0:? direct index ( temp float) 0:? Edges: direct index for structure ( temp 4-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' (layout( location=0) out 1-element array of 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=1) out 1-element array of 3-component vector of float) 0:? 'inputPatch.f4Position' ( in 1-element array of 4-component vector of float Position) 0:? 'inputPatch.f3Color' (layout( location=0) in 1-element array of 3-component vector of float) 0:? 'uCPID' ( in uint InvocationID) 0:? 'BlockID' ( in uint PrimitiveID) 0:? 'Inside' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) Linked tessellation control stage: Shader version: 500 vertices = 1 vertex spacing = fractional_even_spacing triangle order = ccw 0:? Sequence 0:17 Function Definition: ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2]; ( temp structure{ temp 4-element array of float Edges}) 0:17 Function Parameters: 0:17 'p' ( in 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:17 'BlockID' ( in uint) 0:17 'Inside' ( out 2-element array of float) 0:? Sequence 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 Edges: direct index for structure ( temp 4-element array of float) 0:19 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 2.500000 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 Edges: direct index for structure ( temp 4-element array of float) 0:20 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 4.250000 0:21 move second child to first child ( temp float) 0:21 direct index ( temp float) 0:21 Edges: direct index for structure ( temp 4-element array of float) 0:21 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 5.750000 0:22 move second child to first child ( temp float) 0:22 direct index ( temp float) 0:22 Edges: direct index for structure ( temp 4-element array of float) 0:22 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 7.500000 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 'Inside' ( out 2-element array of float) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 6.750000 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 'Inside' ( out 2-element array of float) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: 0:25 7.250000 0:27 Branch: Return with expression 0:27 'Factors' ( temp structure{ temp 4-element array of float Edges}) 0:42 Function Definition: @main(struct-VSOutput-vf4-vf31[1];u1; ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Function Parameters: 0:42 'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:42 'uCPID' ( in uint) 0:? Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 Position: direct index for structure ( temp 4-component vector of float) 0:44 'Out' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:44 Constant: 0:44 0 (const int) 0:44 f4Position: direct index for structure ( temp 4-component vector of float) 0:44 indirect index ( temp structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:44 'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:44 'uCPID' ( in uint) 0:44 Constant: 0:44 0 (const int) 0:45 move second child to first child ( temp 3-component vector of float) 0:45 Color: direct index for structure ( temp 3-component vector of float) 0:45 'Out' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:45 Constant: 0:45 1 (const int) 0:45 f3Color: direct index for structure ( temp 3-component vector of float) 0:45 indirect index ( temp structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:45 'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:45 'uCPID' ( in uint) 0:45 Constant: 0:45 1 (const int) 0:46 Branch: Return with expression 0:46 'Out' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Function Definition: main( ( temp void) 0:42 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 f4Position: direct index for structure ( temp 4-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:? 'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( in 4-component vector of float Position) 0:? 'inputPatch.f4Position' ( in 1-element array of 4-component vector of float Position) 0:42 Constant: 0:42 0 (const int) 0:42 move second child to first child ( temp 3-component vector of float) 0:42 f3Color: direct index for structure ( temp 3-component vector of float) 0:42 direct index ( temp structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:? 'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 direct index (layout( location=0) in 3-component vector of float) 0:? 'inputPatch.f3Color' (layout( location=0) in 1-element array of 3-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 move second child to first child ( temp uint) 0:? 'uCPID' ( temp uint) 0:? 'uCPID' ( in uint InvocationID) 0:42 Sequence 0:42 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Function Call: @main(struct-VSOutput-vf4-vf31[1];u1; ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:? 'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:? 'uCPID' ( temp uint) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 indirect index (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.Position' (layout( location=0) out 1-element array of 4-component vector of float) 0:? 'uCPID' ( in uint InvocationID) 0:42 Position: direct index for structure ( temp 4-component vector of float) 0:42 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Constant: 0:42 0 (const int) 0:42 move second child to first child ( temp 3-component vector of float) 0:42 indirect index (layout( location=1) out 3-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=1) out 1-element array of 3-component vector of float) 0:? 'uCPID' ( in uint InvocationID) 0:42 Color: direct index for structure ( temp 3-component vector of float) 0:42 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float Color}) 0:42 Constant: 0:42 1 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'uCPID' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 4-element array of float Edges}) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Function Call: ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2]; ( temp structure{ temp 4-element array of float Edges}) 0:? 'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position, temp 3-component vector of float f3Color}) 0:? 'BlockID' ( in uint PrimitiveID) 0:? 'Inside' ( patch out 2-element array of float TessLevelInner) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? Edges: direct index for structure ( temp 4-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? Edges: direct index for structure ( temp 4-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? Edges: direct index for structure ( temp 4-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 3 (const int) 0:? direct index ( temp float) 0:? Edges: direct index for structure ( temp 4-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 3 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Position' (layout( location=0) out 1-element array of 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=1) out 1-element array of 3-component vector of float) 0:? 'inputPatch.f4Position' ( in 1-element array of 4-component vector of float Position) 0:? 'inputPatch.f3Color' (layout( location=0) in 1-element array of 3-component vector of float) 0:? 'uCPID' ( in uint InvocationID) 0:? 'BlockID' ( in uint PrimitiveID) 0:? 'Inside' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 142 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 74 81 88 97 104 117 119 128 ExecutionMode 4 OutputVertices 1 ExecutionMode 4 Quads ExecutionMode 4 SpacingFractionalEven ExecutionMode 4 VertexOrderCcw Source HLSL 500 Name 4 "main" Name 9 "VSOutput" MemberName 9(VSOutput) 0 "f4Position" MemberName 9(VSOutput) 1 "f3Color" Name 20 "HS_CONSTANT_DATA_OUTPUT" MemberName 20(HS_CONSTANT_DATA_OUTPUT) 0 "Edges" Name 25 "ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2];" Name 22 "p" Name 23 "BlockID" Name 24 "Inside" Name 27 "HSOutput" MemberName 27(HSOutput) 0 "Position" MemberName 27(HSOutput) 1 "Color" Name 31 "@main(struct-VSOutput-vf4-vf31[1];u1;" Name 29 "inputPatch" Name 30 "uCPID" Name 34 "Factors" Name 57 "Out" Name 71 "inputPatch" Name 74 "inputPatch.f4Position" Name 81 "inputPatch.f3Color" Name 86 "uCPID" Name 88 "uCPID" Name 90 "flattenTemp" Name 91 "param" Name 93 "param" Name 97 "@entryPointOutput.Position" Name 104 "@entryPointOutput.Color" Name 116 "@patchConstantResult" Name 117 "BlockID" Name 119 "Inside" Name 120 "param" Name 122 "param" Name 124 "param" Name 128 "@patchConstantOutput.Edges" Decorate 74(inputPatch.f4Position) BuiltIn Position Decorate 81(inputPatch.f3Color) Location 0 Decorate 88(uCPID) BuiltIn InvocationId Decorate 97(@entryPointOutput.Position) Location 0 Decorate 104(@entryPointOutput.Color) Location 1 Decorate 117(BlockID) BuiltIn PrimitiveId Decorate 119(Inside) BuiltIn TessLevelInner Decorate 119(Inside) Patch Decorate 128(@patchConstantOutput.Edges) BuiltIn TessLevelOuter Decorate 128(@patchConstantOutput.Edges) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 3 9(VSOutput): TypeStruct 7(fvec4) 8(fvec3) 10: TypeInt 32 0 11: 10(int) Constant 1 12: TypeArray 9(VSOutput) 11 13: TypePointer Function 12 14: TypePointer Function 10(int) 15: 10(int) Constant 2 16: TypeArray 6(float) 15 17: TypePointer Function 16 18: 10(int) Constant 4 19: TypeArray 6(float) 18 20(HS_CONSTANT_DATA_OUTPUT): TypeStruct 19 21: TypeFunction 20(HS_CONSTANT_DATA_OUTPUT) 13(ptr) 14(ptr) 17(ptr) 27(HSOutput): TypeStruct 7(fvec4) 8(fvec3) 28: TypeFunction 27(HSOutput) 13(ptr) 14(ptr) 33: TypePointer Function 20(HS_CONSTANT_DATA_OUTPUT) 35: TypeInt 32 1 36: 35(int) Constant 0 37: 6(float) Constant 1075838976 38: TypePointer Function 6(float) 40: 35(int) Constant 1 41: 6(float) Constant 1082654720 43: 35(int) Constant 2 44: 6(float) Constant 1085800448 46: 35(int) Constant 3 47: 6(float) Constant 1089470464 49: 6(float) Constant 1087897600 51: 6(float) Constant 1088946176 56: TypePointer Function 27(HSOutput) 59: TypePointer Function 7(fvec4) 64: TypePointer Function 8(fvec3) 72: TypeArray 7(fvec4) 11 73: TypePointer Input 72 74(inputPatch.f4Position): 73(ptr) Variable Input 75: TypePointer Input 7(fvec4) 79: TypeArray 8(fvec3) 11 80: TypePointer Input 79 81(inputPatch.f3Color): 80(ptr) Variable Input 82: TypePointer Input 8(fvec3) 87: TypePointer Input 10(int) 88(uCPID): 87(ptr) Variable Input 96: TypePointer Output 72 97(@entryPointOutput.Position): 96(ptr) Variable Output 101: TypePointer Output 7(fvec4) 103: TypePointer Output 79 104(@entryPointOutput.Color): 103(ptr) Variable Output 108: TypePointer Output 8(fvec3) 110: 10(int) Constant 0 112: TypeBool 117(BlockID): 87(ptr) Variable Input 118: TypePointer Output 16 119(Inside): 118(ptr) Variable Output 127: TypePointer Output 19 128(@patchConstantOutput.Edges): 127(ptr) Variable Output 131: TypePointer Output 6(float) 4(main): 2 Function None 3 5: Label 71(inputPatch): 13(ptr) Variable Function 86(uCPID): 14(ptr) Variable Function 90(flattenTemp): 56(ptr) Variable Function 91(param): 13(ptr) Variable Function 93(param): 14(ptr) Variable Function 116(@patchConstantResult): 33(ptr) Variable Function 120(param): 13(ptr) Variable Function 122(param): 14(ptr) Variable Function 124(param): 17(ptr) Variable Function 76: 75(ptr) AccessChain 74(inputPatch.f4Position) 36 77: 7(fvec4) Load 76 78: 59(ptr) AccessChain 71(inputPatch) 36 36 Store 78 77 83: 82(ptr) AccessChain 81(inputPatch.f3Color) 36 84: 8(fvec3) Load 83 85: 64(ptr) AccessChain 71(inputPatch) 36 40 Store 85 84 89: 10(int) Load 88(uCPID) Store 86(uCPID) 89 92: 12 Load 71(inputPatch) Store 91(param) 92 94: 10(int) Load 86(uCPID) Store 93(param) 94 95:27(HSOutput) FunctionCall 31(@main(struct-VSOutput-vf4-vf31[1];u1;) 91(param) 93(param) Store 90(flattenTemp) 95 98: 10(int) Load 88(uCPID) 99: 59(ptr) AccessChain 90(flattenTemp) 36 100: 7(fvec4) Load 99 102: 101(ptr) AccessChain 97(@entryPointOutput.Position) 98 Store 102 100 105: 10(int) Load 88(uCPID) 106: 64(ptr) AccessChain 90(flattenTemp) 40 107: 8(fvec3) Load 106 109: 108(ptr) AccessChain 104(@entryPointOutput.Color) 105 Store 109 107 ControlBarrier 15 18 110 111: 10(int) Load 88(uCPID) 113: 112(bool) IEqual 111 36 SelectionMerge 115 None BranchConditional 113 114 115 114: Label 121: 12 Load 71(inputPatch) Store 120(param) 121 123: 10(int) Load 117(BlockID) Store 122(param) 123 125:20(HS_CONSTANT_DATA_OUTPUT) FunctionCall 25(ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2];) 120(param) 122(param) 124(param) 126: 16 Load 124(param) Store 119(Inside) 126 Store 116(@patchConstantResult) 125 129: 38(ptr) AccessChain 116(@patchConstantResult) 36 36 130: 6(float) Load 129 132: 131(ptr) AccessChain 128(@patchConstantOutput.Edges) 36 Store 132 130 133: 38(ptr) AccessChain 116(@patchConstantResult) 36 40 134: 6(float) Load 133 135: 131(ptr) AccessChain 128(@patchConstantOutput.Edges) 40 Store 135 134 136: 38(ptr) AccessChain 116(@patchConstantResult) 36 43 137: 6(float) Load 136 138: 131(ptr) AccessChain 128(@patchConstantOutput.Edges) 43 Store 138 137 139: 38(ptr) AccessChain 116(@patchConstantResult) 36 46 140: 6(float) Load 139 141: 131(ptr) AccessChain 128(@patchConstantOutput.Edges) 46 Store 141 140 Branch 115 115: Label Return FunctionEnd 25(ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2];):20(HS_CONSTANT_DATA_OUTPUT) Function None 21 22(p): 13(ptr) FunctionParameter 23(BlockID): 14(ptr) FunctionParameter 24(Inside): 17(ptr) FunctionParameter 26: Label 34(Factors): 33(ptr) Variable Function 39: 38(ptr) AccessChain 34(Factors) 36 36 Store 39 37 42: 38(ptr) AccessChain 34(Factors) 36 40 Store 42 41 45: 38(ptr) AccessChain 34(Factors) 36 43 Store 45 44 48: 38(ptr) AccessChain 34(Factors) 36 46 Store 48 47 50: 38(ptr) AccessChain 24(Inside) 36 Store 50 49 52: 38(ptr) AccessChain 24(Inside) 40 Store 52 51 53:20(HS_CONSTANT_DATA_OUTPUT) Load 34(Factors) ReturnValue 53 FunctionEnd 31(@main(struct-VSOutput-vf4-vf31[1];u1;):27(HSOutput) Function None 28 29(inputPatch): 13(ptr) FunctionParameter 30(uCPID): 14(ptr) FunctionParameter 32: Label 57(Out): 56(ptr) Variable Function 58: 10(int) Load 30(uCPID) 60: 59(ptr) AccessChain 29(inputPatch) 58 36 61: 7(fvec4) Load 60 62: 59(ptr) AccessChain 57(Out) 36 Store 62 61 63: 10(int) Load 30(uCPID) 65: 64(ptr) AccessChain 29(inputPatch) 63 40 66: 8(fvec3) Load 65 67: 64(ptr) AccessChain 57(Out) 40 Store 67 66 68:27(HSOutput) Load 57(Out) ReturnValue 68 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out000066400000000000000000001124311506534232700235110ustar00rootroot00000000000000hlsl.hull.ctrlpt-1.tesc Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = cw 0:? Sequence 0:27 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:27 Function Parameters: 0:27 'i' ( in 3-element array of structure{ temp 3-component vector of float val}) 0:27 'cpid' ( in uint) 0:? Sequence 0:29 move second child to first child ( temp 3-component vector of float) 0:29 val: direct index for structure ( temp 3-component vector of float) 0:29 'o' ( temp structure{ temp 3-component vector of float val}) 0:29 Constant: 0:29 0 (const int) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 Convert uint to float ( temp float) 0:29 'cpid' ( in uint) 0:30 Branch: Return with expression 0:30 'o' ( temp structure{ temp 3-component vector of float val}) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 3-component vector of float) 0:27 val: direct index for structure ( temp 3-component vector of float) 0:27 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:27 Constant: 0:27 0 (const int) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 val: direct index for structure ( temp 3-component vector of float) 0:27 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:27 Constant: 0:27 1 (const int) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 val: direct index for structure ( temp 3-component vector of float) 0:27 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:27 Constant: 0:27 2 (const int) 0:27 move second child to first child ( temp uint) 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:27 Sequence 0:27 move second child to first child ( temp 3-component vector of float) 0:27 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:27 val: direct index for structure ( temp 3-component vector of float) 0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? 'cpid' ( temp uint) 0:27 Constant: 0:27 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'cpid' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 0 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 0 (const uint) 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 1 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 1 (const uint) 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 2 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 2 (const uint) 0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Function Call: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? flInFactor: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 1 (const int) 0:34 Function Definition: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:34 Function Parameters: 0:34 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 tfactor: direct index for structure ( temp 3-element array of float) 0:37 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp float) 0:37 val: direct index for structure ( temp 3-component vector of float) 0:37 direct index ( temp structure{ temp 3-component vector of float val}) 0:37 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:38 move second child to first child ( temp float) 0:38 direct index ( temp float) 0:38 tfactor: direct index for structure ( temp 3-element array of float) 0:38 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 direct index ( temp float) 0:38 val: direct index for structure ( temp 3-component vector of float) 0:38 direct index ( temp structure{ temp 3-component vector of float val}) 0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 tfactor: direct index for structure ( temp 3-element array of float) 0:39 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 2 (const int) 0:39 direct index ( temp float) 0:39 val: direct index for structure ( temp 3-component vector of float) 0:39 direct index ( temp structure{ temp 3-component vector of float val}) 0:39 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp float) 0:40 flInFactor: direct index for structure ( temp float) 0:40 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 4.000000 0:42 Branch: Return with expression 0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Linker Objects 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) Linked tessellation control stage: Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = cw 0:? Sequence 0:27 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:27 Function Parameters: 0:27 'i' ( in 3-element array of structure{ temp 3-component vector of float val}) 0:27 'cpid' ( in uint) 0:? Sequence 0:29 move second child to first child ( temp 3-component vector of float) 0:29 val: direct index for structure ( temp 3-component vector of float) 0:29 'o' ( temp structure{ temp 3-component vector of float val}) 0:29 Constant: 0:29 0 (const int) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 Convert uint to float ( temp float) 0:29 'cpid' ( in uint) 0:30 Branch: Return with expression 0:30 'o' ( temp structure{ temp 3-component vector of float val}) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 3-component vector of float) 0:27 val: direct index for structure ( temp 3-component vector of float) 0:27 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:27 Constant: 0:27 0 (const int) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 val: direct index for structure ( temp 3-component vector of float) 0:27 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:27 Constant: 0:27 1 (const int) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 val: direct index for structure ( temp 3-component vector of float) 0:27 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:27 Constant: 0:27 2 (const int) 0:27 move second child to first child ( temp uint) 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:27 Sequence 0:27 move second child to first child ( temp 3-component vector of float) 0:27 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:27 val: direct index for structure ( temp 3-component vector of float) 0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? 'cpid' ( temp uint) 0:27 Constant: 0:27 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'cpid' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 0 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 0 (const uint) 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 1 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 1 (const uint) 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 2 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 2 (const uint) 0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Function Call: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? flInFactor: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 1 (const int) 0:34 Function Definition: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:34 Function Parameters: 0:34 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:37 move second child to first child ( temp float) 0:37 direct index ( temp float) 0:37 tfactor: direct index for structure ( temp 3-element array of float) 0:37 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp float) 0:37 val: direct index for structure ( temp 3-component vector of float) 0:37 direct index ( temp structure{ temp 3-component vector of float val}) 0:37 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:38 move second child to first child ( temp float) 0:38 direct index ( temp float) 0:38 tfactor: direct index for structure ( temp 3-element array of float) 0:38 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 direct index ( temp float) 0:38 val: direct index for structure ( temp 3-component vector of float) 0:38 direct index ( temp structure{ temp 3-component vector of float val}) 0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 0 (const int) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 tfactor: direct index for structure ( temp 3-element array of float) 0:39 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 2 (const int) 0:39 direct index ( temp float) 0:39 val: direct index for structure ( temp 3-component vector of float) 0:39 direct index ( temp structure{ temp 3-component vector of float val}) 0:39 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 move second child to first child ( temp float) 0:40 flInFactor: direct index for structure ( temp float) 0:40 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 4.000000 0:42 Branch: Return with expression 0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Linker Objects 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 135 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 42 57 60 105 119 ExecutionMode 4 OutputVertices 3 ExecutionMode 4 Triangles ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 VertexOrderCw Source HLSL 500 Name 4 "main" Name 8 "hs_in_t" MemberName 8(hs_in_t) 0 "val" Name 14 "hs_out_t" MemberName 14(hs_out_t) 0 "val" Name 18 "@main(struct-hs_in_t-vf31[3];u1;" Name 16 "i" Name 17 "cpid" Name 22 "hs_pcf_t" MemberName 22(hs_pcf_t) 0 "tfactor" MemberName 22(hs_pcf_t) 1 "flInFactor" Name 25 "PCF(struct-hs_out_t-vf31[3];" Name 24 "pcf_out" Name 28 "o" Name 39 "i" Name 42 "i.val" Name 55 "cpid" Name 57 "cpid" Name 60 "@entryPointOutput.val" Name 62 "param" Name 64 "param" Name 79 "pcf_out" Name 80 "i" Name 81 "param" Name 83 "param" Name 86 "i" Name 88 "param" Name 90 "param" Name 93 "i" Name 94 "param" Name 96 "param" Name 100 "@patchConstantResult" Name 105 "@patchConstantOutput.tfactor" Name 119 "@patchConstantOutput.flInFactor" Name 123 "o" Decorate 42(i.val) Location 0 Decorate 57(cpid) BuiltIn InvocationId Decorate 60(@entryPointOutput.val) Location 0 Decorate 105(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter Decorate 105(@patchConstantOutput.tfactor) Patch Decorate 119(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner Decorate 119(@patchConstantOutput.flInFactor) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(hs_in_t): TypeStruct 7(fvec3) 9: TypeInt 32 0 10: 9(int) Constant 3 11: TypeArray 8(hs_in_t) 10 12: TypePointer Function 11 13: TypePointer Function 9(int) 14(hs_out_t): TypeStruct 7(fvec3) 15: TypeFunction 14(hs_out_t) 12(ptr) 13(ptr) 20: TypeArray 14(hs_out_t) 10 21: TypeArray 6(float) 10 22(hs_pcf_t): TypeStruct 21 6(float) 23: TypeFunction 22(hs_pcf_t) 20 27: TypePointer Function 14(hs_out_t) 29: TypeInt 32 1 30: 29(int) Constant 0 34: TypePointer Function 7(fvec3) 40: TypeArray 7(fvec3) 10 41: TypePointer Input 40 42(i.val): 41(ptr) Variable Input 43: TypePointer Input 7(fvec3) 47: 29(int) Constant 1 51: 29(int) Constant 2 56: TypePointer Input 9(int) 57(cpid): 56(ptr) Variable Input 59: TypePointer Output 40 60(@entryPointOutput.val): 59(ptr) Variable Output 68: TypePointer Output 7(fvec3) 70: 9(int) Constant 2 71: 9(int) Constant 4 72: 9(int) Constant 0 74: TypeBool 78: TypePointer Function 20 87: 9(int) Constant 1 99: TypePointer Function 22(hs_pcf_t) 103: TypeArray 6(float) 71 104: TypePointer Output 103 105(@patchConstantOutput.tfactor): 104(ptr) Variable Output 106: TypePointer Function 6(float) 109: TypePointer Output 6(float) 117: TypeArray 6(float) 70 118: TypePointer Output 117 119(@patchConstantOutput.flInFactor): 118(ptr) Variable Output 130: 6(float) Constant 1082130432 4(main): 2 Function None 3 5: Label 39(i): 12(ptr) Variable Function 55(cpid): 13(ptr) Variable Function 62(param): 12(ptr) Variable Function 64(param): 13(ptr) Variable Function 79(pcf_out): 78(ptr) Variable Function 80(i): 12(ptr) Variable Function 81(param): 12(ptr) Variable Function 83(param): 13(ptr) Variable Function 86(i): 12(ptr) Variable Function 88(param): 12(ptr) Variable Function 90(param): 13(ptr) Variable Function 93(i): 12(ptr) Variable Function 94(param): 12(ptr) Variable Function 96(param): 13(ptr) Variable Function 100(@patchConstantResult): 99(ptr) Variable Function 44: 43(ptr) AccessChain 42(i.val) 30 45: 7(fvec3) Load 44 46: 34(ptr) AccessChain 39(i) 30 30 Store 46 45 48: 43(ptr) AccessChain 42(i.val) 47 49: 7(fvec3) Load 48 50: 34(ptr) AccessChain 39(i) 47 30 Store 50 49 52: 43(ptr) AccessChain 42(i.val) 51 53: 7(fvec3) Load 52 54: 34(ptr) AccessChain 39(i) 51 30 Store 54 53 58: 9(int) Load 57(cpid) Store 55(cpid) 58 61: 9(int) Load 57(cpid) 63: 11 Load 39(i) Store 62(param) 63 65: 9(int) Load 55(cpid) Store 64(param) 65 66:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 62(param) 64(param) 67: 7(fvec3) CompositeExtract 66 0 69: 68(ptr) AccessChain 60(@entryPointOutput.val) 61 Store 69 67 ControlBarrier 70 71 72 73: 9(int) Load 57(cpid) 75: 74(bool) IEqual 73 30 SelectionMerge 77 None BranchConditional 75 76 77 76: Label 82: 11 Load 80(i) Store 81(param) 82 Store 83(param) 72 84:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 81(param) 83(param) 85: 27(ptr) AccessChain 79(pcf_out) 30 Store 85 84 89: 11 Load 86(i) Store 88(param) 89 Store 90(param) 87 91:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 88(param) 90(param) 92: 27(ptr) AccessChain 79(pcf_out) 47 Store 92 91 95: 11 Load 93(i) Store 94(param) 95 Store 96(param) 70 97:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 94(param) 96(param) 98: 27(ptr) AccessChain 79(pcf_out) 51 Store 98 97 101: 20 Load 79(pcf_out) 102:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 101 Store 100(@patchConstantResult) 102 107: 106(ptr) AccessChain 100(@patchConstantResult) 30 30 108: 6(float) Load 107 110: 109(ptr) AccessChain 105(@patchConstantOutput.tfactor) 30 Store 110 108 111: 106(ptr) AccessChain 100(@patchConstantResult) 30 47 112: 6(float) Load 111 113: 109(ptr) AccessChain 105(@patchConstantOutput.tfactor) 47 Store 113 112 114: 106(ptr) AccessChain 100(@patchConstantResult) 30 51 115: 6(float) Load 114 116: 109(ptr) AccessChain 105(@patchConstantOutput.tfactor) 51 Store 116 115 120: 106(ptr) AccessChain 100(@patchConstantResult) 47 121: 6(float) Load 120 122: 109(ptr) AccessChain 119(@patchConstantOutput.flInFactor) 30 Store 122 121 Branch 77 77: Label Return FunctionEnd 18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15 16(i): 12(ptr) FunctionParameter 17(cpid): 13(ptr) FunctionParameter 19: Label 28(o): 27(ptr) Variable Function 31: 9(int) Load 17(cpid) 32: 6(float) ConvertUToF 31 33: 7(fvec3) CompositeConstruct 32 32 32 35: 34(ptr) AccessChain 28(o) 30 Store 35 33 36:14(hs_out_t) Load 28(o) ReturnValue 36 FunctionEnd 25(PCF(struct-hs_out_t-vf31[3];):22(hs_pcf_t) Function None 23 24(pcf_out): 20 FunctionParameter 26: Label 123(o): 99(ptr) Variable Function 124: 6(float) CompositeExtract 24(pcf_out) 0 0 0 125: 106(ptr) AccessChain 123(o) 30 30 Store 125 124 126: 6(float) CompositeExtract 24(pcf_out) 1 0 0 127: 106(ptr) AccessChain 123(o) 30 47 Store 127 126 128: 6(float) CompositeExtract 24(pcf_out) 2 0 0 129: 106(ptr) AccessChain 123(o) 30 51 Store 129 128 131: 106(ptr) AccessChain 123(o) 47 Store 131 130 132:22(hs_pcf_t) Load 123(o) ReturnValue 132 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out000066400000000000000000001152601506534232700235150ustar00rootroot00000000000000hlsl.hull.ctrlpt-2.tesc Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = cw 0:? Sequence 0:28 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:28 Function Parameters: 0:28 'i' ( in 3-element array of structure{ temp 3-component vector of float val}) 0:28 'cpid' ( in uint) 0:? Sequence 0:29 val: direct index for structure ( temp 3-component vector of float) 0:29 direct index ( temp structure{ temp 3-component vector of float val}) 0:29 'i' ( in 3-element array of structure{ temp 3-component vector of float val}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:32 move second child to first child ( temp 3-component vector of float) 0:32 val: direct index for structure ( temp 3-component vector of float) 0:32 'o' ( temp structure{ temp 3-component vector of float val}) 0:32 Constant: 0:32 0 (const int) 0:32 Construct vec3 ( temp 3-component vector of float) 0:32 Convert uint to float ( temp float) 0:32 'cpid' ( in uint) 0:33 Branch: Return with expression 0:33 'o' ( temp structure{ temp 3-component vector of float val}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 val: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp 3-component vector of float) 0:28 val: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:28 move second child to first child ( temp 3-component vector of float) 0:28 val: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:28 Constant: 0:28 2 (const int) 0:28 move second child to first child ( temp uint) 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:28 Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:28 val: direct index for structure ( temp 3-component vector of float) 0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? 'cpid' ( temp uint) 0:28 Constant: 0:28 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'cpid' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 0 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 0 (const uint) 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 1 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 1 (const uint) 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 2 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 2 (const uint) 0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Function Call: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? flInFactor: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 1 (const int) 0:38 Function Definition: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:38 Function Parameters: 0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:38 'pcf_in' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:41 move second child to first child ( temp float) 0:41 direct index ( temp float) 0:41 tfactor: direct index for structure ( temp 3-element array of float) 0:41 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 direct index ( temp float) 0:41 val: direct index for structure ( temp 3-component vector of float) 0:41 direct index ( temp structure{ temp 3-component vector of float val}) 0:41 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0 (const int) 0:42 move second child to first child ( temp float) 0:42 direct index ( temp float) 0:42 tfactor: direct index for structure ( temp 3-element array of float) 0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 direct index ( temp float) 0:42 val: direct index for structure ( temp 3-component vector of float) 0:42 direct index ( temp structure{ temp 3-component vector of float val}) 0:42 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 tfactor: direct index for structure ( temp 3-element array of float) 0:43 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 direct index ( temp float) 0:43 val: direct index for structure ( temp 3-component vector of float) 0:43 direct index ( temp structure{ temp 3-component vector of float val}) 0:43 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:44 move second child to first child ( temp float) 0:44 flInFactor: direct index for structure ( temp float) 0:44 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 4.000000 0:46 Branch: Return with expression 0:46 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Linker Objects 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) Linked tessellation control stage: Shader version: 500 vertices = 3 vertex spacing = fractional_odd_spacing triangle order = cw 0:? Sequence 0:28 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:28 Function Parameters: 0:28 'i' ( in 3-element array of structure{ temp 3-component vector of float val}) 0:28 'cpid' ( in uint) 0:? Sequence 0:29 val: direct index for structure ( temp 3-component vector of float) 0:29 direct index ( temp structure{ temp 3-component vector of float val}) 0:29 'i' ( in 3-element array of structure{ temp 3-component vector of float val}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:32 move second child to first child ( temp 3-component vector of float) 0:32 val: direct index for structure ( temp 3-component vector of float) 0:32 'o' ( temp structure{ temp 3-component vector of float val}) 0:32 Constant: 0:32 0 (const int) 0:32 Construct vec3 ( temp 3-component vector of float) 0:32 Convert uint to float ( temp float) 0:32 'cpid' ( in uint) 0:33 Branch: Return with expression 0:33 'o' ( temp structure{ temp 3-component vector of float val}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 val: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp 3-component vector of float) 0:28 val: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:28 move second child to first child ( temp 3-component vector of float) 0:28 val: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 Constant: 0:28 2 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 direct index (layout( location=0) in 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:28 Constant: 0:28 2 (const int) 0:28 move second child to first child ( temp uint) 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:28 Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:28 val: direct index for structure ( temp 3-component vector of float) 0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? 'cpid' ( temp uint) 0:28 Constant: 0:28 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'cpid' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 0 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 0 (const uint) 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 1 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 1 (const uint) 0:? move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:? direct index ( temp structure{ temp 3-component vector of float val}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 2 (const int) 0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Constant: 0:? 2 (const uint) 0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Function Call: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 0 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 0 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 1 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 1 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? Constant: 0:? 2 (const int) 0:? direct index ( temp float) 0:? tfactor: direct index for structure ( temp 3-element array of float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 0 (const int) 0:? Constant: 0:? 2 (const int) 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelInner) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) 0:? Constant: 0:? 0 (const int) 0:? flInFactor: direct index for structure ( temp float) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Constant: 0:? 1 (const int) 0:38 Function Definition: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:38 Function Parameters: 0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:38 'pcf_in' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:41 move second child to first child ( temp float) 0:41 direct index ( temp float) 0:41 tfactor: direct index for structure ( temp 3-element array of float) 0:41 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 direct index ( temp float) 0:41 val: direct index for structure ( temp 3-component vector of float) 0:41 direct index ( temp structure{ temp 3-component vector of float val}) 0:41 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0 (const int) 0:42 move second child to first child ( temp float) 0:42 direct index ( temp float) 0:42 tfactor: direct index for structure ( temp 3-element array of float) 0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 direct index ( temp float) 0:42 val: direct index for structure ( temp 3-component vector of float) 0:42 direct index ( temp structure{ temp 3-component vector of float val}) 0:42 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 tfactor: direct index for structure ( temp 3-element array of float) 0:43 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 2 (const int) 0:43 direct index ( temp float) 0:43 val: direct index for structure ( temp 3-component vector of float) 0:43 direct index ( temp structure{ temp 3-component vector of float val}) 0:43 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val}) 0:43 Constant: 0:43 2 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:44 move second child to first child ( temp float) 0:44 flInFactor: direct index for structure ( temp float) 0:44 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 4.000000 0:46 Branch: Return with expression 0:46 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Linker Objects 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'cpid' ( in uint InvocationID) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 137 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 43 58 61 107 121 ExecutionMode 4 OutputVertices 3 ExecutionMode 4 Triangles ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 VertexOrderCw Source HLSL 500 Name 4 "main" Name 8 "hs_in_t" MemberName 8(hs_in_t) 0 "val" Name 14 "hs_out_t" MemberName 14(hs_out_t) 0 "val" Name 18 "@main(struct-hs_in_t-vf31[3];u1;" Name 16 "i" Name 17 "cpid" Name 22 "hs_pcf_t" MemberName 22(hs_pcf_t) 0 "tfactor" MemberName 22(hs_pcf_t) 1 "flInFactor" Name 26 "PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];" Name 24 "pcf_out" Name 25 "pcf_in" Name 31 "o" Name 40 "i" Name 43 "i.val" Name 56 "cpid" Name 58 "cpid" Name 61 "@entryPointOutput.val" Name 63 "param" Name 65 "param" Name 80 "pcf_out" Name 81 "i" Name 82 "param" Name 84 "param" Name 87 "i" Name 89 "param" Name 91 "param" Name 94 "i" Name 95 "param" Name 97 "param" Name 101 "@patchConstantResult" Name 107 "@patchConstantOutput.tfactor" Name 121 "@patchConstantOutput.flInFactor" Name 125 "o" Decorate 43(i.val) Location 0 Decorate 58(cpid) BuiltIn InvocationId Decorate 61(@entryPointOutput.val) Location 0 Decorate 107(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter Decorate 107(@patchConstantOutput.tfactor) Patch Decorate 121(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner Decorate 121(@patchConstantOutput.flInFactor) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(hs_in_t): TypeStruct 7(fvec3) 9: TypeInt 32 0 10: 9(int) Constant 3 11: TypeArray 8(hs_in_t) 10 12: TypePointer Function 11 13: TypePointer Function 9(int) 14(hs_out_t): TypeStruct 7(fvec3) 15: TypeFunction 14(hs_out_t) 12(ptr) 13(ptr) 20: TypeArray 14(hs_out_t) 10 21: TypeArray 6(float) 10 22(hs_pcf_t): TypeStruct 21 6(float) 23: TypeFunction 22(hs_pcf_t) 20 11 28: TypeInt 32 1 29: 28(int) Constant 0 30: TypePointer Function 14(hs_out_t) 35: TypePointer Function 7(fvec3) 41: TypeArray 7(fvec3) 10 42: TypePointer Input 41 43(i.val): 42(ptr) Variable Input 44: TypePointer Input 7(fvec3) 48: 28(int) Constant 1 52: 28(int) Constant 2 57: TypePointer Input 9(int) 58(cpid): 57(ptr) Variable Input 60: TypePointer Output 41 61(@entryPointOutput.val): 60(ptr) Variable Output 69: TypePointer Output 7(fvec3) 71: 9(int) Constant 2 72: 9(int) Constant 4 73: 9(int) Constant 0 75: TypeBool 79: TypePointer Function 20 88: 9(int) Constant 1 100: TypePointer Function 22(hs_pcf_t) 105: TypeArray 6(float) 72 106: TypePointer Output 105 107(@patchConstantOutput.tfactor): 106(ptr) Variable Output 108: TypePointer Function 6(float) 111: TypePointer Output 6(float) 119: TypeArray 6(float) 71 120: TypePointer Output 119 121(@patchConstantOutput.flInFactor): 120(ptr) Variable Output 132: 6(float) Constant 1082130432 4(main): 2 Function None 3 5: Label 40(i): 12(ptr) Variable Function 56(cpid): 13(ptr) Variable Function 63(param): 12(ptr) Variable Function 65(param): 13(ptr) Variable Function 80(pcf_out): 79(ptr) Variable Function 81(i): 12(ptr) Variable Function 82(param): 12(ptr) Variable Function 84(param): 13(ptr) Variable Function 87(i): 12(ptr) Variable Function 89(param): 12(ptr) Variable Function 91(param): 13(ptr) Variable Function 94(i): 12(ptr) Variable Function 95(param): 12(ptr) Variable Function 97(param): 13(ptr) Variable Function 101(@patchConstantResult): 100(ptr) Variable Function 45: 44(ptr) AccessChain 43(i.val) 29 46: 7(fvec3) Load 45 47: 35(ptr) AccessChain 40(i) 29 29 Store 47 46 49: 44(ptr) AccessChain 43(i.val) 48 50: 7(fvec3) Load 49 51: 35(ptr) AccessChain 40(i) 48 29 Store 51 50 53: 44(ptr) AccessChain 43(i.val) 52 54: 7(fvec3) Load 53 55: 35(ptr) AccessChain 40(i) 52 29 Store 55 54 59: 9(int) Load 58(cpid) Store 56(cpid) 59 62: 9(int) Load 58(cpid) 64: 11 Load 40(i) Store 63(param) 64 66: 9(int) Load 56(cpid) Store 65(param) 66 67:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 63(param) 65(param) 68: 7(fvec3) CompositeExtract 67 0 70: 69(ptr) AccessChain 61(@entryPointOutput.val) 62 Store 70 68 ControlBarrier 71 72 73 74: 9(int) Load 58(cpid) 76: 75(bool) IEqual 74 29 SelectionMerge 78 None BranchConditional 76 77 78 77: Label 83: 11 Load 81(i) Store 82(param) 83 Store 84(param) 73 85:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 82(param) 84(param) 86: 30(ptr) AccessChain 80(pcf_out) 29 Store 86 85 90: 11 Load 87(i) Store 89(param) 90 Store 91(param) 88 92:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 89(param) 91(param) 93: 30(ptr) AccessChain 80(pcf_out) 48 Store 93 92 96: 11 Load 94(i) Store 95(param) 96 Store 97(param) 71 98:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 95(param) 97(param) 99: 30(ptr) AccessChain 80(pcf_out) 52 Store 99 98 102: 20 Load 80(pcf_out) 103: 11 Load 40(i) 104:22(hs_pcf_t) FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 102 103 Store 101(@patchConstantResult) 104 109: 108(ptr) AccessChain 101(@patchConstantResult) 29 29 110: 6(float) Load 109 112: 111(ptr) AccessChain 107(@patchConstantOutput.tfactor) 29 Store 112 110 113: 108(ptr) AccessChain 101(@patchConstantResult) 29 48 114: 6(float) Load 113 115: 111(ptr) AccessChain 107(@patchConstantOutput.tfactor) 48 Store 115 114 116: 108(ptr) AccessChain 101(@patchConstantResult) 29 52 117: 6(float) Load 116 118: 111(ptr) AccessChain 107(@patchConstantOutput.tfactor) 52 Store 118 117 122: 108(ptr) AccessChain 101(@patchConstantResult) 48 123: 6(float) Load 122 124: 111(ptr) AccessChain 121(@patchConstantOutput.flInFactor) 29 Store 124 123 Branch 78 78: Label Return FunctionEnd 18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15 16(i): 12(ptr) FunctionParameter 17(cpid): 13(ptr) FunctionParameter 19: Label 31(o): 30(ptr) Variable Function 32: 9(int) Load 17(cpid) 33: 6(float) ConvertUToF 32 34: 7(fvec3) CompositeConstruct 33 33 33 36: 35(ptr) AccessChain 31(o) 29 Store 36 34 37:14(hs_out_t) Load 31(o) ReturnValue 37 FunctionEnd 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];):22(hs_pcf_t) Function None 23 24(pcf_out): 20 FunctionParameter 25(pcf_in): 11 FunctionParameter 27: Label 125(o): 100(ptr) Variable Function 126: 6(float) CompositeExtract 24(pcf_out) 0 0 0 127: 108(ptr) AccessChain 125(o) 29 29 Store 127 126 128: 6(float) CompositeExtract 24(pcf_out) 1 0 0 129: 108(ptr) AccessChain 125(o) 29 48 Store 129 128 130: 6(float) CompositeExtract 24(pcf_out) 2 0 0 131: 108(ptr) AccessChain 125(o) 29 52 Store 131 130 133: 108(ptr) AccessChain 125(o) 48 Store 133 132 134:22(hs_pcf_t) Load 125(o) ReturnValue 134 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.hull.void.tesc.out000066400000000000000000000353641506534232700230150ustar00rootroot00000000000000hlsl.hull.void.tesc Shader version: 500 vertices = 3 vertex spacing = fractional_even_spacing triangle order = ccw 0:? Sequence 0:26 Function Definition: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Parameters: 0:26 'ip' ( in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:28 'ip' ( in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 Branch: Return with expression 0:29 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Definition: main( ( temp void) 0:26 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'InvocationId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? Function Call: PCF( ( temp void) 0:33 Function Definition: PCF( ( temp void) 0:33 Function Parameters: 0:? Linker Objects 0:? '@entryPointOutput.cpoint' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) Linked tessellation control stage: Shader version: 500 vertices = 3 vertex spacing = fractional_even_spacing triangle order = ccw 0:? Sequence 0:26 Function Definition: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Parameters: 0:26 'ip' ( in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 cpoint: direct index for structure ( temp 3-component vector of float) 0:28 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:28 'ip' ( in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:29 Branch: Return with expression 0:29 'output' ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Function Definition: main( ( temp void) 0:26 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp 3-component vector of float) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 direct index (layout( location=0) in 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 indirect index (layout( location=0) out 3-component vector of float) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) 0:26 cpoint: direct index for structure ( temp 3-component vector of float) 0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant: 0:26 0 (const int) 0:? Barrier ( temp void) 0:? Test condition and select ( temp void) 0:? Condition 0:? Compare Equal ( temp bool) 0:? 'InvocationId' ( in uint InvocationID) 0:? Constant: 0:? 0 (const int) 0:? true case 0:? Sequence 0:? Function Call: PCF( ( temp void) 0:33 Function Definition: PCF( ( temp void) 0:33 Function Parameters: 0:? Linker Objects 0:? '@entryPointOutput.cpoint' (layout( location=0) out 3-element array of 3-component vector of float) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float) 0:? 'InvocationId' ( in uint InvocationID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 67 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 34 48 50 ExecutionMode 4 OutputVertices 3 ExecutionMode 4 Triangles ExecutionMode 4 SpacingFractionalEven ExecutionMode 4 VertexOrderCcw Source HLSL 500 Name 4 "main" Name 8 "VS_OUT" MemberName 8(VS_OUT) 0 "cpoint" Name 13 "HS_OUT" MemberName 13(HS_OUT) 0 "cpoint" Name 16 "@main(struct-VS_OUT-vf31[3];" Name 15 "ip" Name 18 "PCF(" Name 21 "output" Name 31 "ip" Name 34 "ip.cpoint" Name 48 "@entryPointOutput.cpoint" Name 50 "InvocationId" Name 52 "param" Decorate 34(ip.cpoint) Location 0 Decorate 48(@entryPointOutput.cpoint) Location 0 Decorate 50(InvocationId) BuiltIn InvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(VS_OUT): TypeStruct 7(fvec3) 9: TypeInt 32 0 10: 9(int) Constant 3 11: TypeArray 8(VS_OUT) 10 12: TypePointer Function 11 13(HS_OUT): TypeStruct 7(fvec3) 14: TypeFunction 13(HS_OUT) 12(ptr) 20: TypePointer Function 13(HS_OUT) 22: TypeInt 32 1 23: 22(int) Constant 0 24: TypePointer Function 7(fvec3) 32: TypeArray 7(fvec3) 10 33: TypePointer Input 32 34(ip.cpoint): 33(ptr) Variable Input 35: TypePointer Input 7(fvec3) 39: 22(int) Constant 1 43: 22(int) Constant 2 47: TypePointer Output 32 48(@entryPointOutput.cpoint): 47(ptr) Variable Output 49: TypePointer Input 9(int) 50(InvocationId): 49(ptr) Variable Input 56: TypePointer Output 7(fvec3) 58: 9(int) Constant 2 59: 9(int) Constant 4 60: 9(int) Constant 0 62: TypeBool 4(main): 2 Function None 3 5: Label 31(ip): 12(ptr) Variable Function 52(param): 12(ptr) Variable Function 36: 35(ptr) AccessChain 34(ip.cpoint) 23 37: 7(fvec3) Load 36 38: 24(ptr) AccessChain 31(ip) 23 23 Store 38 37 40: 35(ptr) AccessChain 34(ip.cpoint) 39 41: 7(fvec3) Load 40 42: 24(ptr) AccessChain 31(ip) 39 23 Store 42 41 44: 35(ptr) AccessChain 34(ip.cpoint) 43 45: 7(fvec3) Load 44 46: 24(ptr) AccessChain 31(ip) 43 23 Store 46 45 51: 9(int) Load 50(InvocationId) 53: 11 Load 31(ip) Store 52(param) 53 54: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[3];) 52(param) 55: 7(fvec3) CompositeExtract 54 0 57: 56(ptr) AccessChain 48(@entryPointOutput.cpoint) 51 Store 57 55 ControlBarrier 58 59 60 61: 9(int) Load 50(InvocationId) 63: 62(bool) IEqual 61 23 SelectionMerge 65 None BranchConditional 63 64 65 64: Label 66: 2 FunctionCall 18(PCF() Branch 65 65: Label Return FunctionEnd 16(@main(struct-VS_OUT-vf31[3];): 13(HS_OUT) Function None 14 15(ip): 12(ptr) FunctionParameter 17: Label 21(output): 20(ptr) Variable Function 25: 24(ptr) AccessChain 15(ip) 23 23 26: 7(fvec3) Load 25 27: 24(ptr) AccessChain 21(output) 23 Store 27 26 28: 13(HS_OUT) Load 21(output) ReturnValue 28 FunctionEnd 18(PCF(): 2 Function None 3 19: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.identifier.sample.frag.out000066400000000000000000000126111506534232700244620ustar00rootroot00000000000000hlsl.identifier.sample.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: sample(i1; ( temp int) 0:9 Function Parameters: 0:9 'x' ( in int) 0:? Sequence 0:9 Branch: Return with expression 0:9 'x' ( in int) 0:12 Function Definition: @main( ( temp 4-component vector of float) 0:12 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'sample' ( temp 4-component vector of float) 0:15 Constant: 0:15 3.000000 0:15 4.000000 0:15 5.000000 0:15 6.000000 0:17 Branch: Return with expression 0:17 vector swizzle ( temp 4-component vector of float) 0:17 'sample' ( temp 4-component vector of float) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 3 (const int) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: sample(i1; ( temp int) 0:9 Function Parameters: 0:9 'x' ( in int) 0:? Sequence 0:9 Branch: Return with expression 0:9 'x' ( in int) 0:12 Function Definition: @main( ( temp 4-component vector of float) 0:12 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'sample' ( temp 4-component vector of float) 0:15 Constant: 0:15 3.000000 0:15 4.000000 0:15 5.000000 0:15 6.000000 0:17 Branch: Return with expression 0:17 vector swizzle ( temp 4-component vector of float) 0:17 'sample' ( temp 4-component vector of float) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 3 (const int) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (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 Fragment 4 "main" 31 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 10 "sample(i1;" Name 9 "x" Name 15 "@main(" Name 21 "sample" Name 31 "@entryPointOutput" Decorate 31(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFunction 6(int) 7(ptr) 12: TypeFloat 32 13: TypeVector 12(float) 4 14: TypeFunction 13(fvec4) 20: TypePointer Function 13(fvec4) 22: 12(float) Constant 1077936128 23: 12(float) Constant 1082130432 24: 12(float) Constant 1084227584 25: 12(float) Constant 1086324736 26: 13(fvec4) ConstantComposite 22 23 24 25 30: TypePointer Output 13(fvec4) 31(@entryPointOutput): 30(ptr) Variable Output 4(main): 2 Function None 3 5: Label 32: 13(fvec4) FunctionCall 15(@main() Store 31(@entryPointOutput) 32 Return FunctionEnd 10(sample(i1;): 6(int) Function None 8 9(x): 7(ptr) FunctionParameter 11: Label 17: 6(int) Load 9(x) ReturnValue 17 FunctionEnd 15(@main(): 13(fvec4) Function None 14 16: Label 21(sample): 20(ptr) Variable Function Store 21(sample) 26 27: 13(fvec4) Load 21(sample) ReturnValue 27 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.if.frag.out000066400000000000000000000441411506534232700214610ustar00rootroot00000000000000hlsl.if.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: f0(vf4; ( temp 4-component vector of float) 0:1 Function Parameters: 0:1 'input' ( in 4-component vector of float) 0:? Sequence 0:2 Test condition and select ( temp void) 0:2 Condition 0:2 all ( temp bool) 0:2 Equal ( temp 4-component vector of bool) 0:2 'input' ( in 4-component vector of float) 0:2 'input' ( in 4-component vector of float) 0:2 true case 0:3 Branch: Return with expression 0:3 'input' ( in 4-component vector of float) 0:2 false case 0:5 Branch: Return with expression 0:5 Negate value ( temp 4-component vector of float) 0:5 'input' ( in 4-component vector of float) 0:8 Function Definition: f1(vf4; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'input' ( in 4-component vector of float) 0:? Sequence 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 all ( temp bool) 0:9 Equal ( temp 4-component vector of bool) 0:9 'input' ( in 4-component vector of float) 0:9 'input' ( in 4-component vector of float) 0:9 true case 0:? Sequence 0:10 Branch: Return with expression 0:10 'input' ( in 4-component vector of float) 0:9 false case 0:? Sequence 0:12 Branch: Return with expression 0:12 Negate value ( temp 4-component vector of float) 0:12 'input' ( in 4-component vector of float) 0:17 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:17 Function Parameters: 0:17 'input' ( in 4-component vector of float) 0:? Sequence 0:18 Test condition and select ( temp void) 0:18 Condition 0:18 all ( temp bool) 0:18 Equal ( temp 4-component vector of bool) 0:18 'input' ( in 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 true case 0:19 Branch: Return with expression 0:19 'input' ( in 4-component vector of float) 0:21 Function Call: f0(vf4; ( temp 4-component vector of float) 0:21 'input' ( in 4-component vector of float) 0:23 Test condition and select ( temp void) 0:23 Condition 0:23 all ( temp bool) 0:23 Equal ( temp 4-component vector of bool) 0:23 'input' ( in 4-component vector of float) 0:23 'input' ( in 4-component vector of float) 0:23 true case is null 0:26 Test condition and select ( temp void) 0:26 Condition 0:26 all ( temp bool) 0:26 Equal ( temp 4-component vector of bool) 0:26 'input' ( in 4-component vector of float) 0:26 'input' ( in 4-component vector of float) 0:26 true case is null 0:31 Test condition and select ( temp void): Flatten 0:31 Condition 0:31 all ( temp bool) 0:31 Equal ( temp 4-component vector of bool) 0:31 'input' ( in 4-component vector of float) 0:31 'input' ( in 4-component vector of float) 0:31 true case 0:? Sequence 0:32 Branch: Return with expression 0:32 'input' ( in 4-component vector of float) 0:35 Function Call: f1(vf4; ( temp 4-component vector of float) 0:35 'input' ( in 4-component vector of float) 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Convert float to bool ( temp bool) 0:38 move second child to first child ( temp float) 0:38 'ii' ( temp float) 0:38 direct index ( temp float) 0:38 'input' ( in 4-component vector of float) 0:38 Constant: 0:38 2 (const int) 0:38 true case 0:39 Pre-Increment ( temp float) 0:39 'ii' ( temp float) 0:40 Pre-Increment ( temp int) 0:40 'ii' ( temp int) 0:41 Test condition and select ( temp void) 0:41 Condition 0:41 Compare Equal ( temp bool) 0:41 Convert int to float ( temp float) 0:41 'ii' ( temp int) 0:41 Constant: 0:41 1.000000 0:41 true case 0:42 Pre-Increment ( temp int) 0:42 'ii' ( temp int) 0:17 Function Definition: PixelShaderFunction( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:17 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:17 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: f0(vf4; ( temp 4-component vector of float) 0:1 Function Parameters: 0:1 'input' ( in 4-component vector of float) 0:? Sequence 0:2 Test condition and select ( temp void) 0:2 Condition 0:2 all ( temp bool) 0:2 Equal ( temp 4-component vector of bool) 0:2 'input' ( in 4-component vector of float) 0:2 'input' ( in 4-component vector of float) 0:2 true case 0:3 Branch: Return with expression 0:3 'input' ( in 4-component vector of float) 0:2 false case 0:5 Branch: Return with expression 0:5 Negate value ( temp 4-component vector of float) 0:5 'input' ( in 4-component vector of float) 0:8 Function Definition: f1(vf4; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'input' ( in 4-component vector of float) 0:? Sequence 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 all ( temp bool) 0:9 Equal ( temp 4-component vector of bool) 0:9 'input' ( in 4-component vector of float) 0:9 'input' ( in 4-component vector of float) 0:9 true case 0:? Sequence 0:10 Branch: Return with expression 0:10 'input' ( in 4-component vector of float) 0:9 false case 0:? Sequence 0:12 Branch: Return with expression 0:12 Negate value ( temp 4-component vector of float) 0:12 'input' ( in 4-component vector of float) 0:17 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:17 Function Parameters: 0:17 'input' ( in 4-component vector of float) 0:? Sequence 0:18 Test condition and select ( temp void) 0:18 Condition 0:18 all ( temp bool) 0:18 Equal ( temp 4-component vector of bool) 0:18 'input' ( in 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 true case 0:19 Branch: Return with expression 0:19 'input' ( in 4-component vector of float) 0:21 Function Call: f0(vf4; ( temp 4-component vector of float) 0:21 'input' ( in 4-component vector of float) 0:23 Test condition and select ( temp void) 0:23 Condition 0:23 all ( temp bool) 0:23 Equal ( temp 4-component vector of bool) 0:23 'input' ( in 4-component vector of float) 0:23 'input' ( in 4-component vector of float) 0:23 true case is null 0:26 Test condition and select ( temp void) 0:26 Condition 0:26 all ( temp bool) 0:26 Equal ( temp 4-component vector of bool) 0:26 'input' ( in 4-component vector of float) 0:26 'input' ( in 4-component vector of float) 0:26 true case is null 0:31 Test condition and select ( temp void): Flatten 0:31 Condition 0:31 all ( temp bool) 0:31 Equal ( temp 4-component vector of bool) 0:31 'input' ( in 4-component vector of float) 0:31 'input' ( in 4-component vector of float) 0:31 true case 0:? Sequence 0:32 Branch: Return with expression 0:32 'input' ( in 4-component vector of float) 0:35 Function Call: f1(vf4; ( temp 4-component vector of float) 0:35 'input' ( in 4-component vector of float) 0:38 Test condition and select ( temp void) 0:38 Condition 0:38 Convert float to bool ( temp bool) 0:38 move second child to first child ( temp float) 0:38 'ii' ( temp float) 0:38 direct index ( temp float) 0:38 'input' ( in 4-component vector of float) 0:38 Constant: 0:38 2 (const int) 0:38 true case 0:39 Pre-Increment ( temp float) 0:39 'ii' ( temp float) 0:40 Pre-Increment ( temp int) 0:40 'ii' ( temp int) 0:41 Test condition and select ( temp void) 0:41 Condition 0:41 Compare Equal ( temp bool) 0:41 Convert int to float ( temp float) 0:41 'ii' ( temp int) 0:41 Constant: 0:41 1.000000 0:41 true case 0:42 Pre-Increment ( temp int) 0:42 'ii' ( temp int) 0:17 Function Definition: PixelShaderFunction( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:17 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:17 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 117 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 110 113 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "f0(vf4;" Name 10 "input" Name 14 "f1(vf4;" Name 13 "input" Name 17 "@PixelShaderFunction(vf4;" Name 16 "input" Name 55 "param" Name 78 "param" Name 82 "ii" Name 96 "ii" Name 108 "input" Name 110 "input" Name 113 "@entryPointOutput" Name 114 "param" Decorate 110(input) Location 0 Decorate 113(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) 21: TypeBool 22: TypeVector 21(bool) 4 81: TypePointer Function 6(float) 83: TypeInt 32 0 84: 83(int) Constant 2 87: 6(float) Constant 0 92: 6(float) Constant 1065353216 94: TypeInt 32 1 95: TypePointer Function 94(int) 98: 94(int) Constant 1 109: TypePointer Input 7(fvec4) 110(input): 109(ptr) Variable Input 112: TypePointer Output 7(fvec4) 113(@entryPointOutput): 112(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 108(input): 8(ptr) Variable Function 114(param): 8(ptr) Variable Function 111: 7(fvec4) Load 110(input) Store 108(input) 111 115: 7(fvec4) Load 108(input) Store 114(param) 115 116: 7(fvec4) FunctionCall 17(@PixelShaderFunction(vf4;) 114(param) Store 113(@entryPointOutput) 116 Return FunctionEnd 11(f0(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 19: 7(fvec4) Load 10(input) 20: 7(fvec4) Load 10(input) 23: 22(bvec4) FOrdEqual 19 20 24: 21(bool) All 23 SelectionMerge 26 None BranchConditional 24 25 29 25: Label 27: 7(fvec4) Load 10(input) ReturnValue 27 29: Label 30: 7(fvec4) Load 10(input) 31: 7(fvec4) FNegate 30 ReturnValue 31 26: Label Unreachable FunctionEnd 14(f1(vf4;): 7(fvec4) Function None 9 13(input): 8(ptr) FunctionParameter 15: Label 34: 7(fvec4) Load 13(input) 35: 7(fvec4) Load 13(input) 36: 22(bvec4) FOrdEqual 34 35 37: 21(bool) All 36 SelectionMerge 39 None BranchConditional 37 38 42 38: Label 40: 7(fvec4) Load 13(input) ReturnValue 40 42: Label 43: 7(fvec4) Load 13(input) 44: 7(fvec4) FNegate 43 ReturnValue 44 39: Label Unreachable FunctionEnd 17(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9 16(input): 8(ptr) FunctionParameter 18: Label 55(param): 8(ptr) Variable Function 78(param): 8(ptr) Variable Function 82(ii): 81(ptr) Variable Function 96(ii): 95(ptr) Variable Function 47: 7(fvec4) Load 16(input) 48: 7(fvec4) Load 16(input) 49: 22(bvec4) FOrdEqual 47 48 50: 21(bool) All 49 SelectionMerge 52 None BranchConditional 50 51 52 51: Label 53: 7(fvec4) Load 16(input) ReturnValue 53 52: Label 56: 7(fvec4) Load 16(input) Store 55(param) 56 57: 7(fvec4) FunctionCall 11(f0(vf4;) 55(param) 58: 7(fvec4) Load 16(input) 59: 7(fvec4) Load 16(input) 60: 22(bvec4) FOrdEqual 58 59 61: 21(bool) All 60 SelectionMerge 63 None BranchConditional 61 62 63 62: Label Branch 63 63: Label 64: 7(fvec4) Load 16(input) 65: 7(fvec4) Load 16(input) 66: 22(bvec4) FOrdEqual 64 65 67: 21(bool) All 66 SelectionMerge 69 None BranchConditional 67 68 69 68: Label Branch 69 69: Label 70: 7(fvec4) Load 16(input) 71: 7(fvec4) Load 16(input) 72: 22(bvec4) FOrdEqual 70 71 73: 21(bool) All 72 SelectionMerge 75 Flatten BranchConditional 73 74 75 74: Label 76: 7(fvec4) Load 16(input) ReturnValue 76 75: Label 79: 7(fvec4) Load 16(input) Store 78(param) 79 80: 7(fvec4) FunctionCall 14(f1(vf4;) 78(param) 85: 81(ptr) AccessChain 16(input) 84 86: 6(float) Load 85 Store 82(ii) 86 88: 21(bool) FUnordNotEqual 86 87 SelectionMerge 90 None BranchConditional 88 89 90 89: Label 91: 6(float) Load 82(ii) 93: 6(float) FAdd 91 92 Store 82(ii) 93 Branch 90 90: Label 97: 94(int) Load 96(ii) 99: 94(int) IAdd 97 98 Store 96(ii) 99 100: 94(int) Load 96(ii) 101: 6(float) ConvertSToF 100 102: 21(bool) FOrdEqual 101 92 SelectionMerge 104 None BranchConditional 102 103 104 103: Label 105: 94(int) Load 96(ii) 106: 94(int) IAdd 105 98 Store 96(ii) 106 Branch 104 104: Label 107: 7(fvec4) Undef ReturnValue 107 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.imagefetch-subvec4.comp.out000066400000000000000000000755741506534232700245650ustar00rootroot00000000000000hlsl.imagefetch-subvec4.comp Shader version: 500 local_size = (8, 8, 8) 0:? Sequence 0:21 Function Definition: @main(vu3; ( temp void) 0:21 Function Parameters: 0:21 'tid' ( in 3-component vector of uint) 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'f' ( temp float) 0:22 Constant: 0:22 0.000000 0:23 add second child into first child ( temp float) 0:23 'f' ( temp float) 0:23 textureFetch ( temp float) 0:23 'i1D' (layout( binding=0) uniform texture1D) 0:23 direct index ( temp uint) 0:23 'tid' ( in 3-component vector of uint) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 add second child into first child ( temp float) 0:24 'f' ( temp float) 0:24 textureFetch ( temp float) 0:24 'i2D' (layout( binding=1) uniform texture2D) 0:24 vector swizzle ( temp 2-component vector of uint) 0:24 'tid' ( in 3-component vector of uint) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:25 add second child into first child ( temp float) 0:25 'f' ( temp float) 0:25 textureFetch ( temp float) 0:25 'i3D' (layout( binding=2) uniform texture3D) 0:25 'tid' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:26 add second child into first child ( temp float) 0:26 'f' ( temp float) 0:26 textureFetch ( temp float) 0:26 'i1DArray' (layout( binding=3) uniform texture1DArray) 0:26 vector swizzle ( temp 2-component vector of uint) 0:26 'tid' ( in 3-component vector of uint) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:27 add second child into first child ( temp float) 0:27 'f' ( temp float) 0:27 textureFetch ( temp float) 0:27 'i2DArray' (layout( binding=4) uniform texture2DArray) 0:27 'tid' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:28 add second child into first child ( temp float) 0:28 'f' ( temp float) 0:28 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:28 'i2DMS' (layout( binding=5) uniform texture2DMS) 0:28 Convert uint to int ( temp 2-component vector of int) 0:28 vector swizzle ( temp 2-component vector of uint) 0:28 'tid' ( in 3-component vector of uint) 0:28 Sequence 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 1 (const int) 0:29 add second child into first child ( temp float) 0:29 'f' ( temp float) 0:29 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:29 'i2DMSArray' (layout( binding=6) uniform texture2DMSArray) 0:29 Convert uint to int ( temp 3-component vector of int) 0:29 'tid' ( in 3-component vector of uint) 0:29 Constant: 0:29 3 (const int) 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'i' ( temp int) 0:31 Constant: 0:31 0 (const int) 0:32 add second child into first child ( temp int) 0:32 'i' ( temp int) 0:32 textureFetch ( temp int) 0:32 'ii1D' (layout( binding=7) uniform itexture1D) 0:32 direct index ( temp uint) 0:32 'tid' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 add second child into first child ( temp int) 0:33 'i' ( temp int) 0:33 textureFetch ( temp int) 0:33 'ii2D' (layout( binding=8) uniform itexture2D) 0:33 vector swizzle ( temp 2-component vector of uint) 0:33 'tid' ( in 3-component vector of uint) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 add second child into first child ( temp int) 0:34 'i' ( temp int) 0:34 textureFetch ( temp int) 0:34 'ii3D' (layout( binding=9) uniform itexture3D) 0:34 'tid' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:35 add second child into first child ( temp int) 0:35 'i' ( temp int) 0:35 textureFetch ( temp int) 0:35 'ii1DArray' (layout( binding=10) uniform itexture1DArray) 0:35 vector swizzle ( temp 2-component vector of uint) 0:35 'tid' ( in 3-component vector of uint) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 add second child into first child ( temp int) 0:36 'i' ( temp int) 0:36 textureFetch ( temp int) 0:36 'ii2DArray' (layout( binding=11) uniform itexture2DArray) 0:36 'tid' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:37 add second child into first child ( temp int) 0:37 'i' ( temp int) 0:37 Construct int ( temp int) 0:? textureFetch ( temp 4-component vector of int) 0:37 'ii2DMS' (layout( binding=12) uniform itexture2DMS) 0:37 Convert uint to int ( temp 2-component vector of int) 0:37 vector swizzle ( temp 2-component vector of uint) 0:37 'tid' ( in 3-component vector of uint) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 1 (const int) 0:38 add second child into first child ( temp int) 0:38 'i' ( temp int) 0:38 Construct int ( temp int) 0:? textureFetch ( temp 4-component vector of int) 0:38 'ii2DMSArray' (layout( binding=13) uniform itexture2DMSArray) 0:38 Convert uint to int ( temp 3-component vector of int) 0:38 'tid' ( in 3-component vector of uint) 0:38 Constant: 0:38 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'storeTemp' ( temp float) 0:40 add ( temp float) 0:40 'f' ( temp float) 0:40 Convert int to float ( temp float) 0:40 'i' ( temp int) 0:40 imageStore ( temp void) 0:40 'OUT' (layout( binding=0 r32f) uniform image3D) 0:40 'tid' ( in 3-component vector of uint) 0:40 'storeTemp' ( temp float) 0:40 'storeTemp' ( temp float) 0:21 Function Definition: main( ( temp void) 0:21 Function Parameters: 0:? Sequence 0:21 move second child to first child ( temp 3-component vector of uint) 0:? 'tid' ( temp 3-component vector of uint) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) 0:21 Function Call: @main(vu3; ( temp void) 0:? 'tid' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'i1D' (layout( binding=0) uniform texture1D) 0:? 'i2D' (layout( binding=1) uniform texture2D) 0:? 'i3D' (layout( binding=2) uniform texture3D) 0:? 'i1DArray' (layout( binding=3) uniform texture1DArray) 0:? 'i2DArray' (layout( binding=4) uniform texture2DArray) 0:? 'i2DMS' (layout( binding=5) uniform texture2DMS) 0:? 'i2DMSArray' (layout( binding=6) uniform texture2DMSArray) 0:? 'ii1D' (layout( binding=7) uniform itexture1D) 0:? 'ii2D' (layout( binding=8) uniform itexture2D) 0:? 'ii3D' (layout( binding=9) uniform itexture3D) 0:? 'ii1DArray' (layout( binding=10) uniform itexture1DArray) 0:? 'ii2DArray' (layout( binding=11) uniform itexture2DArray) 0:? 'ii2DMS' (layout( binding=12) uniform itexture2DMS) 0:? 'ii2DMSArray' (layout( binding=13) uniform itexture2DMSArray) 0:? 'OUT' (layout( binding=0 r32f) uniform image3D) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (8, 8, 8) 0:? Sequence 0:21 Function Definition: @main(vu3; ( temp void) 0:21 Function Parameters: 0:21 'tid' ( in 3-component vector of uint) 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'f' ( temp float) 0:22 Constant: 0:22 0.000000 0:23 add second child into first child ( temp float) 0:23 'f' ( temp float) 0:23 textureFetch ( temp float) 0:23 'i1D' (layout( binding=0) uniform texture1D) 0:23 direct index ( temp uint) 0:23 'tid' ( in 3-component vector of uint) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:24 add second child into first child ( temp float) 0:24 'f' ( temp float) 0:24 textureFetch ( temp float) 0:24 'i2D' (layout( binding=1) uniform texture2D) 0:24 vector swizzle ( temp 2-component vector of uint) 0:24 'tid' ( in 3-component vector of uint) 0:24 Sequence 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:25 add second child into first child ( temp float) 0:25 'f' ( temp float) 0:25 textureFetch ( temp float) 0:25 'i3D' (layout( binding=2) uniform texture3D) 0:25 'tid' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:26 add second child into first child ( temp float) 0:26 'f' ( temp float) 0:26 textureFetch ( temp float) 0:26 'i1DArray' (layout( binding=3) uniform texture1DArray) 0:26 vector swizzle ( temp 2-component vector of uint) 0:26 'tid' ( in 3-component vector of uint) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:27 add second child into first child ( temp float) 0:27 'f' ( temp float) 0:27 textureFetch ( temp float) 0:27 'i2DArray' (layout( binding=4) uniform texture2DArray) 0:27 'tid' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:28 add second child into first child ( temp float) 0:28 'f' ( temp float) 0:28 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:28 'i2DMS' (layout( binding=5) uniform texture2DMS) 0:28 Convert uint to int ( temp 2-component vector of int) 0:28 vector swizzle ( temp 2-component vector of uint) 0:28 'tid' ( in 3-component vector of uint) 0:28 Sequence 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 1 (const int) 0:29 add second child into first child ( temp float) 0:29 'f' ( temp float) 0:29 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:29 'i2DMSArray' (layout( binding=6) uniform texture2DMSArray) 0:29 Convert uint to int ( temp 3-component vector of int) 0:29 'tid' ( in 3-component vector of uint) 0:29 Constant: 0:29 3 (const int) 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'i' ( temp int) 0:31 Constant: 0:31 0 (const int) 0:32 add second child into first child ( temp int) 0:32 'i' ( temp int) 0:32 textureFetch ( temp int) 0:32 'ii1D' (layout( binding=7) uniform itexture1D) 0:32 direct index ( temp uint) 0:32 'tid' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:33 add second child into first child ( temp int) 0:33 'i' ( temp int) 0:33 textureFetch ( temp int) 0:33 'ii2D' (layout( binding=8) uniform itexture2D) 0:33 vector swizzle ( temp 2-component vector of uint) 0:33 'tid' ( in 3-component vector of uint) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 add second child into first child ( temp int) 0:34 'i' ( temp int) 0:34 textureFetch ( temp int) 0:34 'ii3D' (layout( binding=9) uniform itexture3D) 0:34 'tid' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:35 add second child into first child ( temp int) 0:35 'i' ( temp int) 0:35 textureFetch ( temp int) 0:35 'ii1DArray' (layout( binding=10) uniform itexture1DArray) 0:35 vector swizzle ( temp 2-component vector of uint) 0:35 'tid' ( in 3-component vector of uint) 0:35 Sequence 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 add second child into first child ( temp int) 0:36 'i' ( temp int) 0:36 textureFetch ( temp int) 0:36 'ii2DArray' (layout( binding=11) uniform itexture2DArray) 0:36 'tid' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:37 add second child into first child ( temp int) 0:37 'i' ( temp int) 0:37 Construct int ( temp int) 0:? textureFetch ( temp 4-component vector of int) 0:37 'ii2DMS' (layout( binding=12) uniform itexture2DMS) 0:37 Convert uint to int ( temp 2-component vector of int) 0:37 vector swizzle ( temp 2-component vector of uint) 0:37 'tid' ( in 3-component vector of uint) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 1 (const int) 0:38 add second child into first child ( temp int) 0:38 'i' ( temp int) 0:38 Construct int ( temp int) 0:? textureFetch ( temp 4-component vector of int) 0:38 'ii2DMSArray' (layout( binding=13) uniform itexture2DMSArray) 0:38 Convert uint to int ( temp 3-component vector of int) 0:38 'tid' ( in 3-component vector of uint) 0:38 Constant: 0:38 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'storeTemp' ( temp float) 0:40 add ( temp float) 0:40 'f' ( temp float) 0:40 Convert int to float ( temp float) 0:40 'i' ( temp int) 0:40 imageStore ( temp void) 0:40 'OUT' (layout( binding=0 r32f) uniform image3D) 0:40 'tid' ( in 3-component vector of uint) 0:40 'storeTemp' ( temp float) 0:40 'storeTemp' ( temp float) 0:21 Function Definition: main( ( temp void) 0:21 Function Parameters: 0:? Sequence 0:21 move second child to first child ( temp 3-component vector of uint) 0:? 'tid' ( temp 3-component vector of uint) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) 0:21 Function Call: @main(vu3; ( temp void) 0:? 'tid' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'i1D' (layout( binding=0) uniform texture1D) 0:? 'i2D' (layout( binding=1) uniform texture2D) 0:? 'i3D' (layout( binding=2) uniform texture3D) 0:? 'i1DArray' (layout( binding=3) uniform texture1DArray) 0:? 'i2DArray' (layout( binding=4) uniform texture2DArray) 0:? 'i2DMS' (layout( binding=5) uniform texture2DMS) 0:? 'i2DMSArray' (layout( binding=6) uniform texture2DMSArray) 0:? 'ii1D' (layout( binding=7) uniform itexture1D) 0:? 'ii2D' (layout( binding=8) uniform itexture2D) 0:? 'ii3D' (layout( binding=9) uniform itexture3D) 0:? 'ii1DArray' (layout( binding=10) uniform itexture1DArray) 0:? 'ii2DArray' (layout( binding=11) uniform itexture2DArray) 0:? 'ii2DMS' (layout( binding=12) uniform itexture2DMS) 0:? 'ii2DMSArray' (layout( binding=13) uniform itexture2DMSArray) 0:? 'OUT' (layout( binding=0 r32f) uniform image3D) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 186 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 181 ExecutionMode 4 LocalSize 8 8 8 Source HLSL 500 Name 4 "main" Name 11 "@main(vu3;" Name 10 "tid" Name 15 "f" Name 19 "i1D" Name 34 "i2D" Name 45 "i3D" Name 54 "i1DArray" Name 64 "i2DArray" Name 73 "i2DMS" Name 86 "i2DMSArray" Name 97 "i" Name 100 "ii1D" Name 111 "ii2D" Name 121 "ii3D" Name 130 "ii1DArray" Name 140 "ii2DArray" Name 149 "ii2DMS" Name 160 "ii2DMSArray" Name 168 "storeTemp" Name 175 "OUT" Name 179 "tid" Name 181 "tid" Name 183 "param" Decorate 19(i1D) Binding 0 Decorate 19(i1D) DescriptorSet 0 Decorate 34(i2D) Binding 1 Decorate 34(i2D) DescriptorSet 0 Decorate 45(i3D) Binding 2 Decorate 45(i3D) DescriptorSet 0 Decorate 54(i1DArray) Binding 3 Decorate 54(i1DArray) DescriptorSet 0 Decorate 64(i2DArray) Binding 4 Decorate 64(i2DArray) DescriptorSet 0 Decorate 73(i2DMS) Binding 5 Decorate 73(i2DMS) DescriptorSet 0 Decorate 86(i2DMSArray) Binding 6 Decorate 86(i2DMSArray) DescriptorSet 0 Decorate 100(ii1D) Binding 7 Decorate 100(ii1D) DescriptorSet 0 Decorate 111(ii2D) Binding 8 Decorate 111(ii2D) DescriptorSet 0 Decorate 121(ii3D) Binding 9 Decorate 121(ii3D) DescriptorSet 0 Decorate 130(ii1DArray) Binding 10 Decorate 130(ii1DArray) DescriptorSet 0 Decorate 140(ii2DArray) Binding 11 Decorate 140(ii2DArray) DescriptorSet 0 Decorate 149(ii2DMS) Binding 12 Decorate 149(ii2DMS) DescriptorSet 0 Decorate 160(ii2DMSArray) Binding 13 Decorate 160(ii2DMSArray) DescriptorSet 0 Decorate 175(OUT) Binding 0 Decorate 175(OUT) DescriptorSet 0 Decorate 181(tid) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeFloat 32 14: TypePointer Function 13(float) 16: 13(float) Constant 0 17: TypeImage 13(float) 1D sampled format:Unknown 18: TypePointer UniformConstant 17 19(i1D): 18(ptr) Variable UniformConstant 21: 6(int) Constant 0 22: TypePointer Function 6(int) 25: TypeInt 32 1 26: 25(int) Constant 0 27: TypeVector 13(float) 4 32: TypeImage 13(float) 2D sampled format:Unknown 33: TypePointer UniformConstant 32 34(i2D): 33(ptr) Variable UniformConstant 36: TypeVector 6(int) 2 43: TypeImage 13(float) 3D sampled format:Unknown 44: TypePointer UniformConstant 43 45(i3D): 44(ptr) Variable UniformConstant 52: TypeImage 13(float) 1D array sampled format:Unknown 53: TypePointer UniformConstant 52 54(i1DArray): 53(ptr) Variable UniformConstant 62: TypeImage 13(float) 2D array sampled format:Unknown 63: TypePointer UniformConstant 62 64(i2DArray): 63(ptr) Variable UniformConstant 71: TypeImage 13(float) 2D multi-sampled sampled format:Unknown 72: TypePointer UniformConstant 71 73(i2DMS): 72(ptr) Variable UniformConstant 77: TypeVector 25(int) 2 79: 25(int) Constant 1 84: TypeImage 13(float) 2D array multi-sampled sampled format:Unknown 85: TypePointer UniformConstant 84 86(i2DMSArray): 85(ptr) Variable UniformConstant 89: TypeVector 25(int) 3 91: 25(int) Constant 3 96: TypePointer Function 25(int) 98: TypeImage 25(int) 1D sampled format:Unknown 99: TypePointer UniformConstant 98 100(ii1D): 99(ptr) Variable UniformConstant 104: TypeVector 25(int) 4 109: TypeImage 25(int) 2D sampled format:Unknown 110: TypePointer UniformConstant 109 111(ii2D): 110(ptr) Variable UniformConstant 119: TypeImage 25(int) 3D sampled format:Unknown 120: TypePointer UniformConstant 119 121(ii3D): 120(ptr) Variable UniformConstant 128: TypeImage 25(int) 1D array sampled format:Unknown 129: TypePointer UniformConstant 128 130(ii1DArray): 129(ptr) Variable UniformConstant 138: TypeImage 25(int) 2D array sampled format:Unknown 139: TypePointer UniformConstant 138 140(ii2DArray): 139(ptr) Variable UniformConstant 147: TypeImage 25(int) 2D multi-sampled sampled format:Unknown 148: TypePointer UniformConstant 147 149(ii2DMS): 148(ptr) Variable UniformConstant 158: TypeImage 25(int) 2D array multi-sampled sampled format:Unknown 159: TypePointer UniformConstant 158 160(ii2DMSArray): 159(ptr) Variable UniformConstant 173: TypeImage 13(float) 3D nonsampled format:R32f 174: TypePointer UniformConstant 173 175(OUT): 174(ptr) Variable UniformConstant 180: TypePointer Input 7(ivec3) 181(tid): 180(ptr) Variable Input 4(main): 2 Function None 3 5: Label 179(tid): 8(ptr) Variable Function 183(param): 8(ptr) Variable Function 182: 7(ivec3) Load 181(tid) Store 179(tid) 182 184: 7(ivec3) Load 179(tid) Store 183(param) 184 185: 2 FunctionCall 11(@main(vu3;) 183(param) Return FunctionEnd 11(@main(vu3;): 2 Function None 9 10(tid): 8(ptr) FunctionParameter 12: Label 15(f): 14(ptr) Variable Function 97(i): 96(ptr) Variable Function 168(storeTemp): 14(ptr) Variable Function Store 15(f) 16 20: 17 Load 19(i1D) 23: 22(ptr) AccessChain 10(tid) 21 24: 6(int) Load 23 28: 27(fvec4) ImageFetch 20 24 Lod 26 29: 13(float) CompositeExtract 28 0 30: 13(float) Load 15(f) 31: 13(float) FAdd 30 29 Store 15(f) 31 35: 32 Load 34(i2D) 37: 7(ivec3) Load 10(tid) 38: 36(ivec2) VectorShuffle 37 37 0 1 39: 27(fvec4) ImageFetch 35 38 Lod 26 40: 13(float) CompositeExtract 39 0 41: 13(float) Load 15(f) 42: 13(float) FAdd 41 40 Store 15(f) 42 46: 43 Load 45(i3D) 47: 7(ivec3) Load 10(tid) 48: 27(fvec4) ImageFetch 46 47 Lod 26 49: 13(float) CompositeExtract 48 0 50: 13(float) Load 15(f) 51: 13(float) FAdd 50 49 Store 15(f) 51 55: 52 Load 54(i1DArray) 56: 7(ivec3) Load 10(tid) 57: 36(ivec2) VectorShuffle 56 56 0 1 58: 27(fvec4) ImageFetch 55 57 Lod 26 59: 13(float) CompositeExtract 58 0 60: 13(float) Load 15(f) 61: 13(float) FAdd 60 59 Store 15(f) 61 65: 62 Load 64(i2DArray) 66: 7(ivec3) Load 10(tid) 67: 27(fvec4) ImageFetch 65 66 Lod 26 68: 13(float) CompositeExtract 67 0 69: 13(float) Load 15(f) 70: 13(float) FAdd 69 68 Store 15(f) 70 74: 71 Load 73(i2DMS) 75: 7(ivec3) Load 10(tid) 76: 36(ivec2) VectorShuffle 75 75 0 1 78: 77(ivec2) Bitcast 76 80: 27(fvec4) ImageFetch 74 78 Sample 79 81: 13(float) CompositeExtract 80 0 82: 13(float) Load 15(f) 83: 13(float) FAdd 82 81 Store 15(f) 83 87: 84 Load 86(i2DMSArray) 88: 7(ivec3) Load 10(tid) 90: 89(ivec3) Bitcast 88 92: 27(fvec4) ImageFetch 87 90 Sample 91 93: 13(float) CompositeExtract 92 0 94: 13(float) Load 15(f) 95: 13(float) FAdd 94 93 Store 15(f) 95 Store 97(i) 26 101: 98 Load 100(ii1D) 102: 22(ptr) AccessChain 10(tid) 21 103: 6(int) Load 102 105: 104(ivec4) ImageFetch 101 103 Lod 26 106: 25(int) CompositeExtract 105 0 107: 25(int) Load 97(i) 108: 25(int) IAdd 107 106 Store 97(i) 108 112: 109 Load 111(ii2D) 113: 7(ivec3) Load 10(tid) 114: 36(ivec2) VectorShuffle 113 113 0 1 115: 104(ivec4) ImageFetch 112 114 Lod 26 116: 25(int) CompositeExtract 115 0 117: 25(int) Load 97(i) 118: 25(int) IAdd 117 116 Store 97(i) 118 122: 119 Load 121(ii3D) 123: 7(ivec3) Load 10(tid) 124: 104(ivec4) ImageFetch 122 123 Lod 26 125: 25(int) CompositeExtract 124 0 126: 25(int) Load 97(i) 127: 25(int) IAdd 126 125 Store 97(i) 127 131: 128 Load 130(ii1DArray) 132: 7(ivec3) Load 10(tid) 133: 36(ivec2) VectorShuffle 132 132 0 1 134: 104(ivec4) ImageFetch 131 133 Lod 26 135: 25(int) CompositeExtract 134 0 136: 25(int) Load 97(i) 137: 25(int) IAdd 136 135 Store 97(i) 137 141: 138 Load 140(ii2DArray) 142: 7(ivec3) Load 10(tid) 143: 104(ivec4) ImageFetch 141 142 Lod 26 144: 25(int) CompositeExtract 143 0 145: 25(int) Load 97(i) 146: 25(int) IAdd 145 144 Store 97(i) 146 150: 147 Load 149(ii2DMS) 151: 7(ivec3) Load 10(tid) 152: 36(ivec2) VectorShuffle 151 151 0 1 153: 77(ivec2) Bitcast 152 154: 104(ivec4) ImageFetch 150 153 Sample 79 155: 25(int) CompositeExtract 154 0 156: 25(int) Load 97(i) 157: 25(int) IAdd 156 155 Store 97(i) 157 161: 158 Load 160(ii2DMSArray) 162: 7(ivec3) Load 10(tid) 163: 89(ivec3) Bitcast 162 164: 104(ivec4) ImageFetch 161 163 Sample 91 165: 25(int) CompositeExtract 164 0 166: 25(int) Load 97(i) 167: 25(int) IAdd 166 165 Store 97(i) 167 169: 13(float) Load 15(f) 170: 25(int) Load 97(i) 171: 13(float) ConvertSToF 170 172: 13(float) FAdd 169 171 Store 168(storeTemp) 172 176: 173 Load 175(OUT) 177: 7(ivec3) Load 10(tid) 178: 13(float) Load 168(storeTemp) ImageWrite 176 177 178 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.imageload-subvec4.comp.out000066400000000000000000000527221506534232700244010ustar00rootroot00000000000000hlsl.imageload-subvec4.comp Shader version: 500 local_size = (8, 8, 8) 0:? Sequence 0:17 Function Definition: @main(vu3; ( temp void) 0:17 Function Parameters: 0:17 'tid' ( in 3-component vector of uint) 0:? Sequence 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'f' ( temp float) 0:18 Constant: 0:18 0.000000 0:19 add second child into first child ( temp float) 0:19 'f' ( temp float) 0:19 imageLoad ( temp float) 0:19 'i1D' (layout( binding=0 r32f) uniform image1D) 0:19 direct index ( temp uint) 0:19 'tid' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:20 add second child into first child ( temp float) 0:20 'f' ( temp float) 0:20 imageLoad ( temp float) 0:20 'i2D' (layout( binding=1 r32f) uniform image2D) 0:20 vector swizzle ( temp 2-component vector of uint) 0:20 'tid' ( in 3-component vector of uint) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:21 add second child into first child ( temp float) 0:21 'f' ( temp float) 0:21 imageLoad ( temp float) 0:21 'i3D' (layout( binding=2 r32f) uniform image3D) 0:21 'tid' ( in 3-component vector of uint) 0:22 add second child into first child ( temp float) 0:22 'f' ( temp float) 0:22 imageLoad ( temp float) 0:22 'i1DArray' (layout( binding=3 r32f) uniform image1DArray) 0:22 vector swizzle ( temp 2-component vector of uint) 0:22 'tid' ( in 3-component vector of uint) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:23 add second child into first child ( temp float) 0:23 'f' ( temp float) 0:23 imageLoad ( temp float) 0:23 'i2DArray' (layout( binding=4 r32f) uniform image2DArray) 0:23 'tid' ( in 3-component vector of uint) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'i' ( temp int) 0:25 Constant: 0:25 0 (const int) 0:26 add second child into first child ( temp int) 0:26 'i' ( temp int) 0:26 imageLoad ( temp int) 0:26 'ii1D' (layout( binding=5 r32i) uniform iimage1D) 0:26 direct index ( temp uint) 0:26 'tid' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:27 add second child into first child ( temp int) 0:27 'i' ( temp int) 0:27 imageLoad ( temp int) 0:27 'ii2D' (layout( binding=6 r32i) uniform iimage2D) 0:27 vector swizzle ( temp 2-component vector of uint) 0:27 'tid' ( in 3-component vector of uint) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:28 add second child into first child ( temp int) 0:28 'i' ( temp int) 0:28 imageLoad ( temp int) 0:28 'ii3D' (layout( binding=7 r32i) uniform iimage3D) 0:28 'tid' ( in 3-component vector of uint) 0:29 add second child into first child ( temp int) 0:29 'i' ( temp int) 0:29 imageLoad ( temp int) 0:29 'ii1DArray' (layout( binding=8 r32i) uniform iimage1DArray) 0:29 vector swizzle ( temp 2-component vector of uint) 0:29 'tid' ( in 3-component vector of uint) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:30 add second child into first child ( temp int) 0:30 'i' ( temp int) 0:30 imageLoad ( temp int) 0:30 'ii2DArray' (layout( binding=9 r32i) uniform iimage2DArray) 0:30 'tid' ( in 3-component vector of uint) 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'storeTemp' ( temp float) 0:32 add ( temp float) 0:32 'f' ( temp float) 0:32 Convert int to float ( temp float) 0:32 'i' ( temp int) 0:32 imageStore ( temp void) 0:32 'OUT' (layout( binding=10 r32f) uniform image3D) 0:32 'tid' ( in 3-component vector of uint) 0:32 'storeTemp' ( temp float) 0:32 'storeTemp' ( temp float) 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 move second child to first child ( temp 3-component vector of uint) 0:? 'tid' ( temp 3-component vector of uint) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) 0:17 Function Call: @main(vu3; ( temp void) 0:? 'tid' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'i1D' (layout( binding=0 r32f) uniform image1D) 0:? 'i2D' (layout( binding=1 r32f) uniform image2D) 0:? 'i3D' (layout( binding=2 r32f) uniform image3D) 0:? 'i1DArray' (layout( binding=3 r32f) uniform image1DArray) 0:? 'i2DArray' (layout( binding=4 r32f) uniform image2DArray) 0:? 'ii1D' (layout( binding=5 r32i) uniform iimage1D) 0:? 'ii2D' (layout( binding=6 r32i) uniform iimage2D) 0:? 'ii3D' (layout( binding=7 r32i) uniform iimage3D) 0:? 'ii1DArray' (layout( binding=8 r32i) uniform iimage1DArray) 0:? 'ii2DArray' (layout( binding=9 r32i) uniform iimage2DArray) 0:? 'OUT' (layout( binding=10 r32f) uniform image3D) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (8, 8, 8) 0:? Sequence 0:17 Function Definition: @main(vu3; ( temp void) 0:17 Function Parameters: 0:17 'tid' ( in 3-component vector of uint) 0:? Sequence 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'f' ( temp float) 0:18 Constant: 0:18 0.000000 0:19 add second child into first child ( temp float) 0:19 'f' ( temp float) 0:19 imageLoad ( temp float) 0:19 'i1D' (layout( binding=0 r32f) uniform image1D) 0:19 direct index ( temp uint) 0:19 'tid' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:20 add second child into first child ( temp float) 0:20 'f' ( temp float) 0:20 imageLoad ( temp float) 0:20 'i2D' (layout( binding=1 r32f) uniform image2D) 0:20 vector swizzle ( temp 2-component vector of uint) 0:20 'tid' ( in 3-component vector of uint) 0:20 Sequence 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:21 add second child into first child ( temp float) 0:21 'f' ( temp float) 0:21 imageLoad ( temp float) 0:21 'i3D' (layout( binding=2 r32f) uniform image3D) 0:21 'tid' ( in 3-component vector of uint) 0:22 add second child into first child ( temp float) 0:22 'f' ( temp float) 0:22 imageLoad ( temp float) 0:22 'i1DArray' (layout( binding=3 r32f) uniform image1DArray) 0:22 vector swizzle ( temp 2-component vector of uint) 0:22 'tid' ( in 3-component vector of uint) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:23 add second child into first child ( temp float) 0:23 'f' ( temp float) 0:23 imageLoad ( temp float) 0:23 'i2DArray' (layout( binding=4 r32f) uniform image2DArray) 0:23 'tid' ( in 3-component vector of uint) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'i' ( temp int) 0:25 Constant: 0:25 0 (const int) 0:26 add second child into first child ( temp int) 0:26 'i' ( temp int) 0:26 imageLoad ( temp int) 0:26 'ii1D' (layout( binding=5 r32i) uniform iimage1D) 0:26 direct index ( temp uint) 0:26 'tid' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:27 add second child into first child ( temp int) 0:27 'i' ( temp int) 0:27 imageLoad ( temp int) 0:27 'ii2D' (layout( binding=6 r32i) uniform iimage2D) 0:27 vector swizzle ( temp 2-component vector of uint) 0:27 'tid' ( in 3-component vector of uint) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:28 add second child into first child ( temp int) 0:28 'i' ( temp int) 0:28 imageLoad ( temp int) 0:28 'ii3D' (layout( binding=7 r32i) uniform iimage3D) 0:28 'tid' ( in 3-component vector of uint) 0:29 add second child into first child ( temp int) 0:29 'i' ( temp int) 0:29 imageLoad ( temp int) 0:29 'ii1DArray' (layout( binding=8 r32i) uniform iimage1DArray) 0:29 vector swizzle ( temp 2-component vector of uint) 0:29 'tid' ( in 3-component vector of uint) 0:29 Sequence 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1 (const int) 0:30 add second child into first child ( temp int) 0:30 'i' ( temp int) 0:30 imageLoad ( temp int) 0:30 'ii2DArray' (layout( binding=9 r32i) uniform iimage2DArray) 0:30 'tid' ( in 3-component vector of uint) 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'storeTemp' ( temp float) 0:32 add ( temp float) 0:32 'f' ( temp float) 0:32 Convert int to float ( temp float) 0:32 'i' ( temp int) 0:32 imageStore ( temp void) 0:32 'OUT' (layout( binding=10 r32f) uniform image3D) 0:32 'tid' ( in 3-component vector of uint) 0:32 'storeTemp' ( temp float) 0:32 'storeTemp' ( temp float) 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 move second child to first child ( temp 3-component vector of uint) 0:? 'tid' ( temp 3-component vector of uint) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) 0:17 Function Call: @main(vu3; ( temp void) 0:? 'tid' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'i1D' (layout( binding=0 r32f) uniform image1D) 0:? 'i2D' (layout( binding=1 r32f) uniform image2D) 0:? 'i3D' (layout( binding=2 r32f) uniform image3D) 0:? 'i1DArray' (layout( binding=3 r32f) uniform image1DArray) 0:? 'i2DArray' (layout( binding=4 r32f) uniform image2DArray) 0:? 'ii1D' (layout( binding=5 r32i) uniform iimage1D) 0:? 'ii2D' (layout( binding=6 r32i) uniform iimage2D) 0:? 'ii3D' (layout( binding=7 r32i) uniform iimage3D) 0:? 'ii1DArray' (layout( binding=8 r32i) uniform iimage1DArray) 0:? 'ii2DArray' (layout( binding=9 r32i) uniform iimage2DArray) 0:? 'OUT' (layout( binding=10 r32f) uniform image3D) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 138 Capability Shader Capability Image1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 133 ExecutionMode 4 LocalSize 8 8 8 Source HLSL 500 Name 4 "main" Name 11 "@main(vu3;" Name 10 "tid" Name 15 "f" Name 19 "i1D" Name 32 "i2D" Name 43 "i3D" Name 52 "i1DArray" Name 62 "i2DArray" Name 71 "i" Name 75 "ii1D" Name 86 "ii2D" Name 96 "ii3D" Name 105 "ii1DArray" Name 115 "ii2DArray" Name 122 "storeTemp" Name 127 "OUT" Name 131 "tid" Name 133 "tid" Name 135 "param" Decorate 19(i1D) Binding 0 Decorate 19(i1D) DescriptorSet 0 Decorate 32(i2D) Binding 1 Decorate 32(i2D) DescriptorSet 0 Decorate 43(i3D) Binding 2 Decorate 43(i3D) DescriptorSet 0 Decorate 52(i1DArray) Binding 3 Decorate 52(i1DArray) DescriptorSet 0 Decorate 62(i2DArray) Binding 4 Decorate 62(i2DArray) DescriptorSet 0 Decorate 75(ii1D) Binding 5 Decorate 75(ii1D) DescriptorSet 0 Decorate 86(ii2D) Binding 6 Decorate 86(ii2D) DescriptorSet 0 Decorate 96(ii3D) Binding 7 Decorate 96(ii3D) DescriptorSet 0 Decorate 105(ii1DArray) Binding 8 Decorate 105(ii1DArray) DescriptorSet 0 Decorate 115(ii2DArray) Binding 9 Decorate 115(ii2DArray) DescriptorSet 0 Decorate 127(OUT) Binding 10 Decorate 127(OUT) DescriptorSet 0 Decorate 133(tid) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeFloat 32 14: TypePointer Function 13(float) 16: 13(float) Constant 0 17: TypeImage 13(float) 1D nonsampled format:R32f 18: TypePointer UniformConstant 17 19(i1D): 18(ptr) Variable UniformConstant 21: 6(int) Constant 0 22: TypePointer Function 6(int) 25: TypeVector 13(float) 4 30: TypeImage 13(float) 2D nonsampled format:R32f 31: TypePointer UniformConstant 30 32(i2D): 31(ptr) Variable UniformConstant 34: TypeVector 6(int) 2 41: TypeImage 13(float) 3D nonsampled format:R32f 42: TypePointer UniformConstant 41 43(i3D): 42(ptr) Variable UniformConstant 50: TypeImage 13(float) 1D array nonsampled format:R32f 51: TypePointer UniformConstant 50 52(i1DArray): 51(ptr) Variable UniformConstant 60: TypeImage 13(float) 2D array nonsampled format:R32f 61: TypePointer UniformConstant 60 62(i2DArray): 61(ptr) Variable UniformConstant 69: TypeInt 32 1 70: TypePointer Function 69(int) 72: 69(int) Constant 0 73: TypeImage 69(int) 1D nonsampled format:R32i 74: TypePointer UniformConstant 73 75(ii1D): 74(ptr) Variable UniformConstant 79: TypeVector 69(int) 4 84: TypeImage 69(int) 2D nonsampled format:R32i 85: TypePointer UniformConstant 84 86(ii2D): 85(ptr) Variable UniformConstant 94: TypeImage 69(int) 3D nonsampled format:R32i 95: TypePointer UniformConstant 94 96(ii3D): 95(ptr) Variable UniformConstant 103: TypeImage 69(int) 1D array nonsampled format:R32i 104: TypePointer UniformConstant 103 105(ii1DArray): 104(ptr) Variable UniformConstant 113: TypeImage 69(int) 2D array nonsampled format:R32i 114: TypePointer UniformConstant 113 115(ii2DArray): 114(ptr) Variable UniformConstant 127(OUT): 42(ptr) Variable UniformConstant 132: TypePointer Input 7(ivec3) 133(tid): 132(ptr) Variable Input 4(main): 2 Function None 3 5: Label 131(tid): 8(ptr) Variable Function 135(param): 8(ptr) Variable Function 134: 7(ivec3) Load 133(tid) Store 131(tid) 134 136: 7(ivec3) Load 131(tid) Store 135(param) 136 137: 2 FunctionCall 11(@main(vu3;) 135(param) Return FunctionEnd 11(@main(vu3;): 2 Function None 9 10(tid): 8(ptr) FunctionParameter 12: Label 15(f): 14(ptr) Variable Function 71(i): 70(ptr) Variable Function 122(storeTemp): 14(ptr) Variable Function Store 15(f) 16 20: 17 Load 19(i1D) 23: 22(ptr) AccessChain 10(tid) 21 24: 6(int) Load 23 26: 25(fvec4) ImageRead 20 24 27: 13(float) CompositeExtract 26 0 28: 13(float) Load 15(f) 29: 13(float) FAdd 28 27 Store 15(f) 29 33: 30 Load 32(i2D) 35: 7(ivec3) Load 10(tid) 36: 34(ivec2) VectorShuffle 35 35 0 1 37: 25(fvec4) ImageRead 33 36 38: 13(float) CompositeExtract 37 0 39: 13(float) Load 15(f) 40: 13(float) FAdd 39 38 Store 15(f) 40 44: 41 Load 43(i3D) 45: 7(ivec3) Load 10(tid) 46: 25(fvec4) ImageRead 44 45 47: 13(float) CompositeExtract 46 0 48: 13(float) Load 15(f) 49: 13(float) FAdd 48 47 Store 15(f) 49 53: 50 Load 52(i1DArray) 54: 7(ivec3) Load 10(tid) 55: 34(ivec2) VectorShuffle 54 54 0 1 56: 25(fvec4) ImageRead 53 55 57: 13(float) CompositeExtract 56 0 58: 13(float) Load 15(f) 59: 13(float) FAdd 58 57 Store 15(f) 59 63: 60 Load 62(i2DArray) 64: 7(ivec3) Load 10(tid) 65: 25(fvec4) ImageRead 63 64 66: 13(float) CompositeExtract 65 0 67: 13(float) Load 15(f) 68: 13(float) FAdd 67 66 Store 15(f) 68 Store 71(i) 72 76: 73 Load 75(ii1D) 77: 22(ptr) AccessChain 10(tid) 21 78: 6(int) Load 77 80: 79(ivec4) ImageRead 76 78 81: 69(int) CompositeExtract 80 0 82: 69(int) Load 71(i) 83: 69(int) IAdd 82 81 Store 71(i) 83 87: 84 Load 86(ii2D) 88: 7(ivec3) Load 10(tid) 89: 34(ivec2) VectorShuffle 88 88 0 1 90: 79(ivec4) ImageRead 87 89 91: 69(int) CompositeExtract 90 0 92: 69(int) Load 71(i) 93: 69(int) IAdd 92 91 Store 71(i) 93 97: 94 Load 96(ii3D) 98: 7(ivec3) Load 10(tid) 99: 79(ivec4) ImageRead 97 98 100: 69(int) CompositeExtract 99 0 101: 69(int) Load 71(i) 102: 69(int) IAdd 101 100 Store 71(i) 102 106: 103 Load 105(ii1DArray) 107: 7(ivec3) Load 10(tid) 108: 34(ivec2) VectorShuffle 107 107 0 1 109: 79(ivec4) ImageRead 106 108 110: 69(int) CompositeExtract 109 0 111: 69(int) Load 71(i) 112: 69(int) IAdd 111 110 Store 71(i) 112 116: 113 Load 115(ii2DArray) 117: 7(ivec3) Load 10(tid) 118: 79(ivec4) ImageRead 116 117 119: 69(int) CompositeExtract 118 0 120: 69(int) Load 71(i) 121: 69(int) IAdd 120 119 Store 71(i) 121 123: 13(float) Load 15(f) 124: 69(int) Load 71(i) 125: 13(float) ConvertSToF 124 126: 13(float) FAdd 123 125 Store 122(storeTemp) 126 128: 41 Load 127(OUT) 129: 7(ivec3) Load 10(tid) 130: 13(float) Load 122(storeTemp) ImageWrite 128 129 130 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.implicitBool.frag.out000066400000000000000000000625601506534232700235160ustar00rootroot00000000000000hlsl.implicitBool.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main( ( temp 4-component vector of float) 0:7 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'a' ( temp 4-component vector of float) 0:8 Constant: 0:8 2.000000 0:8 2.000000 0:8 2.000000 0:8 2.000000 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Convert int to bool ( temp bool) 0:9 condi: direct index for structure ( uniform int) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:9 Constant: 0:9 1 (const uint) 0:9 true case 0:10 Branch: Return with expression 0:10 add ( temp 4-component vector of float) 0:10 'a' ( temp 4-component vector of float) 0:10 Constant: 0:10 1.000000 0:11 Test condition and select ( temp void) 0:11 Condition 0:11 Convert float to bool ( temp bool) 0:11 condf: direct index for structure ( uniform float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:11 Constant: 0:11 0 (const uint) 0:11 true case 0:12 Branch: Return with expression 0:12 add ( temp 4-component vector of float) 0:12 'a' ( temp 4-component vector of float) 0:12 Constant: 0:12 2.000000 0:13 Test condition and select ( temp void) 0:13 Condition 0:13 Convert float to bool ( temp bool) 0:13 condf1: direct index for structure ( uniform 1-component vector of float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:13 Constant: 0:13 2 (const uint) 0:13 true case 0:14 Branch: Return with expression 0:14 add ( temp 4-component vector of float) 0:14 'a' ( temp 4-component vector of float) 0:14 Constant: 0:14 3.000000 0:15 Test condition and select ( temp void) 0:15 Condition 0:15 Convert int to bool ( temp bool) 0:15 condi1: direct index for structure ( uniform 1-component vector of int) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:15 Constant: 0:15 3 (const uint) 0:15 true case 0:16 Branch: Return with expression 0:16 add ( temp 4-component vector of float) 0:16 'a' ( temp 4-component vector of float) 0:16 Constant: 0:16 4.000000 0:17 Test condition and select ( temp void) 0:17 Condition 0:17 logical-or ( temp bool) 0:17 logical-and ( temp bool) 0:17 Convert int to bool ( temp bool) 0:17 condi: direct index for structure ( uniform int) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:17 Constant: 0:17 1 (const uint) 0:17 Convert float to bool ( temp bool) 0:17 condf: direct index for structure ( uniform float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:17 Constant: 0:17 0 (const uint) 0:17 Convert float to bool ( temp bool) 0:17 condf1: direct index for structure ( uniform 1-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:17 Constant: 0:17 2 (const uint) 0:17 true case 0:18 Branch: Return with expression 0:18 add ( temp 4-component vector of float) 0:18 'a' ( temp 4-component vector of float) 0:18 Constant: 0:18 5.000000 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'f' ( temp float) 0:20 condf: direct index for structure ( uniform float) 0:20 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:20 Constant: 0:20 0 (const uint) 0:21 Loop with condition tested first 0:21 Loop Condition 0:21 Convert float to bool ( temp bool) 0:21 'f' ( temp float) 0:21 Loop Body 0:? Sequence 0:21 Pre-Decrement ( temp float) 0:21 'f' ( temp float) 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'i' ( temp int) 0:23 condi: direct index for structure ( uniform int) 0:23 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:23 Constant: 0:23 1 (const uint) 0:24 Loop with condition not tested first 0:24 Loop Condition 0:24 Convert int to bool ( temp bool) 0:24 'i' ( temp int) 0:24 Loop Body 0:? Sequence 0:24 Pre-Decrement ( temp int) 0:24 'i' ( temp int) 0:? Sequence 0:26 Loop with condition tested first 0:26 Loop Condition 0:26 Convert int to bool ( temp bool) 0:26 'i' ( temp int) 0:26 Loop Body 0:? Sequence 0:26 Pre-Decrement ( temp int) 0:26 'i' ( temp int) 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'g' ( temp float) 0:28 Test condition and select ( temp float): no shortcircuit 0:28 Condition 0:28 Convert float to bool ( temp bool) 0:28 condf: direct index for structure ( uniform float) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:28 Constant: 0:28 0 (const uint) 0:28 true case 0:28 Constant: 0:28 7.000000 0:28 false case 0:28 Constant: 0:28 8.000000 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'a' ( temp 4-component vector of float) 0:29 'g' ( temp float) 0:31 Branch: Return with expression 0:31 subtract ( temp 4-component vector of float) 0:31 'a' ( temp 4-component vector of float) 0:31 Constant: 0:31 1.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main( ( temp 4-component vector of float) 0:7 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'a' ( temp 4-component vector of float) 0:8 Constant: 0:8 2.000000 0:8 2.000000 0:8 2.000000 0:8 2.000000 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Convert int to bool ( temp bool) 0:9 condi: direct index for structure ( uniform int) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:9 Constant: 0:9 1 (const uint) 0:9 true case 0:10 Branch: Return with expression 0:10 add ( temp 4-component vector of float) 0:10 'a' ( temp 4-component vector of float) 0:10 Constant: 0:10 1.000000 0:11 Test condition and select ( temp void) 0:11 Condition 0:11 Convert float to bool ( temp bool) 0:11 condf: direct index for structure ( uniform float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:11 Constant: 0:11 0 (const uint) 0:11 true case 0:12 Branch: Return with expression 0:12 add ( temp 4-component vector of float) 0:12 'a' ( temp 4-component vector of float) 0:12 Constant: 0:12 2.000000 0:13 Test condition and select ( temp void) 0:13 Condition 0:13 Convert float to bool ( temp bool) 0:13 condf1: direct index for structure ( uniform 1-component vector of float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:13 Constant: 0:13 2 (const uint) 0:13 true case 0:14 Branch: Return with expression 0:14 add ( temp 4-component vector of float) 0:14 'a' ( temp 4-component vector of float) 0:14 Constant: 0:14 3.000000 0:15 Test condition and select ( temp void) 0:15 Condition 0:15 Convert int to bool ( temp bool) 0:15 condi1: direct index for structure ( uniform 1-component vector of int) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:15 Constant: 0:15 3 (const uint) 0:15 true case 0:16 Branch: Return with expression 0:16 add ( temp 4-component vector of float) 0:16 'a' ( temp 4-component vector of float) 0:16 Constant: 0:16 4.000000 0:17 Test condition and select ( temp void) 0:17 Condition 0:17 logical-or ( temp bool) 0:17 logical-and ( temp bool) 0:17 Convert int to bool ( temp bool) 0:17 condi: direct index for structure ( uniform int) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:17 Constant: 0:17 1 (const uint) 0:17 Convert float to bool ( temp bool) 0:17 condf: direct index for structure ( uniform float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:17 Constant: 0:17 0 (const uint) 0:17 Convert float to bool ( temp bool) 0:17 condf1: direct index for structure ( uniform 1-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:17 Constant: 0:17 2 (const uint) 0:17 true case 0:18 Branch: Return with expression 0:18 add ( temp 4-component vector of float) 0:18 'a' ( temp 4-component vector of float) 0:18 Constant: 0:18 5.000000 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'f' ( temp float) 0:20 condf: direct index for structure ( uniform float) 0:20 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:20 Constant: 0:20 0 (const uint) 0:21 Loop with condition tested first 0:21 Loop Condition 0:21 Convert float to bool ( temp bool) 0:21 'f' ( temp float) 0:21 Loop Body 0:? Sequence 0:21 Pre-Decrement ( temp float) 0:21 'f' ( temp float) 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'i' ( temp int) 0:23 condi: direct index for structure ( uniform int) 0:23 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:23 Constant: 0:23 1 (const uint) 0:24 Loop with condition not tested first 0:24 Loop Condition 0:24 Convert int to bool ( temp bool) 0:24 'i' ( temp int) 0:24 Loop Body 0:? Sequence 0:24 Pre-Decrement ( temp int) 0:24 'i' ( temp int) 0:? Sequence 0:26 Loop with condition tested first 0:26 Loop Condition 0:26 Convert int to bool ( temp bool) 0:26 'i' ( temp int) 0:26 Loop Body 0:? Sequence 0:26 Pre-Decrement ( temp int) 0:26 'i' ( temp int) 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'g' ( temp float) 0:28 Test condition and select ( temp float): no shortcircuit 0:28 Condition 0:28 Convert float to bool ( temp bool) 0:28 condf: direct index for structure ( uniform float) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:28 Constant: 0:28 0 (const uint) 0:28 true case 0:28 Constant: 0:28 7.000000 0:28 false case 0:28 Constant: 0:28 8.000000 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'a' ( temp 4-component vector of float) 0:29 'g' ( temp float) 0:31 Branch: Return with expression 0:31 subtract ( temp 4-component vector of float) 0:31 'a' ( temp 4-component vector of float) 0:31 Constant: 0:31 1.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 139 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 137 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "a" Name 16 "$Global" MemberName 16($Global) 0 "condf" MemberName 16($Global) 1 "condi" MemberName 16($Global) 2 "condf1" MemberName 16($Global) 3 "condi1" Name 18 "" Name 87 "f" Name 100 "i" Name 120 "g" Name 137 "@entryPointOutput" Decorate 16($Global) Block MemberDecorate 16($Global) 0 Offset 0 MemberDecorate 16($Global) 1 Offset 4 MemberDecorate 16($Global) 2 Offset 8 MemberDecorate 16($Global) 3 Offset 12 Decorate 18 Binding 0 Decorate 18 DescriptorSet 0 Decorate 137(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 7(fvec4) 13: 6(float) Constant 1073741824 14: 7(fvec4) ConstantComposite 13 13 13 13 15: TypeInt 32 1 16($Global): TypeStruct 6(float) 15(int) 6(float) 15(int) 17: TypePointer Uniform 16($Global) 18: 17(ptr) Variable Uniform 19: 15(int) Constant 1 20: TypePointer Uniform 15(int) 23: TypeBool 24: TypeInt 32 0 25: 24(int) Constant 0 30: 6(float) Constant 1065353216 34: 15(int) Constant 0 35: TypePointer Uniform 6(float) 38: 6(float) Constant 0 46: 15(int) Constant 2 53: 6(float) Constant 1077936128 57: 15(int) Constant 3 64: 6(float) Constant 1082130432 82: 6(float) Constant 1084227584 86: TypePointer Function 6(float) 99: TypePointer Function 15(int) 124: 6(float) Constant 1088421888 125: 6(float) Constant 1090519040 136: TypePointer Output 7(fvec4) 137(@entryPointOutput): 136(ptr) Variable Output 4(main): 2 Function None 3 5: Label 138: 7(fvec4) FunctionCall 9(@main() Store 137(@entryPointOutput) 138 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(a): 11(ptr) Variable Function 87(f): 86(ptr) Variable Function 100(i): 99(ptr) Variable Function 120(g): 86(ptr) Variable Function Store 12(a) 14 21: 20(ptr) AccessChain 18 19 22: 15(int) Load 21 26: 23(bool) INotEqual 22 25 SelectionMerge 28 None BranchConditional 26 27 28 27: Label 29: 7(fvec4) Load 12(a) 31: 7(fvec4) CompositeConstruct 30 30 30 30 32: 7(fvec4) FAdd 29 31 ReturnValue 32 28: Label 36: 35(ptr) AccessChain 18 34 37: 6(float) Load 36 39: 23(bool) FUnordNotEqual 37 38 SelectionMerge 41 None BranchConditional 39 40 41 40: Label 42: 7(fvec4) Load 12(a) 43: 7(fvec4) CompositeConstruct 13 13 13 13 44: 7(fvec4) FAdd 42 43 ReturnValue 44 41: Label 47: 35(ptr) AccessChain 18 46 48: 6(float) Load 47 49: 23(bool) FUnordNotEqual 48 38 SelectionMerge 51 None BranchConditional 49 50 51 50: Label 52: 7(fvec4) Load 12(a) 54: 7(fvec4) CompositeConstruct 53 53 53 53 55: 7(fvec4) FAdd 52 54 ReturnValue 55 51: Label 58: 20(ptr) AccessChain 18 57 59: 15(int) Load 58 60: 23(bool) INotEqual 59 25 SelectionMerge 62 None BranchConditional 60 61 62 61: Label 63: 7(fvec4) Load 12(a) 65: 7(fvec4) CompositeConstruct 64 64 64 64 66: 7(fvec4) FAdd 63 65 ReturnValue 66 62: Label 68: 20(ptr) AccessChain 18 19 69: 15(int) Load 68 70: 23(bool) INotEqual 69 25 71: 35(ptr) AccessChain 18 34 72: 6(float) Load 71 73: 23(bool) FUnordNotEqual 72 38 74: 23(bool) LogicalAnd 70 73 75: 35(ptr) AccessChain 18 46 76: 6(float) Load 75 77: 23(bool) FUnordNotEqual 76 38 78: 23(bool) LogicalOr 74 77 SelectionMerge 80 None BranchConditional 78 79 80 79: Label 81: 7(fvec4) Load 12(a) 83: 7(fvec4) CompositeConstruct 82 82 82 82 84: 7(fvec4) FAdd 81 83 ReturnValue 84 80: Label 88: 35(ptr) AccessChain 18 34 89: 6(float) Load 88 Store 87(f) 89 Branch 90 90: Label LoopMerge 92 93 None Branch 94 94: Label 95: 6(float) Load 87(f) 96: 23(bool) FUnordNotEqual 95 38 BranchConditional 96 91 92 91: Label 97: 6(float) Load 87(f) 98: 6(float) FSub 97 30 Store 87(f) 98 Branch 93 93: Label Branch 90 92: Label 101: 20(ptr) AccessChain 18 19 102: 15(int) Load 101 Store 100(i) 102 Branch 103 103: Label LoopMerge 105 106 None Branch 104 104: Label 107: 15(int) Load 100(i) 108: 15(int) ISub 107 19 Store 100(i) 108 Branch 106 106: Label 109: 15(int) Load 100(i) 110: 23(bool) INotEqual 109 25 BranchConditional 110 103 105 105: Label Branch 111 111: Label LoopMerge 113 114 None Branch 115 115: Label 116: 15(int) Load 100(i) 117: 23(bool) INotEqual 116 25 BranchConditional 117 112 113 112: Label 118: 15(int) Load 100(i) 119: 15(int) ISub 118 19 Store 100(i) 119 Branch 114 114: Label Branch 111 113: Label 121: 35(ptr) AccessChain 18 34 122: 6(float) Load 121 123: 23(bool) FUnordNotEqual 122 38 126: 6(float) Select 123 124 125 Store 120(g) 126 127: 6(float) Load 120(g) 128: 7(fvec4) Load 12(a) 129: 7(fvec4) CompositeConstruct 127 127 127 127 130: 7(fvec4) FAdd 128 129 Store 12(a) 130 131: 7(fvec4) Load 12(a) 132: 7(fvec4) CompositeConstruct 30 30 30 30 133: 7(fvec4) FSub 131 132 ReturnValue 133 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.include.vert.d.out000066400000000000000000000002231506534232700227620ustar00rootroot00000000000000vert.spv: ../Test/hlsl.include.vert ../Test/./inc1/bar.h ../Test/./inc1/foo.h ../Test/bar.h ../Test/inc2/bar.h ../Test/inc2/foo.h ../Test/parent.h glslang-16.0.0/Test/baseResults/hlsl.include.vert.out000066400000000000000000000071751506534232700225550ustar00rootroot00000000000000../Test/hlsl.include.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 42 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 11 "$Global" MemberName 11($Global) 0 "i1" MemberName 11($Global) 1 "i2" MemberName 11($Global) 2 "i4" MemberName 11($Global) 3 "i3" MemberName 11($Global) 4 "i6" MemberName 11($Global) 5 "i5" Name 13 "" Name 42 "@entryPointOutput" Decorate 11($Global) Block MemberDecorate 11($Global) 0 Offset 0 MemberDecorate 11($Global) 1 Offset 16 MemberDecorate 11($Global) 2 Offset 32 MemberDecorate 11($Global) 3 Offset 48 MemberDecorate 11($Global) 4 Offset 64 MemberDecorate 11($Global) 5 Offset 80 Decorate 13 Binding 0 Decorate 13 DescriptorSet 0 Decorate 42(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 12: TypePointer Uniform 11($Global) 13: 12(ptr) Variable Uniform 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Uniform 7(fvec4) 19: 14(int) Constant 1 23: 14(int) Constant 3 27: 14(int) Constant 2 31: 14(int) Constant 5 35: 14(int) Constant 4 41: TypePointer Output 7(fvec4) 42(@entryPointOutput): 41(ptr) Variable Output 4(main): 2 Function None 3 5: Label 43: 7(fvec4) FunctionCall 9(@main() Store 42(@entryPointOutput) 43 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 17: 16(ptr) AccessChain 13 15 18: 7(fvec4) Load 17 20: 16(ptr) AccessChain 13 19 21: 7(fvec4) Load 20 22: 7(fvec4) FAdd 18 21 24: 16(ptr) AccessChain 13 23 25: 7(fvec4) Load 24 26: 7(fvec4) FAdd 22 25 28: 16(ptr) AccessChain 13 27 29: 7(fvec4) Load 28 30: 7(fvec4) FAdd 26 29 32: 16(ptr) AccessChain 13 31 33: 7(fvec4) Load 32 34: 7(fvec4) FAdd 30 33 36: 16(ptr) AccessChain 13 35 37: 7(fvec4) Load 36 38: 7(fvec4) FAdd 34 37 ReturnValue 38 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.includeNegative.vert.out000066400000000000000000000007371506534232700242350ustar00rootroot00000000000000hlsl.includeNegative.vert ERROR: ./foo.h:1: '#error' : should not be included ERROR: ./inc2/../foo.h:1: '#error' : should not be included ERROR: ./parentBad:3: '#error' : bad parent ERROR: hlsl.includeNegative.vert:7: '#error' : in main ERROR: hlsl.includeNegative.vert:6: 'declaration' : Expected hlsl.includeNegative.vert(8): error at column 0, HLSL parsing failed. ERROR: 6 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.inf.vert.out000066400000000000000000000146211506534232700217000ustar00rootroot00000000000000hlsl.inf.vert Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp float) 0:3 'f1' ( temp float) 0:3 Constant: 0:3 -1.#INF 0:4 Sequence 0:4 move second child to first child ( temp float) 0:4 'f2' ( temp float) 0:4 Constant: 0:4 +1.#INF 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'f3' ( temp float) 0:5 Constant: 0:5 +1.#INF 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'f4' ( temp float) 0:6 add ( temp float) 0:6 component-wise multiply ( temp float) 0:6 'f2' ( temp float) 0:6 Constant: 0:6 +1.#INF 0:6 Constant: 0:6 +1.#INF 0:15 Branch: Return with expression 0:15 Construct vec4 ( temp 4-component vector of float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 'f1' ( temp float) 0:15 'f2' ( temp float) 0:15 'f3' ( temp float) 0:15 'f4' ( temp float) 0:15 Constant: 0:15 -1.#INF 0:15 Constant: 0:15 1.#IND 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp float) 0:3 'f1' ( temp float) 0:3 Constant: 0:3 -1.#INF 0:4 Sequence 0:4 move second child to first child ( temp float) 0:4 'f2' ( temp float) 0:4 Constant: 0:4 +1.#INF 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'f3' ( temp float) 0:5 Constant: 0:5 +1.#INF 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'f4' ( temp float) 0:6 add ( temp float) 0:6 component-wise multiply ( temp float) 0:6 'f2' ( temp float) 0:6 Constant: 0:6 +1.#INF 0:6 Constant: 0:6 +1.#INF 0:15 Branch: Return with expression 0:15 Construct vec4 ( temp 4-component vector of float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 'f1' ( temp float) 0:15 'f2' ( temp float) 0:15 'f3' ( temp float) 0:15 'f4' ( temp float) 0:15 Constant: 0:15 -1.#INF 0:15 Constant: 0:15 1.#IND 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 35 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "f1" Name 14 "f2" Name 16 "f3" Name 17 "f4" Name 35 "@entryPointOutput" Decorate 35(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 6(float) 13: 6(float) Constant 4286578688 15: 6(float) Constant 2139095040 29: 6(float) Constant 2143289344 34: TypePointer Output 7(fvec4) 35(@entryPointOutput): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label 36: 7(fvec4) FunctionCall 9(@main() Store 35(@entryPointOutput) 36 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(f1): 11(ptr) Variable Function 14(f2): 11(ptr) Variable Function 16(f3): 11(ptr) Variable Function 17(f4): 11(ptr) Variable Function Store 12(f1) 13 Store 14(f2) 15 Store 16(f3) 15 18: 6(float) Load 14(f2) 19: 6(float) FMul 18 15 20: 6(float) FAdd 19 15 Store 17(f4) 20 21: 6(float) Load 12(f1) 22: 6(float) Load 14(f2) 23: 6(float) FAdd 21 22 24: 6(float) Load 16(f3) 25: 6(float) FAdd 23 24 26: 6(float) Load 17(f4) 27: 6(float) FAdd 25 26 28: 6(float) FAdd 27 13 30: 6(float) FAdd 28 29 31: 7(fvec4) CompositeConstruct 30 30 30 30 ReturnValue 31 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.init.frag.out000066400000000000000000000567031506534232700220350ustar00rootroot00000000000000hlsl.init.frag WARNING: 0:40: 'typedef' : struct-member initializers ignored WARNING: 0:40: 'typedef' : struct-member initializers ignored Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 4-component vector of float) 0:1 'a1' ( global 4-component vector of float) 0:1 Constant: 0:1 1.000000 0:1 0.500000 0:1 0.000000 0:1 1.000000 0:1 move second child to first child ( temp 4-component vector of float) 0:1 'b1' ( global 4-component vector of float) 0:1 Constant: 0:1 2.000000 0:1 2.500000 0:1 2.100000 0:1 2.200000 0:2 Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:2 'a1i' ( global 4-component vector of float) 0:2 Constant: 0:2 1.000000 0:2 0.500000 0:2 0.000000 0:2 1.000000 0:2 move second child to first child ( temp 4-component vector of float) 0:2 'b1i' ( global 4-component vector of float) 0:2 Constant: 0:2 2.000000 0:2 2.500000 0:2 2.100000 0:2 2.200000 0:3 Sequence 0:3 move second child to first child ( temp float) 0:3 'a2' ( global float) 0:3 Constant: 0:3 0.200000 0:4 Sequence 0:4 move second child to first child ( temp float) 0:4 'b3' ( global float) 0:4 Constant: 0:4 0.300000 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'b4' ( global float) 0:5 Constant: 0:5 0.400000 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'a5' ( global float) 0:6 Constant: 0:6 0.500000 0:6 move second child to first child ( temp float) 0:6 'c5' ( global float) 0:6 Constant: 0:6 1.500000 0:9 Sequence 0:9 move second child to first child ( temp structure{ temp int f}) 0:9 'single1' ( global structure{ temp int f}) 0:9 Constant: 0:9 10 (const int) 0:12 Sequence 0:12 move second child to first child ( temp structure{ temp 2-component vector of uint v}) 0:12 'single2' ( global structure{ temp 2-component vector of uint v}) 0:12 Constant: 0:12 1 (const uint) 0:12 2 (const uint) 0:15 Sequence 0:15 move second child to first child ( temp structure{ temp structure{ temp int f} s1}) 0:15 'single3' ( global structure{ temp structure{ temp int f} s1}) 0:15 Constant: 0:15 3 (const int) 0:18 Sequence 0:18 move second child to first child ( temp structure{ temp structure{ temp 2-component vector of uint v} s1}) 0:18 'single4' ( global structure{ temp structure{ temp 2-component vector of uint v} s1}) 0:18 Constant: 0:18 4 (const uint) 0:18 5 (const uint) 0:21 Function Definition: @ShaderFunction(vf4; ( temp 4-component vector of float) 0:21 Function Parameters: 0:21 'input' ( in 4-component vector of float) 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'a2' ( temp 4-component vector of float) 0:22 Constant: 0:22 0.200000 0:22 0.300000 0:22 0.400000 0:22 0.500000 0:32 Sequence 0:32 move second child to first child ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 's2i' ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 Construct structure ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 Constant: 0:32 9 (const int) 0:32 'a5' ( global float) 0:32 Construct structure ( temp structure{ temp float f, temp int i}) 0:32 Comma ( temp float) 0:32 'a3' ( global float) 0:32 'a4' ( global float) 0:32 Constant: 0:32 12 (const int) 0:32 move second child to first child ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 's2' ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 Construct structure ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 Constant: 0:32 9 (const int) 0:32 'a5' ( global float) 0:32 Construct structure ( temp structure{ temp float f, temp int i}) 0:32 Comma ( temp float) 0:32 'a3' ( global float) 0:32 'a4' ( global float) 0:32 Constant: 0:32 12 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'a8' ( temp float) 0:33 Comma ( temp float) 0:33 'a2' ( temp 4-component vector of float) 0:33 'b2' ( global float) 0:33 move second child to first child ( temp float) 0:33 'a9' ( temp float) 0:33 'a5' ( global float) 0:35 Branch: Return with expression 0:35 component-wise multiply ( temp 4-component vector of float) 0:35 'input' ( in 4-component vector of float) 0:35 'a1' ( global 4-component vector of float) 0:21 Function Definition: ShaderFunction( ( temp void) 0:21 Function Parameters: 0:? Sequence 0:21 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:21 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:21 Function Call: @ShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'a1' ( global 4-component vector of float) 0:? 'b1' ( global 4-component vector of float) 0:? 'a1i' ( global 4-component vector of float) 0:? 'b1i' ( global 4-component vector of float) 0:? 'a2' ( global float) 0:? 'b2' ( global float) 0:? 'a3' ( global float) 0:? 'b3' ( global float) 0:? 'a4' ( global float) 0:? 'b4' ( global float) 0:? 'c4' ( global float) 0:? 'a5' ( global float) 0:? 'b5' ( global float) 0:? 'c5' ( global float) 0:? 'single1' ( global structure{ temp int f}) 0:? 'single2' ( global structure{ temp 2-component vector of uint v}) 0:? 'single3' ( global structure{ temp structure{ temp int f} s1}) 0:? 'single4' ( global structure{ temp structure{ temp 2-component vector of uint v} s1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 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}) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 4-component vector of float) 0:1 'a1' ( global 4-component vector of float) 0:1 Constant: 0:1 1.000000 0:1 0.500000 0:1 0.000000 0:1 1.000000 0:1 move second child to first child ( temp 4-component vector of float) 0:1 'b1' ( global 4-component vector of float) 0:1 Constant: 0:1 2.000000 0:1 2.500000 0:1 2.100000 0:1 2.200000 0:2 Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:2 'a1i' ( global 4-component vector of float) 0:2 Constant: 0:2 1.000000 0:2 0.500000 0:2 0.000000 0:2 1.000000 0:2 move second child to first child ( temp 4-component vector of float) 0:2 'b1i' ( global 4-component vector of float) 0:2 Constant: 0:2 2.000000 0:2 2.500000 0:2 2.100000 0:2 2.200000 0:3 Sequence 0:3 move second child to first child ( temp float) 0:3 'a2' ( global float) 0:3 Constant: 0:3 0.200000 0:4 Sequence 0:4 move second child to first child ( temp float) 0:4 'b3' ( global float) 0:4 Constant: 0:4 0.300000 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'b4' ( global float) 0:5 Constant: 0:5 0.400000 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'a5' ( global float) 0:6 Constant: 0:6 0.500000 0:6 move second child to first child ( temp float) 0:6 'c5' ( global float) 0:6 Constant: 0:6 1.500000 0:9 Sequence 0:9 move second child to first child ( temp structure{ temp int f}) 0:9 'single1' ( global structure{ temp int f}) 0:9 Constant: 0:9 10 (const int) 0:12 Sequence 0:12 move second child to first child ( temp structure{ temp 2-component vector of uint v}) 0:12 'single2' ( global structure{ temp 2-component vector of uint v}) 0:12 Constant: 0:12 1 (const uint) 0:12 2 (const uint) 0:15 Sequence 0:15 move second child to first child ( temp structure{ temp structure{ temp int f} s1}) 0:15 'single3' ( global structure{ temp structure{ temp int f} s1}) 0:15 Constant: 0:15 3 (const int) 0:18 Sequence 0:18 move second child to first child ( temp structure{ temp structure{ temp 2-component vector of uint v} s1}) 0:18 'single4' ( global structure{ temp structure{ temp 2-component vector of uint v} s1}) 0:18 Constant: 0:18 4 (const uint) 0:18 5 (const uint) 0:21 Function Definition: @ShaderFunction(vf4; ( temp 4-component vector of float) 0:21 Function Parameters: 0:21 'input' ( in 4-component vector of float) 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'a2' ( temp 4-component vector of float) 0:22 Constant: 0:22 0.200000 0:22 0.300000 0:22 0.400000 0:22 0.500000 0:32 Sequence 0:32 move second child to first child ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 's2i' ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 Construct structure ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 Constant: 0:32 9 (const int) 0:32 'a5' ( global float) 0:32 Construct structure ( temp structure{ temp float f, temp int i}) 0:32 Comma ( temp float) 0:32 'a3' ( global float) 0:32 'a4' ( global float) 0:32 Constant: 0:32 12 (const int) 0:32 move second child to first child ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 's2' ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 Construct structure ( temp structure{ temp int j, temp float g, temp structure{ temp float f, temp int i} s1}) 0:32 Constant: 0:32 9 (const int) 0:32 'a5' ( global float) 0:32 Construct structure ( temp structure{ temp float f, temp int i}) 0:32 Comma ( temp float) 0:32 'a3' ( global float) 0:32 'a4' ( global float) 0:32 Constant: 0:32 12 (const int) 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'a8' ( temp float) 0:33 Comma ( temp float) 0:33 'a2' ( temp 4-component vector of float) 0:33 'b2' ( global float) 0:33 move second child to first child ( temp float) 0:33 'a9' ( temp float) 0:33 'a5' ( global float) 0:35 Branch: Return with expression 0:35 component-wise multiply ( temp 4-component vector of float) 0:35 'input' ( in 4-component vector of float) 0:35 'a1' ( global 4-component vector of float) 0:21 Function Definition: ShaderFunction( ( temp void) 0:21 Function Parameters: 0:? Sequence 0:21 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:21 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:21 Function Call: @ShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'a1' ( global 4-component vector of float) 0:? 'b1' ( global 4-component vector of float) 0:? 'a1i' ( global 4-component vector of float) 0:? 'b1i' ( global 4-component vector of float) 0:? 'a2' ( global float) 0:? 'b2' ( global float) 0:? 'a3' ( global float) 0:? 'b3' ( global float) 0:? 'a4' ( global float) 0:? 'b4' ( global float) 0:? 'c4' ( global float) 0:? 'a5' ( global float) 0:? 'b5' ( global float) 0:? 'c5' ( global float) 0:? 'single1' ( global structure{ temp int f}) 0:? 'single2' ( global structure{ temp 2-component vector of uint v}) 0:? 'single3' ( global structure{ temp structure{ temp int f} s1}) 0:? 'single4' ( global structure{ temp structure{ temp 2-component vector of uint v} s1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 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): 8000b // Id's are bound by 110 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "ShaderFunction" 98 101 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "ShaderFunction" Name 11 "@ShaderFunction(vf4;" Name 10 "input" Name 14 "a1" Name 19 "b1" Name 25 "a1i" Name 26 "b1i" Name 28 "a2" Name 30 "b3" Name 32 "b4" Name 34 "a5" Name 35 "c5" Name 38 "Single1" MemberName 38(Single1) 0 "f" Name 40 "single1" Name 45 "Single2" MemberName 45(Single2) 0 "v" Name 47 "single2" Name 52 "Single3" MemberName 52(Single3) 0 "s1" Name 54 "single3" Name 58 "Single4" MemberName 58(Single4) 0 "s1" Name 60 "single4" Name 66 "a2" Name 68 "S1" MemberName 68(S1) 0 "f" MemberName 68(S1) 1 "i" Name 69 "S2" MemberName 69(S2) 0 "j" MemberName 69(S2) 1 "g" MemberName 69(S2) 2 "s1" Name 71 "s2i" Name 74 "a3" Name 75 "a4" Name 80 "s2" Name 86 "a8" Name 87 "b2" Name 89 "a9" Name 96 "input" Name 98 "input" Name 101 "@entryPointOutput" Name 102 "param" Name 105 "c4" Name 106 "b5" Name 107 "Constants" MemberName 107(Constants) 0 "a" MemberName 107(Constants) 1 "b" MemberName 107(Constants) 2 "c" Name 109 "" Decorate 98(input) Location 0 Decorate 101(@entryPointOutput) Location 0 Decorate 107(Constants) Block MemberDecorate 107(Constants) 0 Offset 0 MemberDecorate 107(Constants) 1 Offset 4 MemberDecorate 107(Constants) 2 Offset 8 Decorate 109 Binding 0 Decorate 109 DescriptorSet 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) 13: TypePointer Private 7(fvec4) 14(a1): 13(ptr) Variable Private 15: 6(float) Constant 1065353216 16: 6(float) Constant 1056964608 17: 6(float) Constant 0 18: 7(fvec4) ConstantComposite 15 16 17 15 19(b1): 13(ptr) Variable Private 20: 6(float) Constant 1073741824 21: 6(float) Constant 1075838976 22: 6(float) Constant 1074161254 23: 6(float) Constant 1074580685 24: 7(fvec4) ConstantComposite 20 21 22 23 25(a1i): 13(ptr) Variable Private 26(b1i): 13(ptr) Variable Private 27: TypePointer Private 6(float) 28(a2): 27(ptr) Variable Private 29: 6(float) Constant 1045220557 30(b3): 27(ptr) Variable Private 31: 6(float) Constant 1050253722 32(b4): 27(ptr) Variable Private 33: 6(float) Constant 1053609165 34(a5): 27(ptr) Variable Private 35(c5): 27(ptr) Variable Private 36: 6(float) Constant 1069547520 37: TypeInt 32 1 38(Single1): TypeStruct 37(int) 39: TypePointer Private 38(Single1) 40(single1): 39(ptr) Variable Private 41: 37(int) Constant 10 42: 38(Single1) ConstantComposite 41 43: TypeInt 32 0 44: TypeVector 43(int) 2 45(Single2): TypeStruct 44(ivec2) 46: TypePointer Private 45(Single2) 47(single2): 46(ptr) Variable Private 48: 43(int) Constant 1 49: 43(int) Constant 2 50: 44(ivec2) ConstantComposite 48 49 51: 45(Single2) ConstantComposite 50 52(Single3): TypeStruct 38(Single1) 53: TypePointer Private 52(Single3) 54(single3): 53(ptr) Variable Private 55: 37(int) Constant 3 56: 38(Single1) ConstantComposite 55 57: 52(Single3) ConstantComposite 56 58(Single4): TypeStruct 45(Single2) 59: TypePointer Private 58(Single4) 60(single4): 59(ptr) Variable Private 61: 43(int) Constant 4 62: 43(int) Constant 5 63: 44(ivec2) ConstantComposite 61 62 64: 45(Single2) ConstantComposite 63 65: 58(Single4) ConstantComposite 64 67: 7(fvec4) ConstantComposite 29 31 33 16 68(S1): TypeStruct 6(float) 37(int) 69(S2): TypeStruct 37(int) 6(float) 68(S1) 70: TypePointer Function 69(S2) 72: 37(int) Constant 9 74(a3): 27(ptr) Variable Private 75(a4): 27(ptr) Variable Private 77: 37(int) Constant 12 85: TypePointer Function 6(float) 87(b2): 27(ptr) Variable Private 97: TypePointer Input 7(fvec4) 98(input): 97(ptr) Variable Input 100: TypePointer Output 7(fvec4) 101(@entryPointOutput): 100(ptr) Variable Output 105(c4): 27(ptr) Variable Private 106(b5): 27(ptr) Variable Private 107(Constants): TypeStruct 6(float) 6(float) 6(float) 108: TypePointer Uniform 107(Constants) 109: 108(ptr) Variable Uniform 4(ShaderFunction): 2 Function None 3 5: Label 96(input): 8(ptr) Variable Function 102(param): 8(ptr) Variable Function Store 14(a1) 18 Store 19(b1) 24 Store 25(a1i) 18 Store 26(b1i) 24 Store 28(a2) 29 Store 30(b3) 31 Store 32(b4) 33 Store 34(a5) 16 Store 35(c5) 36 Store 40(single1) 42 Store 47(single2) 51 Store 54(single3) 57 Store 60(single4) 65 99: 7(fvec4) Load 98(input) Store 96(input) 99 103: 7(fvec4) Load 96(input) Store 102(param) 103 104: 7(fvec4) FunctionCall 11(@ShaderFunction(vf4;) 102(param) Store 101(@entryPointOutput) 104 Return FunctionEnd 11(@ShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 66(a2): 8(ptr) Variable Function 71(s2i): 70(ptr) Variable Function 80(s2): 70(ptr) Variable Function 86(a8): 85(ptr) Variable Function 89(a9): 85(ptr) Variable Function Store 66(a2) 67 73: 6(float) Load 34(a5) 76: 6(float) Load 75(a4) 78: 68(S1) CompositeConstruct 76 77 79: 69(S2) CompositeConstruct 72 73 78 Store 71(s2i) 79 81: 6(float) Load 34(a5) 82: 6(float) Load 75(a4) 83: 68(S1) CompositeConstruct 82 77 84: 69(S2) CompositeConstruct 72 81 83 Store 80(s2) 84 88: 6(float) Load 87(b2) Store 86(a8) 88 90: 6(float) Load 34(a5) Store 89(a9) 90 91: 7(fvec4) Load 10(input) 92: 7(fvec4) Load 14(a1) 93: 7(fvec4) FMul 91 92 ReturnValue 93 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.init2.frag.out000066400000000000000000000561211506534232700221110ustar00rootroot00000000000000hlsl.init2.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: Test1( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp structure{ temp 2-component vector of float a}) 0:5 'test1' ( temp structure{ temp 2-component vector of float a}) 0:5 Constant: 0:5 1.000000 0:5 2.000000 0:9 Sequence 0:9 move second child to first child ( temp structure{ temp 2-component vector of float a}) 0:9 'test2' ( temp structure{ temp 2-component vector of float a}) 0:9 Constant: 0:9 3.000000 0:9 4.000000 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'test4' ( temp float) 0:17 Constant: 0:17 7.000000 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp float a, temp float b, temp float c}) 0:20 'test5' ( temp structure{ temp float a, temp float b, temp float c}) 0:20 Constant: 0:20 8.000000 0:20 9.000000 0:20 10.000000 0:22 Constant: 0:22 10.000000 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'n' ( temp float) 0:26 Constant: 0:26 0.000000 0:27 Sequence 0:27 move second child to first child ( temp 8-element array of 3-component vector of float) 0:27 'a' ( const (read only) 8-element array of 3-component vector of float) 0:27 Construct vec3 ( temp 8-element array of 3-component vector of float) 0:28 vector-scale ( temp 3-component vector of float) 0:28 Constant: 0:28 0.577350 0:28 0.577350 0:28 0.577350 0:28 add second child into first child ( temp float) 0:28 'n' ( temp float) 0:28 Constant: 0:28 1.000000 0:29 vector-scale ( temp 3-component vector of float) 0:29 Constant: 0:29 -0.577350 0:29 -0.577350 0:29 -0.577350 0:29 add second child into first child ( temp float) 0:29 'n' ( temp float) 0:29 Constant: 0:29 1.000000 0:30 vector-scale ( temp 3-component vector of float) 0:30 Constant: 0:30 -0.577350 0:30 -0.577350 0:30 0.577350 0:30 add second child into first child ( temp float) 0:30 'n' ( temp float) 0:30 Constant: 0:30 1.000000 0:31 vector-scale ( temp 3-component vector of float) 0:31 Constant: 0:31 -0.577350 0:31 0.577350 0:31 -0.577350 0:31 add second child into first child ( temp float) 0:31 'n' ( temp float) 0:31 Constant: 0:31 1.000000 0:32 vector-scale ( temp 3-component vector of float) 0:32 Constant: 0:32 -0.577350 0:32 0.577350 0:32 0.577350 0:32 add second child into first child ( temp float) 0:32 'n' ( temp float) 0:32 Constant: 0:32 1.000000 0:33 vector-scale ( temp 3-component vector of float) 0:33 Constant: 0:33 0.577350 0:33 -0.577350 0:33 -0.577350 0:33 add second child into first child ( temp float) 0:33 'n' ( temp float) 0:33 Constant: 0:33 1.000000 0:34 vector-scale ( temp 3-component vector of float) 0:34 Constant: 0:34 0.577350 0:34 -0.577350 0:34 0.577350 0:34 add second child into first child ( temp float) 0:34 'n' ( temp float) 0:34 Constant: 0:34 1.000000 0:35 vector-scale ( temp 3-component vector of float) 0:35 Constant: 0:35 0.577350 0:35 0.577350 0:35 -0.577350 0:35 add second child into first child ( temp float) 0:35 'n' ( temp float) 0:35 Constant: 0:35 1.000000 0:37 Sequence 0:37 move second child to first child ( temp structure{ temp 3-component vector of float a}) 0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a}) 0:37 Construct structure ( temp structure{ temp 3-component vector of float a}) 0:37 vector-scale ( temp 3-component vector of float) 0:37 Constant: 0:37 -0.577350 0:37 0.577350 0:37 0.577350 0:37 add second child into first child ( temp float) 0:37 'n' ( temp float) 0:37 Constant: 0:37 1.000000 0:39 Sequence 0:39 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) 0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b}) 0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) 0:39 vector-scale ( temp 3-component vector of float) 0:39 Constant: 0:39 -0.577350 0:39 0.577350 0:39 0.577350 0:39 add second child into first child ( temp float) 0:39 'n' ( temp float) 0:39 Constant: 0:39 1.000000 0:40 vector-scale ( temp 3-component vector of float) 0:40 Constant: 0:40 -0.577350 0:40 0.577350 0:40 0.577350 0:40 add second child into first child ( temp float) 0:40 'n' ( temp float) 0:40 Constant: 0:40 1.000000 0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:46 Function Parameters: 0:? Sequence 0:47 Function Call: Test1( ( temp void) 0:50 move second child to first child ( temp 4-component vector of float) 0:50 color: direct index for structure ( temp 4-component vector of float) 0:50 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1.000000 0:50 1.000000 0:50 1.000000 0:50 1.000000 0:51 Branch: Return with expression 0:51 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:46 Function Definition: main( ( temp void) 0:46 Function Parameters: 0:? Sequence 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:46 color: direct index for structure ( temp 4-component vector of float) 0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:46 Constant: 0:46 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: Test1( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp structure{ temp 2-component vector of float a}) 0:5 'test1' ( temp structure{ temp 2-component vector of float a}) 0:5 Constant: 0:5 1.000000 0:5 2.000000 0:9 Sequence 0:9 move second child to first child ( temp structure{ temp 2-component vector of float a}) 0:9 'test2' ( temp structure{ temp 2-component vector of float a}) 0:9 Constant: 0:9 3.000000 0:9 4.000000 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'test4' ( temp float) 0:17 Constant: 0:17 7.000000 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp float a, temp float b, temp float c}) 0:20 'test5' ( temp structure{ temp float a, temp float b, temp float c}) 0:20 Constant: 0:20 8.000000 0:20 9.000000 0:20 10.000000 0:22 Constant: 0:22 10.000000 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'n' ( temp float) 0:26 Constant: 0:26 0.000000 0:27 Sequence 0:27 move second child to first child ( temp 8-element array of 3-component vector of float) 0:27 'a' ( const (read only) 8-element array of 3-component vector of float) 0:27 Construct vec3 ( temp 8-element array of 3-component vector of float) 0:28 vector-scale ( temp 3-component vector of float) 0:28 Constant: 0:28 0.577350 0:28 0.577350 0:28 0.577350 0:28 add second child into first child ( temp float) 0:28 'n' ( temp float) 0:28 Constant: 0:28 1.000000 0:29 vector-scale ( temp 3-component vector of float) 0:29 Constant: 0:29 -0.577350 0:29 -0.577350 0:29 -0.577350 0:29 add second child into first child ( temp float) 0:29 'n' ( temp float) 0:29 Constant: 0:29 1.000000 0:30 vector-scale ( temp 3-component vector of float) 0:30 Constant: 0:30 -0.577350 0:30 -0.577350 0:30 0.577350 0:30 add second child into first child ( temp float) 0:30 'n' ( temp float) 0:30 Constant: 0:30 1.000000 0:31 vector-scale ( temp 3-component vector of float) 0:31 Constant: 0:31 -0.577350 0:31 0.577350 0:31 -0.577350 0:31 add second child into first child ( temp float) 0:31 'n' ( temp float) 0:31 Constant: 0:31 1.000000 0:32 vector-scale ( temp 3-component vector of float) 0:32 Constant: 0:32 -0.577350 0:32 0.577350 0:32 0.577350 0:32 add second child into first child ( temp float) 0:32 'n' ( temp float) 0:32 Constant: 0:32 1.000000 0:33 vector-scale ( temp 3-component vector of float) 0:33 Constant: 0:33 0.577350 0:33 -0.577350 0:33 -0.577350 0:33 add second child into first child ( temp float) 0:33 'n' ( temp float) 0:33 Constant: 0:33 1.000000 0:34 vector-scale ( temp 3-component vector of float) 0:34 Constant: 0:34 0.577350 0:34 -0.577350 0:34 0.577350 0:34 add second child into first child ( temp float) 0:34 'n' ( temp float) 0:34 Constant: 0:34 1.000000 0:35 vector-scale ( temp 3-component vector of float) 0:35 Constant: 0:35 0.577350 0:35 0.577350 0:35 -0.577350 0:35 add second child into first child ( temp float) 0:35 'n' ( temp float) 0:35 Constant: 0:35 1.000000 0:37 Sequence 0:37 move second child to first child ( temp structure{ temp 3-component vector of float a}) 0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a}) 0:37 Construct structure ( temp structure{ temp 3-component vector of float a}) 0:37 vector-scale ( temp 3-component vector of float) 0:37 Constant: 0:37 -0.577350 0:37 0.577350 0:37 0.577350 0:37 add second child into first child ( temp float) 0:37 'n' ( temp float) 0:37 Constant: 0:37 1.000000 0:39 Sequence 0:39 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) 0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b}) 0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) 0:39 vector-scale ( temp 3-component vector of float) 0:39 Constant: 0:39 -0.577350 0:39 0.577350 0:39 0.577350 0:39 add second child into first child ( temp float) 0:39 'n' ( temp float) 0:39 Constant: 0:39 1.000000 0:40 vector-scale ( temp 3-component vector of float) 0:40 Constant: 0:40 -0.577350 0:40 0.577350 0:40 0.577350 0:40 add second child into first child ( temp float) 0:40 'n' ( temp float) 0:40 Constant: 0:40 1.000000 0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:46 Function Parameters: 0:? Sequence 0:47 Function Call: Test1( ( temp void) 0:50 move second child to first child ( temp 4-component vector of float) 0:50 color: direct index for structure ( temp 4-component vector of float) 0:50 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1.000000 0:50 1.000000 0:50 1.000000 0:50 1.000000 0:51 Branch: Return with expression 0:51 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:46 Function Definition: main( ( temp void) 0:46 Function Parameters: 0:? Sequence 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:46 color: direct index for structure ( temp 4-component vector of float) 0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:46 Constant: 0:46 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 112 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 109 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 6 "Test1(" Name 10 "PS_OUTPUT" MemberName 10(PS_OUTPUT) 0 "color" Name 12 "@main(" Name 15 "mystruct" MemberName 15(mystruct) 0 "a" Name 17 "test1" Name 22 "test2" Name 28 "test4" Name 30 "mystruct2" MemberName 30(mystruct2) 0 "a" MemberName 30(mystruct2) 1 "b" MemberName 30(mystruct2) 2 "c" Name 32 "test5" Name 37 "n" Name 44 "a" Name 80 "one" MemberName 80(one) 0 "a" Name 82 "oneNonConst" Name 87 "two" MemberName 87(two) 0 "a" MemberName 87(two) 1 "b" Name 89 "twoNonConst" Name 99 "ps_output" Name 109 "@entryPointOutput.color" Decorate 109(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10(PS_OUTPUT): TypeStruct 9(fvec4) 11: TypeFunction 10(PS_OUTPUT) 14: TypeVector 8(float) 2 15(mystruct): TypeStruct 14(fvec2) 16: TypePointer Function 15(mystruct) 18: 8(float) Constant 1065353216 19: 8(float) Constant 1073741824 20: 14(fvec2) ConstantComposite 18 19 21:15(mystruct) ConstantComposite 20 23: 8(float) Constant 1077936128 24: 8(float) Constant 1082130432 25: 14(fvec2) ConstantComposite 23 24 26:15(mystruct) ConstantComposite 25 27: TypePointer Function 8(float) 29: 8(float) Constant 1088421888 30(mystruct2): TypeStruct 8(float) 8(float) 8(float) 31: TypePointer Function 30(mystruct2) 33: 8(float) Constant 1090519040 34: 8(float) Constant 1091567616 35: 8(float) Constant 1092616192 36:30(mystruct2) ConstantComposite 33 34 35 38: 8(float) Constant 0 39: TypeVector 8(float) 3 40: TypeInt 32 0 41: 40(int) Constant 8 42: TypeArray 39(fvec3) 41 43: TypePointer Function 42 45: 8(float) Constant 1058262330 46: 39(fvec3) ConstantComposite 45 45 45 50: 8(float) Constant 3205745978 51: 39(fvec3) ConstantComposite 50 50 50 55: 39(fvec3) ConstantComposite 50 50 45 59: 39(fvec3) ConstantComposite 50 45 50 63: 39(fvec3) ConstantComposite 50 45 45 67: 39(fvec3) ConstantComposite 45 50 50 71: 39(fvec3) ConstantComposite 45 50 45 75: 39(fvec3) ConstantComposite 45 45 50 80(one): TypeStruct 39(fvec3) 81: TypePointer Function 80(one) 87(two): TypeStruct 39(fvec3) 39(fvec3) 88: TypePointer Function 87(two) 98: TypePointer Function 10(PS_OUTPUT) 100: TypeInt 32 1 101: 100(int) Constant 0 102: 9(fvec4) ConstantComposite 18 18 18 18 103: TypePointer Function 9(fvec4) 108: TypePointer Output 9(fvec4) 109(@entryPointOutput.color): 108(ptr) Variable Output 4(main): 2 Function None 3 5: Label 110:10(PS_OUTPUT) FunctionCall 12(@main() 111: 9(fvec4) CompositeExtract 110 0 Store 109(@entryPointOutput.color) 111 Return FunctionEnd 6(Test1(): 2 Function None 3 7: Label 17(test1): 16(ptr) Variable Function 22(test2): 16(ptr) Variable Function 28(test4): 27(ptr) Variable Function 32(test5): 31(ptr) Variable Function 37(n): 27(ptr) Variable Function 44(a): 43(ptr) Variable Function 82(oneNonConst): 81(ptr) Variable Function 89(twoNonConst): 88(ptr) Variable Function Store 17(test1) 21 Store 22(test2) 26 Store 28(test4) 29 Store 32(test5) 36 Store 37(n) 38 47: 8(float) Load 37(n) 48: 8(float) FAdd 47 18 Store 37(n) 48 49: 39(fvec3) VectorTimesScalar 46 48 52: 8(float) Load 37(n) 53: 8(float) FAdd 52 18 Store 37(n) 53 54: 39(fvec3) VectorTimesScalar 51 53 56: 8(float) Load 37(n) 57: 8(float) FAdd 56 18 Store 37(n) 57 58: 39(fvec3) VectorTimesScalar 55 57 60: 8(float) Load 37(n) 61: 8(float) FAdd 60 18 Store 37(n) 61 62: 39(fvec3) VectorTimesScalar 59 61 64: 8(float) Load 37(n) 65: 8(float) FAdd 64 18 Store 37(n) 65 66: 39(fvec3) VectorTimesScalar 63 65 68: 8(float) Load 37(n) 69: 8(float) FAdd 68 18 Store 37(n) 69 70: 39(fvec3) VectorTimesScalar 67 69 72: 8(float) Load 37(n) 73: 8(float) FAdd 72 18 Store 37(n) 73 74: 39(fvec3) VectorTimesScalar 71 73 76: 8(float) Load 37(n) 77: 8(float) FAdd 76 18 Store 37(n) 77 78: 39(fvec3) VectorTimesScalar 75 77 79: 42 CompositeConstruct 49 54 58 62 66 70 74 78 Store 44(a) 79 83: 8(float) Load 37(n) 84: 8(float) FAdd 83 18 Store 37(n) 84 85: 39(fvec3) VectorTimesScalar 63 84 86: 80(one) CompositeConstruct 85 Store 82(oneNonConst) 86 90: 8(float) Load 37(n) 91: 8(float) FAdd 90 18 Store 37(n) 91 92: 39(fvec3) VectorTimesScalar 63 91 93: 8(float) Load 37(n) 94: 8(float) FAdd 93 18 Store 37(n) 94 95: 39(fvec3) VectorTimesScalar 63 94 96: 87(two) CompositeConstruct 92 95 Store 89(twoNonConst) 96 Return FunctionEnd 12(@main():10(PS_OUTPUT) Function None 11 13: Label 99(ps_output): 98(ptr) Variable Function 97: 2 FunctionCall 6(Test1() 104: 103(ptr) AccessChain 99(ps_output) 101 Store 104 102 105:10(PS_OUTPUT) Load 99(ps_output) ReturnValue 105 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.inoutquals.frag.out000066400000000000000000000424311506534232700232670ustar00rootroot00000000000000hlsl.inoutquals.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:8 Function Definition: MyFunc(f1;f1;f1;f1; ( temp void) 0:8 Function Parameters: 0:8 'x' ( in float) 0:8 'y' ( out float) 0:8 'z' ( inout float) 0:8 'w' ( inout float) 0:? Sequence 0:9 move second child to first child ( temp float) 0:9 'y' ( out float) 0:9 'x' ( in float) 0:10 move second child to first child ( temp float) 0:10 'z' ( inout float) 0:10 'y' ( out float) 0:11 move second child to first child ( temp float) 0:11 'x' ( in float) 0:11 Constant: 0:11 -1.000000 0:12 multiply second child into first child ( temp float) 0:12 'w' ( inout float) 0:12 Constant: 0:12 1.000000 0:16 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Function Parameters: 0:16 'inpos' ( in 4-component vector of float) 0:16 'sampleMask' ( out int) 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'x' ( temp float) 0:19 Constant: 0:19 7.000000 0:19 move second child to first child ( temp float) 0:19 'z' ( temp float) 0:19 Constant: 0:19 3.000000 0:20 Function Call: MyFunc(f1;f1;f1;f1; ( temp void) 0:20 'x' ( temp float) 0:20 'y' ( temp float) 0:20 'z' ( temp float) 0:20 direct index ( temp float) 0:20 'inpos' ( in 4-component vector of float) 0:20 Constant: 0:20 3 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Color: direct index for structure ( temp 4-component vector of float) 0:22 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:22 Constant: 0:22 0 (const int) 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 'x' ( temp float) 0:22 'y' ( temp float) 0:22 'z' ( temp float) 0:22 Constant: 0:22 1.000000 0:23 move second child to first child ( temp float) 0:23 Depth: direct index for structure ( temp float) 0:23 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:23 Constant: 0:23 1 (const int) 0:23 direct index ( temp float) 0:23 'inpos' ( in 4-component vector of float) 0:23 Constant: 0:23 3 (const int) 0:25 Branch: Return with expression 0:25 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? 'inpos' ( temp 4-component vector of float) 0:? 'inpos' ( noperspective in 4-component vector of float FragCoord) 0:16 Sequence 0:16 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:? 'inpos' ( temp 4-component vector of float) 0:? 'sampleMask' ( temp int) 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:16 Color: direct index for structure ( temp 4-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:16 Depth: direct index for structure ( temp float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp int) 0:16 direct index ( out int SampleMaskIn) 0:? 'sampleMask' ( out 1-element array of int SampleMaskIn) 0:16 Constant: 0:16 0 (const int) 0:? 'sampleMask' ( temp int) 0:? Linker Objects 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:? 'inpos' ( noperspective in 4-component vector of float FragCoord) 0:? 'sampleMask' ( out 1-element array of int SampleMaskIn) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:8 Function Definition: MyFunc(f1;f1;f1;f1; ( temp void) 0:8 Function Parameters: 0:8 'x' ( in float) 0:8 'y' ( out float) 0:8 'z' ( inout float) 0:8 'w' ( inout float) 0:? Sequence 0:9 move second child to first child ( temp float) 0:9 'y' ( out float) 0:9 'x' ( in float) 0:10 move second child to first child ( temp float) 0:10 'z' ( inout float) 0:10 'y' ( out float) 0:11 move second child to first child ( temp float) 0:11 'x' ( in float) 0:11 Constant: 0:11 -1.000000 0:12 multiply second child into first child ( temp float) 0:12 'w' ( inout float) 0:12 Constant: 0:12 1.000000 0:16 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Function Parameters: 0:16 'inpos' ( in 4-component vector of float) 0:16 'sampleMask' ( out int) 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'x' ( temp float) 0:19 Constant: 0:19 7.000000 0:19 move second child to first child ( temp float) 0:19 'z' ( temp float) 0:19 Constant: 0:19 3.000000 0:20 Function Call: MyFunc(f1;f1;f1;f1; ( temp void) 0:20 'x' ( temp float) 0:20 'y' ( temp float) 0:20 'z' ( temp float) 0:20 direct index ( temp float) 0:20 'inpos' ( in 4-component vector of float) 0:20 Constant: 0:20 3 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Color: direct index for structure ( temp 4-component vector of float) 0:22 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:22 Constant: 0:22 0 (const int) 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 'x' ( temp float) 0:22 'y' ( temp float) 0:22 'z' ( temp float) 0:22 Constant: 0:22 1.000000 0:23 move second child to first child ( temp float) 0:23 Depth: direct index for structure ( temp float) 0:23 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:23 Constant: 0:23 1 (const int) 0:23 direct index ( temp float) 0:23 'inpos' ( in 4-component vector of float) 0:23 Constant: 0:23 3 (const int) 0:25 Branch: Return with expression 0:25 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? 'inpos' ( temp 4-component vector of float) 0:? 'inpos' ( noperspective in 4-component vector of float FragCoord) 0:16 Sequence 0:16 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:? 'inpos' ( temp 4-component vector of float) 0:? 'sampleMask' ( temp int) 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:16 Color: direct index for structure ( temp 4-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:16 Depth: direct index for structure ( temp float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp int) 0:16 direct index ( out int SampleMaskIn) 0:? 'sampleMask' ( out 1-element array of int SampleMaskIn) 0:16 Constant: 0:16 0 (const int) 0:? 'sampleMask' ( temp int) 0:? Linker Objects 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:? 'inpos' ( noperspective in 4-component vector of float FragCoord) 0:? 'sampleMask' ( out 1-element array of int SampleMaskIn) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 92 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 68 78 82 88 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 13 "MyFunc(f1;f1;f1;f1;" Name 9 "x" Name 10 "y" Name 11 "z" Name 12 "w" Name 19 "PS_OUTPUT" MemberName 19(PS_OUTPUT) 0 "Color" MemberName 19(PS_OUTPUT) 1 "Depth" Name 23 "@main(vf4;i1;" Name 21 "inpos" Name 22 "sampleMask" Name 31 "x" Name 33 "z" Name 35 "y" Name 36 "param" Name 38 "param" Name 39 "param" Name 41 "param" Name 52 "psout" Name 66 "inpos" Name 68 "inpos" Name 70 "flattenTemp" Name 71 "sampleMask" Name 72 "param" Name 74 "param" Name 78 "@entryPointOutput.Color" Name 82 "@entryPointOutput.Depth" Name 88 "sampleMask" Decorate 68(inpos) BuiltIn FragCoord Decorate 68(inpos) NoPerspective Decorate 78(@entryPointOutput.Color) Location 0 Decorate 82(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 88(sampleMask) BuiltIn SampleMask 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 2 7(ptr) 7(ptr) 7(ptr) 7(ptr) 15: TypeVector 6(float) 4 16: TypePointer Function 15(fvec4) 17: TypeInt 32 1 18: TypePointer Function 17(int) 19(PS_OUTPUT): TypeStruct 15(fvec4) 6(float) 20: TypeFunction 19(PS_OUTPUT) 16(ptr) 18(ptr) 27: 6(float) Constant 3212836864 28: 6(float) Constant 1065353216 32: 6(float) Constant 1088421888 34: 6(float) Constant 1077936128 42: TypeInt 32 0 43: 42(int) Constant 3 51: TypePointer Function 19(PS_OUTPUT) 53: 17(int) Constant 0 59: 17(int) Constant 1 67: TypePointer Input 15(fvec4) 68(inpos): 67(ptr) Variable Input 77: TypePointer Output 15(fvec4) 78(@entryPointOutput.Color): 77(ptr) Variable Output 81: TypePointer Output 6(float) 82(@entryPointOutput.Depth): 81(ptr) Variable Output 85: 42(int) Constant 1 86: TypeArray 17(int) 85 87: TypePointer Output 86 88(sampleMask): 87(ptr) Variable Output 90: TypePointer Output 17(int) 4(main): 2 Function None 3 5: Label 66(inpos): 16(ptr) Variable Function 70(flattenTemp): 51(ptr) Variable Function 71(sampleMask): 18(ptr) Variable Function 72(param): 16(ptr) Variable Function 74(param): 18(ptr) Variable Function 69: 15(fvec4) Load 68(inpos) Store 66(inpos) 69 73: 15(fvec4) Load 66(inpos) Store 72(param) 73 75:19(PS_OUTPUT) FunctionCall 23(@main(vf4;i1;) 72(param) 74(param) 76: 17(int) Load 74(param) Store 71(sampleMask) 76 Store 70(flattenTemp) 75 79: 16(ptr) AccessChain 70(flattenTemp) 53 80: 15(fvec4) Load 79 Store 78(@entryPointOutput.Color) 80 83: 7(ptr) AccessChain 70(flattenTemp) 59 84: 6(float) Load 83 Store 82(@entryPointOutput.Depth) 84 89: 17(int) Load 71(sampleMask) 91: 90(ptr) AccessChain 88(sampleMask) 53 Store 91 89 Return FunctionEnd 13(MyFunc(f1;f1;f1;f1;): 2 Function None 8 9(x): 7(ptr) FunctionParameter 10(y): 7(ptr) FunctionParameter 11(z): 7(ptr) FunctionParameter 12(w): 7(ptr) FunctionParameter 14: Label 25: 6(float) Load 9(x) Store 10(y) 25 26: 6(float) Load 10(y) Store 11(z) 26 Store 9(x) 27 29: 6(float) Load 12(w) 30: 6(float) FMul 29 28 Store 12(w) 30 Return FunctionEnd 23(@main(vf4;i1;):19(PS_OUTPUT) Function None 20 21(inpos): 16(ptr) FunctionParameter 22(sampleMask): 18(ptr) FunctionParameter 24: Label 31(x): 7(ptr) Variable Function 33(z): 7(ptr) Variable Function 35(y): 7(ptr) Variable Function 36(param): 7(ptr) Variable Function 38(param): 7(ptr) Variable Function 39(param): 7(ptr) Variable Function 41(param): 7(ptr) Variable Function 52(psout): 51(ptr) Variable Function Store 31(x) 32 Store 33(z) 34 37: 6(float) Load 31(x) Store 36(param) 37 40: 6(float) Load 33(z) Store 39(param) 40 44: 7(ptr) AccessChain 21(inpos) 43 45: 6(float) Load 44 Store 41(param) 45 46: 2 FunctionCall 13(MyFunc(f1;f1;f1;f1;) 36(param) 38(param) 39(param) 41(param) 47: 6(float) Load 38(param) Store 35(y) 47 48: 6(float) Load 39(param) Store 33(z) 48 49: 6(float) Load 41(param) 50: 7(ptr) AccessChain 21(inpos) 43 Store 50 49 54: 6(float) Load 31(x) 55: 6(float) Load 35(y) 56: 6(float) Load 33(z) 57: 15(fvec4) CompositeConstruct 54 55 56 28 58: 16(ptr) AccessChain 52(psout) 53 Store 58 57 60: 7(ptr) AccessChain 21(inpos) 43 61: 6(float) Load 60 62: 7(ptr) AccessChain 52(psout) 59 Store 62 61 63:19(PS_OUTPUT) Load 52(psout) ReturnValue 63 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.inoutquals.negative.frag.out000066400000000000000000000025001506534232700250610ustar00rootroot00000000000000hlsl.inoutquals.negative.frag ERROR: 0:1: 'invalid1' : in/out qualifiers are only valid on parameters ERROR: 0:2: 'invalid2' : in/out qualifiers are only valid on parameters ERROR: 0:3: 'invalid3' : in/out qualifiers are only valid on parameters ERROR: 0:4: 'invalid4' : in/out qualifiers are only valid on parameters ERROR: 4 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:6 Function Definition: @main( ( temp void) 0:6 Function Parameters: 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'invalid1' ( in float) 0:? 'invalid2' ( inout float) 0:? 'invalid3' ( inout float) 0:? 'invalid4' ( out float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:6 Function Definition: @main( ( temp void) 0:6 Function Parameters: 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'invalid1' ( in float) 0:? 'invalid2' ( inout float) 0:? 'invalid3' ( inout float) 0:? 'invalid4' ( out float) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.instance.geom.out000066400000000000000000000615731506534232700227070ustar00rootroot00000000000000hlsl.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 glslang-16.0.0/Test/baseResults/hlsl.int.dot.frag.out000066400000000000000000000353171506534232700224470ustar00rootroot00000000000000hlsl.int.dot.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: @main( ( temp 4-component vector of float) 0:1 Function Parameters: 0:? Sequence 0:2 Sequence 0:2 move second child to first child ( temp int) 0:2 'i' ( temp int) 0:2 Constant: 0:2 1 (const int) 0:3 Sequence 0:3 move second child to first child ( temp 1-component vector of int) 0:3 'i2' ( temp 1-component vector of int) 0:3 Constant: 0:3 2 (const int) 0:4 Sequence 0:4 move second child to first child ( temp 2-component vector of int) 0:4 'i3' ( temp 2-component vector of int) 0:4 Constant: 0:4 3 (const int) 0:4 3 (const int) 0:5 Sequence 0:5 move second child to first child ( temp 3-component vector of int) 0:5 'i4' ( temp 3-component vector of int) 0:5 Constant: 0:5 4 (const int) 0:5 4 (const int) 0:5 4 (const int) 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of int) 0:6 'i5' ( temp 4-component vector of int) 0:6 Constant: 0:6 5 (const int) 0:6 5 (const int) 0:6 5 (const int) 0:6 5 (const int) 0:8 move second child to first child ( temp int) 0:8 'i' ( temp int) 0:8 dot-product ( temp int) 0:8 'i' ( temp int) 0:8 'i' ( temp int) 0:9 move second child to first child ( temp 1-component vector of int) 0:9 'i2' ( temp 1-component vector of int) 0:9 Construct int ( temp 1-component vector of int) 0:9 dot-product ( temp int) 0:9 Construct int ( in int) 0:9 'i2' ( temp 1-component vector of int) 0:9 Construct int ( in int) 0:9 'i2' ( temp 1-component vector of int) 0:10 move second child to first child ( temp 2-component vector of int) 0:10 'i3' ( temp 2-component vector of int) 0:10 Construct ivec2 ( temp 2-component vector of int) 0:10 dot-product ( temp int) 0:10 'i3' ( temp 2-component vector of int) 0:10 'i3' ( temp 2-component vector of int) 0:11 move second child to first child ( temp 3-component vector of int) 0:11 'i4' ( temp 3-component vector of int) 0:11 Construct ivec3 ( temp 3-component vector of int) 0:11 dot-product ( temp int) 0:11 'i4' ( temp 3-component vector of int) 0:11 'i4' ( temp 3-component vector of int) 0:12 move second child to first child ( temp 4-component vector of int) 0:12 'i5' ( temp 4-component vector of int) 0:12 Construct ivec4 ( temp 4-component vector of int) 0:12 dot-product ( temp int) 0:12 'i5' ( temp 4-component vector of int) 0:12 'i5' ( temp 4-component vector of int) 0:13 Branch: Return with expression 0:13 Convert int to float ( temp 4-component vector of float) 0:13 add ( temp 4-component vector of int) 0:13 add ( temp 4-component vector of int) 0:13 add ( temp 4-component vector of int) 0:13 add ( temp 4-component vector of int) 0:13 'i' ( temp int) 0:13 Construct ivec4 ( temp 4-component vector of int) 0:13 Construct int ( temp int) 0:13 'i2' ( temp 1-component vector of int) 0:13 vector swizzle ( temp 4-component vector of int) 0:13 'i3' ( temp 2-component vector of int) 0:13 Sequence 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 vector swizzle ( temp 4-component vector of int) 0:13 'i4' ( temp 3-component vector of int) 0:13 Sequence 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 'i5' ( temp 4-component vector of int) 0:1 Function Definition: main( ( temp void) 0:1 Function Parameters: 0:? Sequence 0:1 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:1 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: @main( ( temp 4-component vector of float) 0:1 Function Parameters: 0:? Sequence 0:2 Sequence 0:2 move second child to first child ( temp int) 0:2 'i' ( temp int) 0:2 Constant: 0:2 1 (const int) 0:3 Sequence 0:3 move second child to first child ( temp 1-component vector of int) 0:3 'i2' ( temp 1-component vector of int) 0:3 Constant: 0:3 2 (const int) 0:4 Sequence 0:4 move second child to first child ( temp 2-component vector of int) 0:4 'i3' ( temp 2-component vector of int) 0:4 Constant: 0:4 3 (const int) 0:4 3 (const int) 0:5 Sequence 0:5 move second child to first child ( temp 3-component vector of int) 0:5 'i4' ( temp 3-component vector of int) 0:5 Constant: 0:5 4 (const int) 0:5 4 (const int) 0:5 4 (const int) 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of int) 0:6 'i5' ( temp 4-component vector of int) 0:6 Constant: 0:6 5 (const int) 0:6 5 (const int) 0:6 5 (const int) 0:6 5 (const int) 0:8 move second child to first child ( temp int) 0:8 'i' ( temp int) 0:8 dot-product ( temp int) 0:8 'i' ( temp int) 0:8 'i' ( temp int) 0:9 move second child to first child ( temp 1-component vector of int) 0:9 'i2' ( temp 1-component vector of int) 0:9 Construct int ( temp 1-component vector of int) 0:9 dot-product ( temp int) 0:9 Construct int ( in int) 0:9 'i2' ( temp 1-component vector of int) 0:9 Construct int ( in int) 0:9 'i2' ( temp 1-component vector of int) 0:10 move second child to first child ( temp 2-component vector of int) 0:10 'i3' ( temp 2-component vector of int) 0:10 Construct ivec2 ( temp 2-component vector of int) 0:10 dot-product ( temp int) 0:10 'i3' ( temp 2-component vector of int) 0:10 'i3' ( temp 2-component vector of int) 0:11 move second child to first child ( temp 3-component vector of int) 0:11 'i4' ( temp 3-component vector of int) 0:11 Construct ivec3 ( temp 3-component vector of int) 0:11 dot-product ( temp int) 0:11 'i4' ( temp 3-component vector of int) 0:11 'i4' ( temp 3-component vector of int) 0:12 move second child to first child ( temp 4-component vector of int) 0:12 'i5' ( temp 4-component vector of int) 0:12 Construct ivec4 ( temp 4-component vector of int) 0:12 dot-product ( temp int) 0:12 'i5' ( temp 4-component vector of int) 0:12 'i5' ( temp 4-component vector of int) 0:13 Branch: Return with expression 0:13 Convert int to float ( temp 4-component vector of float) 0:13 add ( temp 4-component vector of int) 0:13 add ( temp 4-component vector of int) 0:13 add ( temp 4-component vector of int) 0:13 add ( temp 4-component vector of int) 0:13 'i' ( temp int) 0:13 Construct ivec4 ( temp 4-component vector of int) 0:13 Construct int ( temp int) 0:13 'i2' ( temp 1-component vector of int) 0:13 vector swizzle ( temp 4-component vector of int) 0:13 'i3' ( temp 2-component vector of int) 0:13 Sequence 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 vector swizzle ( temp 4-component vector of int) 0:13 'i4' ( temp 3-component vector of int) 0:13 Sequence 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 'i5' ( temp 4-component vector of int) 0:1 Function Definition: main( ( temp void) 0:1 Function Parameters: 0:? Sequence 0:1 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:1 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 82 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "i" Name 15 "i2" Name 19 "i3" Name 24 "i4" Name 29 "i5" Name 82 "@entryPointOutput" Decorate 82(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 1 12: TypePointer Function 11(int) 14: 11(int) Constant 1 16: 11(int) Constant 2 17: TypeVector 11(int) 2 18: TypePointer Function 17(ivec2) 20: 11(int) Constant 3 21: 17(ivec2) ConstantComposite 20 20 22: TypeVector 11(int) 3 23: TypePointer Function 22(ivec3) 25: 11(int) Constant 4 26: 22(ivec3) ConstantComposite 25 25 25 27: TypeVector 11(int) 4 28: TypePointer Function 27(ivec4) 30: 11(int) Constant 5 31: 27(ivec4) ConstantComposite 30 30 30 30 81: TypePointer Output 7(fvec4) 82(@entryPointOutput): 81(ptr) Variable Output 4(main): 2 Function None 3 5: Label 83: 7(fvec4) FunctionCall 9(@main() Store 82(@entryPointOutput) 83 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 13(i): 12(ptr) Variable Function 15(i2): 12(ptr) Variable Function 19(i3): 18(ptr) Variable Function 24(i4): 23(ptr) Variable Function 29(i5): 28(ptr) Variable Function Store 13(i) 14 Store 15(i2) 16 Store 19(i3) 21 Store 24(i4) 26 Store 29(i5) 31 32: 11(int) Load 13(i) 33: 11(int) Load 13(i) 34: 11(int) IMul 32 33 Store 13(i) 34 35: 11(int) Load 15(i2) 36: 11(int) Load 15(i2) 37: 11(int) IMul 35 36 Store 15(i2) 37 38: 17(ivec2) Load 19(i3) 39: 17(ivec2) Load 19(i3) 40: 17(ivec2) IMul 38 39 41: 11(int) CompositeExtract 40 0 42: 11(int) CompositeExtract 40 1 43: 11(int) IAdd 41 42 44: 17(ivec2) CompositeConstruct 43 43 Store 19(i3) 44 45: 22(ivec3) Load 24(i4) 46: 22(ivec3) Load 24(i4) 47: 22(ivec3) IMul 45 46 48: 11(int) CompositeExtract 47 0 49: 11(int) CompositeExtract 47 1 50: 11(int) IAdd 48 49 51: 11(int) CompositeExtract 47 2 52: 11(int) IAdd 50 51 53: 22(ivec3) CompositeConstruct 52 52 52 Store 24(i4) 53 54: 27(ivec4) Load 29(i5) 55: 27(ivec4) Load 29(i5) 56: 27(ivec4) IMul 54 55 57: 11(int) CompositeExtract 56 0 58: 11(int) CompositeExtract 56 1 59: 11(int) IAdd 57 58 60: 11(int) CompositeExtract 56 2 61: 11(int) IAdd 59 60 62: 11(int) CompositeExtract 56 3 63: 11(int) IAdd 61 62 64: 27(ivec4) CompositeConstruct 63 63 63 63 Store 29(i5) 64 65: 11(int) Load 13(i) 66: 11(int) Load 15(i2) 67: 27(ivec4) CompositeConstruct 66 66 66 66 68: 27(ivec4) CompositeConstruct 65 65 65 65 69: 27(ivec4) IAdd 68 67 70: 17(ivec2) Load 19(i3) 71: 27(ivec4) VectorShuffle 70 70 0 1 0 1 72: 27(ivec4) IAdd 69 71 73: 22(ivec3) Load 24(i4) 74: 27(ivec4) VectorShuffle 73 73 0 1 2 0 75: 27(ivec4) IAdd 72 74 76: 27(ivec4) Load 29(i5) 77: 27(ivec4) IAdd 75 76 78: 7(fvec4) ConvertSToF 77 ReturnValue 78 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsic.frexp.frag.out000066400000000000000000000357101506534232700242120ustar00rootroot00000000000000hlsl.intrinsic.frexp.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: PixelShaderFunctionS(f1;f1; ( temp float) 0:3 Function Parameters: 0:3 'inF0' ( in float) 0:3 'inF1' ( in float) 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp float) 0:4 'r000' ( temp float) 0:4 frexp ( temp float) 0:4 'inF0' ( in float) 0:4 'inF1' ( in float) 0:5 Branch: Return with expression 0:5 Constant: 0:5 0.000000 0:9 Function Definition: PixelShaderFunction2(vf2;vf2; ( temp 2-component vector of float) 0:9 Function Parameters: 0:9 'inF0' ( in 2-component vector of float) 0:9 'inF1' ( in 2-component vector of float) 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp 2-component vector of float) 0:10 'r000' ( temp 2-component vector of float) 0:10 frexp ( temp 2-component vector of float) 0:10 'inF0' ( in 2-component vector of float) 0:10 'inF1' ( in 2-component vector of float) 0:11 Branch: Return with expression 0:11 Constant: 0:11 1.000000 0:11 2.000000 0:15 Function Definition: PixelShaderFunction3(vf3;vf3; ( temp 3-component vector of float) 0:15 Function Parameters: 0:15 'inF0' ( in 3-component vector of float) 0:15 'inF1' ( in 3-component vector of float) 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 3-component vector of float) 0:16 'r000' ( temp 3-component vector of float) 0:16 frexp ( temp 3-component vector of float) 0:16 'inF0' ( in 3-component vector of float) 0:16 'inF1' ( in 3-component vector of float) 0:17 Branch: Return with expression 0:17 Constant: 0:17 1.000000 0:17 2.000000 0:17 3.000000 0:21 Function Definition: PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float) 0:21 Function Parameters: 0:21 'inF0' ( in 4-component vector of float) 0:21 'inF1' ( in 4-component vector of float) 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'r000' ( temp 4-component vector of float) 0:22 frexp ( temp 4-component vector of float) 0:22 'inF0' ( in 4-component vector of float) 0:22 'inF1' ( in 4-component vector of float) 0:23 Branch: Return with expression 0:23 Constant: 0:23 1.000000 0:23 2.000000 0:23 3.000000 0:23 4.000000 0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:33 Function Parameters: 0:? Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 color: direct index for structure ( temp 4-component vector of float) 0:35 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1.000000 0:35 1.000000 0:35 1.000000 0:35 1.000000 0:36 Branch: Return with expression 0:36 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:33 Function Definition: main( ( temp void) 0:33 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:33 color: direct index for structure ( temp 4-component vector of float) 0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:33 Constant: 0:33 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: PixelShaderFunctionS(f1;f1; ( temp float) 0:3 Function Parameters: 0:3 'inF0' ( in float) 0:3 'inF1' ( in float) 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp float) 0:4 'r000' ( temp float) 0:4 frexp ( temp float) 0:4 'inF0' ( in float) 0:4 'inF1' ( in float) 0:5 Branch: Return with expression 0:5 Constant: 0:5 0.000000 0:9 Function Definition: PixelShaderFunction2(vf2;vf2; ( temp 2-component vector of float) 0:9 Function Parameters: 0:9 'inF0' ( in 2-component vector of float) 0:9 'inF1' ( in 2-component vector of float) 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp 2-component vector of float) 0:10 'r000' ( temp 2-component vector of float) 0:10 frexp ( temp 2-component vector of float) 0:10 'inF0' ( in 2-component vector of float) 0:10 'inF1' ( in 2-component vector of float) 0:11 Branch: Return with expression 0:11 Constant: 0:11 1.000000 0:11 2.000000 0:15 Function Definition: PixelShaderFunction3(vf3;vf3; ( temp 3-component vector of float) 0:15 Function Parameters: 0:15 'inF0' ( in 3-component vector of float) 0:15 'inF1' ( in 3-component vector of float) 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 3-component vector of float) 0:16 'r000' ( temp 3-component vector of float) 0:16 frexp ( temp 3-component vector of float) 0:16 'inF0' ( in 3-component vector of float) 0:16 'inF1' ( in 3-component vector of float) 0:17 Branch: Return with expression 0:17 Constant: 0:17 1.000000 0:17 2.000000 0:17 3.000000 0:21 Function Definition: PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float) 0:21 Function Parameters: 0:21 'inF0' ( in 4-component vector of float) 0:21 'inF1' ( in 4-component vector of float) 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:22 'r000' ( temp 4-component vector of float) 0:22 frexp ( temp 4-component vector of float) 0:22 'inF0' ( in 4-component vector of float) 0:22 'inF1' ( in 4-component vector of float) 0:23 Branch: Return with expression 0:23 Constant: 0:23 1.000000 0:23 2.000000 0:23 3.000000 0:23 4.000000 0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:33 Function Parameters: 0:? Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 color: direct index for structure ( temp 4-component vector of float) 0:35 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1.000000 0:35 1.000000 0:35 1.000000 0:35 1.000000 0:36 Branch: Return with expression 0:36 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:33 Function Definition: main( ( temp void) 0:33 Function Parameters: 0:? Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:33 color: direct index for structure ( temp 4-component vector of float) 0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:33 Constant: 0:33 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 98 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 95 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "PixelShaderFunctionS(f1;f1;" Name 9 "inF0" Name 10 "inF1" Name 18 "PixelShaderFunction2(vf2;vf2;" Name 16 "inF0" Name 17 "inF1" Name 25 "PixelShaderFunction3(vf3;vf3;" Name 23 "inF0" Name 24 "inF1" Name 32 "PixelShaderFunction(vf4;vf4;" Name 30 "inF0" Name 31 "inF1" Name 34 "PS_OUTPUT" MemberName 34(PS_OUTPUT) 0 "color" Name 36 "@main(" Name 38 "r000" Name 41 "ResType" Name 49 "r000" Name 52 "ResType" Name 62 "r000" Name 65 "ResType" Name 74 "r000" Name 77 "ResType" Name 87 "ps_output" Name 95 "@entryPointOutput.color" Decorate 95(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 7(ptr) 13: TypeVector 6(float) 2 14: TypePointer Function 13(fvec2) 15: TypeFunction 13(fvec2) 14(ptr) 14(ptr) 20: TypeVector 6(float) 3 21: TypePointer Function 20(fvec3) 22: TypeFunction 20(fvec3) 21(ptr) 21(ptr) 27: TypeVector 6(float) 4 28: TypePointer Function 27(fvec4) 29: TypeFunction 27(fvec4) 28(ptr) 28(ptr) 34(PS_OUTPUT): TypeStruct 27(fvec4) 35: TypeFunction 34(PS_OUTPUT) 40: TypeInt 32 1 41(ResType): TypeStruct 6(float) 40(int) 46: 6(float) Constant 0 51: TypeVector 40(int) 2 52(ResType): TypeStruct 13(fvec2) 51(ivec2) 57: 6(float) Constant 1065353216 58: 6(float) Constant 1073741824 59: 13(fvec2) ConstantComposite 57 58 64: TypeVector 40(int) 3 65(ResType): TypeStruct 20(fvec3) 64(ivec3) 70: 6(float) Constant 1077936128 71: 20(fvec3) ConstantComposite 57 58 70 76: TypeVector 40(int) 4 77(ResType): TypeStruct 27(fvec4) 76(ivec4) 82: 6(float) Constant 1082130432 83: 27(fvec4) ConstantComposite 57 58 70 82 86: TypePointer Function 34(PS_OUTPUT) 88: 40(int) Constant 0 89: 27(fvec4) ConstantComposite 57 57 57 57 94: TypePointer Output 27(fvec4) 95(@entryPointOutput.color): 94(ptr) Variable Output 4(main): 2 Function None 3 5: Label 96:34(PS_OUTPUT) FunctionCall 36(@main() 97: 27(fvec4) CompositeExtract 96 0 Store 95(@entryPointOutput.color) 97 Return FunctionEnd 11(PixelShaderFunctionS(f1;f1;): 6(float) Function None 8 9(inF0): 7(ptr) FunctionParameter 10(inF1): 7(ptr) FunctionParameter 12: Label 38(r000): 7(ptr) Variable Function 39: 6(float) Load 9(inF0) 42: 41(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 39 43: 40(int) CompositeExtract 42 1 44: 6(float) ConvertSToF 43 Store 10(inF1) 44 45: 6(float) CompositeExtract 42 0 Store 38(r000) 45 ReturnValue 46 FunctionEnd 18(PixelShaderFunction2(vf2;vf2;): 13(fvec2) Function None 15 16(inF0): 14(ptr) FunctionParameter 17(inF1): 14(ptr) FunctionParameter 19: Label 49(r000): 14(ptr) Variable Function 50: 13(fvec2) Load 16(inF0) 53: 52(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 50 54: 51(ivec2) CompositeExtract 53 1 55: 13(fvec2) ConvertSToF 54 Store 17(inF1) 55 56: 13(fvec2) CompositeExtract 53 0 Store 49(r000) 56 ReturnValue 59 FunctionEnd 25(PixelShaderFunction3(vf3;vf3;): 20(fvec3) Function None 22 23(inF0): 21(ptr) FunctionParameter 24(inF1): 21(ptr) FunctionParameter 26: Label 62(r000): 21(ptr) Variable Function 63: 20(fvec3) Load 23(inF0) 66: 65(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 63 67: 64(ivec3) CompositeExtract 66 1 68: 20(fvec3) ConvertSToF 67 Store 24(inF1) 68 69: 20(fvec3) CompositeExtract 66 0 Store 62(r000) 69 ReturnValue 71 FunctionEnd 32(PixelShaderFunction(vf4;vf4;): 27(fvec4) Function None 29 30(inF0): 28(ptr) FunctionParameter 31(inF1): 28(ptr) FunctionParameter 33: Label 74(r000): 28(ptr) Variable Function 75: 27(fvec4) Load 30(inF0) 78: 77(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 75 79: 76(ivec4) CompositeExtract 78 1 80: 27(fvec4) ConvertSToF 79 Store 31(inF1) 80 81: 27(fvec4) CompositeExtract 78 0 Store 74(r000) 81 ReturnValue 83 FunctionEnd 36(@main():34(PS_OUTPUT) Function None 35 37: Label 87(ps_output): 86(ptr) Variable Function 90: 28(ptr) AccessChain 87(ps_output) 88 Store 90 89 91:34(PS_OUTPUT) Load 87(ps_output) ReturnValue 91 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsic.frexp.vert.out000066400000000000000000000225421506534232700242520ustar00rootroot00000000000000hlsl.intrinsic.frexp.vert Shader version: 500 0:? Sequence 0:2 Function Definition: VertexShaderFunctionS(f1;f1; ( temp float) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:2 'inF1' ( in float) 0:? Sequence 0:3 frexp ( temp float) 0:3 'inF0' ( in float) 0:3 'inF1' ( in float) 0:4 Branch: Return with expression 0:4 Constant: 0:4 0.000000 0:8 Function Definition: VertexShaderFunction2(vf2;vf2; ( temp 2-component vector of float) 0:8 Function Parameters: 0:8 'inF0' ( in 2-component vector of float) 0:8 'inF1' ( in 2-component vector of float) 0:? Sequence 0:9 frexp ( temp 2-component vector of float) 0:9 'inF0' ( in 2-component vector of float) 0:9 'inF1' ( in 2-component vector of float) 0:10 Branch: Return with expression 0:10 Constant: 0:10 1.000000 0:10 2.000000 0:14 Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float) 0:14 Function Parameters: 0:14 'inF0' ( in 3-component vector of float) 0:14 'inF1' ( in 3-component vector of float) 0:? Sequence 0:15 frexp ( temp 3-component vector of float) 0:15 'inF0' ( in 3-component vector of float) 0:15 'inF1' ( in 3-component vector of float) 0:16 Branch: Return with expression 0:16 Constant: 0:16 1.000000 0:16 2.000000 0:16 3.000000 0:20 Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float) 0:20 Function Parameters: 0:20 'inF0' ( in 4-component vector of float) 0:20 'inF1' ( in 4-component vector of float) 0:? Sequence 0:21 frexp ( temp 4-component vector of float) 0:21 'inF0' ( in 4-component vector of float) 0:21 'inF1' ( in 4-component vector of float) 0:22 Branch: Return with expression 0:22 Constant: 0:22 1.000000 0:22 2.000000 0:22 3.000000 0:22 4.000000 0:? Linker Objects Linked vertex stage: WARNING: Linking vertex stage: Entry point not found Shader version: 500 0:? Sequence 0:2 Function Definition: VertexShaderFunctionS(f1;f1; ( temp float) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:2 'inF1' ( in float) 0:? Sequence 0:3 frexp ( temp float) 0:3 'inF0' ( in float) 0:3 'inF1' ( in float) 0:4 Branch: Return with expression 0:4 Constant: 0:4 0.000000 0:8 Function Definition: VertexShaderFunction2(vf2;vf2; ( temp 2-component vector of float) 0:8 Function Parameters: 0:8 'inF0' ( in 2-component vector of float) 0:8 'inF1' ( in 2-component vector of float) 0:? Sequence 0:9 frexp ( temp 2-component vector of float) 0:9 'inF0' ( in 2-component vector of float) 0:9 'inF1' ( in 2-component vector of float) 0:10 Branch: Return with expression 0:10 Constant: 0:10 1.000000 0:10 2.000000 0:14 Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float) 0:14 Function Parameters: 0:14 'inF0' ( in 3-component vector of float) 0:14 'inF1' ( in 3-component vector of float) 0:? Sequence 0:15 frexp ( temp 3-component vector of float) 0:15 'inF0' ( in 3-component vector of float) 0:15 'inF1' ( in 3-component vector of float) 0:16 Branch: Return with expression 0:16 Constant: 0:16 1.000000 0:16 2.000000 0:16 3.000000 0:20 Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float) 0:20 Function Parameters: 0:20 'inF0' ( in 4-component vector of float) 0:20 'inF1' ( in 4-component vector of float) 0:? Sequence 0:21 frexp ( temp 4-component vector of float) 0:21 'inF0' ( in 4-component vector of float) 0:21 'inF1' ( in 4-component vector of float) 0:22 Branch: Return with expression 0:22 Constant: 0:22 1.000000 0:22 2.000000 0:22 3.000000 0:22 4.000000 0:? Linker Objects // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "VertexShaderFunction" Source HLSL 500 Name 4 "VertexShaderFunction" Name 11 "VertexShaderFunctionS(f1;f1;" Name 9 "inF0" Name 10 "inF1" Name 18 "VertexShaderFunction2(vf2;vf2;" Name 16 "inF0" Name 17 "inF1" Name 25 "VertexShaderFunction3(vf3;vf3;" Name 23 "inF0" Name 24 "inF1" Name 32 "VertexShaderFunction4(vf4;vf4;" Name 30 "inF0" Name 31 "inF1" Name 36 "ResType" Name 46 "ResType" Name 58 "ResType" Name 69 "ResType" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 7(ptr) 13: TypeVector 6(float) 2 14: TypePointer Function 13(fvec2) 15: TypeFunction 13(fvec2) 14(ptr) 14(ptr) 20: TypeVector 6(float) 3 21: TypePointer Function 20(fvec3) 22: TypeFunction 20(fvec3) 21(ptr) 21(ptr) 27: TypeVector 6(float) 4 28: TypePointer Function 27(fvec4) 29: TypeFunction 27(fvec4) 28(ptr) 28(ptr) 35: TypeInt 32 1 36(ResType): TypeStruct 6(float) 35(int) 41: 6(float) Constant 0 45: TypeVector 35(int) 2 46(ResType): TypeStruct 13(fvec2) 45(ivec2) 51: 6(float) Constant 1065353216 52: 6(float) Constant 1073741824 53: 13(fvec2) ConstantComposite 51 52 57: TypeVector 35(int) 3 58(ResType): TypeStruct 20(fvec3) 57(ivec3) 63: 6(float) Constant 1077936128 64: 20(fvec3) ConstantComposite 51 52 63 68: TypeVector 35(int) 4 69(ResType): TypeStruct 27(fvec4) 68(ivec4) 74: 6(float) Constant 1082130432 75: 27(fvec4) ConstantComposite 51 52 63 74 4(VertexShaderFunction): 2 Function None 3 5: Label Return FunctionEnd 11(VertexShaderFunctionS(f1;f1;): 6(float) Function None 8 9(inF0): 7(ptr) FunctionParameter 10(inF1): 7(ptr) FunctionParameter 12: Label 34: 6(float) Load 9(inF0) 37: 36(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 34 38: 35(int) CompositeExtract 37 1 39: 6(float) ConvertSToF 38 Store 10(inF1) 39 40: 6(float) CompositeExtract 37 0 ReturnValue 41 FunctionEnd 18(VertexShaderFunction2(vf2;vf2;): 13(fvec2) Function None 15 16(inF0): 14(ptr) FunctionParameter 17(inF1): 14(ptr) FunctionParameter 19: Label 44: 13(fvec2) Load 16(inF0) 47: 46(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 44 48: 45(ivec2) CompositeExtract 47 1 49: 13(fvec2) ConvertSToF 48 Store 17(inF1) 49 50: 13(fvec2) CompositeExtract 47 0 ReturnValue 53 FunctionEnd 25(VertexShaderFunction3(vf3;vf3;): 20(fvec3) Function None 22 23(inF0): 21(ptr) FunctionParameter 24(inF1): 21(ptr) FunctionParameter 26: Label 56: 20(fvec3) Load 23(inF0) 59: 58(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 56 60: 57(ivec3) CompositeExtract 59 1 61: 20(fvec3) ConvertSToF 60 Store 24(inF1) 61 62: 20(fvec3) CompositeExtract 59 0 ReturnValue 64 FunctionEnd 32(VertexShaderFunction4(vf4;vf4;): 27(fvec4) Function None 29 30(inF0): 28(ptr) FunctionParameter 31(inF1): 28(ptr) FunctionParameter 33: Label 67: 27(fvec4) Load 30(inF0) 70: 69(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 67 71: 68(ivec4) CompositeExtract 70 1 72: 27(fvec4) ConvertSToF 71 Store 31(inF1) 72 73: 27(fvec4) CompositeExtract 70 0 ReturnValue 75 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.barriers.comp.out000066400000000000000000000056261506534232700251040ustar00rootroot00000000000000hlsl.intrinsics.barriers.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:3 Function Definition: @ComputeShaderFunction( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:4 MemoryBarrier ( temp void) 0:5 AllMemoryBarrierWithGroupSync ( temp void) 0:6 DeviceMemoryBarrier ( temp void) 0:7 DeviceMemoryBarrierWithGroupSync ( temp void) 0:8 WorkgroupMemoryBarrier ( temp void) 0:9 WorkgroupMemoryBarrierWithGroupSync ( temp void) 0:3 Function Definition: ComputeShaderFunction( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 Function Call: @ComputeShaderFunction( ( temp void) 0:? Linker Objects Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:3 Function Definition: @ComputeShaderFunction( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:4 MemoryBarrier ( temp void) 0:5 AllMemoryBarrierWithGroupSync ( temp void) 0:6 DeviceMemoryBarrier ( temp void) 0:7 DeviceMemoryBarrierWithGroupSync ( temp void) 0:8 WorkgroupMemoryBarrier ( temp void) 0:9 WorkgroupMemoryBarrierWithGroupSync ( temp void) 0:3 Function Definition: ComputeShaderFunction( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 Function Call: @ComputeShaderFunction( ( temp void) 0:? Linker Objects // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "ComputeShaderFunction" ExecutionMode 4 LocalSize 1 1 1 Source HLSL 500 Name 4 "ComputeShaderFunction" Name 6 "@ComputeShaderFunction(" 2: TypeVoid 3: TypeFunction 2 8: TypeInt 32 0 9: 8(int) Constant 1 10: 8(int) Constant 3400 11: 8(int) Constant 2 12: 8(int) Constant 2120 13: 8(int) Constant 264 4(ComputeShaderFunction): 2 Function None 3 5: Label 14: 2 FunctionCall 6(@ComputeShaderFunction() Return FunctionEnd 6(@ComputeShaderFunction(): 2 Function None 3 7: Label MemoryBarrier 9 10 ControlBarrier 11 9 10 MemoryBarrier 9 12 ControlBarrier 11 9 12 MemoryBarrier 11 13 ControlBarrier 11 11 13 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.comp.out000066400000000000000000001623121506534232700232700ustar00rootroot00000000000000hlsl.intrinsics.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:19 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float) 0:19 Function Parameters: 0:19 'inF0' ( in float) 0:19 'inF1' ( in float) 0:19 'inF2' ( in float) 0:19 'inU0' ( in uint) 0:19 'inU1' ( in uint) 0:? Sequence 0:23 all ( temp bool) 0:23 Convert float to bool ( temp bool) 0:23 'inF0' ( in float) 0:26 AtomicAdd ( temp uint) 0:26 'gs_ua' ( shared uint) 0:26 'gs_ub' ( shared uint) 0:27 move second child to first child ( temp uint) 0:27 'out_u1' ( temp uint) 0:27 AtomicAdd ( temp uint) 0:27 'gs_ua' ( shared uint) 0:27 'gs_ub' ( shared uint) 0:28 AtomicAnd ( temp uint) 0:28 'gs_ua' ( shared uint) 0:28 'gs_ub' ( shared uint) 0:29 move second child to first child ( temp uint) 0:29 'out_u1' ( temp uint) 0:29 AtomicAnd ( temp uint) 0:29 'gs_ua' ( shared uint) 0:29 'gs_ub' ( shared uint) 0:30 move second child to first child ( temp uint) 0:30 'out_u1' ( temp uint) 0:30 AtomicCompSwap ( temp uint) 0:30 'gs_ua' ( shared uint) 0:30 'gs_ub' ( shared uint) 0:30 'gs_uc' ( shared uint) 0:31 move second child to first child ( temp uint) 0:31 'out_u1' ( temp uint) 0:31 AtomicExchange ( temp uint) 0:31 'gs_ua' ( shared uint) 0:31 'gs_ub' ( shared uint) 0:32 AtomicMax ( temp uint) 0:32 'gs_ua' ( shared uint) 0:32 'gs_ub' ( shared uint) 0:33 move second child to first child ( temp uint) 0:33 'out_u1' ( temp uint) 0:33 AtomicMax ( temp uint) 0:33 'gs_ua' ( shared uint) 0:33 'gs_ub' ( shared uint) 0:34 AtomicMin ( temp uint) 0:34 'gs_ua' ( shared uint) 0:34 'gs_ub' ( shared uint) 0:35 move second child to first child ( temp uint) 0:35 'out_u1' ( temp uint) 0:35 AtomicMin ( temp uint) 0:35 'gs_ua' ( shared uint) 0:35 'gs_ub' ( shared uint) 0:36 AtomicOr ( temp uint) 0:36 'gs_ua' ( shared uint) 0:36 'gs_ub' ( shared uint) 0:37 move second child to first child ( temp uint) 0:37 'out_u1' ( temp uint) 0:37 AtomicOr ( temp uint) 0:37 'gs_ua' ( shared uint) 0:37 'gs_ub' ( shared uint) 0:38 AtomicXor ( temp uint) 0:38 'gs_ua' ( shared uint) 0:38 'gs_ub' ( shared uint) 0:39 move second child to first child ( temp uint) 0:39 'out_u1' ( temp uint) 0:39 AtomicXor ( temp uint) 0:39 'gs_ua' ( shared uint) 0:39 'gs_ub' ( shared uint) 0:41 AtomicAdd ( temp float) 0:41 'gs_fa' ( shared float) 0:41 'gs_fb' ( shared float) 0:45 Branch: Return with expression 0:45 Constant: 0:45 0.000000 0:49 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) 0:49 Function Parameters: 0:49 'inF0' ( in 1-component vector of float) 0:49 'inF1' ( in 1-component vector of float) 0:49 'inF2' ( in 1-component vector of float) 0:? Sequence 0:51 Branch: Return with expression 0:51 Constant: 0:51 0.000000 0:55 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) 0:55 Function Parameters: 0:55 'inF0' ( in 2-component vector of float) 0:55 'inF1' ( in 2-component vector of float) 0:55 'inF2' ( in 2-component vector of float) 0:55 'inU0' ( in 2-component vector of uint) 0:55 'inU1' ( in 2-component vector of uint) 0:? Sequence 0:59 all ( temp bool) 0:59 Convert float to bool ( temp 2-component vector of bool) 0:59 'inF0' ( in 2-component vector of float) 0:62 AtomicAdd ( temp 2-component vector of uint) 0:62 'gs_ua2' ( shared 2-component vector of uint) 0:62 'gs_ub2' ( shared 2-component vector of uint) 0:63 move second child to first child ( temp 2-component vector of uint) 0:63 'out_u2' ( temp 2-component vector of uint) 0:63 AtomicAdd ( temp 2-component vector of uint) 0:63 'gs_ua2' ( shared 2-component vector of uint) 0:63 'gs_ub2' ( shared 2-component vector of uint) 0:64 AtomicAnd ( temp 2-component vector of uint) 0:64 'gs_ua2' ( shared 2-component vector of uint) 0:64 'gs_ub2' ( shared 2-component vector of uint) 0:65 move second child to first child ( temp 2-component vector of uint) 0:65 'out_u2' ( temp 2-component vector of uint) 0:65 AtomicAnd ( temp 2-component vector of uint) 0:65 'gs_ua2' ( shared 2-component vector of uint) 0:65 'gs_ub2' ( shared 2-component vector of uint) 0:66 move second child to first child ( temp 2-component vector of uint) 0:66 'out_u2' ( temp 2-component vector of uint) 0:66 AtomicCompSwap ( temp 2-component vector of uint) 0:66 'gs_ua2' ( shared 2-component vector of uint) 0:66 'gs_ub2' ( shared 2-component vector of uint) 0:66 'gs_uc2' ( shared 2-component vector of uint) 0:67 move second child to first child ( temp 2-component vector of uint) 0:67 'out_u2' ( temp 2-component vector of uint) 0:67 AtomicExchange ( temp 2-component vector of uint) 0:67 'gs_ua2' ( shared 2-component vector of uint) 0:67 'gs_ub2' ( shared 2-component vector of uint) 0:68 AtomicMax ( temp 2-component vector of uint) 0:68 'gs_ua2' ( shared 2-component vector of uint) 0:68 'gs_ub2' ( shared 2-component vector of uint) 0:69 move second child to first child ( temp 2-component vector of uint) 0:69 'out_u2' ( temp 2-component vector of uint) 0:69 AtomicMax ( temp 2-component vector of uint) 0:69 'gs_ua2' ( shared 2-component vector of uint) 0:69 'gs_ub2' ( shared 2-component vector of uint) 0:70 AtomicMin ( temp 2-component vector of uint) 0:70 'gs_ua2' ( shared 2-component vector of uint) 0:70 'gs_ub2' ( shared 2-component vector of uint) 0:71 move second child to first child ( temp 2-component vector of uint) 0:71 'out_u2' ( temp 2-component vector of uint) 0:71 AtomicMin ( temp 2-component vector of uint) 0:71 'gs_ua2' ( shared 2-component vector of uint) 0:71 'gs_ub2' ( shared 2-component vector of uint) 0:72 AtomicOr ( temp 2-component vector of uint) 0:72 'gs_ua2' ( shared 2-component vector of uint) 0:72 'gs_ub2' ( shared 2-component vector of uint) 0:73 move second child to first child ( temp 2-component vector of uint) 0:73 'out_u2' ( temp 2-component vector of uint) 0:73 AtomicOr ( temp 2-component vector of uint) 0:73 'gs_ua2' ( shared 2-component vector of uint) 0:73 'gs_ub2' ( shared 2-component vector of uint) 0:74 AtomicXor ( temp 2-component vector of uint) 0:74 'gs_ua2' ( shared 2-component vector of uint) 0:74 'gs_ub2' ( shared 2-component vector of uint) 0:75 move second child to first child ( temp 2-component vector of uint) 0:75 'out_u2' ( temp 2-component vector of uint) 0:75 AtomicXor ( temp 2-component vector of uint) 0:75 'gs_ua2' ( shared 2-component vector of uint) 0:75 'gs_ub2' ( shared 2-component vector of uint) 0:78 Branch: Return with expression 0:78 Constant: 0:78 1.000000 0:78 2.000000 0:82 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) 0:82 Function Parameters: 0:82 'inF0' ( in 3-component vector of float) 0:82 'inF1' ( in 3-component vector of float) 0:82 'inF2' ( in 3-component vector of float) 0:82 'inU0' ( in 3-component vector of uint) 0:82 'inU1' ( in 3-component vector of uint) 0:? Sequence 0:86 all ( temp bool) 0:86 Convert float to bool ( temp 3-component vector of bool) 0:86 'inF0' ( in 3-component vector of float) 0:89 AtomicAdd ( temp 3-component vector of uint) 0:89 'gs_ua3' ( shared 3-component vector of uint) 0:89 'gs_ub3' ( shared 3-component vector of uint) 0:90 move second child to first child ( temp 3-component vector of uint) 0:90 'out_u3' ( temp 3-component vector of uint) 0:90 AtomicAdd ( temp 3-component vector of uint) 0:90 'gs_ua3' ( shared 3-component vector of uint) 0:90 'gs_ub3' ( shared 3-component vector of uint) 0:91 AtomicAnd ( temp 3-component vector of uint) 0:91 'gs_ua3' ( shared 3-component vector of uint) 0:91 'gs_ub3' ( shared 3-component vector of uint) 0:92 move second child to first child ( temp 3-component vector of uint) 0:92 'out_u3' ( temp 3-component vector of uint) 0:92 AtomicAnd ( temp 3-component vector of uint) 0:92 'gs_ua3' ( shared 3-component vector of uint) 0:92 'gs_ub3' ( shared 3-component vector of uint) 0:93 move second child to first child ( temp 3-component vector of uint) 0:93 'out_u3' ( temp 3-component vector of uint) 0:93 AtomicCompSwap ( temp 3-component vector of uint) 0:93 'gs_ua3' ( shared 3-component vector of uint) 0:93 'gs_ub3' ( shared 3-component vector of uint) 0:93 'gs_uc3' ( shared 3-component vector of uint) 0:94 move second child to first child ( temp 3-component vector of uint) 0:94 'out_u3' ( temp 3-component vector of uint) 0:94 AtomicExchange ( temp 3-component vector of uint) 0:94 'gs_ua3' ( shared 3-component vector of uint) 0:94 'gs_ub3' ( shared 3-component vector of uint) 0:95 AtomicMax ( temp 3-component vector of uint) 0:95 'gs_ua3' ( shared 3-component vector of uint) 0:95 'gs_ub3' ( shared 3-component vector of uint) 0:96 move second child to first child ( temp 3-component vector of uint) 0:96 'out_u3' ( temp 3-component vector of uint) 0:96 AtomicMax ( temp 3-component vector of uint) 0:96 'gs_ua3' ( shared 3-component vector of uint) 0:96 'gs_ub3' ( shared 3-component vector of uint) 0:97 AtomicMin ( temp 3-component vector of uint) 0:97 'gs_ua3' ( shared 3-component vector of uint) 0:97 'gs_ub3' ( shared 3-component vector of uint) 0:98 move second child to first child ( temp 3-component vector of uint) 0:98 'out_u3' ( temp 3-component vector of uint) 0:98 AtomicMin ( temp 3-component vector of uint) 0:98 'gs_ua3' ( shared 3-component vector of uint) 0:98 'gs_ub3' ( shared 3-component vector of uint) 0:99 AtomicOr ( temp 3-component vector of uint) 0:99 'gs_ua3' ( shared 3-component vector of uint) 0:99 'gs_ub3' ( shared 3-component vector of uint) 0:100 move second child to first child ( temp 3-component vector of uint) 0:100 'out_u3' ( temp 3-component vector of uint) 0:100 AtomicOr ( temp 3-component vector of uint) 0:100 'gs_ua3' ( shared 3-component vector of uint) 0:100 'gs_ub3' ( shared 3-component vector of uint) 0:101 AtomicXor ( temp 3-component vector of uint) 0:101 'gs_ua3' ( shared 3-component vector of uint) 0:101 'gs_ub3' ( shared 3-component vector of uint) 0:102 move second child to first child ( temp 3-component vector of uint) 0:102 'out_u3' ( temp 3-component vector of uint) 0:102 AtomicXor ( temp 3-component vector of uint) 0:102 'gs_ua3' ( shared 3-component vector of uint) 0:102 'gs_ub3' ( shared 3-component vector of uint) 0:105 Branch: Return with expression 0:105 Constant: 0:105 1.000000 0:105 2.000000 0:105 3.000000 0:109 Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:109 Function Parameters: 0:109 'inF0' ( in 4-component vector of float) 0:109 'inF1' ( in 4-component vector of float) 0:109 'inF2' ( in 4-component vector of float) 0:109 'inU0' ( in 4-component vector of uint) 0:109 'inU1' ( in 4-component vector of uint) 0:? Sequence 0:113 all ( temp bool) 0:113 Convert float to bool ( temp 4-component vector of bool) 0:113 'inF0' ( in 4-component vector of float) 0:116 AtomicAdd ( temp 4-component vector of uint) 0:116 'gs_ua4' ( shared 4-component vector of uint) 0:116 'gs_ub4' ( shared 4-component vector of uint) 0:117 move second child to first child ( temp 4-component vector of uint) 0:117 'out_u4' ( temp 4-component vector of uint) 0:117 AtomicAdd ( temp 4-component vector of uint) 0:117 'gs_ua4' ( shared 4-component vector of uint) 0:117 'gs_ub4' ( shared 4-component vector of uint) 0:118 AtomicAnd ( temp 4-component vector of uint) 0:118 'gs_ua4' ( shared 4-component vector of uint) 0:118 'gs_ub4' ( shared 4-component vector of uint) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 'out_u4' ( temp 4-component vector of uint) 0:119 AtomicAnd ( temp 4-component vector of uint) 0:119 'gs_ua4' ( shared 4-component vector of uint) 0:119 'gs_ub4' ( shared 4-component vector of uint) 0:120 move second child to first child ( temp 4-component vector of uint) 0:120 'out_u4' ( temp 4-component vector of uint) 0:120 AtomicCompSwap ( temp 4-component vector of uint) 0:120 'gs_ua4' ( shared 4-component vector of uint) 0:120 'gs_ub4' ( shared 4-component vector of uint) 0:120 'gs_uc4' ( shared 4-component vector of uint) 0:121 move second child to first child ( temp 4-component vector of uint) 0:121 'out_u4' ( temp 4-component vector of uint) 0:121 AtomicExchange ( temp 4-component vector of uint) 0:121 'gs_ua4' ( shared 4-component vector of uint) 0:121 'gs_ub4' ( shared 4-component vector of uint) 0:122 AtomicMax ( temp 4-component vector of uint) 0:122 'gs_ua4' ( shared 4-component vector of uint) 0:122 'gs_ub4' ( shared 4-component vector of uint) 0:123 move second child to first child ( temp 4-component vector of uint) 0:123 'out_u4' ( temp 4-component vector of uint) 0:123 AtomicMax ( temp 4-component vector of uint) 0:123 'gs_ua4' ( shared 4-component vector of uint) 0:123 'gs_ub4' ( shared 4-component vector of uint) 0:124 AtomicMin ( temp 4-component vector of uint) 0:124 'gs_ua4' ( shared 4-component vector of uint) 0:124 'gs_ub4' ( shared 4-component vector of uint) 0:125 move second child to first child ( temp 4-component vector of uint) 0:125 'out_u4' ( temp 4-component vector of uint) 0:125 AtomicMin ( temp 4-component vector of uint) 0:125 'gs_ua4' ( shared 4-component vector of uint) 0:125 'gs_ub4' ( shared 4-component vector of uint) 0:126 AtomicOr ( temp 4-component vector of uint) 0:126 'gs_ua4' ( shared 4-component vector of uint) 0:126 'gs_ub4' ( shared 4-component vector of uint) 0:127 move second child to first child ( temp 4-component vector of uint) 0:127 'out_u4' ( temp 4-component vector of uint) 0:127 AtomicOr ( temp 4-component vector of uint) 0:127 'gs_ua4' ( shared 4-component vector of uint) 0:127 'gs_ub4' ( shared 4-component vector of uint) 0:128 AtomicXor ( temp 4-component vector of uint) 0:128 'gs_ua4' ( shared 4-component vector of uint) 0:128 'gs_ub4' ( shared 4-component vector of uint) 0:129 move second child to first child ( temp 4-component vector of uint) 0:129 'out_u4' ( temp 4-component vector of uint) 0:129 AtomicXor ( temp 4-component vector of uint) 0:129 'gs_ua4' ( shared 4-component vector of uint) 0:129 'gs_ub4' ( shared 4-component vector of uint) 0:132 Branch: Return with expression 0:132 Constant: 0:132 1.000000 0:132 2.000000 0:132 3.000000 0:132 4.000000 0:109 Function Definition: ComputeShaderFunction( ( temp void) 0:109 Function Parameters: 0:? Sequence 0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:109 move second child to first child ( temp 4-component vector of uint) 0:? 'inU0' ( temp 4-component vector of uint) 0:? 'inU0' (layout( location=3) in 4-component vector of uint) 0:109 move second child to first child ( temp 4-component vector of uint) 0:? 'inU1' ( temp 4-component vector of uint) 0:? 'inU1' (layout( location=4) in 4-component vector of uint) 0:109 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:109 Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inU0' ( temp 4-component vector of uint) 0:? 'inU1' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'gs_ua' ( shared uint) 0:? 'gs_ub' ( shared uint) 0:? 'gs_uc' ( shared uint) 0:? 'gs_ua2' ( shared 2-component vector of uint) 0:? 'gs_ub2' ( shared 2-component vector of uint) 0:? 'gs_uc2' ( shared 2-component vector of uint) 0:? 'gs_ua3' ( shared 3-component vector of uint) 0:? 'gs_ub3' ( shared 3-component vector of uint) 0:? 'gs_uc3' ( shared 3-component vector of uint) 0:? 'gs_ua4' ( shared 4-component vector of uint) 0:? 'gs_ub4' ( shared 4-component vector of uint) 0:? 'gs_uc4' ( shared 4-component vector of uint) 0:? 'gs_fa' ( shared float) 0:? 'gs_fb' ( shared float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:? 'inU0' (layout( location=3) in 4-component vector of uint) 0:? 'inU1' (layout( location=4) in 4-component vector of uint) Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:19 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float) 0:19 Function Parameters: 0:19 'inF0' ( in float) 0:19 'inF1' ( in float) 0:19 'inF2' ( in float) 0:19 'inU0' ( in uint) 0:19 'inU1' ( in uint) 0:? Sequence 0:23 all ( temp bool) 0:23 Convert float to bool ( temp bool) 0:23 'inF0' ( in float) 0:26 AtomicAdd ( temp uint) 0:26 'gs_ua' ( shared uint) 0:26 'gs_ub' ( shared uint) 0:27 move second child to first child ( temp uint) 0:27 'out_u1' ( temp uint) 0:27 AtomicAdd ( temp uint) 0:27 'gs_ua' ( shared uint) 0:27 'gs_ub' ( shared uint) 0:28 AtomicAnd ( temp uint) 0:28 'gs_ua' ( shared uint) 0:28 'gs_ub' ( shared uint) 0:29 move second child to first child ( temp uint) 0:29 'out_u1' ( temp uint) 0:29 AtomicAnd ( temp uint) 0:29 'gs_ua' ( shared uint) 0:29 'gs_ub' ( shared uint) 0:30 move second child to first child ( temp uint) 0:30 'out_u1' ( temp uint) 0:30 AtomicCompSwap ( temp uint) 0:30 'gs_ua' ( shared uint) 0:30 'gs_ub' ( shared uint) 0:30 'gs_uc' ( shared uint) 0:31 move second child to first child ( temp uint) 0:31 'out_u1' ( temp uint) 0:31 AtomicExchange ( temp uint) 0:31 'gs_ua' ( shared uint) 0:31 'gs_ub' ( shared uint) 0:32 AtomicMax ( temp uint) 0:32 'gs_ua' ( shared uint) 0:32 'gs_ub' ( shared uint) 0:33 move second child to first child ( temp uint) 0:33 'out_u1' ( temp uint) 0:33 AtomicMax ( temp uint) 0:33 'gs_ua' ( shared uint) 0:33 'gs_ub' ( shared uint) 0:34 AtomicMin ( temp uint) 0:34 'gs_ua' ( shared uint) 0:34 'gs_ub' ( shared uint) 0:35 move second child to first child ( temp uint) 0:35 'out_u1' ( temp uint) 0:35 AtomicMin ( temp uint) 0:35 'gs_ua' ( shared uint) 0:35 'gs_ub' ( shared uint) 0:36 AtomicOr ( temp uint) 0:36 'gs_ua' ( shared uint) 0:36 'gs_ub' ( shared uint) 0:37 move second child to first child ( temp uint) 0:37 'out_u1' ( temp uint) 0:37 AtomicOr ( temp uint) 0:37 'gs_ua' ( shared uint) 0:37 'gs_ub' ( shared uint) 0:38 AtomicXor ( temp uint) 0:38 'gs_ua' ( shared uint) 0:38 'gs_ub' ( shared uint) 0:39 move second child to first child ( temp uint) 0:39 'out_u1' ( temp uint) 0:39 AtomicXor ( temp uint) 0:39 'gs_ua' ( shared uint) 0:39 'gs_ub' ( shared uint) 0:41 AtomicAdd ( temp float) 0:41 'gs_fa' ( shared float) 0:41 'gs_fb' ( shared float) 0:45 Branch: Return with expression 0:45 Constant: 0:45 0.000000 0:49 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) 0:49 Function Parameters: 0:49 'inF0' ( in 1-component vector of float) 0:49 'inF1' ( in 1-component vector of float) 0:49 'inF2' ( in 1-component vector of float) 0:? Sequence 0:51 Branch: Return with expression 0:51 Constant: 0:51 0.000000 0:55 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) 0:55 Function Parameters: 0:55 'inF0' ( in 2-component vector of float) 0:55 'inF1' ( in 2-component vector of float) 0:55 'inF2' ( in 2-component vector of float) 0:55 'inU0' ( in 2-component vector of uint) 0:55 'inU1' ( in 2-component vector of uint) 0:? Sequence 0:59 all ( temp bool) 0:59 Convert float to bool ( temp 2-component vector of bool) 0:59 'inF0' ( in 2-component vector of float) 0:62 AtomicAdd ( temp 2-component vector of uint) 0:62 'gs_ua2' ( shared 2-component vector of uint) 0:62 'gs_ub2' ( shared 2-component vector of uint) 0:63 move second child to first child ( temp 2-component vector of uint) 0:63 'out_u2' ( temp 2-component vector of uint) 0:63 AtomicAdd ( temp 2-component vector of uint) 0:63 'gs_ua2' ( shared 2-component vector of uint) 0:63 'gs_ub2' ( shared 2-component vector of uint) 0:64 AtomicAnd ( temp 2-component vector of uint) 0:64 'gs_ua2' ( shared 2-component vector of uint) 0:64 'gs_ub2' ( shared 2-component vector of uint) 0:65 move second child to first child ( temp 2-component vector of uint) 0:65 'out_u2' ( temp 2-component vector of uint) 0:65 AtomicAnd ( temp 2-component vector of uint) 0:65 'gs_ua2' ( shared 2-component vector of uint) 0:65 'gs_ub2' ( shared 2-component vector of uint) 0:66 move second child to first child ( temp 2-component vector of uint) 0:66 'out_u2' ( temp 2-component vector of uint) 0:66 AtomicCompSwap ( temp 2-component vector of uint) 0:66 'gs_ua2' ( shared 2-component vector of uint) 0:66 'gs_ub2' ( shared 2-component vector of uint) 0:66 'gs_uc2' ( shared 2-component vector of uint) 0:67 move second child to first child ( temp 2-component vector of uint) 0:67 'out_u2' ( temp 2-component vector of uint) 0:67 AtomicExchange ( temp 2-component vector of uint) 0:67 'gs_ua2' ( shared 2-component vector of uint) 0:67 'gs_ub2' ( shared 2-component vector of uint) 0:68 AtomicMax ( temp 2-component vector of uint) 0:68 'gs_ua2' ( shared 2-component vector of uint) 0:68 'gs_ub2' ( shared 2-component vector of uint) 0:69 move second child to first child ( temp 2-component vector of uint) 0:69 'out_u2' ( temp 2-component vector of uint) 0:69 AtomicMax ( temp 2-component vector of uint) 0:69 'gs_ua2' ( shared 2-component vector of uint) 0:69 'gs_ub2' ( shared 2-component vector of uint) 0:70 AtomicMin ( temp 2-component vector of uint) 0:70 'gs_ua2' ( shared 2-component vector of uint) 0:70 'gs_ub2' ( shared 2-component vector of uint) 0:71 move second child to first child ( temp 2-component vector of uint) 0:71 'out_u2' ( temp 2-component vector of uint) 0:71 AtomicMin ( temp 2-component vector of uint) 0:71 'gs_ua2' ( shared 2-component vector of uint) 0:71 'gs_ub2' ( shared 2-component vector of uint) 0:72 AtomicOr ( temp 2-component vector of uint) 0:72 'gs_ua2' ( shared 2-component vector of uint) 0:72 'gs_ub2' ( shared 2-component vector of uint) 0:73 move second child to first child ( temp 2-component vector of uint) 0:73 'out_u2' ( temp 2-component vector of uint) 0:73 AtomicOr ( temp 2-component vector of uint) 0:73 'gs_ua2' ( shared 2-component vector of uint) 0:73 'gs_ub2' ( shared 2-component vector of uint) 0:74 AtomicXor ( temp 2-component vector of uint) 0:74 'gs_ua2' ( shared 2-component vector of uint) 0:74 'gs_ub2' ( shared 2-component vector of uint) 0:75 move second child to first child ( temp 2-component vector of uint) 0:75 'out_u2' ( temp 2-component vector of uint) 0:75 AtomicXor ( temp 2-component vector of uint) 0:75 'gs_ua2' ( shared 2-component vector of uint) 0:75 'gs_ub2' ( shared 2-component vector of uint) 0:78 Branch: Return with expression 0:78 Constant: 0:78 1.000000 0:78 2.000000 0:82 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) 0:82 Function Parameters: 0:82 'inF0' ( in 3-component vector of float) 0:82 'inF1' ( in 3-component vector of float) 0:82 'inF2' ( in 3-component vector of float) 0:82 'inU0' ( in 3-component vector of uint) 0:82 'inU1' ( in 3-component vector of uint) 0:? Sequence 0:86 all ( temp bool) 0:86 Convert float to bool ( temp 3-component vector of bool) 0:86 'inF0' ( in 3-component vector of float) 0:89 AtomicAdd ( temp 3-component vector of uint) 0:89 'gs_ua3' ( shared 3-component vector of uint) 0:89 'gs_ub3' ( shared 3-component vector of uint) 0:90 move second child to first child ( temp 3-component vector of uint) 0:90 'out_u3' ( temp 3-component vector of uint) 0:90 AtomicAdd ( temp 3-component vector of uint) 0:90 'gs_ua3' ( shared 3-component vector of uint) 0:90 'gs_ub3' ( shared 3-component vector of uint) 0:91 AtomicAnd ( temp 3-component vector of uint) 0:91 'gs_ua3' ( shared 3-component vector of uint) 0:91 'gs_ub3' ( shared 3-component vector of uint) 0:92 move second child to first child ( temp 3-component vector of uint) 0:92 'out_u3' ( temp 3-component vector of uint) 0:92 AtomicAnd ( temp 3-component vector of uint) 0:92 'gs_ua3' ( shared 3-component vector of uint) 0:92 'gs_ub3' ( shared 3-component vector of uint) 0:93 move second child to first child ( temp 3-component vector of uint) 0:93 'out_u3' ( temp 3-component vector of uint) 0:93 AtomicCompSwap ( temp 3-component vector of uint) 0:93 'gs_ua3' ( shared 3-component vector of uint) 0:93 'gs_ub3' ( shared 3-component vector of uint) 0:93 'gs_uc3' ( shared 3-component vector of uint) 0:94 move second child to first child ( temp 3-component vector of uint) 0:94 'out_u3' ( temp 3-component vector of uint) 0:94 AtomicExchange ( temp 3-component vector of uint) 0:94 'gs_ua3' ( shared 3-component vector of uint) 0:94 'gs_ub3' ( shared 3-component vector of uint) 0:95 AtomicMax ( temp 3-component vector of uint) 0:95 'gs_ua3' ( shared 3-component vector of uint) 0:95 'gs_ub3' ( shared 3-component vector of uint) 0:96 move second child to first child ( temp 3-component vector of uint) 0:96 'out_u3' ( temp 3-component vector of uint) 0:96 AtomicMax ( temp 3-component vector of uint) 0:96 'gs_ua3' ( shared 3-component vector of uint) 0:96 'gs_ub3' ( shared 3-component vector of uint) 0:97 AtomicMin ( temp 3-component vector of uint) 0:97 'gs_ua3' ( shared 3-component vector of uint) 0:97 'gs_ub3' ( shared 3-component vector of uint) 0:98 move second child to first child ( temp 3-component vector of uint) 0:98 'out_u3' ( temp 3-component vector of uint) 0:98 AtomicMin ( temp 3-component vector of uint) 0:98 'gs_ua3' ( shared 3-component vector of uint) 0:98 'gs_ub3' ( shared 3-component vector of uint) 0:99 AtomicOr ( temp 3-component vector of uint) 0:99 'gs_ua3' ( shared 3-component vector of uint) 0:99 'gs_ub3' ( shared 3-component vector of uint) 0:100 move second child to first child ( temp 3-component vector of uint) 0:100 'out_u3' ( temp 3-component vector of uint) 0:100 AtomicOr ( temp 3-component vector of uint) 0:100 'gs_ua3' ( shared 3-component vector of uint) 0:100 'gs_ub3' ( shared 3-component vector of uint) 0:101 AtomicXor ( temp 3-component vector of uint) 0:101 'gs_ua3' ( shared 3-component vector of uint) 0:101 'gs_ub3' ( shared 3-component vector of uint) 0:102 move second child to first child ( temp 3-component vector of uint) 0:102 'out_u3' ( temp 3-component vector of uint) 0:102 AtomicXor ( temp 3-component vector of uint) 0:102 'gs_ua3' ( shared 3-component vector of uint) 0:102 'gs_ub3' ( shared 3-component vector of uint) 0:105 Branch: Return with expression 0:105 Constant: 0:105 1.000000 0:105 2.000000 0:105 3.000000 0:109 Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:109 Function Parameters: 0:109 'inF0' ( in 4-component vector of float) 0:109 'inF1' ( in 4-component vector of float) 0:109 'inF2' ( in 4-component vector of float) 0:109 'inU0' ( in 4-component vector of uint) 0:109 'inU1' ( in 4-component vector of uint) 0:? Sequence 0:113 all ( temp bool) 0:113 Convert float to bool ( temp 4-component vector of bool) 0:113 'inF0' ( in 4-component vector of float) 0:116 AtomicAdd ( temp 4-component vector of uint) 0:116 'gs_ua4' ( shared 4-component vector of uint) 0:116 'gs_ub4' ( shared 4-component vector of uint) 0:117 move second child to first child ( temp 4-component vector of uint) 0:117 'out_u4' ( temp 4-component vector of uint) 0:117 AtomicAdd ( temp 4-component vector of uint) 0:117 'gs_ua4' ( shared 4-component vector of uint) 0:117 'gs_ub4' ( shared 4-component vector of uint) 0:118 AtomicAnd ( temp 4-component vector of uint) 0:118 'gs_ua4' ( shared 4-component vector of uint) 0:118 'gs_ub4' ( shared 4-component vector of uint) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 'out_u4' ( temp 4-component vector of uint) 0:119 AtomicAnd ( temp 4-component vector of uint) 0:119 'gs_ua4' ( shared 4-component vector of uint) 0:119 'gs_ub4' ( shared 4-component vector of uint) 0:120 move second child to first child ( temp 4-component vector of uint) 0:120 'out_u4' ( temp 4-component vector of uint) 0:120 AtomicCompSwap ( temp 4-component vector of uint) 0:120 'gs_ua4' ( shared 4-component vector of uint) 0:120 'gs_ub4' ( shared 4-component vector of uint) 0:120 'gs_uc4' ( shared 4-component vector of uint) 0:121 move second child to first child ( temp 4-component vector of uint) 0:121 'out_u4' ( temp 4-component vector of uint) 0:121 AtomicExchange ( temp 4-component vector of uint) 0:121 'gs_ua4' ( shared 4-component vector of uint) 0:121 'gs_ub4' ( shared 4-component vector of uint) 0:122 AtomicMax ( temp 4-component vector of uint) 0:122 'gs_ua4' ( shared 4-component vector of uint) 0:122 'gs_ub4' ( shared 4-component vector of uint) 0:123 move second child to first child ( temp 4-component vector of uint) 0:123 'out_u4' ( temp 4-component vector of uint) 0:123 AtomicMax ( temp 4-component vector of uint) 0:123 'gs_ua4' ( shared 4-component vector of uint) 0:123 'gs_ub4' ( shared 4-component vector of uint) 0:124 AtomicMin ( temp 4-component vector of uint) 0:124 'gs_ua4' ( shared 4-component vector of uint) 0:124 'gs_ub4' ( shared 4-component vector of uint) 0:125 move second child to first child ( temp 4-component vector of uint) 0:125 'out_u4' ( temp 4-component vector of uint) 0:125 AtomicMin ( temp 4-component vector of uint) 0:125 'gs_ua4' ( shared 4-component vector of uint) 0:125 'gs_ub4' ( shared 4-component vector of uint) 0:126 AtomicOr ( temp 4-component vector of uint) 0:126 'gs_ua4' ( shared 4-component vector of uint) 0:126 'gs_ub4' ( shared 4-component vector of uint) 0:127 move second child to first child ( temp 4-component vector of uint) 0:127 'out_u4' ( temp 4-component vector of uint) 0:127 AtomicOr ( temp 4-component vector of uint) 0:127 'gs_ua4' ( shared 4-component vector of uint) 0:127 'gs_ub4' ( shared 4-component vector of uint) 0:128 AtomicXor ( temp 4-component vector of uint) 0:128 'gs_ua4' ( shared 4-component vector of uint) 0:128 'gs_ub4' ( shared 4-component vector of uint) 0:129 move second child to first child ( temp 4-component vector of uint) 0:129 'out_u4' ( temp 4-component vector of uint) 0:129 AtomicXor ( temp 4-component vector of uint) 0:129 'gs_ua4' ( shared 4-component vector of uint) 0:129 'gs_ub4' ( shared 4-component vector of uint) 0:132 Branch: Return with expression 0:132 Constant: 0:132 1.000000 0:132 2.000000 0:132 3.000000 0:132 4.000000 0:109 Function Definition: ComputeShaderFunction( ( temp void) 0:109 Function Parameters: 0:? Sequence 0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:109 move second child to first child ( temp 4-component vector of uint) 0:? 'inU0' ( temp 4-component vector of uint) 0:? 'inU0' (layout( location=3) in 4-component vector of uint) 0:109 move second child to first child ( temp 4-component vector of uint) 0:? 'inU1' ( temp 4-component vector of uint) 0:? 'inU1' (layout( location=4) in 4-component vector of uint) 0:109 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:109 Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inU0' ( temp 4-component vector of uint) 0:? 'inU1' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'gs_ua' ( shared uint) 0:? 'gs_ub' ( shared uint) 0:? 'gs_uc' ( shared uint) 0:? 'gs_ua2' ( shared 2-component vector of uint) 0:? 'gs_ub2' ( shared 2-component vector of uint) 0:? 'gs_uc2' ( shared 2-component vector of uint) 0:? 'gs_ua3' ( shared 3-component vector of uint) 0:? 'gs_ub3' ( shared 3-component vector of uint) 0:? 'gs_uc3' ( shared 3-component vector of uint) 0:? 'gs_ua4' ( shared 4-component vector of uint) 0:? 'gs_ub4' ( shared 4-component vector of uint) 0:? 'gs_uc4' ( shared 4-component vector of uint) 0:? 'gs_fa' ( shared float) 0:? 'gs_fb' ( shared float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:? 'inU0' (layout( location=3) in 4-component vector of uint) 0:? 'inU1' (layout( location=4) in 4-component vector of uint) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 270 Capability Shader Capability AtomicFloat32AddEXT Extension "SPV_EXT_shader_atomic_float_add" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "ComputeShaderFunction" 242 245 248 252 255 258 ExecutionMode 4 LocalSize 1 1 1 Source HLSL 500 Name 4 "ComputeShaderFunction" Name 16 "ComputeShaderFunctionS(f1;f1;f1;u1;u1;" Name 11 "inF0" Name 12 "inF1" Name 13 "inF2" Name 14 "inU0" Name 15 "inU1" Name 22 "ComputeShaderFunction1(vf1;vf1;vf1;" Name 19 "inF0" Name 20 "inF1" Name 21 "inF2" Name 34 "ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2;" Name 29 "inF0" Name 30 "inF1" Name 31 "inF2" Name 32 "inU0" Name 33 "inU1" Name 46 "ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3;" Name 41 "inF0" Name 42 "inF1" Name 43 "inF2" Name 44 "inU0" Name 45 "inU1" Name 58 "@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;" Name 53 "inF0" Name 54 "inF1" Name 55 "inF2" Name 56 "inU0" Name 57 "inU1" Name 66 "gs_ua" Name 67 "gs_ub" Name 72 "out_u1" Name 80 "gs_uc" Name 102 "gs_fa" Name 103 "gs_fb" Name 116 "gs_ua2" Name 117 "gs_ub2" Name 120 "out_u2" Name 128 "gs_uc2" Name 160 "gs_ua3" Name 161 "gs_ub3" Name 164 "out_u3" Name 172 "gs_uc3" Name 203 "gs_ua4" Name 204 "gs_ub4" Name 207 "out_u4" Name 215 "gs_uc4" Name 240 "inF0" Name 242 "inF0" Name 244 "inF1" Name 245 "inF1" Name 247 "inF2" Name 248 "inF2" Name 250 "inU0" Name 252 "inU0" Name 254 "inU1" Name 255 "inU1" Name 258 "@entryPointOutput" Name 259 "param" Name 261 "param" Name 263 "param" Name 265 "param" Name 267 "param" Decorate 242(inF0) Location 0 Decorate 245(inF1) Location 1 Decorate 248(inF2) Location 2 Decorate 252(inU0) Location 3 Decorate 255(inU1) Location 4 Decorate 258(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeInt 32 0 9: TypePointer Function 8(int) 10: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr) 9(ptr) 18: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 24: TypeVector 6(float) 2 25: TypePointer Function 24(fvec2) 26: TypeVector 8(int) 2 27: TypePointer Function 26(ivec2) 28: TypeFunction 24(fvec2) 25(ptr) 25(ptr) 25(ptr) 27(ptr) 27(ptr) 36: TypeVector 6(float) 3 37: TypePointer Function 36(fvec3) 38: TypeVector 8(int) 3 39: TypePointer Function 38(ivec3) 40: TypeFunction 36(fvec3) 37(ptr) 37(ptr) 37(ptr) 39(ptr) 39(ptr) 48: TypeVector 6(float) 4 49: TypePointer Function 48(fvec4) 50: TypeVector 8(int) 4 51: TypePointer Function 50(ivec4) 52: TypeFunction 48(fvec4) 49(ptr) 49(ptr) 49(ptr) 51(ptr) 51(ptr) 61: TypeBool 62: 6(float) Constant 0 65: TypePointer Workgroup 8(int) 66(gs_ua): 65(ptr) Variable Workgroup 67(gs_ub): 65(ptr) Variable Workgroup 69: 8(int) Constant 1 70: 8(int) Constant 0 80(gs_uc): 65(ptr) Variable Workgroup 101: TypePointer Workgroup 6(float) 102(gs_fa): 101(ptr) Variable Workgroup 103(gs_fb): 101(ptr) Variable Workgroup 111: TypeVector 61(bool) 2 112: 24(fvec2) ConstantComposite 62 62 115: TypePointer Workgroup 26(ivec2) 116(gs_ua2): 115(ptr) Variable Workgroup 117(gs_ub2): 115(ptr) Variable Workgroup 128(gs_uc2): 115(ptr) Variable Workgroup 149: 6(float) Constant 1065353216 150: 6(float) Constant 1073741824 151: 24(fvec2) ConstantComposite 149 150 155: TypeVector 61(bool) 3 156: 36(fvec3) ConstantComposite 62 62 62 159: TypePointer Workgroup 38(ivec3) 160(gs_ua3): 159(ptr) Variable Workgroup 161(gs_ub3): 159(ptr) Variable Workgroup 172(gs_uc3): 159(ptr) Variable Workgroup 193: 6(float) Constant 1077936128 194: 36(fvec3) ConstantComposite 149 150 193 198: TypeVector 61(bool) 4 199: 48(fvec4) ConstantComposite 62 62 62 62 202: TypePointer Workgroup 50(ivec4) 203(gs_ua4): 202(ptr) Variable Workgroup 204(gs_ub4): 202(ptr) Variable Workgroup 215(gs_uc4): 202(ptr) Variable Workgroup 236: 6(float) Constant 1082130432 237: 48(fvec4) ConstantComposite 149 150 193 236 241: TypePointer Input 48(fvec4) 242(inF0): 241(ptr) Variable Input 245(inF1): 241(ptr) Variable Input 248(inF2): 241(ptr) Variable Input 251: TypePointer Input 50(ivec4) 252(inU0): 251(ptr) Variable Input 255(inU1): 251(ptr) Variable Input 257: TypePointer Output 48(fvec4) 258(@entryPointOutput): 257(ptr) Variable Output 4(ComputeShaderFunction): 2 Function None 3 5: Label 240(inF0): 49(ptr) Variable Function 244(inF1): 49(ptr) Variable Function 247(inF2): 49(ptr) Variable Function 250(inU0): 51(ptr) Variable Function 254(inU1): 51(ptr) Variable Function 259(param): 49(ptr) Variable Function 261(param): 49(ptr) Variable Function 263(param): 49(ptr) Variable Function 265(param): 51(ptr) Variable Function 267(param): 51(ptr) Variable Function 243: 48(fvec4) Load 242(inF0) Store 240(inF0) 243 246: 48(fvec4) Load 245(inF1) Store 244(inF1) 246 249: 48(fvec4) Load 248(inF2) Store 247(inF2) 249 253: 50(ivec4) Load 252(inU0) Store 250(inU0) 253 256: 50(ivec4) Load 255(inU1) Store 254(inU1) 256 260: 48(fvec4) Load 240(inF0) Store 259(param) 260 262: 48(fvec4) Load 244(inF1) Store 261(param) 262 264: 48(fvec4) Load 247(inF2) Store 263(param) 264 266: 50(ivec4) Load 250(inU0) Store 265(param) 266 268: 50(ivec4) Load 254(inU1) Store 267(param) 268 269: 48(fvec4) FunctionCall 58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;) 259(param) 261(param) 263(param) 265(param) 267(param) Store 258(@entryPointOutput) 269 Return FunctionEnd 16(ComputeShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10 11(inF0): 7(ptr) FunctionParameter 12(inF1): 7(ptr) FunctionParameter 13(inF2): 7(ptr) FunctionParameter 14(inU0): 9(ptr) FunctionParameter 15(inU1): 9(ptr) FunctionParameter 17: Label 72(out_u1): 9(ptr) Variable Function 60: 6(float) Load 11(inF0) 63: 61(bool) FUnordNotEqual 60 62 64: 61(bool) All 63 68: 8(int) Load 67(gs_ub) 71: 8(int) AtomicIAdd 66(gs_ua) 69 70 68 73: 8(int) Load 67(gs_ub) 74: 8(int) AtomicIAdd 66(gs_ua) 69 70 73 Store 72(out_u1) 74 75: 8(int) Load 67(gs_ub) 76: 8(int) AtomicAnd 66(gs_ua) 69 70 75 77: 8(int) Load 67(gs_ub) 78: 8(int) AtomicAnd 66(gs_ua) 69 70 77 Store 72(out_u1) 78 79: 8(int) Load 67(gs_ub) 81: 8(int) Load 80(gs_uc) 82: 8(int) AtomicCompareExchange 66(gs_ua) 69 70 70 81 79 Store 72(out_u1) 82 83: 8(int) Load 67(gs_ub) 84: 8(int) AtomicExchange 66(gs_ua) 69 70 83 Store 72(out_u1) 84 85: 8(int) Load 67(gs_ub) 86: 8(int) AtomicUMax 66(gs_ua) 69 70 85 87: 8(int) Load 67(gs_ub) 88: 8(int) AtomicUMax 66(gs_ua) 69 70 87 Store 72(out_u1) 88 89: 8(int) Load 67(gs_ub) 90: 8(int) AtomicUMin 66(gs_ua) 69 70 89 91: 8(int) Load 67(gs_ub) 92: 8(int) AtomicUMin 66(gs_ua) 69 70 91 Store 72(out_u1) 92 93: 8(int) Load 67(gs_ub) 94: 8(int) AtomicOr 66(gs_ua) 69 70 93 95: 8(int) Load 67(gs_ub) 96: 8(int) AtomicOr 66(gs_ua) 69 70 95 Store 72(out_u1) 96 97: 8(int) Load 67(gs_ub) 98: 8(int) AtomicXor 66(gs_ua) 69 70 97 99: 8(int) Load 67(gs_ub) 100: 8(int) AtomicXor 66(gs_ua) 69 70 99 Store 72(out_u1) 100 104: 6(float) Load 103(gs_fb) 105: 6(float) AtomicFAddEXT 102(gs_fa) 69 70 104 ReturnValue 62 FunctionEnd 22(ComputeShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 18 19(inF0): 7(ptr) FunctionParameter 20(inF1): 7(ptr) FunctionParameter 21(inF2): 7(ptr) FunctionParameter 23: Label ReturnValue 62 FunctionEnd 34(ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2;): 24(fvec2) Function None 28 29(inF0): 25(ptr) FunctionParameter 30(inF1): 25(ptr) FunctionParameter 31(inF2): 25(ptr) FunctionParameter 32(inU0): 27(ptr) FunctionParameter 33(inU1): 27(ptr) FunctionParameter 35: Label 120(out_u2): 27(ptr) Variable Function 110: 24(fvec2) Load 29(inF0) 113: 111(bvec2) FUnordNotEqual 110 112 114: 61(bool) All 113 118: 26(ivec2) Load 117(gs_ub2) 119: 26(ivec2) AtomicIAdd 116(gs_ua2) 69 70 118 121: 26(ivec2) Load 117(gs_ub2) 122: 26(ivec2) AtomicIAdd 116(gs_ua2) 69 70 121 Store 120(out_u2) 122 123: 26(ivec2) Load 117(gs_ub2) 124: 26(ivec2) AtomicAnd 116(gs_ua2) 69 70 123 125: 26(ivec2) Load 117(gs_ub2) 126: 26(ivec2) AtomicAnd 116(gs_ua2) 69 70 125 Store 120(out_u2) 126 127: 26(ivec2) Load 117(gs_ub2) 129: 26(ivec2) Load 128(gs_uc2) 130: 26(ivec2) AtomicCompareExchange 116(gs_ua2) 69 70 70 129 127 Store 120(out_u2) 130 131: 26(ivec2) Load 117(gs_ub2) 132: 26(ivec2) AtomicExchange 116(gs_ua2) 69 70 131 Store 120(out_u2) 132 133: 26(ivec2) Load 117(gs_ub2) 134: 26(ivec2) AtomicUMax 116(gs_ua2) 69 70 133 135: 26(ivec2) Load 117(gs_ub2) 136: 26(ivec2) AtomicUMax 116(gs_ua2) 69 70 135 Store 120(out_u2) 136 137: 26(ivec2) Load 117(gs_ub2) 138: 26(ivec2) AtomicUMin 116(gs_ua2) 69 70 137 139: 26(ivec2) Load 117(gs_ub2) 140: 26(ivec2) AtomicUMin 116(gs_ua2) 69 70 139 Store 120(out_u2) 140 141: 26(ivec2) Load 117(gs_ub2) 142: 26(ivec2) AtomicOr 116(gs_ua2) 69 70 141 143: 26(ivec2) Load 117(gs_ub2) 144: 26(ivec2) AtomicOr 116(gs_ua2) 69 70 143 Store 120(out_u2) 144 145: 26(ivec2) Load 117(gs_ub2) 146: 26(ivec2) AtomicXor 116(gs_ua2) 69 70 145 147: 26(ivec2) Load 117(gs_ub2) 148: 26(ivec2) AtomicXor 116(gs_ua2) 69 70 147 Store 120(out_u2) 148 ReturnValue 151 FunctionEnd 46(ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40 41(inF0): 37(ptr) FunctionParameter 42(inF1): 37(ptr) FunctionParameter 43(inF2): 37(ptr) FunctionParameter 44(inU0): 39(ptr) FunctionParameter 45(inU1): 39(ptr) FunctionParameter 47: Label 164(out_u3): 39(ptr) Variable Function 154: 36(fvec3) Load 41(inF0) 157: 155(bvec3) FUnordNotEqual 154 156 158: 61(bool) All 157 162: 38(ivec3) Load 161(gs_ub3) 163: 38(ivec3) AtomicIAdd 160(gs_ua3) 69 70 162 165: 38(ivec3) Load 161(gs_ub3) 166: 38(ivec3) AtomicIAdd 160(gs_ua3) 69 70 165 Store 164(out_u3) 166 167: 38(ivec3) Load 161(gs_ub3) 168: 38(ivec3) AtomicAnd 160(gs_ua3) 69 70 167 169: 38(ivec3) Load 161(gs_ub3) 170: 38(ivec3) AtomicAnd 160(gs_ua3) 69 70 169 Store 164(out_u3) 170 171: 38(ivec3) Load 161(gs_ub3) 173: 38(ivec3) Load 172(gs_uc3) 174: 38(ivec3) AtomicCompareExchange 160(gs_ua3) 69 70 70 173 171 Store 164(out_u3) 174 175: 38(ivec3) Load 161(gs_ub3) 176: 38(ivec3) AtomicExchange 160(gs_ua3) 69 70 175 Store 164(out_u3) 176 177: 38(ivec3) Load 161(gs_ub3) 178: 38(ivec3) AtomicUMax 160(gs_ua3) 69 70 177 179: 38(ivec3) Load 161(gs_ub3) 180: 38(ivec3) AtomicUMax 160(gs_ua3) 69 70 179 Store 164(out_u3) 180 181: 38(ivec3) Load 161(gs_ub3) 182: 38(ivec3) AtomicUMin 160(gs_ua3) 69 70 181 183: 38(ivec3) Load 161(gs_ub3) 184: 38(ivec3) AtomicUMin 160(gs_ua3) 69 70 183 Store 164(out_u3) 184 185: 38(ivec3) Load 161(gs_ub3) 186: 38(ivec3) AtomicOr 160(gs_ua3) 69 70 185 187: 38(ivec3) Load 161(gs_ub3) 188: 38(ivec3) AtomicOr 160(gs_ua3) 69 70 187 Store 164(out_u3) 188 189: 38(ivec3) Load 161(gs_ub3) 190: 38(ivec3) AtomicXor 160(gs_ua3) 69 70 189 191: 38(ivec3) Load 161(gs_ub3) 192: 38(ivec3) AtomicXor 160(gs_ua3) 69 70 191 Store 164(out_u3) 192 ReturnValue 194 FunctionEnd 58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52 53(inF0): 49(ptr) FunctionParameter 54(inF1): 49(ptr) FunctionParameter 55(inF2): 49(ptr) FunctionParameter 56(inU0): 51(ptr) FunctionParameter 57(inU1): 51(ptr) FunctionParameter 59: Label 207(out_u4): 51(ptr) Variable Function 197: 48(fvec4) Load 53(inF0) 200: 198(bvec4) FUnordNotEqual 197 199 201: 61(bool) All 200 205: 50(ivec4) Load 204(gs_ub4) 206: 50(ivec4) AtomicIAdd 203(gs_ua4) 69 70 205 208: 50(ivec4) Load 204(gs_ub4) 209: 50(ivec4) AtomicIAdd 203(gs_ua4) 69 70 208 Store 207(out_u4) 209 210: 50(ivec4) Load 204(gs_ub4) 211: 50(ivec4) AtomicAnd 203(gs_ua4) 69 70 210 212: 50(ivec4) Load 204(gs_ub4) 213: 50(ivec4) AtomicAnd 203(gs_ua4) 69 70 212 Store 207(out_u4) 213 214: 50(ivec4) Load 204(gs_ub4) 216: 50(ivec4) Load 215(gs_uc4) 217: 50(ivec4) AtomicCompareExchange 203(gs_ua4) 69 70 70 216 214 Store 207(out_u4) 217 218: 50(ivec4) Load 204(gs_ub4) 219: 50(ivec4) AtomicExchange 203(gs_ua4) 69 70 218 Store 207(out_u4) 219 220: 50(ivec4) Load 204(gs_ub4) 221: 50(ivec4) AtomicUMax 203(gs_ua4) 69 70 220 222: 50(ivec4) Load 204(gs_ub4) 223: 50(ivec4) AtomicUMax 203(gs_ua4) 69 70 222 Store 207(out_u4) 223 224: 50(ivec4) Load 204(gs_ub4) 225: 50(ivec4) AtomicUMin 203(gs_ua4) 69 70 224 226: 50(ivec4) Load 204(gs_ub4) 227: 50(ivec4) AtomicUMin 203(gs_ua4) 69 70 226 Store 207(out_u4) 227 228: 50(ivec4) Load 204(gs_ub4) 229: 50(ivec4) AtomicOr 203(gs_ua4) 69 70 228 230: 50(ivec4) Load 204(gs_ub4) 231: 50(ivec4) AtomicOr 203(gs_ua4) 69 70 230 Store 207(out_u4) 231 232: 50(ivec4) Load 204(gs_ub4) 233: 50(ivec4) AtomicXor 203(gs_ua4) 69 70 232 234: 50(ivec4) Load 204(gs_ub4) 235: 50(ivec4) AtomicXor 203(gs_ua4) 69 70 234 Store 207(out_u4) 235 ReturnValue 237 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out000066400000000000000000000127501506534232700264610ustar00rootroot00000000000000hlsl.intrinsics.d3dcolortoubyte4.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main( ( temp 4-component vector of int) 0:5 Function Parameters: 0:? Sequence 0:6 Branch: Return with expression 0:6 Convert float to int ( temp 4-component vector of int) 0:6 vector-scale ( temp 4-component vector of float) 0:6 Constant: 0:6 255.001953 0:6 vector swizzle ( temp 4-component vector of float) 0:6 col4: direct index for structure ( uniform 4-component vector of float) 0:6 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float col4}) 0:6 Constant: 0:6 0 (const uint) 0:6 Sequence 0:6 Constant: 0:6 2 (const int) 0:6 Constant: 0:6 1 (const int) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 3 (const int) 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 int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) 0:5 Function Call: @main( ( temp 4-component vector of int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float col4}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main( ( temp 4-component vector of int) 0:5 Function Parameters: 0:? Sequence 0:6 Branch: Return with expression 0:6 Convert float to int ( temp 4-component vector of int) 0:6 vector-scale ( temp 4-component vector of float) 0:6 Constant: 0:6 255.001953 0:6 vector swizzle ( temp 4-component vector of float) 0:6 col4: direct index for structure ( uniform 4-component vector of float) 0:6 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float col4}) 0:6 Constant: 0:6 0 (const uint) 0:6 Sequence 0:6 Constant: 0:6 2 (const int) 0:6 Constant: 0:6 1 (const int) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 3 (const int) 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 int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) 0:5 Function Call: @main( ( temp 4-component vector of int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float col4}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) // 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" 27 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 14 "$Global" MemberName 14($Global) 0 "col4" Name 16 "" Name 27 "@entryPointOutput" Decorate 14($Global) Block MemberDecorate 14($Global) 0 Offset 0 Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 27(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 4 8: TypeFunction 7(ivec4) 11: TypeFloat 32 12: 11(float) Constant 1132396672 13: TypeVector 11(float) 4 14($Global): TypeStruct 13(fvec4) 15: TypePointer Uniform 14($Global) 16: 15(ptr) Variable Uniform 17: 6(int) Constant 0 18: TypePointer Uniform 13(fvec4) 26: TypePointer Output 7(ivec4) 27(@entryPointOutput): 26(ptr) Variable Output 4(main): 2 Function None 3 5: Label 28: 7(ivec4) FunctionCall 9(@main() Store 27(@entryPointOutput) 28 Return FunctionEnd 9(@main(): 7(ivec4) Function None 8 10: Label 19: 18(ptr) AccessChain 16 17 20: 13(fvec4) Load 19 21: 13(fvec4) VectorShuffle 20 20 2 1 0 3 22: 13(fvec4) VectorTimesScalar 21 12 23: 7(ivec4) ConvertFToS 22 ReturnValue 23 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.double.frag.out000066400000000000000000000400611506534232700245160ustar00rootroot00000000000000hlsl.intrinsics.double.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float) 0:5 Function Parameters: 0:5 'inDV1a' ( in double) 0:5 'inDV1b' ( in double) 0:5 'inDV1c' ( in double) 0:5 'inDV2' ( in 2-component vector of double) 0:5 'inDV3' ( in 3-component vector of double) 0:5 'inDV4' ( in 4-component vector of double) 0:5 'inU1a' ( in uint) 0:5 'inU1b' ( in uint) 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp double) 0:6 'r00' ( temp double) 0:6 fma ( temp double) 0:6 'inDV1a' ( in double) 0:6 'inDV1b' ( in double) 0:6 'inDV1c' ( in double) 0:7 Sequence 0:7 move second child to first child ( temp double) 0:7 'r01' ( temp double) 0:7 uint64BitsToDouble ( temp double) 0:7 Construct uvec2 ( temp 2-component vector of uint) 0:7 'inU1a' ( in uint) 0:7 'inU1b' ( in uint) 0:9 Branch: Return with expression 0:9 Constant: 0:9 0.000000 0:5 Function Definition: PixelShaderFunction( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp double) 0:? 'inDV1a' ( temp double) 0:? 'inDV1a' (layout( location=0) flat in double) 0:5 move second child to first child ( temp double) 0:? 'inDV1b' ( temp double) 0:? 'inDV1b' (layout( location=1) flat in double) 0:5 move second child to first child ( temp double) 0:? 'inDV1c' ( temp double) 0:? 'inDV1c' (layout( location=2) flat in double) 0:5 move second child to first child ( temp 2-component vector of double) 0:? 'inDV2' ( temp 2-component vector of double) 0:? 'inDV2' (layout( location=3) flat in 2-component vector of double) 0:5 move second child to first child ( temp 3-component vector of double) 0:? 'inDV3' ( temp 3-component vector of double) 0:? 'inDV3' (layout( location=4) flat in 3-component vector of double) 0:5 move second child to first child ( temp 4-component vector of double) 0:? 'inDV4' ( temp 4-component vector of double) 0:? 'inDV4' (layout( location=6) flat in 4-component vector of double) 0:5 move second child to first child ( temp uint) 0:? 'inU1a' ( temp uint) 0:? 'inU1a' (layout( location=8) flat in uint) 0:5 move second child to first child ( temp uint) 0:? 'inU1b' ( temp uint) 0:? 'inU1b' (layout( location=9) flat in uint) 0:5 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:5 Function Call: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float) 0:? 'inDV1a' ( temp double) 0:? 'inDV1b' ( temp double) 0:? 'inDV1c' ( temp double) 0:? 'inDV2' ( temp 2-component vector of double) 0:? 'inDV3' ( temp 3-component vector of double) 0:? 'inDV4' ( temp 4-component vector of double) 0:? 'inU1a' ( temp uint) 0:? 'inU1b' ( temp uint) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out float) 0:? 'inDV1a' (layout( location=0) flat in double) 0:? 'inDV1b' (layout( location=1) flat in double) 0:? 'inDV1c' (layout( location=2) flat in double) 0:? 'inDV2' (layout( location=3) flat in 2-component vector of double) 0:? 'inDV3' (layout( location=4) flat in 3-component vector of double) 0:? 'inDV4' (layout( location=6) flat in 4-component vector of double) 0:? 'inU1a' (layout( location=8) flat in uint) 0:? 'inU1b' (layout( location=9) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float) 0:5 Function Parameters: 0:5 'inDV1a' ( in double) 0:5 'inDV1b' ( in double) 0:5 'inDV1c' ( in double) 0:5 'inDV2' ( in 2-component vector of double) 0:5 'inDV3' ( in 3-component vector of double) 0:5 'inDV4' ( in 4-component vector of double) 0:5 'inU1a' ( in uint) 0:5 'inU1b' ( in uint) 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp double) 0:6 'r00' ( temp double) 0:6 fma ( temp double) 0:6 'inDV1a' ( in double) 0:6 'inDV1b' ( in double) 0:6 'inDV1c' ( in double) 0:7 Sequence 0:7 move second child to first child ( temp double) 0:7 'r01' ( temp double) 0:7 uint64BitsToDouble ( temp double) 0:7 Construct uvec2 ( temp 2-component vector of uint) 0:7 'inU1a' ( in uint) 0:7 'inU1b' ( in uint) 0:9 Branch: Return with expression 0:9 Constant: 0:9 0.000000 0:5 Function Definition: PixelShaderFunction( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp double) 0:? 'inDV1a' ( temp double) 0:? 'inDV1a' (layout( location=0) flat in double) 0:5 move second child to first child ( temp double) 0:? 'inDV1b' ( temp double) 0:? 'inDV1b' (layout( location=1) flat in double) 0:5 move second child to first child ( temp double) 0:? 'inDV1c' ( temp double) 0:? 'inDV1c' (layout( location=2) flat in double) 0:5 move second child to first child ( temp 2-component vector of double) 0:? 'inDV2' ( temp 2-component vector of double) 0:? 'inDV2' (layout( location=3) flat in 2-component vector of double) 0:5 move second child to first child ( temp 3-component vector of double) 0:? 'inDV3' ( temp 3-component vector of double) 0:? 'inDV3' (layout( location=4) flat in 3-component vector of double) 0:5 move second child to first child ( temp 4-component vector of double) 0:? 'inDV4' ( temp 4-component vector of double) 0:? 'inDV4' (layout( location=6) flat in 4-component vector of double) 0:5 move second child to first child ( temp uint) 0:? 'inU1a' ( temp uint) 0:? 'inU1a' (layout( location=8) flat in uint) 0:5 move second child to first child ( temp uint) 0:? 'inU1b' ( temp uint) 0:? 'inU1b' (layout( location=9) flat in uint) 0:5 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:5 Function Call: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float) 0:? 'inDV1a' ( temp double) 0:? 'inDV1b' ( temp double) 0:? 'inDV1c' ( temp double) 0:? 'inDV2' ( temp 2-component vector of double) 0:? 'inDV3' ( temp 3-component vector of double) 0:? 'inDV4' ( temp 4-component vector of double) 0:? 'inU1a' ( temp uint) 0:? 'inU1b' ( temp uint) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out float) 0:? 'inDV1a' (layout( location=0) flat in double) 0:? 'inDV1b' (layout( location=1) flat in double) 0:? 'inDV1c' (layout( location=2) flat in double) 0:? 'inDV2' (layout( location=3) flat in 2-component vector of double) 0:? 'inDV3' (layout( location=4) flat in 3-component vector of double) 0:? 'inDV4' (layout( location=6) flat in 4-component vector of double) 0:? 'inU1a' (layout( location=8) flat in uint) 0:? 'inU1b' (layout( location=9) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 90 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 44 47 50 54 58 62 66 69 72 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 26 "@PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1;" Name 18 "inDV1a" Name 19 "inDV1b" Name 20 "inDV1c" Name 21 "inDV2" Name 22 "inDV3" Name 23 "inDV4" Name 24 "inU1a" Name 25 "inU1b" Name 28 "r00" Name 33 "r01" Name 42 "inDV1a" Name 44 "inDV1a" Name 46 "inDV1b" Name 47 "inDV1b" Name 49 "inDV1c" Name 50 "inDV1c" Name 52 "inDV2" Name 54 "inDV2" Name 56 "inDV3" Name 58 "inDV3" Name 60 "inDV4" Name 62 "inDV4" Name 64 "inU1a" Name 66 "inU1a" Name 68 "inU1b" Name 69 "inU1b" Name 72 "@entryPointOutput" Name 73 "param" Name 75 "param" Name 77 "param" Name 79 "param" Name 81 "param" Name 83 "param" Name 85 "param" Name 87 "param" Decorate 44(inDV1a) Flat Decorate 44(inDV1a) Location 0 Decorate 47(inDV1b) Flat Decorate 47(inDV1b) Location 1 Decorate 50(inDV1c) Flat Decorate 50(inDV1c) Location 2 Decorate 54(inDV2) Flat Decorate 54(inDV2) Location 3 Decorate 58(inDV3) Flat Decorate 58(inDV3) Location 4 Decorate 62(inDV4) Flat Decorate 62(inDV4) Location 6 Decorate 66(inU1a) Flat Decorate 66(inU1a) Location 8 Decorate 69(inU1b) Flat Decorate 69(inU1b) Location 9 Decorate 72(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 64 7: TypePointer Function 6(float64_t) 8: TypeVector 6(float64_t) 2 9: TypePointer Function 8(f64vec2) 10: TypeVector 6(float64_t) 3 11: TypePointer Function 10(f64vec3) 12: TypeVector 6(float64_t) 4 13: TypePointer Function 12(f64vec4) 14: TypeInt 32 0 15: TypePointer Function 14(int) 16: TypeFloat 32 17: TypeFunction 16(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr) 11(ptr) 13(ptr) 15(ptr) 15(ptr) 36: TypeVector 14(int) 2 39: 16(float) Constant 0 43: TypePointer Input 6(float64_t) 44(inDV1a): 43(ptr) Variable Input 47(inDV1b): 43(ptr) Variable Input 50(inDV1c): 43(ptr) Variable Input 53: TypePointer Input 8(f64vec2) 54(inDV2): 53(ptr) Variable Input 57: TypePointer Input 10(f64vec3) 58(inDV3): 57(ptr) Variable Input 61: TypePointer Input 12(f64vec4) 62(inDV4): 61(ptr) Variable Input 65: TypePointer Input 14(int) 66(inU1a): 65(ptr) Variable Input 69(inU1b): 65(ptr) Variable Input 71: TypePointer Output 16(float) 72(@entryPointOutput): 71(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 42(inDV1a): 7(ptr) Variable Function 46(inDV1b): 7(ptr) Variable Function 49(inDV1c): 7(ptr) Variable Function 52(inDV2): 9(ptr) Variable Function 56(inDV3): 11(ptr) Variable Function 60(inDV4): 13(ptr) Variable Function 64(inU1a): 15(ptr) Variable Function 68(inU1b): 15(ptr) Variable Function 73(param): 7(ptr) Variable Function 75(param): 7(ptr) Variable Function 77(param): 7(ptr) Variable Function 79(param): 9(ptr) Variable Function 81(param): 11(ptr) Variable Function 83(param): 13(ptr) Variable Function 85(param): 15(ptr) Variable Function 87(param): 15(ptr) Variable Function 45:6(float64_t) Load 44(inDV1a) Store 42(inDV1a) 45 48:6(float64_t) Load 47(inDV1b) Store 46(inDV1b) 48 51:6(float64_t) Load 50(inDV1c) Store 49(inDV1c) 51 55: 8(f64vec2) Load 54(inDV2) Store 52(inDV2) 55 59: 10(f64vec3) Load 58(inDV3) Store 56(inDV3) 59 63: 12(f64vec4) Load 62(inDV4) Store 60(inDV4) 63 67: 14(int) Load 66(inU1a) Store 64(inU1a) 67 70: 14(int) Load 69(inU1b) Store 68(inU1b) 70 74:6(float64_t) Load 42(inDV1a) Store 73(param) 74 76:6(float64_t) Load 46(inDV1b) Store 75(param) 76 78:6(float64_t) Load 49(inDV1c) Store 77(param) 78 80: 8(f64vec2) Load 52(inDV2) Store 79(param) 80 82: 10(f64vec3) Load 56(inDV3) Store 81(param) 82 84: 12(f64vec4) Load 60(inDV4) Store 83(param) 84 86: 14(int) Load 64(inU1a) Store 85(param) 86 88: 14(int) Load 68(inU1b) Store 87(param) 88 89: 16(float) FunctionCall 26(@PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1;) 73(param) 75(param) 77(param) 79(param) 81(param) 83(param) 85(param) 87(param) Store 72(@entryPointOutput) 89 Return FunctionEnd 26(@PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1;): 16(float) Function None 17 18(inDV1a): 7(ptr) FunctionParameter 19(inDV1b): 7(ptr) FunctionParameter 20(inDV1c): 7(ptr) FunctionParameter 21(inDV2): 9(ptr) FunctionParameter 22(inDV3): 11(ptr) FunctionParameter 23(inDV4): 13(ptr) FunctionParameter 24(inU1a): 15(ptr) FunctionParameter 25(inU1b): 15(ptr) FunctionParameter 27: Label 28(r00): 7(ptr) Variable Function 33(r01): 7(ptr) Variable Function 29:6(float64_t) Load 18(inDV1a) 30:6(float64_t) Load 19(inDV1b) 31:6(float64_t) Load 20(inDV1c) 32:6(float64_t) ExtInst 1(GLSL.std.450) 50(Fma) 29 30 31 Store 28(r00) 32 34: 14(int) Load 24(inU1a) 35: 14(int) Load 25(inU1b) 37: 36(ivec2) CompositeConstruct 34 35 38:6(float64_t) Bitcast 37 Store 33(r01) 38 ReturnValue 39 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.f1632.frag.out000066400000000000000000000427701506534232700240160ustar00rootroot00000000000000hlsl.intrinsics.f1632.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunctionS(u1; ( temp float) 0:2 Function Parameters: 0:2 'inF0' ( in uint) 0:? Sequence 0:3 Branch: Return with expression 0:3 direct index ( temp float) 0:3 unpackHalf2x16 ( temp 2-component vector of float) 0:3 'inF0' ( in uint) 0:3 Constant: 0:3 0 (const int) 0:7 Function Definition: PixelShaderFunction1(vu1; ( temp 1-component vector of float) 0:7 Function Parameters: 0:7 'inF0' ( in 1-component vector of uint) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct float ( temp 1-component vector of float) 0:8 direct index ( temp float) 0:8 unpackHalf2x16 ( temp 2-component vector of float) 0:8 Construct uint ( in uint) 0:8 'inF0' ( in 1-component vector of uint) 0:8 Constant: 0:8 0 (const int) 0:12 Function Definition: PixelShaderFunction2(vu2; ( temp 2-component vector of float) 0:12 Function Parameters: 0:12 'inF0' ( in 2-component vector of uint) 0:? Sequence 0:13 Branch: Return with expression 0:13 Construct vec2 ( temp 2-component vector of float) 0:13 direct index ( temp float) 0:13 unpackHalf2x16 ( temp 2-component vector of float) 0:13 direct index ( temp uint) 0:13 'inF0' ( in 2-component vector of uint) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( temp float) 0:13 unpackHalf2x16 ( temp 2-component vector of float) 0:13 direct index ( temp uint) 0:13 'inF0' ( in 2-component vector of uint) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:17 Function Definition: PixelShaderFunction3(vu3; ( temp 3-component vector of float) 0:17 Function Parameters: 0:17 'inF0' ( in 3-component vector of uint) 0:? Sequence 0:18 Branch: Return with expression 0:18 Construct vec3 ( temp 3-component vector of float) 0:18 direct index ( temp float) 0:18 unpackHalf2x16 ( temp 2-component vector of float) 0:18 direct index ( temp uint) 0:18 'inF0' ( in 3-component vector of uint) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp float) 0:18 unpackHalf2x16 ( temp 2-component vector of float) 0:18 direct index ( temp uint) 0:18 'inF0' ( in 3-component vector of uint) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp float) 0:18 unpackHalf2x16 ( temp 2-component vector of float) 0:18 direct index ( temp uint) 0:18 'inF0' ( in 3-component vector of uint) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 0 (const int) 0:22 Function Definition: PixelShaderFunction(vu4; ( temp 4-component vector of float) 0:22 Function Parameters: 0:22 'inF0' ( in 4-component vector of uint) 0:? Sequence 0:23 Branch: Return with expression 0:23 Construct vec4 ( temp 4-component vector of float) 0:23 direct index ( temp float) 0:23 unpackHalf2x16 ( temp 2-component vector of float) 0:23 direct index ( temp uint) 0:23 'inF0' ( in 4-component vector of uint) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 direct index ( temp float) 0:23 unpackHalf2x16 ( temp 2-component vector of float) 0:23 direct index ( temp uint) 0:23 'inF0' ( in 4-component vector of uint) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 direct index ( temp float) 0:23 unpackHalf2x16 ( temp 2-component vector of float) 0:23 direct index ( temp uint) 0:23 'inF0' ( in 4-component vector of uint) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 direct index ( temp float) 0:23 unpackHalf2x16 ( temp 2-component vector of float) 0:23 direct index ( temp uint) 0:23 'inF0' ( in 4-component vector of uint) 0:23 Constant: 0:23 3 (const int) 0:23 Constant: 0:23 0 (const int) 0:27 Function Definition: @main( ( temp 4-component vector of float) 0:27 Function Parameters: 0:? Sequence 0:28 Branch: Return with expression 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:27 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunctionS(u1; ( temp float) 0:2 Function Parameters: 0:2 'inF0' ( in uint) 0:? Sequence 0:3 Branch: Return with expression 0:3 direct index ( temp float) 0:3 unpackHalf2x16 ( temp 2-component vector of float) 0:3 'inF0' ( in uint) 0:3 Constant: 0:3 0 (const int) 0:7 Function Definition: PixelShaderFunction1(vu1; ( temp 1-component vector of float) 0:7 Function Parameters: 0:7 'inF0' ( in 1-component vector of uint) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct float ( temp 1-component vector of float) 0:8 direct index ( temp float) 0:8 unpackHalf2x16 ( temp 2-component vector of float) 0:8 Construct uint ( in uint) 0:8 'inF0' ( in 1-component vector of uint) 0:8 Constant: 0:8 0 (const int) 0:12 Function Definition: PixelShaderFunction2(vu2; ( temp 2-component vector of float) 0:12 Function Parameters: 0:12 'inF0' ( in 2-component vector of uint) 0:? Sequence 0:13 Branch: Return with expression 0:13 Construct vec2 ( temp 2-component vector of float) 0:13 direct index ( temp float) 0:13 unpackHalf2x16 ( temp 2-component vector of float) 0:13 direct index ( temp uint) 0:13 'inF0' ( in 2-component vector of uint) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 direct index ( temp float) 0:13 unpackHalf2x16 ( temp 2-component vector of float) 0:13 direct index ( temp uint) 0:13 'inF0' ( in 2-component vector of uint) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:17 Function Definition: PixelShaderFunction3(vu3; ( temp 3-component vector of float) 0:17 Function Parameters: 0:17 'inF0' ( in 3-component vector of uint) 0:? Sequence 0:18 Branch: Return with expression 0:18 Construct vec3 ( temp 3-component vector of float) 0:18 direct index ( temp float) 0:18 unpackHalf2x16 ( temp 2-component vector of float) 0:18 direct index ( temp uint) 0:18 'inF0' ( in 3-component vector of uint) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp float) 0:18 unpackHalf2x16 ( temp 2-component vector of float) 0:18 direct index ( temp uint) 0:18 'inF0' ( in 3-component vector of uint) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp float) 0:18 unpackHalf2x16 ( temp 2-component vector of float) 0:18 direct index ( temp uint) 0:18 'inF0' ( in 3-component vector of uint) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 0 (const int) 0:22 Function Definition: PixelShaderFunction(vu4; ( temp 4-component vector of float) 0:22 Function Parameters: 0:22 'inF0' ( in 4-component vector of uint) 0:? Sequence 0:23 Branch: Return with expression 0:23 Construct vec4 ( temp 4-component vector of float) 0:23 direct index ( temp float) 0:23 unpackHalf2x16 ( temp 2-component vector of float) 0:23 direct index ( temp uint) 0:23 'inF0' ( in 4-component vector of uint) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 direct index ( temp float) 0:23 unpackHalf2x16 ( temp 2-component vector of float) 0:23 direct index ( temp uint) 0:23 'inF0' ( in 4-component vector of uint) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 direct index ( temp float) 0:23 unpackHalf2x16 ( temp 2-component vector of float) 0:23 direct index ( temp uint) 0:23 'inF0' ( in 4-component vector of uint) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 direct index ( temp float) 0:23 unpackHalf2x16 ( temp 2-component vector of float) 0:23 direct index ( temp uint) 0:23 'inF0' ( in 4-component vector of uint) 0:23 Constant: 0:23 3 (const int) 0:23 Constant: 0:23 0 (const int) 0:27 Function Definition: @main( ( temp 4-component vector of float) 0:27 Function Parameters: 0:? Sequence 0:28 Branch: Return with expression 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:27 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 106 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 104 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "PixelShaderFunctionS(u1;" Name 10 "inF0" Name 14 "PixelShaderFunction1(vu1;" Name 13 "inF0" Name 21 "PixelShaderFunction2(vu2;" Name 20 "inF0" Name 28 "PixelShaderFunction3(vu3;" Name 27 "inF0" Name 35 "PixelShaderFunction(vu4;" Name 34 "inF0" Name 38 "@main(" Name 104 "@entryPointOutput" Decorate 104(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeFunction 8(float) 7(ptr) 16: TypeVector 6(int) 2 17: TypePointer Function 16(ivec2) 18: TypeVector 8(float) 2 19: TypeFunction 18(fvec2) 17(ptr) 23: TypeVector 6(int) 3 24: TypePointer Function 23(ivec3) 25: TypeVector 8(float) 3 26: TypeFunction 25(fvec3) 24(ptr) 30: TypeVector 6(int) 4 31: TypePointer Function 30(ivec4) 32: TypeVector 8(float) 4 33: TypeFunction 32(fvec4) 31(ptr) 37: TypeFunction 32(fvec4) 42: 6(int) Constant 0 55: 6(int) Constant 1 71: 6(int) Constant 2 91: 6(int) Constant 3 99: 8(float) Constant 0 100: 32(fvec4) ConstantComposite 99 99 99 99 103: TypePointer Output 32(fvec4) 104(@entryPointOutput): 103(ptr) Variable Output 4(main): 2 Function None 3 5: Label 105: 32(fvec4) FunctionCall 38(@main() Store 104(@entryPointOutput) 105 Return FunctionEnd 11(PixelShaderFunctionS(u1;): 8(float) Function None 9 10(inF0): 7(ptr) FunctionParameter 12: Label 40: 6(int) Load 10(inF0) 41: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 40 43: 8(float) CompositeExtract 41 0 ReturnValue 43 FunctionEnd 14(PixelShaderFunction1(vu1;): 8(float) Function None 9 13(inF0): 7(ptr) FunctionParameter 15: Label 46: 6(int) Load 13(inF0) 47: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 46 48: 8(float) CompositeExtract 47 0 ReturnValue 48 FunctionEnd 21(PixelShaderFunction2(vu2;): 18(fvec2) Function None 19 20(inF0): 17(ptr) FunctionParameter 22: Label 51: 7(ptr) AccessChain 20(inF0) 42 52: 6(int) Load 51 53: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 52 54: 8(float) CompositeExtract 53 0 56: 7(ptr) AccessChain 20(inF0) 55 57: 6(int) Load 56 58: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 57 59: 8(float) CompositeExtract 58 0 60: 18(fvec2) CompositeConstruct 54 59 ReturnValue 60 FunctionEnd 28(PixelShaderFunction3(vu3;): 25(fvec3) Function None 26 27(inF0): 24(ptr) FunctionParameter 29: Label 63: 7(ptr) AccessChain 27(inF0) 42 64: 6(int) Load 63 65: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 64 66: 8(float) CompositeExtract 65 0 67: 7(ptr) AccessChain 27(inF0) 55 68: 6(int) Load 67 69: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 68 70: 8(float) CompositeExtract 69 0 72: 7(ptr) AccessChain 27(inF0) 71 73: 6(int) Load 72 74: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 73 75: 8(float) CompositeExtract 74 0 76: 25(fvec3) CompositeConstruct 66 70 75 ReturnValue 76 FunctionEnd 35(PixelShaderFunction(vu4;): 32(fvec4) Function None 33 34(inF0): 31(ptr) FunctionParameter 36: Label 79: 7(ptr) AccessChain 34(inF0) 42 80: 6(int) Load 79 81: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 80 82: 8(float) CompositeExtract 81 0 83: 7(ptr) AccessChain 34(inF0) 55 84: 6(int) Load 83 85: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 84 86: 8(float) CompositeExtract 85 0 87: 7(ptr) AccessChain 34(inF0) 71 88: 6(int) Load 87 89: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 88 90: 8(float) CompositeExtract 89 0 92: 7(ptr) AccessChain 34(inF0) 91 93: 6(int) Load 92 94: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 93 95: 8(float) CompositeExtract 94 0 96: 32(fvec4) CompositeConstruct 82 86 90 95 ReturnValue 96 FunctionEnd 38(@main(): 32(fvec4) Function None 37 39: Label ReturnValue 100 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.f3216.frag.out000066400000000000000000000427771506534232700240250ustar00rootroot00000000000000hlsl.intrinsics.f3216.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunctionS(f1; ( temp uint) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:? Sequence 0:3 Branch: Return with expression 0:3 packHalf2x16 ( temp uint) 0:3 Construct vec2 ( temp 2-component vector of float) 0:3 'inF0' ( in float) 0:3 Constant: 0:3 0.000000 0:7 Function Definition: PixelShaderFunction1(vf1; ( temp 1-component vector of uint) 0:7 Function Parameters: 0:7 'inF0' ( in 1-component vector of float) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct uint ( temp 1-component vector of uint) 0:8 packHalf2x16 ( temp uint) 0:8 Construct vec2 ( temp 2-component vector of float) 0:8 Construct float ( in float) 0:8 'inF0' ( in 1-component vector of float) 0:8 Constant: 0:8 0.000000 0:12 Function Definition: PixelShaderFunction2(vf2; ( temp 2-component vector of uint) 0:12 Function Parameters: 0:12 'inF0' ( in 2-component vector of float) 0:? Sequence 0:13 Branch: Return with expression 0:13 Construct uvec2 ( temp 2-component vector of uint) 0:13 packHalf2x16 ( temp uint) 0:13 Construct vec2 ( temp 2-component vector of float) 0:13 direct index ( temp float) 0:13 'inF0' ( in 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.000000 0:13 packHalf2x16 ( temp uint) 0:13 Construct vec2 ( temp 2-component vector of float) 0:13 direct index ( temp float) 0:13 'inF0' ( in 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0.000000 0:17 Function Definition: PixelShaderFunction3(vf3; ( temp 3-component vector of uint) 0:17 Function Parameters: 0:17 'inF0' ( in 3-component vector of float) 0:? Sequence 0:18 Branch: Return with expression 0:18 Construct uvec3 ( temp 3-component vector of uint) 0:18 packHalf2x16 ( temp uint) 0:18 Construct vec2 ( temp 2-component vector of float) 0:18 direct index ( temp float) 0:18 'inF0' ( in 3-component vector of float) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0.000000 0:18 packHalf2x16 ( temp uint) 0:18 Construct vec2 ( temp 2-component vector of float) 0:18 direct index ( temp float) 0:18 'inF0' ( in 3-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0.000000 0:18 packHalf2x16 ( temp uint) 0:18 Construct vec2 ( temp 2-component vector of float) 0:18 direct index ( temp float) 0:18 'inF0' ( in 3-component vector of float) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 0.000000 0:22 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of uint) 0:22 Function Parameters: 0:22 'inF0' ( in 4-component vector of float) 0:? Sequence 0:23 Branch: Return with expression 0:23 Construct uvec4 ( temp 4-component vector of uint) 0:23 packHalf2x16 ( temp uint) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 direct index ( temp float) 0:23 'inF0' ( in 4-component vector of float) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0.000000 0:23 packHalf2x16 ( temp uint) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 direct index ( temp float) 0:23 'inF0' ( in 4-component vector of float) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0.000000 0:23 packHalf2x16 ( temp uint) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 direct index ( temp float) 0:23 'inF0' ( in 4-component vector of float) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0.000000 0:23 packHalf2x16 ( temp uint) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 direct index ( temp float) 0:23 'inF0' ( in 4-component vector of float) 0:23 Constant: 0:23 3 (const int) 0:23 Constant: 0:23 0.000000 0:27 Function Definition: @main( ( temp 4-component vector of float) 0:27 Function Parameters: 0:? Sequence 0:28 Branch: Return with expression 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:27 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunctionS(f1; ( temp uint) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:? Sequence 0:3 Branch: Return with expression 0:3 packHalf2x16 ( temp uint) 0:3 Construct vec2 ( temp 2-component vector of float) 0:3 'inF0' ( in float) 0:3 Constant: 0:3 0.000000 0:7 Function Definition: PixelShaderFunction1(vf1; ( temp 1-component vector of uint) 0:7 Function Parameters: 0:7 'inF0' ( in 1-component vector of float) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct uint ( temp 1-component vector of uint) 0:8 packHalf2x16 ( temp uint) 0:8 Construct vec2 ( temp 2-component vector of float) 0:8 Construct float ( in float) 0:8 'inF0' ( in 1-component vector of float) 0:8 Constant: 0:8 0.000000 0:12 Function Definition: PixelShaderFunction2(vf2; ( temp 2-component vector of uint) 0:12 Function Parameters: 0:12 'inF0' ( in 2-component vector of float) 0:? Sequence 0:13 Branch: Return with expression 0:13 Construct uvec2 ( temp 2-component vector of uint) 0:13 packHalf2x16 ( temp uint) 0:13 Construct vec2 ( temp 2-component vector of float) 0:13 direct index ( temp float) 0:13 'inF0' ( in 2-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0.000000 0:13 packHalf2x16 ( temp uint) 0:13 Construct vec2 ( temp 2-component vector of float) 0:13 direct index ( temp float) 0:13 'inF0' ( in 2-component vector of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0.000000 0:17 Function Definition: PixelShaderFunction3(vf3; ( temp 3-component vector of uint) 0:17 Function Parameters: 0:17 'inF0' ( in 3-component vector of float) 0:? Sequence 0:18 Branch: Return with expression 0:18 Construct uvec3 ( temp 3-component vector of uint) 0:18 packHalf2x16 ( temp uint) 0:18 Construct vec2 ( temp 2-component vector of float) 0:18 direct index ( temp float) 0:18 'inF0' ( in 3-component vector of float) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0.000000 0:18 packHalf2x16 ( temp uint) 0:18 Construct vec2 ( temp 2-component vector of float) 0:18 direct index ( temp float) 0:18 'inF0' ( in 3-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 0.000000 0:18 packHalf2x16 ( temp uint) 0:18 Construct vec2 ( temp 2-component vector of float) 0:18 direct index ( temp float) 0:18 'inF0' ( in 3-component vector of float) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 0.000000 0:22 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of uint) 0:22 Function Parameters: 0:22 'inF0' ( in 4-component vector of float) 0:? Sequence 0:23 Branch: Return with expression 0:23 Construct uvec4 ( temp 4-component vector of uint) 0:23 packHalf2x16 ( temp uint) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 direct index ( temp float) 0:23 'inF0' ( in 4-component vector of float) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0.000000 0:23 packHalf2x16 ( temp uint) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 direct index ( temp float) 0:23 'inF0' ( in 4-component vector of float) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0.000000 0:23 packHalf2x16 ( temp uint) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 direct index ( temp float) 0:23 'inF0' ( in 4-component vector of float) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0.000000 0:23 packHalf2x16 ( temp uint) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 direct index ( temp float) 0:23 'inF0' ( in 4-component vector of float) 0:23 Constant: 0:23 3 (const int) 0:23 Constant: 0:23 0.000000 0:27 Function Definition: @main( ( temp 4-component vector of float) 0:27 Function Parameters: 0:? Sequence 0:28 Branch: Return with expression 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:27 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 106 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 104 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "PixelShaderFunctionS(f1;" Name 10 "inF0" Name 14 "PixelShaderFunction1(vf1;" Name 13 "inF0" Name 21 "PixelShaderFunction2(vf2;" Name 20 "inF0" Name 28 "PixelShaderFunction3(vf3;" Name 27 "inF0" Name 35 "PixelShaderFunction(vf4;" Name 34 "inF0" Name 38 "@main(" Name 104 "@entryPointOutput" Decorate 104(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeInt 32 0 9: TypeFunction 8(int) 7(ptr) 16: TypeVector 6(float) 2 17: TypePointer Function 16(fvec2) 18: TypeVector 8(int) 2 19: TypeFunction 18(ivec2) 17(ptr) 23: TypeVector 6(float) 3 24: TypePointer Function 23(fvec3) 25: TypeVector 8(int) 3 26: TypeFunction 25(ivec3) 24(ptr) 30: TypeVector 6(float) 4 31: TypePointer Function 30(fvec4) 32: TypeVector 8(int) 4 33: TypeFunction 32(ivec4) 31(ptr) 37: TypeFunction 30(fvec4) 41: 6(float) Constant 0 51: 8(int) Constant 0 56: 8(int) Constant 1 72: 8(int) Constant 2 92: 8(int) Constant 3 100: 30(fvec4) ConstantComposite 41 41 41 41 103: TypePointer Output 30(fvec4) 104(@entryPointOutput): 103(ptr) Variable Output 4(main): 2 Function None 3 5: Label 105: 30(fvec4) FunctionCall 38(@main() Store 104(@entryPointOutput) 105 Return FunctionEnd 11(PixelShaderFunctionS(f1;): 8(int) Function None 9 10(inF0): 7(ptr) FunctionParameter 12: Label 40: 6(float) Load 10(inF0) 42: 16(fvec2) CompositeConstruct 40 41 43: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 42 ReturnValue 43 FunctionEnd 14(PixelShaderFunction1(vf1;): 8(int) Function None 9 13(inF0): 7(ptr) FunctionParameter 15: Label 46: 6(float) Load 13(inF0) 47: 16(fvec2) CompositeConstruct 46 41 48: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 47 ReturnValue 48 FunctionEnd 21(PixelShaderFunction2(vf2;): 18(ivec2) Function None 19 20(inF0): 17(ptr) FunctionParameter 22: Label 52: 7(ptr) AccessChain 20(inF0) 51 53: 6(float) Load 52 54: 16(fvec2) CompositeConstruct 53 41 55: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 54 57: 7(ptr) AccessChain 20(inF0) 56 58: 6(float) Load 57 59: 16(fvec2) CompositeConstruct 58 41 60: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 59 61: 18(ivec2) CompositeConstruct 55 60 ReturnValue 61 FunctionEnd 28(PixelShaderFunction3(vf3;): 25(ivec3) Function None 26 27(inF0): 24(ptr) FunctionParameter 29: Label 64: 7(ptr) AccessChain 27(inF0) 51 65: 6(float) Load 64 66: 16(fvec2) CompositeConstruct 65 41 67: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 66 68: 7(ptr) AccessChain 27(inF0) 56 69: 6(float) Load 68 70: 16(fvec2) CompositeConstruct 69 41 71: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 70 73: 7(ptr) AccessChain 27(inF0) 72 74: 6(float) Load 73 75: 16(fvec2) CompositeConstruct 74 41 76: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 75 77: 25(ivec3) CompositeConstruct 67 71 76 ReturnValue 77 FunctionEnd 35(PixelShaderFunction(vf4;): 32(ivec4) Function None 33 34(inF0): 31(ptr) FunctionParameter 36: Label 80: 7(ptr) AccessChain 34(inF0) 51 81: 6(float) Load 80 82: 16(fvec2) CompositeConstruct 81 41 83: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 82 84: 7(ptr) AccessChain 34(inF0) 56 85: 6(float) Load 84 86: 16(fvec2) CompositeConstruct 85 41 87: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 86 88: 7(ptr) AccessChain 34(inF0) 72 89: 6(float) Load 88 90: 16(fvec2) CompositeConstruct 89 41 91: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 90 93: 7(ptr) AccessChain 34(inF0) 92 94: 6(float) Load 93 95: 16(fvec2) CompositeConstruct 94 41 96: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 95 97: 32(ivec4) CompositeConstruct 83 87 91 96 ReturnValue 97 FunctionEnd 38(@main(): 30(fvec4) Function None 37 39: Label ReturnValue 100 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.frag.out000066400000000000000000014445711506534232700232640ustar00rootroot00000000000000hlsl.intrinsics.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;i1; ( temp float) 0:17 Function Parameters: 0:17 'inF0' ( in float) 0:17 'inF1' ( in float) 0:17 'inF2' ( in float) 0:17 'inU0' ( in uint) 0:17 'inU1' ( in int) 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp bool) 0:20 'r000' ( temp bool) 0:20 all ( temp bool) 0:20 Convert float to bool ( temp bool) 0:20 'inF0' ( in float) 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'r001' ( temp float) 0:21 Absolute value ( temp float) 0:21 'inF0' ( in float) 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'r002' ( temp float) 0:22 arc cosine ( temp float) 0:22 'inF0' ( in float) 0:23 Sequence 0:23 move second child to first child ( temp bool) 0:23 'r003' ( temp bool) 0:23 any ( temp bool) 0:23 Convert float to bool ( temp bool) 0:23 'inF0' ( in float) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'r004' ( temp float) 0:24 arc sine ( temp float) 0:24 'inF0' ( in float) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'r005' ( temp int) 0:25 floatBitsToInt ( temp int) 0:25 'inF0' ( in float) 0:26 Sequence 0:26 move second child to first child ( temp uint) 0:26 'r006' ( temp uint) 0:26 floatBitsToUint ( temp uint) 0:26 'inU1' ( in int) 0:27 Sequence 0:27 move second child to first child ( temp float) 0:27 'r007' ( temp float) 0:27 intBitsToFloat ( temp float) 0:27 'inU0' ( in uint) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'r009' ( temp float) 0:29 arc tangent ( temp float) 0:29 'inF0' ( in float) 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'r010' ( temp float) 0:30 arc tangent ( temp float) 0:30 'inF0' ( in float) 0:30 'inF1' ( in float) 0:31 Sequence 0:31 move second child to first child ( temp float) 0:31 'r011' ( temp float) 0:31 Ceiling ( temp float) 0:31 'inF0' ( in float) 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'r012' ( temp float) 0:32 clamp ( temp float) 0:32 'inF0' ( in float) 0:32 'inF1' ( in float) 0:32 'inF2' ( in float) 0:33 Test condition and select ( temp void) 0:33 Condition 0:33 Compare Less Than ( temp bool) 0:33 'inF0' ( in float) 0:33 Constant: 0:33 0.000000 0:33 true case 0:33 Branch: Kill 0:34 Test condition and select ( temp void) 0:34 Condition 0:34 Compare Less Than ( temp bool) 0:34 'r005' ( temp int) 0:34 Constant: 0:34 0 (const int) 0:34 true case 0:34 Branch: Kill 0:35 Sequence 0:35 move second child to first child ( temp float) 0:35 'r014' ( temp float) 0:35 cosine ( temp float) 0:35 'inF0' ( in float) 0:36 Sequence 0:36 move second child to first child ( temp float) 0:36 'r015' ( temp float) 0:36 hyp. cosine ( temp float) 0:36 'inF0' ( in float) 0:37 Sequence 0:37 move second child to first child ( temp int) 0:37 'r016' ( temp int) 0:37 bitCount ( temp int) 0:37 Constant: 0:37 7 (const int) 0:38 Sequence 0:38 move second child to first child ( temp float) 0:38 'r017' ( temp float) 0:38 dPdx ( temp float) 0:38 'inF0' ( in float) 0:39 Sequence 0:39 move second child to first child ( temp float) 0:39 'r018' ( temp float) 0:39 dPdxCoarse ( temp float) 0:39 'inF0' ( in float) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'r019' ( temp float) 0:40 dPdxFine ( temp float) 0:40 'inF0' ( in float) 0:41 Sequence 0:41 move second child to first child ( temp float) 0:41 'r020' ( temp float) 0:41 dPdy ( temp float) 0:41 'inF0' ( in float) 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r021' ( temp float) 0:42 dPdyCoarse ( temp float) 0:42 'inF0' ( in float) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r022' ( temp float) 0:43 dPdyFine ( temp float) 0:43 'inF0' ( in float) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r023' ( temp float) 0:44 degrees ( temp float) 0:44 'inF0' ( in float) 0:45 Sequence 0:45 move second child to first child ( temp float) 0:45 'r024' ( temp float) 0:45 distance ( temp float) 0:45 'inF0' ( in float) 0:45 'inF1' ( in float) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r027' ( temp float) 0:49 exp ( temp float) 0:49 'inF0' ( in float) 0:50 Sequence 0:50 move second child to first child ( temp float) 0:50 'r028' ( temp float) 0:50 exp2 ( temp float) 0:50 'inF0' ( in float) 0:51 Sequence 0:51 move second child to first child ( temp uint) 0:51 'r029' ( temp uint) 0:51 Convert int to uint ( temp uint) 0:51 findMSB ( temp int) 0:51 Constant: 0:51 7 (const int) 0:52 Sequence 0:52 move second child to first child ( temp uint) 0:52 'r030' ( temp uint) 0:52 Convert int to uint ( temp uint) 0:52 findLSB ( temp int) 0:52 Constant: 0:52 7 (const int) 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r031' ( temp float) 0:53 Floor ( temp float) 0:53 'inF0' ( in float) 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'r033' ( temp float) 0:55 mod ( temp float) 0:55 'inF0' ( in float) 0:55 'inF1' ( in float) 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'r033i' ( temp float) 0:56 mod ( temp float) 0:56 'inF0' ( in float) 0:56 Constant: 0:56 2.000000 0:57 Sequence 0:57 move second child to first child ( temp float) 0:57 'r034' ( temp float) 0:57 Fraction ( temp float) 0:57 'inF0' ( in float) 0:58 Sequence 0:58 move second child to first child ( temp float) 0:58 'r036' ( temp float) 0:58 fwidth ( temp float) 0:58 'inF0' ( in float) 0:59 Sequence 0:59 move second child to first child ( temp bool) 0:59 'r037' ( temp bool) 0:59 isinf ( temp bool) 0:59 'inF0' ( in float) 0:60 Sequence 0:60 move second child to first child ( temp bool) 0:60 'r038' ( temp bool) 0:60 isnan ( temp bool) 0:60 'inF0' ( in float) 0:61 Sequence 0:61 move second child to first child ( temp float) 0:61 'r039' ( temp float) 0:61 ldexp ( temp float) 0:61 'inF0' ( in float) 0:61 'inF1' ( in float) 0:62 Sequence 0:62 move second child to first child ( temp float) 0:62 'r039a' ( temp float) 0:62 mix ( temp float) 0:62 'inF0' ( in float) 0:62 'inF1' ( in float) 0:62 'inF2' ( in float) 0:63 Sequence 0:63 move second child to first child ( temp float) 0:63 'r040' ( temp float) 0:63 log ( temp float) 0:63 'inF0' ( in float) 0:64 Sequence 0:64 move second child to first child ( temp float) 0:64 'r041' ( temp float) 0:64 component-wise multiply ( temp float) 0:64 log2 ( temp float) 0:64 'inF0' ( in float) 0:64 Constant: 0:64 0.301030 0:65 Sequence 0:65 move second child to first child ( temp float) 0:65 'r042' ( temp float) 0:65 log2 ( temp float) 0:65 'inF0' ( in float) 0:66 Sequence 0:66 move second child to first child ( temp float) 0:66 'r043' ( temp float) 0:66 max ( temp float) 0:66 'inF0' ( in float) 0:66 'inF1' ( in float) 0:67 Sequence 0:67 move second child to first child ( temp float) 0:67 'r044' ( temp float) 0:67 min ( temp float) 0:67 'inF0' ( in float) 0:67 'inF1' ( in float) 0:68 Sequence 0:68 move second child to first child ( temp float) 0:68 'r045' ( temp float) 0:68 pow ( temp float) 0:68 'inF0' ( in float) 0:68 'inF1' ( in float) 0:69 Sequence 0:69 move second child to first child ( temp float) 0:69 'r046' ( temp float) 0:69 radians ( temp float) 0:69 'inF0' ( in float) 0:70 Sequence 0:70 move second child to first child ( temp float) 0:70 'r047' ( temp float) 0:70 divide ( temp float) 0:70 Constant: 0:70 1.000000 0:70 'inF0' ( in float) 0:71 Sequence 0:71 move second child to first child ( temp uint) 0:71 'r048' ( temp uint) 0:71 Convert int to uint ( temp uint) 0:71 bitFieldReverse ( temp int) 0:71 Constant: 0:71 2 (const int) 0:72 Sequence 0:72 move second child to first child ( temp float) 0:72 'r049' ( temp float) 0:72 roundEven ( temp float) 0:72 'inF0' ( in float) 0:73 Sequence 0:73 move second child to first child ( temp float) 0:73 'r050' ( temp float) 0:73 inverse sqrt ( temp float) 0:73 'inF0' ( in float) 0:74 Sequence 0:74 move second child to first child ( temp float) 0:74 'r051' ( temp float) 0:74 clamp ( temp float) 0:74 'inF0' ( in float) 0:74 Constant: 0:74 0.000000 0:74 Constant: 0:74 1.000000 0:75 Sequence 0:75 move second child to first child ( temp float) 0:75 'r052' ( temp float) 0:75 Sign ( temp float) 0:75 'inF0' ( in float) 0:76 Sequence 0:76 move second child to first child ( temp float) 0:76 'r053' ( temp float) 0:76 sine ( temp float) 0:76 'inF0' ( in float) 0:77 Sequence 0:77 move second child to first child ( temp float) 0:77 'inF1' ( in float) 0:77 sine ( temp float) 0:77 'inF0' ( in float) 0:77 move second child to first child ( temp float) 0:77 'inF2' ( in float) 0:77 cosine ( temp float) 0:77 'inF0' ( in float) 0:78 Sequence 0:78 move second child to first child ( temp float) 0:78 'r055' ( temp float) 0:78 hyp. sine ( temp float) 0:78 'inF0' ( in float) 0:79 Sequence 0:79 move second child to first child ( temp float) 0:79 'r056' ( temp float) 0:79 smoothstep ( temp float) 0:79 'inF0' ( in float) 0:79 'inF1' ( in float) 0:79 'inF2' ( in float) 0:80 Sequence 0:80 move second child to first child ( temp float) 0:80 'r057' ( temp float) 0:80 sqrt ( temp float) 0:80 'inF0' ( in float) 0:81 Sequence 0:81 move second child to first child ( temp float) 0:81 'r058' ( temp float) 0:81 step ( temp float) 0:81 'inF0' ( in float) 0:81 'inF1' ( in float) 0:82 Sequence 0:82 move second child to first child ( temp float) 0:82 'r059' ( temp float) 0:82 tangent ( temp float) 0:82 'inF0' ( in float) 0:83 Sequence 0:83 move second child to first child ( temp float) 0:83 'r060' ( temp float) 0:83 hyp. tangent ( temp float) 0:83 'inF0' ( in float) 0:85 Sequence 0:85 move second child to first child ( temp float) 0:85 'r061' ( temp float) 0:85 trunc ( temp float) 0:85 'inF0' ( in float) 0:87 Branch: Return with expression 0:87 Constant: 0:87 0.000000 0:91 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) 0:91 Function Parameters: 0:91 'inF0' ( in 1-component vector of float) 0:91 'inF1' ( in 1-component vector of float) 0:91 'inF2' ( in 1-component vector of float) 0:? Sequence 0:93 Branch: Return with expression 0:93 Constant: 0:93 0.000000 0:97 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) 0:97 Function Parameters: 0:97 'inF0' ( in 2-component vector of float) 0:97 'inF1' ( in 2-component vector of float) 0:97 'inF2' ( in 2-component vector of float) 0:97 'inU0' ( in 2-component vector of uint) 0:97 'inU1' ( in 2-component vector of uint) 0:? Sequence 0:100 Sequence 0:100 move second child to first child ( temp bool) 0:100 'r000' ( temp bool) 0:100 all ( temp bool) 0:100 Convert float to bool ( temp 2-component vector of bool) 0:100 'inF0' ( in 2-component vector of float) 0:101 Sequence 0:101 move second child to first child ( temp 2-component vector of float) 0:101 'r001' ( temp 2-component vector of float) 0:101 Absolute value ( temp 2-component vector of float) 0:101 'inF0' ( in 2-component vector of float) 0:102 Sequence 0:102 move second child to first child ( temp 2-component vector of float) 0:102 'r002' ( temp 2-component vector of float) 0:102 arc cosine ( temp 2-component vector of float) 0:102 'inF0' ( in 2-component vector of float) 0:103 Sequence 0:103 move second child to first child ( temp bool) 0:103 'r003' ( temp bool) 0:103 any ( temp bool) 0:103 Convert float to bool ( temp 2-component vector of bool) 0:103 'inF0' ( in 2-component vector of float) 0:104 Sequence 0:104 move second child to first child ( temp 2-component vector of float) 0:104 'r004' ( temp 2-component vector of float) 0:104 arc sine ( temp 2-component vector of float) 0:104 'inF0' ( in 2-component vector of float) 0:105 Sequence 0:105 move second child to first child ( temp 2-component vector of int) 0:105 'r005' ( temp 2-component vector of int) 0:105 floatBitsToInt ( temp 2-component vector of int) 0:105 'inF0' ( in 2-component vector of float) 0:106 Sequence 0:106 move second child to first child ( temp 2-component vector of uint) 0:106 'r006' ( temp 2-component vector of uint) 0:106 floatBitsToUint ( temp 2-component vector of uint) 0:106 'inF0' ( in 2-component vector of float) 0:107 Sequence 0:107 move second child to first child ( temp 2-component vector of float) 0:107 'r007' ( temp 2-component vector of float) 0:107 intBitsToFloat ( temp 2-component vector of float) 0:107 'inU0' ( in 2-component vector of uint) 0:109 Sequence 0:109 move second child to first child ( temp 2-component vector of float) 0:109 'r009' ( temp 2-component vector of float) 0:109 arc tangent ( temp 2-component vector of float) 0:109 'inF0' ( in 2-component vector of float) 0:110 Sequence 0:110 move second child to first child ( temp 2-component vector of float) 0:110 'r010' ( temp 2-component vector of float) 0:110 arc tangent ( temp 2-component vector of float) 0:110 'inF0' ( in 2-component vector of float) 0:110 'inF1' ( in 2-component vector of float) 0:111 Sequence 0:111 move second child to first child ( temp 2-component vector of float) 0:111 'r011' ( temp 2-component vector of float) 0:111 Ceiling ( temp 2-component vector of float) 0:111 'inF0' ( in 2-component vector of float) 0:112 Sequence 0:112 move second child to first child ( temp 2-component vector of float) 0:112 'r012' ( temp 2-component vector of float) 0:112 clamp ( temp 2-component vector of float) 0:112 'inF0' ( in 2-component vector of float) 0:112 'inF1' ( in 2-component vector of float) 0:112 'inF2' ( in 2-component vector of float) 0:113 Test condition and select ( temp void) 0:113 Condition 0:113 any ( temp bool) 0:113 Compare Less Than ( temp 2-component vector of bool) 0:113 'inF0' ( in 2-component vector of float) 0:113 Constant: 0:113 0.000000 0:113 0.000000 0:113 true case 0:113 Branch: Kill 0:114 Test condition and select ( temp void) 0:114 Condition 0:114 any ( temp bool) 0:114 Compare Less Than ( temp 2-component vector of bool) 0:114 'inU0' ( in 2-component vector of uint) 0:114 Constant: 0:114 0.000000 0:114 0.000000 0:114 true case 0:114 Branch: Kill 0:115 Sequence 0:115 move second child to first child ( temp 2-component vector of float) 0:115 'r013' ( temp 2-component vector of float) 0:115 cosine ( temp 2-component vector of float) 0:115 'inF0' ( in 2-component vector of float) 0:116 Sequence 0:116 move second child to first child ( temp 2-component vector of float) 0:116 'r015' ( temp 2-component vector of float) 0:116 hyp. cosine ( temp 2-component vector of float) 0:116 'inF0' ( in 2-component vector of float) 0:117 Sequence 0:117 move second child to first child ( temp 2-component vector of int) 0:117 'r016' ( temp 2-component vector of int) 0:117 bitCount ( temp 2-component vector of int) 0:117 Constant: 0:117 7 (const int) 0:117 3 (const int) 0:118 Sequence 0:118 move second child to first child ( temp 2-component vector of float) 0:118 'r017' ( temp 2-component vector of float) 0:118 dPdx ( temp 2-component vector of float) 0:118 'inF0' ( in 2-component vector of float) 0:119 Sequence 0:119 move second child to first child ( temp 2-component vector of float) 0:119 'r018' ( temp 2-component vector of float) 0:119 dPdxCoarse ( temp 2-component vector of float) 0:119 'inF0' ( in 2-component vector of float) 0:120 Sequence 0:120 move second child to first child ( temp 2-component vector of float) 0:120 'r019' ( temp 2-component vector of float) 0:120 dPdxFine ( temp 2-component vector of float) 0:120 'inF0' ( in 2-component vector of float) 0:121 Sequence 0:121 move second child to first child ( temp 2-component vector of float) 0:121 'r020' ( temp 2-component vector of float) 0:121 dPdy ( temp 2-component vector of float) 0:121 'inF0' ( in 2-component vector of float) 0:122 Sequence 0:122 move second child to first child ( temp 2-component vector of float) 0:122 'r021' ( temp 2-component vector of float) 0:122 dPdyCoarse ( temp 2-component vector of float) 0:122 'inF0' ( in 2-component vector of float) 0:123 Sequence 0:123 move second child to first child ( temp 2-component vector of float) 0:123 'r022' ( temp 2-component vector of float) 0:123 dPdyFine ( temp 2-component vector of float) 0:123 'inF0' ( in 2-component vector of float) 0:124 Sequence 0:124 move second child to first child ( temp 2-component vector of float) 0:124 'r023' ( temp 2-component vector of float) 0:124 degrees ( temp 2-component vector of float) 0:124 'inF0' ( in 2-component vector of float) 0:128 Sequence 0:128 move second child to first child ( temp float) 0:128 'r026' ( temp float) 0:128 distance ( temp float) 0:128 'inF0' ( in 2-component vector of float) 0:128 'inF1' ( in 2-component vector of float) 0:129 Sequence 0:129 move second child to first child ( temp float) 0:129 'r027' ( temp float) 0:129 dot-product ( temp float) 0:129 'inF0' ( in 2-component vector of float) 0:129 'inF1' ( in 2-component vector of float) 0:133 Sequence 0:133 move second child to first child ( temp 2-component vector of float) 0:133 'r028' ( temp 2-component vector of float) 0:133 exp ( temp 2-component vector of float) 0:133 'inF0' ( in 2-component vector of float) 0:134 Sequence 0:134 move second child to first child ( temp 2-component vector of float) 0:134 'r029' ( temp 2-component vector of float) 0:134 exp2 ( temp 2-component vector of float) 0:134 'inF0' ( in 2-component vector of float) 0:135 Sequence 0:135 move second child to first child ( temp 2-component vector of float) 0:135 'r030' ( temp 2-component vector of float) 0:135 face-forward ( temp 2-component vector of float) 0:135 'inF0' ( in 2-component vector of float) 0:135 'inF1' ( in 2-component vector of float) 0:135 'inF2' ( in 2-component vector of float) 0:136 Sequence 0:136 move second child to first child ( temp 2-component vector of uint) 0:136 'r031' ( temp 2-component vector of uint) 0:136 findMSB ( temp 2-component vector of uint) 0:136 Constant: 0:136 7 (const uint) 0:136 8 (const uint) 0:137 Sequence 0:137 move second child to first child ( temp 2-component vector of uint) 0:137 'r032' ( temp 2-component vector of uint) 0:137 findLSB ( temp 2-component vector of uint) 0:137 Constant: 0:137 7 (const uint) 0:137 8 (const uint) 0:138 Sequence 0:138 move second child to first child ( temp 2-component vector of float) 0:138 'r033' ( temp 2-component vector of float) 0:138 Floor ( temp 2-component vector of float) 0:138 'inF0' ( in 2-component vector of float) 0:140 Sequence 0:140 move second child to first child ( temp 2-component vector of float) 0:140 'r035' ( temp 2-component vector of float) 0:140 mod ( temp 2-component vector of float) 0:140 'inF0' ( in 2-component vector of float) 0:140 'inF1' ( in 2-component vector of float) 0:141 Sequence 0:141 move second child to first child ( temp 2-component vector of float) 0:141 'r036' ( temp 2-component vector of float) 0:141 Fraction ( temp 2-component vector of float) 0:141 'inF0' ( in 2-component vector of float) 0:142 Sequence 0:142 move second child to first child ( temp 2-component vector of float) 0:142 'r038' ( temp 2-component vector of float) 0:142 fwidth ( temp 2-component vector of float) 0:142 'inF0' ( in 2-component vector of float) 0:143 Sequence 0:143 move second child to first child ( temp 2-component vector of bool) 0:143 'r039' ( temp 2-component vector of bool) 0:143 isinf ( temp 2-component vector of bool) 0:143 'inF0' ( in 2-component vector of float) 0:144 Sequence 0:144 move second child to first child ( temp 2-component vector of bool) 0:144 'r040' ( temp 2-component vector of bool) 0:144 isnan ( temp 2-component vector of bool) 0:144 'inF0' ( in 2-component vector of float) 0:145 Sequence 0:145 move second child to first child ( temp 2-component vector of float) 0:145 'r041' ( temp 2-component vector of float) 0:145 ldexp ( temp 2-component vector of float) 0:145 'inF0' ( in 2-component vector of float) 0:145 'inF1' ( in 2-component vector of float) 0:146 Sequence 0:146 move second child to first child ( temp 2-component vector of float) 0:146 'r039a' ( temp 2-component vector of float) 0:146 mix ( temp 2-component vector of float) 0:146 'inF0' ( in 2-component vector of float) 0:146 'inF1' ( in 2-component vector of float) 0:146 'inF2' ( in 2-component vector of float) 0:147 Sequence 0:147 move second child to first child ( temp float) 0:147 'r042' ( temp float) 0:147 length ( temp float) 0:147 'inF0' ( in 2-component vector of float) 0:148 Sequence 0:148 move second child to first child ( temp 2-component vector of float) 0:148 'r043' ( temp 2-component vector of float) 0:148 log ( temp 2-component vector of float) 0:148 'inF0' ( in 2-component vector of float) 0:149 Sequence 0:149 move second child to first child ( temp 2-component vector of float) 0:149 'r044' ( temp 2-component vector of float) 0:149 vector-scale ( temp 2-component vector of float) 0:149 log2 ( temp 2-component vector of float) 0:149 'inF0' ( in 2-component vector of float) 0:149 Constant: 0:149 0.301030 0:150 Sequence 0:150 move second child to first child ( temp 2-component vector of float) 0:150 'r045' ( temp 2-component vector of float) 0:150 log2 ( temp 2-component vector of float) 0:150 'inF0' ( in 2-component vector of float) 0:151 Sequence 0:151 move second child to first child ( temp 2-component vector of float) 0:151 'r046' ( temp 2-component vector of float) 0:151 max ( temp 2-component vector of float) 0:151 'inF0' ( in 2-component vector of float) 0:151 'inF1' ( in 2-component vector of float) 0:152 Sequence 0:152 move second child to first child ( temp 2-component vector of float) 0:152 'r047' ( temp 2-component vector of float) 0:152 min ( temp 2-component vector of float) 0:152 'inF0' ( in 2-component vector of float) 0:152 'inF1' ( in 2-component vector of float) 0:153 Sequence 0:153 move second child to first child ( temp 2-component vector of float) 0:153 'r048' ( temp 2-component vector of float) 0:153 normalize ( temp 2-component vector of float) 0:153 'inF0' ( in 2-component vector of float) 0:154 Sequence 0:154 move second child to first child ( temp 2-component vector of float) 0:154 'r049' ( temp 2-component vector of float) 0:154 pow ( temp 2-component vector of float) 0:154 'inF0' ( in 2-component vector of float) 0:154 'inF1' ( in 2-component vector of float) 0:155 Sequence 0:155 move second child to first child ( temp 2-component vector of float) 0:155 'r050' ( temp 2-component vector of float) 0:155 radians ( temp 2-component vector of float) 0:155 'inF0' ( in 2-component vector of float) 0:156 Sequence 0:156 move second child to first child ( temp 2-component vector of float) 0:156 'r051' ( temp 2-component vector of float) 0:156 divide ( temp 2-component vector of float) 0:156 Constant: 0:156 1.000000 0:156 'inF0' ( in 2-component vector of float) 0:157 Sequence 0:157 move second child to first child ( temp 2-component vector of float) 0:157 'r052' ( temp 2-component vector of float) 0:157 reflect ( temp 2-component vector of float) 0:157 'inF0' ( in 2-component vector of float) 0:157 'inF1' ( in 2-component vector of float) 0:158 Sequence 0:158 move second child to first child ( temp 2-component vector of float) 0:158 'r053' ( temp 2-component vector of float) 0:158 refract ( temp 2-component vector of float) 0:158 'inF0' ( in 2-component vector of float) 0:158 'inF1' ( in 2-component vector of float) 0:158 Constant: 0:158 2.000000 0:159 Sequence 0:159 move second child to first child ( temp 2-component vector of uint) 0:159 'r054' ( temp 2-component vector of uint) 0:159 bitFieldReverse ( temp 2-component vector of uint) 0:159 Constant: 0:159 1 (const uint) 0:159 2 (const uint) 0:160 Sequence 0:160 move second child to first child ( temp 2-component vector of float) 0:160 'r055' ( temp 2-component vector of float) 0:160 roundEven ( temp 2-component vector of float) 0:160 'inF0' ( in 2-component vector of float) 0:161 Sequence 0:161 move second child to first child ( temp 2-component vector of float) 0:161 'r056' ( temp 2-component vector of float) 0:161 inverse sqrt ( temp 2-component vector of float) 0:161 'inF0' ( in 2-component vector of float) 0:162 Sequence 0:162 move second child to first child ( temp 2-component vector of float) 0:162 'r057' ( temp 2-component vector of float) 0:162 clamp ( temp 2-component vector of float) 0:162 'inF0' ( in 2-component vector of float) 0:162 Constant: 0:162 0.000000 0:162 Constant: 0:162 1.000000 0:163 Sequence 0:163 move second child to first child ( temp 2-component vector of float) 0:163 'r058' ( temp 2-component vector of float) 0:163 Sign ( temp 2-component vector of float) 0:163 'inF0' ( in 2-component vector of float) 0:164 Sequence 0:164 move second child to first child ( temp 2-component vector of float) 0:164 'r059' ( temp 2-component vector of float) 0:164 sine ( temp 2-component vector of float) 0:164 'inF0' ( in 2-component vector of float) 0:165 Sequence 0:165 move second child to first child ( temp 2-component vector of float) 0:165 'inF1' ( in 2-component vector of float) 0:165 sine ( temp 2-component vector of float) 0:165 'inF0' ( in 2-component vector of float) 0:165 move second child to first child ( temp 2-component vector of float) 0:165 'inF2' ( in 2-component vector of float) 0:165 cosine ( temp 2-component vector of float) 0:165 'inF0' ( in 2-component vector of float) 0:166 Sequence 0:166 move second child to first child ( temp 2-component vector of float) 0:166 'r060' ( temp 2-component vector of float) 0:166 hyp. sine ( temp 2-component vector of float) 0:166 'inF0' ( in 2-component vector of float) 0:167 Sequence 0:167 move second child to first child ( temp 2-component vector of float) 0:167 'r061' ( temp 2-component vector of float) 0:167 smoothstep ( temp 2-component vector of float) 0:167 'inF0' ( in 2-component vector of float) 0:167 'inF1' ( in 2-component vector of float) 0:167 'inF2' ( in 2-component vector of float) 0:168 Sequence 0:168 move second child to first child ( temp 2-component vector of float) 0:168 'r062' ( temp 2-component vector of float) 0:168 sqrt ( temp 2-component vector of float) 0:168 'inF0' ( in 2-component vector of float) 0:169 Sequence 0:169 move second child to first child ( temp 2-component vector of float) 0:169 'r063' ( temp 2-component vector of float) 0:169 step ( temp 2-component vector of float) 0:169 'inF0' ( in 2-component vector of float) 0:169 'inF1' ( in 2-component vector of float) 0:170 Sequence 0:170 move second child to first child ( temp 2-component vector of float) 0:170 'r064' ( temp 2-component vector of float) 0:170 tangent ( temp 2-component vector of float) 0:170 'inF0' ( in 2-component vector of float) 0:171 Sequence 0:171 move second child to first child ( temp 2-component vector of float) 0:171 'r065' ( temp 2-component vector of float) 0:171 hyp. tangent ( temp 2-component vector of float) 0:171 'inF0' ( in 2-component vector of float) 0:173 Sequence 0:173 move second child to first child ( temp 2-component vector of float) 0:173 'r066' ( temp 2-component vector of float) 0:173 trunc ( temp 2-component vector of float) 0:173 'inF0' ( in 2-component vector of float) 0:176 Branch: Return with expression 0:176 Constant: 0:176 1.000000 0:176 2.000000 0:180 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) 0:180 Function Parameters: 0:180 'inF0' ( in 3-component vector of float) 0:180 'inF1' ( in 3-component vector of float) 0:180 'inF2' ( in 3-component vector of float) 0:180 'inU0' ( in 3-component vector of uint) 0:180 'inU1' ( in 3-component vector of uint) 0:? Sequence 0:183 Sequence 0:183 move second child to first child ( temp bool) 0:183 'r000' ( temp bool) 0:183 all ( temp bool) 0:183 Convert float to bool ( temp 3-component vector of bool) 0:183 'inF0' ( in 3-component vector of float) 0:184 Sequence 0:184 move second child to first child ( temp 3-component vector of float) 0:184 'r001' ( temp 3-component vector of float) 0:184 Absolute value ( temp 3-component vector of float) 0:184 'inF0' ( in 3-component vector of float) 0:185 Sequence 0:185 move second child to first child ( temp 3-component vector of float) 0:185 'r002' ( temp 3-component vector of float) 0:185 arc cosine ( temp 3-component vector of float) 0:185 'inF0' ( in 3-component vector of float) 0:186 Sequence 0:186 move second child to first child ( temp bool) 0:186 'r003' ( temp bool) 0:186 any ( temp bool) 0:186 Convert float to bool ( temp 3-component vector of bool) 0:186 'inF0' ( in 3-component vector of float) 0:187 Sequence 0:187 move second child to first child ( temp 3-component vector of float) 0:187 'r004' ( temp 3-component vector of float) 0:187 arc sine ( temp 3-component vector of float) 0:187 'inF0' ( in 3-component vector of float) 0:188 Sequence 0:188 move second child to first child ( temp 3-component vector of int) 0:188 'r005' ( temp 3-component vector of int) 0:188 floatBitsToInt ( temp 3-component vector of int) 0:188 'inF0' ( in 3-component vector of float) 0:189 Sequence 0:189 move second child to first child ( temp 3-component vector of uint) 0:189 'r006' ( temp 3-component vector of uint) 0:189 floatBitsToUint ( temp 3-component vector of uint) 0:189 'inF0' ( in 3-component vector of float) 0:190 Sequence 0:190 move second child to first child ( temp 3-component vector of float) 0:190 'r007' ( temp 3-component vector of float) 0:190 intBitsToFloat ( temp 3-component vector of float) 0:190 'inU0' ( in 3-component vector of uint) 0:192 Sequence 0:192 move second child to first child ( temp 3-component vector of float) 0:192 'r009' ( temp 3-component vector of float) 0:192 arc tangent ( temp 3-component vector of float) 0:192 'inF0' ( in 3-component vector of float) 0:193 Sequence 0:193 move second child to first child ( temp 3-component vector of float) 0:193 'r010' ( temp 3-component vector of float) 0:193 arc tangent ( temp 3-component vector of float) 0:193 'inF0' ( in 3-component vector of float) 0:193 'inF1' ( in 3-component vector of float) 0:194 Sequence 0:194 move second child to first child ( temp 3-component vector of float) 0:194 'r011' ( temp 3-component vector of float) 0:194 Ceiling ( temp 3-component vector of float) 0:194 'inF0' ( in 3-component vector of float) 0:195 Sequence 0:195 move second child to first child ( temp 3-component vector of float) 0:195 'r012' ( temp 3-component vector of float) 0:195 clamp ( temp 3-component vector of float) 0:195 'inF0' ( in 3-component vector of float) 0:195 'inF1' ( in 3-component vector of float) 0:195 'inF2' ( in 3-component vector of float) 0:196 Test condition and select ( temp void) 0:196 Condition 0:196 any ( temp bool) 0:196 Compare Less Than ( temp 3-component vector of bool) 0:196 'inF0' ( in 3-component vector of float) 0:196 Constant: 0:196 0.000000 0:196 0.000000 0:196 0.000000 0:196 true case 0:196 Branch: Kill 0:197 Test condition and select ( temp void) 0:197 Condition 0:197 any ( temp bool) 0:197 Compare Less Than ( temp 3-component vector of bool) 0:197 'inU0' ( in 3-component vector of uint) 0:197 Constant: 0:197 0.000000 0:197 0.000000 0:197 0.000000 0:197 true case 0:197 Branch: Kill 0:198 Sequence 0:198 move second child to first child ( temp 3-component vector of float) 0:198 'r013' ( temp 3-component vector of float) 0:198 cosine ( temp 3-component vector of float) 0:198 'inF0' ( in 3-component vector of float) 0:199 Sequence 0:199 move second child to first child ( temp 3-component vector of float) 0:199 'r014' ( temp 3-component vector of float) 0:199 hyp. cosine ( temp 3-component vector of float) 0:199 'inF0' ( in 3-component vector of float) 0:200 Sequence 0:200 move second child to first child ( temp 3-component vector of uint) 0:200 'r015' ( temp 3-component vector of uint) 0:200 bitCount ( temp 3-component vector of uint) 0:200 Constant: 0:200 7 (const uint) 0:200 3 (const uint) 0:200 5 (const uint) 0:201 Sequence 0:201 move second child to first child ( temp 3-component vector of float) 0:201 'r016' ( temp 3-component vector of float) 0:201 cross-product ( temp 3-component vector of float) 0:201 'inF0' ( in 3-component vector of float) 0:201 'inF1' ( in 3-component vector of float) 0:202 Sequence 0:202 move second child to first child ( temp 3-component vector of float) 0:202 'r017' ( temp 3-component vector of float) 0:202 dPdx ( temp 3-component vector of float) 0:202 'inF0' ( in 3-component vector of float) 0:203 Sequence 0:203 move second child to first child ( temp 3-component vector of float) 0:203 'r018' ( temp 3-component vector of float) 0:203 dPdxCoarse ( temp 3-component vector of float) 0:203 'inF0' ( in 3-component vector of float) 0:204 Sequence 0:204 move second child to first child ( temp 3-component vector of float) 0:204 'r019' ( temp 3-component vector of float) 0:204 dPdxFine ( temp 3-component vector of float) 0:204 'inF0' ( in 3-component vector of float) 0:205 Sequence 0:205 move second child to first child ( temp 3-component vector of float) 0:205 'r020' ( temp 3-component vector of float) 0:205 dPdy ( temp 3-component vector of float) 0:205 'inF0' ( in 3-component vector of float) 0:206 Sequence 0:206 move second child to first child ( temp 3-component vector of float) 0:206 'r021' ( temp 3-component vector of float) 0:206 dPdyCoarse ( temp 3-component vector of float) 0:206 'inF0' ( in 3-component vector of float) 0:207 Sequence 0:207 move second child to first child ( temp 3-component vector of float) 0:207 'r022' ( temp 3-component vector of float) 0:207 dPdyFine ( temp 3-component vector of float) 0:207 'inF0' ( in 3-component vector of float) 0:208 Sequence 0:208 move second child to first child ( temp 3-component vector of float) 0:208 'r023' ( temp 3-component vector of float) 0:208 degrees ( temp 3-component vector of float) 0:208 'inF0' ( in 3-component vector of float) 0:209 Sequence 0:209 move second child to first child ( temp float) 0:209 'r024' ( temp float) 0:209 distance ( temp float) 0:209 'inF0' ( in 3-component vector of float) 0:209 'inF1' ( in 3-component vector of float) 0:210 Sequence 0:210 move second child to first child ( temp float) 0:210 'r025' ( temp float) 0:210 dot-product ( temp float) 0:210 'inF0' ( in 3-component vector of float) 0:210 'inF1' ( in 3-component vector of float) 0:214 Sequence 0:214 move second child to first child ( temp 3-component vector of float) 0:214 'r029' ( temp 3-component vector of float) 0:214 exp ( temp 3-component vector of float) 0:214 'inF0' ( in 3-component vector of float) 0:215 Sequence 0:215 move second child to first child ( temp 3-component vector of float) 0:215 'r030' ( temp 3-component vector of float) 0:215 exp2 ( temp 3-component vector of float) 0:215 'inF0' ( in 3-component vector of float) 0:216 Sequence 0:216 move second child to first child ( temp 3-component vector of float) 0:216 'r031' ( temp 3-component vector of float) 0:216 face-forward ( temp 3-component vector of float) 0:216 'inF0' ( in 3-component vector of float) 0:216 'inF1' ( in 3-component vector of float) 0:216 'inF2' ( in 3-component vector of float) 0:217 Sequence 0:217 move second child to first child ( temp 3-component vector of uint) 0:217 'r032' ( temp 3-component vector of uint) 0:217 findMSB ( temp 3-component vector of uint) 0:217 Constant: 0:217 2 (const uint) 0:217 3 (const uint) 0:217 4 (const uint) 0:218 Sequence 0:218 move second child to first child ( temp 3-component vector of uint) 0:218 'r033' ( temp 3-component vector of uint) 0:218 findLSB ( temp 3-component vector of uint) 0:218 Constant: 0:218 2 (const uint) 0:218 3 (const uint) 0:218 4 (const uint) 0:219 Sequence 0:219 move second child to first child ( temp 3-component vector of float) 0:219 'r034' ( temp 3-component vector of float) 0:219 Floor ( temp 3-component vector of float) 0:219 'inF0' ( in 3-component vector of float) 0:221 Sequence 0:221 move second child to first child ( temp 3-component vector of float) 0:221 'r036' ( temp 3-component vector of float) 0:221 mod ( temp 3-component vector of float) 0:221 'inF0' ( in 3-component vector of float) 0:221 'inF1' ( in 3-component vector of float) 0:222 Sequence 0:222 move second child to first child ( temp 3-component vector of float) 0:222 'r037' ( temp 3-component vector of float) 0:222 Fraction ( temp 3-component vector of float) 0:222 'inF0' ( in 3-component vector of float) 0:223 Sequence 0:223 move second child to first child ( temp 3-component vector of float) 0:223 'r039' ( temp 3-component vector of float) 0:223 fwidth ( temp 3-component vector of float) 0:223 'inF0' ( in 3-component vector of float) 0:224 Sequence 0:224 move second child to first child ( temp 3-component vector of bool) 0:224 'r040' ( temp 3-component vector of bool) 0:224 isinf ( temp 3-component vector of bool) 0:224 'inF0' ( in 3-component vector of float) 0:225 Sequence 0:225 move second child to first child ( temp 3-component vector of bool) 0:225 'r041' ( temp 3-component vector of bool) 0:225 isnan ( temp 3-component vector of bool) 0:225 'inF0' ( in 3-component vector of float) 0:226 Sequence 0:226 move second child to first child ( temp 3-component vector of float) 0:226 'r042' ( temp 3-component vector of float) 0:226 ldexp ( temp 3-component vector of float) 0:226 'inF0' ( in 3-component vector of float) 0:226 'inF1' ( in 3-component vector of float) 0:227 Sequence 0:227 move second child to first child ( temp 3-component vector of float) 0:227 'r039a' ( temp 3-component vector of float) 0:227 mix ( temp 3-component vector of float) 0:227 'inF0' ( in 3-component vector of float) 0:227 'inF1' ( in 3-component vector of float) 0:227 'inF2' ( in 3-component vector of float) 0:228 Sequence 0:228 move second child to first child ( temp 3-component vector of float) 0:228 'r039b' ( temp 3-component vector of float) 0:228 mix ( temp 3-component vector of float) 0:228 'inF0' ( in 3-component vector of float) 0:228 'inF1' ( in 3-component vector of float) 0:228 Constant: 0:228 0.300000 0:229 Sequence 0:229 move second child to first child ( temp float) 0:229 'r043' ( temp float) 0:229 length ( temp float) 0:229 'inF0' ( in 3-component vector of float) 0:230 Sequence 0:230 move second child to first child ( temp 3-component vector of float) 0:230 'r044' ( temp 3-component vector of float) 0:230 log ( temp 3-component vector of float) 0:230 'inF0' ( in 3-component vector of float) 0:231 Sequence 0:231 move second child to first child ( temp 3-component vector of float) 0:231 'r045' ( temp 3-component vector of float) 0:231 vector-scale ( temp 3-component vector of float) 0:231 log2 ( temp 3-component vector of float) 0:231 'inF0' ( in 3-component vector of float) 0:231 Constant: 0:231 0.301030 0:232 Sequence 0:232 move second child to first child ( temp 3-component vector of float) 0:232 'r046' ( temp 3-component vector of float) 0:232 log2 ( temp 3-component vector of float) 0:232 'inF0' ( in 3-component vector of float) 0:233 Sequence 0:233 move second child to first child ( temp 3-component vector of float) 0:233 'r047' ( temp 3-component vector of float) 0:233 max ( temp 3-component vector of float) 0:233 'inF0' ( in 3-component vector of float) 0:233 'inF1' ( in 3-component vector of float) 0:234 Sequence 0:234 move second child to first child ( temp 3-component vector of float) 0:234 'r048' ( temp 3-component vector of float) 0:234 min ( temp 3-component vector of float) 0:234 'inF0' ( in 3-component vector of float) 0:234 'inF1' ( in 3-component vector of float) 0:235 Sequence 0:235 move second child to first child ( temp 3-component vector of float) 0:235 'r049' ( temp 3-component vector of float) 0:235 normalize ( temp 3-component vector of float) 0:235 'inF0' ( in 3-component vector of float) 0:236 Sequence 0:236 move second child to first child ( temp 3-component vector of float) 0:236 'r050' ( temp 3-component vector of float) 0:236 pow ( temp 3-component vector of float) 0:236 'inF0' ( in 3-component vector of float) 0:236 'inF1' ( in 3-component vector of float) 0:237 Sequence 0:237 move second child to first child ( temp 3-component vector of float) 0:237 'r051' ( temp 3-component vector of float) 0:237 radians ( temp 3-component vector of float) 0:237 'inF0' ( in 3-component vector of float) 0:238 Sequence 0:238 move second child to first child ( temp 3-component vector of float) 0:238 'r052' ( temp 3-component vector of float) 0:238 divide ( temp 3-component vector of float) 0:238 Constant: 0:238 1.000000 0:238 'inF0' ( in 3-component vector of float) 0:239 Sequence 0:239 move second child to first child ( temp 3-component vector of float) 0:239 'r053' ( temp 3-component vector of float) 0:239 reflect ( temp 3-component vector of float) 0:239 'inF0' ( in 3-component vector of float) 0:239 'inF1' ( in 3-component vector of float) 0:240 Sequence 0:240 move second child to first child ( temp 3-component vector of float) 0:240 'r054' ( temp 3-component vector of float) 0:240 refract ( temp 3-component vector of float) 0:240 'inF0' ( in 3-component vector of float) 0:240 'inF1' ( in 3-component vector of float) 0:240 Constant: 0:240 2.000000 0:241 Sequence 0:241 move second child to first child ( temp 3-component vector of uint) 0:241 'r055' ( temp 3-component vector of uint) 0:241 bitFieldReverse ( temp 3-component vector of uint) 0:241 Constant: 0:241 1 (const uint) 0:241 2 (const uint) 0:241 3 (const uint) 0:242 Sequence 0:242 move second child to first child ( temp 3-component vector of float) 0:242 'r056' ( temp 3-component vector of float) 0:242 roundEven ( temp 3-component vector of float) 0:242 'inF0' ( in 3-component vector of float) 0:243 Sequence 0:243 move second child to first child ( temp 3-component vector of float) 0:243 'r057' ( temp 3-component vector of float) 0:243 inverse sqrt ( temp 3-component vector of float) 0:243 'inF0' ( in 3-component vector of float) 0:244 Sequence 0:244 move second child to first child ( temp 3-component vector of float) 0:244 'r058' ( temp 3-component vector of float) 0:244 clamp ( temp 3-component vector of float) 0:244 'inF0' ( in 3-component vector of float) 0:244 Constant: 0:244 0.000000 0:244 Constant: 0:244 1.000000 0:245 Sequence 0:245 move second child to first child ( temp 3-component vector of float) 0:245 'r059' ( temp 3-component vector of float) 0:245 Sign ( temp 3-component vector of float) 0:245 'inF0' ( in 3-component vector of float) 0:246 Sequence 0:246 move second child to first child ( temp 3-component vector of float) 0:246 'r060' ( temp 3-component vector of float) 0:246 sine ( temp 3-component vector of float) 0:246 'inF0' ( in 3-component vector of float) 0:247 Sequence 0:247 move second child to first child ( temp 3-component vector of float) 0:247 'inF1' ( in 3-component vector of float) 0:247 sine ( temp 3-component vector of float) 0:247 'inF0' ( in 3-component vector of float) 0:247 move second child to first child ( temp 3-component vector of float) 0:247 'inF2' ( in 3-component vector of float) 0:247 cosine ( temp 3-component vector of float) 0:247 'inF0' ( in 3-component vector of float) 0:248 Sequence 0:248 move second child to first child ( temp 3-component vector of float) 0:248 'r061' ( temp 3-component vector of float) 0:248 hyp. sine ( temp 3-component vector of float) 0:248 'inF0' ( in 3-component vector of float) 0:249 Sequence 0:249 move second child to first child ( temp 3-component vector of float) 0:249 'r062' ( temp 3-component vector of float) 0:249 smoothstep ( temp 3-component vector of float) 0:249 'inF0' ( in 3-component vector of float) 0:249 'inF1' ( in 3-component vector of float) 0:249 'inF2' ( in 3-component vector of float) 0:250 Sequence 0:250 move second child to first child ( temp 3-component vector of float) 0:250 'r063' ( temp 3-component vector of float) 0:250 sqrt ( temp 3-component vector of float) 0:250 'inF0' ( in 3-component vector of float) 0:251 Sequence 0:251 move second child to first child ( temp 3-component vector of float) 0:251 'r064' ( temp 3-component vector of float) 0:251 step ( temp 3-component vector of float) 0:251 'inF0' ( in 3-component vector of float) 0:251 'inF1' ( in 3-component vector of float) 0:252 Sequence 0:252 move second child to first child ( temp 3-component vector of float) 0:252 'r065' ( temp 3-component vector of float) 0:252 tangent ( temp 3-component vector of float) 0:252 'inF0' ( in 3-component vector of float) 0:253 Sequence 0:253 move second child to first child ( temp 3-component vector of float) 0:253 'r066' ( temp 3-component vector of float) 0:253 hyp. tangent ( temp 3-component vector of float) 0:253 'inF0' ( in 3-component vector of float) 0:255 Sequence 0:255 move second child to first child ( temp 3-component vector of float) 0:255 'r067' ( temp 3-component vector of float) 0:255 trunc ( temp 3-component vector of float) 0:255 'inF0' ( in 3-component vector of float) 0:258 Branch: Return with expression 0:258 Constant: 0:258 1.000000 0:258 2.000000 0:258 3.000000 0:262 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:262 Function Parameters: 0:262 'inF0' ( in 4-component vector of float) 0:262 'inF1' ( in 4-component vector of float) 0:262 'inF2' ( in 4-component vector of float) 0:262 'inU0' ( in 4-component vector of uint) 0:262 'inU1' ( in 4-component vector of uint) 0:? Sequence 0:265 Sequence 0:265 move second child to first child ( temp bool) 0:265 'r000' ( temp bool) 0:265 all ( temp bool) 0:265 Convert float to bool ( temp 4-component vector of bool) 0:265 'inF0' ( in 4-component vector of float) 0:266 Sequence 0:266 move second child to first child ( temp 4-component vector of float) 0:266 'r001' ( temp 4-component vector of float) 0:266 Absolute value ( temp 4-component vector of float) 0:266 'inF0' ( in 4-component vector of float) 0:267 Sequence 0:267 move second child to first child ( temp 4-component vector of float) 0:267 'r002' ( temp 4-component vector of float) 0:267 arc cosine ( temp 4-component vector of float) 0:267 'inF0' ( in 4-component vector of float) 0:268 Sequence 0:268 move second child to first child ( temp bool) 0:268 'r003' ( temp bool) 0:268 any ( temp bool) 0:268 Convert float to bool ( temp 4-component vector of bool) 0:268 'inF0' ( in 4-component vector of float) 0:269 Sequence 0:269 move second child to first child ( temp 4-component vector of float) 0:269 'r004' ( temp 4-component vector of float) 0:269 arc sine ( temp 4-component vector of float) 0:269 'inF0' ( in 4-component vector of float) 0:270 Sequence 0:270 move second child to first child ( temp 4-component vector of int) 0:270 'r005' ( temp 4-component vector of int) 0:270 floatBitsToInt ( temp 4-component vector of int) 0:270 'inF0' ( in 4-component vector of float) 0:271 Sequence 0:271 move second child to first child ( temp 4-component vector of uint) 0:271 'r006' ( temp 4-component vector of uint) 0:271 floatBitsToUint ( temp 4-component vector of uint) 0:271 'inF0' ( in 4-component vector of float) 0:272 Sequence 0:272 move second child to first child ( temp 4-component vector of float) 0:272 'r007' ( temp 4-component vector of float) 0:272 intBitsToFloat ( temp 4-component vector of float) 0:272 'inU0' ( in 4-component vector of uint) 0:274 Sequence 0:274 move second child to first child ( temp 4-component vector of float) 0:274 'r009' ( temp 4-component vector of float) 0:274 arc tangent ( temp 4-component vector of float) 0:274 'inF0' ( in 4-component vector of float) 0:275 Sequence 0:275 move second child to first child ( temp 4-component vector of float) 0:275 'r010' ( temp 4-component vector of float) 0:275 arc tangent ( temp 4-component vector of float) 0:275 'inF0' ( in 4-component vector of float) 0:275 'inF1' ( in 4-component vector of float) 0:276 Sequence 0:276 move second child to first child ( temp 4-component vector of float) 0:276 'r011' ( temp 4-component vector of float) 0:276 Ceiling ( temp 4-component vector of float) 0:276 'inF0' ( in 4-component vector of float) 0:277 Sequence 0:277 move second child to first child ( temp 4-component vector of float) 0:277 'r012' ( temp 4-component vector of float) 0:277 clamp ( temp 4-component vector of float) 0:277 'inF0' ( in 4-component vector of float) 0:277 'inF1' ( in 4-component vector of float) 0:277 'inF2' ( in 4-component vector of float) 0:278 Test condition and select ( temp void) 0:278 Condition 0:278 any ( temp bool) 0:278 Compare Less Than ( temp 4-component vector of bool) 0:278 'inF0' ( in 4-component vector of float) 0:278 Constant: 0:278 0.000000 0:278 0.000000 0:278 0.000000 0:278 0.000000 0:278 true case 0:278 Branch: Kill 0:279 Test condition and select ( temp void) 0:279 Condition 0:279 any ( temp bool) 0:279 Compare Less Than ( temp 4-component vector of bool) 0:279 'inU0' ( in 4-component vector of uint) 0:279 Constant: 0:279 0.000000 0:279 0.000000 0:279 0.000000 0:279 0.000000 0:279 true case 0:279 Branch: Kill 0:280 Sequence 0:280 move second child to first child ( temp 4-component vector of float) 0:280 'r013' ( temp 4-component vector of float) 0:280 cosine ( temp 4-component vector of float) 0:280 'inF0' ( in 4-component vector of float) 0:281 Sequence 0:281 move second child to first child ( temp 4-component vector of float) 0:281 'r014' ( temp 4-component vector of float) 0:281 hyp. cosine ( temp 4-component vector of float) 0:281 'inF0' ( in 4-component vector of float) 0:282 Sequence 0:282 move second child to first child ( temp 4-component vector of uint) 0:282 'r015' ( temp 4-component vector of uint) 0:282 bitCount ( temp 4-component vector of uint) 0:282 Constant: 0:282 7 (const uint) 0:282 3 (const uint) 0:282 5 (const uint) 0:282 2 (const uint) 0:283 Sequence 0:283 move second child to first child ( temp 4-component vector of float) 0:283 'r016' ( temp 4-component vector of float) 0:283 dPdx ( temp 4-component vector of float) 0:283 'inF0' ( in 4-component vector of float) 0:284 Sequence 0:284 move second child to first child ( temp 4-component vector of float) 0:284 'r017' ( temp 4-component vector of float) 0:284 dPdxCoarse ( temp 4-component vector of float) 0:284 'inF0' ( in 4-component vector of float) 0:285 Sequence 0:285 move second child to first child ( temp 4-component vector of float) 0:285 'r018' ( temp 4-component vector of float) 0:285 dPdxFine ( temp 4-component vector of float) 0:285 'inF0' ( in 4-component vector of float) 0:286 Sequence 0:286 move second child to first child ( temp 4-component vector of float) 0:286 'r019' ( temp 4-component vector of float) 0:286 dPdy ( temp 4-component vector of float) 0:286 'inF0' ( in 4-component vector of float) 0:287 Sequence 0:287 move second child to first child ( temp 4-component vector of float) 0:287 'r020' ( temp 4-component vector of float) 0:287 dPdyCoarse ( temp 4-component vector of float) 0:287 'inF0' ( in 4-component vector of float) 0:288 Sequence 0:288 move second child to first child ( temp 4-component vector of float) 0:288 'r021' ( temp 4-component vector of float) 0:288 dPdyFine ( temp 4-component vector of float) 0:288 'inF0' ( in 4-component vector of float) 0:289 Sequence 0:289 move second child to first child ( temp 4-component vector of float) 0:289 'r022' ( temp 4-component vector of float) 0:289 degrees ( temp 4-component vector of float) 0:289 'inF0' ( in 4-component vector of float) 0:290 Sequence 0:290 move second child to first child ( temp float) 0:290 'r023' ( temp float) 0:290 distance ( temp float) 0:290 'inF0' ( in 4-component vector of float) 0:290 'inF1' ( in 4-component vector of float) 0:291 Sequence 0:291 move second child to first child ( temp float) 0:291 'r024' ( temp float) 0:291 dot-product ( temp float) 0:291 'inF0' ( in 4-component vector of float) 0:291 'inF1' ( in 4-component vector of float) 0:292 Sequence 0:292 move second child to first child ( temp 4-component vector of float) 0:292 'r025' ( temp 4-component vector of float) 0:292 Construct vec4 ( temp 4-component vector of float) 0:292 Constant: 0:292 1.000000 0:292 component-wise multiply ( temp float) 0:292 direct index ( temp float) 0:292 'inF0' ( in 4-component vector of float) 0:292 Constant: 0:292 1 (const int) 0:292 direct index ( temp float) 0:292 'inF1' ( in 4-component vector of float) 0:292 Constant: 0:292 1 (const int) 0:292 direct index ( temp float) 0:292 'inF0' ( in 4-component vector of float) 0:292 Constant: 0:292 2 (const int) 0:292 direct index ( temp float) 0:292 'inF1' ( in 4-component vector of float) 0:292 Constant: 0:292 3 (const int) 0:296 Sequence 0:296 move second child to first child ( temp 4-component vector of float) 0:296 'r029' ( temp 4-component vector of float) 0:296 exp ( temp 4-component vector of float) 0:296 'inF0' ( in 4-component vector of float) 0:297 Sequence 0:297 move second child to first child ( temp 4-component vector of float) 0:297 'r030' ( temp 4-component vector of float) 0:297 exp2 ( temp 4-component vector of float) 0:297 'inF0' ( in 4-component vector of float) 0:298 Sequence 0:298 move second child to first child ( temp 4-component vector of float) 0:298 'r031' ( temp 4-component vector of float) 0:298 face-forward ( temp 4-component vector of float) 0:298 'inF0' ( in 4-component vector of float) 0:298 'inF1' ( in 4-component vector of float) 0:298 'inF2' ( in 4-component vector of float) 0:299 Sequence 0:299 move second child to first child ( temp 4-component vector of uint) 0:299 'r032' ( temp 4-component vector of uint) 0:299 findMSB ( temp 4-component vector of uint) 0:299 Constant: 0:299 7 (const uint) 0:299 8 (const uint) 0:299 9 (const uint) 0:299 10 (const uint) 0:300 Sequence 0:300 move second child to first child ( temp 4-component vector of uint) 0:300 'r033' ( temp 4-component vector of uint) 0:300 findLSB ( temp 4-component vector of uint) 0:300 Constant: 0:300 7 (const uint) 0:300 8 (const uint) 0:300 9 (const uint) 0:300 10 (const uint) 0:301 Sequence 0:301 move second child to first child ( temp 4-component vector of float) 0:301 'r034' ( temp 4-component vector of float) 0:301 Floor ( temp 4-component vector of float) 0:301 'inF0' ( in 4-component vector of float) 0:303 Sequence 0:303 move second child to first child ( temp 4-component vector of float) 0:303 'r036' ( temp 4-component vector of float) 0:303 mod ( temp 4-component vector of float) 0:303 'inF0' ( in 4-component vector of float) 0:303 'inF1' ( in 4-component vector of float) 0:304 Sequence 0:304 move second child to first child ( temp 4-component vector of float) 0:304 'r037' ( temp 4-component vector of float) 0:304 Fraction ( temp 4-component vector of float) 0:304 'inF0' ( in 4-component vector of float) 0:305 Sequence 0:305 move second child to first child ( temp 4-component vector of float) 0:305 'r039' ( temp 4-component vector of float) 0:305 fwidth ( temp 4-component vector of float) 0:305 'inF0' ( in 4-component vector of float) 0:306 Sequence 0:306 move second child to first child ( temp 4-component vector of bool) 0:306 'r040' ( temp 4-component vector of bool) 0:306 isinf ( temp 4-component vector of bool) 0:306 'inF0' ( in 4-component vector of float) 0:307 Sequence 0:307 move second child to first child ( temp 4-component vector of bool) 0:307 'r041' ( temp 4-component vector of bool) 0:307 isnan ( temp 4-component vector of bool) 0:307 'inF0' ( in 4-component vector of float) 0:308 Sequence 0:308 move second child to first child ( temp 4-component vector of float) 0:308 'r042' ( temp 4-component vector of float) 0:308 ldexp ( temp 4-component vector of float) 0:308 'inF0' ( in 4-component vector of float) 0:308 'inF1' ( in 4-component vector of float) 0:309 Sequence 0:309 move second child to first child ( temp 4-component vector of float) 0:309 'r039a' ( temp 4-component vector of float) 0:309 mix ( temp 4-component vector of float) 0:309 'inF0' ( in 4-component vector of float) 0:309 'inF1' ( in 4-component vector of float) 0:309 'inF2' ( in 4-component vector of float) 0:310 Sequence 0:310 move second child to first child ( temp float) 0:310 'r043' ( temp float) 0:310 length ( temp float) 0:310 'inF0' ( in 4-component vector of float) 0:311 Sequence 0:311 move second child to first child ( temp 4-component vector of float) 0:311 'r044' ( temp 4-component vector of float) 0:311 log ( temp 4-component vector of float) 0:311 'inF0' ( in 4-component vector of float) 0:312 Sequence 0:312 move second child to first child ( temp 4-component vector of float) 0:312 'r045' ( temp 4-component vector of float) 0:312 vector-scale ( temp 4-component vector of float) 0:312 log2 ( temp 4-component vector of float) 0:312 'inF0' ( in 4-component vector of float) 0:312 Constant: 0:312 0.301030 0:313 Sequence 0:313 move second child to first child ( temp 4-component vector of float) 0:313 'r046' ( temp 4-component vector of float) 0:313 log2 ( temp 4-component vector of float) 0:313 'inF0' ( in 4-component vector of float) 0:314 Sequence 0:314 move second child to first child ( temp 4-component vector of float) 0:314 'r047' ( temp 4-component vector of float) 0:314 max ( temp 4-component vector of float) 0:314 'inF0' ( in 4-component vector of float) 0:314 'inF1' ( in 4-component vector of float) 0:315 Sequence 0:315 move second child to first child ( temp 4-component vector of float) 0:315 'r048' ( temp 4-component vector of float) 0:315 min ( temp 4-component vector of float) 0:315 'inF0' ( in 4-component vector of float) 0:315 'inF1' ( in 4-component vector of float) 0:316 Sequence 0:316 move second child to first child ( temp 4-component vector of float) 0:316 'r049' ( temp 4-component vector of float) 0:316 normalize ( temp 4-component vector of float) 0:316 'inF0' ( in 4-component vector of float) 0:317 Sequence 0:317 move second child to first child ( temp 4-component vector of float) 0:317 'r050' ( temp 4-component vector of float) 0:317 pow ( temp 4-component vector of float) 0:317 'inF0' ( in 4-component vector of float) 0:317 'inF1' ( in 4-component vector of float) 0:318 Sequence 0:318 move second child to first child ( temp 4-component vector of float) 0:318 'r051' ( temp 4-component vector of float) 0:318 radians ( temp 4-component vector of float) 0:318 'inF0' ( in 4-component vector of float) 0:319 Sequence 0:319 move second child to first child ( temp 4-component vector of float) 0:319 'r052' ( temp 4-component vector of float) 0:319 divide ( temp 4-component vector of float) 0:319 Constant: 0:319 1.000000 0:319 'inF0' ( in 4-component vector of float) 0:320 Sequence 0:320 move second child to first child ( temp 4-component vector of float) 0:320 'r053' ( temp 4-component vector of float) 0:320 reflect ( temp 4-component vector of float) 0:320 'inF0' ( in 4-component vector of float) 0:320 'inF1' ( in 4-component vector of float) 0:321 Sequence 0:321 move second child to first child ( temp 4-component vector of float) 0:321 'r054' ( temp 4-component vector of float) 0:321 refract ( temp 4-component vector of float) 0:321 'inF0' ( in 4-component vector of float) 0:321 'inF1' ( in 4-component vector of float) 0:321 Constant: 0:321 2.000000 0:322 Sequence 0:322 move second child to first child ( temp 4-component vector of uint) 0:322 'r055' ( temp 4-component vector of uint) 0:322 bitFieldReverse ( temp 4-component vector of uint) 0:322 Constant: 0:322 1 (const uint) 0:322 2 (const uint) 0:322 3 (const uint) 0:322 4 (const uint) 0:323 Sequence 0:323 move second child to first child ( temp 4-component vector of float) 0:323 'r056' ( temp 4-component vector of float) 0:323 roundEven ( temp 4-component vector of float) 0:323 'inF0' ( in 4-component vector of float) 0:324 Sequence 0:324 move second child to first child ( temp 4-component vector of float) 0:324 'r057' ( temp 4-component vector of float) 0:324 inverse sqrt ( temp 4-component vector of float) 0:324 'inF0' ( in 4-component vector of float) 0:325 Sequence 0:325 move second child to first child ( temp 4-component vector of float) 0:325 'r058' ( temp 4-component vector of float) 0:325 clamp ( temp 4-component vector of float) 0:325 'inF0' ( in 4-component vector of float) 0:325 Constant: 0:325 0.000000 0:325 Constant: 0:325 1.000000 0:326 Sequence 0:326 move second child to first child ( temp 4-component vector of float) 0:326 'r059' ( temp 4-component vector of float) 0:326 Sign ( temp 4-component vector of float) 0:326 'inF0' ( in 4-component vector of float) 0:327 Sequence 0:327 move second child to first child ( temp 4-component vector of float) 0:327 'r060' ( temp 4-component vector of float) 0:327 sine ( temp 4-component vector of float) 0:327 'inF0' ( in 4-component vector of float) 0:328 Sequence 0:328 move second child to first child ( temp 4-component vector of float) 0:328 'inF1' ( in 4-component vector of float) 0:328 sine ( temp 4-component vector of float) 0:328 'inF0' ( in 4-component vector of float) 0:328 move second child to first child ( temp 4-component vector of float) 0:328 'inF2' ( in 4-component vector of float) 0:328 cosine ( temp 4-component vector of float) 0:328 'inF0' ( in 4-component vector of float) 0:329 Sequence 0:329 move second child to first child ( temp 4-component vector of float) 0:329 'r061' ( temp 4-component vector of float) 0:329 hyp. sine ( temp 4-component vector of float) 0:329 'inF0' ( in 4-component vector of float) 0:330 Sequence 0:330 move second child to first child ( temp 4-component vector of float) 0:330 'r062' ( temp 4-component vector of float) 0:330 smoothstep ( temp 4-component vector of float) 0:330 'inF0' ( in 4-component vector of float) 0:330 'inF1' ( in 4-component vector of float) 0:330 'inF2' ( in 4-component vector of float) 0:331 Sequence 0:331 move second child to first child ( temp 4-component vector of float) 0:331 'r063' ( temp 4-component vector of float) 0:331 sqrt ( temp 4-component vector of float) 0:331 'inF0' ( in 4-component vector of float) 0:332 Sequence 0:332 move second child to first child ( temp 4-component vector of float) 0:332 'r064' ( temp 4-component vector of float) 0:332 step ( temp 4-component vector of float) 0:332 'inF0' ( in 4-component vector of float) 0:332 'inF1' ( in 4-component vector of float) 0:333 Sequence 0:333 move second child to first child ( temp 4-component vector of float) 0:333 'r065' ( temp 4-component vector of float) 0:333 tangent ( temp 4-component vector of float) 0:333 'inF0' ( in 4-component vector of float) 0:334 Sequence 0:334 move second child to first child ( temp 4-component vector of float) 0:334 'r066' ( temp 4-component vector of float) 0:334 hyp. tangent ( temp 4-component vector of float) 0:334 'inF0' ( in 4-component vector of float) 0:336 Sequence 0:336 move second child to first child ( temp 4-component vector of float) 0:336 'r067' ( temp 4-component vector of float) 0:336 trunc ( temp 4-component vector of float) 0:336 'inF0' ( in 4-component vector of float) 0:339 Branch: Return with expression 0:339 Constant: 0:339 1.000000 0:339 2.000000 0:339 3.000000 0:339 4.000000 0:402 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) 0:402 Function Parameters: 0:402 'inF0' ( in 2X2 matrix of float) 0:402 'inF1' ( in 2X2 matrix of float) 0:402 'inF2' ( in 2X2 matrix of float) 0:? Sequence 0:404 Sequence 0:404 move second child to first child ( temp bool) 0:404 'r000' ( temp bool) 0:404 all ( temp bool) 0:404 Convert float to bool ( temp 2X2 matrix of bool) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r001' ( temp 2X2 matrix of float) 0:404 Absolute value ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 arc cosine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp bool) 0:404 'r003' ( temp bool) 0:404 any ( temp bool) 0:404 Convert float to bool ( temp 2X2 matrix of bool) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r004' ( temp 2X2 matrix of float) 0:404 arc sine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r005' ( temp 2X2 matrix of float) 0:404 arc tangent ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r006' ( temp 2X2 matrix of float) 0:404 arc tangent ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r007' ( temp 2X2 matrix of float) 0:404 Ceiling ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Test condition and select ( temp void) 0:404 Condition 0:404 any ( temp bool) 0:404 Compare Less Than ( temp 2X2 matrix of bool) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Constant: 0:404 0.000000 0:404 0.000000 0:404 0.000000 0:404 0.000000 0:404 true case 0:404 Branch: Kill 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r008' ( temp 2X2 matrix of float) 0:404 clamp ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 'inF2' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r009' ( temp 2X2 matrix of float) 0:404 cosine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r010' ( temp 2X2 matrix of float) 0:404 hyp. cosine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r011' ( temp 2X2 matrix of float) 0:404 dPdx ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r012' ( temp 2X2 matrix of float) 0:404 dPdxCoarse ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r013' ( temp 2X2 matrix of float) 0:404 dPdxFine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r014' ( temp 2X2 matrix of float) 0:404 dPdy ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r015' ( temp 2X2 matrix of float) 0:404 dPdyCoarse ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r016' ( temp 2X2 matrix of float) 0:404 dPdyFine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r017' ( temp 2X2 matrix of float) 0:404 degrees ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp float) 0:404 'r018' ( temp float) 0:404 determinant ( temp float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r019' ( temp 2X2 matrix of float) 0:404 exp ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'R020' ( temp 2X2 matrix of float) 0:404 exp2 ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r021' ( temp 2X2 matrix of float) 0:404 Floor ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r022' ( temp 2X2 matrix of float) 0:404 mod ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r023' ( temp 2X2 matrix of float) 0:404 Fraction ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r025' ( temp 2X2 matrix of float) 0:404 fwidth ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r026' ( temp 2X2 matrix of float) 0:404 ldexp ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r026a' ( temp 2X2 matrix of float) 0:404 mix ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 'inF2' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r027' ( temp 2X2 matrix of float) 0:404 log ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r028' ( temp 2X2 matrix of float) 0:404 matrix-scale ( temp 2X2 matrix of float) 0:404 log2 ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Constant: 0:404 0.301030 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r029' ( temp 2X2 matrix of float) 0:404 log2 ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r030' ( temp 2X2 matrix of float) 0:404 max ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r031' ( temp 2X2 matrix of float) 0:404 min ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r032' ( temp 2X2 matrix of float) 0:404 pow ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r033' ( temp 2X2 matrix of float) 0:404 radians ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r034' ( temp 2X2 matrix of float) 0:404 roundEven ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r035' ( temp 2X2 matrix of float) 0:404 inverse sqrt ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r036' ( temp 2X2 matrix of float) 0:404 clamp ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Constant: 0:404 0.000000 0:404 Constant: 0:404 1.000000 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r037' ( temp 2X2 matrix of float) 0:404 Sign ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r038' ( temp 2X2 matrix of float) 0:404 sine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 sine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'inF2' ( in 2X2 matrix of float) 0:404 cosine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r039' ( temp 2X2 matrix of float) 0:404 hyp. sine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r049' ( temp 2X2 matrix of float) 0:404 smoothstep ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 'inF2' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r041' ( temp 2X2 matrix of float) 0:404 sqrt ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r042' ( temp 2X2 matrix of float) 0:404 step ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r043' ( temp 2X2 matrix of float) 0:404 tangent ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r044' ( temp 2X2 matrix of float) 0:404 hyp. tangent ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 transpose ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r046' ( temp 2X2 matrix of float) 0:404 trunc ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:407 Branch: Return with expression 0:407 Constant: 0:407 2.000000 0:407 2.000000 0:407 2.000000 0:407 2.000000 0:411 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) 0:411 Function Parameters: 0:411 'inF0' ( in 3X3 matrix of float) 0:411 'inF1' ( in 3X3 matrix of float) 0:411 'inF2' ( in 3X3 matrix of float) 0:? Sequence 0:413 Sequence 0:413 move second child to first child ( temp bool) 0:413 'r000' ( temp bool) 0:413 all ( temp bool) 0:413 Convert float to bool ( temp 3X3 matrix of bool) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r001' ( temp 3X3 matrix of float) 0:413 Absolute value ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 arc cosine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp bool) 0:413 'r003' ( temp bool) 0:413 any ( temp bool) 0:413 Convert float to bool ( temp 3X3 matrix of bool) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r004' ( temp 3X3 matrix of float) 0:413 arc sine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r005' ( temp 3X3 matrix of float) 0:413 arc tangent ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r006' ( temp 3X3 matrix of float) 0:413 arc tangent ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r007' ( temp 3X3 matrix of float) 0:413 Ceiling ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Test condition and select ( temp void) 0:413 Condition 0:413 any ( temp bool) 0:413 Compare Less Than ( temp 3X3 matrix of bool) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Constant: 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 true case 0:413 Branch: Kill 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r008' ( temp 3X3 matrix of float) 0:413 clamp ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 'inF2' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r009' ( temp 3X3 matrix of float) 0:413 cosine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r010' ( temp 3X3 matrix of float) 0:413 hyp. cosine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r011' ( temp 3X3 matrix of float) 0:413 dPdx ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r012' ( temp 3X3 matrix of float) 0:413 dPdxCoarse ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r013' ( temp 3X3 matrix of float) 0:413 dPdxFine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r014' ( temp 3X3 matrix of float) 0:413 dPdy ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r015' ( temp 3X3 matrix of float) 0:413 dPdyCoarse ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r016' ( temp 3X3 matrix of float) 0:413 dPdyFine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r017' ( temp 3X3 matrix of float) 0:413 degrees ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp float) 0:413 'r018' ( temp float) 0:413 determinant ( temp float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r019' ( temp 3X3 matrix of float) 0:413 exp ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'R020' ( temp 3X3 matrix of float) 0:413 exp2 ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r021' ( temp 3X3 matrix of float) 0:413 Floor ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r022' ( temp 3X3 matrix of float) 0:413 mod ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r023' ( temp 3X3 matrix of float) 0:413 Fraction ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r025' ( temp 3X3 matrix of float) 0:413 fwidth ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r026' ( temp 3X3 matrix of float) 0:413 ldexp ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r026a' ( temp 3X3 matrix of float) 0:413 mix ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 'inF2' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r027' ( temp 3X3 matrix of float) 0:413 log ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r028' ( temp 3X3 matrix of float) 0:413 matrix-scale ( temp 3X3 matrix of float) 0:413 log2 ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Constant: 0:413 0.301030 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r029' ( temp 3X3 matrix of float) 0:413 log2 ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r030' ( temp 3X3 matrix of float) 0:413 max ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r031' ( temp 3X3 matrix of float) 0:413 min ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r032' ( temp 3X3 matrix of float) 0:413 pow ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r033' ( temp 3X3 matrix of float) 0:413 radians ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r034' ( temp 3X3 matrix of float) 0:413 roundEven ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r035' ( temp 3X3 matrix of float) 0:413 inverse sqrt ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r036' ( temp 3X3 matrix of float) 0:413 clamp ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Constant: 0:413 0.000000 0:413 Constant: 0:413 1.000000 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r037' ( temp 3X3 matrix of float) 0:413 Sign ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r038' ( temp 3X3 matrix of float) 0:413 sine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 sine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'inF2' ( in 3X3 matrix of float) 0:413 cosine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r039' ( temp 3X3 matrix of float) 0:413 hyp. sine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r049' ( temp 3X3 matrix of float) 0:413 smoothstep ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 'inF2' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r041' ( temp 3X3 matrix of float) 0:413 sqrt ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r042' ( temp 3X3 matrix of float) 0:413 step ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r043' ( temp 3X3 matrix of float) 0:413 tangent ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r044' ( temp 3X3 matrix of float) 0:413 hyp. tangent ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 transpose ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r046' ( temp 3X3 matrix of float) 0:413 trunc ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:416 Branch: Return with expression 0:416 Constant: 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:420 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) 0:420 Function Parameters: 0:420 'inF0' ( in 4X4 matrix of float) 0:420 'inF1' ( in 4X4 matrix of float) 0:420 'inF2' ( in 4X4 matrix of float) 0:? Sequence 0:422 Sequence 0:422 move second child to first child ( temp bool) 0:422 'r000' ( temp bool) 0:422 all ( temp bool) 0:422 Convert float to bool ( temp 4X4 matrix of bool) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r001' ( temp 4X4 matrix of float) 0:422 Absolute value ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 arc cosine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp bool) 0:422 'r003' ( temp bool) 0:422 any ( temp bool) 0:422 Convert float to bool ( temp 4X4 matrix of bool) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r004' ( temp 4X4 matrix of float) 0:422 arc sine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r005' ( temp 4X4 matrix of float) 0:422 arc tangent ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r006' ( temp 4X4 matrix of float) 0:422 arc tangent ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r007' ( temp 4X4 matrix of float) 0:422 Ceiling ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Test condition and select ( temp void) 0:422 Condition 0:422 any ( temp bool) 0:422 Compare Less Than ( temp 4X4 matrix of bool) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Constant: 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 true case 0:422 Branch: Kill 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r008' ( temp 4X4 matrix of float) 0:422 clamp ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 'inF2' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r009' ( temp 4X4 matrix of float) 0:422 cosine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r010' ( temp 4X4 matrix of float) 0:422 hyp. cosine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r011' ( temp 4X4 matrix of float) 0:422 dPdx ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r012' ( temp 4X4 matrix of float) 0:422 dPdxCoarse ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r013' ( temp 4X4 matrix of float) 0:422 dPdxFine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r014' ( temp 4X4 matrix of float) 0:422 dPdy ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r015' ( temp 4X4 matrix of float) 0:422 dPdyCoarse ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r016' ( temp 4X4 matrix of float) 0:422 dPdyFine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r017' ( temp 4X4 matrix of float) 0:422 degrees ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp float) 0:422 'r018' ( temp float) 0:422 determinant ( temp float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r019' ( temp 4X4 matrix of float) 0:422 exp ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'R020' ( temp 4X4 matrix of float) 0:422 exp2 ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r021' ( temp 4X4 matrix of float) 0:422 Floor ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r022' ( temp 4X4 matrix of float) 0:422 mod ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r023' ( temp 4X4 matrix of float) 0:422 Fraction ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r025' ( temp 4X4 matrix of float) 0:422 fwidth ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r026' ( temp 4X4 matrix of float) 0:422 ldexp ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r026a' ( temp 4X4 matrix of float) 0:422 mix ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 'inF2' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r027' ( temp 4X4 matrix of float) 0:422 log ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r028' ( temp 4X4 matrix of float) 0:422 matrix-scale ( temp 4X4 matrix of float) 0:422 log2 ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Constant: 0:422 0.301030 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r029' ( temp 4X4 matrix of float) 0:422 log2 ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r030' ( temp 4X4 matrix of float) 0:422 max ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r031' ( temp 4X4 matrix of float) 0:422 min ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r032' ( temp 4X4 matrix of float) 0:422 pow ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r033' ( temp 4X4 matrix of float) 0:422 radians ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r034' ( temp 4X4 matrix of float) 0:422 roundEven ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r035' ( temp 4X4 matrix of float) 0:422 inverse sqrt ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r036' ( temp 4X4 matrix of float) 0:422 clamp ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Constant: 0:422 0.000000 0:422 Constant: 0:422 1.000000 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r037' ( temp 4X4 matrix of float) 0:422 Sign ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r038' ( temp 4X4 matrix of float) 0:422 sine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 sine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'inF2' ( in 4X4 matrix of float) 0:422 cosine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r039' ( temp 4X4 matrix of float) 0:422 hyp. sine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r049' ( temp 4X4 matrix of float) 0:422 smoothstep ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 'inF2' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r041' ( temp 4X4 matrix of float) 0:422 sqrt ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r042' ( temp 4X4 matrix of float) 0:422 step ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r043' ( temp 4X4 matrix of float) 0:422 tangent ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r044' ( temp 4X4 matrix of float) 0:422 hyp. tangent ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 transpose ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r046' ( temp 4X4 matrix of float) 0:422 trunc ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:425 Branch: Return with expression 0:425 Constant: 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:443 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void) 0:443 Function Parameters: 0:443 'inF0' ( in float) 0:443 'inF1' ( in float) 0:443 'inFV0' ( in 2-component vector of float) 0:443 'inFV1' ( in 2-component vector of float) 0:443 'inFM0' ( in 2X2 matrix of float) 0:443 'inFM1' ( in 2X2 matrix of float) 0:? Sequence 0:444 Sequence 0:444 move second child to first child ( temp float) 0:444 'r0' ( temp float) 0:444 component-wise multiply ( temp float) 0:444 'inF1' ( in float) 0:444 'inF0' ( in float) 0:444 Sequence 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'r1' ( temp 2-component vector of float) 0:444 vector-scale ( temp 2-component vector of float) 0:444 'inF0' ( in float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 Sequence 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'r2' ( temp 2-component vector of float) 0:444 vector-scale ( temp 2-component vector of float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 'inF0' ( in float) 0:444 Sequence 0:444 move second child to first child ( temp float) 0:444 'r3' ( temp float) 0:444 dot-product ( temp float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 'inFV1' ( in 2-component vector of float) 0:444 Sequence 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'r4' ( temp 2-component vector of float) 0:444 vector-times-matrix ( temp 2-component vector of float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:444 Sequence 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'r5' ( temp 2-component vector of float) 0:444 matrix-times-vector ( temp 2-component vector of float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 Sequence 0:444 move second child to first child ( temp 2X2 matrix of float) 0:444 'r6' ( temp 2X2 matrix of float) 0:444 matrix-scale ( temp 2X2 matrix of float) 0:444 'inF0' ( in float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:444 Sequence 0:444 move second child to first child ( temp 2X2 matrix of float) 0:444 'r7' ( temp 2X2 matrix of float) 0:444 matrix-scale ( temp 2X2 matrix of float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:444 'inF0' ( in float) 0:444 Sequence 0:444 move second child to first child ( temp 2X2 matrix of float) 0:444 'r8' ( temp 2X2 matrix of float) 0:444 matrix-multiply ( temp 2X2 matrix of float) 0:444 'inFM1' ( in 2X2 matrix of float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:450 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void) 0:450 Function Parameters: 0:450 'inF0' ( in float) 0:450 'inF1' ( in float) 0:450 'inFV0' ( in 3-component vector of float) 0:450 'inFV1' ( in 3-component vector of float) 0:450 'inFM0' ( in 3X3 matrix of float) 0:450 'inFM1' ( in 3X3 matrix of float) 0:? Sequence 0:451 Sequence 0:451 move second child to first child ( temp float) 0:451 'r0' ( temp float) 0:451 component-wise multiply ( temp float) 0:451 'inF1' ( in float) 0:451 'inF0' ( in float) 0:451 Sequence 0:451 move second child to first child ( temp 3-component vector of float) 0:451 'r1' ( temp 3-component vector of float) 0:451 vector-scale ( temp 3-component vector of float) 0:451 'inF0' ( in float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 Sequence 0:451 move second child to first child ( temp 3-component vector of float) 0:451 'r2' ( temp 3-component vector of float) 0:451 vector-scale ( temp 3-component vector of float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 'inF0' ( in float) 0:451 Sequence 0:451 move second child to first child ( temp float) 0:451 'r3' ( temp float) 0:451 dot-product ( temp float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 'inFV1' ( in 3-component vector of float) 0:451 Sequence 0:451 move second child to first child ( temp 3-component vector of float) 0:451 'r4' ( temp 3-component vector of float) 0:451 vector-times-matrix ( temp 3-component vector of float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:451 Sequence 0:451 move second child to first child ( temp 3-component vector of float) 0:451 'r5' ( temp 3-component vector of float) 0:451 matrix-times-vector ( temp 3-component vector of float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 Sequence 0:451 move second child to first child ( temp 3X3 matrix of float) 0:451 'r6' ( temp 3X3 matrix of float) 0:451 matrix-scale ( temp 3X3 matrix of float) 0:451 'inF0' ( in float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:451 Sequence 0:451 move second child to first child ( temp 3X3 matrix of float) 0:451 'r7' ( temp 3X3 matrix of float) 0:451 matrix-scale ( temp 3X3 matrix of float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:451 'inF0' ( in float) 0:451 Sequence 0:451 move second child to first child ( temp 3X3 matrix of float) 0:451 'r8' ( temp 3X3 matrix of float) 0:451 matrix-multiply ( temp 3X3 matrix of float) 0:451 'inFM1' ( in 3X3 matrix of float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:457 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void) 0:457 Function Parameters: 0:457 'inF0' ( in float) 0:457 'inF1' ( in float) 0:457 'inFV0' ( in 4-component vector of float) 0:457 'inFV1' ( in 4-component vector of float) 0:457 'inFM0' ( in 4X4 matrix of float) 0:457 'inFM1' ( in 4X4 matrix of float) 0:? Sequence 0:458 Sequence 0:458 move second child to first child ( temp float) 0:458 'r0' ( temp float) 0:458 component-wise multiply ( temp float) 0:458 'inF1' ( in float) 0:458 'inF0' ( in float) 0:458 Sequence 0:458 move second child to first child ( temp 4-component vector of float) 0:458 'r1' ( temp 4-component vector of float) 0:458 vector-scale ( temp 4-component vector of float) 0:458 'inF0' ( in float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 Sequence 0:458 move second child to first child ( temp 4-component vector of float) 0:458 'r2' ( temp 4-component vector of float) 0:458 vector-scale ( temp 4-component vector of float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 'inF0' ( in float) 0:458 Sequence 0:458 move second child to first child ( temp float) 0:458 'r3' ( temp float) 0:458 dot-product ( temp float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 'inFV1' ( in 4-component vector of float) 0:458 Sequence 0:458 move second child to first child ( temp 4-component vector of float) 0:458 'r4' ( temp 4-component vector of float) 0:458 vector-times-matrix ( temp 4-component vector of float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:458 Sequence 0:458 move second child to first child ( temp 4-component vector of float) 0:458 'r5' ( temp 4-component vector of float) 0:458 matrix-times-vector ( temp 4-component vector of float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 Sequence 0:458 move second child to first child ( temp 4X4 matrix of float) 0:458 'r6' ( temp 4X4 matrix of float) 0:458 matrix-scale ( temp 4X4 matrix of float) 0:458 'inF0' ( in float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:458 Sequence 0:458 move second child to first child ( temp 4X4 matrix of float) 0:458 'r7' ( temp 4X4 matrix of float) 0:458 matrix-scale ( temp 4X4 matrix of float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:458 'inF0' ( in float) 0:458 Sequence 0:458 move second child to first child ( temp 4X4 matrix of float) 0:458 'r8' ( temp 4X4 matrix of float) 0:458 matrix-multiply ( temp 4X4 matrix of float) 0:458 'inFM1' ( in 4X4 matrix of float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:467 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void) 0:467 Function Parameters: 0:467 'inF0' ( in float) 0:467 'inF1' ( in float) 0:467 'inFV2' ( in 2-component vector of float) 0:467 'inFV3' ( in 3-component vector of float) 0:467 'inFM2x3' ( in 2X3 matrix of float) 0:467 'inFM3x2' ( in 3X2 matrix of float) 0:467 'inFM3x3' ( in 3X3 matrix of float) 0:467 'inFM3x4' ( in 3X4 matrix of float) 0:467 'inFM2x4' ( in 2X4 matrix of float) 0:? Sequence 0:468 Sequence 0:468 move second child to first child ( temp float) 0:468 'r00' ( temp float) 0:468 component-wise multiply ( temp float) 0:468 'inF1' ( in float) 0:468 'inF0' ( in float) 0:469 Sequence 0:469 move second child to first child ( temp 2-component vector of float) 0:469 'r01' ( temp 2-component vector of float) 0:469 vector-scale ( temp 2-component vector of float) 0:469 'inF0' ( in float) 0:469 'inFV2' ( in 2-component vector of float) 0:470 Sequence 0:470 move second child to first child ( temp 3-component vector of float) 0:470 'r02' ( temp 3-component vector of float) 0:470 vector-scale ( temp 3-component vector of float) 0:470 'inF0' ( in float) 0:470 'inFV3' ( in 3-component vector of float) 0:471 Sequence 0:471 move second child to first child ( temp 2-component vector of float) 0:471 'r03' ( temp 2-component vector of float) 0:471 vector-scale ( temp 2-component vector of float) 0:471 'inFV2' ( in 2-component vector of float) 0:471 'inF0' ( in float) 0:472 Sequence 0:472 move second child to first child ( temp 3-component vector of float) 0:472 'r04' ( temp 3-component vector of float) 0:472 vector-scale ( temp 3-component vector of float) 0:472 'inFV3' ( in 3-component vector of float) 0:472 'inF0' ( in float) 0:473 Sequence 0:473 move second child to first child ( temp float) 0:473 'r05' ( temp float) 0:473 dot-product ( temp float) 0:473 'inFV2' ( in 2-component vector of float) 0:473 'inFV2' ( in 2-component vector of float) 0:474 Sequence 0:474 move second child to first child ( temp float) 0:474 'r06' ( temp float) 0:474 dot-product ( temp float) 0:474 'inFV3' ( in 3-component vector of float) 0:474 'inFV3' ( in 3-component vector of float) 0:475 Sequence 0:475 move second child to first child ( temp 3-component vector of float) 0:475 'r07' ( temp 3-component vector of float) 0:475 matrix-times-vector ( temp 3-component vector of float) 0:475 'inFM2x3' ( in 2X3 matrix of float) 0:475 'inFV2' ( in 2-component vector of float) 0:476 Sequence 0:476 move second child to first child ( temp 2-component vector of float) 0:476 'r08' ( temp 2-component vector of float) 0:476 matrix-times-vector ( temp 2-component vector of float) 0:476 'inFM3x2' ( in 3X2 matrix of float) 0:476 'inFV3' ( in 3-component vector of float) 0:477 Sequence 0:477 move second child to first child ( temp 2-component vector of float) 0:477 'r09' ( temp 2-component vector of float) 0:477 vector-times-matrix ( temp 2-component vector of float) 0:477 'inFV3' ( in 3-component vector of float) 0:477 'inFM2x3' ( in 2X3 matrix of float) 0:478 Sequence 0:478 move second child to first child ( temp 3-component vector of float) 0:478 'r10' ( temp 3-component vector of float) 0:478 vector-times-matrix ( temp 3-component vector of float) 0:478 'inFV2' ( in 2-component vector of float) 0:478 'inFM3x2' ( in 3X2 matrix of float) 0:479 Sequence 0:479 move second child to first child ( temp 2X3 matrix of float) 0:479 'r11' ( temp 2X3 matrix of float) 0:479 matrix-scale ( temp 2X3 matrix of float) 0:479 'inF0' ( in float) 0:479 'inFM2x3' ( in 2X3 matrix of float) 0:480 Sequence 0:480 move second child to first child ( temp 3X2 matrix of float) 0:480 'r12' ( temp 3X2 matrix of float) 0:480 matrix-scale ( temp 3X2 matrix of float) 0:480 'inF0' ( in float) 0:480 'inFM3x2' ( in 3X2 matrix of float) 0:481 Sequence 0:481 move second child to first child ( temp 2X2 matrix of float) 0:481 'r13' ( temp 2X2 matrix of float) 0:481 matrix-multiply ( temp 2X2 matrix of float) 0:481 'inFM3x2' ( in 3X2 matrix of float) 0:481 'inFM2x3' ( in 2X3 matrix of float) 0:482 Sequence 0:482 move second child to first child ( temp 2X3 matrix of float) 0:482 'r14' ( temp 2X3 matrix of float) 0:482 matrix-multiply ( temp 2X3 matrix of float) 0:482 'inFM3x3' ( in 3X3 matrix of float) 0:482 'inFM2x3' ( in 2X3 matrix of float) 0:483 Sequence 0:483 move second child to first child ( temp 2X4 matrix of float) 0:483 'r15' ( temp 2X4 matrix of float) 0:483 matrix-multiply ( temp 2X4 matrix of float) 0:483 'inFM3x4' ( in 3X4 matrix of float) 0:483 'inFM2x3' ( in 2X3 matrix of float) 0:484 Sequence 0:484 move second child to first child ( temp 3X4 matrix of float) 0:484 'r16' ( temp 3X4 matrix of float) 0:484 matrix-multiply ( temp 3X4 matrix of float) 0:484 'inFM2x4' ( in 2X4 matrix of float) 0:484 'inFM3x2' ( in 3X2 matrix of float) 0:490 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:490 Function Parameters: 0:? Sequence 0:492 move second child to first child ( temp 4-component vector of float) 0:492 color: direct index for structure ( temp 4-component vector of float) 0:492 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:492 Constant: 0:492 0 (const int) 0:492 Constant: 0:492 1.000000 0:492 1.000000 0:492 1.000000 0:492 1.000000 0:493 Branch: Return with expression 0:493 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:490 Function Definition: main( ( temp void) 0:490 Function Parameters: 0:? Sequence 0:490 Sequence 0:490 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:490 color: direct index for structure ( temp 4-component vector of float) 0:490 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:490 Constant: 0:490 0 (const int) 0:? Linker Objects 0:? 'gs_ua' ( shared uint) 0:? 'gs_ub' ( shared uint) 0:? 'gs_uc' ( shared uint) 0:? 'gs_ua2' ( shared 2-component vector of uint) 0:? 'gs_ub2' ( shared 2-component vector of uint) 0:? 'gs_uc2' ( shared 2-component vector of uint) 0:? 'gs_ua3' ( shared 3-component vector of uint) 0:? 'gs_ub3' ( shared 3-component vector of uint) 0:? 'gs_uc3' ( shared 3-component vector of uint) 0:? 'gs_ua4' ( shared 4-component vector of uint) 0:? 'gs_ub4' ( shared 4-component vector of uint) 0:? 'gs_uc4' ( shared 4-component vector of uint) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;i1; ( temp float) 0:17 Function Parameters: 0:17 'inF0' ( in float) 0:17 'inF1' ( in float) 0:17 'inF2' ( in float) 0:17 'inU0' ( in uint) 0:17 'inU1' ( in int) 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp bool) 0:20 'r000' ( temp bool) 0:20 all ( temp bool) 0:20 Convert float to bool ( temp bool) 0:20 'inF0' ( in float) 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'r001' ( temp float) 0:21 Absolute value ( temp float) 0:21 'inF0' ( in float) 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'r002' ( temp float) 0:22 arc cosine ( temp float) 0:22 'inF0' ( in float) 0:23 Sequence 0:23 move second child to first child ( temp bool) 0:23 'r003' ( temp bool) 0:23 any ( temp bool) 0:23 Convert float to bool ( temp bool) 0:23 'inF0' ( in float) 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'r004' ( temp float) 0:24 arc sine ( temp float) 0:24 'inF0' ( in float) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'r005' ( temp int) 0:25 floatBitsToInt ( temp int) 0:25 'inF0' ( in float) 0:26 Sequence 0:26 move second child to first child ( temp uint) 0:26 'r006' ( temp uint) 0:26 floatBitsToUint ( temp uint) 0:26 'inU1' ( in int) 0:27 Sequence 0:27 move second child to first child ( temp float) 0:27 'r007' ( temp float) 0:27 intBitsToFloat ( temp float) 0:27 'inU0' ( in uint) 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'r009' ( temp float) 0:29 arc tangent ( temp float) 0:29 'inF0' ( in float) 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'r010' ( temp float) 0:30 arc tangent ( temp float) 0:30 'inF0' ( in float) 0:30 'inF1' ( in float) 0:31 Sequence 0:31 move second child to first child ( temp float) 0:31 'r011' ( temp float) 0:31 Ceiling ( temp float) 0:31 'inF0' ( in float) 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'r012' ( temp float) 0:32 clamp ( temp float) 0:32 'inF0' ( in float) 0:32 'inF1' ( in float) 0:32 'inF2' ( in float) 0:33 Test condition and select ( temp void) 0:33 Condition 0:33 Compare Less Than ( temp bool) 0:33 'inF0' ( in float) 0:33 Constant: 0:33 0.000000 0:33 true case 0:33 Branch: Kill 0:34 Test condition and select ( temp void) 0:34 Condition 0:34 Compare Less Than ( temp bool) 0:34 'r005' ( temp int) 0:34 Constant: 0:34 0 (const int) 0:34 true case 0:34 Branch: Kill 0:35 Sequence 0:35 move second child to first child ( temp float) 0:35 'r014' ( temp float) 0:35 cosine ( temp float) 0:35 'inF0' ( in float) 0:36 Sequence 0:36 move second child to first child ( temp float) 0:36 'r015' ( temp float) 0:36 hyp. cosine ( temp float) 0:36 'inF0' ( in float) 0:37 Sequence 0:37 move second child to first child ( temp int) 0:37 'r016' ( temp int) 0:37 bitCount ( temp int) 0:37 Constant: 0:37 7 (const int) 0:38 Sequence 0:38 move second child to first child ( temp float) 0:38 'r017' ( temp float) 0:38 dPdx ( temp float) 0:38 'inF0' ( in float) 0:39 Sequence 0:39 move second child to first child ( temp float) 0:39 'r018' ( temp float) 0:39 dPdxCoarse ( temp float) 0:39 'inF0' ( in float) 0:40 Sequence 0:40 move second child to first child ( temp float) 0:40 'r019' ( temp float) 0:40 dPdxFine ( temp float) 0:40 'inF0' ( in float) 0:41 Sequence 0:41 move second child to first child ( temp float) 0:41 'r020' ( temp float) 0:41 dPdy ( temp float) 0:41 'inF0' ( in float) 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r021' ( temp float) 0:42 dPdyCoarse ( temp float) 0:42 'inF0' ( in float) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r022' ( temp float) 0:43 dPdyFine ( temp float) 0:43 'inF0' ( in float) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r023' ( temp float) 0:44 degrees ( temp float) 0:44 'inF0' ( in float) 0:45 Sequence 0:45 move second child to first child ( temp float) 0:45 'r024' ( temp float) 0:45 distance ( temp float) 0:45 'inF0' ( in float) 0:45 'inF1' ( in float) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r027' ( temp float) 0:49 exp ( temp float) 0:49 'inF0' ( in float) 0:50 Sequence 0:50 move second child to first child ( temp float) 0:50 'r028' ( temp float) 0:50 exp2 ( temp float) 0:50 'inF0' ( in float) 0:51 Sequence 0:51 move second child to first child ( temp uint) 0:51 'r029' ( temp uint) 0:51 Convert int to uint ( temp uint) 0:51 findMSB ( temp int) 0:51 Constant: 0:51 7 (const int) 0:52 Sequence 0:52 move second child to first child ( temp uint) 0:52 'r030' ( temp uint) 0:52 Convert int to uint ( temp uint) 0:52 findLSB ( temp int) 0:52 Constant: 0:52 7 (const int) 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r031' ( temp float) 0:53 Floor ( temp float) 0:53 'inF0' ( in float) 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'r033' ( temp float) 0:55 mod ( temp float) 0:55 'inF0' ( in float) 0:55 'inF1' ( in float) 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'r033i' ( temp float) 0:56 mod ( temp float) 0:56 'inF0' ( in float) 0:56 Constant: 0:56 2.000000 0:57 Sequence 0:57 move second child to first child ( temp float) 0:57 'r034' ( temp float) 0:57 Fraction ( temp float) 0:57 'inF0' ( in float) 0:58 Sequence 0:58 move second child to first child ( temp float) 0:58 'r036' ( temp float) 0:58 fwidth ( temp float) 0:58 'inF0' ( in float) 0:59 Sequence 0:59 move second child to first child ( temp bool) 0:59 'r037' ( temp bool) 0:59 isinf ( temp bool) 0:59 'inF0' ( in float) 0:60 Sequence 0:60 move second child to first child ( temp bool) 0:60 'r038' ( temp bool) 0:60 isnan ( temp bool) 0:60 'inF0' ( in float) 0:61 Sequence 0:61 move second child to first child ( temp float) 0:61 'r039' ( temp float) 0:61 ldexp ( temp float) 0:61 'inF0' ( in float) 0:61 'inF1' ( in float) 0:62 Sequence 0:62 move second child to first child ( temp float) 0:62 'r039a' ( temp float) 0:62 mix ( temp float) 0:62 'inF0' ( in float) 0:62 'inF1' ( in float) 0:62 'inF2' ( in float) 0:63 Sequence 0:63 move second child to first child ( temp float) 0:63 'r040' ( temp float) 0:63 log ( temp float) 0:63 'inF0' ( in float) 0:64 Sequence 0:64 move second child to first child ( temp float) 0:64 'r041' ( temp float) 0:64 component-wise multiply ( temp float) 0:64 log2 ( temp float) 0:64 'inF0' ( in float) 0:64 Constant: 0:64 0.301030 0:65 Sequence 0:65 move second child to first child ( temp float) 0:65 'r042' ( temp float) 0:65 log2 ( temp float) 0:65 'inF0' ( in float) 0:66 Sequence 0:66 move second child to first child ( temp float) 0:66 'r043' ( temp float) 0:66 max ( temp float) 0:66 'inF0' ( in float) 0:66 'inF1' ( in float) 0:67 Sequence 0:67 move second child to first child ( temp float) 0:67 'r044' ( temp float) 0:67 min ( temp float) 0:67 'inF0' ( in float) 0:67 'inF1' ( in float) 0:68 Sequence 0:68 move second child to first child ( temp float) 0:68 'r045' ( temp float) 0:68 pow ( temp float) 0:68 'inF0' ( in float) 0:68 'inF1' ( in float) 0:69 Sequence 0:69 move second child to first child ( temp float) 0:69 'r046' ( temp float) 0:69 radians ( temp float) 0:69 'inF0' ( in float) 0:70 Sequence 0:70 move second child to first child ( temp float) 0:70 'r047' ( temp float) 0:70 divide ( temp float) 0:70 Constant: 0:70 1.000000 0:70 'inF0' ( in float) 0:71 Sequence 0:71 move second child to first child ( temp uint) 0:71 'r048' ( temp uint) 0:71 Convert int to uint ( temp uint) 0:71 bitFieldReverse ( temp int) 0:71 Constant: 0:71 2 (const int) 0:72 Sequence 0:72 move second child to first child ( temp float) 0:72 'r049' ( temp float) 0:72 roundEven ( temp float) 0:72 'inF0' ( in float) 0:73 Sequence 0:73 move second child to first child ( temp float) 0:73 'r050' ( temp float) 0:73 inverse sqrt ( temp float) 0:73 'inF0' ( in float) 0:74 Sequence 0:74 move second child to first child ( temp float) 0:74 'r051' ( temp float) 0:74 clamp ( temp float) 0:74 'inF0' ( in float) 0:74 Constant: 0:74 0.000000 0:74 Constant: 0:74 1.000000 0:75 Sequence 0:75 move second child to first child ( temp float) 0:75 'r052' ( temp float) 0:75 Sign ( temp float) 0:75 'inF0' ( in float) 0:76 Sequence 0:76 move second child to first child ( temp float) 0:76 'r053' ( temp float) 0:76 sine ( temp float) 0:76 'inF0' ( in float) 0:77 Sequence 0:77 move second child to first child ( temp float) 0:77 'inF1' ( in float) 0:77 sine ( temp float) 0:77 'inF0' ( in float) 0:77 move second child to first child ( temp float) 0:77 'inF2' ( in float) 0:77 cosine ( temp float) 0:77 'inF0' ( in float) 0:78 Sequence 0:78 move second child to first child ( temp float) 0:78 'r055' ( temp float) 0:78 hyp. sine ( temp float) 0:78 'inF0' ( in float) 0:79 Sequence 0:79 move second child to first child ( temp float) 0:79 'r056' ( temp float) 0:79 smoothstep ( temp float) 0:79 'inF0' ( in float) 0:79 'inF1' ( in float) 0:79 'inF2' ( in float) 0:80 Sequence 0:80 move second child to first child ( temp float) 0:80 'r057' ( temp float) 0:80 sqrt ( temp float) 0:80 'inF0' ( in float) 0:81 Sequence 0:81 move second child to first child ( temp float) 0:81 'r058' ( temp float) 0:81 step ( temp float) 0:81 'inF0' ( in float) 0:81 'inF1' ( in float) 0:82 Sequence 0:82 move second child to first child ( temp float) 0:82 'r059' ( temp float) 0:82 tangent ( temp float) 0:82 'inF0' ( in float) 0:83 Sequence 0:83 move second child to first child ( temp float) 0:83 'r060' ( temp float) 0:83 hyp. tangent ( temp float) 0:83 'inF0' ( in float) 0:85 Sequence 0:85 move second child to first child ( temp float) 0:85 'r061' ( temp float) 0:85 trunc ( temp float) 0:85 'inF0' ( in float) 0:87 Branch: Return with expression 0:87 Constant: 0:87 0.000000 0:91 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) 0:91 Function Parameters: 0:91 'inF0' ( in 1-component vector of float) 0:91 'inF1' ( in 1-component vector of float) 0:91 'inF2' ( in 1-component vector of float) 0:? Sequence 0:93 Branch: Return with expression 0:93 Constant: 0:93 0.000000 0:97 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) 0:97 Function Parameters: 0:97 'inF0' ( in 2-component vector of float) 0:97 'inF1' ( in 2-component vector of float) 0:97 'inF2' ( in 2-component vector of float) 0:97 'inU0' ( in 2-component vector of uint) 0:97 'inU1' ( in 2-component vector of uint) 0:? Sequence 0:100 Sequence 0:100 move second child to first child ( temp bool) 0:100 'r000' ( temp bool) 0:100 all ( temp bool) 0:100 Convert float to bool ( temp 2-component vector of bool) 0:100 'inF0' ( in 2-component vector of float) 0:101 Sequence 0:101 move second child to first child ( temp 2-component vector of float) 0:101 'r001' ( temp 2-component vector of float) 0:101 Absolute value ( temp 2-component vector of float) 0:101 'inF0' ( in 2-component vector of float) 0:102 Sequence 0:102 move second child to first child ( temp 2-component vector of float) 0:102 'r002' ( temp 2-component vector of float) 0:102 arc cosine ( temp 2-component vector of float) 0:102 'inF0' ( in 2-component vector of float) 0:103 Sequence 0:103 move second child to first child ( temp bool) 0:103 'r003' ( temp bool) 0:103 any ( temp bool) 0:103 Convert float to bool ( temp 2-component vector of bool) 0:103 'inF0' ( in 2-component vector of float) 0:104 Sequence 0:104 move second child to first child ( temp 2-component vector of float) 0:104 'r004' ( temp 2-component vector of float) 0:104 arc sine ( temp 2-component vector of float) 0:104 'inF0' ( in 2-component vector of float) 0:105 Sequence 0:105 move second child to first child ( temp 2-component vector of int) 0:105 'r005' ( temp 2-component vector of int) 0:105 floatBitsToInt ( temp 2-component vector of int) 0:105 'inF0' ( in 2-component vector of float) 0:106 Sequence 0:106 move second child to first child ( temp 2-component vector of uint) 0:106 'r006' ( temp 2-component vector of uint) 0:106 floatBitsToUint ( temp 2-component vector of uint) 0:106 'inF0' ( in 2-component vector of float) 0:107 Sequence 0:107 move second child to first child ( temp 2-component vector of float) 0:107 'r007' ( temp 2-component vector of float) 0:107 intBitsToFloat ( temp 2-component vector of float) 0:107 'inU0' ( in 2-component vector of uint) 0:109 Sequence 0:109 move second child to first child ( temp 2-component vector of float) 0:109 'r009' ( temp 2-component vector of float) 0:109 arc tangent ( temp 2-component vector of float) 0:109 'inF0' ( in 2-component vector of float) 0:110 Sequence 0:110 move second child to first child ( temp 2-component vector of float) 0:110 'r010' ( temp 2-component vector of float) 0:110 arc tangent ( temp 2-component vector of float) 0:110 'inF0' ( in 2-component vector of float) 0:110 'inF1' ( in 2-component vector of float) 0:111 Sequence 0:111 move second child to first child ( temp 2-component vector of float) 0:111 'r011' ( temp 2-component vector of float) 0:111 Ceiling ( temp 2-component vector of float) 0:111 'inF0' ( in 2-component vector of float) 0:112 Sequence 0:112 move second child to first child ( temp 2-component vector of float) 0:112 'r012' ( temp 2-component vector of float) 0:112 clamp ( temp 2-component vector of float) 0:112 'inF0' ( in 2-component vector of float) 0:112 'inF1' ( in 2-component vector of float) 0:112 'inF2' ( in 2-component vector of float) 0:113 Test condition and select ( temp void) 0:113 Condition 0:113 any ( temp bool) 0:113 Compare Less Than ( temp 2-component vector of bool) 0:113 'inF0' ( in 2-component vector of float) 0:113 Constant: 0:113 0.000000 0:113 0.000000 0:113 true case 0:113 Branch: Kill 0:114 Test condition and select ( temp void) 0:114 Condition 0:114 any ( temp bool) 0:114 Compare Less Than ( temp 2-component vector of bool) 0:114 'inU0' ( in 2-component vector of uint) 0:114 Constant: 0:114 0.000000 0:114 0.000000 0:114 true case 0:114 Branch: Kill 0:115 Sequence 0:115 move second child to first child ( temp 2-component vector of float) 0:115 'r013' ( temp 2-component vector of float) 0:115 cosine ( temp 2-component vector of float) 0:115 'inF0' ( in 2-component vector of float) 0:116 Sequence 0:116 move second child to first child ( temp 2-component vector of float) 0:116 'r015' ( temp 2-component vector of float) 0:116 hyp. cosine ( temp 2-component vector of float) 0:116 'inF0' ( in 2-component vector of float) 0:117 Sequence 0:117 move second child to first child ( temp 2-component vector of int) 0:117 'r016' ( temp 2-component vector of int) 0:117 bitCount ( temp 2-component vector of int) 0:117 Constant: 0:117 7 (const int) 0:117 3 (const int) 0:118 Sequence 0:118 move second child to first child ( temp 2-component vector of float) 0:118 'r017' ( temp 2-component vector of float) 0:118 dPdx ( temp 2-component vector of float) 0:118 'inF0' ( in 2-component vector of float) 0:119 Sequence 0:119 move second child to first child ( temp 2-component vector of float) 0:119 'r018' ( temp 2-component vector of float) 0:119 dPdxCoarse ( temp 2-component vector of float) 0:119 'inF0' ( in 2-component vector of float) 0:120 Sequence 0:120 move second child to first child ( temp 2-component vector of float) 0:120 'r019' ( temp 2-component vector of float) 0:120 dPdxFine ( temp 2-component vector of float) 0:120 'inF0' ( in 2-component vector of float) 0:121 Sequence 0:121 move second child to first child ( temp 2-component vector of float) 0:121 'r020' ( temp 2-component vector of float) 0:121 dPdy ( temp 2-component vector of float) 0:121 'inF0' ( in 2-component vector of float) 0:122 Sequence 0:122 move second child to first child ( temp 2-component vector of float) 0:122 'r021' ( temp 2-component vector of float) 0:122 dPdyCoarse ( temp 2-component vector of float) 0:122 'inF0' ( in 2-component vector of float) 0:123 Sequence 0:123 move second child to first child ( temp 2-component vector of float) 0:123 'r022' ( temp 2-component vector of float) 0:123 dPdyFine ( temp 2-component vector of float) 0:123 'inF0' ( in 2-component vector of float) 0:124 Sequence 0:124 move second child to first child ( temp 2-component vector of float) 0:124 'r023' ( temp 2-component vector of float) 0:124 degrees ( temp 2-component vector of float) 0:124 'inF0' ( in 2-component vector of float) 0:128 Sequence 0:128 move second child to first child ( temp float) 0:128 'r026' ( temp float) 0:128 distance ( temp float) 0:128 'inF0' ( in 2-component vector of float) 0:128 'inF1' ( in 2-component vector of float) 0:129 Sequence 0:129 move second child to first child ( temp float) 0:129 'r027' ( temp float) 0:129 dot-product ( temp float) 0:129 'inF0' ( in 2-component vector of float) 0:129 'inF1' ( in 2-component vector of float) 0:133 Sequence 0:133 move second child to first child ( temp 2-component vector of float) 0:133 'r028' ( temp 2-component vector of float) 0:133 exp ( temp 2-component vector of float) 0:133 'inF0' ( in 2-component vector of float) 0:134 Sequence 0:134 move second child to first child ( temp 2-component vector of float) 0:134 'r029' ( temp 2-component vector of float) 0:134 exp2 ( temp 2-component vector of float) 0:134 'inF0' ( in 2-component vector of float) 0:135 Sequence 0:135 move second child to first child ( temp 2-component vector of float) 0:135 'r030' ( temp 2-component vector of float) 0:135 face-forward ( temp 2-component vector of float) 0:135 'inF0' ( in 2-component vector of float) 0:135 'inF1' ( in 2-component vector of float) 0:135 'inF2' ( in 2-component vector of float) 0:136 Sequence 0:136 move second child to first child ( temp 2-component vector of uint) 0:136 'r031' ( temp 2-component vector of uint) 0:136 findMSB ( temp 2-component vector of uint) 0:136 Constant: 0:136 7 (const uint) 0:136 8 (const uint) 0:137 Sequence 0:137 move second child to first child ( temp 2-component vector of uint) 0:137 'r032' ( temp 2-component vector of uint) 0:137 findLSB ( temp 2-component vector of uint) 0:137 Constant: 0:137 7 (const uint) 0:137 8 (const uint) 0:138 Sequence 0:138 move second child to first child ( temp 2-component vector of float) 0:138 'r033' ( temp 2-component vector of float) 0:138 Floor ( temp 2-component vector of float) 0:138 'inF0' ( in 2-component vector of float) 0:140 Sequence 0:140 move second child to first child ( temp 2-component vector of float) 0:140 'r035' ( temp 2-component vector of float) 0:140 mod ( temp 2-component vector of float) 0:140 'inF0' ( in 2-component vector of float) 0:140 'inF1' ( in 2-component vector of float) 0:141 Sequence 0:141 move second child to first child ( temp 2-component vector of float) 0:141 'r036' ( temp 2-component vector of float) 0:141 Fraction ( temp 2-component vector of float) 0:141 'inF0' ( in 2-component vector of float) 0:142 Sequence 0:142 move second child to first child ( temp 2-component vector of float) 0:142 'r038' ( temp 2-component vector of float) 0:142 fwidth ( temp 2-component vector of float) 0:142 'inF0' ( in 2-component vector of float) 0:143 Sequence 0:143 move second child to first child ( temp 2-component vector of bool) 0:143 'r039' ( temp 2-component vector of bool) 0:143 isinf ( temp 2-component vector of bool) 0:143 'inF0' ( in 2-component vector of float) 0:144 Sequence 0:144 move second child to first child ( temp 2-component vector of bool) 0:144 'r040' ( temp 2-component vector of bool) 0:144 isnan ( temp 2-component vector of bool) 0:144 'inF0' ( in 2-component vector of float) 0:145 Sequence 0:145 move second child to first child ( temp 2-component vector of float) 0:145 'r041' ( temp 2-component vector of float) 0:145 ldexp ( temp 2-component vector of float) 0:145 'inF0' ( in 2-component vector of float) 0:145 'inF1' ( in 2-component vector of float) 0:146 Sequence 0:146 move second child to first child ( temp 2-component vector of float) 0:146 'r039a' ( temp 2-component vector of float) 0:146 mix ( temp 2-component vector of float) 0:146 'inF0' ( in 2-component vector of float) 0:146 'inF1' ( in 2-component vector of float) 0:146 'inF2' ( in 2-component vector of float) 0:147 Sequence 0:147 move second child to first child ( temp float) 0:147 'r042' ( temp float) 0:147 length ( temp float) 0:147 'inF0' ( in 2-component vector of float) 0:148 Sequence 0:148 move second child to first child ( temp 2-component vector of float) 0:148 'r043' ( temp 2-component vector of float) 0:148 log ( temp 2-component vector of float) 0:148 'inF0' ( in 2-component vector of float) 0:149 Sequence 0:149 move second child to first child ( temp 2-component vector of float) 0:149 'r044' ( temp 2-component vector of float) 0:149 vector-scale ( temp 2-component vector of float) 0:149 log2 ( temp 2-component vector of float) 0:149 'inF0' ( in 2-component vector of float) 0:149 Constant: 0:149 0.301030 0:150 Sequence 0:150 move second child to first child ( temp 2-component vector of float) 0:150 'r045' ( temp 2-component vector of float) 0:150 log2 ( temp 2-component vector of float) 0:150 'inF0' ( in 2-component vector of float) 0:151 Sequence 0:151 move second child to first child ( temp 2-component vector of float) 0:151 'r046' ( temp 2-component vector of float) 0:151 max ( temp 2-component vector of float) 0:151 'inF0' ( in 2-component vector of float) 0:151 'inF1' ( in 2-component vector of float) 0:152 Sequence 0:152 move second child to first child ( temp 2-component vector of float) 0:152 'r047' ( temp 2-component vector of float) 0:152 min ( temp 2-component vector of float) 0:152 'inF0' ( in 2-component vector of float) 0:152 'inF1' ( in 2-component vector of float) 0:153 Sequence 0:153 move second child to first child ( temp 2-component vector of float) 0:153 'r048' ( temp 2-component vector of float) 0:153 normalize ( temp 2-component vector of float) 0:153 'inF0' ( in 2-component vector of float) 0:154 Sequence 0:154 move second child to first child ( temp 2-component vector of float) 0:154 'r049' ( temp 2-component vector of float) 0:154 pow ( temp 2-component vector of float) 0:154 'inF0' ( in 2-component vector of float) 0:154 'inF1' ( in 2-component vector of float) 0:155 Sequence 0:155 move second child to first child ( temp 2-component vector of float) 0:155 'r050' ( temp 2-component vector of float) 0:155 radians ( temp 2-component vector of float) 0:155 'inF0' ( in 2-component vector of float) 0:156 Sequence 0:156 move second child to first child ( temp 2-component vector of float) 0:156 'r051' ( temp 2-component vector of float) 0:156 divide ( temp 2-component vector of float) 0:156 Constant: 0:156 1.000000 0:156 'inF0' ( in 2-component vector of float) 0:157 Sequence 0:157 move second child to first child ( temp 2-component vector of float) 0:157 'r052' ( temp 2-component vector of float) 0:157 reflect ( temp 2-component vector of float) 0:157 'inF0' ( in 2-component vector of float) 0:157 'inF1' ( in 2-component vector of float) 0:158 Sequence 0:158 move second child to first child ( temp 2-component vector of float) 0:158 'r053' ( temp 2-component vector of float) 0:158 refract ( temp 2-component vector of float) 0:158 'inF0' ( in 2-component vector of float) 0:158 'inF1' ( in 2-component vector of float) 0:158 Constant: 0:158 2.000000 0:159 Sequence 0:159 move second child to first child ( temp 2-component vector of uint) 0:159 'r054' ( temp 2-component vector of uint) 0:159 bitFieldReverse ( temp 2-component vector of uint) 0:159 Constant: 0:159 1 (const uint) 0:159 2 (const uint) 0:160 Sequence 0:160 move second child to first child ( temp 2-component vector of float) 0:160 'r055' ( temp 2-component vector of float) 0:160 roundEven ( temp 2-component vector of float) 0:160 'inF0' ( in 2-component vector of float) 0:161 Sequence 0:161 move second child to first child ( temp 2-component vector of float) 0:161 'r056' ( temp 2-component vector of float) 0:161 inverse sqrt ( temp 2-component vector of float) 0:161 'inF0' ( in 2-component vector of float) 0:162 Sequence 0:162 move second child to first child ( temp 2-component vector of float) 0:162 'r057' ( temp 2-component vector of float) 0:162 clamp ( temp 2-component vector of float) 0:162 'inF0' ( in 2-component vector of float) 0:162 Constant: 0:162 0.000000 0:162 Constant: 0:162 1.000000 0:163 Sequence 0:163 move second child to first child ( temp 2-component vector of float) 0:163 'r058' ( temp 2-component vector of float) 0:163 Sign ( temp 2-component vector of float) 0:163 'inF0' ( in 2-component vector of float) 0:164 Sequence 0:164 move second child to first child ( temp 2-component vector of float) 0:164 'r059' ( temp 2-component vector of float) 0:164 sine ( temp 2-component vector of float) 0:164 'inF0' ( in 2-component vector of float) 0:165 Sequence 0:165 move second child to first child ( temp 2-component vector of float) 0:165 'inF1' ( in 2-component vector of float) 0:165 sine ( temp 2-component vector of float) 0:165 'inF0' ( in 2-component vector of float) 0:165 move second child to first child ( temp 2-component vector of float) 0:165 'inF2' ( in 2-component vector of float) 0:165 cosine ( temp 2-component vector of float) 0:165 'inF0' ( in 2-component vector of float) 0:166 Sequence 0:166 move second child to first child ( temp 2-component vector of float) 0:166 'r060' ( temp 2-component vector of float) 0:166 hyp. sine ( temp 2-component vector of float) 0:166 'inF0' ( in 2-component vector of float) 0:167 Sequence 0:167 move second child to first child ( temp 2-component vector of float) 0:167 'r061' ( temp 2-component vector of float) 0:167 smoothstep ( temp 2-component vector of float) 0:167 'inF0' ( in 2-component vector of float) 0:167 'inF1' ( in 2-component vector of float) 0:167 'inF2' ( in 2-component vector of float) 0:168 Sequence 0:168 move second child to first child ( temp 2-component vector of float) 0:168 'r062' ( temp 2-component vector of float) 0:168 sqrt ( temp 2-component vector of float) 0:168 'inF0' ( in 2-component vector of float) 0:169 Sequence 0:169 move second child to first child ( temp 2-component vector of float) 0:169 'r063' ( temp 2-component vector of float) 0:169 step ( temp 2-component vector of float) 0:169 'inF0' ( in 2-component vector of float) 0:169 'inF1' ( in 2-component vector of float) 0:170 Sequence 0:170 move second child to first child ( temp 2-component vector of float) 0:170 'r064' ( temp 2-component vector of float) 0:170 tangent ( temp 2-component vector of float) 0:170 'inF0' ( in 2-component vector of float) 0:171 Sequence 0:171 move second child to first child ( temp 2-component vector of float) 0:171 'r065' ( temp 2-component vector of float) 0:171 hyp. tangent ( temp 2-component vector of float) 0:171 'inF0' ( in 2-component vector of float) 0:173 Sequence 0:173 move second child to first child ( temp 2-component vector of float) 0:173 'r066' ( temp 2-component vector of float) 0:173 trunc ( temp 2-component vector of float) 0:173 'inF0' ( in 2-component vector of float) 0:176 Branch: Return with expression 0:176 Constant: 0:176 1.000000 0:176 2.000000 0:180 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) 0:180 Function Parameters: 0:180 'inF0' ( in 3-component vector of float) 0:180 'inF1' ( in 3-component vector of float) 0:180 'inF2' ( in 3-component vector of float) 0:180 'inU0' ( in 3-component vector of uint) 0:180 'inU1' ( in 3-component vector of uint) 0:? Sequence 0:183 Sequence 0:183 move second child to first child ( temp bool) 0:183 'r000' ( temp bool) 0:183 all ( temp bool) 0:183 Convert float to bool ( temp 3-component vector of bool) 0:183 'inF0' ( in 3-component vector of float) 0:184 Sequence 0:184 move second child to first child ( temp 3-component vector of float) 0:184 'r001' ( temp 3-component vector of float) 0:184 Absolute value ( temp 3-component vector of float) 0:184 'inF0' ( in 3-component vector of float) 0:185 Sequence 0:185 move second child to first child ( temp 3-component vector of float) 0:185 'r002' ( temp 3-component vector of float) 0:185 arc cosine ( temp 3-component vector of float) 0:185 'inF0' ( in 3-component vector of float) 0:186 Sequence 0:186 move second child to first child ( temp bool) 0:186 'r003' ( temp bool) 0:186 any ( temp bool) 0:186 Convert float to bool ( temp 3-component vector of bool) 0:186 'inF0' ( in 3-component vector of float) 0:187 Sequence 0:187 move second child to first child ( temp 3-component vector of float) 0:187 'r004' ( temp 3-component vector of float) 0:187 arc sine ( temp 3-component vector of float) 0:187 'inF0' ( in 3-component vector of float) 0:188 Sequence 0:188 move second child to first child ( temp 3-component vector of int) 0:188 'r005' ( temp 3-component vector of int) 0:188 floatBitsToInt ( temp 3-component vector of int) 0:188 'inF0' ( in 3-component vector of float) 0:189 Sequence 0:189 move second child to first child ( temp 3-component vector of uint) 0:189 'r006' ( temp 3-component vector of uint) 0:189 floatBitsToUint ( temp 3-component vector of uint) 0:189 'inF0' ( in 3-component vector of float) 0:190 Sequence 0:190 move second child to first child ( temp 3-component vector of float) 0:190 'r007' ( temp 3-component vector of float) 0:190 intBitsToFloat ( temp 3-component vector of float) 0:190 'inU0' ( in 3-component vector of uint) 0:192 Sequence 0:192 move second child to first child ( temp 3-component vector of float) 0:192 'r009' ( temp 3-component vector of float) 0:192 arc tangent ( temp 3-component vector of float) 0:192 'inF0' ( in 3-component vector of float) 0:193 Sequence 0:193 move second child to first child ( temp 3-component vector of float) 0:193 'r010' ( temp 3-component vector of float) 0:193 arc tangent ( temp 3-component vector of float) 0:193 'inF0' ( in 3-component vector of float) 0:193 'inF1' ( in 3-component vector of float) 0:194 Sequence 0:194 move second child to first child ( temp 3-component vector of float) 0:194 'r011' ( temp 3-component vector of float) 0:194 Ceiling ( temp 3-component vector of float) 0:194 'inF0' ( in 3-component vector of float) 0:195 Sequence 0:195 move second child to first child ( temp 3-component vector of float) 0:195 'r012' ( temp 3-component vector of float) 0:195 clamp ( temp 3-component vector of float) 0:195 'inF0' ( in 3-component vector of float) 0:195 'inF1' ( in 3-component vector of float) 0:195 'inF2' ( in 3-component vector of float) 0:196 Test condition and select ( temp void) 0:196 Condition 0:196 any ( temp bool) 0:196 Compare Less Than ( temp 3-component vector of bool) 0:196 'inF0' ( in 3-component vector of float) 0:196 Constant: 0:196 0.000000 0:196 0.000000 0:196 0.000000 0:196 true case 0:196 Branch: Kill 0:197 Test condition and select ( temp void) 0:197 Condition 0:197 any ( temp bool) 0:197 Compare Less Than ( temp 3-component vector of bool) 0:197 'inU0' ( in 3-component vector of uint) 0:197 Constant: 0:197 0.000000 0:197 0.000000 0:197 0.000000 0:197 true case 0:197 Branch: Kill 0:198 Sequence 0:198 move second child to first child ( temp 3-component vector of float) 0:198 'r013' ( temp 3-component vector of float) 0:198 cosine ( temp 3-component vector of float) 0:198 'inF0' ( in 3-component vector of float) 0:199 Sequence 0:199 move second child to first child ( temp 3-component vector of float) 0:199 'r014' ( temp 3-component vector of float) 0:199 hyp. cosine ( temp 3-component vector of float) 0:199 'inF0' ( in 3-component vector of float) 0:200 Sequence 0:200 move second child to first child ( temp 3-component vector of uint) 0:200 'r015' ( temp 3-component vector of uint) 0:200 bitCount ( temp 3-component vector of uint) 0:200 Constant: 0:200 7 (const uint) 0:200 3 (const uint) 0:200 5 (const uint) 0:201 Sequence 0:201 move second child to first child ( temp 3-component vector of float) 0:201 'r016' ( temp 3-component vector of float) 0:201 cross-product ( temp 3-component vector of float) 0:201 'inF0' ( in 3-component vector of float) 0:201 'inF1' ( in 3-component vector of float) 0:202 Sequence 0:202 move second child to first child ( temp 3-component vector of float) 0:202 'r017' ( temp 3-component vector of float) 0:202 dPdx ( temp 3-component vector of float) 0:202 'inF0' ( in 3-component vector of float) 0:203 Sequence 0:203 move second child to first child ( temp 3-component vector of float) 0:203 'r018' ( temp 3-component vector of float) 0:203 dPdxCoarse ( temp 3-component vector of float) 0:203 'inF0' ( in 3-component vector of float) 0:204 Sequence 0:204 move second child to first child ( temp 3-component vector of float) 0:204 'r019' ( temp 3-component vector of float) 0:204 dPdxFine ( temp 3-component vector of float) 0:204 'inF0' ( in 3-component vector of float) 0:205 Sequence 0:205 move second child to first child ( temp 3-component vector of float) 0:205 'r020' ( temp 3-component vector of float) 0:205 dPdy ( temp 3-component vector of float) 0:205 'inF0' ( in 3-component vector of float) 0:206 Sequence 0:206 move second child to first child ( temp 3-component vector of float) 0:206 'r021' ( temp 3-component vector of float) 0:206 dPdyCoarse ( temp 3-component vector of float) 0:206 'inF0' ( in 3-component vector of float) 0:207 Sequence 0:207 move second child to first child ( temp 3-component vector of float) 0:207 'r022' ( temp 3-component vector of float) 0:207 dPdyFine ( temp 3-component vector of float) 0:207 'inF0' ( in 3-component vector of float) 0:208 Sequence 0:208 move second child to first child ( temp 3-component vector of float) 0:208 'r023' ( temp 3-component vector of float) 0:208 degrees ( temp 3-component vector of float) 0:208 'inF0' ( in 3-component vector of float) 0:209 Sequence 0:209 move second child to first child ( temp float) 0:209 'r024' ( temp float) 0:209 distance ( temp float) 0:209 'inF0' ( in 3-component vector of float) 0:209 'inF1' ( in 3-component vector of float) 0:210 Sequence 0:210 move second child to first child ( temp float) 0:210 'r025' ( temp float) 0:210 dot-product ( temp float) 0:210 'inF0' ( in 3-component vector of float) 0:210 'inF1' ( in 3-component vector of float) 0:214 Sequence 0:214 move second child to first child ( temp 3-component vector of float) 0:214 'r029' ( temp 3-component vector of float) 0:214 exp ( temp 3-component vector of float) 0:214 'inF0' ( in 3-component vector of float) 0:215 Sequence 0:215 move second child to first child ( temp 3-component vector of float) 0:215 'r030' ( temp 3-component vector of float) 0:215 exp2 ( temp 3-component vector of float) 0:215 'inF0' ( in 3-component vector of float) 0:216 Sequence 0:216 move second child to first child ( temp 3-component vector of float) 0:216 'r031' ( temp 3-component vector of float) 0:216 face-forward ( temp 3-component vector of float) 0:216 'inF0' ( in 3-component vector of float) 0:216 'inF1' ( in 3-component vector of float) 0:216 'inF2' ( in 3-component vector of float) 0:217 Sequence 0:217 move second child to first child ( temp 3-component vector of uint) 0:217 'r032' ( temp 3-component vector of uint) 0:217 findMSB ( temp 3-component vector of uint) 0:217 Constant: 0:217 2 (const uint) 0:217 3 (const uint) 0:217 4 (const uint) 0:218 Sequence 0:218 move second child to first child ( temp 3-component vector of uint) 0:218 'r033' ( temp 3-component vector of uint) 0:218 findLSB ( temp 3-component vector of uint) 0:218 Constant: 0:218 2 (const uint) 0:218 3 (const uint) 0:218 4 (const uint) 0:219 Sequence 0:219 move second child to first child ( temp 3-component vector of float) 0:219 'r034' ( temp 3-component vector of float) 0:219 Floor ( temp 3-component vector of float) 0:219 'inF0' ( in 3-component vector of float) 0:221 Sequence 0:221 move second child to first child ( temp 3-component vector of float) 0:221 'r036' ( temp 3-component vector of float) 0:221 mod ( temp 3-component vector of float) 0:221 'inF0' ( in 3-component vector of float) 0:221 'inF1' ( in 3-component vector of float) 0:222 Sequence 0:222 move second child to first child ( temp 3-component vector of float) 0:222 'r037' ( temp 3-component vector of float) 0:222 Fraction ( temp 3-component vector of float) 0:222 'inF0' ( in 3-component vector of float) 0:223 Sequence 0:223 move second child to first child ( temp 3-component vector of float) 0:223 'r039' ( temp 3-component vector of float) 0:223 fwidth ( temp 3-component vector of float) 0:223 'inF0' ( in 3-component vector of float) 0:224 Sequence 0:224 move second child to first child ( temp 3-component vector of bool) 0:224 'r040' ( temp 3-component vector of bool) 0:224 isinf ( temp 3-component vector of bool) 0:224 'inF0' ( in 3-component vector of float) 0:225 Sequence 0:225 move second child to first child ( temp 3-component vector of bool) 0:225 'r041' ( temp 3-component vector of bool) 0:225 isnan ( temp 3-component vector of bool) 0:225 'inF0' ( in 3-component vector of float) 0:226 Sequence 0:226 move second child to first child ( temp 3-component vector of float) 0:226 'r042' ( temp 3-component vector of float) 0:226 ldexp ( temp 3-component vector of float) 0:226 'inF0' ( in 3-component vector of float) 0:226 'inF1' ( in 3-component vector of float) 0:227 Sequence 0:227 move second child to first child ( temp 3-component vector of float) 0:227 'r039a' ( temp 3-component vector of float) 0:227 mix ( temp 3-component vector of float) 0:227 'inF0' ( in 3-component vector of float) 0:227 'inF1' ( in 3-component vector of float) 0:227 'inF2' ( in 3-component vector of float) 0:228 Sequence 0:228 move second child to first child ( temp 3-component vector of float) 0:228 'r039b' ( temp 3-component vector of float) 0:228 mix ( temp 3-component vector of float) 0:228 'inF0' ( in 3-component vector of float) 0:228 'inF1' ( in 3-component vector of float) 0:228 Constant: 0:228 0.300000 0:229 Sequence 0:229 move second child to first child ( temp float) 0:229 'r043' ( temp float) 0:229 length ( temp float) 0:229 'inF0' ( in 3-component vector of float) 0:230 Sequence 0:230 move second child to first child ( temp 3-component vector of float) 0:230 'r044' ( temp 3-component vector of float) 0:230 log ( temp 3-component vector of float) 0:230 'inF0' ( in 3-component vector of float) 0:231 Sequence 0:231 move second child to first child ( temp 3-component vector of float) 0:231 'r045' ( temp 3-component vector of float) 0:231 vector-scale ( temp 3-component vector of float) 0:231 log2 ( temp 3-component vector of float) 0:231 'inF0' ( in 3-component vector of float) 0:231 Constant: 0:231 0.301030 0:232 Sequence 0:232 move second child to first child ( temp 3-component vector of float) 0:232 'r046' ( temp 3-component vector of float) 0:232 log2 ( temp 3-component vector of float) 0:232 'inF0' ( in 3-component vector of float) 0:233 Sequence 0:233 move second child to first child ( temp 3-component vector of float) 0:233 'r047' ( temp 3-component vector of float) 0:233 max ( temp 3-component vector of float) 0:233 'inF0' ( in 3-component vector of float) 0:233 'inF1' ( in 3-component vector of float) 0:234 Sequence 0:234 move second child to first child ( temp 3-component vector of float) 0:234 'r048' ( temp 3-component vector of float) 0:234 min ( temp 3-component vector of float) 0:234 'inF0' ( in 3-component vector of float) 0:234 'inF1' ( in 3-component vector of float) 0:235 Sequence 0:235 move second child to first child ( temp 3-component vector of float) 0:235 'r049' ( temp 3-component vector of float) 0:235 normalize ( temp 3-component vector of float) 0:235 'inF0' ( in 3-component vector of float) 0:236 Sequence 0:236 move second child to first child ( temp 3-component vector of float) 0:236 'r050' ( temp 3-component vector of float) 0:236 pow ( temp 3-component vector of float) 0:236 'inF0' ( in 3-component vector of float) 0:236 'inF1' ( in 3-component vector of float) 0:237 Sequence 0:237 move second child to first child ( temp 3-component vector of float) 0:237 'r051' ( temp 3-component vector of float) 0:237 radians ( temp 3-component vector of float) 0:237 'inF0' ( in 3-component vector of float) 0:238 Sequence 0:238 move second child to first child ( temp 3-component vector of float) 0:238 'r052' ( temp 3-component vector of float) 0:238 divide ( temp 3-component vector of float) 0:238 Constant: 0:238 1.000000 0:238 'inF0' ( in 3-component vector of float) 0:239 Sequence 0:239 move second child to first child ( temp 3-component vector of float) 0:239 'r053' ( temp 3-component vector of float) 0:239 reflect ( temp 3-component vector of float) 0:239 'inF0' ( in 3-component vector of float) 0:239 'inF1' ( in 3-component vector of float) 0:240 Sequence 0:240 move second child to first child ( temp 3-component vector of float) 0:240 'r054' ( temp 3-component vector of float) 0:240 refract ( temp 3-component vector of float) 0:240 'inF0' ( in 3-component vector of float) 0:240 'inF1' ( in 3-component vector of float) 0:240 Constant: 0:240 2.000000 0:241 Sequence 0:241 move second child to first child ( temp 3-component vector of uint) 0:241 'r055' ( temp 3-component vector of uint) 0:241 bitFieldReverse ( temp 3-component vector of uint) 0:241 Constant: 0:241 1 (const uint) 0:241 2 (const uint) 0:241 3 (const uint) 0:242 Sequence 0:242 move second child to first child ( temp 3-component vector of float) 0:242 'r056' ( temp 3-component vector of float) 0:242 roundEven ( temp 3-component vector of float) 0:242 'inF0' ( in 3-component vector of float) 0:243 Sequence 0:243 move second child to first child ( temp 3-component vector of float) 0:243 'r057' ( temp 3-component vector of float) 0:243 inverse sqrt ( temp 3-component vector of float) 0:243 'inF0' ( in 3-component vector of float) 0:244 Sequence 0:244 move second child to first child ( temp 3-component vector of float) 0:244 'r058' ( temp 3-component vector of float) 0:244 clamp ( temp 3-component vector of float) 0:244 'inF0' ( in 3-component vector of float) 0:244 Constant: 0:244 0.000000 0:244 Constant: 0:244 1.000000 0:245 Sequence 0:245 move second child to first child ( temp 3-component vector of float) 0:245 'r059' ( temp 3-component vector of float) 0:245 Sign ( temp 3-component vector of float) 0:245 'inF0' ( in 3-component vector of float) 0:246 Sequence 0:246 move second child to first child ( temp 3-component vector of float) 0:246 'r060' ( temp 3-component vector of float) 0:246 sine ( temp 3-component vector of float) 0:246 'inF0' ( in 3-component vector of float) 0:247 Sequence 0:247 move second child to first child ( temp 3-component vector of float) 0:247 'inF1' ( in 3-component vector of float) 0:247 sine ( temp 3-component vector of float) 0:247 'inF0' ( in 3-component vector of float) 0:247 move second child to first child ( temp 3-component vector of float) 0:247 'inF2' ( in 3-component vector of float) 0:247 cosine ( temp 3-component vector of float) 0:247 'inF0' ( in 3-component vector of float) 0:248 Sequence 0:248 move second child to first child ( temp 3-component vector of float) 0:248 'r061' ( temp 3-component vector of float) 0:248 hyp. sine ( temp 3-component vector of float) 0:248 'inF0' ( in 3-component vector of float) 0:249 Sequence 0:249 move second child to first child ( temp 3-component vector of float) 0:249 'r062' ( temp 3-component vector of float) 0:249 smoothstep ( temp 3-component vector of float) 0:249 'inF0' ( in 3-component vector of float) 0:249 'inF1' ( in 3-component vector of float) 0:249 'inF2' ( in 3-component vector of float) 0:250 Sequence 0:250 move second child to first child ( temp 3-component vector of float) 0:250 'r063' ( temp 3-component vector of float) 0:250 sqrt ( temp 3-component vector of float) 0:250 'inF0' ( in 3-component vector of float) 0:251 Sequence 0:251 move second child to first child ( temp 3-component vector of float) 0:251 'r064' ( temp 3-component vector of float) 0:251 step ( temp 3-component vector of float) 0:251 'inF0' ( in 3-component vector of float) 0:251 'inF1' ( in 3-component vector of float) 0:252 Sequence 0:252 move second child to first child ( temp 3-component vector of float) 0:252 'r065' ( temp 3-component vector of float) 0:252 tangent ( temp 3-component vector of float) 0:252 'inF0' ( in 3-component vector of float) 0:253 Sequence 0:253 move second child to first child ( temp 3-component vector of float) 0:253 'r066' ( temp 3-component vector of float) 0:253 hyp. tangent ( temp 3-component vector of float) 0:253 'inF0' ( in 3-component vector of float) 0:255 Sequence 0:255 move second child to first child ( temp 3-component vector of float) 0:255 'r067' ( temp 3-component vector of float) 0:255 trunc ( temp 3-component vector of float) 0:255 'inF0' ( in 3-component vector of float) 0:258 Branch: Return with expression 0:258 Constant: 0:258 1.000000 0:258 2.000000 0:258 3.000000 0:262 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:262 Function Parameters: 0:262 'inF0' ( in 4-component vector of float) 0:262 'inF1' ( in 4-component vector of float) 0:262 'inF2' ( in 4-component vector of float) 0:262 'inU0' ( in 4-component vector of uint) 0:262 'inU1' ( in 4-component vector of uint) 0:? Sequence 0:265 Sequence 0:265 move second child to first child ( temp bool) 0:265 'r000' ( temp bool) 0:265 all ( temp bool) 0:265 Convert float to bool ( temp 4-component vector of bool) 0:265 'inF0' ( in 4-component vector of float) 0:266 Sequence 0:266 move second child to first child ( temp 4-component vector of float) 0:266 'r001' ( temp 4-component vector of float) 0:266 Absolute value ( temp 4-component vector of float) 0:266 'inF0' ( in 4-component vector of float) 0:267 Sequence 0:267 move second child to first child ( temp 4-component vector of float) 0:267 'r002' ( temp 4-component vector of float) 0:267 arc cosine ( temp 4-component vector of float) 0:267 'inF0' ( in 4-component vector of float) 0:268 Sequence 0:268 move second child to first child ( temp bool) 0:268 'r003' ( temp bool) 0:268 any ( temp bool) 0:268 Convert float to bool ( temp 4-component vector of bool) 0:268 'inF0' ( in 4-component vector of float) 0:269 Sequence 0:269 move second child to first child ( temp 4-component vector of float) 0:269 'r004' ( temp 4-component vector of float) 0:269 arc sine ( temp 4-component vector of float) 0:269 'inF0' ( in 4-component vector of float) 0:270 Sequence 0:270 move second child to first child ( temp 4-component vector of int) 0:270 'r005' ( temp 4-component vector of int) 0:270 floatBitsToInt ( temp 4-component vector of int) 0:270 'inF0' ( in 4-component vector of float) 0:271 Sequence 0:271 move second child to first child ( temp 4-component vector of uint) 0:271 'r006' ( temp 4-component vector of uint) 0:271 floatBitsToUint ( temp 4-component vector of uint) 0:271 'inF0' ( in 4-component vector of float) 0:272 Sequence 0:272 move second child to first child ( temp 4-component vector of float) 0:272 'r007' ( temp 4-component vector of float) 0:272 intBitsToFloat ( temp 4-component vector of float) 0:272 'inU0' ( in 4-component vector of uint) 0:274 Sequence 0:274 move second child to first child ( temp 4-component vector of float) 0:274 'r009' ( temp 4-component vector of float) 0:274 arc tangent ( temp 4-component vector of float) 0:274 'inF0' ( in 4-component vector of float) 0:275 Sequence 0:275 move second child to first child ( temp 4-component vector of float) 0:275 'r010' ( temp 4-component vector of float) 0:275 arc tangent ( temp 4-component vector of float) 0:275 'inF0' ( in 4-component vector of float) 0:275 'inF1' ( in 4-component vector of float) 0:276 Sequence 0:276 move second child to first child ( temp 4-component vector of float) 0:276 'r011' ( temp 4-component vector of float) 0:276 Ceiling ( temp 4-component vector of float) 0:276 'inF0' ( in 4-component vector of float) 0:277 Sequence 0:277 move second child to first child ( temp 4-component vector of float) 0:277 'r012' ( temp 4-component vector of float) 0:277 clamp ( temp 4-component vector of float) 0:277 'inF0' ( in 4-component vector of float) 0:277 'inF1' ( in 4-component vector of float) 0:277 'inF2' ( in 4-component vector of float) 0:278 Test condition and select ( temp void) 0:278 Condition 0:278 any ( temp bool) 0:278 Compare Less Than ( temp 4-component vector of bool) 0:278 'inF0' ( in 4-component vector of float) 0:278 Constant: 0:278 0.000000 0:278 0.000000 0:278 0.000000 0:278 0.000000 0:278 true case 0:278 Branch: Kill 0:279 Test condition and select ( temp void) 0:279 Condition 0:279 any ( temp bool) 0:279 Compare Less Than ( temp 4-component vector of bool) 0:279 'inU0' ( in 4-component vector of uint) 0:279 Constant: 0:279 0.000000 0:279 0.000000 0:279 0.000000 0:279 0.000000 0:279 true case 0:279 Branch: Kill 0:280 Sequence 0:280 move second child to first child ( temp 4-component vector of float) 0:280 'r013' ( temp 4-component vector of float) 0:280 cosine ( temp 4-component vector of float) 0:280 'inF0' ( in 4-component vector of float) 0:281 Sequence 0:281 move second child to first child ( temp 4-component vector of float) 0:281 'r014' ( temp 4-component vector of float) 0:281 hyp. cosine ( temp 4-component vector of float) 0:281 'inF0' ( in 4-component vector of float) 0:282 Sequence 0:282 move second child to first child ( temp 4-component vector of uint) 0:282 'r015' ( temp 4-component vector of uint) 0:282 bitCount ( temp 4-component vector of uint) 0:282 Constant: 0:282 7 (const uint) 0:282 3 (const uint) 0:282 5 (const uint) 0:282 2 (const uint) 0:283 Sequence 0:283 move second child to first child ( temp 4-component vector of float) 0:283 'r016' ( temp 4-component vector of float) 0:283 dPdx ( temp 4-component vector of float) 0:283 'inF0' ( in 4-component vector of float) 0:284 Sequence 0:284 move second child to first child ( temp 4-component vector of float) 0:284 'r017' ( temp 4-component vector of float) 0:284 dPdxCoarse ( temp 4-component vector of float) 0:284 'inF0' ( in 4-component vector of float) 0:285 Sequence 0:285 move second child to first child ( temp 4-component vector of float) 0:285 'r018' ( temp 4-component vector of float) 0:285 dPdxFine ( temp 4-component vector of float) 0:285 'inF0' ( in 4-component vector of float) 0:286 Sequence 0:286 move second child to first child ( temp 4-component vector of float) 0:286 'r019' ( temp 4-component vector of float) 0:286 dPdy ( temp 4-component vector of float) 0:286 'inF0' ( in 4-component vector of float) 0:287 Sequence 0:287 move second child to first child ( temp 4-component vector of float) 0:287 'r020' ( temp 4-component vector of float) 0:287 dPdyCoarse ( temp 4-component vector of float) 0:287 'inF0' ( in 4-component vector of float) 0:288 Sequence 0:288 move second child to first child ( temp 4-component vector of float) 0:288 'r021' ( temp 4-component vector of float) 0:288 dPdyFine ( temp 4-component vector of float) 0:288 'inF0' ( in 4-component vector of float) 0:289 Sequence 0:289 move second child to first child ( temp 4-component vector of float) 0:289 'r022' ( temp 4-component vector of float) 0:289 degrees ( temp 4-component vector of float) 0:289 'inF0' ( in 4-component vector of float) 0:290 Sequence 0:290 move second child to first child ( temp float) 0:290 'r023' ( temp float) 0:290 distance ( temp float) 0:290 'inF0' ( in 4-component vector of float) 0:290 'inF1' ( in 4-component vector of float) 0:291 Sequence 0:291 move second child to first child ( temp float) 0:291 'r024' ( temp float) 0:291 dot-product ( temp float) 0:291 'inF0' ( in 4-component vector of float) 0:291 'inF1' ( in 4-component vector of float) 0:292 Sequence 0:292 move second child to first child ( temp 4-component vector of float) 0:292 'r025' ( temp 4-component vector of float) 0:292 Construct vec4 ( temp 4-component vector of float) 0:292 Constant: 0:292 1.000000 0:292 component-wise multiply ( temp float) 0:292 direct index ( temp float) 0:292 'inF0' ( in 4-component vector of float) 0:292 Constant: 0:292 1 (const int) 0:292 direct index ( temp float) 0:292 'inF1' ( in 4-component vector of float) 0:292 Constant: 0:292 1 (const int) 0:292 direct index ( temp float) 0:292 'inF0' ( in 4-component vector of float) 0:292 Constant: 0:292 2 (const int) 0:292 direct index ( temp float) 0:292 'inF1' ( in 4-component vector of float) 0:292 Constant: 0:292 3 (const int) 0:296 Sequence 0:296 move second child to first child ( temp 4-component vector of float) 0:296 'r029' ( temp 4-component vector of float) 0:296 exp ( temp 4-component vector of float) 0:296 'inF0' ( in 4-component vector of float) 0:297 Sequence 0:297 move second child to first child ( temp 4-component vector of float) 0:297 'r030' ( temp 4-component vector of float) 0:297 exp2 ( temp 4-component vector of float) 0:297 'inF0' ( in 4-component vector of float) 0:298 Sequence 0:298 move second child to first child ( temp 4-component vector of float) 0:298 'r031' ( temp 4-component vector of float) 0:298 face-forward ( temp 4-component vector of float) 0:298 'inF0' ( in 4-component vector of float) 0:298 'inF1' ( in 4-component vector of float) 0:298 'inF2' ( in 4-component vector of float) 0:299 Sequence 0:299 move second child to first child ( temp 4-component vector of uint) 0:299 'r032' ( temp 4-component vector of uint) 0:299 findMSB ( temp 4-component vector of uint) 0:299 Constant: 0:299 7 (const uint) 0:299 8 (const uint) 0:299 9 (const uint) 0:299 10 (const uint) 0:300 Sequence 0:300 move second child to first child ( temp 4-component vector of uint) 0:300 'r033' ( temp 4-component vector of uint) 0:300 findLSB ( temp 4-component vector of uint) 0:300 Constant: 0:300 7 (const uint) 0:300 8 (const uint) 0:300 9 (const uint) 0:300 10 (const uint) 0:301 Sequence 0:301 move second child to first child ( temp 4-component vector of float) 0:301 'r034' ( temp 4-component vector of float) 0:301 Floor ( temp 4-component vector of float) 0:301 'inF0' ( in 4-component vector of float) 0:303 Sequence 0:303 move second child to first child ( temp 4-component vector of float) 0:303 'r036' ( temp 4-component vector of float) 0:303 mod ( temp 4-component vector of float) 0:303 'inF0' ( in 4-component vector of float) 0:303 'inF1' ( in 4-component vector of float) 0:304 Sequence 0:304 move second child to first child ( temp 4-component vector of float) 0:304 'r037' ( temp 4-component vector of float) 0:304 Fraction ( temp 4-component vector of float) 0:304 'inF0' ( in 4-component vector of float) 0:305 Sequence 0:305 move second child to first child ( temp 4-component vector of float) 0:305 'r039' ( temp 4-component vector of float) 0:305 fwidth ( temp 4-component vector of float) 0:305 'inF0' ( in 4-component vector of float) 0:306 Sequence 0:306 move second child to first child ( temp 4-component vector of bool) 0:306 'r040' ( temp 4-component vector of bool) 0:306 isinf ( temp 4-component vector of bool) 0:306 'inF0' ( in 4-component vector of float) 0:307 Sequence 0:307 move second child to first child ( temp 4-component vector of bool) 0:307 'r041' ( temp 4-component vector of bool) 0:307 isnan ( temp 4-component vector of bool) 0:307 'inF0' ( in 4-component vector of float) 0:308 Sequence 0:308 move second child to first child ( temp 4-component vector of float) 0:308 'r042' ( temp 4-component vector of float) 0:308 ldexp ( temp 4-component vector of float) 0:308 'inF0' ( in 4-component vector of float) 0:308 'inF1' ( in 4-component vector of float) 0:309 Sequence 0:309 move second child to first child ( temp 4-component vector of float) 0:309 'r039a' ( temp 4-component vector of float) 0:309 mix ( temp 4-component vector of float) 0:309 'inF0' ( in 4-component vector of float) 0:309 'inF1' ( in 4-component vector of float) 0:309 'inF2' ( in 4-component vector of float) 0:310 Sequence 0:310 move second child to first child ( temp float) 0:310 'r043' ( temp float) 0:310 length ( temp float) 0:310 'inF0' ( in 4-component vector of float) 0:311 Sequence 0:311 move second child to first child ( temp 4-component vector of float) 0:311 'r044' ( temp 4-component vector of float) 0:311 log ( temp 4-component vector of float) 0:311 'inF0' ( in 4-component vector of float) 0:312 Sequence 0:312 move second child to first child ( temp 4-component vector of float) 0:312 'r045' ( temp 4-component vector of float) 0:312 vector-scale ( temp 4-component vector of float) 0:312 log2 ( temp 4-component vector of float) 0:312 'inF0' ( in 4-component vector of float) 0:312 Constant: 0:312 0.301030 0:313 Sequence 0:313 move second child to first child ( temp 4-component vector of float) 0:313 'r046' ( temp 4-component vector of float) 0:313 log2 ( temp 4-component vector of float) 0:313 'inF0' ( in 4-component vector of float) 0:314 Sequence 0:314 move second child to first child ( temp 4-component vector of float) 0:314 'r047' ( temp 4-component vector of float) 0:314 max ( temp 4-component vector of float) 0:314 'inF0' ( in 4-component vector of float) 0:314 'inF1' ( in 4-component vector of float) 0:315 Sequence 0:315 move second child to first child ( temp 4-component vector of float) 0:315 'r048' ( temp 4-component vector of float) 0:315 min ( temp 4-component vector of float) 0:315 'inF0' ( in 4-component vector of float) 0:315 'inF1' ( in 4-component vector of float) 0:316 Sequence 0:316 move second child to first child ( temp 4-component vector of float) 0:316 'r049' ( temp 4-component vector of float) 0:316 normalize ( temp 4-component vector of float) 0:316 'inF0' ( in 4-component vector of float) 0:317 Sequence 0:317 move second child to first child ( temp 4-component vector of float) 0:317 'r050' ( temp 4-component vector of float) 0:317 pow ( temp 4-component vector of float) 0:317 'inF0' ( in 4-component vector of float) 0:317 'inF1' ( in 4-component vector of float) 0:318 Sequence 0:318 move second child to first child ( temp 4-component vector of float) 0:318 'r051' ( temp 4-component vector of float) 0:318 radians ( temp 4-component vector of float) 0:318 'inF0' ( in 4-component vector of float) 0:319 Sequence 0:319 move second child to first child ( temp 4-component vector of float) 0:319 'r052' ( temp 4-component vector of float) 0:319 divide ( temp 4-component vector of float) 0:319 Constant: 0:319 1.000000 0:319 'inF0' ( in 4-component vector of float) 0:320 Sequence 0:320 move second child to first child ( temp 4-component vector of float) 0:320 'r053' ( temp 4-component vector of float) 0:320 reflect ( temp 4-component vector of float) 0:320 'inF0' ( in 4-component vector of float) 0:320 'inF1' ( in 4-component vector of float) 0:321 Sequence 0:321 move second child to first child ( temp 4-component vector of float) 0:321 'r054' ( temp 4-component vector of float) 0:321 refract ( temp 4-component vector of float) 0:321 'inF0' ( in 4-component vector of float) 0:321 'inF1' ( in 4-component vector of float) 0:321 Constant: 0:321 2.000000 0:322 Sequence 0:322 move second child to first child ( temp 4-component vector of uint) 0:322 'r055' ( temp 4-component vector of uint) 0:322 bitFieldReverse ( temp 4-component vector of uint) 0:322 Constant: 0:322 1 (const uint) 0:322 2 (const uint) 0:322 3 (const uint) 0:322 4 (const uint) 0:323 Sequence 0:323 move second child to first child ( temp 4-component vector of float) 0:323 'r056' ( temp 4-component vector of float) 0:323 roundEven ( temp 4-component vector of float) 0:323 'inF0' ( in 4-component vector of float) 0:324 Sequence 0:324 move second child to first child ( temp 4-component vector of float) 0:324 'r057' ( temp 4-component vector of float) 0:324 inverse sqrt ( temp 4-component vector of float) 0:324 'inF0' ( in 4-component vector of float) 0:325 Sequence 0:325 move second child to first child ( temp 4-component vector of float) 0:325 'r058' ( temp 4-component vector of float) 0:325 clamp ( temp 4-component vector of float) 0:325 'inF0' ( in 4-component vector of float) 0:325 Constant: 0:325 0.000000 0:325 Constant: 0:325 1.000000 0:326 Sequence 0:326 move second child to first child ( temp 4-component vector of float) 0:326 'r059' ( temp 4-component vector of float) 0:326 Sign ( temp 4-component vector of float) 0:326 'inF0' ( in 4-component vector of float) 0:327 Sequence 0:327 move second child to first child ( temp 4-component vector of float) 0:327 'r060' ( temp 4-component vector of float) 0:327 sine ( temp 4-component vector of float) 0:327 'inF0' ( in 4-component vector of float) 0:328 Sequence 0:328 move second child to first child ( temp 4-component vector of float) 0:328 'inF1' ( in 4-component vector of float) 0:328 sine ( temp 4-component vector of float) 0:328 'inF0' ( in 4-component vector of float) 0:328 move second child to first child ( temp 4-component vector of float) 0:328 'inF2' ( in 4-component vector of float) 0:328 cosine ( temp 4-component vector of float) 0:328 'inF0' ( in 4-component vector of float) 0:329 Sequence 0:329 move second child to first child ( temp 4-component vector of float) 0:329 'r061' ( temp 4-component vector of float) 0:329 hyp. sine ( temp 4-component vector of float) 0:329 'inF0' ( in 4-component vector of float) 0:330 Sequence 0:330 move second child to first child ( temp 4-component vector of float) 0:330 'r062' ( temp 4-component vector of float) 0:330 smoothstep ( temp 4-component vector of float) 0:330 'inF0' ( in 4-component vector of float) 0:330 'inF1' ( in 4-component vector of float) 0:330 'inF2' ( in 4-component vector of float) 0:331 Sequence 0:331 move second child to first child ( temp 4-component vector of float) 0:331 'r063' ( temp 4-component vector of float) 0:331 sqrt ( temp 4-component vector of float) 0:331 'inF0' ( in 4-component vector of float) 0:332 Sequence 0:332 move second child to first child ( temp 4-component vector of float) 0:332 'r064' ( temp 4-component vector of float) 0:332 step ( temp 4-component vector of float) 0:332 'inF0' ( in 4-component vector of float) 0:332 'inF1' ( in 4-component vector of float) 0:333 Sequence 0:333 move second child to first child ( temp 4-component vector of float) 0:333 'r065' ( temp 4-component vector of float) 0:333 tangent ( temp 4-component vector of float) 0:333 'inF0' ( in 4-component vector of float) 0:334 Sequence 0:334 move second child to first child ( temp 4-component vector of float) 0:334 'r066' ( temp 4-component vector of float) 0:334 hyp. tangent ( temp 4-component vector of float) 0:334 'inF0' ( in 4-component vector of float) 0:336 Sequence 0:336 move second child to first child ( temp 4-component vector of float) 0:336 'r067' ( temp 4-component vector of float) 0:336 trunc ( temp 4-component vector of float) 0:336 'inF0' ( in 4-component vector of float) 0:339 Branch: Return with expression 0:339 Constant: 0:339 1.000000 0:339 2.000000 0:339 3.000000 0:339 4.000000 0:402 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) 0:402 Function Parameters: 0:402 'inF0' ( in 2X2 matrix of float) 0:402 'inF1' ( in 2X2 matrix of float) 0:402 'inF2' ( in 2X2 matrix of float) 0:? Sequence 0:404 Sequence 0:404 move second child to first child ( temp bool) 0:404 'r000' ( temp bool) 0:404 all ( temp bool) 0:404 Convert float to bool ( temp 2X2 matrix of bool) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r001' ( temp 2X2 matrix of float) 0:404 Absolute value ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 arc cosine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp bool) 0:404 'r003' ( temp bool) 0:404 any ( temp bool) 0:404 Convert float to bool ( temp 2X2 matrix of bool) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r004' ( temp 2X2 matrix of float) 0:404 arc sine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r005' ( temp 2X2 matrix of float) 0:404 arc tangent ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r006' ( temp 2X2 matrix of float) 0:404 arc tangent ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r007' ( temp 2X2 matrix of float) 0:404 Ceiling ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Test condition and select ( temp void) 0:404 Condition 0:404 any ( temp bool) 0:404 Compare Less Than ( temp 2X2 matrix of bool) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Constant: 0:404 0.000000 0:404 0.000000 0:404 0.000000 0:404 0.000000 0:404 true case 0:404 Branch: Kill 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r008' ( temp 2X2 matrix of float) 0:404 clamp ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 'inF2' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r009' ( temp 2X2 matrix of float) 0:404 cosine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r010' ( temp 2X2 matrix of float) 0:404 hyp. cosine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r011' ( temp 2X2 matrix of float) 0:404 dPdx ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r012' ( temp 2X2 matrix of float) 0:404 dPdxCoarse ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r013' ( temp 2X2 matrix of float) 0:404 dPdxFine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r014' ( temp 2X2 matrix of float) 0:404 dPdy ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r015' ( temp 2X2 matrix of float) 0:404 dPdyCoarse ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r016' ( temp 2X2 matrix of float) 0:404 dPdyFine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r017' ( temp 2X2 matrix of float) 0:404 degrees ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp float) 0:404 'r018' ( temp float) 0:404 determinant ( temp float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r019' ( temp 2X2 matrix of float) 0:404 exp ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'R020' ( temp 2X2 matrix of float) 0:404 exp2 ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r021' ( temp 2X2 matrix of float) 0:404 Floor ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r022' ( temp 2X2 matrix of float) 0:404 mod ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r023' ( temp 2X2 matrix of float) 0:404 Fraction ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r025' ( temp 2X2 matrix of float) 0:404 fwidth ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r026' ( temp 2X2 matrix of float) 0:404 ldexp ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r026a' ( temp 2X2 matrix of float) 0:404 mix ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 'inF2' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r027' ( temp 2X2 matrix of float) 0:404 log ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r028' ( temp 2X2 matrix of float) 0:404 matrix-scale ( temp 2X2 matrix of float) 0:404 log2 ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Constant: 0:404 0.301030 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r029' ( temp 2X2 matrix of float) 0:404 log2 ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r030' ( temp 2X2 matrix of float) 0:404 max ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r031' ( temp 2X2 matrix of float) 0:404 min ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r032' ( temp 2X2 matrix of float) 0:404 pow ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r033' ( temp 2X2 matrix of float) 0:404 radians ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r034' ( temp 2X2 matrix of float) 0:404 roundEven ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r035' ( temp 2X2 matrix of float) 0:404 inverse sqrt ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r036' ( temp 2X2 matrix of float) 0:404 clamp ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Constant: 0:404 0.000000 0:404 Constant: 0:404 1.000000 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r037' ( temp 2X2 matrix of float) 0:404 Sign ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r038' ( temp 2X2 matrix of float) 0:404 sine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 sine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'inF2' ( in 2X2 matrix of float) 0:404 cosine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r039' ( temp 2X2 matrix of float) 0:404 hyp. sine ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r049' ( temp 2X2 matrix of float) 0:404 smoothstep ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 'inF2' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r041' ( temp 2X2 matrix of float) 0:404 sqrt ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r042' ( temp 2X2 matrix of float) 0:404 step ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 'inF1' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r043' ( temp 2X2 matrix of float) 0:404 tangent ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r044' ( temp 2X2 matrix of float) 0:404 hyp. tangent ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 transpose ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:404 Sequence 0:404 move second child to first child ( temp 2X2 matrix of float) 0:404 'r046' ( temp 2X2 matrix of float) 0:404 trunc ( temp 2X2 matrix of float) 0:404 'inF0' ( in 2X2 matrix of float) 0:407 Branch: Return with expression 0:407 Constant: 0:407 2.000000 0:407 2.000000 0:407 2.000000 0:407 2.000000 0:411 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) 0:411 Function Parameters: 0:411 'inF0' ( in 3X3 matrix of float) 0:411 'inF1' ( in 3X3 matrix of float) 0:411 'inF2' ( in 3X3 matrix of float) 0:? Sequence 0:413 Sequence 0:413 move second child to first child ( temp bool) 0:413 'r000' ( temp bool) 0:413 all ( temp bool) 0:413 Convert float to bool ( temp 3X3 matrix of bool) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r001' ( temp 3X3 matrix of float) 0:413 Absolute value ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 arc cosine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp bool) 0:413 'r003' ( temp bool) 0:413 any ( temp bool) 0:413 Convert float to bool ( temp 3X3 matrix of bool) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r004' ( temp 3X3 matrix of float) 0:413 arc sine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r005' ( temp 3X3 matrix of float) 0:413 arc tangent ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r006' ( temp 3X3 matrix of float) 0:413 arc tangent ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r007' ( temp 3X3 matrix of float) 0:413 Ceiling ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Test condition and select ( temp void) 0:413 Condition 0:413 any ( temp bool) 0:413 Compare Less Than ( temp 3X3 matrix of bool) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Constant: 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 0.000000 0:413 true case 0:413 Branch: Kill 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r008' ( temp 3X3 matrix of float) 0:413 clamp ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 'inF2' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r009' ( temp 3X3 matrix of float) 0:413 cosine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r010' ( temp 3X3 matrix of float) 0:413 hyp. cosine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r011' ( temp 3X3 matrix of float) 0:413 dPdx ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r012' ( temp 3X3 matrix of float) 0:413 dPdxCoarse ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r013' ( temp 3X3 matrix of float) 0:413 dPdxFine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r014' ( temp 3X3 matrix of float) 0:413 dPdy ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r015' ( temp 3X3 matrix of float) 0:413 dPdyCoarse ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r016' ( temp 3X3 matrix of float) 0:413 dPdyFine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r017' ( temp 3X3 matrix of float) 0:413 degrees ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp float) 0:413 'r018' ( temp float) 0:413 determinant ( temp float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r019' ( temp 3X3 matrix of float) 0:413 exp ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'R020' ( temp 3X3 matrix of float) 0:413 exp2 ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r021' ( temp 3X3 matrix of float) 0:413 Floor ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r022' ( temp 3X3 matrix of float) 0:413 mod ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r023' ( temp 3X3 matrix of float) 0:413 Fraction ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r025' ( temp 3X3 matrix of float) 0:413 fwidth ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r026' ( temp 3X3 matrix of float) 0:413 ldexp ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r026a' ( temp 3X3 matrix of float) 0:413 mix ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 'inF2' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r027' ( temp 3X3 matrix of float) 0:413 log ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r028' ( temp 3X3 matrix of float) 0:413 matrix-scale ( temp 3X3 matrix of float) 0:413 log2 ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Constant: 0:413 0.301030 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r029' ( temp 3X3 matrix of float) 0:413 log2 ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r030' ( temp 3X3 matrix of float) 0:413 max ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r031' ( temp 3X3 matrix of float) 0:413 min ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r032' ( temp 3X3 matrix of float) 0:413 pow ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r033' ( temp 3X3 matrix of float) 0:413 radians ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r034' ( temp 3X3 matrix of float) 0:413 roundEven ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r035' ( temp 3X3 matrix of float) 0:413 inverse sqrt ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r036' ( temp 3X3 matrix of float) 0:413 clamp ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Constant: 0:413 0.000000 0:413 Constant: 0:413 1.000000 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r037' ( temp 3X3 matrix of float) 0:413 Sign ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r038' ( temp 3X3 matrix of float) 0:413 sine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 sine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'inF2' ( in 3X3 matrix of float) 0:413 cosine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r039' ( temp 3X3 matrix of float) 0:413 hyp. sine ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r049' ( temp 3X3 matrix of float) 0:413 smoothstep ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 'inF2' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r041' ( temp 3X3 matrix of float) 0:413 sqrt ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r042' ( temp 3X3 matrix of float) 0:413 step ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 'inF1' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r043' ( temp 3X3 matrix of float) 0:413 tangent ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r044' ( temp 3X3 matrix of float) 0:413 hyp. tangent ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 transpose ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X3 matrix of float) 0:413 'r046' ( temp 3X3 matrix of float) 0:413 trunc ( temp 3X3 matrix of float) 0:413 'inF0' ( in 3X3 matrix of float) 0:416 Branch: Return with expression 0:416 Constant: 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:416 3.000000 0:420 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) 0:420 Function Parameters: 0:420 'inF0' ( in 4X4 matrix of float) 0:420 'inF1' ( in 4X4 matrix of float) 0:420 'inF2' ( in 4X4 matrix of float) 0:? Sequence 0:422 Sequence 0:422 move second child to first child ( temp bool) 0:422 'r000' ( temp bool) 0:422 all ( temp bool) 0:422 Convert float to bool ( temp 4X4 matrix of bool) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r001' ( temp 4X4 matrix of float) 0:422 Absolute value ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 arc cosine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp bool) 0:422 'r003' ( temp bool) 0:422 any ( temp bool) 0:422 Convert float to bool ( temp 4X4 matrix of bool) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r004' ( temp 4X4 matrix of float) 0:422 arc sine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r005' ( temp 4X4 matrix of float) 0:422 arc tangent ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r006' ( temp 4X4 matrix of float) 0:422 arc tangent ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r007' ( temp 4X4 matrix of float) 0:422 Ceiling ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Test condition and select ( temp void) 0:422 Condition 0:422 any ( temp bool) 0:422 Compare Less Than ( temp 4X4 matrix of bool) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Constant: 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 0.000000 0:422 true case 0:422 Branch: Kill 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r008' ( temp 4X4 matrix of float) 0:422 clamp ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 'inF2' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r009' ( temp 4X4 matrix of float) 0:422 cosine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r010' ( temp 4X4 matrix of float) 0:422 hyp. cosine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r011' ( temp 4X4 matrix of float) 0:422 dPdx ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r012' ( temp 4X4 matrix of float) 0:422 dPdxCoarse ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r013' ( temp 4X4 matrix of float) 0:422 dPdxFine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r014' ( temp 4X4 matrix of float) 0:422 dPdy ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r015' ( temp 4X4 matrix of float) 0:422 dPdyCoarse ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r016' ( temp 4X4 matrix of float) 0:422 dPdyFine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r017' ( temp 4X4 matrix of float) 0:422 degrees ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp float) 0:422 'r018' ( temp float) 0:422 determinant ( temp float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r019' ( temp 4X4 matrix of float) 0:422 exp ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'R020' ( temp 4X4 matrix of float) 0:422 exp2 ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r021' ( temp 4X4 matrix of float) 0:422 Floor ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r022' ( temp 4X4 matrix of float) 0:422 mod ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r023' ( temp 4X4 matrix of float) 0:422 Fraction ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r025' ( temp 4X4 matrix of float) 0:422 fwidth ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r026' ( temp 4X4 matrix of float) 0:422 ldexp ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r026a' ( temp 4X4 matrix of float) 0:422 mix ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 'inF2' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r027' ( temp 4X4 matrix of float) 0:422 log ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r028' ( temp 4X4 matrix of float) 0:422 matrix-scale ( temp 4X4 matrix of float) 0:422 log2 ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Constant: 0:422 0.301030 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r029' ( temp 4X4 matrix of float) 0:422 log2 ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r030' ( temp 4X4 matrix of float) 0:422 max ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r031' ( temp 4X4 matrix of float) 0:422 min ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r032' ( temp 4X4 matrix of float) 0:422 pow ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r033' ( temp 4X4 matrix of float) 0:422 radians ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r034' ( temp 4X4 matrix of float) 0:422 roundEven ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r035' ( temp 4X4 matrix of float) 0:422 inverse sqrt ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r036' ( temp 4X4 matrix of float) 0:422 clamp ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Constant: 0:422 0.000000 0:422 Constant: 0:422 1.000000 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r037' ( temp 4X4 matrix of float) 0:422 Sign ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r038' ( temp 4X4 matrix of float) 0:422 sine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 sine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'inF2' ( in 4X4 matrix of float) 0:422 cosine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r039' ( temp 4X4 matrix of float) 0:422 hyp. sine ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r049' ( temp 4X4 matrix of float) 0:422 smoothstep ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 'inF2' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r041' ( temp 4X4 matrix of float) 0:422 sqrt ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r042' ( temp 4X4 matrix of float) 0:422 step ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 'inF1' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r043' ( temp 4X4 matrix of float) 0:422 tangent ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r044' ( temp 4X4 matrix of float) 0:422 hyp. tangent ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 transpose ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:422 Sequence 0:422 move second child to first child ( temp 4X4 matrix of float) 0:422 'r046' ( temp 4X4 matrix of float) 0:422 trunc ( temp 4X4 matrix of float) 0:422 'inF0' ( in 4X4 matrix of float) 0:425 Branch: Return with expression 0:425 Constant: 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:425 4.000000 0:443 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void) 0:443 Function Parameters: 0:443 'inF0' ( in float) 0:443 'inF1' ( in float) 0:443 'inFV0' ( in 2-component vector of float) 0:443 'inFV1' ( in 2-component vector of float) 0:443 'inFM0' ( in 2X2 matrix of float) 0:443 'inFM1' ( in 2X2 matrix of float) 0:? Sequence 0:444 Sequence 0:444 move second child to first child ( temp float) 0:444 'r0' ( temp float) 0:444 component-wise multiply ( temp float) 0:444 'inF1' ( in float) 0:444 'inF0' ( in float) 0:444 Sequence 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'r1' ( temp 2-component vector of float) 0:444 vector-scale ( temp 2-component vector of float) 0:444 'inF0' ( in float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 Sequence 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'r2' ( temp 2-component vector of float) 0:444 vector-scale ( temp 2-component vector of float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 'inF0' ( in float) 0:444 Sequence 0:444 move second child to first child ( temp float) 0:444 'r3' ( temp float) 0:444 dot-product ( temp float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 'inFV1' ( in 2-component vector of float) 0:444 Sequence 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'r4' ( temp 2-component vector of float) 0:444 vector-times-matrix ( temp 2-component vector of float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:444 Sequence 0:444 move second child to first child ( temp 2-component vector of float) 0:444 'r5' ( temp 2-component vector of float) 0:444 matrix-times-vector ( temp 2-component vector of float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:444 'inFV0' ( in 2-component vector of float) 0:444 Sequence 0:444 move second child to first child ( temp 2X2 matrix of float) 0:444 'r6' ( temp 2X2 matrix of float) 0:444 matrix-scale ( temp 2X2 matrix of float) 0:444 'inF0' ( in float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:444 Sequence 0:444 move second child to first child ( temp 2X2 matrix of float) 0:444 'r7' ( temp 2X2 matrix of float) 0:444 matrix-scale ( temp 2X2 matrix of float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:444 'inF0' ( in float) 0:444 Sequence 0:444 move second child to first child ( temp 2X2 matrix of float) 0:444 'r8' ( temp 2X2 matrix of float) 0:444 matrix-multiply ( temp 2X2 matrix of float) 0:444 'inFM1' ( in 2X2 matrix of float) 0:444 'inFM0' ( in 2X2 matrix of float) 0:450 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void) 0:450 Function Parameters: 0:450 'inF0' ( in float) 0:450 'inF1' ( in float) 0:450 'inFV0' ( in 3-component vector of float) 0:450 'inFV1' ( in 3-component vector of float) 0:450 'inFM0' ( in 3X3 matrix of float) 0:450 'inFM1' ( in 3X3 matrix of float) 0:? Sequence 0:451 Sequence 0:451 move second child to first child ( temp float) 0:451 'r0' ( temp float) 0:451 component-wise multiply ( temp float) 0:451 'inF1' ( in float) 0:451 'inF0' ( in float) 0:451 Sequence 0:451 move second child to first child ( temp 3-component vector of float) 0:451 'r1' ( temp 3-component vector of float) 0:451 vector-scale ( temp 3-component vector of float) 0:451 'inF0' ( in float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 Sequence 0:451 move second child to first child ( temp 3-component vector of float) 0:451 'r2' ( temp 3-component vector of float) 0:451 vector-scale ( temp 3-component vector of float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 'inF0' ( in float) 0:451 Sequence 0:451 move second child to first child ( temp float) 0:451 'r3' ( temp float) 0:451 dot-product ( temp float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 'inFV1' ( in 3-component vector of float) 0:451 Sequence 0:451 move second child to first child ( temp 3-component vector of float) 0:451 'r4' ( temp 3-component vector of float) 0:451 vector-times-matrix ( temp 3-component vector of float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:451 Sequence 0:451 move second child to first child ( temp 3-component vector of float) 0:451 'r5' ( temp 3-component vector of float) 0:451 matrix-times-vector ( temp 3-component vector of float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:451 'inFV0' ( in 3-component vector of float) 0:451 Sequence 0:451 move second child to first child ( temp 3X3 matrix of float) 0:451 'r6' ( temp 3X3 matrix of float) 0:451 matrix-scale ( temp 3X3 matrix of float) 0:451 'inF0' ( in float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:451 Sequence 0:451 move second child to first child ( temp 3X3 matrix of float) 0:451 'r7' ( temp 3X3 matrix of float) 0:451 matrix-scale ( temp 3X3 matrix of float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:451 'inF0' ( in float) 0:451 Sequence 0:451 move second child to first child ( temp 3X3 matrix of float) 0:451 'r8' ( temp 3X3 matrix of float) 0:451 matrix-multiply ( temp 3X3 matrix of float) 0:451 'inFM1' ( in 3X3 matrix of float) 0:451 'inFM0' ( in 3X3 matrix of float) 0:457 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void) 0:457 Function Parameters: 0:457 'inF0' ( in float) 0:457 'inF1' ( in float) 0:457 'inFV0' ( in 4-component vector of float) 0:457 'inFV1' ( in 4-component vector of float) 0:457 'inFM0' ( in 4X4 matrix of float) 0:457 'inFM1' ( in 4X4 matrix of float) 0:? Sequence 0:458 Sequence 0:458 move second child to first child ( temp float) 0:458 'r0' ( temp float) 0:458 component-wise multiply ( temp float) 0:458 'inF1' ( in float) 0:458 'inF0' ( in float) 0:458 Sequence 0:458 move second child to first child ( temp 4-component vector of float) 0:458 'r1' ( temp 4-component vector of float) 0:458 vector-scale ( temp 4-component vector of float) 0:458 'inF0' ( in float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 Sequence 0:458 move second child to first child ( temp 4-component vector of float) 0:458 'r2' ( temp 4-component vector of float) 0:458 vector-scale ( temp 4-component vector of float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 'inF0' ( in float) 0:458 Sequence 0:458 move second child to first child ( temp float) 0:458 'r3' ( temp float) 0:458 dot-product ( temp float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 'inFV1' ( in 4-component vector of float) 0:458 Sequence 0:458 move second child to first child ( temp 4-component vector of float) 0:458 'r4' ( temp 4-component vector of float) 0:458 vector-times-matrix ( temp 4-component vector of float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:458 Sequence 0:458 move second child to first child ( temp 4-component vector of float) 0:458 'r5' ( temp 4-component vector of float) 0:458 matrix-times-vector ( temp 4-component vector of float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:458 'inFV0' ( in 4-component vector of float) 0:458 Sequence 0:458 move second child to first child ( temp 4X4 matrix of float) 0:458 'r6' ( temp 4X4 matrix of float) 0:458 matrix-scale ( temp 4X4 matrix of float) 0:458 'inF0' ( in float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:458 Sequence 0:458 move second child to first child ( temp 4X4 matrix of float) 0:458 'r7' ( temp 4X4 matrix of float) 0:458 matrix-scale ( temp 4X4 matrix of float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:458 'inF0' ( in float) 0:458 Sequence 0:458 move second child to first child ( temp 4X4 matrix of float) 0:458 'r8' ( temp 4X4 matrix of float) 0:458 matrix-multiply ( temp 4X4 matrix of float) 0:458 'inFM1' ( in 4X4 matrix of float) 0:458 'inFM0' ( in 4X4 matrix of float) 0:467 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void) 0:467 Function Parameters: 0:467 'inF0' ( in float) 0:467 'inF1' ( in float) 0:467 'inFV2' ( in 2-component vector of float) 0:467 'inFV3' ( in 3-component vector of float) 0:467 'inFM2x3' ( in 2X3 matrix of float) 0:467 'inFM3x2' ( in 3X2 matrix of float) 0:467 'inFM3x3' ( in 3X3 matrix of float) 0:467 'inFM3x4' ( in 3X4 matrix of float) 0:467 'inFM2x4' ( in 2X4 matrix of float) 0:? Sequence 0:468 Sequence 0:468 move second child to first child ( temp float) 0:468 'r00' ( temp float) 0:468 component-wise multiply ( temp float) 0:468 'inF1' ( in float) 0:468 'inF0' ( in float) 0:469 Sequence 0:469 move second child to first child ( temp 2-component vector of float) 0:469 'r01' ( temp 2-component vector of float) 0:469 vector-scale ( temp 2-component vector of float) 0:469 'inF0' ( in float) 0:469 'inFV2' ( in 2-component vector of float) 0:470 Sequence 0:470 move second child to first child ( temp 3-component vector of float) 0:470 'r02' ( temp 3-component vector of float) 0:470 vector-scale ( temp 3-component vector of float) 0:470 'inF0' ( in float) 0:470 'inFV3' ( in 3-component vector of float) 0:471 Sequence 0:471 move second child to first child ( temp 2-component vector of float) 0:471 'r03' ( temp 2-component vector of float) 0:471 vector-scale ( temp 2-component vector of float) 0:471 'inFV2' ( in 2-component vector of float) 0:471 'inF0' ( in float) 0:472 Sequence 0:472 move second child to first child ( temp 3-component vector of float) 0:472 'r04' ( temp 3-component vector of float) 0:472 vector-scale ( temp 3-component vector of float) 0:472 'inFV3' ( in 3-component vector of float) 0:472 'inF0' ( in float) 0:473 Sequence 0:473 move second child to first child ( temp float) 0:473 'r05' ( temp float) 0:473 dot-product ( temp float) 0:473 'inFV2' ( in 2-component vector of float) 0:473 'inFV2' ( in 2-component vector of float) 0:474 Sequence 0:474 move second child to first child ( temp float) 0:474 'r06' ( temp float) 0:474 dot-product ( temp float) 0:474 'inFV3' ( in 3-component vector of float) 0:474 'inFV3' ( in 3-component vector of float) 0:475 Sequence 0:475 move second child to first child ( temp 3-component vector of float) 0:475 'r07' ( temp 3-component vector of float) 0:475 matrix-times-vector ( temp 3-component vector of float) 0:475 'inFM2x3' ( in 2X3 matrix of float) 0:475 'inFV2' ( in 2-component vector of float) 0:476 Sequence 0:476 move second child to first child ( temp 2-component vector of float) 0:476 'r08' ( temp 2-component vector of float) 0:476 matrix-times-vector ( temp 2-component vector of float) 0:476 'inFM3x2' ( in 3X2 matrix of float) 0:476 'inFV3' ( in 3-component vector of float) 0:477 Sequence 0:477 move second child to first child ( temp 2-component vector of float) 0:477 'r09' ( temp 2-component vector of float) 0:477 vector-times-matrix ( temp 2-component vector of float) 0:477 'inFV3' ( in 3-component vector of float) 0:477 'inFM2x3' ( in 2X3 matrix of float) 0:478 Sequence 0:478 move second child to first child ( temp 3-component vector of float) 0:478 'r10' ( temp 3-component vector of float) 0:478 vector-times-matrix ( temp 3-component vector of float) 0:478 'inFV2' ( in 2-component vector of float) 0:478 'inFM3x2' ( in 3X2 matrix of float) 0:479 Sequence 0:479 move second child to first child ( temp 2X3 matrix of float) 0:479 'r11' ( temp 2X3 matrix of float) 0:479 matrix-scale ( temp 2X3 matrix of float) 0:479 'inF0' ( in float) 0:479 'inFM2x3' ( in 2X3 matrix of float) 0:480 Sequence 0:480 move second child to first child ( temp 3X2 matrix of float) 0:480 'r12' ( temp 3X2 matrix of float) 0:480 matrix-scale ( temp 3X2 matrix of float) 0:480 'inF0' ( in float) 0:480 'inFM3x2' ( in 3X2 matrix of float) 0:481 Sequence 0:481 move second child to first child ( temp 2X2 matrix of float) 0:481 'r13' ( temp 2X2 matrix of float) 0:481 matrix-multiply ( temp 2X2 matrix of float) 0:481 'inFM3x2' ( in 3X2 matrix of float) 0:481 'inFM2x3' ( in 2X3 matrix of float) 0:482 Sequence 0:482 move second child to first child ( temp 2X3 matrix of float) 0:482 'r14' ( temp 2X3 matrix of float) 0:482 matrix-multiply ( temp 2X3 matrix of float) 0:482 'inFM3x3' ( in 3X3 matrix of float) 0:482 'inFM2x3' ( in 2X3 matrix of float) 0:483 Sequence 0:483 move second child to first child ( temp 2X4 matrix of float) 0:483 'r15' ( temp 2X4 matrix of float) 0:483 matrix-multiply ( temp 2X4 matrix of float) 0:483 'inFM3x4' ( in 3X4 matrix of float) 0:483 'inFM2x3' ( in 2X3 matrix of float) 0:484 Sequence 0:484 move second child to first child ( temp 3X4 matrix of float) 0:484 'r16' ( temp 3X4 matrix of float) 0:484 matrix-multiply ( temp 3X4 matrix of float) 0:484 'inFM2x4' ( in 2X4 matrix of float) 0:484 'inFM3x2' ( in 3X2 matrix of float) 0:490 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:490 Function Parameters: 0:? Sequence 0:492 move second child to first child ( temp 4-component vector of float) 0:492 color: direct index for structure ( temp 4-component vector of float) 0:492 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:492 Constant: 0:492 0 (const int) 0:492 Constant: 0:492 1.000000 0:492 1.000000 0:492 1.000000 0:492 1.000000 0:493 Branch: Return with expression 0:493 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:490 Function Definition: main( ( temp void) 0:490 Function Parameters: 0:? Sequence 0:490 Sequence 0:490 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:490 color: direct index for structure ( temp 4-component vector of float) 0:490 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:490 Constant: 0:490 0 (const int) 0:? Linker Objects 0:? 'gs_ua' ( shared uint) 0:? 'gs_ub' ( shared uint) 0:? 'gs_uc' ( shared uint) 0:? 'gs_ua2' ( shared 2-component vector of uint) 0:? 'gs_ub2' ( shared 2-component vector of uint) 0:? 'gs_uc2' ( shared 2-component vector of uint) 0:? 'gs_ua3' ( shared 3-component vector of uint) 0:? 'gs_ub3' ( shared 3-component vector of uint) 0:? 'gs_uc3' ( shared 3-component vector of uint) 0:? 'gs_ua4' ( shared 4-component vector of uint) 0:? 'gs_ub4' ( shared 4-component vector of uint) 0:? 'gs_uc4' ( shared 4-component vector of uint) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 1839 Capability Shader Capability DerivativeControl 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 1820 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 18 "PixelShaderFunctionS(f1;f1;f1;u1;i1;" Name 13 "inF0" Name 14 "inF1" Name 15 "inF2" Name 16 "inU0" Name 17 "inU1" Name 24 "PixelShaderFunction1(vf1;vf1;vf1;" Name 21 "inF0" Name 22 "inF1" Name 23 "inF2" Name 36 "PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2;" Name 31 "inF0" Name 32 "inF1" Name 33 "inF2" Name 34 "inU0" Name 35 "inU1" Name 48 "PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;" Name 43 "inF0" Name 44 "inF1" Name 45 "inF2" Name 46 "inU0" Name 47 "inU1" Name 60 "PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;" Name 55 "inF0" Name 56 "inF1" Name 57 "inF2" Name 58 "inU0" Name 59 "inU1" Name 68 "PixelShaderFunction2x2(mf22;mf22;mf22;" Name 65 "inF0" Name 66 "inF1" Name 67 "inF2" Name 76 "PixelShaderFunction3x3(mf33;mf33;mf33;" Name 73 "inF0" Name 74 "inF1" Name 75 "inF2" Name 84 "PixelShaderFunction4x4(mf44;mf44;mf44;" Name 81 "inF0" Name 82 "inF1" Name 83 "inF2" Name 93 "TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;" Name 87 "inF0" Name 88 "inF1" Name 89 "inFV0" Name 90 "inFV1" Name 91 "inFM0" Name 92 "inFM1" Name 102 "TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;" Name 96 "inF0" Name 97 "inF1" Name 98 "inFV0" Name 99 "inFV1" Name 100 "inFM0" Name 101 "inFM1" Name 111 "TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;" Name 105 "inF0" Name 106 "inF1" Name 107 "inFV0" Name 108 "inFV1" Name 109 "inFM0" Name 110 "inFM1" Name 131 "TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;" Name 122 "inF0" Name 123 "inF1" Name 124 "inFV2" Name 125 "inFV3" Name 126 "inFM2x3" Name 127 "inFM3x2" Name 128 "inFM3x3" Name 129 "inFM3x4" Name 130 "inFM2x4" Name 133 "PS_OUTPUT" MemberName 133(PS_OUTPUT) 0 "color" Name 135 "@main(" Name 139 "r000" Name 144 "r001" Name 147 "r002" Name 150 "r003" Name 154 "r004" Name 157 "r005" Name 160 "r006" Name 163 "r007" Name 166 "r009" Name 169 "r010" Name 173 "r011" Name 176 "r012" Name 192 "r014" Name 195 "r015" Name 198 "r016" Name 201 "r017" Name 204 "r018" Name 207 "r019" Name 210 "r020" Name 213 "r021" Name 216 "r022" Name 219 "r023" Name 222 "r024" Name 226 "r027" Name 229 "r028" Name 232 "r029" Name 235 "r030" Name 238 "r031" Name 241 "r033" Name 245 "r033i" Name 249 "r034" Name 252 "r036" Name 255 "r037" Name 258 "r038" Name 261 "r039" Name 265 "r039a" Name 270 "r040" Name 273 "r041" Name 278 "r042" Name 281 "r043" Name 285 "r044" Name 289 "r045" Name 293 "r046" Name 296 "r047" Name 300 "r048" Name 304 "r049" Name 307 "r050" Name 310 "r051" Name 313 "r052" Name 316 "r053" Name 323 "r055" Name 326 "r056" Name 331 "r057" Name 334 "r058" Name 338 "r059" Name 341 "r060" Name 344 "r061" Name 351 "r000" Name 357 "r001" Name 360 "r002" Name 363 "r003" Name 367 "r004" Name 372 "r005" Name 375 "r006" Name 378 "r007" Name 381 "r009" Name 384 "r010" Name 388 "r011" Name 391 "r012" Name 410 "r013" Name 413 "r015" Name 416 "r016" Name 420 "r017" Name 423 "r018" Name 426 "r019" Name 429 "r020" Name 432 "r021" Name 435 "r022" Name 438 "r023" Name 441 "r026" Name 445 "r027" Name 449 "r028" Name 452 "r029" Name 455 "r030" Name 460 "r031" Name 465 "r032" Name 467 "r033" Name 470 "r035" Name 474 "r036" Name 477 "r038" Name 481 "r039" Name 484 "r040" Name 487 "r041" Name 491 "r039a" Name 496 "r042" Name 499 "r043" Name 502 "r044" Name 506 "r045" Name 509 "r046" Name 513 "r047" Name 517 "r048" Name 520 "r049" Name 524 "r050" Name 527 "r051" Name 531 "r052" Name 535 "r053" Name 539 "r054" Name 544 "r055" Name 547 "r056" Name 550 "r057" Name 555 "r058" Name 558 "r059" Name 565 "r060" Name 568 "r061" Name 573 "r062" Name 576 "r063" Name 580 "r064" Name 583 "r065" Name 586 "r066" Name 592 "r000" Name 598 "r001" Name 601 "r002" Name 604 "r003" Name 608 "r004" Name 613 "r005" Name 616 "r006" Name 619 "r007" Name 622 "r009" Name 625 "r010" Name 629 "r011" Name 632 "r012" Name 650 "r013" Name 653 "r014" Name 656 "r015" Name 661 "r016" Name 665 "r017" Name 668 "r018" Name 671 "r019" Name 674 "r020" Name 677 "r021" Name 680 "r022" Name 683 "r023" Name 686 "r024" Name 690 "r025" Name 694 "r029" Name 697 "r030" Name 700 "r031" Name 705 "r032" Name 709 "r033" Name 711 "r034" Name 714 "r036" Name 718 "r037" Name 721 "r039" Name 725 "r040" Name 728 "r041" Name 731 "r042" Name 735 "r039a" Name 740 "r039b" Name 746 "r043" Name 749 "r044" Name 752 "r045" Name 756 "r046" Name 759 "r047" Name 763 "r048" Name 767 "r049" Name 770 "r050" Name 774 "r051" Name 777 "r052" Name 781 "r053" Name 785 "r054" Name 789 "r055" Name 792 "r056" Name 795 "r057" Name 798 "r058" Name 803 "r059" Name 806 "r060" Name 813 "r061" Name 816 "r062" Name 821 "r063" Name 824 "r064" Name 828 "r065" Name 831 "r066" Name 834 "r067" Name 841 "r000" Name 847 "r001" Name 850 "r002" Name 853 "r003" Name 857 "r004" Name 862 "r005" Name 865 "r006" Name 868 "r007" Name 871 "r009" Name 874 "r010" Name 878 "r011" Name 881 "r012" Name 899 "r013" Name 902 "r014" Name 905 "r015" Name 908 "r016" Name 911 "r017" Name 914 "r018" Name 917 "r019" Name 920 "r020" Name 923 "r021" Name 926 "r022" Name 929 "r023" Name 933 "r024" Name 937 "r025" Name 948 "r029" Name 951 "r030" Name 954 "r031" Name 959 "r032" Name 964 "r033" Name 966 "r034" Name 969 "r036" Name 973 "r037" Name 976 "r039" Name 980 "r040" Name 983 "r041" Name 986 "r042" Name 990 "r039a" Name 995 "r043" Name 998 "r044" Name 1001 "r045" Name 1005 "r046" Name 1008 "r047" Name 1012 "r048" Name 1016 "r049" Name 1019 "r050" Name 1023 "r051" Name 1026 "r052" Name 1030 "r053" Name 1034 "r054" Name 1038 "r055" Name 1041 "r056" Name 1044 "r057" Name 1047 "r058" Name 1052 "r059" Name 1055 "r060" Name 1062 "r061" Name 1065 "r062" Name 1070 "r063" Name 1073 "r064" Name 1077 "r065" Name 1080 "r066" Name 1083 "r067" Name 1090 "r000" Name 1095 "r001" Name 1100 "r003" Name 1104 "r004" Name 1107 "r005" Name 1110 "r006" Name 1114 "r007" Name 1124 "r008" Name 1129 "r009" Name 1132 "r010" Name 1135 "r011" Name 1138 "r012" Name 1141 "r013" Name 1144 "r014" Name 1147 "r015" Name 1150 "r016" Name 1153 "r017" Name 1156 "r018" Name 1159 "r019" Name 1162 "R020" Name 1165 "r021" Name 1168 "r022" Name 1178 "r023" Name 1181 "r025" Name 1184 "r026" Name 1188 "r026a" Name 1193 "r027" Name 1196 "r028" Name 1200 "r029" Name 1203 "r030" Name 1207 "r031" Name 1211 "r032" Name 1215 "r033" Name 1218 "r034" Name 1221 "r035" Name 1224 "r036" Name 1229 "r037" Name 1232 "r038" Name 1239 "r039" Name 1242 "r049" Name 1247 "r041" Name 1250 "r042" Name 1254 "r043" Name 1257 "r044" Name 1262 "r046" Name 1269 "r000" Name 1274 "r001" Name 1279 "r003" Name 1283 "r004" Name 1286 "r005" Name 1289 "r006" Name 1293 "r007" Name 1303 "r008" Name 1308 "r009" Name 1311 "r010" Name 1314 "r011" Name 1317 "r012" Name 1320 "r013" Name 1323 "r014" Name 1326 "r015" Name 1329 "r016" Name 1332 "r017" Name 1335 "r018" Name 1338 "r019" Name 1341 "R020" Name 1344 "r021" Name 1347 "r022" Name 1360 "r023" Name 1363 "r025" Name 1366 "r026" Name 1370 "r026a" Name 1375 "r027" Name 1378 "r028" Name 1382 "r029" Name 1385 "r030" Name 1389 "r031" Name 1393 "r032" Name 1397 "r033" Name 1400 "r034" Name 1403 "r035" Name 1406 "r036" Name 1411 "r037" Name 1414 "r038" Name 1421 "r039" Name 1424 "r049" Name 1429 "r041" Name 1432 "r042" Name 1436 "r043" Name 1439 "r044" Name 1444 "r046" Name 1451 "r000" Name 1456 "r001" Name 1461 "r003" Name 1465 "r004" Name 1468 "r005" Name 1471 "r006" Name 1475 "r007" Name 1485 "r008" Name 1490 "r009" Name 1493 "r010" Name 1496 "r011" Name 1499 "r012" Name 1502 "r013" Name 1505 "r014" Name 1508 "r015" Name 1511 "r016" Name 1514 "r017" Name 1517 "r018" Name 1520 "r019" Name 1523 "R020" Name 1526 "r021" Name 1529 "r022" Name 1545 "r023" Name 1548 "r025" Name 1551 "r026" Name 1555 "r026a" Name 1560 "r027" Name 1563 "r028" Name 1567 "r029" Name 1570 "r030" Name 1574 "r031" Name 1578 "r032" Name 1582 "r033" Name 1585 "r034" Name 1588 "r035" Name 1591 "r036" Name 1596 "r037" Name 1599 "r038" Name 1606 "r039" Name 1609 "r049" Name 1614 "r041" Name 1617 "r042" Name 1621 "r043" Name 1624 "r044" Name 1629 "r046" Name 1636 "r0" Name 1640 "r1" Name 1644 "r2" Name 1648 "r3" Name 1652 "r4" Name 1656 "r5" Name 1660 "r6" Name 1664 "r7" Name 1668 "r8" Name 1672 "r0" Name 1676 "r1" Name 1680 "r2" Name 1684 "r3" Name 1688 "r4" Name 1692 "r5" Name 1696 "r6" Name 1700 "r7" Name 1704 "r8" Name 1708 "r0" Name 1712 "r1" Name 1716 "r2" Name 1720 "r3" Name 1724 "r4" Name 1728 "r5" Name 1732 "r6" Name 1736 "r7" Name 1740 "r8" Name 1744 "r00" Name 1748 "r01" Name 1752 "r02" Name 1756 "r03" Name 1760 "r04" Name 1764 "r05" Name 1768 "r06" Name 1772 "r07" Name 1776 "r08" Name 1780 "r09" Name 1784 "r10" Name 1788 "r11" Name 1792 "r12" Name 1796 "r13" Name 1800 "r14" Name 1804 "r15" Name 1808 "r16" Name 1813 "ps_output" Name 1820 "@entryPointOutput.color" Name 1824 "gs_ua" Name 1825 "gs_ub" Name 1826 "gs_uc" Name 1828 "gs_ua2" Name 1829 "gs_ub2" Name 1830 "gs_uc2" Name 1832 "gs_ua3" Name 1833 "gs_ub3" Name 1834 "gs_uc3" Name 1836 "gs_ua4" Name 1837 "gs_ub4" Name 1838 "gs_uc4" Decorate 1820(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeInt 32 0 9: TypePointer Function 8(int) 10: TypeInt 32 1 11: TypePointer Function 10(int) 12: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr) 11(ptr) 20: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 26: TypeVector 6(float) 2 27: TypePointer Function 26(fvec2) 28: TypeVector 8(int) 2 29: TypePointer Function 28(ivec2) 30: TypeFunction 26(fvec2) 27(ptr) 27(ptr) 27(ptr) 29(ptr) 29(ptr) 38: TypeVector 6(float) 3 39: TypePointer Function 38(fvec3) 40: TypeVector 8(int) 3 41: TypePointer Function 40(ivec3) 42: TypeFunction 38(fvec3) 39(ptr) 39(ptr) 39(ptr) 41(ptr) 41(ptr) 50: TypeVector 6(float) 4 51: TypePointer Function 50(fvec4) 52: TypeVector 8(int) 4 53: TypePointer Function 52(ivec4) 54: TypeFunction 50(fvec4) 51(ptr) 51(ptr) 51(ptr) 53(ptr) 53(ptr) 62: TypeMatrix 26(fvec2) 2 63: TypePointer Function 62 64: TypeFunction 62 63(ptr) 63(ptr) 63(ptr) 70: TypeMatrix 38(fvec3) 3 71: TypePointer Function 70 72: TypeFunction 70 71(ptr) 71(ptr) 71(ptr) 78: TypeMatrix 50(fvec4) 4 79: TypePointer Function 78 80: TypeFunction 78 79(ptr) 79(ptr) 79(ptr) 86: TypeFunction 2 7(ptr) 7(ptr) 27(ptr) 27(ptr) 63(ptr) 63(ptr) 95: TypeFunction 2 7(ptr) 7(ptr) 39(ptr) 39(ptr) 71(ptr) 71(ptr) 104: TypeFunction 2 7(ptr) 7(ptr) 51(ptr) 51(ptr) 79(ptr) 79(ptr) 113: TypeMatrix 38(fvec3) 2 114: TypePointer Function 113 115: TypeMatrix 26(fvec2) 3 116: TypePointer Function 115 117: TypeMatrix 50(fvec4) 3 118: TypePointer Function 117 119: TypeMatrix 50(fvec4) 2 120: TypePointer Function 119 121: TypeFunction 2 7(ptr) 7(ptr) 27(ptr) 39(ptr) 114(ptr) 116(ptr) 71(ptr) 118(ptr) 120(ptr) 133(PS_OUTPUT): TypeStruct 50(fvec4) 134: TypeFunction 133(PS_OUTPUT) 137: TypeBool 138: TypePointer Function 137(bool) 141: 6(float) Constant 0 187: 10(int) Constant 0 199: 10(int) Constant 7 247: 6(float) Constant 1073741824 276: 6(float) Constant 1050288283 297: 6(float) Constant 1065353216 301: 10(int) Constant 2 353: TypeVector 137(bool) 2 354: 26(fvec2) ConstantComposite 141 141 370: TypeVector 10(int) 2 371: TypePointer Function 370(ivec2) 403: 8(int) Constant 0 404: 28(ivec2) ConstantComposite 403 403 417: 10(int) Constant 3 418: 370(ivec2) ConstantComposite 199 417 461: 8(int) Constant 7 462: 8(int) Constant 8 463: 28(ivec2) ConstantComposite 461 462 480: TypePointer Function 353(bvec2) 540: 8(int) Constant 1 541: 8(int) Constant 2 542: 28(ivec2) ConstantComposite 540 541 589: 26(fvec2) ConstantComposite 297 247 594: TypeVector 137(bool) 3 595: 38(fvec3) ConstantComposite 141 141 141 611: TypeVector 10(int) 3 612: TypePointer Function 611(ivec3) 644: 40(ivec3) ConstantComposite 403 403 403 657: 8(int) Constant 3 658: 8(int) Constant 5 659: 40(ivec3) ConstantComposite 461 657 658 706: 8(int) Constant 4 707: 40(ivec3) ConstantComposite 541 657 706 724: TypePointer Function 594(bvec3) 743: 6(float) Constant 1050253722 790: 40(ivec3) ConstantComposite 540 541 657 837: 6(float) Constant 1077936128 838: 38(fvec3) ConstantComposite 297 247 837 843: TypeVector 137(bool) 4 844: 50(fvec4) ConstantComposite 141 141 141 141 860: TypeVector 10(int) 4 861: TypePointer Function 860(ivec4) 893: 52(ivec4) ConstantComposite 403 403 403 403 906: 52(ivec4) ConstantComposite 461 657 658 541 960: 8(int) Constant 9 961: 8(int) Constant 10 962: 52(ivec4) ConstantComposite 461 462 960 961 979: TypePointer Function 843(bvec4) 1039: 52(ivec4) ConstantComposite 540 541 657 706 1086: 6(float) Constant 1082130432 1087: 50(fvec4) ConstantComposite 297 247 837 1086 1092: TypeMatrix 353(bvec2) 2 1118: 62 ConstantComposite 354 354 1265: 26(fvec2) ConstantComposite 247 247 1266: 62 ConstantComposite 1265 1265 1271: TypeMatrix 594(bvec3) 3 1297: 70 ConstantComposite 595 595 595 1447: 38(fvec3) ConstantComposite 837 837 837 1448: 70 ConstantComposite 1447 1447 1447 1453: TypeMatrix 843(bvec4) 4 1479: 78 ConstantComposite 844 844 844 844 1632: 50(fvec4) ConstantComposite 1086 1086 1086 1086 1633: 78 ConstantComposite 1632 1632 1632 1632 1812: TypePointer Function 133(PS_OUTPUT) 1814: 50(fvec4) ConstantComposite 297 297 297 297 1819: TypePointer Output 50(fvec4) 1820(@entryPointOutput.color): 1819(ptr) Variable Output 1823: TypePointer Workgroup 8(int) 1824(gs_ua): 1823(ptr) Variable Workgroup 1825(gs_ub): 1823(ptr) Variable Workgroup 1826(gs_uc): 1823(ptr) Variable Workgroup 1827: TypePointer Workgroup 28(ivec2) 1828(gs_ua2): 1827(ptr) Variable Workgroup 1829(gs_ub2): 1827(ptr) Variable Workgroup 1830(gs_uc2): 1827(ptr) Variable Workgroup 1831: TypePointer Workgroup 40(ivec3) 1832(gs_ua3): 1831(ptr) Variable Workgroup 1833(gs_ub3): 1831(ptr) Variable Workgroup 1834(gs_uc3): 1831(ptr) Variable Workgroup 1835: TypePointer Workgroup 52(ivec4) 1836(gs_ua4): 1835(ptr) Variable Workgroup 1837(gs_ub4): 1835(ptr) Variable Workgroup 1838(gs_uc4): 1835(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label 1821:133(PS_OUTPUT) FunctionCall 135(@main() 1822: 50(fvec4) CompositeExtract 1821 0 Store 1820(@entryPointOutput.color) 1822 Return FunctionEnd 18(PixelShaderFunctionS(f1;f1;f1;u1;i1;): 6(float) Function None 12 13(inF0): 7(ptr) FunctionParameter 14(inF1): 7(ptr) FunctionParameter 15(inF2): 7(ptr) FunctionParameter 16(inU0): 9(ptr) FunctionParameter 17(inU1): 11(ptr) FunctionParameter 19: Label 139(r000): 138(ptr) Variable Function 144(r001): 7(ptr) Variable Function 147(r002): 7(ptr) Variable Function 150(r003): 138(ptr) Variable Function 154(r004): 7(ptr) Variable Function 157(r005): 11(ptr) Variable Function 160(r006): 9(ptr) Variable Function 163(r007): 7(ptr) Variable Function 166(r009): 7(ptr) Variable Function 169(r010): 7(ptr) Variable Function 173(r011): 7(ptr) Variable Function 176(r012): 7(ptr) Variable Function 192(r014): 7(ptr) Variable Function 195(r015): 7(ptr) Variable Function 198(r016): 11(ptr) Variable Function 201(r017): 7(ptr) Variable Function 204(r018): 7(ptr) Variable Function 207(r019): 7(ptr) Variable Function 210(r020): 7(ptr) Variable Function 213(r021): 7(ptr) Variable Function 216(r022): 7(ptr) Variable Function 219(r023): 7(ptr) Variable Function 222(r024): 7(ptr) Variable Function 226(r027): 7(ptr) Variable Function 229(r028): 7(ptr) Variable Function 232(r029): 9(ptr) Variable Function 235(r030): 9(ptr) Variable Function 238(r031): 7(ptr) Variable Function 241(r033): 7(ptr) Variable Function 245(r033i): 7(ptr) Variable Function 249(r034): 7(ptr) Variable Function 252(r036): 7(ptr) Variable Function 255(r037): 138(ptr) Variable Function 258(r038): 138(ptr) Variable Function 261(r039): 7(ptr) Variable Function 265(r039a): 7(ptr) Variable Function 270(r040): 7(ptr) Variable Function 273(r041): 7(ptr) Variable Function 278(r042): 7(ptr) Variable Function 281(r043): 7(ptr) Variable Function 285(r044): 7(ptr) Variable Function 289(r045): 7(ptr) Variable Function 293(r046): 7(ptr) Variable Function 296(r047): 7(ptr) Variable Function 300(r048): 9(ptr) Variable Function 304(r049): 7(ptr) Variable Function 307(r050): 7(ptr) Variable Function 310(r051): 7(ptr) Variable Function 313(r052): 7(ptr) Variable Function 316(r053): 7(ptr) Variable Function 323(r055): 7(ptr) Variable Function 326(r056): 7(ptr) Variable Function 331(r057): 7(ptr) Variable Function 334(r058): 7(ptr) Variable Function 338(r059): 7(ptr) Variable Function 341(r060): 7(ptr) Variable Function 344(r061): 7(ptr) Variable Function 140: 6(float) Load 13(inF0) 142: 137(bool) FUnordNotEqual 140 141 143: 137(bool) All 142 Store 139(r000) 143 145: 6(float) Load 13(inF0) 146: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 145 Store 144(r001) 146 148: 6(float) Load 13(inF0) 149: 6(float) ExtInst 1(GLSL.std.450) 17(Acos) 148 Store 147(r002) 149 151: 6(float) Load 13(inF0) 152: 137(bool) FUnordNotEqual 151 141 153: 137(bool) Any 152 Store 150(r003) 153 155: 6(float) Load 13(inF0) 156: 6(float) ExtInst 1(GLSL.std.450) 16(Asin) 155 Store 154(r004) 156 158: 6(float) Load 13(inF0) 159: 10(int) Bitcast 158 Store 157(r005) 159 161: 10(int) Load 17(inU1) 162: 8(int) Bitcast 161 Store 160(r006) 162 164: 8(int) Load 16(inU0) 165: 6(float) Bitcast 164 Store 163(r007) 165 167: 6(float) Load 13(inF0) 168: 6(float) ExtInst 1(GLSL.std.450) 18(Atan) 167 Store 166(r009) 168 170: 6(float) Load 13(inF0) 171: 6(float) Load 14(inF1) 172: 6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 170 171 Store 169(r010) 172 174: 6(float) Load 13(inF0) 175: 6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 174 Store 173(r011) 175 177: 6(float) Load 13(inF0) 178: 6(float) Load 14(inF1) 179: 6(float) Load 15(inF2) 180: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 177 178 179 Store 176(r012) 180 181: 6(float) Load 13(inF0) 182: 137(bool) FOrdLessThan 181 141 SelectionMerge 184 None BranchConditional 182 183 184 183: Label Kill 184: Label 186: 10(int) Load 157(r005) 188: 137(bool) SLessThan 186 187 SelectionMerge 190 None BranchConditional 188 189 190 189: Label Kill 190: Label 193: 6(float) Load 13(inF0) 194: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 193 Store 192(r014) 194 196: 6(float) Load 13(inF0) 197: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 196 Store 195(r015) 197 200: 10(int) BitCount 199 Store 198(r016) 200 202: 6(float) Load 13(inF0) 203: 6(float) DPdx 202 Store 201(r017) 203 205: 6(float) Load 13(inF0) 206: 6(float) DPdxCoarse 205 Store 204(r018) 206 208: 6(float) Load 13(inF0) 209: 6(float) DPdxFine 208 Store 207(r019) 209 211: 6(float) Load 13(inF0) 212: 6(float) DPdy 211 Store 210(r020) 212 214: 6(float) Load 13(inF0) 215: 6(float) DPdyCoarse 214 Store 213(r021) 215 217: 6(float) Load 13(inF0) 218: 6(float) DPdyFine 217 Store 216(r022) 218 220: 6(float) Load 13(inF0) 221: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 220 Store 219(r023) 221 223: 6(float) Load 13(inF0) 224: 6(float) Load 14(inF1) 225: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 223 224 Store 222(r024) 225 227: 6(float) Load 13(inF0) 228: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 227 Store 226(r027) 228 230: 6(float) Load 13(inF0) 231: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 230 Store 229(r028) 231 233: 10(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 199 234: 8(int) Bitcast 233 Store 232(r029) 234 236: 10(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 199 237: 8(int) Bitcast 236 Store 235(r030) 237 239: 6(float) Load 13(inF0) 240: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 239 Store 238(r031) 240 242: 6(float) Load 13(inF0) 243: 6(float) Load 14(inF1) 244: 6(float) FMod 242 243 Store 241(r033) 244 246: 6(float) Load 13(inF0) 248: 6(float) FMod 246 247 Store 245(r033i) 248 250: 6(float) Load 13(inF0) 251: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 250 Store 249(r034) 251 253: 6(float) Load 13(inF0) 254: 6(float) Fwidth 253 Store 252(r036) 254 256: 6(float) Load 13(inF0) 257: 137(bool) IsInf 256 Store 255(r037) 257 259: 6(float) Load 13(inF0) 260: 137(bool) IsNan 259 Store 258(r038) 260 262: 6(float) Load 13(inF0) 263: 6(float) Load 14(inF1) 264: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 262 263 Store 261(r039) 264 266: 6(float) Load 13(inF0) 267: 6(float) Load 14(inF1) 268: 6(float) Load 15(inF2) 269: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 266 267 268 Store 265(r039a) 269 271: 6(float) Load 13(inF0) 272: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 271 Store 270(r040) 272 274: 6(float) Load 13(inF0) 275: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 274 277: 6(float) FMul 275 276 Store 273(r041) 277 279: 6(float) Load 13(inF0) 280: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 279 Store 278(r042) 280 282: 6(float) Load 13(inF0) 283: 6(float) Load 14(inF1) 284: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 282 283 Store 281(r043) 284 286: 6(float) Load 13(inF0) 287: 6(float) Load 14(inF1) 288: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 286 287 Store 285(r044) 288 290: 6(float) Load 13(inF0) 291: 6(float) Load 14(inF1) 292: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 290 291 Store 289(r045) 292 294: 6(float) Load 13(inF0) 295: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 294 Store 293(r046) 295 298: 6(float) Load 13(inF0) 299: 6(float) FDiv 297 298 Store 296(r047) 299 302: 10(int) BitReverse 301 303: 8(int) Bitcast 302 Store 300(r048) 303 305: 6(float) Load 13(inF0) 306: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 305 Store 304(r049) 306 308: 6(float) Load 13(inF0) 309: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 308 Store 307(r050) 309 311: 6(float) Load 13(inF0) 312: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 311 141 297 Store 310(r051) 312 314: 6(float) Load 13(inF0) 315: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 314 Store 313(r052) 315 317: 6(float) Load 13(inF0) 318: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 317 Store 316(r053) 318 319: 6(float) Load 13(inF0) 320: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 319 Store 14(inF1) 320 321: 6(float) Load 13(inF0) 322: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 321 Store 15(inF2) 322 324: 6(float) Load 13(inF0) 325: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 324 Store 323(r055) 325 327: 6(float) Load 13(inF0) 328: 6(float) Load 14(inF1) 329: 6(float) Load 15(inF2) 330: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 327 328 329 Store 326(r056) 330 332: 6(float) Load 13(inF0) 333: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 332 Store 331(r057) 333 335: 6(float) Load 13(inF0) 336: 6(float) Load 14(inF1) 337: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 335 336 Store 334(r058) 337 339: 6(float) Load 13(inF0) 340: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 339 Store 338(r059) 340 342: 6(float) Load 13(inF0) 343: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 342 Store 341(r060) 343 345: 6(float) Load 13(inF0) 346: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 345 Store 344(r061) 346 ReturnValue 141 FunctionEnd 24(PixelShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 20 21(inF0): 7(ptr) FunctionParameter 22(inF1): 7(ptr) FunctionParameter 23(inF2): 7(ptr) FunctionParameter 25: Label ReturnValue 141 FunctionEnd 36(PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2;): 26(fvec2) Function None 30 31(inF0): 27(ptr) FunctionParameter 32(inF1): 27(ptr) FunctionParameter 33(inF2): 27(ptr) FunctionParameter 34(inU0): 29(ptr) FunctionParameter 35(inU1): 29(ptr) FunctionParameter 37: Label 351(r000): 138(ptr) Variable Function 357(r001): 27(ptr) Variable Function 360(r002): 27(ptr) Variable Function 363(r003): 138(ptr) Variable Function 367(r004): 27(ptr) Variable Function 372(r005): 371(ptr) Variable Function 375(r006): 29(ptr) Variable Function 378(r007): 27(ptr) Variable Function 381(r009): 27(ptr) Variable Function 384(r010): 27(ptr) Variable Function 388(r011): 27(ptr) Variable Function 391(r012): 27(ptr) Variable Function 410(r013): 27(ptr) Variable Function 413(r015): 27(ptr) Variable Function 416(r016): 371(ptr) Variable Function 420(r017): 27(ptr) Variable Function 423(r018): 27(ptr) Variable Function 426(r019): 27(ptr) Variable Function 429(r020): 27(ptr) Variable Function 432(r021): 27(ptr) Variable Function 435(r022): 27(ptr) Variable Function 438(r023): 27(ptr) Variable Function 441(r026): 7(ptr) Variable Function 445(r027): 7(ptr) Variable Function 449(r028): 27(ptr) Variable Function 452(r029): 27(ptr) Variable Function 455(r030): 27(ptr) Variable Function 460(r031): 29(ptr) Variable Function 465(r032): 29(ptr) Variable Function 467(r033): 27(ptr) Variable Function 470(r035): 27(ptr) Variable Function 474(r036): 27(ptr) Variable Function 477(r038): 27(ptr) Variable Function 481(r039): 480(ptr) Variable Function 484(r040): 480(ptr) Variable Function 487(r041): 27(ptr) Variable Function 491(r039a): 27(ptr) Variable Function 496(r042): 7(ptr) Variable Function 499(r043): 27(ptr) Variable Function 502(r044): 27(ptr) Variable Function 506(r045): 27(ptr) Variable Function 509(r046): 27(ptr) Variable Function 513(r047): 27(ptr) Variable Function 517(r048): 27(ptr) Variable Function 520(r049): 27(ptr) Variable Function 524(r050): 27(ptr) Variable Function 527(r051): 27(ptr) Variable Function 531(r052): 27(ptr) Variable Function 535(r053): 27(ptr) Variable Function 539(r054): 29(ptr) Variable Function 544(r055): 27(ptr) Variable Function 547(r056): 27(ptr) Variable Function 550(r057): 27(ptr) Variable Function 555(r058): 27(ptr) Variable Function 558(r059): 27(ptr) Variable Function 565(r060): 27(ptr) Variable Function 568(r061): 27(ptr) Variable Function 573(r062): 27(ptr) Variable Function 576(r063): 27(ptr) Variable Function 580(r064): 27(ptr) Variable Function 583(r065): 27(ptr) Variable Function 586(r066): 27(ptr) Variable Function 352: 26(fvec2) Load 31(inF0) 355: 353(bvec2) FUnordNotEqual 352 354 356: 137(bool) All 355 Store 351(r000) 356 358: 26(fvec2) Load 31(inF0) 359: 26(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 358 Store 357(r001) 359 361: 26(fvec2) Load 31(inF0) 362: 26(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 361 Store 360(r002) 362 364: 26(fvec2) Load 31(inF0) 365: 353(bvec2) FUnordNotEqual 364 354 366: 137(bool) Any 365 Store 363(r003) 366 368: 26(fvec2) Load 31(inF0) 369: 26(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 368 Store 367(r004) 369 373: 26(fvec2) Load 31(inF0) 374: 370(ivec2) Bitcast 373 Store 372(r005) 374 376: 26(fvec2) Load 31(inF0) 377: 28(ivec2) Bitcast 376 Store 375(r006) 377 379: 28(ivec2) Load 34(inU0) 380: 26(fvec2) Bitcast 379 Store 378(r007) 380 382: 26(fvec2) Load 31(inF0) 383: 26(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 382 Store 381(r009) 383 385: 26(fvec2) Load 31(inF0) 386: 26(fvec2) Load 32(inF1) 387: 26(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 385 386 Store 384(r010) 387 389: 26(fvec2) Load 31(inF0) 390: 26(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 389 Store 388(r011) 390 392: 26(fvec2) Load 31(inF0) 393: 26(fvec2) Load 32(inF1) 394: 26(fvec2) Load 33(inF2) 395: 26(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 392 393 394 Store 391(r012) 395 396: 26(fvec2) Load 31(inF0) 397: 353(bvec2) FOrdLessThan 396 354 398: 137(bool) Any 397 SelectionMerge 400 None BranchConditional 398 399 400 399: Label Kill 400: Label 402: 28(ivec2) Load 34(inU0) 405: 353(bvec2) ULessThan 402 404 406: 137(bool) Any 405 SelectionMerge 408 None BranchConditional 406 407 408 407: Label Kill 408: Label 411: 26(fvec2) Load 31(inF0) 412: 26(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 411 Store 410(r013) 412 414: 26(fvec2) Load 31(inF0) 415: 26(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 414 Store 413(r015) 415 419: 370(ivec2) BitCount 418 Store 416(r016) 419 421: 26(fvec2) Load 31(inF0) 422: 26(fvec2) DPdx 421 Store 420(r017) 422 424: 26(fvec2) Load 31(inF0) 425: 26(fvec2) DPdxCoarse 424 Store 423(r018) 425 427: 26(fvec2) Load 31(inF0) 428: 26(fvec2) DPdxFine 427 Store 426(r019) 428 430: 26(fvec2) Load 31(inF0) 431: 26(fvec2) DPdy 430 Store 429(r020) 431 433: 26(fvec2) Load 31(inF0) 434: 26(fvec2) DPdyCoarse 433 Store 432(r021) 434 436: 26(fvec2) Load 31(inF0) 437: 26(fvec2) DPdyFine 436 Store 435(r022) 437 439: 26(fvec2) Load 31(inF0) 440: 26(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 439 Store 438(r023) 440 442: 26(fvec2) Load 31(inF0) 443: 26(fvec2) Load 32(inF1) 444: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 442 443 Store 441(r026) 444 446: 26(fvec2) Load 31(inF0) 447: 26(fvec2) Load 32(inF1) 448: 6(float) Dot 446 447 Store 445(r027) 448 450: 26(fvec2) Load 31(inF0) 451: 26(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 450 Store 449(r028) 451 453: 26(fvec2) Load 31(inF0) 454: 26(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 453 Store 452(r029) 454 456: 26(fvec2) Load 31(inF0) 457: 26(fvec2) Load 32(inF1) 458: 26(fvec2) Load 33(inF2) 459: 26(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 456 457 458 Store 455(r030) 459 464: 28(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 463 Store 460(r031) 464 466: 28(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 463 Store 465(r032) 466 468: 26(fvec2) Load 31(inF0) 469: 26(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 468 Store 467(r033) 469 471: 26(fvec2) Load 31(inF0) 472: 26(fvec2) Load 32(inF1) 473: 26(fvec2) FMod 471 472 Store 470(r035) 473 475: 26(fvec2) Load 31(inF0) 476: 26(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 475 Store 474(r036) 476 478: 26(fvec2) Load 31(inF0) 479: 26(fvec2) Fwidth 478 Store 477(r038) 479 482: 26(fvec2) Load 31(inF0) 483: 353(bvec2) IsInf 482 Store 481(r039) 483 485: 26(fvec2) Load 31(inF0) 486: 353(bvec2) IsNan 485 Store 484(r040) 486 488: 26(fvec2) Load 31(inF0) 489: 26(fvec2) Load 32(inF1) 490: 26(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 488 489 Store 487(r041) 490 492: 26(fvec2) Load 31(inF0) 493: 26(fvec2) Load 32(inF1) 494: 26(fvec2) Load 33(inF2) 495: 26(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 492 493 494 Store 491(r039a) 495 497: 26(fvec2) Load 31(inF0) 498: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 497 Store 496(r042) 498 500: 26(fvec2) Load 31(inF0) 501: 26(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 500 Store 499(r043) 501 503: 26(fvec2) Load 31(inF0) 504: 26(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 503 505: 26(fvec2) VectorTimesScalar 504 276 Store 502(r044) 505 507: 26(fvec2) Load 31(inF0) 508: 26(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 507 Store 506(r045) 508 510: 26(fvec2) Load 31(inF0) 511: 26(fvec2) Load 32(inF1) 512: 26(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 510 511 Store 509(r046) 512 514: 26(fvec2) Load 31(inF0) 515: 26(fvec2) Load 32(inF1) 516: 26(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 514 515 Store 513(r047) 516 518: 26(fvec2) Load 31(inF0) 519: 26(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 518 Store 517(r048) 519 521: 26(fvec2) Load 31(inF0) 522: 26(fvec2) Load 32(inF1) 523: 26(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 521 522 Store 520(r049) 523 525: 26(fvec2) Load 31(inF0) 526: 26(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 525 Store 524(r050) 526 528: 26(fvec2) Load 31(inF0) 529: 26(fvec2) CompositeConstruct 297 297 530: 26(fvec2) FDiv 529 528 Store 527(r051) 530 532: 26(fvec2) Load 31(inF0) 533: 26(fvec2) Load 32(inF1) 534: 26(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 532 533 Store 531(r052) 534 536: 26(fvec2) Load 31(inF0) 537: 26(fvec2) Load 32(inF1) 538: 26(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 536 537 247 Store 535(r053) 538 543: 28(ivec2) BitReverse 542 Store 539(r054) 543 545: 26(fvec2) Load 31(inF0) 546: 26(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 545 Store 544(r055) 546 548: 26(fvec2) Load 31(inF0) 549: 26(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 548 Store 547(r056) 549 551: 26(fvec2) Load 31(inF0) 552: 26(fvec2) CompositeConstruct 141 141 553: 26(fvec2) CompositeConstruct 297 297 554: 26(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 551 552 553 Store 550(r057) 554 556: 26(fvec2) Load 31(inF0) 557: 26(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 556 Store 555(r058) 557 559: 26(fvec2) Load 31(inF0) 560: 26(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 559 Store 558(r059) 560 561: 26(fvec2) Load 31(inF0) 562: 26(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 561 Store 32(inF1) 562 563: 26(fvec2) Load 31(inF0) 564: 26(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 563 Store 33(inF2) 564 566: 26(fvec2) Load 31(inF0) 567: 26(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 566 Store 565(r060) 567 569: 26(fvec2) Load 31(inF0) 570: 26(fvec2) Load 32(inF1) 571: 26(fvec2) Load 33(inF2) 572: 26(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 569 570 571 Store 568(r061) 572 574: 26(fvec2) Load 31(inF0) 575: 26(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 574 Store 573(r062) 575 577: 26(fvec2) Load 31(inF0) 578: 26(fvec2) Load 32(inF1) 579: 26(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 577 578 Store 576(r063) 579 581: 26(fvec2) Load 31(inF0) 582: 26(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 581 Store 580(r064) 582 584: 26(fvec2) Load 31(inF0) 585: 26(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 584 Store 583(r065) 585 587: 26(fvec2) Load 31(inF0) 588: 26(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 587 Store 586(r066) 588 ReturnValue 589 FunctionEnd 48(PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 38(fvec3) Function None 42 43(inF0): 39(ptr) FunctionParameter 44(inF1): 39(ptr) FunctionParameter 45(inF2): 39(ptr) FunctionParameter 46(inU0): 41(ptr) FunctionParameter 47(inU1): 41(ptr) FunctionParameter 49: Label 592(r000): 138(ptr) Variable Function 598(r001): 39(ptr) Variable Function 601(r002): 39(ptr) Variable Function 604(r003): 138(ptr) Variable Function 608(r004): 39(ptr) Variable Function 613(r005): 612(ptr) Variable Function 616(r006): 41(ptr) Variable Function 619(r007): 39(ptr) Variable Function 622(r009): 39(ptr) Variable Function 625(r010): 39(ptr) Variable Function 629(r011): 39(ptr) Variable Function 632(r012): 39(ptr) Variable Function 650(r013): 39(ptr) Variable Function 653(r014): 39(ptr) Variable Function 656(r015): 41(ptr) Variable Function 661(r016): 39(ptr) Variable Function 665(r017): 39(ptr) Variable Function 668(r018): 39(ptr) Variable Function 671(r019): 39(ptr) Variable Function 674(r020): 39(ptr) Variable Function 677(r021): 39(ptr) Variable Function 680(r022): 39(ptr) Variable Function 683(r023): 39(ptr) Variable Function 686(r024): 7(ptr) Variable Function 690(r025): 7(ptr) Variable Function 694(r029): 39(ptr) Variable Function 697(r030): 39(ptr) Variable Function 700(r031): 39(ptr) Variable Function 705(r032): 41(ptr) Variable Function 709(r033): 41(ptr) Variable Function 711(r034): 39(ptr) Variable Function 714(r036): 39(ptr) Variable Function 718(r037): 39(ptr) Variable Function 721(r039): 39(ptr) Variable Function 725(r040): 724(ptr) Variable Function 728(r041): 724(ptr) Variable Function 731(r042): 39(ptr) Variable Function 735(r039a): 39(ptr) Variable Function 740(r039b): 39(ptr) Variable Function 746(r043): 7(ptr) Variable Function 749(r044): 39(ptr) Variable Function 752(r045): 39(ptr) Variable Function 756(r046): 39(ptr) Variable Function 759(r047): 39(ptr) Variable Function 763(r048): 39(ptr) Variable Function 767(r049): 39(ptr) Variable Function 770(r050): 39(ptr) Variable Function 774(r051): 39(ptr) Variable Function 777(r052): 39(ptr) Variable Function 781(r053): 39(ptr) Variable Function 785(r054): 39(ptr) Variable Function 789(r055): 41(ptr) Variable Function 792(r056): 39(ptr) Variable Function 795(r057): 39(ptr) Variable Function 798(r058): 39(ptr) Variable Function 803(r059): 39(ptr) Variable Function 806(r060): 39(ptr) Variable Function 813(r061): 39(ptr) Variable Function 816(r062): 39(ptr) Variable Function 821(r063): 39(ptr) Variable Function 824(r064): 39(ptr) Variable Function 828(r065): 39(ptr) Variable Function 831(r066): 39(ptr) Variable Function 834(r067): 39(ptr) Variable Function 593: 38(fvec3) Load 43(inF0) 596: 594(bvec3) FUnordNotEqual 593 595 597: 137(bool) All 596 Store 592(r000) 597 599: 38(fvec3) Load 43(inF0) 600: 38(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 599 Store 598(r001) 600 602: 38(fvec3) Load 43(inF0) 603: 38(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 602 Store 601(r002) 603 605: 38(fvec3) Load 43(inF0) 606: 594(bvec3) FUnordNotEqual 605 595 607: 137(bool) Any 606 Store 604(r003) 607 609: 38(fvec3) Load 43(inF0) 610: 38(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 609 Store 608(r004) 610 614: 38(fvec3) Load 43(inF0) 615: 611(ivec3) Bitcast 614 Store 613(r005) 615 617: 38(fvec3) Load 43(inF0) 618: 40(ivec3) Bitcast 617 Store 616(r006) 618 620: 40(ivec3) Load 46(inU0) 621: 38(fvec3) Bitcast 620 Store 619(r007) 621 623: 38(fvec3) Load 43(inF0) 624: 38(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 623 Store 622(r009) 624 626: 38(fvec3) Load 43(inF0) 627: 38(fvec3) Load 44(inF1) 628: 38(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 626 627 Store 625(r010) 628 630: 38(fvec3) Load 43(inF0) 631: 38(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 630 Store 629(r011) 631 633: 38(fvec3) Load 43(inF0) 634: 38(fvec3) Load 44(inF1) 635: 38(fvec3) Load 45(inF2) 636: 38(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 633 634 635 Store 632(r012) 636 637: 38(fvec3) Load 43(inF0) 638: 594(bvec3) FOrdLessThan 637 595 639: 137(bool) Any 638 SelectionMerge 641 None BranchConditional 639 640 641 640: Label Kill 641: Label 643: 40(ivec3) Load 46(inU0) 645: 594(bvec3) ULessThan 643 644 646: 137(bool) Any 645 SelectionMerge 648 None BranchConditional 646 647 648 647: Label Kill 648: Label 651: 38(fvec3) Load 43(inF0) 652: 38(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 651 Store 650(r013) 652 654: 38(fvec3) Load 43(inF0) 655: 38(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 654 Store 653(r014) 655 660: 40(ivec3) BitCount 659 Store 656(r015) 660 662: 38(fvec3) Load 43(inF0) 663: 38(fvec3) Load 44(inF1) 664: 38(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 662 663 Store 661(r016) 664 666: 38(fvec3) Load 43(inF0) 667: 38(fvec3) DPdx 666 Store 665(r017) 667 669: 38(fvec3) Load 43(inF0) 670: 38(fvec3) DPdxCoarse 669 Store 668(r018) 670 672: 38(fvec3) Load 43(inF0) 673: 38(fvec3) DPdxFine 672 Store 671(r019) 673 675: 38(fvec3) Load 43(inF0) 676: 38(fvec3) DPdy 675 Store 674(r020) 676 678: 38(fvec3) Load 43(inF0) 679: 38(fvec3) DPdyCoarse 678 Store 677(r021) 679 681: 38(fvec3) Load 43(inF0) 682: 38(fvec3) DPdyFine 681 Store 680(r022) 682 684: 38(fvec3) Load 43(inF0) 685: 38(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 684 Store 683(r023) 685 687: 38(fvec3) Load 43(inF0) 688: 38(fvec3) Load 44(inF1) 689: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 687 688 Store 686(r024) 689 691: 38(fvec3) Load 43(inF0) 692: 38(fvec3) Load 44(inF1) 693: 6(float) Dot 691 692 Store 690(r025) 693 695: 38(fvec3) Load 43(inF0) 696: 38(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 695 Store 694(r029) 696 698: 38(fvec3) Load 43(inF0) 699: 38(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 698 Store 697(r030) 699 701: 38(fvec3) Load 43(inF0) 702: 38(fvec3) Load 44(inF1) 703: 38(fvec3) Load 45(inF2) 704: 38(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 701 702 703 Store 700(r031) 704 708: 40(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 707 Store 705(r032) 708 710: 40(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 707 Store 709(r033) 710 712: 38(fvec3) Load 43(inF0) 713: 38(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 712 Store 711(r034) 713 715: 38(fvec3) Load 43(inF0) 716: 38(fvec3) Load 44(inF1) 717: 38(fvec3) FMod 715 716 Store 714(r036) 717 719: 38(fvec3) Load 43(inF0) 720: 38(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 719 Store 718(r037) 720 722: 38(fvec3) Load 43(inF0) 723: 38(fvec3) Fwidth 722 Store 721(r039) 723 726: 38(fvec3) Load 43(inF0) 727: 594(bvec3) IsInf 726 Store 725(r040) 727 729: 38(fvec3) Load 43(inF0) 730: 594(bvec3) IsNan 729 Store 728(r041) 730 732: 38(fvec3) Load 43(inF0) 733: 38(fvec3) Load 44(inF1) 734: 38(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 732 733 Store 731(r042) 734 736: 38(fvec3) Load 43(inF0) 737: 38(fvec3) Load 44(inF1) 738: 38(fvec3) Load 45(inF2) 739: 38(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 736 737 738 Store 735(r039a) 739 741: 38(fvec3) Load 43(inF0) 742: 38(fvec3) Load 44(inF1) 744: 38(fvec3) CompositeConstruct 743 743 743 745: 38(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 741 742 744 Store 740(r039b) 745 747: 38(fvec3) Load 43(inF0) 748: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 747 Store 746(r043) 748 750: 38(fvec3) Load 43(inF0) 751: 38(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 750 Store 749(r044) 751 753: 38(fvec3) Load 43(inF0) 754: 38(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 753 755: 38(fvec3) VectorTimesScalar 754 276 Store 752(r045) 755 757: 38(fvec3) Load 43(inF0) 758: 38(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 757 Store 756(r046) 758 760: 38(fvec3) Load 43(inF0) 761: 38(fvec3) Load 44(inF1) 762: 38(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 760 761 Store 759(r047) 762 764: 38(fvec3) Load 43(inF0) 765: 38(fvec3) Load 44(inF1) 766: 38(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 764 765 Store 763(r048) 766 768: 38(fvec3) Load 43(inF0) 769: 38(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 768 Store 767(r049) 769 771: 38(fvec3) Load 43(inF0) 772: 38(fvec3) Load 44(inF1) 773: 38(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 771 772 Store 770(r050) 773 775: 38(fvec3) Load 43(inF0) 776: 38(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 775 Store 774(r051) 776 778: 38(fvec3) Load 43(inF0) 779: 38(fvec3) CompositeConstruct 297 297 297 780: 38(fvec3) FDiv 779 778 Store 777(r052) 780 782: 38(fvec3) Load 43(inF0) 783: 38(fvec3) Load 44(inF1) 784: 38(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 782 783 Store 781(r053) 784 786: 38(fvec3) Load 43(inF0) 787: 38(fvec3) Load 44(inF1) 788: 38(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 786 787 247 Store 785(r054) 788 791: 40(ivec3) BitReverse 790 Store 789(r055) 791 793: 38(fvec3) Load 43(inF0) 794: 38(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 793 Store 792(r056) 794 796: 38(fvec3) Load 43(inF0) 797: 38(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 796 Store 795(r057) 797 799: 38(fvec3) Load 43(inF0) 800: 38(fvec3) CompositeConstruct 141 141 141 801: 38(fvec3) CompositeConstruct 297 297 297 802: 38(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 799 800 801 Store 798(r058) 802 804: 38(fvec3) Load 43(inF0) 805: 38(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 804 Store 803(r059) 805 807: 38(fvec3) Load 43(inF0) 808: 38(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 807 Store 806(r060) 808 809: 38(fvec3) Load 43(inF0) 810: 38(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 809 Store 44(inF1) 810 811: 38(fvec3) Load 43(inF0) 812: 38(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 811 Store 45(inF2) 812 814: 38(fvec3) Load 43(inF0) 815: 38(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 814 Store 813(r061) 815 817: 38(fvec3) Load 43(inF0) 818: 38(fvec3) Load 44(inF1) 819: 38(fvec3) Load 45(inF2) 820: 38(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 817 818 819 Store 816(r062) 820 822: 38(fvec3) Load 43(inF0) 823: 38(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 822 Store 821(r063) 823 825: 38(fvec3) Load 43(inF0) 826: 38(fvec3) Load 44(inF1) 827: 38(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 825 826 Store 824(r064) 827 829: 38(fvec3) Load 43(inF0) 830: 38(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 829 Store 828(r065) 830 832: 38(fvec3) Load 43(inF0) 833: 38(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 832 Store 831(r066) 833 835: 38(fvec3) Load 43(inF0) 836: 38(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 835 Store 834(r067) 836 ReturnValue 838 FunctionEnd 60(PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;): 50(fvec4) Function None 54 55(inF0): 51(ptr) FunctionParameter 56(inF1): 51(ptr) FunctionParameter 57(inF2): 51(ptr) FunctionParameter 58(inU0): 53(ptr) FunctionParameter 59(inU1): 53(ptr) FunctionParameter 61: Label 841(r000): 138(ptr) Variable Function 847(r001): 51(ptr) Variable Function 850(r002): 51(ptr) Variable Function 853(r003): 138(ptr) Variable Function 857(r004): 51(ptr) Variable Function 862(r005): 861(ptr) Variable Function 865(r006): 53(ptr) Variable Function 868(r007): 51(ptr) Variable Function 871(r009): 51(ptr) Variable Function 874(r010): 51(ptr) Variable Function 878(r011): 51(ptr) Variable Function 881(r012): 51(ptr) Variable Function 899(r013): 51(ptr) Variable Function 902(r014): 51(ptr) Variable Function 905(r015): 53(ptr) Variable Function 908(r016): 51(ptr) Variable Function 911(r017): 51(ptr) Variable Function 914(r018): 51(ptr) Variable Function 917(r019): 51(ptr) Variable Function 920(r020): 51(ptr) Variable Function 923(r021): 51(ptr) Variable Function 926(r022): 51(ptr) Variable Function 929(r023): 7(ptr) Variable Function 933(r024): 7(ptr) Variable Function 937(r025): 51(ptr) Variable Function 948(r029): 51(ptr) Variable Function 951(r030): 51(ptr) Variable Function 954(r031): 51(ptr) Variable Function 959(r032): 53(ptr) Variable Function 964(r033): 53(ptr) Variable Function 966(r034): 51(ptr) Variable Function 969(r036): 51(ptr) Variable Function 973(r037): 51(ptr) Variable Function 976(r039): 51(ptr) Variable Function 980(r040): 979(ptr) Variable Function 983(r041): 979(ptr) Variable Function 986(r042): 51(ptr) Variable Function 990(r039a): 51(ptr) Variable Function 995(r043): 7(ptr) Variable Function 998(r044): 51(ptr) Variable Function 1001(r045): 51(ptr) Variable Function 1005(r046): 51(ptr) Variable Function 1008(r047): 51(ptr) Variable Function 1012(r048): 51(ptr) Variable Function 1016(r049): 51(ptr) Variable Function 1019(r050): 51(ptr) Variable Function 1023(r051): 51(ptr) Variable Function 1026(r052): 51(ptr) Variable Function 1030(r053): 51(ptr) Variable Function 1034(r054): 51(ptr) Variable Function 1038(r055): 53(ptr) Variable Function 1041(r056): 51(ptr) Variable Function 1044(r057): 51(ptr) Variable Function 1047(r058): 51(ptr) Variable Function 1052(r059): 51(ptr) Variable Function 1055(r060): 51(ptr) Variable Function 1062(r061): 51(ptr) Variable Function 1065(r062): 51(ptr) Variable Function 1070(r063): 51(ptr) Variable Function 1073(r064): 51(ptr) Variable Function 1077(r065): 51(ptr) Variable Function 1080(r066): 51(ptr) Variable Function 1083(r067): 51(ptr) Variable Function 842: 50(fvec4) Load 55(inF0) 845: 843(bvec4) FUnordNotEqual 842 844 846: 137(bool) All 845 Store 841(r000) 846 848: 50(fvec4) Load 55(inF0) 849: 50(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 848 Store 847(r001) 849 851: 50(fvec4) Load 55(inF0) 852: 50(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 851 Store 850(r002) 852 854: 50(fvec4) Load 55(inF0) 855: 843(bvec4) FUnordNotEqual 854 844 856: 137(bool) Any 855 Store 853(r003) 856 858: 50(fvec4) Load 55(inF0) 859: 50(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 858 Store 857(r004) 859 863: 50(fvec4) Load 55(inF0) 864: 860(ivec4) Bitcast 863 Store 862(r005) 864 866: 50(fvec4) Load 55(inF0) 867: 52(ivec4) Bitcast 866 Store 865(r006) 867 869: 52(ivec4) Load 58(inU0) 870: 50(fvec4) Bitcast 869 Store 868(r007) 870 872: 50(fvec4) Load 55(inF0) 873: 50(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 872 Store 871(r009) 873 875: 50(fvec4) Load 55(inF0) 876: 50(fvec4) Load 56(inF1) 877: 50(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 875 876 Store 874(r010) 877 879: 50(fvec4) Load 55(inF0) 880: 50(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 879 Store 878(r011) 880 882: 50(fvec4) Load 55(inF0) 883: 50(fvec4) Load 56(inF1) 884: 50(fvec4) Load 57(inF2) 885: 50(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 882 883 884 Store 881(r012) 885 886: 50(fvec4) Load 55(inF0) 887: 843(bvec4) FOrdLessThan 886 844 888: 137(bool) Any 887 SelectionMerge 890 None BranchConditional 888 889 890 889: Label Kill 890: Label 892: 52(ivec4) Load 58(inU0) 894: 843(bvec4) ULessThan 892 893 895: 137(bool) Any 894 SelectionMerge 897 None BranchConditional 895 896 897 896: Label Kill 897: Label 900: 50(fvec4) Load 55(inF0) 901: 50(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 900 Store 899(r013) 901 903: 50(fvec4) Load 55(inF0) 904: 50(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 903 Store 902(r014) 904 907: 52(ivec4) BitCount 906 Store 905(r015) 907 909: 50(fvec4) Load 55(inF0) 910: 50(fvec4) DPdx 909 Store 908(r016) 910 912: 50(fvec4) Load 55(inF0) 913: 50(fvec4) DPdxCoarse 912 Store 911(r017) 913 915: 50(fvec4) Load 55(inF0) 916: 50(fvec4) DPdxFine 915 Store 914(r018) 916 918: 50(fvec4) Load 55(inF0) 919: 50(fvec4) DPdy 918 Store 917(r019) 919 921: 50(fvec4) Load 55(inF0) 922: 50(fvec4) DPdyCoarse 921 Store 920(r020) 922 924: 50(fvec4) Load 55(inF0) 925: 50(fvec4) DPdyFine 924 Store 923(r021) 925 927: 50(fvec4) Load 55(inF0) 928: 50(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 927 Store 926(r022) 928 930: 50(fvec4) Load 55(inF0) 931: 50(fvec4) Load 56(inF1) 932: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 930 931 Store 929(r023) 932 934: 50(fvec4) Load 55(inF0) 935: 50(fvec4) Load 56(inF1) 936: 6(float) Dot 934 935 Store 933(r024) 936 938: 7(ptr) AccessChain 55(inF0) 540 939: 6(float) Load 938 940: 7(ptr) AccessChain 56(inF1) 540 941: 6(float) Load 940 942: 6(float) FMul 939 941 943: 7(ptr) AccessChain 55(inF0) 541 944: 6(float) Load 943 945: 7(ptr) AccessChain 56(inF1) 657 946: 6(float) Load 945 947: 50(fvec4) CompositeConstruct 297 942 944 946 Store 937(r025) 947 949: 50(fvec4) Load 55(inF0) 950: 50(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 949 Store 948(r029) 950 952: 50(fvec4) Load 55(inF0) 953: 50(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 952 Store 951(r030) 953 955: 50(fvec4) Load 55(inF0) 956: 50(fvec4) Load 56(inF1) 957: 50(fvec4) Load 57(inF2) 958: 50(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 955 956 957 Store 954(r031) 958 963: 52(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 962 Store 959(r032) 963 965: 52(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 962 Store 964(r033) 965 967: 50(fvec4) Load 55(inF0) 968: 50(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 967 Store 966(r034) 968 970: 50(fvec4) Load 55(inF0) 971: 50(fvec4) Load 56(inF1) 972: 50(fvec4) FMod 970 971 Store 969(r036) 972 974: 50(fvec4) Load 55(inF0) 975: 50(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 974 Store 973(r037) 975 977: 50(fvec4) Load 55(inF0) 978: 50(fvec4) Fwidth 977 Store 976(r039) 978 981: 50(fvec4) Load 55(inF0) 982: 843(bvec4) IsInf 981 Store 980(r040) 982 984: 50(fvec4) Load 55(inF0) 985: 843(bvec4) IsNan 984 Store 983(r041) 985 987: 50(fvec4) Load 55(inF0) 988: 50(fvec4) Load 56(inF1) 989: 50(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 987 988 Store 986(r042) 989 991: 50(fvec4) Load 55(inF0) 992: 50(fvec4) Load 56(inF1) 993: 50(fvec4) Load 57(inF2) 994: 50(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 991 992 993 Store 990(r039a) 994 996: 50(fvec4) Load 55(inF0) 997: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 996 Store 995(r043) 997 999: 50(fvec4) Load 55(inF0) 1000: 50(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 999 Store 998(r044) 1000 1002: 50(fvec4) Load 55(inF0) 1003: 50(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 1002 1004: 50(fvec4) VectorTimesScalar 1003 276 Store 1001(r045) 1004 1006: 50(fvec4) Load 55(inF0) 1007: 50(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 1006 Store 1005(r046) 1007 1009: 50(fvec4) Load 55(inF0) 1010: 50(fvec4) Load 56(inF1) 1011: 50(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 1009 1010 Store 1008(r047) 1011 1013: 50(fvec4) Load 55(inF0) 1014: 50(fvec4) Load 56(inF1) 1015: 50(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 1013 1014 Store 1012(r048) 1015 1017: 50(fvec4) Load 55(inF0) 1018: 50(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 1017 Store 1016(r049) 1018 1020: 50(fvec4) Load 55(inF0) 1021: 50(fvec4) Load 56(inF1) 1022: 50(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 1020 1021 Store 1019(r050) 1022 1024: 50(fvec4) Load 55(inF0) 1025: 50(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 1024 Store 1023(r051) 1025 1027: 50(fvec4) Load 55(inF0) 1028: 50(fvec4) CompositeConstruct 297 297 297 297 1029: 50(fvec4) FDiv 1028 1027 Store 1026(r052) 1029 1031: 50(fvec4) Load 55(inF0) 1032: 50(fvec4) Load 56(inF1) 1033: 50(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1031 1032 Store 1030(r053) 1033 1035: 50(fvec4) Load 55(inF0) 1036: 50(fvec4) Load 56(inF1) 1037: 50(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1035 1036 247 Store 1034(r054) 1037 1040: 52(ivec4) BitReverse 1039 Store 1038(r055) 1040 1042: 50(fvec4) Load 55(inF0) 1043: 50(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1042 Store 1041(r056) 1043 1045: 50(fvec4) Load 55(inF0) 1046: 50(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1045 Store 1044(r057) 1046 1048: 50(fvec4) Load 55(inF0) 1049: 50(fvec4) CompositeConstruct 141 141 141 141 1050: 50(fvec4) CompositeConstruct 297 297 297 297 1051: 50(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1048 1049 1050 Store 1047(r058) 1051 1053: 50(fvec4) Load 55(inF0) 1054: 50(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1053 Store 1052(r059) 1054 1056: 50(fvec4) Load 55(inF0) 1057: 50(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1056 Store 1055(r060) 1057 1058: 50(fvec4) Load 55(inF0) 1059: 50(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1058 Store 56(inF1) 1059 1060: 50(fvec4) Load 55(inF0) 1061: 50(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1060 Store 57(inF2) 1061 1063: 50(fvec4) Load 55(inF0) 1064: 50(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1063 Store 1062(r061) 1064 1066: 50(fvec4) Load 55(inF0) 1067: 50(fvec4) Load 56(inF1) 1068: 50(fvec4) Load 57(inF2) 1069: 50(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1066 1067 1068 Store 1065(r062) 1069 1071: 50(fvec4) Load 55(inF0) 1072: 50(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1071 Store 1070(r063) 1072 1074: 50(fvec4) Load 55(inF0) 1075: 50(fvec4) Load 56(inF1) 1076: 50(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1074 1075 Store 1073(r064) 1076 1078: 50(fvec4) Load 55(inF0) 1079: 50(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1078 Store 1077(r065) 1079 1081: 50(fvec4) Load 55(inF0) 1082: 50(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1081 Store 1080(r066) 1082 1084: 50(fvec4) Load 55(inF0) 1085: 50(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1084 Store 1083(r067) 1085 ReturnValue 1087 FunctionEnd 68(PixelShaderFunction2x2(mf22;mf22;mf22;): 62 Function None 64 65(inF0): 63(ptr) FunctionParameter 66(inF1): 63(ptr) FunctionParameter 67(inF2): 63(ptr) FunctionParameter 69: Label 1090(r000): 138(ptr) Variable Function 1095(r001): 63(ptr) Variable Function 1100(r003): 138(ptr) Variable Function 1104(r004): 63(ptr) Variable Function 1107(r005): 63(ptr) Variable Function 1110(r006): 63(ptr) Variable Function 1114(r007): 63(ptr) Variable Function 1124(r008): 63(ptr) Variable Function 1129(r009): 63(ptr) Variable Function 1132(r010): 63(ptr) Variable Function 1135(r011): 63(ptr) Variable Function 1138(r012): 63(ptr) Variable Function 1141(r013): 63(ptr) Variable Function 1144(r014): 63(ptr) Variable Function 1147(r015): 63(ptr) Variable Function 1150(r016): 63(ptr) Variable Function 1153(r017): 63(ptr) Variable Function 1156(r018): 7(ptr) Variable Function 1159(r019): 63(ptr) Variable Function 1162(R020): 63(ptr) Variable Function 1165(r021): 63(ptr) Variable Function 1168(r022): 63(ptr) Variable Function 1178(r023): 63(ptr) Variable Function 1181(r025): 63(ptr) Variable Function 1184(r026): 63(ptr) Variable Function 1188(r026a): 63(ptr) Variable Function 1193(r027): 63(ptr) Variable Function 1196(r028): 63(ptr) Variable Function 1200(r029): 63(ptr) Variable Function 1203(r030): 63(ptr) Variable Function 1207(r031): 63(ptr) Variable Function 1211(r032): 63(ptr) Variable Function 1215(r033): 63(ptr) Variable Function 1218(r034): 63(ptr) Variable Function 1221(r035): 63(ptr) Variable Function 1224(r036): 63(ptr) Variable Function 1229(r037): 63(ptr) Variable Function 1232(r038): 63(ptr) Variable Function 1239(r039): 63(ptr) Variable Function 1242(r049): 63(ptr) Variable Function 1247(r041): 63(ptr) Variable Function 1250(r042): 63(ptr) Variable Function 1254(r043): 63(ptr) Variable Function 1257(r044): 63(ptr) Variable Function 1262(r046): 63(ptr) Variable Function 1091: 62 Load 65(inF0) 1093: 1092 FUnordNotEqual 1091 141 1094: 137(bool) All 1093 Store 1090(r000) 1094 1096: 62 Load 65(inF0) 1097: 62 ExtInst 1(GLSL.std.450) 4(FAbs) 1096 Store 1095(r001) 1097 1098: 62 Load 65(inF0) 1099: 62 ExtInst 1(GLSL.std.450) 17(Acos) 1098 1101: 62 Load 65(inF0) 1102: 1092 FUnordNotEqual 1101 141 1103: 137(bool) Any 1102 Store 1100(r003) 1103 1105: 62 Load 65(inF0) 1106: 62 ExtInst 1(GLSL.std.450) 16(Asin) 1105 Store 1104(r004) 1106 1108: 62 Load 65(inF0) 1109: 62 ExtInst 1(GLSL.std.450) 18(Atan) 1108 Store 1107(r005) 1109 1111: 62 Load 65(inF0) 1112: 62 Load 66(inF1) 1113: 62 ExtInst 1(GLSL.std.450) 25(Atan2) 1111 1112 Store 1110(r006) 1113 1115: 62 Load 65(inF0) 1116: 62 ExtInst 1(GLSL.std.450) 9(Ceil) 1115 Store 1114(r007) 1116 1117: 62 Load 65(inF0) 1119: 1092 FOrdLessThan 1117 1118 1120: 137(bool) Any 1119 SelectionMerge 1122 None BranchConditional 1120 1121 1122 1121: Label Kill 1122: Label 1125: 62 Load 65(inF0) 1126: 62 Load 66(inF1) 1127: 62 Load 67(inF2) 1128: 62 ExtInst 1(GLSL.std.450) 43(FClamp) 1125 1126 1127 Store 1124(r008) 1128 1130: 62 Load 65(inF0) 1131: 62 ExtInst 1(GLSL.std.450) 14(Cos) 1130 Store 1129(r009) 1131 1133: 62 Load 65(inF0) 1134: 62 ExtInst 1(GLSL.std.450) 20(Cosh) 1133 Store 1132(r010) 1134 1136: 62 Load 65(inF0) 1137: 62 DPdx 1136 Store 1135(r011) 1137 1139: 62 Load 65(inF0) 1140: 62 DPdxCoarse 1139 Store 1138(r012) 1140 1142: 62 Load 65(inF0) 1143: 62 DPdxFine 1142 Store 1141(r013) 1143 1145: 62 Load 65(inF0) 1146: 62 DPdy 1145 Store 1144(r014) 1146 1148: 62 Load 65(inF0) 1149: 62 DPdyCoarse 1148 Store 1147(r015) 1149 1151: 62 Load 65(inF0) 1152: 62 DPdyFine 1151 Store 1150(r016) 1152 1154: 62 Load 65(inF0) 1155: 62 ExtInst 1(GLSL.std.450) 12(Degrees) 1154 Store 1153(r017) 1155 1157: 62 Load 65(inF0) 1158: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1157 Store 1156(r018) 1158 1160: 62 Load 65(inF0) 1161: 62 ExtInst 1(GLSL.std.450) 27(Exp) 1160 Store 1159(r019) 1161 1163: 62 Load 65(inF0) 1164: 62 ExtInst 1(GLSL.std.450) 29(Exp2) 1163 Store 1162(R020) 1164 1166: 62 Load 65(inF0) 1167: 62 ExtInst 1(GLSL.std.450) 8(Floor) 1166 Store 1165(r021) 1167 1169: 62 Load 65(inF0) 1170: 62 Load 66(inF1) 1171: 26(fvec2) CompositeExtract 1169 0 1172: 26(fvec2) CompositeExtract 1170 0 1173: 26(fvec2) FMod 1171 1172 1174: 26(fvec2) CompositeExtract 1169 1 1175: 26(fvec2) CompositeExtract 1170 1 1176: 26(fvec2) FMod 1174 1175 1177: 62 CompositeConstruct 1173 1176 Store 1168(r022) 1177 1179: 62 Load 65(inF0) 1180: 62 ExtInst 1(GLSL.std.450) 10(Fract) 1179 Store 1178(r023) 1180 1182: 62 Load 65(inF0) 1183: 62 Fwidth 1182 Store 1181(r025) 1183 1185: 62 Load 65(inF0) 1186: 62 Load 66(inF1) 1187: 62 ExtInst 1(GLSL.std.450) 53(Ldexp) 1185 1186 Store 1184(r026) 1187 1189: 62 Load 65(inF0) 1190: 62 Load 66(inF1) 1191: 62 Load 67(inF2) 1192: 62 ExtInst 1(GLSL.std.450) 46(FMix) 1189 1190 1191 Store 1188(r026a) 1192 1194: 62 Load 65(inF0) 1195: 62 ExtInst 1(GLSL.std.450) 28(Log) 1194 Store 1193(r027) 1195 1197: 62 Load 65(inF0) 1198: 62 ExtInst 1(GLSL.std.450) 30(Log2) 1197 1199: 62 MatrixTimesScalar 1198 276 Store 1196(r028) 1199 1201: 62 Load 65(inF0) 1202: 62 ExtInst 1(GLSL.std.450) 30(Log2) 1201 Store 1200(r029) 1202 1204: 62 Load 65(inF0) 1205: 62 Load 66(inF1) 1206: 62 ExtInst 1(GLSL.std.450) 40(FMax) 1204 1205 Store 1203(r030) 1206 1208: 62 Load 65(inF0) 1209: 62 Load 66(inF1) 1210: 62 ExtInst 1(GLSL.std.450) 37(FMin) 1208 1209 Store 1207(r031) 1210 1212: 62 Load 65(inF0) 1213: 62 Load 66(inF1) 1214: 62 ExtInst 1(GLSL.std.450) 26(Pow) 1212 1213 Store 1211(r032) 1214 1216: 62 Load 65(inF0) 1217: 62 ExtInst 1(GLSL.std.450) 11(Radians) 1216 Store 1215(r033) 1217 1219: 62 Load 65(inF0) 1220: 62 ExtInst 1(GLSL.std.450) 2(RoundEven) 1219 Store 1218(r034) 1220 1222: 62 Load 65(inF0) 1223: 62 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1222 Store 1221(r035) 1223 1225: 62 Load 65(inF0) 1226: 26(fvec2) CompositeConstruct 141 141 1227: 26(fvec2) CompositeConstruct 297 297 1228: 62 ExtInst 1(GLSL.std.450) 43(FClamp) 1225 1226 1227 Store 1224(r036) 1228 1230: 62 Load 65(inF0) 1231: 62 ExtInst 1(GLSL.std.450) 6(FSign) 1230 Store 1229(r037) 1231 1233: 62 Load 65(inF0) 1234: 62 ExtInst 1(GLSL.std.450) 13(Sin) 1233 Store 1232(r038) 1234 1235: 62 Load 65(inF0) 1236: 62 ExtInst 1(GLSL.std.450) 13(Sin) 1235 Store 66(inF1) 1236 1237: 62 Load 65(inF0) 1238: 62 ExtInst 1(GLSL.std.450) 14(Cos) 1237 Store 67(inF2) 1238 1240: 62 Load 65(inF0) 1241: 62 ExtInst 1(GLSL.std.450) 19(Sinh) 1240 Store 1239(r039) 1241 1243: 62 Load 65(inF0) 1244: 62 Load 66(inF1) 1245: 62 Load 67(inF2) 1246: 62 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1243 1244 1245 Store 1242(r049) 1246 1248: 62 Load 65(inF0) 1249: 62 ExtInst 1(GLSL.std.450) 31(Sqrt) 1248 Store 1247(r041) 1249 1251: 62 Load 65(inF0) 1252: 62 Load 66(inF1) 1253: 62 ExtInst 1(GLSL.std.450) 48(Step) 1251 1252 Store 1250(r042) 1253 1255: 62 Load 65(inF0) 1256: 62 ExtInst 1(GLSL.std.450) 15(Tan) 1255 Store 1254(r043) 1256 1258: 62 Load 65(inF0) 1259: 62 ExtInst 1(GLSL.std.450) 21(Tanh) 1258 Store 1257(r044) 1259 1260: 62 Load 65(inF0) 1261: 62 Transpose 1260 1263: 62 Load 65(inF0) 1264: 62 ExtInst 1(GLSL.std.450) 3(Trunc) 1263 Store 1262(r046) 1264 ReturnValue 1266 FunctionEnd 76(PixelShaderFunction3x3(mf33;mf33;mf33;): 70 Function None 72 73(inF0): 71(ptr) FunctionParameter 74(inF1): 71(ptr) FunctionParameter 75(inF2): 71(ptr) FunctionParameter 77: Label 1269(r000): 138(ptr) Variable Function 1274(r001): 71(ptr) Variable Function 1279(r003): 138(ptr) Variable Function 1283(r004): 71(ptr) Variable Function 1286(r005): 71(ptr) Variable Function 1289(r006): 71(ptr) Variable Function 1293(r007): 71(ptr) Variable Function 1303(r008): 71(ptr) Variable Function 1308(r009): 71(ptr) Variable Function 1311(r010): 71(ptr) Variable Function 1314(r011): 71(ptr) Variable Function 1317(r012): 71(ptr) Variable Function 1320(r013): 71(ptr) Variable Function 1323(r014): 71(ptr) Variable Function 1326(r015): 71(ptr) Variable Function 1329(r016): 71(ptr) Variable Function 1332(r017): 71(ptr) Variable Function 1335(r018): 7(ptr) Variable Function 1338(r019): 71(ptr) Variable Function 1341(R020): 71(ptr) Variable Function 1344(r021): 71(ptr) Variable Function 1347(r022): 71(ptr) Variable Function 1360(r023): 71(ptr) Variable Function 1363(r025): 71(ptr) Variable Function 1366(r026): 71(ptr) Variable Function 1370(r026a): 71(ptr) Variable Function 1375(r027): 71(ptr) Variable Function 1378(r028): 71(ptr) Variable Function 1382(r029): 71(ptr) Variable Function 1385(r030): 71(ptr) Variable Function 1389(r031): 71(ptr) Variable Function 1393(r032): 71(ptr) Variable Function 1397(r033): 71(ptr) Variable Function 1400(r034): 71(ptr) Variable Function 1403(r035): 71(ptr) Variable Function 1406(r036): 71(ptr) Variable Function 1411(r037): 71(ptr) Variable Function 1414(r038): 71(ptr) Variable Function 1421(r039): 71(ptr) Variable Function 1424(r049): 71(ptr) Variable Function 1429(r041): 71(ptr) Variable Function 1432(r042): 71(ptr) Variable Function 1436(r043): 71(ptr) Variable Function 1439(r044): 71(ptr) Variable Function 1444(r046): 71(ptr) Variable Function 1270: 70 Load 73(inF0) 1272: 1271 FUnordNotEqual 1270 141 1273: 137(bool) All 1272 Store 1269(r000) 1273 1275: 70 Load 73(inF0) 1276: 70 ExtInst 1(GLSL.std.450) 4(FAbs) 1275 Store 1274(r001) 1276 1277: 70 Load 73(inF0) 1278: 70 ExtInst 1(GLSL.std.450) 17(Acos) 1277 1280: 70 Load 73(inF0) 1281: 1271 FUnordNotEqual 1280 141 1282: 137(bool) Any 1281 Store 1279(r003) 1282 1284: 70 Load 73(inF0) 1285: 70 ExtInst 1(GLSL.std.450) 16(Asin) 1284 Store 1283(r004) 1285 1287: 70 Load 73(inF0) 1288: 70 ExtInst 1(GLSL.std.450) 18(Atan) 1287 Store 1286(r005) 1288 1290: 70 Load 73(inF0) 1291: 70 Load 74(inF1) 1292: 70 ExtInst 1(GLSL.std.450) 25(Atan2) 1290 1291 Store 1289(r006) 1292 1294: 70 Load 73(inF0) 1295: 70 ExtInst 1(GLSL.std.450) 9(Ceil) 1294 Store 1293(r007) 1295 1296: 70 Load 73(inF0) 1298: 1271 FOrdLessThan 1296 1297 1299: 137(bool) Any 1298 SelectionMerge 1301 None BranchConditional 1299 1300 1301 1300: Label Kill 1301: Label 1304: 70 Load 73(inF0) 1305: 70 Load 74(inF1) 1306: 70 Load 75(inF2) 1307: 70 ExtInst 1(GLSL.std.450) 43(FClamp) 1304 1305 1306 Store 1303(r008) 1307 1309: 70 Load 73(inF0) 1310: 70 ExtInst 1(GLSL.std.450) 14(Cos) 1309 Store 1308(r009) 1310 1312: 70 Load 73(inF0) 1313: 70 ExtInst 1(GLSL.std.450) 20(Cosh) 1312 Store 1311(r010) 1313 1315: 70 Load 73(inF0) 1316: 70 DPdx 1315 Store 1314(r011) 1316 1318: 70 Load 73(inF0) 1319: 70 DPdxCoarse 1318 Store 1317(r012) 1319 1321: 70 Load 73(inF0) 1322: 70 DPdxFine 1321 Store 1320(r013) 1322 1324: 70 Load 73(inF0) 1325: 70 DPdy 1324 Store 1323(r014) 1325 1327: 70 Load 73(inF0) 1328: 70 DPdyCoarse 1327 Store 1326(r015) 1328 1330: 70 Load 73(inF0) 1331: 70 DPdyFine 1330 Store 1329(r016) 1331 1333: 70 Load 73(inF0) 1334: 70 ExtInst 1(GLSL.std.450) 12(Degrees) 1333 Store 1332(r017) 1334 1336: 70 Load 73(inF0) 1337: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1336 Store 1335(r018) 1337 1339: 70 Load 73(inF0) 1340: 70 ExtInst 1(GLSL.std.450) 27(Exp) 1339 Store 1338(r019) 1340 1342: 70 Load 73(inF0) 1343: 70 ExtInst 1(GLSL.std.450) 29(Exp2) 1342 Store 1341(R020) 1343 1345: 70 Load 73(inF0) 1346: 70 ExtInst 1(GLSL.std.450) 8(Floor) 1345 Store 1344(r021) 1346 1348: 70 Load 73(inF0) 1349: 70 Load 74(inF1) 1350: 38(fvec3) CompositeExtract 1348 0 1351: 38(fvec3) CompositeExtract 1349 0 1352: 38(fvec3) FMod 1350 1351 1353: 38(fvec3) CompositeExtract 1348 1 1354: 38(fvec3) CompositeExtract 1349 1 1355: 38(fvec3) FMod 1353 1354 1356: 38(fvec3) CompositeExtract 1348 2 1357: 38(fvec3) CompositeExtract 1349 2 1358: 38(fvec3) FMod 1356 1357 1359: 70 CompositeConstruct 1352 1355 1358 Store 1347(r022) 1359 1361: 70 Load 73(inF0) 1362: 70 ExtInst 1(GLSL.std.450) 10(Fract) 1361 Store 1360(r023) 1362 1364: 70 Load 73(inF0) 1365: 70 Fwidth 1364 Store 1363(r025) 1365 1367: 70 Load 73(inF0) 1368: 70 Load 74(inF1) 1369: 70 ExtInst 1(GLSL.std.450) 53(Ldexp) 1367 1368 Store 1366(r026) 1369 1371: 70 Load 73(inF0) 1372: 70 Load 74(inF1) 1373: 70 Load 75(inF2) 1374: 70 ExtInst 1(GLSL.std.450) 46(FMix) 1371 1372 1373 Store 1370(r026a) 1374 1376: 70 Load 73(inF0) 1377: 70 ExtInst 1(GLSL.std.450) 28(Log) 1376 Store 1375(r027) 1377 1379: 70 Load 73(inF0) 1380: 70 ExtInst 1(GLSL.std.450) 30(Log2) 1379 1381: 70 MatrixTimesScalar 1380 276 Store 1378(r028) 1381 1383: 70 Load 73(inF0) 1384: 70 ExtInst 1(GLSL.std.450) 30(Log2) 1383 Store 1382(r029) 1384 1386: 70 Load 73(inF0) 1387: 70 Load 74(inF1) 1388: 70 ExtInst 1(GLSL.std.450) 40(FMax) 1386 1387 Store 1385(r030) 1388 1390: 70 Load 73(inF0) 1391: 70 Load 74(inF1) 1392: 70 ExtInst 1(GLSL.std.450) 37(FMin) 1390 1391 Store 1389(r031) 1392 1394: 70 Load 73(inF0) 1395: 70 Load 74(inF1) 1396: 70 ExtInst 1(GLSL.std.450) 26(Pow) 1394 1395 Store 1393(r032) 1396 1398: 70 Load 73(inF0) 1399: 70 ExtInst 1(GLSL.std.450) 11(Radians) 1398 Store 1397(r033) 1399 1401: 70 Load 73(inF0) 1402: 70 ExtInst 1(GLSL.std.450) 2(RoundEven) 1401 Store 1400(r034) 1402 1404: 70 Load 73(inF0) 1405: 70 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1404 Store 1403(r035) 1405 1407: 70 Load 73(inF0) 1408: 38(fvec3) CompositeConstruct 141 141 141 1409: 38(fvec3) CompositeConstruct 297 297 297 1410: 70 ExtInst 1(GLSL.std.450) 43(FClamp) 1407 1408 1409 Store 1406(r036) 1410 1412: 70 Load 73(inF0) 1413: 70 ExtInst 1(GLSL.std.450) 6(FSign) 1412 Store 1411(r037) 1413 1415: 70 Load 73(inF0) 1416: 70 ExtInst 1(GLSL.std.450) 13(Sin) 1415 Store 1414(r038) 1416 1417: 70 Load 73(inF0) 1418: 70 ExtInst 1(GLSL.std.450) 13(Sin) 1417 Store 74(inF1) 1418 1419: 70 Load 73(inF0) 1420: 70 ExtInst 1(GLSL.std.450) 14(Cos) 1419 Store 75(inF2) 1420 1422: 70 Load 73(inF0) 1423: 70 ExtInst 1(GLSL.std.450) 19(Sinh) 1422 Store 1421(r039) 1423 1425: 70 Load 73(inF0) 1426: 70 Load 74(inF1) 1427: 70 Load 75(inF2) 1428: 70 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1425 1426 1427 Store 1424(r049) 1428 1430: 70 Load 73(inF0) 1431: 70 ExtInst 1(GLSL.std.450) 31(Sqrt) 1430 Store 1429(r041) 1431 1433: 70 Load 73(inF0) 1434: 70 Load 74(inF1) 1435: 70 ExtInst 1(GLSL.std.450) 48(Step) 1433 1434 Store 1432(r042) 1435 1437: 70 Load 73(inF0) 1438: 70 ExtInst 1(GLSL.std.450) 15(Tan) 1437 Store 1436(r043) 1438 1440: 70 Load 73(inF0) 1441: 70 ExtInst 1(GLSL.std.450) 21(Tanh) 1440 Store 1439(r044) 1441 1442: 70 Load 73(inF0) 1443: 70 Transpose 1442 1445: 70 Load 73(inF0) 1446: 70 ExtInst 1(GLSL.std.450) 3(Trunc) 1445 Store 1444(r046) 1446 ReturnValue 1448 FunctionEnd 84(PixelShaderFunction4x4(mf44;mf44;mf44;): 78 Function None 80 81(inF0): 79(ptr) FunctionParameter 82(inF1): 79(ptr) FunctionParameter 83(inF2): 79(ptr) FunctionParameter 85: Label 1451(r000): 138(ptr) Variable Function 1456(r001): 79(ptr) Variable Function 1461(r003): 138(ptr) Variable Function 1465(r004): 79(ptr) Variable Function 1468(r005): 79(ptr) Variable Function 1471(r006): 79(ptr) Variable Function 1475(r007): 79(ptr) Variable Function 1485(r008): 79(ptr) Variable Function 1490(r009): 79(ptr) Variable Function 1493(r010): 79(ptr) Variable Function 1496(r011): 79(ptr) Variable Function 1499(r012): 79(ptr) Variable Function 1502(r013): 79(ptr) Variable Function 1505(r014): 79(ptr) Variable Function 1508(r015): 79(ptr) Variable Function 1511(r016): 79(ptr) Variable Function 1514(r017): 79(ptr) Variable Function 1517(r018): 7(ptr) Variable Function 1520(r019): 79(ptr) Variable Function 1523(R020): 79(ptr) Variable Function 1526(r021): 79(ptr) Variable Function 1529(r022): 79(ptr) Variable Function 1545(r023): 79(ptr) Variable Function 1548(r025): 79(ptr) Variable Function 1551(r026): 79(ptr) Variable Function 1555(r026a): 79(ptr) Variable Function 1560(r027): 79(ptr) Variable Function 1563(r028): 79(ptr) Variable Function 1567(r029): 79(ptr) Variable Function 1570(r030): 79(ptr) Variable Function 1574(r031): 79(ptr) Variable Function 1578(r032): 79(ptr) Variable Function 1582(r033): 79(ptr) Variable Function 1585(r034): 79(ptr) Variable Function 1588(r035): 79(ptr) Variable Function 1591(r036): 79(ptr) Variable Function 1596(r037): 79(ptr) Variable Function 1599(r038): 79(ptr) Variable Function 1606(r039): 79(ptr) Variable Function 1609(r049): 79(ptr) Variable Function 1614(r041): 79(ptr) Variable Function 1617(r042): 79(ptr) Variable Function 1621(r043): 79(ptr) Variable Function 1624(r044): 79(ptr) Variable Function 1629(r046): 79(ptr) Variable Function 1452: 78 Load 81(inF0) 1454: 1453 FUnordNotEqual 1452 141 1455: 137(bool) All 1454 Store 1451(r000) 1455 1457: 78 Load 81(inF0) 1458: 78 ExtInst 1(GLSL.std.450) 4(FAbs) 1457 Store 1456(r001) 1458 1459: 78 Load 81(inF0) 1460: 78 ExtInst 1(GLSL.std.450) 17(Acos) 1459 1462: 78 Load 81(inF0) 1463: 1453 FUnordNotEqual 1462 141 1464: 137(bool) Any 1463 Store 1461(r003) 1464 1466: 78 Load 81(inF0) 1467: 78 ExtInst 1(GLSL.std.450) 16(Asin) 1466 Store 1465(r004) 1467 1469: 78 Load 81(inF0) 1470: 78 ExtInst 1(GLSL.std.450) 18(Atan) 1469 Store 1468(r005) 1470 1472: 78 Load 81(inF0) 1473: 78 Load 82(inF1) 1474: 78 ExtInst 1(GLSL.std.450) 25(Atan2) 1472 1473 Store 1471(r006) 1474 1476: 78 Load 81(inF0) 1477: 78 ExtInst 1(GLSL.std.450) 9(Ceil) 1476 Store 1475(r007) 1477 1478: 78 Load 81(inF0) 1480: 1453 FOrdLessThan 1478 1479 1481: 137(bool) Any 1480 SelectionMerge 1483 None BranchConditional 1481 1482 1483 1482: Label Kill 1483: Label 1486: 78 Load 81(inF0) 1487: 78 Load 82(inF1) 1488: 78 Load 83(inF2) 1489: 78 ExtInst 1(GLSL.std.450) 43(FClamp) 1486 1487 1488 Store 1485(r008) 1489 1491: 78 Load 81(inF0) 1492: 78 ExtInst 1(GLSL.std.450) 14(Cos) 1491 Store 1490(r009) 1492 1494: 78 Load 81(inF0) 1495: 78 ExtInst 1(GLSL.std.450) 20(Cosh) 1494 Store 1493(r010) 1495 1497: 78 Load 81(inF0) 1498: 78 DPdx 1497 Store 1496(r011) 1498 1500: 78 Load 81(inF0) 1501: 78 DPdxCoarse 1500 Store 1499(r012) 1501 1503: 78 Load 81(inF0) 1504: 78 DPdxFine 1503 Store 1502(r013) 1504 1506: 78 Load 81(inF0) 1507: 78 DPdy 1506 Store 1505(r014) 1507 1509: 78 Load 81(inF0) 1510: 78 DPdyCoarse 1509 Store 1508(r015) 1510 1512: 78 Load 81(inF0) 1513: 78 DPdyFine 1512 Store 1511(r016) 1513 1515: 78 Load 81(inF0) 1516: 78 ExtInst 1(GLSL.std.450) 12(Degrees) 1515 Store 1514(r017) 1516 1518: 78 Load 81(inF0) 1519: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1518 Store 1517(r018) 1519 1521: 78 Load 81(inF0) 1522: 78 ExtInst 1(GLSL.std.450) 27(Exp) 1521 Store 1520(r019) 1522 1524: 78 Load 81(inF0) 1525: 78 ExtInst 1(GLSL.std.450) 29(Exp2) 1524 Store 1523(R020) 1525 1527: 78 Load 81(inF0) 1528: 78 ExtInst 1(GLSL.std.450) 8(Floor) 1527 Store 1526(r021) 1528 1530: 78 Load 81(inF0) 1531: 78 Load 82(inF1) 1532: 50(fvec4) CompositeExtract 1530 0 1533: 50(fvec4) CompositeExtract 1531 0 1534: 50(fvec4) FMod 1532 1533 1535: 50(fvec4) CompositeExtract 1530 1 1536: 50(fvec4) CompositeExtract 1531 1 1537: 50(fvec4) FMod 1535 1536 1538: 50(fvec4) CompositeExtract 1530 2 1539: 50(fvec4) CompositeExtract 1531 2 1540: 50(fvec4) FMod 1538 1539 1541: 50(fvec4) CompositeExtract 1530 3 1542: 50(fvec4) CompositeExtract 1531 3 1543: 50(fvec4) FMod 1541 1542 1544: 78 CompositeConstruct 1534 1537 1540 1543 Store 1529(r022) 1544 1546: 78 Load 81(inF0) 1547: 78 ExtInst 1(GLSL.std.450) 10(Fract) 1546 Store 1545(r023) 1547 1549: 78 Load 81(inF0) 1550: 78 Fwidth 1549 Store 1548(r025) 1550 1552: 78 Load 81(inF0) 1553: 78 Load 82(inF1) 1554: 78 ExtInst 1(GLSL.std.450) 53(Ldexp) 1552 1553 Store 1551(r026) 1554 1556: 78 Load 81(inF0) 1557: 78 Load 82(inF1) 1558: 78 Load 83(inF2) 1559: 78 ExtInst 1(GLSL.std.450) 46(FMix) 1556 1557 1558 Store 1555(r026a) 1559 1561: 78 Load 81(inF0) 1562: 78 ExtInst 1(GLSL.std.450) 28(Log) 1561 Store 1560(r027) 1562 1564: 78 Load 81(inF0) 1565: 78 ExtInst 1(GLSL.std.450) 30(Log2) 1564 1566: 78 MatrixTimesScalar 1565 276 Store 1563(r028) 1566 1568: 78 Load 81(inF0) 1569: 78 ExtInst 1(GLSL.std.450) 30(Log2) 1568 Store 1567(r029) 1569 1571: 78 Load 81(inF0) 1572: 78 Load 82(inF1) 1573: 78 ExtInst 1(GLSL.std.450) 40(FMax) 1571 1572 Store 1570(r030) 1573 1575: 78 Load 81(inF0) 1576: 78 Load 82(inF1) 1577: 78 ExtInst 1(GLSL.std.450) 37(FMin) 1575 1576 Store 1574(r031) 1577 1579: 78 Load 81(inF0) 1580: 78 Load 82(inF1) 1581: 78 ExtInst 1(GLSL.std.450) 26(Pow) 1579 1580 Store 1578(r032) 1581 1583: 78 Load 81(inF0) 1584: 78 ExtInst 1(GLSL.std.450) 11(Radians) 1583 Store 1582(r033) 1584 1586: 78 Load 81(inF0) 1587: 78 ExtInst 1(GLSL.std.450) 2(RoundEven) 1586 Store 1585(r034) 1587 1589: 78 Load 81(inF0) 1590: 78 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1589 Store 1588(r035) 1590 1592: 78 Load 81(inF0) 1593: 50(fvec4) CompositeConstruct 141 141 141 141 1594: 50(fvec4) CompositeConstruct 297 297 297 297 1595: 78 ExtInst 1(GLSL.std.450) 43(FClamp) 1592 1593 1594 Store 1591(r036) 1595 1597: 78 Load 81(inF0) 1598: 78 ExtInst 1(GLSL.std.450) 6(FSign) 1597 Store 1596(r037) 1598 1600: 78 Load 81(inF0) 1601: 78 ExtInst 1(GLSL.std.450) 13(Sin) 1600 Store 1599(r038) 1601 1602: 78 Load 81(inF0) 1603: 78 ExtInst 1(GLSL.std.450) 13(Sin) 1602 Store 82(inF1) 1603 1604: 78 Load 81(inF0) 1605: 78 ExtInst 1(GLSL.std.450) 14(Cos) 1604 Store 83(inF2) 1605 1607: 78 Load 81(inF0) 1608: 78 ExtInst 1(GLSL.std.450) 19(Sinh) 1607 Store 1606(r039) 1608 1610: 78 Load 81(inF0) 1611: 78 Load 82(inF1) 1612: 78 Load 83(inF2) 1613: 78 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1610 1611 1612 Store 1609(r049) 1613 1615: 78 Load 81(inF0) 1616: 78 ExtInst 1(GLSL.std.450) 31(Sqrt) 1615 Store 1614(r041) 1616 1618: 78 Load 81(inF0) 1619: 78 Load 82(inF1) 1620: 78 ExtInst 1(GLSL.std.450) 48(Step) 1618 1619 Store 1617(r042) 1620 1622: 78 Load 81(inF0) 1623: 78 ExtInst 1(GLSL.std.450) 15(Tan) 1622 Store 1621(r043) 1623 1625: 78 Load 81(inF0) 1626: 78 ExtInst 1(GLSL.std.450) 21(Tanh) 1625 Store 1624(r044) 1626 1627: 78 Load 81(inF0) 1628: 78 Transpose 1627 1630: 78 Load 81(inF0) 1631: 78 ExtInst 1(GLSL.std.450) 3(Trunc) 1630 Store 1629(r046) 1631 ReturnValue 1633 FunctionEnd 93(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;): 2 Function None 86 87(inF0): 7(ptr) FunctionParameter 88(inF1): 7(ptr) FunctionParameter 89(inFV0): 27(ptr) FunctionParameter 90(inFV1): 27(ptr) FunctionParameter 91(inFM0): 63(ptr) FunctionParameter 92(inFM1): 63(ptr) FunctionParameter 94: Label 1636(r0): 7(ptr) Variable Function 1640(r1): 27(ptr) Variable Function 1644(r2): 27(ptr) Variable Function 1648(r3): 7(ptr) Variable Function 1652(r4): 27(ptr) Variable Function 1656(r5): 27(ptr) Variable Function 1660(r6): 63(ptr) Variable Function 1664(r7): 63(ptr) Variable Function 1668(r8): 63(ptr) Variable Function 1637: 6(float) Load 88(inF1) 1638: 6(float) Load 87(inF0) 1639: 6(float) FMul 1637 1638 Store 1636(r0) 1639 1641: 6(float) Load 87(inF0) 1642: 26(fvec2) Load 89(inFV0) 1643: 26(fvec2) VectorTimesScalar 1642 1641 Store 1640(r1) 1643 1645: 26(fvec2) Load 89(inFV0) 1646: 6(float) Load 87(inF0) 1647: 26(fvec2) VectorTimesScalar 1645 1646 Store 1644(r2) 1647 1649: 26(fvec2) Load 89(inFV0) 1650: 26(fvec2) Load 90(inFV1) 1651: 6(float) Dot 1649 1650 Store 1648(r3) 1651 1653: 26(fvec2) Load 89(inFV0) 1654: 62 Load 91(inFM0) 1655: 26(fvec2) VectorTimesMatrix 1653 1654 Store 1652(r4) 1655 1657: 62 Load 91(inFM0) 1658: 26(fvec2) Load 89(inFV0) 1659: 26(fvec2) MatrixTimesVector 1657 1658 Store 1656(r5) 1659 1661: 6(float) Load 87(inF0) 1662: 62 Load 91(inFM0) 1663: 62 MatrixTimesScalar 1662 1661 Store 1660(r6) 1663 1665: 62 Load 91(inFM0) 1666: 6(float) Load 87(inF0) 1667: 62 MatrixTimesScalar 1665 1666 Store 1664(r7) 1667 1669: 62 Load 92(inFM1) 1670: 62 Load 91(inFM0) 1671: 62 MatrixTimesMatrix 1669 1670 Store 1668(r8) 1671 Return FunctionEnd 102(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 95 96(inF0): 7(ptr) FunctionParameter 97(inF1): 7(ptr) FunctionParameter 98(inFV0): 39(ptr) FunctionParameter 99(inFV1): 39(ptr) FunctionParameter 100(inFM0): 71(ptr) FunctionParameter 101(inFM1): 71(ptr) FunctionParameter 103: Label 1672(r0): 7(ptr) Variable Function 1676(r1): 39(ptr) Variable Function 1680(r2): 39(ptr) Variable Function 1684(r3): 7(ptr) Variable Function 1688(r4): 39(ptr) Variable Function 1692(r5): 39(ptr) Variable Function 1696(r6): 71(ptr) Variable Function 1700(r7): 71(ptr) Variable Function 1704(r8): 71(ptr) Variable Function 1673: 6(float) Load 97(inF1) 1674: 6(float) Load 96(inF0) 1675: 6(float) FMul 1673 1674 Store 1672(r0) 1675 1677: 6(float) Load 96(inF0) 1678: 38(fvec3) Load 98(inFV0) 1679: 38(fvec3) VectorTimesScalar 1678 1677 Store 1676(r1) 1679 1681: 38(fvec3) Load 98(inFV0) 1682: 6(float) Load 96(inF0) 1683: 38(fvec3) VectorTimesScalar 1681 1682 Store 1680(r2) 1683 1685: 38(fvec3) Load 98(inFV0) 1686: 38(fvec3) Load 99(inFV1) 1687: 6(float) Dot 1685 1686 Store 1684(r3) 1687 1689: 38(fvec3) Load 98(inFV0) 1690: 70 Load 100(inFM0) 1691: 38(fvec3) VectorTimesMatrix 1689 1690 Store 1688(r4) 1691 1693: 70 Load 100(inFM0) 1694: 38(fvec3) Load 98(inFV0) 1695: 38(fvec3) MatrixTimesVector 1693 1694 Store 1692(r5) 1695 1697: 6(float) Load 96(inF0) 1698: 70 Load 100(inFM0) 1699: 70 MatrixTimesScalar 1698 1697 Store 1696(r6) 1699 1701: 70 Load 100(inFM0) 1702: 6(float) Load 96(inF0) 1703: 70 MatrixTimesScalar 1701 1702 Store 1700(r7) 1703 1705: 70 Load 101(inFM1) 1706: 70 Load 100(inFM0) 1707: 70 MatrixTimesMatrix 1705 1706 Store 1704(r8) 1707 Return FunctionEnd 111(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 104 105(inF0): 7(ptr) FunctionParameter 106(inF1): 7(ptr) FunctionParameter 107(inFV0): 51(ptr) FunctionParameter 108(inFV1): 51(ptr) FunctionParameter 109(inFM0): 79(ptr) FunctionParameter 110(inFM1): 79(ptr) FunctionParameter 112: Label 1708(r0): 7(ptr) Variable Function 1712(r1): 51(ptr) Variable Function 1716(r2): 51(ptr) Variable Function 1720(r3): 7(ptr) Variable Function 1724(r4): 51(ptr) Variable Function 1728(r5): 51(ptr) Variable Function 1732(r6): 79(ptr) Variable Function 1736(r7): 79(ptr) Variable Function 1740(r8): 79(ptr) Variable Function 1709: 6(float) Load 106(inF1) 1710: 6(float) Load 105(inF0) 1711: 6(float) FMul 1709 1710 Store 1708(r0) 1711 1713: 6(float) Load 105(inF0) 1714: 50(fvec4) Load 107(inFV0) 1715: 50(fvec4) VectorTimesScalar 1714 1713 Store 1712(r1) 1715 1717: 50(fvec4) Load 107(inFV0) 1718: 6(float) Load 105(inF0) 1719: 50(fvec4) VectorTimesScalar 1717 1718 Store 1716(r2) 1719 1721: 50(fvec4) Load 107(inFV0) 1722: 50(fvec4) Load 108(inFV1) 1723: 6(float) Dot 1721 1722 Store 1720(r3) 1723 1725: 50(fvec4) Load 107(inFV0) 1726: 78 Load 109(inFM0) 1727: 50(fvec4) VectorTimesMatrix 1725 1726 Store 1724(r4) 1727 1729: 78 Load 109(inFM0) 1730: 50(fvec4) Load 107(inFV0) 1731: 50(fvec4) MatrixTimesVector 1729 1730 Store 1728(r5) 1731 1733: 6(float) Load 105(inF0) 1734: 78 Load 109(inFM0) 1735: 78 MatrixTimesScalar 1734 1733 Store 1732(r6) 1735 1737: 78 Load 109(inFM0) 1738: 6(float) Load 105(inF0) 1739: 78 MatrixTimesScalar 1737 1738 Store 1736(r7) 1739 1741: 78 Load 110(inFM1) 1742: 78 Load 109(inFM0) 1743: 78 MatrixTimesMatrix 1741 1742 Store 1740(r8) 1743 Return FunctionEnd 131(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 121 122(inF0): 7(ptr) FunctionParameter 123(inF1): 7(ptr) FunctionParameter 124(inFV2): 27(ptr) FunctionParameter 125(inFV3): 39(ptr) FunctionParameter 126(inFM2x3): 114(ptr) FunctionParameter 127(inFM3x2): 116(ptr) FunctionParameter 128(inFM3x3): 71(ptr) FunctionParameter 129(inFM3x4): 118(ptr) FunctionParameter 130(inFM2x4): 120(ptr) FunctionParameter 132: Label 1744(r00): 7(ptr) Variable Function 1748(r01): 27(ptr) Variable Function 1752(r02): 39(ptr) Variable Function 1756(r03): 27(ptr) Variable Function 1760(r04): 39(ptr) Variable Function 1764(r05): 7(ptr) Variable Function 1768(r06): 7(ptr) Variable Function 1772(r07): 39(ptr) Variable Function 1776(r08): 27(ptr) Variable Function 1780(r09): 27(ptr) Variable Function 1784(r10): 39(ptr) Variable Function 1788(r11): 114(ptr) Variable Function 1792(r12): 116(ptr) Variable Function 1796(r13): 63(ptr) Variable Function 1800(r14): 114(ptr) Variable Function 1804(r15): 120(ptr) Variable Function 1808(r16): 118(ptr) Variable Function 1745: 6(float) Load 123(inF1) 1746: 6(float) Load 122(inF0) 1747: 6(float) FMul 1745 1746 Store 1744(r00) 1747 1749: 6(float) Load 122(inF0) 1750: 26(fvec2) Load 124(inFV2) 1751: 26(fvec2) VectorTimesScalar 1750 1749 Store 1748(r01) 1751 1753: 6(float) Load 122(inF0) 1754: 38(fvec3) Load 125(inFV3) 1755: 38(fvec3) VectorTimesScalar 1754 1753 Store 1752(r02) 1755 1757: 26(fvec2) Load 124(inFV2) 1758: 6(float) Load 122(inF0) 1759: 26(fvec2) VectorTimesScalar 1757 1758 Store 1756(r03) 1759 1761: 38(fvec3) Load 125(inFV3) 1762: 6(float) Load 122(inF0) 1763: 38(fvec3) VectorTimesScalar 1761 1762 Store 1760(r04) 1763 1765: 26(fvec2) Load 124(inFV2) 1766: 26(fvec2) Load 124(inFV2) 1767: 6(float) Dot 1765 1766 Store 1764(r05) 1767 1769: 38(fvec3) Load 125(inFV3) 1770: 38(fvec3) Load 125(inFV3) 1771: 6(float) Dot 1769 1770 Store 1768(r06) 1771 1773: 113 Load 126(inFM2x3) 1774: 26(fvec2) Load 124(inFV2) 1775: 38(fvec3) MatrixTimesVector 1773 1774 Store 1772(r07) 1775 1777: 115 Load 127(inFM3x2) 1778: 38(fvec3) Load 125(inFV3) 1779: 26(fvec2) MatrixTimesVector 1777 1778 Store 1776(r08) 1779 1781: 38(fvec3) Load 125(inFV3) 1782: 113 Load 126(inFM2x3) 1783: 26(fvec2) VectorTimesMatrix 1781 1782 Store 1780(r09) 1783 1785: 26(fvec2) Load 124(inFV2) 1786: 115 Load 127(inFM3x2) 1787: 38(fvec3) VectorTimesMatrix 1785 1786 Store 1784(r10) 1787 1789: 6(float) Load 122(inF0) 1790: 113 Load 126(inFM2x3) 1791: 113 MatrixTimesScalar 1790 1789 Store 1788(r11) 1791 1793: 6(float) Load 122(inF0) 1794: 115 Load 127(inFM3x2) 1795: 115 MatrixTimesScalar 1794 1793 Store 1792(r12) 1795 1797: 115 Load 127(inFM3x2) 1798: 113 Load 126(inFM2x3) 1799: 62 MatrixTimesMatrix 1797 1798 Store 1796(r13) 1799 1801: 70 Load 128(inFM3x3) 1802: 113 Load 126(inFM2x3) 1803: 113 MatrixTimesMatrix 1801 1802 Store 1800(r14) 1803 1805: 117 Load 129(inFM3x4) 1806: 113 Load 126(inFM2x3) 1807: 119 MatrixTimesMatrix 1805 1806 Store 1804(r15) 1807 1809: 119 Load 130(inFM2x4) 1810: 115 Load 127(inFM3x2) 1811: 117 MatrixTimesMatrix 1809 1810 Store 1808(r16) 1811 Return FunctionEnd 135(@main():133(PS_OUTPUT) Function None 134 136: Label 1813(ps_output): 1812(ptr) Variable Function 1815: 51(ptr) AccessChain 1813(ps_output) 187 Store 1815 1814 1816:133(PS_OUTPUT) Load 1813(ps_output) ReturnValue 1816 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.lit.frag.out000066400000000000000000000204671506534232700240440ustar00rootroot00000000000000hlsl.intrinsics.lit.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(f1;f1;f1; ( temp void) 0:2 Function Parameters: 0:2 'n_dot_l' ( in float) 0:2 'n_dot_h' ( in float) 0:2 'm' ( in float) 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:3 'r0' ( temp 4-component vector of float) 0:3 Construct vec4 ( temp 4-component vector of float) 0:3 Constant: 0:3 1.000000 0:3 max ( temp float) 0:3 'n_dot_l' ( in float) 0:3 Constant: 0:3 0.000000 0:3 Test condition and select ( temp float): no shortcircuit 0:3 Condition 0:3 Compare Less Than ( temp bool) 0:3 min ( temp float) 0:3 'n_dot_l' ( in float) 0:3 'n_dot_h' ( in float) 0:3 Constant: 0:3 0.000000 0:3 true case 0:3 Constant: 0:3 0.000000 0:3 false case 0:3 component-wise multiply ( temp float) 0:3 'n_dot_h' ( in float) 0:3 'm' ( in float) 0:3 Constant: 0:3 1.000000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? 'n_dot_l' ( temp float) 0:? 'n_dot_l' (layout( location=0) in float) 0:2 move second child to first child ( temp float) 0:? 'n_dot_h' ( temp float) 0:? 'n_dot_h' (layout( location=1) in float) 0:2 move second child to first child ( temp float) 0:? 'm' ( temp float) 0:? 'm' (layout( location=2) in float) 0:2 Function Call: @PixelShaderFunction(f1;f1;f1; ( temp void) 0:? 'n_dot_l' ( temp float) 0:? 'n_dot_h' ( temp float) 0:? 'm' ( temp float) 0:? Linker Objects 0:? 'n_dot_l' (layout( location=0) in float) 0:? 'n_dot_h' (layout( location=1) in float) 0:? 'm' (layout( location=2) in float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(f1;f1;f1; ( temp void) 0:2 Function Parameters: 0:2 'n_dot_l' ( in float) 0:2 'n_dot_h' ( in float) 0:2 'm' ( in float) 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:3 'r0' ( temp 4-component vector of float) 0:3 Construct vec4 ( temp 4-component vector of float) 0:3 Constant: 0:3 1.000000 0:3 max ( temp float) 0:3 'n_dot_l' ( in float) 0:3 Constant: 0:3 0.000000 0:3 Test condition and select ( temp float): no shortcircuit 0:3 Condition 0:3 Compare Less Than ( temp bool) 0:3 min ( temp float) 0:3 'n_dot_l' ( in float) 0:3 'n_dot_h' ( in float) 0:3 Constant: 0:3 0.000000 0:3 true case 0:3 Constant: 0:3 0.000000 0:3 false case 0:3 component-wise multiply ( temp float) 0:3 'n_dot_h' ( in float) 0:3 'm' ( in float) 0:3 Constant: 0:3 1.000000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? 'n_dot_l' ( temp float) 0:? 'n_dot_l' (layout( location=0) in float) 0:2 move second child to first child ( temp float) 0:? 'n_dot_h' ( temp float) 0:? 'n_dot_h' (layout( location=1) in float) 0:2 move second child to first child ( temp float) 0:? 'm' ( temp float) 0:? 'm' (layout( location=2) in float) 0:2 Function Call: @PixelShaderFunction(f1;f1;f1; ( temp void) 0:? 'n_dot_l' ( temp float) 0:? 'n_dot_h' ( temp float) 0:? 'm' ( temp float) 0:? Linker Objects 0:? 'n_dot_l' (layout( location=0) in float) 0:? 'n_dot_h' (layout( location=1) in float) 0:? 'm' (layout( location=2) in float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 33 36 39 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 12 "@PixelShaderFunction(f1;f1;f1;" Name 9 "n_dot_l" Name 10 "n_dot_h" Name 11 "m" Name 16 "r0" Name 31 "n_dot_l" Name 33 "n_dot_l" Name 35 "n_dot_h" Name 36 "n_dot_h" Name 38 "m" Name 39 "m" Name 41 "param" Name 43 "param" Name 45 "param" Decorate 33(n_dot_l) Location 0 Decorate 36(n_dot_h) Location 1 Decorate 39(m) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 2 7(ptr) 7(ptr) 7(ptr) 14: TypeVector 6(float) 4 15: TypePointer Function 14(fvec4) 17: 6(float) Constant 1065353216 19: 6(float) Constant 0 24: TypeBool 32: TypePointer Input 6(float) 33(n_dot_l): 32(ptr) Variable Input 36(n_dot_h): 32(ptr) Variable Input 39(m): 32(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 31(n_dot_l): 7(ptr) Variable Function 35(n_dot_h): 7(ptr) Variable Function 38(m): 7(ptr) Variable Function 41(param): 7(ptr) Variable Function 43(param): 7(ptr) Variable Function 45(param): 7(ptr) Variable Function 34: 6(float) Load 33(n_dot_l) Store 31(n_dot_l) 34 37: 6(float) Load 36(n_dot_h) Store 35(n_dot_h) 37 40: 6(float) Load 39(m) Store 38(m) 40 42: 6(float) Load 31(n_dot_l) Store 41(param) 42 44: 6(float) Load 35(n_dot_h) Store 43(param) 44 46: 6(float) Load 38(m) Store 45(param) 46 47: 2 FunctionCall 12(@PixelShaderFunction(f1;f1;f1;) 41(param) 43(param) 45(param) Return FunctionEnd 12(@PixelShaderFunction(f1;f1;f1;): 2 Function None 8 9(n_dot_l): 7(ptr) FunctionParameter 10(n_dot_h): 7(ptr) FunctionParameter 11(m): 7(ptr) FunctionParameter 13: Label 16(r0): 15(ptr) Variable Function 18: 6(float) Load 9(n_dot_l) 20: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 18 19 21: 6(float) Load 9(n_dot_l) 22: 6(float) Load 10(n_dot_h) 23: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 21 22 25: 24(bool) FOrdLessThan 23 19 26: 6(float) Load 10(n_dot_h) 27: 6(float) Load 11(m) 28: 6(float) FMul 26 27 29: 6(float) Select 25 19 28 30: 14(fvec4) CompositeConstruct 17 20 29 17 Store 16(r0) 30 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.negative.comp.out000066400000000000000000000325441506534232700250740ustar00rootroot00000000000000hlsl.intrinsics.negative.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp void) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:2 'inF1' ( in float) 0:2 'inF2' ( in float) 0:2 'inI0' ( in int) 0:55 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; ( temp void) 0:55 Function Parameters: 0:55 'inF0' ( in 1-component vector of float) 0:55 'inF1' ( in 1-component vector of float) 0:55 'inF2' ( in 1-component vector of float) 0:55 'inI0' ( in 1-component vector of int) 0:62 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; ( temp void) 0:62 Function Parameters: 0:62 'inF0' ( in 2-component vector of float) 0:62 'inF1' ( in 2-component vector of float) 0:62 'inF2' ( in 2-component vector of float) 0:62 'inI0' ( in 2-component vector of int) 0:107 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; ( temp void) 0:107 Function Parameters: 0:107 'inF0' ( in 3-component vector of float) 0:107 'inF1' ( in 3-component vector of float) 0:107 'inF2' ( in 3-component vector of float) 0:107 'inI0' ( in 3-component vector of int) 0:150 Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp void) 0:150 Function Parameters: 0:150 'inF0' ( in 4-component vector of float) 0:150 'inF1' ( in 4-component vector of float) 0:150 'inF2' ( in 4-component vector of float) 0:150 'inI0' ( in 4-component vector of int) 0:150 Function Definition: ComputeShaderFunction( ( temp void) 0:150 Function Parameters: 0:? Sequence 0:150 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:150 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:150 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:150 move second child to first child ( temp 4-component vector of int) 0:? 'inI0' ( temp 4-component vector of int) 0:? 'inI0' (layout( location=3) in 4-component vector of int) 0:150 Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp void) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inI0' ( temp 4-component vector of int) 0:? Linker Objects 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:? 'inI0' (layout( location=3) in 4-component vector of int) Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp void) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:2 'inF1' ( in float) 0:2 'inF2' ( in float) 0:2 'inI0' ( in int) 0:55 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; ( temp void) 0:55 Function Parameters: 0:55 'inF0' ( in 1-component vector of float) 0:55 'inF1' ( in 1-component vector of float) 0:55 'inF2' ( in 1-component vector of float) 0:55 'inI0' ( in 1-component vector of int) 0:62 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; ( temp void) 0:62 Function Parameters: 0:62 'inF0' ( in 2-component vector of float) 0:62 'inF1' ( in 2-component vector of float) 0:62 'inF2' ( in 2-component vector of float) 0:62 'inI0' ( in 2-component vector of int) 0:107 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; ( temp void) 0:107 Function Parameters: 0:107 'inF0' ( in 3-component vector of float) 0:107 'inF1' ( in 3-component vector of float) 0:107 'inF2' ( in 3-component vector of float) 0:107 'inI0' ( in 3-component vector of int) 0:150 Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp void) 0:150 Function Parameters: 0:150 'inF0' ( in 4-component vector of float) 0:150 'inF1' ( in 4-component vector of float) 0:150 'inF2' ( in 4-component vector of float) 0:150 'inI0' ( in 4-component vector of int) 0:150 Function Definition: ComputeShaderFunction( ( temp void) 0:150 Function Parameters: 0:? Sequence 0:150 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:150 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:150 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:150 move second child to first child ( temp 4-component vector of int) 0:? 'inI0' ( temp 4-component vector of int) 0:? 'inI0' (layout( location=3) in 4-component vector of int) 0:150 Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp void) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inI0' ( temp 4-component vector of int) 0:? Linker Objects 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:? 'inI0' (layout( location=3) in 4-component vector of int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 79 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "ComputeShaderFunction" 58 61 64 68 ExecutionMode 4 LocalSize 1 1 1 Source HLSL 500 Name 4 "ComputeShaderFunction" Name 15 "ComputeShaderFunctionS(f1;f1;f1;i1;" Name 11 "inF0" Name 12 "inF1" Name 13 "inF2" Name 14 "inI0" Name 21 "ComputeShaderFunction1(vf1;vf1;vf1;vi1;" Name 17 "inF0" Name 18 "inF1" Name 19 "inF2" Name 20 "inI0" Name 32 "ComputeShaderFunction2(vf2;vf2;vf2;vi2;" Name 28 "inF0" Name 29 "inF1" Name 30 "inF2" Name 31 "inI0" Name 43 "ComputeShaderFunction3(vf3;vf3;vf3;vi3;" Name 39 "inF0" Name 40 "inF1" Name 41 "inF2" Name 42 "inI0" Name 54 "@ComputeShaderFunction(vf4;vf4;vf4;vi4;" Name 50 "inF0" Name 51 "inF1" Name 52 "inF2" Name 53 "inI0" Name 56 "inF0" Name 58 "inF0" Name 60 "inF1" Name 61 "inF1" Name 63 "inF2" Name 64 "inF2" Name 66 "inI0" Name 68 "inI0" Name 70 "param" Name 72 "param" Name 74 "param" Name 76 "param" Decorate 58(inF0) Location 0 Decorate 61(inF1) Location 1 Decorate 64(inF2) Location 2 Decorate 68(inI0) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeInt 32 1 9: TypePointer Function 8(int) 10: TypeFunction 2 7(ptr) 7(ptr) 7(ptr) 9(ptr) 23: TypeVector 6(float) 2 24: TypePointer Function 23(fvec2) 25: TypeVector 8(int) 2 26: TypePointer Function 25(ivec2) 27: TypeFunction 2 24(ptr) 24(ptr) 24(ptr) 26(ptr) 34: TypeVector 6(float) 3 35: TypePointer Function 34(fvec3) 36: TypeVector 8(int) 3 37: TypePointer Function 36(ivec3) 38: TypeFunction 2 35(ptr) 35(ptr) 35(ptr) 37(ptr) 45: TypeVector 6(float) 4 46: TypePointer Function 45(fvec4) 47: TypeVector 8(int) 4 48: TypePointer Function 47(ivec4) 49: TypeFunction 2 46(ptr) 46(ptr) 46(ptr) 48(ptr) 57: TypePointer Input 45(fvec4) 58(inF0): 57(ptr) Variable Input 61(inF1): 57(ptr) Variable Input 64(inF2): 57(ptr) Variable Input 67: TypePointer Input 47(ivec4) 68(inI0): 67(ptr) Variable Input 4(ComputeShaderFunction): 2 Function None 3 5: Label 56(inF0): 46(ptr) Variable Function 60(inF1): 46(ptr) Variable Function 63(inF2): 46(ptr) Variable Function 66(inI0): 48(ptr) Variable Function 70(param): 46(ptr) Variable Function 72(param): 46(ptr) Variable Function 74(param): 46(ptr) Variable Function 76(param): 48(ptr) Variable Function 59: 45(fvec4) Load 58(inF0) Store 56(inF0) 59 62: 45(fvec4) Load 61(inF1) Store 60(inF1) 62 65: 45(fvec4) Load 64(inF2) Store 63(inF2) 65 69: 47(ivec4) Load 68(inI0) Store 66(inI0) 69 71: 45(fvec4) Load 56(inF0) Store 70(param) 71 73: 45(fvec4) Load 60(inF1) Store 72(param) 73 75: 45(fvec4) Load 63(inF2) Store 74(param) 75 77: 47(ivec4) Load 66(inI0) Store 76(param) 77 78: 2 FunctionCall 54(@ComputeShaderFunction(vf4;vf4;vf4;vi4;) 70(param) 72(param) 74(param) 76(param) Return FunctionEnd 15(ComputeShaderFunctionS(f1;f1;f1;i1;): 2 Function None 10 11(inF0): 7(ptr) FunctionParameter 12(inF1): 7(ptr) FunctionParameter 13(inF2): 7(ptr) FunctionParameter 14(inI0): 9(ptr) FunctionParameter 16: Label Return FunctionEnd 21(ComputeShaderFunction1(vf1;vf1;vf1;vi1;): 2 Function None 10 17(inF0): 7(ptr) FunctionParameter 18(inF1): 7(ptr) FunctionParameter 19(inF2): 7(ptr) FunctionParameter 20(inI0): 9(ptr) FunctionParameter 22: Label Return FunctionEnd 32(ComputeShaderFunction2(vf2;vf2;vf2;vi2;): 2 Function None 27 28(inF0): 24(ptr) FunctionParameter 29(inF1): 24(ptr) FunctionParameter 30(inF2): 24(ptr) FunctionParameter 31(inI0): 26(ptr) FunctionParameter 33: Label Return FunctionEnd 43(ComputeShaderFunction3(vf3;vf3;vf3;vi3;): 2 Function None 38 39(inF0): 35(ptr) FunctionParameter 40(inF1): 35(ptr) FunctionParameter 41(inF2): 35(ptr) FunctionParameter 42(inI0): 37(ptr) FunctionParameter 44: Label Return FunctionEnd 54(@ComputeShaderFunction(vf4;vf4;vf4;vi4;): 2 Function None 49 50(inF0): 46(ptr) FunctionParameter 51(inF1): 46(ptr) FunctionParameter 52(inF2): 46(ptr) FunctionParameter 53(inI0): 48(ptr) FunctionParameter 55: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.negative.frag.out000066400000000000000000001156541506534232700250610ustar00rootroot00000000000000hlsl.intrinsics.negative.frag ERROR: 0:10: 'determinant' : ambiguous best function under implicit type conversion ERROR: 0:25: 'normalize' : ambiguous best function under implicit type conversion ERROR: 0:26: 'reflect' : ambiguous best function under implicit type conversion ERROR: 0:27: 'refract' : ambiguous best function under implicit type conversion ERROR: 0:28: 'refract' : no matching overloaded function found ERROR: 0:30: 'transpose' : ambiguous best function under implicit type conversion ERROR: 0:39: 'GetRenderTargetSamplePosition' : no matching overloaded function found ERROR: 0:46: 'asdouble' : double2 conversion not implemented ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found ERROR: 0:49: 'cross' : no matching overloaded function found ERROR: 0:50: 'D3DCOLORtoUBYTE4' : no matching overloaded function found ERROR: 0:51: 'determinant' : no matching overloaded function found ERROR: 0:57: 'transpose' : no matching overloaded function found ERROR: 0:64: 'CheckAccessFullyMapped' : no matching overloaded function found ERROR: 0:66: 'D3DCOLORtoUBYTE4' : no matching overloaded function found ERROR: 0:67: 'determinant' : no matching overloaded function found ERROR: 0:73: 'transpose' : no matching overloaded function found ERROR: 0:81: 'CheckAccessFullyMapped' : no matching overloaded function found ERROR: 0:84: 'determinant' : no matching overloaded function found ERROR: 0:90: 'transpose' : no matching overloaded function found ERROR: 0:117: 'countbits' : no matching overloaded function found ERROR: 0:117: 'D3DCOLORtoUBYTE4' : no matching overloaded function found ERROR: 0:117: 'cross' : no matching overloaded function found ERROR: 0:117: 'f16tof32' : no matching overloaded function found ERROR: 0:117: 'firstbithigh' : no matching overloaded function found ERROR: 0:117: 'firstbitlow' : no matching overloaded function found ERROR: 0:117: 'reversebits' : no matching overloaded function found ERROR: 0:117: 'length' : no matching overloaded function found ERROR: 0:117: 'noise' : no matching overloaded function found ERROR: 0:117: 'normalize' : no matching overloaded function found ERROR: 0:117: 'reflect' : no matching overloaded function found ERROR: 0:117: 'refract' : no matching overloaded function found ERROR: 0:117: 'reversebits' : no matching overloaded function found ERROR: 0:125: 'countbits' : no matching overloaded function found ERROR: 0:125: 'D3DCOLORtoUBYTE4' : no matching overloaded function found ERROR: 0:125: 'cross' : no matching overloaded function found ERROR: 0:125: 'f16tof32' : no matching overloaded function found ERROR: 0:125: 'firstbithigh' : no matching overloaded function found ERROR: 0:125: 'firstbitlow' : no matching overloaded function found ERROR: 0:125: 'reversebits' : no matching overloaded function found ERROR: 0:125: 'length' : no matching overloaded function found ERROR: 0:125: 'noise' : no matching overloaded function found ERROR: 0:125: 'normalize' : no matching overloaded function found ERROR: 0:125: 'reflect' : no matching overloaded function found ERROR: 0:125: 'refract' : no matching overloaded function found ERROR: 0:125: 'reversebits' : no matching overloaded function found ERROR: 0:133: 'countbits' : no matching overloaded function found ERROR: 0:133: 'D3DCOLORtoUBYTE4' : no matching overloaded function found ERROR: 0:133: 'cross' : no matching overloaded function found ERROR: 0:133: 'f16tof32' : no matching overloaded function found ERROR: 0:133: 'firstbithigh' : no matching overloaded function found ERROR: 0:133: 'firstbitlow' : no matching overloaded function found ERROR: 0:133: 'reversebits' : no matching overloaded function found ERROR: 0:133: 'length' : no matching overloaded function found ERROR: 0:133: 'noise' : no matching overloaded function found ERROR: 0:133: 'normalize' : no matching overloaded function found ERROR: 0:133: 'reflect' : no matching overloaded function found ERROR: 0:133: 'refract' : no matching overloaded function found ERROR: 0:133: 'reversebits' : no matching overloaded function found ERROR: 59 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; ( temp float) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:2 'inF1' ( in float) 0:2 'inF2' ( in float) 0:2 'inI0' ( in int) 0:? Sequence 0:5 uint64BitsToDouble ( temp double) 0:5 Construct uvec2 ( temp 2-component vector of uint) 0:5 Convert float to uint ( temp uint) 0:5 'inF0' ( in float) 0:5 Convert float to uint ( temp uint) 0:5 'inF1' ( in float) 0:6 Function Call: CheckAccessFullyMapped(u1; ( temp bool) 0:6 Constant: 0:6 3 (const uint) 0:7 bitCount ( temp uint) 0:7 Convert float to uint ( temp uint) 0:7 'inF0' ( in float) 0:8 cross-product ( temp 3-component vector of float) 0:8 Construct vec3 ( in 3-component vector of float) 0:8 'inF0' ( in float) 0:8 Construct vec3 ( in 3-component vector of float) 0:8 'inF1' ( in float) 0:9 Convert float to int ( temp 4-component vector of int) 0:9 vector-scale ( temp 4-component vector of float) 0:9 Constant: 0:9 255.001953 0:9 vector swizzle ( temp 4-component vector of float) 0:9 Construct vec4 ( in 4-component vector of float) 0:9 'inF0' ( in float) 0:9 Sequence 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 3 (const int) 0:10 determinant ( temp float) ERROR: node is still EOpNull! 0:10 'inF0' ( in float) 0:12 direct index ( temp float) 0:12 unpackHalf2x16 ( temp 2-component vector of float) 0:12 Convert float to uint ( temp uint) 0:12 'inF0' ( in float) 0:12 Constant: 0:12 0 (const int) 0:13 findMSB ( temp uint) 0:13 Convert float to uint ( temp uint) 0:13 'inF0' ( in float) 0:14 findLSB ( temp uint) 0:14 Convert float to uint ( temp uint) 0:14 'inF0' ( in float) 0:23 length ( temp float) 0:23 'inF0' ( in float) 0:24 Function Call: msad4(u1;vu2;vu4; ( temp 4-component vector of uint) 0:24 Convert float to uint ( temp uint) 0:24 'inF0' ( in float) 0:24 Constant: 0:24 0 (const uint) 0:24 0 (const uint) 0:24 Constant: 0:24 0 (const uint) 0:24 0 (const uint) 0:24 0 (const uint) 0:24 0 (const uint) 0:25 normalize ( temp 2-component vector of float) 0:25 Construct vec2 ( in 2-component vector of float) 0:25 'inF0' ( in float) 0:26 reflect ( temp 2-component vector of float) 0:26 Construct vec2 ( in 2-component vector of float) 0:26 'inF0' ( in float) 0:26 Construct vec2 ( in 2-component vector of float) 0:26 'inF1' ( in float) 0:27 refract ( temp 2-component vector of float) 0:27 Construct vec2 ( in 2-component vector of float) 0:27 'inF0' ( in float) 0:27 Construct vec2 ( in 2-component vector of float) 0:27 'inF1' ( in float) 0:27 'inF2' ( in float) 0:28 Constant: 0:28 0.000000 0:29 bitFieldReverse ( temp uint) 0:29 Convert float to uint ( temp uint) 0:29 'inF0' ( in float) 0:30 transpose ( temp 1X1 matrix of float) ERROR: node is still EOpNull! 0:30 'inF0' ( in float) 0:32 Branch: Return with expression 0:32 Constant: 0:32 0.000000 0:36 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; ( temp 1-component vector of float) 0:36 Function Parameters: 0:36 'inF0' ( in 1-component vector of float) 0:36 'inF1' ( in 1-component vector of float) 0:36 'inF2' ( in 1-component vector of float) 0:36 'inI0' ( in 1-component vector of int) 0:? Sequence 0:39 Constant: 0:39 0.000000 0:41 Branch: Return with expression 0:41 Constant: 0:41 0.000000 0:45 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; ( temp 2-component vector of float) 0:45 Function Parameters: 0:45 'inF0' ( in 2-component vector of float) 0:45 'inF1' ( in 2-component vector of float) 0:45 'inF2' ( in 2-component vector of float) 0:45 'inI0' ( in 2-component vector of int) 0:? Sequence 0:46 ERROR: Bad aggregation op ( temp 2-component vector of double) 0:46 Convert float to uint ( temp 2-component vector of uint) 0:46 'inF0' ( in 2-component vector of float) 0:46 Convert float to uint ( temp 2-component vector of uint) 0:46 'inF1' ( in 2-component vector of float) 0:47 Constant: 0:47 0.000000 0:48 bitCount ( temp 2-component vector of uint) 0:48 Convert float to uint ( temp 2-component vector of uint) 0:48 'inF0' ( in 2-component vector of float) 0:49 Constant: 0:49 0.000000 0:50 Constant: 0:50 0.000000 0:51 Constant: 0:51 0.000000 0:52 Construct vec2 ( temp 2-component vector of float) 0:52 direct index ( temp float) 0:52 unpackHalf2x16 ( temp 2-component vector of float) 0:52 direct index ( temp uint) 0:52 Convert float to uint ( temp 2-component vector of uint) 0:52 'inF0' ( in 2-component vector of float) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 0 (const int) 0:52 direct index ( temp float) 0:52 unpackHalf2x16 ( temp 2-component vector of float) 0:52 direct index ( temp uint) 0:52 Convert float to uint ( temp 2-component vector of uint) 0:52 'inF0' ( in 2-component vector of float) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 0 (const int) 0:53 findMSB ( temp 2-component vector of uint) 0:53 Convert float to uint ( temp 2-component vector of uint) 0:53 'inF0' ( in 2-component vector of float) 0:54 findLSB ( temp 2-component vector of uint) 0:54 Convert float to uint ( temp 2-component vector of uint) 0:54 'inF0' ( in 2-component vector of float) 0:56 bitFieldReverse ( temp 2-component vector of uint) 0:56 Convert float to uint ( temp 2-component vector of uint) 0:56 'inF0' ( in 2-component vector of float) 0:57 Constant: 0:57 0.000000 0:59 Branch: Return with expression 0:59 Constant: 0:59 1.000000 0:59 2.000000 0:63 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float) 0:63 Function Parameters: 0:63 'inF0' ( in 3-component vector of float) 0:63 'inF1' ( in 3-component vector of float) 0:63 'inF2' ( in 3-component vector of float) 0:63 'inI0' ( in 3-component vector of int) 0:? Sequence 0:64 Constant: 0:64 0.000000 0:65 bitCount ( temp 3-component vector of uint) 0:65 Convert float to uint ( temp 3-component vector of uint) 0:65 'inF0' ( in 3-component vector of float) 0:66 Constant: 0:66 0.000000 0:67 Constant: 0:67 0.000000 0:68 Construct vec3 ( temp 3-component vector of float) 0:68 direct index ( temp float) 0:68 unpackHalf2x16 ( temp 2-component vector of float) 0:68 direct index ( temp uint) 0:68 Convert float to uint ( temp 3-component vector of uint) 0:68 'inF0' ( in 3-component vector of float) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 direct index ( temp float) 0:68 unpackHalf2x16 ( temp 2-component vector of float) 0:68 direct index ( temp uint) 0:68 Convert float to uint ( temp 3-component vector of uint) 0:68 'inF0' ( in 3-component vector of float) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 direct index ( temp float) 0:68 unpackHalf2x16 ( temp 2-component vector of float) 0:68 direct index ( temp uint) 0:68 Convert float to uint ( temp 3-component vector of uint) 0:68 'inF0' ( in 3-component vector of float) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 0 (const int) 0:69 findMSB ( temp 3-component vector of uint) 0:69 Convert float to uint ( temp 3-component vector of uint) 0:69 'inF0' ( in 3-component vector of float) 0:70 findLSB ( temp 3-component vector of uint) 0:70 Convert float to uint ( temp 3-component vector of uint) 0:70 'inF0' ( in 3-component vector of float) 0:72 bitFieldReverse ( temp 3-component vector of uint) 0:72 Convert float to uint ( temp 3-component vector of uint) 0:72 'inF0' ( in 3-component vector of float) 0:73 Constant: 0:73 0.000000 0:76 Branch: Return with expression 0:76 Constant: 0:76 1.000000 0:76 2.000000 0:76 3.000000 0:80 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float) 0:80 Function Parameters: 0:80 'inF0' ( in 4-component vector of float) 0:80 'inF1' ( in 4-component vector of float) 0:80 'inF2' ( in 4-component vector of float) 0:80 'inI0' ( in 4-component vector of int) 0:? Sequence 0:81 Constant: 0:81 0.000000 0:82 bitCount ( temp 4-component vector of uint) 0:82 Convert float to uint ( temp 4-component vector of uint) 0:82 'inF0' ( in 4-component vector of float) 0:83 cross-product ( temp 3-component vector of float) 0:83 Construct vec3 ( in 3-component vector of float) 0:83 'inF0' ( in 4-component vector of float) 0:83 Construct vec3 ( in 3-component vector of float) 0:83 'inF1' ( in 4-component vector of float) 0:84 Constant: 0:84 0.000000 0:85 Construct vec4 ( temp 4-component vector of float) 0:85 direct index ( temp float) 0:85 unpackHalf2x16 ( temp 2-component vector of float) 0:85 direct index ( temp uint) 0:85 Convert float to uint ( temp 4-component vector of uint) 0:85 'inF0' ( in 4-component vector of float) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 direct index ( temp float) 0:85 unpackHalf2x16 ( temp 2-component vector of float) 0:85 direct index ( temp uint) 0:85 Convert float to uint ( temp 4-component vector of uint) 0:85 'inF0' ( in 4-component vector of float) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 direct index ( temp float) 0:85 unpackHalf2x16 ( temp 2-component vector of float) 0:85 direct index ( temp uint) 0:85 Convert float to uint ( temp 4-component vector of uint) 0:85 'inF0' ( in 4-component vector of float) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 direct index ( temp float) 0:85 unpackHalf2x16 ( temp 2-component vector of float) 0:85 direct index ( temp uint) 0:85 Convert float to uint ( temp 4-component vector of uint) 0:85 'inF0' ( in 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:85 Constant: 0:85 0 (const int) 0:86 findMSB ( temp 4-component vector of uint) 0:86 Convert float to uint ( temp 4-component vector of uint) 0:86 'inF0' ( in 4-component vector of float) 0:87 findLSB ( temp 4-component vector of uint) 0:87 Convert float to uint ( temp 4-component vector of uint) 0:87 'inF0' ( in 4-component vector of float) 0:89 bitFieldReverse ( temp 4-component vector of uint) 0:89 Convert float to uint ( temp 4-component vector of uint) 0:89 'inF0' ( in 4-component vector of float) 0:90 Constant: 0:90 0.000000 0:92 Branch: Return with expression 0:92 Constant: 0:92 1.000000 0:92 2.000000 0:92 3.000000 0:92 4.000000 0:80 Function Definition: PixelShaderFunction( ( temp void) 0:80 Function Parameters: 0:? Sequence 0:80 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:80 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:80 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:80 move second child to first child ( temp 4-component vector of int) 0:? 'inI0' ( temp 4-component vector of int) 0:? 'inI0' (layout( location=3) flat in 4-component vector of int) 0:80 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:80 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inI0' ( temp 4-component vector of int) 0:115 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) 0:115 Function Parameters: 0:115 'inF0' ( in 2X2 matrix of float) 0:115 'inF1' ( in 2X2 matrix of float) 0:115 'inF2' ( in 2X2 matrix of float) 0:? Sequence 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:119 Branch: Return with expression 0:119 Constant: 0:119 2.000000 0:119 2.000000 0:119 2.000000 0:119 2.000000 0:123 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) 0:123 Function Parameters: 0:123 'inF0' ( in 3X3 matrix of float) 0:123 'inF1' ( in 3X3 matrix of float) 0:123 'inF2' ( in 3X3 matrix of float) 0:? Sequence 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:127 Branch: Return with expression 0:127 Constant: 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:131 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) 0:131 Function Parameters: 0:131 'inF0' ( in 4X4 matrix of float) 0:131 'inF1' ( in 4X4 matrix of float) 0:131 'inF2' ( in 4X4 matrix of float) 0:? Sequence 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:135 Branch: Return with expression 0:135 Constant: 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:? 'inI0' (layout( location=3) flat in 4-component vector of int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; ( temp float) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:2 'inF1' ( in float) 0:2 'inF2' ( in float) 0:2 'inI0' ( in int) 0:? Sequence 0:5 uint64BitsToDouble ( temp double) 0:5 Construct uvec2 ( temp 2-component vector of uint) 0:5 Convert float to uint ( temp uint) 0:5 'inF0' ( in float) 0:5 Convert float to uint ( temp uint) 0:5 'inF1' ( in float) 0:6 Function Call: CheckAccessFullyMapped(u1; ( temp bool) 0:6 Constant: 0:6 3 (const uint) 0:7 bitCount ( temp uint) 0:7 Convert float to uint ( temp uint) 0:7 'inF0' ( in float) 0:8 cross-product ( temp 3-component vector of float) 0:8 Construct vec3 ( in 3-component vector of float) 0:8 'inF0' ( in float) 0:8 Construct vec3 ( in 3-component vector of float) 0:8 'inF1' ( in float) 0:9 Convert float to int ( temp 4-component vector of int) 0:9 vector-scale ( temp 4-component vector of float) 0:9 Constant: 0:9 255.001953 0:9 vector swizzle ( temp 4-component vector of float) 0:9 Construct vec4 ( in 4-component vector of float) 0:9 'inF0' ( in float) 0:9 Sequence 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 3 (const int) 0:10 determinant ( temp float) ERROR: node is still EOpNull! 0:10 'inF0' ( in float) 0:12 direct index ( temp float) 0:12 unpackHalf2x16 ( temp 2-component vector of float) 0:12 Convert float to uint ( temp uint) 0:12 'inF0' ( in float) 0:12 Constant: 0:12 0 (const int) 0:13 findMSB ( temp uint) 0:13 Convert float to uint ( temp uint) 0:13 'inF0' ( in float) 0:14 findLSB ( temp uint) 0:14 Convert float to uint ( temp uint) 0:14 'inF0' ( in float) 0:23 length ( temp float) 0:23 'inF0' ( in float) 0:24 Function Call: msad4(u1;vu2;vu4; ( temp 4-component vector of uint) 0:24 Convert float to uint ( temp uint) 0:24 'inF0' ( in float) 0:24 Constant: 0:24 0 (const uint) 0:24 0 (const uint) 0:24 Constant: 0:24 0 (const uint) 0:24 0 (const uint) 0:24 0 (const uint) 0:24 0 (const uint) 0:25 normalize ( temp 2-component vector of float) 0:25 Construct vec2 ( in 2-component vector of float) 0:25 'inF0' ( in float) 0:26 reflect ( temp 2-component vector of float) 0:26 Construct vec2 ( in 2-component vector of float) 0:26 'inF0' ( in float) 0:26 Construct vec2 ( in 2-component vector of float) 0:26 'inF1' ( in float) 0:27 refract ( temp 2-component vector of float) 0:27 Construct vec2 ( in 2-component vector of float) 0:27 'inF0' ( in float) 0:27 Construct vec2 ( in 2-component vector of float) 0:27 'inF1' ( in float) 0:27 'inF2' ( in float) 0:28 Constant: 0:28 0.000000 0:29 bitFieldReverse ( temp uint) 0:29 Convert float to uint ( temp uint) 0:29 'inF0' ( in float) 0:30 transpose ( temp 1X1 matrix of float) ERROR: node is still EOpNull! 0:30 'inF0' ( in float) 0:32 Branch: Return with expression 0:32 Constant: 0:32 0.000000 0:36 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; ( temp 1-component vector of float) 0:36 Function Parameters: 0:36 'inF0' ( in 1-component vector of float) 0:36 'inF1' ( in 1-component vector of float) 0:36 'inF2' ( in 1-component vector of float) 0:36 'inI0' ( in 1-component vector of int) 0:? Sequence 0:39 Constant: 0:39 0.000000 0:41 Branch: Return with expression 0:41 Constant: 0:41 0.000000 0:45 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; ( temp 2-component vector of float) 0:45 Function Parameters: 0:45 'inF0' ( in 2-component vector of float) 0:45 'inF1' ( in 2-component vector of float) 0:45 'inF2' ( in 2-component vector of float) 0:45 'inI0' ( in 2-component vector of int) 0:? Sequence 0:46 ERROR: Bad aggregation op ( temp 2-component vector of double) 0:46 Convert float to uint ( temp 2-component vector of uint) 0:46 'inF0' ( in 2-component vector of float) 0:46 Convert float to uint ( temp 2-component vector of uint) 0:46 'inF1' ( in 2-component vector of float) 0:47 Constant: 0:47 0.000000 0:48 bitCount ( temp 2-component vector of uint) 0:48 Convert float to uint ( temp 2-component vector of uint) 0:48 'inF0' ( in 2-component vector of float) 0:49 Constant: 0:49 0.000000 0:50 Constant: 0:50 0.000000 0:51 Constant: 0:51 0.000000 0:52 Construct vec2 ( temp 2-component vector of float) 0:52 direct index ( temp float) 0:52 unpackHalf2x16 ( temp 2-component vector of float) 0:52 direct index ( temp uint) 0:52 Convert float to uint ( temp 2-component vector of uint) 0:52 'inF0' ( in 2-component vector of float) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 0 (const int) 0:52 direct index ( temp float) 0:52 unpackHalf2x16 ( temp 2-component vector of float) 0:52 direct index ( temp uint) 0:52 Convert float to uint ( temp 2-component vector of uint) 0:52 'inF0' ( in 2-component vector of float) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 0 (const int) 0:53 findMSB ( temp 2-component vector of uint) 0:53 Convert float to uint ( temp 2-component vector of uint) 0:53 'inF0' ( in 2-component vector of float) 0:54 findLSB ( temp 2-component vector of uint) 0:54 Convert float to uint ( temp 2-component vector of uint) 0:54 'inF0' ( in 2-component vector of float) 0:56 bitFieldReverse ( temp 2-component vector of uint) 0:56 Convert float to uint ( temp 2-component vector of uint) 0:56 'inF0' ( in 2-component vector of float) 0:57 Constant: 0:57 0.000000 0:59 Branch: Return with expression 0:59 Constant: 0:59 1.000000 0:59 2.000000 0:63 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float) 0:63 Function Parameters: 0:63 'inF0' ( in 3-component vector of float) 0:63 'inF1' ( in 3-component vector of float) 0:63 'inF2' ( in 3-component vector of float) 0:63 'inI0' ( in 3-component vector of int) 0:? Sequence 0:64 Constant: 0:64 0.000000 0:65 bitCount ( temp 3-component vector of uint) 0:65 Convert float to uint ( temp 3-component vector of uint) 0:65 'inF0' ( in 3-component vector of float) 0:66 Constant: 0:66 0.000000 0:67 Constant: 0:67 0.000000 0:68 Construct vec3 ( temp 3-component vector of float) 0:68 direct index ( temp float) 0:68 unpackHalf2x16 ( temp 2-component vector of float) 0:68 direct index ( temp uint) 0:68 Convert float to uint ( temp 3-component vector of uint) 0:68 'inF0' ( in 3-component vector of float) 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 direct index ( temp float) 0:68 unpackHalf2x16 ( temp 2-component vector of float) 0:68 direct index ( temp uint) 0:68 Convert float to uint ( temp 3-component vector of uint) 0:68 'inF0' ( in 3-component vector of float) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 0 (const int) 0:68 direct index ( temp float) 0:68 unpackHalf2x16 ( temp 2-component vector of float) 0:68 direct index ( temp uint) 0:68 Convert float to uint ( temp 3-component vector of uint) 0:68 'inF0' ( in 3-component vector of float) 0:68 Constant: 0:68 2 (const int) 0:68 Constant: 0:68 0 (const int) 0:69 findMSB ( temp 3-component vector of uint) 0:69 Convert float to uint ( temp 3-component vector of uint) 0:69 'inF0' ( in 3-component vector of float) 0:70 findLSB ( temp 3-component vector of uint) 0:70 Convert float to uint ( temp 3-component vector of uint) 0:70 'inF0' ( in 3-component vector of float) 0:72 bitFieldReverse ( temp 3-component vector of uint) 0:72 Convert float to uint ( temp 3-component vector of uint) 0:72 'inF0' ( in 3-component vector of float) 0:73 Constant: 0:73 0.000000 0:76 Branch: Return with expression 0:76 Constant: 0:76 1.000000 0:76 2.000000 0:76 3.000000 0:80 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float) 0:80 Function Parameters: 0:80 'inF0' ( in 4-component vector of float) 0:80 'inF1' ( in 4-component vector of float) 0:80 'inF2' ( in 4-component vector of float) 0:80 'inI0' ( in 4-component vector of int) 0:? Sequence 0:81 Constant: 0:81 0.000000 0:82 bitCount ( temp 4-component vector of uint) 0:82 Convert float to uint ( temp 4-component vector of uint) 0:82 'inF0' ( in 4-component vector of float) 0:83 cross-product ( temp 3-component vector of float) 0:83 Construct vec3 ( in 3-component vector of float) 0:83 'inF0' ( in 4-component vector of float) 0:83 Construct vec3 ( in 3-component vector of float) 0:83 'inF1' ( in 4-component vector of float) 0:84 Constant: 0:84 0.000000 0:85 Construct vec4 ( temp 4-component vector of float) 0:85 direct index ( temp float) 0:85 unpackHalf2x16 ( temp 2-component vector of float) 0:85 direct index ( temp uint) 0:85 Convert float to uint ( temp 4-component vector of uint) 0:85 'inF0' ( in 4-component vector of float) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 direct index ( temp float) 0:85 unpackHalf2x16 ( temp 2-component vector of float) 0:85 direct index ( temp uint) 0:85 Convert float to uint ( temp 4-component vector of uint) 0:85 'inF0' ( in 4-component vector of float) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 direct index ( temp float) 0:85 unpackHalf2x16 ( temp 2-component vector of float) 0:85 direct index ( temp uint) 0:85 Convert float to uint ( temp 4-component vector of uint) 0:85 'inF0' ( in 4-component vector of float) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 direct index ( temp float) 0:85 unpackHalf2x16 ( temp 2-component vector of float) 0:85 direct index ( temp uint) 0:85 Convert float to uint ( temp 4-component vector of uint) 0:85 'inF0' ( in 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:85 Constant: 0:85 0 (const int) 0:86 findMSB ( temp 4-component vector of uint) 0:86 Convert float to uint ( temp 4-component vector of uint) 0:86 'inF0' ( in 4-component vector of float) 0:87 findLSB ( temp 4-component vector of uint) 0:87 Convert float to uint ( temp 4-component vector of uint) 0:87 'inF0' ( in 4-component vector of float) 0:89 bitFieldReverse ( temp 4-component vector of uint) 0:89 Convert float to uint ( temp 4-component vector of uint) 0:89 'inF0' ( in 4-component vector of float) 0:90 Constant: 0:90 0.000000 0:92 Branch: Return with expression 0:92 Constant: 0:92 1.000000 0:92 2.000000 0:92 3.000000 0:92 4.000000 0:80 Function Definition: PixelShaderFunction( ( temp void) 0:80 Function Parameters: 0:? Sequence 0:80 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:80 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:80 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:80 move second child to first child ( temp 4-component vector of int) 0:? 'inI0' ( temp 4-component vector of int) 0:? 'inI0' (layout( location=3) flat in 4-component vector of int) 0:80 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:80 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inI0' ( temp 4-component vector of int) 0:115 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) 0:115 Function Parameters: 0:115 'inF0' ( in 2X2 matrix of float) 0:115 'inF1' ( in 2X2 matrix of float) 0:115 'inF2' ( in 2X2 matrix of float) 0:? Sequence 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:117 Constant: 0:117 0.000000 0:119 Branch: Return with expression 0:119 Constant: 0:119 2.000000 0:119 2.000000 0:119 2.000000 0:119 2.000000 0:123 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) 0:123 Function Parameters: 0:123 'inF0' ( in 3X3 matrix of float) 0:123 'inF1' ( in 3X3 matrix of float) 0:123 'inF2' ( in 3X3 matrix of float) 0:? Sequence 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:125 Constant: 0:125 0.000000 0:127 Branch: Return with expression 0:127 Constant: 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:127 3.000000 0:131 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) 0:131 Function Parameters: 0:131 'inF0' ( in 4X4 matrix of float) 0:131 'inF1' ( in 4X4 matrix of float) 0:131 'inF2' ( in 4X4 matrix of float) 0:? Sequence 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:133 Constant: 0:133 0.000000 0:135 Branch: Return with expression 0:135 Constant: 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:135 4.000000 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:? 'inI0' (layout( location=3) flat in 4-component vector of int) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.intrinsics.negative.vert.out000066400000000000000000000611771506534232700251220ustar00rootroot00000000000000hlsl.intrinsics.negative.vert Shader version: 500 0:? Sequence 0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; ( temp float) 0:15 Function Parameters: 0:15 'inF0' ( in float) 0:15 'inF1' ( in float) 0:15 'inF2' ( in float) 0:15 'inI0' ( in int) 0:? Sequence 0:71 Branch: Return with expression 0:71 Constant: 0:71 0.000000 0:75 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; ( temp 1-component vector of float) 0:75 Function Parameters: 0:75 'inF0' ( in 1-component vector of float) 0:75 'inF1' ( in 1-component vector of float) 0:75 'inF2' ( in 1-component vector of float) 0:75 'inI0' ( in 1-component vector of int) 0:? Sequence 0:80 Branch: Return with expression 0:80 Constant: 0:80 0.000000 0:84 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; ( temp 2-component vector of float) 0:84 Function Parameters: 0:84 'inF0' ( in 2-component vector of float) 0:84 'inF1' ( in 2-component vector of float) 0:84 'inF2' ( in 2-component vector of float) 0:84 'inI0' ( in 2-component vector of int) 0:? Sequence 0:127 Branch: Return with expression 0:127 Constant: 0:127 1.000000 0:127 2.000000 0:131 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float) 0:131 Function Parameters: 0:131 'inF0' ( in 3-component vector of float) 0:131 'inF1' ( in 3-component vector of float) 0:131 'inF2' ( in 3-component vector of float) 0:131 'inI0' ( in 3-component vector of int) 0:? Sequence 0:172 Branch: Return with expression 0:172 Constant: 0:172 1.000000 0:172 2.000000 0:172 3.000000 0:176 Function Definition: @VertexShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float) 0:176 Function Parameters: 0:176 'inF0' ( in 4-component vector of float) 0:176 'inF1' ( in 4-component vector of float) 0:176 'inF2' ( in 4-component vector of float) 0:176 'inI0' ( in 4-component vector of int) 0:? Sequence 0:217 Branch: Return with expression 0:217 Constant: 0:217 1.000000 0:217 2.000000 0:217 3.000000 0:217 4.000000 0:176 Function Definition: VertexShaderFunction( ( temp void) 0:176 Function Parameters: 0:? Sequence 0:176 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:176 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:176 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:176 move second child to first child ( temp 4-component vector of int) 0:? 'inI0' ( temp 4-component vector of int) 0:? 'inI0' (layout( location=3) in 4-component vector of int) 0:176 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:176 Function Call: @VertexShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inI0' ( temp 4-component vector of int) 0:226 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) 0:226 Function Parameters: 0:226 'inF0' ( in 2X2 matrix of float) 0:226 'inF1' ( in 2X2 matrix of float) 0:226 'inF2' ( in 2X2 matrix of float) 0:? Sequence 0:230 Branch: Return with expression 0:230 Constant: 0:230 2.000000 0:230 2.000000 0:230 2.000000 0:230 2.000000 0:234 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) 0:234 Function Parameters: 0:234 'inF0' ( in 3X3 matrix of float) 0:234 'inF1' ( in 3X3 matrix of float) 0:234 'inF2' ( in 3X3 matrix of float) 0:? Sequence 0:238 Branch: Return with expression 0:238 Constant: 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:242 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) 0:242 Function Parameters: 0:242 'inF0' ( in 4X4 matrix of float) 0:242 'inF1' ( in 4X4 matrix of float) 0:242 'inF2' ( in 4X4 matrix of float) 0:? Sequence 0:246 Branch: Return with expression 0:246 Constant: 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:? Linker Objects 0:? 'gs_ua' ( global uint) 0:? 'gs_ub' ( global uint) 0:? 'gs_uc' ( global uint) 0:? 'gs_ua2' ( global 2-component vector of uint) 0:? 'gs_ub2' ( global 2-component vector of uint) 0:? 'gs_uc2' ( global 2-component vector of uint) 0:? 'gs_ua3' ( global 3-component vector of uint) 0:? 'gs_ub3' ( global 3-component vector of uint) 0:? 'gs_uc3' ( global 3-component vector of uint) 0:? 'gs_ua4' ( global 4-component vector of uint) 0:? 'gs_ub4' ( global 4-component vector of uint) 0:? 'gs_uc4' ( global 4-component vector of uint) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:? 'inI0' (layout( location=3) in 4-component vector of int) Linked vertex stage: Shader version: 500 0:? Sequence 0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; ( temp float) 0:15 Function Parameters: 0:15 'inF0' ( in float) 0:15 'inF1' ( in float) 0:15 'inF2' ( in float) 0:15 'inI0' ( in int) 0:? Sequence 0:71 Branch: Return with expression 0:71 Constant: 0:71 0.000000 0:75 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; ( temp 1-component vector of float) 0:75 Function Parameters: 0:75 'inF0' ( in 1-component vector of float) 0:75 'inF1' ( in 1-component vector of float) 0:75 'inF2' ( in 1-component vector of float) 0:75 'inI0' ( in 1-component vector of int) 0:? Sequence 0:80 Branch: Return with expression 0:80 Constant: 0:80 0.000000 0:84 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; ( temp 2-component vector of float) 0:84 Function Parameters: 0:84 'inF0' ( in 2-component vector of float) 0:84 'inF1' ( in 2-component vector of float) 0:84 'inF2' ( in 2-component vector of float) 0:84 'inI0' ( in 2-component vector of int) 0:? Sequence 0:127 Branch: Return with expression 0:127 Constant: 0:127 1.000000 0:127 2.000000 0:131 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float) 0:131 Function Parameters: 0:131 'inF0' ( in 3-component vector of float) 0:131 'inF1' ( in 3-component vector of float) 0:131 'inF2' ( in 3-component vector of float) 0:131 'inI0' ( in 3-component vector of int) 0:? Sequence 0:172 Branch: Return with expression 0:172 Constant: 0:172 1.000000 0:172 2.000000 0:172 3.000000 0:176 Function Definition: @VertexShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float) 0:176 Function Parameters: 0:176 'inF0' ( in 4-component vector of float) 0:176 'inF1' ( in 4-component vector of float) 0:176 'inF2' ( in 4-component vector of float) 0:176 'inI0' ( in 4-component vector of int) 0:? Sequence 0:217 Branch: Return with expression 0:217 Constant: 0:217 1.000000 0:217 2.000000 0:217 3.000000 0:217 4.000000 0:176 Function Definition: VertexShaderFunction( ( temp void) 0:176 Function Parameters: 0:? Sequence 0:176 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:176 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:176 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:176 move second child to first child ( temp 4-component vector of int) 0:? 'inI0' ( temp 4-component vector of int) 0:? 'inI0' (layout( location=3) in 4-component vector of int) 0:176 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:176 Function Call: @VertexShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inI0' ( temp 4-component vector of int) 0:226 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) 0:226 Function Parameters: 0:226 'inF0' ( in 2X2 matrix of float) 0:226 'inF1' ( in 2X2 matrix of float) 0:226 'inF2' ( in 2X2 matrix of float) 0:? Sequence 0:230 Branch: Return with expression 0:230 Constant: 0:230 2.000000 0:230 2.000000 0:230 2.000000 0:230 2.000000 0:234 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) 0:234 Function Parameters: 0:234 'inF0' ( in 3X3 matrix of float) 0:234 'inF1' ( in 3X3 matrix of float) 0:234 'inF2' ( in 3X3 matrix of float) 0:? Sequence 0:238 Branch: Return with expression 0:238 Constant: 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:238 3.000000 0:242 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) 0:242 Function Parameters: 0:242 'inF0' ( in 4X4 matrix of float) 0:242 'inF1' ( in 4X4 matrix of float) 0:242 'inF2' ( in 4X4 matrix of float) 0:? Sequence 0:246 Branch: Return with expression 0:246 Constant: 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:246 4.000000 0:? Linker Objects 0:? 'gs_ua' ( global uint) 0:? 'gs_ub' ( global uint) 0:? 'gs_uc' ( global uint) 0:? 'gs_ua2' ( global 2-component vector of uint) 0:? 'gs_ub2' ( global 2-component vector of uint) 0:? 'gs_uc2' ( global 2-component vector of uint) 0:? 'gs_ua3' ( global 3-component vector of uint) 0:? 'gs_ub3' ( global 3-component vector of uint) 0:? 'gs_uc3' ( global 3-component vector of uint) 0:? 'gs_ua4' ( global 4-component vector of uint) 0:? 'gs_ub4' ( global 4-component vector of uint) 0:? 'gs_uc4' ( global 4-component vector of uint) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) 0:? 'inI0' (layout( location=3) in 4-component vector of int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 155 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "VertexShaderFunction" 100 103 106 110 113 Source HLSL 500 Name 4 "VertexShaderFunction" Name 15 "VertexShaderFunctionS(f1;f1;f1;i1;" Name 11 "inF0" Name 12 "inF1" Name 13 "inF2" Name 14 "inI0" Name 21 "VertexShaderFunction1(vf1;vf1;vf1;vi1;" Name 17 "inF0" Name 18 "inF1" Name 19 "inF2" Name 20 "inI0" Name 32 "VertexShaderFunction2(vf2;vf2;vf2;vi2;" Name 28 "inF0" Name 29 "inF1" Name 30 "inF2" Name 31 "inI0" Name 43 "VertexShaderFunction3(vf3;vf3;vf3;vi3;" Name 39 "inF0" Name 40 "inF1" Name 41 "inF2" Name 42 "inI0" Name 54 "@VertexShaderFunction(vf4;vf4;vf4;vi4;" Name 50 "inF0" Name 51 "inF1" Name 52 "inF2" Name 53 "inI0" Name 62 "VertexShaderFunction2x2(mf22;mf22;mf22;" Name 59 "inF0" Name 60 "inF1" Name 61 "inF2" Name 70 "VertexShaderFunction3x3(mf33;mf33;mf33;" Name 67 "inF0" Name 68 "inF1" Name 69 "inF2" Name 78 "VertexShaderFunction4x4(mf44;mf44;mf44;" Name 75 "inF0" Name 76 "inF1" Name 77 "inF2" Name 98 "inF0" Name 100 "inF0" Name 102 "inF1" Name 103 "inF1" Name 105 "inF2" Name 106 "inF2" Name 108 "inI0" Name 110 "inI0" Name 113 "@entryPointOutput" Name 114 "param" Name 116 "param" Name 118 "param" Name 120 "param" Name 137 "gs_ua" Name 138 "gs_ub" Name 139 "gs_uc" Name 142 "gs_ua2" Name 143 "gs_ub2" Name 144 "gs_uc2" Name 147 "gs_ua3" Name 148 "gs_ub3" Name 149 "gs_uc3" Name 152 "gs_ua4" Name 153 "gs_ub4" Name 154 "gs_uc4" Decorate 100(inF0) Location 0 Decorate 103(inF1) Location 1 Decorate 106(inF2) Location 2 Decorate 110(inI0) Location 3 Decorate 113(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeInt 32 1 9: TypePointer Function 8(int) 10: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr) 23: TypeVector 6(float) 2 24: TypePointer Function 23(fvec2) 25: TypeVector 8(int) 2 26: TypePointer Function 25(ivec2) 27: TypeFunction 23(fvec2) 24(ptr) 24(ptr) 24(ptr) 26(ptr) 34: TypeVector 6(float) 3 35: TypePointer Function 34(fvec3) 36: TypeVector 8(int) 3 37: TypePointer Function 36(ivec3) 38: TypeFunction 34(fvec3) 35(ptr) 35(ptr) 35(ptr) 37(ptr) 45: TypeVector 6(float) 4 46: TypePointer Function 45(fvec4) 47: TypeVector 8(int) 4 48: TypePointer Function 47(ivec4) 49: TypeFunction 45(fvec4) 46(ptr) 46(ptr) 46(ptr) 48(ptr) 56: TypeMatrix 23(fvec2) 2 57: TypePointer Function 56 58: TypeFunction 56 57(ptr) 57(ptr) 57(ptr) 64: TypeMatrix 34(fvec3) 3 65: TypePointer Function 64 66: TypeFunction 64 65(ptr) 65(ptr) 65(ptr) 72: TypeMatrix 45(fvec4) 4 73: TypePointer Function 72 74: TypeFunction 72 73(ptr) 73(ptr) 73(ptr) 80: 6(float) Constant 0 85: 6(float) Constant 1065353216 86: 6(float) Constant 1073741824 87: 23(fvec2) ConstantComposite 85 86 90: 6(float) Constant 1077936128 91: 34(fvec3) ConstantComposite 85 86 90 94: 6(float) Constant 1082130432 95: 45(fvec4) ConstantComposite 85 86 90 94 99: TypePointer Input 45(fvec4) 100(inF0): 99(ptr) Variable Input 103(inF1): 99(ptr) Variable Input 106(inF2): 99(ptr) Variable Input 109: TypePointer Input 47(ivec4) 110(inI0): 109(ptr) Variable Input 112: TypePointer Output 45(fvec4) 113(@entryPointOutput): 112(ptr) Variable Output 123: 23(fvec2) ConstantComposite 86 86 124: 56 ConstantComposite 123 123 127: 34(fvec3) ConstantComposite 90 90 90 128: 64 ConstantComposite 127 127 127 131: 45(fvec4) ConstantComposite 94 94 94 94 132: 72 ConstantComposite 131 131 131 131 135: TypeInt 32 0 136: TypePointer Private 135(int) 137(gs_ua): 136(ptr) Variable Private 138(gs_ub): 136(ptr) Variable Private 139(gs_uc): 136(ptr) Variable Private 140: TypeVector 135(int) 2 141: TypePointer Private 140(ivec2) 142(gs_ua2): 141(ptr) Variable Private 143(gs_ub2): 141(ptr) Variable Private 144(gs_uc2): 141(ptr) Variable Private 145: TypeVector 135(int) 3 146: TypePointer Private 145(ivec3) 147(gs_ua3): 146(ptr) Variable Private 148(gs_ub3): 146(ptr) Variable Private 149(gs_uc3): 146(ptr) Variable Private 150: TypeVector 135(int) 4 151: TypePointer Private 150(ivec4) 152(gs_ua4): 151(ptr) Variable Private 153(gs_ub4): 151(ptr) Variable Private 154(gs_uc4): 151(ptr) Variable Private 4(VertexShaderFunction): 2 Function None 3 5: Label 98(inF0): 46(ptr) Variable Function 102(inF1): 46(ptr) Variable Function 105(inF2): 46(ptr) Variable Function 108(inI0): 48(ptr) Variable Function 114(param): 46(ptr) Variable Function 116(param): 46(ptr) Variable Function 118(param): 46(ptr) Variable Function 120(param): 48(ptr) Variable Function 101: 45(fvec4) Load 100(inF0) Store 98(inF0) 101 104: 45(fvec4) Load 103(inF1) Store 102(inF1) 104 107: 45(fvec4) Load 106(inF2) Store 105(inF2) 107 111: 47(ivec4) Load 110(inI0) Store 108(inI0) 111 115: 45(fvec4) Load 98(inF0) Store 114(param) 115 117: 45(fvec4) Load 102(inF1) Store 116(param) 117 119: 45(fvec4) Load 105(inF2) Store 118(param) 119 121: 47(ivec4) Load 108(inI0) Store 120(param) 121 122: 45(fvec4) FunctionCall 54(@VertexShaderFunction(vf4;vf4;vf4;vi4;) 114(param) 116(param) 118(param) 120(param) Store 113(@entryPointOutput) 122 Return FunctionEnd 15(VertexShaderFunctionS(f1;f1;f1;i1;): 6(float) Function None 10 11(inF0): 7(ptr) FunctionParameter 12(inF1): 7(ptr) FunctionParameter 13(inF2): 7(ptr) FunctionParameter 14(inI0): 9(ptr) FunctionParameter 16: Label ReturnValue 80 FunctionEnd 21(VertexShaderFunction1(vf1;vf1;vf1;vi1;): 6(float) Function None 10 17(inF0): 7(ptr) FunctionParameter 18(inF1): 7(ptr) FunctionParameter 19(inF2): 7(ptr) FunctionParameter 20(inI0): 9(ptr) FunctionParameter 22: Label ReturnValue 80 FunctionEnd 32(VertexShaderFunction2(vf2;vf2;vf2;vi2;): 23(fvec2) Function None 27 28(inF0): 24(ptr) FunctionParameter 29(inF1): 24(ptr) FunctionParameter 30(inF2): 24(ptr) FunctionParameter 31(inI0): 26(ptr) FunctionParameter 33: Label ReturnValue 87 FunctionEnd 43(VertexShaderFunction3(vf3;vf3;vf3;vi3;): 34(fvec3) Function None 38 39(inF0): 35(ptr) FunctionParameter 40(inF1): 35(ptr) FunctionParameter 41(inF2): 35(ptr) FunctionParameter 42(inI0): 37(ptr) FunctionParameter 44: Label ReturnValue 91 FunctionEnd 54(@VertexShaderFunction(vf4;vf4;vf4;vi4;): 45(fvec4) Function None 49 50(inF0): 46(ptr) FunctionParameter 51(inF1): 46(ptr) FunctionParameter 52(inF2): 46(ptr) FunctionParameter 53(inI0): 48(ptr) FunctionParameter 55: Label ReturnValue 95 FunctionEnd 62(VertexShaderFunction2x2(mf22;mf22;mf22;): 56 Function None 58 59(inF0): 57(ptr) FunctionParameter 60(inF1): 57(ptr) FunctionParameter 61(inF2): 57(ptr) FunctionParameter 63: Label ReturnValue 124 FunctionEnd 70(VertexShaderFunction3x3(mf33;mf33;mf33;): 64 Function None 66 67(inF0): 65(ptr) FunctionParameter 68(inF1): 65(ptr) FunctionParameter 69(inF2): 65(ptr) FunctionParameter 71: Label ReturnValue 128 FunctionEnd 78(VertexShaderFunction4x4(mf44;mf44;mf44;): 72 Function None 74 75(inF0): 73(ptr) FunctionParameter 76(inF1): 73(ptr) FunctionParameter 77(inF2): 73(ptr) FunctionParameter 79: Label ReturnValue 132 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.promote.down.frag.out000066400000000000000000000254401506534232700257030ustar00rootroot00000000000000hlsl.intrinsics.promote.down.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:15 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp uint) 0:16 'r00' ( temp uint) 0:16 bitCount ( temp uint) 0:16 Convert float to uint ( temp uint) 0:16 f: direct index for structure ( uniform float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2}) 0:16 Constant: 0:16 2 (const uint) 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of uint) 0:17 'r01' ( temp 2-component vector of uint) 0:17 bitFieldReverse ( temp 2-component vector of uint) 0:17 Convert float to uint ( temp 2-component vector of uint) 0:17 f2: direct index for structure ( uniform 2-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2}) 0:17 Constant: 0:17 6 (const uint) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 color: direct index for structure ( temp 4-component vector of float) 0:20 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0.000000 0:20 0.000000 0:20 0.000000 0:20 0.000000 0:21 Branch: Return with expression 0:21 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:15 color: direct index for structure ( temp 4-component vector of float) 0:15 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:15 Constant: 0:15 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2}) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:15 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp uint) 0:16 'r00' ( temp uint) 0:16 bitCount ( temp uint) 0:16 Convert float to uint ( temp uint) 0:16 f: direct index for structure ( uniform float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2}) 0:16 Constant: 0:16 2 (const uint) 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of uint) 0:17 'r01' ( temp 2-component vector of uint) 0:17 bitFieldReverse ( temp 2-component vector of uint) 0:17 Convert float to uint ( temp 2-component vector of uint) 0:17 f2: direct index for structure ( uniform 2-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2}) 0:17 Constant: 0:17 6 (const uint) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 color: direct index for structure ( temp 4-component vector of float) 0:20 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0.000000 0:20 0.000000 0:20 0.000000 0:20 0.000000 0:21 Branch: Return with expression 0:21 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:15 color: direct index for structure ( temp 4-component vector of float) 0:15 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:15 Constant: 0:15 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2}) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // 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" 47 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "color" Name 10 "@main(" Name 14 "r00" Name 19 "$Global" MemberName 19($Global) 0 "i" MemberName 19($Global) 1 "u" MemberName 19($Global) 2 "f" MemberName 19($Global) 3 "b" MemberName 19($Global) 4 "i2" MemberName 19($Global) 5 "u2" MemberName 19($Global) 6 "f2" MemberName 19($Global) 7 "b2" Name 21 "" Name 29 "r01" Name 37 "ps_output" Name 47 "@entryPointOutput.color" Decorate 19($Global) Block MemberDecorate 19($Global) 0 Offset 0 MemberDecorate 19($Global) 1 Offset 4 MemberDecorate 19($Global) 2 Offset 8 MemberDecorate 19($Global) 3 Offset 12 MemberDecorate 19($Global) 4 Offset 16 MemberDecorate 19($Global) 5 Offset 24 MemberDecorate 19($Global) 6 Offset 32 MemberDecorate 19($Global) 7 Offset 40 Decorate 21 Binding 0 Decorate 21 DescriptorSet 0 Decorate 47(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 0 13: TypePointer Function 12(int) 15: TypeInt 32 1 16: TypeVector 15(int) 2 17: TypeVector 12(int) 2 18: TypeVector 6(float) 2 19($Global): TypeStruct 15(int) 12(int) 6(float) 12(int) 16(ivec2) 17(ivec2) 18(fvec2) 17(ivec2) 20: TypePointer Uniform 19($Global) 21: 20(ptr) Variable Uniform 22: 15(int) Constant 2 23: TypePointer Uniform 6(float) 28: TypePointer Function 17(ivec2) 30: 15(int) Constant 6 31: TypePointer Uniform 18(fvec2) 36: TypePointer Function 8(PS_OUTPUT) 38: 15(int) Constant 0 39: 6(float) Constant 0 40: 7(fvec4) ConstantComposite 39 39 39 39 41: TypePointer Function 7(fvec4) 46: TypePointer Output 7(fvec4) 47(@entryPointOutput.color): 46(ptr) Variable Output 4(main): 2 Function None 3 5: Label 48:8(PS_OUTPUT) FunctionCall 10(@main() 49: 7(fvec4) CompositeExtract 48 0 Store 47(@entryPointOutput.color) 49 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 14(r00): 13(ptr) Variable Function 29(r01): 28(ptr) Variable Function 37(ps_output): 36(ptr) Variable Function 24: 23(ptr) AccessChain 21 22 25: 6(float) Load 24 26: 12(int) ConvertFToU 25 27: 12(int) BitCount 26 Store 14(r00) 27 32: 31(ptr) AccessChain 21 30 33: 18(fvec2) Load 32 34: 17(ivec2) ConvertFToU 33 35: 17(ivec2) BitReverse 34 Store 29(r01) 35 42: 41(ptr) AccessChain 37(ps_output) 38 Store 42 40 43:8(PS_OUTPUT) Load 37(ps_output) ReturnValue 43 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.promote.frag.out000066400000000000000000002754501506534232700247450ustar00rootroot00000000000000hlsl.intrinsics.promote.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'r00' ( temp float) 0:23 max ( temp float) 0:23 Convert bool to float ( temp float) 0:23 b: direct index for structure ( uniform bool) 0:23 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:23 Constant: 0:23 3 (const uint) 0:23 f: direct index for structure ( uniform float) 0:23 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:23 Constant: 0:23 2 (const uint) 0:24 Sequence 0:24 move second child to first child ( temp uint) 0:24 'r01' ( temp uint) 0:24 max ( temp uint) 0:24 Convert bool to uint ( temp uint) 0:24 b: direct index for structure ( uniform bool) 0:24 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:24 Constant: 0:24 3 (const uint) 0:24 u: direct index for structure ( uniform uint) 0:24 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:24 Constant: 0:24 1 (const uint) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'r02' ( temp int) 0:25 max ( temp int) 0:25 Convert bool to int ( temp int) 0:25 b: direct index for structure ( uniform bool) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:25 Constant: 0:25 3 (const uint) 0:25 i: direct index for structure ( uniform int) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:25 Constant: 0:25 0 (const uint) 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'r03' ( temp float) 0:26 max ( temp float) 0:26 Convert int to float ( temp float) 0:26 i: direct index for structure ( uniform int) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:26 Constant: 0:26 0 (const uint) 0:26 f: direct index for structure ( uniform float) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:26 Constant: 0:26 2 (const uint) 0:27 Sequence 0:27 move second child to first child ( temp float) 0:27 'r04' ( temp float) 0:27 max ( temp float) 0:27 Convert uint to float ( temp float) 0:27 u: direct index for structure ( uniform uint) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:27 Constant: 0:27 1 (const uint) 0:27 f: direct index for structure ( uniform float) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:27 Constant: 0:27 2 (const uint) 0:29 Sequence 0:29 move second child to first child ( temp 2-component vector of float) 0:29 'r10' ( temp 2-component vector of float) 0:29 max ( temp 2-component vector of float) 0:29 Convert bool to float ( temp 2-component vector of float) 0:29 b2: direct index for structure ( uniform 2-component vector of bool) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:29 Constant: 0:29 7 (const uint) 0:29 f2: direct index for structure ( uniform 2-component vector of float) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:29 Constant: 0:29 6 (const uint) 0:30 Sequence 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 'r11' ( temp 2-component vector of uint) 0:30 max ( temp 2-component vector of uint) 0:30 Convert bool to uint ( temp 2-component vector of uint) 0:30 b2: direct index for structure ( uniform 2-component vector of bool) 0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:30 Constant: 0:30 7 (const uint) 0:30 u2: direct index for structure ( uniform 2-component vector of uint) 0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:30 Constant: 0:30 5 (const uint) 0:31 Sequence 0:31 move second child to first child ( temp 2-component vector of int) 0:31 'r12' ( temp 2-component vector of int) 0:31 max ( temp 2-component vector of int) 0:31 Convert bool to int ( temp 2-component vector of int) 0:31 b2: direct index for structure ( uniform 2-component vector of bool) 0:31 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:31 Constant: 0:31 7 (const uint) 0:31 i2: direct index for structure ( uniform 2-component vector of int) 0:31 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:31 Constant: 0:31 4 (const uint) 0:32 Sequence 0:32 move second child to first child ( temp 2-component vector of float) 0:32 'r13' ( temp 2-component vector of float) 0:32 max ( temp 2-component vector of float) 0:32 Convert int to float ( temp 2-component vector of float) 0:32 i2: direct index for structure ( uniform 2-component vector of int) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:32 Constant: 0:32 4 (const uint) 0:32 f2: direct index for structure ( uniform 2-component vector of float) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:32 Constant: 0:32 6 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp 2-component vector of float) 0:33 'r14' ( temp 2-component vector of float) 0:33 max ( temp 2-component vector of float) 0:33 Convert uint to float ( temp 2-component vector of float) 0:33 u2: direct index for structure ( uniform 2-component vector of uint) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:33 Constant: 0:33 5 (const uint) 0:33 f2: direct index for structure ( uniform 2-component vector of float) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:33 Constant: 0:33 6 (const uint) 0:35 Sequence 0:35 move second child to first child ( temp 2-component vector of float) 0:35 'r20' ( temp 2-component vector of float) 0:35 clamp ( temp 2-component vector of float) 0:35 Convert int to float ( temp 2-component vector of float) 0:35 i2: direct index for structure ( uniform 2-component vector of int) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:35 Constant: 0:35 4 (const uint) 0:35 Convert uint to float ( temp 2-component vector of float) 0:35 u2: direct index for structure ( uniform 2-component vector of uint) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:35 Constant: 0:35 5 (const uint) 0:35 f2: direct index for structure ( uniform 2-component vector of float) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:35 Constant: 0:35 6 (const uint) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 'r21' ( temp 2-component vector of uint) 0:36 clamp ( temp 2-component vector of uint) 0:36 Convert bool to uint ( temp 2-component vector of uint) 0:36 b2: direct index for structure ( uniform 2-component vector of bool) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:36 Constant: 0:36 7 (const uint) 0:36 u2: direct index for structure ( uniform 2-component vector of uint) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:36 Constant: 0:36 5 (const uint) 0:36 Convert bool to uint ( temp 2-component vector of uint) 0:36 b2: direct index for structure ( uniform 2-component vector of bool) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:36 Constant: 0:36 7 (const uint) 0:37 Sequence 0:37 move second child to first child ( temp 2-component vector of float) 0:37 'r22' ( temp 2-component vector of float) 0:37 clamp ( temp 2-component vector of float) 0:37 Convert bool to float ( temp 2-component vector of float) 0:37 b2: direct index for structure ( uniform 2-component vector of bool) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:37 Constant: 0:37 7 (const uint) 0:37 f2: direct index for structure ( uniform 2-component vector of float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:37 Constant: 0:37 6 (const uint) 0:37 Convert bool to float ( temp 2-component vector of float) 0:37 b2: direct index for structure ( uniform 2-component vector of bool) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:37 Constant: 0:37 7 (const uint) 0:40 Sequence 0:40 move second child to first child ( temp 2-component vector of float) 0:40 'r30' ( temp 2-component vector of float) 0:40 max ( temp 2-component vector of float) 0:40 Construct vec2 ( in 2-component vector of float) 0:40 Convert bool to float ( temp float) 0:40 b: direct index for structure ( uniform bool) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:40 Constant: 0:40 3 (const uint) 0:40 f2: direct index for structure ( uniform 2-component vector of float) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:40 Constant: 0:40 6 (const uint) 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of uint) 0:41 'r31' ( temp 2-component vector of uint) 0:41 max ( temp 2-component vector of uint) 0:41 Construct uvec2 ( in 2-component vector of uint) 0:41 Convert bool to uint ( temp uint) 0:41 b: direct index for structure ( uniform bool) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:41 Constant: 0:41 3 (const uint) 0:41 u2: direct index for structure ( uniform 2-component vector of uint) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:41 Constant: 0:41 5 (const uint) 0:42 Sequence 0:42 move second child to first child ( temp 2-component vector of int) 0:42 'r32' ( temp 2-component vector of int) 0:42 max ( temp 2-component vector of int) 0:42 Construct ivec2 ( in 2-component vector of int) 0:42 Convert bool to int ( temp int) 0:42 b: direct index for structure ( uniform bool) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:42 Constant: 0:42 3 (const uint) 0:42 i2: direct index for structure ( uniform 2-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:42 Constant: 0:42 4 (const uint) 0:43 Sequence 0:43 move second child to first child ( temp 2-component vector of float) 0:43 'r33' ( temp 2-component vector of float) 0:43 max ( temp 2-component vector of float) 0:43 Construct vec2 ( in 2-component vector of float) 0:43 Convert int to float ( temp float) 0:43 i: direct index for structure ( uniform int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:43 Constant: 0:43 0 (const uint) 0:43 f2: direct index for structure ( uniform 2-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:43 Constant: 0:43 6 (const uint) 0:44 Sequence 0:44 move second child to first child ( temp 2-component vector of float) 0:44 'r34' ( temp 2-component vector of float) 0:44 max ( temp 2-component vector of float) 0:44 Construct vec2 ( in 2-component vector of float) 0:44 Convert uint to float ( temp float) 0:44 u: direct index for structure ( uniform uint) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:44 Constant: 0:44 1 (const uint) 0:44 f2: direct index for structure ( uniform 2-component vector of float) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:44 Constant: 0:44 6 (const uint) 0:46 Sequence 0:46 move second child to first child ( temp 2-component vector of float) 0:46 'r40' ( temp 2-component vector of float) 0:46 clamp ( temp 2-component vector of float) 0:46 Construct vec2 ( in 2-component vector of float) 0:46 Convert int to float ( temp float) 0:46 i: direct index for structure ( uniform int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:46 Constant: 0:46 0 (const uint) 0:46 Convert uint to float ( temp 2-component vector of float) 0:46 u2: direct index for structure ( uniform 2-component vector of uint) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:46 Constant: 0:46 5 (const uint) 0:46 f2: direct index for structure ( uniform 2-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:46 Constant: 0:46 6 (const uint) 0:47 Sequence 0:47 move second child to first child ( temp 2-component vector of uint) 0:47 'r41' ( temp 2-component vector of uint) 0:47 clamp ( temp 2-component vector of uint) 0:47 Convert bool to uint ( temp 2-component vector of uint) 0:47 b2: direct index for structure ( uniform 2-component vector of bool) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:47 Constant: 0:47 7 (const uint) 0:47 Construct uvec2 ( in 2-component vector of uint) 0:47 u: direct index for structure ( uniform uint) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:47 Constant: 0:47 1 (const uint) 0:47 Convert bool to uint ( temp 2-component vector of uint) 0:47 b2: direct index for structure ( uniform 2-component vector of bool) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:47 Constant: 0:47 7 (const uint) 0:48 Sequence 0:48 move second child to first child ( temp 2-component vector of float) 0:48 'r42' ( temp 2-component vector of float) 0:48 clamp ( temp 2-component vector of float) 0:48 Convert bool to float ( temp 2-component vector of float) 0:48 b2: direct index for structure ( uniform 2-component vector of bool) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:48 Constant: 0:48 7 (const uint) 0:48 Construct vec2 ( in 2-component vector of float) 0:48 f: direct index for structure ( uniform float) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:48 Constant: 0:48 2 (const uint) 0:48 Construct vec2 ( in 2-component vector of float) 0:48 Convert bool to float ( temp float) 0:48 b: direct index for structure ( uniform bool) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:48 Constant: 0:48 3 (const uint) 0:49 Sequence 0:49 move second child to first child ( temp 2-component vector of int) 0:49 'r43' ( temp 2-component vector of int) 0:49 Convert uint to int ( temp 2-component vector of int) 0:49 clamp ( temp 2-component vector of uint) 0:49 Construct uvec2 ( in 2-component vector of uint) 0:49 Convert int to uint ( temp uint) 0:49 i: direct index for structure ( uniform int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:49 Constant: 0:49 0 (const uint) 0:49 Convert int to uint ( temp 2-component vector of uint) 0:49 i2: direct index for structure ( uniform 2-component vector of int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:49 Constant: 0:49 4 (const uint) 0:49 u2: direct index for structure ( uniform 2-component vector of uint) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:49 Constant: 0:49 5 (const uint) 0:51 Sequence 0:51 move second child to first child ( temp float) 0:51 'r50' ( temp float) 0:51 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:51 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:51 Convert uint to int ( temp int) 0:51 upos: direct index for structure ( uniform uint) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:51 Constant: 0:51 8 (const uint) 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'r51' ( temp float) 0:52 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:52 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:52 Convert float to int ( temp int) 0:52 fpos: direct index for structure ( uniform float) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:52 Constant: 0:52 9 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:70 textureSize ( temp uint) 0:70 'g_tTex1df4' ( uniform texture1D) 0:70 Constant: 0:70 0 (const int) 0:70 move second child to first child ( temp int) 0:70 'WidthI' ( temp int) 0:70 Convert uint to int ( temp int) 0:70 'sizeQueryTemp' ( temp uint) 0:71 Sequence 0:71 move second child to first child ( temp uint) 0:71 'sizeQueryTemp' ( temp uint) 0:71 textureSize ( temp uint) 0:71 'g_tTex1df4' ( uniform texture1D) 0:71 Constant: 0:71 6 (const uint) 0:71 move second child to first child ( temp int) 0:71 'WidthI' ( temp int) 0:71 Convert uint to int ( temp int) 0:71 'sizeQueryTemp' ( temp uint) 0:71 move second child to first child ( temp uint) 0:71 'NumberOfLevelsU' ( temp uint) 0:71 textureQueryLevels ( temp uint) 0:71 'g_tTex1df4' ( uniform texture1D) 0:72 Sequence 0:72 move second child to first child ( temp uint) 0:72 'sizeQueryTemp' ( temp uint) 0:72 textureSize ( temp uint) 0:72 'g_tTex1df4' ( uniform texture1D) 0:72 Constant: 0:72 6 (const uint) 0:72 move second child to first child ( temp uint) 0:72 'WidthU' ( temp uint) 0:72 'sizeQueryTemp' ( temp uint) 0:72 move second child to first child ( temp int) 0:72 'NumberOfLevelsI' ( temp int) 0:72 Convert uint to int ( temp int) 0:72 textureQueryLevels ( temp uint) 0:72 'g_tTex1df4' ( uniform texture1D) 0:73 Sequence 0:73 move second child to first child ( temp uint) 0:73 'sizeQueryTemp' ( temp uint) 0:73 textureSize ( temp uint) 0:73 'g_tTex1df4' ( uniform texture1D) 0:73 Constant: 0:73 6 (const uint) 0:73 move second child to first child ( temp int) 0:73 'WidthI' ( temp int) 0:73 Convert uint to int ( temp int) 0:73 'sizeQueryTemp' ( temp uint) 0:73 move second child to first child ( temp int) 0:73 'NumberOfLevelsI' ( temp int) 0:73 Convert uint to int ( temp int) 0:73 textureQueryLevels ( temp uint) 0:73 'g_tTex1df4' ( uniform texture1D) 0:77 move second child to first child ( temp 4-component vector of float) 0:77 color: direct index for structure ( temp 4-component vector of float) 0:77 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:77 Constant: 0:77 0 (const int) 0:77 Construct vec4 ( temp 4-component vector of float) 0:77 'r00' ( temp float) 0:78 Branch: Return with expression 0:78 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:20 color: direct index for structure ( temp 4-component vector of float) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:20 Constant: 0:20 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'r00' ( temp float) 0:23 max ( temp float) 0:23 Convert bool to float ( temp float) 0:23 b: direct index for structure ( uniform bool) 0:23 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:23 Constant: 0:23 3 (const uint) 0:23 f: direct index for structure ( uniform float) 0:23 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:23 Constant: 0:23 2 (const uint) 0:24 Sequence 0:24 move second child to first child ( temp uint) 0:24 'r01' ( temp uint) 0:24 max ( temp uint) 0:24 Convert bool to uint ( temp uint) 0:24 b: direct index for structure ( uniform bool) 0:24 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:24 Constant: 0:24 3 (const uint) 0:24 u: direct index for structure ( uniform uint) 0:24 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:24 Constant: 0:24 1 (const uint) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'r02' ( temp int) 0:25 max ( temp int) 0:25 Convert bool to int ( temp int) 0:25 b: direct index for structure ( uniform bool) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:25 Constant: 0:25 3 (const uint) 0:25 i: direct index for structure ( uniform int) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:25 Constant: 0:25 0 (const uint) 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'r03' ( temp float) 0:26 max ( temp float) 0:26 Convert int to float ( temp float) 0:26 i: direct index for structure ( uniform int) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:26 Constant: 0:26 0 (const uint) 0:26 f: direct index for structure ( uniform float) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:26 Constant: 0:26 2 (const uint) 0:27 Sequence 0:27 move second child to first child ( temp float) 0:27 'r04' ( temp float) 0:27 max ( temp float) 0:27 Convert uint to float ( temp float) 0:27 u: direct index for structure ( uniform uint) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:27 Constant: 0:27 1 (const uint) 0:27 f: direct index for structure ( uniform float) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:27 Constant: 0:27 2 (const uint) 0:29 Sequence 0:29 move second child to first child ( temp 2-component vector of float) 0:29 'r10' ( temp 2-component vector of float) 0:29 max ( temp 2-component vector of float) 0:29 Convert bool to float ( temp 2-component vector of float) 0:29 b2: direct index for structure ( uniform 2-component vector of bool) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:29 Constant: 0:29 7 (const uint) 0:29 f2: direct index for structure ( uniform 2-component vector of float) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:29 Constant: 0:29 6 (const uint) 0:30 Sequence 0:30 move second child to first child ( temp 2-component vector of uint) 0:30 'r11' ( temp 2-component vector of uint) 0:30 max ( temp 2-component vector of uint) 0:30 Convert bool to uint ( temp 2-component vector of uint) 0:30 b2: direct index for structure ( uniform 2-component vector of bool) 0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:30 Constant: 0:30 7 (const uint) 0:30 u2: direct index for structure ( uniform 2-component vector of uint) 0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:30 Constant: 0:30 5 (const uint) 0:31 Sequence 0:31 move second child to first child ( temp 2-component vector of int) 0:31 'r12' ( temp 2-component vector of int) 0:31 max ( temp 2-component vector of int) 0:31 Convert bool to int ( temp 2-component vector of int) 0:31 b2: direct index for structure ( uniform 2-component vector of bool) 0:31 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:31 Constant: 0:31 7 (const uint) 0:31 i2: direct index for structure ( uniform 2-component vector of int) 0:31 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:31 Constant: 0:31 4 (const uint) 0:32 Sequence 0:32 move second child to first child ( temp 2-component vector of float) 0:32 'r13' ( temp 2-component vector of float) 0:32 max ( temp 2-component vector of float) 0:32 Convert int to float ( temp 2-component vector of float) 0:32 i2: direct index for structure ( uniform 2-component vector of int) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:32 Constant: 0:32 4 (const uint) 0:32 f2: direct index for structure ( uniform 2-component vector of float) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:32 Constant: 0:32 6 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp 2-component vector of float) 0:33 'r14' ( temp 2-component vector of float) 0:33 max ( temp 2-component vector of float) 0:33 Convert uint to float ( temp 2-component vector of float) 0:33 u2: direct index for structure ( uniform 2-component vector of uint) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:33 Constant: 0:33 5 (const uint) 0:33 f2: direct index for structure ( uniform 2-component vector of float) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:33 Constant: 0:33 6 (const uint) 0:35 Sequence 0:35 move second child to first child ( temp 2-component vector of float) 0:35 'r20' ( temp 2-component vector of float) 0:35 clamp ( temp 2-component vector of float) 0:35 Convert int to float ( temp 2-component vector of float) 0:35 i2: direct index for structure ( uniform 2-component vector of int) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:35 Constant: 0:35 4 (const uint) 0:35 Convert uint to float ( temp 2-component vector of float) 0:35 u2: direct index for structure ( uniform 2-component vector of uint) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:35 Constant: 0:35 5 (const uint) 0:35 f2: direct index for structure ( uniform 2-component vector of float) 0:35 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:35 Constant: 0:35 6 (const uint) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 'r21' ( temp 2-component vector of uint) 0:36 clamp ( temp 2-component vector of uint) 0:36 Convert bool to uint ( temp 2-component vector of uint) 0:36 b2: direct index for structure ( uniform 2-component vector of bool) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:36 Constant: 0:36 7 (const uint) 0:36 u2: direct index for structure ( uniform 2-component vector of uint) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:36 Constant: 0:36 5 (const uint) 0:36 Convert bool to uint ( temp 2-component vector of uint) 0:36 b2: direct index for structure ( uniform 2-component vector of bool) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:36 Constant: 0:36 7 (const uint) 0:37 Sequence 0:37 move second child to first child ( temp 2-component vector of float) 0:37 'r22' ( temp 2-component vector of float) 0:37 clamp ( temp 2-component vector of float) 0:37 Convert bool to float ( temp 2-component vector of float) 0:37 b2: direct index for structure ( uniform 2-component vector of bool) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:37 Constant: 0:37 7 (const uint) 0:37 f2: direct index for structure ( uniform 2-component vector of float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:37 Constant: 0:37 6 (const uint) 0:37 Convert bool to float ( temp 2-component vector of float) 0:37 b2: direct index for structure ( uniform 2-component vector of bool) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:37 Constant: 0:37 7 (const uint) 0:40 Sequence 0:40 move second child to first child ( temp 2-component vector of float) 0:40 'r30' ( temp 2-component vector of float) 0:40 max ( temp 2-component vector of float) 0:40 Construct vec2 ( in 2-component vector of float) 0:40 Convert bool to float ( temp float) 0:40 b: direct index for structure ( uniform bool) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:40 Constant: 0:40 3 (const uint) 0:40 f2: direct index for structure ( uniform 2-component vector of float) 0:40 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:40 Constant: 0:40 6 (const uint) 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of uint) 0:41 'r31' ( temp 2-component vector of uint) 0:41 max ( temp 2-component vector of uint) 0:41 Construct uvec2 ( in 2-component vector of uint) 0:41 Convert bool to uint ( temp uint) 0:41 b: direct index for structure ( uniform bool) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:41 Constant: 0:41 3 (const uint) 0:41 u2: direct index for structure ( uniform 2-component vector of uint) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:41 Constant: 0:41 5 (const uint) 0:42 Sequence 0:42 move second child to first child ( temp 2-component vector of int) 0:42 'r32' ( temp 2-component vector of int) 0:42 max ( temp 2-component vector of int) 0:42 Construct ivec2 ( in 2-component vector of int) 0:42 Convert bool to int ( temp int) 0:42 b: direct index for structure ( uniform bool) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:42 Constant: 0:42 3 (const uint) 0:42 i2: direct index for structure ( uniform 2-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:42 Constant: 0:42 4 (const uint) 0:43 Sequence 0:43 move second child to first child ( temp 2-component vector of float) 0:43 'r33' ( temp 2-component vector of float) 0:43 max ( temp 2-component vector of float) 0:43 Construct vec2 ( in 2-component vector of float) 0:43 Convert int to float ( temp float) 0:43 i: direct index for structure ( uniform int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:43 Constant: 0:43 0 (const uint) 0:43 f2: direct index for structure ( uniform 2-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:43 Constant: 0:43 6 (const uint) 0:44 Sequence 0:44 move second child to first child ( temp 2-component vector of float) 0:44 'r34' ( temp 2-component vector of float) 0:44 max ( temp 2-component vector of float) 0:44 Construct vec2 ( in 2-component vector of float) 0:44 Convert uint to float ( temp float) 0:44 u: direct index for structure ( uniform uint) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:44 Constant: 0:44 1 (const uint) 0:44 f2: direct index for structure ( uniform 2-component vector of float) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:44 Constant: 0:44 6 (const uint) 0:46 Sequence 0:46 move second child to first child ( temp 2-component vector of float) 0:46 'r40' ( temp 2-component vector of float) 0:46 clamp ( temp 2-component vector of float) 0:46 Construct vec2 ( in 2-component vector of float) 0:46 Convert int to float ( temp float) 0:46 i: direct index for structure ( uniform int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:46 Constant: 0:46 0 (const uint) 0:46 Convert uint to float ( temp 2-component vector of float) 0:46 u2: direct index for structure ( uniform 2-component vector of uint) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:46 Constant: 0:46 5 (const uint) 0:46 f2: direct index for structure ( uniform 2-component vector of float) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:46 Constant: 0:46 6 (const uint) 0:47 Sequence 0:47 move second child to first child ( temp 2-component vector of uint) 0:47 'r41' ( temp 2-component vector of uint) 0:47 clamp ( temp 2-component vector of uint) 0:47 Convert bool to uint ( temp 2-component vector of uint) 0:47 b2: direct index for structure ( uniform 2-component vector of bool) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:47 Constant: 0:47 7 (const uint) 0:47 Construct uvec2 ( in 2-component vector of uint) 0:47 u: direct index for structure ( uniform uint) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:47 Constant: 0:47 1 (const uint) 0:47 Convert bool to uint ( temp 2-component vector of uint) 0:47 b2: direct index for structure ( uniform 2-component vector of bool) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:47 Constant: 0:47 7 (const uint) 0:48 Sequence 0:48 move second child to first child ( temp 2-component vector of float) 0:48 'r42' ( temp 2-component vector of float) 0:48 clamp ( temp 2-component vector of float) 0:48 Convert bool to float ( temp 2-component vector of float) 0:48 b2: direct index for structure ( uniform 2-component vector of bool) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:48 Constant: 0:48 7 (const uint) 0:48 Construct vec2 ( in 2-component vector of float) 0:48 f: direct index for structure ( uniform float) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:48 Constant: 0:48 2 (const uint) 0:48 Construct vec2 ( in 2-component vector of float) 0:48 Convert bool to float ( temp float) 0:48 b: direct index for structure ( uniform bool) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:48 Constant: 0:48 3 (const uint) 0:49 Sequence 0:49 move second child to first child ( temp 2-component vector of int) 0:49 'r43' ( temp 2-component vector of int) 0:49 Convert uint to int ( temp 2-component vector of int) 0:49 clamp ( temp 2-component vector of uint) 0:49 Construct uvec2 ( in 2-component vector of uint) 0:49 Convert int to uint ( temp uint) 0:49 i: direct index for structure ( uniform int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:49 Constant: 0:49 0 (const uint) 0:49 Convert int to uint ( temp 2-component vector of uint) 0:49 i2: direct index for structure ( uniform 2-component vector of int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:49 Constant: 0:49 4 (const uint) 0:49 u2: direct index for structure ( uniform 2-component vector of uint) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:49 Constant: 0:49 5 (const uint) 0:51 Sequence 0:51 move second child to first child ( temp float) 0:51 'r50' ( temp float) 0:51 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:51 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:51 Convert uint to int ( temp int) 0:51 upos: direct index for structure ( uniform uint) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:51 Constant: 0:51 8 (const uint) 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'r51' ( temp float) 0:52 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:52 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:52 Convert float to int ( temp int) 0:52 fpos: direct index for structure ( uniform float) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:52 Constant: 0:52 9 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp uint) 0:70 'sizeQueryTemp' ( temp uint) 0:70 textureSize ( temp uint) 0:70 'g_tTex1df4' ( uniform texture1D) 0:70 Constant: 0:70 0 (const int) 0:70 move second child to first child ( temp int) 0:70 'WidthI' ( temp int) 0:70 Convert uint to int ( temp int) 0:70 'sizeQueryTemp' ( temp uint) 0:71 Sequence 0:71 move second child to first child ( temp uint) 0:71 'sizeQueryTemp' ( temp uint) 0:71 textureSize ( temp uint) 0:71 'g_tTex1df4' ( uniform texture1D) 0:71 Constant: 0:71 6 (const uint) 0:71 move second child to first child ( temp int) 0:71 'WidthI' ( temp int) 0:71 Convert uint to int ( temp int) 0:71 'sizeQueryTemp' ( temp uint) 0:71 move second child to first child ( temp uint) 0:71 'NumberOfLevelsU' ( temp uint) 0:71 textureQueryLevels ( temp uint) 0:71 'g_tTex1df4' ( uniform texture1D) 0:72 Sequence 0:72 move second child to first child ( temp uint) 0:72 'sizeQueryTemp' ( temp uint) 0:72 textureSize ( temp uint) 0:72 'g_tTex1df4' ( uniform texture1D) 0:72 Constant: 0:72 6 (const uint) 0:72 move second child to first child ( temp uint) 0:72 'WidthU' ( temp uint) 0:72 'sizeQueryTemp' ( temp uint) 0:72 move second child to first child ( temp int) 0:72 'NumberOfLevelsI' ( temp int) 0:72 Convert uint to int ( temp int) 0:72 textureQueryLevels ( temp uint) 0:72 'g_tTex1df4' ( uniform texture1D) 0:73 Sequence 0:73 move second child to first child ( temp uint) 0:73 'sizeQueryTemp' ( temp uint) 0:73 textureSize ( temp uint) 0:73 'g_tTex1df4' ( uniform texture1D) 0:73 Constant: 0:73 6 (const uint) 0:73 move second child to first child ( temp int) 0:73 'WidthI' ( temp int) 0:73 Convert uint to int ( temp int) 0:73 'sizeQueryTemp' ( temp uint) 0:73 move second child to first child ( temp int) 0:73 'NumberOfLevelsI' ( temp int) 0:73 Convert uint to int ( temp int) 0:73 textureQueryLevels ( temp uint) 0:73 'g_tTex1df4' ( uniform texture1D) 0:77 move second child to first child ( temp 4-component vector of float) 0:77 color: direct index for structure ( temp 4-component vector of float) 0:77 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:77 Constant: 0:77 0 (const int) 0:77 Construct vec4 ( temp 4-component vector of float) 0:77 'r00' ( temp float) 0:78 Branch: Return with expression 0:78 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:20 color: direct index for structure ( temp 4-component vector of float) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:20 Constant: 0:20 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 322 Capability Shader Capability Sampled1D Capability SampledBuffer Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 319 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "color" Name 10 "@main(" Name 13 "r00" Name 19 "$Global" MemberName 19($Global) 0 "i" MemberName 19($Global) 1 "u" MemberName 19($Global) 2 "f" MemberName 19($Global) 3 "b" MemberName 19($Global) 4 "i2" MemberName 19($Global) 5 "u2" MemberName 19($Global) 6 "f2" MemberName 19($Global) 7 "b2" MemberName 19($Global) 8 "upos" MemberName 19($Global) 9 "fpos" Name 21 "" Name 38 "r01" Name 49 "r02" Name 59 "r03" Name 66 "r04" Name 74 "r10" Name 91 "r11" Name 102 "r12" Name 114 "r13" Name 121 "r14" Name 128 "r20" Name 138 "r21" Name 150 "r22" Name 162 "r30" Name 171 "r31" Name 180 "r32" Name 189 "r33" Name 197 "r34" Name 205 "r40" Name 216 "r41" Name 229 "r42" Name 243 "r43" Name 255 "r50" Name 258 "g_tTexbfs" Name 266 "r51" Name 274 "sizeQueryTemp" Name 277 "g_tTex1df4" Name 280 "WidthI" Name 283 "sizeQueryTemp" Name 289 "NumberOfLevelsU" Name 292 "sizeQueryTemp" Name 295 "WidthU" Name 297 "NumberOfLevelsI" Name 301 "sizeQueryTemp" Name 310 "ps_output" Name 319 "@entryPointOutput.color" Decorate 19($Global) Block MemberDecorate 19($Global) 0 Offset 0 MemberDecorate 19($Global) 1 Offset 4 MemberDecorate 19($Global) 2 Offset 8 MemberDecorate 19($Global) 3 Offset 12 MemberDecorate 19($Global) 4 Offset 16 MemberDecorate 19($Global) 5 Offset 24 MemberDecorate 19($Global) 6 Offset 32 MemberDecorate 19($Global) 7 Offset 40 MemberDecorate 19($Global) 8 Offset 48 MemberDecorate 19($Global) 9 Offset 52 Decorate 21 Binding 0 Decorate 21 DescriptorSet 0 Decorate 258(g_tTexbfs) Binding 1 Decorate 258(g_tTexbfs) DescriptorSet 0 Decorate 277(g_tTex1df4) Binding 2 Decorate 277(g_tTex1df4) DescriptorSet 0 Decorate 319(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeInt 32 1 15: TypeInt 32 0 16: TypeVector 14(int) 2 17: TypeVector 15(int) 2 18: TypeVector 6(float) 2 19($Global): TypeStruct 14(int) 15(int) 6(float) 15(int) 16(ivec2) 17(ivec2) 18(fvec2) 17(ivec2) 15(int) 6(float) 20: TypePointer Uniform 19($Global) 21: 20(ptr) Variable Uniform 22: 14(int) Constant 3 23: TypePointer Uniform 15(int) 26: TypeBool 27: 15(int) Constant 0 29: 6(float) Constant 0 30: 6(float) Constant 1065353216 32: 14(int) Constant 2 33: TypePointer Uniform 6(float) 37: TypePointer Function 15(int) 42: 15(int) Constant 1 44: 14(int) Constant 1 48: TypePointer Function 14(int) 53: 14(int) Constant 0 55: TypePointer Uniform 14(int) 73: TypePointer Function 18(fvec2) 75: 14(int) Constant 7 76: TypePointer Uniform 17(ivec2) 79: TypeVector 26(bool) 2 80: 17(ivec2) ConstantComposite 27 27 82: 18(fvec2) ConstantComposite 29 29 83: 18(fvec2) ConstantComposite 30 30 85: 14(int) Constant 6 86: TypePointer Uniform 18(fvec2) 90: TypePointer Function 17(ivec2) 95: 17(ivec2) ConstantComposite 42 42 97: 14(int) Constant 5 101: TypePointer Function 16(ivec2) 106: 16(ivec2) ConstantComposite 53 53 107: 16(ivec2) ConstantComposite 44 44 109: 14(int) Constant 4 110: TypePointer Uniform 16(ivec2) 256: TypeImage 6(float) Buffer sampled format:R32f 257: TypePointer UniformConstant 256 258(g_tTexbfs): 257(ptr) Variable UniformConstant 260: 14(int) Constant 8 268: 14(int) Constant 9 275: TypeImage 6(float) 1D sampled format:Unknown 276: TypePointer UniformConstant 275 277(g_tTex1df4): 276(ptr) Variable UniformConstant 285: 15(int) Constant 6 309: TypePointer Function 8(PS_OUTPUT) 313: TypePointer Function 7(fvec4) 318: TypePointer Output 7(fvec4) 319(@entryPointOutput.color): 318(ptr) Variable Output 4(main): 2 Function None 3 5: Label 320:8(PS_OUTPUT) FunctionCall 10(@main() 321: 7(fvec4) CompositeExtract 320 0 Store 319(@entryPointOutput.color) 321 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function 38(r01): 37(ptr) Variable Function 49(r02): 48(ptr) Variable Function 59(r03): 12(ptr) Variable Function 66(r04): 12(ptr) Variable Function 74(r10): 73(ptr) Variable Function 91(r11): 90(ptr) Variable Function 102(r12): 101(ptr) Variable Function 114(r13): 73(ptr) Variable Function 121(r14): 73(ptr) Variable Function 128(r20): 73(ptr) Variable Function 138(r21): 90(ptr) Variable Function 150(r22): 73(ptr) Variable Function 162(r30): 73(ptr) Variable Function 171(r31): 90(ptr) Variable Function 180(r32): 101(ptr) Variable Function 189(r33): 73(ptr) Variable Function 197(r34): 73(ptr) Variable Function 205(r40): 73(ptr) Variable Function 216(r41): 90(ptr) Variable Function 229(r42): 73(ptr) Variable Function 243(r43): 101(ptr) Variable Function 255(r50): 12(ptr) Variable Function 266(r51): 12(ptr) Variable Function 274(sizeQueryTemp): 37(ptr) Variable Function 280(WidthI): 48(ptr) Variable Function 283(sizeQueryTemp): 37(ptr) Variable Function 289(NumberOfLevelsU): 37(ptr) Variable Function 292(sizeQueryTemp): 37(ptr) Variable Function 295(WidthU): 37(ptr) Variable Function 297(NumberOfLevelsI): 48(ptr) Variable Function 301(sizeQueryTemp): 37(ptr) Variable Function 310(ps_output): 309(ptr) Variable Function 24: 23(ptr) AccessChain 21 22 25: 15(int) Load 24 28: 26(bool) INotEqual 25 27 31: 6(float) Select 28 30 29 34: 33(ptr) AccessChain 21 32 35: 6(float) Load 34 36: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 31 35 Store 13(r00) 36 39: 23(ptr) AccessChain 21 22 40: 15(int) Load 39 41: 26(bool) INotEqual 40 27 43: 15(int) Select 41 42 27 45: 23(ptr) AccessChain 21 44 46: 15(int) Load 45 47: 15(int) ExtInst 1(GLSL.std.450) 41(UMax) 43 46 Store 38(r01) 47 50: 23(ptr) AccessChain 21 22 51: 15(int) Load 50 52: 26(bool) INotEqual 51 27 54: 14(int) Select 52 44 53 56: 55(ptr) AccessChain 21 53 57: 14(int) Load 56 58: 14(int) ExtInst 1(GLSL.std.450) 42(SMax) 54 57 Store 49(r02) 58 60: 55(ptr) AccessChain 21 53 61: 14(int) Load 60 62: 6(float) ConvertSToF 61 63: 33(ptr) AccessChain 21 32 64: 6(float) Load 63 65: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 62 64 Store 59(r03) 65 67: 23(ptr) AccessChain 21 44 68: 15(int) Load 67 69: 6(float) ConvertUToF 68 70: 33(ptr) AccessChain 21 32 71: 6(float) Load 70 72: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 69 71 Store 66(r04) 72 77: 76(ptr) AccessChain 21 75 78: 17(ivec2) Load 77 81: 79(bvec2) INotEqual 78 80 84: 18(fvec2) Select 81 83 82 87: 86(ptr) AccessChain 21 85 88: 18(fvec2) Load 87 89: 18(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 84 88 Store 74(r10) 89 92: 76(ptr) AccessChain 21 75 93: 17(ivec2) Load 92 94: 79(bvec2) INotEqual 93 80 96: 17(ivec2) Select 94 95 80 98: 76(ptr) AccessChain 21 97 99: 17(ivec2) Load 98 100: 17(ivec2) ExtInst 1(GLSL.std.450) 41(UMax) 96 99 Store 91(r11) 100 103: 76(ptr) AccessChain 21 75 104: 17(ivec2) Load 103 105: 79(bvec2) INotEqual 104 80 108: 16(ivec2) Select 105 107 106 111: 110(ptr) AccessChain 21 109 112: 16(ivec2) Load 111 113: 16(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 108 112 Store 102(r12) 113 115: 110(ptr) AccessChain 21 109 116: 16(ivec2) Load 115 117: 18(fvec2) ConvertSToF 116 118: 86(ptr) AccessChain 21 85 119: 18(fvec2) Load 118 120: 18(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 117 119 Store 114(r13) 120 122: 76(ptr) AccessChain 21 97 123: 17(ivec2) Load 122 124: 18(fvec2) ConvertUToF 123 125: 86(ptr) AccessChain 21 85 126: 18(fvec2) Load 125 127: 18(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 124 126 Store 121(r14) 127 129: 110(ptr) AccessChain 21 109 130: 16(ivec2) Load 129 131: 18(fvec2) ConvertSToF 130 132: 76(ptr) AccessChain 21 97 133: 17(ivec2) Load 132 134: 18(fvec2) ConvertUToF 133 135: 86(ptr) AccessChain 21 85 136: 18(fvec2) Load 135 137: 18(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 131 134 136 Store 128(r20) 137 139: 76(ptr) AccessChain 21 75 140: 17(ivec2) Load 139 141: 79(bvec2) INotEqual 140 80 142: 17(ivec2) Select 141 95 80 143: 76(ptr) AccessChain 21 97 144: 17(ivec2) Load 143 145: 76(ptr) AccessChain 21 75 146: 17(ivec2) Load 145 147: 79(bvec2) INotEqual 146 80 148: 17(ivec2) Select 147 95 80 149: 17(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 142 144 148 Store 138(r21) 149 151: 76(ptr) AccessChain 21 75 152: 17(ivec2) Load 151 153: 79(bvec2) INotEqual 152 80 154: 18(fvec2) Select 153 83 82 155: 86(ptr) AccessChain 21 85 156: 18(fvec2) Load 155 157: 76(ptr) AccessChain 21 75 158: 17(ivec2) Load 157 159: 79(bvec2) INotEqual 158 80 160: 18(fvec2) Select 159 83 82 161: 18(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 154 156 160 Store 150(r22) 161 163: 23(ptr) AccessChain 21 22 164: 15(int) Load 163 165: 26(bool) INotEqual 164 27 166: 6(float) Select 165 30 29 167: 18(fvec2) CompositeConstruct 166 166 168: 86(ptr) AccessChain 21 85 169: 18(fvec2) Load 168 170: 18(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 167 169 Store 162(r30) 170 172: 23(ptr) AccessChain 21 22 173: 15(int) Load 172 174: 26(bool) INotEqual 173 27 175: 15(int) Select 174 42 27 176: 17(ivec2) CompositeConstruct 175 175 177: 76(ptr) AccessChain 21 97 178: 17(ivec2) Load 177 179: 17(ivec2) ExtInst 1(GLSL.std.450) 41(UMax) 176 178 Store 171(r31) 179 181: 23(ptr) AccessChain 21 22 182: 15(int) Load 181 183: 26(bool) INotEqual 182 27 184: 14(int) Select 183 44 53 185: 16(ivec2) CompositeConstruct 184 184 186: 110(ptr) AccessChain 21 109 187: 16(ivec2) Load 186 188: 16(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 185 187 Store 180(r32) 188 190: 55(ptr) AccessChain 21 53 191: 14(int) Load 190 192: 6(float) ConvertSToF 191 193: 18(fvec2) CompositeConstruct 192 192 194: 86(ptr) AccessChain 21 85 195: 18(fvec2) Load 194 196: 18(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 193 195 Store 189(r33) 196 198: 23(ptr) AccessChain 21 44 199: 15(int) Load 198 200: 6(float) ConvertUToF 199 201: 18(fvec2) CompositeConstruct 200 200 202: 86(ptr) AccessChain 21 85 203: 18(fvec2) Load 202 204: 18(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 201 203 Store 197(r34) 204 206: 55(ptr) AccessChain 21 53 207: 14(int) Load 206 208: 6(float) ConvertSToF 207 209: 18(fvec2) CompositeConstruct 208 208 210: 76(ptr) AccessChain 21 97 211: 17(ivec2) Load 210 212: 18(fvec2) ConvertUToF 211 213: 86(ptr) AccessChain 21 85 214: 18(fvec2) Load 213 215: 18(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 209 212 214 Store 205(r40) 215 217: 76(ptr) AccessChain 21 75 218: 17(ivec2) Load 217 219: 79(bvec2) INotEqual 218 80 220: 17(ivec2) Select 219 95 80 221: 23(ptr) AccessChain 21 44 222: 15(int) Load 221 223: 17(ivec2) CompositeConstruct 222 222 224: 76(ptr) AccessChain 21 75 225: 17(ivec2) Load 224 226: 79(bvec2) INotEqual 225 80 227: 17(ivec2) Select 226 95 80 228: 17(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 220 223 227 Store 216(r41) 228 230: 76(ptr) AccessChain 21 75 231: 17(ivec2) Load 230 232: 79(bvec2) INotEqual 231 80 233: 18(fvec2) Select 232 83 82 234: 33(ptr) AccessChain 21 32 235: 6(float) Load 234 236: 18(fvec2) CompositeConstruct 235 235 237: 23(ptr) AccessChain 21 22 238: 15(int) Load 237 239: 26(bool) INotEqual 238 27 240: 6(float) Select 239 30 29 241: 18(fvec2) CompositeConstruct 240 240 242: 18(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 233 236 241 Store 229(r42) 242 244: 55(ptr) AccessChain 21 53 245: 14(int) Load 244 246: 15(int) Bitcast 245 247: 17(ivec2) CompositeConstruct 246 246 248: 110(ptr) AccessChain 21 109 249: 16(ivec2) Load 248 250: 17(ivec2) Bitcast 249 251: 76(ptr) AccessChain 21 97 252: 17(ivec2) Load 251 253: 17(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 247 250 252 254: 16(ivec2) Bitcast 253 Store 243(r43) 254 259: 256 Load 258(g_tTexbfs) 261: 23(ptr) AccessChain 21 260 262: 15(int) Load 261 263: 14(int) Bitcast 262 264: 7(fvec4) ImageFetch 259 263 265: 6(float) CompositeExtract 264 0 Store 255(r50) 265 267: 256 Load 258(g_tTexbfs) 269: 33(ptr) AccessChain 21 268 270: 6(float) Load 269 271: 14(int) ConvertFToS 270 272: 7(fvec4) ImageFetch 267 271 273: 6(float) CompositeExtract 272 0 Store 266(r51) 273 278: 275 Load 277(g_tTex1df4) 279: 15(int) ImageQuerySizeLod 278 53 Store 274(sizeQueryTemp) 279 281: 15(int) Load 274(sizeQueryTemp) 282: 14(int) Bitcast 281 Store 280(WidthI) 282 284: 275 Load 277(g_tTex1df4) 286: 15(int) ImageQuerySizeLod 284 285 Store 283(sizeQueryTemp) 286 287: 15(int) Load 283(sizeQueryTemp) 288: 14(int) Bitcast 287 Store 280(WidthI) 288 290: 275 Load 277(g_tTex1df4) 291: 15(int) ImageQueryLevels 290 Store 289(NumberOfLevelsU) 291 293: 275 Load 277(g_tTex1df4) 294: 15(int) ImageQuerySizeLod 293 285 Store 292(sizeQueryTemp) 294 296: 15(int) Load 292(sizeQueryTemp) Store 295(WidthU) 296 298: 275 Load 277(g_tTex1df4) 299: 15(int) ImageQueryLevels 298 300: 14(int) Bitcast 299 Store 297(NumberOfLevelsI) 300 302: 275 Load 277(g_tTex1df4) 303: 15(int) ImageQuerySizeLod 302 285 Store 301(sizeQueryTemp) 303 304: 15(int) Load 301(sizeQueryTemp) 305: 14(int) Bitcast 304 Store 280(WidthI) 305 306: 275 Load 277(g_tTex1df4) 307: 15(int) ImageQueryLevels 306 308: 14(int) Bitcast 307 Store 297(NumberOfLevelsI) 308 311: 6(float) Load 13(r00) 312: 7(fvec4) CompositeConstruct 311 311 311 311 314: 313(ptr) AccessChain 310(ps_output) 53 Store 314 312 315:8(PS_OUTPUT) Load 310(ps_output) ReturnValue 315 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out000066400000000000000000000427441506534232700264650ustar00rootroot00000000000000hlsl.intrinsics.promote.outputs.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:20 Function Parameters: 0:? Sequence 0:37 clamp ( temp float) 0:37 fpos: direct index for structure ( uniform float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:37 Constant: 0:37 9 (const uint) 0:37 Constant: 0:37 0.000000 0:37 Constant: 0:37 1.000000 0:40 Sequence 0:40 move second child to first child ( temp uint) 0:40 'sizeQueryTemp' ( temp uint) 0:40 textureSize ( temp uint) 0:40 'g_tTex1df4' ( uniform texture1D) 0:40 Constant: 0:40 0 (const int) 0:40 move second child to first child ( temp int) 0:40 'WidthI' ( temp int) 0:40 Convert uint to int ( temp int) 0:40 'sizeQueryTemp' ( temp uint) 0:41 Sequence 0:41 move second child to first child ( temp uint) 0:41 'sizeQueryTemp' ( temp uint) 0:41 textureSize ( temp uint) 0:41 'g_tTex1df4' ( uniform texture1D) 0:41 Constant: 0:41 6 (const uint) 0:41 move second child to first child ( temp int) 0:41 'WidthI' ( temp int) 0:41 Convert uint to int ( temp int) 0:41 'sizeQueryTemp' ( temp uint) 0:41 move second child to first child ( temp uint) 0:41 'NumberOfLevelsU' ( temp uint) 0:41 textureQueryLevels ( temp uint) 0:41 'g_tTex1df4' ( uniform texture1D) 0:42 Sequence 0:42 move second child to first child ( temp uint) 0:42 'sizeQueryTemp' ( temp uint) 0:42 textureSize ( temp uint) 0:42 'g_tTex1df4' ( uniform texture1D) 0:42 Constant: 0:42 6 (const uint) 0:42 move second child to first child ( temp uint) 0:42 'WidthU' ( temp uint) 0:42 'sizeQueryTemp' ( temp uint) 0:42 move second child to first child ( temp int) 0:42 'NumberOfLevelsI' ( temp int) 0:42 Convert uint to int ( temp int) 0:42 textureQueryLevels ( temp uint) 0:42 'g_tTex1df4' ( uniform texture1D) 0:43 Sequence 0:43 move second child to first child ( temp uint) 0:43 'sizeQueryTemp' ( temp uint) 0:43 textureSize ( temp uint) 0:43 'g_tTex1df4' ( uniform texture1D) 0:43 Constant: 0:43 6 (const uint) 0:43 move second child to first child ( temp int) 0:43 'WidthI' ( temp int) 0:43 Convert uint to int ( temp int) 0:43 'sizeQueryTemp' ( temp uint) 0:43 move second child to first child ( temp int) 0:43 'NumberOfLevelsI' ( temp int) 0:43 Convert uint to int ( temp int) 0:43 textureQueryLevels ( temp uint) 0:43 'g_tTex1df4' ( uniform texture1D) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 color: direct index for structure ( temp 4-component vector of float) 0:47 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 0.000000 0:47 0.000000 0:47 0.000000 0:47 0.000000 0:48 Branch: Return with expression 0:48 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:20 color: direct index for structure ( temp 4-component vector of float) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:20 Constant: 0:20 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:20 Function Parameters: 0:? Sequence 0:37 clamp ( temp float) 0:37 fpos: direct index for structure ( uniform float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:37 Constant: 0:37 9 (const uint) 0:37 Constant: 0:37 0.000000 0:37 Constant: 0:37 1.000000 0:40 Sequence 0:40 move second child to first child ( temp uint) 0:40 'sizeQueryTemp' ( temp uint) 0:40 textureSize ( temp uint) 0:40 'g_tTex1df4' ( uniform texture1D) 0:40 Constant: 0:40 0 (const int) 0:40 move second child to first child ( temp int) 0:40 'WidthI' ( temp int) 0:40 Convert uint to int ( temp int) 0:40 'sizeQueryTemp' ( temp uint) 0:41 Sequence 0:41 move second child to first child ( temp uint) 0:41 'sizeQueryTemp' ( temp uint) 0:41 textureSize ( temp uint) 0:41 'g_tTex1df4' ( uniform texture1D) 0:41 Constant: 0:41 6 (const uint) 0:41 move second child to first child ( temp int) 0:41 'WidthI' ( temp int) 0:41 Convert uint to int ( temp int) 0:41 'sizeQueryTemp' ( temp uint) 0:41 move second child to first child ( temp uint) 0:41 'NumberOfLevelsU' ( temp uint) 0:41 textureQueryLevels ( temp uint) 0:41 'g_tTex1df4' ( uniform texture1D) 0:42 Sequence 0:42 move second child to first child ( temp uint) 0:42 'sizeQueryTemp' ( temp uint) 0:42 textureSize ( temp uint) 0:42 'g_tTex1df4' ( uniform texture1D) 0:42 Constant: 0:42 6 (const uint) 0:42 move second child to first child ( temp uint) 0:42 'WidthU' ( temp uint) 0:42 'sizeQueryTemp' ( temp uint) 0:42 move second child to first child ( temp int) 0:42 'NumberOfLevelsI' ( temp int) 0:42 Convert uint to int ( temp int) 0:42 textureQueryLevels ( temp uint) 0:42 'g_tTex1df4' ( uniform texture1D) 0:43 Sequence 0:43 move second child to first child ( temp uint) 0:43 'sizeQueryTemp' ( temp uint) 0:43 textureSize ( temp uint) 0:43 'g_tTex1df4' ( uniform texture1D) 0:43 Constant: 0:43 6 (const uint) 0:43 move second child to first child ( temp int) 0:43 'WidthI' ( temp int) 0:43 Convert uint to int ( temp int) 0:43 'sizeQueryTemp' ( temp uint) 0:43 move second child to first child ( temp int) 0:43 'NumberOfLevelsI' ( temp int) 0:43 Convert uint to int ( temp int) 0:43 textureQueryLevels ( temp uint) 0:43 'g_tTex1df4' ( uniform texture1D) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 color: direct index for structure ( temp 4-component vector of float) 0:47 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 0.000000 0:47 0.000000 0:47 0.000000 0:47 0.000000 0:48 Branch: Return with expression 0:48 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:20 color: direct index for structure ( temp 4-component vector of float) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:20 Constant: 0:20 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos}) 0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader Capability Sampled1D Capability SampledBuffer Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 74 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "color" Name 10 "@main(" Name 17 "$Global" MemberName 17($Global) 0 "i" MemberName 17($Global) 1 "u" MemberName 17($Global) 2 "f" MemberName 17($Global) 3 "b" MemberName 17($Global) 4 "i2" MemberName 17($Global) 5 "u2" MemberName 17($Global) 6 "f2" MemberName 17($Global) 7 "b2" MemberName 17($Global) 8 "upos" MemberName 17($Global) 9 "fpos" Name 19 "" Name 28 "sizeQueryTemp" Name 31 "g_tTex1df4" Name 36 "WidthI" Name 39 "sizeQueryTemp" Name 45 "NumberOfLevelsU" Name 48 "sizeQueryTemp" Name 51 "WidthU" Name 53 "NumberOfLevelsI" Name 57 "sizeQueryTemp" Name 66 "ps_output" Name 74 "@entryPointOutput.color" Name 79 "g_tTexbfs" Decorate 17($Global) Block MemberDecorate 17($Global) 0 Offset 0 MemberDecorate 17($Global) 1 Offset 4 MemberDecorate 17($Global) 2 Offset 8 MemberDecorate 17($Global) 3 Offset 12 MemberDecorate 17($Global) 4 Offset 16 MemberDecorate 17($Global) 5 Offset 24 MemberDecorate 17($Global) 6 Offset 32 MemberDecorate 17($Global) 7 Offset 40 MemberDecorate 17($Global) 8 Offset 48 MemberDecorate 17($Global) 9 Offset 52 Decorate 19 Binding 0 Decorate 19 DescriptorSet 0 Decorate 31(g_tTex1df4) Binding 1 Decorate 31(g_tTex1df4) DescriptorSet 0 Decorate 74(@entryPointOutput.color) Location 0 Decorate 79(g_tTexbfs) Binding 0 Decorate 79(g_tTexbfs) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 1 13: TypeInt 32 0 14: TypeVector 12(int) 2 15: TypeVector 13(int) 2 16: TypeVector 6(float) 2 17($Global): TypeStruct 12(int) 13(int) 6(float) 13(int) 14(ivec2) 15(ivec2) 16(fvec2) 15(ivec2) 13(int) 6(float) 18: TypePointer Uniform 17($Global) 19: 18(ptr) Variable Uniform 20: 12(int) Constant 9 21: TypePointer Uniform 6(float) 24: 6(float) Constant 0 25: 6(float) Constant 1065353216 27: TypePointer Function 13(int) 29: TypeImage 6(float) 1D sampled format:Unknown 30: TypePointer UniformConstant 29 31(g_tTex1df4): 30(ptr) Variable UniformConstant 33: 12(int) Constant 0 35: TypePointer Function 12(int) 41: 13(int) Constant 6 65: TypePointer Function 8(PS_OUTPUT) 67: 7(fvec4) ConstantComposite 24 24 24 24 68: TypePointer Function 7(fvec4) 73: TypePointer Output 7(fvec4) 74(@entryPointOutput.color): 73(ptr) Variable Output 77: TypeImage 6(float) Buffer sampled format:R32f 78: TypePointer UniformConstant 77 79(g_tTexbfs): 78(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 75:8(PS_OUTPUT) FunctionCall 10(@main() 76: 7(fvec4) CompositeExtract 75 0 Store 74(@entryPointOutput.color) 76 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 28(sizeQueryTemp): 27(ptr) Variable Function 36(WidthI): 35(ptr) Variable Function 39(sizeQueryTemp): 27(ptr) Variable Function 45(NumberOfLevelsU): 27(ptr) Variable Function 48(sizeQueryTemp): 27(ptr) Variable Function 51(WidthU): 27(ptr) Variable Function 53(NumberOfLevelsI): 35(ptr) Variable Function 57(sizeQueryTemp): 27(ptr) Variable Function 66(ps_output): 65(ptr) Variable Function 22: 21(ptr) AccessChain 19 20 23: 6(float) Load 22 26: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 23 24 25 32: 29 Load 31(g_tTex1df4) 34: 13(int) ImageQuerySizeLod 32 33 Store 28(sizeQueryTemp) 34 37: 13(int) Load 28(sizeQueryTemp) 38: 12(int) Bitcast 37 Store 36(WidthI) 38 40: 29 Load 31(g_tTex1df4) 42: 13(int) ImageQuerySizeLod 40 41 Store 39(sizeQueryTemp) 42 43: 13(int) Load 39(sizeQueryTemp) 44: 12(int) Bitcast 43 Store 36(WidthI) 44 46: 29 Load 31(g_tTex1df4) 47: 13(int) ImageQueryLevels 46 Store 45(NumberOfLevelsU) 47 49: 29 Load 31(g_tTex1df4) 50: 13(int) ImageQuerySizeLod 49 41 Store 48(sizeQueryTemp) 50 52: 13(int) Load 48(sizeQueryTemp) Store 51(WidthU) 52 54: 29 Load 31(g_tTex1df4) 55: 13(int) ImageQueryLevels 54 56: 12(int) Bitcast 55 Store 53(NumberOfLevelsI) 56 58: 29 Load 31(g_tTex1df4) 59: 13(int) ImageQuerySizeLod 58 41 Store 57(sizeQueryTemp) 59 60: 13(int) Load 57(sizeQueryTemp) 61: 12(int) Bitcast 60 Store 36(WidthI) 61 62: 29 Load 31(g_tTex1df4) 63: 13(int) ImageQueryLevels 62 64: 12(int) Bitcast 63 Store 53(NumberOfLevelsI) 64 69: 68(ptr) AccessChain 66(ps_output) 33 Store 69 67 70:8(PS_OUTPUT) Load 66(ps_output) ReturnValue 70 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.intrinsics.vert.out000066400000000000000000006067101506534232700233170ustar00rootroot00000000000000hlsl.intrinsics.vert Shader version: 500 0:? Sequence 0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; ( temp float) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:2 'inF1' ( in float) 0:2 'inF2' ( in float) 0:2 'inU0' ( in uint) 0:2 'inU1' ( in uint) 0:? Sequence 0:3 all ( temp bool) 0:3 Convert float to bool ( temp bool) 0:3 'inF0' ( in float) 0:4 Absolute value ( temp float) 0:4 'inF0' ( in float) 0:5 arc cosine ( temp float) 0:5 'inF0' ( in float) 0:6 any ( temp bool) 0:6 Convert float to bool ( temp bool) 0:6 'inF0' ( in float) 0:7 arc sine ( temp float) 0:7 'inF0' ( in float) 0:8 floatBitsToInt ( temp int) 0:8 'inF0' ( in float) 0:9 floatBitsToUint ( temp uint) 0:9 'inF0' ( in float) 0:10 intBitsToFloat ( temp float) 0:10 'inU0' ( in uint) 0:12 arc tangent ( temp float) 0:12 'inF0' ( in float) 0:13 arc tangent ( temp float) 0:13 'inF0' ( in float) 0:13 'inF1' ( in float) 0:14 Ceiling ( temp float) 0:14 'inF0' ( in float) 0:15 clamp ( temp float) 0:15 'inF0' ( in float) 0:15 'inF1' ( in float) 0:15 'inF2' ( in float) 0:16 cosine ( temp float) 0:16 'inF0' ( in float) 0:17 hyp. cosine ( temp float) 0:17 'inF0' ( in float) 0:18 bitCount ( temp int) 0:18 Constant: 0:18 7 (const int) 0:19 degrees ( temp float) 0:19 'inF0' ( in float) 0:23 exp ( temp float) 0:23 'inF0' ( in float) 0:24 exp2 ( temp float) 0:24 'inF0' ( in float) 0:25 findMSB ( temp int) 0:25 Constant: 0:25 7 (const int) 0:26 findLSB ( temp int) 0:26 Constant: 0:26 7 (const int) 0:27 Floor ( temp float) 0:27 'inF0' ( in float) 0:29 mod ( temp float) 0:29 'inF0' ( in float) 0:29 'inF1' ( in float) 0:30 Fraction ( temp float) 0:30 'inF0' ( in float) 0:31 isinf ( temp bool) 0:31 'inF0' ( in float) 0:32 isnan ( temp bool) 0:32 'inF0' ( in float) 0:33 ldexp ( temp float) 0:33 'inF0' ( in float) 0:33 'inF1' ( in float) 0:34 mix ( temp float) 0:34 'inF0' ( in float) 0:34 'inF1' ( in float) 0:34 'inF2' ( in float) 0:35 log ( temp float) 0:35 'inF0' ( in float) 0:36 component-wise multiply ( temp float) 0:36 log2 ( temp float) 0:36 'inF0' ( in float) 0:36 Constant: 0:36 0.301030 0:37 log2 ( temp float) 0:37 'inF0' ( in float) 0:38 max ( temp float) 0:38 'inF0' ( in float) 0:38 'inF1' ( in float) 0:39 min ( temp float) 0:39 'inF0' ( in float) 0:39 'inF1' ( in float) 0:41 pow ( temp float) 0:41 'inF0' ( in float) 0:41 'inF1' ( in float) 0:42 radians ( temp float) 0:42 'inF0' ( in float) 0:43 bitFieldReverse ( temp int) 0:43 Constant: 0:43 2 (const int) 0:44 roundEven ( temp float) 0:44 'inF0' ( in float) 0:45 inverse sqrt ( temp float) 0:45 'inF0' ( in float) 0:46 clamp ( temp float) 0:46 'inF0' ( in float) 0:46 Constant: 0:46 0.000000 0:46 Constant: 0:46 1.000000 0:47 Sign ( temp float) 0:47 'inF0' ( in float) 0:48 sine ( temp float) 0:48 'inF0' ( in float) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'inF1' ( in float) 0:49 sine ( temp float) 0:49 'inF0' ( in float) 0:49 move second child to first child ( temp float) 0:49 'inF2' ( in float) 0:49 cosine ( temp float) 0:49 'inF0' ( in float) 0:50 hyp. sine ( temp float) 0:50 'inF0' ( in float) 0:51 smoothstep ( temp float) 0:51 'inF0' ( in float) 0:51 'inF1' ( in float) 0:51 'inF2' ( in float) 0:52 sqrt ( temp float) 0:52 'inF0' ( in float) 0:53 step ( temp float) 0:53 'inF0' ( in float) 0:53 'inF1' ( in float) 0:54 tangent ( temp float) 0:54 'inF0' ( in float) 0:55 hyp. tangent ( temp float) 0:55 'inF0' ( in float) 0:57 trunc ( temp float) 0:57 'inF0' ( in float) 0:59 Branch: Return with expression 0:59 Constant: 0:59 0.000000 0:63 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) 0:63 Function Parameters: 0:63 'inF0' ( in 1-component vector of float) 0:63 'inF1' ( in 1-component vector of float) 0:63 'inF2' ( in 1-component vector of float) 0:? Sequence 0:65 Branch: Return with expression 0:65 Constant: 0:65 0.000000 0:69 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) 0:69 Function Parameters: 0:69 'inF0' ( in 2-component vector of float) 0:69 'inF1' ( in 2-component vector of float) 0:69 'inF2' ( in 2-component vector of float) 0:69 'inU0' ( in 2-component vector of uint) 0:69 'inU1' ( in 2-component vector of uint) 0:? Sequence 0:70 all ( temp bool) 0:70 Convert float to bool ( temp 2-component vector of bool) 0:70 'inF0' ( in 2-component vector of float) 0:71 Absolute value ( temp 2-component vector of float) 0:71 'inF0' ( in 2-component vector of float) 0:72 arc cosine ( temp 2-component vector of float) 0:72 'inF0' ( in 2-component vector of float) 0:73 any ( temp bool) 0:73 Convert float to bool ( temp 2-component vector of bool) 0:73 'inF0' ( in 2-component vector of float) 0:74 arc sine ( temp 2-component vector of float) 0:74 'inF0' ( in 2-component vector of float) 0:75 floatBitsToInt ( temp 2-component vector of int) 0:75 'inF0' ( in 2-component vector of float) 0:76 floatBitsToUint ( temp 2-component vector of uint) 0:76 'inF0' ( in 2-component vector of float) 0:77 intBitsToFloat ( temp 2-component vector of float) 0:77 'inU0' ( in 2-component vector of uint) 0:79 arc tangent ( temp 2-component vector of float) 0:79 'inF0' ( in 2-component vector of float) 0:80 arc tangent ( temp 2-component vector of float) 0:80 'inF0' ( in 2-component vector of float) 0:80 'inF1' ( in 2-component vector of float) 0:81 Ceiling ( temp 2-component vector of float) 0:81 'inF0' ( in 2-component vector of float) 0:82 clamp ( temp 2-component vector of float) 0:82 'inF0' ( in 2-component vector of float) 0:82 'inF1' ( in 2-component vector of float) 0:82 'inF2' ( in 2-component vector of float) 0:83 cosine ( temp 2-component vector of float) 0:83 'inF0' ( in 2-component vector of float) 0:84 hyp. cosine ( temp 2-component vector of float) 0:84 'inF0' ( in 2-component vector of float) 0:85 bitCount ( temp 2-component vector of int) 0:85 Constant: 0:85 7 (const int) 0:85 3 (const int) 0:86 degrees ( temp 2-component vector of float) 0:86 'inF0' ( in 2-component vector of float) 0:87 distance ( temp float) 0:87 'inF0' ( in 2-component vector of float) 0:87 'inF1' ( in 2-component vector of float) 0:88 dot-product ( temp float) 0:88 'inF0' ( in 2-component vector of float) 0:88 'inF1' ( in 2-component vector of float) 0:92 exp ( temp 2-component vector of float) 0:92 'inF0' ( in 2-component vector of float) 0:93 exp2 ( temp 2-component vector of float) 0:93 'inF0' ( in 2-component vector of float) 0:94 face-forward ( temp 2-component vector of float) 0:94 'inF0' ( in 2-component vector of float) 0:94 'inF1' ( in 2-component vector of float) 0:94 'inF2' ( in 2-component vector of float) 0:95 findMSB ( temp int) 0:95 Constant: 0:95 7 (const int) 0:96 findLSB ( temp int) 0:96 Constant: 0:96 7 (const int) 0:97 Floor ( temp 2-component vector of float) 0:97 'inF0' ( in 2-component vector of float) 0:99 mod ( temp 2-component vector of float) 0:99 'inF0' ( in 2-component vector of float) 0:99 'inF1' ( in 2-component vector of float) 0:100 Fraction ( temp 2-component vector of float) 0:100 'inF0' ( in 2-component vector of float) 0:101 isinf ( temp 2-component vector of bool) 0:101 'inF0' ( in 2-component vector of float) 0:102 isnan ( temp 2-component vector of bool) 0:102 'inF0' ( in 2-component vector of float) 0:103 ldexp ( temp 2-component vector of float) 0:103 'inF0' ( in 2-component vector of float) 0:103 'inF1' ( in 2-component vector of float) 0:104 mix ( temp 2-component vector of float) 0:104 'inF0' ( in 2-component vector of float) 0:104 'inF1' ( in 2-component vector of float) 0:104 'inF2' ( in 2-component vector of float) 0:105 length ( temp float) 0:105 'inF0' ( in 2-component vector of float) 0:106 log ( temp 2-component vector of float) 0:106 'inF0' ( in 2-component vector of float) 0:107 vector-scale ( temp 2-component vector of float) 0:107 log2 ( temp 2-component vector of float) 0:107 'inF0' ( in 2-component vector of float) 0:107 Constant: 0:107 0.301030 0:108 log2 ( temp 2-component vector of float) 0:108 'inF0' ( in 2-component vector of float) 0:109 max ( temp 2-component vector of float) 0:109 'inF0' ( in 2-component vector of float) 0:109 'inF1' ( in 2-component vector of float) 0:110 min ( temp 2-component vector of float) 0:110 'inF0' ( in 2-component vector of float) 0:110 'inF1' ( in 2-component vector of float) 0:112 normalize ( temp 2-component vector of float) 0:112 'inF0' ( in 2-component vector of float) 0:113 pow ( temp 2-component vector of float) 0:113 'inF0' ( in 2-component vector of float) 0:113 'inF1' ( in 2-component vector of float) 0:114 radians ( temp 2-component vector of float) 0:114 'inF0' ( in 2-component vector of float) 0:115 reflect ( temp 2-component vector of float) 0:115 'inF0' ( in 2-component vector of float) 0:115 'inF1' ( in 2-component vector of float) 0:116 refract ( temp 2-component vector of float) 0:116 'inF0' ( in 2-component vector of float) 0:116 'inF1' ( in 2-component vector of float) 0:116 Constant: 0:116 2.000000 0:117 bitFieldReverse ( temp 2-component vector of int) 0:117 Constant: 0:117 1 (const int) 0:117 2 (const int) 0:118 roundEven ( temp 2-component vector of float) 0:118 'inF0' ( in 2-component vector of float) 0:119 inverse sqrt ( temp 2-component vector of float) 0:119 'inF0' ( in 2-component vector of float) 0:120 clamp ( temp 2-component vector of float) 0:120 'inF0' ( in 2-component vector of float) 0:120 Constant: 0:120 0.000000 0:120 Constant: 0:120 1.000000 0:121 Sign ( temp 2-component vector of float) 0:121 'inF0' ( in 2-component vector of float) 0:122 sine ( temp 2-component vector of float) 0:122 'inF0' ( in 2-component vector of float) 0:123 Sequence 0:123 move second child to first child ( temp 2-component vector of float) 0:123 'inF1' ( in 2-component vector of float) 0:123 sine ( temp 2-component vector of float) 0:123 'inF0' ( in 2-component vector of float) 0:123 move second child to first child ( temp 2-component vector of float) 0:123 'inF2' ( in 2-component vector of float) 0:123 cosine ( temp 2-component vector of float) 0:123 'inF0' ( in 2-component vector of float) 0:124 hyp. sine ( temp 2-component vector of float) 0:124 'inF0' ( in 2-component vector of float) 0:125 smoothstep ( temp 2-component vector of float) 0:125 'inF0' ( in 2-component vector of float) 0:125 'inF1' ( in 2-component vector of float) 0:125 'inF2' ( in 2-component vector of float) 0:126 sqrt ( temp 2-component vector of float) 0:126 'inF0' ( in 2-component vector of float) 0:127 step ( temp 2-component vector of float) 0:127 'inF0' ( in 2-component vector of float) 0:127 'inF1' ( in 2-component vector of float) 0:128 tangent ( temp 2-component vector of float) 0:128 'inF0' ( in 2-component vector of float) 0:129 hyp. tangent ( temp 2-component vector of float) 0:129 'inF0' ( in 2-component vector of float) 0:131 trunc ( temp 2-component vector of float) 0:131 'inF0' ( in 2-component vector of float) 0:134 Branch: Return with expression 0:134 Constant: 0:134 1.000000 0:134 2.000000 0:138 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) 0:138 Function Parameters: 0:138 'inF0' ( in 3-component vector of float) 0:138 'inF1' ( in 3-component vector of float) 0:138 'inF2' ( in 3-component vector of float) 0:138 'inU0' ( in 3-component vector of uint) 0:138 'inU1' ( in 3-component vector of uint) 0:? Sequence 0:139 all ( temp bool) 0:139 Convert float to bool ( temp 3-component vector of bool) 0:139 'inF0' ( in 3-component vector of float) 0:140 Absolute value ( temp 3-component vector of float) 0:140 'inF0' ( in 3-component vector of float) 0:141 arc cosine ( temp 3-component vector of float) 0:141 'inF0' ( in 3-component vector of float) 0:142 any ( temp bool) 0:142 Convert float to bool ( temp 3-component vector of bool) 0:142 'inF0' ( in 3-component vector of float) 0:143 arc sine ( temp 3-component vector of float) 0:143 'inF0' ( in 3-component vector of float) 0:144 floatBitsToInt ( temp 3-component vector of int) 0:144 'inF0' ( in 3-component vector of float) 0:145 floatBitsToUint ( temp 3-component vector of uint) 0:145 'inF0' ( in 3-component vector of float) 0:146 intBitsToFloat ( temp 3-component vector of float) 0:146 'inU0' ( in 3-component vector of uint) 0:148 arc tangent ( temp 3-component vector of float) 0:148 'inF0' ( in 3-component vector of float) 0:149 arc tangent ( temp 3-component vector of float) 0:149 'inF0' ( in 3-component vector of float) 0:149 'inF1' ( in 3-component vector of float) 0:150 Ceiling ( temp 3-component vector of float) 0:150 'inF0' ( in 3-component vector of float) 0:151 clamp ( temp 3-component vector of float) 0:151 'inF0' ( in 3-component vector of float) 0:151 'inF1' ( in 3-component vector of float) 0:151 'inF2' ( in 3-component vector of float) 0:152 cosine ( temp 3-component vector of float) 0:152 'inF0' ( in 3-component vector of float) 0:153 hyp. cosine ( temp 3-component vector of float) 0:153 'inF0' ( in 3-component vector of float) 0:154 bitCount ( temp 3-component vector of int) 0:154 Constant: 0:154 7 (const int) 0:154 3 (const int) 0:154 5 (const int) 0:155 cross-product ( temp 3-component vector of float) 0:155 'inF0' ( in 3-component vector of float) 0:155 'inF1' ( in 3-component vector of float) 0:156 degrees ( temp 3-component vector of float) 0:156 'inF0' ( in 3-component vector of float) 0:157 distance ( temp float) 0:157 'inF0' ( in 3-component vector of float) 0:157 'inF1' ( in 3-component vector of float) 0:158 dot-product ( temp float) 0:158 'inF0' ( in 3-component vector of float) 0:158 'inF1' ( in 3-component vector of float) 0:162 exp ( temp 3-component vector of float) 0:162 'inF0' ( in 3-component vector of float) 0:163 exp2 ( temp 3-component vector of float) 0:163 'inF0' ( in 3-component vector of float) 0:164 face-forward ( temp 3-component vector of float) 0:164 'inF0' ( in 3-component vector of float) 0:164 'inF1' ( in 3-component vector of float) 0:164 'inF2' ( in 3-component vector of float) 0:165 findMSB ( temp int) 0:165 Constant: 0:165 7 (const int) 0:166 findLSB ( temp int) 0:166 Constant: 0:166 7 (const int) 0:167 Floor ( temp 3-component vector of float) 0:167 'inF0' ( in 3-component vector of float) 0:169 mod ( temp 3-component vector of float) 0:169 'inF0' ( in 3-component vector of float) 0:169 'inF1' ( in 3-component vector of float) 0:170 Fraction ( temp 3-component vector of float) 0:170 'inF0' ( in 3-component vector of float) 0:171 isinf ( temp 3-component vector of bool) 0:171 'inF0' ( in 3-component vector of float) 0:172 isnan ( temp 3-component vector of bool) 0:172 'inF0' ( in 3-component vector of float) 0:173 ldexp ( temp 3-component vector of float) 0:173 'inF0' ( in 3-component vector of float) 0:173 'inF1' ( in 3-component vector of float) 0:174 mix ( temp 3-component vector of float) 0:174 'inF0' ( in 3-component vector of float) 0:174 'inF1' ( in 3-component vector of float) 0:174 'inF2' ( in 3-component vector of float) 0:175 length ( temp float) 0:175 'inF0' ( in 3-component vector of float) 0:176 log ( temp 3-component vector of float) 0:176 'inF0' ( in 3-component vector of float) 0:177 vector-scale ( temp 3-component vector of float) 0:177 log2 ( temp 3-component vector of float) 0:177 'inF0' ( in 3-component vector of float) 0:177 Constant: 0:177 0.301030 0:178 log2 ( temp 3-component vector of float) 0:178 'inF0' ( in 3-component vector of float) 0:179 max ( temp 3-component vector of float) 0:179 'inF0' ( in 3-component vector of float) 0:179 'inF1' ( in 3-component vector of float) 0:180 min ( temp 3-component vector of float) 0:180 'inF0' ( in 3-component vector of float) 0:180 'inF1' ( in 3-component vector of float) 0:182 normalize ( temp 3-component vector of float) 0:182 'inF0' ( in 3-component vector of float) 0:183 pow ( temp 3-component vector of float) 0:183 'inF0' ( in 3-component vector of float) 0:183 'inF1' ( in 3-component vector of float) 0:184 radians ( temp 3-component vector of float) 0:184 'inF0' ( in 3-component vector of float) 0:185 reflect ( temp 3-component vector of float) 0:185 'inF0' ( in 3-component vector of float) 0:185 'inF1' ( in 3-component vector of float) 0:186 refract ( temp 3-component vector of float) 0:186 'inF0' ( in 3-component vector of float) 0:186 'inF1' ( in 3-component vector of float) 0:186 Constant: 0:186 2.000000 0:187 bitFieldReverse ( temp 3-component vector of int) 0:187 Constant: 0:187 1 (const int) 0:187 2 (const int) 0:187 3 (const int) 0:188 roundEven ( temp 3-component vector of float) 0:188 'inF0' ( in 3-component vector of float) 0:189 inverse sqrt ( temp 3-component vector of float) 0:189 'inF0' ( in 3-component vector of float) 0:190 clamp ( temp 3-component vector of float) 0:190 'inF0' ( in 3-component vector of float) 0:190 Constant: 0:190 0.000000 0:190 Constant: 0:190 1.000000 0:191 Sign ( temp 3-component vector of float) 0:191 'inF0' ( in 3-component vector of float) 0:192 sine ( temp 3-component vector of float) 0:192 'inF0' ( in 3-component vector of float) 0:193 Sequence 0:193 move second child to first child ( temp 3-component vector of float) 0:193 'inF1' ( in 3-component vector of float) 0:193 sine ( temp 3-component vector of float) 0:193 'inF0' ( in 3-component vector of float) 0:193 move second child to first child ( temp 3-component vector of float) 0:193 'inF2' ( in 3-component vector of float) 0:193 cosine ( temp 3-component vector of float) 0:193 'inF0' ( in 3-component vector of float) 0:194 hyp. sine ( temp 3-component vector of float) 0:194 'inF0' ( in 3-component vector of float) 0:195 smoothstep ( temp 3-component vector of float) 0:195 'inF0' ( in 3-component vector of float) 0:195 'inF1' ( in 3-component vector of float) 0:195 'inF2' ( in 3-component vector of float) 0:196 sqrt ( temp 3-component vector of float) 0:196 'inF0' ( in 3-component vector of float) 0:197 step ( temp 3-component vector of float) 0:197 'inF0' ( in 3-component vector of float) 0:197 'inF1' ( in 3-component vector of float) 0:198 tangent ( temp 3-component vector of float) 0:198 'inF0' ( in 3-component vector of float) 0:199 hyp. tangent ( temp 3-component vector of float) 0:199 'inF0' ( in 3-component vector of float) 0:201 trunc ( temp 3-component vector of float) 0:201 'inF0' ( in 3-component vector of float) 0:204 Branch: Return with expression 0:204 Constant: 0:204 1.000000 0:204 2.000000 0:204 3.000000 0:208 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:208 Function Parameters: 0:208 'inF0' ( in 4-component vector of float) 0:208 'inF1' ( in 4-component vector of float) 0:208 'inF2' ( in 4-component vector of float) 0:208 'inU0' ( in 4-component vector of uint) 0:208 'inU1' ( in 4-component vector of uint) 0:? Sequence 0:209 all ( temp bool) 0:209 Convert float to bool ( temp 4-component vector of bool) 0:209 'inF0' ( in 4-component vector of float) 0:210 Absolute value ( temp 4-component vector of float) 0:210 'inF0' ( in 4-component vector of float) 0:211 arc cosine ( temp 4-component vector of float) 0:211 'inF0' ( in 4-component vector of float) 0:212 any ( temp bool) 0:212 Convert float to bool ( temp 4-component vector of bool) 0:212 'inF0' ( in 4-component vector of float) 0:213 arc sine ( temp 4-component vector of float) 0:213 'inF0' ( in 4-component vector of float) 0:214 floatBitsToInt ( temp 4-component vector of int) 0:214 'inF0' ( in 4-component vector of float) 0:215 floatBitsToUint ( temp 4-component vector of uint) 0:215 'inF0' ( in 4-component vector of float) 0:216 intBitsToFloat ( temp 4-component vector of float) 0:216 'inU0' ( in 4-component vector of uint) 0:218 arc tangent ( temp 4-component vector of float) 0:218 'inF0' ( in 4-component vector of float) 0:219 arc tangent ( temp 4-component vector of float) 0:219 'inF0' ( in 4-component vector of float) 0:219 'inF1' ( in 4-component vector of float) 0:220 Ceiling ( temp 4-component vector of float) 0:220 'inF0' ( in 4-component vector of float) 0:221 clamp ( temp 4-component vector of float) 0:221 'inF0' ( in 4-component vector of float) 0:221 'inF1' ( in 4-component vector of float) 0:221 'inF2' ( in 4-component vector of float) 0:222 cosine ( temp 4-component vector of float) 0:222 'inF0' ( in 4-component vector of float) 0:223 hyp. cosine ( temp 4-component vector of float) 0:223 'inF0' ( in 4-component vector of float) 0:224 bitCount ( temp 4-component vector of int) 0:224 Constant: 0:224 7 (const int) 0:224 3 (const int) 0:224 5 (const int) 0:224 2 (const int) 0:225 degrees ( temp 4-component vector of float) 0:225 'inF0' ( in 4-component vector of float) 0:226 distance ( temp float) 0:226 'inF0' ( in 4-component vector of float) 0:226 'inF1' ( in 4-component vector of float) 0:227 dot-product ( temp float) 0:227 'inF0' ( in 4-component vector of float) 0:227 'inF1' ( in 4-component vector of float) 0:228 Construct vec4 ( temp 4-component vector of float) 0:228 Constant: 0:228 1.000000 0:228 component-wise multiply ( temp float) 0:228 direct index ( temp float) 0:228 'inF0' ( in 4-component vector of float) 0:228 Constant: 0:228 1 (const int) 0:228 direct index ( temp float) 0:228 'inF1' ( in 4-component vector of float) 0:228 Constant: 0:228 1 (const int) 0:228 direct index ( temp float) 0:228 'inF0' ( in 4-component vector of float) 0:228 Constant: 0:228 2 (const int) 0:228 direct index ( temp float) 0:228 'inF1' ( in 4-component vector of float) 0:228 Constant: 0:228 3 (const int) 0:232 exp ( temp 4-component vector of float) 0:232 'inF0' ( in 4-component vector of float) 0:233 exp2 ( temp 4-component vector of float) 0:233 'inF0' ( in 4-component vector of float) 0:234 face-forward ( temp 4-component vector of float) 0:234 'inF0' ( in 4-component vector of float) 0:234 'inF1' ( in 4-component vector of float) 0:234 'inF2' ( in 4-component vector of float) 0:235 findMSB ( temp int) 0:235 Constant: 0:235 7 (const int) 0:236 findLSB ( temp int) 0:236 Constant: 0:236 7 (const int) 0:237 Floor ( temp 4-component vector of float) 0:237 'inF0' ( in 4-component vector of float) 0:239 mod ( temp 4-component vector of float) 0:239 'inF0' ( in 4-component vector of float) 0:239 'inF1' ( in 4-component vector of float) 0:240 Fraction ( temp 4-component vector of float) 0:240 'inF0' ( in 4-component vector of float) 0:241 isinf ( temp 4-component vector of bool) 0:241 'inF0' ( in 4-component vector of float) 0:242 isnan ( temp 4-component vector of bool) 0:242 'inF0' ( in 4-component vector of float) 0:243 ldexp ( temp 4-component vector of float) 0:243 'inF0' ( in 4-component vector of float) 0:243 'inF1' ( in 4-component vector of float) 0:244 mix ( temp 4-component vector of float) 0:244 'inF0' ( in 4-component vector of float) 0:244 'inF1' ( in 4-component vector of float) 0:244 'inF2' ( in 4-component vector of float) 0:245 length ( temp float) 0:245 'inF0' ( in 4-component vector of float) 0:246 log ( temp 4-component vector of float) 0:246 'inF0' ( in 4-component vector of float) 0:247 vector-scale ( temp 4-component vector of float) 0:247 log2 ( temp 4-component vector of float) 0:247 'inF0' ( in 4-component vector of float) 0:247 Constant: 0:247 0.301030 0:248 log2 ( temp 4-component vector of float) 0:248 'inF0' ( in 4-component vector of float) 0:249 max ( temp 4-component vector of float) 0:249 'inF0' ( in 4-component vector of float) 0:249 'inF1' ( in 4-component vector of float) 0:250 min ( temp 4-component vector of float) 0:250 'inF0' ( in 4-component vector of float) 0:250 'inF1' ( in 4-component vector of float) 0:252 normalize ( temp 4-component vector of float) 0:252 'inF0' ( in 4-component vector of float) 0:253 pow ( temp 4-component vector of float) 0:253 'inF0' ( in 4-component vector of float) 0:253 'inF1' ( in 4-component vector of float) 0:254 radians ( temp 4-component vector of float) 0:254 'inF0' ( in 4-component vector of float) 0:255 reflect ( temp 4-component vector of float) 0:255 'inF0' ( in 4-component vector of float) 0:255 'inF1' ( in 4-component vector of float) 0:256 refract ( temp 4-component vector of float) 0:256 'inF0' ( in 4-component vector of float) 0:256 'inF1' ( in 4-component vector of float) 0:256 Constant: 0:256 2.000000 0:257 bitFieldReverse ( temp 4-component vector of int) 0:257 Constant: 0:257 1 (const int) 0:257 2 (const int) 0:257 3 (const int) 0:257 4 (const int) 0:258 roundEven ( temp 4-component vector of float) 0:258 'inF0' ( in 4-component vector of float) 0:259 inverse sqrt ( temp 4-component vector of float) 0:259 'inF0' ( in 4-component vector of float) 0:260 clamp ( temp 4-component vector of float) 0:260 'inF0' ( in 4-component vector of float) 0:260 Constant: 0:260 0.000000 0:260 Constant: 0:260 1.000000 0:261 Sign ( temp 4-component vector of float) 0:261 'inF0' ( in 4-component vector of float) 0:262 sine ( temp 4-component vector of float) 0:262 'inF0' ( in 4-component vector of float) 0:263 Sequence 0:263 move second child to first child ( temp 4-component vector of float) 0:263 'inF1' ( in 4-component vector of float) 0:263 sine ( temp 4-component vector of float) 0:263 'inF0' ( in 4-component vector of float) 0:263 move second child to first child ( temp 4-component vector of float) 0:263 'inF2' ( in 4-component vector of float) 0:263 cosine ( temp 4-component vector of float) 0:263 'inF0' ( in 4-component vector of float) 0:264 hyp. sine ( temp 4-component vector of float) 0:264 'inF0' ( in 4-component vector of float) 0:265 smoothstep ( temp 4-component vector of float) 0:265 'inF0' ( in 4-component vector of float) 0:265 'inF1' ( in 4-component vector of float) 0:265 'inF2' ( in 4-component vector of float) 0:266 sqrt ( temp 4-component vector of float) 0:266 'inF0' ( in 4-component vector of float) 0:267 step ( temp 4-component vector of float) 0:267 'inF0' ( in 4-component vector of float) 0:267 'inF1' ( in 4-component vector of float) 0:268 tangent ( temp 4-component vector of float) 0:268 'inF0' ( in 4-component vector of float) 0:269 hyp. tangent ( temp 4-component vector of float) 0:269 'inF0' ( in 4-component vector of float) 0:271 trunc ( temp 4-component vector of float) 0:271 'inF0' ( in 4-component vector of float) 0:274 Branch: Return with expression 0:274 Constant: 0:274 1.000000 0:274 2.000000 0:274 3.000000 0:274 4.000000 0:331 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) 0:331 Function Parameters: 0:331 'inF0' ( in 2X2 matrix of float) 0:331 'inF1' ( in 2X2 matrix of float) 0:331 'inF2' ( in 2X2 matrix of float) 0:? Sequence 0:333 all ( temp bool) 0:333 Convert float to bool ( temp 2X2 matrix of bool) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 Absolute value ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 arc cosine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 any ( temp bool) 0:333 Convert float to bool ( temp 2X2 matrix of bool) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 arc sine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 arc tangent ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 arc tangent ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 Ceiling ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 clamp ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 'inF2' ( in 2X2 matrix of float) 0:333 cosine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 hyp. cosine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 degrees ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 determinant ( temp float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 exp ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 exp2 ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 findMSB ( temp int) 0:333 Constant: 0:333 7 (const int) 0:333 findLSB ( temp int) 0:333 Constant: 0:333 7 (const int) 0:333 Floor ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 mod ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 Fraction ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 ldexp ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 mix ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 'inF2' ( in 2X2 matrix of float) 0:333 log ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 matrix-scale ( temp 2X2 matrix of float) 0:333 log2 ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 Constant: 0:333 0.301030 0:333 log2 ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 max ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 min ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 pow ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 radians ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 roundEven ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 inverse sqrt ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 clamp ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 Constant: 0:333 0.000000 0:333 Constant: 0:333 1.000000 0:333 Sign ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 sine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 Sequence 0:333 move second child to first child ( temp 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 sine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 move second child to first child ( temp 2X2 matrix of float) 0:333 'inF2' ( in 2X2 matrix of float) 0:333 cosine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 hyp. sine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 smoothstep ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 'inF2' ( in 2X2 matrix of float) 0:333 sqrt ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 step ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 tangent ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 hyp. tangent ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 transpose ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 trunc ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:336 Branch: Return with expression 0:336 Constant: 0:336 2.000000 0:336 2.000000 0:336 2.000000 0:336 2.000000 0:340 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) 0:340 Function Parameters: 0:340 'inF0' ( in 3X3 matrix of float) 0:340 'inF1' ( in 3X3 matrix of float) 0:340 'inF2' ( in 3X3 matrix of float) 0:? Sequence 0:342 all ( temp bool) 0:342 Convert float to bool ( temp 3X3 matrix of bool) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 Absolute value ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 arc cosine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 any ( temp bool) 0:342 Convert float to bool ( temp 3X3 matrix of bool) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 arc sine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 arc tangent ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 arc tangent ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 Ceiling ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 clamp ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 'inF2' ( in 3X3 matrix of float) 0:342 cosine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 hyp. cosine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 degrees ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 determinant ( temp float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 exp ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 exp2 ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 findMSB ( temp int) 0:342 Constant: 0:342 7 (const int) 0:342 findLSB ( temp int) 0:342 Constant: 0:342 7 (const int) 0:342 Floor ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 mod ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 Fraction ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 ldexp ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 mix ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 'inF2' ( in 3X3 matrix of float) 0:342 log ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 matrix-scale ( temp 3X3 matrix of float) 0:342 log2 ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 Constant: 0:342 0.301030 0:342 log2 ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 max ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 min ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 pow ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 radians ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 roundEven ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 inverse sqrt ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 clamp ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 Constant: 0:342 0.000000 0:342 Constant: 0:342 1.000000 0:342 Sign ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 sine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 Sequence 0:342 move second child to first child ( temp 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 sine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 move second child to first child ( temp 3X3 matrix of float) 0:342 'inF2' ( in 3X3 matrix of float) 0:342 cosine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 hyp. sine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 smoothstep ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 'inF2' ( in 3X3 matrix of float) 0:342 sqrt ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 step ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 tangent ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 hyp. tangent ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 transpose ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 trunc ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:345 Branch: Return with expression 0:345 Constant: 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:349 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) 0:349 Function Parameters: 0:349 'inF0' ( in 4X4 matrix of float) 0:349 'inF1' ( in 4X4 matrix of float) 0:349 'inF2' ( in 4X4 matrix of float) 0:? Sequence 0:351 all ( temp bool) 0:351 Convert float to bool ( temp 4X4 matrix of bool) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 Absolute value ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 arc cosine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 any ( temp bool) 0:351 Convert float to bool ( temp 4X4 matrix of bool) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 arc sine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 arc tangent ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 arc tangent ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 Ceiling ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 clamp ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 'inF2' ( in 4X4 matrix of float) 0:351 cosine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 hyp. cosine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 degrees ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 determinant ( temp float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 exp ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 exp2 ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 findMSB ( temp int) 0:351 Constant: 0:351 7 (const int) 0:351 findLSB ( temp int) 0:351 Constant: 0:351 7 (const int) 0:351 Floor ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 mod ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 Fraction ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 ldexp ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 mix ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 'inF2' ( in 4X4 matrix of float) 0:351 log ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 matrix-scale ( temp 4X4 matrix of float) 0:351 log2 ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 Constant: 0:351 0.301030 0:351 log2 ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 max ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 min ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 pow ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 radians ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 roundEven ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 inverse sqrt ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 clamp ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 Constant: 0:351 0.000000 0:351 Constant: 0:351 1.000000 0:351 Sign ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 sine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 Sequence 0:351 move second child to first child ( temp 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 sine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 move second child to first child ( temp 4X4 matrix of float) 0:351 'inF2' ( in 4X4 matrix of float) 0:351 cosine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 hyp. sine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 smoothstep ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 'inF2' ( in 4X4 matrix of float) 0:351 sqrt ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 step ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 tangent ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 hyp. tangent ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 transpose ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 trunc ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:354 Branch: Return with expression 0:354 Constant: 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:372 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void) 0:372 Function Parameters: 0:372 'inF0' ( in float) 0:372 'inF1' ( in float) 0:372 'inFV0' ( in 2-component vector of float) 0:372 'inFV1' ( in 2-component vector of float) 0:372 'inFM0' ( in 2X2 matrix of float) 0:372 'inFM1' ( in 2X2 matrix of float) 0:? Sequence 0:373 Sequence 0:373 move second child to first child ( temp float) 0:373 'r0' ( temp float) 0:373 component-wise multiply ( temp float) 0:373 'inF1' ( in float) 0:373 'inF0' ( in float) 0:373 Sequence 0:373 move second child to first child ( temp 2-component vector of float) 0:373 'r1' ( temp 2-component vector of float) 0:373 vector-scale ( temp 2-component vector of float) 0:373 'inF0' ( in float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 Sequence 0:373 move second child to first child ( temp 2-component vector of float) 0:373 'r2' ( temp 2-component vector of float) 0:373 vector-scale ( temp 2-component vector of float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 'inF0' ( in float) 0:373 Sequence 0:373 move second child to first child ( temp float) 0:373 'r3' ( temp float) 0:373 dot-product ( temp float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 'inFV1' ( in 2-component vector of float) 0:373 Sequence 0:373 move second child to first child ( temp 2-component vector of float) 0:373 'r4' ( temp 2-component vector of float) 0:373 vector-times-matrix ( temp 2-component vector of float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:373 Sequence 0:373 move second child to first child ( temp 2-component vector of float) 0:373 'r5' ( temp 2-component vector of float) 0:373 matrix-times-vector ( temp 2-component vector of float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 Sequence 0:373 move second child to first child ( temp 2X2 matrix of float) 0:373 'r6' ( temp 2X2 matrix of float) 0:373 matrix-scale ( temp 2X2 matrix of float) 0:373 'inF0' ( in float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:373 Sequence 0:373 move second child to first child ( temp 2X2 matrix of float) 0:373 'r7' ( temp 2X2 matrix of float) 0:373 matrix-scale ( temp 2X2 matrix of float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:373 'inF0' ( in float) 0:373 Sequence 0:373 move second child to first child ( temp 2X2 matrix of float) 0:373 'r8' ( temp 2X2 matrix of float) 0:373 matrix-multiply ( temp 2X2 matrix of float) 0:373 'inFM1' ( in 2X2 matrix of float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:379 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void) 0:379 Function Parameters: 0:379 'inF0' ( in float) 0:379 'inF1' ( in float) 0:379 'inFV0' ( in 3-component vector of float) 0:379 'inFV1' ( in 3-component vector of float) 0:379 'inFM0' ( in 3X3 matrix of float) 0:379 'inFM1' ( in 3X3 matrix of float) 0:? Sequence 0:380 Sequence 0:380 move second child to first child ( temp float) 0:380 'r0' ( temp float) 0:380 component-wise multiply ( temp float) 0:380 'inF1' ( in float) 0:380 'inF0' ( in float) 0:380 Sequence 0:380 move second child to first child ( temp 3-component vector of float) 0:380 'r1' ( temp 3-component vector of float) 0:380 vector-scale ( temp 3-component vector of float) 0:380 'inF0' ( in float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 Sequence 0:380 move second child to first child ( temp 3-component vector of float) 0:380 'r2' ( temp 3-component vector of float) 0:380 vector-scale ( temp 3-component vector of float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 'inF0' ( in float) 0:380 Sequence 0:380 move second child to first child ( temp float) 0:380 'r3' ( temp float) 0:380 dot-product ( temp float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 'inFV1' ( in 3-component vector of float) 0:380 Sequence 0:380 move second child to first child ( temp 3-component vector of float) 0:380 'r4' ( temp 3-component vector of float) 0:380 vector-times-matrix ( temp 3-component vector of float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:380 Sequence 0:380 move second child to first child ( temp 3-component vector of float) 0:380 'r5' ( temp 3-component vector of float) 0:380 matrix-times-vector ( temp 3-component vector of float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 Sequence 0:380 move second child to first child ( temp 3X3 matrix of float) 0:380 'r6' ( temp 3X3 matrix of float) 0:380 matrix-scale ( temp 3X3 matrix of float) 0:380 'inF0' ( in float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:380 Sequence 0:380 move second child to first child ( temp 3X3 matrix of float) 0:380 'r7' ( temp 3X3 matrix of float) 0:380 matrix-scale ( temp 3X3 matrix of float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:380 'inF0' ( in float) 0:380 Sequence 0:380 move second child to first child ( temp 3X3 matrix of float) 0:380 'r8' ( temp 3X3 matrix of float) 0:380 matrix-multiply ( temp 3X3 matrix of float) 0:380 'inFM1' ( in 3X3 matrix of float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:386 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void) 0:386 Function Parameters: 0:386 'inF0' ( in float) 0:386 'inF1' ( in float) 0:386 'inFV0' ( in 4-component vector of float) 0:386 'inFV1' ( in 4-component vector of float) 0:386 'inFM0' ( in 4X4 matrix of float) 0:386 'inFM1' ( in 4X4 matrix of float) 0:? Sequence 0:387 Sequence 0:387 move second child to first child ( temp float) 0:387 'r0' ( temp float) 0:387 component-wise multiply ( temp float) 0:387 'inF1' ( in float) 0:387 'inF0' ( in float) 0:387 Sequence 0:387 move second child to first child ( temp 4-component vector of float) 0:387 'r1' ( temp 4-component vector of float) 0:387 vector-scale ( temp 4-component vector of float) 0:387 'inF0' ( in float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 Sequence 0:387 move second child to first child ( temp 4-component vector of float) 0:387 'r2' ( temp 4-component vector of float) 0:387 vector-scale ( temp 4-component vector of float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 'inF0' ( in float) 0:387 Sequence 0:387 move second child to first child ( temp float) 0:387 'r3' ( temp float) 0:387 dot-product ( temp float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 'inFV1' ( in 4-component vector of float) 0:387 Sequence 0:387 move second child to first child ( temp 4-component vector of float) 0:387 'r4' ( temp 4-component vector of float) 0:387 vector-times-matrix ( temp 4-component vector of float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:387 Sequence 0:387 move second child to first child ( temp 4-component vector of float) 0:387 'r5' ( temp 4-component vector of float) 0:387 matrix-times-vector ( temp 4-component vector of float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 Sequence 0:387 move second child to first child ( temp 4X4 matrix of float) 0:387 'r6' ( temp 4X4 matrix of float) 0:387 matrix-scale ( temp 4X4 matrix of float) 0:387 'inF0' ( in float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:387 Sequence 0:387 move second child to first child ( temp 4X4 matrix of float) 0:387 'r7' ( temp 4X4 matrix of float) 0:387 matrix-scale ( temp 4X4 matrix of float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:387 'inF0' ( in float) 0:387 Sequence 0:387 move second child to first child ( temp 4X4 matrix of float) 0:387 'r8' ( temp 4X4 matrix of float) 0:387 matrix-multiply ( temp 4X4 matrix of float) 0:387 'inFM1' ( in 4X4 matrix of float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:396 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void) 0:396 Function Parameters: 0:396 'inF0' ( in float) 0:396 'inF1' ( in float) 0:396 'inFV2' ( in 2-component vector of float) 0:396 'inFV3' ( in 3-component vector of float) 0:396 'inFM2x3' ( in 2X3 matrix of float) 0:396 'inFM3x2' ( in 3X2 matrix of float) 0:396 'inFM3x3' ( in 3X3 matrix of float) 0:396 'inFM3x4' ( in 3X4 matrix of float) 0:396 'inFM2x4' ( in 2X4 matrix of float) 0:? Sequence 0:397 Sequence 0:397 move second child to first child ( temp float) 0:397 'r00' ( temp float) 0:397 component-wise multiply ( temp float) 0:397 'inF1' ( in float) 0:397 'inF0' ( in float) 0:398 Sequence 0:398 move second child to first child ( temp 2-component vector of float) 0:398 'r01' ( temp 2-component vector of float) 0:398 vector-scale ( temp 2-component vector of float) 0:398 'inF0' ( in float) 0:398 'inFV2' ( in 2-component vector of float) 0:399 Sequence 0:399 move second child to first child ( temp 3-component vector of float) 0:399 'r02' ( temp 3-component vector of float) 0:399 vector-scale ( temp 3-component vector of float) 0:399 'inF0' ( in float) 0:399 'inFV3' ( in 3-component vector of float) 0:400 Sequence 0:400 move second child to first child ( temp 2-component vector of float) 0:400 'r03' ( temp 2-component vector of float) 0:400 vector-scale ( temp 2-component vector of float) 0:400 'inFV2' ( in 2-component vector of float) 0:400 'inF0' ( in float) 0:401 Sequence 0:401 move second child to first child ( temp 3-component vector of float) 0:401 'r04' ( temp 3-component vector of float) 0:401 vector-scale ( temp 3-component vector of float) 0:401 'inFV3' ( in 3-component vector of float) 0:401 'inF0' ( in float) 0:402 Sequence 0:402 move second child to first child ( temp float) 0:402 'r05' ( temp float) 0:402 dot-product ( temp float) 0:402 'inFV2' ( in 2-component vector of float) 0:402 'inFV2' ( in 2-component vector of float) 0:403 Sequence 0:403 move second child to first child ( temp float) 0:403 'r06' ( temp float) 0:403 dot-product ( temp float) 0:403 'inFV3' ( in 3-component vector of float) 0:403 'inFV3' ( in 3-component vector of float) 0:404 Sequence 0:404 move second child to first child ( temp 3-component vector of float) 0:404 'r07' ( temp 3-component vector of float) 0:404 matrix-times-vector ( temp 3-component vector of float) 0:404 'inFM2x3' ( in 2X3 matrix of float) 0:404 'inFV2' ( in 2-component vector of float) 0:405 Sequence 0:405 move second child to first child ( temp 2-component vector of float) 0:405 'r08' ( temp 2-component vector of float) 0:405 matrix-times-vector ( temp 2-component vector of float) 0:405 'inFM3x2' ( in 3X2 matrix of float) 0:405 'inFV3' ( in 3-component vector of float) 0:406 Sequence 0:406 move second child to first child ( temp 2-component vector of float) 0:406 'r09' ( temp 2-component vector of float) 0:406 vector-times-matrix ( temp 2-component vector of float) 0:406 'inFV3' ( in 3-component vector of float) 0:406 'inFM2x3' ( in 2X3 matrix of float) 0:407 Sequence 0:407 move second child to first child ( temp 3-component vector of float) 0:407 'r10' ( temp 3-component vector of float) 0:407 vector-times-matrix ( temp 3-component vector of float) 0:407 'inFV2' ( in 2-component vector of float) 0:407 'inFM3x2' ( in 3X2 matrix of float) 0:408 Sequence 0:408 move second child to first child ( temp 2X3 matrix of float) 0:408 'r11' ( temp 2X3 matrix of float) 0:408 matrix-scale ( temp 2X3 matrix of float) 0:408 'inF0' ( in float) 0:408 'inFM2x3' ( in 2X3 matrix of float) 0:409 Sequence 0:409 move second child to first child ( temp 3X2 matrix of float) 0:409 'r12' ( temp 3X2 matrix of float) 0:409 matrix-scale ( temp 3X2 matrix of float) 0:409 'inF0' ( in float) 0:409 'inFM3x2' ( in 3X2 matrix of float) 0:410 Sequence 0:410 move second child to first child ( temp 2X2 matrix of float) 0:410 'r13' ( temp 2X2 matrix of float) 0:410 matrix-multiply ( temp 2X2 matrix of float) 0:410 'inFM3x2' ( in 3X2 matrix of float) 0:410 'inFM2x3' ( in 2X3 matrix of float) 0:411 Sequence 0:411 move second child to first child ( temp 2X3 matrix of float) 0:411 'r14' ( temp 2X3 matrix of float) 0:411 matrix-multiply ( temp 2X3 matrix of float) 0:411 'inFM3x3' ( in 3X3 matrix of float) 0:411 'inFM2x3' ( in 2X3 matrix of float) 0:412 Sequence 0:412 move second child to first child ( temp 2X4 matrix of float) 0:412 'r15' ( temp 2X4 matrix of float) 0:412 matrix-multiply ( temp 2X4 matrix of float) 0:412 'inFM3x4' ( in 3X4 matrix of float) 0:412 'inFM2x3' ( in 2X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X4 matrix of float) 0:413 'r16' ( temp 3X4 matrix of float) 0:413 matrix-multiply ( temp 3X4 matrix of float) 0:413 'inFM2x4' ( in 2X4 matrix of float) 0:413 'inFM3x2' ( in 3X2 matrix of float) 0:? Linker Objects Linked vertex stage: WARNING: Linking vertex stage: Entry point not found Shader version: 500 0:? Sequence 0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; ( temp float) 0:2 Function Parameters: 0:2 'inF0' ( in float) 0:2 'inF1' ( in float) 0:2 'inF2' ( in float) 0:2 'inU0' ( in uint) 0:2 'inU1' ( in uint) 0:? Sequence 0:3 all ( temp bool) 0:3 Convert float to bool ( temp bool) 0:3 'inF0' ( in float) 0:4 Absolute value ( temp float) 0:4 'inF0' ( in float) 0:5 arc cosine ( temp float) 0:5 'inF0' ( in float) 0:6 any ( temp bool) 0:6 Convert float to bool ( temp bool) 0:6 'inF0' ( in float) 0:7 arc sine ( temp float) 0:7 'inF0' ( in float) 0:8 floatBitsToInt ( temp int) 0:8 'inF0' ( in float) 0:9 floatBitsToUint ( temp uint) 0:9 'inF0' ( in float) 0:10 intBitsToFloat ( temp float) 0:10 'inU0' ( in uint) 0:12 arc tangent ( temp float) 0:12 'inF0' ( in float) 0:13 arc tangent ( temp float) 0:13 'inF0' ( in float) 0:13 'inF1' ( in float) 0:14 Ceiling ( temp float) 0:14 'inF0' ( in float) 0:15 clamp ( temp float) 0:15 'inF0' ( in float) 0:15 'inF1' ( in float) 0:15 'inF2' ( in float) 0:16 cosine ( temp float) 0:16 'inF0' ( in float) 0:17 hyp. cosine ( temp float) 0:17 'inF0' ( in float) 0:18 bitCount ( temp int) 0:18 Constant: 0:18 7 (const int) 0:19 degrees ( temp float) 0:19 'inF0' ( in float) 0:23 exp ( temp float) 0:23 'inF0' ( in float) 0:24 exp2 ( temp float) 0:24 'inF0' ( in float) 0:25 findMSB ( temp int) 0:25 Constant: 0:25 7 (const int) 0:26 findLSB ( temp int) 0:26 Constant: 0:26 7 (const int) 0:27 Floor ( temp float) 0:27 'inF0' ( in float) 0:29 mod ( temp float) 0:29 'inF0' ( in float) 0:29 'inF1' ( in float) 0:30 Fraction ( temp float) 0:30 'inF0' ( in float) 0:31 isinf ( temp bool) 0:31 'inF0' ( in float) 0:32 isnan ( temp bool) 0:32 'inF0' ( in float) 0:33 ldexp ( temp float) 0:33 'inF0' ( in float) 0:33 'inF1' ( in float) 0:34 mix ( temp float) 0:34 'inF0' ( in float) 0:34 'inF1' ( in float) 0:34 'inF2' ( in float) 0:35 log ( temp float) 0:35 'inF0' ( in float) 0:36 component-wise multiply ( temp float) 0:36 log2 ( temp float) 0:36 'inF0' ( in float) 0:36 Constant: 0:36 0.301030 0:37 log2 ( temp float) 0:37 'inF0' ( in float) 0:38 max ( temp float) 0:38 'inF0' ( in float) 0:38 'inF1' ( in float) 0:39 min ( temp float) 0:39 'inF0' ( in float) 0:39 'inF1' ( in float) 0:41 pow ( temp float) 0:41 'inF0' ( in float) 0:41 'inF1' ( in float) 0:42 radians ( temp float) 0:42 'inF0' ( in float) 0:43 bitFieldReverse ( temp int) 0:43 Constant: 0:43 2 (const int) 0:44 roundEven ( temp float) 0:44 'inF0' ( in float) 0:45 inverse sqrt ( temp float) 0:45 'inF0' ( in float) 0:46 clamp ( temp float) 0:46 'inF0' ( in float) 0:46 Constant: 0:46 0.000000 0:46 Constant: 0:46 1.000000 0:47 Sign ( temp float) 0:47 'inF0' ( in float) 0:48 sine ( temp float) 0:48 'inF0' ( in float) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'inF1' ( in float) 0:49 sine ( temp float) 0:49 'inF0' ( in float) 0:49 move second child to first child ( temp float) 0:49 'inF2' ( in float) 0:49 cosine ( temp float) 0:49 'inF0' ( in float) 0:50 hyp. sine ( temp float) 0:50 'inF0' ( in float) 0:51 smoothstep ( temp float) 0:51 'inF0' ( in float) 0:51 'inF1' ( in float) 0:51 'inF2' ( in float) 0:52 sqrt ( temp float) 0:52 'inF0' ( in float) 0:53 step ( temp float) 0:53 'inF0' ( in float) 0:53 'inF1' ( in float) 0:54 tangent ( temp float) 0:54 'inF0' ( in float) 0:55 hyp. tangent ( temp float) 0:55 'inF0' ( in float) 0:57 trunc ( temp float) 0:57 'inF0' ( in float) 0:59 Branch: Return with expression 0:59 Constant: 0:59 0.000000 0:63 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) 0:63 Function Parameters: 0:63 'inF0' ( in 1-component vector of float) 0:63 'inF1' ( in 1-component vector of float) 0:63 'inF2' ( in 1-component vector of float) 0:? Sequence 0:65 Branch: Return with expression 0:65 Constant: 0:65 0.000000 0:69 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) 0:69 Function Parameters: 0:69 'inF0' ( in 2-component vector of float) 0:69 'inF1' ( in 2-component vector of float) 0:69 'inF2' ( in 2-component vector of float) 0:69 'inU0' ( in 2-component vector of uint) 0:69 'inU1' ( in 2-component vector of uint) 0:? Sequence 0:70 all ( temp bool) 0:70 Convert float to bool ( temp 2-component vector of bool) 0:70 'inF0' ( in 2-component vector of float) 0:71 Absolute value ( temp 2-component vector of float) 0:71 'inF0' ( in 2-component vector of float) 0:72 arc cosine ( temp 2-component vector of float) 0:72 'inF0' ( in 2-component vector of float) 0:73 any ( temp bool) 0:73 Convert float to bool ( temp 2-component vector of bool) 0:73 'inF0' ( in 2-component vector of float) 0:74 arc sine ( temp 2-component vector of float) 0:74 'inF0' ( in 2-component vector of float) 0:75 floatBitsToInt ( temp 2-component vector of int) 0:75 'inF0' ( in 2-component vector of float) 0:76 floatBitsToUint ( temp 2-component vector of uint) 0:76 'inF0' ( in 2-component vector of float) 0:77 intBitsToFloat ( temp 2-component vector of float) 0:77 'inU0' ( in 2-component vector of uint) 0:79 arc tangent ( temp 2-component vector of float) 0:79 'inF0' ( in 2-component vector of float) 0:80 arc tangent ( temp 2-component vector of float) 0:80 'inF0' ( in 2-component vector of float) 0:80 'inF1' ( in 2-component vector of float) 0:81 Ceiling ( temp 2-component vector of float) 0:81 'inF0' ( in 2-component vector of float) 0:82 clamp ( temp 2-component vector of float) 0:82 'inF0' ( in 2-component vector of float) 0:82 'inF1' ( in 2-component vector of float) 0:82 'inF2' ( in 2-component vector of float) 0:83 cosine ( temp 2-component vector of float) 0:83 'inF0' ( in 2-component vector of float) 0:84 hyp. cosine ( temp 2-component vector of float) 0:84 'inF0' ( in 2-component vector of float) 0:85 bitCount ( temp 2-component vector of int) 0:85 Constant: 0:85 7 (const int) 0:85 3 (const int) 0:86 degrees ( temp 2-component vector of float) 0:86 'inF0' ( in 2-component vector of float) 0:87 distance ( temp float) 0:87 'inF0' ( in 2-component vector of float) 0:87 'inF1' ( in 2-component vector of float) 0:88 dot-product ( temp float) 0:88 'inF0' ( in 2-component vector of float) 0:88 'inF1' ( in 2-component vector of float) 0:92 exp ( temp 2-component vector of float) 0:92 'inF0' ( in 2-component vector of float) 0:93 exp2 ( temp 2-component vector of float) 0:93 'inF0' ( in 2-component vector of float) 0:94 face-forward ( temp 2-component vector of float) 0:94 'inF0' ( in 2-component vector of float) 0:94 'inF1' ( in 2-component vector of float) 0:94 'inF2' ( in 2-component vector of float) 0:95 findMSB ( temp int) 0:95 Constant: 0:95 7 (const int) 0:96 findLSB ( temp int) 0:96 Constant: 0:96 7 (const int) 0:97 Floor ( temp 2-component vector of float) 0:97 'inF0' ( in 2-component vector of float) 0:99 mod ( temp 2-component vector of float) 0:99 'inF0' ( in 2-component vector of float) 0:99 'inF1' ( in 2-component vector of float) 0:100 Fraction ( temp 2-component vector of float) 0:100 'inF0' ( in 2-component vector of float) 0:101 isinf ( temp 2-component vector of bool) 0:101 'inF0' ( in 2-component vector of float) 0:102 isnan ( temp 2-component vector of bool) 0:102 'inF0' ( in 2-component vector of float) 0:103 ldexp ( temp 2-component vector of float) 0:103 'inF0' ( in 2-component vector of float) 0:103 'inF1' ( in 2-component vector of float) 0:104 mix ( temp 2-component vector of float) 0:104 'inF0' ( in 2-component vector of float) 0:104 'inF1' ( in 2-component vector of float) 0:104 'inF2' ( in 2-component vector of float) 0:105 length ( temp float) 0:105 'inF0' ( in 2-component vector of float) 0:106 log ( temp 2-component vector of float) 0:106 'inF0' ( in 2-component vector of float) 0:107 vector-scale ( temp 2-component vector of float) 0:107 log2 ( temp 2-component vector of float) 0:107 'inF0' ( in 2-component vector of float) 0:107 Constant: 0:107 0.301030 0:108 log2 ( temp 2-component vector of float) 0:108 'inF0' ( in 2-component vector of float) 0:109 max ( temp 2-component vector of float) 0:109 'inF0' ( in 2-component vector of float) 0:109 'inF1' ( in 2-component vector of float) 0:110 min ( temp 2-component vector of float) 0:110 'inF0' ( in 2-component vector of float) 0:110 'inF1' ( in 2-component vector of float) 0:112 normalize ( temp 2-component vector of float) 0:112 'inF0' ( in 2-component vector of float) 0:113 pow ( temp 2-component vector of float) 0:113 'inF0' ( in 2-component vector of float) 0:113 'inF1' ( in 2-component vector of float) 0:114 radians ( temp 2-component vector of float) 0:114 'inF0' ( in 2-component vector of float) 0:115 reflect ( temp 2-component vector of float) 0:115 'inF0' ( in 2-component vector of float) 0:115 'inF1' ( in 2-component vector of float) 0:116 refract ( temp 2-component vector of float) 0:116 'inF0' ( in 2-component vector of float) 0:116 'inF1' ( in 2-component vector of float) 0:116 Constant: 0:116 2.000000 0:117 bitFieldReverse ( temp 2-component vector of int) 0:117 Constant: 0:117 1 (const int) 0:117 2 (const int) 0:118 roundEven ( temp 2-component vector of float) 0:118 'inF0' ( in 2-component vector of float) 0:119 inverse sqrt ( temp 2-component vector of float) 0:119 'inF0' ( in 2-component vector of float) 0:120 clamp ( temp 2-component vector of float) 0:120 'inF0' ( in 2-component vector of float) 0:120 Constant: 0:120 0.000000 0:120 Constant: 0:120 1.000000 0:121 Sign ( temp 2-component vector of float) 0:121 'inF0' ( in 2-component vector of float) 0:122 sine ( temp 2-component vector of float) 0:122 'inF0' ( in 2-component vector of float) 0:123 Sequence 0:123 move second child to first child ( temp 2-component vector of float) 0:123 'inF1' ( in 2-component vector of float) 0:123 sine ( temp 2-component vector of float) 0:123 'inF0' ( in 2-component vector of float) 0:123 move second child to first child ( temp 2-component vector of float) 0:123 'inF2' ( in 2-component vector of float) 0:123 cosine ( temp 2-component vector of float) 0:123 'inF0' ( in 2-component vector of float) 0:124 hyp. sine ( temp 2-component vector of float) 0:124 'inF0' ( in 2-component vector of float) 0:125 smoothstep ( temp 2-component vector of float) 0:125 'inF0' ( in 2-component vector of float) 0:125 'inF1' ( in 2-component vector of float) 0:125 'inF2' ( in 2-component vector of float) 0:126 sqrt ( temp 2-component vector of float) 0:126 'inF0' ( in 2-component vector of float) 0:127 step ( temp 2-component vector of float) 0:127 'inF0' ( in 2-component vector of float) 0:127 'inF1' ( in 2-component vector of float) 0:128 tangent ( temp 2-component vector of float) 0:128 'inF0' ( in 2-component vector of float) 0:129 hyp. tangent ( temp 2-component vector of float) 0:129 'inF0' ( in 2-component vector of float) 0:131 trunc ( temp 2-component vector of float) 0:131 'inF0' ( in 2-component vector of float) 0:134 Branch: Return with expression 0:134 Constant: 0:134 1.000000 0:134 2.000000 0:138 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) 0:138 Function Parameters: 0:138 'inF0' ( in 3-component vector of float) 0:138 'inF1' ( in 3-component vector of float) 0:138 'inF2' ( in 3-component vector of float) 0:138 'inU0' ( in 3-component vector of uint) 0:138 'inU1' ( in 3-component vector of uint) 0:? Sequence 0:139 all ( temp bool) 0:139 Convert float to bool ( temp 3-component vector of bool) 0:139 'inF0' ( in 3-component vector of float) 0:140 Absolute value ( temp 3-component vector of float) 0:140 'inF0' ( in 3-component vector of float) 0:141 arc cosine ( temp 3-component vector of float) 0:141 'inF0' ( in 3-component vector of float) 0:142 any ( temp bool) 0:142 Convert float to bool ( temp 3-component vector of bool) 0:142 'inF0' ( in 3-component vector of float) 0:143 arc sine ( temp 3-component vector of float) 0:143 'inF0' ( in 3-component vector of float) 0:144 floatBitsToInt ( temp 3-component vector of int) 0:144 'inF0' ( in 3-component vector of float) 0:145 floatBitsToUint ( temp 3-component vector of uint) 0:145 'inF0' ( in 3-component vector of float) 0:146 intBitsToFloat ( temp 3-component vector of float) 0:146 'inU0' ( in 3-component vector of uint) 0:148 arc tangent ( temp 3-component vector of float) 0:148 'inF0' ( in 3-component vector of float) 0:149 arc tangent ( temp 3-component vector of float) 0:149 'inF0' ( in 3-component vector of float) 0:149 'inF1' ( in 3-component vector of float) 0:150 Ceiling ( temp 3-component vector of float) 0:150 'inF0' ( in 3-component vector of float) 0:151 clamp ( temp 3-component vector of float) 0:151 'inF0' ( in 3-component vector of float) 0:151 'inF1' ( in 3-component vector of float) 0:151 'inF2' ( in 3-component vector of float) 0:152 cosine ( temp 3-component vector of float) 0:152 'inF0' ( in 3-component vector of float) 0:153 hyp. cosine ( temp 3-component vector of float) 0:153 'inF0' ( in 3-component vector of float) 0:154 bitCount ( temp 3-component vector of int) 0:154 Constant: 0:154 7 (const int) 0:154 3 (const int) 0:154 5 (const int) 0:155 cross-product ( temp 3-component vector of float) 0:155 'inF0' ( in 3-component vector of float) 0:155 'inF1' ( in 3-component vector of float) 0:156 degrees ( temp 3-component vector of float) 0:156 'inF0' ( in 3-component vector of float) 0:157 distance ( temp float) 0:157 'inF0' ( in 3-component vector of float) 0:157 'inF1' ( in 3-component vector of float) 0:158 dot-product ( temp float) 0:158 'inF0' ( in 3-component vector of float) 0:158 'inF1' ( in 3-component vector of float) 0:162 exp ( temp 3-component vector of float) 0:162 'inF0' ( in 3-component vector of float) 0:163 exp2 ( temp 3-component vector of float) 0:163 'inF0' ( in 3-component vector of float) 0:164 face-forward ( temp 3-component vector of float) 0:164 'inF0' ( in 3-component vector of float) 0:164 'inF1' ( in 3-component vector of float) 0:164 'inF2' ( in 3-component vector of float) 0:165 findMSB ( temp int) 0:165 Constant: 0:165 7 (const int) 0:166 findLSB ( temp int) 0:166 Constant: 0:166 7 (const int) 0:167 Floor ( temp 3-component vector of float) 0:167 'inF0' ( in 3-component vector of float) 0:169 mod ( temp 3-component vector of float) 0:169 'inF0' ( in 3-component vector of float) 0:169 'inF1' ( in 3-component vector of float) 0:170 Fraction ( temp 3-component vector of float) 0:170 'inF0' ( in 3-component vector of float) 0:171 isinf ( temp 3-component vector of bool) 0:171 'inF0' ( in 3-component vector of float) 0:172 isnan ( temp 3-component vector of bool) 0:172 'inF0' ( in 3-component vector of float) 0:173 ldexp ( temp 3-component vector of float) 0:173 'inF0' ( in 3-component vector of float) 0:173 'inF1' ( in 3-component vector of float) 0:174 mix ( temp 3-component vector of float) 0:174 'inF0' ( in 3-component vector of float) 0:174 'inF1' ( in 3-component vector of float) 0:174 'inF2' ( in 3-component vector of float) 0:175 length ( temp float) 0:175 'inF0' ( in 3-component vector of float) 0:176 log ( temp 3-component vector of float) 0:176 'inF0' ( in 3-component vector of float) 0:177 vector-scale ( temp 3-component vector of float) 0:177 log2 ( temp 3-component vector of float) 0:177 'inF0' ( in 3-component vector of float) 0:177 Constant: 0:177 0.301030 0:178 log2 ( temp 3-component vector of float) 0:178 'inF0' ( in 3-component vector of float) 0:179 max ( temp 3-component vector of float) 0:179 'inF0' ( in 3-component vector of float) 0:179 'inF1' ( in 3-component vector of float) 0:180 min ( temp 3-component vector of float) 0:180 'inF0' ( in 3-component vector of float) 0:180 'inF1' ( in 3-component vector of float) 0:182 normalize ( temp 3-component vector of float) 0:182 'inF0' ( in 3-component vector of float) 0:183 pow ( temp 3-component vector of float) 0:183 'inF0' ( in 3-component vector of float) 0:183 'inF1' ( in 3-component vector of float) 0:184 radians ( temp 3-component vector of float) 0:184 'inF0' ( in 3-component vector of float) 0:185 reflect ( temp 3-component vector of float) 0:185 'inF0' ( in 3-component vector of float) 0:185 'inF1' ( in 3-component vector of float) 0:186 refract ( temp 3-component vector of float) 0:186 'inF0' ( in 3-component vector of float) 0:186 'inF1' ( in 3-component vector of float) 0:186 Constant: 0:186 2.000000 0:187 bitFieldReverse ( temp 3-component vector of int) 0:187 Constant: 0:187 1 (const int) 0:187 2 (const int) 0:187 3 (const int) 0:188 roundEven ( temp 3-component vector of float) 0:188 'inF0' ( in 3-component vector of float) 0:189 inverse sqrt ( temp 3-component vector of float) 0:189 'inF0' ( in 3-component vector of float) 0:190 clamp ( temp 3-component vector of float) 0:190 'inF0' ( in 3-component vector of float) 0:190 Constant: 0:190 0.000000 0:190 Constant: 0:190 1.000000 0:191 Sign ( temp 3-component vector of float) 0:191 'inF0' ( in 3-component vector of float) 0:192 sine ( temp 3-component vector of float) 0:192 'inF0' ( in 3-component vector of float) 0:193 Sequence 0:193 move second child to first child ( temp 3-component vector of float) 0:193 'inF1' ( in 3-component vector of float) 0:193 sine ( temp 3-component vector of float) 0:193 'inF0' ( in 3-component vector of float) 0:193 move second child to first child ( temp 3-component vector of float) 0:193 'inF2' ( in 3-component vector of float) 0:193 cosine ( temp 3-component vector of float) 0:193 'inF0' ( in 3-component vector of float) 0:194 hyp. sine ( temp 3-component vector of float) 0:194 'inF0' ( in 3-component vector of float) 0:195 smoothstep ( temp 3-component vector of float) 0:195 'inF0' ( in 3-component vector of float) 0:195 'inF1' ( in 3-component vector of float) 0:195 'inF2' ( in 3-component vector of float) 0:196 sqrt ( temp 3-component vector of float) 0:196 'inF0' ( in 3-component vector of float) 0:197 step ( temp 3-component vector of float) 0:197 'inF0' ( in 3-component vector of float) 0:197 'inF1' ( in 3-component vector of float) 0:198 tangent ( temp 3-component vector of float) 0:198 'inF0' ( in 3-component vector of float) 0:199 hyp. tangent ( temp 3-component vector of float) 0:199 'inF0' ( in 3-component vector of float) 0:201 trunc ( temp 3-component vector of float) 0:201 'inF0' ( in 3-component vector of float) 0:204 Branch: Return with expression 0:204 Constant: 0:204 1.000000 0:204 2.000000 0:204 3.000000 0:208 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:208 Function Parameters: 0:208 'inF0' ( in 4-component vector of float) 0:208 'inF1' ( in 4-component vector of float) 0:208 'inF2' ( in 4-component vector of float) 0:208 'inU0' ( in 4-component vector of uint) 0:208 'inU1' ( in 4-component vector of uint) 0:? Sequence 0:209 all ( temp bool) 0:209 Convert float to bool ( temp 4-component vector of bool) 0:209 'inF0' ( in 4-component vector of float) 0:210 Absolute value ( temp 4-component vector of float) 0:210 'inF0' ( in 4-component vector of float) 0:211 arc cosine ( temp 4-component vector of float) 0:211 'inF0' ( in 4-component vector of float) 0:212 any ( temp bool) 0:212 Convert float to bool ( temp 4-component vector of bool) 0:212 'inF0' ( in 4-component vector of float) 0:213 arc sine ( temp 4-component vector of float) 0:213 'inF0' ( in 4-component vector of float) 0:214 floatBitsToInt ( temp 4-component vector of int) 0:214 'inF0' ( in 4-component vector of float) 0:215 floatBitsToUint ( temp 4-component vector of uint) 0:215 'inF0' ( in 4-component vector of float) 0:216 intBitsToFloat ( temp 4-component vector of float) 0:216 'inU0' ( in 4-component vector of uint) 0:218 arc tangent ( temp 4-component vector of float) 0:218 'inF0' ( in 4-component vector of float) 0:219 arc tangent ( temp 4-component vector of float) 0:219 'inF0' ( in 4-component vector of float) 0:219 'inF1' ( in 4-component vector of float) 0:220 Ceiling ( temp 4-component vector of float) 0:220 'inF0' ( in 4-component vector of float) 0:221 clamp ( temp 4-component vector of float) 0:221 'inF0' ( in 4-component vector of float) 0:221 'inF1' ( in 4-component vector of float) 0:221 'inF2' ( in 4-component vector of float) 0:222 cosine ( temp 4-component vector of float) 0:222 'inF0' ( in 4-component vector of float) 0:223 hyp. cosine ( temp 4-component vector of float) 0:223 'inF0' ( in 4-component vector of float) 0:224 bitCount ( temp 4-component vector of int) 0:224 Constant: 0:224 7 (const int) 0:224 3 (const int) 0:224 5 (const int) 0:224 2 (const int) 0:225 degrees ( temp 4-component vector of float) 0:225 'inF0' ( in 4-component vector of float) 0:226 distance ( temp float) 0:226 'inF0' ( in 4-component vector of float) 0:226 'inF1' ( in 4-component vector of float) 0:227 dot-product ( temp float) 0:227 'inF0' ( in 4-component vector of float) 0:227 'inF1' ( in 4-component vector of float) 0:228 Construct vec4 ( temp 4-component vector of float) 0:228 Constant: 0:228 1.000000 0:228 component-wise multiply ( temp float) 0:228 direct index ( temp float) 0:228 'inF0' ( in 4-component vector of float) 0:228 Constant: 0:228 1 (const int) 0:228 direct index ( temp float) 0:228 'inF1' ( in 4-component vector of float) 0:228 Constant: 0:228 1 (const int) 0:228 direct index ( temp float) 0:228 'inF0' ( in 4-component vector of float) 0:228 Constant: 0:228 2 (const int) 0:228 direct index ( temp float) 0:228 'inF1' ( in 4-component vector of float) 0:228 Constant: 0:228 3 (const int) 0:232 exp ( temp 4-component vector of float) 0:232 'inF0' ( in 4-component vector of float) 0:233 exp2 ( temp 4-component vector of float) 0:233 'inF0' ( in 4-component vector of float) 0:234 face-forward ( temp 4-component vector of float) 0:234 'inF0' ( in 4-component vector of float) 0:234 'inF1' ( in 4-component vector of float) 0:234 'inF2' ( in 4-component vector of float) 0:235 findMSB ( temp int) 0:235 Constant: 0:235 7 (const int) 0:236 findLSB ( temp int) 0:236 Constant: 0:236 7 (const int) 0:237 Floor ( temp 4-component vector of float) 0:237 'inF0' ( in 4-component vector of float) 0:239 mod ( temp 4-component vector of float) 0:239 'inF0' ( in 4-component vector of float) 0:239 'inF1' ( in 4-component vector of float) 0:240 Fraction ( temp 4-component vector of float) 0:240 'inF0' ( in 4-component vector of float) 0:241 isinf ( temp 4-component vector of bool) 0:241 'inF0' ( in 4-component vector of float) 0:242 isnan ( temp 4-component vector of bool) 0:242 'inF0' ( in 4-component vector of float) 0:243 ldexp ( temp 4-component vector of float) 0:243 'inF0' ( in 4-component vector of float) 0:243 'inF1' ( in 4-component vector of float) 0:244 mix ( temp 4-component vector of float) 0:244 'inF0' ( in 4-component vector of float) 0:244 'inF1' ( in 4-component vector of float) 0:244 'inF2' ( in 4-component vector of float) 0:245 length ( temp float) 0:245 'inF0' ( in 4-component vector of float) 0:246 log ( temp 4-component vector of float) 0:246 'inF0' ( in 4-component vector of float) 0:247 vector-scale ( temp 4-component vector of float) 0:247 log2 ( temp 4-component vector of float) 0:247 'inF0' ( in 4-component vector of float) 0:247 Constant: 0:247 0.301030 0:248 log2 ( temp 4-component vector of float) 0:248 'inF0' ( in 4-component vector of float) 0:249 max ( temp 4-component vector of float) 0:249 'inF0' ( in 4-component vector of float) 0:249 'inF1' ( in 4-component vector of float) 0:250 min ( temp 4-component vector of float) 0:250 'inF0' ( in 4-component vector of float) 0:250 'inF1' ( in 4-component vector of float) 0:252 normalize ( temp 4-component vector of float) 0:252 'inF0' ( in 4-component vector of float) 0:253 pow ( temp 4-component vector of float) 0:253 'inF0' ( in 4-component vector of float) 0:253 'inF1' ( in 4-component vector of float) 0:254 radians ( temp 4-component vector of float) 0:254 'inF0' ( in 4-component vector of float) 0:255 reflect ( temp 4-component vector of float) 0:255 'inF0' ( in 4-component vector of float) 0:255 'inF1' ( in 4-component vector of float) 0:256 refract ( temp 4-component vector of float) 0:256 'inF0' ( in 4-component vector of float) 0:256 'inF1' ( in 4-component vector of float) 0:256 Constant: 0:256 2.000000 0:257 bitFieldReverse ( temp 4-component vector of int) 0:257 Constant: 0:257 1 (const int) 0:257 2 (const int) 0:257 3 (const int) 0:257 4 (const int) 0:258 roundEven ( temp 4-component vector of float) 0:258 'inF0' ( in 4-component vector of float) 0:259 inverse sqrt ( temp 4-component vector of float) 0:259 'inF0' ( in 4-component vector of float) 0:260 clamp ( temp 4-component vector of float) 0:260 'inF0' ( in 4-component vector of float) 0:260 Constant: 0:260 0.000000 0:260 Constant: 0:260 1.000000 0:261 Sign ( temp 4-component vector of float) 0:261 'inF0' ( in 4-component vector of float) 0:262 sine ( temp 4-component vector of float) 0:262 'inF0' ( in 4-component vector of float) 0:263 Sequence 0:263 move second child to first child ( temp 4-component vector of float) 0:263 'inF1' ( in 4-component vector of float) 0:263 sine ( temp 4-component vector of float) 0:263 'inF0' ( in 4-component vector of float) 0:263 move second child to first child ( temp 4-component vector of float) 0:263 'inF2' ( in 4-component vector of float) 0:263 cosine ( temp 4-component vector of float) 0:263 'inF0' ( in 4-component vector of float) 0:264 hyp. sine ( temp 4-component vector of float) 0:264 'inF0' ( in 4-component vector of float) 0:265 smoothstep ( temp 4-component vector of float) 0:265 'inF0' ( in 4-component vector of float) 0:265 'inF1' ( in 4-component vector of float) 0:265 'inF2' ( in 4-component vector of float) 0:266 sqrt ( temp 4-component vector of float) 0:266 'inF0' ( in 4-component vector of float) 0:267 step ( temp 4-component vector of float) 0:267 'inF0' ( in 4-component vector of float) 0:267 'inF1' ( in 4-component vector of float) 0:268 tangent ( temp 4-component vector of float) 0:268 'inF0' ( in 4-component vector of float) 0:269 hyp. tangent ( temp 4-component vector of float) 0:269 'inF0' ( in 4-component vector of float) 0:271 trunc ( temp 4-component vector of float) 0:271 'inF0' ( in 4-component vector of float) 0:274 Branch: Return with expression 0:274 Constant: 0:274 1.000000 0:274 2.000000 0:274 3.000000 0:274 4.000000 0:331 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) 0:331 Function Parameters: 0:331 'inF0' ( in 2X2 matrix of float) 0:331 'inF1' ( in 2X2 matrix of float) 0:331 'inF2' ( in 2X2 matrix of float) 0:? Sequence 0:333 all ( temp bool) 0:333 Convert float to bool ( temp 2X2 matrix of bool) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 Absolute value ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 arc cosine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 any ( temp bool) 0:333 Convert float to bool ( temp 2X2 matrix of bool) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 arc sine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 arc tangent ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 arc tangent ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 Ceiling ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 clamp ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 'inF2' ( in 2X2 matrix of float) 0:333 cosine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 hyp. cosine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 degrees ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 determinant ( temp float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 exp ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 exp2 ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 findMSB ( temp int) 0:333 Constant: 0:333 7 (const int) 0:333 findLSB ( temp int) 0:333 Constant: 0:333 7 (const int) 0:333 Floor ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 mod ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 Fraction ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 ldexp ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 mix ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 'inF2' ( in 2X2 matrix of float) 0:333 log ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 matrix-scale ( temp 2X2 matrix of float) 0:333 log2 ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 Constant: 0:333 0.301030 0:333 log2 ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 max ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 min ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 pow ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 radians ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 roundEven ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 inverse sqrt ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 clamp ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 Constant: 0:333 0.000000 0:333 Constant: 0:333 1.000000 0:333 Sign ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 sine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 Sequence 0:333 move second child to first child ( temp 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 sine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 move second child to first child ( temp 2X2 matrix of float) 0:333 'inF2' ( in 2X2 matrix of float) 0:333 cosine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 hyp. sine ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 smoothstep ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 'inF2' ( in 2X2 matrix of float) 0:333 sqrt ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 step ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 'inF1' ( in 2X2 matrix of float) 0:333 tangent ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 hyp. tangent ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 transpose ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:333 trunc ( temp 2X2 matrix of float) 0:333 'inF0' ( in 2X2 matrix of float) 0:336 Branch: Return with expression 0:336 Constant: 0:336 2.000000 0:336 2.000000 0:336 2.000000 0:336 2.000000 0:340 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) 0:340 Function Parameters: 0:340 'inF0' ( in 3X3 matrix of float) 0:340 'inF1' ( in 3X3 matrix of float) 0:340 'inF2' ( in 3X3 matrix of float) 0:? Sequence 0:342 all ( temp bool) 0:342 Convert float to bool ( temp 3X3 matrix of bool) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 Absolute value ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 arc cosine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 any ( temp bool) 0:342 Convert float to bool ( temp 3X3 matrix of bool) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 arc sine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 arc tangent ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 arc tangent ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 Ceiling ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 clamp ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 'inF2' ( in 3X3 matrix of float) 0:342 cosine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 hyp. cosine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 degrees ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 determinant ( temp float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 exp ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 exp2 ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 findMSB ( temp int) 0:342 Constant: 0:342 7 (const int) 0:342 findLSB ( temp int) 0:342 Constant: 0:342 7 (const int) 0:342 Floor ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 mod ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 Fraction ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 ldexp ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 mix ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 'inF2' ( in 3X3 matrix of float) 0:342 log ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 matrix-scale ( temp 3X3 matrix of float) 0:342 log2 ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 Constant: 0:342 0.301030 0:342 log2 ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 max ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 min ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 pow ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 radians ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 roundEven ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 inverse sqrt ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 clamp ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 Constant: 0:342 0.000000 0:342 Constant: 0:342 1.000000 0:342 Sign ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 sine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 Sequence 0:342 move second child to first child ( temp 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 sine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 move second child to first child ( temp 3X3 matrix of float) 0:342 'inF2' ( in 3X3 matrix of float) 0:342 cosine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 hyp. sine ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 smoothstep ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 'inF2' ( in 3X3 matrix of float) 0:342 sqrt ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 step ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 'inF1' ( in 3X3 matrix of float) 0:342 tangent ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 hyp. tangent ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 transpose ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:342 trunc ( temp 3X3 matrix of float) 0:342 'inF0' ( in 3X3 matrix of float) 0:345 Branch: Return with expression 0:345 Constant: 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:345 3.000000 0:349 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) 0:349 Function Parameters: 0:349 'inF0' ( in 4X4 matrix of float) 0:349 'inF1' ( in 4X4 matrix of float) 0:349 'inF2' ( in 4X4 matrix of float) 0:? Sequence 0:351 all ( temp bool) 0:351 Convert float to bool ( temp 4X4 matrix of bool) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 Absolute value ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 arc cosine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 any ( temp bool) 0:351 Convert float to bool ( temp 4X4 matrix of bool) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 arc sine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 arc tangent ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 arc tangent ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 Ceiling ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 clamp ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 'inF2' ( in 4X4 matrix of float) 0:351 cosine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 hyp. cosine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 degrees ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 determinant ( temp float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 exp ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 exp2 ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 findMSB ( temp int) 0:351 Constant: 0:351 7 (const int) 0:351 findLSB ( temp int) 0:351 Constant: 0:351 7 (const int) 0:351 Floor ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 mod ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 Fraction ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 ldexp ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 mix ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 'inF2' ( in 4X4 matrix of float) 0:351 log ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 matrix-scale ( temp 4X4 matrix of float) 0:351 log2 ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 Constant: 0:351 0.301030 0:351 log2 ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 max ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 min ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 pow ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 radians ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 roundEven ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 inverse sqrt ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 clamp ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 Constant: 0:351 0.000000 0:351 Constant: 0:351 1.000000 0:351 Sign ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 sine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 Sequence 0:351 move second child to first child ( temp 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 sine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 move second child to first child ( temp 4X4 matrix of float) 0:351 'inF2' ( in 4X4 matrix of float) 0:351 cosine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 hyp. sine ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 smoothstep ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 'inF2' ( in 4X4 matrix of float) 0:351 sqrt ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 step ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 'inF1' ( in 4X4 matrix of float) 0:351 tangent ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 hyp. tangent ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 transpose ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:351 trunc ( temp 4X4 matrix of float) 0:351 'inF0' ( in 4X4 matrix of float) 0:354 Branch: Return with expression 0:354 Constant: 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:354 4.000000 0:372 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void) 0:372 Function Parameters: 0:372 'inF0' ( in float) 0:372 'inF1' ( in float) 0:372 'inFV0' ( in 2-component vector of float) 0:372 'inFV1' ( in 2-component vector of float) 0:372 'inFM0' ( in 2X2 matrix of float) 0:372 'inFM1' ( in 2X2 matrix of float) 0:? Sequence 0:373 Sequence 0:373 move second child to first child ( temp float) 0:373 'r0' ( temp float) 0:373 component-wise multiply ( temp float) 0:373 'inF1' ( in float) 0:373 'inF0' ( in float) 0:373 Sequence 0:373 move second child to first child ( temp 2-component vector of float) 0:373 'r1' ( temp 2-component vector of float) 0:373 vector-scale ( temp 2-component vector of float) 0:373 'inF0' ( in float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 Sequence 0:373 move second child to first child ( temp 2-component vector of float) 0:373 'r2' ( temp 2-component vector of float) 0:373 vector-scale ( temp 2-component vector of float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 'inF0' ( in float) 0:373 Sequence 0:373 move second child to first child ( temp float) 0:373 'r3' ( temp float) 0:373 dot-product ( temp float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 'inFV1' ( in 2-component vector of float) 0:373 Sequence 0:373 move second child to first child ( temp 2-component vector of float) 0:373 'r4' ( temp 2-component vector of float) 0:373 vector-times-matrix ( temp 2-component vector of float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:373 Sequence 0:373 move second child to first child ( temp 2-component vector of float) 0:373 'r5' ( temp 2-component vector of float) 0:373 matrix-times-vector ( temp 2-component vector of float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:373 'inFV0' ( in 2-component vector of float) 0:373 Sequence 0:373 move second child to first child ( temp 2X2 matrix of float) 0:373 'r6' ( temp 2X2 matrix of float) 0:373 matrix-scale ( temp 2X2 matrix of float) 0:373 'inF0' ( in float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:373 Sequence 0:373 move second child to first child ( temp 2X2 matrix of float) 0:373 'r7' ( temp 2X2 matrix of float) 0:373 matrix-scale ( temp 2X2 matrix of float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:373 'inF0' ( in float) 0:373 Sequence 0:373 move second child to first child ( temp 2X2 matrix of float) 0:373 'r8' ( temp 2X2 matrix of float) 0:373 matrix-multiply ( temp 2X2 matrix of float) 0:373 'inFM1' ( in 2X2 matrix of float) 0:373 'inFM0' ( in 2X2 matrix of float) 0:379 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void) 0:379 Function Parameters: 0:379 'inF0' ( in float) 0:379 'inF1' ( in float) 0:379 'inFV0' ( in 3-component vector of float) 0:379 'inFV1' ( in 3-component vector of float) 0:379 'inFM0' ( in 3X3 matrix of float) 0:379 'inFM1' ( in 3X3 matrix of float) 0:? Sequence 0:380 Sequence 0:380 move second child to first child ( temp float) 0:380 'r0' ( temp float) 0:380 component-wise multiply ( temp float) 0:380 'inF1' ( in float) 0:380 'inF0' ( in float) 0:380 Sequence 0:380 move second child to first child ( temp 3-component vector of float) 0:380 'r1' ( temp 3-component vector of float) 0:380 vector-scale ( temp 3-component vector of float) 0:380 'inF0' ( in float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 Sequence 0:380 move second child to first child ( temp 3-component vector of float) 0:380 'r2' ( temp 3-component vector of float) 0:380 vector-scale ( temp 3-component vector of float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 'inF0' ( in float) 0:380 Sequence 0:380 move second child to first child ( temp float) 0:380 'r3' ( temp float) 0:380 dot-product ( temp float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 'inFV1' ( in 3-component vector of float) 0:380 Sequence 0:380 move second child to first child ( temp 3-component vector of float) 0:380 'r4' ( temp 3-component vector of float) 0:380 vector-times-matrix ( temp 3-component vector of float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:380 Sequence 0:380 move second child to first child ( temp 3-component vector of float) 0:380 'r5' ( temp 3-component vector of float) 0:380 matrix-times-vector ( temp 3-component vector of float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:380 'inFV0' ( in 3-component vector of float) 0:380 Sequence 0:380 move second child to first child ( temp 3X3 matrix of float) 0:380 'r6' ( temp 3X3 matrix of float) 0:380 matrix-scale ( temp 3X3 matrix of float) 0:380 'inF0' ( in float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:380 Sequence 0:380 move second child to first child ( temp 3X3 matrix of float) 0:380 'r7' ( temp 3X3 matrix of float) 0:380 matrix-scale ( temp 3X3 matrix of float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:380 'inF0' ( in float) 0:380 Sequence 0:380 move second child to first child ( temp 3X3 matrix of float) 0:380 'r8' ( temp 3X3 matrix of float) 0:380 matrix-multiply ( temp 3X3 matrix of float) 0:380 'inFM1' ( in 3X3 matrix of float) 0:380 'inFM0' ( in 3X3 matrix of float) 0:386 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void) 0:386 Function Parameters: 0:386 'inF0' ( in float) 0:386 'inF1' ( in float) 0:386 'inFV0' ( in 4-component vector of float) 0:386 'inFV1' ( in 4-component vector of float) 0:386 'inFM0' ( in 4X4 matrix of float) 0:386 'inFM1' ( in 4X4 matrix of float) 0:? Sequence 0:387 Sequence 0:387 move second child to first child ( temp float) 0:387 'r0' ( temp float) 0:387 component-wise multiply ( temp float) 0:387 'inF1' ( in float) 0:387 'inF0' ( in float) 0:387 Sequence 0:387 move second child to first child ( temp 4-component vector of float) 0:387 'r1' ( temp 4-component vector of float) 0:387 vector-scale ( temp 4-component vector of float) 0:387 'inF0' ( in float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 Sequence 0:387 move second child to first child ( temp 4-component vector of float) 0:387 'r2' ( temp 4-component vector of float) 0:387 vector-scale ( temp 4-component vector of float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 'inF0' ( in float) 0:387 Sequence 0:387 move second child to first child ( temp float) 0:387 'r3' ( temp float) 0:387 dot-product ( temp float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 'inFV1' ( in 4-component vector of float) 0:387 Sequence 0:387 move second child to first child ( temp 4-component vector of float) 0:387 'r4' ( temp 4-component vector of float) 0:387 vector-times-matrix ( temp 4-component vector of float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:387 Sequence 0:387 move second child to first child ( temp 4-component vector of float) 0:387 'r5' ( temp 4-component vector of float) 0:387 matrix-times-vector ( temp 4-component vector of float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:387 'inFV0' ( in 4-component vector of float) 0:387 Sequence 0:387 move second child to first child ( temp 4X4 matrix of float) 0:387 'r6' ( temp 4X4 matrix of float) 0:387 matrix-scale ( temp 4X4 matrix of float) 0:387 'inF0' ( in float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:387 Sequence 0:387 move second child to first child ( temp 4X4 matrix of float) 0:387 'r7' ( temp 4X4 matrix of float) 0:387 matrix-scale ( temp 4X4 matrix of float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:387 'inF0' ( in float) 0:387 Sequence 0:387 move second child to first child ( temp 4X4 matrix of float) 0:387 'r8' ( temp 4X4 matrix of float) 0:387 matrix-multiply ( temp 4X4 matrix of float) 0:387 'inFM1' ( in 4X4 matrix of float) 0:387 'inFM0' ( in 4X4 matrix of float) 0:396 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void) 0:396 Function Parameters: 0:396 'inF0' ( in float) 0:396 'inF1' ( in float) 0:396 'inFV2' ( in 2-component vector of float) 0:396 'inFV3' ( in 3-component vector of float) 0:396 'inFM2x3' ( in 2X3 matrix of float) 0:396 'inFM3x2' ( in 3X2 matrix of float) 0:396 'inFM3x3' ( in 3X3 matrix of float) 0:396 'inFM3x4' ( in 3X4 matrix of float) 0:396 'inFM2x4' ( in 2X4 matrix of float) 0:? Sequence 0:397 Sequence 0:397 move second child to first child ( temp float) 0:397 'r00' ( temp float) 0:397 component-wise multiply ( temp float) 0:397 'inF1' ( in float) 0:397 'inF0' ( in float) 0:398 Sequence 0:398 move second child to first child ( temp 2-component vector of float) 0:398 'r01' ( temp 2-component vector of float) 0:398 vector-scale ( temp 2-component vector of float) 0:398 'inF0' ( in float) 0:398 'inFV2' ( in 2-component vector of float) 0:399 Sequence 0:399 move second child to first child ( temp 3-component vector of float) 0:399 'r02' ( temp 3-component vector of float) 0:399 vector-scale ( temp 3-component vector of float) 0:399 'inF0' ( in float) 0:399 'inFV3' ( in 3-component vector of float) 0:400 Sequence 0:400 move second child to first child ( temp 2-component vector of float) 0:400 'r03' ( temp 2-component vector of float) 0:400 vector-scale ( temp 2-component vector of float) 0:400 'inFV2' ( in 2-component vector of float) 0:400 'inF0' ( in float) 0:401 Sequence 0:401 move second child to first child ( temp 3-component vector of float) 0:401 'r04' ( temp 3-component vector of float) 0:401 vector-scale ( temp 3-component vector of float) 0:401 'inFV3' ( in 3-component vector of float) 0:401 'inF0' ( in float) 0:402 Sequence 0:402 move second child to first child ( temp float) 0:402 'r05' ( temp float) 0:402 dot-product ( temp float) 0:402 'inFV2' ( in 2-component vector of float) 0:402 'inFV2' ( in 2-component vector of float) 0:403 Sequence 0:403 move second child to first child ( temp float) 0:403 'r06' ( temp float) 0:403 dot-product ( temp float) 0:403 'inFV3' ( in 3-component vector of float) 0:403 'inFV3' ( in 3-component vector of float) 0:404 Sequence 0:404 move second child to first child ( temp 3-component vector of float) 0:404 'r07' ( temp 3-component vector of float) 0:404 matrix-times-vector ( temp 3-component vector of float) 0:404 'inFM2x3' ( in 2X3 matrix of float) 0:404 'inFV2' ( in 2-component vector of float) 0:405 Sequence 0:405 move second child to first child ( temp 2-component vector of float) 0:405 'r08' ( temp 2-component vector of float) 0:405 matrix-times-vector ( temp 2-component vector of float) 0:405 'inFM3x2' ( in 3X2 matrix of float) 0:405 'inFV3' ( in 3-component vector of float) 0:406 Sequence 0:406 move second child to first child ( temp 2-component vector of float) 0:406 'r09' ( temp 2-component vector of float) 0:406 vector-times-matrix ( temp 2-component vector of float) 0:406 'inFV3' ( in 3-component vector of float) 0:406 'inFM2x3' ( in 2X3 matrix of float) 0:407 Sequence 0:407 move second child to first child ( temp 3-component vector of float) 0:407 'r10' ( temp 3-component vector of float) 0:407 vector-times-matrix ( temp 3-component vector of float) 0:407 'inFV2' ( in 2-component vector of float) 0:407 'inFM3x2' ( in 3X2 matrix of float) 0:408 Sequence 0:408 move second child to first child ( temp 2X3 matrix of float) 0:408 'r11' ( temp 2X3 matrix of float) 0:408 matrix-scale ( temp 2X3 matrix of float) 0:408 'inF0' ( in float) 0:408 'inFM2x3' ( in 2X3 matrix of float) 0:409 Sequence 0:409 move second child to first child ( temp 3X2 matrix of float) 0:409 'r12' ( temp 3X2 matrix of float) 0:409 matrix-scale ( temp 3X2 matrix of float) 0:409 'inF0' ( in float) 0:409 'inFM3x2' ( in 3X2 matrix of float) 0:410 Sequence 0:410 move second child to first child ( temp 2X2 matrix of float) 0:410 'r13' ( temp 2X2 matrix of float) 0:410 matrix-multiply ( temp 2X2 matrix of float) 0:410 'inFM3x2' ( in 3X2 matrix of float) 0:410 'inFM2x3' ( in 2X3 matrix of float) 0:411 Sequence 0:411 move second child to first child ( temp 2X3 matrix of float) 0:411 'r14' ( temp 2X3 matrix of float) 0:411 matrix-multiply ( temp 2X3 matrix of float) 0:411 'inFM3x3' ( in 3X3 matrix of float) 0:411 'inFM2x3' ( in 2X3 matrix of float) 0:412 Sequence 0:412 move second child to first child ( temp 2X4 matrix of float) 0:412 'r15' ( temp 2X4 matrix of float) 0:412 matrix-multiply ( temp 2X4 matrix of float) 0:412 'inFM3x4' ( in 3X4 matrix of float) 0:412 'inFM2x3' ( in 2X3 matrix of float) 0:413 Sequence 0:413 move second child to first child ( temp 3X4 matrix of float) 0:413 'r16' ( temp 3X4 matrix of float) 0:413 matrix-multiply ( temp 3X4 matrix of float) 0:413 'inFM2x4' ( in 2X4 matrix of float) 0:413 'inFM3x2' ( in 3X2 matrix of float) 0:? Linker Objects Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 1225 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "VertexShaderFunction" Source HLSL 500 Name 4 "VertexShaderFunction" Name 16 "VertexShaderFunctionS(f1;f1;f1;u1;u1;" Name 11 "inF0" Name 12 "inF1" Name 13 "inF2" Name 14 "inU0" Name 15 "inU1" Name 22 "VertexShaderFunction1(vf1;vf1;vf1;" Name 19 "inF0" Name 20 "inF1" Name 21 "inF2" Name 34 "VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2;" Name 29 "inF0" Name 30 "inF1" Name 31 "inF2" Name 32 "inU0" Name 33 "inU1" Name 46 "VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3;" Name 41 "inF0" Name 42 "inF1" Name 43 "inF2" Name 44 "inU0" Name 45 "inU1" Name 58 "VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4;" Name 53 "inF0" Name 54 "inF1" Name 55 "inF2" Name 56 "inU0" Name 57 "inU1" Name 66 "VertexShaderFunction2x2(mf22;mf22;mf22;" Name 63 "inF0" Name 64 "inF1" Name 65 "inF2" Name 74 "VertexShaderFunction3x3(mf33;mf33;mf33;" Name 71 "inF0" Name 72 "inF1" Name 73 "inF2" Name 82 "VertexShaderFunction4x4(mf44;mf44;mf44;" Name 79 "inF0" Name 80 "inF1" Name 81 "inF2" Name 91 "TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;" Name 85 "inF0" Name 86 "inF1" Name 87 "inFV0" Name 88 "inFV1" Name 89 "inFM0" Name 90 "inFM1" Name 100 "TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;" Name 94 "inF0" Name 95 "inF1" Name 96 "inFV0" Name 97 "inFV1" Name 98 "inFM0" Name 99 "inFM1" Name 109 "TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;" Name 103 "inF0" Name 104 "inF1" Name 105 "inFV0" Name 106 "inFV1" Name 107 "inFM0" Name 108 "inFM1" Name 129 "TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;" Name 120 "inF0" Name 121 "inF1" Name 122 "inFV2" Name 123 "inFV3" Name 124 "inFM2x3" Name 125 "inFM3x2" Name 126 "inFM3x3" Name 127 "inFM3x4" Name 128 "inFM2x4" Name 1049 "r0" Name 1053 "r1" Name 1057 "r2" Name 1061 "r3" Name 1065 "r4" Name 1069 "r5" Name 1073 "r6" Name 1077 "r7" Name 1081 "r8" Name 1085 "r0" Name 1089 "r1" Name 1093 "r2" Name 1097 "r3" Name 1101 "r4" Name 1105 "r5" Name 1109 "r6" Name 1113 "r7" Name 1117 "r8" Name 1121 "r0" Name 1125 "r1" Name 1129 "r2" Name 1133 "r3" Name 1137 "r4" Name 1141 "r5" Name 1145 "r6" Name 1149 "r7" Name 1153 "r8" Name 1157 "r00" Name 1161 "r01" Name 1165 "r02" Name 1169 "r03" Name 1173 "r04" Name 1177 "r05" Name 1181 "r06" Name 1185 "r07" Name 1189 "r08" Name 1193 "r09" Name 1197 "r10" Name 1201 "r11" Name 1205 "r12" Name 1209 "r13" Name 1213 "r14" Name 1217 "r15" Name 1221 "r16" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeInt 32 0 9: TypePointer Function 8(int) 10: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr) 9(ptr) 18: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 24: TypeVector 6(float) 2 25: TypePointer Function 24(fvec2) 26: TypeVector 8(int) 2 27: TypePointer Function 26(ivec2) 28: TypeFunction 24(fvec2) 25(ptr) 25(ptr) 25(ptr) 27(ptr) 27(ptr) 36: TypeVector 6(float) 3 37: TypePointer Function 36(fvec3) 38: TypeVector 8(int) 3 39: TypePointer Function 38(ivec3) 40: TypeFunction 36(fvec3) 37(ptr) 37(ptr) 37(ptr) 39(ptr) 39(ptr) 48: TypeVector 6(float) 4 49: TypePointer Function 48(fvec4) 50: TypeVector 8(int) 4 51: TypePointer Function 50(ivec4) 52: TypeFunction 48(fvec4) 49(ptr) 49(ptr) 49(ptr) 51(ptr) 51(ptr) 60: TypeMatrix 24(fvec2) 2 61: TypePointer Function 60 62: TypeFunction 60 61(ptr) 61(ptr) 61(ptr) 68: TypeMatrix 36(fvec3) 3 69: TypePointer Function 68 70: TypeFunction 68 69(ptr) 69(ptr) 69(ptr) 76: TypeMatrix 48(fvec4) 4 77: TypePointer Function 76 78: TypeFunction 76 77(ptr) 77(ptr) 77(ptr) 84: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 61(ptr) 61(ptr) 93: TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 69(ptr) 69(ptr) 102: TypeFunction 2 7(ptr) 7(ptr) 49(ptr) 49(ptr) 77(ptr) 77(ptr) 111: TypeMatrix 36(fvec3) 2 112: TypePointer Function 111 113: TypeMatrix 24(fvec2) 3 114: TypePointer Function 113 115: TypeMatrix 48(fvec4) 3 116: TypePointer Function 115 117: TypeMatrix 48(fvec4) 2 118: TypePointer Function 117 119: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr) 132: TypeBool 133: 6(float) Constant 0 146: TypeInt 32 1 167: 146(int) Constant 7 199: 6(float) Constant 1050288283 214: 146(int) Constant 2 221: 6(float) Constant 1065353216 253: TypeVector 132(bool) 2 254: 24(fvec2) ConstantComposite 133 133 267: TypeVector 146(int) 2 288: 146(int) Constant 3 289: 267(ivec2) ConstantComposite 167 288 354: 6(float) Constant 1073741824 356: 146(int) Constant 1 357: 267(ivec2) ConstantComposite 356 214 392: 24(fvec2) ConstantComposite 221 354 396: TypeVector 132(bool) 3 397: 36(fvec3) ConstantComposite 133 133 133 410: TypeVector 146(int) 3 431: 146(int) Constant 5 432: 410(ivec3) ConstantComposite 167 288 431 501: 410(ivec3) ConstantComposite 356 214 288 536: 6(float) Constant 1077936128 537: 36(fvec3) ConstantComposite 221 354 536 541: TypeVector 132(bool) 4 542: 48(fvec4) ConstantComposite 133 133 133 133 555: TypeVector 146(int) 4 576: 555(ivec4) ConstantComposite 167 288 431 214 586: 8(int) Constant 1 592: 8(int) Constant 2 595: 8(int) Constant 3 655: 146(int) Constant 4 656: 555(ivec4) ConstantComposite 356 214 288 655 691: 6(float) Constant 1082130432 692: 48(fvec4) ConstantComposite 221 354 536 691 696: TypeMatrix 253(bvec2) 2 806: 24(fvec2) ConstantComposite 354 354 807: 60 ConstantComposite 806 806 811: TypeMatrix 396(bvec3) 3 924: 36(fvec3) ConstantComposite 536 536 536 925: 68 ConstantComposite 924 924 924 929: TypeMatrix 541(bvec4) 4 1045: 48(fvec4) ConstantComposite 691 691 691 691 1046: 76 ConstantComposite 1045 1045 1045 1045 4(VertexShaderFunction): 2 Function None 3 5: Label Return FunctionEnd 16(VertexShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10 11(inF0): 7(ptr) FunctionParameter 12(inF1): 7(ptr) FunctionParameter 13(inF2): 7(ptr) FunctionParameter 14(inU0): 9(ptr) FunctionParameter 15(inU1): 9(ptr) FunctionParameter 17: Label 131: 6(float) Load 11(inF0) 134: 132(bool) FUnordNotEqual 131 133 135: 132(bool) All 134 136: 6(float) Load 11(inF0) 137: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 136 138: 6(float) Load 11(inF0) 139: 6(float) ExtInst 1(GLSL.std.450) 17(Acos) 138 140: 6(float) Load 11(inF0) 141: 132(bool) FUnordNotEqual 140 133 142: 132(bool) Any 141 143: 6(float) Load 11(inF0) 144: 6(float) ExtInst 1(GLSL.std.450) 16(Asin) 143 145: 6(float) Load 11(inF0) 147: 146(int) Bitcast 145 148: 6(float) Load 11(inF0) 149: 8(int) Bitcast 148 150: 8(int) Load 14(inU0) 151: 6(float) Bitcast 150 152: 6(float) Load 11(inF0) 153: 6(float) ExtInst 1(GLSL.std.450) 18(Atan) 152 154: 6(float) Load 11(inF0) 155: 6(float) Load 12(inF1) 156: 6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 154 155 157: 6(float) Load 11(inF0) 158: 6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 157 159: 6(float) Load 11(inF0) 160: 6(float) Load 12(inF1) 161: 6(float) Load 13(inF2) 162: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 159 160 161 163: 6(float) Load 11(inF0) 164: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 163 165: 6(float) Load 11(inF0) 166: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 165 168: 146(int) BitCount 167 169: 6(float) Load 11(inF0) 170: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 169 171: 6(float) Load 11(inF0) 172: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 171 173: 6(float) Load 11(inF0) 174: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 173 175: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167 176: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167 177: 6(float) Load 11(inF0) 178: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 177 179: 6(float) Load 11(inF0) 180: 6(float) Load 12(inF1) 181: 6(float) FMod 179 180 182: 6(float) Load 11(inF0) 183: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 182 184: 6(float) Load 11(inF0) 185: 132(bool) IsInf 184 186: 6(float) Load 11(inF0) 187: 132(bool) IsNan 186 188: 6(float) Load 11(inF0) 189: 6(float) Load 12(inF1) 190: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 188 189 191: 6(float) Load 11(inF0) 192: 6(float) Load 12(inF1) 193: 6(float) Load 13(inF2) 194: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 191 192 193 195: 6(float) Load 11(inF0) 196: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 195 197: 6(float) Load 11(inF0) 198: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 197 200: 6(float) FMul 198 199 201: 6(float) Load 11(inF0) 202: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 201 203: 6(float) Load 11(inF0) 204: 6(float) Load 12(inF1) 205: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 203 204 206: 6(float) Load 11(inF0) 207: 6(float) Load 12(inF1) 208: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 206 207 209: 6(float) Load 11(inF0) 210: 6(float) Load 12(inF1) 211: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 209 210 212: 6(float) Load 11(inF0) 213: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 212 215: 146(int) BitReverse 214 216: 6(float) Load 11(inF0) 217: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 216 218: 6(float) Load 11(inF0) 219: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 218 220: 6(float) Load 11(inF0) 222: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 220 133 221 223: 6(float) Load 11(inF0) 224: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 223 225: 6(float) Load 11(inF0) 226: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 225 227: 6(float) Load 11(inF0) 228: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 227 Store 12(inF1) 228 229: 6(float) Load 11(inF0) 230: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 229 Store 13(inF2) 230 231: 6(float) Load 11(inF0) 232: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 231 233: 6(float) Load 11(inF0) 234: 6(float) Load 12(inF1) 235: 6(float) Load 13(inF2) 236: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 233 234 235 237: 6(float) Load 11(inF0) 238: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 237 239: 6(float) Load 11(inF0) 240: 6(float) Load 12(inF1) 241: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 239 240 242: 6(float) Load 11(inF0) 243: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 242 244: 6(float) Load 11(inF0) 245: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 244 246: 6(float) Load 11(inF0) 247: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 246 ReturnValue 133 FunctionEnd 22(VertexShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 18 19(inF0): 7(ptr) FunctionParameter 20(inF1): 7(ptr) FunctionParameter 21(inF2): 7(ptr) FunctionParameter 23: Label ReturnValue 133 FunctionEnd 34(VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2;): 24(fvec2) Function None 28 29(inF0): 25(ptr) FunctionParameter 30(inF1): 25(ptr) FunctionParameter 31(inF2): 25(ptr) FunctionParameter 32(inU0): 27(ptr) FunctionParameter 33(inU1): 27(ptr) FunctionParameter 35: Label 252: 24(fvec2) Load 29(inF0) 255: 253(bvec2) FUnordNotEqual 252 254 256: 132(bool) All 255 257: 24(fvec2) Load 29(inF0) 258: 24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 257 259: 24(fvec2) Load 29(inF0) 260: 24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 259 261: 24(fvec2) Load 29(inF0) 262: 253(bvec2) FUnordNotEqual 261 254 263: 132(bool) Any 262 264: 24(fvec2) Load 29(inF0) 265: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 264 266: 24(fvec2) Load 29(inF0) 268: 267(ivec2) Bitcast 266 269: 24(fvec2) Load 29(inF0) 270: 26(ivec2) Bitcast 269 271: 26(ivec2) Load 32(inU0) 272: 24(fvec2) Bitcast 271 273: 24(fvec2) Load 29(inF0) 274: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 273 275: 24(fvec2) Load 29(inF0) 276: 24(fvec2) Load 30(inF1) 277: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 275 276 278: 24(fvec2) Load 29(inF0) 279: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 278 280: 24(fvec2) Load 29(inF0) 281: 24(fvec2) Load 30(inF1) 282: 24(fvec2) Load 31(inF2) 283: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 280 281 282 284: 24(fvec2) Load 29(inF0) 285: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 284 286: 24(fvec2) Load 29(inF0) 287: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 286 290: 267(ivec2) BitCount 289 291: 24(fvec2) Load 29(inF0) 292: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 291 293: 24(fvec2) Load 29(inF0) 294: 24(fvec2) Load 30(inF1) 295: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 293 294 296: 24(fvec2) Load 29(inF0) 297: 24(fvec2) Load 30(inF1) 298: 6(float) Dot 296 297 299: 24(fvec2) Load 29(inF0) 300: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 299 301: 24(fvec2) Load 29(inF0) 302: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 301 303: 24(fvec2) Load 29(inF0) 304: 24(fvec2) Load 30(inF1) 305: 24(fvec2) Load 31(inF2) 306: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 303 304 305 307: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167 308: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167 309: 24(fvec2) Load 29(inF0) 310: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 309 311: 24(fvec2) Load 29(inF0) 312: 24(fvec2) Load 30(inF1) 313: 24(fvec2) FMod 311 312 314: 24(fvec2) Load 29(inF0) 315: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 314 316: 24(fvec2) Load 29(inF0) 317: 253(bvec2) IsInf 316 318: 24(fvec2) Load 29(inF0) 319: 253(bvec2) IsNan 318 320: 24(fvec2) Load 29(inF0) 321: 24(fvec2) Load 30(inF1) 322: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 320 321 323: 24(fvec2) Load 29(inF0) 324: 24(fvec2) Load 30(inF1) 325: 24(fvec2) Load 31(inF2) 326: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 323 324 325 327: 24(fvec2) Load 29(inF0) 328: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 327 329: 24(fvec2) Load 29(inF0) 330: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 329 331: 24(fvec2) Load 29(inF0) 332: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 331 333: 24(fvec2) VectorTimesScalar 332 199 334: 24(fvec2) Load 29(inF0) 335: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 334 336: 24(fvec2) Load 29(inF0) 337: 24(fvec2) Load 30(inF1) 338: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 336 337 339: 24(fvec2) Load 29(inF0) 340: 24(fvec2) Load 30(inF1) 341: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 339 340 342: 24(fvec2) Load 29(inF0) 343: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 342 344: 24(fvec2) Load 29(inF0) 345: 24(fvec2) Load 30(inF1) 346: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 344 345 347: 24(fvec2) Load 29(inF0) 348: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 347 349: 24(fvec2) Load 29(inF0) 350: 24(fvec2) Load 30(inF1) 351: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 349 350 352: 24(fvec2) Load 29(inF0) 353: 24(fvec2) Load 30(inF1) 355: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 352 353 354 358: 267(ivec2) BitReverse 357 359: 24(fvec2) Load 29(inF0) 360: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 359 361: 24(fvec2) Load 29(inF0) 362: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 361 363: 24(fvec2) Load 29(inF0) 364: 24(fvec2) CompositeConstruct 133 133 365: 24(fvec2) CompositeConstruct 221 221 366: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 363 364 365 367: 24(fvec2) Load 29(inF0) 368: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 367 369: 24(fvec2) Load 29(inF0) 370: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 369 371: 24(fvec2) Load 29(inF0) 372: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 371 Store 30(inF1) 372 373: 24(fvec2) Load 29(inF0) 374: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 373 Store 31(inF2) 374 375: 24(fvec2) Load 29(inF0) 376: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 375 377: 24(fvec2) Load 29(inF0) 378: 24(fvec2) Load 30(inF1) 379: 24(fvec2) Load 31(inF2) 380: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 377 378 379 381: 24(fvec2) Load 29(inF0) 382: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 381 383: 24(fvec2) Load 29(inF0) 384: 24(fvec2) Load 30(inF1) 385: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 383 384 386: 24(fvec2) Load 29(inF0) 387: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 386 388: 24(fvec2) Load 29(inF0) 389: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 388 390: 24(fvec2) Load 29(inF0) 391: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 390 ReturnValue 392 FunctionEnd 46(VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40 41(inF0): 37(ptr) FunctionParameter 42(inF1): 37(ptr) FunctionParameter 43(inF2): 37(ptr) FunctionParameter 44(inU0): 39(ptr) FunctionParameter 45(inU1): 39(ptr) FunctionParameter 47: Label 395: 36(fvec3) Load 41(inF0) 398: 396(bvec3) FUnordNotEqual 395 397 399: 132(bool) All 398 400: 36(fvec3) Load 41(inF0) 401: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 400 402: 36(fvec3) Load 41(inF0) 403: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 402 404: 36(fvec3) Load 41(inF0) 405: 396(bvec3) FUnordNotEqual 404 397 406: 132(bool) Any 405 407: 36(fvec3) Load 41(inF0) 408: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 407 409: 36(fvec3) Load 41(inF0) 411: 410(ivec3) Bitcast 409 412: 36(fvec3) Load 41(inF0) 413: 38(ivec3) Bitcast 412 414: 38(ivec3) Load 44(inU0) 415: 36(fvec3) Bitcast 414 416: 36(fvec3) Load 41(inF0) 417: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 416 418: 36(fvec3) Load 41(inF0) 419: 36(fvec3) Load 42(inF1) 420: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 418 419 421: 36(fvec3) Load 41(inF0) 422: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 421 423: 36(fvec3) Load 41(inF0) 424: 36(fvec3) Load 42(inF1) 425: 36(fvec3) Load 43(inF2) 426: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 423 424 425 427: 36(fvec3) Load 41(inF0) 428: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 427 429: 36(fvec3) Load 41(inF0) 430: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 429 433: 410(ivec3) BitCount 432 434: 36(fvec3) Load 41(inF0) 435: 36(fvec3) Load 42(inF1) 436: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 434 435 437: 36(fvec3) Load 41(inF0) 438: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 437 439: 36(fvec3) Load 41(inF0) 440: 36(fvec3) Load 42(inF1) 441: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 439 440 442: 36(fvec3) Load 41(inF0) 443: 36(fvec3) Load 42(inF1) 444: 6(float) Dot 442 443 445: 36(fvec3) Load 41(inF0) 446: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 445 447: 36(fvec3) Load 41(inF0) 448: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 447 449: 36(fvec3) Load 41(inF0) 450: 36(fvec3) Load 42(inF1) 451: 36(fvec3) Load 43(inF2) 452: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 449 450 451 453: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167 454: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167 455: 36(fvec3) Load 41(inF0) 456: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 455 457: 36(fvec3) Load 41(inF0) 458: 36(fvec3) Load 42(inF1) 459: 36(fvec3) FMod 457 458 460: 36(fvec3) Load 41(inF0) 461: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 460 462: 36(fvec3) Load 41(inF0) 463: 396(bvec3) IsInf 462 464: 36(fvec3) Load 41(inF0) 465: 396(bvec3) IsNan 464 466: 36(fvec3) Load 41(inF0) 467: 36(fvec3) Load 42(inF1) 468: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 466 467 469: 36(fvec3) Load 41(inF0) 470: 36(fvec3) Load 42(inF1) 471: 36(fvec3) Load 43(inF2) 472: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 469 470 471 473: 36(fvec3) Load 41(inF0) 474: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 473 475: 36(fvec3) Load 41(inF0) 476: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 475 477: 36(fvec3) Load 41(inF0) 478: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 477 479: 36(fvec3) VectorTimesScalar 478 199 480: 36(fvec3) Load 41(inF0) 481: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 480 482: 36(fvec3) Load 41(inF0) 483: 36(fvec3) Load 42(inF1) 484: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 482 483 485: 36(fvec3) Load 41(inF0) 486: 36(fvec3) Load 42(inF1) 487: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 485 486 488: 36(fvec3) Load 41(inF0) 489: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 488 490: 36(fvec3) Load 41(inF0) 491: 36(fvec3) Load 42(inF1) 492: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 490 491 493: 36(fvec3) Load 41(inF0) 494: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 493 495: 36(fvec3) Load 41(inF0) 496: 36(fvec3) Load 42(inF1) 497: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 495 496 498: 36(fvec3) Load 41(inF0) 499: 36(fvec3) Load 42(inF1) 500: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 498 499 354 502: 410(ivec3) BitReverse 501 503: 36(fvec3) Load 41(inF0) 504: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 503 505: 36(fvec3) Load 41(inF0) 506: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 505 507: 36(fvec3) Load 41(inF0) 508: 36(fvec3) CompositeConstruct 133 133 133 509: 36(fvec3) CompositeConstruct 221 221 221 510: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 507 508 509 511: 36(fvec3) Load 41(inF0) 512: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 511 513: 36(fvec3) Load 41(inF0) 514: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 513 515: 36(fvec3) Load 41(inF0) 516: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 515 Store 42(inF1) 516 517: 36(fvec3) Load 41(inF0) 518: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 517 Store 43(inF2) 518 519: 36(fvec3) Load 41(inF0) 520: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 519 521: 36(fvec3) Load 41(inF0) 522: 36(fvec3) Load 42(inF1) 523: 36(fvec3) Load 43(inF2) 524: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 521 522 523 525: 36(fvec3) Load 41(inF0) 526: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 525 527: 36(fvec3) Load 41(inF0) 528: 36(fvec3) Load 42(inF1) 529: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 527 528 530: 36(fvec3) Load 41(inF0) 531: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 530 532: 36(fvec3) Load 41(inF0) 533: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 532 534: 36(fvec3) Load 41(inF0) 535: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 534 ReturnValue 537 FunctionEnd 58(VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52 53(inF0): 49(ptr) FunctionParameter 54(inF1): 49(ptr) FunctionParameter 55(inF2): 49(ptr) FunctionParameter 56(inU0): 51(ptr) FunctionParameter 57(inU1): 51(ptr) FunctionParameter 59: Label 540: 48(fvec4) Load 53(inF0) 543: 541(bvec4) FUnordNotEqual 540 542 544: 132(bool) All 543 545: 48(fvec4) Load 53(inF0) 546: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 545 547: 48(fvec4) Load 53(inF0) 548: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 547 549: 48(fvec4) Load 53(inF0) 550: 541(bvec4) FUnordNotEqual 549 542 551: 132(bool) Any 550 552: 48(fvec4) Load 53(inF0) 553: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 552 554: 48(fvec4) Load 53(inF0) 556: 555(ivec4) Bitcast 554 557: 48(fvec4) Load 53(inF0) 558: 50(ivec4) Bitcast 557 559: 50(ivec4) Load 56(inU0) 560: 48(fvec4) Bitcast 559 561: 48(fvec4) Load 53(inF0) 562: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 561 563: 48(fvec4) Load 53(inF0) 564: 48(fvec4) Load 54(inF1) 565: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 563 564 566: 48(fvec4) Load 53(inF0) 567: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 566 568: 48(fvec4) Load 53(inF0) 569: 48(fvec4) Load 54(inF1) 570: 48(fvec4) Load 55(inF2) 571: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 568 569 570 572: 48(fvec4) Load 53(inF0) 573: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 572 574: 48(fvec4) Load 53(inF0) 575: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 574 577: 555(ivec4) BitCount 576 578: 48(fvec4) Load 53(inF0) 579: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 578 580: 48(fvec4) Load 53(inF0) 581: 48(fvec4) Load 54(inF1) 582: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 580 581 583: 48(fvec4) Load 53(inF0) 584: 48(fvec4) Load 54(inF1) 585: 6(float) Dot 583 584 587: 7(ptr) AccessChain 53(inF0) 586 588: 6(float) Load 587 589: 7(ptr) AccessChain 54(inF1) 586 590: 6(float) Load 589 591: 6(float) FMul 588 590 593: 7(ptr) AccessChain 53(inF0) 592 594: 6(float) Load 593 596: 7(ptr) AccessChain 54(inF1) 595 597: 6(float) Load 596 598: 48(fvec4) CompositeConstruct 221 591 594 597 599: 48(fvec4) Load 53(inF0) 600: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 599 601: 48(fvec4) Load 53(inF0) 602: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 601 603: 48(fvec4) Load 53(inF0) 604: 48(fvec4) Load 54(inF1) 605: 48(fvec4) Load 55(inF2) 606: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 603 604 605 607: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167 608: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167 609: 48(fvec4) Load 53(inF0) 610: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 609 611: 48(fvec4) Load 53(inF0) 612: 48(fvec4) Load 54(inF1) 613: 48(fvec4) FMod 611 612 614: 48(fvec4) Load 53(inF0) 615: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 614 616: 48(fvec4) Load 53(inF0) 617: 541(bvec4) IsInf 616 618: 48(fvec4) Load 53(inF0) 619: 541(bvec4) IsNan 618 620: 48(fvec4) Load 53(inF0) 621: 48(fvec4) Load 54(inF1) 622: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 620 621 623: 48(fvec4) Load 53(inF0) 624: 48(fvec4) Load 54(inF1) 625: 48(fvec4) Load 55(inF2) 626: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 623 624 625 627: 48(fvec4) Load 53(inF0) 628: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 627 629: 48(fvec4) Load 53(inF0) 630: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 629 631: 48(fvec4) Load 53(inF0) 632: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 631 633: 48(fvec4) VectorTimesScalar 632 199 634: 48(fvec4) Load 53(inF0) 635: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 634 636: 48(fvec4) Load 53(inF0) 637: 48(fvec4) Load 54(inF1) 638: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 636 637 639: 48(fvec4) Load 53(inF0) 640: 48(fvec4) Load 54(inF1) 641: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 639 640 642: 48(fvec4) Load 53(inF0) 643: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 642 644: 48(fvec4) Load 53(inF0) 645: 48(fvec4) Load 54(inF1) 646: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 644 645 647: 48(fvec4) Load 53(inF0) 648: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 647 649: 48(fvec4) Load 53(inF0) 650: 48(fvec4) Load 54(inF1) 651: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 649 650 652: 48(fvec4) Load 53(inF0) 653: 48(fvec4) Load 54(inF1) 654: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 652 653 354 657: 555(ivec4) BitReverse 656 658: 48(fvec4) Load 53(inF0) 659: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 658 660: 48(fvec4) Load 53(inF0) 661: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 660 662: 48(fvec4) Load 53(inF0) 663: 48(fvec4) CompositeConstruct 133 133 133 133 664: 48(fvec4) CompositeConstruct 221 221 221 221 665: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 662 663 664 666: 48(fvec4) Load 53(inF0) 667: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 666 668: 48(fvec4) Load 53(inF0) 669: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 668 670: 48(fvec4) Load 53(inF0) 671: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 670 Store 54(inF1) 671 672: 48(fvec4) Load 53(inF0) 673: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 672 Store 55(inF2) 673 674: 48(fvec4) Load 53(inF0) 675: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 674 676: 48(fvec4) Load 53(inF0) 677: 48(fvec4) Load 54(inF1) 678: 48(fvec4) Load 55(inF2) 679: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 676 677 678 680: 48(fvec4) Load 53(inF0) 681: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 680 682: 48(fvec4) Load 53(inF0) 683: 48(fvec4) Load 54(inF1) 684: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 682 683 685: 48(fvec4) Load 53(inF0) 686: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 685 687: 48(fvec4) Load 53(inF0) 688: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 687 689: 48(fvec4) Load 53(inF0) 690: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 689 ReturnValue 692 FunctionEnd 66(VertexShaderFunction2x2(mf22;mf22;mf22;): 60 Function None 62 63(inF0): 61(ptr) FunctionParameter 64(inF1): 61(ptr) FunctionParameter 65(inF2): 61(ptr) FunctionParameter 67: Label 695: 60 Load 63(inF0) 697: 696 FUnordNotEqual 695 133 698: 132(bool) All 697 699: 60 Load 63(inF0) 700: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 699 701: 60 Load 63(inF0) 702: 60 ExtInst 1(GLSL.std.450) 17(Acos) 701 703: 60 Load 63(inF0) 704: 696 FUnordNotEqual 703 133 705: 132(bool) Any 704 706: 60 Load 63(inF0) 707: 60 ExtInst 1(GLSL.std.450) 16(Asin) 706 708: 60 Load 63(inF0) 709: 60 ExtInst 1(GLSL.std.450) 18(Atan) 708 710: 60 Load 63(inF0) 711: 60 Load 64(inF1) 712: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 710 711 713: 60 Load 63(inF0) 714: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 713 715: 60 Load 63(inF0) 716: 60 Load 64(inF1) 717: 60 Load 65(inF2) 718: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 715 716 717 719: 60 Load 63(inF0) 720: 60 ExtInst 1(GLSL.std.450) 14(Cos) 719 721: 60 Load 63(inF0) 722: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 721 723: 60 Load 63(inF0) 724: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 723 725: 60 Load 63(inF0) 726: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 725 727: 60 Load 63(inF0) 728: 60 ExtInst 1(GLSL.std.450) 27(Exp) 727 729: 60 Load 63(inF0) 730: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 729 731: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167 732: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167 733: 60 Load 63(inF0) 734: 60 ExtInst 1(GLSL.std.450) 8(Floor) 733 735: 60 Load 63(inF0) 736: 60 Load 64(inF1) 737: 24(fvec2) CompositeExtract 735 0 738: 24(fvec2) CompositeExtract 736 0 739: 24(fvec2) FMod 737 738 740: 24(fvec2) CompositeExtract 735 1 741: 24(fvec2) CompositeExtract 736 1 742: 24(fvec2) FMod 740 741 743: 60 CompositeConstruct 739 742 744: 60 Load 63(inF0) 745: 60 ExtInst 1(GLSL.std.450) 10(Fract) 744 746: 60 Load 63(inF0) 747: 60 Load 64(inF1) 748: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 746 747 749: 60 Load 63(inF0) 750: 60 Load 64(inF1) 751: 60 Load 65(inF2) 752: 60 ExtInst 1(GLSL.std.450) 46(FMix) 749 750 751 753: 60 Load 63(inF0) 754: 60 ExtInst 1(GLSL.std.450) 28(Log) 753 755: 60 Load 63(inF0) 756: 60 ExtInst 1(GLSL.std.450) 30(Log2) 755 757: 60 MatrixTimesScalar 756 199 758: 60 Load 63(inF0) 759: 60 ExtInst 1(GLSL.std.450) 30(Log2) 758 760: 60 Load 63(inF0) 761: 60 Load 64(inF1) 762: 60 ExtInst 1(GLSL.std.450) 40(FMax) 760 761 763: 60 Load 63(inF0) 764: 60 Load 64(inF1) 765: 60 ExtInst 1(GLSL.std.450) 37(FMin) 763 764 766: 60 Load 63(inF0) 767: 60 Load 64(inF1) 768: 60 ExtInst 1(GLSL.std.450) 26(Pow) 766 767 769: 60 Load 63(inF0) 770: 60 ExtInst 1(GLSL.std.450) 11(Radians) 769 771: 60 Load 63(inF0) 772: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 771 773: 60 Load 63(inF0) 774: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 773 775: 60 Load 63(inF0) 776: 24(fvec2) CompositeConstruct 133 133 777: 24(fvec2) CompositeConstruct 221 221 778: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 775 776 777 779: 60 Load 63(inF0) 780: 60 ExtInst 1(GLSL.std.450) 6(FSign) 779 781: 60 Load 63(inF0) 782: 60 ExtInst 1(GLSL.std.450) 13(Sin) 781 783: 60 Load 63(inF0) 784: 60 ExtInst 1(GLSL.std.450) 13(Sin) 783 Store 64(inF1) 784 785: 60 Load 63(inF0) 786: 60 ExtInst 1(GLSL.std.450) 14(Cos) 785 Store 65(inF2) 786 787: 60 Load 63(inF0) 788: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 787 789: 60 Load 63(inF0) 790: 60 Load 64(inF1) 791: 60 Load 65(inF2) 792: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 789 790 791 793: 60 Load 63(inF0) 794: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 793 795: 60 Load 63(inF0) 796: 60 Load 64(inF1) 797: 60 ExtInst 1(GLSL.std.450) 48(Step) 795 796 798: 60 Load 63(inF0) 799: 60 ExtInst 1(GLSL.std.450) 15(Tan) 798 800: 60 Load 63(inF0) 801: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 800 802: 60 Load 63(inF0) 803: 60 Transpose 802 804: 60 Load 63(inF0) 805: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 804 ReturnValue 807 FunctionEnd 74(VertexShaderFunction3x3(mf33;mf33;mf33;): 68 Function None 70 71(inF0): 69(ptr) FunctionParameter 72(inF1): 69(ptr) FunctionParameter 73(inF2): 69(ptr) FunctionParameter 75: Label 810: 68 Load 71(inF0) 812: 811 FUnordNotEqual 810 133 813: 132(bool) All 812 814: 68 Load 71(inF0) 815: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 814 816: 68 Load 71(inF0) 817: 68 ExtInst 1(GLSL.std.450) 17(Acos) 816 818: 68 Load 71(inF0) 819: 811 FUnordNotEqual 818 133 820: 132(bool) Any 819 821: 68 Load 71(inF0) 822: 68 ExtInst 1(GLSL.std.450) 16(Asin) 821 823: 68 Load 71(inF0) 824: 68 ExtInst 1(GLSL.std.450) 18(Atan) 823 825: 68 Load 71(inF0) 826: 68 Load 72(inF1) 827: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 825 826 828: 68 Load 71(inF0) 829: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 828 830: 68 Load 71(inF0) 831: 68 Load 72(inF1) 832: 68 Load 73(inF2) 833: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 830 831 832 834: 68 Load 71(inF0) 835: 68 ExtInst 1(GLSL.std.450) 14(Cos) 834 836: 68 Load 71(inF0) 837: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 836 838: 68 Load 71(inF0) 839: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 838 840: 68 Load 71(inF0) 841: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 840 842: 68 Load 71(inF0) 843: 68 ExtInst 1(GLSL.std.450) 27(Exp) 842 844: 68 Load 71(inF0) 845: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 844 846: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167 847: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167 848: 68 Load 71(inF0) 849: 68 ExtInst 1(GLSL.std.450) 8(Floor) 848 850: 68 Load 71(inF0) 851: 68 Load 72(inF1) 852: 36(fvec3) CompositeExtract 850 0 853: 36(fvec3) CompositeExtract 851 0 854: 36(fvec3) FMod 852 853 855: 36(fvec3) CompositeExtract 850 1 856: 36(fvec3) CompositeExtract 851 1 857: 36(fvec3) FMod 855 856 858: 36(fvec3) CompositeExtract 850 2 859: 36(fvec3) CompositeExtract 851 2 860: 36(fvec3) FMod 858 859 861: 68 CompositeConstruct 854 857 860 862: 68 Load 71(inF0) 863: 68 ExtInst 1(GLSL.std.450) 10(Fract) 862 864: 68 Load 71(inF0) 865: 68 Load 72(inF1) 866: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 864 865 867: 68 Load 71(inF0) 868: 68 Load 72(inF1) 869: 68 Load 73(inF2) 870: 68 ExtInst 1(GLSL.std.450) 46(FMix) 867 868 869 871: 68 Load 71(inF0) 872: 68 ExtInst 1(GLSL.std.450) 28(Log) 871 873: 68 Load 71(inF0) 874: 68 ExtInst 1(GLSL.std.450) 30(Log2) 873 875: 68 MatrixTimesScalar 874 199 876: 68 Load 71(inF0) 877: 68 ExtInst 1(GLSL.std.450) 30(Log2) 876 878: 68 Load 71(inF0) 879: 68 Load 72(inF1) 880: 68 ExtInst 1(GLSL.std.450) 40(FMax) 878 879 881: 68 Load 71(inF0) 882: 68 Load 72(inF1) 883: 68 ExtInst 1(GLSL.std.450) 37(FMin) 881 882 884: 68 Load 71(inF0) 885: 68 Load 72(inF1) 886: 68 ExtInst 1(GLSL.std.450) 26(Pow) 884 885 887: 68 Load 71(inF0) 888: 68 ExtInst 1(GLSL.std.450) 11(Radians) 887 889: 68 Load 71(inF0) 890: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 889 891: 68 Load 71(inF0) 892: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 891 893: 68 Load 71(inF0) 894: 36(fvec3) CompositeConstruct 133 133 133 895: 36(fvec3) CompositeConstruct 221 221 221 896: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 893 894 895 897: 68 Load 71(inF0) 898: 68 ExtInst 1(GLSL.std.450) 6(FSign) 897 899: 68 Load 71(inF0) 900: 68 ExtInst 1(GLSL.std.450) 13(Sin) 899 901: 68 Load 71(inF0) 902: 68 ExtInst 1(GLSL.std.450) 13(Sin) 901 Store 72(inF1) 902 903: 68 Load 71(inF0) 904: 68 ExtInst 1(GLSL.std.450) 14(Cos) 903 Store 73(inF2) 904 905: 68 Load 71(inF0) 906: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 905 907: 68 Load 71(inF0) 908: 68 Load 72(inF1) 909: 68 Load 73(inF2) 910: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 907 908 909 911: 68 Load 71(inF0) 912: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 911 913: 68 Load 71(inF0) 914: 68 Load 72(inF1) 915: 68 ExtInst 1(GLSL.std.450) 48(Step) 913 914 916: 68 Load 71(inF0) 917: 68 ExtInst 1(GLSL.std.450) 15(Tan) 916 918: 68 Load 71(inF0) 919: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 918 920: 68 Load 71(inF0) 921: 68 Transpose 920 922: 68 Load 71(inF0) 923: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 922 ReturnValue 925 FunctionEnd 82(VertexShaderFunction4x4(mf44;mf44;mf44;): 76 Function None 78 79(inF0): 77(ptr) FunctionParameter 80(inF1): 77(ptr) FunctionParameter 81(inF2): 77(ptr) FunctionParameter 83: Label 928: 76 Load 79(inF0) 930: 929 FUnordNotEqual 928 133 931: 132(bool) All 930 932: 76 Load 79(inF0) 933: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 932 934: 76 Load 79(inF0) 935: 76 ExtInst 1(GLSL.std.450) 17(Acos) 934 936: 76 Load 79(inF0) 937: 929 FUnordNotEqual 936 133 938: 132(bool) Any 937 939: 76 Load 79(inF0) 940: 76 ExtInst 1(GLSL.std.450) 16(Asin) 939 941: 76 Load 79(inF0) 942: 76 ExtInst 1(GLSL.std.450) 18(Atan) 941 943: 76 Load 79(inF0) 944: 76 Load 80(inF1) 945: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 943 944 946: 76 Load 79(inF0) 947: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 946 948: 76 Load 79(inF0) 949: 76 Load 80(inF1) 950: 76 Load 81(inF2) 951: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 948 949 950 952: 76 Load 79(inF0) 953: 76 ExtInst 1(GLSL.std.450) 14(Cos) 952 954: 76 Load 79(inF0) 955: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 954 956: 76 Load 79(inF0) 957: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 956 958: 76 Load 79(inF0) 959: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 958 960: 76 Load 79(inF0) 961: 76 ExtInst 1(GLSL.std.450) 27(Exp) 960 962: 76 Load 79(inF0) 963: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 962 964: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167 965: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167 966: 76 Load 79(inF0) 967: 76 ExtInst 1(GLSL.std.450) 8(Floor) 966 968: 76 Load 79(inF0) 969: 76 Load 80(inF1) 970: 48(fvec4) CompositeExtract 968 0 971: 48(fvec4) CompositeExtract 969 0 972: 48(fvec4) FMod 970 971 973: 48(fvec4) CompositeExtract 968 1 974: 48(fvec4) CompositeExtract 969 1 975: 48(fvec4) FMod 973 974 976: 48(fvec4) CompositeExtract 968 2 977: 48(fvec4) CompositeExtract 969 2 978: 48(fvec4) FMod 976 977 979: 48(fvec4) CompositeExtract 968 3 980: 48(fvec4) CompositeExtract 969 3 981: 48(fvec4) FMod 979 980 982: 76 CompositeConstruct 972 975 978 981 983: 76 Load 79(inF0) 984: 76 ExtInst 1(GLSL.std.450) 10(Fract) 983 985: 76 Load 79(inF0) 986: 76 Load 80(inF1) 987: 76 ExtInst 1(GLSL.std.450) 53(Ldexp) 985 986 988: 76 Load 79(inF0) 989: 76 Load 80(inF1) 990: 76 Load 81(inF2) 991: 76 ExtInst 1(GLSL.std.450) 46(FMix) 988 989 990 992: 76 Load 79(inF0) 993: 76 ExtInst 1(GLSL.std.450) 28(Log) 992 994: 76 Load 79(inF0) 995: 76 ExtInst 1(GLSL.std.450) 30(Log2) 994 996: 76 MatrixTimesScalar 995 199 997: 76 Load 79(inF0) 998: 76 ExtInst 1(GLSL.std.450) 30(Log2) 997 999: 76 Load 79(inF0) 1000: 76 Load 80(inF1) 1001: 76 ExtInst 1(GLSL.std.450) 40(FMax) 999 1000 1002: 76 Load 79(inF0) 1003: 76 Load 80(inF1) 1004: 76 ExtInst 1(GLSL.std.450) 37(FMin) 1002 1003 1005: 76 Load 79(inF0) 1006: 76 Load 80(inF1) 1007: 76 ExtInst 1(GLSL.std.450) 26(Pow) 1005 1006 1008: 76 Load 79(inF0) 1009: 76 ExtInst 1(GLSL.std.450) 11(Radians) 1008 1010: 76 Load 79(inF0) 1011: 76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1010 1012: 76 Load 79(inF0) 1013: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1012 1014: 76 Load 79(inF0) 1015: 48(fvec4) CompositeConstruct 133 133 133 133 1016: 48(fvec4) CompositeConstruct 221 221 221 221 1017: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1014 1015 1016 1018: 76 Load 79(inF0) 1019: 76 ExtInst 1(GLSL.std.450) 6(FSign) 1018 1020: 76 Load 79(inF0) 1021: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1020 1022: 76 Load 79(inF0) 1023: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1022 Store 80(inF1) 1023 1024: 76 Load 79(inF0) 1025: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1024 Store 81(inF2) 1025 1026: 76 Load 79(inF0) 1027: 76 ExtInst 1(GLSL.std.450) 19(Sinh) 1026 1028: 76 Load 79(inF0) 1029: 76 Load 80(inF1) 1030: 76 Load 81(inF2) 1031: 76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1028 1029 1030 1032: 76 Load 79(inF0) 1033: 76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1032 1034: 76 Load 79(inF0) 1035: 76 Load 80(inF1) 1036: 76 ExtInst 1(GLSL.std.450) 48(Step) 1034 1035 1037: 76 Load 79(inF0) 1038: 76 ExtInst 1(GLSL.std.450) 15(Tan) 1037 1039: 76 Load 79(inF0) 1040: 76 ExtInst 1(GLSL.std.450) 21(Tanh) 1039 1041: 76 Load 79(inF0) 1042: 76 Transpose 1041 1043: 76 Load 79(inF0) 1044: 76 ExtInst 1(GLSL.std.450) 3(Trunc) 1043 ReturnValue 1046 FunctionEnd 91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;): 2 Function None 84 85(inF0): 7(ptr) FunctionParameter 86(inF1): 7(ptr) FunctionParameter 87(inFV0): 25(ptr) FunctionParameter 88(inFV1): 25(ptr) FunctionParameter 89(inFM0): 61(ptr) FunctionParameter 90(inFM1): 61(ptr) FunctionParameter 92: Label 1049(r0): 7(ptr) Variable Function 1053(r1): 25(ptr) Variable Function 1057(r2): 25(ptr) Variable Function 1061(r3): 7(ptr) Variable Function 1065(r4): 25(ptr) Variable Function 1069(r5): 25(ptr) Variable Function 1073(r6): 61(ptr) Variable Function 1077(r7): 61(ptr) Variable Function 1081(r8): 61(ptr) Variable Function 1050: 6(float) Load 86(inF1) 1051: 6(float) Load 85(inF0) 1052: 6(float) FMul 1050 1051 Store 1049(r0) 1052 1054: 6(float) Load 85(inF0) 1055: 24(fvec2) Load 87(inFV0) 1056: 24(fvec2) VectorTimesScalar 1055 1054 Store 1053(r1) 1056 1058: 24(fvec2) Load 87(inFV0) 1059: 6(float) Load 85(inF0) 1060: 24(fvec2) VectorTimesScalar 1058 1059 Store 1057(r2) 1060 1062: 24(fvec2) Load 87(inFV0) 1063: 24(fvec2) Load 88(inFV1) 1064: 6(float) Dot 1062 1063 Store 1061(r3) 1064 1066: 24(fvec2) Load 87(inFV0) 1067: 60 Load 89(inFM0) 1068: 24(fvec2) VectorTimesMatrix 1066 1067 Store 1065(r4) 1068 1070: 60 Load 89(inFM0) 1071: 24(fvec2) Load 87(inFV0) 1072: 24(fvec2) MatrixTimesVector 1070 1071 Store 1069(r5) 1072 1074: 6(float) Load 85(inF0) 1075: 60 Load 89(inFM0) 1076: 60 MatrixTimesScalar 1075 1074 Store 1073(r6) 1076 1078: 60 Load 89(inFM0) 1079: 6(float) Load 85(inF0) 1080: 60 MatrixTimesScalar 1078 1079 Store 1077(r7) 1080 1082: 60 Load 90(inFM1) 1083: 60 Load 89(inFM0) 1084: 60 MatrixTimesMatrix 1082 1083 Store 1081(r8) 1084 Return FunctionEnd 100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 93 94(inF0): 7(ptr) FunctionParameter 95(inF1): 7(ptr) FunctionParameter 96(inFV0): 37(ptr) FunctionParameter 97(inFV1): 37(ptr) FunctionParameter 98(inFM0): 69(ptr) FunctionParameter 99(inFM1): 69(ptr) FunctionParameter 101: Label 1085(r0): 7(ptr) Variable Function 1089(r1): 37(ptr) Variable Function 1093(r2): 37(ptr) Variable Function 1097(r3): 7(ptr) Variable Function 1101(r4): 37(ptr) Variable Function 1105(r5): 37(ptr) Variable Function 1109(r6): 69(ptr) Variable Function 1113(r7): 69(ptr) Variable Function 1117(r8): 69(ptr) Variable Function 1086: 6(float) Load 95(inF1) 1087: 6(float) Load 94(inF0) 1088: 6(float) FMul 1086 1087 Store 1085(r0) 1088 1090: 6(float) Load 94(inF0) 1091: 36(fvec3) Load 96(inFV0) 1092: 36(fvec3) VectorTimesScalar 1091 1090 Store 1089(r1) 1092 1094: 36(fvec3) Load 96(inFV0) 1095: 6(float) Load 94(inF0) 1096: 36(fvec3) VectorTimesScalar 1094 1095 Store 1093(r2) 1096 1098: 36(fvec3) Load 96(inFV0) 1099: 36(fvec3) Load 97(inFV1) 1100: 6(float) Dot 1098 1099 Store 1097(r3) 1100 1102: 36(fvec3) Load 96(inFV0) 1103: 68 Load 98(inFM0) 1104: 36(fvec3) VectorTimesMatrix 1102 1103 Store 1101(r4) 1104 1106: 68 Load 98(inFM0) 1107: 36(fvec3) Load 96(inFV0) 1108: 36(fvec3) MatrixTimesVector 1106 1107 Store 1105(r5) 1108 1110: 6(float) Load 94(inF0) 1111: 68 Load 98(inFM0) 1112: 68 MatrixTimesScalar 1111 1110 Store 1109(r6) 1112 1114: 68 Load 98(inFM0) 1115: 6(float) Load 94(inF0) 1116: 68 MatrixTimesScalar 1114 1115 Store 1113(r7) 1116 1118: 68 Load 99(inFM1) 1119: 68 Load 98(inFM0) 1120: 68 MatrixTimesMatrix 1118 1119 Store 1117(r8) 1120 Return FunctionEnd 109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 102 103(inF0): 7(ptr) FunctionParameter 104(inF1): 7(ptr) FunctionParameter 105(inFV0): 49(ptr) FunctionParameter 106(inFV1): 49(ptr) FunctionParameter 107(inFM0): 77(ptr) FunctionParameter 108(inFM1): 77(ptr) FunctionParameter 110: Label 1121(r0): 7(ptr) Variable Function 1125(r1): 49(ptr) Variable Function 1129(r2): 49(ptr) Variable Function 1133(r3): 7(ptr) Variable Function 1137(r4): 49(ptr) Variable Function 1141(r5): 49(ptr) Variable Function 1145(r6): 77(ptr) Variable Function 1149(r7): 77(ptr) Variable Function 1153(r8): 77(ptr) Variable Function 1122: 6(float) Load 104(inF1) 1123: 6(float) Load 103(inF0) 1124: 6(float) FMul 1122 1123 Store 1121(r0) 1124 1126: 6(float) Load 103(inF0) 1127: 48(fvec4) Load 105(inFV0) 1128: 48(fvec4) VectorTimesScalar 1127 1126 Store 1125(r1) 1128 1130: 48(fvec4) Load 105(inFV0) 1131: 6(float) Load 103(inF0) 1132: 48(fvec4) VectorTimesScalar 1130 1131 Store 1129(r2) 1132 1134: 48(fvec4) Load 105(inFV0) 1135: 48(fvec4) Load 106(inFV1) 1136: 6(float) Dot 1134 1135 Store 1133(r3) 1136 1138: 48(fvec4) Load 105(inFV0) 1139: 76 Load 107(inFM0) 1140: 48(fvec4) VectorTimesMatrix 1138 1139 Store 1137(r4) 1140 1142: 76 Load 107(inFM0) 1143: 48(fvec4) Load 105(inFV0) 1144: 48(fvec4) MatrixTimesVector 1142 1143 Store 1141(r5) 1144 1146: 6(float) Load 103(inF0) 1147: 76 Load 107(inFM0) 1148: 76 MatrixTimesScalar 1147 1146 Store 1145(r6) 1148 1150: 76 Load 107(inFM0) 1151: 6(float) Load 103(inF0) 1152: 76 MatrixTimesScalar 1150 1151 Store 1149(r7) 1152 1154: 76 Load 108(inFM1) 1155: 76 Load 107(inFM0) 1156: 76 MatrixTimesMatrix 1154 1155 Store 1153(r8) 1156 Return FunctionEnd 129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 119 120(inF0): 7(ptr) FunctionParameter 121(inF1): 7(ptr) FunctionParameter 122(inFV2): 25(ptr) FunctionParameter 123(inFV3): 37(ptr) FunctionParameter 124(inFM2x3): 112(ptr) FunctionParameter 125(inFM3x2): 114(ptr) FunctionParameter 126(inFM3x3): 69(ptr) FunctionParameter 127(inFM3x4): 116(ptr) FunctionParameter 128(inFM2x4): 118(ptr) FunctionParameter 130: Label 1157(r00): 7(ptr) Variable Function 1161(r01): 25(ptr) Variable Function 1165(r02): 37(ptr) Variable Function 1169(r03): 25(ptr) Variable Function 1173(r04): 37(ptr) Variable Function 1177(r05): 7(ptr) Variable Function 1181(r06): 7(ptr) Variable Function 1185(r07): 37(ptr) Variable Function 1189(r08): 25(ptr) Variable Function 1193(r09): 25(ptr) Variable Function 1197(r10): 37(ptr) Variable Function 1201(r11): 112(ptr) Variable Function 1205(r12): 114(ptr) Variable Function 1209(r13): 61(ptr) Variable Function 1213(r14): 112(ptr) Variable Function 1217(r15): 118(ptr) Variable Function 1221(r16): 116(ptr) Variable Function 1158: 6(float) Load 121(inF1) 1159: 6(float) Load 120(inF0) 1160: 6(float) FMul 1158 1159 Store 1157(r00) 1160 1162: 6(float) Load 120(inF0) 1163: 24(fvec2) Load 122(inFV2) 1164: 24(fvec2) VectorTimesScalar 1163 1162 Store 1161(r01) 1164 1166: 6(float) Load 120(inF0) 1167: 36(fvec3) Load 123(inFV3) 1168: 36(fvec3) VectorTimesScalar 1167 1166 Store 1165(r02) 1168 1170: 24(fvec2) Load 122(inFV2) 1171: 6(float) Load 120(inF0) 1172: 24(fvec2) VectorTimesScalar 1170 1171 Store 1169(r03) 1172 1174: 36(fvec3) Load 123(inFV3) 1175: 6(float) Load 120(inF0) 1176: 36(fvec3) VectorTimesScalar 1174 1175 Store 1173(r04) 1176 1178: 24(fvec2) Load 122(inFV2) 1179: 24(fvec2) Load 122(inFV2) 1180: 6(float) Dot 1178 1179 Store 1177(r05) 1180 1182: 36(fvec3) Load 123(inFV3) 1183: 36(fvec3) Load 123(inFV3) 1184: 6(float) Dot 1182 1183 Store 1181(r06) 1184 1186: 111 Load 124(inFM2x3) 1187: 24(fvec2) Load 122(inFV2) 1188: 36(fvec3) MatrixTimesVector 1186 1187 Store 1185(r07) 1188 1190: 113 Load 125(inFM3x2) 1191: 36(fvec3) Load 123(inFV3) 1192: 24(fvec2) MatrixTimesVector 1190 1191 Store 1189(r08) 1192 1194: 36(fvec3) Load 123(inFV3) 1195: 111 Load 124(inFM2x3) 1196: 24(fvec2) VectorTimesMatrix 1194 1195 Store 1193(r09) 1196 1198: 24(fvec2) Load 122(inFV2) 1199: 113 Load 125(inFM3x2) 1200: 36(fvec3) VectorTimesMatrix 1198 1199 Store 1197(r10) 1200 1202: 6(float) Load 120(inF0) 1203: 111 Load 124(inFM2x3) 1204: 111 MatrixTimesScalar 1203 1202 Store 1201(r11) 1204 1206: 6(float) Load 120(inF0) 1207: 113 Load 125(inFM3x2) 1208: 113 MatrixTimesScalar 1207 1206 Store 1205(r12) 1208 1210: 113 Load 125(inFM3x2) 1211: 111 Load 124(inFM2x3) 1212: 60 MatrixTimesMatrix 1210 1211 Store 1209(r13) 1212 1214: 68 Load 126(inFM3x3) 1215: 111 Load 124(inFM2x3) 1216: 111 MatrixTimesMatrix 1214 1215 Store 1213(r14) 1216 1218: 115 Load 127(inFM3x4) 1219: 111 Load 124(inFM2x3) 1220: 117 MatrixTimesMatrix 1218 1219 Store 1217(r15) 1220 1222: 117 Load 128(inFM2x4) 1223: 113 Load 125(inFM3x2) 1224: 115 MatrixTimesMatrix 1222 1223 Store 1221(r16) 1224 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.isfinite.frag.out000066400000000000000000000340251506534232700226750ustar00rootroot00000000000000hlsl.isfinite.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: test1(f1; ( temp bool) 0:7 Function Parameters: 0:7 'v' ( in float) 0:? Sequence 0:8 Branch: Return with expression 0:8 logical-and ( temp bool) 0:8 Negate conditional ( temp bool) 0:8 isnan ( temp bool) 0:8 'v' ( in float) 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 '@finitetmp' ( temp float) 0:8 'v' ( in float) 0:8 logical-and ( temp bool) 0:8 Negate conditional ( temp bool) 0:8 isnan ( temp bool) 0:8 '@finitetmp' ( temp float) 0:8 Negate conditional ( temp bool) 0:8 isinf ( temp bool) 0:8 '@finitetmp' ( temp float) 0:12 Function Definition: @main( ( temp 4-component vector of float) 0:12 Function Parameters: 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp float) 0:13 '@finitetmp' ( temp float) 0:13 f: direct index for structure ( uniform float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3}) 0:13 Constant: 0:13 0 (const uint) 0:13 logical-and ( temp bool) 0:13 Negate conditional ( temp bool) 0:13 isnan ( temp bool) 0:13 '@finitetmp' ( temp float) 0:13 Negate conditional ( temp bool) 0:13 isinf ( temp bool) 0:13 '@finitetmp' ( temp float) 0:14 Sequence 0:14 move second child to first child ( temp 2-component vector of float) 0:14 '@finitetmp' ( temp 2-component vector of float) 0:14 f2: direct index for structure ( uniform 2-component vector of float) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3}) 0:14 Constant: 0:14 1 (const uint) 0:14 logical-and ( temp 2-component vector of bool) 0:14 Negate conditional ( temp 2-component vector of bool) 0:14 isnan ( temp 2-component vector of bool) 0:14 '@finitetmp' ( temp 2-component vector of float) 0:14 Negate conditional ( temp 2-component vector of bool) 0:14 isinf ( temp 2-component vector of bool) 0:14 '@finitetmp' ( temp 2-component vector of float) 0:15 Sequence 0:15 move second child to first child ( temp 3-component vector of float) 0:15 '@finitetmp' ( temp 3-component vector of float) 0:15 f3: direct index for structure ( uniform 3-component vector of float) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3}) 0:15 Constant: 0:15 2 (const uint) 0:15 logical-and ( temp 3-component vector of bool) 0:15 Negate conditional ( temp 3-component vector of bool) 0:15 isnan ( temp 3-component vector of bool) 0:15 '@finitetmp' ( temp 3-component vector of float) 0:15 Negate conditional ( temp 3-component vector of bool) 0:15 isinf ( temp 3-component vector of bool) 0:15 '@finitetmp' ( temp 3-component vector of float) 0:17 Branch: Return with expression 0:17 Constant: 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: test1(f1; ( temp bool) 0:7 Function Parameters: 0:7 'v' ( in float) 0:? Sequence 0:8 Branch: Return with expression 0:8 logical-and ( temp bool) 0:8 Negate conditional ( temp bool) 0:8 isnan ( temp bool) 0:8 'v' ( in float) 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 '@finitetmp' ( temp float) 0:8 'v' ( in float) 0:8 logical-and ( temp bool) 0:8 Negate conditional ( temp bool) 0:8 isnan ( temp bool) 0:8 '@finitetmp' ( temp float) 0:8 Negate conditional ( temp bool) 0:8 isinf ( temp bool) 0:8 '@finitetmp' ( temp float) 0:12 Function Definition: @main( ( temp 4-component vector of float) 0:12 Function Parameters: 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp float) 0:13 '@finitetmp' ( temp float) 0:13 f: direct index for structure ( uniform float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3}) 0:13 Constant: 0:13 0 (const uint) 0:13 logical-and ( temp bool) 0:13 Negate conditional ( temp bool) 0:13 isnan ( temp bool) 0:13 '@finitetmp' ( temp float) 0:13 Negate conditional ( temp bool) 0:13 isinf ( temp bool) 0:13 '@finitetmp' ( temp float) 0:14 Sequence 0:14 move second child to first child ( temp 2-component vector of float) 0:14 '@finitetmp' ( temp 2-component vector of float) 0:14 f2: direct index for structure ( uniform 2-component vector of float) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3}) 0:14 Constant: 0:14 1 (const uint) 0:14 logical-and ( temp 2-component vector of bool) 0:14 Negate conditional ( temp 2-component vector of bool) 0:14 isnan ( temp 2-component vector of bool) 0:14 '@finitetmp' ( temp 2-component vector of float) 0:14 Negate conditional ( temp 2-component vector of bool) 0:14 isinf ( temp 2-component vector of bool) 0:14 '@finitetmp' ( temp 2-component vector of float) 0:15 Sequence 0:15 move second child to first child ( temp 3-component vector of float) 0:15 '@finitetmp' ( temp 3-component vector of float) 0:15 f3: direct index for structure ( uniform 3-component vector of float) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3}) 0:15 Constant: 0:15 2 (const uint) 0:15 logical-and ( temp 3-component vector of bool) 0:15 Negate conditional ( temp 3-component vector of bool) 0:15 isnan ( temp 3-component vector of bool) 0:15 '@finitetmp' ( temp 3-component vector of float) 0:15 Negate conditional ( temp 3-component vector of bool) 0:15 isinf ( temp 3-component vector of bool) 0:15 '@finitetmp' ( temp 3-component vector of float) 0:17 Branch: Return with expression 0:17 Constant: 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 85 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 83 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "test1(f1;" Name 10 "v" Name 15 "@main(" Name 20 "@finitetmp" Name 32 "@finitetmp" Name 35 "$Global" MemberName 35($Global) 0 "f" MemberName 35($Global) 1 "f2" MemberName 35($Global) 2 "f3" Name 37 "" Name 51 "@finitetmp" Name 65 "@finitetmp" Name 83 "@entryPointOutput" Decorate 35($Global) Block MemberDecorate 35($Global) 0 Offset 0 MemberDecorate 35($Global) 1 Offset 8 MemberDecorate 35($Global) 2 Offset 16 Decorate 37 Binding 0 Decorate 37 DescriptorSet 0 Decorate 83(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeBool 9: TypeFunction 8(bool) 7(ptr) 13: TypeVector 6(float) 4 14: TypeFunction 13(fvec4) 33: TypeVector 6(float) 2 34: TypeVector 6(float) 3 35($Global): TypeStruct 6(float) 33(fvec2) 34(fvec3) 36: TypePointer Uniform 35($Global) 37: 36(ptr) Variable Uniform 38: TypeInt 32 1 39: 38(int) Constant 0 40: TypePointer Uniform 6(float) 50: TypePointer Function 33(fvec2) 52: 38(int) Constant 1 53: TypePointer Uniform 33(fvec2) 57: TypeVector 8(bool) 2 64: TypePointer Function 34(fvec3) 66: 38(int) Constant 2 67: TypePointer Uniform 34(fvec3) 71: TypeVector 8(bool) 3 78: 6(float) Constant 0 79: 13(fvec4) ConstantComposite 78 78 78 78 82: TypePointer Output 13(fvec4) 83(@entryPointOutput): 82(ptr) Variable Output 4(main): 2 Function None 3 5: Label 84: 13(fvec4) FunctionCall 15(@main() Store 83(@entryPointOutput) 84 Return FunctionEnd 11(test1(f1;): 8(bool) Function None 9 10(v): 7(ptr) FunctionParameter 12: Label 20(@finitetmp): 7(ptr) Variable Function 17: 6(float) Load 10(v) 18: 8(bool) IsNan 17 19: 8(bool) LogicalNot 18 21: 6(float) Load 10(v) Store 20(@finitetmp) 21 22: 6(float) Load 20(@finitetmp) 23: 8(bool) IsNan 22 24: 8(bool) LogicalNot 23 25: 6(float) Load 20(@finitetmp) 26: 8(bool) IsInf 25 27: 8(bool) LogicalNot 26 28: 8(bool) LogicalAnd 24 27 29: 8(bool) LogicalAnd 19 28 ReturnValue 29 FunctionEnd 15(@main(): 13(fvec4) Function None 14 16: Label 32(@finitetmp): 7(ptr) Variable Function 51(@finitetmp): 50(ptr) Variable Function 65(@finitetmp): 64(ptr) Variable Function 41: 40(ptr) AccessChain 37 39 42: 6(float) Load 41 Store 32(@finitetmp) 42 43: 6(float) Load 32(@finitetmp) 44: 8(bool) IsNan 43 45: 8(bool) LogicalNot 44 46: 6(float) Load 32(@finitetmp) 47: 8(bool) IsInf 46 48: 8(bool) LogicalNot 47 49: 8(bool) LogicalAnd 45 48 54: 53(ptr) AccessChain 37 52 55: 33(fvec2) Load 54 Store 51(@finitetmp) 55 56: 33(fvec2) Load 51(@finitetmp) 58: 57(bvec2) IsNan 56 59: 57(bvec2) LogicalNot 58 60: 33(fvec2) Load 51(@finitetmp) 61: 57(bvec2) IsInf 60 62: 57(bvec2) LogicalNot 61 63: 57(bvec2) LogicalAnd 59 62 68: 67(ptr) AccessChain 37 66 69: 34(fvec3) Load 68 Store 65(@finitetmp) 69 70: 34(fvec3) Load 65(@finitetmp) 72: 71(bvec3) IsNan 70 73: 71(bvec3) LogicalNot 72 74: 34(fvec3) Load 65(@finitetmp) 75: 71(bvec3) IsInf 74 76: 71(bvec3) LogicalNot 75 77: 71(bvec3) LogicalAnd 73 76 ReturnValue 79 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.layout.frag.out000066400000000000000000000227261506534232700224050ustar00rootroot00000000000000hlsl.layout.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:16 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:16 Function Parameters: 0:16 'input' ( in 4-component vector of float) 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'layout' ( temp 4-component vector of float) 0:17 Constant: 0:17 2.000000 0:17 2.000000 0:17 2.000000 0:17 2.000000 0:18 Branch: Return with expression 0:18 add ( temp 4-component vector of float) 0:18 add ( temp 4-component vector of float) 0:18 add ( temp 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float) 0:18 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1}) 0:18 Constant: 0:18 0 (const uint) 0:18 v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float) 0:18 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5}) 0:18 Constant: 0:18 0 (const uint) 0:18 component-wise multiply ( temp 4-component vector of float) 0:18 v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float) 0:18 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout}) 0:18 Constant: 0:18 0 (const uint) 0:18 'layout' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1}) 0:? 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5}) 0:? 'specConst' ( specialization-constant const int) 0:? 10 (const int) 0:? 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout}) Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:16 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:16 Function Parameters: 0:16 'input' ( in 4-component vector of float) 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'layout' ( temp 4-component vector of float) 0:17 Constant: 0:17 2.000000 0:17 2.000000 0:17 2.000000 0:17 2.000000 0:18 Branch: Return with expression 0:18 add ( temp 4-component vector of float) 0:18 add ( temp 4-component vector of float) 0:18 add ( temp 4-component vector of float) 0:18 'input' ( in 4-component vector of float) 0:18 v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float) 0:18 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1}) 0:18 Constant: 0:18 0 (const uint) 0:18 v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float) 0:18 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5}) 0:18 Constant: 0:18 0 (const uint) 0:18 component-wise multiply ( temp 4-component vector of float) 0:18 v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float) 0:18 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout}) 0:18 Constant: 0:18 0 (const uint) 0:18 'layout' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1}) 0:? 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5}) 0:? 'specConst' ( specialization-constant const int) 0:? 10 (const int) 0:? 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout}) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "PixelShaderFunction(vf4;" Name 10 "input" Name 13 "layout" Name 17 "tbufName" MemberName 17(tbufName) 0 "v1" Name 19 "" Name 26 "tbufName2" MemberName 26(tbufName2) 0 "v5" Name 28 "" Name 33 "tbufName2" MemberName 33(tbufName2) 0 "v1PostLayout" Name 35 "" Name 43 "specConst" Decorate 17(tbufName) BufferBlock MemberDecorate 17(tbufName) 0 NonWritable MemberDecorate 17(tbufName) 0 Offset 16 Decorate 19 NonWritable Decorate 19 Binding 5 Decorate 19 DescriptorSet 3 Decorate 26(tbufName2) BufferBlock MemberDecorate 26(tbufName2) 0 NonWritable MemberDecorate 26(tbufName2) 0 Offset 0 Decorate 28 NonWritable Decorate 33(tbufName2) BufferBlock MemberDecorate 33(tbufName2) 0 NonWritable MemberDecorate 33(tbufName2) 0 Offset 16 Decorate 35 NonWritable Decorate 35 Binding 7 Decorate 35 DescriptorSet 4 Decorate 43(specConst) SpecId 17 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: 6(float) Constant 1073741824 15: 7(fvec4) ConstantComposite 14 14 14 14 17(tbufName): TypeStruct 7(fvec4) 18: TypePointer Uniform 17(tbufName) 19: 18(ptr) Variable Uniform 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypePointer Uniform 7(fvec4) 26(tbufName2): TypeStruct 7(fvec4) 27: TypePointer PushConstant 26(tbufName2) 28: 27(ptr) Variable PushConstant 29: TypePointer PushConstant 7(fvec4) 33(tbufName2): TypeStruct 7(fvec4) 34: TypePointer Uniform 33(tbufName2) 35: 34(ptr) Variable Uniform 43(specConst): 20(int) SpecConstant 10 4(main): 2 Function None 3 5: Label Return FunctionEnd 11(PixelShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 13(layout): 8(ptr) Variable Function Store 13(layout) 15 16: 7(fvec4) Load 10(input) 23: 22(ptr) AccessChain 19 21 24: 7(fvec4) Load 23 25: 7(fvec4) FAdd 16 24 30: 29(ptr) AccessChain 28 21 31: 7(fvec4) Load 30 32: 7(fvec4) FAdd 25 31 36: 22(ptr) AccessChain 35 21 37: 7(fvec4) Load 36 38: 7(fvec4) Load 13(layout) 39: 7(fvec4) FMul 37 38 40: 7(fvec4) FAdd 32 39 ReturnValue 40 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.layoutOverride.vert.out000066400000000000000000000107431506534232700241420ustar00rootroot00000000000000hlsl.layoutOverride.vert Shader version: 500 0:? Sequence 0:5 Function Definition: @main( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:6 Branch: Return with expression 0:6 texture ( temp 4-component vector of float) 0:6 Construct combined texture-sampler ( temp sampler2D) 0:6 'tex' (layout( set=2 binding=0) uniform texture2D) 0:6 'samp' ( uniform sampler) 0:6 Constant: 0:6 0.200000 0:6 0.300000 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:? '@entryPointOutput' ( out 4-component vector of float Position) 0:5 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex' (layout( set=2 binding=0) uniform texture2D) 0:? 'samp' ( uniform sampler) 0:? '@entryPointOutput' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:5 Function Definition: @main( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:6 Branch: Return with expression 0:6 texture ( temp 4-component vector of float) 0:6 Construct combined texture-sampler ( temp sampler2D) 0:6 'tex' (layout( set=2 binding=0) uniform texture2D) 0:6 'samp' ( uniform sampler) 0:6 Constant: 0:6 0.200000 0:6 0.300000 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:? '@entryPointOutput' ( out 4-component vector of float Position) 0:5 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex' (layout( set=2 binding=0) uniform texture2D) 0:? 'samp' ( uniform sampler) 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 30 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "tex" Name 17 "samp" Name 30 "@entryPointOutput" Decorate 13(tex) Binding 0 Decorate 13(tex) DescriptorSet 2 Decorate 17(samp) Binding 0 Decorate 17(samp) DescriptorSet 0 Decorate 30(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeImage 6(float) 2D sampled format:Unknown 12: TypePointer UniformConstant 11 13(tex): 12(ptr) Variable UniformConstant 15: TypeSampler 16: TypePointer UniformConstant 15 17(samp): 16(ptr) Variable UniformConstant 19: TypeSampledImage 11 21: TypeVector 6(float) 2 22: 6(float) Constant 1045220557 23: 6(float) Constant 1050253722 24: 21(fvec2) ConstantComposite 22 23 25: 6(float) Constant 0 29: TypePointer Output 7(fvec4) 30(@entryPointOutput): 29(ptr) Variable Output 4(main): 2 Function None 3 5: Label 31: 7(fvec4) FunctionCall 9(@main() Store 30(@entryPointOutput) 31 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 14: 11 Load 13(tex) 18: 15 Load 17(samp) 20: 19 SampledImage 14 18 26: 7(fvec4) ImageSampleExplicitLod 20 24 Lod 25 ReturnValue 26 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.2dms.dx10.frag.out000066400000000000000000000725331506534232700234270ustar00rootroot00000000000000hlsl.load.2dms.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:23 Function Definition: getOffset( ( temp 2-component vector of int) 0:23 Function Parameters: 0:? Sequence 0:24 Branch: Return with expression 0:24 Constant: 0:24 1 (const int) 0:24 1 (const int) 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:32 textureFetch ( temp 4-component vector of float) 0:32 'g_tTex2dmsf4' ( uniform texture2DMS) 0:32 c2: direct index for structure ( uniform 2-component vector of int) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 3 (const int) 0:33 textureFetch ( temp 4-component vector of int) 0:33 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:33 c2: direct index for structure ( uniform 2-component vector of int) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:33 Constant: 0:33 1 (const uint) 0:33 Constant: 0:33 3 (const int) 0:34 textureFetch ( temp 4-component vector of uint) 0:34 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:34 c2: direct index for structure ( uniform 2-component vector of int) 0:34 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:34 Constant: 0:34 1 (const uint) 0:34 Constant: 0:34 3 (const int) 0:37 textureFetchOffset ( temp 4-component vector of float) 0:37 'g_tTex2dmsf4' ( uniform texture2DMS) 0:37 c2: direct index for structure ( uniform 2-component vector of int) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:37 Constant: 0:37 1 (const uint) 0:37 Constant: 0:37 3 (const int) 0:37 Function Call: getOffset( ( temp 2-component vector of int) 0:38 textureFetchOffset ( temp 4-component vector of int) 0:38 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:38 c2: direct index for structure ( uniform 2-component vector of int) 0:38 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:38 Constant: 0:38 1 (const uint) 0:38 Constant: 0:38 3 (const int) 0:38 Function Call: getOffset( ( temp 2-component vector of int) 0:39 textureFetchOffset ( temp 4-component vector of uint) 0:39 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:39 c2: direct index for structure ( uniform 2-component vector of int) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 3 (const int) 0:39 Function Call: getOffset( ( temp 2-component vector of int) 0:42 textureFetch ( temp 4-component vector of float) 0:42 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:42 c3: direct index for structure ( uniform 3-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:42 Constant: 0:42 2 (const uint) 0:42 Constant: 0:42 3 (const int) 0:43 textureFetch ( temp 4-component vector of int) 0:43 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:43 c3: direct index for structure ( uniform 3-component vector of int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:43 Constant: 0:43 2 (const uint) 0:43 Constant: 0:43 3 (const int) 0:44 textureFetch ( temp 4-component vector of uint) 0:44 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:44 c3: direct index for structure ( uniform 3-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:44 Constant: 0:44 2 (const uint) 0:44 Constant: 0:44 3 (const int) 0:47 textureFetchOffset ( temp 4-component vector of float) 0:47 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:47 c3: direct index for structure ( uniform 3-component vector of int) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:47 Constant: 0:47 2 (const uint) 0:47 Constant: 0:47 3 (const int) 0:47 Function Call: getOffset( ( temp 2-component vector of int) 0:48 textureFetchOffset ( temp 4-component vector of int) 0:48 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:48 c3: direct index for structure ( uniform 3-component vector of int) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:48 Constant: 0:48 2 (const uint) 0:48 Constant: 0:48 3 (const int) 0:48 Function Call: getOffset( ( temp 2-component vector of int) 0:49 textureFetchOffset ( temp 4-component vector of uint) 0:49 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:49 c3: direct index for structure ( uniform 3-component vector of int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:49 Constant: 0:49 2 (const uint) 0:49 Constant: 0:49 3 (const int) 0:49 Function Call: getOffset( ( temp 2-component vector of int) 0:51 move second child to first child ( temp 4-component vector of float) 0:51 Color: direct index for structure ( temp 4-component vector of float) 0:51 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1.000000 0:51 1.000000 0:51 1.000000 0:51 1.000000 0:52 move second child to first child ( temp float) 0:52 Depth: direct index for structure ( temp float) 0:52 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 1.000000 0:54 Branch: Return with expression 0:54 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex2dmsf4' ( uniform texture2DMS) 0:? 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:? 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:23 Function Definition: getOffset( ( temp 2-component vector of int) 0:23 Function Parameters: 0:? Sequence 0:24 Branch: Return with expression 0:24 Constant: 0:24 1 (const int) 0:24 1 (const int) 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:32 textureFetch ( temp 4-component vector of float) 0:32 'g_tTex2dmsf4' ( uniform texture2DMS) 0:32 c2: direct index for structure ( uniform 2-component vector of int) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 3 (const int) 0:33 textureFetch ( temp 4-component vector of int) 0:33 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:33 c2: direct index for structure ( uniform 2-component vector of int) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:33 Constant: 0:33 1 (const uint) 0:33 Constant: 0:33 3 (const int) 0:34 textureFetch ( temp 4-component vector of uint) 0:34 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:34 c2: direct index for structure ( uniform 2-component vector of int) 0:34 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:34 Constant: 0:34 1 (const uint) 0:34 Constant: 0:34 3 (const int) 0:37 textureFetchOffset ( temp 4-component vector of float) 0:37 'g_tTex2dmsf4' ( uniform texture2DMS) 0:37 c2: direct index for structure ( uniform 2-component vector of int) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:37 Constant: 0:37 1 (const uint) 0:37 Constant: 0:37 3 (const int) 0:37 Function Call: getOffset( ( temp 2-component vector of int) 0:38 textureFetchOffset ( temp 4-component vector of int) 0:38 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:38 c2: direct index for structure ( uniform 2-component vector of int) 0:38 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:38 Constant: 0:38 1 (const uint) 0:38 Constant: 0:38 3 (const int) 0:38 Function Call: getOffset( ( temp 2-component vector of int) 0:39 textureFetchOffset ( temp 4-component vector of uint) 0:39 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:39 c2: direct index for structure ( uniform 2-component vector of int) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 3 (const int) 0:39 Function Call: getOffset( ( temp 2-component vector of int) 0:42 textureFetch ( temp 4-component vector of float) 0:42 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:42 c3: direct index for structure ( uniform 3-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:42 Constant: 0:42 2 (const uint) 0:42 Constant: 0:42 3 (const int) 0:43 textureFetch ( temp 4-component vector of int) 0:43 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:43 c3: direct index for structure ( uniform 3-component vector of int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:43 Constant: 0:43 2 (const uint) 0:43 Constant: 0:43 3 (const int) 0:44 textureFetch ( temp 4-component vector of uint) 0:44 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:44 c3: direct index for structure ( uniform 3-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:44 Constant: 0:44 2 (const uint) 0:44 Constant: 0:44 3 (const int) 0:47 textureFetchOffset ( temp 4-component vector of float) 0:47 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:47 c3: direct index for structure ( uniform 3-component vector of int) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:47 Constant: 0:47 2 (const uint) 0:47 Constant: 0:47 3 (const int) 0:47 Function Call: getOffset( ( temp 2-component vector of int) 0:48 textureFetchOffset ( temp 4-component vector of int) 0:48 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:48 c3: direct index for structure ( uniform 3-component vector of int) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:48 Constant: 0:48 2 (const uint) 0:48 Constant: 0:48 3 (const int) 0:48 Function Call: getOffset( ( temp 2-component vector of int) 0:49 textureFetchOffset ( temp 4-component vector of uint) 0:49 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:49 c3: direct index for structure ( uniform 3-component vector of int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:49 Constant: 0:49 2 (const uint) 0:49 Constant: 0:49 3 (const int) 0:49 Function Call: getOffset( ( temp 2-component vector of int) 0:51 move second child to first child ( temp 4-component vector of float) 0:51 Color: direct index for structure ( temp 4-component vector of float) 0:51 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1.000000 0:51 1.000000 0:51 1.000000 0:51 1.000000 0:52 move second child to first child ( temp float) 0:52 Depth: direct index for structure ( temp float) 0:52 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 1.000000 0:54 Branch: Return with expression 0:54 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex2dmsf4' ( uniform texture2DMS) 0:? 'g_tTex2dmsi4' ( uniform itexture2DMS) 0:? 'g_tTex2dmsu4' ( uniform utexture2DMS) 0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' ( uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' ( uniform utexture2DMSArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 129 Capability Shader Capability ImageGatherExtended 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 119 123 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 9 "getOffset(" Name 13 "PS_OUTPUT" MemberName 13(PS_OUTPUT) 0 "Color" MemberName 13(PS_OUTPUT) 1 "Depth" Name 15 "@main(" Name 23 "g_tTex2dmsf4" Name 27 "$Global" MemberName 27($Global) 0 "c1" MemberName 27($Global) 1 "c2" MemberName 27($Global) 2 "c3" MemberName 27($Global) 3 "c4" Name 29 "" Name 37 "g_tTex2dmsi4" Name 45 "g_tTex2dmsu4" Name 68 "g_tTex2dmsf4a" Name 77 "g_tTex2dmsi4a" Name 84 "g_tTex2dmsu4a" Name 105 "psout" Name 116 "flattenTemp" Name 119 "@entryPointOutput.Color" Name 123 "@entryPointOutput.Depth" Name 128 "g_sSamp" Decorate 23(g_tTex2dmsf4) Binding 1 Decorate 23(g_tTex2dmsf4) DescriptorSet 0 Decorate 27($Global) Block MemberDecorate 27($Global) 0 Offset 0 MemberDecorate 27($Global) 1 Offset 8 MemberDecorate 27($Global) 2 Offset 16 MemberDecorate 27($Global) 3 Offset 32 Decorate 29 Binding 7 Decorate 29 DescriptorSet 0 Decorate 37(g_tTex2dmsi4) Binding 2 Decorate 37(g_tTex2dmsi4) DescriptorSet 0 Decorate 45(g_tTex2dmsu4) Binding 3 Decorate 45(g_tTex2dmsu4) DescriptorSet 0 Decorate 68(g_tTex2dmsf4a) Binding 4 Decorate 68(g_tTex2dmsf4a) DescriptorSet 0 Decorate 77(g_tTex2dmsi4a) Binding 5 Decorate 77(g_tTex2dmsi4a) DescriptorSet 0 Decorate 84(g_tTex2dmsu4a) Binding 6 Decorate 84(g_tTex2dmsu4a) DescriptorSet 0 Decorate 119(@entryPointOutput.Color) Location 0 Decorate 123(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 128(g_sSamp) Binding 0 Decorate 128(g_sSamp) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 2 8: TypeFunction 7(ivec2) 11: TypeFloat 32 12: TypeVector 11(float) 4 13(PS_OUTPUT): TypeStruct 12(fvec4) 11(float) 14: TypeFunction 13(PS_OUTPUT) 17: 6(int) Constant 1 18: 7(ivec2) ConstantComposite 17 17 21: TypeImage 11(float) 2D multi-sampled sampled format:Unknown 22: TypePointer UniformConstant 21 23(g_tTex2dmsf4): 22(ptr) Variable UniformConstant 25: TypeVector 6(int) 3 26: TypeVector 6(int) 4 27($Global): TypeStruct 6(int) 7(ivec2) 25(ivec3) 26(ivec4) 28: TypePointer Uniform 27($Global) 29: 28(ptr) Variable Uniform 30: TypePointer Uniform 7(ivec2) 33: 6(int) Constant 3 35: TypeImage 6(int) 2D multi-sampled sampled format:Unknown 36: TypePointer UniformConstant 35 37(g_tTex2dmsi4): 36(ptr) Variable UniformConstant 42: TypeInt 32 0 43: TypeImage 42(int) 2D multi-sampled sampled format:Unknown 44: TypePointer UniformConstant 43 45(g_tTex2dmsu4): 44(ptr) Variable UniformConstant 49: TypeVector 42(int) 4 66: TypeImage 11(float) 2D array multi-sampled sampled format:Unknown 67: TypePointer UniformConstant 66 68(g_tTex2dmsf4a): 67(ptr) Variable UniformConstant 70: 6(int) Constant 2 71: TypePointer Uniform 25(ivec3) 75: TypeImage 6(int) 2D array multi-sampled sampled format:Unknown 76: TypePointer UniformConstant 75 77(g_tTex2dmsi4a): 76(ptr) Variable UniformConstant 82: TypeImage 42(int) 2D array multi-sampled sampled format:Unknown 83: TypePointer UniformConstant 82 84(g_tTex2dmsu4a): 83(ptr) Variable UniformConstant 104: TypePointer Function 13(PS_OUTPUT) 106: 6(int) Constant 0 107: 11(float) Constant 1065353216 108: 12(fvec4) ConstantComposite 107 107 107 107 109: TypePointer Function 12(fvec4) 111: TypePointer Function 11(float) 118: TypePointer Output 12(fvec4) 119(@entryPointOutput.Color): 118(ptr) Variable Output 122: TypePointer Output 11(float) 123(@entryPointOutput.Depth): 122(ptr) Variable Output 126: TypeSampler 127: TypePointer UniformConstant 126 128(g_sSamp): 127(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 116(flattenTemp): 104(ptr) Variable Function 117:13(PS_OUTPUT) FunctionCall 15(@main() Store 116(flattenTemp) 117 120: 109(ptr) AccessChain 116(flattenTemp) 106 121: 12(fvec4) Load 120 Store 119(@entryPointOutput.Color) 121 124: 111(ptr) AccessChain 116(flattenTemp) 17 125: 11(float) Load 124 Store 123(@entryPointOutput.Depth) 125 Return FunctionEnd 9(getOffset(): 7(ivec2) Function None 8 10: Label ReturnValue 18 FunctionEnd 15(@main():13(PS_OUTPUT) Function None 14 16: Label 105(psout): 104(ptr) Variable Function 24: 21 Load 23(g_tTex2dmsf4) 31: 30(ptr) AccessChain 29 17 32: 7(ivec2) Load 31 34: 12(fvec4) ImageFetch 24 32 Sample 33 38: 35 Load 37(g_tTex2dmsi4) 39: 30(ptr) AccessChain 29 17 40: 7(ivec2) Load 39 41: 26(ivec4) ImageFetch 38 40 Sample 33 46: 43 Load 45(g_tTex2dmsu4) 47: 30(ptr) AccessChain 29 17 48: 7(ivec2) Load 47 50: 49(ivec4) ImageFetch 46 48 Sample 33 51: 21 Load 23(g_tTex2dmsf4) 52: 30(ptr) AccessChain 29 17 53: 7(ivec2) Load 52 54: 7(ivec2) FunctionCall 9(getOffset() 55: 12(fvec4) ImageFetch 51 53 Offset Sample 54 33 56: 35 Load 37(g_tTex2dmsi4) 57: 30(ptr) AccessChain 29 17 58: 7(ivec2) Load 57 59: 7(ivec2) FunctionCall 9(getOffset() 60: 26(ivec4) ImageFetch 56 58 Offset Sample 59 33 61: 43 Load 45(g_tTex2dmsu4) 62: 30(ptr) AccessChain 29 17 63: 7(ivec2) Load 62 64: 7(ivec2) FunctionCall 9(getOffset() 65: 49(ivec4) ImageFetch 61 63 Offset Sample 64 33 69: 66 Load 68(g_tTex2dmsf4a) 72: 71(ptr) AccessChain 29 70 73: 25(ivec3) Load 72 74: 12(fvec4) ImageFetch 69 73 Sample 33 78: 75 Load 77(g_tTex2dmsi4a) 79: 71(ptr) AccessChain 29 70 80: 25(ivec3) Load 79 81: 26(ivec4) ImageFetch 78 80 Sample 33 85: 82 Load 84(g_tTex2dmsu4a) 86: 71(ptr) AccessChain 29 70 87: 25(ivec3) Load 86 88: 49(ivec4) ImageFetch 85 87 Sample 33 89: 66 Load 68(g_tTex2dmsf4a) 90: 71(ptr) AccessChain 29 70 91: 25(ivec3) Load 90 92: 7(ivec2) FunctionCall 9(getOffset() 93: 12(fvec4) ImageFetch 89 91 Offset Sample 92 33 94: 75 Load 77(g_tTex2dmsi4a) 95: 71(ptr) AccessChain 29 70 96: 25(ivec3) Load 95 97: 7(ivec2) FunctionCall 9(getOffset() 98: 26(ivec4) ImageFetch 94 96 Offset Sample 97 33 99: 82 Load 84(g_tTex2dmsu4a) 100: 71(ptr) AccessChain 29 70 101: 25(ivec3) Load 100 102: 7(ivec2) FunctionCall 9(getOffset() 103: 49(ivec4) ImageFetch 99 101 Offset Sample 102 33 110: 109(ptr) AccessChain 105(psout) 106 Store 110 108 112: 111(ptr) AccessChain 105(psout) 17 Store 112 107 113:13(PS_OUTPUT) Load 105(psout) ReturnValue 113 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.array.dx10.frag.out000066400000000000000000001165061506534232700236770ustar00rootroot00000000000000hlsl.load.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetch ( temp 4-component vector of float) 0:52 'g_tTex1df4a' ( uniform texture1DArray) 0:52 vector swizzle ( temp 2-component vector of int) 0:52 c3: direct index for structure ( uniform 3-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 2 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 direct index ( temp int) 0:52 c3: direct index for structure ( uniform 3-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 2 (const uint) 0:52 Constant: 0:52 2 (const int) 0:53 textureFetch ( temp 4-component vector of int) 0:53 'g_tTex1di4a' ( uniform itexture1DArray) 0:53 vector swizzle ( temp 2-component vector of int) 0:53 c3: direct index for structure ( uniform 3-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 2 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 direct index ( temp int) 0:53 c3: direct index for structure ( uniform 3-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 2 (const uint) 0:53 Constant: 0:53 2 (const int) 0:54 textureFetch ( temp 4-component vector of uint) 0:54 'g_tTex1du4a' ( uniform utexture1DArray) 0:54 vector swizzle ( temp 2-component vector of int) 0:54 c3: direct index for structure ( uniform 3-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 2 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 direct index ( temp int) 0:54 c3: direct index for structure ( uniform 3-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 2 (const uint) 0:54 Constant: 0:54 2 (const int) 0:57 textureFetch ( temp 4-component vector of float) 0:57 'g_tTex2df4a' ( uniform texture2DArray) 0:57 vector swizzle ( temp 3-component vector of int) 0:57 c4: direct index for structure ( uniform 4-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 3 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 direct index ( temp int) 0:57 c4: direct index for structure ( uniform 4-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 3 (const uint) 0:57 Constant: 0:57 3 (const int) 0:58 textureFetch ( temp 4-component vector of int) 0:58 'g_tTex2di4a' ( uniform itexture2DArray) 0:58 vector swizzle ( temp 3-component vector of int) 0:58 c4: direct index for structure ( uniform 4-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 3 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 direct index ( temp int) 0:58 c4: direct index for structure ( uniform 4-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 3 (const uint) 0:58 Constant: 0:58 3 (const int) 0:59 textureFetch ( temp 4-component vector of uint) 0:59 'g_tTex2du4a' ( uniform utexture2DArray) 0:59 vector swizzle ( temp 3-component vector of int) 0:59 c4: direct index for structure ( uniform 4-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:59 Constant: 0:59 3 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 direct index ( temp int) 0:59 c4: direct index for structure ( uniform 4-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:59 Constant: 0:59 3 (const uint) 0:59 Constant: 0:59 3 (const int) 0:67 move second child to first child ( temp 4-component vector of float) 0:67 Color: direct index for structure ( temp 4-component vector of float) 0:67 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1.000000 0:67 1.000000 0:67 1.000000 0:67 1.000000 0:68 move second child to first child ( temp float) 0:68 Depth: direct index for structure ( temp float) 0:68 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 1.000000 0:70 Branch: Return with expression 0:70 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Definition: main( ( temp void) 0:48 Function Parameters: 0:? Sequence 0:48 Sequence 0:48 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:48 Color: direct index for structure ( temp 4-component vector of float) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 0 (const int) 0:48 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:48 Depth: direct index for structure ( temp float) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetch ( temp 4-component vector of float) 0:52 'g_tTex1df4a' ( uniform texture1DArray) 0:52 vector swizzle ( temp 2-component vector of int) 0:52 c3: direct index for structure ( uniform 3-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 2 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 direct index ( temp int) 0:52 c3: direct index for structure ( uniform 3-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 2 (const uint) 0:52 Constant: 0:52 2 (const int) 0:53 textureFetch ( temp 4-component vector of int) 0:53 'g_tTex1di4a' ( uniform itexture1DArray) 0:53 vector swizzle ( temp 2-component vector of int) 0:53 c3: direct index for structure ( uniform 3-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 2 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 direct index ( temp int) 0:53 c3: direct index for structure ( uniform 3-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 2 (const uint) 0:53 Constant: 0:53 2 (const int) 0:54 textureFetch ( temp 4-component vector of uint) 0:54 'g_tTex1du4a' ( uniform utexture1DArray) 0:54 vector swizzle ( temp 2-component vector of int) 0:54 c3: direct index for structure ( uniform 3-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 2 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 direct index ( temp int) 0:54 c3: direct index for structure ( uniform 3-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 2 (const uint) 0:54 Constant: 0:54 2 (const int) 0:57 textureFetch ( temp 4-component vector of float) 0:57 'g_tTex2df4a' ( uniform texture2DArray) 0:57 vector swizzle ( temp 3-component vector of int) 0:57 c4: direct index for structure ( uniform 4-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 3 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 direct index ( temp int) 0:57 c4: direct index for structure ( uniform 4-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 3 (const uint) 0:57 Constant: 0:57 3 (const int) 0:58 textureFetch ( temp 4-component vector of int) 0:58 'g_tTex2di4a' ( uniform itexture2DArray) 0:58 vector swizzle ( temp 3-component vector of int) 0:58 c4: direct index for structure ( uniform 4-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 3 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 2 (const int) 0:58 direct index ( temp int) 0:58 c4: direct index for structure ( uniform 4-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 3 (const uint) 0:58 Constant: 0:58 3 (const int) 0:59 textureFetch ( temp 4-component vector of uint) 0:59 'g_tTex2du4a' ( uniform utexture2DArray) 0:59 vector swizzle ( temp 3-component vector of int) 0:59 c4: direct index for structure ( uniform 4-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:59 Constant: 0:59 3 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 2 (const int) 0:59 direct index ( temp int) 0:59 c4: direct index for structure ( uniform 4-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:59 Constant: 0:59 3 (const uint) 0:59 Constant: 0:59 3 (const int) 0:67 move second child to first child ( temp 4-component vector of float) 0:67 Color: direct index for structure ( temp 4-component vector of float) 0:67 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1.000000 0:67 1.000000 0:67 1.000000 0:67 1.000000 0:68 move second child to first child ( temp float) 0:68 Depth: direct index for structure ( temp float) 0:68 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:68 Constant: 0:68 1 (const int) 0:68 Constant: 0:68 1.000000 0:70 Branch: Return with expression 0:70 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Definition: main( ( temp void) 0:48 Function Parameters: 0:? Sequence 0:48 Sequence 0:48 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:48 Color: direct index for structure ( temp 4-component vector of float) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 0 (const int) 0:48 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:48 Depth: direct index for structure ( temp float) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 159 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 104 108 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 14 "g_tTex1df4a" Name 20 "$Global" MemberName 20($Global) 0 "c1" MemberName 20($Global) 1 "c2" MemberName 20($Global) 2 "c3" MemberName 20($Global) 3 "c4" MemberName 20($Global) 4 "o1" MemberName 20($Global) 5 "o2" MemberName 20($Global) 6 "o3" MemberName 20($Global) 7 "o4" Name 22 "" Name 36 "g_tTex1di4a" Name 46 "g_tTex1du4a" Name 57 "g_tTex2df4a" Name 70 "g_tTex2di4a" Name 80 "g_tTex2du4a" Name 89 "psout" Name 101 "flattenTemp" Name 104 "@entryPointOutput.Color" Name 108 "@entryPointOutput.Depth" Name 113 "g_sSamp" Name 116 "g_tTex1df4" Name 119 "g_tTex1di4" Name 122 "g_tTex1du4" Name 125 "g_tTex2df4" Name 128 "g_tTex2di4" Name 131 "g_tTex2du4" Name 134 "g_tTex3df4" Name 137 "g_tTex3di4" Name 140 "g_tTex3du4" Name 143 "g_tTexcdf4" Name 146 "g_tTexcdi4" Name 149 "g_tTexcdu4" Name 152 "g_tTexcdf4a" Name 155 "g_tTexcdi4a" Name 158 "g_tTexcdu4a" Decorate 14(g_tTex1df4a) Binding 1 Decorate 14(g_tTex1df4a) DescriptorSet 0 Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 MemberDecorate 20($Global) 3 Offset 32 MemberDecorate 20($Global) 4 Offset 48 MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 Decorate 22 Binding 7 Decorate 22 DescriptorSet 0 Decorate 36(g_tTex1di4a) Binding 2 Decorate 36(g_tTex1di4a) DescriptorSet 0 Decorate 46(g_tTex1du4a) Binding 3 Decorate 46(g_tTex1du4a) DescriptorSet 0 Decorate 57(g_tTex2df4a) Binding 4 Decorate 57(g_tTex2df4a) DescriptorSet 0 Decorate 70(g_tTex2di4a) Binding 5 Decorate 70(g_tTex2di4a) DescriptorSet 0 Decorate 80(g_tTex2du4a) Binding 6 Decorate 80(g_tTex2du4a) DescriptorSet 0 Decorate 104(@entryPointOutput.Color) Location 0 Decorate 108(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 113(g_sSamp) Binding 0 Decorate 113(g_sSamp) DescriptorSet 0 Decorate 116(g_tTex1df4) Binding 0 Decorate 116(g_tTex1df4) DescriptorSet 0 Decorate 119(g_tTex1di4) Binding 0 Decorate 119(g_tTex1di4) DescriptorSet 0 Decorate 122(g_tTex1du4) Binding 0 Decorate 122(g_tTex1du4) DescriptorSet 0 Decorate 125(g_tTex2df4) Binding 0 Decorate 125(g_tTex2df4) DescriptorSet 0 Decorate 128(g_tTex2di4) Binding 0 Decorate 128(g_tTex2di4) DescriptorSet 0 Decorate 131(g_tTex2du4) Binding 0 Decorate 131(g_tTex2du4) DescriptorSet 0 Decorate 134(g_tTex3df4) Binding 0 Decorate 134(g_tTex3df4) DescriptorSet 0 Decorate 137(g_tTex3di4) Binding 0 Decorate 137(g_tTex3di4) DescriptorSet 0 Decorate 140(g_tTex3du4) Binding 0 Decorate 140(g_tTex3du4) DescriptorSet 0 Decorate 143(g_tTexcdf4) Binding 0 Decorate 143(g_tTexcdf4) DescriptorSet 0 Decorate 146(g_tTexcdi4) Binding 0 Decorate 146(g_tTexcdi4) DescriptorSet 0 Decorate 149(g_tTexcdu4) Binding 0 Decorate 149(g_tTexcdu4) DescriptorSet 0 Decorate 152(g_tTexcdf4a) Binding 0 Decorate 152(g_tTexcdf4a) DescriptorSet 0 Decorate 155(g_tTexcdi4a) Binding 0 Decorate 155(g_tTexcdi4a) DescriptorSet 0 Decorate 158(g_tTexcdu4a) Binding 0 Decorate 158(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypeImage 6(float) 1D array sampled format:Unknown 13: TypePointer UniformConstant 12 14(g_tTex1df4a): 13(ptr) Variable UniformConstant 16: TypeInt 32 1 17: TypeVector 16(int) 2 18: TypeVector 16(int) 3 19: TypeVector 16(int) 4 20($Global): TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 21: TypePointer Uniform 20($Global) 22: 21(ptr) Variable Uniform 23: 16(int) Constant 2 24: TypePointer Uniform 18(ivec3) 28: TypeInt 32 0 29: 28(int) Constant 2 30: TypePointer Uniform 16(int) 34: TypeImage 16(int) 1D array sampled format:Unknown 35: TypePointer UniformConstant 34 36(g_tTex1di4a): 35(ptr) Variable UniformConstant 44: TypeImage 28(int) 1D array sampled format:Unknown 45: TypePointer UniformConstant 44 46(g_tTex1du4a): 45(ptr) Variable UniformConstant 53: TypeVector 28(int) 4 55: TypeImage 6(float) 2D array sampled format:Unknown 56: TypePointer UniformConstant 55 57(g_tTex2df4a): 56(ptr) Variable UniformConstant 59: 16(int) Constant 3 60: TypePointer Uniform 19(ivec4) 64: 28(int) Constant 3 68: TypeImage 16(int) 2D array sampled format:Unknown 69: TypePointer UniformConstant 68 70(g_tTex2di4a): 69(ptr) Variable UniformConstant 78: TypeImage 28(int) 2D array sampled format:Unknown 79: TypePointer UniformConstant 78 80(g_tTex2du4a): 79(ptr) Variable UniformConstant 88: TypePointer Function 8(PS_OUTPUT) 90: 16(int) Constant 0 91: 6(float) Constant 1065353216 92: 7(fvec4) ConstantComposite 91 91 91 91 93: TypePointer Function 7(fvec4) 95: 16(int) Constant 1 96: TypePointer Function 6(float) 103: TypePointer Output 7(fvec4) 104(@entryPointOutput.Color): 103(ptr) Variable Output 107: TypePointer Output 6(float) 108(@entryPointOutput.Depth): 107(ptr) Variable Output 111: TypeSampler 112: TypePointer UniformConstant 111 113(g_sSamp): 112(ptr) Variable UniformConstant 114: TypeImage 6(float) 1D sampled format:Unknown 115: TypePointer UniformConstant 114 116(g_tTex1df4): 115(ptr) Variable UniformConstant 117: TypeImage 16(int) 1D sampled format:Unknown 118: TypePointer UniformConstant 117 119(g_tTex1di4): 118(ptr) Variable UniformConstant 120: TypeImage 28(int) 1D sampled format:Unknown 121: TypePointer UniformConstant 120 122(g_tTex1du4): 121(ptr) Variable UniformConstant 123: TypeImage 6(float) 2D sampled format:Unknown 124: TypePointer UniformConstant 123 125(g_tTex2df4): 124(ptr) Variable UniformConstant 126: TypeImage 16(int) 2D sampled format:Unknown 127: TypePointer UniformConstant 126 128(g_tTex2di4): 127(ptr) Variable UniformConstant 129: TypeImage 28(int) 2D sampled format:Unknown 130: TypePointer UniformConstant 129 131(g_tTex2du4): 130(ptr) Variable UniformConstant 132: TypeImage 6(float) 3D sampled format:Unknown 133: TypePointer UniformConstant 132 134(g_tTex3df4): 133(ptr) Variable UniformConstant 135: TypeImage 16(int) 3D sampled format:Unknown 136: TypePointer UniformConstant 135 137(g_tTex3di4): 136(ptr) Variable UniformConstant 138: TypeImage 28(int) 3D sampled format:Unknown 139: TypePointer UniformConstant 138 140(g_tTex3du4): 139(ptr) Variable UniformConstant 141: TypeImage 6(float) Cube sampled format:Unknown 142: TypePointer UniformConstant 141 143(g_tTexcdf4): 142(ptr) Variable UniformConstant 144: TypeImage 16(int) Cube sampled format:Unknown 145: TypePointer UniformConstant 144 146(g_tTexcdi4): 145(ptr) Variable UniformConstant 147: TypeImage 28(int) Cube sampled format:Unknown 148: TypePointer UniformConstant 147 149(g_tTexcdu4): 148(ptr) Variable UniformConstant 150: TypeImage 6(float) Cube array sampled format:Unknown 151: TypePointer UniformConstant 150 152(g_tTexcdf4a): 151(ptr) Variable UniformConstant 153: TypeImage 16(int) Cube array sampled format:Unknown 154: TypePointer UniformConstant 153 155(g_tTexcdi4a): 154(ptr) Variable UniformConstant 156: TypeImage 28(int) Cube array sampled format:Unknown 157: TypePointer UniformConstant 156 158(g_tTexcdu4a): 157(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 101(flattenTemp): 88(ptr) Variable Function 102:8(PS_OUTPUT) FunctionCall 10(@main() Store 101(flattenTemp) 102 105: 93(ptr) AccessChain 101(flattenTemp) 90 106: 7(fvec4) Load 105 Store 104(@entryPointOutput.Color) 106 109: 96(ptr) AccessChain 101(flattenTemp) 95 110: 6(float) Load 109 Store 108(@entryPointOutput.Depth) 110 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 89(psout): 88(ptr) Variable Function 15: 12 Load 14(g_tTex1df4a) 25: 24(ptr) AccessChain 22 23 26: 18(ivec3) Load 25 27: 17(ivec2) VectorShuffle 26 26 0 1 31: 30(ptr) AccessChain 22 23 29 32: 16(int) Load 31 33: 7(fvec4) ImageFetch 15 27 Lod 32 37: 34 Load 36(g_tTex1di4a) 38: 24(ptr) AccessChain 22 23 39: 18(ivec3) Load 38 40: 17(ivec2) VectorShuffle 39 39 0 1 41: 30(ptr) AccessChain 22 23 29 42: 16(int) Load 41 43: 19(ivec4) ImageFetch 37 40 Lod 42 47: 44 Load 46(g_tTex1du4a) 48: 24(ptr) AccessChain 22 23 49: 18(ivec3) Load 48 50: 17(ivec2) VectorShuffle 49 49 0 1 51: 30(ptr) AccessChain 22 23 29 52: 16(int) Load 51 54: 53(ivec4) ImageFetch 47 50 Lod 52 58: 55 Load 57(g_tTex2df4a) 61: 60(ptr) AccessChain 22 59 62: 19(ivec4) Load 61 63: 18(ivec3) VectorShuffle 62 62 0 1 2 65: 30(ptr) AccessChain 22 59 64 66: 16(int) Load 65 67: 7(fvec4) ImageFetch 58 63 Lod 66 71: 68 Load 70(g_tTex2di4a) 72: 60(ptr) AccessChain 22 59 73: 19(ivec4) Load 72 74: 18(ivec3) VectorShuffle 73 73 0 1 2 75: 30(ptr) AccessChain 22 59 64 76: 16(int) Load 75 77: 19(ivec4) ImageFetch 71 74 Lod 76 81: 78 Load 80(g_tTex2du4a) 82: 60(ptr) AccessChain 22 59 83: 19(ivec4) Load 82 84: 18(ivec3) VectorShuffle 83 83 0 1 2 85: 30(ptr) AccessChain 22 59 64 86: 16(int) Load 85 87: 53(ivec4) ImageFetch 81 84 Lod 86 94: 93(ptr) AccessChain 89(psout) 90 Store 94 92 97: 96(ptr) AccessChain 89(psout) 95 Store 97 91 98:8(PS_OUTPUT) Load 89(psout) ReturnValue 98 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.basic.dx10.frag.out000066400000000000000000001372141506534232700236410ustar00rootroot00000000000000hlsl.load.basic.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetch ( temp 4-component vector of float) 0:52 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:52 vector swizzle ( temp int) 0:52 c2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index ( temp int) 0:52 c2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) 0:53 textureFetch ( temp 4-component vector of int) 0:53 'g_tTex1di4' ( uniform itexture1D) 0:53 vector swizzle ( temp int) 0:53 c2: direct index for structure ( uniform 2-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index ( temp int) 0:53 c2: direct index for structure ( uniform 2-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) 0:54 textureFetch ( temp 4-component vector of uint) 0:54 'g_tTex1du4' ( uniform utexture1D) 0:54 vector swizzle ( temp int) 0:54 c2: direct index for structure ( uniform 2-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 1 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 direct index ( temp int) 0:54 c2: direct index for structure ( uniform 2-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 1 (const uint) 0:54 Constant: 0:54 1 (const int) 0:57 textureFetch ( temp 4-component vector of float) 0:57 'g_tTex2df4' ( uniform texture2D) 0:57 vector swizzle ( temp 2-component vector of int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index ( temp int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:58 textureFetch ( temp 4-component vector of int) 0:58 'g_tTex2di4' ( uniform itexture2D) 0:58 vector swizzle ( temp 2-component vector of int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index ( temp int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:59 textureFetch ( temp 4-component vector of uint) 0:59 'g_tTex2du4' ( uniform utexture2D) 0:59 vector swizzle ( temp 2-component vector of int) 0:59 c3: direct index for structure ( uniform 3-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 direct index ( temp int) 0:59 c3: direct index for structure ( uniform 3-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) 0:62 textureFetch ( temp 4-component vector of float) 0:62 'g_tTex3df4' ( uniform texture3D) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 direct index ( temp int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:63 textureFetch ( temp 4-component vector of int) 0:63 'g_tTex3di4' ( uniform itexture3D) 0:63 vector swizzle ( temp 3-component vector of int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 direct index ( temp int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:64 textureFetch ( temp 4-component vector of uint) 0:64 'g_tTex3du4' ( uniform utexture3D) 0:64 vector swizzle ( temp 3-component vector of int) 0:64 c4: direct index for structure ( uniform 4-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 direct index ( temp int) 0:64 c4: direct index for structure ( uniform 4-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:72 move second child to first child ( temp 4-component vector of float) 0:72 Color: direct index for structure ( temp 4-component vector of float) 0:72 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1.000000 0:72 1.000000 0:72 1.000000 0:72 1.000000 0:73 move second child to first child ( temp float) 0:73 Depth: direct index for structure ( temp float) 0:73 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 1.000000 0:75 Branch: Return with expression 0:75 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Definition: main( ( temp void) 0:48 Function Parameters: 0:? Sequence 0:48 Sequence 0:48 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:48 Color: direct index for structure ( temp 4-component vector of float) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 0 (const int) 0:48 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:48 Depth: direct index for structure ( temp float) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetch ( temp 4-component vector of float) 0:52 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:52 vector swizzle ( temp int) 0:52 c2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index ( temp int) 0:52 c2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) 0:53 textureFetch ( temp 4-component vector of int) 0:53 'g_tTex1di4' ( uniform itexture1D) 0:53 vector swizzle ( temp int) 0:53 c2: direct index for structure ( uniform 2-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index ( temp int) 0:53 c2: direct index for structure ( uniform 2-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) 0:54 textureFetch ( temp 4-component vector of uint) 0:54 'g_tTex1du4' ( uniform utexture1D) 0:54 vector swizzle ( temp int) 0:54 c2: direct index for structure ( uniform 2-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 1 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 direct index ( temp int) 0:54 c2: direct index for structure ( uniform 2-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 1 (const uint) 0:54 Constant: 0:54 1 (const int) 0:57 textureFetch ( temp 4-component vector of float) 0:57 'g_tTex2df4' ( uniform texture2D) 0:57 vector swizzle ( temp 2-component vector of int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index ( temp int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:58 textureFetch ( temp 4-component vector of int) 0:58 'g_tTex2di4' ( uniform itexture2D) 0:58 vector swizzle ( temp 2-component vector of int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index ( temp int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:59 textureFetch ( temp 4-component vector of uint) 0:59 'g_tTex2du4' ( uniform utexture2D) 0:59 vector swizzle ( temp 2-component vector of int) 0:59 c3: direct index for structure ( uniform 3-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 direct index ( temp int) 0:59 c3: direct index for structure ( uniform 3-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) 0:62 textureFetch ( temp 4-component vector of float) 0:62 'g_tTex3df4' ( uniform texture3D) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 direct index ( temp int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:63 textureFetch ( temp 4-component vector of int) 0:63 'g_tTex3di4' ( uniform itexture3D) 0:63 vector swizzle ( temp 3-component vector of int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 direct index ( temp int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:64 textureFetch ( temp 4-component vector of uint) 0:64 'g_tTex3du4' ( uniform utexture3D) 0:64 vector swizzle ( temp 3-component vector of int) 0:64 c4: direct index for structure ( uniform 4-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 direct index ( temp int) 0:64 c4: direct index for structure ( uniform 4-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:72 move second child to first child ( temp 4-component vector of float) 0:72 Color: direct index for structure ( temp 4-component vector of float) 0:72 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1.000000 0:72 1.000000 0:72 1.000000 0:72 1.000000 0:73 move second child to first child ( temp float) 0:73 Depth: direct index for structure ( temp float) 0:73 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 1.000000 0:75 Branch: Return with expression 0:75 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Definition: main( ( temp void) 0:48 Function Parameters: 0:? Sequence 0:48 Sequence 0:48 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:48 Color: direct index for structure ( temp 4-component vector of float) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 0 (const int) 0:48 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:48 Depth: direct index for structure ( temp float) 0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 179 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 133 137 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 14 "g_tTex1df4" Name 20 "$Global" MemberName 20($Global) 0 "c1" MemberName 20($Global) 1 "c2" MemberName 20($Global) 2 "c3" MemberName 20($Global) 3 "c4" MemberName 20($Global) 4 "o1" MemberName 20($Global) 5 "o2" MemberName 20($Global) 6 "o3" MemberName 20($Global) 7 "o4" Name 22 "" Name 35 "g_tTex1di4" Name 44 "g_tTex1du4" Name 54 "g_tTex2df4" Name 67 "g_tTex2di4" Name 77 "g_tTex2du4" Name 87 "g_tTex3df4" Name 100 "g_tTex3di4" Name 110 "g_tTex3du4" Name 119 "psout" Name 130 "flattenTemp" Name 133 "@entryPointOutput.Color" Name 137 "@entryPointOutput.Depth" Name 142 "g_sSamp" Name 145 "g_tTexcdf4" Name 148 "g_tTexcdi4" Name 151 "g_tTexcdu4" Name 154 "g_tTex1df4a" Name 157 "g_tTex1di4a" Name 160 "g_tTex1du4a" Name 163 "g_tTex2df4a" Name 166 "g_tTex2di4a" Name 169 "g_tTex2du4a" Name 172 "g_tTexcdf4a" Name 175 "g_tTexcdi4a" Name 178 "g_tTexcdu4a" Decorate 14(g_tTex1df4) Binding 0 Decorate 14(g_tTex1df4) DescriptorSet 0 Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 MemberDecorate 20($Global) 3 Offset 32 MemberDecorate 20($Global) 4 Offset 48 MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 Decorate 22 Binding 9 Decorate 22 DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 44(g_tTex1du4) Binding 2 Decorate 44(g_tTex1du4) DescriptorSet 0 Decorate 54(g_tTex2df4) Binding 3 Decorate 54(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 4 Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 77(g_tTex2du4) Binding 5 Decorate 77(g_tTex2du4) DescriptorSet 0 Decorate 87(g_tTex3df4) Binding 6 Decorate 87(g_tTex3df4) DescriptorSet 0 Decorate 100(g_tTex3di4) Binding 7 Decorate 100(g_tTex3di4) DescriptorSet 0 Decorate 110(g_tTex3du4) Binding 8 Decorate 110(g_tTex3du4) DescriptorSet 0 Decorate 133(@entryPointOutput.Color) Location 0 Decorate 137(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 142(g_sSamp) Binding 0 Decorate 142(g_sSamp) DescriptorSet 0 Decorate 145(g_tTexcdf4) Binding 0 Decorate 145(g_tTexcdf4) DescriptorSet 0 Decorate 148(g_tTexcdi4) Binding 0 Decorate 148(g_tTexcdi4) DescriptorSet 0 Decorate 151(g_tTexcdu4) Binding 0 Decorate 151(g_tTexcdu4) DescriptorSet 0 Decorate 154(g_tTex1df4a) Binding 0 Decorate 154(g_tTex1df4a) DescriptorSet 0 Decorate 157(g_tTex1di4a) Binding 0 Decorate 157(g_tTex1di4a) DescriptorSet 0 Decorate 160(g_tTex1du4a) Binding 0 Decorate 160(g_tTex1du4a) DescriptorSet 0 Decorate 163(g_tTex2df4a) Binding 0 Decorate 163(g_tTex2df4a) DescriptorSet 0 Decorate 166(g_tTex2di4a) Binding 0 Decorate 166(g_tTex2di4a) DescriptorSet 0 Decorate 169(g_tTex2du4a) Binding 0 Decorate 169(g_tTex2du4a) DescriptorSet 0 Decorate 172(g_tTexcdf4a) Binding 0 Decorate 172(g_tTexcdf4a) DescriptorSet 0 Decorate 175(g_tTexcdi4a) Binding 0 Decorate 175(g_tTexcdi4a) DescriptorSet 0 Decorate 178(g_tTexcdu4a) Binding 0 Decorate 178(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypeImage 6(float) 1D sampled format:Unknown 13: TypePointer UniformConstant 12 14(g_tTex1df4): 13(ptr) Variable UniformConstant 16: TypeInt 32 1 17: TypeVector 16(int) 2 18: TypeVector 16(int) 3 19: TypeVector 16(int) 4 20($Global): TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 21: TypePointer Uniform 20($Global) 22: 21(ptr) Variable Uniform 23: 16(int) Constant 1 24: TypeInt 32 0 25: 24(int) Constant 0 26: TypePointer Uniform 16(int) 29: 24(int) Constant 1 33: TypeImage 16(int) 1D sampled format:Unknown 34: TypePointer UniformConstant 33 35(g_tTex1di4): 34(ptr) Variable UniformConstant 42: TypeImage 24(int) 1D sampled format:Unknown 43: TypePointer UniformConstant 42 44(g_tTex1du4): 43(ptr) Variable UniformConstant 50: TypeVector 24(int) 4 52: TypeImage 6(float) 2D sampled format:Unknown 53: TypePointer UniformConstant 52 54(g_tTex2df4): 53(ptr) Variable UniformConstant 56: 16(int) Constant 2 57: TypePointer Uniform 18(ivec3) 61: 24(int) Constant 2 65: TypeImage 16(int) 2D sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2di4): 66(ptr) Variable UniformConstant 75: TypeImage 24(int) 2D sampled format:Unknown 76: TypePointer UniformConstant 75 77(g_tTex2du4): 76(ptr) Variable UniformConstant 85: TypeImage 6(float) 3D sampled format:Unknown 86: TypePointer UniformConstant 85 87(g_tTex3df4): 86(ptr) Variable UniformConstant 89: 16(int) Constant 3 90: TypePointer Uniform 19(ivec4) 94: 24(int) Constant 3 98: TypeImage 16(int) 3D sampled format:Unknown 99: TypePointer UniformConstant 98 100(g_tTex3di4): 99(ptr) Variable UniformConstant 108: TypeImage 24(int) 3D sampled format:Unknown 109: TypePointer UniformConstant 108 110(g_tTex3du4): 109(ptr) Variable UniformConstant 118: TypePointer Function 8(PS_OUTPUT) 120: 16(int) Constant 0 121: 6(float) Constant 1065353216 122: 7(fvec4) ConstantComposite 121 121 121 121 123: TypePointer Function 7(fvec4) 125: TypePointer Function 6(float) 132: TypePointer Output 7(fvec4) 133(@entryPointOutput.Color): 132(ptr) Variable Output 136: TypePointer Output 6(float) 137(@entryPointOutput.Depth): 136(ptr) Variable Output 140: TypeSampler 141: TypePointer UniformConstant 140 142(g_sSamp): 141(ptr) Variable UniformConstant 143: TypeImage 6(float) Cube sampled format:Unknown 144: TypePointer UniformConstant 143 145(g_tTexcdf4): 144(ptr) Variable UniformConstant 146: TypeImage 16(int) Cube sampled format:Unknown 147: TypePointer UniformConstant 146 148(g_tTexcdi4): 147(ptr) Variable UniformConstant 149: TypeImage 24(int) Cube sampled format:Unknown 150: TypePointer UniformConstant 149 151(g_tTexcdu4): 150(ptr) Variable UniformConstant 152: TypeImage 6(float) 1D array sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTex1df4a): 153(ptr) Variable UniformConstant 155: TypeImage 16(int) 1D array sampled format:Unknown 156: TypePointer UniformConstant 155 157(g_tTex1di4a): 156(ptr) Variable UniformConstant 158: TypeImage 24(int) 1D array sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTex1du4a): 159(ptr) Variable UniformConstant 161: TypeImage 6(float) 2D array sampled format:Unknown 162: TypePointer UniformConstant 161 163(g_tTex2df4a): 162(ptr) Variable UniformConstant 164: TypeImage 16(int) 2D array sampled format:Unknown 165: TypePointer UniformConstant 164 166(g_tTex2di4a): 165(ptr) Variable UniformConstant 167: TypeImage 24(int) 2D array sampled format:Unknown 168: TypePointer UniformConstant 167 169(g_tTex2du4a): 168(ptr) Variable UniformConstant 170: TypeImage 6(float) Cube array sampled format:Unknown 171: TypePointer UniformConstant 170 172(g_tTexcdf4a): 171(ptr) Variable UniformConstant 173: TypeImage 16(int) Cube array sampled format:Unknown 174: TypePointer UniformConstant 173 175(g_tTexcdi4a): 174(ptr) Variable UniformConstant 176: TypeImage 24(int) Cube array sampled format:Unknown 177: TypePointer UniformConstant 176 178(g_tTexcdu4a): 177(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 130(flattenTemp): 118(ptr) Variable Function 131:8(PS_OUTPUT) FunctionCall 10(@main() Store 130(flattenTemp) 131 134: 123(ptr) AccessChain 130(flattenTemp) 120 135: 7(fvec4) Load 134 Store 133(@entryPointOutput.Color) 135 138: 125(ptr) AccessChain 130(flattenTemp) 23 139: 6(float) Load 138 Store 137(@entryPointOutput.Depth) 139 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 119(psout): 118(ptr) Variable Function 15: 12 Load 14(g_tTex1df4) 27: 26(ptr) AccessChain 22 23 25 28: 16(int) Load 27 30: 26(ptr) AccessChain 22 23 29 31: 16(int) Load 30 32: 7(fvec4) ImageFetch 15 28 Lod 31 36: 33 Load 35(g_tTex1di4) 37: 26(ptr) AccessChain 22 23 25 38: 16(int) Load 37 39: 26(ptr) AccessChain 22 23 29 40: 16(int) Load 39 41: 19(ivec4) ImageFetch 36 38 Lod 40 45: 42 Load 44(g_tTex1du4) 46: 26(ptr) AccessChain 22 23 25 47: 16(int) Load 46 48: 26(ptr) AccessChain 22 23 29 49: 16(int) Load 48 51: 50(ivec4) ImageFetch 45 47 Lod 49 55: 52 Load 54(g_tTex2df4) 58: 57(ptr) AccessChain 22 56 59: 18(ivec3) Load 58 60: 17(ivec2) VectorShuffle 59 59 0 1 62: 26(ptr) AccessChain 22 56 61 63: 16(int) Load 62 64: 7(fvec4) ImageFetch 55 60 Lod 63 68: 65 Load 67(g_tTex2di4) 69: 57(ptr) AccessChain 22 56 70: 18(ivec3) Load 69 71: 17(ivec2) VectorShuffle 70 70 0 1 72: 26(ptr) AccessChain 22 56 61 73: 16(int) Load 72 74: 19(ivec4) ImageFetch 68 71 Lod 73 78: 75 Load 77(g_tTex2du4) 79: 57(ptr) AccessChain 22 56 80: 18(ivec3) Load 79 81: 17(ivec2) VectorShuffle 80 80 0 1 82: 26(ptr) AccessChain 22 56 61 83: 16(int) Load 82 84: 50(ivec4) ImageFetch 78 81 Lod 83 88: 85 Load 87(g_tTex3df4) 91: 90(ptr) AccessChain 22 89 92: 19(ivec4) Load 91 93: 18(ivec3) VectorShuffle 92 92 0 1 2 95: 26(ptr) AccessChain 22 89 94 96: 16(int) Load 95 97: 7(fvec4) ImageFetch 88 93 Lod 96 101: 98 Load 100(g_tTex3di4) 102: 90(ptr) AccessChain 22 89 103: 19(ivec4) Load 102 104: 18(ivec3) VectorShuffle 103 103 0 1 2 105: 26(ptr) AccessChain 22 89 94 106: 16(int) Load 105 107: 19(ivec4) ImageFetch 101 104 Lod 106 111: 108 Load 110(g_tTex3du4) 112: 90(ptr) AccessChain 22 89 113: 19(ivec4) Load 112 114: 18(ivec3) VectorShuffle 113 113 0 1 2 115: 26(ptr) AccessChain 22 89 94 116: 16(int) Load 115 117: 50(ivec4) ImageFetch 111 114 Lod 116 124: 123(ptr) AccessChain 119(psout) 120 Store 124 122 126: 125(ptr) AccessChain 119(psout) 23 Store 126 121 127:8(PS_OUTPUT) Load 119(psout) ReturnValue 127 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.basic.dx10.vert.out000066400000000000000000001304041506534232700236740ustar00rootroot00000000000000hlsl.load.basic.dx10.vert Shader version: 500 0:? Sequence 0:47 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:47 Function Parameters: 0:? Sequence 0:51 textureFetch ( temp 4-component vector of float) 0:51 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:51 vector swizzle ( temp int) 0:51 c2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 direct index ( temp int) 0:51 c2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Constant: 0:51 1 (const int) 0:52 textureFetch ( temp 4-component vector of int) 0:52 'g_tTex1di4' ( uniform itexture1D) 0:52 vector swizzle ( temp int) 0:52 c2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index ( temp int) 0:52 c2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) 0:53 textureFetch ( temp 4-component vector of uint) 0:53 'g_tTex1du4' ( uniform utexture1D) 0:53 vector swizzle ( temp int) 0:53 c2: direct index for structure ( uniform 2-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index ( temp int) 0:53 c2: direct index for structure ( uniform 2-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) 0:56 textureFetch ( temp 4-component vector of float) 0:56 'g_tTex2df4' ( uniform texture2D) 0:56 vector swizzle ( temp 2-component vector of int) 0:56 c3: direct index for structure ( uniform 3-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 2 (const uint) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 direct index ( temp int) 0:56 c3: direct index for structure ( uniform 3-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 2 (const uint) 0:56 Constant: 0:56 2 (const int) 0:57 textureFetch ( temp 4-component vector of int) 0:57 'g_tTex2di4' ( uniform itexture2D) 0:57 vector swizzle ( temp 2-component vector of int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index ( temp int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:58 textureFetch ( temp 4-component vector of uint) 0:58 'g_tTex2du4' ( uniform utexture2D) 0:58 vector swizzle ( temp 2-component vector of int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index ( temp int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:61 textureFetch ( temp 4-component vector of float) 0:61 'g_tTex3df4' ( uniform texture3D) 0:61 vector swizzle ( temp 3-component vector of int) 0:61 c4: direct index for structure ( uniform 4-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 3 (const uint) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 direct index ( temp int) 0:61 c4: direct index for structure ( uniform 4-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 3 (const uint) 0:61 Constant: 0:61 3 (const int) 0:62 textureFetch ( temp 4-component vector of int) 0:62 'g_tTex3di4' ( uniform itexture3D) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 direct index ( temp int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:63 textureFetch ( temp 4-component vector of uint) 0:63 'g_tTex3du4' ( uniform utexture3D) 0:63 vector swizzle ( temp 3-component vector of int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 direct index ( temp int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:67 move second child to first child ( temp 4-component vector of float) 0:67 Pos: direct index for structure ( temp 4-component vector of float) 0:67 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:69 Branch: Return with expression 0:69 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:47 Function Definition: main( ( temp void) 0:47 Function Parameters: 0:? Sequence 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:47 Pos: direct index for structure ( temp 4-component vector of float) 0:47 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:47 Constant: 0:47 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:47 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:47 Function Parameters: 0:? Sequence 0:51 textureFetch ( temp 4-component vector of float) 0:51 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:51 vector swizzle ( temp int) 0:51 c2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 direct index ( temp int) 0:51 c2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) 0:51 Constant: 0:51 1 (const int) 0:52 textureFetch ( temp 4-component vector of int) 0:52 'g_tTex1di4' ( uniform itexture1D) 0:52 vector swizzle ( temp int) 0:52 c2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index ( temp int) 0:52 c2: direct index for structure ( uniform 2-component vector of int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) 0:53 textureFetch ( temp 4-component vector of uint) 0:53 'g_tTex1du4' ( uniform utexture1D) 0:53 vector swizzle ( temp int) 0:53 c2: direct index for structure ( uniform 2-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index ( temp int) 0:53 c2: direct index for structure ( uniform 2-component vector of int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) 0:56 textureFetch ( temp 4-component vector of float) 0:56 'g_tTex2df4' ( uniform texture2D) 0:56 vector swizzle ( temp 2-component vector of int) 0:56 c3: direct index for structure ( uniform 3-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 2 (const uint) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 direct index ( temp int) 0:56 c3: direct index for structure ( uniform 3-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 2 (const uint) 0:56 Constant: 0:56 2 (const int) 0:57 textureFetch ( temp 4-component vector of int) 0:57 'g_tTex2di4' ( uniform itexture2D) 0:57 vector swizzle ( temp 2-component vector of int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index ( temp int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:58 textureFetch ( temp 4-component vector of uint) 0:58 'g_tTex2du4' ( uniform utexture2D) 0:58 vector swizzle ( temp 2-component vector of int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index ( temp int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:61 textureFetch ( temp 4-component vector of float) 0:61 'g_tTex3df4' ( uniform texture3D) 0:61 vector swizzle ( temp 3-component vector of int) 0:61 c4: direct index for structure ( uniform 4-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 3 (const uint) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const int) 0:61 direct index ( temp int) 0:61 c4: direct index for structure ( uniform 4-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 3 (const uint) 0:61 Constant: 0:61 3 (const int) 0:62 textureFetch ( temp 4-component vector of int) 0:62 'g_tTex3di4' ( uniform itexture3D) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 direct index ( temp int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:63 textureFetch ( temp 4-component vector of uint) 0:63 'g_tTex3du4' ( uniform utexture3D) 0:63 vector swizzle ( temp 3-component vector of int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 direct index ( temp int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:67 move second child to first child ( temp 4-component vector of float) 0:67 Pos: direct index for structure ( temp 4-component vector of float) 0:67 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:69 Branch: Return with expression 0:69 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:47 Function Definition: main( ( temp void) 0:47 Function Parameters: 0:? Sequence 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:47 Pos: direct index for structure ( temp 4-component vector of float) 0:47 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:47 Constant: 0:47 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 171 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 129 Source HLSL 500 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" Name 10 "@main(" Name 14 "g_tTex1df4" Name 20 "$Global" MemberName 20($Global) 0 "c1" MemberName 20($Global) 1 "c2" MemberName 20($Global) 2 "c3" MemberName 20($Global) 3 "c4" MemberName 20($Global) 4 "o1" MemberName 20($Global) 5 "o2" MemberName 20($Global) 6 "o3" MemberName 20($Global) 7 "o4" Name 22 "" Name 35 "g_tTex1di4" Name 44 "g_tTex1du4" Name 54 "g_tTex2df4" Name 67 "g_tTex2di4" Name 77 "g_tTex2du4" Name 87 "g_tTex3df4" Name 100 "g_tTex3di4" Name 110 "g_tTex3du4" Name 119 "vsout" Name 129 "@entryPointOutput.Pos" Name 134 "g_sSamp" Name 137 "g_tTexcdf4" Name 140 "g_tTexcdi4" Name 143 "g_tTexcdu4" Name 146 "g_tTex1df4a" Name 149 "g_tTex1di4a" Name 152 "g_tTex1du4a" Name 155 "g_tTex2df4a" Name 158 "g_tTex2di4a" Name 161 "g_tTex2du4a" Name 164 "g_tTexcdf4a" Name 167 "g_tTexcdi4a" Name 170 "g_tTexcdu4a" Decorate 14(g_tTex1df4) Binding 0 Decorate 14(g_tTex1df4) DescriptorSet 0 Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 MemberDecorate 20($Global) 3 Offset 32 MemberDecorate 20($Global) 4 Offset 48 MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 Decorate 22 Binding 9 Decorate 22 DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 44(g_tTex1du4) Binding 2 Decorate 44(g_tTex1du4) DescriptorSet 0 Decorate 54(g_tTex2df4) Binding 3 Decorate 54(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 4 Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 77(g_tTex2du4) Binding 5 Decorate 77(g_tTex2du4) DescriptorSet 0 Decorate 87(g_tTex3df4) Binding 6 Decorate 87(g_tTex3df4) DescriptorSet 0 Decorate 100(g_tTex3di4) Binding 7 Decorate 100(g_tTex3di4) DescriptorSet 0 Decorate 110(g_tTex3du4) Binding 8 Decorate 110(g_tTex3du4) DescriptorSet 0 Decorate 129(@entryPointOutput.Pos) BuiltIn Position Decorate 134(g_sSamp) Binding 0 Decorate 134(g_sSamp) DescriptorSet 0 Decorate 137(g_tTexcdf4) Binding 0 Decorate 137(g_tTexcdf4) DescriptorSet 0 Decorate 140(g_tTexcdi4) Binding 0 Decorate 140(g_tTexcdi4) DescriptorSet 0 Decorate 143(g_tTexcdu4) Binding 0 Decorate 143(g_tTexcdu4) DescriptorSet 0 Decorate 146(g_tTex1df4a) Binding 0 Decorate 146(g_tTex1df4a) DescriptorSet 0 Decorate 149(g_tTex1di4a) Binding 0 Decorate 149(g_tTex1di4a) DescriptorSet 0 Decorate 152(g_tTex1du4a) Binding 0 Decorate 152(g_tTex1du4a) DescriptorSet 0 Decorate 155(g_tTex2df4a) Binding 0 Decorate 155(g_tTex2df4a) DescriptorSet 0 Decorate 158(g_tTex2di4a) Binding 0 Decorate 158(g_tTex2di4a) DescriptorSet 0 Decorate 161(g_tTex2du4a) Binding 0 Decorate 161(g_tTex2du4a) DescriptorSet 0 Decorate 164(g_tTexcdf4a) Binding 0 Decorate 164(g_tTexcdf4a) DescriptorSet 0 Decorate 167(g_tTexcdi4a) Binding 0 Decorate 167(g_tTexcdi4a) DescriptorSet 0 Decorate 170(g_tTexcdu4a) Binding 0 Decorate 170(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(VS_OUTPUT) 12: TypeImage 6(float) 1D sampled format:Unknown 13: TypePointer UniformConstant 12 14(g_tTex1df4): 13(ptr) Variable UniformConstant 16: TypeInt 32 1 17: TypeVector 16(int) 2 18: TypeVector 16(int) 3 19: TypeVector 16(int) 4 20($Global): TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 21: TypePointer Uniform 20($Global) 22: 21(ptr) Variable Uniform 23: 16(int) Constant 1 24: TypeInt 32 0 25: 24(int) Constant 0 26: TypePointer Uniform 16(int) 29: 24(int) Constant 1 33: TypeImage 16(int) 1D sampled format:Unknown 34: TypePointer UniformConstant 33 35(g_tTex1di4): 34(ptr) Variable UniformConstant 42: TypeImage 24(int) 1D sampled format:Unknown 43: TypePointer UniformConstant 42 44(g_tTex1du4): 43(ptr) Variable UniformConstant 50: TypeVector 24(int) 4 52: TypeImage 6(float) 2D sampled format:Unknown 53: TypePointer UniformConstant 52 54(g_tTex2df4): 53(ptr) Variable UniformConstant 56: 16(int) Constant 2 57: TypePointer Uniform 18(ivec3) 61: 24(int) Constant 2 65: TypeImage 16(int) 2D sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2di4): 66(ptr) Variable UniformConstant 75: TypeImage 24(int) 2D sampled format:Unknown 76: TypePointer UniformConstant 75 77(g_tTex2du4): 76(ptr) Variable UniformConstant 85: TypeImage 6(float) 3D sampled format:Unknown 86: TypePointer UniformConstant 85 87(g_tTex3df4): 86(ptr) Variable UniformConstant 89: 16(int) Constant 3 90: TypePointer Uniform 19(ivec4) 94: 24(int) Constant 3 98: TypeImage 16(int) 3D sampled format:Unknown 99: TypePointer UniformConstant 98 100(g_tTex3di4): 99(ptr) Variable UniformConstant 108: TypeImage 24(int) 3D sampled format:Unknown 109: TypePointer UniformConstant 108 110(g_tTex3du4): 109(ptr) Variable UniformConstant 118: TypePointer Function 8(VS_OUTPUT) 120: 16(int) Constant 0 121: 6(float) Constant 0 122: 7(fvec4) ConstantComposite 121 121 121 121 123: TypePointer Function 7(fvec4) 128: TypePointer Output 7(fvec4) 129(@entryPointOutput.Pos): 128(ptr) Variable Output 132: TypeSampler 133: TypePointer UniformConstant 132 134(g_sSamp): 133(ptr) Variable UniformConstant 135: TypeImage 6(float) Cube sampled format:Unknown 136: TypePointer UniformConstant 135 137(g_tTexcdf4): 136(ptr) Variable UniformConstant 138: TypeImage 16(int) Cube sampled format:Unknown 139: TypePointer UniformConstant 138 140(g_tTexcdi4): 139(ptr) Variable UniformConstant 141: TypeImage 24(int) Cube sampled format:Unknown 142: TypePointer UniformConstant 141 143(g_tTexcdu4): 142(ptr) Variable UniformConstant 144: TypeImage 6(float) 1D array sampled format:Unknown 145: TypePointer UniformConstant 144 146(g_tTex1df4a): 145(ptr) Variable UniformConstant 147: TypeImage 16(int) 1D array sampled format:Unknown 148: TypePointer UniformConstant 147 149(g_tTex1di4a): 148(ptr) Variable UniformConstant 150: TypeImage 24(int) 1D array sampled format:Unknown 151: TypePointer UniformConstant 150 152(g_tTex1du4a): 151(ptr) Variable UniformConstant 153: TypeImage 6(float) 2D array sampled format:Unknown 154: TypePointer UniformConstant 153 155(g_tTex2df4a): 154(ptr) Variable UniformConstant 156: TypeImage 16(int) 2D array sampled format:Unknown 157: TypePointer UniformConstant 156 158(g_tTex2di4a): 157(ptr) Variable UniformConstant 159: TypeImage 24(int) 2D array sampled format:Unknown 160: TypePointer UniformConstant 159 161(g_tTex2du4a): 160(ptr) Variable UniformConstant 162: TypeImage 6(float) Cube array sampled format:Unknown 163: TypePointer UniformConstant 162 164(g_tTexcdf4a): 163(ptr) Variable UniformConstant 165: TypeImage 16(int) Cube array sampled format:Unknown 166: TypePointer UniformConstant 165 167(g_tTexcdi4a): 166(ptr) Variable UniformConstant 168: TypeImage 24(int) Cube array sampled format:Unknown 169: TypePointer UniformConstant 168 170(g_tTexcdu4a): 169(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 130:8(VS_OUTPUT) FunctionCall 10(@main() 131: 7(fvec4) CompositeExtract 130 0 Store 129(@entryPointOutput.Pos) 131 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 11: Label 119(vsout): 118(ptr) Variable Function 15: 12 Load 14(g_tTex1df4) 27: 26(ptr) AccessChain 22 23 25 28: 16(int) Load 27 30: 26(ptr) AccessChain 22 23 29 31: 16(int) Load 30 32: 7(fvec4) ImageFetch 15 28 Lod 31 36: 33 Load 35(g_tTex1di4) 37: 26(ptr) AccessChain 22 23 25 38: 16(int) Load 37 39: 26(ptr) AccessChain 22 23 29 40: 16(int) Load 39 41: 19(ivec4) ImageFetch 36 38 Lod 40 45: 42 Load 44(g_tTex1du4) 46: 26(ptr) AccessChain 22 23 25 47: 16(int) Load 46 48: 26(ptr) AccessChain 22 23 29 49: 16(int) Load 48 51: 50(ivec4) ImageFetch 45 47 Lod 49 55: 52 Load 54(g_tTex2df4) 58: 57(ptr) AccessChain 22 56 59: 18(ivec3) Load 58 60: 17(ivec2) VectorShuffle 59 59 0 1 62: 26(ptr) AccessChain 22 56 61 63: 16(int) Load 62 64: 7(fvec4) ImageFetch 55 60 Lod 63 68: 65 Load 67(g_tTex2di4) 69: 57(ptr) AccessChain 22 56 70: 18(ivec3) Load 69 71: 17(ivec2) VectorShuffle 70 70 0 1 72: 26(ptr) AccessChain 22 56 61 73: 16(int) Load 72 74: 19(ivec4) ImageFetch 68 71 Lod 73 78: 75 Load 77(g_tTex2du4) 79: 57(ptr) AccessChain 22 56 80: 18(ivec3) Load 79 81: 17(ivec2) VectorShuffle 80 80 0 1 82: 26(ptr) AccessChain 22 56 61 83: 16(int) Load 82 84: 50(ivec4) ImageFetch 78 81 Lod 83 88: 85 Load 87(g_tTex3df4) 91: 90(ptr) AccessChain 22 89 92: 19(ivec4) Load 91 93: 18(ivec3) VectorShuffle 92 92 0 1 2 95: 26(ptr) AccessChain 22 89 94 96: 16(int) Load 95 97: 7(fvec4) ImageFetch 88 93 Lod 96 101: 98 Load 100(g_tTex3di4) 102: 90(ptr) AccessChain 22 89 103: 19(ivec4) Load 102 104: 18(ivec3) VectorShuffle 103 103 0 1 2 105: 26(ptr) AccessChain 22 89 94 106: 16(int) Load 105 107: 19(ivec4) ImageFetch 101 104 Lod 106 111: 108 Load 110(g_tTex3du4) 112: 90(ptr) AccessChain 22 89 113: 19(ivec4) Load 112 114: 18(ivec3) VectorShuffle 113 113 0 1 2 115: 26(ptr) AccessChain 22 89 94 116: 16(int) Load 115 117: 50(ivec4) ImageFetch 111 114 Lod 116 124: 123(ptr) AccessChain 119(vsout) 120 Store 124 122 125:8(VS_OUTPUT) Load 119(vsout) ReturnValue 125 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.buffer.dx10.frag.out000066400000000000000000000436261506534232700240340ustar00rootroot00000000000000hlsl.load.buffer.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'r00' ( temp 4-component vector of float) 0:28 textureFetch ( temp 4-component vector of float) 0:28 'g_tTexbf4' (layout( rgba32f) uniform textureBuffer) 0:28 c1: direct index for structure ( uniform int) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:28 Constant: 0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of int) 0:29 'r01' ( temp 4-component vector of int) 0:29 textureFetch ( temp 4-component vector of int) 0:29 'g_tTexbi4' (layout( rgba32i) uniform itextureBuffer) 0:29 c1: direct index for structure ( uniform int) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:29 Constant: 0:29 0 (const uint) 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of uint) 0:30 'r02' ( temp 4-component vector of uint) 0:30 textureFetch ( temp 4-component vector of uint) 0:30 'g_tTexbu4' (layout( rgba32ui) uniform utextureBuffer) 0:30 c1: direct index for structure ( uniform int) 0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:30 Constant: 0:30 0 (const uint) 0:34 move second child to first child ( temp 4-component vector of float) 0:34 Color: direct index for structure ( temp 4-component vector of float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1.000000 0:34 1.000000 0:34 1.000000 0:34 1.000000 0:35 move second child to first child ( temp float) 0:35 Depth: direct index for structure ( temp float) 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1.000000 0:37 Branch: Return with expression 0:37 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) uniform textureBuffer) 0:? 'g_tTexbf4' (layout( rgba32f) uniform textureBuffer) 0:? 'g_tTexbi4' (layout( rgba32i) uniform itextureBuffer) 0:? 'g_tTexbu4' (layout( rgba32ui) uniform utextureBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'r00' ( temp 4-component vector of float) 0:28 textureFetch ( temp 4-component vector of float) 0:28 'g_tTexbf4' (layout( rgba32f) uniform textureBuffer) 0:28 c1: direct index for structure ( uniform int) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:28 Constant: 0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of int) 0:29 'r01' ( temp 4-component vector of int) 0:29 textureFetch ( temp 4-component vector of int) 0:29 'g_tTexbi4' (layout( rgba32i) uniform itextureBuffer) 0:29 c1: direct index for structure ( uniform int) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:29 Constant: 0:29 0 (const uint) 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of uint) 0:30 'r02' ( temp 4-component vector of uint) 0:30 textureFetch ( temp 4-component vector of uint) 0:30 'g_tTexbu4' (layout( rgba32ui) uniform utextureBuffer) 0:30 c1: direct index for structure ( uniform int) 0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:30 Constant: 0:30 0 (const uint) 0:34 move second child to first child ( temp 4-component vector of float) 0:34 Color: direct index for structure ( temp 4-component vector of float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1.000000 0:34 1.000000 0:34 1.000000 0:34 1.000000 0:35 move second child to first child ( temp float) 0:35 Depth: direct index for structure ( temp float) 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1.000000 0:37 Branch: Return with expression 0:37 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) uniform textureBuffer) 0:? 'g_tTexbf4' (layout( rgba32f) uniform textureBuffer) 0:? 'g_tTexbi4' (layout( rgba32i) uniform itextureBuffer) 0:? 'g_tTexbu4' (layout( rgba32ui) uniform utextureBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 64 68 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r00" Name 16 "g_tTexbf4" Name 22 "$Global" MemberName 22($Global) 0 "c1" MemberName 22($Global) 1 "c2" MemberName 22($Global) 2 "c3" MemberName 22($Global) 3 "c4" MemberName 22($Global) 4 "o1" MemberName 22($Global) 5 "o2" MemberName 22($Global) 6 "o3" MemberName 22($Global) 7 "o4" Name 24 "" Name 31 "r01" Name 34 "g_tTexbi4" Name 42 "r02" Name 45 "g_tTexbu4" Name 51 "psout" Name 61 "flattenTemp" Name 64 "@entryPointOutput.Color" Name 68 "@entryPointOutput.Depth" Name 71 "g_tTexbf4_test" Decorate 16(g_tTexbf4) Binding 1 Decorate 16(g_tTexbf4) DescriptorSet 0 Decorate 22($Global) Block MemberDecorate 22($Global) 0 Offset 0 MemberDecorate 22($Global) 1 Offset 8 MemberDecorate 22($Global) 2 Offset 16 MemberDecorate 22($Global) 3 Offset 32 MemberDecorate 22($Global) 4 Offset 48 MemberDecorate 22($Global) 5 Offset 56 MemberDecorate 22($Global) 6 Offset 64 MemberDecorate 22($Global) 7 Offset 80 Decorate 24 Binding 4 Decorate 24 DescriptorSet 0 Decorate 34(g_tTexbi4) Binding 2 Decorate 34(g_tTexbi4) DescriptorSet 0 Decorate 45(g_tTexbu4) Binding 3 Decorate 45(g_tTexbu4) DescriptorSet 0 Decorate 64(@entryPointOutput.Color) Location 0 Decorate 68(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 71(g_tTexbf4_test) Binding 0 Decorate 71(g_tTexbf4_test) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) Buffer sampled format:Rgba32f 15: TypePointer UniformConstant 14 16(g_tTexbf4): 15(ptr) Variable UniformConstant 18: TypeInt 32 1 19: TypeVector 18(int) 2 20: TypeVector 18(int) 3 21: TypeVector 18(int) 4 22($Global): TypeStruct 18(int) 19(ivec2) 20(ivec3) 21(ivec4) 18(int) 19(ivec2) 20(ivec3) 21(ivec4) 23: TypePointer Uniform 22($Global) 24: 23(ptr) Variable Uniform 25: 18(int) Constant 0 26: TypePointer Uniform 18(int) 30: TypePointer Function 21(ivec4) 32: TypeImage 18(int) Buffer sampled format:Rgba32i 33: TypePointer UniformConstant 32 34(g_tTexbi4): 33(ptr) Variable UniformConstant 39: TypeInt 32 0 40: TypeVector 39(int) 4 41: TypePointer Function 40(ivec4) 43: TypeImage 39(int) Buffer sampled format:Rgba32ui 44: TypePointer UniformConstant 43 45(g_tTexbu4): 44(ptr) Variable UniformConstant 50: TypePointer Function 8(PS_OUTPUT) 52: 6(float) Constant 1065353216 53: 7(fvec4) ConstantComposite 52 52 52 52 55: 18(int) Constant 1 56: TypePointer Function 6(float) 63: TypePointer Output 7(fvec4) 64(@entryPointOutput.Color): 63(ptr) Variable Output 67: TypePointer Output 6(float) 68(@entryPointOutput.Depth): 67(ptr) Variable Output 71(g_tTexbf4_test): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 61(flattenTemp): 50(ptr) Variable Function 62:8(PS_OUTPUT) FunctionCall 10(@main() Store 61(flattenTemp) 62 65: 12(ptr) AccessChain 61(flattenTemp) 25 66: 7(fvec4) Load 65 Store 64(@entryPointOutput.Color) 66 69: 56(ptr) AccessChain 61(flattenTemp) 55 70: 6(float) Load 69 Store 68(@entryPointOutput.Depth) 70 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function 31(r01): 30(ptr) Variable Function 42(r02): 41(ptr) Variable Function 51(psout): 50(ptr) Variable Function 17: 14 Load 16(g_tTexbf4) 27: 26(ptr) AccessChain 24 25 28: 18(int) Load 27 29: 7(fvec4) ImageFetch 17 28 Store 13(r00) 29 35: 32 Load 34(g_tTexbi4) 36: 26(ptr) AccessChain 24 25 37: 18(int) Load 36 38: 21(ivec4) ImageFetch 35 37 Store 31(r01) 38 46: 43 Load 45(g_tTexbu4) 47: 26(ptr) AccessChain 24 25 48: 18(int) Load 47 49: 40(ivec4) ImageFetch 46 48 Store 42(r02) 49 54: 12(ptr) AccessChain 51(psout) 25 Store 54 53 57: 56(ptr) AccessChain 51(psout) 55 Store 57 52 58:8(PS_OUTPUT) Load 51(psout) ReturnValue 58 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out000066400000000000000000000440751506534232700251370ustar00rootroot00000000000000hlsl.load.buffer.float.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'r00' ( temp float) 0:28 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:28 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:28 c1: direct index for structure ( uniform int) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:28 Constant: 0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'r01' ( temp int) 0:29 Construct int ( temp int) 0:? textureFetch ( temp 4-component vector of int) 0:29 'g_tTexbis' (layout( r32i) uniform itextureBuffer) 0:29 c1: direct index for structure ( uniform int) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:29 Constant: 0:29 0 (const uint) 0:30 Sequence 0:30 move second child to first child ( temp uint) 0:30 'r02' ( temp uint) 0:30 Construct uint ( temp uint) 0:? textureFetch ( temp 4-component vector of uint) 0:30 'g_tTexbus' (layout( r32ui) uniform utextureBuffer) 0:30 c1: direct index for structure ( uniform int) 0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:30 Constant: 0:30 0 (const uint) 0:34 move second child to first child ( temp 4-component vector of float) 0:34 Color: direct index for structure ( temp 4-component vector of float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1.000000 0:34 1.000000 0:34 1.000000 0:34 1.000000 0:35 move second child to first child ( temp float) 0:35 Depth: direct index for structure ( temp float) 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1.000000 0:37 Branch: Return with expression 0:37 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_tTexbfs_test' (layout( binding=0 r32f) uniform textureBuffer) 0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:? 'g_tTexbis' (layout( r32i) uniform itextureBuffer) 0:? 'g_tTexbus' (layout( r32ui) uniform utextureBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'r00' ( temp float) 0:28 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:28 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:28 c1: direct index for structure ( uniform int) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:28 Constant: 0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'r01' ( temp int) 0:29 Construct int ( temp int) 0:? textureFetch ( temp 4-component vector of int) 0:29 'g_tTexbis' (layout( r32i) uniform itextureBuffer) 0:29 c1: direct index for structure ( uniform int) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:29 Constant: 0:29 0 (const uint) 0:30 Sequence 0:30 move second child to first child ( temp uint) 0:30 'r02' ( temp uint) 0:30 Construct uint ( temp uint) 0:? textureFetch ( temp 4-component vector of uint) 0:30 'g_tTexbus' (layout( r32ui) uniform utextureBuffer) 0:30 c1: direct index for structure ( uniform int) 0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:30 Constant: 0:30 0 (const uint) 0:34 move second child to first child ( temp 4-component vector of float) 0:34 Color: direct index for structure ( temp 4-component vector of float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1.000000 0:34 1.000000 0:34 1.000000 0:34 1.000000 0:35 move second child to first child ( temp float) 0:35 Depth: direct index for structure ( temp float) 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:35 Constant: 0:35 1 (const int) 0:35 Constant: 0:35 1.000000 0:37 Branch: Return with expression 0:37 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_tTexbfs_test' (layout( binding=0 r32f) uniform textureBuffer) 0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer) 0:? 'g_tTexbis' (layout( r32i) uniform itextureBuffer) 0:? 'g_tTexbus' (layout( r32ui) uniform utextureBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 75 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 67 71 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r00" Name 16 "g_tTexbfs" Name 22 "$Global" MemberName 22($Global) 0 "c1" MemberName 22($Global) 1 "c2" MemberName 22($Global) 2 "c3" MemberName 22($Global) 3 "c4" MemberName 22($Global) 4 "o1" MemberName 22($Global) 5 "o2" MemberName 22($Global) 6 "o3" MemberName 22($Global) 7 "o4" Name 24 "" Name 32 "r01" Name 35 "g_tTexbis" Name 43 "r02" Name 46 "g_tTexbus" Name 54 "psout" Name 64 "flattenTemp" Name 67 "@entryPointOutput.Color" Name 71 "@entryPointOutput.Depth" Name 74 "g_tTexbfs_test" Decorate 16(g_tTexbfs) Binding 1 Decorate 16(g_tTexbfs) DescriptorSet 0 Decorate 22($Global) Block MemberDecorate 22($Global) 0 Offset 0 MemberDecorate 22($Global) 1 Offset 8 MemberDecorate 22($Global) 2 Offset 16 MemberDecorate 22($Global) 3 Offset 32 MemberDecorate 22($Global) 4 Offset 48 MemberDecorate 22($Global) 5 Offset 56 MemberDecorate 22($Global) 6 Offset 64 MemberDecorate 22($Global) 7 Offset 80 Decorate 24 Binding 4 Decorate 24 DescriptorSet 0 Decorate 35(g_tTexbis) Binding 2 Decorate 35(g_tTexbis) DescriptorSet 0 Decorate 46(g_tTexbus) Binding 3 Decorate 46(g_tTexbus) DescriptorSet 0 Decorate 67(@entryPointOutput.Color) Location 0 Decorate 71(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 74(g_tTexbfs_test) Binding 0 Decorate 74(g_tTexbfs_test) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) Buffer sampled format:R32f 15: TypePointer UniformConstant 14 16(g_tTexbfs): 15(ptr) Variable UniformConstant 18: TypeInt 32 1 19: TypeVector 18(int) 2 20: TypeVector 18(int) 3 21: TypeVector 18(int) 4 22($Global): TypeStruct 18(int) 19(ivec2) 20(ivec3) 21(ivec4) 18(int) 19(ivec2) 20(ivec3) 21(ivec4) 23: TypePointer Uniform 22($Global) 24: 23(ptr) Variable Uniform 25: 18(int) Constant 0 26: TypePointer Uniform 18(int) 31: TypePointer Function 18(int) 33: TypeImage 18(int) Buffer sampled format:R32i 34: TypePointer UniformConstant 33 35(g_tTexbis): 34(ptr) Variable UniformConstant 41: TypeInt 32 0 42: TypePointer Function 41(int) 44: TypeImage 41(int) Buffer sampled format:R32ui 45: TypePointer UniformConstant 44 46(g_tTexbus): 45(ptr) Variable UniformConstant 50: TypeVector 41(int) 4 53: TypePointer Function 8(PS_OUTPUT) 55: 6(float) Constant 1065353216 56: 7(fvec4) ConstantComposite 55 55 55 55 57: TypePointer Function 7(fvec4) 59: 18(int) Constant 1 66: TypePointer Output 7(fvec4) 67(@entryPointOutput.Color): 66(ptr) Variable Output 70: TypePointer Output 6(float) 71(@entryPointOutput.Depth): 70(ptr) Variable Output 74(g_tTexbfs_test): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 64(flattenTemp): 53(ptr) Variable Function 65:8(PS_OUTPUT) FunctionCall 10(@main() Store 64(flattenTemp) 65 68: 57(ptr) AccessChain 64(flattenTemp) 25 69: 7(fvec4) Load 68 Store 67(@entryPointOutput.Color) 69 72: 12(ptr) AccessChain 64(flattenTemp) 59 73: 6(float) Load 72 Store 71(@entryPointOutput.Depth) 73 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function 32(r01): 31(ptr) Variable Function 43(r02): 42(ptr) Variable Function 54(psout): 53(ptr) Variable Function 17: 14 Load 16(g_tTexbfs) 27: 26(ptr) AccessChain 24 25 28: 18(int) Load 27 29: 7(fvec4) ImageFetch 17 28 30: 6(float) CompositeExtract 29 0 Store 13(r00) 30 36: 33 Load 35(g_tTexbis) 37: 26(ptr) AccessChain 24 25 38: 18(int) Load 37 39: 21(ivec4) ImageFetch 36 38 40: 18(int) CompositeExtract 39 0 Store 32(r01) 40 47: 44 Load 46(g_tTexbus) 48: 26(ptr) AccessChain 24 25 49: 18(int) Load 48 51: 50(ivec4) ImageFetch 47 49 52: 41(int) CompositeExtract 51 0 Store 43(r02) 52 58: 57(ptr) AccessChain 54(psout) 25 Store 58 56 60: 12(ptr) AccessChain 54(psout) 59 Store 60 55 61:8(PS_OUTPUT) Load 54(psout) ReturnValue 61 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.offset.dx10.frag.out000066400000000000000000001345541506534232700240520ustar00rootroot00000000000000hlsl.load.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:43 Function Definition: getOffset1( ( temp int) 0:43 Function Parameters: 0:? Sequence 0:44 Branch: Return with expression 0:44 Constant: 0:44 1 (const int) 0:48 Function Definition: getOffset2( ( temp 2-component vector of int) 0:48 Function Parameters: 0:? Sequence 0:49 Branch: Return with expression 0:49 Constant: 0:49 1 (const int) 0:49 1 (const int) 0:53 Function Definition: getOffset3( ( temp 3-component vector of int) 0:53 Function Parameters: 0:? Sequence 0:54 Branch: Return with expression 0:54 Constant: 0:54 1 (const int) 0:54 1 (const int) 0:54 1 (const int) 0:58 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Function Parameters: 0:? Sequence 0:62 textureFetchOffset ( temp 4-component vector of float) 0:62 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:62 vector swizzle ( temp int) 0:62 c2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:62 Constant: 0:62 1 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 direct index ( temp int) 0:62 c2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:62 Constant: 0:62 1 (const uint) 0:62 Constant: 0:62 1 (const int) 0:62 Function Call: getOffset1( ( temp int) 0:63 textureFetchOffset ( temp 4-component vector of int) 0:63 'g_tTex1di4' ( uniform itexture1D) 0:63 vector swizzle ( temp int) 0:63 c2: direct index for structure ( uniform 2-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:63 Constant: 0:63 1 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 direct index ( temp int) 0:63 c2: direct index for structure ( uniform 2-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:63 Constant: 0:63 1 (const uint) 0:63 Constant: 0:63 1 (const int) 0:63 Function Call: getOffset1( ( temp int) 0:64 textureFetchOffset ( temp 4-component vector of uint) 0:64 'g_tTex1du4' ( uniform utexture1D) 0:64 vector swizzle ( temp int) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:64 Constant: 0:64 1 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 direct index ( temp int) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:64 Constant: 0:64 1 (const uint) 0:64 Constant: 0:64 1 (const int) 0:64 Function Call: getOffset1( ( temp int) 0:67 textureFetchOffset ( temp 4-component vector of float) 0:67 'g_tTex2df4' ( uniform texture2D) 0:67 vector swizzle ( temp 2-component vector of int) 0:67 c3: direct index for structure ( uniform 3-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:67 Constant: 0:67 2 (const uint) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 direct index ( temp int) 0:67 c3: direct index for structure ( uniform 3-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:67 Constant: 0:67 2 (const uint) 0:67 Constant: 0:67 2 (const int) 0:67 Function Call: getOffset2( ( temp 2-component vector of int) 0:68 textureFetchOffset ( temp 4-component vector of int) 0:68 'g_tTex2di4' ( uniform itexture2D) 0:68 vector swizzle ( temp 2-component vector of int) 0:68 c3: direct index for structure ( uniform 3-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:68 Constant: 0:68 2 (const uint) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 direct index ( temp int) 0:68 c3: direct index for structure ( uniform 3-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:68 Constant: 0:68 2 (const uint) 0:68 Constant: 0:68 2 (const int) 0:68 Function Call: getOffset2( ( temp 2-component vector of int) 0:69 textureFetchOffset ( temp 4-component vector of uint) 0:69 'g_tTex2du4' ( uniform utexture2D) 0:69 vector swizzle ( temp 2-component vector of int) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:69 Constant: 0:69 2 (const uint) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 direct index ( temp int) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:69 Constant: 0:69 2 (const uint) 0:69 Constant: 0:69 2 (const int) 0:69 Function Call: getOffset2( ( temp 2-component vector of int) 0:72 textureFetchOffset ( temp 4-component vector of float) 0:72 'g_tTex3df4' ( uniform texture3D) 0:72 vector swizzle ( temp 3-component vector of int) 0:72 c4: direct index for structure ( uniform 4-component vector of int) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:72 Constant: 0:72 3 (const uint) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 direct index ( temp int) 0:72 c4: direct index for structure ( uniform 4-component vector of int) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:72 Constant: 0:72 3 (const uint) 0:72 Constant: 0:72 3 (const int) 0:72 Function Call: getOffset3( ( temp 3-component vector of int) 0:73 textureFetchOffset ( temp 4-component vector of int) 0:73 'g_tTex3di4' ( uniform itexture3D) 0:73 vector swizzle ( temp 3-component vector of int) 0:73 c4: direct index for structure ( uniform 4-component vector of int) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:73 Constant: 0:73 3 (const uint) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 direct index ( temp int) 0:73 c4: direct index for structure ( uniform 4-component vector of int) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:73 Constant: 0:73 3 (const uint) 0:73 Constant: 0:73 3 (const int) 0:73 Function Call: getOffset3( ( temp 3-component vector of int) 0:74 textureFetchOffset ( temp 4-component vector of uint) 0:74 'g_tTex3du4' ( uniform utexture3D) 0:74 vector swizzle ( temp 3-component vector of int) 0:74 c4: direct index for structure ( uniform 4-component vector of int) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:74 Constant: 0:74 3 (const uint) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 direct index ( temp int) 0:74 c4: direct index for structure ( uniform 4-component vector of int) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:74 Constant: 0:74 3 (const uint) 0:74 Constant: 0:74 3 (const int) 0:74 Function Call: getOffset3( ( temp 3-component vector of int) 0:82 move second child to first child ( temp 4-component vector of float) 0:82 Color: direct index for structure ( temp 4-component vector of float) 0:82 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1.000000 0:82 1.000000 0:82 1.000000 0:82 1.000000 0:83 move second child to first child ( temp float) 0:83 Depth: direct index for structure ( temp float) 0:83 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1.000000 0:85 Branch: Return with expression 0:85 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Function Definition: main( ( temp void) 0:58 Function Parameters: 0:? Sequence 0:58 Sequence 0:58 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:58 Color: direct index for structure ( temp 4-component vector of float) 0:58 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 0 (const int) 0:58 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:58 Depth: direct index for structure ( temp float) 0:58 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:43 Function Definition: getOffset1( ( temp int) 0:43 Function Parameters: 0:? Sequence 0:44 Branch: Return with expression 0:44 Constant: 0:44 1 (const int) 0:48 Function Definition: getOffset2( ( temp 2-component vector of int) 0:48 Function Parameters: 0:? Sequence 0:49 Branch: Return with expression 0:49 Constant: 0:49 1 (const int) 0:49 1 (const int) 0:53 Function Definition: getOffset3( ( temp 3-component vector of int) 0:53 Function Parameters: 0:? Sequence 0:54 Branch: Return with expression 0:54 Constant: 0:54 1 (const int) 0:54 1 (const int) 0:54 1 (const int) 0:58 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Function Parameters: 0:? Sequence 0:62 textureFetchOffset ( temp 4-component vector of float) 0:62 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:62 vector swizzle ( temp int) 0:62 c2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:62 Constant: 0:62 1 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 direct index ( temp int) 0:62 c2: direct index for structure ( uniform 2-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:62 Constant: 0:62 1 (const uint) 0:62 Constant: 0:62 1 (const int) 0:62 Function Call: getOffset1( ( temp int) 0:63 textureFetchOffset ( temp 4-component vector of int) 0:63 'g_tTex1di4' ( uniform itexture1D) 0:63 vector swizzle ( temp int) 0:63 c2: direct index for structure ( uniform 2-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:63 Constant: 0:63 1 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 direct index ( temp int) 0:63 c2: direct index for structure ( uniform 2-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:63 Constant: 0:63 1 (const uint) 0:63 Constant: 0:63 1 (const int) 0:63 Function Call: getOffset1( ( temp int) 0:64 textureFetchOffset ( temp 4-component vector of uint) 0:64 'g_tTex1du4' ( uniform utexture1D) 0:64 vector swizzle ( temp int) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:64 Constant: 0:64 1 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 direct index ( temp int) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:64 Constant: 0:64 1 (const uint) 0:64 Constant: 0:64 1 (const int) 0:64 Function Call: getOffset1( ( temp int) 0:67 textureFetchOffset ( temp 4-component vector of float) 0:67 'g_tTex2df4' ( uniform texture2D) 0:67 vector swizzle ( temp 2-component vector of int) 0:67 c3: direct index for structure ( uniform 3-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:67 Constant: 0:67 2 (const uint) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 direct index ( temp int) 0:67 c3: direct index for structure ( uniform 3-component vector of int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:67 Constant: 0:67 2 (const uint) 0:67 Constant: 0:67 2 (const int) 0:67 Function Call: getOffset2( ( temp 2-component vector of int) 0:68 textureFetchOffset ( temp 4-component vector of int) 0:68 'g_tTex2di4' ( uniform itexture2D) 0:68 vector swizzle ( temp 2-component vector of int) 0:68 c3: direct index for structure ( uniform 3-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:68 Constant: 0:68 2 (const uint) 0:68 Sequence 0:68 Constant: 0:68 0 (const int) 0:68 Constant: 0:68 1 (const int) 0:68 direct index ( temp int) 0:68 c3: direct index for structure ( uniform 3-component vector of int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:68 Constant: 0:68 2 (const uint) 0:68 Constant: 0:68 2 (const int) 0:68 Function Call: getOffset2( ( temp 2-component vector of int) 0:69 textureFetchOffset ( temp 4-component vector of uint) 0:69 'g_tTex2du4' ( uniform utexture2D) 0:69 vector swizzle ( temp 2-component vector of int) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:69 Constant: 0:69 2 (const uint) 0:69 Sequence 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 direct index ( temp int) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:69 Constant: 0:69 2 (const uint) 0:69 Constant: 0:69 2 (const int) 0:69 Function Call: getOffset2( ( temp 2-component vector of int) 0:72 textureFetchOffset ( temp 4-component vector of float) 0:72 'g_tTex3df4' ( uniform texture3D) 0:72 vector swizzle ( temp 3-component vector of int) 0:72 c4: direct index for structure ( uniform 4-component vector of int) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:72 Constant: 0:72 3 (const uint) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 direct index ( temp int) 0:72 c4: direct index for structure ( uniform 4-component vector of int) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:72 Constant: 0:72 3 (const uint) 0:72 Constant: 0:72 3 (const int) 0:72 Function Call: getOffset3( ( temp 3-component vector of int) 0:73 textureFetchOffset ( temp 4-component vector of int) 0:73 'g_tTex3di4' ( uniform itexture3D) 0:73 vector swizzle ( temp 3-component vector of int) 0:73 c4: direct index for structure ( uniform 4-component vector of int) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:73 Constant: 0:73 3 (const uint) 0:73 Sequence 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 2 (const int) 0:73 direct index ( temp int) 0:73 c4: direct index for structure ( uniform 4-component vector of int) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:73 Constant: 0:73 3 (const uint) 0:73 Constant: 0:73 3 (const int) 0:73 Function Call: getOffset3( ( temp 3-component vector of int) 0:74 textureFetchOffset ( temp 4-component vector of uint) 0:74 'g_tTex3du4' ( uniform utexture3D) 0:74 vector swizzle ( temp 3-component vector of int) 0:74 c4: direct index for structure ( uniform 4-component vector of int) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:74 Constant: 0:74 3 (const uint) 0:74 Sequence 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 2 (const int) 0:74 direct index ( temp int) 0:74 c4: direct index for structure ( uniform 4-component vector of int) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:74 Constant: 0:74 3 (const uint) 0:74 Constant: 0:74 3 (const int) 0:74 Function Call: getOffset3( ( temp 3-component vector of int) 0:82 move second child to first child ( temp 4-component vector of float) 0:82 Color: direct index for structure ( temp 4-component vector of float) 0:82 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1.000000 0:82 1.000000 0:82 1.000000 0:82 1.000000 0:83 move second child to first child ( temp float) 0:83 Depth: direct index for structure ( temp float) 0:83 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1.000000 0:85 Branch: Return with expression 0:85 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Function Definition: main( ( temp void) 0:58 Function Parameters: 0:? Sequence 0:58 Sequence 0:58 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:58 Color: direct index for structure ( temp 4-component vector of float) 0:58 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 0 (const int) 0:58 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:58 Depth: direct index for structure ( temp float) 0:58 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 205 Capability Shader Capability ImageGatherExtended Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 159 163 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "getOffset1(" Name 12 "getOffset2(" Name 16 "getOffset3(" Name 20 "PS_OUTPUT" MemberName 20(PS_OUTPUT) 0 "Color" MemberName 20(PS_OUTPUT) 1 "Depth" Name 22 "@main(" Name 35 "g_tTex1df4" Name 38 "$Global" MemberName 38($Global) 0 "c1" MemberName 38($Global) 1 "c2" MemberName 38($Global) 2 "c3" MemberName 38($Global) 3 "c4" Name 40 "" Name 53 "g_tTex1di4" Name 63 "g_tTex1du4" Name 74 "g_tTex2df4" Name 88 "g_tTex2di4" Name 99 "g_tTex2du4" Name 110 "g_tTex3df4" Name 124 "g_tTex3di4" Name 135 "g_tTex3du4" Name 145 "psout" Name 156 "flattenTemp" Name 159 "@entryPointOutput.Color" Name 163 "@entryPointOutput.Depth" Name 168 "g_sSamp" Name 171 "g_tTexcdf4" Name 174 "g_tTexcdi4" Name 177 "g_tTexcdu4" Name 180 "g_tTex1df4a" Name 183 "g_tTex1di4a" Name 186 "g_tTex1du4a" Name 189 "g_tTex2df4a" Name 192 "g_tTex2di4a" Name 195 "g_tTex2du4a" Name 198 "g_tTexcdf4a" Name 201 "g_tTexcdi4a" Name 204 "g_tTexcdu4a" Decorate 35(g_tTex1df4) Binding 0 Decorate 35(g_tTex1df4) DescriptorSet 0 Decorate 38($Global) Block MemberDecorate 38($Global) 0 Offset 0 MemberDecorate 38($Global) 1 Offset 8 MemberDecorate 38($Global) 2 Offset 16 MemberDecorate 38($Global) 3 Offset 32 Decorate 40 Binding 9 Decorate 40 DescriptorSet 0 Decorate 53(g_tTex1di4) Binding 1 Decorate 53(g_tTex1di4) DescriptorSet 0 Decorate 63(g_tTex1du4) Binding 2 Decorate 63(g_tTex1du4) DescriptorSet 0 Decorate 74(g_tTex2df4) Binding 3 Decorate 74(g_tTex2df4) DescriptorSet 0 Decorate 88(g_tTex2di4) Binding 4 Decorate 88(g_tTex2di4) DescriptorSet 0 Decorate 99(g_tTex2du4) Binding 5 Decorate 99(g_tTex2du4) DescriptorSet 0 Decorate 110(g_tTex3df4) Binding 6 Decorate 110(g_tTex3df4) DescriptorSet 0 Decorate 124(g_tTex3di4) Binding 7 Decorate 124(g_tTex3di4) DescriptorSet 0 Decorate 135(g_tTex3du4) Binding 8 Decorate 135(g_tTex3du4) DescriptorSet 0 Decorate 159(@entryPointOutput.Color) Location 0 Decorate 163(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 168(g_sSamp) Binding 0 Decorate 168(g_sSamp) DescriptorSet 0 Decorate 171(g_tTexcdf4) Binding 0 Decorate 171(g_tTexcdf4) DescriptorSet 0 Decorate 174(g_tTexcdi4) Binding 0 Decorate 174(g_tTexcdi4) DescriptorSet 0 Decorate 177(g_tTexcdu4) Binding 0 Decorate 177(g_tTexcdu4) DescriptorSet 0 Decorate 180(g_tTex1df4a) Binding 0 Decorate 180(g_tTex1df4a) DescriptorSet 0 Decorate 183(g_tTex1di4a) Binding 0 Decorate 183(g_tTex1di4a) DescriptorSet 0 Decorate 186(g_tTex1du4a) Binding 0 Decorate 186(g_tTex1du4a) DescriptorSet 0 Decorate 189(g_tTex2df4a) Binding 0 Decorate 189(g_tTex2df4a) DescriptorSet 0 Decorate 192(g_tTex2di4a) Binding 0 Decorate 192(g_tTex2di4a) DescriptorSet 0 Decorate 195(g_tTex2du4a) Binding 0 Decorate 195(g_tTex2du4a) DescriptorSet 0 Decorate 198(g_tTexcdf4a) Binding 0 Decorate 198(g_tTexcdf4a) DescriptorSet 0 Decorate 201(g_tTexcdi4a) Binding 0 Decorate 201(g_tTexcdi4a) DescriptorSet 0 Decorate 204(g_tTexcdu4a) Binding 0 Decorate 204(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFunction 6(int) 10: TypeVector 6(int) 2 11: TypeFunction 10(ivec2) 14: TypeVector 6(int) 3 15: TypeFunction 14(ivec3) 18: TypeFloat 32 19: TypeVector 18(float) 4 20(PS_OUTPUT): TypeStruct 19(fvec4) 18(float) 21: TypeFunction 20(PS_OUTPUT) 24: 6(int) Constant 1 27: 10(ivec2) ConstantComposite 24 24 30: 14(ivec3) ConstantComposite 24 24 24 33: TypeImage 18(float) 1D sampled format:Unknown 34: TypePointer UniformConstant 33 35(g_tTex1df4): 34(ptr) Variable UniformConstant 37: TypeVector 6(int) 4 38($Global): TypeStruct 6(int) 10(ivec2) 14(ivec3) 37(ivec4) 39: TypePointer Uniform 38($Global) 40: 39(ptr) Variable Uniform 41: TypeInt 32 0 42: 41(int) Constant 0 43: TypePointer Uniform 6(int) 46: 41(int) Constant 1 51: TypeImage 6(int) 1D sampled format:Unknown 52: TypePointer UniformConstant 51 53(g_tTex1di4): 52(ptr) Variable UniformConstant 61: TypeImage 41(int) 1D sampled format:Unknown 62: TypePointer UniformConstant 61 63(g_tTex1du4): 62(ptr) Variable UniformConstant 70: TypeVector 41(int) 4 72: TypeImage 18(float) 2D sampled format:Unknown 73: TypePointer UniformConstant 72 74(g_tTex2df4): 73(ptr) Variable UniformConstant 76: 6(int) Constant 2 77: TypePointer Uniform 14(ivec3) 81: 41(int) Constant 2 86: TypeImage 6(int) 2D sampled format:Unknown 87: TypePointer UniformConstant 86 88(g_tTex2di4): 87(ptr) Variable UniformConstant 97: TypeImage 41(int) 2D sampled format:Unknown 98: TypePointer UniformConstant 97 99(g_tTex2du4): 98(ptr) Variable UniformConstant 108: TypeImage 18(float) 3D sampled format:Unknown 109: TypePointer UniformConstant 108 110(g_tTex3df4): 109(ptr) Variable UniformConstant 112: 6(int) Constant 3 113: TypePointer Uniform 37(ivec4) 117: 41(int) Constant 3 122: TypeImage 6(int) 3D sampled format:Unknown 123: TypePointer UniformConstant 122 124(g_tTex3di4): 123(ptr) Variable UniformConstant 133: TypeImage 41(int) 3D sampled format:Unknown 134: TypePointer UniformConstant 133 135(g_tTex3du4): 134(ptr) Variable UniformConstant 144: TypePointer Function 20(PS_OUTPUT) 146: 6(int) Constant 0 147: 18(float) Constant 1065353216 148: 19(fvec4) ConstantComposite 147 147 147 147 149: TypePointer Function 19(fvec4) 151: TypePointer Function 18(float) 158: TypePointer Output 19(fvec4) 159(@entryPointOutput.Color): 158(ptr) Variable Output 162: TypePointer Output 18(float) 163(@entryPointOutput.Depth): 162(ptr) Variable Output 166: TypeSampler 167: TypePointer UniformConstant 166 168(g_sSamp): 167(ptr) Variable UniformConstant 169: TypeImage 18(float) Cube sampled format:Unknown 170: TypePointer UniformConstant 169 171(g_tTexcdf4): 170(ptr) Variable UniformConstant 172: TypeImage 6(int) Cube sampled format:Unknown 173: TypePointer UniformConstant 172 174(g_tTexcdi4): 173(ptr) Variable UniformConstant 175: TypeImage 41(int) Cube sampled format:Unknown 176: TypePointer UniformConstant 175 177(g_tTexcdu4): 176(ptr) Variable UniformConstant 178: TypeImage 18(float) 1D array sampled format:Unknown 179: TypePointer UniformConstant 178 180(g_tTex1df4a): 179(ptr) Variable UniformConstant 181: TypeImage 6(int) 1D array sampled format:Unknown 182: TypePointer UniformConstant 181 183(g_tTex1di4a): 182(ptr) Variable UniformConstant 184: TypeImage 41(int) 1D array sampled format:Unknown 185: TypePointer UniformConstant 184 186(g_tTex1du4a): 185(ptr) Variable UniformConstant 187: TypeImage 18(float) 2D array sampled format:Unknown 188: TypePointer UniformConstant 187 189(g_tTex2df4a): 188(ptr) Variable UniformConstant 190: TypeImage 6(int) 2D array sampled format:Unknown 191: TypePointer UniformConstant 190 192(g_tTex2di4a): 191(ptr) Variable UniformConstant 193: TypeImage 41(int) 2D array sampled format:Unknown 194: TypePointer UniformConstant 193 195(g_tTex2du4a): 194(ptr) Variable UniformConstant 196: TypeImage 18(float) Cube array sampled format:Unknown 197: TypePointer UniformConstant 196 198(g_tTexcdf4a): 197(ptr) Variable UniformConstant 199: TypeImage 6(int) Cube array sampled format:Unknown 200: TypePointer UniformConstant 199 201(g_tTexcdi4a): 200(ptr) Variable UniformConstant 202: TypeImage 41(int) Cube array sampled format:Unknown 203: TypePointer UniformConstant 202 204(g_tTexcdu4a): 203(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 156(flattenTemp): 144(ptr) Variable Function 157:20(PS_OUTPUT) FunctionCall 22(@main() Store 156(flattenTemp) 157 160: 149(ptr) AccessChain 156(flattenTemp) 146 161: 19(fvec4) Load 160 Store 159(@entryPointOutput.Color) 161 164: 151(ptr) AccessChain 156(flattenTemp) 24 165: 18(float) Load 164 Store 163(@entryPointOutput.Depth) 165 Return FunctionEnd 8(getOffset1(): 6(int) Function None 7 9: Label ReturnValue 24 FunctionEnd 12(getOffset2(): 10(ivec2) Function None 11 13: Label ReturnValue 27 FunctionEnd 16(getOffset3(): 14(ivec3) Function None 15 17: Label ReturnValue 30 FunctionEnd 22(@main():20(PS_OUTPUT) Function None 21 23: Label 145(psout): 144(ptr) Variable Function 36: 33 Load 35(g_tTex1df4) 44: 43(ptr) AccessChain 40 24 42 45: 6(int) Load 44 47: 43(ptr) AccessChain 40 24 46 48: 6(int) Load 47 49: 6(int) FunctionCall 8(getOffset1() 50: 19(fvec4) ImageFetch 36 45 Lod Offset 48 49 54: 51 Load 53(g_tTex1di4) 55: 43(ptr) AccessChain 40 24 42 56: 6(int) Load 55 57: 43(ptr) AccessChain 40 24 46 58: 6(int) Load 57 59: 6(int) FunctionCall 8(getOffset1() 60: 37(ivec4) ImageFetch 54 56 Lod Offset 58 59 64: 61 Load 63(g_tTex1du4) 65: 43(ptr) AccessChain 40 24 42 66: 6(int) Load 65 67: 43(ptr) AccessChain 40 24 46 68: 6(int) Load 67 69: 6(int) FunctionCall 8(getOffset1() 71: 70(ivec4) ImageFetch 64 66 Lod Offset 68 69 75: 72 Load 74(g_tTex2df4) 78: 77(ptr) AccessChain 40 76 79: 14(ivec3) Load 78 80: 10(ivec2) VectorShuffle 79 79 0 1 82: 43(ptr) AccessChain 40 76 81 83: 6(int) Load 82 84: 10(ivec2) FunctionCall 12(getOffset2() 85: 19(fvec4) ImageFetch 75 80 Lod Offset 83 84 89: 86 Load 88(g_tTex2di4) 90: 77(ptr) AccessChain 40 76 91: 14(ivec3) Load 90 92: 10(ivec2) VectorShuffle 91 91 0 1 93: 43(ptr) AccessChain 40 76 81 94: 6(int) Load 93 95: 10(ivec2) FunctionCall 12(getOffset2() 96: 37(ivec4) ImageFetch 89 92 Lod Offset 94 95 100: 97 Load 99(g_tTex2du4) 101: 77(ptr) AccessChain 40 76 102: 14(ivec3) Load 101 103: 10(ivec2) VectorShuffle 102 102 0 1 104: 43(ptr) AccessChain 40 76 81 105: 6(int) Load 104 106: 10(ivec2) FunctionCall 12(getOffset2() 107: 70(ivec4) ImageFetch 100 103 Lod Offset 105 106 111: 108 Load 110(g_tTex3df4) 114: 113(ptr) AccessChain 40 112 115: 37(ivec4) Load 114 116: 14(ivec3) VectorShuffle 115 115 0 1 2 118: 43(ptr) AccessChain 40 112 117 119: 6(int) Load 118 120: 14(ivec3) FunctionCall 16(getOffset3() 121: 19(fvec4) ImageFetch 111 116 Lod Offset 119 120 125: 122 Load 124(g_tTex3di4) 126: 113(ptr) AccessChain 40 112 127: 37(ivec4) Load 126 128: 14(ivec3) VectorShuffle 127 127 0 1 2 129: 43(ptr) AccessChain 40 112 117 130: 6(int) Load 129 131: 14(ivec3) FunctionCall 16(getOffset3() 132: 37(ivec4) ImageFetch 125 128 Lod Offset 130 131 136: 133 Load 135(g_tTex3du4) 137: 113(ptr) AccessChain 40 112 138: 37(ivec4) Load 137 139: 14(ivec3) VectorShuffle 138 138 0 1 2 140: 43(ptr) AccessChain 40 112 117 141: 6(int) Load 140 142: 14(ivec3) FunctionCall 16(getOffset3() 143: 70(ivec4) ImageFetch 136 139 Lod Offset 141 142 150: 149(ptr) AccessChain 145(psout) 146 Store 150 148 152: 151(ptr) AccessChain 145(psout) 24 Store 152 147 153:20(PS_OUTPUT) Load 145(psout) ReturnValue 153 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out000066400000000000000000001141331506534232700251000ustar00rootroot00000000000000hlsl.load.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:43 Function Definition: getOffset1( ( temp int) 0:43 Function Parameters: 0:? Sequence 0:44 Branch: Return with expression 0:44 Constant: 0:44 1 (const int) 0:48 Function Definition: getOffset2( ( temp 2-component vector of int) 0:48 Function Parameters: 0:? Sequence 0:49 Branch: Return with expression 0:49 Constant: 0:49 1 (const int) 0:49 1 (const int) 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Parameters: 0:? Sequence 0:57 textureFetchOffset ( temp 4-component vector of float) 0:57 'g_tTex1df4a' ( uniform texture1DArray) 0:57 vector swizzle ( temp 2-component vector of int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index ( temp int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:57 Function Call: getOffset1( ( temp int) 0:58 textureFetchOffset ( temp 4-component vector of int) 0:58 'g_tTex1di4a' ( uniform itexture1DArray) 0:58 vector swizzle ( temp 2-component vector of int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index ( temp int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:58 Function Call: getOffset1( ( temp int) 0:59 textureFetchOffset ( temp 4-component vector of uint) 0:59 'g_tTex1du4a' ( uniform utexture1DArray) 0:59 vector swizzle ( temp 2-component vector of int) 0:59 c3: direct index for structure ( uniform 3-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 direct index ( temp int) 0:59 c3: direct index for structure ( uniform 3-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) 0:59 Function Call: getOffset1( ( temp int) 0:62 textureFetchOffset ( temp 4-component vector of float) 0:62 'g_tTex2df4a' ( uniform texture2DArray) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 direct index ( temp int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:62 Function Call: getOffset2( ( temp 2-component vector of int) 0:63 textureFetchOffset ( temp 4-component vector of int) 0:63 'g_tTex2di4a' ( uniform itexture2DArray) 0:63 vector swizzle ( temp 3-component vector of int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 direct index ( temp int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:63 Function Call: getOffset2( ( temp 2-component vector of int) 0:64 textureFetchOffset ( temp 4-component vector of uint) 0:64 'g_tTex2du4a' ( uniform utexture2DArray) 0:64 vector swizzle ( temp 3-component vector of int) 0:64 c4: direct index for structure ( uniform 4-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 direct index ( temp int) 0:64 c4: direct index for structure ( uniform 4-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:64 Function Call: getOffset2( ( temp 2-component vector of int) 0:70 move second child to first child ( temp 4-component vector of float) 0:70 Color: direct index for structure ( temp 4-component vector of float) 0:70 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1.000000 0:70 1.000000 0:70 1.000000 0:70 1.000000 0:71 move second child to first child ( temp float) 0:71 Depth: direct index for structure ( temp float) 0:71 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 1.000000 0:73 Branch: Return with expression 0:73 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 0 (const int) 0:53 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:53 Depth: direct index for structure ( temp float) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:43 Function Definition: getOffset1( ( temp int) 0:43 Function Parameters: 0:? Sequence 0:44 Branch: Return with expression 0:44 Constant: 0:44 1 (const int) 0:48 Function Definition: getOffset2( ( temp 2-component vector of int) 0:48 Function Parameters: 0:? Sequence 0:49 Branch: Return with expression 0:49 Constant: 0:49 1 (const int) 0:49 1 (const int) 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Parameters: 0:? Sequence 0:57 textureFetchOffset ( temp 4-component vector of float) 0:57 'g_tTex1df4a' ( uniform texture1DArray) 0:57 vector swizzle ( temp 2-component vector of int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index ( temp int) 0:57 c3: direct index for structure ( uniform 3-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:57 Constant: 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:57 Function Call: getOffset1( ( temp int) 0:58 textureFetchOffset ( temp 4-component vector of int) 0:58 'g_tTex1di4a' ( uniform itexture1DArray) 0:58 vector swizzle ( temp 2-component vector of int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index ( temp int) 0:58 c3: direct index for structure ( uniform 3-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:58 Constant: 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:58 Function Call: getOffset1( ( temp int) 0:59 textureFetchOffset ( temp 4-component vector of uint) 0:59 'g_tTex1du4a' ( uniform utexture1DArray) 0:59 vector swizzle ( temp 2-component vector of int) 0:59 c3: direct index for structure ( uniform 3-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 direct index ( temp int) 0:59 c3: direct index for structure ( uniform 3-component vector of int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:59 Constant: 0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) 0:59 Function Call: getOffset1( ( temp int) 0:62 textureFetchOffset ( temp 4-component vector of float) 0:62 'g_tTex2df4a' ( uniform texture2DArray) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 direct index ( temp int) 0:62 c4: direct index for structure ( uniform 4-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:62 Constant: 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:62 Function Call: getOffset2( ( temp 2-component vector of int) 0:63 textureFetchOffset ( temp 4-component vector of int) 0:63 'g_tTex2di4a' ( uniform itexture2DArray) 0:63 vector swizzle ( temp 3-component vector of int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 direct index ( temp int) 0:63 c4: direct index for structure ( uniform 4-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:63 Constant: 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:63 Function Call: getOffset2( ( temp 2-component vector of int) 0:64 textureFetchOffset ( temp 4-component vector of uint) 0:64 'g_tTex2du4a' ( uniform utexture2DArray) 0:64 vector swizzle ( temp 3-component vector of int) 0:64 c4: direct index for structure ( uniform 4-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 direct index ( temp int) 0:64 c4: direct index for structure ( uniform 4-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:64 Constant: 0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:64 Function Call: getOffset2( ( temp 2-component vector of int) 0:70 move second child to first child ( temp 4-component vector of float) 0:70 Color: direct index for structure ( temp 4-component vector of float) 0:70 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1.000000 0:70 1.000000 0:70 1.000000 0:70 1.000000 0:71 move second child to first child ( temp float) 0:71 Depth: direct index for structure ( temp float) 0:71 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 1.000000 0:73 Branch: Return with expression 0:73 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 0 (const int) 0:53 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:53 Depth: direct index for structure ( temp float) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 176 Capability Shader Capability ImageGatherExtended Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 121 125 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "getOffset1(" Name 12 "getOffset2(" Name 16 "PS_OUTPUT" MemberName 16(PS_OUTPUT) 0 "Color" MemberName 16(PS_OUTPUT) 1 "Depth" Name 18 "@main(" Name 28 "g_tTex1df4a" Name 32 "$Global" MemberName 32($Global) 0 "c1" MemberName 32($Global) 1 "c2" MemberName 32($Global) 2 "c3" MemberName 32($Global) 3 "c4" Name 34 "" Name 49 "g_tTex1di4a" Name 60 "g_tTex1du4a" Name 72 "g_tTex2df4a" Name 86 "g_tTex2di4a" Name 97 "g_tTex2du4a" Name 107 "psout" Name 118 "flattenTemp" Name 121 "@entryPointOutput.Color" Name 125 "@entryPointOutput.Depth" Name 130 "g_sSamp" Name 133 "g_tTex1df4" Name 136 "g_tTex1di4" Name 139 "g_tTex1du4" Name 142 "g_tTex2df4" Name 145 "g_tTex2di4" Name 148 "g_tTex2du4" Name 151 "g_tTex3df4" Name 154 "g_tTex3di4" Name 157 "g_tTex3du4" Name 160 "g_tTexcdf4" Name 163 "g_tTexcdi4" Name 166 "g_tTexcdu4" Name 169 "g_tTexcdf4a" Name 172 "g_tTexcdi4a" Name 175 "g_tTexcdu4a" Decorate 28(g_tTex1df4a) Binding 1 Decorate 28(g_tTex1df4a) DescriptorSet 0 Decorate 32($Global) Block MemberDecorate 32($Global) 0 Offset 0 MemberDecorate 32($Global) 1 Offset 8 MemberDecorate 32($Global) 2 Offset 16 MemberDecorate 32($Global) 3 Offset 32 Decorate 34 Binding 7 Decorate 34 DescriptorSet 0 Decorate 49(g_tTex1di4a) Binding 2 Decorate 49(g_tTex1di4a) DescriptorSet 0 Decorate 60(g_tTex1du4a) Binding 3 Decorate 60(g_tTex1du4a) DescriptorSet 0 Decorate 72(g_tTex2df4a) Binding 4 Decorate 72(g_tTex2df4a) DescriptorSet 0 Decorate 86(g_tTex2di4a) Binding 5 Decorate 86(g_tTex2di4a) DescriptorSet 0 Decorate 97(g_tTex2du4a) Binding 6 Decorate 97(g_tTex2du4a) DescriptorSet 0 Decorate 121(@entryPointOutput.Color) Location 0 Decorate 125(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 130(g_sSamp) Binding 0 Decorate 130(g_sSamp) DescriptorSet 0 Decorate 133(g_tTex1df4) Binding 0 Decorate 133(g_tTex1df4) DescriptorSet 0 Decorate 136(g_tTex1di4) Binding 0 Decorate 136(g_tTex1di4) DescriptorSet 0 Decorate 139(g_tTex1du4) Binding 0 Decorate 139(g_tTex1du4) DescriptorSet 0 Decorate 142(g_tTex2df4) Binding 0 Decorate 142(g_tTex2df4) DescriptorSet 0 Decorate 145(g_tTex2di4) Binding 0 Decorate 145(g_tTex2di4) DescriptorSet 0 Decorate 148(g_tTex2du4) Binding 0 Decorate 148(g_tTex2du4) DescriptorSet 0 Decorate 151(g_tTex3df4) Binding 0 Decorate 151(g_tTex3df4) DescriptorSet 0 Decorate 154(g_tTex3di4) Binding 0 Decorate 154(g_tTex3di4) DescriptorSet 0 Decorate 157(g_tTex3du4) Binding 0 Decorate 157(g_tTex3du4) DescriptorSet 0 Decorate 160(g_tTexcdf4) Binding 0 Decorate 160(g_tTexcdf4) DescriptorSet 0 Decorate 163(g_tTexcdi4) Binding 0 Decorate 163(g_tTexcdi4) DescriptorSet 0 Decorate 166(g_tTexcdu4) Binding 0 Decorate 166(g_tTexcdu4) DescriptorSet 0 Decorate 169(g_tTexcdf4a) Binding 0 Decorate 169(g_tTexcdf4a) DescriptorSet 0 Decorate 172(g_tTexcdi4a) Binding 0 Decorate 172(g_tTexcdi4a) DescriptorSet 0 Decorate 175(g_tTexcdu4a) Binding 0 Decorate 175(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFunction 6(int) 10: TypeVector 6(int) 2 11: TypeFunction 10(ivec2) 14: TypeFloat 32 15: TypeVector 14(float) 4 16(PS_OUTPUT): TypeStruct 15(fvec4) 14(float) 17: TypeFunction 16(PS_OUTPUT) 20: 6(int) Constant 1 23: 10(ivec2) ConstantComposite 20 20 26: TypeImage 14(float) 1D array sampled format:Unknown 27: TypePointer UniformConstant 26 28(g_tTex1df4a): 27(ptr) Variable UniformConstant 30: TypeVector 6(int) 3 31: TypeVector 6(int) 4 32($Global): TypeStruct 6(int) 10(ivec2) 30(ivec3) 31(ivec4) 33: TypePointer Uniform 32($Global) 34: 33(ptr) Variable Uniform 35: 6(int) Constant 2 36: TypePointer Uniform 30(ivec3) 40: TypeInt 32 0 41: 40(int) Constant 2 42: TypePointer Uniform 6(int) 47: TypeImage 6(int) 1D array sampled format:Unknown 48: TypePointer UniformConstant 47 49(g_tTex1di4a): 48(ptr) Variable UniformConstant 58: TypeImage 40(int) 1D array sampled format:Unknown 59: TypePointer UniformConstant 58 60(g_tTex1du4a): 59(ptr) Variable UniformConstant 68: TypeVector 40(int) 4 70: TypeImage 14(float) 2D array sampled format:Unknown 71: TypePointer UniformConstant 70 72(g_tTex2df4a): 71(ptr) Variable UniformConstant 74: 6(int) Constant 3 75: TypePointer Uniform 31(ivec4) 79: 40(int) Constant 3 84: TypeImage 6(int) 2D array sampled format:Unknown 85: TypePointer UniformConstant 84 86(g_tTex2di4a): 85(ptr) Variable UniformConstant 95: TypeImage 40(int) 2D array sampled format:Unknown 96: TypePointer UniformConstant 95 97(g_tTex2du4a): 96(ptr) Variable UniformConstant 106: TypePointer Function 16(PS_OUTPUT) 108: 6(int) Constant 0 109: 14(float) Constant 1065353216 110: 15(fvec4) ConstantComposite 109 109 109 109 111: TypePointer Function 15(fvec4) 113: TypePointer Function 14(float) 120: TypePointer Output 15(fvec4) 121(@entryPointOutput.Color): 120(ptr) Variable Output 124: TypePointer Output 14(float) 125(@entryPointOutput.Depth): 124(ptr) Variable Output 128: TypeSampler 129: TypePointer UniformConstant 128 130(g_sSamp): 129(ptr) Variable UniformConstant 131: TypeImage 14(float) 1D sampled format:Unknown 132: TypePointer UniformConstant 131 133(g_tTex1df4): 132(ptr) Variable UniformConstant 134: TypeImage 6(int) 1D sampled format:Unknown 135: TypePointer UniformConstant 134 136(g_tTex1di4): 135(ptr) Variable UniformConstant 137: TypeImage 40(int) 1D sampled format:Unknown 138: TypePointer UniformConstant 137 139(g_tTex1du4): 138(ptr) Variable UniformConstant 140: TypeImage 14(float) 2D sampled format:Unknown 141: TypePointer UniformConstant 140 142(g_tTex2df4): 141(ptr) Variable UniformConstant 143: TypeImage 6(int) 2D sampled format:Unknown 144: TypePointer UniformConstant 143 145(g_tTex2di4): 144(ptr) Variable UniformConstant 146: TypeImage 40(int) 2D sampled format:Unknown 147: TypePointer UniformConstant 146 148(g_tTex2du4): 147(ptr) Variable UniformConstant 149: TypeImage 14(float) 3D sampled format:Unknown 150: TypePointer UniformConstant 149 151(g_tTex3df4): 150(ptr) Variable UniformConstant 152: TypeImage 6(int) 3D sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTex3di4): 153(ptr) Variable UniformConstant 155: TypeImage 40(int) 3D sampled format:Unknown 156: TypePointer UniformConstant 155 157(g_tTex3du4): 156(ptr) Variable UniformConstant 158: TypeImage 14(float) Cube sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTexcdf4): 159(ptr) Variable UniformConstant 161: TypeImage 6(int) Cube sampled format:Unknown 162: TypePointer UniformConstant 161 163(g_tTexcdi4): 162(ptr) Variable UniformConstant 164: TypeImage 40(int) Cube sampled format:Unknown 165: TypePointer UniformConstant 164 166(g_tTexcdu4): 165(ptr) Variable UniformConstant 167: TypeImage 14(float) Cube array sampled format:Unknown 168: TypePointer UniformConstant 167 169(g_tTexcdf4a): 168(ptr) Variable UniformConstant 170: TypeImage 6(int) Cube array sampled format:Unknown 171: TypePointer UniformConstant 170 172(g_tTexcdi4a): 171(ptr) Variable UniformConstant 173: TypeImage 40(int) Cube array sampled format:Unknown 174: TypePointer UniformConstant 173 175(g_tTexcdu4a): 174(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 118(flattenTemp): 106(ptr) Variable Function 119:16(PS_OUTPUT) FunctionCall 18(@main() Store 118(flattenTemp) 119 122: 111(ptr) AccessChain 118(flattenTemp) 108 123: 15(fvec4) Load 122 Store 121(@entryPointOutput.Color) 123 126: 113(ptr) AccessChain 118(flattenTemp) 20 127: 14(float) Load 126 Store 125(@entryPointOutput.Depth) 127 Return FunctionEnd 8(getOffset1(): 6(int) Function None 7 9: Label ReturnValue 20 FunctionEnd 12(getOffset2(): 10(ivec2) Function None 11 13: Label ReturnValue 23 FunctionEnd 18(@main():16(PS_OUTPUT) Function None 17 19: Label 107(psout): 106(ptr) Variable Function 29: 26 Load 28(g_tTex1df4a) 37: 36(ptr) AccessChain 34 35 38: 30(ivec3) Load 37 39: 10(ivec2) VectorShuffle 38 38 0 1 43: 42(ptr) AccessChain 34 35 41 44: 6(int) Load 43 45: 6(int) FunctionCall 8(getOffset1() 46: 15(fvec4) ImageFetch 29 39 Lod Offset 44 45 50: 47 Load 49(g_tTex1di4a) 51: 36(ptr) AccessChain 34 35 52: 30(ivec3) Load 51 53: 10(ivec2) VectorShuffle 52 52 0 1 54: 42(ptr) AccessChain 34 35 41 55: 6(int) Load 54 56: 6(int) FunctionCall 8(getOffset1() 57: 31(ivec4) ImageFetch 50 53 Lod Offset 55 56 61: 58 Load 60(g_tTex1du4a) 62: 36(ptr) AccessChain 34 35 63: 30(ivec3) Load 62 64: 10(ivec2) VectorShuffle 63 63 0 1 65: 42(ptr) AccessChain 34 35 41 66: 6(int) Load 65 67: 6(int) FunctionCall 8(getOffset1() 69: 68(ivec4) ImageFetch 61 64 Lod Offset 66 67 73: 70 Load 72(g_tTex2df4a) 76: 75(ptr) AccessChain 34 74 77: 31(ivec4) Load 76 78: 30(ivec3) VectorShuffle 77 77 0 1 2 80: 42(ptr) AccessChain 34 74 79 81: 6(int) Load 80 82: 10(ivec2) FunctionCall 12(getOffset2() 83: 15(fvec4) ImageFetch 73 78 Lod Offset 81 82 87: 84 Load 86(g_tTex2di4a) 88: 75(ptr) AccessChain 34 74 89: 31(ivec4) Load 88 90: 30(ivec3) VectorShuffle 89 89 0 1 2 91: 42(ptr) AccessChain 34 74 79 92: 6(int) Load 91 93: 10(ivec2) FunctionCall 12(getOffset2() 94: 31(ivec4) ImageFetch 87 90 Lod Offset 92 93 98: 95 Load 97(g_tTex2du4a) 99: 75(ptr) AccessChain 34 74 100: 31(ivec4) Load 99 101: 30(ivec3) VectorShuffle 100 100 0 1 2 102: 42(ptr) AccessChain 34 74 79 103: 6(int) Load 102 104: 10(ivec2) FunctionCall 12(getOffset2() 105: 68(ivec4) ImageFetch 98 101 Lod Offset 103 104 112: 111(ptr) AccessChain 107(psout) 108 Store 112 110 114: 113(ptr) AccessChain 107(psout) 20 Store 114 109 115:16(PS_OUTPUT) Load 107(psout) ReturnValue 115 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out000066400000000000000000000312631506534232700243770ustar00rootroot00000000000000hlsl.load.rwbuffer.dx10.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:22 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:22 Function Parameters: 0:? Sequence 0:25 imageLoad ( temp 4-component vector of float) 0:25 'g_tBuffF' (layout( rgba32f) uniform imageBuffer) 0:25 c1: direct index for structure ( uniform int) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:25 Constant: 0:25 0 (const uint) 0:26 imageLoad ( temp 4-component vector of uint) 0:26 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer) 0:26 c1: direct index for structure ( uniform int) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:26 Constant: 0:26 0 (const uint) 0:27 imageLoad ( temp 4-component vector of int) 0:27 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer) 0:27 c1: direct index for structure ( uniform int) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:27 Constant: 0:27 0 (const uint) 0:29 move second child to first child ( temp 4-component vector of float) 0:29 Color: direct index for structure ( temp 4-component vector of float) 0:29 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:31 Branch: Return with expression 0:31 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:22 Color: direct index for structure ( temp 4-component vector of float) 0:22 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:22 Constant: 0:22 0 (const int) 0:? Linker Objects 0:? 'g_tBuffF' (layout( rgba32f) uniform imageBuffer) 0:? 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer) 0:? 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:22 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:22 Function Parameters: 0:? Sequence 0:25 imageLoad ( temp 4-component vector of float) 0:25 'g_tBuffF' (layout( rgba32f) uniform imageBuffer) 0:25 c1: direct index for structure ( uniform int) 0:25 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:25 Constant: 0:25 0 (const uint) 0:26 imageLoad ( temp 4-component vector of uint) 0:26 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer) 0:26 c1: direct index for structure ( uniform int) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:26 Constant: 0:26 0 (const uint) 0:27 imageLoad ( temp 4-component vector of int) 0:27 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer) 0:27 c1: direct index for structure ( uniform int) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:27 Constant: 0:27 0 (const uint) 0:29 move second child to first child ( temp 4-component vector of float) 0:29 Color: direct index for structure ( temp 4-component vector of float) 0:29 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:31 Branch: Return with expression 0:31 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:22 Color: direct index for structure ( temp 4-component vector of float) 0:22 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:22 Constant: 0:22 0 (const int) 0:? Linker Objects 0:? 'g_tBuffF' (layout( rgba32f) uniform imageBuffer) 0:? 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer) 0:? 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader Capability ImageBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 54 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 14 "g_tBuffF" Name 20 "$Global" MemberName 20($Global) 0 "c1" MemberName 20($Global) 1 "c2" MemberName 20($Global) 2 "c3" MemberName 20($Global) 3 "c4" MemberName 20($Global) 4 "o1" MemberName 20($Global) 5 "o2" MemberName 20($Global) 6 "o3" MemberName 20($Global) 7 "o4" Name 22 "" Name 31 "g_tBuffU" Name 39 "g_tBuffI" Name 45 "psout" Name 54 "@entryPointOutput.Color" Decorate 14(g_tBuffF) Binding 0 Decorate 14(g_tBuffF) DescriptorSet 0 Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 MemberDecorate 20($Global) 3 Offset 32 MemberDecorate 20($Global) 4 Offset 48 MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 Decorate 22 Binding 3 Decorate 22 DescriptorSet 0 Decorate 31(g_tBuffU) Binding 2 Decorate 31(g_tBuffU) DescriptorSet 0 Decorate 39(g_tBuffI) Binding 1 Decorate 39(g_tBuffI) DescriptorSet 0 Decorate 54(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeImage 6(float) Buffer nonsampled format:Rgba32f 13: TypePointer UniformConstant 12 14(g_tBuffF): 13(ptr) Variable UniformConstant 16: TypeInt 32 1 17: TypeVector 16(int) 2 18: TypeVector 16(int) 3 19: TypeVector 16(int) 4 20($Global): TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 21: TypePointer Uniform 20($Global) 22: 21(ptr) Variable Uniform 23: 16(int) Constant 0 24: TypePointer Uniform 16(int) 28: TypeInt 32 0 29: TypeImage 28(int) Buffer nonsampled format:Rgba32ui 30: TypePointer UniformConstant 29 31(g_tBuffU): 30(ptr) Variable UniformConstant 35: TypeVector 28(int) 4 37: TypeImage 16(int) Buffer nonsampled format:Rgba32i 38: TypePointer UniformConstant 37 39(g_tBuffI): 38(ptr) Variable UniformConstant 44: TypePointer Function 8(PS_OUTPUT) 46: 6(float) Constant 1065353216 47: 7(fvec4) ConstantComposite 46 46 46 46 48: TypePointer Function 7(fvec4) 53: TypePointer Output 7(fvec4) 54(@entryPointOutput.Color): 53(ptr) Variable Output 4(main): 2 Function None 3 5: Label 55:8(PS_OUTPUT) FunctionCall 10(@main() 56: 7(fvec4) CompositeExtract 55 0 Store 54(@entryPointOutput.Color) 56 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 45(psout): 44(ptr) Variable Function 15: 12 Load 14(g_tBuffF) 25: 24(ptr) AccessChain 22 23 26: 16(int) Load 25 27: 7(fvec4) ImageRead 15 26 32: 29 Load 31(g_tBuffU) 33: 24(ptr) AccessChain 22 23 34: 16(int) Load 33 36: 35(ivec4) ImageRead 32 34 40: 37 Load 39(g_tBuffI) 41: 24(ptr) AccessChain 22 23 42: 16(int) Load 41 43: 19(ivec4) ImageRead 40 42 49: 48(ptr) AccessChain 45(psout) 23 Store 49 47 50:8(PS_OUTPUT) Load 45(psout) ReturnValue 50 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out000066400000000000000000000650121506534232700257420ustar00rootroot00000000000000hlsl.load.rwtexture.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:40 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Parameters: 0:? Sequence 0:44 imageLoad ( temp 4-component vector of float) 0:44 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:44 c2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 1 (const uint) 0:45 imageLoad ( temp 4-component vector of int) 0:45 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:45 c2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 1 (const uint) 0:46 imageLoad ( temp 4-component vector of uint) 0:46 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:46 c2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 1 (const uint) 0:49 imageLoad ( temp 4-component vector of float) 0:49 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:49 c3: direct index for structure ( uniform 3-component vector of int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:49 Constant: 0:49 2 (const uint) 0:50 imageLoad ( temp 4-component vector of int) 0:50 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:50 c3: direct index for structure ( uniform 3-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 2 (const uint) 0:51 imageLoad ( temp 4-component vector of uint) 0:51 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:51 c3: direct index for structure ( uniform 3-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 2 (const uint) 0:53 move second child to first child ( temp 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1.000000 0:53 1.000000 0:53 1.000000 0:53 1.000000 0:54 move second child to first child ( temp float) 0:54 Depth: direct index for structure ( temp float) 0:54 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1.000000 0:56 Branch: Return with expression 0:56 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Definition: main( ( temp void) 0:40 Function Parameters: 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:40 Depth: direct index for structure ( temp float) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:? 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:? 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:? 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:? 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:40 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Parameters: 0:? Sequence 0:44 imageLoad ( temp 4-component vector of float) 0:44 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:44 c2: direct index for structure ( uniform 2-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 1 (const uint) 0:45 imageLoad ( temp 4-component vector of int) 0:45 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:45 c2: direct index for structure ( uniform 2-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 1 (const uint) 0:46 imageLoad ( temp 4-component vector of uint) 0:46 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:46 c2: direct index for structure ( uniform 2-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 1 (const uint) 0:49 imageLoad ( temp 4-component vector of float) 0:49 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:49 c3: direct index for structure ( uniform 3-component vector of int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:49 Constant: 0:49 2 (const uint) 0:50 imageLoad ( temp 4-component vector of int) 0:50 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:50 c3: direct index for structure ( uniform 3-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 2 (const uint) 0:51 imageLoad ( temp 4-component vector of uint) 0:51 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:51 c3: direct index for structure ( uniform 3-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 2 (const uint) 0:53 move second child to first child ( temp 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1.000000 0:53 1.000000 0:53 1.000000 0:53 1.000000 0:54 move second child to first child ( temp float) 0:54 Depth: direct index for structure ( temp float) 0:54 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 1.000000 0:56 Branch: Return with expression 0:56 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Definition: main( ( temp void) 0:40 Function Parameters: 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:40 Depth: direct index for structure ( temp float) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:? 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:? 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:? 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:? 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 119 Capability Shader Capability Image1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 82 86 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 14 "g_tTex1df4a" Name 20 "$Global" MemberName 20($Global) 0 "c1" MemberName 20($Global) 1 "c2" MemberName 20($Global) 2 "c3" MemberName 20($Global) 3 "c4" MemberName 20($Global) 4 "o1" MemberName 20($Global) 5 "o2" MemberName 20($Global) 6 "o3" MemberName 20($Global) 7 "o4" Name 22 "" Name 30 "g_tTex1di4a" Name 38 "g_tTex1du4a" Name 46 "g_tTex2df4a" Name 55 "g_tTex2di4a" Name 62 "g_tTex2du4a" Name 68 "psout" Name 79 "flattenTemp" Name 82 "@entryPointOutput.Color" Name 86 "@entryPointOutput.Depth" Name 91 "g_sSamp" Name 94 "g_tTex1df4" Name 97 "g_tTex1di4" Name 100 "g_tTex1du4" Name 103 "g_tTex2df4" Name 106 "g_tTex2di4" Name 109 "g_tTex2du4" Name 112 "g_tTex3df4" Name 115 "g_tTex3di4" Name 118 "g_tTex3du4" Decorate 14(g_tTex1df4a) Binding 1 Decorate 14(g_tTex1df4a) DescriptorSet 0 Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 MemberDecorate 20($Global) 3 Offset 32 MemberDecorate 20($Global) 4 Offset 48 MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 Decorate 22 Binding 7 Decorate 22 DescriptorSet 0 Decorate 30(g_tTex1di4a) Binding 2 Decorate 30(g_tTex1di4a) DescriptorSet 0 Decorate 38(g_tTex1du4a) Binding 3 Decorate 38(g_tTex1du4a) DescriptorSet 0 Decorate 46(g_tTex2df4a) Binding 4 Decorate 46(g_tTex2df4a) DescriptorSet 0 Decorate 55(g_tTex2di4a) Binding 5 Decorate 55(g_tTex2di4a) DescriptorSet 0 Decorate 62(g_tTex2du4a) Binding 6 Decorate 62(g_tTex2du4a) DescriptorSet 0 Decorate 82(@entryPointOutput.Color) Location 0 Decorate 86(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 91(g_sSamp) Binding 0 Decorate 91(g_sSamp) DescriptorSet 0 Decorate 94(g_tTex1df4) Binding 0 Decorate 94(g_tTex1df4) DescriptorSet 0 Decorate 97(g_tTex1di4) Binding 0 Decorate 97(g_tTex1di4) DescriptorSet 0 Decorate 100(g_tTex1du4) Binding 0 Decorate 100(g_tTex1du4) DescriptorSet 0 Decorate 103(g_tTex2df4) Binding 0 Decorate 103(g_tTex2df4) DescriptorSet 0 Decorate 106(g_tTex2di4) Binding 0 Decorate 106(g_tTex2di4) DescriptorSet 0 Decorate 109(g_tTex2du4) Binding 0 Decorate 109(g_tTex2du4) DescriptorSet 0 Decorate 112(g_tTex3df4) Binding 0 Decorate 112(g_tTex3df4) DescriptorSet 0 Decorate 115(g_tTex3di4) Binding 0 Decorate 115(g_tTex3di4) DescriptorSet 0 Decorate 118(g_tTex3du4) Binding 0 Decorate 118(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypeImage 6(float) 1D array nonsampled format:Rgba32f 13: TypePointer UniformConstant 12 14(g_tTex1df4a): 13(ptr) Variable UniformConstant 16: TypeInt 32 1 17: TypeVector 16(int) 2 18: TypeVector 16(int) 3 19: TypeVector 16(int) 4 20($Global): TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 21: TypePointer Uniform 20($Global) 22: 21(ptr) Variable Uniform 23: 16(int) Constant 1 24: TypePointer Uniform 17(ivec2) 28: TypeImage 16(int) 1D array nonsampled format:Rgba32i 29: TypePointer UniformConstant 28 30(g_tTex1di4a): 29(ptr) Variable UniformConstant 35: TypeInt 32 0 36: TypeImage 35(int) 1D array nonsampled format:Rgba32ui 37: TypePointer UniformConstant 36 38(g_tTex1du4a): 37(ptr) Variable UniformConstant 42: TypeVector 35(int) 4 44: TypeImage 6(float) 2D array nonsampled format:Rgba32f 45: TypePointer UniformConstant 44 46(g_tTex2df4a): 45(ptr) Variable UniformConstant 48: 16(int) Constant 2 49: TypePointer Uniform 18(ivec3) 53: TypeImage 16(int) 2D array nonsampled format:Rgba32i 54: TypePointer UniformConstant 53 55(g_tTex2di4a): 54(ptr) Variable UniformConstant 60: TypeImage 35(int) 2D array nonsampled format:Rgba32ui 61: TypePointer UniformConstant 60 62(g_tTex2du4a): 61(ptr) Variable UniformConstant 67: TypePointer Function 8(PS_OUTPUT) 69: 16(int) Constant 0 70: 6(float) Constant 1065353216 71: 7(fvec4) ConstantComposite 70 70 70 70 72: TypePointer Function 7(fvec4) 74: TypePointer Function 6(float) 81: TypePointer Output 7(fvec4) 82(@entryPointOutput.Color): 81(ptr) Variable Output 85: TypePointer Output 6(float) 86(@entryPointOutput.Depth): 85(ptr) Variable Output 89: TypeSampler 90: TypePointer UniformConstant 89 91(g_sSamp): 90(ptr) Variable UniformConstant 92: TypeImage 6(float) 1D nonsampled format:Rgba32f 93: TypePointer UniformConstant 92 94(g_tTex1df4): 93(ptr) Variable UniformConstant 95: TypeImage 16(int) 1D nonsampled format:Rgba32i 96: TypePointer UniformConstant 95 97(g_tTex1di4): 96(ptr) Variable UniformConstant 98: TypeImage 35(int) 1D nonsampled format:Rgba32ui 99: TypePointer UniformConstant 98 100(g_tTex1du4): 99(ptr) Variable UniformConstant 101: TypeImage 6(float) 2D nonsampled format:Rgba32f 102: TypePointer UniformConstant 101 103(g_tTex2df4): 102(ptr) Variable UniformConstant 104: TypeImage 16(int) 2D nonsampled format:Rgba32i 105: TypePointer UniformConstant 104 106(g_tTex2di4): 105(ptr) Variable UniformConstant 107: TypeImage 35(int) 2D nonsampled format:Rgba32ui 108: TypePointer UniformConstant 107 109(g_tTex2du4): 108(ptr) Variable UniformConstant 110: TypeImage 6(float) 3D nonsampled format:Rgba32f 111: TypePointer UniformConstant 110 112(g_tTex3df4): 111(ptr) Variable UniformConstant 113: TypeImage 16(int) 3D nonsampled format:Rgba32i 114: TypePointer UniformConstant 113 115(g_tTex3di4): 114(ptr) Variable UniformConstant 116: TypeImage 35(int) 3D nonsampled format:Rgba32ui 117: TypePointer UniformConstant 116 118(g_tTex3du4): 117(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 79(flattenTemp): 67(ptr) Variable Function 80:8(PS_OUTPUT) FunctionCall 10(@main() Store 79(flattenTemp) 80 83: 72(ptr) AccessChain 79(flattenTemp) 69 84: 7(fvec4) Load 83 Store 82(@entryPointOutput.Color) 84 87: 74(ptr) AccessChain 79(flattenTemp) 23 88: 6(float) Load 87 Store 86(@entryPointOutput.Depth) 88 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 68(psout): 67(ptr) Variable Function 15: 12 Load 14(g_tTex1df4a) 25: 24(ptr) AccessChain 22 23 26: 17(ivec2) Load 25 27: 7(fvec4) ImageRead 15 26 31: 28 Load 30(g_tTex1di4a) 32: 24(ptr) AccessChain 22 23 33: 17(ivec2) Load 32 34: 19(ivec4) ImageRead 31 33 39: 36 Load 38(g_tTex1du4a) 40: 24(ptr) AccessChain 22 23 41: 17(ivec2) Load 40 43: 42(ivec4) ImageRead 39 41 47: 44 Load 46(g_tTex2df4a) 50: 49(ptr) AccessChain 22 48 51: 18(ivec3) Load 50 52: 7(fvec4) ImageRead 47 51 56: 53 Load 55(g_tTex2di4a) 57: 49(ptr) AccessChain 22 48 58: 18(ivec3) Load 57 59: 19(ivec4) ImageRead 56 58 63: 60 Load 62(g_tTex2du4a) 64: 49(ptr) AccessChain 22 48 65: 18(ivec3) Load 64 66: 42(ivec4) ImageRead 63 65 73: 72(ptr) AccessChain 68(psout) 69 Store 73 71 75: 74(ptr) AccessChain 68(psout) 23 Store 75 70 76:8(PS_OUTPUT) Load 68(psout) ReturnValue 76 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out000066400000000000000000000745461506534232700246410ustar00rootroot00000000000000hlsl.load.rwtexture.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:40 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Parameters: 0:? Sequence 0:44 imageLoad ( temp 4-component vector of float) 0:44 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:44 c1: direct index for structure ( uniform int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 0 (const uint) 0:45 imageLoad ( temp 4-component vector of int) 0:45 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:45 c1: direct index for structure ( uniform int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 0 (const uint) 0:46 imageLoad ( temp 4-component vector of uint) 0:46 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:46 c1: direct index for structure ( uniform int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 0 (const uint) 0:49 imageLoad ( temp 4-component vector of float) 0:49 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:49 c2: direct index for structure ( uniform 2-component vector of int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:49 Constant: 0:49 1 (const uint) 0:50 imageLoad ( temp 4-component vector of int) 0:50 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:50 c2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 1 (const uint) 0:51 imageLoad ( temp 4-component vector of uint) 0:51 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:51 c2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) 0:54 imageLoad ( temp 4-component vector of float) 0:54 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:54 c3: direct index for structure ( uniform 3-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 2 (const uint) 0:55 imageLoad ( temp 4-component vector of int) 0:55 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:55 c3: direct index for structure ( uniform 3-component vector of int) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:55 Constant: 0:55 2 (const uint) 0:56 imageLoad ( temp 4-component vector of uint) 0:56 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:56 c3: direct index for structure ( uniform 3-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 2 (const uint) 0:58 move second child to first child ( temp 4-component vector of float) 0:58 Color: direct index for structure ( temp 4-component vector of float) 0:58 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1.000000 0:58 1.000000 0:58 1.000000 0:58 1.000000 0:59 move second child to first child ( temp float) 0:59 Depth: direct index for structure ( temp float) 0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 1.000000 0:61 Branch: Return with expression 0:61 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Definition: main( ( temp void) 0:40 Function Parameters: 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:40 Depth: direct index for structure ( temp float) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:? 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:? 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:? 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:? 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:40 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Parameters: 0:? Sequence 0:44 imageLoad ( temp 4-component vector of float) 0:44 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:44 c1: direct index for structure ( uniform int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:44 Constant: 0:44 0 (const uint) 0:45 imageLoad ( temp 4-component vector of int) 0:45 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:45 c1: direct index for structure ( uniform int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:45 Constant: 0:45 0 (const uint) 0:46 imageLoad ( temp 4-component vector of uint) 0:46 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:46 c1: direct index for structure ( uniform int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:46 Constant: 0:46 0 (const uint) 0:49 imageLoad ( temp 4-component vector of float) 0:49 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:49 c2: direct index for structure ( uniform 2-component vector of int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:49 Constant: 0:49 1 (const uint) 0:50 imageLoad ( temp 4-component vector of int) 0:50 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:50 c2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:50 Constant: 0:50 1 (const uint) 0:51 imageLoad ( temp 4-component vector of uint) 0:51 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:51 c2: direct index for structure ( uniform 2-component vector of int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) 0:54 imageLoad ( temp 4-component vector of float) 0:54 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:54 c3: direct index for structure ( uniform 3-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:54 Constant: 0:54 2 (const uint) 0:55 imageLoad ( temp 4-component vector of int) 0:55 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:55 c3: direct index for structure ( uniform 3-component vector of int) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:55 Constant: 0:55 2 (const uint) 0:56 imageLoad ( temp 4-component vector of uint) 0:56 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:56 c3: direct index for structure ( uniform 3-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 2 (const uint) 0:58 move second child to first child ( temp 4-component vector of float) 0:58 Color: direct index for structure ( temp 4-component vector of float) 0:58 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1.000000 0:58 1.000000 0:58 1.000000 0:58 1.000000 0:59 move second child to first child ( temp float) 0:59 Depth: direct index for structure ( temp float) 0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 1.000000 0:61 Branch: Return with expression 0:61 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Definition: main( ( temp void) 0:40 Function Parameters: 0:? Sequence 0:40 Sequence 0:40 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:40 Color: direct index for structure ( temp 4-component vector of float) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 0 (const int) 0:40 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:40 Depth: direct index for structure ( temp float) 0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:? 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:? 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:? 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:? 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 132 Capability Shader Capability Image1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 104 108 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 14 "g_tTex1df4" Name 20 "$Global" MemberName 20($Global) 0 "c1" MemberName 20($Global) 1 "c2" MemberName 20($Global) 2 "c3" MemberName 20($Global) 3 "c4" MemberName 20($Global) 4 "o1" MemberName 20($Global) 5 "o2" MemberName 20($Global) 6 "o3" MemberName 20($Global) 7 "o4" Name 22 "" Name 30 "g_tTex1di4" Name 38 "g_tTex1du4" Name 46 "g_tTex2df4" Name 55 "g_tTex2di4" Name 62 "g_tTex2du4" Name 69 "g_tTex3df4" Name 78 "g_tTex3di4" Name 85 "g_tTex3du4" Name 91 "psout" Name 101 "flattenTemp" Name 104 "@entryPointOutput.Color" Name 108 "@entryPointOutput.Depth" Name 113 "g_sSamp" Name 116 "g_tTex1df4a" Name 119 "g_tTex1di4a" Name 122 "g_tTex1du4a" Name 125 "g_tTex2df4a" Name 128 "g_tTex2di4a" Name 131 "g_tTex2du4a" Decorate 14(g_tTex1df4) Binding 0 Decorate 14(g_tTex1df4) DescriptorSet 0 Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 MemberDecorate 20($Global) 3 Offset 32 MemberDecorate 20($Global) 4 Offset 48 MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 Decorate 22 Binding 9 Decorate 22 DescriptorSet 0 Decorate 30(g_tTex1di4) Binding 1 Decorate 30(g_tTex1di4) DescriptorSet 0 Decorate 38(g_tTex1du4) Binding 2 Decorate 38(g_tTex1du4) DescriptorSet 0 Decorate 46(g_tTex2df4) Binding 3 Decorate 46(g_tTex2df4) DescriptorSet 0 Decorate 55(g_tTex2di4) Binding 4 Decorate 55(g_tTex2di4) DescriptorSet 0 Decorate 62(g_tTex2du4) Binding 5 Decorate 62(g_tTex2du4) DescriptorSet 0 Decorate 69(g_tTex3df4) Binding 6 Decorate 69(g_tTex3df4) DescriptorSet 0 Decorate 78(g_tTex3di4) Binding 7 Decorate 78(g_tTex3di4) DescriptorSet 0 Decorate 85(g_tTex3du4) Binding 8 Decorate 85(g_tTex3du4) DescriptorSet 0 Decorate 104(@entryPointOutput.Color) Location 0 Decorate 108(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 113(g_sSamp) Binding 0 Decorate 113(g_sSamp) DescriptorSet 0 Decorate 116(g_tTex1df4a) Binding 0 Decorate 116(g_tTex1df4a) DescriptorSet 0 Decorate 119(g_tTex1di4a) Binding 0 Decorate 119(g_tTex1di4a) DescriptorSet 0 Decorate 122(g_tTex1du4a) Binding 0 Decorate 122(g_tTex1du4a) DescriptorSet 0 Decorate 125(g_tTex2df4a) Binding 0 Decorate 125(g_tTex2df4a) DescriptorSet 0 Decorate 128(g_tTex2di4a) Binding 0 Decorate 128(g_tTex2di4a) DescriptorSet 0 Decorate 131(g_tTex2du4a) Binding 0 Decorate 131(g_tTex2du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypeImage 6(float) 1D nonsampled format:Rgba32f 13: TypePointer UniformConstant 12 14(g_tTex1df4): 13(ptr) Variable UniformConstant 16: TypeInt 32 1 17: TypeVector 16(int) 2 18: TypeVector 16(int) 3 19: TypeVector 16(int) 4 20($Global): TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 21: TypePointer Uniform 20($Global) 22: 21(ptr) Variable Uniform 23: 16(int) Constant 0 24: TypePointer Uniform 16(int) 28: TypeImage 16(int) 1D nonsampled format:Rgba32i 29: TypePointer UniformConstant 28 30(g_tTex1di4): 29(ptr) Variable UniformConstant 35: TypeInt 32 0 36: TypeImage 35(int) 1D nonsampled format:Rgba32ui 37: TypePointer UniformConstant 36 38(g_tTex1du4): 37(ptr) Variable UniformConstant 42: TypeVector 35(int) 4 44: TypeImage 6(float) 2D nonsampled format:Rgba32f 45: TypePointer UniformConstant 44 46(g_tTex2df4): 45(ptr) Variable UniformConstant 48: 16(int) Constant 1 49: TypePointer Uniform 17(ivec2) 53: TypeImage 16(int) 2D nonsampled format:Rgba32i 54: TypePointer UniformConstant 53 55(g_tTex2di4): 54(ptr) Variable UniformConstant 60: TypeImage 35(int) 2D nonsampled format:Rgba32ui 61: TypePointer UniformConstant 60 62(g_tTex2du4): 61(ptr) Variable UniformConstant 67: TypeImage 6(float) 3D nonsampled format:Rgba32f 68: TypePointer UniformConstant 67 69(g_tTex3df4): 68(ptr) Variable UniformConstant 71: 16(int) Constant 2 72: TypePointer Uniform 18(ivec3) 76: TypeImage 16(int) 3D nonsampled format:Rgba32i 77: TypePointer UniformConstant 76 78(g_tTex3di4): 77(ptr) Variable UniformConstant 83: TypeImage 35(int) 3D nonsampled format:Rgba32ui 84: TypePointer UniformConstant 83 85(g_tTex3du4): 84(ptr) Variable UniformConstant 90: TypePointer Function 8(PS_OUTPUT) 92: 6(float) Constant 1065353216 93: 7(fvec4) ConstantComposite 92 92 92 92 94: TypePointer Function 7(fvec4) 96: TypePointer Function 6(float) 103: TypePointer Output 7(fvec4) 104(@entryPointOutput.Color): 103(ptr) Variable Output 107: TypePointer Output 6(float) 108(@entryPointOutput.Depth): 107(ptr) Variable Output 111: TypeSampler 112: TypePointer UniformConstant 111 113(g_sSamp): 112(ptr) Variable UniformConstant 114: TypeImage 6(float) 1D array nonsampled format:Rgba32f 115: TypePointer UniformConstant 114 116(g_tTex1df4a): 115(ptr) Variable UniformConstant 117: TypeImage 16(int) 1D array nonsampled format:Rgba32i 118: TypePointer UniformConstant 117 119(g_tTex1di4a): 118(ptr) Variable UniformConstant 120: TypeImage 35(int) 1D array nonsampled format:Rgba32ui 121: TypePointer UniformConstant 120 122(g_tTex1du4a): 121(ptr) Variable UniformConstant 123: TypeImage 6(float) 2D array nonsampled format:Rgba32f 124: TypePointer UniformConstant 123 125(g_tTex2df4a): 124(ptr) Variable UniformConstant 126: TypeImage 16(int) 2D array nonsampled format:Rgba32i 127: TypePointer UniformConstant 126 128(g_tTex2di4a): 127(ptr) Variable UniformConstant 129: TypeImage 35(int) 2D array nonsampled format:Rgba32ui 130: TypePointer UniformConstant 129 131(g_tTex2du4a): 130(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 101(flattenTemp): 90(ptr) Variable Function 102:8(PS_OUTPUT) FunctionCall 10(@main() Store 101(flattenTemp) 102 105: 94(ptr) AccessChain 101(flattenTemp) 23 106: 7(fvec4) Load 105 Store 104(@entryPointOutput.Color) 106 109: 96(ptr) AccessChain 101(flattenTemp) 48 110: 6(float) Load 109 Store 108(@entryPointOutput.Depth) 110 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 91(psout): 90(ptr) Variable Function 15: 12 Load 14(g_tTex1df4) 25: 24(ptr) AccessChain 22 23 26: 16(int) Load 25 27: 7(fvec4) ImageRead 15 26 31: 28 Load 30(g_tTex1di4) 32: 24(ptr) AccessChain 22 23 33: 16(int) Load 32 34: 19(ivec4) ImageRead 31 33 39: 36 Load 38(g_tTex1du4) 40: 24(ptr) AccessChain 22 23 41: 16(int) Load 40 43: 42(ivec4) ImageRead 39 41 47: 44 Load 46(g_tTex2df4) 50: 49(ptr) AccessChain 22 48 51: 17(ivec2) Load 50 52: 7(fvec4) ImageRead 47 51 56: 53 Load 55(g_tTex2di4) 57: 49(ptr) AccessChain 22 48 58: 17(ivec2) Load 57 59: 19(ivec4) ImageRead 56 58 63: 60 Load 62(g_tTex2du4) 64: 49(ptr) AccessChain 22 48 65: 17(ivec2) Load 64 66: 42(ivec4) ImageRead 63 65 70: 67 Load 69(g_tTex3df4) 73: 72(ptr) AccessChain 22 71 74: 18(ivec3) Load 73 75: 7(fvec4) ImageRead 70 74 79: 76 Load 78(g_tTex3di4) 80: 72(ptr) AccessChain 22 71 81: 18(ivec3) Load 80 82: 19(ivec4) ImageRead 79 81 86: 83 Load 85(g_tTex3du4) 87: 72(ptr) AccessChain 22 71 88: 18(ivec3) Load 87 89: 42(ivec4) ImageRead 86 88 95: 94(ptr) AccessChain 91(psout) 23 Store 95 93 97: 96(ptr) AccessChain 91(psout) 48 Store 97 92 98:8(PS_OUTPUT) Load 91(psout) ReturnValue 98 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.localStructuredBuffer.comp.out000066400000000000000000000021061506534232700254060ustar00rootroot00000000000000hlsl.localStructuredBuffer.comp ERROR: 0:3: 'block initializer' : buffer aliasing not yet supported ERROR: 1 compilation errors. No code generated. Shader version: 500 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:2 Function Definition: @main( ( temp void) 0:2 Function Parameters: 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'srt0' (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) ERROR: node is still EOpNull! 0:2 Function Definition: @main( ( temp void) 0:2 Function Parameters: 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'srt0' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.logical.binary.frag.out000066400000000000000000000261231506534232700237600ustar00rootroot00000000000000hlsl.logical.binary.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:12 Function Parameters: 0:? Sequence 0:13 Test condition and select ( temp void) 0:13 Condition 0:13 logical-and ( temp bool) 0:13 Convert int to bool ( temp bool) 0:13 ival: direct index for structure ( uniform int) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:13 Constant: 0:13 0 (const uint) 0:13 Convert float to bool ( temp bool) 0:13 fval: direct index for structure ( uniform float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:13 Constant: 0:13 2 (const uint) 0:13 true case is null 0:14 Test condition and select ( temp void) 0:14 Condition 0:14 logical-or ( temp bool) 0:14 Convert int to bool ( temp bool) 0:14 ival: direct index for structure ( uniform int) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:14 Constant: 0:14 0 (const uint) 0:14 Convert float to bool ( temp bool) 0:14 fval: direct index for structure ( uniform float) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:14 Constant: 0:14 2 (const uint) 0:14 true case is null 0:17 move second child to first child ( temp 4-component vector of float) 0:17 Color: direct index for structure ( temp 4-component vector of float) 0:17 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:18 Branch: Return with expression 0:18 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:12 Color: direct index for structure ( temp 4-component vector of float) 0:12 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:12 Constant: 0:12 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:12 Function Parameters: 0:? Sequence 0:13 Test condition and select ( temp void) 0:13 Condition 0:13 logical-and ( temp bool) 0:13 Convert int to bool ( temp bool) 0:13 ival: direct index for structure ( uniform int) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:13 Constant: 0:13 0 (const uint) 0:13 Convert float to bool ( temp bool) 0:13 fval: direct index for structure ( uniform float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:13 Constant: 0:13 2 (const uint) 0:13 true case is null 0:14 Test condition and select ( temp void) 0:14 Condition 0:14 logical-or ( temp bool) 0:14 Convert int to bool ( temp bool) 0:14 ival: direct index for structure ( uniform int) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:14 Constant: 0:14 0 (const uint) 0:14 Convert float to bool ( temp bool) 0:14 fval: direct index for structure ( uniform float) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:14 Constant: 0:14 2 (const uint) 0:14 true case is null 0:17 move second child to first child ( temp 4-component vector of float) 0:17 Color: direct index for structure ( temp 4-component vector of float) 0:17 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:18 Branch: Return with expression 0:18 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:12 Color: direct index for structure ( temp 4-component vector of float) 0:12 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:12 Constant: 0:12 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 53 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 14 "$Global" MemberName 14($Global) 0 "ival" MemberName 14($Global) 1 "ival4" MemberName 14($Global) 2 "fval" MemberName 14($Global) 3 "fval4" Name 16 "" Name 44 "psout" Name 53 "@entryPointOutput.Color" Decorate 14($Global) Block MemberDecorate 14($Global) 0 Offset 0 MemberDecorate 14($Global) 1 Offset 16 MemberDecorate 14($Global) 2 Offset 32 MemberDecorate 14($Global) 3 Offset 48 Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 53(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 1 13: TypeVector 12(int) 4 14($Global): TypeStruct 12(int) 13(ivec4) 6(float) 7(fvec4) 15: TypePointer Uniform 14($Global) 16: 15(ptr) Variable Uniform 17: 12(int) Constant 0 18: TypePointer Uniform 12(int) 21: TypeBool 22: TypeInt 32 0 23: 22(int) Constant 0 25: 12(int) Constant 2 26: TypePointer Uniform 6(float) 29: 6(float) Constant 0 43: TypePointer Function 8(PS_OUTPUT) 45: 6(float) Constant 1065353216 46: 7(fvec4) ConstantComposite 45 45 45 45 47: TypePointer Function 7(fvec4) 52: TypePointer Output 7(fvec4) 53(@entryPointOutput.Color): 52(ptr) Variable Output 4(main): 2 Function None 3 5: Label 54:8(PS_OUTPUT) FunctionCall 10(@main() 55: 7(fvec4) CompositeExtract 54 0 Store 53(@entryPointOutput.Color) 55 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 44(psout): 43(ptr) Variable Function 19: 18(ptr) AccessChain 16 17 20: 12(int) Load 19 24: 21(bool) INotEqual 20 23 27: 26(ptr) AccessChain 16 25 28: 6(float) Load 27 30: 21(bool) FUnordNotEqual 28 29 31: 21(bool) LogicalAnd 24 30 SelectionMerge 33 None BranchConditional 31 32 33 32: Label Branch 33 33: Label 34: 18(ptr) AccessChain 16 17 35: 12(int) Load 34 36: 21(bool) INotEqual 35 23 37: 26(ptr) AccessChain 16 25 38: 6(float) Load 37 39: 21(bool) FUnordNotEqual 38 29 40: 21(bool) LogicalOr 36 39 SelectionMerge 42 None BranchConditional 40 41 42 41: Label Branch 42 42: Label 48: 47(ptr) AccessChain 44(psout) 17 Store 48 46 49:8(PS_OUTPUT) Load 44(psout) ReturnValue 49 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.logical.binary.vec.frag.out000066400000000000000000000603141506534232700245340ustar00rootroot00000000000000hlsl.logical.binary.vec.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of bool) 0:11 'r00' ( temp 4-component vector of bool) 0:11 Negate conditional ( temp 4-component vector of bool) 0:11 b4a: direct index for structure ( uniform 4-component vector of bool) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:11 Constant: 0:11 0 (const uint) 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of bool) 0:12 'r01' ( temp 4-component vector of bool) 0:12 logical-and ( temp 4-component vector of bool) 0:12 b4a: direct index for structure ( uniform 4-component vector of bool) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:12 Constant: 0:12 0 (const uint) 0:12 b4b: direct index for structure ( uniform 4-component vector of bool) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:12 Constant: 0:12 1 (const uint) 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of bool) 0:13 'r02' ( temp 4-component vector of bool) 0:13 logical-or ( temp 4-component vector of bool) 0:13 b4a: direct index for structure ( uniform 4-component vector of bool) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:13 Constant: 0:13 0 (const uint) 0:13 b4b: direct index for structure ( uniform 4-component vector of bool) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:13 Constant: 0:13 1 (const uint) 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of bool) 0:15 'r10' ( temp 4-component vector of bool) 0:15 logical-and ( temp 4-component vector of bool) 0:15 Construct bvec4 ( uniform 4-component vector of bool) 0:15 b1a: direct index for structure ( uniform bool) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:15 Constant: 0:15 2 (const uint) 0:15 b4b: direct index for structure ( uniform 4-component vector of bool) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:15 Constant: 0:15 1 (const uint) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of bool) 0:16 'r11' ( temp 4-component vector of bool) 0:16 logical-or ( temp 4-component vector of bool) 0:16 Construct bvec4 ( uniform 4-component vector of bool) 0:16 b1a: direct index for structure ( uniform bool) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:16 Constant: 0:16 2 (const uint) 0:16 b4b: direct index for structure ( uniform 4-component vector of bool) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:16 Constant: 0:16 1 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of bool) 0:18 'r20' ( temp 4-component vector of bool) 0:18 logical-and ( temp 4-component vector of bool) 0:18 b4a: direct index for structure ( uniform 4-component vector of bool) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:18 Constant: 0:18 0 (const uint) 0:18 Construct bvec4 ( uniform 4-component vector of bool) 0:18 b1b: direct index for structure ( uniform bool) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:18 Constant: 0:18 3 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of bool) 0:19 'r21' ( temp 4-component vector of bool) 0:19 logical-or ( temp 4-component vector of bool) 0:19 b4a: direct index for structure ( uniform 4-component vector of bool) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:19 Constant: 0:19 0 (const uint) 0:19 Construct bvec4 ( uniform 4-component vector of bool) 0:19 b1b: direct index for structure ( uniform bool) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:19 Constant: 0:19 3 (const uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Color: direct index for structure ( temp 4-component vector of float) 0:22 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:22 Constant: 0:22 0 (const int) 0:22 Convert bool to float ( temp 4-component vector of float) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 'r00' ( temp 4-component vector of bool) 0:22 'r01' ( temp 4-component vector of bool) 0:22 'r02' ( temp 4-component vector of bool) 0:22 'r10' ( temp 4-component vector of bool) 0:22 'r11' ( temp 4-component vector of bool) 0:22 'r20' ( temp 4-component vector of bool) 0:22 'r21' ( temp 4-component vector of bool) 0:23 Branch: Return with expression 0:23 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Definition: main( ( 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:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:10 Color: direct index for structure ( temp 4-component vector of float) 0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Constant: 0:10 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of bool) 0:11 'r00' ( temp 4-component vector of bool) 0:11 Negate conditional ( temp 4-component vector of bool) 0:11 b4a: direct index for structure ( uniform 4-component vector of bool) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:11 Constant: 0:11 0 (const uint) 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of bool) 0:12 'r01' ( temp 4-component vector of bool) 0:12 logical-and ( temp 4-component vector of bool) 0:12 b4a: direct index for structure ( uniform 4-component vector of bool) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:12 Constant: 0:12 0 (const uint) 0:12 b4b: direct index for structure ( uniform 4-component vector of bool) 0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:12 Constant: 0:12 1 (const uint) 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of bool) 0:13 'r02' ( temp 4-component vector of bool) 0:13 logical-or ( temp 4-component vector of bool) 0:13 b4a: direct index for structure ( uniform 4-component vector of bool) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:13 Constant: 0:13 0 (const uint) 0:13 b4b: direct index for structure ( uniform 4-component vector of bool) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:13 Constant: 0:13 1 (const uint) 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of bool) 0:15 'r10' ( temp 4-component vector of bool) 0:15 logical-and ( temp 4-component vector of bool) 0:15 Construct bvec4 ( uniform 4-component vector of bool) 0:15 b1a: direct index for structure ( uniform bool) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:15 Constant: 0:15 2 (const uint) 0:15 b4b: direct index for structure ( uniform 4-component vector of bool) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:15 Constant: 0:15 1 (const uint) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of bool) 0:16 'r11' ( temp 4-component vector of bool) 0:16 logical-or ( temp 4-component vector of bool) 0:16 Construct bvec4 ( uniform 4-component vector of bool) 0:16 b1a: direct index for structure ( uniform bool) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:16 Constant: 0:16 2 (const uint) 0:16 b4b: direct index for structure ( uniform 4-component vector of bool) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:16 Constant: 0:16 1 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of bool) 0:18 'r20' ( temp 4-component vector of bool) 0:18 logical-and ( temp 4-component vector of bool) 0:18 b4a: direct index for structure ( uniform 4-component vector of bool) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:18 Constant: 0:18 0 (const uint) 0:18 Construct bvec4 ( uniform 4-component vector of bool) 0:18 b1b: direct index for structure ( uniform bool) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:18 Constant: 0:18 3 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of bool) 0:19 'r21' ( temp 4-component vector of bool) 0:19 logical-or ( temp 4-component vector of bool) 0:19 b4a: direct index for structure ( uniform 4-component vector of bool) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:19 Constant: 0:19 0 (const uint) 0:19 Construct bvec4 ( uniform 4-component vector of bool) 0:19 b1b: direct index for structure ( uniform bool) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:19 Constant: 0:19 3 (const uint) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Color: direct index for structure ( temp 4-component vector of float) 0:22 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:22 Constant: 0:22 0 (const int) 0:22 Convert bool to float ( temp 4-component vector of float) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 logical-or ( temp 4-component vector of bool) 0:22 'r00' ( temp 4-component vector of bool) 0:22 'r01' ( temp 4-component vector of bool) 0:22 'r02' ( temp 4-component vector of bool) 0:22 'r10' ( temp 4-component vector of bool) 0:22 'r11' ( temp 4-component vector of bool) 0:22 'r20' ( temp 4-component vector of bool) 0:22 'r21' ( temp 4-component vector of bool) 0:23 Branch: Return with expression 0:23 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Definition: main( ( 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:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:10 Color: direct index for structure ( temp 4-component vector of float) 0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Constant: 0:10 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 115 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 112 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 15 "r00" Name 18 "$Global" MemberName 18($Global) 0 "b4a" MemberName 18($Global) 1 "b4b" MemberName 18($Global) 2 "b1a" MemberName 18($Global) 3 "b1b" Name 20 "" Name 30 "r01" Name 39 "r02" Name 47 "r10" Name 58 "r11" Name 67 "r20" Name 77 "r21" Name 87 "psout" Name 112 "@entryPointOutput.Color" Decorate 18($Global) Block MemberDecorate 18($Global) 0 Offset 0 MemberDecorate 18($Global) 1 Offset 16 MemberDecorate 18($Global) 2 Offset 32 MemberDecorate 18($Global) 3 Offset 36 Decorate 20 Binding 0 Decorate 20 DescriptorSet 0 Decorate 112(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeBool 13: TypeVector 12(bool) 4 14: TypePointer Function 13(bvec4) 16: TypeInt 32 0 17: TypeVector 16(int) 4 18($Global): TypeStruct 17(ivec4) 17(ivec4) 16(int) 16(int) 19: TypePointer Uniform 18($Global) 20: 19(ptr) Variable Uniform 21: TypeInt 32 1 22: 21(int) Constant 0 23: TypePointer Uniform 17(ivec4) 26: 16(int) Constant 0 27: 17(ivec4) ConstantComposite 26 26 26 26 34: 21(int) Constant 1 48: 21(int) Constant 2 49: TypePointer Uniform 16(int) 71: 21(int) Constant 3 86: TypePointer Function 8(PS_OUTPUT) 101: 6(float) Constant 0 102: 6(float) Constant 1065353216 103: 7(fvec4) ConstantComposite 101 101 101 101 104: 7(fvec4) ConstantComposite 102 102 102 102 106: TypePointer Function 7(fvec4) 111: TypePointer Output 7(fvec4) 112(@entryPointOutput.Color): 111(ptr) Variable Output 4(main): 2 Function None 3 5: Label 113:8(PS_OUTPUT) FunctionCall 10(@main() 114: 7(fvec4) CompositeExtract 113 0 Store 112(@entryPointOutput.Color) 114 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 15(r00): 14(ptr) Variable Function 30(r01): 14(ptr) Variable Function 39(r02): 14(ptr) Variable Function 47(r10): 14(ptr) Variable Function 58(r11): 14(ptr) Variable Function 67(r20): 14(ptr) Variable Function 77(r21): 14(ptr) Variable Function 87(psout): 86(ptr) Variable Function 24: 23(ptr) AccessChain 20 22 25: 17(ivec4) Load 24 28: 13(bvec4) INotEqual 25 27 29: 13(bvec4) LogicalNot 28 Store 15(r00) 29 31: 23(ptr) AccessChain 20 22 32: 17(ivec4) Load 31 33: 13(bvec4) INotEqual 32 27 35: 23(ptr) AccessChain 20 34 36: 17(ivec4) Load 35 37: 13(bvec4) INotEqual 36 27 38: 13(bvec4) LogicalAnd 33 37 Store 30(r01) 38 40: 23(ptr) AccessChain 20 22 41: 17(ivec4) Load 40 42: 13(bvec4) INotEqual 41 27 43: 23(ptr) AccessChain 20 34 44: 17(ivec4) Load 43 45: 13(bvec4) INotEqual 44 27 46: 13(bvec4) LogicalOr 42 45 Store 39(r02) 46 50: 49(ptr) AccessChain 20 48 51: 16(int) Load 50 52: 12(bool) INotEqual 51 26 53: 13(bvec4) CompositeConstruct 52 52 52 52 54: 23(ptr) AccessChain 20 34 55: 17(ivec4) Load 54 56: 13(bvec4) INotEqual 55 27 57: 13(bvec4) LogicalAnd 53 56 Store 47(r10) 57 59: 49(ptr) AccessChain 20 48 60: 16(int) Load 59 61: 12(bool) INotEqual 60 26 62: 13(bvec4) CompositeConstruct 61 61 61 61 63: 23(ptr) AccessChain 20 34 64: 17(ivec4) Load 63 65: 13(bvec4) INotEqual 64 27 66: 13(bvec4) LogicalOr 62 65 Store 58(r11) 66 68: 23(ptr) AccessChain 20 22 69: 17(ivec4) Load 68 70: 13(bvec4) INotEqual 69 27 72: 49(ptr) AccessChain 20 71 73: 16(int) Load 72 74: 12(bool) INotEqual 73 26 75: 13(bvec4) CompositeConstruct 74 74 74 74 76: 13(bvec4) LogicalAnd 70 75 Store 67(r20) 76 78: 23(ptr) AccessChain 20 22 79: 17(ivec4) Load 78 80: 13(bvec4) INotEqual 79 27 81: 49(ptr) AccessChain 20 71 82: 16(int) Load 81 83: 12(bool) INotEqual 82 26 84: 13(bvec4) CompositeConstruct 83 83 83 83 85: 13(bvec4) LogicalOr 80 84 Store 77(r21) 85 88: 13(bvec4) Load 15(r00) 89: 13(bvec4) Load 30(r01) 90: 13(bvec4) LogicalOr 88 89 91: 13(bvec4) Load 39(r02) 92: 13(bvec4) LogicalOr 90 91 93: 13(bvec4) Load 47(r10) 94: 13(bvec4) LogicalOr 92 93 95: 13(bvec4) Load 58(r11) 96: 13(bvec4) LogicalOr 94 95 97: 13(bvec4) Load 67(r20) 98: 13(bvec4) LogicalOr 96 97 99: 13(bvec4) Load 77(r21) 100: 13(bvec4) LogicalOr 98 99 105: 7(fvec4) Select 100 104 103 107: 106(ptr) AccessChain 87(psout) 22 Store 107 105 108:8(PS_OUTPUT) Load 87(psout) ReturnValue 108 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.logical.unary.frag.out000066400000000000000000000406611506534232700236350ustar00rootroot00000000000000hlsl.logical.unary.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:12 Function Parameters: 0:? Sequence 0:13 Negate conditional ( temp bool) 0:13 Convert int to bool ( temp bool) 0:13 ival: direct index for structure ( uniform int) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:13 Constant: 0:13 0 (const uint) 0:14 Negate conditional ( temp 4-component vector of bool) 0:14 Convert int to bool ( temp 4-component vector of bool) 0:14 ival4: direct index for structure ( uniform 4-component vector of int) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:14 Constant: 0:14 1 (const uint) 0:16 Negate conditional ( temp bool) 0:16 Convert float to bool ( temp bool) 0:16 fval: direct index for structure ( uniform float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:16 Constant: 0:16 2 (const uint) 0:17 Negate conditional ( temp 4-component vector of bool) 0:17 Convert float to bool ( temp 4-component vector of bool) 0:17 fval4: direct index for structure ( uniform 4-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:17 Constant: 0:17 3 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 Convert int to bool ( temp bool) 0:19 ival: direct index for structure ( uniform int) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:19 Constant: 0:19 0 (const uint) 0:19 true case is null 0:20 Test condition and select ( temp void) 0:20 Condition 0:20 Convert float to bool ( temp bool) 0:20 fval: direct index for structure ( uniform float) 0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:20 Constant: 0:20 2 (const uint) 0:20 true case is null 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 Negate conditional ( temp bool) 0:21 Convert int to bool ( temp bool) 0:21 ival: direct index for structure ( uniform int) 0:21 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:21 Constant: 0:21 0 (const uint) 0:21 true case is null 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Negate conditional ( temp bool) 0:22 Convert float to bool ( temp bool) 0:22 fval: direct index for structure ( uniform float) 0:22 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:22 Constant: 0:22 2 (const uint) 0:22 true case is null 0:25 move second child to first child ( temp 4-component vector of float) 0:25 Color: direct index for structure ( temp 4-component vector of float) 0:25 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1.000000 0:25 1.000000 0:25 1.000000 0:25 1.000000 0:26 Branch: Return with expression 0:26 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:12 Color: direct index for structure ( temp 4-component vector of float) 0:12 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:12 Constant: 0:12 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:12 Function Parameters: 0:? Sequence 0:13 Negate conditional ( temp bool) 0:13 Convert int to bool ( temp bool) 0:13 ival: direct index for structure ( uniform int) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:13 Constant: 0:13 0 (const uint) 0:14 Negate conditional ( temp 4-component vector of bool) 0:14 Convert int to bool ( temp 4-component vector of bool) 0:14 ival4: direct index for structure ( uniform 4-component vector of int) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:14 Constant: 0:14 1 (const uint) 0:16 Negate conditional ( temp bool) 0:16 Convert float to bool ( temp bool) 0:16 fval: direct index for structure ( uniform float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:16 Constant: 0:16 2 (const uint) 0:17 Negate conditional ( temp 4-component vector of bool) 0:17 Convert float to bool ( temp 4-component vector of bool) 0:17 fval4: direct index for structure ( uniform 4-component vector of float) 0:17 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:17 Constant: 0:17 3 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 Convert int to bool ( temp bool) 0:19 ival: direct index for structure ( uniform int) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:19 Constant: 0:19 0 (const uint) 0:19 true case is null 0:20 Test condition and select ( temp void) 0:20 Condition 0:20 Convert float to bool ( temp bool) 0:20 fval: direct index for structure ( uniform float) 0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:20 Constant: 0:20 2 (const uint) 0:20 true case is null 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 Negate conditional ( temp bool) 0:21 Convert int to bool ( temp bool) 0:21 ival: direct index for structure ( uniform int) 0:21 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:21 Constant: 0:21 0 (const uint) 0:21 true case is null 0:22 Test condition and select ( temp void) 0:22 Condition 0:22 Negate conditional ( temp bool) 0:22 Convert float to bool ( temp bool) 0:22 fval: direct index for structure ( uniform float) 0:22 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:22 Constant: 0:22 2 (const uint) 0:22 true case is null 0:25 move second child to first child ( temp 4-component vector of float) 0:25 Color: direct index for structure ( temp 4-component vector of float) 0:25 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 1.000000 0:25 1.000000 0:25 1.000000 0:25 1.000000 0:26 Branch: Return with expression 0:26 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:12 Color: direct index for structure ( temp 4-component vector of float) 0:12 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:12 Constant: 0:12 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 81 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 14 "$Global" MemberName 14($Global) 0 "ival" MemberName 14($Global) 1 "ival4" MemberName 14($Global) 2 "fval" MemberName 14($Global) 3 "fval4" Name 16 "" Name 72 "psout" Name 81 "@entryPointOutput.Color" Decorate 14($Global) Block MemberDecorate 14($Global) 0 Offset 0 MemberDecorate 14($Global) 1 Offset 16 MemberDecorate 14($Global) 2 Offset 32 MemberDecorate 14($Global) 3 Offset 48 Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 81(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 1 13: TypeVector 12(int) 4 14($Global): TypeStruct 12(int) 13(ivec4) 6(float) 7(fvec4) 15: TypePointer Uniform 14($Global) 16: 15(ptr) Variable Uniform 17: 12(int) Constant 0 18: TypePointer Uniform 12(int) 21: TypeBool 22: TypeInt 32 0 23: 22(int) Constant 0 26: 12(int) Constant 1 27: TypePointer Uniform 13(ivec4) 30: TypeVector 21(bool) 4 31: TypeVector 22(int) 4 32: 31(ivec4) ConstantComposite 23 23 23 23 35: 12(int) Constant 2 36: TypePointer Uniform 6(float) 39: 6(float) Constant 0 42: 12(int) Constant 3 43: TypePointer Uniform 7(fvec4) 46: 7(fvec4) ConstantComposite 39 39 39 39 71: TypePointer Function 8(PS_OUTPUT) 73: 6(float) Constant 1065353216 74: 7(fvec4) ConstantComposite 73 73 73 73 75: TypePointer Function 7(fvec4) 80: TypePointer Output 7(fvec4) 81(@entryPointOutput.Color): 80(ptr) Variable Output 4(main): 2 Function None 3 5: Label 82:8(PS_OUTPUT) FunctionCall 10(@main() 83: 7(fvec4) CompositeExtract 82 0 Store 81(@entryPointOutput.Color) 83 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 72(psout): 71(ptr) Variable Function 19: 18(ptr) AccessChain 16 17 20: 12(int) Load 19 24: 21(bool) INotEqual 20 23 25: 21(bool) LogicalNot 24 28: 27(ptr) AccessChain 16 26 29: 13(ivec4) Load 28 33: 30(bvec4) INotEqual 29 32 34: 30(bvec4) LogicalNot 33 37: 36(ptr) AccessChain 16 35 38: 6(float) Load 37 40: 21(bool) FUnordNotEqual 38 39 41: 21(bool) LogicalNot 40 44: 43(ptr) AccessChain 16 42 45: 7(fvec4) Load 44 47: 30(bvec4) FUnordNotEqual 45 46 48: 30(bvec4) LogicalNot 47 49: 18(ptr) AccessChain 16 17 50: 12(int) Load 49 51: 21(bool) INotEqual 50 23 SelectionMerge 53 None BranchConditional 51 52 53 52: Label Branch 53 53: Label 54: 36(ptr) AccessChain 16 35 55: 6(float) Load 54 56: 21(bool) FUnordNotEqual 55 39 SelectionMerge 58 None BranchConditional 56 57 58 57: Label Branch 58 58: Label 59: 18(ptr) AccessChain 16 17 60: 12(int) Load 59 61: 21(bool) INotEqual 60 23 62: 21(bool) LogicalNot 61 SelectionMerge 64 None BranchConditional 62 63 64 63: Label Branch 64 64: Label 65: 36(ptr) AccessChain 16 35 66: 6(float) Load 65 67: 21(bool) FUnordNotEqual 66 39 68: 21(bool) LogicalNot 67 SelectionMerge 70 None BranchConditional 68 69 70 69: Label Branch 70 70: Label 76: 75(ptr) AccessChain 72(psout) 17 Store 76 74 77:8(PS_OUTPUT) Load 72(psout) ReturnValue 77 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.logicalConvert.frag.out000066400000000000000000000263411506534232700240400ustar00rootroot00000000000000hlsl.logicalConvert.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Test condition and select ( temp void) 0:3 Condition 0:3 Constant: 0:3 false (const bool) 0:3 true case 0:4 Branch: Return with expression 0:4 Constant: 0:4 0.000000 0:4 0.000000 0:4 0.000000 0:4 0.000000 0:5 Test condition and select ( temp void) 0:5 Condition 0:5 Constant: 0:5 false (const bool) 0:5 true case 0:6 Branch: Return with expression 0:6 Constant: 0:6 0.000000 0:6 0.000000 0:6 0.000000 0:6 0.000000 0:7 Test condition and select ( temp void) 0:7 Condition 0:7 Constant: 0:7 true (const bool) 0:7 true case 0:8 Branch: Return with expression 0:8 Constant: 0:8 0.000000 0:8 0.000000 0:8 0.000000 0:8 0.000000 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Constant: 0:9 true (const bool) 0:9 true case 0:10 Branch: Return with expression 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:11 Test condition and select ( temp void) 0:11 Condition 0:11 Constant: 0:11 false (const bool) 0:11 true case 0:12 Branch: Return with expression 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:13 Test condition and select ( temp void) 0:13 Condition 0:13 Constant: 0:13 false (const bool) 0:13 true case 0:14 Branch: Return with expression 0:14 Constant: 0:14 0.000000 0:14 0.000000 0:14 0.000000 0:14 0.000000 0:15 Test condition and select ( temp void) 0:15 Condition 0:15 Constant: 0:15 true (const bool) 0:15 true case 0:16 Branch: Return with expression 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:17 Test condition and select ( temp void) 0:17 Condition 0:17 Constant: 0:17 false (const bool) 0:17 true case 0:18 Branch: Return with expression 0:18 Constant: 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 Constant: 0:19 true (const bool) 0:19 true case 0:20 Branch: Return with expression 0:20 Constant: 0:20 0.000000 0:20 0.000000 0:20 0.000000 0:20 0.000000 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 Constant: 0:21 true (const bool) 0:21 true case 0:22 Branch: Return with expression 0:22 Constant: 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Test condition and select ( temp void) 0:3 Condition 0:3 Constant: 0:3 false (const bool) 0:3 true case 0:4 Branch: Return with expression 0:4 Constant: 0:4 0.000000 0:4 0.000000 0:4 0.000000 0:4 0.000000 0:5 Test condition and select ( temp void) 0:5 Condition 0:5 Constant: 0:5 false (const bool) 0:5 true case 0:6 Branch: Return with expression 0:6 Constant: 0:6 0.000000 0:6 0.000000 0:6 0.000000 0:6 0.000000 0:7 Test condition and select ( temp void) 0:7 Condition 0:7 Constant: 0:7 true (const bool) 0:7 true case 0:8 Branch: Return with expression 0:8 Constant: 0:8 0.000000 0:8 0.000000 0:8 0.000000 0:8 0.000000 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Constant: 0:9 true (const bool) 0:9 true case 0:10 Branch: Return with expression 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:10 0.000000 0:11 Test condition and select ( temp void) 0:11 Condition 0:11 Constant: 0:11 false (const bool) 0:11 true case 0:12 Branch: Return with expression 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:13 Test condition and select ( temp void) 0:13 Condition 0:13 Constant: 0:13 false (const bool) 0:13 true case 0:14 Branch: Return with expression 0:14 Constant: 0:14 0.000000 0:14 0.000000 0:14 0.000000 0:14 0.000000 0:15 Test condition and select ( temp void) 0:15 Condition 0:15 Constant: 0:15 true (const bool) 0:15 true case 0:16 Branch: Return with expression 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:17 Test condition and select ( temp void) 0:17 Condition 0:17 Constant: 0:17 false (const bool) 0:17 true case 0:18 Branch: Return with expression 0:18 Constant: 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 Constant: 0:19 true (const bool) 0:19 true case 0:20 Branch: Return with expression 0:20 Constant: 0:20 0.000000 0:20 0.000000 0:20 0.000000 0:20 0.000000 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 Constant: 0:21 true (const bool) 0:21 true case 0:22 Branch: Return with expression 0:22 Constant: 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // 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" 48 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" 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) 11: TypeBool 12: 11(bool) ConstantFalse 15: 6(float) Constant 0 16: 7(fvec4) ConstantComposite 15 15 15 15 21: 11(bool) ConstantTrue 47: TypePointer Output 7(fvec4) 48(@entryPointOutput): 47(ptr) Variable Output 4(main): 2 Function None 3 5: Label 49: 7(fvec4) FunctionCall 9(@main() Store 48(@entryPointOutput) 49 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label SelectionMerge 14 None BranchConditional 12 13 14 13: Label ReturnValue 16 14: Label SelectionMerge 19 None BranchConditional 12 18 19 18: Label ReturnValue 16 19: Label SelectionMerge 23 None BranchConditional 21 22 23 22: Label ReturnValue 16 23: Label SelectionMerge 26 None BranchConditional 21 25 26 25: Label ReturnValue 16 26: Label SelectionMerge 29 None BranchConditional 12 28 29 28: Label ReturnValue 16 29: Label SelectionMerge 32 None BranchConditional 12 31 32 31: Label ReturnValue 16 32: Label SelectionMerge 35 None BranchConditional 21 34 35 34: Label ReturnValue 16 35: Label SelectionMerge 38 None BranchConditional 12 37 38 37: Label ReturnValue 16 38: Label SelectionMerge 41 None BranchConditional 21 40 41 40: Label ReturnValue 16 41: Label SelectionMerge 44 None BranchConditional 21 43 44 43: Label ReturnValue 16 44: Label 46: 7(fvec4) Undef ReturnValue 46 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.loopattr.frag.out000066400000000000000000000212071506534232700227250ustar00rootroot00000000000000hlsl.loopattr.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @main( ( temp 4-component vector of float) 0:3 Function Parameters: 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'x' ( temp int) 0:5 Constant: 0:5 0 (const int) 0:5 Loop with condition tested first: Unroll 0:5 Loop Condition 0:5 Compare Less Than ( temp bool) 0:5 'x' ( temp int) 0:5 Constant: 0:5 5 (const int) 0:5 No loop body 0:5 Loop Terminal Expression 0:5 Pre-Increment ( temp int) 0:5 'x' ( temp int) 0:8 Sequence 0:8 move second child to first child ( temp int) 0:8 'y' ( temp int) 0:8 Constant: 0:8 0 (const int) 0:8 Loop with condition tested first: DontUnroll 0:8 Loop Condition 0:8 Compare Less Than ( temp bool) 0:8 'y' ( temp int) 0:8 Constant: 0:8 5 (const int) 0:8 No loop body 0:8 Loop Terminal Expression 0:8 Pre-Increment ( temp int) 0:8 'y' ( temp int) 0:11 Sequence 0:11 move second child to first child ( temp int) 0:11 'z' ( temp int) 0:11 Constant: 0:11 0 (const int) 0:11 Loop with condition tested first 0:11 Loop Condition 0:11 Compare Less Than ( temp bool) 0:11 'z' ( temp int) 0:11 Constant: 0:11 5 (const int) 0:11 No loop body 0:11 Loop Terminal Expression 0:11 Pre-Increment ( temp int) 0:11 'z' ( temp int) 0:13 Branch: Return with expression 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:3 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @main( ( temp 4-component vector of float) 0:3 Function Parameters: 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'x' ( temp int) 0:5 Constant: 0:5 0 (const int) 0:5 Loop with condition tested first: Unroll 0:5 Loop Condition 0:5 Compare Less Than ( temp bool) 0:5 'x' ( temp int) 0:5 Constant: 0:5 5 (const int) 0:5 No loop body 0:5 Loop Terminal Expression 0:5 Pre-Increment ( temp int) 0:5 'x' ( temp int) 0:8 Sequence 0:8 move second child to first child ( temp int) 0:8 'y' ( temp int) 0:8 Constant: 0:8 0 (const int) 0:8 Loop with condition tested first: DontUnroll 0:8 Loop Condition 0:8 Compare Less Than ( temp bool) 0:8 'y' ( temp int) 0:8 Constant: 0:8 5 (const int) 0:8 No loop body 0:8 Loop Terminal Expression 0:8 Pre-Increment ( temp int) 0:8 'y' ( temp int) 0:11 Sequence 0:11 move second child to first child ( temp int) 0:11 'z' ( temp int) 0:11 Constant: 0:11 0 (const int) 0:11 Loop with condition tested first 0:11 Loop Condition 0:11 Compare Less Than ( temp bool) 0:11 'z' ( temp int) 0:11 Constant: 0:11 5 (const int) 0:11 No loop body 0:11 Loop Terminal Expression 0:11 Pre-Increment ( temp int) 0:11 'z' ( temp int) 0:13 Branch: Return with expression 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:3 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 52 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "x" Name 27 "y" Name 37 "z" Name 52 "@entryPointOutput" Decorate 52(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 1 12: TypePointer Function 11(int) 14: 11(int) Constant 0 21: 11(int) Constant 5 22: TypeBool 25: 11(int) Constant 1 47: 6(float) Constant 0 48: 7(fvec4) ConstantComposite 47 47 47 47 51: TypePointer Output 7(fvec4) 52(@entryPointOutput): 51(ptr) Variable Output 4(main): 2 Function None 3 5: Label 53: 7(fvec4) FunctionCall 9(@main() Store 52(@entryPointOutput) 53 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 13(x): 12(ptr) Variable Function 27(y): 12(ptr) Variable Function 37(z): 12(ptr) Variable Function Store 13(x) 14 Branch 15 15: Label LoopMerge 17 18 Unroll Branch 19 19: Label 20: 11(int) Load 13(x) 23: 22(bool) SLessThan 20 21 BranchConditional 23 16 17 16: Label Branch 18 18: Label 24: 11(int) Load 13(x) 26: 11(int) IAdd 24 25 Store 13(x) 26 Branch 15 17: Label Store 27(y) 14 Branch 28 28: Label LoopMerge 30 31 DontUnroll Branch 32 32: Label 33: 11(int) Load 27(y) 34: 22(bool) SLessThan 33 21 BranchConditional 34 29 30 29: Label Branch 31 31: Label 35: 11(int) Load 27(y) 36: 11(int) IAdd 35 25 Store 27(y) 36 Branch 28 30: Label Store 37(z) 14 Branch 38 38: Label LoopMerge 40 41 None Branch 42 42: Label 43: 11(int) Load 37(z) 44: 22(bool) SLessThan 43 21 BranchConditional 44 39 40 39: Label Branch 41 41: Label 45: 11(int) Load 37(z) 46: 11(int) IAdd 45 25 Store 37(z) 46 Branch 38 40: Label ReturnValue 48 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matNx1.frag.out000066400000000000000000000307111506534232700222310ustar00rootroot00000000000000hlsl.matNx1.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: TestMatNx1( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 1X1 matrix of float) 0:13 'r00' ( temp 1X1 matrix of float) 0:13 transpose ( temp 1X1 matrix of float) 0:13 'f1x1' ( temp 1X1 matrix of float) 0:14 Sequence 0:14 move second child to first child ( temp 1X2 matrix of float) 0:14 'r01' ( temp 1X2 matrix of float) 0:14 transpose ( temp 1X2 matrix of float) 0:14 'f2x1' ( temp 2X1 matrix of float) 0:15 Sequence 0:15 move second child to first child ( temp 1X3 matrix of float) 0:15 'r02' ( temp 1X3 matrix of float) 0:15 transpose ( temp 1X3 matrix of float) 0:15 'f3x1' ( temp 3X1 matrix of float) 0:16 Sequence 0:16 move second child to first child ( temp 1X4 matrix of float) 0:16 'r03' ( temp 1X4 matrix of float) 0:16 transpose ( temp 1X4 matrix of float) 0:16 'f4x1' ( temp 4X1 matrix of float) 0:18 Sequence 0:18 move second child to first child ( temp 1X1 matrix of float) 0:18 'r10' ( temp 1X1 matrix of float) 0:18 transpose ( temp 1X1 matrix of float) 0:18 'f1x1' ( temp 1X1 matrix of float) 0:19 Sequence 0:19 move second child to first child ( temp 2X1 matrix of float) 0:19 'r11' ( temp 2X1 matrix of float) 0:19 transpose ( temp 2X1 matrix of float) 0:19 'f1x2' ( temp 1X2 matrix of float) 0:20 Sequence 0:20 move second child to first child ( temp 3X1 matrix of float) 0:20 'r12' ( temp 3X1 matrix of float) 0:20 transpose ( temp 3X1 matrix of float) 0:20 'f1x3' ( temp 1X3 matrix of float) 0:21 Sequence 0:21 move second child to first child ( temp 4X1 matrix of float) 0:21 'r13' ( temp 4X1 matrix of float) 0:21 transpose ( temp 4X1 matrix of float) 0:21 'f1x4' ( temp 1X4 matrix of float) 0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:27 Function Parameters: 0:? Sequence 0:29 move second child to first child ( temp 4-component vector of float) 0:29 color: direct index for structure ( temp 4-component vector of float) 0:29 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:30 Branch: Return with expression 0:30 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:27 color: direct index for structure ( temp 4-component vector of float) 0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: TestMatNx1( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 1X1 matrix of float) 0:13 'r00' ( temp 1X1 matrix of float) 0:13 transpose ( temp 1X1 matrix of float) 0:13 'f1x1' ( temp 1X1 matrix of float) 0:14 Sequence 0:14 move second child to first child ( temp 1X2 matrix of float) 0:14 'r01' ( temp 1X2 matrix of float) 0:14 transpose ( temp 1X2 matrix of float) 0:14 'f2x1' ( temp 2X1 matrix of float) 0:15 Sequence 0:15 move second child to first child ( temp 1X3 matrix of float) 0:15 'r02' ( temp 1X3 matrix of float) 0:15 transpose ( temp 1X3 matrix of float) 0:15 'f3x1' ( temp 3X1 matrix of float) 0:16 Sequence 0:16 move second child to first child ( temp 1X4 matrix of float) 0:16 'r03' ( temp 1X4 matrix of float) 0:16 transpose ( temp 1X4 matrix of float) 0:16 'f4x1' ( temp 4X1 matrix of float) 0:18 Sequence 0:18 move second child to first child ( temp 1X1 matrix of float) 0:18 'r10' ( temp 1X1 matrix of float) 0:18 transpose ( temp 1X1 matrix of float) 0:18 'f1x1' ( temp 1X1 matrix of float) 0:19 Sequence 0:19 move second child to first child ( temp 2X1 matrix of float) 0:19 'r11' ( temp 2X1 matrix of float) 0:19 transpose ( temp 2X1 matrix of float) 0:19 'f1x2' ( temp 1X2 matrix of float) 0:20 Sequence 0:20 move second child to first child ( temp 3X1 matrix of float) 0:20 'r12' ( temp 3X1 matrix of float) 0:20 transpose ( temp 3X1 matrix of float) 0:20 'f1x3' ( temp 1X3 matrix of float) 0:21 Sequence 0:21 move second child to first child ( temp 4X1 matrix of float) 0:21 'r13' ( temp 4X1 matrix of float) 0:21 transpose ( temp 4X1 matrix of float) 0:21 'f1x4' ( temp 1X4 matrix of float) 0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:27 Function Parameters: 0:? Sequence 0:29 move second child to first child ( temp 4-component vector of float) 0:29 color: direct index for structure ( temp 4-component vector of float) 0:29 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:30 Branch: Return with expression 0:30 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:27 color: direct index for structure ( temp 4-component vector of float) 0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 77 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 74 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 6 "TestMatNx1(" Name 10 "PS_OUTPUT" MemberName 10(PS_OUTPUT) 0 "color" Name 12 "@main(" Name 17 "r00" Name 18 "f1x1" Name 24 "r01" Name 27 "f2x1" Name 33 "r02" Name 36 "f3x1" Name 41 "r03" Name 44 "f4x1" Name 47 "r10" Name 50 "r11" Name 51 "f1x2" Name 54 "r12" Name 55 "f1x3" Name 58 "r13" Name 59 "f1x4" Name 63 "ps_output" Name 74 "@entryPointOutput.color" Decorate 74(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10(PS_OUTPUT): TypeStruct 9(fvec4) 11: TypeFunction 10(PS_OUTPUT) 14: TypeVector 8(float) 1 15: TypeMatrix 14(fvec) 1 16: TypePointer Function 15 21: TypeVector 8(float) 2 22: TypeMatrix 21(fvec2) 1 23: TypePointer Function 22 25: TypeMatrix 14(fvec) 2 26: TypePointer Function 25 30: TypeVector 8(float) 3 31: TypeMatrix 30(fvec3) 1 32: TypePointer Function 31 34: TypeMatrix 14(fvec) 3 35: TypePointer Function 34 39: TypeMatrix 9(fvec4) 1 40: TypePointer Function 39 42: TypeMatrix 14(fvec) 4 43: TypePointer Function 42 62: TypePointer Function 10(PS_OUTPUT) 64: TypeInt 32 1 65: 64(int) Constant 0 66: 8(float) Constant 1065353216 67: 9(fvec4) ConstantComposite 66 66 66 66 68: TypePointer Function 9(fvec4) 73: TypePointer Output 9(fvec4) 74(@entryPointOutput.color): 73(ptr) Variable Output 4(main): 2 Function None 3 5: Label 75:10(PS_OUTPUT) FunctionCall 12(@main() 76: 9(fvec4) CompositeExtract 75 0 Store 74(@entryPointOutput.color) 76 Return FunctionEnd 6(TestMatNx1(): 2 Function None 3 7: Label 17(r00): 16(ptr) Variable Function 18(f1x1): 16(ptr) Variable Function 24(r01): 23(ptr) Variable Function 27(f2x1): 26(ptr) Variable Function 33(r02): 32(ptr) Variable Function 36(f3x1): 35(ptr) Variable Function 41(r03): 40(ptr) Variable Function 44(f4x1): 43(ptr) Variable Function 47(r10): 16(ptr) Variable Function 50(r11): 26(ptr) Variable Function 51(f1x2): 23(ptr) Variable Function 54(r12): 35(ptr) Variable Function 55(f1x3): 32(ptr) Variable Function 58(r13): 43(ptr) Variable Function 59(f1x4): 40(ptr) Variable Function 19: 15 Load 18(f1x1) 20: 15 Transpose 19 Store 17(r00) 20 28: 25 Load 27(f2x1) 29: 22 Transpose 28 Store 24(r01) 29 37: 34 Load 36(f3x1) 38: 31 Transpose 37 Store 33(r02) 38 45: 42 Load 44(f4x1) 46: 39 Transpose 45 Store 41(r03) 46 48: 15 Load 18(f1x1) 49: 15 Transpose 48 Store 47(r10) 49 52: 22 Load 51(f1x2) 53: 25 Transpose 52 Store 50(r11) 53 56: 31 Load 55(f1x3) 57: 34 Transpose 56 Store 54(r12) 57 60: 39 Load 59(f1x4) 61: 42 Transpose 60 Store 58(r13) 61 Return FunctionEnd 12(@main():10(PS_OUTPUT) Function None 11 13: Label 63(ps_output): 62(ptr) Variable Function 69: 68(ptr) AccessChain 63(ps_output) 65 Store 69 67 70:10(PS_OUTPUT) Load 63(ps_output) ReturnValue 70 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matType.bool.frag.out000066400000000000000000000474701506534232700234500ustar00rootroot00000000000000hlsl.matType.bool.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: TestBoolMatTypes( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:25 Sequence 0:25 move second child to first child ( temp 1X1 matrix of bool) 0:25 'r00' ( temp 1X1 matrix of bool) 0:25 transpose ( temp 1X1 matrix of bool) 0:25 'b1x1' ( temp 1X1 matrix of bool) 0:26 Sequence 0:26 move second child to first child ( temp 1X2 matrix of bool) 0:26 'r01' ( temp 1X2 matrix of bool) 0:26 transpose ( temp 1X2 matrix of bool) 0:26 'b2x1' ( temp 2X1 matrix of bool) 0:27 Sequence 0:27 move second child to first child ( temp 1X3 matrix of bool) 0:27 'r02' ( temp 1X3 matrix of bool) 0:27 transpose ( temp 1X3 matrix of bool) 0:27 'b3x1' ( temp 3X1 matrix of bool) 0:28 Sequence 0:28 move second child to first child ( temp 1X4 matrix of bool) 0:28 'r03' ( temp 1X4 matrix of bool) 0:28 transpose ( temp 1X4 matrix of bool) 0:28 'b4x1' ( temp 4X1 matrix of bool) 0:30 Sequence 0:30 move second child to first child ( temp 2X1 matrix of bool) 0:30 'r10' ( temp 2X1 matrix of bool) 0:30 transpose ( temp 2X1 matrix of bool) 0:30 'b1x2' ( temp 1X2 matrix of bool) 0:31 Sequence 0:31 move second child to first child ( temp 2X2 matrix of bool) 0:31 'r11' ( temp 2X2 matrix of bool) 0:31 transpose ( temp 2X2 matrix of bool) 0:31 'b2x2' ( temp 2X2 matrix of bool) 0:32 Sequence 0:32 move second child to first child ( temp 2X3 matrix of bool) 0:32 'r12' ( temp 2X3 matrix of bool) 0:32 transpose ( temp 2X3 matrix of bool) 0:32 'b3x2' ( temp 3X2 matrix of bool) 0:33 Sequence 0:33 move second child to first child ( temp 2X4 matrix of bool) 0:33 'r13' ( temp 2X4 matrix of bool) 0:33 transpose ( temp 2X4 matrix of bool) 0:33 'b4x2' ( temp 4X2 matrix of bool) 0:35 Sequence 0:35 move second child to first child ( temp 3X1 matrix of bool) 0:35 'r20' ( temp 3X1 matrix of bool) 0:35 transpose ( temp 3X1 matrix of bool) 0:35 'b1x3' ( temp 1X3 matrix of bool) 0:36 Sequence 0:36 move second child to first child ( temp 3X2 matrix of bool) 0:36 'r21' ( temp 3X2 matrix of bool) 0:36 transpose ( temp 3X2 matrix of bool) 0:36 'b2x3' ( temp 2X3 matrix of bool) 0:37 Sequence 0:37 move second child to first child ( temp 3X3 matrix of bool) 0:37 'r22' ( temp 3X3 matrix of bool) 0:37 transpose ( temp 3X3 matrix of bool) 0:37 'b3x3' ( temp 3X3 matrix of bool) 0:38 Sequence 0:38 move second child to first child ( temp 3X4 matrix of bool) 0:38 'r23' ( temp 3X4 matrix of bool) 0:38 transpose ( temp 3X4 matrix of bool) 0:38 'b4x3' ( temp 4X3 matrix of bool) 0:40 Sequence 0:40 move second child to first child ( temp 4X1 matrix of bool) 0:40 'r30' ( temp 4X1 matrix of bool) 0:40 transpose ( temp 4X1 matrix of bool) 0:40 'b1x4' ( temp 1X4 matrix of bool) 0:41 Sequence 0:41 move second child to first child ( temp 4X2 matrix of bool) 0:41 'r31' ( temp 4X2 matrix of bool) 0:41 transpose ( temp 4X2 matrix of bool) 0:41 'b2x4' ( temp 2X4 matrix of bool) 0:42 Sequence 0:42 move second child to first child ( temp 4X3 matrix of bool) 0:42 'r32' ( temp 4X3 matrix of bool) 0:42 transpose ( temp 4X3 matrix of bool) 0:42 'b3x4' ( temp 3X4 matrix of bool) 0:43 Sequence 0:43 move second child to first child ( temp 4X4 matrix of bool) 0:43 'r33' ( temp 4X4 matrix of bool) 0:43 transpose ( temp 4X4 matrix of bool) 0:43 'b4x4' ( temp 4X4 matrix of bool) 0:49 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:49 Function Parameters: 0:? Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 color: direct index for structure ( temp 4-component vector of float) 0:51 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 0.000000 0:51 0.000000 0:51 0.000000 0:51 0.000000 0:52 Branch: Return with expression 0:52 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:49 Function Definition: main( ( temp void) 0:49 Function Parameters: 0:? Sequence 0:49 Sequence 0:49 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:49 color: direct index for structure ( temp 4-component vector of float) 0:49 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:49 Constant: 0:49 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: TestBoolMatTypes( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:25 Sequence 0:25 move second child to first child ( temp 1X1 matrix of bool) 0:25 'r00' ( temp 1X1 matrix of bool) 0:25 transpose ( temp 1X1 matrix of bool) 0:25 'b1x1' ( temp 1X1 matrix of bool) 0:26 Sequence 0:26 move second child to first child ( temp 1X2 matrix of bool) 0:26 'r01' ( temp 1X2 matrix of bool) 0:26 transpose ( temp 1X2 matrix of bool) 0:26 'b2x1' ( temp 2X1 matrix of bool) 0:27 Sequence 0:27 move second child to first child ( temp 1X3 matrix of bool) 0:27 'r02' ( temp 1X3 matrix of bool) 0:27 transpose ( temp 1X3 matrix of bool) 0:27 'b3x1' ( temp 3X1 matrix of bool) 0:28 Sequence 0:28 move second child to first child ( temp 1X4 matrix of bool) 0:28 'r03' ( temp 1X4 matrix of bool) 0:28 transpose ( temp 1X4 matrix of bool) 0:28 'b4x1' ( temp 4X1 matrix of bool) 0:30 Sequence 0:30 move second child to first child ( temp 2X1 matrix of bool) 0:30 'r10' ( temp 2X1 matrix of bool) 0:30 transpose ( temp 2X1 matrix of bool) 0:30 'b1x2' ( temp 1X2 matrix of bool) 0:31 Sequence 0:31 move second child to first child ( temp 2X2 matrix of bool) 0:31 'r11' ( temp 2X2 matrix of bool) 0:31 transpose ( temp 2X2 matrix of bool) 0:31 'b2x2' ( temp 2X2 matrix of bool) 0:32 Sequence 0:32 move second child to first child ( temp 2X3 matrix of bool) 0:32 'r12' ( temp 2X3 matrix of bool) 0:32 transpose ( temp 2X3 matrix of bool) 0:32 'b3x2' ( temp 3X2 matrix of bool) 0:33 Sequence 0:33 move second child to first child ( temp 2X4 matrix of bool) 0:33 'r13' ( temp 2X4 matrix of bool) 0:33 transpose ( temp 2X4 matrix of bool) 0:33 'b4x2' ( temp 4X2 matrix of bool) 0:35 Sequence 0:35 move second child to first child ( temp 3X1 matrix of bool) 0:35 'r20' ( temp 3X1 matrix of bool) 0:35 transpose ( temp 3X1 matrix of bool) 0:35 'b1x3' ( temp 1X3 matrix of bool) 0:36 Sequence 0:36 move second child to first child ( temp 3X2 matrix of bool) 0:36 'r21' ( temp 3X2 matrix of bool) 0:36 transpose ( temp 3X2 matrix of bool) 0:36 'b2x3' ( temp 2X3 matrix of bool) 0:37 Sequence 0:37 move second child to first child ( temp 3X3 matrix of bool) 0:37 'r22' ( temp 3X3 matrix of bool) 0:37 transpose ( temp 3X3 matrix of bool) 0:37 'b3x3' ( temp 3X3 matrix of bool) 0:38 Sequence 0:38 move second child to first child ( temp 3X4 matrix of bool) 0:38 'r23' ( temp 3X4 matrix of bool) 0:38 transpose ( temp 3X4 matrix of bool) 0:38 'b4x3' ( temp 4X3 matrix of bool) 0:40 Sequence 0:40 move second child to first child ( temp 4X1 matrix of bool) 0:40 'r30' ( temp 4X1 matrix of bool) 0:40 transpose ( temp 4X1 matrix of bool) 0:40 'b1x4' ( temp 1X4 matrix of bool) 0:41 Sequence 0:41 move second child to first child ( temp 4X2 matrix of bool) 0:41 'r31' ( temp 4X2 matrix of bool) 0:41 transpose ( temp 4X2 matrix of bool) 0:41 'b2x4' ( temp 2X4 matrix of bool) 0:42 Sequence 0:42 move second child to first child ( temp 4X3 matrix of bool) 0:42 'r32' ( temp 4X3 matrix of bool) 0:42 transpose ( temp 4X3 matrix of bool) 0:42 'b3x4' ( temp 3X4 matrix of bool) 0:43 Sequence 0:43 move second child to first child ( temp 4X4 matrix of bool) 0:43 'r33' ( temp 4X4 matrix of bool) 0:43 transpose ( temp 4X4 matrix of bool) 0:43 'b4x4' ( temp 4X4 matrix of bool) 0:49 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:49 Function Parameters: 0:? Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 color: direct index for structure ( temp 4-component vector of float) 0:51 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 0.000000 0:51 0.000000 0:51 0.000000 0:51 0.000000 0:52 Branch: Return with expression 0:52 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:49 Function Definition: main( ( temp void) 0:49 Function Parameters: 0:? Sequence 0:49 Sequence 0:49 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:49 color: direct index for structure ( temp 4-component vector of float) 0:49 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:49 Constant: 0:49 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 130 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 127 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 6 "TestBoolMatTypes(" Name 10 "PS_OUTPUT" MemberName 10(PS_OUTPUT) 0 "color" Name 12 "@main(" Name 18 "r00" Name 19 "b1x1" Name 25 "r01" Name 28 "b2x1" Name 34 "r02" Name 37 "b3x1" Name 43 "r03" Name 46 "b4x1" Name 49 "r10" Name 50 "b1x2" Name 55 "r11" Name 56 "b2x2" Name 61 "r12" Name 64 "b3x2" Name 69 "r13" Name 72 "b4x2" Name 75 "r20" Name 76 "b1x3" Name 79 "r21" Name 80 "b2x3" Name 85 "r22" Name 86 "b3x3" Name 91 "r23" Name 94 "b4x3" Name 97 "r30" Name 98 "b1x4" Name 101 "r31" Name 102 "b2x4" Name 105 "r32" Name 106 "b3x4" Name 111 "r33" Name 112 "b4x4" Name 116 "ps_output" Name 127 "@entryPointOutput.color" Decorate 127(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10(PS_OUTPUT): TypeStruct 9(fvec4) 11: TypeFunction 10(PS_OUTPUT) 14: TypeBool 15: TypeVector 14(bool) 1 16: TypeMatrix 15(bvec) 1 17: TypePointer Function 16 22: TypeVector 14(bool) 2 23: TypeMatrix 22(bvec2) 1 24: TypePointer Function 23 26: TypeMatrix 15(bvec) 2 27: TypePointer Function 26 31: TypeVector 14(bool) 3 32: TypeMatrix 31(bvec3) 1 33: TypePointer Function 32 35: TypeMatrix 15(bvec) 3 36: TypePointer Function 35 40: TypeVector 14(bool) 4 41: TypeMatrix 40(bvec4) 1 42: TypePointer Function 41 44: TypeMatrix 15(bvec) 4 45: TypePointer Function 44 53: TypeMatrix 22(bvec2) 2 54: TypePointer Function 53 59: TypeMatrix 31(bvec3) 2 60: TypePointer Function 59 62: TypeMatrix 22(bvec2) 3 63: TypePointer Function 62 67: TypeMatrix 40(bvec4) 2 68: TypePointer Function 67 70: TypeMatrix 22(bvec2) 4 71: TypePointer Function 70 83: TypeMatrix 31(bvec3) 3 84: TypePointer Function 83 89: TypeMatrix 40(bvec4) 3 90: TypePointer Function 89 92: TypeMatrix 31(bvec3) 4 93: TypePointer Function 92 109: TypeMatrix 40(bvec4) 4 110: TypePointer Function 109 115: TypePointer Function 10(PS_OUTPUT) 117: TypeInt 32 1 118: 117(int) Constant 0 119: 8(float) Constant 0 120: 9(fvec4) ConstantComposite 119 119 119 119 121: TypePointer Function 9(fvec4) 126: TypePointer Output 9(fvec4) 127(@entryPointOutput.color): 126(ptr) Variable Output 4(main): 2 Function None 3 5: Label 128:10(PS_OUTPUT) FunctionCall 12(@main() 129: 9(fvec4) CompositeExtract 128 0 Store 127(@entryPointOutput.color) 129 Return FunctionEnd 6(TestBoolMatTypes(): 2 Function None 3 7: Label 18(r00): 17(ptr) Variable Function 19(b1x1): 17(ptr) Variable Function 25(r01): 24(ptr) Variable Function 28(b2x1): 27(ptr) Variable Function 34(r02): 33(ptr) Variable Function 37(b3x1): 36(ptr) Variable Function 43(r03): 42(ptr) Variable Function 46(b4x1): 45(ptr) Variable Function 49(r10): 27(ptr) Variable Function 50(b1x2): 24(ptr) Variable Function 55(r11): 54(ptr) Variable Function 56(b2x2): 54(ptr) Variable Function 61(r12): 60(ptr) Variable Function 64(b3x2): 63(ptr) Variable Function 69(r13): 68(ptr) Variable Function 72(b4x2): 71(ptr) Variable Function 75(r20): 36(ptr) Variable Function 76(b1x3): 33(ptr) Variable Function 79(r21): 63(ptr) Variable Function 80(b2x3): 60(ptr) Variable Function 85(r22): 84(ptr) Variable Function 86(b3x3): 84(ptr) Variable Function 91(r23): 90(ptr) Variable Function 94(b4x3): 93(ptr) Variable Function 97(r30): 45(ptr) Variable Function 98(b1x4): 42(ptr) Variable Function 101(r31): 71(ptr) Variable Function 102(b2x4): 68(ptr) Variable Function 105(r32): 93(ptr) Variable Function 106(b3x4): 90(ptr) Variable Function 111(r33): 110(ptr) Variable Function 112(b4x4): 110(ptr) Variable Function 20: 16 Load 19(b1x1) 21: 16 Transpose 20 Store 18(r00) 21 29: 26 Load 28(b2x1) 30: 23 Transpose 29 Store 25(r01) 30 38: 35 Load 37(b3x1) 39: 32 Transpose 38 Store 34(r02) 39 47: 44 Load 46(b4x1) 48: 41 Transpose 47 Store 43(r03) 48 51: 23 Load 50(b1x2) 52: 26 Transpose 51 Store 49(r10) 52 57: 53 Load 56(b2x2) 58: 53 Transpose 57 Store 55(r11) 58 65: 62 Load 64(b3x2) 66: 59 Transpose 65 Store 61(r12) 66 73: 70 Load 72(b4x2) 74: 67 Transpose 73 Store 69(r13) 74 77: 32 Load 76(b1x3) 78: 35 Transpose 77 Store 75(r20) 78 81: 59 Load 80(b2x3) 82: 62 Transpose 81 Store 79(r21) 82 87: 83 Load 86(b3x3) 88: 83 Transpose 87 Store 85(r22) 88 95: 92 Load 94(b4x3) 96: 89 Transpose 95 Store 91(r23) 96 99: 41 Load 98(b1x4) 100: 44 Transpose 99 Store 97(r30) 100 103: 67 Load 102(b2x4) 104: 70 Transpose 103 Store 101(r31) 104 107: 89 Load 106(b3x4) 108: 92 Transpose 107 Store 105(r32) 108 113: 109 Load 112(b4x4) 114: 109 Transpose 113 Store 111(r33) 114 Return FunctionEnd 12(@main():10(PS_OUTPUT) Function None 11 13: Label 116(ps_output): 115(ptr) Variable Function 122: 121(ptr) AccessChain 116(ps_output) 118 Store 122 120 123:10(PS_OUTPUT) Load 116(ps_output) ReturnValue 123 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matType.frag.out000066400000000000000000000125121506534232700225030ustar00rootroot00000000000000hlsl.matType.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float) 0:9 Function Parameters: 0:9 'inFloat1' ( in 1-component vector of float) 0:9 'inScalar' ( in float) 0:? Sequence 0:10 Branch: Return with expression 0:10 'inFloat1' ( in 1-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 1-component vector of float f1, uniform 1X1 matrix of float fmat11, uniform 4X1 matrix of float fmat41, uniform 1X2 matrix of float fmat12, uniform 2X3 matrix of double dmat23, uniform 4X4 matrix of int int44}) Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float) 0:9 Function Parameters: 0:9 'inFloat1' ( in 1-component vector of float) 0:9 'inScalar' ( in float) 0:? Sequence 0:10 Branch: Return with expression 0:10 'inFloat1' ( in 1-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 1-component vector of float f1, uniform 1X1 matrix of float fmat11, uniform 4X1 matrix of float fmat41, uniform 1X2 matrix of float fmat12, uniform 2X3 matrix of double dmat23, uniform 4X4 matrix of int int44}) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "ShaderFunction(vf1;f1;" Name 9 "inFloat1" Name 10 "inScalar" Name 27 "$Global" MemberName 27($Global) 0 "f1" MemberName 27($Global) 1 "fmat11" MemberName 27($Global) 2 "fmat41" MemberName 27($Global) 3 "fmat12" MemberName 27($Global) 4 "dmat23" MemberName 27($Global) 5 "int44" Name 29 "" Decorate 27($Global) Block MemberDecorate 27($Global) 0 Offset 0 MemberDecorate 27($Global) 1 RowMajor MemberDecorate 27($Global) 1 MatrixStride 16 MemberDecorate 27($Global) 1 Offset 16 MemberDecorate 27($Global) 2 RowMajor MemberDecorate 27($Global) 2 MatrixStride 16 MemberDecorate 27($Global) 2 Offset 32 MemberDecorate 27($Global) 3 RowMajor MemberDecorate 27($Global) 3 MatrixStride 16 MemberDecorate 27($Global) 3 Offset 48 MemberDecorate 27($Global) 4 RowMajor MemberDecorate 27($Global) 4 MatrixStride 16 MemberDecorate 27($Global) 4 Offset 80 MemberDecorate 27($Global) 5 RowMajor MemberDecorate 27($Global) 5 MatrixStride 16 MemberDecorate 27($Global) 5 Offset 128 Decorate 29 Binding 0 Decorate 29 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 7(ptr) 16: TypeVector 6(float) 1 17: TypeMatrix 16(fvec) 1 18: TypeMatrix 16(fvec) 4 19: TypeVector 6(float) 2 20: TypeMatrix 19(fvec2) 1 21: TypeFloat 64 22: TypeVector 21(float64_t) 3 23: TypeMatrix 22(f64vec3) 2 24: TypeInt 32 1 25: TypeVector 24(int) 4 26: TypeMatrix 25(ivec4) 4 27($Global): TypeStruct 6(float) 17 18 20 23 26 28: TypePointer Uniform 27($Global) 29: 28(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label Return FunctionEnd 11(ShaderFunction(vf1;f1;): 6(float) Function None 8 9(inFloat1): 7(ptr) FunctionParameter 10(inScalar): 7(ptr) FunctionParameter 12: Label 13: 6(float) Load 9(inFloat1) ReturnValue 13 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matType.int.frag.out000066400000000000000000001051271506534232700233010ustar00rootroot00000000000000hlsl.matType.int.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: TestIntMatTypes( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:25 Sequence 0:25 move second child to first child ( temp 1X1 matrix of int) 0:25 'r00' ( temp 1X1 matrix of int) 0:25 transpose ( temp 1X1 matrix of int) 0:25 'i1x1' ( temp 1X1 matrix of int) 0:26 Sequence 0:26 move second child to first child ( temp 1X2 matrix of int) 0:26 'r01' ( temp 1X2 matrix of int) 0:26 transpose ( temp 1X2 matrix of int) 0:26 'i2x1' ( temp 2X1 matrix of int) 0:27 Sequence 0:27 move second child to first child ( temp 1X3 matrix of int) 0:27 'r02' ( temp 1X3 matrix of int) 0:27 transpose ( temp 1X3 matrix of int) 0:27 'i3x1' ( temp 3X1 matrix of int) 0:28 Sequence 0:28 move second child to first child ( temp 1X4 matrix of int) 0:28 'r03' ( temp 1X4 matrix of int) 0:28 transpose ( temp 1X4 matrix of int) 0:28 'i4x1' ( temp 4X1 matrix of int) 0:30 Sequence 0:30 move second child to first child ( temp 2X1 matrix of int) 0:30 'r10' ( temp 2X1 matrix of int) 0:30 transpose ( temp 2X1 matrix of int) 0:30 'i1x2' ( temp 1X2 matrix of int) 0:31 Sequence 0:31 move second child to first child ( temp 2X2 matrix of int) 0:31 'r11' ( temp 2X2 matrix of int) 0:31 transpose ( temp 2X2 matrix of int) 0:31 'i2x2' ( temp 2X2 matrix of int) 0:32 Sequence 0:32 move second child to first child ( temp 2X3 matrix of int) 0:32 'r12' ( temp 2X3 matrix of int) 0:32 transpose ( temp 2X3 matrix of int) 0:32 'i3x2' ( temp 3X2 matrix of int) 0:33 Sequence 0:33 move second child to first child ( temp 2X4 matrix of int) 0:33 'r13' ( temp 2X4 matrix of int) 0:33 transpose ( temp 2X4 matrix of int) 0:33 'i4x2' ( temp 4X2 matrix of int) 0:35 Sequence 0:35 move second child to first child ( temp 3X1 matrix of int) 0:35 'r20' ( temp 3X1 matrix of int) 0:35 transpose ( temp 3X1 matrix of int) 0:35 'i1x3' ( temp 1X3 matrix of int) 0:36 Sequence 0:36 move second child to first child ( temp 3X2 matrix of int) 0:36 'r21' ( temp 3X2 matrix of int) 0:36 transpose ( temp 3X2 matrix of int) 0:36 'i2x3' ( temp 2X3 matrix of int) 0:37 Sequence 0:37 move second child to first child ( temp 3X3 matrix of int) 0:37 'r22' ( temp 3X3 matrix of int) 0:37 transpose ( temp 3X3 matrix of int) 0:37 'i3x3' ( temp 3X3 matrix of int) 0:38 Sequence 0:38 move second child to first child ( temp 3X4 matrix of int) 0:38 'r23' ( temp 3X4 matrix of int) 0:38 transpose ( temp 3X4 matrix of int) 0:38 'i4x3' ( temp 4X3 matrix of int) 0:40 Sequence 0:40 move second child to first child ( temp 4X1 matrix of int) 0:40 'r30' ( temp 4X1 matrix of int) 0:40 transpose ( temp 4X1 matrix of int) 0:40 'i1x4' ( temp 1X4 matrix of int) 0:41 Sequence 0:41 move second child to first child ( temp 4X2 matrix of int) 0:41 'r31' ( temp 4X2 matrix of int) 0:41 transpose ( temp 4X2 matrix of int) 0:41 'i2x4' ( temp 2X4 matrix of int) 0:42 Sequence 0:42 move second child to first child ( temp 4X3 matrix of int) 0:42 'r32' ( temp 4X3 matrix of int) 0:42 transpose ( temp 4X3 matrix of int) 0:42 'i3x4' ( temp 3X4 matrix of int) 0:43 Sequence 0:43 move second child to first child ( temp 4X4 matrix of int) 0:43 'r33' ( temp 4X4 matrix of int) 0:43 transpose ( temp 4X4 matrix of int) 0:43 'i4x4' ( temp 4X4 matrix of int) 0:47 Function Definition: TestUintMatTypes( ( temp void) 0:47 Function Parameters: 0:? Sequence 0:69 Sequence 0:69 move second child to first child ( temp 1X1 matrix of uint) 0:69 'r00' ( temp 1X1 matrix of uint) 0:69 transpose ( temp 1X1 matrix of uint) 0:69 'u1x1' ( temp 1X1 matrix of uint) 0:70 Sequence 0:70 move second child to first child ( temp 1X2 matrix of uint) 0:70 'r01' ( temp 1X2 matrix of uint) 0:70 transpose ( temp 1X2 matrix of uint) 0:70 'u2x1' ( temp 2X1 matrix of uint) 0:71 Sequence 0:71 move second child to first child ( temp 1X3 matrix of uint) 0:71 'r02' ( temp 1X3 matrix of uint) 0:71 transpose ( temp 1X3 matrix of uint) 0:71 'u3x1' ( temp 3X1 matrix of uint) 0:72 Sequence 0:72 move second child to first child ( temp 1X4 matrix of uint) 0:72 'r03' ( temp 1X4 matrix of uint) 0:72 transpose ( temp 1X4 matrix of uint) 0:72 'u4x1' ( temp 4X1 matrix of uint) 0:74 Sequence 0:74 move second child to first child ( temp 2X1 matrix of uint) 0:74 'r10' ( temp 2X1 matrix of uint) 0:74 transpose ( temp 2X1 matrix of uint) 0:74 'u1x2' ( temp 1X2 matrix of uint) 0:75 Sequence 0:75 move second child to first child ( temp 2X2 matrix of uint) 0:75 'r11' ( temp 2X2 matrix of uint) 0:75 transpose ( temp 2X2 matrix of uint) 0:75 'u2x2' ( temp 2X2 matrix of uint) 0:76 Sequence 0:76 move second child to first child ( temp 2X3 matrix of uint) 0:76 'r12' ( temp 2X3 matrix of uint) 0:76 transpose ( temp 2X3 matrix of uint) 0:76 'u3x2' ( temp 3X2 matrix of uint) 0:77 Sequence 0:77 move second child to first child ( temp 2X4 matrix of uint) 0:77 'r13' ( temp 2X4 matrix of uint) 0:77 transpose ( temp 2X4 matrix of uint) 0:77 'u4x2' ( temp 4X2 matrix of uint) 0:79 Sequence 0:79 move second child to first child ( temp 3X1 matrix of uint) 0:79 'r20' ( temp 3X1 matrix of uint) 0:79 transpose ( temp 3X1 matrix of uint) 0:79 'u1x3' ( temp 1X3 matrix of uint) 0:80 Sequence 0:80 move second child to first child ( temp 3X2 matrix of uint) 0:80 'r21' ( temp 3X2 matrix of uint) 0:80 transpose ( temp 3X2 matrix of uint) 0:80 'u2x3' ( temp 2X3 matrix of uint) 0:81 Sequence 0:81 move second child to first child ( temp 3X3 matrix of uint) 0:81 'r22' ( temp 3X3 matrix of uint) 0:81 transpose ( temp 3X3 matrix of uint) 0:81 'u3x3' ( temp 3X3 matrix of uint) 0:82 Sequence 0:82 move second child to first child ( temp 3X4 matrix of uint) 0:82 'r23' ( temp 3X4 matrix of uint) 0:82 transpose ( temp 3X4 matrix of uint) 0:82 'u4x3' ( temp 4X3 matrix of uint) 0:84 Sequence 0:84 move second child to first child ( temp 4X1 matrix of uint) 0:84 'r30' ( temp 4X1 matrix of uint) 0:84 transpose ( temp 4X1 matrix of uint) 0:84 'u1x4' ( temp 1X4 matrix of uint) 0:85 Sequence 0:85 move second child to first child ( temp 4X2 matrix of uint) 0:85 'r31' ( temp 4X2 matrix of uint) 0:85 transpose ( temp 4X2 matrix of uint) 0:85 'u2x4' ( temp 2X4 matrix of uint) 0:86 Sequence 0:86 move second child to first child ( temp 4X3 matrix of uint) 0:86 'r32' ( temp 4X3 matrix of uint) 0:86 transpose ( temp 4X3 matrix of uint) 0:86 'u3x4' ( temp 3X4 matrix of uint) 0:87 Sequence 0:87 move second child to first child ( temp 4X4 matrix of uint) 0:87 'r33' ( temp 4X4 matrix of uint) 0:87 transpose ( temp 4X4 matrix of uint) 0:87 'u4x4' ( temp 4X4 matrix of uint) 0:93 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:93 Function Parameters: 0:? Sequence 0:95 move second child to first child ( temp 4-component vector of float) 0:95 color: direct index for structure ( temp 4-component vector of float) 0:95 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0.000000 0:95 0.000000 0:95 0.000000 0:95 0.000000 0:96 Branch: Return with expression 0:96 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:93 Function Definition: main( ( temp void) 0:93 Function Parameters: 0:? Sequence 0:93 Sequence 0:93 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:93 color: direct index for structure ( temp 4-component vector of float) 0:93 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:93 Constant: 0:93 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: TestIntMatTypes( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:25 Sequence 0:25 move second child to first child ( temp 1X1 matrix of int) 0:25 'r00' ( temp 1X1 matrix of int) 0:25 transpose ( temp 1X1 matrix of int) 0:25 'i1x1' ( temp 1X1 matrix of int) 0:26 Sequence 0:26 move second child to first child ( temp 1X2 matrix of int) 0:26 'r01' ( temp 1X2 matrix of int) 0:26 transpose ( temp 1X2 matrix of int) 0:26 'i2x1' ( temp 2X1 matrix of int) 0:27 Sequence 0:27 move second child to first child ( temp 1X3 matrix of int) 0:27 'r02' ( temp 1X3 matrix of int) 0:27 transpose ( temp 1X3 matrix of int) 0:27 'i3x1' ( temp 3X1 matrix of int) 0:28 Sequence 0:28 move second child to first child ( temp 1X4 matrix of int) 0:28 'r03' ( temp 1X4 matrix of int) 0:28 transpose ( temp 1X4 matrix of int) 0:28 'i4x1' ( temp 4X1 matrix of int) 0:30 Sequence 0:30 move second child to first child ( temp 2X1 matrix of int) 0:30 'r10' ( temp 2X1 matrix of int) 0:30 transpose ( temp 2X1 matrix of int) 0:30 'i1x2' ( temp 1X2 matrix of int) 0:31 Sequence 0:31 move second child to first child ( temp 2X2 matrix of int) 0:31 'r11' ( temp 2X2 matrix of int) 0:31 transpose ( temp 2X2 matrix of int) 0:31 'i2x2' ( temp 2X2 matrix of int) 0:32 Sequence 0:32 move second child to first child ( temp 2X3 matrix of int) 0:32 'r12' ( temp 2X3 matrix of int) 0:32 transpose ( temp 2X3 matrix of int) 0:32 'i3x2' ( temp 3X2 matrix of int) 0:33 Sequence 0:33 move second child to first child ( temp 2X4 matrix of int) 0:33 'r13' ( temp 2X4 matrix of int) 0:33 transpose ( temp 2X4 matrix of int) 0:33 'i4x2' ( temp 4X2 matrix of int) 0:35 Sequence 0:35 move second child to first child ( temp 3X1 matrix of int) 0:35 'r20' ( temp 3X1 matrix of int) 0:35 transpose ( temp 3X1 matrix of int) 0:35 'i1x3' ( temp 1X3 matrix of int) 0:36 Sequence 0:36 move second child to first child ( temp 3X2 matrix of int) 0:36 'r21' ( temp 3X2 matrix of int) 0:36 transpose ( temp 3X2 matrix of int) 0:36 'i2x3' ( temp 2X3 matrix of int) 0:37 Sequence 0:37 move second child to first child ( temp 3X3 matrix of int) 0:37 'r22' ( temp 3X3 matrix of int) 0:37 transpose ( temp 3X3 matrix of int) 0:37 'i3x3' ( temp 3X3 matrix of int) 0:38 Sequence 0:38 move second child to first child ( temp 3X4 matrix of int) 0:38 'r23' ( temp 3X4 matrix of int) 0:38 transpose ( temp 3X4 matrix of int) 0:38 'i4x3' ( temp 4X3 matrix of int) 0:40 Sequence 0:40 move second child to first child ( temp 4X1 matrix of int) 0:40 'r30' ( temp 4X1 matrix of int) 0:40 transpose ( temp 4X1 matrix of int) 0:40 'i1x4' ( temp 1X4 matrix of int) 0:41 Sequence 0:41 move second child to first child ( temp 4X2 matrix of int) 0:41 'r31' ( temp 4X2 matrix of int) 0:41 transpose ( temp 4X2 matrix of int) 0:41 'i2x4' ( temp 2X4 matrix of int) 0:42 Sequence 0:42 move second child to first child ( temp 4X3 matrix of int) 0:42 'r32' ( temp 4X3 matrix of int) 0:42 transpose ( temp 4X3 matrix of int) 0:42 'i3x4' ( temp 3X4 matrix of int) 0:43 Sequence 0:43 move second child to first child ( temp 4X4 matrix of int) 0:43 'r33' ( temp 4X4 matrix of int) 0:43 transpose ( temp 4X4 matrix of int) 0:43 'i4x4' ( temp 4X4 matrix of int) 0:47 Function Definition: TestUintMatTypes( ( temp void) 0:47 Function Parameters: 0:? Sequence 0:69 Sequence 0:69 move second child to first child ( temp 1X1 matrix of uint) 0:69 'r00' ( temp 1X1 matrix of uint) 0:69 transpose ( temp 1X1 matrix of uint) 0:69 'u1x1' ( temp 1X1 matrix of uint) 0:70 Sequence 0:70 move second child to first child ( temp 1X2 matrix of uint) 0:70 'r01' ( temp 1X2 matrix of uint) 0:70 transpose ( temp 1X2 matrix of uint) 0:70 'u2x1' ( temp 2X1 matrix of uint) 0:71 Sequence 0:71 move second child to first child ( temp 1X3 matrix of uint) 0:71 'r02' ( temp 1X3 matrix of uint) 0:71 transpose ( temp 1X3 matrix of uint) 0:71 'u3x1' ( temp 3X1 matrix of uint) 0:72 Sequence 0:72 move second child to first child ( temp 1X4 matrix of uint) 0:72 'r03' ( temp 1X4 matrix of uint) 0:72 transpose ( temp 1X4 matrix of uint) 0:72 'u4x1' ( temp 4X1 matrix of uint) 0:74 Sequence 0:74 move second child to first child ( temp 2X1 matrix of uint) 0:74 'r10' ( temp 2X1 matrix of uint) 0:74 transpose ( temp 2X1 matrix of uint) 0:74 'u1x2' ( temp 1X2 matrix of uint) 0:75 Sequence 0:75 move second child to first child ( temp 2X2 matrix of uint) 0:75 'r11' ( temp 2X2 matrix of uint) 0:75 transpose ( temp 2X2 matrix of uint) 0:75 'u2x2' ( temp 2X2 matrix of uint) 0:76 Sequence 0:76 move second child to first child ( temp 2X3 matrix of uint) 0:76 'r12' ( temp 2X3 matrix of uint) 0:76 transpose ( temp 2X3 matrix of uint) 0:76 'u3x2' ( temp 3X2 matrix of uint) 0:77 Sequence 0:77 move second child to first child ( temp 2X4 matrix of uint) 0:77 'r13' ( temp 2X4 matrix of uint) 0:77 transpose ( temp 2X4 matrix of uint) 0:77 'u4x2' ( temp 4X2 matrix of uint) 0:79 Sequence 0:79 move second child to first child ( temp 3X1 matrix of uint) 0:79 'r20' ( temp 3X1 matrix of uint) 0:79 transpose ( temp 3X1 matrix of uint) 0:79 'u1x3' ( temp 1X3 matrix of uint) 0:80 Sequence 0:80 move second child to first child ( temp 3X2 matrix of uint) 0:80 'r21' ( temp 3X2 matrix of uint) 0:80 transpose ( temp 3X2 matrix of uint) 0:80 'u2x3' ( temp 2X3 matrix of uint) 0:81 Sequence 0:81 move second child to first child ( temp 3X3 matrix of uint) 0:81 'r22' ( temp 3X3 matrix of uint) 0:81 transpose ( temp 3X3 matrix of uint) 0:81 'u3x3' ( temp 3X3 matrix of uint) 0:82 Sequence 0:82 move second child to first child ( temp 3X4 matrix of uint) 0:82 'r23' ( temp 3X4 matrix of uint) 0:82 transpose ( temp 3X4 matrix of uint) 0:82 'u4x3' ( temp 4X3 matrix of uint) 0:84 Sequence 0:84 move second child to first child ( temp 4X1 matrix of uint) 0:84 'r30' ( temp 4X1 matrix of uint) 0:84 transpose ( temp 4X1 matrix of uint) 0:84 'u1x4' ( temp 1X4 matrix of uint) 0:85 Sequence 0:85 move second child to first child ( temp 4X2 matrix of uint) 0:85 'r31' ( temp 4X2 matrix of uint) 0:85 transpose ( temp 4X2 matrix of uint) 0:85 'u2x4' ( temp 2X4 matrix of uint) 0:86 Sequence 0:86 move second child to first child ( temp 4X3 matrix of uint) 0:86 'r32' ( temp 4X3 matrix of uint) 0:86 transpose ( temp 4X3 matrix of uint) 0:86 'u3x4' ( temp 3X4 matrix of uint) 0:87 Sequence 0:87 move second child to first child ( temp 4X4 matrix of uint) 0:87 'r33' ( temp 4X4 matrix of uint) 0:87 transpose ( temp 4X4 matrix of uint) 0:87 'u4x4' ( temp 4X4 matrix of uint) 0:93 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:93 Function Parameters: 0:? Sequence 0:95 move second child to first child ( temp 4-component vector of float) 0:95 color: direct index for structure ( temp 4-component vector of float) 0:95 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0.000000 0:95 0.000000 0:95 0.000000 0:95 0.000000 0:96 Branch: Return with expression 0:96 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:93 Function Definition: main( ( temp void) 0:93 Function Parameters: 0:? Sequence 0:93 Sequence 0:93 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:93 color: direct index for structure ( temp 4-component vector of float) 0:93 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:93 Constant: 0:93 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 232 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 229 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 6 "TestIntMatTypes(" Name 8 "TestUintMatTypes(" Name 12 "PS_OUTPUT" MemberName 12(PS_OUTPUT) 0 "color" Name 14 "@main(" Name 20 "r00" Name 21 "i1x1" Name 27 "r01" Name 30 "i2x1" Name 36 "r02" Name 39 "i3x1" Name 45 "r03" Name 48 "i4x1" Name 51 "r10" Name 52 "i1x2" Name 57 "r11" Name 58 "i2x2" Name 63 "r12" Name 66 "i3x2" Name 71 "r13" Name 74 "i4x2" Name 77 "r20" Name 78 "i1x3" Name 81 "r21" Name 82 "i2x3" Name 87 "r22" Name 88 "i3x3" Name 93 "r23" Name 96 "i4x3" Name 99 "r30" Name 100 "i1x4" Name 103 "r31" Name 104 "i2x4" Name 107 "r32" Name 108 "i3x4" Name 113 "r33" Name 114 "i4x4" Name 121 "r00" Name 122 "u1x1" Name 128 "r01" Name 131 "u2x1" Name 137 "r02" Name 140 "u3x1" Name 146 "r03" Name 149 "u4x1" Name 152 "r10" Name 153 "u1x2" Name 158 "r11" Name 159 "u2x2" Name 164 "r12" Name 167 "u3x2" Name 172 "r13" Name 175 "u4x2" Name 178 "r20" Name 179 "u1x3" Name 182 "r21" Name 183 "u2x3" Name 188 "r22" Name 189 "u3x3" Name 194 "r23" Name 197 "u4x3" Name 200 "r30" Name 201 "u1x4" Name 204 "r31" Name 205 "u2x4" Name 208 "r32" Name 209 "u3x4" Name 214 "r33" Name 215 "u4x4" Name 219 "ps_output" Name 229 "@entryPointOutput.color" Decorate 229(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 11: TypeVector 10(float) 4 12(PS_OUTPUT): TypeStruct 11(fvec4) 13: TypeFunction 12(PS_OUTPUT) 16: TypeInt 32 1 17: TypeVector 16(int) 1 18: TypeMatrix 17(ivec) 1 19: TypePointer Function 18 24: TypeVector 16(int) 2 25: TypeMatrix 24(ivec2) 1 26: TypePointer Function 25 28: TypeMatrix 17(ivec) 2 29: TypePointer Function 28 33: TypeVector 16(int) 3 34: TypeMatrix 33(ivec3) 1 35: TypePointer Function 34 37: TypeMatrix 17(ivec) 3 38: TypePointer Function 37 42: TypeVector 16(int) 4 43: TypeMatrix 42(ivec4) 1 44: TypePointer Function 43 46: TypeMatrix 17(ivec) 4 47: TypePointer Function 46 55: TypeMatrix 24(ivec2) 2 56: TypePointer Function 55 61: TypeMatrix 33(ivec3) 2 62: TypePointer Function 61 64: TypeMatrix 24(ivec2) 3 65: TypePointer Function 64 69: TypeMatrix 42(ivec4) 2 70: TypePointer Function 69 72: TypeMatrix 24(ivec2) 4 73: TypePointer Function 72 85: TypeMatrix 33(ivec3) 3 86: TypePointer Function 85 91: TypeMatrix 42(ivec4) 3 92: TypePointer Function 91 94: TypeMatrix 33(ivec3) 4 95: TypePointer Function 94 111: TypeMatrix 42(ivec4) 4 112: TypePointer Function 111 117: TypeInt 32 0 118: TypeVector 117(int) 1 119: TypeMatrix 118(ivec) 1 120: TypePointer Function 119 125: TypeVector 117(int) 2 126: TypeMatrix 125(ivec2) 1 127: TypePointer Function 126 129: TypeMatrix 118(ivec) 2 130: TypePointer Function 129 134: TypeVector 117(int) 3 135: TypeMatrix 134(ivec3) 1 136: TypePointer Function 135 138: TypeMatrix 118(ivec) 3 139: TypePointer Function 138 143: TypeVector 117(int) 4 144: TypeMatrix 143(ivec4) 1 145: TypePointer Function 144 147: TypeMatrix 118(ivec) 4 148: TypePointer Function 147 156: TypeMatrix 125(ivec2) 2 157: TypePointer Function 156 162: TypeMatrix 134(ivec3) 2 163: TypePointer Function 162 165: TypeMatrix 125(ivec2) 3 166: TypePointer Function 165 170: TypeMatrix 143(ivec4) 2 171: TypePointer Function 170 173: TypeMatrix 125(ivec2) 4 174: TypePointer Function 173 186: TypeMatrix 134(ivec3) 3 187: TypePointer Function 186 192: TypeMatrix 143(ivec4) 3 193: TypePointer Function 192 195: TypeMatrix 134(ivec3) 4 196: TypePointer Function 195 212: TypeMatrix 143(ivec4) 4 213: TypePointer Function 212 218: TypePointer Function 12(PS_OUTPUT) 220: 16(int) Constant 0 221: 10(float) Constant 0 222: 11(fvec4) ConstantComposite 221 221 221 221 223: TypePointer Function 11(fvec4) 228: TypePointer Output 11(fvec4) 229(@entryPointOutput.color): 228(ptr) Variable Output 4(main): 2 Function None 3 5: Label 230:12(PS_OUTPUT) FunctionCall 14(@main() 231: 11(fvec4) CompositeExtract 230 0 Store 229(@entryPointOutput.color) 231 Return FunctionEnd 6(TestIntMatTypes(): 2 Function None 3 7: Label 20(r00): 19(ptr) Variable Function 21(i1x1): 19(ptr) Variable Function 27(r01): 26(ptr) Variable Function 30(i2x1): 29(ptr) Variable Function 36(r02): 35(ptr) Variable Function 39(i3x1): 38(ptr) Variable Function 45(r03): 44(ptr) Variable Function 48(i4x1): 47(ptr) Variable Function 51(r10): 29(ptr) Variable Function 52(i1x2): 26(ptr) Variable Function 57(r11): 56(ptr) Variable Function 58(i2x2): 56(ptr) Variable Function 63(r12): 62(ptr) Variable Function 66(i3x2): 65(ptr) Variable Function 71(r13): 70(ptr) Variable Function 74(i4x2): 73(ptr) Variable Function 77(r20): 38(ptr) Variable Function 78(i1x3): 35(ptr) Variable Function 81(r21): 65(ptr) Variable Function 82(i2x3): 62(ptr) Variable Function 87(r22): 86(ptr) Variable Function 88(i3x3): 86(ptr) Variable Function 93(r23): 92(ptr) Variable Function 96(i4x3): 95(ptr) Variable Function 99(r30): 47(ptr) Variable Function 100(i1x4): 44(ptr) Variable Function 103(r31): 73(ptr) Variable Function 104(i2x4): 70(ptr) Variable Function 107(r32): 95(ptr) Variable Function 108(i3x4): 92(ptr) Variable Function 113(r33): 112(ptr) Variable Function 114(i4x4): 112(ptr) Variable Function 22: 18 Load 21(i1x1) 23: 18 Transpose 22 Store 20(r00) 23 31: 28 Load 30(i2x1) 32: 25 Transpose 31 Store 27(r01) 32 40: 37 Load 39(i3x1) 41: 34 Transpose 40 Store 36(r02) 41 49: 46 Load 48(i4x1) 50: 43 Transpose 49 Store 45(r03) 50 53: 25 Load 52(i1x2) 54: 28 Transpose 53 Store 51(r10) 54 59: 55 Load 58(i2x2) 60: 55 Transpose 59 Store 57(r11) 60 67: 64 Load 66(i3x2) 68: 61 Transpose 67 Store 63(r12) 68 75: 72 Load 74(i4x2) 76: 69 Transpose 75 Store 71(r13) 76 79: 34 Load 78(i1x3) 80: 37 Transpose 79 Store 77(r20) 80 83: 61 Load 82(i2x3) 84: 64 Transpose 83 Store 81(r21) 84 89: 85 Load 88(i3x3) 90: 85 Transpose 89 Store 87(r22) 90 97: 94 Load 96(i4x3) 98: 91 Transpose 97 Store 93(r23) 98 101: 43 Load 100(i1x4) 102: 46 Transpose 101 Store 99(r30) 102 105: 69 Load 104(i2x4) 106: 72 Transpose 105 Store 103(r31) 106 109: 91 Load 108(i3x4) 110: 94 Transpose 109 Store 107(r32) 110 115: 111 Load 114(i4x4) 116: 111 Transpose 115 Store 113(r33) 116 Return FunctionEnd 8(TestUintMatTypes(): 2 Function None 3 9: Label 121(r00): 120(ptr) Variable Function 122(u1x1): 120(ptr) Variable Function 128(r01): 127(ptr) Variable Function 131(u2x1): 130(ptr) Variable Function 137(r02): 136(ptr) Variable Function 140(u3x1): 139(ptr) Variable Function 146(r03): 145(ptr) Variable Function 149(u4x1): 148(ptr) Variable Function 152(r10): 130(ptr) Variable Function 153(u1x2): 127(ptr) Variable Function 158(r11): 157(ptr) Variable Function 159(u2x2): 157(ptr) Variable Function 164(r12): 163(ptr) Variable Function 167(u3x2): 166(ptr) Variable Function 172(r13): 171(ptr) Variable Function 175(u4x2): 174(ptr) Variable Function 178(r20): 139(ptr) Variable Function 179(u1x3): 136(ptr) Variable Function 182(r21): 166(ptr) Variable Function 183(u2x3): 163(ptr) Variable Function 188(r22): 187(ptr) Variable Function 189(u3x3): 187(ptr) Variable Function 194(r23): 193(ptr) Variable Function 197(u4x3): 196(ptr) Variable Function 200(r30): 148(ptr) Variable Function 201(u1x4): 145(ptr) Variable Function 204(r31): 174(ptr) Variable Function 205(u2x4): 171(ptr) Variable Function 208(r32): 196(ptr) Variable Function 209(u3x4): 193(ptr) Variable Function 214(r33): 213(ptr) Variable Function 215(u4x4): 213(ptr) Variable Function 123: 119 Load 122(u1x1) 124: 119 Transpose 123 Store 121(r00) 124 132: 129 Load 131(u2x1) 133: 126 Transpose 132 Store 128(r01) 133 141: 138 Load 140(u3x1) 142: 135 Transpose 141 Store 137(r02) 142 150: 147 Load 149(u4x1) 151: 144 Transpose 150 Store 146(r03) 151 154: 126 Load 153(u1x2) 155: 129 Transpose 154 Store 152(r10) 155 160: 156 Load 159(u2x2) 161: 156 Transpose 160 Store 158(r11) 161 168: 165 Load 167(u3x2) 169: 162 Transpose 168 Store 164(r12) 169 176: 173 Load 175(u4x2) 177: 170 Transpose 176 Store 172(r13) 177 180: 135 Load 179(u1x3) 181: 138 Transpose 180 Store 178(r20) 181 184: 162 Load 183(u2x3) 185: 165 Transpose 184 Store 182(r21) 185 190: 186 Load 189(u3x3) 191: 186 Transpose 190 Store 188(r22) 191 198: 195 Load 197(u4x3) 199: 192 Transpose 198 Store 194(r23) 199 202: 144 Load 201(u1x4) 203: 147 Transpose 202 Store 200(r30) 203 206: 170 Load 205(u2x4) 207: 173 Transpose 206 Store 204(r31) 207 210: 192 Load 209(u3x4) 211: 195 Transpose 210 Store 208(r32) 211 216: 212 Load 215(u4x4) 217: 212 Transpose 216 Store 214(r33) 217 Return FunctionEnd 14(@main():12(PS_OUTPUT) Function None 13 15: Label 219(ps_output): 218(ptr) Variable Function 224: 223(ptr) AccessChain 219(ps_output) 220 Store 224 222 225:12(PS_OUTPUT) Load 219(ps_output) ReturnValue 225 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matpack-1.frag.out000066400000000000000000000353101506534232700226370ustar00rootroot00000000000000hlsl.matpack-1.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:23 Function Definition: @main( ( temp 4-component vector of float) 0:23 Function Parameters: 0:? Sequence 0:25 Branch: Return with expression 0:24 add ( temp 4-component vector of float) 0:24 vector-times-matrix ( temp 4-component vector of float) 0:24 vec1: direct index for structure ( temp 4-component vector of float) 0:24 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo}) 0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:24 Constant: 0:24 0 (const uint) 0:24 Constant: 0:24 2 (const int) 0:24 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float) 0:24 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo}) 0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:24 Constant: 0:24 0 (const uint) 0:24 Constant: 0:24 0 (const int) 0:25 vector-times-matrix ( temp 4-component vector of float) 0:25 vec1: direct index for structure ( temp 4-component vector of float) 0:25 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1}) 0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:25 Constant: 0:25 1 (const uint) 0:25 Constant: 0:25 1 (const int) 0:25 mat1: direct index for structure (layout( column_major) temp 4X4 matrix of float) 0:25 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1}) 0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:25 Constant: 0:25 1 (const uint) 0:25 Constant: 0:25 0 (const int) 0:23 Function Definition: main( ( temp void) 0:23 Function Parameters: 0:? Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:23 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:23 Function Definition: @main( ( temp 4-component vector of float) 0:23 Function Parameters: 0:? Sequence 0:25 Branch: Return with expression 0:24 add ( temp 4-component vector of float) 0:24 vector-times-matrix ( temp 4-component vector of float) 0:24 vec1: direct index for structure ( temp 4-component vector of float) 0:24 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo}) 0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:24 Constant: 0:24 0 (const uint) 0:24 Constant: 0:24 2 (const int) 0:24 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float) 0:24 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo}) 0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:24 Constant: 0:24 0 (const uint) 0:24 Constant: 0:24 0 (const int) 0:25 vector-times-matrix ( temp 4-component vector of float) 0:25 vec1: direct index for structure ( temp 4-component vector of float) 0:25 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1}) 0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:25 Constant: 0:25 1 (const uint) 0:25 Constant: 0:25 1 (const int) 0:25 mat1: direct index for structure (layout( column_major) temp 4X4 matrix of float) 0:25 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1}) 0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:25 Constant: 0:25 1 (const uint) 0:25 Constant: 0:25 0 (const int) 0:23 Function Definition: main( ( temp void) 0:23 Function Parameters: 0:? Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:23 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 37 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "MyBuffer1" MemberName 12(MyBuffer1) 0 "mat1" MemberName 12(MyBuffer1) 1 "mat2" MemberName 12(MyBuffer1) 2 "vec1" MemberName 12(MyBuffer1) 3 "foo" Name 13 "MyBuffer2" MemberName 13(MyBuffer2) 0 "mat1" MemberName 13(MyBuffer2) 1 "vec1" Name 14 "Example" MemberName 14(Example) 0 "g_MyBuffer1" MemberName 14(Example) 1 "g_MyBuffer2" MemberName 14(Example) 2 "mat1a" Name 16 "" Name 37 "@entryPointOutput" MemberDecorate 12(MyBuffer1) 0 RowMajor MemberDecorate 12(MyBuffer1) 0 MatrixStride 16 MemberDecorate 12(MyBuffer1) 0 Offset 0 MemberDecorate 12(MyBuffer1) 1 ColMajor MemberDecorate 12(MyBuffer1) 1 MatrixStride 16 MemberDecorate 12(MyBuffer1) 1 Offset 64 MemberDecorate 12(MyBuffer1) 2 Offset 128 MemberDecorate 12(MyBuffer1) 3 Offset 144 MemberDecorate 13(MyBuffer2) 0 ColMajor MemberDecorate 13(MyBuffer2) 0 MatrixStride 16 MemberDecorate 13(MyBuffer2) 0 Offset 0 MemberDecorate 13(MyBuffer2) 1 Offset 64 Decorate 14(Example) Block MemberDecorate 14(Example) 0 Offset 0 MemberDecorate 14(Example) 1 Offset 160 MemberDecorate 14(Example) 2 RowMajor MemberDecorate 14(Example) 2 MatrixStride 16 MemberDecorate 14(Example) 2 Offset 240 Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 37(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeMatrix 7(fvec4) 4 12(MyBuffer1): TypeStruct 11 11 7(fvec4) 6(float) 13(MyBuffer2): TypeStruct 11 7(fvec4) 14(Example): TypeStruct 12(MyBuffer1) 13(MyBuffer2) 11 15: TypePointer Uniform 14(Example) 16: 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 0 19: 17(int) Constant 2 20: TypePointer Uniform 7(fvec4) 23: TypePointer Uniform 11 27: 17(int) Constant 1 36: TypePointer Output 7(fvec4) 37(@entryPointOutput): 36(ptr) Variable Output 4(main): 2 Function None 3 5: Label 38: 7(fvec4) FunctionCall 9(@main() Store 37(@entryPointOutput) 38 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 21: 20(ptr) AccessChain 16 18 19 22: 7(fvec4) Load 21 24: 23(ptr) AccessChain 16 18 18 25: 11 Load 24 26: 7(fvec4) VectorTimesMatrix 22 25 28: 20(ptr) AccessChain 16 27 27 29: 7(fvec4) Load 28 30: 23(ptr) AccessChain 16 27 18 31: 11 Load 30 32: 7(fvec4) VectorTimesMatrix 29 31 33: 7(fvec4) FAdd 26 32 ReturnValue 33 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matpack-pragma-global.frag.out000066400000000000000000000111441506534232700252030ustar00rootroot00000000000000hlsl.matpack-pragma-global.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: @main( ( temp 4-component vector of float) 0:6 Function Parameters: 0:? Sequence 0:7 Branch: Return with expression 0:7 direct index ( temp 4-component vector of float) 0:7 g_GlobalMat1: direct index for structure ( uniform 4X4 matrix of float) 0:7 'anon@0' (layout( column_major std140) uniform block{ uniform 4X4 matrix of float g_GlobalMat1}) 0:7 Constant: 0:7 0 (const uint) 0:7 Constant: 0:7 0 (const int) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform 4X4 matrix of float g_GlobalMat1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: @main( ( temp 4-component vector of float) 0:6 Function Parameters: 0:? Sequence 0:7 Branch: Return with expression 0:7 direct index ( temp 4-component vector of float) 0:7 g_GlobalMat1: direct index for structure ( uniform 4X4 matrix of float) 0:7 'anon@0' (layout( column_major std140) uniform block{ uniform 4X4 matrix of float g_GlobalMat1}) 0:7 Constant: 0:7 0 (const uint) 0:7 Constant: 0:7 0 (const int) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform 4X4 matrix of float g_GlobalMat1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 23 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "$Global" MemberName 12($Global) 0 "g_GlobalMat1" Name 14 "" Name 23 "@entryPointOutput" Decorate 12($Global) Block MemberDecorate 12($Global) 0 ColMajor MemberDecorate 12($Global) 0 MatrixStride 16 MemberDecorate 12($Global) 0 Offset 0 Decorate 14 Binding 0 Decorate 14 DescriptorSet 0 Decorate 23(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeMatrix 7(fvec4) 4 12($Global): TypeStruct 11 13: TypePointer Uniform 12($Global) 14: 13(ptr) Variable Uniform 15: TypeInt 32 1 16: 15(int) Constant 0 17: TypePointer Uniform 7(fvec4) 22: TypePointer Output 7(fvec4) 23(@entryPointOutput): 22(ptr) Variable Output 4(main): 2 Function None 3 5: Label 24: 7(fvec4) FunctionCall 9(@main() Store 23(@entryPointOutput) 24 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 18: 17(ptr) AccessChain 14 16 16 19: 7(fvec4) Load 18 ReturnValue 19 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matpack-pragma.frag.out000066400000000000000000000551641506534232700237570ustar00rootroot00000000000000hlsl.matpack-pragma.frag WARNING: 0:19: 'random_string_foo' : unknown pack_matrix pragma value Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:29 Function Definition: @main( ( temp 4-component vector of float) 0:29 Function Parameters: 0:? Sequence 0:32 Branch: Return with expression 0:32 add ( temp 4-component vector of float) 0:32 add ( temp 4-component vector of float) 0:31 add ( temp 4-component vector of float) 0:31 add ( temp 4-component vector of float) 0:31 add ( temp 4-component vector of float) 0:31 direct index (layout( row_major) temp 4-component vector of float) 0:31 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float) 0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3}) 0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:31 Constant: 0:31 0 (const uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 direct index (layout( column_major) temp 4-component vector of float) 0:31 mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float) 0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3}) 0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:31 Constant: 0:31 0 (const uint) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 direct index (layout( column_major) temp 4-component vector of float) 0:31 mat3: direct index for structure (layout( column_major) temp 4X4 matrix of float) 0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3}) 0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:31 Constant: 0:31 0 (const uint) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 0 (const int) 0:32 direct index (layout( row_major) temp 4-component vector of float) 0:32 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float) 0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3}) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 direct index (layout( column_major) temp 4-component vector of float) 0:32 mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float) 0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3}) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 direct index (layout( row_major) temp 4-component vector of float) 0:32 mat3: direct index for structure (layout( row_major) temp 4X4 matrix of float) 0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3}) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 0 (const int) 0:29 Function Definition: main( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:29 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:29 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:29 Function Definition: @main( ( temp 4-component vector of float) 0:29 Function Parameters: 0:? Sequence 0:32 Branch: Return with expression 0:32 add ( temp 4-component vector of float) 0:32 add ( temp 4-component vector of float) 0:31 add ( temp 4-component vector of float) 0:31 add ( temp 4-component vector of float) 0:31 add ( temp 4-component vector of float) 0:31 direct index (layout( row_major) temp 4-component vector of float) 0:31 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float) 0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3}) 0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:31 Constant: 0:31 0 (const uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 direct index (layout( column_major) temp 4-component vector of float) 0:31 mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float) 0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3}) 0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:31 Constant: 0:31 0 (const uint) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const int) 0:31 direct index (layout( column_major) temp 4-component vector of float) 0:31 mat3: direct index for structure (layout( column_major) temp 4X4 matrix of float) 0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3}) 0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:31 Constant: 0:31 0 (const uint) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 0 (const int) 0:32 direct index (layout( row_major) temp 4-component vector of float) 0:32 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float) 0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3}) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 direct index (layout( column_major) temp 4-component vector of float) 0:32 mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float) 0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3}) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0 (const int) 0:32 direct index (layout( row_major) temp 4-component vector of float) 0:32 mat3: direct index for structure (layout( row_major) temp 4X4 matrix of float) 0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3}) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 0 (const int) 0:29 Function Definition: main( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:29 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:29 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 42 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "MyBuffer1" MemberName 12(MyBuffer1) 0 "mat1" MemberName 12(MyBuffer1) 1 "mat2" MemberName 12(MyBuffer1) 2 "mat3" Name 13 "MyBuffer2" MemberName 13(MyBuffer2) 0 "mat1" MemberName 13(MyBuffer2) 1 "mat2" MemberName 13(MyBuffer2) 2 "mat3" Name 14 "Example" MemberName 14(Example) 0 "g_MyBuffer1" MemberName 14(Example) 1 "g_MyBuffer2" MemberName 14(Example) 2 "mat1a" Name 16 "" Name 42 "@entryPointOutput" MemberDecorate 12(MyBuffer1) 0 RowMajor MemberDecorate 12(MyBuffer1) 0 MatrixStride 16 MemberDecorate 12(MyBuffer1) 0 Offset 0 MemberDecorate 12(MyBuffer1) 1 ColMajor MemberDecorate 12(MyBuffer1) 1 MatrixStride 16 MemberDecorate 12(MyBuffer1) 1 Offset 64 MemberDecorate 12(MyBuffer1) 2 ColMajor MemberDecorate 12(MyBuffer1) 2 MatrixStride 16 MemberDecorate 12(MyBuffer1) 2 Offset 128 MemberDecorate 13(MyBuffer2) 0 RowMajor MemberDecorate 13(MyBuffer2) 0 MatrixStride 16 MemberDecorate 13(MyBuffer2) 0 Offset 0 MemberDecorate 13(MyBuffer2) 1 ColMajor MemberDecorate 13(MyBuffer2) 1 MatrixStride 16 MemberDecorate 13(MyBuffer2) 1 Offset 64 MemberDecorate 13(MyBuffer2) 2 RowMajor MemberDecorate 13(MyBuffer2) 2 MatrixStride 16 MemberDecorate 13(MyBuffer2) 2 Offset 128 Decorate 14(Example) Block MemberDecorate 14(Example) 0 Offset 0 MemberDecorate 14(Example) 1 Offset 192 MemberDecorate 14(Example) 2 RowMajor MemberDecorate 14(Example) 2 MatrixStride 16 MemberDecorate 14(Example) 2 Offset 384 Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 42(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeMatrix 7(fvec4) 4 12(MyBuffer1): TypeStruct 11 11 11 13(MyBuffer2): TypeStruct 11 11 11 14(Example): TypeStruct 12(MyBuffer1) 13(MyBuffer2) 11 15: TypePointer Uniform 14(Example) 16: 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypePointer Uniform 7(fvec4) 22: 17(int) Constant 1 26: 17(int) Constant 2 41: TypePointer Output 7(fvec4) 42(@entryPointOutput): 41(ptr) Variable Output 4(main): 2 Function None 3 5: Label 43: 7(fvec4) FunctionCall 9(@main() Store 42(@entryPointOutput) 43 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 20: 19(ptr) AccessChain 16 18 18 18 21: 7(fvec4) Load 20 23: 19(ptr) AccessChain 16 18 22 18 24: 7(fvec4) Load 23 25: 7(fvec4) FAdd 21 24 27: 19(ptr) AccessChain 16 18 26 18 28: 7(fvec4) Load 27 29: 7(fvec4) FAdd 25 28 30: 19(ptr) AccessChain 16 22 18 18 31: 7(fvec4) Load 30 32: 7(fvec4) FAdd 29 31 33: 19(ptr) AccessChain 16 22 22 18 34: 7(fvec4) Load 33 35: 7(fvec4) FAdd 32 34 36: 19(ptr) AccessChain 16 22 26 18 37: 7(fvec4) Load 36 38: 7(fvec4) FAdd 35 37 ReturnValue 38 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matrixSwizzle.vert.out000066400000000000000000001035541506534232700240240ustar00rootroot00000000000000hlsl.matrixSwizzle.vert Shader version: 500 0:? Sequence 0:2 Function Definition: @ShaderFunction(f1; ( temp void) 0:2 Function Parameters: 0:2 'inf' ( in float) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 4-component vector of float) 0:7 'm' ( temp 3X4 matrix of float) 0:7 Constant: 0:7 2 (const int) 0:7 Constant: 0:7 3 (const int) 0:7 Constant: 0:7 1.000000 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 direct index ( temp 4-component vector of float) 0:8 'm' ( temp 3X4 matrix of float) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:8 Constant: 0:8 2.000000 0:9 move second child to first child ( temp float) 0:9 direct index ( temp float) 0:9 direct index ( temp 4-component vector of float) 0:9 'm' ( temp 3X4 matrix of float) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 3 (const int) 0:9 Constant: 0:9 2.000000 0:11 move second child to first child ( temp 4-component vector of float) 0:11 direct index ( temp 4-component vector of float) 0:11 'm' ( temp 3X4 matrix of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:12 move second child to first child ( temp 4-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'm' ( temp 3X4 matrix of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3.000000 0:12 3.000000 0:12 3.000000 0:12 3.000000 0:13 move second child to first child ( temp 4-component vector of float) 0:13 direct index ( temp 4-component vector of float) 0:13 'm' ( temp 3X4 matrix of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 3.000000 0:13 3.000000 0:13 3.000000 0:13 3.000000 0:? Sequence 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 direct index ( temp 4-component vector of float) 0:18 'm' ( temp 3X4 matrix of float) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp float) 0:18 'f3' ( temp 3-component vector of float) 0:18 Constant: 0:18 0 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 direct index ( temp 4-component vector of float) 0:18 'm' ( temp 3X4 matrix of float) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 direct index ( temp float) 0:18 'f3' ( temp 3-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 direct index ( temp 4-component vector of float) 0:18 'm' ( temp 3X4 matrix of float) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 2 (const int) 0:18 direct index ( temp float) 0:18 'f3' ( temp 3-component vector of float) 0:18 Constant: 0:18 2 (const int) 0:19 Sequence 0:19 move second child to first child ( temp 3-component vector of float) 0:19 'intermVec' ( temp 3-component vector of float) 0:19 Constant: 0:19 5.000000 0:19 5.000000 0:19 5.000000 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 direct index ( temp 4-component vector of float) 0:19 'm' ( temp 3X4 matrix of float) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp float) 0:19 'intermVec' ( temp 3-component vector of float) 0:19 Constant: 0:19 0 (const int) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 direct index ( temp 4-component vector of float) 0:19 'm' ( temp 3X4 matrix of float) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 direct index ( temp float) 0:19 'intermVec' ( temp 3-component vector of float) 0:19 Constant: 0:19 1 (const int) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 direct index ( temp 4-component vector of float) 0:19 'm' ( temp 3X4 matrix of float) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp float) 0:19 'intermVec' ( temp 3-component vector of float) 0:19 Constant: 0:19 2 (const int) 0:20 Sequence 0:20 move second child to first child ( temp 3-component vector of float) 0:20 'intermVec' ( temp 3-component vector of float) 0:20 vector-scale ( temp 3-component vector of float) 0:20 Constant: 0:20 2.000000 0:20 'f3' ( temp 3-component vector of float) 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 direct index ( temp 4-component vector of float) 0:20 'm' ( temp 3X4 matrix of float) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp float) 0:20 'intermVec' ( temp 3-component vector of float) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 direct index ( temp 4-component vector of float) 0:20 'm' ( temp 3X4 matrix of float) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 direct index ( temp float) 0:20 'intermVec' ( temp 3-component vector of float) 0:20 Constant: 0:20 1 (const int) 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 direct index ( temp 4-component vector of float) 0:20 'm' ( temp 3X4 matrix of float) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp float) 0:20 'intermVec' ( temp 3-component vector of float) 0:20 Constant: 0:20 2 (const int) 0:23 move second child to first child ( temp 3-component vector of float) 0:23 'f3' ( temp 3-component vector of float) 0:23 matrix swizzle ( temp 3-component vector of float) 0:23 'm' ( temp 3X4 matrix of float) 0:23 Sequence 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0 (const int) 0:2 Function Definition: ShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? 'inf' ( temp float) 0:? 'inf' (layout( location=0) in float) 0:2 Function Call: @ShaderFunction(f1; ( temp void) 0:? 'inf' ( temp float) 0:27 Function Definition: createMat3x3(vf3;vf3;vf3; ( temp 3X3 matrix of float) 0:27 Function Parameters: 0:27 'a' ( in 3-component vector of float) 0:27 'b' ( in 3-component vector of float) 0:27 'c' ( in 3-component vector of float) 0:? Sequence 0:? Sequence 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 direct index ( temp 3-component vector of float) 0:29 'm' ( temp 3X3 matrix of float) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 direct index ( temp float) 0:29 'a' ( in 3-component vector of float) 0:29 Constant: 0:29 0 (const int) 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 direct index ( temp 3-component vector of float) 0:29 'm' ( temp 3X3 matrix of float) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 direct index ( temp float) 0:29 'a' ( in 3-component vector of float) 0:29 Constant: 0:29 1 (const int) 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 direct index ( temp 3-component vector of float) 0:29 'm' ( temp 3X3 matrix of float) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 direct index ( temp float) 0:29 'a' ( in 3-component vector of float) 0:29 Constant: 0:29 2 (const int) 0:? Sequence 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 3-component vector of float) 0:30 'm' ( temp 3X3 matrix of float) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 direct index ( temp float) 0:30 'b' ( in 3-component vector of float) 0:30 Constant: 0:30 0 (const int) 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 3-component vector of float) 0:30 'm' ( temp 3X3 matrix of float) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 direct index ( temp float) 0:30 'b' ( in 3-component vector of float) 0:30 Constant: 0:30 1 (const int) 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 3-component vector of float) 0:30 'm' ( temp 3X3 matrix of float) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 direct index ( temp float) 0:30 'b' ( in 3-component vector of float) 0:30 Constant: 0:30 2 (const int) 0:? Sequence 0:31 move second child to first child ( temp float) 0:31 direct index ( temp float) 0:31 direct index ( temp 3-component vector of float) 0:31 'm' ( temp 3X3 matrix of float) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 direct index ( temp float) 0:31 'c' ( in 3-component vector of float) 0:31 Constant: 0:31 0 (const int) 0:31 move second child to first child ( temp float) 0:31 direct index ( temp float) 0:31 direct index ( temp 3-component vector of float) 0:31 'm' ( temp 3X3 matrix of float) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 direct index ( temp float) 0:31 'c' ( in 3-component vector of float) 0:31 Constant: 0:31 1 (const int) 0:31 move second child to first child ( temp float) 0:31 direct index ( temp float) 0:31 direct index ( temp 3-component vector of float) 0:31 'm' ( temp 3X3 matrix of float) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 direct index ( temp float) 0:31 'c' ( in 3-component vector of float) 0:31 Constant: 0:31 2 (const int) 0:32 Branch: Return with expression 0:32 'm' ( temp 3X3 matrix of float) 0:? Linker Objects 0:? 'inf' (layout( location=0) in float) Linked vertex stage: Shader version: 500 0:? Sequence 0:2 Function Definition: @ShaderFunction(f1; ( temp void) 0:2 Function Parameters: 0:2 'inf' ( in float) 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 direct index ( temp 4-component vector of float) 0:7 'm' ( temp 3X4 matrix of float) 0:7 Constant: 0:7 2 (const int) 0:7 Constant: 0:7 3 (const int) 0:7 Constant: 0:7 1.000000 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 direct index ( temp 4-component vector of float) 0:8 'm' ( temp 3X4 matrix of float) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) 0:8 Constant: 0:8 2.000000 0:9 move second child to first child ( temp float) 0:9 direct index ( temp float) 0:9 direct index ( temp 4-component vector of float) 0:9 'm' ( temp 3X4 matrix of float) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 3 (const int) 0:9 Constant: 0:9 2.000000 0:11 move second child to first child ( temp 4-component vector of float) 0:11 direct index ( temp 4-component vector of float) 0:11 'm' ( temp 3X4 matrix of float) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:12 move second child to first child ( temp 4-component vector of float) 0:12 direct index ( temp 4-component vector of float) 0:12 'm' ( temp 3X4 matrix of float) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 3.000000 0:12 3.000000 0:12 3.000000 0:12 3.000000 0:13 move second child to first child ( temp 4-component vector of float) 0:13 direct index ( temp 4-component vector of float) 0:13 'm' ( temp 3X4 matrix of float) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 3.000000 0:13 3.000000 0:13 3.000000 0:13 3.000000 0:? Sequence 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 direct index ( temp 4-component vector of float) 0:18 'm' ( temp 3X4 matrix of float) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( temp float) 0:18 'f3' ( temp 3-component vector of float) 0:18 Constant: 0:18 0 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 direct index ( temp 4-component vector of float) 0:18 'm' ( temp 3X4 matrix of float) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 1 (const int) 0:18 direct index ( temp float) 0:18 'f3' ( temp 3-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 direct index ( temp 4-component vector of float) 0:18 'm' ( temp 3X4 matrix of float) 0:18 Constant: 0:18 1 (const int) 0:18 Constant: 0:18 2 (const int) 0:18 direct index ( temp float) 0:18 'f3' ( temp 3-component vector of float) 0:18 Constant: 0:18 2 (const int) 0:19 Sequence 0:19 move second child to first child ( temp 3-component vector of float) 0:19 'intermVec' ( temp 3-component vector of float) 0:19 Constant: 0:19 5.000000 0:19 5.000000 0:19 5.000000 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 direct index ( temp 4-component vector of float) 0:19 'm' ( temp 3X4 matrix of float) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp float) 0:19 'intermVec' ( temp 3-component vector of float) 0:19 Constant: 0:19 0 (const int) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 direct index ( temp 4-component vector of float) 0:19 'm' ( temp 3X4 matrix of float) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 direct index ( temp float) 0:19 'intermVec' ( temp 3-component vector of float) 0:19 Constant: 0:19 1 (const int) 0:19 move second child to first child ( temp float) 0:19 direct index ( temp float) 0:19 direct index ( temp 4-component vector of float) 0:19 'm' ( temp 3X4 matrix of float) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp float) 0:19 'intermVec' ( temp 3-component vector of float) 0:19 Constant: 0:19 2 (const int) 0:20 Sequence 0:20 move second child to first child ( temp 3-component vector of float) 0:20 'intermVec' ( temp 3-component vector of float) 0:20 vector-scale ( temp 3-component vector of float) 0:20 Constant: 0:20 2.000000 0:20 'f3' ( temp 3-component vector of float) 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 direct index ( temp 4-component vector of float) 0:20 'm' ( temp 3X4 matrix of float) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp float) 0:20 'intermVec' ( temp 3-component vector of float) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 direct index ( temp 4-component vector of float) 0:20 'm' ( temp 3X4 matrix of float) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 direct index ( temp float) 0:20 'intermVec' ( temp 3-component vector of float) 0:20 Constant: 0:20 1 (const int) 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 direct index ( temp 4-component vector of float) 0:20 'm' ( temp 3X4 matrix of float) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp float) 0:20 'intermVec' ( temp 3-component vector of float) 0:20 Constant: 0:20 2 (const int) 0:23 move second child to first child ( temp 3-component vector of float) 0:23 'f3' ( temp 3-component vector of float) 0:23 matrix swizzle ( temp 3-component vector of float) 0:23 'm' ( temp 3X4 matrix of float) 0:23 Sequence 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 0 (const int) 0:2 Function Definition: ShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? 'inf' ( temp float) 0:? 'inf' (layout( location=0) in float) 0:2 Function Call: @ShaderFunction(f1; ( temp void) 0:? 'inf' ( temp float) 0:27 Function Definition: createMat3x3(vf3;vf3;vf3; ( temp 3X3 matrix of float) 0:27 Function Parameters: 0:27 'a' ( in 3-component vector of float) 0:27 'b' ( in 3-component vector of float) 0:27 'c' ( in 3-component vector of float) 0:? Sequence 0:? Sequence 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 direct index ( temp 3-component vector of float) 0:29 'm' ( temp 3X3 matrix of float) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 direct index ( temp float) 0:29 'a' ( in 3-component vector of float) 0:29 Constant: 0:29 0 (const int) 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 direct index ( temp 3-component vector of float) 0:29 'm' ( temp 3X3 matrix of float) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 direct index ( temp float) 0:29 'a' ( in 3-component vector of float) 0:29 Constant: 0:29 1 (const int) 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 direct index ( temp 3-component vector of float) 0:29 'm' ( temp 3X3 matrix of float) 0:29 Constant: 0:29 2 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 direct index ( temp float) 0:29 'a' ( in 3-component vector of float) 0:29 Constant: 0:29 2 (const int) 0:? Sequence 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 3-component vector of float) 0:30 'm' ( temp 3X3 matrix of float) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 direct index ( temp float) 0:30 'b' ( in 3-component vector of float) 0:30 Constant: 0:30 0 (const int) 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 3-component vector of float) 0:30 'm' ( temp 3X3 matrix of float) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 direct index ( temp float) 0:30 'b' ( in 3-component vector of float) 0:30 Constant: 0:30 1 (const int) 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 3-component vector of float) 0:30 'm' ( temp 3X3 matrix of float) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 direct index ( temp float) 0:30 'b' ( in 3-component vector of float) 0:30 Constant: 0:30 2 (const int) 0:? Sequence 0:31 move second child to first child ( temp float) 0:31 direct index ( temp float) 0:31 direct index ( temp 3-component vector of float) 0:31 'm' ( temp 3X3 matrix of float) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 direct index ( temp float) 0:31 'c' ( in 3-component vector of float) 0:31 Constant: 0:31 0 (const int) 0:31 move second child to first child ( temp float) 0:31 direct index ( temp float) 0:31 direct index ( temp 3-component vector of float) 0:31 'm' ( temp 3X3 matrix of float) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 direct index ( temp float) 0:31 'c' ( in 3-component vector of float) 0:31 Constant: 0:31 1 (const int) 0:31 move second child to first child ( temp float) 0:31 direct index ( temp float) 0:31 direct index ( temp 3-component vector of float) 0:31 'm' ( temp 3X3 matrix of float) 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 2 (const int) 0:31 direct index ( temp float) 0:31 'c' ( in 3-component vector of float) 0:31 Constant: 0:31 2 (const int) 0:32 Branch: Return with expression 0:32 'm' ( temp 3X3 matrix of float) 0:? Linker Objects 0:? 'inf' (layout( location=0) in float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 118 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "ShaderFunction" 81 Source HLSL 500 Name 4 "ShaderFunction" Name 10 "@ShaderFunction(f1;" Name 9 "inf" Name 19 "createMat3x3(vf3;vf3;vf3;" Name 16 "a" Name 17 "b" Name 18 "c" Name 24 "m" Name 42 "f3" Name 55 "intermVec" Name 67 "intermVec" Name 79 "inf" Name 81 "inf" Name 83 "param" Name 87 "m" Decorate 81(inf) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 2 7(ptr) 12: TypeVector 6(float) 3 13: TypePointer Function 12(fvec3) 14: TypeMatrix 12(fvec3) 3 15: TypeFunction 14 13(ptr) 13(ptr) 13(ptr) 21: TypeVector 6(float) 4 22: TypeMatrix 21(fvec4) 3 23: TypePointer Function 22 25: TypeInt 32 1 26: 25(int) Constant 2 27: 6(float) Constant 1065353216 28: TypeInt 32 0 29: 28(int) Constant 3 31: 6(float) Constant 1073741824 34: 25(int) Constant 0 35: 6(float) Constant 1077936128 36: 21(fvec4) ConstantComposite 35 35 35 35 37: TypePointer Function 21(fvec4) 39: 25(int) Constant 1 43: 28(int) Constant 0 47: 28(int) Constant 1 51: 28(int) Constant 2 56: 6(float) Constant 1084227584 57: 12(fvec3) ConstantComposite 56 56 56 80: TypePointer Input 6(float) 81(inf): 80(ptr) Variable Input 86: TypePointer Function 14 4(ShaderFunction): 2 Function None 3 5: Label 79(inf): 7(ptr) Variable Function 83(param): 7(ptr) Variable Function 82: 6(float) Load 81(inf) Store 79(inf) 82 84: 6(float) Load 79(inf) Store 83(param) 84 85: 2 FunctionCall 10(@ShaderFunction(f1;) 83(param) Return FunctionEnd 10(@ShaderFunction(f1;): 2 Function None 8 9(inf): 7(ptr) FunctionParameter 11: Label 24(m): 23(ptr) Variable Function 42(f3): 13(ptr) Variable Function 55(intermVec): 13(ptr) Variable Function 67(intermVec): 13(ptr) Variable Function 30: 7(ptr) AccessChain 24(m) 26 29 Store 30 27 32: 7(ptr) AccessChain 24(m) 26 29 Store 32 31 33: 7(ptr) AccessChain 24(m) 26 29 Store 33 31 38: 37(ptr) AccessChain 24(m) 34 Store 38 36 40: 37(ptr) AccessChain 24(m) 39 Store 40 36 41: 37(ptr) AccessChain 24(m) 39 Store 41 36 44: 7(ptr) AccessChain 42(f3) 43 45: 6(float) Load 44 46: 7(ptr) AccessChain 24(m) 34 43 Store 46 45 48: 7(ptr) AccessChain 42(f3) 47 49: 6(float) Load 48 50: 7(ptr) AccessChain 24(m) 39 47 Store 50 49 52: 7(ptr) AccessChain 42(f3) 51 53: 6(float) Load 52 54: 7(ptr) AccessChain 24(m) 39 51 Store 54 53 Store 55(intermVec) 57 58: 7(ptr) AccessChain 55(intermVec) 43 59: 6(float) Load 58 60: 7(ptr) AccessChain 24(m) 39 43 Store 60 59 61: 7(ptr) AccessChain 55(intermVec) 47 62: 6(float) Load 61 63: 7(ptr) AccessChain 24(m) 34 47 Store 63 62 64: 7(ptr) AccessChain 55(intermVec) 51 65: 6(float) Load 64 66: 7(ptr) AccessChain 24(m) 26 43 Store 66 65 68: 12(fvec3) Load 42(f3) 69: 12(fvec3) VectorTimesScalar 68 31 Store 67(intermVec) 69 70: 7(ptr) AccessChain 67(intermVec) 43 71: 6(float) Load 70 72: 7(ptr) AccessChain 24(m) 34 43 Store 72 71 73: 7(ptr) AccessChain 67(intermVec) 47 74: 6(float) Load 73 75: 7(ptr) AccessChain 24(m) 34 47 Store 75 74 76: 7(ptr) AccessChain 67(intermVec) 51 77: 6(float) Load 76 78: 7(ptr) AccessChain 24(m) 39 43 Store 78 77 Store 42(f3) 34 Return FunctionEnd 19(createMat3x3(vf3;vf3;vf3;): 14 Function None 15 16(a): 13(ptr) FunctionParameter 17(b): 13(ptr) FunctionParameter 18(c): 13(ptr) FunctionParameter 20: Label 87(m): 86(ptr) Variable Function 88: 7(ptr) AccessChain 16(a) 43 89: 6(float) Load 88 90: 7(ptr) AccessChain 87(m) 34 43 Store 90 89 91: 7(ptr) AccessChain 16(a) 47 92: 6(float) Load 91 93: 7(ptr) AccessChain 87(m) 39 43 Store 93 92 94: 7(ptr) AccessChain 16(a) 51 95: 6(float) Load 94 96: 7(ptr) AccessChain 87(m) 26 43 Store 96 95 97: 7(ptr) AccessChain 17(b) 43 98: 6(float) Load 97 99: 7(ptr) AccessChain 87(m) 34 47 Store 99 98 100: 7(ptr) AccessChain 17(b) 47 101: 6(float) Load 100 102: 7(ptr) AccessChain 87(m) 39 47 Store 102 101 103: 7(ptr) AccessChain 17(b) 51 104: 6(float) Load 103 105: 7(ptr) AccessChain 87(m) 26 47 Store 105 104 106: 7(ptr) AccessChain 18(c) 43 107: 6(float) Load 106 108: 7(ptr) AccessChain 87(m) 34 51 Store 108 107 109: 7(ptr) AccessChain 18(c) 47 110: 6(float) Load 109 111: 7(ptr) AccessChain 87(m) 39 51 Store 111 110 112: 7(ptr) AccessChain 18(c) 51 113: 6(float) Load 112 114: 7(ptr) AccessChain 87(m) 26 51 Store 114 113 115: 14 Load 87(m) ReturnValue 115 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.matrixindex.frag.out000066400000000000000000000441031506534232700234150ustar00rootroot00000000000000hlsl.matrixindex.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'e1_00' ( temp float) 0:22 Constant: 0:22 10.000000 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'e1_01' ( temp float) 0:23 Constant: 0:23 11.000000 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'e1_10' ( temp float) 0:24 Constant: 0:24 12.000000 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'e1_11' ( temp float) 0:25 Constant: 0:25 13.000000 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'e1_20' ( temp float) 0:26 Constant: 0:26 14.000000 0:27 Sequence 0:27 move second child to first child ( temp float) 0:27 'e1_21' ( temp float) 0:27 Constant: 0:27 15.000000 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'e2_00' ( temp float) 0:29 Constant: 0:29 20.000000 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'e2_01' ( temp float) 0:30 Constant: 0:30 21.000000 0:31 Sequence 0:31 move second child to first child ( temp float) 0:31 'e2_10' ( temp float) 0:31 Constant: 0:31 22.000000 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'e2_11' ( temp float) 0:32 Constant: 0:32 23.000000 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'e2_20' ( temp float) 0:33 Constant: 0:33 24.000000 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'e2_21' ( temp float) 0:34 Constant: 0:34 25.000000 0:39 Sequence 0:39 move second child to first child ( temp 2-component vector of float) 0:39 'r0a' ( temp 2-component vector of float) 0:39 Constant: 0:39 10.000000 0:39 11.000000 0:40 Sequence 0:40 move second child to first child ( temp 2-component vector of float) 0:40 'r1a' ( temp 2-component vector of float) 0:40 Constant: 0:40 12.000000 0:40 13.000000 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of float) 0:41 'r2a' ( temp 2-component vector of float) 0:41 Constant: 0:41 14.000000 0:41 15.000000 0:43 Sequence 0:43 move second child to first child ( temp 2-component vector of float) 0:43 'r0b' ( temp 2-component vector of float) 0:43 indirect index ( temp 2-component vector of float) 0:43 Constant: 0:43 20.000000 0:43 21.000000 0:43 22.000000 0:43 23.000000 0:43 24.000000 0:43 25.000000 0:43 idx: direct index for structure ( uniform int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um}) 0:43 Constant: 0:43 0 (const uint) 0:44 Sequence 0:44 move second child to first child ( temp 2-component vector of float) 0:44 'r0c' ( temp 2-component vector of float) 0:44 indirect index ( temp 2-component vector of float) 0:44 um: direct index for structure ( uniform 3X2 matrix of float) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um}) 0:44 Constant: 0:44 1 (const uint) 0:44 idx: direct index for structure ( uniform int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um}) 0:44 Constant: 0:44 0 (const uint) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 Color: direct index for structure ( temp 4-component vector of float) 0:47 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:47 Constant: 0:47 0 (const int) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 'e2_11' ( temp float) 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Definition: main( ( 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:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:10 Color: direct index for structure ( temp 4-component vector of float) 0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Constant: 0:10 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'e1_00' ( temp float) 0:22 Constant: 0:22 10.000000 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'e1_01' ( temp float) 0:23 Constant: 0:23 11.000000 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'e1_10' ( temp float) 0:24 Constant: 0:24 12.000000 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'e1_11' ( temp float) 0:25 Constant: 0:25 13.000000 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'e1_20' ( temp float) 0:26 Constant: 0:26 14.000000 0:27 Sequence 0:27 move second child to first child ( temp float) 0:27 'e1_21' ( temp float) 0:27 Constant: 0:27 15.000000 0:29 Sequence 0:29 move second child to first child ( temp float) 0:29 'e2_00' ( temp float) 0:29 Constant: 0:29 20.000000 0:30 Sequence 0:30 move second child to first child ( temp float) 0:30 'e2_01' ( temp float) 0:30 Constant: 0:30 21.000000 0:31 Sequence 0:31 move second child to first child ( temp float) 0:31 'e2_10' ( temp float) 0:31 Constant: 0:31 22.000000 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'e2_11' ( temp float) 0:32 Constant: 0:32 23.000000 0:33 Sequence 0:33 move second child to first child ( temp float) 0:33 'e2_20' ( temp float) 0:33 Constant: 0:33 24.000000 0:34 Sequence 0:34 move second child to first child ( temp float) 0:34 'e2_21' ( temp float) 0:34 Constant: 0:34 25.000000 0:39 Sequence 0:39 move second child to first child ( temp 2-component vector of float) 0:39 'r0a' ( temp 2-component vector of float) 0:39 Constant: 0:39 10.000000 0:39 11.000000 0:40 Sequence 0:40 move second child to first child ( temp 2-component vector of float) 0:40 'r1a' ( temp 2-component vector of float) 0:40 Constant: 0:40 12.000000 0:40 13.000000 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of float) 0:41 'r2a' ( temp 2-component vector of float) 0:41 Constant: 0:41 14.000000 0:41 15.000000 0:43 Sequence 0:43 move second child to first child ( temp 2-component vector of float) 0:43 'r0b' ( temp 2-component vector of float) 0:43 indirect index ( temp 2-component vector of float) 0:43 Constant: 0:43 20.000000 0:43 21.000000 0:43 22.000000 0:43 23.000000 0:43 24.000000 0:43 25.000000 0:43 idx: direct index for structure ( uniform int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um}) 0:43 Constant: 0:43 0 (const uint) 0:44 Sequence 0:44 move second child to first child ( temp 2-component vector of float) 0:44 'r0c' ( temp 2-component vector of float) 0:44 indirect index ( temp 2-component vector of float) 0:44 um: direct index for structure ( uniform 3X2 matrix of float) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um}) 0:44 Constant: 0:44 1 (const uint) 0:44 idx: direct index for structure ( uniform int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um}) 0:44 Constant: 0:44 0 (const uint) 0:47 move second child to first child ( temp 4-component vector of float) 0:47 Color: direct index for structure ( temp 4-component vector of float) 0:47 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:47 Constant: 0:47 0 (const int) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 'e2_11' ( temp float) 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:10 Function Definition: main( ( 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:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:10 Color: direct index for structure ( temp 4-component vector of float) 0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:10 Constant: 0:10 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 83 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 80 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 13 "e1_00" Name 15 "e1_01" Name 17 "e1_10" Name 19 "e1_11" Name 21 "e1_20" Name 23 "e1_21" Name 25 "e2_00" Name 27 "e2_01" Name 29 "e2_10" Name 31 "e2_11" Name 33 "e2_20" Name 35 "e2_21" Name 39 "r0a" Name 41 "r1a" Name 43 "r2a" Name 45 "r0b" Name 52 "$Global" MemberName 52($Global) 0 "idx" MemberName 52($Global) 1 "um" Name 54 "" Name 60 "indexable" Name 63 "r0c" Name 71 "psout" Name 80 "@entryPointOutput.Color" Decorate 52($Global) Block MemberDecorate 52($Global) 0 Offset 0 MemberDecorate 52($Global) 1 RowMajor MemberDecorate 52($Global) 1 MatrixStride 16 MemberDecorate 52($Global) 1 Offset 16 Decorate 54 Binding 0 Decorate 54 DescriptorSet 0 Decorate 80(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: 6(float) Constant 1092616192 16: 6(float) Constant 1093664768 18: 6(float) Constant 1094713344 20: 6(float) Constant 1095761920 22: 6(float) Constant 1096810496 24: 6(float) Constant 1097859072 26: 6(float) Constant 1101004800 28: 6(float) Constant 1101529088 30: 6(float) Constant 1102053376 32: 6(float) Constant 1102577664 34: 6(float) Constant 1103101952 36: 6(float) Constant 1103626240 37: TypeVector 6(float) 2 38: TypePointer Function 37(fvec2) 40: 37(fvec2) ConstantComposite 14 16 42: 37(fvec2) ConstantComposite 18 20 44: 37(fvec2) ConstantComposite 22 24 46: TypeMatrix 37(fvec2) 3 47: 37(fvec2) ConstantComposite 26 28 48: 37(fvec2) ConstantComposite 30 32 49: 37(fvec2) ConstantComposite 34 36 50: 46 ConstantComposite 47 48 49 51: TypeInt 32 1 52($Global): TypeStruct 51(int) 46 53: TypePointer Uniform 52($Global) 54: 53(ptr) Variable Uniform 55: 51(int) Constant 0 56: TypePointer Uniform 51(int) 59: TypePointer Function 46 64: 51(int) Constant 1 67: TypePointer Uniform 37(fvec2) 70: TypePointer Function 8(PS_OUTPUT) 74: TypePointer Function 7(fvec4) 79: TypePointer Output 7(fvec4) 80(@entryPointOutput.Color): 79(ptr) Variable Output 4(main): 2 Function None 3 5: Label 81:8(PS_OUTPUT) FunctionCall 10(@main() 82: 7(fvec4) CompositeExtract 81 0 Store 80(@entryPointOutput.Color) 82 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(e1_00): 12(ptr) Variable Function 15(e1_01): 12(ptr) Variable Function 17(e1_10): 12(ptr) Variable Function 19(e1_11): 12(ptr) Variable Function 21(e1_20): 12(ptr) Variable Function 23(e1_21): 12(ptr) Variable Function 25(e2_00): 12(ptr) Variable Function 27(e2_01): 12(ptr) Variable Function 29(e2_10): 12(ptr) Variable Function 31(e2_11): 12(ptr) Variable Function 33(e2_20): 12(ptr) Variable Function 35(e2_21): 12(ptr) Variable Function 39(r0a): 38(ptr) Variable Function 41(r1a): 38(ptr) Variable Function 43(r2a): 38(ptr) Variable Function 45(r0b): 38(ptr) Variable Function 60(indexable): 59(ptr) Variable Function 63(r0c): 38(ptr) Variable Function 71(psout): 70(ptr) Variable Function Store 13(e1_00) 14 Store 15(e1_01) 16 Store 17(e1_10) 18 Store 19(e1_11) 20 Store 21(e1_20) 22 Store 23(e1_21) 24 Store 25(e2_00) 26 Store 27(e2_01) 28 Store 29(e2_10) 30 Store 31(e2_11) 32 Store 33(e2_20) 34 Store 35(e2_21) 36 Store 39(r0a) 40 Store 41(r1a) 42 Store 43(r2a) 44 57: 56(ptr) AccessChain 54 55 58: 51(int) Load 57 Store 60(indexable) 50 61: 38(ptr) AccessChain 60(indexable) 58 62: 37(fvec2) Load 61 Store 45(r0b) 62 65: 56(ptr) AccessChain 54 55 66: 51(int) Load 65 68: 67(ptr) AccessChain 54 64 66 69: 37(fvec2) Load 68 Store 63(r0c) 69 72: 6(float) Load 31(e2_11) 73: 7(fvec4) CompositeConstruct 72 72 72 72 75: 74(ptr) AccessChain 71(psout) 55 Store 75 73 76:8(PS_OUTPUT) Load 71(psout) ReturnValue 76 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.max.frag.out000066400000000000000000000144761506534232700216600ustar00rootroot00000000000000hlsl.max.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input1' ( in 4-component vector of float) 0:2 'input2' ( in 4-component vector of float) 0:? Sequence 0:3 Branch: Return with expression 0:3 max ( temp 4-component vector of float) 0:3 'input1' ( in 4-component vector of float) 0:3 'input2' ( in 4-component vector of float) 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input1' ( temp 4-component vector of float) 0:? 'input1' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input2' ( temp 4-component vector of float) 0:? 'input2' (layout( location=1) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float) 0:? 'input1' ( temp 4-component vector of float) 0:? 'input2' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input1' (layout( location=0) in 4-component vector of float) 0:? 'input2' (layout( location=1) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input1' ( in 4-component vector of float) 0:2 'input2' ( in 4-component vector of float) 0:? Sequence 0:3 Branch: Return with expression 0:3 max ( temp 4-component vector of float) 0:3 'input1' ( in 4-component vector of float) 0:3 'input2' ( in 4-component vector of float) 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input1' ( temp 4-component vector of float) 0:? 'input1' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input2' ( temp 4-component vector of float) 0:? 'input2' (layout( location=1) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float) 0:? 'input1' ( temp 4-component vector of float) 0:? 'input2' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input1' (layout( location=0) in 4-component vector of float) 0:? 'input2' (layout( location=1) in 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 Fragment 4 "PixelShaderFunction" 21 24 27 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 12 "@PixelShaderFunction(vf4;vf4;" Name 10 "input1" Name 11 "input2" Name 19 "input1" Name 21 "input1" Name 23 "input2" Name 24 "input2" Name 27 "@entryPointOutput" Name 28 "param" Name 30 "param" Decorate 21(input1) Location 0 Decorate 24(input2) Location 1 Decorate 27(@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) 8(ptr) 20: TypePointer Input 7(fvec4) 21(input1): 20(ptr) Variable Input 24(input2): 20(ptr) Variable Input 26: TypePointer Output 7(fvec4) 27(@entryPointOutput): 26(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 19(input1): 8(ptr) Variable Function 23(input2): 8(ptr) Variable Function 28(param): 8(ptr) Variable Function 30(param): 8(ptr) Variable Function 22: 7(fvec4) Load 21(input1) Store 19(input1) 22 25: 7(fvec4) Load 24(input2) Store 23(input2) 25 29: 7(fvec4) Load 19(input1) Store 28(param) 29 31: 7(fvec4) Load 23(input2) Store 30(param) 31 32: 7(fvec4) FunctionCall 12(@PixelShaderFunction(vf4;vf4;) 28(param) 30(param) Store 27(@entryPointOutput) 32 Return FunctionEnd 12(@PixelShaderFunction(vf4;vf4;): 7(fvec4) Function None 9 10(input1): 8(ptr) FunctionParameter 11(input2): 8(ptr) FunctionParameter 13: Label 14: 7(fvec4) Load 10(input1) 15: 7(fvec4) Load 11(input2) 16: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 14 15 ReturnValue 16 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.memberFunCall.frag.out000066400000000000000000000262121506534232700235760ustar00rootroot00000000000000hlsl.memberFunCall.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: method3(f1; ( temp float) 0:1 Function Parameters: 0:1 'a' ( in float) 0:? Sequence 0:1 Branch: Return with expression 0:1 Constant: 0:1 1.000000 0:4 Function Definition: myContext::method1( ( temp float) 0:4 Function Parameters: 0:4 '@this' ( temp structure{ temp float f}) 0:? Sequence 0:4 Branch: Return with expression 0:4 Function Call: myContext::method2( ( temp float) 0:? '@this' ( temp structure{ temp float f}) 0:5 Function Definition: myContext::method2( ( temp float) 0:5 Function Parameters: 0:5 '@this' ( temp structure{ temp float f}) 0:? Sequence 0:5 Branch: Return with expression 0:5 Function Call: myContext::method3(f1; ( temp float) 0:? '@this' ( temp structure{ temp float f}) 0:5 Constant: 0:5 1.000000 0:6 Function Definition: myContext::method3(f1; ( temp float) 0:6 Function Parameters: 0:6 '@this' ( temp structure{ temp float f}) 0:6 'a' ( in float) 0:? Sequence 0:6 Branch: Return with expression 0:6 Function Call: myContext::method4(f1;f1; ( temp float) 0:? '@this' ( temp structure{ temp float f}) 0:6 'a' ( in float) 0:6 'a' ( in float) 0:7 Function Definition: myContext::method4(f1;f1; ( temp float) 0:7 Function Parameters: 0:7 '@this' ( temp structure{ temp float f}) 0:7 'a' ( in float) 0:7 'b' ( in float) 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp float) 0:7 add ( temp float) 0:7 'a' ( in float) 0:7 'b' ( in float) 0:7 f: direct index for structure ( temp float) 0:7 '@this' ( temp structure{ temp float f}) 0:7 Constant: 0:7 0 (const uint) 0:12 Function Definition: @main( ( temp 4-component vector of float) 0:12 Function Parameters: 0:? Sequence 0:14 move second child to first child ( temp float) 0:14 f: direct index for structure ( temp float) 0:14 'context' ( temp structure{ temp float f}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 3.000000 0:15 Branch: Return with expression 0:15 Construct vec4 ( temp 4-component vector of float) 0:15 Function Call: myContext::method1( ( temp float) 0:15 'context' ( temp structure{ temp float f}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: method3(f1; ( temp float) 0:1 Function Parameters: 0:1 'a' ( in float) 0:? Sequence 0:1 Branch: Return with expression 0:1 Constant: 0:1 1.000000 0:4 Function Definition: myContext::method1( ( temp float) 0:4 Function Parameters: 0:4 '@this' ( temp structure{ temp float f}) 0:? Sequence 0:4 Branch: Return with expression 0:4 Function Call: myContext::method2( ( temp float) 0:? '@this' ( temp structure{ temp float f}) 0:5 Function Definition: myContext::method2( ( temp float) 0:5 Function Parameters: 0:5 '@this' ( temp structure{ temp float f}) 0:? Sequence 0:5 Branch: Return with expression 0:5 Function Call: myContext::method3(f1; ( temp float) 0:? '@this' ( temp structure{ temp float f}) 0:5 Constant: 0:5 1.000000 0:6 Function Definition: myContext::method3(f1; ( temp float) 0:6 Function Parameters: 0:6 '@this' ( temp structure{ temp float f}) 0:6 'a' ( in float) 0:? Sequence 0:6 Branch: Return with expression 0:6 Function Call: myContext::method4(f1;f1; ( temp float) 0:? '@this' ( temp structure{ temp float f}) 0:6 'a' ( in float) 0:6 'a' ( in float) 0:7 Function Definition: myContext::method4(f1;f1; ( temp float) 0:7 Function Parameters: 0:7 '@this' ( temp structure{ temp float f}) 0:7 'a' ( in float) 0:7 'b' ( in float) 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp float) 0:7 add ( temp float) 0:7 'a' ( in float) 0:7 'b' ( in float) 0:7 f: direct index for structure ( temp float) 0:7 '@this' ( temp structure{ temp float f}) 0:7 Constant: 0:7 0 (const uint) 0:12 Function Definition: @main( ( temp 4-component vector of float) 0:12 Function Parameters: 0:? Sequence 0:14 move second child to first child ( temp float) 0:14 f: direct index for structure ( temp float) 0:14 'context' ( temp structure{ temp float f}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 3.000000 0:15 Branch: Return with expression 0:15 Construct vec4 ( temp 4-component vector of float) 0:15 Function Call: myContext::method1( ( temp float) 0:15 'context' ( temp structure{ temp float f}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 71 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 10 "method3(f1;" Name 9 "a" Name 12 "myContext" MemberName 12(myContext) 0 "f" Name 16 "myContext::method1(" Name 15 "@this" Name 19 "myContext::method2(" Name 18 "@this" Name 24 "myContext::method3(f1;" Name 22 "@this" Name 23 "a" Name 30 "myContext::method4(f1;f1;" Name 27 "@this" Name 28 "a" Name 29 "b" Name 34 "@main(" Name 42 "param" Name 46 "param" Name 48 "param" Name 63 "context" Name 71 "@entryPointOutput" Decorate 71(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 12(myContext): TypeStruct 6(float) 13: TypePointer Function 12(myContext) 14: TypeFunction 6(float) 13(ptr) 21: TypeFunction 6(float) 13(ptr) 7(ptr) 26: TypeFunction 6(float) 13(ptr) 7(ptr) 7(ptr) 32: TypeVector 6(float) 4 33: TypeFunction 32(fvec4) 36: 6(float) Constant 1065353216 56: TypeInt 32 1 57: 56(int) Constant 0 64: 6(float) Constant 1077936128 70: TypePointer Output 32(fvec4) 71(@entryPointOutput): 70(ptr) Variable Output 4(main): 2 Function None 3 5: Label 72: 32(fvec4) FunctionCall 34(@main() Store 71(@entryPointOutput) 72 Return FunctionEnd 10(method3(f1;): 6(float) Function None 8 9(a): 7(ptr) FunctionParameter 11: Label ReturnValue 36 FunctionEnd 16(myContext::method1(): 6(float) Function None 14 15(@this): 13(ptr) FunctionParameter 17: Label 39: 6(float) FunctionCall 19(myContext::method2() 15(@this) ReturnValue 39 FunctionEnd 19(myContext::method2(): 6(float) Function None 14 18(@this): 13(ptr) FunctionParameter 20: Label 42(param): 7(ptr) Variable Function Store 42(param) 36 43: 6(float) FunctionCall 24(myContext::method3(f1;) 18(@this) 42(param) ReturnValue 43 FunctionEnd 24(myContext::method3(f1;): 6(float) Function None 21 22(@this): 13(ptr) FunctionParameter 23(a): 7(ptr) FunctionParameter 25: Label 46(param): 7(ptr) Variable Function 48(param): 7(ptr) Variable Function 47: 6(float) Load 23(a) Store 46(param) 47 49: 6(float) Load 23(a) Store 48(param) 49 50: 6(float) FunctionCall 30(myContext::method4(f1;f1;) 22(@this) 46(param) 48(param) ReturnValue 50 FunctionEnd 30(myContext::method4(f1;f1;): 6(float) Function None 26 27(@this): 13(ptr) FunctionParameter 28(a): 7(ptr) FunctionParameter 29(b): 7(ptr) FunctionParameter 31: Label 53: 6(float) Load 28(a) 54: 6(float) Load 29(b) 55: 6(float) FAdd 53 54 58: 7(ptr) AccessChain 27(@this) 57 59: 6(float) Load 58 60: 6(float) FAdd 55 59 ReturnValue 60 FunctionEnd 34(@main(): 32(fvec4) Function None 33 35: Label 63(context): 13(ptr) Variable Function 65: 7(ptr) AccessChain 63(context) 57 Store 65 64 66: 6(float) FunctionCall 16(myContext::method1() 63(context) 67: 32(fvec4) CompositeConstruct 66 66 66 66 ReturnValue 67 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.mintypes.frag.out000066400000000000000000000562031506534232700227350ustar00rootroot00000000000000hlsl.mintypes.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:9 Function Parameters: 0:? Sequence 0:85 add ( temp mediump 2-component vector of float) 0:85 'mf16_2' ( temp mediump 2-component vector of float) 0:85 'mf16' ( temp mediump float) 0:86 add ( temp mediump 2-component vector of float) 0:86 'mf10_2' ( temp mediump 2-component vector of float) 0:86 'mf10' ( temp mediump float) 0:87 add ( temp mediump 2-component vector of int) 0:87 'mi16_2' ( temp mediump 2-component vector of int) 0:87 'mi16' ( temp mediump int) 0:88 add ( temp mediump 2-component vector of int) 0:88 'mi12_2' ( temp mediump 2-component vector of int) 0:88 'mi12' ( temp mediump int) 0:89 add ( temp mediump 2-component vector of uint) 0:89 'mu16_2' ( temp mediump 2-component vector of uint) 0:89 'mu16' ( temp mediump uint) 0:91 matrix-times-vector ( temp mediump 4-component vector of float) 0:91 'mf16_2x4' ( temp mediump 2X4 matrix of float) 0:91 'mf16_2' ( temp mediump 2-component vector of float) 0:92 matrix-times-vector ( temp mediump 4-component vector of float) 0:92 'mf16_3x4' ( temp mediump 3X4 matrix of float) 0:92 'mf16_3' ( temp mediump 3-component vector of float) 0:93 matrix-times-vector ( temp mediump 4-component vector of float) 0:93 'mf16_4x4' ( temp mediump 4X4 matrix of float) 0:93 'mf16_4' ( temp mediump 4-component vector of float) 0:94 vector-times-matrix ( temp mediump 4-component vector of float) 0:94 'mf16_2' ( temp mediump 2-component vector of float) 0:94 'mf16_4x2' ( temp mediump 4X2 matrix of float) 0:95 vector-times-matrix ( temp mediump 4-component vector of float) 0:95 'mf16_3' ( temp mediump 3-component vector of float) 0:95 'mf16_4x3' ( temp mediump 4X3 matrix of float) 0:96 vector-times-matrix ( temp mediump 4-component vector of float) 0:96 'mf16_4' ( temp mediump 4-component vector of float) 0:96 'mf16_4x4' ( temp mediump 4X4 matrix of float) 0:98 matrix-times-vector ( temp mediump 4-component vector of float) 0:98 'mf10_2x4' ( temp mediump 2X4 matrix of float) 0:98 'mf10_2' ( temp mediump 2-component vector of float) 0:99 matrix-times-vector ( temp mediump 4-component vector of float) 0:99 'mf10_3x4' ( temp mediump 3X4 matrix of float) 0:99 'mf10_3' ( temp mediump 3-component vector of float) 0:100 matrix-times-vector ( temp mediump 4-component vector of float) 0:100 'mf10_4x4' ( temp mediump 4X4 matrix of float) 0:100 'mf10_4' ( temp mediump 4-component vector of float) 0:101 vector-times-matrix ( temp mediump 4-component vector of float) 0:101 'mf10_2' ( temp mediump 2-component vector of float) 0:101 'mf10_4x2' ( temp mediump 4X2 matrix of float) 0:102 vector-times-matrix ( temp mediump 4-component vector of float) 0:102 'mf10_3' ( temp mediump 3-component vector of float) 0:102 'mf10_4x3' ( temp mediump 4X3 matrix of float) 0:103 vector-times-matrix ( temp mediump 4-component vector of float) 0:103 'mf10_4' ( temp mediump 4-component vector of float) 0:103 'mf10_4x4' ( temp mediump 4X4 matrix of float) 0:106 move second child to first child ( temp 4-component vector of float) 0:106 Color: direct index for structure ( temp 4-component vector of float) 0:106 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:106 0.000000 0:106 0.000000 0:107 Branch: Return with expression 0:107 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:9 Color: direct index for structure ( temp 4-component vector of float) 0:9 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:9 Constant: 0:9 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform mediump float b1a, uniform mediump float b1b}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:9 Function Parameters: 0:? Sequence 0:85 add ( temp mediump 2-component vector of float) 0:85 'mf16_2' ( temp mediump 2-component vector of float) 0:85 'mf16' ( temp mediump float) 0:86 add ( temp mediump 2-component vector of float) 0:86 'mf10_2' ( temp mediump 2-component vector of float) 0:86 'mf10' ( temp mediump float) 0:87 add ( temp mediump 2-component vector of int) 0:87 'mi16_2' ( temp mediump 2-component vector of int) 0:87 'mi16' ( temp mediump int) 0:88 add ( temp mediump 2-component vector of int) 0:88 'mi12_2' ( temp mediump 2-component vector of int) 0:88 'mi12' ( temp mediump int) 0:89 add ( temp mediump 2-component vector of uint) 0:89 'mu16_2' ( temp mediump 2-component vector of uint) 0:89 'mu16' ( temp mediump uint) 0:91 matrix-times-vector ( temp mediump 4-component vector of float) 0:91 'mf16_2x4' ( temp mediump 2X4 matrix of float) 0:91 'mf16_2' ( temp mediump 2-component vector of float) 0:92 matrix-times-vector ( temp mediump 4-component vector of float) 0:92 'mf16_3x4' ( temp mediump 3X4 matrix of float) 0:92 'mf16_3' ( temp mediump 3-component vector of float) 0:93 matrix-times-vector ( temp mediump 4-component vector of float) 0:93 'mf16_4x4' ( temp mediump 4X4 matrix of float) 0:93 'mf16_4' ( temp mediump 4-component vector of float) 0:94 vector-times-matrix ( temp mediump 4-component vector of float) 0:94 'mf16_2' ( temp mediump 2-component vector of float) 0:94 'mf16_4x2' ( temp mediump 4X2 matrix of float) 0:95 vector-times-matrix ( temp mediump 4-component vector of float) 0:95 'mf16_3' ( temp mediump 3-component vector of float) 0:95 'mf16_4x3' ( temp mediump 4X3 matrix of float) 0:96 vector-times-matrix ( temp mediump 4-component vector of float) 0:96 'mf16_4' ( temp mediump 4-component vector of float) 0:96 'mf16_4x4' ( temp mediump 4X4 matrix of float) 0:98 matrix-times-vector ( temp mediump 4-component vector of float) 0:98 'mf10_2x4' ( temp mediump 2X4 matrix of float) 0:98 'mf10_2' ( temp mediump 2-component vector of float) 0:99 matrix-times-vector ( temp mediump 4-component vector of float) 0:99 'mf10_3x4' ( temp mediump 3X4 matrix of float) 0:99 'mf10_3' ( temp mediump 3-component vector of float) 0:100 matrix-times-vector ( temp mediump 4-component vector of float) 0:100 'mf10_4x4' ( temp mediump 4X4 matrix of float) 0:100 'mf10_4' ( temp mediump 4-component vector of float) 0:101 vector-times-matrix ( temp mediump 4-component vector of float) 0:101 'mf10_2' ( temp mediump 2-component vector of float) 0:101 'mf10_4x2' ( temp mediump 4X2 matrix of float) 0:102 vector-times-matrix ( temp mediump 4-component vector of float) 0:102 'mf10_3' ( temp mediump 3-component vector of float) 0:102 'mf10_4x3' ( temp mediump 4X3 matrix of float) 0:103 vector-times-matrix ( temp mediump 4-component vector of float) 0:103 'mf10_4' ( temp mediump 4-component vector of float) 0:103 'mf10_4x4' ( temp mediump 4X4 matrix of float) 0:106 move second child to first child ( temp 4-component vector of float) 0:106 Color: direct index for structure ( temp 4-component vector of float) 0:106 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:106 0.000000 0:106 0.000000 0:107 Branch: Return with expression 0:107 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:9 Color: direct index for structure ( temp 4-component vector of float) 0:9 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:9 Constant: 0:9 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform mediump float b1a, uniform mediump float b1b}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 132 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 126 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 14 "mf16_2" Name 17 "mf16" Name 21 "mf10_2" Name 23 "mf10" Name 30 "mi16_2" Name 33 "mi16" Name 37 "mi12_2" Name 39 "mi12" Name 46 "mu16_2" Name 49 "mu16" Name 55 "mf16_2x4" Name 61 "mf16_3x4" Name 65 "mf16_3" Name 70 "mf16_4x4" Name 73 "mf16_4" Name 79 "mf16_4x2" Name 85 "mf16_4x3" Name 91 "mf10_2x4" Name 95 "mf10_3x4" Name 97 "mf10_3" Name 100 "mf10_4x4" Name 102 "mf10_4" Name 106 "mf10_4x2" Name 110 "mf10_4x3" Name 117 "psout" Name 126 "@entryPointOutput.Color" Name 129 "$Global" MemberName 129($Global) 0 "b1a" MemberName 129($Global) 1 "b1b" Name 131 "" Decorate 14(mf16_2) RelaxedPrecision Decorate 15 RelaxedPrecision Decorate 17(mf16) RelaxedPrecision Decorate 18 RelaxedPrecision Decorate 19 RelaxedPrecision Decorate 20 RelaxedPrecision Decorate 21(mf10_2) RelaxedPrecision Decorate 22 RelaxedPrecision Decorate 23(mf10) RelaxedPrecision Decorate 24 RelaxedPrecision Decorate 25 RelaxedPrecision Decorate 26 RelaxedPrecision Decorate 30(mi16_2) RelaxedPrecision Decorate 31 RelaxedPrecision Decorate 33(mi16) RelaxedPrecision Decorate 34 RelaxedPrecision Decorate 35 RelaxedPrecision Decorate 36 RelaxedPrecision Decorate 37(mi12_2) RelaxedPrecision Decorate 38 RelaxedPrecision Decorate 39(mi12) RelaxedPrecision Decorate 40 RelaxedPrecision Decorate 41 RelaxedPrecision Decorate 42 RelaxedPrecision Decorate 46(mu16_2) RelaxedPrecision Decorate 47 RelaxedPrecision Decorate 49(mu16) RelaxedPrecision Decorate 50 RelaxedPrecision Decorate 51 RelaxedPrecision Decorate 52 RelaxedPrecision Decorate 55(mf16_2x4) RelaxedPrecision Decorate 56 RelaxedPrecision Decorate 57 RelaxedPrecision Decorate 58 RelaxedPrecision Decorate 61(mf16_3x4) RelaxedPrecision Decorate 62 RelaxedPrecision Decorate 65(mf16_3) RelaxedPrecision Decorate 66 RelaxedPrecision Decorate 67 RelaxedPrecision Decorate 70(mf16_4x4) RelaxedPrecision Decorate 71 RelaxedPrecision Decorate 73(mf16_4) RelaxedPrecision Decorate 74 RelaxedPrecision Decorate 75 RelaxedPrecision Decorate 76 RelaxedPrecision Decorate 79(mf16_4x2) RelaxedPrecision Decorate 80 RelaxedPrecision Decorate 81 RelaxedPrecision Decorate 82 RelaxedPrecision Decorate 85(mf16_4x3) RelaxedPrecision Decorate 86 RelaxedPrecision Decorate 87 RelaxedPrecision Decorate 88 RelaxedPrecision Decorate 89 RelaxedPrecision Decorate 90 RelaxedPrecision Decorate 91(mf10_2x4) RelaxedPrecision Decorate 92 RelaxedPrecision Decorate 93 RelaxedPrecision Decorate 94 RelaxedPrecision Decorate 95(mf10_3x4) RelaxedPrecision Decorate 96 RelaxedPrecision Decorate 97(mf10_3) RelaxedPrecision Decorate 98 RelaxedPrecision Decorate 99 RelaxedPrecision Decorate 100(mf10_4x4) RelaxedPrecision Decorate 101 RelaxedPrecision Decorate 102(mf10_4) RelaxedPrecision Decorate 103 RelaxedPrecision Decorate 104 RelaxedPrecision Decorate 105 RelaxedPrecision Decorate 106(mf10_4x2) RelaxedPrecision Decorate 107 RelaxedPrecision Decorate 108 RelaxedPrecision Decorate 109 RelaxedPrecision Decorate 110(mf10_4x3) RelaxedPrecision Decorate 111 RelaxedPrecision Decorate 112 RelaxedPrecision Decorate 113 RelaxedPrecision Decorate 114 RelaxedPrecision Decorate 115 RelaxedPrecision Decorate 126(@entryPointOutput.Color) Location 0 Decorate 129($Global) Block MemberDecorate 129($Global) 0 RelaxedPrecision MemberDecorate 129($Global) 0 Offset 0 MemberDecorate 129($Global) 1 RelaxedPrecision MemberDecorate 129($Global) 1 Offset 4 Decorate 131 Binding 0 Decorate 131 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeVector 6(float) 2 13: TypePointer Function 12(fvec2) 16: TypePointer Function 6(float) 27: TypeInt 32 1 28: TypeVector 27(int) 2 29: TypePointer Function 28(ivec2) 32: TypePointer Function 27(int) 43: TypeInt 32 0 44: TypeVector 43(int) 2 45: TypePointer Function 44(ivec2) 48: TypePointer Function 43(int) 53: TypeMatrix 7(fvec4) 2 54: TypePointer Function 53 59: TypeMatrix 7(fvec4) 3 60: TypePointer Function 59 63: TypeVector 6(float) 3 64: TypePointer Function 63(fvec3) 68: TypeMatrix 7(fvec4) 4 69: TypePointer Function 68 72: TypePointer Function 7(fvec4) 77: TypeMatrix 12(fvec2) 4 78: TypePointer Function 77 83: TypeMatrix 63(fvec3) 4 84: TypePointer Function 83 116: TypePointer Function 8(PS_OUTPUT) 118: 27(int) Constant 0 119: 6(float) Constant 0 120: 7(fvec4) ConstantComposite 119 119 119 119 125: TypePointer Output 7(fvec4) 126(@entryPointOutput.Color): 125(ptr) Variable Output 129($Global): TypeStruct 6(float) 6(float) 130: TypePointer Uniform 129($Global) 131: 130(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 127:8(PS_OUTPUT) FunctionCall 10(@main() 128: 7(fvec4) CompositeExtract 127 0 Store 126(@entryPointOutput.Color) 128 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 14(mf16_2): 13(ptr) Variable Function 17(mf16): 16(ptr) Variable Function 21(mf10_2): 13(ptr) Variable Function 23(mf10): 16(ptr) Variable Function 30(mi16_2): 29(ptr) Variable Function 33(mi16): 32(ptr) Variable Function 37(mi12_2): 29(ptr) Variable Function 39(mi12): 32(ptr) Variable Function 46(mu16_2): 45(ptr) Variable Function 49(mu16): 48(ptr) Variable Function 55(mf16_2x4): 54(ptr) Variable Function 61(mf16_3x4): 60(ptr) Variable Function 65(mf16_3): 64(ptr) Variable Function 70(mf16_4x4): 69(ptr) Variable Function 73(mf16_4): 72(ptr) Variable Function 79(mf16_4x2): 78(ptr) Variable Function 85(mf16_4x3): 84(ptr) Variable Function 91(mf10_2x4): 54(ptr) Variable Function 95(mf10_3x4): 60(ptr) Variable Function 97(mf10_3): 64(ptr) Variable Function 100(mf10_4x4): 69(ptr) Variable Function 102(mf10_4): 72(ptr) Variable Function 106(mf10_4x2): 78(ptr) Variable Function 110(mf10_4x3): 84(ptr) Variable Function 117(psout): 116(ptr) Variable Function 15: 12(fvec2) Load 14(mf16_2) 18: 6(float) Load 17(mf16) 19: 12(fvec2) CompositeConstruct 18 18 20: 12(fvec2) FAdd 15 19 22: 12(fvec2) Load 21(mf10_2) 24: 6(float) Load 23(mf10) 25: 12(fvec2) CompositeConstruct 24 24 26: 12(fvec2) FAdd 22 25 31: 28(ivec2) Load 30(mi16_2) 34: 27(int) Load 33(mi16) 35: 28(ivec2) CompositeConstruct 34 34 36: 28(ivec2) IAdd 31 35 38: 28(ivec2) Load 37(mi12_2) 40: 27(int) Load 39(mi12) 41: 28(ivec2) CompositeConstruct 40 40 42: 28(ivec2) IAdd 38 41 47: 44(ivec2) Load 46(mu16_2) 50: 43(int) Load 49(mu16) 51: 44(ivec2) CompositeConstruct 50 50 52: 44(ivec2) IAdd 47 51 56: 53 Load 55(mf16_2x4) 57: 12(fvec2) Load 14(mf16_2) 58: 7(fvec4) MatrixTimesVector 56 57 62: 59 Load 61(mf16_3x4) 66: 63(fvec3) Load 65(mf16_3) 67: 7(fvec4) MatrixTimesVector 62 66 71: 68 Load 70(mf16_4x4) 74: 7(fvec4) Load 73(mf16_4) 75: 7(fvec4) MatrixTimesVector 71 74 76: 12(fvec2) Load 14(mf16_2) 80: 77 Load 79(mf16_4x2) 81: 7(fvec4) VectorTimesMatrix 76 80 82: 63(fvec3) Load 65(mf16_3) 86: 83 Load 85(mf16_4x3) 87: 7(fvec4) VectorTimesMatrix 82 86 88: 7(fvec4) Load 73(mf16_4) 89: 68 Load 70(mf16_4x4) 90: 7(fvec4) VectorTimesMatrix 88 89 92: 53 Load 91(mf10_2x4) 93: 12(fvec2) Load 21(mf10_2) 94: 7(fvec4) MatrixTimesVector 92 93 96: 59 Load 95(mf10_3x4) 98: 63(fvec3) Load 97(mf10_3) 99: 7(fvec4) MatrixTimesVector 96 98 101: 68 Load 100(mf10_4x4) 103: 7(fvec4) Load 102(mf10_4) 104: 7(fvec4) MatrixTimesVector 101 103 105: 12(fvec2) Load 21(mf10_2) 107: 77 Load 106(mf10_4x2) 108: 7(fvec4) VectorTimesMatrix 105 107 109: 63(fvec3) Load 97(mf10_3) 111: 83 Load 110(mf10_4x3) 112: 7(fvec4) VectorTimesMatrix 109 111 113: 7(fvec4) Load 102(mf10_4) 114: 68 Load 100(mf10_4x4) 115: 7(fvec4) VectorTimesMatrix 113 114 121: 72(ptr) AccessChain 117(psout) 118 Store 121 120 122:8(PS_OUTPUT) Load 117(psout) ReturnValue 122 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.mip.negative.frag.out000066400000000000000000000043611506534232700234510ustar00rootroot00000000000000hlsl.mip.negative.frag ERROR: 0:5: '' : unterminated mips operator: ERROR: 1 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:4 Function Definition: @main( ( temp 4-component vector of float) 0:4 Function Parameters: 0:? Sequence 0:5 textureFetch ( temp 4-component vector of float) 0:5 'g_tTex2df4' ( uniform texture2D) 0:5 Constant: 0:5 3 (const uint) 0:5 4 (const uint) 0:5 Constant: 0:5 2 (const int) 0:7 Branch: Return with expression 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tTex2df4' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:4 Function Definition: @main( ( temp 4-component vector of float) 0:4 Function Parameters: 0:? Sequence 0:5 textureFetch ( temp 4-component vector of float) 0:5 'g_tTex2df4' ( uniform texture2D) 0:5 Constant: 0:5 3 (const uint) 0:5 4 (const uint) 0:5 Constant: 0:5 2 (const int) 0:7 Branch: Return with expression 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tTex2df4' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.mip.negative2.frag.out000066400000000000000000000047161506534232700235370ustar00rootroot00000000000000hlsl.mip.negative2.frag ERROR: 0:5: 'r' : unexpected operator on texture type: uniform texture2D ERROR: 1 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:4 Function Definition: @main( ( temp 4-component vector of float) 0:4 Function Parameters: 0:? Sequence 0:5 direct index ( temp float) 0:5 textureFetch ( temp 4-component vector of float) 0:5 'g_tTex2df4' ( uniform texture2D) 0:5 Constant: 0:5 2 (const int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 3 (const uint) 0:5 4 (const uint) 0:7 Branch: Return with expression 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tTex2df4' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:4 Function Definition: @main( ( temp 4-component vector of float) 0:4 Function Parameters: 0:? Sequence 0:5 direct index ( temp float) 0:5 textureFetch ( temp 4-component vector of float) 0:5 'g_tTex2df4' ( uniform texture2D) 0:5 Constant: 0:5 2 (const int) 0:5 Constant: 0:5 0 (const int) 0:5 Constant: 0:5 3 (const uint) 0:5 4 (const uint) 0:7 Branch: Return with expression 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:4 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tTex2df4' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.mip.operator.frag.out000066400000000000000000000221661506534232700235050ustar00rootroot00000000000000hlsl.mip.operator.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:13 Branch: Return with expression 0:9 add ( temp 4-component vector of float) 0:6 add ( temp 4-component vector of float) 0:6 textureFetch ( temp 4-component vector of float) 0:6 'g_tTex2df4' ( uniform texture2D) 0:6 Constant: 0:6 3 (const uint) 0:6 4 (const uint) 0:6 Constant: 0:6 2 (const int) 0:9 textureFetch ( temp 4-component vector of float) 0:9 'g_tTex2df4a' ( uniform texture2DArray) 0:9 Constant: 0:9 6 (const uint) 0:9 7 (const uint) 0:9 8 (const uint) 0:9 Constant: 0:9 5 (const uint) 0:13 textureFetch ( temp 4-component vector of float) 0:13 'g_tTex2df4' ( uniform texture2D) 0:13 Convert float to uint ( temp 2-component vector of uint) 0:13 vector swizzle ( temp 2-component vector of float) 0:13 textureFetch ( temp 4-component vector of float) 0:13 'g_tTex2df4' ( uniform texture2D) 0:13 Constant: 0:13 14 (const uint) 0:13 15 (const uint) 0:13 Constant: 0:13 13 (const int) 0:13 Sequence 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Convert float to uint ( temp uint) 0:13 direct index ( temp float) 0:13 textureFetch ( temp 4-component vector of float) 0:13 'g_tTex2df4' ( uniform texture2D) 0:13 Constant: 0:13 10 (const uint) 0:13 11 (const uint) 0:13 Constant: 0:13 9 (const int) 0:13 Constant: 0:13 0 (const int) 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:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:5 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:13 Branch: Return with expression 0:9 add ( temp 4-component vector of float) 0:6 add ( temp 4-component vector of float) 0:6 textureFetch ( temp 4-component vector of float) 0:6 'g_tTex2df4' ( uniform texture2D) 0:6 Constant: 0:6 3 (const uint) 0:6 4 (const uint) 0:6 Constant: 0:6 2 (const int) 0:9 textureFetch ( temp 4-component vector of float) 0:9 'g_tTex2df4a' ( uniform texture2DArray) 0:9 Constant: 0:9 6 (const uint) 0:9 7 (const uint) 0:9 8 (const uint) 0:9 Constant: 0:9 5 (const uint) 0:13 textureFetch ( temp 4-component vector of float) 0:13 'g_tTex2df4' ( uniform texture2D) 0:13 Convert float to uint ( temp 2-component vector of uint) 0:13 vector swizzle ( temp 2-component vector of float) 0:13 textureFetch ( temp 4-component vector of float) 0:13 'g_tTex2df4' ( uniform texture2D) 0:13 Constant: 0:13 14 (const uint) 0:13 15 (const uint) 0:13 Constant: 0:13 13 (const int) 0:13 Sequence 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Convert float to uint ( temp uint) 0:13 direct index ( temp float) 0:13 textureFetch ( temp 4-component vector of float) 0:13 'g_tTex2df4' ( uniform texture2D) 0:13 Constant: 0:13 10 (const uint) 0:13 11 (const uint) 0:13 Constant: 0:13 9 (const int) 0:13 Constant: 0:13 0 (const int) 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:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:5 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 59 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "g_tTex2df4" Name 25 "g_tTex2df4a" Name 59 "@entryPointOutput" Decorate 13(g_tTex2df4) Binding 1 Decorate 13(g_tTex2df4) DescriptorSet 0 Decorate 25(g_tTex2df4a) Binding 0 Decorate 25(g_tTex2df4a) DescriptorSet 0 Decorate 59(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeImage 6(float) 2D sampled format:Unknown 12: TypePointer UniformConstant 11 13(g_tTex2df4): 12(ptr) Variable UniformConstant 15: TypeInt 32 0 16: TypeVector 15(int) 2 17: 15(int) Constant 3 18: 15(int) Constant 4 19: 16(ivec2) ConstantComposite 17 18 20: TypeInt 32 1 21: 20(int) Constant 2 23: TypeImage 6(float) 2D array sampled format:Unknown 24: TypePointer UniformConstant 23 25(g_tTex2df4a): 24(ptr) Variable UniformConstant 27: TypeVector 15(int) 3 28: 15(int) Constant 6 29: 15(int) Constant 7 30: 15(int) Constant 8 31: 27(ivec3) ConstantComposite 28 29 30 32: 15(int) Constant 5 37: 15(int) Constant 14 38: 15(int) Constant 15 39: 16(ivec2) ConstantComposite 37 38 40: 20(int) Constant 13 42: TypeVector 6(float) 2 46: 15(int) Constant 10 47: 15(int) Constant 11 48: 16(ivec2) ConstantComposite 46 47 49: 20(int) Constant 9 51: 15(int) Constant 0 58: TypePointer Output 7(fvec4) 59(@entryPointOutput): 58(ptr) Variable Output 4(main): 2 Function None 3 5: Label 60: 7(fvec4) FunctionCall 9(@main() Store 59(@entryPointOutput) 60 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 14: 11 Load 13(g_tTex2df4) 22: 7(fvec4) ImageFetch 14 19 Lod 21 26: 23 Load 25(g_tTex2df4a) 33: 7(fvec4) ImageFetch 26 31 Lod 32 34: 7(fvec4) FAdd 22 33 35: 11 Load 13(g_tTex2df4) 36: 11 Load 13(g_tTex2df4) 41: 7(fvec4) ImageFetch 36 39 Lod 40 43: 42(fvec2) VectorShuffle 41 41 0 1 44: 16(ivec2) ConvertFToU 43 45: 11 Load 13(g_tTex2df4) 50: 7(fvec4) ImageFetch 45 48 Lod 49 52: 6(float) CompositeExtract 50 0 53: 15(int) ConvertFToU 52 54: 7(fvec4) ImageFetch 35 44 Lod 53 55: 7(fvec4) FAdd 34 54 ReturnValue 55 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.mul-truncate.frag.out000066400000000000000000001575571506534232700235230ustar00rootroot00000000000000hlsl.mul-truncate.frag WARNING: 0:24: '' : mul() matrix size mismatch WARNING: 0:25: '' : mul() matrix size mismatch WARNING: 0:28: '' : mul() matrix size mismatch WARNING: 0:29: '' : mul() matrix size mismatch WARNING: 0:32: '' : mul() matrix size mismatch WARNING: 0:33: '' : mul() matrix size mismatch WARNING: 0:34: '' : mul() matrix size mismatch WARNING: 0:35: '' : mul() matrix size mismatch Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'r00' ( temp float) 0:20 dot-product ( temp float) 0:20 v2: direct index for structure (layout( row_major std140) uniform 2-component vector of float) 0:20 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:20 Constant: 0:20 8 (const uint) 0:20 Construct vec2 ( in 2-component vector of float) 0:20 v3: direct index for structure (layout( row_major std140) uniform 3-component vector of float) 0:20 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:20 Constant: 0:20 7 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'r01' ( temp float) 0:21 dot-product ( temp float) 0:21 Construct vec2 ( in 2-component vector of float) 0:21 v4: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:21 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:21 Constant: 0:21 6 (const uint) 0:21 v2: direct index for structure (layout( row_major std140) uniform 2-component vector of float) 0:21 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:21 Constant: 0:21 8 (const uint) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'r10' ( temp 4-component vector of float) 0:24 matrix-times-vector ( temp 4-component vector of float) 0:24 Construct mat3x4 ( uniform 3X4 matrix of float) 0:24 m44: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:24 Constant: 0:24 0 (const uint) 0:24 v3: direct index for structure (layout( row_major std140) uniform 3-component vector of float) 0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:24 Constant: 0:24 7 (const uint) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'r11' ( temp 4-component vector of float) 0:25 matrix-times-vector ( temp 4-component vector of float) 0:25 m34: direct index for structure (layout( row_major std140) uniform 3X4 matrix of float) 0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:25 Constant: 0:25 2 (const uint) 0:25 Construct vec3 ( uniform 3-component vector of float) 0:25 v4: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:25 Constant: 0:25 6 (const uint) 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'r20' ( temp 4-component vector of float) 0:28 vector-times-matrix ( temp 4-component vector of float) 0:28 v3: direct index for structure (layout( row_major std140) uniform 3-component vector of float) 0:28 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:28 Constant: 0:28 7 (const uint) 0:28 Construct mat4x3 ( uniform 4X3 matrix of float) 0:28 m44: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:28 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:28 Constant: 0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of float) 0:29 'r21' ( temp 4-component vector of float) 0:29 vector-times-matrix ( temp 4-component vector of float) 0:29 Construct vec3 ( uniform 3-component vector of float) 0:29 v4: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:29 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:29 Constant: 0:29 6 (const uint) 0:29 m43: direct index for structure (layout( row_major std140) uniform 4X3 matrix of float) 0:29 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:29 Constant: 0:29 1 (const uint) 0:32 Sequence 0:32 move second child to first child ( temp 2X3 matrix of float) 0:32 'r30' ( temp 2X3 matrix of float) 0:32 matrix-multiply ( temp 2X3 matrix of float) 0:32 m33: direct index for structure (layout( row_major std140) uniform 3X3 matrix of float) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:32 Constant: 0:32 3 (const uint) 0:32 Construct mat2x3 ( uniform 2X3 matrix of float) 0:32 m24: direct index for structure (layout( row_major std140) uniform 2X4 matrix of float) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:32 Constant: 0:32 4 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp 3X4 matrix of float) 0:33 'r31' ( temp 3X4 matrix of float) 0:33 matrix-multiply ( temp 3X4 matrix of float) 0:33 m24: direct index for structure (layout( row_major std140) uniform 2X4 matrix of float) 0:33 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:33 Constant: 0:33 4 (const uint) 0:33 Construct mat3x2 ( uniform 3X2 matrix of float) 0:33 m33: direct index for structure (layout( row_major std140) uniform 3X3 matrix of float) 0:33 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:33 Constant: 0:33 3 (const uint) 0:34 Sequence 0:34 move second child to first child ( temp 3X2 matrix of float) 0:34 'r32' ( temp 3X2 matrix of float) 0:34 matrix-multiply ( temp 3X2 matrix of float) 0:34 Construct mat3x2 ( uniform 3X2 matrix of float) 0:34 m42: direct index for structure (layout( row_major std140) uniform 4X2 matrix of float) 0:34 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:34 Constant: 0:34 5 (const uint) 0:34 m33: direct index for structure (layout( row_major std140) uniform 3X3 matrix of float) 0:34 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:34 Constant: 0:34 3 (const uint) 0:35 Sequence 0:35 move second child to first child ( temp 4X3 matrix of float) 0:35 'r33' ( temp 4X3 matrix of float) 0:35 matrix-multiply ( temp 4X3 matrix of float) 0:35 Construct mat2x3 ( uniform 2X3 matrix of float) 0:35 m33: direct index for structure (layout( row_major std140) uniform 3X3 matrix of float) 0:35 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:35 Constant: 0:35 3 (const uint) 0:35 m42: direct index for structure (layout( row_major std140) uniform 4X2 matrix of float) 0:35 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:35 Constant: 0:35 5 (const uint) 0:37 Branch: Return with expression 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 'r10' ( temp 4-component vector of float) 0:37 'r11' ( temp 4-component vector of float) 0:37 'r20' ( temp 4-component vector of float) 0:37 'r21' ( temp 4-component vector of float) 0:37 'r00' ( temp float) 0:37 'r01' ( temp float) 0:37 direct index ( temp float) 0:37 direct index ( temp 3-component vector of float) 0:37 'r30' ( temp 2X3 matrix of float) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp 4-component vector of float) 0:37 'r31' ( temp 3X4 matrix of float) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp float) 0:37 direct index ( temp 2-component vector of float) 0:37 'r32' ( temp 3X2 matrix of float) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp 4-component vector of float) 0:37 transpose ( temp 3X4 matrix of float) 0:37 'r33' ( temp 4X3 matrix of float) 0:37 Constant: 0:37 0 (const int) 0:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'r00' ( temp float) 0:20 dot-product ( temp float) 0:20 v2: direct index for structure (layout( row_major std140) uniform 2-component vector of float) 0:20 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:20 Constant: 0:20 8 (const uint) 0:20 Construct vec2 ( in 2-component vector of float) 0:20 v3: direct index for structure (layout( row_major std140) uniform 3-component vector of float) 0:20 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:20 Constant: 0:20 7 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'r01' ( temp float) 0:21 dot-product ( temp float) 0:21 Construct vec2 ( in 2-component vector of float) 0:21 v4: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:21 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:21 Constant: 0:21 6 (const uint) 0:21 v2: direct index for structure (layout( row_major std140) uniform 2-component vector of float) 0:21 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:21 Constant: 0:21 8 (const uint) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'r10' ( temp 4-component vector of float) 0:24 matrix-times-vector ( temp 4-component vector of float) 0:24 Construct mat3x4 ( uniform 3X4 matrix of float) 0:24 m44: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:24 Constant: 0:24 0 (const uint) 0:24 v3: direct index for structure (layout( row_major std140) uniform 3-component vector of float) 0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:24 Constant: 0:24 7 (const uint) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'r11' ( temp 4-component vector of float) 0:25 matrix-times-vector ( temp 4-component vector of float) 0:25 m34: direct index for structure (layout( row_major std140) uniform 3X4 matrix of float) 0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:25 Constant: 0:25 2 (const uint) 0:25 Construct vec3 ( uniform 3-component vector of float) 0:25 v4: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:25 Constant: 0:25 6 (const uint) 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'r20' ( temp 4-component vector of float) 0:28 vector-times-matrix ( temp 4-component vector of float) 0:28 v3: direct index for structure (layout( row_major std140) uniform 3-component vector of float) 0:28 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:28 Constant: 0:28 7 (const uint) 0:28 Construct mat4x3 ( uniform 4X3 matrix of float) 0:28 m44: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float) 0:28 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:28 Constant: 0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of float) 0:29 'r21' ( temp 4-component vector of float) 0:29 vector-times-matrix ( temp 4-component vector of float) 0:29 Construct vec3 ( uniform 3-component vector of float) 0:29 v4: direct index for structure (layout( row_major std140) uniform 4-component vector of float) 0:29 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:29 Constant: 0:29 6 (const uint) 0:29 m43: direct index for structure (layout( row_major std140) uniform 4X3 matrix of float) 0:29 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:29 Constant: 0:29 1 (const uint) 0:32 Sequence 0:32 move second child to first child ( temp 2X3 matrix of float) 0:32 'r30' ( temp 2X3 matrix of float) 0:32 matrix-multiply ( temp 2X3 matrix of float) 0:32 m33: direct index for structure (layout( row_major std140) uniform 3X3 matrix of float) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:32 Constant: 0:32 3 (const uint) 0:32 Construct mat2x3 ( uniform 2X3 matrix of float) 0:32 m24: direct index for structure (layout( row_major std140) uniform 2X4 matrix of float) 0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:32 Constant: 0:32 4 (const uint) 0:33 Sequence 0:33 move second child to first child ( temp 3X4 matrix of float) 0:33 'r31' ( temp 3X4 matrix of float) 0:33 matrix-multiply ( temp 3X4 matrix of float) 0:33 m24: direct index for structure (layout( row_major std140) uniform 2X4 matrix of float) 0:33 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:33 Constant: 0:33 4 (const uint) 0:33 Construct mat3x2 ( uniform 3X2 matrix of float) 0:33 m33: direct index for structure (layout( row_major std140) uniform 3X3 matrix of float) 0:33 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:33 Constant: 0:33 3 (const uint) 0:34 Sequence 0:34 move second child to first child ( temp 3X2 matrix of float) 0:34 'r32' ( temp 3X2 matrix of float) 0:34 matrix-multiply ( temp 3X2 matrix of float) 0:34 Construct mat3x2 ( uniform 3X2 matrix of float) 0:34 m42: direct index for structure (layout( row_major std140) uniform 4X2 matrix of float) 0:34 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:34 Constant: 0:34 5 (const uint) 0:34 m33: direct index for structure (layout( row_major std140) uniform 3X3 matrix of float) 0:34 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:34 Constant: 0:34 3 (const uint) 0:35 Sequence 0:35 move second child to first child ( temp 4X3 matrix of float) 0:35 'r33' ( temp 4X3 matrix of float) 0:35 matrix-multiply ( temp 4X3 matrix of float) 0:35 Construct mat2x3 ( uniform 2X3 matrix of float) 0:35 m33: direct index for structure (layout( row_major std140) uniform 3X3 matrix of float) 0:35 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:35 Constant: 0:35 3 (const uint) 0:35 m42: direct index for structure (layout( row_major std140) uniform 4X2 matrix of float) 0:35 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:35 Constant: 0:35 5 (const uint) 0:37 Branch: Return with expression 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 add ( temp 4-component vector of float) 0:37 'r10' ( temp 4-component vector of float) 0:37 'r11' ( temp 4-component vector of float) 0:37 'r20' ( temp 4-component vector of float) 0:37 'r21' ( temp 4-component vector of float) 0:37 'r00' ( temp float) 0:37 'r01' ( temp float) 0:37 direct index ( temp float) 0:37 direct index ( temp 3-component vector of float) 0:37 'r30' ( temp 2X3 matrix of float) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp 4-component vector of float) 0:37 'r31' ( temp 3X4 matrix of float) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp float) 0:37 direct index ( temp 2-component vector of float) 0:37 'r32' ( temp 3X2 matrix of float) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp 4-component vector of float) 0:37 transpose ( temp 3X4 matrix of float) 0:37 'r33' ( temp 4X3 matrix of float) 0:37 Constant: 0:37 0 (const int) 0:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float m44, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform 2X4 matrix of float m24, layout( row_major std140) uniform 4X2 matrix of float m42, layout( row_major std140) uniform 4-component vector of float v4, layout( row_major std140) uniform 3-component vector of float v3, layout( row_major std140) uniform 2-component vector of float v2}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 190 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 188 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "r00" Name 21 "Matrix" MemberName 21(Matrix) 0 "m44" MemberName 21(Matrix) 1 "m43" MemberName 21(Matrix) 2 "m34" MemberName 21(Matrix) 3 "m33" MemberName 21(Matrix) 4 "m24" MemberName 21(Matrix) 5 "m42" MemberName 21(Matrix) 6 "v4" MemberName 21(Matrix) 7 "v3" MemberName 21(Matrix) 8 "v2" Name 23 "" Name 37 "r01" Name 49 "r10" Name 61 "r11" Name 73 "r20" Name 88 "r21" Name 102 "r30" Name 118 "r31" Name 133 "r32" Name 146 "r33" Name 188 "@entryPointOutput" Decorate 21(Matrix) Block MemberDecorate 21(Matrix) 0 RowMajor MemberDecorate 21(Matrix) 0 MatrixStride 16 MemberDecorate 21(Matrix) 0 Offset 0 MemberDecorate 21(Matrix) 1 RowMajor MemberDecorate 21(Matrix) 1 MatrixStride 16 MemberDecorate 21(Matrix) 1 Offset 64 MemberDecorate 21(Matrix) 2 RowMajor MemberDecorate 21(Matrix) 2 MatrixStride 16 MemberDecorate 21(Matrix) 2 Offset 112 MemberDecorate 21(Matrix) 3 RowMajor MemberDecorate 21(Matrix) 3 MatrixStride 16 MemberDecorate 21(Matrix) 3 Offset 176 MemberDecorate 21(Matrix) 4 RowMajor MemberDecorate 21(Matrix) 4 MatrixStride 16 MemberDecorate 21(Matrix) 4 Offset 224 MemberDecorate 21(Matrix) 5 RowMajor MemberDecorate 21(Matrix) 5 MatrixStride 16 MemberDecorate 21(Matrix) 5 Offset 288 MemberDecorate 21(Matrix) 6 Offset 320 MemberDecorate 21(Matrix) 7 Offset 336 MemberDecorate 21(Matrix) 8 Offset 352 Decorate 23 Binding 0 Decorate 23 DescriptorSet 0 Decorate 188(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 6(float) 13: TypeMatrix 7(fvec4) 4 14: TypeVector 6(float) 3 15: TypeMatrix 14(fvec3) 4 16: TypeMatrix 7(fvec4) 3 17: TypeMatrix 14(fvec3) 3 18: TypeMatrix 7(fvec4) 2 19: TypeVector 6(float) 2 20: TypeMatrix 19(fvec2) 4 21(Matrix): TypeStruct 13 15 16 17 18 20 7(fvec4) 14(fvec3) 19(fvec2) 22: TypePointer Uniform 21(Matrix) 23: 22(ptr) Variable Uniform 24: TypeInt 32 1 25: 24(int) Constant 8 26: TypePointer Uniform 19(fvec2) 29: 24(int) Constant 7 30: TypePointer Uniform 14(fvec3) 38: 24(int) Constant 6 39: TypePointer Uniform 7(fvec4) 48: TypePointer Function 7(fvec4) 50: 24(int) Constant 0 51: TypePointer Uniform 13 62: 24(int) Constant 2 63: TypePointer Uniform 16 95: 24(int) Constant 1 96: TypePointer Uniform 15 100: TypeMatrix 14(fvec3) 2 101: TypePointer Function 100 103: 24(int) Constant 3 104: TypePointer Uniform 17 107: 24(int) Constant 4 108: TypePointer Uniform 18 117: TypePointer Function 16 123: TypeMatrix 19(fvec2) 3 132: TypePointer Function 123 134: 24(int) Constant 5 135: TypePointer Uniform 20 145: TypePointer Function 15 168: TypeInt 32 0 169: 168(int) Constant 0 187: TypePointer Output 7(fvec4) 188(@entryPointOutput): 187(ptr) Variable Output 4(main): 2 Function None 3 5: Label 189: 7(fvec4) FunctionCall 9(@main() Store 188(@entryPointOutput) 189 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(r00): 11(ptr) Variable Function 37(r01): 11(ptr) Variable Function 49(r10): 48(ptr) Variable Function 61(r11): 48(ptr) Variable Function 73(r20): 48(ptr) Variable Function 88(r21): 48(ptr) Variable Function 102(r30): 101(ptr) Variable Function 118(r31): 117(ptr) Variable Function 133(r32): 132(ptr) Variable Function 146(r33): 145(ptr) Variable Function 27: 26(ptr) AccessChain 23 25 28: 19(fvec2) Load 27 31: 30(ptr) AccessChain 23 29 32: 14(fvec3) Load 31 33: 6(float) CompositeExtract 32 0 34: 6(float) CompositeExtract 32 1 35: 19(fvec2) CompositeConstruct 33 34 36: 6(float) Dot 28 35 Store 12(r00) 36 40: 39(ptr) AccessChain 23 38 41: 7(fvec4) Load 40 42: 6(float) CompositeExtract 41 0 43: 6(float) CompositeExtract 41 1 44: 19(fvec2) CompositeConstruct 42 43 45: 26(ptr) AccessChain 23 25 46: 19(fvec2) Load 45 47: 6(float) Dot 44 46 Store 37(r01) 47 52: 51(ptr) AccessChain 23 50 53: 13 Load 52 54: 7(fvec4) CompositeExtract 53 0 55: 7(fvec4) CompositeExtract 53 1 56: 7(fvec4) CompositeExtract 53 2 57: 16 CompositeConstruct 54 55 56 58: 30(ptr) AccessChain 23 29 59: 14(fvec3) Load 58 60: 7(fvec4) MatrixTimesVector 57 59 Store 49(r10) 60 64: 63(ptr) AccessChain 23 62 65: 16 Load 64 66: 39(ptr) AccessChain 23 38 67: 7(fvec4) Load 66 68: 6(float) CompositeExtract 67 0 69: 6(float) CompositeExtract 67 1 70: 6(float) CompositeExtract 67 2 71: 14(fvec3) CompositeConstruct 68 69 70 72: 7(fvec4) MatrixTimesVector 65 71 Store 61(r11) 72 74: 30(ptr) AccessChain 23 29 75: 14(fvec3) Load 74 76: 51(ptr) AccessChain 23 50 77: 13 Load 76 78: 7(fvec4) CompositeExtract 77 0 79: 14(fvec3) VectorShuffle 78 78 0 1 2 80: 7(fvec4) CompositeExtract 77 1 81: 14(fvec3) VectorShuffle 80 80 0 1 2 82: 7(fvec4) CompositeExtract 77 2 83: 14(fvec3) VectorShuffle 82 82 0 1 2 84: 7(fvec4) CompositeExtract 77 3 85: 14(fvec3) VectorShuffle 84 84 0 1 2 86: 15 CompositeConstruct 79 81 83 85 87: 7(fvec4) VectorTimesMatrix 75 86 Store 73(r20) 87 89: 39(ptr) AccessChain 23 38 90: 7(fvec4) Load 89 91: 6(float) CompositeExtract 90 0 92: 6(float) CompositeExtract 90 1 93: 6(float) CompositeExtract 90 2 94: 14(fvec3) CompositeConstruct 91 92 93 97: 96(ptr) AccessChain 23 95 98: 15 Load 97 99: 7(fvec4) VectorTimesMatrix 94 98 Store 88(r21) 99 105: 104(ptr) AccessChain 23 103 106: 17 Load 105 109: 108(ptr) AccessChain 23 107 110: 18 Load 109 111: 7(fvec4) CompositeExtract 110 0 112: 14(fvec3) VectorShuffle 111 111 0 1 2 113: 7(fvec4) CompositeExtract 110 1 114: 14(fvec3) VectorShuffle 113 113 0 1 2 115: 100 CompositeConstruct 112 114 116: 100 MatrixTimesMatrix 106 115 Store 102(r30) 116 119: 108(ptr) AccessChain 23 107 120: 18 Load 119 121: 104(ptr) AccessChain 23 103 122: 17 Load 121 124: 14(fvec3) CompositeExtract 122 0 125: 19(fvec2) VectorShuffle 124 124 0 1 126: 14(fvec3) CompositeExtract 122 1 127: 19(fvec2) VectorShuffle 126 126 0 1 128: 14(fvec3) CompositeExtract 122 2 129: 19(fvec2) VectorShuffle 128 128 0 1 130: 123 CompositeConstruct 125 127 129 131: 16 MatrixTimesMatrix 120 130 Store 118(r31) 131 136: 135(ptr) AccessChain 23 134 137: 20 Load 136 138: 19(fvec2) CompositeExtract 137 0 139: 19(fvec2) CompositeExtract 137 1 140: 19(fvec2) CompositeExtract 137 2 141: 123 CompositeConstruct 138 139 140 142: 104(ptr) AccessChain 23 103 143: 17 Load 142 144: 123 MatrixTimesMatrix 141 143 Store 133(r32) 144 147: 104(ptr) AccessChain 23 103 148: 17 Load 147 149: 14(fvec3) CompositeExtract 148 0 150: 14(fvec3) CompositeExtract 148 1 151: 100 CompositeConstruct 149 150 152: 135(ptr) AccessChain 23 134 153: 20 Load 152 154: 15 MatrixTimesMatrix 151 153 Store 146(r33) 154 155: 7(fvec4) Load 49(r10) 156: 7(fvec4) Load 61(r11) 157: 7(fvec4) FAdd 155 156 158: 7(fvec4) Load 73(r20) 159: 7(fvec4) FAdd 157 158 160: 7(fvec4) Load 88(r21) 161: 7(fvec4) FAdd 159 160 162: 6(float) Load 12(r00) 163: 7(fvec4) CompositeConstruct 162 162 162 162 164: 7(fvec4) FAdd 161 163 165: 6(float) Load 37(r01) 166: 7(fvec4) CompositeConstruct 165 165 165 165 167: 7(fvec4) FAdd 164 166 170: 11(ptr) AccessChain 102(r30) 50 169 171: 6(float) Load 170 172: 7(fvec4) CompositeConstruct 171 171 171 171 173: 7(fvec4) FAdd 167 172 174: 48(ptr) AccessChain 118(r31) 50 175: 7(fvec4) Load 174 176: 7(fvec4) FAdd 173 175 177: 11(ptr) AccessChain 133(r32) 50 169 178: 6(float) Load 177 179: 7(fvec4) CompositeConstruct 178 178 178 178 180: 7(fvec4) FAdd 176 179 181: 15 Load 146(r33) 182: 16 Transpose 181 183: 7(fvec4) CompositeExtract 182 0 184: 7(fvec4) FAdd 180 183 ReturnValue 184 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.multiDescriptorSet.frag.out000066400000000000000000000216011506534232700247240ustar00rootroot00000000000000hlsl.multiDescriptorSet.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 92 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 78 82 86 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "PS_INPUT" MemberName 9(PS_INPUT) 0 "Pos" MemberName 9(PS_INPUT) 1 "Tex" Name 13 "@main(struct-PS_INPUT-vf4-vf21;" Name 12 "input" Name 15 "output" Name 23 "cbChangesEveryFrame" MemberName 23(cbChangesEveryFrame) 0 "World" MemberName 23(cbChangesEveryFrame) 1 "vMeshColor" Name 25 "" Name 34 "cbNeverChanges" MemberName 34(cbNeverChanges) 0 "View" Name 36 "" Name 43 "cbChangeOnResize" MemberName 43(cbChangeOnResize) 0 "Projection" Name 45 "" Name 59 "txDiffuseA" Name 63 "samLinearA" Name 76 "input" Name 78 "input.Pos" Name 82 "input.Tex" Name 86 "@entryPointOutput" Name 87 "param" Name 90 "txDiffuseB" Name 91 "samLinearB" Decorate 23(cbChangesEveryFrame) Block MemberDecorate 23(cbChangesEveryFrame) 0 RowMajor MemberDecorate 23(cbChangesEveryFrame) 0 MatrixStride 16 MemberDecorate 23(cbChangesEveryFrame) 0 Offset 0 MemberDecorate 23(cbChangesEveryFrame) 1 Offset 64 Decorate 25 Binding 2 Decorate 25 DescriptorSet 2 Decorate 34(cbNeverChanges) Block MemberDecorate 34(cbNeverChanges) 0 RowMajor MemberDecorate 34(cbNeverChanges) 0 MatrixStride 16 MemberDecorate 34(cbNeverChanges) 0 Offset 0 Decorate 36 Binding 0 Decorate 36 DescriptorSet 2 Decorate 43(cbChangeOnResize) Block MemberDecorate 43(cbChangeOnResize) 0 RowMajor MemberDecorate 43(cbChangeOnResize) 0 MatrixStride 16 MemberDecorate 43(cbChangeOnResize) 0 Offset 0 Decorate 45 Binding 1 Decorate 45 DescriptorSet 2 Decorate 59(txDiffuseA) Binding 0 Decorate 59(txDiffuseA) DescriptorSet 0 Decorate 63(samLinearA) Binding 1 Decorate 63(samLinearA) DescriptorSet 0 Decorate 78(input.Pos) BuiltIn FragCoord Decorate 82(input.Tex) Location 0 Decorate 86(@entryPointOutput) Location 0 Decorate 90(txDiffuseB) Binding 0 Decorate 90(txDiffuseB) DescriptorSet 1 Decorate 91(samLinearB) Binding 1 Decorate 91(samLinearB) DescriptorSet 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 2 9(PS_INPUT): TypeStruct 7(fvec4) 8(fvec2) 10: TypePointer Function 9(PS_INPUT) 11: TypeFunction 7(fvec4) 10(ptr) 16: 6(float) Constant 0 17: 7(fvec4) ConstantComposite 16 16 16 16 18: 8(fvec2) ConstantComposite 16 16 19: 9(PS_INPUT) ConstantComposite 17 18 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypeMatrix 7(fvec4) 4 23(cbChangesEveryFrame): TypeStruct 22 7(fvec4) 24: TypePointer Uniform 23(cbChangesEveryFrame) 25: 24(ptr) Variable Uniform 26: TypePointer Uniform 22 29: TypePointer Function 7(fvec4) 34(cbNeverChanges): TypeStruct 22 35: TypePointer Uniform 34(cbNeverChanges) 36: 35(ptr) Variable Uniform 43(cbChangeOnResize): TypeStruct 22 44: TypePointer Uniform 43(cbChangeOnResize) 45: 44(ptr) Variable Uniform 52: 20(int) Constant 1 53: TypePointer Function 8(fvec2) 57: TypeImage 6(float) 2D sampled format:Unknown 58: TypePointer UniformConstant 57 59(txDiffuseA): 58(ptr) Variable UniformConstant 61: TypeSampler 62: TypePointer UniformConstant 61 63(samLinearA): 62(ptr) Variable UniformConstant 65: TypeSampledImage 57 70: TypePointer Uniform 7(fvec4) 77: TypePointer Input 7(fvec4) 78(input.Pos): 77(ptr) Variable Input 81: TypePointer Input 8(fvec2) 82(input.Tex): 81(ptr) Variable Input 85: TypePointer Output 7(fvec4) 86(@entryPointOutput): 85(ptr) Variable Output 90(txDiffuseB): 58(ptr) Variable UniformConstant 91(samLinearB): 62(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 76(input): 10(ptr) Variable Function 87(param): 10(ptr) Variable Function 79: 7(fvec4) Load 78(input.Pos) 80: 29(ptr) AccessChain 76(input) 21 Store 80 79 83: 8(fvec2) Load 82(input.Tex) 84: 53(ptr) AccessChain 76(input) 52 Store 84 83 88: 9(PS_INPUT) Load 76(input) Store 87(param) 88 89: 7(fvec4) FunctionCall 13(@main(struct-PS_INPUT-vf4-vf21;) 87(param) Store 86(@entryPointOutput) 89 Return FunctionEnd 13(@main(struct-PS_INPUT-vf4-vf21;): 7(fvec4) Function None 11 12(input): 10(ptr) FunctionParameter 14: Label 15(output): 10(ptr) Variable Function Store 15(output) 19 27: 26(ptr) AccessChain 25 21 28: 22 Load 27 30: 29(ptr) AccessChain 12(input) 21 31: 7(fvec4) Load 30 32: 7(fvec4) MatrixTimesVector 28 31 33: 29(ptr) AccessChain 15(output) 21 Store 33 32 37: 26(ptr) AccessChain 36 21 38: 22 Load 37 39: 29(ptr) AccessChain 15(output) 21 40: 7(fvec4) Load 39 41: 7(fvec4) MatrixTimesVector 38 40 42: 29(ptr) AccessChain 15(output) 21 Store 42 41 46: 26(ptr) AccessChain 45 21 47: 22 Load 46 48: 29(ptr) AccessChain 15(output) 21 49: 7(fvec4) Load 48 50: 7(fvec4) MatrixTimesVector 47 49 51: 29(ptr) AccessChain 15(output) 21 Store 51 50 54: 53(ptr) AccessChain 12(input) 52 55: 8(fvec2) Load 54 56: 53(ptr) AccessChain 15(output) 52 Store 56 55 60: 57 Load 59(txDiffuseA) 64: 61 Load 63(samLinearA) 66: 65 SampledImage 60 64 67: 53(ptr) AccessChain 15(output) 52 68: 8(fvec2) Load 67 69: 7(fvec4) ImageSampleImplicitLod 66 68 71: 70(ptr) AccessChain 25 52 72: 7(fvec4) Load 71 73: 7(fvec4) FMul 69 72 ReturnValue 73 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.multiEntry.vert.out000066400000000000000000000144171506534232700233030ustar00rootroot00000000000000hlsl.multiEntry.vert Shader version: 500 0:? Sequence 0:4 Function Definition: FakeEntrypoint(u1; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'Index' ( in uint) 0:? Sequence 0:5 Branch: Return with expression 0:5 textureFetch ( temp 4-component vector of float) 0:5 'Position' (layout( rgba32f) uniform textureBuffer) 0:5 Convert uint to int ( temp int) 0:5 'Index' ( in uint) 0:9 Function Definition: @RealEntrypoint(u1; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 'Index' ( in uint) 0:? Sequence 0:10 Branch: Return with expression 0:10 Function Call: FakeEntrypoint(u1; ( temp 4-component vector of float) 0:10 'Index' ( in uint) 0:9 Function Definition: RealEntrypoint( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp uint) 0:? 'Index' ( temp uint) 0:? 'Index' ( in uint VertexIndex) 0:9 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:9 Function Call: @RealEntrypoint(u1; ( temp 4-component vector of float) 0:? 'Index' ( temp uint) 0:? Linker Objects 0:? 'Position' (layout( rgba32f) uniform textureBuffer) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:? 'Index' ( in uint VertexIndex) Linked vertex stage: Shader version: 500 0:? Sequence 0:4 Function Definition: FakeEntrypoint(u1; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'Index' ( in uint) 0:? Sequence 0:5 Branch: Return with expression 0:5 textureFetch ( temp 4-component vector of float) 0:5 'Position' (layout( rgba32f) uniform textureBuffer) 0:5 Convert uint to int ( temp int) 0:5 'Index' ( in uint) 0:9 Function Definition: @RealEntrypoint(u1; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 'Index' ( in uint) 0:? Sequence 0:10 Branch: Return with expression 0:10 Function Call: FakeEntrypoint(u1; ( temp 4-component vector of float) 0:10 'Index' ( in uint) 0:9 Function Definition: RealEntrypoint( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp uint) 0:? 'Index' ( temp uint) 0:? 'Index' ( in uint VertexIndex) 0:9 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:9 Function Call: @RealEntrypoint(u1; ( temp 4-component vector of float) 0:? 'Index' ( temp uint) 0:? Linker Objects 0:? 'Position' (layout( rgba32f) uniform textureBuffer) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:? 'Index' ( in uint VertexIndex) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 41 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "RealEntrypoint" 34 37 Source HLSL 500 Name 4 "RealEntrypoint" Name 12 "FakeEntrypoint(u1;" Name 11 "Index" Name 15 "@RealEntrypoint(u1;" Name 14 "Index" Name 19 "Position" Name 27 "param" Name 32 "Index" Name 34 "Index" Name 37 "@entryPointOutput" Name 38 "param" Decorate 19(Position) Binding 0 Decorate 19(Position) DescriptorSet 0 Decorate 34(Index) BuiltIn VertexIndex Decorate 37(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 17: TypeImage 8(float) Buffer sampled format:Rgba32f 18: TypePointer UniformConstant 17 19(Position): 18(ptr) Variable UniformConstant 22: TypeInt 32 1 33: TypePointer Input 6(int) 34(Index): 33(ptr) Variable Input 36: TypePointer Output 9(fvec4) 37(@entryPointOutput): 36(ptr) Variable Output 4(RealEntrypoint): 2 Function None 3 5: Label 32(Index): 7(ptr) Variable Function 38(param): 7(ptr) Variable Function 35: 6(int) Load 34(Index) Store 32(Index) 35 39: 6(int) Load 32(Index) Store 38(param) 39 40: 9(fvec4) FunctionCall 15(@RealEntrypoint(u1;) 38(param) Store 37(@entryPointOutput) 40 Return FunctionEnd 12(FakeEntrypoint(u1;): 9(fvec4) Function None 10 11(Index): 7(ptr) FunctionParameter 13: Label 20: 17 Load 19(Position) 21: 6(int) Load 11(Index) 23: 22(int) Bitcast 21 24: 9(fvec4) ImageFetch 20 23 ReturnValue 24 FunctionEnd 15(@RealEntrypoint(u1;): 9(fvec4) Function None 10 14(Index): 7(ptr) FunctionParameter 16: Label 27(param): 7(ptr) Variable Function 28: 6(int) Load 14(Index) Store 27(param) 28 29: 9(fvec4) FunctionCall 12(FakeEntrypoint(u1;) 27(param) ReturnValue 29 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.multiReturn.frag.out000066400000000000000000000145041506534232700234150ustar00rootroot00000000000000hlsl.multiReturn.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: foo( ( temp structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) 0:12 Function Parameters: 0:? Sequence 0:13 Branch: Return with expression 0:13 s: direct index for structure (layout( row_major std140) uniform structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) 0:13 '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}) 0:13 Constant: 0:13 0 (const uint) 0:17 Function Definition: @main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:18 Function Call: foo( ( temp structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 Function Call: @main( ( temp void) 0:? Linker Objects 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}) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: foo( ( temp structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) 0:12 Function Parameters: 0:? Sequence 0:13 Branch: Return with expression 0:13 s: direct index for structure (layout( row_major std140) uniform structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) 0:13 '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}) 0:13 Constant: 0:13 0 (const uint) 0:17 Function Definition: @main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:18 Function Call: foo( ( temp structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 Function Call: @main( ( temp void) 0:? Linker Objects 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): 8000b // Id's are bound by 42 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "S" MemberName 9(S) 0 "f" MemberName 9(S) 1 "v" MemberName 9(S) 2 "m" Name 11 "foo(" Name 13 "@main(" Name 15 "S" MemberName 15(S) 0 "f" MemberName 15(S) 1 "v" MemberName 15(S) 2 "m" Name 16 "bufName" MemberName 16(bufName) 0 "s" Name 18 "" MemberDecorate 15(S) 0 Offset 0 MemberDecorate 15(S) 1 Offset 4 MemberDecorate 15(S) 2 RowMajor MemberDecorate 15(S) 2 MatrixStride 16 MemberDecorate 15(S) 2 Offset 16 Decorate 16(bufName) Block MemberDecorate 16(bufName) 0 Offset 0 Decorate 18 Binding 0 Decorate 18 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeMatrix 7(fvec3) 3 9(S): TypeStruct 6(float) 7(fvec3) 8 10: TypeFunction 9(S) 15(S): TypeStruct 6(float) 7(fvec3) 8 16(bufName): TypeStruct 15(S) 17: TypePointer Uniform 16(bufName) 18: 17(ptr) Variable Uniform 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypePointer Uniform 15(S) 24: TypePointer Function 9(S) 27: TypePointer Function 6(float) 30: 19(int) Constant 1 31: TypePointer Function 7(fvec3) 34: 19(int) Constant 2 35: TypePointer Function 8 4(main): 2 Function None 3 5: Label 41: 2 FunctionCall 13(@main() Return FunctionEnd 11(foo(): 9(S) Function None 10 12: Label 25: 24(ptr) Variable Function 22: 21(ptr) AccessChain 18 20 23: 15(S) Load 22 26: 6(float) CompositeExtract 23 0 28: 27(ptr) AccessChain 25 20 Store 28 26 29: 7(fvec3) CompositeExtract 23 1 32: 31(ptr) AccessChain 25 30 Store 32 29 33: 8 CompositeExtract 23 2 36: 35(ptr) AccessChain 25 34 Store 36 33 37: 9(S) Load 25 ReturnValue 37 FunctionEnd 13(@main(): 2 Function None 3 14: Label 40: 9(S) FunctionCall 11(foo() Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.multiView.frag.out000066400000000000000000000117521506534232700230520ustar00rootroot00000000000000hlsl.multiView.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @main(u1; ( temp 4-component vector of float) 0:3 Function Parameters: 0:3 'ViewIndex' ( in uint) 0:? Sequence 0:4 Branch: Return with expression 0:4 Construct vec4 ( temp 4-component vector of float) 0:4 Convert uint to float ( temp float) 0:4 'ViewIndex' ( in uint) 0:4 Constant: 0:4 0.000000 0:4 Constant: 0:4 0.000000 0:4 Constant: 0:4 0.000000 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp uint) 0:? 'ViewIndex' ( temp uint) 0:? 'ViewIndex' ( flat in uint ViewIndex) 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:3 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'ViewIndex' ( temp uint) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'ViewIndex' ( flat in uint ViewIndex) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @main(u1; ( temp 4-component vector of float) 0:3 Function Parameters: 0:3 'ViewIndex' ( in uint) 0:? Sequence 0:4 Branch: Return with expression 0:4 Construct vec4 ( temp 4-component vector of float) 0:4 Convert uint to float ( temp float) 0:4 'ViewIndex' ( in uint) 0:4 Constant: 0:4 0.000000 0:4 Constant: 0:4 0.000000 0:4 Constant: 0:4 0.000000 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp uint) 0:? 'ViewIndex' ( temp uint) 0:? 'ViewIndex' ( flat in uint ViewIndex) 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:3 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'ViewIndex' ( temp uint) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'ViewIndex' ( flat in uint ViewIndex) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability MultiView Extension "SPV_KHR_multiview" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 22 25 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "ViewIndex" Name 20 "ViewIndex" Name 22 "ViewIndex" Name 25 "@entryPointOutput" Name 26 "param" Decorate 22(ViewIndex) BuiltIn ViewIndex Decorate 22(ViewIndex) Flat Decorate 25(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 16: 8(float) Constant 0 21: TypePointer Input 6(int) 22(ViewIndex): 21(ptr) Variable Input 24: TypePointer Output 9(fvec4) 25(@entryPointOutput): 24(ptr) Variable Output 4(main): 2 Function None 3 5: Label 20(ViewIndex): 7(ptr) Variable Function 26(param): 7(ptr) Variable Function 23: 6(int) Load 22(ViewIndex) Store 20(ViewIndex) 23 27: 6(int) Load 20(ViewIndex) Store 26(param) 27 28: 9(fvec4) FunctionCall 12(@main(u1;) 26(param) Store 25(@entryPointOutput) 28 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(ViewIndex): 7(ptr) FunctionParameter 13: Label 14: 6(int) Load 11(ViewIndex) 15: 8(float) ConvertUToF 14 17: 9(fvec4) CompositeConstruct 15 16 16 16 ReturnValue 17 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.namespace.frag.out000066400000000000000000000174411506534232700230220ustar00rootroot00000000000000hlsl.namespace.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: N1::getVec( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:5 Branch: Return with expression 0:5 'v1' ( global 4-component vector of float) 0:10 Function Definition: N2::getVec( ( temp 4-component vector of float) 0:10 Function Parameters: 0:? Sequence 0:10 Branch: Return with expression 0:10 'v2' ( global 4-component vector of float) 0:12 Function Definition: N2::N3::getVec( ( temp 4-component vector of float) 0:12 Function Parameters: 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( ( global 4-component vector of float) 0:15 Function Parameters: 0:? Sequence 0:15 Branch: Return with expression 0:15 'v2' ( global 4-component vector of float) 0:21 Function Definition: @main( ( temp 4-component vector of float) 0:21 Function Parameters: 0:? Sequence 0:22 Branch: Return with expression 0:22 add ( temp 4-component vector of float) 0:22 add ( temp 4-component vector of float) 0:22 add ( temp 4-component vector of float) 0:22 Function Call: N1::getVec( ( temp 4-component vector of float) 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( ( global 4-component vector of float) 0:22 'N2::gf' ( global float) 0:21 Function Definition: main( ( temp void) 0:21 Function Parameters: 0:? Sequence 0:21 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:21 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'v1' ( global 4-component vector of float) 0:? 'v2' ( global 4-component vector of float) 0:? 'N2::gf' ( global float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: N1::getVec( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:5 Branch: Return with expression 0:5 'v1' ( global 4-component vector of float) 0:10 Function Definition: N2::getVec( ( temp 4-component vector of float) 0:10 Function Parameters: 0:? Sequence 0:10 Branch: Return with expression 0:10 'v2' ( global 4-component vector of float) 0:12 Function Definition: N2::N3::getVec( ( temp 4-component vector of float) 0:12 Function Parameters: 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( ( global 4-component vector of float) 0:15 Function Parameters: 0:? Sequence 0:15 Branch: Return with expression 0:15 'v2' ( global 4-component vector of float) 0:21 Function Definition: @main( ( temp 4-component vector of float) 0:21 Function Parameters: 0:? Sequence 0:22 Branch: Return with expression 0:22 add ( temp 4-component vector of float) 0:22 add ( temp 4-component vector of float) 0:22 add ( temp 4-component vector of float) 0:22 Function Call: N1::getVec( ( temp 4-component vector of float) 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( ( global 4-component vector of float) 0:22 'N2::gf' ( global float) 0:21 Function Definition: main( ( temp void) 0:21 Function Parameters: 0:? Sequence 0:21 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:21 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'v1' ( global 4-component vector of float) 0:? 'v2' ( global 4-component vector of float) 0:? 'N2::gf' ( global float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // 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" 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 "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) 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 49: 7(fvec4) FunctionCall 17(@main() Store 48(@entryPointOutput) 49 Return FunctionEnd 9(N1::getVec(): 7(fvec4) Function None 8 10: Label 21: 7(fvec4) Load 20(v1) ReturnValue 21 FunctionEnd 11(N2::getVec(): 7(fvec4) Function None 8 12: Label 25: 7(fvec4) Load 24(v2) ReturnValue 25 FunctionEnd 13(N2::N3::getVec(): 7(fvec4) Function None 8 14: Label 28: 7(fvec4) Load 24(v2) ReturnValue 28 FunctionEnd 15(N2::N3::C1::getVec(): 7(fvec4) Function None 8 16: Label 31: 7(fvec4) Load 24(v2) ReturnValue 31 FunctionEnd 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 glslang-16.0.0/Test/baseResults/hlsl.nested-runtimeArray.frag.out000066400000000000000000000132011506534232700250160ustar00rootroot00000000000000hlsl.nested-runtimeArray.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main( ( temp float) 0:7 Function Parameters: 0:? Sequence 0:8 Branch: Return with expression 0:8 direct index ( temp float) 0:8 a: direct index for structure ( temp unsized 1-element array of float) 0:8 direct index (layout( row_major std430) buffer structure{ temp unsized 1-element array of float a}) 0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a}) 0:8 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data}) 0:8 Constant: 0:8 0 (const uint) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:7 Function Call: @main( ( temp float) 0:? Linker Objects 0:? 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data}) 0:? '@entryPointOutput' (layout( location=0) out float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main( ( temp float) 0:7 Function Parameters: 0:? Sequence 0:8 Branch: Return with expression 0:8 direct index ( temp float) 0:8 a: direct index for structure ( temp unsized 1-element array of float) 0:8 direct index (layout( row_major std430) buffer structure{ temp unsized 1-element array of float a}) 0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a}) 0:8 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data}) 0:8 Constant: 0:8 0 (const uint) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:7 Function Call: @main( ( temp float) 0:? Linker Objects 0:? 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data}) 0:? '@entryPointOutput' (layout( location=0) out float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 24 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "@main(" Name 11 "A" MemberName 11(A) 0 "a" Name 13 "B" MemberName 13(B) 0 "@data" Name 15 "B" Name 24 "@entryPointOutput" Decorate 10 ArrayStride 4 Decorate 11(A) BufferBlock MemberDecorate 11(A) 0 Offset 0 Decorate 12 ArrayStride 4 Decorate 13(B) BufferBlock MemberDecorate 13(B) 0 Offset 0 Decorate 15(B) Binding 0 Decorate 15(B) DescriptorSet 0 Decorate 24(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypeRuntimeArray 6(float) 11(A): TypeStruct 10 12: TypeRuntimeArray 11(A) 13(B): TypeStruct 12 14: TypePointer Uniform 13(B) 15(B): 14(ptr) Variable Uniform 16: TypeInt 32 1 17: 16(int) Constant 0 18: TypePointer Uniform 6(float) 23: TypePointer Output 6(float) 24(@entryPointOutput): 23(ptr) Variable Output 4(main): 2 Function None 3 5: Label 25: 6(float) FunctionCall 8(@main() Store 24(@entryPointOutput) 25 Return FunctionEnd 8(@main(): 6(float) Function None 7 9: Label 19: 18(ptr) AccessChain 15(B) 17 17 17 17 20: 6(float) Load 19 ReturnValue 20 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.noSemantic.functionality1.comp.out000066400000000000000000000061441506534232700261530ustar00rootroot00000000000000hlsl.noSemantic.functionality1.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader Extension "SPV_GOOGLE_hlsl_functionality1" 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 11 "Buf" MemberName 11(Buf) 0 "@data" Name 13 "Buf" Name 17 "Buf@count" MemberName 17(Buf@count) 0 "@count" Name 19 "Buf@count" Decorate 10 ArrayStride 16 Decorate 11(Buf) BufferBlock MemberDecorate 11(Buf) 0 Offset 0 Decorate 13(Buf) Binding 0 Decorate 13(Buf) DescriptorSet 0 DecorateId 13(Buf) DecorationHlslCounterBufferGOOGLE 19(Buf@count) Decorate 17(Buf@count) BufferBlock MemberDecorate 17(Buf@count) 0 Offset 0 Decorate 19(Buf@count) Binding 0 Decorate 19(Buf@count) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeRuntimeArray 9(fvec4) 11(Buf): TypeStruct 10 12: TypePointer Uniform 11(Buf) 13(Buf): 12(ptr) Variable Uniform 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypeInt 32 0 17(Buf@count): TypeStruct 16(int) 18: TypePointer Uniform 17(Buf@count) 19(Buf@count): 18(ptr) Variable Uniform 20: TypePointer Uniform 16(int) 22: 16(int) Constant 1 23: 16(int) Constant 0 25: 8(float) Constant 1065353216 26: 9(fvec4) ConstantComposite 25 25 25 25 27: TypePointer Uniform 9(fvec4) 4(main): 2 Function None 3 5: Label 29: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label 21: 20(ptr) AccessChain 19(Buf@count) 15 24: 16(int) AtomicIAdd 21 22 23 22 28: 27(ptr) AccessChain 13(Buf) 15 24 Store 28 26 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.nonint-index.frag.out000066400000000000000000000133671506534232700235030ustar00rootroot00000000000000hlsl.nonint-index.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main(f1; ( temp float) 0:4 Function Parameters: 0:4 'input' ( in float) 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp float) 0:7 add ( temp float) 0:7 add ( temp float) 0:7 indirect index ( temp float) 0:7 Constant: 0:7 1.000000 0:7 2.000000 0:7 3.000000 0:7 Convert float to uint ( temp uint) 0:7 'input' ( in float) 0:7 Constant: 0:7 3.000000 0:7 Constant: 0:7 2.000000 0:7 Constant: 0:7 1.000000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'input' ( temp float) 0:? 'input' (layout( location=0) in float) 0:4 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:4 Function Call: @main(f1; ( temp float) 0:? 'input' ( temp float) 0:? Linker Objects 0:? 'array' ( const 3-element array of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? '@entryPointOutput' (layout( location=0) out float) 0:? 'input' (layout( location=0) in float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main(f1; ( temp float) 0:4 Function Parameters: 0:4 'input' ( in float) 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp float) 0:7 add ( temp float) 0:7 add ( temp float) 0:7 indirect index ( temp float) 0:7 Constant: 0:7 1.000000 0:7 2.000000 0:7 3.000000 0:7 Convert float to uint ( temp uint) 0:7 'input' ( in float) 0:7 Constant: 0:7 3.000000 0:7 Constant: 0:7 2.000000 0:7 Constant: 0:7 1.000000 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'input' ( temp float) 0:? 'input' (layout( location=0) in float) 0:4 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:4 Function Call: @main(f1; ( temp float) 0:? 'input' ( temp float) 0:? Linker Objects 0:? 'array' ( const 3-element array of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? '@entryPointOutput' (layout( location=0) out float) 0:? 'input' (layout( location=0) in float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 32 35 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 10 "@main(f1;" Name 9 "input" Name 22 "indexable" Name 30 "input" Name 32 "input" Name 35 "@entryPointOutput" Name 36 "param" Decorate 32(input) Location 0 Decorate 35(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 12: TypeInt 32 0 13: 12(int) Constant 3 14: TypeArray 6(float) 13 15: 6(float) Constant 1065353216 16: 6(float) Constant 1073741824 17: 6(float) Constant 1077936128 18: 14 ConstantComposite 15 16 17 21: TypePointer Function 14 31: TypePointer Input 6(float) 32(input): 31(ptr) Variable Input 34: TypePointer Output 6(float) 35(@entryPointOutput): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label 30(input): 7(ptr) Variable Function 36(param): 7(ptr) Variable Function 33: 6(float) Load 32(input) Store 30(input) 33 37: 6(float) Load 30(input) Store 36(param) 37 38: 6(float) FunctionCall 10(@main(f1;) 36(param) Store 35(@entryPointOutput) 38 Return FunctionEnd 10(@main(f1;): 6(float) Function None 8 9(input): 7(ptr) FunctionParameter 11: Label 22(indexable): 21(ptr) Variable Function 19: 6(float) Load 9(input) 20: 12(int) ConvertFToU 19 Store 22(indexable) 18 23: 7(ptr) AccessChain 22(indexable) 20 24: 6(float) Load 23 25: 6(float) FAdd 24 17 26: 6(float) FAdd 25 16 27: 6(float) FAdd 26 15 ReturnValue 27 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out000066400000000000000000000500341506534232700257210ustar00rootroot00000000000000hlsl.nonstaticMemberFunction.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 2-component vector of float) 0:1 'i' ( global 2-component vector of float) 0:1 Constant: 0:1 1.000000 0:1 2.000000 0:5 Function Definition: type1::setmem(vf4; ( temp void) 0:5 Function Parameters: 0:5 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:5 'm' ( in 4-component vector of float) 0:? Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 memVar: direct index for structure ( temp 4-component vector of float) 0:5 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:5 Constant: 0:5 0 (const uint) 0:5 'm' ( in 4-component vector of float) 0:6 Function Definition: type1::seti(i1; ( temp void) 0:6 Function Parameters: 0:6 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:6 'si' ( in int) 0:? Sequence 0:6 move second child to first child ( temp int) 0:6 i: direct index for structure ( temp int) 0:6 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:6 Constant: 0:6 1 (const uint) 0:6 'si' ( in int) 0:9 Function Definition: type1::memFun(vf4; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:9 'a' ( in 4-component vector of float) 0:? Sequence 0:10 Branch: Return with expression 0:10 add ( temp 4-component vector of float) 0:10 vector-scale ( temp 4-component vector of float) 0:10 Convert int to float ( temp float) 0:10 i: direct index for structure ( temp int) 0:10 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:10 Constant: 0:10 1 (const uint) 0:10 'a' ( in 4-component vector of float) 0:10 memVar: direct index for structure ( temp 4-component vector of float) 0:10 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:10 Constant: 0:10 0 (const uint) 0:13 Function Definition: type1::memFun(i1; ( temp int) 0:13 Function Parameters: 0:13 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:13 'a' ( in int) 0:? Sequence 0:14 Branch: Return with expression 0:14 Convert float to int ( temp int) 0:14 subtract ( temp float) 0:14 Convert int to float ( temp float) 0:14 add ( temp int) 0:14 i: direct index for structure ( temp int) 0:14 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:14 Constant: 0:14 1 (const uint) 0:14 'a' ( in int) 0:14 direct index ( temp float) 0:14 memVar: direct index for structure ( temp 4-component vector of float) 0:14 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:14 Constant: 0:14 0 (const uint) 0:14 Constant: 0:14 2 (const int) 0:19 Sequence 0:19 move second child to first child ( temp 2-component vector of float) 0:19 'j' ( global 2-component vector of float) 0:19 'i' ( global 2-component vector of float) 0:23 Function Definition: type2::memFun( ( temp 2-component vector of float) 0:23 Function Parameters: 0:23 '@this' ( temp structure{}) 0:? Sequence 0:23 Branch: Return with expression 0:23 'i' ( global 2-component vector of float) 0:27 Function Definition: @main( ( temp 4-component vector of float) 0:27 Function Parameters: 0:? Sequence 0:29 Function Call: type1::setmem(vf4; ( temp void) 0:29 'test' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:29 Constant: 0:29 2.000000 0:29 2.000000 0:29 2.000000 0:29 2.000000 0:30 Function Call: type1::seti(i1; ( temp void) 0:30 'test' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:30 Constant: 0:30 17 (const int) 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'f4' ( temp 4-component vector of float) 0:31 Constant: 0:31 1.000000 0:31 1.000000 0:31 1.000000 0:31 1.000000 0:32 add second child into first child ( temp 4-component vector of float) 0:32 'f4' ( temp 4-component vector of float) 0:32 Function Call: type1::memFun(vf4; ( temp 4-component vector of float) 0:32 'test' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:32 Constant: 0:32 5.000000 0:32 5.000000 0:32 5.000000 0:32 5.000000 0:33 add second child into first child ( temp 4-component vector of float) 0:33 'f4' ( temp 4-component vector of float) 0:33 Convert int to float ( temp float) 0:33 Function Call: type1::memFun(i1; ( temp int) 0:33 'test' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:33 Constant: 0:33 7 (const int) 0:34 Branch: Return with expression 0:34 'f4' ( temp 4-component vector of float) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:27 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'i' ( global 2-component vector of float) 0:? 'j' ( global 2-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 2-component vector of float) 0:1 'i' ( global 2-component vector of float) 0:1 Constant: 0:1 1.000000 0:1 2.000000 0:5 Function Definition: type1::setmem(vf4; ( temp void) 0:5 Function Parameters: 0:5 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:5 'm' ( in 4-component vector of float) 0:? Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 memVar: direct index for structure ( temp 4-component vector of float) 0:5 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:5 Constant: 0:5 0 (const uint) 0:5 'm' ( in 4-component vector of float) 0:6 Function Definition: type1::seti(i1; ( temp void) 0:6 Function Parameters: 0:6 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:6 'si' ( in int) 0:? Sequence 0:6 move second child to first child ( temp int) 0:6 i: direct index for structure ( temp int) 0:6 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:6 Constant: 0:6 1 (const uint) 0:6 'si' ( in int) 0:9 Function Definition: type1::memFun(vf4; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:9 'a' ( in 4-component vector of float) 0:? Sequence 0:10 Branch: Return with expression 0:10 add ( temp 4-component vector of float) 0:10 vector-scale ( temp 4-component vector of float) 0:10 Convert int to float ( temp float) 0:10 i: direct index for structure ( temp int) 0:10 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:10 Constant: 0:10 1 (const uint) 0:10 'a' ( in 4-component vector of float) 0:10 memVar: direct index for structure ( temp 4-component vector of float) 0:10 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:10 Constant: 0:10 0 (const uint) 0:13 Function Definition: type1::memFun(i1; ( temp int) 0:13 Function Parameters: 0:13 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:13 'a' ( in int) 0:? Sequence 0:14 Branch: Return with expression 0:14 Convert float to int ( temp int) 0:14 subtract ( temp float) 0:14 Convert int to float ( temp float) 0:14 add ( temp int) 0:14 i: direct index for structure ( temp int) 0:14 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:14 Constant: 0:14 1 (const uint) 0:14 'a' ( in int) 0:14 direct index ( temp float) 0:14 memVar: direct index for structure ( temp 4-component vector of float) 0:14 '@this' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:14 Constant: 0:14 0 (const uint) 0:14 Constant: 0:14 2 (const int) 0:19 Sequence 0:19 move second child to first child ( temp 2-component vector of float) 0:19 'j' ( global 2-component vector of float) 0:19 'i' ( global 2-component vector of float) 0:23 Function Definition: type2::memFun( ( temp 2-component vector of float) 0:23 Function Parameters: 0:23 '@this' ( temp structure{}) 0:? Sequence 0:23 Branch: Return with expression 0:23 'i' ( global 2-component vector of float) 0:27 Function Definition: @main( ( temp 4-component vector of float) 0:27 Function Parameters: 0:? Sequence 0:29 Function Call: type1::setmem(vf4; ( temp void) 0:29 'test' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:29 Constant: 0:29 2.000000 0:29 2.000000 0:29 2.000000 0:29 2.000000 0:30 Function Call: type1::seti(i1; ( temp void) 0:30 'test' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:30 Constant: 0:30 17 (const int) 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'f4' ( temp 4-component vector of float) 0:31 Constant: 0:31 1.000000 0:31 1.000000 0:31 1.000000 0:31 1.000000 0:32 add second child into first child ( temp 4-component vector of float) 0:32 'f4' ( temp 4-component vector of float) 0:32 Function Call: type1::memFun(vf4; ( temp 4-component vector of float) 0:32 'test' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:32 Constant: 0:32 5.000000 0:32 5.000000 0:32 5.000000 0:32 5.000000 0:33 add second child into first child ( temp 4-component vector of float) 0:33 'f4' ( temp 4-component vector of float) 0:33 Convert int to float ( temp float) 0:33 Function Call: type1::memFun(i1; ( temp int) 0:33 'test' ( temp structure{ temp 4-component vector of float memVar, temp int i}) 0:33 Constant: 0:33 7 (const int) 0:34 Branch: Return with expression 0:34 'f4' ( temp 4-component vector of float) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:27 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'i' ( global 2-component vector of float) 0:? 'j' ( global 2-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 111 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 109 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "type1" MemberName 9(type1) 0 "memVar" MemberName 9(type1) 1 "i" Name 15 "type1::setmem(vf4;" Name 13 "@this" Name 14 "m" Name 21 "type1::seti(i1;" Name 19 "@this" Name 20 "si" Name 26 "type1::memFun(vf4;" Name 24 "@this" Name 25 "a" Name 31 "type1::memFun(i1;" Name 29 "@this" Name 30 "a" Name 33 "type2" Name 38 "type2::memFun(" Name 37 "@this" Name 41 "@main(" Name 44 "i" Name 48 "j" Name 83 "test" Name 85 "param" Name 88 "param" Name 90 "f4" Name 94 "param" Name 99 "param" Name 109 "@entryPointOutput" Decorate 109(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 1 9(type1): TypeStruct 7(fvec4) 8(int) 10: TypePointer Function 9(type1) 11: TypePointer Function 7(fvec4) 12: TypeFunction 2 10(ptr) 11(ptr) 17: TypePointer Function 8(int) 18: TypeFunction 2 10(ptr) 17(ptr) 23: TypeFunction 7(fvec4) 10(ptr) 11(ptr) 28: TypeFunction 8(int) 10(ptr) 17(ptr) 33(type2): TypeStruct 34: TypePointer Function 33(type2) 35: TypeVector 6(float) 2 36: TypeFunction 35(fvec2) 34(ptr) 40: TypeFunction 7(fvec4) 43: TypePointer Private 35(fvec2) 44(i): 43(ptr) Variable Private 45: 6(float) Constant 1065353216 46: 6(float) Constant 1073741824 47: 35(fvec2) ConstantComposite 45 46 48(j): 43(ptr) Variable Private 50: 8(int) Constant 0 53: 8(int) Constant 1 71: TypeInt 32 0 72: 71(int) Constant 2 73: TypePointer Function 6(float) 84: 7(fvec4) ConstantComposite 46 46 46 46 87: 8(int) Constant 17 91: 7(fvec4) ConstantComposite 45 45 45 45 92: 6(float) Constant 1084227584 93: 7(fvec4) ConstantComposite 92 92 92 92 98: 8(int) Constant 7 108: TypePointer Output 7(fvec4) 109(@entryPointOutput): 108(ptr) Variable Output 4(main): 2 Function None 3 5: Label Store 44(i) 47 49: 35(fvec2) Load 44(i) Store 48(j) 49 110: 7(fvec4) FunctionCall 41(@main() Store 109(@entryPointOutput) 110 Return FunctionEnd 15(type1::setmem(vf4;): 2 Function None 12 13(@this): 10(ptr) FunctionParameter 14(m): 11(ptr) FunctionParameter 16: Label 51: 7(fvec4) Load 14(m) 52: 11(ptr) AccessChain 13(@this) 50 Store 52 51 Return FunctionEnd 21(type1::seti(i1;): 2 Function None 18 19(@this): 10(ptr) FunctionParameter 20(si): 17(ptr) FunctionParameter 22: Label 54: 8(int) Load 20(si) 55: 17(ptr) AccessChain 19(@this) 53 Store 55 54 Return FunctionEnd 26(type1::memFun(vf4;): 7(fvec4) Function None 23 24(@this): 10(ptr) FunctionParameter 25(a): 11(ptr) FunctionParameter 27: Label 56: 17(ptr) AccessChain 24(@this) 53 57: 8(int) Load 56 58: 6(float) ConvertSToF 57 59: 7(fvec4) Load 25(a) 60: 7(fvec4) VectorTimesScalar 59 58 61: 11(ptr) AccessChain 24(@this) 50 62: 7(fvec4) Load 61 63: 7(fvec4) FAdd 60 62 ReturnValue 63 FunctionEnd 31(type1::memFun(i1;): 8(int) Function None 28 29(@this): 10(ptr) FunctionParameter 30(a): 17(ptr) FunctionParameter 32: Label 66: 17(ptr) AccessChain 29(@this) 53 67: 8(int) Load 66 68: 8(int) Load 30(a) 69: 8(int) IAdd 67 68 70: 6(float) ConvertSToF 69 74: 73(ptr) AccessChain 29(@this) 50 72 75: 6(float) Load 74 76: 6(float) FSub 70 75 77: 8(int) ConvertFToS 76 ReturnValue 77 FunctionEnd 38(type2::memFun(): 35(fvec2) Function None 36 37(@this): 34(ptr) FunctionParameter 39: Label 80: 35(fvec2) Load 44(i) ReturnValue 80 FunctionEnd 41(@main(): 7(fvec4) Function None 40 42: Label 83(test): 10(ptr) Variable Function 85(param): 11(ptr) Variable Function 88(param): 17(ptr) Variable Function 90(f4): 11(ptr) Variable Function 94(param): 11(ptr) Variable Function 99(param): 17(ptr) Variable Function Store 85(param) 84 86: 2 FunctionCall 15(type1::setmem(vf4;) 83(test) 85(param) Store 88(param) 87 89: 2 FunctionCall 21(type1::seti(i1;) 83(test) 88(param) Store 90(f4) 91 Store 94(param) 93 95: 7(fvec4) FunctionCall 26(type1::memFun(vf4;) 83(test) 94(param) 96: 7(fvec4) Load 90(f4) 97: 7(fvec4) FAdd 96 95 Store 90(f4) 97 Store 99(param) 98 100: 8(int) FunctionCall 31(type1::memFun(i1;) 83(test) 99(param) 101: 6(float) ConvertSToF 100 102: 7(fvec4) Load 90(f4) 103: 7(fvec4) CompositeConstruct 101 101 101 101 104: 7(fvec4) FAdd 102 103 Store 90(f4) 104 105: 7(fvec4) Load 90(f4) ReturnValue 105 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.numericsuffixes.frag.out000066400000000000000000000345631506534232700243110ustar00rootroot00000000000000hlsl.numericsuffixes.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:8 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 'r00' ( temp float) 0:10 Constant: 0:10 1.000000 0:11 Sequence 0:11 move second child to first child ( temp uint) 0:11 'r01' ( temp uint) 0:11 Constant: 0:11 1 (const uint) 0:12 Sequence 0:12 move second child to first child ( temp uint) 0:12 'r02' ( temp uint) 0:12 Constant: 0:12 2 (const uint) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'r03' ( temp uint) 0:13 Constant: 0:13 2748 (const uint) 0:14 Sequence 0:14 move second child to first child ( temp uint) 0:14 'r04' ( temp uint) 0:14 Constant: 0:14 2748 (const uint) 0:15 Sequence 0:15 move second child to first child ( temp int) 0:15 'r05' ( temp int) 0:15 Constant: 0:15 5 (const int) 0:16 Sequence 0:16 move second child to first child ( temp int) 0:16 'r06' ( temp int) 0:16 Constant: 0:16 6 (const int) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'r07' ( temp int) 0:17 Constant: 0:17 57 (const int) 0:18 Sequence 0:18 move second child to first child ( temp uint) 0:18 'r08' ( temp uint) 0:18 Constant: 0:18 58 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'r09' ( temp float) 0:19 Constant: 0:19 1.000000 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'r10' ( temp float) 0:20 Constant: 0:20 1.000000 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'r11' ( temp float) 0:21 Constant: 0:21 1.100000 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'r12' ( temp float) 0:22 Constant: 0:22 1.100000 0:23 Sequence 0:23 move second child to first child ( temp uint) 0:23 'r13' ( temp uint) 0:23 Constant: 0:23 1 (const uint) 0:24 Sequence 0:24 move second child to first child ( temp uint) 0:24 'r14' ( temp uint) 0:24 Constant: 0:24 2 (const uint) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'r15' ( temp int) 0:25 Constant: 0:25 3 (const int) 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'r16' ( temp int) 0:26 Constant: 0:26 4 (const int) 0:27 Sequence 0:27 move second child to first child ( temp uint) 0:27 'r17' ( temp uint) 0:27 Constant: 0:27 1 (const uint) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'r18' ( temp int) 0:28 Constant: 0:28 3 (const int) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 color: direct index for structure ( temp 4-component vector of float) 0:31 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:31 Constant: 0:31 0 (const int) 0:31 Construct vec4 ( temp 4-component vector of float) 0:31 Convert int to float ( temp float) 0:31 'r07' ( temp int) 0:32 Branch: Return with expression 0:32 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:8 color: direct index for structure ( temp 4-component vector of float) 0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:8 Constant: 0:8 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:8 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 'r00' ( temp float) 0:10 Constant: 0:10 1.000000 0:11 Sequence 0:11 move second child to first child ( temp uint) 0:11 'r01' ( temp uint) 0:11 Constant: 0:11 1 (const uint) 0:12 Sequence 0:12 move second child to first child ( temp uint) 0:12 'r02' ( temp uint) 0:12 Constant: 0:12 2 (const uint) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'r03' ( temp uint) 0:13 Constant: 0:13 2748 (const uint) 0:14 Sequence 0:14 move second child to first child ( temp uint) 0:14 'r04' ( temp uint) 0:14 Constant: 0:14 2748 (const uint) 0:15 Sequence 0:15 move second child to first child ( temp int) 0:15 'r05' ( temp int) 0:15 Constant: 0:15 5 (const int) 0:16 Sequence 0:16 move second child to first child ( temp int) 0:16 'r06' ( temp int) 0:16 Constant: 0:16 6 (const int) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'r07' ( temp int) 0:17 Constant: 0:17 57 (const int) 0:18 Sequence 0:18 move second child to first child ( temp uint) 0:18 'r08' ( temp uint) 0:18 Constant: 0:18 58 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'r09' ( temp float) 0:19 Constant: 0:19 1.000000 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'r10' ( temp float) 0:20 Constant: 0:20 1.000000 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'r11' ( temp float) 0:21 Constant: 0:21 1.100000 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'r12' ( temp float) 0:22 Constant: 0:22 1.100000 0:23 Sequence 0:23 move second child to first child ( temp uint) 0:23 'r13' ( temp uint) 0:23 Constant: 0:23 1 (const uint) 0:24 Sequence 0:24 move second child to first child ( temp uint) 0:24 'r14' ( temp uint) 0:24 Constant: 0:24 2 (const uint) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'r15' ( temp int) 0:25 Constant: 0:25 3 (const int) 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'r16' ( temp int) 0:26 Constant: 0:26 4 (const int) 0:27 Sequence 0:27 move second child to first child ( temp uint) 0:27 'r17' ( temp uint) 0:27 Constant: 0:27 1 (const uint) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'r18' ( temp int) 0:28 Constant: 0:28 3 (const int) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 color: direct index for structure ( temp 4-component vector of float) 0:31 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:31 Constant: 0:31 0 (const int) 0:31 Construct vec4 ( temp 4-component vector of float) 0:31 Convert int to float ( temp float) 0:31 'r07' ( temp int) 0:32 Branch: Return with expression 0:32 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:8 color: direct index for structure ( temp 4-component vector of float) 0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:8 Constant: 0:8 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 59 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "color" Name 10 "@main(" Name 13 "r00" Name 17 "r01" Name 19 "r02" Name 21 "r03" Name 23 "r04" Name 26 "r05" Name 28 "r06" Name 30 "r07" Name 32 "r08" Name 34 "r09" Name 35 "r10" Name 36 "r11" Name 38 "r12" Name 39 "r13" Name 40 "r14" Name 41 "r15" Name 43 "r16" Name 45 "r17" Name 46 "r18" Name 48 "ps_output" Name 59 "@entryPointOutput.color" Decorate 59(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: 6(float) Constant 1065353216 15: TypeInt 32 0 16: TypePointer Function 15(int) 18: 15(int) Constant 1 20: 15(int) Constant 2 22: 15(int) Constant 2748 24: TypeInt 32 1 25: TypePointer Function 24(int) 27: 24(int) Constant 5 29: 24(int) Constant 6 31: 24(int) Constant 57 33: 15(int) Constant 58 37: 6(float) Constant 1066192077 42: 24(int) Constant 3 44: 24(int) Constant 4 47: TypePointer Function 8(PS_OUTPUT) 49: 24(int) Constant 0 53: TypePointer Function 7(fvec4) 58: TypePointer Output 7(fvec4) 59(@entryPointOutput.color): 58(ptr) Variable Output 4(main): 2 Function None 3 5: Label 60:8(PS_OUTPUT) FunctionCall 10(@main() 61: 7(fvec4) CompositeExtract 60 0 Store 59(@entryPointOutput.color) 61 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function 17(r01): 16(ptr) Variable Function 19(r02): 16(ptr) Variable Function 21(r03): 16(ptr) Variable Function 23(r04): 16(ptr) Variable Function 26(r05): 25(ptr) Variable Function 28(r06): 25(ptr) Variable Function 30(r07): 25(ptr) Variable Function 32(r08): 16(ptr) Variable Function 34(r09): 12(ptr) Variable Function 35(r10): 12(ptr) Variable Function 36(r11): 12(ptr) Variable Function 38(r12): 12(ptr) Variable Function 39(r13): 16(ptr) Variable Function 40(r14): 16(ptr) Variable Function 41(r15): 25(ptr) Variable Function 43(r16): 25(ptr) Variable Function 45(r17): 16(ptr) Variable Function 46(r18): 25(ptr) Variable Function 48(ps_output): 47(ptr) Variable Function Store 13(r00) 14 Store 17(r01) 18 Store 19(r02) 20 Store 21(r03) 22 Store 23(r04) 22 Store 26(r05) 27 Store 28(r06) 29 Store 30(r07) 31 Store 32(r08) 33 Store 34(r09) 14 Store 35(r10) 14 Store 36(r11) 37 Store 38(r12) 37 Store 39(r13) 18 Store 40(r14) 20 Store 41(r15) 42 Store 43(r16) 44 Store 45(r17) 18 Store 46(r18) 42 50: 24(int) Load 30(r07) 51: 6(float) ConvertSToF 50 52: 7(fvec4) CompositeConstruct 51 51 51 51 54: 53(ptr) AccessChain 48(ps_output) 49 Store 54 52 55:8(PS_OUTPUT) Load 48(ps_output) ReturnValue 55 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.numericsuffixes.negative.frag.out000066400000000000000000000106021506534232700260760ustar00rootroot00000000000000hlsl.numericsuffixes.negative.frag ERROR: 0:7: '' : bad digit in binary literal ERROR: 0:8: '' : binary literal too big ERROR: 0:9: '' : bad digit in hexadecimal literal ERROR: 0:10: '' : hexadecimal literal too big ERROR: 4 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:5 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp uint) 0:7 'r01' ( temp uint) 0:7 Constant: 0:7 0 (const uint) 0:8 Sequence 0:8 move second child to first child ( temp uint) 0:8 'r02' ( temp uint) 0:8 Constant: 0:8 4294967295 (const uint) 0:10 Sequence 0:9 move second child to first child ( temp uint) 0:9 'r03' ( temp uint) 0:9 Constant: 0:9 0 (const uint) 0:10 move second child to first child ( temp uint) 0:10 'r04' ( temp uint) 0:10 Constant: 0:10 4294967295 (const uint) 0:13 move second child to first child ( temp 4-component vector of float) 0:13 color: direct index for structure ( temp 4-component vector of float) 0:13 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:13 Constant: 0:13 0 (const int) 0:13 Construct vec4 ( temp 4-component vector of float) 0:13 Convert uint to float ( temp float) 0:13 'r01' ( temp uint) 0:14 Branch: Return with expression 0:14 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:5 color: direct index for structure ( temp 4-component vector of float) 0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:5 Constant: 0:5 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:5 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp uint) 0:7 'r01' ( temp uint) 0:7 Constant: 0:7 0 (const uint) 0:8 Sequence 0:8 move second child to first child ( temp uint) 0:8 'r02' ( temp uint) 0:8 Constant: 0:8 4294967295 (const uint) 0:10 Sequence 0:9 move second child to first child ( temp uint) 0:9 'r03' ( temp uint) 0:9 Constant: 0:9 0 (const uint) 0:10 move second child to first child ( temp uint) 0:10 'r04' ( temp uint) 0:10 Constant: 0:10 4294967295 (const uint) 0:13 move second child to first child ( temp 4-component vector of float) 0:13 color: direct index for structure ( temp 4-component vector of float) 0:13 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:13 Constant: 0:13 0 (const int) 0:13 Construct vec4 ( temp 4-component vector of float) 0:13 Convert uint to float ( temp float) 0:13 'r01' ( temp uint) 0:14 Branch: Return with expression 0:14 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:5 color: direct index for structure ( temp 4-component vector of float) 0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:5 Constant: 0:5 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.numthreads.comp.out000066400000000000000000000074331506534232700232570ustar00rootroot00000000000000hlsl.numthreads.comp Shader version: 500 local_size = (1, 4, 8) 0:? Sequence 0:4 Function Definition: main(vu3; ( temp void) 0:4 Function Parameters: 0:4 'tid' ( in 3-component vector of uint) 0:9 Function Definition: @main_aux2(vu3; ( temp void) 0:9 Function Parameters: 0:9 'tid' ( in 3-component vector of uint) 0:9 Function Definition: main_aux2( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp 3-component vector of uint) 0:? 'tid' ( temp 3-component vector of uint) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) 0:9 Function Call: @main_aux2(vu3; ( temp void) 0:? 'tid' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (1, 4, 8) 0:? Sequence 0:4 Function Definition: main(vu3; ( temp void) 0:4 Function Parameters: 0:4 'tid' ( in 3-component vector of uint) 0:9 Function Definition: @main_aux2(vu3; ( temp void) 0:9 Function Parameters: 0:9 'tid' ( in 3-component vector of uint) 0:9 Function Definition: main_aux2( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp 3-component vector of uint) 0:? 'tid' ( temp 3-component vector of uint) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) 0:9 Function Call: @main_aux2(vu3; ( temp void) 0:? 'tid' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // 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 GLCompute 4 "main_aux2" 18 ExecutionMode 4 LocalSize 1 4 8 Source HLSL 500 Name 4 "main_aux2" Name 11 "main(vu3;" Name 10 "tid" Name 14 "@main_aux2(vu3;" Name 13 "tid" Name 16 "tid" Name 18 "tid" Name 20 "param" Decorate 18(tid) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 17: TypePointer Input 7(ivec3) 18(tid): 17(ptr) Variable Input 4(main_aux2): 2 Function None 3 5: Label 16(tid): 8(ptr) Variable Function 20(param): 8(ptr) Variable Function 19: 7(ivec3) Load 18(tid) Store 16(tid) 19 21: 7(ivec3) Load 16(tid) Store 20(param) 21 22: 2 FunctionCall 14(@main_aux2(vu3;) 20(param) Return FunctionEnd 11(main(vu3;): 2 Function None 9 10(tid): 8(ptr) FunctionParameter 12: Label Return FunctionEnd 14(@main_aux2(vu3;): 2 Function None 9 13(tid): 8(ptr) FunctionParameter 15: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.opaque-type-bug.frag.out000066400000000000000000000106571506534232700241140ustar00rootroot00000000000000hlsl.opaque-type-bug.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: TexFunc(t21;vf3; ( temp void) 0:6 Function Parameters: 0:6 't2D' ( const (read only) texture2D) 0:6 'RGB' ( out 3-component vector of float) 0:? Sequence 0:7 move second child to first child ( temp 3-component vector of float) 0:7 'RGB' ( out 3-component vector of float) 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:12 Function Definition: @main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:15 Function Call: TexFunc(t21;vf3; ( temp void) 0:15 'MyTexture' (layout( binding=0) uniform texture2D) 0:15 'final_RGB' ( temp 3-component vector of float) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'MyTexture' (layout( binding=0) uniform texture2D) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: TexFunc(t21;vf3; ( temp void) 0:6 Function Parameters: 0:6 't2D' ( const (read only) texture2D) 0:6 'RGB' ( out 3-component vector of float) 0:? Sequence 0:7 move second child to first child ( temp 3-component vector of float) 0:7 'RGB' ( out 3-component vector of float) 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 0.000000 0:12 Function Definition: @main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:15 Function Call: TexFunc(t21;vf3; ( temp void) 0:15 'MyTexture' (layout( binding=0) uniform texture2D) 0:15 'final_RGB' ( temp 3-component vector of float) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'MyTexture' (layout( binding=0) uniform texture2D) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 13 "TexFunc(t21;vf3;" Name 11 "t2D" Name 12 "RGB" Name 15 "@main(" Name 20 "MyTexture" Name 22 "final_RGB" Name 23 "param" Decorate 20(MyTexture) Binding 0 Decorate 20(MyTexture) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) 2D sampled format:Unknown 8: TypeVector 6(float) 3 9: TypePointer Function 8(fvec3) 10: TypeFunction 2 7 9(ptr) 17: 6(float) Constant 0 18: 8(fvec3) ConstantComposite 17 17 17 19: TypePointer UniformConstant 7 20(MyTexture): 19(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 26: 2 FunctionCall 15(@main() Return FunctionEnd 13(TexFunc(t21;vf3;): 2 Function None 10 11(t2D): 7 FunctionParameter 12(RGB): 9(ptr) FunctionParameter 14: Label Store 12(RGB) 18 Return FunctionEnd 15(@main(): 2 Function None 3 16: Label 22(final_RGB): 9(ptr) Variable Function 23(param): 9(ptr) Variable Function 21: 7 Load 20(MyTexture) 24: 2 FunctionCall 13(TexFunc(t21;vf3;) 21 23(param) 25: 8(fvec3) Load 23(param) Store 22(final_RGB) 25 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.overload.frag.out000066400000000000000000002163571506534232700227100ustar00rootroot00000000000000hlsl.overload.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: foo1(d1;b1; ( temp void) 0:2 Function Parameters: 0:2 'a' ( in double) 0:2 'b' ( in bool) 0:3 Function Definition: foo1(d1;u1; ( temp void) 0:3 Function Parameters: 0:3 'a' ( in double) 0:3 'b' ( in uint) 0:4 Function Definition: foo1(d1;i1; ( temp void) 0:4 Function Parameters: 0:4 'a' ( in double) 0:4 'b' ( in int) 0:5 Function Definition: foo1(d1;f1; ( temp void) 0:5 Function Parameters: 0:5 'a' ( in double) 0:5 'b' ( in float) 0:6 Function Definition: foo1(d1;d1; ( temp void) 0:6 Function Parameters: 0:6 'a' ( in double) 0:6 'b' ( in double) 0:9 Function Definition: foo2(i1;b1; ( temp void) 0:9 Function Parameters: 0:9 'a' ( in int) 0:9 'b' ( in bool) 0:10 Function Definition: foo2(i1;u1; ( temp void) 0:10 Function Parameters: 0:10 'a' ( in int) 0:10 'b' ( in uint) 0:11 Function Definition: foo2(i1;i1; ( temp void) 0:11 Function Parameters: 0:11 'a' ( in int) 0:11 'b' ( in int) 0:12 Function Definition: foo2(i1;f1; ( temp void) 0:12 Function Parameters: 0:12 'a' ( in int) 0:12 'b' ( in float) 0:13 Function Definition: foo2(i1;d1; ( temp void) 0:13 Function Parameters: 0:13 'a' ( in int) 0:13 'b' ( in double) 0:16 Function Definition: foo3(b1; ( temp void) 0:16 Function Parameters: 0:16 'b' ( in bool) 0:17 Function Definition: foo4(u1; ( temp void) 0:17 Function Parameters: 0:17 'b' ( in uint) 0:18 Function Definition: foo5(i1; ( temp void) 0:18 Function Parameters: 0:18 'b' ( in int) 0:19 Function Definition: foo6(f1; ( temp void) 0:19 Function Parameters: 0:19 'b' ( in float) 0:20 Function Definition: foo7(d1; ( temp void) 0:20 Function Parameters: 0:20 'b' ( in double) 0:23 Function Definition: foo8(f1; ( temp void) 0:23 Function Parameters: 0:23 '' ( in float) 0:24 Function Definition: foo8(d1; ( temp void) 0:24 Function Parameters: 0:24 '' ( in double) 0:25 Function Definition: foo9(i1; ( temp void) 0:25 Function Parameters: 0:25 '' ( in int) 0:26 Function Definition: foo9(u1; ( temp void) 0:26 Function Parameters: 0:26 '' ( in uint) 0:27 Function Definition: foo10(b1; ( temp void) 0:27 Function Parameters: 0:27 '' ( in bool) 0:28 Function Definition: foo10(i1; ( temp void) 0:28 Function Parameters: 0:28 '' ( in int) 0:31 Function Definition: foo11(vf3; ( temp void) 0:31 Function Parameters: 0:31 '' ( in 3-component vector of float) 0:32 Function Definition: foo11(d1; ( temp void) 0:32 Function Parameters: 0:32 '' ( in double) 0:33 Function Definition: foo11(vi3; ( temp void) 0:33 Function Parameters: 0:33 '' ( in 3-component vector of int) 0:34 Function Definition: foo11(u1; ( temp void) 0:34 Function Parameters: 0:34 '' ( in uint) 0:35 Function Definition: foo12(vf1; ( temp void) 0:35 Function Parameters: 0:35 '' ( in 1-component vector of float) 0:36 Function Definition: foo12(vd3; ( temp void) 0:36 Function Parameters: 0:36 '' ( in 3-component vector of double) 0:37 Function Definition: foo16(u1; ( temp void) 0:37 Function Parameters: 0:37 '' ( in uint) 0:38 Function Definition: foo16(vu2; ( temp void) 0:38 Function Parameters: 0:38 '' ( in 2-component vector of uint) 0:41 Function Definition: foo13(vf3; ( temp void) 0:41 Function Parameters: 0:41 '' ( in 3-component vector of float) 0:42 Function Definition: foo14(vi1; ( temp void) 0:42 Function Parameters: 0:42 '' ( in 1-component vector of int) 0:43 Function Definition: foo15(vb1; ( temp void) 0:43 Function Parameters: 0:43 '' ( in 1-component vector of bool) 0:46 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:46 Function Parameters: 0:46 'input' ( in 4-component vector of float) 0:? Sequence 0:53 Function Call: foo1(d1;b1; ( temp void) 0:53 'd' ( temp double) 0:53 'b' ( temp bool) 0:54 Function Call: foo1(d1;d1; ( temp void) 0:54 'd' ( temp double) 0:54 'd' ( temp double) 0:55 Function Call: foo1(d1;u1; ( temp void) 0:55 'd' ( temp double) 0:55 'u' ( temp uint) 0:56 Function Call: foo1(d1;i1; ( temp void) 0:56 'd' ( temp double) 0:56 'i' ( temp int) 0:57 Function Call: foo1(d1;f1; ( temp void) 0:57 'd' ( temp double) 0:57 'f' ( temp float) 0:59 Function Call: foo1(d1;b1; ( temp void) 0:59 Convert float to double ( temp double) 0:59 'f' ( temp float) 0:59 'b' ( temp bool) 0:60 Function Call: foo1(d1;d1; ( temp void) 0:60 Convert float to double ( temp double) 0:60 'f' ( temp float) 0:60 'd' ( temp double) 0:61 Function Call: foo1(d1;u1; ( temp void) 0:61 Convert float to double ( temp double) 0:61 'f' ( temp float) 0:61 'u' ( temp uint) 0:62 Function Call: foo1(d1;i1; ( temp void) 0:62 Convert float to double ( temp double) 0:62 'f' ( temp float) 0:62 'i' ( temp int) 0:63 Function Call: foo1(d1;f1; ( temp void) 0:63 Convert float to double ( temp double) 0:63 'f' ( temp float) 0:63 'f' ( temp float) 0:65 Function Call: foo1(d1;b1; ( temp void) 0:65 Convert uint to double ( temp double) 0:65 'u' ( temp uint) 0:65 'b' ( temp bool) 0:66 Function Call: foo1(d1;d1; ( temp void) 0:66 Convert uint to double ( temp double) 0:66 'u' ( temp uint) 0:66 'd' ( temp double) 0:67 Function Call: foo1(d1;u1; ( temp void) 0:67 Convert uint to double ( temp double) 0:67 'u' ( temp uint) 0:67 'u' ( temp uint) 0:68 Function Call: foo1(d1;i1; ( temp void) 0:68 Convert uint to double ( temp double) 0:68 'u' ( temp uint) 0:68 'i' ( temp int) 0:69 Function Call: foo1(d1;f1; ( temp void) 0:69 Convert uint to double ( temp double) 0:69 'u' ( temp uint) 0:69 'f' ( temp float) 0:71 Function Call: foo1(d1;b1; ( temp void) 0:71 Convert int to double ( temp double) 0:71 'i' ( temp int) 0:71 'b' ( temp bool) 0:72 Function Call: foo1(d1;d1; ( temp void) 0:72 Convert int to double ( temp double) 0:72 'i' ( temp int) 0:72 'd' ( temp double) 0:73 Function Call: foo1(d1;u1; ( temp void) 0:73 Convert int to double ( temp double) 0:73 'i' ( temp int) 0:73 'u' ( temp uint) 0:74 Function Call: foo1(d1;i1; ( temp void) 0:74 Convert int to double ( temp double) 0:74 'i' ( temp int) 0:74 'i' ( temp int) 0:75 Function Call: foo1(d1;f1; ( temp void) 0:75 Convert int to double ( temp double) 0:75 'i' ( temp int) 0:75 'f' ( temp float) 0:77 Function Call: foo2(i1;b1; ( temp void) 0:77 Convert uint to int ( temp int) 0:77 'u' ( temp uint) 0:77 'b' ( temp bool) 0:78 Function Call: foo2(i1;d1; ( temp void) 0:78 Convert uint to int ( temp int) 0:78 'u' ( temp uint) 0:78 'd' ( temp double) 0:79 Function Call: foo2(i1;u1; ( temp void) 0:79 Convert uint to int ( temp int) 0:79 'u' ( temp uint) 0:79 'u' ( temp uint) 0:80 Function Call: foo2(i1;i1; ( temp void) 0:80 Convert uint to int ( temp int) 0:80 'u' ( temp uint) 0:80 'i' ( temp int) 0:81 Function Call: foo2(i1;f1; ( temp void) 0:81 Convert uint to int ( temp int) 0:81 'u' ( temp uint) 0:81 'f' ( temp float) 0:83 Function Call: foo2(i1;b1; ( temp void) 0:83 'i' ( temp int) 0:83 'b' ( temp bool) 0:84 Function Call: foo2(i1;d1; ( temp void) 0:84 'i' ( temp int) 0:84 'd' ( temp double) 0:85 Function Call: foo2(i1;u1; ( temp void) 0:85 'i' ( temp int) 0:85 'u' ( temp uint) 0:86 Function Call: foo2(i1;i1; ( temp void) 0:86 'i' ( temp int) 0:86 'i' ( temp int) 0:87 Function Call: foo2(i1;f1; ( temp void) 0:87 'i' ( temp int) 0:87 'f' ( temp float) 0:89 Function Call: foo3(b1; ( temp void) 0:89 'b' ( temp bool) 0:90 Function Call: foo3(b1; ( temp void) 0:90 Convert double to bool ( temp bool) 0:90 'd' ( temp double) 0:91 Function Call: foo3(b1; ( temp void) 0:91 Convert uint to bool ( temp bool) 0:91 'u' ( temp uint) 0:92 Function Call: foo3(b1; ( temp void) 0:92 Convert int to bool ( temp bool) 0:92 'i' ( temp int) 0:93 Function Call: foo3(b1; ( temp void) 0:93 Convert float to bool ( temp bool) 0:93 'f' ( temp float) 0:95 Function Call: foo4(u1; ( temp void) 0:95 Convert bool to uint ( temp uint) 0:95 'b' ( temp bool) 0:96 Function Call: foo4(u1; ( temp void) 0:96 Convert double to uint ( temp uint) 0:96 'd' ( temp double) 0:97 Function Call: foo4(u1; ( temp void) 0:97 'u' ( temp uint) 0:98 Function Call: foo4(u1; ( temp void) 0:98 Convert int to uint ( temp uint) 0:98 'i' ( temp int) 0:99 Function Call: foo4(u1; ( temp void) 0:99 Convert float to uint ( temp uint) 0:99 'f' ( temp float) 0:101 Function Call: foo5(i1; ( temp void) 0:101 Convert bool to int ( temp int) 0:101 'b' ( temp bool) 0:102 Function Call: foo5(i1; ( temp void) 0:102 Convert double to int ( temp int) 0:102 'd' ( temp double) 0:103 Function Call: foo5(i1; ( temp void) 0:103 Convert uint to int ( temp int) 0:103 'u' ( temp uint) 0:104 Function Call: foo5(i1; ( temp void) 0:104 'i' ( temp int) 0:105 Function Call: foo5(i1; ( temp void) 0:105 Convert float to int ( temp int) 0:105 'f' ( temp float) 0:107 Function Call: foo6(f1; ( temp void) 0:107 Convert bool to float ( temp float) 0:107 'b' ( temp bool) 0:108 Function Call: foo6(f1; ( temp void) 0:108 Convert double to float ( temp float) 0:108 'd' ( temp double) 0:109 Function Call: foo6(f1; ( temp void) 0:109 Convert uint to float ( temp float) 0:109 'u' ( temp uint) 0:110 Function Call: foo6(f1; ( temp void) 0:110 Convert int to float ( temp float) 0:110 'i' ( temp int) 0:111 Function Call: foo6(f1; ( temp void) 0:111 'f' ( temp float) 0:113 Function Call: foo7(d1; ( temp void) 0:113 Convert bool to double ( temp double) 0:113 'b' ( temp bool) 0:114 Function Call: foo7(d1; ( temp void) 0:114 'd' ( temp double) 0:115 Function Call: foo7(d1; ( temp void) 0:115 Convert uint to double ( temp double) 0:115 'u' ( temp uint) 0:116 Function Call: foo7(d1; ( temp void) 0:116 Convert int to double ( temp double) 0:116 'i' ( temp int) 0:117 Function Call: foo7(d1; ( temp void) 0:117 Convert float to double ( temp double) 0:117 'f' ( temp float) 0:119 Function Call: foo8(f1; ( temp void) 0:119 Convert bool to float ( temp float) 0:119 'b' ( temp bool) 0:120 Function Call: foo8(f1; ( temp void) 0:120 Convert uint to float ( temp float) 0:120 'u' ( temp uint) 0:121 Function Call: foo8(f1; ( temp void) 0:121 Convert int to float ( temp float) 0:121 'i' ( temp int) 0:123 Function Call: foo9(i1; ( temp void) 0:123 Convert bool to int ( temp int) 0:123 'b' ( temp bool) 0:124 Function Call: foo9(u1; ( temp void) 0:124 Convert float to uint ( temp uint) 0:124 'f' ( temp float) 0:125 Function Call: foo9(u1; ( temp void) 0:125 Convert double to uint ( temp uint) 0:125 'd' ( temp double) 0:127 Function Call: foo10(i1; ( temp void) 0:127 Convert uint to int ( temp int) 0:127 'u' ( temp uint) 0:128 Function Call: foo10(i1; ( temp void) 0:128 Convert float to int ( temp int) 0:128 'f' ( temp float) 0:129 Function Call: foo10(i1; ( temp void) 0:129 Convert double to int ( temp int) 0:129 'd' ( temp double) 0:131 Function Call: foo11(u1; ( temp void) 0:131 Convert bool to uint ( temp uint) 0:131 'b' ( temp bool) 0:132 Function Call: foo11(d1; ( temp void) 0:132 Convert float to double ( temp double) 0:132 'f' ( temp float) 0:133 Function Call: foo12(vd3; ( temp void) 0:133 Convert float to double ( temp 3-component vector of double) 0:133 Construct vec3 ( temp 3-component vector of float) 0:133 'f' ( temp float) 0:134 Function Call: foo16(vu2; ( temp void) 0:134 Convert int to uint ( temp 2-component vector of uint) 0:134 Construct ivec2 ( temp 2-component vector of int) 0:134 'i' ( temp int) 0:134 'i' ( temp int) 0:136 Function Call: foo13(vf3; ( temp void) 0:136 Construct vec3 ( in 3-component vector of float) 0:136 'f' ( temp float) 0:137 Function Call: foo14(vi1; ( temp void) 0:137 Construct int ( in 1-component vector of int) 0:137 Construct ivec4 ( temp 4-component vector of int) 0:137 'i' ( temp int) 0:138 Function Call: foo15(vb1; ( temp void) 0:138 Construct bool ( in 1-component vector of bool) 0:138 'b' ( temp bool) 0:139 Function Call: foo15(vb1; ( temp void) 0:139 Construct bool ( in 1-component vector of bool) 0:139 Construct bvec3 ( temp 3-component vector of bool) 0:139 'b' ( temp bool) 0:141 Branch: Return with expression 0:141 'input' ( in 4-component vector of float) 0:46 Function Definition: PixelShaderFunction( ( temp void) 0:46 Function Parameters: 0:? Sequence 0:46 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:46 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:46 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: foo1(d1;b1; ( temp void) 0:2 Function Parameters: 0:2 'a' ( in double) 0:2 'b' ( in bool) 0:3 Function Definition: foo1(d1;u1; ( temp void) 0:3 Function Parameters: 0:3 'a' ( in double) 0:3 'b' ( in uint) 0:4 Function Definition: foo1(d1;i1; ( temp void) 0:4 Function Parameters: 0:4 'a' ( in double) 0:4 'b' ( in int) 0:5 Function Definition: foo1(d1;f1; ( temp void) 0:5 Function Parameters: 0:5 'a' ( in double) 0:5 'b' ( in float) 0:6 Function Definition: foo1(d1;d1; ( temp void) 0:6 Function Parameters: 0:6 'a' ( in double) 0:6 'b' ( in double) 0:9 Function Definition: foo2(i1;b1; ( temp void) 0:9 Function Parameters: 0:9 'a' ( in int) 0:9 'b' ( in bool) 0:10 Function Definition: foo2(i1;u1; ( temp void) 0:10 Function Parameters: 0:10 'a' ( in int) 0:10 'b' ( in uint) 0:11 Function Definition: foo2(i1;i1; ( temp void) 0:11 Function Parameters: 0:11 'a' ( in int) 0:11 'b' ( in int) 0:12 Function Definition: foo2(i1;f1; ( temp void) 0:12 Function Parameters: 0:12 'a' ( in int) 0:12 'b' ( in float) 0:13 Function Definition: foo2(i1;d1; ( temp void) 0:13 Function Parameters: 0:13 'a' ( in int) 0:13 'b' ( in double) 0:16 Function Definition: foo3(b1; ( temp void) 0:16 Function Parameters: 0:16 'b' ( in bool) 0:17 Function Definition: foo4(u1; ( temp void) 0:17 Function Parameters: 0:17 'b' ( in uint) 0:18 Function Definition: foo5(i1; ( temp void) 0:18 Function Parameters: 0:18 'b' ( in int) 0:19 Function Definition: foo6(f1; ( temp void) 0:19 Function Parameters: 0:19 'b' ( in float) 0:20 Function Definition: foo7(d1; ( temp void) 0:20 Function Parameters: 0:20 'b' ( in double) 0:23 Function Definition: foo8(f1; ( temp void) 0:23 Function Parameters: 0:23 '' ( in float) 0:24 Function Definition: foo8(d1; ( temp void) 0:24 Function Parameters: 0:24 '' ( in double) 0:25 Function Definition: foo9(i1; ( temp void) 0:25 Function Parameters: 0:25 '' ( in int) 0:26 Function Definition: foo9(u1; ( temp void) 0:26 Function Parameters: 0:26 '' ( in uint) 0:27 Function Definition: foo10(b1; ( temp void) 0:27 Function Parameters: 0:27 '' ( in bool) 0:28 Function Definition: foo10(i1; ( temp void) 0:28 Function Parameters: 0:28 '' ( in int) 0:31 Function Definition: foo11(vf3; ( temp void) 0:31 Function Parameters: 0:31 '' ( in 3-component vector of float) 0:32 Function Definition: foo11(d1; ( temp void) 0:32 Function Parameters: 0:32 '' ( in double) 0:33 Function Definition: foo11(vi3; ( temp void) 0:33 Function Parameters: 0:33 '' ( in 3-component vector of int) 0:34 Function Definition: foo11(u1; ( temp void) 0:34 Function Parameters: 0:34 '' ( in uint) 0:35 Function Definition: foo12(vf1; ( temp void) 0:35 Function Parameters: 0:35 '' ( in 1-component vector of float) 0:36 Function Definition: foo12(vd3; ( temp void) 0:36 Function Parameters: 0:36 '' ( in 3-component vector of double) 0:37 Function Definition: foo16(u1; ( temp void) 0:37 Function Parameters: 0:37 '' ( in uint) 0:38 Function Definition: foo16(vu2; ( temp void) 0:38 Function Parameters: 0:38 '' ( in 2-component vector of uint) 0:41 Function Definition: foo13(vf3; ( temp void) 0:41 Function Parameters: 0:41 '' ( in 3-component vector of float) 0:42 Function Definition: foo14(vi1; ( temp void) 0:42 Function Parameters: 0:42 '' ( in 1-component vector of int) 0:43 Function Definition: foo15(vb1; ( temp void) 0:43 Function Parameters: 0:43 '' ( in 1-component vector of bool) 0:46 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:46 Function Parameters: 0:46 'input' ( in 4-component vector of float) 0:? Sequence 0:53 Function Call: foo1(d1;b1; ( temp void) 0:53 'd' ( temp double) 0:53 'b' ( temp bool) 0:54 Function Call: foo1(d1;d1; ( temp void) 0:54 'd' ( temp double) 0:54 'd' ( temp double) 0:55 Function Call: foo1(d1;u1; ( temp void) 0:55 'd' ( temp double) 0:55 'u' ( temp uint) 0:56 Function Call: foo1(d1;i1; ( temp void) 0:56 'd' ( temp double) 0:56 'i' ( temp int) 0:57 Function Call: foo1(d1;f1; ( temp void) 0:57 'd' ( temp double) 0:57 'f' ( temp float) 0:59 Function Call: foo1(d1;b1; ( temp void) 0:59 Convert float to double ( temp double) 0:59 'f' ( temp float) 0:59 'b' ( temp bool) 0:60 Function Call: foo1(d1;d1; ( temp void) 0:60 Convert float to double ( temp double) 0:60 'f' ( temp float) 0:60 'd' ( temp double) 0:61 Function Call: foo1(d1;u1; ( temp void) 0:61 Convert float to double ( temp double) 0:61 'f' ( temp float) 0:61 'u' ( temp uint) 0:62 Function Call: foo1(d1;i1; ( temp void) 0:62 Convert float to double ( temp double) 0:62 'f' ( temp float) 0:62 'i' ( temp int) 0:63 Function Call: foo1(d1;f1; ( temp void) 0:63 Convert float to double ( temp double) 0:63 'f' ( temp float) 0:63 'f' ( temp float) 0:65 Function Call: foo1(d1;b1; ( temp void) 0:65 Convert uint to double ( temp double) 0:65 'u' ( temp uint) 0:65 'b' ( temp bool) 0:66 Function Call: foo1(d1;d1; ( temp void) 0:66 Convert uint to double ( temp double) 0:66 'u' ( temp uint) 0:66 'd' ( temp double) 0:67 Function Call: foo1(d1;u1; ( temp void) 0:67 Convert uint to double ( temp double) 0:67 'u' ( temp uint) 0:67 'u' ( temp uint) 0:68 Function Call: foo1(d1;i1; ( temp void) 0:68 Convert uint to double ( temp double) 0:68 'u' ( temp uint) 0:68 'i' ( temp int) 0:69 Function Call: foo1(d1;f1; ( temp void) 0:69 Convert uint to double ( temp double) 0:69 'u' ( temp uint) 0:69 'f' ( temp float) 0:71 Function Call: foo1(d1;b1; ( temp void) 0:71 Convert int to double ( temp double) 0:71 'i' ( temp int) 0:71 'b' ( temp bool) 0:72 Function Call: foo1(d1;d1; ( temp void) 0:72 Convert int to double ( temp double) 0:72 'i' ( temp int) 0:72 'd' ( temp double) 0:73 Function Call: foo1(d1;u1; ( temp void) 0:73 Convert int to double ( temp double) 0:73 'i' ( temp int) 0:73 'u' ( temp uint) 0:74 Function Call: foo1(d1;i1; ( temp void) 0:74 Convert int to double ( temp double) 0:74 'i' ( temp int) 0:74 'i' ( temp int) 0:75 Function Call: foo1(d1;f1; ( temp void) 0:75 Convert int to double ( temp double) 0:75 'i' ( temp int) 0:75 'f' ( temp float) 0:77 Function Call: foo2(i1;b1; ( temp void) 0:77 Convert uint to int ( temp int) 0:77 'u' ( temp uint) 0:77 'b' ( temp bool) 0:78 Function Call: foo2(i1;d1; ( temp void) 0:78 Convert uint to int ( temp int) 0:78 'u' ( temp uint) 0:78 'd' ( temp double) 0:79 Function Call: foo2(i1;u1; ( temp void) 0:79 Convert uint to int ( temp int) 0:79 'u' ( temp uint) 0:79 'u' ( temp uint) 0:80 Function Call: foo2(i1;i1; ( temp void) 0:80 Convert uint to int ( temp int) 0:80 'u' ( temp uint) 0:80 'i' ( temp int) 0:81 Function Call: foo2(i1;f1; ( temp void) 0:81 Convert uint to int ( temp int) 0:81 'u' ( temp uint) 0:81 'f' ( temp float) 0:83 Function Call: foo2(i1;b1; ( temp void) 0:83 'i' ( temp int) 0:83 'b' ( temp bool) 0:84 Function Call: foo2(i1;d1; ( temp void) 0:84 'i' ( temp int) 0:84 'd' ( temp double) 0:85 Function Call: foo2(i1;u1; ( temp void) 0:85 'i' ( temp int) 0:85 'u' ( temp uint) 0:86 Function Call: foo2(i1;i1; ( temp void) 0:86 'i' ( temp int) 0:86 'i' ( temp int) 0:87 Function Call: foo2(i1;f1; ( temp void) 0:87 'i' ( temp int) 0:87 'f' ( temp float) 0:89 Function Call: foo3(b1; ( temp void) 0:89 'b' ( temp bool) 0:90 Function Call: foo3(b1; ( temp void) 0:90 Convert double to bool ( temp bool) 0:90 'd' ( temp double) 0:91 Function Call: foo3(b1; ( temp void) 0:91 Convert uint to bool ( temp bool) 0:91 'u' ( temp uint) 0:92 Function Call: foo3(b1; ( temp void) 0:92 Convert int to bool ( temp bool) 0:92 'i' ( temp int) 0:93 Function Call: foo3(b1; ( temp void) 0:93 Convert float to bool ( temp bool) 0:93 'f' ( temp float) 0:95 Function Call: foo4(u1; ( temp void) 0:95 Convert bool to uint ( temp uint) 0:95 'b' ( temp bool) 0:96 Function Call: foo4(u1; ( temp void) 0:96 Convert double to uint ( temp uint) 0:96 'd' ( temp double) 0:97 Function Call: foo4(u1; ( temp void) 0:97 'u' ( temp uint) 0:98 Function Call: foo4(u1; ( temp void) 0:98 Convert int to uint ( temp uint) 0:98 'i' ( temp int) 0:99 Function Call: foo4(u1; ( temp void) 0:99 Convert float to uint ( temp uint) 0:99 'f' ( temp float) 0:101 Function Call: foo5(i1; ( temp void) 0:101 Convert bool to int ( temp int) 0:101 'b' ( temp bool) 0:102 Function Call: foo5(i1; ( temp void) 0:102 Convert double to int ( temp int) 0:102 'd' ( temp double) 0:103 Function Call: foo5(i1; ( temp void) 0:103 Convert uint to int ( temp int) 0:103 'u' ( temp uint) 0:104 Function Call: foo5(i1; ( temp void) 0:104 'i' ( temp int) 0:105 Function Call: foo5(i1; ( temp void) 0:105 Convert float to int ( temp int) 0:105 'f' ( temp float) 0:107 Function Call: foo6(f1; ( temp void) 0:107 Convert bool to float ( temp float) 0:107 'b' ( temp bool) 0:108 Function Call: foo6(f1; ( temp void) 0:108 Convert double to float ( temp float) 0:108 'd' ( temp double) 0:109 Function Call: foo6(f1; ( temp void) 0:109 Convert uint to float ( temp float) 0:109 'u' ( temp uint) 0:110 Function Call: foo6(f1; ( temp void) 0:110 Convert int to float ( temp float) 0:110 'i' ( temp int) 0:111 Function Call: foo6(f1; ( temp void) 0:111 'f' ( temp float) 0:113 Function Call: foo7(d1; ( temp void) 0:113 Convert bool to double ( temp double) 0:113 'b' ( temp bool) 0:114 Function Call: foo7(d1; ( temp void) 0:114 'd' ( temp double) 0:115 Function Call: foo7(d1; ( temp void) 0:115 Convert uint to double ( temp double) 0:115 'u' ( temp uint) 0:116 Function Call: foo7(d1; ( temp void) 0:116 Convert int to double ( temp double) 0:116 'i' ( temp int) 0:117 Function Call: foo7(d1; ( temp void) 0:117 Convert float to double ( temp double) 0:117 'f' ( temp float) 0:119 Function Call: foo8(f1; ( temp void) 0:119 Convert bool to float ( temp float) 0:119 'b' ( temp bool) 0:120 Function Call: foo8(f1; ( temp void) 0:120 Convert uint to float ( temp float) 0:120 'u' ( temp uint) 0:121 Function Call: foo8(f1; ( temp void) 0:121 Convert int to float ( temp float) 0:121 'i' ( temp int) 0:123 Function Call: foo9(i1; ( temp void) 0:123 Convert bool to int ( temp int) 0:123 'b' ( temp bool) 0:124 Function Call: foo9(u1; ( temp void) 0:124 Convert float to uint ( temp uint) 0:124 'f' ( temp float) 0:125 Function Call: foo9(u1; ( temp void) 0:125 Convert double to uint ( temp uint) 0:125 'd' ( temp double) 0:127 Function Call: foo10(i1; ( temp void) 0:127 Convert uint to int ( temp int) 0:127 'u' ( temp uint) 0:128 Function Call: foo10(i1; ( temp void) 0:128 Convert float to int ( temp int) 0:128 'f' ( temp float) 0:129 Function Call: foo10(i1; ( temp void) 0:129 Convert double to int ( temp int) 0:129 'd' ( temp double) 0:131 Function Call: foo11(u1; ( temp void) 0:131 Convert bool to uint ( temp uint) 0:131 'b' ( temp bool) 0:132 Function Call: foo11(d1; ( temp void) 0:132 Convert float to double ( temp double) 0:132 'f' ( temp float) 0:133 Function Call: foo12(vd3; ( temp void) 0:133 Convert float to double ( temp 3-component vector of double) 0:133 Construct vec3 ( temp 3-component vector of float) 0:133 'f' ( temp float) 0:134 Function Call: foo16(vu2; ( temp void) 0:134 Convert int to uint ( temp 2-component vector of uint) 0:134 Construct ivec2 ( temp 2-component vector of int) 0:134 'i' ( temp int) 0:134 'i' ( temp int) 0:136 Function Call: foo13(vf3; ( temp void) 0:136 Construct vec3 ( in 3-component vector of float) 0:136 'f' ( temp float) 0:137 Function Call: foo14(vi1; ( temp void) 0:137 Construct int ( in 1-component vector of int) 0:137 Construct ivec4 ( temp 4-component vector of int) 0:137 'i' ( temp int) 0:138 Function Call: foo15(vb1; ( temp void) 0:138 Construct bool ( in 1-component vector of bool) 0:138 'b' ( temp bool) 0:139 Function Call: foo15(vb1; ( temp void) 0:139 Construct bool ( in 1-component vector of bool) 0:139 Construct bvec3 ( temp 3-component vector of bool) 0:139 'b' ( temp bool) 0:141 Branch: Return with expression 0:141 'input' ( in 4-component vector of float) 0:46 Function Definition: PixelShaderFunction( ( temp void) 0:46 Function Parameters: 0:? Sequence 0:46 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:46 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:46 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 519 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 512 515 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 13 "foo1(d1;b1;" Name 11 "a" Name 12 "b" Name 20 "foo1(d1;u1;" Name 18 "a" Name 19 "b" Name 27 "foo1(d1;i1;" Name 25 "a" Name 26 "b" Name 34 "foo1(d1;f1;" Name 32 "a" Name 33 "b" Name 39 "foo1(d1;d1;" Name 37 "a" Name 38 "b" Name 44 "foo2(i1;b1;" Name 42 "a" Name 43 "b" Name 49 "foo2(i1;u1;" Name 47 "a" Name 48 "b" Name 54 "foo2(i1;i1;" Name 52 "a" Name 53 "b" Name 59 "foo2(i1;f1;" Name 57 "a" Name 58 "b" Name 64 "foo2(i1;d1;" Name 62 "a" Name 63 "b" Name 68 "foo3(b1;" Name 67 "b" Name 72 "foo4(u1;" Name 71 "b" Name 76 "foo5(i1;" Name 75 "b" Name 80 "foo6(f1;" Name 79 "b" Name 84 "foo7(d1;" Name 83 "b" Name 87 "foo8(f1;" Name 86 "" Name 90 "foo8(d1;" Name 89 "" Name 93 "foo9(i1;" Name 92 "" Name 96 "foo9(u1;" Name 95 "" Name 99 "foo10(b1;" Name 98 "" Name 102 "foo10(i1;" Name 101 "" Name 108 "foo11(vf3;" Name 107 "" Name 111 "foo11(d1;" Name 110 "" Name 117 "foo11(vi3;" Name 116 "" Name 120 "foo11(u1;" Name 119 "" Name 123 "foo12(vf1;" Name 122 "" Name 129 "foo12(vd3;" Name 128 "" Name 132 "foo16(u1;" Name 131 "" Name 138 "foo16(vu2;" Name 137 "" Name 141 "foo13(vf3;" Name 140 "" Name 144 "foo14(vi1;" Name 143 "" Name 147 "foo15(vb1;" Name 146 "" Name 153 "@PixelShaderFunction(vf4;" Name 152 "input" Name 155 "d" Name 156 "b" Name 157 "param" Name 159 "param" Name 162 "param" Name 164 "param" Name 167 "u" Name 168 "param" Name 170 "param" Name 173 "i" Name 174 "param" Name 176 "param" Name 179 "f" Name 180 "param" Name 182 "param" Name 187 "param" Name 188 "param" Name 193 "param" Name 194 "param" Name 199 "param" Name 200 "param" Name 205 "param" Name 206 "param" Name 211 "param" Name 212 "param" Name 217 "param" Name 218 "param" Name 223 "param" Name 224 "param" Name 229 "param" Name 230 "param" Name 235 "param" Name 236 "param" Name 241 "param" Name 242 "param" Name 247 "param" Name 248 "param" Name 253 "param" Name 254 "param" Name 259 "param" Name 260 "param" Name 265 "param" Name 266 "param" Name 271 "param" Name 272 "param" Name 277 "param" Name 278 "param" Name 283 "param" Name 284 "param" Name 289 "param" Name 290 "param" Name 295 "param" Name 296 "param" Name 301 "param" Name 302 "param" Name 305 "param" Name 307 "param" Name 310 "param" Name 312 "param" Name 315 "param" Name 317 "param" Name 320 "param" Name 322 "param" Name 325 "param" Name 327 "param" Name 330 "param" Name 336 "param" Name 341 "param" Name 345 "param" Name 350 "param" Name 355 "param" Name 359 "param" Name 361 "param" Name 366 "param" Name 370 "param" Name 376 "param" Name 380 "param" Name 384 "param" Name 386 "param" Name 391 "param" Name 396 "param" Name 400 "param" Name 404 "param" Name 408 "param" Name 410 "param" Name 416 "param" Name 418 "param" Name 423 "param" Name 427 "param" Name 431 "param" Name 435 "param" Name 439 "param" Name 443 "param" Name 447 "param" Name 451 "param" Name 455 "param" Name 459 "param" Name 463 "param" Name 467 "param" Name 471 "param" Name 475 "param" Name 480 "param" Name 486 "param" Name 490 "param" Name 496 "param" Name 499 "param" Name 505 "param" Name 510 "input" Name 512 "input" Name 515 "@entryPointOutput" Name 516 "param" Decorate 512(input) Location 0 Decorate 515(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 64 7: TypePointer Function 6(float64_t) 8: TypeBool 9: TypePointer Function 8(bool) 10: TypeFunction 2 7(ptr) 9(ptr) 15: TypeInt 32 0 16: TypePointer Function 15(int) 17: TypeFunction 2 7(ptr) 16(ptr) 22: TypeInt 32 1 23: TypePointer Function 22(int) 24: TypeFunction 2 7(ptr) 23(ptr) 29: TypeFloat 32 30: TypePointer Function 29(float) 31: TypeFunction 2 7(ptr) 30(ptr) 36: TypeFunction 2 7(ptr) 7(ptr) 41: TypeFunction 2 23(ptr) 9(ptr) 46: TypeFunction 2 23(ptr) 16(ptr) 51: TypeFunction 2 23(ptr) 23(ptr) 56: TypeFunction 2 23(ptr) 30(ptr) 61: TypeFunction 2 23(ptr) 7(ptr) 66: TypeFunction 2 9(ptr) 70: TypeFunction 2 16(ptr) 74: TypeFunction 2 23(ptr) 78: TypeFunction 2 30(ptr) 82: TypeFunction 2 7(ptr) 104: TypeVector 29(float) 3 105: TypePointer Function 104(fvec3) 106: TypeFunction 2 105(ptr) 113: TypeVector 22(int) 3 114: TypePointer Function 113(ivec3) 115: TypeFunction 2 114(ptr) 125: TypeVector 6(float64_t) 3 126: TypePointer Function 125(f64vec3) 127: TypeFunction 2 126(ptr) 134: TypeVector 15(int) 2 135: TypePointer Function 134(ivec2) 136: TypeFunction 2 135(ptr) 149: TypeVector 29(float) 4 150: TypePointer Function 149(fvec4) 151: TypeFunction 149(fvec4) 150(ptr) 334:6(float64_t) Constant 0 0 339: 15(int) Constant 0 348: 29(float) Constant 0 353: 15(int) Constant 1 373: 22(int) Constant 0 374: 22(int) Constant 1 394: 29(float) Constant 1065353216 414:6(float64_t) Constant 0 1072693248 483: TypeVector 22(int) 2 493: TypeVector 22(int) 4 502: TypeVector 8(bool) 3 511: TypePointer Input 149(fvec4) 512(input): 511(ptr) Variable Input 514: TypePointer Output 149(fvec4) 515(@entryPointOutput): 514(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 510(input): 150(ptr) Variable Function 516(param): 150(ptr) Variable Function 513: 149(fvec4) Load 512(input) Store 510(input) 513 517: 149(fvec4) Load 510(input) Store 516(param) 517 518: 149(fvec4) FunctionCall 153(@PixelShaderFunction(vf4;) 516(param) Store 515(@entryPointOutput) 518 Return FunctionEnd 13(foo1(d1;b1;): 2 Function None 10 11(a): 7(ptr) FunctionParameter 12(b): 9(ptr) FunctionParameter 14: Label Return FunctionEnd 20(foo1(d1;u1;): 2 Function None 17 18(a): 7(ptr) FunctionParameter 19(b): 16(ptr) FunctionParameter 21: Label Return FunctionEnd 27(foo1(d1;i1;): 2 Function None 24 25(a): 7(ptr) FunctionParameter 26(b): 23(ptr) FunctionParameter 28: Label Return FunctionEnd 34(foo1(d1;f1;): 2 Function None 31 32(a): 7(ptr) FunctionParameter 33(b): 30(ptr) FunctionParameter 35: Label Return FunctionEnd 39(foo1(d1;d1;): 2 Function None 36 37(a): 7(ptr) FunctionParameter 38(b): 7(ptr) FunctionParameter 40: Label Return FunctionEnd 44(foo2(i1;b1;): 2 Function None 41 42(a): 23(ptr) FunctionParameter 43(b): 9(ptr) FunctionParameter 45: Label Return FunctionEnd 49(foo2(i1;u1;): 2 Function None 46 47(a): 23(ptr) FunctionParameter 48(b): 16(ptr) FunctionParameter 50: Label Return FunctionEnd 54(foo2(i1;i1;): 2 Function None 51 52(a): 23(ptr) FunctionParameter 53(b): 23(ptr) FunctionParameter 55: Label Return FunctionEnd 59(foo2(i1;f1;): 2 Function None 56 57(a): 23(ptr) FunctionParameter 58(b): 30(ptr) FunctionParameter 60: Label Return FunctionEnd 64(foo2(i1;d1;): 2 Function None 61 62(a): 23(ptr) FunctionParameter 63(b): 7(ptr) FunctionParameter 65: Label Return FunctionEnd 68(foo3(b1;): 2 Function None 66 67(b): 9(ptr) FunctionParameter 69: Label Return FunctionEnd 72(foo4(u1;): 2 Function None 70 71(b): 16(ptr) FunctionParameter 73: Label Return FunctionEnd 76(foo5(i1;): 2 Function None 74 75(b): 23(ptr) FunctionParameter 77: Label Return FunctionEnd 80(foo6(f1;): 2 Function None 78 79(b): 30(ptr) FunctionParameter 81: Label Return FunctionEnd 84(foo7(d1;): 2 Function None 82 83(b): 7(ptr) FunctionParameter 85: Label Return FunctionEnd 87(foo8(f1;): 2 Function None 78 86: 30(ptr) FunctionParameter 88: Label Return FunctionEnd 90(foo8(d1;): 2 Function None 82 89: 7(ptr) FunctionParameter 91: Label Return FunctionEnd 93(foo9(i1;): 2 Function None 74 92: 23(ptr) FunctionParameter 94: Label Return FunctionEnd 96(foo9(u1;): 2 Function None 70 95: 16(ptr) FunctionParameter 97: Label Return FunctionEnd 99(foo10(b1;): 2 Function None 66 98: 9(ptr) FunctionParameter 100: Label Return FunctionEnd 102(foo10(i1;): 2 Function None 74 101: 23(ptr) FunctionParameter 103: Label Return FunctionEnd 108(foo11(vf3;): 2 Function None 106 107: 105(ptr) FunctionParameter 109: Label Return FunctionEnd 111(foo11(d1;): 2 Function None 82 110: 7(ptr) FunctionParameter 112: Label Return FunctionEnd 117(foo11(vi3;): 2 Function None 115 116: 114(ptr) FunctionParameter 118: Label Return FunctionEnd 120(foo11(u1;): 2 Function None 70 119: 16(ptr) FunctionParameter 121: Label Return FunctionEnd 123(foo12(vf1;): 2 Function None 78 122: 30(ptr) FunctionParameter 124: Label Return FunctionEnd 129(foo12(vd3;): 2 Function None 127 128: 126(ptr) FunctionParameter 130: Label Return FunctionEnd 132(foo16(u1;): 2 Function None 70 131: 16(ptr) FunctionParameter 133: Label Return FunctionEnd 138(foo16(vu2;): 2 Function None 136 137: 135(ptr) FunctionParameter 139: Label Return FunctionEnd 141(foo13(vf3;): 2 Function None 106 140: 105(ptr) FunctionParameter 142: Label Return FunctionEnd 144(foo14(vi1;): 2 Function None 74 143: 23(ptr) FunctionParameter 145: Label Return FunctionEnd 147(foo15(vb1;): 2 Function None 66 146: 9(ptr) FunctionParameter 148: Label Return FunctionEnd 153(@PixelShaderFunction(vf4;): 149(fvec4) Function None 151 152(input): 150(ptr) FunctionParameter 154: Label 155(d): 7(ptr) Variable Function 156(b): 9(ptr) Variable Function 157(param): 7(ptr) Variable Function 159(param): 9(ptr) Variable Function 162(param): 7(ptr) Variable Function 164(param): 7(ptr) Variable Function 167(u): 16(ptr) Variable Function 168(param): 7(ptr) Variable Function 170(param): 16(ptr) Variable Function 173(i): 23(ptr) Variable Function 174(param): 7(ptr) Variable Function 176(param): 23(ptr) Variable Function 179(f): 30(ptr) Variable Function 180(param): 7(ptr) Variable Function 182(param): 30(ptr) Variable Function 187(param): 7(ptr) Variable Function 188(param): 9(ptr) Variable Function 193(param): 7(ptr) Variable Function 194(param): 7(ptr) Variable Function 199(param): 7(ptr) Variable Function 200(param): 16(ptr) Variable Function 205(param): 7(ptr) Variable Function 206(param): 23(ptr) Variable Function 211(param): 7(ptr) Variable Function 212(param): 30(ptr) Variable Function 217(param): 7(ptr) Variable Function 218(param): 9(ptr) Variable Function 223(param): 7(ptr) Variable Function 224(param): 7(ptr) Variable Function 229(param): 7(ptr) Variable Function 230(param): 16(ptr) Variable Function 235(param): 7(ptr) Variable Function 236(param): 23(ptr) Variable Function 241(param): 7(ptr) Variable Function 242(param): 30(ptr) Variable Function 247(param): 7(ptr) Variable Function 248(param): 9(ptr) Variable Function 253(param): 7(ptr) Variable Function 254(param): 7(ptr) Variable Function 259(param): 7(ptr) Variable Function 260(param): 16(ptr) Variable Function 265(param): 7(ptr) Variable Function 266(param): 23(ptr) Variable Function 271(param): 7(ptr) Variable Function 272(param): 30(ptr) Variable Function 277(param): 23(ptr) Variable Function 278(param): 9(ptr) Variable Function 283(param): 23(ptr) Variable Function 284(param): 7(ptr) Variable Function 289(param): 23(ptr) Variable Function 290(param): 16(ptr) Variable Function 295(param): 23(ptr) Variable Function 296(param): 23(ptr) Variable Function 301(param): 23(ptr) Variable Function 302(param): 30(ptr) Variable Function 305(param): 23(ptr) Variable Function 307(param): 9(ptr) Variable Function 310(param): 23(ptr) Variable Function 312(param): 7(ptr) Variable Function 315(param): 23(ptr) Variable Function 317(param): 16(ptr) Variable Function 320(param): 23(ptr) Variable Function 322(param): 23(ptr) Variable Function 325(param): 23(ptr) Variable Function 327(param): 30(ptr) Variable Function 330(param): 9(ptr) Variable Function 336(param): 9(ptr) Variable Function 341(param): 9(ptr) Variable Function 345(param): 9(ptr) Variable Function 350(param): 9(ptr) Variable Function 355(param): 16(ptr) Variable Function 359(param): 16(ptr) Variable Function 361(param): 16(ptr) Variable Function 366(param): 16(ptr) Variable Function 370(param): 16(ptr) Variable Function 376(param): 23(ptr) Variable Function 380(param): 23(ptr) Variable Function 384(param): 23(ptr) Variable Function 386(param): 23(ptr) Variable Function 391(param): 23(ptr) Variable Function 396(param): 30(ptr) Variable Function 400(param): 30(ptr) Variable Function 404(param): 30(ptr) Variable Function 408(param): 30(ptr) Variable Function 410(param): 30(ptr) Variable Function 416(param): 7(ptr) Variable Function 418(param): 7(ptr) Variable Function 423(param): 7(ptr) Variable Function 427(param): 7(ptr) Variable Function 431(param): 7(ptr) Variable Function 435(param): 30(ptr) Variable Function 439(param): 30(ptr) Variable Function 443(param): 30(ptr) Variable Function 447(param): 23(ptr) Variable Function 451(param): 16(ptr) Variable Function 455(param): 16(ptr) Variable Function 459(param): 23(ptr) Variable Function 463(param): 23(ptr) Variable Function 467(param): 23(ptr) Variable Function 471(param): 16(ptr) Variable Function 475(param): 7(ptr) Variable Function 480(param): 126(ptr) Variable Function 486(param): 135(ptr) Variable Function 490(param): 105(ptr) Variable Function 496(param): 23(ptr) Variable Function 499(param): 9(ptr) Variable Function 505(param): 9(ptr) Variable Function 158:6(float64_t) Load 155(d) Store 157(param) 158 160: 8(bool) Load 156(b) Store 159(param) 160 161: 2 FunctionCall 13(foo1(d1;b1;) 157(param) 159(param) 163:6(float64_t) Load 155(d) Store 162(param) 163 165:6(float64_t) Load 155(d) Store 164(param) 165 166: 2 FunctionCall 39(foo1(d1;d1;) 162(param) 164(param) 169:6(float64_t) Load 155(d) Store 168(param) 169 171: 15(int) Load 167(u) Store 170(param) 171 172: 2 FunctionCall 20(foo1(d1;u1;) 168(param) 170(param) 175:6(float64_t) Load 155(d) Store 174(param) 175 177: 22(int) Load 173(i) Store 176(param) 177 178: 2 FunctionCall 27(foo1(d1;i1;) 174(param) 176(param) 181:6(float64_t) Load 155(d) Store 180(param) 181 183: 29(float) Load 179(f) Store 182(param) 183 184: 2 FunctionCall 34(foo1(d1;f1;) 180(param) 182(param) 185: 29(float) Load 179(f) 186:6(float64_t) FConvert 185 Store 187(param) 186 189: 8(bool) Load 156(b) Store 188(param) 189 190: 2 FunctionCall 13(foo1(d1;b1;) 187(param) 188(param) 191: 29(float) Load 179(f) 192:6(float64_t) FConvert 191 Store 193(param) 192 195:6(float64_t) Load 155(d) Store 194(param) 195 196: 2 FunctionCall 39(foo1(d1;d1;) 193(param) 194(param) 197: 29(float) Load 179(f) 198:6(float64_t) FConvert 197 Store 199(param) 198 201: 15(int) Load 167(u) Store 200(param) 201 202: 2 FunctionCall 20(foo1(d1;u1;) 199(param) 200(param) 203: 29(float) Load 179(f) 204:6(float64_t) FConvert 203 Store 205(param) 204 207: 22(int) Load 173(i) Store 206(param) 207 208: 2 FunctionCall 27(foo1(d1;i1;) 205(param) 206(param) 209: 29(float) Load 179(f) 210:6(float64_t) FConvert 209 Store 211(param) 210 213: 29(float) Load 179(f) Store 212(param) 213 214: 2 FunctionCall 34(foo1(d1;f1;) 211(param) 212(param) 215: 15(int) Load 167(u) 216:6(float64_t) ConvertUToF 215 Store 217(param) 216 219: 8(bool) Load 156(b) Store 218(param) 219 220: 2 FunctionCall 13(foo1(d1;b1;) 217(param) 218(param) 221: 15(int) Load 167(u) 222:6(float64_t) ConvertUToF 221 Store 223(param) 222 225:6(float64_t) Load 155(d) Store 224(param) 225 226: 2 FunctionCall 39(foo1(d1;d1;) 223(param) 224(param) 227: 15(int) Load 167(u) 228:6(float64_t) ConvertUToF 227 Store 229(param) 228 231: 15(int) Load 167(u) Store 230(param) 231 232: 2 FunctionCall 20(foo1(d1;u1;) 229(param) 230(param) 233: 15(int) Load 167(u) 234:6(float64_t) ConvertUToF 233 Store 235(param) 234 237: 22(int) Load 173(i) Store 236(param) 237 238: 2 FunctionCall 27(foo1(d1;i1;) 235(param) 236(param) 239: 15(int) Load 167(u) 240:6(float64_t) ConvertUToF 239 Store 241(param) 240 243: 29(float) Load 179(f) Store 242(param) 243 244: 2 FunctionCall 34(foo1(d1;f1;) 241(param) 242(param) 245: 22(int) Load 173(i) 246:6(float64_t) ConvertSToF 245 Store 247(param) 246 249: 8(bool) Load 156(b) Store 248(param) 249 250: 2 FunctionCall 13(foo1(d1;b1;) 247(param) 248(param) 251: 22(int) Load 173(i) 252:6(float64_t) ConvertSToF 251 Store 253(param) 252 255:6(float64_t) Load 155(d) Store 254(param) 255 256: 2 FunctionCall 39(foo1(d1;d1;) 253(param) 254(param) 257: 22(int) Load 173(i) 258:6(float64_t) ConvertSToF 257 Store 259(param) 258 261: 15(int) Load 167(u) Store 260(param) 261 262: 2 FunctionCall 20(foo1(d1;u1;) 259(param) 260(param) 263: 22(int) Load 173(i) 264:6(float64_t) ConvertSToF 263 Store 265(param) 264 267: 22(int) Load 173(i) Store 266(param) 267 268: 2 FunctionCall 27(foo1(d1;i1;) 265(param) 266(param) 269: 22(int) Load 173(i) 270:6(float64_t) ConvertSToF 269 Store 271(param) 270 273: 29(float) Load 179(f) Store 272(param) 273 274: 2 FunctionCall 34(foo1(d1;f1;) 271(param) 272(param) 275: 15(int) Load 167(u) 276: 22(int) Bitcast 275 Store 277(param) 276 279: 8(bool) Load 156(b) Store 278(param) 279 280: 2 FunctionCall 44(foo2(i1;b1;) 277(param) 278(param) 281: 15(int) Load 167(u) 282: 22(int) Bitcast 281 Store 283(param) 282 285:6(float64_t) Load 155(d) Store 284(param) 285 286: 2 FunctionCall 64(foo2(i1;d1;) 283(param) 284(param) 287: 15(int) Load 167(u) 288: 22(int) Bitcast 287 Store 289(param) 288 291: 15(int) Load 167(u) Store 290(param) 291 292: 2 FunctionCall 49(foo2(i1;u1;) 289(param) 290(param) 293: 15(int) Load 167(u) 294: 22(int) Bitcast 293 Store 295(param) 294 297: 22(int) Load 173(i) Store 296(param) 297 298: 2 FunctionCall 54(foo2(i1;i1;) 295(param) 296(param) 299: 15(int) Load 167(u) 300: 22(int) Bitcast 299 Store 301(param) 300 303: 29(float) Load 179(f) Store 302(param) 303 304: 2 FunctionCall 59(foo2(i1;f1;) 301(param) 302(param) 306: 22(int) Load 173(i) Store 305(param) 306 308: 8(bool) Load 156(b) Store 307(param) 308 309: 2 FunctionCall 44(foo2(i1;b1;) 305(param) 307(param) 311: 22(int) Load 173(i) Store 310(param) 311 313:6(float64_t) Load 155(d) Store 312(param) 313 314: 2 FunctionCall 64(foo2(i1;d1;) 310(param) 312(param) 316: 22(int) Load 173(i) Store 315(param) 316 318: 15(int) Load 167(u) Store 317(param) 318 319: 2 FunctionCall 49(foo2(i1;u1;) 315(param) 317(param) 321: 22(int) Load 173(i) Store 320(param) 321 323: 22(int) Load 173(i) Store 322(param) 323 324: 2 FunctionCall 54(foo2(i1;i1;) 320(param) 322(param) 326: 22(int) Load 173(i) Store 325(param) 326 328: 29(float) Load 179(f) Store 327(param) 328 329: 2 FunctionCall 59(foo2(i1;f1;) 325(param) 327(param) 331: 8(bool) Load 156(b) Store 330(param) 331 332: 2 FunctionCall 68(foo3(b1;) 330(param) 333:6(float64_t) Load 155(d) 335: 8(bool) FUnordNotEqual 333 334 Store 336(param) 335 337: 2 FunctionCall 68(foo3(b1;) 336(param) 338: 15(int) Load 167(u) 340: 8(bool) INotEqual 338 339 Store 341(param) 340 342: 2 FunctionCall 68(foo3(b1;) 341(param) 343: 22(int) Load 173(i) 344: 8(bool) INotEqual 343 339 Store 345(param) 344 346: 2 FunctionCall 68(foo3(b1;) 345(param) 347: 29(float) Load 179(f) 349: 8(bool) FUnordNotEqual 347 348 Store 350(param) 349 351: 2 FunctionCall 68(foo3(b1;) 350(param) 352: 8(bool) Load 156(b) 354: 15(int) Select 352 353 339 Store 355(param) 354 356: 2 FunctionCall 72(foo4(u1;) 355(param) 357:6(float64_t) Load 155(d) 358: 15(int) ConvertFToU 357 Store 359(param) 358 360: 2 FunctionCall 72(foo4(u1;) 359(param) 362: 15(int) Load 167(u) Store 361(param) 362 363: 2 FunctionCall 72(foo4(u1;) 361(param) 364: 22(int) Load 173(i) 365: 15(int) Bitcast 364 Store 366(param) 365 367: 2 FunctionCall 72(foo4(u1;) 366(param) 368: 29(float) Load 179(f) 369: 15(int) ConvertFToU 368 Store 370(param) 369 371: 2 FunctionCall 72(foo4(u1;) 370(param) 372: 8(bool) Load 156(b) 375: 22(int) Select 372 374 373 Store 376(param) 375 377: 2 FunctionCall 76(foo5(i1;) 376(param) 378:6(float64_t) Load 155(d) 379: 22(int) ConvertFToS 378 Store 380(param) 379 381: 2 FunctionCall 76(foo5(i1;) 380(param) 382: 15(int) Load 167(u) 383: 22(int) Bitcast 382 Store 384(param) 383 385: 2 FunctionCall 76(foo5(i1;) 384(param) 387: 22(int) Load 173(i) Store 386(param) 387 388: 2 FunctionCall 76(foo5(i1;) 386(param) 389: 29(float) Load 179(f) 390: 22(int) ConvertFToS 389 Store 391(param) 390 392: 2 FunctionCall 76(foo5(i1;) 391(param) 393: 8(bool) Load 156(b) 395: 29(float) Select 393 394 348 Store 396(param) 395 397: 2 FunctionCall 80(foo6(f1;) 396(param) 398:6(float64_t) Load 155(d) 399: 29(float) FConvert 398 Store 400(param) 399 401: 2 FunctionCall 80(foo6(f1;) 400(param) 402: 15(int) Load 167(u) 403: 29(float) ConvertUToF 402 Store 404(param) 403 405: 2 FunctionCall 80(foo6(f1;) 404(param) 406: 22(int) Load 173(i) 407: 29(float) ConvertSToF 406 Store 408(param) 407 409: 2 FunctionCall 80(foo6(f1;) 408(param) 411: 29(float) Load 179(f) Store 410(param) 411 412: 2 FunctionCall 80(foo6(f1;) 410(param) 413: 8(bool) Load 156(b) 415:6(float64_t) Select 413 414 334 Store 416(param) 415 417: 2 FunctionCall 84(foo7(d1;) 416(param) 419:6(float64_t) Load 155(d) Store 418(param) 419 420: 2 FunctionCall 84(foo7(d1;) 418(param) 421: 15(int) Load 167(u) 422:6(float64_t) ConvertUToF 421 Store 423(param) 422 424: 2 FunctionCall 84(foo7(d1;) 423(param) 425: 22(int) Load 173(i) 426:6(float64_t) ConvertSToF 425 Store 427(param) 426 428: 2 FunctionCall 84(foo7(d1;) 427(param) 429: 29(float) Load 179(f) 430:6(float64_t) FConvert 429 Store 431(param) 430 432: 2 FunctionCall 84(foo7(d1;) 431(param) 433: 8(bool) Load 156(b) 434: 29(float) Select 433 394 348 Store 435(param) 434 436: 2 FunctionCall 87(foo8(f1;) 435(param) 437: 15(int) Load 167(u) 438: 29(float) ConvertUToF 437 Store 439(param) 438 440: 2 FunctionCall 87(foo8(f1;) 439(param) 441: 22(int) Load 173(i) 442: 29(float) ConvertSToF 441 Store 443(param) 442 444: 2 FunctionCall 87(foo8(f1;) 443(param) 445: 8(bool) Load 156(b) 446: 22(int) Select 445 374 373 Store 447(param) 446 448: 2 FunctionCall 93(foo9(i1;) 447(param) 449: 29(float) Load 179(f) 450: 15(int) ConvertFToU 449 Store 451(param) 450 452: 2 FunctionCall 96(foo9(u1;) 451(param) 453:6(float64_t) Load 155(d) 454: 15(int) ConvertFToU 453 Store 455(param) 454 456: 2 FunctionCall 96(foo9(u1;) 455(param) 457: 15(int) Load 167(u) 458: 22(int) Bitcast 457 Store 459(param) 458 460: 2 FunctionCall 102(foo10(i1;) 459(param) 461: 29(float) Load 179(f) 462: 22(int) ConvertFToS 461 Store 463(param) 462 464: 2 FunctionCall 102(foo10(i1;) 463(param) 465:6(float64_t) Load 155(d) 466: 22(int) ConvertFToS 465 Store 467(param) 466 468: 2 FunctionCall 102(foo10(i1;) 467(param) 469: 8(bool) Load 156(b) 470: 15(int) Select 469 353 339 Store 471(param) 470 472: 2 FunctionCall 120(foo11(u1;) 471(param) 473: 29(float) Load 179(f) 474:6(float64_t) FConvert 473 Store 475(param) 474 476: 2 FunctionCall 111(foo11(d1;) 475(param) 477: 29(float) Load 179(f) 478: 104(fvec3) CompositeConstruct 477 477 477 479:125(f64vec3) FConvert 478 Store 480(param) 479 481: 2 FunctionCall 129(foo12(vd3;) 480(param) 482: 22(int) Load 173(i) 484: 483(ivec2) CompositeConstruct 482 482 485: 134(ivec2) Bitcast 484 Store 486(param) 485 487: 2 FunctionCall 138(foo16(vu2;) 486(param) 488: 29(float) Load 179(f) 489: 104(fvec3) CompositeConstruct 488 488 488 Store 490(param) 489 491: 2 FunctionCall 141(foo13(vf3;) 490(param) 492: 22(int) Load 173(i) 494: 493(ivec4) CompositeConstruct 492 492 492 492 495: 22(int) CompositeExtract 494 0 Store 496(param) 495 497: 2 FunctionCall 144(foo14(vi1;) 496(param) 498: 8(bool) Load 156(b) Store 499(param) 498 500: 2 FunctionCall 147(foo15(vb1;) 499(param) 501: 8(bool) Load 156(b) 503: 502(bvec3) CompositeConstruct 501 501 501 504: 8(bool) CompositeExtract 503 0 Store 505(param) 504 506: 2 FunctionCall 147(foo15(vb1;) 505(param) 507: 149(fvec4) Load 152(input) ReturnValue 507 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.params.default.frag.out000066400000000000000000000730641506534232700237770ustar00rootroot00000000000000hlsl.params.default.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:9 Function Parameters: 0:9 'p0' ( in 4-component vector of int) 0:9 'b1' ( in bool) 0:9 'b2' ( in bool) 0:? Sequence 0:10 Branch: Return with expression 0:10 'p0' ( in 4-component vector of int) 0:17 Function Definition: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:17 Function Parameters: 0:17 'p0' ( in 4-component vector of int) 0:17 'p1' ( in 4-component vector of int) 0:17 'p2' ( in 2-element array of int) 0:17 'p3' ( in int) 0:? Sequence 0:18 Branch: Return with expression 0:18 add ( temp 4-component vector of int) 0:18 add ( temp 4-component vector of int) 0:18 add ( temp 4-component vector of int) 0:18 'p0' ( in 4-component vector of int) 0:18 'p1' ( in 4-component vector of int) 0:18 direct index ( temp int) 0:18 'p2' ( in 2-element array of int) 0:18 Constant: 0:18 0 (const int) 0:18 'p3' ( in int) 0:23 Function Definition: fn2(vi4;i1; ( temp 4-component vector of int) 0:23 Function Parameters: 0:23 'p0' ( in 4-component vector of int) 0:23 'x' ( in int) 0:? Sequence 0:24 Branch: Return with expression 0:24 Constant: 0:24 10 (const int) 0:24 11 (const int) 0:24 12 (const int) 0:24 13 (const int) 0:28 Function Definition: fn2(vi4;f1; ( temp 4-component vector of int) 0:28 Function Parameters: 0:28 'p0' ( in 4-component vector of int) 0:28 'x' ( in float) 0:? Sequence 0:29 Branch: Return with expression 0:29 add ( temp 4-component vector of int) 0:29 'p0' ( in 4-component vector of int) 0:29 Constant: 0:29 20 (const int) 0:29 21 (const int) 0:29 22 (const int) 0:29 23 (const int) 0:32 Function Definition: fn3(i1; ( temp void) 0:32 Function Parameters: 0:32 'p0' ( in int) 0:36 Function Definition: @main( ( temp 4-component vector of int) 0:36 Function Parameters: 0:? Sequence 0:37 Sequence 0:37 move second child to first child ( temp 2-element array of int) 0:37 'myarray' ( temp 2-element array of int) 0:37 Constant: 0:37 30 (const int) 0:37 31 (const int) 0:39 Function Call: fn3(i1; ( temp void) 0:32 Constant: 0:32 3 (const int) 0:40 Function Call: fn3(i1; ( temp void) 0:40 Constant: 0:40 5 (const int) 0:50 Branch: Return with expression 0:49 add ( temp 4-component vector of int) 0:47 add ( temp 4-component vector of int) 0:46 add ( temp 4-component vector of int) 0:45 add ( temp 4-component vector of int) 0:44 add ( temp 4-component vector of int) 0:43 add ( temp 4-component vector of int) 0:42 add ( temp 4-component vector of int) 0:42 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:42 Constant: 0:42 100 (const int) 0:42 100 (const int) 0:42 100 (const int) 0:42 100 (const int) 0:14 Constant: 0:14 -1 (const int) 0:14 -2 (const int) 0:14 -3 (const int) 0:14 -4 (const int) 0:15 Constant: 0:15 1 (const int) 0:15 2 (const int) 0:16 Constant: 0:16 42 (const int) 0:43 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:43 Constant: 0:43 101 (const int) 0:43 101 (const int) 0:43 101 (const int) 0:43 101 (const int) 0:43 ui4: direct index for structure ( uniform 4-component vector of int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4}) 0:43 Constant: 0:43 0 (const uint) 0:15 Constant: 0:15 1 (const int) 0:15 2 (const int) 0:16 Constant: 0:16 42 (const int) 0:44 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:44 Constant: 0:44 102 (const int) 0:44 102 (const int) 0:44 102 (const int) 0:44 102 (const int) 0:44 ui4: direct index for structure ( uniform 4-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4}) 0:44 Constant: 0:44 0 (const uint) 0:44 'myarray' ( temp 2-element array of int) 0:16 Constant: 0:16 42 (const int) 0:45 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:45 Constant: 0:45 103 (const int) 0:45 103 (const int) 0:45 103 (const int) 0:45 103 (const int) 0:45 ui4: direct index for structure ( uniform 4-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4}) 0:45 Constant: 0:45 0 (const uint) 0:45 'myarray' ( temp 2-element array of int) 0:45 Constant: 0:45 99 (const int) 0:46 Function Call: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:46 Constant: 0:46 104 (const int) 0:46 104 (const int) 0:46 104 (const int) 0:46 104 (const int) 0:46 Constant: 0:46 false (const bool) 0:9 Constant: 0:9 false (const bool) 0:47 Function Call: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:47 Constant: 0:47 105 (const int) 0:47 105 (const int) 0:47 105 (const int) 0:47 105 (const int) 0:47 Constant: 0:47 false (const bool) 0:47 Constant: 0:47 true (const bool) 0:49 Function Call: fn2(vi4;f1; ( temp 4-component vector of int) 0:49 Constant: 0:49 110 (const int) 0:49 110 (const int) 0:49 110 (const int) 0:49 110 (const int) 0:49 Constant: 0:49 11.110000 0:50 Function Call: fn2(vi4;i1; ( temp 4-component vector of int) 0:50 Constant: 0:50 111 (const int) 0:50 111 (const int) 0:50 111 (const int) 0:50 111 (const int) 0:50 Constant: 0:50 12 (const int) 0:36 Function Definition: main( ( temp void) 0:36 Function Parameters: 0:? Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) 0:36 Function Call: @main( ( temp 4-component vector of int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4}) 0:? 'cia' ( const int) 0:? -4 (const int) 0:? 'cib' ( const int) 0:? -42 (const int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:9 Function Parameters: 0:9 'p0' ( in 4-component vector of int) 0:9 'b1' ( in bool) 0:9 'b2' ( in bool) 0:? Sequence 0:10 Branch: Return with expression 0:10 'p0' ( in 4-component vector of int) 0:17 Function Definition: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:17 Function Parameters: 0:17 'p0' ( in 4-component vector of int) 0:17 'p1' ( in 4-component vector of int) 0:17 'p2' ( in 2-element array of int) 0:17 'p3' ( in int) 0:? Sequence 0:18 Branch: Return with expression 0:18 add ( temp 4-component vector of int) 0:18 add ( temp 4-component vector of int) 0:18 add ( temp 4-component vector of int) 0:18 'p0' ( in 4-component vector of int) 0:18 'p1' ( in 4-component vector of int) 0:18 direct index ( temp int) 0:18 'p2' ( in 2-element array of int) 0:18 Constant: 0:18 0 (const int) 0:18 'p3' ( in int) 0:23 Function Definition: fn2(vi4;i1; ( temp 4-component vector of int) 0:23 Function Parameters: 0:23 'p0' ( in 4-component vector of int) 0:23 'x' ( in int) 0:? Sequence 0:24 Branch: Return with expression 0:24 Constant: 0:24 10 (const int) 0:24 11 (const int) 0:24 12 (const int) 0:24 13 (const int) 0:28 Function Definition: fn2(vi4;f1; ( temp 4-component vector of int) 0:28 Function Parameters: 0:28 'p0' ( in 4-component vector of int) 0:28 'x' ( in float) 0:? Sequence 0:29 Branch: Return with expression 0:29 add ( temp 4-component vector of int) 0:29 'p0' ( in 4-component vector of int) 0:29 Constant: 0:29 20 (const int) 0:29 21 (const int) 0:29 22 (const int) 0:29 23 (const int) 0:32 Function Definition: fn3(i1; ( temp void) 0:32 Function Parameters: 0:32 'p0' ( in int) 0:36 Function Definition: @main( ( temp 4-component vector of int) 0:36 Function Parameters: 0:? Sequence 0:37 Sequence 0:37 move second child to first child ( temp 2-element array of int) 0:37 'myarray' ( temp 2-element array of int) 0:37 Constant: 0:37 30 (const int) 0:37 31 (const int) 0:39 Function Call: fn3(i1; ( temp void) 0:32 Constant: 0:32 3 (const int) 0:40 Function Call: fn3(i1; ( temp void) 0:40 Constant: 0:40 5 (const int) 0:50 Branch: Return with expression 0:49 add ( temp 4-component vector of int) 0:47 add ( temp 4-component vector of int) 0:46 add ( temp 4-component vector of int) 0:45 add ( temp 4-component vector of int) 0:44 add ( temp 4-component vector of int) 0:43 add ( temp 4-component vector of int) 0:42 add ( temp 4-component vector of int) 0:42 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:42 Constant: 0:42 100 (const int) 0:42 100 (const int) 0:42 100 (const int) 0:42 100 (const int) 0:14 Constant: 0:14 -1 (const int) 0:14 -2 (const int) 0:14 -3 (const int) 0:14 -4 (const int) 0:15 Constant: 0:15 1 (const int) 0:15 2 (const int) 0:16 Constant: 0:16 42 (const int) 0:43 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:43 Constant: 0:43 101 (const int) 0:43 101 (const int) 0:43 101 (const int) 0:43 101 (const int) 0:43 ui4: direct index for structure ( uniform 4-component vector of int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4}) 0:43 Constant: 0:43 0 (const uint) 0:15 Constant: 0:15 1 (const int) 0:15 2 (const int) 0:16 Constant: 0:16 42 (const int) 0:44 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:44 Constant: 0:44 102 (const int) 0:44 102 (const int) 0:44 102 (const int) 0:44 102 (const int) 0:44 ui4: direct index for structure ( uniform 4-component vector of int) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4}) 0:44 Constant: 0:44 0 (const uint) 0:44 'myarray' ( temp 2-element array of int) 0:16 Constant: 0:16 42 (const int) 0:45 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:45 Constant: 0:45 103 (const int) 0:45 103 (const int) 0:45 103 (const int) 0:45 103 (const int) 0:45 ui4: direct index for structure ( uniform 4-component vector of int) 0:45 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4}) 0:45 Constant: 0:45 0 (const uint) 0:45 'myarray' ( temp 2-element array of int) 0:45 Constant: 0:45 99 (const int) 0:46 Function Call: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:46 Constant: 0:46 104 (const int) 0:46 104 (const int) 0:46 104 (const int) 0:46 104 (const int) 0:46 Constant: 0:46 false (const bool) 0:9 Constant: 0:9 false (const bool) 0:47 Function Call: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:47 Constant: 0:47 105 (const int) 0:47 105 (const int) 0:47 105 (const int) 0:47 105 (const int) 0:47 Constant: 0:47 false (const bool) 0:47 Constant: 0:47 true (const bool) 0:49 Function Call: fn2(vi4;f1; ( temp 4-component vector of int) 0:49 Constant: 0:49 110 (const int) 0:49 110 (const int) 0:49 110 (const int) 0:49 110 (const int) 0:49 Constant: 0:49 11.110000 0:50 Function Call: fn2(vi4;i1; ( temp 4-component vector of int) 0:50 Constant: 0:50 111 (const int) 0:50 111 (const int) 0:50 111 (const int) 0:50 111 (const int) 0:50 Constant: 0:50 12 (const int) 0:36 Function Definition: main( ( temp void) 0:36 Function Parameters: 0:? Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) 0:36 Function Call: @main( ( temp 4-component vector of int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4}) 0:? 'cia' ( const int) 0:? -4 (const int) 0:? 'cib' ( const int) 0:? -42 (const int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 178 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 175 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 15 "fn1(vi4;b1;b1;" Name 12 "p0" Name 13 "b1" Name 14 "b2" Name 27 "fn1(vi4;vi4;i1[2];i1;" Name 23 "p0" Name 24 "p1" Name 25 "p2" Name 26 "p3" Name 32 "fn2(vi4;i1;" Name 30 "p0" Name 31 "x" Name 39 "fn2(vi4;f1;" Name 37 "p0" Name 38 "x" Name 43 "fn3(i1;" Name 42 "p0" Name 46 "@main(" Name 80 "myarray" Name 85 "param" Name 88 "param" Name 101 "param" Name 102 "param" Name 103 "param" Name 104 "param" Name 108 "$Global" MemberName 108($Global) 0 "ui4" Name 110 "" Name 111 "param" Name 112 "param" Name 116 "param" Name 117 "param" Name 122 "param" Name 123 "param" Name 126 "param" Name 128 "param" Name 134 "param" Name 135 "param" Name 138 "param" Name 140 "param" Name 146 "param" Name 147 "param" Name 148 "param" Name 154 "param" Name 155 "param" Name 156 "param" Name 162 "param" Name 163 "param" Name 168 "param" Name 169 "param" Name 175 "@entryPointOutput" Decorate 108($Global) Block MemberDecorate 108($Global) 0 Offset 0 Decorate 110 Binding 0 Decorate 110 DescriptorSet 0 Decorate 175(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 4 8: TypePointer Function 7(ivec4) 9: TypeBool 10: TypePointer Function 9(bool) 11: TypeFunction 7(ivec4) 8(ptr) 10(ptr) 10(ptr) 17: TypeInt 32 0 18: 17(int) Constant 2 19: TypeArray 6(int) 18 20: TypePointer Function 19 21: TypePointer Function 6(int) 22: TypeFunction 7(ivec4) 8(ptr) 8(ptr) 20(ptr) 21(ptr) 29: TypeFunction 7(ivec4) 8(ptr) 21(ptr) 34: TypeFloat 32 35: TypePointer Function 34(float) 36: TypeFunction 7(ivec4) 8(ptr) 35(ptr) 41: TypeFunction 2 21(ptr) 45: TypeFunction 7(ivec4) 54: 6(int) Constant 0 64: 6(int) Constant 10 65: 6(int) Constant 11 66: 6(int) Constant 12 67: 6(int) Constant 13 68: 7(ivec4) ConstantComposite 64 65 66 67 72: 6(int) Constant 20 73: 6(int) Constant 21 74: 6(int) Constant 22 75: 6(int) Constant 23 76: 7(ivec4) ConstantComposite 72 73 74 75 81: 6(int) Constant 30 82: 6(int) Constant 31 83: 19 ConstantComposite 81 82 84: 6(int) Constant 3 87: 6(int) Constant 5 90: 6(int) Constant 100 91: 7(ivec4) ConstantComposite 90 90 90 90 92: 6(int) Constant 4294967295 93: 6(int) Constant 4294967294 94: 6(int) Constant 4294967293 95: 6(int) Constant 4294967292 96: 7(ivec4) ConstantComposite 92 93 94 95 97: 6(int) Constant 1 98: 6(int) Constant 2 99: 19 ConstantComposite 97 98 100: 6(int) Constant 42 106: 6(int) Constant 101 107: 7(ivec4) ConstantComposite 106 106 106 106 108($Global): TypeStruct 7(ivec4) 109: TypePointer Uniform 108($Global) 110: 109(ptr) Variable Uniform 113: TypePointer Uniform 7(ivec4) 120: 6(int) Constant 102 121: 7(ivec4) ConstantComposite 120 120 120 120 131: 6(int) Constant 103 132: 7(ivec4) ConstantComposite 131 131 131 131 133: 6(int) Constant 99 143: 6(int) Constant 104 144: 7(ivec4) ConstantComposite 143 143 143 143 145: 9(bool) ConstantFalse 151: 6(int) Constant 105 152: 7(ivec4) ConstantComposite 151 151 151 151 153: 9(bool) ConstantTrue 159: 6(int) Constant 110 160: 7(ivec4) ConstantComposite 159 159 159 159 161: 34(float) Constant 1093780111 166: 6(int) Constant 111 167: 7(ivec4) ConstantComposite 166 166 166 166 174: TypePointer Output 7(ivec4) 175(@entryPointOutput): 174(ptr) Variable Output 177: 6(int) Constant 4294967254 4(main): 2 Function None 3 5: Label 176: 7(ivec4) FunctionCall 46(@main() Store 175(@entryPointOutput) 176 Return FunctionEnd 15(fn1(vi4;b1;b1;): 7(ivec4) Function None 11 12(p0): 8(ptr) FunctionParameter 13(b1): 10(ptr) FunctionParameter 14(b2): 10(ptr) FunctionParameter 16: Label 48: 7(ivec4) Load 12(p0) ReturnValue 48 FunctionEnd 27(fn1(vi4;vi4;i1[2];i1;): 7(ivec4) Function None 22 23(p0): 8(ptr) FunctionParameter 24(p1): 8(ptr) FunctionParameter 25(p2): 20(ptr) FunctionParameter 26(p3): 21(ptr) FunctionParameter 28: Label 51: 7(ivec4) Load 23(p0) 52: 7(ivec4) Load 24(p1) 53: 7(ivec4) IAdd 51 52 55: 21(ptr) AccessChain 25(p2) 54 56: 6(int) Load 55 57: 7(ivec4) CompositeConstruct 56 56 56 56 58: 7(ivec4) IAdd 53 57 59: 6(int) Load 26(p3) 60: 7(ivec4) CompositeConstruct 59 59 59 59 61: 7(ivec4) IAdd 58 60 ReturnValue 61 FunctionEnd 32(fn2(vi4;i1;): 7(ivec4) Function None 29 30(p0): 8(ptr) FunctionParameter 31(x): 21(ptr) FunctionParameter 33: Label ReturnValue 68 FunctionEnd 39(fn2(vi4;f1;): 7(ivec4) Function None 36 37(p0): 8(ptr) FunctionParameter 38(x): 35(ptr) FunctionParameter 40: Label 71: 7(ivec4) Load 37(p0) 77: 7(ivec4) IAdd 71 76 ReturnValue 77 FunctionEnd 43(fn3(i1;): 2 Function None 41 42(p0): 21(ptr) FunctionParameter 44: Label Return FunctionEnd 46(@main(): 7(ivec4) Function None 45 47: Label 80(myarray): 20(ptr) Variable Function 85(param): 21(ptr) Variable Function 88(param): 21(ptr) Variable Function 101(param): 8(ptr) Variable Function 102(param): 8(ptr) Variable Function 103(param): 20(ptr) Variable Function 104(param): 21(ptr) Variable Function 111(param): 8(ptr) Variable Function 112(param): 8(ptr) Variable Function 116(param): 20(ptr) Variable Function 117(param): 21(ptr) Variable Function 122(param): 8(ptr) Variable Function 123(param): 8(ptr) Variable Function 126(param): 20(ptr) Variable Function 128(param): 21(ptr) Variable Function 134(param): 8(ptr) Variable Function 135(param): 8(ptr) Variable Function 138(param): 20(ptr) Variable Function 140(param): 21(ptr) Variable Function 146(param): 8(ptr) Variable Function 147(param): 10(ptr) Variable Function 148(param): 10(ptr) Variable Function 154(param): 8(ptr) Variable Function 155(param): 10(ptr) Variable Function 156(param): 10(ptr) Variable Function 162(param): 8(ptr) Variable Function 163(param): 35(ptr) Variable Function 168(param): 8(ptr) Variable Function 169(param): 21(ptr) Variable Function Store 80(myarray) 83 Store 85(param) 84 86: 2 FunctionCall 43(fn3(i1;) 85(param) Store 88(param) 87 89: 2 FunctionCall 43(fn3(i1;) 88(param) Store 101(param) 91 Store 102(param) 96 Store 103(param) 99 Store 104(param) 100 105: 7(ivec4) FunctionCall 27(fn1(vi4;vi4;i1[2];i1;) 101(param) 102(param) 103(param) 104(param) Store 111(param) 107 114: 113(ptr) AccessChain 110 54 115: 7(ivec4) Load 114 Store 112(param) 115 Store 116(param) 99 Store 117(param) 100 118: 7(ivec4) FunctionCall 27(fn1(vi4;vi4;i1[2];i1;) 111(param) 112(param) 116(param) 117(param) 119: 7(ivec4) IAdd 105 118 Store 122(param) 121 124: 113(ptr) AccessChain 110 54 125: 7(ivec4) Load 124 Store 123(param) 125 127: 19 Load 80(myarray) Store 126(param) 127 Store 128(param) 100 129: 7(ivec4) FunctionCall 27(fn1(vi4;vi4;i1[2];i1;) 122(param) 123(param) 126(param) 128(param) 130: 7(ivec4) IAdd 119 129 Store 134(param) 132 136: 113(ptr) AccessChain 110 54 137: 7(ivec4) Load 136 Store 135(param) 137 139: 19 Load 80(myarray) Store 138(param) 139 Store 140(param) 133 141: 7(ivec4) FunctionCall 27(fn1(vi4;vi4;i1[2];i1;) 134(param) 135(param) 138(param) 140(param) 142: 7(ivec4) IAdd 130 141 Store 146(param) 144 Store 147(param) 145 Store 148(param) 145 149: 7(ivec4) FunctionCall 15(fn1(vi4;b1;b1;) 146(param) 147(param) 148(param) 150: 7(ivec4) IAdd 142 149 Store 154(param) 152 Store 155(param) 145 Store 156(param) 153 157: 7(ivec4) FunctionCall 15(fn1(vi4;b1;b1;) 154(param) 155(param) 156(param) 158: 7(ivec4) IAdd 150 157 Store 162(param) 160 Store 163(param) 161 164: 7(ivec4) FunctionCall 39(fn2(vi4;f1;) 162(param) 163(param) 165: 7(ivec4) IAdd 158 164 Store 168(param) 167 Store 169(param) 66 170: 7(ivec4) FunctionCall 32(fn2(vi4;i1;) 168(param) 169(param) 171: 7(ivec4) IAdd 165 170 ReturnValue 171 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.params.default.negative.frag.out000066400000000000000000000416411506534232700255740ustar00rootroot00000000000000hlsl.params.default.negative.frag ERROR: 0:27: '' : invalid default parameter value ERROR: 0:32: 'p1' : invalid parameter after default value parameters ERROR: 0:40: 'fn1' : ambiguous best function under implicit type conversion ERROR: 0:47: 'fn2' : ambiguous best function under implicit type conversion ERROR: 4 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:7 Function Definition: fn1(vi4; ( temp 4-component vector of int) 0:7 Function Parameters: 0:7 'p0' ( in 4-component vector of int) 0:? Sequence 0:7 Branch: Return with expression 0:7 Constant: 0:7 1 (const int) 0:7 2 (const int) 0:7 3 (const int) 0:7 4 (const int) 0:9 Function Definition: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:9 Function Parameters: 0:9 'p0' ( in 4-component vector of int) 0:9 'b1' ( in bool) 0:9 'b2' ( in bool) 0:? Sequence 0:10 Branch: Return with expression 0:10 'p0' ( in 4-component vector of int) 0:17 Function Definition: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:17 Function Parameters: 0:17 'p0' ( in 4-component vector of int) 0:17 'p1' ( in 4-component vector of int) 0:17 'p2' ( in 2-element array of int) 0:17 'p3' ( in int) 0:? Sequence 0:18 Branch: Return with expression 0:18 add ( temp 4-component vector of int) 0:18 add ( temp 4-component vector of int) 0:18 add ( temp 4-component vector of int) 0:18 'p0' ( in 4-component vector of int) 0:18 'p1' ( in 4-component vector of int) 0:18 direct index ( temp int) 0:18 'p2' ( in 2-element array of int) 0:18 Constant: 0:18 0 (const int) 0:18 'p3' ( in int) 0:23 Function Definition: fn2(vi4;i1; ( temp 4-component vector of int) 0:23 Function Parameters: 0:23 'p0' ( in 4-component vector of int) 0:23 'x' ( in int) 0:? Sequence 0:24 Branch: Return with expression 0:24 Constant: 0:24 10 (const int) 0:24 11 (const int) 0:24 12 (const int) 0:24 13 (const int) 0:28 Function Definition: fn2(vi4; ( temp 4-component vector of int) 0:28 Function Parameters: 0:28 'p0' ( in 4-component vector of int) 0:? Sequence 0:29 Branch: Return with expression 0:29 add ( temp 4-component vector of int) 0:29 'p0' ( in 4-component vector of int) 0:29 Constant: 0:29 20 (const int) 0:29 21 (const int) 0:29 22 (const int) 0:29 23 (const int) 0:33 Function Definition: fn3(i1; ( temp void) 0:33 Function Parameters: 0:33 'p0' ( in int) 0:37 Function Definition: @main( ( temp 4-component vector of int) 0:37 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp 2-element array of int) 0:38 'myarray' ( temp 2-element array of int) 0:38 Constant: 0:38 30 (const int) 0:38 31 (const int) 0:49 Branch: Return with expression 0:48 add ( temp 4-component vector of int) 0:47 add ( temp 4-component vector of int) 0:45 add ( temp 4-component vector of int) 0:44 add ( temp 4-component vector of int) 0:43 add ( temp 4-component vector of int) 0:42 add ( temp 4-component vector of int) 0:41 add ( temp 4-component vector of int) 0:40 add ( temp 4-component vector of int) 0:40 Function Call: fn1(vi4; ( temp 4-component vector of int) 0:40 Constant: 0:40 100 (const int) 0:40 100 (const int) 0:40 100 (const int) 0:40 100 (const int) 0:41 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:41 Constant: 0:41 101 (const int) 0:41 101 (const int) 0:41 101 (const int) 0:41 101 (const int) 0:41 ui4: direct index for structure ( uniform 4-component vector of int) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4, uniform float ufvar}) 0:41 Constant: 0:41 0 (const uint) 0:15 Constant: 0:15 1 (const int) 0:15 2 (const int) 0:16 Constant: 0:16 42 (const int) 0:42 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:42 Constant: 0:42 102 (const int) 0:42 102 (const int) 0:42 102 (const int) 0:42 102 (const int) 0:42 ui4: direct index for structure ( uniform 4-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4, uniform float ufvar}) 0:42 Constant: 0:42 0 (const uint) 0:42 'myarray' ( temp 2-element array of int) 0:16 Constant: 0:16 42 (const int) 0:43 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:43 Constant: 0:43 103 (const int) 0:43 103 (const int) 0:43 103 (const int) 0:43 103 (const int) 0:43 ui4: direct index for structure ( uniform 4-component vector of int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4, uniform float ufvar}) 0:43 Constant: 0:43 0 (const uint) 0:43 'myarray' ( temp 2-element array of int) 0:43 Constant: 0:43 99 (const int) 0:44 Function Call: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:44 Constant: 0:44 104 (const int) 0:44 104 (const int) 0:44 104 (const int) 0:44 104 (const int) 0:44 Constant: 0:44 false (const bool) 0:9 Constant: 0:9 false (const bool) 0:45 Function Call: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:45 Constant: 0:45 105 (const int) 0:45 105 (const int) 0:45 105 (const int) 0:45 105 (const int) 0:45 Constant: 0:45 false (const bool) 0:45 Constant: 0:45 true (const bool) 0:47 Function Call: fn2(vi4; ( temp 4-component vector of int) 0:47 Constant: 0:47 112 (const int) 0:47 112 (const int) 0:47 112 (const int) 0:47 112 (const int) 0:48 Function Call: fn2(vi4;i1; ( temp 4-component vector of int) 0:48 Constant: 0:48 110 (const int) 0:48 110 (const int) 0:48 110 (const int) 0:48 110 (const int) 0:48 Constant: 0:48 11 (const int) 0:49 Function Call: fn2(vi4;i1; ( temp 4-component vector of int) 0:49 Constant: 0:49 111 (const int) 0:49 111 (const int) 0:49 111 (const int) 0:49 111 (const int) 0:49 Constant: 0:49 12 (const int) 0:37 Function Definition: main( ( temp void) 0:37 Function Parameters: 0:? Sequence 0:37 move second child to first child ( temp 4-component vector of int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) 0:37 Function Call: @main( ( temp 4-component vector of int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4, uniform float ufvar}) 0:? 'cia' ( const int) 0:? -4 (const int) 0:? 'cib' ( const int) 0:? -42 (const int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:7 Function Definition: fn1(vi4; ( temp 4-component vector of int) 0:7 Function Parameters: 0:7 'p0' ( in 4-component vector of int) 0:? Sequence 0:7 Branch: Return with expression 0:7 Constant: 0:7 1 (const int) 0:7 2 (const int) 0:7 3 (const int) 0:7 4 (const int) 0:9 Function Definition: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:9 Function Parameters: 0:9 'p0' ( in 4-component vector of int) 0:9 'b1' ( in bool) 0:9 'b2' ( in bool) 0:? Sequence 0:10 Branch: Return with expression 0:10 'p0' ( in 4-component vector of int) 0:17 Function Definition: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:17 Function Parameters: 0:17 'p0' ( in 4-component vector of int) 0:17 'p1' ( in 4-component vector of int) 0:17 'p2' ( in 2-element array of int) 0:17 'p3' ( in int) 0:? Sequence 0:18 Branch: Return with expression 0:18 add ( temp 4-component vector of int) 0:18 add ( temp 4-component vector of int) 0:18 add ( temp 4-component vector of int) 0:18 'p0' ( in 4-component vector of int) 0:18 'p1' ( in 4-component vector of int) 0:18 direct index ( temp int) 0:18 'p2' ( in 2-element array of int) 0:18 Constant: 0:18 0 (const int) 0:18 'p3' ( in int) 0:23 Function Definition: fn2(vi4;i1; ( temp 4-component vector of int) 0:23 Function Parameters: 0:23 'p0' ( in 4-component vector of int) 0:23 'x' ( in int) 0:? Sequence 0:24 Branch: Return with expression 0:24 Constant: 0:24 10 (const int) 0:24 11 (const int) 0:24 12 (const int) 0:24 13 (const int) 0:28 Function Definition: fn2(vi4; ( temp 4-component vector of int) 0:28 Function Parameters: 0:28 'p0' ( in 4-component vector of int) 0:? Sequence 0:29 Branch: Return with expression 0:29 add ( temp 4-component vector of int) 0:29 'p0' ( in 4-component vector of int) 0:29 Constant: 0:29 20 (const int) 0:29 21 (const int) 0:29 22 (const int) 0:29 23 (const int) 0:33 Function Definition: fn3(i1; ( temp void) 0:33 Function Parameters: 0:33 'p0' ( in int) 0:37 Function Definition: @main( ( temp 4-component vector of int) 0:37 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp 2-element array of int) 0:38 'myarray' ( temp 2-element array of int) 0:38 Constant: 0:38 30 (const int) 0:38 31 (const int) 0:49 Branch: Return with expression 0:48 add ( temp 4-component vector of int) 0:47 add ( temp 4-component vector of int) 0:45 add ( temp 4-component vector of int) 0:44 add ( temp 4-component vector of int) 0:43 add ( temp 4-component vector of int) 0:42 add ( temp 4-component vector of int) 0:41 add ( temp 4-component vector of int) 0:40 add ( temp 4-component vector of int) 0:40 Function Call: fn1(vi4; ( temp 4-component vector of int) 0:40 Constant: 0:40 100 (const int) 0:40 100 (const int) 0:40 100 (const int) 0:40 100 (const int) 0:41 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:41 Constant: 0:41 101 (const int) 0:41 101 (const int) 0:41 101 (const int) 0:41 101 (const int) 0:41 ui4: direct index for structure ( uniform 4-component vector of int) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4, uniform float ufvar}) 0:41 Constant: 0:41 0 (const uint) 0:15 Constant: 0:15 1 (const int) 0:15 2 (const int) 0:16 Constant: 0:16 42 (const int) 0:42 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:42 Constant: 0:42 102 (const int) 0:42 102 (const int) 0:42 102 (const int) 0:42 102 (const int) 0:42 ui4: direct index for structure ( uniform 4-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4, uniform float ufvar}) 0:42 Constant: 0:42 0 (const uint) 0:42 'myarray' ( temp 2-element array of int) 0:16 Constant: 0:16 42 (const int) 0:43 Function Call: fn1(vi4;vi4;i1[2];i1; ( temp 4-component vector of int) 0:43 Constant: 0:43 103 (const int) 0:43 103 (const int) 0:43 103 (const int) 0:43 103 (const int) 0:43 ui4: direct index for structure ( uniform 4-component vector of int) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4, uniform float ufvar}) 0:43 Constant: 0:43 0 (const uint) 0:43 'myarray' ( temp 2-element array of int) 0:43 Constant: 0:43 99 (const int) 0:44 Function Call: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:44 Constant: 0:44 104 (const int) 0:44 104 (const int) 0:44 104 (const int) 0:44 104 (const int) 0:44 Constant: 0:44 false (const bool) 0:9 Constant: 0:9 false (const bool) 0:45 Function Call: fn1(vi4;b1;b1; ( temp 4-component vector of int) 0:45 Constant: 0:45 105 (const int) 0:45 105 (const int) 0:45 105 (const int) 0:45 105 (const int) 0:45 Constant: 0:45 false (const bool) 0:45 Constant: 0:45 true (const bool) 0:47 Function Call: fn2(vi4; ( temp 4-component vector of int) 0:47 Constant: 0:47 112 (const int) 0:47 112 (const int) 0:47 112 (const int) 0:47 112 (const int) 0:48 Function Call: fn2(vi4;i1; ( temp 4-component vector of int) 0:48 Constant: 0:48 110 (const int) 0:48 110 (const int) 0:48 110 (const int) 0:48 110 (const int) 0:48 Constant: 0:48 11 (const int) 0:49 Function Call: fn2(vi4;i1; ( temp 4-component vector of int) 0:49 Constant: 0:49 111 (const int) 0:49 111 (const int) 0:49 111 (const int) 0:49 111 (const int) 0:49 Constant: 0:49 12 (const int) 0:37 Function Definition: main( ( temp void) 0:37 Function Parameters: 0:? Sequence 0:37 move second child to first child ( temp 4-component vector of int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) 0:37 Function Call: @main( ( temp 4-component vector of int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of int ui4, uniform float ufvar}) 0:? 'cia' ( const int) 0:? -4 (const int) 0:? 'cib' ( const int) 0:? -42 (const int) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.partialFlattenLocal.vert.out000066400000000000000000000502371506534232700250540ustar00rootroot00000000000000hlsl.partialFlattenLocal.vert WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 0:? Sequence 0:12 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'pos' ( in 4-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp texture2D) 0:14 tex: direct index for structure ( temp texture2D) 0:14 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:14 Constant: 0:14 0 (const int) 0:14 'tex' ( uniform texture2D) 0:15 move second child to first child ( temp 3-component vector of float) 0:15 direct index ( temp 3-component vector of float) 0:15 pos: direct index for structure ( temp 3-element array of 3-component vector of float) 0:15 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0.000000 0:15 0.000000 0:15 0.000000 0:16 move second child to first child ( temp 2-component vector of float) 0:16 direct index ( temp 2-component vector of float) 0:16 uv: direct index for structure ( temp 2-element array of 2-component vector of float) 0:16 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:16 Constant: 0:16 2 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0.000000 0:16 1.000000 0:17 move second child to first child ( temp float) 0:17 x: direct index for structure ( temp float) 0:17 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:17 Constant: 0:17 3 (const int) 0:17 Constant: 0:17 1.000000 0:18 move second child to first child ( temp int) 0:18 n: direct index for structure ( temp int) 0:18 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:18 Constant: 0:18 4 (const int) 0:18 Constant: 0:18 3 (const int) 0:20 Sequence 0:20 move second child to first child ( temp int) 0:20 'i' ( temp int) 0:20 Constant: 0:20 0 (const int) 0:20 Loop with condition tested first 0:20 Loop Condition 0:20 Compare Less Than ( temp bool) 0:20 'i' ( temp int) 0:20 Constant: 0:20 1 (const int) 0:20 Loop Body 0:? Sequence 0:21 add second child into first child ( temp 2-component vector of float) 0:21 vector swizzle ( temp 2-component vector of float) 0:21 indirect index ( temp 3-component vector of float) 0:21 pos: direct index for structure ( temp 3-element array of 3-component vector of float) 0:21 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:21 Constant: 0:21 1 (const int) 0:21 'i' ( temp int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 indirect index ( temp 2-component vector of float) 0:21 uv: direct index for structure ( temp 2-element array of 2-component vector of float) 0:21 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:21 Constant: 0:21 2 (const int) 0:21 'i' ( temp int) 0:20 Loop Terminal Expression 0:20 Pre-Increment ( temp int) 0:20 'i' ( temp int) 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:24 'packed2' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:24 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:26 Branch: Return with expression 0:26 add ( temp 4-component vector of float) 0:26 'pos' ( in 4-component vector of float) 0:26 Construct vec4 ( temp 4-component vector of float) 0:26 direct index ( temp 3-component vector of float) 0:26 pos: direct index for structure ( temp 3-element array of 3-component vector of float) 0:26 'packed2' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0.000000 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' (layout( location=0) in 4-component vector of float) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:12 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex' ( uniform texture2D) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:? 'pos' (layout( location=0) in 4-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:12 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'pos' ( in 4-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp texture2D) 0:14 tex: direct index for structure ( temp texture2D) 0:14 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:14 Constant: 0:14 0 (const int) 0:14 'tex' ( uniform texture2D) 0:15 move second child to first child ( temp 3-component vector of float) 0:15 direct index ( temp 3-component vector of float) 0:15 pos: direct index for structure ( temp 3-element array of 3-component vector of float) 0:15 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0.000000 0:15 0.000000 0:15 0.000000 0:16 move second child to first child ( temp 2-component vector of float) 0:16 direct index ( temp 2-component vector of float) 0:16 uv: direct index for structure ( temp 2-element array of 2-component vector of float) 0:16 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:16 Constant: 0:16 2 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0.000000 0:16 1.000000 0:17 move second child to first child ( temp float) 0:17 x: direct index for structure ( temp float) 0:17 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:17 Constant: 0:17 3 (const int) 0:17 Constant: 0:17 1.000000 0:18 move second child to first child ( temp int) 0:18 n: direct index for structure ( temp int) 0:18 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:18 Constant: 0:18 4 (const int) 0:18 Constant: 0:18 3 (const int) 0:20 Sequence 0:20 move second child to first child ( temp int) 0:20 'i' ( temp int) 0:20 Constant: 0:20 0 (const int) 0:20 Loop with condition tested first 0:20 Loop Condition 0:20 Compare Less Than ( temp bool) 0:20 'i' ( temp int) 0:20 Constant: 0:20 1 (const int) 0:20 Loop Body 0:? Sequence 0:21 add second child into first child ( temp 2-component vector of float) 0:21 vector swizzle ( temp 2-component vector of float) 0:21 indirect index ( temp 3-component vector of float) 0:21 pos: direct index for structure ( temp 3-element array of 3-component vector of float) 0:21 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:21 Constant: 0:21 1 (const int) 0:21 'i' ( temp int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 indirect index ( temp 2-component vector of float) 0:21 uv: direct index for structure ( temp 2-element array of 2-component vector of float) 0:21 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:21 Constant: 0:21 2 (const int) 0:21 'i' ( temp int) 0:20 Loop Terminal Expression 0:20 Pre-Increment ( temp int) 0:20 'i' ( temp int) 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:24 'packed2' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:24 'packed' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:26 Branch: Return with expression 0:26 add ( temp 4-component vector of float) 0:26 'pos' ( in 4-component vector of float) 0:26 Construct vec4 ( temp 4-component vector of float) 0:26 direct index ( temp 3-component vector of float) 0:26 pos: direct index for structure ( temp 3-element array of 3-component vector of float) 0:26 'packed2' ( temp structure{ temp texture2D tex, temp 3-element array of 3-component vector of float pos, temp 2-element array of 2-component vector of float uv, temp float x, temp int n}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 0.000000 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' (layout( location=0) in 4-component vector of float) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:12 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex' ( uniform texture2D) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:? 'pos' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 86 89 Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "pos" Name 22 "Packed" MemberName 22(Packed) 0 "tex" MemberName 22(Packed) 1 "pos" MemberName 22(Packed) 2 "uv" MemberName 22(Packed) 3 "x" MemberName 22(Packed) 4 "n" Name 24 "packed" Name 27 "tex" Name 47 "i" Name 72 "packed2" Name 84 "pos" Name 86 "pos" Name 89 "@entryPointOutput" Name 90 "param" Decorate 27(tex) Binding 0 Decorate 27(tex) DescriptorSet 0 Decorate 86(pos) Location 0 Decorate 89(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) 13: TypeImage 6(float) 2D sampled format:Unknown 14: TypeVector 6(float) 3 15: TypeInt 32 0 16: 15(int) Constant 3 17: TypeArray 14(fvec3) 16 18: TypeVector 6(float) 2 19: 15(int) Constant 2 20: TypeArray 18(fvec2) 19 21: TypeInt 32 1 22(Packed): TypeStruct 13 17 20 6(float) 21(int) 23: TypePointer Function 22(Packed) 25: 21(int) Constant 0 26: TypePointer UniformConstant 13 27(tex): 26(ptr) Variable UniformConstant 29: TypePointer Function 13 31: 21(int) Constant 1 32: 6(float) Constant 0 33: 14(fvec3) ConstantComposite 32 32 32 34: TypePointer Function 14(fvec3) 36: 21(int) Constant 2 37: 6(float) Constant 1065353216 38: 18(fvec2) ConstantComposite 32 37 39: TypePointer Function 18(fvec2) 41: 21(int) Constant 3 42: TypePointer Function 6(float) 44: 21(int) Constant 4 45: TypePointer Function 21(int) 54: TypeBool 64: 15(int) Constant 0 67: 15(int) Constant 1 85: TypePointer Input 7(fvec4) 86(pos): 85(ptr) Variable Input 88: TypePointer Output 7(fvec4) 89(@entryPointOutput): 88(ptr) Variable Output 4(main): 2 Function None 3 5: Label 84(pos): 8(ptr) Variable Function 90(param): 8(ptr) Variable Function 87: 7(fvec4) Load 86(pos) Store 84(pos) 87 91: 7(fvec4) Load 84(pos) Store 90(param) 91 92: 7(fvec4) FunctionCall 11(@main(vf4;) 90(param) Store 89(@entryPointOutput) 92 Return FunctionEnd 11(@main(vf4;): 7(fvec4) Function None 9 10(pos): 8(ptr) FunctionParameter 12: Label 24(packed): 23(ptr) Variable Function 47(i): 45(ptr) Variable Function 72(packed2): 23(ptr) Variable Function 28: 13 Load 27(tex) 30: 29(ptr) AccessChain 24(packed) 25 Store 30 28 35: 34(ptr) AccessChain 24(packed) 31 25 Store 35 33 40: 39(ptr) AccessChain 24(packed) 36 25 Store 40 38 43: 42(ptr) AccessChain 24(packed) 41 Store 43 37 46: 45(ptr) AccessChain 24(packed) 44 Store 46 41 Store 47(i) 25 Branch 48 48: Label LoopMerge 50 51 None Branch 52 52: Label 53: 21(int) Load 47(i) 55: 54(bool) SLessThan 53 31 BranchConditional 55 49 50 49: Label 56: 21(int) Load 47(i) 57: 21(int) Load 47(i) 58: 39(ptr) AccessChain 24(packed) 36 57 59: 18(fvec2) Load 58 60: 34(ptr) AccessChain 24(packed) 31 56 61: 14(fvec3) Load 60 62: 18(fvec2) VectorShuffle 61 61 0 1 63: 18(fvec2) FAdd 62 59 65: 42(ptr) AccessChain 24(packed) 31 56 64 66: 6(float) CompositeExtract 63 0 Store 65 66 68: 42(ptr) AccessChain 24(packed) 31 56 67 69: 6(float) CompositeExtract 63 1 Store 68 69 Branch 51 51: Label 70: 21(int) Load 47(i) 71: 21(int) IAdd 70 31 Store 47(i) 71 Branch 48 50: Label 73: 22(Packed) Load 24(packed) Store 72(packed2) 73 74: 7(fvec4) Load 10(pos) 75: 34(ptr) AccessChain 72(packed2) 31 25 76: 14(fvec3) Load 75 77: 6(float) CompositeExtract 76 0 78: 6(float) CompositeExtract 76 1 79: 6(float) CompositeExtract 76 2 80: 7(fvec4) CompositeConstruct 77 78 79 32 81: 7(fvec4) FAdd 74 80 ReturnValue 81 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.partialFlattenMixed.vert.out000066400000000000000000000176651506534232700251000ustar00rootroot00000000000000hlsl.partialFlattenMixed.vert WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 0:? Sequence 0:10 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:10 Function Parameters: 0:10 'pos' ( in 4-component vector of float) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp texture2D) 0:13 direct index ( temp texture2D) 0:13 membTex: direct index for structure ( temp 2-element array of texture2D) 0:13 'packed' ( temp structure{ temp int a, temp 2-element array of texture2D membTex, temp int b}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:? 'tex[0]' ( uniform texture2D) 0:13 move second child to first child ( temp texture2D) 0:13 direct index ( temp texture2D) 0:13 membTex: direct index for structure ( temp 2-element array of texture2D) 0:13 'packed' ( temp structure{ temp int a, temp 2-element array of texture2D membTex, temp int b}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:? 'tex[1]' ( uniform texture2D) 0:15 Branch: Return with expression 0:15 'pos' ( in 4-component vector of float) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' (layout( location=0) in 4-component vector of float) 0:10 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:10 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex[0]' ( uniform texture2D) 0:? 'tex[1]' ( uniform texture2D) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:? 'pos' (layout( location=0) in 4-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:10 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:10 Function Parameters: 0:10 'pos' ( in 4-component vector of float) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp texture2D) 0:13 direct index ( temp texture2D) 0:13 membTex: direct index for structure ( temp 2-element array of texture2D) 0:13 'packed' ( temp structure{ temp int a, temp 2-element array of texture2D membTex, temp int b}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:? 'tex[0]' ( uniform texture2D) 0:13 move second child to first child ( temp texture2D) 0:13 direct index ( temp texture2D) 0:13 membTex: direct index for structure ( temp 2-element array of texture2D) 0:13 'packed' ( temp structure{ temp int a, temp 2-element array of texture2D membTex, temp int b}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 1 (const int) 0:? 'tex[1]' ( uniform texture2D) 0:15 Branch: Return with expression 0:15 'pos' ( in 4-component vector of float) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' (layout( location=0) in 4-component vector of float) 0:10 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:10 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tex[0]' ( uniform texture2D) 0:? 'tex[1]' ( uniform texture2D) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:? 'pos' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 36 39 Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "pos" Name 18 "Packed" MemberName 18(Packed) 0 "a" MemberName 18(Packed) 1 "membTex" MemberName 18(Packed) 2 "b" Name 20 "packed" Name 24 "tex[0]" Name 28 "tex[1]" Name 34 "pos" Name 36 "pos" Name 39 "@entryPointOutput" Name 40 "param" Decorate 24(tex[0]) Binding 0 Decorate 24(tex[0]) DescriptorSet 0 Decorate 28(tex[1]) Binding 1 Decorate 28(tex[1]) DescriptorSet 0 Decorate 36(pos) Location 0 Decorate 39(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) 13: TypeInt 32 1 14: TypeImage 6(float) 2D sampled format:Unknown 15: TypeInt 32 0 16: 15(int) Constant 2 17: TypeArray 14 16 18(Packed): TypeStruct 13(int) 17 13(int) 19: TypePointer Function 18(Packed) 21: 13(int) Constant 1 22: 13(int) Constant 0 23: TypePointer UniformConstant 14 24(tex[0]): 23(ptr) Variable UniformConstant 26: TypePointer Function 14 28(tex[1]): 23(ptr) Variable UniformConstant 35: TypePointer Input 7(fvec4) 36(pos): 35(ptr) Variable Input 38: TypePointer Output 7(fvec4) 39(@entryPointOutput): 38(ptr) Variable Output 4(main): 2 Function None 3 5: Label 34(pos): 8(ptr) Variable Function 40(param): 8(ptr) Variable Function 37: 7(fvec4) Load 36(pos) Store 34(pos) 37 41: 7(fvec4) Load 34(pos) Store 40(param) 41 42: 7(fvec4) FunctionCall 11(@main(vf4;) 40(param) Store 39(@entryPointOutput) 42 Return FunctionEnd 11(@main(vf4;): 7(fvec4) Function None 9 10(pos): 8(ptr) FunctionParameter 12: Label 20(packed): 19(ptr) Variable Function 25: 14 Load 24(tex[0]) 27: 26(ptr) AccessChain 20(packed) 21 22 Store 27 25 29: 14 Load 28(tex[1]) 30: 26(ptr) AccessChain 20(packed) 21 21 Store 30 29 31: 7(fvec4) Load 10(pos) ReturnValue 31 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.partialInit.frag.out000066400000000000000000000652271506534232700233530ustar00rootroot00000000000000hlsl.partialInit.frag WARNING: 0:35: 'cgf2a' : variable with qualifier 'const' not initialized; zero initializing WARNING: 0:36: 'ci' : variable with qualifier 'const' not initialized; zero initializing Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'gv' ( global 4-component vector of float) 0:8 Constant: 0:8 0.000000 0:8 0.000000 0:8 1.000000 0:8 0.000000 0:9 Sequence 0:9 move second child to first child ( temp 3-element array of float) 0:9 'gfa' ( global 3-element array of float) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:18 Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Function Parameters: 0:18 'input' ( in 4-component vector of float) 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:19 'o2' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:19 Constant: 0:19 3 (const int) 0:19 0.000000 0:19 false (const bool) 0:19 0.000000 0:19 0.000000 0:19 0.000000 0:19 0.000000 0:21 move second child to first child ( temp 4-component vector of float) 0:21 v: direct index for structure ( temp 4-component vector of float) 0:21 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:21 Constant: 0:21 3 (const int) 0:21 vector-scale ( temp 4-component vector of float) 0:21 'gv' ( global 4-component vector of float) 0:21 direct index ( temp float) 0:21 'gfa' ( global 3-element array of float) 0:21 Constant: 0:21 2 (const int) 0:22 Sequence 0:22 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:22 'o1' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:22 Constant: 0:22 0 (const int) 0:22 0.000000 0:22 false (const bool) 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:23 Sequence 0:23 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:23 'o3' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:23 Constant: 0:23 0 (const int) 0:23 0.000000 0:23 false (const bool) 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:24 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:24 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:24 Constant: 0:24 0 (const int) 0:24 0.000000 0:24 false (const bool) 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:25 move second child to first child ( temp bool) 0:25 c: direct index for structure ( temp bool) 0:25 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:25 Constant: 0:25 2 (const int) 0:25 c: direct index for structure ( temp bool) 0:25 'o1' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:25 Constant: 0:25 2 (const int) 0:26 Sequence 0:26 move second child to first child ( temp structure{ temp 4X3 matrix of float m, temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v} os, temp bool b}) 0:26 'nest' ( temp structure{ temp 4X3 matrix of float m, temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v} os, temp bool b}) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0 (const int) 0:26 0.000000 0:26 false (const bool) 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 false (const bool) 0:28 Sequence 0:28 move second child to first child ( temp 4-element array of 2-component vector of float) 0:28 'gf2a' ( temp 4-element array of 2-component vector of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'cgi' ( temp int) 0:29 Constant: 0:29 0 (const int) 0:30 move second child to first child ( temp float) 0:30 b: direct index for structure ( temp float) 0:30 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:30 Constant: 0:30 1 (const int) 0:30 component-wise multiply ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 2-component vector of float) 0:30 'gf2a' ( temp 4-element array of 2-component vector of float) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Convert int to float ( temp float) 0:30 'cgi' ( temp int) 0:32 Branch: Return with expression 0:32 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Function Definition: PixelShaderFunction( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 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:18 Sequence 0:18 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:? 'input' ( temp 4-component vector of float) 0:18 move second child to first child ( temp int) 0:? '@entryPointOutput.a' (layout( location=0) out int) 0:18 a: direct index for structure ( temp int) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Constant: 0:18 0 (const int) 0:18 move second child to first child ( temp float) 0:? '@entryPointOutput.b' (layout( location=1) out float) 0:18 b: direct index for structure ( temp float) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Constant: 0:18 1 (const int) 0:18 move second child to first child ( temp bool) 0:? '@entryPointOutput.c' (layout( location=2) out bool) 0:18 c: direct index for structure ( temp bool) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Constant: 0:18 2 (const int) 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.v' (layout( location=3) out 4-component vector of float) 0:18 v: direct index for structure ( temp 4-component vector of float) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Constant: 0:18 3 (const int) 0:? Linker Objects 0:? 'gv' ( global 4-component vector of float) 0:? 'gfa' ( global 3-element array of float) 0:? '@entryPointOutput.a' (layout( location=0) out int) 0:? '@entryPointOutput.b' (layout( location=1) out float) 0:? '@entryPointOutput.c' (layout( location=2) out bool) 0:? '@entryPointOutput.v' (layout( location=3) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:? 'cgf2a' ( const 3-element array of 2-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'ci' ( const int) 0:? 0 (const int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'gv' ( global 4-component vector of float) 0:8 Constant: 0:8 0.000000 0:8 0.000000 0:8 1.000000 0:8 0.000000 0:9 Sequence 0:9 move second child to first child ( temp 3-element array of float) 0:9 'gfa' ( global 3-element array of float) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:18 Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Function Parameters: 0:18 'input' ( in 4-component vector of float) 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:19 'o2' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:19 Constant: 0:19 3 (const int) 0:19 0.000000 0:19 false (const bool) 0:19 0.000000 0:19 0.000000 0:19 0.000000 0:19 0.000000 0:21 move second child to first child ( temp 4-component vector of float) 0:21 v: direct index for structure ( temp 4-component vector of float) 0:21 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:21 Constant: 0:21 3 (const int) 0:21 vector-scale ( temp 4-component vector of float) 0:21 'gv' ( global 4-component vector of float) 0:21 direct index ( temp float) 0:21 'gfa' ( global 3-element array of float) 0:21 Constant: 0:21 2 (const int) 0:22 Sequence 0:22 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:22 'o1' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:22 Constant: 0:22 0 (const int) 0:22 0.000000 0:22 false (const bool) 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:23 Sequence 0:23 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:23 'o3' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:23 Constant: 0:23 0 (const int) 0:23 0.000000 0:23 false (const bool) 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:24 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:24 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:24 Constant: 0:24 0 (const int) 0:24 0.000000 0:24 false (const bool) 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:25 move second child to first child ( temp bool) 0:25 c: direct index for structure ( temp bool) 0:25 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:25 Constant: 0:25 2 (const int) 0:25 c: direct index for structure ( temp bool) 0:25 'o1' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:25 Constant: 0:25 2 (const int) 0:26 Sequence 0:26 move second child to first child ( temp structure{ temp 4X3 matrix of float m, temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v} os, temp bool b}) 0:26 'nest' ( temp structure{ temp 4X3 matrix of float m, temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v} os, temp bool b}) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0 (const int) 0:26 0.000000 0:26 false (const bool) 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 false (const bool) 0:28 Sequence 0:28 move second child to first child ( temp 4-element array of 2-component vector of float) 0:28 'gf2a' ( temp 4-element array of 2-component vector of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'cgi' ( temp int) 0:29 Constant: 0:29 0 (const int) 0:30 move second child to first child ( temp float) 0:30 b: direct index for structure ( temp float) 0:30 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:30 Constant: 0:30 1 (const int) 0:30 component-wise multiply ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 2-component vector of float) 0:30 'gf2a' ( temp 4-element array of 2-component vector of float) 0:30 Constant: 0:30 2 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Convert int to float ( temp float) 0:30 'cgi' ( temp int) 0:32 Branch: Return with expression 0:32 'o4' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Function Definition: PixelShaderFunction( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 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:18 Sequence 0:18 move second child to first child ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:? 'input' ( temp 4-component vector of float) 0:18 move second child to first child ( temp int) 0:? '@entryPointOutput.a' (layout( location=0) out int) 0:18 a: direct index for structure ( temp int) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Constant: 0:18 0 (const int) 0:18 move second child to first child ( temp float) 0:? '@entryPointOutput.b' (layout( location=1) out float) 0:18 b: direct index for structure ( temp float) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Constant: 0:18 1 (const int) 0:18 move second child to first child ( temp bool) 0:? '@entryPointOutput.c' (layout( location=2) out bool) 0:18 c: direct index for structure ( temp bool) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Constant: 0:18 2 (const int) 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.v' (layout( location=3) out 4-component vector of float) 0:18 v: direct index for structure ( temp 4-component vector of float) 0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:18 Constant: 0:18 3 (const int) 0:? Linker Objects 0:? 'gv' ( global 4-component vector of float) 0:? 'gfa' ( global 3-element array of float) 0:? '@entryPointOutput.a' (layout( location=0) out int) 0:? '@entryPointOutput.b' (layout( location=1) out float) 0:? '@entryPointOutput.c' (layout( location=2) out bool) 0:? '@entryPointOutput.v' (layout( location=3) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:? 'cgf2a' ( const 3-element array of 2-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'ci' ( const int) 0:? 0 (const int) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 104 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 80 87 91 95 99 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "outs" MemberName 11(outs) 0 "a" MemberName 11(outs) 1 "b" MemberName 11(outs) 2 "c" MemberName 11(outs) 3 "v" Name 14 "@PixelShaderFunction(vf4;" Name 13 "input" Name 17 "gv" Name 25 "gfa" Name 28 "o2" Name 33 "o4" Name 41 "o1" Name 44 "o3" Name 51 "Nest" MemberName 51(Nest) 0 "m" MemberName 51(Nest) 1 "os" MemberName 51(Nest) 2 "b" Name 53 "nest" Name 61 "gf2a" Name 65 "cgi" Name 78 "input" Name 80 "input" Name 82 "flattenTemp" Name 83 "param" Name 87 "@entryPointOutput.a" Name 91 "@entryPointOutput.b" Name 95 "@entryPointOutput.c" Name 99 "@entryPointOutput.v" Decorate 80(input) Location 0 Decorate 87(@entryPointOutput.a) Location 0 Decorate 91(@entryPointOutput.b) Location 1 Decorate 95(@entryPointOutput.c) Location 2 Decorate 99(@entryPointOutput.v) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeInt 32 1 10: TypeBool 11(outs): TypeStruct 9(int) 6(float) 10(bool) 7(fvec4) 12: TypeFunction 11(outs) 8(ptr) 16: TypePointer Private 7(fvec4) 17(gv): 16(ptr) Variable Private 18: 6(float) Constant 0 19: 6(float) Constant 1065353216 20: 7(fvec4) ConstantComposite 18 18 19 18 21: TypeInt 32 0 22: 21(int) Constant 3 23: TypeArray 6(float) 22 24: TypePointer Private 23 25(gfa): 24(ptr) Variable Private 26: 23 ConstantComposite 18 18 18 27: TypePointer Function 11(outs) 29: 9(int) Constant 3 30: 10(bool) ConstantFalse 31: 7(fvec4) ConstantComposite 18 18 18 18 32: 11(outs) ConstantComposite 29 18 30 31 35: 9(int) Constant 2 36: TypePointer Private 6(float) 42: 9(int) Constant 0 43: 11(outs) ConstantComposite 42 18 30 31 45: TypePointer Function 10(bool) 49: TypeVector 6(float) 3 50: TypeMatrix 49(fvec3) 4 51(Nest): TypeStruct 50 11(outs) 10(bool) 52: TypePointer Function 51(Nest) 54: 49(fvec3) ConstantComposite 18 18 18 55: 50 ConstantComposite 54 54 54 54 56: 51(Nest) ConstantComposite 55 43 30 57: TypeVector 6(float) 2 58: 21(int) Constant 4 59: TypeArray 57(fvec2) 58 60: TypePointer Function 59 62: 57(fvec2) ConstantComposite 18 18 63: 59 ConstantComposite 62 62 62 62 64: TypePointer Function 9(int) 66: 9(int) Constant 1 67: 21(int) Constant 1 68: TypePointer Function 6(float) 79: TypePointer Input 7(fvec4) 80(input): 79(ptr) Variable Input 86: TypePointer Output 9(int) 87(@entryPointOutput.a): 86(ptr) Variable Output 90: TypePointer Output 6(float) 91(@entryPointOutput.b): 90(ptr) Variable Output 94: TypePointer Output 10(bool) 95(@entryPointOutput.c): 94(ptr) Variable Output 98: TypePointer Output 7(fvec4) 99(@entryPointOutput.v): 98(ptr) Variable Output 102: TypeArray 57(fvec2) 22 103: 102 ConstantComposite 62 62 62 4(PixelShaderFunction): 2 Function None 3 5: Label 78(input): 8(ptr) Variable Function 82(flattenTemp): 27(ptr) Variable Function 83(param): 8(ptr) Variable Function Store 17(gv) 20 Store 25(gfa) 26 81: 7(fvec4) Load 80(input) Store 78(input) 81 84: 7(fvec4) Load 78(input) Store 83(param) 84 85: 11(outs) FunctionCall 14(@PixelShaderFunction(vf4;) 83(param) Store 82(flattenTemp) 85 88: 64(ptr) AccessChain 82(flattenTemp) 42 89: 9(int) Load 88 Store 87(@entryPointOutput.a) 89 92: 68(ptr) AccessChain 82(flattenTemp) 66 93: 6(float) Load 92 Store 91(@entryPointOutput.b) 93 96: 45(ptr) AccessChain 82(flattenTemp) 35 97: 10(bool) Load 96 Store 95(@entryPointOutput.c) 97 100: 8(ptr) AccessChain 82(flattenTemp) 29 101: 7(fvec4) Load 100 Store 99(@entryPointOutput.v) 101 Return FunctionEnd 14(@PixelShaderFunction(vf4;): 11(outs) Function None 12 13(input): 8(ptr) FunctionParameter 15: Label 28(o2): 27(ptr) Variable Function 33(o4): 27(ptr) Variable Function 41(o1): 27(ptr) Variable Function 44(o3): 27(ptr) Variable Function 53(nest): 52(ptr) Variable Function 61(gf2a): 60(ptr) Variable Function 65(cgi): 64(ptr) Variable Function Store 28(o2) 32 34: 7(fvec4) Load 17(gv) 37: 36(ptr) AccessChain 25(gfa) 35 38: 6(float) Load 37 39: 7(fvec4) VectorTimesScalar 34 38 40: 8(ptr) AccessChain 33(o4) 29 Store 40 39 Store 41(o1) 43 Store 44(o3) 43 Store 33(o4) 43 46: 45(ptr) AccessChain 41(o1) 35 47: 10(bool) Load 46 48: 45(ptr) AccessChain 33(o4) 35 Store 48 47 Store 53(nest) 56 Store 61(gf2a) 63 Store 65(cgi) 42 69: 68(ptr) AccessChain 61(gf2a) 35 67 70: 6(float) Load 69 71: 9(int) Load 65(cgi) 72: 6(float) ConvertSToF 71 73: 6(float) FMul 70 72 74: 68(ptr) AccessChain 33(o4) 66 Store 74 73 75: 11(outs) Load 33(o4) ReturnValue 75 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.pp.expand.frag.err000066400000000000000000000000001506534232700227230ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/hlsl.pp.expand.frag.out000066400000000000000000000002661506534232700227600ustar00rootroot00000000000000 struct A { float4 a; float4 b; float4 c = { 1, 2, 3, 4 }; float4 d = { ({ { ( ({ 1, 2, 3, 4 })) } }) }, { { 1, 2, 3, 4 } }; }; void main() { "a string" } glslang-16.0.0/Test/baseResults/hlsl.pp.line.frag.out000066400000000000000000000223141506534232700224260ustar00rootroot00000000000000hlsl.pp.line.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:4 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Function Parameters: 0:? Sequence 0:124 Sequence 0:124 move second child to first child ( temp int) 0:124 'thisLineIs' ( temp int) 0:124 Constant: 0:124 124 (const int) 0:126 move second child to first child ( temp 4-component vector of float) 0:126 Color: direct index for structure ( temp 4-component vector of float) 0:126 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:126 Constant: 0:126 0 (const int) 0:126 Construct vec4 ( temp 4-component vector of float) 0:126 Convert int to float ( temp float) 0:126 'thisLineIs' ( temp int) 0:126 Constant: 0:126 0.000000 0:126 Constant: 0:126 0.000000 0:126 Constant: 0:126 1.000000 0:127 move second child to first child ( temp float) 0:127 Depth: direct index for structure ( temp float) 0:127 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1.000000 0:129 Branch: Return with expression 0:129 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:4 Color: direct index for structure ( temp 4-component vector of float) 0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:4 Depth: direct index for structure ( temp float) 0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Constant: 0:4 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:4 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Function Parameters: 0:? Sequence 0:124 Sequence 0:124 move second child to first child ( temp int) 0:124 'thisLineIs' ( temp int) 0:124 Constant: 0:124 124 (const int) 0:126 move second child to first child ( temp 4-component vector of float) 0:126 Color: direct index for structure ( temp 4-component vector of float) 0:126 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:126 Constant: 0:126 0 (const int) 0:126 Construct vec4 ( temp 4-component vector of float) 0:126 Convert int to float ( temp float) 0:126 'thisLineIs' ( temp int) 0:126 Constant: 0:126 0.000000 0:126 Constant: 0:126 0.000000 0:126 Constant: 0:126 1.000000 0:127 move second child to first child ( temp float) 0:127 Depth: direct index for structure ( temp float) 0:127 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 1.000000 0:129 Branch: Return with expression 0:129 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:4 Color: direct index for structure ( temp 4-component vector of float) 0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:4 Depth: direct index for structure ( temp float) 0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:4 Constant: 0:4 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 35 39 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 14 "thisLineIs" Name 17 "psout" Name 32 "flattenTemp" Name 35 "@entryPointOutput.Color" Name 39 "@entryPointOutput.Depth" Decorate 35(@entryPointOutput.Color) Location 0 Decorate 39(@entryPointOutput.Depth) BuiltIn FragDepth 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 1 13: TypePointer Function 12(int) 15: 12(int) Constant 124 16: TypePointer Function 8(PS_OUTPUT) 18: 12(int) Constant 0 21: 6(float) Constant 0 22: 6(float) Constant 1065353216 24: TypePointer Function 7(fvec4) 26: 12(int) Constant 1 27: TypePointer Function 6(float) 34: TypePointer Output 7(fvec4) 35(@entryPointOutput.Color): 34(ptr) Variable Output 38: TypePointer Output 6(float) 39(@entryPointOutput.Depth): 38(ptr) Variable Output 4(main): 2 Function None 3 5: Label 32(flattenTemp): 16(ptr) Variable Function 33:8(PS_OUTPUT) FunctionCall 10(@main() Store 32(flattenTemp) 33 36: 24(ptr) AccessChain 32(flattenTemp) 18 37: 7(fvec4) Load 36 Store 35(@entryPointOutput.Color) 37 40: 27(ptr) AccessChain 32(flattenTemp) 26 41: 6(float) Load 40 Store 39(@entryPointOutput.Depth) 41 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 14(thisLineIs): 13(ptr) Variable Function 17(psout): 16(ptr) Variable Function Store 14(thisLineIs) 15 19: 12(int) Load 14(thisLineIs) 20: 6(float) ConvertSToF 19 23: 7(fvec4) CompositeConstruct 20 21 21 22 25: 24(ptr) AccessChain 17(psout) 18 Store 25 23 28: 27(ptr) AccessChain 17(psout) 26 Store 28 22 29:8(PS_OUTPUT) Load 17(psout) ReturnValue 29 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.pp.line2.frag.out000066400000000000000000000177011506534232700225140ustar00rootroot00000000000000hlsl.pp.line2.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "MainPs" 71 75 ExecutionMode 5 OriginUpperLeft 1: String "hlsl.pp.line2.frag" 7: String "foo.frag" 36: String "foo.h" 44: String "foo2.h" Source HLSL 500 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point MainPs // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 #line 1 "foo.frag" Texture2D g_tColor[ 128 ] ; layout (push_constant) cbuffer PerViewConstantBuffer_t { uint g_nDataIdx; uint g_nDataIdx2; bool g_B; } ; SamplerState g_sAniso; struct PS_INPUT { float2 vTextureCoords : TEXCOORD2 ; } ; struct PS_OUTPUT { float4 vColor : SV_Target0 ; } ; PS_OUTPUT MainPs ( PS_INPUT i ) { PS_OUTPUT ps_output ; uint u; #line 47 if (g_B) #line 3 "foo.h" u = g_nDataIdx; else #line 67 u = g_nDataIdx2; #line 7 "foo2.h" ps_output . vColor = g_tColor [ u ] . Sample ( g_sAniso , i . vTextureCoords . xy ); #line 105 return ps_output ; } " Name 5 "MainPs" Name 10 "PS_INPUT" MemberName 10(PS_INPUT) 0 "vTextureCoords" Name 13 "PS_OUTPUT" MemberName 13(PS_OUTPUT) 0 "vColor" Name 16 "@MainPs(struct-PS_INPUT-vf21;" Name 15 "i" Name 19 "ps_output" Name 22 "u" Name 23 "PerViewConstantBuffer_t" MemberName 23(PerViewConstantBuffer_t) 0 "g_nDataIdx" MemberName 23(PerViewConstantBuffer_t) 1 "g_nDataIdx2" MemberName 23(PerViewConstantBuffer_t) 2 "g_B" Name 25 "" Name 49 "g_tColor" Name 56 "g_sAniso" Name 69 "i" Name 71 "i.vTextureCoords" Name 75 "@entryPointOutput.vColor" Name 76 "param" Decorate 23(PerViewConstantBuffer_t) Block MemberDecorate 23(PerViewConstantBuffer_t) 0 Offset 0 MemberDecorate 23(PerViewConstantBuffer_t) 1 Offset 4 MemberDecorate 23(PerViewConstantBuffer_t) 2 Offset 8 Decorate 49(g_tColor) Binding 0 Decorate 49(g_tColor) DescriptorSet 0 Decorate 56(g_sAniso) Binding 1 Decorate 56(g_sAniso) DescriptorSet 0 Decorate 71(i.vTextureCoords) Location 0 Decorate 75(@entryPointOutput.vColor) Location 0 3: TypeVoid 4: TypeFunction 3 8: TypeFloat 32 9: TypeVector 8(float) 2 10(PS_INPUT): TypeStruct 9(fvec2) 11: TypePointer Function 10(PS_INPUT) 12: TypeVector 8(float) 4 13(PS_OUTPUT): TypeStruct 12(fvec4) 14: TypeFunction 13(PS_OUTPUT) 11(ptr) 18: TypePointer Function 13(PS_OUTPUT) 20: TypeInt 32 0 21: TypePointer Function 20(int) 23(PerViewConstantBuffer_t): TypeStruct 20(int) 20(int) 20(int) 24: TypePointer PushConstant 23(PerViewConstantBuffer_t) 25: 24(ptr) Variable PushConstant 26: TypeInt 32 1 27: 26(int) Constant 2 28: TypePointer PushConstant 20(int) 31: TypeBool 32: 20(int) Constant 0 37: 26(int) Constant 0 41: 26(int) Constant 1 45: TypeImage 8(float) 2D sampled format:Unknown 46: 20(int) Constant 128 47: TypeArray 45 46 48: TypePointer UniformConstant 47 49(g_tColor): 48(ptr) Variable UniformConstant 51: TypePointer UniformConstant 45 54: TypeSampler 55: TypePointer UniformConstant 54 56(g_sAniso): 55(ptr) Variable UniformConstant 58: TypeSampledImage 45 60: TypePointer Function 9(fvec2) 64: TypePointer Function 12(fvec4) 70: TypePointer Input 9(fvec2) 71(i.vTextureCoords): 70(ptr) Variable Input 74: TypePointer Output 12(fvec4) 75(@entryPointOutput.vColor): 74(ptr) Variable Output Line 7 23 1 5(MainPs): 3 Function None 4 6: Label 69(i): 11(ptr) Variable Function 76(param): 11(ptr) Variable Function Line 7 23 0 72: 9(fvec2) Load 71(i.vTextureCoords) 73: 60(ptr) AccessChain 69(i) 37 Store 73 72 77:10(PS_INPUT) Load 69(i) Store 76(param) 77 78:13(PS_OUTPUT) FunctionCall 16(@MainPs(struct-PS_INPUT-vf21;) 76(param) 79: 12(fvec4) CompositeExtract 78 0 Store 75(@entryPointOutput.vColor) 79 Return FunctionEnd Line 7 23 1 16(@MainPs(struct-PS_INPUT-vf21;):13(PS_OUTPUT) Function None 14 15(i): 11(ptr) FunctionParameter 17: Label 19(ps_output): 18(ptr) Variable Function 22(u): 21(ptr) Variable Function Line 7 47 0 29: 28(ptr) AccessChain 25 27 30: 20(int) Load 29 33: 31(bool) INotEqual 30 32 SelectionMerge 35 None BranchConditional 33 34 40 34: Label Line 36 3 0 38: 28(ptr) AccessChain 25 37 39: 20(int) Load 38 Store 22(u) 39 Branch 35 40: Label Line 36 67 0 42: 28(ptr) AccessChain 25 41 43: 20(int) Load 42 Store 22(u) 43 Branch 35 35: Label Line 44 7 0 50: 20(int) Load 22(u) 52: 51(ptr) AccessChain 49(g_tColor) 50 53: 45 Load 52 57: 54 Load 56(g_sAniso) 59: 58 SampledImage 53 57 61: 60(ptr) AccessChain 15(i) 37 62: 9(fvec2) Load 61 63: 12(fvec4) ImageSampleImplicitLod 59 62 65: 64(ptr) AccessChain 19(ps_output) 37 Store 65 63 Line 44 105 0 66:13(PS_OUTPUT) Load 19(ps_output) ReturnValue 66 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.pp.line3.frag.out000066400000000000000000000173431506534232700225170ustar00rootroot00000000000000hlsl.pp.line3.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 6 "MainPs" 69 73 ExecutionMode 6 OriginUpperLeft 1: String "hlsl.pp.line3.frag" 2: String "./i1.h" Source HLSL 500 1 "// OpModuleProcessed entry-point MainPs // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed hlsl-offsets #line 1 Texture2D g_tColor[ 128 ] ; layout (push_constant) cbuffer PerViewConstantBuffer_t { uint g_nDataIdx; uint g_nDataIdx2; bool g_B; } ; SamplerState g_sAniso; struct PS_INPUT { float2 vTextureCoords : TEXCOORD2 ; } ; struct PS_OUTPUT { float4 vColor : SV_Target0 ; } ; PS_OUTPUT MainPs ( PS_INPUT i ) { PS_OUTPUT ps_output ; uint u; if (g_B) #include "i1.h" else u = g_nDataIdx2; ps_output . vColor = g_tColor [ u ] . Sample ( g_sAniso , i . vTextureCoords . xy ); return ps_output ; } " Source HLSL 500 2 " u = g_nDataIdx; " Name 6 "MainPs" Name 10 "PS_INPUT" MemberName 10(PS_INPUT) 0 "vTextureCoords" Name 13 "PS_OUTPUT" MemberName 13(PS_OUTPUT) 0 "vColor" Name 16 "@MainPs(struct-PS_INPUT-vf21;" Name 15 "i" Name 19 "PerViewConstantBuffer_t" MemberName 19(PerViewConstantBuffer_t) 0 "g_nDataIdx" MemberName 19(PerViewConstantBuffer_t) 1 "g_nDataIdx2" MemberName 19(PerViewConstantBuffer_t) 2 "g_B" Name 21 "" Name 33 "u" Name 42 "ps_output" Name 47 "g_tColor" Name 54 "g_sAniso" Name 67 "i" Name 69 "i.vTextureCoords" Name 73 "@entryPointOutput.vColor" Name 74 "param" Decorate 19(PerViewConstantBuffer_t) Block MemberDecorate 19(PerViewConstantBuffer_t) 0 Offset 0 MemberDecorate 19(PerViewConstantBuffer_t) 1 Offset 4 MemberDecorate 19(PerViewConstantBuffer_t) 2 Offset 8 Decorate 47(g_tColor) Binding 0 Decorate 47(g_tColor) DescriptorSet 0 Decorate 54(g_sAniso) Binding 0 Decorate 54(g_sAniso) DescriptorSet 0 Decorate 69(i.vTextureCoords) Location 0 Decorate 73(@entryPointOutput.vColor) Location 0 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 9: TypeVector 8(float) 2 10(PS_INPUT): TypeStruct 9(fvec2) 11: TypePointer Function 10(PS_INPUT) 12: TypeVector 8(float) 4 13(PS_OUTPUT): TypeStruct 12(fvec4) 14: TypeFunction 13(PS_OUTPUT) 11(ptr) 18: TypeInt 32 0 19(PerViewConstantBuffer_t): TypeStruct 18(int) 18(int) 18(int) 20: TypePointer PushConstant 19(PerViewConstantBuffer_t) 21: 20(ptr) Variable PushConstant 22: TypeInt 32 1 23: 22(int) Constant 2 24: TypePointer PushConstant 18(int) 27: TypeBool 28: 18(int) Constant 0 32: TypePointer Function 18(int) 34: 22(int) Constant 0 38: 22(int) Constant 1 41: TypePointer Function 13(PS_OUTPUT) 43: TypeImage 8(float) 2D sampled format:Unknown 44: 18(int) Constant 128 45: TypeArray 43 44 46: TypePointer UniformConstant 45 47(g_tColor): 46(ptr) Variable UniformConstant 49: TypePointer UniformConstant 43 52: TypeSampler 53: TypePointer UniformConstant 52 54(g_sAniso): 53(ptr) Variable UniformConstant 56: TypeSampledImage 43 58: TypePointer Function 9(fvec2) 62: TypePointer Function 12(fvec4) 68: TypePointer Input 9(fvec2) 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 74(param): 11(ptr) Variable Function Line 1 23 0 70: 9(fvec2) Load 69(i.vTextureCoords) 71: 58(ptr) AccessChain 67(i) 34 Store 71 70 75:10(PS_INPUT) Load 67(i) Store 74(param) 75 76:13(PS_OUTPUT) FunctionCall 16(@MainPs(struct-PS_INPUT-vf21;) 74(param) 77: 12(fvec4) CompositeExtract 76 0 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 33(u): 32(ptr) Variable Function 42(ps_output): 41(ptr) Variable Function Line 1 27 0 25: 24(ptr) AccessChain 21 23 26: 18(int) Load 25 29: 27(bool) INotEqual 26 28 SelectionMerge 31 None BranchConditional 29 30 37 30: Label Line 2 1 0 35: 24(ptr) AccessChain 21 34 36: 18(int) Load 35 Store 33(u) 36 Branch 31 37: Label Line 1 30 0 39: 24(ptr) AccessChain 21 38 40: 18(int) Load 39 Store 33(u) 40 Branch 31 31: Label Line 1 31 0 48: 18(int) Load 33(u) 50: 49(ptr) AccessChain 47(g_tColor) 48 51: 43 Load 50 55: 52 Load 54(g_sAniso) 57: 56 SampledImage 51 55 59: 58(ptr) AccessChain 15(i) 34 60: 9(fvec2) Load 59 61: 12(fvec4) ImageSampleImplicitLod 57 60 63: 62(ptr) AccessChain 42(ps_output) 34 Store 63 61 Line 1 32 0 64:13(PS_OUTPUT) Load 42(ps_output) ReturnValue 64 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.pp.line4.frag.out000066400000000000000000000137701506534232700225200ustar00rootroot00000000000000hlsl.pp.line4.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 116 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "MainPs" 70 74 ExecutionMode 5 OriginUpperLeft 1: String "hlsl.pp.line4.frag" 7: String "C:\\Users\\Greg\\shaders\\line\\foo4.frag" 36: String "C:\\Users\\Greg\\shaders\\line\\u1.h" Source HLSL 500 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point MainPs // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 #line 1 "C:\\Users\\Greg\\shaders\\line\\foo4.frag" Texture2D g_tColor [ 128 ] ; layout ( push_constant ) cbuffer PerViewConstantBuffer_t { uint g_nDataIdx ; uint g_nDataIdx2 ; bool g_B ; } ; #line 12 SamplerState g_sAniso ; struct PS_INPUT { float2 vTextureCoords : TEXCOORD2 ; } ; struct PS_OUTPUT { float4 vColor : SV_Target0 ; } ; PS_OUTPUT MainPs ( PS_INPUT i ) { PS_OUTPUT ps_output ; uint u ; if ( g_B ) #line 1 "C:\\Users\\Greg\\shaders\\line\\u1.h" u = g_nDataIdx ; #line 31 "C:\\Users\\Greg\\shaders\\line\\foo4.frag" else u = g_nDataIdx2 ; ps_output . vColor = g_tColor [ u ] . Sample ( g_sAniso , i . vTextureCoords . xy ) ; return ps_output ; } " Name 5 "MainPs" Name 23 "PerViewConstantBuffer_t" MemberName 23(PerViewConstantBuffer_t) 0 "g_nDataIdx" MemberName 23(PerViewConstantBuffer_t) 1 "g_nDataIdx2" MemberName 23(PerViewConstantBuffer_t) 2 "g_B" Name 25 "" Name 48 "g_tColor" Name 55 "g_sAniso" Name 70 "i.vTextureCoords" Name 74 "@entryPointOutput.vColor" Decorate 23(PerViewConstantBuffer_t) Block MemberDecorate 23(PerViewConstantBuffer_t) 0 Offset 0 MemberDecorate 23(PerViewConstantBuffer_t) 1 Offset 4 MemberDecorate 23(PerViewConstantBuffer_t) 2 Offset 8 Decorate 48(g_tColor) Binding 0 Decorate 48(g_tColor) DescriptorSet 0 Decorate 55(g_sAniso) Binding 1 Decorate 55(g_sAniso) DescriptorSet 0 Decorate 70(i.vTextureCoords) Location 0 Decorate 74(@entryPointOutput.vColor) Location 0 3: TypeVoid 4: TypeFunction 3 8: TypeFloat 32 9: TypeVector 8(float) 2 12: TypeVector 8(float) 4 20: TypeInt 32 0 23(PerViewConstantBuffer_t): TypeStruct 20(int) 20(int) 20(int) 24: TypePointer PushConstant 23(PerViewConstantBuffer_t) 25: 24(ptr) Variable PushConstant 26: TypeInt 32 1 27: 26(int) Constant 2 28: TypePointer PushConstant 20(int) 31: TypeBool 32: 20(int) Constant 0 37: 26(int) Constant 0 41: 26(int) Constant 1 44: TypeImage 8(float) 2D sampled format:Unknown 45: 20(int) Constant 128 46: TypeArray 44 45 47: TypePointer UniformConstant 46 48(g_tColor): 47(ptr) Variable UniformConstant 50: TypePointer UniformConstant 44 53: TypeSampler 54: TypePointer UniformConstant 53 55(g_sAniso): 54(ptr) Variable UniformConstant 57: TypeSampledImage 44 69: TypePointer Input 9(fvec2) 70(i.vTextureCoords): 69(ptr) Variable Input 73: TypePointer Output 12(fvec4) 74(@entryPointOutput.vColor): 73(ptr) Variable Output Line 7 25 1 5(MainPs): 3 Function None 4 NoLine 6: Label Line 7 25 0 71: 9(fvec2) Load 70(i.vTextureCoords) Line 7 29 0 83: 28(ptr) AccessChain 25 27 84: 20(int) Load 83 85: 31(bool) INotEqual 84 32 SelectionMerge 92 None BranchConditional 85 86 89 86: Label Line 36 1 0 87: 28(ptr) AccessChain 25 37 88: 20(int) Load 87 Branch 92 89: Label Line 7 32 0 90: 28(ptr) AccessChain 25 41 91: 20(int) Load 90 Branch 92 92: Label 115: 20(int) Phi 88 86 91 89 Line 7 33 0 94: 50(ptr) AccessChain 48(g_tColor) 115 95: 44 Load 94 96: 53 Load 55(g_sAniso) 97: 57 SampledImage 95 96 100: 12(fvec4) ImageSampleImplicitLod 97 71 Line 7 25 0 Store 74(@entryPointOutput.vColor) 100 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.pp.vert.out000066400000000000000000000046201506534232700215410ustar00rootroot00000000000000hlsl.pp.vert Shader version: 500 0:? Sequence 0:17 Function Definition: @main( ( temp void) 0:17 Function Parameters: 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1, uniform int goodGlobal2}) Linked vertex stage: Shader version: 500 0:? Sequence 0:17 Function Definition: @main( ( temp void) 0:17 Function Parameters: 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1, uniform int goodGlobal2}) // Module Version 10000 // 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" Source HLSL 500 Name 4 "main" Name 6 "@main(" Name 10 "$Global" MemberName 10($Global) 0 "goodGlobal1" MemberName 10($Global) 1 "goodGlobal2" Name 12 "" Decorate 10($Global) Block MemberDecorate 10($Global) 0 Offset 0 MemberDecorate 10($Global) 1 Offset 4 Decorate 12 Binding 0 Decorate 12 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 9: TypeInt 32 1 10($Global): TypeStruct 9(int) 9(int) 11: TypePointer Uniform 10($Global) 12: 11(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 8: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.precedence.frag.out000066400000000000000000000305541506534232700231630ustar00rootroot00000000000000hlsl.precedence.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vf4; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'a1' ( in 4-component vector of float) 0:7 'a2' ( in 4-component vector of float) 0:7 'a3' ( in 4-component vector of float) 0:7 'a4' ( in 4-component vector of float) 0:? Sequence 0:8 Branch: Return with expression 0:8 add ( temp 4-component vector of float) 0:8 add ( temp 4-component vector of float) 0:8 add ( temp 4-component vector of float) 0:8 'a1' ( in 4-component vector of float) 0:8 component-wise multiply ( temp 4-component vector of float) 0:8 'a2' ( in 4-component vector of float) 0:8 'a3' ( in 4-component vector of float) 0:8 'a4' ( in 4-component vector of float) 0:8 Construct vec4 ( temp 4-component vector of float) 0:8 component-wise multiply ( temp 3-component vector of float) 0:8 vector swizzle ( temp 3-component vector of float) 0:8 'a1' ( in 4-component vector of float) 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 vector swizzle ( temp 3-component vector of float) 0:8 'a2' ( in 4-component vector of float) 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 direct index ( temp float) 0:8 'a3' ( in 4-component vector of float) 0:8 Constant: 0:8 3 (const int) 0:7 Function Definition: PixelShaderFunction( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'a1' ( temp 4-component vector of float) 0:? 'a1' (layout( location=0) in 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'a2' ( temp 4-component vector of float) 0:? 'a2' (layout( location=1) in 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'a3' ( temp 4-component vector of float) 0:? 'a3' (layout( location=2) in 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'a4' ( temp 4-component vector of float) 0:? 'a4' (layout( location=3) in 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vf4; ( temp 4-component vector of float) 0:? 'a1' ( temp 4-component vector of float) 0:? 'a2' ( temp 4-component vector of float) 0:? 'a3' ( temp 4-component vector of float) 0:? 'a4' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'a1' (layout( location=0) in 4-component vector of float) 0:? 'a2' (layout( location=1) in 4-component vector of float) 0:? 'a3' (layout( location=2) in 4-component vector of float) 0:? 'a4' (layout( location=3) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vf4; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'a1' ( in 4-component vector of float) 0:7 'a2' ( in 4-component vector of float) 0:7 'a3' ( in 4-component vector of float) 0:7 'a4' ( in 4-component vector of float) 0:? Sequence 0:8 Branch: Return with expression 0:8 add ( temp 4-component vector of float) 0:8 add ( temp 4-component vector of float) 0:8 add ( temp 4-component vector of float) 0:8 'a1' ( in 4-component vector of float) 0:8 component-wise multiply ( temp 4-component vector of float) 0:8 'a2' ( in 4-component vector of float) 0:8 'a3' ( in 4-component vector of float) 0:8 'a4' ( in 4-component vector of float) 0:8 Construct vec4 ( temp 4-component vector of float) 0:8 component-wise multiply ( temp 3-component vector of float) 0:8 vector swizzle ( temp 3-component vector of float) 0:8 'a1' ( in 4-component vector of float) 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 vector swizzle ( temp 3-component vector of float) 0:8 'a2' ( in 4-component vector of float) 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 direct index ( temp float) 0:8 'a3' ( in 4-component vector of float) 0:8 Constant: 0:8 3 (const int) 0:7 Function Definition: PixelShaderFunction( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'a1' ( temp 4-component vector of float) 0:? 'a1' (layout( location=0) in 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'a2' ( temp 4-component vector of float) 0:? 'a2' (layout( location=1) in 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'a3' ( temp 4-component vector of float) 0:? 'a3' (layout( location=2) in 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'a4' ( temp 4-component vector of float) 0:? 'a4' (layout( location=3) in 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vf4; ( temp 4-component vector of float) 0:? 'a1' ( temp 4-component vector of float) 0:? 'a2' ( temp 4-component vector of float) 0:? 'a3' ( temp 4-component vector of float) 0:? 'a4' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'a1' (layout( location=0) in 4-component vector of float) 0:? 'a2' (layout( location=1) in 4-component vector of float) 0:? 'a3' (layout( location=2) in 4-component vector of float) 0:? 'a4' (layout( location=3) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 43 46 49 52 55 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 14 "@PixelShaderFunction(vf4;vf4;vf4;vf4;" Name 10 "a1" Name 11 "a2" Name 12 "a3" Name 13 "a4" Name 41 "a1" Name 43 "a1" Name 45 "a2" Name 46 "a2" Name 48 "a3" Name 49 "a3" Name 51 "a4" Name 52 "a4" Name 55 "@entryPointOutput" Name 56 "param" Name 58 "param" Name 60 "param" Name 62 "param" Decorate 43(a1) Location 0 Decorate 46(a2) Location 1 Decorate 49(a3) Location 2 Decorate 52(a4) Location 3 Decorate 55(@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) 8(ptr) 8(ptr) 8(ptr) 23: TypeVector 6(float) 3 29: TypeInt 32 0 30: 29(int) Constant 3 31: TypePointer Function 6(float) 42: TypePointer Input 7(fvec4) 43(a1): 42(ptr) Variable Input 46(a2): 42(ptr) Variable Input 49(a3): 42(ptr) Variable Input 52(a4): 42(ptr) Variable Input 54: TypePointer Output 7(fvec4) 55(@entryPointOutput): 54(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 41(a1): 8(ptr) Variable Function 45(a2): 8(ptr) Variable Function 48(a3): 8(ptr) Variable Function 51(a4): 8(ptr) Variable Function 56(param): 8(ptr) Variable Function 58(param): 8(ptr) Variable Function 60(param): 8(ptr) Variable Function 62(param): 8(ptr) Variable Function 44: 7(fvec4) Load 43(a1) Store 41(a1) 44 47: 7(fvec4) Load 46(a2) Store 45(a2) 47 50: 7(fvec4) Load 49(a3) Store 48(a3) 50 53: 7(fvec4) Load 52(a4) Store 51(a4) 53 57: 7(fvec4) Load 41(a1) Store 56(param) 57 59: 7(fvec4) Load 45(a2) Store 58(param) 59 61: 7(fvec4) Load 48(a3) Store 60(param) 61 63: 7(fvec4) Load 51(a4) Store 62(param) 63 64: 7(fvec4) FunctionCall 14(@PixelShaderFunction(vf4;vf4;vf4;vf4;) 56(param) 58(param) 60(param) 62(param) Store 55(@entryPointOutput) 64 Return FunctionEnd 14(@PixelShaderFunction(vf4;vf4;vf4;vf4;): 7(fvec4) Function None 9 10(a1): 8(ptr) FunctionParameter 11(a2): 8(ptr) FunctionParameter 12(a3): 8(ptr) FunctionParameter 13(a4): 8(ptr) FunctionParameter 15: Label 16: 7(fvec4) Load 10(a1) 17: 7(fvec4) Load 11(a2) 18: 7(fvec4) Load 12(a3) 19: 7(fvec4) FMul 17 18 20: 7(fvec4) FAdd 16 19 21: 7(fvec4) Load 13(a4) 22: 7(fvec4) FAdd 20 21 24: 7(fvec4) Load 10(a1) 25: 23(fvec3) VectorShuffle 24 24 0 1 2 26: 7(fvec4) Load 11(a2) 27: 23(fvec3) VectorShuffle 26 26 0 1 2 28: 23(fvec3) FMul 25 27 32: 31(ptr) AccessChain 12(a3) 30 33: 6(float) Load 32 34: 6(float) CompositeExtract 28 0 35: 6(float) CompositeExtract 28 1 36: 6(float) CompositeExtract 28 2 37: 7(fvec4) CompositeConstruct 34 35 36 33 38: 7(fvec4) FAdd 22 37 ReturnValue 38 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.precedence2.frag.out000066400000000000000000000216551506534232700232470ustar00rootroot00000000000000hlsl.precedence2.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @PixelShaderFunction(i1;i1;i1;i1; ( temp int) 0:7 Function Parameters: 0:7 'a1' ( in int) 0:7 'a2' ( in int) 0:7 'a3' ( in int) 0:7 'a4' ( in int) 0:? Sequence 0:8 Branch: Return with expression 0:8 add ( temp int) 0:8 left-shift ( temp int) 0:8 add ( temp int) 0:8 component-wise multiply ( temp int) 0:8 'a1' ( in int) 0:8 'a2' ( in int) 0:8 'a3' ( in int) 0:8 'a4' ( in int) 0:8 left-shift ( temp int) 0:8 'a1' ( in int) 0:8 add ( temp int) 0:8 'a2' ( in int) 0:8 component-wise multiply ( temp int) 0:8 'a3' ( in int) 0:8 'a4' ( in int) 0:7 Function Definition: PixelShaderFunction( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp int) 0:? 'a1' ( temp int) 0:? 'a1' (layout( location=0) flat in int) 0:7 move second child to first child ( temp int) 0:? 'a2' ( temp int) 0:? 'a2' (layout( location=1) flat in int) 0:7 move second child to first child ( temp int) 0:? 'a3' ( temp int) 0:? 'a3' (layout( location=2) flat in int) 0:7 move second child to first child ( temp int) 0:? 'a4' ( temp int) 0:? 'a4' (layout( location=3) flat in int) 0:7 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) 0:7 Function Call: @PixelShaderFunction(i1;i1;i1;i1; ( temp int) 0:? 'a1' ( temp int) 0:? 'a2' ( temp int) 0:? 'a3' ( temp int) 0:? 'a4' ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) 0:? 'a1' (layout( location=0) flat in int) 0:? 'a2' (layout( location=1) flat in int) 0:? 'a3' (layout( location=2) flat in int) 0:? 'a4' (layout( location=3) flat in int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @PixelShaderFunction(i1;i1;i1;i1; ( temp int) 0:7 Function Parameters: 0:7 'a1' ( in int) 0:7 'a2' ( in int) 0:7 'a3' ( in int) 0:7 'a4' ( in int) 0:? Sequence 0:8 Branch: Return with expression 0:8 add ( temp int) 0:8 left-shift ( temp int) 0:8 add ( temp int) 0:8 component-wise multiply ( temp int) 0:8 'a1' ( in int) 0:8 'a2' ( in int) 0:8 'a3' ( in int) 0:8 'a4' ( in int) 0:8 left-shift ( temp int) 0:8 'a1' ( in int) 0:8 add ( temp int) 0:8 'a2' ( in int) 0:8 component-wise multiply ( temp int) 0:8 'a3' ( in int) 0:8 'a4' ( in int) 0:7 Function Definition: PixelShaderFunction( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp int) 0:? 'a1' ( temp int) 0:? 'a1' (layout( location=0) flat in int) 0:7 move second child to first child ( temp int) 0:? 'a2' ( temp int) 0:? 'a2' (layout( location=1) flat in int) 0:7 move second child to first child ( temp int) 0:? 'a3' ( temp int) 0:? 'a3' (layout( location=2) flat in int) 0:7 move second child to first child ( temp int) 0:? 'a4' ( temp int) 0:? 'a4' (layout( location=3) flat in int) 0:7 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) 0:7 Function Call: @PixelShaderFunction(i1;i1;i1;i1; ( temp int) 0:? 'a1' ( temp int) 0:? 'a2' ( temp int) 0:? 'a3' ( temp int) 0:? 'a4' ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) 0:? 'a1' (layout( location=0) flat in int) 0:? 'a2' (layout( location=1) flat in int) 0:? 'a3' (layout( location=2) flat in int) 0:? 'a4' (layout( location=3) flat in int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 34 37 40 43 46 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 13 "@PixelShaderFunction(i1;i1;i1;i1;" Name 9 "a1" Name 10 "a2" Name 11 "a3" Name 12 "a4" Name 32 "a1" Name 34 "a1" Name 36 "a2" Name 37 "a2" Name 39 "a3" Name 40 "a3" Name 42 "a4" Name 43 "a4" Name 46 "@entryPointOutput" Name 47 "param" Name 49 "param" Name 51 "param" Name 53 "param" Decorate 34(a1) Flat Decorate 34(a1) Location 0 Decorate 37(a2) Flat Decorate 37(a2) Location 1 Decorate 40(a3) Flat Decorate 40(a3) Location 2 Decorate 43(a4) Flat Decorate 43(a4) Location 3 Decorate 46(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFunction 6(int) 7(ptr) 7(ptr) 7(ptr) 7(ptr) 33: TypePointer Input 6(int) 34(a1): 33(ptr) Variable Input 37(a2): 33(ptr) Variable Input 40(a3): 33(ptr) Variable Input 43(a4): 33(ptr) Variable Input 45: TypePointer Output 6(int) 46(@entryPointOutput): 45(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 32(a1): 7(ptr) Variable Function 36(a2): 7(ptr) Variable Function 39(a3): 7(ptr) Variable Function 42(a4): 7(ptr) Variable Function 47(param): 7(ptr) Variable Function 49(param): 7(ptr) Variable Function 51(param): 7(ptr) Variable Function 53(param): 7(ptr) Variable Function 35: 6(int) Load 34(a1) Store 32(a1) 35 38: 6(int) Load 37(a2) Store 36(a2) 38 41: 6(int) Load 40(a3) Store 39(a3) 41 44: 6(int) Load 43(a4) Store 42(a4) 44 48: 6(int) Load 32(a1) Store 47(param) 48 50: 6(int) Load 36(a2) Store 49(param) 50 52: 6(int) Load 39(a3) Store 51(param) 52 54: 6(int) Load 42(a4) Store 53(param) 54 55: 6(int) FunctionCall 13(@PixelShaderFunction(i1;i1;i1;i1;) 47(param) 49(param) 51(param) 53(param) Store 46(@entryPointOutput) 55 Return FunctionEnd 13(@PixelShaderFunction(i1;i1;i1;i1;): 6(int) Function None 8 9(a1): 7(ptr) FunctionParameter 10(a2): 7(ptr) FunctionParameter 11(a3): 7(ptr) FunctionParameter 12(a4): 7(ptr) FunctionParameter 14: Label 15: 6(int) Load 9(a1) 16: 6(int) Load 10(a2) 17: 6(int) IMul 15 16 18: 6(int) Load 11(a3) 19: 6(int) IAdd 17 18 20: 6(int) Load 12(a4) 21: 6(int) ShiftLeftLogical 19 20 22: 6(int) Load 9(a1) 23: 6(int) Load 10(a2) 24: 6(int) Load 11(a3) 25: 6(int) Load 12(a4) 26: 6(int) IMul 24 25 27: 6(int) IAdd 23 26 28: 6(int) ShiftLeftLogical 22 27 29: 6(int) IAdd 21 28 ReturnValue 29 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.precise.frag.out000066400000000000000000000147641506534232700225250ustar00rootroot00000000000000hlsl.precise.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: MyFunction(f1;vf3; ( temp void) 0:6 Function Parameters: 0:6 'myfloat' ( noContraction in float) 0:6 'myfloat3' ( noContraction out 3-component vector of float) 0:9 Function Definition: @main( ( temp structure{ noContraction temp 4-component vector of float color}) 0:9 Function Parameters: 0:? Sequence 0:11 move second child to first child ( noContraction temp 4-component vector of float) 0:11 color: direct index for structure ( noContraction temp 4-component vector of float) 0:11 'ps_output' ( temp structure{ noContraction temp 4-component vector of float color}) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1.000000 0:11 1.000000 0:11 1.000000 0:11 1.000000 0:12 Branch: Return with expression 0:12 'ps_output' ( temp structure{ noContraction temp 4-component vector of float color}) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 Sequence 0:9 move second child to first child ( noContraction temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float) 0:9 color: direct index for structure ( noContraction temp 4-component vector of float) 0:9 Function Call: @main( ( temp structure{ noContraction temp 4-component vector of float color}) 0:9 Constant: 0:9 0 (const int) 0:? Linker Objects 0:? 'precisefloat' ( noContraction global float) 0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: MyFunction(f1;vf3; ( temp void) 0:6 Function Parameters: 0:6 'myfloat' ( noContraction in float) 0:6 'myfloat3' ( noContraction out 3-component vector of float) 0:9 Function Definition: @main( ( temp structure{ noContraction temp 4-component vector of float color}) 0:9 Function Parameters: 0:? Sequence 0:11 move second child to first child ( noContraction temp 4-component vector of float) 0:11 color: direct index for structure ( noContraction temp 4-component vector of float) 0:11 'ps_output' ( temp structure{ noContraction temp 4-component vector of float color}) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1.000000 0:11 1.000000 0:11 1.000000 0:11 1.000000 0:12 Branch: Return with expression 0:12 'ps_output' ( temp structure{ noContraction temp 4-component vector of float color}) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 Sequence 0:9 move second child to first child ( noContraction temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float) 0:9 color: direct index for structure ( noContraction temp 4-component vector of float) 0:9 Function Call: @main( ( temp structure{ noContraction temp 4-component vector of float color}) 0:9 Constant: 0:9 0 (const int) 0:? Linker Objects 0:? 'precisefloat' ( noContraction global float) 0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 32 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 13 "MyFunction(f1;vf3;" Name 11 "myfloat" Name 12 "myfloat3" Name 16 "PS_OUTPUT" MemberName 16(PS_OUTPUT) 0 "color" Name 18 "@main(" Name 21 "ps_output" Name 32 "@entryPointOutput.color" Name 36 "precisefloat" Decorate 32(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeVector 6(float) 3 9: TypePointer Function 8(fvec3) 10: TypeFunction 2 7(ptr) 9(ptr) 15: TypeVector 6(float) 4 16(PS_OUTPUT): TypeStruct 15(fvec4) 17: TypeFunction 16(PS_OUTPUT) 20: TypePointer Function 16(PS_OUTPUT) 22: TypeInt 32 1 23: 22(int) Constant 0 24: 6(float) Constant 1065353216 25: 15(fvec4) ConstantComposite 24 24 24 24 26: TypePointer Function 15(fvec4) 31: TypePointer Output 15(fvec4) 32(@entryPointOutput.color): 31(ptr) Variable Output 35: TypePointer Private 6(float) 36(precisefloat): 35(ptr) Variable Private 4(main): 2 Function None 3 5: Label 33:16(PS_OUTPUT) FunctionCall 18(@main() 34: 15(fvec4) CompositeExtract 33 0 Store 32(@entryPointOutput.color) 34 Return FunctionEnd 13(MyFunction(f1;vf3;): 2 Function None 10 11(myfloat): 7(ptr) FunctionParameter 12(myfloat3): 9(ptr) FunctionParameter 14: Label Return FunctionEnd 18(@main():16(PS_OUTPUT) Function None 17 19: Label 21(ps_output): 20(ptr) Variable Function 27: 26(ptr) AccessChain 21(ps_output) 23 Store 27 25 28:16(PS_OUTPUT) Load 21(ps_output) ReturnValue 28 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.preprocessor.frag.out000066400000000000000000000171761506534232700236210ustar00rootroot00000000000000hlsl.preprocessor.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:9 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 'input' ( in 4-component vector of float) 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'tex' ( temp 4-component vector of float) 0:10 texture ( temp 4-component vector of float) 0:10 Construct combined texture-sampler ( temp sampler2D) 0:10 'test_texture' ( uniform texture2D) 0:10 'test_texture_ss' ( uniform sampler) 0:10 vector swizzle ( temp 2-component vector of float) 0:10 vector swizzle ( temp 2-component vector of float) 0:10 'input' ( 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 Sequence 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 1 (const int) 0:11 Branch: Return with expression 0:11 'tex' ( temp 4-component vector of float) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 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:9 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:9 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'test_texture' ( uniform texture2D) 0:? 'test_texture_ss' ( uniform sampler) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 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:9 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 'input' ( in 4-component vector of float) 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'tex' ( temp 4-component vector of float) 0:10 texture ( temp 4-component vector of float) 0:10 Construct combined texture-sampler ( temp sampler2D) 0:10 'test_texture' ( uniform texture2D) 0:10 'test_texture_ss' ( uniform sampler) 0:10 vector swizzle ( temp 2-component vector of float) 0:10 vector swizzle ( temp 2-component vector of float) 0:10 'input' ( 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 Sequence 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 1 (const int) 0:11 Branch: Return with expression 0:11 'tex' ( temp 4-component vector of float) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 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:9 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:9 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'test_texture' ( uniform texture2D) 0:? 'test_texture_ss' ( uniform sampler) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 33 36 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "input" Name 13 "tex" Name 16 "test_texture" Name 20 "test_texture_ss" Name 31 "input" Name 33 "input" Name 36 "@entryPointOutput" Name 37 "param" Decorate 16(test_texture) Binding 0 Decorate 16(test_texture) DescriptorSet 0 Decorate 20(test_texture_ss) Binding 1 Decorate 20(test_texture_ss) DescriptorSet 0 Decorate 33(input) Location 0 Decorate 36(@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: TypeImage 6(float) 2D sampled format:Unknown 15: TypePointer UniformConstant 14 16(test_texture): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(test_texture_ss): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 32: TypePointer Input 7(fvec4) 33(input): 32(ptr) Variable Input 35: TypePointer Output 7(fvec4) 36(@entryPointOutput): 35(ptr) Variable Output 4(main): 2 Function None 3 5: Label 31(input): 8(ptr) Variable Function 37(param): 8(ptr) Variable Function 34: 7(fvec4) Load 33(input) Store 31(input) 34 38: 7(fvec4) Load 31(input) Store 37(param) 38 39: 7(fvec4) FunctionCall 11(@main(vf4;) 37(param) Store 36(@entryPointOutput) 39 Return FunctionEnd 11(@main(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 13(tex): 8(ptr) Variable Function 17: 14 Load 16(test_texture) 21: 18 Load 20(test_texture_ss) 23: 22 SampledImage 17 21 25: 7(fvec4) Load 10(input) 26: 24(fvec2) VectorShuffle 25 25 0 1 27: 7(fvec4) ImageSampleImplicitLod 23 26 Store 13(tex) 27 28: 7(fvec4) Load 13(tex) ReturnValue 28 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.printf.comp.out000066400000000000000000000133061506534232700224030ustar00rootroot00000000000000hlsl.printf.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:4 Function Definition: @main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:5 Debug printf ( temp void) 0:5 Constant: 0:5 "first string" 0:6 Debug printf ( temp void) 0:6 Constant: 0:6 "please print this message." 0:7 Debug printf ( temp void) 0:7 Constant: 0:7 "Variables are: %d %d %.2f" 0:7 Constant: 0:7 1 (const uint) 0:7 Constant: 0:7 2 (const uint) 0:7 Constant: 0:7 1.500000 0:8 Debug printf ( temp void) 0:8 Constant: 0:8 "Integers are: %d %d %d" 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:9 Debug printf ( temp void) 0:9 Constant: 0:9 "More: %d %d %d %d %d %d %d %d %d %d" 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 3 (const int) 0:9 Constant: 0:9 4 (const int) 0:9 Constant: 0:9 5 (const int) 0:9 Constant: 0:9 6 (const int) 0:9 Constant: 0:9 7 (const int) 0:9 Constant: 0:9 8 (const int) 0:9 Constant: 0:9 9 (const int) 0:9 Constant: 0:9 10 (const int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'first' ( const string) 0:? "first string" Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:4 Function Definition: @main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:5 Debug printf ( temp void) 0:5 Constant: 0:5 "first string" 0:6 Debug printf ( temp void) 0:6 Constant: 0:6 "please print this message." 0:7 Debug printf ( temp void) 0:7 Constant: 0:7 "Variables are: %d %d %.2f" 0:7 Constant: 0:7 1 (const uint) 0:7 Constant: 0:7 2 (const uint) 0:7 Constant: 0:7 1.500000 0:8 Debug printf ( temp void) 0:8 Constant: 0:8 "Integers are: %d %d %d" 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:9 Debug printf ( temp void) 0:9 Constant: 0:9 "More: %d %d %d %d %d %d %d %d %d %d" 0:9 Constant: 0:9 1 (const int) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 3 (const int) 0:9 Constant: 0:9 4 (const int) 0:9 Constant: 0:9 5 (const int) 0:9 Constant: 0:9 6 (const int) 0:9 Constant: 0:9 7 (const int) 0:9 Constant: 0:9 8 (const int) 0:9 Constant: 0:9 9 (const int) 0:9 Constant: 0:9 10 (const int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 Function Call: @main( ( temp void) 0:? Linker Objects 0:? 'first' ( const string) 0:? "first string" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "GLSL.std.450" 9: ExtInstImport "NonSemantic.DebugPrintf" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 8: String "first string" 11: String "please print this message." 13: String "Variables are: %d %d %.2f" 20: String "Integers are: %d %d %d" 26: String "More: %d %d %d %d %d %d %d %d %d %d" Source HLSL 500 Name 4 "main" Name 6 "@main(" 2: TypeVoid 3: TypeFunction 2 14: TypeInt 32 0 15: 14(int) Constant 1 16: 14(int) Constant 2 17: TypeFloat 32 18: 17(float) Constant 1069547520 21: TypeInt 32 1 22: 21(int) Constant 1 23: 21(int) Constant 2 24: 21(int) Constant 3 27: 21(int) Constant 4 28: 21(int) Constant 5 29: 21(int) Constant 6 30: 21(int) Constant 7 31: 21(int) Constant 8 32: 21(int) Constant 9 33: 21(int) Constant 10 4(main): 2 Function None 3 5: Label 35: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label 10: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 8 12: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 11 19: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 13 15 16 18 25: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 20 22 23 24 34: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 26 22 23 24 27 28 29 30 31 32 33 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.promote.atomic.frag.out000066400000000000000000000122421506534232700240200ustar00rootroot00000000000000hlsl.promote.atomic.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp int) 0:13 'Orig' ( temp int) 0:13 Convert uint to int ( temp int) 0:13 imageAtomicAdd ( temp uint) 0:13 's_uintbuff' (layout( r32ui) uniform uimageBuffer) 0:13 'Loc' ( temp int) 0:13 Convert int to uint ( temp uint) 0:13 'Inc' ( temp int) 0:15 Branch: Return with expression 0:15 Constant: 0:15 0.000000 0:15 0.000000 0:15 0.000000 0:15 0.000000 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:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:5 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 's_uintbuff' (layout( r32ui) uniform uimageBuffer) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp int) 0:13 'Orig' ( temp int) 0:13 Convert uint to int ( temp int) 0:13 imageAtomicAdd ( temp uint) 0:13 's_uintbuff' (layout( r32ui) uniform uimageBuffer) 0:13 'Loc' ( temp int) 0:13 Convert int to uint ( temp uint) 0:13 'Inc' ( temp int) 0:15 Branch: Return with expression 0:15 Constant: 0:15 0.000000 0:15 0.000000 0:15 0.000000 0:15 0.000000 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:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:5 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 's_uintbuff' (layout( r32ui) uniform uimageBuffer) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader Capability ImageBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 34 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "Orig" Name 17 "s_uintbuff" Name 18 "Loc" Name 20 "Inc" Name 34 "@entryPointOutput" Decorate 17(s_uintbuff) Binding 0 Decorate 17(s_uintbuff) DescriptorSet 0 Decorate 34(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 1 12: TypePointer Function 11(int) 14: TypeInt 32 0 15: TypeImage 14(int) Buffer nonsampled format:R32ui 16: TypePointer UniformConstant 15 17(s_uintbuff): 16(ptr) Variable UniformConstant 23: 14(int) Constant 0 24: TypePointer Image 14(int) 26: 14(int) Constant 1 29: 6(float) Constant 0 30: 7(fvec4) ConstantComposite 29 29 29 29 33: TypePointer Output 7(fvec4) 34(@entryPointOutput): 33(ptr) Variable Output 4(main): 2 Function None 3 5: Label 35: 7(fvec4) FunctionCall 9(@main() Store 34(@entryPointOutput) 35 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 13(Orig): 12(ptr) Variable Function 18(Loc): 12(ptr) Variable Function 20(Inc): 12(ptr) Variable Function 19: 11(int) Load 18(Loc) 21: 11(int) Load 20(Inc) 22: 14(int) Bitcast 21 25: 24(ptr) ImageTexelPointer 17(s_uintbuff) 19 23 27: 14(int) AtomicIAdd 25 26 23 22 28: 11(int) Bitcast 27 Store 13(Orig) 28 ReturnValue 30 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.promote.binary.frag.out000066400000000000000000000424161506534232700240360ustar00rootroot00000000000000hlsl.promote.binary.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:14 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:14 Function Parameters: 0:? Sequence 0:15 mod ( temp float) 0:15 Convert int to float ( temp float) 0:15 ival: direct index for structure ( uniform int) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:15 Constant: 0:15 2 (const uint) 0:15 fval: direct index for structure ( uniform float) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:15 Constant: 0:15 4 (const uint) 0:16 mod ( temp 4-component vector of float) 0:16 Convert int to float ( temp 4-component vector of float) 0:16 ival4: direct index for structure ( uniform 4-component vector of int) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:16 Constant: 0:16 3 (const uint) 0:16 fval4: direct index for structure ( uniform 4-component vector of float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:16 Constant: 0:16 5 (const uint) 0:18 mod ( temp float) 0:18 Convert bool to float ( temp float) 0:18 bval: direct index for structure ( uniform bool) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:18 Constant: 0:18 0 (const uint) 0:18 fval: direct index for structure ( uniform float) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:18 Constant: 0:18 4 (const uint) 0:19 mod ( temp 4-component vector of float) 0:19 Convert bool to float ( temp 4-component vector of float) 0:19 bval4: direct index for structure ( uniform 4-component vector of bool) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:19 Constant: 0:19 1 (const uint) 0:19 fval4: direct index for structure ( uniform 4-component vector of float) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:19 Constant: 0:19 5 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'l_int' ( temp int) 0:21 Constant: 0:21 1 (const int) 0:22 mod second child into first child ( temp int) 0:22 'l_int' ( temp int) 0:22 Convert float to int ( temp int) 0:22 fval: direct index for structure ( uniform float) 0:22 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:22 Constant: 0:22 4 (const uint) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 Color: direct index for structure ( temp 4-component vector of float) 0:25 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:26 Branch: Return with expression 0:26 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:14 Function Definition: main( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:14 Color: direct index for structure ( temp 4-component vector of float) 0:14 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:14 Constant: 0:14 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:14 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:14 Function Parameters: 0:? Sequence 0:15 mod ( temp float) 0:15 Convert int to float ( temp float) 0:15 ival: direct index for structure ( uniform int) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:15 Constant: 0:15 2 (const uint) 0:15 fval: direct index for structure ( uniform float) 0:15 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:15 Constant: 0:15 4 (const uint) 0:16 mod ( temp 4-component vector of float) 0:16 Convert int to float ( temp 4-component vector of float) 0:16 ival4: direct index for structure ( uniform 4-component vector of int) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:16 Constant: 0:16 3 (const uint) 0:16 fval4: direct index for structure ( uniform 4-component vector of float) 0:16 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:16 Constant: 0:16 5 (const uint) 0:18 mod ( temp float) 0:18 Convert bool to float ( temp float) 0:18 bval: direct index for structure ( uniform bool) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:18 Constant: 0:18 0 (const uint) 0:18 fval: direct index for structure ( uniform float) 0:18 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:18 Constant: 0:18 4 (const uint) 0:19 mod ( temp 4-component vector of float) 0:19 Convert bool to float ( temp 4-component vector of float) 0:19 bval4: direct index for structure ( uniform 4-component vector of bool) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:19 Constant: 0:19 1 (const uint) 0:19 fval4: direct index for structure ( uniform 4-component vector of float) 0:19 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:19 Constant: 0:19 5 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'l_int' ( temp int) 0:21 Constant: 0:21 1 (const int) 0:22 mod second child into first child ( temp int) 0:22 'l_int' ( temp int) 0:22 Convert float to int ( temp int) 0:22 fval: direct index for structure ( uniform float) 0:22 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:22 Constant: 0:22 4 (const uint) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 Color: direct index for structure ( temp 4-component vector of float) 0:25 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:26 Branch: Return with expression 0:26 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:14 Function Definition: main( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:14 Color: direct index for structure ( temp 4-component vector of float) 0:14 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:14 Constant: 0:14 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 83 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 80 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 16 "$Global" MemberName 16($Global) 0 "bval" MemberName 16($Global) 1 "bval4" MemberName 16($Global) 2 "ival" MemberName 16($Global) 3 "ival4" MemberName 16($Global) 4 "fval" MemberName 16($Global) 5 "fval4" Name 18 "" Name 66 "l_int" Name 73 "psout" Name 80 "@entryPointOutput.Color" Decorate 16($Global) Block MemberDecorate 16($Global) 0 Offset 0 MemberDecorate 16($Global) 1 Offset 16 MemberDecorate 16($Global) 2 Offset 32 MemberDecorate 16($Global) 3 Offset 48 MemberDecorate 16($Global) 4 Offset 64 MemberDecorate 16($Global) 5 Offset 80 Decorate 18 Binding 0 Decorate 18 DescriptorSet 0 Decorate 80(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 0 13: TypeVector 12(int) 4 14: TypeInt 32 1 15: TypeVector 14(int) 4 16($Global): TypeStruct 12(int) 13(ivec4) 14(int) 15(ivec4) 6(float) 7(fvec4) 17: TypePointer Uniform 16($Global) 18: 17(ptr) Variable Uniform 19: 14(int) Constant 2 20: TypePointer Uniform 14(int) 24: 14(int) Constant 4 25: TypePointer Uniform 6(float) 29: 14(int) Constant 3 30: TypePointer Uniform 15(ivec4) 34: 14(int) Constant 5 35: TypePointer Uniform 7(fvec4) 39: 14(int) Constant 0 40: TypePointer Uniform 12(int) 43: TypeBool 44: 12(int) Constant 0 46: 6(float) Constant 0 47: 6(float) Constant 1065353216 52: 14(int) Constant 1 53: TypePointer Uniform 13(ivec4) 56: TypeVector 43(bool) 4 57: 13(ivec4) ConstantComposite 44 44 44 44 59: 7(fvec4) ConstantComposite 46 46 46 46 60: 7(fvec4) ConstantComposite 47 47 47 47 65: TypePointer Function 14(int) 72: TypePointer Function 8(PS_OUTPUT) 74: TypePointer Function 7(fvec4) 79: TypePointer Output 7(fvec4) 80(@entryPointOutput.Color): 79(ptr) Variable Output 4(main): 2 Function None 3 5: Label 81:8(PS_OUTPUT) FunctionCall 10(@main() 82: 7(fvec4) CompositeExtract 81 0 Store 80(@entryPointOutput.Color) 82 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 66(l_int): 65(ptr) Variable Function 73(psout): 72(ptr) Variable Function 21: 20(ptr) AccessChain 18 19 22: 14(int) Load 21 23: 6(float) ConvertSToF 22 26: 25(ptr) AccessChain 18 24 27: 6(float) Load 26 28: 6(float) FMod 23 27 31: 30(ptr) AccessChain 18 29 32: 15(ivec4) Load 31 33: 7(fvec4) ConvertSToF 32 36: 35(ptr) AccessChain 18 34 37: 7(fvec4) Load 36 38: 7(fvec4) FMod 33 37 41: 40(ptr) AccessChain 18 39 42: 12(int) Load 41 45: 43(bool) INotEqual 42 44 48: 6(float) Select 45 47 46 49: 25(ptr) AccessChain 18 24 50: 6(float) Load 49 51: 6(float) FMod 48 50 54: 53(ptr) AccessChain 18 52 55: 13(ivec4) Load 54 58: 56(bvec4) INotEqual 55 57 61: 7(fvec4) Select 58 60 59 62: 35(ptr) AccessChain 18 34 63: 7(fvec4) Load 62 64: 7(fvec4) FMod 61 63 Store 66(l_int) 52 67: 25(ptr) AccessChain 18 24 68: 6(float) Load 67 69: 14(int) ConvertFToS 68 70: 14(int) Load 66(l_int) 71: 14(int) SMod 70 69 Store 66(l_int) 71 75: 74(ptr) AccessChain 73(psout) 39 Store 75 59 76:8(PS_OUTPUT) Load 73(psout) ReturnValue 76 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.promote.vec1.frag.out000066400000000000000000000125461506534232700234110ustar00rootroot00000000000000hlsl.promote.vec1.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @main( ( temp 4-component vector of float) 0:3 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 'f1a' ( temp float) 0:7 Construct float ( temp float) 0:7 'f1b' ( temp 1-component vector of float) 0:8 move second child to first child ( temp 1-component vector of float) 0:8 'f1b' ( temp 1-component vector of float) 0:8 Construct float ( temp 1-component vector of float) 0:8 'f1a' ( temp float) 0:11 step ( temp 3-component vector of float) 0:11 Constant: 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 'f3' ( temp 3-component vector of float) 0:13 sine ( temp float) 0:13 Construct float ( in float) 0:13 'f1b' ( temp 1-component vector of float) 0:15 Branch: Return with expression 0:15 Constant: 0:15 0.000000 0:15 0.000000 0:15 0.000000 0:15 0.000000 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:3 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @main( ( temp 4-component vector of float) 0:3 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp float) 0:7 'f1a' ( temp float) 0:7 Construct float ( temp float) 0:7 'f1b' ( temp 1-component vector of float) 0:8 move second child to first child ( temp 1-component vector of float) 0:8 'f1b' ( temp 1-component vector of float) 0:8 Construct float ( temp 1-component vector of float) 0:8 'f1a' ( temp float) 0:11 step ( temp 3-component vector of float) 0:11 Constant: 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 'f3' ( temp 3-component vector of float) 0:13 sine ( temp float) 0:13 Construct float ( in float) 0:13 'f1b' ( temp 1-component vector of float) 0:15 Branch: Return with expression 0:15 Constant: 0:15 0.000000 0:15 0.000000 0:15 0.000000 0:15 0.000000 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:3 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 29 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "f1a" Name 13 "f1b" Name 20 "f3" Name 29 "@entryPointOutput" Decorate 29(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 6(float) 16: TypeVector 6(float) 3 17: 6(float) Constant 0 18: 16(fvec3) ConstantComposite 17 17 17 19: TypePointer Function 16(fvec3) 25: 7(fvec4) ConstantComposite 17 17 17 17 28: TypePointer Output 7(fvec4) 29(@entryPointOutput): 28(ptr) Variable Output 4(main): 2 Function None 3 5: Label 30: 7(fvec4) FunctionCall 9(@main() Store 29(@entryPointOutput) 30 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(f1a): 11(ptr) Variable Function 13(f1b): 11(ptr) Variable Function 20(f3): 19(ptr) Variable Function 14: 6(float) Load 13(f1b) Store 12(f1a) 14 15: 6(float) Load 12(f1a) Store 13(f1b) 15 21: 16(fvec3) Load 20(f3) 22: 16(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 18 21 23: 6(float) Load 13(f1b) 24: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 23 ReturnValue 25 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.promotions.frag.out000066400000000000000000005326461506534232700233100ustar00rootroot00000000000000hlsl.promotions.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:19 Function Definition: Fn_F3(vf3; ( temp void) 0:19 Function Parameters: 0:19 'x' ( in 3-component vector of float) 0:20 Function Definition: Fn_I3(vi3; ( temp void) 0:20 Function Parameters: 0:20 'x' ( in 3-component vector of int) 0:21 Function Definition: Fn_U3(vu3; ( temp void) 0:21 Function Parameters: 0:21 'x' ( in 3-component vector of uint) 0:22 Function Definition: Fn_B3(vb3; ( temp void) 0:22 Function Parameters: 0:22 'x' ( in 3-component vector of bool) 0:23 Function Definition: Fn_D3(vd3; ( temp void) 0:23 Function Parameters: 0:23 'x' ( in 3-component vector of double) 0:26 Function Definition: Fn_R_F3I(vf3; ( temp 3-component vector of float) 0:26 Function Parameters: 0:26 'p' ( out 3-component vector of float) 0:? Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 'p' ( out 3-component vector of float) 0:26 Convert int to float ( temp 3-component vector of float) 0:26 i3: direct index for structure ( uniform 3-component vector of int) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:26 Constant: 0:26 0 (const uint) 0:26 Branch: Return with expression 0:26 Convert int to float ( temp 3-component vector of float) 0:26 i3: direct index for structure ( uniform 3-component vector of int) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:26 Constant: 0:26 0 (const uint) 0:27 Function Definition: Fn_R_F3U(vf3; ( temp 3-component vector of float) 0:27 Function Parameters: 0:27 'p' ( out 3-component vector of float) 0:? Sequence 0:27 move second child to first child ( temp 3-component vector of float) 0:27 'p' ( out 3-component vector of float) 0:27 Convert uint to float ( temp 3-component vector of float) 0:27 u3: direct index for structure ( uniform 3-component vector of uint) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:27 Constant: 0:27 3 (const uint) 0:27 Branch: Return with expression 0:27 Convert uint to float ( temp 3-component vector of float) 0:27 u3: direct index for structure ( uniform 3-component vector of uint) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:27 Constant: 0:27 3 (const uint) 0:28 Function Definition: Fn_R_F3B(vf3; ( temp 3-component vector of float) 0:28 Function Parameters: 0:28 'p' ( out 3-component vector of float) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 'p' ( out 3-component vector of float) 0:28 Convert bool to float ( temp 3-component vector of float) 0:28 b3: direct index for structure ( uniform 3-component vector of bool) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:28 Constant: 0:28 1 (const uint) 0:28 Branch: Return with expression 0:28 Convert bool to float ( temp 3-component vector of float) 0:28 b3: direct index for structure ( uniform 3-component vector of bool) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:28 Constant: 0:28 1 (const uint) 0:29 Function Definition: Fn_R_F3D(vf3; ( temp 3-component vector of float) 0:29 Function Parameters: 0:29 'p' ( out 3-component vector of float) 0:? Sequence 0:29 move second child to first child ( temp 3-component vector of float) 0:29 'p' ( out 3-component vector of float) 0:29 Convert double to float ( temp 3-component vector of float) 0:29 d3: direct index for structure ( uniform 3-component vector of double) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:29 Constant: 0:29 4 (const uint) 0:29 Branch: Return with expression 0:29 Convert double to float ( temp 3-component vector of float) 0:29 d3: direct index for structure ( uniform 3-component vector of double) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:29 Constant: 0:29 4 (const uint) 0:31 Function Definition: Fn_R_I3U(vi3; ( temp 3-component vector of int) 0:31 Function Parameters: 0:31 'p' ( out 3-component vector of int) 0:? Sequence 0:31 move second child to first child ( temp 3-component vector of int) 0:31 'p' ( out 3-component vector of int) 0:31 Convert uint to int ( temp 3-component vector of int) 0:31 u3: direct index for structure ( uniform 3-component vector of uint) 0:31 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:31 Constant: 0:31 3 (const uint) 0:31 Branch: Return with expression 0:31 Convert uint to int ( temp 3-component vector of int) 0:31 u3: direct index for structure ( uniform 3-component vector of uint) 0:31 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:31 Constant: 0:31 3 (const uint) 0:32 Function Definition: Fn_R_I3B(vi3; ( temp 3-component vector of int) 0:32 Function Parameters: 0:32 'p' ( out 3-component vector of int) 0:? Sequence 0:32 move second child to first child ( temp 3-component vector of int) 0:32 'p' ( out 3-component vector of int) 0:32 Convert bool to int ( temp 3-component vector of int) 0:32 b3: direct index for structure ( uniform 3-component vector of bool) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:32 Constant: 0:32 1 (const uint) 0:32 Branch: Return with expression 0:32 Convert bool to int ( temp 3-component vector of int) 0:32 b3: direct index for structure ( uniform 3-component vector of bool) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:32 Constant: 0:32 1 (const uint) 0:33 Function Definition: Fn_R_I3F(vi3; ( temp 3-component vector of int) 0:33 Function Parameters: 0:33 'p' ( out 3-component vector of int) 0:? Sequence 0:33 move second child to first child ( temp 3-component vector of int) 0:33 'p' ( out 3-component vector of int) 0:33 Convert float to int ( temp 3-component vector of int) 0:33 f3: direct index for structure ( uniform 3-component vector of float) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:33 Constant: 0:33 2 (const uint) 0:33 Branch: Return with expression 0:33 Convert float to int ( temp 3-component vector of int) 0:33 f3: direct index for structure ( uniform 3-component vector of float) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:33 Constant: 0:33 2 (const uint) 0:34 Function Definition: Fn_R_I3D(vi3; ( temp 3-component vector of int) 0:34 Function Parameters: 0:34 'p' ( out 3-component vector of int) 0:? Sequence 0:34 move second child to first child ( temp 3-component vector of int) 0:34 'p' ( out 3-component vector of int) 0:34 Convert double to int ( temp 3-component vector of int) 0:34 d3: direct index for structure ( uniform 3-component vector of double) 0:34 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:34 Constant: 0:34 4 (const uint) 0:34 Branch: Return with expression 0:34 Convert double to int ( temp 3-component vector of int) 0:34 d3: direct index for structure ( uniform 3-component vector of double) 0:34 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:34 Constant: 0:34 4 (const uint) 0:36 Function Definition: Fn_R_U3I(vu3; ( temp 3-component vector of uint) 0:36 Function Parameters: 0:36 'p' ( out 3-component vector of uint) 0:? Sequence 0:36 move second child to first child ( temp 3-component vector of uint) 0:36 'p' ( out 3-component vector of uint) 0:36 Convert int to uint ( temp 3-component vector of uint) 0:36 i3: direct index for structure ( uniform 3-component vector of int) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:36 Constant: 0:36 0 (const uint) 0:36 Branch: Return with expression 0:36 Convert int to uint ( temp 3-component vector of uint) 0:36 i3: direct index for structure ( uniform 3-component vector of int) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:36 Constant: 0:36 0 (const uint) 0:37 Function Definition: Fn_R_U3F(vu3; ( temp 3-component vector of uint) 0:37 Function Parameters: 0:37 'p' ( out 3-component vector of uint) 0:? Sequence 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 'p' ( out 3-component vector of uint) 0:37 Convert float to uint ( temp 3-component vector of uint) 0:37 f3: direct index for structure ( uniform 3-component vector of float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:37 Constant: 0:37 2 (const uint) 0:37 Branch: Return with expression 0:37 Convert float to uint ( temp 3-component vector of uint) 0:37 f3: direct index for structure ( uniform 3-component vector of float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:37 Constant: 0:37 2 (const uint) 0:38 Function Definition: Fn_R_U3B(vu3; ( temp 3-component vector of uint) 0:38 Function Parameters: 0:38 'p' ( out 3-component vector of uint) 0:? Sequence 0:38 move second child to first child ( temp 3-component vector of uint) 0:38 'p' ( out 3-component vector of uint) 0:38 Convert bool to uint ( temp 3-component vector of uint) 0:38 b3: direct index for structure ( uniform 3-component vector of bool) 0:38 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:38 Constant: 0:38 1 (const uint) 0:38 Branch: Return with expression 0:38 Convert bool to uint ( temp 3-component vector of uint) 0:38 b3: direct index for structure ( uniform 3-component vector of bool) 0:38 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:38 Constant: 0:38 1 (const uint) 0:39 Function Definition: Fn_R_U3D(vu3; ( temp 3-component vector of uint) 0:39 Function Parameters: 0:39 'p' ( out 3-component vector of uint) 0:? Sequence 0:39 move second child to first child ( temp 3-component vector of uint) 0:39 'p' ( out 3-component vector of uint) 0:39 Convert double to uint ( temp 3-component vector of uint) 0:39 d3: direct index for structure ( uniform 3-component vector of double) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:39 Constant: 0:39 4 (const uint) 0:39 Branch: Return with expression 0:39 Convert double to uint ( temp 3-component vector of uint) 0:39 d3: direct index for structure ( uniform 3-component vector of double) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:39 Constant: 0:39 4 (const uint) 0:41 Function Definition: Fn_R_B3I(vb3; ( temp 3-component vector of bool) 0:41 Function Parameters: 0:41 'p' ( out 3-component vector of bool) 0:? Sequence 0:41 move second child to first child ( temp 3-component vector of bool) 0:41 'p' ( out 3-component vector of bool) 0:41 Convert int to bool ( temp 3-component vector of bool) 0:41 i3: direct index for structure ( uniform 3-component vector of int) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:41 Constant: 0:41 0 (const uint) 0:41 Branch: Return with expression 0:41 Convert int to bool ( temp 3-component vector of bool) 0:41 i3: direct index for structure ( uniform 3-component vector of int) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:41 Constant: 0:41 0 (const uint) 0:42 Function Definition: Fn_R_B3U(vb3; ( temp 3-component vector of bool) 0:42 Function Parameters: 0:42 'p' ( out 3-component vector of bool) 0:? Sequence 0:42 move second child to first child ( temp 3-component vector of bool) 0:42 'p' ( out 3-component vector of bool) 0:42 Convert uint to bool ( temp 3-component vector of bool) 0:42 u3: direct index for structure ( uniform 3-component vector of uint) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:42 Constant: 0:42 3 (const uint) 0:42 Branch: Return with expression 0:42 Convert uint to bool ( temp 3-component vector of bool) 0:42 u3: direct index for structure ( uniform 3-component vector of uint) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:42 Constant: 0:42 3 (const uint) 0:43 Function Definition: Fn_R_B3F(vb3; ( temp 3-component vector of bool) 0:43 Function Parameters: 0:43 'p' ( out 3-component vector of bool) 0:? Sequence 0:43 move second child to first child ( temp 3-component vector of bool) 0:43 'p' ( out 3-component vector of bool) 0:43 Convert float to bool ( temp 3-component vector of bool) 0:43 f3: direct index for structure ( uniform 3-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:43 Constant: 0:43 2 (const uint) 0:43 Branch: Return with expression 0:43 Convert float to bool ( temp 3-component vector of bool) 0:43 f3: direct index for structure ( uniform 3-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:43 Constant: 0:43 2 (const uint) 0:44 Function Definition: Fn_R_B3D(vb3; ( temp 3-component vector of bool) 0:44 Function Parameters: 0:44 'p' ( out 3-component vector of bool) 0:? Sequence 0:44 move second child to first child ( temp 3-component vector of bool) 0:44 'p' ( out 3-component vector of bool) 0:44 Convert double to bool ( temp 3-component vector of bool) 0:44 d3: direct index for structure ( uniform 3-component vector of double) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:44 Constant: 0:44 4 (const uint) 0:44 Branch: Return with expression 0:44 Convert double to bool ( temp 3-component vector of bool) 0:44 d3: direct index for structure ( uniform 3-component vector of double) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:44 Constant: 0:44 4 (const uint) 0:46 Function Definition: Fn_R_D3I(vd3; ( temp 3-component vector of double) 0:46 Function Parameters: 0:46 'p' ( out 3-component vector of double) 0:? Sequence 0:46 move second child to first child ( temp 3-component vector of double) 0:46 'p' ( out 3-component vector of double) 0:46 Convert int to double ( temp 3-component vector of double) 0:46 i3: direct index for structure ( uniform 3-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:46 Constant: 0:46 0 (const uint) 0:46 Branch: Return with expression 0:46 Convert int to double ( temp 3-component vector of double) 0:46 i3: direct index for structure ( uniform 3-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:46 Constant: 0:46 0 (const uint) 0:47 Function Definition: Fn_R_D3U(vd3; ( temp 3-component vector of double) 0:47 Function Parameters: 0:47 'p' ( out 3-component vector of double) 0:? Sequence 0:47 move second child to first child ( temp 3-component vector of double) 0:47 'p' ( out 3-component vector of double) 0:47 Convert uint to double ( temp 3-component vector of double) 0:47 u3: direct index for structure ( uniform 3-component vector of uint) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:47 Constant: 0:47 3 (const uint) 0:47 Branch: Return with expression 0:47 Convert uint to double ( temp 3-component vector of double) 0:47 u3: direct index for structure ( uniform 3-component vector of uint) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:47 Constant: 0:47 3 (const uint) 0:48 Function Definition: Fn_R_D3B(vd3; ( temp 3-component vector of double) 0:48 Function Parameters: 0:48 'p' ( out 3-component vector of double) 0:? Sequence 0:48 move second child to first child ( temp 3-component vector of double) 0:48 'p' ( out 3-component vector of double) 0:48 Convert bool to double ( temp 3-component vector of double) 0:48 b3: direct index for structure ( uniform 3-component vector of bool) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:48 Constant: 0:48 1 (const uint) 0:48 Branch: Return with expression 0:48 Convert bool to double ( temp 3-component vector of double) 0:48 b3: direct index for structure ( uniform 3-component vector of bool) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:48 Constant: 0:48 1 (const uint) 0:49 Function Definition: Fn_R_D3F(vd3; ( temp 3-component vector of double) 0:49 Function Parameters: 0:49 'p' ( out 3-component vector of double) 0:? Sequence 0:49 move second child to first child ( temp 3-component vector of double) 0:49 'p' ( out 3-component vector of double) 0:49 Convert float to double ( temp 3-component vector of double) 0:49 f3: direct index for structure ( uniform 3-component vector of float) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:49 Constant: 0:49 2 (const uint) 0:49 Branch: Return with expression 0:49 Convert float to double ( temp 3-component vector of double) 0:49 f3: direct index for structure ( uniform 3-component vector of float) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:49 Constant: 0:49 2 (const uint) 0:52 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:52 Function Parameters: 0:? Sequence 0:54 Sequence 0:54 move second child to first child ( temp 3-component vector of float) 0:54 'r00' ( temp 3-component vector of float) 0:54 Convert int to float ( temp 3-component vector of float) 0:54 i3: direct index for structure ( uniform 3-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:54 Constant: 0:54 0 (const uint) 0:55 Sequence 0:55 move second child to first child ( temp 3-component vector of float) 0:55 'r01' ( temp 3-component vector of float) 0:55 Convert bool to float ( temp 3-component vector of float) 0:55 b3: direct index for structure ( uniform 3-component vector of bool) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:55 Constant: 0:55 1 (const uint) 0:56 Sequence 0:56 move second child to first child ( temp 3-component vector of float) 0:56 'r02' ( temp 3-component vector of float) 0:56 Convert uint to float ( temp 3-component vector of float) 0:56 u3: direct index for structure ( uniform 3-component vector of uint) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:56 Constant: 0:56 3 (const uint) 0:57 Sequence 0:57 move second child to first child ( temp 3-component vector of float) 0:57 'r03' ( temp 3-component vector of float) 0:57 Convert double to float ( temp 3-component vector of float) 0:57 d3: direct index for structure ( uniform 3-component vector of double) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:57 Constant: 0:57 4 (const uint) 0:59 Sequence 0:59 move second child to first child ( temp 3-component vector of int) 0:59 'r10' ( temp 3-component vector of int) 0:59 Convert bool to int ( temp 3-component vector of int) 0:59 b3: direct index for structure ( uniform 3-component vector of bool) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:59 Constant: 0:59 1 (const uint) 0:60 Sequence 0:60 move second child to first child ( temp 3-component vector of int) 0:60 'r11' ( temp 3-component vector of int) 0:60 Convert uint to int ( temp 3-component vector of int) 0:60 u3: direct index for structure ( uniform 3-component vector of uint) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:60 Constant: 0:60 3 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp 3-component vector of int) 0:61 'r12' ( temp 3-component vector of int) 0:61 Convert float to int ( temp 3-component vector of int) 0:61 f3: direct index for structure ( uniform 3-component vector of float) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:61 Constant: 0:61 2 (const uint) 0:62 Sequence 0:62 move second child to first child ( temp 3-component vector of int) 0:62 'r13' ( temp 3-component vector of int) 0:62 Convert double to int ( temp 3-component vector of int) 0:62 d3: direct index for structure ( uniform 3-component vector of double) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:62 Constant: 0:62 4 (const uint) 0:64 Sequence 0:64 move second child to first child ( temp 3-component vector of uint) 0:64 'r20' ( temp 3-component vector of uint) 0:64 Convert bool to uint ( temp 3-component vector of uint) 0:64 b3: direct index for structure ( uniform 3-component vector of bool) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:64 Constant: 0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child ( temp 3-component vector of uint) 0:65 'r21' ( temp 3-component vector of uint) 0:65 Convert int to uint ( temp 3-component vector of uint) 0:65 i3: direct index for structure ( uniform 3-component vector of int) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:65 Constant: 0:65 0 (const uint) 0:66 Sequence 0:66 move second child to first child ( temp 3-component vector of uint) 0:66 'r22' ( temp 3-component vector of uint) 0:66 Convert float to uint ( temp 3-component vector of uint) 0:66 f3: direct index for structure ( uniform 3-component vector of float) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:66 Constant: 0:66 2 (const uint) 0:67 Sequence 0:67 move second child to first child ( temp 3-component vector of uint) 0:67 'r23' ( temp 3-component vector of uint) 0:67 Convert double to uint ( temp 3-component vector of uint) 0:67 d3: direct index for structure ( uniform 3-component vector of double) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:67 Constant: 0:67 4 (const uint) 0:69 Sequence 0:69 move second child to first child ( temp 3-component vector of bool) 0:69 'r30' ( temp 3-component vector of bool) 0:69 Convert int to bool ( temp 3-component vector of bool) 0:69 i3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:69 Constant: 0:69 0 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp 3-component vector of bool) 0:70 'r31' ( temp 3-component vector of bool) 0:70 Convert uint to bool ( temp 3-component vector of bool) 0:70 u3: direct index for structure ( uniform 3-component vector of uint) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:70 Constant: 0:70 3 (const uint) 0:71 Sequence 0:71 move second child to first child ( temp 3-component vector of bool) 0:71 'r32' ( temp 3-component vector of bool) 0:71 Convert float to bool ( temp 3-component vector of bool) 0:71 f3: direct index for structure ( uniform 3-component vector of float) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:71 Constant: 0:71 2 (const uint) 0:72 Sequence 0:72 move second child to first child ( temp 3-component vector of bool) 0:72 'r33' ( temp 3-component vector of bool) 0:72 Convert double to bool ( temp 3-component vector of bool) 0:72 d3: direct index for structure ( uniform 3-component vector of double) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:72 Constant: 0:72 4 (const uint) 0:74 Sequence 0:74 move second child to first child ( temp 3-component vector of double) 0:74 'r40' ( temp 3-component vector of double) 0:74 Convert int to double ( temp 3-component vector of double) 0:74 i3: direct index for structure ( uniform 3-component vector of int) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:74 Constant: 0:74 0 (const uint) 0:75 Sequence 0:75 move second child to first child ( temp 3-component vector of double) 0:75 'r41' ( temp 3-component vector of double) 0:75 Convert uint to double ( temp 3-component vector of double) 0:75 u3: direct index for structure ( uniform 3-component vector of uint) 0:75 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:75 Constant: 0:75 3 (const uint) 0:76 Sequence 0:76 move second child to first child ( temp 3-component vector of double) 0:76 'r42' ( temp 3-component vector of double) 0:76 Convert float to double ( temp 3-component vector of double) 0:76 f3: direct index for structure ( uniform 3-component vector of float) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:76 Constant: 0:76 2 (const uint) 0:77 Sequence 0:77 move second child to first child ( temp 3-component vector of double) 0:77 'r43' ( temp 3-component vector of double) 0:77 Convert bool to double ( temp 3-component vector of double) 0:77 b3: direct index for structure ( uniform 3-component vector of bool) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:77 Constant: 0:77 1 (const uint) 0:80 multiply second child into first child ( temp 3-component vector of float) 0:80 'r00' ( temp 3-component vector of float) 0:80 Convert int to float ( temp 3-component vector of float) 0:80 i3: direct index for structure ( uniform 3-component vector of int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:80 Constant: 0:80 0 (const uint) 0:81 multiply second child into first child ( temp 3-component vector of float) 0:81 'r01' ( temp 3-component vector of float) 0:81 Convert bool to float ( temp 3-component vector of float) 0:81 b3: direct index for structure ( uniform 3-component vector of bool) 0:81 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:81 Constant: 0:81 1 (const uint) 0:82 multiply second child into first child ( temp 3-component vector of float) 0:82 'r02' ( temp 3-component vector of float) 0:82 Convert uint to float ( temp 3-component vector of float) 0:82 u3: direct index for structure ( uniform 3-component vector of uint) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:82 Constant: 0:82 3 (const uint) 0:83 multiply second child into first child ( temp 3-component vector of float) 0:83 'r03' ( temp 3-component vector of float) 0:83 Convert double to float ( temp 3-component vector of float) 0:83 d3: direct index for structure ( uniform 3-component vector of double) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:83 Constant: 0:83 4 (const uint) 0:85 multiply second child into first child ( temp 3-component vector of int) 0:85 'r10' ( temp 3-component vector of int) 0:85 Convert bool to int ( temp 3-component vector of int) 0:85 b3: direct index for structure ( uniform 3-component vector of bool) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:85 Constant: 0:85 1 (const uint) 0:86 multiply second child into first child ( temp 3-component vector of int) 0:86 'r11' ( temp 3-component vector of int) 0:86 Convert uint to int ( temp 3-component vector of int) 0:86 u3: direct index for structure ( uniform 3-component vector of uint) 0:86 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:86 Constant: 0:86 3 (const uint) 0:87 multiply second child into first child ( temp 3-component vector of int) 0:87 'r12' ( temp 3-component vector of int) 0:87 Convert float to int ( temp 3-component vector of int) 0:87 f3: direct index for structure ( uniform 3-component vector of float) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:87 Constant: 0:87 2 (const uint) 0:88 multiply second child into first child ( temp 3-component vector of int) 0:88 'r13' ( temp 3-component vector of int) 0:88 Convert double to int ( temp 3-component vector of int) 0:88 d3: direct index for structure ( uniform 3-component vector of double) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:88 Constant: 0:88 4 (const uint) 0:90 multiply second child into first child ( temp 3-component vector of uint) 0:90 'r20' ( temp 3-component vector of uint) 0:90 Convert bool to uint ( temp 3-component vector of uint) 0:90 b3: direct index for structure ( uniform 3-component vector of bool) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:90 Constant: 0:90 1 (const uint) 0:91 multiply second child into first child ( temp 3-component vector of uint) 0:91 'r21' ( temp 3-component vector of uint) 0:91 Convert int to uint ( temp 3-component vector of uint) 0:91 i3: direct index for structure ( uniform 3-component vector of int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:91 Constant: 0:91 0 (const uint) 0:92 multiply second child into first child ( temp 3-component vector of uint) 0:92 'r22' ( temp 3-component vector of uint) 0:92 Convert float to uint ( temp 3-component vector of uint) 0:92 f3: direct index for structure ( uniform 3-component vector of float) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:92 Constant: 0:92 2 (const uint) 0:93 multiply second child into first child ( temp 3-component vector of uint) 0:93 'r23' ( temp 3-component vector of uint) 0:93 Convert double to uint ( temp 3-component vector of uint) 0:93 d3: direct index for structure ( uniform 3-component vector of double) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:93 Constant: 0:93 4 (const uint) 0:97 multiply second child into first child ( temp 3-component vector of double) 0:97 'r40' ( temp 3-component vector of double) 0:97 Convert int to double ( temp 3-component vector of double) 0:97 i3: direct index for structure ( uniform 3-component vector of int) 0:97 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:97 Constant: 0:97 0 (const uint) 0:98 multiply second child into first child ( temp 3-component vector of double) 0:98 'r41' ( temp 3-component vector of double) 0:98 Convert uint to double ( temp 3-component vector of double) 0:98 u3: direct index for structure ( uniform 3-component vector of uint) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:98 Constant: 0:98 3 (const uint) 0:99 multiply second child into first child ( temp 3-component vector of double) 0:99 'r42' ( temp 3-component vector of double) 0:99 Convert float to double ( temp 3-component vector of double) 0:99 f3: direct index for structure ( uniform 3-component vector of float) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:99 Constant: 0:99 2 (const uint) 0:100 multiply second child into first child ( temp 3-component vector of double) 0:100 'r43' ( temp 3-component vector of double) 0:100 Convert bool to double ( temp 3-component vector of double) 0:100 b3: direct index for structure ( uniform 3-component vector of bool) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:100 Constant: 0:100 1 (const uint) 0:103 vector scale second child into first child ( temp 3-component vector of float) 0:103 'r00' ( temp 3-component vector of float) 0:103 Convert int to float ( temp float) 0:103 is: direct index for structure ( uniform int) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:103 Constant: 0:103 5 (const uint) 0:104 vector scale second child into first child ( temp 3-component vector of float) 0:104 'r01' ( temp 3-component vector of float) 0:104 Convert bool to float ( temp float) 0:104 bs: direct index for structure ( uniform bool) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:104 Constant: 0:104 6 (const uint) 0:105 vector scale second child into first child ( temp 3-component vector of float) 0:105 'r02' ( temp 3-component vector of float) 0:105 Convert uint to float ( temp float) 0:105 us: direct index for structure ( uniform uint) 0:105 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:105 Constant: 0:105 8 (const uint) 0:106 vector scale second child into first child ( temp 3-component vector of float) 0:106 'r03' ( temp 3-component vector of float) 0:106 Convert double to float ( temp float) 0:106 ds: direct index for structure ( uniform double) 0:106 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:106 Constant: 0:106 9 (const uint) 0:108 vector scale second child into first child ( temp 3-component vector of int) 0:108 'r10' ( temp 3-component vector of int) 0:108 Convert bool to int ( temp int) 0:108 bs: direct index for structure ( uniform bool) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:108 Constant: 0:108 6 (const uint) 0:109 vector scale second child into first child ( temp 3-component vector of int) 0:109 'r11' ( temp 3-component vector of int) 0:109 Convert uint to int ( temp int) 0:109 us: direct index for structure ( uniform uint) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:109 Constant: 0:109 8 (const uint) 0:110 vector scale second child into first child ( temp 3-component vector of int) 0:110 'r12' ( temp 3-component vector of int) 0:110 Convert float to int ( temp int) 0:110 fs: direct index for structure ( uniform float) 0:110 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:110 Constant: 0:110 7 (const uint) 0:111 vector scale second child into first child ( temp 3-component vector of int) 0:111 'r13' ( temp 3-component vector of int) 0:111 Convert double to int ( temp int) 0:111 ds: direct index for structure ( uniform double) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:111 Constant: 0:111 9 (const uint) 0:113 vector scale second child into first child ( temp 3-component vector of uint) 0:113 'r20' ( temp 3-component vector of uint) 0:113 Convert bool to uint ( temp uint) 0:113 bs: direct index for structure ( uniform bool) 0:113 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:113 Constant: 0:113 6 (const uint) 0:114 vector scale second child into first child ( temp 3-component vector of uint) 0:114 'r21' ( temp 3-component vector of uint) 0:114 Convert int to uint ( temp uint) 0:114 is: direct index for structure ( uniform int) 0:114 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:114 Constant: 0:114 5 (const uint) 0:115 vector scale second child into first child ( temp 3-component vector of uint) 0:115 'r22' ( temp 3-component vector of uint) 0:115 Convert float to uint ( temp uint) 0:115 fs: direct index for structure ( uniform float) 0:115 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:115 Constant: 0:115 7 (const uint) 0:116 vector scale second child into first child ( temp 3-component vector of uint) 0:116 'r23' ( temp 3-component vector of uint) 0:116 Convert double to uint ( temp uint) 0:116 ds: direct index for structure ( uniform double) 0:116 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:116 Constant: 0:116 9 (const uint) 0:120 vector scale second child into first child ( temp 3-component vector of double) 0:120 'r40' ( temp 3-component vector of double) 0:120 Convert int to double ( temp double) 0:120 is: direct index for structure ( uniform int) 0:120 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:120 Constant: 0:120 5 (const uint) 0:121 vector scale second child into first child ( temp 3-component vector of double) 0:121 'r41' ( temp 3-component vector of double) 0:121 Convert uint to double ( temp double) 0:121 us: direct index for structure ( uniform uint) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:121 Constant: 0:121 8 (const uint) 0:122 vector scale second child into first child ( temp 3-component vector of double) 0:122 'r42' ( temp 3-component vector of double) 0:122 Convert float to double ( temp double) 0:122 fs: direct index for structure ( uniform float) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:122 Constant: 0:122 7 (const uint) 0:123 vector scale second child into first child ( temp 3-component vector of double) 0:123 'r43' ( temp 3-component vector of double) 0:123 Convert bool to double ( temp double) 0:123 bs: direct index for structure ( uniform bool) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:123 Constant: 0:123 6 (const uint) 0:193 Sequence 0:193 move second child to first child ( temp int) 0:193 'c1' ( temp int) 0:193 Constant: 0:193 3 (const int) 0:194 Sequence 0:194 move second child to first child ( temp int) 0:194 'c2' ( temp int) 0:194 Constant: 0:194 3 (const int) 0:196 Sequence 0:196 move second child to first child ( temp 4-component vector of float) 0:196 'outval' ( temp 4-component vector of float) 0:196 Construct vec4 ( temp 4-component vector of float) 0:196 Constant: 0:196 3.600000 0:196 Constant: 0:196 3.600000 0:196 Convert int to float ( temp float) 0:196 'c1' ( temp int) 0:196 Convert int to float ( temp float) 0:196 'c2' ( temp int) 0:199 move second child to first child ( temp 4-component vector of float) 0:199 Color: direct index for structure ( temp 4-component vector of float) 0:199 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:199 Constant: 0:199 0 (const int) 0:199 'outval' ( temp 4-component vector of float) 0:200 Branch: Return with expression 0:200 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:52 Function Definition: main( ( temp void) 0:52 Function Parameters: 0:? Sequence 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:52 Color: direct index for structure ( temp 4-component vector of float) 0:52 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:52 Constant: 0:52 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:19 Function Definition: Fn_F3(vf3; ( temp void) 0:19 Function Parameters: 0:19 'x' ( in 3-component vector of float) 0:20 Function Definition: Fn_I3(vi3; ( temp void) 0:20 Function Parameters: 0:20 'x' ( in 3-component vector of int) 0:21 Function Definition: Fn_U3(vu3; ( temp void) 0:21 Function Parameters: 0:21 'x' ( in 3-component vector of uint) 0:22 Function Definition: Fn_B3(vb3; ( temp void) 0:22 Function Parameters: 0:22 'x' ( in 3-component vector of bool) 0:23 Function Definition: Fn_D3(vd3; ( temp void) 0:23 Function Parameters: 0:23 'x' ( in 3-component vector of double) 0:26 Function Definition: Fn_R_F3I(vf3; ( temp 3-component vector of float) 0:26 Function Parameters: 0:26 'p' ( out 3-component vector of float) 0:? Sequence 0:26 move second child to first child ( temp 3-component vector of float) 0:26 'p' ( out 3-component vector of float) 0:26 Convert int to float ( temp 3-component vector of float) 0:26 i3: direct index for structure ( uniform 3-component vector of int) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:26 Constant: 0:26 0 (const uint) 0:26 Branch: Return with expression 0:26 Convert int to float ( temp 3-component vector of float) 0:26 i3: direct index for structure ( uniform 3-component vector of int) 0:26 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:26 Constant: 0:26 0 (const uint) 0:27 Function Definition: Fn_R_F3U(vf3; ( temp 3-component vector of float) 0:27 Function Parameters: 0:27 'p' ( out 3-component vector of float) 0:? Sequence 0:27 move second child to first child ( temp 3-component vector of float) 0:27 'p' ( out 3-component vector of float) 0:27 Convert uint to float ( temp 3-component vector of float) 0:27 u3: direct index for structure ( uniform 3-component vector of uint) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:27 Constant: 0:27 3 (const uint) 0:27 Branch: Return with expression 0:27 Convert uint to float ( temp 3-component vector of float) 0:27 u3: direct index for structure ( uniform 3-component vector of uint) 0:27 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:27 Constant: 0:27 3 (const uint) 0:28 Function Definition: Fn_R_F3B(vf3; ( temp 3-component vector of float) 0:28 Function Parameters: 0:28 'p' ( out 3-component vector of float) 0:? Sequence 0:28 move second child to first child ( temp 3-component vector of float) 0:28 'p' ( out 3-component vector of float) 0:28 Convert bool to float ( temp 3-component vector of float) 0:28 b3: direct index for structure ( uniform 3-component vector of bool) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:28 Constant: 0:28 1 (const uint) 0:28 Branch: Return with expression 0:28 Convert bool to float ( temp 3-component vector of float) 0:28 b3: direct index for structure ( uniform 3-component vector of bool) 0:28 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:28 Constant: 0:28 1 (const uint) 0:29 Function Definition: Fn_R_F3D(vf3; ( temp 3-component vector of float) 0:29 Function Parameters: 0:29 'p' ( out 3-component vector of float) 0:? Sequence 0:29 move second child to first child ( temp 3-component vector of float) 0:29 'p' ( out 3-component vector of float) 0:29 Convert double to float ( temp 3-component vector of float) 0:29 d3: direct index for structure ( uniform 3-component vector of double) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:29 Constant: 0:29 4 (const uint) 0:29 Branch: Return with expression 0:29 Convert double to float ( temp 3-component vector of float) 0:29 d3: direct index for structure ( uniform 3-component vector of double) 0:29 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:29 Constant: 0:29 4 (const uint) 0:31 Function Definition: Fn_R_I3U(vi3; ( temp 3-component vector of int) 0:31 Function Parameters: 0:31 'p' ( out 3-component vector of int) 0:? Sequence 0:31 move second child to first child ( temp 3-component vector of int) 0:31 'p' ( out 3-component vector of int) 0:31 Convert uint to int ( temp 3-component vector of int) 0:31 u3: direct index for structure ( uniform 3-component vector of uint) 0:31 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:31 Constant: 0:31 3 (const uint) 0:31 Branch: Return with expression 0:31 Convert uint to int ( temp 3-component vector of int) 0:31 u3: direct index for structure ( uniform 3-component vector of uint) 0:31 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:31 Constant: 0:31 3 (const uint) 0:32 Function Definition: Fn_R_I3B(vi3; ( temp 3-component vector of int) 0:32 Function Parameters: 0:32 'p' ( out 3-component vector of int) 0:? Sequence 0:32 move second child to first child ( temp 3-component vector of int) 0:32 'p' ( out 3-component vector of int) 0:32 Convert bool to int ( temp 3-component vector of int) 0:32 b3: direct index for structure ( uniform 3-component vector of bool) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:32 Constant: 0:32 1 (const uint) 0:32 Branch: Return with expression 0:32 Convert bool to int ( temp 3-component vector of int) 0:32 b3: direct index for structure ( uniform 3-component vector of bool) 0:32 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:32 Constant: 0:32 1 (const uint) 0:33 Function Definition: Fn_R_I3F(vi3; ( temp 3-component vector of int) 0:33 Function Parameters: 0:33 'p' ( out 3-component vector of int) 0:? Sequence 0:33 move second child to first child ( temp 3-component vector of int) 0:33 'p' ( out 3-component vector of int) 0:33 Convert float to int ( temp 3-component vector of int) 0:33 f3: direct index for structure ( uniform 3-component vector of float) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:33 Constant: 0:33 2 (const uint) 0:33 Branch: Return with expression 0:33 Convert float to int ( temp 3-component vector of int) 0:33 f3: direct index for structure ( uniform 3-component vector of float) 0:33 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:33 Constant: 0:33 2 (const uint) 0:34 Function Definition: Fn_R_I3D(vi3; ( temp 3-component vector of int) 0:34 Function Parameters: 0:34 'p' ( out 3-component vector of int) 0:? Sequence 0:34 move second child to first child ( temp 3-component vector of int) 0:34 'p' ( out 3-component vector of int) 0:34 Convert double to int ( temp 3-component vector of int) 0:34 d3: direct index for structure ( uniform 3-component vector of double) 0:34 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:34 Constant: 0:34 4 (const uint) 0:34 Branch: Return with expression 0:34 Convert double to int ( temp 3-component vector of int) 0:34 d3: direct index for structure ( uniform 3-component vector of double) 0:34 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:34 Constant: 0:34 4 (const uint) 0:36 Function Definition: Fn_R_U3I(vu3; ( temp 3-component vector of uint) 0:36 Function Parameters: 0:36 'p' ( out 3-component vector of uint) 0:? Sequence 0:36 move second child to first child ( temp 3-component vector of uint) 0:36 'p' ( out 3-component vector of uint) 0:36 Convert int to uint ( temp 3-component vector of uint) 0:36 i3: direct index for structure ( uniform 3-component vector of int) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:36 Constant: 0:36 0 (const uint) 0:36 Branch: Return with expression 0:36 Convert int to uint ( temp 3-component vector of uint) 0:36 i3: direct index for structure ( uniform 3-component vector of int) 0:36 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:36 Constant: 0:36 0 (const uint) 0:37 Function Definition: Fn_R_U3F(vu3; ( temp 3-component vector of uint) 0:37 Function Parameters: 0:37 'p' ( out 3-component vector of uint) 0:? Sequence 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 'p' ( out 3-component vector of uint) 0:37 Convert float to uint ( temp 3-component vector of uint) 0:37 f3: direct index for structure ( uniform 3-component vector of float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:37 Constant: 0:37 2 (const uint) 0:37 Branch: Return with expression 0:37 Convert float to uint ( temp 3-component vector of uint) 0:37 f3: direct index for structure ( uniform 3-component vector of float) 0:37 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:37 Constant: 0:37 2 (const uint) 0:38 Function Definition: Fn_R_U3B(vu3; ( temp 3-component vector of uint) 0:38 Function Parameters: 0:38 'p' ( out 3-component vector of uint) 0:? Sequence 0:38 move second child to first child ( temp 3-component vector of uint) 0:38 'p' ( out 3-component vector of uint) 0:38 Convert bool to uint ( temp 3-component vector of uint) 0:38 b3: direct index for structure ( uniform 3-component vector of bool) 0:38 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:38 Constant: 0:38 1 (const uint) 0:38 Branch: Return with expression 0:38 Convert bool to uint ( temp 3-component vector of uint) 0:38 b3: direct index for structure ( uniform 3-component vector of bool) 0:38 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:38 Constant: 0:38 1 (const uint) 0:39 Function Definition: Fn_R_U3D(vu3; ( temp 3-component vector of uint) 0:39 Function Parameters: 0:39 'p' ( out 3-component vector of uint) 0:? Sequence 0:39 move second child to first child ( temp 3-component vector of uint) 0:39 'p' ( out 3-component vector of uint) 0:39 Convert double to uint ( temp 3-component vector of uint) 0:39 d3: direct index for structure ( uniform 3-component vector of double) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:39 Constant: 0:39 4 (const uint) 0:39 Branch: Return with expression 0:39 Convert double to uint ( temp 3-component vector of uint) 0:39 d3: direct index for structure ( uniform 3-component vector of double) 0:39 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:39 Constant: 0:39 4 (const uint) 0:41 Function Definition: Fn_R_B3I(vb3; ( temp 3-component vector of bool) 0:41 Function Parameters: 0:41 'p' ( out 3-component vector of bool) 0:? Sequence 0:41 move second child to first child ( temp 3-component vector of bool) 0:41 'p' ( out 3-component vector of bool) 0:41 Convert int to bool ( temp 3-component vector of bool) 0:41 i3: direct index for structure ( uniform 3-component vector of int) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:41 Constant: 0:41 0 (const uint) 0:41 Branch: Return with expression 0:41 Convert int to bool ( temp 3-component vector of bool) 0:41 i3: direct index for structure ( uniform 3-component vector of int) 0:41 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:41 Constant: 0:41 0 (const uint) 0:42 Function Definition: Fn_R_B3U(vb3; ( temp 3-component vector of bool) 0:42 Function Parameters: 0:42 'p' ( out 3-component vector of bool) 0:? Sequence 0:42 move second child to first child ( temp 3-component vector of bool) 0:42 'p' ( out 3-component vector of bool) 0:42 Convert uint to bool ( temp 3-component vector of bool) 0:42 u3: direct index for structure ( uniform 3-component vector of uint) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:42 Constant: 0:42 3 (const uint) 0:42 Branch: Return with expression 0:42 Convert uint to bool ( temp 3-component vector of bool) 0:42 u3: direct index for structure ( uniform 3-component vector of uint) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:42 Constant: 0:42 3 (const uint) 0:43 Function Definition: Fn_R_B3F(vb3; ( temp 3-component vector of bool) 0:43 Function Parameters: 0:43 'p' ( out 3-component vector of bool) 0:? Sequence 0:43 move second child to first child ( temp 3-component vector of bool) 0:43 'p' ( out 3-component vector of bool) 0:43 Convert float to bool ( temp 3-component vector of bool) 0:43 f3: direct index for structure ( uniform 3-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:43 Constant: 0:43 2 (const uint) 0:43 Branch: Return with expression 0:43 Convert float to bool ( temp 3-component vector of bool) 0:43 f3: direct index for structure ( uniform 3-component vector of float) 0:43 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:43 Constant: 0:43 2 (const uint) 0:44 Function Definition: Fn_R_B3D(vb3; ( temp 3-component vector of bool) 0:44 Function Parameters: 0:44 'p' ( out 3-component vector of bool) 0:? Sequence 0:44 move second child to first child ( temp 3-component vector of bool) 0:44 'p' ( out 3-component vector of bool) 0:44 Convert double to bool ( temp 3-component vector of bool) 0:44 d3: direct index for structure ( uniform 3-component vector of double) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:44 Constant: 0:44 4 (const uint) 0:44 Branch: Return with expression 0:44 Convert double to bool ( temp 3-component vector of bool) 0:44 d3: direct index for structure ( uniform 3-component vector of double) 0:44 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:44 Constant: 0:44 4 (const uint) 0:46 Function Definition: Fn_R_D3I(vd3; ( temp 3-component vector of double) 0:46 Function Parameters: 0:46 'p' ( out 3-component vector of double) 0:? Sequence 0:46 move second child to first child ( temp 3-component vector of double) 0:46 'p' ( out 3-component vector of double) 0:46 Convert int to double ( temp 3-component vector of double) 0:46 i3: direct index for structure ( uniform 3-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:46 Constant: 0:46 0 (const uint) 0:46 Branch: Return with expression 0:46 Convert int to double ( temp 3-component vector of double) 0:46 i3: direct index for structure ( uniform 3-component vector of int) 0:46 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:46 Constant: 0:46 0 (const uint) 0:47 Function Definition: Fn_R_D3U(vd3; ( temp 3-component vector of double) 0:47 Function Parameters: 0:47 'p' ( out 3-component vector of double) 0:? Sequence 0:47 move second child to first child ( temp 3-component vector of double) 0:47 'p' ( out 3-component vector of double) 0:47 Convert uint to double ( temp 3-component vector of double) 0:47 u3: direct index for structure ( uniform 3-component vector of uint) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:47 Constant: 0:47 3 (const uint) 0:47 Branch: Return with expression 0:47 Convert uint to double ( temp 3-component vector of double) 0:47 u3: direct index for structure ( uniform 3-component vector of uint) 0:47 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:47 Constant: 0:47 3 (const uint) 0:48 Function Definition: Fn_R_D3B(vd3; ( temp 3-component vector of double) 0:48 Function Parameters: 0:48 'p' ( out 3-component vector of double) 0:? Sequence 0:48 move second child to first child ( temp 3-component vector of double) 0:48 'p' ( out 3-component vector of double) 0:48 Convert bool to double ( temp 3-component vector of double) 0:48 b3: direct index for structure ( uniform 3-component vector of bool) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:48 Constant: 0:48 1 (const uint) 0:48 Branch: Return with expression 0:48 Convert bool to double ( temp 3-component vector of double) 0:48 b3: direct index for structure ( uniform 3-component vector of bool) 0:48 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:48 Constant: 0:48 1 (const uint) 0:49 Function Definition: Fn_R_D3F(vd3; ( temp 3-component vector of double) 0:49 Function Parameters: 0:49 'p' ( out 3-component vector of double) 0:? Sequence 0:49 move second child to first child ( temp 3-component vector of double) 0:49 'p' ( out 3-component vector of double) 0:49 Convert float to double ( temp 3-component vector of double) 0:49 f3: direct index for structure ( uniform 3-component vector of float) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:49 Constant: 0:49 2 (const uint) 0:49 Branch: Return with expression 0:49 Convert float to double ( temp 3-component vector of double) 0:49 f3: direct index for structure ( uniform 3-component vector of float) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:49 Constant: 0:49 2 (const uint) 0:52 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:52 Function Parameters: 0:? Sequence 0:54 Sequence 0:54 move second child to first child ( temp 3-component vector of float) 0:54 'r00' ( temp 3-component vector of float) 0:54 Convert int to float ( temp 3-component vector of float) 0:54 i3: direct index for structure ( uniform 3-component vector of int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:54 Constant: 0:54 0 (const uint) 0:55 Sequence 0:55 move second child to first child ( temp 3-component vector of float) 0:55 'r01' ( temp 3-component vector of float) 0:55 Convert bool to float ( temp 3-component vector of float) 0:55 b3: direct index for structure ( uniform 3-component vector of bool) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:55 Constant: 0:55 1 (const uint) 0:56 Sequence 0:56 move second child to first child ( temp 3-component vector of float) 0:56 'r02' ( temp 3-component vector of float) 0:56 Convert uint to float ( temp 3-component vector of float) 0:56 u3: direct index for structure ( uniform 3-component vector of uint) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:56 Constant: 0:56 3 (const uint) 0:57 Sequence 0:57 move second child to first child ( temp 3-component vector of float) 0:57 'r03' ( temp 3-component vector of float) 0:57 Convert double to float ( temp 3-component vector of float) 0:57 d3: direct index for structure ( uniform 3-component vector of double) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:57 Constant: 0:57 4 (const uint) 0:59 Sequence 0:59 move second child to first child ( temp 3-component vector of int) 0:59 'r10' ( temp 3-component vector of int) 0:59 Convert bool to int ( temp 3-component vector of int) 0:59 b3: direct index for structure ( uniform 3-component vector of bool) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:59 Constant: 0:59 1 (const uint) 0:60 Sequence 0:60 move second child to first child ( temp 3-component vector of int) 0:60 'r11' ( temp 3-component vector of int) 0:60 Convert uint to int ( temp 3-component vector of int) 0:60 u3: direct index for structure ( uniform 3-component vector of uint) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:60 Constant: 0:60 3 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp 3-component vector of int) 0:61 'r12' ( temp 3-component vector of int) 0:61 Convert float to int ( temp 3-component vector of int) 0:61 f3: direct index for structure ( uniform 3-component vector of float) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:61 Constant: 0:61 2 (const uint) 0:62 Sequence 0:62 move second child to first child ( temp 3-component vector of int) 0:62 'r13' ( temp 3-component vector of int) 0:62 Convert double to int ( temp 3-component vector of int) 0:62 d3: direct index for structure ( uniform 3-component vector of double) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:62 Constant: 0:62 4 (const uint) 0:64 Sequence 0:64 move second child to first child ( temp 3-component vector of uint) 0:64 'r20' ( temp 3-component vector of uint) 0:64 Convert bool to uint ( temp 3-component vector of uint) 0:64 b3: direct index for structure ( uniform 3-component vector of bool) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:64 Constant: 0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child ( temp 3-component vector of uint) 0:65 'r21' ( temp 3-component vector of uint) 0:65 Convert int to uint ( temp 3-component vector of uint) 0:65 i3: direct index for structure ( uniform 3-component vector of int) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:65 Constant: 0:65 0 (const uint) 0:66 Sequence 0:66 move second child to first child ( temp 3-component vector of uint) 0:66 'r22' ( temp 3-component vector of uint) 0:66 Convert float to uint ( temp 3-component vector of uint) 0:66 f3: direct index for structure ( uniform 3-component vector of float) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:66 Constant: 0:66 2 (const uint) 0:67 Sequence 0:67 move second child to first child ( temp 3-component vector of uint) 0:67 'r23' ( temp 3-component vector of uint) 0:67 Convert double to uint ( temp 3-component vector of uint) 0:67 d3: direct index for structure ( uniform 3-component vector of double) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:67 Constant: 0:67 4 (const uint) 0:69 Sequence 0:69 move second child to first child ( temp 3-component vector of bool) 0:69 'r30' ( temp 3-component vector of bool) 0:69 Convert int to bool ( temp 3-component vector of bool) 0:69 i3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:69 Constant: 0:69 0 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp 3-component vector of bool) 0:70 'r31' ( temp 3-component vector of bool) 0:70 Convert uint to bool ( temp 3-component vector of bool) 0:70 u3: direct index for structure ( uniform 3-component vector of uint) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:70 Constant: 0:70 3 (const uint) 0:71 Sequence 0:71 move second child to first child ( temp 3-component vector of bool) 0:71 'r32' ( temp 3-component vector of bool) 0:71 Convert float to bool ( temp 3-component vector of bool) 0:71 f3: direct index for structure ( uniform 3-component vector of float) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:71 Constant: 0:71 2 (const uint) 0:72 Sequence 0:72 move second child to first child ( temp 3-component vector of bool) 0:72 'r33' ( temp 3-component vector of bool) 0:72 Convert double to bool ( temp 3-component vector of bool) 0:72 d3: direct index for structure ( uniform 3-component vector of double) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:72 Constant: 0:72 4 (const uint) 0:74 Sequence 0:74 move second child to first child ( temp 3-component vector of double) 0:74 'r40' ( temp 3-component vector of double) 0:74 Convert int to double ( temp 3-component vector of double) 0:74 i3: direct index for structure ( uniform 3-component vector of int) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:74 Constant: 0:74 0 (const uint) 0:75 Sequence 0:75 move second child to first child ( temp 3-component vector of double) 0:75 'r41' ( temp 3-component vector of double) 0:75 Convert uint to double ( temp 3-component vector of double) 0:75 u3: direct index for structure ( uniform 3-component vector of uint) 0:75 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:75 Constant: 0:75 3 (const uint) 0:76 Sequence 0:76 move second child to first child ( temp 3-component vector of double) 0:76 'r42' ( temp 3-component vector of double) 0:76 Convert float to double ( temp 3-component vector of double) 0:76 f3: direct index for structure ( uniform 3-component vector of float) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:76 Constant: 0:76 2 (const uint) 0:77 Sequence 0:77 move second child to first child ( temp 3-component vector of double) 0:77 'r43' ( temp 3-component vector of double) 0:77 Convert bool to double ( temp 3-component vector of double) 0:77 b3: direct index for structure ( uniform 3-component vector of bool) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:77 Constant: 0:77 1 (const uint) 0:80 multiply second child into first child ( temp 3-component vector of float) 0:80 'r00' ( temp 3-component vector of float) 0:80 Convert int to float ( temp 3-component vector of float) 0:80 i3: direct index for structure ( uniform 3-component vector of int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:80 Constant: 0:80 0 (const uint) 0:81 multiply second child into first child ( temp 3-component vector of float) 0:81 'r01' ( temp 3-component vector of float) 0:81 Convert bool to float ( temp 3-component vector of float) 0:81 b3: direct index for structure ( uniform 3-component vector of bool) 0:81 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:81 Constant: 0:81 1 (const uint) 0:82 multiply second child into first child ( temp 3-component vector of float) 0:82 'r02' ( temp 3-component vector of float) 0:82 Convert uint to float ( temp 3-component vector of float) 0:82 u3: direct index for structure ( uniform 3-component vector of uint) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:82 Constant: 0:82 3 (const uint) 0:83 multiply second child into first child ( temp 3-component vector of float) 0:83 'r03' ( temp 3-component vector of float) 0:83 Convert double to float ( temp 3-component vector of float) 0:83 d3: direct index for structure ( uniform 3-component vector of double) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:83 Constant: 0:83 4 (const uint) 0:85 multiply second child into first child ( temp 3-component vector of int) 0:85 'r10' ( temp 3-component vector of int) 0:85 Convert bool to int ( temp 3-component vector of int) 0:85 b3: direct index for structure ( uniform 3-component vector of bool) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:85 Constant: 0:85 1 (const uint) 0:86 multiply second child into first child ( temp 3-component vector of int) 0:86 'r11' ( temp 3-component vector of int) 0:86 Convert uint to int ( temp 3-component vector of int) 0:86 u3: direct index for structure ( uniform 3-component vector of uint) 0:86 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:86 Constant: 0:86 3 (const uint) 0:87 multiply second child into first child ( temp 3-component vector of int) 0:87 'r12' ( temp 3-component vector of int) 0:87 Convert float to int ( temp 3-component vector of int) 0:87 f3: direct index for structure ( uniform 3-component vector of float) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:87 Constant: 0:87 2 (const uint) 0:88 multiply second child into first child ( temp 3-component vector of int) 0:88 'r13' ( temp 3-component vector of int) 0:88 Convert double to int ( temp 3-component vector of int) 0:88 d3: direct index for structure ( uniform 3-component vector of double) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:88 Constant: 0:88 4 (const uint) 0:90 multiply second child into first child ( temp 3-component vector of uint) 0:90 'r20' ( temp 3-component vector of uint) 0:90 Convert bool to uint ( temp 3-component vector of uint) 0:90 b3: direct index for structure ( uniform 3-component vector of bool) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:90 Constant: 0:90 1 (const uint) 0:91 multiply second child into first child ( temp 3-component vector of uint) 0:91 'r21' ( temp 3-component vector of uint) 0:91 Convert int to uint ( temp 3-component vector of uint) 0:91 i3: direct index for structure ( uniform 3-component vector of int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:91 Constant: 0:91 0 (const uint) 0:92 multiply second child into first child ( temp 3-component vector of uint) 0:92 'r22' ( temp 3-component vector of uint) 0:92 Convert float to uint ( temp 3-component vector of uint) 0:92 f3: direct index for structure ( uniform 3-component vector of float) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:92 Constant: 0:92 2 (const uint) 0:93 multiply second child into first child ( temp 3-component vector of uint) 0:93 'r23' ( temp 3-component vector of uint) 0:93 Convert double to uint ( temp 3-component vector of uint) 0:93 d3: direct index for structure ( uniform 3-component vector of double) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:93 Constant: 0:93 4 (const uint) 0:97 multiply second child into first child ( temp 3-component vector of double) 0:97 'r40' ( temp 3-component vector of double) 0:97 Convert int to double ( temp 3-component vector of double) 0:97 i3: direct index for structure ( uniform 3-component vector of int) 0:97 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:97 Constant: 0:97 0 (const uint) 0:98 multiply second child into first child ( temp 3-component vector of double) 0:98 'r41' ( temp 3-component vector of double) 0:98 Convert uint to double ( temp 3-component vector of double) 0:98 u3: direct index for structure ( uniform 3-component vector of uint) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:98 Constant: 0:98 3 (const uint) 0:99 multiply second child into first child ( temp 3-component vector of double) 0:99 'r42' ( temp 3-component vector of double) 0:99 Convert float to double ( temp 3-component vector of double) 0:99 f3: direct index for structure ( uniform 3-component vector of float) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:99 Constant: 0:99 2 (const uint) 0:100 multiply second child into first child ( temp 3-component vector of double) 0:100 'r43' ( temp 3-component vector of double) 0:100 Convert bool to double ( temp 3-component vector of double) 0:100 b3: direct index for structure ( uniform 3-component vector of bool) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:100 Constant: 0:100 1 (const uint) 0:103 vector scale second child into first child ( temp 3-component vector of float) 0:103 'r00' ( temp 3-component vector of float) 0:103 Convert int to float ( temp float) 0:103 is: direct index for structure ( uniform int) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:103 Constant: 0:103 5 (const uint) 0:104 vector scale second child into first child ( temp 3-component vector of float) 0:104 'r01' ( temp 3-component vector of float) 0:104 Convert bool to float ( temp float) 0:104 bs: direct index for structure ( uniform bool) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:104 Constant: 0:104 6 (const uint) 0:105 vector scale second child into first child ( temp 3-component vector of float) 0:105 'r02' ( temp 3-component vector of float) 0:105 Convert uint to float ( temp float) 0:105 us: direct index for structure ( uniform uint) 0:105 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:105 Constant: 0:105 8 (const uint) 0:106 vector scale second child into first child ( temp 3-component vector of float) 0:106 'r03' ( temp 3-component vector of float) 0:106 Convert double to float ( temp float) 0:106 ds: direct index for structure ( uniform double) 0:106 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:106 Constant: 0:106 9 (const uint) 0:108 vector scale second child into first child ( temp 3-component vector of int) 0:108 'r10' ( temp 3-component vector of int) 0:108 Convert bool to int ( temp int) 0:108 bs: direct index for structure ( uniform bool) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:108 Constant: 0:108 6 (const uint) 0:109 vector scale second child into first child ( temp 3-component vector of int) 0:109 'r11' ( temp 3-component vector of int) 0:109 Convert uint to int ( temp int) 0:109 us: direct index for structure ( uniform uint) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:109 Constant: 0:109 8 (const uint) 0:110 vector scale second child into first child ( temp 3-component vector of int) 0:110 'r12' ( temp 3-component vector of int) 0:110 Convert float to int ( temp int) 0:110 fs: direct index for structure ( uniform float) 0:110 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:110 Constant: 0:110 7 (const uint) 0:111 vector scale second child into first child ( temp 3-component vector of int) 0:111 'r13' ( temp 3-component vector of int) 0:111 Convert double to int ( temp int) 0:111 ds: direct index for structure ( uniform double) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:111 Constant: 0:111 9 (const uint) 0:113 vector scale second child into first child ( temp 3-component vector of uint) 0:113 'r20' ( temp 3-component vector of uint) 0:113 Convert bool to uint ( temp uint) 0:113 bs: direct index for structure ( uniform bool) 0:113 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:113 Constant: 0:113 6 (const uint) 0:114 vector scale second child into first child ( temp 3-component vector of uint) 0:114 'r21' ( temp 3-component vector of uint) 0:114 Convert int to uint ( temp uint) 0:114 is: direct index for structure ( uniform int) 0:114 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:114 Constant: 0:114 5 (const uint) 0:115 vector scale second child into first child ( temp 3-component vector of uint) 0:115 'r22' ( temp 3-component vector of uint) 0:115 Convert float to uint ( temp uint) 0:115 fs: direct index for structure ( uniform float) 0:115 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:115 Constant: 0:115 7 (const uint) 0:116 vector scale second child into first child ( temp 3-component vector of uint) 0:116 'r23' ( temp 3-component vector of uint) 0:116 Convert double to uint ( temp uint) 0:116 ds: direct index for structure ( uniform double) 0:116 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:116 Constant: 0:116 9 (const uint) 0:120 vector scale second child into first child ( temp 3-component vector of double) 0:120 'r40' ( temp 3-component vector of double) 0:120 Convert int to double ( temp double) 0:120 is: direct index for structure ( uniform int) 0:120 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:120 Constant: 0:120 5 (const uint) 0:121 vector scale second child into first child ( temp 3-component vector of double) 0:121 'r41' ( temp 3-component vector of double) 0:121 Convert uint to double ( temp double) 0:121 us: direct index for structure ( uniform uint) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:121 Constant: 0:121 8 (const uint) 0:122 vector scale second child into first child ( temp 3-component vector of double) 0:122 'r42' ( temp 3-component vector of double) 0:122 Convert float to double ( temp double) 0:122 fs: direct index for structure ( uniform float) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:122 Constant: 0:122 7 (const uint) 0:123 vector scale second child into first child ( temp 3-component vector of double) 0:123 'r43' ( temp 3-component vector of double) 0:123 Convert bool to double ( temp double) 0:123 bs: direct index for structure ( uniform bool) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:123 Constant: 0:123 6 (const uint) 0:193 Sequence 0:193 move second child to first child ( temp int) 0:193 'c1' ( temp int) 0:193 Constant: 0:193 3 (const int) 0:194 Sequence 0:194 move second child to first child ( temp int) 0:194 'c2' ( temp int) 0:194 Constant: 0:194 3 (const int) 0:196 Sequence 0:196 move second child to first child ( temp 4-component vector of float) 0:196 'outval' ( temp 4-component vector of float) 0:196 Construct vec4 ( temp 4-component vector of float) 0:196 Constant: 0:196 3.600000 0:196 Constant: 0:196 3.600000 0:196 Convert int to float ( temp float) 0:196 'c1' ( temp int) 0:196 Convert int to float ( temp float) 0:196 'c2' ( temp int) 0:199 move second child to first child ( temp 4-component vector of float) 0:199 Color: direct index for structure ( temp 4-component vector of float) 0:199 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:199 Constant: 0:199 0 (const int) 0:199 'outval' ( temp 4-component vector of float) 0:200 Branch: Return with expression 0:200 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:52 Function Definition: main( ( temp void) 0:52 Function Parameters: 0:? Sequence 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:52 Color: direct index for structure ( temp 4-component vector of float) 0:52 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:52 Constant: 0:52 0 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 596 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 593 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "Fn_F3(vf3;" Name 10 "x" Name 18 "Fn_I3(vi3;" Name 17 "x" Name 25 "Fn_U3(vu3;" Name 24 "x" Name 32 "Fn_B3(vb3;" Name 31 "x" Name 39 "Fn_D3(vd3;" Name 38 "x" Name 43 "Fn_R_F3I(vf3;" Name 42 "p" Name 46 "Fn_R_F3U(vf3;" Name 45 "p" Name 49 "Fn_R_F3B(vf3;" Name 48 "p" Name 52 "Fn_R_F3D(vf3;" Name 51 "p" Name 56 "Fn_R_I3U(vi3;" Name 55 "p" Name 59 "Fn_R_I3B(vi3;" Name 58 "p" Name 62 "Fn_R_I3F(vi3;" Name 61 "p" Name 65 "Fn_R_I3D(vi3;" Name 64 "p" Name 69 "Fn_R_U3I(vu3;" Name 68 "p" Name 72 "Fn_R_U3F(vu3;" Name 71 "p" Name 75 "Fn_R_U3B(vu3;" Name 74 "p" Name 78 "Fn_R_U3D(vu3;" Name 77 "p" Name 82 "Fn_R_B3I(vb3;" Name 81 "p" Name 85 "Fn_R_B3U(vb3;" Name 84 "p" Name 88 "Fn_R_B3F(vb3;" Name 87 "p" Name 91 "Fn_R_B3D(vb3;" Name 90 "p" Name 95 "Fn_R_D3I(vd3;" Name 94 "p" Name 98 "Fn_R_D3U(vd3;" Name 97 "p" Name 101 "Fn_R_D3B(vd3;" Name 100 "p" Name 104 "Fn_R_D3F(vd3;" Name 103 "p" Name 107 "PS_OUTPUT" MemberName 107(PS_OUTPUT) 0 "Color" Name 109 "@main(" Name 111 "$Global" MemberName 111($Global) 0 "i3" MemberName 111($Global) 1 "b3" MemberName 111($Global) 2 "f3" MemberName 111($Global) 3 "u3" MemberName 111($Global) 4 "d3" MemberName 111($Global) 5 "is" MemberName 111($Global) 6 "bs" MemberName 111($Global) 7 "fs" MemberName 111($Global) 8 "us" MemberName 111($Global) 9 "ds" Name 113 "" Name 305 "r00" Name 309 "r01" Name 314 "r02" Name 318 "r03" Name 322 "r10" Name 327 "r11" Name 331 "r12" Name 335 "r13" Name 339 "r20" Name 344 "r21" Name 348 "r22" Name 352 "r23" Name 356 "r30" Name 360 "r31" Name 364 "r32" Name 368 "r33" Name 372 "r40" Name 376 "r41" Name 380 "r42" Name 384 "r43" Name 575 "c1" Name 576 "c2" Name 578 "outval" Name 586 "psout" Name 593 "@entryPointOutput.Color" Decorate 111($Global) Block MemberDecorate 111($Global) 0 Offset 0 MemberDecorate 111($Global) 1 Offset 16 MemberDecorate 111($Global) 2 Offset 32 MemberDecorate 111($Global) 3 Offset 48 MemberDecorate 111($Global) 4 Offset 64 MemberDecorate 111($Global) 5 Offset 88 MemberDecorate 111($Global) 6 Offset 92 MemberDecorate 111($Global) 7 Offset 96 MemberDecorate 111($Global) 8 Offset 100 MemberDecorate 111($Global) 9 Offset 104 Decorate 113 Binding 0 Decorate 113 DescriptorSet 0 Decorate 593(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) 9: TypeFunction 2 8(ptr) 13: TypeInt 32 1 14: TypeVector 13(int) 3 15: TypePointer Function 14(ivec3) 16: TypeFunction 2 15(ptr) 20: TypeInt 32 0 21: TypeVector 20(int) 3 22: TypePointer Function 21(ivec3) 23: TypeFunction 2 22(ptr) 27: TypeBool 28: TypeVector 27(bool) 3 29: TypePointer Function 28(bvec3) 30: TypeFunction 2 29(ptr) 34: TypeFloat 64 35: TypeVector 34(float64_t) 3 36: TypePointer Function 35(f64vec3) 37: TypeFunction 2 36(ptr) 41: TypeFunction 7(fvec3) 8(ptr) 54: TypeFunction 14(ivec3) 15(ptr) 67: TypeFunction 21(ivec3) 22(ptr) 80: TypeFunction 28(bvec3) 29(ptr) 93: TypeFunction 35(f64vec3) 36(ptr) 106: TypeVector 6(float) 4 107(PS_OUTPUT): TypeStruct 106(fvec4) 108: TypeFunction 107(PS_OUTPUT) 111($Global): TypeStruct 14(ivec3) 21(ivec3) 7(fvec3) 21(ivec3) 35(f64vec3) 13(int) 20(int) 6(float) 20(int) 34(float64_t) 112: TypePointer Uniform 111($Global) 113: 112(ptr) Variable Uniform 114: 13(int) Constant 0 115: TypePointer Uniform 14(ivec3) 124: 13(int) Constant 3 125: TypePointer Uniform 21(ivec3) 134: 13(int) Constant 1 137: 20(int) Constant 0 138: 21(ivec3) ConstantComposite 137 137 137 140: 6(float) Constant 0 141: 6(float) Constant 1065353216 142: 7(fvec3) ConstantComposite 140 140 140 143: 7(fvec3) ConstantComposite 141 141 141 151: 13(int) Constant 4 152: TypePointer Uniform 35(f64vec3) 172: 14(ivec3) ConstantComposite 114 114 114 173: 14(ivec3) ConstantComposite 134 134 134 181: 13(int) Constant 2 182: TypePointer Uniform 7(fvec3) 218: 20(int) Constant 1 219: 21(ivec3) ConstantComposite 218 218 218 261:34(float64_t) Constant 0 0 262: 35(f64vec3) ConstantComposite 261 261 261 288:34(float64_t) Constant 0 1072693248 289: 35(f64vec3) ConstantComposite 288 288 288 473: 13(int) Constant 5 474: TypePointer Uniform 13(int) 480: 13(int) Constant 6 481: TypePointer Uniform 20(int) 488: 13(int) Constant 8 494: 13(int) Constant 9 495: TypePointer Uniform 34(float64_t) 514: 13(int) Constant 7 515: TypePointer Uniform 6(float) 574: TypePointer Function 13(int) 577: TypePointer Function 106(fvec4) 579: 6(float) Constant 1080452710 585: TypePointer Function 107(PS_OUTPUT) 592: TypePointer Output 106(fvec4) 593(@entryPointOutput.Color): 592(ptr) Variable Output 4(main): 2 Function None 3 5: Label 594:107(PS_OUTPUT) FunctionCall 109(@main() 595: 106(fvec4) CompositeExtract 594 0 Store 593(@entryPointOutput.Color) 595 Return FunctionEnd 11(Fn_F3(vf3;): 2 Function None 9 10(x): 8(ptr) FunctionParameter 12: Label Return FunctionEnd 18(Fn_I3(vi3;): 2 Function None 16 17(x): 15(ptr) FunctionParameter 19: Label Return FunctionEnd 25(Fn_U3(vu3;): 2 Function None 23 24(x): 22(ptr) FunctionParameter 26: Label Return FunctionEnd 32(Fn_B3(vb3;): 2 Function None 30 31(x): 29(ptr) FunctionParameter 33: Label Return FunctionEnd 39(Fn_D3(vd3;): 2 Function None 37 38(x): 36(ptr) FunctionParameter 40: Label Return FunctionEnd 43(Fn_R_F3I(vf3;): 7(fvec3) Function None 41 42(p): 8(ptr) FunctionParameter 44: Label 116: 115(ptr) AccessChain 113 114 117: 14(ivec3) Load 116 118: 7(fvec3) ConvertSToF 117 Store 42(p) 118 119: 115(ptr) AccessChain 113 114 120: 14(ivec3) Load 119 121: 7(fvec3) ConvertSToF 120 ReturnValue 121 FunctionEnd 46(Fn_R_F3U(vf3;): 7(fvec3) Function None 41 45(p): 8(ptr) FunctionParameter 47: Label 126: 125(ptr) AccessChain 113 124 127: 21(ivec3) Load 126 128: 7(fvec3) ConvertUToF 127 Store 45(p) 128 129: 125(ptr) AccessChain 113 124 130: 21(ivec3) Load 129 131: 7(fvec3) ConvertUToF 130 ReturnValue 131 FunctionEnd 49(Fn_R_F3B(vf3;): 7(fvec3) Function None 41 48(p): 8(ptr) FunctionParameter 50: Label 135: 125(ptr) AccessChain 113 134 136: 21(ivec3) Load 135 139: 28(bvec3) INotEqual 136 138 144: 7(fvec3) Select 139 143 142 Store 48(p) 144 145: 125(ptr) AccessChain 113 134 146: 21(ivec3) Load 145 147: 28(bvec3) INotEqual 146 138 148: 7(fvec3) Select 147 143 142 ReturnValue 148 FunctionEnd 52(Fn_R_F3D(vf3;): 7(fvec3) Function None 41 51(p): 8(ptr) FunctionParameter 53: Label 153: 152(ptr) AccessChain 113 151 154: 35(f64vec3) Load 153 155: 7(fvec3) FConvert 154 Store 51(p) 155 156: 152(ptr) AccessChain 113 151 157: 35(f64vec3) Load 156 158: 7(fvec3) FConvert 157 ReturnValue 158 FunctionEnd 56(Fn_R_I3U(vi3;): 14(ivec3) Function None 54 55(p): 15(ptr) FunctionParameter 57: Label 161: 125(ptr) AccessChain 113 124 162: 21(ivec3) Load 161 163: 14(ivec3) Bitcast 162 Store 55(p) 163 164: 125(ptr) AccessChain 113 124 165: 21(ivec3) Load 164 166: 14(ivec3) Bitcast 165 ReturnValue 166 FunctionEnd 59(Fn_R_I3B(vi3;): 14(ivec3) Function None 54 58(p): 15(ptr) FunctionParameter 60: Label 169: 125(ptr) AccessChain 113 134 170: 21(ivec3) Load 169 171: 28(bvec3) INotEqual 170 138 174: 14(ivec3) Select 171 173 172 Store 58(p) 174 175: 125(ptr) AccessChain 113 134 176: 21(ivec3) Load 175 177: 28(bvec3) INotEqual 176 138 178: 14(ivec3) Select 177 173 172 ReturnValue 178 FunctionEnd 62(Fn_R_I3F(vi3;): 14(ivec3) Function None 54 61(p): 15(ptr) FunctionParameter 63: Label 183: 182(ptr) AccessChain 113 181 184: 7(fvec3) Load 183 185: 14(ivec3) ConvertFToS 184 Store 61(p) 185 186: 182(ptr) AccessChain 113 181 187: 7(fvec3) Load 186 188: 14(ivec3) ConvertFToS 187 ReturnValue 188 FunctionEnd 65(Fn_R_I3D(vi3;): 14(ivec3) Function None 54 64(p): 15(ptr) FunctionParameter 66: Label 191: 152(ptr) AccessChain 113 151 192: 35(f64vec3) Load 191 193: 14(ivec3) ConvertFToS 192 Store 64(p) 193 194: 152(ptr) AccessChain 113 151 195: 35(f64vec3) Load 194 196: 14(ivec3) ConvertFToS 195 ReturnValue 196 FunctionEnd 69(Fn_R_U3I(vu3;): 21(ivec3) Function None 67 68(p): 22(ptr) FunctionParameter 70: Label 199: 115(ptr) AccessChain 113 114 200: 14(ivec3) Load 199 201: 21(ivec3) Bitcast 200 Store 68(p) 201 202: 115(ptr) AccessChain 113 114 203: 14(ivec3) Load 202 204: 21(ivec3) Bitcast 203 ReturnValue 204 FunctionEnd 72(Fn_R_U3F(vu3;): 21(ivec3) Function None 67 71(p): 22(ptr) FunctionParameter 73: Label 207: 182(ptr) AccessChain 113 181 208: 7(fvec3) Load 207 209: 21(ivec3) ConvertFToU 208 Store 71(p) 209 210: 182(ptr) AccessChain 113 181 211: 7(fvec3) Load 210 212: 21(ivec3) ConvertFToU 211 ReturnValue 212 FunctionEnd 75(Fn_R_U3B(vu3;): 21(ivec3) Function None 67 74(p): 22(ptr) FunctionParameter 76: Label 215: 125(ptr) AccessChain 113 134 216: 21(ivec3) Load 215 217: 28(bvec3) INotEqual 216 138 220: 21(ivec3) Select 217 219 138 Store 74(p) 220 221: 125(ptr) AccessChain 113 134 222: 21(ivec3) Load 221 223: 28(bvec3) INotEqual 222 138 224: 21(ivec3) Select 223 219 138 ReturnValue 224 FunctionEnd 78(Fn_R_U3D(vu3;): 21(ivec3) Function None 67 77(p): 22(ptr) FunctionParameter 79: Label 227: 152(ptr) AccessChain 113 151 228: 35(f64vec3) Load 227 229: 21(ivec3) ConvertFToU 228 Store 77(p) 229 230: 152(ptr) AccessChain 113 151 231: 35(f64vec3) Load 230 232: 21(ivec3) ConvertFToU 231 ReturnValue 232 FunctionEnd 82(Fn_R_B3I(vb3;): 28(bvec3) Function None 80 81(p): 29(ptr) FunctionParameter 83: Label 235: 115(ptr) AccessChain 113 114 236: 14(ivec3) Load 235 237: 28(bvec3) INotEqual 236 138 Store 81(p) 237 238: 115(ptr) AccessChain 113 114 239: 14(ivec3) Load 238 240: 28(bvec3) INotEqual 239 138 ReturnValue 240 FunctionEnd 85(Fn_R_B3U(vb3;): 28(bvec3) Function None 80 84(p): 29(ptr) FunctionParameter 86: Label 243: 125(ptr) AccessChain 113 124 244: 21(ivec3) Load 243 245: 28(bvec3) INotEqual 244 138 Store 84(p) 245 246: 125(ptr) AccessChain 113 124 247: 21(ivec3) Load 246 248: 28(bvec3) INotEqual 247 138 ReturnValue 248 FunctionEnd 88(Fn_R_B3F(vb3;): 28(bvec3) Function None 80 87(p): 29(ptr) FunctionParameter 89: Label 251: 182(ptr) AccessChain 113 181 252: 7(fvec3) Load 251 253: 28(bvec3) FUnordNotEqual 252 142 Store 87(p) 253 254: 182(ptr) AccessChain 113 181 255: 7(fvec3) Load 254 256: 28(bvec3) FUnordNotEqual 255 142 ReturnValue 256 FunctionEnd 91(Fn_R_B3D(vb3;): 28(bvec3) Function None 80 90(p): 29(ptr) FunctionParameter 92: Label 259: 152(ptr) AccessChain 113 151 260: 35(f64vec3) Load 259 263: 28(bvec3) FUnordNotEqual 260 262 Store 90(p) 263 264: 152(ptr) AccessChain 113 151 265: 35(f64vec3) Load 264 266: 28(bvec3) FUnordNotEqual 265 262 ReturnValue 266 FunctionEnd 95(Fn_R_D3I(vd3;): 35(f64vec3) Function None 93 94(p): 36(ptr) FunctionParameter 96: Label 269: 115(ptr) AccessChain 113 114 270: 14(ivec3) Load 269 271: 35(f64vec3) ConvertSToF 270 Store 94(p) 271 272: 115(ptr) AccessChain 113 114 273: 14(ivec3) Load 272 274: 35(f64vec3) ConvertSToF 273 ReturnValue 274 FunctionEnd 98(Fn_R_D3U(vd3;): 35(f64vec3) Function None 93 97(p): 36(ptr) FunctionParameter 99: Label 277: 125(ptr) AccessChain 113 124 278: 21(ivec3) Load 277 279: 35(f64vec3) ConvertUToF 278 Store 97(p) 279 280: 125(ptr) AccessChain 113 124 281: 21(ivec3) Load 280 282: 35(f64vec3) ConvertUToF 281 ReturnValue 282 FunctionEnd 101(Fn_R_D3B(vd3;): 35(f64vec3) Function None 93 100(p): 36(ptr) FunctionParameter 102: Label 285: 125(ptr) AccessChain 113 134 286: 21(ivec3) Load 285 287: 28(bvec3) INotEqual 286 138 290: 35(f64vec3) Select 287 289 262 Store 100(p) 290 291: 125(ptr) AccessChain 113 134 292: 21(ivec3) Load 291 293: 28(bvec3) INotEqual 292 138 294: 35(f64vec3) Select 293 289 262 ReturnValue 294 FunctionEnd 104(Fn_R_D3F(vd3;): 35(f64vec3) Function None 93 103(p): 36(ptr) FunctionParameter 105: Label 297: 182(ptr) AccessChain 113 181 298: 7(fvec3) Load 297 299: 35(f64vec3) FConvert 298 Store 103(p) 299 300: 182(ptr) AccessChain 113 181 301: 7(fvec3) Load 300 302: 35(f64vec3) FConvert 301 ReturnValue 302 FunctionEnd 109(@main():107(PS_OUTPUT) Function None 108 110: Label 305(r00): 8(ptr) Variable Function 309(r01): 8(ptr) Variable Function 314(r02): 8(ptr) Variable Function 318(r03): 8(ptr) Variable Function 322(r10): 15(ptr) Variable Function 327(r11): 15(ptr) Variable Function 331(r12): 15(ptr) Variable Function 335(r13): 15(ptr) Variable Function 339(r20): 22(ptr) Variable Function 344(r21): 22(ptr) Variable Function 348(r22): 22(ptr) Variable Function 352(r23): 22(ptr) Variable Function 356(r30): 29(ptr) Variable Function 360(r31): 29(ptr) Variable Function 364(r32): 29(ptr) Variable Function 368(r33): 29(ptr) Variable Function 372(r40): 36(ptr) Variable Function 376(r41): 36(ptr) Variable Function 380(r42): 36(ptr) Variable Function 384(r43): 36(ptr) Variable Function 575(c1): 574(ptr) Variable Function 576(c2): 574(ptr) Variable Function 578(outval): 577(ptr) Variable Function 586(psout): 585(ptr) Variable Function 306: 115(ptr) AccessChain 113 114 307: 14(ivec3) Load 306 308: 7(fvec3) ConvertSToF 307 Store 305(r00) 308 310: 125(ptr) AccessChain 113 134 311: 21(ivec3) Load 310 312: 28(bvec3) INotEqual 311 138 313: 7(fvec3) Select 312 143 142 Store 309(r01) 313 315: 125(ptr) AccessChain 113 124 316: 21(ivec3) Load 315 317: 7(fvec3) ConvertUToF 316 Store 314(r02) 317 319: 152(ptr) AccessChain 113 151 320: 35(f64vec3) Load 319 321: 7(fvec3) FConvert 320 Store 318(r03) 321 323: 125(ptr) AccessChain 113 134 324: 21(ivec3) Load 323 325: 28(bvec3) INotEqual 324 138 326: 14(ivec3) Select 325 173 172 Store 322(r10) 326 328: 125(ptr) AccessChain 113 124 329: 21(ivec3) Load 328 330: 14(ivec3) Bitcast 329 Store 327(r11) 330 332: 182(ptr) AccessChain 113 181 333: 7(fvec3) Load 332 334: 14(ivec3) ConvertFToS 333 Store 331(r12) 334 336: 152(ptr) AccessChain 113 151 337: 35(f64vec3) Load 336 338: 14(ivec3) ConvertFToS 337 Store 335(r13) 338 340: 125(ptr) AccessChain 113 134 341: 21(ivec3) Load 340 342: 28(bvec3) INotEqual 341 138 343: 21(ivec3) Select 342 219 138 Store 339(r20) 343 345: 115(ptr) AccessChain 113 114 346: 14(ivec3) Load 345 347: 21(ivec3) Bitcast 346 Store 344(r21) 347 349: 182(ptr) AccessChain 113 181 350: 7(fvec3) Load 349 351: 21(ivec3) ConvertFToU 350 Store 348(r22) 351 353: 152(ptr) AccessChain 113 151 354: 35(f64vec3) Load 353 355: 21(ivec3) ConvertFToU 354 Store 352(r23) 355 357: 115(ptr) AccessChain 113 114 358: 14(ivec3) Load 357 359: 28(bvec3) INotEqual 358 138 Store 356(r30) 359 361: 125(ptr) AccessChain 113 124 362: 21(ivec3) Load 361 363: 28(bvec3) INotEqual 362 138 Store 360(r31) 363 365: 182(ptr) AccessChain 113 181 366: 7(fvec3) Load 365 367: 28(bvec3) FUnordNotEqual 366 142 Store 364(r32) 367 369: 152(ptr) AccessChain 113 151 370: 35(f64vec3) Load 369 371: 28(bvec3) FUnordNotEqual 370 262 Store 368(r33) 371 373: 115(ptr) AccessChain 113 114 374: 14(ivec3) Load 373 375: 35(f64vec3) ConvertSToF 374 Store 372(r40) 375 377: 125(ptr) AccessChain 113 124 378: 21(ivec3) Load 377 379: 35(f64vec3) ConvertUToF 378 Store 376(r41) 379 381: 182(ptr) AccessChain 113 181 382: 7(fvec3) Load 381 383: 35(f64vec3) FConvert 382 Store 380(r42) 383 385: 125(ptr) AccessChain 113 134 386: 21(ivec3) Load 385 387: 28(bvec3) INotEqual 386 138 388: 35(f64vec3) Select 387 289 262 Store 384(r43) 388 389: 115(ptr) AccessChain 113 114 390: 14(ivec3) Load 389 391: 7(fvec3) ConvertSToF 390 392: 7(fvec3) Load 305(r00) 393: 7(fvec3) FMul 392 391 Store 305(r00) 393 394: 125(ptr) AccessChain 113 134 395: 21(ivec3) Load 394 396: 28(bvec3) INotEqual 395 138 397: 7(fvec3) Select 396 143 142 398: 7(fvec3) Load 309(r01) 399: 7(fvec3) FMul 398 397 Store 309(r01) 399 400: 125(ptr) AccessChain 113 124 401: 21(ivec3) Load 400 402: 7(fvec3) ConvertUToF 401 403: 7(fvec3) Load 314(r02) 404: 7(fvec3) FMul 403 402 Store 314(r02) 404 405: 152(ptr) AccessChain 113 151 406: 35(f64vec3) Load 405 407: 7(fvec3) FConvert 406 408: 7(fvec3) Load 318(r03) 409: 7(fvec3) FMul 408 407 Store 318(r03) 409 410: 125(ptr) AccessChain 113 134 411: 21(ivec3) Load 410 412: 28(bvec3) INotEqual 411 138 413: 14(ivec3) Select 412 173 172 414: 14(ivec3) Load 322(r10) 415: 14(ivec3) IMul 414 413 Store 322(r10) 415 416: 125(ptr) AccessChain 113 124 417: 21(ivec3) Load 416 418: 14(ivec3) Bitcast 417 419: 14(ivec3) Load 327(r11) 420: 14(ivec3) IMul 419 418 Store 327(r11) 420 421: 182(ptr) AccessChain 113 181 422: 7(fvec3) Load 421 423: 14(ivec3) ConvertFToS 422 424: 14(ivec3) Load 331(r12) 425: 14(ivec3) IMul 424 423 Store 331(r12) 425 426: 152(ptr) AccessChain 113 151 427: 35(f64vec3) Load 426 428: 14(ivec3) ConvertFToS 427 429: 14(ivec3) Load 335(r13) 430: 14(ivec3) IMul 429 428 Store 335(r13) 430 431: 125(ptr) AccessChain 113 134 432: 21(ivec3) Load 431 433: 28(bvec3) INotEqual 432 138 434: 21(ivec3) Select 433 219 138 435: 21(ivec3) Load 339(r20) 436: 21(ivec3) IMul 435 434 Store 339(r20) 436 437: 115(ptr) AccessChain 113 114 438: 14(ivec3) Load 437 439: 21(ivec3) Bitcast 438 440: 21(ivec3) Load 344(r21) 441: 21(ivec3) IMul 440 439 Store 344(r21) 441 442: 182(ptr) AccessChain 113 181 443: 7(fvec3) Load 442 444: 21(ivec3) ConvertFToU 443 445: 21(ivec3) Load 348(r22) 446: 21(ivec3) IMul 445 444 Store 348(r22) 446 447: 152(ptr) AccessChain 113 151 448: 35(f64vec3) Load 447 449: 21(ivec3) ConvertFToU 448 450: 21(ivec3) Load 352(r23) 451: 21(ivec3) IMul 450 449 Store 352(r23) 451 452: 115(ptr) AccessChain 113 114 453: 14(ivec3) Load 452 454: 35(f64vec3) ConvertSToF 453 455: 35(f64vec3) Load 372(r40) 456: 35(f64vec3) FMul 455 454 Store 372(r40) 456 457: 125(ptr) AccessChain 113 124 458: 21(ivec3) Load 457 459: 35(f64vec3) ConvertUToF 458 460: 35(f64vec3) Load 376(r41) 461: 35(f64vec3) FMul 460 459 Store 376(r41) 461 462: 182(ptr) AccessChain 113 181 463: 7(fvec3) Load 462 464: 35(f64vec3) FConvert 463 465: 35(f64vec3) Load 380(r42) 466: 35(f64vec3) FMul 465 464 Store 380(r42) 466 467: 125(ptr) AccessChain 113 134 468: 21(ivec3) Load 467 469: 28(bvec3) INotEqual 468 138 470: 35(f64vec3) Select 469 289 262 471: 35(f64vec3) Load 384(r43) 472: 35(f64vec3) FMul 471 470 Store 384(r43) 472 475: 474(ptr) AccessChain 113 473 476: 13(int) Load 475 477: 6(float) ConvertSToF 476 478: 7(fvec3) Load 305(r00) 479: 7(fvec3) VectorTimesScalar 478 477 Store 305(r00) 479 482: 481(ptr) AccessChain 113 480 483: 20(int) Load 482 484: 27(bool) INotEqual 483 137 485: 6(float) Select 484 141 140 486: 7(fvec3) Load 309(r01) 487: 7(fvec3) VectorTimesScalar 486 485 Store 309(r01) 487 489: 481(ptr) AccessChain 113 488 490: 20(int) Load 489 491: 6(float) ConvertUToF 490 492: 7(fvec3) Load 314(r02) 493: 7(fvec3) VectorTimesScalar 492 491 Store 314(r02) 493 496: 495(ptr) AccessChain 113 494 497:34(float64_t) Load 496 498: 6(float) FConvert 497 499: 7(fvec3) Load 318(r03) 500: 7(fvec3) VectorTimesScalar 499 498 Store 318(r03) 500 501: 481(ptr) AccessChain 113 480 502: 20(int) Load 501 503: 27(bool) INotEqual 502 137 504: 13(int) Select 503 134 114 505: 14(ivec3) Load 322(r10) 506: 14(ivec3) CompositeConstruct 504 504 504 507: 14(ivec3) IMul 505 506 Store 322(r10) 507 508: 481(ptr) AccessChain 113 488 509: 20(int) Load 508 510: 13(int) Bitcast 509 511: 14(ivec3) Load 327(r11) 512: 14(ivec3) CompositeConstruct 510 510 510 513: 14(ivec3) IMul 511 512 Store 327(r11) 513 516: 515(ptr) AccessChain 113 514 517: 6(float) Load 516 518: 13(int) ConvertFToS 517 519: 14(ivec3) Load 331(r12) 520: 14(ivec3) CompositeConstruct 518 518 518 521: 14(ivec3) IMul 519 520 Store 331(r12) 521 522: 495(ptr) AccessChain 113 494 523:34(float64_t) Load 522 524: 13(int) ConvertFToS 523 525: 14(ivec3) Load 335(r13) 526: 14(ivec3) CompositeConstruct 524 524 524 527: 14(ivec3) IMul 525 526 Store 335(r13) 527 528: 481(ptr) AccessChain 113 480 529: 20(int) Load 528 530: 27(bool) INotEqual 529 137 531: 20(int) Select 530 218 137 532: 21(ivec3) Load 339(r20) 533: 21(ivec3) CompositeConstruct 531 531 531 534: 21(ivec3) IMul 532 533 Store 339(r20) 534 535: 474(ptr) AccessChain 113 473 536: 13(int) Load 535 537: 20(int) Bitcast 536 538: 21(ivec3) Load 344(r21) 539: 21(ivec3) CompositeConstruct 537 537 537 540: 21(ivec3) IMul 538 539 Store 344(r21) 540 541: 515(ptr) AccessChain 113 514 542: 6(float) Load 541 543: 20(int) ConvertFToU 542 544: 21(ivec3) Load 348(r22) 545: 21(ivec3) CompositeConstruct 543 543 543 546: 21(ivec3) IMul 544 545 Store 348(r22) 546 547: 495(ptr) AccessChain 113 494 548:34(float64_t) Load 547 549: 20(int) ConvertFToU 548 550: 21(ivec3) Load 352(r23) 551: 21(ivec3) CompositeConstruct 549 549 549 552: 21(ivec3) IMul 550 551 Store 352(r23) 552 553: 474(ptr) AccessChain 113 473 554: 13(int) Load 553 555:34(float64_t) ConvertSToF 554 556: 35(f64vec3) Load 372(r40) 557: 35(f64vec3) VectorTimesScalar 556 555 Store 372(r40) 557 558: 481(ptr) AccessChain 113 488 559: 20(int) Load 558 560:34(float64_t) ConvertUToF 559 561: 35(f64vec3) Load 376(r41) 562: 35(f64vec3) VectorTimesScalar 561 560 Store 376(r41) 562 563: 515(ptr) AccessChain 113 514 564: 6(float) Load 563 565:34(float64_t) FConvert 564 566: 35(f64vec3) Load 380(r42) 567: 35(f64vec3) VectorTimesScalar 566 565 Store 380(r42) 567 568: 481(ptr) AccessChain 113 480 569: 20(int) Load 568 570: 27(bool) INotEqual 569 137 571:34(float64_t) Select 570 288 261 572: 35(f64vec3) Load 384(r43) 573: 35(f64vec3) VectorTimesScalar 572 571 Store 384(r43) 573 Store 575(c1) 124 Store 576(c2) 124 580: 13(int) Load 575(c1) 581: 6(float) ConvertSToF 580 582: 13(int) Load 576(c2) 583: 6(float) ConvertSToF 582 584: 106(fvec4) CompositeConstruct 579 579 581 583 Store 578(outval) 584 587: 106(fvec4) Load 578(outval) 588: 577(ptr) AccessChain 586(psout) 114 Store 588 587 589:107(PS_OUTPUT) Load 586(psout) ReturnValue 589 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.reflection.binding.frag.out000066400000000000000000000022221506534232700246200ustar00rootroot00000000000000hlsl.reflection.binding.frag Uniform reflection: t1: offset -1, type 8b5d, size 1, index -1, binding 15, stages 16 s1: offset -1, type 0, size 1, index -1, binding 5, stages 16 t1a: offset -1, type 8b5d, size 1, index -1, binding 16, stages 16, arrayStride 4, topLevelArrayStride 4 s1a: offset -1, type 0, size 1, index -1, binding 6, stages 16, arrayStride 4, topLevelArrayStride 4 c1_a: offset 0, type 8b52, size 1, index 0, binding -1, stages 16 c1_b: offset 16, type 1404, size 1, index 0, binding -1, stages 16 c1_c: offset 20, type 1406, size 1, index 0, binding -1, stages 16 c2_a: offset 0, type 8b52, size 1, index 1, binding -1, stages 16 c2_b: offset 16, type 1404, size 1, index 1, binding -1, stages 16 c2_c: offset 20, type 1406, size 1, index 1, binding -1, stages 16 Uniform block reflection: cbuff1: offset -1, type ffffffff, size 24, index 0, binding 2, stages 16, numMembers 3 cbuff2: offset -1, type ffffffff, size 24, index 1, binding 3, stages 16, numMembers 3 Buffer variable reflection: Buffer block reflection: Pipeline input reflection: Pipeline output reflection: psout.Color: offset 0, type 8b52, size 1, index 0, binding -1, stages 16 glslang-16.0.0/Test/baseResults/hlsl.reflection.binding.vert.out000066400000000000000000000005311506534232700246620ustar00rootroot00000000000000hlsl.reflection.binding.vert Linked vertex stage: Uniform reflection: t1: offset -1, type 8b5d, size 1, index -1, binding 15 s1: offset -1, type 0, size 1, index -1, binding 5 t1a: offset -1, type 8b5d, size 1, index -1, binding 16 s1a: offset -1, type 0, size 1, index -1, binding 6 Uniform block reflection: Vertex attribute reflection: glslang-16.0.0/Test/baseResults/hlsl.reflection.vert.out000066400000000000000000000157341506534232700232640ustar00rootroot00000000000000hlsl.reflection.vert Uniform reflection: anonDeadMember2: offset 64, type 8b52, size 1, index 0, binding -1, stages 1 ufDead4: offset 28, type 1406, size 1, index 1, binding -1, stages 1 anonMember1: offset 0, type 8b51, size 1, index 0, binding -1, stages 1 uf1: offset 16, type 1406, size 1, index 1, binding -1, stages 1 anonMember3: offset 80, type 8b52, size 1, index 0, binding -1, stages 1 s.a: offset 0, type 1404, size 1, index 1, binding -1, stages 1 m23: offset 16, type 8b67, size 1, index 0, binding -1, stages 1 scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1, stages 1 c_m23: offset 16, type 8b67, size 1, index 2, binding -1, stages 1 c_scalarAfterm23: offset 48, type 1404, size 1, index 2, binding -1, stages 1 scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1, stages 1 floatArray: offset 112, type 1406, size 5, index 0, binding -1, stages 1, arrayStride 16, topLevelArrayStride 16 scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1, stages 1 m22: offset 208, type 8b5a, size 9, index 0, binding -1, stages 1, arrayStride 32, topLevelArrayStride 32 dm22: offset 32, type 8b5a, size 4, index 1, binding -1, stages 1, arrayStride 32, topLevelArrayStride 32 foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1, stages 1 foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1, stages 1 foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1, stages 1 foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1, stages 1 deepA.d2.d1[2].va: offset 440, type 8b50, size 2, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepB.d2.d1[1].va: offset 1016, type 8b50, size 2, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepB.d2.d1[2].va: offset 1048, type 8b50, size 2, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepB.d2.d1[3].va: offset 1080, type 8b50, size 2, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepC.iv4: offset 1568, type 8b52, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepC.d2.i: offset 1584, type 1404, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepC.d2.d1[0].va: offset 1592, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepC.d2.d1[0].b: offset 1616, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepC.d2.d1[1].va: offset 1624, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepC.d2.d1[1].b: offset 1648, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepC.d2.d1[2].va: offset 1656, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepC.d2.d1[2].b: offset 1680, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepC.d2.d1[3].va: offset 1688, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepC.d2.d1[3].b: offset 1712, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepC.v3: offset 1728, type 8b54, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[0].iv4: offset 2480, type 8b52, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[0].d2.i: offset 2496, type 1404, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[0].d2.d1[0].va: offset 2504, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepD[0].d2.d1[0].b: offset 2528, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[0].d2.d1[1].va: offset 2536, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepD[0].d2.d1[1].b: offset 2560, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[0].d2.d1[2].va: offset 2568, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepD[0].d2.d1[2].b: offset 2592, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[0].d2.d1[3].va: offset 2600, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepD[0].d2.d1[3].b: offset 2624, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[0].v3: offset 2640, type 8b54, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[1].iv4: offset 2784, type 8b52, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[1].d2.i: offset 2800, type 1404, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[1].d2.d1[0].va: offset 2808, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepD[1].d2.d1[0].b: offset 2832, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[1].d2.d1[1].va: offset 2840, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepD[1].d2.d1[1].b: offset 2864, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[1].d2.d1[2].va: offset 2872, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepD[1].d2.d1[2].b: offset 2896, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[1].d2.d1[3].va: offset 2904, type 8b50, size 3, index 1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 304 deepD[1].d2.d1[3].b: offset 2928, type 8b56, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 deepD[1].v3: offset 2944, type 8b54, size 1, index 1, binding -1, stages 1, topLevelArrayStride 304 ufDead3: offset 24, type 1406, size 1, index 1, binding -1, stages 1 foo1: offset 0, type 1406, size 1, index 4, binding -1, stages 1 foo2: offset 0, type 1406, size 1, index 5, binding -1, stages 1 Uniform block reflection: nameless: offset -1, type ffffffff, size 496, index 0, binding -1, stages 1, numMembers 9 $Global: offset -1, type ffffffff, size 3088, index 1, binding -1, stages 1, numMembers 106 c_nameless: offset -1, type ffffffff, size 96, index 2, binding -1, stages 1, numMembers 5 nested: offset -1, type ffffffff, size 32, index 3, binding -1, stages 1, numMembers 4 abl: offset -1, type ffffffff, size 4, index 4, binding -1, stages 1, numMembers 1 abl2: offset -1, type ffffffff, size 4, index 5, binding -1, stages 1, numMembers 1 Buffer variable reflection: Buffer block reflection: Pipeline input reflection: attributeFloat: offset 0, type 1406, size 1, index 0, binding -1, stages 1 attributeFloat2: offset 0, type 8b50, size 1, index 0, binding -1, stages 1 attributeFloat3: offset 0, type 8b51, size 1, index 0, binding -1, stages 1 attributeFloat4: offset 0, type 8b52, size 1, index 0, binding -1, stages 1 attributeMat4: offset 0, type 8b5c, size 1, index 0, binding -1, stages 1 Pipeline output reflection: glslang-16.0.0/Test/baseResults/hlsl.round.dx10.frag.out000066400000000000000000000044361506534232700227700ustar00rootroot00000000000000hlsl.round.dx10.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:3 Branch: Return with expression 0:3 roundEven ( temp 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:? Linker Objects Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:3 Branch: Return with expression 0:3 roundEven ( temp 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:? Linker Objects // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "PixelShaderFunction(vf4;" Name 10 "input" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) 4(main): 2 Function None 3 5: Label Return FunctionEnd 11(PixelShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 13: 7(fvec4) Load 10(input) 14: 7(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 13 ReturnValue 14 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.round.dx9.frag.out000066400000000000000000000053101506534232700227100ustar00rootroot00000000000000hlsl.round.dx9.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Scope 0:3 Branch: Return with expression 0:3 round ( temp 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:? Linker Objects Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Scope 0:3 Branch: Return with expression 0:3 round ( temp 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:? Linker Objects // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "main" ExecutionMode 5 OriginUpperLeft 1: String "" Source HLSL 500 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 " Name 5 "main" Name 12 "PixelShaderFunction(vf4;" Name 11 "input" 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 10: TypeFunction 8(fvec4) 9(ptr) 5(main): 3 Function None 4 6: Label Line 1 3 0 Return FunctionEnd Line 1 2 1 12(PixelShaderFunction(vf4;): 8(fvec4) Function None 10 11(input): 9(ptr) FunctionParameter 13: Label Line 1 3 0 14: 8(fvec4) Load 11(input) 15: 8(fvec4) ExtInst 2(GLSL.std.450) 1(Round) 14 ReturnValue 15 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.rw.atomics.frag.out000066400000000000000000015522061506534232700231600ustar00rootroot00000000000000hlsl.rw.atomics.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:45 Function Parameters: 0:? Sequence 0:50 imageAtomicAdd ( temp int) 0:50 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:50 i1: direct index for structure ( uniform int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:50 Constant: 0:50 5 (const uint) 0:50 i1b: direct index for structure ( uniform int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:50 Constant: 0:50 8 (const uint) 0:51 move second child to first child ( temp int) 0:51 'out_i1' ( temp int) 0:51 imageAtomicAdd ( temp int) 0:51 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:51 i1: direct index for structure ( uniform int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:51 Constant: 0:51 5 (const uint) 0:51 i1: direct index for structure ( uniform int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:51 Constant: 0:51 5 (const uint) 0:52 imageAtomicAnd ( temp int) 0:52 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:52 i1: direct index for structure ( uniform int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:52 Constant: 0:52 5 (const uint) 0:52 i1b: direct index for structure ( uniform int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:52 Constant: 0:52 8 (const uint) 0:53 move second child to first child ( temp int) 0:53 'out_i1' ( temp int) 0:53 imageAtomicAnd ( temp int) 0:53 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:53 i1: direct index for structure ( uniform int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:53 Constant: 0:53 5 (const uint) 0:53 i1: direct index for structure ( uniform int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:53 Constant: 0:53 5 (const uint) 0:54 move second child to first child ( temp int) 0:54 'out_i1' ( temp int) 0:54 imageAtomicCompSwap ( temp int) 0:54 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:54 i1: direct index for structure ( uniform int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:54 Constant: 0:54 5 (const uint) 0:54 i1b: direct index for structure ( uniform int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:54 Constant: 0:54 8 (const uint) 0:54 i1c: direct index for structure ( uniform int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:54 Constant: 0:54 9 (const uint) 0:55 move second child to first child ( temp int) 0:55 'out_i1' ( temp int) 0:55 imageAtomicExchange ( temp int) 0:55 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:55 i1: direct index for structure ( uniform int) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:55 Constant: 0:55 5 (const uint) 0:55 i1: direct index for structure ( uniform int) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:55 Constant: 0:55 5 (const uint) 0:56 imageAtomicMax ( temp int) 0:56 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:56 i1: direct index for structure ( uniform int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:56 Constant: 0:56 5 (const uint) 0:56 i1b: direct index for structure ( uniform int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:56 Constant: 0:56 8 (const uint) 0:57 move second child to first child ( temp int) 0:57 'out_i1' ( temp int) 0:57 imageAtomicMax ( temp int) 0:57 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:57 i1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:57 Constant: 0:57 5 (const uint) 0:57 i1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:57 Constant: 0:57 5 (const uint) 0:58 imageAtomicMin ( temp int) 0:58 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:58 i1: direct index for structure ( uniform int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:58 Constant: 0:58 5 (const uint) 0:58 i1b: direct index for structure ( uniform int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:58 Constant: 0:58 8 (const uint) 0:59 move second child to first child ( temp int) 0:59 'out_i1' ( temp int) 0:59 imageAtomicMin ( temp int) 0:59 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:59 i1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:59 Constant: 0:59 5 (const uint) 0:59 i1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:59 Constant: 0:59 5 (const uint) 0:60 imageAtomicOr ( temp int) 0:60 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:60 i1: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:60 Constant: 0:60 5 (const uint) 0:60 i1b: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:60 Constant: 0:60 8 (const uint) 0:61 move second child to first child ( temp int) 0:61 'out_i1' ( temp int) 0:61 imageAtomicOr ( temp int) 0:61 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:61 i1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:61 Constant: 0:61 5 (const uint) 0:61 i1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:61 Constant: 0:61 5 (const uint) 0:62 imageAtomicXor ( temp int) 0:62 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:62 i1: direct index for structure ( uniform int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:62 Constant: 0:62 5 (const uint) 0:62 i1b: direct index for structure ( uniform int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:62 Constant: 0:62 8 (const uint) 0:63 move second child to first child ( temp int) 0:63 'out_i1' ( temp int) 0:63 imageAtomicXor ( temp int) 0:63 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:63 i1: direct index for structure ( uniform int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:63 Constant: 0:63 5 (const uint) 0:63 i1: direct index for structure ( uniform int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:63 Constant: 0:63 5 (const uint) 0:66 imageAtomicAdd ( temp uint) 0:66 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:66 u1: direct index for structure ( uniform uint) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:66 Constant: 0:66 0 (const uint) 0:66 u1: direct index for structure ( uniform uint) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:66 Constant: 0:66 0 (const uint) 0:67 move second child to first child ( temp uint) 0:67 'out_u1' ( temp uint) 0:67 imageAtomicAdd ( temp uint) 0:67 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:67 u1: direct index for structure ( uniform uint) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:67 Constant: 0:67 0 (const uint) 0:67 u1: direct index for structure ( uniform uint) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:67 Constant: 0:67 0 (const uint) 0:68 imageAtomicAnd ( temp uint) 0:68 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:68 u1: direct index for structure ( uniform uint) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:68 Constant: 0:68 0 (const uint) 0:68 u1: direct index for structure ( uniform uint) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:68 Constant: 0:68 0 (const uint) 0:69 move second child to first child ( temp uint) 0:69 'out_u1' ( temp uint) 0:69 imageAtomicAnd ( temp uint) 0:69 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:69 u1: direct index for structure ( uniform uint) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:69 Constant: 0:69 0 (const uint) 0:69 u1: direct index for structure ( uniform uint) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:69 Constant: 0:69 0 (const uint) 0:70 move second child to first child ( temp uint) 0:70 'out_u1' ( temp uint) 0:70 imageAtomicCompSwap ( temp uint) 0:70 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:70 u1: direct index for structure ( uniform uint) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:70 Constant: 0:70 0 (const uint) 0:70 u1b: direct index for structure ( uniform uint) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:70 Constant: 0:70 3 (const uint) 0:70 u1c: direct index for structure ( uniform uint) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:70 Constant: 0:70 4 (const uint) 0:71 move second child to first child ( temp uint) 0:71 'out_u1' ( temp uint) 0:71 imageAtomicExchange ( temp uint) 0:71 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:71 u1: direct index for structure ( uniform uint) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:71 Constant: 0:71 0 (const uint) 0:71 u1: direct index for structure ( uniform uint) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:71 Constant: 0:71 0 (const uint) 0:72 imageAtomicMax ( temp uint) 0:72 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:72 u1: direct index for structure ( uniform uint) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:72 Constant: 0:72 0 (const uint) 0:72 u1: direct index for structure ( uniform uint) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:72 Constant: 0:72 0 (const uint) 0:73 move second child to first child ( temp uint) 0:73 'out_u1' ( temp uint) 0:73 imageAtomicMax ( temp uint) 0:73 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:73 u1: direct index for structure ( uniform uint) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:73 Constant: 0:73 0 (const uint) 0:73 u1: direct index for structure ( uniform uint) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:73 Constant: 0:73 0 (const uint) 0:74 imageAtomicMin ( temp uint) 0:74 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:74 u1: direct index for structure ( uniform uint) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:74 Constant: 0:74 0 (const uint) 0:74 u1: direct index for structure ( uniform uint) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:74 Constant: 0:74 0 (const uint) 0:75 move second child to first child ( temp uint) 0:75 'out_u1' ( temp uint) 0:75 imageAtomicMin ( temp uint) 0:75 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:75 u1: direct index for structure ( uniform uint) 0:75 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:75 Constant: 0:75 0 (const uint) 0:75 u1: direct index for structure ( uniform uint) 0:75 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:75 Constant: 0:75 0 (const uint) 0:76 imageAtomicOr ( temp uint) 0:76 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:76 u1: direct index for structure ( uniform uint) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:76 Constant: 0:76 0 (const uint) 0:76 u1: direct index for structure ( uniform uint) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:76 Constant: 0:76 0 (const uint) 0:77 move second child to first child ( temp uint) 0:77 'out_u1' ( temp uint) 0:77 imageAtomicOr ( temp uint) 0:77 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:77 u1: direct index for structure ( uniform uint) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:77 Constant: 0:77 0 (const uint) 0:77 u1: direct index for structure ( uniform uint) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:77 Constant: 0:77 0 (const uint) 0:78 imageAtomicXor ( temp uint) 0:78 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:78 u1: direct index for structure ( uniform uint) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:78 Constant: 0:78 0 (const uint) 0:78 u1: direct index for structure ( uniform uint) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:78 Constant: 0:78 0 (const uint) 0:79 move second child to first child ( temp uint) 0:79 'out_u1' ( temp uint) 0:79 imageAtomicXor ( temp uint) 0:79 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:79 u1: direct index for structure ( uniform uint) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:79 Constant: 0:79 0 (const uint) 0:79 u1: direct index for structure ( uniform uint) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:79 Constant: 0:79 0 (const uint) 0:82 imageAtomicAdd ( temp int) 0:82 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:82 i2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:82 Constant: 0:82 6 (const uint) 0:82 i1b: direct index for structure ( uniform int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:82 Constant: 0:82 8 (const uint) 0:83 move second child to first child ( temp int) 0:83 'out_i1' ( temp int) 0:83 imageAtomicAdd ( temp int) 0:83 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:83 i2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:83 Constant: 0:83 6 (const uint) 0:83 i1: direct index for structure ( uniform int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:83 Constant: 0:83 5 (const uint) 0:84 imageAtomicAnd ( temp int) 0:84 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:84 i2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:84 Constant: 0:84 6 (const uint) 0:84 i1b: direct index for structure ( uniform int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:84 Constant: 0:84 8 (const uint) 0:85 move second child to first child ( temp int) 0:85 'out_i1' ( temp int) 0:85 imageAtomicAnd ( temp int) 0:85 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:85 i2: direct index for structure ( uniform 2-component vector of int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:85 Constant: 0:85 6 (const uint) 0:85 i1: direct index for structure ( uniform int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:85 Constant: 0:85 5 (const uint) 0:86 move second child to first child ( temp int) 0:86 'out_i1' ( temp int) 0:86 imageAtomicCompSwap ( temp int) 0:86 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:86 i2: direct index for structure ( uniform 2-component vector of int) 0:86 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:86 Constant: 0:86 6 (const uint) 0:86 i1b: direct index for structure ( uniform int) 0:86 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:86 Constant: 0:86 8 (const uint) 0:86 i1c: direct index for structure ( uniform int) 0:86 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:86 Constant: 0:86 9 (const uint) 0:87 move second child to first child ( temp int) 0:87 'out_i1' ( temp int) 0:87 imageAtomicExchange ( temp int) 0:87 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:87 i2: direct index for structure ( uniform 2-component vector of int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:87 Constant: 0:87 6 (const uint) 0:87 i1: direct index for structure ( uniform int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:87 Constant: 0:87 5 (const uint) 0:88 imageAtomicMax ( temp int) 0:88 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:88 i2: direct index for structure ( uniform 2-component vector of int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:88 Constant: 0:88 6 (const uint) 0:88 i1b: direct index for structure ( uniform int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:88 Constant: 0:88 8 (const uint) 0:89 move second child to first child ( temp int) 0:89 'out_i1' ( temp int) 0:89 imageAtomicMax ( temp int) 0:89 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:89 i2: direct index for structure ( uniform 2-component vector of int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:89 Constant: 0:89 6 (const uint) 0:89 i1: direct index for structure ( uniform int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:89 Constant: 0:89 5 (const uint) 0:90 imageAtomicMin ( temp int) 0:90 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:90 i2: direct index for structure ( uniform 2-component vector of int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:90 Constant: 0:90 6 (const uint) 0:90 i1b: direct index for structure ( uniform int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:90 Constant: 0:90 8 (const uint) 0:91 move second child to first child ( temp int) 0:91 'out_i1' ( temp int) 0:91 imageAtomicMin ( temp int) 0:91 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:91 i2: direct index for structure ( uniform 2-component vector of int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:91 Constant: 0:91 6 (const uint) 0:91 i1: direct index for structure ( uniform int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:91 Constant: 0:91 5 (const uint) 0:92 imageAtomicOr ( temp int) 0:92 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:92 i2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:92 Constant: 0:92 6 (const uint) 0:92 i1b: direct index for structure ( uniform int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:92 Constant: 0:92 8 (const uint) 0:93 move second child to first child ( temp int) 0:93 'out_i1' ( temp int) 0:93 imageAtomicOr ( temp int) 0:93 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:93 i2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:93 Constant: 0:93 6 (const uint) 0:93 i1: direct index for structure ( uniform int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:93 Constant: 0:93 5 (const uint) 0:94 imageAtomicXor ( temp int) 0:94 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:94 i2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:94 Constant: 0:94 6 (const uint) 0:94 i1b: direct index for structure ( uniform int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:94 Constant: 0:94 8 (const uint) 0:95 move second child to first child ( temp int) 0:95 'out_i1' ( temp int) 0:95 imageAtomicXor ( temp int) 0:95 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:95 i2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:95 Constant: 0:95 6 (const uint) 0:95 i1: direct index for structure ( uniform int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:95 Constant: 0:95 5 (const uint) 0:98 imageAtomicAdd ( temp uint) 0:98 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:98 u2: direct index for structure ( uniform 2-component vector of uint) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:98 Constant: 0:98 1 (const uint) 0:98 u1: direct index for structure ( uniform uint) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:98 Constant: 0:98 0 (const uint) 0:99 move second child to first child ( temp uint) 0:99 'out_u1' ( temp uint) 0:99 imageAtomicAdd ( temp uint) 0:99 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:99 u2: direct index for structure ( uniform 2-component vector of uint) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:99 Constant: 0:99 1 (const uint) 0:99 u1: direct index for structure ( uniform uint) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:99 Constant: 0:99 0 (const uint) 0:100 imageAtomicAnd ( temp uint) 0:100 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:100 u2: direct index for structure ( uniform 2-component vector of uint) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:100 Constant: 0:100 1 (const uint) 0:100 u1: direct index for structure ( uniform uint) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:100 Constant: 0:100 0 (const uint) 0:101 move second child to first child ( temp uint) 0:101 'out_u1' ( temp uint) 0:101 imageAtomicAnd ( temp uint) 0:101 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:101 u2: direct index for structure ( uniform 2-component vector of uint) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:101 Constant: 0:101 1 (const uint) 0:101 u1: direct index for structure ( uniform uint) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:101 Constant: 0:101 0 (const uint) 0:102 move second child to first child ( temp uint) 0:102 'out_u1' ( temp uint) 0:102 imageAtomicCompSwap ( temp uint) 0:102 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:102 u2: direct index for structure ( uniform 2-component vector of uint) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:102 Constant: 0:102 1 (const uint) 0:102 u1b: direct index for structure ( uniform uint) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:102 Constant: 0:102 3 (const uint) 0:102 u1c: direct index for structure ( uniform uint) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:102 Constant: 0:102 4 (const uint) 0:103 move second child to first child ( temp uint) 0:103 'out_u1' ( temp uint) 0:103 imageAtomicExchange ( temp uint) 0:103 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:103 u2: direct index for structure ( uniform 2-component vector of uint) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:103 Constant: 0:103 1 (const uint) 0:103 u1: direct index for structure ( uniform uint) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:103 Constant: 0:103 0 (const uint) 0:104 imageAtomicMax ( temp uint) 0:104 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:104 u2: direct index for structure ( uniform 2-component vector of uint) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:104 Constant: 0:104 1 (const uint) 0:104 u1: direct index for structure ( uniform uint) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:104 Constant: 0:104 0 (const uint) 0:105 move second child to first child ( temp uint) 0:105 'out_u1' ( temp uint) 0:105 imageAtomicMax ( temp uint) 0:105 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:105 u2: direct index for structure ( uniform 2-component vector of uint) 0:105 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:105 Constant: 0:105 1 (const uint) 0:105 u1: direct index for structure ( uniform uint) 0:105 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:105 Constant: 0:105 0 (const uint) 0:106 imageAtomicMin ( temp uint) 0:106 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:106 u2: direct index for structure ( uniform 2-component vector of uint) 0:106 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:106 Constant: 0:106 1 (const uint) 0:106 u1: direct index for structure ( uniform uint) 0:106 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:106 Constant: 0:106 0 (const uint) 0:107 move second child to first child ( temp uint) 0:107 'out_u1' ( temp uint) 0:107 imageAtomicMin ( temp uint) 0:107 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:107 u2: direct index for structure ( uniform 2-component vector of uint) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:107 Constant: 0:107 1 (const uint) 0:107 u1: direct index for structure ( uniform uint) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:107 Constant: 0:107 0 (const uint) 0:108 imageAtomicOr ( temp uint) 0:108 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:108 u2: direct index for structure ( uniform 2-component vector of uint) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:108 Constant: 0:108 1 (const uint) 0:108 u1: direct index for structure ( uniform uint) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:108 Constant: 0:108 0 (const uint) 0:109 move second child to first child ( temp uint) 0:109 'out_u1' ( temp uint) 0:109 imageAtomicOr ( temp uint) 0:109 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:109 u2: direct index for structure ( uniform 2-component vector of uint) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:109 Constant: 0:109 1 (const uint) 0:109 u1: direct index for structure ( uniform uint) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:109 Constant: 0:109 0 (const uint) 0:110 imageAtomicXor ( temp uint) 0:110 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:110 u2: direct index for structure ( uniform 2-component vector of uint) 0:110 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:110 Constant: 0:110 1 (const uint) 0:110 u1: direct index for structure ( uniform uint) 0:110 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:110 Constant: 0:110 0 (const uint) 0:111 move second child to first child ( temp uint) 0:111 'out_u1' ( temp uint) 0:111 imageAtomicXor ( temp uint) 0:111 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:111 u2: direct index for structure ( uniform 2-component vector of uint) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:111 Constant: 0:111 1 (const uint) 0:111 u1: direct index for structure ( uniform uint) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:111 Constant: 0:111 0 (const uint) 0:114 imageAtomicAdd ( temp int) 0:114 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:114 i3: direct index for structure ( uniform 3-component vector of int) 0:114 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:114 Constant: 0:114 7 (const uint) 0:114 i1b: direct index for structure ( uniform int) 0:114 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:114 Constant: 0:114 8 (const uint) 0:115 move second child to first child ( temp int) 0:115 'out_i1' ( temp int) 0:115 imageAtomicAdd ( temp int) 0:115 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:115 i3: direct index for structure ( uniform 3-component vector of int) 0:115 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:115 Constant: 0:115 7 (const uint) 0:115 i1: direct index for structure ( uniform int) 0:115 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:115 Constant: 0:115 5 (const uint) 0:116 imageAtomicAnd ( temp int) 0:116 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:116 i3: direct index for structure ( uniform 3-component vector of int) 0:116 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:116 Constant: 0:116 7 (const uint) 0:116 i1b: direct index for structure ( uniform int) 0:116 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:116 Constant: 0:116 8 (const uint) 0:117 move second child to first child ( temp int) 0:117 'out_i1' ( temp int) 0:117 imageAtomicAnd ( temp int) 0:117 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:117 i3: direct index for structure ( uniform 3-component vector of int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:117 Constant: 0:117 7 (const uint) 0:117 i1: direct index for structure ( uniform int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:117 Constant: 0:117 5 (const uint) 0:118 move second child to first child ( temp int) 0:118 'out_i1' ( temp int) 0:118 imageAtomicCompSwap ( temp int) 0:118 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:118 i3: direct index for structure ( uniform 3-component vector of int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:118 Constant: 0:118 7 (const uint) 0:118 i1b: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:118 Constant: 0:118 8 (const uint) 0:118 i1c: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:118 Constant: 0:118 9 (const uint) 0:119 move second child to first child ( temp int) 0:119 'out_i1' ( temp int) 0:119 imageAtomicExchange ( temp int) 0:119 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:119 i3: direct index for structure ( uniform 3-component vector of int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:119 Constant: 0:119 7 (const uint) 0:119 i1: direct index for structure ( uniform int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:119 Constant: 0:119 5 (const uint) 0:120 imageAtomicMax ( temp int) 0:120 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:120 i3: direct index for structure ( uniform 3-component vector of int) 0:120 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:120 Constant: 0:120 7 (const uint) 0:120 i1b: direct index for structure ( uniform int) 0:120 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:120 Constant: 0:120 8 (const uint) 0:121 move second child to first child ( temp int) 0:121 'out_i1' ( temp int) 0:121 imageAtomicMax ( temp int) 0:121 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:121 i3: direct index for structure ( uniform 3-component vector of int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:121 Constant: 0:121 7 (const uint) 0:121 i1: direct index for structure ( uniform int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:121 Constant: 0:121 5 (const uint) 0:122 imageAtomicMin ( temp int) 0:122 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:122 i3: direct index for structure ( uniform 3-component vector of int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:122 Constant: 0:122 7 (const uint) 0:122 i1b: direct index for structure ( uniform int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:122 Constant: 0:122 8 (const uint) 0:123 move second child to first child ( temp int) 0:123 'out_i1' ( temp int) 0:123 imageAtomicMin ( temp int) 0:123 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:123 i3: direct index for structure ( uniform 3-component vector of int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:123 Constant: 0:123 7 (const uint) 0:123 i1: direct index for structure ( uniform int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:123 Constant: 0:123 5 (const uint) 0:124 imageAtomicOr ( temp int) 0:124 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:124 i3: direct index for structure ( uniform 3-component vector of int) 0:124 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:124 Constant: 0:124 7 (const uint) 0:124 i1b: direct index for structure ( uniform int) 0:124 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:124 Constant: 0:124 8 (const uint) 0:125 move second child to first child ( temp int) 0:125 'out_i1' ( temp int) 0:125 imageAtomicOr ( temp int) 0:125 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:125 i3: direct index for structure ( uniform 3-component vector of int) 0:125 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:125 Constant: 0:125 7 (const uint) 0:125 i1: direct index for structure ( uniform int) 0:125 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:125 Constant: 0:125 5 (const uint) 0:126 imageAtomicXor ( temp int) 0:126 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:126 i3: direct index for structure ( uniform 3-component vector of int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:126 Constant: 0:126 7 (const uint) 0:126 i1b: direct index for structure ( uniform int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:126 Constant: 0:126 8 (const uint) 0:127 move second child to first child ( temp int) 0:127 'out_i1' ( temp int) 0:127 imageAtomicXor ( temp int) 0:127 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:127 i3: direct index for structure ( uniform 3-component vector of int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:127 Constant: 0:127 7 (const uint) 0:127 i1: direct index for structure ( uniform int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:127 Constant: 0:127 5 (const uint) 0:130 imageAtomicAdd ( temp uint) 0:130 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:130 u3: direct index for structure ( uniform 3-component vector of uint) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:130 Constant: 0:130 2 (const uint) 0:130 u1: direct index for structure ( uniform uint) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:130 Constant: 0:130 0 (const uint) 0:131 move second child to first child ( temp uint) 0:131 'out_u1' ( temp uint) 0:131 imageAtomicAdd ( temp uint) 0:131 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:131 u3: direct index for structure ( uniform 3-component vector of uint) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:131 Constant: 0:131 2 (const uint) 0:131 u1: direct index for structure ( uniform uint) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:131 Constant: 0:131 0 (const uint) 0:132 imageAtomicAnd ( temp uint) 0:132 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:132 u3: direct index for structure ( uniform 3-component vector of uint) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:132 Constant: 0:132 2 (const uint) 0:132 u1: direct index for structure ( uniform uint) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:132 Constant: 0:132 0 (const uint) 0:133 move second child to first child ( temp uint) 0:133 'out_u1' ( temp uint) 0:133 imageAtomicAnd ( temp uint) 0:133 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:133 u3: direct index for structure ( uniform 3-component vector of uint) 0:133 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:133 Constant: 0:133 2 (const uint) 0:133 u1: direct index for structure ( uniform uint) 0:133 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:133 Constant: 0:133 0 (const uint) 0:134 move second child to first child ( temp uint) 0:134 'out_u1' ( temp uint) 0:134 imageAtomicCompSwap ( temp uint) 0:134 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:134 u3: direct index for structure ( uniform 3-component vector of uint) 0:134 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:134 Constant: 0:134 2 (const uint) 0:134 u1b: direct index for structure ( uniform uint) 0:134 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:134 Constant: 0:134 3 (const uint) 0:134 u1c: direct index for structure ( uniform uint) 0:134 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:134 Constant: 0:134 4 (const uint) 0:135 move second child to first child ( temp uint) 0:135 'out_u1' ( temp uint) 0:135 imageAtomicExchange ( temp uint) 0:135 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:135 u3: direct index for structure ( uniform 3-component vector of uint) 0:135 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:135 Constant: 0:135 2 (const uint) 0:135 u1: direct index for structure ( uniform uint) 0:135 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:135 Constant: 0:135 0 (const uint) 0:136 imageAtomicMax ( temp uint) 0:136 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:136 u3: direct index for structure ( uniform 3-component vector of uint) 0:136 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:136 Constant: 0:136 2 (const uint) 0:136 u1: direct index for structure ( uniform uint) 0:136 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:136 Constant: 0:136 0 (const uint) 0:137 move second child to first child ( temp uint) 0:137 'out_u1' ( temp uint) 0:137 imageAtomicMax ( temp uint) 0:137 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:137 u3: direct index for structure ( uniform 3-component vector of uint) 0:137 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:137 Constant: 0:137 2 (const uint) 0:137 u1: direct index for structure ( uniform uint) 0:137 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:137 Constant: 0:137 0 (const uint) 0:138 imageAtomicMin ( temp uint) 0:138 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:138 u3: direct index for structure ( uniform 3-component vector of uint) 0:138 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:138 Constant: 0:138 2 (const uint) 0:138 u1: direct index for structure ( uniform uint) 0:138 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:138 Constant: 0:138 0 (const uint) 0:139 move second child to first child ( temp uint) 0:139 'out_u1' ( temp uint) 0:139 imageAtomicMin ( temp uint) 0:139 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:139 u3: direct index for structure ( uniform 3-component vector of uint) 0:139 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:139 Constant: 0:139 2 (const uint) 0:139 u1: direct index for structure ( uniform uint) 0:139 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:139 Constant: 0:139 0 (const uint) 0:140 imageAtomicOr ( temp uint) 0:140 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:140 u3: direct index for structure ( uniform 3-component vector of uint) 0:140 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:140 Constant: 0:140 2 (const uint) 0:140 u1: direct index for structure ( uniform uint) 0:140 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:140 Constant: 0:140 0 (const uint) 0:141 move second child to first child ( temp uint) 0:141 'out_u1' ( temp uint) 0:141 imageAtomicOr ( temp uint) 0:141 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:141 u3: direct index for structure ( uniform 3-component vector of uint) 0:141 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:141 Constant: 0:141 2 (const uint) 0:141 u1: direct index for structure ( uniform uint) 0:141 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:141 Constant: 0:141 0 (const uint) 0:142 imageAtomicXor ( temp uint) 0:142 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:142 u3: direct index for structure ( uniform 3-component vector of uint) 0:142 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:142 Constant: 0:142 2 (const uint) 0:142 u1: direct index for structure ( uniform uint) 0:142 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:142 Constant: 0:142 0 (const uint) 0:143 move second child to first child ( temp uint) 0:143 'out_u1' ( temp uint) 0:143 imageAtomicXor ( temp uint) 0:143 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:143 u3: direct index for structure ( uniform 3-component vector of uint) 0:143 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:143 Constant: 0:143 2 (const uint) 0:143 u1: direct index for structure ( uniform uint) 0:143 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:143 Constant: 0:143 0 (const uint) 0:146 imageAtomicAdd ( temp int) 0:146 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:146 i2: direct index for structure ( uniform 2-component vector of int) 0:146 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:146 Constant: 0:146 6 (const uint) 0:146 i1b: direct index for structure ( uniform int) 0:146 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:146 Constant: 0:146 8 (const uint) 0:147 move second child to first child ( temp int) 0:147 'out_i1' ( temp int) 0:147 imageAtomicAdd ( temp int) 0:147 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:147 i2: direct index for structure ( uniform 2-component vector of int) 0:147 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:147 Constant: 0:147 6 (const uint) 0:147 i1: direct index for structure ( uniform int) 0:147 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:147 Constant: 0:147 5 (const uint) 0:148 imageAtomicAnd ( temp int) 0:148 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:148 i2: direct index for structure ( uniform 2-component vector of int) 0:148 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:148 Constant: 0:148 6 (const uint) 0:148 i1b: direct index for structure ( uniform int) 0:148 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:148 Constant: 0:148 8 (const uint) 0:149 move second child to first child ( temp int) 0:149 'out_i1' ( temp int) 0:149 imageAtomicAnd ( temp int) 0:149 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:149 i2: direct index for structure ( uniform 2-component vector of int) 0:149 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:149 Constant: 0:149 6 (const uint) 0:149 i1: direct index for structure ( uniform int) 0:149 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:149 Constant: 0:149 5 (const uint) 0:150 move second child to first child ( temp int) 0:150 'out_i1' ( temp int) 0:150 imageAtomicCompSwap ( temp int) 0:150 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:150 i2: direct index for structure ( uniform 2-component vector of int) 0:150 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:150 Constant: 0:150 6 (const uint) 0:150 i1b: direct index for structure ( uniform int) 0:150 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:150 Constant: 0:150 8 (const uint) 0:150 i1c: direct index for structure ( uniform int) 0:150 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:150 Constant: 0:150 9 (const uint) 0:151 move second child to first child ( temp int) 0:151 'out_i1' ( temp int) 0:151 imageAtomicExchange ( temp int) 0:151 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:151 i2: direct index for structure ( uniform 2-component vector of int) 0:151 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:151 Constant: 0:151 6 (const uint) 0:151 i1: direct index for structure ( uniform int) 0:151 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:151 Constant: 0:151 5 (const uint) 0:152 imageAtomicMax ( temp int) 0:152 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:152 i2: direct index for structure ( uniform 2-component vector of int) 0:152 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:152 Constant: 0:152 6 (const uint) 0:152 i1b: direct index for structure ( uniform int) 0:152 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:152 Constant: 0:152 8 (const uint) 0:153 move second child to first child ( temp int) 0:153 'out_i1' ( temp int) 0:153 imageAtomicMax ( temp int) 0:153 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:153 i2: direct index for structure ( uniform 2-component vector of int) 0:153 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:153 Constant: 0:153 6 (const uint) 0:153 i1: direct index for structure ( uniform int) 0:153 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:153 Constant: 0:153 5 (const uint) 0:154 imageAtomicMin ( temp int) 0:154 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:154 i2: direct index for structure ( uniform 2-component vector of int) 0:154 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:154 Constant: 0:154 6 (const uint) 0:154 i1b: direct index for structure ( uniform int) 0:154 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:154 Constant: 0:154 8 (const uint) 0:155 move second child to first child ( temp int) 0:155 'out_i1' ( temp int) 0:155 imageAtomicMin ( temp int) 0:155 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:155 i2: direct index for structure ( uniform 2-component vector of int) 0:155 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:155 Constant: 0:155 6 (const uint) 0:155 i1: direct index for structure ( uniform int) 0:155 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:155 Constant: 0:155 5 (const uint) 0:156 imageAtomicOr ( temp int) 0:156 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:156 i2: direct index for structure ( uniform 2-component vector of int) 0:156 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:156 Constant: 0:156 6 (const uint) 0:156 i1b: direct index for structure ( uniform int) 0:156 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:156 Constant: 0:156 8 (const uint) 0:157 move second child to first child ( temp int) 0:157 'out_i1' ( temp int) 0:157 imageAtomicOr ( temp int) 0:157 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:157 i2: direct index for structure ( uniform 2-component vector of int) 0:157 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:157 Constant: 0:157 6 (const uint) 0:157 i1: direct index for structure ( uniform int) 0:157 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:157 Constant: 0:157 5 (const uint) 0:158 imageAtomicXor ( temp int) 0:158 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:158 i2: direct index for structure ( uniform 2-component vector of int) 0:158 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:158 Constant: 0:158 6 (const uint) 0:158 i1b: direct index for structure ( uniform int) 0:158 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:158 Constant: 0:158 8 (const uint) 0:159 move second child to first child ( temp int) 0:159 'out_i1' ( temp int) 0:159 imageAtomicXor ( temp int) 0:159 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:159 i2: direct index for structure ( uniform 2-component vector of int) 0:159 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:159 Constant: 0:159 6 (const uint) 0:159 i1: direct index for structure ( uniform int) 0:159 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:159 Constant: 0:159 5 (const uint) 0:162 imageAtomicAdd ( temp uint) 0:162 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:162 u2: direct index for structure ( uniform 2-component vector of uint) 0:162 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:162 Constant: 0:162 1 (const uint) 0:162 u1: direct index for structure ( uniform uint) 0:162 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:162 Constant: 0:162 0 (const uint) 0:163 move second child to first child ( temp uint) 0:163 'out_u1' ( temp uint) 0:163 imageAtomicAdd ( temp uint) 0:163 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:163 u2: direct index for structure ( uniform 2-component vector of uint) 0:163 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:163 Constant: 0:163 1 (const uint) 0:163 u1: direct index for structure ( uniform uint) 0:163 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:163 Constant: 0:163 0 (const uint) 0:164 imageAtomicAnd ( temp uint) 0:164 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:164 u2: direct index for structure ( uniform 2-component vector of uint) 0:164 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:164 Constant: 0:164 1 (const uint) 0:164 u1: direct index for structure ( uniform uint) 0:164 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:164 Constant: 0:164 0 (const uint) 0:165 move second child to first child ( temp uint) 0:165 'out_u1' ( temp uint) 0:165 imageAtomicAnd ( temp uint) 0:165 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:165 u2: direct index for structure ( uniform 2-component vector of uint) 0:165 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:165 Constant: 0:165 1 (const uint) 0:165 u1: direct index for structure ( uniform uint) 0:165 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:165 Constant: 0:165 0 (const uint) 0:166 move second child to first child ( temp uint) 0:166 'out_u1' ( temp uint) 0:166 imageAtomicCompSwap ( temp uint) 0:166 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:166 u2: direct index for structure ( uniform 2-component vector of uint) 0:166 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:166 Constant: 0:166 1 (const uint) 0:166 u1b: direct index for structure ( uniform uint) 0:166 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:166 Constant: 0:166 3 (const uint) 0:166 u1c: direct index for structure ( uniform uint) 0:166 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:166 Constant: 0:166 4 (const uint) 0:167 move second child to first child ( temp uint) 0:167 'out_u1' ( temp uint) 0:167 imageAtomicExchange ( temp uint) 0:167 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:167 u2: direct index for structure ( uniform 2-component vector of uint) 0:167 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:167 Constant: 0:167 1 (const uint) 0:167 u1: direct index for structure ( uniform uint) 0:167 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:167 Constant: 0:167 0 (const uint) 0:168 imageAtomicMax ( temp uint) 0:168 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:168 u2: direct index for structure ( uniform 2-component vector of uint) 0:168 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:168 Constant: 0:168 1 (const uint) 0:168 u1: direct index for structure ( uniform uint) 0:168 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:168 Constant: 0:168 0 (const uint) 0:169 move second child to first child ( temp uint) 0:169 'out_u1' ( temp uint) 0:169 imageAtomicMax ( temp uint) 0:169 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:169 u2: direct index for structure ( uniform 2-component vector of uint) 0:169 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:169 Constant: 0:169 1 (const uint) 0:169 u1: direct index for structure ( uniform uint) 0:169 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:169 Constant: 0:169 0 (const uint) 0:170 imageAtomicMin ( temp uint) 0:170 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:170 u2: direct index for structure ( uniform 2-component vector of uint) 0:170 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:170 Constant: 0:170 1 (const uint) 0:170 u1: direct index for structure ( uniform uint) 0:170 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:170 Constant: 0:170 0 (const uint) 0:171 move second child to first child ( temp uint) 0:171 'out_u1' ( temp uint) 0:171 imageAtomicMin ( temp uint) 0:171 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:171 u2: direct index for structure ( uniform 2-component vector of uint) 0:171 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:171 Constant: 0:171 1 (const uint) 0:171 u1: direct index for structure ( uniform uint) 0:171 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:171 Constant: 0:171 0 (const uint) 0:172 imageAtomicOr ( temp uint) 0:172 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:172 u2: direct index for structure ( uniform 2-component vector of uint) 0:172 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:172 Constant: 0:172 1 (const uint) 0:172 u1: direct index for structure ( uniform uint) 0:172 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:172 Constant: 0:172 0 (const uint) 0:173 move second child to first child ( temp uint) 0:173 'out_u1' ( temp uint) 0:173 imageAtomicOr ( temp uint) 0:173 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:173 u2: direct index for structure ( uniform 2-component vector of uint) 0:173 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:173 Constant: 0:173 1 (const uint) 0:173 u1: direct index for structure ( uniform uint) 0:173 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:173 Constant: 0:173 0 (const uint) 0:174 imageAtomicXor ( temp uint) 0:174 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:174 u2: direct index for structure ( uniform 2-component vector of uint) 0:174 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:174 Constant: 0:174 1 (const uint) 0:174 u1: direct index for structure ( uniform uint) 0:174 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:174 Constant: 0:174 0 (const uint) 0:175 move second child to first child ( temp uint) 0:175 'out_u1' ( temp uint) 0:175 imageAtomicXor ( temp uint) 0:175 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:175 u2: direct index for structure ( uniform 2-component vector of uint) 0:175 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:175 Constant: 0:175 1 (const uint) 0:175 u1: direct index for structure ( uniform uint) 0:175 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:175 Constant: 0:175 0 (const uint) 0:178 imageAtomicAdd ( temp int) 0:178 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:178 i2: direct index for structure ( uniform 2-component vector of int) 0:178 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:178 Constant: 0:178 6 (const uint) 0:178 i1b: direct index for structure ( uniform int) 0:178 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:178 Constant: 0:178 8 (const uint) 0:179 move second child to first child ( temp int) 0:179 'out_i1' ( temp int) 0:179 imageAtomicAdd ( temp int) 0:179 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:179 i2: direct index for structure ( uniform 2-component vector of int) 0:179 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:179 Constant: 0:179 6 (const uint) 0:179 i1: direct index for structure ( uniform int) 0:179 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:179 Constant: 0:179 5 (const uint) 0:180 imageAtomicAnd ( temp int) 0:180 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:180 i2: direct index for structure ( uniform 2-component vector of int) 0:180 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:180 Constant: 0:180 6 (const uint) 0:180 i1b: direct index for structure ( uniform int) 0:180 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:180 Constant: 0:180 8 (const uint) 0:181 move second child to first child ( temp int) 0:181 'out_i1' ( temp int) 0:181 imageAtomicAnd ( temp int) 0:181 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:181 i2: direct index for structure ( uniform 2-component vector of int) 0:181 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:181 Constant: 0:181 6 (const uint) 0:181 i1: direct index for structure ( uniform int) 0:181 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:181 Constant: 0:181 5 (const uint) 0:182 move second child to first child ( temp int) 0:182 'out_i1' ( temp int) 0:182 imageAtomicCompSwap ( temp int) 0:182 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:182 i2: direct index for structure ( uniform 2-component vector of int) 0:182 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:182 Constant: 0:182 6 (const uint) 0:182 i1b: direct index for structure ( uniform int) 0:182 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:182 Constant: 0:182 8 (const uint) 0:182 i1c: direct index for structure ( uniform int) 0:182 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:182 Constant: 0:182 9 (const uint) 0:183 move second child to first child ( temp int) 0:183 'out_i1' ( temp int) 0:183 imageAtomicExchange ( temp int) 0:183 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:183 i2: direct index for structure ( uniform 2-component vector of int) 0:183 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:183 Constant: 0:183 6 (const uint) 0:183 i1: direct index for structure ( uniform int) 0:183 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:183 Constant: 0:183 5 (const uint) 0:184 imageAtomicMax ( temp int) 0:184 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:184 i2: direct index for structure ( uniform 2-component vector of int) 0:184 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:184 Constant: 0:184 6 (const uint) 0:184 i1b: direct index for structure ( uniform int) 0:184 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:184 Constant: 0:184 8 (const uint) 0:185 move second child to first child ( temp int) 0:185 'out_i1' ( temp int) 0:185 imageAtomicMax ( temp int) 0:185 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:185 i2: direct index for structure ( uniform 2-component vector of int) 0:185 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:185 Constant: 0:185 6 (const uint) 0:185 i1: direct index for structure ( uniform int) 0:185 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:185 Constant: 0:185 5 (const uint) 0:186 imageAtomicMin ( temp int) 0:186 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:186 i2: direct index for structure ( uniform 2-component vector of int) 0:186 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:186 Constant: 0:186 6 (const uint) 0:186 i1b: direct index for structure ( uniform int) 0:186 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:186 Constant: 0:186 8 (const uint) 0:187 move second child to first child ( temp int) 0:187 'out_i1' ( temp int) 0:187 imageAtomicMin ( temp int) 0:187 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:187 i2: direct index for structure ( uniform 2-component vector of int) 0:187 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:187 Constant: 0:187 6 (const uint) 0:187 i1: direct index for structure ( uniform int) 0:187 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:187 Constant: 0:187 5 (const uint) 0:188 imageAtomicOr ( temp int) 0:188 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:188 i2: direct index for structure ( uniform 2-component vector of int) 0:188 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:188 Constant: 0:188 6 (const uint) 0:188 i1b: direct index for structure ( uniform int) 0:188 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:188 Constant: 0:188 8 (const uint) 0:189 move second child to first child ( temp int) 0:189 'out_i1' ( temp int) 0:189 imageAtomicOr ( temp int) 0:189 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:189 i2: direct index for structure ( uniform 2-component vector of int) 0:189 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:189 Constant: 0:189 6 (const uint) 0:189 i1: direct index for structure ( uniform int) 0:189 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:189 Constant: 0:189 5 (const uint) 0:190 imageAtomicXor ( temp int) 0:190 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:190 i2: direct index for structure ( uniform 2-component vector of int) 0:190 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:190 Constant: 0:190 6 (const uint) 0:190 i1b: direct index for structure ( uniform int) 0:190 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:190 Constant: 0:190 8 (const uint) 0:191 move second child to first child ( temp int) 0:191 'out_i1' ( temp int) 0:191 imageAtomicXor ( temp int) 0:191 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:191 i2: direct index for structure ( uniform 2-component vector of int) 0:191 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:191 Constant: 0:191 6 (const uint) 0:191 i1: direct index for structure ( uniform int) 0:191 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:191 Constant: 0:191 5 (const uint) 0:194 imageAtomicAdd ( temp uint) 0:194 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:194 u2: direct index for structure ( uniform 2-component vector of uint) 0:194 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:194 Constant: 0:194 1 (const uint) 0:194 u1: direct index for structure ( uniform uint) 0:194 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:194 Constant: 0:194 0 (const uint) 0:195 move second child to first child ( temp uint) 0:195 'out_u1' ( temp uint) 0:195 imageAtomicAdd ( temp uint) 0:195 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:195 u2: direct index for structure ( uniform 2-component vector of uint) 0:195 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:195 Constant: 0:195 1 (const uint) 0:195 u1: direct index for structure ( uniform uint) 0:195 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:195 Constant: 0:195 0 (const uint) 0:196 imageAtomicAnd ( temp uint) 0:196 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:196 u2: direct index for structure ( uniform 2-component vector of uint) 0:196 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:196 Constant: 0:196 1 (const uint) 0:196 u1: direct index for structure ( uniform uint) 0:196 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:196 Constant: 0:196 0 (const uint) 0:197 move second child to first child ( temp uint) 0:197 'out_u1' ( temp uint) 0:197 imageAtomicAnd ( temp uint) 0:197 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:197 u2: direct index for structure ( uniform 2-component vector of uint) 0:197 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:197 Constant: 0:197 1 (const uint) 0:197 u1: direct index for structure ( uniform uint) 0:197 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:197 Constant: 0:197 0 (const uint) 0:198 move second child to first child ( temp uint) 0:198 'out_u1' ( temp uint) 0:198 imageAtomicCompSwap ( temp uint) 0:198 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:198 u2: direct index for structure ( uniform 2-component vector of uint) 0:198 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:198 Constant: 0:198 1 (const uint) 0:198 u1b: direct index for structure ( uniform uint) 0:198 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:198 Constant: 0:198 3 (const uint) 0:198 u1c: direct index for structure ( uniform uint) 0:198 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:198 Constant: 0:198 4 (const uint) 0:199 move second child to first child ( temp uint) 0:199 'out_u1' ( temp uint) 0:199 imageAtomicExchange ( temp uint) 0:199 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:199 u2: direct index for structure ( uniform 2-component vector of uint) 0:199 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:199 Constant: 0:199 1 (const uint) 0:199 u1: direct index for structure ( uniform uint) 0:199 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:199 Constant: 0:199 0 (const uint) 0:200 imageAtomicMax ( temp uint) 0:200 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:200 u2: direct index for structure ( uniform 2-component vector of uint) 0:200 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:200 Constant: 0:200 1 (const uint) 0:200 u1: direct index for structure ( uniform uint) 0:200 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:200 Constant: 0:200 0 (const uint) 0:201 move second child to first child ( temp uint) 0:201 'out_u1' ( temp uint) 0:201 imageAtomicMax ( temp uint) 0:201 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:201 u2: direct index for structure ( uniform 2-component vector of uint) 0:201 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:201 Constant: 0:201 1 (const uint) 0:201 u1: direct index for structure ( uniform uint) 0:201 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:201 Constant: 0:201 0 (const uint) 0:202 imageAtomicMin ( temp uint) 0:202 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:202 u2: direct index for structure ( uniform 2-component vector of uint) 0:202 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:202 Constant: 0:202 1 (const uint) 0:202 u1: direct index for structure ( uniform uint) 0:202 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:202 Constant: 0:202 0 (const uint) 0:203 move second child to first child ( temp uint) 0:203 'out_u1' ( temp uint) 0:203 imageAtomicMin ( temp uint) 0:203 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:203 u2: direct index for structure ( uniform 2-component vector of uint) 0:203 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:203 Constant: 0:203 1 (const uint) 0:203 u1: direct index for structure ( uniform uint) 0:203 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:203 Constant: 0:203 0 (const uint) 0:204 imageAtomicOr ( temp uint) 0:204 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:204 u2: direct index for structure ( uniform 2-component vector of uint) 0:204 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:204 Constant: 0:204 1 (const uint) 0:204 u1: direct index for structure ( uniform uint) 0:204 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:204 Constant: 0:204 0 (const uint) 0:205 move second child to first child ( temp uint) 0:205 'out_u1' ( temp uint) 0:205 imageAtomicOr ( temp uint) 0:205 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:205 u2: direct index for structure ( uniform 2-component vector of uint) 0:205 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:205 Constant: 0:205 1 (const uint) 0:205 u1: direct index for structure ( uniform uint) 0:205 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:205 Constant: 0:205 0 (const uint) 0:206 imageAtomicXor ( temp uint) 0:206 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:206 u2: direct index for structure ( uniform 2-component vector of uint) 0:206 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:206 Constant: 0:206 1 (const uint) 0:206 u1: direct index for structure ( uniform uint) 0:206 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:206 Constant: 0:206 0 (const uint) 0:207 move second child to first child ( temp uint) 0:207 'out_u1' ( temp uint) 0:207 imageAtomicXor ( temp uint) 0:207 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:207 u2: direct index for structure ( uniform 2-component vector of uint) 0:207 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:207 Constant: 0:207 1 (const uint) 0:207 u1: direct index for structure ( uniform uint) 0:207 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:207 Constant: 0:207 0 (const uint) 0:210 imageAtomicAdd ( temp int) 0:210 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:210 i1: direct index for structure ( uniform int) 0:210 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:210 Constant: 0:210 5 (const uint) 0:210 i1b: direct index for structure ( uniform int) 0:210 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:210 Constant: 0:210 8 (const uint) 0:211 move second child to first child ( temp int) 0:211 'out_i1' ( temp int) 0:211 imageAtomicAdd ( temp int) 0:211 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:211 i1: direct index for structure ( uniform int) 0:211 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:211 Constant: 0:211 5 (const uint) 0:211 i1: direct index for structure ( uniform int) 0:211 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:211 Constant: 0:211 5 (const uint) 0:212 imageAtomicAnd ( temp int) 0:212 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:212 i1: direct index for structure ( uniform int) 0:212 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:212 Constant: 0:212 5 (const uint) 0:212 i1b: direct index for structure ( uniform int) 0:212 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:212 Constant: 0:212 8 (const uint) 0:213 move second child to first child ( temp int) 0:213 'out_i1' ( temp int) 0:213 imageAtomicAnd ( temp int) 0:213 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:213 i1: direct index for structure ( uniform int) 0:213 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:213 Constant: 0:213 5 (const uint) 0:213 i1: direct index for structure ( uniform int) 0:213 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:213 Constant: 0:213 5 (const uint) 0:214 move second child to first child ( temp int) 0:214 'out_i1' ( temp int) 0:214 imageAtomicCompSwap ( temp int) 0:214 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:214 i1: direct index for structure ( uniform int) 0:214 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:214 Constant: 0:214 5 (const uint) 0:214 i1b: direct index for structure ( uniform int) 0:214 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:214 Constant: 0:214 8 (const uint) 0:214 i1c: direct index for structure ( uniform int) 0:214 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:214 Constant: 0:214 9 (const uint) 0:215 move second child to first child ( temp int) 0:215 'out_i1' ( temp int) 0:215 imageAtomicExchange ( temp int) 0:215 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:215 i1: direct index for structure ( uniform int) 0:215 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:215 Constant: 0:215 5 (const uint) 0:215 i1: direct index for structure ( uniform int) 0:215 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:215 Constant: 0:215 5 (const uint) 0:216 imageAtomicMax ( temp int) 0:216 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:216 i1: direct index for structure ( uniform int) 0:216 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:216 Constant: 0:216 5 (const uint) 0:216 i1b: direct index for structure ( uniform int) 0:216 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:216 Constant: 0:216 8 (const uint) 0:217 move second child to first child ( temp int) 0:217 'out_i1' ( temp int) 0:217 imageAtomicMax ( temp int) 0:217 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:217 i1: direct index for structure ( uniform int) 0:217 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:217 Constant: 0:217 5 (const uint) 0:217 i1: direct index for structure ( uniform int) 0:217 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:217 Constant: 0:217 5 (const uint) 0:218 imageAtomicMin ( temp int) 0:218 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:218 i1: direct index for structure ( uniform int) 0:218 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:218 Constant: 0:218 5 (const uint) 0:218 i1b: direct index for structure ( uniform int) 0:218 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:218 Constant: 0:218 8 (const uint) 0:219 move second child to first child ( temp int) 0:219 'out_i1' ( temp int) 0:219 imageAtomicMin ( temp int) 0:219 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:219 i1: direct index for structure ( uniform int) 0:219 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:219 Constant: 0:219 5 (const uint) 0:219 i1: direct index for structure ( uniform int) 0:219 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:219 Constant: 0:219 5 (const uint) 0:220 imageAtomicOr ( temp int) 0:220 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:220 i1: direct index for structure ( uniform int) 0:220 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:220 Constant: 0:220 5 (const uint) 0:220 i1b: direct index for structure ( uniform int) 0:220 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:220 Constant: 0:220 8 (const uint) 0:221 move second child to first child ( temp int) 0:221 'out_i1' ( temp int) 0:221 imageAtomicOr ( temp int) 0:221 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:221 i1: direct index for structure ( uniform int) 0:221 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:221 Constant: 0:221 5 (const uint) 0:221 i1: direct index for structure ( uniform int) 0:221 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:221 Constant: 0:221 5 (const uint) 0:222 imageAtomicXor ( temp int) 0:222 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:222 i1: direct index for structure ( uniform int) 0:222 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:222 Constant: 0:222 5 (const uint) 0:222 i1b: direct index for structure ( uniform int) 0:222 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:222 Constant: 0:222 8 (const uint) 0:223 move second child to first child ( temp int) 0:223 'out_i1' ( temp int) 0:223 imageAtomicXor ( temp int) 0:223 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:223 i1: direct index for structure ( uniform int) 0:223 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:223 Constant: 0:223 5 (const uint) 0:223 i1: direct index for structure ( uniform int) 0:223 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:223 Constant: 0:223 5 (const uint) 0:226 imageAtomicAdd ( temp uint) 0:226 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:226 u1: direct index for structure ( uniform uint) 0:226 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:226 Constant: 0:226 0 (const uint) 0:226 u1: direct index for structure ( uniform uint) 0:226 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:226 Constant: 0:226 0 (const uint) 0:227 move second child to first child ( temp uint) 0:227 'out_u1' ( temp uint) 0:227 imageAtomicAdd ( temp uint) 0:227 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:227 u1: direct index for structure ( uniform uint) 0:227 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:227 Constant: 0:227 0 (const uint) 0:227 u1: direct index for structure ( uniform uint) 0:227 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:227 Constant: 0:227 0 (const uint) 0:228 imageAtomicAnd ( temp uint) 0:228 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:228 u1: direct index for structure ( uniform uint) 0:228 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:228 Constant: 0:228 0 (const uint) 0:228 u1: direct index for structure ( uniform uint) 0:228 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:228 Constant: 0:228 0 (const uint) 0:229 move second child to first child ( temp uint) 0:229 'out_u1' ( temp uint) 0:229 imageAtomicAnd ( temp uint) 0:229 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:229 u1: direct index for structure ( uniform uint) 0:229 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:229 Constant: 0:229 0 (const uint) 0:229 u1: direct index for structure ( uniform uint) 0:229 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:229 Constant: 0:229 0 (const uint) 0:230 move second child to first child ( temp uint) 0:230 'out_u1' ( temp uint) 0:230 imageAtomicCompSwap ( temp uint) 0:230 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:230 u1: direct index for structure ( uniform uint) 0:230 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:230 Constant: 0:230 0 (const uint) 0:230 u1b: direct index for structure ( uniform uint) 0:230 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:230 Constant: 0:230 3 (const uint) 0:230 u1c: direct index for structure ( uniform uint) 0:230 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:230 Constant: 0:230 4 (const uint) 0:231 move second child to first child ( temp uint) 0:231 'out_u1' ( temp uint) 0:231 imageAtomicExchange ( temp uint) 0:231 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:231 u1: direct index for structure ( uniform uint) 0:231 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:231 Constant: 0:231 0 (const uint) 0:231 u1: direct index for structure ( uniform uint) 0:231 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:231 Constant: 0:231 0 (const uint) 0:232 imageAtomicMax ( temp uint) 0:232 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:232 u1: direct index for structure ( uniform uint) 0:232 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:232 Constant: 0:232 0 (const uint) 0:232 u1: direct index for structure ( uniform uint) 0:232 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:232 Constant: 0:232 0 (const uint) 0:233 move second child to first child ( temp uint) 0:233 'out_u1' ( temp uint) 0:233 imageAtomicMax ( temp uint) 0:233 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:233 u1: direct index for structure ( uniform uint) 0:233 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:233 Constant: 0:233 0 (const uint) 0:233 u1: direct index for structure ( uniform uint) 0:233 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:233 Constant: 0:233 0 (const uint) 0:234 imageAtomicMin ( temp uint) 0:234 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:234 u1: direct index for structure ( uniform uint) 0:234 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:234 Constant: 0:234 0 (const uint) 0:234 u1: direct index for structure ( uniform uint) 0:234 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:234 Constant: 0:234 0 (const uint) 0:235 move second child to first child ( temp uint) 0:235 'out_u1' ( temp uint) 0:235 imageAtomicMin ( temp uint) 0:235 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:235 u1: direct index for structure ( uniform uint) 0:235 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:235 Constant: 0:235 0 (const uint) 0:235 u1: direct index for structure ( uniform uint) 0:235 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:235 Constant: 0:235 0 (const uint) 0:236 imageAtomicOr ( temp uint) 0:236 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:236 u1: direct index for structure ( uniform uint) 0:236 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:236 Constant: 0:236 0 (const uint) 0:236 u1: direct index for structure ( uniform uint) 0:236 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:236 Constant: 0:236 0 (const uint) 0:237 move second child to first child ( temp uint) 0:237 'out_u1' ( temp uint) 0:237 imageAtomicOr ( temp uint) 0:237 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:237 u1: direct index for structure ( uniform uint) 0:237 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:237 Constant: 0:237 0 (const uint) 0:237 u1: direct index for structure ( uniform uint) 0:237 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:237 Constant: 0:237 0 (const uint) 0:238 imageAtomicXor ( temp uint) 0:238 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:238 u1: direct index for structure ( uniform uint) 0:238 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:238 Constant: 0:238 0 (const uint) 0:238 u1: direct index for structure ( uniform uint) 0:238 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:238 Constant: 0:238 0 (const uint) 0:239 move second child to first child ( temp uint) 0:239 'out_u1' ( temp uint) 0:239 imageAtomicXor ( temp uint) 0:239 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:239 u1: direct index for structure ( uniform uint) 0:239 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:239 Constant: 0:239 0 (const uint) 0:239 u1: direct index for structure ( uniform uint) 0:239 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:239 Constant: 0:239 0 (const uint) 0:242 move second child to first child ( temp 4-component vector of float) 0:242 Color: direct index for structure ( temp 4-component vector of float) 0:242 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1.000000 0:242 1.000000 0:242 1.000000 0:242 1.000000 0:243 Branch: Return with expression 0:243 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:45 Function Definition: main( ( temp void) 0:45 Function Parameters: 0:? Sequence 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:45 Constant: 0:45 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' ( uniform sampler) 0:? 'g_tTex1df1' (layout( r32f) uniform image1D) 0:? 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:? 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:? 'g_tTex2df1' (layout( r32f) uniform image2D) 0:? 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:? 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:? 'g_tTex3df1' (layout( r32f) uniform image3D) 0:? 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:? 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:? 'g_tTex1df1a' (layout( r32f) uniform image1DArray) 0:? 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:? 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:? 'g_tTex2df1a' (layout( r32f) uniform image2DArray) 0:? 'g_tTex2di1a' (layout( r32i) uniform iimage2DArray) 0:? 'g_tTex2du1a' (layout( r32ui) uniform uimage2DArray) 0:? 'g_tBuffF' (layout( r32f) uniform imageBuffer) 0:? 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:? 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:45 Function Parameters: 0:? Sequence 0:50 imageAtomicAdd ( temp int) 0:50 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:50 i1: direct index for structure ( uniform int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:50 Constant: 0:50 5 (const uint) 0:50 i1b: direct index for structure ( uniform int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:50 Constant: 0:50 8 (const uint) 0:51 move second child to first child ( temp int) 0:51 'out_i1' ( temp int) 0:51 imageAtomicAdd ( temp int) 0:51 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:51 i1: direct index for structure ( uniform int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:51 Constant: 0:51 5 (const uint) 0:51 i1: direct index for structure ( uniform int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:51 Constant: 0:51 5 (const uint) 0:52 imageAtomicAnd ( temp int) 0:52 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:52 i1: direct index for structure ( uniform int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:52 Constant: 0:52 5 (const uint) 0:52 i1b: direct index for structure ( uniform int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:52 Constant: 0:52 8 (const uint) 0:53 move second child to first child ( temp int) 0:53 'out_i1' ( temp int) 0:53 imageAtomicAnd ( temp int) 0:53 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:53 i1: direct index for structure ( uniform int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:53 Constant: 0:53 5 (const uint) 0:53 i1: direct index for structure ( uniform int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:53 Constant: 0:53 5 (const uint) 0:54 move second child to first child ( temp int) 0:54 'out_i1' ( temp int) 0:54 imageAtomicCompSwap ( temp int) 0:54 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:54 i1: direct index for structure ( uniform int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:54 Constant: 0:54 5 (const uint) 0:54 i1b: direct index for structure ( uniform int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:54 Constant: 0:54 8 (const uint) 0:54 i1c: direct index for structure ( uniform int) 0:54 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:54 Constant: 0:54 9 (const uint) 0:55 move second child to first child ( temp int) 0:55 'out_i1' ( temp int) 0:55 imageAtomicExchange ( temp int) 0:55 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:55 i1: direct index for structure ( uniform int) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:55 Constant: 0:55 5 (const uint) 0:55 i1: direct index for structure ( uniform int) 0:55 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:55 Constant: 0:55 5 (const uint) 0:56 imageAtomicMax ( temp int) 0:56 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:56 i1: direct index for structure ( uniform int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:56 Constant: 0:56 5 (const uint) 0:56 i1b: direct index for structure ( uniform int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:56 Constant: 0:56 8 (const uint) 0:57 move second child to first child ( temp int) 0:57 'out_i1' ( temp int) 0:57 imageAtomicMax ( temp int) 0:57 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:57 i1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:57 Constant: 0:57 5 (const uint) 0:57 i1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:57 Constant: 0:57 5 (const uint) 0:58 imageAtomicMin ( temp int) 0:58 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:58 i1: direct index for structure ( uniform int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:58 Constant: 0:58 5 (const uint) 0:58 i1b: direct index for structure ( uniform int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:58 Constant: 0:58 8 (const uint) 0:59 move second child to first child ( temp int) 0:59 'out_i1' ( temp int) 0:59 imageAtomicMin ( temp int) 0:59 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:59 i1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:59 Constant: 0:59 5 (const uint) 0:59 i1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:59 Constant: 0:59 5 (const uint) 0:60 imageAtomicOr ( temp int) 0:60 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:60 i1: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:60 Constant: 0:60 5 (const uint) 0:60 i1b: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:60 Constant: 0:60 8 (const uint) 0:61 move second child to first child ( temp int) 0:61 'out_i1' ( temp int) 0:61 imageAtomicOr ( temp int) 0:61 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:61 i1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:61 Constant: 0:61 5 (const uint) 0:61 i1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:61 Constant: 0:61 5 (const uint) 0:62 imageAtomicXor ( temp int) 0:62 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:62 i1: direct index for structure ( uniform int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:62 Constant: 0:62 5 (const uint) 0:62 i1b: direct index for structure ( uniform int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:62 Constant: 0:62 8 (const uint) 0:63 move second child to first child ( temp int) 0:63 'out_i1' ( temp int) 0:63 imageAtomicXor ( temp int) 0:63 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:63 i1: direct index for structure ( uniform int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:63 Constant: 0:63 5 (const uint) 0:63 i1: direct index for structure ( uniform int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:63 Constant: 0:63 5 (const uint) 0:66 imageAtomicAdd ( temp uint) 0:66 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:66 u1: direct index for structure ( uniform uint) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:66 Constant: 0:66 0 (const uint) 0:66 u1: direct index for structure ( uniform uint) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:66 Constant: 0:66 0 (const uint) 0:67 move second child to first child ( temp uint) 0:67 'out_u1' ( temp uint) 0:67 imageAtomicAdd ( temp uint) 0:67 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:67 u1: direct index for structure ( uniform uint) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:67 Constant: 0:67 0 (const uint) 0:67 u1: direct index for structure ( uniform uint) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:67 Constant: 0:67 0 (const uint) 0:68 imageAtomicAnd ( temp uint) 0:68 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:68 u1: direct index for structure ( uniform uint) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:68 Constant: 0:68 0 (const uint) 0:68 u1: direct index for structure ( uniform uint) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:68 Constant: 0:68 0 (const uint) 0:69 move second child to first child ( temp uint) 0:69 'out_u1' ( temp uint) 0:69 imageAtomicAnd ( temp uint) 0:69 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:69 u1: direct index for structure ( uniform uint) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:69 Constant: 0:69 0 (const uint) 0:69 u1: direct index for structure ( uniform uint) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:69 Constant: 0:69 0 (const uint) 0:70 move second child to first child ( temp uint) 0:70 'out_u1' ( temp uint) 0:70 imageAtomicCompSwap ( temp uint) 0:70 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:70 u1: direct index for structure ( uniform uint) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:70 Constant: 0:70 0 (const uint) 0:70 u1b: direct index for structure ( uniform uint) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:70 Constant: 0:70 3 (const uint) 0:70 u1c: direct index for structure ( uniform uint) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:70 Constant: 0:70 4 (const uint) 0:71 move second child to first child ( temp uint) 0:71 'out_u1' ( temp uint) 0:71 imageAtomicExchange ( temp uint) 0:71 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:71 u1: direct index for structure ( uniform uint) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:71 Constant: 0:71 0 (const uint) 0:71 u1: direct index for structure ( uniform uint) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:71 Constant: 0:71 0 (const uint) 0:72 imageAtomicMax ( temp uint) 0:72 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:72 u1: direct index for structure ( uniform uint) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:72 Constant: 0:72 0 (const uint) 0:72 u1: direct index for structure ( uniform uint) 0:72 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:72 Constant: 0:72 0 (const uint) 0:73 move second child to first child ( temp uint) 0:73 'out_u1' ( temp uint) 0:73 imageAtomicMax ( temp uint) 0:73 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:73 u1: direct index for structure ( uniform uint) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:73 Constant: 0:73 0 (const uint) 0:73 u1: direct index for structure ( uniform uint) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:73 Constant: 0:73 0 (const uint) 0:74 imageAtomicMin ( temp uint) 0:74 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:74 u1: direct index for structure ( uniform uint) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:74 Constant: 0:74 0 (const uint) 0:74 u1: direct index for structure ( uniform uint) 0:74 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:74 Constant: 0:74 0 (const uint) 0:75 move second child to first child ( temp uint) 0:75 'out_u1' ( temp uint) 0:75 imageAtomicMin ( temp uint) 0:75 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:75 u1: direct index for structure ( uniform uint) 0:75 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:75 Constant: 0:75 0 (const uint) 0:75 u1: direct index for structure ( uniform uint) 0:75 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:75 Constant: 0:75 0 (const uint) 0:76 imageAtomicOr ( temp uint) 0:76 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:76 u1: direct index for structure ( uniform uint) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:76 Constant: 0:76 0 (const uint) 0:76 u1: direct index for structure ( uniform uint) 0:76 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:76 Constant: 0:76 0 (const uint) 0:77 move second child to first child ( temp uint) 0:77 'out_u1' ( temp uint) 0:77 imageAtomicOr ( temp uint) 0:77 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:77 u1: direct index for structure ( uniform uint) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:77 Constant: 0:77 0 (const uint) 0:77 u1: direct index for structure ( uniform uint) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:77 Constant: 0:77 0 (const uint) 0:78 imageAtomicXor ( temp uint) 0:78 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:78 u1: direct index for structure ( uniform uint) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:78 Constant: 0:78 0 (const uint) 0:78 u1: direct index for structure ( uniform uint) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:78 Constant: 0:78 0 (const uint) 0:79 move second child to first child ( temp uint) 0:79 'out_u1' ( temp uint) 0:79 imageAtomicXor ( temp uint) 0:79 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:79 u1: direct index for structure ( uniform uint) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:79 Constant: 0:79 0 (const uint) 0:79 u1: direct index for structure ( uniform uint) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:79 Constant: 0:79 0 (const uint) 0:82 imageAtomicAdd ( temp int) 0:82 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:82 i2: direct index for structure ( uniform 2-component vector of int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:82 Constant: 0:82 6 (const uint) 0:82 i1b: direct index for structure ( uniform int) 0:82 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:82 Constant: 0:82 8 (const uint) 0:83 move second child to first child ( temp int) 0:83 'out_i1' ( temp int) 0:83 imageAtomicAdd ( temp int) 0:83 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:83 i2: direct index for structure ( uniform 2-component vector of int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:83 Constant: 0:83 6 (const uint) 0:83 i1: direct index for structure ( uniform int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:83 Constant: 0:83 5 (const uint) 0:84 imageAtomicAnd ( temp int) 0:84 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:84 i2: direct index for structure ( uniform 2-component vector of int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:84 Constant: 0:84 6 (const uint) 0:84 i1b: direct index for structure ( uniform int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:84 Constant: 0:84 8 (const uint) 0:85 move second child to first child ( temp int) 0:85 'out_i1' ( temp int) 0:85 imageAtomicAnd ( temp int) 0:85 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:85 i2: direct index for structure ( uniform 2-component vector of int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:85 Constant: 0:85 6 (const uint) 0:85 i1: direct index for structure ( uniform int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:85 Constant: 0:85 5 (const uint) 0:86 move second child to first child ( temp int) 0:86 'out_i1' ( temp int) 0:86 imageAtomicCompSwap ( temp int) 0:86 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:86 i2: direct index for structure ( uniform 2-component vector of int) 0:86 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:86 Constant: 0:86 6 (const uint) 0:86 i1b: direct index for structure ( uniform int) 0:86 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:86 Constant: 0:86 8 (const uint) 0:86 i1c: direct index for structure ( uniform int) 0:86 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:86 Constant: 0:86 9 (const uint) 0:87 move second child to first child ( temp int) 0:87 'out_i1' ( temp int) 0:87 imageAtomicExchange ( temp int) 0:87 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:87 i2: direct index for structure ( uniform 2-component vector of int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:87 Constant: 0:87 6 (const uint) 0:87 i1: direct index for structure ( uniform int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:87 Constant: 0:87 5 (const uint) 0:88 imageAtomicMax ( temp int) 0:88 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:88 i2: direct index for structure ( uniform 2-component vector of int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:88 Constant: 0:88 6 (const uint) 0:88 i1b: direct index for structure ( uniform int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:88 Constant: 0:88 8 (const uint) 0:89 move second child to first child ( temp int) 0:89 'out_i1' ( temp int) 0:89 imageAtomicMax ( temp int) 0:89 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:89 i2: direct index for structure ( uniform 2-component vector of int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:89 Constant: 0:89 6 (const uint) 0:89 i1: direct index for structure ( uniform int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:89 Constant: 0:89 5 (const uint) 0:90 imageAtomicMin ( temp int) 0:90 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:90 i2: direct index for structure ( uniform 2-component vector of int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:90 Constant: 0:90 6 (const uint) 0:90 i1b: direct index for structure ( uniform int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:90 Constant: 0:90 8 (const uint) 0:91 move second child to first child ( temp int) 0:91 'out_i1' ( temp int) 0:91 imageAtomicMin ( temp int) 0:91 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:91 i2: direct index for structure ( uniform 2-component vector of int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:91 Constant: 0:91 6 (const uint) 0:91 i1: direct index for structure ( uniform int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:91 Constant: 0:91 5 (const uint) 0:92 imageAtomicOr ( temp int) 0:92 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:92 i2: direct index for structure ( uniform 2-component vector of int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:92 Constant: 0:92 6 (const uint) 0:92 i1b: direct index for structure ( uniform int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:92 Constant: 0:92 8 (const uint) 0:93 move second child to first child ( temp int) 0:93 'out_i1' ( temp int) 0:93 imageAtomicOr ( temp int) 0:93 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:93 i2: direct index for structure ( uniform 2-component vector of int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:93 Constant: 0:93 6 (const uint) 0:93 i1: direct index for structure ( uniform int) 0:93 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:93 Constant: 0:93 5 (const uint) 0:94 imageAtomicXor ( temp int) 0:94 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:94 i2: direct index for structure ( uniform 2-component vector of int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:94 Constant: 0:94 6 (const uint) 0:94 i1b: direct index for structure ( uniform int) 0:94 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:94 Constant: 0:94 8 (const uint) 0:95 move second child to first child ( temp int) 0:95 'out_i1' ( temp int) 0:95 imageAtomicXor ( temp int) 0:95 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:95 i2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:95 Constant: 0:95 6 (const uint) 0:95 i1: direct index for structure ( uniform int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:95 Constant: 0:95 5 (const uint) 0:98 imageAtomicAdd ( temp uint) 0:98 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:98 u2: direct index for structure ( uniform 2-component vector of uint) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:98 Constant: 0:98 1 (const uint) 0:98 u1: direct index for structure ( uniform uint) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:98 Constant: 0:98 0 (const uint) 0:99 move second child to first child ( temp uint) 0:99 'out_u1' ( temp uint) 0:99 imageAtomicAdd ( temp uint) 0:99 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:99 u2: direct index for structure ( uniform 2-component vector of uint) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:99 Constant: 0:99 1 (const uint) 0:99 u1: direct index for structure ( uniform uint) 0:99 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:99 Constant: 0:99 0 (const uint) 0:100 imageAtomicAnd ( temp uint) 0:100 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:100 u2: direct index for structure ( uniform 2-component vector of uint) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:100 Constant: 0:100 1 (const uint) 0:100 u1: direct index for structure ( uniform uint) 0:100 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:100 Constant: 0:100 0 (const uint) 0:101 move second child to first child ( temp uint) 0:101 'out_u1' ( temp uint) 0:101 imageAtomicAnd ( temp uint) 0:101 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:101 u2: direct index for structure ( uniform 2-component vector of uint) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:101 Constant: 0:101 1 (const uint) 0:101 u1: direct index for structure ( uniform uint) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:101 Constant: 0:101 0 (const uint) 0:102 move second child to first child ( temp uint) 0:102 'out_u1' ( temp uint) 0:102 imageAtomicCompSwap ( temp uint) 0:102 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:102 u2: direct index for structure ( uniform 2-component vector of uint) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:102 Constant: 0:102 1 (const uint) 0:102 u1b: direct index for structure ( uniform uint) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:102 Constant: 0:102 3 (const uint) 0:102 u1c: direct index for structure ( uniform uint) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:102 Constant: 0:102 4 (const uint) 0:103 move second child to first child ( temp uint) 0:103 'out_u1' ( temp uint) 0:103 imageAtomicExchange ( temp uint) 0:103 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:103 u2: direct index for structure ( uniform 2-component vector of uint) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:103 Constant: 0:103 1 (const uint) 0:103 u1: direct index for structure ( uniform uint) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:103 Constant: 0:103 0 (const uint) 0:104 imageAtomicMax ( temp uint) 0:104 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:104 u2: direct index for structure ( uniform 2-component vector of uint) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:104 Constant: 0:104 1 (const uint) 0:104 u1: direct index for structure ( uniform uint) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:104 Constant: 0:104 0 (const uint) 0:105 move second child to first child ( temp uint) 0:105 'out_u1' ( temp uint) 0:105 imageAtomicMax ( temp uint) 0:105 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:105 u2: direct index for structure ( uniform 2-component vector of uint) 0:105 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:105 Constant: 0:105 1 (const uint) 0:105 u1: direct index for structure ( uniform uint) 0:105 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:105 Constant: 0:105 0 (const uint) 0:106 imageAtomicMin ( temp uint) 0:106 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:106 u2: direct index for structure ( uniform 2-component vector of uint) 0:106 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:106 Constant: 0:106 1 (const uint) 0:106 u1: direct index for structure ( uniform uint) 0:106 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:106 Constant: 0:106 0 (const uint) 0:107 move second child to first child ( temp uint) 0:107 'out_u1' ( temp uint) 0:107 imageAtomicMin ( temp uint) 0:107 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:107 u2: direct index for structure ( uniform 2-component vector of uint) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:107 Constant: 0:107 1 (const uint) 0:107 u1: direct index for structure ( uniform uint) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:107 Constant: 0:107 0 (const uint) 0:108 imageAtomicOr ( temp uint) 0:108 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:108 u2: direct index for structure ( uniform 2-component vector of uint) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:108 Constant: 0:108 1 (const uint) 0:108 u1: direct index for structure ( uniform uint) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:108 Constant: 0:108 0 (const uint) 0:109 move second child to first child ( temp uint) 0:109 'out_u1' ( temp uint) 0:109 imageAtomicOr ( temp uint) 0:109 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:109 u2: direct index for structure ( uniform 2-component vector of uint) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:109 Constant: 0:109 1 (const uint) 0:109 u1: direct index for structure ( uniform uint) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:109 Constant: 0:109 0 (const uint) 0:110 imageAtomicXor ( temp uint) 0:110 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:110 u2: direct index for structure ( uniform 2-component vector of uint) 0:110 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:110 Constant: 0:110 1 (const uint) 0:110 u1: direct index for structure ( uniform uint) 0:110 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:110 Constant: 0:110 0 (const uint) 0:111 move second child to first child ( temp uint) 0:111 'out_u1' ( temp uint) 0:111 imageAtomicXor ( temp uint) 0:111 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:111 u2: direct index for structure ( uniform 2-component vector of uint) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:111 Constant: 0:111 1 (const uint) 0:111 u1: direct index for structure ( uniform uint) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:111 Constant: 0:111 0 (const uint) 0:114 imageAtomicAdd ( temp int) 0:114 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:114 i3: direct index for structure ( uniform 3-component vector of int) 0:114 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:114 Constant: 0:114 7 (const uint) 0:114 i1b: direct index for structure ( uniform int) 0:114 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:114 Constant: 0:114 8 (const uint) 0:115 move second child to first child ( temp int) 0:115 'out_i1' ( temp int) 0:115 imageAtomicAdd ( temp int) 0:115 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:115 i3: direct index for structure ( uniform 3-component vector of int) 0:115 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:115 Constant: 0:115 7 (const uint) 0:115 i1: direct index for structure ( uniform int) 0:115 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:115 Constant: 0:115 5 (const uint) 0:116 imageAtomicAnd ( temp int) 0:116 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:116 i3: direct index for structure ( uniform 3-component vector of int) 0:116 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:116 Constant: 0:116 7 (const uint) 0:116 i1b: direct index for structure ( uniform int) 0:116 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:116 Constant: 0:116 8 (const uint) 0:117 move second child to first child ( temp int) 0:117 'out_i1' ( temp int) 0:117 imageAtomicAnd ( temp int) 0:117 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:117 i3: direct index for structure ( uniform 3-component vector of int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:117 Constant: 0:117 7 (const uint) 0:117 i1: direct index for structure ( uniform int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:117 Constant: 0:117 5 (const uint) 0:118 move second child to first child ( temp int) 0:118 'out_i1' ( temp int) 0:118 imageAtomicCompSwap ( temp int) 0:118 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:118 i3: direct index for structure ( uniform 3-component vector of int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:118 Constant: 0:118 7 (const uint) 0:118 i1b: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:118 Constant: 0:118 8 (const uint) 0:118 i1c: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:118 Constant: 0:118 9 (const uint) 0:119 move second child to first child ( temp int) 0:119 'out_i1' ( temp int) 0:119 imageAtomicExchange ( temp int) 0:119 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:119 i3: direct index for structure ( uniform 3-component vector of int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:119 Constant: 0:119 7 (const uint) 0:119 i1: direct index for structure ( uniform int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:119 Constant: 0:119 5 (const uint) 0:120 imageAtomicMax ( temp int) 0:120 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:120 i3: direct index for structure ( uniform 3-component vector of int) 0:120 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:120 Constant: 0:120 7 (const uint) 0:120 i1b: direct index for structure ( uniform int) 0:120 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:120 Constant: 0:120 8 (const uint) 0:121 move second child to first child ( temp int) 0:121 'out_i1' ( temp int) 0:121 imageAtomicMax ( temp int) 0:121 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:121 i3: direct index for structure ( uniform 3-component vector of int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:121 Constant: 0:121 7 (const uint) 0:121 i1: direct index for structure ( uniform int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:121 Constant: 0:121 5 (const uint) 0:122 imageAtomicMin ( temp int) 0:122 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:122 i3: direct index for structure ( uniform 3-component vector of int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:122 Constant: 0:122 7 (const uint) 0:122 i1b: direct index for structure ( uniform int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:122 Constant: 0:122 8 (const uint) 0:123 move second child to first child ( temp int) 0:123 'out_i1' ( temp int) 0:123 imageAtomicMin ( temp int) 0:123 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:123 i3: direct index for structure ( uniform 3-component vector of int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:123 Constant: 0:123 7 (const uint) 0:123 i1: direct index for structure ( uniform int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:123 Constant: 0:123 5 (const uint) 0:124 imageAtomicOr ( temp int) 0:124 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:124 i3: direct index for structure ( uniform 3-component vector of int) 0:124 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:124 Constant: 0:124 7 (const uint) 0:124 i1b: direct index for structure ( uniform int) 0:124 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:124 Constant: 0:124 8 (const uint) 0:125 move second child to first child ( temp int) 0:125 'out_i1' ( temp int) 0:125 imageAtomicOr ( temp int) 0:125 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:125 i3: direct index for structure ( uniform 3-component vector of int) 0:125 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:125 Constant: 0:125 7 (const uint) 0:125 i1: direct index for structure ( uniform int) 0:125 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:125 Constant: 0:125 5 (const uint) 0:126 imageAtomicXor ( temp int) 0:126 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:126 i3: direct index for structure ( uniform 3-component vector of int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:126 Constant: 0:126 7 (const uint) 0:126 i1b: direct index for structure ( uniform int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:126 Constant: 0:126 8 (const uint) 0:127 move second child to first child ( temp int) 0:127 'out_i1' ( temp int) 0:127 imageAtomicXor ( temp int) 0:127 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:127 i3: direct index for structure ( uniform 3-component vector of int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:127 Constant: 0:127 7 (const uint) 0:127 i1: direct index for structure ( uniform int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:127 Constant: 0:127 5 (const uint) 0:130 imageAtomicAdd ( temp uint) 0:130 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:130 u3: direct index for structure ( uniform 3-component vector of uint) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:130 Constant: 0:130 2 (const uint) 0:130 u1: direct index for structure ( uniform uint) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:130 Constant: 0:130 0 (const uint) 0:131 move second child to first child ( temp uint) 0:131 'out_u1' ( temp uint) 0:131 imageAtomicAdd ( temp uint) 0:131 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:131 u3: direct index for structure ( uniform 3-component vector of uint) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:131 Constant: 0:131 2 (const uint) 0:131 u1: direct index for structure ( uniform uint) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:131 Constant: 0:131 0 (const uint) 0:132 imageAtomicAnd ( temp uint) 0:132 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:132 u3: direct index for structure ( uniform 3-component vector of uint) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:132 Constant: 0:132 2 (const uint) 0:132 u1: direct index for structure ( uniform uint) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:132 Constant: 0:132 0 (const uint) 0:133 move second child to first child ( temp uint) 0:133 'out_u1' ( temp uint) 0:133 imageAtomicAnd ( temp uint) 0:133 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:133 u3: direct index for structure ( uniform 3-component vector of uint) 0:133 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:133 Constant: 0:133 2 (const uint) 0:133 u1: direct index for structure ( uniform uint) 0:133 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:133 Constant: 0:133 0 (const uint) 0:134 move second child to first child ( temp uint) 0:134 'out_u1' ( temp uint) 0:134 imageAtomicCompSwap ( temp uint) 0:134 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:134 u3: direct index for structure ( uniform 3-component vector of uint) 0:134 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:134 Constant: 0:134 2 (const uint) 0:134 u1b: direct index for structure ( uniform uint) 0:134 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:134 Constant: 0:134 3 (const uint) 0:134 u1c: direct index for structure ( uniform uint) 0:134 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:134 Constant: 0:134 4 (const uint) 0:135 move second child to first child ( temp uint) 0:135 'out_u1' ( temp uint) 0:135 imageAtomicExchange ( temp uint) 0:135 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:135 u3: direct index for structure ( uniform 3-component vector of uint) 0:135 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:135 Constant: 0:135 2 (const uint) 0:135 u1: direct index for structure ( uniform uint) 0:135 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:135 Constant: 0:135 0 (const uint) 0:136 imageAtomicMax ( temp uint) 0:136 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:136 u3: direct index for structure ( uniform 3-component vector of uint) 0:136 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:136 Constant: 0:136 2 (const uint) 0:136 u1: direct index for structure ( uniform uint) 0:136 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:136 Constant: 0:136 0 (const uint) 0:137 move second child to first child ( temp uint) 0:137 'out_u1' ( temp uint) 0:137 imageAtomicMax ( temp uint) 0:137 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:137 u3: direct index for structure ( uniform 3-component vector of uint) 0:137 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:137 Constant: 0:137 2 (const uint) 0:137 u1: direct index for structure ( uniform uint) 0:137 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:137 Constant: 0:137 0 (const uint) 0:138 imageAtomicMin ( temp uint) 0:138 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:138 u3: direct index for structure ( uniform 3-component vector of uint) 0:138 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:138 Constant: 0:138 2 (const uint) 0:138 u1: direct index for structure ( uniform uint) 0:138 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:138 Constant: 0:138 0 (const uint) 0:139 move second child to first child ( temp uint) 0:139 'out_u1' ( temp uint) 0:139 imageAtomicMin ( temp uint) 0:139 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:139 u3: direct index for structure ( uniform 3-component vector of uint) 0:139 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:139 Constant: 0:139 2 (const uint) 0:139 u1: direct index for structure ( uniform uint) 0:139 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:139 Constant: 0:139 0 (const uint) 0:140 imageAtomicOr ( temp uint) 0:140 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:140 u3: direct index for structure ( uniform 3-component vector of uint) 0:140 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:140 Constant: 0:140 2 (const uint) 0:140 u1: direct index for structure ( uniform uint) 0:140 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:140 Constant: 0:140 0 (const uint) 0:141 move second child to first child ( temp uint) 0:141 'out_u1' ( temp uint) 0:141 imageAtomicOr ( temp uint) 0:141 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:141 u3: direct index for structure ( uniform 3-component vector of uint) 0:141 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:141 Constant: 0:141 2 (const uint) 0:141 u1: direct index for structure ( uniform uint) 0:141 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:141 Constant: 0:141 0 (const uint) 0:142 imageAtomicXor ( temp uint) 0:142 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:142 u3: direct index for structure ( uniform 3-component vector of uint) 0:142 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:142 Constant: 0:142 2 (const uint) 0:142 u1: direct index for structure ( uniform uint) 0:142 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:142 Constant: 0:142 0 (const uint) 0:143 move second child to first child ( temp uint) 0:143 'out_u1' ( temp uint) 0:143 imageAtomicXor ( temp uint) 0:143 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:143 u3: direct index for structure ( uniform 3-component vector of uint) 0:143 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:143 Constant: 0:143 2 (const uint) 0:143 u1: direct index for structure ( uniform uint) 0:143 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:143 Constant: 0:143 0 (const uint) 0:146 imageAtomicAdd ( temp int) 0:146 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:146 i2: direct index for structure ( uniform 2-component vector of int) 0:146 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:146 Constant: 0:146 6 (const uint) 0:146 i1b: direct index for structure ( uniform int) 0:146 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:146 Constant: 0:146 8 (const uint) 0:147 move second child to first child ( temp int) 0:147 'out_i1' ( temp int) 0:147 imageAtomicAdd ( temp int) 0:147 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:147 i2: direct index for structure ( uniform 2-component vector of int) 0:147 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:147 Constant: 0:147 6 (const uint) 0:147 i1: direct index for structure ( uniform int) 0:147 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:147 Constant: 0:147 5 (const uint) 0:148 imageAtomicAnd ( temp int) 0:148 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:148 i2: direct index for structure ( uniform 2-component vector of int) 0:148 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:148 Constant: 0:148 6 (const uint) 0:148 i1b: direct index for structure ( uniform int) 0:148 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:148 Constant: 0:148 8 (const uint) 0:149 move second child to first child ( temp int) 0:149 'out_i1' ( temp int) 0:149 imageAtomicAnd ( temp int) 0:149 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:149 i2: direct index for structure ( uniform 2-component vector of int) 0:149 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:149 Constant: 0:149 6 (const uint) 0:149 i1: direct index for structure ( uniform int) 0:149 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:149 Constant: 0:149 5 (const uint) 0:150 move second child to first child ( temp int) 0:150 'out_i1' ( temp int) 0:150 imageAtomicCompSwap ( temp int) 0:150 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:150 i2: direct index for structure ( uniform 2-component vector of int) 0:150 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:150 Constant: 0:150 6 (const uint) 0:150 i1b: direct index for structure ( uniform int) 0:150 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:150 Constant: 0:150 8 (const uint) 0:150 i1c: direct index for structure ( uniform int) 0:150 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:150 Constant: 0:150 9 (const uint) 0:151 move second child to first child ( temp int) 0:151 'out_i1' ( temp int) 0:151 imageAtomicExchange ( temp int) 0:151 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:151 i2: direct index for structure ( uniform 2-component vector of int) 0:151 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:151 Constant: 0:151 6 (const uint) 0:151 i1: direct index for structure ( uniform int) 0:151 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:151 Constant: 0:151 5 (const uint) 0:152 imageAtomicMax ( temp int) 0:152 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:152 i2: direct index for structure ( uniform 2-component vector of int) 0:152 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:152 Constant: 0:152 6 (const uint) 0:152 i1b: direct index for structure ( uniform int) 0:152 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:152 Constant: 0:152 8 (const uint) 0:153 move second child to first child ( temp int) 0:153 'out_i1' ( temp int) 0:153 imageAtomicMax ( temp int) 0:153 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:153 i2: direct index for structure ( uniform 2-component vector of int) 0:153 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:153 Constant: 0:153 6 (const uint) 0:153 i1: direct index for structure ( uniform int) 0:153 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:153 Constant: 0:153 5 (const uint) 0:154 imageAtomicMin ( temp int) 0:154 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:154 i2: direct index for structure ( uniform 2-component vector of int) 0:154 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:154 Constant: 0:154 6 (const uint) 0:154 i1b: direct index for structure ( uniform int) 0:154 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:154 Constant: 0:154 8 (const uint) 0:155 move second child to first child ( temp int) 0:155 'out_i1' ( temp int) 0:155 imageAtomicMin ( temp int) 0:155 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:155 i2: direct index for structure ( uniform 2-component vector of int) 0:155 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:155 Constant: 0:155 6 (const uint) 0:155 i1: direct index for structure ( uniform int) 0:155 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:155 Constant: 0:155 5 (const uint) 0:156 imageAtomicOr ( temp int) 0:156 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:156 i2: direct index for structure ( uniform 2-component vector of int) 0:156 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:156 Constant: 0:156 6 (const uint) 0:156 i1b: direct index for structure ( uniform int) 0:156 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:156 Constant: 0:156 8 (const uint) 0:157 move second child to first child ( temp int) 0:157 'out_i1' ( temp int) 0:157 imageAtomicOr ( temp int) 0:157 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:157 i2: direct index for structure ( uniform 2-component vector of int) 0:157 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:157 Constant: 0:157 6 (const uint) 0:157 i1: direct index for structure ( uniform int) 0:157 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:157 Constant: 0:157 5 (const uint) 0:158 imageAtomicXor ( temp int) 0:158 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:158 i2: direct index for structure ( uniform 2-component vector of int) 0:158 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:158 Constant: 0:158 6 (const uint) 0:158 i1b: direct index for structure ( uniform int) 0:158 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:158 Constant: 0:158 8 (const uint) 0:159 move second child to first child ( temp int) 0:159 'out_i1' ( temp int) 0:159 imageAtomicXor ( temp int) 0:159 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:159 i2: direct index for structure ( uniform 2-component vector of int) 0:159 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:159 Constant: 0:159 6 (const uint) 0:159 i1: direct index for structure ( uniform int) 0:159 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:159 Constant: 0:159 5 (const uint) 0:162 imageAtomicAdd ( temp uint) 0:162 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:162 u2: direct index for structure ( uniform 2-component vector of uint) 0:162 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:162 Constant: 0:162 1 (const uint) 0:162 u1: direct index for structure ( uniform uint) 0:162 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:162 Constant: 0:162 0 (const uint) 0:163 move second child to first child ( temp uint) 0:163 'out_u1' ( temp uint) 0:163 imageAtomicAdd ( temp uint) 0:163 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:163 u2: direct index for structure ( uniform 2-component vector of uint) 0:163 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:163 Constant: 0:163 1 (const uint) 0:163 u1: direct index for structure ( uniform uint) 0:163 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:163 Constant: 0:163 0 (const uint) 0:164 imageAtomicAnd ( temp uint) 0:164 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:164 u2: direct index for structure ( uniform 2-component vector of uint) 0:164 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:164 Constant: 0:164 1 (const uint) 0:164 u1: direct index for structure ( uniform uint) 0:164 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:164 Constant: 0:164 0 (const uint) 0:165 move second child to first child ( temp uint) 0:165 'out_u1' ( temp uint) 0:165 imageAtomicAnd ( temp uint) 0:165 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:165 u2: direct index for structure ( uniform 2-component vector of uint) 0:165 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:165 Constant: 0:165 1 (const uint) 0:165 u1: direct index for structure ( uniform uint) 0:165 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:165 Constant: 0:165 0 (const uint) 0:166 move second child to first child ( temp uint) 0:166 'out_u1' ( temp uint) 0:166 imageAtomicCompSwap ( temp uint) 0:166 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:166 u2: direct index for structure ( uniform 2-component vector of uint) 0:166 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:166 Constant: 0:166 1 (const uint) 0:166 u1b: direct index for structure ( uniform uint) 0:166 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:166 Constant: 0:166 3 (const uint) 0:166 u1c: direct index for structure ( uniform uint) 0:166 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:166 Constant: 0:166 4 (const uint) 0:167 move second child to first child ( temp uint) 0:167 'out_u1' ( temp uint) 0:167 imageAtomicExchange ( temp uint) 0:167 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:167 u2: direct index for structure ( uniform 2-component vector of uint) 0:167 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:167 Constant: 0:167 1 (const uint) 0:167 u1: direct index for structure ( uniform uint) 0:167 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:167 Constant: 0:167 0 (const uint) 0:168 imageAtomicMax ( temp uint) 0:168 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:168 u2: direct index for structure ( uniform 2-component vector of uint) 0:168 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:168 Constant: 0:168 1 (const uint) 0:168 u1: direct index for structure ( uniform uint) 0:168 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:168 Constant: 0:168 0 (const uint) 0:169 move second child to first child ( temp uint) 0:169 'out_u1' ( temp uint) 0:169 imageAtomicMax ( temp uint) 0:169 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:169 u2: direct index for structure ( uniform 2-component vector of uint) 0:169 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:169 Constant: 0:169 1 (const uint) 0:169 u1: direct index for structure ( uniform uint) 0:169 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:169 Constant: 0:169 0 (const uint) 0:170 imageAtomicMin ( temp uint) 0:170 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:170 u2: direct index for structure ( uniform 2-component vector of uint) 0:170 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:170 Constant: 0:170 1 (const uint) 0:170 u1: direct index for structure ( uniform uint) 0:170 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:170 Constant: 0:170 0 (const uint) 0:171 move second child to first child ( temp uint) 0:171 'out_u1' ( temp uint) 0:171 imageAtomicMin ( temp uint) 0:171 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:171 u2: direct index for structure ( uniform 2-component vector of uint) 0:171 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:171 Constant: 0:171 1 (const uint) 0:171 u1: direct index for structure ( uniform uint) 0:171 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:171 Constant: 0:171 0 (const uint) 0:172 imageAtomicOr ( temp uint) 0:172 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:172 u2: direct index for structure ( uniform 2-component vector of uint) 0:172 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:172 Constant: 0:172 1 (const uint) 0:172 u1: direct index for structure ( uniform uint) 0:172 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:172 Constant: 0:172 0 (const uint) 0:173 move second child to first child ( temp uint) 0:173 'out_u1' ( temp uint) 0:173 imageAtomicOr ( temp uint) 0:173 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:173 u2: direct index for structure ( uniform 2-component vector of uint) 0:173 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:173 Constant: 0:173 1 (const uint) 0:173 u1: direct index for structure ( uniform uint) 0:173 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:173 Constant: 0:173 0 (const uint) 0:174 imageAtomicXor ( temp uint) 0:174 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:174 u2: direct index for structure ( uniform 2-component vector of uint) 0:174 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:174 Constant: 0:174 1 (const uint) 0:174 u1: direct index for structure ( uniform uint) 0:174 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:174 Constant: 0:174 0 (const uint) 0:175 move second child to first child ( temp uint) 0:175 'out_u1' ( temp uint) 0:175 imageAtomicXor ( temp uint) 0:175 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:175 u2: direct index for structure ( uniform 2-component vector of uint) 0:175 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:175 Constant: 0:175 1 (const uint) 0:175 u1: direct index for structure ( uniform uint) 0:175 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:175 Constant: 0:175 0 (const uint) 0:178 imageAtomicAdd ( temp int) 0:178 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:178 i2: direct index for structure ( uniform 2-component vector of int) 0:178 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:178 Constant: 0:178 6 (const uint) 0:178 i1b: direct index for structure ( uniform int) 0:178 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:178 Constant: 0:178 8 (const uint) 0:179 move second child to first child ( temp int) 0:179 'out_i1' ( temp int) 0:179 imageAtomicAdd ( temp int) 0:179 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:179 i2: direct index for structure ( uniform 2-component vector of int) 0:179 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:179 Constant: 0:179 6 (const uint) 0:179 i1: direct index for structure ( uniform int) 0:179 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:179 Constant: 0:179 5 (const uint) 0:180 imageAtomicAnd ( temp int) 0:180 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:180 i2: direct index for structure ( uniform 2-component vector of int) 0:180 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:180 Constant: 0:180 6 (const uint) 0:180 i1b: direct index for structure ( uniform int) 0:180 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:180 Constant: 0:180 8 (const uint) 0:181 move second child to first child ( temp int) 0:181 'out_i1' ( temp int) 0:181 imageAtomicAnd ( temp int) 0:181 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:181 i2: direct index for structure ( uniform 2-component vector of int) 0:181 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:181 Constant: 0:181 6 (const uint) 0:181 i1: direct index for structure ( uniform int) 0:181 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:181 Constant: 0:181 5 (const uint) 0:182 move second child to first child ( temp int) 0:182 'out_i1' ( temp int) 0:182 imageAtomicCompSwap ( temp int) 0:182 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:182 i2: direct index for structure ( uniform 2-component vector of int) 0:182 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:182 Constant: 0:182 6 (const uint) 0:182 i1b: direct index for structure ( uniform int) 0:182 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:182 Constant: 0:182 8 (const uint) 0:182 i1c: direct index for structure ( uniform int) 0:182 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:182 Constant: 0:182 9 (const uint) 0:183 move second child to first child ( temp int) 0:183 'out_i1' ( temp int) 0:183 imageAtomicExchange ( temp int) 0:183 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:183 i2: direct index for structure ( uniform 2-component vector of int) 0:183 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:183 Constant: 0:183 6 (const uint) 0:183 i1: direct index for structure ( uniform int) 0:183 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:183 Constant: 0:183 5 (const uint) 0:184 imageAtomicMax ( temp int) 0:184 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:184 i2: direct index for structure ( uniform 2-component vector of int) 0:184 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:184 Constant: 0:184 6 (const uint) 0:184 i1b: direct index for structure ( uniform int) 0:184 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:184 Constant: 0:184 8 (const uint) 0:185 move second child to first child ( temp int) 0:185 'out_i1' ( temp int) 0:185 imageAtomicMax ( temp int) 0:185 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:185 i2: direct index for structure ( uniform 2-component vector of int) 0:185 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:185 Constant: 0:185 6 (const uint) 0:185 i1: direct index for structure ( uniform int) 0:185 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:185 Constant: 0:185 5 (const uint) 0:186 imageAtomicMin ( temp int) 0:186 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:186 i2: direct index for structure ( uniform 2-component vector of int) 0:186 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:186 Constant: 0:186 6 (const uint) 0:186 i1b: direct index for structure ( uniform int) 0:186 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:186 Constant: 0:186 8 (const uint) 0:187 move second child to first child ( temp int) 0:187 'out_i1' ( temp int) 0:187 imageAtomicMin ( temp int) 0:187 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:187 i2: direct index for structure ( uniform 2-component vector of int) 0:187 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:187 Constant: 0:187 6 (const uint) 0:187 i1: direct index for structure ( uniform int) 0:187 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:187 Constant: 0:187 5 (const uint) 0:188 imageAtomicOr ( temp int) 0:188 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:188 i2: direct index for structure ( uniform 2-component vector of int) 0:188 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:188 Constant: 0:188 6 (const uint) 0:188 i1b: direct index for structure ( uniform int) 0:188 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:188 Constant: 0:188 8 (const uint) 0:189 move second child to first child ( temp int) 0:189 'out_i1' ( temp int) 0:189 imageAtomicOr ( temp int) 0:189 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:189 i2: direct index for structure ( uniform 2-component vector of int) 0:189 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:189 Constant: 0:189 6 (const uint) 0:189 i1: direct index for structure ( uniform int) 0:189 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:189 Constant: 0:189 5 (const uint) 0:190 imageAtomicXor ( temp int) 0:190 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:190 i2: direct index for structure ( uniform 2-component vector of int) 0:190 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:190 Constant: 0:190 6 (const uint) 0:190 i1b: direct index for structure ( uniform int) 0:190 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:190 Constant: 0:190 8 (const uint) 0:191 move second child to first child ( temp int) 0:191 'out_i1' ( temp int) 0:191 imageAtomicXor ( temp int) 0:191 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:191 i2: direct index for structure ( uniform 2-component vector of int) 0:191 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:191 Constant: 0:191 6 (const uint) 0:191 i1: direct index for structure ( uniform int) 0:191 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:191 Constant: 0:191 5 (const uint) 0:194 imageAtomicAdd ( temp uint) 0:194 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:194 u2: direct index for structure ( uniform 2-component vector of uint) 0:194 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:194 Constant: 0:194 1 (const uint) 0:194 u1: direct index for structure ( uniform uint) 0:194 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:194 Constant: 0:194 0 (const uint) 0:195 move second child to first child ( temp uint) 0:195 'out_u1' ( temp uint) 0:195 imageAtomicAdd ( temp uint) 0:195 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:195 u2: direct index for structure ( uniform 2-component vector of uint) 0:195 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:195 Constant: 0:195 1 (const uint) 0:195 u1: direct index for structure ( uniform uint) 0:195 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:195 Constant: 0:195 0 (const uint) 0:196 imageAtomicAnd ( temp uint) 0:196 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:196 u2: direct index for structure ( uniform 2-component vector of uint) 0:196 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:196 Constant: 0:196 1 (const uint) 0:196 u1: direct index for structure ( uniform uint) 0:196 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:196 Constant: 0:196 0 (const uint) 0:197 move second child to first child ( temp uint) 0:197 'out_u1' ( temp uint) 0:197 imageAtomicAnd ( temp uint) 0:197 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:197 u2: direct index for structure ( uniform 2-component vector of uint) 0:197 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:197 Constant: 0:197 1 (const uint) 0:197 u1: direct index for structure ( uniform uint) 0:197 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:197 Constant: 0:197 0 (const uint) 0:198 move second child to first child ( temp uint) 0:198 'out_u1' ( temp uint) 0:198 imageAtomicCompSwap ( temp uint) 0:198 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:198 u2: direct index for structure ( uniform 2-component vector of uint) 0:198 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:198 Constant: 0:198 1 (const uint) 0:198 u1b: direct index for structure ( uniform uint) 0:198 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:198 Constant: 0:198 3 (const uint) 0:198 u1c: direct index for structure ( uniform uint) 0:198 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:198 Constant: 0:198 4 (const uint) 0:199 move second child to first child ( temp uint) 0:199 'out_u1' ( temp uint) 0:199 imageAtomicExchange ( temp uint) 0:199 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:199 u2: direct index for structure ( uniform 2-component vector of uint) 0:199 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:199 Constant: 0:199 1 (const uint) 0:199 u1: direct index for structure ( uniform uint) 0:199 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:199 Constant: 0:199 0 (const uint) 0:200 imageAtomicMax ( temp uint) 0:200 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:200 u2: direct index for structure ( uniform 2-component vector of uint) 0:200 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:200 Constant: 0:200 1 (const uint) 0:200 u1: direct index for structure ( uniform uint) 0:200 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:200 Constant: 0:200 0 (const uint) 0:201 move second child to first child ( temp uint) 0:201 'out_u1' ( temp uint) 0:201 imageAtomicMax ( temp uint) 0:201 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:201 u2: direct index for structure ( uniform 2-component vector of uint) 0:201 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:201 Constant: 0:201 1 (const uint) 0:201 u1: direct index for structure ( uniform uint) 0:201 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:201 Constant: 0:201 0 (const uint) 0:202 imageAtomicMin ( temp uint) 0:202 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:202 u2: direct index for structure ( uniform 2-component vector of uint) 0:202 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:202 Constant: 0:202 1 (const uint) 0:202 u1: direct index for structure ( uniform uint) 0:202 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:202 Constant: 0:202 0 (const uint) 0:203 move second child to first child ( temp uint) 0:203 'out_u1' ( temp uint) 0:203 imageAtomicMin ( temp uint) 0:203 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:203 u2: direct index for structure ( uniform 2-component vector of uint) 0:203 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:203 Constant: 0:203 1 (const uint) 0:203 u1: direct index for structure ( uniform uint) 0:203 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:203 Constant: 0:203 0 (const uint) 0:204 imageAtomicOr ( temp uint) 0:204 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:204 u2: direct index for structure ( uniform 2-component vector of uint) 0:204 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:204 Constant: 0:204 1 (const uint) 0:204 u1: direct index for structure ( uniform uint) 0:204 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:204 Constant: 0:204 0 (const uint) 0:205 move second child to first child ( temp uint) 0:205 'out_u1' ( temp uint) 0:205 imageAtomicOr ( temp uint) 0:205 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:205 u2: direct index for structure ( uniform 2-component vector of uint) 0:205 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:205 Constant: 0:205 1 (const uint) 0:205 u1: direct index for structure ( uniform uint) 0:205 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:205 Constant: 0:205 0 (const uint) 0:206 imageAtomicXor ( temp uint) 0:206 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:206 u2: direct index for structure ( uniform 2-component vector of uint) 0:206 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:206 Constant: 0:206 1 (const uint) 0:206 u1: direct index for structure ( uniform uint) 0:206 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:206 Constant: 0:206 0 (const uint) 0:207 move second child to first child ( temp uint) 0:207 'out_u1' ( temp uint) 0:207 imageAtomicXor ( temp uint) 0:207 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:207 u2: direct index for structure ( uniform 2-component vector of uint) 0:207 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:207 Constant: 0:207 1 (const uint) 0:207 u1: direct index for structure ( uniform uint) 0:207 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:207 Constant: 0:207 0 (const uint) 0:210 imageAtomicAdd ( temp int) 0:210 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:210 i1: direct index for structure ( uniform int) 0:210 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:210 Constant: 0:210 5 (const uint) 0:210 i1b: direct index for structure ( uniform int) 0:210 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:210 Constant: 0:210 8 (const uint) 0:211 move second child to first child ( temp int) 0:211 'out_i1' ( temp int) 0:211 imageAtomicAdd ( temp int) 0:211 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:211 i1: direct index for structure ( uniform int) 0:211 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:211 Constant: 0:211 5 (const uint) 0:211 i1: direct index for structure ( uniform int) 0:211 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:211 Constant: 0:211 5 (const uint) 0:212 imageAtomicAnd ( temp int) 0:212 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:212 i1: direct index for structure ( uniform int) 0:212 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:212 Constant: 0:212 5 (const uint) 0:212 i1b: direct index for structure ( uniform int) 0:212 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:212 Constant: 0:212 8 (const uint) 0:213 move second child to first child ( temp int) 0:213 'out_i1' ( temp int) 0:213 imageAtomicAnd ( temp int) 0:213 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:213 i1: direct index for structure ( uniform int) 0:213 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:213 Constant: 0:213 5 (const uint) 0:213 i1: direct index for structure ( uniform int) 0:213 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:213 Constant: 0:213 5 (const uint) 0:214 move second child to first child ( temp int) 0:214 'out_i1' ( temp int) 0:214 imageAtomicCompSwap ( temp int) 0:214 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:214 i1: direct index for structure ( uniform int) 0:214 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:214 Constant: 0:214 5 (const uint) 0:214 i1b: direct index for structure ( uniform int) 0:214 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:214 Constant: 0:214 8 (const uint) 0:214 i1c: direct index for structure ( uniform int) 0:214 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:214 Constant: 0:214 9 (const uint) 0:215 move second child to first child ( temp int) 0:215 'out_i1' ( temp int) 0:215 imageAtomicExchange ( temp int) 0:215 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:215 i1: direct index for structure ( uniform int) 0:215 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:215 Constant: 0:215 5 (const uint) 0:215 i1: direct index for structure ( uniform int) 0:215 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:215 Constant: 0:215 5 (const uint) 0:216 imageAtomicMax ( temp int) 0:216 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:216 i1: direct index for structure ( uniform int) 0:216 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:216 Constant: 0:216 5 (const uint) 0:216 i1b: direct index for structure ( uniform int) 0:216 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:216 Constant: 0:216 8 (const uint) 0:217 move second child to first child ( temp int) 0:217 'out_i1' ( temp int) 0:217 imageAtomicMax ( temp int) 0:217 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:217 i1: direct index for structure ( uniform int) 0:217 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:217 Constant: 0:217 5 (const uint) 0:217 i1: direct index for structure ( uniform int) 0:217 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:217 Constant: 0:217 5 (const uint) 0:218 imageAtomicMin ( temp int) 0:218 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:218 i1: direct index for structure ( uniform int) 0:218 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:218 Constant: 0:218 5 (const uint) 0:218 i1b: direct index for structure ( uniform int) 0:218 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:218 Constant: 0:218 8 (const uint) 0:219 move second child to first child ( temp int) 0:219 'out_i1' ( temp int) 0:219 imageAtomicMin ( temp int) 0:219 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:219 i1: direct index for structure ( uniform int) 0:219 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:219 Constant: 0:219 5 (const uint) 0:219 i1: direct index for structure ( uniform int) 0:219 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:219 Constant: 0:219 5 (const uint) 0:220 imageAtomicOr ( temp int) 0:220 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:220 i1: direct index for structure ( uniform int) 0:220 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:220 Constant: 0:220 5 (const uint) 0:220 i1b: direct index for structure ( uniform int) 0:220 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:220 Constant: 0:220 8 (const uint) 0:221 move second child to first child ( temp int) 0:221 'out_i1' ( temp int) 0:221 imageAtomicOr ( temp int) 0:221 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:221 i1: direct index for structure ( uniform int) 0:221 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:221 Constant: 0:221 5 (const uint) 0:221 i1: direct index for structure ( uniform int) 0:221 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:221 Constant: 0:221 5 (const uint) 0:222 imageAtomicXor ( temp int) 0:222 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:222 i1: direct index for structure ( uniform int) 0:222 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:222 Constant: 0:222 5 (const uint) 0:222 i1b: direct index for structure ( uniform int) 0:222 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:222 Constant: 0:222 8 (const uint) 0:223 move second child to first child ( temp int) 0:223 'out_i1' ( temp int) 0:223 imageAtomicXor ( temp int) 0:223 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:223 i1: direct index for structure ( uniform int) 0:223 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:223 Constant: 0:223 5 (const uint) 0:223 i1: direct index for structure ( uniform int) 0:223 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:223 Constant: 0:223 5 (const uint) 0:226 imageAtomicAdd ( temp uint) 0:226 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:226 u1: direct index for structure ( uniform uint) 0:226 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:226 Constant: 0:226 0 (const uint) 0:226 u1: direct index for structure ( uniform uint) 0:226 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:226 Constant: 0:226 0 (const uint) 0:227 move second child to first child ( temp uint) 0:227 'out_u1' ( temp uint) 0:227 imageAtomicAdd ( temp uint) 0:227 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:227 u1: direct index for structure ( uniform uint) 0:227 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:227 Constant: 0:227 0 (const uint) 0:227 u1: direct index for structure ( uniform uint) 0:227 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:227 Constant: 0:227 0 (const uint) 0:228 imageAtomicAnd ( temp uint) 0:228 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:228 u1: direct index for structure ( uniform uint) 0:228 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:228 Constant: 0:228 0 (const uint) 0:228 u1: direct index for structure ( uniform uint) 0:228 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:228 Constant: 0:228 0 (const uint) 0:229 move second child to first child ( temp uint) 0:229 'out_u1' ( temp uint) 0:229 imageAtomicAnd ( temp uint) 0:229 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:229 u1: direct index for structure ( uniform uint) 0:229 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:229 Constant: 0:229 0 (const uint) 0:229 u1: direct index for structure ( uniform uint) 0:229 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:229 Constant: 0:229 0 (const uint) 0:230 move second child to first child ( temp uint) 0:230 'out_u1' ( temp uint) 0:230 imageAtomicCompSwap ( temp uint) 0:230 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:230 u1: direct index for structure ( uniform uint) 0:230 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:230 Constant: 0:230 0 (const uint) 0:230 u1b: direct index for structure ( uniform uint) 0:230 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:230 Constant: 0:230 3 (const uint) 0:230 u1c: direct index for structure ( uniform uint) 0:230 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:230 Constant: 0:230 4 (const uint) 0:231 move second child to first child ( temp uint) 0:231 'out_u1' ( temp uint) 0:231 imageAtomicExchange ( temp uint) 0:231 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:231 u1: direct index for structure ( uniform uint) 0:231 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:231 Constant: 0:231 0 (const uint) 0:231 u1: direct index for structure ( uniform uint) 0:231 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:231 Constant: 0:231 0 (const uint) 0:232 imageAtomicMax ( temp uint) 0:232 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:232 u1: direct index for structure ( uniform uint) 0:232 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:232 Constant: 0:232 0 (const uint) 0:232 u1: direct index for structure ( uniform uint) 0:232 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:232 Constant: 0:232 0 (const uint) 0:233 move second child to first child ( temp uint) 0:233 'out_u1' ( temp uint) 0:233 imageAtomicMax ( temp uint) 0:233 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:233 u1: direct index for structure ( uniform uint) 0:233 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:233 Constant: 0:233 0 (const uint) 0:233 u1: direct index for structure ( uniform uint) 0:233 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:233 Constant: 0:233 0 (const uint) 0:234 imageAtomicMin ( temp uint) 0:234 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:234 u1: direct index for structure ( uniform uint) 0:234 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:234 Constant: 0:234 0 (const uint) 0:234 u1: direct index for structure ( uniform uint) 0:234 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:234 Constant: 0:234 0 (const uint) 0:235 move second child to first child ( temp uint) 0:235 'out_u1' ( temp uint) 0:235 imageAtomicMin ( temp uint) 0:235 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:235 u1: direct index for structure ( uniform uint) 0:235 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:235 Constant: 0:235 0 (const uint) 0:235 u1: direct index for structure ( uniform uint) 0:235 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:235 Constant: 0:235 0 (const uint) 0:236 imageAtomicOr ( temp uint) 0:236 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:236 u1: direct index for structure ( uniform uint) 0:236 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:236 Constant: 0:236 0 (const uint) 0:236 u1: direct index for structure ( uniform uint) 0:236 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:236 Constant: 0:236 0 (const uint) 0:237 move second child to first child ( temp uint) 0:237 'out_u1' ( temp uint) 0:237 imageAtomicOr ( temp uint) 0:237 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:237 u1: direct index for structure ( uniform uint) 0:237 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:237 Constant: 0:237 0 (const uint) 0:237 u1: direct index for structure ( uniform uint) 0:237 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:237 Constant: 0:237 0 (const uint) 0:238 imageAtomicXor ( temp uint) 0:238 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:238 u1: direct index for structure ( uniform uint) 0:238 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:238 Constant: 0:238 0 (const uint) 0:238 u1: direct index for structure ( uniform uint) 0:238 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:238 Constant: 0:238 0 (const uint) 0:239 move second child to first child ( temp uint) 0:239 'out_u1' ( temp uint) 0:239 imageAtomicXor ( temp uint) 0:239 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:239 u1: direct index for structure ( uniform uint) 0:239 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:239 Constant: 0:239 0 (const uint) 0:239 u1: direct index for structure ( uniform uint) 0:239 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:239 Constant: 0:239 0 (const uint) 0:242 move second child to first child ( temp 4-component vector of float) 0:242 Color: direct index for structure ( temp 4-component vector of float) 0:242 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:242 Constant: 0:242 0 (const int) 0:242 Constant: 0:242 1.000000 0:242 1.000000 0:242 1.000000 0:242 1.000000 0:243 Branch: Return with expression 0:243 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:45 Function Definition: main( ( temp void) 0:45 Function Parameters: 0:? Sequence 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:45 Constant: 0:45 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' ( uniform sampler) 0:? 'g_tTex1df1' (layout( r32f) uniform image1D) 0:? 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:? 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:? 'g_tTex2df1' (layout( r32f) uniform image2D) 0:? 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:? 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:? 'g_tTex3df1' (layout( r32f) uniform image3D) 0:? 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:? 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:? 'g_tTex1df1a' (layout( r32f) uniform image1DArray) 0:? 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:? 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:? 'g_tTex2df1a' (layout( r32f) uniform image2DArray) 0:? 'g_tTex2di1a' (layout( r32i) uniform iimage2DArray) 0:? 'g_tTex2du1a' (layout( r32ui) uniform uimage2DArray) 0:? 'g_tBuffF' (layout( r32f) uniform imageBuffer) 0:? 'g_tBuffI' (layout( r32i) uniform iimageBuffer) 0:? 'g_tBuffU' (layout( r32ui) uniform uimageBuffer) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 1147 Capability Shader Capability Image1D Capability ImageBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 1117 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 15 "g_tTex1di1" Name 21 "$Global" MemberName 21($Global) 0 "u1" MemberName 21($Global) 1 "u2" MemberName 21($Global) 2 "u3" MemberName 21($Global) 3 "u1b" MemberName 21($Global) 4 "u1c" MemberName 21($Global) 5 "i1" MemberName 21($Global) 6 "i2" MemberName 21($Global) 7 "i3" MemberName 21($Global) 8 "i1b" MemberName 21($Global) 9 "i1c" Name 23 "" Name 37 "out_i1" Name 121 "g_tTex1du1" Name 132 "out_u1" Name 217 "g_tTex2di1" Name 308 "g_tTex2du1" Name 399 "g_tTex3di1" Name 490 "g_tTex3du1" Name 581 "g_tTex1di1a" Name 670 "g_tTex1du1a" Name 931 "g_tBuffI" Name 1020 "g_tBuffU" Name 1108 "psout" Name 1117 "@entryPointOutput.Color" Name 1122 "g_sSamp" Name 1125 "g_tTex1df1" Name 1128 "g_tTex2df1" Name 1131 "g_tTex3df1" Name 1134 "g_tTex1df1a" Name 1137 "g_tTex2df1a" Name 1140 "g_tTex2di1a" Name 1143 "g_tTex2du1a" Name 1146 "g_tBuffF" Decorate 15(g_tTex1di1) Binding 0 Decorate 15(g_tTex1di1) DescriptorSet 0 Decorate 21($Global) Block MemberDecorate 21($Global) 0 Offset 0 MemberDecorate 21($Global) 1 Offset 8 MemberDecorate 21($Global) 2 Offset 16 MemberDecorate 21($Global) 3 Offset 28 MemberDecorate 21($Global) 4 Offset 32 MemberDecorate 21($Global) 5 Offset 36 MemberDecorate 21($Global) 6 Offset 40 MemberDecorate 21($Global) 7 Offset 48 MemberDecorate 21($Global) 8 Offset 60 MemberDecorate 21($Global) 9 Offset 64 Decorate 23 Binding 10 Decorate 23 DescriptorSet 0 Decorate 121(g_tTex1du1) Binding 1 Decorate 121(g_tTex1du1) DescriptorSet 0 Decorate 217(g_tTex2di1) Binding 2 Decorate 217(g_tTex2di1) DescriptorSet 0 Decorate 308(g_tTex2du1) Binding 3 Decorate 308(g_tTex2du1) DescriptorSet 0 Decorate 399(g_tTex3di1) Binding 4 Decorate 399(g_tTex3di1) DescriptorSet 0 Decorate 490(g_tTex3du1) Binding 5 Decorate 490(g_tTex3du1) DescriptorSet 0 Decorate 581(g_tTex1di1a) Binding 6 Decorate 581(g_tTex1di1a) DescriptorSet 0 Decorate 670(g_tTex1du1a) Binding 7 Decorate 670(g_tTex1du1a) DescriptorSet 0 Decorate 931(g_tBuffI) Binding 8 Decorate 931(g_tBuffI) DescriptorSet 0 Decorate 1020(g_tBuffU) Binding 9 Decorate 1020(g_tBuffU) DescriptorSet 0 Decorate 1117(@entryPointOutput.Color) Location 0 Decorate 1122(g_sSamp) Binding 0 Decorate 1122(g_sSamp) DescriptorSet 0 Decorate 1125(g_tTex1df1) Binding 0 Decorate 1125(g_tTex1df1) DescriptorSet 0 Decorate 1128(g_tTex2df1) Binding 0 Decorate 1128(g_tTex2df1) DescriptorSet 0 Decorate 1131(g_tTex3df1) Binding 0 Decorate 1131(g_tTex3df1) DescriptorSet 0 Decorate 1134(g_tTex1df1a) Binding 0 Decorate 1134(g_tTex1df1a) DescriptorSet 0 Decorate 1137(g_tTex2df1a) Binding 0 Decorate 1137(g_tTex2df1a) DescriptorSet 0 Decorate 1140(g_tTex2di1a) Binding 0 Decorate 1140(g_tTex2di1a) DescriptorSet 0 Decorate 1143(g_tTex2du1a) Binding 0 Decorate 1143(g_tTex2du1a) DescriptorSet 0 Decorate 1146(g_tBuffF) Binding 0 Decorate 1146(g_tBuffF) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 1 13: TypeImage 12(int) 1D nonsampled format:R32i 14: TypePointer UniformConstant 13 15(g_tTex1di1): 14(ptr) Variable UniformConstant 16: TypeInt 32 0 17: TypeVector 16(int) 2 18: TypeVector 16(int) 3 19: TypeVector 12(int) 2 20: TypeVector 12(int) 3 21($Global): TypeStruct 16(int) 17(ivec2) 18(ivec3) 16(int) 16(int) 12(int) 19(ivec2) 20(ivec3) 12(int) 12(int) 22: TypePointer Uniform 21($Global) 23: 22(ptr) Variable Uniform 24: 12(int) Constant 5 25: TypePointer Uniform 12(int) 28: 12(int) Constant 8 31: 16(int) Constant 0 32: TypePointer Image 12(int) 34: 16(int) Constant 1 36: TypePointer Function 12(int) 60: 12(int) Constant 9 119: TypeImage 16(int) 1D nonsampled format:R32ui 120: TypePointer UniformConstant 119 121(g_tTex1du1): 120(ptr) Variable UniformConstant 122: 12(int) Constant 0 123: TypePointer Uniform 16(int) 128: TypePointer Image 16(int) 131: TypePointer Function 16(int) 153: 12(int) Constant 3 156: 12(int) Constant 4 215: TypeImage 12(int) 2D nonsampled format:R32i 216: TypePointer UniformConstant 215 217(g_tTex2di1): 216(ptr) Variable UniformConstant 218: 12(int) Constant 6 219: TypePointer Uniform 19(ivec2) 306: TypeImage 16(int) 2D nonsampled format:R32ui 307: TypePointer UniformConstant 306 308(g_tTex2du1): 307(ptr) Variable UniformConstant 309: 12(int) Constant 1 310: TypePointer Uniform 17(ivec2) 397: TypeImage 12(int) 3D nonsampled format:R32i 398: TypePointer UniformConstant 397 399(g_tTex3di1): 398(ptr) Variable UniformConstant 400: 12(int) Constant 7 401: TypePointer Uniform 20(ivec3) 488: TypeImage 16(int) 3D nonsampled format:R32ui 489: TypePointer UniformConstant 488 490(g_tTex3du1): 489(ptr) Variable UniformConstant 491: 12(int) Constant 2 492: TypePointer Uniform 18(ivec3) 579: TypeImage 12(int) 1D array nonsampled format:R32i 580: TypePointer UniformConstant 579 581(g_tTex1di1a): 580(ptr) Variable UniformConstant 668: TypeImage 16(int) 1D array nonsampled format:R32ui 669: TypePointer UniformConstant 668 670(g_tTex1du1a): 669(ptr) Variable UniformConstant 929: TypeImage 12(int) Buffer nonsampled format:R32i 930: TypePointer UniformConstant 929 931(g_tBuffI): 930(ptr) Variable UniformConstant 1018: TypeImage 16(int) Buffer nonsampled format:R32ui 1019: TypePointer UniformConstant 1018 1020(g_tBuffU): 1019(ptr) Variable UniformConstant 1107: TypePointer Function 8(PS_OUTPUT) 1109: 6(float) Constant 1065353216 1110: 7(fvec4) ConstantComposite 1109 1109 1109 1109 1111: TypePointer Function 7(fvec4) 1116: TypePointer Output 7(fvec4) 1117(@entryPointOutput.Color): 1116(ptr) Variable Output 1120: TypeSampler 1121: TypePointer UniformConstant 1120 1122(g_sSamp): 1121(ptr) Variable UniformConstant 1123: TypeImage 6(float) 1D nonsampled format:R32f 1124: TypePointer UniformConstant 1123 1125(g_tTex1df1): 1124(ptr) Variable UniformConstant 1126: TypeImage 6(float) 2D nonsampled format:R32f 1127: TypePointer UniformConstant 1126 1128(g_tTex2df1): 1127(ptr) Variable UniformConstant 1129: TypeImage 6(float) 3D nonsampled format:R32f 1130: TypePointer UniformConstant 1129 1131(g_tTex3df1): 1130(ptr) Variable UniformConstant 1132: TypeImage 6(float) 1D array nonsampled format:R32f 1133: TypePointer UniformConstant 1132 1134(g_tTex1df1a): 1133(ptr) Variable UniformConstant 1135: TypeImage 6(float) 2D array nonsampled format:R32f 1136: TypePointer UniformConstant 1135 1137(g_tTex2df1a): 1136(ptr) Variable UniformConstant 1138: TypeImage 12(int) 2D array nonsampled format:R32i 1139: TypePointer UniformConstant 1138 1140(g_tTex2di1a): 1139(ptr) Variable UniformConstant 1141: TypeImage 16(int) 2D array nonsampled format:R32ui 1142: TypePointer UniformConstant 1141 1143(g_tTex2du1a): 1142(ptr) Variable UniformConstant 1144: TypeImage 6(float) Buffer nonsampled format:R32f 1145: TypePointer UniformConstant 1144 1146(g_tBuffF): 1145(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 1118:8(PS_OUTPUT) FunctionCall 10(@main() 1119: 7(fvec4) CompositeExtract 1118 0 Store 1117(@entryPointOutput.Color) 1119 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 37(out_i1): 36(ptr) Variable Function 132(out_u1): 131(ptr) Variable Function 1108(psout): 1107(ptr) Variable Function 26: 25(ptr) AccessChain 23 24 27: 12(int) Load 26 29: 25(ptr) AccessChain 23 28 30: 12(int) Load 29 33: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 27 31 35: 12(int) AtomicIAdd 33 34 31 30 38: 25(ptr) AccessChain 23 24 39: 12(int) Load 38 40: 25(ptr) AccessChain 23 24 41: 12(int) Load 40 42: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 39 31 43: 12(int) AtomicIAdd 42 34 31 41 Store 37(out_i1) 43 44: 25(ptr) AccessChain 23 24 45: 12(int) Load 44 46: 25(ptr) AccessChain 23 28 47: 12(int) Load 46 48: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 45 31 49: 12(int) AtomicAnd 48 34 31 47 50: 25(ptr) AccessChain 23 24 51: 12(int) Load 50 52: 25(ptr) AccessChain 23 24 53: 12(int) Load 52 54: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 51 31 55: 12(int) AtomicAnd 54 34 31 53 Store 37(out_i1) 55 56: 25(ptr) AccessChain 23 24 57: 12(int) Load 56 58: 25(ptr) AccessChain 23 28 59: 12(int) Load 58 61: 25(ptr) AccessChain 23 60 62: 12(int) Load 61 63: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 57 31 64: 12(int) AtomicCompareExchange 63 34 31 31 62 59 Store 37(out_i1) 64 65: 25(ptr) AccessChain 23 24 66: 12(int) Load 65 67: 25(ptr) AccessChain 23 24 68: 12(int) Load 67 69: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 66 31 70: 12(int) AtomicExchange 69 34 31 68 Store 37(out_i1) 70 71: 25(ptr) AccessChain 23 24 72: 12(int) Load 71 73: 25(ptr) AccessChain 23 28 74: 12(int) Load 73 75: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 72 31 76: 12(int) AtomicSMax 75 34 31 74 77: 25(ptr) AccessChain 23 24 78: 12(int) Load 77 79: 25(ptr) AccessChain 23 24 80: 12(int) Load 79 81: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 78 31 82: 12(int) AtomicSMax 81 34 31 80 Store 37(out_i1) 82 83: 25(ptr) AccessChain 23 24 84: 12(int) Load 83 85: 25(ptr) AccessChain 23 28 86: 12(int) Load 85 87: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 84 31 88: 12(int) AtomicSMin 87 34 31 86 89: 25(ptr) AccessChain 23 24 90: 12(int) Load 89 91: 25(ptr) AccessChain 23 24 92: 12(int) Load 91 93: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 90 31 94: 12(int) AtomicSMin 93 34 31 92 Store 37(out_i1) 94 95: 25(ptr) AccessChain 23 24 96: 12(int) Load 95 97: 25(ptr) AccessChain 23 28 98: 12(int) Load 97 99: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 96 31 100: 12(int) AtomicOr 99 34 31 98 101: 25(ptr) AccessChain 23 24 102: 12(int) Load 101 103: 25(ptr) AccessChain 23 24 104: 12(int) Load 103 105: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 102 31 106: 12(int) AtomicOr 105 34 31 104 Store 37(out_i1) 106 107: 25(ptr) AccessChain 23 24 108: 12(int) Load 107 109: 25(ptr) AccessChain 23 28 110: 12(int) Load 109 111: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 108 31 112: 12(int) AtomicXor 111 34 31 110 113: 25(ptr) AccessChain 23 24 114: 12(int) Load 113 115: 25(ptr) AccessChain 23 24 116: 12(int) Load 115 117: 32(ptr) ImageTexelPointer 15(g_tTex1di1) 114 31 118: 12(int) AtomicXor 117 34 31 116 Store 37(out_i1) 118 124: 123(ptr) AccessChain 23 122 125: 16(int) Load 124 126: 123(ptr) AccessChain 23 122 127: 16(int) Load 126 129: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 125 31 130: 16(int) AtomicIAdd 129 34 31 127 133: 123(ptr) AccessChain 23 122 134: 16(int) Load 133 135: 123(ptr) AccessChain 23 122 136: 16(int) Load 135 137: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 134 31 138: 16(int) AtomicIAdd 137 34 31 136 Store 132(out_u1) 138 139: 123(ptr) AccessChain 23 122 140: 16(int) Load 139 141: 123(ptr) AccessChain 23 122 142: 16(int) Load 141 143: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 140 31 144: 16(int) AtomicAnd 143 34 31 142 145: 123(ptr) AccessChain 23 122 146: 16(int) Load 145 147: 123(ptr) AccessChain 23 122 148: 16(int) Load 147 149: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 146 31 150: 16(int) AtomicAnd 149 34 31 148 Store 132(out_u1) 150 151: 123(ptr) AccessChain 23 122 152: 16(int) Load 151 154: 123(ptr) AccessChain 23 153 155: 16(int) Load 154 157: 123(ptr) AccessChain 23 156 158: 16(int) Load 157 159: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 152 31 160: 16(int) AtomicCompareExchange 159 34 31 31 158 155 Store 132(out_u1) 160 161: 123(ptr) AccessChain 23 122 162: 16(int) Load 161 163: 123(ptr) AccessChain 23 122 164: 16(int) Load 163 165: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 162 31 166: 16(int) AtomicExchange 165 34 31 164 Store 132(out_u1) 166 167: 123(ptr) AccessChain 23 122 168: 16(int) Load 167 169: 123(ptr) AccessChain 23 122 170: 16(int) Load 169 171: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 168 31 172: 16(int) AtomicUMax 171 34 31 170 173: 123(ptr) AccessChain 23 122 174: 16(int) Load 173 175: 123(ptr) AccessChain 23 122 176: 16(int) Load 175 177: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 174 31 178: 16(int) AtomicUMax 177 34 31 176 Store 132(out_u1) 178 179: 123(ptr) AccessChain 23 122 180: 16(int) Load 179 181: 123(ptr) AccessChain 23 122 182: 16(int) Load 181 183: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 180 31 184: 16(int) AtomicUMin 183 34 31 182 185: 123(ptr) AccessChain 23 122 186: 16(int) Load 185 187: 123(ptr) AccessChain 23 122 188: 16(int) Load 187 189: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 186 31 190: 16(int) AtomicUMin 189 34 31 188 Store 132(out_u1) 190 191: 123(ptr) AccessChain 23 122 192: 16(int) Load 191 193: 123(ptr) AccessChain 23 122 194: 16(int) Load 193 195: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 192 31 196: 16(int) AtomicOr 195 34 31 194 197: 123(ptr) AccessChain 23 122 198: 16(int) Load 197 199: 123(ptr) AccessChain 23 122 200: 16(int) Load 199 201: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 198 31 202: 16(int) AtomicOr 201 34 31 200 Store 132(out_u1) 202 203: 123(ptr) AccessChain 23 122 204: 16(int) Load 203 205: 123(ptr) AccessChain 23 122 206: 16(int) Load 205 207: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 204 31 208: 16(int) AtomicXor 207 34 31 206 209: 123(ptr) AccessChain 23 122 210: 16(int) Load 209 211: 123(ptr) AccessChain 23 122 212: 16(int) Load 211 213: 128(ptr) ImageTexelPointer 121(g_tTex1du1) 210 31 214: 16(int) AtomicXor 213 34 31 212 Store 132(out_u1) 214 220: 219(ptr) AccessChain 23 218 221: 19(ivec2) Load 220 222: 25(ptr) AccessChain 23 28 223: 12(int) Load 222 224: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 221 31 225: 12(int) AtomicIAdd 224 34 31 223 226: 219(ptr) AccessChain 23 218 227: 19(ivec2) Load 226 228: 25(ptr) AccessChain 23 24 229: 12(int) Load 228 230: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 227 31 231: 12(int) AtomicIAdd 230 34 31 229 Store 37(out_i1) 231 232: 219(ptr) AccessChain 23 218 233: 19(ivec2) Load 232 234: 25(ptr) AccessChain 23 28 235: 12(int) Load 234 236: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 233 31 237: 12(int) AtomicAnd 236 34 31 235 238: 219(ptr) AccessChain 23 218 239: 19(ivec2) Load 238 240: 25(ptr) AccessChain 23 24 241: 12(int) Load 240 242: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 239 31 243: 12(int) AtomicAnd 242 34 31 241 Store 37(out_i1) 243 244: 219(ptr) AccessChain 23 218 245: 19(ivec2) Load 244 246: 25(ptr) AccessChain 23 28 247: 12(int) Load 246 248: 25(ptr) AccessChain 23 60 249: 12(int) Load 248 250: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 245 31 251: 12(int) AtomicCompareExchange 250 34 31 31 249 247 Store 37(out_i1) 251 252: 219(ptr) AccessChain 23 218 253: 19(ivec2) Load 252 254: 25(ptr) AccessChain 23 24 255: 12(int) Load 254 256: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 253 31 257: 12(int) AtomicExchange 256 34 31 255 Store 37(out_i1) 257 258: 219(ptr) AccessChain 23 218 259: 19(ivec2) Load 258 260: 25(ptr) AccessChain 23 28 261: 12(int) Load 260 262: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 259 31 263: 12(int) AtomicSMax 262 34 31 261 264: 219(ptr) AccessChain 23 218 265: 19(ivec2) Load 264 266: 25(ptr) AccessChain 23 24 267: 12(int) Load 266 268: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 265 31 269: 12(int) AtomicSMax 268 34 31 267 Store 37(out_i1) 269 270: 219(ptr) AccessChain 23 218 271: 19(ivec2) Load 270 272: 25(ptr) AccessChain 23 28 273: 12(int) Load 272 274: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 271 31 275: 12(int) AtomicSMin 274 34 31 273 276: 219(ptr) AccessChain 23 218 277: 19(ivec2) Load 276 278: 25(ptr) AccessChain 23 24 279: 12(int) Load 278 280: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 277 31 281: 12(int) AtomicSMin 280 34 31 279 Store 37(out_i1) 281 282: 219(ptr) AccessChain 23 218 283: 19(ivec2) Load 282 284: 25(ptr) AccessChain 23 28 285: 12(int) Load 284 286: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 283 31 287: 12(int) AtomicOr 286 34 31 285 288: 219(ptr) AccessChain 23 218 289: 19(ivec2) Load 288 290: 25(ptr) AccessChain 23 24 291: 12(int) Load 290 292: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 289 31 293: 12(int) AtomicOr 292 34 31 291 Store 37(out_i1) 293 294: 219(ptr) AccessChain 23 218 295: 19(ivec2) Load 294 296: 25(ptr) AccessChain 23 28 297: 12(int) Load 296 298: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 295 31 299: 12(int) AtomicXor 298 34 31 297 300: 219(ptr) AccessChain 23 218 301: 19(ivec2) Load 300 302: 25(ptr) AccessChain 23 24 303: 12(int) Load 302 304: 32(ptr) ImageTexelPointer 217(g_tTex2di1) 301 31 305: 12(int) AtomicXor 304 34 31 303 Store 37(out_i1) 305 311: 310(ptr) AccessChain 23 309 312: 17(ivec2) Load 311 313: 123(ptr) AccessChain 23 122 314: 16(int) Load 313 315: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 312 31 316: 16(int) AtomicIAdd 315 34 31 314 317: 310(ptr) AccessChain 23 309 318: 17(ivec2) Load 317 319: 123(ptr) AccessChain 23 122 320: 16(int) Load 319 321: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 318 31 322: 16(int) AtomicIAdd 321 34 31 320 Store 132(out_u1) 322 323: 310(ptr) AccessChain 23 309 324: 17(ivec2) Load 323 325: 123(ptr) AccessChain 23 122 326: 16(int) Load 325 327: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 324 31 328: 16(int) AtomicAnd 327 34 31 326 329: 310(ptr) AccessChain 23 309 330: 17(ivec2) Load 329 331: 123(ptr) AccessChain 23 122 332: 16(int) Load 331 333: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 330 31 334: 16(int) AtomicAnd 333 34 31 332 Store 132(out_u1) 334 335: 310(ptr) AccessChain 23 309 336: 17(ivec2) Load 335 337: 123(ptr) AccessChain 23 153 338: 16(int) Load 337 339: 123(ptr) AccessChain 23 156 340: 16(int) Load 339 341: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 336 31 342: 16(int) AtomicCompareExchange 341 34 31 31 340 338 Store 132(out_u1) 342 343: 310(ptr) AccessChain 23 309 344: 17(ivec2) Load 343 345: 123(ptr) AccessChain 23 122 346: 16(int) Load 345 347: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 344 31 348: 16(int) AtomicExchange 347 34 31 346 Store 132(out_u1) 348 349: 310(ptr) AccessChain 23 309 350: 17(ivec2) Load 349 351: 123(ptr) AccessChain 23 122 352: 16(int) Load 351 353: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 350 31 354: 16(int) AtomicUMax 353 34 31 352 355: 310(ptr) AccessChain 23 309 356: 17(ivec2) Load 355 357: 123(ptr) AccessChain 23 122 358: 16(int) Load 357 359: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 356 31 360: 16(int) AtomicUMax 359 34 31 358 Store 132(out_u1) 360 361: 310(ptr) AccessChain 23 309 362: 17(ivec2) Load 361 363: 123(ptr) AccessChain 23 122 364: 16(int) Load 363 365: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 362 31 366: 16(int) AtomicUMin 365 34 31 364 367: 310(ptr) AccessChain 23 309 368: 17(ivec2) Load 367 369: 123(ptr) AccessChain 23 122 370: 16(int) Load 369 371: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 368 31 372: 16(int) AtomicUMin 371 34 31 370 Store 132(out_u1) 372 373: 310(ptr) AccessChain 23 309 374: 17(ivec2) Load 373 375: 123(ptr) AccessChain 23 122 376: 16(int) Load 375 377: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 374 31 378: 16(int) AtomicOr 377 34 31 376 379: 310(ptr) AccessChain 23 309 380: 17(ivec2) Load 379 381: 123(ptr) AccessChain 23 122 382: 16(int) Load 381 383: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 380 31 384: 16(int) AtomicOr 383 34 31 382 Store 132(out_u1) 384 385: 310(ptr) AccessChain 23 309 386: 17(ivec2) Load 385 387: 123(ptr) AccessChain 23 122 388: 16(int) Load 387 389: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 386 31 390: 16(int) AtomicXor 389 34 31 388 391: 310(ptr) AccessChain 23 309 392: 17(ivec2) Load 391 393: 123(ptr) AccessChain 23 122 394: 16(int) Load 393 395: 128(ptr) ImageTexelPointer 308(g_tTex2du1) 392 31 396: 16(int) AtomicXor 395 34 31 394 Store 132(out_u1) 396 402: 401(ptr) AccessChain 23 400 403: 20(ivec3) Load 402 404: 25(ptr) AccessChain 23 28 405: 12(int) Load 404 406: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 403 31 407: 12(int) AtomicIAdd 406 34 31 405 408: 401(ptr) AccessChain 23 400 409: 20(ivec3) Load 408 410: 25(ptr) AccessChain 23 24 411: 12(int) Load 410 412: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 409 31 413: 12(int) AtomicIAdd 412 34 31 411 Store 37(out_i1) 413 414: 401(ptr) AccessChain 23 400 415: 20(ivec3) Load 414 416: 25(ptr) AccessChain 23 28 417: 12(int) Load 416 418: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 415 31 419: 12(int) AtomicAnd 418 34 31 417 420: 401(ptr) AccessChain 23 400 421: 20(ivec3) Load 420 422: 25(ptr) AccessChain 23 24 423: 12(int) Load 422 424: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 421 31 425: 12(int) AtomicAnd 424 34 31 423 Store 37(out_i1) 425 426: 401(ptr) AccessChain 23 400 427: 20(ivec3) Load 426 428: 25(ptr) AccessChain 23 28 429: 12(int) Load 428 430: 25(ptr) AccessChain 23 60 431: 12(int) Load 430 432: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 427 31 433: 12(int) AtomicCompareExchange 432 34 31 31 431 429 Store 37(out_i1) 433 434: 401(ptr) AccessChain 23 400 435: 20(ivec3) Load 434 436: 25(ptr) AccessChain 23 24 437: 12(int) Load 436 438: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 435 31 439: 12(int) AtomicExchange 438 34 31 437 Store 37(out_i1) 439 440: 401(ptr) AccessChain 23 400 441: 20(ivec3) Load 440 442: 25(ptr) AccessChain 23 28 443: 12(int) Load 442 444: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 441 31 445: 12(int) AtomicSMax 444 34 31 443 446: 401(ptr) AccessChain 23 400 447: 20(ivec3) Load 446 448: 25(ptr) AccessChain 23 24 449: 12(int) Load 448 450: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 447 31 451: 12(int) AtomicSMax 450 34 31 449 Store 37(out_i1) 451 452: 401(ptr) AccessChain 23 400 453: 20(ivec3) Load 452 454: 25(ptr) AccessChain 23 28 455: 12(int) Load 454 456: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 453 31 457: 12(int) AtomicSMin 456 34 31 455 458: 401(ptr) AccessChain 23 400 459: 20(ivec3) Load 458 460: 25(ptr) AccessChain 23 24 461: 12(int) Load 460 462: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 459 31 463: 12(int) AtomicSMin 462 34 31 461 Store 37(out_i1) 463 464: 401(ptr) AccessChain 23 400 465: 20(ivec3) Load 464 466: 25(ptr) AccessChain 23 28 467: 12(int) Load 466 468: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 465 31 469: 12(int) AtomicOr 468 34 31 467 470: 401(ptr) AccessChain 23 400 471: 20(ivec3) Load 470 472: 25(ptr) AccessChain 23 24 473: 12(int) Load 472 474: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 471 31 475: 12(int) AtomicOr 474 34 31 473 Store 37(out_i1) 475 476: 401(ptr) AccessChain 23 400 477: 20(ivec3) Load 476 478: 25(ptr) AccessChain 23 28 479: 12(int) Load 478 480: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 477 31 481: 12(int) AtomicXor 480 34 31 479 482: 401(ptr) AccessChain 23 400 483: 20(ivec3) Load 482 484: 25(ptr) AccessChain 23 24 485: 12(int) Load 484 486: 32(ptr) ImageTexelPointer 399(g_tTex3di1) 483 31 487: 12(int) AtomicXor 486 34 31 485 Store 37(out_i1) 487 493: 492(ptr) AccessChain 23 491 494: 18(ivec3) Load 493 495: 123(ptr) AccessChain 23 122 496: 16(int) Load 495 497: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 494 31 498: 16(int) AtomicIAdd 497 34 31 496 499: 492(ptr) AccessChain 23 491 500: 18(ivec3) Load 499 501: 123(ptr) AccessChain 23 122 502: 16(int) Load 501 503: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 500 31 504: 16(int) AtomicIAdd 503 34 31 502 Store 132(out_u1) 504 505: 492(ptr) AccessChain 23 491 506: 18(ivec3) Load 505 507: 123(ptr) AccessChain 23 122 508: 16(int) Load 507 509: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 506 31 510: 16(int) AtomicAnd 509 34 31 508 511: 492(ptr) AccessChain 23 491 512: 18(ivec3) Load 511 513: 123(ptr) AccessChain 23 122 514: 16(int) Load 513 515: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 512 31 516: 16(int) AtomicAnd 515 34 31 514 Store 132(out_u1) 516 517: 492(ptr) AccessChain 23 491 518: 18(ivec3) Load 517 519: 123(ptr) AccessChain 23 153 520: 16(int) Load 519 521: 123(ptr) AccessChain 23 156 522: 16(int) Load 521 523: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 518 31 524: 16(int) AtomicCompareExchange 523 34 31 31 522 520 Store 132(out_u1) 524 525: 492(ptr) AccessChain 23 491 526: 18(ivec3) Load 525 527: 123(ptr) AccessChain 23 122 528: 16(int) Load 527 529: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 526 31 530: 16(int) AtomicExchange 529 34 31 528 Store 132(out_u1) 530 531: 492(ptr) AccessChain 23 491 532: 18(ivec3) Load 531 533: 123(ptr) AccessChain 23 122 534: 16(int) Load 533 535: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 532 31 536: 16(int) AtomicUMax 535 34 31 534 537: 492(ptr) AccessChain 23 491 538: 18(ivec3) Load 537 539: 123(ptr) AccessChain 23 122 540: 16(int) Load 539 541: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 538 31 542: 16(int) AtomicUMax 541 34 31 540 Store 132(out_u1) 542 543: 492(ptr) AccessChain 23 491 544: 18(ivec3) Load 543 545: 123(ptr) AccessChain 23 122 546: 16(int) Load 545 547: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 544 31 548: 16(int) AtomicUMin 547 34 31 546 549: 492(ptr) AccessChain 23 491 550: 18(ivec3) Load 549 551: 123(ptr) AccessChain 23 122 552: 16(int) Load 551 553: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 550 31 554: 16(int) AtomicUMin 553 34 31 552 Store 132(out_u1) 554 555: 492(ptr) AccessChain 23 491 556: 18(ivec3) Load 555 557: 123(ptr) AccessChain 23 122 558: 16(int) Load 557 559: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 556 31 560: 16(int) AtomicOr 559 34 31 558 561: 492(ptr) AccessChain 23 491 562: 18(ivec3) Load 561 563: 123(ptr) AccessChain 23 122 564: 16(int) Load 563 565: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 562 31 566: 16(int) AtomicOr 565 34 31 564 Store 132(out_u1) 566 567: 492(ptr) AccessChain 23 491 568: 18(ivec3) Load 567 569: 123(ptr) AccessChain 23 122 570: 16(int) Load 569 571: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 568 31 572: 16(int) AtomicXor 571 34 31 570 573: 492(ptr) AccessChain 23 491 574: 18(ivec3) Load 573 575: 123(ptr) AccessChain 23 122 576: 16(int) Load 575 577: 128(ptr) ImageTexelPointer 490(g_tTex3du1) 574 31 578: 16(int) AtomicXor 577 34 31 576 Store 132(out_u1) 578 582: 219(ptr) AccessChain 23 218 583: 19(ivec2) Load 582 584: 25(ptr) AccessChain 23 28 585: 12(int) Load 584 586: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 583 31 587: 12(int) AtomicIAdd 586 34 31 585 588: 219(ptr) AccessChain 23 218 589: 19(ivec2) Load 588 590: 25(ptr) AccessChain 23 24 591: 12(int) Load 590 592: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 589 31 593: 12(int) AtomicIAdd 592 34 31 591 Store 37(out_i1) 593 594: 219(ptr) AccessChain 23 218 595: 19(ivec2) Load 594 596: 25(ptr) AccessChain 23 28 597: 12(int) Load 596 598: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 595 31 599: 12(int) AtomicAnd 598 34 31 597 600: 219(ptr) AccessChain 23 218 601: 19(ivec2) Load 600 602: 25(ptr) AccessChain 23 24 603: 12(int) Load 602 604: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 601 31 605: 12(int) AtomicAnd 604 34 31 603 Store 37(out_i1) 605 606: 219(ptr) AccessChain 23 218 607: 19(ivec2) Load 606 608: 25(ptr) AccessChain 23 28 609: 12(int) Load 608 610: 25(ptr) AccessChain 23 60 611: 12(int) Load 610 612: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 607 31 613: 12(int) AtomicCompareExchange 612 34 31 31 611 609 Store 37(out_i1) 613 614: 219(ptr) AccessChain 23 218 615: 19(ivec2) Load 614 616: 25(ptr) AccessChain 23 24 617: 12(int) Load 616 618: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 615 31 619: 12(int) AtomicExchange 618 34 31 617 Store 37(out_i1) 619 620: 219(ptr) AccessChain 23 218 621: 19(ivec2) Load 620 622: 25(ptr) AccessChain 23 28 623: 12(int) Load 622 624: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 621 31 625: 12(int) AtomicSMax 624 34 31 623 626: 219(ptr) AccessChain 23 218 627: 19(ivec2) Load 626 628: 25(ptr) AccessChain 23 24 629: 12(int) Load 628 630: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 627 31 631: 12(int) AtomicSMax 630 34 31 629 Store 37(out_i1) 631 632: 219(ptr) AccessChain 23 218 633: 19(ivec2) Load 632 634: 25(ptr) AccessChain 23 28 635: 12(int) Load 634 636: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 633 31 637: 12(int) AtomicSMin 636 34 31 635 638: 219(ptr) AccessChain 23 218 639: 19(ivec2) Load 638 640: 25(ptr) AccessChain 23 24 641: 12(int) Load 640 642: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 639 31 643: 12(int) AtomicSMin 642 34 31 641 Store 37(out_i1) 643 644: 219(ptr) AccessChain 23 218 645: 19(ivec2) Load 644 646: 25(ptr) AccessChain 23 28 647: 12(int) Load 646 648: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 645 31 649: 12(int) AtomicOr 648 34 31 647 650: 219(ptr) AccessChain 23 218 651: 19(ivec2) Load 650 652: 25(ptr) AccessChain 23 24 653: 12(int) Load 652 654: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 651 31 655: 12(int) AtomicOr 654 34 31 653 Store 37(out_i1) 655 656: 219(ptr) AccessChain 23 218 657: 19(ivec2) Load 656 658: 25(ptr) AccessChain 23 28 659: 12(int) Load 658 660: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 657 31 661: 12(int) AtomicXor 660 34 31 659 662: 219(ptr) AccessChain 23 218 663: 19(ivec2) Load 662 664: 25(ptr) AccessChain 23 24 665: 12(int) Load 664 666: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 663 31 667: 12(int) AtomicXor 666 34 31 665 Store 37(out_i1) 667 671: 310(ptr) AccessChain 23 309 672: 17(ivec2) Load 671 673: 123(ptr) AccessChain 23 122 674: 16(int) Load 673 675: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 672 31 676: 16(int) AtomicIAdd 675 34 31 674 677: 310(ptr) AccessChain 23 309 678: 17(ivec2) Load 677 679: 123(ptr) AccessChain 23 122 680: 16(int) Load 679 681: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 678 31 682: 16(int) AtomicIAdd 681 34 31 680 Store 132(out_u1) 682 683: 310(ptr) AccessChain 23 309 684: 17(ivec2) Load 683 685: 123(ptr) AccessChain 23 122 686: 16(int) Load 685 687: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 684 31 688: 16(int) AtomicAnd 687 34 31 686 689: 310(ptr) AccessChain 23 309 690: 17(ivec2) Load 689 691: 123(ptr) AccessChain 23 122 692: 16(int) Load 691 693: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 690 31 694: 16(int) AtomicAnd 693 34 31 692 Store 132(out_u1) 694 695: 310(ptr) AccessChain 23 309 696: 17(ivec2) Load 695 697: 123(ptr) AccessChain 23 153 698: 16(int) Load 697 699: 123(ptr) AccessChain 23 156 700: 16(int) Load 699 701: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 696 31 702: 16(int) AtomicCompareExchange 701 34 31 31 700 698 Store 132(out_u1) 702 703: 310(ptr) AccessChain 23 309 704: 17(ivec2) Load 703 705: 123(ptr) AccessChain 23 122 706: 16(int) Load 705 707: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 704 31 708: 16(int) AtomicExchange 707 34 31 706 Store 132(out_u1) 708 709: 310(ptr) AccessChain 23 309 710: 17(ivec2) Load 709 711: 123(ptr) AccessChain 23 122 712: 16(int) Load 711 713: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 710 31 714: 16(int) AtomicUMax 713 34 31 712 715: 310(ptr) AccessChain 23 309 716: 17(ivec2) Load 715 717: 123(ptr) AccessChain 23 122 718: 16(int) Load 717 719: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 716 31 720: 16(int) AtomicUMax 719 34 31 718 Store 132(out_u1) 720 721: 310(ptr) AccessChain 23 309 722: 17(ivec2) Load 721 723: 123(ptr) AccessChain 23 122 724: 16(int) Load 723 725: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 722 31 726: 16(int) AtomicUMin 725 34 31 724 727: 310(ptr) AccessChain 23 309 728: 17(ivec2) Load 727 729: 123(ptr) AccessChain 23 122 730: 16(int) Load 729 731: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 728 31 732: 16(int) AtomicUMin 731 34 31 730 Store 132(out_u1) 732 733: 310(ptr) AccessChain 23 309 734: 17(ivec2) Load 733 735: 123(ptr) AccessChain 23 122 736: 16(int) Load 735 737: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 734 31 738: 16(int) AtomicOr 737 34 31 736 739: 310(ptr) AccessChain 23 309 740: 17(ivec2) Load 739 741: 123(ptr) AccessChain 23 122 742: 16(int) Load 741 743: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 740 31 744: 16(int) AtomicOr 743 34 31 742 Store 132(out_u1) 744 745: 310(ptr) AccessChain 23 309 746: 17(ivec2) Load 745 747: 123(ptr) AccessChain 23 122 748: 16(int) Load 747 749: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 746 31 750: 16(int) AtomicXor 749 34 31 748 751: 310(ptr) AccessChain 23 309 752: 17(ivec2) Load 751 753: 123(ptr) AccessChain 23 122 754: 16(int) Load 753 755: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 752 31 756: 16(int) AtomicXor 755 34 31 754 Store 132(out_u1) 756 757: 219(ptr) AccessChain 23 218 758: 19(ivec2) Load 757 759: 25(ptr) AccessChain 23 28 760: 12(int) Load 759 761: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 758 31 762: 12(int) AtomicIAdd 761 34 31 760 763: 219(ptr) AccessChain 23 218 764: 19(ivec2) Load 763 765: 25(ptr) AccessChain 23 24 766: 12(int) Load 765 767: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 764 31 768: 12(int) AtomicIAdd 767 34 31 766 Store 37(out_i1) 768 769: 219(ptr) AccessChain 23 218 770: 19(ivec2) Load 769 771: 25(ptr) AccessChain 23 28 772: 12(int) Load 771 773: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 770 31 774: 12(int) AtomicAnd 773 34 31 772 775: 219(ptr) AccessChain 23 218 776: 19(ivec2) Load 775 777: 25(ptr) AccessChain 23 24 778: 12(int) Load 777 779: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 776 31 780: 12(int) AtomicAnd 779 34 31 778 Store 37(out_i1) 780 781: 219(ptr) AccessChain 23 218 782: 19(ivec2) Load 781 783: 25(ptr) AccessChain 23 28 784: 12(int) Load 783 785: 25(ptr) AccessChain 23 60 786: 12(int) Load 785 787: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 782 31 788: 12(int) AtomicCompareExchange 787 34 31 31 786 784 Store 37(out_i1) 788 789: 219(ptr) AccessChain 23 218 790: 19(ivec2) Load 789 791: 25(ptr) AccessChain 23 24 792: 12(int) Load 791 793: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 790 31 794: 12(int) AtomicExchange 793 34 31 792 Store 37(out_i1) 794 795: 219(ptr) AccessChain 23 218 796: 19(ivec2) Load 795 797: 25(ptr) AccessChain 23 28 798: 12(int) Load 797 799: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 796 31 800: 12(int) AtomicSMax 799 34 31 798 801: 219(ptr) AccessChain 23 218 802: 19(ivec2) Load 801 803: 25(ptr) AccessChain 23 24 804: 12(int) Load 803 805: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 802 31 806: 12(int) AtomicSMax 805 34 31 804 Store 37(out_i1) 806 807: 219(ptr) AccessChain 23 218 808: 19(ivec2) Load 807 809: 25(ptr) AccessChain 23 28 810: 12(int) Load 809 811: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 808 31 812: 12(int) AtomicSMin 811 34 31 810 813: 219(ptr) AccessChain 23 218 814: 19(ivec2) Load 813 815: 25(ptr) AccessChain 23 24 816: 12(int) Load 815 817: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 814 31 818: 12(int) AtomicSMin 817 34 31 816 Store 37(out_i1) 818 819: 219(ptr) AccessChain 23 218 820: 19(ivec2) Load 819 821: 25(ptr) AccessChain 23 28 822: 12(int) Load 821 823: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 820 31 824: 12(int) AtomicOr 823 34 31 822 825: 219(ptr) AccessChain 23 218 826: 19(ivec2) Load 825 827: 25(ptr) AccessChain 23 24 828: 12(int) Load 827 829: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 826 31 830: 12(int) AtomicOr 829 34 31 828 Store 37(out_i1) 830 831: 219(ptr) AccessChain 23 218 832: 19(ivec2) Load 831 833: 25(ptr) AccessChain 23 28 834: 12(int) Load 833 835: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 832 31 836: 12(int) AtomicXor 835 34 31 834 837: 219(ptr) AccessChain 23 218 838: 19(ivec2) Load 837 839: 25(ptr) AccessChain 23 24 840: 12(int) Load 839 841: 32(ptr) ImageTexelPointer 581(g_tTex1di1a) 838 31 842: 12(int) AtomicXor 841 34 31 840 Store 37(out_i1) 842 843: 310(ptr) AccessChain 23 309 844: 17(ivec2) Load 843 845: 123(ptr) AccessChain 23 122 846: 16(int) Load 845 847: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 844 31 848: 16(int) AtomicIAdd 847 34 31 846 849: 310(ptr) AccessChain 23 309 850: 17(ivec2) Load 849 851: 123(ptr) AccessChain 23 122 852: 16(int) Load 851 853: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 850 31 854: 16(int) AtomicIAdd 853 34 31 852 Store 132(out_u1) 854 855: 310(ptr) AccessChain 23 309 856: 17(ivec2) Load 855 857: 123(ptr) AccessChain 23 122 858: 16(int) Load 857 859: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 856 31 860: 16(int) AtomicAnd 859 34 31 858 861: 310(ptr) AccessChain 23 309 862: 17(ivec2) Load 861 863: 123(ptr) AccessChain 23 122 864: 16(int) Load 863 865: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 862 31 866: 16(int) AtomicAnd 865 34 31 864 Store 132(out_u1) 866 867: 310(ptr) AccessChain 23 309 868: 17(ivec2) Load 867 869: 123(ptr) AccessChain 23 153 870: 16(int) Load 869 871: 123(ptr) AccessChain 23 156 872: 16(int) Load 871 873: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 868 31 874: 16(int) AtomicCompareExchange 873 34 31 31 872 870 Store 132(out_u1) 874 875: 310(ptr) AccessChain 23 309 876: 17(ivec2) Load 875 877: 123(ptr) AccessChain 23 122 878: 16(int) Load 877 879: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 876 31 880: 16(int) AtomicExchange 879 34 31 878 Store 132(out_u1) 880 881: 310(ptr) AccessChain 23 309 882: 17(ivec2) Load 881 883: 123(ptr) AccessChain 23 122 884: 16(int) Load 883 885: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 882 31 886: 16(int) AtomicUMax 885 34 31 884 887: 310(ptr) AccessChain 23 309 888: 17(ivec2) Load 887 889: 123(ptr) AccessChain 23 122 890: 16(int) Load 889 891: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 888 31 892: 16(int) AtomicUMax 891 34 31 890 Store 132(out_u1) 892 893: 310(ptr) AccessChain 23 309 894: 17(ivec2) Load 893 895: 123(ptr) AccessChain 23 122 896: 16(int) Load 895 897: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 894 31 898: 16(int) AtomicUMin 897 34 31 896 899: 310(ptr) AccessChain 23 309 900: 17(ivec2) Load 899 901: 123(ptr) AccessChain 23 122 902: 16(int) Load 901 903: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 900 31 904: 16(int) AtomicUMin 903 34 31 902 Store 132(out_u1) 904 905: 310(ptr) AccessChain 23 309 906: 17(ivec2) Load 905 907: 123(ptr) AccessChain 23 122 908: 16(int) Load 907 909: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 906 31 910: 16(int) AtomicOr 909 34 31 908 911: 310(ptr) AccessChain 23 309 912: 17(ivec2) Load 911 913: 123(ptr) AccessChain 23 122 914: 16(int) Load 913 915: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 912 31 916: 16(int) AtomicOr 915 34 31 914 Store 132(out_u1) 916 917: 310(ptr) AccessChain 23 309 918: 17(ivec2) Load 917 919: 123(ptr) AccessChain 23 122 920: 16(int) Load 919 921: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 918 31 922: 16(int) AtomicXor 921 34 31 920 923: 310(ptr) AccessChain 23 309 924: 17(ivec2) Load 923 925: 123(ptr) AccessChain 23 122 926: 16(int) Load 925 927: 128(ptr) ImageTexelPointer 670(g_tTex1du1a) 924 31 928: 16(int) AtomicXor 927 34 31 926 Store 132(out_u1) 928 932: 25(ptr) AccessChain 23 24 933: 12(int) Load 932 934: 25(ptr) AccessChain 23 28 935: 12(int) Load 934 936: 32(ptr) ImageTexelPointer 931(g_tBuffI) 933 31 937: 12(int) AtomicIAdd 936 34 31 935 938: 25(ptr) AccessChain 23 24 939: 12(int) Load 938 940: 25(ptr) AccessChain 23 24 941: 12(int) Load 940 942: 32(ptr) ImageTexelPointer 931(g_tBuffI) 939 31 943: 12(int) AtomicIAdd 942 34 31 941 Store 37(out_i1) 943 944: 25(ptr) AccessChain 23 24 945: 12(int) Load 944 946: 25(ptr) AccessChain 23 28 947: 12(int) Load 946 948: 32(ptr) ImageTexelPointer 931(g_tBuffI) 945 31 949: 12(int) AtomicAnd 948 34 31 947 950: 25(ptr) AccessChain 23 24 951: 12(int) Load 950 952: 25(ptr) AccessChain 23 24 953: 12(int) Load 952 954: 32(ptr) ImageTexelPointer 931(g_tBuffI) 951 31 955: 12(int) AtomicAnd 954 34 31 953 Store 37(out_i1) 955 956: 25(ptr) AccessChain 23 24 957: 12(int) Load 956 958: 25(ptr) AccessChain 23 28 959: 12(int) Load 958 960: 25(ptr) AccessChain 23 60 961: 12(int) Load 960 962: 32(ptr) ImageTexelPointer 931(g_tBuffI) 957 31 963: 12(int) AtomicCompareExchange 962 34 31 31 961 959 Store 37(out_i1) 963 964: 25(ptr) AccessChain 23 24 965: 12(int) Load 964 966: 25(ptr) AccessChain 23 24 967: 12(int) Load 966 968: 32(ptr) ImageTexelPointer 931(g_tBuffI) 965 31 969: 12(int) AtomicExchange 968 34 31 967 Store 37(out_i1) 969 970: 25(ptr) AccessChain 23 24 971: 12(int) Load 970 972: 25(ptr) AccessChain 23 28 973: 12(int) Load 972 974: 32(ptr) ImageTexelPointer 931(g_tBuffI) 971 31 975: 12(int) AtomicSMax 974 34 31 973 976: 25(ptr) AccessChain 23 24 977: 12(int) Load 976 978: 25(ptr) AccessChain 23 24 979: 12(int) Load 978 980: 32(ptr) ImageTexelPointer 931(g_tBuffI) 977 31 981: 12(int) AtomicSMax 980 34 31 979 Store 37(out_i1) 981 982: 25(ptr) AccessChain 23 24 983: 12(int) Load 982 984: 25(ptr) AccessChain 23 28 985: 12(int) Load 984 986: 32(ptr) ImageTexelPointer 931(g_tBuffI) 983 31 987: 12(int) AtomicSMin 986 34 31 985 988: 25(ptr) AccessChain 23 24 989: 12(int) Load 988 990: 25(ptr) AccessChain 23 24 991: 12(int) Load 990 992: 32(ptr) ImageTexelPointer 931(g_tBuffI) 989 31 993: 12(int) AtomicSMin 992 34 31 991 Store 37(out_i1) 993 994: 25(ptr) AccessChain 23 24 995: 12(int) Load 994 996: 25(ptr) AccessChain 23 28 997: 12(int) Load 996 998: 32(ptr) ImageTexelPointer 931(g_tBuffI) 995 31 999: 12(int) AtomicOr 998 34 31 997 1000: 25(ptr) AccessChain 23 24 1001: 12(int) Load 1000 1002: 25(ptr) AccessChain 23 24 1003: 12(int) Load 1002 1004: 32(ptr) ImageTexelPointer 931(g_tBuffI) 1001 31 1005: 12(int) AtomicOr 1004 34 31 1003 Store 37(out_i1) 1005 1006: 25(ptr) AccessChain 23 24 1007: 12(int) Load 1006 1008: 25(ptr) AccessChain 23 28 1009: 12(int) Load 1008 1010: 32(ptr) ImageTexelPointer 931(g_tBuffI) 1007 31 1011: 12(int) AtomicXor 1010 34 31 1009 1012: 25(ptr) AccessChain 23 24 1013: 12(int) Load 1012 1014: 25(ptr) AccessChain 23 24 1015: 12(int) Load 1014 1016: 32(ptr) ImageTexelPointer 931(g_tBuffI) 1013 31 1017: 12(int) AtomicXor 1016 34 31 1015 Store 37(out_i1) 1017 1021: 123(ptr) AccessChain 23 122 1022: 16(int) Load 1021 1023: 123(ptr) AccessChain 23 122 1024: 16(int) Load 1023 1025: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1022 31 1026: 16(int) AtomicIAdd 1025 34 31 1024 1027: 123(ptr) AccessChain 23 122 1028: 16(int) Load 1027 1029: 123(ptr) AccessChain 23 122 1030: 16(int) Load 1029 1031: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1028 31 1032: 16(int) AtomicIAdd 1031 34 31 1030 Store 132(out_u1) 1032 1033: 123(ptr) AccessChain 23 122 1034: 16(int) Load 1033 1035: 123(ptr) AccessChain 23 122 1036: 16(int) Load 1035 1037: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1034 31 1038: 16(int) AtomicAnd 1037 34 31 1036 1039: 123(ptr) AccessChain 23 122 1040: 16(int) Load 1039 1041: 123(ptr) AccessChain 23 122 1042: 16(int) Load 1041 1043: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1040 31 1044: 16(int) AtomicAnd 1043 34 31 1042 Store 132(out_u1) 1044 1045: 123(ptr) AccessChain 23 122 1046: 16(int) Load 1045 1047: 123(ptr) AccessChain 23 153 1048: 16(int) Load 1047 1049: 123(ptr) AccessChain 23 156 1050: 16(int) Load 1049 1051: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1046 31 1052: 16(int) AtomicCompareExchange 1051 34 31 31 1050 1048 Store 132(out_u1) 1052 1053: 123(ptr) AccessChain 23 122 1054: 16(int) Load 1053 1055: 123(ptr) AccessChain 23 122 1056: 16(int) Load 1055 1057: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1054 31 1058: 16(int) AtomicExchange 1057 34 31 1056 Store 132(out_u1) 1058 1059: 123(ptr) AccessChain 23 122 1060: 16(int) Load 1059 1061: 123(ptr) AccessChain 23 122 1062: 16(int) Load 1061 1063: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1060 31 1064: 16(int) AtomicUMax 1063 34 31 1062 1065: 123(ptr) AccessChain 23 122 1066: 16(int) Load 1065 1067: 123(ptr) AccessChain 23 122 1068: 16(int) Load 1067 1069: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1066 31 1070: 16(int) AtomicUMax 1069 34 31 1068 Store 132(out_u1) 1070 1071: 123(ptr) AccessChain 23 122 1072: 16(int) Load 1071 1073: 123(ptr) AccessChain 23 122 1074: 16(int) Load 1073 1075: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1072 31 1076: 16(int) AtomicUMin 1075 34 31 1074 1077: 123(ptr) AccessChain 23 122 1078: 16(int) Load 1077 1079: 123(ptr) AccessChain 23 122 1080: 16(int) Load 1079 1081: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1078 31 1082: 16(int) AtomicUMin 1081 34 31 1080 Store 132(out_u1) 1082 1083: 123(ptr) AccessChain 23 122 1084: 16(int) Load 1083 1085: 123(ptr) AccessChain 23 122 1086: 16(int) Load 1085 1087: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1084 31 1088: 16(int) AtomicOr 1087 34 31 1086 1089: 123(ptr) AccessChain 23 122 1090: 16(int) Load 1089 1091: 123(ptr) AccessChain 23 122 1092: 16(int) Load 1091 1093: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1090 31 1094: 16(int) AtomicOr 1093 34 31 1092 Store 132(out_u1) 1094 1095: 123(ptr) AccessChain 23 122 1096: 16(int) Load 1095 1097: 123(ptr) AccessChain 23 122 1098: 16(int) Load 1097 1099: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1096 31 1100: 16(int) AtomicXor 1099 34 31 1098 1101: 123(ptr) AccessChain 23 122 1102: 16(int) Load 1101 1103: 123(ptr) AccessChain 23 122 1104: 16(int) Load 1103 1105: 128(ptr) ImageTexelPointer 1020(g_tBuffU) 1102 31 1106: 16(int) AtomicXor 1105 34 31 1104 Store 132(out_u1) 1106 1112: 1111(ptr) AccessChain 1108(psout) 122 Store 1112 1110 1113:8(PS_OUTPUT) Load 1108(psout) ReturnValue 1113 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.rw.bracket.frag.out000066400000000000000000005335371506534232700231410ustar00rootroot00000000000000hlsl.rw.bracket.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:42 Function Definition: Fn1(vi4; ( temp 4-component vector of int) 0:42 Function Parameters: 0:42 'x' ( in 4-component vector of int) 0:? Sequence 0:42 Branch: Return with expression 0:42 'x' ( in 4-component vector of int) 0:43 Function Definition: Fn1(vu4; ( temp 4-component vector of uint) 0:43 Function Parameters: 0:43 'x' ( in 4-component vector of uint) 0:? Sequence 0:43 Branch: Return with expression 0:43 'x' ( in 4-component vector of uint) 0:44 Function Definition: Fn1(vf4; ( temp 4-component vector of float) 0:44 Function Parameters: 0:44 'x' ( in 4-component vector of float) 0:? Sequence 0:44 Branch: Return with expression 0:44 'x' ( in 4-component vector of float) 0:46 Function Definition: Fn2(vi4; ( temp void) 0:46 Function Parameters: 0:46 'x' ( out 4-component vector of int) 0:? Sequence 0:46 move second child to first child ( temp 4-component vector of int) 0:46 'x' ( out 4-component vector of int) 0:46 Constant: 0:46 0 (const int) 0:46 0 (const int) 0:46 0 (const int) 0:46 0 (const int) 0:47 Function Definition: Fn2(vu4; ( temp void) 0:47 Function Parameters: 0:47 'x' ( out 4-component vector of uint) 0:? Sequence 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 'x' ( out 4-component vector of uint) 0:47 Constant: 0:47 0 (const uint) 0:47 0 (const uint) 0:47 0 (const uint) 0:47 0 (const uint) 0:48 Function Definition: Fn2(vf4; ( temp void) 0:48 Function Parameters: 0:48 'x' ( out 4-component vector of float) 0:? Sequence 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'x' ( out 4-component vector of float) 0:48 Constant: 0:48 0.000000 0:48 0.000000 0:48 0.000000 0:48 0.000000 0:50 Function Definition: SomeValue( ( temp 4-component vector of float) 0:50 Function Parameters: 0:? Sequence 0:50 Branch: Return with expression 0:50 Convert int to float ( temp 4-component vector of float) 0:50 c4: direct index for structure ( uniform 4-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:50 Constant: 0:50 3 (const uint) 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Parameters: 0:? Sequence 0:57 imageLoad ( temp 4-component vector of float) 0:57 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:57 c1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:57 Constant: 0:57 0 (const uint) 0:59 Sequence 0:59 move second child to first child ( temp 4-component vector of float) 0:59 'r00' ( temp 4-component vector of float) 0:59 imageLoad ( temp 4-component vector of float) 0:59 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:59 c1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:59 Constant: 0:59 0 (const uint) 0:60 Sequence 0:60 move second child to first child ( temp 4-component vector of int) 0:60 'r01' ( temp 4-component vector of int) 0:60 imageLoad ( temp 4-component vector of int) 0:60 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:60 c1: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:60 Constant: 0:60 0 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of uint) 0:61 'r02' ( temp 4-component vector of uint) 0:61 imageLoad ( temp 4-component vector of uint) 0:61 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:61 c1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:61 Constant: 0:61 0 (const uint) 0:64 Sequence 0:64 move second child to first child ( temp 4-component vector of float) 0:64 'r10' ( temp 4-component vector of float) 0:64 imageLoad ( temp 4-component vector of float) 0:64 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:64 Constant: 0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child ( temp 4-component vector of int) 0:65 'r11' ( temp 4-component vector of int) 0:65 imageLoad ( temp 4-component vector of int) 0:65 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:65 c2: direct index for structure ( uniform 2-component vector of int) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:65 Constant: 0:65 1 (const uint) 0:66 Sequence 0:66 move second child to first child ( temp 4-component vector of uint) 0:66 'r12' ( temp 4-component vector of uint) 0:66 imageLoad ( temp 4-component vector of uint) 0:66 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:66 c2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:66 Constant: 0:66 1 (const uint) 0:69 Sequence 0:69 move second child to first child ( temp 4-component vector of float) 0:69 'r20' ( temp 4-component vector of float) 0:69 imageLoad ( temp 4-component vector of float) 0:69 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:69 Constant: 0:69 2 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp 4-component vector of int) 0:70 'r21' ( temp 4-component vector of int) 0:70 imageLoad ( temp 4-component vector of int) 0:70 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:70 c3: direct index for structure ( uniform 3-component vector of int) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:70 Constant: 0:70 2 (const uint) 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of uint) 0:71 'r22' ( temp 4-component vector of uint) 0:71 imageLoad ( temp 4-component vector of uint) 0:71 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:71 c3: direct index for structure ( uniform 3-component vector of int) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:71 Constant: 0:71 2 (const uint) 0:73 Sequence 0:73 move second child to first child ( temp 4-component vector of float) 0:73 'lf4' ( temp 4-component vector of float) 0:73 uf4: direct index for structure ( uniform 4-component vector of float) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:73 Constant: 0:73 8 (const uint) 0:77 Sequence 0:77 move second child to first child ( temp 4-component vector of float) 0:77 'storeTemp' ( temp 4-component vector of float) 0:77 Function Call: SomeValue( ( temp 4-component vector of float) 0:77 imageStore ( temp void) 0:77 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:77 c1: direct index for structure ( uniform int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:77 Constant: 0:77 0 (const uint) 0:77 'storeTemp' ( temp 4-component vector of float) 0:77 'storeTemp' ( temp 4-component vector of float) 0:78 Sequence 0:78 imageStore ( temp void) 0:78 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:78 c1: direct index for structure ( uniform int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:78 Constant: 0:78 0 (const uint) 0:78 'lf4' ( temp 4-component vector of float) 0:78 'lf4' ( temp 4-component vector of float) 0:79 Sequence 0:79 move second child to first child ( temp 4-component vector of int) 0:79 'storeTemp' ( temp 4-component vector of int) 0:79 Constant: 0:79 2 (const int) 0:79 2 (const int) 0:79 3 (const int) 0:79 4 (const int) 0:79 imageStore ( temp void) 0:79 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:79 c1: direct index for structure ( uniform int) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:79 Constant: 0:79 0 (const uint) 0:79 'storeTemp' ( temp 4-component vector of int) 0:79 'storeTemp' ( temp 4-component vector of int) 0:80 Sequence 0:80 move second child to first child ( temp 4-component vector of uint) 0:80 'storeTemp' ( temp 4-component vector of uint) 0:80 Constant: 0:80 3 (const uint) 0:80 2 (const uint) 0:80 3 (const uint) 0:80 4 (const uint) 0:80 imageStore ( temp void) 0:80 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:80 c1: direct index for structure ( uniform int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:80 Constant: 0:80 0 (const uint) 0:80 'storeTemp' ( temp 4-component vector of uint) 0:80 'storeTemp' ( temp 4-component vector of uint) 0:83 Sequence 0:83 move second child to first child ( temp 4-component vector of float) 0:83 'val1' ( temp 4-component vector of float) 0:83 Sequence 0:83 move second child to first child ( temp int) 0:83 'coordTemp' ( temp int) 0:83 c1: direct index for structure ( uniform int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:83 Constant: 0:83 0 (const uint) 0:83 move second child to first child ( temp 4-component vector of float) 0:83 'storeTemp' ( temp 4-component vector of float) 0:83 imageLoad ( temp 4-component vector of float) 0:83 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 vector scale second child into first child ( temp 4-component vector of float) 0:83 'storeTemp' ( temp 4-component vector of float) 0:83 Constant: 0:83 2.000000 0:83 imageStore ( temp void) 0:83 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 'storeTemp' ( temp 4-component vector of float) 0:83 'storeTemp' ( temp 4-component vector of float) 0:84 Sequence 0:84 move second child to first child ( temp int) 0:84 'coordTemp' ( temp int) 0:84 c1: direct index for structure ( uniform int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:84 Constant: 0:84 0 (const uint) 0:84 move second child to first child ( temp 4-component vector of float) 0:84 'storeTemp' ( temp 4-component vector of float) 0:84 imageLoad ( temp 4-component vector of float) 0:84 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 subtract second child into first child ( temp 4-component vector of float) 0:84 'storeTemp' ( temp 4-component vector of float) 0:84 Constant: 0:84 3.000000 0:84 imageStore ( temp void) 0:84 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 'storeTemp' ( temp 4-component vector of float) 0:84 'storeTemp' ( temp 4-component vector of float) 0:85 Sequence 0:85 move second child to first child ( temp int) 0:85 'coordTemp' ( temp int) 0:85 c1: direct index for structure ( uniform int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:85 Constant: 0:85 0 (const uint) 0:85 move second child to first child ( temp 4-component vector of float) 0:85 'storeTemp' ( temp 4-component vector of float) 0:85 imageLoad ( temp 4-component vector of float) 0:85 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 add second child into first child ( temp 4-component vector of float) 0:85 'storeTemp' ( temp 4-component vector of float) 0:85 Constant: 0:85 4.000000 0:85 imageStore ( temp void) 0:85 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 'storeTemp' ( temp 4-component vector of float) 0:85 'storeTemp' ( temp 4-component vector of float) 0:87 Sequence 0:87 move second child to first child ( temp int) 0:87 'coordTemp' ( temp int) 0:87 c1: direct index for structure ( uniform int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:87 Constant: 0:87 0 (const uint) 0:87 move second child to first child ( temp 4-component vector of int) 0:87 'storeTemp' ( temp 4-component vector of int) 0:87 imageLoad ( temp 4-component vector of int) 0:87 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 divide second child into first child ( temp 4-component vector of int) 0:87 'storeTemp' ( temp 4-component vector of int) 0:87 Constant: 0:87 2 (const int) 0:87 imageStore ( temp void) 0:87 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 'storeTemp' ( temp 4-component vector of int) 0:87 'storeTemp' ( temp 4-component vector of int) 0:88 Sequence 0:88 move second child to first child ( temp int) 0:88 'coordTemp' ( temp int) 0:88 c1: direct index for structure ( uniform int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:88 Constant: 0:88 0 (const uint) 0:88 move second child to first child ( temp 4-component vector of int) 0:88 'storeTemp' ( temp 4-component vector of int) 0:88 imageLoad ( temp 4-component vector of int) 0:88 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 mod second child into first child ( temp 4-component vector of int) 0:88 'storeTemp' ( temp 4-component vector of int) 0:88 Constant: 0:88 2 (const int) 0:88 imageStore ( temp void) 0:88 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 'storeTemp' ( temp 4-component vector of int) 0:88 'storeTemp' ( temp 4-component vector of int) 0:89 Sequence 0:89 move second child to first child ( temp int) 0:89 'coordTemp' ( temp int) 0:89 c1: direct index for structure ( uniform int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:89 Constant: 0:89 0 (const uint) 0:89 move second child to first child ( temp 4-component vector of int) 0:89 'storeTemp' ( temp 4-component vector of int) 0:89 imageLoad ( temp 4-component vector of int) 0:89 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 and second child into first child ( temp 4-component vector of int) 0:89 'storeTemp' ( temp 4-component vector of int) 0:89 Constant: 0:89 65535 (const int) 0:89 imageStore ( temp void) 0:89 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 'storeTemp' ( temp 4-component vector of int) 0:89 'storeTemp' ( temp 4-component vector of int) 0:90 Sequence 0:90 move second child to first child ( temp int) 0:90 'coordTemp' ( temp int) 0:90 c1: direct index for structure ( uniform int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:90 Constant: 0:90 0 (const uint) 0:90 move second child to first child ( temp 4-component vector of int) 0:90 'storeTemp' ( temp 4-component vector of int) 0:90 imageLoad ( temp 4-component vector of int) 0:90 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 or second child into first child ( temp 4-component vector of int) 0:90 'storeTemp' ( temp 4-component vector of int) 0:90 Constant: 0:90 61680 (const int) 0:90 imageStore ( temp void) 0:90 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 'storeTemp' ( temp 4-component vector of int) 0:90 'storeTemp' ( temp 4-component vector of int) 0:91 Sequence 0:91 move second child to first child ( temp int) 0:91 'coordTemp' ( temp int) 0:91 c1: direct index for structure ( uniform int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:91 Constant: 0:91 0 (const uint) 0:91 move second child to first child ( temp 4-component vector of int) 0:91 'storeTemp' ( temp 4-component vector of int) 0:91 imageLoad ( temp 4-component vector of int) 0:91 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 left shift second child into first child ( temp 4-component vector of int) 0:91 'storeTemp' ( temp 4-component vector of int) 0:91 Constant: 0:91 2 (const int) 0:91 imageStore ( temp void) 0:91 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 'storeTemp' ( temp 4-component vector of int) 0:91 'storeTemp' ( temp 4-component vector of int) 0:92 Sequence 0:92 move second child to first child ( temp int) 0:92 'coordTemp' ( temp int) 0:92 c1: direct index for structure ( uniform int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:92 Constant: 0:92 0 (const uint) 0:92 move second child to first child ( temp 4-component vector of int) 0:92 'storeTemp' ( temp 4-component vector of int) 0:92 imageLoad ( temp 4-component vector of int) 0:92 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 right shift second child into first child ( temp 4-component vector of int) 0:92 'storeTemp' ( temp 4-component vector of int) 0:92 Constant: 0:92 2 (const int) 0:92 imageStore ( temp void) 0:92 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 'storeTemp' ( temp 4-component vector of int) 0:92 'storeTemp' ( temp 4-component vector of int) 0:95 Sequence 0:95 move second child to first child ( temp 4-component vector of float) 0:95 'storeTemp' ( temp 4-component vector of float) 0:95 Function Call: SomeValue( ( temp 4-component vector of float) 0:95 imageStore ( temp void) 0:95 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:95 c2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:95 Constant: 0:95 1 (const uint) 0:95 'storeTemp' ( temp 4-component vector of float) 0:95 'storeTemp' ( temp 4-component vector of float) 0:96 Sequence 0:96 imageStore ( temp void) 0:96 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:96 c2: direct index for structure ( uniform 2-component vector of int) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:96 Constant: 0:96 1 (const uint) 0:96 'lf4' ( temp 4-component vector of float) 0:96 'lf4' ( temp 4-component vector of float) 0:97 Sequence 0:97 move second child to first child ( temp 4-component vector of int) 0:97 'storeTemp' ( temp 4-component vector of int) 0:97 Constant: 0:97 5 (const int) 0:97 2 (const int) 0:97 3 (const int) 0:97 4 (const int) 0:97 imageStore ( temp void) 0:97 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:97 c2: direct index for structure ( uniform 2-component vector of int) 0:97 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:97 Constant: 0:97 1 (const uint) 0:97 'storeTemp' ( temp 4-component vector of int) 0:97 'storeTemp' ( temp 4-component vector of int) 0:98 Sequence 0:98 move second child to first child ( temp 4-component vector of uint) 0:98 'storeTemp' ( temp 4-component vector of uint) 0:98 Constant: 0:98 6 (const uint) 0:98 2 (const uint) 0:98 3 (const uint) 0:98 4 (const uint) 0:98 imageStore ( temp void) 0:98 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:98 c2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:98 Constant: 0:98 1 (const uint) 0:98 'storeTemp' ( temp 4-component vector of uint) 0:98 'storeTemp' ( temp 4-component vector of uint) 0:101 Sequence 0:101 move second child to first child ( temp 4-component vector of float) 0:101 'storeTemp' ( temp 4-component vector of float) 0:101 Function Call: SomeValue( ( temp 4-component vector of float) 0:101 imageStore ( temp void) 0:101 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:101 c3: direct index for structure ( uniform 3-component vector of int) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:101 Constant: 0:101 2 (const uint) 0:101 'storeTemp' ( temp 4-component vector of float) 0:101 'storeTemp' ( temp 4-component vector of float) 0:102 Sequence 0:102 imageStore ( temp void) 0:102 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:102 c3: direct index for structure ( uniform 3-component vector of int) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:102 Constant: 0:102 2 (const uint) 0:102 'lf4' ( temp 4-component vector of float) 0:102 'lf4' ( temp 4-component vector of float) 0:103 Sequence 0:103 move second child to first child ( temp 4-component vector of int) 0:103 'storeTemp' ( temp 4-component vector of int) 0:103 Constant: 0:103 8 (const int) 0:103 6 (const int) 0:103 7 (const int) 0:103 8 (const int) 0:103 imageStore ( temp void) 0:103 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:103 c3: direct index for structure ( uniform 3-component vector of int) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:103 Constant: 0:103 2 (const uint) 0:103 'storeTemp' ( temp 4-component vector of int) 0:103 'storeTemp' ( temp 4-component vector of int) 0:104 Sequence 0:104 move second child to first child ( temp 4-component vector of uint) 0:104 'storeTemp' ( temp 4-component vector of uint) 0:104 Constant: 0:104 9 (const uint) 0:104 2 (const uint) 0:104 3 (const uint) 0:104 4 (const uint) 0:104 imageStore ( temp void) 0:104 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:104 c3: direct index for structure ( uniform 3-component vector of int) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:104 Constant: 0:104 2 (const uint) 0:104 'storeTemp' ( temp 4-component vector of uint) 0:104 'storeTemp' ( temp 4-component vector of uint) 0:107 Function Call: Fn1(vf4; ( temp 4-component vector of float) 0:107 imageLoad ( temp 4-component vector of float) 0:107 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:107 c1: direct index for structure ( uniform int) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:107 Constant: 0:107 0 (const uint) 0:108 Function Call: Fn1(vi4; ( temp 4-component vector of int) 0:108 imageLoad ( temp 4-component vector of int) 0:108 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:108 c1: direct index for structure ( uniform int) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:108 Constant: 0:108 0 (const uint) 0:109 Function Call: Fn1(vu4; ( temp 4-component vector of uint) 0:109 imageLoad ( temp 4-component vector of uint) 0:109 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:109 c1: direct index for structure ( uniform int) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:109 Constant: 0:109 0 (const uint) 0:111 Comma ( temp void) 0:111 Function Call: Fn2(vf4; ( temp void) 0:111 'tempArg' ( temp 4-component vector of float) 0:111 Sequence 0:111 imageStore ( temp void) 0:111 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:111 c1: direct index for structure ( uniform int) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:111 Constant: 0:111 0 (const uint) 0:111 'tempArg' ( temp 4-component vector of float) 0:111 'tempArg' ( temp 4-component vector of float) 0:112 Comma ( temp void) 0:112 Function Call: Fn2(vi4; ( temp void) 0:112 'tempArg' ( temp 4-component vector of int) 0:112 Sequence 0:112 imageStore ( temp void) 0:112 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:112 c1: direct index for structure ( uniform int) 0:112 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:112 Constant: 0:112 0 (const uint) 0:112 'tempArg' ( temp 4-component vector of int) 0:112 'tempArg' ( temp 4-component vector of int) 0:113 Comma ( temp void) 0:113 Function Call: Fn2(vu4; ( temp void) 0:113 'tempArg' ( temp 4-component vector of uint) 0:113 Sequence 0:113 imageStore ( temp void) 0:113 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:113 c1: direct index for structure ( uniform int) 0:113 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:113 Constant: 0:113 0 (const uint) 0:113 'tempArg' ( temp 4-component vector of uint) 0:113 'tempArg' ( temp 4-component vector of uint) 0:117 Sequence 0:117 move second child to first child ( temp int) 0:117 'coordTemp' ( temp int) 0:117 c1: direct index for structure ( uniform int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:117 Constant: 0:117 0 (const uint) 0:117 move second child to first child ( temp 4-component vector of float) 0:117 'storeTemp' ( temp 4-component vector of float) 0:117 imageLoad ( temp 4-component vector of float) 0:117 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 Pre-Increment ( temp 4-component vector of float) 0:117 'storeTemp' ( temp 4-component vector of float) 0:117 imageStore ( temp void) 0:117 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 'storeTemp' ( temp 4-component vector of float) 0:117 'storeTemp' ( temp 4-component vector of float) 0:118 Sequence 0:118 move second child to first child ( temp int) 0:118 'coordTemp' ( temp int) 0:118 c1: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:118 Constant: 0:118 0 (const uint) 0:118 move second child to first child ( temp 4-component vector of int) 0:118 'storeTemp' ( temp 4-component vector of int) 0:118 imageLoad ( temp 4-component vector of int) 0:118 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 Pre-Increment ( temp 4-component vector of int) 0:118 'storeTemp' ( temp 4-component vector of int) 0:118 imageStore ( temp void) 0:118 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 'storeTemp' ( temp 4-component vector of int) 0:118 'storeTemp' ( temp 4-component vector of int) 0:119 Sequence 0:119 move second child to first child ( temp int) 0:119 'coordTemp' ( temp int) 0:119 c1: direct index for structure ( uniform int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:119 Constant: 0:119 0 (const uint) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 'storeTemp' ( temp 4-component vector of uint) 0:119 imageLoad ( temp 4-component vector of uint) 0:119 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 Pre-Increment ( temp 4-component vector of uint) 0:119 'storeTemp' ( temp 4-component vector of uint) 0:119 imageStore ( temp void) 0:119 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 'storeTemp' ( temp 4-component vector of uint) 0:119 'storeTemp' ( temp 4-component vector of uint) 0:121 Sequence 0:121 move second child to first child ( temp int) 0:121 'coordTemp' ( temp int) 0:121 c1: direct index for structure ( uniform int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:121 Constant: 0:121 0 (const uint) 0:121 move second child to first child ( temp 4-component vector of float) 0:121 'storeTemp' ( temp 4-component vector of float) 0:121 imageLoad ( temp 4-component vector of float) 0:121 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 Pre-Decrement ( temp 4-component vector of float) 0:121 'storeTemp' ( temp 4-component vector of float) 0:121 imageStore ( temp void) 0:121 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 'storeTemp' ( temp 4-component vector of float) 0:121 'storeTemp' ( temp 4-component vector of float) 0:122 Sequence 0:122 move second child to first child ( temp int) 0:122 'coordTemp' ( temp int) 0:122 c1: direct index for structure ( uniform int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:122 Constant: 0:122 0 (const uint) 0:122 move second child to first child ( temp 4-component vector of int) 0:122 'storeTemp' ( temp 4-component vector of int) 0:122 imageLoad ( temp 4-component vector of int) 0:122 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 Pre-Decrement ( temp 4-component vector of int) 0:122 'storeTemp' ( temp 4-component vector of int) 0:122 imageStore ( temp void) 0:122 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 'storeTemp' ( temp 4-component vector of int) 0:122 'storeTemp' ( temp 4-component vector of int) 0:123 Sequence 0:123 move second child to first child ( temp int) 0:123 'coordTemp' ( temp int) 0:123 c1: direct index for structure ( uniform int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:123 Constant: 0:123 0 (const uint) 0:123 move second child to first child ( temp 4-component vector of uint) 0:123 'storeTemp' ( temp 4-component vector of uint) 0:123 imageLoad ( temp 4-component vector of uint) 0:123 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 Pre-Decrement ( temp 4-component vector of uint) 0:123 'storeTemp' ( temp 4-component vector of uint) 0:123 imageStore ( temp void) 0:123 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 'storeTemp' ( temp 4-component vector of uint) 0:123 'storeTemp' ( temp 4-component vector of uint) 0:126 Sequence 0:126 move second child to first child ( temp int) 0:126 'coordTemp' ( temp int) 0:126 c1: direct index for structure ( uniform int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:126 Constant: 0:126 0 (const uint) 0:126 move second child to first child ( temp 4-component vector of float) 0:126 'storeTempPre' ( temp 4-component vector of float) 0:126 imageLoad ( temp 4-component vector of float) 0:126 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 move second child to first child ( temp 4-component vector of float) 0:126 'storeTempPost' ( temp 4-component vector of float) 0:126 'storeTempPre' ( temp 4-component vector of float) 0:126 Post-Increment ( temp 4-component vector of float) 0:126 'storeTempPost' ( temp 4-component vector of float) 0:126 imageStore ( temp void) 0:126 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 'storeTempPost' ( temp 4-component vector of float) 0:126 'storeTempPre' ( temp 4-component vector of float) 0:127 Sequence 0:127 move second child to first child ( temp int) 0:127 'coordTemp' ( temp int) 0:127 c1: direct index for structure ( uniform int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:127 Constant: 0:127 0 (const uint) 0:127 move second child to first child ( temp 4-component vector of uint) 0:127 'storeTempPre' ( temp 4-component vector of uint) 0:127 imageLoad ( temp 4-component vector of uint) 0:127 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 move second child to first child ( temp 4-component vector of uint) 0:127 'storeTempPost' ( temp 4-component vector of uint) 0:127 'storeTempPre' ( temp 4-component vector of uint) 0:127 Post-Decrement ( temp 4-component vector of uint) 0:127 'storeTempPost' ( temp 4-component vector of uint) 0:127 imageStore ( temp void) 0:127 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 'storeTempPost' ( temp 4-component vector of uint) 0:127 'storeTempPre' ( temp 4-component vector of uint) 0:128 Sequence 0:128 move second child to first child ( temp int) 0:128 'coordTemp' ( temp int) 0:128 c1: direct index for structure ( uniform int) 0:128 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:128 Constant: 0:128 0 (const uint) 0:128 move second child to first child ( temp 4-component vector of int) 0:128 'storeTempPre' ( temp 4-component vector of int) 0:128 imageLoad ( temp 4-component vector of int) 0:128 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 move second child to first child ( temp 4-component vector of int) 0:128 'storeTempPost' ( temp 4-component vector of int) 0:128 'storeTempPre' ( temp 4-component vector of int) 0:128 Post-Increment ( temp 4-component vector of int) 0:128 'storeTempPost' ( temp 4-component vector of int) 0:128 imageStore ( temp void) 0:128 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 'storeTempPost' ( temp 4-component vector of int) 0:128 'storeTempPre' ( temp 4-component vector of int) 0:130 Sequence 0:130 move second child to first child ( temp int) 0:130 'coordTemp' ( temp int) 0:130 c1: direct index for structure ( uniform int) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:130 Constant: 0:130 0 (const uint) 0:130 move second child to first child ( temp 4-component vector of float) 0:130 'storeTempPre' ( temp 4-component vector of float) 0:130 imageLoad ( temp 4-component vector of float) 0:130 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 move second child to first child ( temp 4-component vector of float) 0:130 'storeTempPost' ( temp 4-component vector of float) 0:130 'storeTempPre' ( temp 4-component vector of float) 0:130 Post-Decrement ( temp 4-component vector of float) 0:130 'storeTempPost' ( temp 4-component vector of float) 0:130 imageStore ( temp void) 0:130 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 'storeTempPost' ( temp 4-component vector of float) 0:130 'storeTempPre' ( temp 4-component vector of float) 0:131 Sequence 0:131 move second child to first child ( temp int) 0:131 'coordTemp' ( temp int) 0:131 c1: direct index for structure ( uniform int) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:131 Constant: 0:131 0 (const uint) 0:131 move second child to first child ( temp 4-component vector of int) 0:131 'storeTempPre' ( temp 4-component vector of int) 0:131 imageLoad ( temp 4-component vector of int) 0:131 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 move second child to first child ( temp 4-component vector of int) 0:131 'storeTempPost' ( temp 4-component vector of int) 0:131 'storeTempPre' ( temp 4-component vector of int) 0:131 Post-Increment ( temp 4-component vector of int) 0:131 'storeTempPost' ( temp 4-component vector of int) 0:131 imageStore ( temp void) 0:131 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 'storeTempPost' ( temp 4-component vector of int) 0:131 'storeTempPre' ( temp 4-component vector of int) 0:132 Sequence 0:132 move second child to first child ( temp int) 0:132 'coordTemp' ( temp int) 0:132 c1: direct index for structure ( uniform int) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:132 Constant: 0:132 0 (const uint) 0:132 move second child to first child ( temp 4-component vector of uint) 0:132 'storeTempPre' ( temp 4-component vector of uint) 0:132 imageLoad ( temp 4-component vector of uint) 0:132 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 move second child to first child ( temp 4-component vector of uint) 0:132 'storeTempPost' ( temp 4-component vector of uint) 0:132 'storeTempPre' ( temp 4-component vector of uint) 0:132 Post-Decrement ( temp 4-component vector of uint) 0:132 'storeTempPost' ( temp 4-component vector of uint) 0:132 imageStore ( temp void) 0:132 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 'storeTempPost' ( temp 4-component vector of uint) 0:132 'storeTempPre' ( temp 4-component vector of uint) 0:135 Sequence 0:135 move second child to first child ( temp 4-component vector of float) 0:135 'storeTemp' ( temp 4-component vector of float) 0:135 imageLoad ( temp 4-component vector of float) 0:135 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:135 Constant: 0:135 2 (const int) 0:135 3 (const int) 0:135 imageStore ( temp void) 0:135 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:135 Constant: 0:135 1 (const int) 0:135 'storeTemp' ( temp 4-component vector of float) 0:135 'storeTemp' ( temp 4-component vector of float) 0:137 move second child to first child ( temp 4-component vector of float) 0:137 Color: direct index for structure ( temp 4-component vector of float) 0:137 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:139 Branch: Return with expression 0:139 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Constant: 0:53 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:? 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:? 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:? 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:? 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:42 Function Definition: Fn1(vi4; ( temp 4-component vector of int) 0:42 Function Parameters: 0:42 'x' ( in 4-component vector of int) 0:? Sequence 0:42 Branch: Return with expression 0:42 'x' ( in 4-component vector of int) 0:43 Function Definition: Fn1(vu4; ( temp 4-component vector of uint) 0:43 Function Parameters: 0:43 'x' ( in 4-component vector of uint) 0:? Sequence 0:43 Branch: Return with expression 0:43 'x' ( in 4-component vector of uint) 0:44 Function Definition: Fn1(vf4; ( temp 4-component vector of float) 0:44 Function Parameters: 0:44 'x' ( in 4-component vector of float) 0:? Sequence 0:44 Branch: Return with expression 0:44 'x' ( in 4-component vector of float) 0:46 Function Definition: Fn2(vi4; ( temp void) 0:46 Function Parameters: 0:46 'x' ( out 4-component vector of int) 0:? Sequence 0:46 move second child to first child ( temp 4-component vector of int) 0:46 'x' ( out 4-component vector of int) 0:46 Constant: 0:46 0 (const int) 0:46 0 (const int) 0:46 0 (const int) 0:46 0 (const int) 0:47 Function Definition: Fn2(vu4; ( temp void) 0:47 Function Parameters: 0:47 'x' ( out 4-component vector of uint) 0:? Sequence 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 'x' ( out 4-component vector of uint) 0:47 Constant: 0:47 0 (const uint) 0:47 0 (const uint) 0:47 0 (const uint) 0:47 0 (const uint) 0:48 Function Definition: Fn2(vf4; ( temp void) 0:48 Function Parameters: 0:48 'x' ( out 4-component vector of float) 0:? Sequence 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'x' ( out 4-component vector of float) 0:48 Constant: 0:48 0.000000 0:48 0.000000 0:48 0.000000 0:48 0.000000 0:50 Function Definition: SomeValue( ( temp 4-component vector of float) 0:50 Function Parameters: 0:? Sequence 0:50 Branch: Return with expression 0:50 Convert int to float ( temp 4-component vector of float) 0:50 c4: direct index for structure ( uniform 4-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:50 Constant: 0:50 3 (const uint) 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Parameters: 0:? Sequence 0:57 imageLoad ( temp 4-component vector of float) 0:57 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:57 c1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:57 Constant: 0:57 0 (const uint) 0:59 Sequence 0:59 move second child to first child ( temp 4-component vector of float) 0:59 'r00' ( temp 4-component vector of float) 0:59 imageLoad ( temp 4-component vector of float) 0:59 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:59 c1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:59 Constant: 0:59 0 (const uint) 0:60 Sequence 0:60 move second child to first child ( temp 4-component vector of int) 0:60 'r01' ( temp 4-component vector of int) 0:60 imageLoad ( temp 4-component vector of int) 0:60 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:60 c1: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:60 Constant: 0:60 0 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of uint) 0:61 'r02' ( temp 4-component vector of uint) 0:61 imageLoad ( temp 4-component vector of uint) 0:61 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:61 c1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:61 Constant: 0:61 0 (const uint) 0:64 Sequence 0:64 move second child to first child ( temp 4-component vector of float) 0:64 'r10' ( temp 4-component vector of float) 0:64 imageLoad ( temp 4-component vector of float) 0:64 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:64 Constant: 0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child ( temp 4-component vector of int) 0:65 'r11' ( temp 4-component vector of int) 0:65 imageLoad ( temp 4-component vector of int) 0:65 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:65 c2: direct index for structure ( uniform 2-component vector of int) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:65 Constant: 0:65 1 (const uint) 0:66 Sequence 0:66 move second child to first child ( temp 4-component vector of uint) 0:66 'r12' ( temp 4-component vector of uint) 0:66 imageLoad ( temp 4-component vector of uint) 0:66 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:66 c2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:66 Constant: 0:66 1 (const uint) 0:69 Sequence 0:69 move second child to first child ( temp 4-component vector of float) 0:69 'r20' ( temp 4-component vector of float) 0:69 imageLoad ( temp 4-component vector of float) 0:69 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:69 Constant: 0:69 2 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp 4-component vector of int) 0:70 'r21' ( temp 4-component vector of int) 0:70 imageLoad ( temp 4-component vector of int) 0:70 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:70 c3: direct index for structure ( uniform 3-component vector of int) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:70 Constant: 0:70 2 (const uint) 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of uint) 0:71 'r22' ( temp 4-component vector of uint) 0:71 imageLoad ( temp 4-component vector of uint) 0:71 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:71 c3: direct index for structure ( uniform 3-component vector of int) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:71 Constant: 0:71 2 (const uint) 0:73 Sequence 0:73 move second child to first child ( temp 4-component vector of float) 0:73 'lf4' ( temp 4-component vector of float) 0:73 uf4: direct index for structure ( uniform 4-component vector of float) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:73 Constant: 0:73 8 (const uint) 0:77 Sequence 0:77 move second child to first child ( temp 4-component vector of float) 0:77 'storeTemp' ( temp 4-component vector of float) 0:77 Function Call: SomeValue( ( temp 4-component vector of float) 0:77 imageStore ( temp void) 0:77 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:77 c1: direct index for structure ( uniform int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:77 Constant: 0:77 0 (const uint) 0:77 'storeTemp' ( temp 4-component vector of float) 0:77 'storeTemp' ( temp 4-component vector of float) 0:78 Sequence 0:78 imageStore ( temp void) 0:78 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:78 c1: direct index for structure ( uniform int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:78 Constant: 0:78 0 (const uint) 0:78 'lf4' ( temp 4-component vector of float) 0:78 'lf4' ( temp 4-component vector of float) 0:79 Sequence 0:79 move second child to first child ( temp 4-component vector of int) 0:79 'storeTemp' ( temp 4-component vector of int) 0:79 Constant: 0:79 2 (const int) 0:79 2 (const int) 0:79 3 (const int) 0:79 4 (const int) 0:79 imageStore ( temp void) 0:79 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:79 c1: direct index for structure ( uniform int) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:79 Constant: 0:79 0 (const uint) 0:79 'storeTemp' ( temp 4-component vector of int) 0:79 'storeTemp' ( temp 4-component vector of int) 0:80 Sequence 0:80 move second child to first child ( temp 4-component vector of uint) 0:80 'storeTemp' ( temp 4-component vector of uint) 0:80 Constant: 0:80 3 (const uint) 0:80 2 (const uint) 0:80 3 (const uint) 0:80 4 (const uint) 0:80 imageStore ( temp void) 0:80 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:80 c1: direct index for structure ( uniform int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:80 Constant: 0:80 0 (const uint) 0:80 'storeTemp' ( temp 4-component vector of uint) 0:80 'storeTemp' ( temp 4-component vector of uint) 0:83 Sequence 0:83 move second child to first child ( temp 4-component vector of float) 0:83 'val1' ( temp 4-component vector of float) 0:83 Sequence 0:83 move second child to first child ( temp int) 0:83 'coordTemp' ( temp int) 0:83 c1: direct index for structure ( uniform int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:83 Constant: 0:83 0 (const uint) 0:83 move second child to first child ( temp 4-component vector of float) 0:83 'storeTemp' ( temp 4-component vector of float) 0:83 imageLoad ( temp 4-component vector of float) 0:83 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 vector scale second child into first child ( temp 4-component vector of float) 0:83 'storeTemp' ( temp 4-component vector of float) 0:83 Constant: 0:83 2.000000 0:83 imageStore ( temp void) 0:83 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 'storeTemp' ( temp 4-component vector of float) 0:83 'storeTemp' ( temp 4-component vector of float) 0:84 Sequence 0:84 move second child to first child ( temp int) 0:84 'coordTemp' ( temp int) 0:84 c1: direct index for structure ( uniform int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:84 Constant: 0:84 0 (const uint) 0:84 move second child to first child ( temp 4-component vector of float) 0:84 'storeTemp' ( temp 4-component vector of float) 0:84 imageLoad ( temp 4-component vector of float) 0:84 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 subtract second child into first child ( temp 4-component vector of float) 0:84 'storeTemp' ( temp 4-component vector of float) 0:84 Constant: 0:84 3.000000 0:84 imageStore ( temp void) 0:84 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 'storeTemp' ( temp 4-component vector of float) 0:84 'storeTemp' ( temp 4-component vector of float) 0:85 Sequence 0:85 move second child to first child ( temp int) 0:85 'coordTemp' ( temp int) 0:85 c1: direct index for structure ( uniform int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:85 Constant: 0:85 0 (const uint) 0:85 move second child to first child ( temp 4-component vector of float) 0:85 'storeTemp' ( temp 4-component vector of float) 0:85 imageLoad ( temp 4-component vector of float) 0:85 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 add second child into first child ( temp 4-component vector of float) 0:85 'storeTemp' ( temp 4-component vector of float) 0:85 Constant: 0:85 4.000000 0:85 imageStore ( temp void) 0:85 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 'storeTemp' ( temp 4-component vector of float) 0:85 'storeTemp' ( temp 4-component vector of float) 0:87 Sequence 0:87 move second child to first child ( temp int) 0:87 'coordTemp' ( temp int) 0:87 c1: direct index for structure ( uniform int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:87 Constant: 0:87 0 (const uint) 0:87 move second child to first child ( temp 4-component vector of int) 0:87 'storeTemp' ( temp 4-component vector of int) 0:87 imageLoad ( temp 4-component vector of int) 0:87 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 divide second child into first child ( temp 4-component vector of int) 0:87 'storeTemp' ( temp 4-component vector of int) 0:87 Constant: 0:87 2 (const int) 0:87 imageStore ( temp void) 0:87 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 'storeTemp' ( temp 4-component vector of int) 0:87 'storeTemp' ( temp 4-component vector of int) 0:88 Sequence 0:88 move second child to first child ( temp int) 0:88 'coordTemp' ( temp int) 0:88 c1: direct index for structure ( uniform int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:88 Constant: 0:88 0 (const uint) 0:88 move second child to first child ( temp 4-component vector of int) 0:88 'storeTemp' ( temp 4-component vector of int) 0:88 imageLoad ( temp 4-component vector of int) 0:88 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 mod second child into first child ( temp 4-component vector of int) 0:88 'storeTemp' ( temp 4-component vector of int) 0:88 Constant: 0:88 2 (const int) 0:88 imageStore ( temp void) 0:88 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 'storeTemp' ( temp 4-component vector of int) 0:88 'storeTemp' ( temp 4-component vector of int) 0:89 Sequence 0:89 move second child to first child ( temp int) 0:89 'coordTemp' ( temp int) 0:89 c1: direct index for structure ( uniform int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:89 Constant: 0:89 0 (const uint) 0:89 move second child to first child ( temp 4-component vector of int) 0:89 'storeTemp' ( temp 4-component vector of int) 0:89 imageLoad ( temp 4-component vector of int) 0:89 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 and second child into first child ( temp 4-component vector of int) 0:89 'storeTemp' ( temp 4-component vector of int) 0:89 Constant: 0:89 65535 (const int) 0:89 imageStore ( temp void) 0:89 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 'storeTemp' ( temp 4-component vector of int) 0:89 'storeTemp' ( temp 4-component vector of int) 0:90 Sequence 0:90 move second child to first child ( temp int) 0:90 'coordTemp' ( temp int) 0:90 c1: direct index for structure ( uniform int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:90 Constant: 0:90 0 (const uint) 0:90 move second child to first child ( temp 4-component vector of int) 0:90 'storeTemp' ( temp 4-component vector of int) 0:90 imageLoad ( temp 4-component vector of int) 0:90 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 or second child into first child ( temp 4-component vector of int) 0:90 'storeTemp' ( temp 4-component vector of int) 0:90 Constant: 0:90 61680 (const int) 0:90 imageStore ( temp void) 0:90 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 'storeTemp' ( temp 4-component vector of int) 0:90 'storeTemp' ( temp 4-component vector of int) 0:91 Sequence 0:91 move second child to first child ( temp int) 0:91 'coordTemp' ( temp int) 0:91 c1: direct index for structure ( uniform int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:91 Constant: 0:91 0 (const uint) 0:91 move second child to first child ( temp 4-component vector of int) 0:91 'storeTemp' ( temp 4-component vector of int) 0:91 imageLoad ( temp 4-component vector of int) 0:91 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 left shift second child into first child ( temp 4-component vector of int) 0:91 'storeTemp' ( temp 4-component vector of int) 0:91 Constant: 0:91 2 (const int) 0:91 imageStore ( temp void) 0:91 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 'storeTemp' ( temp 4-component vector of int) 0:91 'storeTemp' ( temp 4-component vector of int) 0:92 Sequence 0:92 move second child to first child ( temp int) 0:92 'coordTemp' ( temp int) 0:92 c1: direct index for structure ( uniform int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:92 Constant: 0:92 0 (const uint) 0:92 move second child to first child ( temp 4-component vector of int) 0:92 'storeTemp' ( temp 4-component vector of int) 0:92 imageLoad ( temp 4-component vector of int) 0:92 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 right shift second child into first child ( temp 4-component vector of int) 0:92 'storeTemp' ( temp 4-component vector of int) 0:92 Constant: 0:92 2 (const int) 0:92 imageStore ( temp void) 0:92 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 'storeTemp' ( temp 4-component vector of int) 0:92 'storeTemp' ( temp 4-component vector of int) 0:95 Sequence 0:95 move second child to first child ( temp 4-component vector of float) 0:95 'storeTemp' ( temp 4-component vector of float) 0:95 Function Call: SomeValue( ( temp 4-component vector of float) 0:95 imageStore ( temp void) 0:95 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:95 c2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:95 Constant: 0:95 1 (const uint) 0:95 'storeTemp' ( temp 4-component vector of float) 0:95 'storeTemp' ( temp 4-component vector of float) 0:96 Sequence 0:96 imageStore ( temp void) 0:96 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:96 c2: direct index for structure ( uniform 2-component vector of int) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:96 Constant: 0:96 1 (const uint) 0:96 'lf4' ( temp 4-component vector of float) 0:96 'lf4' ( temp 4-component vector of float) 0:97 Sequence 0:97 move second child to first child ( temp 4-component vector of int) 0:97 'storeTemp' ( temp 4-component vector of int) 0:97 Constant: 0:97 5 (const int) 0:97 2 (const int) 0:97 3 (const int) 0:97 4 (const int) 0:97 imageStore ( temp void) 0:97 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:97 c2: direct index for structure ( uniform 2-component vector of int) 0:97 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:97 Constant: 0:97 1 (const uint) 0:97 'storeTemp' ( temp 4-component vector of int) 0:97 'storeTemp' ( temp 4-component vector of int) 0:98 Sequence 0:98 move second child to first child ( temp 4-component vector of uint) 0:98 'storeTemp' ( temp 4-component vector of uint) 0:98 Constant: 0:98 6 (const uint) 0:98 2 (const uint) 0:98 3 (const uint) 0:98 4 (const uint) 0:98 imageStore ( temp void) 0:98 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:98 c2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:98 Constant: 0:98 1 (const uint) 0:98 'storeTemp' ( temp 4-component vector of uint) 0:98 'storeTemp' ( temp 4-component vector of uint) 0:101 Sequence 0:101 move second child to first child ( temp 4-component vector of float) 0:101 'storeTemp' ( temp 4-component vector of float) 0:101 Function Call: SomeValue( ( temp 4-component vector of float) 0:101 imageStore ( temp void) 0:101 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:101 c3: direct index for structure ( uniform 3-component vector of int) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:101 Constant: 0:101 2 (const uint) 0:101 'storeTemp' ( temp 4-component vector of float) 0:101 'storeTemp' ( temp 4-component vector of float) 0:102 Sequence 0:102 imageStore ( temp void) 0:102 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:102 c3: direct index for structure ( uniform 3-component vector of int) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:102 Constant: 0:102 2 (const uint) 0:102 'lf4' ( temp 4-component vector of float) 0:102 'lf4' ( temp 4-component vector of float) 0:103 Sequence 0:103 move second child to first child ( temp 4-component vector of int) 0:103 'storeTemp' ( temp 4-component vector of int) 0:103 Constant: 0:103 8 (const int) 0:103 6 (const int) 0:103 7 (const int) 0:103 8 (const int) 0:103 imageStore ( temp void) 0:103 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:103 c3: direct index for structure ( uniform 3-component vector of int) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:103 Constant: 0:103 2 (const uint) 0:103 'storeTemp' ( temp 4-component vector of int) 0:103 'storeTemp' ( temp 4-component vector of int) 0:104 Sequence 0:104 move second child to first child ( temp 4-component vector of uint) 0:104 'storeTemp' ( temp 4-component vector of uint) 0:104 Constant: 0:104 9 (const uint) 0:104 2 (const uint) 0:104 3 (const uint) 0:104 4 (const uint) 0:104 imageStore ( temp void) 0:104 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:104 c3: direct index for structure ( uniform 3-component vector of int) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:104 Constant: 0:104 2 (const uint) 0:104 'storeTemp' ( temp 4-component vector of uint) 0:104 'storeTemp' ( temp 4-component vector of uint) 0:107 Function Call: Fn1(vf4; ( temp 4-component vector of float) 0:107 imageLoad ( temp 4-component vector of float) 0:107 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:107 c1: direct index for structure ( uniform int) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:107 Constant: 0:107 0 (const uint) 0:108 Function Call: Fn1(vi4; ( temp 4-component vector of int) 0:108 imageLoad ( temp 4-component vector of int) 0:108 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:108 c1: direct index for structure ( uniform int) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:108 Constant: 0:108 0 (const uint) 0:109 Function Call: Fn1(vu4; ( temp 4-component vector of uint) 0:109 imageLoad ( temp 4-component vector of uint) 0:109 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:109 c1: direct index for structure ( uniform int) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:109 Constant: 0:109 0 (const uint) 0:111 Comma ( temp void) 0:111 Function Call: Fn2(vf4; ( temp void) 0:111 'tempArg' ( temp 4-component vector of float) 0:111 Sequence 0:111 imageStore ( temp void) 0:111 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:111 c1: direct index for structure ( uniform int) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:111 Constant: 0:111 0 (const uint) 0:111 'tempArg' ( temp 4-component vector of float) 0:111 'tempArg' ( temp 4-component vector of float) 0:112 Comma ( temp void) 0:112 Function Call: Fn2(vi4; ( temp void) 0:112 'tempArg' ( temp 4-component vector of int) 0:112 Sequence 0:112 imageStore ( temp void) 0:112 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:112 c1: direct index for structure ( uniform int) 0:112 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:112 Constant: 0:112 0 (const uint) 0:112 'tempArg' ( temp 4-component vector of int) 0:112 'tempArg' ( temp 4-component vector of int) 0:113 Comma ( temp void) 0:113 Function Call: Fn2(vu4; ( temp void) 0:113 'tempArg' ( temp 4-component vector of uint) 0:113 Sequence 0:113 imageStore ( temp void) 0:113 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:113 c1: direct index for structure ( uniform int) 0:113 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:113 Constant: 0:113 0 (const uint) 0:113 'tempArg' ( temp 4-component vector of uint) 0:113 'tempArg' ( temp 4-component vector of uint) 0:117 Sequence 0:117 move second child to first child ( temp int) 0:117 'coordTemp' ( temp int) 0:117 c1: direct index for structure ( uniform int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:117 Constant: 0:117 0 (const uint) 0:117 move second child to first child ( temp 4-component vector of float) 0:117 'storeTemp' ( temp 4-component vector of float) 0:117 imageLoad ( temp 4-component vector of float) 0:117 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 Pre-Increment ( temp 4-component vector of float) 0:117 'storeTemp' ( temp 4-component vector of float) 0:117 imageStore ( temp void) 0:117 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 'storeTemp' ( temp 4-component vector of float) 0:117 'storeTemp' ( temp 4-component vector of float) 0:118 Sequence 0:118 move second child to first child ( temp int) 0:118 'coordTemp' ( temp int) 0:118 c1: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:118 Constant: 0:118 0 (const uint) 0:118 move second child to first child ( temp 4-component vector of int) 0:118 'storeTemp' ( temp 4-component vector of int) 0:118 imageLoad ( temp 4-component vector of int) 0:118 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 Pre-Increment ( temp 4-component vector of int) 0:118 'storeTemp' ( temp 4-component vector of int) 0:118 imageStore ( temp void) 0:118 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 'storeTemp' ( temp 4-component vector of int) 0:118 'storeTemp' ( temp 4-component vector of int) 0:119 Sequence 0:119 move second child to first child ( temp int) 0:119 'coordTemp' ( temp int) 0:119 c1: direct index for structure ( uniform int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:119 Constant: 0:119 0 (const uint) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 'storeTemp' ( temp 4-component vector of uint) 0:119 imageLoad ( temp 4-component vector of uint) 0:119 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 Pre-Increment ( temp 4-component vector of uint) 0:119 'storeTemp' ( temp 4-component vector of uint) 0:119 imageStore ( temp void) 0:119 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 'storeTemp' ( temp 4-component vector of uint) 0:119 'storeTemp' ( temp 4-component vector of uint) 0:121 Sequence 0:121 move second child to first child ( temp int) 0:121 'coordTemp' ( temp int) 0:121 c1: direct index for structure ( uniform int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:121 Constant: 0:121 0 (const uint) 0:121 move second child to first child ( temp 4-component vector of float) 0:121 'storeTemp' ( temp 4-component vector of float) 0:121 imageLoad ( temp 4-component vector of float) 0:121 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 Pre-Decrement ( temp 4-component vector of float) 0:121 'storeTemp' ( temp 4-component vector of float) 0:121 imageStore ( temp void) 0:121 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 'storeTemp' ( temp 4-component vector of float) 0:121 'storeTemp' ( temp 4-component vector of float) 0:122 Sequence 0:122 move second child to first child ( temp int) 0:122 'coordTemp' ( temp int) 0:122 c1: direct index for structure ( uniform int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:122 Constant: 0:122 0 (const uint) 0:122 move second child to first child ( temp 4-component vector of int) 0:122 'storeTemp' ( temp 4-component vector of int) 0:122 imageLoad ( temp 4-component vector of int) 0:122 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 Pre-Decrement ( temp 4-component vector of int) 0:122 'storeTemp' ( temp 4-component vector of int) 0:122 imageStore ( temp void) 0:122 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 'storeTemp' ( temp 4-component vector of int) 0:122 'storeTemp' ( temp 4-component vector of int) 0:123 Sequence 0:123 move second child to first child ( temp int) 0:123 'coordTemp' ( temp int) 0:123 c1: direct index for structure ( uniform int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:123 Constant: 0:123 0 (const uint) 0:123 move second child to first child ( temp 4-component vector of uint) 0:123 'storeTemp' ( temp 4-component vector of uint) 0:123 imageLoad ( temp 4-component vector of uint) 0:123 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 Pre-Decrement ( temp 4-component vector of uint) 0:123 'storeTemp' ( temp 4-component vector of uint) 0:123 imageStore ( temp void) 0:123 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 'storeTemp' ( temp 4-component vector of uint) 0:123 'storeTemp' ( temp 4-component vector of uint) 0:126 Sequence 0:126 move second child to first child ( temp int) 0:126 'coordTemp' ( temp int) 0:126 c1: direct index for structure ( uniform int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:126 Constant: 0:126 0 (const uint) 0:126 move second child to first child ( temp 4-component vector of float) 0:126 'storeTempPre' ( temp 4-component vector of float) 0:126 imageLoad ( temp 4-component vector of float) 0:126 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 move second child to first child ( temp 4-component vector of float) 0:126 'storeTempPost' ( temp 4-component vector of float) 0:126 'storeTempPre' ( temp 4-component vector of float) 0:126 Post-Increment ( temp 4-component vector of float) 0:126 'storeTempPost' ( temp 4-component vector of float) 0:126 imageStore ( temp void) 0:126 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 'storeTempPost' ( temp 4-component vector of float) 0:126 'storeTempPre' ( temp 4-component vector of float) 0:127 Sequence 0:127 move second child to first child ( temp int) 0:127 'coordTemp' ( temp int) 0:127 c1: direct index for structure ( uniform int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:127 Constant: 0:127 0 (const uint) 0:127 move second child to first child ( temp 4-component vector of uint) 0:127 'storeTempPre' ( temp 4-component vector of uint) 0:127 imageLoad ( temp 4-component vector of uint) 0:127 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 move second child to first child ( temp 4-component vector of uint) 0:127 'storeTempPost' ( temp 4-component vector of uint) 0:127 'storeTempPre' ( temp 4-component vector of uint) 0:127 Post-Decrement ( temp 4-component vector of uint) 0:127 'storeTempPost' ( temp 4-component vector of uint) 0:127 imageStore ( temp void) 0:127 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 'storeTempPost' ( temp 4-component vector of uint) 0:127 'storeTempPre' ( temp 4-component vector of uint) 0:128 Sequence 0:128 move second child to first child ( temp int) 0:128 'coordTemp' ( temp int) 0:128 c1: direct index for structure ( uniform int) 0:128 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:128 Constant: 0:128 0 (const uint) 0:128 move second child to first child ( temp 4-component vector of int) 0:128 'storeTempPre' ( temp 4-component vector of int) 0:128 imageLoad ( temp 4-component vector of int) 0:128 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 move second child to first child ( temp 4-component vector of int) 0:128 'storeTempPost' ( temp 4-component vector of int) 0:128 'storeTempPre' ( temp 4-component vector of int) 0:128 Post-Increment ( temp 4-component vector of int) 0:128 'storeTempPost' ( temp 4-component vector of int) 0:128 imageStore ( temp void) 0:128 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 'storeTempPost' ( temp 4-component vector of int) 0:128 'storeTempPre' ( temp 4-component vector of int) 0:130 Sequence 0:130 move second child to first child ( temp int) 0:130 'coordTemp' ( temp int) 0:130 c1: direct index for structure ( uniform int) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:130 Constant: 0:130 0 (const uint) 0:130 move second child to first child ( temp 4-component vector of float) 0:130 'storeTempPre' ( temp 4-component vector of float) 0:130 imageLoad ( temp 4-component vector of float) 0:130 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 move second child to first child ( temp 4-component vector of float) 0:130 'storeTempPost' ( temp 4-component vector of float) 0:130 'storeTempPre' ( temp 4-component vector of float) 0:130 Post-Decrement ( temp 4-component vector of float) 0:130 'storeTempPost' ( temp 4-component vector of float) 0:130 imageStore ( temp void) 0:130 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 'storeTempPost' ( temp 4-component vector of float) 0:130 'storeTempPre' ( temp 4-component vector of float) 0:131 Sequence 0:131 move second child to first child ( temp int) 0:131 'coordTemp' ( temp int) 0:131 c1: direct index for structure ( uniform int) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:131 Constant: 0:131 0 (const uint) 0:131 move second child to first child ( temp 4-component vector of int) 0:131 'storeTempPre' ( temp 4-component vector of int) 0:131 imageLoad ( temp 4-component vector of int) 0:131 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 move second child to first child ( temp 4-component vector of int) 0:131 'storeTempPost' ( temp 4-component vector of int) 0:131 'storeTempPre' ( temp 4-component vector of int) 0:131 Post-Increment ( temp 4-component vector of int) 0:131 'storeTempPost' ( temp 4-component vector of int) 0:131 imageStore ( temp void) 0:131 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 'storeTempPost' ( temp 4-component vector of int) 0:131 'storeTempPre' ( temp 4-component vector of int) 0:132 Sequence 0:132 move second child to first child ( temp int) 0:132 'coordTemp' ( temp int) 0:132 c1: direct index for structure ( uniform int) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:132 Constant: 0:132 0 (const uint) 0:132 move second child to first child ( temp 4-component vector of uint) 0:132 'storeTempPre' ( temp 4-component vector of uint) 0:132 imageLoad ( temp 4-component vector of uint) 0:132 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 move second child to first child ( temp 4-component vector of uint) 0:132 'storeTempPost' ( temp 4-component vector of uint) 0:132 'storeTempPre' ( temp 4-component vector of uint) 0:132 Post-Decrement ( temp 4-component vector of uint) 0:132 'storeTempPost' ( temp 4-component vector of uint) 0:132 imageStore ( temp void) 0:132 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 'storeTempPost' ( temp 4-component vector of uint) 0:132 'storeTempPre' ( temp 4-component vector of uint) 0:135 Sequence 0:135 move second child to first child ( temp 4-component vector of float) 0:135 'storeTemp' ( temp 4-component vector of float) 0:135 imageLoad ( temp 4-component vector of float) 0:135 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:135 Constant: 0:135 2 (const int) 0:135 3 (const int) 0:135 imageStore ( temp void) 0:135 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:135 Constant: 0:135 1 (const int) 0:135 'storeTemp' ( temp 4-component vector of float) 0:135 'storeTemp' ( temp 4-component vector of float) 0:137 move second child to first child ( temp 4-component vector of float) 0:137 Color: direct index for structure ( temp 4-component vector of float) 0:137 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:139 Branch: Return with expression 0:139 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Constant: 0:53 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) 0:? 'g_tTex1di4' (layout( rgba32i) uniform iimage1D) 0:? 'g_tTex1du4' (layout( rgba32ui) uniform uimage1D) 0:? 'g_tTex2df4' (layout( rgba32f) uniform image2D) 0:? 'g_tTex2di4' (layout( rgba32i) uniform iimage2D) 0:? 'g_tTex2du4' (layout( rgba32ui) uniform uimage2D) 0:? 'g_tTex3df4' (layout( rgba32f) uniform image3D) 0:? 'g_tTex3di4' (layout( rgba32i) uniform iimage3D) 0:? 'g_tTex3du4' (layout( rgba32ui) uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba32f) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rgba32i) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( rgba32ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgba32f) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 607 Capability Shader Capability Image1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 583 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "Fn1(vi4;" Name 10 "x" Name 18 "Fn1(vu4;" Name 17 "x" Name 25 "Fn1(vf4;" Name 24 "x" Name 29 "Fn2(vi4;" Name 28 "x" Name 33 "Fn2(vu4;" Name 32 "x" Name 37 "Fn2(vf4;" Name 36 "x" Name 40 "SomeValue(" Name 42 "PS_OUTPUT" MemberName 42(PS_OUTPUT) 0 "Color" Name 44 "@main(" Name 63 "$Global" MemberName 63($Global) 0 "c1" MemberName 63($Global) 1 "c2" MemberName 63($Global) 2 "c3" MemberName 63($Global) 3 "c4" MemberName 63($Global) 4 "o1" MemberName 63($Global) 5 "o2" MemberName 63($Global) 6 "o3" MemberName 63($Global) 7 "o4" MemberName 63($Global) 8 "uf4" MemberName 63($Global) 9 "ui4" MemberName 63($Global) 10 "uu4" Name 65 "" Name 75 "g_tTex1df4" Name 81 "r00" Name 86 "r01" Name 89 "g_tTex1di4" Name 94 "r02" Name 97 "g_tTex1du4" Name 102 "r10" Name 105 "g_tTex2df4" Name 112 "r11" Name 115 "g_tTex2di4" Name 120 "r12" Name 123 "g_tTex2du4" Name 128 "r20" Name 131 "g_tTex3df4" Name 138 "r21" Name 141 "g_tTex3di4" Name 146 "r22" Name 149 "g_tTex3du4" Name 154 "lf4" Name 159 "storeTemp" Name 169 "storeTemp" Name 176 "storeTemp" Name 185 "val1" Name 187 "coordTemp" Name 190 "storeTemp" Name 201 "coordTemp" Name 204 "storeTemp" Name 215 "coordTemp" Name 218 "storeTemp" Name 229 "coordTemp" Name 232 "storeTemp" Name 242 "coordTemp" Name 245 "storeTemp" Name 255 "coordTemp" Name 258 "storeTemp" Name 269 "coordTemp" Name 272 "storeTemp" Name 283 "coordTemp" Name 286 "storeTemp" Name 296 "coordTemp" Name 299 "storeTemp" Name 309 "storeTemp" Name 319 "storeTemp" Name 326 "storeTemp" Name 333 "storeTemp" Name 343 "storeTemp" Name 351 "storeTemp" Name 362 "param" Name 368 "param" Name 374 "param" Name 376 "tempArg" Name 377 "param" Name 384 "tempArg" Name 385 "param" Name 392 "tempArg" Name 393 "param" Name 400 "coordTemp" Name 403 "storeTemp" Name 414 "coordTemp" Name 417 "storeTemp" Name 427 "coordTemp" Name 430 "storeTemp" Name 440 "coordTemp" Name 443 "storeTemp" Name 453 "coordTemp" Name 456 "storeTemp" Name 466 "coordTemp" Name 469 "storeTemp" Name 479 "coordTemp" Name 482 "storeTempPre" Name 486 "storeTempPost" Name 494 "coordTemp" Name 497 "storeTempPre" Name 501 "storeTempPost" Name 509 "coordTemp" Name 512 "storeTempPre" Name 516 "storeTempPost" Name 524 "coordTemp" Name 527 "storeTempPre" Name 531 "storeTempPost" Name 539 "coordTemp" Name 542 "storeTempPre" Name 546 "storeTempPost" Name 554 "coordTemp" Name 557 "storeTempPre" Name 561 "storeTempPost" Name 569 "storeTemp" Name 576 "psout" Name 583 "@entryPointOutput.Color" Name 588 "g_sSamp" Name 591 "g_tTex1df4a" Name 594 "g_tTex1di4a" Name 597 "g_tTex1du4a" Name 600 "g_tTex2df4a" Name 603 "g_tTex2di4a" Name 606 "g_tTex2du4a" Decorate 63($Global) Block MemberDecorate 63($Global) 0 Offset 0 MemberDecorate 63($Global) 1 Offset 8 MemberDecorate 63($Global) 2 Offset 16 MemberDecorate 63($Global) 3 Offset 32 MemberDecorate 63($Global) 4 Offset 48 MemberDecorate 63($Global) 5 Offset 56 MemberDecorate 63($Global) 6 Offset 64 MemberDecorate 63($Global) 7 Offset 80 MemberDecorate 63($Global) 8 Offset 96 MemberDecorate 63($Global) 9 Offset 112 MemberDecorate 63($Global) 10 Offset 128 Decorate 65 Binding 9 Decorate 65 DescriptorSet 0 Decorate 75(g_tTex1df4) Binding 0 Decorate 75(g_tTex1df4) DescriptorSet 0 Decorate 89(g_tTex1di4) Binding 1 Decorate 89(g_tTex1di4) DescriptorSet 0 Decorate 97(g_tTex1du4) Binding 2 Decorate 97(g_tTex1du4) DescriptorSet 0 Decorate 105(g_tTex2df4) Binding 3 Decorate 105(g_tTex2df4) DescriptorSet 0 Decorate 115(g_tTex2di4) Binding 4 Decorate 115(g_tTex2di4) DescriptorSet 0 Decorate 123(g_tTex2du4) Binding 5 Decorate 123(g_tTex2du4) DescriptorSet 0 Decorate 131(g_tTex3df4) Binding 6 Decorate 131(g_tTex3df4) DescriptorSet 0 Decorate 141(g_tTex3di4) Binding 7 Decorate 141(g_tTex3di4) DescriptorSet 0 Decorate 149(g_tTex3du4) Binding 8 Decorate 149(g_tTex3du4) DescriptorSet 0 Decorate 583(@entryPointOutput.Color) Location 0 Decorate 588(g_sSamp) Binding 0 Decorate 588(g_sSamp) DescriptorSet 0 Decorate 591(g_tTex1df4a) Binding 0 Decorate 591(g_tTex1df4a) DescriptorSet 0 Decorate 594(g_tTex1di4a) Binding 0 Decorate 594(g_tTex1di4a) DescriptorSet 0 Decorate 597(g_tTex1du4a) Binding 0 Decorate 597(g_tTex1du4a) DescriptorSet 0 Decorate 600(g_tTex2df4a) Binding 0 Decorate 600(g_tTex2df4a) DescriptorSet 0 Decorate 603(g_tTex2di4a) Binding 0 Decorate 603(g_tTex2di4a) DescriptorSet 0 Decorate 606(g_tTex2du4a) Binding 0 Decorate 606(g_tTex2du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 4 8: TypePointer Function 7(ivec4) 9: TypeFunction 7(ivec4) 8(ptr) 13: TypeInt 32 0 14: TypeVector 13(int) 4 15: TypePointer Function 14(ivec4) 16: TypeFunction 14(ivec4) 15(ptr) 20: TypeFloat 32 21: TypeVector 20(float) 4 22: TypePointer Function 21(fvec4) 23: TypeFunction 21(fvec4) 22(ptr) 27: TypeFunction 2 8(ptr) 31: TypeFunction 2 15(ptr) 35: TypeFunction 2 22(ptr) 39: TypeFunction 21(fvec4) 42(PS_OUTPUT): TypeStruct 21(fvec4) 43: TypeFunction 42(PS_OUTPUT) 55: 6(int) Constant 0 56: 7(ivec4) ConstantComposite 55 55 55 55 57: 13(int) Constant 0 58: 14(ivec4) ConstantComposite 57 57 57 57 59: 20(float) Constant 0 60: 21(fvec4) ConstantComposite 59 59 59 59 61: TypeVector 6(int) 2 62: TypeVector 6(int) 3 63($Global): TypeStruct 6(int) 61(ivec2) 62(ivec3) 7(ivec4) 6(int) 61(ivec2) 62(ivec3) 7(ivec4) 21(fvec4) 7(ivec4) 14(ivec4) 64: TypePointer Uniform 63($Global) 65: 64(ptr) Variable Uniform 66: 6(int) Constant 3 67: TypePointer Uniform 7(ivec4) 73: TypeImage 20(float) 1D nonsampled format:Rgba32f 74: TypePointer UniformConstant 73 75(g_tTex1df4): 74(ptr) Variable UniformConstant 77: TypePointer Uniform 6(int) 87: TypeImage 6(int) 1D nonsampled format:Rgba32i 88: TypePointer UniformConstant 87 89(g_tTex1di4): 88(ptr) Variable UniformConstant 95: TypeImage 13(int) 1D nonsampled format:Rgba32ui 96: TypePointer UniformConstant 95 97(g_tTex1du4): 96(ptr) Variable UniformConstant 103: TypeImage 20(float) 2D nonsampled format:Rgba32f 104: TypePointer UniformConstant 103 105(g_tTex2df4): 104(ptr) Variable UniformConstant 107: 6(int) Constant 1 108: TypePointer Uniform 61(ivec2) 113: TypeImage 6(int) 2D nonsampled format:Rgba32i 114: TypePointer UniformConstant 113 115(g_tTex2di4): 114(ptr) Variable UniformConstant 121: TypeImage 13(int) 2D nonsampled format:Rgba32ui 122: TypePointer UniformConstant 121 123(g_tTex2du4): 122(ptr) Variable UniformConstant 129: TypeImage 20(float) 3D nonsampled format:Rgba32f 130: TypePointer UniformConstant 129 131(g_tTex3df4): 130(ptr) Variable UniformConstant 133: 6(int) Constant 2 134: TypePointer Uniform 62(ivec3) 139: TypeImage 6(int) 3D nonsampled format:Rgba32i 140: TypePointer UniformConstant 139 141(g_tTex3di4): 140(ptr) Variable UniformConstant 147: TypeImage 13(int) 3D nonsampled format:Rgba32ui 148: TypePointer UniformConstant 147 149(g_tTex3du4): 148(ptr) Variable UniformConstant 155: 6(int) Constant 8 156: TypePointer Uniform 21(fvec4) 170: 6(int) Constant 4 171: 7(ivec4) ConstantComposite 133 133 66 170 177: 13(int) Constant 3 178: 13(int) Constant 2 179: 13(int) Constant 4 180: 14(ivec4) ConstantComposite 177 178 177 179 186: TypePointer Function 6(int) 194: 20(float) Constant 1073741824 208: 20(float) Constant 1077936128 222: 20(float) Constant 1082130432 262: 6(int) Constant 65535 276: 6(int) Constant 61680 320: 6(int) Constant 5 321: 7(ivec4) ConstantComposite 320 133 66 170 327: 13(int) Constant 6 328: 14(ivec4) ConstantComposite 327 178 177 179 344: 6(int) Constant 6 345: 6(int) Constant 7 346: 7(ivec4) ConstantComposite 155 344 345 155 352: 13(int) Constant 9 353: 14(ivec4) ConstantComposite 352 178 177 179 408: 20(float) Constant 1065353216 571: 61(ivec2) ConstantComposite 133 66 575: TypePointer Function 42(PS_OUTPUT) 577: 21(fvec4) ConstantComposite 408 408 408 408 582: TypePointer Output 21(fvec4) 583(@entryPointOutput.Color): 582(ptr) Variable Output 586: TypeSampler 587: TypePointer UniformConstant 586 588(g_sSamp): 587(ptr) Variable UniformConstant 589: TypeImage 20(float) 1D array nonsampled format:Rgba32f 590: TypePointer UniformConstant 589 591(g_tTex1df4a): 590(ptr) Variable UniformConstant 592: TypeImage 6(int) 1D array nonsampled format:Rgba32i 593: TypePointer UniformConstant 592 594(g_tTex1di4a): 593(ptr) Variable UniformConstant 595: TypeImage 13(int) 1D array nonsampled format:Rgba32ui 596: TypePointer UniformConstant 595 597(g_tTex1du4a): 596(ptr) Variable UniformConstant 598: TypeImage 20(float) 2D array nonsampled format:Rgba32f 599: TypePointer UniformConstant 598 600(g_tTex2df4a): 599(ptr) Variable UniformConstant 601: TypeImage 6(int) 2D array nonsampled format:Rgba32i 602: TypePointer UniformConstant 601 603(g_tTex2di4a): 602(ptr) Variable UniformConstant 604: TypeImage 13(int) 2D array nonsampled format:Rgba32ui 605: TypePointer UniformConstant 604 606(g_tTex2du4a): 605(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 584:42(PS_OUTPUT) FunctionCall 44(@main() 585: 21(fvec4) CompositeExtract 584 0 Store 583(@entryPointOutput.Color) 585 Return FunctionEnd 11(Fn1(vi4;): 7(ivec4) Function None 9 10(x): 8(ptr) FunctionParameter 12: Label 46: 7(ivec4) Load 10(x) ReturnValue 46 FunctionEnd 18(Fn1(vu4;): 14(ivec4) Function None 16 17(x): 15(ptr) FunctionParameter 19: Label 49: 14(ivec4) Load 17(x) ReturnValue 49 FunctionEnd 25(Fn1(vf4;): 21(fvec4) Function None 23 24(x): 22(ptr) FunctionParameter 26: Label 52: 21(fvec4) Load 24(x) ReturnValue 52 FunctionEnd 29(Fn2(vi4;): 2 Function None 27 28(x): 8(ptr) FunctionParameter 30: Label Store 28(x) 56 Return FunctionEnd 33(Fn2(vu4;): 2 Function None 31 32(x): 15(ptr) FunctionParameter 34: Label Store 32(x) 58 Return FunctionEnd 37(Fn2(vf4;): 2 Function None 35 36(x): 22(ptr) FunctionParameter 38: Label Store 36(x) 60 Return FunctionEnd 40(SomeValue(): 21(fvec4) Function None 39 41: Label 68: 67(ptr) AccessChain 65 66 69: 7(ivec4) Load 68 70: 21(fvec4) ConvertSToF 69 ReturnValue 70 FunctionEnd 44(@main():42(PS_OUTPUT) Function None 43 45: Label 81(r00): 22(ptr) Variable Function 86(r01): 8(ptr) Variable Function 94(r02): 15(ptr) Variable Function 102(r10): 22(ptr) Variable Function 112(r11): 8(ptr) Variable Function 120(r12): 15(ptr) Variable Function 128(r20): 22(ptr) Variable Function 138(r21): 8(ptr) Variable Function 146(r22): 15(ptr) Variable Function 154(lf4): 22(ptr) Variable Function 159(storeTemp): 22(ptr) Variable Function 169(storeTemp): 8(ptr) Variable Function 176(storeTemp): 15(ptr) Variable Function 185(val1): 22(ptr) Variable Function 187(coordTemp): 186(ptr) Variable Function 190(storeTemp): 22(ptr) Variable Function 201(coordTemp): 186(ptr) Variable Function 204(storeTemp): 22(ptr) Variable Function 215(coordTemp): 186(ptr) Variable Function 218(storeTemp): 22(ptr) Variable Function 229(coordTemp): 186(ptr) Variable Function 232(storeTemp): 8(ptr) Variable Function 242(coordTemp): 186(ptr) Variable Function 245(storeTemp): 8(ptr) Variable Function 255(coordTemp): 186(ptr) Variable Function 258(storeTemp): 8(ptr) Variable Function 269(coordTemp): 186(ptr) Variable Function 272(storeTemp): 8(ptr) Variable Function 283(coordTemp): 186(ptr) Variable Function 286(storeTemp): 8(ptr) Variable Function 296(coordTemp): 186(ptr) Variable Function 299(storeTemp): 8(ptr) Variable Function 309(storeTemp): 22(ptr) Variable Function 319(storeTemp): 8(ptr) Variable Function 326(storeTemp): 15(ptr) Variable Function 333(storeTemp): 22(ptr) Variable Function 343(storeTemp): 8(ptr) Variable Function 351(storeTemp): 15(ptr) Variable Function 362(param): 22(ptr) Variable Function 368(param): 8(ptr) Variable Function 374(param): 15(ptr) Variable Function 376(tempArg): 22(ptr) Variable Function 377(param): 22(ptr) Variable Function 384(tempArg): 8(ptr) Variable Function 385(param): 8(ptr) Variable Function 392(tempArg): 15(ptr) Variable Function 393(param): 15(ptr) Variable Function 400(coordTemp): 186(ptr) Variable Function 403(storeTemp): 22(ptr) Variable Function 414(coordTemp): 186(ptr) Variable Function 417(storeTemp): 8(ptr) Variable Function 427(coordTemp): 186(ptr) Variable Function 430(storeTemp): 15(ptr) Variable Function 440(coordTemp): 186(ptr) Variable Function 443(storeTemp): 22(ptr) Variable Function 453(coordTemp): 186(ptr) Variable Function 456(storeTemp): 8(ptr) Variable Function 466(coordTemp): 186(ptr) Variable Function 469(storeTemp): 15(ptr) Variable Function 479(coordTemp): 186(ptr) Variable Function 482(storeTempPre): 22(ptr) Variable Function 486(storeTempPost): 22(ptr) Variable Function 494(coordTemp): 186(ptr) Variable Function 497(storeTempPre): 15(ptr) Variable Function 501(storeTempPost): 15(ptr) Variable Function 509(coordTemp): 186(ptr) Variable Function 512(storeTempPre): 8(ptr) Variable Function 516(storeTempPost): 8(ptr) Variable Function 524(coordTemp): 186(ptr) Variable Function 527(storeTempPre): 22(ptr) Variable Function 531(storeTempPost): 22(ptr) Variable Function 539(coordTemp): 186(ptr) Variable Function 542(storeTempPre): 8(ptr) Variable Function 546(storeTempPost): 8(ptr) Variable Function 554(coordTemp): 186(ptr) Variable Function 557(storeTempPre): 15(ptr) Variable Function 561(storeTempPost): 15(ptr) Variable Function 569(storeTemp): 22(ptr) Variable Function 576(psout): 575(ptr) Variable Function 76: 73 Load 75(g_tTex1df4) 78: 77(ptr) AccessChain 65 55 79: 6(int) Load 78 80: 21(fvec4) ImageRead 76 79 82: 73 Load 75(g_tTex1df4) 83: 77(ptr) AccessChain 65 55 84: 6(int) Load 83 85: 21(fvec4) ImageRead 82 84 Store 81(r00) 85 90: 87 Load 89(g_tTex1di4) 91: 77(ptr) AccessChain 65 55 92: 6(int) Load 91 93: 7(ivec4) ImageRead 90 92 Store 86(r01) 93 98: 95 Load 97(g_tTex1du4) 99: 77(ptr) AccessChain 65 55 100: 6(int) Load 99 101: 14(ivec4) ImageRead 98 100 Store 94(r02) 101 106: 103 Load 105(g_tTex2df4) 109: 108(ptr) AccessChain 65 107 110: 61(ivec2) Load 109 111: 21(fvec4) ImageRead 106 110 Store 102(r10) 111 116: 113 Load 115(g_tTex2di4) 117: 108(ptr) AccessChain 65 107 118: 61(ivec2) Load 117 119: 7(ivec4) ImageRead 116 118 Store 112(r11) 119 124: 121 Load 123(g_tTex2du4) 125: 108(ptr) AccessChain 65 107 126: 61(ivec2) Load 125 127: 14(ivec4) ImageRead 124 126 Store 120(r12) 127 132: 129 Load 131(g_tTex3df4) 135: 134(ptr) AccessChain 65 133 136: 62(ivec3) Load 135 137: 21(fvec4) ImageRead 132 136 Store 128(r20) 137 142: 139 Load 141(g_tTex3di4) 143: 134(ptr) AccessChain 65 133 144: 62(ivec3) Load 143 145: 7(ivec4) ImageRead 142 144 Store 138(r21) 145 150: 147 Load 149(g_tTex3du4) 151: 134(ptr) AccessChain 65 133 152: 62(ivec3) Load 151 153: 14(ivec4) ImageRead 150 152 Store 146(r22) 153 157: 156(ptr) AccessChain 65 155 158: 21(fvec4) Load 157 Store 154(lf4) 158 160: 21(fvec4) FunctionCall 40(SomeValue() Store 159(storeTemp) 160 161: 73 Load 75(g_tTex1df4) 162: 77(ptr) AccessChain 65 55 163: 6(int) Load 162 164: 21(fvec4) Load 159(storeTemp) ImageWrite 161 163 164 165: 73 Load 75(g_tTex1df4) 166: 77(ptr) AccessChain 65 55 167: 6(int) Load 166 168: 21(fvec4) Load 154(lf4) ImageWrite 165 167 168 Store 169(storeTemp) 171 172: 87 Load 89(g_tTex1di4) 173: 77(ptr) AccessChain 65 55 174: 6(int) Load 173 175: 7(ivec4) Load 169(storeTemp) ImageWrite 172 174 175 Store 176(storeTemp) 180 181: 95 Load 97(g_tTex1du4) 182: 77(ptr) AccessChain 65 55 183: 6(int) Load 182 184: 14(ivec4) Load 176(storeTemp) ImageWrite 181 183 184 188: 77(ptr) AccessChain 65 55 189: 6(int) Load 188 Store 187(coordTemp) 189 191: 73 Load 75(g_tTex1df4) 192: 6(int) Load 187(coordTemp) 193: 21(fvec4) ImageRead 191 192 Store 190(storeTemp) 193 195: 21(fvec4) Load 190(storeTemp) 196: 21(fvec4) VectorTimesScalar 195 194 Store 190(storeTemp) 196 197: 73 Load 75(g_tTex1df4) 198: 6(int) Load 187(coordTemp) 199: 21(fvec4) Load 190(storeTemp) ImageWrite 197 198 199 200: 21(fvec4) Load 190(storeTemp) Store 185(val1) 200 202: 77(ptr) AccessChain 65 55 203: 6(int) Load 202 Store 201(coordTemp) 203 205: 73 Load 75(g_tTex1df4) 206: 6(int) Load 201(coordTemp) 207: 21(fvec4) ImageRead 205 206 Store 204(storeTemp) 207 209: 21(fvec4) Load 204(storeTemp) 210: 21(fvec4) CompositeConstruct 208 208 208 208 211: 21(fvec4) FSub 209 210 Store 204(storeTemp) 211 212: 73 Load 75(g_tTex1df4) 213: 6(int) Load 201(coordTemp) 214: 21(fvec4) Load 204(storeTemp) ImageWrite 212 213 214 216: 77(ptr) AccessChain 65 55 217: 6(int) Load 216 Store 215(coordTemp) 217 219: 73 Load 75(g_tTex1df4) 220: 6(int) Load 215(coordTemp) 221: 21(fvec4) ImageRead 219 220 Store 218(storeTemp) 221 223: 21(fvec4) Load 218(storeTemp) 224: 21(fvec4) CompositeConstruct 222 222 222 222 225: 21(fvec4) FAdd 223 224 Store 218(storeTemp) 225 226: 73 Load 75(g_tTex1df4) 227: 6(int) Load 215(coordTemp) 228: 21(fvec4) Load 218(storeTemp) ImageWrite 226 227 228 230: 77(ptr) AccessChain 65 55 231: 6(int) Load 230 Store 229(coordTemp) 231 233: 87 Load 89(g_tTex1di4) 234: 6(int) Load 229(coordTemp) 235: 7(ivec4) ImageRead 233 234 Store 232(storeTemp) 235 236: 7(ivec4) Load 232(storeTemp) 237: 7(ivec4) CompositeConstruct 133 133 133 133 238: 7(ivec4) SDiv 236 237 Store 232(storeTemp) 238 239: 87 Load 89(g_tTex1di4) 240: 6(int) Load 229(coordTemp) 241: 7(ivec4) Load 232(storeTemp) ImageWrite 239 240 241 243: 77(ptr) AccessChain 65 55 244: 6(int) Load 243 Store 242(coordTemp) 244 246: 87 Load 89(g_tTex1di4) 247: 6(int) Load 242(coordTemp) 248: 7(ivec4) ImageRead 246 247 Store 245(storeTemp) 248 249: 7(ivec4) Load 245(storeTemp) 250: 7(ivec4) CompositeConstruct 133 133 133 133 251: 7(ivec4) SMod 249 250 Store 245(storeTemp) 251 252: 87 Load 89(g_tTex1di4) 253: 6(int) Load 242(coordTemp) 254: 7(ivec4) Load 245(storeTemp) ImageWrite 252 253 254 256: 77(ptr) AccessChain 65 55 257: 6(int) Load 256 Store 255(coordTemp) 257 259: 87 Load 89(g_tTex1di4) 260: 6(int) Load 255(coordTemp) 261: 7(ivec4) ImageRead 259 260 Store 258(storeTemp) 261 263: 7(ivec4) Load 258(storeTemp) 264: 7(ivec4) CompositeConstruct 262 262 262 262 265: 7(ivec4) BitwiseAnd 263 264 Store 258(storeTemp) 265 266: 87 Load 89(g_tTex1di4) 267: 6(int) Load 255(coordTemp) 268: 7(ivec4) Load 258(storeTemp) ImageWrite 266 267 268 270: 77(ptr) AccessChain 65 55 271: 6(int) Load 270 Store 269(coordTemp) 271 273: 87 Load 89(g_tTex1di4) 274: 6(int) Load 269(coordTemp) 275: 7(ivec4) ImageRead 273 274 Store 272(storeTemp) 275 277: 7(ivec4) Load 272(storeTemp) 278: 7(ivec4) CompositeConstruct 276 276 276 276 279: 7(ivec4) BitwiseOr 277 278 Store 272(storeTemp) 279 280: 87 Load 89(g_tTex1di4) 281: 6(int) Load 269(coordTemp) 282: 7(ivec4) Load 272(storeTemp) ImageWrite 280 281 282 284: 77(ptr) AccessChain 65 55 285: 6(int) Load 284 Store 283(coordTemp) 285 287: 87 Load 89(g_tTex1di4) 288: 6(int) Load 283(coordTemp) 289: 7(ivec4) ImageRead 287 288 Store 286(storeTemp) 289 290: 7(ivec4) Load 286(storeTemp) 291: 7(ivec4) CompositeConstruct 133 133 133 133 292: 7(ivec4) ShiftLeftLogical 290 291 Store 286(storeTemp) 292 293: 87 Load 89(g_tTex1di4) 294: 6(int) Load 283(coordTemp) 295: 7(ivec4) Load 286(storeTemp) ImageWrite 293 294 295 297: 77(ptr) AccessChain 65 55 298: 6(int) Load 297 Store 296(coordTemp) 298 300: 87 Load 89(g_tTex1di4) 301: 6(int) Load 296(coordTemp) 302: 7(ivec4) ImageRead 300 301 Store 299(storeTemp) 302 303: 7(ivec4) Load 299(storeTemp) 304: 7(ivec4) CompositeConstruct 133 133 133 133 305: 7(ivec4) ShiftRightArithmetic 303 304 Store 299(storeTemp) 305 306: 87 Load 89(g_tTex1di4) 307: 6(int) Load 296(coordTemp) 308: 7(ivec4) Load 299(storeTemp) ImageWrite 306 307 308 310: 21(fvec4) FunctionCall 40(SomeValue() Store 309(storeTemp) 310 311: 103 Load 105(g_tTex2df4) 312: 108(ptr) AccessChain 65 107 313: 61(ivec2) Load 312 314: 21(fvec4) Load 309(storeTemp) ImageWrite 311 313 314 315: 103 Load 105(g_tTex2df4) 316: 108(ptr) AccessChain 65 107 317: 61(ivec2) Load 316 318: 21(fvec4) Load 154(lf4) ImageWrite 315 317 318 Store 319(storeTemp) 321 322: 113 Load 115(g_tTex2di4) 323: 108(ptr) AccessChain 65 107 324: 61(ivec2) Load 323 325: 7(ivec4) Load 319(storeTemp) ImageWrite 322 324 325 Store 326(storeTemp) 328 329: 121 Load 123(g_tTex2du4) 330: 108(ptr) AccessChain 65 107 331: 61(ivec2) Load 330 332: 14(ivec4) Load 326(storeTemp) ImageWrite 329 331 332 334: 21(fvec4) FunctionCall 40(SomeValue() Store 333(storeTemp) 334 335: 129 Load 131(g_tTex3df4) 336: 134(ptr) AccessChain 65 133 337: 62(ivec3) Load 336 338: 21(fvec4) Load 333(storeTemp) ImageWrite 335 337 338 339: 129 Load 131(g_tTex3df4) 340: 134(ptr) AccessChain 65 133 341: 62(ivec3) Load 340 342: 21(fvec4) Load 154(lf4) ImageWrite 339 341 342 Store 343(storeTemp) 346 347: 139 Load 141(g_tTex3di4) 348: 134(ptr) AccessChain 65 133 349: 62(ivec3) Load 348 350: 7(ivec4) Load 343(storeTemp) ImageWrite 347 349 350 Store 351(storeTemp) 353 354: 147 Load 149(g_tTex3du4) 355: 134(ptr) AccessChain 65 133 356: 62(ivec3) Load 355 357: 14(ivec4) Load 351(storeTemp) ImageWrite 354 356 357 358: 73 Load 75(g_tTex1df4) 359: 77(ptr) AccessChain 65 55 360: 6(int) Load 359 361: 21(fvec4) ImageRead 358 360 Store 362(param) 361 363: 21(fvec4) FunctionCall 25(Fn1(vf4;) 362(param) 364: 87 Load 89(g_tTex1di4) 365: 77(ptr) AccessChain 65 55 366: 6(int) Load 365 367: 7(ivec4) ImageRead 364 366 Store 368(param) 367 369: 7(ivec4) FunctionCall 11(Fn1(vi4;) 368(param) 370: 95 Load 97(g_tTex1du4) 371: 77(ptr) AccessChain 65 55 372: 6(int) Load 371 373: 14(ivec4) ImageRead 370 372 Store 374(param) 373 375: 14(ivec4) FunctionCall 18(Fn1(vu4;) 374(param) 378: 2 FunctionCall 37(Fn2(vf4;) 377(param) 379: 21(fvec4) Load 377(param) Store 376(tempArg) 379 380: 73 Load 75(g_tTex1df4) 381: 77(ptr) AccessChain 65 55 382: 6(int) Load 381 383: 21(fvec4) Load 376(tempArg) ImageWrite 380 382 383 386: 2 FunctionCall 29(Fn2(vi4;) 385(param) 387: 7(ivec4) Load 385(param) Store 384(tempArg) 387 388: 87 Load 89(g_tTex1di4) 389: 77(ptr) AccessChain 65 55 390: 6(int) Load 389 391: 7(ivec4) Load 384(tempArg) ImageWrite 388 390 391 394: 2 FunctionCall 33(Fn2(vu4;) 393(param) 395: 14(ivec4) Load 393(param) Store 392(tempArg) 395 396: 95 Load 97(g_tTex1du4) 397: 77(ptr) AccessChain 65 55 398: 6(int) Load 397 399: 14(ivec4) Load 392(tempArg) ImageWrite 396 398 399 401: 77(ptr) AccessChain 65 55 402: 6(int) Load 401 Store 400(coordTemp) 402 404: 73 Load 75(g_tTex1df4) 405: 6(int) Load 400(coordTemp) 406: 21(fvec4) ImageRead 404 405 Store 403(storeTemp) 406 407: 21(fvec4) Load 403(storeTemp) 409: 21(fvec4) CompositeConstruct 408 408 408 408 410: 21(fvec4) FAdd 407 409 Store 403(storeTemp) 410 411: 73 Load 75(g_tTex1df4) 412: 6(int) Load 400(coordTemp) 413: 21(fvec4) Load 403(storeTemp) ImageWrite 411 412 413 415: 77(ptr) AccessChain 65 55 416: 6(int) Load 415 Store 414(coordTemp) 416 418: 87 Load 89(g_tTex1di4) 419: 6(int) Load 414(coordTemp) 420: 7(ivec4) ImageRead 418 419 Store 417(storeTemp) 420 421: 7(ivec4) Load 417(storeTemp) 422: 7(ivec4) CompositeConstruct 107 107 107 107 423: 7(ivec4) IAdd 421 422 Store 417(storeTemp) 423 424: 87 Load 89(g_tTex1di4) 425: 6(int) Load 414(coordTemp) 426: 7(ivec4) Load 417(storeTemp) ImageWrite 424 425 426 428: 77(ptr) AccessChain 65 55 429: 6(int) Load 428 Store 427(coordTemp) 429 431: 95 Load 97(g_tTex1du4) 432: 6(int) Load 427(coordTemp) 433: 14(ivec4) ImageRead 431 432 Store 430(storeTemp) 433 434: 14(ivec4) Load 430(storeTemp) 435: 7(ivec4) CompositeConstruct 107 107 107 107 436: 14(ivec4) IAdd 434 435 Store 430(storeTemp) 436 437: 95 Load 97(g_tTex1du4) 438: 6(int) Load 427(coordTemp) 439: 14(ivec4) Load 430(storeTemp) ImageWrite 437 438 439 441: 77(ptr) AccessChain 65 55 442: 6(int) Load 441 Store 440(coordTemp) 442 444: 73 Load 75(g_tTex1df4) 445: 6(int) Load 440(coordTemp) 446: 21(fvec4) ImageRead 444 445 Store 443(storeTemp) 446 447: 21(fvec4) Load 443(storeTemp) 448: 21(fvec4) CompositeConstruct 408 408 408 408 449: 21(fvec4) FSub 447 448 Store 443(storeTemp) 449 450: 73 Load 75(g_tTex1df4) 451: 6(int) Load 440(coordTemp) 452: 21(fvec4) Load 443(storeTemp) ImageWrite 450 451 452 454: 77(ptr) AccessChain 65 55 455: 6(int) Load 454 Store 453(coordTemp) 455 457: 87 Load 89(g_tTex1di4) 458: 6(int) Load 453(coordTemp) 459: 7(ivec4) ImageRead 457 458 Store 456(storeTemp) 459 460: 7(ivec4) Load 456(storeTemp) 461: 7(ivec4) CompositeConstruct 107 107 107 107 462: 7(ivec4) ISub 460 461 Store 456(storeTemp) 462 463: 87 Load 89(g_tTex1di4) 464: 6(int) Load 453(coordTemp) 465: 7(ivec4) Load 456(storeTemp) ImageWrite 463 464 465 467: 77(ptr) AccessChain 65 55 468: 6(int) Load 467 Store 466(coordTemp) 468 470: 95 Load 97(g_tTex1du4) 471: 6(int) Load 466(coordTemp) 472: 14(ivec4) ImageRead 470 471 Store 469(storeTemp) 472 473: 14(ivec4) Load 469(storeTemp) 474: 7(ivec4) CompositeConstruct 107 107 107 107 475: 14(ivec4) ISub 473 474 Store 469(storeTemp) 475 476: 95 Load 97(g_tTex1du4) 477: 6(int) Load 466(coordTemp) 478: 14(ivec4) Load 469(storeTemp) ImageWrite 476 477 478 480: 77(ptr) AccessChain 65 55 481: 6(int) Load 480 Store 479(coordTemp) 481 483: 73 Load 75(g_tTex1df4) 484: 6(int) Load 479(coordTemp) 485: 21(fvec4) ImageRead 483 484 Store 482(storeTempPre) 485 487: 21(fvec4) Load 482(storeTempPre) Store 486(storeTempPost) 487 488: 21(fvec4) Load 486(storeTempPost) 489: 21(fvec4) CompositeConstruct 408 408 408 408 490: 21(fvec4) FAdd 488 489 Store 486(storeTempPost) 490 491: 73 Load 75(g_tTex1df4) 492: 6(int) Load 479(coordTemp) 493: 21(fvec4) Load 486(storeTempPost) ImageWrite 491 492 493 495: 77(ptr) AccessChain 65 55 496: 6(int) Load 495 Store 494(coordTemp) 496 498: 95 Load 97(g_tTex1du4) 499: 6(int) Load 494(coordTemp) 500: 14(ivec4) ImageRead 498 499 Store 497(storeTempPre) 500 502: 14(ivec4) Load 497(storeTempPre) Store 501(storeTempPost) 502 503: 14(ivec4) Load 501(storeTempPost) 504: 7(ivec4) CompositeConstruct 107 107 107 107 505: 14(ivec4) ISub 503 504 Store 501(storeTempPost) 505 506: 95 Load 97(g_tTex1du4) 507: 6(int) Load 494(coordTemp) 508: 14(ivec4) Load 501(storeTempPost) ImageWrite 506 507 508 510: 77(ptr) AccessChain 65 55 511: 6(int) Load 510 Store 509(coordTemp) 511 513: 87 Load 89(g_tTex1di4) 514: 6(int) Load 509(coordTemp) 515: 7(ivec4) ImageRead 513 514 Store 512(storeTempPre) 515 517: 7(ivec4) Load 512(storeTempPre) Store 516(storeTempPost) 517 518: 7(ivec4) Load 516(storeTempPost) 519: 7(ivec4) CompositeConstruct 107 107 107 107 520: 7(ivec4) IAdd 518 519 Store 516(storeTempPost) 520 521: 87 Load 89(g_tTex1di4) 522: 6(int) Load 509(coordTemp) 523: 7(ivec4) Load 516(storeTempPost) ImageWrite 521 522 523 525: 77(ptr) AccessChain 65 55 526: 6(int) Load 525 Store 524(coordTemp) 526 528: 73 Load 75(g_tTex1df4) 529: 6(int) Load 524(coordTemp) 530: 21(fvec4) ImageRead 528 529 Store 527(storeTempPre) 530 532: 21(fvec4) Load 527(storeTempPre) Store 531(storeTempPost) 532 533: 21(fvec4) Load 531(storeTempPost) 534: 21(fvec4) CompositeConstruct 408 408 408 408 535: 21(fvec4) FSub 533 534 Store 531(storeTempPost) 535 536: 73 Load 75(g_tTex1df4) 537: 6(int) Load 524(coordTemp) 538: 21(fvec4) Load 531(storeTempPost) ImageWrite 536 537 538 540: 77(ptr) AccessChain 65 55 541: 6(int) Load 540 Store 539(coordTemp) 541 543: 87 Load 89(g_tTex1di4) 544: 6(int) Load 539(coordTemp) 545: 7(ivec4) ImageRead 543 544 Store 542(storeTempPre) 545 547: 7(ivec4) Load 542(storeTempPre) Store 546(storeTempPost) 547 548: 7(ivec4) Load 546(storeTempPost) 549: 7(ivec4) CompositeConstruct 107 107 107 107 550: 7(ivec4) IAdd 548 549 Store 546(storeTempPost) 550 551: 87 Load 89(g_tTex1di4) 552: 6(int) Load 539(coordTemp) 553: 7(ivec4) Load 546(storeTempPost) ImageWrite 551 552 553 555: 77(ptr) AccessChain 65 55 556: 6(int) Load 555 Store 554(coordTemp) 556 558: 95 Load 97(g_tTex1du4) 559: 6(int) Load 554(coordTemp) 560: 14(ivec4) ImageRead 558 559 Store 557(storeTempPre) 560 562: 14(ivec4) Load 557(storeTempPre) Store 561(storeTempPost) 562 563: 14(ivec4) Load 561(storeTempPost) 564: 7(ivec4) CompositeConstruct 107 107 107 107 565: 14(ivec4) ISub 563 564 Store 561(storeTempPost) 565 566: 95 Load 97(g_tTex1du4) 567: 6(int) Load 554(coordTemp) 568: 14(ivec4) Load 561(storeTempPost) ImageWrite 566 567 568 570: 103 Load 105(g_tTex2df4) 572: 21(fvec4) ImageRead 570 571 Store 569(storeTemp) 572 573: 73 Load 75(g_tTex1df4) 574: 21(fvec4) Load 569(storeTemp) ImageWrite 573 107 574 578: 22(ptr) AccessChain 576(psout) 55 Store 578 577 579:42(PS_OUTPUT) Load 576(psout) ReturnValue 579 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.rw.register.frag.out000066400000000000000000000175761506534232700233520ustar00rootroot00000000000000hlsl.rw.register.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:11 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'r00' ( temp float) 0:12 imageLoad ( temp float) 0:12 'g_tTex1df1' (layout( binding=2 r32f) uniform image1D) 0:12 Constant: 0:12 0 (const int) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'r01' ( temp uint) 0:13 imageLoad ( temp uint) 0:13 'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer) 0:13 Constant: 0:13 0 (const int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 Color: direct index for structure ( temp 4-component vector of float) 0:16 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1.000000 0:16 1.000000 0:16 1.000000 0:16 1.000000 0:17 Branch: Return with expression 0:17 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:11 Color: direct index for structure ( temp 4-component vector of float) 0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'g_tTex1df1' (layout( binding=2 r32f) uniform image1D) 0:? 'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:11 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'r00' ( temp float) 0:12 imageLoad ( temp float) 0:12 'g_tTex1df1' (layout( binding=2 r32f) uniform image1D) 0:12 Constant: 0:12 0 (const int) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'r01' ( temp uint) 0:13 imageLoad ( temp uint) 0:13 'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer) 0:13 Constant: 0:13 0 (const int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 Color: direct index for structure ( temp 4-component vector of float) 0:16 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1.000000 0:16 1.000000 0:16 1.000000 0:16 1.000000 0:17 Branch: Return with expression 0:17 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:11 Color: direct index for structure ( temp 4-component vector of float) 0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'g_tTex1df1' (layout( binding=2 r32f) uniform image1D) 0:? 'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader Capability Image1D Capability ImageBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 42 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 13 "r00" Name 16 "g_tTex1df1" Name 24 "r01" Name 27 "g_tBuf1du1" Name 33 "psout" Name 42 "@entryPointOutput.Color" Decorate 16(g_tTex1df1) Binding 2 Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 27(g_tBuf1du1) Binding 3 Decorate 27(g_tBuf1du1) DescriptorSet 0 Decorate 42(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D nonsampled format:R32f 15: TypePointer UniformConstant 14 16(g_tTex1df1): 15(ptr) Variable UniformConstant 18: TypeInt 32 1 19: 18(int) Constant 0 22: TypeInt 32 0 23: TypePointer Function 22(int) 25: TypeImage 22(int) Buffer nonsampled format:R32ui 26: TypePointer UniformConstant 25 27(g_tBuf1du1): 26(ptr) Variable UniformConstant 29: TypeVector 22(int) 4 32: TypePointer Function 8(PS_OUTPUT) 34: 6(float) Constant 1065353216 35: 7(fvec4) ConstantComposite 34 34 34 34 36: TypePointer Function 7(fvec4) 41: TypePointer Output 7(fvec4) 42(@entryPointOutput.Color): 41(ptr) Variable Output 4(main): 2 Function None 3 5: Label 43:8(PS_OUTPUT) FunctionCall 10(@main() 44: 7(fvec4) CompositeExtract 43 0 Store 42(@entryPointOutput.Color) 44 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function 24(r01): 23(ptr) Variable Function 33(psout): 32(ptr) Variable Function 17: 14 Load 16(g_tTex1df1) 20: 7(fvec4) ImageRead 17 19 21: 6(float) CompositeExtract 20 0 Store 13(r00) 21 28: 25 Load 27(g_tBuf1du1) 30: 29(ivec4) ImageRead 28 19 31: 22(int) CompositeExtract 30 0 Store 24(r01) 31 37: 36(ptr) AccessChain 33(psout) 19 Store 37 35 38:8(PS_OUTPUT) Load 33(psout) ReturnValue 38 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.rw.scalar.bracket.frag.out000066400000000000000000004601151506534232700243740ustar00rootroot00000000000000hlsl.rw.scalar.bracket.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:42 Function Definition: Fn1(i1; ( temp int) 0:42 Function Parameters: 0:42 'x' ( in int) 0:? Sequence 0:42 Branch: Return with expression 0:42 'x' ( in int) 0:43 Function Definition: Fn1(u1; ( temp uint) 0:43 Function Parameters: 0:43 'x' ( in uint) 0:? Sequence 0:43 Branch: Return with expression 0:43 'x' ( in uint) 0:44 Function Definition: Fn1(f1; ( temp float) 0:44 Function Parameters: 0:44 'x' ( in float) 0:? Sequence 0:44 Branch: Return with expression 0:44 'x' ( in float) 0:46 Function Definition: Fn2(i1; ( temp void) 0:46 Function Parameters: 0:46 'x' ( out int) 0:? Sequence 0:46 move second child to first child ( temp int) 0:46 'x' ( out int) 0:46 Constant: 0:46 0 (const int) 0:47 Function Definition: Fn2(u1; ( temp void) 0:47 Function Parameters: 0:47 'x' ( out uint) 0:? Sequence 0:47 move second child to first child ( temp uint) 0:47 'x' ( out uint) 0:47 Constant: 0:47 0 (const uint) 0:48 Function Definition: Fn2(f1; ( temp void) 0:48 Function Parameters: 0:48 'x' ( out float) 0:? Sequence 0:48 move second child to first child ( temp float) 0:48 'x' ( out float) 0:48 Constant: 0:48 0.000000 0:50 Function Definition: SomeValue( ( temp float) 0:50 Function Parameters: 0:? Sequence 0:50 Branch: Return with expression 0:50 Convert int to float ( temp float) 0:50 c1: direct index for structure ( uniform int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:50 Constant: 0:50 0 (const uint) 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Parameters: 0:? Sequence 0:57 imageLoad ( temp float) 0:57 'g_tTex1df1' (layout( r32f) uniform image1D) 0:57 c1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:57 Constant: 0:57 0 (const uint) 0:59 Sequence 0:59 move second child to first child ( temp float) 0:59 'r00' ( temp float) 0:59 imageLoad ( temp float) 0:59 'g_tTex1df1' (layout( r32f) uniform image1D) 0:59 c1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:59 Constant: 0:59 0 (const uint) 0:60 Sequence 0:60 move second child to first child ( temp int) 0:60 'r01' ( temp int) 0:60 imageLoad ( temp int) 0:60 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:60 c1: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:60 Constant: 0:60 0 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp uint) 0:61 'r02' ( temp uint) 0:61 imageLoad ( temp uint) 0:61 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:61 c1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:61 Constant: 0:61 0 (const uint) 0:64 Sequence 0:64 move second child to first child ( temp float) 0:64 'r10' ( temp float) 0:64 imageLoad ( temp float) 0:64 'g_tTex2df1' (layout( r32f) uniform image2D) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:64 Constant: 0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child ( temp int) 0:65 'r11' ( temp int) 0:65 imageLoad ( temp int) 0:65 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:65 c2: direct index for structure ( uniform 2-component vector of int) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:65 Constant: 0:65 1 (const uint) 0:66 Sequence 0:66 move second child to first child ( temp uint) 0:66 'r12' ( temp uint) 0:66 imageLoad ( temp uint) 0:66 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:66 c2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:66 Constant: 0:66 1 (const uint) 0:69 Sequence 0:69 move second child to first child ( temp float) 0:69 'r20' ( temp float) 0:69 imageLoad ( temp float) 0:69 'g_tTex3df1' (layout( r32f) uniform image3D) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:69 Constant: 0:69 2 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp int) 0:70 'r21' ( temp int) 0:70 imageLoad ( temp int) 0:70 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:70 c3: direct index for structure ( uniform 3-component vector of int) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:70 Constant: 0:70 2 (const uint) 0:71 Sequence 0:71 move second child to first child ( temp uint) 0:71 'r22' ( temp uint) 0:71 imageLoad ( temp uint) 0:71 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:71 c3: direct index for structure ( uniform 3-component vector of int) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:71 Constant: 0:71 2 (const uint) 0:73 Sequence 0:73 move second child to first child ( temp float) 0:73 'lf1' ( temp float) 0:73 uf1: direct index for structure ( uniform float) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:73 Constant: 0:73 8 (const uint) 0:77 Sequence 0:77 move second child to first child ( temp float) 0:77 'storeTemp' ( temp float) 0:77 Function Call: SomeValue( ( temp float) 0:77 imageStore ( temp void) 0:77 'g_tTex1df1' (layout( r32f) uniform image1D) 0:77 c1: direct index for structure ( uniform int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:77 Constant: 0:77 0 (const uint) 0:77 'storeTemp' ( temp float) 0:77 'storeTemp' ( temp float) 0:78 Sequence 0:78 imageStore ( temp void) 0:78 'g_tTex1df1' (layout( r32f) uniform image1D) 0:78 c1: direct index for structure ( uniform int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:78 Constant: 0:78 0 (const uint) 0:78 'lf1' ( temp float) 0:78 'lf1' ( temp float) 0:79 Sequence 0:79 move second child to first child ( temp int) 0:79 'storeTemp' ( temp int) 0:79 Constant: 0:79 2 (const int) 0:79 imageStore ( temp void) 0:79 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:79 c1: direct index for structure ( uniform int) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:79 Constant: 0:79 0 (const uint) 0:79 'storeTemp' ( temp int) 0:79 'storeTemp' ( temp int) 0:80 Sequence 0:80 move second child to first child ( temp uint) 0:80 'storeTemp' ( temp uint) 0:80 Constant: 0:80 3 (const uint) 0:80 imageStore ( temp void) 0:80 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:80 c1: direct index for structure ( uniform int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:80 Constant: 0:80 0 (const uint) 0:80 'storeTemp' ( temp uint) 0:80 'storeTemp' ( temp uint) 0:83 Sequence 0:83 move second child to first child ( temp float) 0:83 'val1' ( temp float) 0:83 Sequence 0:83 move second child to first child ( temp int) 0:83 'coordTemp' ( temp int) 0:83 c1: direct index for structure ( uniform int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:83 Constant: 0:83 0 (const uint) 0:83 move second child to first child ( temp float) 0:83 'storeTemp' ( temp float) 0:83 imageLoad ( temp float) 0:83 'g_tTex1df1' (layout( r32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 multiply second child into first child ( temp float) 0:83 'storeTemp' ( temp float) 0:83 Constant: 0:83 2.000000 0:83 imageStore ( temp void) 0:83 'g_tTex1df1' (layout( r32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 'storeTemp' ( temp float) 0:83 'storeTemp' ( temp float) 0:84 Sequence 0:84 move second child to first child ( temp int) 0:84 'coordTemp' ( temp int) 0:84 c1: direct index for structure ( uniform int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:84 Constant: 0:84 0 (const uint) 0:84 move second child to first child ( temp float) 0:84 'storeTemp' ( temp float) 0:84 imageLoad ( temp float) 0:84 'g_tTex1df1' (layout( r32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 subtract second child into first child ( temp float) 0:84 'storeTemp' ( temp float) 0:84 Constant: 0:84 3.000000 0:84 imageStore ( temp void) 0:84 'g_tTex1df1' (layout( r32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 'storeTemp' ( temp float) 0:84 'storeTemp' ( temp float) 0:85 Sequence 0:85 move second child to first child ( temp int) 0:85 'coordTemp' ( temp int) 0:85 c1: direct index for structure ( uniform int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:85 Constant: 0:85 0 (const uint) 0:85 move second child to first child ( temp float) 0:85 'storeTemp' ( temp float) 0:85 imageLoad ( temp float) 0:85 'g_tTex1df1' (layout( r32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 add second child into first child ( temp float) 0:85 'storeTemp' ( temp float) 0:85 Constant: 0:85 4.000000 0:85 imageStore ( temp void) 0:85 'g_tTex1df1' (layout( r32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 'storeTemp' ( temp float) 0:85 'storeTemp' ( temp float) 0:87 Sequence 0:87 move second child to first child ( temp int) 0:87 'coordTemp' ( temp int) 0:87 c1: direct index for structure ( uniform int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:87 Constant: 0:87 0 (const uint) 0:87 move second child to first child ( temp int) 0:87 'storeTemp' ( temp int) 0:87 imageLoad ( temp int) 0:87 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 divide second child into first child ( temp int) 0:87 'storeTemp' ( temp int) 0:87 Constant: 0:87 2 (const int) 0:87 imageStore ( temp void) 0:87 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 'storeTemp' ( temp int) 0:87 'storeTemp' ( temp int) 0:88 Sequence 0:88 move second child to first child ( temp int) 0:88 'coordTemp' ( temp int) 0:88 c1: direct index for structure ( uniform int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:88 Constant: 0:88 0 (const uint) 0:88 move second child to first child ( temp int) 0:88 'storeTemp' ( temp int) 0:88 imageLoad ( temp int) 0:88 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 mod second child into first child ( temp int) 0:88 'storeTemp' ( temp int) 0:88 Constant: 0:88 2 (const int) 0:88 imageStore ( temp void) 0:88 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 'storeTemp' ( temp int) 0:88 'storeTemp' ( temp int) 0:89 Sequence 0:89 move second child to first child ( temp int) 0:89 'coordTemp' ( temp int) 0:89 c1: direct index for structure ( uniform int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:89 Constant: 0:89 0 (const uint) 0:89 move second child to first child ( temp int) 0:89 'storeTemp' ( temp int) 0:89 imageLoad ( temp int) 0:89 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 and second child into first child ( temp int) 0:89 'storeTemp' ( temp int) 0:89 Constant: 0:89 65535 (const int) 0:89 imageStore ( temp void) 0:89 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 'storeTemp' ( temp int) 0:89 'storeTemp' ( temp int) 0:90 Sequence 0:90 move second child to first child ( temp int) 0:90 'coordTemp' ( temp int) 0:90 c1: direct index for structure ( uniform int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:90 Constant: 0:90 0 (const uint) 0:90 move second child to first child ( temp int) 0:90 'storeTemp' ( temp int) 0:90 imageLoad ( temp int) 0:90 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 or second child into first child ( temp int) 0:90 'storeTemp' ( temp int) 0:90 Constant: 0:90 61680 (const int) 0:90 imageStore ( temp void) 0:90 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 'storeTemp' ( temp int) 0:90 'storeTemp' ( temp int) 0:91 Sequence 0:91 move second child to first child ( temp int) 0:91 'coordTemp' ( temp int) 0:91 c1: direct index for structure ( uniform int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:91 Constant: 0:91 0 (const uint) 0:91 move second child to first child ( temp int) 0:91 'storeTemp' ( temp int) 0:91 imageLoad ( temp int) 0:91 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 left shift second child into first child ( temp int) 0:91 'storeTemp' ( temp int) 0:91 Constant: 0:91 2 (const int) 0:91 imageStore ( temp void) 0:91 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 'storeTemp' ( temp int) 0:91 'storeTemp' ( temp int) 0:92 Sequence 0:92 move second child to first child ( temp int) 0:92 'coordTemp' ( temp int) 0:92 c1: direct index for structure ( uniform int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:92 Constant: 0:92 0 (const uint) 0:92 move second child to first child ( temp int) 0:92 'storeTemp' ( temp int) 0:92 imageLoad ( temp int) 0:92 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 right shift second child into first child ( temp int) 0:92 'storeTemp' ( temp int) 0:92 Constant: 0:92 2 (const int) 0:92 imageStore ( temp void) 0:92 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 'storeTemp' ( temp int) 0:92 'storeTemp' ( temp int) 0:95 Sequence 0:95 move second child to first child ( temp float) 0:95 'storeTemp' ( temp float) 0:95 Function Call: SomeValue( ( temp float) 0:95 imageStore ( temp void) 0:95 'g_tTex2df1' (layout( r32f) uniform image2D) 0:95 c2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:95 Constant: 0:95 1 (const uint) 0:95 'storeTemp' ( temp float) 0:95 'storeTemp' ( temp float) 0:96 Sequence 0:96 imageStore ( temp void) 0:96 'g_tTex2df1' (layout( r32f) uniform image2D) 0:96 c2: direct index for structure ( uniform 2-component vector of int) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:96 Constant: 0:96 1 (const uint) 0:96 'lf1' ( temp float) 0:96 'lf1' ( temp float) 0:97 Sequence 0:97 move second child to first child ( temp int) 0:97 'storeTemp' ( temp int) 0:97 Constant: 0:97 5 (const int) 0:97 imageStore ( temp void) 0:97 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:97 c2: direct index for structure ( uniform 2-component vector of int) 0:97 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:97 Constant: 0:97 1 (const uint) 0:97 'storeTemp' ( temp int) 0:97 'storeTemp' ( temp int) 0:98 Sequence 0:98 move second child to first child ( temp uint) 0:98 'storeTemp' ( temp uint) 0:98 Constant: 0:98 6 (const uint) 0:98 imageStore ( temp void) 0:98 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:98 c2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:98 Constant: 0:98 1 (const uint) 0:98 'storeTemp' ( temp uint) 0:98 'storeTemp' ( temp uint) 0:101 Sequence 0:101 move second child to first child ( temp float) 0:101 'storeTemp' ( temp float) 0:101 Function Call: SomeValue( ( temp float) 0:101 imageStore ( temp void) 0:101 'g_tTex3df1' (layout( r32f) uniform image3D) 0:101 c3: direct index for structure ( uniform 3-component vector of int) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:101 Constant: 0:101 2 (const uint) 0:101 'storeTemp' ( temp float) 0:101 'storeTemp' ( temp float) 0:102 Sequence 0:102 imageStore ( temp void) 0:102 'g_tTex3df1' (layout( r32f) uniform image3D) 0:102 c3: direct index for structure ( uniform 3-component vector of int) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:102 Constant: 0:102 2 (const uint) 0:102 'lf1' ( temp float) 0:102 'lf1' ( temp float) 0:103 Sequence 0:103 move second child to first child ( temp int) 0:103 'storeTemp' ( temp int) 0:103 Constant: 0:103 8 (const int) 0:103 imageStore ( temp void) 0:103 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:103 c3: direct index for structure ( uniform 3-component vector of int) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:103 Constant: 0:103 2 (const uint) 0:103 'storeTemp' ( temp int) 0:103 'storeTemp' ( temp int) 0:104 Sequence 0:104 move second child to first child ( temp uint) 0:104 'storeTemp' ( temp uint) 0:104 Constant: 0:104 9 (const uint) 0:104 imageStore ( temp void) 0:104 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:104 c3: direct index for structure ( uniform 3-component vector of int) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:104 Constant: 0:104 2 (const uint) 0:104 'storeTemp' ( temp uint) 0:104 'storeTemp' ( temp uint) 0:107 Function Call: Fn1(f1; ( temp float) 0:107 imageLoad ( temp float) 0:107 'g_tTex1df1' (layout( r32f) uniform image1D) 0:107 c1: direct index for structure ( uniform int) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:107 Constant: 0:107 0 (const uint) 0:108 Function Call: Fn1(i1; ( temp int) 0:108 imageLoad ( temp int) 0:108 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:108 c1: direct index for structure ( uniform int) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:108 Constant: 0:108 0 (const uint) 0:109 Function Call: Fn1(u1; ( temp uint) 0:109 imageLoad ( temp uint) 0:109 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:109 c1: direct index for structure ( uniform int) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:109 Constant: 0:109 0 (const uint) 0:111 Comma ( temp void) 0:111 Function Call: Fn2(f1; ( temp void) 0:111 'tempArg' ( temp float) 0:111 Sequence 0:111 imageStore ( temp void) 0:111 'g_tTex1df1' (layout( r32f) uniform image1D) 0:111 c1: direct index for structure ( uniform int) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:111 Constant: 0:111 0 (const uint) 0:111 'tempArg' ( temp float) 0:111 'tempArg' ( temp float) 0:112 Comma ( temp void) 0:112 Function Call: Fn2(i1; ( temp void) 0:112 'tempArg' ( temp int) 0:112 Sequence 0:112 imageStore ( temp void) 0:112 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:112 c1: direct index for structure ( uniform int) 0:112 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:112 Constant: 0:112 0 (const uint) 0:112 'tempArg' ( temp int) 0:112 'tempArg' ( temp int) 0:113 Comma ( temp void) 0:113 Function Call: Fn2(u1; ( temp void) 0:113 'tempArg' ( temp uint) 0:113 Sequence 0:113 imageStore ( temp void) 0:113 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:113 c1: direct index for structure ( uniform int) 0:113 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:113 Constant: 0:113 0 (const uint) 0:113 'tempArg' ( temp uint) 0:113 'tempArg' ( temp uint) 0:117 Sequence 0:117 move second child to first child ( temp int) 0:117 'coordTemp' ( temp int) 0:117 c1: direct index for structure ( uniform int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:117 Constant: 0:117 0 (const uint) 0:117 move second child to first child ( temp float) 0:117 'storeTemp' ( temp float) 0:117 imageLoad ( temp float) 0:117 'g_tTex1df1' (layout( r32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 Pre-Increment ( temp float) 0:117 'storeTemp' ( temp float) 0:117 imageStore ( temp void) 0:117 'g_tTex1df1' (layout( r32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 'storeTemp' ( temp float) 0:117 'storeTemp' ( temp float) 0:118 Sequence 0:118 move second child to first child ( temp int) 0:118 'coordTemp' ( temp int) 0:118 c1: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:118 Constant: 0:118 0 (const uint) 0:118 move second child to first child ( temp int) 0:118 'storeTemp' ( temp int) 0:118 imageLoad ( temp int) 0:118 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 Pre-Increment ( temp int) 0:118 'storeTemp' ( temp int) 0:118 imageStore ( temp void) 0:118 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 'storeTemp' ( temp int) 0:118 'storeTemp' ( temp int) 0:119 Sequence 0:119 move second child to first child ( temp int) 0:119 'coordTemp' ( temp int) 0:119 c1: direct index for structure ( uniform int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:119 Constant: 0:119 0 (const uint) 0:119 move second child to first child ( temp uint) 0:119 'storeTemp' ( temp uint) 0:119 imageLoad ( temp uint) 0:119 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 Pre-Increment ( temp uint) 0:119 'storeTemp' ( temp uint) 0:119 imageStore ( temp void) 0:119 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 'storeTemp' ( temp uint) 0:119 'storeTemp' ( temp uint) 0:121 Sequence 0:121 move second child to first child ( temp int) 0:121 'coordTemp' ( temp int) 0:121 c1: direct index for structure ( uniform int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:121 Constant: 0:121 0 (const uint) 0:121 move second child to first child ( temp float) 0:121 'storeTemp' ( temp float) 0:121 imageLoad ( temp float) 0:121 'g_tTex1df1' (layout( r32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 Pre-Decrement ( temp float) 0:121 'storeTemp' ( temp float) 0:121 imageStore ( temp void) 0:121 'g_tTex1df1' (layout( r32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 'storeTemp' ( temp float) 0:121 'storeTemp' ( temp float) 0:122 Sequence 0:122 move second child to first child ( temp int) 0:122 'coordTemp' ( temp int) 0:122 c1: direct index for structure ( uniform int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:122 Constant: 0:122 0 (const uint) 0:122 move second child to first child ( temp int) 0:122 'storeTemp' ( temp int) 0:122 imageLoad ( temp int) 0:122 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 Pre-Decrement ( temp int) 0:122 'storeTemp' ( temp int) 0:122 imageStore ( temp void) 0:122 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 'storeTemp' ( temp int) 0:122 'storeTemp' ( temp int) 0:123 Sequence 0:123 move second child to first child ( temp int) 0:123 'coordTemp' ( temp int) 0:123 c1: direct index for structure ( uniform int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:123 Constant: 0:123 0 (const uint) 0:123 move second child to first child ( temp uint) 0:123 'storeTemp' ( temp uint) 0:123 imageLoad ( temp uint) 0:123 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 Pre-Decrement ( temp uint) 0:123 'storeTemp' ( temp uint) 0:123 imageStore ( temp void) 0:123 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 'storeTemp' ( temp uint) 0:123 'storeTemp' ( temp uint) 0:126 Sequence 0:126 move second child to first child ( temp int) 0:126 'coordTemp' ( temp int) 0:126 c1: direct index for structure ( uniform int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:126 Constant: 0:126 0 (const uint) 0:126 move second child to first child ( temp float) 0:126 'storeTempPre' ( temp float) 0:126 imageLoad ( temp float) 0:126 'g_tTex1df1' (layout( r32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 move second child to first child ( temp float) 0:126 'storeTempPost' ( temp float) 0:126 'storeTempPre' ( temp float) 0:126 Post-Increment ( temp float) 0:126 'storeTempPost' ( temp float) 0:126 imageStore ( temp void) 0:126 'g_tTex1df1' (layout( r32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 'storeTempPost' ( temp float) 0:126 'storeTempPre' ( temp float) 0:127 Sequence 0:127 move second child to first child ( temp int) 0:127 'coordTemp' ( temp int) 0:127 c1: direct index for structure ( uniform int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:127 Constant: 0:127 0 (const uint) 0:127 move second child to first child ( temp uint) 0:127 'storeTempPre' ( temp uint) 0:127 imageLoad ( temp uint) 0:127 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 move second child to first child ( temp uint) 0:127 'storeTempPost' ( temp uint) 0:127 'storeTempPre' ( temp uint) 0:127 Post-Decrement ( temp uint) 0:127 'storeTempPost' ( temp uint) 0:127 imageStore ( temp void) 0:127 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 'storeTempPost' ( temp uint) 0:127 'storeTempPre' ( temp uint) 0:128 Sequence 0:128 move second child to first child ( temp int) 0:128 'coordTemp' ( temp int) 0:128 c1: direct index for structure ( uniform int) 0:128 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:128 Constant: 0:128 0 (const uint) 0:128 move second child to first child ( temp int) 0:128 'storeTempPre' ( temp int) 0:128 imageLoad ( temp int) 0:128 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 move second child to first child ( temp int) 0:128 'storeTempPost' ( temp int) 0:128 'storeTempPre' ( temp int) 0:128 Post-Increment ( temp int) 0:128 'storeTempPost' ( temp int) 0:128 imageStore ( temp void) 0:128 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 'storeTempPost' ( temp int) 0:128 'storeTempPre' ( temp int) 0:130 Sequence 0:130 move second child to first child ( temp int) 0:130 'coordTemp' ( temp int) 0:130 c1: direct index for structure ( uniform int) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:130 Constant: 0:130 0 (const uint) 0:130 move second child to first child ( temp float) 0:130 'storeTempPre' ( temp float) 0:130 imageLoad ( temp float) 0:130 'g_tTex1df1' (layout( r32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 move second child to first child ( temp float) 0:130 'storeTempPost' ( temp float) 0:130 'storeTempPre' ( temp float) 0:130 Post-Decrement ( temp float) 0:130 'storeTempPost' ( temp float) 0:130 imageStore ( temp void) 0:130 'g_tTex1df1' (layout( r32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 'storeTempPost' ( temp float) 0:130 'storeTempPre' ( temp float) 0:131 Sequence 0:131 move second child to first child ( temp int) 0:131 'coordTemp' ( temp int) 0:131 c1: direct index for structure ( uniform int) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:131 Constant: 0:131 0 (const uint) 0:131 move second child to first child ( temp int) 0:131 'storeTempPre' ( temp int) 0:131 imageLoad ( temp int) 0:131 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 move second child to first child ( temp int) 0:131 'storeTempPost' ( temp int) 0:131 'storeTempPre' ( temp int) 0:131 Post-Increment ( temp int) 0:131 'storeTempPost' ( temp int) 0:131 imageStore ( temp void) 0:131 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 'storeTempPost' ( temp int) 0:131 'storeTempPre' ( temp int) 0:132 Sequence 0:132 move second child to first child ( temp int) 0:132 'coordTemp' ( temp int) 0:132 c1: direct index for structure ( uniform int) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:132 Constant: 0:132 0 (const uint) 0:132 move second child to first child ( temp uint) 0:132 'storeTempPre' ( temp uint) 0:132 imageLoad ( temp uint) 0:132 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 move second child to first child ( temp uint) 0:132 'storeTempPost' ( temp uint) 0:132 'storeTempPre' ( temp uint) 0:132 Post-Decrement ( temp uint) 0:132 'storeTempPost' ( temp uint) 0:132 imageStore ( temp void) 0:132 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 'storeTempPost' ( temp uint) 0:132 'storeTempPre' ( temp uint) 0:135 Sequence 0:135 move second child to first child ( temp float) 0:135 'storeTemp' ( temp float) 0:135 imageLoad ( temp float) 0:135 'g_tTex2df1' (layout( r32f) uniform image2D) 0:135 Constant: 0:135 2 (const int) 0:135 3 (const int) 0:135 imageStore ( temp void) 0:135 'g_tTex1df1' (layout( r32f) uniform image1D) 0:135 Constant: 0:135 1 (const int) 0:135 'storeTemp' ( temp float) 0:135 'storeTemp' ( temp float) 0:137 move second child to first child ( temp 4-component vector of float) 0:137 Color: direct index for structure ( temp 4-component vector of float) 0:137 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:139 Branch: Return with expression 0:139 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Constant: 0:53 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df1' (layout( r32f) uniform image1D) 0:? 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:? 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:? 'g_tTex2df1' (layout( r32f) uniform image2D) 0:? 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:? 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:? 'g_tTex3df1' (layout( r32f) uniform image3D) 0:? 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:? 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:? 'g_tTex1df1a' (layout( r32f) uniform image1DArray) 0:? 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:? 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:? 'g_tTex2df1a' (layout( r32f) uniform image2DArray) 0:? 'g_tTex2di1a' (layout( r32i) uniform iimage2DArray) 0:? 'g_tTex2du1a' (layout( r32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:42 Function Definition: Fn1(i1; ( temp int) 0:42 Function Parameters: 0:42 'x' ( in int) 0:? Sequence 0:42 Branch: Return with expression 0:42 'x' ( in int) 0:43 Function Definition: Fn1(u1; ( temp uint) 0:43 Function Parameters: 0:43 'x' ( in uint) 0:? Sequence 0:43 Branch: Return with expression 0:43 'x' ( in uint) 0:44 Function Definition: Fn1(f1; ( temp float) 0:44 Function Parameters: 0:44 'x' ( in float) 0:? Sequence 0:44 Branch: Return with expression 0:44 'x' ( in float) 0:46 Function Definition: Fn2(i1; ( temp void) 0:46 Function Parameters: 0:46 'x' ( out int) 0:? Sequence 0:46 move second child to first child ( temp int) 0:46 'x' ( out int) 0:46 Constant: 0:46 0 (const int) 0:47 Function Definition: Fn2(u1; ( temp void) 0:47 Function Parameters: 0:47 'x' ( out uint) 0:? Sequence 0:47 move second child to first child ( temp uint) 0:47 'x' ( out uint) 0:47 Constant: 0:47 0 (const uint) 0:48 Function Definition: Fn2(f1; ( temp void) 0:48 Function Parameters: 0:48 'x' ( out float) 0:? Sequence 0:48 move second child to first child ( temp float) 0:48 'x' ( out float) 0:48 Constant: 0:48 0.000000 0:50 Function Definition: SomeValue( ( temp float) 0:50 Function Parameters: 0:? Sequence 0:50 Branch: Return with expression 0:50 Convert int to float ( temp float) 0:50 c1: direct index for structure ( uniform int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:50 Constant: 0:50 0 (const uint) 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Parameters: 0:? Sequence 0:57 imageLoad ( temp float) 0:57 'g_tTex1df1' (layout( r32f) uniform image1D) 0:57 c1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:57 Constant: 0:57 0 (const uint) 0:59 Sequence 0:59 move second child to first child ( temp float) 0:59 'r00' ( temp float) 0:59 imageLoad ( temp float) 0:59 'g_tTex1df1' (layout( r32f) uniform image1D) 0:59 c1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:59 Constant: 0:59 0 (const uint) 0:60 Sequence 0:60 move second child to first child ( temp int) 0:60 'r01' ( temp int) 0:60 imageLoad ( temp int) 0:60 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:60 c1: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:60 Constant: 0:60 0 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp uint) 0:61 'r02' ( temp uint) 0:61 imageLoad ( temp uint) 0:61 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:61 c1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:61 Constant: 0:61 0 (const uint) 0:64 Sequence 0:64 move second child to first child ( temp float) 0:64 'r10' ( temp float) 0:64 imageLoad ( temp float) 0:64 'g_tTex2df1' (layout( r32f) uniform image2D) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:64 Constant: 0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child ( temp int) 0:65 'r11' ( temp int) 0:65 imageLoad ( temp int) 0:65 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:65 c2: direct index for structure ( uniform 2-component vector of int) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:65 Constant: 0:65 1 (const uint) 0:66 Sequence 0:66 move second child to first child ( temp uint) 0:66 'r12' ( temp uint) 0:66 imageLoad ( temp uint) 0:66 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:66 c2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:66 Constant: 0:66 1 (const uint) 0:69 Sequence 0:69 move second child to first child ( temp float) 0:69 'r20' ( temp float) 0:69 imageLoad ( temp float) 0:69 'g_tTex3df1' (layout( r32f) uniform image3D) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:69 Constant: 0:69 2 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp int) 0:70 'r21' ( temp int) 0:70 imageLoad ( temp int) 0:70 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:70 c3: direct index for structure ( uniform 3-component vector of int) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:70 Constant: 0:70 2 (const uint) 0:71 Sequence 0:71 move second child to first child ( temp uint) 0:71 'r22' ( temp uint) 0:71 imageLoad ( temp uint) 0:71 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:71 c3: direct index for structure ( uniform 3-component vector of int) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:71 Constant: 0:71 2 (const uint) 0:73 Sequence 0:73 move second child to first child ( temp float) 0:73 'lf1' ( temp float) 0:73 uf1: direct index for structure ( uniform float) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:73 Constant: 0:73 8 (const uint) 0:77 Sequence 0:77 move second child to first child ( temp float) 0:77 'storeTemp' ( temp float) 0:77 Function Call: SomeValue( ( temp float) 0:77 imageStore ( temp void) 0:77 'g_tTex1df1' (layout( r32f) uniform image1D) 0:77 c1: direct index for structure ( uniform int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:77 Constant: 0:77 0 (const uint) 0:77 'storeTemp' ( temp float) 0:77 'storeTemp' ( temp float) 0:78 Sequence 0:78 imageStore ( temp void) 0:78 'g_tTex1df1' (layout( r32f) uniform image1D) 0:78 c1: direct index for structure ( uniform int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:78 Constant: 0:78 0 (const uint) 0:78 'lf1' ( temp float) 0:78 'lf1' ( temp float) 0:79 Sequence 0:79 move second child to first child ( temp int) 0:79 'storeTemp' ( temp int) 0:79 Constant: 0:79 2 (const int) 0:79 imageStore ( temp void) 0:79 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:79 c1: direct index for structure ( uniform int) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:79 Constant: 0:79 0 (const uint) 0:79 'storeTemp' ( temp int) 0:79 'storeTemp' ( temp int) 0:80 Sequence 0:80 move second child to first child ( temp uint) 0:80 'storeTemp' ( temp uint) 0:80 Constant: 0:80 3 (const uint) 0:80 imageStore ( temp void) 0:80 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:80 c1: direct index for structure ( uniform int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:80 Constant: 0:80 0 (const uint) 0:80 'storeTemp' ( temp uint) 0:80 'storeTemp' ( temp uint) 0:83 Sequence 0:83 move second child to first child ( temp float) 0:83 'val1' ( temp float) 0:83 Sequence 0:83 move second child to first child ( temp int) 0:83 'coordTemp' ( temp int) 0:83 c1: direct index for structure ( uniform int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:83 Constant: 0:83 0 (const uint) 0:83 move second child to first child ( temp float) 0:83 'storeTemp' ( temp float) 0:83 imageLoad ( temp float) 0:83 'g_tTex1df1' (layout( r32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 multiply second child into first child ( temp float) 0:83 'storeTemp' ( temp float) 0:83 Constant: 0:83 2.000000 0:83 imageStore ( temp void) 0:83 'g_tTex1df1' (layout( r32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 'storeTemp' ( temp float) 0:83 'storeTemp' ( temp float) 0:84 Sequence 0:84 move second child to first child ( temp int) 0:84 'coordTemp' ( temp int) 0:84 c1: direct index for structure ( uniform int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:84 Constant: 0:84 0 (const uint) 0:84 move second child to first child ( temp float) 0:84 'storeTemp' ( temp float) 0:84 imageLoad ( temp float) 0:84 'g_tTex1df1' (layout( r32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 subtract second child into first child ( temp float) 0:84 'storeTemp' ( temp float) 0:84 Constant: 0:84 3.000000 0:84 imageStore ( temp void) 0:84 'g_tTex1df1' (layout( r32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 'storeTemp' ( temp float) 0:84 'storeTemp' ( temp float) 0:85 Sequence 0:85 move second child to first child ( temp int) 0:85 'coordTemp' ( temp int) 0:85 c1: direct index for structure ( uniform int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:85 Constant: 0:85 0 (const uint) 0:85 move second child to first child ( temp float) 0:85 'storeTemp' ( temp float) 0:85 imageLoad ( temp float) 0:85 'g_tTex1df1' (layout( r32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 add second child into first child ( temp float) 0:85 'storeTemp' ( temp float) 0:85 Constant: 0:85 4.000000 0:85 imageStore ( temp void) 0:85 'g_tTex1df1' (layout( r32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 'storeTemp' ( temp float) 0:85 'storeTemp' ( temp float) 0:87 Sequence 0:87 move second child to first child ( temp int) 0:87 'coordTemp' ( temp int) 0:87 c1: direct index for structure ( uniform int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:87 Constant: 0:87 0 (const uint) 0:87 move second child to first child ( temp int) 0:87 'storeTemp' ( temp int) 0:87 imageLoad ( temp int) 0:87 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 divide second child into first child ( temp int) 0:87 'storeTemp' ( temp int) 0:87 Constant: 0:87 2 (const int) 0:87 imageStore ( temp void) 0:87 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 'storeTemp' ( temp int) 0:87 'storeTemp' ( temp int) 0:88 Sequence 0:88 move second child to first child ( temp int) 0:88 'coordTemp' ( temp int) 0:88 c1: direct index for structure ( uniform int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:88 Constant: 0:88 0 (const uint) 0:88 move second child to first child ( temp int) 0:88 'storeTemp' ( temp int) 0:88 imageLoad ( temp int) 0:88 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 mod second child into first child ( temp int) 0:88 'storeTemp' ( temp int) 0:88 Constant: 0:88 2 (const int) 0:88 imageStore ( temp void) 0:88 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 'storeTemp' ( temp int) 0:88 'storeTemp' ( temp int) 0:89 Sequence 0:89 move second child to first child ( temp int) 0:89 'coordTemp' ( temp int) 0:89 c1: direct index for structure ( uniform int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:89 Constant: 0:89 0 (const uint) 0:89 move second child to first child ( temp int) 0:89 'storeTemp' ( temp int) 0:89 imageLoad ( temp int) 0:89 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 and second child into first child ( temp int) 0:89 'storeTemp' ( temp int) 0:89 Constant: 0:89 65535 (const int) 0:89 imageStore ( temp void) 0:89 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 'storeTemp' ( temp int) 0:89 'storeTemp' ( temp int) 0:90 Sequence 0:90 move second child to first child ( temp int) 0:90 'coordTemp' ( temp int) 0:90 c1: direct index for structure ( uniform int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:90 Constant: 0:90 0 (const uint) 0:90 move second child to first child ( temp int) 0:90 'storeTemp' ( temp int) 0:90 imageLoad ( temp int) 0:90 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 or second child into first child ( temp int) 0:90 'storeTemp' ( temp int) 0:90 Constant: 0:90 61680 (const int) 0:90 imageStore ( temp void) 0:90 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 'storeTemp' ( temp int) 0:90 'storeTemp' ( temp int) 0:91 Sequence 0:91 move second child to first child ( temp int) 0:91 'coordTemp' ( temp int) 0:91 c1: direct index for structure ( uniform int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:91 Constant: 0:91 0 (const uint) 0:91 move second child to first child ( temp int) 0:91 'storeTemp' ( temp int) 0:91 imageLoad ( temp int) 0:91 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 left shift second child into first child ( temp int) 0:91 'storeTemp' ( temp int) 0:91 Constant: 0:91 2 (const int) 0:91 imageStore ( temp void) 0:91 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 'storeTemp' ( temp int) 0:91 'storeTemp' ( temp int) 0:92 Sequence 0:92 move second child to first child ( temp int) 0:92 'coordTemp' ( temp int) 0:92 c1: direct index for structure ( uniform int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:92 Constant: 0:92 0 (const uint) 0:92 move second child to first child ( temp int) 0:92 'storeTemp' ( temp int) 0:92 imageLoad ( temp int) 0:92 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 right shift second child into first child ( temp int) 0:92 'storeTemp' ( temp int) 0:92 Constant: 0:92 2 (const int) 0:92 imageStore ( temp void) 0:92 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 'storeTemp' ( temp int) 0:92 'storeTemp' ( temp int) 0:95 Sequence 0:95 move second child to first child ( temp float) 0:95 'storeTemp' ( temp float) 0:95 Function Call: SomeValue( ( temp float) 0:95 imageStore ( temp void) 0:95 'g_tTex2df1' (layout( r32f) uniform image2D) 0:95 c2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:95 Constant: 0:95 1 (const uint) 0:95 'storeTemp' ( temp float) 0:95 'storeTemp' ( temp float) 0:96 Sequence 0:96 imageStore ( temp void) 0:96 'g_tTex2df1' (layout( r32f) uniform image2D) 0:96 c2: direct index for structure ( uniform 2-component vector of int) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:96 Constant: 0:96 1 (const uint) 0:96 'lf1' ( temp float) 0:96 'lf1' ( temp float) 0:97 Sequence 0:97 move second child to first child ( temp int) 0:97 'storeTemp' ( temp int) 0:97 Constant: 0:97 5 (const int) 0:97 imageStore ( temp void) 0:97 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:97 c2: direct index for structure ( uniform 2-component vector of int) 0:97 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:97 Constant: 0:97 1 (const uint) 0:97 'storeTemp' ( temp int) 0:97 'storeTemp' ( temp int) 0:98 Sequence 0:98 move second child to first child ( temp uint) 0:98 'storeTemp' ( temp uint) 0:98 Constant: 0:98 6 (const uint) 0:98 imageStore ( temp void) 0:98 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:98 c2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:98 Constant: 0:98 1 (const uint) 0:98 'storeTemp' ( temp uint) 0:98 'storeTemp' ( temp uint) 0:101 Sequence 0:101 move second child to first child ( temp float) 0:101 'storeTemp' ( temp float) 0:101 Function Call: SomeValue( ( temp float) 0:101 imageStore ( temp void) 0:101 'g_tTex3df1' (layout( r32f) uniform image3D) 0:101 c3: direct index for structure ( uniform 3-component vector of int) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:101 Constant: 0:101 2 (const uint) 0:101 'storeTemp' ( temp float) 0:101 'storeTemp' ( temp float) 0:102 Sequence 0:102 imageStore ( temp void) 0:102 'g_tTex3df1' (layout( r32f) uniform image3D) 0:102 c3: direct index for structure ( uniform 3-component vector of int) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:102 Constant: 0:102 2 (const uint) 0:102 'lf1' ( temp float) 0:102 'lf1' ( temp float) 0:103 Sequence 0:103 move second child to first child ( temp int) 0:103 'storeTemp' ( temp int) 0:103 Constant: 0:103 8 (const int) 0:103 imageStore ( temp void) 0:103 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:103 c3: direct index for structure ( uniform 3-component vector of int) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:103 Constant: 0:103 2 (const uint) 0:103 'storeTemp' ( temp int) 0:103 'storeTemp' ( temp int) 0:104 Sequence 0:104 move second child to first child ( temp uint) 0:104 'storeTemp' ( temp uint) 0:104 Constant: 0:104 9 (const uint) 0:104 imageStore ( temp void) 0:104 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:104 c3: direct index for structure ( uniform 3-component vector of int) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:104 Constant: 0:104 2 (const uint) 0:104 'storeTemp' ( temp uint) 0:104 'storeTemp' ( temp uint) 0:107 Function Call: Fn1(f1; ( temp float) 0:107 imageLoad ( temp float) 0:107 'g_tTex1df1' (layout( r32f) uniform image1D) 0:107 c1: direct index for structure ( uniform int) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:107 Constant: 0:107 0 (const uint) 0:108 Function Call: Fn1(i1; ( temp int) 0:108 imageLoad ( temp int) 0:108 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:108 c1: direct index for structure ( uniform int) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:108 Constant: 0:108 0 (const uint) 0:109 Function Call: Fn1(u1; ( temp uint) 0:109 imageLoad ( temp uint) 0:109 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:109 c1: direct index for structure ( uniform int) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:109 Constant: 0:109 0 (const uint) 0:111 Comma ( temp void) 0:111 Function Call: Fn2(f1; ( temp void) 0:111 'tempArg' ( temp float) 0:111 Sequence 0:111 imageStore ( temp void) 0:111 'g_tTex1df1' (layout( r32f) uniform image1D) 0:111 c1: direct index for structure ( uniform int) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:111 Constant: 0:111 0 (const uint) 0:111 'tempArg' ( temp float) 0:111 'tempArg' ( temp float) 0:112 Comma ( temp void) 0:112 Function Call: Fn2(i1; ( temp void) 0:112 'tempArg' ( temp int) 0:112 Sequence 0:112 imageStore ( temp void) 0:112 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:112 c1: direct index for structure ( uniform int) 0:112 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:112 Constant: 0:112 0 (const uint) 0:112 'tempArg' ( temp int) 0:112 'tempArg' ( temp int) 0:113 Comma ( temp void) 0:113 Function Call: Fn2(u1; ( temp void) 0:113 'tempArg' ( temp uint) 0:113 Sequence 0:113 imageStore ( temp void) 0:113 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:113 c1: direct index for structure ( uniform int) 0:113 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:113 Constant: 0:113 0 (const uint) 0:113 'tempArg' ( temp uint) 0:113 'tempArg' ( temp uint) 0:117 Sequence 0:117 move second child to first child ( temp int) 0:117 'coordTemp' ( temp int) 0:117 c1: direct index for structure ( uniform int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:117 Constant: 0:117 0 (const uint) 0:117 move second child to first child ( temp float) 0:117 'storeTemp' ( temp float) 0:117 imageLoad ( temp float) 0:117 'g_tTex1df1' (layout( r32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 Pre-Increment ( temp float) 0:117 'storeTemp' ( temp float) 0:117 imageStore ( temp void) 0:117 'g_tTex1df1' (layout( r32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 'storeTemp' ( temp float) 0:117 'storeTemp' ( temp float) 0:118 Sequence 0:118 move second child to first child ( temp int) 0:118 'coordTemp' ( temp int) 0:118 c1: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:118 Constant: 0:118 0 (const uint) 0:118 move second child to first child ( temp int) 0:118 'storeTemp' ( temp int) 0:118 imageLoad ( temp int) 0:118 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 Pre-Increment ( temp int) 0:118 'storeTemp' ( temp int) 0:118 imageStore ( temp void) 0:118 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 'storeTemp' ( temp int) 0:118 'storeTemp' ( temp int) 0:119 Sequence 0:119 move second child to first child ( temp int) 0:119 'coordTemp' ( temp int) 0:119 c1: direct index for structure ( uniform int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:119 Constant: 0:119 0 (const uint) 0:119 move second child to first child ( temp uint) 0:119 'storeTemp' ( temp uint) 0:119 imageLoad ( temp uint) 0:119 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 Pre-Increment ( temp uint) 0:119 'storeTemp' ( temp uint) 0:119 imageStore ( temp void) 0:119 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 'storeTemp' ( temp uint) 0:119 'storeTemp' ( temp uint) 0:121 Sequence 0:121 move second child to first child ( temp int) 0:121 'coordTemp' ( temp int) 0:121 c1: direct index for structure ( uniform int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:121 Constant: 0:121 0 (const uint) 0:121 move second child to first child ( temp float) 0:121 'storeTemp' ( temp float) 0:121 imageLoad ( temp float) 0:121 'g_tTex1df1' (layout( r32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 Pre-Decrement ( temp float) 0:121 'storeTemp' ( temp float) 0:121 imageStore ( temp void) 0:121 'g_tTex1df1' (layout( r32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 'storeTemp' ( temp float) 0:121 'storeTemp' ( temp float) 0:122 Sequence 0:122 move second child to first child ( temp int) 0:122 'coordTemp' ( temp int) 0:122 c1: direct index for structure ( uniform int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:122 Constant: 0:122 0 (const uint) 0:122 move second child to first child ( temp int) 0:122 'storeTemp' ( temp int) 0:122 imageLoad ( temp int) 0:122 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 Pre-Decrement ( temp int) 0:122 'storeTemp' ( temp int) 0:122 imageStore ( temp void) 0:122 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 'storeTemp' ( temp int) 0:122 'storeTemp' ( temp int) 0:123 Sequence 0:123 move second child to first child ( temp int) 0:123 'coordTemp' ( temp int) 0:123 c1: direct index for structure ( uniform int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:123 Constant: 0:123 0 (const uint) 0:123 move second child to first child ( temp uint) 0:123 'storeTemp' ( temp uint) 0:123 imageLoad ( temp uint) 0:123 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 Pre-Decrement ( temp uint) 0:123 'storeTemp' ( temp uint) 0:123 imageStore ( temp void) 0:123 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 'storeTemp' ( temp uint) 0:123 'storeTemp' ( temp uint) 0:126 Sequence 0:126 move second child to first child ( temp int) 0:126 'coordTemp' ( temp int) 0:126 c1: direct index for structure ( uniform int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:126 Constant: 0:126 0 (const uint) 0:126 move second child to first child ( temp float) 0:126 'storeTempPre' ( temp float) 0:126 imageLoad ( temp float) 0:126 'g_tTex1df1' (layout( r32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 move second child to first child ( temp float) 0:126 'storeTempPost' ( temp float) 0:126 'storeTempPre' ( temp float) 0:126 Post-Increment ( temp float) 0:126 'storeTempPost' ( temp float) 0:126 imageStore ( temp void) 0:126 'g_tTex1df1' (layout( r32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 'storeTempPost' ( temp float) 0:126 'storeTempPre' ( temp float) 0:127 Sequence 0:127 move second child to first child ( temp int) 0:127 'coordTemp' ( temp int) 0:127 c1: direct index for structure ( uniform int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:127 Constant: 0:127 0 (const uint) 0:127 move second child to first child ( temp uint) 0:127 'storeTempPre' ( temp uint) 0:127 imageLoad ( temp uint) 0:127 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 move second child to first child ( temp uint) 0:127 'storeTempPost' ( temp uint) 0:127 'storeTempPre' ( temp uint) 0:127 Post-Decrement ( temp uint) 0:127 'storeTempPost' ( temp uint) 0:127 imageStore ( temp void) 0:127 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 'storeTempPost' ( temp uint) 0:127 'storeTempPre' ( temp uint) 0:128 Sequence 0:128 move second child to first child ( temp int) 0:128 'coordTemp' ( temp int) 0:128 c1: direct index for structure ( uniform int) 0:128 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:128 Constant: 0:128 0 (const uint) 0:128 move second child to first child ( temp int) 0:128 'storeTempPre' ( temp int) 0:128 imageLoad ( temp int) 0:128 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 move second child to first child ( temp int) 0:128 'storeTempPost' ( temp int) 0:128 'storeTempPre' ( temp int) 0:128 Post-Increment ( temp int) 0:128 'storeTempPost' ( temp int) 0:128 imageStore ( temp void) 0:128 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 'storeTempPost' ( temp int) 0:128 'storeTempPre' ( temp int) 0:130 Sequence 0:130 move second child to first child ( temp int) 0:130 'coordTemp' ( temp int) 0:130 c1: direct index for structure ( uniform int) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:130 Constant: 0:130 0 (const uint) 0:130 move second child to first child ( temp float) 0:130 'storeTempPre' ( temp float) 0:130 imageLoad ( temp float) 0:130 'g_tTex1df1' (layout( r32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 move second child to first child ( temp float) 0:130 'storeTempPost' ( temp float) 0:130 'storeTempPre' ( temp float) 0:130 Post-Decrement ( temp float) 0:130 'storeTempPost' ( temp float) 0:130 imageStore ( temp void) 0:130 'g_tTex1df1' (layout( r32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 'storeTempPost' ( temp float) 0:130 'storeTempPre' ( temp float) 0:131 Sequence 0:131 move second child to first child ( temp int) 0:131 'coordTemp' ( temp int) 0:131 c1: direct index for structure ( uniform int) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:131 Constant: 0:131 0 (const uint) 0:131 move second child to first child ( temp int) 0:131 'storeTempPre' ( temp int) 0:131 imageLoad ( temp int) 0:131 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 move second child to first child ( temp int) 0:131 'storeTempPost' ( temp int) 0:131 'storeTempPre' ( temp int) 0:131 Post-Increment ( temp int) 0:131 'storeTempPost' ( temp int) 0:131 imageStore ( temp void) 0:131 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 'storeTempPost' ( temp int) 0:131 'storeTempPre' ( temp int) 0:132 Sequence 0:132 move second child to first child ( temp int) 0:132 'coordTemp' ( temp int) 0:132 c1: direct index for structure ( uniform int) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:132 Constant: 0:132 0 (const uint) 0:132 move second child to first child ( temp uint) 0:132 'storeTempPre' ( temp uint) 0:132 imageLoad ( temp uint) 0:132 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 move second child to first child ( temp uint) 0:132 'storeTempPost' ( temp uint) 0:132 'storeTempPre' ( temp uint) 0:132 Post-Decrement ( temp uint) 0:132 'storeTempPost' ( temp uint) 0:132 imageStore ( temp void) 0:132 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 'storeTempPost' ( temp uint) 0:132 'storeTempPre' ( temp uint) 0:135 Sequence 0:135 move second child to first child ( temp float) 0:135 'storeTemp' ( temp float) 0:135 imageLoad ( temp float) 0:135 'g_tTex2df1' (layout( r32f) uniform image2D) 0:135 Constant: 0:135 2 (const int) 0:135 3 (const int) 0:135 imageStore ( temp void) 0:135 'g_tTex1df1' (layout( r32f) uniform image1D) 0:135 Constant: 0:135 1 (const int) 0:135 'storeTemp' ( temp float) 0:135 'storeTemp' ( temp float) 0:137 move second child to first child ( temp 4-component vector of float) 0:137 Color: direct index for structure ( temp 4-component vector of float) 0:137 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:139 Branch: Return with expression 0:139 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Constant: 0:53 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df1' (layout( r32f) uniform image1D) 0:? 'g_tTex1di1' (layout( r32i) uniform iimage1D) 0:? 'g_tTex1du1' (layout( r32ui) uniform uimage1D) 0:? 'g_tTex2df1' (layout( r32f) uniform image2D) 0:? 'g_tTex2di1' (layout( r32i) uniform iimage2D) 0:? 'g_tTex2du1' (layout( r32ui) uniform uimage2D) 0:? 'g_tTex3df1' (layout( r32f) uniform image3D) 0:? 'g_tTex3di1' (layout( r32i) uniform iimage3D) 0:? 'g_tTex3du1' (layout( r32ui) uniform uimage3D) 0:? 'g_tTex1df1a' (layout( r32f) uniform image1DArray) 0:? 'g_tTex1di1a' (layout( r32i) uniform iimage1DArray) 0:? 'g_tTex1du1a' (layout( r32ui) uniform uimage1DArray) 0:? 'g_tTex2df1a' (layout( r32f) uniform image2DArray) 0:? 'g_tTex2di1a' (layout( r32i) uniform iimage2DArray) 0:? 'g_tTex2du1a' (layout( r32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 607 Capability Shader Capability Image1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 583 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 10 "Fn1(i1;" Name 9 "x" Name 16 "Fn1(u1;" Name 15 "x" Name 22 "Fn1(f1;" Name 21 "x" Name 26 "Fn2(i1;" Name 25 "x" Name 30 "Fn2(u1;" Name 29 "x" Name 34 "Fn2(f1;" Name 33 "x" Name 37 "SomeValue(" Name 40 "PS_OUTPUT" MemberName 40(PS_OUTPUT) 0 "Color" Name 42 "@main(" Name 59 "$Global" MemberName 59($Global) 0 "c1" MemberName 59($Global) 1 "c2" MemberName 59($Global) 2 "c3" MemberName 59($Global) 3 "c4" MemberName 59($Global) 4 "o1" MemberName 59($Global) 5 "o2" MemberName 59($Global) 6 "o3" MemberName 59($Global) 7 "o4" MemberName 59($Global) 8 "uf1" MemberName 59($Global) 9 "ui1" MemberName 59($Global) 10 "uu1" Name 61 "" Name 70 "g_tTex1df1" Name 76 "r00" Name 82 "r01" Name 85 "g_tTex1di1" Name 91 "r02" Name 94 "g_tTex1du1" Name 101 "r10" Name 104 "g_tTex2df1" Name 112 "r11" Name 115 "g_tTex2di1" Name 121 "r12" Name 124 "g_tTex2du1" Name 130 "r20" Name 133 "g_tTex3df1" Name 141 "r21" Name 144 "g_tTex3di1" Name 150 "r22" Name 153 "g_tTex3du1" Name 159 "lf1" Name 164 "storeTemp" Name 174 "storeTemp" Name 179 "storeTemp" Name 185 "val1" Name 186 "coordTemp" Name 189 "storeTemp" Name 201 "coordTemp" Name 204 "storeTemp" Name 215 "coordTemp" Name 218 "storeTemp" Name 229 "coordTemp" Name 232 "storeTemp" Name 242 "coordTemp" Name 245 "storeTemp" Name 255 "coordTemp" Name 258 "storeTemp" Name 269 "coordTemp" Name 272 "storeTemp" Name 283 "coordTemp" Name 286 "storeTemp" Name 296 "coordTemp" Name 299 "storeTemp" Name 309 "storeTemp" Name 319 "storeTemp" Name 325 "storeTemp" Name 331 "storeTemp" Name 341 "storeTemp" Name 346 "storeTemp" Name 357 "param" Name 364 "param" Name 371 "param" Name 373 "tempArg" Name 374 "param" Name 381 "tempArg" Name 382 "param" Name 389 "tempArg" Name 390 "param" Name 397 "coordTemp" Name 400 "storeTemp" Name 411 "coordTemp" Name 414 "storeTemp" Name 424 "coordTemp" Name 427 "storeTemp" Name 437 "coordTemp" Name 440 "storeTemp" Name 450 "coordTemp" Name 453 "storeTemp" Name 463 "coordTemp" Name 466 "storeTemp" Name 476 "coordTemp" Name 479 "storeTempPre" Name 484 "storeTempPost" Name 491 "coordTemp" Name 494 "storeTempPre" Name 499 "storeTempPost" Name 506 "coordTemp" Name 509 "storeTempPre" Name 514 "storeTempPost" Name 521 "coordTemp" Name 524 "storeTempPre" Name 529 "storeTempPost" Name 536 "coordTemp" Name 539 "storeTempPre" Name 544 "storeTempPost" Name 551 "coordTemp" Name 554 "storeTempPre" Name 559 "storeTempPost" Name 566 "storeTemp" Name 575 "psout" Name 583 "@entryPointOutput.Color" Name 588 "g_sSamp" Name 591 "g_tTex1df1a" Name 594 "g_tTex1di1a" Name 597 "g_tTex1du1a" Name 600 "g_tTex2df1a" Name 603 "g_tTex2di1a" Name 606 "g_tTex2du1a" Decorate 59($Global) Block MemberDecorate 59($Global) 0 Offset 0 MemberDecorate 59($Global) 1 Offset 8 MemberDecorate 59($Global) 2 Offset 16 MemberDecorate 59($Global) 3 Offset 32 MemberDecorate 59($Global) 4 Offset 48 MemberDecorate 59($Global) 5 Offset 56 MemberDecorate 59($Global) 6 Offset 64 MemberDecorate 59($Global) 7 Offset 80 MemberDecorate 59($Global) 8 Offset 96 MemberDecorate 59($Global) 9 Offset 100 MemberDecorate 59($Global) 10 Offset 104 Decorate 61 Binding 10 Decorate 61 DescriptorSet 0 Decorate 70(g_tTex1df1) Binding 1 Decorate 70(g_tTex1df1) DescriptorSet 0 Decorate 85(g_tTex1di1) Binding 2 Decorate 85(g_tTex1di1) DescriptorSet 0 Decorate 94(g_tTex1du1) Binding 3 Decorate 94(g_tTex1du1) DescriptorSet 0 Decorate 104(g_tTex2df1) Binding 4 Decorate 104(g_tTex2df1) DescriptorSet 0 Decorate 115(g_tTex2di1) Binding 5 Decorate 115(g_tTex2di1) DescriptorSet 0 Decorate 124(g_tTex2du1) Binding 6 Decorate 124(g_tTex2du1) DescriptorSet 0 Decorate 133(g_tTex3df1) Binding 7 Decorate 133(g_tTex3df1) DescriptorSet 0 Decorate 144(g_tTex3di1) Binding 8 Decorate 144(g_tTex3di1) DescriptorSet 0 Decorate 153(g_tTex3du1) Binding 9 Decorate 153(g_tTex3du1) DescriptorSet 0 Decorate 583(@entryPointOutput.Color) Location 0 Decorate 588(g_sSamp) Binding 0 Decorate 588(g_sSamp) DescriptorSet 0 Decorate 591(g_tTex1df1a) Binding 0 Decorate 591(g_tTex1df1a) DescriptorSet 0 Decorate 594(g_tTex1di1a) Binding 0 Decorate 594(g_tTex1di1a) DescriptorSet 0 Decorate 597(g_tTex1du1a) Binding 0 Decorate 597(g_tTex1du1a) DescriptorSet 0 Decorate 600(g_tTex2df1a) Binding 0 Decorate 600(g_tTex2df1a) DescriptorSet 0 Decorate 603(g_tTex2di1a) Binding 0 Decorate 603(g_tTex2di1a) DescriptorSet 0 Decorate 606(g_tTex2du1a) Binding 0 Decorate 606(g_tTex2du1a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFunction 6(int) 7(ptr) 12: TypeInt 32 0 13: TypePointer Function 12(int) 14: TypeFunction 12(int) 13(ptr) 18: TypeFloat 32 19: TypePointer Function 18(float) 20: TypeFunction 18(float) 19(ptr) 24: TypeFunction 2 7(ptr) 28: TypeFunction 2 13(ptr) 32: TypeFunction 2 19(ptr) 36: TypeFunction 18(float) 39: TypeVector 18(float) 4 40(PS_OUTPUT): TypeStruct 39(fvec4) 41: TypeFunction 40(PS_OUTPUT) 53: 6(int) Constant 0 54: 12(int) Constant 0 55: 18(float) Constant 0 56: TypeVector 6(int) 2 57: TypeVector 6(int) 3 58: TypeVector 6(int) 4 59($Global): TypeStruct 6(int) 56(ivec2) 57(ivec3) 58(ivec4) 6(int) 56(ivec2) 57(ivec3) 58(ivec4) 18(float) 6(int) 12(int) 60: TypePointer Uniform 59($Global) 61: 60(ptr) Variable Uniform 62: TypePointer Uniform 6(int) 68: TypeImage 18(float) 1D nonsampled format:R32f 69: TypePointer UniformConstant 68 70(g_tTex1df1): 69(ptr) Variable UniformConstant 83: TypeImage 6(int) 1D nonsampled format:R32i 84: TypePointer UniformConstant 83 85(g_tTex1di1): 84(ptr) Variable UniformConstant 92: TypeImage 12(int) 1D nonsampled format:R32ui 93: TypePointer UniformConstant 92 94(g_tTex1du1): 93(ptr) Variable UniformConstant 98: TypeVector 12(int) 4 102: TypeImage 18(float) 2D nonsampled format:R32f 103: TypePointer UniformConstant 102 104(g_tTex2df1): 103(ptr) Variable UniformConstant 106: 6(int) Constant 1 107: TypePointer Uniform 56(ivec2) 113: TypeImage 6(int) 2D nonsampled format:R32i 114: TypePointer UniformConstant 113 115(g_tTex2di1): 114(ptr) Variable UniformConstant 122: TypeImage 12(int) 2D nonsampled format:R32ui 123: TypePointer UniformConstant 122 124(g_tTex2du1): 123(ptr) Variable UniformConstant 131: TypeImage 18(float) 3D nonsampled format:R32f 132: TypePointer UniformConstant 131 133(g_tTex3df1): 132(ptr) Variable UniformConstant 135: 6(int) Constant 2 136: TypePointer Uniform 57(ivec3) 142: TypeImage 6(int) 3D nonsampled format:R32i 143: TypePointer UniformConstant 142 144(g_tTex3di1): 143(ptr) Variable UniformConstant 151: TypeImage 12(int) 3D nonsampled format:R32ui 152: TypePointer UniformConstant 151 153(g_tTex3du1): 152(ptr) Variable UniformConstant 160: 6(int) Constant 8 161: TypePointer Uniform 18(float) 180: 12(int) Constant 3 194: 18(float) Constant 1073741824 209: 18(float) Constant 1077936128 223: 18(float) Constant 1082130432 263: 6(int) Constant 65535 277: 6(int) Constant 61680 320: 6(int) Constant 5 326: 12(int) Constant 6 347: 12(int) Constant 9 406: 18(float) Constant 1065353216 568: 6(int) Constant 3 569: 56(ivec2) ConstantComposite 135 568 574: TypePointer Function 40(PS_OUTPUT) 576: 39(fvec4) ConstantComposite 406 406 406 406 577: TypePointer Function 39(fvec4) 582: TypePointer Output 39(fvec4) 583(@entryPointOutput.Color): 582(ptr) Variable Output 586: TypeSampler 587: TypePointer UniformConstant 586 588(g_sSamp): 587(ptr) Variable UniformConstant 589: TypeImage 18(float) 1D array nonsampled format:R32f 590: TypePointer UniformConstant 589 591(g_tTex1df1a): 590(ptr) Variable UniformConstant 592: TypeImage 6(int) 1D array nonsampled format:R32i 593: TypePointer UniformConstant 592 594(g_tTex1di1a): 593(ptr) Variable UniformConstant 595: TypeImage 12(int) 1D array nonsampled format:R32ui 596: TypePointer UniformConstant 595 597(g_tTex1du1a): 596(ptr) Variable UniformConstant 598: TypeImage 18(float) 2D array nonsampled format:R32f 599: TypePointer UniformConstant 598 600(g_tTex2df1a): 599(ptr) Variable UniformConstant 601: TypeImage 6(int) 2D array nonsampled format:R32i 602: TypePointer UniformConstant 601 603(g_tTex2di1a): 602(ptr) Variable UniformConstant 604: TypeImage 12(int) 2D array nonsampled format:R32ui 605: TypePointer UniformConstant 604 606(g_tTex2du1a): 605(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 584:40(PS_OUTPUT) FunctionCall 42(@main() 585: 39(fvec4) CompositeExtract 584 0 Store 583(@entryPointOutput.Color) 585 Return FunctionEnd 10(Fn1(i1;): 6(int) Function None 8 9(x): 7(ptr) FunctionParameter 11: Label 44: 6(int) Load 9(x) ReturnValue 44 FunctionEnd 16(Fn1(u1;): 12(int) Function None 14 15(x): 13(ptr) FunctionParameter 17: Label 47: 12(int) Load 15(x) ReturnValue 47 FunctionEnd 22(Fn1(f1;): 18(float) Function None 20 21(x): 19(ptr) FunctionParameter 23: Label 50: 18(float) Load 21(x) ReturnValue 50 FunctionEnd 26(Fn2(i1;): 2 Function None 24 25(x): 7(ptr) FunctionParameter 27: Label Store 25(x) 53 Return FunctionEnd 30(Fn2(u1;): 2 Function None 28 29(x): 13(ptr) FunctionParameter 31: Label Store 29(x) 54 Return FunctionEnd 34(Fn2(f1;): 2 Function None 32 33(x): 19(ptr) FunctionParameter 35: Label Store 33(x) 55 Return FunctionEnd 37(SomeValue(): 18(float) Function None 36 38: Label 63: 62(ptr) AccessChain 61 53 64: 6(int) Load 63 65: 18(float) ConvertSToF 64 ReturnValue 65 FunctionEnd 42(@main():40(PS_OUTPUT) Function None 41 43: Label 76(r00): 19(ptr) Variable Function 82(r01): 7(ptr) Variable Function 91(r02): 13(ptr) Variable Function 101(r10): 19(ptr) Variable Function 112(r11): 7(ptr) Variable Function 121(r12): 13(ptr) Variable Function 130(r20): 19(ptr) Variable Function 141(r21): 7(ptr) Variable Function 150(r22): 13(ptr) Variable Function 159(lf1): 19(ptr) Variable Function 164(storeTemp): 19(ptr) Variable Function 174(storeTemp): 7(ptr) Variable Function 179(storeTemp): 13(ptr) Variable Function 185(val1): 19(ptr) Variable Function 186(coordTemp): 7(ptr) Variable Function 189(storeTemp): 19(ptr) Variable Function 201(coordTemp): 7(ptr) Variable Function 204(storeTemp): 19(ptr) Variable Function 215(coordTemp): 7(ptr) Variable Function 218(storeTemp): 19(ptr) Variable Function 229(coordTemp): 7(ptr) Variable Function 232(storeTemp): 7(ptr) Variable Function 242(coordTemp): 7(ptr) Variable Function 245(storeTemp): 7(ptr) Variable Function 255(coordTemp): 7(ptr) Variable Function 258(storeTemp): 7(ptr) Variable Function 269(coordTemp): 7(ptr) Variable Function 272(storeTemp): 7(ptr) Variable Function 283(coordTemp): 7(ptr) Variable Function 286(storeTemp): 7(ptr) Variable Function 296(coordTemp): 7(ptr) Variable Function 299(storeTemp): 7(ptr) Variable Function 309(storeTemp): 19(ptr) Variable Function 319(storeTemp): 7(ptr) Variable Function 325(storeTemp): 13(ptr) Variable Function 331(storeTemp): 19(ptr) Variable Function 341(storeTemp): 7(ptr) Variable Function 346(storeTemp): 13(ptr) Variable Function 357(param): 19(ptr) Variable Function 364(param): 7(ptr) Variable Function 371(param): 13(ptr) Variable Function 373(tempArg): 19(ptr) Variable Function 374(param): 19(ptr) Variable Function 381(tempArg): 7(ptr) Variable Function 382(param): 7(ptr) Variable Function 389(tempArg): 13(ptr) Variable Function 390(param): 13(ptr) Variable Function 397(coordTemp): 7(ptr) Variable Function 400(storeTemp): 19(ptr) Variable Function 411(coordTemp): 7(ptr) Variable Function 414(storeTemp): 7(ptr) Variable Function 424(coordTemp): 7(ptr) Variable Function 427(storeTemp): 13(ptr) Variable Function 437(coordTemp): 7(ptr) Variable Function 440(storeTemp): 19(ptr) Variable Function 450(coordTemp): 7(ptr) Variable Function 453(storeTemp): 7(ptr) Variable Function 463(coordTemp): 7(ptr) Variable Function 466(storeTemp): 13(ptr) Variable Function 476(coordTemp): 7(ptr) Variable Function 479(storeTempPre): 19(ptr) Variable Function 484(storeTempPost): 19(ptr) Variable Function 491(coordTemp): 7(ptr) Variable Function 494(storeTempPre): 13(ptr) Variable Function 499(storeTempPost): 13(ptr) Variable Function 506(coordTemp): 7(ptr) Variable Function 509(storeTempPre): 7(ptr) Variable Function 514(storeTempPost): 7(ptr) Variable Function 521(coordTemp): 7(ptr) Variable Function 524(storeTempPre): 19(ptr) Variable Function 529(storeTempPost): 19(ptr) Variable Function 536(coordTemp): 7(ptr) Variable Function 539(storeTempPre): 7(ptr) Variable Function 544(storeTempPost): 7(ptr) Variable Function 551(coordTemp): 7(ptr) Variable Function 554(storeTempPre): 13(ptr) Variable Function 559(storeTempPost): 13(ptr) Variable Function 566(storeTemp): 19(ptr) Variable Function 575(psout): 574(ptr) Variable Function 71: 68 Load 70(g_tTex1df1) 72: 62(ptr) AccessChain 61 53 73: 6(int) Load 72 74: 39(fvec4) ImageRead 71 73 75: 18(float) CompositeExtract 74 0 77: 68 Load 70(g_tTex1df1) 78: 62(ptr) AccessChain 61 53 79: 6(int) Load 78 80: 39(fvec4) ImageRead 77 79 81: 18(float) CompositeExtract 80 0 Store 76(r00) 81 86: 83 Load 85(g_tTex1di1) 87: 62(ptr) AccessChain 61 53 88: 6(int) Load 87 89: 58(ivec4) ImageRead 86 88 90: 6(int) CompositeExtract 89 0 Store 82(r01) 90 95: 92 Load 94(g_tTex1du1) 96: 62(ptr) AccessChain 61 53 97: 6(int) Load 96 99: 98(ivec4) ImageRead 95 97 100: 12(int) CompositeExtract 99 0 Store 91(r02) 100 105: 102 Load 104(g_tTex2df1) 108: 107(ptr) AccessChain 61 106 109: 56(ivec2) Load 108 110: 39(fvec4) ImageRead 105 109 111: 18(float) CompositeExtract 110 0 Store 101(r10) 111 116: 113 Load 115(g_tTex2di1) 117: 107(ptr) AccessChain 61 106 118: 56(ivec2) Load 117 119: 58(ivec4) ImageRead 116 118 120: 6(int) CompositeExtract 119 0 Store 112(r11) 120 125: 122 Load 124(g_tTex2du1) 126: 107(ptr) AccessChain 61 106 127: 56(ivec2) Load 126 128: 98(ivec4) ImageRead 125 127 129: 12(int) CompositeExtract 128 0 Store 121(r12) 129 134: 131 Load 133(g_tTex3df1) 137: 136(ptr) AccessChain 61 135 138: 57(ivec3) Load 137 139: 39(fvec4) ImageRead 134 138 140: 18(float) CompositeExtract 139 0 Store 130(r20) 140 145: 142 Load 144(g_tTex3di1) 146: 136(ptr) AccessChain 61 135 147: 57(ivec3) Load 146 148: 58(ivec4) ImageRead 145 147 149: 6(int) CompositeExtract 148 0 Store 141(r21) 149 154: 151 Load 153(g_tTex3du1) 155: 136(ptr) AccessChain 61 135 156: 57(ivec3) Load 155 157: 98(ivec4) ImageRead 154 156 158: 12(int) CompositeExtract 157 0 Store 150(r22) 158 162: 161(ptr) AccessChain 61 160 163: 18(float) Load 162 Store 159(lf1) 163 165: 18(float) FunctionCall 37(SomeValue() Store 164(storeTemp) 165 166: 68 Load 70(g_tTex1df1) 167: 62(ptr) AccessChain 61 53 168: 6(int) Load 167 169: 18(float) Load 164(storeTemp) ImageWrite 166 168 169 170: 68 Load 70(g_tTex1df1) 171: 62(ptr) AccessChain 61 53 172: 6(int) Load 171 173: 18(float) Load 159(lf1) ImageWrite 170 172 173 Store 174(storeTemp) 135 175: 83 Load 85(g_tTex1di1) 176: 62(ptr) AccessChain 61 53 177: 6(int) Load 176 178: 6(int) Load 174(storeTemp) ImageWrite 175 177 178 Store 179(storeTemp) 180 181: 92 Load 94(g_tTex1du1) 182: 62(ptr) AccessChain 61 53 183: 6(int) Load 182 184: 12(int) Load 179(storeTemp) ImageWrite 181 183 184 187: 62(ptr) AccessChain 61 53 188: 6(int) Load 187 Store 186(coordTemp) 188 190: 68 Load 70(g_tTex1df1) 191: 6(int) Load 186(coordTemp) 192: 39(fvec4) ImageRead 190 191 193: 18(float) CompositeExtract 192 0 Store 189(storeTemp) 193 195: 18(float) Load 189(storeTemp) 196: 18(float) FMul 195 194 Store 189(storeTemp) 196 197: 68 Load 70(g_tTex1df1) 198: 6(int) Load 186(coordTemp) 199: 18(float) Load 189(storeTemp) ImageWrite 197 198 199 200: 18(float) Load 189(storeTemp) Store 185(val1) 200 202: 62(ptr) AccessChain 61 53 203: 6(int) Load 202 Store 201(coordTemp) 203 205: 68 Load 70(g_tTex1df1) 206: 6(int) Load 201(coordTemp) 207: 39(fvec4) ImageRead 205 206 208: 18(float) CompositeExtract 207 0 Store 204(storeTemp) 208 210: 18(float) Load 204(storeTemp) 211: 18(float) FSub 210 209 Store 204(storeTemp) 211 212: 68 Load 70(g_tTex1df1) 213: 6(int) Load 201(coordTemp) 214: 18(float) Load 204(storeTemp) ImageWrite 212 213 214 216: 62(ptr) AccessChain 61 53 217: 6(int) Load 216 Store 215(coordTemp) 217 219: 68 Load 70(g_tTex1df1) 220: 6(int) Load 215(coordTemp) 221: 39(fvec4) ImageRead 219 220 222: 18(float) CompositeExtract 221 0 Store 218(storeTemp) 222 224: 18(float) Load 218(storeTemp) 225: 18(float) FAdd 224 223 Store 218(storeTemp) 225 226: 68 Load 70(g_tTex1df1) 227: 6(int) Load 215(coordTemp) 228: 18(float) Load 218(storeTemp) ImageWrite 226 227 228 230: 62(ptr) AccessChain 61 53 231: 6(int) Load 230 Store 229(coordTemp) 231 233: 83 Load 85(g_tTex1di1) 234: 6(int) Load 229(coordTemp) 235: 58(ivec4) ImageRead 233 234 236: 6(int) CompositeExtract 235 0 Store 232(storeTemp) 236 237: 6(int) Load 232(storeTemp) 238: 6(int) SDiv 237 135 Store 232(storeTemp) 238 239: 83 Load 85(g_tTex1di1) 240: 6(int) Load 229(coordTemp) 241: 6(int) Load 232(storeTemp) ImageWrite 239 240 241 243: 62(ptr) AccessChain 61 53 244: 6(int) Load 243 Store 242(coordTemp) 244 246: 83 Load 85(g_tTex1di1) 247: 6(int) Load 242(coordTemp) 248: 58(ivec4) ImageRead 246 247 249: 6(int) CompositeExtract 248 0 Store 245(storeTemp) 249 250: 6(int) Load 245(storeTemp) 251: 6(int) SMod 250 135 Store 245(storeTemp) 251 252: 83 Load 85(g_tTex1di1) 253: 6(int) Load 242(coordTemp) 254: 6(int) Load 245(storeTemp) ImageWrite 252 253 254 256: 62(ptr) AccessChain 61 53 257: 6(int) Load 256 Store 255(coordTemp) 257 259: 83 Load 85(g_tTex1di1) 260: 6(int) Load 255(coordTemp) 261: 58(ivec4) ImageRead 259 260 262: 6(int) CompositeExtract 261 0 Store 258(storeTemp) 262 264: 6(int) Load 258(storeTemp) 265: 6(int) BitwiseAnd 264 263 Store 258(storeTemp) 265 266: 83 Load 85(g_tTex1di1) 267: 6(int) Load 255(coordTemp) 268: 6(int) Load 258(storeTemp) ImageWrite 266 267 268 270: 62(ptr) AccessChain 61 53 271: 6(int) Load 270 Store 269(coordTemp) 271 273: 83 Load 85(g_tTex1di1) 274: 6(int) Load 269(coordTemp) 275: 58(ivec4) ImageRead 273 274 276: 6(int) CompositeExtract 275 0 Store 272(storeTemp) 276 278: 6(int) Load 272(storeTemp) 279: 6(int) BitwiseOr 278 277 Store 272(storeTemp) 279 280: 83 Load 85(g_tTex1di1) 281: 6(int) Load 269(coordTemp) 282: 6(int) Load 272(storeTemp) ImageWrite 280 281 282 284: 62(ptr) AccessChain 61 53 285: 6(int) Load 284 Store 283(coordTemp) 285 287: 83 Load 85(g_tTex1di1) 288: 6(int) Load 283(coordTemp) 289: 58(ivec4) ImageRead 287 288 290: 6(int) CompositeExtract 289 0 Store 286(storeTemp) 290 291: 6(int) Load 286(storeTemp) 292: 6(int) ShiftLeftLogical 291 135 Store 286(storeTemp) 292 293: 83 Load 85(g_tTex1di1) 294: 6(int) Load 283(coordTemp) 295: 6(int) Load 286(storeTemp) ImageWrite 293 294 295 297: 62(ptr) AccessChain 61 53 298: 6(int) Load 297 Store 296(coordTemp) 298 300: 83 Load 85(g_tTex1di1) 301: 6(int) Load 296(coordTemp) 302: 58(ivec4) ImageRead 300 301 303: 6(int) CompositeExtract 302 0 Store 299(storeTemp) 303 304: 6(int) Load 299(storeTemp) 305: 6(int) ShiftRightArithmetic 304 135 Store 299(storeTemp) 305 306: 83 Load 85(g_tTex1di1) 307: 6(int) Load 296(coordTemp) 308: 6(int) Load 299(storeTemp) ImageWrite 306 307 308 310: 18(float) FunctionCall 37(SomeValue() Store 309(storeTemp) 310 311: 102 Load 104(g_tTex2df1) 312: 107(ptr) AccessChain 61 106 313: 56(ivec2) Load 312 314: 18(float) Load 309(storeTemp) ImageWrite 311 313 314 315: 102 Load 104(g_tTex2df1) 316: 107(ptr) AccessChain 61 106 317: 56(ivec2) Load 316 318: 18(float) Load 159(lf1) ImageWrite 315 317 318 Store 319(storeTemp) 320 321: 113 Load 115(g_tTex2di1) 322: 107(ptr) AccessChain 61 106 323: 56(ivec2) Load 322 324: 6(int) Load 319(storeTemp) ImageWrite 321 323 324 Store 325(storeTemp) 326 327: 122 Load 124(g_tTex2du1) 328: 107(ptr) AccessChain 61 106 329: 56(ivec2) Load 328 330: 12(int) Load 325(storeTemp) ImageWrite 327 329 330 332: 18(float) FunctionCall 37(SomeValue() Store 331(storeTemp) 332 333: 131 Load 133(g_tTex3df1) 334: 136(ptr) AccessChain 61 135 335: 57(ivec3) Load 334 336: 18(float) Load 331(storeTemp) ImageWrite 333 335 336 337: 131 Load 133(g_tTex3df1) 338: 136(ptr) AccessChain 61 135 339: 57(ivec3) Load 338 340: 18(float) Load 159(lf1) ImageWrite 337 339 340 Store 341(storeTemp) 160 342: 142 Load 144(g_tTex3di1) 343: 136(ptr) AccessChain 61 135 344: 57(ivec3) Load 343 345: 6(int) Load 341(storeTemp) ImageWrite 342 344 345 Store 346(storeTemp) 347 348: 151 Load 153(g_tTex3du1) 349: 136(ptr) AccessChain 61 135 350: 57(ivec3) Load 349 351: 12(int) Load 346(storeTemp) ImageWrite 348 350 351 352: 68 Load 70(g_tTex1df1) 353: 62(ptr) AccessChain 61 53 354: 6(int) Load 353 355: 39(fvec4) ImageRead 352 354 356: 18(float) CompositeExtract 355 0 Store 357(param) 356 358: 18(float) FunctionCall 22(Fn1(f1;) 357(param) 359: 83 Load 85(g_tTex1di1) 360: 62(ptr) AccessChain 61 53 361: 6(int) Load 360 362: 58(ivec4) ImageRead 359 361 363: 6(int) CompositeExtract 362 0 Store 364(param) 363 365: 6(int) FunctionCall 10(Fn1(i1;) 364(param) 366: 92 Load 94(g_tTex1du1) 367: 62(ptr) AccessChain 61 53 368: 6(int) Load 367 369: 98(ivec4) ImageRead 366 368 370: 12(int) CompositeExtract 369 0 Store 371(param) 370 372: 12(int) FunctionCall 16(Fn1(u1;) 371(param) 375: 2 FunctionCall 34(Fn2(f1;) 374(param) 376: 18(float) Load 374(param) Store 373(tempArg) 376 377: 68 Load 70(g_tTex1df1) 378: 62(ptr) AccessChain 61 53 379: 6(int) Load 378 380: 18(float) Load 373(tempArg) ImageWrite 377 379 380 383: 2 FunctionCall 26(Fn2(i1;) 382(param) 384: 6(int) Load 382(param) Store 381(tempArg) 384 385: 83 Load 85(g_tTex1di1) 386: 62(ptr) AccessChain 61 53 387: 6(int) Load 386 388: 6(int) Load 381(tempArg) ImageWrite 385 387 388 391: 2 FunctionCall 30(Fn2(u1;) 390(param) 392: 12(int) Load 390(param) Store 389(tempArg) 392 393: 92 Load 94(g_tTex1du1) 394: 62(ptr) AccessChain 61 53 395: 6(int) Load 394 396: 12(int) Load 389(tempArg) ImageWrite 393 395 396 398: 62(ptr) AccessChain 61 53 399: 6(int) Load 398 Store 397(coordTemp) 399 401: 68 Load 70(g_tTex1df1) 402: 6(int) Load 397(coordTemp) 403: 39(fvec4) ImageRead 401 402 404: 18(float) CompositeExtract 403 0 Store 400(storeTemp) 404 405: 18(float) Load 400(storeTemp) 407: 18(float) FAdd 405 406 Store 400(storeTemp) 407 408: 68 Load 70(g_tTex1df1) 409: 6(int) Load 397(coordTemp) 410: 18(float) Load 400(storeTemp) ImageWrite 408 409 410 412: 62(ptr) AccessChain 61 53 413: 6(int) Load 412 Store 411(coordTemp) 413 415: 83 Load 85(g_tTex1di1) 416: 6(int) Load 411(coordTemp) 417: 58(ivec4) ImageRead 415 416 418: 6(int) CompositeExtract 417 0 Store 414(storeTemp) 418 419: 6(int) Load 414(storeTemp) 420: 6(int) IAdd 419 106 Store 414(storeTemp) 420 421: 83 Load 85(g_tTex1di1) 422: 6(int) Load 411(coordTemp) 423: 6(int) Load 414(storeTemp) ImageWrite 421 422 423 425: 62(ptr) AccessChain 61 53 426: 6(int) Load 425 Store 424(coordTemp) 426 428: 92 Load 94(g_tTex1du1) 429: 6(int) Load 424(coordTemp) 430: 98(ivec4) ImageRead 428 429 431: 12(int) CompositeExtract 430 0 Store 427(storeTemp) 431 432: 12(int) Load 427(storeTemp) 433: 12(int) IAdd 432 106 Store 427(storeTemp) 433 434: 92 Load 94(g_tTex1du1) 435: 6(int) Load 424(coordTemp) 436: 12(int) Load 427(storeTemp) ImageWrite 434 435 436 438: 62(ptr) AccessChain 61 53 439: 6(int) Load 438 Store 437(coordTemp) 439 441: 68 Load 70(g_tTex1df1) 442: 6(int) Load 437(coordTemp) 443: 39(fvec4) ImageRead 441 442 444: 18(float) CompositeExtract 443 0 Store 440(storeTemp) 444 445: 18(float) Load 440(storeTemp) 446: 18(float) FSub 445 406 Store 440(storeTemp) 446 447: 68 Load 70(g_tTex1df1) 448: 6(int) Load 437(coordTemp) 449: 18(float) Load 440(storeTemp) ImageWrite 447 448 449 451: 62(ptr) AccessChain 61 53 452: 6(int) Load 451 Store 450(coordTemp) 452 454: 83 Load 85(g_tTex1di1) 455: 6(int) Load 450(coordTemp) 456: 58(ivec4) ImageRead 454 455 457: 6(int) CompositeExtract 456 0 Store 453(storeTemp) 457 458: 6(int) Load 453(storeTemp) 459: 6(int) ISub 458 106 Store 453(storeTemp) 459 460: 83 Load 85(g_tTex1di1) 461: 6(int) Load 450(coordTemp) 462: 6(int) Load 453(storeTemp) ImageWrite 460 461 462 464: 62(ptr) AccessChain 61 53 465: 6(int) Load 464 Store 463(coordTemp) 465 467: 92 Load 94(g_tTex1du1) 468: 6(int) Load 463(coordTemp) 469: 98(ivec4) ImageRead 467 468 470: 12(int) CompositeExtract 469 0 Store 466(storeTemp) 470 471: 12(int) Load 466(storeTemp) 472: 12(int) ISub 471 106 Store 466(storeTemp) 472 473: 92 Load 94(g_tTex1du1) 474: 6(int) Load 463(coordTemp) 475: 12(int) Load 466(storeTemp) ImageWrite 473 474 475 477: 62(ptr) AccessChain 61 53 478: 6(int) Load 477 Store 476(coordTemp) 478 480: 68 Load 70(g_tTex1df1) 481: 6(int) Load 476(coordTemp) 482: 39(fvec4) ImageRead 480 481 483: 18(float) CompositeExtract 482 0 Store 479(storeTempPre) 483 485: 18(float) Load 479(storeTempPre) Store 484(storeTempPost) 485 486: 18(float) Load 484(storeTempPost) 487: 18(float) FAdd 486 406 Store 484(storeTempPost) 487 488: 68 Load 70(g_tTex1df1) 489: 6(int) Load 476(coordTemp) 490: 18(float) Load 484(storeTempPost) ImageWrite 488 489 490 492: 62(ptr) AccessChain 61 53 493: 6(int) Load 492 Store 491(coordTemp) 493 495: 92 Load 94(g_tTex1du1) 496: 6(int) Load 491(coordTemp) 497: 98(ivec4) ImageRead 495 496 498: 12(int) CompositeExtract 497 0 Store 494(storeTempPre) 498 500: 12(int) Load 494(storeTempPre) Store 499(storeTempPost) 500 501: 12(int) Load 499(storeTempPost) 502: 12(int) ISub 501 106 Store 499(storeTempPost) 502 503: 92 Load 94(g_tTex1du1) 504: 6(int) Load 491(coordTemp) 505: 12(int) Load 499(storeTempPost) ImageWrite 503 504 505 507: 62(ptr) AccessChain 61 53 508: 6(int) Load 507 Store 506(coordTemp) 508 510: 83 Load 85(g_tTex1di1) 511: 6(int) Load 506(coordTemp) 512: 58(ivec4) ImageRead 510 511 513: 6(int) CompositeExtract 512 0 Store 509(storeTempPre) 513 515: 6(int) Load 509(storeTempPre) Store 514(storeTempPost) 515 516: 6(int) Load 514(storeTempPost) 517: 6(int) IAdd 516 106 Store 514(storeTempPost) 517 518: 83 Load 85(g_tTex1di1) 519: 6(int) Load 506(coordTemp) 520: 6(int) Load 514(storeTempPost) ImageWrite 518 519 520 522: 62(ptr) AccessChain 61 53 523: 6(int) Load 522 Store 521(coordTemp) 523 525: 68 Load 70(g_tTex1df1) 526: 6(int) Load 521(coordTemp) 527: 39(fvec4) ImageRead 525 526 528: 18(float) CompositeExtract 527 0 Store 524(storeTempPre) 528 530: 18(float) Load 524(storeTempPre) Store 529(storeTempPost) 530 531: 18(float) Load 529(storeTempPost) 532: 18(float) FSub 531 406 Store 529(storeTempPost) 532 533: 68 Load 70(g_tTex1df1) 534: 6(int) Load 521(coordTemp) 535: 18(float) Load 529(storeTempPost) ImageWrite 533 534 535 537: 62(ptr) AccessChain 61 53 538: 6(int) Load 537 Store 536(coordTemp) 538 540: 83 Load 85(g_tTex1di1) 541: 6(int) Load 536(coordTemp) 542: 58(ivec4) ImageRead 540 541 543: 6(int) CompositeExtract 542 0 Store 539(storeTempPre) 543 545: 6(int) Load 539(storeTempPre) Store 544(storeTempPost) 545 546: 6(int) Load 544(storeTempPost) 547: 6(int) IAdd 546 106 Store 544(storeTempPost) 547 548: 83 Load 85(g_tTex1di1) 549: 6(int) Load 536(coordTemp) 550: 6(int) Load 544(storeTempPost) ImageWrite 548 549 550 552: 62(ptr) AccessChain 61 53 553: 6(int) Load 552 Store 551(coordTemp) 553 555: 92 Load 94(g_tTex1du1) 556: 6(int) Load 551(coordTemp) 557: 98(ivec4) ImageRead 555 556 558: 12(int) CompositeExtract 557 0 Store 554(storeTempPre) 558 560: 12(int) Load 554(storeTempPre) Store 559(storeTempPost) 560 561: 12(int) Load 559(storeTempPost) 562: 12(int) ISub 561 106 Store 559(storeTempPost) 562 563: 92 Load 94(g_tTex1du1) 564: 6(int) Load 551(coordTemp) 565: 12(int) Load 559(storeTempPost) ImageWrite 563 564 565 567: 102 Load 104(g_tTex2df1) 570: 39(fvec4) ImageRead 567 569 571: 18(float) CompositeExtract 570 0 Store 566(storeTemp) 571 572: 68 Load 70(g_tTex1df1) 573: 18(float) Load 566(storeTemp) ImageWrite 572 106 573 578: 577(ptr) AccessChain 575(psout) 53 Store 578 576 579:40(PS_OUTPUT) Load 575(psout) ReturnValue 579 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.rw.swizzle.frag.out000066400000000000000000000307531506534232700232250ustar00rootroot00000000000000hlsl.rw.swizzle.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: SomeValue( ( temp 3-component vector of float) 0:4 Function Parameters: 0:? Sequence 0:4 Branch: Return with expression 0:4 Constant: 0:4 1.000000 0:4 2.000000 0:4 3.000000 0:7 Function Definition: @main( ( temp 4-component vector of float) 0:7 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 2-component vector of int) 0:8 'tc2' ( temp 2-component vector of int) 0:8 Constant: 0:8 0 (const int) 0:8 0 (const int) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'tc' ( temp int) 0:9 Constant: 0:9 0 (const int) 0:12 Sequence 0:12 move second child to first child ( temp 3-component vector of float) 0:12 vector swizzle ( temp 3-component vector of float) 0:12 'storeTemp' ( temp 3-component vector of float) 0:12 Sequence 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1.000000 0:12 2.000000 0:12 3.000000 0:12 imageStore ( temp void) 0:12 'rwtx' (layout( rgba32f) uniform image2D) 0:12 'tc2' ( temp 2-component vector of int) 0:12 'storeTemp' ( temp 3-component vector of float) 0:12 'storeTemp' ( temp 3-component vector of float) 0:13 Sequence 0:13 move second child to first child ( temp 3-component vector of float) 0:13 vector swizzle ( temp 3-component vector of float) 0:13 'storeTemp' ( temp 3-component vector of float) 0:13 Sequence 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Function Call: SomeValue( ( temp 3-component vector of float) 0:13 imageStore ( temp void) 0:13 'rwtx' (layout( rgba32f) uniform image2D) 0:13 'tc2' ( temp 2-component vector of int) 0:13 'storeTemp' ( temp 3-component vector of float) 0:13 'storeTemp' ( temp 3-component vector of float) 0:14 Sequence 0:14 move second child to first child ( temp 3-component vector of float) 0:14 vector swizzle ( temp 3-component vector of float) 0:14 'storeTemp' ( temp 3-component vector of float) 0:14 Sequence 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 2.000000 0:14 2.000000 0:14 2.000000 0:14 imageStore ( temp void) 0:14 'rwtx' (layout( rgba32f) uniform image2D) 0:14 'tc2' ( temp 2-component vector of int) 0:14 'storeTemp' ( temp 3-component vector of float) 0:14 'storeTemp' ( temp 3-component vector of float) 0:27 Branch: Return with expression 0:27 Constant: 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'rwtx' (layout( rgba32f) uniform image2D) 0:? 'buf' (layout( rgba32f) uniform imageBuffer) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: SomeValue( ( temp 3-component vector of float) 0:4 Function Parameters: 0:? Sequence 0:4 Branch: Return with expression 0:4 Constant: 0:4 1.000000 0:4 2.000000 0:4 3.000000 0:7 Function Definition: @main( ( temp 4-component vector of float) 0:7 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 2-component vector of int) 0:8 'tc2' ( temp 2-component vector of int) 0:8 Constant: 0:8 0 (const int) 0:8 0 (const int) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'tc' ( temp int) 0:9 Constant: 0:9 0 (const int) 0:12 Sequence 0:12 move second child to first child ( temp 3-component vector of float) 0:12 vector swizzle ( temp 3-component vector of float) 0:12 'storeTemp' ( temp 3-component vector of float) 0:12 Sequence 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1.000000 0:12 2.000000 0:12 3.000000 0:12 imageStore ( temp void) 0:12 'rwtx' (layout( rgba32f) uniform image2D) 0:12 'tc2' ( temp 2-component vector of int) 0:12 'storeTemp' ( temp 3-component vector of float) 0:12 'storeTemp' ( temp 3-component vector of float) 0:13 Sequence 0:13 move second child to first child ( temp 3-component vector of float) 0:13 vector swizzle ( temp 3-component vector of float) 0:13 'storeTemp' ( temp 3-component vector of float) 0:13 Sequence 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Function Call: SomeValue( ( temp 3-component vector of float) 0:13 imageStore ( temp void) 0:13 'rwtx' (layout( rgba32f) uniform image2D) 0:13 'tc2' ( temp 2-component vector of int) 0:13 'storeTemp' ( temp 3-component vector of float) 0:13 'storeTemp' ( temp 3-component vector of float) 0:14 Sequence 0:14 move second child to first child ( temp 3-component vector of float) 0:14 vector swizzle ( temp 3-component vector of float) 0:14 'storeTemp' ( temp 3-component vector of float) 0:14 Sequence 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 2.000000 0:14 2.000000 0:14 2.000000 0:14 imageStore ( temp void) 0:14 'rwtx' (layout( rgba32f) uniform image2D) 0:14 'tc2' ( temp 2-component vector of int) 0:14 'storeTemp' ( temp 3-component vector of float) 0:14 'storeTemp' ( temp 3-component vector of float) 0:27 Branch: Return with expression 0:27 Constant: 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'rwtx' (layout( rgba32f) uniform image2D) 0:? 'buf' (layout( rgba32f) uniform imageBuffer) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 63 Capability Shader Capability ImageBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 58 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "SomeValue(" Name 13 "@main(" Name 24 "tc2" Name 28 "tc" Name 30 "storeTemp" Name 35 "rwtx" Name 39 "storeTemp" Name 46 "storeTemp" Name 58 "@entryPointOutput" Name 62 "buf" Decorate 35(rwtx) Binding 0 Decorate 35(rwtx) DescriptorSet 0 Decorate 58(@entryPointOutput) Location 0 Decorate 62(buf) Binding 0 Decorate 62(buf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeFunction 7(fvec3) 11: TypeVector 6(float) 4 12: TypeFunction 11(fvec4) 15: 6(float) Constant 1065353216 16: 6(float) Constant 1073741824 17: 6(float) Constant 1077936128 18: 7(fvec3) ConstantComposite 15 16 17 21: TypeInt 32 1 22: TypeVector 21(int) 2 23: TypePointer Function 22(ivec2) 25: 21(int) Constant 0 26: 22(ivec2) ConstantComposite 25 25 27: TypePointer Function 21(int) 29: TypePointer Function 7(fvec3) 33: TypeImage 6(float) 2D nonsampled format:Rgba32f 34: TypePointer UniformConstant 33 35(rwtx): 34(ptr) Variable UniformConstant 47: 7(fvec3) ConstantComposite 16 16 16 53: 6(float) Constant 0 54: 11(fvec4) ConstantComposite 53 53 53 53 57: TypePointer Output 11(fvec4) 58(@entryPointOutput): 57(ptr) Variable Output 60: TypeImage 6(float) Buffer nonsampled format:Rgba32f 61: TypePointer UniformConstant 60 62(buf): 61(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 59: 11(fvec4) FunctionCall 13(@main() Store 58(@entryPointOutput) 59 Return FunctionEnd 9(SomeValue(): 7(fvec3) Function None 8 10: Label ReturnValue 18 FunctionEnd 13(@main(): 11(fvec4) Function None 12 14: Label 24(tc2): 23(ptr) Variable Function 28(tc): 27(ptr) Variable Function 30(storeTemp): 29(ptr) Variable Function 39(storeTemp): 29(ptr) Variable Function 46(storeTemp): 29(ptr) Variable Function Store 24(tc2) 26 Store 28(tc) 25 31: 7(fvec3) Load 30(storeTemp) 32: 7(fvec3) VectorShuffle 31 18 5 4 3 Store 30(storeTemp) 32 36: 33 Load 35(rwtx) 37: 22(ivec2) Load 24(tc2) 38: 7(fvec3) Load 30(storeTemp) ImageWrite 36 37 38 40: 7(fvec3) FunctionCall 9(SomeValue() 41: 7(fvec3) Load 39(storeTemp) 42: 7(fvec3) VectorShuffle 41 40 5 4 3 Store 39(storeTemp) 42 43: 33 Load 35(rwtx) 44: 22(ivec2) Load 24(tc2) 45: 7(fvec3) Load 39(storeTemp) ImageWrite 43 44 45 48: 7(fvec3) Load 46(storeTemp) 49: 7(fvec3) VectorShuffle 48 47 5 4 3 Store 46(storeTemp) 49 50: 33 Load 35(rwtx) 51: 22(ivec2) Load 24(tc2) 52: 7(fvec3) Load 46(storeTemp) ImageWrite 50 51 52 ReturnValue 54 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.rw.vec2.bracket.frag.out000066400000000000000000005426411506534232700237730ustar00rootroot00000000000000hlsl.rw.vec2.bracket.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:42 Function Definition: Fn1(vi2; ( temp 2-component vector of int) 0:42 Function Parameters: 0:42 'x' ( in 2-component vector of int) 0:? Sequence 0:42 Branch: Return with expression 0:42 'x' ( in 2-component vector of int) 0:43 Function Definition: Fn1(vu2; ( temp 2-component vector of uint) 0:43 Function Parameters: 0:43 'x' ( in 2-component vector of uint) 0:? Sequence 0:43 Branch: Return with expression 0:43 'x' ( in 2-component vector of uint) 0:44 Function Definition: Fn1(vf2; ( temp 2-component vector of float) 0:44 Function Parameters: 0:44 'x' ( in 2-component vector of float) 0:? Sequence 0:44 Branch: Return with expression 0:44 'x' ( in 2-component vector of float) 0:46 Function Definition: Fn2(vi2; ( temp void) 0:46 Function Parameters: 0:46 'x' ( out 2-component vector of int) 0:? Sequence 0:46 move second child to first child ( temp 2-component vector of int) 0:46 'x' ( out 2-component vector of int) 0:46 Constant: 0:46 0 (const int) 0:46 0 (const int) 0:47 Function Definition: Fn2(vu2; ( temp void) 0:47 Function Parameters: 0:47 'x' ( out 2-component vector of uint) 0:? Sequence 0:47 move second child to first child ( temp 2-component vector of uint) 0:47 'x' ( out 2-component vector of uint) 0:47 Constant: 0:47 0 (const uint) 0:47 0 (const uint) 0:48 Function Definition: Fn2(vf2; ( temp void) 0:48 Function Parameters: 0:48 'x' ( out 2-component vector of float) 0:? Sequence 0:48 move second child to first child ( temp 2-component vector of float) 0:48 'x' ( out 2-component vector of float) 0:48 Constant: 0:48 0.000000 0:48 0.000000 0:50 Function Definition: SomeValue( ( temp 2-component vector of float) 0:50 Function Parameters: 0:? Sequence 0:50 Branch: Return with expression 0:50 Convert int to float ( temp 2-component vector of float) 0:50 c2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:50 Constant: 0:50 1 (const uint) 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Parameters: 0:? Sequence 0:57 imageLoad ( temp 2-component vector of float) 0:57 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:57 c1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:57 Constant: 0:57 0 (const uint) 0:59 Sequence 0:59 move second child to first child ( temp 2-component vector of float) 0:59 'r00' ( temp 2-component vector of float) 0:59 imageLoad ( temp 2-component vector of float) 0:59 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:59 c1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:59 Constant: 0:59 0 (const uint) 0:60 Sequence 0:60 move second child to first child ( temp 2-component vector of int) 0:60 'r01' ( temp 2-component vector of int) 0:60 imageLoad ( temp 2-component vector of int) 0:60 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:60 c1: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:60 Constant: 0:60 0 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp 2-component vector of uint) 0:61 'r02' ( temp 2-component vector of uint) 0:61 imageLoad ( temp 2-component vector of uint) 0:61 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:61 c1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:61 Constant: 0:61 0 (const uint) 0:64 Sequence 0:64 move second child to first child ( temp 2-component vector of float) 0:64 'r10' ( temp 2-component vector of float) 0:64 imageLoad ( temp 2-component vector of float) 0:64 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:64 Constant: 0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child ( temp 2-component vector of int) 0:65 'r11' ( temp 2-component vector of int) 0:65 imageLoad ( temp 2-component vector of int) 0:65 'g_tTex2di2' (layout( rg32i) uniform iimage2D) 0:65 c2: direct index for structure ( uniform 2-component vector of int) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:65 Constant: 0:65 1 (const uint) 0:66 Sequence 0:66 move second child to first child ( temp 2-component vector of uint) 0:66 'r12' ( temp 2-component vector of uint) 0:66 imageLoad ( temp 2-component vector of uint) 0:66 'g_tTex2du2' (layout( rg32ui) uniform uimage2D) 0:66 c2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:66 Constant: 0:66 1 (const uint) 0:69 Sequence 0:69 move second child to first child ( temp 2-component vector of float) 0:69 'r20' ( temp 2-component vector of float) 0:69 imageLoad ( temp 2-component vector of float) 0:69 'g_tTex3df2' (layout( rg32f) uniform image3D) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:69 Constant: 0:69 2 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp 2-component vector of int) 0:70 'r21' ( temp 2-component vector of int) 0:70 imageLoad ( temp 2-component vector of int) 0:70 'g_tTex3di2' (layout( rg32i) uniform iimage3D) 0:70 c3: direct index for structure ( uniform 3-component vector of int) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:70 Constant: 0:70 2 (const uint) 0:71 Sequence 0:71 move second child to first child ( temp 2-component vector of uint) 0:71 'r22' ( temp 2-component vector of uint) 0:71 imageLoad ( temp 2-component vector of uint) 0:71 'g_tTex3du2' (layout( rg32ui) uniform uimage3D) 0:71 c3: direct index for structure ( uniform 3-component vector of int) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:71 Constant: 0:71 2 (const uint) 0:73 Sequence 0:73 move second child to first child ( temp 2-component vector of float) 0:73 'lf2' ( temp 2-component vector of float) 0:73 uf2: direct index for structure ( uniform 2-component vector of float) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:73 Constant: 0:73 8 (const uint) 0:77 Sequence 0:77 move second child to first child ( temp 2-component vector of float) 0:77 'storeTemp' ( temp 2-component vector of float) 0:77 Function Call: SomeValue( ( temp 2-component vector of float) 0:77 imageStore ( temp void) 0:77 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:77 c1: direct index for structure ( uniform int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:77 Constant: 0:77 0 (const uint) 0:77 'storeTemp' ( temp 2-component vector of float) 0:77 'storeTemp' ( temp 2-component vector of float) 0:78 Sequence 0:78 imageStore ( temp void) 0:78 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:78 c1: direct index for structure ( uniform int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:78 Constant: 0:78 0 (const uint) 0:78 'lf2' ( temp 2-component vector of float) 0:78 'lf2' ( temp 2-component vector of float) 0:79 Sequence 0:79 move second child to first child ( temp 2-component vector of int) 0:79 'storeTemp' ( temp 2-component vector of int) 0:79 Constant: 0:79 2 (const int) 0:79 2 (const int) 0:79 imageStore ( temp void) 0:79 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:79 c1: direct index for structure ( uniform int) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:79 Constant: 0:79 0 (const uint) 0:79 'storeTemp' ( temp 2-component vector of int) 0:79 'storeTemp' ( temp 2-component vector of int) 0:80 Sequence 0:80 move second child to first child ( temp 2-component vector of uint) 0:80 'storeTemp' ( temp 2-component vector of uint) 0:80 Constant: 0:80 3 (const uint) 0:80 2 (const uint) 0:80 imageStore ( temp void) 0:80 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:80 c1: direct index for structure ( uniform int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:80 Constant: 0:80 0 (const uint) 0:80 'storeTemp' ( temp 2-component vector of uint) 0:80 'storeTemp' ( temp 2-component vector of uint) 0:83 Sequence 0:83 move second child to first child ( temp 2-component vector of float) 0:83 'val1' ( temp 2-component vector of float) 0:83 Sequence 0:83 move second child to first child ( temp int) 0:83 'coordTemp' ( temp int) 0:83 c1: direct index for structure ( uniform int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:83 Constant: 0:83 0 (const uint) 0:83 move second child to first child ( temp 2-component vector of float) 0:83 'storeTemp' ( temp 2-component vector of float) 0:83 imageLoad ( temp 2-component vector of float) 0:83 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 vector scale second child into first child ( temp 2-component vector of float) 0:83 'storeTemp' ( temp 2-component vector of float) 0:83 Constant: 0:83 2.000000 0:83 imageStore ( temp void) 0:83 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 'storeTemp' ( temp 2-component vector of float) 0:83 'storeTemp' ( temp 2-component vector of float) 0:84 Sequence 0:84 move second child to first child ( temp int) 0:84 'coordTemp' ( temp int) 0:84 c1: direct index for structure ( uniform int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:84 Constant: 0:84 0 (const uint) 0:84 move second child to first child ( temp 2-component vector of float) 0:84 'storeTemp' ( temp 2-component vector of float) 0:84 imageLoad ( temp 2-component vector of float) 0:84 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 subtract second child into first child ( temp 2-component vector of float) 0:84 'storeTemp' ( temp 2-component vector of float) 0:84 Constant: 0:84 3.000000 0:84 imageStore ( temp void) 0:84 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 'storeTemp' ( temp 2-component vector of float) 0:84 'storeTemp' ( temp 2-component vector of float) 0:85 Sequence 0:85 move second child to first child ( temp int) 0:85 'coordTemp' ( temp int) 0:85 c1: direct index for structure ( uniform int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:85 Constant: 0:85 0 (const uint) 0:85 move second child to first child ( temp 2-component vector of float) 0:85 'storeTemp' ( temp 2-component vector of float) 0:85 imageLoad ( temp 2-component vector of float) 0:85 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 add second child into first child ( temp 2-component vector of float) 0:85 'storeTemp' ( temp 2-component vector of float) 0:85 Constant: 0:85 4.000000 0:85 imageStore ( temp void) 0:85 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 'storeTemp' ( temp 2-component vector of float) 0:85 'storeTemp' ( temp 2-component vector of float) 0:87 Sequence 0:87 move second child to first child ( temp int) 0:87 'coordTemp' ( temp int) 0:87 c1: direct index for structure ( uniform int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:87 Constant: 0:87 0 (const uint) 0:87 move second child to first child ( temp 2-component vector of int) 0:87 'storeTemp' ( temp 2-component vector of int) 0:87 imageLoad ( temp 2-component vector of int) 0:87 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 divide second child into first child ( temp 2-component vector of int) 0:87 'storeTemp' ( temp 2-component vector of int) 0:87 Constant: 0:87 2 (const int) 0:87 imageStore ( temp void) 0:87 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 'storeTemp' ( temp 2-component vector of int) 0:87 'storeTemp' ( temp 2-component vector of int) 0:88 Sequence 0:88 move second child to first child ( temp int) 0:88 'coordTemp' ( temp int) 0:88 c1: direct index for structure ( uniform int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:88 Constant: 0:88 0 (const uint) 0:88 move second child to first child ( temp 2-component vector of int) 0:88 'storeTemp' ( temp 2-component vector of int) 0:88 imageLoad ( temp 2-component vector of int) 0:88 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 mod second child into first child ( temp 2-component vector of int) 0:88 'storeTemp' ( temp 2-component vector of int) 0:88 Constant: 0:88 2 (const int) 0:88 imageStore ( temp void) 0:88 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 'storeTemp' ( temp 2-component vector of int) 0:88 'storeTemp' ( temp 2-component vector of int) 0:89 Sequence 0:89 move second child to first child ( temp int) 0:89 'coordTemp' ( temp int) 0:89 c1: direct index for structure ( uniform int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:89 Constant: 0:89 0 (const uint) 0:89 move second child to first child ( temp 2-component vector of int) 0:89 'storeTemp' ( temp 2-component vector of int) 0:89 imageLoad ( temp 2-component vector of int) 0:89 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 and second child into first child ( temp 2-component vector of int) 0:89 'storeTemp' ( temp 2-component vector of int) 0:89 Constant: 0:89 65535 (const int) 0:89 imageStore ( temp void) 0:89 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 'storeTemp' ( temp 2-component vector of int) 0:89 'storeTemp' ( temp 2-component vector of int) 0:90 Sequence 0:90 move second child to first child ( temp int) 0:90 'coordTemp' ( temp int) 0:90 c1: direct index for structure ( uniform int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:90 Constant: 0:90 0 (const uint) 0:90 move second child to first child ( temp 2-component vector of int) 0:90 'storeTemp' ( temp 2-component vector of int) 0:90 imageLoad ( temp 2-component vector of int) 0:90 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 or second child into first child ( temp 2-component vector of int) 0:90 'storeTemp' ( temp 2-component vector of int) 0:90 Constant: 0:90 61680 (const int) 0:90 imageStore ( temp void) 0:90 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 'storeTemp' ( temp 2-component vector of int) 0:90 'storeTemp' ( temp 2-component vector of int) 0:91 Sequence 0:91 move second child to first child ( temp int) 0:91 'coordTemp' ( temp int) 0:91 c1: direct index for structure ( uniform int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:91 Constant: 0:91 0 (const uint) 0:91 move second child to first child ( temp 2-component vector of int) 0:91 'storeTemp' ( temp 2-component vector of int) 0:91 imageLoad ( temp 2-component vector of int) 0:91 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 left shift second child into first child ( temp 2-component vector of int) 0:91 'storeTemp' ( temp 2-component vector of int) 0:91 Constant: 0:91 2 (const int) 0:91 imageStore ( temp void) 0:91 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 'storeTemp' ( temp 2-component vector of int) 0:91 'storeTemp' ( temp 2-component vector of int) 0:92 Sequence 0:92 move second child to first child ( temp int) 0:92 'coordTemp' ( temp int) 0:92 c1: direct index for structure ( uniform int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:92 Constant: 0:92 0 (const uint) 0:92 move second child to first child ( temp 2-component vector of int) 0:92 'storeTemp' ( temp 2-component vector of int) 0:92 imageLoad ( temp 2-component vector of int) 0:92 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 right shift second child into first child ( temp 2-component vector of int) 0:92 'storeTemp' ( temp 2-component vector of int) 0:92 Constant: 0:92 2 (const int) 0:92 imageStore ( temp void) 0:92 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 'storeTemp' ( temp 2-component vector of int) 0:92 'storeTemp' ( temp 2-component vector of int) 0:95 Sequence 0:95 move second child to first child ( temp 2-component vector of float) 0:95 'storeTemp' ( temp 2-component vector of float) 0:95 Function Call: SomeValue( ( temp 2-component vector of float) 0:95 imageStore ( temp void) 0:95 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:95 c2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:95 Constant: 0:95 1 (const uint) 0:95 'storeTemp' ( temp 2-component vector of float) 0:95 'storeTemp' ( temp 2-component vector of float) 0:96 Sequence 0:96 imageStore ( temp void) 0:96 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:96 c2: direct index for structure ( uniform 2-component vector of int) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:96 Constant: 0:96 1 (const uint) 0:96 'lf2' ( temp 2-component vector of float) 0:96 'lf2' ( temp 2-component vector of float) 0:97 Sequence 0:97 move second child to first child ( temp 2-component vector of int) 0:97 'storeTemp' ( temp 2-component vector of int) 0:97 Constant: 0:97 5 (const int) 0:97 2 (const int) 0:97 imageStore ( temp void) 0:97 'g_tTex2di2' (layout( rg32i) uniform iimage2D) 0:97 c2: direct index for structure ( uniform 2-component vector of int) 0:97 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:97 Constant: 0:97 1 (const uint) 0:97 'storeTemp' ( temp 2-component vector of int) 0:97 'storeTemp' ( temp 2-component vector of int) 0:98 Sequence 0:98 move second child to first child ( temp 2-component vector of uint) 0:98 'storeTemp' ( temp 2-component vector of uint) 0:98 Constant: 0:98 6 (const uint) 0:98 2 (const uint) 0:98 imageStore ( temp void) 0:98 'g_tTex2du2' (layout( rg32ui) uniform uimage2D) 0:98 c2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:98 Constant: 0:98 1 (const uint) 0:98 'storeTemp' ( temp 2-component vector of uint) 0:98 'storeTemp' ( temp 2-component vector of uint) 0:101 Sequence 0:101 move second child to first child ( temp 2-component vector of float) 0:101 'storeTemp' ( temp 2-component vector of float) 0:101 Function Call: SomeValue( ( temp 2-component vector of float) 0:101 imageStore ( temp void) 0:101 'g_tTex3df2' (layout( rg32f) uniform image3D) 0:101 c3: direct index for structure ( uniform 3-component vector of int) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:101 Constant: 0:101 2 (const uint) 0:101 'storeTemp' ( temp 2-component vector of float) 0:101 'storeTemp' ( temp 2-component vector of float) 0:102 Sequence 0:102 imageStore ( temp void) 0:102 'g_tTex3df2' (layout( rg32f) uniform image3D) 0:102 c3: direct index for structure ( uniform 3-component vector of int) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:102 Constant: 0:102 2 (const uint) 0:102 'lf2' ( temp 2-component vector of float) 0:102 'lf2' ( temp 2-component vector of float) 0:103 Sequence 0:103 move second child to first child ( temp 2-component vector of int) 0:103 'storeTemp' ( temp 2-component vector of int) 0:103 Constant: 0:103 8 (const int) 0:103 6 (const int) 0:103 imageStore ( temp void) 0:103 'g_tTex3di2' (layout( rg32i) uniform iimage3D) 0:103 c3: direct index for structure ( uniform 3-component vector of int) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:103 Constant: 0:103 2 (const uint) 0:103 'storeTemp' ( temp 2-component vector of int) 0:103 'storeTemp' ( temp 2-component vector of int) 0:104 Sequence 0:104 move second child to first child ( temp 2-component vector of uint) 0:104 'storeTemp' ( temp 2-component vector of uint) 0:104 Constant: 0:104 9 (const uint) 0:104 2 (const uint) 0:104 imageStore ( temp void) 0:104 'g_tTex3du2' (layout( rg32ui) uniform uimage3D) 0:104 c3: direct index for structure ( uniform 3-component vector of int) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:104 Constant: 0:104 2 (const uint) 0:104 'storeTemp' ( temp 2-component vector of uint) 0:104 'storeTemp' ( temp 2-component vector of uint) 0:107 Function Call: Fn1(vf2; ( temp 2-component vector of float) 0:107 imageLoad ( temp 2-component vector of float) 0:107 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:107 c1: direct index for structure ( uniform int) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:107 Constant: 0:107 0 (const uint) 0:108 Function Call: Fn1(vi2; ( temp 2-component vector of int) 0:108 imageLoad ( temp 2-component vector of int) 0:108 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:108 c1: direct index for structure ( uniform int) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:108 Constant: 0:108 0 (const uint) 0:109 Function Call: Fn1(vu2; ( temp 2-component vector of uint) 0:109 imageLoad ( temp 2-component vector of uint) 0:109 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:109 c1: direct index for structure ( uniform int) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:109 Constant: 0:109 0 (const uint) 0:111 Comma ( temp void) 0:111 Function Call: Fn2(vf2; ( temp void) 0:111 'tempArg' ( temp 2-component vector of float) 0:111 Sequence 0:111 imageStore ( temp void) 0:111 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:111 c1: direct index for structure ( uniform int) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:111 Constant: 0:111 0 (const uint) 0:111 'tempArg' ( temp 2-component vector of float) 0:111 'tempArg' ( temp 2-component vector of float) 0:112 Comma ( temp void) 0:112 Function Call: Fn2(vi2; ( temp void) 0:112 'tempArg' ( temp 2-component vector of int) 0:112 Sequence 0:112 imageStore ( temp void) 0:112 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:112 c1: direct index for structure ( uniform int) 0:112 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:112 Constant: 0:112 0 (const uint) 0:112 'tempArg' ( temp 2-component vector of int) 0:112 'tempArg' ( temp 2-component vector of int) 0:113 Comma ( temp void) 0:113 Function Call: Fn2(vu2; ( temp void) 0:113 'tempArg' ( temp 2-component vector of uint) 0:113 Sequence 0:113 imageStore ( temp void) 0:113 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:113 c1: direct index for structure ( uniform int) 0:113 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:113 Constant: 0:113 0 (const uint) 0:113 'tempArg' ( temp 2-component vector of uint) 0:113 'tempArg' ( temp 2-component vector of uint) 0:117 Sequence 0:117 move second child to first child ( temp int) 0:117 'coordTemp' ( temp int) 0:117 c1: direct index for structure ( uniform int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:117 Constant: 0:117 0 (const uint) 0:117 move second child to first child ( temp 2-component vector of float) 0:117 'storeTemp' ( temp 2-component vector of float) 0:117 imageLoad ( temp 2-component vector of float) 0:117 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 Pre-Increment ( temp 2-component vector of float) 0:117 'storeTemp' ( temp 2-component vector of float) 0:117 imageStore ( temp void) 0:117 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 'storeTemp' ( temp 2-component vector of float) 0:117 'storeTemp' ( temp 2-component vector of float) 0:118 Sequence 0:118 move second child to first child ( temp int) 0:118 'coordTemp' ( temp int) 0:118 c1: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:118 Constant: 0:118 0 (const uint) 0:118 move second child to first child ( temp 2-component vector of int) 0:118 'storeTemp' ( temp 2-component vector of int) 0:118 imageLoad ( temp 2-component vector of int) 0:118 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 Pre-Increment ( temp 2-component vector of int) 0:118 'storeTemp' ( temp 2-component vector of int) 0:118 imageStore ( temp void) 0:118 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 'storeTemp' ( temp 2-component vector of int) 0:118 'storeTemp' ( temp 2-component vector of int) 0:119 Sequence 0:119 move second child to first child ( temp int) 0:119 'coordTemp' ( temp int) 0:119 c1: direct index for structure ( uniform int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:119 Constant: 0:119 0 (const uint) 0:119 move second child to first child ( temp 2-component vector of uint) 0:119 'storeTemp' ( temp 2-component vector of uint) 0:119 imageLoad ( temp 2-component vector of uint) 0:119 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 Pre-Increment ( temp 2-component vector of uint) 0:119 'storeTemp' ( temp 2-component vector of uint) 0:119 imageStore ( temp void) 0:119 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 'storeTemp' ( temp 2-component vector of uint) 0:119 'storeTemp' ( temp 2-component vector of uint) 0:121 Sequence 0:121 move second child to first child ( temp int) 0:121 'coordTemp' ( temp int) 0:121 c1: direct index for structure ( uniform int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:121 Constant: 0:121 0 (const uint) 0:121 move second child to first child ( temp 2-component vector of float) 0:121 'storeTemp' ( temp 2-component vector of float) 0:121 imageLoad ( temp 2-component vector of float) 0:121 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 Pre-Decrement ( temp 2-component vector of float) 0:121 'storeTemp' ( temp 2-component vector of float) 0:121 imageStore ( temp void) 0:121 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 'storeTemp' ( temp 2-component vector of float) 0:121 'storeTemp' ( temp 2-component vector of float) 0:122 Sequence 0:122 move second child to first child ( temp int) 0:122 'coordTemp' ( temp int) 0:122 c1: direct index for structure ( uniform int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:122 Constant: 0:122 0 (const uint) 0:122 move second child to first child ( temp 2-component vector of int) 0:122 'storeTemp' ( temp 2-component vector of int) 0:122 imageLoad ( temp 2-component vector of int) 0:122 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 Pre-Decrement ( temp 2-component vector of int) 0:122 'storeTemp' ( temp 2-component vector of int) 0:122 imageStore ( temp void) 0:122 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 'storeTemp' ( temp 2-component vector of int) 0:122 'storeTemp' ( temp 2-component vector of int) 0:123 Sequence 0:123 move second child to first child ( temp int) 0:123 'coordTemp' ( temp int) 0:123 c1: direct index for structure ( uniform int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:123 Constant: 0:123 0 (const uint) 0:123 move second child to first child ( temp 2-component vector of uint) 0:123 'storeTemp' ( temp 2-component vector of uint) 0:123 imageLoad ( temp 2-component vector of uint) 0:123 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 Pre-Decrement ( temp 2-component vector of uint) 0:123 'storeTemp' ( temp 2-component vector of uint) 0:123 imageStore ( temp void) 0:123 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 'storeTemp' ( temp 2-component vector of uint) 0:123 'storeTemp' ( temp 2-component vector of uint) 0:126 Sequence 0:126 move second child to first child ( temp int) 0:126 'coordTemp' ( temp int) 0:126 c1: direct index for structure ( uniform int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:126 Constant: 0:126 0 (const uint) 0:126 move second child to first child ( temp 2-component vector of float) 0:126 'storeTempPre' ( temp 2-component vector of float) 0:126 imageLoad ( temp 2-component vector of float) 0:126 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 move second child to first child ( temp 2-component vector of float) 0:126 'storeTempPost' ( temp 2-component vector of float) 0:126 'storeTempPre' ( temp 2-component vector of float) 0:126 Post-Increment ( temp 2-component vector of float) 0:126 'storeTempPost' ( temp 2-component vector of float) 0:126 imageStore ( temp void) 0:126 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 'storeTempPost' ( temp 2-component vector of float) 0:126 'storeTempPre' ( temp 2-component vector of float) 0:127 Sequence 0:127 move second child to first child ( temp int) 0:127 'coordTemp' ( temp int) 0:127 c1: direct index for structure ( uniform int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:127 Constant: 0:127 0 (const uint) 0:127 move second child to first child ( temp 2-component vector of uint) 0:127 'storeTempPre' ( temp 2-component vector of uint) 0:127 imageLoad ( temp 2-component vector of uint) 0:127 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 move second child to first child ( temp 2-component vector of uint) 0:127 'storeTempPost' ( temp 2-component vector of uint) 0:127 'storeTempPre' ( temp 2-component vector of uint) 0:127 Post-Decrement ( temp 2-component vector of uint) 0:127 'storeTempPost' ( temp 2-component vector of uint) 0:127 imageStore ( temp void) 0:127 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 'storeTempPost' ( temp 2-component vector of uint) 0:127 'storeTempPre' ( temp 2-component vector of uint) 0:128 Sequence 0:128 move second child to first child ( temp int) 0:128 'coordTemp' ( temp int) 0:128 c1: direct index for structure ( uniform int) 0:128 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:128 Constant: 0:128 0 (const uint) 0:128 move second child to first child ( temp 2-component vector of int) 0:128 'storeTempPre' ( temp 2-component vector of int) 0:128 imageLoad ( temp 2-component vector of int) 0:128 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 move second child to first child ( temp 2-component vector of int) 0:128 'storeTempPost' ( temp 2-component vector of int) 0:128 'storeTempPre' ( temp 2-component vector of int) 0:128 Post-Increment ( temp 2-component vector of int) 0:128 'storeTempPost' ( temp 2-component vector of int) 0:128 imageStore ( temp void) 0:128 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 'storeTempPost' ( temp 2-component vector of int) 0:128 'storeTempPre' ( temp 2-component vector of int) 0:130 Sequence 0:130 move second child to first child ( temp int) 0:130 'coordTemp' ( temp int) 0:130 c1: direct index for structure ( uniform int) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:130 Constant: 0:130 0 (const uint) 0:130 move second child to first child ( temp 2-component vector of float) 0:130 'storeTempPre' ( temp 2-component vector of float) 0:130 imageLoad ( temp 2-component vector of float) 0:130 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 move second child to first child ( temp 2-component vector of float) 0:130 'storeTempPost' ( temp 2-component vector of float) 0:130 'storeTempPre' ( temp 2-component vector of float) 0:130 Post-Decrement ( temp 2-component vector of float) 0:130 'storeTempPost' ( temp 2-component vector of float) 0:130 imageStore ( temp void) 0:130 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 'storeTempPost' ( temp 2-component vector of float) 0:130 'storeTempPre' ( temp 2-component vector of float) 0:131 Sequence 0:131 move second child to first child ( temp int) 0:131 'coordTemp' ( temp int) 0:131 c1: direct index for structure ( uniform int) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:131 Constant: 0:131 0 (const uint) 0:131 move second child to first child ( temp 2-component vector of int) 0:131 'storeTempPre' ( temp 2-component vector of int) 0:131 imageLoad ( temp 2-component vector of int) 0:131 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 move second child to first child ( temp 2-component vector of int) 0:131 'storeTempPost' ( temp 2-component vector of int) 0:131 'storeTempPre' ( temp 2-component vector of int) 0:131 Post-Increment ( temp 2-component vector of int) 0:131 'storeTempPost' ( temp 2-component vector of int) 0:131 imageStore ( temp void) 0:131 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 'storeTempPost' ( temp 2-component vector of int) 0:131 'storeTempPre' ( temp 2-component vector of int) 0:132 Sequence 0:132 move second child to first child ( temp int) 0:132 'coordTemp' ( temp int) 0:132 c1: direct index for structure ( uniform int) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:132 Constant: 0:132 0 (const uint) 0:132 move second child to first child ( temp 2-component vector of uint) 0:132 'storeTempPre' ( temp 2-component vector of uint) 0:132 imageLoad ( temp 2-component vector of uint) 0:132 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 move second child to first child ( temp 2-component vector of uint) 0:132 'storeTempPost' ( temp 2-component vector of uint) 0:132 'storeTempPre' ( temp 2-component vector of uint) 0:132 Post-Decrement ( temp 2-component vector of uint) 0:132 'storeTempPost' ( temp 2-component vector of uint) 0:132 imageStore ( temp void) 0:132 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 'storeTempPost' ( temp 2-component vector of uint) 0:132 'storeTempPre' ( temp 2-component vector of uint) 0:135 Sequence 0:135 move second child to first child ( temp 2-component vector of float) 0:135 'storeTemp' ( temp 2-component vector of float) 0:135 imageLoad ( temp 2-component vector of float) 0:135 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:135 Constant: 0:135 2 (const int) 0:135 3 (const int) 0:135 imageStore ( temp void) 0:135 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:135 Constant: 0:135 1 (const int) 0:135 'storeTemp' ( temp 2-component vector of float) 0:135 'storeTemp' ( temp 2-component vector of float) 0:137 move second child to first child ( temp 4-component vector of float) 0:137 Color: direct index for structure ( temp 4-component vector of float) 0:137 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:139 Branch: Return with expression 0:139 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Constant: 0:53 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:? 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:? 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:? 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:? 'g_tTex2di2' (layout( rg32i) uniform iimage2D) 0:? 'g_tTex2du2' (layout( rg32ui) uniform uimage2D) 0:? 'g_tTex3df2' (layout( rg32f) uniform image3D) 0:? 'g_tTex3di2' (layout( rg32i) uniform iimage3D) 0:? 'g_tTex3du2' (layout( rg32ui) uniform uimage3D) 0:? 'g_tTex1df2a' (layout( rg32f) uniform image1DArray) 0:? 'g_tTex1di2a' (layout( rg32i) uniform iimage1DArray) 0:? 'g_tTex1du2a' (layout( rg32ui) uniform uimage1DArray) 0:? 'g_tTex2df2a' (layout( rg32f) uniform image2DArray) 0:? 'g_tTex2di2a' (layout( rg32i) uniform iimage2DArray) 0:? 'g_tTex2du2a' (layout( rg32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:42 Function Definition: Fn1(vi2; ( temp 2-component vector of int) 0:42 Function Parameters: 0:42 'x' ( in 2-component vector of int) 0:? Sequence 0:42 Branch: Return with expression 0:42 'x' ( in 2-component vector of int) 0:43 Function Definition: Fn1(vu2; ( temp 2-component vector of uint) 0:43 Function Parameters: 0:43 'x' ( in 2-component vector of uint) 0:? Sequence 0:43 Branch: Return with expression 0:43 'x' ( in 2-component vector of uint) 0:44 Function Definition: Fn1(vf2; ( temp 2-component vector of float) 0:44 Function Parameters: 0:44 'x' ( in 2-component vector of float) 0:? Sequence 0:44 Branch: Return with expression 0:44 'x' ( in 2-component vector of float) 0:46 Function Definition: Fn2(vi2; ( temp void) 0:46 Function Parameters: 0:46 'x' ( out 2-component vector of int) 0:? Sequence 0:46 move second child to first child ( temp 2-component vector of int) 0:46 'x' ( out 2-component vector of int) 0:46 Constant: 0:46 0 (const int) 0:46 0 (const int) 0:47 Function Definition: Fn2(vu2; ( temp void) 0:47 Function Parameters: 0:47 'x' ( out 2-component vector of uint) 0:? Sequence 0:47 move second child to first child ( temp 2-component vector of uint) 0:47 'x' ( out 2-component vector of uint) 0:47 Constant: 0:47 0 (const uint) 0:47 0 (const uint) 0:48 Function Definition: Fn2(vf2; ( temp void) 0:48 Function Parameters: 0:48 'x' ( out 2-component vector of float) 0:? Sequence 0:48 move second child to first child ( temp 2-component vector of float) 0:48 'x' ( out 2-component vector of float) 0:48 Constant: 0:48 0.000000 0:48 0.000000 0:50 Function Definition: SomeValue( ( temp 2-component vector of float) 0:50 Function Parameters: 0:? Sequence 0:50 Branch: Return with expression 0:50 Convert int to float ( temp 2-component vector of float) 0:50 c2: direct index for structure ( uniform 2-component vector of int) 0:50 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:50 Constant: 0:50 1 (const uint) 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Parameters: 0:? Sequence 0:57 imageLoad ( temp 2-component vector of float) 0:57 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:57 c1: direct index for structure ( uniform int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:57 Constant: 0:57 0 (const uint) 0:59 Sequence 0:59 move second child to first child ( temp 2-component vector of float) 0:59 'r00' ( temp 2-component vector of float) 0:59 imageLoad ( temp 2-component vector of float) 0:59 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:59 c1: direct index for structure ( uniform int) 0:59 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:59 Constant: 0:59 0 (const uint) 0:60 Sequence 0:60 move second child to first child ( temp 2-component vector of int) 0:60 'r01' ( temp 2-component vector of int) 0:60 imageLoad ( temp 2-component vector of int) 0:60 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:60 c1: direct index for structure ( uniform int) 0:60 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:60 Constant: 0:60 0 (const uint) 0:61 Sequence 0:61 move second child to first child ( temp 2-component vector of uint) 0:61 'r02' ( temp 2-component vector of uint) 0:61 imageLoad ( temp 2-component vector of uint) 0:61 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:61 c1: direct index for structure ( uniform int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:61 Constant: 0:61 0 (const uint) 0:64 Sequence 0:64 move second child to first child ( temp 2-component vector of float) 0:64 'r10' ( temp 2-component vector of float) 0:64 imageLoad ( temp 2-component vector of float) 0:64 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:64 c2: direct index for structure ( uniform 2-component vector of int) 0:64 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:64 Constant: 0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child ( temp 2-component vector of int) 0:65 'r11' ( temp 2-component vector of int) 0:65 imageLoad ( temp 2-component vector of int) 0:65 'g_tTex2di2' (layout( rg32i) uniform iimage2D) 0:65 c2: direct index for structure ( uniform 2-component vector of int) 0:65 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:65 Constant: 0:65 1 (const uint) 0:66 Sequence 0:66 move second child to first child ( temp 2-component vector of uint) 0:66 'r12' ( temp 2-component vector of uint) 0:66 imageLoad ( temp 2-component vector of uint) 0:66 'g_tTex2du2' (layout( rg32ui) uniform uimage2D) 0:66 c2: direct index for structure ( uniform 2-component vector of int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:66 Constant: 0:66 1 (const uint) 0:69 Sequence 0:69 move second child to first child ( temp 2-component vector of float) 0:69 'r20' ( temp 2-component vector of float) 0:69 imageLoad ( temp 2-component vector of float) 0:69 'g_tTex3df2' (layout( rg32f) uniform image3D) 0:69 c3: direct index for structure ( uniform 3-component vector of int) 0:69 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:69 Constant: 0:69 2 (const uint) 0:70 Sequence 0:70 move second child to first child ( temp 2-component vector of int) 0:70 'r21' ( temp 2-component vector of int) 0:70 imageLoad ( temp 2-component vector of int) 0:70 'g_tTex3di2' (layout( rg32i) uniform iimage3D) 0:70 c3: direct index for structure ( uniform 3-component vector of int) 0:70 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:70 Constant: 0:70 2 (const uint) 0:71 Sequence 0:71 move second child to first child ( temp 2-component vector of uint) 0:71 'r22' ( temp 2-component vector of uint) 0:71 imageLoad ( temp 2-component vector of uint) 0:71 'g_tTex3du2' (layout( rg32ui) uniform uimage3D) 0:71 c3: direct index for structure ( uniform 3-component vector of int) 0:71 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:71 Constant: 0:71 2 (const uint) 0:73 Sequence 0:73 move second child to first child ( temp 2-component vector of float) 0:73 'lf2' ( temp 2-component vector of float) 0:73 uf2: direct index for structure ( uniform 2-component vector of float) 0:73 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:73 Constant: 0:73 8 (const uint) 0:77 Sequence 0:77 move second child to first child ( temp 2-component vector of float) 0:77 'storeTemp' ( temp 2-component vector of float) 0:77 Function Call: SomeValue( ( temp 2-component vector of float) 0:77 imageStore ( temp void) 0:77 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:77 c1: direct index for structure ( uniform int) 0:77 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:77 Constant: 0:77 0 (const uint) 0:77 'storeTemp' ( temp 2-component vector of float) 0:77 'storeTemp' ( temp 2-component vector of float) 0:78 Sequence 0:78 imageStore ( temp void) 0:78 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:78 c1: direct index for structure ( uniform int) 0:78 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:78 Constant: 0:78 0 (const uint) 0:78 'lf2' ( temp 2-component vector of float) 0:78 'lf2' ( temp 2-component vector of float) 0:79 Sequence 0:79 move second child to first child ( temp 2-component vector of int) 0:79 'storeTemp' ( temp 2-component vector of int) 0:79 Constant: 0:79 2 (const int) 0:79 2 (const int) 0:79 imageStore ( temp void) 0:79 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:79 c1: direct index for structure ( uniform int) 0:79 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:79 Constant: 0:79 0 (const uint) 0:79 'storeTemp' ( temp 2-component vector of int) 0:79 'storeTemp' ( temp 2-component vector of int) 0:80 Sequence 0:80 move second child to first child ( temp 2-component vector of uint) 0:80 'storeTemp' ( temp 2-component vector of uint) 0:80 Constant: 0:80 3 (const uint) 0:80 2 (const uint) 0:80 imageStore ( temp void) 0:80 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:80 c1: direct index for structure ( uniform int) 0:80 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:80 Constant: 0:80 0 (const uint) 0:80 'storeTemp' ( temp 2-component vector of uint) 0:80 'storeTemp' ( temp 2-component vector of uint) 0:83 Sequence 0:83 move second child to first child ( temp 2-component vector of float) 0:83 'val1' ( temp 2-component vector of float) 0:83 Sequence 0:83 move second child to first child ( temp int) 0:83 'coordTemp' ( temp int) 0:83 c1: direct index for structure ( uniform int) 0:83 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:83 Constant: 0:83 0 (const uint) 0:83 move second child to first child ( temp 2-component vector of float) 0:83 'storeTemp' ( temp 2-component vector of float) 0:83 imageLoad ( temp 2-component vector of float) 0:83 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 vector scale second child into first child ( temp 2-component vector of float) 0:83 'storeTemp' ( temp 2-component vector of float) 0:83 Constant: 0:83 2.000000 0:83 imageStore ( temp void) 0:83 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:83 'coordTemp' ( temp int) 0:83 'storeTemp' ( temp 2-component vector of float) 0:83 'storeTemp' ( temp 2-component vector of float) 0:84 Sequence 0:84 move second child to first child ( temp int) 0:84 'coordTemp' ( temp int) 0:84 c1: direct index for structure ( uniform int) 0:84 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:84 Constant: 0:84 0 (const uint) 0:84 move second child to first child ( temp 2-component vector of float) 0:84 'storeTemp' ( temp 2-component vector of float) 0:84 imageLoad ( temp 2-component vector of float) 0:84 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 subtract second child into first child ( temp 2-component vector of float) 0:84 'storeTemp' ( temp 2-component vector of float) 0:84 Constant: 0:84 3.000000 0:84 imageStore ( temp void) 0:84 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:84 'coordTemp' ( temp int) 0:84 'storeTemp' ( temp 2-component vector of float) 0:84 'storeTemp' ( temp 2-component vector of float) 0:85 Sequence 0:85 move second child to first child ( temp int) 0:85 'coordTemp' ( temp int) 0:85 c1: direct index for structure ( uniform int) 0:85 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:85 Constant: 0:85 0 (const uint) 0:85 move second child to first child ( temp 2-component vector of float) 0:85 'storeTemp' ( temp 2-component vector of float) 0:85 imageLoad ( temp 2-component vector of float) 0:85 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 add second child into first child ( temp 2-component vector of float) 0:85 'storeTemp' ( temp 2-component vector of float) 0:85 Constant: 0:85 4.000000 0:85 imageStore ( temp void) 0:85 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:85 'coordTemp' ( temp int) 0:85 'storeTemp' ( temp 2-component vector of float) 0:85 'storeTemp' ( temp 2-component vector of float) 0:87 Sequence 0:87 move second child to first child ( temp int) 0:87 'coordTemp' ( temp int) 0:87 c1: direct index for structure ( uniform int) 0:87 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:87 Constant: 0:87 0 (const uint) 0:87 move second child to first child ( temp 2-component vector of int) 0:87 'storeTemp' ( temp 2-component vector of int) 0:87 imageLoad ( temp 2-component vector of int) 0:87 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 divide second child into first child ( temp 2-component vector of int) 0:87 'storeTemp' ( temp 2-component vector of int) 0:87 Constant: 0:87 2 (const int) 0:87 imageStore ( temp void) 0:87 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:87 'coordTemp' ( temp int) 0:87 'storeTemp' ( temp 2-component vector of int) 0:87 'storeTemp' ( temp 2-component vector of int) 0:88 Sequence 0:88 move second child to first child ( temp int) 0:88 'coordTemp' ( temp int) 0:88 c1: direct index for structure ( uniform int) 0:88 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:88 Constant: 0:88 0 (const uint) 0:88 move second child to first child ( temp 2-component vector of int) 0:88 'storeTemp' ( temp 2-component vector of int) 0:88 imageLoad ( temp 2-component vector of int) 0:88 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 mod second child into first child ( temp 2-component vector of int) 0:88 'storeTemp' ( temp 2-component vector of int) 0:88 Constant: 0:88 2 (const int) 0:88 imageStore ( temp void) 0:88 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:88 'coordTemp' ( temp int) 0:88 'storeTemp' ( temp 2-component vector of int) 0:88 'storeTemp' ( temp 2-component vector of int) 0:89 Sequence 0:89 move second child to first child ( temp int) 0:89 'coordTemp' ( temp int) 0:89 c1: direct index for structure ( uniform int) 0:89 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:89 Constant: 0:89 0 (const uint) 0:89 move second child to first child ( temp 2-component vector of int) 0:89 'storeTemp' ( temp 2-component vector of int) 0:89 imageLoad ( temp 2-component vector of int) 0:89 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 and second child into first child ( temp 2-component vector of int) 0:89 'storeTemp' ( temp 2-component vector of int) 0:89 Constant: 0:89 65535 (const int) 0:89 imageStore ( temp void) 0:89 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:89 'coordTemp' ( temp int) 0:89 'storeTemp' ( temp 2-component vector of int) 0:89 'storeTemp' ( temp 2-component vector of int) 0:90 Sequence 0:90 move second child to first child ( temp int) 0:90 'coordTemp' ( temp int) 0:90 c1: direct index for structure ( uniform int) 0:90 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:90 Constant: 0:90 0 (const uint) 0:90 move second child to first child ( temp 2-component vector of int) 0:90 'storeTemp' ( temp 2-component vector of int) 0:90 imageLoad ( temp 2-component vector of int) 0:90 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 or second child into first child ( temp 2-component vector of int) 0:90 'storeTemp' ( temp 2-component vector of int) 0:90 Constant: 0:90 61680 (const int) 0:90 imageStore ( temp void) 0:90 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:90 'coordTemp' ( temp int) 0:90 'storeTemp' ( temp 2-component vector of int) 0:90 'storeTemp' ( temp 2-component vector of int) 0:91 Sequence 0:91 move second child to first child ( temp int) 0:91 'coordTemp' ( temp int) 0:91 c1: direct index for structure ( uniform int) 0:91 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:91 Constant: 0:91 0 (const uint) 0:91 move second child to first child ( temp 2-component vector of int) 0:91 'storeTemp' ( temp 2-component vector of int) 0:91 imageLoad ( temp 2-component vector of int) 0:91 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 left shift second child into first child ( temp 2-component vector of int) 0:91 'storeTemp' ( temp 2-component vector of int) 0:91 Constant: 0:91 2 (const int) 0:91 imageStore ( temp void) 0:91 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:91 'coordTemp' ( temp int) 0:91 'storeTemp' ( temp 2-component vector of int) 0:91 'storeTemp' ( temp 2-component vector of int) 0:92 Sequence 0:92 move second child to first child ( temp int) 0:92 'coordTemp' ( temp int) 0:92 c1: direct index for structure ( uniform int) 0:92 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:92 Constant: 0:92 0 (const uint) 0:92 move second child to first child ( temp 2-component vector of int) 0:92 'storeTemp' ( temp 2-component vector of int) 0:92 imageLoad ( temp 2-component vector of int) 0:92 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 right shift second child into first child ( temp 2-component vector of int) 0:92 'storeTemp' ( temp 2-component vector of int) 0:92 Constant: 0:92 2 (const int) 0:92 imageStore ( temp void) 0:92 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:92 'coordTemp' ( temp int) 0:92 'storeTemp' ( temp 2-component vector of int) 0:92 'storeTemp' ( temp 2-component vector of int) 0:95 Sequence 0:95 move second child to first child ( temp 2-component vector of float) 0:95 'storeTemp' ( temp 2-component vector of float) 0:95 Function Call: SomeValue( ( temp 2-component vector of float) 0:95 imageStore ( temp void) 0:95 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:95 c2: direct index for structure ( uniform 2-component vector of int) 0:95 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:95 Constant: 0:95 1 (const uint) 0:95 'storeTemp' ( temp 2-component vector of float) 0:95 'storeTemp' ( temp 2-component vector of float) 0:96 Sequence 0:96 imageStore ( temp void) 0:96 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:96 c2: direct index for structure ( uniform 2-component vector of int) 0:96 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:96 Constant: 0:96 1 (const uint) 0:96 'lf2' ( temp 2-component vector of float) 0:96 'lf2' ( temp 2-component vector of float) 0:97 Sequence 0:97 move second child to first child ( temp 2-component vector of int) 0:97 'storeTemp' ( temp 2-component vector of int) 0:97 Constant: 0:97 5 (const int) 0:97 2 (const int) 0:97 imageStore ( temp void) 0:97 'g_tTex2di2' (layout( rg32i) uniform iimage2D) 0:97 c2: direct index for structure ( uniform 2-component vector of int) 0:97 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:97 Constant: 0:97 1 (const uint) 0:97 'storeTemp' ( temp 2-component vector of int) 0:97 'storeTemp' ( temp 2-component vector of int) 0:98 Sequence 0:98 move second child to first child ( temp 2-component vector of uint) 0:98 'storeTemp' ( temp 2-component vector of uint) 0:98 Constant: 0:98 6 (const uint) 0:98 2 (const uint) 0:98 imageStore ( temp void) 0:98 'g_tTex2du2' (layout( rg32ui) uniform uimage2D) 0:98 c2: direct index for structure ( uniform 2-component vector of int) 0:98 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:98 Constant: 0:98 1 (const uint) 0:98 'storeTemp' ( temp 2-component vector of uint) 0:98 'storeTemp' ( temp 2-component vector of uint) 0:101 Sequence 0:101 move second child to first child ( temp 2-component vector of float) 0:101 'storeTemp' ( temp 2-component vector of float) 0:101 Function Call: SomeValue( ( temp 2-component vector of float) 0:101 imageStore ( temp void) 0:101 'g_tTex3df2' (layout( rg32f) uniform image3D) 0:101 c3: direct index for structure ( uniform 3-component vector of int) 0:101 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:101 Constant: 0:101 2 (const uint) 0:101 'storeTemp' ( temp 2-component vector of float) 0:101 'storeTemp' ( temp 2-component vector of float) 0:102 Sequence 0:102 imageStore ( temp void) 0:102 'g_tTex3df2' (layout( rg32f) uniform image3D) 0:102 c3: direct index for structure ( uniform 3-component vector of int) 0:102 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:102 Constant: 0:102 2 (const uint) 0:102 'lf2' ( temp 2-component vector of float) 0:102 'lf2' ( temp 2-component vector of float) 0:103 Sequence 0:103 move second child to first child ( temp 2-component vector of int) 0:103 'storeTemp' ( temp 2-component vector of int) 0:103 Constant: 0:103 8 (const int) 0:103 6 (const int) 0:103 imageStore ( temp void) 0:103 'g_tTex3di2' (layout( rg32i) uniform iimage3D) 0:103 c3: direct index for structure ( uniform 3-component vector of int) 0:103 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:103 Constant: 0:103 2 (const uint) 0:103 'storeTemp' ( temp 2-component vector of int) 0:103 'storeTemp' ( temp 2-component vector of int) 0:104 Sequence 0:104 move second child to first child ( temp 2-component vector of uint) 0:104 'storeTemp' ( temp 2-component vector of uint) 0:104 Constant: 0:104 9 (const uint) 0:104 2 (const uint) 0:104 imageStore ( temp void) 0:104 'g_tTex3du2' (layout( rg32ui) uniform uimage3D) 0:104 c3: direct index for structure ( uniform 3-component vector of int) 0:104 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:104 Constant: 0:104 2 (const uint) 0:104 'storeTemp' ( temp 2-component vector of uint) 0:104 'storeTemp' ( temp 2-component vector of uint) 0:107 Function Call: Fn1(vf2; ( temp 2-component vector of float) 0:107 imageLoad ( temp 2-component vector of float) 0:107 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:107 c1: direct index for structure ( uniform int) 0:107 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:107 Constant: 0:107 0 (const uint) 0:108 Function Call: Fn1(vi2; ( temp 2-component vector of int) 0:108 imageLoad ( temp 2-component vector of int) 0:108 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:108 c1: direct index for structure ( uniform int) 0:108 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:108 Constant: 0:108 0 (const uint) 0:109 Function Call: Fn1(vu2; ( temp 2-component vector of uint) 0:109 imageLoad ( temp 2-component vector of uint) 0:109 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:109 c1: direct index for structure ( uniform int) 0:109 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:109 Constant: 0:109 0 (const uint) 0:111 Comma ( temp void) 0:111 Function Call: Fn2(vf2; ( temp void) 0:111 'tempArg' ( temp 2-component vector of float) 0:111 Sequence 0:111 imageStore ( temp void) 0:111 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:111 c1: direct index for structure ( uniform int) 0:111 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:111 Constant: 0:111 0 (const uint) 0:111 'tempArg' ( temp 2-component vector of float) 0:111 'tempArg' ( temp 2-component vector of float) 0:112 Comma ( temp void) 0:112 Function Call: Fn2(vi2; ( temp void) 0:112 'tempArg' ( temp 2-component vector of int) 0:112 Sequence 0:112 imageStore ( temp void) 0:112 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:112 c1: direct index for structure ( uniform int) 0:112 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:112 Constant: 0:112 0 (const uint) 0:112 'tempArg' ( temp 2-component vector of int) 0:112 'tempArg' ( temp 2-component vector of int) 0:113 Comma ( temp void) 0:113 Function Call: Fn2(vu2; ( temp void) 0:113 'tempArg' ( temp 2-component vector of uint) 0:113 Sequence 0:113 imageStore ( temp void) 0:113 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:113 c1: direct index for structure ( uniform int) 0:113 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:113 Constant: 0:113 0 (const uint) 0:113 'tempArg' ( temp 2-component vector of uint) 0:113 'tempArg' ( temp 2-component vector of uint) 0:117 Sequence 0:117 move second child to first child ( temp int) 0:117 'coordTemp' ( temp int) 0:117 c1: direct index for structure ( uniform int) 0:117 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:117 Constant: 0:117 0 (const uint) 0:117 move second child to first child ( temp 2-component vector of float) 0:117 'storeTemp' ( temp 2-component vector of float) 0:117 imageLoad ( temp 2-component vector of float) 0:117 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 Pre-Increment ( temp 2-component vector of float) 0:117 'storeTemp' ( temp 2-component vector of float) 0:117 imageStore ( temp void) 0:117 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:117 'coordTemp' ( temp int) 0:117 'storeTemp' ( temp 2-component vector of float) 0:117 'storeTemp' ( temp 2-component vector of float) 0:118 Sequence 0:118 move second child to first child ( temp int) 0:118 'coordTemp' ( temp int) 0:118 c1: direct index for structure ( uniform int) 0:118 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:118 Constant: 0:118 0 (const uint) 0:118 move second child to first child ( temp 2-component vector of int) 0:118 'storeTemp' ( temp 2-component vector of int) 0:118 imageLoad ( temp 2-component vector of int) 0:118 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 Pre-Increment ( temp 2-component vector of int) 0:118 'storeTemp' ( temp 2-component vector of int) 0:118 imageStore ( temp void) 0:118 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:118 'coordTemp' ( temp int) 0:118 'storeTemp' ( temp 2-component vector of int) 0:118 'storeTemp' ( temp 2-component vector of int) 0:119 Sequence 0:119 move second child to first child ( temp int) 0:119 'coordTemp' ( temp int) 0:119 c1: direct index for structure ( uniform int) 0:119 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:119 Constant: 0:119 0 (const uint) 0:119 move second child to first child ( temp 2-component vector of uint) 0:119 'storeTemp' ( temp 2-component vector of uint) 0:119 imageLoad ( temp 2-component vector of uint) 0:119 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 Pre-Increment ( temp 2-component vector of uint) 0:119 'storeTemp' ( temp 2-component vector of uint) 0:119 imageStore ( temp void) 0:119 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:119 'coordTemp' ( temp int) 0:119 'storeTemp' ( temp 2-component vector of uint) 0:119 'storeTemp' ( temp 2-component vector of uint) 0:121 Sequence 0:121 move second child to first child ( temp int) 0:121 'coordTemp' ( temp int) 0:121 c1: direct index for structure ( uniform int) 0:121 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:121 Constant: 0:121 0 (const uint) 0:121 move second child to first child ( temp 2-component vector of float) 0:121 'storeTemp' ( temp 2-component vector of float) 0:121 imageLoad ( temp 2-component vector of float) 0:121 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 Pre-Decrement ( temp 2-component vector of float) 0:121 'storeTemp' ( temp 2-component vector of float) 0:121 imageStore ( temp void) 0:121 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:121 'coordTemp' ( temp int) 0:121 'storeTemp' ( temp 2-component vector of float) 0:121 'storeTemp' ( temp 2-component vector of float) 0:122 Sequence 0:122 move second child to first child ( temp int) 0:122 'coordTemp' ( temp int) 0:122 c1: direct index for structure ( uniform int) 0:122 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:122 Constant: 0:122 0 (const uint) 0:122 move second child to first child ( temp 2-component vector of int) 0:122 'storeTemp' ( temp 2-component vector of int) 0:122 imageLoad ( temp 2-component vector of int) 0:122 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 Pre-Decrement ( temp 2-component vector of int) 0:122 'storeTemp' ( temp 2-component vector of int) 0:122 imageStore ( temp void) 0:122 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:122 'coordTemp' ( temp int) 0:122 'storeTemp' ( temp 2-component vector of int) 0:122 'storeTemp' ( temp 2-component vector of int) 0:123 Sequence 0:123 move second child to first child ( temp int) 0:123 'coordTemp' ( temp int) 0:123 c1: direct index for structure ( uniform int) 0:123 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:123 Constant: 0:123 0 (const uint) 0:123 move second child to first child ( temp 2-component vector of uint) 0:123 'storeTemp' ( temp 2-component vector of uint) 0:123 imageLoad ( temp 2-component vector of uint) 0:123 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 Pre-Decrement ( temp 2-component vector of uint) 0:123 'storeTemp' ( temp 2-component vector of uint) 0:123 imageStore ( temp void) 0:123 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:123 'coordTemp' ( temp int) 0:123 'storeTemp' ( temp 2-component vector of uint) 0:123 'storeTemp' ( temp 2-component vector of uint) 0:126 Sequence 0:126 move second child to first child ( temp int) 0:126 'coordTemp' ( temp int) 0:126 c1: direct index for structure ( uniform int) 0:126 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:126 Constant: 0:126 0 (const uint) 0:126 move second child to first child ( temp 2-component vector of float) 0:126 'storeTempPre' ( temp 2-component vector of float) 0:126 imageLoad ( temp 2-component vector of float) 0:126 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 move second child to first child ( temp 2-component vector of float) 0:126 'storeTempPost' ( temp 2-component vector of float) 0:126 'storeTempPre' ( temp 2-component vector of float) 0:126 Post-Increment ( temp 2-component vector of float) 0:126 'storeTempPost' ( temp 2-component vector of float) 0:126 imageStore ( temp void) 0:126 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:126 'coordTemp' ( temp int) 0:126 'storeTempPost' ( temp 2-component vector of float) 0:126 'storeTempPre' ( temp 2-component vector of float) 0:127 Sequence 0:127 move second child to first child ( temp int) 0:127 'coordTemp' ( temp int) 0:127 c1: direct index for structure ( uniform int) 0:127 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:127 Constant: 0:127 0 (const uint) 0:127 move second child to first child ( temp 2-component vector of uint) 0:127 'storeTempPre' ( temp 2-component vector of uint) 0:127 imageLoad ( temp 2-component vector of uint) 0:127 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 move second child to first child ( temp 2-component vector of uint) 0:127 'storeTempPost' ( temp 2-component vector of uint) 0:127 'storeTempPre' ( temp 2-component vector of uint) 0:127 Post-Decrement ( temp 2-component vector of uint) 0:127 'storeTempPost' ( temp 2-component vector of uint) 0:127 imageStore ( temp void) 0:127 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:127 'coordTemp' ( temp int) 0:127 'storeTempPost' ( temp 2-component vector of uint) 0:127 'storeTempPre' ( temp 2-component vector of uint) 0:128 Sequence 0:128 move second child to first child ( temp int) 0:128 'coordTemp' ( temp int) 0:128 c1: direct index for structure ( uniform int) 0:128 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:128 Constant: 0:128 0 (const uint) 0:128 move second child to first child ( temp 2-component vector of int) 0:128 'storeTempPre' ( temp 2-component vector of int) 0:128 imageLoad ( temp 2-component vector of int) 0:128 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 move second child to first child ( temp 2-component vector of int) 0:128 'storeTempPost' ( temp 2-component vector of int) 0:128 'storeTempPre' ( temp 2-component vector of int) 0:128 Post-Increment ( temp 2-component vector of int) 0:128 'storeTempPost' ( temp 2-component vector of int) 0:128 imageStore ( temp void) 0:128 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:128 'coordTemp' ( temp int) 0:128 'storeTempPost' ( temp 2-component vector of int) 0:128 'storeTempPre' ( temp 2-component vector of int) 0:130 Sequence 0:130 move second child to first child ( temp int) 0:130 'coordTemp' ( temp int) 0:130 c1: direct index for structure ( uniform int) 0:130 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:130 Constant: 0:130 0 (const uint) 0:130 move second child to first child ( temp 2-component vector of float) 0:130 'storeTempPre' ( temp 2-component vector of float) 0:130 imageLoad ( temp 2-component vector of float) 0:130 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 move second child to first child ( temp 2-component vector of float) 0:130 'storeTempPost' ( temp 2-component vector of float) 0:130 'storeTempPre' ( temp 2-component vector of float) 0:130 Post-Decrement ( temp 2-component vector of float) 0:130 'storeTempPost' ( temp 2-component vector of float) 0:130 imageStore ( temp void) 0:130 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:130 'coordTemp' ( temp int) 0:130 'storeTempPost' ( temp 2-component vector of float) 0:130 'storeTempPre' ( temp 2-component vector of float) 0:131 Sequence 0:131 move second child to first child ( temp int) 0:131 'coordTemp' ( temp int) 0:131 c1: direct index for structure ( uniform int) 0:131 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:131 Constant: 0:131 0 (const uint) 0:131 move second child to first child ( temp 2-component vector of int) 0:131 'storeTempPre' ( temp 2-component vector of int) 0:131 imageLoad ( temp 2-component vector of int) 0:131 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 move second child to first child ( temp 2-component vector of int) 0:131 'storeTempPost' ( temp 2-component vector of int) 0:131 'storeTempPre' ( temp 2-component vector of int) 0:131 Post-Increment ( temp 2-component vector of int) 0:131 'storeTempPost' ( temp 2-component vector of int) 0:131 imageStore ( temp void) 0:131 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:131 'coordTemp' ( temp int) 0:131 'storeTempPost' ( temp 2-component vector of int) 0:131 'storeTempPre' ( temp 2-component vector of int) 0:132 Sequence 0:132 move second child to first child ( temp int) 0:132 'coordTemp' ( temp int) 0:132 c1: direct index for structure ( uniform int) 0:132 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:132 Constant: 0:132 0 (const uint) 0:132 move second child to first child ( temp 2-component vector of uint) 0:132 'storeTempPre' ( temp 2-component vector of uint) 0:132 imageLoad ( temp 2-component vector of uint) 0:132 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 move second child to first child ( temp 2-component vector of uint) 0:132 'storeTempPost' ( temp 2-component vector of uint) 0:132 'storeTempPre' ( temp 2-component vector of uint) 0:132 Post-Decrement ( temp 2-component vector of uint) 0:132 'storeTempPost' ( temp 2-component vector of uint) 0:132 imageStore ( temp void) 0:132 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:132 'coordTemp' ( temp int) 0:132 'storeTempPost' ( temp 2-component vector of uint) 0:132 'storeTempPre' ( temp 2-component vector of uint) 0:135 Sequence 0:135 move second child to first child ( temp 2-component vector of float) 0:135 'storeTemp' ( temp 2-component vector of float) 0:135 imageLoad ( temp 2-component vector of float) 0:135 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:135 Constant: 0:135 2 (const int) 0:135 3 (const int) 0:135 imageStore ( temp void) 0:135 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:135 Constant: 0:135 1 (const int) 0:135 'storeTemp' ( temp 2-component vector of float) 0:135 'storeTemp' ( temp 2-component vector of float) 0:137 move second child to first child ( temp 4-component vector of float) 0:137 Color: direct index for structure ( temp 4-component vector of float) 0:137 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:137 1.000000 0:139 Branch: Return with expression 0:139 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:53 Constant: 0:53 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df2' (layout( rg32f) uniform image1D) 0:? 'g_tTex1di2' (layout( rg32i) uniform iimage1D) 0:? 'g_tTex1du2' (layout( rg32ui) uniform uimage1D) 0:? 'g_tTex2df2' (layout( rg32f) uniform image2D) 0:? 'g_tTex2di2' (layout( rg32i) uniform iimage2D) 0:? 'g_tTex2du2' (layout( rg32ui) uniform uimage2D) 0:? 'g_tTex3df2' (layout( rg32f) uniform image3D) 0:? 'g_tTex3di2' (layout( rg32i) uniform iimage3D) 0:? 'g_tTex3du2' (layout( rg32ui) uniform uimage3D) 0:? 'g_tTex1df2a' (layout( rg32f) uniform image1DArray) 0:? 'g_tTex1di2a' (layout( rg32i) uniform iimage1DArray) 0:? 'g_tTex1du2a' (layout( rg32ui) uniform uimage1DArray) 0:? 'g_tTex2df2a' (layout( rg32f) uniform image2DArray) 0:? 'g_tTex2di2a' (layout( rg32i) uniform iimage2DArray) 0:? 'g_tTex2du2a' (layout( rg32ui) uniform uimage2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 711 Capability Shader Capability Image1D Capability StorageImageExtendedFormats 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 687 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "Fn1(vi2;" Name 10 "x" Name 18 "Fn1(vu2;" Name 17 "x" Name 25 "Fn1(vf2;" Name 24 "x" Name 29 "Fn2(vi2;" Name 28 "x" Name 33 "Fn2(vu2;" Name 32 "x" Name 37 "Fn2(vf2;" Name 36 "x" Name 40 "SomeValue(" Name 43 "PS_OUTPUT" MemberName 43(PS_OUTPUT) 0 "Color" Name 45 "@main(" Name 64 "$Global" MemberName 64($Global) 0 "c1" MemberName 64($Global) 1 "c2" MemberName 64($Global) 2 "c3" MemberName 64($Global) 3 "c4" MemberName 64($Global) 4 "o1" MemberName 64($Global) 5 "o2" MemberName 64($Global) 6 "o3" MemberName 64($Global) 7 "o4" MemberName 64($Global) 8 "uf2" MemberName 64($Global) 9 "ui2" MemberName 64($Global) 10 "uu2" Name 66 "" Name 76 "g_tTex1df2" Name 85 "r00" Name 93 "r01" Name 96 "g_tTex1di2" Name 104 "r02" Name 107 "g_tTex1du2" Name 116 "r10" Name 119 "g_tTex2df2" Name 127 "r11" Name 130 "g_tTex2di2" Name 138 "r12" Name 141 "g_tTex2du2" Name 149 "r20" Name 152 "g_tTex3df2" Name 162 "r21" Name 165 "g_tTex3di2" Name 173 "r22" Name 176 "g_tTex3du2" Name 184 "lf2" Name 189 "storeTemp" Name 199 "storeTemp" Name 205 "storeTemp" Name 213 "val1" Name 215 "coordTemp" Name 218 "storeTemp" Name 232 "coordTemp" Name 235 "storeTemp" Name 249 "coordTemp" Name 252 "storeTemp" Name 266 "coordTemp" Name 269 "storeTemp" Name 282 "coordTemp" Name 285 "storeTemp" Name 298 "coordTemp" Name 301 "storeTemp" Name 315 "coordTemp" Name 318 "storeTemp" Name 332 "coordTemp" Name 335 "storeTemp" Name 348 "coordTemp" Name 351 "storeTemp" Name 364 "storeTemp" Name 374 "storeTemp" Name 381 "storeTemp" Name 388 "storeTemp" Name 398 "storeTemp" Name 405 "storeTemp" Name 419 "param" Name 428 "param" Name 437 "param" Name 439 "tempArg" Name 440 "param" Name 447 "tempArg" Name 448 "param" Name 455 "tempArg" Name 456 "param" Name 463 "coordTemp" Name 466 "storeTemp" Name 480 "coordTemp" Name 483 "storeTemp" Name 496 "coordTemp" Name 499 "storeTemp" Name 512 "coordTemp" Name 515 "storeTemp" Name 528 "coordTemp" Name 531 "storeTemp" Name 544 "coordTemp" Name 547 "storeTemp" Name 560 "coordTemp" Name 563 "storeTempPre" Name 570 "storeTempPost" Name 578 "coordTemp" Name 581 "storeTempPre" Name 588 "storeTempPost" Name 596 "coordTemp" Name 599 "storeTempPre" Name 606 "storeTempPost" Name 614 "coordTemp" Name 617 "storeTempPre" Name 624 "storeTempPost" Name 632 "coordTemp" Name 635 "storeTempPre" Name 642 "storeTempPost" Name 650 "coordTemp" Name 653 "storeTempPre" Name 660 "storeTempPost" Name 668 "storeTemp" Name 679 "psout" Name 687 "@entryPointOutput.Color" Name 692 "g_sSamp" Name 695 "g_tTex1df2a" Name 698 "g_tTex1di2a" Name 701 "g_tTex1du2a" Name 704 "g_tTex2df2a" Name 707 "g_tTex2di2a" Name 710 "g_tTex2du2a" Decorate 64($Global) Block MemberDecorate 64($Global) 0 Offset 0 MemberDecorate 64($Global) 1 Offset 8 MemberDecorate 64($Global) 2 Offset 16 MemberDecorate 64($Global) 3 Offset 32 MemberDecorate 64($Global) 4 Offset 48 MemberDecorate 64($Global) 5 Offset 56 MemberDecorate 64($Global) 6 Offset 64 MemberDecorate 64($Global) 7 Offset 80 MemberDecorate 64($Global) 8 Offset 96 MemberDecorate 64($Global) 9 Offset 104 MemberDecorate 64($Global) 10 Offset 112 Decorate 66 Binding 10 Decorate 66 DescriptorSet 0 Decorate 76(g_tTex1df2) Binding 1 Decorate 76(g_tTex1df2) DescriptorSet 0 Decorate 96(g_tTex1di2) Binding 2 Decorate 96(g_tTex1di2) DescriptorSet 0 Decorate 107(g_tTex1du2) Binding 3 Decorate 107(g_tTex1du2) DescriptorSet 0 Decorate 119(g_tTex2df2) Binding 4 Decorate 119(g_tTex2df2) DescriptorSet 0 Decorate 130(g_tTex2di2) Binding 5 Decorate 130(g_tTex2di2) DescriptorSet 0 Decorate 141(g_tTex2du2) Binding 6 Decorate 141(g_tTex2du2) DescriptorSet 0 Decorate 152(g_tTex3df2) Binding 7 Decorate 152(g_tTex3df2) DescriptorSet 0 Decorate 165(g_tTex3di2) Binding 8 Decorate 165(g_tTex3di2) DescriptorSet 0 Decorate 176(g_tTex3du2) Binding 9 Decorate 176(g_tTex3du2) DescriptorSet 0 Decorate 687(@entryPointOutput.Color) Location 0 Decorate 692(g_sSamp) Binding 0 Decorate 692(g_sSamp) DescriptorSet 0 Decorate 695(g_tTex1df2a) Binding 0 Decorate 695(g_tTex1df2a) DescriptorSet 0 Decorate 698(g_tTex1di2a) Binding 0 Decorate 698(g_tTex1di2a) DescriptorSet 0 Decorate 701(g_tTex1du2a) Binding 0 Decorate 701(g_tTex1du2a) DescriptorSet 0 Decorate 704(g_tTex2df2a) Binding 0 Decorate 704(g_tTex2df2a) DescriptorSet 0 Decorate 707(g_tTex2di2a) Binding 0 Decorate 707(g_tTex2di2a) DescriptorSet 0 Decorate 710(g_tTex2du2a) Binding 0 Decorate 710(g_tTex2du2a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 9: TypeFunction 7(ivec2) 8(ptr) 13: TypeInt 32 0 14: TypeVector 13(int) 2 15: TypePointer Function 14(ivec2) 16: TypeFunction 14(ivec2) 15(ptr) 20: TypeFloat 32 21: TypeVector 20(float) 2 22: TypePointer Function 21(fvec2) 23: TypeFunction 21(fvec2) 22(ptr) 27: TypeFunction 2 8(ptr) 31: TypeFunction 2 15(ptr) 35: TypeFunction 2 22(ptr) 39: TypeFunction 21(fvec2) 42: TypeVector 20(float) 4 43(PS_OUTPUT): TypeStruct 42(fvec4) 44: TypeFunction 43(PS_OUTPUT) 56: 6(int) Constant 0 57: 7(ivec2) ConstantComposite 56 56 58: 13(int) Constant 0 59: 14(ivec2) ConstantComposite 58 58 60: 20(float) Constant 0 61: 21(fvec2) ConstantComposite 60 60 62: TypeVector 6(int) 3 63: TypeVector 6(int) 4 64($Global): TypeStruct 6(int) 7(ivec2) 62(ivec3) 63(ivec4) 6(int) 7(ivec2) 62(ivec3) 63(ivec4) 21(fvec2) 7(ivec2) 14(ivec2) 65: TypePointer Uniform 64($Global) 66: 65(ptr) Variable Uniform 67: 6(int) Constant 1 68: TypePointer Uniform 7(ivec2) 74: TypeImage 20(float) 1D nonsampled format:Rg32f 75: TypePointer UniformConstant 74 76(g_tTex1df2): 75(ptr) Variable UniformConstant 78: TypePointer Uniform 6(int) 94: TypeImage 6(int) 1D nonsampled format:Rg32i 95: TypePointer UniformConstant 94 96(g_tTex1di2): 95(ptr) Variable UniformConstant 105: TypeImage 13(int) 1D nonsampled format:Rg32ui 106: TypePointer UniformConstant 105 107(g_tTex1du2): 106(ptr) Variable UniformConstant 111: TypeVector 13(int) 4 117: TypeImage 20(float) 2D nonsampled format:Rg32f 118: TypePointer UniformConstant 117 119(g_tTex2df2): 118(ptr) Variable UniformConstant 128: TypeImage 6(int) 2D nonsampled format:Rg32i 129: TypePointer UniformConstant 128 130(g_tTex2di2): 129(ptr) Variable UniformConstant 139: TypeImage 13(int) 2D nonsampled format:Rg32ui 140: TypePointer UniformConstant 139 141(g_tTex2du2): 140(ptr) Variable UniformConstant 150: TypeImage 20(float) 3D nonsampled format:Rg32f 151: TypePointer UniformConstant 150 152(g_tTex3df2): 151(ptr) Variable UniformConstant 154: 6(int) Constant 2 155: TypePointer Uniform 62(ivec3) 163: TypeImage 6(int) 3D nonsampled format:Rg32i 164: TypePointer UniformConstant 163 165(g_tTex3di2): 164(ptr) Variable UniformConstant 174: TypeImage 13(int) 3D nonsampled format:Rg32ui 175: TypePointer UniformConstant 174 176(g_tTex3du2): 175(ptr) Variable UniformConstant 185: 6(int) Constant 8 186: TypePointer Uniform 21(fvec2) 200: 7(ivec2) ConstantComposite 154 154 206: 13(int) Constant 3 207: 13(int) Constant 2 208: 14(ivec2) ConstantComposite 206 207 214: TypePointer Function 6(int) 225: 20(float) Constant 1073741824 242: 20(float) Constant 1077936128 259: 20(float) Constant 1082130432 308: 6(int) Constant 65535 325: 6(int) Constant 61680 375: 6(int) Constant 5 376: 7(ivec2) ConstantComposite 375 154 382: 13(int) Constant 6 383: 14(ivec2) ConstantComposite 382 207 399: 6(int) Constant 6 400: 7(ivec2) ConstantComposite 185 399 406: 13(int) Constant 9 407: 14(ivec2) ConstantComposite 406 207 474: 20(float) Constant 1065353216 670: 6(int) Constant 3 671: 7(ivec2) ConstantComposite 154 670 678: TypePointer Function 43(PS_OUTPUT) 680: 42(fvec4) ConstantComposite 474 474 474 474 681: TypePointer Function 42(fvec4) 686: TypePointer Output 42(fvec4) 687(@entryPointOutput.Color): 686(ptr) Variable Output 690: TypeSampler 691: TypePointer UniformConstant 690 692(g_sSamp): 691(ptr) Variable UniformConstant 693: TypeImage 20(float) 1D array nonsampled format:Rg32f 694: TypePointer UniformConstant 693 695(g_tTex1df2a): 694(ptr) Variable UniformConstant 696: TypeImage 6(int) 1D array nonsampled format:Rg32i 697: TypePointer UniformConstant 696 698(g_tTex1di2a): 697(ptr) Variable UniformConstant 699: TypeImage 13(int) 1D array nonsampled format:Rg32ui 700: TypePointer UniformConstant 699 701(g_tTex1du2a): 700(ptr) Variable UniformConstant 702: TypeImage 20(float) 2D array nonsampled format:Rg32f 703: TypePointer UniformConstant 702 704(g_tTex2df2a): 703(ptr) Variable UniformConstant 705: TypeImage 6(int) 2D array nonsampled format:Rg32i 706: TypePointer UniformConstant 705 707(g_tTex2di2a): 706(ptr) Variable UniformConstant 708: TypeImage 13(int) 2D array nonsampled format:Rg32ui 709: TypePointer UniformConstant 708 710(g_tTex2du2a): 709(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 688:43(PS_OUTPUT) FunctionCall 45(@main() 689: 42(fvec4) CompositeExtract 688 0 Store 687(@entryPointOutput.Color) 689 Return FunctionEnd 11(Fn1(vi2;): 7(ivec2) Function None 9 10(x): 8(ptr) FunctionParameter 12: Label 47: 7(ivec2) Load 10(x) ReturnValue 47 FunctionEnd 18(Fn1(vu2;): 14(ivec2) Function None 16 17(x): 15(ptr) FunctionParameter 19: Label 50: 14(ivec2) Load 17(x) ReturnValue 50 FunctionEnd 25(Fn1(vf2;): 21(fvec2) Function None 23 24(x): 22(ptr) FunctionParameter 26: Label 53: 21(fvec2) Load 24(x) ReturnValue 53 FunctionEnd 29(Fn2(vi2;): 2 Function None 27 28(x): 8(ptr) FunctionParameter 30: Label Store 28(x) 57 Return FunctionEnd 33(Fn2(vu2;): 2 Function None 31 32(x): 15(ptr) FunctionParameter 34: Label Store 32(x) 59 Return FunctionEnd 37(Fn2(vf2;): 2 Function None 35 36(x): 22(ptr) FunctionParameter 38: Label Store 36(x) 61 Return FunctionEnd 40(SomeValue(): 21(fvec2) Function None 39 41: Label 69: 68(ptr) AccessChain 66 67 70: 7(ivec2) Load 69 71: 21(fvec2) ConvertSToF 70 ReturnValue 71 FunctionEnd 45(@main():43(PS_OUTPUT) Function None 44 46: Label 85(r00): 22(ptr) Variable Function 93(r01): 8(ptr) Variable Function 104(r02): 15(ptr) Variable Function 116(r10): 22(ptr) Variable Function 127(r11): 8(ptr) Variable Function 138(r12): 15(ptr) Variable Function 149(r20): 22(ptr) Variable Function 162(r21): 8(ptr) Variable Function 173(r22): 15(ptr) Variable Function 184(lf2): 22(ptr) Variable Function 189(storeTemp): 22(ptr) Variable Function 199(storeTemp): 8(ptr) Variable Function 205(storeTemp): 15(ptr) Variable Function 213(val1): 22(ptr) Variable Function 215(coordTemp): 214(ptr) Variable Function 218(storeTemp): 22(ptr) Variable Function 232(coordTemp): 214(ptr) Variable Function 235(storeTemp): 22(ptr) Variable Function 249(coordTemp): 214(ptr) Variable Function 252(storeTemp): 22(ptr) Variable Function 266(coordTemp): 214(ptr) Variable Function 269(storeTemp): 8(ptr) Variable Function 282(coordTemp): 214(ptr) Variable Function 285(storeTemp): 8(ptr) Variable Function 298(coordTemp): 214(ptr) Variable Function 301(storeTemp): 8(ptr) Variable Function 315(coordTemp): 214(ptr) Variable Function 318(storeTemp): 8(ptr) Variable Function 332(coordTemp): 214(ptr) Variable Function 335(storeTemp): 8(ptr) Variable Function 348(coordTemp): 214(ptr) Variable Function 351(storeTemp): 8(ptr) Variable Function 364(storeTemp): 22(ptr) Variable Function 374(storeTemp): 8(ptr) Variable Function 381(storeTemp): 15(ptr) Variable Function 388(storeTemp): 22(ptr) Variable Function 398(storeTemp): 8(ptr) Variable Function 405(storeTemp): 15(ptr) Variable Function 419(param): 22(ptr) Variable Function 428(param): 8(ptr) Variable Function 437(param): 15(ptr) Variable Function 439(tempArg): 22(ptr) Variable Function 440(param): 22(ptr) Variable Function 447(tempArg): 8(ptr) Variable Function 448(param): 8(ptr) Variable Function 455(tempArg): 15(ptr) Variable Function 456(param): 15(ptr) Variable Function 463(coordTemp): 214(ptr) Variable Function 466(storeTemp): 22(ptr) Variable Function 480(coordTemp): 214(ptr) Variable Function 483(storeTemp): 8(ptr) Variable Function 496(coordTemp): 214(ptr) Variable Function 499(storeTemp): 15(ptr) Variable Function 512(coordTemp): 214(ptr) Variable Function 515(storeTemp): 22(ptr) Variable Function 528(coordTemp): 214(ptr) Variable Function 531(storeTemp): 8(ptr) Variable Function 544(coordTemp): 214(ptr) Variable Function 547(storeTemp): 15(ptr) Variable Function 560(coordTemp): 214(ptr) Variable Function 563(storeTempPre): 22(ptr) Variable Function 570(storeTempPost): 22(ptr) Variable Function 578(coordTemp): 214(ptr) Variable Function 581(storeTempPre): 15(ptr) Variable Function 588(storeTempPost): 15(ptr) Variable Function 596(coordTemp): 214(ptr) Variable Function 599(storeTempPre): 8(ptr) Variable Function 606(storeTempPost): 8(ptr) Variable Function 614(coordTemp): 214(ptr) Variable Function 617(storeTempPre): 22(ptr) Variable Function 624(storeTempPost): 22(ptr) Variable Function 632(coordTemp): 214(ptr) Variable Function 635(storeTempPre): 8(ptr) Variable Function 642(storeTempPost): 8(ptr) Variable Function 650(coordTemp): 214(ptr) Variable Function 653(storeTempPre): 15(ptr) Variable Function 660(storeTempPost): 15(ptr) Variable Function 668(storeTemp): 22(ptr) Variable Function 679(psout): 678(ptr) Variable Function 77: 74 Load 76(g_tTex1df2) 79: 78(ptr) AccessChain 66 56 80: 6(int) Load 79 81: 42(fvec4) ImageRead 77 80 82: 20(float) CompositeExtract 81 0 83: 20(float) CompositeExtract 81 1 84: 21(fvec2) CompositeConstruct 82 83 86: 74 Load 76(g_tTex1df2) 87: 78(ptr) AccessChain 66 56 88: 6(int) Load 87 89: 42(fvec4) ImageRead 86 88 90: 20(float) CompositeExtract 89 0 91: 20(float) CompositeExtract 89 1 92: 21(fvec2) CompositeConstruct 90 91 Store 85(r00) 92 97: 94 Load 96(g_tTex1di2) 98: 78(ptr) AccessChain 66 56 99: 6(int) Load 98 100: 63(ivec4) ImageRead 97 99 101: 6(int) CompositeExtract 100 0 102: 6(int) CompositeExtract 100 1 103: 7(ivec2) CompositeConstruct 101 102 Store 93(r01) 103 108: 105 Load 107(g_tTex1du2) 109: 78(ptr) AccessChain 66 56 110: 6(int) Load 109 112: 111(ivec4) ImageRead 108 110 113: 13(int) CompositeExtract 112 0 114: 13(int) CompositeExtract 112 1 115: 14(ivec2) CompositeConstruct 113 114 Store 104(r02) 115 120: 117 Load 119(g_tTex2df2) 121: 68(ptr) AccessChain 66 67 122: 7(ivec2) Load 121 123: 42(fvec4) ImageRead 120 122 124: 20(float) CompositeExtract 123 0 125: 20(float) CompositeExtract 123 1 126: 21(fvec2) CompositeConstruct 124 125 Store 116(r10) 126 131: 128 Load 130(g_tTex2di2) 132: 68(ptr) AccessChain 66 67 133: 7(ivec2) Load 132 134: 63(ivec4) ImageRead 131 133 135: 6(int) CompositeExtract 134 0 136: 6(int) CompositeExtract 134 1 137: 7(ivec2) CompositeConstruct 135 136 Store 127(r11) 137 142: 139 Load 141(g_tTex2du2) 143: 68(ptr) AccessChain 66 67 144: 7(ivec2) Load 143 145: 111(ivec4) ImageRead 142 144 146: 13(int) CompositeExtract 145 0 147: 13(int) CompositeExtract 145 1 148: 14(ivec2) CompositeConstruct 146 147 Store 138(r12) 148 153: 150 Load 152(g_tTex3df2) 156: 155(ptr) AccessChain 66 154 157: 62(ivec3) Load 156 158: 42(fvec4) ImageRead 153 157 159: 20(float) CompositeExtract 158 0 160: 20(float) CompositeExtract 158 1 161: 21(fvec2) CompositeConstruct 159 160 Store 149(r20) 161 166: 163 Load 165(g_tTex3di2) 167: 155(ptr) AccessChain 66 154 168: 62(ivec3) Load 167 169: 63(ivec4) ImageRead 166 168 170: 6(int) CompositeExtract 169 0 171: 6(int) CompositeExtract 169 1 172: 7(ivec2) CompositeConstruct 170 171 Store 162(r21) 172 177: 174 Load 176(g_tTex3du2) 178: 155(ptr) AccessChain 66 154 179: 62(ivec3) Load 178 180: 111(ivec4) ImageRead 177 179 181: 13(int) CompositeExtract 180 0 182: 13(int) CompositeExtract 180 1 183: 14(ivec2) CompositeConstruct 181 182 Store 173(r22) 183 187: 186(ptr) AccessChain 66 185 188: 21(fvec2) Load 187 Store 184(lf2) 188 190: 21(fvec2) FunctionCall 40(SomeValue() Store 189(storeTemp) 190 191: 74 Load 76(g_tTex1df2) 192: 78(ptr) AccessChain 66 56 193: 6(int) Load 192 194: 21(fvec2) Load 189(storeTemp) ImageWrite 191 193 194 195: 74 Load 76(g_tTex1df2) 196: 78(ptr) AccessChain 66 56 197: 6(int) Load 196 198: 21(fvec2) Load 184(lf2) ImageWrite 195 197 198 Store 199(storeTemp) 200 201: 94 Load 96(g_tTex1di2) 202: 78(ptr) AccessChain 66 56 203: 6(int) Load 202 204: 7(ivec2) Load 199(storeTemp) ImageWrite 201 203 204 Store 205(storeTemp) 208 209: 105 Load 107(g_tTex1du2) 210: 78(ptr) AccessChain 66 56 211: 6(int) Load 210 212: 14(ivec2) Load 205(storeTemp) ImageWrite 209 211 212 216: 78(ptr) AccessChain 66 56 217: 6(int) Load 216 Store 215(coordTemp) 217 219: 74 Load 76(g_tTex1df2) 220: 6(int) Load 215(coordTemp) 221: 42(fvec4) ImageRead 219 220 222: 20(float) CompositeExtract 221 0 223: 20(float) CompositeExtract 221 1 224: 21(fvec2) CompositeConstruct 222 223 Store 218(storeTemp) 224 226: 21(fvec2) Load 218(storeTemp) 227: 21(fvec2) VectorTimesScalar 226 225 Store 218(storeTemp) 227 228: 74 Load 76(g_tTex1df2) 229: 6(int) Load 215(coordTemp) 230: 21(fvec2) Load 218(storeTemp) ImageWrite 228 229 230 231: 21(fvec2) Load 218(storeTemp) Store 213(val1) 231 233: 78(ptr) AccessChain 66 56 234: 6(int) Load 233 Store 232(coordTemp) 234 236: 74 Load 76(g_tTex1df2) 237: 6(int) Load 232(coordTemp) 238: 42(fvec4) ImageRead 236 237 239: 20(float) CompositeExtract 238 0 240: 20(float) CompositeExtract 238 1 241: 21(fvec2) CompositeConstruct 239 240 Store 235(storeTemp) 241 243: 21(fvec2) Load 235(storeTemp) 244: 21(fvec2) CompositeConstruct 242 242 245: 21(fvec2) FSub 243 244 Store 235(storeTemp) 245 246: 74 Load 76(g_tTex1df2) 247: 6(int) Load 232(coordTemp) 248: 21(fvec2) Load 235(storeTemp) ImageWrite 246 247 248 250: 78(ptr) AccessChain 66 56 251: 6(int) Load 250 Store 249(coordTemp) 251 253: 74 Load 76(g_tTex1df2) 254: 6(int) Load 249(coordTemp) 255: 42(fvec4) ImageRead 253 254 256: 20(float) CompositeExtract 255 0 257: 20(float) CompositeExtract 255 1 258: 21(fvec2) CompositeConstruct 256 257 Store 252(storeTemp) 258 260: 21(fvec2) Load 252(storeTemp) 261: 21(fvec2) CompositeConstruct 259 259 262: 21(fvec2) FAdd 260 261 Store 252(storeTemp) 262 263: 74 Load 76(g_tTex1df2) 264: 6(int) Load 249(coordTemp) 265: 21(fvec2) Load 252(storeTemp) ImageWrite 263 264 265 267: 78(ptr) AccessChain 66 56 268: 6(int) Load 267 Store 266(coordTemp) 268 270: 94 Load 96(g_tTex1di2) 271: 6(int) Load 266(coordTemp) 272: 63(ivec4) ImageRead 270 271 273: 6(int) CompositeExtract 272 0 274: 6(int) CompositeExtract 272 1 275: 7(ivec2) CompositeConstruct 273 274 Store 269(storeTemp) 275 276: 7(ivec2) Load 269(storeTemp) 277: 7(ivec2) CompositeConstruct 154 154 278: 7(ivec2) SDiv 276 277 Store 269(storeTemp) 278 279: 94 Load 96(g_tTex1di2) 280: 6(int) Load 266(coordTemp) 281: 7(ivec2) Load 269(storeTemp) ImageWrite 279 280 281 283: 78(ptr) AccessChain 66 56 284: 6(int) Load 283 Store 282(coordTemp) 284 286: 94 Load 96(g_tTex1di2) 287: 6(int) Load 282(coordTemp) 288: 63(ivec4) ImageRead 286 287 289: 6(int) CompositeExtract 288 0 290: 6(int) CompositeExtract 288 1 291: 7(ivec2) CompositeConstruct 289 290 Store 285(storeTemp) 291 292: 7(ivec2) Load 285(storeTemp) 293: 7(ivec2) CompositeConstruct 154 154 294: 7(ivec2) SMod 292 293 Store 285(storeTemp) 294 295: 94 Load 96(g_tTex1di2) 296: 6(int) Load 282(coordTemp) 297: 7(ivec2) Load 285(storeTemp) ImageWrite 295 296 297 299: 78(ptr) AccessChain 66 56 300: 6(int) Load 299 Store 298(coordTemp) 300 302: 94 Load 96(g_tTex1di2) 303: 6(int) Load 298(coordTemp) 304: 63(ivec4) ImageRead 302 303 305: 6(int) CompositeExtract 304 0 306: 6(int) CompositeExtract 304 1 307: 7(ivec2) CompositeConstruct 305 306 Store 301(storeTemp) 307 309: 7(ivec2) Load 301(storeTemp) 310: 7(ivec2) CompositeConstruct 308 308 311: 7(ivec2) BitwiseAnd 309 310 Store 301(storeTemp) 311 312: 94 Load 96(g_tTex1di2) 313: 6(int) Load 298(coordTemp) 314: 7(ivec2) Load 301(storeTemp) ImageWrite 312 313 314 316: 78(ptr) AccessChain 66 56 317: 6(int) Load 316 Store 315(coordTemp) 317 319: 94 Load 96(g_tTex1di2) 320: 6(int) Load 315(coordTemp) 321: 63(ivec4) ImageRead 319 320 322: 6(int) CompositeExtract 321 0 323: 6(int) CompositeExtract 321 1 324: 7(ivec2) CompositeConstruct 322 323 Store 318(storeTemp) 324 326: 7(ivec2) Load 318(storeTemp) 327: 7(ivec2) CompositeConstruct 325 325 328: 7(ivec2) BitwiseOr 326 327 Store 318(storeTemp) 328 329: 94 Load 96(g_tTex1di2) 330: 6(int) Load 315(coordTemp) 331: 7(ivec2) Load 318(storeTemp) ImageWrite 329 330 331 333: 78(ptr) AccessChain 66 56 334: 6(int) Load 333 Store 332(coordTemp) 334 336: 94 Load 96(g_tTex1di2) 337: 6(int) Load 332(coordTemp) 338: 63(ivec4) ImageRead 336 337 339: 6(int) CompositeExtract 338 0 340: 6(int) CompositeExtract 338 1 341: 7(ivec2) CompositeConstruct 339 340 Store 335(storeTemp) 341 342: 7(ivec2) Load 335(storeTemp) 343: 7(ivec2) CompositeConstruct 154 154 344: 7(ivec2) ShiftLeftLogical 342 343 Store 335(storeTemp) 344 345: 94 Load 96(g_tTex1di2) 346: 6(int) Load 332(coordTemp) 347: 7(ivec2) Load 335(storeTemp) ImageWrite 345 346 347 349: 78(ptr) AccessChain 66 56 350: 6(int) Load 349 Store 348(coordTemp) 350 352: 94 Load 96(g_tTex1di2) 353: 6(int) Load 348(coordTemp) 354: 63(ivec4) ImageRead 352 353 355: 6(int) CompositeExtract 354 0 356: 6(int) CompositeExtract 354 1 357: 7(ivec2) CompositeConstruct 355 356 Store 351(storeTemp) 357 358: 7(ivec2) Load 351(storeTemp) 359: 7(ivec2) CompositeConstruct 154 154 360: 7(ivec2) ShiftRightArithmetic 358 359 Store 351(storeTemp) 360 361: 94 Load 96(g_tTex1di2) 362: 6(int) Load 348(coordTemp) 363: 7(ivec2) Load 351(storeTemp) ImageWrite 361 362 363 365: 21(fvec2) FunctionCall 40(SomeValue() Store 364(storeTemp) 365 366: 117 Load 119(g_tTex2df2) 367: 68(ptr) AccessChain 66 67 368: 7(ivec2) Load 367 369: 21(fvec2) Load 364(storeTemp) ImageWrite 366 368 369 370: 117 Load 119(g_tTex2df2) 371: 68(ptr) AccessChain 66 67 372: 7(ivec2) Load 371 373: 21(fvec2) Load 184(lf2) ImageWrite 370 372 373 Store 374(storeTemp) 376 377: 128 Load 130(g_tTex2di2) 378: 68(ptr) AccessChain 66 67 379: 7(ivec2) Load 378 380: 7(ivec2) Load 374(storeTemp) ImageWrite 377 379 380 Store 381(storeTemp) 383 384: 139 Load 141(g_tTex2du2) 385: 68(ptr) AccessChain 66 67 386: 7(ivec2) Load 385 387: 14(ivec2) Load 381(storeTemp) ImageWrite 384 386 387 389: 21(fvec2) FunctionCall 40(SomeValue() Store 388(storeTemp) 389 390: 150 Load 152(g_tTex3df2) 391: 155(ptr) AccessChain 66 154 392: 62(ivec3) Load 391 393: 21(fvec2) Load 388(storeTemp) ImageWrite 390 392 393 394: 150 Load 152(g_tTex3df2) 395: 155(ptr) AccessChain 66 154 396: 62(ivec3) Load 395 397: 21(fvec2) Load 184(lf2) ImageWrite 394 396 397 Store 398(storeTemp) 400 401: 163 Load 165(g_tTex3di2) 402: 155(ptr) AccessChain 66 154 403: 62(ivec3) Load 402 404: 7(ivec2) Load 398(storeTemp) ImageWrite 401 403 404 Store 405(storeTemp) 407 408: 174 Load 176(g_tTex3du2) 409: 155(ptr) AccessChain 66 154 410: 62(ivec3) Load 409 411: 14(ivec2) Load 405(storeTemp) ImageWrite 408 410 411 412: 74 Load 76(g_tTex1df2) 413: 78(ptr) AccessChain 66 56 414: 6(int) Load 413 415: 42(fvec4) ImageRead 412 414 416: 20(float) CompositeExtract 415 0 417: 20(float) CompositeExtract 415 1 418: 21(fvec2) CompositeConstruct 416 417 Store 419(param) 418 420: 21(fvec2) FunctionCall 25(Fn1(vf2;) 419(param) 421: 94 Load 96(g_tTex1di2) 422: 78(ptr) AccessChain 66 56 423: 6(int) Load 422 424: 63(ivec4) ImageRead 421 423 425: 6(int) CompositeExtract 424 0 426: 6(int) CompositeExtract 424 1 427: 7(ivec2) CompositeConstruct 425 426 Store 428(param) 427 429: 7(ivec2) FunctionCall 11(Fn1(vi2;) 428(param) 430: 105 Load 107(g_tTex1du2) 431: 78(ptr) AccessChain 66 56 432: 6(int) Load 431 433: 111(ivec4) ImageRead 430 432 434: 13(int) CompositeExtract 433 0 435: 13(int) CompositeExtract 433 1 436: 14(ivec2) CompositeConstruct 434 435 Store 437(param) 436 438: 14(ivec2) FunctionCall 18(Fn1(vu2;) 437(param) 441: 2 FunctionCall 37(Fn2(vf2;) 440(param) 442: 21(fvec2) Load 440(param) Store 439(tempArg) 442 443: 74 Load 76(g_tTex1df2) 444: 78(ptr) AccessChain 66 56 445: 6(int) Load 444 446: 21(fvec2) Load 439(tempArg) ImageWrite 443 445 446 449: 2 FunctionCall 29(Fn2(vi2;) 448(param) 450: 7(ivec2) Load 448(param) Store 447(tempArg) 450 451: 94 Load 96(g_tTex1di2) 452: 78(ptr) AccessChain 66 56 453: 6(int) Load 452 454: 7(ivec2) Load 447(tempArg) ImageWrite 451 453 454 457: 2 FunctionCall 33(Fn2(vu2;) 456(param) 458: 14(ivec2) Load 456(param) Store 455(tempArg) 458 459: 105 Load 107(g_tTex1du2) 460: 78(ptr) AccessChain 66 56 461: 6(int) Load 460 462: 14(ivec2) Load 455(tempArg) ImageWrite 459 461 462 464: 78(ptr) AccessChain 66 56 465: 6(int) Load 464 Store 463(coordTemp) 465 467: 74 Load 76(g_tTex1df2) 468: 6(int) Load 463(coordTemp) 469: 42(fvec4) ImageRead 467 468 470: 20(float) CompositeExtract 469 0 471: 20(float) CompositeExtract 469 1 472: 21(fvec2) CompositeConstruct 470 471 Store 466(storeTemp) 472 473: 21(fvec2) Load 466(storeTemp) 475: 21(fvec2) CompositeConstruct 474 474 476: 21(fvec2) FAdd 473 475 Store 466(storeTemp) 476 477: 74 Load 76(g_tTex1df2) 478: 6(int) Load 463(coordTemp) 479: 21(fvec2) Load 466(storeTemp) ImageWrite 477 478 479 481: 78(ptr) AccessChain 66 56 482: 6(int) Load 481 Store 480(coordTemp) 482 484: 94 Load 96(g_tTex1di2) 485: 6(int) Load 480(coordTemp) 486: 63(ivec4) ImageRead 484 485 487: 6(int) CompositeExtract 486 0 488: 6(int) CompositeExtract 486 1 489: 7(ivec2) CompositeConstruct 487 488 Store 483(storeTemp) 489 490: 7(ivec2) Load 483(storeTemp) 491: 7(ivec2) CompositeConstruct 67 67 492: 7(ivec2) IAdd 490 491 Store 483(storeTemp) 492 493: 94 Load 96(g_tTex1di2) 494: 6(int) Load 480(coordTemp) 495: 7(ivec2) Load 483(storeTemp) ImageWrite 493 494 495 497: 78(ptr) AccessChain 66 56 498: 6(int) Load 497 Store 496(coordTemp) 498 500: 105 Load 107(g_tTex1du2) 501: 6(int) Load 496(coordTemp) 502: 111(ivec4) ImageRead 500 501 503: 13(int) CompositeExtract 502 0 504: 13(int) CompositeExtract 502 1 505: 14(ivec2) CompositeConstruct 503 504 Store 499(storeTemp) 505 506: 14(ivec2) Load 499(storeTemp) 507: 7(ivec2) CompositeConstruct 67 67 508: 14(ivec2) IAdd 506 507 Store 499(storeTemp) 508 509: 105 Load 107(g_tTex1du2) 510: 6(int) Load 496(coordTemp) 511: 14(ivec2) Load 499(storeTemp) ImageWrite 509 510 511 513: 78(ptr) AccessChain 66 56 514: 6(int) Load 513 Store 512(coordTemp) 514 516: 74 Load 76(g_tTex1df2) 517: 6(int) Load 512(coordTemp) 518: 42(fvec4) ImageRead 516 517 519: 20(float) CompositeExtract 518 0 520: 20(float) CompositeExtract 518 1 521: 21(fvec2) CompositeConstruct 519 520 Store 515(storeTemp) 521 522: 21(fvec2) Load 515(storeTemp) 523: 21(fvec2) CompositeConstruct 474 474 524: 21(fvec2) FSub 522 523 Store 515(storeTemp) 524 525: 74 Load 76(g_tTex1df2) 526: 6(int) Load 512(coordTemp) 527: 21(fvec2) Load 515(storeTemp) ImageWrite 525 526 527 529: 78(ptr) AccessChain 66 56 530: 6(int) Load 529 Store 528(coordTemp) 530 532: 94 Load 96(g_tTex1di2) 533: 6(int) Load 528(coordTemp) 534: 63(ivec4) ImageRead 532 533 535: 6(int) CompositeExtract 534 0 536: 6(int) CompositeExtract 534 1 537: 7(ivec2) CompositeConstruct 535 536 Store 531(storeTemp) 537 538: 7(ivec2) Load 531(storeTemp) 539: 7(ivec2) CompositeConstruct 67 67 540: 7(ivec2) ISub 538 539 Store 531(storeTemp) 540 541: 94 Load 96(g_tTex1di2) 542: 6(int) Load 528(coordTemp) 543: 7(ivec2) Load 531(storeTemp) ImageWrite 541 542 543 545: 78(ptr) AccessChain 66 56 546: 6(int) Load 545 Store 544(coordTemp) 546 548: 105 Load 107(g_tTex1du2) 549: 6(int) Load 544(coordTemp) 550: 111(ivec4) ImageRead 548 549 551: 13(int) CompositeExtract 550 0 552: 13(int) CompositeExtract 550 1 553: 14(ivec2) CompositeConstruct 551 552 Store 547(storeTemp) 553 554: 14(ivec2) Load 547(storeTemp) 555: 7(ivec2) CompositeConstruct 67 67 556: 14(ivec2) ISub 554 555 Store 547(storeTemp) 556 557: 105 Load 107(g_tTex1du2) 558: 6(int) Load 544(coordTemp) 559: 14(ivec2) Load 547(storeTemp) ImageWrite 557 558 559 561: 78(ptr) AccessChain 66 56 562: 6(int) Load 561 Store 560(coordTemp) 562 564: 74 Load 76(g_tTex1df2) 565: 6(int) Load 560(coordTemp) 566: 42(fvec4) ImageRead 564 565 567: 20(float) CompositeExtract 566 0 568: 20(float) CompositeExtract 566 1 569: 21(fvec2) CompositeConstruct 567 568 Store 563(storeTempPre) 569 571: 21(fvec2) Load 563(storeTempPre) Store 570(storeTempPost) 571 572: 21(fvec2) Load 570(storeTempPost) 573: 21(fvec2) CompositeConstruct 474 474 574: 21(fvec2) FAdd 572 573 Store 570(storeTempPost) 574 575: 74 Load 76(g_tTex1df2) 576: 6(int) Load 560(coordTemp) 577: 21(fvec2) Load 570(storeTempPost) ImageWrite 575 576 577 579: 78(ptr) AccessChain 66 56 580: 6(int) Load 579 Store 578(coordTemp) 580 582: 105 Load 107(g_tTex1du2) 583: 6(int) Load 578(coordTemp) 584: 111(ivec4) ImageRead 582 583 585: 13(int) CompositeExtract 584 0 586: 13(int) CompositeExtract 584 1 587: 14(ivec2) CompositeConstruct 585 586 Store 581(storeTempPre) 587 589: 14(ivec2) Load 581(storeTempPre) Store 588(storeTempPost) 589 590: 14(ivec2) Load 588(storeTempPost) 591: 7(ivec2) CompositeConstruct 67 67 592: 14(ivec2) ISub 590 591 Store 588(storeTempPost) 592 593: 105 Load 107(g_tTex1du2) 594: 6(int) Load 578(coordTemp) 595: 14(ivec2) Load 588(storeTempPost) ImageWrite 593 594 595 597: 78(ptr) AccessChain 66 56 598: 6(int) Load 597 Store 596(coordTemp) 598 600: 94 Load 96(g_tTex1di2) 601: 6(int) Load 596(coordTemp) 602: 63(ivec4) ImageRead 600 601 603: 6(int) CompositeExtract 602 0 604: 6(int) CompositeExtract 602 1 605: 7(ivec2) CompositeConstruct 603 604 Store 599(storeTempPre) 605 607: 7(ivec2) Load 599(storeTempPre) Store 606(storeTempPost) 607 608: 7(ivec2) Load 606(storeTempPost) 609: 7(ivec2) CompositeConstruct 67 67 610: 7(ivec2) IAdd 608 609 Store 606(storeTempPost) 610 611: 94 Load 96(g_tTex1di2) 612: 6(int) Load 596(coordTemp) 613: 7(ivec2) Load 606(storeTempPost) ImageWrite 611 612 613 615: 78(ptr) AccessChain 66 56 616: 6(int) Load 615 Store 614(coordTemp) 616 618: 74 Load 76(g_tTex1df2) 619: 6(int) Load 614(coordTemp) 620: 42(fvec4) ImageRead 618 619 621: 20(float) CompositeExtract 620 0 622: 20(float) CompositeExtract 620 1 623: 21(fvec2) CompositeConstruct 621 622 Store 617(storeTempPre) 623 625: 21(fvec2) Load 617(storeTempPre) Store 624(storeTempPost) 625 626: 21(fvec2) Load 624(storeTempPost) 627: 21(fvec2) CompositeConstruct 474 474 628: 21(fvec2) FSub 626 627 Store 624(storeTempPost) 628 629: 74 Load 76(g_tTex1df2) 630: 6(int) Load 614(coordTemp) 631: 21(fvec2) Load 624(storeTempPost) ImageWrite 629 630 631 633: 78(ptr) AccessChain 66 56 634: 6(int) Load 633 Store 632(coordTemp) 634 636: 94 Load 96(g_tTex1di2) 637: 6(int) Load 632(coordTemp) 638: 63(ivec4) ImageRead 636 637 639: 6(int) CompositeExtract 638 0 640: 6(int) CompositeExtract 638 1 641: 7(ivec2) CompositeConstruct 639 640 Store 635(storeTempPre) 641 643: 7(ivec2) Load 635(storeTempPre) Store 642(storeTempPost) 643 644: 7(ivec2) Load 642(storeTempPost) 645: 7(ivec2) CompositeConstruct 67 67 646: 7(ivec2) IAdd 644 645 Store 642(storeTempPost) 646 647: 94 Load 96(g_tTex1di2) 648: 6(int) Load 632(coordTemp) 649: 7(ivec2) Load 642(storeTempPost) ImageWrite 647 648 649 651: 78(ptr) AccessChain 66 56 652: 6(int) Load 651 Store 650(coordTemp) 652 654: 105 Load 107(g_tTex1du2) 655: 6(int) Load 650(coordTemp) 656: 111(ivec4) ImageRead 654 655 657: 13(int) CompositeExtract 656 0 658: 13(int) CompositeExtract 656 1 659: 14(ivec2) CompositeConstruct 657 658 Store 653(storeTempPre) 659 661: 14(ivec2) Load 653(storeTempPre) Store 660(storeTempPost) 661 662: 14(ivec2) Load 660(storeTempPost) 663: 7(ivec2) CompositeConstruct 67 67 664: 14(ivec2) ISub 662 663 Store 660(storeTempPost) 664 665: 105 Load 107(g_tTex1du2) 666: 6(int) Load 650(coordTemp) 667: 14(ivec2) Load 660(storeTempPost) ImageWrite 665 666 667 669: 117 Load 119(g_tTex2df2) 672: 42(fvec4) ImageRead 669 671 673: 20(float) CompositeExtract 672 0 674: 20(float) CompositeExtract 672 1 675: 21(fvec2) CompositeConstruct 673 674 Store 668(storeTemp) 675 676: 74 Load 76(g_tTex1df2) 677: 21(fvec2) Load 668(storeTemp) ImageWrite 676 67 677 682: 681(ptr) AccessChain 679(psout) 56 Store 682 680 683:43(PS_OUTPUT) Load 679(psout) ReturnValue 683 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.sample.array.dx10.frag.out000066400000000000000000000665711506534232700242470ustar00rootroot00000000000000hlsl.sample.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 texture ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 texture ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.200000 0:28 0.300000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 texture ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.300000 0:29 0.400000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 texture ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 texture ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 0.400000 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 texture ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.500000 0:33 0.600000 0:33 0.700000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 texture ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.400000 0:36 0.500000 0:36 0.600000 0:36 0.700000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 texture ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.700000 0:37 0.800000 0:37 0.900000 0:37 1.000000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? 'g_tTexcdf4' ( uniform textureCubeArray) 0:? 'g_tTexcdi4' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 texture ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 texture ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.200000 0:28 0.300000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 texture ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.300000 0:29 0.400000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 texture ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 texture ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 0.400000 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 texture ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.500000 0:33 0.600000 0:33 0.700000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 texture ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.400000 0:36 0.500000 0:36 0.600000 0:36 0.700000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 texture ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.700000 0:37 0.800000 0:37 0.900000 0:37 1.000000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? 'g_tTexcdf4' ( uniform textureCubeArray) 0:? 'g_tTexcdi4' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 146 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 138 142 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 32 "txval11" Name 35 "g_tTex1di4" Name 46 "txval12" Name 49 "g_tTex1du4" Name 57 "txval20" Name 60 "g_tTex2df4" Name 68 "txval21" Name 71 "g_tTex2di4" Name 79 "txval22" Name 82 "g_tTex2du4" Name 91 "txval40" Name 94 "g_tTexcdf4" Name 101 "txval41" Name 104 "g_tTexcdi4" Name 111 "txval42" Name 114 "g_tTexcdu4" Name 125 "psout" Name 135 "flattenTemp" Name 138 "@entryPointOutput.Color" Name 142 "@entryPointOutput.Depth" Name 145 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 2 Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 49(g_tTex1du4) Binding 3 Decorate 49(g_tTex1du4) DescriptorSet 0 Decorate 60(g_tTex2df4) Binding 4 Decorate 60(g_tTex2df4) DescriptorSet 0 Decorate 71(g_tTex2di4) Binding 5 Decorate 71(g_tTex2di4) DescriptorSet 0 Decorate 82(g_tTex2du4) Binding 6 Decorate 82(g_tTex2du4) DescriptorSet 0 Decorate 94(g_tTexcdf4) Binding 7 Decorate 94(g_tTexcdf4) DescriptorSet 0 Decorate 104(g_tTexcdi4) Binding 8 Decorate 104(g_tTexcdi4) DescriptorSet 0 Decorate 114(g_tTexcdu4) Binding 9 Decorate 114(g_tTexcdu4) DescriptorSet 0 Decorate 138(@entryPointOutput.Color) Location 0 Decorate 142(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 145(g_tTex1df4a) Binding 1 Decorate 145(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 29: TypeInt 32 1 30: TypeVector 29(int) 4 31: TypePointer Function 30(ivec4) 33: TypeImage 29(int) 1D array sampled format:Unknown 34: TypePointer UniformConstant 33 35(g_tTex1di4): 34(ptr) Variable UniformConstant 38: TypeSampledImage 33 40: 6(float) Constant 1050253722 41: 24(fvec2) ConstantComposite 26 40 43: TypeInt 32 0 44: TypeVector 43(int) 4 45: TypePointer Function 44(ivec4) 47: TypeImage 43(int) 1D array sampled format:Unknown 48: TypePointer UniformConstant 47 49(g_tTex1du4): 48(ptr) Variable UniformConstant 52: TypeSampledImage 47 54: 6(float) Constant 1053609165 55: 24(fvec2) ConstantComposite 40 54 58: TypeImage 6(float) 2D array sampled format:Unknown 59: TypePointer UniformConstant 58 60(g_tTex2df4): 59(ptr) Variable UniformConstant 63: TypeSampledImage 58 65: TypeVector 6(float) 3 66: 65(fvec3) ConstantComposite 25 26 40 69: TypeImage 29(int) 2D array sampled format:Unknown 70: TypePointer UniformConstant 69 71(g_tTex2di4): 70(ptr) Variable UniformConstant 74: TypeSampledImage 69 76: 6(float) Constant 1056964608 77: 65(fvec3) ConstantComposite 40 54 76 80: TypeImage 43(int) 2D array sampled format:Unknown 81: TypePointer UniformConstant 80 82(g_tTex2du4): 81(ptr) Variable UniformConstant 85: TypeSampledImage 80 87: 6(float) Constant 1058642330 88: 6(float) Constant 1060320051 89: 65(fvec3) ConstantComposite 76 87 88 92: TypeImage 6(float) Cube array sampled format:Unknown 93: TypePointer UniformConstant 92 94(g_tTexcdf4): 93(ptr) Variable UniformConstant 97: TypeSampledImage 92 99: 7(fvec4) ConstantComposite 25 26 40 54 102: TypeImage 29(int) Cube array sampled format:Unknown 103: TypePointer UniformConstant 102 104(g_tTexcdi4): 103(ptr) Variable UniformConstant 107: TypeSampledImage 102 109: 7(fvec4) ConstantComposite 54 76 87 88 112: TypeImage 43(int) Cube array sampled format:Unknown 113: TypePointer UniformConstant 112 114(g_tTexcdu4): 113(ptr) Variable UniformConstant 117: TypeSampledImage 112 119: 6(float) Constant 1061997773 120: 6(float) Constant 1063675494 121: 6(float) Constant 1065353216 122: 7(fvec4) ConstantComposite 88 119 120 121 124: TypePointer Function 8(PS_OUTPUT) 126: 29(int) Constant 0 127: 7(fvec4) ConstantComposite 121 121 121 121 129: 29(int) Constant 1 130: TypePointer Function 6(float) 137: TypePointer Output 7(fvec4) 138(@entryPointOutput.Color): 137(ptr) Variable Output 141: TypePointer Output 6(float) 142(@entryPointOutput.Depth): 141(ptr) Variable Output 145(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 135(flattenTemp): 124(ptr) Variable Function 136:8(PS_OUTPUT) FunctionCall 10(@main() Store 135(flattenTemp) 136 139: 12(ptr) AccessChain 135(flattenTemp) 126 140: 7(fvec4) Load 139 Store 138(@entryPointOutput.Color) 140 143: 130(ptr) AccessChain 135(flattenTemp) 129 144: 6(float) Load 143 Store 142(@entryPointOutput.Depth) 144 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 32(txval11): 31(ptr) Variable Function 46(txval12): 45(ptr) Variable Function 57(txval20): 12(ptr) Variable Function 68(txval21): 31(ptr) Variable Function 79(txval22): 45(ptr) Variable Function 91(txval40): 12(ptr) Variable Function 101(txval41): 31(ptr) Variable Function 111(txval42): 45(ptr) Variable Function 125(psout): 124(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 28: 7(fvec4) ImageSampleImplicitLod 23 27 Store 13(txval10) 28 36: 33 Load 35(g_tTex1di4) 37: 18 Load 20(g_sSamp) 39: 38 SampledImage 36 37 42: 30(ivec4) ImageSampleImplicitLod 39 41 Store 32(txval11) 42 50: 47 Load 49(g_tTex1du4) 51: 18 Load 20(g_sSamp) 53: 52 SampledImage 50 51 56: 44(ivec4) ImageSampleImplicitLod 53 55 Store 46(txval12) 56 61: 58 Load 60(g_tTex2df4) 62: 18 Load 20(g_sSamp) 64: 63 SampledImage 61 62 67: 7(fvec4) ImageSampleImplicitLod 64 66 Store 57(txval20) 67 72: 69 Load 71(g_tTex2di4) 73: 18 Load 20(g_sSamp) 75: 74 SampledImage 72 73 78: 30(ivec4) ImageSampleImplicitLod 75 77 Store 68(txval21) 78 83: 80 Load 82(g_tTex2du4) 84: 18 Load 20(g_sSamp) 86: 85 SampledImage 83 84 90: 44(ivec4) ImageSampleImplicitLod 86 89 Store 79(txval22) 90 95: 92 Load 94(g_tTexcdf4) 96: 18 Load 20(g_sSamp) 98: 97 SampledImage 95 96 100: 7(fvec4) ImageSampleImplicitLod 98 99 Store 91(txval40) 100 105: 102 Load 104(g_tTexcdi4) 106: 18 Load 20(g_sSamp) 108: 107 SampledImage 105 106 110: 30(ivec4) ImageSampleImplicitLod 108 109 Store 101(txval41) 110 115: 112 Load 114(g_tTexcdu4) 116: 18 Load 20(g_sSamp) 118: 117 SampledImage 115 116 123: 44(ivec4) ImageSampleImplicitLod 118 122 Store 111(txval42) 123 128: 12(ptr) AccessChain 125(psout) 126 Store 128 127 131: 130(ptr) AccessChain 125(psout) 129 Store 131 121 132:8(PS_OUTPUT) Load 125(psout) ReturnValue 132 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.sample.basic.dx10.frag.out000066400000000000000000001413161506534232700242010ustar00rootroot00000000000000hlsl.sample.basic.dx10.frag WARNING: 0:4: 'immediate sampler state' : unimplemented Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Parameters: 0:? Sequence 0:57 move second child to first child ( temp int) 0:57 CalculateLevelOfDetail: direct index for structure ( temp int) 0:57 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 1 (const int) 0:58 move second child to first child ( temp int) 0:58 CalculateLevelOfDetailUnclamped: direct index for structure ( temp int) 0:58 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 1 (const int) 0:59 move second child to first child ( temp int) 0:59 Gather: direct index for structure ( temp int) 0:59 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 1 (const int) 0:60 move second child to first child ( temp int) 0:60 GetDimensions: direct index for structure ( temp int) 0:60 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:60 Constant: 0:60 4 (const int) 0:60 Constant: 0:60 1 (const int) 0:61 move second child to first child ( temp int) 0:61 GetSamplePosition: direct index for structure ( temp int) 0:61 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:61 Constant: 0:61 5 (const int) 0:61 Constant: 0:61 1 (const int) 0:62 move second child to first child ( temp int) 0:62 Load: direct index for structure ( temp int) 0:62 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:62 Constant: 0:62 6 (const int) 0:62 Constant: 0:62 1 (const int) 0:63 move second child to first child ( temp int) 0:63 Sample: direct index for structure ( temp int) 0:63 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:64 move second child to first child ( temp int) 0:64 SampleBias: direct index for structure ( temp int) 0:64 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:64 Constant: 0:64 7 (const int) 0:64 Constant: 0:64 1 (const int) 0:65 move second child to first child ( temp int) 0:65 SampleCmp: direct index for structure ( temp int) 0:65 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:65 Constant: 0:65 8 (const int) 0:65 Constant: 0:65 1 (const int) 0:66 move second child to first child ( temp int) 0:66 SampleCmpLevelZero: direct index for structure ( temp int) 0:66 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:66 Constant: 0:66 9 (const int) 0:66 Constant: 0:66 1 (const int) 0:67 move second child to first child ( temp int) 0:67 SampleGrad: direct index for structure ( temp int) 0:67 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:67 Constant: 0:67 10 (const int) 0:67 Constant: 0:67 1 (const int) 0:68 move second child to first child ( temp int) 0:68 SampleLevel: direct index for structure ( temp int) 0:68 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:68 Constant: 0:68 11 (const int) 0:68 Constant: 0:68 1 (const int) 0:70 Sequence 0:70 move second child to first child ( temp 4-component vector of float) 0:70 'txval10' ( temp 4-component vector of float) 0:70 texture ( temp 4-component vector of float) 0:70 Construct combined texture-sampler ( temp sampler1D) 0:70 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:70 'g_sSamp' (layout( binding=0) uniform sampler) 0:70 Constant: 0:70 0.100000 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of int) 0:71 'txval11' ( temp 4-component vector of int) 0:71 texture ( temp 4-component vector of int) 0:71 Construct combined texture-sampler ( temp isampler1D) 0:71 'g_tTex1di4' ( uniform itexture1D) 0:71 'g_sSamp' (layout( binding=0) uniform sampler) 0:71 Constant: 0:71 0.200000 0:72 Sequence 0:72 move second child to first child ( temp 4-component vector of uint) 0:72 'txval12' ( temp 4-component vector of uint) 0:72 texture ( temp 4-component vector of uint) 0:72 Construct combined texture-sampler ( temp usampler1D) 0:72 'g_tTex1du4' ( uniform utexture1D) 0:72 'g_sSamp' (layout( binding=0) uniform sampler) 0:72 Constant: 0:72 0.300000 0:74 Sequence 0:74 move second child to first child ( temp 4-component vector of float) 0:74 'txval20' ( temp 4-component vector of float) 0:74 texture ( temp 4-component vector of float) 0:74 Construct combined texture-sampler ( temp sampler2D) 0:74 'g_tTex2df4' ( uniform texture2D) 0:74 'g_sSamp' (layout( binding=0) uniform sampler) 0:74 Constant: 0:74 0.100000 0:74 0.200000 0:75 Sequence 0:75 move second child to first child ( temp 4-component vector of int) 0:75 'txval21' ( temp 4-component vector of int) 0:75 texture ( temp 4-component vector of int) 0:75 Construct combined texture-sampler ( temp isampler2D) 0:75 'g_tTex2di4' ( uniform itexture2D) 0:75 'g_sSamp' (layout( binding=0) uniform sampler) 0:75 Constant: 0:75 0.300000 0:75 0.400000 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of uint) 0:76 'txval22' ( temp 4-component vector of uint) 0:76 texture ( temp 4-component vector of uint) 0:76 Construct combined texture-sampler ( temp usampler2D) 0:76 'g_tTex2du4' ( uniform utexture2D) 0:76 'g_sSamp' (layout( binding=0) uniform sampler) 0:76 Constant: 0:76 0.500000 0:76 0.600000 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of float) 0:78 'txval30' ( temp 4-component vector of float) 0:78 texture ( temp 4-component vector of float) 0:78 Construct combined texture-sampler ( temp sampler3D) 0:78 'g_tTex3df4' ( uniform texture3D) 0:78 'g_sSamp' (layout( binding=0) uniform sampler) 0:78 Constant: 0:78 0.100000 0:78 0.200000 0:78 0.300000 0:79 Sequence 0:79 move second child to first child ( temp 4-component vector of int) 0:79 'txval31' ( temp 4-component vector of int) 0:79 texture ( temp 4-component vector of int) 0:79 Construct combined texture-sampler ( temp isampler3D) 0:79 'g_tTex3di4' ( uniform itexture3D) 0:79 'g_sSamp' (layout( binding=0) uniform sampler) 0:79 Constant: 0:79 0.400000 0:79 0.500000 0:79 0.600000 0:80 Sequence 0:80 move second child to first child ( temp 4-component vector of uint) 0:80 'txval32' ( temp 4-component vector of uint) 0:80 texture ( temp 4-component vector of uint) 0:80 Construct combined texture-sampler ( temp usampler3D) 0:80 'g_tTex3du4' ( uniform utexture3D) 0:80 'g_sSamp' (layout( binding=0) uniform sampler) 0:80 Constant: 0:80 0.700000 0:80 0.800000 0:80 0.900000 0:82 Sequence 0:82 move second child to first child ( temp 4-component vector of float) 0:82 'txval40' ( temp 4-component vector of float) 0:82 texture ( temp 4-component vector of float) 0:82 Construct combined texture-sampler ( temp samplerCube) 0:82 'g_tTexcdf4' ( uniform textureCube) 0:82 'g_sSamp' (layout( binding=0) uniform sampler) 0:82 Constant: 0:82 0.100000 0:82 0.200000 0:82 0.300000 0:83 Sequence 0:83 move second child to first child ( temp 4-component vector of int) 0:83 'txval41' ( temp 4-component vector of int) 0:83 texture ( temp 4-component vector of int) 0:83 Construct combined texture-sampler ( temp isamplerCube) 0:83 'g_tTexcdi4' ( uniform itextureCube) 0:83 'g_sSamp' (layout( binding=0) uniform sampler) 0:83 Constant: 0:83 0.400000 0:83 0.500000 0:83 0.600000 0:84 Sequence 0:84 move second child to first child ( temp 4-component vector of uint) 0:84 'txval42' ( temp 4-component vector of uint) 0:84 texture ( temp 4-component vector of uint) 0:84 Construct combined texture-sampler ( temp usamplerCube) 0:84 'g_tTexcdu4' ( uniform utextureCube) 0:84 'g_sSamp' (layout( binding=0) uniform sampler) 0:84 Constant: 0:84 0.700000 0:84 0.800000 0:84 0.900000 0:86 move second child to first child ( temp 4-component vector of float) 0:86 Color: direct index for structure ( temp 4-component vector of float) 0:86 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1.000000 0:86 1.000000 0:86 1.000000 0:86 1.000000 0:87 move second child to first child ( temp float) 0:87 Depth: direct index for structure ( temp float) 0:87 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 1.000000 0:89 Branch: Return with expression 0:89 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 0 (const int) 0:53 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:53 Depth: direct index for structure ( temp float) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_sSamp2D_b' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Parameters: 0:? Sequence 0:57 move second child to first child ( temp int) 0:57 CalculateLevelOfDetail: direct index for structure ( temp int) 0:57 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 1 (const int) 0:58 move second child to first child ( temp int) 0:58 CalculateLevelOfDetailUnclamped: direct index for structure ( temp int) 0:58 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:58 Constant: 0:58 2 (const int) 0:58 Constant: 0:58 1 (const int) 0:59 move second child to first child ( temp int) 0:59 Gather: direct index for structure ( temp int) 0:59 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:59 Constant: 0:59 3 (const int) 0:59 Constant: 0:59 1 (const int) 0:60 move second child to first child ( temp int) 0:60 GetDimensions: direct index for structure ( temp int) 0:60 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:60 Constant: 0:60 4 (const int) 0:60 Constant: 0:60 1 (const int) 0:61 move second child to first child ( temp int) 0:61 GetSamplePosition: direct index for structure ( temp int) 0:61 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:61 Constant: 0:61 5 (const int) 0:61 Constant: 0:61 1 (const int) 0:62 move second child to first child ( temp int) 0:62 Load: direct index for structure ( temp int) 0:62 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:62 Constant: 0:62 6 (const int) 0:62 Constant: 0:62 1 (const int) 0:63 move second child to first child ( temp int) 0:63 Sample: direct index for structure ( temp int) 0:63 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1 (const int) 0:64 move second child to first child ( temp int) 0:64 SampleBias: direct index for structure ( temp int) 0:64 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:64 Constant: 0:64 7 (const int) 0:64 Constant: 0:64 1 (const int) 0:65 move second child to first child ( temp int) 0:65 SampleCmp: direct index for structure ( temp int) 0:65 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:65 Constant: 0:65 8 (const int) 0:65 Constant: 0:65 1 (const int) 0:66 move second child to first child ( temp int) 0:66 SampleCmpLevelZero: direct index for structure ( temp int) 0:66 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:66 Constant: 0:66 9 (const int) 0:66 Constant: 0:66 1 (const int) 0:67 move second child to first child ( temp int) 0:67 SampleGrad: direct index for structure ( temp int) 0:67 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:67 Constant: 0:67 10 (const int) 0:67 Constant: 0:67 1 (const int) 0:68 move second child to first child ( temp int) 0:68 SampleLevel: direct index for structure ( temp int) 0:68 'mtest' ( temp structure{ temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) 0:68 Constant: 0:68 11 (const int) 0:68 Constant: 0:68 1 (const int) 0:70 Sequence 0:70 move second child to first child ( temp 4-component vector of float) 0:70 'txval10' ( temp 4-component vector of float) 0:70 texture ( temp 4-component vector of float) 0:70 Construct combined texture-sampler ( temp sampler1D) 0:70 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:70 'g_sSamp' (layout( binding=0) uniform sampler) 0:70 Constant: 0:70 0.100000 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of int) 0:71 'txval11' ( temp 4-component vector of int) 0:71 texture ( temp 4-component vector of int) 0:71 Construct combined texture-sampler ( temp isampler1D) 0:71 'g_tTex1di4' ( uniform itexture1D) 0:71 'g_sSamp' (layout( binding=0) uniform sampler) 0:71 Constant: 0:71 0.200000 0:72 Sequence 0:72 move second child to first child ( temp 4-component vector of uint) 0:72 'txval12' ( temp 4-component vector of uint) 0:72 texture ( temp 4-component vector of uint) 0:72 Construct combined texture-sampler ( temp usampler1D) 0:72 'g_tTex1du4' ( uniform utexture1D) 0:72 'g_sSamp' (layout( binding=0) uniform sampler) 0:72 Constant: 0:72 0.300000 0:74 Sequence 0:74 move second child to first child ( temp 4-component vector of float) 0:74 'txval20' ( temp 4-component vector of float) 0:74 texture ( temp 4-component vector of float) 0:74 Construct combined texture-sampler ( temp sampler2D) 0:74 'g_tTex2df4' ( uniform texture2D) 0:74 'g_sSamp' (layout( binding=0) uniform sampler) 0:74 Constant: 0:74 0.100000 0:74 0.200000 0:75 Sequence 0:75 move second child to first child ( temp 4-component vector of int) 0:75 'txval21' ( temp 4-component vector of int) 0:75 texture ( temp 4-component vector of int) 0:75 Construct combined texture-sampler ( temp isampler2D) 0:75 'g_tTex2di4' ( uniform itexture2D) 0:75 'g_sSamp' (layout( binding=0) uniform sampler) 0:75 Constant: 0:75 0.300000 0:75 0.400000 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of uint) 0:76 'txval22' ( temp 4-component vector of uint) 0:76 texture ( temp 4-component vector of uint) 0:76 Construct combined texture-sampler ( temp usampler2D) 0:76 'g_tTex2du4' ( uniform utexture2D) 0:76 'g_sSamp' (layout( binding=0) uniform sampler) 0:76 Constant: 0:76 0.500000 0:76 0.600000 0:78 Sequence 0:78 move second child to first child ( temp 4-component vector of float) 0:78 'txval30' ( temp 4-component vector of float) 0:78 texture ( temp 4-component vector of float) 0:78 Construct combined texture-sampler ( temp sampler3D) 0:78 'g_tTex3df4' ( uniform texture3D) 0:78 'g_sSamp' (layout( binding=0) uniform sampler) 0:78 Constant: 0:78 0.100000 0:78 0.200000 0:78 0.300000 0:79 Sequence 0:79 move second child to first child ( temp 4-component vector of int) 0:79 'txval31' ( temp 4-component vector of int) 0:79 texture ( temp 4-component vector of int) 0:79 Construct combined texture-sampler ( temp isampler3D) 0:79 'g_tTex3di4' ( uniform itexture3D) 0:79 'g_sSamp' (layout( binding=0) uniform sampler) 0:79 Constant: 0:79 0.400000 0:79 0.500000 0:79 0.600000 0:80 Sequence 0:80 move second child to first child ( temp 4-component vector of uint) 0:80 'txval32' ( temp 4-component vector of uint) 0:80 texture ( temp 4-component vector of uint) 0:80 Construct combined texture-sampler ( temp usampler3D) 0:80 'g_tTex3du4' ( uniform utexture3D) 0:80 'g_sSamp' (layout( binding=0) uniform sampler) 0:80 Constant: 0:80 0.700000 0:80 0.800000 0:80 0.900000 0:82 Sequence 0:82 move second child to first child ( temp 4-component vector of float) 0:82 'txval40' ( temp 4-component vector of float) 0:82 texture ( temp 4-component vector of float) 0:82 Construct combined texture-sampler ( temp samplerCube) 0:82 'g_tTexcdf4' ( uniform textureCube) 0:82 'g_sSamp' (layout( binding=0) uniform sampler) 0:82 Constant: 0:82 0.100000 0:82 0.200000 0:82 0.300000 0:83 Sequence 0:83 move second child to first child ( temp 4-component vector of int) 0:83 'txval41' ( temp 4-component vector of int) 0:83 texture ( temp 4-component vector of int) 0:83 Construct combined texture-sampler ( temp isamplerCube) 0:83 'g_tTexcdi4' ( uniform itextureCube) 0:83 'g_sSamp' (layout( binding=0) uniform sampler) 0:83 Constant: 0:83 0.400000 0:83 0.500000 0:83 0.600000 0:84 Sequence 0:84 move second child to first child ( temp 4-component vector of uint) 0:84 'txval42' ( temp 4-component vector of uint) 0:84 texture ( temp 4-component vector of uint) 0:84 Construct combined texture-sampler ( temp usamplerCube) 0:84 'g_tTexcdu4' ( uniform utextureCube) 0:84 'g_sSamp' (layout( binding=0) uniform sampler) 0:84 Constant: 0:84 0.700000 0:84 0.800000 0:84 0.900000 0:86 move second child to first child ( temp 4-component vector of float) 0:86 Color: direct index for structure ( temp 4-component vector of float) 0:86 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1.000000 0:86 1.000000 0:86 1.000000 0:86 1.000000 0:87 move second child to first child ( temp float) 0:87 Depth: direct index for structure ( temp float) 0:87 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 1.000000 0:89 Branch: Return with expression 0:89 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Definition: main( ( temp void) 0:53 Function Parameters: 0:? Sequence 0:53 Sequence 0:53 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:53 Color: direct index for structure ( temp 4-component vector of float) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 0 (const int) 0:53 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:53 Depth: direct index for structure ( temp float) 0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 Constant: 0:53 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_sSamp2D_b' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 188 192 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "MemberTest" MemberName 13(MemberTest) 0 "Sample" MemberName 13(MemberTest) 1 "CalculateLevelOfDetail" MemberName 13(MemberTest) 2 "CalculateLevelOfDetailUnclamped" MemberName 13(MemberTest) 3 "Gather" MemberName 13(MemberTest) 4 "GetDimensions" MemberName 13(MemberTest) 5 "GetSamplePosition" MemberName 13(MemberTest) 6 "Load" MemberName 13(MemberTest) 7 "SampleBias" MemberName 13(MemberTest) 8 "SampleCmp" MemberName 13(MemberTest) 9 "SampleCmpLevelZero" MemberName 13(MemberTest) 10 "SampleGrad" MemberName 13(MemberTest) 11 "SampleLevel" Name 15 "mtest" Name 42 "txval10" Name 45 "g_tTex1df4" Name 49 "g_sSamp" Name 57 "txval11" Name 60 "g_tTex1di4" Name 70 "txval12" Name 73 "g_tTex1du4" Name 80 "txval20" Name 83 "g_tTex2df4" Name 91 "txval21" Name 94 "g_tTex2di4" Name 102 "txval22" Name 105 "g_tTex2du4" Name 114 "txval30" Name 117 "g_tTex3df4" Name 125 "txval31" Name 128 "g_tTex3di4" Name 135 "txval32" Name 138 "g_tTex3du4" Name 148 "txval40" Name 151 "g_tTexcdf4" Name 157 "txval41" Name 160 "g_tTexcdi4" Name 166 "txval42" Name 169 "g_tTexcdu4" Name 176 "psout" Name 185 "flattenTemp" Name 188 "@entryPointOutput.Color" Name 192 "@entryPointOutput.Depth" Name 195 "g_sSamp2d" Name 196 "g_sSamp2D_b" Name 197 "g_tTex1df4a" Decorate 45(g_tTex1df4) Binding 0 Decorate 45(g_tTex1df4) DescriptorSet 0 Decorate 49(g_sSamp) Binding 0 Decorate 49(g_sSamp) DescriptorSet 0 Decorate 60(g_tTex1di4) Binding 2 Decorate 60(g_tTex1di4) DescriptorSet 0 Decorate 73(g_tTex1du4) Binding 3 Decorate 73(g_tTex1du4) DescriptorSet 0 Decorate 83(g_tTex2df4) Binding 4 Decorate 83(g_tTex2df4) DescriptorSet 0 Decorate 94(g_tTex2di4) Binding 5 Decorate 94(g_tTex2di4) DescriptorSet 0 Decorate 105(g_tTex2du4) Binding 6 Decorate 105(g_tTex2du4) DescriptorSet 0 Decorate 117(g_tTex3df4) Binding 7 Decorate 117(g_tTex3df4) DescriptorSet 0 Decorate 128(g_tTex3di4) Binding 8 Decorate 128(g_tTex3di4) DescriptorSet 0 Decorate 138(g_tTex3du4) Binding 9 Decorate 138(g_tTex3du4) DescriptorSet 0 Decorate 151(g_tTexcdf4) Binding 10 Decorate 151(g_tTexcdf4) DescriptorSet 0 Decorate 160(g_tTexcdi4) Binding 11 Decorate 160(g_tTexcdi4) DescriptorSet 0 Decorate 169(g_tTexcdu4) Binding 12 Decorate 169(g_tTexcdu4) DescriptorSet 0 Decorate 188(@entryPointOutput.Color) Location 0 Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 195(g_sSamp2d) Binding 0 Decorate 195(g_sSamp2d) DescriptorSet 0 Decorate 196(g_sSamp2D_b) Binding 0 Decorate 196(g_sSamp2D_b) DescriptorSet 0 Decorate 197(g_tTex1df4a) Binding 1 Decorate 197(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypeInt 32 1 13(MemberTest): TypeStruct 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 14: TypePointer Function 13(MemberTest) 16: 12(int) Constant 1 17: TypePointer Function 12(int) 19: 12(int) Constant 2 21: 12(int) Constant 3 23: 12(int) Constant 4 25: 12(int) Constant 5 27: 12(int) Constant 6 29: 12(int) Constant 0 31: 12(int) Constant 7 33: 12(int) Constant 8 35: 12(int) Constant 9 37: 12(int) Constant 10 39: 12(int) Constant 11 41: TypePointer Function 7(fvec4) 43: TypeImage 6(float) 1D sampled format:Unknown 44: TypePointer UniformConstant 43 45(g_tTex1df4): 44(ptr) Variable UniformConstant 47: TypeSampler 48: TypePointer UniformConstant 47 49(g_sSamp): 48(ptr) Variable UniformConstant 51: TypeSampledImage 43 53: 6(float) Constant 1036831949 55: TypeVector 12(int) 4 56: TypePointer Function 55(ivec4) 58: TypeImage 12(int) 1D sampled format:Unknown 59: TypePointer UniformConstant 58 60(g_tTex1di4): 59(ptr) Variable UniformConstant 63: TypeSampledImage 58 65: 6(float) Constant 1045220557 67: TypeInt 32 0 68: TypeVector 67(int) 4 69: TypePointer Function 68(ivec4) 71: TypeImage 67(int) 1D sampled format:Unknown 72: TypePointer UniformConstant 71 73(g_tTex1du4): 72(ptr) Variable UniformConstant 76: TypeSampledImage 71 78: 6(float) Constant 1050253722 81: TypeImage 6(float) 2D sampled format:Unknown 82: TypePointer UniformConstant 81 83(g_tTex2df4): 82(ptr) Variable UniformConstant 86: TypeSampledImage 81 88: TypeVector 6(float) 2 89: 88(fvec2) ConstantComposite 53 65 92: TypeImage 12(int) 2D sampled format:Unknown 93: TypePointer UniformConstant 92 94(g_tTex2di4): 93(ptr) Variable UniformConstant 97: TypeSampledImage 92 99: 6(float) Constant 1053609165 100: 88(fvec2) ConstantComposite 78 99 103: TypeImage 67(int) 2D sampled format:Unknown 104: TypePointer UniformConstant 103 105(g_tTex2du4): 104(ptr) Variable UniformConstant 108: TypeSampledImage 103 110: 6(float) Constant 1056964608 111: 6(float) Constant 1058642330 112: 88(fvec2) ConstantComposite 110 111 115: TypeImage 6(float) 3D sampled format:Unknown 116: TypePointer UniformConstant 115 117(g_tTex3df4): 116(ptr) Variable UniformConstant 120: TypeSampledImage 115 122: TypeVector 6(float) 3 123: 122(fvec3) ConstantComposite 53 65 78 126: TypeImage 12(int) 3D sampled format:Unknown 127: TypePointer UniformConstant 126 128(g_tTex3di4): 127(ptr) Variable UniformConstant 131: TypeSampledImage 126 133: 122(fvec3) ConstantComposite 99 110 111 136: TypeImage 67(int) 3D sampled format:Unknown 137: TypePointer UniformConstant 136 138(g_tTex3du4): 137(ptr) Variable UniformConstant 141: TypeSampledImage 136 143: 6(float) Constant 1060320051 144: 6(float) Constant 1061997773 145: 6(float) Constant 1063675494 146: 122(fvec3) ConstantComposite 143 144 145 149: TypeImage 6(float) Cube sampled format:Unknown 150: TypePointer UniformConstant 149 151(g_tTexcdf4): 150(ptr) Variable UniformConstant 154: TypeSampledImage 149 158: TypeImage 12(int) Cube sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTexcdi4): 159(ptr) Variable UniformConstant 163: TypeSampledImage 158 167: TypeImage 67(int) Cube sampled format:Unknown 168: TypePointer UniformConstant 167 169(g_tTexcdu4): 168(ptr) Variable UniformConstant 172: TypeSampledImage 167 175: TypePointer Function 8(PS_OUTPUT) 177: 6(float) Constant 1065353216 178: 7(fvec4) ConstantComposite 177 177 177 177 180: TypePointer Function 6(float) 187: TypePointer Output 7(fvec4) 188(@entryPointOutput.Color): 187(ptr) Variable Output 191: TypePointer Output 6(float) 192(@entryPointOutput.Depth): 191(ptr) Variable Output 195(g_sSamp2d): 48(ptr) Variable UniformConstant 196(g_sSamp2D_b): 48(ptr) Variable UniformConstant 197(g_tTex1df4a): 44(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 185(flattenTemp): 175(ptr) Variable Function 186:8(PS_OUTPUT) FunctionCall 10(@main() Store 185(flattenTemp) 186 189: 41(ptr) AccessChain 185(flattenTemp) 29 190: 7(fvec4) Load 189 Store 188(@entryPointOutput.Color) 190 193: 180(ptr) AccessChain 185(flattenTemp) 16 194: 6(float) Load 193 Store 192(@entryPointOutput.Depth) 194 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 15(mtest): 14(ptr) Variable Function 42(txval10): 41(ptr) Variable Function 57(txval11): 56(ptr) Variable Function 70(txval12): 69(ptr) Variable Function 80(txval20): 41(ptr) Variable Function 91(txval21): 56(ptr) Variable Function 102(txval22): 69(ptr) Variable Function 114(txval30): 41(ptr) Variable Function 125(txval31): 56(ptr) Variable Function 135(txval32): 69(ptr) Variable Function 148(txval40): 41(ptr) Variable Function 157(txval41): 56(ptr) Variable Function 166(txval42): 69(ptr) Variable Function 176(psout): 175(ptr) Variable Function 18: 17(ptr) AccessChain 15(mtest) 16 Store 18 16 20: 17(ptr) AccessChain 15(mtest) 19 Store 20 16 22: 17(ptr) AccessChain 15(mtest) 21 Store 22 16 24: 17(ptr) AccessChain 15(mtest) 23 Store 24 16 26: 17(ptr) AccessChain 15(mtest) 25 Store 26 16 28: 17(ptr) AccessChain 15(mtest) 27 Store 28 16 30: 17(ptr) AccessChain 15(mtest) 29 Store 30 16 32: 17(ptr) AccessChain 15(mtest) 31 Store 32 16 34: 17(ptr) AccessChain 15(mtest) 33 Store 34 16 36: 17(ptr) AccessChain 15(mtest) 35 Store 36 16 38: 17(ptr) AccessChain 15(mtest) 37 Store 38 16 40: 17(ptr) AccessChain 15(mtest) 39 Store 40 16 46: 43 Load 45(g_tTex1df4) 50: 47 Load 49(g_sSamp) 52: 51 SampledImage 46 50 54: 7(fvec4) ImageSampleImplicitLod 52 53 Store 42(txval10) 54 61: 58 Load 60(g_tTex1di4) 62: 47 Load 49(g_sSamp) 64: 63 SampledImage 61 62 66: 55(ivec4) ImageSampleImplicitLod 64 65 Store 57(txval11) 66 74: 71 Load 73(g_tTex1du4) 75: 47 Load 49(g_sSamp) 77: 76 SampledImage 74 75 79: 68(ivec4) ImageSampleImplicitLod 77 78 Store 70(txval12) 79 84: 81 Load 83(g_tTex2df4) 85: 47 Load 49(g_sSamp) 87: 86 SampledImage 84 85 90: 7(fvec4) ImageSampleImplicitLod 87 89 Store 80(txval20) 90 95: 92 Load 94(g_tTex2di4) 96: 47 Load 49(g_sSamp) 98: 97 SampledImage 95 96 101: 55(ivec4) ImageSampleImplicitLod 98 100 Store 91(txval21) 101 106: 103 Load 105(g_tTex2du4) 107: 47 Load 49(g_sSamp) 109: 108 SampledImage 106 107 113: 68(ivec4) ImageSampleImplicitLod 109 112 Store 102(txval22) 113 118: 115 Load 117(g_tTex3df4) 119: 47 Load 49(g_sSamp) 121: 120 SampledImage 118 119 124: 7(fvec4) ImageSampleImplicitLod 121 123 Store 114(txval30) 124 129: 126 Load 128(g_tTex3di4) 130: 47 Load 49(g_sSamp) 132: 131 SampledImage 129 130 134: 55(ivec4) ImageSampleImplicitLod 132 133 Store 125(txval31) 134 139: 136 Load 138(g_tTex3du4) 140: 47 Load 49(g_sSamp) 142: 141 SampledImage 139 140 147: 68(ivec4) ImageSampleImplicitLod 142 146 Store 135(txval32) 147 152: 149 Load 151(g_tTexcdf4) 153: 47 Load 49(g_sSamp) 155: 154 SampledImage 152 153 156: 7(fvec4) ImageSampleImplicitLod 155 123 Store 148(txval40) 156 161: 158 Load 160(g_tTexcdi4) 162: 47 Load 49(g_sSamp) 164: 163 SampledImage 161 162 165: 55(ivec4) ImageSampleImplicitLod 164 133 Store 157(txval41) 165 170: 167 Load 169(g_tTexcdu4) 171: 47 Load 49(g_sSamp) 173: 172 SampledImage 170 171 174: 68(ivec4) ImageSampleImplicitLod 173 146 Store 166(txval42) 174 179: 41(ptr) AccessChain 176(psout) 29 Store 179 178 181: 180(ptr) AccessChain 176(psout) 16 Store 181 177 182:8(PS_OUTPUT) Load 176(psout) ReturnValue 182 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.sample.dx9.frag.out000066400000000000000000000663661506534232700230640ustar00rootroot00000000000000hlsl.sample.dx9.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:15 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Function Parameters: 0:? Scope 0:16 Sequence 0:16 Declare ( temp void) 0:16 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'ColorOut' ( temp 4-component vector of float) 0:18 Constant: 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:20 add second child into first child ( temp 4-component vector of float) 0:20 'ColorOut' ( temp 4-component vector of float) 0:20 texture ( temp 4-component vector of float) 0:20 'g_sam' (layout( binding=0) uniform sampler2D) 0:20 Constant: 0:20 0.400000 0:20 0.300000 0:21 add second child into first child ( temp 4-component vector of float) 0:21 'ColorOut' ( temp 4-component vector of float) 0:21 texture ( temp 4-component vector of float) 0:21 'g_sam1D' (layout( binding=1) uniform sampler1D) 0:21 Constant: 0:21 0.500000 0:22 add second child into first child ( temp 4-component vector of float) 0:22 'ColorOut' ( temp 4-component vector of float) 0:22 texture ( temp 4-component vector of float) 0:22 'g_sam2D' (layout( binding=2) uniform sampler2D) 0:22 Constant: 0:22 0.500000 0:22 0.600000 0:23 add second child into first child ( temp 4-component vector of float) 0:23 'ColorOut' ( temp 4-component vector of float) 0:23 texture ( temp 4-component vector of float) 0:23 'g_sam3D' (layout( binding=3) uniform sampler3D) 0:23 Constant: 0:23 0.500000 0:23 0.600000 0:23 0.400000 0:24 add second child into first child ( temp 4-component vector of float) 0:24 'ColorOut' ( temp 4-component vector of float) 0:24 texture ( temp 4-component vector of float) 0:24 'g_samCube' (layout( binding=4) uniform samplerCube) 0:24 Constant: 0:24 0.500000 0:24 0.600000 0:24 0.400000 0:26 add second child into first child ( temp 4-component vector of float) 0:26 'ColorOut' ( temp 4-component vector of float) 0:26 textureLod ( temp 4-component vector of float) 0:26 'g_sam' (layout( binding=0) uniform sampler2D) 0:26 Construct vec2 ( temp 2-component vector of float) 0:26 Constant: 0:26 0.400000 0:26 0.300000 0:26 0.000000 0:26 0.000000 0:26 direct index ( temp float) 0:26 Constant: 0:26 0.400000 0:26 0.300000 0:26 0.000000 0:26 0.000000 0:26 Constant: 0:26 3 (const int) 0:27 add second child into first child ( temp 4-component vector of float) 0:27 'ColorOut' ( temp 4-component vector of float) 0:27 textureLod ( temp 4-component vector of float) 0:27 'g_sam1D' (layout( binding=1) uniform sampler1D) 0:27 Construct float ( temp float) 0:27 Constant: 0:27 0.500000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 direct index ( temp float) 0:27 Constant: 0:27 0.500000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 Constant: 0:27 3 (const int) 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'ColorOut' ( temp 4-component vector of float) 0:28 textureLod ( temp 4-component vector of float) 0:28 'g_sam2D' (layout( binding=2) uniform sampler2D) 0:28 Construct vec2 ( temp 2-component vector of float) 0:28 Constant: 0:28 0.500000 0:28 0.600000 0:28 0.000000 0:28 0.000000 0:28 direct index ( temp float) 0:28 Constant: 0:28 0.500000 0:28 0.600000 0:28 0.000000 0:28 0.000000 0:28 Constant: 0:28 3 (const int) 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'ColorOut' ( temp 4-component vector of float) 0:29 textureLod ( temp 4-component vector of float) 0:29 'g_sam3D' (layout( binding=3) uniform sampler3D) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.400000 0:29 0.000000 0:29 direct index ( temp float) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.400000 0:29 0.000000 0:29 Constant: 0:29 3 (const int) 0:30 add second child into first child ( temp 4-component vector of float) 0:30 'ColorOut' ( temp 4-component vector of float) 0:30 textureLod ( temp 4-component vector of float) 0:30 'g_samCube' (layout( binding=4) uniform samplerCube) 0:30 Construct vec3 ( temp 3-component vector of float) 0:30 Constant: 0:30 0.500000 0:30 0.600000 0:30 0.400000 0:30 0.000000 0:30 direct index ( temp float) 0:30 Constant: 0:30 0.500000 0:30 0.600000 0:30 0.400000 0:30 0.000000 0:30 Constant: 0:30 3 (const int) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 Color: direct index for structure ( temp 4-component vector of float) 0:32 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:32 Constant: 0:32 0 (const int) 0:32 divide ( temp 4-component vector of float) 0:32 'ColorOut' ( temp 4-component vector of float) 0:32 Constant: 0:32 10.000000 0:33 move second child to first child ( temp float) 0:33 Depth: direct index for structure ( temp float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1.000000 0:35 Branch: Return with expression 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:15 Color: direct index for structure ( temp 4-component vector of float) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Constant: 0:15 0 (const int) 0:15 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:15 Depth: direct index for structure ( temp float) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Constant: 0:15 1 (const int) 0:? Linker Objects 0:? 'g_sam' (layout( binding=0) uniform sampler2D) 0:? 'g_sam1D' (layout( binding=1) uniform sampler1D) 0:? 'g_sam2D' (layout( binding=2) uniform sampler2D) 0:? 'g_sam3D' (layout( binding=3) uniform sampler3D) 0:? 'g_samCube' (layout( binding=4) uniform samplerCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:15 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Function Parameters: 0:? Scope 0:16 Sequence 0:16 Declare ( temp void) 0:16 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'ColorOut' ( temp 4-component vector of float) 0:18 Constant: 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:20 add second child into first child ( temp 4-component vector of float) 0:20 'ColorOut' ( temp 4-component vector of float) 0:20 texture ( temp 4-component vector of float) 0:20 'g_sam' (layout( binding=0) uniform sampler2D) 0:20 Constant: 0:20 0.400000 0:20 0.300000 0:21 add second child into first child ( temp 4-component vector of float) 0:21 'ColorOut' ( temp 4-component vector of float) 0:21 texture ( temp 4-component vector of float) 0:21 'g_sam1D' (layout( binding=1) uniform sampler1D) 0:21 Constant: 0:21 0.500000 0:22 add second child into first child ( temp 4-component vector of float) 0:22 'ColorOut' ( temp 4-component vector of float) 0:22 texture ( temp 4-component vector of float) 0:22 'g_sam2D' (layout( binding=2) uniform sampler2D) 0:22 Constant: 0:22 0.500000 0:22 0.600000 0:23 add second child into first child ( temp 4-component vector of float) 0:23 'ColorOut' ( temp 4-component vector of float) 0:23 texture ( temp 4-component vector of float) 0:23 'g_sam3D' (layout( binding=3) uniform sampler3D) 0:23 Constant: 0:23 0.500000 0:23 0.600000 0:23 0.400000 0:24 add second child into first child ( temp 4-component vector of float) 0:24 'ColorOut' ( temp 4-component vector of float) 0:24 texture ( temp 4-component vector of float) 0:24 'g_samCube' (layout( binding=4) uniform samplerCube) 0:24 Constant: 0:24 0.500000 0:24 0.600000 0:24 0.400000 0:26 add second child into first child ( temp 4-component vector of float) 0:26 'ColorOut' ( temp 4-component vector of float) 0:26 textureLod ( temp 4-component vector of float) 0:26 'g_sam' (layout( binding=0) uniform sampler2D) 0:26 Construct vec2 ( temp 2-component vector of float) 0:26 Constant: 0:26 0.400000 0:26 0.300000 0:26 0.000000 0:26 0.000000 0:26 direct index ( temp float) 0:26 Constant: 0:26 0.400000 0:26 0.300000 0:26 0.000000 0:26 0.000000 0:26 Constant: 0:26 3 (const int) 0:27 add second child into first child ( temp 4-component vector of float) 0:27 'ColorOut' ( temp 4-component vector of float) 0:27 textureLod ( temp 4-component vector of float) 0:27 'g_sam1D' (layout( binding=1) uniform sampler1D) 0:27 Construct float ( temp float) 0:27 Constant: 0:27 0.500000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 direct index ( temp float) 0:27 Constant: 0:27 0.500000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 Constant: 0:27 3 (const int) 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'ColorOut' ( temp 4-component vector of float) 0:28 textureLod ( temp 4-component vector of float) 0:28 'g_sam2D' (layout( binding=2) uniform sampler2D) 0:28 Construct vec2 ( temp 2-component vector of float) 0:28 Constant: 0:28 0.500000 0:28 0.600000 0:28 0.000000 0:28 0.000000 0:28 direct index ( temp float) 0:28 Constant: 0:28 0.500000 0:28 0.600000 0:28 0.000000 0:28 0.000000 0:28 Constant: 0:28 3 (const int) 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'ColorOut' ( temp 4-component vector of float) 0:29 textureLod ( temp 4-component vector of float) 0:29 'g_sam3D' (layout( binding=3) uniform sampler3D) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.400000 0:29 0.000000 0:29 direct index ( temp float) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.400000 0:29 0.000000 0:29 Constant: 0:29 3 (const int) 0:30 add second child into first child ( temp 4-component vector of float) 0:30 'ColorOut' ( temp 4-component vector of float) 0:30 textureLod ( temp 4-component vector of float) 0:30 'g_samCube' (layout( binding=4) uniform samplerCube) 0:30 Construct vec3 ( temp 3-component vector of float) 0:30 Constant: 0:30 0.500000 0:30 0.600000 0:30 0.400000 0:30 0.000000 0:30 direct index ( temp float) 0:30 Constant: 0:30 0.500000 0:30 0.600000 0:30 0.400000 0:30 0.000000 0:30 Constant: 0:30 3 (const int) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 Color: direct index for structure ( temp 4-component vector of float) 0:32 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:32 Constant: 0:32 0 (const int) 0:32 divide ( temp 4-component vector of float) 0:32 'ColorOut' ( temp 4-component vector of float) 0:32 Constant: 0:32 10.000000 0:33 move second child to first child ( temp float) 0:33 Depth: direct index for structure ( temp float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1.000000 0:35 Branch: Return with expression 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:15 Color: direct index for structure ( temp 4-component vector of float) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Constant: 0:15 0 (const int) 0:15 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:15 Depth: direct index for structure ( temp float) 0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:15 Constant: 0:15 1 (const int) 0:? Linker Objects 0:? 'g_sam' (layout( binding=0) uniform sampler2D) 0:? 'g_sam1D' (layout( binding=1) uniform sampler1D) 0:? 'g_sam2D' (layout( binding=2) uniform sampler2D) 0:? 'g_sam3D' (layout( binding=3) uniform sampler3D) 0:? 'g_samCube' (layout( binding=4) uniform samplerCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 135 Capability Shader Capability Sampled1D 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "main" 128 132 ExecutionMode 5 OriginUpperLeft ExecutionMode 5 DepthReplacing 1: String "" Source HLSL 500 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 " Name 5 "main" Name 9 "PS_OUTPUT" MemberName 9(PS_OUTPUT) 0 "Color" MemberName 9(PS_OUTPUT) 1 "Depth" Name 11 "@main(" Name 14 "psout" Name 16 "ColorOut" Name 22 "g_sam" Name 34 "g_sam1D" Name 40 "g_sam2D" Name 50 "g_sam3D" Name 60 "g_samCube" Name 125 "flattenTemp" Name 128 "@entryPointOutput.Color" Name 132 "@entryPointOutput.Depth" Decorate 22(g_sam) Binding 0 Decorate 22(g_sam) DescriptorSet 0 Decorate 34(g_sam1D) Binding 1 Decorate 34(g_sam1D) DescriptorSet 0 Decorate 40(g_sam2D) Binding 2 Decorate 40(g_sam2D) DescriptorSet 0 Decorate 50(g_sam3D) Binding 3 Decorate 50(g_sam3D) DescriptorSet 0 Decorate 60(g_samCube) Binding 4 Decorate 60(g_samCube) DescriptorSet 0 Decorate 128(@entryPointOutput.Color) Location 0 Decorate 132(@entryPointOutput.Depth) BuiltIn FragDepth 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 8: TypeVector 7(float) 4 9(PS_OUTPUT): TypeStruct 8(fvec4) 7(float) 10: TypeFunction 9(PS_OUTPUT) 13: TypePointer Function 9(PS_OUTPUT) 15: TypePointer Function 8(fvec4) 17: 7(float) Constant 0 18: 8(fvec4) ConstantComposite 17 17 17 17 19: TypeImage 7(float) 2D sampled format:Unknown 20: TypeSampledImage 19 21: TypePointer UniformConstant 20 22(g_sam): 21(ptr) Variable UniformConstant 24: TypeVector 7(float) 2 25: 7(float) Constant 1053609165 26: 7(float) Constant 1050253722 27: 24(fvec2) ConstantComposite 25 26 31: TypeImage 7(float) 1D sampled format:Unknown 32: TypeSampledImage 31 33: TypePointer UniformConstant 32 34(g_sam1D): 33(ptr) Variable UniformConstant 36: 7(float) Constant 1056964608 40(g_sam2D): 21(ptr) Variable UniformConstant 42: 7(float) Constant 1058642330 43: 24(fvec2) ConstantComposite 36 42 47: TypeImage 7(float) 3D sampled format:Unknown 48: TypeSampledImage 47 49: TypePointer UniformConstant 48 50(g_sam3D): 49(ptr) Variable UniformConstant 52: TypeVector 7(float) 3 53: 52(fvec3) ConstantComposite 36 42 25 57: TypeImage 7(float) Cube sampled format:Unknown 58: TypeSampledImage 57 59: TypePointer UniformConstant 58 60(g_samCube): 59(ptr) Variable UniformConstant 66: 8(fvec4) ConstantComposite 25 26 17 17 70: TypeInt 32 0 71: 70(int) Constant 3 77: 8(fvec4) ConstantComposite 36 17 17 17 84: 8(fvec4) ConstantComposite 36 42 17 17 93: 8(fvec4) ConstantComposite 36 42 25 17 111: TypeInt 32 1 112: 111(int) Constant 0 114: 7(float) Constant 1092616192 118: 111(int) Constant 1 119: 7(float) Constant 1065353216 120: TypePointer Function 7(float) 127: TypePointer Output 8(fvec4) 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): 13(ptr) Variable Function Line 1 15 0 126:9(PS_OUTPUT) FunctionCall 11(@main() Store 125(flattenTemp) 126 129: 15(ptr) AccessChain 125(flattenTemp) 112 130: 8(fvec4) Load 129 Store 128(@entryPointOutput.Color) 130 133: 120(ptr) AccessChain 125(flattenTemp) 118 134: 7(float) Load 133 Store 132(@entryPointOutput.Depth) 134 Return FunctionEnd Line 1 15 1 11(@main():9(PS_OUTPUT) Function None 10 12: Label 14(psout): 13(ptr) Variable Function 16(ColorOut): 15(ptr) Variable Function Line 1 18 0 Store 16(ColorOut) 18 Line 1 20 0 23: 20 Load 22(g_sam) 28: 8(fvec4) ImageSampleImplicitLod 23 27 29: 8(fvec4) Load 16(ColorOut) 30: 8(fvec4) FAdd 29 28 Store 16(ColorOut) 30 Line 1 21 0 35: 32 Load 34(g_sam1D) 37: 8(fvec4) ImageSampleImplicitLod 35 36 38: 8(fvec4) Load 16(ColorOut) 39: 8(fvec4) FAdd 38 37 Store 16(ColorOut) 39 Line 1 22 0 41: 20 Load 40(g_sam2D) 44: 8(fvec4) ImageSampleImplicitLod 41 43 45: 8(fvec4) Load 16(ColorOut) 46: 8(fvec4) FAdd 45 44 Store 16(ColorOut) 46 Line 1 23 0 51: 48 Load 50(g_sam3D) 54: 8(fvec4) ImageSampleImplicitLod 51 53 55: 8(fvec4) Load 16(ColorOut) 56: 8(fvec4) FAdd 55 54 Store 16(ColorOut) 56 Line 1 24 0 61: 58 Load 60(g_samCube) 62: 8(fvec4) ImageSampleImplicitLod 61 53 63: 8(fvec4) Load 16(ColorOut) 64: 8(fvec4) FAdd 63 62 Store 16(ColorOut) 64 Line 1 26 0 65: 20 Load 22(g_sam) 67: 7(float) CompositeExtract 66 0 68: 7(float) CompositeExtract 66 1 69: 24(fvec2) CompositeConstruct 67 68 72: 7(float) CompositeExtract 66 3 73: 8(fvec4) ImageSampleExplicitLod 65 69 Lod 72 74: 8(fvec4) Load 16(ColorOut) 75: 8(fvec4) FAdd 74 73 Store 16(ColorOut) 75 Line 1 27 0 76: 32 Load 34(g_sam1D) 78: 7(float) CompositeExtract 77 0 79: 7(float) CompositeExtract 77 3 80: 8(fvec4) ImageSampleExplicitLod 76 78 Lod 79 81: 8(fvec4) Load 16(ColorOut) 82: 8(fvec4) FAdd 81 80 Store 16(ColorOut) 82 Line 1 28 0 83: 20 Load 40(g_sam2D) 85: 7(float) CompositeExtract 84 0 86: 7(float) CompositeExtract 84 1 87: 24(fvec2) CompositeConstruct 85 86 88: 7(float) CompositeExtract 84 3 89: 8(fvec4) ImageSampleExplicitLod 83 87 Lod 88 90: 8(fvec4) Load 16(ColorOut) 91: 8(fvec4) FAdd 90 89 Store 16(ColorOut) 91 Line 1 29 0 92: 48 Load 50(g_sam3D) 94: 7(float) CompositeExtract 93 0 95: 7(float) CompositeExtract 93 1 96: 7(float) CompositeExtract 93 2 97: 52(fvec3) CompositeConstruct 94 95 96 98: 7(float) CompositeExtract 93 3 99: 8(fvec4) ImageSampleExplicitLod 92 97 Lod 98 100: 8(fvec4) Load 16(ColorOut) 101: 8(fvec4) FAdd 100 99 Store 16(ColorOut) 101 Line 1 30 0 102: 58 Load 60(g_samCube) 103: 7(float) CompositeExtract 93 0 104: 7(float) CompositeExtract 93 1 105: 7(float) CompositeExtract 93 2 106: 52(fvec3) CompositeConstruct 103 104 105 107: 7(float) CompositeExtract 93 3 108: 8(fvec4) ImageSampleExplicitLod 102 106 Lod 107 109: 8(fvec4) Load 16(ColorOut) 110: 8(fvec4) FAdd 109 108 Store 16(ColorOut) 110 Line 1 32 0 113: 8(fvec4) Load 16(ColorOut) 115: 8(fvec4) CompositeConstruct 114 114 114 114 116: 8(fvec4) FDiv 113 115 117: 15(ptr) AccessChain 14(psout) 112 Store 117 116 Line 1 33 0 121: 120(ptr) AccessChain 14(psout) 118 Store 121 119 Line 1 35 0 122:9(PS_OUTPUT) Load 14(psout) ReturnValue 122 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.sample.dx9.vert.out000066400000000000000000000270071506534232700231120ustar00rootroot00000000000000hlsl.sample.dx9.vert Shader version: 500 0:? Sequence 0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:11 Function Parameters: 0:? Scope 0:12 Sequence 0:12 Declare ( temp void) 0:12 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'PosOut' ( temp 4-component vector of float) 0:14 Constant: 0:14 0.000000 0:14 0.000000 0:14 0.000000 0:14 0.000000 0:16 add second child into first child ( temp 4-component vector of float) 0:16 'PosOut' ( temp 4-component vector of float) 0:16 textureLod ( temp 4-component vector of float) 0:16 'g_sam' (layout( binding=0) uniform sampler2D) 0:16 Construct vec2 ( temp 2-component vector of float) 0:16 Constant: 0:16 0.300000 0:16 0.400000 0:16 0.000000 0:16 1.000000 0:16 direct index ( temp float) 0:16 Constant: 0:16 0.300000 0:16 0.400000 0:16 0.000000 0:16 1.000000 0:16 Constant: 0:16 3 (const int) 0:17 add second child into first child ( temp 4-component vector of float) 0:17 'PosOut' ( temp 4-component vector of float) 0:17 textureLod ( temp 4-component vector of float) 0:17 'g_sam2D' (layout( binding=1) uniform sampler2D) 0:17 Construct vec2 ( temp 2-component vector of float) 0:17 Constant: 0:17 0.500000 0:17 0.600000 0:17 0.000000 0:17 1.000000 0:17 direct index ( temp float) 0:17 Constant: 0:17 0.500000 0:17 0.600000 0:17 0.000000 0:17 1.000000 0:17 Constant: 0:17 3 (const int) 0:19 move second child to first child ( temp 4-component vector of float) 0:19 Pos: direct index for structure ( temp 4-component vector of float) 0:19 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:19 Constant: 0:19 0 (const int) 0:19 divide ( temp 4-component vector of float) 0:19 'PosOut' ( temp 4-component vector of float) 0:19 Constant: 0:19 2.000000 0:21 Branch: Return with expression 0:21 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:11 Pos: direct index for structure ( temp 4-component vector of float) 0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'g_sam' (layout( binding=0) uniform sampler2D) 0:? 'g_sam2D' (layout( binding=1) uniform sampler2D) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:11 Function Parameters: 0:? Scope 0:12 Sequence 0:12 Declare ( temp void) 0:12 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'PosOut' ( temp 4-component vector of float) 0:14 Constant: 0:14 0.000000 0:14 0.000000 0:14 0.000000 0:14 0.000000 0:16 add second child into first child ( temp 4-component vector of float) 0:16 'PosOut' ( temp 4-component vector of float) 0:16 textureLod ( temp 4-component vector of float) 0:16 'g_sam' (layout( binding=0) uniform sampler2D) 0:16 Construct vec2 ( temp 2-component vector of float) 0:16 Constant: 0:16 0.300000 0:16 0.400000 0:16 0.000000 0:16 1.000000 0:16 direct index ( temp float) 0:16 Constant: 0:16 0.300000 0:16 0.400000 0:16 0.000000 0:16 1.000000 0:16 Constant: 0:16 3 (const int) 0:17 add second child into first child ( temp 4-component vector of float) 0:17 'PosOut' ( temp 4-component vector of float) 0:17 textureLod ( temp 4-component vector of float) 0:17 'g_sam2D' (layout( binding=1) uniform sampler2D) 0:17 Construct vec2 ( temp 2-component vector of float) 0:17 Constant: 0:17 0.500000 0:17 0.600000 0:17 0.000000 0:17 1.000000 0:17 direct index ( temp float) 0:17 Constant: 0:17 0.500000 0:17 0.600000 0:17 0.000000 0:17 1.000000 0:17 Constant: 0:17 3 (const int) 0:19 move second child to first child ( temp 4-component vector of float) 0:19 Pos: direct index for structure ( temp 4-component vector of float) 0:19 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:19 Constant: 0:19 0 (const int) 0:19 divide ( temp 4-component vector of float) 0:19 'PosOut' ( temp 4-component vector of float) 0:19 Constant: 0:19 2.000000 0:21 Branch: Return with expression 0:21 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:11 Pos: direct index for structure ( temp 4-component vector of float) 0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'g_sam' (layout( binding=0) uniform sampler2D) 0:? 'g_sam2D' (layout( binding=1) uniform sampler2D) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 5 "main" 61 1: String "" Source HLSL 500 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 " Name 5 "main" Name 9 "VS_OUTPUT" MemberName 9(VS_OUTPUT) 0 "Pos" Name 11 "@main(" Name 14 "vsout" Name 16 "PosOut" Name 22 "g_sam" Name 38 "g_sam2D" Name 61 "@entryPointOutput.Pos" Decorate 22(g_sam) Binding 0 Decorate 22(g_sam) DescriptorSet 0 Decorate 38(g_sam2D) Binding 1 Decorate 38(g_sam2D) DescriptorSet 0 Decorate 61(@entryPointOutput.Pos) BuiltIn Position 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 8: TypeVector 7(float) 4 9(VS_OUTPUT): TypeStruct 8(fvec4) 10: TypeFunction 9(VS_OUTPUT) 13: TypePointer Function 9(VS_OUTPUT) 15: TypePointer Function 8(fvec4) 17: 7(float) Constant 0 18: 8(fvec4) ConstantComposite 17 17 17 17 19: TypeImage 7(float) 2D sampled format:Unknown 20: TypeSampledImage 19 21: TypePointer UniformConstant 20 22(g_sam): 21(ptr) Variable UniformConstant 24: 7(float) Constant 1050253722 25: 7(float) Constant 1053609165 26: 7(float) Constant 1065353216 27: 8(fvec4) ConstantComposite 24 25 17 26 28: TypeVector 7(float) 2 32: TypeInt 32 0 33: 32(int) Constant 3 38(g_sam2D): 21(ptr) Variable UniformConstant 40: 7(float) Constant 1056964608 41: 7(float) Constant 1058642330 42: 8(fvec4) ConstantComposite 40 41 17 26 50: TypeInt 32 1 51: 50(int) Constant 0 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 62:9(VS_OUTPUT) FunctionCall 11(@main() 63: 8(fvec4) CompositeExtract 62 0 Store 61(@entryPointOutput.Pos) 63 Return FunctionEnd Line 1 11 1 11(@main():9(VS_OUTPUT) Function None 10 12: Label 14(vsout): 13(ptr) Variable Function 16(PosOut): 15(ptr) Variable Function Line 1 14 0 Store 16(PosOut) 18 Line 1 16 0 23: 20 Load 22(g_sam) 29: 7(float) CompositeExtract 27 0 30: 7(float) CompositeExtract 27 1 31: 28(fvec2) CompositeConstruct 29 30 34: 7(float) CompositeExtract 27 3 35: 8(fvec4) ImageSampleExplicitLod 23 31 Lod 34 36: 8(fvec4) Load 16(PosOut) 37: 8(fvec4) FAdd 36 35 Store 16(PosOut) 37 Line 1 17 0 39: 20 Load 38(g_sam2D) 43: 7(float) CompositeExtract 42 0 44: 7(float) CompositeExtract 42 1 45: 28(fvec2) CompositeConstruct 43 44 46: 7(float) CompositeExtract 42 3 47: 8(fvec4) ImageSampleExplicitLod 39 45 Lod 46 48: 8(fvec4) Load 16(PosOut) 49: 8(fvec4) FAdd 48 47 Store 16(PosOut) 49 Line 1 19 0 52: 8(fvec4) Load 16(PosOut) 54: 8(fvec4) CompositeConstruct 53 53 53 53 55: 8(fvec4) FDiv 52 54 56: 15(ptr) AccessChain 14(vsout) 51 Store 56 55 Line 1 21 0 57:9(VS_OUTPUT) Load 14(vsout) ReturnValue 57 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.sample.offset.dx10.frag.out000066400000000000000000000737461506534232700244210ustar00rootroot00000000000000hlsl.sample.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 1 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 1 (const int) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureOffset ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureOffset ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureOffset ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureOffset ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureOffset ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureOffset ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp float) 0:46 Depth: direct index for structure ( temp float) 0:46 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 1 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 1 (const int) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureOffset ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureOffset ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureOffset ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureOffset ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureOffset ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureOffset ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp float) 0:46 Depth: direct index for structure ( temp float) 0:46 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 161 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 144 148 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 30 "txval11" Name 33 "g_tTex1di4" Name 43 "txval12" Name 46 "g_tTex1du4" Name 53 "txval20" Name 56 "g_tTex2df4" Name 67 "txval21" Name 70 "g_tTex2di4" Name 79 "txval22" Name 82 "g_tTex2du4" Name 93 "txval30" Name 96 "g_tTex3df4" Name 106 "txval31" Name 109 "g_tTex3di4" Name 117 "txval32" Name 120 "g_tTex3du4" Name 132 "psout" Name 141 "flattenTemp" Name 144 "@entryPointOutput.Color" Name 148 "@entryPointOutput.Depth" Name 151 "g_tTex1df4a" Name 154 "g_tTexcdf4" Name 157 "g_tTexcdi4" Name 160 "g_tTexcdu4" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4) Binding 2 Decorate 33(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 3 Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 56(g_tTex2df4) Binding 4 Decorate 56(g_tTex2df4) DescriptorSet 0 Decorate 70(g_tTex2di4) Binding 5 Decorate 70(g_tTex2di4) DescriptorSet 0 Decorate 82(g_tTex2du4) Binding 6 Decorate 82(g_tTex2du4) DescriptorSet 0 Decorate 96(g_tTex3df4) Binding 7 Decorate 96(g_tTex3df4) DescriptorSet 0 Decorate 109(g_tTex3di4) Binding 8 Decorate 109(g_tTex3di4) DescriptorSet 0 Decorate 120(g_tTex3du4) Binding 9 Decorate 120(g_tTex3du4) DescriptorSet 0 Decorate 144(@entryPointOutput.Color) Location 0 Decorate 148(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 151(g_tTex1df4a) Binding 1 Decorate 151(g_tTex1df4a) DescriptorSet 0 Decorate 154(g_tTexcdf4) Binding 0 Decorate 154(g_tTexcdf4) DescriptorSet 0 Decorate 157(g_tTexcdi4) Binding 0 Decorate 157(g_tTexcdi4) DescriptorSet 0 Decorate 160(g_tTexcdu4) Binding 0 Decorate 160(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: TypeInt 32 1 26: 25(int) Constant 1 28: TypeVector 25(int) 4 29: TypePointer Function 28(ivec4) 31: TypeImage 25(int) 1D sampled format:Unknown 32: TypePointer UniformConstant 31 33(g_tTex1di4): 32(ptr) Variable UniformConstant 36: TypeSampledImage 31 38: 6(float) Constant 1045220557 40: TypeInt 32 0 41: TypeVector 40(int) 4 42: TypePointer Function 41(ivec4) 44: TypeImage 40(int) 1D sampled format:Unknown 45: TypePointer UniformConstant 44 46(g_tTex1du4): 45(ptr) Variable UniformConstant 49: TypeSampledImage 44 51: 6(float) Constant 1050253722 54: TypeImage 6(float) 2D sampled format:Unknown 55: TypePointer UniformConstant 54 56(g_tTex2df4): 55(ptr) Variable UniformConstant 59: TypeSampledImage 54 61: TypeVector 6(float) 2 62: 61(fvec2) ConstantComposite 24 38 63: TypeVector 25(int) 2 64: 25(int) Constant 0 65: 63(ivec2) ConstantComposite 26 64 68: TypeImage 25(int) 2D sampled format:Unknown 69: TypePointer UniformConstant 68 70(g_tTex2di4): 69(ptr) Variable UniformConstant 73: TypeSampledImage 68 75: 6(float) Constant 1053609165 76: 61(fvec2) ConstantComposite 51 75 77: 63(ivec2) ConstantComposite 26 26 80: TypeImage 40(int) 2D sampled format:Unknown 81: TypePointer UniformConstant 80 82(g_tTex2du4): 81(ptr) Variable UniformConstant 85: TypeSampledImage 80 87: 6(float) Constant 1056964608 88: 6(float) Constant 1058642330 89: 61(fvec2) ConstantComposite 87 88 90: 25(int) Constant 4294967295 91: 63(ivec2) ConstantComposite 26 90 94: TypeImage 6(float) 3D sampled format:Unknown 95: TypePointer UniformConstant 94 96(g_tTex3df4): 95(ptr) Variable UniformConstant 99: TypeSampledImage 94 101: TypeVector 6(float) 3 102: 101(fvec3) ConstantComposite 24 38 51 103: TypeVector 25(int) 3 104: 103(ivec3) ConstantComposite 26 64 26 107: TypeImage 25(int) 3D sampled format:Unknown 108: TypePointer UniformConstant 107 109(g_tTex3di4): 108(ptr) Variable UniformConstant 112: TypeSampledImage 107 114: 101(fvec3) ConstantComposite 75 87 88 115: 103(ivec3) ConstantComposite 26 26 26 118: TypeImage 40(int) 3D sampled format:Unknown 119: TypePointer UniformConstant 118 120(g_tTex3du4): 119(ptr) Variable UniformConstant 123: TypeSampledImage 118 125: 6(float) Constant 1060320051 126: 6(float) Constant 1061997773 127: 6(float) Constant 1063675494 128: 101(fvec3) ConstantComposite 125 126 127 129: 103(ivec3) ConstantComposite 26 64 90 131: TypePointer Function 8(PS_OUTPUT) 133: 6(float) Constant 1065353216 134: 7(fvec4) ConstantComposite 133 133 133 133 136: TypePointer Function 6(float) 143: TypePointer Output 7(fvec4) 144(@entryPointOutput.Color): 143(ptr) Variable Output 147: TypePointer Output 6(float) 148(@entryPointOutput.Depth): 147(ptr) Variable Output 151(g_tTex1df4a): 15(ptr) Variable UniformConstant 152: TypeImage 6(float) Cube sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTexcdf4): 153(ptr) Variable UniformConstant 155: TypeImage 25(int) Cube sampled format:Unknown 156: TypePointer UniformConstant 155 157(g_tTexcdi4): 156(ptr) Variable UniformConstant 158: TypeImage 40(int) Cube sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTexcdu4): 159(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 141(flattenTemp): 131(ptr) Variable Function 142:8(PS_OUTPUT) FunctionCall 10(@main() Store 141(flattenTemp) 142 145: 12(ptr) AccessChain 141(flattenTemp) 64 146: 7(fvec4) Load 145 Store 144(@entryPointOutput.Color) 146 149: 136(ptr) AccessChain 141(flattenTemp) 26 150: 6(float) Load 149 Store 148(@entryPointOutput.Depth) 150 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 30(txval11): 29(ptr) Variable Function 43(txval12): 42(ptr) Variable Function 53(txval20): 12(ptr) Variable Function 67(txval21): 29(ptr) Variable Function 79(txval22): 42(ptr) Variable Function 93(txval30): 12(ptr) Variable Function 106(txval31): 29(ptr) Variable Function 117(txval32): 42(ptr) Variable Function 132(psout): 131(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 27: 7(fvec4) ImageSampleImplicitLod 23 24 ConstOffset 26 Store 13(txval10) 27 34: 31 Load 33(g_tTex1di4) 35: 18 Load 20(g_sSamp) 37: 36 SampledImage 34 35 39: 28(ivec4) ImageSampleImplicitLod 37 38 ConstOffset 26 Store 30(txval11) 39 47: 44 Load 46(g_tTex1du4) 48: 18 Load 20(g_sSamp) 50: 49 SampledImage 47 48 52: 41(ivec4) ImageSampleImplicitLod 50 51 ConstOffset 26 Store 43(txval12) 52 57: 54 Load 56(g_tTex2df4) 58: 18 Load 20(g_sSamp) 60: 59 SampledImage 57 58 66: 7(fvec4) ImageSampleImplicitLod 60 62 ConstOffset 65 Store 53(txval20) 66 71: 68 Load 70(g_tTex2di4) 72: 18 Load 20(g_sSamp) 74: 73 SampledImage 71 72 78: 28(ivec4) ImageSampleImplicitLod 74 76 ConstOffset 77 Store 67(txval21) 78 83: 80 Load 82(g_tTex2du4) 84: 18 Load 20(g_sSamp) 86: 85 SampledImage 83 84 92: 41(ivec4) ImageSampleImplicitLod 86 89 ConstOffset 91 Store 79(txval22) 92 97: 94 Load 96(g_tTex3df4) 98: 18 Load 20(g_sSamp) 100: 99 SampledImage 97 98 105: 7(fvec4) ImageSampleImplicitLod 100 102 ConstOffset 104 Store 93(txval30) 105 110: 107 Load 109(g_tTex3di4) 111: 18 Load 20(g_sSamp) 113: 112 SampledImage 110 111 116: 28(ivec4) ImageSampleImplicitLod 113 114 ConstOffset 115 Store 106(txval31) 116 121: 118 Load 120(g_tTex3du4) 122: 18 Load 20(g_sSamp) 124: 123 SampledImage 121 122 130: 41(ivec4) ImageSampleImplicitLod 124 128 ConstOffset 129 Store 117(txval32) 130 135: 12(ptr) AccessChain 132(psout) 64 Store 135 134 137: 136(ptr) AccessChain 132(psout) 26 Store 137 133 138:8(PS_OUTPUT) Load 132(psout) ReturnValue 138 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out000066400000000000000000000546321506534232700254510ustar00rootroot00000000000000hlsl.sample.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'txval10' ( temp 4-component vector of float) 0:23 textureOffset ( temp 4-component vector of float) 0:23 Construct combined texture-sampler ( temp sampler1DArray) 0:23 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:23 'g_sSamp' (layout( binding=0) uniform sampler) 0:23 Constant: 0:23 0.100000 0:23 0.200000 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of int) 0:24 'txval11' ( temp 4-component vector of int) 0:24 textureOffset ( temp 4-component vector of int) 0:24 Construct combined texture-sampler ( temp isampler1DArray) 0:24 'g_tTex1di4' ( uniform itexture1DArray) 0:24 'g_sSamp' (layout( binding=0) uniform sampler) 0:24 Constant: 0:24 0.200000 0:24 0.300000 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'txval12' ( temp 4-component vector of uint) 0:25 textureOffset ( temp 4-component vector of uint) 0:25 Construct combined texture-sampler ( temp usampler1DArray) 0:25 'g_tTex1du4' ( uniform utexture1DArray) 0:25 'g_sSamp' (layout( binding=0) uniform sampler) 0:25 Constant: 0:25 0.300000 0:25 0.400000 0:25 Constant: 0:25 2 (const int) 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval20' ( temp 4-component vector of float) 0:27 textureOffset ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler2DArray) 0:27 'g_tTex2df4' ( uniform texture2DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 0.300000 0:27 Constant: 0:27 0 (const int) 0:27 0 (const int) 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval21' ( temp 4-component vector of int) 0:28 textureOffset ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler2DArray) 0:28 'g_tTex2di4' ( uniform itexture2DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.300000 0:28 0.400000 0:28 0.500000 0:28 Constant: 0:28 0 (const int) 0:28 0 (const int) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval22' ( temp 4-component vector of uint) 0:29 textureOffset ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler2DArray) 0:29 'g_tTex2du4' ( uniform utexture2DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.700000 0:29 Constant: 0:29 0 (const int) 0:29 1 (const int) 0:33 move second child to first child ( temp 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:34 move second child to first child ( temp float) 0:34 Depth: direct index for structure ( temp float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 0:36 Branch: Return with expression 0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:20 Color: direct index for structure ( temp 4-component vector of float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:20 Depth: direct index for structure ( temp float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'txval10' ( temp 4-component vector of float) 0:23 textureOffset ( temp 4-component vector of float) 0:23 Construct combined texture-sampler ( temp sampler1DArray) 0:23 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:23 'g_sSamp' (layout( binding=0) uniform sampler) 0:23 Constant: 0:23 0.100000 0:23 0.200000 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of int) 0:24 'txval11' ( temp 4-component vector of int) 0:24 textureOffset ( temp 4-component vector of int) 0:24 Construct combined texture-sampler ( temp isampler1DArray) 0:24 'g_tTex1di4' ( uniform itexture1DArray) 0:24 'g_sSamp' (layout( binding=0) uniform sampler) 0:24 Constant: 0:24 0.200000 0:24 0.300000 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'txval12' ( temp 4-component vector of uint) 0:25 textureOffset ( temp 4-component vector of uint) 0:25 Construct combined texture-sampler ( temp usampler1DArray) 0:25 'g_tTex1du4' ( uniform utexture1DArray) 0:25 'g_sSamp' (layout( binding=0) uniform sampler) 0:25 Constant: 0:25 0.300000 0:25 0.400000 0:25 Constant: 0:25 2 (const int) 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval20' ( temp 4-component vector of float) 0:27 textureOffset ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler2DArray) 0:27 'g_tTex2df4' ( uniform texture2DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 0.300000 0:27 Constant: 0:27 0 (const int) 0:27 0 (const int) 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval21' ( temp 4-component vector of int) 0:28 textureOffset ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler2DArray) 0:28 'g_tTex2di4' ( uniform itexture2DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.300000 0:28 0.400000 0:28 0.500000 0:28 Constant: 0:28 0 (const int) 0:28 0 (const int) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval22' ( temp 4-component vector of uint) 0:29 textureOffset ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler2DArray) 0:29 'g_tTex2du4' ( uniform utexture2DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.700000 0:29 Constant: 0:29 0 (const int) 0:29 1 (const int) 0:33 move second child to first child ( temp 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:34 move second child to first child ( temp float) 0:34 Depth: direct index for structure ( temp float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 0:36 Branch: Return with expression 0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:20 Color: direct index for structure ( temp 4-component vector of float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:20 Depth: direct index for structure ( temp float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 118 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 110 114 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 33 "txval11" Name 36 "g_tTex1di4" Name 48 "txval12" Name 51 "g_tTex1du4" Name 60 "txval20" Name 63 "g_tTex2df4" Name 73 "txval21" Name 76 "g_tTex2di4" Name 84 "txval22" Name 87 "g_tTex2du4" Name 98 "psout" Name 107 "flattenTemp" Name 110 "@entryPointOutput.Color" Name 114 "@entryPointOutput.Depth" Name 117 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex1di4) Binding 2 Decorate 36(g_tTex1di4) DescriptorSet 0 Decorate 51(g_tTex1du4) Binding 3 Decorate 51(g_tTex1du4) DescriptorSet 0 Decorate 63(g_tTex2df4) Binding 4 Decorate 63(g_tTex2df4) DescriptorSet 0 Decorate 76(g_tTex2di4) Binding 5 Decorate 76(g_tTex2di4) DescriptorSet 0 Decorate 87(g_tTex2du4) Binding 6 Decorate 87(g_tTex2du4) DescriptorSet 0 Decorate 110(@entryPointOutput.Color) Location 0 Decorate 114(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 117(g_tTex1df4a) Binding 1 Decorate 117(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: TypeInt 32 1 29: 28(int) Constant 0 31: TypeVector 28(int) 4 32: TypePointer Function 31(ivec4) 34: TypeImage 28(int) 1D array sampled format:Unknown 35: TypePointer UniformConstant 34 36(g_tTex1di4): 35(ptr) Variable UniformConstant 39: TypeSampledImage 34 41: 6(float) Constant 1050253722 42: 24(fvec2) ConstantComposite 26 41 43: 28(int) Constant 1 45: TypeInt 32 0 46: TypeVector 45(int) 4 47: TypePointer Function 46(ivec4) 49: TypeImage 45(int) 1D array sampled format:Unknown 50: TypePointer UniformConstant 49 51(g_tTex1du4): 50(ptr) Variable UniformConstant 54: TypeSampledImage 49 56: 6(float) Constant 1053609165 57: 24(fvec2) ConstantComposite 41 56 58: 28(int) Constant 2 61: TypeImage 6(float) 2D array sampled format:Unknown 62: TypePointer UniformConstant 61 63(g_tTex2df4): 62(ptr) Variable UniformConstant 66: TypeSampledImage 61 68: TypeVector 6(float) 3 69: 68(fvec3) ConstantComposite 25 26 41 70: TypeVector 28(int) 2 71: 70(ivec2) ConstantComposite 29 29 74: TypeImage 28(int) 2D array sampled format:Unknown 75: TypePointer UniformConstant 74 76(g_tTex2di4): 75(ptr) Variable UniformConstant 79: TypeSampledImage 74 81: 6(float) Constant 1056964608 82: 68(fvec3) ConstantComposite 41 56 81 85: TypeImage 45(int) 2D array sampled format:Unknown 86: TypePointer UniformConstant 85 87(g_tTex2du4): 86(ptr) Variable UniformConstant 90: TypeSampledImage 85 92: 6(float) Constant 1058642330 93: 6(float) Constant 1060320051 94: 68(fvec3) ConstantComposite 81 92 93 95: 70(ivec2) ConstantComposite 29 43 97: TypePointer Function 8(PS_OUTPUT) 99: 6(float) Constant 1065353216 100: 7(fvec4) ConstantComposite 99 99 99 99 102: TypePointer Function 6(float) 109: TypePointer Output 7(fvec4) 110(@entryPointOutput.Color): 109(ptr) Variable Output 113: TypePointer Output 6(float) 114(@entryPointOutput.Depth): 113(ptr) Variable Output 117(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 107(flattenTemp): 97(ptr) Variable Function 108:8(PS_OUTPUT) FunctionCall 10(@main() Store 107(flattenTemp) 108 111: 12(ptr) AccessChain 107(flattenTemp) 29 112: 7(fvec4) Load 111 Store 110(@entryPointOutput.Color) 112 115: 102(ptr) AccessChain 107(flattenTemp) 43 116: 6(float) Load 115 Store 114(@entryPointOutput.Depth) 116 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 33(txval11): 32(ptr) Variable Function 48(txval12): 47(ptr) Variable Function 60(txval20): 12(ptr) Variable Function 73(txval21): 32(ptr) Variable Function 84(txval22): 47(ptr) Variable Function 98(psout): 97(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 30: 7(fvec4) ImageSampleImplicitLod 23 27 ConstOffset 29 Store 13(txval10) 30 37: 34 Load 36(g_tTex1di4) 38: 18 Load 20(g_sSamp) 40: 39 SampledImage 37 38 44: 31(ivec4) ImageSampleImplicitLod 40 42 ConstOffset 43 Store 33(txval11) 44 52: 49 Load 51(g_tTex1du4) 53: 18 Load 20(g_sSamp) 55: 54 SampledImage 52 53 59: 46(ivec4) ImageSampleImplicitLod 55 57 ConstOffset 58 Store 48(txval12) 59 64: 61 Load 63(g_tTex2df4) 65: 18 Load 20(g_sSamp) 67: 66 SampledImage 64 65 72: 7(fvec4) ImageSampleImplicitLod 67 69 ConstOffset 71 Store 60(txval20) 72 77: 74 Load 76(g_tTex2di4) 78: 18 Load 20(g_sSamp) 80: 79 SampledImage 77 78 83: 31(ivec4) ImageSampleImplicitLod 80 82 ConstOffset 71 Store 73(txval21) 83 88: 85 Load 87(g_tTex2du4) 89: 18 Load 20(g_sSamp) 91: 90 SampledImage 88 89 96: 46(ivec4) ImageSampleImplicitLod 91 94 ConstOffset 95 Store 84(txval22) 96 101: 12(ptr) AccessChain 98(psout) 29 Store 101 100 103: 102(ptr) AccessChain 98(psout) 43 Store 103 99 104:8(PS_OUTPUT) Load 98(psout) ReturnValue 104 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out000066400000000000000000000316551506534232700245540ustar00rootroot00000000000000hlsl.sample.sub-vec4.dx10.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:14 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:14 Function Parameters: 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'txval10' ( temp float) 0:17 Construct float ( temp float) 0:? texture ( temp 4-component vector of float) 0:17 Construct combined texture-sampler ( temp sampler1D) 0:17 'g_tTex1df1' ( uniform texture1D) 0:17 'g_sSamp' (layout( binding=0) uniform sampler) 0:17 Constant: 0:17 0.100000 0:18 Sequence 0:18 move second child to first child ( temp 2-component vector of float) 0:18 'txval11' ( temp 2-component vector of float) 0:18 Construct vec2 ( temp 2-component vector of float) 0:? texture ( temp 4-component vector of float) 0:18 Construct combined texture-sampler ( temp sampler1D) 0:18 'g_tTex1df2' ( uniform texture1D) 0:18 'g_sSamp' (layout( binding=0) uniform sampler) 0:18 Constant: 0:18 0.200000 0:19 Sequence 0:19 move second child to first child ( temp 3-component vector of float) 0:19 'txval12' ( temp 3-component vector of float) 0:19 Construct vec3 ( temp 3-component vector of float) 0:? texture ( temp 4-component vector of float) 0:19 Construct combined texture-sampler ( temp sampler1D) 0:19 'g_tTex1df3' ( uniform texture1D) 0:19 'g_sSamp' (layout( binding=0) uniform sampler) 0:19 Constant: 0:19 0.200000 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'txval13' ( temp 4-component vector of float) 0:20 texture ( temp 4-component vector of float) 0:20 Construct combined texture-sampler ( temp sampler1D) 0:20 'g_tTex1df4' ( uniform texture1D) 0:20 'g_sSamp' (layout( binding=0) uniform sampler) 0:20 Constant: 0:20 0.200000 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Color: direct index for structure ( temp 4-component vector of float) 0:22 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1.000000 0:22 1.000000 0:22 1.000000 0:22 1.000000 0:23 Branch: Return with expression 0:23 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:14 Function Definition: main( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:14 Color: direct index for structure ( temp 4-component vector of float) 0:14 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:14 Constant: 0:14 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df1' ( uniform texture1D) 0:? 'g_tTex1df2' ( uniform texture1D) 0:? 'g_tTex1df3' ( uniform texture1D) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:14 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:14 Function Parameters: 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'txval10' ( temp float) 0:17 Construct float ( temp float) 0:? texture ( temp 4-component vector of float) 0:17 Construct combined texture-sampler ( temp sampler1D) 0:17 'g_tTex1df1' ( uniform texture1D) 0:17 'g_sSamp' (layout( binding=0) uniform sampler) 0:17 Constant: 0:17 0.100000 0:18 Sequence 0:18 move second child to first child ( temp 2-component vector of float) 0:18 'txval11' ( temp 2-component vector of float) 0:18 Construct vec2 ( temp 2-component vector of float) 0:? texture ( temp 4-component vector of float) 0:18 Construct combined texture-sampler ( temp sampler1D) 0:18 'g_tTex1df2' ( uniform texture1D) 0:18 'g_sSamp' (layout( binding=0) uniform sampler) 0:18 Constant: 0:18 0.200000 0:19 Sequence 0:19 move second child to first child ( temp 3-component vector of float) 0:19 'txval12' ( temp 3-component vector of float) 0:19 Construct vec3 ( temp 3-component vector of float) 0:? texture ( temp 4-component vector of float) 0:19 Construct combined texture-sampler ( temp sampler1D) 0:19 'g_tTex1df3' ( uniform texture1D) 0:19 'g_sSamp' (layout( binding=0) uniform sampler) 0:19 Constant: 0:19 0.200000 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'txval13' ( temp 4-component vector of float) 0:20 texture ( temp 4-component vector of float) 0:20 Construct combined texture-sampler ( temp sampler1D) 0:20 'g_tTex1df4' ( uniform texture1D) 0:20 'g_sSamp' (layout( binding=0) uniform sampler) 0:20 Constant: 0:20 0.200000 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Color: direct index for structure ( temp 4-component vector of float) 0:22 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1.000000 0:22 1.000000 0:22 1.000000 0:22 1.000000 0:23 Branch: Return with expression 0:23 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:14 Function Definition: main( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:14 Color: direct index for structure ( temp 4-component vector of float) 0:14 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:14 Constant: 0:14 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df1' ( uniform texture1D) 0:? 'g_tTex1df2' ( uniform texture1D) 0:? 'g_tTex1df3' ( uniform texture1D) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 69 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df1" Name 20 "g_sSamp" Name 29 "txval11" Name 30 "g_tTex1df2" Name 41 "txval12" Name 42 "g_tTex1df3" Name 52 "txval13" Name 53 "g_tTex1df4" Name 59 "psout" Name 69 "@entryPointOutput.Color" Decorate 16(g_tTex1df1) Binding 1 Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 30(g_tTex1df2) Binding 2 Decorate 30(g_tTex1df2) DescriptorSet 0 Decorate 42(g_tTex1df3) Binding 3 Decorate 42(g_tTex1df3) DescriptorSet 0 Decorate 53(g_tTex1df4) Binding 4 Decorate 53(g_tTex1df4) DescriptorSet 0 Decorate 69(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df1): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 27: TypeVector 6(float) 2 28: TypePointer Function 27(fvec2) 30(g_tTex1df2): 15(ptr) Variable UniformConstant 34: 6(float) Constant 1045220557 39: TypeVector 6(float) 3 40: TypePointer Function 39(fvec3) 42(g_tTex1df3): 15(ptr) Variable UniformConstant 51: TypePointer Function 7(fvec4) 53(g_tTex1df4): 15(ptr) Variable UniformConstant 58: TypePointer Function 8(PS_OUTPUT) 60: TypeInt 32 1 61: 60(int) Constant 0 62: 6(float) Constant 1065353216 63: 7(fvec4) ConstantComposite 62 62 62 62 68: TypePointer Output 7(fvec4) 69(@entryPointOutput.Color): 68(ptr) Variable Output 4(main): 2 Function None 3 5: Label 70:8(PS_OUTPUT) FunctionCall 10(@main() 71: 7(fvec4) CompositeExtract 70 0 Store 69(@entryPointOutput.Color) 71 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 29(txval11): 28(ptr) Variable Function 41(txval12): 40(ptr) Variable Function 52(txval13): 51(ptr) Variable Function 59(psout): 58(ptr) Variable Function 17: 14 Load 16(g_tTex1df1) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 25: 7(fvec4) ImageSampleImplicitLod 23 24 26: 6(float) CompositeExtract 25 0 Store 13(txval10) 26 31: 14 Load 30(g_tTex1df2) 32: 18 Load 20(g_sSamp) 33: 22 SampledImage 31 32 35: 7(fvec4) ImageSampleImplicitLod 33 34 36: 6(float) CompositeExtract 35 0 37: 6(float) CompositeExtract 35 1 38: 27(fvec2) CompositeConstruct 36 37 Store 29(txval11) 38 43: 14 Load 42(g_tTex1df3) 44: 18 Load 20(g_sSamp) 45: 22 SampledImage 43 44 46: 7(fvec4) ImageSampleImplicitLod 45 34 47: 6(float) CompositeExtract 46 0 48: 6(float) CompositeExtract 46 1 49: 6(float) CompositeExtract 46 2 50: 39(fvec3) CompositeConstruct 47 48 49 Store 41(txval12) 50 54: 14 Load 53(g_tTex1df4) 55: 18 Load 20(g_sSamp) 56: 22 SampledImage 54 55 57: 7(fvec4) ImageSampleImplicitLod 56 34 Store 52(txval13) 57 64: 51(ptr) AccessChain 59(psout) 61 Store 64 63 65:8(PS_OUTPUT) Load 59(psout) ReturnValue 65 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplebias.array.dx10.frag.out000066400000000000000000000705771506534232700251070ustar00rootroot00000000000000hlsl.samplebias.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 texture ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 Constant: 0:27 0.500000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 texture ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.200000 0:28 0.300000 0:28 Constant: 0:28 0.500000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 texture ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.300000 0:29 0.400000 0:29 Constant: 0:29 0.500000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 texture ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:31 Constant: 0:31 0.500000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 texture ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 0.400000 0:32 0.500000 0:32 Constant: 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 texture ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.500000 0:33 0.600000 0:33 0.700000 0:33 Constant: 0:33 0.500000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 0.500000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 texture ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.400000 0:36 0.500000 0:36 0.600000 0:36 0.700000 0:36 Constant: 0:36 0.500000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 texture ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.700000 0:37 0.800000 0:37 0.900000 0:37 1.000000 0:37 Constant: 0:37 0.500000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? 'g_tTexcdf4' ( uniform textureCubeArray) 0:? 'g_tTexcdi4' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 texture ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 Constant: 0:27 0.500000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 texture ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.200000 0:28 0.300000 0:28 Constant: 0:28 0.500000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 texture ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.300000 0:29 0.400000 0:29 Constant: 0:29 0.500000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 texture ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:31 Constant: 0:31 0.500000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 texture ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 0.400000 0:32 0.500000 0:32 Constant: 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 texture ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.500000 0:33 0.600000 0:33 0.700000 0:33 Constant: 0:33 0.500000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 0.500000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 texture ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.400000 0:36 0.500000 0:36 0.600000 0:36 0.700000 0:36 Constant: 0:36 0.500000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 texture ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.700000 0:37 0.800000 0:37 0.900000 0:37 1.000000 0:37 Constant: 0:37 0.500000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? 'g_tTexcdf4' ( uniform textureCubeArray) 0:? 'g_tTexcdi4' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 146 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 138 142 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 33 "txval11" Name 36 "g_tTex1di4" Name 47 "txval12" Name 50 "g_tTex1du4" Name 58 "txval20" Name 61 "g_tTex2df4" Name 69 "txval21" Name 72 "g_tTex2di4" Name 79 "txval22" Name 82 "g_tTex2du4" Name 91 "txval40" Name 94 "g_tTexcdf4" Name 101 "txval41" Name 104 "g_tTexcdi4" Name 111 "txval42" Name 114 "g_tTexcdu4" Name 125 "psout" Name 135 "flattenTemp" Name 138 "@entryPointOutput.Color" Name 142 "@entryPointOutput.Depth" Name 145 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex1di4) Binding 2 Decorate 36(g_tTex1di4) DescriptorSet 0 Decorate 50(g_tTex1du4) Binding 3 Decorate 50(g_tTex1du4) DescriptorSet 0 Decorate 61(g_tTex2df4) Binding 4 Decorate 61(g_tTex2df4) DescriptorSet 0 Decorate 72(g_tTex2di4) Binding 5 Decorate 72(g_tTex2di4) DescriptorSet 0 Decorate 82(g_tTex2du4) Binding 6 Decorate 82(g_tTex2du4) DescriptorSet 0 Decorate 94(g_tTexcdf4) Binding 7 Decorate 94(g_tTexcdf4) DescriptorSet 0 Decorate 104(g_tTexcdi4) Binding 8 Decorate 104(g_tTexcdi4) DescriptorSet 0 Decorate 114(g_tTexcdu4) Binding 9 Decorate 114(g_tTexcdu4) DescriptorSet 0 Decorate 138(@entryPointOutput.Color) Location 0 Decorate 142(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 145(g_tTex1df4a) Binding 1 Decorate 145(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1056964608 30: TypeInt 32 1 31: TypeVector 30(int) 4 32: TypePointer Function 31(ivec4) 34: TypeImage 30(int) 1D array sampled format:Unknown 35: TypePointer UniformConstant 34 36(g_tTex1di4): 35(ptr) Variable UniformConstant 39: TypeSampledImage 34 41: 6(float) Constant 1050253722 42: 24(fvec2) ConstantComposite 26 41 44: TypeInt 32 0 45: TypeVector 44(int) 4 46: TypePointer Function 45(ivec4) 48: TypeImage 44(int) 1D array sampled format:Unknown 49: TypePointer UniformConstant 48 50(g_tTex1du4): 49(ptr) Variable UniformConstant 53: TypeSampledImage 48 55: 6(float) Constant 1053609165 56: 24(fvec2) ConstantComposite 41 55 59: TypeImage 6(float) 2D array sampled format:Unknown 60: TypePointer UniformConstant 59 61(g_tTex2df4): 60(ptr) Variable UniformConstant 64: TypeSampledImage 59 66: TypeVector 6(float) 3 67: 66(fvec3) ConstantComposite 25 26 41 70: TypeImage 30(int) 2D array sampled format:Unknown 71: TypePointer UniformConstant 70 72(g_tTex2di4): 71(ptr) Variable UniformConstant 75: TypeSampledImage 70 77: 66(fvec3) ConstantComposite 41 55 28 80: TypeImage 44(int) 2D array sampled format:Unknown 81: TypePointer UniformConstant 80 82(g_tTex2du4): 81(ptr) Variable UniformConstant 85: TypeSampledImage 80 87: 6(float) Constant 1058642330 88: 6(float) Constant 1060320051 89: 66(fvec3) ConstantComposite 28 87 88 92: TypeImage 6(float) Cube array sampled format:Unknown 93: TypePointer UniformConstant 92 94(g_tTexcdf4): 93(ptr) Variable UniformConstant 97: TypeSampledImage 92 99: 7(fvec4) ConstantComposite 25 26 41 55 102: TypeImage 30(int) Cube array sampled format:Unknown 103: TypePointer UniformConstant 102 104(g_tTexcdi4): 103(ptr) Variable UniformConstant 107: TypeSampledImage 102 109: 7(fvec4) ConstantComposite 55 28 87 88 112: TypeImage 44(int) Cube array sampled format:Unknown 113: TypePointer UniformConstant 112 114(g_tTexcdu4): 113(ptr) Variable UniformConstant 117: TypeSampledImage 112 119: 6(float) Constant 1061997773 120: 6(float) Constant 1063675494 121: 6(float) Constant 1065353216 122: 7(fvec4) ConstantComposite 88 119 120 121 124: TypePointer Function 8(PS_OUTPUT) 126: 30(int) Constant 0 127: 7(fvec4) ConstantComposite 121 121 121 121 129: 30(int) Constant 1 130: TypePointer Function 6(float) 137: TypePointer Output 7(fvec4) 138(@entryPointOutput.Color): 137(ptr) Variable Output 141: TypePointer Output 6(float) 142(@entryPointOutput.Depth): 141(ptr) Variable Output 145(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 135(flattenTemp): 124(ptr) Variable Function 136:8(PS_OUTPUT) FunctionCall 10(@main() Store 135(flattenTemp) 136 139: 12(ptr) AccessChain 135(flattenTemp) 126 140: 7(fvec4) Load 139 Store 138(@entryPointOutput.Color) 140 143: 130(ptr) AccessChain 135(flattenTemp) 129 144: 6(float) Load 143 Store 142(@entryPointOutput.Depth) 144 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 33(txval11): 32(ptr) Variable Function 47(txval12): 46(ptr) Variable Function 58(txval20): 12(ptr) Variable Function 69(txval21): 32(ptr) Variable Function 79(txval22): 46(ptr) Variable Function 91(txval40): 12(ptr) Variable Function 101(txval41): 32(ptr) Variable Function 111(txval42): 46(ptr) Variable Function 125(psout): 124(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 29: 7(fvec4) ImageSampleImplicitLod 23 27 Bias 28 Store 13(txval10) 29 37: 34 Load 36(g_tTex1di4) 38: 18 Load 20(g_sSamp) 40: 39 SampledImage 37 38 43: 31(ivec4) ImageSampleImplicitLod 40 42 Bias 28 Store 33(txval11) 43 51: 48 Load 50(g_tTex1du4) 52: 18 Load 20(g_sSamp) 54: 53 SampledImage 51 52 57: 45(ivec4) ImageSampleImplicitLod 54 56 Bias 28 Store 47(txval12) 57 62: 59 Load 61(g_tTex2df4) 63: 18 Load 20(g_sSamp) 65: 64 SampledImage 62 63 68: 7(fvec4) ImageSampleImplicitLod 65 67 Bias 28 Store 58(txval20) 68 73: 70 Load 72(g_tTex2di4) 74: 18 Load 20(g_sSamp) 76: 75 SampledImage 73 74 78: 31(ivec4) ImageSampleImplicitLod 76 77 Bias 28 Store 69(txval21) 78 83: 80 Load 82(g_tTex2du4) 84: 18 Load 20(g_sSamp) 86: 85 SampledImage 83 84 90: 45(ivec4) ImageSampleImplicitLod 86 89 Bias 28 Store 79(txval22) 90 95: 92 Load 94(g_tTexcdf4) 96: 18 Load 20(g_sSamp) 98: 97 SampledImage 95 96 100: 7(fvec4) ImageSampleImplicitLod 98 99 Bias 28 Store 91(txval40) 100 105: 102 Load 104(g_tTexcdi4) 106: 18 Load 20(g_sSamp) 108: 107 SampledImage 105 106 110: 31(ivec4) ImageSampleImplicitLod 108 109 Bias 28 Store 101(txval41) 110 115: 112 Load 114(g_tTexcdu4) 116: 18 Load 20(g_sSamp) 118: 117 SampledImage 115 116 123: 45(ivec4) ImageSampleImplicitLod 118 122 Bias 28 Store 111(txval42) 123 128: 12(ptr) AccessChain 125(psout) 126 Store 128 127 131: 130(ptr) AccessChain 125(psout) 129 Store 131 121 132:8(PS_OUTPUT) Load 125(psout) ReturnValue 132 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out000066400000000000000000001023511506534232700250340ustar00rootroot00000000000000hlsl.samplebias.basic.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 texture ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 0.500000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 texture ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 texture ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 0.500000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 0.500000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 texture ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 0.500000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 texture ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 0.500000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 texture ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 0.500000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 texture ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 0.500000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 texture ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 0.500000 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'txval40' ( temp 4-component vector of float) 0:43 texture ( temp 4-component vector of float) 0:43 Construct combined texture-sampler ( temp samplerCube) 0:43 'g_tTexcdf4' ( uniform textureCube) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 0.300000 0:43 Constant: 0:43 0.500000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of int) 0:44 'txval41' ( temp 4-component vector of int) 0:44 texture ( temp 4-component vector of int) 0:44 Construct combined texture-sampler ( temp isamplerCube) 0:44 'g_tTexcdi4' ( uniform itextureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.400000 0:44 0.500000 0:44 0.600000 0:44 Constant: 0:44 0.500000 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of uint) 0:45 'txval42' ( temp 4-component vector of uint) 0:45 texture ( temp 4-component vector of uint) 0:45 Construct combined texture-sampler ( temp usamplerCube) 0:45 'g_tTexcdu4' ( uniform utextureCube) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 Constant: 0:45 0.700000 0:45 0.800000 0:45 0.900000 0:45 Constant: 0:45 0.500000 0:47 move second child to first child ( temp 4-component vector of float) 0:47 Color: direct index for structure ( temp 4-component vector of float) 0:47 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:48 move second child to first child ( temp float) 0:48 Depth: direct index for structure ( temp float) 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 1.000000 0:50 Branch: Return with expression 0:50 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 texture ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 0.500000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 texture ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 texture ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 0.500000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 0.500000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 texture ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 0.500000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 texture ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 0.500000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 texture ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 0.500000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 texture ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 0.500000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 texture ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 0.500000 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'txval40' ( temp 4-component vector of float) 0:43 texture ( temp 4-component vector of float) 0:43 Construct combined texture-sampler ( temp samplerCube) 0:43 'g_tTexcdf4' ( uniform textureCube) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 0.300000 0:43 Constant: 0:43 0.500000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of int) 0:44 'txval41' ( temp 4-component vector of int) 0:44 texture ( temp 4-component vector of int) 0:44 Construct combined texture-sampler ( temp isamplerCube) 0:44 'g_tTexcdi4' ( uniform itextureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.400000 0:44 0.500000 0:44 0.600000 0:44 Constant: 0:44 0.500000 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of uint) 0:45 'txval42' ( temp 4-component vector of uint) 0:45 texture ( temp 4-component vector of uint) 0:45 Construct combined texture-sampler ( temp usamplerCube) 0:45 'g_tTexcdu4' ( uniform utextureCube) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 Constant: 0:45 0.700000 0:45 0.800000 0:45 0.900000 0:45 Constant: 0:45 0.500000 0:47 move second child to first child ( temp 4-component vector of float) 0:47 Color: direct index for structure ( temp 4-component vector of float) 0:47 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:48 move second child to first child ( temp float) 0:48 Depth: direct index for structure ( temp float) 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 1.000000 0:50 Branch: Return with expression 0:50 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 170 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 162 166 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 30 "txval11" Name 33 "g_tTex1di4" Name 43 "txval12" Name 46 "g_tTex1du4" Name 53 "txval20" Name 56 "g_tTex2df4" Name 64 "txval21" Name 67 "g_tTex2di4" Name 75 "txval22" Name 78 "g_tTex2du4" Name 86 "txval30" Name 89 "g_tTex3df4" Name 97 "txval31" Name 100 "g_tTex3di4" Name 107 "txval32" Name 110 "g_tTex3du4" Name 120 "txval40" Name 123 "g_tTexcdf4" Name 129 "txval41" Name 132 "g_tTexcdi4" Name 138 "txval42" Name 141 "g_tTexcdu4" Name 148 "psout" Name 159 "flattenTemp" Name 162 "@entryPointOutput.Color" Name 166 "@entryPointOutput.Depth" Name 169 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4) Binding 2 Decorate 33(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 3 Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 56(g_tTex2df4) Binding 4 Decorate 56(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 5 Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 78(g_tTex2du4) Binding 6 Decorate 78(g_tTex2du4) DescriptorSet 0 Decorate 89(g_tTex3df4) Binding 7 Decorate 89(g_tTex3df4) DescriptorSet 0 Decorate 100(g_tTex3di4) Binding 8 Decorate 100(g_tTex3di4) DescriptorSet 0 Decorate 110(g_tTex3du4) Binding 9 Decorate 110(g_tTex3du4) DescriptorSet 0 Decorate 123(g_tTexcdf4) Binding 10 Decorate 123(g_tTexcdf4) DescriptorSet 0 Decorate 132(g_tTexcdi4) Binding 11 Decorate 132(g_tTexcdi4) DescriptorSet 0 Decorate 141(g_tTexcdu4) Binding 12 Decorate 141(g_tTexcdu4) DescriptorSet 0 Decorate 162(@entryPointOutput.Color) Location 0 Decorate 166(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 169(g_tTex1df4a) Binding 1 Decorate 169(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1056964608 27: TypeInt 32 1 28: TypeVector 27(int) 4 29: TypePointer Function 28(ivec4) 31: TypeImage 27(int) 1D sampled format:Unknown 32: TypePointer UniformConstant 31 33(g_tTex1di4): 32(ptr) Variable UniformConstant 36: TypeSampledImage 31 38: 6(float) Constant 1045220557 40: TypeInt 32 0 41: TypeVector 40(int) 4 42: TypePointer Function 41(ivec4) 44: TypeImage 40(int) 1D sampled format:Unknown 45: TypePointer UniformConstant 44 46(g_tTex1du4): 45(ptr) Variable UniformConstant 49: TypeSampledImage 44 51: 6(float) Constant 1050253722 54: TypeImage 6(float) 2D sampled format:Unknown 55: TypePointer UniformConstant 54 56(g_tTex2df4): 55(ptr) Variable UniformConstant 59: TypeSampledImage 54 61: TypeVector 6(float) 2 62: 61(fvec2) ConstantComposite 24 38 65: TypeImage 27(int) 2D sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2di4): 66(ptr) Variable UniformConstant 70: TypeSampledImage 65 72: 6(float) Constant 1053609165 73: 61(fvec2) ConstantComposite 51 72 76: TypeImage 40(int) 2D sampled format:Unknown 77: TypePointer UniformConstant 76 78(g_tTex2du4): 77(ptr) Variable UniformConstant 81: TypeSampledImage 76 83: 6(float) Constant 1058642330 84: 61(fvec2) ConstantComposite 25 83 87: TypeImage 6(float) 3D sampled format:Unknown 88: TypePointer UniformConstant 87 89(g_tTex3df4): 88(ptr) Variable UniformConstant 92: TypeSampledImage 87 94: TypeVector 6(float) 3 95: 94(fvec3) ConstantComposite 24 38 51 98: TypeImage 27(int) 3D sampled format:Unknown 99: TypePointer UniformConstant 98 100(g_tTex3di4): 99(ptr) Variable UniformConstant 103: TypeSampledImage 98 105: 94(fvec3) ConstantComposite 72 25 83 108: TypeImage 40(int) 3D sampled format:Unknown 109: TypePointer UniformConstant 108 110(g_tTex3du4): 109(ptr) Variable UniformConstant 113: TypeSampledImage 108 115: 6(float) Constant 1060320051 116: 6(float) Constant 1061997773 117: 6(float) Constant 1063675494 118: 94(fvec3) ConstantComposite 115 116 117 121: TypeImage 6(float) Cube sampled format:Unknown 122: TypePointer UniformConstant 121 123(g_tTexcdf4): 122(ptr) Variable UniformConstant 126: TypeSampledImage 121 130: TypeImage 27(int) Cube sampled format:Unknown 131: TypePointer UniformConstant 130 132(g_tTexcdi4): 131(ptr) Variable UniformConstant 135: TypeSampledImage 130 139: TypeImage 40(int) Cube sampled format:Unknown 140: TypePointer UniformConstant 139 141(g_tTexcdu4): 140(ptr) Variable UniformConstant 144: TypeSampledImage 139 147: TypePointer Function 8(PS_OUTPUT) 149: 27(int) Constant 0 150: 6(float) Constant 1065353216 151: 7(fvec4) ConstantComposite 150 150 150 150 153: 27(int) Constant 1 154: TypePointer Function 6(float) 161: TypePointer Output 7(fvec4) 162(@entryPointOutput.Color): 161(ptr) Variable Output 165: TypePointer Output 6(float) 166(@entryPointOutput.Depth): 165(ptr) Variable Output 169(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 159(flattenTemp): 147(ptr) Variable Function 160:8(PS_OUTPUT) FunctionCall 10(@main() Store 159(flattenTemp) 160 163: 12(ptr) AccessChain 159(flattenTemp) 149 164: 7(fvec4) Load 163 Store 162(@entryPointOutput.Color) 164 167: 154(ptr) AccessChain 159(flattenTemp) 153 168: 6(float) Load 167 Store 166(@entryPointOutput.Depth) 168 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 30(txval11): 29(ptr) Variable Function 43(txval12): 42(ptr) Variable Function 53(txval20): 12(ptr) Variable Function 64(txval21): 29(ptr) Variable Function 75(txval22): 42(ptr) Variable Function 86(txval30): 12(ptr) Variable Function 97(txval31): 29(ptr) Variable Function 107(txval32): 42(ptr) Variable Function 120(txval40): 12(ptr) Variable Function 129(txval41): 29(ptr) Variable Function 138(txval42): 42(ptr) Variable Function 148(psout): 147(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 26: 7(fvec4) ImageSampleImplicitLod 23 24 Bias 25 Store 13(txval10) 26 34: 31 Load 33(g_tTex1di4) 35: 18 Load 20(g_sSamp) 37: 36 SampledImage 34 35 39: 28(ivec4) ImageSampleImplicitLod 37 38 Bias 25 Store 30(txval11) 39 47: 44 Load 46(g_tTex1du4) 48: 18 Load 20(g_sSamp) 50: 49 SampledImage 47 48 52: 41(ivec4) ImageSampleImplicitLod 50 51 Bias 25 Store 43(txval12) 52 57: 54 Load 56(g_tTex2df4) 58: 18 Load 20(g_sSamp) 60: 59 SampledImage 57 58 63: 7(fvec4) ImageSampleImplicitLod 60 62 Bias 25 Store 53(txval20) 63 68: 65 Load 67(g_tTex2di4) 69: 18 Load 20(g_sSamp) 71: 70 SampledImage 68 69 74: 28(ivec4) ImageSampleImplicitLod 71 73 Bias 25 Store 64(txval21) 74 79: 76 Load 78(g_tTex2du4) 80: 18 Load 20(g_sSamp) 82: 81 SampledImage 79 80 85: 41(ivec4) ImageSampleImplicitLod 82 84 Bias 25 Store 75(txval22) 85 90: 87 Load 89(g_tTex3df4) 91: 18 Load 20(g_sSamp) 93: 92 SampledImage 90 91 96: 7(fvec4) ImageSampleImplicitLod 93 95 Bias 25 Store 86(txval30) 96 101: 98 Load 100(g_tTex3di4) 102: 18 Load 20(g_sSamp) 104: 103 SampledImage 101 102 106: 28(ivec4) ImageSampleImplicitLod 104 105 Bias 25 Store 97(txval31) 106 111: 108 Load 110(g_tTex3du4) 112: 18 Load 20(g_sSamp) 114: 113 SampledImage 111 112 119: 41(ivec4) ImageSampleImplicitLod 114 118 Bias 25 Store 107(txval32) 119 124: 121 Load 123(g_tTexcdf4) 125: 18 Load 20(g_sSamp) 127: 126 SampledImage 124 125 128: 7(fvec4) ImageSampleImplicitLod 127 95 Bias 25 Store 120(txval40) 128 133: 130 Load 132(g_tTexcdi4) 134: 18 Load 20(g_sSamp) 136: 135 SampledImage 133 134 137: 28(ivec4) ImageSampleImplicitLod 136 105 Bias 25 Store 129(txval41) 137 142: 139 Load 141(g_tTexcdu4) 143: 18 Load 20(g_sSamp) 145: 144 SampledImage 142 143 146: 41(ivec4) ImageSampleImplicitLod 145 118 Bias 25 Store 138(txval42) 146 152: 12(ptr) AccessChain 148(psout) 149 Store 152 151 155: 154(ptr) AccessChain 148(psout) 153 Store 155 150 156:8(PS_OUTPUT) Load 148(psout) ReturnValue 156 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out000066400000000000000000000757541506534232700252610ustar00rootroot00000000000000hlsl.samplebias.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0.500000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0.500000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureOffset ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) 0:35 Constant: 0:35 0.500000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureOffset ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) 0:36 Constant: 0:36 0.500000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureOffset ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) 0:37 Constant: 0:37 0.500000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureOffset ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) 0:39 Constant: 0:39 0.500000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureOffset ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:40 Constant: 0:40 0.500000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureOffset ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) 0:41 Constant: 0:41 0.500000 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp float) 0:46 Depth: direct index for structure ( temp float) 0:46 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0.500000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0.500000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureOffset ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) 0:35 Constant: 0:35 0.500000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureOffset ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) 0:36 Constant: 0:36 0.500000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureOffset ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) 0:37 Constant: 0:37 0.500000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureOffset ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) 0:39 Constant: 0:39 0.500000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureOffset ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:40 Constant: 0:40 0.500000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureOffset ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) 0:41 Constant: 0:41 0.500000 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp float) 0:46 Depth: direct index for structure ( temp float) 0:46 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 161 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 144 148 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 31 "txval11" Name 34 "g_tTex1di4" Name 44 "txval12" Name 47 "g_tTex1du4" Name 54 "txval20" Name 57 "g_tTex2df4" Name 68 "txval21" Name 71 "g_tTex2di4" Name 80 "txval22" Name 83 "g_tTex2du4" Name 93 "txval30" Name 96 "g_tTex3df4" Name 106 "txval31" Name 109 "g_tTex3di4" Name 117 "txval32" Name 120 "g_tTex3du4" Name 132 "psout" Name 141 "flattenTemp" Name 144 "@entryPointOutput.Color" Name 148 "@entryPointOutput.Depth" Name 151 "g_tTex1df4a" Name 154 "g_tTexcdf4" Name 157 "g_tTexcdi4" Name 160 "g_tTexcdu4" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 2 Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 3 Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 4 Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 71(g_tTex2di4) Binding 5 Decorate 71(g_tTex2di4) DescriptorSet 0 Decorate 83(g_tTex2du4) Binding 6 Decorate 83(g_tTex2du4) DescriptorSet 0 Decorate 96(g_tTex3df4) Binding 7 Decorate 96(g_tTex3df4) DescriptorSet 0 Decorate 109(g_tTex3di4) Binding 8 Decorate 109(g_tTex3di4) DescriptorSet 0 Decorate 120(g_tTex3du4) Binding 9 Decorate 120(g_tTex3du4) DescriptorSet 0 Decorate 144(@entryPointOutput.Color) Location 0 Decorate 148(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 151(g_tTex1df4a) Binding 1 Decorate 151(g_tTex1df4a) DescriptorSet 0 Decorate 154(g_tTexcdf4) Binding 0 Decorate 154(g_tTexcdf4) DescriptorSet 0 Decorate 157(g_tTexcdi4) Binding 0 Decorate 157(g_tTexcdi4) DescriptorSet 0 Decorate 160(g_tTexcdu4) Binding 0 Decorate 160(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: TypeInt 32 1 26: 25(int) Constant 1 27: 6(float) Constant 1056964608 29: TypeVector 25(int) 4 30: TypePointer Function 29(ivec4) 32: TypeImage 25(int) 1D sampled format:Unknown 33: TypePointer UniformConstant 32 34(g_tTex1di4): 33(ptr) Variable UniformConstant 37: TypeSampledImage 32 39: 6(float) Constant 1045220557 41: TypeInt 32 0 42: TypeVector 41(int) 4 43: TypePointer Function 42(ivec4) 45: TypeImage 41(int) 1D sampled format:Unknown 46: TypePointer UniformConstant 45 47(g_tTex1du4): 46(ptr) Variable UniformConstant 50: TypeSampledImage 45 52: 6(float) Constant 1050253722 55: TypeImage 6(float) 2D sampled format:Unknown 56: TypePointer UniformConstant 55 57(g_tTex2df4): 56(ptr) Variable UniformConstant 60: TypeSampledImage 55 62: TypeVector 6(float) 2 63: 62(fvec2) ConstantComposite 24 39 64: TypeVector 25(int) 2 65: 25(int) Constant 0 66: 64(ivec2) ConstantComposite 26 65 69: TypeImage 25(int) 2D sampled format:Unknown 70: TypePointer UniformConstant 69 71(g_tTex2di4): 70(ptr) Variable UniformConstant 74: TypeSampledImage 69 76: 6(float) Constant 1053609165 77: 62(fvec2) ConstantComposite 52 76 78: 64(ivec2) ConstantComposite 26 26 81: TypeImage 41(int) 2D sampled format:Unknown 82: TypePointer UniformConstant 81 83(g_tTex2du4): 82(ptr) Variable UniformConstant 86: TypeSampledImage 81 88: 6(float) Constant 1058642330 89: 62(fvec2) ConstantComposite 27 88 90: 25(int) Constant 4294967295 91: 64(ivec2) ConstantComposite 26 90 94: TypeImage 6(float) 3D sampled format:Unknown 95: TypePointer UniformConstant 94 96(g_tTex3df4): 95(ptr) Variable UniformConstant 99: TypeSampledImage 94 101: TypeVector 6(float) 3 102: 101(fvec3) ConstantComposite 24 39 52 103: TypeVector 25(int) 3 104: 103(ivec3) ConstantComposite 26 65 26 107: TypeImage 25(int) 3D sampled format:Unknown 108: TypePointer UniformConstant 107 109(g_tTex3di4): 108(ptr) Variable UniformConstant 112: TypeSampledImage 107 114: 101(fvec3) ConstantComposite 76 27 88 115: 103(ivec3) ConstantComposite 26 26 26 118: TypeImage 41(int) 3D sampled format:Unknown 119: TypePointer UniformConstant 118 120(g_tTex3du4): 119(ptr) Variable UniformConstant 123: TypeSampledImage 118 125: 6(float) Constant 1060320051 126: 6(float) Constant 1061997773 127: 6(float) Constant 1063675494 128: 101(fvec3) ConstantComposite 125 126 127 129: 103(ivec3) ConstantComposite 26 65 90 131: TypePointer Function 8(PS_OUTPUT) 133: 6(float) Constant 1065353216 134: 7(fvec4) ConstantComposite 133 133 133 133 136: TypePointer Function 6(float) 143: TypePointer Output 7(fvec4) 144(@entryPointOutput.Color): 143(ptr) Variable Output 147: TypePointer Output 6(float) 148(@entryPointOutput.Depth): 147(ptr) Variable Output 151(g_tTex1df4a): 15(ptr) Variable UniformConstant 152: TypeImage 6(float) Cube sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTexcdf4): 153(ptr) Variable UniformConstant 155: TypeImage 25(int) Cube sampled format:Unknown 156: TypePointer UniformConstant 155 157(g_tTexcdi4): 156(ptr) Variable UniformConstant 158: TypeImage 41(int) Cube sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTexcdu4): 159(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 141(flattenTemp): 131(ptr) Variable Function 142:8(PS_OUTPUT) FunctionCall 10(@main() Store 141(flattenTemp) 142 145: 12(ptr) AccessChain 141(flattenTemp) 65 146: 7(fvec4) Load 145 Store 144(@entryPointOutput.Color) 146 149: 136(ptr) AccessChain 141(flattenTemp) 26 150: 6(float) Load 149 Store 148(@entryPointOutput.Depth) 150 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 31(txval11): 30(ptr) Variable Function 44(txval12): 43(ptr) Variable Function 54(txval20): 12(ptr) Variable Function 68(txval21): 30(ptr) Variable Function 80(txval22): 43(ptr) Variable Function 93(txval30): 12(ptr) Variable Function 106(txval31): 30(ptr) Variable Function 117(txval32): 43(ptr) Variable Function 132(psout): 131(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 28: 7(fvec4) ImageSampleImplicitLod 23 24 Bias ConstOffset 27 26 Store 13(txval10) 28 35: 32 Load 34(g_tTex1di4) 36: 18 Load 20(g_sSamp) 38: 37 SampledImage 35 36 40: 29(ivec4) ImageSampleImplicitLod 38 39 Bias ConstOffset 27 26 Store 31(txval11) 40 48: 45 Load 47(g_tTex1du4) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 53: 42(ivec4) ImageSampleImplicitLod 51 52 Bias ConstOffset 27 26 Store 44(txval12) 53 58: 55 Load 57(g_tTex2df4) 59: 18 Load 20(g_sSamp) 61: 60 SampledImage 58 59 67: 7(fvec4) ImageSampleImplicitLod 61 63 Bias ConstOffset 27 66 Store 54(txval20) 67 72: 69 Load 71(g_tTex2di4) 73: 18 Load 20(g_sSamp) 75: 74 SampledImage 72 73 79: 29(ivec4) ImageSampleImplicitLod 75 77 Bias ConstOffset 27 78 Store 68(txval21) 79 84: 81 Load 83(g_tTex2du4) 85: 18 Load 20(g_sSamp) 87: 86 SampledImage 84 85 92: 42(ivec4) ImageSampleImplicitLod 87 89 Bias ConstOffset 27 91 Store 80(txval22) 92 97: 94 Load 96(g_tTex3df4) 98: 18 Load 20(g_sSamp) 100: 99 SampledImage 97 98 105: 7(fvec4) ImageSampleImplicitLod 100 102 Bias ConstOffset 27 104 Store 93(txval30) 105 110: 107 Load 109(g_tTex3di4) 111: 18 Load 20(g_sSamp) 113: 112 SampledImage 110 111 116: 29(ivec4) ImageSampleImplicitLod 113 114 Bias ConstOffset 27 115 Store 106(txval31) 116 121: 118 Load 120(g_tTex3du4) 122: 18 Load 20(g_sSamp) 124: 123 SampledImage 121 122 130: 42(ivec4) ImageSampleImplicitLod 124 128 Bias ConstOffset 27 129 Store 117(txval32) 130 135: 12(ptr) AccessChain 132(psout) 65 Store 135 134 137: 136(ptr) AccessChain 132(psout) 26 Store 137 133 138:8(PS_OUTPUT) Load 132(psout) ReturnValue 138 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out000066400000000000000000000561121506534232700263030ustar00rootroot00000000000000hlsl.samplebias.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'txval10' ( temp 4-component vector of float) 0:23 textureOffset ( temp 4-component vector of float) 0:23 Construct combined texture-sampler ( temp sampler1DArray) 0:23 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:23 'g_sSamp' (layout( binding=0) uniform sampler) 0:23 Constant: 0:23 0.100000 0:23 0.200000 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0.500000 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of int) 0:24 'txval11' ( temp 4-component vector of int) 0:24 textureOffset ( temp 4-component vector of int) 0:24 Construct combined texture-sampler ( temp isampler1DArray) 0:24 'g_tTex1di4' ( uniform itexture1DArray) 0:24 'g_sSamp' (layout( binding=0) uniform sampler) 0:24 Constant: 0:24 0.200000 0:24 0.300000 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0.500000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'txval12' ( temp 4-component vector of uint) 0:25 textureOffset ( temp 4-component vector of uint) 0:25 Construct combined texture-sampler ( temp usampler1DArray) 0:25 'g_tTex1du4' ( uniform utexture1DArray) 0:25 'g_sSamp' (layout( binding=0) uniform sampler) 0:25 Constant: 0:25 0.300000 0:25 0.400000 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0.500000 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval20' ( temp 4-component vector of float) 0:27 textureOffset ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler2DArray) 0:27 'g_tTex2df4' ( uniform texture2DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 0.300000 0:27 Constant: 0:27 0 (const int) 0:27 0 (const int) 0:27 Constant: 0:27 0.500000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval21' ( temp 4-component vector of int) 0:28 textureOffset ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler2DArray) 0:28 'g_tTex2di4' ( uniform itexture2DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.300000 0:28 0.400000 0:28 0.500000 0:28 Constant: 0:28 0 (const int) 0:28 0 (const int) 0:28 Constant: 0:28 0.500000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval22' ( temp 4-component vector of uint) 0:29 textureOffset ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler2DArray) 0:29 'g_tTex2du4' ( uniform utexture2DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.700000 0:29 Constant: 0:29 0 (const int) 0:29 1 (const int) 0:29 Constant: 0:29 0.500000 0:33 move second child to first child ( temp 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:34 move second child to first child ( temp float) 0:34 Depth: direct index for structure ( temp float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 0:36 Branch: Return with expression 0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:20 Color: direct index for structure ( temp 4-component vector of float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:20 Depth: direct index for structure ( temp float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'txval10' ( temp 4-component vector of float) 0:23 textureOffset ( temp 4-component vector of float) 0:23 Construct combined texture-sampler ( temp sampler1DArray) 0:23 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:23 'g_sSamp' (layout( binding=0) uniform sampler) 0:23 Constant: 0:23 0.100000 0:23 0.200000 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 0.500000 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of int) 0:24 'txval11' ( temp 4-component vector of int) 0:24 textureOffset ( temp 4-component vector of int) 0:24 Construct combined texture-sampler ( temp isampler1DArray) 0:24 'g_tTex1di4' ( uniform itexture1DArray) 0:24 'g_sSamp' (layout( binding=0) uniform sampler) 0:24 Constant: 0:24 0.200000 0:24 0.300000 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0.500000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'txval12' ( temp 4-component vector of uint) 0:25 textureOffset ( temp 4-component vector of uint) 0:25 Construct combined texture-sampler ( temp usampler1DArray) 0:25 'g_tTex1du4' ( uniform utexture1DArray) 0:25 'g_sSamp' (layout( binding=0) uniform sampler) 0:25 Constant: 0:25 0.300000 0:25 0.400000 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0.500000 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval20' ( temp 4-component vector of float) 0:27 textureOffset ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler2DArray) 0:27 'g_tTex2df4' ( uniform texture2DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 0.300000 0:27 Constant: 0:27 0 (const int) 0:27 0 (const int) 0:27 Constant: 0:27 0.500000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval21' ( temp 4-component vector of int) 0:28 textureOffset ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler2DArray) 0:28 'g_tTex2di4' ( uniform itexture2DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.300000 0:28 0.400000 0:28 0.500000 0:28 Constant: 0:28 0 (const int) 0:28 0 (const int) 0:28 Constant: 0:28 0.500000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval22' ( temp 4-component vector of uint) 0:29 textureOffset ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler2DArray) 0:29 'g_tTex2du4' ( uniform utexture2DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.700000 0:29 Constant: 0:29 0 (const int) 0:29 1 (const int) 0:29 Constant: 0:29 0.500000 0:33 move second child to first child ( temp 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:34 move second child to first child ( temp float) 0:34 Depth: direct index for structure ( temp float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 0:36 Branch: Return with expression 0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:20 Color: direct index for structure ( temp 4-component vector of float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:20 Depth: direct index for structure ( temp float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 118 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 110 114 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 34 "txval11" Name 37 "g_tTex1di4" Name 49 "txval12" Name 52 "g_tTex1du4" Name 61 "txval20" Name 64 "g_tTex2df4" Name 74 "txval21" Name 77 "g_tTex2di4" Name 84 "txval22" Name 87 "g_tTex2du4" Name 98 "psout" Name 107 "flattenTemp" Name 110 "@entryPointOutput.Color" Name 114 "@entryPointOutput.Depth" Name 117 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 37(g_tTex1di4) Binding 2 Decorate 37(g_tTex1di4) DescriptorSet 0 Decorate 52(g_tTex1du4) Binding 3 Decorate 52(g_tTex1du4) DescriptorSet 0 Decorate 64(g_tTex2df4) Binding 4 Decorate 64(g_tTex2df4) DescriptorSet 0 Decorate 77(g_tTex2di4) Binding 5 Decorate 77(g_tTex2di4) DescriptorSet 0 Decorate 87(g_tTex2du4) Binding 6 Decorate 87(g_tTex2du4) DescriptorSet 0 Decorate 110(@entryPointOutput.Color) Location 0 Decorate 114(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 117(g_tTex1df4a) Binding 1 Decorate 117(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: TypeInt 32 1 29: 28(int) Constant 0 30: 6(float) Constant 1056964608 32: TypeVector 28(int) 4 33: TypePointer Function 32(ivec4) 35: TypeImage 28(int) 1D array sampled format:Unknown 36: TypePointer UniformConstant 35 37(g_tTex1di4): 36(ptr) Variable UniformConstant 40: TypeSampledImage 35 42: 6(float) Constant 1050253722 43: 24(fvec2) ConstantComposite 26 42 44: 28(int) Constant 1 46: TypeInt 32 0 47: TypeVector 46(int) 4 48: TypePointer Function 47(ivec4) 50: TypeImage 46(int) 1D array sampled format:Unknown 51: TypePointer UniformConstant 50 52(g_tTex1du4): 51(ptr) Variable UniformConstant 55: TypeSampledImage 50 57: 6(float) Constant 1053609165 58: 24(fvec2) ConstantComposite 42 57 59: 28(int) Constant 2 62: TypeImage 6(float) 2D array sampled format:Unknown 63: TypePointer UniformConstant 62 64(g_tTex2df4): 63(ptr) Variable UniformConstant 67: TypeSampledImage 62 69: TypeVector 6(float) 3 70: 69(fvec3) ConstantComposite 25 26 42 71: TypeVector 28(int) 2 72: 71(ivec2) ConstantComposite 29 29 75: TypeImage 28(int) 2D array sampled format:Unknown 76: TypePointer UniformConstant 75 77(g_tTex2di4): 76(ptr) Variable UniformConstant 80: TypeSampledImage 75 82: 69(fvec3) ConstantComposite 42 57 30 85: TypeImage 46(int) 2D array sampled format:Unknown 86: TypePointer UniformConstant 85 87(g_tTex2du4): 86(ptr) Variable UniformConstant 90: TypeSampledImage 85 92: 6(float) Constant 1058642330 93: 6(float) Constant 1060320051 94: 69(fvec3) ConstantComposite 30 92 93 95: 71(ivec2) ConstantComposite 29 44 97: TypePointer Function 8(PS_OUTPUT) 99: 6(float) Constant 1065353216 100: 7(fvec4) ConstantComposite 99 99 99 99 102: TypePointer Function 6(float) 109: TypePointer Output 7(fvec4) 110(@entryPointOutput.Color): 109(ptr) Variable Output 113: TypePointer Output 6(float) 114(@entryPointOutput.Depth): 113(ptr) Variable Output 117(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 107(flattenTemp): 97(ptr) Variable Function 108:8(PS_OUTPUT) FunctionCall 10(@main() Store 107(flattenTemp) 108 111: 12(ptr) AccessChain 107(flattenTemp) 29 112: 7(fvec4) Load 111 Store 110(@entryPointOutput.Color) 112 115: 102(ptr) AccessChain 107(flattenTemp) 44 116: 6(float) Load 115 Store 114(@entryPointOutput.Depth) 116 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 34(txval11): 33(ptr) Variable Function 49(txval12): 48(ptr) Variable Function 61(txval20): 12(ptr) Variable Function 74(txval21): 33(ptr) Variable Function 84(txval22): 48(ptr) Variable Function 98(psout): 97(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 31: 7(fvec4) ImageSampleImplicitLod 23 27 Bias ConstOffset 30 29 Store 13(txval10) 31 38: 35 Load 37(g_tTex1di4) 39: 18 Load 20(g_sSamp) 41: 40 SampledImage 38 39 45: 32(ivec4) ImageSampleImplicitLod 41 43 Bias ConstOffset 30 44 Store 34(txval11) 45 53: 50 Load 52(g_tTex1du4) 54: 18 Load 20(g_sSamp) 56: 55 SampledImage 53 54 60: 47(ivec4) ImageSampleImplicitLod 56 58 Bias ConstOffset 30 59 Store 49(txval12) 60 65: 62 Load 64(g_tTex2df4) 66: 18 Load 20(g_sSamp) 68: 67 SampledImage 65 66 73: 7(fvec4) ImageSampleImplicitLod 68 70 Bias ConstOffset 30 72 Store 61(txval20) 73 78: 75 Load 77(g_tTex2di4) 79: 18 Load 20(g_sSamp) 81: 80 SampledImage 78 79 83: 32(ivec4) ImageSampleImplicitLod 81 82 Bias ConstOffset 30 72 Store 74(txval21) 83 88: 85 Load 87(g_tTex2du4) 89: 18 Load 20(g_sSamp) 91: 90 SampledImage 88 89 96: 47(ivec4) ImageSampleImplicitLod 91 94 Bias ConstOffset 30 95 Store 84(txval22) 96 101: 12(ptr) AccessChain 98(psout) 29 Store 101 100 103: 102(ptr) AccessChain 98(psout) 44 Store 103 99 104:8(PS_OUTPUT) Load 98(psout) ReturnValue 104 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out000066400000000000000000001053051506534232700247340ustar00rootroot00000000000000hlsl.samplecmp.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r10' ( temp float) 0:42 texture ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 Constant: 0:42 0.750000 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r12' ( temp float) 0:43 texture ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec3 ( temp 3-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 Constant: 0:43 0.750000 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r14' ( temp float) 0:44 texture ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec3 ( temp 3-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 Constant: 0:44 0.750000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r30' ( temp float) 0:47 texture ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 0.300000 0:47 Constant: 0:47 0.750000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r32' ( temp float) 0:48 texture ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec4 ( temp 4-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 0.300000 0:48 Constant: 0:48 0.750000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r34' ( temp float) 0:49 texture ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 0.300000 0:49 Constant: 0:49 0.750000 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'r60' ( temp float) 0:52 texture ( temp float) 0:52 Construct combined texture-sampler ( temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' ( uniform textureCubeArrayShadow) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 Construct vec4 ( temp 4-component vector of float) 0:52 Constant: 0:52 0.100000 0:52 0.200000 0:52 0.300000 0:52 0.400000 0:52 Constant: 0:52 0.750000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r62' ( temp float) 0:53 texture ( temp float) 0:53 Construct combined texture-sampler ( temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 Construct vec4 ( temp 4-component vector of float) 0:53 Constant: 0:53 0.100000 0:53 0.200000 0:53 0.300000 0:53 0.400000 0:53 Constant: 0:53 0.750000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'r64' ( temp float) 0:54 texture ( temp float) 0:54 Construct combined texture-sampler ( temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow) 0:54 'g_sSamp' (layout( binding=0) uniform sampler) 0:54 Construct vec4 ( temp 4-component vector of float) 0:54 Constant: 0:54 0.100000 0:54 0.200000 0:54 0.300000 0:54 0.400000 0:54 Constant: 0:54 0.750000 0:56 move second child to first child ( temp 4-component vector of float) 0:56 Color: direct index for structure ( temp 4-component vector of float) 0:56 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1.000000 0:56 1.000000 0:56 1.000000 0:56 1.000000 0:57 move second child to first child ( temp float) 0:57 Depth: direct index for structure ( temp float) 0:57 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 1.000000 0:59 Branch: Return with expression 0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:? 'g_tTexcdf4a' ( uniform textureCubeArrayShadow) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r10' ( temp float) 0:42 texture ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 Constant: 0:42 0.750000 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r12' ( temp float) 0:43 texture ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec3 ( temp 3-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 Constant: 0:43 0.750000 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r14' ( temp float) 0:44 texture ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec3 ( temp 3-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 Constant: 0:44 0.750000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r30' ( temp float) 0:47 texture ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 0.300000 0:47 Constant: 0:47 0.750000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r32' ( temp float) 0:48 texture ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec4 ( temp 4-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 0.300000 0:48 Constant: 0:48 0.750000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r34' ( temp float) 0:49 texture ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 0.300000 0:49 Constant: 0:49 0.750000 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'r60' ( temp float) 0:52 texture ( temp float) 0:52 Construct combined texture-sampler ( temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' ( uniform textureCubeArrayShadow) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 Construct vec4 ( temp 4-component vector of float) 0:52 Constant: 0:52 0.100000 0:52 0.200000 0:52 0.300000 0:52 0.400000 0:52 Constant: 0:52 0.750000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r62' ( temp float) 0:53 texture ( temp float) 0:53 Construct combined texture-sampler ( temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 Construct vec4 ( temp 4-component vector of float) 0:53 Constant: 0:53 0.100000 0:53 0.200000 0:53 0.300000 0:53 0.400000 0:53 Constant: 0:53 0.750000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'r64' ( temp float) 0:54 texture ( temp float) 0:54 Construct combined texture-sampler ( temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow) 0:54 'g_sSamp' (layout( binding=0) uniform sampler) 0:54 Construct vec4 ( temp 4-component vector of float) 0:54 Constant: 0:54 0.100000 0:54 0.200000 0:54 0.300000 0:54 0.400000 0:54 Constant: 0:54 0.750000 0:56 move second child to first child ( temp 4-component vector of float) 0:56 Color: direct index for structure ( temp 4-component vector of float) 0:56 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1.000000 0:56 1.000000 0:56 1.000000 0:56 1.000000 0:57 move second child to first child ( temp float) 0:57 Depth: direct index for structure ( temp float) 0:57 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 1.000000 0:59 Branch: Return with expression 0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:? 'g_tTexcdf4a' ( uniform textureCubeArrayShadow) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 194 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 151 155 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r10" Name 16 "g_tTex1df4a" Name 20 "g_sSamp" Name 35 "r12" Name 39 "g_tTex1di4a" Name 49 "r14" Name 53 "g_tTex1du4a" Name 63 "r30" Name 66 "g_tTex2df4a" Name 79 "r32" Name 82 "g_tTex2di4a" Name 93 "r34" Name 96 "g_tTex2du4a" Name 107 "r60" Name 110 "g_tTexcdf4a" Name 118 "r62" Name 121 "g_tTexcdi4a" Name 127 "r64" Name 130 "g_tTexcdu4a" Name 137 "psout" Name 148 "flattenTemp" Name 151 "@entryPointOutput.Color" Name 155 "@entryPointOutput.Depth" Name 160 "g_tTex1df4" Name 163 "g_tTex1di4" Name 166 "g_tTex1du4" Name 169 "g_tTex2df4" Name 172 "g_tTex2di4" Name 175 "g_tTex2du4" Name 178 "g_tTex3df4" Name 181 "g_tTex3di4" Name 184 "g_tTex3du4" Name 187 "g_tTexcdf4" Name 190 "g_tTexcdi4" Name 193 "g_tTexcdu4" Decorate 16(g_tTex1df4a) Binding 1 Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 39(g_tTex1di4a) Binding 2 Decorate 39(g_tTex1di4a) DescriptorSet 0 Decorate 53(g_tTex1du4a) Binding 3 Decorate 53(g_tTex1du4a) DescriptorSet 0 Decorate 66(g_tTex2df4a) Binding 4 Decorate 66(g_tTex2df4a) DescriptorSet 0 Decorate 82(g_tTex2di4a) Binding 5 Decorate 82(g_tTex2di4a) DescriptorSet 0 Decorate 96(g_tTex2du4a) Binding 6 Decorate 96(g_tTex2du4a) DescriptorSet 0 Decorate 110(g_tTexcdf4a) Binding 7 Decorate 110(g_tTexcdf4a) DescriptorSet 0 Decorate 121(g_tTexcdi4a) Binding 8 Decorate 121(g_tTexcdi4a) DescriptorSet 0 Decorate 130(g_tTexcdu4a) Binding 9 Decorate 130(g_tTexcdu4a) DescriptorSet 0 Decorate 151(@entryPointOutput.Color) Location 0 Decorate 155(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 160(g_tTex1df4) Binding 0 Decorate 160(g_tTex1df4) DescriptorSet 0 Decorate 163(g_tTex1di4) Binding 0 Decorate 163(g_tTex1di4) DescriptorSet 0 Decorate 166(g_tTex1du4) Binding 0 Decorate 166(g_tTex1du4) DescriptorSet 0 Decorate 169(g_tTex2df4) Binding 0 Decorate 169(g_tTex2df4) DescriptorSet 0 Decorate 172(g_tTex2di4) Binding 0 Decorate 172(g_tTex2di4) DescriptorSet 0 Decorate 175(g_tTex2du4) Binding 0 Decorate 175(g_tTex2du4) DescriptorSet 0 Decorate 178(g_tTex3df4) Binding 0 Decorate 178(g_tTex3df4) DescriptorSet 0 Decorate 181(g_tTex3di4) Binding 0 Decorate 181(g_tTex3di4) DescriptorSet 0 Decorate 184(g_tTex3du4) Binding 0 Decorate 184(g_tTex3du4) DescriptorSet 0 Decorate 187(g_tTexcdf4) Binding 0 Decorate 187(g_tTexcdf4) DescriptorSet 0 Decorate 190(g_tTexcdi4) Binding 0 Decorate 190(g_tTexcdi4) DescriptorSet 0 Decorate 193(g_tTexcdu4) Binding 0 Decorate 193(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D depth array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1061158912 29: TypeVector 6(float) 3 36: TypeInt 32 1 37: TypeImage 36(int) 1D depth array sampled format:Unknown 38: TypePointer UniformConstant 37 39(g_tTex1di4a): 38(ptr) Variable UniformConstant 42: TypeSampledImage 37 50: TypeInt 32 0 51: TypeImage 50(int) 1D depth array sampled format:Unknown 52: TypePointer UniformConstant 51 53(g_tTex1du4a): 52(ptr) Variable UniformConstant 56: TypeSampledImage 51 64: TypeImage 6(float) 2D depth array sampled format:Unknown 65: TypePointer UniformConstant 64 66(g_tTex2df4a): 65(ptr) Variable UniformConstant 69: TypeSampledImage 64 71: 6(float) Constant 1050253722 72: 29(fvec3) ConstantComposite 25 26 71 80: TypeImage 36(int) 2D depth array sampled format:Unknown 81: TypePointer UniformConstant 80 82(g_tTex2di4a): 81(ptr) Variable UniformConstant 85: TypeSampledImage 80 94: TypeImage 50(int) 2D depth array sampled format:Unknown 95: TypePointer UniformConstant 94 96(g_tTex2du4a): 95(ptr) Variable UniformConstant 99: TypeSampledImage 94 108: TypeImage 6(float) Cube depth array sampled format:Unknown 109: TypePointer UniformConstant 108 110(g_tTexcdf4a): 109(ptr) Variable UniformConstant 113: TypeSampledImage 108 115: 6(float) Constant 1053609165 116: 7(fvec4) ConstantComposite 25 26 71 115 119: TypeImage 36(int) Cube depth array sampled format:Unknown 120: TypePointer UniformConstant 119 121(g_tTexcdi4a): 120(ptr) Variable UniformConstant 124: TypeSampledImage 119 128: TypeImage 50(int) Cube depth array sampled format:Unknown 129: TypePointer UniformConstant 128 130(g_tTexcdu4a): 129(ptr) Variable UniformConstant 133: TypeSampledImage 128 136: TypePointer Function 8(PS_OUTPUT) 138: 36(int) Constant 0 139: 6(float) Constant 1065353216 140: 7(fvec4) ConstantComposite 139 139 139 139 141: TypePointer Function 7(fvec4) 143: 36(int) Constant 1 150: TypePointer Output 7(fvec4) 151(@entryPointOutput.Color): 150(ptr) Variable Output 154: TypePointer Output 6(float) 155(@entryPointOutput.Depth): 154(ptr) Variable Output 158: TypeImage 6(float) 1D sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTex1df4): 159(ptr) Variable UniformConstant 161: TypeImage 36(int) 1D sampled format:Unknown 162: TypePointer UniformConstant 161 163(g_tTex1di4): 162(ptr) Variable UniformConstant 164: TypeImage 50(int) 1D sampled format:Unknown 165: TypePointer UniformConstant 164 166(g_tTex1du4): 165(ptr) Variable UniformConstant 167: TypeImage 6(float) 2D sampled format:Unknown 168: TypePointer UniformConstant 167 169(g_tTex2df4): 168(ptr) Variable UniformConstant 170: TypeImage 36(int) 2D sampled format:Unknown 171: TypePointer UniformConstant 170 172(g_tTex2di4): 171(ptr) Variable UniformConstant 173: TypeImage 50(int) 2D sampled format:Unknown 174: TypePointer UniformConstant 173 175(g_tTex2du4): 174(ptr) Variable UniformConstant 176: TypeImage 6(float) 3D sampled format:Unknown 177: TypePointer UniformConstant 176 178(g_tTex3df4): 177(ptr) Variable UniformConstant 179: TypeImage 36(int) 3D sampled format:Unknown 180: TypePointer UniformConstant 179 181(g_tTex3di4): 180(ptr) Variable UniformConstant 182: TypeImage 50(int) 3D sampled format:Unknown 183: TypePointer UniformConstant 182 184(g_tTex3du4): 183(ptr) Variable UniformConstant 185: TypeImage 6(float) Cube sampled format:Unknown 186: TypePointer UniformConstant 185 187(g_tTexcdf4): 186(ptr) Variable UniformConstant 188: TypeImage 36(int) Cube sampled format:Unknown 189: TypePointer UniformConstant 188 190(g_tTexcdi4): 189(ptr) Variable UniformConstant 191: TypeImage 50(int) Cube sampled format:Unknown 192: TypePointer UniformConstant 191 193(g_tTexcdu4): 192(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 148(flattenTemp): 136(ptr) Variable Function 149:8(PS_OUTPUT) FunctionCall 10(@main() Store 148(flattenTemp) 149 152: 141(ptr) AccessChain 148(flattenTemp) 138 153: 7(fvec4) Load 152 Store 151(@entryPointOutput.Color) 153 156: 12(ptr) AccessChain 148(flattenTemp) 143 157: 6(float) Load 156 Store 155(@entryPointOutput.Depth) 157 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r10): 12(ptr) Variable Function 35(r12): 12(ptr) Variable Function 49(r14): 12(ptr) Variable Function 63(r30): 12(ptr) Variable Function 79(r32): 12(ptr) Variable Function 93(r34): 12(ptr) Variable Function 107(r60): 12(ptr) Variable Function 118(r62): 12(ptr) Variable Function 127(r64): 12(ptr) Variable Function 137(psout): 136(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 30: 6(float) CompositeExtract 27 0 31: 6(float) CompositeExtract 27 1 32: 29(fvec3) CompositeConstruct 30 31 28 33: 6(float) CompositeExtract 32 2 34: 6(float) ImageSampleDrefImplicitLod 23 32 33 Store 13(r10) 34 40: 37 Load 39(g_tTex1di4a) 41: 18 Load 20(g_sSamp) 43: 42 SampledImage 40 41 44: 6(float) CompositeExtract 27 0 45: 6(float) CompositeExtract 27 1 46: 29(fvec3) CompositeConstruct 44 45 28 47: 6(float) CompositeExtract 46 2 48: 6(float) ImageSampleDrefImplicitLod 43 46 47 Store 35(r12) 48 54: 51 Load 53(g_tTex1du4a) 55: 18 Load 20(g_sSamp) 57: 56 SampledImage 54 55 58: 6(float) CompositeExtract 27 0 59: 6(float) CompositeExtract 27 1 60: 29(fvec3) CompositeConstruct 58 59 28 61: 6(float) CompositeExtract 60 2 62: 6(float) ImageSampleDrefImplicitLod 57 60 61 Store 49(r14) 62 67: 64 Load 66(g_tTex2df4a) 68: 18 Load 20(g_sSamp) 70: 69 SampledImage 67 68 73: 6(float) CompositeExtract 72 0 74: 6(float) CompositeExtract 72 1 75: 6(float) CompositeExtract 72 2 76: 7(fvec4) CompositeConstruct 73 74 75 28 77: 6(float) CompositeExtract 76 3 78: 6(float) ImageSampleDrefImplicitLod 70 76 77 Store 63(r30) 78 83: 80 Load 82(g_tTex2di4a) 84: 18 Load 20(g_sSamp) 86: 85 SampledImage 83 84 87: 6(float) CompositeExtract 72 0 88: 6(float) CompositeExtract 72 1 89: 6(float) CompositeExtract 72 2 90: 7(fvec4) CompositeConstruct 87 88 89 28 91: 6(float) CompositeExtract 90 3 92: 6(float) ImageSampleDrefImplicitLod 86 90 91 Store 79(r32) 92 97: 94 Load 96(g_tTex2du4a) 98: 18 Load 20(g_sSamp) 100: 99 SampledImage 97 98 101: 6(float) CompositeExtract 72 0 102: 6(float) CompositeExtract 72 1 103: 6(float) CompositeExtract 72 2 104: 7(fvec4) CompositeConstruct 101 102 103 28 105: 6(float) CompositeExtract 104 3 106: 6(float) ImageSampleDrefImplicitLod 100 104 105 Store 93(r34) 106 111: 108 Load 110(g_tTexcdf4a) 112: 18 Load 20(g_sSamp) 114: 113 SampledImage 111 112 117: 6(float) ImageSampleDrefImplicitLod 114 116 28 Store 107(r60) 117 122: 119 Load 121(g_tTexcdi4a) 123: 18 Load 20(g_sSamp) 125: 124 SampledImage 122 123 126: 6(float) ImageSampleDrefImplicitLod 125 116 28 Store 118(r62) 126 131: 128 Load 130(g_tTexcdu4a) 132: 18 Load 20(g_sSamp) 134: 133 SampledImage 131 132 135: 6(float) ImageSampleDrefImplicitLod 134 116 28 Store 127(r64) 135 142: 141(ptr) AccessChain 137(psout) 138 Store 142 140 144: 12(ptr) AccessChain 137(psout) 143 Store 144 139 145:8(PS_OUTPUT) Load 137(psout) ReturnValue 145 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out000066400000000000000000001044031506534232700246750ustar00rootroot00000000000000hlsl.samplecmp.basic.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r00' ( temp float) 0:42 texture ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DShadow) 0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec2 ( temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: 0:42 0.750000 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r02' ( temp float) 0:43 texture ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DShadow) 0:43 'g_tTex1di4' ( uniform itexture1DShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec2 ( temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: 0:43 0.750000 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r04' ( temp float) 0:44 texture ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DShadow) 0:44 'g_tTex1du4' ( uniform utexture1DShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec2 ( temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: 0:44 0.750000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r20' ( temp float) 0:47 texture ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DShadow) 0:47 'g_tTex2df4' ( uniform texture2DShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec3 ( temp 3-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 Constant: 0:47 0.750000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r22' ( temp float) 0:48 texture ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DShadow) 0:48 'g_tTex2di4' ( uniform itexture2DShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec3 ( temp 3-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 Constant: 0:48 0.750000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r24' ( temp float) 0:49 texture ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DShadow) 0:49 'g_tTex2du4' ( uniform utexture2DShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec3 ( temp 3-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 Constant: 0:49 0.750000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r50' ( temp float) 0:53 texture ( temp float) 0:53 Construct combined texture-sampler ( temp samplerCubeShadow) 0:53 'g_tTexcdf4' ( uniform textureCubeShadow) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 Construct vec4 ( temp 4-component vector of float) 0:53 Constant: 0:53 0.100000 0:53 0.200000 0:53 0.300000 0:53 Constant: 0:53 0.750000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'r52' ( temp float) 0:54 texture ( temp float) 0:54 Construct combined texture-sampler ( temp isamplerCubeShadow) 0:54 'g_tTexcdi4' ( uniform itextureCubeShadow) 0:54 'g_sSamp' (layout( binding=0) uniform sampler) 0:54 Construct vec4 ( temp 4-component vector of float) 0:54 Constant: 0:54 0.100000 0:54 0.200000 0:54 0.300000 0:54 Constant: 0:54 0.750000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'r54' ( temp float) 0:55 texture ( temp float) 0:55 Construct combined texture-sampler ( temp usamplerCubeShadow) 0:55 'g_tTexcdu4' ( uniform utextureCubeShadow) 0:55 'g_sSamp' (layout( binding=0) uniform sampler) 0:55 Construct vec4 ( temp 4-component vector of float) 0:55 Constant: 0:55 0.100000 0:55 0.200000 0:55 0.300000 0:55 Constant: 0:55 0.750000 0:57 move second child to first child ( temp 4-component vector of float) 0:57 Color: direct index for structure ( temp 4-component vector of float) 0:57 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1.000000 0:57 1.000000 0:57 1.000000 0:57 1.000000 0:58 move second child to first child ( temp float) 0:58 Depth: direct index for structure ( temp float) 0:58 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 1.000000 0:60 Branch: Return with expression 0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:? 'g_tTex1di4' ( uniform itexture1DShadow) 0:? 'g_tTex1du4' ( uniform utexture1DShadow) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCubeShadow) 0:? 'g_tTexcdi4' ( uniform itextureCubeShadow) 0:? 'g_tTexcdu4' ( uniform utextureCubeShadow) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r00' ( temp float) 0:42 texture ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DShadow) 0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec2 ( temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: 0:42 0.750000 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r02' ( temp float) 0:43 texture ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DShadow) 0:43 'g_tTex1di4' ( uniform itexture1DShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec2 ( temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: 0:43 0.750000 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r04' ( temp float) 0:44 texture ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DShadow) 0:44 'g_tTex1du4' ( uniform utexture1DShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec2 ( temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: 0:44 0.750000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r20' ( temp float) 0:47 texture ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DShadow) 0:47 'g_tTex2df4' ( uniform texture2DShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec3 ( temp 3-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 Constant: 0:47 0.750000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r22' ( temp float) 0:48 texture ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DShadow) 0:48 'g_tTex2di4' ( uniform itexture2DShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec3 ( temp 3-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 Constant: 0:48 0.750000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r24' ( temp float) 0:49 texture ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DShadow) 0:49 'g_tTex2du4' ( uniform utexture2DShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec3 ( temp 3-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 Constant: 0:49 0.750000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r50' ( temp float) 0:53 texture ( temp float) 0:53 Construct combined texture-sampler ( temp samplerCubeShadow) 0:53 'g_tTexcdf4' ( uniform textureCubeShadow) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 Construct vec4 ( temp 4-component vector of float) 0:53 Constant: 0:53 0.100000 0:53 0.200000 0:53 0.300000 0:53 Constant: 0:53 0.750000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'r52' ( temp float) 0:54 texture ( temp float) 0:54 Construct combined texture-sampler ( temp isamplerCubeShadow) 0:54 'g_tTexcdi4' ( uniform itextureCubeShadow) 0:54 'g_sSamp' (layout( binding=0) uniform sampler) 0:54 Construct vec4 ( temp 4-component vector of float) 0:54 Constant: 0:54 0.100000 0:54 0.200000 0:54 0.300000 0:54 Constant: 0:54 0.750000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'r54' ( temp float) 0:55 texture ( temp float) 0:55 Construct combined texture-sampler ( temp usamplerCubeShadow) 0:55 'g_tTexcdu4' ( uniform utextureCubeShadow) 0:55 'g_sSamp' (layout( binding=0) uniform sampler) 0:55 Construct vec4 ( temp 4-component vector of float) 0:55 Constant: 0:55 0.100000 0:55 0.200000 0:55 0.300000 0:55 Constant: 0:55 0.750000 0:57 move second child to first child ( temp 4-component vector of float) 0:57 Color: direct index for structure ( temp 4-component vector of float) 0:57 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1.000000 0:57 1.000000 0:57 1.000000 0:57 1.000000 0:58 move second child to first child ( temp float) 0:58 Depth: direct index for structure ( temp float) 0:58 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 1.000000 0:60 Branch: Return with expression 0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:? 'g_tTex1di4' ( uniform itexture1DShadow) 0:? 'g_tTex1du4' ( uniform utexture1DShadow) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCubeShadow) 0:? 'g_tTexcdi4' ( uniform itextureCubeShadow) 0:? 'g_tTexcdu4' ( uniform utextureCubeShadow) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 155 159 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r00" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 30 "r02" Name 34 "g_tTex1di4" Name 42 "r04" Name 46 "g_tTex1du4" Name 54 "r20" Name 57 "g_tTex2df4" Name 70 "r22" Name 73 "g_tTex2di4" Name 83 "r24" Name 86 "g_tTex2du4" Name 96 "r50" Name 99 "g_tTexcdf4" Name 112 "r52" Name 115 "g_tTexcdi4" Name 126 "r54" Name 129 "g_tTexcdu4" Name 141 "psout" Name 152 "flattenTemp" Name 155 "@entryPointOutput.Color" Name 159 "@entryPointOutput.Depth" Name 164 "g_tTex3df4" Name 167 "g_tTex3di4" Name 170 "g_tTex3du4" Name 173 "g_tTex1df4a" Name 176 "g_tTex1di4a" Name 179 "g_tTex1du4a" Name 182 "g_tTex2df4a" Name 185 "g_tTex2di4a" Name 188 "g_tTex2du4a" Name 191 "g_tTexcdf4a" Name 194 "g_tTexcdi4a" Name 197 "g_tTexcdu4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 1 Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 2 Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 3 Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 73(g_tTex2di4) Binding 4 Decorate 73(g_tTex2di4) DescriptorSet 0 Decorate 86(g_tTex2du4) Binding 5 Decorate 86(g_tTex2du4) DescriptorSet 0 Decorate 99(g_tTexcdf4) Binding 6 Decorate 99(g_tTexcdf4) DescriptorSet 0 Decorate 115(g_tTexcdi4) Binding 7 Decorate 115(g_tTexcdi4) DescriptorSet 0 Decorate 129(g_tTexcdu4) Binding 8 Decorate 129(g_tTexcdu4) DescriptorSet 0 Decorate 155(@entryPointOutput.Color) Location 0 Decorate 159(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 164(g_tTex3df4) Binding 0 Decorate 164(g_tTex3df4) DescriptorSet 0 Decorate 167(g_tTex3di4) Binding 0 Decorate 167(g_tTex3di4) DescriptorSet 0 Decorate 170(g_tTex3du4) Binding 0 Decorate 170(g_tTex3du4) DescriptorSet 0 Decorate 173(g_tTex1df4a) Binding 0 Decorate 173(g_tTex1df4a) DescriptorSet 0 Decorate 176(g_tTex1di4a) Binding 0 Decorate 176(g_tTex1di4a) DescriptorSet 0 Decorate 179(g_tTex1du4a) Binding 0 Decorate 179(g_tTex1du4a) DescriptorSet 0 Decorate 182(g_tTex2df4a) Binding 0 Decorate 182(g_tTex2df4a) DescriptorSet 0 Decorate 185(g_tTex2di4a) Binding 0 Decorate 185(g_tTex2di4a) DescriptorSet 0 Decorate 188(g_tTex2du4a) Binding 0 Decorate 188(g_tTex2du4a) DescriptorSet 0 Decorate 191(g_tTexcdf4a) Binding 0 Decorate 191(g_tTexcdf4a) DescriptorSet 0 Decorate 194(g_tTexcdi4a) Binding 0 Decorate 194(g_tTexcdi4a) DescriptorSet 0 Decorate 197(g_tTexcdu4a) Binding 0 Decorate 197(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D depth sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1061158912 26: TypeVector 6(float) 2 31: TypeInt 32 1 32: TypeImage 31(int) 1D depth sampled format:Unknown 33: TypePointer UniformConstant 32 34(g_tTex1di4): 33(ptr) Variable UniformConstant 37: TypeSampledImage 32 43: TypeInt 32 0 44: TypeImage 43(int) 1D depth sampled format:Unknown 45: TypePointer UniformConstant 44 46(g_tTex1du4): 45(ptr) Variable UniformConstant 49: TypeSampledImage 44 55: TypeImage 6(float) 2D depth sampled format:Unknown 56: TypePointer UniformConstant 55 57(g_tTex2df4): 56(ptr) Variable UniformConstant 60: TypeSampledImage 55 62: 6(float) Constant 1045220557 63: 26(fvec2) ConstantComposite 24 62 64: TypeVector 6(float) 3 71: TypeImage 31(int) 2D depth sampled format:Unknown 72: TypePointer UniformConstant 71 73(g_tTex2di4): 72(ptr) Variable UniformConstant 76: TypeSampledImage 71 84: TypeImage 43(int) 2D depth sampled format:Unknown 85: TypePointer UniformConstant 84 86(g_tTex2du4): 85(ptr) Variable UniformConstant 89: TypeSampledImage 84 97: TypeImage 6(float) Cube depth sampled format:Unknown 98: TypePointer UniformConstant 97 99(g_tTexcdf4): 98(ptr) Variable UniformConstant 102: TypeSampledImage 97 104: 6(float) Constant 1050253722 105: 64(fvec3) ConstantComposite 24 62 104 113: TypeImage 31(int) Cube depth sampled format:Unknown 114: TypePointer UniformConstant 113 115(g_tTexcdi4): 114(ptr) Variable UniformConstant 118: TypeSampledImage 113 127: TypeImage 43(int) Cube depth sampled format:Unknown 128: TypePointer UniformConstant 127 129(g_tTexcdu4): 128(ptr) Variable UniformConstant 132: TypeSampledImage 127 140: TypePointer Function 8(PS_OUTPUT) 142: 31(int) Constant 0 143: 6(float) Constant 1065353216 144: 7(fvec4) ConstantComposite 143 143 143 143 145: TypePointer Function 7(fvec4) 147: 31(int) Constant 1 154: TypePointer Output 7(fvec4) 155(@entryPointOutput.Color): 154(ptr) Variable Output 158: TypePointer Output 6(float) 159(@entryPointOutput.Depth): 158(ptr) Variable Output 162: TypeImage 6(float) 3D sampled format:Unknown 163: TypePointer UniformConstant 162 164(g_tTex3df4): 163(ptr) Variable UniformConstant 165: TypeImage 31(int) 3D sampled format:Unknown 166: TypePointer UniformConstant 165 167(g_tTex3di4): 166(ptr) Variable UniformConstant 168: TypeImage 43(int) 3D sampled format:Unknown 169: TypePointer UniformConstant 168 170(g_tTex3du4): 169(ptr) Variable UniformConstant 171: TypeImage 6(float) 1D array sampled format:Unknown 172: TypePointer UniformConstant 171 173(g_tTex1df4a): 172(ptr) Variable UniformConstant 174: TypeImage 31(int) 1D array sampled format:Unknown 175: TypePointer UniformConstant 174 176(g_tTex1di4a): 175(ptr) Variable UniformConstant 177: TypeImage 43(int) 1D array sampled format:Unknown 178: TypePointer UniformConstant 177 179(g_tTex1du4a): 178(ptr) Variable UniformConstant 180: TypeImage 6(float) 2D array sampled format:Unknown 181: TypePointer UniformConstant 180 182(g_tTex2df4a): 181(ptr) Variable UniformConstant 183: TypeImage 31(int) 2D array sampled format:Unknown 184: TypePointer UniformConstant 183 185(g_tTex2di4a): 184(ptr) Variable UniformConstant 186: TypeImage 43(int) 2D array sampled format:Unknown 187: TypePointer UniformConstant 186 188(g_tTex2du4a): 187(ptr) Variable UniformConstant 189: TypeImage 6(float) Cube array sampled format:Unknown 190: TypePointer UniformConstant 189 191(g_tTexcdf4a): 190(ptr) Variable UniformConstant 192: TypeImage 31(int) Cube array sampled format:Unknown 193: TypePointer UniformConstant 192 194(g_tTexcdi4a): 193(ptr) Variable UniformConstant 195: TypeImage 43(int) Cube array sampled format:Unknown 196: TypePointer UniformConstant 195 197(g_tTexcdu4a): 196(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 152(flattenTemp): 140(ptr) Variable Function 153:8(PS_OUTPUT) FunctionCall 10(@main() Store 152(flattenTemp) 153 156: 145(ptr) AccessChain 152(flattenTemp) 142 157: 7(fvec4) Load 156 Store 155(@entryPointOutput.Color) 157 160: 12(ptr) AccessChain 152(flattenTemp) 147 161: 6(float) Load 160 Store 159(@entryPointOutput.Depth) 161 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function 30(r02): 12(ptr) Variable Function 42(r04): 12(ptr) Variable Function 54(r20): 12(ptr) Variable Function 70(r22): 12(ptr) Variable Function 83(r24): 12(ptr) Variable Function 96(r50): 12(ptr) Variable Function 112(r52): 12(ptr) Variable Function 126(r54): 12(ptr) Variable Function 141(psout): 140(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 27: 26(fvec2) CompositeConstruct 24 25 28: 6(float) CompositeExtract 27 1 29: 6(float) ImageSampleDrefImplicitLod 23 27 28 Store 13(r00) 29 35: 32 Load 34(g_tTex1di4) 36: 18 Load 20(g_sSamp) 38: 37 SampledImage 35 36 39: 26(fvec2) CompositeConstruct 24 25 40: 6(float) CompositeExtract 39 1 41: 6(float) ImageSampleDrefImplicitLod 38 39 40 Store 30(r02) 41 47: 44 Load 46(g_tTex1du4) 48: 18 Load 20(g_sSamp) 50: 49 SampledImage 47 48 51: 26(fvec2) CompositeConstruct 24 25 52: 6(float) CompositeExtract 51 1 53: 6(float) ImageSampleDrefImplicitLod 50 51 52 Store 42(r04) 53 58: 55 Load 57(g_tTex2df4) 59: 18 Load 20(g_sSamp) 61: 60 SampledImage 58 59 65: 6(float) CompositeExtract 63 0 66: 6(float) CompositeExtract 63 1 67: 64(fvec3) CompositeConstruct 65 66 25 68: 6(float) CompositeExtract 67 2 69: 6(float) ImageSampleDrefImplicitLod 61 67 68 Store 54(r20) 69 74: 71 Load 73(g_tTex2di4) 75: 18 Load 20(g_sSamp) 77: 76 SampledImage 74 75 78: 6(float) CompositeExtract 63 0 79: 6(float) CompositeExtract 63 1 80: 64(fvec3) CompositeConstruct 78 79 25 81: 6(float) CompositeExtract 80 2 82: 6(float) ImageSampleDrefImplicitLod 77 80 81 Store 70(r22) 82 87: 84 Load 86(g_tTex2du4) 88: 18 Load 20(g_sSamp) 90: 89 SampledImage 87 88 91: 6(float) CompositeExtract 63 0 92: 6(float) CompositeExtract 63 1 93: 64(fvec3) CompositeConstruct 91 92 25 94: 6(float) CompositeExtract 93 2 95: 6(float) ImageSampleDrefImplicitLod 90 93 94 Store 83(r24) 95 100: 97 Load 99(g_tTexcdf4) 101: 18 Load 20(g_sSamp) 103: 102 SampledImage 100 101 106: 6(float) CompositeExtract 105 0 107: 6(float) CompositeExtract 105 1 108: 6(float) CompositeExtract 105 2 109: 7(fvec4) CompositeConstruct 106 107 108 25 110: 6(float) CompositeExtract 109 3 111: 6(float) ImageSampleDrefImplicitLod 103 109 110 Store 96(r50) 111 116: 113 Load 115(g_tTexcdi4) 117: 18 Load 20(g_sSamp) 119: 118 SampledImage 116 117 120: 6(float) CompositeExtract 105 0 121: 6(float) CompositeExtract 105 1 122: 6(float) CompositeExtract 105 2 123: 7(fvec4) CompositeConstruct 120 121 122 25 124: 6(float) CompositeExtract 123 3 125: 6(float) ImageSampleDrefImplicitLod 119 123 124 Store 112(r52) 125 130: 127 Load 129(g_tTexcdu4) 131: 18 Load 20(g_sSamp) 133: 132 SampledImage 130 131 134: 6(float) CompositeExtract 105 0 135: 6(float) CompositeExtract 105 1 136: 6(float) CompositeExtract 105 2 137: 7(fvec4) CompositeConstruct 134 135 136 25 138: 6(float) CompositeExtract 137 3 139: 6(float) ImageSampleDrefImplicitLod 133 137 138 Store 126(r54) 139 146: 145(ptr) AccessChain 141(psout) 142 Store 146 144 148: 12(ptr) AccessChain 141(psout) 147 Store 148 143 149:8(PS_OUTPUT) Load 141(psout) ReturnValue 149 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmp.dualmode.frag.out000066400000000000000000000157541506534232700246450ustar00rootroot00000000000000hlsl.samplecmp.dualmode.frag WARNING: AST will form illegal SPIR-V; need to transform to legalize Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main( ( temp 4-component vector of float) 0:7 Function Parameters: 0:? Sequence 0:10 texture ( temp float) 0:10 Construct combined texture-sampler ( temp sampler1DShadow) 0:10 'g_tTex' (layout( binding=3) uniform texture1DShadow) 0:10 'g_sSampCmp' (layout( binding=1) uniform sampler) 0:10 Construct vec2 ( temp 2-component vector of float) 0:10 Constant: 0:10 0.100000 0:10 Constant: 0:10 0.750000 0:11 texture ( temp 4-component vector of float) 0:11 Construct combined texture-sampler ( temp sampler1D) 0:11 'g_tTex' (layout( binding=3) uniform texture1D) 0:11 'g_sSamp' (layout( binding=0) uniform sampler) 0:11 Constant: 0:11 0.100000 0:13 Branch: Return with expression 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSampCmp' (layout( binding=1) uniform sampler) 0:? 'g_tTex' (layout( binding=3) uniform texture1DShadow) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'g_tTex' (layout( binding=3) uniform texture1D) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main( ( temp 4-component vector of float) 0:7 Function Parameters: 0:? Sequence 0:10 texture ( temp float) 0:10 Construct combined texture-sampler ( temp sampler1DShadow) 0:10 'g_tTex' (layout( binding=3) uniform texture1DShadow) 0:10 'g_sSampCmp' (layout( binding=1) uniform sampler) 0:10 Construct vec2 ( temp 2-component vector of float) 0:10 Constant: 0:10 0.100000 0:10 Constant: 0:10 0.750000 0:11 texture ( temp 4-component vector of float) 0:11 Construct combined texture-sampler ( temp sampler1D) 0:11 'g_tTex' (layout( binding=3) uniform texture1D) 0:11 'g_sSamp' (layout( binding=0) uniform sampler) 0:11 Constant: 0:11 0.100000 0:13 Branch: Return with expression 0:13 Constant: 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:13 0.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSampCmp' (layout( binding=1) uniform sampler) 0:? 'g_tTex' (layout( binding=3) uniform texture1DShadow) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'g_tTex' (layout( binding=3) uniform texture1D) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 41 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "g_tTex" Name 17 "g_sSampCmp" Name 29 "g_tTex" Name 31 "g_sSamp" Name 41 "@entryPointOutput" Decorate 13(g_tTex) Binding 3 Decorate 13(g_tTex) DescriptorSet 0 Decorate 17(g_sSampCmp) Binding 1 Decorate 17(g_sSampCmp) DescriptorSet 0 Decorate 29(g_tTex) Binding 3 Decorate 29(g_tTex) DescriptorSet 0 Decorate 31(g_sSamp) Binding 0 Decorate 31(g_sSamp) DescriptorSet 0 Decorate 41(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeImage 6(float) 1D depth sampled format:Unknown 12: TypePointer UniformConstant 11 13(g_tTex): 12(ptr) Variable UniformConstant 15: TypeSampler 16: TypePointer UniformConstant 15 17(g_sSampCmp): 16(ptr) Variable UniformConstant 19: TypeSampledImage 11 21: 6(float) Constant 1036831949 22: 6(float) Constant 1061158912 23: TypeVector 6(float) 2 27: TypeImage 6(float) 1D sampled format:Unknown 28: TypePointer UniformConstant 27 29(g_tTex): 28(ptr) Variable UniformConstant 31(g_sSamp): 16(ptr) Variable UniformConstant 33: TypeSampledImage 27 36: 6(float) Constant 0 37: 7(fvec4) ConstantComposite 36 36 36 36 40: TypePointer Output 7(fvec4) 41(@entryPointOutput): 40(ptr) Variable Output 4(main): 2 Function None 3 5: Label 42: 7(fvec4) FunctionCall 9(@main() Store 41(@entryPointOutput) 42 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 14: 11 Load 13(g_tTex) 18: 15 Load 17(g_sSampCmp) 20: 19 SampledImage 14 18 24: 23(fvec2) CompositeConstruct 21 22 25: 6(float) CompositeExtract 24 1 26: 6(float) ImageSampleDrefImplicitLod 20 24 25 30: 27 Load 29(g_tTex) 32: 15 Load 31(g_sSamp) 34: 33 SampledImage 30 32 35: 7(fvec4) ImageSampleImplicitLod 34 21 ReturnValue 37 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmp.negative.frag.out000066400000000000000000000065771506534232700246600ustar00rootroot00000000000000hlsl.samplecmp.negative.frag ERROR: 0:10: '' : expected: SamplerComparisonState ERROR: 1 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:8 Function Definition: @main( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence 0:9 texture ( temp float) 0:9 Construct combined texture-sampler ( temp sampler2DShadow) 0:9 'g_shadowTex' ( uniform texture2DShadow) 0:9 'g_shadowSamplerComp' ( uniform sampler) 0:9 Construct vec3 ( temp 3-component vector of float) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 Constant: 0:9 0.000000 0:10 ERROR: Bad aggregation op ( temp float) 0:10 'g_nonShadowTex' ( uniform texture2D) 0:10 'g_shadowSampler' ( uniform sampler) 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 Constant: 0:10 0.000000 0:12 Branch: Return with expression 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_nonShadowTex' ( uniform texture2D) 0:? 'g_shadowTex' ( uniform texture2DShadow) 0:? 'g_shadowSampler' ( uniform sampler) 0:? 'g_shadowSamplerComp' ( uniform sampler) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:8 Function Definition: @main( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence 0:9 texture ( temp float) 0:9 Construct combined texture-sampler ( temp sampler2DShadow) 0:9 'g_shadowTex' ( uniform texture2DShadow) 0:9 'g_shadowSamplerComp' ( uniform sampler) 0:9 Construct vec3 ( temp 3-component vector of float) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 Constant: 0:9 0.000000 0:10 ERROR: Bad aggregation op ( temp float) 0:10 'g_nonShadowTex' ( uniform texture2D) 0:10 'g_shadowSampler' ( uniform sampler) 0:10 Constant: 0:10 0.000000 0:10 0.000000 0:10 Constant: 0:10 0.000000 0:12 Branch: Return with expression 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:8 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_nonShadowTex' ( uniform texture2D) 0:? 'g_shadowTex' ( uniform texture2DShadow) 0:? 'g_shadowSampler' ( uniform sampler) 0:? 'g_shadowSamplerComp' ( uniform sampler) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.samplecmp.negative2.frag.out000066400000000000000000000051131506534232700247230ustar00rootroot00000000000000hlsl.samplecmp.negative2.frag ERROR: 0:7: '' : expected: SamplerComparisonState ERROR: 1 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:6 Function Definition: @main( ( temp 4-component vector of float) 0:6 Function Parameters: 0:? Sequence 0:7 ERROR: Bad aggregation op ( temp 4-component vector of float) 0:7 'g_shadowTex' ( uniform texture2D) 0:7 'g_shadowSampler' ( uniform sampler) 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 Constant: 0:7 0.000000 0:7 Constant: 0:7 0 (const int) 0:7 0 (const int) 0:9 Branch: Return with expression 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_shadowTex' ( uniform texture2D) 0:? 'g_shadowSampler' ( uniform sampler) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:6 Function Definition: @main( ( temp 4-component vector of float) 0:6 Function Parameters: 0:? Sequence 0:7 ERROR: Bad aggregation op ( temp 4-component vector of float) 0:7 'g_shadowTex' ( uniform texture2D) 0:7 'g_shadowSampler' ( uniform sampler) 0:7 Constant: 0:7 0.000000 0:7 0.000000 0:7 Constant: 0:7 0.000000 0:7 Constant: 0:7 0 (const int) 0:7 0 (const int) 0:9 Branch: Return with expression 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_shadowTex' ( uniform texture2D) 0:? 'g_shadowSampler' ( uniform sampler) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out000066400000000000000000000735311506534232700251110ustar00rootroot00000000000000hlsl.samplecmp.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r01' ( temp float) 0:42 textureOffset ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DShadow) 0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec2 ( temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r03' ( temp float) 0:43 textureOffset ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DShadow) 0:43 'g_tTex1di4' ( uniform itexture1DShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec2 ( temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 2 (const int) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r05' ( temp float) 0:44 textureOffset ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DShadow) 0:44 'g_tTex1du4' ( uniform utexture1DShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec2 ( temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 2 (const int) 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r21' ( temp float) 0:47 textureOffset ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DShadow) 0:47 'g_tTex2df4' ( uniform texture2DShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec3 ( temp 3-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 2 (const int) 0:47 3 (const int) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r23' ( temp float) 0:48 textureOffset ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DShadow) 0:48 'g_tTex2di4' ( uniform itexture2DShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec3 ( temp 3-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 2 (const int) 0:48 3 (const int) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r25' ( temp float) 0:49 textureOffset ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DShadow) 0:49 'g_tTex2du4' ( uniform utexture2DShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec3 ( temp 3-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 2 (const int) 0:49 3 (const int) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 Color: direct index for structure ( temp 4-component vector of float) 0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1.000000 0:62 1.000000 0:62 1.000000 0:62 1.000000 0:63 move second child to first child ( temp float) 0:63 Depth: direct index for structure ( temp float) 0:63 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 1.000000 0:65 Branch: Return with expression 0:65 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:? 'g_tTex1di4' ( uniform itexture1DShadow) 0:? 'g_tTex1du4' ( uniform utexture1DShadow) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r01' ( temp float) 0:42 textureOffset ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DShadow) 0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec2 ( temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r03' ( temp float) 0:43 textureOffset ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DShadow) 0:43 'g_tTex1di4' ( uniform itexture1DShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec2 ( temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 2 (const int) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r05' ( temp float) 0:44 textureOffset ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DShadow) 0:44 'g_tTex1du4' ( uniform utexture1DShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec2 ( temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 2 (const int) 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r21' ( temp float) 0:47 textureOffset ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DShadow) 0:47 'g_tTex2df4' ( uniform texture2DShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec3 ( temp 3-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 2 (const int) 0:47 3 (const int) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r23' ( temp float) 0:48 textureOffset ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DShadow) 0:48 'g_tTex2di4' ( uniform itexture2DShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec3 ( temp 3-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 2 (const int) 0:48 3 (const int) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r25' ( temp float) 0:49 textureOffset ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DShadow) 0:49 'g_tTex2du4' ( uniform utexture2DShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec3 ( temp 3-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 2 (const int) 0:49 3 (const int) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 Color: direct index for structure ( temp 4-component vector of float) 0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1.000000 0:62 1.000000 0:62 1.000000 0:62 1.000000 0:63 move second child to first child ( temp float) 0:63 Depth: direct index for structure ( temp float) 0:63 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 1.000000 0:65 Branch: Return with expression 0:65 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:? 'g_tTex1di4' ( uniform itexture1DShadow) 0:? 'g_tTex1du4' ( uniform utexture1DShadow) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 167 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 115 119 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r01" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 32 "r03" Name 35 "g_tTex1di4" Name 43 "r05" Name 47 "g_tTex1du4" Name 55 "r21" Name 58 "g_tTex2df4" Name 74 "r23" Name 77 "g_tTex2di4" Name 87 "r25" Name 90 "g_tTex2du4" Name 101 "psout" Name 112 "flattenTemp" Name 115 "@entryPointOutput.Color" Name 119 "@entryPointOutput.Depth" Name 124 "g_tTex3df4" Name 127 "g_tTex3di4" Name 130 "g_tTex3du4" Name 133 "g_tTexcdf4" Name 136 "g_tTexcdi4" Name 139 "g_tTexcdu4" Name 142 "g_tTex1df4a" Name 145 "g_tTex1di4a" Name 148 "g_tTex1du4a" Name 151 "g_tTex2df4a" Name 154 "g_tTex2di4a" Name 157 "g_tTex2du4a" Name 160 "g_tTexcdf4a" Name 163 "g_tTexcdi4a" Name 166 "g_tTexcdu4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 2 Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 58(g_tTex2df4) Binding 3 Decorate 58(g_tTex2df4) DescriptorSet 0 Decorate 77(g_tTex2di4) Binding 4 Decorate 77(g_tTex2di4) DescriptorSet 0 Decorate 90(g_tTex2du4) Binding 5 Decorate 90(g_tTex2du4) DescriptorSet 0 Decorate 115(@entryPointOutput.Color) Location 0 Decorate 119(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 124(g_tTex3df4) Binding 0 Decorate 124(g_tTex3df4) DescriptorSet 0 Decorate 127(g_tTex3di4) Binding 0 Decorate 127(g_tTex3di4) DescriptorSet 0 Decorate 130(g_tTex3du4) Binding 0 Decorate 130(g_tTex3du4) DescriptorSet 0 Decorate 133(g_tTexcdf4) Binding 0 Decorate 133(g_tTexcdf4) DescriptorSet 0 Decorate 136(g_tTexcdi4) Binding 0 Decorate 136(g_tTexcdi4) DescriptorSet 0 Decorate 139(g_tTexcdu4) Binding 0 Decorate 139(g_tTexcdu4) DescriptorSet 0 Decorate 142(g_tTex1df4a) Binding 0 Decorate 142(g_tTex1df4a) DescriptorSet 0 Decorate 145(g_tTex1di4a) Binding 0 Decorate 145(g_tTex1di4a) DescriptorSet 0 Decorate 148(g_tTex1du4a) Binding 0 Decorate 148(g_tTex1du4a) DescriptorSet 0 Decorate 151(g_tTex2df4a) Binding 0 Decorate 151(g_tTex2df4a) DescriptorSet 0 Decorate 154(g_tTex2di4a) Binding 0 Decorate 154(g_tTex2di4a) DescriptorSet 0 Decorate 157(g_tTex2du4a) Binding 0 Decorate 157(g_tTex2du4a) DescriptorSet 0 Decorate 160(g_tTexcdf4a) Binding 0 Decorate 160(g_tTexcdf4a) DescriptorSet 0 Decorate 163(g_tTexcdi4a) Binding 0 Decorate 163(g_tTexcdi4a) DescriptorSet 0 Decorate 166(g_tTexcdu4a) Binding 0 Decorate 166(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D depth sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1061158912 26: TypeVector 6(float) 2 28: TypeInt 32 1 29: 28(int) Constant 2 33: TypeImage 28(int) 1D depth sampled format:Unknown 34: TypePointer UniformConstant 33 35(g_tTex1di4): 34(ptr) Variable UniformConstant 38: TypeSampledImage 33 44: TypeInt 32 0 45: TypeImage 44(int) 1D depth sampled format:Unknown 46: TypePointer UniformConstant 45 47(g_tTex1du4): 46(ptr) Variable UniformConstant 50: TypeSampledImage 45 56: TypeImage 6(float) 2D depth sampled format:Unknown 57: TypePointer UniformConstant 56 58(g_tTex2df4): 57(ptr) Variable UniformConstant 61: TypeSampledImage 56 63: 6(float) Constant 1045220557 64: 26(fvec2) ConstantComposite 24 63 65: TypeVector 6(float) 3 69: TypeVector 28(int) 2 70: 28(int) Constant 3 71: 69(ivec2) ConstantComposite 29 70 75: TypeImage 28(int) 2D depth sampled format:Unknown 76: TypePointer UniformConstant 75 77(g_tTex2di4): 76(ptr) Variable UniformConstant 80: TypeSampledImage 75 88: TypeImage 44(int) 2D depth sampled format:Unknown 89: TypePointer UniformConstant 88 90(g_tTex2du4): 89(ptr) Variable UniformConstant 93: TypeSampledImage 88 100: TypePointer Function 8(PS_OUTPUT) 102: 28(int) Constant 0 103: 6(float) Constant 1065353216 104: 7(fvec4) ConstantComposite 103 103 103 103 105: TypePointer Function 7(fvec4) 107: 28(int) Constant 1 114: TypePointer Output 7(fvec4) 115(@entryPointOutput.Color): 114(ptr) Variable Output 118: TypePointer Output 6(float) 119(@entryPointOutput.Depth): 118(ptr) Variable Output 122: TypeImage 6(float) 3D sampled format:Unknown 123: TypePointer UniformConstant 122 124(g_tTex3df4): 123(ptr) Variable UniformConstant 125: TypeImage 28(int) 3D sampled format:Unknown 126: TypePointer UniformConstant 125 127(g_tTex3di4): 126(ptr) Variable UniformConstant 128: TypeImage 44(int) 3D sampled format:Unknown 129: TypePointer UniformConstant 128 130(g_tTex3du4): 129(ptr) Variable UniformConstant 131: TypeImage 6(float) Cube sampled format:Unknown 132: TypePointer UniformConstant 131 133(g_tTexcdf4): 132(ptr) Variable UniformConstant 134: TypeImage 28(int) Cube sampled format:Unknown 135: TypePointer UniformConstant 134 136(g_tTexcdi4): 135(ptr) Variable UniformConstant 137: TypeImage 44(int) Cube sampled format:Unknown 138: TypePointer UniformConstant 137 139(g_tTexcdu4): 138(ptr) Variable UniformConstant 140: TypeImage 6(float) 1D array sampled format:Unknown 141: TypePointer UniformConstant 140 142(g_tTex1df4a): 141(ptr) Variable UniformConstant 143: TypeImage 28(int) 1D array sampled format:Unknown 144: TypePointer UniformConstant 143 145(g_tTex1di4a): 144(ptr) Variable UniformConstant 146: TypeImage 44(int) 1D array sampled format:Unknown 147: TypePointer UniformConstant 146 148(g_tTex1du4a): 147(ptr) Variable UniformConstant 149: TypeImage 6(float) 2D array sampled format:Unknown 150: TypePointer UniformConstant 149 151(g_tTex2df4a): 150(ptr) Variable UniformConstant 152: TypeImage 28(int) 2D array sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTex2di4a): 153(ptr) Variable UniformConstant 155: TypeImage 44(int) 2D array sampled format:Unknown 156: TypePointer UniformConstant 155 157(g_tTex2du4a): 156(ptr) Variable UniformConstant 158: TypeImage 6(float) Cube array sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTexcdf4a): 159(ptr) Variable UniformConstant 161: TypeImage 28(int) Cube array sampled format:Unknown 162: TypePointer UniformConstant 161 163(g_tTexcdi4a): 162(ptr) Variable UniformConstant 164: TypeImage 44(int) Cube array sampled format:Unknown 165: TypePointer UniformConstant 164 166(g_tTexcdu4a): 165(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 112(flattenTemp): 100(ptr) Variable Function 113:8(PS_OUTPUT) FunctionCall 10(@main() Store 112(flattenTemp) 113 116: 105(ptr) AccessChain 112(flattenTemp) 102 117: 7(fvec4) Load 116 Store 115(@entryPointOutput.Color) 117 120: 12(ptr) AccessChain 112(flattenTemp) 107 121: 6(float) Load 120 Store 119(@entryPointOutput.Depth) 121 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r01): 12(ptr) Variable Function 32(r03): 12(ptr) Variable Function 43(r05): 12(ptr) Variable Function 55(r21): 12(ptr) Variable Function 74(r23): 12(ptr) Variable Function 87(r25): 12(ptr) Variable Function 101(psout): 100(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 27: 26(fvec2) CompositeConstruct 24 25 30: 6(float) CompositeExtract 27 1 31: 6(float) ImageSampleDrefImplicitLod 23 27 30 ConstOffset 29 Store 13(r01) 31 36: 33 Load 35(g_tTex1di4) 37: 18 Load 20(g_sSamp) 39: 38 SampledImage 36 37 40: 26(fvec2) CompositeConstruct 24 25 41: 6(float) CompositeExtract 40 1 42: 6(float) ImageSampleDrefImplicitLod 39 40 41 ConstOffset 29 Store 32(r03) 42 48: 45 Load 47(g_tTex1du4) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 52: 26(fvec2) CompositeConstruct 24 25 53: 6(float) CompositeExtract 52 1 54: 6(float) ImageSampleDrefImplicitLod 51 52 53 ConstOffset 29 Store 43(r05) 54 59: 56 Load 58(g_tTex2df4) 60: 18 Load 20(g_sSamp) 62: 61 SampledImage 59 60 66: 6(float) CompositeExtract 64 0 67: 6(float) CompositeExtract 64 1 68: 65(fvec3) CompositeConstruct 66 67 25 72: 6(float) CompositeExtract 68 2 73: 6(float) ImageSampleDrefImplicitLod 62 68 72 ConstOffset 71 Store 55(r21) 73 78: 75 Load 77(g_tTex2di4) 79: 18 Load 20(g_sSamp) 81: 80 SampledImage 78 79 82: 6(float) CompositeExtract 64 0 83: 6(float) CompositeExtract 64 1 84: 65(fvec3) CompositeConstruct 82 83 25 85: 6(float) CompositeExtract 84 2 86: 6(float) ImageSampleDrefImplicitLod 81 84 85 ConstOffset 71 Store 74(r23) 86 91: 88 Load 90(g_tTex2du4) 92: 18 Load 20(g_sSamp) 94: 93 SampledImage 91 92 95: 6(float) CompositeExtract 64 0 96: 6(float) CompositeExtract 64 1 97: 65(fvec3) CompositeConstruct 95 96 25 98: 6(float) CompositeExtract 97 2 99: 6(float) ImageSampleDrefImplicitLod 94 97 98 ConstOffset 71 Store 87(r25) 99 106: 105(ptr) AccessChain 101(psout) 102 Store 106 104 108: 12(ptr) AccessChain 101(psout) 107 Store 108 103 109:8(PS_OUTPUT) Load 101(psout) ReturnValue 109 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out000066400000000000000000000755771506534232700261640ustar00rootroot00000000000000hlsl.samplecmp.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r11' ( temp float) 0:42 textureOffset ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r13' ( temp float) 0:43 textureOffset ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec3 ( temp 3-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 2 (const int) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r15' ( temp float) 0:44 textureOffset ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec3 ( temp 3-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 2 (const int) 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r31' ( temp float) 0:47 textureOffset ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 0.300000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 2 (const int) 0:47 3 (const int) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r33' ( temp float) 0:48 textureOffset ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec4 ( temp 4-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 0.300000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 2 (const int) 0:48 3 (const int) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r35' ( temp float) 0:49 textureOffset ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 0.300000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 2 (const int) 0:49 3 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 Color: direct index for structure ( temp 4-component vector of float) 0:63 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1.000000 0:63 1.000000 0:63 1.000000 0:63 1.000000 0:64 move second child to first child ( temp float) 0:64 Depth: direct index for structure ( temp float) 0:64 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 1.000000 0:66 Branch: Return with expression 0:66 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r11' ( temp float) 0:42 textureOffset ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r13' ( temp float) 0:43 textureOffset ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec3 ( temp 3-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 2 (const int) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r15' ( temp float) 0:44 textureOffset ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec3 ( temp 3-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 2 (const int) 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r31' ( temp float) 0:47 textureOffset ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 0.300000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 2 (const int) 0:47 3 (const int) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r33' ( temp float) 0:48 textureOffset ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec4 ( temp 4-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 0.300000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 2 (const int) 0:48 3 (const int) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r35' ( temp float) 0:49 textureOffset ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 0.300000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 2 (const int) 0:49 3 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 Color: direct index for structure ( temp 4-component vector of float) 0:63 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1.000000 0:63 1.000000 0:63 1.000000 0:63 1.000000 0:64 move second child to first child ( temp float) 0:64 Depth: direct index for structure ( temp float) 0:64 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 1.000000 0:66 Branch: Return with expression 0:66 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 178 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 126 130 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r11" Name 16 "g_tTex1df4a" Name 20 "g_sSamp" Name 37 "r13" Name 40 "g_tTex1di4a" Name 50 "r15" Name 54 "g_tTex1du4a" Name 64 "r31" Name 67 "g_tTex2df4a" Name 83 "r33" Name 86 "g_tTex2di4a" Name 97 "r35" Name 100 "g_tTex2du4a" Name 112 "psout" Name 123 "flattenTemp" Name 126 "@entryPointOutput.Color" Name 130 "@entryPointOutput.Depth" Name 135 "g_tTex1df4" Name 138 "g_tTex1di4" Name 141 "g_tTex1du4" Name 144 "g_tTex2df4" Name 147 "g_tTex2di4" Name 150 "g_tTex2du4" Name 153 "g_tTex3df4" Name 156 "g_tTex3di4" Name 159 "g_tTex3du4" Name 162 "g_tTexcdf4" Name 165 "g_tTexcdi4" Name 168 "g_tTexcdu4" Name 171 "g_tTexcdf4a" Name 174 "g_tTexcdi4a" Name 177 "g_tTexcdu4a" Decorate 16(g_tTex1df4a) Binding 1 Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 40(g_tTex1di4a) Binding 2 Decorate 40(g_tTex1di4a) DescriptorSet 0 Decorate 54(g_tTex1du4a) Binding 3 Decorate 54(g_tTex1du4a) DescriptorSet 0 Decorate 67(g_tTex2df4a) Binding 4 Decorate 67(g_tTex2df4a) DescriptorSet 0 Decorate 86(g_tTex2di4a) Binding 5 Decorate 86(g_tTex2di4a) DescriptorSet 0 Decorate 100(g_tTex2du4a) Binding 6 Decorate 100(g_tTex2du4a) DescriptorSet 0 Decorate 126(@entryPointOutput.Color) Location 0 Decorate 130(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 135(g_tTex1df4) Binding 0 Decorate 135(g_tTex1df4) DescriptorSet 0 Decorate 138(g_tTex1di4) Binding 0 Decorate 138(g_tTex1di4) DescriptorSet 0 Decorate 141(g_tTex1du4) Binding 0 Decorate 141(g_tTex1du4) DescriptorSet 0 Decorate 144(g_tTex2df4) Binding 0 Decorate 144(g_tTex2df4) DescriptorSet 0 Decorate 147(g_tTex2di4) Binding 0 Decorate 147(g_tTex2di4) DescriptorSet 0 Decorate 150(g_tTex2du4) Binding 0 Decorate 150(g_tTex2du4) DescriptorSet 0 Decorate 153(g_tTex3df4) Binding 0 Decorate 153(g_tTex3df4) DescriptorSet 0 Decorate 156(g_tTex3di4) Binding 0 Decorate 156(g_tTex3di4) DescriptorSet 0 Decorate 159(g_tTex3du4) Binding 0 Decorate 159(g_tTex3du4) DescriptorSet 0 Decorate 162(g_tTexcdf4) Binding 0 Decorate 162(g_tTexcdf4) DescriptorSet 0 Decorate 165(g_tTexcdi4) Binding 0 Decorate 165(g_tTexcdi4) DescriptorSet 0 Decorate 168(g_tTexcdu4) Binding 0 Decorate 168(g_tTexcdu4) DescriptorSet 0 Decorate 171(g_tTexcdf4a) Binding 0 Decorate 171(g_tTexcdf4a) DescriptorSet 0 Decorate 174(g_tTexcdi4a) Binding 0 Decorate 174(g_tTexcdi4a) DescriptorSet 0 Decorate 177(g_tTexcdu4a) Binding 0 Decorate 177(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D depth array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1061158912 29: TypeVector 6(float) 3 33: TypeInt 32 1 34: 33(int) Constant 2 38: TypeImage 33(int) 1D depth array sampled format:Unknown 39: TypePointer UniformConstant 38 40(g_tTex1di4a): 39(ptr) Variable UniformConstant 43: TypeSampledImage 38 51: TypeInt 32 0 52: TypeImage 51(int) 1D depth array sampled format:Unknown 53: TypePointer UniformConstant 52 54(g_tTex1du4a): 53(ptr) Variable UniformConstant 57: TypeSampledImage 52 65: TypeImage 6(float) 2D depth array sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2df4a): 66(ptr) Variable UniformConstant 70: TypeSampledImage 65 72: 6(float) Constant 1050253722 73: 29(fvec3) ConstantComposite 25 26 72 78: TypeVector 33(int) 2 79: 33(int) Constant 3 80: 78(ivec2) ConstantComposite 34 79 84: TypeImage 33(int) 2D depth array sampled format:Unknown 85: TypePointer UniformConstant 84 86(g_tTex2di4a): 85(ptr) Variable UniformConstant 89: TypeSampledImage 84 98: TypeImage 51(int) 2D depth array sampled format:Unknown 99: TypePointer UniformConstant 98 100(g_tTex2du4a): 99(ptr) Variable UniformConstant 103: TypeSampledImage 98 111: TypePointer Function 8(PS_OUTPUT) 113: 33(int) Constant 0 114: 6(float) Constant 1065353216 115: 7(fvec4) ConstantComposite 114 114 114 114 116: TypePointer Function 7(fvec4) 118: 33(int) Constant 1 125: TypePointer Output 7(fvec4) 126(@entryPointOutput.Color): 125(ptr) Variable Output 129: TypePointer Output 6(float) 130(@entryPointOutput.Depth): 129(ptr) Variable Output 133: TypeImage 6(float) 1D sampled format:Unknown 134: TypePointer UniformConstant 133 135(g_tTex1df4): 134(ptr) Variable UniformConstant 136: TypeImage 33(int) 1D sampled format:Unknown 137: TypePointer UniformConstant 136 138(g_tTex1di4): 137(ptr) Variable UniformConstant 139: TypeImage 51(int) 1D sampled format:Unknown 140: TypePointer UniformConstant 139 141(g_tTex1du4): 140(ptr) Variable UniformConstant 142: TypeImage 6(float) 2D sampled format:Unknown 143: TypePointer UniformConstant 142 144(g_tTex2df4): 143(ptr) Variable UniformConstant 145: TypeImage 33(int) 2D sampled format:Unknown 146: TypePointer UniformConstant 145 147(g_tTex2di4): 146(ptr) Variable UniformConstant 148: TypeImage 51(int) 2D sampled format:Unknown 149: TypePointer UniformConstant 148 150(g_tTex2du4): 149(ptr) Variable UniformConstant 151: TypeImage 6(float) 3D sampled format:Unknown 152: TypePointer UniformConstant 151 153(g_tTex3df4): 152(ptr) Variable UniformConstant 154: TypeImage 33(int) 3D sampled format:Unknown 155: TypePointer UniformConstant 154 156(g_tTex3di4): 155(ptr) Variable UniformConstant 157: TypeImage 51(int) 3D sampled format:Unknown 158: TypePointer UniformConstant 157 159(g_tTex3du4): 158(ptr) Variable UniformConstant 160: TypeImage 6(float) Cube sampled format:Unknown 161: TypePointer UniformConstant 160 162(g_tTexcdf4): 161(ptr) Variable UniformConstant 163: TypeImage 33(int) Cube sampled format:Unknown 164: TypePointer UniformConstant 163 165(g_tTexcdi4): 164(ptr) Variable UniformConstant 166: TypeImage 51(int) Cube sampled format:Unknown 167: TypePointer UniformConstant 166 168(g_tTexcdu4): 167(ptr) Variable UniformConstant 169: TypeImage 6(float) Cube array sampled format:Unknown 170: TypePointer UniformConstant 169 171(g_tTexcdf4a): 170(ptr) Variable UniformConstant 172: TypeImage 33(int) Cube array sampled format:Unknown 173: TypePointer UniformConstant 172 174(g_tTexcdi4a): 173(ptr) Variable UniformConstant 175: TypeImage 51(int) Cube array sampled format:Unknown 176: TypePointer UniformConstant 175 177(g_tTexcdu4a): 176(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 123(flattenTemp): 111(ptr) Variable Function 124:8(PS_OUTPUT) FunctionCall 10(@main() Store 123(flattenTemp) 124 127: 116(ptr) AccessChain 123(flattenTemp) 113 128: 7(fvec4) Load 127 Store 126(@entryPointOutput.Color) 128 131: 12(ptr) AccessChain 123(flattenTemp) 118 132: 6(float) Load 131 Store 130(@entryPointOutput.Depth) 132 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r11): 12(ptr) Variable Function 37(r13): 12(ptr) Variable Function 50(r15): 12(ptr) Variable Function 64(r31): 12(ptr) Variable Function 83(r33): 12(ptr) Variable Function 97(r35): 12(ptr) Variable Function 112(psout): 111(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 30: 6(float) CompositeExtract 27 0 31: 6(float) CompositeExtract 27 1 32: 29(fvec3) CompositeConstruct 30 31 28 35: 6(float) CompositeExtract 32 2 36: 6(float) ImageSampleDrefImplicitLod 23 32 35 ConstOffset 34 Store 13(r11) 36 41: 38 Load 40(g_tTex1di4a) 42: 18 Load 20(g_sSamp) 44: 43 SampledImage 41 42 45: 6(float) CompositeExtract 27 0 46: 6(float) CompositeExtract 27 1 47: 29(fvec3) CompositeConstruct 45 46 28 48: 6(float) CompositeExtract 47 2 49: 6(float) ImageSampleDrefImplicitLod 44 47 48 ConstOffset 34 Store 37(r13) 49 55: 52 Load 54(g_tTex1du4a) 56: 18 Load 20(g_sSamp) 58: 57 SampledImage 55 56 59: 6(float) CompositeExtract 27 0 60: 6(float) CompositeExtract 27 1 61: 29(fvec3) CompositeConstruct 59 60 28 62: 6(float) CompositeExtract 61 2 63: 6(float) ImageSampleDrefImplicitLod 58 61 62 ConstOffset 34 Store 50(r15) 63 68: 65 Load 67(g_tTex2df4a) 69: 18 Load 20(g_sSamp) 71: 70 SampledImage 68 69 74: 6(float) CompositeExtract 73 0 75: 6(float) CompositeExtract 73 1 76: 6(float) CompositeExtract 73 2 77: 7(fvec4) CompositeConstruct 74 75 76 28 81: 6(float) CompositeExtract 77 3 82: 6(float) ImageSampleDrefImplicitLod 71 77 81 ConstOffset 80 Store 64(r31) 82 87: 84 Load 86(g_tTex2di4a) 88: 18 Load 20(g_sSamp) 90: 89 SampledImage 87 88 91: 6(float) CompositeExtract 73 0 92: 6(float) CompositeExtract 73 1 93: 6(float) CompositeExtract 73 2 94: 7(fvec4) CompositeConstruct 91 92 93 28 95: 6(float) CompositeExtract 94 3 96: 6(float) ImageSampleDrefImplicitLod 90 94 95 ConstOffset 80 Store 83(r33) 96 101: 98 Load 100(g_tTex2du4a) 102: 18 Load 20(g_sSamp) 104: 103 SampledImage 101 102 105: 6(float) CompositeExtract 73 0 106: 6(float) CompositeExtract 73 1 107: 6(float) CompositeExtract 73 2 108: 7(fvec4) CompositeConstruct 105 106 107 28 109: 6(float) CompositeExtract 108 3 110: 6(float) ImageSampleDrefImplicitLod 104 108 109 ConstOffset 80 Store 97(r35) 110 117: 116(ptr) AccessChain 112(psout) 113 Store 117 115 119: 12(ptr) AccessChain 112(psout) 118 Store 119 114 120:8(PS_OUTPUT) Load 112(psout) ReturnValue 120 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out000066400000000000000000001074461506534232700266740ustar00rootroot00000000000000hlsl.samplecmplevelzero.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r10' ( temp float) 0:42 textureLod ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 0.000000 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r12' ( temp float) 0:43 textureLod ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec3 ( temp 3-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 0.000000 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r14' ( temp float) 0:44 textureLod ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec3 ( temp 3-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 0.000000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r30' ( temp float) 0:47 textureLod ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 0.300000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 0.000000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r32' ( temp float) 0:48 textureLod ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec4 ( temp 4-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 0.300000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 0.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r34' ( temp float) 0:49 textureLod ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 0.300000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 0.000000 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'r60' ( temp float) 0:52 textureLod ( temp float) 0:52 Construct combined texture-sampler ( temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' ( uniform textureCubeArrayShadow) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 Construct vec4 ( temp 4-component vector of float) 0:52 Constant: 0:52 0.100000 0:52 0.200000 0:52 0.300000 0:52 0.400000 0:52 Constant: 0:52 0.750000 0:52 Constant: 0:52 0.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r62' ( temp float) 0:53 textureLod ( temp float) 0:53 Construct combined texture-sampler ( temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 Construct vec4 ( temp 4-component vector of float) 0:53 Constant: 0:53 0.100000 0:53 0.200000 0:53 0.300000 0:53 0.400000 0:53 Constant: 0:53 0.750000 0:53 Constant: 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'r64' ( temp float) 0:54 textureLod ( temp float) 0:54 Construct combined texture-sampler ( temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow) 0:54 'g_sSamp' (layout( binding=0) uniform sampler) 0:54 Construct vec4 ( temp 4-component vector of float) 0:54 Constant: 0:54 0.100000 0:54 0.200000 0:54 0.300000 0:54 0.400000 0:54 Constant: 0:54 0.750000 0:54 Constant: 0:54 0.000000 0:56 move second child to first child ( temp 4-component vector of float) 0:56 Color: direct index for structure ( temp 4-component vector of float) 0:56 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1.000000 0:56 1.000000 0:56 1.000000 0:56 1.000000 0:57 move second child to first child ( temp float) 0:57 Depth: direct index for structure ( temp float) 0:57 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 1.000000 0:59 Branch: Return with expression 0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:? 'g_tTexcdf4a' ( uniform textureCubeArrayShadow) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r10' ( temp float) 0:42 textureLod ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 0.000000 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r12' ( temp float) 0:43 textureLod ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec3 ( temp 3-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 0.000000 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r14' ( temp float) 0:44 textureLod ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec3 ( temp 3-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 0.000000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r30' ( temp float) 0:47 textureLod ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 0.300000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 0.000000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r32' ( temp float) 0:48 textureLod ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec4 ( temp 4-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 0.300000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 0.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r34' ( temp float) 0:49 textureLod ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 0.300000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 0.000000 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'r60' ( temp float) 0:52 textureLod ( temp float) 0:52 Construct combined texture-sampler ( temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' ( uniform textureCubeArrayShadow) 0:52 'g_sSamp' (layout( binding=0) uniform sampler) 0:52 Construct vec4 ( temp 4-component vector of float) 0:52 Constant: 0:52 0.100000 0:52 0.200000 0:52 0.300000 0:52 0.400000 0:52 Constant: 0:52 0.750000 0:52 Constant: 0:52 0.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r62' ( temp float) 0:53 textureLod ( temp float) 0:53 Construct combined texture-sampler ( temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 Construct vec4 ( temp 4-component vector of float) 0:53 Constant: 0:53 0.100000 0:53 0.200000 0:53 0.300000 0:53 0.400000 0:53 Constant: 0:53 0.750000 0:53 Constant: 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'r64' ( temp float) 0:54 textureLod ( temp float) 0:54 Construct combined texture-sampler ( temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow) 0:54 'g_sSamp' (layout( binding=0) uniform sampler) 0:54 Construct vec4 ( temp 4-component vector of float) 0:54 Constant: 0:54 0.100000 0:54 0.200000 0:54 0.300000 0:54 0.400000 0:54 Constant: 0:54 0.750000 0:54 Constant: 0:54 0.000000 0:56 move second child to first child ( temp 4-component vector of float) 0:56 Color: direct index for structure ( temp 4-component vector of float) 0:56 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1.000000 0:56 1.000000 0:56 1.000000 0:56 1.000000 0:57 move second child to first child ( temp float) 0:57 Depth: direct index for structure ( temp float) 0:57 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 1.000000 0:59 Branch: Return with expression 0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:? 'g_tTexcdf4a' ( uniform textureCubeArrayShadow) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 195 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 152 156 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r10" Name 16 "g_tTex1df4a" Name 20 "g_sSamp" Name 36 "r12" Name 40 "g_tTex1di4a" Name 50 "r14" Name 54 "g_tTex1du4a" Name 64 "r30" Name 67 "g_tTex2df4a" Name 80 "r32" Name 83 "g_tTex2di4a" Name 94 "r34" Name 97 "g_tTex2du4a" Name 108 "r60" Name 111 "g_tTexcdf4a" Name 119 "r62" Name 122 "g_tTexcdi4a" Name 128 "r64" Name 131 "g_tTexcdu4a" Name 138 "psout" Name 149 "flattenTemp" Name 152 "@entryPointOutput.Color" Name 156 "@entryPointOutput.Depth" Name 161 "g_tTex1df4" Name 164 "g_tTex1di4" Name 167 "g_tTex1du4" Name 170 "g_tTex2df4" Name 173 "g_tTex2di4" Name 176 "g_tTex2du4" Name 179 "g_tTex3df4" Name 182 "g_tTex3di4" Name 185 "g_tTex3du4" Name 188 "g_tTexcdf4" Name 191 "g_tTexcdi4" Name 194 "g_tTexcdu4" Decorate 16(g_tTex1df4a) Binding 1 Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 40(g_tTex1di4a) Binding 2 Decorate 40(g_tTex1di4a) DescriptorSet 0 Decorate 54(g_tTex1du4a) Binding 3 Decorate 54(g_tTex1du4a) DescriptorSet 0 Decorate 67(g_tTex2df4a) Binding 4 Decorate 67(g_tTex2df4a) DescriptorSet 0 Decorate 83(g_tTex2di4a) Binding 5 Decorate 83(g_tTex2di4a) DescriptorSet 0 Decorate 97(g_tTex2du4a) Binding 6 Decorate 97(g_tTex2du4a) DescriptorSet 0 Decorate 111(g_tTexcdf4a) Binding 7 Decorate 111(g_tTexcdf4a) DescriptorSet 0 Decorate 122(g_tTexcdi4a) Binding 8 Decorate 122(g_tTexcdi4a) DescriptorSet 0 Decorate 131(g_tTexcdu4a) Binding 9 Decorate 131(g_tTexcdu4a) DescriptorSet 0 Decorate 152(@entryPointOutput.Color) Location 0 Decorate 156(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 161(g_tTex1df4) Binding 0 Decorate 161(g_tTex1df4) DescriptorSet 0 Decorate 164(g_tTex1di4) Binding 0 Decorate 164(g_tTex1di4) DescriptorSet 0 Decorate 167(g_tTex1du4) Binding 0 Decorate 167(g_tTex1du4) DescriptorSet 0 Decorate 170(g_tTex2df4) Binding 0 Decorate 170(g_tTex2df4) DescriptorSet 0 Decorate 173(g_tTex2di4) Binding 0 Decorate 173(g_tTex2di4) DescriptorSet 0 Decorate 176(g_tTex2du4) Binding 0 Decorate 176(g_tTex2du4) DescriptorSet 0 Decorate 179(g_tTex3df4) Binding 0 Decorate 179(g_tTex3df4) DescriptorSet 0 Decorate 182(g_tTex3di4) Binding 0 Decorate 182(g_tTex3di4) DescriptorSet 0 Decorate 185(g_tTex3du4) Binding 0 Decorate 185(g_tTex3du4) DescriptorSet 0 Decorate 188(g_tTexcdf4) Binding 0 Decorate 188(g_tTexcdf4) DescriptorSet 0 Decorate 191(g_tTexcdi4) Binding 0 Decorate 191(g_tTexcdi4) DescriptorSet 0 Decorate 194(g_tTexcdu4) Binding 0 Decorate 194(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D depth array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1061158912 29: TypeVector 6(float) 3 33: 6(float) Constant 0 37: TypeInt 32 1 38: TypeImage 37(int) 1D depth array sampled format:Unknown 39: TypePointer UniformConstant 38 40(g_tTex1di4a): 39(ptr) Variable UniformConstant 43: TypeSampledImage 38 51: TypeInt 32 0 52: TypeImage 51(int) 1D depth array sampled format:Unknown 53: TypePointer UniformConstant 52 54(g_tTex1du4a): 53(ptr) Variable UniformConstant 57: TypeSampledImage 52 65: TypeImage 6(float) 2D depth array sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2df4a): 66(ptr) Variable UniformConstant 70: TypeSampledImage 65 72: 6(float) Constant 1050253722 73: 29(fvec3) ConstantComposite 25 26 72 81: TypeImage 37(int) 2D depth array sampled format:Unknown 82: TypePointer UniformConstant 81 83(g_tTex2di4a): 82(ptr) Variable UniformConstant 86: TypeSampledImage 81 95: TypeImage 51(int) 2D depth array sampled format:Unknown 96: TypePointer UniformConstant 95 97(g_tTex2du4a): 96(ptr) Variable UniformConstant 100: TypeSampledImage 95 109: TypeImage 6(float) Cube depth array sampled format:Unknown 110: TypePointer UniformConstant 109 111(g_tTexcdf4a): 110(ptr) Variable UniformConstant 114: TypeSampledImage 109 116: 6(float) Constant 1053609165 117: 7(fvec4) ConstantComposite 25 26 72 116 120: TypeImage 37(int) Cube depth array sampled format:Unknown 121: TypePointer UniformConstant 120 122(g_tTexcdi4a): 121(ptr) Variable UniformConstant 125: TypeSampledImage 120 129: TypeImage 51(int) Cube depth array sampled format:Unknown 130: TypePointer UniformConstant 129 131(g_tTexcdu4a): 130(ptr) Variable UniformConstant 134: TypeSampledImage 129 137: TypePointer Function 8(PS_OUTPUT) 139: 37(int) Constant 0 140: 6(float) Constant 1065353216 141: 7(fvec4) ConstantComposite 140 140 140 140 142: TypePointer Function 7(fvec4) 144: 37(int) Constant 1 151: TypePointer Output 7(fvec4) 152(@entryPointOutput.Color): 151(ptr) Variable Output 155: TypePointer Output 6(float) 156(@entryPointOutput.Depth): 155(ptr) Variable Output 159: TypeImage 6(float) 1D sampled format:Unknown 160: TypePointer UniformConstant 159 161(g_tTex1df4): 160(ptr) Variable UniformConstant 162: TypeImage 37(int) 1D sampled format:Unknown 163: TypePointer UniformConstant 162 164(g_tTex1di4): 163(ptr) Variable UniformConstant 165: TypeImage 51(int) 1D sampled format:Unknown 166: TypePointer UniformConstant 165 167(g_tTex1du4): 166(ptr) Variable UniformConstant 168: TypeImage 6(float) 2D sampled format:Unknown 169: TypePointer UniformConstant 168 170(g_tTex2df4): 169(ptr) Variable UniformConstant 171: TypeImage 37(int) 2D sampled format:Unknown 172: TypePointer UniformConstant 171 173(g_tTex2di4): 172(ptr) Variable UniformConstant 174: TypeImage 51(int) 2D sampled format:Unknown 175: TypePointer UniformConstant 174 176(g_tTex2du4): 175(ptr) Variable UniformConstant 177: TypeImage 6(float) 3D sampled format:Unknown 178: TypePointer UniformConstant 177 179(g_tTex3df4): 178(ptr) Variable UniformConstant 180: TypeImage 37(int) 3D sampled format:Unknown 181: TypePointer UniformConstant 180 182(g_tTex3di4): 181(ptr) Variable UniformConstant 183: TypeImage 51(int) 3D sampled format:Unknown 184: TypePointer UniformConstant 183 185(g_tTex3du4): 184(ptr) Variable UniformConstant 186: TypeImage 6(float) Cube sampled format:Unknown 187: TypePointer UniformConstant 186 188(g_tTexcdf4): 187(ptr) Variable UniformConstant 189: TypeImage 37(int) Cube sampled format:Unknown 190: TypePointer UniformConstant 189 191(g_tTexcdi4): 190(ptr) Variable UniformConstant 192: TypeImage 51(int) Cube sampled format:Unknown 193: TypePointer UniformConstant 192 194(g_tTexcdu4): 193(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 149(flattenTemp): 137(ptr) Variable Function 150:8(PS_OUTPUT) FunctionCall 10(@main() Store 149(flattenTemp) 150 153: 142(ptr) AccessChain 149(flattenTemp) 139 154: 7(fvec4) Load 153 Store 152(@entryPointOutput.Color) 154 157: 12(ptr) AccessChain 149(flattenTemp) 144 158: 6(float) Load 157 Store 156(@entryPointOutput.Depth) 158 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r10): 12(ptr) Variable Function 36(r12): 12(ptr) Variable Function 50(r14): 12(ptr) Variable Function 64(r30): 12(ptr) Variable Function 80(r32): 12(ptr) Variable Function 94(r34): 12(ptr) Variable Function 108(r60): 12(ptr) Variable Function 119(r62): 12(ptr) Variable Function 128(r64): 12(ptr) Variable Function 138(psout): 137(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 30: 6(float) CompositeExtract 27 0 31: 6(float) CompositeExtract 27 1 32: 29(fvec3) CompositeConstruct 30 31 28 34: 6(float) CompositeExtract 32 2 35: 6(float) ImageSampleDrefExplicitLod 23 32 34 Lod 33 Store 13(r10) 35 41: 38 Load 40(g_tTex1di4a) 42: 18 Load 20(g_sSamp) 44: 43 SampledImage 41 42 45: 6(float) CompositeExtract 27 0 46: 6(float) CompositeExtract 27 1 47: 29(fvec3) CompositeConstruct 45 46 28 48: 6(float) CompositeExtract 47 2 49: 6(float) ImageSampleDrefExplicitLod 44 47 48 Lod 33 Store 36(r12) 49 55: 52 Load 54(g_tTex1du4a) 56: 18 Load 20(g_sSamp) 58: 57 SampledImage 55 56 59: 6(float) CompositeExtract 27 0 60: 6(float) CompositeExtract 27 1 61: 29(fvec3) CompositeConstruct 59 60 28 62: 6(float) CompositeExtract 61 2 63: 6(float) ImageSampleDrefExplicitLod 58 61 62 Lod 33 Store 50(r14) 63 68: 65 Load 67(g_tTex2df4a) 69: 18 Load 20(g_sSamp) 71: 70 SampledImage 68 69 74: 6(float) CompositeExtract 73 0 75: 6(float) CompositeExtract 73 1 76: 6(float) CompositeExtract 73 2 77: 7(fvec4) CompositeConstruct 74 75 76 28 78: 6(float) CompositeExtract 77 3 79: 6(float) ImageSampleDrefExplicitLod 71 77 78 Lod 33 Store 64(r30) 79 84: 81 Load 83(g_tTex2di4a) 85: 18 Load 20(g_sSamp) 87: 86 SampledImage 84 85 88: 6(float) CompositeExtract 73 0 89: 6(float) CompositeExtract 73 1 90: 6(float) CompositeExtract 73 2 91: 7(fvec4) CompositeConstruct 88 89 90 28 92: 6(float) CompositeExtract 91 3 93: 6(float) ImageSampleDrefExplicitLod 87 91 92 Lod 33 Store 80(r32) 93 98: 95 Load 97(g_tTex2du4a) 99: 18 Load 20(g_sSamp) 101: 100 SampledImage 98 99 102: 6(float) CompositeExtract 73 0 103: 6(float) CompositeExtract 73 1 104: 6(float) CompositeExtract 73 2 105: 7(fvec4) CompositeConstruct 102 103 104 28 106: 6(float) CompositeExtract 105 3 107: 6(float) ImageSampleDrefExplicitLod 101 105 106 Lod 33 Store 94(r34) 107 112: 109 Load 111(g_tTexcdf4a) 113: 18 Load 20(g_sSamp) 115: 114 SampledImage 112 113 118: 6(float) ImageSampleDrefExplicitLod 115 117 28 Lod 33 Store 108(r60) 118 123: 120 Load 122(g_tTexcdi4a) 124: 18 Load 20(g_sSamp) 126: 125 SampledImage 123 124 127: 6(float) ImageSampleDrefExplicitLod 126 117 28 Lod 33 Store 119(r62) 127 132: 129 Load 131(g_tTexcdu4a) 133: 18 Load 20(g_sSamp) 135: 134 SampledImage 132 133 136: 6(float) ImageSampleDrefExplicitLod 135 117 28 Lod 33 Store 128(r64) 136 143: 142(ptr) AccessChain 138(psout) 139 Store 143 141 145: 12(ptr) AccessChain 138(psout) 144 Store 145 140 146:8(PS_OUTPUT) Load 138(psout) ReturnValue 146 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out000066400000000000000000001065501506534232700266320ustar00rootroot00000000000000hlsl.samplecmplevelzero.basic.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r00' ( temp float) 0:42 textureLod ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DShadow) 0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec2 ( temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 0.000000 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r02' ( temp float) 0:43 textureLod ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DShadow) 0:43 'g_tTex1di4' ( uniform itexture1DShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec2 ( temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 0.000000 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r04' ( temp float) 0:44 textureLod ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DShadow) 0:44 'g_tTex1du4' ( uniform utexture1DShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec2 ( temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 0.000000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r20' ( temp float) 0:47 textureLod ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DShadow) 0:47 'g_tTex2df4' ( uniform texture2DShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec3 ( temp 3-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 0.000000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r22' ( temp float) 0:48 textureLod ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DShadow) 0:48 'g_tTex2di4' ( uniform itexture2DShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec3 ( temp 3-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 0.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r24' ( temp float) 0:49 textureLod ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DShadow) 0:49 'g_tTex2du4' ( uniform utexture2DShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec3 ( temp 3-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 0.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r50' ( temp float) 0:53 textureLod ( temp float) 0:53 Construct combined texture-sampler ( temp samplerCubeShadow) 0:53 'g_tTexcdf4' ( uniform textureCubeShadow) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 Construct vec4 ( temp 4-component vector of float) 0:53 Constant: 0:53 0.100000 0:53 0.200000 0:53 0.300000 0:53 Constant: 0:53 0.750000 0:53 Constant: 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'r52' ( temp float) 0:54 textureLod ( temp float) 0:54 Construct combined texture-sampler ( temp isamplerCubeShadow) 0:54 'g_tTexcdi4' ( uniform itextureCubeShadow) 0:54 'g_sSamp' (layout( binding=0) uniform sampler) 0:54 Construct vec4 ( temp 4-component vector of float) 0:54 Constant: 0:54 0.100000 0:54 0.200000 0:54 0.300000 0:54 Constant: 0:54 0.750000 0:54 Constant: 0:54 0.000000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'r54' ( temp float) 0:55 textureLod ( temp float) 0:55 Construct combined texture-sampler ( temp usamplerCubeShadow) 0:55 'g_tTexcdu4' ( uniform utextureCubeShadow) 0:55 'g_sSamp' (layout( binding=0) uniform sampler) 0:55 Construct vec4 ( temp 4-component vector of float) 0:55 Constant: 0:55 0.100000 0:55 0.200000 0:55 0.300000 0:55 Constant: 0:55 0.750000 0:55 Constant: 0:55 0.000000 0:57 move second child to first child ( temp 4-component vector of float) 0:57 Color: direct index for structure ( temp 4-component vector of float) 0:57 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1.000000 0:57 1.000000 0:57 1.000000 0:57 1.000000 0:58 move second child to first child ( temp float) 0:58 Depth: direct index for structure ( temp float) 0:58 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 1.000000 0:60 Branch: Return with expression 0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:? 'g_tTex1di4' ( uniform itexture1DShadow) 0:? 'g_tTex1du4' ( uniform utexture1DShadow) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCubeShadow) 0:? 'g_tTexcdi4' ( uniform itextureCubeShadow) 0:? 'g_tTexcdu4' ( uniform utextureCubeShadow) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r00' ( temp float) 0:42 textureLod ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DShadow) 0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec2 ( temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 0.000000 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r02' ( temp float) 0:43 textureLod ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DShadow) 0:43 'g_tTex1di4' ( uniform itexture1DShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec2 ( temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 0.000000 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r04' ( temp float) 0:44 textureLod ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DShadow) 0:44 'g_tTex1du4' ( uniform utexture1DShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec2 ( temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 0.000000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r20' ( temp float) 0:47 textureLod ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DShadow) 0:47 'g_tTex2df4' ( uniform texture2DShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec3 ( temp 3-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 0.000000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r22' ( temp float) 0:48 textureLod ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DShadow) 0:48 'g_tTex2di4' ( uniform itexture2DShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec3 ( temp 3-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 0.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r24' ( temp float) 0:49 textureLod ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DShadow) 0:49 'g_tTex2du4' ( uniform utexture2DShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec3 ( temp 3-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 0.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'r50' ( temp float) 0:53 textureLod ( temp float) 0:53 Construct combined texture-sampler ( temp samplerCubeShadow) 0:53 'g_tTexcdf4' ( uniform textureCubeShadow) 0:53 'g_sSamp' (layout( binding=0) uniform sampler) 0:53 Construct vec4 ( temp 4-component vector of float) 0:53 Constant: 0:53 0.100000 0:53 0.200000 0:53 0.300000 0:53 Constant: 0:53 0.750000 0:53 Constant: 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'r52' ( temp float) 0:54 textureLod ( temp float) 0:54 Construct combined texture-sampler ( temp isamplerCubeShadow) 0:54 'g_tTexcdi4' ( uniform itextureCubeShadow) 0:54 'g_sSamp' (layout( binding=0) uniform sampler) 0:54 Construct vec4 ( temp 4-component vector of float) 0:54 Constant: 0:54 0.100000 0:54 0.200000 0:54 0.300000 0:54 Constant: 0:54 0.750000 0:54 Constant: 0:54 0.000000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'r54' ( temp float) 0:55 textureLod ( temp float) 0:55 Construct combined texture-sampler ( temp usamplerCubeShadow) 0:55 'g_tTexcdu4' ( uniform utextureCubeShadow) 0:55 'g_sSamp' (layout( binding=0) uniform sampler) 0:55 Construct vec4 ( temp 4-component vector of float) 0:55 Constant: 0:55 0.100000 0:55 0.200000 0:55 0.300000 0:55 Constant: 0:55 0.750000 0:55 Constant: 0:55 0.000000 0:57 move second child to first child ( temp 4-component vector of float) 0:57 Color: direct index for structure ( temp 4-component vector of float) 0:57 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1.000000 0:57 1.000000 0:57 1.000000 0:57 1.000000 0:58 move second child to first child ( temp float) 0:58 Depth: direct index for structure ( temp float) 0:58 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 1.000000 0:60 Branch: Return with expression 0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:? 'g_tTex1di4' ( uniform itexture1DShadow) 0:? 'g_tTex1du4' ( uniform utexture1DShadow) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCubeShadow) 0:? 'g_tTexcdi4' ( uniform itextureCubeShadow) 0:? 'g_tTexcdu4' ( uniform utextureCubeShadow) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 199 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 156 160 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r00" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 31 "r02" Name 35 "g_tTex1di4" Name 43 "r04" Name 47 "g_tTex1du4" Name 55 "r20" Name 58 "g_tTex2df4" Name 71 "r22" Name 74 "g_tTex2di4" Name 84 "r24" Name 87 "g_tTex2du4" Name 97 "r50" Name 100 "g_tTexcdf4" Name 113 "r52" Name 116 "g_tTexcdi4" Name 127 "r54" Name 130 "g_tTexcdu4" Name 142 "psout" Name 153 "flattenTemp" Name 156 "@entryPointOutput.Color" Name 160 "@entryPointOutput.Depth" Name 165 "g_tTex3df4" Name 168 "g_tTex3di4" Name 171 "g_tTex3du4" Name 174 "g_tTex1df4a" Name 177 "g_tTex1di4a" Name 180 "g_tTex1du4a" Name 183 "g_tTex2df4a" Name 186 "g_tTex2di4a" Name 189 "g_tTex2du4a" Name 192 "g_tTexcdf4a" Name 195 "g_tTexcdi4a" Name 198 "g_tTexcdu4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 2 Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 58(g_tTex2df4) Binding 3 Decorate 58(g_tTex2df4) DescriptorSet 0 Decorate 74(g_tTex2di4) Binding 4 Decorate 74(g_tTex2di4) DescriptorSet 0 Decorate 87(g_tTex2du4) Binding 5 Decorate 87(g_tTex2du4) DescriptorSet 0 Decorate 100(g_tTexcdf4) Binding 6 Decorate 100(g_tTexcdf4) DescriptorSet 0 Decorate 116(g_tTexcdi4) Binding 7 Decorate 116(g_tTexcdi4) DescriptorSet 0 Decorate 130(g_tTexcdu4) Binding 8 Decorate 130(g_tTexcdu4) DescriptorSet 0 Decorate 156(@entryPointOutput.Color) Location 0 Decorate 160(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 165(g_tTex3df4) Binding 0 Decorate 165(g_tTex3df4) DescriptorSet 0 Decorate 168(g_tTex3di4) Binding 0 Decorate 168(g_tTex3di4) DescriptorSet 0 Decorate 171(g_tTex3du4) Binding 0 Decorate 171(g_tTex3du4) DescriptorSet 0 Decorate 174(g_tTex1df4a) Binding 0 Decorate 174(g_tTex1df4a) DescriptorSet 0 Decorate 177(g_tTex1di4a) Binding 0 Decorate 177(g_tTex1di4a) DescriptorSet 0 Decorate 180(g_tTex1du4a) Binding 0 Decorate 180(g_tTex1du4a) DescriptorSet 0 Decorate 183(g_tTex2df4a) Binding 0 Decorate 183(g_tTex2df4a) DescriptorSet 0 Decorate 186(g_tTex2di4a) Binding 0 Decorate 186(g_tTex2di4a) DescriptorSet 0 Decorate 189(g_tTex2du4a) Binding 0 Decorate 189(g_tTex2du4a) DescriptorSet 0 Decorate 192(g_tTexcdf4a) Binding 0 Decorate 192(g_tTexcdf4a) DescriptorSet 0 Decorate 195(g_tTexcdi4a) Binding 0 Decorate 195(g_tTexcdi4a) DescriptorSet 0 Decorate 198(g_tTexcdu4a) Binding 0 Decorate 198(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D depth sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1061158912 26: TypeVector 6(float) 2 28: 6(float) Constant 0 32: TypeInt 32 1 33: TypeImage 32(int) 1D depth sampled format:Unknown 34: TypePointer UniformConstant 33 35(g_tTex1di4): 34(ptr) Variable UniformConstant 38: TypeSampledImage 33 44: TypeInt 32 0 45: TypeImage 44(int) 1D depth sampled format:Unknown 46: TypePointer UniformConstant 45 47(g_tTex1du4): 46(ptr) Variable UniformConstant 50: TypeSampledImage 45 56: TypeImage 6(float) 2D depth sampled format:Unknown 57: TypePointer UniformConstant 56 58(g_tTex2df4): 57(ptr) Variable UniformConstant 61: TypeSampledImage 56 63: 6(float) Constant 1045220557 64: 26(fvec2) ConstantComposite 24 63 65: TypeVector 6(float) 3 72: TypeImage 32(int) 2D depth sampled format:Unknown 73: TypePointer UniformConstant 72 74(g_tTex2di4): 73(ptr) Variable UniformConstant 77: TypeSampledImage 72 85: TypeImage 44(int) 2D depth sampled format:Unknown 86: TypePointer UniformConstant 85 87(g_tTex2du4): 86(ptr) Variable UniformConstant 90: TypeSampledImage 85 98: TypeImage 6(float) Cube depth sampled format:Unknown 99: TypePointer UniformConstant 98 100(g_tTexcdf4): 99(ptr) Variable UniformConstant 103: TypeSampledImage 98 105: 6(float) Constant 1050253722 106: 65(fvec3) ConstantComposite 24 63 105 114: TypeImage 32(int) Cube depth sampled format:Unknown 115: TypePointer UniformConstant 114 116(g_tTexcdi4): 115(ptr) Variable UniformConstant 119: TypeSampledImage 114 128: TypeImage 44(int) Cube depth sampled format:Unknown 129: TypePointer UniformConstant 128 130(g_tTexcdu4): 129(ptr) Variable UniformConstant 133: TypeSampledImage 128 141: TypePointer Function 8(PS_OUTPUT) 143: 32(int) Constant 0 144: 6(float) Constant 1065353216 145: 7(fvec4) ConstantComposite 144 144 144 144 146: TypePointer Function 7(fvec4) 148: 32(int) Constant 1 155: TypePointer Output 7(fvec4) 156(@entryPointOutput.Color): 155(ptr) Variable Output 159: TypePointer Output 6(float) 160(@entryPointOutput.Depth): 159(ptr) Variable Output 163: TypeImage 6(float) 3D sampled format:Unknown 164: TypePointer UniformConstant 163 165(g_tTex3df4): 164(ptr) Variable UniformConstant 166: TypeImage 32(int) 3D sampled format:Unknown 167: TypePointer UniformConstant 166 168(g_tTex3di4): 167(ptr) Variable UniformConstant 169: TypeImage 44(int) 3D sampled format:Unknown 170: TypePointer UniformConstant 169 171(g_tTex3du4): 170(ptr) Variable UniformConstant 172: TypeImage 6(float) 1D array sampled format:Unknown 173: TypePointer UniformConstant 172 174(g_tTex1df4a): 173(ptr) Variable UniformConstant 175: TypeImage 32(int) 1D array sampled format:Unknown 176: TypePointer UniformConstant 175 177(g_tTex1di4a): 176(ptr) Variable UniformConstant 178: TypeImage 44(int) 1D array sampled format:Unknown 179: TypePointer UniformConstant 178 180(g_tTex1du4a): 179(ptr) Variable UniformConstant 181: TypeImage 6(float) 2D array sampled format:Unknown 182: TypePointer UniformConstant 181 183(g_tTex2df4a): 182(ptr) Variable UniformConstant 184: TypeImage 32(int) 2D array sampled format:Unknown 185: TypePointer UniformConstant 184 186(g_tTex2di4a): 185(ptr) Variable UniformConstant 187: TypeImage 44(int) 2D array sampled format:Unknown 188: TypePointer UniformConstant 187 189(g_tTex2du4a): 188(ptr) Variable UniformConstant 190: TypeImage 6(float) Cube array sampled format:Unknown 191: TypePointer UniformConstant 190 192(g_tTexcdf4a): 191(ptr) Variable UniformConstant 193: TypeImage 32(int) Cube array sampled format:Unknown 194: TypePointer UniformConstant 193 195(g_tTexcdi4a): 194(ptr) Variable UniformConstant 196: TypeImage 44(int) Cube array sampled format:Unknown 197: TypePointer UniformConstant 196 198(g_tTexcdu4a): 197(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 153(flattenTemp): 141(ptr) Variable Function 154:8(PS_OUTPUT) FunctionCall 10(@main() Store 153(flattenTemp) 154 157: 146(ptr) AccessChain 153(flattenTemp) 143 158: 7(fvec4) Load 157 Store 156(@entryPointOutput.Color) 158 161: 12(ptr) AccessChain 153(flattenTemp) 148 162: 6(float) Load 161 Store 160(@entryPointOutput.Depth) 162 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function 31(r02): 12(ptr) Variable Function 43(r04): 12(ptr) Variable Function 55(r20): 12(ptr) Variable Function 71(r22): 12(ptr) Variable Function 84(r24): 12(ptr) Variable Function 97(r50): 12(ptr) Variable Function 113(r52): 12(ptr) Variable Function 127(r54): 12(ptr) Variable Function 142(psout): 141(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 27: 26(fvec2) CompositeConstruct 24 25 29: 6(float) CompositeExtract 27 1 30: 6(float) ImageSampleDrefExplicitLod 23 27 29 Lod 28 Store 13(r00) 30 36: 33 Load 35(g_tTex1di4) 37: 18 Load 20(g_sSamp) 39: 38 SampledImage 36 37 40: 26(fvec2) CompositeConstruct 24 25 41: 6(float) CompositeExtract 40 1 42: 6(float) ImageSampleDrefExplicitLod 39 40 41 Lod 28 Store 31(r02) 42 48: 45 Load 47(g_tTex1du4) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 52: 26(fvec2) CompositeConstruct 24 25 53: 6(float) CompositeExtract 52 1 54: 6(float) ImageSampleDrefExplicitLod 51 52 53 Lod 28 Store 43(r04) 54 59: 56 Load 58(g_tTex2df4) 60: 18 Load 20(g_sSamp) 62: 61 SampledImage 59 60 66: 6(float) CompositeExtract 64 0 67: 6(float) CompositeExtract 64 1 68: 65(fvec3) CompositeConstruct 66 67 25 69: 6(float) CompositeExtract 68 2 70: 6(float) ImageSampleDrefExplicitLod 62 68 69 Lod 28 Store 55(r20) 70 75: 72 Load 74(g_tTex2di4) 76: 18 Load 20(g_sSamp) 78: 77 SampledImage 75 76 79: 6(float) CompositeExtract 64 0 80: 6(float) CompositeExtract 64 1 81: 65(fvec3) CompositeConstruct 79 80 25 82: 6(float) CompositeExtract 81 2 83: 6(float) ImageSampleDrefExplicitLod 78 81 82 Lod 28 Store 71(r22) 83 88: 85 Load 87(g_tTex2du4) 89: 18 Load 20(g_sSamp) 91: 90 SampledImage 88 89 92: 6(float) CompositeExtract 64 0 93: 6(float) CompositeExtract 64 1 94: 65(fvec3) CompositeConstruct 92 93 25 95: 6(float) CompositeExtract 94 2 96: 6(float) ImageSampleDrefExplicitLod 91 94 95 Lod 28 Store 84(r24) 96 101: 98 Load 100(g_tTexcdf4) 102: 18 Load 20(g_sSamp) 104: 103 SampledImage 101 102 107: 6(float) CompositeExtract 106 0 108: 6(float) CompositeExtract 106 1 109: 6(float) CompositeExtract 106 2 110: 7(fvec4) CompositeConstruct 107 108 109 25 111: 6(float) CompositeExtract 110 3 112: 6(float) ImageSampleDrefExplicitLod 104 110 111 Lod 28 Store 97(r50) 112 117: 114 Load 116(g_tTexcdi4) 118: 18 Load 20(g_sSamp) 120: 119 SampledImage 117 118 121: 6(float) CompositeExtract 106 0 122: 6(float) CompositeExtract 106 1 123: 6(float) CompositeExtract 106 2 124: 7(fvec4) CompositeConstruct 121 122 123 25 125: 6(float) CompositeExtract 124 3 126: 6(float) ImageSampleDrefExplicitLod 120 124 125 Lod 28 Store 113(r52) 126 131: 128 Load 130(g_tTexcdu4) 132: 18 Load 20(g_sSamp) 134: 133 SampledImage 131 132 135: 6(float) CompositeExtract 106 0 136: 6(float) CompositeExtract 106 1 137: 6(float) CompositeExtract 106 2 138: 7(fvec4) CompositeConstruct 135 136 137 25 139: 6(float) CompositeExtract 138 3 140: 6(float) ImageSampleDrefExplicitLod 134 138 139 Lod 28 Store 127(r54) 140 147: 146(ptr) AccessChain 142(psout) 143 Store 147 145 149: 12(ptr) AccessChain 142(psout) 148 Store 149 144 150:8(PS_OUTPUT) Load 142(psout) ReturnValue 150 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out000066400000000000000000000751261506534232700270430ustar00rootroot00000000000000hlsl.samplecmplevelzero.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r01' ( temp float) 0:42 textureLodOffset ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DShadow) 0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec2 ( temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 0.000000 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r03' ( temp float) 0:43 textureLodOffset ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DShadow) 0:43 'g_tTex1di4' ( uniform itexture1DShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec2 ( temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 0.000000 0:43 Constant: 0:43 2 (const int) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r05' ( temp float) 0:44 textureLodOffset ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DShadow) 0:44 'g_tTex1du4' ( uniform utexture1DShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec2 ( temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 0.000000 0:44 Constant: 0:44 2 (const int) 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r21' ( temp float) 0:47 textureLodOffset ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DShadow) 0:47 'g_tTex2df4' ( uniform texture2DShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec3 ( temp 3-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 0.000000 0:47 Constant: 0:47 2 (const int) 0:47 3 (const int) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r23' ( temp float) 0:48 textureLodOffset ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DShadow) 0:48 'g_tTex2di4' ( uniform itexture2DShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec3 ( temp 3-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 0.000000 0:48 Constant: 0:48 2 (const int) 0:48 3 (const int) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r25' ( temp float) 0:49 textureLodOffset ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DShadow) 0:49 'g_tTex2du4' ( uniform utexture2DShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec3 ( temp 3-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 0.000000 0:49 Constant: 0:49 2 (const int) 0:49 3 (const int) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 Color: direct index for structure ( temp 4-component vector of float) 0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1.000000 0:62 1.000000 0:62 1.000000 0:62 1.000000 0:63 move second child to first child ( temp float) 0:63 Depth: direct index for structure ( temp float) 0:63 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 1.000000 0:65 Branch: Return with expression 0:65 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:? 'g_tTex1di4' ( uniform itexture1DShadow) 0:? 'g_tTex1du4' ( uniform utexture1DShadow) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r01' ( temp float) 0:42 textureLodOffset ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DShadow) 0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec2 ( temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 0.000000 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r03' ( temp float) 0:43 textureLodOffset ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DShadow) 0:43 'g_tTex1di4' ( uniform itexture1DShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec2 ( temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 0.000000 0:43 Constant: 0:43 2 (const int) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r05' ( temp float) 0:44 textureLodOffset ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DShadow) 0:44 'g_tTex1du4' ( uniform utexture1DShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec2 ( temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 0.000000 0:44 Constant: 0:44 2 (const int) 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r21' ( temp float) 0:47 textureLodOffset ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DShadow) 0:47 'g_tTex2df4' ( uniform texture2DShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec3 ( temp 3-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 0.000000 0:47 Constant: 0:47 2 (const int) 0:47 3 (const int) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r23' ( temp float) 0:48 textureLodOffset ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DShadow) 0:48 'g_tTex2di4' ( uniform itexture2DShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec3 ( temp 3-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 0.000000 0:48 Constant: 0:48 2 (const int) 0:48 3 (const int) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r25' ( temp float) 0:49 textureLodOffset ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DShadow) 0:49 'g_tTex2du4' ( uniform utexture2DShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec3 ( temp 3-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 0.000000 0:49 Constant: 0:49 2 (const int) 0:49 3 (const int) 0:62 move second child to first child ( temp 4-component vector of float) 0:62 Color: direct index for structure ( temp 4-component vector of float) 0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1.000000 0:62 1.000000 0:62 1.000000 0:62 1.000000 0:63 move second child to first child ( temp float) 0:63 Depth: direct index for structure ( temp float) 0:63 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 1.000000 0:65 Branch: Return with expression 0:65 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow) 0:? 'g_tTex1di4' ( uniform itexture1DShadow) 0:? 'g_tTex1du4' ( uniform utexture1DShadow) 0:? 'g_tTex2df4' ( uniform texture2DShadow) 0:? 'g_tTex2di4' ( uniform itexture2DShadow) 0:? 'g_tTex2du4' ( uniform utexture2DShadow) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 168 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 116 120 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r01" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 33 "r03" Name 36 "g_tTex1di4" Name 44 "r05" Name 48 "g_tTex1du4" Name 56 "r21" Name 59 "g_tTex2df4" Name 75 "r23" Name 78 "g_tTex2di4" Name 88 "r25" Name 91 "g_tTex2du4" Name 102 "psout" Name 113 "flattenTemp" Name 116 "@entryPointOutput.Color" Name 120 "@entryPointOutput.Depth" Name 125 "g_tTex3df4" Name 128 "g_tTex3di4" Name 131 "g_tTex3du4" Name 134 "g_tTexcdf4" Name 137 "g_tTexcdi4" Name 140 "g_tTexcdu4" Name 143 "g_tTex1df4a" Name 146 "g_tTex1di4a" Name 149 "g_tTex1du4a" Name 152 "g_tTex2df4a" Name 155 "g_tTex2di4a" Name 158 "g_tTex2du4a" Name 161 "g_tTexcdf4a" Name 164 "g_tTexcdi4a" Name 167 "g_tTexcdu4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex1di4) Binding 1 Decorate 36(g_tTex1di4) DescriptorSet 0 Decorate 48(g_tTex1du4) Binding 2 Decorate 48(g_tTex1du4) DescriptorSet 0 Decorate 59(g_tTex2df4) Binding 3 Decorate 59(g_tTex2df4) DescriptorSet 0 Decorate 78(g_tTex2di4) Binding 4 Decorate 78(g_tTex2di4) DescriptorSet 0 Decorate 91(g_tTex2du4) Binding 5 Decorate 91(g_tTex2du4) DescriptorSet 0 Decorate 116(@entryPointOutput.Color) Location 0 Decorate 120(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 125(g_tTex3df4) Binding 0 Decorate 125(g_tTex3df4) DescriptorSet 0 Decorate 128(g_tTex3di4) Binding 0 Decorate 128(g_tTex3di4) DescriptorSet 0 Decorate 131(g_tTex3du4) Binding 0 Decorate 131(g_tTex3du4) DescriptorSet 0 Decorate 134(g_tTexcdf4) Binding 0 Decorate 134(g_tTexcdf4) DescriptorSet 0 Decorate 137(g_tTexcdi4) Binding 0 Decorate 137(g_tTexcdi4) DescriptorSet 0 Decorate 140(g_tTexcdu4) Binding 0 Decorate 140(g_tTexcdu4) DescriptorSet 0 Decorate 143(g_tTex1df4a) Binding 0 Decorate 143(g_tTex1df4a) DescriptorSet 0 Decorate 146(g_tTex1di4a) Binding 0 Decorate 146(g_tTex1di4a) DescriptorSet 0 Decorate 149(g_tTex1du4a) Binding 0 Decorate 149(g_tTex1du4a) DescriptorSet 0 Decorate 152(g_tTex2df4a) Binding 0 Decorate 152(g_tTex2df4a) DescriptorSet 0 Decorate 155(g_tTex2di4a) Binding 0 Decorate 155(g_tTex2di4a) DescriptorSet 0 Decorate 158(g_tTex2du4a) Binding 0 Decorate 158(g_tTex2du4a) DescriptorSet 0 Decorate 161(g_tTexcdf4a) Binding 0 Decorate 161(g_tTexcdf4a) DescriptorSet 0 Decorate 164(g_tTexcdi4a) Binding 0 Decorate 164(g_tTexcdi4a) DescriptorSet 0 Decorate 167(g_tTexcdu4a) Binding 0 Decorate 167(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D depth sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1061158912 26: TypeVector 6(float) 2 28: 6(float) Constant 0 29: TypeInt 32 1 30: 29(int) Constant 2 34: TypeImage 29(int) 1D depth sampled format:Unknown 35: TypePointer UniformConstant 34 36(g_tTex1di4): 35(ptr) Variable UniformConstant 39: TypeSampledImage 34 45: TypeInt 32 0 46: TypeImage 45(int) 1D depth sampled format:Unknown 47: TypePointer UniformConstant 46 48(g_tTex1du4): 47(ptr) Variable UniformConstant 51: TypeSampledImage 46 57: TypeImage 6(float) 2D depth sampled format:Unknown 58: TypePointer UniformConstant 57 59(g_tTex2df4): 58(ptr) Variable UniformConstant 62: TypeSampledImage 57 64: 6(float) Constant 1045220557 65: 26(fvec2) ConstantComposite 24 64 66: TypeVector 6(float) 3 70: TypeVector 29(int) 2 71: 29(int) Constant 3 72: 70(ivec2) ConstantComposite 30 71 76: TypeImage 29(int) 2D depth sampled format:Unknown 77: TypePointer UniformConstant 76 78(g_tTex2di4): 77(ptr) Variable UniformConstant 81: TypeSampledImage 76 89: TypeImage 45(int) 2D depth sampled format:Unknown 90: TypePointer UniformConstant 89 91(g_tTex2du4): 90(ptr) Variable UniformConstant 94: TypeSampledImage 89 101: TypePointer Function 8(PS_OUTPUT) 103: 29(int) Constant 0 104: 6(float) Constant 1065353216 105: 7(fvec4) ConstantComposite 104 104 104 104 106: TypePointer Function 7(fvec4) 108: 29(int) Constant 1 115: TypePointer Output 7(fvec4) 116(@entryPointOutput.Color): 115(ptr) Variable Output 119: TypePointer Output 6(float) 120(@entryPointOutput.Depth): 119(ptr) Variable Output 123: TypeImage 6(float) 3D sampled format:Unknown 124: TypePointer UniformConstant 123 125(g_tTex3df4): 124(ptr) Variable UniformConstant 126: TypeImage 29(int) 3D sampled format:Unknown 127: TypePointer UniformConstant 126 128(g_tTex3di4): 127(ptr) Variable UniformConstant 129: TypeImage 45(int) 3D sampled format:Unknown 130: TypePointer UniformConstant 129 131(g_tTex3du4): 130(ptr) Variable UniformConstant 132: TypeImage 6(float) Cube sampled format:Unknown 133: TypePointer UniformConstant 132 134(g_tTexcdf4): 133(ptr) Variable UniformConstant 135: TypeImage 29(int) Cube sampled format:Unknown 136: TypePointer UniformConstant 135 137(g_tTexcdi4): 136(ptr) Variable UniformConstant 138: TypeImage 45(int) Cube sampled format:Unknown 139: TypePointer UniformConstant 138 140(g_tTexcdu4): 139(ptr) Variable UniformConstant 141: TypeImage 6(float) 1D array sampled format:Unknown 142: TypePointer UniformConstant 141 143(g_tTex1df4a): 142(ptr) Variable UniformConstant 144: TypeImage 29(int) 1D array sampled format:Unknown 145: TypePointer UniformConstant 144 146(g_tTex1di4a): 145(ptr) Variable UniformConstant 147: TypeImage 45(int) 1D array sampled format:Unknown 148: TypePointer UniformConstant 147 149(g_tTex1du4a): 148(ptr) Variable UniformConstant 150: TypeImage 6(float) 2D array sampled format:Unknown 151: TypePointer UniformConstant 150 152(g_tTex2df4a): 151(ptr) Variable UniformConstant 153: TypeImage 29(int) 2D array sampled format:Unknown 154: TypePointer UniformConstant 153 155(g_tTex2di4a): 154(ptr) Variable UniformConstant 156: TypeImage 45(int) 2D array sampled format:Unknown 157: TypePointer UniformConstant 156 158(g_tTex2du4a): 157(ptr) Variable UniformConstant 159: TypeImage 6(float) Cube array sampled format:Unknown 160: TypePointer UniformConstant 159 161(g_tTexcdf4a): 160(ptr) Variable UniformConstant 162: TypeImage 29(int) Cube array sampled format:Unknown 163: TypePointer UniformConstant 162 164(g_tTexcdi4a): 163(ptr) Variable UniformConstant 165: TypeImage 45(int) Cube array sampled format:Unknown 166: TypePointer UniformConstant 165 167(g_tTexcdu4a): 166(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 113(flattenTemp): 101(ptr) Variable Function 114:8(PS_OUTPUT) FunctionCall 10(@main() Store 113(flattenTemp) 114 117: 106(ptr) AccessChain 113(flattenTemp) 103 118: 7(fvec4) Load 117 Store 116(@entryPointOutput.Color) 118 121: 12(ptr) AccessChain 113(flattenTemp) 108 122: 6(float) Load 121 Store 120(@entryPointOutput.Depth) 122 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r01): 12(ptr) Variable Function 33(r03): 12(ptr) Variable Function 44(r05): 12(ptr) Variable Function 56(r21): 12(ptr) Variable Function 75(r23): 12(ptr) Variable Function 88(r25): 12(ptr) Variable Function 102(psout): 101(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 27: 26(fvec2) CompositeConstruct 24 25 31: 6(float) CompositeExtract 27 1 32: 6(float) ImageSampleDrefExplicitLod 23 27 31 Lod ConstOffset 28 30 Store 13(r01) 32 37: 34 Load 36(g_tTex1di4) 38: 18 Load 20(g_sSamp) 40: 39 SampledImage 37 38 41: 26(fvec2) CompositeConstruct 24 25 42: 6(float) CompositeExtract 41 1 43: 6(float) ImageSampleDrefExplicitLod 40 41 42 Lod ConstOffset 28 30 Store 33(r03) 43 49: 46 Load 48(g_tTex1du4) 50: 18 Load 20(g_sSamp) 52: 51 SampledImage 49 50 53: 26(fvec2) CompositeConstruct 24 25 54: 6(float) CompositeExtract 53 1 55: 6(float) ImageSampleDrefExplicitLod 52 53 54 Lod ConstOffset 28 30 Store 44(r05) 55 60: 57 Load 59(g_tTex2df4) 61: 18 Load 20(g_sSamp) 63: 62 SampledImage 60 61 67: 6(float) CompositeExtract 65 0 68: 6(float) CompositeExtract 65 1 69: 66(fvec3) CompositeConstruct 67 68 25 73: 6(float) CompositeExtract 69 2 74: 6(float) ImageSampleDrefExplicitLod 63 69 73 Lod ConstOffset 28 72 Store 56(r21) 74 79: 76 Load 78(g_tTex2di4) 80: 18 Load 20(g_sSamp) 82: 81 SampledImage 79 80 83: 6(float) CompositeExtract 65 0 84: 6(float) CompositeExtract 65 1 85: 66(fvec3) CompositeConstruct 83 84 25 86: 6(float) CompositeExtract 85 2 87: 6(float) ImageSampleDrefExplicitLod 82 85 86 Lod ConstOffset 28 72 Store 75(r23) 87 92: 89 Load 91(g_tTex2du4) 93: 18 Load 20(g_sSamp) 95: 94 SampledImage 92 93 96: 6(float) CompositeExtract 65 0 97: 6(float) CompositeExtract 65 1 98: 66(fvec3) CompositeConstruct 96 97 25 99: 6(float) CompositeExtract 98 2 100: 6(float) ImageSampleDrefExplicitLod 95 98 99 Lod ConstOffset 28 72 Store 88(r25) 100 107: 106(ptr) AccessChain 102(psout) 103 Store 107 105 109: 12(ptr) AccessChain 102(psout) 108 Store 109 104 110:8(PS_OUTPUT) Load 102(psout) ReturnValue 110 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out000066400000000000000000000771731506534232700301060ustar00rootroot00000000000000hlsl.samplecmplevelzero.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r11' ( temp float) 0:42 textureLodOffset ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 0.000000 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r13' ( temp float) 0:43 textureLodOffset ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec3 ( temp 3-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 0.000000 0:43 Constant: 0:43 2 (const int) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r15' ( temp float) 0:44 textureLodOffset ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec3 ( temp 3-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 0.000000 0:44 Constant: 0:44 2 (const int) 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r31' ( temp float) 0:47 textureLodOffset ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 0.300000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 0.000000 0:47 Constant: 0:47 2 (const int) 0:47 3 (const int) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r33' ( temp float) 0:48 textureLodOffset ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec4 ( temp 4-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 0.300000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 0.000000 0:48 Constant: 0:48 2 (const int) 0:48 3 (const int) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r35' ( temp float) 0:49 textureLodOffset ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 0.300000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 0.000000 0:49 Constant: 0:49 2 (const int) 0:49 3 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 Color: direct index for structure ( temp 4-component vector of float) 0:63 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1.000000 0:63 1.000000 0:63 1.000000 0:63 1.000000 0:64 move second child to first child ( temp float) 0:64 Depth: direct index for structure ( temp float) 0:64 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 1.000000 0:66 Branch: Return with expression 0:66 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence 0:42 move second child to first child ( temp float) 0:42 'r11' ( temp float) 0:42 textureLodOffset ( temp float) 0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 Constant: 0:42 0.750000 0:42 Constant: 0:42 0.000000 0:42 Constant: 0:42 2 (const int) 0:43 Sequence 0:43 move second child to first child ( temp float) 0:43 'r13' ( temp float) 0:43 textureLodOffset ( temp float) 0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Construct vec3 ( temp 3-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 Constant: 0:43 0.750000 0:43 Constant: 0:43 0.000000 0:43 Constant: 0:43 2 (const int) 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 'r15' ( temp float) 0:44 textureLodOffset ( temp float) 0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Construct vec3 ( temp 3-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 Constant: 0:44 0.750000 0:44 Constant: 0:44 0.000000 0:44 Constant: 0:44 2 (const int) 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'r31' ( temp float) 0:47 textureLodOffset ( temp float) 0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:47 'g_sSamp' (layout( binding=0) uniform sampler) 0:47 Construct vec4 ( temp 4-component vector of float) 0:47 Constant: 0:47 0.100000 0:47 0.200000 0:47 0.300000 0:47 Constant: 0:47 0.750000 0:47 Constant: 0:47 0.000000 0:47 Constant: 0:47 2 (const int) 0:47 3 (const int) 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'r33' ( temp float) 0:48 textureLodOffset ( temp float) 0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:48 'g_sSamp' (layout( binding=0) uniform sampler) 0:48 Construct vec4 ( temp 4-component vector of float) 0:48 Constant: 0:48 0.100000 0:48 0.200000 0:48 0.300000 0:48 Constant: 0:48 0.750000 0:48 Constant: 0:48 0.000000 0:48 Constant: 0:48 2 (const int) 0:48 3 (const int) 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'r35' ( temp float) 0:49 textureLodOffset ( temp float) 0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:49 'g_sSamp' (layout( binding=0) uniform sampler) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 Constant: 0:49 0.100000 0:49 0.200000 0:49 0.300000 0:49 Constant: 0:49 0.750000 0:49 Constant: 0:49 0.000000 0:49 Constant: 0:49 2 (const int) 0:49 3 (const int) 0:63 move second child to first child ( temp 4-component vector of float) 0:63 Color: direct index for structure ( temp 4-component vector of float) 0:63 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 1.000000 0:63 1.000000 0:63 1.000000 0:63 1.000000 0:64 move second child to first child ( temp float) 0:64 Depth: direct index for structure ( temp float) 0:64 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:64 Constant: 0:64 1 (const int) 0:64 Constant: 0:64 1.000000 0:66 Branch: Return with expression 0:66 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Definition: main( ( temp void) 0:38 Function Parameters: 0:? Sequence 0:38 Sequence 0:38 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:38 Color: direct index for structure ( temp 4-component vector of float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 0 (const int) 0:38 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:38 Depth: direct index for structure ( temp float) 0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:38 Constant: 0:38 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow) 0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow) 0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow) 0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow) 0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow) 0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 179 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 127 131 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r11" Name 16 "g_tTex1df4a" Name 20 "g_sSamp" Name 38 "r13" Name 41 "g_tTex1di4a" Name 51 "r15" Name 55 "g_tTex1du4a" Name 65 "r31" Name 68 "g_tTex2df4a" Name 84 "r33" Name 87 "g_tTex2di4a" Name 98 "r35" Name 101 "g_tTex2du4a" Name 113 "psout" Name 124 "flattenTemp" Name 127 "@entryPointOutput.Color" Name 131 "@entryPointOutput.Depth" Name 136 "g_tTex1df4" Name 139 "g_tTex1di4" Name 142 "g_tTex1du4" Name 145 "g_tTex2df4" Name 148 "g_tTex2di4" Name 151 "g_tTex2du4" Name 154 "g_tTex3df4" Name 157 "g_tTex3di4" Name 160 "g_tTex3du4" Name 163 "g_tTexcdf4" Name 166 "g_tTexcdi4" Name 169 "g_tTexcdu4" Name 172 "g_tTexcdf4a" Name 175 "g_tTexcdi4a" Name 178 "g_tTexcdu4a" Decorate 16(g_tTex1df4a) Binding 1 Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 41(g_tTex1di4a) Binding 2 Decorate 41(g_tTex1di4a) DescriptorSet 0 Decorate 55(g_tTex1du4a) Binding 3 Decorate 55(g_tTex1du4a) DescriptorSet 0 Decorate 68(g_tTex2df4a) Binding 4 Decorate 68(g_tTex2df4a) DescriptorSet 0 Decorate 87(g_tTex2di4a) Binding 5 Decorate 87(g_tTex2di4a) DescriptorSet 0 Decorate 101(g_tTex2du4a) Binding 6 Decorate 101(g_tTex2du4a) DescriptorSet 0 Decorate 127(@entryPointOutput.Color) Location 0 Decorate 131(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 136(g_tTex1df4) Binding 0 Decorate 136(g_tTex1df4) DescriptorSet 0 Decorate 139(g_tTex1di4) Binding 0 Decorate 139(g_tTex1di4) DescriptorSet 0 Decorate 142(g_tTex1du4) Binding 0 Decorate 142(g_tTex1du4) DescriptorSet 0 Decorate 145(g_tTex2df4) Binding 0 Decorate 145(g_tTex2df4) DescriptorSet 0 Decorate 148(g_tTex2di4) Binding 0 Decorate 148(g_tTex2di4) DescriptorSet 0 Decorate 151(g_tTex2du4) Binding 0 Decorate 151(g_tTex2du4) DescriptorSet 0 Decorate 154(g_tTex3df4) Binding 0 Decorate 154(g_tTex3df4) DescriptorSet 0 Decorate 157(g_tTex3di4) Binding 0 Decorate 157(g_tTex3di4) DescriptorSet 0 Decorate 160(g_tTex3du4) Binding 0 Decorate 160(g_tTex3du4) DescriptorSet 0 Decorate 163(g_tTexcdf4) Binding 0 Decorate 163(g_tTexcdf4) DescriptorSet 0 Decorate 166(g_tTexcdi4) Binding 0 Decorate 166(g_tTexcdi4) DescriptorSet 0 Decorate 169(g_tTexcdu4) Binding 0 Decorate 169(g_tTexcdu4) DescriptorSet 0 Decorate 172(g_tTexcdf4a) Binding 0 Decorate 172(g_tTexcdf4a) DescriptorSet 0 Decorate 175(g_tTexcdi4a) Binding 0 Decorate 175(g_tTexcdi4a) DescriptorSet 0 Decorate 178(g_tTexcdu4a) Binding 0 Decorate 178(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D depth array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1061158912 29: TypeVector 6(float) 3 33: 6(float) Constant 0 34: TypeInt 32 1 35: 34(int) Constant 2 39: TypeImage 34(int) 1D depth array sampled format:Unknown 40: TypePointer UniformConstant 39 41(g_tTex1di4a): 40(ptr) Variable UniformConstant 44: TypeSampledImage 39 52: TypeInt 32 0 53: TypeImage 52(int) 1D depth array sampled format:Unknown 54: TypePointer UniformConstant 53 55(g_tTex1du4a): 54(ptr) Variable UniformConstant 58: TypeSampledImage 53 66: TypeImage 6(float) 2D depth array sampled format:Unknown 67: TypePointer UniformConstant 66 68(g_tTex2df4a): 67(ptr) Variable UniformConstant 71: TypeSampledImage 66 73: 6(float) Constant 1050253722 74: 29(fvec3) ConstantComposite 25 26 73 79: TypeVector 34(int) 2 80: 34(int) Constant 3 81: 79(ivec2) ConstantComposite 35 80 85: TypeImage 34(int) 2D depth array sampled format:Unknown 86: TypePointer UniformConstant 85 87(g_tTex2di4a): 86(ptr) Variable UniformConstant 90: TypeSampledImage 85 99: TypeImage 52(int) 2D depth array sampled format:Unknown 100: TypePointer UniformConstant 99 101(g_tTex2du4a): 100(ptr) Variable UniformConstant 104: TypeSampledImage 99 112: TypePointer Function 8(PS_OUTPUT) 114: 34(int) Constant 0 115: 6(float) Constant 1065353216 116: 7(fvec4) ConstantComposite 115 115 115 115 117: TypePointer Function 7(fvec4) 119: 34(int) Constant 1 126: TypePointer Output 7(fvec4) 127(@entryPointOutput.Color): 126(ptr) Variable Output 130: TypePointer Output 6(float) 131(@entryPointOutput.Depth): 130(ptr) Variable Output 134: TypeImage 6(float) 1D sampled format:Unknown 135: TypePointer UniformConstant 134 136(g_tTex1df4): 135(ptr) Variable UniformConstant 137: TypeImage 34(int) 1D sampled format:Unknown 138: TypePointer UniformConstant 137 139(g_tTex1di4): 138(ptr) Variable UniformConstant 140: TypeImage 52(int) 1D sampled format:Unknown 141: TypePointer UniformConstant 140 142(g_tTex1du4): 141(ptr) Variable UniformConstant 143: TypeImage 6(float) 2D sampled format:Unknown 144: TypePointer UniformConstant 143 145(g_tTex2df4): 144(ptr) Variable UniformConstant 146: TypeImage 34(int) 2D sampled format:Unknown 147: TypePointer UniformConstant 146 148(g_tTex2di4): 147(ptr) Variable UniformConstant 149: TypeImage 52(int) 2D sampled format:Unknown 150: TypePointer UniformConstant 149 151(g_tTex2du4): 150(ptr) Variable UniformConstant 152: TypeImage 6(float) 3D sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTex3df4): 153(ptr) Variable UniformConstant 155: TypeImage 34(int) 3D sampled format:Unknown 156: TypePointer UniformConstant 155 157(g_tTex3di4): 156(ptr) Variable UniformConstant 158: TypeImage 52(int) 3D sampled format:Unknown 159: TypePointer UniformConstant 158 160(g_tTex3du4): 159(ptr) Variable UniformConstant 161: TypeImage 6(float) Cube sampled format:Unknown 162: TypePointer UniformConstant 161 163(g_tTexcdf4): 162(ptr) Variable UniformConstant 164: TypeImage 34(int) Cube sampled format:Unknown 165: TypePointer UniformConstant 164 166(g_tTexcdi4): 165(ptr) Variable UniformConstant 167: TypeImage 52(int) Cube sampled format:Unknown 168: TypePointer UniformConstant 167 169(g_tTexcdu4): 168(ptr) Variable UniformConstant 170: TypeImage 6(float) Cube array sampled format:Unknown 171: TypePointer UniformConstant 170 172(g_tTexcdf4a): 171(ptr) Variable UniformConstant 173: TypeImage 34(int) Cube array sampled format:Unknown 174: TypePointer UniformConstant 173 175(g_tTexcdi4a): 174(ptr) Variable UniformConstant 176: TypeImage 52(int) Cube array sampled format:Unknown 177: TypePointer UniformConstant 176 178(g_tTexcdu4a): 177(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 124(flattenTemp): 112(ptr) Variable Function 125:8(PS_OUTPUT) FunctionCall 10(@main() Store 124(flattenTemp) 125 128: 117(ptr) AccessChain 124(flattenTemp) 114 129: 7(fvec4) Load 128 Store 127(@entryPointOutput.Color) 129 132: 12(ptr) AccessChain 124(flattenTemp) 119 133: 6(float) Load 132 Store 131(@entryPointOutput.Depth) 133 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r11): 12(ptr) Variable Function 38(r13): 12(ptr) Variable Function 51(r15): 12(ptr) Variable Function 65(r31): 12(ptr) Variable Function 84(r33): 12(ptr) Variable Function 98(r35): 12(ptr) Variable Function 113(psout): 112(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 30: 6(float) CompositeExtract 27 0 31: 6(float) CompositeExtract 27 1 32: 29(fvec3) CompositeConstruct 30 31 28 36: 6(float) CompositeExtract 32 2 37: 6(float) ImageSampleDrefExplicitLod 23 32 36 Lod ConstOffset 33 35 Store 13(r11) 37 42: 39 Load 41(g_tTex1di4a) 43: 18 Load 20(g_sSamp) 45: 44 SampledImage 42 43 46: 6(float) CompositeExtract 27 0 47: 6(float) CompositeExtract 27 1 48: 29(fvec3) CompositeConstruct 46 47 28 49: 6(float) CompositeExtract 48 2 50: 6(float) ImageSampleDrefExplicitLod 45 48 49 Lod ConstOffset 33 35 Store 38(r13) 50 56: 53 Load 55(g_tTex1du4a) 57: 18 Load 20(g_sSamp) 59: 58 SampledImage 56 57 60: 6(float) CompositeExtract 27 0 61: 6(float) CompositeExtract 27 1 62: 29(fvec3) CompositeConstruct 60 61 28 63: 6(float) CompositeExtract 62 2 64: 6(float) ImageSampleDrefExplicitLod 59 62 63 Lod ConstOffset 33 35 Store 51(r15) 64 69: 66 Load 68(g_tTex2df4a) 70: 18 Load 20(g_sSamp) 72: 71 SampledImage 69 70 75: 6(float) CompositeExtract 74 0 76: 6(float) CompositeExtract 74 1 77: 6(float) CompositeExtract 74 2 78: 7(fvec4) CompositeConstruct 75 76 77 28 82: 6(float) CompositeExtract 78 3 83: 6(float) ImageSampleDrefExplicitLod 72 78 82 Lod ConstOffset 33 81 Store 65(r31) 83 88: 85 Load 87(g_tTex2di4a) 89: 18 Load 20(g_sSamp) 91: 90 SampledImage 88 89 92: 6(float) CompositeExtract 74 0 93: 6(float) CompositeExtract 74 1 94: 6(float) CompositeExtract 74 2 95: 7(fvec4) CompositeConstruct 92 93 94 28 96: 6(float) CompositeExtract 95 3 97: 6(float) ImageSampleDrefExplicitLod 91 95 96 Lod ConstOffset 33 81 Store 84(r33) 97 102: 99 Load 101(g_tTex2du4a) 103: 18 Load 20(g_sSamp) 105: 104 SampledImage 102 103 106: 6(float) CompositeExtract 74 0 107: 6(float) CompositeExtract 74 1 108: 6(float) CompositeExtract 74 2 109: 7(fvec4) CompositeConstruct 106 107 108 28 110: 6(float) CompositeExtract 109 3 111: 6(float) ImageSampleDrefExplicitLod 105 109 110 Lod ConstOffset 33 81 Store 98(r35) 111 118: 117(ptr) AccessChain 113(psout) 114 Store 118 116 120: 12(ptr) AccessChain 113(psout) 119 Store 120 115 121:8(PS_OUTPUT) Load 113(psout) ReturnValue 121 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out000066400000000000000000000740251506534232700250760ustar00rootroot00000000000000hlsl.samplegrad.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 textureGrad ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 Constant: 0:27 1.100000 0:27 Constant: 0:27 1.200000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 textureGrad ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.100000 0:28 0.200000 0:28 Constant: 0:28 1.100000 0:28 Constant: 0:28 1.200000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 textureGrad ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.100000 0:29 0.200000 0:29 Constant: 0:29 1.100000 0:29 Constant: 0:29 1.200000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 textureGrad ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:31 Constant: 0:31 1.100000 0:31 1.200000 0:31 Constant: 0:31 1.100000 0:31 1.200000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 textureGrad ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 0.200000 0:32 0.300000 0:32 Constant: 0:32 1.100000 0:32 1.200000 0:32 Constant: 0:32 1.100000 0:32 1.200000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 textureGrad ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.100000 0:33 0.200000 0:33 0.300000 0:33 Constant: 0:33 1.100000 0:33 1.200000 0:33 Constant: 0:33 1.100000 0:33 1.200000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 textureGrad ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 1.300000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 1.300000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 textureGrad ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 1.300000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 1.300000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 textureGrad ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.100000 0:37 0.200000 0:37 0.300000 0:37 0.400000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:37 1.300000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:37 1.300000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? 'g_tTexcdf4' ( uniform textureCubeArray) 0:? 'g_tTexcdi4' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 textureGrad ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 Constant: 0:27 1.100000 0:27 Constant: 0:27 1.200000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 textureGrad ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.100000 0:28 0.200000 0:28 Constant: 0:28 1.100000 0:28 Constant: 0:28 1.200000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 textureGrad ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.100000 0:29 0.200000 0:29 Constant: 0:29 1.100000 0:29 Constant: 0:29 1.200000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 textureGrad ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:31 Constant: 0:31 1.100000 0:31 1.200000 0:31 Constant: 0:31 1.100000 0:31 1.200000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 textureGrad ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 0.200000 0:32 0.300000 0:32 Constant: 0:32 1.100000 0:32 1.200000 0:32 Constant: 0:32 1.100000 0:32 1.200000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 textureGrad ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.100000 0:33 0.200000 0:33 0.300000 0:33 Constant: 0:33 1.100000 0:33 1.200000 0:33 Constant: 0:33 1.100000 0:33 1.200000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 textureGrad ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 1.300000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 1.300000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 textureGrad ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 1.300000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 1.300000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 textureGrad ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.100000 0:37 0.200000 0:37 0.300000 0:37 0.400000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:37 1.300000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:37 1.300000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? 'g_tTexcdf4' ( uniform textureCubeArray) 0:? 'g_tTexcdi4' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 140 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 132 136 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 34 "txval11" Name 37 "g_tTex1di4" Name 46 "txval12" Name 49 "g_tTex1du4" Name 55 "txval20" Name 58 "g_tTex2df4" Name 68 "txval21" Name 71 "g_tTex2di4" Name 77 "txval22" Name 80 "g_tTex2du4" Name 86 "txval40" Name 89 "g_tTexcdf4" Name 99 "txval41" Name 102 "g_tTexcdi4" Name 108 "txval42" Name 111 "g_tTexcdu4" Name 118 "psout" Name 129 "flattenTemp" Name 132 "@entryPointOutput.Color" Name 136 "@entryPointOutput.Depth" Name 139 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 37(g_tTex1di4) Binding 2 Decorate 37(g_tTex1di4) DescriptorSet 0 Decorate 49(g_tTex1du4) Binding 3 Decorate 49(g_tTex1du4) DescriptorSet 0 Decorate 58(g_tTex2df4) Binding 4 Decorate 58(g_tTex2df4) DescriptorSet 0 Decorate 71(g_tTex2di4) Binding 5 Decorate 71(g_tTex2di4) DescriptorSet 0 Decorate 80(g_tTex2du4) Binding 6 Decorate 80(g_tTex2du4) DescriptorSet 0 Decorate 89(g_tTexcdf4) Binding 7 Decorate 89(g_tTexcdf4) DescriptorSet 0 Decorate 102(g_tTexcdi4) Binding 8 Decorate 102(g_tTexcdi4) DescriptorSet 0 Decorate 111(g_tTexcdu4) Binding 9 Decorate 111(g_tTexcdu4) DescriptorSet 0 Decorate 132(@entryPointOutput.Color) Location 0 Decorate 136(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 139(g_tTex1df4a) Binding 1 Decorate 139(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1066192077 29: 6(float) Constant 1067030938 31: TypeInt 32 1 32: TypeVector 31(int) 4 33: TypePointer Function 32(ivec4) 35: TypeImage 31(int) 1D array sampled format:Unknown 36: TypePointer UniformConstant 35 37(g_tTex1di4): 36(ptr) Variable UniformConstant 40: TypeSampledImage 35 43: TypeInt 32 0 44: TypeVector 43(int) 4 45: TypePointer Function 44(ivec4) 47: TypeImage 43(int) 1D array sampled format:Unknown 48: TypePointer UniformConstant 47 49(g_tTex1du4): 48(ptr) Variable UniformConstant 52: TypeSampledImage 47 56: TypeImage 6(float) 2D array sampled format:Unknown 57: TypePointer UniformConstant 56 58(g_tTex2df4): 57(ptr) Variable UniformConstant 61: TypeSampledImage 56 63: TypeVector 6(float) 3 64: 6(float) Constant 1050253722 65: 63(fvec3) ConstantComposite 25 26 64 66: 24(fvec2) ConstantComposite 28 29 69: TypeImage 31(int) 2D array sampled format:Unknown 70: TypePointer UniformConstant 69 71(g_tTex2di4): 70(ptr) Variable UniformConstant 74: TypeSampledImage 69 78: TypeImage 43(int) 2D array sampled format:Unknown 79: TypePointer UniformConstant 78 80(g_tTex2du4): 79(ptr) Variable UniformConstant 83: TypeSampledImage 78 87: TypeImage 6(float) Cube array sampled format:Unknown 88: TypePointer UniformConstant 87 89(g_tTexcdf4): 88(ptr) Variable UniformConstant 92: TypeSampledImage 87 94: 6(float) Constant 1053609165 95: 7(fvec4) ConstantComposite 25 26 64 94 96: 6(float) Constant 1067869798 97: 63(fvec3) ConstantComposite 28 29 96 100: TypeImage 31(int) Cube array sampled format:Unknown 101: TypePointer UniformConstant 100 102(g_tTexcdi4): 101(ptr) Variable UniformConstant 105: TypeSampledImage 100 109: TypeImage 43(int) Cube array sampled format:Unknown 110: TypePointer UniformConstant 109 111(g_tTexcdu4): 110(ptr) Variable UniformConstant 114: TypeSampledImage 109 117: TypePointer Function 8(PS_OUTPUT) 119: 31(int) Constant 0 120: 6(float) Constant 1065353216 121: 7(fvec4) ConstantComposite 120 120 120 120 123: 31(int) Constant 1 124: TypePointer Function 6(float) 131: TypePointer Output 7(fvec4) 132(@entryPointOutput.Color): 131(ptr) Variable Output 135: TypePointer Output 6(float) 136(@entryPointOutput.Depth): 135(ptr) Variable Output 139(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 129(flattenTemp): 117(ptr) Variable Function 130:8(PS_OUTPUT) FunctionCall 10(@main() Store 129(flattenTemp) 130 133: 12(ptr) AccessChain 129(flattenTemp) 119 134: 7(fvec4) Load 133 Store 132(@entryPointOutput.Color) 134 137: 124(ptr) AccessChain 129(flattenTemp) 123 138: 6(float) Load 137 Store 136(@entryPointOutput.Depth) 138 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 34(txval11): 33(ptr) Variable Function 46(txval12): 45(ptr) Variable Function 55(txval20): 12(ptr) Variable Function 68(txval21): 33(ptr) Variable Function 77(txval22): 45(ptr) Variable Function 86(txval40): 12(ptr) Variable Function 99(txval41): 33(ptr) Variable Function 108(txval42): 45(ptr) Variable Function 118(psout): 117(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 30: 7(fvec4) ImageSampleExplicitLod 23 27 Grad 28 29 Store 13(txval10) 30 38: 35 Load 37(g_tTex1di4) 39: 18 Load 20(g_sSamp) 41: 40 SampledImage 38 39 42: 32(ivec4) ImageSampleExplicitLod 41 27 Grad 28 29 Store 34(txval11) 42 50: 47 Load 49(g_tTex1du4) 51: 18 Load 20(g_sSamp) 53: 52 SampledImage 50 51 54: 44(ivec4) ImageSampleExplicitLod 53 27 Grad 28 29 Store 46(txval12) 54 59: 56 Load 58(g_tTex2df4) 60: 18 Load 20(g_sSamp) 62: 61 SampledImage 59 60 67: 7(fvec4) ImageSampleExplicitLod 62 65 Grad 66 66 Store 55(txval20) 67 72: 69 Load 71(g_tTex2di4) 73: 18 Load 20(g_sSamp) 75: 74 SampledImage 72 73 76: 32(ivec4) ImageSampleExplicitLod 75 65 Grad 66 66 Store 68(txval21) 76 81: 78 Load 80(g_tTex2du4) 82: 18 Load 20(g_sSamp) 84: 83 SampledImage 81 82 85: 44(ivec4) ImageSampleExplicitLod 84 65 Grad 66 66 Store 77(txval22) 85 90: 87 Load 89(g_tTexcdf4) 91: 18 Load 20(g_sSamp) 93: 92 SampledImage 90 91 98: 7(fvec4) ImageSampleExplicitLod 93 95 Grad 97 97 Store 86(txval40) 98 103: 100 Load 102(g_tTexcdi4) 104: 18 Load 20(g_sSamp) 106: 105 SampledImage 103 104 107: 32(ivec4) ImageSampleExplicitLod 106 95 Grad 97 97 Store 99(txval41) 107 112: 109 Load 111(g_tTexcdu4) 113: 18 Load 20(g_sSamp) 115: 114 SampledImage 112 113 116: 44(ivec4) ImageSampleExplicitLod 115 95 Grad 97 97 Store 108(txval42) 116 122: 12(ptr) AccessChain 118(psout) 119 Store 122 121 125: 124(ptr) AccessChain 118(psout) 123 Store 125 120 126:8(PS_OUTPUT) Load 118(psout) ReturnValue 126 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out000066400000000000000000001107171506534232700250400ustar00rootroot00000000000000hlsl.samplegrad.basic.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureGrad ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 1.100000 0:31 Constant: 0:31 1.200000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureGrad ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 1.100000 0:32 Constant: 0:32 1.200000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureGrad ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 1.100000 0:33 Constant: 0:33 1.200000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureGrad ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureGrad ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureGrad ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureGrad ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureGrad ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureGrad ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 1.100000 0:41 1.200000 0:41 1.300000 0:41 Constant: 0:41 1.100000 0:41 1.200000 0:41 1.300000 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'txval40' ( temp 4-component vector of float) 0:43 textureGrad ( temp 4-component vector of float) 0:43 Construct combined texture-sampler ( temp samplerCube) 0:43 'g_tTexcdf4' ( uniform textureCube) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 0.300000 0:43 Constant: 0:43 1.100000 0:43 1.200000 0:43 1.300000 0:43 Constant: 0:43 1.100000 0:43 1.200000 0:43 1.300000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of int) 0:44 'txval41' ( temp 4-component vector of int) 0:44 textureGrad ( temp 4-component vector of int) 0:44 Construct combined texture-sampler ( temp isamplerCube) 0:44 'g_tTexcdi4' ( uniform itextureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.400000 0:44 0.500000 0:44 0.600000 0:44 Constant: 0:44 1.100000 0:44 1.200000 0:44 1.300000 0:44 Constant: 0:44 1.100000 0:44 1.200000 0:44 1.300000 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of uint) 0:45 'txval42' ( temp 4-component vector of uint) 0:45 textureGrad ( temp 4-component vector of uint) 0:45 Construct combined texture-sampler ( temp usamplerCube) 0:45 'g_tTexcdu4' ( uniform utextureCube) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 Constant: 0:45 0.700000 0:45 0.800000 0:45 0.900000 0:45 Constant: 0:45 1.100000 0:45 1.200000 0:45 1.300000 0:45 Constant: 0:45 1.100000 0:45 1.200000 0:45 1.300000 0:47 move second child to first child ( temp 4-component vector of float) 0:47 Color: direct index for structure ( temp 4-component vector of float) 0:47 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:48 move second child to first child ( temp float) 0:48 Depth: direct index for structure ( temp float) 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 1.000000 0:50 Branch: Return with expression 0:50 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureGrad ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 1.100000 0:31 Constant: 0:31 1.200000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureGrad ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 1.100000 0:32 Constant: 0:32 1.200000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureGrad ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 1.100000 0:33 Constant: 0:33 1.200000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureGrad ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureGrad ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureGrad ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureGrad ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureGrad ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureGrad ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 1.100000 0:41 1.200000 0:41 1.300000 0:41 Constant: 0:41 1.100000 0:41 1.200000 0:41 1.300000 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'txval40' ( temp 4-component vector of float) 0:43 textureGrad ( temp 4-component vector of float) 0:43 Construct combined texture-sampler ( temp samplerCube) 0:43 'g_tTexcdf4' ( uniform textureCube) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Constant: 0:43 0.100000 0:43 0.200000 0:43 0.300000 0:43 Constant: 0:43 1.100000 0:43 1.200000 0:43 1.300000 0:43 Constant: 0:43 1.100000 0:43 1.200000 0:43 1.300000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of int) 0:44 'txval41' ( temp 4-component vector of int) 0:44 textureGrad ( temp 4-component vector of int) 0:44 Construct combined texture-sampler ( temp isamplerCube) 0:44 'g_tTexcdi4' ( uniform itextureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.400000 0:44 0.500000 0:44 0.600000 0:44 Constant: 0:44 1.100000 0:44 1.200000 0:44 1.300000 0:44 Constant: 0:44 1.100000 0:44 1.200000 0:44 1.300000 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of uint) 0:45 'txval42' ( temp 4-component vector of uint) 0:45 textureGrad ( temp 4-component vector of uint) 0:45 Construct combined texture-sampler ( temp usamplerCube) 0:45 'g_tTexcdu4' ( uniform utextureCube) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 Constant: 0:45 0.700000 0:45 0.800000 0:45 0.900000 0:45 Constant: 0:45 1.100000 0:45 1.200000 0:45 1.300000 0:45 Constant: 0:45 1.100000 0:45 1.200000 0:45 1.300000 0:47 move second child to first child ( temp 4-component vector of float) 0:47 Color: direct index for structure ( temp 4-component vector of float) 0:47 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:47 1.000000 0:48 move second child to first child ( temp float) 0:48 Depth: direct index for structure ( temp float) 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 1 (const int) 0:48 Constant: 0:48 1.000000 0:50 Branch: Return with expression 0:50 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 175 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 167 171 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 31 "txval11" Name 34 "g_tTex1di4" Name 44 "txval12" Name 47 "g_tTex1du4" Name 54 "txval20" Name 57 "g_tTex2df4" Name 66 "txval21" Name 69 "g_tTex2di4" Name 77 "txval22" Name 80 "g_tTex2du4" Name 89 "txval30" Name 92 "g_tTex3df4" Name 102 "txval31" Name 105 "g_tTex3di4" Name 112 "txval32" Name 115 "g_tTex3du4" Name 125 "txval40" Name 128 "g_tTexcdf4" Name 134 "txval41" Name 137 "g_tTexcdi4" Name 143 "txval42" Name 146 "g_tTexcdu4" Name 153 "psout" Name 164 "flattenTemp" Name 167 "@entryPointOutput.Color" Name 171 "@entryPointOutput.Depth" Name 174 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 2 Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 3 Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 4 Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 69(g_tTex2di4) Binding 5 Decorate 69(g_tTex2di4) DescriptorSet 0 Decorate 80(g_tTex2du4) Binding 6 Decorate 80(g_tTex2du4) DescriptorSet 0 Decorate 92(g_tTex3df4) Binding 7 Decorate 92(g_tTex3df4) DescriptorSet 0 Decorate 105(g_tTex3di4) Binding 8 Decorate 105(g_tTex3di4) DescriptorSet 0 Decorate 115(g_tTex3du4) Binding 9 Decorate 115(g_tTex3du4) DescriptorSet 0 Decorate 128(g_tTexcdf4) Binding 10 Decorate 128(g_tTexcdf4) DescriptorSet 0 Decorate 137(g_tTexcdi4) Binding 11 Decorate 137(g_tTexcdi4) DescriptorSet 0 Decorate 146(g_tTexcdu4) Binding 12 Decorate 146(g_tTexcdu4) DescriptorSet 0 Decorate 167(@entryPointOutput.Color) Location 0 Decorate 171(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 174(g_tTex1df4a) Binding 1 Decorate 174(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1066192077 26: 6(float) Constant 1067030938 28: TypeInt 32 1 29: TypeVector 28(int) 4 30: TypePointer Function 29(ivec4) 32: TypeImage 28(int) 1D sampled format:Unknown 33: TypePointer UniformConstant 32 34(g_tTex1di4): 33(ptr) Variable UniformConstant 37: TypeSampledImage 32 39: 6(float) Constant 1045220557 41: TypeInt 32 0 42: TypeVector 41(int) 4 43: TypePointer Function 42(ivec4) 45: TypeImage 41(int) 1D sampled format:Unknown 46: TypePointer UniformConstant 45 47(g_tTex1du4): 46(ptr) Variable UniformConstant 50: TypeSampledImage 45 52: 6(float) Constant 1050253722 55: TypeImage 6(float) 2D sampled format:Unknown 56: TypePointer UniformConstant 55 57(g_tTex2df4): 56(ptr) Variable UniformConstant 60: TypeSampledImage 55 62: TypeVector 6(float) 2 63: 62(fvec2) ConstantComposite 24 39 64: 62(fvec2) ConstantComposite 25 26 67: TypeImage 28(int) 2D sampled format:Unknown 68: TypePointer UniformConstant 67 69(g_tTex2di4): 68(ptr) Variable UniformConstant 72: TypeSampledImage 67 74: 6(float) Constant 1053609165 75: 62(fvec2) ConstantComposite 52 74 78: TypeImage 41(int) 2D sampled format:Unknown 79: TypePointer UniformConstant 78 80(g_tTex2du4): 79(ptr) Variable UniformConstant 83: TypeSampledImage 78 85: 6(float) Constant 1056964608 86: 6(float) Constant 1058642330 87: 62(fvec2) ConstantComposite 85 86 90: TypeImage 6(float) 3D sampled format:Unknown 91: TypePointer UniformConstant 90 92(g_tTex3df4): 91(ptr) Variable UniformConstant 95: TypeSampledImage 90 97: TypeVector 6(float) 3 98: 97(fvec3) ConstantComposite 24 39 52 99: 6(float) Constant 1067869798 100: 97(fvec3) ConstantComposite 25 26 99 103: TypeImage 28(int) 3D sampled format:Unknown 104: TypePointer UniformConstant 103 105(g_tTex3di4): 104(ptr) Variable UniformConstant 108: TypeSampledImage 103 110: 97(fvec3) ConstantComposite 74 85 86 113: TypeImage 41(int) 3D sampled format:Unknown 114: TypePointer UniformConstant 113 115(g_tTex3du4): 114(ptr) Variable UniformConstant 118: TypeSampledImage 113 120: 6(float) Constant 1060320051 121: 6(float) Constant 1061997773 122: 6(float) Constant 1063675494 123: 97(fvec3) ConstantComposite 120 121 122 126: TypeImage 6(float) Cube sampled format:Unknown 127: TypePointer UniformConstant 126 128(g_tTexcdf4): 127(ptr) Variable UniformConstant 131: TypeSampledImage 126 135: TypeImage 28(int) Cube sampled format:Unknown 136: TypePointer UniformConstant 135 137(g_tTexcdi4): 136(ptr) Variable UniformConstant 140: TypeSampledImage 135 144: TypeImage 41(int) Cube sampled format:Unknown 145: TypePointer UniformConstant 144 146(g_tTexcdu4): 145(ptr) Variable UniformConstant 149: TypeSampledImage 144 152: TypePointer Function 8(PS_OUTPUT) 154: 28(int) Constant 0 155: 6(float) Constant 1065353216 156: 7(fvec4) ConstantComposite 155 155 155 155 158: 28(int) Constant 1 159: TypePointer Function 6(float) 166: TypePointer Output 7(fvec4) 167(@entryPointOutput.Color): 166(ptr) Variable Output 170: TypePointer Output 6(float) 171(@entryPointOutput.Depth): 170(ptr) Variable Output 174(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 164(flattenTemp): 152(ptr) Variable Function 165:8(PS_OUTPUT) FunctionCall 10(@main() Store 164(flattenTemp) 165 168: 12(ptr) AccessChain 164(flattenTemp) 154 169: 7(fvec4) Load 168 Store 167(@entryPointOutput.Color) 169 172: 159(ptr) AccessChain 164(flattenTemp) 158 173: 6(float) Load 172 Store 171(@entryPointOutput.Depth) 173 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 31(txval11): 30(ptr) Variable Function 44(txval12): 43(ptr) Variable Function 54(txval20): 12(ptr) Variable Function 66(txval21): 30(ptr) Variable Function 77(txval22): 43(ptr) Variable Function 89(txval30): 12(ptr) Variable Function 102(txval31): 30(ptr) Variable Function 112(txval32): 43(ptr) Variable Function 125(txval40): 12(ptr) Variable Function 134(txval41): 30(ptr) Variable Function 143(txval42): 43(ptr) Variable Function 153(psout): 152(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 27: 7(fvec4) ImageSampleExplicitLod 23 24 Grad 25 26 Store 13(txval10) 27 35: 32 Load 34(g_tTex1di4) 36: 18 Load 20(g_sSamp) 38: 37 SampledImage 35 36 40: 29(ivec4) ImageSampleExplicitLod 38 39 Grad 25 26 Store 31(txval11) 40 48: 45 Load 47(g_tTex1du4) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 53: 42(ivec4) ImageSampleExplicitLod 51 52 Grad 25 26 Store 44(txval12) 53 58: 55 Load 57(g_tTex2df4) 59: 18 Load 20(g_sSamp) 61: 60 SampledImage 58 59 65: 7(fvec4) ImageSampleExplicitLod 61 63 Grad 64 64 Store 54(txval20) 65 70: 67 Load 69(g_tTex2di4) 71: 18 Load 20(g_sSamp) 73: 72 SampledImage 70 71 76: 29(ivec4) ImageSampleExplicitLod 73 75 Grad 64 64 Store 66(txval21) 76 81: 78 Load 80(g_tTex2du4) 82: 18 Load 20(g_sSamp) 84: 83 SampledImage 81 82 88: 42(ivec4) ImageSampleExplicitLod 84 87 Grad 64 64 Store 77(txval22) 88 93: 90 Load 92(g_tTex3df4) 94: 18 Load 20(g_sSamp) 96: 95 SampledImage 93 94 101: 7(fvec4) ImageSampleExplicitLod 96 98 Grad 100 100 Store 89(txval30) 101 106: 103 Load 105(g_tTex3di4) 107: 18 Load 20(g_sSamp) 109: 108 SampledImage 106 107 111: 29(ivec4) ImageSampleExplicitLod 109 110 Grad 100 100 Store 102(txval31) 111 116: 113 Load 115(g_tTex3du4) 117: 18 Load 20(g_sSamp) 119: 118 SampledImage 116 117 124: 42(ivec4) ImageSampleExplicitLod 119 123 Grad 100 100 Store 112(txval32) 124 129: 126 Load 128(g_tTexcdf4) 130: 18 Load 20(g_sSamp) 132: 131 SampledImage 129 130 133: 7(fvec4) ImageSampleExplicitLod 132 98 Grad 100 100 Store 125(txval40) 133 138: 135 Load 137(g_tTexcdi4) 139: 18 Load 20(g_sSamp) 141: 140 SampledImage 138 139 142: 29(ivec4) ImageSampleExplicitLod 141 110 Grad 100 100 Store 134(txval41) 142 147: 144 Load 146(g_tTexcdu4) 148: 18 Load 20(g_sSamp) 150: 149 SampledImage 147 148 151: 42(ivec4) ImageSampleExplicitLod 150 123 Grad 100 100 Store 143(txval42) 151 157: 12(ptr) AccessChain 153(psout) 154 Store 157 156 160: 159(ptr) AccessChain 153(psout) 158 Store 160 155 161:8(PS_OUTPUT) Load 153(psout) ReturnValue 161 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out000066400000000000000000001020341506534232700250720ustar00rootroot00000000000000hlsl.samplegrad.basic.dx10.vert Shader version: 500 0:? Sequence 0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:30 'txval10' ( temp 4-component vector of float) 0:30 textureGrad ( temp 4-component vector of float) 0:30 Construct combined texture-sampler ( temp sampler1D) 0:30 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.100000 0:30 Constant: 0:30 1.100000 0:30 Constant: 0:30 1.200000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of int) 0:31 'txval11' ( temp 4-component vector of int) 0:31 textureGrad ( temp 4-component vector of int) 0:31 Construct combined texture-sampler ( temp isampler1D) 0:31 'g_tTex1di4' ( uniform itexture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.200000 0:31 Constant: 0:31 1.100000 0:31 Constant: 0:31 1.200000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 'txval12' ( temp 4-component vector of uint) 0:32 textureGrad ( temp 4-component vector of uint) 0:32 Construct combined texture-sampler ( temp usampler1D) 0:32 'g_tTex1du4' ( uniform utexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 Constant: 0:32 1.100000 0:32 Constant: 0:32 1.200000 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'txval20' ( temp 4-component vector of float) 0:34 textureGrad ( temp 4-component vector of float) 0:34 Construct combined texture-sampler ( temp sampler2D) 0:34 'g_tTex2df4' ( uniform texture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.100000 0:34 0.200000 0:34 Constant: 0:34 1.100000 0:34 1.200000 0:34 Constant: 0:34 1.100000 0:34 1.200000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of int) 0:35 'txval21' ( temp 4-component vector of int) 0:35 textureGrad ( temp 4-component vector of int) 0:35 Construct combined texture-sampler ( temp isampler2D) 0:35 'g_tTex2di4' ( uniform itexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of uint) 0:36 'txval22' ( temp 4-component vector of uint) 0:36 textureGrad ( temp 4-component vector of uint) 0:36 Construct combined texture-sampler ( temp usampler2D) 0:36 'g_tTex2du4' ( uniform utexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.500000 0:36 0.600000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'txval30' ( temp 4-component vector of float) 0:38 textureGrad ( temp 4-component vector of float) 0:38 Construct combined texture-sampler ( temp sampler3D) 0:38 'g_tTex3df4' ( uniform texture3D) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.100000 0:38 0.200000 0:38 0.300000 0:38 Constant: 0:38 1.100000 0:38 1.200000 0:38 1.300000 0:38 Constant: 0:38 1.100000 0:38 1.200000 0:38 1.300000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of int) 0:39 'txval31' ( temp 4-component vector of int) 0:39 textureGrad ( temp 4-component vector of int) 0:39 Construct combined texture-sampler ( temp isampler3D) 0:39 'g_tTex3di4' ( uniform itexture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.400000 0:39 0.500000 0:39 0.600000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of uint) 0:40 'txval32' ( temp 4-component vector of uint) 0:40 textureGrad ( temp 4-component vector of uint) 0:40 Construct combined texture-sampler ( temp usampler3D) 0:40 'g_tTex3du4' ( uniform utexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.700000 0:40 0.800000 0:40 0.900000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'txval40' ( temp 4-component vector of float) 0:42 textureGrad ( temp 4-component vector of float) 0:42 Construct combined texture-sampler ( temp samplerCube) 0:42 'g_tTexcdf4' ( uniform textureCube) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 0.300000 0:42 Constant: 0:42 1.100000 0:42 1.200000 0:42 1.300000 0:42 Constant: 0:42 1.100000 0:42 1.200000 0:42 1.300000 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 'txval41' ( temp 4-component vector of int) 0:43 textureGrad ( temp 4-component vector of int) 0:43 Construct combined texture-sampler ( temp isamplerCube) 0:43 'g_tTexcdi4' ( uniform itextureCube) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Constant: 0:43 0.400000 0:43 0.500000 0:43 0.600000 0:43 Constant: 0:43 1.100000 0:43 1.200000 0:43 1.300000 0:43 Constant: 0:43 1.100000 0:43 1.200000 0:43 1.300000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of uint) 0:44 'txval42' ( temp 4-component vector of uint) 0:44 textureGrad ( temp 4-component vector of uint) 0:44 Construct combined texture-sampler ( temp usamplerCube) 0:44 'g_tTexcdu4' ( uniform utextureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.700000 0:44 0.800000 0:44 0.900000 0:44 Constant: 0:44 1.100000 0:44 1.200000 0:44 1.300000 0:44 Constant: 0:44 1.100000 0:44 1.200000 0:44 1.300000 0:46 move second child to first child ( temp 4-component vector of float) 0:46 Pos: direct index for structure ( temp 4-component vector of float) 0:46 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:48 Branch: Return with expression 0:48 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:27 Pos: direct index for structure ( temp 4-component vector of float) 0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:30 'txval10' ( temp 4-component vector of float) 0:30 textureGrad ( temp 4-component vector of float) 0:30 Construct combined texture-sampler ( temp sampler1D) 0:30 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.100000 0:30 Constant: 0:30 1.100000 0:30 Constant: 0:30 1.200000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of int) 0:31 'txval11' ( temp 4-component vector of int) 0:31 textureGrad ( temp 4-component vector of int) 0:31 Construct combined texture-sampler ( temp isampler1D) 0:31 'g_tTex1di4' ( uniform itexture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.200000 0:31 Constant: 0:31 1.100000 0:31 Constant: 0:31 1.200000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 'txval12' ( temp 4-component vector of uint) 0:32 textureGrad ( temp 4-component vector of uint) 0:32 Construct combined texture-sampler ( temp usampler1D) 0:32 'g_tTex1du4' ( uniform utexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 Constant: 0:32 1.100000 0:32 Constant: 0:32 1.200000 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'txval20' ( temp 4-component vector of float) 0:34 textureGrad ( temp 4-component vector of float) 0:34 Construct combined texture-sampler ( temp sampler2D) 0:34 'g_tTex2df4' ( uniform texture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.100000 0:34 0.200000 0:34 Constant: 0:34 1.100000 0:34 1.200000 0:34 Constant: 0:34 1.100000 0:34 1.200000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of int) 0:35 'txval21' ( temp 4-component vector of int) 0:35 textureGrad ( temp 4-component vector of int) 0:35 Construct combined texture-sampler ( temp isampler2D) 0:35 'g_tTex2di4' ( uniform itexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of uint) 0:36 'txval22' ( temp 4-component vector of uint) 0:36 textureGrad ( temp 4-component vector of uint) 0:36 Construct combined texture-sampler ( temp usampler2D) 0:36 'g_tTex2du4' ( uniform utexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.500000 0:36 0.600000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'txval30' ( temp 4-component vector of float) 0:38 textureGrad ( temp 4-component vector of float) 0:38 Construct combined texture-sampler ( temp sampler3D) 0:38 'g_tTex3df4' ( uniform texture3D) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.100000 0:38 0.200000 0:38 0.300000 0:38 Constant: 0:38 1.100000 0:38 1.200000 0:38 1.300000 0:38 Constant: 0:38 1.100000 0:38 1.200000 0:38 1.300000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of int) 0:39 'txval31' ( temp 4-component vector of int) 0:39 textureGrad ( temp 4-component vector of int) 0:39 Construct combined texture-sampler ( temp isampler3D) 0:39 'g_tTex3di4' ( uniform itexture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.400000 0:39 0.500000 0:39 0.600000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of uint) 0:40 'txval32' ( temp 4-component vector of uint) 0:40 textureGrad ( temp 4-component vector of uint) 0:40 Construct combined texture-sampler ( temp usampler3D) 0:40 'g_tTex3du4' ( uniform utexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.700000 0:40 0.800000 0:40 0.900000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'txval40' ( temp 4-component vector of float) 0:42 textureGrad ( temp 4-component vector of float) 0:42 Construct combined texture-sampler ( temp samplerCube) 0:42 'g_tTexcdf4' ( uniform textureCube) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 0.300000 0:42 Constant: 0:42 1.100000 0:42 1.200000 0:42 1.300000 0:42 Constant: 0:42 1.100000 0:42 1.200000 0:42 1.300000 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 'txval41' ( temp 4-component vector of int) 0:43 textureGrad ( temp 4-component vector of int) 0:43 Construct combined texture-sampler ( temp isamplerCube) 0:43 'g_tTexcdi4' ( uniform itextureCube) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Constant: 0:43 0.400000 0:43 0.500000 0:43 0.600000 0:43 Constant: 0:43 1.100000 0:43 1.200000 0:43 1.300000 0:43 Constant: 0:43 1.100000 0:43 1.200000 0:43 1.300000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of uint) 0:44 'txval42' ( temp 4-component vector of uint) 0:44 textureGrad ( temp 4-component vector of uint) 0:44 Construct combined texture-sampler ( temp usamplerCube) 0:44 'g_tTexcdu4' ( uniform utextureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.700000 0:44 0.800000 0:44 0.900000 0:44 Constant: 0:44 1.100000 0:44 1.200000 0:44 1.300000 0:44 Constant: 0:44 1.100000 0:44 1.200000 0:44 1.300000 0:46 move second child to first child ( temp 4-component vector of float) 0:46 Pos: direct index for structure ( temp 4-component vector of float) 0:46 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:48 Branch: Return with expression 0:48 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:27 Pos: direct index for structure ( temp 4-component vector of float) 0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 166 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 162 Source HLSL 500 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 31 "txval11" Name 34 "g_tTex1di4" Name 44 "txval12" Name 47 "g_tTex1du4" Name 54 "txval20" Name 57 "g_tTex2df4" Name 66 "txval21" Name 69 "g_tTex2di4" Name 77 "txval22" Name 80 "g_tTex2du4" Name 89 "txval30" Name 92 "g_tTex3df4" Name 102 "txval31" Name 105 "g_tTex3di4" Name 112 "txval32" Name 115 "g_tTex3du4" Name 125 "txval40" Name 128 "g_tTexcdf4" Name 134 "txval41" Name 137 "g_tTexcdi4" Name 143 "txval42" Name 146 "g_tTexcdu4" Name 153 "vsout" Name 162 "@entryPointOutput.Pos" Name 165 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 2 Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 3 Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 4 Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 69(g_tTex2di4) Binding 5 Decorate 69(g_tTex2di4) DescriptorSet 0 Decorate 80(g_tTex2du4) Binding 6 Decorate 80(g_tTex2du4) DescriptorSet 0 Decorate 92(g_tTex3df4) Binding 7 Decorate 92(g_tTex3df4) DescriptorSet 0 Decorate 105(g_tTex3di4) Binding 8 Decorate 105(g_tTex3di4) DescriptorSet 0 Decorate 115(g_tTex3du4) Binding 9 Decorate 115(g_tTex3du4) DescriptorSet 0 Decorate 128(g_tTexcdf4) Binding 10 Decorate 128(g_tTexcdf4) DescriptorSet 0 Decorate 137(g_tTexcdi4) Binding 11 Decorate 137(g_tTexcdi4) DescriptorSet 0 Decorate 146(g_tTexcdu4) Binding 12 Decorate 146(g_tTexcdu4) DescriptorSet 0 Decorate 162(@entryPointOutput.Pos) BuiltIn Position Decorate 165(g_tTex1df4a) Binding 1 Decorate 165(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(VS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1066192077 26: 6(float) Constant 1067030938 28: TypeInt 32 1 29: TypeVector 28(int) 4 30: TypePointer Function 29(ivec4) 32: TypeImage 28(int) 1D sampled format:Unknown 33: TypePointer UniformConstant 32 34(g_tTex1di4): 33(ptr) Variable UniformConstant 37: TypeSampledImage 32 39: 6(float) Constant 1045220557 41: TypeInt 32 0 42: TypeVector 41(int) 4 43: TypePointer Function 42(ivec4) 45: TypeImage 41(int) 1D sampled format:Unknown 46: TypePointer UniformConstant 45 47(g_tTex1du4): 46(ptr) Variable UniformConstant 50: TypeSampledImage 45 52: 6(float) Constant 1050253722 55: TypeImage 6(float) 2D sampled format:Unknown 56: TypePointer UniformConstant 55 57(g_tTex2df4): 56(ptr) Variable UniformConstant 60: TypeSampledImage 55 62: TypeVector 6(float) 2 63: 62(fvec2) ConstantComposite 24 39 64: 62(fvec2) ConstantComposite 25 26 67: TypeImage 28(int) 2D sampled format:Unknown 68: TypePointer UniformConstant 67 69(g_tTex2di4): 68(ptr) Variable UniformConstant 72: TypeSampledImage 67 74: 6(float) Constant 1053609165 75: 62(fvec2) ConstantComposite 52 74 78: TypeImage 41(int) 2D sampled format:Unknown 79: TypePointer UniformConstant 78 80(g_tTex2du4): 79(ptr) Variable UniformConstant 83: TypeSampledImage 78 85: 6(float) Constant 1056964608 86: 6(float) Constant 1058642330 87: 62(fvec2) ConstantComposite 85 86 90: TypeImage 6(float) 3D sampled format:Unknown 91: TypePointer UniformConstant 90 92(g_tTex3df4): 91(ptr) Variable UniformConstant 95: TypeSampledImage 90 97: TypeVector 6(float) 3 98: 97(fvec3) ConstantComposite 24 39 52 99: 6(float) Constant 1067869798 100: 97(fvec3) ConstantComposite 25 26 99 103: TypeImage 28(int) 3D sampled format:Unknown 104: TypePointer UniformConstant 103 105(g_tTex3di4): 104(ptr) Variable UniformConstant 108: TypeSampledImage 103 110: 97(fvec3) ConstantComposite 74 85 86 113: TypeImage 41(int) 3D sampled format:Unknown 114: TypePointer UniformConstant 113 115(g_tTex3du4): 114(ptr) Variable UniformConstant 118: TypeSampledImage 113 120: 6(float) Constant 1060320051 121: 6(float) Constant 1061997773 122: 6(float) Constant 1063675494 123: 97(fvec3) ConstantComposite 120 121 122 126: TypeImage 6(float) Cube sampled format:Unknown 127: TypePointer UniformConstant 126 128(g_tTexcdf4): 127(ptr) Variable UniformConstant 131: TypeSampledImage 126 135: TypeImage 28(int) Cube sampled format:Unknown 136: TypePointer UniformConstant 135 137(g_tTexcdi4): 136(ptr) Variable UniformConstant 140: TypeSampledImage 135 144: TypeImage 41(int) Cube sampled format:Unknown 145: TypePointer UniformConstant 144 146(g_tTexcdu4): 145(ptr) Variable UniformConstant 149: TypeSampledImage 144 152: TypePointer Function 8(VS_OUTPUT) 154: 28(int) Constant 0 155: 6(float) Constant 0 156: 7(fvec4) ConstantComposite 155 155 155 155 161: TypePointer Output 7(fvec4) 162(@entryPointOutput.Pos): 161(ptr) Variable Output 165(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 163:8(VS_OUTPUT) FunctionCall 10(@main() 164: 7(fvec4) CompositeExtract 163 0 Store 162(@entryPointOutput.Pos) 164 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 31(txval11): 30(ptr) Variable Function 44(txval12): 43(ptr) Variable Function 54(txval20): 12(ptr) Variable Function 66(txval21): 30(ptr) Variable Function 77(txval22): 43(ptr) Variable Function 89(txval30): 12(ptr) Variable Function 102(txval31): 30(ptr) Variable Function 112(txval32): 43(ptr) Variable Function 125(txval40): 12(ptr) Variable Function 134(txval41): 30(ptr) Variable Function 143(txval42): 43(ptr) Variable Function 153(vsout): 152(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 27: 7(fvec4) ImageSampleExplicitLod 23 24 Grad 25 26 Store 13(txval10) 27 35: 32 Load 34(g_tTex1di4) 36: 18 Load 20(g_sSamp) 38: 37 SampledImage 35 36 40: 29(ivec4) ImageSampleExplicitLod 38 39 Grad 25 26 Store 31(txval11) 40 48: 45 Load 47(g_tTex1du4) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 53: 42(ivec4) ImageSampleExplicitLod 51 52 Grad 25 26 Store 44(txval12) 53 58: 55 Load 57(g_tTex2df4) 59: 18 Load 20(g_sSamp) 61: 60 SampledImage 58 59 65: 7(fvec4) ImageSampleExplicitLod 61 63 Grad 64 64 Store 54(txval20) 65 70: 67 Load 69(g_tTex2di4) 71: 18 Load 20(g_sSamp) 73: 72 SampledImage 70 71 76: 29(ivec4) ImageSampleExplicitLod 73 75 Grad 64 64 Store 66(txval21) 76 81: 78 Load 80(g_tTex2du4) 82: 18 Load 20(g_sSamp) 84: 83 SampledImage 81 82 88: 42(ivec4) ImageSampleExplicitLod 84 87 Grad 64 64 Store 77(txval22) 88 93: 90 Load 92(g_tTex3df4) 94: 18 Load 20(g_sSamp) 96: 95 SampledImage 93 94 101: 7(fvec4) ImageSampleExplicitLod 96 98 Grad 100 100 Store 89(txval30) 101 106: 103 Load 105(g_tTex3di4) 107: 18 Load 20(g_sSamp) 109: 108 SampledImage 106 107 111: 29(ivec4) ImageSampleExplicitLod 109 110 Grad 100 100 Store 102(txval31) 111 116: 113 Load 115(g_tTex3du4) 117: 18 Load 20(g_sSamp) 119: 118 SampledImage 116 117 124: 42(ivec4) ImageSampleExplicitLod 119 123 Grad 100 100 Store 112(txval32) 124 129: 126 Load 128(g_tTexcdf4) 130: 18 Load 20(g_sSamp) 132: 131 SampledImage 129 130 133: 7(fvec4) ImageSampleExplicitLod 132 98 Grad 100 100 Store 125(txval40) 133 138: 135 Load 137(g_tTexcdi4) 139: 18 Load 20(g_sSamp) 141: 140 SampledImage 138 139 142: 29(ivec4) ImageSampleExplicitLod 141 110 Grad 100 100 Store 134(txval41) 142 147: 144 Load 146(g_tTexcdu4) 148: 18 Load 20(g_sSamp) 150: 149 SampledImage 147 148 151: 42(ivec4) ImageSampleExplicitLod 150 123 Grad 100 100 Store 143(txval42) 151 157: 12(ptr) AccessChain 153(vsout) 154 Store 157 156 158:8(VS_OUTPUT) Load 153(vsout) ReturnValue 158 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out000066400000000000000000001023431506534232700252410ustar00rootroot00000000000000hlsl.samplegrad.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureGradOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 1.100000 0:31 Constant: 0:31 1.200000 0:31 Constant: 0:31 1 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureGradOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 1.100000 0:32 Constant: 0:32 1.200000 0:32 Constant: 0:32 1 (const int) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureGradOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 1.100000 0:33 Constant: 0:33 1.200000 0:33 Constant: 0:33 1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureGradOffset ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureGradOffset ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureGradOffset ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 0.100000 0:37 0.200000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureGradOffset ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureGradOffset ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureGradOffset ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 1.100000 0:41 1.200000 0:41 1.300000 0:41 Constant: 0:41 1.100000 0:41 1.200000 0:41 1.300000 0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp float) 0:46 Depth: direct index for structure ( temp float) 0:46 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureGradOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 1.100000 0:31 Constant: 0:31 1.200000 0:31 Constant: 0:31 1 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureGradOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 1.100000 0:32 Constant: 0:32 1.200000 0:32 Constant: 0:32 1 (const int) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureGradOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 1.100000 0:33 Constant: 0:33 1.200000 0:33 Constant: 0:33 1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureGradOffset ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 1.100000 0:35 1.200000 0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureGradOffset ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 Constant: 0:36 1.100000 0:36 1.200000 0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureGradOffset ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 0.100000 0:37 0.200000 0:37 Constant: 0:37 1.100000 0:37 1.200000 0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureGradOffset ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:39 Constant: 0:39 1.100000 0:39 1.200000 0:39 1.300000 0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureGradOffset ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:40 Constant: 0:40 1.100000 0:40 1.200000 0:40 1.300000 0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureGradOffset ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 1.100000 0:41 1.200000 0:41 1.300000 0:41 Constant: 0:41 1.100000 0:41 1.200000 0:41 1.300000 0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp float) 0:46 Depth: direct index for structure ( temp float) 0:46 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 166 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 149 153 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 32 "txval11" Name 35 "g_tTex1di4" Name 45 "txval12" Name 48 "g_tTex1du4" Name 55 "txval20" Name 58 "g_tTex2df4" Name 70 "txval21" Name 73 "g_tTex2di4" Name 82 "txval22" Name 85 "g_tTex2du4" Name 96 "txval30" Name 99 "g_tTex3df4" Name 111 "txval31" Name 114 "g_tTex3di4" Name 122 "txval32" Name 125 "g_tTex3du4" Name 137 "psout" Name 146 "flattenTemp" Name 149 "@entryPointOutput.Color" Name 153 "@entryPointOutput.Depth" Name 156 "g_tTex1df4a" Name 159 "g_tTexcdf4" Name 162 "g_tTexcdi4" Name 165 "g_tTexcdu4" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 2 Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 48(g_tTex1du4) Binding 3 Decorate 48(g_tTex1du4) DescriptorSet 0 Decorate 58(g_tTex2df4) Binding 4 Decorate 58(g_tTex2df4) DescriptorSet 0 Decorate 73(g_tTex2di4) Binding 5 Decorate 73(g_tTex2di4) DescriptorSet 0 Decorate 85(g_tTex2du4) Binding 6 Decorate 85(g_tTex2du4) DescriptorSet 0 Decorate 99(g_tTex3df4) Binding 7 Decorate 99(g_tTex3df4) DescriptorSet 0 Decorate 114(g_tTex3di4) Binding 8 Decorate 114(g_tTex3di4) DescriptorSet 0 Decorate 125(g_tTex3du4) Binding 9 Decorate 125(g_tTex3du4) DescriptorSet 0 Decorate 149(@entryPointOutput.Color) Location 0 Decorate 153(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 156(g_tTex1df4a) Binding 1 Decorate 156(g_tTex1df4a) DescriptorSet 0 Decorate 159(g_tTexcdf4) Binding 0 Decorate 159(g_tTexcdf4) DescriptorSet 0 Decorate 162(g_tTexcdi4) Binding 0 Decorate 162(g_tTexcdi4) DescriptorSet 0 Decorate 165(g_tTexcdu4) Binding 0 Decorate 165(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1066192077 26: 6(float) Constant 1067030938 27: TypeInt 32 1 28: 27(int) Constant 1 30: TypeVector 27(int) 4 31: TypePointer Function 30(ivec4) 33: TypeImage 27(int) 1D sampled format:Unknown 34: TypePointer UniformConstant 33 35(g_tTex1di4): 34(ptr) Variable UniformConstant 38: TypeSampledImage 33 40: 6(float) Constant 1045220557 42: TypeInt 32 0 43: TypeVector 42(int) 4 44: TypePointer Function 43(ivec4) 46: TypeImage 42(int) 1D sampled format:Unknown 47: TypePointer UniformConstant 46 48(g_tTex1du4): 47(ptr) Variable UniformConstant 51: TypeSampledImage 46 53: 6(float) Constant 1050253722 56: TypeImage 6(float) 2D sampled format:Unknown 57: TypePointer UniformConstant 56 58(g_tTex2df4): 57(ptr) Variable UniformConstant 61: TypeSampledImage 56 63: TypeVector 6(float) 2 64: 63(fvec2) ConstantComposite 24 40 65: 63(fvec2) ConstantComposite 25 26 66: TypeVector 27(int) 2 67: 27(int) Constant 0 68: 66(ivec2) ConstantComposite 28 67 71: TypeImage 27(int) 2D sampled format:Unknown 72: TypePointer UniformConstant 71 73(g_tTex2di4): 72(ptr) Variable UniformConstant 76: TypeSampledImage 71 78: 6(float) Constant 1053609165 79: 63(fvec2) ConstantComposite 53 78 80: 66(ivec2) ConstantComposite 28 28 83: TypeImage 42(int) 2D sampled format:Unknown 84: TypePointer UniformConstant 83 85(g_tTex2du4): 84(ptr) Variable UniformConstant 88: TypeSampledImage 83 90: 6(float) Constant 1056964608 91: 6(float) Constant 1058642330 92: 63(fvec2) ConstantComposite 90 91 93: 27(int) Constant 4294967295 94: 66(ivec2) ConstantComposite 28 93 97: TypeImage 6(float) 3D sampled format:Unknown 98: TypePointer UniformConstant 97 99(g_tTex3df4): 98(ptr) Variable UniformConstant 102: TypeSampledImage 97 104: TypeVector 6(float) 3 105: 104(fvec3) ConstantComposite 24 40 53 106: 6(float) Constant 1067869798 107: 104(fvec3) ConstantComposite 25 26 106 108: TypeVector 27(int) 3 109: 108(ivec3) ConstantComposite 28 67 28 112: TypeImage 27(int) 3D sampled format:Unknown 113: TypePointer UniformConstant 112 114(g_tTex3di4): 113(ptr) Variable UniformConstant 117: TypeSampledImage 112 119: 104(fvec3) ConstantComposite 78 90 91 120: 108(ivec3) ConstantComposite 28 28 28 123: TypeImage 42(int) 3D sampled format:Unknown 124: TypePointer UniformConstant 123 125(g_tTex3du4): 124(ptr) Variable UniformConstant 128: TypeSampledImage 123 130: 6(float) Constant 1060320051 131: 6(float) Constant 1061997773 132: 6(float) Constant 1063675494 133: 104(fvec3) ConstantComposite 130 131 132 134: 108(ivec3) ConstantComposite 28 67 93 136: TypePointer Function 8(PS_OUTPUT) 138: 6(float) Constant 1065353216 139: 7(fvec4) ConstantComposite 138 138 138 138 141: TypePointer Function 6(float) 148: TypePointer Output 7(fvec4) 149(@entryPointOutput.Color): 148(ptr) Variable Output 152: TypePointer Output 6(float) 153(@entryPointOutput.Depth): 152(ptr) Variable Output 156(g_tTex1df4a): 15(ptr) Variable UniformConstant 157: TypeImage 6(float) Cube sampled format:Unknown 158: TypePointer UniformConstant 157 159(g_tTexcdf4): 158(ptr) Variable UniformConstant 160: TypeImage 27(int) Cube sampled format:Unknown 161: TypePointer UniformConstant 160 162(g_tTexcdi4): 161(ptr) Variable UniformConstant 163: TypeImage 42(int) Cube sampled format:Unknown 164: TypePointer UniformConstant 163 165(g_tTexcdu4): 164(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 146(flattenTemp): 136(ptr) Variable Function 147:8(PS_OUTPUT) FunctionCall 10(@main() Store 146(flattenTemp) 147 150: 12(ptr) AccessChain 146(flattenTemp) 67 151: 7(fvec4) Load 150 Store 149(@entryPointOutput.Color) 151 154: 141(ptr) AccessChain 146(flattenTemp) 28 155: 6(float) Load 154 Store 153(@entryPointOutput.Depth) 155 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 32(txval11): 31(ptr) Variable Function 45(txval12): 44(ptr) Variable Function 55(txval20): 12(ptr) Variable Function 70(txval21): 31(ptr) Variable Function 82(txval22): 44(ptr) Variable Function 96(txval30): 12(ptr) Variable Function 111(txval31): 31(ptr) Variable Function 122(txval32): 44(ptr) Variable Function 137(psout): 136(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 29: 7(fvec4) ImageSampleExplicitLod 23 24 Grad ConstOffset 25 26 28 Store 13(txval10) 29 36: 33 Load 35(g_tTex1di4) 37: 18 Load 20(g_sSamp) 39: 38 SampledImage 36 37 41: 30(ivec4) ImageSampleExplicitLod 39 40 Grad ConstOffset 25 26 28 Store 32(txval11) 41 49: 46 Load 48(g_tTex1du4) 50: 18 Load 20(g_sSamp) 52: 51 SampledImage 49 50 54: 43(ivec4) ImageSampleExplicitLod 52 53 Grad ConstOffset 25 26 28 Store 45(txval12) 54 59: 56 Load 58(g_tTex2df4) 60: 18 Load 20(g_sSamp) 62: 61 SampledImage 59 60 69: 7(fvec4) ImageSampleExplicitLod 62 64 Grad ConstOffset 64 65 68 Store 55(txval20) 69 74: 71 Load 73(g_tTex2di4) 75: 18 Load 20(g_sSamp) 77: 76 SampledImage 74 75 81: 30(ivec4) ImageSampleExplicitLod 77 79 Grad ConstOffset 64 65 80 Store 70(txval21) 81 86: 83 Load 85(g_tTex2du4) 87: 18 Load 20(g_sSamp) 89: 88 SampledImage 86 87 95: 43(ivec4) ImageSampleExplicitLod 89 92 Grad ConstOffset 64 65 94 Store 82(txval22) 95 100: 97 Load 99(g_tTex3df4) 101: 18 Load 20(g_sSamp) 103: 102 SampledImage 100 101 110: 7(fvec4) ImageSampleExplicitLod 103 105 Grad ConstOffset 107 107 109 Store 96(txval30) 110 115: 112 Load 114(g_tTex3di4) 116: 18 Load 20(g_sSamp) 118: 117 SampledImage 115 116 121: 30(ivec4) ImageSampleExplicitLod 118 119 Grad ConstOffset 107 107 120 Store 111(txval31) 121 126: 123 Load 125(g_tTex3du4) 127: 18 Load 20(g_sSamp) 129: 128 SampledImage 126 127 135: 43(ivec4) ImageSampleExplicitLod 129 133 Grad ConstOffset 107 107 134 Store 122(txval32) 135 140: 12(ptr) AccessChain 137(psout) 67 Store 140 139 142: 141(ptr) AccessChain 137(psout) 28 Store 142 138 143:8(PS_OUTPUT) Load 137(psout) ReturnValue 143 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out000066400000000000000000000623161506534232700263050ustar00rootroot00000000000000hlsl.samplegrad.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 textureGradOffset ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 Constant: 0:27 1.100000 0:27 Constant: 0:27 1.200000 0:27 Constant: 0:27 1 (const int) 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 textureGradOffset ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.100000 0:28 0.200000 0:28 Constant: 0:28 1.100000 0:28 Constant: 0:28 1.200000 0:28 Constant: 0:28 1 (const int) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 textureGradOffset ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.100000 0:29 0.200000 0:29 Constant: 0:29 1.100000 0:29 Constant: 0:29 1.200000 0:29 Constant: 0:29 1 (const int) 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 textureGradOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:31 Constant: 0:31 1.100000 0:31 1.200000 0:31 Constant: 0:31 1.100000 0:31 1.200000 0:31 Constant: 0:31 1 (const int) 0:31 0 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 textureGradOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 0.200000 0:32 0.300000 0:32 Constant: 0:32 1.100000 0:32 1.200000 0:32 Constant: 0:32 1.100000 0:32 1.200000 0:32 Constant: 0:32 1 (const int) 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 textureGradOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.100000 0:33 0.200000 0:33 0.300000 0:33 Constant: 0:33 1.100000 0:33 1.200000 0:33 Constant: 0:33 1.100000 0:33 1.200000 0:33 Constant: 0:33 1 (const int) 0:33 0 (const int) 0:35 move second child to first child ( temp 4-component vector of float) 0:35 Color: direct index for structure ( temp 4-component vector of float) 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1.000000 0:35 1.000000 0:35 1.000000 0:35 1.000000 0:36 move second child to first child ( temp float) 0:36 Depth: direct index for structure ( temp float) 0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1.000000 0:38 Branch: Return with expression 0:38 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? 'g_tTexcdf4' ( uniform textureCubeArray) 0:? 'g_tTexcdi4' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 textureGradOffset ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 Constant: 0:27 1.100000 0:27 Constant: 0:27 1.200000 0:27 Constant: 0:27 1 (const int) 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 textureGradOffset ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.100000 0:28 0.200000 0:28 Constant: 0:28 1.100000 0:28 Constant: 0:28 1.200000 0:28 Constant: 0:28 1 (const int) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 textureGradOffset ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.100000 0:29 0.200000 0:29 Constant: 0:29 1.100000 0:29 Constant: 0:29 1.200000 0:29 Constant: 0:29 1 (const int) 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 textureGradOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:31 Constant: 0:31 1.100000 0:31 1.200000 0:31 Constant: 0:31 1.100000 0:31 1.200000 0:31 Constant: 0:31 1 (const int) 0:31 0 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 textureGradOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 0.200000 0:32 0.300000 0:32 Constant: 0:32 1.100000 0:32 1.200000 0:32 Constant: 0:32 1.100000 0:32 1.200000 0:32 Constant: 0:32 1 (const int) 0:32 0 (const int) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 textureGradOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.100000 0:33 0.200000 0:33 0.300000 0:33 Constant: 0:33 1.100000 0:33 1.200000 0:33 Constant: 0:33 1.100000 0:33 1.200000 0:33 Constant: 0:33 1 (const int) 0:33 0 (const int) 0:35 move second child to first child ( temp 4-component vector of float) 0:35 Color: direct index for structure ( temp 4-component vector of float) 0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1.000000 0:35 1.000000 0:35 1.000000 0:35 1.000000 0:36 move second child to first child ( temp float) 0:36 Depth: direct index for structure ( temp float) 0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1.000000 0:38 Branch: Return with expression 0:38 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? 'g_tTexcdf4' ( uniform textureCubeArray) 0:? 'g_tTexcdi4' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 120 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 103 107 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 35 "txval11" Name 38 "g_tTex1di4" Name 47 "txval12" Name 50 "g_tTex1du4" Name 56 "txval20" Name 59 "g_tTex2df4" Name 72 "txval21" Name 75 "g_tTex2di4" Name 81 "txval22" Name 84 "g_tTex2du4" Name 91 "psout" Name 100 "flattenTemp" Name 103 "@entryPointOutput.Color" Name 107 "@entryPointOutput.Depth" Name 110 "g_tTex1df4a" Name 113 "g_tTexcdf4" Name 116 "g_tTexcdi4" Name 119 "g_tTexcdu4" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 38(g_tTex1di4) Binding 2 Decorate 38(g_tTex1di4) DescriptorSet 0 Decorate 50(g_tTex1du4) Binding 3 Decorate 50(g_tTex1du4) DescriptorSet 0 Decorate 59(g_tTex2df4) Binding 4 Decorate 59(g_tTex2df4) DescriptorSet 0 Decorate 75(g_tTex2di4) Binding 5 Decorate 75(g_tTex2di4) DescriptorSet 0 Decorate 84(g_tTex2du4) Binding 6 Decorate 84(g_tTex2du4) DescriptorSet 0 Decorate 103(@entryPointOutput.Color) Location 0 Decorate 107(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 110(g_tTex1df4a) Binding 1 Decorate 110(g_tTex1df4a) DescriptorSet 0 Decorate 113(g_tTexcdf4) Binding 0 Decorate 113(g_tTexcdf4) DescriptorSet 0 Decorate 116(g_tTexcdi4) Binding 0 Decorate 116(g_tTexcdi4) DescriptorSet 0 Decorate 119(g_tTexcdu4) Binding 0 Decorate 119(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1066192077 29: 6(float) Constant 1067030938 30: TypeInt 32 1 31: 30(int) Constant 1 33: TypeVector 30(int) 4 34: TypePointer Function 33(ivec4) 36: TypeImage 30(int) 1D array sampled format:Unknown 37: TypePointer UniformConstant 36 38(g_tTex1di4): 37(ptr) Variable UniformConstant 41: TypeSampledImage 36 44: TypeInt 32 0 45: TypeVector 44(int) 4 46: TypePointer Function 45(ivec4) 48: TypeImage 44(int) 1D array sampled format:Unknown 49: TypePointer UniformConstant 48 50(g_tTex1du4): 49(ptr) Variable UniformConstant 53: TypeSampledImage 48 57: TypeImage 6(float) 2D array sampled format:Unknown 58: TypePointer UniformConstant 57 59(g_tTex2df4): 58(ptr) Variable UniformConstant 62: TypeSampledImage 57 64: TypeVector 6(float) 3 65: 6(float) Constant 1050253722 66: 64(fvec3) ConstantComposite 25 26 65 67: 24(fvec2) ConstantComposite 28 29 68: TypeVector 30(int) 2 69: 30(int) Constant 0 70: 68(ivec2) ConstantComposite 31 69 73: TypeImage 30(int) 2D array sampled format:Unknown 74: TypePointer UniformConstant 73 75(g_tTex2di4): 74(ptr) Variable UniformConstant 78: TypeSampledImage 73 82: TypeImage 44(int) 2D array sampled format:Unknown 83: TypePointer UniformConstant 82 84(g_tTex2du4): 83(ptr) Variable UniformConstant 87: TypeSampledImage 82 90: TypePointer Function 8(PS_OUTPUT) 92: 6(float) Constant 1065353216 93: 7(fvec4) ConstantComposite 92 92 92 92 95: TypePointer Function 6(float) 102: TypePointer Output 7(fvec4) 103(@entryPointOutput.Color): 102(ptr) Variable Output 106: TypePointer Output 6(float) 107(@entryPointOutput.Depth): 106(ptr) Variable Output 110(g_tTex1df4a): 15(ptr) Variable UniformConstant 111: TypeImage 6(float) Cube array sampled format:Unknown 112: TypePointer UniformConstant 111 113(g_tTexcdf4): 112(ptr) Variable UniformConstant 114: TypeImage 30(int) Cube array sampled format:Unknown 115: TypePointer UniformConstant 114 116(g_tTexcdi4): 115(ptr) Variable UniformConstant 117: TypeImage 44(int) Cube array sampled format:Unknown 118: TypePointer UniformConstant 117 119(g_tTexcdu4): 118(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 100(flattenTemp): 90(ptr) Variable Function 101:8(PS_OUTPUT) FunctionCall 10(@main() Store 100(flattenTemp) 101 104: 12(ptr) AccessChain 100(flattenTemp) 69 105: 7(fvec4) Load 104 Store 103(@entryPointOutput.Color) 105 108: 95(ptr) AccessChain 100(flattenTemp) 31 109: 6(float) Load 108 Store 107(@entryPointOutput.Depth) 109 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 35(txval11): 34(ptr) Variable Function 47(txval12): 46(ptr) Variable Function 56(txval20): 12(ptr) Variable Function 72(txval21): 34(ptr) Variable Function 81(txval22): 46(ptr) Variable Function 91(psout): 90(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 32: 7(fvec4) ImageSampleExplicitLod 23 27 Grad ConstOffset 28 29 31 Store 13(txval10) 32 39: 36 Load 38(g_tTex1di4) 40: 18 Load 20(g_sSamp) 42: 41 SampledImage 39 40 43: 33(ivec4) ImageSampleExplicitLod 42 27 Grad ConstOffset 28 29 31 Store 35(txval11) 43 51: 48 Load 50(g_tTex1du4) 52: 18 Load 20(g_sSamp) 54: 53 SampledImage 51 52 55: 45(ivec4) ImageSampleExplicitLod 54 27 Grad ConstOffset 28 29 31 Store 47(txval12) 55 60: 57 Load 59(g_tTex2df4) 61: 18 Load 20(g_sSamp) 63: 62 SampledImage 60 61 71: 7(fvec4) ImageSampleExplicitLod 63 66 Grad ConstOffset 67 67 70 Store 56(txval20) 71 76: 73 Load 75(g_tTex2di4) 77: 18 Load 20(g_sSamp) 79: 78 SampledImage 76 77 80: 33(ivec4) ImageSampleExplicitLod 79 66 Grad ConstOffset 67 67 70 Store 72(txval21) 80 85: 82 Load 84(g_tTex2du4) 86: 18 Load 20(g_sSamp) 88: 87 SampledImage 85 86 89: 45(ivec4) ImageSampleExplicitLod 88 66 Grad ConstOffset 67 67 70 Store 81(txval22) 89 94: 12(ptr) AccessChain 91(psout) 69 Store 94 93 96: 95(ptr) AccessChain 91(psout) 31 Store 96 92 97:8(PS_OUTPUT) Load 91(psout) ReturnValue 97 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out000066400000000000000000000710431506534232700252650ustar00rootroot00000000000000hlsl.samplelevel.array.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 textureLod ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 Constant: 0:27 0.750000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 textureLod ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4a' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.200000 0:28 0.300000 0:28 Constant: 0:28 0.750000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 textureLod ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4a' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.300000 0:29 0.400000 0:29 Constant: 0:29 0.750000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 textureLod ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4a' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:31 Constant: 0:31 0.750000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 textureLod ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4a' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 0.400000 0:32 0.500000 0:32 Constant: 0:32 0.750000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 textureLod ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4a' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.500000 0:33 0.600000 0:33 0.700000 0:33 Constant: 0:33 0.750000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 textureLod ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4a' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 0.750000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 textureLod ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.400000 0:36 0.500000 0:36 0.600000 0:36 0.700000 0:36 Constant: 0:36 0.750000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 textureLod ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.700000 0:37 0.800000 0:37 0.900000 0:37 1.000000 0:37 Constant: 0:37 0.750000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval10' ( temp 4-component vector of float) 0:27 textureLod ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1DArray) 0:27 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 Constant: 0:27 0.750000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval11' ( temp 4-component vector of int) 0:28 textureLod ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler1DArray) 0:28 'g_tTex1di4a' ( uniform itexture1DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.200000 0:28 0.300000 0:28 Constant: 0:28 0.750000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval12' ( temp 4-component vector of uint) 0:29 textureLod ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler1DArray) 0:29 'g_tTex1du4a' ( uniform utexture1DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.300000 0:29 0.400000 0:29 Constant: 0:29 0.750000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval20' ( temp 4-component vector of float) 0:31 textureLod ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler2DArray) 0:31 'g_tTex2df4a' ( uniform texture2DArray) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 0.200000 0:31 0.300000 0:31 Constant: 0:31 0.750000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval21' ( temp 4-component vector of int) 0:32 textureLod ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler2DArray) 0:32 'g_tTex2di4a' ( uniform itexture2DArray) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 0.400000 0:32 0.500000 0:32 Constant: 0:32 0.750000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval22' ( temp 4-component vector of uint) 0:33 textureLod ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler2DArray) 0:33 'g_tTex2du4a' ( uniform utexture2DArray) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.500000 0:33 0.600000 0:33 0.700000 0:33 Constant: 0:33 0.750000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval40' ( temp 4-component vector of float) 0:35 textureLod ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp samplerCubeArray) 0:35 'g_tTexcdf4a' ( uniform textureCubeArray) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 0.750000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval41' ( temp 4-component vector of int) 0:36 textureLod ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isamplerCubeArray) 0:36 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.400000 0:36 0.500000 0:36 0.600000 0:36 0.700000 0:36 Constant: 0:36 0.750000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval42' ( temp 4-component vector of uint) 0:37 textureLod ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usamplerCubeArray) 0:37 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.700000 0:37 0.800000 0:37 0.900000 0:37 1.000000 0:37 Constant: 0:37 0.750000 0:39 move second child to first child ( temp 4-component vector of float) 0:39 Color: direct index for structure ( temp 4-component vector of float) 0:39 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:39 1.000000 0:40 move second child to first child ( temp float) 0:40 Depth: direct index for structure ( temp float) 0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 0:42 Branch: Return with expression 0:42 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:24 Color: direct index for structure ( temp 4-component vector of float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:24 Depth: direct index for structure ( temp float) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'g_tTexcdf4a' ( uniform textureCubeArray) 0:? 'g_tTexcdi4a' ( uniform itextureCubeArray) 0:? 'g_tTexcdu4a' ( uniform utextureCubeArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 147 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 139 143 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4a" Name 20 "g_sSamp" Name 33 "txval11" Name 36 "g_tTex1di4a" Name 47 "txval12" Name 50 "g_tTex1du4a" Name 58 "txval20" Name 61 "g_tTex2df4a" Name 69 "txval21" Name 72 "g_tTex2di4a" Name 80 "txval22" Name 83 "g_tTex2du4a" Name 92 "txval40" Name 95 "g_tTexcdf4a" Name 102 "txval41" Name 105 "g_tTexcdi4a" Name 112 "txval42" Name 115 "g_tTexcdu4a" Name 126 "psout" Name 136 "flattenTemp" Name 139 "@entryPointOutput.Color" Name 143 "@entryPointOutput.Depth" Name 146 "g_tTex1df4" Decorate 16(g_tTex1df4a) Binding 1 Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex1di4a) Binding 2 Decorate 36(g_tTex1di4a) DescriptorSet 0 Decorate 50(g_tTex1du4a) Binding 3 Decorate 50(g_tTex1du4a) DescriptorSet 0 Decorate 61(g_tTex2df4a) Binding 4 Decorate 61(g_tTex2df4a) DescriptorSet 0 Decorate 72(g_tTex2di4a) Binding 5 Decorate 72(g_tTex2di4a) DescriptorSet 0 Decorate 83(g_tTex2du4a) Binding 6 Decorate 83(g_tTex2du4a) DescriptorSet 0 Decorate 95(g_tTexcdf4a) Binding 7 Decorate 95(g_tTexcdf4a) DescriptorSet 0 Decorate 105(g_tTexcdi4a) Binding 8 Decorate 105(g_tTexcdi4a) DescriptorSet 0 Decorate 115(g_tTexcdu4a) Binding 9 Decorate 115(g_tTexcdu4a) DescriptorSet 0 Decorate 139(@entryPointOutput.Color) Location 0 Decorate 143(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 146(g_tTex1df4) Binding 0 Decorate 146(g_tTex1df4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4a): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1061158912 30: TypeInt 32 1 31: TypeVector 30(int) 4 32: TypePointer Function 31(ivec4) 34: TypeImage 30(int) 1D array sampled format:Unknown 35: TypePointer UniformConstant 34 36(g_tTex1di4a): 35(ptr) Variable UniformConstant 39: TypeSampledImage 34 41: 6(float) Constant 1050253722 42: 24(fvec2) ConstantComposite 26 41 44: TypeInt 32 0 45: TypeVector 44(int) 4 46: TypePointer Function 45(ivec4) 48: TypeImage 44(int) 1D array sampled format:Unknown 49: TypePointer UniformConstant 48 50(g_tTex1du4a): 49(ptr) Variable UniformConstant 53: TypeSampledImage 48 55: 6(float) Constant 1053609165 56: 24(fvec2) ConstantComposite 41 55 59: TypeImage 6(float) 2D array sampled format:Unknown 60: TypePointer UniformConstant 59 61(g_tTex2df4a): 60(ptr) Variable UniformConstant 64: TypeSampledImage 59 66: TypeVector 6(float) 3 67: 66(fvec3) ConstantComposite 25 26 41 70: TypeImage 30(int) 2D array sampled format:Unknown 71: TypePointer UniformConstant 70 72(g_tTex2di4a): 71(ptr) Variable UniformConstant 75: TypeSampledImage 70 77: 6(float) Constant 1056964608 78: 66(fvec3) ConstantComposite 41 55 77 81: TypeImage 44(int) 2D array sampled format:Unknown 82: TypePointer UniformConstant 81 83(g_tTex2du4a): 82(ptr) Variable UniformConstant 86: TypeSampledImage 81 88: 6(float) Constant 1058642330 89: 6(float) Constant 1060320051 90: 66(fvec3) ConstantComposite 77 88 89 93: TypeImage 6(float) Cube array sampled format:Unknown 94: TypePointer UniformConstant 93 95(g_tTexcdf4a): 94(ptr) Variable UniformConstant 98: TypeSampledImage 93 100: 7(fvec4) ConstantComposite 25 26 41 55 103: TypeImage 30(int) Cube array sampled format:Unknown 104: TypePointer UniformConstant 103 105(g_tTexcdi4a): 104(ptr) Variable UniformConstant 108: TypeSampledImage 103 110: 7(fvec4) ConstantComposite 55 77 88 89 113: TypeImage 44(int) Cube array sampled format:Unknown 114: TypePointer UniformConstant 113 115(g_tTexcdu4a): 114(ptr) Variable UniformConstant 118: TypeSampledImage 113 120: 6(float) Constant 1061997773 121: 6(float) Constant 1063675494 122: 6(float) Constant 1065353216 123: 7(fvec4) ConstantComposite 89 120 121 122 125: TypePointer Function 8(PS_OUTPUT) 127: 30(int) Constant 0 128: 7(fvec4) ConstantComposite 122 122 122 122 130: 30(int) Constant 1 131: TypePointer Function 6(float) 138: TypePointer Output 7(fvec4) 139(@entryPointOutput.Color): 138(ptr) Variable Output 142: TypePointer Output 6(float) 143(@entryPointOutput.Depth): 142(ptr) Variable Output 146(g_tTex1df4): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 136(flattenTemp): 125(ptr) Variable Function 137:8(PS_OUTPUT) FunctionCall 10(@main() Store 136(flattenTemp) 137 140: 12(ptr) AccessChain 136(flattenTemp) 127 141: 7(fvec4) Load 140 Store 139(@entryPointOutput.Color) 141 144: 131(ptr) AccessChain 136(flattenTemp) 130 145: 6(float) Load 144 Store 143(@entryPointOutput.Depth) 145 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 33(txval11): 32(ptr) Variable Function 47(txval12): 46(ptr) Variable Function 58(txval20): 12(ptr) Variable Function 69(txval21): 32(ptr) Variable Function 80(txval22): 46(ptr) Variable Function 92(txval40): 12(ptr) Variable Function 102(txval41): 32(ptr) Variable Function 112(txval42): 46(ptr) Variable Function 126(psout): 125(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 29: 7(fvec4) ImageSampleExplicitLod 23 27 Lod 28 Store 13(txval10) 29 37: 34 Load 36(g_tTex1di4a) 38: 18 Load 20(g_sSamp) 40: 39 SampledImage 37 38 43: 31(ivec4) ImageSampleExplicitLod 40 42 Lod 28 Store 33(txval11) 43 51: 48 Load 50(g_tTex1du4a) 52: 18 Load 20(g_sSamp) 54: 53 SampledImage 51 52 57: 45(ivec4) ImageSampleExplicitLod 54 56 Lod 28 Store 47(txval12) 57 62: 59 Load 61(g_tTex2df4a) 63: 18 Load 20(g_sSamp) 65: 64 SampledImage 62 63 68: 7(fvec4) ImageSampleExplicitLod 65 67 Lod 28 Store 58(txval20) 68 73: 70 Load 72(g_tTex2di4a) 74: 18 Load 20(g_sSamp) 76: 75 SampledImage 73 74 79: 31(ivec4) ImageSampleExplicitLod 76 78 Lod 28 Store 69(txval21) 79 84: 81 Load 83(g_tTex2du4a) 85: 18 Load 20(g_sSamp) 87: 86 SampledImage 84 85 91: 45(ivec4) ImageSampleExplicitLod 87 90 Lod 28 Store 80(txval22) 91 96: 93 Load 95(g_tTexcdf4a) 97: 18 Load 20(g_sSamp) 99: 98 SampledImage 96 97 101: 7(fvec4) ImageSampleExplicitLod 99 100 Lod 28 Store 92(txval40) 101 106: 103 Load 105(g_tTexcdi4a) 107: 18 Load 20(g_sSamp) 109: 108 SampledImage 106 107 111: 31(ivec4) ImageSampleExplicitLod 109 110 Lod 28 Store 102(txval41) 111 116: 113 Load 115(g_tTexcdu4a) 117: 18 Load 20(g_sSamp) 119: 118 SampledImage 116 117 124: 45(ivec4) ImageSampleExplicitLod 119 123 Lod 28 Store 112(txval42) 124 129: 12(ptr) AccessChain 126(psout) 127 Store 129 128 132: 131(ptr) AccessChain 126(psout) 130 Store 132 122 133:8(PS_OUTPUT) Load 126(psout) ReturnValue 133 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out000066400000000000000000001032271506534232700252300ustar00rootroot00000000000000hlsl.samplelevel.basic.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Parameters: 0:? Sequence 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'txval10' ( temp 4-component vector of float) 0:32 textureLod ( temp 4-component vector of float) 0:32 Construct combined texture-sampler ( temp sampler1D) 0:32 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 Constant: 0:32 0.750000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of int) 0:33 'txval11' ( temp 4-component vector of int) 0:33 textureLod ( temp 4-component vector of int) 0:33 Construct combined texture-sampler ( temp isampler1D) 0:33 'g_tTex1di4' ( uniform itexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.200000 0:33 Constant: 0:33 0.750000 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 'txval12' ( temp 4-component vector of uint) 0:34 textureLod ( temp 4-component vector of uint) 0:34 Construct combined texture-sampler ( temp usampler1D) 0:34 'g_tTex1du4' ( uniform utexture1D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.300000 0:34 Constant: 0:34 0.750000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of float) 0:36 'txval20' ( temp 4-component vector of float) 0:36 textureLod ( temp 4-component vector of float) 0:36 Construct combined texture-sampler ( temp sampler2D) 0:36 'g_tTex2df4' ( uniform texture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 Constant: 0:36 0.750000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of int) 0:37 'txval21' ( temp 4-component vector of int) 0:37 textureLod ( temp 4-component vector of int) 0:37 Construct combined texture-sampler ( temp isampler2D) 0:37 'g_tTex2di4' ( uniform itexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.300000 0:37 0.400000 0:37 Constant: 0:37 0.750000 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of uint) 0:38 'txval22' ( temp 4-component vector of uint) 0:38 textureLod ( temp 4-component vector of uint) 0:38 Construct combined texture-sampler ( temp usampler2D) 0:38 'g_tTex2du4' ( uniform utexture2D) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.500000 0:38 0.600000 0:38 Constant: 0:38 0.750000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'txval30' ( temp 4-component vector of float) 0:40 textureLod ( temp 4-component vector of float) 0:40 Construct combined texture-sampler ( temp sampler3D) 0:40 'g_tTex3df4' ( uniform texture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.100000 0:40 0.200000 0:40 0.300000 0:40 Constant: 0:40 0.750000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of int) 0:41 'txval31' ( temp 4-component vector of int) 0:41 textureLod ( temp 4-component vector of int) 0:41 Construct combined texture-sampler ( temp isampler3D) 0:41 'g_tTex3di4' ( uniform itexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.400000 0:41 0.500000 0:41 0.600000 0:41 Constant: 0:41 0.750000 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of uint) 0:42 'txval32' ( temp 4-component vector of uint) 0:42 textureLod ( temp 4-component vector of uint) 0:42 Construct combined texture-sampler ( temp usampler3D) 0:42 'g_tTex3du4' ( uniform utexture3D) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Constant: 0:42 0.700000 0:42 0.800000 0:42 0.900000 0:42 Constant: 0:42 0.750000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'txval40' ( temp 4-component vector of float) 0:44 textureLod ( temp 4-component vector of float) 0:44 Construct combined texture-sampler ( temp samplerCube) 0:44 'g_tTexcdf4' ( uniform textureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 0.300000 0:44 Constant: 0:44 0.750000 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of int) 0:45 'txval41' ( temp 4-component vector of int) 0:45 textureLod ( temp 4-component vector of int) 0:45 Construct combined texture-sampler ( temp isamplerCube) 0:45 'g_tTexcdi4' ( uniform itextureCube) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 Constant: 0:45 0.400000 0:45 0.500000 0:45 0.600000 0:45 Constant: 0:45 0.750000 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of uint) 0:46 'txval42' ( temp 4-component vector of uint) 0:46 textureLod ( temp 4-component vector of uint) 0:46 Construct combined texture-sampler ( temp usamplerCube) 0:46 'g_tTexcdu4' ( uniform utextureCube) 0:46 'g_sSamp' (layout( binding=0) uniform sampler) 0:46 Constant: 0:46 0.700000 0:46 0.800000 0:46 0.900000 0:46 Constant: 0:46 0.750000 0:48 move second child to first child ( temp 4-component vector of float) 0:48 Color: direct index for structure ( temp 4-component vector of float) 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1.000000 0:48 1.000000 0:48 1.000000 0:48 1.000000 0:49 move second child to first child ( temp float) 0:49 Depth: direct index for structure ( temp float) 0:49 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 1.000000 0:51 Branch: Return with expression 0:51 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Definition: main( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:29 Sequence 0:29 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:29 Color: direct index for structure ( temp 4-component vector of float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Constant: 0:29 0 (const int) 0:29 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:29 Depth: direct index for structure ( temp float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Constant: 0:29 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Parameters: 0:? Sequence 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'txval10' ( temp 4-component vector of float) 0:32 textureLod ( temp 4-component vector of float) 0:32 Construct combined texture-sampler ( temp sampler1D) 0:32 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.100000 0:32 Constant: 0:32 0.750000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of int) 0:33 'txval11' ( temp 4-component vector of int) 0:33 textureLod ( temp 4-component vector of int) 0:33 Construct combined texture-sampler ( temp isampler1D) 0:33 'g_tTex1di4' ( uniform itexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.200000 0:33 Constant: 0:33 0.750000 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 'txval12' ( temp 4-component vector of uint) 0:34 textureLod ( temp 4-component vector of uint) 0:34 Construct combined texture-sampler ( temp usampler1D) 0:34 'g_tTex1du4' ( uniform utexture1D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.300000 0:34 Constant: 0:34 0.750000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of float) 0:36 'txval20' ( temp 4-component vector of float) 0:36 textureLod ( temp 4-component vector of float) 0:36 Construct combined texture-sampler ( temp sampler2D) 0:36 'g_tTex2df4' ( uniform texture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:36 Constant: 0:36 0.750000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of int) 0:37 'txval21' ( temp 4-component vector of int) 0:37 textureLod ( temp 4-component vector of int) 0:37 Construct combined texture-sampler ( temp isampler2D) 0:37 'g_tTex2di4' ( uniform itexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.300000 0:37 0.400000 0:37 Constant: 0:37 0.750000 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of uint) 0:38 'txval22' ( temp 4-component vector of uint) 0:38 textureLod ( temp 4-component vector of uint) 0:38 Construct combined texture-sampler ( temp usampler2D) 0:38 'g_tTex2du4' ( uniform utexture2D) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.500000 0:38 0.600000 0:38 Constant: 0:38 0.750000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'txval30' ( temp 4-component vector of float) 0:40 textureLod ( temp 4-component vector of float) 0:40 Construct combined texture-sampler ( temp sampler3D) 0:40 'g_tTex3df4' ( uniform texture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.100000 0:40 0.200000 0:40 0.300000 0:40 Constant: 0:40 0.750000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of int) 0:41 'txval31' ( temp 4-component vector of int) 0:41 textureLod ( temp 4-component vector of int) 0:41 Construct combined texture-sampler ( temp isampler3D) 0:41 'g_tTex3di4' ( uniform itexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.400000 0:41 0.500000 0:41 0.600000 0:41 Constant: 0:41 0.750000 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of uint) 0:42 'txval32' ( temp 4-component vector of uint) 0:42 textureLod ( temp 4-component vector of uint) 0:42 Construct combined texture-sampler ( temp usampler3D) 0:42 'g_tTex3du4' ( uniform utexture3D) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Constant: 0:42 0.700000 0:42 0.800000 0:42 0.900000 0:42 Constant: 0:42 0.750000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'txval40' ( temp 4-component vector of float) 0:44 textureLod ( temp 4-component vector of float) 0:44 Construct combined texture-sampler ( temp samplerCube) 0:44 'g_tTexcdf4' ( uniform textureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.100000 0:44 0.200000 0:44 0.300000 0:44 Constant: 0:44 0.750000 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of int) 0:45 'txval41' ( temp 4-component vector of int) 0:45 textureLod ( temp 4-component vector of int) 0:45 Construct combined texture-sampler ( temp isamplerCube) 0:45 'g_tTexcdi4' ( uniform itextureCube) 0:45 'g_sSamp' (layout( binding=0) uniform sampler) 0:45 Constant: 0:45 0.400000 0:45 0.500000 0:45 0.600000 0:45 Constant: 0:45 0.750000 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of uint) 0:46 'txval42' ( temp 4-component vector of uint) 0:46 textureLod ( temp 4-component vector of uint) 0:46 Construct combined texture-sampler ( temp usamplerCube) 0:46 'g_tTexcdu4' ( uniform utextureCube) 0:46 'g_sSamp' (layout( binding=0) uniform sampler) 0:46 Constant: 0:46 0.700000 0:46 0.800000 0:46 0.900000 0:46 Constant: 0:46 0.750000 0:48 move second child to first child ( temp 4-component vector of float) 0:48 Color: direct index for structure ( temp 4-component vector of float) 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1.000000 0:48 1.000000 0:48 1.000000 0:48 1.000000 0:49 move second child to first child ( temp float) 0:49 Depth: direct index for structure ( temp float) 0:49 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 1.000000 0:51 Branch: Return with expression 0:51 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Definition: main( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:29 Sequence 0:29 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:29 Color: direct index for structure ( temp 4-component vector of float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Constant: 0:29 0 (const int) 0:29 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:29 Depth: direct index for structure ( temp float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:29 Constant: 0:29 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_sSamp2d' ( uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 172 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 163 167 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 30 "txval11" Name 33 "g_tTex1di4" Name 43 "txval12" Name 46 "g_tTex1du4" Name 53 "txval20" Name 56 "g_tTex2df4" Name 64 "txval21" Name 67 "g_tTex2di4" Name 75 "txval22" Name 78 "g_tTex2du4" Name 87 "txval30" Name 90 "g_tTex3df4" Name 98 "txval31" Name 101 "g_tTex3di4" Name 108 "txval32" Name 111 "g_tTex3du4" Name 121 "txval40" Name 124 "g_tTexcdf4" Name 130 "txval41" Name 133 "g_tTexcdi4" Name 139 "txval42" Name 142 "g_tTexcdu4" Name 149 "psout" Name 160 "flattenTemp" Name 163 "@entryPointOutput.Color" Name 167 "@entryPointOutput.Depth" Name 170 "g_sSamp2d" Name 171 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4) Binding 2 Decorate 33(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 3 Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 56(g_tTex2df4) Binding 4 Decorate 56(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 5 Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 78(g_tTex2du4) Binding 6 Decorate 78(g_tTex2du4) DescriptorSet 0 Decorate 90(g_tTex3df4) Binding 7 Decorate 90(g_tTex3df4) DescriptorSet 0 Decorate 101(g_tTex3di4) Binding 8 Decorate 101(g_tTex3di4) DescriptorSet 0 Decorate 111(g_tTex3du4) Binding 9 Decorate 111(g_tTex3du4) DescriptorSet 0 Decorate 124(g_tTexcdf4) Binding 10 Decorate 124(g_tTexcdf4) DescriptorSet 0 Decorate 133(g_tTexcdi4) Binding 11 Decorate 133(g_tTexcdi4) DescriptorSet 0 Decorate 142(g_tTexcdu4) Binding 12 Decorate 142(g_tTexcdu4) DescriptorSet 0 Decorate 163(@entryPointOutput.Color) Location 0 Decorate 167(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 170(g_sSamp2d) Binding 0 Decorate 170(g_sSamp2d) DescriptorSet 0 Decorate 171(g_tTex1df4a) Binding 1 Decorate 171(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1061158912 27: TypeInt 32 1 28: TypeVector 27(int) 4 29: TypePointer Function 28(ivec4) 31: TypeImage 27(int) 1D sampled format:Unknown 32: TypePointer UniformConstant 31 33(g_tTex1di4): 32(ptr) Variable UniformConstant 36: TypeSampledImage 31 38: 6(float) Constant 1045220557 40: TypeInt 32 0 41: TypeVector 40(int) 4 42: TypePointer Function 41(ivec4) 44: TypeImage 40(int) 1D sampled format:Unknown 45: TypePointer UniformConstant 44 46(g_tTex1du4): 45(ptr) Variable UniformConstant 49: TypeSampledImage 44 51: 6(float) Constant 1050253722 54: TypeImage 6(float) 2D sampled format:Unknown 55: TypePointer UniformConstant 54 56(g_tTex2df4): 55(ptr) Variable UniformConstant 59: TypeSampledImage 54 61: TypeVector 6(float) 2 62: 61(fvec2) ConstantComposite 24 38 65: TypeImage 27(int) 2D sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2di4): 66(ptr) Variable UniformConstant 70: TypeSampledImage 65 72: 6(float) Constant 1053609165 73: 61(fvec2) ConstantComposite 51 72 76: TypeImage 40(int) 2D sampled format:Unknown 77: TypePointer UniformConstant 76 78(g_tTex2du4): 77(ptr) Variable UniformConstant 81: TypeSampledImage 76 83: 6(float) Constant 1056964608 84: 6(float) Constant 1058642330 85: 61(fvec2) ConstantComposite 83 84 88: TypeImage 6(float) 3D sampled format:Unknown 89: TypePointer UniformConstant 88 90(g_tTex3df4): 89(ptr) Variable UniformConstant 93: TypeSampledImage 88 95: TypeVector 6(float) 3 96: 95(fvec3) ConstantComposite 24 38 51 99: TypeImage 27(int) 3D sampled format:Unknown 100: TypePointer UniformConstant 99 101(g_tTex3di4): 100(ptr) Variable UniformConstant 104: TypeSampledImage 99 106: 95(fvec3) ConstantComposite 72 83 84 109: TypeImage 40(int) 3D sampled format:Unknown 110: TypePointer UniformConstant 109 111(g_tTex3du4): 110(ptr) Variable UniformConstant 114: TypeSampledImage 109 116: 6(float) Constant 1060320051 117: 6(float) Constant 1061997773 118: 6(float) Constant 1063675494 119: 95(fvec3) ConstantComposite 116 117 118 122: TypeImage 6(float) Cube sampled format:Unknown 123: TypePointer UniformConstant 122 124(g_tTexcdf4): 123(ptr) Variable UniformConstant 127: TypeSampledImage 122 131: TypeImage 27(int) Cube sampled format:Unknown 132: TypePointer UniformConstant 131 133(g_tTexcdi4): 132(ptr) Variable UniformConstant 136: TypeSampledImage 131 140: TypeImage 40(int) Cube sampled format:Unknown 141: TypePointer UniformConstant 140 142(g_tTexcdu4): 141(ptr) Variable UniformConstant 145: TypeSampledImage 140 148: TypePointer Function 8(PS_OUTPUT) 150: 27(int) Constant 0 151: 6(float) Constant 1065353216 152: 7(fvec4) ConstantComposite 151 151 151 151 154: 27(int) Constant 1 155: TypePointer Function 6(float) 162: TypePointer Output 7(fvec4) 163(@entryPointOutput.Color): 162(ptr) Variable Output 166: TypePointer Output 6(float) 167(@entryPointOutput.Depth): 166(ptr) Variable Output 170(g_sSamp2d): 19(ptr) Variable UniformConstant 171(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 160(flattenTemp): 148(ptr) Variable Function 161:8(PS_OUTPUT) FunctionCall 10(@main() Store 160(flattenTemp) 161 164: 12(ptr) AccessChain 160(flattenTemp) 150 165: 7(fvec4) Load 164 Store 163(@entryPointOutput.Color) 165 168: 155(ptr) AccessChain 160(flattenTemp) 154 169: 6(float) Load 168 Store 167(@entryPointOutput.Depth) 169 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 30(txval11): 29(ptr) Variable Function 43(txval12): 42(ptr) Variable Function 53(txval20): 12(ptr) Variable Function 64(txval21): 29(ptr) Variable Function 75(txval22): 42(ptr) Variable Function 87(txval30): 12(ptr) Variable Function 98(txval31): 29(ptr) Variable Function 108(txval32): 42(ptr) Variable Function 121(txval40): 12(ptr) Variable Function 130(txval41): 29(ptr) Variable Function 139(txval42): 42(ptr) Variable Function 149(psout): 148(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 26: 7(fvec4) ImageSampleExplicitLod 23 24 Lod 25 Store 13(txval10) 26 34: 31 Load 33(g_tTex1di4) 35: 18 Load 20(g_sSamp) 37: 36 SampledImage 34 35 39: 28(ivec4) ImageSampleExplicitLod 37 38 Lod 25 Store 30(txval11) 39 47: 44 Load 46(g_tTex1du4) 48: 18 Load 20(g_sSamp) 50: 49 SampledImage 47 48 52: 41(ivec4) ImageSampleExplicitLod 50 51 Lod 25 Store 43(txval12) 52 57: 54 Load 56(g_tTex2df4) 58: 18 Load 20(g_sSamp) 60: 59 SampledImage 57 58 63: 7(fvec4) ImageSampleExplicitLod 60 62 Lod 25 Store 53(txval20) 63 68: 65 Load 67(g_tTex2di4) 69: 18 Load 20(g_sSamp) 71: 70 SampledImage 68 69 74: 28(ivec4) ImageSampleExplicitLod 71 73 Lod 25 Store 64(txval21) 74 79: 76 Load 78(g_tTex2du4) 80: 18 Load 20(g_sSamp) 82: 81 SampledImage 79 80 86: 41(ivec4) ImageSampleExplicitLod 82 85 Lod 25 Store 75(txval22) 86 91: 88 Load 90(g_tTex3df4) 92: 18 Load 20(g_sSamp) 94: 93 SampledImage 91 92 97: 7(fvec4) ImageSampleExplicitLod 94 96 Lod 25 Store 87(txval30) 97 102: 99 Load 101(g_tTex3di4) 103: 18 Load 20(g_sSamp) 105: 104 SampledImage 102 103 107: 28(ivec4) ImageSampleExplicitLod 105 106 Lod 25 Store 98(txval31) 107 112: 109 Load 111(g_tTex3du4) 113: 18 Load 20(g_sSamp) 115: 114 SampledImage 112 113 120: 41(ivec4) ImageSampleExplicitLod 115 119 Lod 25 Store 108(txval32) 120 125: 122 Load 124(g_tTexcdf4) 126: 18 Load 20(g_sSamp) 128: 127 SampledImage 125 126 129: 7(fvec4) ImageSampleExplicitLod 128 96 Lod 25 Store 121(txval40) 129 134: 131 Load 133(g_tTexcdi4) 135: 18 Load 20(g_sSamp) 137: 136 SampledImage 134 135 138: 28(ivec4) ImageSampleExplicitLod 137 106 Lod 25 Store 130(txval41) 138 143: 140 Load 142(g_tTexcdu4) 144: 18 Load 20(g_sSamp) 146: 145 SampledImage 143 144 147: 41(ivec4) ImageSampleExplicitLod 146 119 Lod 25 Store 139(txval42) 147 153: 12(ptr) AccessChain 149(psout) 150 Store 153 152 156: 155(ptr) AccessChain 149(psout) 154 Store 156 151 157:8(PS_OUTPUT) Load 149(psout) ReturnValue 157 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out000066400000000000000000000736451506534232700253030ustar00rootroot00000000000000hlsl.samplelevel.basic.dx10.vert Shader version: 500 0:? Sequence 0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:30 'txval10' ( temp 4-component vector of float) 0:30 textureLod ( temp 4-component vector of float) 0:30 Construct combined texture-sampler ( temp sampler1D) 0:30 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.100000 0:30 Constant: 0:30 0.750000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of int) 0:31 'txval11' ( temp 4-component vector of int) 0:31 textureLod ( temp 4-component vector of int) 0:31 Construct combined texture-sampler ( temp isampler1D) 0:31 'g_tTex1di4' ( uniform itexture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.200000 0:31 Constant: 0:31 0.750000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 'txval12' ( temp 4-component vector of uint) 0:32 textureLod ( temp 4-component vector of uint) 0:32 Construct combined texture-sampler ( temp usampler1D) 0:32 'g_tTex1du4' ( uniform utexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 Constant: 0:32 0.750000 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'txval20' ( temp 4-component vector of float) 0:34 textureLod ( temp 4-component vector of float) 0:34 Construct combined texture-sampler ( temp sampler2D) 0:34 'g_tTex2df4' ( uniform texture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.100000 0:34 0.200000 0:34 Constant: 0:34 0.750000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of int) 0:35 'txval21' ( temp 4-component vector of int) 0:35 textureLod ( temp 4-component vector of int) 0:35 Construct combined texture-sampler ( temp isampler2D) 0:35 'g_tTex2di4' ( uniform itexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 0.750000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of uint) 0:36 'txval22' ( temp 4-component vector of uint) 0:36 textureLod ( temp 4-component vector of uint) 0:36 Construct combined texture-sampler ( temp usampler2D) 0:36 'g_tTex2du4' ( uniform utexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.500000 0:36 0.600000 0:36 Constant: 0:36 0.750000 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'txval30' ( temp 4-component vector of float) 0:38 textureLod ( temp 4-component vector of float) 0:38 Construct combined texture-sampler ( temp sampler3D) 0:38 'g_tTex3df4' ( uniform texture3D) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.100000 0:38 0.200000 0:38 0.300000 0:38 Constant: 0:38 0.750000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of int) 0:39 'txval31' ( temp 4-component vector of int) 0:39 textureLod ( temp 4-component vector of int) 0:39 Construct combined texture-sampler ( temp isampler3D) 0:39 'g_tTex3di4' ( uniform itexture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.400000 0:39 0.500000 0:39 0.600000 0:39 Constant: 0:39 0.750000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of uint) 0:40 'txval32' ( temp 4-component vector of uint) 0:40 textureLod ( temp 4-component vector of uint) 0:40 Construct combined texture-sampler ( temp usampler3D) 0:40 'g_tTex3du4' ( uniform utexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.700000 0:40 0.800000 0:40 0.900000 0:40 Constant: 0:40 0.750000 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'txval40' ( temp 4-component vector of float) 0:42 textureLod ( temp 4-component vector of float) 0:42 Construct combined texture-sampler ( temp samplerCube) 0:42 'g_tTexcdf4' ( uniform textureCube) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 0.300000 0:42 Constant: 0:42 0.750000 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 'txval41' ( temp 4-component vector of int) 0:43 textureLod ( temp 4-component vector of int) 0:43 Construct combined texture-sampler ( temp isamplerCube) 0:43 'g_tTexcdi4' ( uniform itextureCube) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Constant: 0:43 0.400000 0:43 0.500000 0:43 0.600000 0:43 Constant: 0:43 0.750000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of uint) 0:44 'txval42' ( temp 4-component vector of uint) 0:44 textureLod ( temp 4-component vector of uint) 0:44 Construct combined texture-sampler ( temp usamplerCube) 0:44 'g_tTexcdu4' ( uniform utextureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.700000 0:44 0.800000 0:44 0.900000 0:44 Constant: 0:44 0.750000 0:46 move second child to first child ( temp 4-component vector of float) 0:46 Pos: direct index for structure ( temp 4-component vector of float) 0:46 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:48 Branch: Return with expression 0:48 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:27 Pos: direct index for structure ( temp 4-component vector of float) 0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:30 'txval10' ( temp 4-component vector of float) 0:30 textureLod ( temp 4-component vector of float) 0:30 Construct combined texture-sampler ( temp sampler1D) 0:30 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:30 'g_sSamp' (layout( binding=0) uniform sampler) 0:30 Constant: 0:30 0.100000 0:30 Constant: 0:30 0.750000 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of int) 0:31 'txval11' ( temp 4-component vector of int) 0:31 textureLod ( temp 4-component vector of int) 0:31 Construct combined texture-sampler ( temp isampler1D) 0:31 'g_tTex1di4' ( uniform itexture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.200000 0:31 Constant: 0:31 0.750000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of uint) 0:32 'txval12' ( temp 4-component vector of uint) 0:32 textureLod ( temp 4-component vector of uint) 0:32 Construct combined texture-sampler ( temp usampler1D) 0:32 'g_tTex1du4' ( uniform utexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.300000 0:32 Constant: 0:32 0.750000 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'txval20' ( temp 4-component vector of float) 0:34 textureLod ( temp 4-component vector of float) 0:34 Construct combined texture-sampler ( temp sampler2D) 0:34 'g_tTex2df4' ( uniform texture2D) 0:34 'g_sSamp' (layout( binding=0) uniform sampler) 0:34 Constant: 0:34 0.100000 0:34 0.200000 0:34 Constant: 0:34 0.750000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of int) 0:35 'txval21' ( temp 4-component vector of int) 0:35 textureLod ( temp 4-component vector of int) 0:35 Construct combined texture-sampler ( temp isampler2D) 0:35 'g_tTex2di4' ( uniform itexture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.300000 0:35 0.400000 0:35 Constant: 0:35 0.750000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of uint) 0:36 'txval22' ( temp 4-component vector of uint) 0:36 textureLod ( temp 4-component vector of uint) 0:36 Construct combined texture-sampler ( temp usampler2D) 0:36 'g_tTex2du4' ( uniform utexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.500000 0:36 0.600000 0:36 Constant: 0:36 0.750000 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'txval30' ( temp 4-component vector of float) 0:38 textureLod ( temp 4-component vector of float) 0:38 Construct combined texture-sampler ( temp sampler3D) 0:38 'g_tTex3df4' ( uniform texture3D) 0:38 'g_sSamp' (layout( binding=0) uniform sampler) 0:38 Constant: 0:38 0.100000 0:38 0.200000 0:38 0.300000 0:38 Constant: 0:38 0.750000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of int) 0:39 'txval31' ( temp 4-component vector of int) 0:39 textureLod ( temp 4-component vector of int) 0:39 Construct combined texture-sampler ( temp isampler3D) 0:39 'g_tTex3di4' ( uniform itexture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.400000 0:39 0.500000 0:39 0.600000 0:39 Constant: 0:39 0.750000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of uint) 0:40 'txval32' ( temp 4-component vector of uint) 0:40 textureLod ( temp 4-component vector of uint) 0:40 Construct combined texture-sampler ( temp usampler3D) 0:40 'g_tTex3du4' ( uniform utexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.700000 0:40 0.800000 0:40 0.900000 0:40 Constant: 0:40 0.750000 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'txval40' ( temp 4-component vector of float) 0:42 textureLod ( temp 4-component vector of float) 0:42 Construct combined texture-sampler ( temp samplerCube) 0:42 'g_tTexcdf4' ( uniform textureCube) 0:42 'g_sSamp' (layout( binding=0) uniform sampler) 0:42 Constant: 0:42 0.100000 0:42 0.200000 0:42 0.300000 0:42 Constant: 0:42 0.750000 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 'txval41' ( temp 4-component vector of int) 0:43 textureLod ( temp 4-component vector of int) 0:43 Construct combined texture-sampler ( temp isamplerCube) 0:43 'g_tTexcdi4' ( uniform itextureCube) 0:43 'g_sSamp' (layout( binding=0) uniform sampler) 0:43 Constant: 0:43 0.400000 0:43 0.500000 0:43 0.600000 0:43 Constant: 0:43 0.750000 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of uint) 0:44 'txval42' ( temp 4-component vector of uint) 0:44 textureLod ( temp 4-component vector of uint) 0:44 Construct combined texture-sampler ( temp usamplerCube) 0:44 'g_tTexcdu4' ( uniform utextureCube) 0:44 'g_sSamp' (layout( binding=0) uniform sampler) 0:44 Constant: 0:44 0.700000 0:44 0.800000 0:44 0.900000 0:44 Constant: 0:44 0.750000 0:46 move second child to first child ( temp 4-component vector of float) 0:46 Pos: direct index for structure ( temp 4-component vector of float) 0:46 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:46 0.000000 0:48 Branch: Return with expression 0:48 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:27 Function Definition: main( ( temp void) 0:27 Function Parameters: 0:? Sequence 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:27 Pos: direct index for structure ( temp 4-component vector of float) 0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 162 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 158 Source HLSL 500 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 30 "txval11" Name 33 "g_tTex1di4" Name 43 "txval12" Name 46 "g_tTex1du4" Name 53 "txval20" Name 56 "g_tTex2df4" Name 64 "txval21" Name 67 "g_tTex2di4" Name 75 "txval22" Name 78 "g_tTex2du4" Name 87 "txval30" Name 90 "g_tTex3df4" Name 98 "txval31" Name 101 "g_tTex3di4" Name 108 "txval32" Name 111 "g_tTex3du4" Name 121 "txval40" Name 124 "g_tTexcdf4" Name 130 "txval41" Name 133 "g_tTexcdi4" Name 139 "txval42" Name 142 "g_tTexcdu4" Name 149 "vsout" Name 158 "@entryPointOutput.Pos" Name 161 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4) Binding 2 Decorate 33(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 3 Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 56(g_tTex2df4) Binding 4 Decorate 56(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 5 Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 78(g_tTex2du4) Binding 6 Decorate 78(g_tTex2du4) DescriptorSet 0 Decorate 90(g_tTex3df4) Binding 7 Decorate 90(g_tTex3df4) DescriptorSet 0 Decorate 101(g_tTex3di4) Binding 8 Decorate 101(g_tTex3di4) DescriptorSet 0 Decorate 111(g_tTex3du4) Binding 9 Decorate 111(g_tTex3du4) DescriptorSet 0 Decorate 124(g_tTexcdf4) Binding 10 Decorate 124(g_tTexcdf4) DescriptorSet 0 Decorate 133(g_tTexcdi4) Binding 11 Decorate 133(g_tTexcdi4) DescriptorSet 0 Decorate 142(g_tTexcdu4) Binding 12 Decorate 142(g_tTexcdu4) DescriptorSet 0 Decorate 158(@entryPointOutput.Pos) BuiltIn Position Decorate 161(g_tTex1df4a) Binding 1 Decorate 161(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(VS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1061158912 27: TypeInt 32 1 28: TypeVector 27(int) 4 29: TypePointer Function 28(ivec4) 31: TypeImage 27(int) 1D sampled format:Unknown 32: TypePointer UniformConstant 31 33(g_tTex1di4): 32(ptr) Variable UniformConstant 36: TypeSampledImage 31 38: 6(float) Constant 1045220557 40: TypeInt 32 0 41: TypeVector 40(int) 4 42: TypePointer Function 41(ivec4) 44: TypeImage 40(int) 1D sampled format:Unknown 45: TypePointer UniformConstant 44 46(g_tTex1du4): 45(ptr) Variable UniformConstant 49: TypeSampledImage 44 51: 6(float) Constant 1050253722 54: TypeImage 6(float) 2D sampled format:Unknown 55: TypePointer UniformConstant 54 56(g_tTex2df4): 55(ptr) Variable UniformConstant 59: TypeSampledImage 54 61: TypeVector 6(float) 2 62: 61(fvec2) ConstantComposite 24 38 65: TypeImage 27(int) 2D sampled format:Unknown 66: TypePointer UniformConstant 65 67(g_tTex2di4): 66(ptr) Variable UniformConstant 70: TypeSampledImage 65 72: 6(float) Constant 1053609165 73: 61(fvec2) ConstantComposite 51 72 76: TypeImage 40(int) 2D sampled format:Unknown 77: TypePointer UniformConstant 76 78(g_tTex2du4): 77(ptr) Variable UniformConstant 81: TypeSampledImage 76 83: 6(float) Constant 1056964608 84: 6(float) Constant 1058642330 85: 61(fvec2) ConstantComposite 83 84 88: TypeImage 6(float) 3D sampled format:Unknown 89: TypePointer UniformConstant 88 90(g_tTex3df4): 89(ptr) Variable UniformConstant 93: TypeSampledImage 88 95: TypeVector 6(float) 3 96: 95(fvec3) ConstantComposite 24 38 51 99: TypeImage 27(int) 3D sampled format:Unknown 100: TypePointer UniformConstant 99 101(g_tTex3di4): 100(ptr) Variable UniformConstant 104: TypeSampledImage 99 106: 95(fvec3) ConstantComposite 72 83 84 109: TypeImage 40(int) 3D sampled format:Unknown 110: TypePointer UniformConstant 109 111(g_tTex3du4): 110(ptr) Variable UniformConstant 114: TypeSampledImage 109 116: 6(float) Constant 1060320051 117: 6(float) Constant 1061997773 118: 6(float) Constant 1063675494 119: 95(fvec3) ConstantComposite 116 117 118 122: TypeImage 6(float) Cube sampled format:Unknown 123: TypePointer UniformConstant 122 124(g_tTexcdf4): 123(ptr) Variable UniformConstant 127: TypeSampledImage 122 131: TypeImage 27(int) Cube sampled format:Unknown 132: TypePointer UniformConstant 131 133(g_tTexcdi4): 132(ptr) Variable UniformConstant 136: TypeSampledImage 131 140: TypeImage 40(int) Cube sampled format:Unknown 141: TypePointer UniformConstant 140 142(g_tTexcdu4): 141(ptr) Variable UniformConstant 145: TypeSampledImage 140 148: TypePointer Function 8(VS_OUTPUT) 150: 27(int) Constant 0 151: 6(float) Constant 0 152: 7(fvec4) ConstantComposite 151 151 151 151 157: TypePointer Output 7(fvec4) 158(@entryPointOutput.Pos): 157(ptr) Variable Output 161(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 159:8(VS_OUTPUT) FunctionCall 10(@main() 160: 7(fvec4) CompositeExtract 159 0 Store 158(@entryPointOutput.Pos) 160 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 30(txval11): 29(ptr) Variable Function 43(txval12): 42(ptr) Variable Function 53(txval20): 12(ptr) Variable Function 64(txval21): 29(ptr) Variable Function 75(txval22): 42(ptr) Variable Function 87(txval30): 12(ptr) Variable Function 98(txval31): 29(ptr) Variable Function 108(txval32): 42(ptr) Variable Function 121(txval40): 12(ptr) Variable Function 130(txval41): 29(ptr) Variable Function 139(txval42): 42(ptr) Variable Function 149(vsout): 148(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 26: 7(fvec4) ImageSampleExplicitLod 23 24 Lod 25 Store 13(txval10) 26 34: 31 Load 33(g_tTex1di4) 35: 18 Load 20(g_sSamp) 37: 36 SampledImage 34 35 39: 28(ivec4) ImageSampleExplicitLod 37 38 Lod 25 Store 30(txval11) 39 47: 44 Load 46(g_tTex1du4) 48: 18 Load 20(g_sSamp) 50: 49 SampledImage 47 48 52: 41(ivec4) ImageSampleExplicitLod 50 51 Lod 25 Store 43(txval12) 52 57: 54 Load 56(g_tTex2df4) 58: 18 Load 20(g_sSamp) 60: 59 SampledImage 57 58 63: 7(fvec4) ImageSampleExplicitLod 60 62 Lod 25 Store 53(txval20) 63 68: 65 Load 67(g_tTex2di4) 69: 18 Load 20(g_sSamp) 71: 70 SampledImage 68 69 74: 28(ivec4) ImageSampleExplicitLod 71 73 Lod 25 Store 64(txval21) 74 79: 76 Load 78(g_tTex2du4) 80: 18 Load 20(g_sSamp) 82: 81 SampledImage 79 80 86: 41(ivec4) ImageSampleExplicitLod 82 85 Lod 25 Store 75(txval22) 86 91: 88 Load 90(g_tTex3df4) 92: 18 Load 20(g_sSamp) 94: 93 SampledImage 91 92 97: 7(fvec4) ImageSampleExplicitLod 94 96 Lod 25 Store 87(txval30) 97 102: 99 Load 101(g_tTex3di4) 103: 18 Load 20(g_sSamp) 105: 104 SampledImage 102 103 107: 28(ivec4) ImageSampleExplicitLod 105 106 Lod 25 Store 98(txval31) 107 112: 109 Load 111(g_tTex3du4) 113: 18 Load 20(g_sSamp) 115: 114 SampledImage 112 113 120: 41(ivec4) ImageSampleExplicitLod 115 119 Lod 25 Store 108(txval32) 120 125: 122 Load 124(g_tTexcdf4) 126: 18 Load 20(g_sSamp) 128: 127 SampledImage 125 126 129: 7(fvec4) ImageSampleExplicitLod 128 96 Lod 25 Store 121(txval40) 129 134: 131 Load 133(g_tTexcdi4) 135: 18 Load 20(g_sSamp) 137: 136 SampledImage 134 135 138: 28(ivec4) ImageSampleExplicitLod 137 106 Lod 25 Store 130(txval41) 138 143: 140 Load 142(g_tTexcdu4) 144: 18 Load 20(g_sSamp) 146: 145 SampledImage 143 144 147: 41(ivec4) ImageSampleExplicitLod 146 119 Lod 25 Store 139(txval42) 147 153: 12(ptr) AccessChain 149(vsout) 150 Store 153 152 154:8(VS_OUTPUT) Load 149(vsout) ReturnValue 154 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out000066400000000000000000000761141506534232700254410ustar00rootroot00000000000000hlsl.samplelevel.offset.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureLodOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 0.750000 0:31 Constant: 0:31 1 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureLodOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 0.750000 0:32 Constant: 0:32 1 (const int) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureLodOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 0.750000 0:33 Constant: 0:33 1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureLodOffset ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 0.750000 0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureLodOffset ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 0.750000 0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureLodOffset ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 0.750000 0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureLodOffset ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 0.750000 0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureLodOffset ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 0.750000 0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureLodOffset ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 0.750000 0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp float) 0:46 Depth: direct index for structure ( temp float) 0:46 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'txval10' ( temp 4-component vector of float) 0:31 textureLodOffset ( temp 4-component vector of float) 0:31 Construct combined texture-sampler ( temp sampler1D) 0:31 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:31 'g_sSamp' (layout( binding=0) uniform sampler) 0:31 Constant: 0:31 0.100000 0:31 Constant: 0:31 0.750000 0:31 Constant: 0:31 1 (const int) 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) 0:32 textureLodOffset ( temp 4-component vector of int) 0:32 Construct combined texture-sampler ( temp isampler1D) 0:32 'g_tTex1di4' ( uniform itexture1D) 0:32 'g_sSamp' (layout( binding=0) uniform sampler) 0:32 Constant: 0:32 0.200000 0:32 Constant: 0:32 0.750000 0:32 Constant: 0:32 1 (const int) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) 0:33 textureLodOffset ( temp 4-component vector of uint) 0:33 Construct combined texture-sampler ( temp usampler1D) 0:33 'g_tTex1du4' ( uniform utexture1D) 0:33 'g_sSamp' (layout( binding=0) uniform sampler) 0:33 Constant: 0:33 0.300000 0:33 Constant: 0:33 0.750000 0:33 Constant: 0:33 1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) 0:35 textureLodOffset ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df4' ( uniform texture2D) 0:35 'g_sSamp' (layout( binding=0) uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:35 Constant: 0:35 0.750000 0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) 0:36 textureLodOffset ( temp 4-component vector of int) 0:36 Construct combined texture-sampler ( temp isampler2D) 0:36 'g_tTex2di4' ( uniform itexture2D) 0:36 'g_sSamp' (layout( binding=0) uniform sampler) 0:36 Constant: 0:36 0.300000 0:36 0.400000 0:36 Constant: 0:36 0.750000 0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) 0:37 textureLodOffset ( temp 4-component vector of uint) 0:37 Construct combined texture-sampler ( temp usampler2D) 0:37 'g_tTex2du4' ( uniform utexture2D) 0:37 'g_sSamp' (layout( binding=0) uniform sampler) 0:37 Constant: 0:37 0.500000 0:37 0.600000 0:37 Constant: 0:37 0.750000 0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) 0:39 textureLodOffset ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler3D) 0:39 'g_tTex3df4' ( uniform texture3D) 0:39 'g_sSamp' (layout( binding=0) uniform sampler) 0:39 Constant: 0:39 0.100000 0:39 0.200000 0:39 0.300000 0:39 Constant: 0:39 0.750000 0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) 0:40 textureLodOffset ( temp 4-component vector of int) 0:40 Construct combined texture-sampler ( temp isampler3D) 0:40 'g_tTex3di4' ( uniform itexture3D) 0:40 'g_sSamp' (layout( binding=0) uniform sampler) 0:40 Constant: 0:40 0.400000 0:40 0.500000 0:40 0.600000 0:40 Constant: 0:40 0.750000 0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) 0:41 textureLodOffset ( temp 4-component vector of uint) 0:41 Construct combined texture-sampler ( temp usampler3D) 0:41 'g_tTex3du4' ( uniform utexture3D) 0:41 'g_sSamp' (layout( binding=0) uniform sampler) 0:41 Constant: 0:41 0.700000 0:41 0.800000 0:41 0.900000 0:41 Constant: 0:41 0.750000 0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:45 1.000000 0:46 move second child to first child ( temp float) 0:46 Depth: direct index for structure ( temp float) 0:46 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 0:48 Branch: Return with expression 0:48 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Definition: main( ( temp void) 0:28 Function Parameters: 0:? Sequence 0:28 Sequence 0:28 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:28 Color: direct index for structure ( temp 4-component vector of float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 0 (const int) 0:28 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:28 Depth: direct index for structure ( temp float) 0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:28 Constant: 0:28 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1D) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTexcdf4' ( uniform textureCube) 0:? 'g_tTexcdi4' ( uniform itextureCube) 0:? 'g_tTexcdu4' ( uniform utextureCube) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 162 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 145 149 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 31 "txval11" Name 34 "g_tTex1di4" Name 44 "txval12" Name 47 "g_tTex1du4" Name 54 "txval20" Name 57 "g_tTex2df4" Name 68 "txval21" Name 71 "g_tTex2di4" Name 80 "txval22" Name 83 "g_tTex2du4" Name 94 "txval30" Name 97 "g_tTex3df4" Name 107 "txval31" Name 110 "g_tTex3di4" Name 118 "txval32" Name 121 "g_tTex3du4" Name 133 "psout" Name 142 "flattenTemp" Name 145 "@entryPointOutput.Color" Name 149 "@entryPointOutput.Depth" Name 152 "g_tTex1df4a" Name 155 "g_tTexcdf4" Name 158 "g_tTexcdi4" Name 161 "g_tTexcdu4" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 2 Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 3 Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 4 Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 71(g_tTex2di4) Binding 5 Decorate 71(g_tTex2di4) DescriptorSet 0 Decorate 83(g_tTex2du4) Binding 6 Decorate 83(g_tTex2du4) DescriptorSet 0 Decorate 97(g_tTex3df4) Binding 7 Decorate 97(g_tTex3df4) DescriptorSet 0 Decorate 110(g_tTex3di4) Binding 8 Decorate 110(g_tTex3di4) DescriptorSet 0 Decorate 121(g_tTex3du4) Binding 9 Decorate 121(g_tTex3du4) DescriptorSet 0 Decorate 145(@entryPointOutput.Color) Location 0 Decorate 149(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 152(g_tTex1df4a) Binding 1 Decorate 152(g_tTex1df4a) DescriptorSet 0 Decorate 155(g_tTexcdf4) Binding 0 Decorate 155(g_tTexcdf4) DescriptorSet 0 Decorate 158(g_tTexcdi4) Binding 0 Decorate 158(g_tTexcdi4) DescriptorSet 0 Decorate 161(g_tTexcdu4) Binding 0 Decorate 161(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 25: 6(float) Constant 1061158912 26: TypeInt 32 1 27: 26(int) Constant 1 29: TypeVector 26(int) 4 30: TypePointer Function 29(ivec4) 32: TypeImage 26(int) 1D sampled format:Unknown 33: TypePointer UniformConstant 32 34(g_tTex1di4): 33(ptr) Variable UniformConstant 37: TypeSampledImage 32 39: 6(float) Constant 1045220557 41: TypeInt 32 0 42: TypeVector 41(int) 4 43: TypePointer Function 42(ivec4) 45: TypeImage 41(int) 1D sampled format:Unknown 46: TypePointer UniformConstant 45 47(g_tTex1du4): 46(ptr) Variable UniformConstant 50: TypeSampledImage 45 52: 6(float) Constant 1050253722 55: TypeImage 6(float) 2D sampled format:Unknown 56: TypePointer UniformConstant 55 57(g_tTex2df4): 56(ptr) Variable UniformConstant 60: TypeSampledImage 55 62: TypeVector 6(float) 2 63: 62(fvec2) ConstantComposite 24 39 64: TypeVector 26(int) 2 65: 26(int) Constant 0 66: 64(ivec2) ConstantComposite 27 65 69: TypeImage 26(int) 2D sampled format:Unknown 70: TypePointer UniformConstant 69 71(g_tTex2di4): 70(ptr) Variable UniformConstant 74: TypeSampledImage 69 76: 6(float) Constant 1053609165 77: 62(fvec2) ConstantComposite 52 76 78: 64(ivec2) ConstantComposite 27 27 81: TypeImage 41(int) 2D sampled format:Unknown 82: TypePointer UniformConstant 81 83(g_tTex2du4): 82(ptr) Variable UniformConstant 86: TypeSampledImage 81 88: 6(float) Constant 1056964608 89: 6(float) Constant 1058642330 90: 62(fvec2) ConstantComposite 88 89 91: 26(int) Constant 4294967295 92: 64(ivec2) ConstantComposite 27 91 95: TypeImage 6(float) 3D sampled format:Unknown 96: TypePointer UniformConstant 95 97(g_tTex3df4): 96(ptr) Variable UniformConstant 100: TypeSampledImage 95 102: TypeVector 6(float) 3 103: 102(fvec3) ConstantComposite 24 39 52 104: TypeVector 26(int) 3 105: 104(ivec3) ConstantComposite 27 65 27 108: TypeImage 26(int) 3D sampled format:Unknown 109: TypePointer UniformConstant 108 110(g_tTex3di4): 109(ptr) Variable UniformConstant 113: TypeSampledImage 108 115: 102(fvec3) ConstantComposite 76 88 89 116: 104(ivec3) ConstantComposite 27 27 27 119: TypeImage 41(int) 3D sampled format:Unknown 120: TypePointer UniformConstant 119 121(g_tTex3du4): 120(ptr) Variable UniformConstant 124: TypeSampledImage 119 126: 6(float) Constant 1060320051 127: 6(float) Constant 1061997773 128: 6(float) Constant 1063675494 129: 102(fvec3) ConstantComposite 126 127 128 130: 104(ivec3) ConstantComposite 27 65 91 132: TypePointer Function 8(PS_OUTPUT) 134: 6(float) Constant 1065353216 135: 7(fvec4) ConstantComposite 134 134 134 134 137: TypePointer Function 6(float) 144: TypePointer Output 7(fvec4) 145(@entryPointOutput.Color): 144(ptr) Variable Output 148: TypePointer Output 6(float) 149(@entryPointOutput.Depth): 148(ptr) Variable Output 152(g_tTex1df4a): 15(ptr) Variable UniformConstant 153: TypeImage 6(float) Cube sampled format:Unknown 154: TypePointer UniformConstant 153 155(g_tTexcdf4): 154(ptr) Variable UniformConstant 156: TypeImage 26(int) Cube sampled format:Unknown 157: TypePointer UniformConstant 156 158(g_tTexcdi4): 157(ptr) Variable UniformConstant 159: TypeImage 41(int) Cube sampled format:Unknown 160: TypePointer UniformConstant 159 161(g_tTexcdu4): 160(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 142(flattenTemp): 132(ptr) Variable Function 143:8(PS_OUTPUT) FunctionCall 10(@main() Store 142(flattenTemp) 143 146: 12(ptr) AccessChain 142(flattenTemp) 65 147: 7(fvec4) Load 146 Store 145(@entryPointOutput.Color) 147 150: 137(ptr) AccessChain 142(flattenTemp) 27 151: 6(float) Load 150 Store 149(@entryPointOutput.Depth) 151 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 31(txval11): 30(ptr) Variable Function 44(txval12): 43(ptr) Variable Function 54(txval20): 12(ptr) Variable Function 68(txval21): 30(ptr) Variable Function 80(txval22): 43(ptr) Variable Function 94(txval30): 12(ptr) Variable Function 107(txval31): 30(ptr) Variable Function 118(txval32): 43(ptr) Variable Function 133(psout): 132(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 28: 7(fvec4) ImageSampleExplicitLod 23 24 Lod ConstOffset 25 27 Store 13(txval10) 28 35: 32 Load 34(g_tTex1di4) 36: 18 Load 20(g_sSamp) 38: 37 SampledImage 35 36 40: 29(ivec4) ImageSampleExplicitLod 38 39 Lod ConstOffset 25 27 Store 31(txval11) 40 48: 45 Load 47(g_tTex1du4) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 53: 42(ivec4) ImageSampleExplicitLod 51 52 Lod ConstOffset 25 27 Store 44(txval12) 53 58: 55 Load 57(g_tTex2df4) 59: 18 Load 20(g_sSamp) 61: 60 SampledImage 58 59 67: 7(fvec4) ImageSampleExplicitLod 61 63 Lod ConstOffset 25 66 Store 54(txval20) 67 72: 69 Load 71(g_tTex2di4) 73: 18 Load 20(g_sSamp) 75: 74 SampledImage 72 73 79: 29(ivec4) ImageSampleExplicitLod 75 77 Lod ConstOffset 25 78 Store 68(txval21) 79 84: 81 Load 83(g_tTex2du4) 85: 18 Load 20(g_sSamp) 87: 86 SampledImage 84 85 93: 42(ivec4) ImageSampleExplicitLod 87 90 Lod ConstOffset 25 92 Store 80(txval22) 93 98: 95 Load 97(g_tTex3df4) 99: 18 Load 20(g_sSamp) 101: 100 SampledImage 98 99 106: 7(fvec4) ImageSampleExplicitLod 101 103 Lod ConstOffset 25 105 Store 94(txval30) 106 111: 108 Load 110(g_tTex3di4) 112: 18 Load 20(g_sSamp) 114: 113 SampledImage 111 112 117: 29(ivec4) ImageSampleExplicitLod 114 115 Lod ConstOffset 25 116 Store 107(txval31) 117 122: 119 Load 121(g_tTex3du4) 123: 18 Load 20(g_sSamp) 125: 124 SampledImage 122 123 131: 42(ivec4) ImageSampleExplicitLod 125 129 Lod ConstOffset 25 130 Store 118(txval32) 131 136: 12(ptr) AccessChain 133(psout) 65 Store 136 135 138: 137(ptr) AccessChain 133(psout) 27 Store 138 134 139:8(PS_OUTPUT) Load 133(psout) ReturnValue 139 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out000066400000000000000000000562401506534232700264760ustar00rootroot00000000000000hlsl.samplelevel.offsetarray.dx10.frag Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'txval10' ( temp 4-component vector of float) 0:23 textureLodOffset ( temp 4-component vector of float) 0:23 Construct combined texture-sampler ( temp sampler1DArray) 0:23 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:23 'g_sSamp' (layout( binding=0) uniform sampler) 0:23 Constant: 0:23 0.100000 0:23 0.200000 0:23 Constant: 0:23 0.750000 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of int) 0:24 'txval11' ( temp 4-component vector of int) 0:24 textureLodOffset ( temp 4-component vector of int) 0:24 Construct combined texture-sampler ( temp isampler1DArray) 0:24 'g_tTex1di4' ( uniform itexture1DArray) 0:24 'g_sSamp' (layout( binding=0) uniform sampler) 0:24 Constant: 0:24 0.200000 0:24 0.300000 0:24 Constant: 0:24 0.750000 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'txval12' ( temp 4-component vector of uint) 0:25 textureLodOffset ( temp 4-component vector of uint) 0:25 Construct combined texture-sampler ( temp usampler1DArray) 0:25 'g_tTex1du4' ( uniform utexture1DArray) 0:25 'g_sSamp' (layout( binding=0) uniform sampler) 0:25 Constant: 0:25 0.300000 0:25 0.400000 0:25 Constant: 0:25 0.750000 0:25 Constant: 0:25 2 (const int) 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval20' ( temp 4-component vector of float) 0:27 textureLodOffset ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler2DArray) 0:27 'g_tTex2df4' ( uniform texture2DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 0.300000 0:27 Constant: 0:27 0.750000 0:27 Constant: 0:27 0 (const int) 0:27 0 (const int) 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval21' ( temp 4-component vector of int) 0:28 textureLodOffset ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler2DArray) 0:28 'g_tTex2di4' ( uniform itexture2DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.300000 0:28 0.400000 0:28 0.500000 0:28 Constant: 0:28 0.750000 0:28 Constant: 0:28 0 (const int) 0:28 0 (const int) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval22' ( temp 4-component vector of uint) 0:29 textureLodOffset ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler2DArray) 0:29 'g_tTex2du4' ( uniform utexture2DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.700000 0:29 Constant: 0:29 0.750000 0:29 Constant: 0:29 0 (const int) 0:29 1 (const int) 0:33 move second child to first child ( temp 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:34 move second child to first child ( temp float) 0:34 Depth: direct index for structure ( temp float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 0:36 Branch: Return with expression 0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:20 Color: direct index for structure ( temp 4-component vector of float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:20 Depth: direct index for structure ( temp float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence 0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'txval10' ( temp 4-component vector of float) 0:23 textureLodOffset ( temp 4-component vector of float) 0:23 Construct combined texture-sampler ( temp sampler1DArray) 0:23 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:23 'g_sSamp' (layout( binding=0) uniform sampler) 0:23 Constant: 0:23 0.100000 0:23 0.200000 0:23 Constant: 0:23 0.750000 0:23 Constant: 0:23 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of int) 0:24 'txval11' ( temp 4-component vector of int) 0:24 textureLodOffset ( temp 4-component vector of int) 0:24 Construct combined texture-sampler ( temp isampler1DArray) 0:24 'g_tTex1di4' ( uniform itexture1DArray) 0:24 'g_sSamp' (layout( binding=0) uniform sampler) 0:24 Constant: 0:24 0.200000 0:24 0.300000 0:24 Constant: 0:24 0.750000 0:24 Constant: 0:24 1 (const int) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'txval12' ( temp 4-component vector of uint) 0:25 textureLodOffset ( temp 4-component vector of uint) 0:25 Construct combined texture-sampler ( temp usampler1DArray) 0:25 'g_tTex1du4' ( uniform utexture1DArray) 0:25 'g_sSamp' (layout( binding=0) uniform sampler) 0:25 Constant: 0:25 0.300000 0:25 0.400000 0:25 Constant: 0:25 0.750000 0:25 Constant: 0:25 2 (const int) 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval20' ( temp 4-component vector of float) 0:27 textureLodOffset ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler2DArray) 0:27 'g_tTex2df4' ( uniform texture2DArray) 0:27 'g_sSamp' (layout( binding=0) uniform sampler) 0:27 Constant: 0:27 0.100000 0:27 0.200000 0:27 0.300000 0:27 Constant: 0:27 0.750000 0:27 Constant: 0:27 0 (const int) 0:27 0 (const int) 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval21' ( temp 4-component vector of int) 0:28 textureLodOffset ( temp 4-component vector of int) 0:28 Construct combined texture-sampler ( temp isampler2DArray) 0:28 'g_tTex2di4' ( uniform itexture2DArray) 0:28 'g_sSamp' (layout( binding=0) uniform sampler) 0:28 Constant: 0:28 0.300000 0:28 0.400000 0:28 0.500000 0:28 Constant: 0:28 0.750000 0:28 Constant: 0:28 0 (const int) 0:28 0 (const int) 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval22' ( temp 4-component vector of uint) 0:29 textureLodOffset ( temp 4-component vector of uint) 0:29 Construct combined texture-sampler ( temp usampler2DArray) 0:29 'g_tTex2du4' ( uniform utexture2DArray) 0:29 'g_sSamp' (layout( binding=0) uniform sampler) 0:29 Constant: 0:29 0.500000 0:29 0.600000 0:29 0.700000 0:29 Constant: 0:29 0.750000 0:29 Constant: 0:29 0 (const int) 0:29 1 (const int) 0:33 move second child to first child ( temp 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:33 1.000000 0:34 move second child to first child ( temp float) 0:34 Depth: direct index for structure ( temp float) 0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 0:36 Branch: Return with expression 0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 Sequence 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:20 Color: direct index for structure ( temp 4-component vector of float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 0 (const int) 0:20 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:20 Depth: direct index for structure ( temp float) 0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:20 Constant: 0:20 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4a' (layout( binding=1) uniform texture1DArray) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DArray) 0:? 'g_tTex1di4' ( uniform itexture1DArray) 0:? 'g_tTex1du4' ( uniform utexture1DArray) 0:? 'g_tTex2df4' ( uniform texture2DArray) 0:? 'g_tTex2di4' ( uniform itexture2DArray) 0:? 'g_tTex2du4' ( uniform utexture2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 119 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 111 115 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "txval10" Name 16 "g_tTex1df4" Name 20 "g_sSamp" Name 34 "txval11" Name 37 "g_tTex1di4" Name 49 "txval12" Name 52 "g_tTex1du4" Name 61 "txval20" Name 64 "g_tTex2df4" Name 74 "txval21" Name 77 "g_tTex2di4" Name 85 "txval22" Name 88 "g_tTex2du4" Name 99 "psout" Name 108 "flattenTemp" Name 111 "@entryPointOutput.Color" Name 115 "@entryPointOutput.Depth" Name 118 "g_tTex1df4a" Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 37(g_tTex1di4) Binding 2 Decorate 37(g_tTex1di4) DescriptorSet 0 Decorate 52(g_tTex1du4) Binding 3 Decorate 52(g_tTex1du4) DescriptorSet 0 Decorate 64(g_tTex2df4) Binding 4 Decorate 64(g_tTex2df4) DescriptorSet 0 Decorate 77(g_tTex2di4) Binding 5 Decorate 77(g_tTex2di4) DescriptorSet 0 Decorate 88(g_tTex2du4) Binding 6 Decorate 88(g_tTex2du4) DescriptorSet 0 Decorate 111(@entryPointOutput.Color) Location 0 Decorate 115(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 118(g_tTex1df4a) Binding 1 Decorate 118(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) 14: TypeImage 6(float) 1D array sampled format:Unknown 15: TypePointer UniformConstant 14 16(g_tTex1df4): 15(ptr) Variable UniformConstant 18: TypeSampler 19: TypePointer UniformConstant 18 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: TypeVector 6(float) 2 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 28: 6(float) Constant 1061158912 29: TypeInt 32 1 30: 29(int) Constant 0 32: TypeVector 29(int) 4 33: TypePointer Function 32(ivec4) 35: TypeImage 29(int) 1D array sampled format:Unknown 36: TypePointer UniformConstant 35 37(g_tTex1di4): 36(ptr) Variable UniformConstant 40: TypeSampledImage 35 42: 6(float) Constant 1050253722 43: 24(fvec2) ConstantComposite 26 42 44: 29(int) Constant 1 46: TypeInt 32 0 47: TypeVector 46(int) 4 48: TypePointer Function 47(ivec4) 50: TypeImage 46(int) 1D array sampled format:Unknown 51: TypePointer UniformConstant 50 52(g_tTex1du4): 51(ptr) Variable UniformConstant 55: TypeSampledImage 50 57: 6(float) Constant 1053609165 58: 24(fvec2) ConstantComposite 42 57 59: 29(int) Constant 2 62: TypeImage 6(float) 2D array sampled format:Unknown 63: TypePointer UniformConstant 62 64(g_tTex2df4): 63(ptr) Variable UniformConstant 67: TypeSampledImage 62 69: TypeVector 6(float) 3 70: 69(fvec3) ConstantComposite 25 26 42 71: TypeVector 29(int) 2 72: 71(ivec2) ConstantComposite 30 30 75: TypeImage 29(int) 2D array sampled format:Unknown 76: TypePointer UniformConstant 75 77(g_tTex2di4): 76(ptr) Variable UniformConstant 80: TypeSampledImage 75 82: 6(float) Constant 1056964608 83: 69(fvec3) ConstantComposite 42 57 82 86: TypeImage 46(int) 2D array sampled format:Unknown 87: TypePointer UniformConstant 86 88(g_tTex2du4): 87(ptr) Variable UniformConstant 91: TypeSampledImage 86 93: 6(float) Constant 1058642330 94: 6(float) Constant 1060320051 95: 69(fvec3) ConstantComposite 82 93 94 96: 71(ivec2) ConstantComposite 30 44 98: TypePointer Function 8(PS_OUTPUT) 100: 6(float) Constant 1065353216 101: 7(fvec4) ConstantComposite 100 100 100 100 103: TypePointer Function 6(float) 110: TypePointer Output 7(fvec4) 111(@entryPointOutput.Color): 110(ptr) Variable Output 114: TypePointer Output 6(float) 115(@entryPointOutput.Depth): 114(ptr) Variable Output 118(g_tTex1df4a): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 108(flattenTemp): 98(ptr) Variable Function 109:8(PS_OUTPUT) FunctionCall 10(@main() Store 108(flattenTemp) 109 112: 12(ptr) AccessChain 108(flattenTemp) 30 113: 7(fvec4) Load 112 Store 111(@entryPointOutput.Color) 113 116: 103(ptr) AccessChain 108(flattenTemp) 44 117: 6(float) Load 116 Store 115(@entryPointOutput.Depth) 117 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(txval10): 12(ptr) Variable Function 34(txval11): 33(ptr) Variable Function 49(txval12): 48(ptr) Variable Function 61(txval20): 12(ptr) Variable Function 74(txval21): 33(ptr) Variable Function 85(txval22): 48(ptr) Variable Function 99(psout): 98(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 31: 7(fvec4) ImageSampleExplicitLod 23 27 Lod ConstOffset 28 30 Store 13(txval10) 31 38: 35 Load 37(g_tTex1di4) 39: 18 Load 20(g_sSamp) 41: 40 SampledImage 38 39 45: 32(ivec4) ImageSampleExplicitLod 41 43 Lod ConstOffset 28 44 Store 34(txval11) 45 53: 50 Load 52(g_tTex1du4) 54: 18 Load 20(g_sSamp) 56: 55 SampledImage 53 54 60: 47(ivec4) ImageSampleExplicitLod 56 58 Lod ConstOffset 28 59 Store 49(txval12) 60 65: 62 Load 64(g_tTex2df4) 66: 18 Load 20(g_sSamp) 68: 67 SampledImage 65 66 73: 7(fvec4) ImageSampleExplicitLod 68 70 Lod ConstOffset 28 72 Store 61(txval20) 73 78: 75 Load 77(g_tTex2di4) 79: 18 Load 20(g_sSamp) 81: 80 SampledImage 78 79 84: 32(ivec4) ImageSampleExplicitLod 81 83 Lod ConstOffset 28 72 Store 74(txval21) 84 89: 86 Load 88(g_tTex2du4) 90: 18 Load 20(g_sSamp) 92: 91 SampledImage 89 90 97: 47(ivec4) ImageSampleExplicitLod 92 95 Lod ConstOffset 28 96 Store 85(txval22) 97 102: 12(ptr) AccessChain 99(psout) 30 Store 102 101 104: 103(ptr) AccessChain 99(psout) 44 Store 104 100 105:8(PS_OUTPUT) Load 99(psout) ReturnValue 105 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.scalar-length.frag.out000066400000000000000000000110651506534232700236060ustar00rootroot00000000000000hlsl.scalar-length.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:3 'test' ( temp 4-component vector of float) 0:3 Constant: 0:3 0.000000 0:3 1.000000 0:3 2.000000 0:3 3.000000 0:5 Branch: Return with expression 0:5 Construct vec4 ( temp 4-component vector of float) 0:5 length ( temp float) 0:5 direct index ( temp float) 0:5 'test' ( temp 4-component vector of float) 0:5 Constant: 0:5 3 (const int) 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @main( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:3 'test' ( temp 4-component vector of float) 0:3 Constant: 0:3 0.000000 0:3 1.000000 0:3 2.000000 0:3 3.000000 0:5 Branch: Return with expression 0:5 Construct vec4 ( temp 4-component vector of float) 0:5 length ( temp float) 0:5 direct index ( temp float) 0:5 'test' ( temp 4-component vector of float) 0:5 Constant: 0:5 3 (const int) 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // 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 Fragment 4 "main" 28 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "test" Name 28 "@entryPointOutput" Decorate 28(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 7(fvec4) 13: 6(float) Constant 0 14: 6(float) Constant 1065353216 15: 6(float) Constant 1073741824 16: 6(float) Constant 1077936128 17: 7(fvec4) ConstantComposite 13 14 15 16 18: TypeInt 32 0 19: 18(int) Constant 3 20: TypePointer Function 6(float) 27: TypePointer Output 7(fvec4) 28(@entryPointOutput): 27(ptr) Variable Output 4(main): 2 Function None 3 5: Label 29: 7(fvec4) FunctionCall 9(@main() Store 28(@entryPointOutput) 29 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(test): 11(ptr) Variable Function Store 12(test) 17 21: 20(ptr) AccessChain 12(test) 19 22: 6(float) Load 21 23: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 22 24: 7(fvec4) CompositeConstruct 23 23 23 23 ReturnValue 24 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.scalar2matrix.frag.out000066400000000000000000000427011506534232700236370ustar00rootroot00000000000000hlsl.scalar2matrix.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: Fn1(mf44; ( temp void) 0:2 Function Parameters: 0:2 'p' ( in 4X4 matrix of float) 0:5 Function Definition: @main( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp 4X4 matrix of float) 0:10 'mat1' ( temp 4X4 matrix of float) 0:10 Constant: 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:11 Sequence 0:11 move second child to first child ( temp 4X4 matrix of float) 0:11 'mat2' ( temp 4X4 matrix of float) 0:11 Constant: 0:11 3.000000 0:11 3.100000 0:11 3.200000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:12 Sequence 0:12 move second child to first child ( temp 4X4 matrix of float) 0:12 'mat3' ( temp 4X4 matrix of float) 0:12 Constant: 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:16 move second child to first child ( temp 4X4 matrix of float) 0:16 'mat4' ( temp 4X4 matrix of float) 0:16 Constant: 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:17 move second child to first child ( temp 4X4 matrix of float) 0:17 'mat4' ( temp 4X4 matrix of float) 0:17 Constant: 0:17 4.000000 0:17 4.100000 0:17 4.200000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:18 move second child to first child ( temp 4X4 matrix of float) 0:18 'mat4' ( temp 4X4 matrix of float) 0:18 Constant: 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:20 matrix scale second child into first child ( temp 4X4 matrix of float) 0:20 'mat4' ( temp 4X4 matrix of float) 0:20 Constant: 0:20 0.750000 0:21 add second child into first child ( temp 4X4 matrix of float) 0:21 'mat4' ( temp 4X4 matrix of float) 0:21 Constant: 0:21 0.750000 0:22 subtract second child into first child ( temp 4X4 matrix of float) 0:22 'mat4' ( temp 4X4 matrix of float) 0:22 Constant: 0:22 0.500000 0:23 divide second child into first child ( temp 4X4 matrix of float) 0:23 'mat4' ( temp 4X4 matrix of float) 0:23 Constant: 0:23 2.000000 0:25 Function Call: Fn1(mf44; ( temp void) 0:25 Constant: 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:27 Branch: Return with expression 0:27 add ( temp 4-component vector of float) 0:27 add ( temp 4-component vector of float) 0:27 Constant: 0:27 0.300000 0:27 0.300000 0:27 0.300000 0:27 0.300000 0:27 direct index ( temp 4-component vector of float) 0:27 'mat1' ( temp 4X4 matrix of float) 0:27 Constant: 0:27 1 (const int) 0:27 direct index ( temp 4-component vector of float) 0:27 'mat4' ( temp 4X4 matrix of float) 0:27 Constant: 0:27 2 (const int) 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:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:5 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: Fn1(mf44; ( temp void) 0:2 Function Parameters: 0:2 'p' ( in 4X4 matrix of float) 0:5 Function Definition: @main( ( temp 4-component vector of float) 0:5 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp 4X4 matrix of float) 0:10 'mat1' ( temp 4X4 matrix of float) 0:10 Constant: 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:10 0.250000 0:11 Sequence 0:11 move second child to first child ( temp 4X4 matrix of float) 0:11 'mat2' ( temp 4X4 matrix of float) 0:11 Constant: 0:11 3.000000 0:11 3.100000 0:11 3.200000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:12 Sequence 0:12 move second child to first child ( temp 4X4 matrix of float) 0:12 'mat3' ( temp 4X4 matrix of float) 0:12 Constant: 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:12 0.375000 0:16 move second child to first child ( temp 4X4 matrix of float) 0:16 'mat4' ( temp 4X4 matrix of float) 0:16 Constant: 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:16 0.750000 0:17 move second child to first child ( temp 4X4 matrix of float) 0:17 'mat4' ( temp 4X4 matrix of float) 0:17 Constant: 0:17 4.000000 0:17 4.100000 0:17 4.200000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:17 0.000000 0:18 move second child to first child ( temp 4X4 matrix of float) 0:18 'mat4' ( temp 4X4 matrix of float) 0:18 Constant: 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:18 0.500000 0:20 matrix scale second child into first child ( temp 4X4 matrix of float) 0:20 'mat4' ( temp 4X4 matrix of float) 0:20 Constant: 0:20 0.750000 0:21 add second child into first child ( temp 4X4 matrix of float) 0:21 'mat4' ( temp 4X4 matrix of float) 0:21 Constant: 0:21 0.750000 0:22 subtract second child into first child ( temp 4X4 matrix of float) 0:22 'mat4' ( temp 4X4 matrix of float) 0:22 Constant: 0:22 0.500000 0:23 divide second child into first child ( temp 4X4 matrix of float) 0:23 'mat4' ( temp 4X4 matrix of float) 0:23 Constant: 0:23 2.000000 0:25 Function Call: Fn1(mf44; ( temp void) 0:25 Constant: 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:25 5.000000 0:27 Branch: Return with expression 0:27 add ( temp 4-component vector of float) 0:27 add ( temp 4-component vector of float) 0:27 Constant: 0:27 0.300000 0:27 0.300000 0:27 0.300000 0:27 0.300000 0:27 direct index ( temp 4-component vector of float) 0:27 'mat1' ( temp 4X4 matrix of float) 0:27 Constant: 0:27 1 (const int) 0:27 direct index ( temp 4-component vector of float) 0:27 'mat4' ( temp 4X4 matrix of float) 0:27 Constant: 0:27 2 (const int) 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:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:5 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 96 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 94 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "Fn1(mf44;" Name 11 "p" Name 15 "@main(" Name 17 "mat1" Name 21 "mat2" Name 29 "mat3" Name 33 "mat4" Name 77 "param" Name 94 "@entryPointOutput" Decorate 94(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeMatrix 7(fvec4) 4 9: TypePointer Function 8 10: TypeFunction 2 9(ptr) 14: TypeFunction 7(fvec4) 18: 6(float) Constant 1048576000 19: 7(fvec4) ConstantComposite 18 18 18 18 20: 8 ConstantComposite 19 19 19 19 22: 6(float) Constant 1077936128 23: 6(float) Constant 1078355558 24: 6(float) Constant 1078774989 25: 6(float) Constant 0 26: 7(fvec4) ConstantComposite 22 23 24 25 27: 7(fvec4) ConstantComposite 25 25 25 25 28: 8 ConstantComposite 26 27 27 27 30: 6(float) Constant 1052770304 31: 7(fvec4) ConstantComposite 30 30 30 30 32: 8 ConstantComposite 31 31 31 31 34: 6(float) Constant 1061158912 35: 7(fvec4) ConstantComposite 34 34 34 34 36: 8 ConstantComposite 35 35 35 35 37: 6(float) Constant 1082130432 38: 6(float) Constant 1082340147 39: 6(float) Constant 1082549862 40: 7(fvec4) ConstantComposite 37 38 39 25 41: 8 ConstantComposite 40 27 27 27 42: 6(float) Constant 1056964608 43: 7(fvec4) ConstantComposite 42 42 42 42 44: 8 ConstantComposite 43 43 43 43 69: 6(float) Constant 1073741824 71: 6(float) Constant 1065353216 74: 6(float) Constant 1084227584 75: 7(fvec4) ConstantComposite 74 74 74 74 76: 8 ConstantComposite 75 75 75 75 79: 6(float) Constant 1050253722 80: 7(fvec4) ConstantComposite 79 79 79 79 81: TypeInt 32 1 82: 81(int) Constant 1 83: TypePointer Function 7(fvec4) 87: 81(int) Constant 2 93: TypePointer Output 7(fvec4) 94(@entryPointOutput): 93(ptr) Variable Output 4(main): 2 Function None 3 5: Label 95: 7(fvec4) FunctionCall 15(@main() Store 94(@entryPointOutput) 95 Return FunctionEnd 12(Fn1(mf44;): 2 Function None 10 11(p): 9(ptr) FunctionParameter 13: Label Return FunctionEnd 15(@main(): 7(fvec4) Function None 14 16: Label 17(mat1): 9(ptr) Variable Function 21(mat2): 9(ptr) Variable Function 29(mat3): 9(ptr) Variable Function 33(mat4): 9(ptr) Variable Function 77(param): 9(ptr) Variable Function Store 17(mat1) 20 Store 21(mat2) 28 Store 29(mat3) 32 Store 33(mat4) 36 Store 33(mat4) 41 Store 33(mat4) 44 45: 8 Load 33(mat4) 46: 8 MatrixTimesScalar 45 34 Store 33(mat4) 46 47: 8 Load 33(mat4) 48: 7(fvec4) CompositeConstruct 34 34 34 34 49: 7(fvec4) CompositeExtract 47 0 50: 7(fvec4) FAdd 49 48 51: 7(fvec4) CompositeExtract 47 1 52: 7(fvec4) FAdd 51 48 53: 7(fvec4) CompositeExtract 47 2 54: 7(fvec4) FAdd 53 48 55: 7(fvec4) CompositeExtract 47 3 56: 7(fvec4) FAdd 55 48 57: 8 CompositeConstruct 50 52 54 56 Store 33(mat4) 57 58: 8 Load 33(mat4) 59: 7(fvec4) CompositeConstruct 42 42 42 42 60: 7(fvec4) CompositeExtract 58 0 61: 7(fvec4) FSub 60 59 62: 7(fvec4) CompositeExtract 58 1 63: 7(fvec4) FSub 62 59 64: 7(fvec4) CompositeExtract 58 2 65: 7(fvec4) FSub 64 59 66: 7(fvec4) CompositeExtract 58 3 67: 7(fvec4) FSub 66 59 68: 8 CompositeConstruct 61 63 65 67 Store 33(mat4) 68 70: 8 Load 33(mat4) 72: 6(float) FDiv 71 69 73: 8 MatrixTimesScalar 70 72 Store 33(mat4) 73 Store 77(param) 76 78: 2 FunctionCall 12(Fn1(mf44;) 77(param) 84: 83(ptr) AccessChain 17(mat1) 82 85: 7(fvec4) Load 84 86: 7(fvec4) FAdd 80 85 88: 83(ptr) AccessChain 33(mat4) 87 89: 7(fvec4) Load 88 90: 7(fvec4) FAdd 86 89 ReturnValue 90 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.scalarCast.vert.out000066400000000000000000000631011506534232700232010ustar00rootroot00000000000000hlsl.scalarCast.vert Shader version: 500 0:? Sequence 0:5 Function Definition: r0( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:5 Function Parameters: 0:? Sequence 0:7 Branch: Return with expression 0:7 Constant: 0:7 2.000000 0:7 2.000000 0:7 2.000000 0:7 2.000000 0:7 2.000000 0:7 2.000000 0:9 Function Definition: r1( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:9 Function Parameters: 0:? Sequence 0:11 Branch: Return with expression 0:11 Constant: 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:13 Function Definition: r2( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:13 Function Parameters: 0:? Sequence 0:15 Branch: Return with expression 0:15 Constant: 0:15 0.909297 0:15 0.909297 0:15 0.909297 0:15 0.909297 0:15 0.909297 0:15 0.909297 0:17 Function Definition: r3( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:17 Function Parameters: 0:? Sequence 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'f' ( temp float) 0:18 Constant: 0:18 2.000000 0:19 Branch: Return with expression 0:19 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:19 Construct vec4 ( temp 4-component vector of float) 0:19 'f' ( temp float) 0:19 'f' ( temp float) 0:19 'f' ( temp float) 0:19 'f' ( temp float) 0:19 Construct vec2 ( temp 2-component vector of float) 0:19 'f' ( temp float) 0:19 'f' ( temp float) 0:21 Function Definition: r4( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:21 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'f' ( temp float) 0:22 Constant: 0:22 2.000000 0:23 Branch: Return with expression 0:23 Comma ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:23 move second child to first child ( temp float) 0:23 'scalarCopy' ( temp float) 0:23 add ( temp float) 0:23 'f' ( temp float) 0:23 Constant: 0:23 1.000000 0:23 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:23 Construct vec4 ( temp 4-component vector of float) 0:23 'scalarCopy' ( temp float) 0:23 'scalarCopy' ( temp float) 0:23 'scalarCopy' ( temp float) 0:23 'scalarCopy' ( temp float) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 'scalarCopy' ( temp float) 0:23 'scalarCopy' ( temp float) 0:25 Function Definition: r5( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:25 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'f' ( temp float) 0:26 Constant: 0:26 2.000000 0:27 Branch: Return with expression 0:27 Comma ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:27 move second child to first child ( temp float) 0:27 'scalarCopy' ( temp float) 0:27 sine ( temp float) 0:27 'f' ( temp float) 0:27 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 'scalarCopy' ( temp float) 0:27 'scalarCopy' ( temp float) 0:27 'scalarCopy' ( temp float) 0:27 'scalarCopy' ( temp float) 0:27 Construct vec2 ( temp 2-component vector of float) 0:27 'scalarCopy' ( temp float) 0:27 'scalarCopy' ( temp float) 0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:30 'v0' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:30 Function Call: r0( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:31 Sequence 0:31 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:31 'v1' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:31 Function Call: r1( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:32 Sequence 0:32 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:32 'v2' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:32 Function Call: r2( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:33 Sequence 0:33 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:33 'v3' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:33 Function Call: r3( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:34 Sequence 0:34 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:34 'v4' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:34 Function Call: r4( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:35 Sequence 0:35 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:35 'v5' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:35 Function Call: r5( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:36 Branch: Return with expression 0:36 Constant: 0:36 1.000000 0:36 1.000000 0:36 1.000000 0:36 1.000000 0:36 1.000000 0:36 1.000000 0:29 Function Definition: main( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:29 Sequence 0:29 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.position' ( out 4-component vector of float Position) 0:29 position: direct index for structure ( temp 4-component vector of float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 Constant: 0:29 0 (const int) 0:29 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float) 0:29 texCoord: direct index for structure ( temp 2-component vector of float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 Constant: 0:29 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.position' ( out 4-component vector of float Position) 0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:5 Function Definition: r0( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:5 Function Parameters: 0:? Sequence 0:7 Branch: Return with expression 0:7 Constant: 0:7 2.000000 0:7 2.000000 0:7 2.000000 0:7 2.000000 0:7 2.000000 0:7 2.000000 0:9 Function Definition: r1( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:9 Function Parameters: 0:? Sequence 0:11 Branch: Return with expression 0:11 Constant: 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:11 3.000000 0:13 Function Definition: r2( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:13 Function Parameters: 0:? Sequence 0:15 Branch: Return with expression 0:15 Constant: 0:15 0.909297 0:15 0.909297 0:15 0.909297 0:15 0.909297 0:15 0.909297 0:15 0.909297 0:17 Function Definition: r3( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:17 Function Parameters: 0:? Sequence 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'f' ( temp float) 0:18 Constant: 0:18 2.000000 0:19 Branch: Return with expression 0:19 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:19 Construct vec4 ( temp 4-component vector of float) 0:19 'f' ( temp float) 0:19 'f' ( temp float) 0:19 'f' ( temp float) 0:19 'f' ( temp float) 0:19 Construct vec2 ( temp 2-component vector of float) 0:19 'f' ( temp float) 0:19 'f' ( temp float) 0:21 Function Definition: r4( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:21 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'f' ( temp float) 0:22 Constant: 0:22 2.000000 0:23 Branch: Return with expression 0:23 Comma ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:23 move second child to first child ( temp float) 0:23 'scalarCopy' ( temp float) 0:23 add ( temp float) 0:23 'f' ( temp float) 0:23 Constant: 0:23 1.000000 0:23 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:23 Construct vec4 ( temp 4-component vector of float) 0:23 'scalarCopy' ( temp float) 0:23 'scalarCopy' ( temp float) 0:23 'scalarCopy' ( temp float) 0:23 'scalarCopy' ( temp float) 0:23 Construct vec2 ( temp 2-component vector of float) 0:23 'scalarCopy' ( temp float) 0:23 'scalarCopy' ( temp float) 0:25 Function Definition: r5( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:25 Function Parameters: 0:? Sequence 0:26 Sequence 0:26 move second child to first child ( temp float) 0:26 'f' ( temp float) 0:26 Constant: 0:26 2.000000 0:27 Branch: Return with expression 0:27 Comma ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:27 move second child to first child ( temp float) 0:27 'scalarCopy' ( temp float) 0:27 sine ( temp float) 0:27 'f' ( temp float) 0:27 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 'scalarCopy' ( temp float) 0:27 'scalarCopy' ( temp float) 0:27 'scalarCopy' ( temp float) 0:27 'scalarCopy' ( temp float) 0:27 Construct vec2 ( temp 2-component vector of float) 0:27 'scalarCopy' ( temp float) 0:27 'scalarCopy' ( temp float) 0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 Function Parameters: 0:? Sequence 0:30 Sequence 0:30 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:30 'v0' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:30 Function Call: r0( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:31 Sequence 0:31 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:31 'v1' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:31 Function Call: r1( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:32 Sequence 0:32 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:32 'v2' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:32 Function Call: r2( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:33 Sequence 0:33 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:33 'v3' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:33 Function Call: r3( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:34 Sequence 0:34 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:34 'v4' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:34 Function Call: r4( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:35 Sequence 0:35 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:35 'v5' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:35 Function Call: r5( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:36 Branch: Return with expression 0:36 Constant: 0:36 1.000000 0:36 1.000000 0:36 1.000000 0:36 1.000000 0:36 1.000000 0:36 1.000000 0:29 Function Definition: main( ( temp void) 0:29 Function Parameters: 0:? Sequence 0:29 Sequence 0:29 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.position' ( out 4-component vector of float Position) 0:29 position: direct index for structure ( temp 4-component vector of float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 Constant: 0:29 0 (const int) 0:29 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float) 0:29 texCoord: direct index for structure ( temp 2-component vector of float) 0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord}) 0:29 Constant: 0:29 1 (const int) 0:? Linker Objects 0:? '@entryPointOutput.position' ( out 4-component vector of float Position) 0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 108 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 96 103 Source HLSL 500 Name 4 "main" Name 9 "VertexOut" MemberName 9(VertexOut) 0 "position" MemberName 9(VertexOut) 1 "texCoord" Name 11 "r0(" Name 13 "r1(" Name 15 "r2(" Name 17 "r3(" Name 19 "r4(" Name 21 "r5(" Name 23 "@main(" Name 44 "f" Name 52 "f" Name 53 "scalarCopy" Name 64 "f" Name 65 "scalarCopy" Name 76 "v0" Name 78 "v1" Name 80 "v2" Name 82 "v3" Name 84 "v4" Name 86 "v5" Name 93 "flattenTemp" Name 96 "@entryPointOutput.position" Name 103 "@entryPointOutput.texCoord" Decorate 96(@entryPointOutput.position) BuiltIn Position Decorate 103(@entryPointOutput.texCoord) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 2 9(VertexOut): TypeStruct 7(fvec4) 8(fvec2) 10: TypeFunction 9(VertexOut) 25: 6(float) Constant 1073741824 26: 7(fvec4) ConstantComposite 25 25 25 25 27: 8(fvec2) ConstantComposite 25 25 28:9(VertexOut) ConstantComposite 26 27 31: 6(float) Constant 1077936128 32: 7(fvec4) ConstantComposite 31 31 31 31 33: 8(fvec2) ConstantComposite 31 31 34:9(VertexOut) ConstantComposite 32 33 37: 6(float) Constant 1063831479 38: 7(fvec4) ConstantComposite 37 37 37 37 39: 8(fvec2) ConstantComposite 37 37 40:9(VertexOut) ConstantComposite 38 39 43: TypePointer Function 6(float) 55: 6(float) Constant 1065353216 75: TypePointer Function 9(VertexOut) 88: 7(fvec4) ConstantComposite 55 55 55 55 89: 8(fvec2) ConstantComposite 55 55 90:9(VertexOut) ConstantComposite 88 89 95: TypePointer Output 7(fvec4) 96(@entryPointOutput.position): 95(ptr) Variable Output 97: TypeInt 32 1 98: 97(int) Constant 0 99: TypePointer Function 7(fvec4) 102: TypePointer Output 8(fvec2) 103(@entryPointOutput.texCoord): 102(ptr) Variable Output 104: 97(int) Constant 1 105: TypePointer Function 8(fvec2) 4(main): 2 Function None 3 5: Label 93(flattenTemp): 75(ptr) Variable Function 94:9(VertexOut) FunctionCall 23(@main() Store 93(flattenTemp) 94 100: 99(ptr) AccessChain 93(flattenTemp) 98 101: 7(fvec4) Load 100 Store 96(@entryPointOutput.position) 101 106: 105(ptr) AccessChain 93(flattenTemp) 104 107: 8(fvec2) Load 106 Store 103(@entryPointOutput.texCoord) 107 Return FunctionEnd 11(r0():9(VertexOut) Function None 10 12: Label ReturnValue 28 FunctionEnd 13(r1():9(VertexOut) Function None 10 14: Label ReturnValue 34 FunctionEnd 15(r2():9(VertexOut) Function None 10 16: Label ReturnValue 40 FunctionEnd 17(r3():9(VertexOut) Function None 10 18: Label 44(f): 43(ptr) Variable Function Store 44(f) 25 45: 6(float) Load 44(f) 46: 7(fvec4) CompositeConstruct 45 45 45 45 47: 6(float) Load 44(f) 48: 8(fvec2) CompositeConstruct 47 47 49:9(VertexOut) CompositeConstruct 46 48 ReturnValue 49 FunctionEnd 19(r4():9(VertexOut) Function None 10 20: Label 52(f): 43(ptr) Variable Function 53(scalarCopy): 43(ptr) Variable Function Store 52(f) 25 54: 6(float) Load 52(f) 56: 6(float) FAdd 54 55 Store 53(scalarCopy) 56 57: 6(float) Load 53(scalarCopy) 58: 7(fvec4) CompositeConstruct 57 57 57 57 59: 6(float) Load 53(scalarCopy) 60: 8(fvec2) CompositeConstruct 59 59 61:9(VertexOut) CompositeConstruct 58 60 ReturnValue 61 FunctionEnd 21(r5():9(VertexOut) Function None 10 22: Label 64(f): 43(ptr) Variable Function 65(scalarCopy): 43(ptr) Variable Function Store 64(f) 25 66: 6(float) Load 64(f) 67: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 66 Store 65(scalarCopy) 67 68: 6(float) Load 65(scalarCopy) 69: 7(fvec4) CompositeConstruct 68 68 68 68 70: 6(float) Load 65(scalarCopy) 71: 8(fvec2) CompositeConstruct 70 70 72:9(VertexOut) CompositeConstruct 69 71 ReturnValue 72 FunctionEnd 23(@main():9(VertexOut) Function None 10 24: Label 76(v0): 75(ptr) Variable Function 78(v1): 75(ptr) Variable Function 80(v2): 75(ptr) Variable Function 82(v3): 75(ptr) Variable Function 84(v4): 75(ptr) Variable Function 86(v5): 75(ptr) Variable Function 77:9(VertexOut) FunctionCall 11(r0() Store 76(v0) 77 79:9(VertexOut) FunctionCall 13(r1() Store 78(v1) 79 81:9(VertexOut) FunctionCall 15(r2() Store 80(v2) 81 83:9(VertexOut) FunctionCall 17(r3() Store 82(v3) 83 85:9(VertexOut) FunctionCall 19(r4() Store 84(v4) 85 87:9(VertexOut) FunctionCall 21(r5() Store 86(v5) 87 ReturnValue 90 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.scope.frag.out000066400000000000000000000166141506534232700222000ustar00rootroot00000000000000hlsl.scope.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4; ( temp void) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:4 'x' ( temp int) 0:? Sequence 0:7 'x' ( temp float) 0:? Sequence 0:10 'x' ( temp bool) 0:? Sequence 0:13 'x' ( temp 3-component vector of float) 0:15 'x' ( temp bool) 0:17 'x' ( temp float) 0:19 'x' ( temp int) 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 Compare Greater Than ( temp bool) 0:21 'x' ( temp int) 0:21 Constant: 0:21 0 (const int) 0:21 true case is null 0:24 Loop with condition tested first 0:24 Loop Condition 0:24 Compare Greater Than ( temp bool) 0:24 'x' ( temp int) 0:24 Constant: 0:24 0 (const int) 0:24 No loop body 0:27 Loop with condition not tested first 0:27 Loop Condition 0:29 Compare Greater Than ( temp bool) 0:29 'x' ( temp int) 0:29 Constant: 0:29 0 (const int) 0:27 No loop body 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 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: @PixelShaderFunction(vf4; ( temp void) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:4 'x' ( temp int) 0:? Sequence 0:7 'x' ( temp float) 0:? Sequence 0:10 'x' ( temp bool) 0:? Sequence 0:13 'x' ( temp 3-component vector of float) 0:15 'x' ( temp bool) 0:17 'x' ( temp float) 0:19 'x' ( temp int) 0:21 Test condition and select ( temp void) 0:21 Condition 0:21 Compare Greater Than ( temp bool) 0:21 'x' ( temp int) 0:21 Constant: 0:21 0 (const int) 0:21 true case is null 0:24 Loop with condition tested first 0:24 Loop Condition 0:24 Compare Greater Than ( temp bool) 0:24 'x' ( temp int) 0:24 Constant: 0:24 0 (const int) 0:24 No loop body 0:27 Loop with condition not tested first 0:27 Loop Condition 0:29 Compare Greater Than ( temp bool) 0:29 'x' ( temp int) 0:29 Constant: 0:29 0 (const int) 0:27 No loop body 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 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 10000 // Generated by (magic number): 8000b // Id's are bound by 49 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 44 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "@PixelShaderFunction(vf4;" Name 10 "input" Name 15 "x" Name 17 "x" Name 20 "x" Name 23 "x" Name 42 "input" Name 44 "input" Name 46 "param" Decorate 44(input) 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: TypeInt 32 1 14: TypePointer Function 13(int) 16: TypePointer Function 6(float) 18: TypeBool 19: TypePointer Function 18(bool) 21: TypeVector 6(float) 3 22: TypePointer Function 21(fvec3) 25: 13(int) Constant 0 43: TypePointer Input 7(fvec4) 44(input): 43(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 42(input): 8(ptr) Variable Function 46(param): 8(ptr) Variable Function 45: 7(fvec4) Load 44(input) Store 42(input) 45 47: 7(fvec4) Load 42(input) Store 46(param) 47 48: 2 FunctionCall 11(@PixelShaderFunction(vf4;) 46(param) Return FunctionEnd 11(@PixelShaderFunction(vf4;): 2 Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 15(x): 14(ptr) Variable Function 17(x): 16(ptr) Variable Function 20(x): 19(ptr) Variable Function 23(x): 22(ptr) Variable Function 24: 13(int) Load 15(x) 26: 18(bool) SGreaterThan 24 25 SelectionMerge 28 None BranchConditional 26 27 28 27: Label Branch 28 28: Label Branch 29 29: Label LoopMerge 31 32 None Branch 33 33: Label 34: 13(int) Load 15(x) 35: 18(bool) SGreaterThan 34 25 BranchConditional 35 30 31 30: Label Branch 32 32: Label Branch 29 31: Label Branch 36 36: Label LoopMerge 38 39 None Branch 37 37: Label Branch 39 39: Label 40: 13(int) Load 15(x) 41: 18(bool) SGreaterThan 40 25 BranchConditional 41 36 38 38: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.self_cast.frag.out000066400000000000000000000122621506534232700230250ustar00rootroot00000000000000hlsl.self_cast.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp structure{}) 0:8 'b' ( temp structure{}) 0:8 'a' ( temp structure{}) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp structure{ temp float f}) 0:13 'b' ( temp structure{ temp float f}) 0:13 'a' ( temp structure{ temp float f}) 0:? Sequence 0:18 Sequence 0:18 move second child to first child ( temp 2-element array of structure{}) 0:18 'b' ( temp 2-element array of structure{}) 0:18 'a' ( temp 2-element array of structure{}) 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp 2-element array of structure{ temp float f}) 0:23 'b' ( temp 2-element array of structure{ temp float f}) 0:23 'a' ( temp 2-element array of structure{ temp float f}) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 Function Call: @main( ( temp void) 0:? Linker Objects Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp structure{}) 0:8 'b' ( temp structure{}) 0:8 'a' ( temp structure{}) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp structure{ temp float f}) 0:13 'b' ( temp structure{ temp float f}) 0:13 'a' ( temp structure{ temp float f}) 0:? Sequence 0:18 Sequence 0:18 move second child to first child ( temp 2-element array of structure{}) 0:18 'b' ( temp 2-element array of structure{}) 0:18 'a' ( temp 2-element array of structure{}) 0:? Sequence 0:23 Sequence 0:23 move second child to first child ( temp 2-element array of structure{ temp float f}) 0:23 'b' ( temp 2-element array of structure{ temp float f}) 0:23 'a' ( temp 2-element array of structure{ temp float f}) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 Function Call: @main( ( temp void) 0:? Linker Objects // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 6 "@main(" Name 8 "Test0" Name 10 "b" Name 11 "a" Name 14 "Test1" MemberName 14(Test1) 0 "f" Name 16 "b" Name 17 "a" Name 23 "b" Name 24 "a" Name 28 "b" Name 29 "a" 2: TypeVoid 3: TypeFunction 2 8(Test0): TypeStruct 9: TypePointer Function 8(Test0) 13: TypeFloat 32 14(Test1): TypeStruct 13(float) 15: TypePointer Function 14(Test1) 19: TypeInt 32 0 20: 19(int) Constant 2 21: TypeArray 8(Test0) 20 22: TypePointer Function 21 26: TypeArray 14(Test1) 20 27: TypePointer Function 26 4(main): 2 Function None 3 5: Label 31: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label 10(b): 9(ptr) Variable Function 11(a): 9(ptr) Variable Function 16(b): 15(ptr) Variable Function 17(a): 15(ptr) Variable Function 23(b): 22(ptr) Variable Function 24(a): 22(ptr) Variable Function 28(b): 27(ptr) Variable Function 29(a): 27(ptr) Variable Function 12: 8(Test0) Load 11(a) Store 10(b) 12 18: 14(Test1) Load 17(a) Store 16(b) 18 25: 21 Load 24(a) Store 23(b) 25 30: 26 Load 29(a) Store 28(b) 30 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.semantic-1.vert.out000066400000000000000000000572261506534232700230750ustar00rootroot00000000000000hlsl.semantic-1.vert Shader version: 500 0:? Sequence 0:16 Function Definition: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Function Parameters: 0:16 'v' ( in 4-component vector of float) 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 pos: direct index for structure ( temp 4-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:18 Constant: 0:18 0 (const int) 0:18 'v' ( in 4-component vector of float) 0:19 move second child to first child ( temp 2-component vector of float) 0:19 UV0: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:19 Constant: 0:19 1 (const int) 0:19 Construct vec2 ( temp 2-component vector of float) 0:19 direct index ( temp float) 0:19 'v' ( in 4-component vector of float) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp float) 0:19 'v' ( in 4-component vector of float) 0:19 Constant: 0:19 0 (const int) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 UV1: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:20 Constant: 0:20 2 (const int) 0:20 Construct vec2 ( temp 2-component vector of float) 0:20 direct index ( temp float) 0:20 'v' ( in 4-component vector of float) 0:20 Constant: 0:20 1 (const int) 0:20 direct index ( temp float) 0:20 'v' ( in 4-component vector of float) 0:20 Constant: 0:20 1 (const int) 0:21 move second child to first child ( temp 2-component vector of float) 0:21 UV2: direct index for structure ( temp 2-component vector of float) 0:21 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:21 Constant: 0:21 3 (const int) 0:21 Construct vec2 ( temp 2-component vector of float) 0:21 direct index ( temp float) 0:21 'v' ( in 4-component vector of float) 0:21 Constant: 0:21 2 (const int) 0:21 direct index ( temp float) 0:21 'v' ( in 4-component vector of float) 0:21 Constant: 0:21 2 (const int) 0:22 move second child to first child ( temp 2-component vector of float) 0:22 UV3: direct index for structure ( temp 2-component vector of float) 0:22 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:22 Constant: 0:22 4 (const int) 0:22 Construct vec2 ( temp 2-component vector of float) 0:22 direct index ( temp float) 0:22 'v' ( in 4-component vector of float) 0:22 Constant: 0:22 3 (const int) 0:22 direct index ( temp float) 0:22 'v' ( in 4-component vector of float) 0:22 Constant: 0:22 3 (const int) 0:23 Branch: Return with expression 0:23 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? 'v' ( temp 4-component vector of float) 0:? 'v' (layout( location=0) in 4-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Function Call: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:? 'v' ( temp 4-component vector of float) 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:16 pos: direct index for structure ( temp 4-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float) 0:16 UV0: direct index for structure ( temp 2-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float) 0:16 UV1: direct index for structure ( temp 2-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 2 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float) 0:16 UV2: direct index for structure ( temp 2-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 3 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float) 0:16 UV3: direct index for structure ( temp 2-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 4 (const int) 0:? Linker Objects 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float) 0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float) 0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float) 0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float) 0:? 'v' (layout( location=0) in 4-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:16 Function Definition: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Function Parameters: 0:16 'v' ( in 4-component vector of float) 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 pos: direct index for structure ( temp 4-component vector of float) 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:18 Constant: 0:18 0 (const int) 0:18 'v' ( in 4-component vector of float) 0:19 move second child to first child ( temp 2-component vector of float) 0:19 UV0: direct index for structure ( temp 2-component vector of float) 0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:19 Constant: 0:19 1 (const int) 0:19 Construct vec2 ( temp 2-component vector of float) 0:19 direct index ( temp float) 0:19 'v' ( in 4-component vector of float) 0:19 Constant: 0:19 0 (const int) 0:19 direct index ( temp float) 0:19 'v' ( in 4-component vector of float) 0:19 Constant: 0:19 0 (const int) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 UV1: direct index for structure ( temp 2-component vector of float) 0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:20 Constant: 0:20 2 (const int) 0:20 Construct vec2 ( temp 2-component vector of float) 0:20 direct index ( temp float) 0:20 'v' ( in 4-component vector of float) 0:20 Constant: 0:20 1 (const int) 0:20 direct index ( temp float) 0:20 'v' ( in 4-component vector of float) 0:20 Constant: 0:20 1 (const int) 0:21 move second child to first child ( temp 2-component vector of float) 0:21 UV2: direct index for structure ( temp 2-component vector of float) 0:21 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:21 Constant: 0:21 3 (const int) 0:21 Construct vec2 ( temp 2-component vector of float) 0:21 direct index ( temp float) 0:21 'v' ( in 4-component vector of float) 0:21 Constant: 0:21 2 (const int) 0:21 direct index ( temp float) 0:21 'v' ( in 4-component vector of float) 0:21 Constant: 0:21 2 (const int) 0:22 move second child to first child ( temp 2-component vector of float) 0:22 UV3: direct index for structure ( temp 2-component vector of float) 0:22 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:22 Constant: 0:22 4 (const int) 0:22 Construct vec2 ( temp 2-component vector of float) 0:22 direct index ( temp float) 0:22 'v' ( in 4-component vector of float) 0:22 Constant: 0:22 3 (const int) 0:22 direct index ( temp float) 0:22 'v' ( in 4-component vector of float) 0:22 Constant: 0:22 3 (const int) 0:23 Branch: Return with expression 0:23 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? 'v' ( temp 4-component vector of float) 0:? 'v' (layout( location=0) in 4-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Function Call: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:? 'v' ( temp 4-component vector of float) 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:16 pos: direct index for structure ( temp 4-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float) 0:16 UV0: direct index for structure ( temp 2-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float) 0:16 UV1: direct index for structure ( temp 2-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 2 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float) 0:16 UV2: direct index for structure ( temp 2-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 3 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float) 0:16 UV3: direct index for structure ( temp 2-component vector of float) 0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) 0:16 Constant: 0:16 4 (const int) 0:? Linker Objects 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float) 0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float) 0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float) 0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float) 0:? 'v' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 61 68 72 75 78 81 Source HLSL 500 Name 4 "main" Name 10 "S" MemberName 10(S) 0 "pos" MemberName 10(S) 1 "UV0" MemberName 10(S) 2 "UV1" MemberName 10(S) 3 "UV2" MemberName 10(S) 4 "UV3" Name 13 "@main(vf4;" Name 12 "v" Name 16 "s" Name 59 "v" Name 61 "v" Name 63 "flattenTemp" Name 64 "param" Name 68 "@entryPointOutput.pos" Name 72 "@entryPointOutput.UV0" Name 75 "@entryPointOutput.UV1" Name 78 "@entryPointOutput.UV2" Name 81 "@entryPointOutput.UV3" Decorate 61(v) Location 0 Decorate 68(@entryPointOutput.pos) Location 0 Decorate 72(@entryPointOutput.UV0) Location 1 Decorate 75(@entryPointOutput.UV1) Location 2 Decorate 78(@entryPointOutput.UV2) Location 3 Decorate 81(@entryPointOutput.UV3) Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeVector 6(float) 2 10(S): TypeStruct 7(fvec4) 9(fvec2) 9(fvec2) 9(fvec2) 9(fvec2) 11: TypeFunction 10(S) 8(ptr) 15: TypePointer Function 10(S) 17: TypeInt 32 1 18: 17(int) Constant 0 21: 17(int) Constant 1 22: TypeInt 32 0 23: 22(int) Constant 0 24: TypePointer Function 6(float) 30: TypePointer Function 9(fvec2) 32: 17(int) Constant 2 33: 22(int) Constant 1 40: 17(int) Constant 3 41: 22(int) Constant 2 48: 17(int) Constant 4 49: 22(int) Constant 3 60: TypePointer Input 7(fvec4) 61(v): 60(ptr) Variable Input 67: TypePointer Output 7(fvec4) 68(@entryPointOutput.pos): 67(ptr) Variable Output 71: TypePointer Output 9(fvec2) 72(@entryPointOutput.UV0): 71(ptr) Variable Output 75(@entryPointOutput.UV1): 71(ptr) Variable Output 78(@entryPointOutput.UV2): 71(ptr) Variable Output 81(@entryPointOutput.UV3): 71(ptr) Variable Output 4(main): 2 Function None 3 5: Label 59(v): 8(ptr) Variable Function 63(flattenTemp): 15(ptr) Variable Function 64(param): 8(ptr) Variable Function 62: 7(fvec4) Load 61(v) Store 59(v) 62 65: 7(fvec4) Load 59(v) Store 64(param) 65 66: 10(S) FunctionCall 13(@main(vf4;) 64(param) Store 63(flattenTemp) 66 69: 8(ptr) AccessChain 63(flattenTemp) 18 70: 7(fvec4) Load 69 Store 68(@entryPointOutput.pos) 70 73: 30(ptr) AccessChain 63(flattenTemp) 21 74: 9(fvec2) Load 73 Store 72(@entryPointOutput.UV0) 74 76: 30(ptr) AccessChain 63(flattenTemp) 32 77: 9(fvec2) Load 76 Store 75(@entryPointOutput.UV1) 77 79: 30(ptr) AccessChain 63(flattenTemp) 40 80: 9(fvec2) Load 79 Store 78(@entryPointOutput.UV2) 80 82: 30(ptr) AccessChain 63(flattenTemp) 48 83: 9(fvec2) Load 82 Store 81(@entryPointOutput.UV3) 83 Return FunctionEnd 13(@main(vf4;): 10(S) Function None 11 12(v): 8(ptr) FunctionParameter 14: Label 16(s): 15(ptr) Variable Function 19: 7(fvec4) Load 12(v) 20: 8(ptr) AccessChain 16(s) 18 Store 20 19 25: 24(ptr) AccessChain 12(v) 23 26: 6(float) Load 25 27: 24(ptr) AccessChain 12(v) 23 28: 6(float) Load 27 29: 9(fvec2) CompositeConstruct 26 28 31: 30(ptr) AccessChain 16(s) 21 Store 31 29 34: 24(ptr) AccessChain 12(v) 33 35: 6(float) Load 34 36: 24(ptr) AccessChain 12(v) 33 37: 6(float) Load 36 38: 9(fvec2) CompositeConstruct 35 37 39: 30(ptr) AccessChain 16(s) 32 Store 39 38 42: 24(ptr) AccessChain 12(v) 41 43: 6(float) Load 42 44: 24(ptr) AccessChain 12(v) 41 45: 6(float) Load 44 46: 9(fvec2) CompositeConstruct 43 45 47: 30(ptr) AccessChain 16(s) 40 Store 47 46 50: 24(ptr) AccessChain 12(v) 49 51: 6(float) Load 50 52: 24(ptr) AccessChain 12(v) 49 53: 6(float) Load 52 54: 9(fvec2) CompositeConstruct 51 53 55: 30(ptr) AccessChain 16(s) 48 Store 55 54 56: 10(S) Load 16(s) ReturnValue 56 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.semantic.geom.out000066400000000000000000000547511506534232700227060ustar00rootroot00000000000000hlsl.semantic.geom Shader version: 500 invocations = -1 max_vertices = 4 input primitive = triangles output primitive = line_strip 0:? Sequence 0:13 Function Definition: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void) 0:13 Function Parameters: 0:13 'VertexID' ( in 3-element array of uint) 0:13 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:? Sequence 0:15 Sequence 0:15 Sequence 0:15 move second child to first child ( temp float) 0:? 'OutputStream.clip0' ( out float Position) 0:15 clip0: direct index for structure ( temp float) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 0 (const int) 0:? Sequence 0:15 move second child to first child ( temp float) 0:15 direct index ( out float ClipDistance) 0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) 0:15 Constant: 0:15 0 (const int) 0:15 clip0: direct index for structure ( temp float) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 1 (const int) 0:? Sequence 0:15 move second child to first child ( temp float) 0:15 direct index ( out float CullDistance) 0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) 0:15 Constant: 0:15 0 (const int) 0:15 cull0: direct index for structure ( temp float) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 2 (const int) 0:15 move second child to first child ( temp uint) 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:15 vpai: direct index for structure ( temp uint) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 3 (const int) 0:15 move second child to first child ( temp uint) 0:? 'OutputStream.rtai' ( out uint Layer) 0:15 rtai: direct index for structure ( temp uint) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 4 (const int) 0:15 move second child to first child ( temp int) 0:? 'OutputStream.ii' (layout( location=0) out int) 0:15 ii: direct index for structure ( temp int) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 5 (const int) 0:15 EmitVertex ( temp void) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:13 Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:21 Function Definition: notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11; ( temp void) 0:21 Function Parameters: 0:21 'VertexID' ( in 2-element array of uint) 0:21 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:? Sequence 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp float) 0:? 'OutputStream.clip0' ( out float Position) 0:23 clip0: direct index for structure ( temp float) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 0 (const int) 0:? Sequence 0:23 move second child to first child ( temp float) 0:23 direct index ( out float ClipDistance) 0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) 0:23 Constant: 0:23 0 (const int) 0:23 clip0: direct index for structure ( temp float) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 1 (const int) 0:? Sequence 0:23 move second child to first child ( temp float) 0:23 direct index ( out float CullDistance) 0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) 0:23 Constant: 0:23 0 (const int) 0:23 cull0: direct index for structure ( temp float) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 2 (const int) 0:23 move second child to first child ( temp uint) 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:23 vpai: direct index for structure ( temp uint) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 3 (const int) 0:23 move second child to first child ( temp uint) 0:? 'OutputStream.rtai' ( out uint Layer) 0:23 rtai: direct index for structure ( temp uint) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 4 (const int) 0:23 move second child to first child ( temp int) 0:? 'OutputStream.ii' (layout( location=0) out int) 0:23 ii: direct index for structure ( temp int) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 5 (const int) 0:23 EmitVertex ( temp void) 0:? Linker Objects 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.clip0' ( out float Position) 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:? 'OutputStream.rtai' ( out uint Layer) 0:? 'OutputStream.ii' (layout( location=0) out int) 0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) 0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 4 input primitive = triangles output primitive = line_strip 0:? Sequence 0:13 Function Definition: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void) 0:13 Function Parameters: 0:13 'VertexID' ( in 3-element array of uint) 0:13 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:? Sequence 0:15 Sequence 0:15 Sequence 0:15 move second child to first child ( temp float) 0:? 'OutputStream.clip0' ( out float Position) 0:15 clip0: direct index for structure ( temp float) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 0 (const int) 0:? Sequence 0:15 move second child to first child ( temp float) 0:15 direct index ( out float ClipDistance) 0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) 0:15 Constant: 0:15 0 (const int) 0:15 clip0: direct index for structure ( temp float) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 1 (const int) 0:? Sequence 0:15 move second child to first child ( temp float) 0:15 direct index ( out float CullDistance) 0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) 0:15 Constant: 0:15 0 (const int) 0:15 cull0: direct index for structure ( temp float) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 2 (const int) 0:15 move second child to first child ( temp uint) 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:15 vpai: direct index for structure ( temp uint) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 3 (const int) 0:15 move second child to first child ( temp uint) 0:? 'OutputStream.rtai' ( out uint Layer) 0:15 rtai: direct index for structure ( temp uint) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 4 (const int) 0:15 move second child to first child ( temp int) 0:? 'OutputStream.ii' (layout( location=0) out int) 0:15 ii: direct index for structure ( temp int) 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 5 (const int) 0:15 EmitVertex ( temp void) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:13 Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'OutputStream' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:21 Function Definition: notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11; ( temp void) 0:21 Function Parameters: 0:21 'VertexID' ( in 2-element array of uint) 0:21 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:? Sequence 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp float) 0:? 'OutputStream.clip0' ( out float Position) 0:23 clip0: direct index for structure ( temp float) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 0 (const int) 0:? Sequence 0:23 move second child to first child ( temp float) 0:23 direct index ( out float ClipDistance) 0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) 0:23 Constant: 0:23 0 (const int) 0:23 clip0: direct index for structure ( temp float) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 1 (const int) 0:? Sequence 0:23 move second child to first child ( temp float) 0:23 direct index ( out float CullDistance) 0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) 0:23 Constant: 0:23 0 (const int) 0:23 cull0: direct index for structure ( temp float) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 2 (const int) 0:23 move second child to first child ( temp uint) 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:23 vpai: direct index for structure ( temp uint) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 3 (const int) 0:23 move second child to first child ( temp uint) 0:? 'OutputStream.rtai' ( out uint Layer) 0:23 rtai: direct index for structure ( temp uint) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 4 (const int) 0:23 move second child to first child ( temp int) 0:? 'OutputStream.ii' (layout( location=0) out int) 0:23 ii: direct index for structure ( temp int) 0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:23 Constant: 0:23 5 (const int) 0:23 EmitVertex ( temp void) 0:? Linker Objects 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.clip0' ( out float Position) 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:? 'OutputStream.rtai' ( out uint Layer) 0:? 'OutputStream.ii' (layout( location=0) out int) 0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) 0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 88 Capability Geometry Capability ClipDistance Capability CullDistance Capability MultiViewport 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 28 37 42 48 53 58 65 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 4 Source HLSL 500 Name 4 "main" Name 12 "S" MemberName 12(S) 0 "clip0" MemberName 12(S) 1 "clip0" MemberName 12(S) 2 "cull0" MemberName 12(S) 3 "vpai" MemberName 12(S) 4 "rtai" MemberName 12(S) 5 "ii" Name 17 "@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;" Name 15 "VertexID" Name 16 "OutputStream" Name 25 "notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11;" Name 23 "VertexID" Name 24 "OutputStream" Name 28 "OutputStream.clip0" Name 29 "s" Name 37 "OutputStream.clip0" Name 42 "OutputStream.cull0" Name 48 "OutputStream.vpai" Name 53 "OutputStream.rtai" Name 58 "OutputStream.ii" Name 63 "VertexID" Name 65 "VertexID" Name 67 "OutputStream" Name 68 "param" Name 70 "param" Name 73 "s" Decorate 28(OutputStream.clip0) BuiltIn Position Decorate 37(OutputStream.clip0) BuiltIn ClipDistance Decorate 42(OutputStream.cull0) BuiltIn CullDistance Decorate 48(OutputStream.vpai) BuiltIn ViewportIndex Decorate 53(OutputStream.rtai) BuiltIn Layer Decorate 58(OutputStream.ii) Location 0 Decorate 65(VertexID) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 3 8: TypeArray 6(int) 7 9: TypePointer Function 8 10: TypeFloat 32 11: TypeInt 32 1 12(S): TypeStruct 10(float) 10(float) 10(float) 6(int) 6(int) 11(int) 13: TypePointer Function 12(S) 14: TypeFunction 2 9(ptr) 13(ptr) 19: 6(int) Constant 2 20: TypeArray 6(int) 19 21: TypePointer Function 20 22: TypeFunction 2 21(ptr) 13(ptr) 27: TypePointer Output 10(float) 28(OutputStream.clip0): 27(ptr) Variable Output 30: 11(int) Constant 0 31: TypePointer Function 10(float) 34: 6(int) Constant 1 35: TypeArray 10(float) 34 36: TypePointer Output 35 37(OutputStream.clip0): 36(ptr) Variable Output 38: 11(int) Constant 1 42(OutputStream.cull0): 36(ptr) Variable Output 43: 11(int) Constant 2 47: TypePointer Output 6(int) 48(OutputStream.vpai): 47(ptr) Variable Output 49: 11(int) Constant 3 50: TypePointer Function 6(int) 53(OutputStream.rtai): 47(ptr) Variable Output 54: 11(int) Constant 4 57: TypePointer Output 11(int) 58(OutputStream.ii): 57(ptr) Variable Output 59: 11(int) Constant 5 60: TypePointer Function 11(int) 64: TypePointer Input 8 65(VertexID): 64(ptr) Variable Input 4(main): 2 Function None 3 5: Label 63(VertexID): 9(ptr) Variable Function 67(OutputStream): 13(ptr) Variable Function 68(param): 9(ptr) Variable Function 70(param): 13(ptr) Variable Function 66: 8 Load 65(VertexID) Store 63(VertexID) 66 69: 8 Load 63(VertexID) Store 68(param) 69 71: 2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 68(param) 70(param) 72: 12(S) Load 70(param) Store 67(OutputStream) 72 Return FunctionEnd 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 14 15(VertexID): 9(ptr) FunctionParameter 16(OutputStream): 13(ptr) FunctionParameter 18: Label 29(s): 13(ptr) Variable Function 32: 31(ptr) AccessChain 29(s) 30 33: 10(float) Load 32 Store 28(OutputStream.clip0) 33 39: 31(ptr) AccessChain 29(s) 38 40: 10(float) Load 39 41: 27(ptr) AccessChain 37(OutputStream.clip0) 30 Store 41 40 44: 31(ptr) AccessChain 29(s) 43 45: 10(float) Load 44 46: 27(ptr) AccessChain 42(OutputStream.cull0) 30 Store 46 45 51: 50(ptr) AccessChain 29(s) 49 52: 6(int) Load 51 Store 48(OutputStream.vpai) 52 55: 50(ptr) AccessChain 29(s) 54 56: 6(int) Load 55 Store 53(OutputStream.rtai) 56 61: 60(ptr) AccessChain 29(s) 59 62: 11(int) Load 61 Store 58(OutputStream.ii) 62 EmitVertex Return FunctionEnd 25(notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 22 23(VertexID): 21(ptr) FunctionParameter 24(OutputStream): 13(ptr) FunctionParameter 26: Label 73(s): 13(ptr) Variable Function 74: 31(ptr) AccessChain 73(s) 30 75: 10(float) Load 74 Store 28(OutputStream.clip0) 75 76: 31(ptr) AccessChain 73(s) 38 77: 10(float) Load 76 78: 27(ptr) AccessChain 37(OutputStream.clip0) 30 Store 78 77 79: 31(ptr) AccessChain 73(s) 43 80: 10(float) Load 79 81: 27(ptr) AccessChain 42(OutputStream.cull0) 30 Store 81 80 82: 50(ptr) AccessChain 73(s) 49 83: 6(int) Load 82 Store 48(OutputStream.vpai) 83 84: 50(ptr) AccessChain 73(s) 54 85: 6(int) Load 84 Store 53(OutputStream.rtai) 85 86: 60(ptr) AccessChain 73(s) 59 87: 11(int) Load 86 Store 58(OutputStream.ii) 87 EmitVertex Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.semantic.vert.out000066400000000000000000000443141506534232700227310ustar00rootroot00000000000000hlsl.semantic.vert Shader version: 500 0:? Sequence 0:10 Function Definition: @main(struct-S-f1-f1-f1-f1-i11; ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Function Parameters: 0:10 'ins' ( in structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:? Sequence 0:12 Branch: Return with expression 0:12 's' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 clip0: direct index for structure ( temp float) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 0 (const int) 0:? 'ins.clip0' (layout( location=0) in float) 0:10 move second child to first child ( temp float) 0:10 clip1: direct index for structure ( temp float) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 1 (const int) 0:? 'ins.clip1' (layout( location=1) in float) 0:10 move second child to first child ( temp float) 0:10 cull0: direct index for structure ( temp float) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 2 (const int) 0:? 'ins.cull0' (layout( location=0) in float) 0:10 move second child to first child ( temp float) 0:10 cull1: direct index for structure ( temp float) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 3 (const int) 0:? 'ins.cull1' (layout( location=1) in float) 0:10 move second child to first child ( temp int) 0:10 ii: direct index for structure ( temp int) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 4 (const int) 0:? 'ins.ii' ( in int InstanceIndex) 0:10 Sequence 0:10 move second child to first child ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Function Call: @main(struct-S-f1-f1-f1-f1-i11; ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:? Sequence 0:10 move second child to first child ( temp float) 0:10 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:10 Constant: 0:10 0 (const int) 0:10 clip0: direct index for structure ( temp float) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 0 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) 0:10 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:10 Constant: 0:10 1 (const int) 0:10 clip1: direct index for structure ( temp float) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 1 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) 0:10 direct index ( out float CullDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) 0:10 Constant: 0:10 0 (const int) 0:10 cull0: direct index for structure ( temp float) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 2 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) 0:10 direct index ( out float CullDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) 0:10 Constant: 0:10 1 (const int) 0:10 cull1: direct index for structure ( temp float) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 3 (const int) 0:10 move second child to first child ( temp int) 0:? '@entryPointOutput.ii' (layout( location=0) out int) 0:10 ii: direct index for structure ( temp int) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 4 (const int) 0:? Linker Objects 0:? '@entryPointOutput.ii' (layout( location=0) out int) 0:? 'ins.ii' ( in int InstanceIndex) 0:? 'ins.clip0' (layout( location=0) in float) 0:? 'ins.clip1' (layout( location=1) in float) 0:? 'ins.cull0' (layout( location=0) in float) 0:? 'ins.cull1' (layout( location=1) in float) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) Linked vertex stage: Shader version: 500 0:? Sequence 0:10 Function Definition: @main(struct-S-f1-f1-f1-f1-i11; ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Function Parameters: 0:10 'ins' ( in structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:? Sequence 0:12 Branch: Return with expression 0:12 's' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 clip0: direct index for structure ( temp float) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 0 (const int) 0:? 'ins.clip0' (layout( location=0) in float) 0:10 move second child to first child ( temp float) 0:10 clip1: direct index for structure ( temp float) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 1 (const int) 0:? 'ins.clip1' (layout( location=1) in float) 0:10 move second child to first child ( temp float) 0:10 cull0: direct index for structure ( temp float) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 2 (const int) 0:? 'ins.cull0' (layout( location=0) in float) 0:10 move second child to first child ( temp float) 0:10 cull1: direct index for structure ( temp float) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 3 (const int) 0:? 'ins.cull1' (layout( location=1) in float) 0:10 move second child to first child ( temp int) 0:10 ii: direct index for structure ( temp int) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 4 (const int) 0:? 'ins.ii' ( in int InstanceIndex) 0:10 Sequence 0:10 move second child to first child ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Function Call: @main(struct-S-f1-f1-f1-f1-i11; ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:? Sequence 0:10 move second child to first child ( temp float) 0:10 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:10 Constant: 0:10 0 (const int) 0:10 clip0: direct index for structure ( temp float) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 0 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) 0:10 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:10 Constant: 0:10 1 (const int) 0:10 clip1: direct index for structure ( temp float) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 1 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) 0:10 direct index ( out float CullDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) 0:10 Constant: 0:10 0 (const int) 0:10 cull0: direct index for structure ( temp float) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 2 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) 0:10 direct index ( out float CullDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) 0:10 Constant: 0:10 1 (const int) 0:10 cull1: direct index for structure ( temp float) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 3 (const int) 0:10 move second child to first child ( temp int) 0:? '@entryPointOutput.ii' (layout( location=0) out int) 0:10 ii: direct index for structure ( temp int) 0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:10 Constant: 0:10 4 (const int) 0:? Linker Objects 0:? '@entryPointOutput.ii' (layout( location=0) out int) 0:? 'ins.ii' ( in int InstanceIndex) 0:? 'ins.clip0' (layout( location=0) in float) 0:? 'ins.clip1' (layout( location=1) in float) 0:? 'ins.cull0' (layout( location=0) in float) 0:? 'ins.cull1' (layout( location=1) in float) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader Capability ClipDistance Capability CullDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 21 26 30 34 39 51 59 67 Source HLSL 500 Name 4 "main" Name 8 "S" MemberName 8(S) 0 "clip0" MemberName 8(S) 1 "clip1" MemberName 8(S) 2 "cull0" MemberName 8(S) 3 "cull1" MemberName 8(S) 4 "ii" Name 12 "@main(struct-S-f1-f1-f1-f1-i11;" Name 11 "ins" Name 14 "s" Name 18 "ins" Name 21 "ins.clip0" Name 26 "ins.clip1" Name 30 "ins.cull0" Name 34 "ins.cull1" Name 39 "ins.ii" Name 43 "flattenTemp" Name 44 "param" Name 51 "@entryPointOutput.clip1" Name 59 "@entryPointOutput.cull1" Name 67 "@entryPointOutput.ii" Decorate 21(ins.clip0) Location 0 Decorate 26(ins.clip1) Location 1 Decorate 30(ins.cull0) Location 0 Decorate 34(ins.cull1) Location 1 Decorate 39(ins.ii) BuiltIn InstanceIndex Decorate 51(@entryPointOutput.clip1) BuiltIn ClipDistance Decorate 59(@entryPointOutput.cull1) BuiltIn CullDistance Decorate 67(@entryPointOutput.ii) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 1 8(S): TypeStruct 6(float) 6(float) 6(float) 6(float) 7(int) 9: TypePointer Function 8(S) 10: TypeFunction 8(S) 9(ptr) 19: 7(int) Constant 0 20: TypePointer Input 6(float) 21(ins.clip0): 20(ptr) Variable Input 23: TypePointer Function 6(float) 25: 7(int) Constant 1 26(ins.clip1): 20(ptr) Variable Input 29: 7(int) Constant 2 30(ins.cull0): 20(ptr) Variable Input 33: 7(int) Constant 3 34(ins.cull1): 20(ptr) Variable Input 37: 7(int) Constant 4 38: TypePointer Input 7(int) 39(ins.ii): 38(ptr) Variable Input 41: TypePointer Function 7(int) 47: TypeInt 32 0 48: 47(int) Constant 2 49: TypeArray 6(float) 48 50: TypePointer Output 49 51(@entryPointOutput.clip1): 50(ptr) Variable Output 54: TypePointer Output 6(float) 59(@entryPointOutput.cull1): 50(ptr) Variable Output 66: TypePointer Output 7(int) 67(@entryPointOutput.ii): 66(ptr) Variable Output 4(main): 2 Function None 3 5: Label 18(ins): 9(ptr) Variable Function 43(flattenTemp): 9(ptr) Variable Function 44(param): 9(ptr) Variable Function 22: 6(float) Load 21(ins.clip0) 24: 23(ptr) AccessChain 18(ins) 19 Store 24 22 27: 6(float) Load 26(ins.clip1) 28: 23(ptr) AccessChain 18(ins) 25 Store 28 27 31: 6(float) Load 30(ins.cull0) 32: 23(ptr) AccessChain 18(ins) 29 Store 32 31 35: 6(float) Load 34(ins.cull1) 36: 23(ptr) AccessChain 18(ins) 33 Store 36 35 40: 7(int) Load 39(ins.ii) 42: 41(ptr) AccessChain 18(ins) 37 Store 42 40 45: 8(S) Load 18(ins) Store 44(param) 45 46: 8(S) FunctionCall 12(@main(struct-S-f1-f1-f1-f1-i11;) 44(param) Store 43(flattenTemp) 46 52: 23(ptr) AccessChain 43(flattenTemp) 19 53: 6(float) Load 52 55: 54(ptr) AccessChain 51(@entryPointOutput.clip1) 19 Store 55 53 56: 23(ptr) AccessChain 43(flattenTemp) 25 57: 6(float) Load 56 58: 54(ptr) AccessChain 51(@entryPointOutput.clip1) 25 Store 58 57 60: 23(ptr) AccessChain 43(flattenTemp) 29 61: 6(float) Load 60 62: 54(ptr) AccessChain 59(@entryPointOutput.cull1) 19 Store 62 61 63: 23(ptr) AccessChain 43(flattenTemp) 33 64: 6(float) Load 63 65: 54(ptr) AccessChain 59(@entryPointOutput.cull1) 25 Store 65 64 68: 41(ptr) AccessChain 43(flattenTemp) 37 69: 7(int) Load 68 Store 67(@entryPointOutput.ii) 69 Return FunctionEnd 12(@main(struct-S-f1-f1-f1-f1-i11;): 8(S) Function None 10 11(ins): 9(ptr) FunctionParameter 13: Label 14(s): 9(ptr) Variable Function 15: 8(S) Load 14(s) ReturnValue 15 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.semicolons.frag.out000066400000000000000000000132371506534232700232400ustar00rootroot00000000000000hlsl.semicolons.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: MyFunc( ( temp void) 0:2 Function Parameters: 0:8 Function Definition: MyFunc2( ( temp void) 0:8 Function Parameters: 0:13 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:13 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1.000000 0:16 1.000000 0:16 1.000000 0:16 1.000000 0:17 Branch: Return with expression 0:17 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:13 color: direct index for structure ( temp 4-component vector of float) 0:13 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:13 Constant: 0:13 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: MyFunc( ( temp void) 0:2 Function Parameters: 0:8 Function Definition: MyFunc2( ( temp void) 0:8 Function Parameters: 0:13 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) 0:13 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1.000000 0:16 1.000000 0:16 1.000000 0:16 1.000000 0:17 Branch: Return with expression 0:17 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) 0:13 color: direct index for structure ( temp 4-component vector of float) 0:13 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) 0:13 Constant: 0:13 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 28 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 6 "MyFunc(" Name 8 "MyFunc2(" Name 12 "PS_OUTPUT" MemberName 12(PS_OUTPUT) 0 "color" Name 14 "@main(" Name 17 "ps_output" Name 28 "@entryPointOutput.color" Decorate 28(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 11: TypeVector 10(float) 4 12(PS_OUTPUT): TypeStruct 11(fvec4) 13: TypeFunction 12(PS_OUTPUT) 16: TypePointer Function 12(PS_OUTPUT) 18: TypeInt 32 1 19: 18(int) Constant 0 20: 10(float) Constant 1065353216 21: 11(fvec4) ConstantComposite 20 20 20 20 22: TypePointer Function 11(fvec4) 27: TypePointer Output 11(fvec4) 28(@entryPointOutput.color): 27(ptr) Variable Output 4(main): 2 Function None 3 5: Label 29:12(PS_OUTPUT) FunctionCall 14(@main() 30: 11(fvec4) CompositeExtract 29 0 Store 28(@entryPointOutput.color) 30 Return FunctionEnd 6(MyFunc(): 2 Function None 3 7: Label Return FunctionEnd 8(MyFunc2(): 2 Function None 3 9: Label Return FunctionEnd 14(@main():12(PS_OUTPUT) Function None 13 15: Label 17(ps_output): 16(ptr) Variable Function 23: 22(ptr) AccessChain 17(ps_output) 19 Store 23 21 24:12(PS_OUTPUT) Load 17(ps_output) ReturnValue 24 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.shapeConv.frag.out000066400000000000000000000527741506534232700230240ustar00rootroot00000000000000hlsl.shapeConv.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunction(vf4;f1; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:2 'f' ( in float) 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:4 'v' ( temp 4-component vector of float) 0:4 Constant: 0:4 1.000000 0:4 1.000000 0:4 1.000000 0:4 1.000000 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'v' ( temp 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 2.000000 0:5 2.000000 0:5 2.000000 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'v' ( temp 4-component vector of float) 0:6 Construct vec4 ( temp 4-component vector of float) 0:6 'f' ( in float) 0:8 move second child to first child ( temp 3-component vector of float) 0:8 'u' ( temp 3-component vector of float) 0:8 Constant: 0:8 1.000000 0:8 1.000000 0:8 1.000000 0:9 move second child to first child ( temp 3-component vector of float) 0:9 'u' ( temp 3-component vector of float) 0:9 Constant: 0:9 2.000000 0:9 2.000000 0:9 2.000000 0:10 move second child to first child ( temp 3-component vector of float) 0:10 'u' ( temp 3-component vector of float) 0:10 Construct vec3 ( temp 3-component vector of float) 0:10 'f' ( in float) 0:11 Sequence 0:11 move second child to first child ( temp 2-component vector of float) 0:11 'w' ( temp 2-component vector of float) 0:11 Constant: 0:11 2.000000 0:11 2.000000 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'V' ( temp float) 0:12 Constant: 0:12 1.000000 0:13 Sequence 0:13 move second child to first child ( temp 3-component vector of float) 0:13 'MyVal' ( temp 3-component vector of float) 0:13 Construct vec3 ( temp 3-component vector of float) 0:13 'V' ( temp float) 0:16 Compare Greater Than ( temp 3-component vector of bool) 0:16 'foo' ( temp 3-component vector of float) 0:16 Constant: 0:16 4.000000 0:16 4.000000 0:16 4.000000 0:17 Compare Greater Than or Equal ( temp 3-component vector of bool) 0:17 'foo' ( temp 3-component vector of float) 0:17 Constant: 0:17 5.000000 0:17 5.000000 0:17 5.000000 0:18 Compare Less Than ( temp 3-component vector of bool) 0:18 Constant: 0:18 6.000000 0:18 6.000000 0:18 6.000000 0:18 'foo' ( temp 3-component vector of float) 0:19 Compare Less Than or Equal ( temp 3-component vector of bool) 0:19 Constant: 0:19 7.000000 0:19 7.000000 0:19 7.000000 0:19 'foo' ( temp 3-component vector of float) 0:21 all ( temp bool) 0:21 Equal ( temp 4-component vector of bool) 0:21 Construct vec4 ( temp 4-component vector of float) 0:21 direct index ( temp float) 0:21 'v' ( temp 4-component vector of float) 0:21 Constant: 0:21 0 (const int) 0:21 'v' ( temp 4-component vector of float) 0:22 any ( temp bool) 0:22 NotEqual ( temp 4-component vector of bool) 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 'f' ( in float) 0:22 'v' ( temp 4-component vector of float) 0:26 Equal ( temp 4-component vector of bool) 0:26 Construct vec4 ( temp 4-component vector of float) 0:26 'f1' ( temp 1-component vector of float) 0:26 'v' ( temp 4-component vector of float) 0:27 Compare Less Than ( temp 4-component vector of bool) 0:27 'v' ( temp 4-component vector of float) 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 'f1' ( temp 1-component vector of float) 0:28 direct index ( temp float) 0:28 'f1' ( temp 1-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 Construct float ( temp float) 0:29 'f1' ( temp 1-component vector of float) 0:36 right-shift ( temp 3-component vector of uint) 0:36 Construct uvec3 ( temp 3-component vector of uint) 0:36 'ui' ( temp uint) 0:36 'ui3' ( temp 3-component vector of uint) 0:37 right-shift ( temp 3-component vector of uint) 0:37 'ui3' ( temp 3-component vector of uint) 0:37 'ui' ( temp uint) 0:39 multiply second child into first child ( temp 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:39 'f1' ( temp 1-component vector of float) 0:40 multiply second child into first child ( temp 1-component vector of float) 0:40 'f1' ( temp 1-component vector of float) 0:40 Construct float ( temp 1-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:42 Sequence 0:42 move second child to first child ( temp 3-component vector of float) 0:42 'mixed' ( temp 3-component vector of float) 0:42 component-wise multiply ( temp 3-component vector of float) 0:42 'u' ( temp 3-component vector of float) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 'v' ( temp 4-component vector of float) 0:43 move second child to first child ( temp float) 0:43 'f' ( in float) 0:43 Construct float ( in float) 0:43 'u' ( temp 3-component vector of float) 0:44 move second child to first child ( temp 1-component vector of float) 0:44 'f1' ( temp 1-component vector of float) 0:44 Construct float ( temp 1-component vector of float) 0:44 'u' ( temp 3-component vector of float) 0:45 Sequence 0:45 move second child to first child ( temp float) 0:45 'sf' ( temp float) 0:45 Construct float ( temp float) 0:45 'v' ( temp 4-component vector of float) 0:46 Sequence 0:46 move second child to first child ( temp 1-component vector of float) 0:46 'sf1' ( temp 1-component vector of float) 0:46 Construct float ( temp 1-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:48 Branch: Return with expression 0:48 component-wise multiply ( temp 4-component vector of float) 0:48 'input' ( in 4-component vector of float) 0:48 Constant: 0:48 3.000000 0:48 3.000000 0:48 3.000000 0:48 3.000000 0:? Linker Objects Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: PixelShaderFunction(vf4;f1; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:2 'f' ( in float) 0:? Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:4 'v' ( temp 4-component vector of float) 0:4 Constant: 0:4 1.000000 0:4 1.000000 0:4 1.000000 0:4 1.000000 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'v' ( temp 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 2.000000 0:5 2.000000 0:5 2.000000 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'v' ( temp 4-component vector of float) 0:6 Construct vec4 ( temp 4-component vector of float) 0:6 'f' ( in float) 0:8 move second child to first child ( temp 3-component vector of float) 0:8 'u' ( temp 3-component vector of float) 0:8 Constant: 0:8 1.000000 0:8 1.000000 0:8 1.000000 0:9 move second child to first child ( temp 3-component vector of float) 0:9 'u' ( temp 3-component vector of float) 0:9 Constant: 0:9 2.000000 0:9 2.000000 0:9 2.000000 0:10 move second child to first child ( temp 3-component vector of float) 0:10 'u' ( temp 3-component vector of float) 0:10 Construct vec3 ( temp 3-component vector of float) 0:10 'f' ( in float) 0:11 Sequence 0:11 move second child to first child ( temp 2-component vector of float) 0:11 'w' ( temp 2-component vector of float) 0:11 Constant: 0:11 2.000000 0:11 2.000000 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'V' ( temp float) 0:12 Constant: 0:12 1.000000 0:13 Sequence 0:13 move second child to first child ( temp 3-component vector of float) 0:13 'MyVal' ( temp 3-component vector of float) 0:13 Construct vec3 ( temp 3-component vector of float) 0:13 'V' ( temp float) 0:16 Compare Greater Than ( temp 3-component vector of bool) 0:16 'foo' ( temp 3-component vector of float) 0:16 Constant: 0:16 4.000000 0:16 4.000000 0:16 4.000000 0:17 Compare Greater Than or Equal ( temp 3-component vector of bool) 0:17 'foo' ( temp 3-component vector of float) 0:17 Constant: 0:17 5.000000 0:17 5.000000 0:17 5.000000 0:18 Compare Less Than ( temp 3-component vector of bool) 0:18 Constant: 0:18 6.000000 0:18 6.000000 0:18 6.000000 0:18 'foo' ( temp 3-component vector of float) 0:19 Compare Less Than or Equal ( temp 3-component vector of bool) 0:19 Constant: 0:19 7.000000 0:19 7.000000 0:19 7.000000 0:19 'foo' ( temp 3-component vector of float) 0:21 all ( temp bool) 0:21 Equal ( temp 4-component vector of bool) 0:21 Construct vec4 ( temp 4-component vector of float) 0:21 direct index ( temp float) 0:21 'v' ( temp 4-component vector of float) 0:21 Constant: 0:21 0 (const int) 0:21 'v' ( temp 4-component vector of float) 0:22 any ( temp bool) 0:22 NotEqual ( temp 4-component vector of bool) 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 'f' ( in float) 0:22 'v' ( temp 4-component vector of float) 0:26 Equal ( temp 4-component vector of bool) 0:26 Construct vec4 ( temp 4-component vector of float) 0:26 'f1' ( temp 1-component vector of float) 0:26 'v' ( temp 4-component vector of float) 0:27 Compare Less Than ( temp 4-component vector of bool) 0:27 'v' ( temp 4-component vector of float) 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 'f1' ( temp 1-component vector of float) 0:28 direct index ( temp float) 0:28 'f1' ( temp 1-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 Construct float ( temp float) 0:29 'f1' ( temp 1-component vector of float) 0:36 right-shift ( temp 3-component vector of uint) 0:36 Construct uvec3 ( temp 3-component vector of uint) 0:36 'ui' ( temp uint) 0:36 'ui3' ( temp 3-component vector of uint) 0:37 right-shift ( temp 3-component vector of uint) 0:37 'ui3' ( temp 3-component vector of uint) 0:37 'ui' ( temp uint) 0:39 multiply second child into first child ( temp 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:39 'f1' ( temp 1-component vector of float) 0:40 multiply second child into first child ( temp 1-component vector of float) 0:40 'f1' ( temp 1-component vector of float) 0:40 Construct float ( temp 1-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:42 Sequence 0:42 move second child to first child ( temp 3-component vector of float) 0:42 'mixed' ( temp 3-component vector of float) 0:42 component-wise multiply ( temp 3-component vector of float) 0:42 'u' ( temp 3-component vector of float) 0:42 Construct vec3 ( temp 3-component vector of float) 0:42 'v' ( temp 4-component vector of float) 0:43 move second child to first child ( temp float) 0:43 'f' ( in float) 0:43 Construct float ( in float) 0:43 'u' ( temp 3-component vector of float) 0:44 move second child to first child ( temp 1-component vector of float) 0:44 'f1' ( temp 1-component vector of float) 0:44 Construct float ( temp 1-component vector of float) 0:44 'u' ( temp 3-component vector of float) 0:45 Sequence 0:45 move second child to first child ( temp float) 0:45 'sf' ( temp float) 0:45 Construct float ( temp float) 0:45 'v' ( temp 4-component vector of float) 0:46 Sequence 0:46 move second child to first child ( temp 1-component vector of float) 0:46 'sf1' ( temp 1-component vector of float) 0:46 Construct float ( temp 1-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:48 Branch: Return with expression 0:48 component-wise multiply ( temp 4-component vector of float) 0:48 'input' ( in 4-component vector of float) 0:48 Constant: 0:48 3.000000 0:48 3.000000 0:48 3.000000 0:48 3.000000 0:? Linker Objects // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 126 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 13 "PixelShaderFunction(vf4;f1;" Name 11 "input" Name 12 "f" Name 15 "v" Name 24 "u" Name 31 "w" Name 33 "V" Name 34 "MyVal" Name 37 "foo" Name 70 "f1" Name 82 "ui" Name 87 "ui3" Name 102 "mixed" Name 114 "sf" Name 117 "sf1" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypePointer Function 6(float) 10: TypeFunction 7(fvec4) 8(ptr) 9(ptr) 16: 6(float) Constant 1065353216 17: 7(fvec4) ConstantComposite 16 16 16 16 18: 6(float) Constant 1073741824 19: 7(fvec4) ConstantComposite 18 18 18 18 22: TypeVector 6(float) 3 23: TypePointer Function 22(fvec3) 25: 22(fvec3) ConstantComposite 16 16 16 26: 22(fvec3) ConstantComposite 18 18 18 29: TypeVector 6(float) 2 30: TypePointer Function 29(fvec2) 32: 29(fvec2) ConstantComposite 18 18 39: 6(float) Constant 1082130432 40: 22(fvec3) ConstantComposite 39 39 39 41: TypeBool 42: TypeVector 41(bool) 3 45: 6(float) Constant 1084227584 46: 22(fvec3) ConstantComposite 45 45 45 48: 6(float) Constant 1086324736 49: 22(fvec3) ConstantComposite 48 48 48 52: 6(float) Constant 1088421888 53: 22(fvec3) ConstantComposite 52 52 52 56: TypeInt 32 0 57: 56(int) Constant 0 62: TypeVector 41(bool) 4 81: TypePointer Function 56(int) 84: TypeVector 56(int) 3 86: TypePointer Function 84(ivec3) 121: 6(float) Constant 1077936128 122: 7(fvec4) ConstantComposite 121 121 121 121 4(main): 2 Function None 3 5: Label Return FunctionEnd 13(PixelShaderFunction(vf4;f1;): 7(fvec4) Function None 10 11(input): 8(ptr) FunctionParameter 12(f): 9(ptr) FunctionParameter 14: Label 15(v): 8(ptr) Variable Function 24(u): 23(ptr) Variable Function 31(w): 30(ptr) Variable Function 33(V): 9(ptr) Variable Function 34(MyVal): 23(ptr) Variable Function 37(foo): 23(ptr) Variable Function 70(f1): 9(ptr) Variable Function 82(ui): 81(ptr) Variable Function 87(ui3): 86(ptr) Variable Function 102(mixed): 23(ptr) Variable Function 114(sf): 9(ptr) Variable Function 117(sf1): 9(ptr) Variable Function Store 15(v) 17 Store 15(v) 19 20: 6(float) Load 12(f) 21: 7(fvec4) CompositeConstruct 20 20 20 20 Store 15(v) 21 Store 24(u) 25 Store 24(u) 26 27: 6(float) Load 12(f) 28: 22(fvec3) CompositeConstruct 27 27 27 Store 24(u) 28 Store 31(w) 32 Store 33(V) 16 35: 6(float) Load 33(V) 36: 22(fvec3) CompositeConstruct 35 35 35 Store 34(MyVal) 36 38: 22(fvec3) Load 37(foo) 43: 42(bvec3) FOrdGreaterThan 38 40 44: 22(fvec3) Load 37(foo) 47: 42(bvec3) FOrdGreaterThanEqual 44 46 50: 22(fvec3) Load 37(foo) 51: 42(bvec3) FOrdLessThan 49 50 54: 22(fvec3) Load 37(foo) 55: 42(bvec3) FOrdLessThanEqual 53 54 58: 9(ptr) AccessChain 15(v) 57 59: 6(float) Load 58 60: 7(fvec4) CompositeConstruct 59 59 59 59 61: 7(fvec4) Load 15(v) 63: 62(bvec4) FOrdEqual 60 61 64: 41(bool) All 63 65: 6(float) Load 12(f) 66: 7(fvec4) CompositeConstruct 65 65 65 65 67: 7(fvec4) Load 15(v) 68: 62(bvec4) FUnordNotEqual 66 67 69: 41(bool) Any 68 71: 6(float) Load 70(f1) 72: 7(fvec4) CompositeConstruct 71 71 71 71 73: 7(fvec4) Load 15(v) 74: 62(bvec4) FOrdEqual 72 73 75: 7(fvec4) Load 15(v) 76: 6(float) Load 70(f1) 77: 7(fvec4) CompositeConstruct 76 76 76 76 78: 62(bvec4) FOrdLessThan 75 77 79: 6(float) Load 70(f1) 80: 22(fvec3) CompositeConstruct 79 79 79 83: 56(int) Load 82(ui) 85: 84(ivec3) CompositeConstruct 83 83 83 88: 84(ivec3) Load 87(ui3) 89: 84(ivec3) ShiftRightLogical 85 88 90: 84(ivec3) Load 87(ui3) 91: 56(int) Load 82(ui) 92: 84(ivec3) CompositeConstruct 91 91 91 93: 84(ivec3) ShiftRightLogical 90 92 94: 6(float) Load 70(f1) 95: 7(fvec4) Load 15(v) 96: 7(fvec4) CompositeConstruct 94 94 94 94 97: 7(fvec4) FMul 95 96 Store 15(v) 97 98: 7(fvec4) Load 15(v) 99: 6(float) CompositeExtract 98 0 100: 6(float) Load 70(f1) 101: 6(float) FMul 100 99 Store 70(f1) 101 103: 22(fvec3) Load 24(u) 104: 7(fvec4) Load 15(v) 105: 6(float) CompositeExtract 104 0 106: 6(float) CompositeExtract 104 1 107: 6(float) CompositeExtract 104 2 108: 22(fvec3) CompositeConstruct 105 106 107 109: 22(fvec3) FMul 103 108 Store 102(mixed) 109 110: 22(fvec3) Load 24(u) 111: 6(float) CompositeExtract 110 0 Store 12(f) 111 112: 22(fvec3) Load 24(u) 113: 6(float) CompositeExtract 112 0 Store 70(f1) 113 115: 7(fvec4) Load 15(v) 116: 6(float) CompositeExtract 115 0 Store 114(sf) 116 118: 7(fvec4) Load 15(v) 119: 6(float) CompositeExtract 118 0 Store 117(sf1) 119 120: 7(fvec4) Load 11(input) 123: 7(fvec4) FMul 120 122 ReturnValue 123 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.shapeConvRet.frag.out000066400000000000000000000122151506534232700234610ustar00rootroot00000000000000hlsl.shapeConvRet.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: foo( ( temp 3-component vector of int) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 13 (const int) 0:3 13 (const int) 0:3 13 (const int) 0:7 Function Definition: @main(f1; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'f' ( in float) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct vec4 ( temp 4-component vector of float) 0:8 'f' ( in float) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp float) 0:? 'f' ( temp float) 0:? 'f' (layout( location=0) in float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(f1; ( temp 4-component vector of float) 0:? 'f' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'f' (layout( location=0) in float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: foo( ( temp 3-component vector of int) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression 0:3 Constant: 0:3 13 (const int) 0:3 13 (const int) 0:3 13 (const int) 0:7 Function Definition: @main(f1; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'f' ( in float) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct vec4 ( temp 4-component vector of float) 0:8 'f' ( in float) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp float) 0:? 'f' ( temp float) 0:? 'f' (layout( location=0) in float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(f1; ( temp 4-component vector of float) 0:? 'f' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'f' (layout( location=0) in float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 28 31 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "foo(" Name 16 "@main(f1;" Name 15 "f" Name 26 "f" Name 28 "f" Name 31 "@entryPointOutput" Name 32 "param" Decorate 28(f) Location 0 Decorate 31(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 3 8: TypeFunction 7(ivec3) 11: TypeFloat 32 12: TypePointer Function 11(float) 13: TypeVector 11(float) 4 14: TypeFunction 13(fvec4) 12(ptr) 18: 6(int) Constant 13 19: 7(ivec3) ConstantComposite 18 18 18 27: TypePointer Input 11(float) 28(f): 27(ptr) Variable Input 30: TypePointer Output 13(fvec4) 31(@entryPointOutput): 30(ptr) Variable Output 4(main): 2 Function None 3 5: Label 26(f): 12(ptr) Variable Function 32(param): 12(ptr) Variable Function 29: 11(float) Load 28(f) Store 26(f) 29 33: 11(float) Load 26(f) Store 32(param) 33 34: 13(fvec4) FunctionCall 16(@main(f1;) 32(param) Store 31(@entryPointOutput) 34 Return FunctionEnd 9(foo(): 7(ivec3) Function None 8 10: Label ReturnValue 19 FunctionEnd 16(@main(f1;): 13(fvec4) Function None 14 15(f): 12(ptr) FunctionParameter 17: Label 22: 11(float) Load 15(f) 23: 13(fvec4) CompositeConstruct 22 22 22 22 ReturnValue 23 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.shift.per-set.frag.out000066400000000000000000000340551506534232700235610ustar00rootroot00000000000000hlsl.shift.per-set.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:34 Function Definition: @main( ( temp 4-component vector of float) 0:34 Function Parameters: 0:? Sequence 0:35 't1' (layout( set=1 binding=1) uniform texture1D) 0:36 't2' (layout( set=1 binding=2) uniform texture2D) 0:37 't3' (layout( set=2 binding=1) uniform texture3D) 0:38 direct index (layout( row_major std430) buffer 4-component vector of float) 0:38 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:38 't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:38 Constant: 0:38 0 (const uint) 0:38 Constant: 0:38 0 (const int) 0:39 indirect index (layout( row_major std430) buffer uint) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:39 't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 right-shift ( temp int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 2 (const int) 0:40 't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer) 0:42 's1' (layout( set=1 binding=1) uniform sampler) 0:43 's2' (layout( set=2 binding=2) uniform sampler) 0:45 'u1' (layout( set=1 binding=1 rgba32f) uniform image1D) 0:46 'u2' (layout( set=2 binding=2 rgba32f) uniform image2D) 0:47 'u3' (layout( set=2 binding=3 rgba32f) uniform image3D) 0:49 imageLoad ( temp float) 0:49 'u4' (layout( set=1 binding=4 r32f) uniform imageBuffer) 0:49 Constant: 0:49 0 (const int) 0:50 indirect index (layout( row_major std430) buffer uint) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:50 'u5' (layout( set=2 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 right-shift ( temp int) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 2 (const int) 0:51 direct index (layout( row_major std430) buffer float) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:51 'u6' (layout( set=3 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 'u7' (layout( set=4 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:53 'u8' (layout( set=5 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:55 cb1: direct index for structure (layout( row_major std140) uniform int) 0:55 'anon@0' (layout( set=6 binding=1 row_major std140) uniform block{layout( row_major std140) uniform int cb1}) 0:55 Constant: 0:55 0 (const uint) 0:56 tb1: direct index for structure (layout( row_major std430) buffer int) 0:56 'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1}) 0:56 Constant: 0:56 0 (const uint) 0:57 'ts6' (layout( set=6 binding=1) uniform texture3D) 0:59 Branch: Return with expression 0:59 Constant: 0:59 0.000000 0:59 0.000000 0:59 0.000000 0:59 0.000000 0:34 Function Definition: main( ( temp void) 0:34 Function Parameters: 0:? Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:34 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 's1' (layout( set=1 binding=1) uniform sampler) 0:? 's2' (layout( set=2 binding=2) uniform sampler) 0:? 't1' (layout( set=1 binding=1) uniform texture1D) 0:? 't2' (layout( set=1 binding=2) uniform texture2D) 0:? 't3' (layout( set=2 binding=1) uniform texture3D) 0:? 'ts6' (layout( set=6 binding=1) uniform texture3D) 0:? 't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer) 0:? 'u1' (layout( set=1 binding=1 rgba32f) uniform image1D) 0:? 'u2' (layout( set=2 binding=2 rgba32f) uniform image2D) 0:? 'u3' (layout( set=2 binding=3 rgba32f) uniform image3D) 0:? 'u4' (layout( set=1 binding=4 r32f) uniform imageBuffer) 0:? 'u5' (layout( set=2 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'u6' (layout( set=3 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? 'u7' (layout( set=4 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? 'u8' (layout( set=5 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? 'anon@0' (layout( set=6 binding=1 row_major std140) uniform block{layout( row_major std140) uniform int cb1}) 0:? 'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:34 Function Definition: @main( ( temp 4-component vector of float) 0:34 Function Parameters: 0:? Sequence 0:35 't1' (layout( set=1 binding=1) uniform texture1D) 0:36 't2' (layout( set=1 binding=2) uniform texture2D) 0:37 't3' (layout( set=2 binding=1) uniform texture3D) 0:38 direct index (layout( row_major std430) buffer 4-component vector of float) 0:38 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:38 't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:38 Constant: 0:38 0 (const uint) 0:38 Constant: 0:38 0 (const int) 0:39 indirect index (layout( row_major std430) buffer uint) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:39 't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 right-shift ( temp int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 2 (const int) 0:40 't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer) 0:42 's1' (layout( set=1 binding=1) uniform sampler) 0:43 's2' (layout( set=2 binding=2) uniform sampler) 0:45 'u1' (layout( set=1 binding=1 rgba32f) uniform image1D) 0:46 'u2' (layout( set=2 binding=2 rgba32f) uniform image2D) 0:47 'u3' (layout( set=2 binding=3 rgba32f) uniform image3D) 0:49 imageLoad ( temp float) 0:49 'u4' (layout( set=1 binding=4 r32f) uniform imageBuffer) 0:49 Constant: 0:49 0 (const int) 0:50 indirect index (layout( row_major std430) buffer uint) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:50 'u5' (layout( set=2 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 right-shift ( temp int) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 2 (const int) 0:51 direct index (layout( row_major std430) buffer float) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:51 'u6' (layout( set=3 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 'u7' (layout( set=4 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:53 'u8' (layout( set=5 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:55 cb1: direct index for structure (layout( row_major std140) uniform int) 0:55 'anon@0' (layout( set=6 binding=1 row_major std140) uniform block{layout( row_major std140) uniform int cb1}) 0:55 Constant: 0:55 0 (const uint) 0:56 tb1: direct index for structure (layout( row_major std430) buffer int) 0:56 'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1}) 0:56 Constant: 0:56 0 (const uint) 0:57 'ts6' (layout( set=6 binding=1) uniform texture3D) 0:59 Branch: Return with expression 0:59 Constant: 0:59 0.000000 0:59 0.000000 0:59 0.000000 0:59 0.000000 0:34 Function Definition: main( ( temp void) 0:34 Function Parameters: 0:? Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:34 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 's1' (layout( set=1 binding=1) uniform sampler) 0:? 's2' (layout( set=2 binding=2) uniform sampler) 0:? 't1' (layout( set=1 binding=1) uniform texture1D) 0:? 't2' (layout( set=1 binding=2) uniform texture2D) 0:? 't3' (layout( set=2 binding=1) uniform texture3D) 0:? 'ts6' (layout( set=6 binding=1) uniform texture3D) 0:? 't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer) 0:? 'u1' (layout( set=1 binding=1 rgba32f) uniform image1D) 0:? 'u2' (layout( set=2 binding=2 rgba32f) uniform image2D) 0:? 'u3' (layout( set=2 binding=3 rgba32f) uniform image3D) 0:? 'u4' (layout( set=1 binding=4 r32f) uniform imageBuffer) 0:? 'u5' (layout( set=2 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'u6' (layout( set=3 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? 'u7' (layout( set=4 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? 'u8' (layout( set=5 binding=4 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? 'anon@0' (layout( set=6 binding=1 row_major std140) uniform block{layout( row_major std140) uniform int cb1}) 0:? 'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Uniform reflection: t1: offset -1, type 8b5d, size 1, index -1, binding 21, stages 16 t2: offset -1, type 8b5e, size 1, index -1, binding 22, stages 16 t3: offset -1, type 8b5f, size 1, index -1, binding 26, stages 16 t4.@data: offset 0, type 8b52, size 1, index 0, binding -1, stages 16, arrayStride 16, topLevelArrayStride 16 t5.@data: offset 0, type 1405, size 0, index 1, binding -1, stages 16, arrayStride 4, topLevelArrayStride 4 t6: offset -1, type 8dc2, size 1, index -1, binding 23, stages 16 s1: offset -1, type 0, size 1, index -1, binding 11, stages 16 s2: offset -1, type 0, size 1, index -1, binding 17, stages 16 u1: offset -1, type 904c, size 1, index -1, binding 31, stages 16 u2: offset -1, type 904d, size 1, index -1, binding 42, stages 16 u3: offset -1, type 904e, size 1, index -1, binding 43, stages 16 u4: offset -1, type 9051, size 1, index -1, binding 34, stages 16 u5.@data: offset 0, type 1405, size 0, index 2, binding -1, stages 16, arrayStride 4, topLevelArrayStride 4 u6.@data: offset 0, type 1406, size 1, index 3, binding -1, stages 16, arrayStride 4, topLevelArrayStride 4 cb1: offset 0, type 1404, size 1, index 4, binding -1, stages 16 tb1: offset 0, type 1404, size 1, index 5, binding -1, stages 16 ts6: offset -1, type 8b5f, size 1, index -1, binding 71, stages 16 Uniform block reflection: t4: offset -1, type ffffffff, size 16, index 0, binding 21, stages 16, numMembers 1 t5: offset -1, type ffffffff, size 4, index 1, binding 22, stages 16, numMembers 1 u5: offset -1, type ffffffff, size 4, index 2, binding 44, stages 16, numMembers 1 u6: offset -1, type ffffffff, size 4, index 3, binding 34, stages 16, numMembers 1 cb: offset -1, type ffffffff, size 4, index 4, binding 51, stages 16, numMembers 1 tb: offset -1, type ffffffff, size 4, index 5, binding 27, stages 16, numMembers 1 Buffer variable reflection: Buffer block reflection: Pipeline input reflection: Pipeline output reflection: @entryPointOutput: offset 0, type 8b52, size 1, index 0, binding -1, stages 16 glslang-16.0.0/Test/baseResults/hlsl.sin.frag.out000066400000000000000000000113261506534232700216530ustar00rootroot00000000000000hlsl.sin.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:3 Branch: Return with expression 0:3 sine ( temp 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:3 Branch: Return with expression 0:3 sine ( temp 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 19 22 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "@PixelShaderFunction(vf4;" Name 10 "input" Name 17 "input" Name 19 "input" Name 22 "@entryPointOutput" Name 23 "param" Decorate 19(input) Location 0 Decorate 22(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) 18: TypePointer Input 7(fvec4) 19(input): 18(ptr) Variable Input 21: TypePointer Output 7(fvec4) 22(@entryPointOutput): 21(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 17(input): 8(ptr) Variable Function 23(param): 8(ptr) Variable Function 20: 7(fvec4) Load 19(input) Store 17(input) 20 24: 7(fvec4) Load 17(input) Store 23(param) 24 25: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 23(param) Store 22(@entryPointOutput) 25 Return FunctionEnd 11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 13: 7(fvec4) Load 10(input) 14: 7(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 13 ReturnValue 14 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.singleArgIntPromo.vert.out000066400000000000000000000314571506534232700245350ustar00rootroot00000000000000hlsl.singleArgIntPromo.vert Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp float) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp int) 0:3 'd' ( temp int) 0:3 Constant: 0:3 4 (const int) 0:4 Sequence 0:4 move second child to first child ( temp 2-component vector of int) 0:4 'd2' ( temp 2-component vector of int) 0:4 Construct ivec2 ( temp 2-component vector of int) 0:4 Constant: 0:4 5 (const int) 0:4 'd' ( temp int) 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'f1' ( temp float) 0:5 Constant: 0:5 2.321928 0:6 Sequence 0:6 move second child to first child ( temp 2-component vector of float) 0:6 'f2' ( temp 2-component vector of float) 0:6 log ( temp 2-component vector of float) 0:6 Convert int to float ( temp 2-component vector of float) 0:6 'd2' ( temp 2-component vector of int) 0:7 Sequence 0:7 move second child to first child ( temp 3-component vector of float) 0:7 'f3' ( temp 3-component vector of float) 0:7 Constant: 0:7 1.945910 0:7 0.693147 0:7 1.098612 0:8 Sequence 0:8 move second child to first child ( temp 2-component vector of float) 0:8 'f22' ( temp 2-component vector of float) 0:8 Constant: 0:8 0.000000 0:8 0.000000 0:10 Sequence 0:10 move second child to first child ( temp int) 0:10 'a' ( temp int) 0:10 Constant: 0:10 5 (const int) 0:11 Sequence 0:11 move second child to first child ( temp mediump float) 0:11 'b' ( temp mediump float) 0:11 direct index ( temp mediump float) 0:11 unpackHalf2x16 ( temp mediump 2-component vector of float) 0:11 Convert int to uint ( temp mediump uint) 0:11 'a' ( temp mediump int) 0:11 Constant: 0:11 0 (const int) 0:12 multiply second child into first child ( temp mediump float) 0:12 'b' ( temp mediump float) 0:12 'b' ( temp mediump float) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'c' ( temp uint) 0:13 packHalf2x16 ( temp uint) 0:13 Construct vec2 ( temp 2-component vector of float) 0:13 'b' ( temp mediump float) 0:13 Constant: 0:13 0.000000 0:15 Branch: Return with expression 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 'f1' ( temp float) 0:15 direct index ( temp float) 0:15 'f2' ( temp 2-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:15 direct index ( temp float) 0:15 'f3' ( temp 3-component vector of float) 0:15 Constant: 0:15 2 (const int) 0:15 direct index ( temp float) 0:15 'f22' ( temp 2-component vector of float) 0:15 Constant: 0:15 1 (const int) 0:15 Convert uint to float ( temp float) 0:15 'c' ( temp uint) 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:2 Function Call: @main( ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out float) Linked vertex stage: Shader version: 500 0:? Sequence 0:2 Function Definition: @main( ( temp float) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence 0:3 move second child to first child ( temp int) 0:3 'd' ( temp int) 0:3 Constant: 0:3 4 (const int) 0:4 Sequence 0:4 move second child to first child ( temp 2-component vector of int) 0:4 'd2' ( temp 2-component vector of int) 0:4 Construct ivec2 ( temp 2-component vector of int) 0:4 Constant: 0:4 5 (const int) 0:4 'd' ( temp int) 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'f1' ( temp float) 0:5 Constant: 0:5 2.321928 0:6 Sequence 0:6 move second child to first child ( temp 2-component vector of float) 0:6 'f2' ( temp 2-component vector of float) 0:6 log ( temp 2-component vector of float) 0:6 Convert int to float ( temp 2-component vector of float) 0:6 'd2' ( temp 2-component vector of int) 0:7 Sequence 0:7 move second child to first child ( temp 3-component vector of float) 0:7 'f3' ( temp 3-component vector of float) 0:7 Constant: 0:7 1.945910 0:7 0.693147 0:7 1.098612 0:8 Sequence 0:8 move second child to first child ( temp 2-component vector of float) 0:8 'f22' ( temp 2-component vector of float) 0:8 Constant: 0:8 0.000000 0:8 0.000000 0:10 Sequence 0:10 move second child to first child ( temp int) 0:10 'a' ( temp int) 0:10 Constant: 0:10 5 (const int) 0:11 Sequence 0:11 move second child to first child ( temp mediump float) 0:11 'b' ( temp mediump float) 0:11 direct index ( temp mediump float) 0:11 unpackHalf2x16 ( temp mediump 2-component vector of float) 0:11 Convert int to uint ( temp mediump uint) 0:11 'a' ( temp mediump int) 0:11 Constant: 0:11 0 (const int) 0:12 multiply second child into first child ( temp mediump float) 0:12 'b' ( temp mediump float) 0:12 'b' ( temp mediump float) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'c' ( temp uint) 0:13 packHalf2x16 ( temp uint) 0:13 Construct vec2 ( temp 2-component vector of float) 0:13 'b' ( temp mediump float) 0:13 Constant: 0:13 0.000000 0:15 Branch: Return with expression 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 add ( temp float) 0:15 'f1' ( temp float) 0:15 direct index ( temp float) 0:15 'f2' ( temp 2-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:15 direct index ( temp float) 0:15 'f3' ( temp 3-component vector of float) 0:15 Constant: 0:15 2 (const int) 0:15 direct index ( temp float) 0:15 'f22' ( temp 2-component vector of float) 0:15 Constant: 0:15 1 (const int) 0:15 Convert uint to float ( temp float) 0:15 'c' ( temp uint) 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:2 Function Call: @main( ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 75 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 73 Source HLSL 500 Name 4 "main" Name 8 "@main(" Name 12 "d" Name 16 "d2" Name 21 "f1" Name 25 "f2" Name 31 "f3" Name 36 "f22" Name 39 "a" Name 40 "b" Name 51 "c" Name 73 "@entryPointOutput" Decorate 40(b) RelaxedPrecision Decorate 41 RelaxedPrecision Decorate 43 RelaxedPrecision Decorate 44 RelaxedPrecision Decorate 46 RelaxedPrecision Decorate 47 RelaxedPrecision Decorate 48 RelaxedPrecision Decorate 49 RelaxedPrecision Decorate 52 RelaxedPrecision Decorate 73(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypeInt 32 1 11: TypePointer Function 10(int) 13: 10(int) Constant 4 14: TypeVector 10(int) 2 15: TypePointer Function 14(ivec2) 17: 10(int) Constant 5 20: TypePointer Function 6(float) 22: 6(float) Constant 1075092088 23: TypeVector 6(float) 2 24: TypePointer Function 23(fvec2) 29: TypeVector 6(float) 3 30: TypePointer Function 29(fvec3) 32: 6(float) Constant 1073288085 33: 6(float) Constant 1060205080 34: 6(float) Constant 1066180436 35: 29(fvec3) ConstantComposite 32 33 34 37: 6(float) Constant 0 38: 23(fvec2) ConstantComposite 37 37 42: TypeInt 32 0 45: 42(int) Constant 0 50: TypePointer Function 42(int) 59: 42(int) Constant 2 63: 42(int) Constant 1 72: TypePointer Output 6(float) 73(@entryPointOutput): 72(ptr) Variable Output 4(main): 2 Function None 3 5: Label 74: 6(float) FunctionCall 8(@main() Store 73(@entryPointOutput) 74 Return FunctionEnd 8(@main(): 6(float) Function None 7 9: Label 12(d): 11(ptr) Variable Function 16(d2): 15(ptr) Variable Function 21(f1): 20(ptr) Variable Function 25(f2): 24(ptr) Variable Function 31(f3): 30(ptr) Variable Function 36(f22): 24(ptr) Variable Function 39(a): 11(ptr) Variable Function 40(b): 20(ptr) Variable Function 51(c): 50(ptr) Variable Function Store 12(d) 13 18: 10(int) Load 12(d) 19: 14(ivec2) CompositeConstruct 17 18 Store 16(d2) 19 Store 21(f1) 22 26: 14(ivec2) Load 16(d2) 27: 23(fvec2) ConvertSToF 26 28: 23(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 27 Store 25(f2) 28 Store 31(f3) 35 Store 36(f22) 38 Store 39(a) 17 41: 10(int) Load 39(a) 43: 42(int) Bitcast 41 44: 23(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 43 46: 6(float) CompositeExtract 44 0 Store 40(b) 46 47: 6(float) Load 40(b) 48: 6(float) Load 40(b) 49: 6(float) FMul 48 47 Store 40(b) 49 52: 6(float) Load 40(b) 53: 23(fvec2) CompositeConstruct 52 37 54: 42(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 53 Store 51(c) 54 55: 6(float) Load 21(f1) 56: 20(ptr) AccessChain 25(f2) 45 57: 6(float) Load 56 58: 6(float) FAdd 55 57 60: 20(ptr) AccessChain 31(f3) 59 61: 6(float) Load 60 62: 6(float) FAdd 58 61 64: 20(ptr) AccessChain 36(f22) 63 65: 6(float) Load 64 66: 6(float) FAdd 62 65 67: 42(int) Load 51(c) 68: 6(float) ConvertUToF 67 69: 6(float) FAdd 66 68 ReturnValue 69 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.snorm.uav.comp.out000066400000000000000000000245551506534232700230410ustar00rootroot00000000000000hlsl.snorm.uav.comp Shader version: 500 local_size = (16, 16, 1) 0:? Sequence 0:12 Function Definition: @main(vu3; ( temp void) 0:12 Function Parameters: 0:12 'tid' ( in 3-component vector of uint) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'storeTemp' ( temp 4-component vector of float) 0:13 add ( temp 4-component vector of float) 0:13 textureFetch ( temp 4-component vector of float) 0:13 'ResultInS' (layout( binding=1) uniform texture3D) 0:13 'tid' ( in 3-component vector of uint) 0:13 Constant: 0:13 0 (const int) 0:13 uf4: direct index for structure ( uniform 4-component vector of float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4}) 0:13 Constant: 0:13 0 (const uint) 0:13 imageStore ( temp void) 0:13 'ResultOutS' (layout( binding=1 rgba32f) uniform image3D) 0:13 'tid' ( in 3-component vector of uint) 0:13 'storeTemp' ( temp 4-component vector of float) 0:13 'storeTemp' ( temp 4-component vector of float) 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'storeTemp' ( temp 4-component vector of float) 0:14 textureFetch ( temp 4-component vector of float) 0:14 'ResultInU' (layout( binding=0) uniform texture3D) 0:14 'tid' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 imageStore ( temp void) 0:14 'ResultOutU' (layout( binding=0 rgba32f) uniform image3D) 0:14 'tid' ( in 3-component vector of uint) 0:14 'storeTemp' ( temp 4-component vector of float) 0:14 'storeTemp' ( temp 4-component vector of float) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 3-component vector of uint) 0:? 'tid' ( temp 3-component vector of uint) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) 0:12 Function Call: @main(vu3; ( temp void) 0:? 'tid' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4}) 0:? 'ResultInU' (layout( binding=0) uniform texture3D) 0:? 'ResultOutU' (layout( binding=0 rgba32f) uniform image3D) 0:? 'ResultInS' (layout( binding=1) uniform texture3D) 0:? 'ResultOutS' (layout( binding=1 rgba32f) uniform image3D) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (16, 16, 1) 0:? Sequence 0:12 Function Definition: @main(vu3; ( temp void) 0:12 Function Parameters: 0:12 'tid' ( in 3-component vector of uint) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'storeTemp' ( temp 4-component vector of float) 0:13 add ( temp 4-component vector of float) 0:13 textureFetch ( temp 4-component vector of float) 0:13 'ResultInS' (layout( binding=1) uniform texture3D) 0:13 'tid' ( in 3-component vector of uint) 0:13 Constant: 0:13 0 (const int) 0:13 uf4: direct index for structure ( uniform 4-component vector of float) 0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4}) 0:13 Constant: 0:13 0 (const uint) 0:13 imageStore ( temp void) 0:13 'ResultOutS' (layout( binding=1 rgba32f) uniform image3D) 0:13 'tid' ( in 3-component vector of uint) 0:13 'storeTemp' ( temp 4-component vector of float) 0:13 'storeTemp' ( temp 4-component vector of float) 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'storeTemp' ( temp 4-component vector of float) 0:14 textureFetch ( temp 4-component vector of float) 0:14 'ResultInU' (layout( binding=0) uniform texture3D) 0:14 'tid' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 imageStore ( temp void) 0:14 'ResultOutU' (layout( binding=0 rgba32f) uniform image3D) 0:14 'tid' ( in 3-component vector of uint) 0:14 'storeTemp' ( temp 4-component vector of float) 0:14 'storeTemp' ( temp 4-component vector of float) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp 3-component vector of uint) 0:? 'tid' ( temp 3-component vector of uint) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) 0:12 Function Call: @main(vu3; ( temp void) 0:? 'tid' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4}) 0:? 'ResultInU' (layout( binding=0) uniform texture3D) 0:? 'ResultOutU' (layout( binding=0 rgba32f) uniform image3D) 0:? 'ResultInS' (layout( binding=1) uniform texture3D) 0:? 'ResultOutS' (layout( binding=1 rgba32f) uniform image3D) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 49 ExecutionMode 4 LocalSize 16 16 1 Source HLSL 500 Name 4 "main" Name 11 "@main(vu3;" Name 10 "tid" Name 16 "storeTemp" Name 19 "ResultInS" Name 25 "$Global" MemberName 25($Global) 0 "uf4" Name 27 "" Name 34 "ResultOutS" Name 38 "storeTemp" Name 39 "ResultInU" Name 43 "ResultOutU" Name 47 "tid" Name 49 "tid" Name 51 "param" Decorate 19(ResultInS) Binding 1 Decorate 19(ResultInS) DescriptorSet 0 Decorate 25($Global) Block MemberDecorate 25($Global) 0 Offset 0 Decorate 27 Binding 2 Decorate 27 DescriptorSet 0 Decorate 34(ResultOutS) Binding 1 Decorate 34(ResultOutS) DescriptorSet 0 Decorate 39(ResultInU) Binding 0 Decorate 39(ResultInU) DescriptorSet 0 Decorate 43(ResultOutU) Binding 0 Decorate 43(ResultOutU) DescriptorSet 0 Decorate 49(tid) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeFloat 32 14: TypeVector 13(float) 4 15: TypePointer Function 14(fvec4) 17: TypeImage 13(float) 3D sampled format:Unknown 18: TypePointer UniformConstant 17 19(ResultInS): 18(ptr) Variable UniformConstant 22: TypeInt 32 1 23: 22(int) Constant 0 25($Global): TypeStruct 14(fvec4) 26: TypePointer Uniform 25($Global) 27: 26(ptr) Variable Uniform 28: TypePointer Uniform 14(fvec4) 32: TypeImage 13(float) 3D nonsampled format:Rgba32f 33: TypePointer UniformConstant 32 34(ResultOutS): 33(ptr) Variable UniformConstant 39(ResultInU): 18(ptr) Variable UniformConstant 43(ResultOutU): 33(ptr) Variable UniformConstant 48: TypePointer Input 7(ivec3) 49(tid): 48(ptr) Variable Input 4(main): 2 Function None 3 5: Label 47(tid): 8(ptr) Variable Function 51(param): 8(ptr) Variable Function 50: 7(ivec3) Load 49(tid) Store 47(tid) 50 52: 7(ivec3) Load 47(tid) Store 51(param) 52 53: 2 FunctionCall 11(@main(vu3;) 51(param) Return FunctionEnd 11(@main(vu3;): 2 Function None 9 10(tid): 8(ptr) FunctionParameter 12: Label 16(storeTemp): 15(ptr) Variable Function 38(storeTemp): 15(ptr) Variable Function 20: 17 Load 19(ResultInS) 21: 7(ivec3) Load 10(tid) 24: 14(fvec4) ImageFetch 20 21 Lod 23 29: 28(ptr) AccessChain 27 23 30: 14(fvec4) Load 29 31: 14(fvec4) FAdd 24 30 Store 16(storeTemp) 31 35: 32 Load 34(ResultOutS) 36: 7(ivec3) Load 10(tid) 37: 14(fvec4) Load 16(storeTemp) ImageWrite 35 36 37 40: 17 Load 39(ResultInU) 41: 7(ivec3) Load 10(tid) 42: 14(fvec4) ImageFetch 40 41 Lod 23 Store 38(storeTemp) 42 44: 32 Load 43(ResultOutU) 45: 7(ivec3) Load 10(tid) 46: 14(fvec4) Load 38(storeTemp) ImageWrite 44 45 46 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.specConstant.frag.out000066400000000000000000000234061506534232700235300ustar00rootroot00000000000000hlsl.specConstant.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: @main( ( temp 4-component vector of float) 0:6 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp uint) 0:8 'i' ( temp uint) 0:8 Constant: 0:8 0 (const uint) 0:8 Loop with condition tested first 0:8 Loop Condition 0:8 Compare Less Than ( temp bool) 0:8 'i' ( temp uint) 0:8 indirect index ( const uint) 0:8 Constant: 0:8 10 (const uint) 0:8 20 (const uint) 0:8 30 (const uint) 0:8 40 (const uint) 0:8 'index' ( specialization-constant const uint) 0:8 2 (const uint) 0:8 Loop Body 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'r' ( temp 4-component vector of float) 0:9 Construct vec4 ( temp 4-component vector of float) 0:9 Convert uint to float ( temp float) 0:9 'i' ( temp uint) 0:8 Loop Terminal Expression 0:8 Post-Increment ( temp uint) 0:8 'i' ( temp uint) 0:11 add second child into first child ( temp 4-component vector of float) 0:11 'r' ( temp 4-component vector of float) 0:11 Convert uint to float ( temp float) 0:11 add ( specialization-constant const uint) 0:11 'index' ( specialization-constant const uint) 0:11 2 (const uint) 0:11 'index' ( specialization-constant const uint) 0:11 2 (const uint) 0:12 add second child into first child ( temp 4-component vector of float) 0:12 'r' ( temp 4-component vector of float) 0:12 Convert uint to float ( temp float) 0:12 component-wise multiply ( specialization-constant const uint) 0:12 Constant: 0:12 2 (const uint) 0:12 'index' ( specialization-constant const uint) 0:12 2 (const uint) 0:14 Branch: Return with expression 0:14 'r' ( temp 4-component vector of float) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'index' ( specialization-constant const uint) 0:? 2 (const uint) 0:? 'array' ( const 4-element array of uint) 0:? 10 (const uint) 0:? 20 (const uint) 0:? 30 (const uint) 0:? 40 (const uint) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: @main( ( temp 4-component vector of float) 0:6 Function Parameters: 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp uint) 0:8 'i' ( temp uint) 0:8 Constant: 0:8 0 (const uint) 0:8 Loop with condition tested first 0:8 Loop Condition 0:8 Compare Less Than ( temp bool) 0:8 'i' ( temp uint) 0:8 indirect index ( const uint) 0:8 Constant: 0:8 10 (const uint) 0:8 20 (const uint) 0:8 30 (const uint) 0:8 40 (const uint) 0:8 'index' ( specialization-constant const uint) 0:8 2 (const uint) 0:8 Loop Body 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'r' ( temp 4-component vector of float) 0:9 Construct vec4 ( temp 4-component vector of float) 0:9 Convert uint to float ( temp float) 0:9 'i' ( temp uint) 0:8 Loop Terminal Expression 0:8 Post-Increment ( temp uint) 0:8 'i' ( temp uint) 0:11 add second child into first child ( temp 4-component vector of float) 0:11 'r' ( temp 4-component vector of float) 0:11 Convert uint to float ( temp float) 0:11 add ( specialization-constant const uint) 0:11 'index' ( specialization-constant const uint) 0:11 2 (const uint) 0:11 'index' ( specialization-constant const uint) 0:11 2 (const uint) 0:12 add second child into first child ( temp 4-component vector of float) 0:12 'r' ( temp 4-component vector of float) 0:12 Convert uint to float ( temp float) 0:12 component-wise multiply ( specialization-constant const uint) 0:12 Constant: 0:12 2 (const uint) 0:12 'index' ( specialization-constant const uint) 0:12 2 (const uint) 0:14 Branch: Return with expression 0:14 'r' ( temp 4-component vector of float) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:6 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'index' ( specialization-constant const uint) 0:? 2 (const uint) 0:? 'array' ( const 4-element array of uint) 0:? 10 (const uint) 0:? 20 (const uint) 0:? 30 (const uint) 0:? 40 (const uint) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 59 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "i" Name 28 "index" Name 30 "indexable" Name 36 "r" Name 59 "@entryPointOutput" Decorate 28(index) SpecId 0 Decorate 59(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 0 12: TypePointer Function 11(int) 14: 11(int) Constant 0 21: 11(int) Constant 4 22: TypeArray 11(int) 21 23: 11(int) Constant 10 24: 11(int) Constant 20 25: 11(int) Constant 30 26: 11(int) Constant 40 27: 22 ConstantComposite 23 24 25 26 28(index): 11(int) SpecConstant 2 29: TypePointer Function 22 33: TypeBool 35: TypePointer Function 7(fvec4) 41: TypeInt 32 1 42: 41(int) Constant 1 44: 11(int) SpecConstantOp 128 28(index) 28(index) 49: 11(int) Constant 2 50: 11(int) SpecConstantOp 132 49 28(index) 58: TypePointer Output 7(fvec4) 59(@entryPointOutput): 58(ptr) Variable Output 4(main): 2 Function None 3 5: Label 60: 7(fvec4) FunctionCall 9(@main() Store 59(@entryPointOutput) 60 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 13(i): 12(ptr) Variable Function 30(indexable): 29(ptr) Variable Function 36(r): 35(ptr) Variable Function Store 13(i) 14 Branch 15 15: Label LoopMerge 17 18 None Branch 19 19: Label 20: 11(int) Load 13(i) Store 30(indexable) 27 31: 12(ptr) AccessChain 30(indexable) 28(index) 32: 11(int) Load 31 34: 33(bool) ULessThan 20 32 BranchConditional 34 16 17 16: Label 37: 11(int) Load 13(i) 38: 6(float) ConvertUToF 37 39: 7(fvec4) CompositeConstruct 38 38 38 38 Store 36(r) 39 Branch 18 18: Label 40: 11(int) Load 13(i) 43: 11(int) IAdd 40 42 Store 13(i) 43 Branch 15 17: Label 45: 6(float) ConvertUToF 44 46: 7(fvec4) Load 36(r) 47: 7(fvec4) CompositeConstruct 45 45 45 45 48: 7(fvec4) FAdd 46 47 Store 36(r) 48 51: 6(float) ConvertUToF 50 52: 7(fvec4) Load 36(r) 53: 7(fvec4) CompositeConstruct 51 51 51 51 54: 7(fvec4) FAdd 52 53 Store 36(r) 54 55: 7(fvec4) Load 36(r) ReturnValue 55 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.spv.1.6.discard.frag.out000066400000000000000000000174251506534232700236130ustar00rootroot00000000000000hlsl.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 glslang-16.0.0/Test/baseResults/hlsl.staticFuncInit.frag.out000066400000000000000000000206511506534232700240120ustar00rootroot00000000000000hlsl.staticFuncInit.frag Shader version: 500 gl_FragCoord origin is upper left 0:12Sequence 0:1 Sequence 0:1 move second child to first child ( temp float) 0:1 'x' ( global float) 0:1 Constant: 0:1 1.000000 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'x' ( global float) 0:5 Constant: 0:5 2.000000 0:4 Function Definition: f1( ( temp float) 0:4 Function Parameters: 0:? Sequence 0:6 add second child into first child ( temp float) 0:6 'x' ( global float) 0:6 Constant: 0:6 10.000000 0:7 Branch: Return with expression 0:7 'x' ( global float) 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'x' ( global float) 0:12 Constant: 0:12 7.000000 0:11 Function Definition: f2(f1; ( temp float) 0:11 Function Parameters: 0:11 'p' ( in float) 0:? Sequence 0:13 add second child into first child ( temp float) 0:13 'x' ( global float) 0:13 'p' ( in float) 0:14 Branch: Return with expression 0:14 'x' ( global float) 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:19 Branch: Return with expression 0:19 Construct vec4 ( temp 4-component vector of float) 0:19 add ( temp float) 0:19 add ( temp float) 0:19 add ( temp float) 0:19 add ( temp float) 0:19 'x' ( global float) 0:19 Function Call: f1( ( temp float) 0:19 Function Call: f1( ( temp float) 0:19 Function Call: f2(f1; ( temp float) 0:19 Constant: 0:19 5.000000 0:19 Function Call: f2(f1; ( temp float) 0:19 'x' ( global float) 0:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'x' ( global float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:12Sequence 0:1 Sequence 0:1 move second child to first child ( temp float) 0:1 'x' ( global float) 0:1 Constant: 0:1 1.000000 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'x' ( global float) 0:5 Constant: 0:5 2.000000 0:4 Function Definition: f1( ( temp float) 0:4 Function Parameters: 0:? Sequence 0:6 add second child into first child ( temp float) 0:6 'x' ( global float) 0:6 Constant: 0:6 10.000000 0:7 Branch: Return with expression 0:7 'x' ( global float) 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'x' ( global float) 0:12 Constant: 0:12 7.000000 0:11 Function Definition: f2(f1; ( temp float) 0:11 Function Parameters: 0:11 'p' ( in float) 0:? Sequence 0:13 add second child into first child ( temp float) 0:13 'x' ( global float) 0:13 'p' ( in float) 0:14 Branch: Return with expression 0:14 'x' ( global float) 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:19 Branch: Return with expression 0:19 Construct vec4 ( temp 4-component vector of float) 0:19 add ( temp float) 0:19 add ( temp float) 0:19 add ( temp float) 0:19 add ( temp float) 0:19 'x' ( global float) 0:19 Function Call: f1( ( temp float) 0:19 Function Call: f1( ( temp float) 0:19 Function Call: f2(f1; ( temp float) 0:19 Constant: 0:19 5.000000 0:19 Function Call: f2(f1; ( temp float) 0:19 'x' ( global float) 0:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'x' ( global float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 55 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "f1(" Name 13 "f2(f1;" Name 12 "p" Name 17 "@main(" Name 20 "x" Name 22 "x" Name 24 "x" Name 44 "param" Name 47 "param" Name 55 "@entryPointOutput" Decorate 55(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypePointer Function 6(float) 11: TypeFunction 6(float) 10(ptr) 15: TypeVector 6(float) 4 16: TypeFunction 15(fvec4) 19: TypePointer Private 6(float) 20(x): 19(ptr) Variable Private 21: 6(float) Constant 1065353216 22(x): 19(ptr) Variable Private 23: 6(float) Constant 1073741824 24(x): 19(ptr) Variable Private 25: 6(float) Constant 1088421888 26: 6(float) Constant 1092616192 43: 6(float) Constant 1084227584 54: TypePointer Output 15(fvec4) 55(@entryPointOutput): 54(ptr) Variable Output 4(main): 2 Function None 3 5: Label Store 20(x) 21 Store 22(x) 23 Store 24(x) 25 56: 15(fvec4) FunctionCall 17(@main() Store 55(@entryPointOutput) 56 Return FunctionEnd 8(f1(): 6(float) Function None 7 9: Label 27: 6(float) Load 22(x) 28: 6(float) FAdd 27 26 Store 22(x) 28 29: 6(float) Load 22(x) ReturnValue 29 FunctionEnd 13(f2(f1;): 6(float) Function None 11 12(p): 10(ptr) FunctionParameter 14: Label 32: 6(float) Load 12(p) 33: 6(float) Load 24(x) 34: 6(float) FAdd 33 32 Store 24(x) 34 35: 6(float) Load 24(x) ReturnValue 35 FunctionEnd 17(@main(): 15(fvec4) Function None 16 18: Label 44(param): 10(ptr) Variable Function 47(param): 10(ptr) Variable Function 38: 6(float) Load 20(x) 39: 6(float) FunctionCall 8(f1() 40: 6(float) FAdd 38 39 41: 6(float) FunctionCall 8(f1() 42: 6(float) FAdd 40 41 Store 44(param) 43 45: 6(float) FunctionCall 13(f2(f1;) 44(param) 46: 6(float) FAdd 42 45 48: 6(float) Load 20(x) Store 47(param) 48 49: 6(float) FunctionCall 13(f2(f1;) 47(param) 50: 6(float) FAdd 46 49 51: 15(fvec4) CompositeConstruct 50 50 50 50 ReturnValue 51 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.staticMemberFunction.frag.out000066400000000000000000000205661506534232700252150ustar00rootroot00000000000000hlsl.staticMemberFunction.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: Test::staticMemFun(vf4; ( global 4-component vector of float) 0:5 Function Parameters: 0:5 'a' ( in 4-component vector of float) 0:? Sequence 0:6 Branch: Return with expression 0:6 vector-scale ( temp 4-component vector of float) 0:6 Constant: 0:6 2.000000 0:6 'a' ( in 4-component vector of float) 0:9 Function Definition: Test::staticMemFun(i1; ( global int) 0:9 Function Parameters: 0:9 'a' ( in int) 0:? Sequence 0:10 Branch: Return with expression 0:10 add ( temp int) 0:10 Constant: 0:10 2 (const int) 0:10 'a' ( in int) 0:16 Function Definition: @main( ( temp 4-component vector of float) 0:16 Function Parameters: 0:? Sequence 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'f4' ( temp 4-component vector of float) 0:18 Constant: 0:18 1.000000 0:18 1.000000 0:18 1.000000 0:18 1.000000 0:19 add second child into first child ( temp 4-component vector of float) 0:19 'f4' ( temp 4-component vector of float) 0:19 Function Call: Test::staticMemFun(vf4; ( global 4-component vector of float) 0:19 Constant: 0:19 5.000000 0:19 5.000000 0:19 5.000000 0:19 5.000000 0:20 add second child into first child ( temp 4-component vector of float) 0:20 'f4' ( temp 4-component vector of float) 0:20 Convert int to float ( temp float) 0:20 Function Call: Test::staticMemFun(i1; ( global int) 0:20 Constant: 0:20 7 (const int) 0:21 Branch: Return with expression 0:21 'f4' ( temp 4-component vector of float) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:16 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: Test::staticMemFun(vf4; ( global 4-component vector of float) 0:5 Function Parameters: 0:5 'a' ( in 4-component vector of float) 0:? Sequence 0:6 Branch: Return with expression 0:6 vector-scale ( temp 4-component vector of float) 0:6 Constant: 0:6 2.000000 0:6 'a' ( in 4-component vector of float) 0:9 Function Definition: Test::staticMemFun(i1; ( global int) 0:9 Function Parameters: 0:9 'a' ( in int) 0:? Sequence 0:10 Branch: Return with expression 0:10 add ( temp int) 0:10 Constant: 0:10 2 (const int) 0:10 'a' ( in int) 0:16 Function Definition: @main( ( temp 4-component vector of float) 0:16 Function Parameters: 0:? Sequence 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'f4' ( temp 4-component vector of float) 0:18 Constant: 0:18 1.000000 0:18 1.000000 0:18 1.000000 0:18 1.000000 0:19 add second child into first child ( temp 4-component vector of float) 0:19 'f4' ( temp 4-component vector of float) 0:19 Function Call: Test::staticMemFun(vf4; ( global 4-component vector of float) 0:19 Constant: 0:19 5.000000 0:19 5.000000 0:19 5.000000 0:19 5.000000 0:20 add second child into first child ( temp 4-component vector of float) 0:20 'f4' ( temp 4-component vector of float) 0:20 Convert int to float ( temp float) 0:20 Function Call: Test::staticMemFun(i1; ( global int) 0:20 Constant: 0:20 7 (const int) 0:21 Branch: Return with expression 0:21 'f4' ( temp 4-component vector of float) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:16 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 52 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "Test::staticMemFun(vf4;" Name 10 "a" Name 17 "Test::staticMemFun(i1;" Name 16 "a" Name 20 "@main(" Name 32 "f4" Name 37 "param" Name 42 "param" Name 52 "@entryPointOutput" Decorate 52(@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) 13: TypeInt 32 1 14: TypePointer Function 13(int) 15: TypeFunction 13(int) 14(ptr) 19: TypeFunction 7(fvec4) 22: 6(float) Constant 1073741824 27: 13(int) Constant 2 33: 6(float) Constant 1065353216 34: 7(fvec4) ConstantComposite 33 33 33 33 35: 6(float) Constant 1084227584 36: 7(fvec4) ConstantComposite 35 35 35 35 41: 13(int) Constant 7 51: TypePointer Output 7(fvec4) 52(@entryPointOutput): 51(ptr) Variable Output 4(main): 2 Function None 3 5: Label 53: 7(fvec4) FunctionCall 20(@main() Store 52(@entryPointOutput) 53 Return FunctionEnd 11(Test::staticMemFun(vf4;): 7(fvec4) Function None 9 10(a): 8(ptr) FunctionParameter 12: Label 23: 7(fvec4) Load 10(a) 24: 7(fvec4) VectorTimesScalar 23 22 ReturnValue 24 FunctionEnd 17(Test::staticMemFun(i1;): 13(int) Function None 15 16(a): 14(ptr) FunctionParameter 18: Label 28: 13(int) Load 16(a) 29: 13(int) IAdd 27 28 ReturnValue 29 FunctionEnd 20(@main(): 7(fvec4) Function None 19 21: Label 32(f4): 8(ptr) Variable Function 37(param): 8(ptr) Variable Function 42(param): 14(ptr) Variable Function Store 32(f4) 34 Store 37(param) 36 38: 7(fvec4) FunctionCall 11(Test::staticMemFun(vf4;) 37(param) 39: 7(fvec4) Load 32(f4) 40: 7(fvec4) FAdd 39 38 Store 32(f4) 40 Store 42(param) 41 43: 13(int) FunctionCall 17(Test::staticMemFun(i1;) 42(param) 44: 6(float) ConvertSToF 43 45: 7(fvec4) Load 32(f4) 46: 7(fvec4) CompositeConstruct 44 44 44 44 47: 7(fvec4) FAdd 45 46 Store 32(f4) 47 48: 7(fvec4) Load 32(f4) ReturnValue 48 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out000066400000000000000000000175101506534232700272710ustar00rootroot00000000000000hlsl.store.rwbyteaddressbuffer.type.comp Shader version: 500 local_size = (64, 1, 1) 0:? Sequence 0:5 Function Definition: @main(vu3; ( temp void) 0:5 Function Parameters: 0:5 'dispatchThreadID' ( in 3-component vector of uint) 0:? Sequence 0:6 Test condition and select ( temp void) 0:6 Condition 0:6 Compare Equal ( temp bool) 0:6 direct index ( temp uint) 0:6 'dispatchThreadID' ( in 3-component vector of uint) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const uint) 0:6 true case 0:? Sequence 0:7 move second child to first child ( temp int) 0:7 'byteAddrTemp' ( temp int) 0:7 right-shift ( temp int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 2 (const int) 0:7 move second child to first child ( 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 'buffer' (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 'byteAddrTemp' ( temp int) 0:7 Constant: 0:7 2 (const uint) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp 3-component vector of uint) 0:? 'dispatchThreadID' ( temp 3-component vector of uint) 0:? 'dispatchThreadID' ( in 3-component vector of uint GlobalInvocationID) 0:5 Function Call: @main(vu3; ( temp void) 0:? 'dispatchThreadID' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'buffer' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'dispatchThreadID' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (64, 1, 1) 0:? Sequence 0:5 Function Definition: @main(vu3; ( temp void) 0:5 Function Parameters: 0:5 'dispatchThreadID' ( in 3-component vector of uint) 0:? Sequence 0:6 Test condition and select ( temp void) 0:6 Condition 0:6 Compare Equal ( temp bool) 0:6 direct index ( temp uint) 0:6 'dispatchThreadID' ( in 3-component vector of uint) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const uint) 0:6 true case 0:? Sequence 0:7 move second child to first child ( temp int) 0:7 'byteAddrTemp' ( temp int) 0:7 right-shift ( temp int) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 2 (const int) 0:7 move second child to first child ( 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 'buffer' (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 'byteAddrTemp' ( temp int) 0:7 Constant: 0:7 2 (const uint) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp 3-component vector of uint) 0:? 'dispatchThreadID' ( temp 3-component vector of uint) 0:? 'dispatchThreadID' ( in 3-component vector of uint GlobalInvocationID) 0:5 Function Call: @main(vu3; ( temp void) 0:? 'dispatchThreadID' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'buffer' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'dispatchThreadID' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 37 ExecutionMode 4 LocalSize 64 1 1 Source HLSL 500 Name 4 "main" Name 11 "@main(vu3;" Name 10 "dispatchThreadID" Name 23 "byteAddrTemp" Name 28 "buffer" MemberName 28(buffer) 0 "@data" Name 30 "buffer" Name 35 "dispatchThreadID" Name 37 "dispatchThreadID" Name 39 "param" Decorate 27 ArrayStride 4 Decorate 28(buffer) BufferBlock MemberDecorate 28(buffer) 0 Offset 0 Decorate 30(buffer) Binding 0 Decorate 30(buffer) DescriptorSet 0 Decorate 37(dispatchThreadID) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: 6(int) Constant 0 14: TypePointer Function 6(int) 17: TypeBool 21: TypeInt 32 1 22: TypePointer Function 21(int) 24: 21(int) Constant 0 25: 21(int) Constant 2 27: TypeRuntimeArray 6(int) 28(buffer): TypeStruct 27 29: TypePointer Uniform 28(buffer) 30(buffer): 29(ptr) Variable Uniform 32: 6(int) Constant 2 33: TypePointer Uniform 6(int) 36: TypePointer Input 7(ivec3) 37(dispatchThreadID): 36(ptr) Variable Input 4(main): 2 Function None 3 5: Label 35(dispatchThreadID): 8(ptr) Variable Function 39(param): 8(ptr) Variable Function 38: 7(ivec3) Load 37(dispatchThreadID) Store 35(dispatchThreadID) 38 40: 7(ivec3) Load 35(dispatchThreadID) Store 39(param) 40 41: 2 FunctionCall 11(@main(vu3;) 39(param) Return FunctionEnd 11(@main(vu3;): 2 Function None 9 10(dispatchThreadID): 8(ptr) FunctionParameter 12: Label 23(byteAddrTemp): 22(ptr) Variable Function 15: 14(ptr) AccessChain 10(dispatchThreadID) 13 16: 6(int) Load 15 18: 17(bool) IEqual 16 13 SelectionMerge 20 None BranchConditional 18 19 20 19: Label 26: 21(int) ShiftRightArithmetic 24 25 Store 23(byteAddrTemp) 26 31: 21(int) Load 23(byteAddrTemp) 34: 33(ptr) AccessChain 30(buffer) 24 31 Store 34 32 Branch 20 20: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.string.frag.out000066400000000000000000000073731506534232700223770ustar00rootroot00000000000000hlsl.string.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main(f1; ( temp float) 0:10 Function Parameters: 0:10 'f' ( in float) 0:? Sequence 0:11 Branch: Return with expression 0:11 'f' ( in float) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp float) 0:? 'f' ( temp float) 0:? 'f' (layout( location=0) in float) 0:10 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:10 Function Call: @main(f1; ( temp float) 0:? 'f' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out float) 0:? 'f' (layout( location=0) in float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:10 Function Definition: @main(f1; ( temp float) 0:10 Function Parameters: 0:10 'f' ( in float) 0:? Sequence 0:11 Branch: Return with expression 0:11 'f' ( in float) 0:10 Function Definition: main( ( temp void) 0:10 Function Parameters: 0:? Sequence 0:10 move second child to first child ( temp float) 0:? 'f' ( temp float) 0:? 'f' (layout( location=0) in float) 0:10 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:10 Function Call: @main(f1; ( temp float) 0:? 'f' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out float) 0:? 'f' (layout( location=0) in float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 17 20 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 10 "@main(f1;" Name 9 "f" Name 15 "f" Name 17 "f" Name 20 "@entryPointOutput" Name 21 "param" Decorate 17(f) Location 0 Decorate 20(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 16: TypePointer Input 6(float) 17(f): 16(ptr) Variable Input 19: TypePointer Output 6(float) 20(@entryPointOutput): 19(ptr) Variable Output 4(main): 2 Function None 3 5: Label 15(f): 7(ptr) Variable Function 21(param): 7(ptr) Variable Function 18: 6(float) Load 17(f) Store 15(f) 18 22: 6(float) Load 15(f) Store 21(param) 22 23: 6(float) FunctionCall 10(@main(f1;) 21(param) Store 20(@entryPointOutput) 23 Return FunctionEnd 10(@main(f1;): 6(float) Function None 8 9(f): 7(ptr) FunctionParameter 11: Label 12: 6(float) Load 9(f) ReturnValue 12 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.stringtoken.frag.out000066400000000000000000000142241506534232700234310ustar00rootroot00000000000000hlsl.stringtoken.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:16 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:16 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 Color: direct index for structure ( temp 4-component vector of float) 0:18 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:18 1.000000 0:19 Branch: Return with expression 0:19 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:16 Color: direct index for structure ( temp 4-component vector of float) 0:16 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:16 Constant: 0:16 0 (const int) 0:? Linker Objects 0:? 'TestTexture' ( uniform texture2D) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float TestUF}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:16 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:16 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 Color: direct index for structure ( temp 4-component vector of float) 0:18 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0.000000 0:18 0.000000 0:18 0.000000 0:18 1.000000 0:19 Branch: Return with expression 0:19 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:16 Color: direct index for structure ( temp 4-component vector of float) 0:16 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:16 Constant: 0:16 0 (const int) 0:? Linker Objects 0:? 'TestTexture' ( uniform texture2D) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float TestUF}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 25 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 13 "psout" Name 25 "@entryPointOutput.Color" Name 30 "TestTexture" Name 31 "$Global" MemberName 31($Global) 0 "TestUF" Name 33 "" Decorate 25(@entryPointOutput.Color) Location 0 Decorate 30(TestTexture) Binding 0 Decorate 30(TestTexture) DescriptorSet 0 Decorate 31($Global) Block MemberDecorate 31($Global) 0 Offset 0 Decorate 33 Binding 0 Decorate 33 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 8(PS_OUTPUT) 14: TypeInt 32 1 15: 14(int) Constant 0 16: 6(float) Constant 0 17: 6(float) Constant 1065353216 18: 7(fvec4) ConstantComposite 16 16 16 17 19: TypePointer Function 7(fvec4) 24: TypePointer Output 7(fvec4) 25(@entryPointOutput.Color): 24(ptr) Variable Output 28: TypeImage 6(float) 2D sampled format:Unknown 29: TypePointer UniformConstant 28 30(TestTexture): 29(ptr) Variable UniformConstant 31($Global): TypeStruct 7(fvec4) 32: TypePointer Uniform 31($Global) 33: 32(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 26:8(PS_OUTPUT) FunctionCall 10(@main() 27: 7(fvec4) CompositeExtract 26 0 Store 25(@entryPointOutput.Color) 27 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(psout): 12(ptr) Variable Function 20: 19(ptr) AccessChain 13(psout) 15 Store 20 18 21:8(PS_OUTPUT) Load 13(psout) ReturnValue 21 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.struct.frag.out000066400000000000000000000633061506534232700224130ustar00rootroot00000000000000hlsl.struct.frag WARNING: 0:26: 'register' : ignoring shader_profile WARNING: 0:27: 'register' : ignoring shader_profile WARNING: 0:30: 'register' : ignoring shader_profile Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:40 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; ( temp 4-component vector of float) 0:40 Function Parameters: 0:40 'input' ( in 4-component vector of float) 0:40 's' ( in structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Sequence 0:45 Compare Equal ( temp bool) 0:45 's3' ( temp structure{ temp 3-component vector of bool b3}) 0:45 's3' ( temp structure{ temp 3-component vector of bool b3}) 0:46 move second child to first child ( temp 4-component vector of float) 0:46 i: direct index for structure ( temp 4-component vector of float) 0:46 's2' ( global structure{ temp 4-component vector of float i}) 0:46 Constant: 0:46 0 (const int) 0:46 ff4: direct index for structure ( temp 4-component vector of float) 0:46 's' ( in structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:46 Constant: 0:46 7 (const int) 0:50 move second child to first child ( temp structure{}) 0:50 'e' ( temp structure{}) 0:50 e: direct index for structure ( temp structure{}) 0:50 'ce' ( temp structure{ temp structure{} e}) 0:50 Constant: 0:50 0 (const int) 0:52 Branch: Return with expression 0:52 'input' ( in 4-component vector of float) 0:40 Function Definition: PixelShaderFunction( ( temp void) 0:40 Function Parameters: 0:? Sequence 0:40 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:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 a: direct index for structure ( temp 4-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 0 (const int) 0:? 's.a' (layout( location=1) smooth in 4-component vector of float) 0:40 move second child to first child ( temp bool) 0:40 b: direct index for structure ( temp bool) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 1 (const int) 0:? 's.b' (layout( location=2) flat in bool) 0:40 move second child to first child ( temp 1-component vector of float) 0:40 c: direct index for structure ( temp 1-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 2 (const int) 0:? 's.c' (layout( location=3) centroid noperspective in 1-component vector of float) 0:40 move second child to first child ( temp 2-component vector of float) 0:40 d: direct index for structure ( temp 2-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 3 (const int) 0:? 's.d' (layout( location=4) centroid sample in 2-component vector of float) 0:40 move second child to first child ( temp bool) 0:40 ff1: direct index for structure ( temp bool) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 4 (const int) 0:? 's.ff1' ( flat in bool Face) 0:40 move second child to first child ( temp bool) 0:40 ff2: direct index for structure ( temp bool) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 5 (const int) 0:? 's.ff2' (layout( location=5) flat in bool) 0:40 move second child to first child ( temp bool) 0:40 ff3: direct index for structure ( temp bool) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 6 (const int) 0:? 's.ff3' (layout( location=6) flat in bool) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 ff4: direct index for structure ( temp 4-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 7 (const int) 0:? 's.ff4' (layout( location=7) in 4-component vector of float) 0:40 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:40 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform structure{ temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout( binding=5 offset=1620) uniform float ff5, layout( binding=8 offset=1636) uniform float ff6}) 0:? 's2' ( global structure{ temp 4-component vector of float i}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:? 's.ff1' ( flat in bool Face) 0:? 's.a' (layout( location=1) smooth in 4-component vector of float) 0:? 's.b' (layout( location=2) flat in bool) 0:? 's.c' (layout( location=3) centroid noperspective in 1-component vector of float) 0:? 's.d' (layout( location=4) centroid sample in 2-component vector of float) 0:? 's.ff2' (layout( location=5) flat in bool) 0:? 's.ff3' (layout( location=6) flat in bool) 0:? 's.ff4' (layout( location=7) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:40 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; ( temp 4-component vector of float) 0:40 Function Parameters: 0:40 'input' ( in 4-component vector of float) 0:40 's' ( in structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Sequence 0:45 Compare Equal ( temp bool) 0:45 's3' ( temp structure{ temp 3-component vector of bool b3}) 0:45 's3' ( temp structure{ temp 3-component vector of bool b3}) 0:46 move second child to first child ( temp 4-component vector of float) 0:46 i: direct index for structure ( temp 4-component vector of float) 0:46 's2' ( global structure{ temp 4-component vector of float i}) 0:46 Constant: 0:46 0 (const int) 0:46 ff4: direct index for structure ( temp 4-component vector of float) 0:46 's' ( in structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:46 Constant: 0:46 7 (const int) 0:50 move second child to first child ( temp structure{}) 0:50 'e' ( temp structure{}) 0:50 e: direct index for structure ( temp structure{}) 0:50 'ce' ( temp structure{ temp structure{} e}) 0:50 Constant: 0:50 0 (const int) 0:52 Branch: Return with expression 0:52 'input' ( in 4-component vector of float) 0:40 Function Definition: PixelShaderFunction( ( temp void) 0:40 Function Parameters: 0:? Sequence 0:40 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:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 a: direct index for structure ( temp 4-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 0 (const int) 0:? 's.a' (layout( location=1) smooth in 4-component vector of float) 0:40 move second child to first child ( temp bool) 0:40 b: direct index for structure ( temp bool) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 1 (const int) 0:? 's.b' (layout( location=2) flat in bool) 0:40 move second child to first child ( temp 1-component vector of float) 0:40 c: direct index for structure ( temp 1-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 2 (const int) 0:? 's.c' (layout( location=3) centroid noperspective in 1-component vector of float) 0:40 move second child to first child ( temp 2-component vector of float) 0:40 d: direct index for structure ( temp 2-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 3 (const int) 0:? 's.d' (layout( location=4) centroid sample in 2-component vector of float) 0:40 move second child to first child ( temp bool) 0:40 ff1: direct index for structure ( temp bool) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 4 (const int) 0:? 's.ff1' ( flat in bool Face) 0:40 move second child to first child ( temp bool) 0:40 ff2: direct index for structure ( temp bool) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 5 (const int) 0:? 's.ff2' (layout( location=5) flat in bool) 0:40 move second child to first child ( temp bool) 0:40 ff3: direct index for structure ( temp bool) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 6 (const int) 0:? 's.ff3' (layout( location=6) flat in bool) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 ff4: direct index for structure ( temp 4-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 7 (const int) 0:? 's.ff4' (layout( location=7) in 4-component vector of float) 0:40 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:40 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform structure{ temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout( binding=5 offset=1620) uniform float ff5, layout( binding=8 offset=1636) uniform float ff6}) 0:? 's2' ( global structure{ temp 4-component vector of float i}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:? 's.ff1' ( flat in bool Face) 0:? 's.a' (layout( location=1) smooth in 4-component vector of float) 0:? 's.b' (layout( location=2) flat in bool) 0:? 's.c' (layout( location=3) centroid noperspective in 1-component vector of float) 0:? 's.d' (layout( location=4) centroid sample in 2-component vector of float) 0:? 's.ff2' (layout( location=5) flat in bool) 0:? 's.ff3' (layout( location=6) flat in bool) 0:? 's.ff4' (layout( location=7) in 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 102 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 51 54 59 65 71 76 80 84 87 91 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "IN_S" MemberName 11(IN_S) 0 "a" MemberName 11(IN_S) 1 "b" MemberName 11(IN_S) 2 "c" MemberName 11(IN_S) 3 "d" MemberName 11(IN_S) 4 "ff1" MemberName 11(IN_S) 5 "ff2" MemberName 11(IN_S) 6 "ff3" MemberName 11(IN_S) 7 "ff4" Name 16 "@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;" Name 14 "input" Name 15 "s" Name 19 "FS" MemberName 19(FS) 0 "b3" Name 21 "s3" Name 28 "" MemberName 28 0 "i" Name 30 "s2" Name 38 "empty" Name 40 "e" Name 41 "containEmpty" MemberName 41(containEmpty) 0 "e" Name 43 "ce" Name 49 "input" Name 51 "input" Name 53 "s" Name 54 "s.a" Name 59 "s.b" Name 65 "s.c" Name 71 "s.d" Name 76 "s.ff1" Name 80 "s.ff2" Name 84 "s.ff3" Name 87 "s.ff4" Name 91 "@entryPointOutput" Name 92 "param" Name 94 "param" Name 98 "myS" MemberName 98(myS) 0 "b" MemberName 98(myS) 1 "c" MemberName 98(myS) 2 "a" MemberName 98(myS) 3 "d" Name 99 "$Global" MemberName 99($Global) 0 "s1" MemberName 99($Global) 1 "ff5" MemberName 99($Global) 2 "ff6" Name 101 "" Decorate 51(input) Location 0 Decorate 54(s.a) Location 1 Decorate 59(s.b) Flat Decorate 59(s.b) Location 2 Decorate 65(s.c) NoPerspective Decorate 65(s.c) Centroid Decorate 65(s.c) Location 3 Decorate 71(s.d) Centroid Decorate 71(s.d) Location 4 Decorate 76(s.ff1) BuiltIn FrontFacing Decorate 76(s.ff1) Flat Decorate 80(s.ff2) Flat Decorate 80(s.ff2) Location 5 Decorate 84(s.ff3) Flat Decorate 84(s.ff3) Location 6 Decorate 87(s.ff4) Location 7 Decorate 91(@entryPointOutput) Location 0 MemberDecorate 98(myS) 0 Offset 0 MemberDecorate 98(myS) 1 Offset 4 MemberDecorate 98(myS) 2 Offset 16 MemberDecorate 98(myS) 3 Offset 32 Decorate 99($Global) Block MemberDecorate 99($Global) 0 Offset 0 MemberDecorate 99($Global) 1 Offset 1620 MemberDecorate 99($Global) 2 Offset 1636 Decorate 101 Binding 0 Decorate 101 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeBool 10: TypeVector 6(float) 2 11(IN_S): TypeStruct 7(fvec4) 9(bool) 6(float) 10(fvec2) 9(bool) 9(bool) 9(bool) 7(fvec4) 12: TypePointer Function 11(IN_S) 13: TypeFunction 7(fvec4) 8(ptr) 12(ptr) 18: TypeVector 9(bool) 3 19(FS): TypeStruct 18(bvec3) 20: TypePointer Function 19(FS) 28: TypeStruct 7(fvec4) 29: TypePointer Private 28(struct) 30(s2): 29(ptr) Variable Private 31: TypeInt 32 1 32: 31(int) Constant 0 33: 31(int) Constant 7 36: TypePointer Private 7(fvec4) 38(empty): TypeStruct 39: TypePointer Function 38(empty) 41(containEmpty): TypeStruct 38(empty) 42: TypePointer Function 41(containEmpty) 50: TypePointer Input 7(fvec4) 51(input): 50(ptr) Variable Input 54(s.a): 50(ptr) Variable Input 57: 31(int) Constant 1 58: TypePointer Input 9(bool) 59(s.b): 58(ptr) Variable Input 61: TypePointer Function 9(bool) 63: 31(int) Constant 2 64: TypePointer Input 6(float) 65(s.c): 64(ptr) Variable Input 67: TypePointer Function 6(float) 69: 31(int) Constant 3 70: TypePointer Input 10(fvec2) 71(s.d): 70(ptr) Variable Input 73: TypePointer Function 10(fvec2) 75: 31(int) Constant 4 76(s.ff1): 58(ptr) Variable Input 79: 31(int) Constant 5 80(s.ff2): 58(ptr) Variable Input 83: 31(int) Constant 6 84(s.ff3): 58(ptr) Variable Input 87(s.ff4): 50(ptr) Variable Input 90: TypePointer Output 7(fvec4) 91(@entryPointOutput): 90(ptr) Variable Output 97: TypeInt 32 0 98(myS): TypeStruct 97(int) 97(int) 7(fvec4) 7(fvec4) 99($Global): TypeStruct 98(myS) 6(float) 6(float) 100: TypePointer Uniform 99($Global) 101: 100(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label 49(input): 8(ptr) Variable Function 53(s): 12(ptr) Variable Function 92(param): 8(ptr) Variable Function 94(param): 12(ptr) Variable Function 52: 7(fvec4) Load 51(input) Store 49(input) 52 55: 7(fvec4) Load 54(s.a) 56: 8(ptr) AccessChain 53(s) 32 Store 56 55 60: 9(bool) Load 59(s.b) 62: 61(ptr) AccessChain 53(s) 57 Store 62 60 66: 6(float) Load 65(s.c) 68: 67(ptr) AccessChain 53(s) 63 Store 68 66 72: 10(fvec2) Load 71(s.d) 74: 73(ptr) AccessChain 53(s) 69 Store 74 72 77: 9(bool) Load 76(s.ff1) 78: 61(ptr) AccessChain 53(s) 75 Store 78 77 81: 9(bool) Load 80(s.ff2) 82: 61(ptr) AccessChain 53(s) 79 Store 82 81 85: 9(bool) Load 84(s.ff3) 86: 61(ptr) AccessChain 53(s) 83 Store 86 85 88: 7(fvec4) Load 87(s.ff4) 89: 8(ptr) AccessChain 53(s) 33 Store 89 88 93: 7(fvec4) Load 49(input) Store 92(param) 93 95: 11(IN_S) Load 53(s) Store 94(param) 95 96: 7(fvec4) FunctionCall 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;) 92(param) 94(param) Store 91(@entryPointOutput) 96 Return FunctionEnd 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;): 7(fvec4) Function None 13 14(input): 8(ptr) FunctionParameter 15(s): 12(ptr) FunctionParameter 17: Label 21(s3): 20(ptr) Variable Function 40(e): 39(ptr) Variable Function 43(ce): 42(ptr) Variable Function 22: 19(FS) Load 21(s3) 23: 19(FS) Load 21(s3) 24: 18(bvec3) CompositeExtract 22 0 25: 18(bvec3) CompositeExtract 23 0 26: 18(bvec3) LogicalEqual 24 25 27: 9(bool) All 26 34: 8(ptr) AccessChain 15(s) 33 35: 7(fvec4) Load 34 37: 36(ptr) AccessChain 30(s2) 32 Store 37 35 44: 39(ptr) AccessChain 43(ce) 32 45: 38(empty) Load 44 Store 40(e) 45 46: 7(fvec4) Load 14(input) ReturnValue 46 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.struct.split-1.vert.out000066400000000000000000000443111506534232700237370ustar00rootroot00000000000000hlsl.struct.split-1.vert Shader version: 500 0:? Sequence 0:17 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Function Parameters: 0:17 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 'Pos_loose' ( in 4-component vector of float) 0:? Sequence 0:20 move second child to first child ( temp int) 0:20 x0_out: direct index for structure ( temp int) 0:20 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:20 Constant: 0:20 0 (const int) 0:20 x0_in: direct index for structure ( temp int) 0:20 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp 4-component vector of float) 0:21 Pos_out: direct index for structure ( temp 4-component vector of float) 0:21 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:21 Constant: 0:21 1 (const int) 0:21 add ( temp 4-component vector of float) 0:21 Pos_in: direct index for structure ( temp 4-component vector of float) 0:21 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:21 Constant: 0:21 1 (const int) 0:21 'Pos_loose' ( in 4-component vector of float) 0:22 move second child to first child ( temp int) 0:22 x1_out: direct index for structure ( temp int) 0:22 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 2 (const int) 0:22 x1_in: direct index for structure ( temp int) 0:22 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 Constant: 0:22 2 (const int) 0:24 Branch: Return with expression 0:24 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 x0_in: direct index for structure ( temp int) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 Constant: 0:17 0 (const int) 0:? 'vsin.x0_in' (layout( location=0) in int) 0:17 move second child to first child ( temp 4-component vector of float) 0:17 Pos_in: direct index for structure ( temp 4-component vector of float) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 Constant: 0:17 1 (const int) 0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float) 0:17 move second child to first child ( temp int) 0:17 x1_in: direct index for structure ( temp int) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 Constant: 0:17 2 (const int) 0:? 'vsin.x1_in' (layout( location=2) in int) 0:17 move second child to first child ( temp 4-component vector of float) 0:? 'Pos_loose' ( temp 4-component vector of float) 0:? 'Pos_loose' (layout( location=3) in 4-component vector of float) 0:17 Sequence 0:17 move second child to first child ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Function Call: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:? 'Pos_loose' ( temp 4-component vector of float) 0:17 move second child to first child ( temp int) 0:? '@entryPointOutput.x0_out' (layout( location=0) out int) 0:17 x0_out: direct index for structure ( temp int) 0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 0 (const int) 0:17 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position) 0:17 Pos_out: direct index for structure ( temp 4-component vector of float) 0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 1 (const int) 0:17 move second child to first child ( temp int) 0:? '@entryPointOutput.x1_out' (layout( location=1) out int) 0:17 x1_out: direct index for structure ( temp int) 0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 2 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position) 0:? '@entryPointOutput.x0_out' (layout( location=0) out int) 0:? '@entryPointOutput.x1_out' (layout( location=1) out int) 0:? 'vsin.x0_in' (layout( location=0) in int) 0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float) 0:? 'vsin.x1_in' (layout( location=2) in int) 0:? 'Pos_loose' (layout( location=3) in 4-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:17 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Function Parameters: 0:17 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 'Pos_loose' ( in 4-component vector of float) 0:? Sequence 0:20 move second child to first child ( temp int) 0:20 x0_out: direct index for structure ( temp int) 0:20 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:20 Constant: 0:20 0 (const int) 0:20 x0_in: direct index for structure ( temp int) 0:20 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp 4-component vector of float) 0:21 Pos_out: direct index for structure ( temp 4-component vector of float) 0:21 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:21 Constant: 0:21 1 (const int) 0:21 add ( temp 4-component vector of float) 0:21 Pos_in: direct index for structure ( temp 4-component vector of float) 0:21 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:21 Constant: 0:21 1 (const int) 0:21 'Pos_loose' ( in 4-component vector of float) 0:22 move second child to first child ( temp int) 0:22 x1_out: direct index for structure ( temp int) 0:22 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 2 (const int) 0:22 x1_in: direct index for structure ( temp int) 0:22 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 Constant: 0:22 2 (const int) 0:24 Branch: Return with expression 0:24 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Function Definition: main( ( temp void) 0:17 Function Parameters: 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 x0_in: direct index for structure ( temp int) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 Constant: 0:17 0 (const int) 0:? 'vsin.x0_in' (layout( location=0) in int) 0:17 move second child to first child ( temp 4-component vector of float) 0:17 Pos_in: direct index for structure ( temp 4-component vector of float) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 Constant: 0:17 1 (const int) 0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float) 0:17 move second child to first child ( temp int) 0:17 x1_in: direct index for structure ( temp int) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 Constant: 0:17 2 (const int) 0:? 'vsin.x1_in' (layout( location=2) in int) 0:17 move second child to first child ( temp 4-component vector of float) 0:? 'Pos_loose' ( temp 4-component vector of float) 0:? 'Pos_loose' (layout( location=3) in 4-component vector of float) 0:17 Sequence 0:17 move second child to first child ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Function Call: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:? 'Pos_loose' ( temp 4-component vector of float) 0:17 move second child to first child ( temp int) 0:? '@entryPointOutput.x0_out' (layout( location=0) out int) 0:17 x0_out: direct index for structure ( temp int) 0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 0 (const int) 0:17 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position) 0:17 Pos_out: direct index for structure ( temp 4-component vector of float) 0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 1 (const int) 0:17 move second child to first child ( temp int) 0:? '@entryPointOutput.x1_out' (layout( location=1) out int) 0:17 x1_out: direct index for structure ( temp int) 0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 2 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position) 0:? '@entryPointOutput.x0_out' (layout( location=0) out int) 0:? '@entryPointOutput.x1_out' (layout( location=1) out int) 0:? 'vsin.x0_in' (layout( location=0) in int) 0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float) 0:? 'vsin.x1_in' (layout( location=2) in int) 0:? 'Pos_loose' (layout( location=3) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 40 44 47 51 60 64 67 Source HLSL 500 Name 4 "main" Name 9 "VS_INPUT" MemberName 9(VS_INPUT) 0 "x0_in" MemberName 9(VS_INPUT) 1 "Pos_in" MemberName 9(VS_INPUT) 2 "x1_in" Name 12 "VS_OUTPUT" MemberName 12(VS_OUTPUT) 0 "x0_out" MemberName 12(VS_OUTPUT) 1 "Pos_out" MemberName 12(VS_OUTPUT) 2 "x1_out" Name 16 "@main(struct-VS_INPUT-i1-vf4-i11;vf4;" Name 14 "vsin" Name 15 "Pos_loose" Name 19 "vsout" Name 38 "vsin" Name 40 "vsin.x0_in" Name 44 "vsin.Pos_in" Name 47 "vsin.x1_in" Name 50 "Pos_loose" Name 51 "Pos_loose" Name 53 "flattenTemp" Name 54 "param" Name 56 "param" Name 60 "@entryPointOutput.x0_out" Name 64 "@entryPointOutput.Pos_out" Name 67 "@entryPointOutput.x1_out" Decorate 40(vsin.x0_in) Location 0 Decorate 44(vsin.Pos_in) Location 1 Decorate 47(vsin.x1_in) Location 2 Decorate 51(Pos_loose) Location 3 Decorate 60(@entryPointOutput.x0_out) Location 0 Decorate 64(@entryPointOutput.Pos_out) BuiltIn Position Decorate 67(@entryPointOutput.x1_out) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFloat 32 8: TypeVector 7(float) 4 9(VS_INPUT): TypeStruct 6(int) 8(fvec4) 6(int) 10: TypePointer Function 9(VS_INPUT) 11: TypePointer Function 8(fvec4) 12(VS_OUTPUT): TypeStruct 6(int) 8(fvec4) 6(int) 13: TypeFunction 12(VS_OUTPUT) 10(ptr) 11(ptr) 18: TypePointer Function 12(VS_OUTPUT) 20: 6(int) Constant 0 21: TypePointer Function 6(int) 25: 6(int) Constant 1 31: 6(int) Constant 2 39: TypePointer Input 6(int) 40(vsin.x0_in): 39(ptr) Variable Input 43: TypePointer Input 8(fvec4) 44(vsin.Pos_in): 43(ptr) Variable Input 47(vsin.x1_in): 39(ptr) Variable Input 51(Pos_loose): 43(ptr) Variable Input 59: TypePointer Output 6(int) 60(@entryPointOutput.x0_out): 59(ptr) Variable Output 63: TypePointer Output 8(fvec4) 64(@entryPointOutput.Pos_out): 63(ptr) Variable Output 67(@entryPointOutput.x1_out): 59(ptr) Variable Output 4(main): 2 Function None 3 5: Label 38(vsin): 10(ptr) Variable Function 50(Pos_loose): 11(ptr) Variable Function 53(flattenTemp): 18(ptr) Variable Function 54(param): 10(ptr) Variable Function 56(param): 11(ptr) Variable Function 41: 6(int) Load 40(vsin.x0_in) 42: 21(ptr) AccessChain 38(vsin) 20 Store 42 41 45: 8(fvec4) Load 44(vsin.Pos_in) 46: 11(ptr) AccessChain 38(vsin) 25 Store 46 45 48: 6(int) Load 47(vsin.x1_in) 49: 21(ptr) AccessChain 38(vsin) 31 Store 49 48 52: 8(fvec4) Load 51(Pos_loose) Store 50(Pos_loose) 52 55: 9(VS_INPUT) Load 38(vsin) Store 54(param) 55 57: 8(fvec4) Load 50(Pos_loose) Store 56(param) 57 58:12(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;) 54(param) 56(param) Store 53(flattenTemp) 58 61: 21(ptr) AccessChain 53(flattenTemp) 20 62: 6(int) Load 61 Store 60(@entryPointOutput.x0_out) 62 65: 11(ptr) AccessChain 53(flattenTemp) 25 66: 8(fvec4) Load 65 Store 64(@entryPointOutput.Pos_out) 66 68: 21(ptr) AccessChain 53(flattenTemp) 31 69: 6(int) Load 68 Store 67(@entryPointOutput.x1_out) 69 Return FunctionEnd 16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;):12(VS_OUTPUT) Function None 13 14(vsin): 10(ptr) FunctionParameter 15(Pos_loose): 11(ptr) FunctionParameter 17: Label 19(vsout): 18(ptr) Variable Function 22: 21(ptr) AccessChain 14(vsin) 20 23: 6(int) Load 22 24: 21(ptr) AccessChain 19(vsout) 20 Store 24 23 26: 11(ptr) AccessChain 14(vsin) 25 27: 8(fvec4) Load 26 28: 8(fvec4) Load 15(Pos_loose) 29: 8(fvec4) FAdd 27 28 30: 11(ptr) AccessChain 19(vsout) 25 Store 30 29 32: 21(ptr) AccessChain 14(vsin) 31 33: 6(int) Load 32 34: 21(ptr) AccessChain 19(vsout) 31 Store 34 33 35:12(VS_OUTPUT) Load 19(vsout) ReturnValue 35 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.struct.split.array.geom.out000066400000000000000000000373341506534232700246740ustar00rootroot00000000000000hlsl.struct.split.array.geom Shader version: 500 invocations = -1 max_vertices = 4 input primitive = points output primitive = triangle_strip 0:? Sequence 0:13 Function Definition: @main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; ( temp void) 0:13 Function Parameters: 0:13 'v' ( in 1-element array of uint) 0:13 'OutputStream' ( out structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:16 'Out' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp int) 0:18 'x' ( temp int) 0:18 Constant: 0:18 0 (const int) 0:18 Loop with condition tested first 0:18 Loop Condition 0:18 Compare Less Than ( temp bool) 0:18 'x' ( temp int) 0:18 Constant: 0:18 2 (const int) 0:18 Loop Body 0:19 Sequence 0:19 move second child to first child ( temp int) 0:19 'y' ( temp int) 0:19 Constant: 0:19 0 (const int) 0:19 Loop with condition tested first 0:19 Loop Condition 0:19 Compare Less Than ( temp bool) 0:19 'y' ( temp int) 0:19 Constant: 0:19 2 (const int) 0:19 Loop Body 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:20 indirect index ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:20 indirect index ( temp 3-element array of structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:20 'Verts' ( temp 2-element array of 3-element array of structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:20 'x' ( temp int) 0:20 'y' ( temp int) 0:20 'Out' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:19 Loop Terminal Expression 0:19 Pre-Increment ( temp int) 0:19 'y' ( temp int) 0:18 Loop Terminal Expression 0:18 Pre-Increment ( temp int) 0:18 'x' ( temp int) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 1-element array of uint) 0:? 'v' ( temp 1-element array of uint) 0:? 'v' (layout( location=0) in 1-element array of uint) 0:13 Function Call: @main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; ( temp void) 0:? 'v' ( temp 1-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:? Linker Objects 0:? 'v' (layout( location=0) in 1-element array of uint) 0:? 'OutputStream.Pos' ( out 4-component vector of float Position) 0:? 'OutputStream.TexCoord' (layout( location=0) out 2-component vector of float) 0:? 'OutputStream.TerrainPos' (layout( location=1) out 3-component vector of float) 0:? 'OutputStream.VertexID' (layout( location=2) out uint) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 4 input primitive = points output primitive = triangle_strip 0:? Sequence 0:13 Function Definition: @main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; ( temp void) 0:13 Function Parameters: 0:13 'v' ( in 1-element array of uint) 0:13 'OutputStream' ( out structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:16 'Out' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0 (const uint) 0:18 Sequence 0:18 move second child to first child ( temp int) 0:18 'x' ( temp int) 0:18 Constant: 0:18 0 (const int) 0:18 Loop with condition tested first 0:18 Loop Condition 0:18 Compare Less Than ( temp bool) 0:18 'x' ( temp int) 0:18 Constant: 0:18 2 (const int) 0:18 Loop Body 0:19 Sequence 0:19 move second child to first child ( temp int) 0:19 'y' ( temp int) 0:19 Constant: 0:19 0 (const int) 0:19 Loop with condition tested first 0:19 Loop Condition 0:19 Compare Less Than ( temp bool) 0:19 'y' ( temp int) 0:19 Constant: 0:19 2 (const int) 0:19 Loop Body 0:20 move second child to first child ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:20 indirect index ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:20 indirect index ( temp 3-element array of structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:20 'Verts' ( temp 2-element array of 3-element array of structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:20 'x' ( temp int) 0:20 'y' ( temp int) 0:20 'Out' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:19 Loop Terminal Expression 0:19 Pre-Increment ( temp int) 0:19 'y' ( temp int) 0:18 Loop Terminal Expression 0:18 Pre-Increment ( temp int) 0:18 'x' ( temp int) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 1-element array of uint) 0:? 'v' ( temp 1-element array of uint) 0:? 'v' (layout( location=0) in 1-element array of uint) 0:13 Function Call: @main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; ( temp void) 0:? 'v' ( temp 1-element array of uint) 0:? 'OutputStream' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:? Linker Objects 0:? 'v' (layout( location=0) in 1-element array of uint) 0:? 'OutputStream.Pos' ( out 4-component vector of float Position) 0:? 'OutputStream.TexCoord' (layout( location=0) out 2-component vector of float) 0:? 'OutputStream.TerrainPos' (layout( location=1) out 3-component vector of float) 0:? 'OutputStream.VertexID' (layout( location=2) out uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 82 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 66 75 77 79 81 ExecutionMode 4 InputPoints ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 4 Source HLSL 500 Name 4 "main" Name 14 "PSInput" MemberName 14(PSInput) 0 "Pos" MemberName 14(PSInput) 1 "TexCoord" MemberName 14(PSInput) 2 "TerrainPos" MemberName 14(PSInput) 3 "VertexID" Name 19 "@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;" Name 17 "v" Name 18 "OutputStream" Name 21 "Out" Name 30 "x" Name 41 "y" Name 54 "Verts" Name 64 "v" Name 66 "v" Name 68 "OutputStream" Name 69 "param" Name 71 "param" Name 75 "OutputStream.Pos" Name 77 "OutputStream.TexCoord" Name 79 "OutputStream.TerrainPos" Name 81 "OutputStream.VertexID" Decorate 66(v) Location 0 Decorate 75(OutputStream.Pos) BuiltIn Position Decorate 77(OutputStream.TexCoord) Location 0 Decorate 79(OutputStream.TerrainPos) Location 1 Decorate 81(OutputStream.VertexID) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 1 8: TypeArray 6(int) 7 9: TypePointer Function 8 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypeVector 10(float) 2 13: TypeVector 10(float) 3 14(PSInput): TypeStruct 11(fvec4) 12(fvec2) 13(fvec3) 6(int) 15: TypePointer Function 14(PSInput) 16: TypeFunction 2 9(ptr) 15(ptr) 22: 10(float) Constant 0 23: 11(fvec4) ConstantComposite 22 22 22 22 24: 12(fvec2) ConstantComposite 22 22 25: 13(fvec3) ConstantComposite 22 22 22 26: 6(int) Constant 0 27: 14(PSInput) ConstantComposite 23 24 25 26 28: TypeInt 32 1 29: TypePointer Function 28(int) 31: 28(int) Constant 0 38: 28(int) Constant 2 39: TypeBool 49: 6(int) Constant 3 50: TypeArray 14(PSInput) 49 51: 6(int) Constant 2 52: TypeArray 50 51 53: TypePointer Function 52 60: 28(int) Constant 1 65: TypePointer Input 8 66(v): 65(ptr) Variable Input 74: TypePointer Output 11(fvec4) 75(OutputStream.Pos): 74(ptr) Variable Output 76: TypePointer Output 12(fvec2) 77(OutputStream.TexCoord): 76(ptr) Variable Output 78: TypePointer Output 13(fvec3) 79(OutputStream.TerrainPos): 78(ptr) Variable Output 80: TypePointer Output 6(int) 81(OutputStream.VertexID): 80(ptr) Variable Output 4(main): 2 Function None 3 5: Label 64(v): 9(ptr) Variable Function 68(OutputStream): 15(ptr) Variable Function 69(param): 9(ptr) Variable Function 71(param): 15(ptr) Variable Function 67: 8 Load 66(v) Store 64(v) 67 70: 8 Load 64(v) Store 69(param) 70 72: 2 FunctionCall 19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;) 69(param) 71(param) 73: 14(PSInput) Load 71(param) Store 68(OutputStream) 73 Return FunctionEnd 19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;): 2 Function None 16 17(v): 9(ptr) FunctionParameter 18(OutputStream): 15(ptr) FunctionParameter 20: Label 21(Out): 15(ptr) Variable Function 30(x): 29(ptr) Variable Function 41(y): 29(ptr) Variable Function 54(Verts): 53(ptr) Variable Function Store 21(Out) 27 Store 30(x) 31 Branch 32 32: Label LoopMerge 34 35 None Branch 36 36: Label 37: 28(int) Load 30(x) 40: 39(bool) SLessThan 37 38 BranchConditional 40 33 34 33: Label Store 41(y) 31 Branch 42 42: Label LoopMerge 44 45 None Branch 46 46: Label 47: 28(int) Load 41(y) 48: 39(bool) SLessThan 47 38 BranchConditional 48 43 44 43: Label 55: 28(int) Load 30(x) 56: 28(int) Load 41(y) 57: 14(PSInput) Load 21(Out) 58: 15(ptr) AccessChain 54(Verts) 55 56 Store 58 57 Branch 45 45: Label 59: 28(int) Load 41(y) 61: 28(int) IAdd 59 60 Store 41(y) 61 Branch 42 44: Label Branch 35 35: Label 62: 28(int) Load 30(x) 63: 28(int) IAdd 62 60 Store 30(x) 63 Branch 32 34: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.struct.split.assign.frag.out000066400000000000000000000415251506534232700250270ustar00rootroot00000000000000hlsl.struct.split.assign.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(i1;struct-S-f1-vf41[3]; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'i' ( in int) 0:7 'input' ( in 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:? Sequence 0:9 move second child to first child ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:9 'input' ( in 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:9 'a' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:11 Branch: Return with expression 0:11 pos: direct index for structure ( temp 4-component vector of float) 0:11 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:11 'a' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp int) 0:? 'i' ( temp int) 0:? 'i' (layout( location=0) flat in int) 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 f: direct index for structure ( temp float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 0 (const int) 0:? 'input[0].f' (layout( location=1) in float) 0:7 move second child to first child ( temp 4-component vector of float) 0:7 pos: direct index for structure ( temp 4-component vector of float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in 4-component vector of float FragCoord) 0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord) 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) 0:7 f: direct index for structure ( temp float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:? 'input[1].f' (layout( location=2) in float) 0:7 move second child to first child ( temp 4-component vector of float) 0:7 pos: direct index for structure ( temp 4-component vector of float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in 4-component vector of float FragCoord) 0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) 0:7 f: direct index for structure ( temp float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 2 (const int) 0:7 Constant: 0:7 0 (const int) 0:? 'input[2].f' (layout( location=3) in float) 0:7 move second child to first child ( temp 4-component vector of float) 0:7 pos: direct index for structure ( temp 4-component vector of float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 2 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in 4-component vector of float FragCoord) 0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord) 0:7 Constant: 0:7 2 (const int) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(i1;struct-S-f1-vf41[3]; ( temp 4-component vector of float) 0:? 'i' ( temp int) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'i' (layout( location=0) flat in int) 0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord) 0:? 'input[0].f' (layout( location=1) in float) 0:? 'input[1].f' (layout( location=2) in float) 0:? 'input[2].f' (layout( location=3) in float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(i1;struct-S-f1-vf41[3]; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'i' ( in int) 0:7 'input' ( in 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:? Sequence 0:9 move second child to first child ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:9 'input' ( in 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:9 'a' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:11 Branch: Return with expression 0:11 pos: direct index for structure ( temp 4-component vector of float) 0:11 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:11 'a' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 1 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp int) 0:? 'i' ( temp int) 0:? 'i' (layout( location=0) flat in int) 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 f: direct index for structure ( temp float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 0 (const int) 0:? 'input[0].f' (layout( location=1) in float) 0:7 move second child to first child ( temp 4-component vector of float) 0:7 pos: direct index for structure ( temp 4-component vector of float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in 4-component vector of float FragCoord) 0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord) 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) 0:7 f: direct index for structure ( temp float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) 0:? 'input[1].f' (layout( location=2) in float) 0:7 move second child to first child ( temp 4-component vector of float) 0:7 pos: direct index for structure ( temp 4-component vector of float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in 4-component vector of float FragCoord) 0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) 0:7 f: direct index for structure ( temp float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 2 (const int) 0:7 Constant: 0:7 0 (const int) 0:? 'input[2].f' (layout( location=3) in float) 0:7 move second child to first child ( temp 4-component vector of float) 0:7 pos: direct index for structure ( temp 4-component vector of float) 0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos}) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 2 (const int) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( in 4-component vector of float FragCoord) 0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord) 0:7 Constant: 0:7 2 (const int) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(i1;struct-S-f1-vf41[3]; ( temp 4-component vector of float) 0:? 'i' ( temp int) 0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'i' (layout( location=0) flat in int) 0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord) 0:? 'input[0].f' (layout( location=1) in float) 0:? 'input[1].f' (layout( location=2) in float) 0:? 'input[2].f' (layout( location=3) in float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 30 35 41 46 53 60 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 10 "S" MemberName 10(S) 0 "f" MemberName 10(S) 1 "pos" Name 18 "@main(i1;struct-S-f1-vf41[3];" Name 16 "i" Name 17 "input" Name 20 "a" Name 28 "i" Name 30 "i" Name 32 "input" Name 35 "input[0].f" Name 41 "input.pos" Name 46 "input[1].f" Name 53 "input[2].f" Name 60 "@entryPointOutput" Name 61 "param" Name 63 "param" Decorate 30(i) Flat Decorate 30(i) Location 0 Decorate 35(input[0].f) Location 1 Decorate 41(input.pos) BuiltIn FragCoord Decorate 46(input[1].f) Location 2 Decorate 53(input[2].f) Location 3 Decorate 60(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10(S): TypeStruct 8(float) 9(fvec4) 11: TypeInt 32 0 12: 11(int) Constant 3 13: TypeArray 10(S) 12 14: TypePointer Function 13 15: TypeFunction 9(fvec4) 7(ptr) 14(ptr) 22: 6(int) Constant 1 23: TypePointer Function 9(fvec4) 29: TypePointer Input 6(int) 30(i): 29(ptr) Variable Input 33: 6(int) Constant 0 34: TypePointer Input 8(float) 35(input[0].f): 34(ptr) Variable Input 37: TypePointer Function 8(float) 39: TypeArray 9(fvec4) 12 40: TypePointer Input 39 41(input.pos): 40(ptr) Variable Input 42: TypePointer Input 9(fvec4) 46(input[1].f): 34(ptr) Variable Input 52: 6(int) Constant 2 53(input[2].f): 34(ptr) Variable Input 59: TypePointer Output 9(fvec4) 60(@entryPointOutput): 59(ptr) Variable Output 4(main): 2 Function None 3 5: Label 28(i): 7(ptr) Variable Function 32(input): 14(ptr) Variable Function 61(param): 7(ptr) Variable Function 63(param): 14(ptr) Variable Function 31: 6(int) Load 30(i) Store 28(i) 31 36: 8(float) Load 35(input[0].f) 38: 37(ptr) AccessChain 32(input) 33 33 Store 38 36 43: 42(ptr) AccessChain 41(input.pos) 33 44: 9(fvec4) Load 43 45: 23(ptr) AccessChain 32(input) 33 22 Store 45 44 47: 8(float) Load 46(input[1].f) 48: 37(ptr) AccessChain 32(input) 22 33 Store 48 47 49: 42(ptr) AccessChain 41(input.pos) 22 50: 9(fvec4) Load 49 51: 23(ptr) AccessChain 32(input) 22 22 Store 51 50 54: 8(float) Load 53(input[2].f) 55: 37(ptr) AccessChain 32(input) 52 33 Store 55 54 56: 42(ptr) AccessChain 41(input.pos) 52 57: 9(fvec4) Load 56 58: 23(ptr) AccessChain 32(input) 52 22 Store 58 57 62: 6(int) Load 28(i) Store 61(param) 62 64: 13 Load 32(input) Store 63(param) 64 65: 9(fvec4) FunctionCall 18(@main(i1;struct-S-f1-vf41[3];) 61(param) 63(param) Store 60(@entryPointOutput) 65 Return FunctionEnd 18(@main(i1;struct-S-f1-vf41[3];): 9(fvec4) Function None 15 16(i): 7(ptr) FunctionParameter 17(input): 14(ptr) FunctionParameter 19: Label 20(a): 14(ptr) Variable Function 21: 13 Load 20(a) Store 17(input) 21 24: 23(ptr) AccessChain 20(a) 22 22 25: 9(fvec4) Load 24 ReturnValue 25 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.struct.split.call.vert.out000066400000000000000000000501711506534232700245140ustar00rootroot00000000000000hlsl.struct.split.call.vert Shader version: 500 0:? Sequence 0:17 Function Definition: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; ( temp void) 0:17 Function Parameters: 0:17 'fn1_in' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 'fn1_out' ( in structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? Sequence 0:18 add ( temp 4-component vector of float) 0:18 Pos_in: direct index for structure ( temp 4-component vector of float) 0:18 'fn1_in' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:18 Constant: 0:18 1 (const int) 0:18 Pos_out: direct index for structure ( temp 4-component vector of float) 0:18 'fn1_out' ( in structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:18 Constant: 0:18 1 (const int) 0:22 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Function Parameters: 0:22 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:? Sequence 0:25 move second child to first child ( temp int) 0:25 x0_out: direct index for structure ( temp int) 0:25 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:25 Constant: 0:25 0 (const int) 0:25 x0_in: direct index for structure ( temp int) 0:25 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:25 Constant: 0:25 0 (const int) 0:26 move second child to first child ( temp 4-component vector of float) 0:26 Pos_out: direct index for structure ( temp 4-component vector of float) 0:26 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:26 Constant: 0:26 1 (const int) 0:26 Pos_in: direct index for structure ( temp 4-component vector of float) 0:26 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:26 Constant: 0:26 1 (const int) 0:27 move second child to first child ( temp int) 0:27 x1_out: direct index for structure ( temp int) 0:27 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:27 Constant: 0:27 2 (const int) 0:27 x1_in: direct index for structure ( temp int) 0:27 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:27 Constant: 0:27 2 (const int) 0:29 Function Call: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; ( temp void) 0:29 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:29 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:31 Branch: Return with expression 0:31 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 x0_in: direct index for structure ( temp int) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 Constant: 0:22 0 (const int) 0:? 'vsin.x0_in' (layout( location=0) in int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Pos_in: direct index for structure ( temp 4-component vector of float) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 Constant: 0:22 1 (const int) 0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float) 0:22 move second child to first child ( temp int) 0:22 x1_in: direct index for structure ( temp int) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 Constant: 0:22 2 (const int) 0:? 'vsin.x1_in' (layout( location=2) in int) 0:22 Sequence 0:22 move second child to first child ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 move second child to first child ( temp int) 0:? '@entryPointOutput.x0_out' (layout( location=0) out int) 0:22 x0_out: direct index for structure ( temp int) 0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position) 0:22 Pos_out: direct index for structure ( temp 4-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp int) 0:? '@entryPointOutput.x1_out' (layout( location=1) out int) 0:22 x1_out: direct index for structure ( temp int) 0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 2 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position) 0:? '@entryPointOutput.x0_out' (layout( location=0) out int) 0:? '@entryPointOutput.x1_out' (layout( location=1) out int) 0:? 'vsin.x0_in' (layout( location=0) in int) 0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float) 0:? 'vsin.x1_in' (layout( location=2) in int) Linked vertex stage: Shader version: 500 0:? Sequence 0:17 Function Definition: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; ( temp void) 0:17 Function Parameters: 0:17 'fn1_in' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:17 'fn1_out' ( in structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? Sequence 0:18 add ( temp 4-component vector of float) 0:18 Pos_in: direct index for structure ( temp 4-component vector of float) 0:18 'fn1_in' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:18 Constant: 0:18 1 (const int) 0:18 Pos_out: direct index for structure ( temp 4-component vector of float) 0:18 'fn1_out' ( in structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:18 Constant: 0:18 1 (const int) 0:22 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Function Parameters: 0:22 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:? Sequence 0:25 move second child to first child ( temp int) 0:25 x0_out: direct index for structure ( temp int) 0:25 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:25 Constant: 0:25 0 (const int) 0:25 x0_in: direct index for structure ( temp int) 0:25 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:25 Constant: 0:25 0 (const int) 0:26 move second child to first child ( temp 4-component vector of float) 0:26 Pos_out: direct index for structure ( temp 4-component vector of float) 0:26 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:26 Constant: 0:26 1 (const int) 0:26 Pos_in: direct index for structure ( temp 4-component vector of float) 0:26 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:26 Constant: 0:26 1 (const int) 0:27 move second child to first child ( temp int) 0:27 x1_out: direct index for structure ( temp int) 0:27 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:27 Constant: 0:27 2 (const int) 0:27 x1_in: direct index for structure ( temp int) 0:27 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:27 Constant: 0:27 2 (const int) 0:29 Function Call: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; ( temp void) 0:29 'vsin' ( in structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:29 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:31 Branch: Return with expression 0:31 'vsout' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 x0_in: direct index for structure ( temp int) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 Constant: 0:22 0 (const int) 0:? 'vsin.x0_in' (layout( location=0) in int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 Pos_in: direct index for structure ( temp 4-component vector of float) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 Constant: 0:22 1 (const int) 0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float) 0:22 move second child to first child ( temp int) 0:22 x1_in: direct index for structure ( temp int) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 Constant: 0:22 2 (const int) 0:? 'vsin.x1_in' (layout( location=2) in int) 0:22 Sequence 0:22 move second child to first child ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 move second child to first child ( temp int) 0:? '@entryPointOutput.x0_out' (layout( location=0) out int) 0:22 x0_out: direct index for structure ( temp int) 0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position) 0:22 Pos_out: direct index for structure ( temp 4-component vector of float) 0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp int) 0:? '@entryPointOutput.x1_out' (layout( location=1) out int) 0:22 x1_out: direct index for structure ( temp int) 0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 2 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position) 0:? '@entryPointOutput.x0_out' (layout( location=0) out int) 0:? '@entryPointOutput.x1_out' (layout( location=1) out int) 0:? 'vsin.x0_in' (layout( location=0) in int) 0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float) 0:? 'vsin.x1_in' (layout( location=2) in int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 77 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 52 56 59 67 71 74 Source HLSL 500 Name 4 "main" Name 9 "VS_INPUT" MemberName 9(VS_INPUT) 0 "x0_in" MemberName 9(VS_INPUT) 1 "Pos_in" MemberName 9(VS_INPUT) 2 "x1_in" Name 11 "VS_OUTPUT" MemberName 11(VS_OUTPUT) 0 "x0_out" MemberName 11(VS_OUTPUT) 1 "Pos_out" MemberName 11(VS_OUTPUT) 2 "x1_out" Name 16 "Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;" Name 14 "fn1_in" Name 15 "fn1_out" Name 20 "@main(struct-VS_INPUT-i1-vf4-i11;" Name 19 "vsin" Name 29 "vsout" Name 42 "param" Name 44 "param" Name 50 "vsin" Name 52 "vsin.x0_in" Name 56 "vsin.Pos_in" Name 59 "vsin.x1_in" Name 62 "flattenTemp" Name 63 "param" Name 67 "@entryPointOutput.x0_out" Name 71 "@entryPointOutput.Pos_out" Name 74 "@entryPointOutput.x1_out" Decorate 52(vsin.x0_in) Location 0 Decorate 56(vsin.Pos_in) Location 1 Decorate 59(vsin.x1_in) Location 2 Decorate 67(@entryPointOutput.x0_out) Location 0 Decorate 71(@entryPointOutput.Pos_out) BuiltIn Position Decorate 74(@entryPointOutput.x1_out) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFloat 32 8: TypeVector 7(float) 4 9(VS_INPUT): TypeStruct 6(int) 8(fvec4) 6(int) 10: TypePointer Function 9(VS_INPUT) 11(VS_OUTPUT): TypeStruct 6(int) 8(fvec4) 6(int) 12: TypePointer Function 11(VS_OUTPUT) 13: TypeFunction 2 10(ptr) 12(ptr) 18: TypeFunction 11(VS_OUTPUT) 10(ptr) 22: 6(int) Constant 1 23: TypePointer Function 8(fvec4) 30: 6(int) Constant 0 31: TypePointer Function 6(int) 38: 6(int) Constant 2 51: TypePointer Input 6(int) 52(vsin.x0_in): 51(ptr) Variable Input 55: TypePointer Input 8(fvec4) 56(vsin.Pos_in): 55(ptr) Variable Input 59(vsin.x1_in): 51(ptr) Variable Input 66: TypePointer Output 6(int) 67(@entryPointOutput.x0_out): 66(ptr) Variable Output 70: TypePointer Output 8(fvec4) 71(@entryPointOutput.Pos_out): 70(ptr) Variable Output 74(@entryPointOutput.x1_out): 66(ptr) Variable Output 4(main): 2 Function None 3 5: Label 50(vsin): 10(ptr) Variable Function 62(flattenTemp): 12(ptr) Variable Function 63(param): 10(ptr) Variable Function 53: 6(int) Load 52(vsin.x0_in) 54: 31(ptr) AccessChain 50(vsin) 30 Store 54 53 57: 8(fvec4) Load 56(vsin.Pos_in) 58: 23(ptr) AccessChain 50(vsin) 22 Store 58 57 60: 6(int) Load 59(vsin.x1_in) 61: 31(ptr) AccessChain 50(vsin) 38 Store 61 60 64: 9(VS_INPUT) Load 50(vsin) Store 63(param) 64 65:11(VS_OUTPUT) FunctionCall 20(@main(struct-VS_INPUT-i1-vf4-i11;) 63(param) Store 62(flattenTemp) 65 68: 31(ptr) AccessChain 62(flattenTemp) 30 69: 6(int) Load 68 Store 67(@entryPointOutput.x0_out) 69 72: 23(ptr) AccessChain 62(flattenTemp) 22 73: 8(fvec4) Load 72 Store 71(@entryPointOutput.Pos_out) 73 75: 31(ptr) AccessChain 62(flattenTemp) 38 76: 6(int) Load 75 Store 74(@entryPointOutput.x1_out) 76 Return FunctionEnd 16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;): 2 Function None 13 14(fn1_in): 10(ptr) FunctionParameter 15(fn1_out): 12(ptr) FunctionParameter 17: Label 24: 23(ptr) AccessChain 14(fn1_in) 22 25: 8(fvec4) Load 24 26: 23(ptr) AccessChain 15(fn1_out) 22 27: 8(fvec4) Load 26 28: 8(fvec4) FAdd 25 27 Return FunctionEnd 20(@main(struct-VS_INPUT-i1-vf4-i11;):11(VS_OUTPUT) Function None 18 19(vsin): 10(ptr) FunctionParameter 21: Label 29(vsout): 12(ptr) Variable Function 42(param): 10(ptr) Variable Function 44(param): 12(ptr) Variable Function 32: 31(ptr) AccessChain 19(vsin) 30 33: 6(int) Load 32 34: 31(ptr) AccessChain 29(vsout) 30 Store 34 33 35: 23(ptr) AccessChain 19(vsin) 22 36: 8(fvec4) Load 35 37: 23(ptr) AccessChain 29(vsout) 22 Store 37 36 39: 31(ptr) AccessChain 19(vsin) 38 40: 6(int) Load 39 41: 31(ptr) AccessChain 29(vsout) 38 Store 41 40 43: 9(VS_INPUT) Load 19(vsin) Store 42(param) 43 45:11(VS_OUTPUT) Load 29(vsout) Store 44(param) 45 46: 2 FunctionCall 16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;) 42(param) 44(param) 47:11(VS_OUTPUT) Load 29(vsout) ReturnValue 47 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.struct.split.nested.geom.out000066400000000000000000001110311506534232700250230ustar00rootroot00000000000000hlsl.struct.split.nested.geom Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:24 Function Definition: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void) 0:24 Function Parameters: 0:24 'tin' ( in 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 'ts' ( out structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 pos: direct index for structure ( temp 4-component vector of float) 0:27 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:27 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1.000000 0:27 2.000000 0:27 3.000000 0:27 4.000000 0:28 move second child to first child ( temp 2-component vector of float) 0:28 tc: direct index for structure ( temp 2-component vector of float) 0:28 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:28 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 5.000000 0:28 6.000000 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 m0_array: direct index for structure ( temp 2-element array of float) 0:29 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:29 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2.300000 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float) 0:30 m0_array: direct index for structure ( temp 2-element array of float) 0:30 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:30 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2.300000 0:31 move second child to first child ( temp int) 0:31 m1: direct index for structure ( temp int) 0:31 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:31 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:33 Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:? 'ts.pos' ( out 4-component vector of float Position) 0:33 pos: direct index for structure ( temp 4-component vector of float) 0:33 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 move second child to first child ( temp 2-component vector of float) 0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float) 0:33 tc: direct index for structure ( temp 2-component vector of float) 0:33 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 move second child to first child ( temp float) 0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float) 0:33 direct index ( temp float) 0:33 m0_array: direct index for structure ( temp 2-element array of float) 0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 move second child to first child ( temp float) 0:? 'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float) 0:33 direct index ( temp float) 0:33 m0_array: direct index for structure ( temp 2-element array of float) 0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 move second child to first child ( temp int) 0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int) 0:33 m1: direct index for structure ( temp int) 0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 EmitVertex ( temp void) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index ( in 4-component vector of float Position) 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 2-component vector of float) 0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=0) in 2-component vector of float) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index ( in 4-component vector of float Position) 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp 2-component vector of float) 0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=0) in 2-component vector of float) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index ( in 4-component vector of float Position) 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:24 Constant: 0:24 2 (const int) 0:24 move second child to first child ( temp 2-component vector of float) 0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=0) in 2-component vector of float) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float) 0:24 Constant: 0:24 2 (const int) 0:24 Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? Linker Objects 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float) 0:? 'ts.pos' ( out 4-component vector of float Position) 0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float) 0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float) 0:? 'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float) 0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:24 Function Definition: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void) 0:24 Function Parameters: 0:24 'tin' ( in 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 'ts' ( out structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 pos: direct index for structure ( temp 4-component vector of float) 0:27 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:27 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1.000000 0:27 2.000000 0:27 3.000000 0:27 4.000000 0:28 move second child to first child ( temp 2-component vector of float) 0:28 tc: direct index for structure ( temp 2-component vector of float) 0:28 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:28 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 1 (const int) 0:28 Constant: 0:28 5.000000 0:28 6.000000 0:29 move second child to first child ( temp float) 0:29 direct index ( temp float) 0:29 m0_array: direct index for structure ( temp 2-element array of float) 0:29 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:29 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:29 Constant: 0:29 1 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 2.300000 0:30 move second child to first child ( temp float) 0:30 direct index ( temp float) 0:30 m0_array: direct index for structure ( temp 2-element array of float) 0:30 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:30 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 Constant: 0:30 2.300000 0:31 move second child to first child ( temp int) 0:31 m1: direct index for structure ( temp int) 0:31 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:31 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 2 (const int) 0:33 Sequence 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:? 'ts.pos' ( out 4-component vector of float Position) 0:33 pos: direct index for structure ( temp 4-component vector of float) 0:33 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 move second child to first child ( temp 2-component vector of float) 0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float) 0:33 tc: direct index for structure ( temp 2-component vector of float) 0:33 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 move second child to first child ( temp float) 0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float) 0:33 direct index ( temp float) 0:33 m0_array: direct index for structure ( temp 2-element array of float) 0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 move second child to first child ( temp float) 0:? 'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float) 0:33 direct index ( temp float) 0:33 m0_array: direct index for structure ( temp 2-element array of float) 0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 move second child to first child ( temp int) 0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int) 0:33 m1: direct index for structure ( temp int) 0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1}) 0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 EmitVertex ( temp void) 0:24 Function Definition: main( ( temp void) 0:24 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index ( in 4-component vector of float Position) 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 2-component vector of float) 0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=0) in 2-component vector of float) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index ( in 4-component vector of float Position) 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp 2-component vector of float) 0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=0) in 2-component vector of float) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 direct index ( in 4-component vector of float Position) 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:24 Constant: 0:24 2 (const int) 0:24 move second child to first child ( temp 2-component vector of float) 0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 1 (const int) 0:24 direct index (layout( location=0) in 2-component vector of float) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float) 0:24 Constant: 0:24 2 (const int) 0:24 Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? Linker Objects 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float) 0:? 'ts.pos' ( out 4-component vector of float Position) 0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float) 0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float) 0:? 'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float) 0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 99 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 48 52 56 59 63 69 76 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Source HLSL 500 Name 4 "main" Name 9 "PS_IN" MemberName 9(PS_IN) 0 "pos" MemberName 9(PS_IN) 1 "tc" Name 17 "STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO" MemberName 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 0 "m0_array" MemberName 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 1 "m1" Name 18 "GS_OUT" MemberName 18(GS_OUT) 0 "psIn" MemberName 18(GS_OUT) 1 "contains_no_builtin_io" Name 23 "@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;" Name 21 "tin" Name 22 "ts" Name 25 "o" Name 48 "ts.pos" Name 52 "ts.psIn.tc" Name 56 "ts.contains_no_builtin_io.m0_array[0]" Name 59 "ts.contains_no_builtin_io.m0_array[1]" Name 63 "ts.contains_no_builtin_io.m1" Name 66 "tin" Name 69 "tin.pos" Name 76 "tin.tc" Name 93 "ts" Name 94 "param" Name 96 "param" Decorate 48(ts.pos) BuiltIn Position Decorate 52(ts.psIn.tc) Location 0 Decorate 56(ts.contains_no_builtin_io.m0_array[0]) Location 1 Decorate 59(ts.contains_no_builtin_io.m0_array[1]) Location 2 Decorate 63(ts.contains_no_builtin_io.m1) Location 3 Decorate 69(tin.pos) BuiltIn Position Decorate 76(tin.tc) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 2 9(PS_IN): TypeStruct 7(fvec4) 8(fvec2) 10: TypeInt 32 0 11: 10(int) Constant 3 12: TypeArray 9(PS_IN) 11 13: TypePointer Function 12 14: 10(int) Constant 2 15: TypeArray 6(float) 14 16: TypeInt 32 1 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO): TypeStruct 15 16(int) 18(GS_OUT): TypeStruct 9(PS_IN) 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 19: TypePointer Function 18(GS_OUT) 20: TypeFunction 2 13(ptr) 19(ptr) 26: 16(int) Constant 0 27: 6(float) Constant 1065353216 28: 6(float) Constant 1073741824 29: 6(float) Constant 1077936128 30: 6(float) Constant 1082130432 31: 7(fvec4) ConstantComposite 27 28 29 30 32: TypePointer Function 7(fvec4) 34: 16(int) Constant 1 35: 6(float) Constant 1084227584 36: 6(float) Constant 1086324736 37: 8(fvec2) ConstantComposite 35 36 38: TypePointer Function 8(fvec2) 40: 6(float) Constant 1075000115 41: TypePointer Function 6(float) 44: 16(int) Constant 2 45: TypePointer Function 16(int) 47: TypePointer Output 7(fvec4) 48(ts.pos): 47(ptr) Variable Output 51: TypePointer Output 8(fvec2) 52(ts.psIn.tc): 51(ptr) Variable Output 55: TypePointer Output 6(float) 56(ts.contains_no_builtin_io.m0_array[0]): 55(ptr) Variable Output 59(ts.contains_no_builtin_io.m0_array[1]): 55(ptr) Variable Output 62: TypePointer Output 16(int) 63(ts.contains_no_builtin_io.m1): 62(ptr) Variable Output 67: TypeArray 7(fvec4) 11 68: TypePointer Input 67 69(tin.pos): 68(ptr) Variable Input 70: TypePointer Input 7(fvec4) 74: TypeArray 8(fvec2) 11 75: TypePointer Input 74 76(tin.tc): 75(ptr) Variable Input 77: TypePointer Input 8(fvec2) 4(main): 2 Function None 3 5: Label 66(tin): 13(ptr) Variable Function 93(ts): 19(ptr) Variable Function 94(param): 13(ptr) Variable Function 96(param): 19(ptr) Variable Function 71: 70(ptr) AccessChain 69(tin.pos) 26 72: 7(fvec4) Load 71 73: 32(ptr) AccessChain 66(tin) 26 26 Store 73 72 78: 77(ptr) AccessChain 76(tin.tc) 26 79: 8(fvec2) Load 78 80: 38(ptr) AccessChain 66(tin) 26 34 Store 80 79 81: 70(ptr) AccessChain 69(tin.pos) 34 82: 7(fvec4) Load 81 83: 32(ptr) AccessChain 66(tin) 34 26 Store 83 82 84: 77(ptr) AccessChain 76(tin.tc) 34 85: 8(fvec2) Load 84 86: 38(ptr) AccessChain 66(tin) 34 34 Store 86 85 87: 70(ptr) AccessChain 69(tin.pos) 44 88: 7(fvec4) Load 87 89: 32(ptr) AccessChain 66(tin) 44 26 Store 89 88 90: 77(ptr) AccessChain 76(tin.tc) 44 91: 8(fvec2) Load 90 92: 38(ptr) AccessChain 66(tin) 44 34 Store 92 91 95: 12 Load 66(tin) Store 94(param) 95 97: 2 FunctionCall 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 94(param) 96(param) 98: 18(GS_OUT) Load 96(param) Store 93(ts) 98 Return FunctionEnd 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;): 2 Function None 20 21(tin): 13(ptr) FunctionParameter 22(ts): 19(ptr) FunctionParameter 24: Label 25(o): 19(ptr) Variable Function 33: 32(ptr) AccessChain 25(o) 26 26 Store 33 31 39: 38(ptr) AccessChain 25(o) 26 34 Store 39 37 42: 41(ptr) AccessChain 25(o) 34 26 26 Store 42 40 43: 41(ptr) AccessChain 25(o) 34 26 34 Store 43 40 46: 45(ptr) AccessChain 25(o) 34 34 Store 46 44 49: 32(ptr) AccessChain 25(o) 26 26 50: 7(fvec4) Load 49 Store 48(ts.pos) 50 53: 38(ptr) AccessChain 25(o) 26 34 54: 8(fvec2) Load 53 Store 52(ts.psIn.tc) 54 57: 41(ptr) AccessChain 25(o) 34 26 26 58: 6(float) Load 57 Store 56(ts.contains_no_builtin_io.m0_array[0]) 58 60: 41(ptr) AccessChain 25(o) 34 26 34 61: 6(float) Load 60 Store 59(ts.contains_no_builtin_io.m0_array[1]) 61 64: 45(ptr) AccessChain 25(o) 34 34 65: 16(int) Load 64 Store 63(ts.contains_no_builtin_io.m1) 65 EmitVertex Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.struct.split.trivial.geom.out000066400000000000000000000353211506534232700252220ustar00rootroot00000000000000hlsl.struct.split.trivial.geom Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:14 Function Definition: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void) 0:14 Function Parameters: 0:14 'i' ( in 3-element array of structure{ temp 4-component vector of float pos}) 0:14 'ts' ( out structure{ temp 4-component vector of float pos}) 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'x' ( temp int) 0:17 Constant: 0:17 0 (const int) 0:17 Loop with condition tested first 0:17 Loop Condition 0:17 Compare Less Than ( temp bool) 0:17 'x' ( temp int) 0:17 Constant: 0:17 3 (const int) 0:17 Loop Body 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 pos: direct index for structure ( temp 4-component vector of float) 0:18 'o' ( temp structure{ temp 4-component vector of float pos}) 0:18 Constant: 0:18 0 (const int) 0:18 pos: direct index for structure ( temp 4-component vector of float) 0:18 indirect index ( temp structure{ temp 4-component vector of float pos}) 0:18 'i' ( in 3-element array of structure{ temp 4-component vector of float pos}) 0:18 'x' ( temp int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:? 'ts.pos' ( out 4-component vector of float Position) 0:19 pos: direct index for structure ( temp 4-component vector of float) 0:19 'o' ( temp structure{ temp 4-component vector of float pos}) 0:19 Constant: 0:19 0 (const int) 0:19 EmitVertex ( temp void) 0:17 Loop Terminal Expression 0:17 Pre-Increment ( temp int) 0:17 'x' ( temp int) 0:14 Function Definition: main( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 direct index ( temp structure{ temp 4-component vector of float pos}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( in 4-component vector of float Position) 0:? 'i.pos' ( in 3-element array of 4-component vector of float Position) 0:14 Constant: 0:14 0 (const int) 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 direct index ( temp structure{ temp 4-component vector of float pos}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( in 4-component vector of float Position) 0:? 'i.pos' ( in 3-element array of 4-component vector of float Position) 0:14 Constant: 0:14 1 (const int) 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 direct index ( temp structure{ temp 4-component vector of float pos}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos}) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( in 4-component vector of float Position) 0:? 'i.pos' ( in 3-element array of 4-component vector of float Position) 0:14 Constant: 0:14 2 (const int) 0:14 Function Call: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos}) 0:? 'ts' ( temp structure{ temp 4-component vector of float pos}) 0:? Linker Objects 0:? 'i.pos' ( in 3-element array of 4-component vector of float Position) 0:? 'ts.pos' ( out 4-component vector of float Position) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:14 Function Definition: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void) 0:14 Function Parameters: 0:14 'i' ( in 3-element array of structure{ temp 4-component vector of float pos}) 0:14 'ts' ( out structure{ temp 4-component vector of float pos}) 0:? Sequence 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'x' ( temp int) 0:17 Constant: 0:17 0 (const int) 0:17 Loop with condition tested first 0:17 Loop Condition 0:17 Compare Less Than ( temp bool) 0:17 'x' ( temp int) 0:17 Constant: 0:17 3 (const int) 0:17 Loop Body 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 pos: direct index for structure ( temp 4-component vector of float) 0:18 'o' ( temp structure{ temp 4-component vector of float pos}) 0:18 Constant: 0:18 0 (const int) 0:18 pos: direct index for structure ( temp 4-component vector of float) 0:18 indirect index ( temp structure{ temp 4-component vector of float pos}) 0:18 'i' ( in 3-element array of structure{ temp 4-component vector of float pos}) 0:18 'x' ( temp int) 0:18 Constant: 0:18 0 (const int) 0:19 Sequence 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:? 'ts.pos' ( out 4-component vector of float Position) 0:19 pos: direct index for structure ( temp 4-component vector of float) 0:19 'o' ( temp structure{ temp 4-component vector of float pos}) 0:19 Constant: 0:19 0 (const int) 0:19 EmitVertex ( temp void) 0:17 Loop Terminal Expression 0:17 Pre-Increment ( temp int) 0:17 'x' ( temp int) 0:14 Function Definition: main( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 direct index ( temp structure{ temp 4-component vector of float pos}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( in 4-component vector of float Position) 0:? 'i.pos' ( in 3-element array of 4-component vector of float Position) 0:14 Constant: 0:14 0 (const int) 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 direct index ( temp structure{ temp 4-component vector of float pos}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos}) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( in 4-component vector of float Position) 0:? 'i.pos' ( in 3-element array of 4-component vector of float Position) 0:14 Constant: 0:14 1 (const int) 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 direct index ( temp structure{ temp 4-component vector of float pos}) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos}) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( in 4-component vector of float Position) 0:? 'i.pos' ( in 3-element array of 4-component vector of float Position) 0:14 Constant: 0:14 2 (const int) 0:14 Function Call: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos}) 0:? 'ts' ( temp structure{ temp 4-component vector of float pos}) 0:? Linker Objects 0:? 'i.pos' ( in 3-element array of 4-component vector of float Position) 0:? 'ts.pos' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 67 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 40 49 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Source HLSL 500 Name 4 "main" Name 8 "PS_IN" MemberName 8(PS_IN) 0 "pos" Name 13 "GS_OUT" MemberName 13(GS_OUT) 0 "pos" Name 18 "@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;" Name 16 "i" Name 17 "ts" Name 22 "x" Name 33 "o" Name 40 "ts.pos" Name 46 "i" Name 49 "i.pos" Name 61 "ts" Name 62 "param" Name 64 "param" Decorate 40(ts.pos) BuiltIn Position Decorate 49(i.pos) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_IN): TypeStruct 7(fvec4) 9: TypeInt 32 0 10: 9(int) Constant 3 11: TypeArray 8(PS_IN) 10 12: TypePointer Function 11 13(GS_OUT): TypeStruct 7(fvec4) 14: TypePointer Function 13(GS_OUT) 15: TypeFunction 2 12(ptr) 14(ptr) 20: TypeInt 32 1 21: TypePointer Function 20(int) 23: 20(int) Constant 0 30: 20(int) Constant 3 31: TypeBool 35: TypePointer Function 7(fvec4) 39: TypePointer Output 7(fvec4) 40(ts.pos): 39(ptr) Variable Output 44: 20(int) Constant 1 47: TypeArray 7(fvec4) 10 48: TypePointer Input 47 49(i.pos): 48(ptr) Variable Input 50: TypePointer Input 7(fvec4) 57: 20(int) Constant 2 4(main): 2 Function None 3 5: Label 46(i): 12(ptr) Variable Function 61(ts): 14(ptr) Variable Function 62(param): 12(ptr) Variable Function 64(param): 14(ptr) Variable Function 51: 50(ptr) AccessChain 49(i.pos) 23 52: 7(fvec4) Load 51 53: 35(ptr) AccessChain 46(i) 23 23 Store 53 52 54: 50(ptr) AccessChain 49(i.pos) 44 55: 7(fvec4) Load 54 56: 35(ptr) AccessChain 46(i) 44 23 Store 56 55 58: 50(ptr) AccessChain 49(i.pos) 57 59: 7(fvec4) Load 58 60: 35(ptr) AccessChain 46(i) 57 23 Store 60 59 63: 11 Load 46(i) Store 62(param) 63 65: 2 FunctionCall 18(@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;) 62(param) 64(param) 66: 13(GS_OUT) Load 64(param) Store 61(ts) 66 Return FunctionEnd 18(@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;): 2 Function None 15 16(i): 12(ptr) FunctionParameter 17(ts): 14(ptr) FunctionParameter 19: Label 22(x): 21(ptr) Variable Function 33(o): 14(ptr) Variable Function Store 22(x) 23 Branch 24 24: Label LoopMerge 26 27 None Branch 28 28: Label 29: 20(int) Load 22(x) 32: 31(bool) SLessThan 29 30 BranchConditional 32 25 26 25: Label 34: 20(int) Load 22(x) 36: 35(ptr) AccessChain 16(i) 34 23 37: 7(fvec4) Load 36 38: 35(ptr) AccessChain 33(o) 23 Store 38 37 41: 35(ptr) AccessChain 33(o) 23 42: 7(fvec4) Load 41 Store 40(ts.pos) 42 EmitVertex Branch 27 27: Label 43: 20(int) Load 22(x) 45: 20(int) IAdd 43 44 Store 22(x) 45 Branch 24 26: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.struct.split.trivial.vert.out000066400000000000000000000221121506534232700252450ustar00rootroot00000000000000hlsl.struct.split.trivial.vert Shader version: 500 0:? Sequence 0:16 Function Definition: @main(struct-VS_INPUT-vf41;vf4; ( temp structure{ temp 4-component vector of float Pos}) 0:16 Function Parameters: 0:16 'vsin' ( in structure{ temp 4-component vector of float Pos_in}) 0:16 'Pos_loose' ( in 4-component vector of float) 0:? Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:19 Pos: direct index for structure ( temp 4-component vector of float) 0:19 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:19 Constant: 0:19 0 (const int) 0:19 add ( temp 4-component vector of float) 0:19 Pos_in: direct index for structure ( temp 4-component vector of float) 0:19 'vsin' ( in structure{ temp 4-component vector of float Pos_in}) 0:19 Constant: 0:19 0 (const int) 0:19 'Pos_loose' ( in 4-component vector of float) 0:21 Branch: Return with expression 0:21 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 Pos_in: direct index for structure ( temp 4-component vector of float) 0:? 'vsin' ( temp structure{ temp 4-component vector of float Pos_in}) 0:16 Constant: 0:16 0 (const int) 0:? 'vsin.Pos_in' (layout( location=0) in 4-component vector of float) 0:16 move second child to first child ( temp 4-component vector of float) 0:? 'Pos_loose' ( temp 4-component vector of float) 0:? 'Pos_loose' (layout( location=1) in 4-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:16 Pos: direct index for structure ( temp 4-component vector of float) 0:16 Function Call: @main(struct-VS_INPUT-vf41;vf4; ( temp structure{ temp 4-component vector of float Pos}) 0:? 'vsin' ( temp structure{ temp 4-component vector of float Pos_in}) 0:? 'Pos_loose' ( temp 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:? 'vsin.Pos_in' (layout( location=0) in 4-component vector of float) 0:? 'Pos_loose' (layout( location=1) in 4-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:16 Function Definition: @main(struct-VS_INPUT-vf41;vf4; ( temp structure{ temp 4-component vector of float Pos}) 0:16 Function Parameters: 0:16 'vsin' ( in structure{ temp 4-component vector of float Pos_in}) 0:16 'Pos_loose' ( in 4-component vector of float) 0:? Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:19 Pos: direct index for structure ( temp 4-component vector of float) 0:19 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:19 Constant: 0:19 0 (const int) 0:19 add ( temp 4-component vector of float) 0:19 Pos_in: direct index for structure ( temp 4-component vector of float) 0:19 'vsin' ( in structure{ temp 4-component vector of float Pos_in}) 0:19 Constant: 0:19 0 (const int) 0:19 'Pos_loose' ( in 4-component vector of float) 0:21 Branch: Return with expression 0:21 'vsout' ( temp structure{ temp 4-component vector of float Pos}) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 Pos_in: direct index for structure ( temp 4-component vector of float) 0:? 'vsin' ( temp structure{ temp 4-component vector of float Pos_in}) 0:16 Constant: 0:16 0 (const int) 0:? 'vsin.Pos_in' (layout( location=0) in 4-component vector of float) 0:16 move second child to first child ( temp 4-component vector of float) 0:? 'Pos_loose' ( temp 4-component vector of float) 0:? 'Pos_loose' (layout( location=1) in 4-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:16 Pos: direct index for structure ( temp 4-component vector of float) 0:16 Function Call: @main(struct-VS_INPUT-vf41;vf4; ( temp structure{ temp 4-component vector of float Pos}) 0:? 'vsin' ( temp structure{ temp 4-component vector of float Pos_in}) 0:? 'Pos_loose' ( temp 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) 0:? 'vsin.Pos_in' (layout( location=0) in 4-component vector of float) 0:? 'Pos_loose' (layout( location=1) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 31 35 38 Source HLSL 500 Name 4 "main" Name 8 "VS_INPUT" MemberName 8(VS_INPUT) 0 "Pos_in" Name 11 "VS_OUTPUT" MemberName 11(VS_OUTPUT) 0 "Pos" Name 15 "@main(struct-VS_INPUT-vf41;vf4;" Name 13 "vsin" Name 14 "Pos_loose" Name 18 "vsout" Name 29 "vsin" Name 31 "vsin.Pos_in" Name 34 "Pos_loose" Name 35 "Pos_loose" Name 38 "@entryPointOutput.Pos" Name 39 "param" Name 41 "param" Decorate 31(vsin.Pos_in) Location 0 Decorate 35(Pos_loose) Location 1 Decorate 38(@entryPointOutput.Pos) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(VS_INPUT): TypeStruct 7(fvec4) 9: TypePointer Function 8(VS_INPUT) 10: TypePointer Function 7(fvec4) 11(VS_OUTPUT): TypeStruct 7(fvec4) 12: TypeFunction 11(VS_OUTPUT) 9(ptr) 10(ptr) 17: TypePointer Function 11(VS_OUTPUT) 19: TypeInt 32 1 20: 19(int) Constant 0 30: TypePointer Input 7(fvec4) 31(vsin.Pos_in): 30(ptr) Variable Input 35(Pos_loose): 30(ptr) Variable Input 37: TypePointer Output 7(fvec4) 38(@entryPointOutput.Pos): 37(ptr) Variable Output 4(main): 2 Function None 3 5: Label 29(vsin): 9(ptr) Variable Function 34(Pos_loose): 10(ptr) Variable Function 39(param): 9(ptr) Variable Function 41(param): 10(ptr) Variable Function 32: 7(fvec4) Load 31(vsin.Pos_in) 33: 10(ptr) AccessChain 29(vsin) 20 Store 33 32 36: 7(fvec4) Load 35(Pos_loose) Store 34(Pos_loose) 36 40: 8(VS_INPUT) Load 29(vsin) Store 39(param) 40 42: 7(fvec4) Load 34(Pos_loose) Store 41(param) 42 43:11(VS_OUTPUT) FunctionCall 15(@main(struct-VS_INPUT-vf41;vf4;) 39(param) 41(param) 44: 7(fvec4) CompositeExtract 43 0 Store 38(@entryPointOutput.Pos) 44 Return FunctionEnd 15(@main(struct-VS_INPUT-vf41;vf4;):11(VS_OUTPUT) Function None 12 13(vsin): 9(ptr) FunctionParameter 14(Pos_loose): 10(ptr) FunctionParameter 16: Label 18(vsout): 17(ptr) Variable Function 21: 10(ptr) AccessChain 13(vsin) 20 22: 7(fvec4) Load 21 23: 7(fvec4) Load 14(Pos_loose) 24: 7(fvec4) FAdd 22 23 25: 10(ptr) AccessChain 18(vsout) 20 Store 25 24 26:11(VS_OUTPUT) Load 18(vsout) ReturnValue 26 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structIoFourWay.frag.out000066400000000000000000000426511506534232700242200ustar00rootroot00000000000000hlsl.structIoFourWay.frag Shader version: 500 gl_FragCoord origin is upper left using depth_greater 0:? Sequence 0:15 Function Definition: @main(struct-T-f1-f1-f1-vf41; ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Function Parameters: 0:15 't' ( in structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:? Sequence 0:17 Branch: Return with expression 0:17 'local' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp float) 0:15 f: direct index for structure ( temp float) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 0 (const int) 0:? 't.f' (layout( location=0) in float) 0:15 move second child to first child ( temp float) 0:15 g: direct index for structure ( temp float) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 1 (const int) 0:? 't.g' (layout( location=1) centroid in float) 0:15 move second child to first child ( temp float) 0:15 d: direct index for structure ( temp float) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 2 (const int) 0:? 't.d' (layout( location=2) in float) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 normal: direct index for structure ( temp 4-component vector of float) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 3 (const int) 0:? 't.normal' (layout( location=3) in 4-component vector of float) 0:15 Sequence 0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Function Call: @main(struct-T-f1-f1-f1-vf41; ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 move second child to first child ( temp float) 0:? '@entryPointOutput.f' (layout( location=0) out float) 0:15 f: direct index for structure ( temp float) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 0 (const int) 0:15 move second child to first child ( temp float) 0:? '@entryPointOutput.g' (layout( location=1) out float) 0:15 g: direct index for structure ( temp float) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 1 (const int) 0:15 move second child to first child ( temp float) 0:? '@entryPointOutput.d' ( out float FragDepth) 0:15 d: direct index for structure ( temp float) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 2 (const int) 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.normal' (layout( location=2) out 4-component vector of float) 0:15 normal: direct index for structure ( temp 4-component vector of float) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 3 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform structure{layout( offset=68) temp float f, temp float g, temp float d, temp 4-component vector of float normal} s}) 0:? 'anon@1' (layout( row_major std140) uniform block{layout( row_major std140 offset=88) uniform structure{layout( offset=68) temp float f, temp float g, temp float d, temp 4-component vector of float normal} t}) 0:? '@entryPointOutput.d' ( out float FragDepth) 0:? '@entryPointOutput.f' (layout( location=0) out float) 0:? '@entryPointOutput.g' (layout( location=1) out float) 0:? '@entryPointOutput.normal' (layout( location=2) out 4-component vector of float) 0:? 't.f' (layout( location=0) in float) 0:? 't.g' (layout( location=1) centroid in float) 0:? 't.d' (layout( location=2) in float) 0:? 't.normal' (layout( location=3) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left using depth_greater 0:? Sequence 0:15 Function Definition: @main(struct-T-f1-f1-f1-vf41; ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Function Parameters: 0:15 't' ( in structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:? Sequence 0:17 Branch: Return with expression 0:17 'local' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp float) 0:15 f: direct index for structure ( temp float) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 0 (const int) 0:? 't.f' (layout( location=0) in float) 0:15 move second child to first child ( temp float) 0:15 g: direct index for structure ( temp float) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 1 (const int) 0:? 't.g' (layout( location=1) centroid in float) 0:15 move second child to first child ( temp float) 0:15 d: direct index for structure ( temp float) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 2 (const int) 0:? 't.d' (layout( location=2) in float) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 normal: direct index for structure ( temp 4-component vector of float) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 3 (const int) 0:? 't.normal' (layout( location=3) in 4-component vector of float) 0:15 Sequence 0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Function Call: @main(struct-T-f1-f1-f1-vf41; ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 move second child to first child ( temp float) 0:? '@entryPointOutput.f' (layout( location=0) out float) 0:15 f: direct index for structure ( temp float) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 0 (const int) 0:15 move second child to first child ( temp float) 0:? '@entryPointOutput.g' (layout( location=1) out float) 0:15 g: direct index for structure ( temp float) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 1 (const int) 0:15 move second child to first child ( temp float) 0:? '@entryPointOutput.d' ( out float FragDepth) 0:15 d: direct index for structure ( temp float) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 2 (const int) 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.normal' (layout( location=2) out 4-component vector of float) 0:15 normal: direct index for structure ( temp 4-component vector of float) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Constant: 0:15 3 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform structure{layout( offset=68) temp float f, temp float g, temp float d, temp 4-component vector of float normal} s}) 0:? 'anon@1' (layout( row_major std140) uniform block{layout( row_major std140 offset=88) uniform structure{layout( offset=68) temp float f, temp float g, temp float d, temp 4-component vector of float normal} t}) 0:? '@entryPointOutput.d' ( out float FragDepth) 0:? '@entryPointOutput.f' (layout( location=0) out float) 0:? '@entryPointOutput.g' (layout( location=1) out float) 0:? '@entryPointOutput.normal' (layout( location=2) out 4-component vector of float) 0:? 't.f' (layout( location=0) in float) 0:? 't.g' (layout( location=1) centroid in float) 0:? 't.d' (layout( location=2) in float) 0:? 't.normal' (layout( location=3) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 22 27 31 36 45 48 51 55 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing ExecutionMode 4 DepthGreater Source HLSL 500 Name 4 "main" Name 8 "T" MemberName 8(T) 0 "f" MemberName 8(T) 1 "g" MemberName 8(T) 2 "d" MemberName 8(T) 3 "normal" Name 12 "@main(struct-T-f1-f1-f1-vf41;" Name 11 "t" Name 14 "local" Name 18 "t" Name 22 "t.f" Name 27 "t.g" Name 31 "t.d" Name 36 "t.normal" Name 40 "flattenTemp" Name 41 "param" Name 45 "@entryPointOutput.f" Name 48 "@entryPointOutput.g" Name 51 "@entryPointOutput.d" Name 55 "@entryPointOutput.normal" Name 58 "T" MemberName 58(T) 0 "f" MemberName 58(T) 1 "g" MemberName 58(T) 2 "d" MemberName 58(T) 3 "normal" Name 59 "$Global" MemberName 59($Global) 0 "s" Name 61 "" Name 62 "buff" MemberName 62(buff) 0 "t" Name 64 "" Decorate 22(t.f) Location 0 Decorate 27(t.g) Centroid Decorate 27(t.g) Location 1 Decorate 31(t.d) Location 2 Decorate 36(t.normal) Location 3 Decorate 45(@entryPointOutput.f) Location 0 Decorate 48(@entryPointOutput.g) Location 1 Decorate 51(@entryPointOutput.d) BuiltIn FragDepth Decorate 55(@entryPointOutput.normal) Location 2 MemberDecorate 58(T) 0 Offset 68 MemberDecorate 58(T) 1 Offset 72 MemberDecorate 58(T) 2 Offset 76 MemberDecorate 58(T) 3 Offset 80 Decorate 59($Global) Block MemberDecorate 59($Global) 0 Offset 0 Decorate 61 Binding 0 Decorate 61 DescriptorSet 0 Decorate 62(buff) Block MemberDecorate 62(buff) 0 Offset 96 Decorate 64 Binding 0 Decorate 64 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4) 9: TypePointer Function 8(T) 10: TypeFunction 8(T) 9(ptr) 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypePointer Input 6(float) 22(t.f): 21(ptr) Variable Input 24: TypePointer Function 6(float) 26: 19(int) Constant 1 27(t.g): 21(ptr) Variable Input 30: 19(int) Constant 2 31(t.d): 21(ptr) Variable Input 34: 19(int) Constant 3 35: TypePointer Input 7(fvec4) 36(t.normal): 35(ptr) Variable Input 38: TypePointer Function 7(fvec4) 44: TypePointer Output 6(float) 45(@entryPointOutput.f): 44(ptr) Variable Output 48(@entryPointOutput.g): 44(ptr) Variable Output 51(@entryPointOutput.d): 44(ptr) Variable Output 54: TypePointer Output 7(fvec4) 55(@entryPointOutput.normal): 54(ptr) Variable Output 58(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4) 59($Global): TypeStruct 58(T) 60: TypePointer Uniform 59($Global) 61: 60(ptr) Variable Uniform 62(buff): TypeStruct 58(T) 63: TypePointer Uniform 62(buff) 64: 63(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 18(t): 9(ptr) Variable Function 40(flattenTemp): 9(ptr) Variable Function 41(param): 9(ptr) Variable Function 23: 6(float) Load 22(t.f) 25: 24(ptr) AccessChain 18(t) 20 Store 25 23 28: 6(float) Load 27(t.g) 29: 24(ptr) AccessChain 18(t) 26 Store 29 28 32: 6(float) Load 31(t.d) 33: 24(ptr) AccessChain 18(t) 30 Store 33 32 37: 7(fvec4) Load 36(t.normal) 39: 38(ptr) AccessChain 18(t) 34 Store 39 37 42: 8(T) Load 18(t) Store 41(param) 42 43: 8(T) FunctionCall 12(@main(struct-T-f1-f1-f1-vf41;) 41(param) Store 40(flattenTemp) 43 46: 24(ptr) AccessChain 40(flattenTemp) 20 47: 6(float) Load 46 Store 45(@entryPointOutput.f) 47 49: 24(ptr) AccessChain 40(flattenTemp) 26 50: 6(float) Load 49 Store 48(@entryPointOutput.g) 50 52: 24(ptr) AccessChain 40(flattenTemp) 30 53: 6(float) Load 52 Store 51(@entryPointOutput.d) 53 56: 38(ptr) AccessChain 40(flattenTemp) 34 57: 7(fvec4) Load 56 Store 55(@entryPointOutput.normal) 57 Return FunctionEnd 12(@main(struct-T-f1-f1-f1-vf41;): 8(T) Function None 10 11(t): 9(ptr) FunctionParameter 13: Label 14(local): 9(ptr) Variable Function 15: 8(T) Load 14(local) ReturnValue 15 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structStructName.frag.out000066400000000000000000000063131506534232700244140ustar00rootroot00000000000000hlsl.structStructName.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main( ( temp int) 0:4 Function Parameters: 0:? Sequence 0:6 Branch: Return with expression 0:6 s: direct index for structure ( temp int) 0:6 't' ( temp structure{ temp int s}) 0:6 Constant: 0:6 0 (const int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) 0:4 Function Call: @main( ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: @main( ( temp int) 0:4 Function Parameters: 0:? Sequence 0:6 Branch: Return with expression 0:6 s: direct index for structure ( temp int) 0:6 't' ( temp structure{ temp int s}) 0:6 Constant: 0:6 0 (const int) 0:4 Function Definition: main( ( temp void) 0:4 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) 0:4 Function Call: @main( ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) // 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 8 "@main(" Name 10 "S" MemberName 10(S) 0 "s" Name 12 "t" Name 20 "@entryPointOutput" Decorate 20(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFunction 6(int) 10(S): TypeStruct 6(int) 11: TypePointer Function 10(S) 13: 6(int) Constant 0 14: TypePointer Function 6(int) 19: TypePointer Output 6(int) 20(@entryPointOutput): 19(ptr) Variable Output 4(main): 2 Function None 3 5: Label 21: 6(int) FunctionCall 8(@main() Store 20(@entryPointOutput) 21 Return FunctionEnd 8(@main(): 6(int) Function None 7 9: Label 12(t): 11(ptr) Variable Function 15: 14(ptr) AccessChain 12(t) 13 16: 6(int) Load 15 ReturnValue 16 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structarray.flatten.frag.out000066400000000000000000000450061506534232700251030ustar00rootroot00000000000000hlsl.structarray.flatten.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:23 Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void) 0:23 Function Parameters: 0:23 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:? Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 color: direct index for structure ( temp 4-component vector of float) 0:24 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:24 Constant: 0:24 0 (const int) 0:26 add ( temp 4-component vector of float) 0:25 add ( temp 4-component vector of float) 0:25 texture ( temp 4-component vector of float) 0:25 Construct combined texture-sampler ( temp sampler1D) 0:? 'g_texdata.tex' ( uniform texture1D) 0:? 'g_texdata.samp' ( uniform sampler) 0:25 Constant: 0:25 0.500000 0:26 texture ( temp 4-component vector of float) 0:26 Construct combined texture-sampler ( temp sampler1D) 0:? 'g_texdata_array[1].tex' ( uniform texture1D) 0:? 'g_texdata_array[1].samp' ( uniform sampler) 0:26 Constant: 0:26 0.400000 0:27 texture ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1D) 0:27 direct index ( temp texture1D) 0:? 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D) 0:27 Constant: 0:27 0 (const int) 0:27 direct index ( temp sampler) 0:? 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0.300000 0:23 Function Definition: main( ( temp void) 0:23 Function Parameters: 0:? Sequence 0:23 Function Call: @main(struct-PS_OUTPUT-vf41; ( temp void) 0:? 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) 0:23 color: direct index for structure ( temp 4-component vector of float) 0:? 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:23 Constant: 0:23 0 (const int) 0:? Linker Objects 0:? 'g_samp' ( uniform sampler) 0:? 'g_tex' ( uniform texture1D) 0:? 'g_texdata.samp' ( uniform sampler) 0:? 'g_texdata.tex' ( uniform texture1D) 0:? 'g_texdata.nonopaque_thing' ( uniform int) 0:? 'g_texdata_array[0].samp' ( uniform sampler) 0:? 'g_texdata_array[0].tex' ( uniform texture1D) 0:? 'g_texdata_array[0].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array[1].samp' ( uniform sampler) 0:? 'g_texdata_array[1].tex' ( uniform texture1D) 0:? 'g_texdata_array[1].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array[2].samp' ( uniform sampler) 0:? 'g_texdata_array[2].tex' ( uniform texture1D) 0:? 'g_texdata_array[2].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array2[0].samp' ( uniform 2-element array of sampler) 0:? 'g_texdata_array2[0].tex' ( uniform 2-element array of texture1D) 0:? 'g_texdata_array2[0].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler) 0:? 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D) 0:? 'g_texdata_array2[1].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array2[2].samp' ( uniform 2-element array of sampler) 0:? 'g_texdata_array2[2].tex' ( uniform 2-element array of texture1D) 0:? 'g_texdata_array2[2].nonopaque_thing' ( uniform int) 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:23 Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void) 0:23 Function Parameters: 0:23 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:? Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 color: direct index for structure ( temp 4-component vector of float) 0:24 'ps_output' ( out structure{ temp 4-component vector of float color}) 0:24 Constant: 0:24 0 (const int) 0:26 add ( temp 4-component vector of float) 0:25 add ( temp 4-component vector of float) 0:25 texture ( temp 4-component vector of float) 0:25 Construct combined texture-sampler ( temp sampler1D) 0:? 'g_texdata.tex' ( uniform texture1D) 0:? 'g_texdata.samp' ( uniform sampler) 0:25 Constant: 0:25 0.500000 0:26 texture ( temp 4-component vector of float) 0:26 Construct combined texture-sampler ( temp sampler1D) 0:? 'g_texdata_array[1].tex' ( uniform texture1D) 0:? 'g_texdata_array[1].samp' ( uniform sampler) 0:26 Constant: 0:26 0.400000 0:27 texture ( temp 4-component vector of float) 0:27 Construct combined texture-sampler ( temp sampler1D) 0:27 direct index ( temp texture1D) 0:? 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D) 0:27 Constant: 0:27 0 (const int) 0:27 direct index ( temp sampler) 0:? 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0.300000 0:23 Function Definition: main( ( temp void) 0:23 Function Parameters: 0:? Sequence 0:23 Function Call: @main(struct-PS_OUTPUT-vf41; ( temp void) 0:? 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) 0:23 color: direct index for structure ( temp 4-component vector of float) 0:? 'ps_output' ( temp structure{ temp 4-component vector of float color}) 0:23 Constant: 0:23 0 (const int) 0:? Linker Objects 0:? 'g_samp' ( uniform sampler) 0:? 'g_tex' ( uniform texture1D) 0:? 'g_texdata.samp' ( uniform sampler) 0:? 'g_texdata.tex' ( uniform texture1D) 0:? 'g_texdata.nonopaque_thing' ( uniform int) 0:? 'g_texdata_array[0].samp' ( uniform sampler) 0:? 'g_texdata_array[0].tex' ( uniform texture1D) 0:? 'g_texdata_array[0].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array[1].samp' ( uniform sampler) 0:? 'g_texdata_array[1].tex' ( uniform texture1D) 0:? 'g_texdata_array[1].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array[2].samp' ( uniform sampler) 0:? 'g_texdata_array[2].tex' ( uniform texture1D) 0:? 'g_texdata_array[2].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array2[0].samp' ( uniform 2-element array of sampler) 0:? 'g_texdata_array2[0].tex' ( uniform 2-element array of texture1D) 0:? 'g_texdata_array2[0].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler) 0:? 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D) 0:? 'g_texdata_array2[1].nonopaque_thing' ( uniform int) 0:? 'g_texdata_array2[2].samp' ( uniform 2-element array of sampler) 0:? 'g_texdata_array2[2].tex' ( uniform 2-element array of texture1D) 0:? 'g_texdata_array2[2].nonopaque_thing' ( uniform int) 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 59 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "color" Name 12 "@main(struct-PS_OUTPUT-vf41;" Name 11 "ps_output" Name 18 "g_texdata.tex" Name 22 "g_texdata.samp" Name 28 "g_texdata_array[1].tex" Name 30 "g_texdata_array[1].samp" Name 40 "g_texdata_array2[1].tex" Name 45 "g_texdata_array2[1].samp" Name 54 "ps_output" Name 55 "param" Name 59 "ps_output.color" Name 62 "g_samp" Name 63 "g_tex" Name 65 "g_texdata.nonopaque_thing" Name 66 "g_texdata_array[0].samp" Name 67 "g_texdata_array[0].tex" Name 68 "g_texdata_array[0].nonopaque_thing" Name 69 "g_texdata_array[1].nonopaque_thing" Name 70 "g_texdata_array[2].samp" Name 71 "g_texdata_array[2].tex" Name 72 "g_texdata_array[2].nonopaque_thing" Name 73 "g_texdata_array2[0].samp" Name 74 "g_texdata_array2[0].tex" Name 75 "g_texdata_array2[0].nonopaque_thing" Name 76 "g_texdata_array2[1].nonopaque_thing" Name 77 "g_texdata_array2[2].samp" Name 78 "g_texdata_array2[2].tex" Name 79 "g_texdata_array2[2].nonopaque_thing" Decorate 18(g_texdata.tex) Binding 1 Decorate 18(g_texdata.tex) DescriptorSet 0 Decorate 22(g_texdata.samp) Binding 0 Decorate 22(g_texdata.samp) DescriptorSet 0 Decorate 28(g_texdata_array[1].tex) Binding 3 Decorate 28(g_texdata_array[1].tex) DescriptorSet 0 Decorate 30(g_texdata_array[1].samp) Binding 2 Decorate 30(g_texdata_array[1].samp) DescriptorSet 0 Decorate 40(g_texdata_array2[1].tex) Binding 5 Decorate 40(g_texdata_array2[1].tex) DescriptorSet 0 Decorate 45(g_texdata_array2[1].samp) Binding 4 Decorate 45(g_texdata_array2[1].samp) DescriptorSet 0 Decorate 59(ps_output.color) Location 0 Decorate 62(g_samp) Binding 0 Decorate 62(g_samp) DescriptorSet 0 Decorate 63(g_tex) Binding 0 Decorate 63(g_tex) DescriptorSet 0 Decorate 65(g_texdata.nonopaque_thing) Location 0 Decorate 65(g_texdata.nonopaque_thing) DescriptorSet 0 Decorate 66(g_texdata_array[0].samp) Binding 0 Decorate 66(g_texdata_array[0].samp) DescriptorSet 0 Decorate 67(g_texdata_array[0].tex) Binding 0 Decorate 67(g_texdata_array[0].tex) DescriptorSet 0 Decorate 68(g_texdata_array[0].nonopaque_thing) Location 1 Decorate 68(g_texdata_array[0].nonopaque_thing) DescriptorSet 0 Decorate 69(g_texdata_array[1].nonopaque_thing) Location 2 Decorate 69(g_texdata_array[1].nonopaque_thing) DescriptorSet 0 Decorate 70(g_texdata_array[2].samp) Binding 0 Decorate 70(g_texdata_array[2].samp) DescriptorSet 0 Decorate 71(g_texdata_array[2].tex) Binding 0 Decorate 71(g_texdata_array[2].tex) DescriptorSet 0 Decorate 72(g_texdata_array[2].nonopaque_thing) Location 3 Decorate 72(g_texdata_array[2].nonopaque_thing) DescriptorSet 0 Decorate 73(g_texdata_array2[0].samp) Binding 0 Decorate 73(g_texdata_array2[0].samp) DescriptorSet 0 Decorate 74(g_texdata_array2[0].tex) Binding 0 Decorate 74(g_texdata_array2[0].tex) DescriptorSet 0 Decorate 75(g_texdata_array2[0].nonopaque_thing) Location 4 Decorate 75(g_texdata_array2[0].nonopaque_thing) DescriptorSet 0 Decorate 76(g_texdata_array2[1].nonopaque_thing) Location 5 Decorate 76(g_texdata_array2[1].nonopaque_thing) DescriptorSet 0 Decorate 77(g_texdata_array2[2].samp) Binding 0 Decorate 77(g_texdata_array2[2].samp) DescriptorSet 0 Decorate 78(g_texdata_array2[2].tex) Binding 0 Decorate 78(g_texdata_array2[2].tex) DescriptorSet 0 Decorate 79(g_texdata_array2[2].nonopaque_thing) Location 6 Decorate 79(g_texdata_array2[2].nonopaque_thing) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypePointer Function 8(PS_OUTPUT) 10: TypeFunction 2 9(ptr) 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypeImage 6(float) 1D sampled format:Unknown 17: TypePointer UniformConstant 16 18(g_texdata.tex): 17(ptr) Variable UniformConstant 20: TypeSampler 21: TypePointer UniformConstant 20 22(g_texdata.samp): 21(ptr) Variable UniformConstant 24: TypeSampledImage 16 26: 6(float) Constant 1056964608 28(g_texdata_array[1].tex): 17(ptr) Variable UniformConstant 30(g_texdata_array[1].samp): 21(ptr) Variable UniformConstant 33: 6(float) Constant 1053609165 36: TypeInt 32 0 37: 36(int) Constant 2 38: TypeArray 16 37 39: TypePointer UniformConstant 38 40(g_texdata_array2[1].tex): 39(ptr) Variable UniformConstant 43: TypeArray 20 37 44: TypePointer UniformConstant 43 45(g_texdata_array2[1].samp): 44(ptr) Variable UniformConstant 49: 6(float) Constant 1050253722 52: TypePointer Function 7(fvec4) 58: TypePointer Output 7(fvec4) 59(ps_output.color): 58(ptr) Variable Output 62(g_samp): 21(ptr) Variable UniformConstant 63(g_tex): 17(ptr) Variable UniformConstant 64: TypePointer UniformConstant 14(int) 65(g_texdata.nonopaque_thing): 64(ptr) Variable UniformConstant 66(g_texdata_array[0].samp): 21(ptr) Variable UniformConstant 67(g_texdata_array[0].tex): 17(ptr) Variable UniformConstant 68(g_texdata_array[0].nonopaque_thing): 64(ptr) Variable UniformConstant 69(g_texdata_array[1].nonopaque_thing): 64(ptr) Variable UniformConstant 70(g_texdata_array[2].samp): 21(ptr) Variable UniformConstant 71(g_texdata_array[2].tex): 17(ptr) Variable UniformConstant 72(g_texdata_array[2].nonopaque_thing): 64(ptr) Variable UniformConstant 73(g_texdata_array2[0].samp): 44(ptr) Variable UniformConstant 74(g_texdata_array2[0].tex): 39(ptr) Variable UniformConstant 75(g_texdata_array2[0].nonopaque_thing): 64(ptr) Variable UniformConstant 76(g_texdata_array2[1].nonopaque_thing): 64(ptr) Variable UniformConstant 77(g_texdata_array2[2].samp): 44(ptr) Variable UniformConstant 78(g_texdata_array2[2].tex): 39(ptr) Variable UniformConstant 79(g_texdata_array2[2].nonopaque_thing): 64(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 54(ps_output): 9(ptr) Variable Function 55(param): 9(ptr) Variable Function 56: 2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 55(param) 57:8(PS_OUTPUT) Load 55(param) Store 54(ps_output) 57 60: 52(ptr) AccessChain 54(ps_output) 15 61: 7(fvec4) Load 60 Store 59(ps_output.color) 61 Return FunctionEnd 12(@main(struct-PS_OUTPUT-vf41;): 2 Function None 10 11(ps_output): 9(ptr) FunctionParameter 13: Label 19: 16 Load 18(g_texdata.tex) 23: 20 Load 22(g_texdata.samp) 25: 24 SampledImage 19 23 27: 7(fvec4) ImageSampleImplicitLod 25 26 29: 16 Load 28(g_texdata_array[1].tex) 31: 20 Load 30(g_texdata_array[1].samp) 32: 24 SampledImage 29 31 34: 7(fvec4) ImageSampleImplicitLod 32 33 35: 7(fvec4) FAdd 27 34 41: 17(ptr) AccessChain 40(g_texdata_array2[1].tex) 15 42: 16 Load 41 46: 21(ptr) AccessChain 45(g_texdata_array2[1].samp) 15 47: 20 Load 46 48: 24 SampledImage 42 47 50: 7(fvec4) ImageSampleImplicitLod 48 49 51: 7(fvec4) FAdd 35 50 53: 52(ptr) AccessChain 11(ps_output) 15 Store 53 51 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structarray.flatten.geom.out000066400000000000000000000722001506534232700251070ustar00rootroot00000000000000hlsl.structarray.flatten.geom Shader version: 500 invocations = -1 max_vertices = 4 input primitive = lines output primitive = triangle_strip 0:? Sequence 0:16 Function Definition: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void) 0:16 Function Parameters: 0:16 'vin' ( in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 'outStream' ( out structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:19 color: direct index for structure ( temp 4-component vector of float) 0:19 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:19 Constant: 0:19 1 (const int) 0:19 color: direct index for structure ( temp 4-component vector of float) 0:19 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:19 'vin' ( in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 uv: direct index for structure ( temp 2-component vector of float) 0:20 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:20 Constant: 0:20 2 (const int) 0:20 uv: direct index for structure ( temp 2-component vector of float) 0:20 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:20 'vin' ( in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:21 move second child to first child ( temp 4-component vector of float) 0:21 position: direct index for structure ( temp 4-component vector of float) 0:21 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:21 Constant: 0:21 0 (const int) 0:21 position: direct index for structure ( temp 4-component vector of float) 0:21 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:21 'vin' ( in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:? 'outStream.position' ( out 4-component vector of float Position) 0:22 position: direct index for structure ( temp 4-component vector of float) 0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:? 'outStream.color' (layout( location=0) out 4-component vector of float) 0:22 color: direct index for structure ( temp 4-component vector of float) 0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp 2-component vector of float) 0:? 'outStream.uv' (layout( location=1) out 2-component vector of float) 0:22 uv: direct index for structure ( temp 2-component vector of float) 0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 Constant: 0:22 2 (const int) 0:22 EmitVertex ( temp void) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 position: direct index for structure ( temp 4-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 direct index (layout( location=0) in 4-component vector of float) 0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 direct index (layout( location=1) in 4-component vector of float) 0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:16 uv: direct index for structure ( temp 2-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 2 (const int) 0:16 direct index (layout( location=2) in 2-component vector of float) 0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 position: direct index for structure ( temp 4-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 direct index (layout( location=0) in 4-component vector of float) 0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 direct index (layout( location=1) in 4-component vector of float) 0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:16 uv: direct index for structure ( temp 2-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 2 (const int) 0:16 direct index (layout( location=2) in 2-component vector of float) 0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float) 0:16 Constant: 0:16 1 (const int) 0:16 Function Call: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'outStream' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? Linker Objects 0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float) 0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float) 0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float) 0:? 'outStream.position' ( out 4-component vector of float Position) 0:? 'outStream.color' (layout( location=0) out 4-component vector of float) 0:? 'outStream.uv' (layout( location=1) out 2-component vector of float) Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 4 input primitive = lines output primitive = triangle_strip 0:? Sequence 0:16 Function Definition: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void) 0:16 Function Parameters: 0:16 'vin' ( in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 'outStream' ( out structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:19 color: direct index for structure ( temp 4-component vector of float) 0:19 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:19 Constant: 0:19 1 (const int) 0:19 color: direct index for structure ( temp 4-component vector of float) 0:19 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:19 'vin' ( in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp 2-component vector of float) 0:20 uv: direct index for structure ( temp 2-component vector of float) 0:20 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:20 Constant: 0:20 2 (const int) 0:20 uv: direct index for structure ( temp 2-component vector of float) 0:20 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:20 'vin' ( in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 2 (const int) 0:21 move second child to first child ( temp 4-component vector of float) 0:21 position: direct index for structure ( temp 4-component vector of float) 0:21 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:21 Constant: 0:21 0 (const int) 0:21 position: direct index for structure ( temp 4-component vector of float) 0:21 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:21 'vin' ( in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp 4-component vector of float) 0:? 'outStream.position' ( out 4-component vector of float Position) 0:22 position: direct index for structure ( temp 4-component vector of float) 0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:? 'outStream.color' (layout( location=0) out 4-component vector of float) 0:22 color: direct index for structure ( temp 4-component vector of float) 0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child ( temp 2-component vector of float) 0:? 'outStream.uv' (layout( location=1) out 2-component vector of float) 0:22 uv: direct index for structure ( temp 2-component vector of float) 0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 Constant: 0:22 2 (const int) 0:22 EmitVertex ( temp void) 0:16 Function Definition: main( ( temp void) 0:16 Function Parameters: 0:? Sequence 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 position: direct index for structure ( temp 4-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 direct index (layout( location=0) in 4-component vector of float) 0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 direct index (layout( location=1) in 4-component vector of float) 0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:16 uv: direct index for structure ( temp 2-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 2 (const int) 0:16 direct index (layout( location=2) in 2-component vector of float) 0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float) 0:16 Constant: 0:16 0 (const int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 position: direct index for structure ( temp 4-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 direct index (layout( location=0) in 4-component vector of float) 0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 direct index (layout( location=1) in 4-component vector of float) 0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float) 0:16 Constant: 0:16 1 (const int) 0:16 move second child to first child ( temp 2-component vector of float) 0:16 uv: direct index for structure ( temp 2-component vector of float) 0:16 direct index ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 2 (const int) 0:16 direct index (layout( location=2) in 2-component vector of float) 0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float) 0:16 Constant: 0:16 1 (const int) 0:16 Function Call: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void) 0:? 'vin' ( temp 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? 'outStream' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? Linker Objects 0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float) 0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float) 0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float) 0:? 'outStream.position' ( out 4-component vector of float Position) 0:? 'outStream.color' (layout( location=0) out 4-component vector of float) 0:? 'outStream.uv' (layout( location=1) out 2-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 82 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 38 41 45 51 56 62 ExecutionMode 4 InputLines ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 4 Source HLSL 500 Name 4 "main" Name 9 "VertexData" MemberName 9(VertexData) 0 "position" MemberName 9(VertexData) 1 "color" MemberName 9(VertexData) 2 "uv" Name 14 "PS_IN" MemberName 14(PS_IN) 0 "position" MemberName 14(PS_IN) 1 "color" MemberName 14(PS_IN) 2 "uv" Name 19 "@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;" Name 17 "vin" Name 18 "outStream" Name 21 "vout" Name 38 "outStream.position" Name 41 "outStream.color" Name 45 "outStream.uv" Name 48 "vin" Name 51 "vin.position" Name 56 "vin.color" Name 62 "vin.uv" Name 76 "outStream" Name 77 "param" Name 79 "param" Decorate 38(outStream.position) BuiltIn Position Decorate 41(outStream.color) Location 0 Decorate 45(outStream.uv) Location 1 Decorate 51(vin.position) Location 0 Decorate 56(vin.color) Location 1 Decorate 62(vin.uv) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeVector 6(float) 2 9(VertexData): TypeStruct 7(fvec4) 7(fvec4) 8(fvec2) 10: TypeInt 32 0 11: 10(int) Constant 2 12: TypeArray 9(VertexData) 11 13: TypePointer Function 12 14(PS_IN): TypeStruct 7(fvec4) 7(fvec4) 8(fvec2) 15: TypePointer Function 14(PS_IN) 16: TypeFunction 2 13(ptr) 15(ptr) 22: TypeInt 32 1 23: 22(int) Constant 1 24: TypePointer Function 7(fvec4) 28: 22(int) Constant 2 29: TypePointer Function 8(fvec2) 33: 22(int) Constant 0 37: TypePointer Output 7(fvec4) 38(outStream.position): 37(ptr) Variable Output 41(outStream.color): 37(ptr) Variable Output 44: TypePointer Output 8(fvec2) 45(outStream.uv): 44(ptr) Variable Output 49: TypeArray 7(fvec4) 11 50: TypePointer Input 49 51(vin.position): 50(ptr) Variable Input 52: TypePointer Input 7(fvec4) 56(vin.color): 50(ptr) Variable Input 60: TypeArray 8(fvec2) 11 61: TypePointer Input 60 62(vin.uv): 61(ptr) Variable Input 63: TypePointer Input 8(fvec2) 4(main): 2 Function None 3 5: Label 48(vin): 13(ptr) Variable Function 76(outStream): 15(ptr) Variable Function 77(param): 13(ptr) Variable Function 79(param): 15(ptr) Variable Function 53: 52(ptr) AccessChain 51(vin.position) 33 54: 7(fvec4) Load 53 55: 24(ptr) AccessChain 48(vin) 33 33 Store 55 54 57: 52(ptr) AccessChain 56(vin.color) 33 58: 7(fvec4) Load 57 59: 24(ptr) AccessChain 48(vin) 33 23 Store 59 58 64: 63(ptr) AccessChain 62(vin.uv) 33 65: 8(fvec2) Load 64 66: 29(ptr) AccessChain 48(vin) 33 28 Store 66 65 67: 52(ptr) AccessChain 51(vin.position) 23 68: 7(fvec4) Load 67 69: 24(ptr) AccessChain 48(vin) 23 33 Store 69 68 70: 52(ptr) AccessChain 56(vin.color) 23 71: 7(fvec4) Load 70 72: 24(ptr) AccessChain 48(vin) 23 23 Store 72 71 73: 63(ptr) AccessChain 62(vin.uv) 23 74: 8(fvec2) Load 73 75: 29(ptr) AccessChain 48(vin) 23 28 Store 75 74 78: 12 Load 48(vin) Store 77(param) 78 80: 2 FunctionCall 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;) 77(param) 79(param) 81: 14(PS_IN) Load 79(param) Store 76(outStream) 81 Return FunctionEnd 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;): 2 Function None 16 17(vin): 13(ptr) FunctionParameter 18(outStream): 15(ptr) FunctionParameter 20: Label 21(vout): 15(ptr) Variable Function 25: 24(ptr) AccessChain 17(vin) 23 23 26: 7(fvec4) Load 25 27: 24(ptr) AccessChain 21(vout) 23 Store 27 26 30: 29(ptr) AccessChain 17(vin) 23 28 31: 8(fvec2) Load 30 32: 29(ptr) AccessChain 21(vout) 28 Store 32 31 34: 24(ptr) AccessChain 17(vin) 23 33 35: 7(fvec4) Load 34 36: 24(ptr) AccessChain 21(vout) 33 Store 36 35 39: 24(ptr) AccessChain 21(vout) 33 40: 7(fvec4) Load 39 Store 38(outStream.position) 40 42: 24(ptr) AccessChain 21(vout) 23 43: 7(fvec4) Load 42 Store 41(outStream.color) 43 46: 29(ptr) AccessChain 21(vout) 28 47: 8(fvec2) Load 46 Store 45(outStream.uv) 47 EmitVertex Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.append.fn.frag.out000066400000000000000000000374671506534232700254660ustar00rootroot00000000000000hlsl.structbuffer.append.fn.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:8 'arg_a@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:8 'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:8 'arg_c@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 indirect index ( buffer 4-component vector of float) 0:9 @data: direct index for structure ( buffer unsized 1-element array of 4-component vector of float) 0:9 'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 AtomicAdd ( temp uint) 0:9 @count: direct index for structure ( temp uint) 0:9 'arg_a@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 1 (const uint) 0:9 Constant: 0:9 1.000000 0:9 2.000000 0:9 3.000000 0:9 4.000000 0:10 Branch: Return with expression 0:10 indirect index ( buffer 4-component vector of float) 0:10 @data: direct index for structure ( buffer unsized 1-element array of 4-component vector of float) 0:10 'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp uint) 0:10 AtomicAdd ( temp uint) 0:10 @count: direct index for structure ( temp uint) 0:10 'arg_c@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 4294967295 (const uint) 0:10 Constant: 0:10 -1 (const int) 0:19 Function Definition: @main(u1; ( temp 4-component vector of float) 0:19 Function Parameters: 0:19 'pos' ( in uint) 0:? Sequence 0:22 Branch: Return with expression 0:22 Function Call: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float) 0:22 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:22 'sbuf_a@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:22 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:22 'sbuf_c@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:19 Function Definition: main( ( temp void) 0:19 Function Parameters: 0:? Sequence 0:19 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:19 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:19 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float) 0:8 Function Parameters: 0:8 'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:8 'arg_a@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:8 'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:8 'arg_c@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 indirect index ( buffer 4-component vector of float) 0:9 @data: direct index for structure ( buffer unsized 1-element array of 4-component vector of float) 0:9 'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 AtomicAdd ( temp uint) 0:9 @count: direct index for structure ( temp uint) 0:9 'arg_a@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 1 (const uint) 0:9 Constant: 0:9 1.000000 0:9 2.000000 0:9 3.000000 0:9 4.000000 0:10 Branch: Return with expression 0:10 indirect index ( buffer 4-component vector of float) 0:10 @data: direct index for structure ( buffer unsized 1-element array of 4-component vector of float) 0:10 'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp uint) 0:10 AtomicAdd ( temp uint) 0:10 @count: direct index for structure ( temp uint) 0:10 'arg_c@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 4294967295 (const uint) 0:10 Constant: 0:10 -1 (const int) 0:19 Function Definition: @main(u1; ( temp 4-component vector of float) 0:19 Function Parameters: 0:19 'pos' ( in uint) 0:? Sequence 0:22 Branch: Return with expression 0:22 Function Call: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float) 0:22 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:22 'sbuf_a@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:22 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:22 'sbuf_c@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:19 Function Definition: main( ( temp void) 0:19 Function Parameters: 0:? Sequence 0:19 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:19 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:19 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 58 61 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "" MemberName 9 0 "@data" Name 12 "" MemberName 12 0 "@count" Name 19 "Fn2(block--vf4[0]1;block--vf4[0]1;" Name 15 "arg_a" Name 16 "arg_a@count" Name 17 "arg_c" Name 18 "arg_c@count" Name 24 "@main(u1;" Name 23 "pos" Name 49 "sbuf_a" Name 50 "sbuf_a@count" Name 51 "sbuf_c" Name 52 "sbuf_c@count" Name 56 "pos" Name 58 "pos" Name 61 "@entryPointOutput" Name 62 "param" Name 65 "sbuf_a@count" MemberName 65(sbuf_a@count) 0 "@count" Name 67 "sbuf_a@count" Name 68 "sbuf_c@count" Name 69 "sbuf_unused" Decorate 8 ArrayStride 16 Decorate 9 BufferBlock MemberDecorate 9 0 Offset 0 Decorate 12 BufferBlock Decorate 49(sbuf_a) Binding 0 Decorate 49(sbuf_a) DescriptorSet 0 Decorate 50(sbuf_a@count) Binding 0 Decorate 50(sbuf_a@count) DescriptorSet 0 Decorate 51(sbuf_c) Binding 1 Decorate 51(sbuf_c) DescriptorSet 0 Decorate 52(sbuf_c@count) Binding 0 Decorate 52(sbuf_c@count) DescriptorSet 0 Decorate 58(pos) Flat Decorate 58(pos) Location 0 Decorate 61(@entryPointOutput) Location 0 Decorate 65(sbuf_a@count) BufferBlock MemberDecorate 65(sbuf_a@count) 0 Offset 0 Decorate 67(sbuf_a@count) Binding 0 Decorate 67(sbuf_a@count) DescriptorSet 0 Decorate 68(sbuf_c@count) Binding 0 Decorate 68(sbuf_c@count) DescriptorSet 0 Decorate 69(sbuf_unused) Binding 0 Decorate 69(sbuf_unused) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeRuntimeArray 7(fvec4) 9: TypeStruct 8 10: TypePointer Uniform 9(struct) 11: TypeInt 32 0 12: TypeStruct 11(int) 13: TypePointer Uniform 12(struct) 14: TypeFunction 7(fvec4) 10(ptr) 13(ptr) 10(ptr) 13(ptr) 21: TypePointer Function 11(int) 22: TypeFunction 7(fvec4) 21(ptr) 26: TypeInt 32 1 27: 26(int) Constant 0 28: TypePointer Uniform 11(int) 30: 11(int) Constant 1 31: 11(int) Constant 0 33: 6(float) Constant 1065353216 34: 6(float) Constant 1073741824 35: 6(float) Constant 1077936128 36: 6(float) Constant 1082130432 37: 7(fvec4) ConstantComposite 33 34 35 36 38: TypePointer Uniform 7(fvec4) 41: 11(int) Constant 4294967295 43: 26(int) Constant 4294967295 49(sbuf_a): 10(ptr) Variable Uniform 50(sbuf_a@count): 13(ptr) Variable Uniform 51(sbuf_c): 10(ptr) Variable Uniform 52(sbuf_c@count): 13(ptr) Variable Uniform 57: TypePointer Input 11(int) 58(pos): 57(ptr) Variable Input 60: TypePointer Output 7(fvec4) 61(@entryPointOutput): 60(ptr) Variable Output 65(sbuf_a@count): TypeStruct 11(int) 66: TypePointer Uniform 65(sbuf_a@count) 67(sbuf_a@count): 66(ptr) Variable Uniform 68(sbuf_c@count): 66(ptr) Variable Uniform 69(sbuf_unused): 10(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 56(pos): 21(ptr) Variable Function 62(param): 21(ptr) Variable Function 59: 11(int) Load 58(pos) Store 56(pos) 59 63: 11(int) Load 56(pos) Store 62(param) 63 64: 7(fvec4) FunctionCall 24(@main(u1;) 62(param) Store 61(@entryPointOutput) 64 Return FunctionEnd 19(Fn2(block--vf4[0]1;block--vf4[0]1;): 7(fvec4) Function None 14 15(arg_a): 10(ptr) FunctionParameter 16(arg_a@count): 13(ptr) FunctionParameter 17(arg_c): 10(ptr) FunctionParameter 18(arg_c@count): 13(ptr) FunctionParameter 20: Label 29: 28(ptr) AccessChain 16(arg_a@count) 27 32: 11(int) AtomicIAdd 29 30 31 30 39: 38(ptr) AccessChain 15(arg_a) 27 32 Store 39 37 40: 28(ptr) AccessChain 18(arg_c@count) 27 42: 11(int) AtomicIAdd 40 30 31 41 44: 11(int) IAdd 42 43 45: 38(ptr) AccessChain 17(arg_c) 27 44 46: 7(fvec4) Load 45 ReturnValue 46 FunctionEnd 24(@main(u1;): 7(fvec4) Function None 22 23(pos): 21(ptr) FunctionParameter 25: Label 53: 7(fvec4) FunctionCall 19(Fn2(block--vf4[0]1;block--vf4[0]1;) 49(sbuf_a) 50(sbuf_a@count) 51(sbuf_c) 52(sbuf_c@count) ReturnValue 53 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.append.frag.out000066400000000000000000000301001506534232700250350ustar00rootroot00000000000000hlsl.structbuffer.append.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(u1; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'pos' ( in uint) 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 indirect index (layout( row_major std430) buffer 4-component vector of float) 0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:8 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:8 Constant: 0:8 0 (const uint) 0:8 AtomicAdd ( temp uint) 0:8 @count: direct index for structure ( temp uint) 0:8 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 1 (const uint) 0:8 Constant: 0:8 1.000000 0:8 2.000000 0:8 3.000000 0:8 4.000000 0:10 Branch: Return with expression 0:10 indirect index (layout( row_major std430) buffer 4-component vector of float) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:10 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp uint) 0:10 AtomicAdd ( temp uint) 0:10 @count: direct index for structure ( temp uint) 0:10 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 4294967295 (const uint) 0:10 Constant: 0:10 -1 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(u1; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'pos' ( in uint) 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 indirect index (layout( row_major std430) buffer 4-component vector of float) 0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:8 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:8 Constant: 0:8 0 (const uint) 0:8 AtomicAdd ( temp uint) 0:8 @count: direct index for structure ( temp uint) 0:8 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 1 (const uint) 0:8 Constant: 0:8 1.000000 0:8 2.000000 0:8 3.000000 0:8 4.000000 0:10 Branch: Return with expression 0:10 indirect index (layout( row_major std430) buffer 4-component vector of float) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:10 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp uint) 0:10 AtomicAdd ( temp uint) 0:10 @count: direct index for structure ( temp uint) 0:10 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 4294967295 (const uint) 0:10 Constant: 0:10 -1 (const int) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 48 51 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 15 "sbuf_a" MemberName 15(sbuf_a) 0 "@data" Name 17 "sbuf_a" Name 20 "sbuf_a@count" MemberName 20(sbuf_a@count) 0 "@count" Name 22 "sbuf_a@count" Name 35 "sbuf_c" Name 36 "sbuf_c@count" Name 46 "pos" Name 48 "pos" Name 51 "@entryPointOutput" Name 52 "param" Name 55 "sbuf_unused" Decorate 14 ArrayStride 16 Decorate 15(sbuf_a) BufferBlock MemberDecorate 15(sbuf_a) 0 Offset 0 Decorate 17(sbuf_a) Binding 0 Decorate 17(sbuf_a) DescriptorSet 0 Decorate 20(sbuf_a@count) BufferBlock MemberDecorate 20(sbuf_a@count) 0 Offset 0 Decorate 22(sbuf_a@count) Binding 1 Decorate 22(sbuf_a@count) DescriptorSet 0 Decorate 35(sbuf_c) Binding 2 Decorate 35(sbuf_c) DescriptorSet 0 Decorate 36(sbuf_c@count) Binding 3 Decorate 36(sbuf_c@count) DescriptorSet 0 Decorate 48(pos) Flat Decorate 48(pos) Location 0 Decorate 51(@entryPointOutput) Location 0 Decorate 55(sbuf_unused) Binding 0 Decorate 55(sbuf_unused) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 14: TypeRuntimeArray 9(fvec4) 15(sbuf_a): TypeStruct 14 16: TypePointer Uniform 15(sbuf_a) 17(sbuf_a): 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 20(sbuf_a@count): TypeStruct 6(int) 21: TypePointer Uniform 20(sbuf_a@count) 22(sbuf_a@count): 21(ptr) Variable Uniform 23: TypePointer Uniform 6(int) 25: 6(int) Constant 1 26: 6(int) Constant 0 28: 8(float) Constant 1065353216 29: 8(float) Constant 1073741824 30: 8(float) Constant 1077936128 31: 8(float) Constant 1082130432 32: 9(fvec4) ConstantComposite 28 29 30 31 33: TypePointer Uniform 9(fvec4) 35(sbuf_c): 16(ptr) Variable Uniform 36(sbuf_c@count): 21(ptr) Variable Uniform 38: 6(int) Constant 4294967295 40: 18(int) Constant 4294967295 47: TypePointer Input 6(int) 48(pos): 47(ptr) Variable Input 50: TypePointer Output 9(fvec4) 51(@entryPointOutput): 50(ptr) Variable Output 55(sbuf_unused): 16(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 46(pos): 7(ptr) Variable Function 52(param): 7(ptr) Variable Function 49: 6(int) Load 48(pos) Store 46(pos) 49 53: 6(int) Load 46(pos) Store 52(param) 53 54: 9(fvec4) FunctionCall 12(@main(u1;) 52(param) Store 51(@entryPointOutput) 54 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 24: 23(ptr) AccessChain 22(sbuf_a@count) 19 27: 6(int) AtomicIAdd 24 25 26 25 34: 33(ptr) AccessChain 17(sbuf_a) 19 27 Store 34 32 37: 23(ptr) AccessChain 36(sbuf_c@count) 19 39: 6(int) AtomicIAdd 37 25 26 38 41: 6(int) IAdd 39 40 42: 33(ptr) AccessChain 35(sbuf_c) 19 41 43: 9(fvec4) Load 42 ReturnValue 43 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.atomics.frag.out000066400000000000000000000706031506534232700252410ustar00rootroot00000000000000hlsl.structbuffer.atomics.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main(u1; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'pos' ( in uint) 0:? Sequence 0:8 AtomicAdd ( temp uint) 0:8 indirect 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 '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 right-shift ( temp int) 0:8 Constant: 0:8 8 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:9 move second child to first child ( temp uint) 0:9 'u' ( temp uint) 0:9 AtomicAdd ( temp uint) 0:9 indirect index (layout( row_major std430) buffer uint) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:9 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift ( temp int) 0:9 Constant: 0:9 8 (const int) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 1 (const int) 0:10 AtomicAnd ( temp uint) 0:10 indirect index (layout( row_major std430) buffer uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 right-shift ( temp int) 0:10 Constant: 0:10 8 (const int) 0:10 Constant: 0:10 2 (const int) 0:10 Constant: 0:10 1 (const int) 0:11 move second child to first child ( temp uint) 0:11 'u' ( temp uint) 0:11 AtomicAnd ( temp uint) 0:11 indirect index (layout( row_major std430) buffer uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 right-shift ( temp int) 0:11 Constant: 0:11 8 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:12 move second child to first child ( temp uint) 0:12 'u' ( temp uint) 0:12 Convert int to uint ( temp uint) 0:12 AtomicCompSwap ( temp int) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 right-shift ( temp int) 0:12 Constant: 0:12 8 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2 (const int) 0:14 move second child to first child ( temp uint) 0:14 'u' ( temp uint) 0:14 AtomicExchange ( temp uint) 0:14 indirect index (layout( row_major std430) buffer uint) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:14 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 right-shift ( temp int) 0:14 Constant: 0:14 8 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 1 (const int) 0:15 AtomicMax ( temp uint) 0:15 indirect index (layout( row_major std430) buffer uint) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:15 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 right-shift ( temp int) 0:15 Constant: 0:15 8 (const int) 0:15 Constant: 0:15 2 (const int) 0:15 Constant: 0:15 1 (const int) 0:16 move second child to first child ( temp uint) 0:16 'u' ( temp uint) 0:16 AtomicMax ( temp uint) 0:16 indirect index (layout( row_major std430) buffer uint) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:16 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 right-shift ( temp int) 0:16 Constant: 0:16 8 (const int) 0:16 Constant: 0:16 2 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 AtomicMin ( temp uint) 0:17 indirect index (layout( row_major std430) buffer uint) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:17 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 right-shift ( temp int) 0:17 Constant: 0:17 8 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 1 (const int) 0:18 move second child to first child ( temp uint) 0:18 'u' ( temp uint) 0:18 AtomicMin ( temp uint) 0:18 indirect index (layout( row_major std430) buffer uint) 0:18 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:18 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:18 Constant: 0:18 0 (const uint) 0:18 right-shift ( temp int) 0:18 Constant: 0:18 8 (const int) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 1 (const int) 0:19 AtomicOr ( temp uint) 0:19 indirect index (layout( row_major std430) buffer uint) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:19 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 right-shift ( temp int) 0:19 Constant: 0:19 8 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp uint) 0:20 'u' ( temp uint) 0:20 AtomicOr ( temp uint) 0:20 indirect index (layout( row_major std430) buffer uint) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:20 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 right-shift ( temp int) 0:20 Constant: 0:20 8 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 1 (const int) 0:21 AtomicXor ( temp uint) 0:21 indirect index (layout( row_major std430) buffer uint) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:21 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 right-shift ( temp int) 0:21 Constant: 0:21 8 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp uint) 0:22 'u' ( temp uint) 0:22 AtomicXor ( temp uint) 0:22 indirect index (layout( row_major std430) buffer uint) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:22 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 right-shift ( temp int) 0:22 Constant: 0:22 8 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 1 (const int) 0:24 Branch: Return with expression 0:24 Construct vec4 ( temp 4-component vector of float) 0:24 Convert uint to float ( temp float) 0:24 indirect index (layout( row_major std430) buffer uint) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:24 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 right-shift ( temp int) 0:24 'pos' ( in uint) 0:24 Constant: 0:24 2 (const int) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 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(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main(u1; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'pos' ( in uint) 0:? Sequence 0:8 AtomicAdd ( temp uint) 0:8 indirect 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 '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 right-shift ( temp int) 0:8 Constant: 0:8 8 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) 0:9 move second child to first child ( temp uint) 0:9 'u' ( temp uint) 0:9 AtomicAdd ( temp uint) 0:9 indirect index (layout( row_major std430) buffer uint) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:9 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift ( temp int) 0:9 Constant: 0:9 8 (const int) 0:9 Constant: 0:9 2 (const int) 0:9 Constant: 0:9 1 (const int) 0:10 AtomicAnd ( temp uint) 0:10 indirect index (layout( row_major std430) buffer uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 right-shift ( temp int) 0:10 Constant: 0:10 8 (const int) 0:10 Constant: 0:10 2 (const int) 0:10 Constant: 0:10 1 (const int) 0:11 move second child to first child ( temp uint) 0:11 'u' ( temp uint) 0:11 AtomicAnd ( temp uint) 0:11 indirect index (layout( row_major std430) buffer uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 right-shift ( temp int) 0:11 Constant: 0:11 8 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:12 move second child to first child ( temp uint) 0:12 'u' ( temp uint) 0:12 Convert int to uint ( temp uint) 0:12 AtomicCompSwap ( temp int) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 right-shift ( temp int) 0:12 Constant: 0:12 8 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 2 (const int) 0:14 move second child to first child ( temp uint) 0:14 'u' ( temp uint) 0:14 AtomicExchange ( temp uint) 0:14 indirect index (layout( row_major std430) buffer uint) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:14 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 right-shift ( temp int) 0:14 Constant: 0:14 8 (const int) 0:14 Constant: 0:14 2 (const int) 0:14 Constant: 0:14 1 (const int) 0:15 AtomicMax ( temp uint) 0:15 indirect index (layout( row_major std430) buffer uint) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:15 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 right-shift ( temp int) 0:15 Constant: 0:15 8 (const int) 0:15 Constant: 0:15 2 (const int) 0:15 Constant: 0:15 1 (const int) 0:16 move second child to first child ( temp uint) 0:16 'u' ( temp uint) 0:16 AtomicMax ( temp uint) 0:16 indirect index (layout( row_major std430) buffer uint) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:16 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 right-shift ( temp int) 0:16 Constant: 0:16 8 (const int) 0:16 Constant: 0:16 2 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 AtomicMin ( temp uint) 0:17 indirect index (layout( row_major std430) buffer uint) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:17 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 right-shift ( temp int) 0:17 Constant: 0:17 8 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 1 (const int) 0:18 move second child to first child ( temp uint) 0:18 'u' ( temp uint) 0:18 AtomicMin ( temp uint) 0:18 indirect index (layout( row_major std430) buffer uint) 0:18 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:18 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:18 Constant: 0:18 0 (const uint) 0:18 right-shift ( temp int) 0:18 Constant: 0:18 8 (const int) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 1 (const int) 0:19 AtomicOr ( temp uint) 0:19 indirect index (layout( row_major std430) buffer uint) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:19 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 right-shift ( temp int) 0:19 Constant: 0:19 8 (const int) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp uint) 0:20 'u' ( temp uint) 0:20 AtomicOr ( temp uint) 0:20 indirect index (layout( row_major std430) buffer uint) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:20 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 right-shift ( temp int) 0:20 Constant: 0:20 8 (const int) 0:20 Constant: 0:20 2 (const int) 0:20 Constant: 0:20 1 (const int) 0:21 AtomicXor ( temp uint) 0:21 indirect index (layout( row_major std430) buffer uint) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:21 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 right-shift ( temp int) 0:21 Constant: 0:21 8 (const int) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp uint) 0:22 'u' ( temp uint) 0:22 AtomicXor ( temp uint) 0:22 indirect index (layout( row_major std430) buffer uint) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:22 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 right-shift ( temp int) 0:22 Constant: 0:22 8 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 1 (const int) 0:24 Branch: Return with expression 0:24 Construct vec4 ( temp 4-component vector of float) 0:24 Convert uint to float ( temp float) 0:24 indirect index (layout( row_major std430) buffer uint) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:24 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 right-shift ( temp int) 0:24 'pos' ( in uint) 0:24 Constant: 0:24 2 (const int) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 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(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 87 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 80 83 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 15 "sbuf" MemberName 15(sbuf) 0 "@data" Name 17 "sbuf" Name 29 "u" Name 78 "pos" Name 80 "pos" Name 83 "@entryPointOutput" Name 84 "param" Decorate 14 ArrayStride 4 Decorate 15(sbuf) BufferBlock MemberDecorate 15(sbuf) 0 Offset 0 Decorate 17(sbuf) Binding 0 Decorate 17(sbuf) DescriptorSet 0 Decorate 80(pos) Flat Decorate 80(pos) Location 0 Decorate 83(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 14: TypeRuntimeArray 6(int) 15(sbuf): TypeStruct 14 16: TypePointer Uniform 15(sbuf) 17(sbuf): 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 20: 18(int) Constant 8 21: 18(int) Constant 2 23: TypePointer Uniform 6(int) 25: 18(int) Constant 1 26: 6(int) Constant 1 27: 6(int) Constant 0 79: TypePointer Input 6(int) 80(pos): 79(ptr) Variable Input 82: TypePointer Output 9(fvec4) 83(@entryPointOutput): 82(ptr) Variable Output 4(main): 2 Function None 3 5: Label 78(pos): 7(ptr) Variable Function 84(param): 7(ptr) Variable Function 81: 6(int) Load 80(pos) Store 78(pos) 81 85: 6(int) Load 78(pos) Store 84(param) 85 86: 9(fvec4) FunctionCall 12(@main(u1;) 84(param) Store 83(@entryPointOutput) 86 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 29(u): 7(ptr) Variable Function 22: 18(int) ShiftRightArithmetic 20 21 24: 23(ptr) AccessChain 17(sbuf) 19 22 28: 6(int) AtomicIAdd 24 26 27 25 30: 18(int) ShiftRightArithmetic 20 21 31: 23(ptr) AccessChain 17(sbuf) 19 30 32: 6(int) AtomicIAdd 31 26 27 25 Store 29(u) 32 33: 18(int) ShiftRightArithmetic 20 21 34: 23(ptr) AccessChain 17(sbuf) 19 33 35: 6(int) AtomicAnd 34 26 27 25 36: 18(int) ShiftRightArithmetic 20 21 37: 23(ptr) AccessChain 17(sbuf) 19 36 38: 6(int) AtomicAnd 37 26 27 25 Store 29(u) 38 39: 18(int) ShiftRightArithmetic 20 21 40: 23(ptr) AccessChain 17(sbuf) 19 39 41: 18(int) AtomicCompareExchange 40 26 27 27 21 25 42: 6(int) Bitcast 41 Store 29(u) 42 43: 18(int) ShiftRightArithmetic 20 21 44: 23(ptr) AccessChain 17(sbuf) 19 43 45: 6(int) AtomicExchange 44 26 27 25 Store 29(u) 45 46: 18(int) ShiftRightArithmetic 20 21 47: 23(ptr) AccessChain 17(sbuf) 19 46 48: 6(int) AtomicUMax 47 26 27 25 49: 18(int) ShiftRightArithmetic 20 21 50: 23(ptr) AccessChain 17(sbuf) 19 49 51: 6(int) AtomicUMax 50 26 27 25 Store 29(u) 51 52: 18(int) ShiftRightArithmetic 20 21 53: 23(ptr) AccessChain 17(sbuf) 19 52 54: 6(int) AtomicUMin 53 26 27 25 55: 18(int) ShiftRightArithmetic 20 21 56: 23(ptr) AccessChain 17(sbuf) 19 55 57: 6(int) AtomicUMin 56 26 27 25 Store 29(u) 57 58: 18(int) ShiftRightArithmetic 20 21 59: 23(ptr) AccessChain 17(sbuf) 19 58 60: 6(int) AtomicOr 59 26 27 25 61: 18(int) ShiftRightArithmetic 20 21 62: 23(ptr) AccessChain 17(sbuf) 19 61 63: 6(int) AtomicOr 62 26 27 25 Store 29(u) 63 64: 18(int) ShiftRightArithmetic 20 21 65: 23(ptr) AccessChain 17(sbuf) 19 64 66: 6(int) AtomicXor 65 26 27 25 67: 18(int) ShiftRightArithmetic 20 21 68: 23(ptr) AccessChain 17(sbuf) 19 67 69: 6(int) AtomicXor 68 26 27 25 Store 29(u) 69 70: 6(int) Load 11(pos) 71: 18(int) ShiftRightLogical 70 21 72: 23(ptr) AccessChain 17(sbuf) 19 71 73: 6(int) Load 72 74: 8(float) ConvertUToF 73 75: 9(fvec4) CompositeConstruct 74 74 74 74 ReturnValue 75 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.byte.frag.out000066400000000000000000000631241506534232700245450ustar00rootroot00000000000000hlsl.structbuffer.byte.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main(u1; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'pos' ( in uint) 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp uint) 0:7 'size' ( temp uint) 0:7 array length ( temp uint) 0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:7 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:7 Constant: 0:7 0 (const uint) 0:12 Branch: Return with expression 0:11 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 Convert uint to float ( temp float) 0:9 indirect index (layout( row_major std430) buffer uint) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:9 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift ( temp int) 0:9 'pos' ( in uint) 0:9 Constant: 0:9 2 (const int) 0:10 Construct vec4 ( temp 4-component vector of float) 0:? Convert uint to float ( temp 2-component vector of float) 0:? Sequence 0:10 move second child to first child ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 right-shift ( temp int) 0:10 add ( temp uint) 0:10 'pos' ( in uint) 0:10 Constant: 0:10 4 (const uint) 0:10 Constant: 0:10 2 (const int) 0:? Construct vec2 ( temp 2-component vector of uint) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' ( temp int) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0.000000 0:10 Constant: 0:10 0.000000 0:11 Construct vec4 ( temp 4-component vector of float) 0:? Convert uint to float ( temp 3-component vector of float) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 add ( temp uint) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 8 (const uint) 0:11 Constant: 0:11 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0.000000 0:? Convert uint to float ( temp 4-component vector of float) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 add ( temp uint) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 12 (const uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 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(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main(u1; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'pos' ( in uint) 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp uint) 0:7 'size' ( temp uint) 0:7 array length ( temp uint) 0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:7 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:7 Constant: 0:7 0 (const uint) 0:12 Branch: Return with expression 0:11 add ( temp 4-component vector of float) 0:10 add ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 Convert uint to float ( temp float) 0:9 indirect index (layout( row_major std430) buffer uint) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:9 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift ( temp int) 0:9 'pos' ( in uint) 0:9 Constant: 0:9 2 (const int) 0:10 Construct vec4 ( temp 4-component vector of float) 0:? Convert uint to float ( temp 2-component vector of float) 0:? Sequence 0:10 move second child to first child ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 right-shift ( temp int) 0:10 add ( temp uint) 0:10 'pos' ( in uint) 0:10 Constant: 0:10 4 (const uint) 0:10 Constant: 0:10 2 (const int) 0:? Construct vec2 ( temp 2-component vector of uint) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' ( temp int) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0.000000 0:10 Constant: 0:10 0.000000 0:11 Construct vec4 ( temp 4-component vector of float) 0:? Convert uint to float ( temp 3-component vector of float) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 add ( temp uint) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 8 (const uint) 0:11 Constant: 0:11 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0.000000 0:? Convert uint to float ( temp 4-component vector of float) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 add ( temp uint) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 12 (const uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 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(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 114 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 107 110 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 14 "size" Name 16 "sbuf" MemberName 16(sbuf) 0 "@data" Name 18 "sbuf" Name 30 "byteAddrTemp" Name 53 "byteAddrTemp" Name 78 "byteAddrTemp" Name 105 "pos" Name 107 "pos" Name 110 "@entryPointOutput" Name 111 "param" Decorate 15 ArrayStride 4 Decorate 16(sbuf) BufferBlock MemberDecorate 16(sbuf) 0 NonWritable MemberDecorate 16(sbuf) 0 Offset 0 Decorate 18(sbuf) NonWritable Decorate 18(sbuf) Binding 0 Decorate 18(sbuf) DescriptorSet 0 Decorate 107(pos) Flat Decorate 107(pos) Location 0 Decorate 110(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 15: TypeRuntimeArray 6(int) 16(sbuf): TypeStruct 15 17: TypePointer Uniform 16(sbuf) 18(sbuf): 17(ptr) Variable Uniform 20: TypeInt 32 1 21: 20(int) Constant 0 23: 20(int) Constant 2 25: TypePointer Uniform 6(int) 29: TypePointer Function 20(int) 32: 6(int) Constant 4 39: 20(int) Constant 1 43: TypeVector 6(int) 2 45: TypeVector 8(float) 2 47: 8(float) Constant 0 55: 6(int) Constant 8 69: TypeVector 6(int) 3 71: TypeVector 8(float) 3 80: 6(int) Constant 12 95: 20(int) Constant 3 99: TypeVector 6(int) 4 106: TypePointer Input 6(int) 107(pos): 106(ptr) Variable Input 109: TypePointer Output 9(fvec4) 110(@entryPointOutput): 109(ptr) Variable Output 4(main): 2 Function None 3 5: Label 105(pos): 7(ptr) Variable Function 111(param): 7(ptr) Variable Function 108: 6(int) Load 107(pos) Store 105(pos) 108 112: 6(int) Load 105(pos) Store 111(param) 112 113: 9(fvec4) FunctionCall 12(@main(u1;) 111(param) Store 110(@entryPointOutput) 113 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 14(size): 7(ptr) Variable Function 30(byteAddrTemp): 29(ptr) Variable Function 53(byteAddrTemp): 29(ptr) Variable Function 78(byteAddrTemp): 29(ptr) Variable Function 19: 6(int) ArrayLength 18(sbuf) 0 Store 14(size) 19 22: 6(int) Load 11(pos) 24: 20(int) ShiftRightLogical 22 23 26: 25(ptr) AccessChain 18(sbuf) 21 24 27: 6(int) Load 26 28: 8(float) ConvertUToF 27 31: 6(int) Load 11(pos) 33: 6(int) IAdd 31 32 34: 20(int) ShiftRightLogical 33 23 Store 30(byteAddrTemp) 34 35: 20(int) Load 30(byteAddrTemp) 36: 25(ptr) AccessChain 18(sbuf) 21 35 37: 6(int) Load 36 38: 20(int) Load 30(byteAddrTemp) 40: 20(int) IAdd 38 39 41: 25(ptr) AccessChain 18(sbuf) 21 40 42: 6(int) Load 41 44: 43(ivec2) CompositeConstruct 37 42 46: 45(fvec2) ConvertUToF 44 48: 8(float) CompositeExtract 46 0 49: 8(float) CompositeExtract 46 1 50: 9(fvec4) CompositeConstruct 48 49 47 47 51: 9(fvec4) CompositeConstruct 28 28 28 28 52: 9(fvec4) FAdd 51 50 54: 6(int) Load 11(pos) 56: 6(int) IAdd 54 55 57: 20(int) ShiftRightLogical 56 23 Store 53(byteAddrTemp) 57 58: 20(int) Load 53(byteAddrTemp) 59: 25(ptr) AccessChain 18(sbuf) 21 58 60: 6(int) Load 59 61: 20(int) Load 53(byteAddrTemp) 62: 20(int) IAdd 61 39 63: 25(ptr) AccessChain 18(sbuf) 21 62 64: 6(int) Load 63 65: 20(int) Load 53(byteAddrTemp) 66: 20(int) IAdd 65 23 67: 25(ptr) AccessChain 18(sbuf) 21 66 68: 6(int) Load 67 70: 69(ivec3) CompositeConstruct 60 64 68 72: 71(fvec3) ConvertUToF 70 73: 8(float) CompositeExtract 72 0 74: 8(float) CompositeExtract 72 1 75: 8(float) CompositeExtract 72 2 76: 9(fvec4) CompositeConstruct 73 74 75 47 77: 9(fvec4) FAdd 52 76 79: 6(int) Load 11(pos) 81: 6(int) IAdd 79 80 82: 20(int) ShiftRightLogical 81 23 Store 78(byteAddrTemp) 82 83: 20(int) Load 78(byteAddrTemp) 84: 25(ptr) AccessChain 18(sbuf) 21 83 85: 6(int) Load 84 86: 20(int) Load 78(byteAddrTemp) 87: 20(int) IAdd 86 39 88: 25(ptr) AccessChain 18(sbuf) 21 87 89: 6(int) Load 88 90: 20(int) Load 78(byteAddrTemp) 91: 20(int) IAdd 90 23 92: 25(ptr) AccessChain 18(sbuf) 21 91 93: 6(int) Load 92 94: 20(int) Load 78(byteAddrTemp) 96: 20(int) IAdd 94 95 97: 25(ptr) AccessChain 18(sbuf) 21 96 98: 6(int) Load 97 100: 99(ivec4) CompositeConstruct 85 89 93 98 101: 9(fvec4) ConvertUToF 100 102: 9(fvec4) FAdd 77 101 ReturnValue 102 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.coherent.frag.out000066400000000000000000000413651506534232700254140ustar00rootroot00000000000000hlsl.structbuffer.coherent.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(u1; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'pos' ( in uint) 0:? Sequence 0:13 move second child to first child ( temp float) 0:13 indirect index (layout( row_major std430) buffer float) 0:13 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:13 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 add ( temp uint) 0:13 'pos' ( in uint) 0:13 Constant: 0:13 1 (const uint) 0:13 Constant: 0:13 42.000000 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'size' ( temp uint) 0:17 array length ( temp uint) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:17 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child ( temp uint) 0:17 'stride' ( temp uint) 0:17 Constant: 0:17 16 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 test: direct index for structure ( temp bool) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:19 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' ( in uint) 0:19 Constant: 0:19 1 (const int) 0:19 true case 0:20 Branch: Return with expression 0:20 Construct vec4 ( temp 4-component vector of float) 0:20 add ( temp 3-component vector of float) 0:20 color: direct index for structure ( temp 3-component vector of float) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:20 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0 (const int) 0:20 indirect index (layout( row_major std430) buffer float) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:20 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0.000000 0:19 false case 0:22 Branch: Return with expression 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 Convert uint to float ( temp float) 0:22 add ( temp uint) 0:22 'size' ( temp uint) 0:22 'stride' ( temp uint) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:? 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(u1; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'pos' ( in uint) 0:? Sequence 0:13 move second child to first child ( temp float) 0:13 indirect index (layout( row_major std430) buffer float) 0:13 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:13 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 add ( temp uint) 0:13 'pos' ( in uint) 0:13 Constant: 0:13 1 (const uint) 0:13 Constant: 0:13 42.000000 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'size' ( temp uint) 0:17 array length ( temp uint) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:17 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child ( temp uint) 0:17 'stride' ( temp uint) 0:17 Constant: 0:17 16 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 test: direct index for structure ( temp bool) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:19 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' ( in uint) 0:19 Constant: 0:19 1 (const int) 0:19 true case 0:20 Branch: Return with expression 0:20 Construct vec4 ( temp 4-component vector of float) 0:20 add ( temp 3-component vector of float) 0:20 color: direct index for structure ( temp 3-component vector of float) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:20 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0 (const int) 0:20 indirect index (layout( row_major std430) buffer float) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:20 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0.000000 0:19 false case 0:22 Branch: Return with expression 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 Convert uint to float ( temp float) 0:22 add ( temp uint) 0:22 'size' ( temp uint) 0:22 'stride' ( temp uint) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:? 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 71 74 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 15 "sbuf2" MemberName 15(sbuf2) 0 "@data" Name 17 "sbuf2" Name 26 "size" Name 28 "sb_t" MemberName 28(sb_t) 0 "color" MemberName 28(sb_t) 1 "test" Name 30 "sbuf" MemberName 30(sbuf) 0 "@data" Name 32 "sbuf" Name 34 "stride" Name 69 "pos" Name 71 "pos" Name 74 "@entryPointOutput" Name 75 "param" Decorate 14 ArrayStride 4 Decorate 15(sbuf2) BufferBlock MemberDecorate 15(sbuf2) 0 Coherent MemberDecorate 15(sbuf2) 0 Offset 0 Decorate 17(sbuf2) Coherent Decorate 17(sbuf2) Binding 1 Decorate 17(sbuf2) DescriptorSet 0 MemberDecorate 28(sb_t) 0 Offset 0 MemberDecorate 28(sb_t) 1 Offset 12 Decorate 29 ArrayStride 16 Decorate 30(sbuf) BufferBlock MemberDecorate 30(sbuf) 0 Coherent MemberDecorate 30(sbuf) 0 Offset 0 Decorate 32(sbuf) Coherent Decorate 32(sbuf) Binding 0 Decorate 32(sbuf) DescriptorSet 0 Decorate 71(pos) Flat Decorate 71(pos) Location 0 Decorate 74(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 14: TypeRuntimeArray 8(float) 15(sbuf2): TypeStruct 14 16: TypePointer Uniform 15(sbuf2) 17(sbuf2): 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 21: 6(int) Constant 1 23: 8(float) Constant 1109917696 24: TypePointer Uniform 8(float) 27: TypeVector 8(float) 3 28(sb_t): TypeStruct 27(fvec3) 6(int) 29: TypeRuntimeArray 28(sb_t) 30(sbuf): TypeStruct 29 31: TypePointer Uniform 30(sbuf) 32(sbuf): 31(ptr) Variable Uniform 35: 6(int) Constant 16 37: 18(int) Constant 1 38: TypePointer Uniform 6(int) 41: TypeBool 42: 6(int) Constant 0 47: TypePointer Uniform 27(fvec3) 55: 8(float) Constant 0 70: TypePointer Input 6(int) 71(pos): 70(ptr) Variable Input 73: TypePointer Output 9(fvec4) 74(@entryPointOutput): 73(ptr) Variable Output 4(main): 2 Function None 3 5: Label 69(pos): 7(ptr) Variable Function 75(param): 7(ptr) Variable Function 72: 6(int) Load 71(pos) Store 69(pos) 72 76: 6(int) Load 69(pos) Store 75(param) 76 77: 9(fvec4) FunctionCall 12(@main(u1;) 75(param) Store 74(@entryPointOutput) 77 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 26(size): 7(ptr) Variable Function 34(stride): 7(ptr) Variable Function 20: 6(int) Load 11(pos) 22: 6(int) IAdd 20 21 25: 24(ptr) AccessChain 17(sbuf2) 19 22 Store 25 23 33: 6(int) ArrayLength 32(sbuf) 0 Store 26(size) 33 Store 34(stride) 35 36: 6(int) Load 11(pos) 39: 38(ptr) AccessChain 32(sbuf) 19 36 37 40: 6(int) Load 39 43: 41(bool) INotEqual 40 42 SelectionMerge 45 None BranchConditional 43 44 61 44: Label 46: 6(int) Load 11(pos) 48: 47(ptr) AccessChain 32(sbuf) 19 46 19 49: 27(fvec3) Load 48 50: 6(int) Load 11(pos) 51: 24(ptr) AccessChain 17(sbuf2) 19 50 52: 8(float) Load 51 53: 27(fvec3) CompositeConstruct 52 52 52 54: 27(fvec3) FAdd 49 53 56: 8(float) CompositeExtract 54 0 57: 8(float) CompositeExtract 54 1 58: 8(float) CompositeExtract 54 2 59: 9(fvec4) CompositeConstruct 56 57 58 55 ReturnValue 59 61: Label 62: 6(int) Load 26(size) 63: 6(int) Load 34(stride) 64: 6(int) IAdd 62 63 65: 8(float) ConvertUToF 64 66: 9(fvec4) CompositeConstruct 65 65 65 65 ReturnValue 66 45: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.floatidx.comp.out000066400000000000000000000447231506534232700254370ustar00rootroot00000000000000hlsl.structbuffer.floatidx.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:13 Function Definition: @main(vu3; ( temp void) 0:13 Function Parameters: 0:13 'nThreadId' ( in 3-component vector of uint) 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:14 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:14 'csb' (layout( binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 add ( temp uint) 0:14 AtomicAdd ( temp uint) 0:14 @count: direct index for structure ( temp uint) 0:14 'csb@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 4294967295 (const uint) 0:14 Constant: 0:14 -1 (const int) 0:15 Sequence 0:15 move second child to first child ( temp 2-component vector of float) 0:15 'coord' ( temp 2-component vector of float) 0:15 Convert uint to float ( temp 2-component vector of float) 0:15 vector swizzle ( temp 2-component vector of uint) 0:15 threadId: direct index for structure ( temp 2-component vector of uint) 0:15 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:15 Constant: 0:15 1 (const int) 0:15 Sequence 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1 (const int) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'storeTemp' ( temp 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:16 Constant: 0:16 0 (const int) 0:16 imageStore ( temp void) 0:16 'outtx' (layout( rgba32f) uniform image2D) 0:16 Convert float to uint ( temp 2-component vector of uint) 0:16 'coord' ( temp 2-component vector of float) 0:16 'storeTemp' ( temp 4-component vector of float) 0:16 'storeTemp' ( temp 4-component vector of float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 indirect index (layout( row_major std430) buffer 4-component vector of float) 0:18 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:18 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:18 Constant: 0:18 0 (const uint) 0:18 Convert float to uint ( temp uint) 0:18 direct index ( temp float) 0:18 'coord' ( temp 2-component vector of float) 0:18 Constant: 0:18 0 (const int) 0:18 indirect index (layout( row_major std430) buffer 4-component vector of float) 0:18 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:18 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:18 Constant: 0:18 0 (const uint) 0:18 Convert float to uint ( temp uint) 0:18 direct index ( temp float) 0:18 'coord' ( temp 2-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'nThreadId' ( temp 3-component vector of uint) 0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @main(vu3; ( temp void) 0:? 'nThreadId' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'outtx' (layout( rgba32f) uniform image2D) 0:? 'csb' (layout( binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId} @data}) 0:? 'csb@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:13 Function Definition: @main(vu3; ( temp void) 0:13 Function Parameters: 0:13 'nThreadId' ( in 3-component vector of uint) 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:14 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:14 'csb' (layout( binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 add ( temp uint) 0:14 AtomicAdd ( temp uint) 0:14 @count: direct index for structure ( temp uint) 0:14 'csb@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 4294967295 (const uint) 0:14 Constant: 0:14 -1 (const int) 0:15 Sequence 0:15 move second child to first child ( temp 2-component vector of float) 0:15 'coord' ( temp 2-component vector of float) 0:15 Convert uint to float ( temp 2-component vector of float) 0:15 vector swizzle ( temp 2-component vector of uint) 0:15 threadId: direct index for structure ( temp 2-component vector of uint) 0:15 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:15 Constant: 0:15 1 (const int) 0:15 Sequence 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1 (const int) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'storeTemp' ( temp 4-component vector of float) 0:16 color: direct index for structure ( temp 4-component vector of float) 0:16 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId}) 0:16 Constant: 0:16 0 (const int) 0:16 imageStore ( temp void) 0:16 'outtx' (layout( rgba32f) uniform image2D) 0:16 Convert float to uint ( temp 2-component vector of uint) 0:16 'coord' ( temp 2-component vector of float) 0:16 'storeTemp' ( temp 4-component vector of float) 0:16 'storeTemp' ( temp 4-component vector of float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 indirect index (layout( row_major std430) buffer 4-component vector of float) 0:18 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:18 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:18 Constant: 0:18 0 (const uint) 0:18 Convert float to uint ( temp uint) 0:18 direct index ( temp float) 0:18 'coord' ( temp 2-component vector of float) 0:18 Constant: 0:18 0 (const int) 0:18 indirect index (layout( row_major std430) buffer 4-component vector of float) 0:18 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float) 0:18 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:18 Constant: 0:18 0 (const uint) 0:18 Convert float to uint ( temp uint) 0:18 direct index ( temp float) 0:18 'coord' ( temp 2-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:13 Function Definition: main( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'nThreadId' ( temp 3-component vector of uint) 0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @main(vu3; ( temp void) 0:? 'nThreadId' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'outtx' (layout( rgba32f) uniform image2D) 0:? 'csb' (layout( binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId} @data}) 0:? 'csb@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data}) 0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 85 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 80 ExecutionMode 4 LocalSize 1 1 1 Source HLSL 500 Name 4 "main" Name 11 "@main(vu3;" Name 10 "nThreadId" Name 16 "sb_t" MemberName 16(sb_t) 0 "color" MemberName 16(sb_t) 1 "threadId" Name 18 "data" Name 19 "sb_t" MemberName 19(sb_t) 0 "color" MemberName 19(sb_t) 1 "threadId" Name 21 "csb" MemberName 21(csb) 0 "@data" Name 23 "csb" Name 26 "csb@count" MemberName 26(csb@count) 0 "@count" Name 28 "csb@count" Name 49 "coord" Name 53 "storeTemp" Name 58 "outtx" Name 64 "rwsb" MemberName 64(rwsb) 0 "@data" Name 66 "rwsb" Name 78 "nThreadId" Name 80 "nThreadId" Name 82 "param" MemberDecorate 19(sb_t) 0 Offset 0 MemberDecorate 19(sb_t) 1 Offset 16 Decorate 20 ArrayStride 32 Decorate 21(csb) BufferBlock MemberDecorate 21(csb) 0 Offset 0 Decorate 23(csb) Binding 1 Decorate 23(csb) DescriptorSet 0 Decorate 26(csb@count) BufferBlock MemberDecorate 26(csb@count) 0 Offset 0 Decorate 28(csb@count) Binding 2 Decorate 28(csb@count) DescriptorSet 0 Decorate 58(outtx) Binding 0 Decorate 58(outtx) DescriptorSet 0 Decorate 63 ArrayStride 16 Decorate 64(rwsb) BufferBlock MemberDecorate 64(rwsb) 0 Offset 0 Decorate 66(rwsb) Binding 3 Decorate 66(rwsb) DescriptorSet 0 Decorate 80(nThreadId) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeFloat 32 14: TypeVector 13(float) 4 15: TypeVector 6(int) 2 16(sb_t): TypeStruct 14(fvec4) 15(ivec2) 17: TypePointer Function 16(sb_t) 19(sb_t): TypeStruct 14(fvec4) 15(ivec2) 20: TypeRuntimeArray 19(sb_t) 21(csb): TypeStruct 20 22: TypePointer Uniform 21(csb) 23(csb): 22(ptr) Variable Uniform 24: TypeInt 32 1 25: 24(int) Constant 0 26(csb@count): TypeStruct 6(int) 27: TypePointer Uniform 26(csb@count) 28(csb@count): 27(ptr) Variable Uniform 29: TypePointer Uniform 6(int) 31: 6(int) Constant 4294967295 32: 6(int) Constant 1 33: 6(int) Constant 0 35: 24(int) Constant 4294967295 37: TypePointer Uniform 19(sb_t) 41: TypePointer Function 14(fvec4) 44: 24(int) Constant 1 45: TypePointer Function 15(ivec2) 47: TypeVector 13(float) 2 48: TypePointer Function 47(fvec2) 56: TypeImage 13(float) 2D nonsampled format:Rgba32f 57: TypePointer UniformConstant 56 58(outtx): 57(ptr) Variable UniformConstant 63: TypeRuntimeArray 14(fvec4) 64(rwsb): TypeStruct 63 65: TypePointer Uniform 64(rwsb) 66(rwsb): 65(ptr) Variable Uniform 67: TypePointer Function 13(float) 74: TypePointer Uniform 14(fvec4) 79: TypePointer Input 7(ivec3) 80(nThreadId): 79(ptr) Variable Input 4(main): 2 Function None 3 5: Label 78(nThreadId): 8(ptr) Variable Function 82(param): 8(ptr) Variable Function 81: 7(ivec3) Load 80(nThreadId) Store 78(nThreadId) 81 83: 7(ivec3) Load 78(nThreadId) Store 82(param) 83 84: 2 FunctionCall 11(@main(vu3;) 82(param) Return FunctionEnd 11(@main(vu3;): 2 Function None 9 10(nThreadId): 8(ptr) FunctionParameter 12: Label 18(data): 17(ptr) Variable Function 49(coord): 48(ptr) Variable Function 53(storeTemp): 41(ptr) Variable Function 30: 29(ptr) AccessChain 28(csb@count) 25 34: 6(int) AtomicIAdd 30 32 33 31 36: 6(int) IAdd 34 35 38: 37(ptr) AccessChain 23(csb) 25 36 39: 19(sb_t) Load 38 40: 14(fvec4) CompositeExtract 39 0 42: 41(ptr) AccessChain 18(data) 25 Store 42 40 43: 15(ivec2) CompositeExtract 39 1 46: 45(ptr) AccessChain 18(data) 44 Store 46 43 50: 45(ptr) AccessChain 18(data) 44 51: 15(ivec2) Load 50 52: 47(fvec2) ConvertUToF 51 Store 49(coord) 52 54: 41(ptr) AccessChain 18(data) 25 55: 14(fvec4) Load 54 Store 53(storeTemp) 55 59: 56 Load 58(outtx) 60: 47(fvec2) Load 49(coord) 61: 15(ivec2) ConvertFToU 60 62: 14(fvec4) Load 53(storeTemp) ImageWrite 59 61 62 68: 67(ptr) AccessChain 49(coord) 33 69: 13(float) Load 68 70: 6(int) ConvertFToU 69 71: 67(ptr) AccessChain 49(coord) 32 72: 13(float) Load 71 73: 6(int) ConvertFToU 72 75: 74(ptr) AccessChain 66(rwsb) 25 73 76: 14(fvec4) Load 75 77: 74(ptr) AccessChain 66(rwsb) 25 70 Store 77 76 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.fn.frag.out000066400000000000000000000404621506534232700242050ustar00rootroot00000000000000hlsl.structbuffer.fn.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: get(block--vu4[0]1;u1; ( temp 4-component vector of uint) 0:5 Function Parameters: 0:5 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:5 'bufferOffset' ( in uint) 0:? Sequence 0:6 Branch: Return with expression 0:6 indirect index (layout( row_major std430) buffer 4-component vector of uint) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint) 0:6 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 'bufferOffset' ( in uint) 0:10 Function Definition: set(block--vu4[0]1;u1;vu4; ( temp void) 0:10 Function Parameters: 0:10 'sb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:10 'sb@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:10 'bufferOffset' ( in uint) 0:10 'data' ( in 4-component vector of uint) 0:? Sequence 0:11 move second child to first child ( temp 4-component vector of uint) 0:11 indirect index ( buffer 4-component vector of uint) 0:11 @data: direct index for structure ( buffer unsized 1-element array of 4-component vector of uint) 0:11 'sb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'bufferOffset' ( in uint) 0:11 'data' ( in 4-component vector of uint) 0:20 Function Definition: @main(u1; ( temp 4-component vector of float) 0:20 Function Parameters: 0:20 'pos' ( in uint) 0:? Sequence 0:21 Function Call: set(block--vu4[0]1;u1;vu4; ( temp void) 0:21 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:21 'sbuf2@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:21 Constant: 0:21 2 (const uint) 0:21 Function Call: get(block--vu4[0]1;u1; ( temp 4-component vector of uint) 0:21 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:21 Constant: 0:21 3 (const uint) 0:23 Branch: Return with expression 0:23 Constant: 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:20 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? 'sbuf2@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf3' (layout( binding=12 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 3-component vector of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: get(block--vu4[0]1;u1; ( temp 4-component vector of uint) 0:5 Function Parameters: 0:5 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:5 'bufferOffset' ( in uint) 0:? Sequence 0:6 Branch: Return with expression 0:6 indirect index (layout( row_major std430) buffer 4-component vector of uint) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint) 0:6 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 'bufferOffset' ( in uint) 0:10 Function Definition: set(block--vu4[0]1;u1;vu4; ( temp void) 0:10 Function Parameters: 0:10 'sb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:10 'sb@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:10 'bufferOffset' ( in uint) 0:10 'data' ( in 4-component vector of uint) 0:? Sequence 0:11 move second child to first child ( temp 4-component vector of uint) 0:11 indirect index ( buffer 4-component vector of uint) 0:11 @data: direct index for structure ( buffer unsized 1-element array of 4-component vector of uint) 0:11 'sb' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'bufferOffset' ( in uint) 0:11 'data' ( in 4-component vector of uint) 0:20 Function Definition: @main(u1; ( temp 4-component vector of float) 0:20 Function Parameters: 0:20 'pos' ( in uint) 0:? Sequence 0:21 Function Call: set(block--vu4[0]1;u1;vu4; ( temp void) 0:21 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:21 'sbuf2@count' ( buffer block{layout( row_major std430) buffer uint @count}) 0:21 Constant: 0:21 2 (const uint) 0:21 Function Call: get(block--vu4[0]1;u1; ( temp 4-component vector of uint) 0:21 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:21 Constant: 0:21 3 (const uint) 0:23 Branch: Return with expression 0:23 Constant: 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:20 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? 'sbuf2@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf3' (layout( binding=12 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 3-component vector of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 63 66 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "" MemberName 9 0 "@data" Name 15 "get(block--vu4[0]1;u1;" Name 13 "sb" Name 14 "bufferOffset" Name 18 "" MemberName 18 0 "@data" Name 20 "" MemberName 20 0 "@count" Name 28 "set(block--vu4[0]1;u1;vu4;" Name 24 "sb" Name 25 "sb@count" Name 26 "bufferOffset" Name 27 "data" Name 34 "@main(u1;" Name 33 "pos" Name 47 "sbuf2" Name 48 "sbuf2@count" Name 50 "sbuf" Name 52 "param" Name 54 "param" Name 55 "param" Name 61 "pos" Name 63 "pos" Name 66 "@entryPointOutput" Name 67 "param" Name 70 "sbuf2@count" MemberName 70(sbuf2@count) 0 "@count" Name 72 "sbuf2@count" Name 75 "sbuf3" MemberName 75(sbuf3) 0 "@data" Name 77 "sbuf3" Decorate 8 ArrayStride 16 Decorate 9 BufferBlock MemberDecorate 9 0 NonWritable MemberDecorate 9 0 Offset 0 Decorate 13(sb) NonWritable Decorate 17 ArrayStride 16 Decorate 18 BufferBlock MemberDecorate 18 0 Offset 0 Decorate 20 BufferBlock Decorate 47(sbuf2) Binding 0 Decorate 47(sbuf2) DescriptorSet 0 Decorate 48(sbuf2@count) Binding 0 Decorate 48(sbuf2@count) DescriptorSet 0 Decorate 50(sbuf) NonWritable Decorate 50(sbuf) Binding 10 Decorate 50(sbuf) DescriptorSet 0 Decorate 63(pos) Flat Decorate 63(pos) Location 0 Decorate 66(@entryPointOutput) Location 0 Decorate 70(sbuf2@count) BufferBlock MemberDecorate 70(sbuf2@count) 0 Offset 0 Decorate 72(sbuf2@count) Binding 0 Decorate 72(sbuf2@count) DescriptorSet 0 Decorate 74 ArrayStride 16 Decorate 75(sbuf3) BufferBlock MemberDecorate 75(sbuf3) 0 NonWritable MemberDecorate 75(sbuf3) 0 Offset 0 Decorate 77(sbuf3) NonWritable Decorate 77(sbuf3) Binding 12 Decorate 77(sbuf3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 4 8: TypeRuntimeArray 7(ivec4) 9: TypeStruct 8 10: TypePointer Uniform 9(struct) 11: TypePointer Function 6(int) 12: TypeFunction 7(ivec4) 10(ptr) 11(ptr) 17: TypeRuntimeArray 7(ivec4) 18: TypeStruct 17 19: TypePointer Uniform 18(struct) 20: TypeStruct 6(int) 21: TypePointer Uniform 20(struct) 22: TypePointer Function 7(ivec4) 23: TypeFunction 2 19(ptr) 21(ptr) 11(ptr) 22(ptr) 30: TypeFloat 32 31: TypeVector 30(float) 4 32: TypeFunction 31(fvec4) 11(ptr) 36: TypeInt 32 1 37: 36(int) Constant 0 39: TypePointer Uniform 7(ivec4) 47(sbuf2): 19(ptr) Variable Uniform 48(sbuf2@count): 21(ptr) Variable Uniform 49: 6(int) Constant 2 50(sbuf): 10(ptr) Variable Uniform 51: 6(int) Constant 3 57: 30(float) Constant 0 58: 31(fvec4) ConstantComposite 57 57 57 57 62: TypePointer Input 6(int) 63(pos): 62(ptr) Variable Input 65: TypePointer Output 31(fvec4) 66(@entryPointOutput): 65(ptr) Variable Output 70(sbuf2@count): TypeStruct 6(int) 71: TypePointer Uniform 70(sbuf2@count) 72(sbuf2@count): 71(ptr) Variable Uniform 73: TypeVector 6(int) 3 74: TypeRuntimeArray 73(ivec3) 75(sbuf3): TypeStruct 74 76: TypePointer Uniform 75(sbuf3) 77(sbuf3): 76(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 61(pos): 11(ptr) Variable Function 67(param): 11(ptr) Variable Function 64: 6(int) Load 63(pos) Store 61(pos) 64 68: 6(int) Load 61(pos) Store 67(param) 68 69: 31(fvec4) FunctionCall 34(@main(u1;) 67(param) Store 66(@entryPointOutput) 69 Return FunctionEnd 15(get(block--vu4[0]1;u1;): 7(ivec4) Function None 12 13(sb): 10(ptr) FunctionParameter 14(bufferOffset): 11(ptr) FunctionParameter 16: Label 38: 6(int) Load 14(bufferOffset) 40: 39(ptr) AccessChain 13(sb) 37 38 41: 7(ivec4) Load 40 ReturnValue 41 FunctionEnd 28(set(block--vu4[0]1;u1;vu4;): 2 Function None 23 24(sb): 19(ptr) FunctionParameter 25(sb@count): 21(ptr) FunctionParameter 26(bufferOffset): 11(ptr) FunctionParameter 27(data): 22(ptr) FunctionParameter 29: Label 44: 6(int) Load 26(bufferOffset) 45: 7(ivec4) Load 27(data) 46: 39(ptr) AccessChain 24(sb) 37 44 Store 46 45 Return FunctionEnd 34(@main(u1;): 31(fvec4) Function None 32 33(pos): 11(ptr) FunctionParameter 35: Label 52(param): 11(ptr) Variable Function 54(param): 11(ptr) Variable Function 55(param): 22(ptr) Variable Function Store 52(param) 51 53: 7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 50(sbuf) 52(param) Store 54(param) 49 Store 55(param) 53 56: 2 FunctionCall 28(set(block--vu4[0]1;u1;vu4;) 47(sbuf2) 48(sbuf2@count) 54(param) 55(param) ReturnValue 58 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.fn2.comp.out000066400000000000000000000306121506534232700243020ustar00rootroot00000000000000hlsl.structbuffer.fn2.comp Shader version: 500 local_size = (256, 1, 1) 0:? Sequence 0:5 Function Definition: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint) 0:5 Function Parameters: 0:5 'loc' ( in uint) 0:5 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp 2-component vector of uint) 0:6 'result' ( temp 2-component vector of uint) 0:? Sequence 0:6 move second child to first child ( temp int) 0:6 'byteAddrTemp' ( temp int) 0:6 right-shift ( temp int) 0:6 'loc' ( in uint) 0:6 Constant: 0:6 2 (const int) 0:? Construct vec2 ( temp 2-component vector of uint) 0:6 indirect index ( temp uint) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:6 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 'byteAddrTemp' ( temp int) 0:6 indirect index ( temp uint) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:6 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 add ( temp int) 0:6 'byteAddrTemp' ( temp int) 0:6 Constant: 0:6 1 (const int) 0:7 Branch: Return with expression 0:7 'result' ( temp 2-component vector of uint) 0:12 Function Definition: @main(u1; ( temp void) 0:12 Function Parameters: 0:12 'dispatchId' ( in uint) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of uint) 0:13 'result' ( temp 2-component vector of uint) 0:13 Function Call: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint) 0:13 'dispatchId' ( in uint) 0:13 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:14 Sequence 0:14 imageStore ( temp void) 0:14 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer) 0:14 'dispatchId' ( in uint) 0:14 'result' ( temp 2-component vector of uint) 0:14 'result' ( temp 2-component vector of uint) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp uint) 0:? 'dispatchId' ( temp uint) 0:? Construct uint ( temp uint) 0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID) 0:12 Function Call: @main(u1; ( temp void) 0:? 'dispatchId' ( temp uint) 0:? Linker Objects 0:? 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer) 0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (256, 1, 1) 0:? Sequence 0:5 Function Definition: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint) 0:5 Function Parameters: 0:5 'loc' ( in uint) 0:5 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp 2-component vector of uint) 0:6 'result' ( temp 2-component vector of uint) 0:? Sequence 0:6 move second child to first child ( temp int) 0:6 'byteAddrTemp' ( temp int) 0:6 right-shift ( temp int) 0:6 'loc' ( in uint) 0:6 Constant: 0:6 2 (const int) 0:? Construct vec2 ( temp 2-component vector of uint) 0:6 indirect index ( temp uint) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:6 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 'byteAddrTemp' ( temp int) 0:6 indirect index ( temp uint) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:6 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 add ( temp int) 0:6 'byteAddrTemp' ( temp int) 0:6 Constant: 0:6 1 (const int) 0:7 Branch: Return with expression 0:7 'result' ( temp 2-component vector of uint) 0:12 Function Definition: @main(u1; ( temp void) 0:12 Function Parameters: 0:12 'dispatchId' ( in uint) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of uint) 0:13 'result' ( temp 2-component vector of uint) 0:13 Function Call: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint) 0:13 'dispatchId' ( in uint) 0:13 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:14 Sequence 0:14 imageStore ( temp void) 0:14 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer) 0:14 'dispatchId' ( in uint) 0:14 'result' ( temp 2-component vector of uint) 0:14 'result' ( temp 2-component vector of uint) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp uint) 0:? 'dispatchId' ( temp uint) 0:? Construct uint ( temp uint) 0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID) 0:12 Function Call: @main(u1; ( temp void) 0:? 'dispatchId' ( temp uint) 0:? Linker Objects 0:? 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer) 0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 63 Capability Shader Capability ImageBuffer Capability StorageImageExtendedFormats 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 57 ExecutionMode 4 LocalSize 256 1 1 Source HLSL 500 Name 4 "main" Name 9 "" MemberName 9 0 "@data" Name 15 "testLoad(u1;block--u1[0]1;" Name 13 "loc" Name 14 "buffer" Name 19 "@main(u1;" Name 18 "dispatchId" Name 22 "result" Name 25 "byteAddrTemp" Name 43 "result" Name 44 "g_input" Name 45 "param" Name 50 "g_output" Name 54 "dispatchId" Name 57 "dispatchId" Name 60 "param" Decorate 8 ArrayStride 4 Decorate 9 BufferBlock MemberDecorate 9 0 NonWritable MemberDecorate 9 0 Offset 0 Decorate 14(buffer) NonWritable Decorate 44(g_input) NonWritable Decorate 44(g_input) Binding 0 Decorate 44(g_input) DescriptorSet 0 Decorate 50(g_output) Binding 1 Decorate 50(g_output) DescriptorSet 0 Decorate 57(dispatchId) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeRuntimeArray 6(int) 9: TypeStruct 8 10: TypePointer Uniform 9(struct) 11: TypeVector 6(int) 2 12: TypeFunction 11(ivec2) 7(ptr) 10(ptr) 17: TypeFunction 2 7(ptr) 21: TypePointer Function 11(ivec2) 23: TypeInt 32 1 24: TypePointer Function 23(int) 27: 23(int) Constant 2 29: 23(int) Constant 0 31: TypePointer Uniform 6(int) 35: 23(int) Constant 1 44(g_input): 10(ptr) Variable Uniform 48: TypeImage 6(int) Buffer nonsampled format:Rg32ui 49: TypePointer UniformConstant 48 50(g_output): 49(ptr) Variable UniformConstant 55: TypeVector 6(int) 3 56: TypePointer Input 55(ivec3) 57(dispatchId): 56(ptr) Variable Input 4(main): 2 Function None 3 5: Label 54(dispatchId): 7(ptr) Variable Function 60(param): 7(ptr) Variable Function 58: 55(ivec3) Load 57(dispatchId) 59: 6(int) CompositeExtract 58 0 Store 54(dispatchId) 59 61: 6(int) Load 54(dispatchId) Store 60(param) 61 62: 2 FunctionCall 19(@main(u1;) 60(param) Return FunctionEnd 15(testLoad(u1;block--u1[0]1;): 11(ivec2) Function None 12 13(loc): 7(ptr) FunctionParameter 14(buffer): 10(ptr) FunctionParameter 16: Label 22(result): 21(ptr) Variable Function 25(byteAddrTemp): 24(ptr) Variable Function 26: 6(int) Load 13(loc) 28: 23(int) ShiftRightLogical 26 27 Store 25(byteAddrTemp) 28 30: 23(int) Load 25(byteAddrTemp) 32: 31(ptr) AccessChain 14(buffer) 29 30 33: 6(int) Load 32 34: 23(int) Load 25(byteAddrTemp) 36: 23(int) IAdd 34 35 37: 31(ptr) AccessChain 14(buffer) 29 36 38: 6(int) Load 37 39: 11(ivec2) CompositeConstruct 33 38 Store 22(result) 39 40: 11(ivec2) Load 22(result) ReturnValue 40 FunctionEnd 19(@main(u1;): 2 Function None 17 18(dispatchId): 7(ptr) FunctionParameter 20: Label 43(result): 21(ptr) Variable Function 45(param): 7(ptr) Variable Function 46: 6(int) Load 18(dispatchId) Store 45(param) 46 47: 11(ivec2) FunctionCall 15(testLoad(u1;block--u1[0]1;) 45(param) 44(g_input) Store 43(result) 47 51: 48 Load 50(g_output) 52: 6(int) Load 18(dispatchId) 53: 11(ivec2) Load 43(result) ImageWrite 51 52 53 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.frag.out000066400000000000000000000503531506534232700236030ustar00rootroot00000000000000hlsl.structbuffer.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(u1; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'pos' ( in uint) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 'mydata' ( temp structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 'pos' ( in uint) 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'size' ( temp uint) 0:17 array length ( temp uint) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:17 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child ( temp uint) 0:17 'stride' ( temp uint) 0:17 Constant: 0:17 32 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 test: direct index for structure ( temp bool) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:19 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' ( in uint) 0:19 Constant: 0:19 1 (const int) 0:19 true case 0:20 Branch: Return with expression 0:20 Construct vec4 ( temp 4-component vector of float) 0:20 add ( temp 3-component vector of float) 0:20 color: direct index for structure ( temp 3-component vector of float) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:20 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0 (const int) 0:20 indirect index (layout( row_major std430) buffer float) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:20 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0.000000 0:19 false case 0:22 Branch: Return with expression 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 add ( temp float) 0:22 add ( temp float) 0:22 direct index ( temp float) 0:22 color: direct index for structure ( temp 3-component vector of float) 0:22 'mydata' ( temp structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Convert uint to float ( temp float) 0:22 'size' ( temp uint) 0:22 Convert uint to float ( temp float) 0:22 'stride' ( temp uint) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:? 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(u1; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'pos' ( in uint) 0:? Sequence 0:13 Sequence 0:13 move second child to first child ( temp structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 'mydata' ( temp structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 'pos' ( in uint) 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'size' ( temp uint) 0:17 array length ( temp uint) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:17 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child ( temp uint) 0:17 'stride' ( temp uint) 0:17 Constant: 0:17 32 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 test: direct index for structure ( temp bool) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:19 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' ( in uint) 0:19 Constant: 0:19 1 (const int) 0:19 true case 0:20 Branch: Return with expression 0:20 Construct vec4 ( temp 4-component vector of float) 0:20 add ( temp 3-component vector of float) 0:20 color: direct index for structure ( temp 3-component vector of float) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:20 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0 (const int) 0:20 indirect index (layout( row_major std430) buffer float) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:20 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0.000000 0:19 false case 0:22 Branch: Return with expression 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 add ( temp float) 0:22 add ( temp float) 0:22 direct index ( temp float) 0:22 color: direct index for structure ( temp 3-component vector of float) 0:22 'mydata' ( temp structure{ temp 3-component vector of float color, temp bool test, temp bool test2}) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:22 Convert uint to float ( temp float) 0:22 'size' ( temp uint) 0:22 Convert uint to float ( temp float) 0:22 'stride' ( temp uint) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:? 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 96 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 89 92 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 16 "sb_t" MemberName 16(sb_t) 0 "color" MemberName 16(sb_t) 1 "test" MemberName 16(sb_t) 2 "test2" Name 18 "mydata" Name 19 "sb_t" MemberName 19(sb_t) 0 "color" MemberName 19(sb_t) 1 "test" MemberName 19(sb_t) 2 "test2" Name 21 "sbuf" MemberName 21(sbuf) 0 "@data" Name 23 "sbuf" Name 43 "size" Name 45 "stride" Name 59 "sbuf2" MemberName 59(sbuf2) 0 "@data" Name 61 "sbuf2" Name 87 "pos" Name 89 "pos" Name 92 "@entryPointOutput" Name 93 "param" MemberDecorate 19(sb_t) 0 Offset 0 MemberDecorate 19(sb_t) 1 Offset 12 MemberDecorate 19(sb_t) 2 Offset 16 Decorate 20 ArrayStride 32 Decorate 21(sbuf) BufferBlock MemberDecorate 21(sbuf) 0 NonWritable MemberDecorate 21(sbuf) 0 Offset 0 Decorate 23(sbuf) NonWritable Decorate 23(sbuf) Binding 10 Decorate 23(sbuf) DescriptorSet 0 Decorate 58 ArrayStride 4 Decorate 59(sbuf2) BufferBlock MemberDecorate 59(sbuf2) 0 NonWritable MemberDecorate 59(sbuf2) 0 Offset 0 Decorate 61(sbuf2) NonWritable Decorate 61(sbuf2) Binding 0 Decorate 61(sbuf2) DescriptorSet 0 Decorate 89(pos) Flat Decorate 89(pos) Location 0 Decorate 92(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 14: TypeVector 8(float) 3 15: TypeBool 16(sb_t): TypeStruct 14(fvec3) 15(bool) 15(bool) 17: TypePointer Function 16(sb_t) 19(sb_t): TypeStruct 14(fvec3) 6(int) 6(int) 20: TypeRuntimeArray 19(sb_t) 21(sbuf): TypeStruct 20 22: TypePointer Uniform 21(sbuf) 23(sbuf): 22(ptr) Variable Uniform 24: TypeInt 32 1 25: 24(int) Constant 0 27: TypePointer Uniform 19(sb_t) 31: TypePointer Function 14(fvec3) 34: 24(int) Constant 1 35: 6(int) Constant 0 37: TypePointer Function 15(bool) 40: 24(int) Constant 2 46: 6(int) Constant 32 48: TypePointer Uniform 6(int) 55: TypePointer Uniform 14(fvec3) 58: TypeRuntimeArray 8(float) 59(sbuf2): TypeStruct 58 60: TypePointer Uniform 59(sbuf2) 61(sbuf2): 60(ptr) Variable Uniform 63: TypePointer Uniform 8(float) 68: 8(float) Constant 0 75: TypePointer Function 8(float) 88: TypePointer Input 6(int) 89(pos): 88(ptr) Variable Input 91: TypePointer Output 9(fvec4) 92(@entryPointOutput): 91(ptr) Variable Output 4(main): 2 Function None 3 5: Label 87(pos): 7(ptr) Variable Function 93(param): 7(ptr) Variable Function 90: 6(int) Load 89(pos) Store 87(pos) 90 94: 6(int) Load 87(pos) Store 93(param) 94 95: 9(fvec4) FunctionCall 12(@main(u1;) 93(param) Store 92(@entryPointOutput) 95 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 18(mydata): 17(ptr) Variable Function 43(size): 7(ptr) Variable Function 45(stride): 7(ptr) Variable Function 26: 6(int) Load 11(pos) 28: 27(ptr) AccessChain 23(sbuf) 25 26 29: 19(sb_t) Load 28 30: 14(fvec3) CompositeExtract 29 0 32: 31(ptr) AccessChain 18(mydata) 25 Store 32 30 33: 6(int) CompositeExtract 29 1 36: 15(bool) INotEqual 33 35 38: 37(ptr) AccessChain 18(mydata) 34 Store 38 36 39: 6(int) CompositeExtract 29 2 41: 15(bool) INotEqual 39 35 42: 37(ptr) AccessChain 18(mydata) 40 Store 42 41 44: 6(int) ArrayLength 23(sbuf) 0 Store 43(size) 44 Store 45(stride) 46 47: 6(int) Load 11(pos) 49: 48(ptr) AccessChain 23(sbuf) 25 47 34 50: 6(int) Load 49 51: 15(bool) INotEqual 50 35 SelectionMerge 53 None BranchConditional 51 52 74 52: Label 54: 6(int) Load 11(pos) 56: 55(ptr) AccessChain 23(sbuf) 25 54 25 57: 14(fvec3) Load 56 62: 6(int) Load 11(pos) 64: 63(ptr) AccessChain 61(sbuf2) 25 62 65: 8(float) Load 64 66: 14(fvec3) CompositeConstruct 65 65 65 67: 14(fvec3) FAdd 57 66 69: 8(float) CompositeExtract 67 0 70: 8(float) CompositeExtract 67 1 71: 8(float) CompositeExtract 67 2 72: 9(fvec4) CompositeConstruct 69 70 71 68 ReturnValue 72 74: Label 76: 75(ptr) AccessChain 18(mydata) 25 35 77: 8(float) Load 76 78: 6(int) Load 43(size) 79: 8(float) ConvertUToF 78 80: 8(float) FAdd 77 79 81: 6(int) Load 45(stride) 82: 8(float) ConvertUToF 81 83: 8(float) FAdd 80 82 84: 9(fvec4) CompositeConstruct 83 83 83 83 ReturnValue 84 53: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out000066400000000000000000000154661506534232700265700ustar00rootroot00000000000000hlsl.structbuffer.incdec.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader Extension "SPV_GOOGLE_hlsl_functionality1" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 63 66 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 16 "result" Name 20 "sbuf_rw_i" MemberName 20(sbuf_rw_i) 0 "@data" Name 22 "sbuf_rw_i" Name 26 "sbuf_rw_d" Name 27 "sbuf_rw_nocounter" Name 33 "c1" Name 34 "sbuf_rw_i@count" MemberName 34(sbuf_rw_i@count) 0 "@count" Name 36 "sbuf_rw_i@count" Name 41 "c2" Name 42 "sbuf_rw_d@count" Name 61 "pos" Name 63 "pos" Name 66 "@entryPointOutput" Name 67 "param" Decorate 19 ArrayStride 16 Decorate 20(sbuf_rw_i) BufferBlock MemberDecorate 20(sbuf_rw_i) 0 Offset 0 Decorate 22(sbuf_rw_i) Binding 0 Decorate 22(sbuf_rw_i) DescriptorSet 0 DecorateId 22(sbuf_rw_i) DecorationHlslCounterBufferGOOGLE 36(sbuf_rw_i@count) Decorate 26(sbuf_rw_d) Binding 0 Decorate 26(sbuf_rw_d) DescriptorSet 0 DecorateId 26(sbuf_rw_d) DecorationHlslCounterBufferGOOGLE 42(sbuf_rw_d@count) Decorate 27(sbuf_rw_nocounter) Binding 0 Decorate 27(sbuf_rw_nocounter) DescriptorSet 0 Decorate 34(sbuf_rw_i@count) BufferBlock MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0 Decorate 36(sbuf_rw_i@count) Binding 0 Decorate 36(sbuf_rw_i@count) DescriptorSet 0 Decorate 42(sbuf_rw_d@count) Binding 0 Decorate 42(sbuf_rw_d@count) DescriptorSet 0 Decorate 63(pos) Flat Decorate 63(pos) Location 0 DecorateStringGOOGLE 63(pos) DecorationHlslSemanticGOOGLE "FOO" Decorate 66(@entryPointOutput) Location 0 DecorateStringGOOGLE 66(@entryPointOutput) DecorationHlslSemanticGOOGLE "SV_TARGET0" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 14: TypeVector 6(int) 4 15: TypePointer Function 14(ivec4) 17: 6(int) Constant 0 18: 14(ivec4) ConstantComposite 17 17 17 17 19: TypeRuntimeArray 14(ivec4) 20(sbuf_rw_i): TypeStruct 19 21: TypePointer Uniform 20(sbuf_rw_i) 22(sbuf_rw_i): 21(ptr) Variable Uniform 23: TypeInt 32 1 24: 23(int) Constant 0 25: 23(int) Constant 7 26(sbuf_rw_d): 21(ptr) Variable Uniform 27(sbuf_rw_nocounter): 21(ptr) Variable Uniform 28: 23(int) Constant 5 29: 6(int) Constant 2 30: 14(ivec4) ConstantComposite 29 29 29 29 31: TypePointer Uniform 14(ivec4) 34(sbuf_rw_i@count): TypeStruct 6(int) 35: TypePointer Uniform 34(sbuf_rw_i@count) 36(sbuf_rw_i@count): 35(ptr) Variable Uniform 37: TypePointer Uniform 6(int) 39: 6(int) Constant 1 42(sbuf_rw_d@count): 35(ptr) Variable Uniform 44: 6(int) Constant 4294967295 46: 23(int) Constant 4294967295 62: TypePointer Input 6(int) 63(pos): 62(ptr) Variable Input 65: TypePointer Output 9(fvec4) 66(@entryPointOutput): 65(ptr) Variable Output 4(main): 2 Function None 3 5: Label 61(pos): 7(ptr) Variable Function 67(param): 7(ptr) Variable Function 64: 6(int) Load 63(pos) Store 61(pos) 64 68: 6(int) Load 61(pos) Store 67(param) 68 69: 9(fvec4) FunctionCall 12(@main(u1;) 67(param) Store 66(@entryPointOutput) 69 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 16(result): 15(ptr) Variable Function 33(c1): 7(ptr) Variable Function 41(c2): 7(ptr) Variable Function Store 16(result) 18 32: 31(ptr) AccessChain 27(sbuf_rw_nocounter) 24 28 Store 32 30 38: 37(ptr) AccessChain 36(sbuf_rw_i@count) 24 40: 6(int) AtomicIAdd 38 39 17 39 Store 33(c1) 40 43: 37(ptr) AccessChain 42(sbuf_rw_d@count) 24 45: 6(int) AtomicIAdd 43 39 17 44 47: 6(int) IAdd 45 46 Store 41(c2) 47 48: 7(ptr) AccessChain 16(result) 17 49: 6(int) Load 48 50: 8(float) ConvertUToF 49 51: 7(ptr) AccessChain 16(result) 39 52: 6(int) Load 51 53: 8(float) ConvertUToF 52 54: 6(int) Load 33(c1) 55: 8(float) ConvertUToF 54 56: 6(int) Load 41(c2) 57: 8(float) ConvertUToF 56 58: 9(fvec4) CompositeConstruct 50 53 55 57 ReturnValue 58 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.incdec.frag.out000066400000000000000000000412311506534232700250220ustar00rootroot00000000000000hlsl.structbuffer.incdec.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(u1; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'pos' ( in uint) 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of uint) 0:8 'result' ( temp 4-component vector of uint) 0:8 Constant: 0:8 0 (const uint) 0:8 0 (const uint) 0:8 0 (const uint) 0:8 0 (const uint) 0:10 direct index (layout( row_major std430) buffer 4-component vector of uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint) 0:10 'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 Constant: 0:10 7 (const int) 0:11 direct index (layout( row_major std430) buffer 4-component vector of uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint) 0:11 'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 Constant: 0:11 7 (const int) 0:13 move second child to first child ( temp 4-component vector of uint) 0:13 direct index (layout( row_major std430) buffer 4-component vector of uint) 0:13 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint) 0:13 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 Constant: 0:13 5 (const int) 0:13 Constant: 0:13 2 (const uint) 0:13 2 (const uint) 0:13 2 (const uint) 0:13 2 (const uint) 0:15 Sequence 0:15 move second child to first child ( temp uint) 0:15 'c1' ( temp uint) 0:15 AtomicAdd ( temp uint) 0:15 @count: direct index for structure ( temp uint) 0:15 'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1 (const uint) 0:16 Sequence 0:16 move second child to first child ( temp uint) 0:16 'c2' ( temp uint) 0:16 add ( temp uint) 0:16 AtomicAdd ( temp uint) 0:16 @count: direct index for structure ( temp uint) 0:16 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 4294967295 (const uint) 0:16 Constant: 0:16 -1 (const int) 0:18 Branch: Return with expression 0:18 Construct vec4 ( temp 4-component vector of float) 0:18 Convert uint to float ( temp float) 0:18 direct index ( temp uint) 0:18 'result' ( temp 4-component vector of uint) 0:18 Constant: 0:18 0 (const int) 0:18 Convert uint to float ( temp float) 0:18 direct index ( temp uint) 0:18 'result' ( temp 4-component vector of uint) 0:18 Constant: 0:18 1 (const int) 0:18 Convert uint to float ( temp float) 0:18 'c1' ( temp uint) 0:18 Convert uint to float ( temp float) 0:18 'c2' ( temp uint) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? 'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(u1; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'pos' ( in uint) 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of uint) 0:8 'result' ( temp 4-component vector of uint) 0:8 Constant: 0:8 0 (const uint) 0:8 0 (const uint) 0:8 0 (const uint) 0:8 0 (const uint) 0:10 direct index (layout( row_major std430) buffer 4-component vector of uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint) 0:10 'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 Constant: 0:10 7 (const int) 0:11 direct index (layout( row_major std430) buffer 4-component vector of uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint) 0:11 'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 Constant: 0:11 7 (const int) 0:13 move second child to first child ( temp 4-component vector of uint) 0:13 direct index (layout( row_major std430) buffer 4-component vector of uint) 0:13 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint) 0:13 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 Constant: 0:13 5 (const int) 0:13 Constant: 0:13 2 (const uint) 0:13 2 (const uint) 0:13 2 (const uint) 0:13 2 (const uint) 0:15 Sequence 0:15 move second child to first child ( temp uint) 0:15 'c1' ( temp uint) 0:15 AtomicAdd ( temp uint) 0:15 @count: direct index for structure ( temp uint) 0:15 'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 1 (const uint) 0:16 Sequence 0:16 move second child to first child ( temp uint) 0:16 'c2' ( temp uint) 0:16 add ( temp uint) 0:16 AtomicAdd ( temp uint) 0:16 @count: direct index for structure ( temp uint) 0:16 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 4294967295 (const uint) 0:16 Constant: 0:16 -1 (const int) 0:18 Branch: Return with expression 0:18 Construct vec4 ( temp 4-component vector of float) 0:18 Convert uint to float ( temp float) 0:18 direct index ( temp uint) 0:18 'result' ( temp 4-component vector of uint) 0:18 Constant: 0:18 0 (const int) 0:18 Convert uint to float ( temp float) 0:18 direct index ( temp uint) 0:18 'result' ( temp 4-component vector of uint) 0:18 Constant: 0:18 1 (const int) 0:18 Convert uint to float ( temp float) 0:18 'c1' ( temp uint) 0:18 Convert uint to float ( temp float) 0:18 'c2' ( temp uint) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? 'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count}) 0:? 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 63 66 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 16 "result" Name 20 "sbuf_rw_i" MemberName 20(sbuf_rw_i) 0 "@data" Name 22 "sbuf_rw_i" Name 26 "sbuf_rw_d" Name 27 "sbuf_rw_nocounter" Name 33 "c1" Name 34 "sbuf_rw_i@count" MemberName 34(sbuf_rw_i@count) 0 "@count" Name 36 "sbuf_rw_i@count" Name 41 "c2" Name 42 "sbuf_rw_d@count" Name 61 "pos" Name 63 "pos" Name 66 "@entryPointOutput" Name 67 "param" Decorate 19 ArrayStride 16 Decorate 20(sbuf_rw_i) BufferBlock MemberDecorate 20(sbuf_rw_i) 0 Offset 0 Decorate 22(sbuf_rw_i) Binding 0 Decorate 22(sbuf_rw_i) DescriptorSet 0 Decorate 26(sbuf_rw_d) Binding 2 Decorate 26(sbuf_rw_d) DescriptorSet 0 Decorate 27(sbuf_rw_nocounter) Binding 4 Decorate 27(sbuf_rw_nocounter) DescriptorSet 0 Decorate 34(sbuf_rw_i@count) BufferBlock MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0 Decorate 36(sbuf_rw_i@count) Binding 1 Decorate 36(sbuf_rw_i@count) DescriptorSet 0 Decorate 42(sbuf_rw_d@count) Binding 3 Decorate 42(sbuf_rw_d@count) DescriptorSet 0 Decorate 63(pos) Flat Decorate 63(pos) Location 0 Decorate 66(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 14: TypeVector 6(int) 4 15: TypePointer Function 14(ivec4) 17: 6(int) Constant 0 18: 14(ivec4) ConstantComposite 17 17 17 17 19: TypeRuntimeArray 14(ivec4) 20(sbuf_rw_i): TypeStruct 19 21: TypePointer Uniform 20(sbuf_rw_i) 22(sbuf_rw_i): 21(ptr) Variable Uniform 23: TypeInt 32 1 24: 23(int) Constant 0 25: 23(int) Constant 7 26(sbuf_rw_d): 21(ptr) Variable Uniform 27(sbuf_rw_nocounter): 21(ptr) Variable Uniform 28: 23(int) Constant 5 29: 6(int) Constant 2 30: 14(ivec4) ConstantComposite 29 29 29 29 31: TypePointer Uniform 14(ivec4) 34(sbuf_rw_i@count): TypeStruct 6(int) 35: TypePointer Uniform 34(sbuf_rw_i@count) 36(sbuf_rw_i@count): 35(ptr) Variable Uniform 37: TypePointer Uniform 6(int) 39: 6(int) Constant 1 42(sbuf_rw_d@count): 35(ptr) Variable Uniform 44: 6(int) Constant 4294967295 46: 23(int) Constant 4294967295 62: TypePointer Input 6(int) 63(pos): 62(ptr) Variable Input 65: TypePointer Output 9(fvec4) 66(@entryPointOutput): 65(ptr) Variable Output 4(main): 2 Function None 3 5: Label 61(pos): 7(ptr) Variable Function 67(param): 7(ptr) Variable Function 64: 6(int) Load 63(pos) Store 61(pos) 64 68: 6(int) Load 61(pos) Store 67(param) 68 69: 9(fvec4) FunctionCall 12(@main(u1;) 67(param) Store 66(@entryPointOutput) 69 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 16(result): 15(ptr) Variable Function 33(c1): 7(ptr) Variable Function 41(c2): 7(ptr) Variable Function Store 16(result) 18 32: 31(ptr) AccessChain 27(sbuf_rw_nocounter) 24 28 Store 32 30 38: 37(ptr) AccessChain 36(sbuf_rw_i@count) 24 40: 6(int) AtomicIAdd 38 39 17 39 Store 33(c1) 40 43: 37(ptr) AccessChain 42(sbuf_rw_d@count) 24 45: 6(int) AtomicIAdd 43 39 17 44 47: 6(int) IAdd 45 46 Store 41(c2) 47 48: 7(ptr) AccessChain 16(result) 17 49: 6(int) Load 48 50: 8(float) ConvertUToF 49 51: 7(ptr) AccessChain 16(result) 39 52: 6(int) Load 51 53: 8(float) ConvertUToF 52 54: 6(int) Load 33(c1) 55: 8(float) ConvertUToF 54 56: 6(int) Load 41(c2) 57: 8(float) ConvertUToF 56 58: 9(fvec4) CompositeConstruct 50 53 55 57 ReturnValue 58 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.rw.frag.out000066400000000000000000000405731506534232700242350ustar00rootroot00000000000000hlsl.structbuffer.rw.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(u1; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'pos' ( in uint) 0:? Sequence 0:13 move second child to first child ( temp float) 0:13 indirect index (layout( row_major std430) buffer float) 0:13 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:13 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 add ( temp uint) 0:13 'pos' ( in uint) 0:13 Constant: 0:13 1 (const uint) 0:13 Constant: 0:13 42.000000 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'size' ( temp uint) 0:17 array length ( temp uint) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:17 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child ( temp uint) 0:17 'stride' ( temp uint) 0:17 Constant: 0:17 16 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 test: direct index for structure ( temp bool) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:19 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' ( in uint) 0:19 Constant: 0:19 1 (const int) 0:19 true case 0:20 Branch: Return with expression 0:20 Construct vec4 ( temp 4-component vector of float) 0:20 add ( temp 3-component vector of float) 0:20 color: direct index for structure ( temp 3-component vector of float) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:20 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0 (const int) 0:20 indirect index (layout( row_major std430) buffer float) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:20 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0.000000 0:19 false case 0:22 Branch: Return with expression 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 Convert uint to float ( temp float) 0:22 add ( temp uint) 0:22 'size' ( temp uint) 0:22 'stride' ( temp uint) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(u1; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'pos' ( in uint) 0:? Sequence 0:13 move second child to first child ( temp float) 0:13 indirect index (layout( row_major std430) buffer float) 0:13 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:13 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 add ( temp uint) 0:13 'pos' ( in uint) 0:13 Constant: 0:13 1 (const uint) 0:13 Constant: 0:13 42.000000 0:17 Sequence 0:17 move second child to first child ( temp uint) 0:17 'size' ( temp uint) 0:17 array length ( temp uint) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:17 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child ( temp uint) 0:17 'stride' ( temp uint) 0:17 Constant: 0:17 16 (const uint) 0:19 Test condition and select ( temp void) 0:19 Condition 0:19 test: direct index for structure ( temp bool) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:19 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' ( in uint) 0:19 Constant: 0:19 1 (const int) 0:19 true case 0:20 Branch: Return with expression 0:20 Construct vec4 ( temp 4-component vector of float) 0:20 add ( temp 3-component vector of float) 0:20 color: direct index for structure ( temp 3-component vector of float) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color, temp bool test}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test}) 0:20 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0 (const int) 0:20 indirect index (layout( row_major std430) buffer float) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float) 0:20 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' ( in uint) 0:20 Constant: 0:20 0.000000 0:19 false case 0:22 Branch: Return with expression 0:22 Construct vec4 ( temp 4-component vector of float) 0:22 Convert uint to float ( temp float) 0:22 add ( temp uint) 0:22 'size' ( temp uint) 0:22 'stride' ( temp uint) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:12 Function Call: @main(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color, temp bool test} @data}) 0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 71 74 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 15 "sbuf2" MemberName 15(sbuf2) 0 "@data" Name 17 "sbuf2" Name 26 "size" Name 28 "sb_t" MemberName 28(sb_t) 0 "color" MemberName 28(sb_t) 1 "test" Name 30 "sbuf" MemberName 30(sbuf) 0 "@data" Name 32 "sbuf" Name 34 "stride" Name 69 "pos" Name 71 "pos" Name 74 "@entryPointOutput" Name 75 "param" Decorate 14 ArrayStride 4 Decorate 15(sbuf2) BufferBlock MemberDecorate 15(sbuf2) 0 Offset 0 Decorate 17(sbuf2) Binding 1 Decorate 17(sbuf2) DescriptorSet 0 MemberDecorate 28(sb_t) 0 Offset 0 MemberDecorate 28(sb_t) 1 Offset 12 Decorate 29 ArrayStride 16 Decorate 30(sbuf) BufferBlock MemberDecorate 30(sbuf) 0 Offset 0 Decorate 32(sbuf) Binding 0 Decorate 32(sbuf) DescriptorSet 0 Decorate 71(pos) Flat Decorate 71(pos) Location 0 Decorate 74(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 14: TypeRuntimeArray 8(float) 15(sbuf2): TypeStruct 14 16: TypePointer Uniform 15(sbuf2) 17(sbuf2): 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 21: 6(int) Constant 1 23: 8(float) Constant 1109917696 24: TypePointer Uniform 8(float) 27: TypeVector 8(float) 3 28(sb_t): TypeStruct 27(fvec3) 6(int) 29: TypeRuntimeArray 28(sb_t) 30(sbuf): TypeStruct 29 31: TypePointer Uniform 30(sbuf) 32(sbuf): 31(ptr) Variable Uniform 35: 6(int) Constant 16 37: 18(int) Constant 1 38: TypePointer Uniform 6(int) 41: TypeBool 42: 6(int) Constant 0 47: TypePointer Uniform 27(fvec3) 55: 8(float) Constant 0 70: TypePointer Input 6(int) 71(pos): 70(ptr) Variable Input 73: TypePointer Output 9(fvec4) 74(@entryPointOutput): 73(ptr) Variable Output 4(main): 2 Function None 3 5: Label 69(pos): 7(ptr) Variable Function 75(param): 7(ptr) Variable Function 72: 6(int) Load 71(pos) Store 69(pos) 72 76: 6(int) Load 69(pos) Store 75(param) 76 77: 9(fvec4) FunctionCall 12(@main(u1;) 75(param) Store 74(@entryPointOutput) 77 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 26(size): 7(ptr) Variable Function 34(stride): 7(ptr) Variable Function 20: 6(int) Load 11(pos) 22: 6(int) IAdd 20 21 25: 24(ptr) AccessChain 17(sbuf2) 19 22 Store 25 23 33: 6(int) ArrayLength 32(sbuf) 0 Store 26(size) 33 Store 34(stride) 35 36: 6(int) Load 11(pos) 39: 38(ptr) AccessChain 32(sbuf) 19 36 37 40: 6(int) Load 39 43: 41(bool) INotEqual 40 42 SelectionMerge 45 None BranchConditional 43 44 61 44: Label 46: 6(int) Load 11(pos) 48: 47(ptr) AccessChain 32(sbuf) 19 46 19 49: 27(fvec3) Load 48 50: 6(int) Load 11(pos) 51: 24(ptr) AccessChain 17(sbuf2) 19 50 52: 8(float) Load 51 53: 27(fvec3) CompositeConstruct 52 52 52 54: 27(fvec3) FAdd 49 53 56: 8(float) CompositeExtract 54 0 57: 8(float) CompositeExtract 54 1 58: 8(float) CompositeExtract 54 2 59: 9(fvec4) CompositeConstruct 56 57 58 55 ReturnValue 59 61: Label 62: 6(int) Load 26(size) 63: 6(int) Load 34(stride) 64: 6(int) IAdd 62 63 65: 8(float) ConvertUToF 64 66: 9(fvec4) CompositeConstruct 65 65 65 65 ReturnValue 66 45: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out000066400000000000000000002133601506534232700251150ustar00rootroot00000000000000hlsl.structbuffer.rwbyte.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main(u1; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'pos' ( in uint) 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp uint) 0:7 'size' ( temp uint) 0:7 array length ( temp uint) 0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:7 'sbuf' (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:? Sequence 0:9 move second child to first child ( temp int) 0:9 'byteAddrTemp' ( temp int) 0:9 right-shift ( temp int) 0:9 'pos' ( in uint) 0:9 Constant: 0:9 2 (const int) 0:9 move second child to first child ( temp uint) 0:9 indirect index (layout( row_major std430) buffer uint) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:9 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 'byteAddrTemp' ( temp int) 0:9 indirect index (layout( row_major std430) buffer uint) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:9 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift ( temp int) 0:9 'pos' ( in uint) 0:9 Constant: 0:9 2 (const int) 0:? Sequence 0:10 move second child to first child ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 right-shift ( temp int) 0:10 'pos' ( in uint) 0:10 Constant: 0:10 2 (const int) 0:10 move second child to first child ( temp uint) 0:10 indirect index (layout( row_major std430) buffer uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' ( temp int) 0:10 direct index ( temp uint) 0:? Sequence 0:10 move second child to first child ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 right-shift ( temp int) 0:10 'pos' ( in uint) 0:10 Constant: 0:10 2 (const int) 0:? Construct vec2 ( temp 2-component vector of uint) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' ( temp int) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:10 move second child to first child ( temp uint) 0:10 indirect index (layout( row_major std430) buffer uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 Constant: 0:10 1 (const int) 0:10 direct index ( temp uint) 0:? Sequence 0:10 move second child to first child ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 right-shift ( temp int) 0:10 'pos' ( in uint) 0:10 Constant: 0:10 2 (const int) 0:? Construct vec2 ( temp 2-component vector of uint) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' ( temp int) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 1 (const int) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp uint) 0:11 indirect index (layout( row_major std430) buffer uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 direct index ( temp uint) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp uint) 0:11 indirect index (layout( row_major std430) buffer uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp uint) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp uint) 0:11 indirect index (layout( row_major std430) buffer uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp uint) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 2 (const int) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 direct index ( temp uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( temp uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( temp uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 direct index ( temp uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 3 (const int) 0:14 Branch: Return with expression 0:14 Construct vec4 ( temp 4-component vector of float) 0:14 Convert uint to float ( temp float) 0:14 indirect index (layout( row_major std430) buffer uint) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:14 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 right-shift ( temp int) 0:14 'pos' ( in uint) 0:14 Constant: 0:14 2 (const int) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 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(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:5 Function Definition: @main(u1; ( temp 4-component vector of float) 0:5 Function Parameters: 0:5 'pos' ( in uint) 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp uint) 0:7 'size' ( temp uint) 0:7 array length ( temp uint) 0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:7 'sbuf' (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:? Sequence 0:9 move second child to first child ( temp int) 0:9 'byteAddrTemp' ( temp int) 0:9 right-shift ( temp int) 0:9 'pos' ( in uint) 0:9 Constant: 0:9 2 (const int) 0:9 move second child to first child ( temp uint) 0:9 indirect index (layout( row_major std430) buffer uint) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:9 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 'byteAddrTemp' ( temp int) 0:9 indirect index (layout( row_major std430) buffer uint) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:9 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift ( temp int) 0:9 'pos' ( in uint) 0:9 Constant: 0:9 2 (const int) 0:? Sequence 0:10 move second child to first child ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 right-shift ( temp int) 0:10 'pos' ( in uint) 0:10 Constant: 0:10 2 (const int) 0:10 move second child to first child ( temp uint) 0:10 indirect index (layout( row_major std430) buffer uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' ( temp int) 0:10 direct index ( temp uint) 0:? Sequence 0:10 move second child to first child ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 right-shift ( temp int) 0:10 'pos' ( in uint) 0:10 Constant: 0:10 2 (const int) 0:? Construct vec2 ( temp 2-component vector of uint) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' ( temp int) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:10 move second child to first child ( temp uint) 0:10 indirect index (layout( row_major std430) buffer uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 Constant: 0:10 1 (const int) 0:10 direct index ( temp uint) 0:? Sequence 0:10 move second child to first child ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 right-shift ( temp int) 0:10 'pos' ( in uint) 0:10 Constant: 0:10 2 (const int) 0:? Construct vec2 ( temp 2-component vector of uint) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' ( temp int) 0:10 indirect index ( temp uint) 0:10 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:10 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add ( temp int) 0:10 'byteAddrTemp' ( temp int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 1 (const int) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp uint) 0:11 indirect index (layout( row_major std430) buffer uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 direct index ( temp uint) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp uint) 0:11 indirect index (layout( row_major std430) buffer uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp uint) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp uint) 0:11 indirect index (layout( row_major std430) buffer uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 direct index ( temp uint) 0:? Sequence 0:11 move second child to first child ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 right-shift ( temp int) 0:11 'pos' ( in uint) 0:11 Constant: 0:11 2 (const int) 0:? Construct vec3 ( temp 3-component vector of uint) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' ( temp int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 1 (const int) 0:11 indirect index ( temp uint) 0:11 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:11 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add ( temp int) 0:11 'byteAddrTemp' ( temp int) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 2 (const int) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 direct index ( temp uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( temp uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 direct index ( temp uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 2 (const int) 0:12 move second child to first child ( temp uint) 0:12 indirect index (layout( row_major std430) buffer uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 direct index ( temp uint) 0:? Sequence 0:12 move second child to first child ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 right-shift ( temp int) 0:12 'pos' ( in uint) 0:12 Constant: 0:12 2 (const int) 0:? Construct vec4 ( temp 4-component vector of uint) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' ( temp int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 1 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 2 (const int) 0:12 indirect index ( temp uint) 0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:12 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add ( temp int) 0:12 'byteAddrTemp' ( temp int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 3 (const int) 0:14 Branch: Return with expression 0:14 Construct vec4 ( temp 4-component vector of float) 0:14 Convert uint to float ( temp float) 0:14 indirect index (layout( row_major std430) buffer uint) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:14 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 right-shift ( temp int) 0:14 'pos' ( in uint) 0:14 Constant: 0:14 2 (const int) 0:5 Function Definition: main( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp uint) 0:? 'pos' ( temp uint) 0:? 'pos' (layout( location=0) flat in uint) 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(u1; ( temp 4-component vector of float) 0:? 'pos' ( temp uint) 0:? Linker Objects 0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 239 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 232 235 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 12 "@main(u1;" Name 11 "pos" Name 14 "size" Name 16 "sbuf" MemberName 16(sbuf) 0 "@data" Name 18 "sbuf" Name 22 "byteAddrTemp" Name 34 "byteAddrTemp" Name 38 "byteAddrTemp" Name 69 "byteAddrTemp" Name 73 "byteAddrTemp" Name 128 "byteAddrTemp" Name 132 "byteAddrTemp" Name 230 "pos" Name 232 "pos" Name 235 "@entryPointOutput" Name 236 "param" Decorate 15 ArrayStride 4 Decorate 16(sbuf) BufferBlock MemberDecorate 16(sbuf) 0 Offset 0 Decorate 18(sbuf) Binding 0 Decorate 18(sbuf) DescriptorSet 0 Decorate 232(pos) Flat Decorate 232(pos) Location 0 Decorate 235(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) 15: TypeRuntimeArray 6(int) 16(sbuf): TypeStruct 15 17: TypePointer Uniform 16(sbuf) 18(sbuf): 17(ptr) Variable Uniform 20: TypeInt 32 1 21: TypePointer Function 20(int) 24: 20(int) Constant 2 26: 20(int) Constant 0 30: TypePointer Uniform 6(int) 45: 20(int) Constant 1 49: TypeVector 6(int) 2 51: 6(int) Constant 0 66: 6(int) Constant 1 87: TypeVector 6(int) 3 125: 6(int) Constant 2 147: 20(int) Constant 3 151: TypeVector 6(int) 4 219: 6(int) Constant 3 231: TypePointer Input 6(int) 232(pos): 231(ptr) Variable Input 234: TypePointer Output 9(fvec4) 235(@entryPointOutput): 234(ptr) Variable Output 4(main): 2 Function None 3 5: Label 230(pos): 7(ptr) Variable Function 236(param): 7(ptr) Variable Function 233: 6(int) Load 232(pos) Store 230(pos) 233 237: 6(int) Load 230(pos) Store 236(param) 237 238: 9(fvec4) FunctionCall 12(@main(u1;) 236(param) Store 235(@entryPointOutput) 238 Return FunctionEnd 12(@main(u1;): 9(fvec4) Function None 10 11(pos): 7(ptr) FunctionParameter 13: Label 14(size): 7(ptr) Variable Function 22(byteAddrTemp): 21(ptr) Variable Function 34(byteAddrTemp): 21(ptr) Variable Function 38(byteAddrTemp): 21(ptr) Variable Function 69(byteAddrTemp): 21(ptr) Variable Function 73(byteAddrTemp): 21(ptr) Variable Function 128(byteAddrTemp): 21(ptr) Variable Function 132(byteAddrTemp): 21(ptr) Variable Function 19: 6(int) ArrayLength 18(sbuf) 0 Store 14(size) 19 23: 6(int) Load 11(pos) 25: 20(int) ShiftRightLogical 23 24 Store 22(byteAddrTemp) 25 27: 20(int) Load 22(byteAddrTemp) 28: 6(int) Load 11(pos) 29: 20(int) ShiftRightLogical 28 24 31: 30(ptr) AccessChain 18(sbuf) 26 29 32: 6(int) Load 31 33: 30(ptr) AccessChain 18(sbuf) 26 27 Store 33 32 35: 6(int) Load 11(pos) 36: 20(int) ShiftRightLogical 35 24 Store 34(byteAddrTemp) 36 37: 20(int) Load 34(byteAddrTemp) 39: 6(int) Load 11(pos) 40: 20(int) ShiftRightLogical 39 24 Store 38(byteAddrTemp) 40 41: 20(int) Load 38(byteAddrTemp) 42: 30(ptr) AccessChain 18(sbuf) 26 41 43: 6(int) Load 42 44: 20(int) Load 38(byteAddrTemp) 46: 20(int) IAdd 44 45 47: 30(ptr) AccessChain 18(sbuf) 26 46 48: 6(int) Load 47 50: 49(ivec2) CompositeConstruct 43 48 52: 6(int) CompositeExtract 50 0 53: 30(ptr) AccessChain 18(sbuf) 26 37 Store 53 52 54: 20(int) Load 34(byteAddrTemp) 55: 20(int) IAdd 54 45 56: 6(int) Load 11(pos) 57: 20(int) ShiftRightLogical 56 24 Store 38(byteAddrTemp) 57 58: 20(int) Load 38(byteAddrTemp) 59: 30(ptr) AccessChain 18(sbuf) 26 58 60: 6(int) Load 59 61: 20(int) Load 38(byteAddrTemp) 62: 20(int) IAdd 61 45 63: 30(ptr) AccessChain 18(sbuf) 26 62 64: 6(int) Load 63 65: 49(ivec2) CompositeConstruct 60 64 67: 6(int) CompositeExtract 65 1 68: 30(ptr) AccessChain 18(sbuf) 26 55 Store 68 67 70: 6(int) Load 11(pos) 71: 20(int) ShiftRightLogical 70 24 Store 69(byteAddrTemp) 71 72: 20(int) Load 69(byteAddrTemp) 74: 6(int) Load 11(pos) 75: 20(int) ShiftRightLogical 74 24 Store 73(byteAddrTemp) 75 76: 20(int) Load 73(byteAddrTemp) 77: 30(ptr) AccessChain 18(sbuf) 26 76 78: 6(int) Load 77 79: 20(int) Load 73(byteAddrTemp) 80: 20(int) IAdd 79 45 81: 30(ptr) AccessChain 18(sbuf) 26 80 82: 6(int) Load 81 83: 20(int) Load 73(byteAddrTemp) 84: 20(int) IAdd 83 24 85: 30(ptr) AccessChain 18(sbuf) 26 84 86: 6(int) Load 85 88: 87(ivec3) CompositeConstruct 78 82 86 89: 6(int) CompositeExtract 88 0 90: 30(ptr) AccessChain 18(sbuf) 26 72 Store 90 89 91: 20(int) Load 69(byteAddrTemp) 92: 20(int) IAdd 91 45 93: 6(int) Load 11(pos) 94: 20(int) ShiftRightLogical 93 24 Store 73(byteAddrTemp) 94 95: 20(int) Load 73(byteAddrTemp) 96: 30(ptr) AccessChain 18(sbuf) 26 95 97: 6(int) Load 96 98: 20(int) Load 73(byteAddrTemp) 99: 20(int) IAdd 98 45 100: 30(ptr) AccessChain 18(sbuf) 26 99 101: 6(int) Load 100 102: 20(int) Load 73(byteAddrTemp) 103: 20(int) IAdd 102 24 104: 30(ptr) AccessChain 18(sbuf) 26 103 105: 6(int) Load 104 106: 87(ivec3) CompositeConstruct 97 101 105 107: 6(int) CompositeExtract 106 1 108: 30(ptr) AccessChain 18(sbuf) 26 92 Store 108 107 109: 20(int) Load 69(byteAddrTemp) 110: 20(int) IAdd 109 24 111: 6(int) Load 11(pos) 112: 20(int) ShiftRightLogical 111 24 Store 73(byteAddrTemp) 112 113: 20(int) Load 73(byteAddrTemp) 114: 30(ptr) AccessChain 18(sbuf) 26 113 115: 6(int) Load 114 116: 20(int) Load 73(byteAddrTemp) 117: 20(int) IAdd 116 45 118: 30(ptr) AccessChain 18(sbuf) 26 117 119: 6(int) Load 118 120: 20(int) Load 73(byteAddrTemp) 121: 20(int) IAdd 120 24 122: 30(ptr) AccessChain 18(sbuf) 26 121 123: 6(int) Load 122 124: 87(ivec3) CompositeConstruct 115 119 123 126: 6(int) CompositeExtract 124 2 127: 30(ptr) AccessChain 18(sbuf) 26 110 Store 127 126 129: 6(int) Load 11(pos) 130: 20(int) ShiftRightLogical 129 24 Store 128(byteAddrTemp) 130 131: 20(int) Load 128(byteAddrTemp) 133: 6(int) Load 11(pos) 134: 20(int) ShiftRightLogical 133 24 Store 132(byteAddrTemp) 134 135: 20(int) Load 132(byteAddrTemp) 136: 30(ptr) AccessChain 18(sbuf) 26 135 137: 6(int) Load 136 138: 20(int) Load 132(byteAddrTemp) 139: 20(int) IAdd 138 45 140: 30(ptr) AccessChain 18(sbuf) 26 139 141: 6(int) Load 140 142: 20(int) Load 132(byteAddrTemp) 143: 20(int) IAdd 142 24 144: 30(ptr) AccessChain 18(sbuf) 26 143 145: 6(int) Load 144 146: 20(int) Load 132(byteAddrTemp) 148: 20(int) IAdd 146 147 149: 30(ptr) AccessChain 18(sbuf) 26 148 150: 6(int) Load 149 152: 151(ivec4) CompositeConstruct 137 141 145 150 153: 6(int) CompositeExtract 152 0 154: 30(ptr) AccessChain 18(sbuf) 26 131 Store 154 153 155: 20(int) Load 128(byteAddrTemp) 156: 20(int) IAdd 155 45 157: 6(int) Load 11(pos) 158: 20(int) ShiftRightLogical 157 24 Store 132(byteAddrTemp) 158 159: 20(int) Load 132(byteAddrTemp) 160: 30(ptr) AccessChain 18(sbuf) 26 159 161: 6(int) Load 160 162: 20(int) Load 132(byteAddrTemp) 163: 20(int) IAdd 162 45 164: 30(ptr) AccessChain 18(sbuf) 26 163 165: 6(int) Load 164 166: 20(int) Load 132(byteAddrTemp) 167: 20(int) IAdd 166 24 168: 30(ptr) AccessChain 18(sbuf) 26 167 169: 6(int) Load 168 170: 20(int) Load 132(byteAddrTemp) 171: 20(int) IAdd 170 147 172: 30(ptr) AccessChain 18(sbuf) 26 171 173: 6(int) Load 172 174: 151(ivec4) CompositeConstruct 161 165 169 173 175: 6(int) CompositeExtract 174 1 176: 30(ptr) AccessChain 18(sbuf) 26 156 Store 176 175 177: 20(int) Load 128(byteAddrTemp) 178: 20(int) IAdd 177 24 179: 6(int) Load 11(pos) 180: 20(int) ShiftRightLogical 179 24 Store 132(byteAddrTemp) 180 181: 20(int) Load 132(byteAddrTemp) 182: 30(ptr) AccessChain 18(sbuf) 26 181 183: 6(int) Load 182 184: 20(int) Load 132(byteAddrTemp) 185: 20(int) IAdd 184 45 186: 30(ptr) AccessChain 18(sbuf) 26 185 187: 6(int) Load 186 188: 20(int) Load 132(byteAddrTemp) 189: 20(int) IAdd 188 24 190: 30(ptr) AccessChain 18(sbuf) 26 189 191: 6(int) Load 190 192: 20(int) Load 132(byteAddrTemp) 193: 20(int) IAdd 192 147 194: 30(ptr) AccessChain 18(sbuf) 26 193 195: 6(int) Load 194 196: 151(ivec4) CompositeConstruct 183 187 191 195 197: 6(int) CompositeExtract 196 2 198: 30(ptr) AccessChain 18(sbuf) 26 178 Store 198 197 199: 20(int) Load 128(byteAddrTemp) 200: 20(int) IAdd 199 147 201: 6(int) Load 11(pos) 202: 20(int) ShiftRightLogical 201 24 Store 132(byteAddrTemp) 202 203: 20(int) Load 132(byteAddrTemp) 204: 30(ptr) AccessChain 18(sbuf) 26 203 205: 6(int) Load 204 206: 20(int) Load 132(byteAddrTemp) 207: 20(int) IAdd 206 45 208: 30(ptr) AccessChain 18(sbuf) 26 207 209: 6(int) Load 208 210: 20(int) Load 132(byteAddrTemp) 211: 20(int) IAdd 210 24 212: 30(ptr) AccessChain 18(sbuf) 26 211 213: 6(int) Load 212 214: 20(int) Load 132(byteAddrTemp) 215: 20(int) IAdd 214 147 216: 30(ptr) AccessChain 18(sbuf) 26 215 217: 6(int) Load 216 218: 151(ivec4) CompositeConstruct 205 209 213 217 220: 6(int) CompositeExtract 218 3 221: 30(ptr) AccessChain 18(sbuf) 26 200 Store 221 220 222: 6(int) Load 11(pos) 223: 20(int) ShiftRightLogical 222 24 224: 30(ptr) AccessChain 18(sbuf) 26 223 225: 6(int) Load 224 226: 8(float) ConvertUToF 225 227: 9(fvec4) CompositeConstruct 226 226 226 226 ReturnValue 227 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out000066400000000000000000000146641506534232700252240ustar00rootroot00000000000000hlsl.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 Decorate 12(g_bbuf) BufferBlock MemberDecorate 12(g_bbuf) 0 Offset 0 Decorate 14(g_bbuf) Binding 1 Decorate 14(g_bbuf) DescriptorSet 0 Decorate 23 ArrayStride 4 Decorate 24(g_sbuf) BufferBlock MemberDecorate 24(g_sbuf) 0 Offset 0 Decorate 26(g_sbuf) Binding 0 Decorate 26(g_sbuf) DescriptorSet 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 glslang-16.0.0/Test/baseResults/hlsl.structcopy.comp.out000066400000000000000000000550751506534232700233310ustar00rootroot00000000000000hlsl.structcopy.comp Shader version: 500 local_size = (128, 1, 1) 0:? Sequence 0:20 Function Definition: @main(u1; ( temp void) 0:20 Function Parameters: 0:20 'id' ( in uint) 0:? Sequence 0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const uint) 0:21 2 (const uint) 0:21 3 (const uint) 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'count' ( temp uint) 0:22 count: direct index for structure ( temp uint) 0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 Sequence 0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit 0:23 Condition 0:23 Compare Greater Than ( temp bool) 0:23 'id' ( in uint) 0:23 'count' ( temp uint) 0:23 true case 0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:23 subtract ( temp uint) 0:23 'id' ( in uint) 0:23 'count' ( temp uint) 0:23 false case 0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:23 Constant: 0:23 0 (const uint) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 'id' ( in uint) 0:25 AtomicAdd ( temp uint) 0:25 a: direct index for structure ( temp uint) 0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 a: direct index for structure ( temp uint) 0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:25 Constant: 0:25 0 (const int) 0:26 AtomicAdd ( temp uint) 0:26 b: direct index for structure ( temp uint) 0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 b: direct index for structure ( temp uint) 0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:26 Constant: 0:26 1 (const int) 0:27 AtomicAdd ( temp uint) 0:27 c: direct index for structure ( temp uint) 0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 c: direct index for structure ( temp uint) 0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:27 Constant: 0:27 2 (const int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp uint) 0:? 'id' ( temp uint) 0:? 'id' ( in uint LocalInvocationIndex) 0:20 Function Call: @main(u1; ( temp void) 0:? 'id' ( temp uint) 0:? Linker Objects 0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 'id' ( in uint LocalInvocationIndex) Linked compute stage: Shader version: 500 local_size = (128, 1, 1) 0:? Sequence 0:20 Function Definition: @main(u1; ( temp void) 0:20 Function Parameters: 0:20 'id' ( in uint) 0:? Sequence 0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const uint) 0:21 2 (const uint) 0:21 3 (const uint) 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'count' ( temp uint) 0:22 count: direct index for structure ( temp uint) 0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 Sequence 0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit 0:23 Condition 0:23 Compare Greater Than ( temp bool) 0:23 'id' ( in uint) 0:23 'count' ( temp uint) 0:23 true case 0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:23 subtract ( temp uint) 0:23 'id' ( in uint) 0:23 'count' ( temp uint) 0:23 false case 0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:23 Constant: 0:23 0 (const uint) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 'id' ( in uint) 0:25 AtomicAdd ( temp uint) 0:25 a: direct index for structure ( temp uint) 0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 a: direct index for structure ( temp uint) 0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:25 Constant: 0:25 0 (const int) 0:26 AtomicAdd ( temp uint) 0:26 b: direct index for structure ( temp uint) 0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 b: direct index for structure ( temp uint) 0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:26 Constant: 0:26 1 (const int) 0:27 AtomicAdd ( temp uint) 0:27 c: direct index for structure ( temp uint) 0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 c: direct index for structure ( temp uint) 0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:27 Constant: 0:27 2 (const int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp uint) 0:? 'id' ( temp uint) 0:? 'id' ( in uint LocalInvocationIndex) 0:20 Function Call: @main(u1; ( temp void) 0:? 'id' ( temp uint) 0:? Linker Objects 0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 'id' ( in uint LocalInvocationIndex) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 88 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 83 ExecutionMode 4 LocalSize 128 1 1 Source HLSL 500 Name 4 "main" Name 10 "@main(u1;" Name 9 "id" Name 12 "MyStruct" MemberName 12(MyStruct) 0 "a" MemberName 12(MyStruct) 1 "b" MemberName 12(MyStruct) 2 "c" Name 16 "s" Name 25 "count" Name 26 "MyStruct" MemberName 26(MyStruct) 0 "a" MemberName 26(MyStruct) 1 "b" MemberName 26(MyStruct) 2 "c" Name 28 "MyStructs" MemberName 28(MyStructs) 0 "count" MemberName 28(MyStructs) 1 "data" Name 30 "sb" MemberName 30(sb) 0 "@data" Name 32 "sb" Name 37 "ms" Name 65 "o" MemberName 65(o) 0 "@data" Name 67 "o" Name 81 "id" Name 83 "id" Name 85 "param" MemberDecorate 26(MyStruct) 0 Offset 0 MemberDecorate 26(MyStruct) 1 Offset 4 MemberDecorate 26(MyStruct) 2 Offset 8 Decorate 27 ArrayStride 12 Decorate 28(MyStructs) BufferBlock MemberDecorate 28(MyStructs) 0 Offset 0 MemberDecorate 28(MyStructs) 1 Offset 4 Decorate 29 ArrayStride 16 Decorate 30(sb) BufferBlock MemberDecorate 30(sb) 0 NonWritable MemberDecorate 30(sb) 0 Offset 0 Decorate 32(sb) NonWritable Decorate 32(sb) Binding 0 Decorate 32(sb) DescriptorSet 0 Decorate 64 ArrayStride 12 Decorate 65(o) BufferBlock MemberDecorate 65(o) 0 NonWritable MemberDecorate 65(o) 0 Offset 0 Decorate 67(o) NonWritable Decorate 67(o) Binding 1 Decorate 67(o) DescriptorSet 0 Decorate 83(id) BuiltIn LocalInvocationIndex 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFunction 2 7(ptr) 12(MyStruct): TypeStruct 6(int) 6(int) 6(int) 13: 6(int) Constant 128 14: TypeArray 12(MyStruct) 13 15: TypePointer Workgroup 14 16(s): 15(ptr) Variable Workgroup 17: TypeInt 32 1 18: 17(int) Constant 0 19: 6(int) Constant 1 20: 6(int) Constant 2 21: 6(int) Constant 3 22:12(MyStruct) ConstantComposite 19 20 21 23: TypePointer Workgroup 12(MyStruct) 26(MyStruct): TypeStruct 6(int) 6(int) 6(int) 27: TypeRuntimeArray 26(MyStruct) 28(MyStructs): TypeStruct 6(int) 27 29: TypeRuntimeArray 28(MyStructs) 30(sb): TypeStruct 29 31: TypePointer Uniform 30(sb) 32(sb): 31(ptr) Variable Uniform 33: TypePointer Uniform 6(int) 36: TypePointer Function 12(MyStruct) 40: TypeBool 47: 17(int) Constant 1 49: TypePointer Uniform 26(MyStruct) 61: 17(int) Constant 2 64: TypeRuntimeArray 26(MyStruct) 65(o): TypeStruct 64 66: TypePointer Uniform 65(o) 67(o): 66(ptr) Variable Uniform 71: 6(int) Constant 0 82: TypePointer Input 6(int) 83(id): 82(ptr) Variable Input 4(main): 2 Function None 3 5: Label 81(id): 7(ptr) Variable Function 85(param): 7(ptr) Variable Function 84: 6(int) Load 83(id) Store 81(id) 84 86: 6(int) Load 81(id) Store 85(param) 86 87: 2 FunctionCall 10(@main(u1;) 85(param) Return FunctionEnd 10(@main(u1;): 2 Function None 8 9(id): 7(ptr) FunctionParameter 11: Label 25(count): 7(ptr) Variable Function 37(ms): 36(ptr) Variable Function 52: 36(ptr) Variable Function 24: 23(ptr) AccessChain 16(s) 18 Store 24 22 34: 33(ptr) AccessChain 32(sb) 18 18 18 35: 6(int) Load 34 Store 25(count) 35 38: 6(int) Load 9(id) 39: 6(int) Load 25(count) 41: 40(bool) UGreaterThan 38 39 42: 6(int) Load 9(id) 43: 6(int) Load 25(count) 44: 6(int) ISub 42 43 45: 23(ptr) AccessChain 16(s) 44 46:12(MyStruct) Load 45 48: 6(int) Load 9(id) 50: 49(ptr) AccessChain 32(sb) 18 18 47 48 51:26(MyStruct) Load 50 SelectionMerge 54 None BranchConditional 41 53 55 53: Label Store 52 46 Branch 54 55: Label 56: 6(int) CompositeExtract 51 0 57: 7(ptr) AccessChain 52 18 Store 57 56 58: 6(int) CompositeExtract 51 1 59: 7(ptr) AccessChain 52 47 Store 59 58 60: 6(int) CompositeExtract 51 2 62: 7(ptr) AccessChain 52 61 Store 62 60 Branch 54 54: Label 63:12(MyStruct) Load 52 Store 37(ms) 63 68: 33(ptr) AccessChain 67(o) 18 18 18 69: 7(ptr) AccessChain 37(ms) 18 70: 6(int) Load 69 72: 6(int) AtomicIAdd 68 19 71 70 73: 33(ptr) AccessChain 67(o) 18 18 47 74: 7(ptr) AccessChain 37(ms) 47 75: 6(int) Load 74 76: 6(int) AtomicIAdd 73 19 71 75 77: 33(ptr) AccessChain 67(o) 18 18 61 78: 7(ptr) AccessChain 37(ms) 61 79: 6(int) Load 78 80: 6(int) AtomicIAdd 77 19 71 79 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structcopylogical.comp.out000066400000000000000000000535121506534232700246560ustar00rootroot00000000000000hlsl.structcopylogical.comp Shader version: 500 local_size = (128, 1, 1) 0:? Sequence 0:20 Function Definition: @main(u1; ( temp void) 0:20 Function Parameters: 0:20 'id' ( in uint) 0:? Sequence 0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const uint) 0:21 2 (const uint) 0:21 3 (const uint) 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'count' ( temp uint) 0:22 count: direct index for structure ( temp uint) 0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 Sequence 0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit 0:23 Condition 0:23 Compare Greater Than ( temp bool) 0:23 'id' ( in uint) 0:23 'count' ( temp uint) 0:23 true case 0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:23 subtract ( temp uint) 0:23 'id' ( in uint) 0:23 'count' ( temp uint) 0:23 false case 0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:23 Constant: 0:23 0 (const uint) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 'id' ( in uint) 0:25 AtomicAdd ( temp uint) 0:25 a: direct index for structure ( temp uint) 0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 a: direct index for structure ( temp uint) 0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:25 Constant: 0:25 0 (const int) 0:26 AtomicAdd ( temp uint) 0:26 b: direct index for structure ( temp uint) 0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 b: direct index for structure ( temp uint) 0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:26 Constant: 0:26 1 (const int) 0:27 AtomicAdd ( temp uint) 0:27 c: direct index for structure ( temp uint) 0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 c: direct index for structure ( temp uint) 0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:27 Constant: 0:27 2 (const int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp uint) 0:? 'id' ( temp uint) 0:? 'id' ( in uint LocalInvocationIndex) 0:20 Function Call: @main(u1; ( temp void) 0:? 'id' ( temp uint) 0:? Linker Objects 0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 'id' ( in uint LocalInvocationIndex) Linked compute stage: Shader version: 500 local_size = (128, 1, 1) 0:? Sequence 0:20 Function Definition: @main(u1; ( temp void) 0:20 Function Parameters: 0:20 'id' ( in uint) 0:? Sequence 0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const uint) 0:21 2 (const uint) 0:21 3 (const uint) 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'count' ( temp uint) 0:22 count: direct index for structure ( temp uint) 0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 Sequence 0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit 0:23 Condition 0:23 Compare Greater Than ( temp bool) 0:23 'id' ( in uint) 0:23 'count' ( temp uint) 0:23 true case 0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:23 subtract ( temp uint) 0:23 'id' ( in uint) 0:23 'count' ( temp uint) 0:23 false case 0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:23 Constant: 0:23 0 (const uint) 0:23 Constant: 0:23 0 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 'id' ( in uint) 0:25 AtomicAdd ( temp uint) 0:25 a: direct index for structure ( temp uint) 0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 a: direct index for structure ( temp uint) 0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:25 Constant: 0:25 0 (const int) 0:26 AtomicAdd ( temp uint) 0:26 b: direct index for structure ( temp uint) 0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 b: direct index for structure ( temp uint) 0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:26 Constant: 0:26 1 (const int) 0:27 AtomicAdd ( temp uint) 0:27 c: direct index for structure ( temp uint) 0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 c: direct index for structure ( temp uint) 0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 0:27 Constant: 0:27 2 (const int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp uint) 0:? 'id' ( temp uint) 0:? 'id' ( in uint LocalInvocationIndex) 0:20 Function Call: @main(u1; ( temp void) 0:? 'id' ( temp uint) 0:? Linker Objects 0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 'id' ( in uint LocalInvocationIndex) Validation failed // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 79 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 16 32 57 74 ExecutionMode 4 LocalSize 128 1 1 Source HLSL 500 Name 4 "main" Name 10 "@main(u1;" Name 9 "id" Name 12 "MyStruct" MemberName 12(MyStruct) 0 "a" MemberName 12(MyStruct) 1 "b" MemberName 12(MyStruct) 2 "c" Name 16 "s" Name 25 "count" Name 26 "MyStruct" MemberName 26(MyStruct) 0 "a" MemberName 26(MyStruct) 1 "b" MemberName 26(MyStruct) 2 "c" Name 28 "MyStructs" MemberName 28(MyStructs) 0 "count" MemberName 28(MyStructs) 1 "data" Name 30 "sb" MemberName 30(sb) 0 "@data" Name 32 "sb" Name 37 "ms" Name 55 "o" MemberName 55(o) 0 "@data" Name 57 "o" Name 72 "id" Name 74 "id" Name 76 "param" MemberDecorate 26(MyStruct) 0 Offset 0 MemberDecorate 26(MyStruct) 1 Offset 4 MemberDecorate 26(MyStruct) 2 Offset 8 Decorate 27 ArrayStride 12 Decorate 28(MyStructs) Block MemberDecorate 28(MyStructs) 0 Offset 0 MemberDecorate 28(MyStructs) 1 Offset 4 Decorate 29 ArrayStride 16 Decorate 30(sb) Block MemberDecorate 30(sb) 0 NonWritable MemberDecorate 30(sb) 0 Offset 0 Decorate 32(sb) NonWritable Decorate 32(sb) Binding 0 Decorate 32(sb) DescriptorSet 0 Decorate 54 ArrayStride 12 Decorate 55(o) Block MemberDecorate 55(o) 0 NonWritable MemberDecorate 55(o) 0 Offset 0 Decorate 57(o) NonWritable Decorate 57(o) Binding 1 Decorate 57(o) DescriptorSet 0 Decorate 74(id) BuiltIn LocalInvocationIndex 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFunction 2 7(ptr) 12(MyStruct): TypeStruct 6(int) 6(int) 6(int) 13: 6(int) Constant 128 14: TypeArray 12(MyStruct) 13 15: TypePointer Workgroup 14 16(s): 15(ptr) Variable Workgroup 17: TypeInt 32 1 18: 17(int) Constant 0 19: 6(int) Constant 1 20: 6(int) Constant 2 21: 6(int) Constant 3 22:12(MyStruct) ConstantComposite 19 20 21 23: TypePointer Workgroup 12(MyStruct) 26(MyStruct): TypeStruct 6(int) 6(int) 6(int) 27: TypeRuntimeArray 26(MyStruct) 28(MyStructs): TypeStruct 6(int) 27 29: TypeRuntimeArray 28(MyStructs) 30(sb): TypeStruct 29 31: TypePointer StorageBuffer 30(sb) 32(sb): 31(ptr) Variable StorageBuffer 33: TypePointer StorageBuffer 6(int) 36: TypePointer Function 12(MyStruct) 40: TypeBool 47: 17(int) Constant 1 49: TypePointer StorageBuffer 26(MyStruct) 54: TypeRuntimeArray 26(MyStruct) 55(o): TypeStruct 54 56: TypePointer StorageBuffer 55(o) 57(o): 56(ptr) Variable StorageBuffer 61: 6(int) Constant 0 67: 17(int) Constant 2 73: TypePointer Input 6(int) 74(id): 73(ptr) Variable Input 4(main): 2 Function None 3 5: Label 72(id): 7(ptr) Variable Function 76(param): 7(ptr) Variable Function 75: 6(int) Load 74(id) Store 72(id) 75 77: 6(int) Load 72(id) Store 76(param) 77 78: 2 FunctionCall 10(@main(u1;) 76(param) Return FunctionEnd 10(@main(u1;): 2 Function None 8 9(id): 7(ptr) FunctionParameter 11: Label 25(count): 7(ptr) Variable Function 37(ms): 36(ptr) Variable Function 24: 23(ptr) AccessChain 16(s) 18 Store 24 22 34: 33(ptr) AccessChain 32(sb) 18 18 18 35: 6(int) Load 34 Store 25(count) 35 38: 6(int) Load 9(id) 39: 6(int) Load 25(count) 41: 40(bool) UGreaterThan 38 39 42: 6(int) Load 9(id) 43: 6(int) Load 25(count) 44: 6(int) ISub 42 43 45: 23(ptr) AccessChain 16(s) 44 46:12(MyStruct) Load 45 48: 6(int) Load 9(id) 50: 49(ptr) AccessChain 32(sb) 18 18 47 48 51:26(MyStruct) Load 50 52:12(MyStruct) CopyLogical 51 53:12(MyStruct) Select 41 46 52 Store 37(ms) 53 58: 33(ptr) AccessChain 57(o) 18 18 18 59: 7(ptr) AccessChain 37(ms) 18 60: 6(int) Load 59 62: 6(int) AtomicIAdd 58 19 61 60 63: 33(ptr) AccessChain 57(o) 18 18 47 64: 7(ptr) AccessChain 37(ms) 47 65: 6(int) Load 64 66: 6(int) AtomicIAdd 63 19 61 65 68: 33(ptr) AccessChain 57(o) 18 18 67 69: 7(ptr) AccessChain 37(ms) 67 70: 6(int) Load 69 71: 6(int) AtomicIAdd 68 19 61 70 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.structin.vert.out000066400000000000000000000740421506534232700230020ustar00rootroot00000000000000hlsl.structin.vert Shader version: 500 0:? Sequence 0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Function Parameters: 0:8 'd' ( in 4-component vector of float) 0:8 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 'e' ( in 4-component vector of float) 0:? Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 b: direct index for structure ( temp 4-component vector of float) 0:11 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:11 Constant: 0:11 2 (const int) 0:11 add ( temp 4-component vector of float) 0:11 add ( temp 4-component vector of float) 0:11 add ( temp 4-component vector of float) 0:11 add ( temp 4-component vector of float) 0:11 direct index ( temp 4-component vector of float) 0:11 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp 4-component vector of float) 0:11 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Construct vec4 ( temp 4-component vector of float) 0:11 direct index ( temp float) 0:11 coord: direct index for structure ( temp 4-component vector of float) 0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 'd' ( in 4-component vector of float) 0:11 'e' ( in 4-component vector of float) 0:12 move second child to first child ( temp 4-component vector of float) 0:12 coord: direct index for structure ( temp 4-component vector of float) 0:12 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:13 move second child to first child ( temp 4-component vector of float) 0:13 direct index ( temp 4-component vector of float) 0:13 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:13 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2.000000 0:13 2.000000 0:13 2.000000 0:13 2.000000 0:14 move second child to first child ( temp 4-component vector of float) 0:14 direct index ( temp 4-component vector of float) 0:14 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:14 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 3.000000 0:14 3.000000 0:14 3.000000 0:14 3.000000 0:16 Branch: Return with expression 0:16 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'd' ( temp 4-component vector of float) 0:? 'd' (layout( location=0) in 4-component vector of float) 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 direct index ( temp 4-component vector of float) 0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:? 'vi.m[0]' (layout( location=1) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:8 direct index ( temp 4-component vector of float) 0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 1 (const int) 0:? 'vi.m[1]' (layout( location=2) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:8 coord: direct index for structure ( temp 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 1 (const int) 0:? 'vi.coord' (layout( location=3) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:8 b: direct index for structure ( temp 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 2 (const int) 0:? 'vi.b' (layout( location=4) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'e' ( temp 4-component vector of float) 0:? 'e' (layout( location=5) in 4-component vector of float) 0:8 Sequence 0:8 move second child to first child ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:? 'd' ( temp 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:? 'e' ( temp 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.m[0]' (layout( location=0) out 4-component vector of float) 0:8 direct index ( temp 4-component vector of float) 0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.m[1]' (layout( location=1) out 4-component vector of float) 0:8 direct index ( temp 4-component vector of float) 0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.coord' ( out 4-component vector of float Position) 0:8 coord: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.b' (layout( location=2) smooth out 4-component vector of float) 0:8 b: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 2 (const int) 0:? Linker Objects 0:? '@entryPointOutput.coord' ( out 4-component vector of float Position) 0:? '@entryPointOutput.m[0]' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.m[1]' (layout( location=1) out 4-component vector of float) 0:? '@entryPointOutput.b' (layout( location=2) smooth out 4-component vector of float) 0:? 'd' (layout( location=0) in 4-component vector of float) 0:? 'vi.m[0]' (layout( location=1) in 4-component vector of float) 0:? 'vi.m[1]' (layout( location=2) in 4-component vector of float) 0:? 'vi.coord' (layout( location=3) in 4-component vector of float) 0:? 'vi.b' (layout( location=4) in 4-component vector of float) 0:? 'e' (layout( location=5) in 4-component vector of float) Linked vertex stage: Shader version: 500 0:? Sequence 0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Function Parameters: 0:8 'd' ( in 4-component vector of float) 0:8 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 'e' ( in 4-component vector of float) 0:? Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 b: direct index for structure ( temp 4-component vector of float) 0:11 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:11 Constant: 0:11 2 (const int) 0:11 add ( temp 4-component vector of float) 0:11 add ( temp 4-component vector of float) 0:11 add ( temp 4-component vector of float) 0:11 add ( temp 4-component vector of float) 0:11 direct index ( temp 4-component vector of float) 0:11 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 direct index ( temp 4-component vector of float) 0:11 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 Construct vec4 ( temp 4-component vector of float) 0:11 direct index ( temp float) 0:11 coord: direct index for structure ( temp 4-component vector of float) 0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 0 (const int) 0:11 'd' ( in 4-component vector of float) 0:11 'e' ( in 4-component vector of float) 0:12 move second child to first child ( temp 4-component vector of float) 0:12 coord: direct index for structure ( temp 4-component vector of float) 0:12 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:13 move second child to first child ( temp 4-component vector of float) 0:13 direct index ( temp 4-component vector of float) 0:13 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:13 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2.000000 0:13 2.000000 0:13 2.000000 0:13 2.000000 0:14 move second child to first child ( temp 4-component vector of float) 0:14 direct index ( temp 4-component vector of float) 0:14 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:14 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 1 (const int) 0:14 Constant: 0:14 3.000000 0:14 3.000000 0:14 3.000000 0:14 3.000000 0:16 Branch: Return with expression 0:16 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Function Definition: main( ( temp void) 0:8 Function Parameters: 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'd' ( temp 4-component vector of float) 0:? 'd' (layout( location=0) in 4-component vector of float) 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 direct index ( temp 4-component vector of float) 0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:? 'vi.m[0]' (layout( location=1) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:8 direct index ( temp 4-component vector of float) 0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 1 (const int) 0:? 'vi.m[1]' (layout( location=2) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:8 coord: direct index for structure ( temp 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 1 (const int) 0:? 'vi.coord' (layout( location=3) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:8 b: direct index for structure ( temp 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 2 (const int) 0:? 'vi.b' (layout( location=4) in 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? 'e' ( temp 4-component vector of float) 0:? 'e' (layout( location=5) in 4-component vector of float) 0:8 Sequence 0:8 move second child to first child ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:? 'd' ( temp 4-component vector of float) 0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:? 'e' ( temp 4-component vector of float) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.m[0]' (layout( location=0) out 4-component vector of float) 0:8 direct index ( temp 4-component vector of float) 0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.m[1]' (layout( location=1) out 4-component vector of float) 0:8 direct index ( temp 4-component vector of float) 0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.coord' ( out 4-component vector of float Position) 0:8 coord: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.b' (layout( location=2) smooth out 4-component vector of float) 0:8 b: direct index for structure ( temp 4-component vector of float) 0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b}) 0:8 Constant: 0:8 2 (const int) 0:? Linker Objects 0:? '@entryPointOutput.coord' ( out 4-component vector of float Position) 0:? '@entryPointOutput.m[0]' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.m[1]' (layout( location=1) out 4-component vector of float) 0:? '@entryPointOutput.b' (layout( location=2) smooth out 4-component vector of float) 0:? 'd' (layout( location=0) in 4-component vector of float) 0:? 'vi.m[0]' (layout( location=1) in 4-component vector of float) 0:? 'vi.m[1]' (layout( location=2) in 4-component vector of float) 0:? 'vi.coord' (layout( location=3) in 4-component vector of float) 0:? 'vi.b' (layout( location=4) in 4-component vector of float) 0:? 'e' (layout( location=5) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 94 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 55 58 61 64 67 71 82 85 88 91 Source HLSL 500 Name 4 "main" Name 12 "VI" MemberName 12(VI) 0 "m" MemberName 12(VI) 1 "coord" MemberName 12(VI) 2 "b" Name 18 "@main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4;" Name 15 "d" Name 16 "vi" Name 17 "e" Name 20 "local" Name 53 "d" Name 55 "d" Name 57 "vi" Name 58 "vi.m[0]" Name 61 "vi.m[1]" Name 64 "vi.coord" Name 67 "vi.b" Name 70 "e" Name 71 "e" Name 73 "flattenTemp" Name 74 "param" Name 76 "param" Name 78 "param" Name 82 "@entryPointOutput.m[0]" Name 85 "@entryPointOutput.m[1]" Name 88 "@entryPointOutput.coord" Name 91 "@entryPointOutput.b" Decorate 55(d) Location 0 Decorate 58(vi.m[0]) Location 1 Decorate 61(vi.m[1]) Location 2 Decorate 64(vi.coord) Location 3 Decorate 67(vi.b) Location 4 Decorate 71(e) Location 5 Decorate 82(@entryPointOutput.m[0]) Location 0 Decorate 85(@entryPointOutput.m[1]) Location 1 Decorate 88(@entryPointOutput.coord) BuiltIn Position Decorate 91(@entryPointOutput.b) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 7(fvec4) 10 12(VI): TypeStruct 11 7(fvec4) 7(fvec4) 13: TypePointer Function 12(VI) 14: TypeFunction 12(VI) 8(ptr) 13(ptr) 8(ptr) 21: TypeInt 32 1 22: 21(int) Constant 2 23: 21(int) Constant 0 24: 21(int) Constant 1 30: 9(int) Constant 0 31: TypePointer Function 6(float) 41: 6(float) Constant 1065353216 42: 7(fvec4) ConstantComposite 41 41 41 41 44: 6(float) Constant 1073741824 45: 7(fvec4) ConstantComposite 44 44 44 44 47: 6(float) Constant 1077936128 48: 7(fvec4) ConstantComposite 47 47 47 47 54: TypePointer Input 7(fvec4) 55(d): 54(ptr) Variable Input 58(vi.m[0]): 54(ptr) Variable Input 61(vi.m[1]): 54(ptr) Variable Input 64(vi.coord): 54(ptr) Variable Input 67(vi.b): 54(ptr) Variable Input 71(e): 54(ptr) Variable Input 81: TypePointer Output 7(fvec4) 82(@entryPointOutput.m[0]): 81(ptr) Variable Output 85(@entryPointOutput.m[1]): 81(ptr) Variable Output 88(@entryPointOutput.coord): 81(ptr) Variable Output 91(@entryPointOutput.b): 81(ptr) Variable Output 4(main): 2 Function None 3 5: Label 53(d): 8(ptr) Variable Function 57(vi): 13(ptr) Variable Function 70(e): 8(ptr) Variable Function 73(flattenTemp): 13(ptr) Variable Function 74(param): 8(ptr) Variable Function 76(param): 13(ptr) Variable Function 78(param): 8(ptr) Variable Function 56: 7(fvec4) Load 55(d) Store 53(d) 56 59: 7(fvec4) Load 58(vi.m[0]) 60: 8(ptr) AccessChain 57(vi) 23 23 Store 60 59 62: 7(fvec4) Load 61(vi.m[1]) 63: 8(ptr) AccessChain 57(vi) 23 24 Store 63 62 65: 7(fvec4) Load 64(vi.coord) 66: 8(ptr) AccessChain 57(vi) 24 Store 66 65 68: 7(fvec4) Load 67(vi.b) 69: 8(ptr) AccessChain 57(vi) 22 Store 69 68 72: 7(fvec4) Load 71(e) Store 70(e) 72 75: 7(fvec4) Load 53(d) Store 74(param) 75 77: 12(VI) Load 57(vi) Store 76(param) 77 79: 7(fvec4) Load 70(e) Store 78(param) 79 80: 12(VI) FunctionCall 18(@main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4;) 74(param) 76(param) 78(param) Store 73(flattenTemp) 80 83: 8(ptr) AccessChain 73(flattenTemp) 23 23 84: 7(fvec4) Load 83 Store 82(@entryPointOutput.m[0]) 84 86: 8(ptr) AccessChain 73(flattenTemp) 23 24 87: 7(fvec4) Load 86 Store 85(@entryPointOutput.m[1]) 87 89: 8(ptr) AccessChain 73(flattenTemp) 24 90: 7(fvec4) Load 89 Store 88(@entryPointOutput.coord) 90 92: 8(ptr) AccessChain 73(flattenTemp) 22 93: 7(fvec4) Load 92 Store 91(@entryPointOutput.b) 93 Return FunctionEnd 18(@main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4;): 12(VI) Function None 14 15(d): 8(ptr) FunctionParameter 16(vi): 13(ptr) FunctionParameter 17(e): 8(ptr) FunctionParameter 19: Label 20(local): 13(ptr) Variable Function 25: 8(ptr) AccessChain 16(vi) 23 24 26: 7(fvec4) Load 25 27: 8(ptr) AccessChain 16(vi) 23 23 28: 7(fvec4) Load 27 29: 7(fvec4) FAdd 26 28 32: 31(ptr) AccessChain 16(vi) 24 30 33: 6(float) Load 32 34: 7(fvec4) CompositeConstruct 33 33 33 33 35: 7(fvec4) FAdd 29 34 36: 7(fvec4) Load 15(d) 37: 7(fvec4) FAdd 35 36 38: 7(fvec4) Load 17(e) 39: 7(fvec4) FAdd 37 38 40: 8(ptr) AccessChain 20(local) 22 Store 40 39 43: 8(ptr) AccessChain 20(local) 24 Store 43 42 46: 8(ptr) AccessChain 20(local) 23 23 Store 46 45 49: 8(ptr) AccessChain 20(local) 23 24 Store 49 48 50: 12(VI) Load 20(local) ReturnValue 50 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.subpass.frag.out000066400000000000000000001223201506534232700225370ustar00rootroot00000000000000hlsl.subpass.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:68 Function Definition: @main( ( temp 4-component vector of float) 0:68 Function Parameters: 0:? Sequence 0:69 Sequence 0:69 move second child to first child ( temp 4-component vector of float) 0:69 'result00' ( temp 4-component vector of float) 0:69 subpassLoad ( temp 4-component vector of float) 0:69 'subpass_f4' (layout( binding=1 input_attachment_index=1) uniform subpassInput) 0:70 Sequence 0:70 move second child to first child ( temp 4-component vector of int) 0:70 'result01' ( temp 4-component vector of int) 0:70 subpassLoad ( temp 4-component vector of int) 0:70 'subpass_i4' ( uniform isubpassInput) 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of uint) 0:71 'result02' ( temp 4-component vector of uint) 0:71 subpassLoad ( temp 4-component vector of uint) 0:71 'subpass_u4' ( uniform usubpassInput) 0:73 Sequence 0:73 move second child to first child ( temp 4-component vector of float) 0:73 'result10' ( temp 4-component vector of float) 0:73 subpassLoadMS ( temp 4-component vector of float) 0:73 'subpass_ms_f4' ( uniform subpassInputMS) 0:73 Constant: 0:73 3 (const int) 0:74 Sequence 0:74 move second child to first child ( temp 4-component vector of int) 0:74 'result11' ( temp 4-component vector of int) 0:74 subpassLoadMS ( temp 4-component vector of int) 0:74 'subpass_ms_i4' ( uniform isubpassInputMS) 0:74 Constant: 0:74 3 (const int) 0:75 Sequence 0:75 move second child to first child ( temp 4-component vector of uint) 0:75 'result12' ( temp 4-component vector of uint) 0:75 subpassLoadMS ( temp 4-component vector of uint) 0:75 'subpass_ms_u4' ( uniform usubpassInputMS) 0:75 Constant: 0:75 3 (const int) 0:77 Sequence 0:77 move second child to first child ( temp 3-component vector of float) 0:77 'result20' ( temp 3-component vector of float) 0:77 Construct vec3 ( temp 3-component vector of float) 0:77 subpassLoad ( temp 4-component vector of float) 0:77 'subpass_f3' ( uniform subpassInput) 0:78 Sequence 0:78 move second child to first child ( temp 3-component vector of int) 0:78 'result21' ( temp 3-component vector of int) 0:78 Construct ivec3 ( temp 3-component vector of int) 0:78 subpassLoad ( temp 4-component vector of int) 0:78 'subpass_i3' ( uniform isubpassInput) 0:79 Sequence 0:79 move second child to first child ( temp 3-component vector of uint) 0:79 'result22' ( temp 3-component vector of uint) 0:79 Construct uvec3 ( temp 3-component vector of uint) 0:79 subpassLoad ( temp 4-component vector of uint) 0:79 'subpass_u3' ( uniform usubpassInput) 0:81 Sequence 0:81 move second child to first child ( temp 3-component vector of float) 0:81 'result30' ( temp 3-component vector of float) 0:81 Construct vec3 ( temp 3-component vector of float) 0:81 subpassLoadMS ( temp 4-component vector of float) 0:81 'subpass_ms_f3' ( uniform subpassInputMS) 0:81 Constant: 0:81 3 (const int) 0:82 Sequence 0:82 move second child to first child ( temp 3-component vector of int) 0:82 'result31' ( temp 3-component vector of int) 0:82 Construct ivec3 ( temp 3-component vector of int) 0:82 subpassLoadMS ( temp 4-component vector of int) 0:82 'subpass_ms_i3' ( uniform isubpassInputMS) 0:82 Constant: 0:82 3 (const int) 0:83 Sequence 0:83 move second child to first child ( temp 3-component vector of uint) 0:83 'result32' ( temp 3-component vector of uint) 0:83 Construct uvec3 ( temp 3-component vector of uint) 0:83 subpassLoadMS ( temp 4-component vector of uint) 0:83 'subpass_ms_u3' ( uniform usubpassInputMS) 0:83 Constant: 0:83 3 (const int) 0:85 Sequence 0:85 move second child to first child ( temp 2-component vector of float) 0:85 'result40' ( temp 2-component vector of float) 0:85 Construct vec2 ( temp 2-component vector of float) 0:85 subpassLoad ( temp 4-component vector of float) 0:85 'subpass_f2' ( uniform subpassInput) 0:86 Sequence 0:86 move second child to first child ( temp 2-component vector of int) 0:86 'result41' ( temp 2-component vector of int) 0:86 Construct ivec2 ( temp 2-component vector of int) 0:86 subpassLoad ( temp 4-component vector of int) 0:86 'subpass_i2' ( uniform isubpassInput) 0:87 Sequence 0:87 move second child to first child ( temp 2-component vector of uint) 0:87 'result42' ( temp 2-component vector of uint) 0:87 Construct uvec2 ( temp 2-component vector of uint) 0:87 subpassLoad ( temp 4-component vector of uint) 0:87 'subpass_u2' ( uniform usubpassInput) 0:89 Sequence 0:89 move second child to first child ( temp 2-component vector of float) 0:89 'result50' ( temp 2-component vector of float) 0:89 Construct vec2 ( temp 2-component vector of float) 0:89 subpassLoadMS ( temp 4-component vector of float) 0:89 'subpass_ms_f2' ( uniform subpassInputMS) 0:89 Constant: 0:89 2 (const int) 0:90 Sequence 0:90 move second child to first child ( temp 2-component vector of int) 0:90 'result51' ( temp 2-component vector of int) 0:90 Construct ivec2 ( temp 2-component vector of int) 0:90 subpassLoadMS ( temp 4-component vector of int) 0:90 'subpass_ms_i2' ( uniform isubpassInputMS) 0:90 Constant: 0:90 2 (const int) 0:91 Sequence 0:91 move second child to first child ( temp 2-component vector of uint) 0:91 'result52' ( temp 2-component vector of uint) 0:91 Construct uvec2 ( temp 2-component vector of uint) 0:91 subpassLoadMS ( temp 4-component vector of uint) 0:91 'subpass_ms_u2' ( uniform usubpassInputMS) 0:91 Constant: 0:91 2 (const int) 0:93 Sequence 0:93 move second child to first child ( temp float) 0:93 'result60' ( temp float) 0:93 Construct float ( temp float) 0:93 subpassLoad ( temp 4-component vector of float) 0:93 'subpass_f' ( uniform subpassInput) 0:94 Sequence 0:94 move second child to first child ( temp int) 0:94 'result61' ( temp int) 0:94 Construct int ( temp int) 0:94 subpassLoad ( temp 4-component vector of int) 0:94 'subpass_i' ( uniform isubpassInput) 0:95 Sequence 0:95 move second child to first child ( temp uint) 0:95 'result62' ( temp uint) 0:95 Construct uint ( temp uint) 0:95 subpassLoad ( temp 4-component vector of uint) 0:95 'subpass_u' ( uniform usubpassInput) 0:97 Sequence 0:97 move second child to first child ( temp float) 0:97 'result70' ( temp float) 0:97 Construct float ( temp float) 0:97 subpassLoadMS ( temp 4-component vector of float) 0:97 'subpass_ms_f' ( uniform subpassInputMS) 0:97 Constant: 0:97 2 (const int) 0:98 Sequence 0:98 move second child to first child ( temp int) 0:98 'result71' ( temp int) 0:98 Construct int ( temp int) 0:98 subpassLoadMS ( temp 4-component vector of int) 0:98 'subpass_ms_i' ( uniform isubpassInputMS) 0:98 Constant: 0:98 2 (const int) 0:99 Sequence 0:99 move second child to first child ( temp uint) 0:99 'result72' ( temp uint) 0:99 Construct uint ( temp uint) 0:99 subpassLoadMS ( temp 4-component vector of uint) 0:99 'subpass_ms_u' ( uniform usubpassInputMS) 0:99 Constant: 0:99 2 (const int) 0:101 Sequence 0:101 move second child to first child ( temp 4-component vector of float) 0:101 'result73' ( temp 4-component vector of float) 0:101 subpassLoad ( temp 4-component vector of float) 0:101 'subpass_2' ( uniform subpassInput) 0:112 Branch: Return with expression 0:112 Constant: 0:112 0.000000 0:112 0.000000 0:112 0.000000 0:112 0.000000 0:68 Function Definition: main( ( temp void) 0:68 Function Parameters: 0:? Sequence 0:68 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:68 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'subpass_f4' (layout( binding=1 input_attachment_index=1) uniform subpassInput) 0:? 'subpass_i4' ( uniform isubpassInput) 0:? 'subpass_u4' ( uniform usubpassInput) 0:? 'subpass_ms_f4' ( uniform subpassInputMS) 0:? 'subpass_ms_i4' ( uniform isubpassInputMS) 0:? 'subpass_ms_u4' ( uniform usubpassInputMS) 0:? 'subpass_f3' ( uniform subpassInput) 0:? 'subpass_i3' ( uniform isubpassInput) 0:? 'subpass_u3' ( uniform usubpassInput) 0:? 'subpass_ms_f3' ( uniform subpassInputMS) 0:? 'subpass_ms_i3' ( uniform isubpassInputMS) 0:? 'subpass_ms_u3' ( uniform usubpassInputMS) 0:? 'subpass_f2' ( uniform subpassInput) 0:? 'subpass_i2' ( uniform isubpassInput) 0:? 'subpass_u2' ( uniform usubpassInput) 0:? 'subpass_ms_f2' ( uniform subpassInputMS) 0:? 'subpass_ms_i2' ( uniform isubpassInputMS) 0:? 'subpass_ms_u2' ( uniform usubpassInputMS) 0:? 'subpass_f' ( uniform subpassInput) 0:? 'subpass_i' ( uniform isubpassInput) 0:? 'subpass_u' ( uniform usubpassInput) 0:? 'subpass_ms_f' ( uniform subpassInputMS) 0:? 'subpass_ms_i' ( uniform isubpassInputMS) 0:? 'subpass_ms_u' ( uniform usubpassInputMS) 0:? 'subpass_2' ( uniform subpassInput) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:68 Function Definition: @main( ( temp 4-component vector of float) 0:68 Function Parameters: 0:? Sequence 0:69 Sequence 0:69 move second child to first child ( temp 4-component vector of float) 0:69 'result00' ( temp 4-component vector of float) 0:69 subpassLoad ( temp 4-component vector of float) 0:69 'subpass_f4' (layout( binding=1 input_attachment_index=1) uniform subpassInput) 0:70 Sequence 0:70 move second child to first child ( temp 4-component vector of int) 0:70 'result01' ( temp 4-component vector of int) 0:70 subpassLoad ( temp 4-component vector of int) 0:70 'subpass_i4' ( uniform isubpassInput) 0:71 Sequence 0:71 move second child to first child ( temp 4-component vector of uint) 0:71 'result02' ( temp 4-component vector of uint) 0:71 subpassLoad ( temp 4-component vector of uint) 0:71 'subpass_u4' ( uniform usubpassInput) 0:73 Sequence 0:73 move second child to first child ( temp 4-component vector of float) 0:73 'result10' ( temp 4-component vector of float) 0:73 subpassLoadMS ( temp 4-component vector of float) 0:73 'subpass_ms_f4' ( uniform subpassInputMS) 0:73 Constant: 0:73 3 (const int) 0:74 Sequence 0:74 move second child to first child ( temp 4-component vector of int) 0:74 'result11' ( temp 4-component vector of int) 0:74 subpassLoadMS ( temp 4-component vector of int) 0:74 'subpass_ms_i4' ( uniform isubpassInputMS) 0:74 Constant: 0:74 3 (const int) 0:75 Sequence 0:75 move second child to first child ( temp 4-component vector of uint) 0:75 'result12' ( temp 4-component vector of uint) 0:75 subpassLoadMS ( temp 4-component vector of uint) 0:75 'subpass_ms_u4' ( uniform usubpassInputMS) 0:75 Constant: 0:75 3 (const int) 0:77 Sequence 0:77 move second child to first child ( temp 3-component vector of float) 0:77 'result20' ( temp 3-component vector of float) 0:77 Construct vec3 ( temp 3-component vector of float) 0:77 subpassLoad ( temp 4-component vector of float) 0:77 'subpass_f3' ( uniform subpassInput) 0:78 Sequence 0:78 move second child to first child ( temp 3-component vector of int) 0:78 'result21' ( temp 3-component vector of int) 0:78 Construct ivec3 ( temp 3-component vector of int) 0:78 subpassLoad ( temp 4-component vector of int) 0:78 'subpass_i3' ( uniform isubpassInput) 0:79 Sequence 0:79 move second child to first child ( temp 3-component vector of uint) 0:79 'result22' ( temp 3-component vector of uint) 0:79 Construct uvec3 ( temp 3-component vector of uint) 0:79 subpassLoad ( temp 4-component vector of uint) 0:79 'subpass_u3' ( uniform usubpassInput) 0:81 Sequence 0:81 move second child to first child ( temp 3-component vector of float) 0:81 'result30' ( temp 3-component vector of float) 0:81 Construct vec3 ( temp 3-component vector of float) 0:81 subpassLoadMS ( temp 4-component vector of float) 0:81 'subpass_ms_f3' ( uniform subpassInputMS) 0:81 Constant: 0:81 3 (const int) 0:82 Sequence 0:82 move second child to first child ( temp 3-component vector of int) 0:82 'result31' ( temp 3-component vector of int) 0:82 Construct ivec3 ( temp 3-component vector of int) 0:82 subpassLoadMS ( temp 4-component vector of int) 0:82 'subpass_ms_i3' ( uniform isubpassInputMS) 0:82 Constant: 0:82 3 (const int) 0:83 Sequence 0:83 move second child to first child ( temp 3-component vector of uint) 0:83 'result32' ( temp 3-component vector of uint) 0:83 Construct uvec3 ( temp 3-component vector of uint) 0:83 subpassLoadMS ( temp 4-component vector of uint) 0:83 'subpass_ms_u3' ( uniform usubpassInputMS) 0:83 Constant: 0:83 3 (const int) 0:85 Sequence 0:85 move second child to first child ( temp 2-component vector of float) 0:85 'result40' ( temp 2-component vector of float) 0:85 Construct vec2 ( temp 2-component vector of float) 0:85 subpassLoad ( temp 4-component vector of float) 0:85 'subpass_f2' ( uniform subpassInput) 0:86 Sequence 0:86 move second child to first child ( temp 2-component vector of int) 0:86 'result41' ( temp 2-component vector of int) 0:86 Construct ivec2 ( temp 2-component vector of int) 0:86 subpassLoad ( temp 4-component vector of int) 0:86 'subpass_i2' ( uniform isubpassInput) 0:87 Sequence 0:87 move second child to first child ( temp 2-component vector of uint) 0:87 'result42' ( temp 2-component vector of uint) 0:87 Construct uvec2 ( temp 2-component vector of uint) 0:87 subpassLoad ( temp 4-component vector of uint) 0:87 'subpass_u2' ( uniform usubpassInput) 0:89 Sequence 0:89 move second child to first child ( temp 2-component vector of float) 0:89 'result50' ( temp 2-component vector of float) 0:89 Construct vec2 ( temp 2-component vector of float) 0:89 subpassLoadMS ( temp 4-component vector of float) 0:89 'subpass_ms_f2' ( uniform subpassInputMS) 0:89 Constant: 0:89 2 (const int) 0:90 Sequence 0:90 move second child to first child ( temp 2-component vector of int) 0:90 'result51' ( temp 2-component vector of int) 0:90 Construct ivec2 ( temp 2-component vector of int) 0:90 subpassLoadMS ( temp 4-component vector of int) 0:90 'subpass_ms_i2' ( uniform isubpassInputMS) 0:90 Constant: 0:90 2 (const int) 0:91 Sequence 0:91 move second child to first child ( temp 2-component vector of uint) 0:91 'result52' ( temp 2-component vector of uint) 0:91 Construct uvec2 ( temp 2-component vector of uint) 0:91 subpassLoadMS ( temp 4-component vector of uint) 0:91 'subpass_ms_u2' ( uniform usubpassInputMS) 0:91 Constant: 0:91 2 (const int) 0:93 Sequence 0:93 move second child to first child ( temp float) 0:93 'result60' ( temp float) 0:93 Construct float ( temp float) 0:93 subpassLoad ( temp 4-component vector of float) 0:93 'subpass_f' ( uniform subpassInput) 0:94 Sequence 0:94 move second child to first child ( temp int) 0:94 'result61' ( temp int) 0:94 Construct int ( temp int) 0:94 subpassLoad ( temp 4-component vector of int) 0:94 'subpass_i' ( uniform isubpassInput) 0:95 Sequence 0:95 move second child to first child ( temp uint) 0:95 'result62' ( temp uint) 0:95 Construct uint ( temp uint) 0:95 subpassLoad ( temp 4-component vector of uint) 0:95 'subpass_u' ( uniform usubpassInput) 0:97 Sequence 0:97 move second child to first child ( temp float) 0:97 'result70' ( temp float) 0:97 Construct float ( temp float) 0:97 subpassLoadMS ( temp 4-component vector of float) 0:97 'subpass_ms_f' ( uniform subpassInputMS) 0:97 Constant: 0:97 2 (const int) 0:98 Sequence 0:98 move second child to first child ( temp int) 0:98 'result71' ( temp int) 0:98 Construct int ( temp int) 0:98 subpassLoadMS ( temp 4-component vector of int) 0:98 'subpass_ms_i' ( uniform isubpassInputMS) 0:98 Constant: 0:98 2 (const int) 0:99 Sequence 0:99 move second child to first child ( temp uint) 0:99 'result72' ( temp uint) 0:99 Construct uint ( temp uint) 0:99 subpassLoadMS ( temp 4-component vector of uint) 0:99 'subpass_ms_u' ( uniform usubpassInputMS) 0:99 Constant: 0:99 2 (const int) 0:101 Sequence 0:101 move second child to first child ( temp 4-component vector of float) 0:101 'result73' ( temp 4-component vector of float) 0:101 subpassLoad ( temp 4-component vector of float) 0:101 'subpass_2' ( uniform subpassInput) 0:112 Branch: Return with expression 0:112 Constant: 0:112 0.000000 0:112 0.000000 0:112 0.000000 0:112 0.000000 0:68 Function Definition: main( ( temp void) 0:68 Function Parameters: 0:? Sequence 0:68 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:68 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'subpass_f4' (layout( binding=1 input_attachment_index=1) uniform subpassInput) 0:? 'subpass_i4' ( uniform isubpassInput) 0:? 'subpass_u4' ( uniform usubpassInput) 0:? 'subpass_ms_f4' ( uniform subpassInputMS) 0:? 'subpass_ms_i4' ( uniform isubpassInputMS) 0:? 'subpass_ms_u4' ( uniform usubpassInputMS) 0:? 'subpass_f3' ( uniform subpassInput) 0:? 'subpass_i3' ( uniform isubpassInput) 0:? 'subpass_u3' ( uniform usubpassInput) 0:? 'subpass_ms_f3' ( uniform subpassInputMS) 0:? 'subpass_ms_i3' ( uniform isubpassInputMS) 0:? 'subpass_ms_u3' ( uniform usubpassInputMS) 0:? 'subpass_f2' ( uniform subpassInput) 0:? 'subpass_i2' ( uniform isubpassInput) 0:? 'subpass_u2' ( uniform usubpassInput) 0:? 'subpass_ms_f2' ( uniform subpassInputMS) 0:? 'subpass_ms_i2' ( uniform isubpassInputMS) 0:? 'subpass_ms_u2' ( uniform usubpassInputMS) 0:? 'subpass_f' ( uniform subpassInput) 0:? 'subpass_i' ( uniform isubpassInput) 0:? 'subpass_u' ( uniform usubpassInput) 0:? 'subpass_ms_f' ( uniform subpassInputMS) 0:? 'subpass_ms_i' ( uniform isubpassInputMS) 0:? 'subpass_ms_u' ( uniform usubpassInputMS) 0:? 'subpass_2' ( uniform subpassInput) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 204 Capability Shader Capability InputAttachment 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 202 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "result00" Name 15 "subpass_f4" Name 24 "result01" Name 27 "subpass_i4" Name 33 "result02" Name 36 "subpass_u4" Name 39 "result10" Name 42 "subpass_ms_f4" Name 46 "result11" Name 49 "subpass_ms_i4" Name 52 "result12" Name 55 "subpass_ms_u4" Name 60 "result20" Name 61 "subpass_f3" Name 70 "result21" Name 71 "subpass_i3" Name 80 "result22" Name 81 "subpass_u3" Name 88 "result30" Name 89 "subpass_ms_f3" Name 96 "result31" Name 97 "subpass_ms_i3" Name 104 "result32" Name 105 "subpass_ms_u3" Name 114 "result40" Name 115 "subpass_f2" Name 122 "result41" Name 123 "subpass_i2" Name 131 "result42" Name 132 "subpass_u2" Name 138 "result50" Name 139 "subpass_ms_f2" Name 146 "result51" Name 147 "subpass_ms_i2" Name 153 "result52" Name 154 "subpass_ms_u2" Name 161 "result60" Name 162 "subpass_f" Name 167 "result61" Name 168 "subpass_i" Name 173 "result62" Name 174 "subpass_u" Name 178 "result70" Name 179 "subpass_ms_f" Name 183 "result71" Name 184 "subpass_ms_i" Name 188 "result72" Name 189 "subpass_ms_u" Name 193 "result73" Name 194 "subpass_2" Name 202 "@entryPointOutput" Decorate 15(subpass_f4) Binding 1 Decorate 15(subpass_f4) DescriptorSet 0 Decorate 15(subpass_f4) InputAttachmentIndex 1 Decorate 27(subpass_i4) Binding 0 Decorate 27(subpass_i4) DescriptorSet 0 Decorate 27(subpass_i4) InputAttachmentIndex 2 Decorate 36(subpass_u4) Binding 2 Decorate 36(subpass_u4) DescriptorSet 0 Decorate 36(subpass_u4) InputAttachmentIndex 3 Decorate 42(subpass_ms_f4) Binding 3 Decorate 42(subpass_ms_f4) DescriptorSet 0 Decorate 42(subpass_ms_f4) InputAttachmentIndex 4 Decorate 49(subpass_ms_i4) Binding 4 Decorate 49(subpass_ms_i4) DescriptorSet 0 Decorate 49(subpass_ms_i4) InputAttachmentIndex 5 Decorate 55(subpass_ms_u4) Binding 5 Decorate 55(subpass_ms_u4) DescriptorSet 0 Decorate 55(subpass_ms_u4) InputAttachmentIndex 6 Decorate 61(subpass_f3) Binding 6 Decorate 61(subpass_f3) DescriptorSet 0 Decorate 61(subpass_f3) InputAttachmentIndex 1 Decorate 71(subpass_i3) Binding 7 Decorate 71(subpass_i3) DescriptorSet 0 Decorate 71(subpass_i3) InputAttachmentIndex 2 Decorate 81(subpass_u3) Binding 8 Decorate 81(subpass_u3) DescriptorSet 0 Decorate 81(subpass_u3) InputAttachmentIndex 3 Decorate 89(subpass_ms_f3) Binding 9 Decorate 89(subpass_ms_f3) DescriptorSet 0 Decorate 89(subpass_ms_f3) InputAttachmentIndex 4 Decorate 97(subpass_ms_i3) Binding 10 Decorate 97(subpass_ms_i3) DescriptorSet 0 Decorate 97(subpass_ms_i3) InputAttachmentIndex 5 Decorate 105(subpass_ms_u3) Binding 11 Decorate 105(subpass_ms_u3) DescriptorSet 0 Decorate 105(subpass_ms_u3) InputAttachmentIndex 6 Decorate 115(subpass_f2) Binding 12 Decorate 115(subpass_f2) DescriptorSet 0 Decorate 115(subpass_f2) InputAttachmentIndex 1 Decorate 123(subpass_i2) Binding 13 Decorate 123(subpass_i2) DescriptorSet 0 Decorate 123(subpass_i2) InputAttachmentIndex 2 Decorate 132(subpass_u2) Binding 14 Decorate 132(subpass_u2) DescriptorSet 0 Decorate 132(subpass_u2) InputAttachmentIndex 3 Decorate 139(subpass_ms_f2) Binding 15 Decorate 139(subpass_ms_f2) DescriptorSet 0 Decorate 139(subpass_ms_f2) InputAttachmentIndex 4 Decorate 147(subpass_ms_i2) Binding 16 Decorate 147(subpass_ms_i2) DescriptorSet 0 Decorate 147(subpass_ms_i2) InputAttachmentIndex 5 Decorate 154(subpass_ms_u2) Binding 17 Decorate 154(subpass_ms_u2) DescriptorSet 0 Decorate 154(subpass_ms_u2) InputAttachmentIndex 6 Decorate 162(subpass_f) Binding 18 Decorate 162(subpass_f) DescriptorSet 0 Decorate 162(subpass_f) InputAttachmentIndex 1 Decorate 168(subpass_i) Binding 19 Decorate 168(subpass_i) DescriptorSet 0 Decorate 168(subpass_i) InputAttachmentIndex 2 Decorate 174(subpass_u) Binding 20 Decorate 174(subpass_u) DescriptorSet 0 Decorate 174(subpass_u) InputAttachmentIndex 3 Decorate 179(subpass_ms_f) Binding 21 Decorate 179(subpass_ms_f) DescriptorSet 0 Decorate 179(subpass_ms_f) InputAttachmentIndex 4 Decorate 184(subpass_ms_i) Binding 22 Decorate 184(subpass_ms_i) DescriptorSet 0 Decorate 184(subpass_ms_i) InputAttachmentIndex 5 Decorate 189(subpass_ms_u) Binding 23 Decorate 189(subpass_ms_u) DescriptorSet 0 Decorate 189(subpass_ms_u) InputAttachmentIndex 6 Decorate 194(subpass_2) Binding 24 Decorate 194(subpass_2) DescriptorSet 0 Decorate 194(subpass_2) InputAttachmentIndex 7 Decorate 202(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 7(fvec4) 13: TypeImage 6(float) SubpassData nonsampled format:Unknown 14: TypePointer UniformConstant 13 15(subpass_f4): 14(ptr) Variable UniformConstant 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypeVector 17(int) 2 20: 19(ivec2) ConstantComposite 18 18 22: TypeVector 17(int) 4 23: TypePointer Function 22(ivec4) 25: TypeImage 17(int) SubpassData nonsampled format:Unknown 26: TypePointer UniformConstant 25 27(subpass_i4): 26(ptr) Variable UniformConstant 30: TypeInt 32 0 31: TypeVector 30(int) 4 32: TypePointer Function 31(ivec4) 34: TypeImage 30(int) SubpassData nonsampled format:Unknown 35: TypePointer UniformConstant 34 36(subpass_u4): 35(ptr) Variable UniformConstant 40: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown 41: TypePointer UniformConstant 40 42(subpass_ms_f4): 41(ptr) Variable UniformConstant 44: 17(int) Constant 3 47: TypeImage 17(int) SubpassData multi-sampled nonsampled format:Unknown 48: TypePointer UniformConstant 47 49(subpass_ms_i4): 48(ptr) Variable UniformConstant 53: TypeImage 30(int) SubpassData multi-sampled nonsampled format:Unknown 54: TypePointer UniformConstant 53 55(subpass_ms_u4): 54(ptr) Variable UniformConstant 58: TypeVector 6(float) 3 59: TypePointer Function 58(fvec3) 61(subpass_f3): 14(ptr) Variable UniformConstant 68: TypeVector 17(int) 3 69: TypePointer Function 68(ivec3) 71(subpass_i3): 26(ptr) Variable UniformConstant 78: TypeVector 30(int) 3 79: TypePointer Function 78(ivec3) 81(subpass_u3): 35(ptr) Variable UniformConstant 89(subpass_ms_f3): 41(ptr) Variable UniformConstant 97(subpass_ms_i3): 48(ptr) Variable UniformConstant 105(subpass_ms_u3): 54(ptr) Variable UniformConstant 112: TypeVector 6(float) 2 113: TypePointer Function 112(fvec2) 115(subpass_f2): 14(ptr) Variable UniformConstant 121: TypePointer Function 19(ivec2) 123(subpass_i2): 26(ptr) Variable UniformConstant 129: TypeVector 30(int) 2 130: TypePointer Function 129(ivec2) 132(subpass_u2): 35(ptr) Variable UniformConstant 139(subpass_ms_f2): 41(ptr) Variable UniformConstant 141: 17(int) Constant 2 147(subpass_ms_i2): 48(ptr) Variable UniformConstant 154(subpass_ms_u2): 54(ptr) Variable UniformConstant 160: TypePointer Function 6(float) 162(subpass_f): 14(ptr) Variable UniformConstant 166: TypePointer Function 17(int) 168(subpass_i): 26(ptr) Variable UniformConstant 172: TypePointer Function 30(int) 174(subpass_u): 35(ptr) Variable UniformConstant 179(subpass_ms_f): 41(ptr) Variable UniformConstant 184(subpass_ms_i): 48(ptr) Variable UniformConstant 189(subpass_ms_u): 54(ptr) Variable UniformConstant 194(subpass_2): 14(ptr) Variable UniformConstant 197: 6(float) Constant 0 198: 7(fvec4) ConstantComposite 197 197 197 197 201: TypePointer Output 7(fvec4) 202(@entryPointOutput): 201(ptr) Variable Output 4(main): 2 Function None 3 5: Label 203: 7(fvec4) FunctionCall 9(@main() Store 202(@entryPointOutput) 203 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(result00): 11(ptr) Variable Function 24(result01): 23(ptr) Variable Function 33(result02): 32(ptr) Variable Function 39(result10): 11(ptr) Variable Function 46(result11): 23(ptr) Variable Function 52(result12): 32(ptr) Variable Function 60(result20): 59(ptr) Variable Function 70(result21): 69(ptr) Variable Function 80(result22): 79(ptr) Variable Function 88(result30): 59(ptr) Variable Function 96(result31): 69(ptr) Variable Function 104(result32): 79(ptr) Variable Function 114(result40): 113(ptr) Variable Function 122(result41): 121(ptr) Variable Function 131(result42): 130(ptr) Variable Function 138(result50): 113(ptr) Variable Function 146(result51): 121(ptr) Variable Function 153(result52): 130(ptr) Variable Function 161(result60): 160(ptr) Variable Function 167(result61): 166(ptr) Variable Function 173(result62): 172(ptr) Variable Function 178(result70): 160(ptr) Variable Function 183(result71): 166(ptr) Variable Function 188(result72): 172(ptr) Variable Function 193(result73): 11(ptr) Variable Function 16: 13 Load 15(subpass_f4) 21: 7(fvec4) ImageRead 16 20 Store 12(result00) 21 28: 25 Load 27(subpass_i4) 29: 22(ivec4) ImageRead 28 20 Store 24(result01) 29 37: 34 Load 36(subpass_u4) 38: 31(ivec4) ImageRead 37 20 Store 33(result02) 38 43: 40 Load 42(subpass_ms_f4) 45: 7(fvec4) ImageRead 43 20 Sample 44 Store 39(result10) 45 50: 47 Load 49(subpass_ms_i4) 51: 22(ivec4) ImageRead 50 20 Sample 44 Store 46(result11) 51 56: 53 Load 55(subpass_ms_u4) 57: 31(ivec4) ImageRead 56 20 Sample 44 Store 52(result12) 57 62: 13 Load 61(subpass_f3) 63: 7(fvec4) ImageRead 62 20 64: 6(float) CompositeExtract 63 0 65: 6(float) CompositeExtract 63 1 66: 6(float) CompositeExtract 63 2 67: 58(fvec3) CompositeConstruct 64 65 66 Store 60(result20) 67 72: 25 Load 71(subpass_i3) 73: 22(ivec4) ImageRead 72 20 74: 17(int) CompositeExtract 73 0 75: 17(int) CompositeExtract 73 1 76: 17(int) CompositeExtract 73 2 77: 68(ivec3) CompositeConstruct 74 75 76 Store 70(result21) 77 82: 34 Load 81(subpass_u3) 83: 31(ivec4) ImageRead 82 20 84: 30(int) CompositeExtract 83 0 85: 30(int) CompositeExtract 83 1 86: 30(int) CompositeExtract 83 2 87: 78(ivec3) CompositeConstruct 84 85 86 Store 80(result22) 87 90: 40 Load 89(subpass_ms_f3) 91: 7(fvec4) ImageRead 90 20 Sample 44 92: 6(float) CompositeExtract 91 0 93: 6(float) CompositeExtract 91 1 94: 6(float) CompositeExtract 91 2 95: 58(fvec3) CompositeConstruct 92 93 94 Store 88(result30) 95 98: 47 Load 97(subpass_ms_i3) 99: 22(ivec4) ImageRead 98 20 Sample 44 100: 17(int) CompositeExtract 99 0 101: 17(int) CompositeExtract 99 1 102: 17(int) CompositeExtract 99 2 103: 68(ivec3) CompositeConstruct 100 101 102 Store 96(result31) 103 106: 53 Load 105(subpass_ms_u3) 107: 31(ivec4) ImageRead 106 20 Sample 44 108: 30(int) CompositeExtract 107 0 109: 30(int) CompositeExtract 107 1 110: 30(int) CompositeExtract 107 2 111: 78(ivec3) CompositeConstruct 108 109 110 Store 104(result32) 111 116: 13 Load 115(subpass_f2) 117: 7(fvec4) ImageRead 116 20 118: 6(float) CompositeExtract 117 0 119: 6(float) CompositeExtract 117 1 120: 112(fvec2) CompositeConstruct 118 119 Store 114(result40) 120 124: 25 Load 123(subpass_i2) 125: 22(ivec4) ImageRead 124 20 126: 17(int) CompositeExtract 125 0 127: 17(int) CompositeExtract 125 1 128: 19(ivec2) CompositeConstruct 126 127 Store 122(result41) 128 133: 34 Load 132(subpass_u2) 134: 31(ivec4) ImageRead 133 20 135: 30(int) CompositeExtract 134 0 136: 30(int) CompositeExtract 134 1 137: 129(ivec2) CompositeConstruct 135 136 Store 131(result42) 137 140: 40 Load 139(subpass_ms_f2) 142: 7(fvec4) ImageRead 140 20 Sample 141 143: 6(float) CompositeExtract 142 0 144: 6(float) CompositeExtract 142 1 145: 112(fvec2) CompositeConstruct 143 144 Store 138(result50) 145 148: 47 Load 147(subpass_ms_i2) 149: 22(ivec4) ImageRead 148 20 Sample 141 150: 17(int) CompositeExtract 149 0 151: 17(int) CompositeExtract 149 1 152: 19(ivec2) CompositeConstruct 150 151 Store 146(result51) 152 155: 53 Load 154(subpass_ms_u2) 156: 31(ivec4) ImageRead 155 20 Sample 141 157: 30(int) CompositeExtract 156 0 158: 30(int) CompositeExtract 156 1 159: 129(ivec2) CompositeConstruct 157 158 Store 153(result52) 159 163: 13 Load 162(subpass_f) 164: 7(fvec4) ImageRead 163 20 165: 6(float) CompositeExtract 164 0 Store 161(result60) 165 169: 25 Load 168(subpass_i) 170: 22(ivec4) ImageRead 169 20 171: 17(int) CompositeExtract 170 0 Store 167(result61) 171 175: 34 Load 174(subpass_u) 176: 31(ivec4) ImageRead 175 20 177: 30(int) CompositeExtract 176 0 Store 173(result62) 177 180: 40 Load 179(subpass_ms_f) 181: 7(fvec4) ImageRead 180 20 Sample 141 182: 6(float) CompositeExtract 181 0 Store 178(result70) 182 185: 47 Load 184(subpass_ms_i) 186: 22(ivec4) ImageRead 185 20 Sample 141 187: 17(int) CompositeExtract 186 0 Store 183(result71) 187 190: 53 Load 189(subpass_ms_u) 191: 31(ivec4) ImageRead 190 20 Sample 141 192: 30(int) CompositeExtract 191 0 Store 188(result72) 192 195: 13 Load 194(subpass_2) 196: 7(fvec4) ImageRead 195 20 Store 193(result73) 196 ReturnValue 198 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.switch.frag.out000066400000000000000000000447511506534232700223730ustar00rootroot00000000000000hlsl.switch.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:2 'c' ( in int) 0:2 'd' ( in int) 0:? Sequence 0:3 'c' ( in int) 0:7 switch 0:7 condition 0:7 'c' ( in int) 0:7 body 0:7 Sequence 0:9 default: 0:7 Sequence 0:7 Branch: Break 0:12 switch 0:12 condition 0:12 'c' ( in int) 0:12 body 0:12 Sequence 0:13 case: with expression 0:13 Constant: 0:13 1 (const int) 0:? Sequence 0:14 Pre-Increment ( temp 4-component vector of float) 0:14 'input' ( in 4-component vector of float) 0:15 Branch: Break 0:16 case: with expression 0:16 Constant: 0:16 2 (const int) 0:? Sequence 0:17 Pre-Decrement ( temp 4-component vector of float) 0:17 'input' ( in 4-component vector of float) 0:18 Branch: Break 0:21 switch: DontFlatten 0:21 condition 0:21 'c' ( in int) 0:21 body 0:21 Sequence 0:22 case: with expression 0:22 Constant: 0:22 1 (const int) 0:? Sequence 0:23 Pre-Increment ( temp 4-component vector of float) 0:23 'input' ( in 4-component vector of float) 0:24 Branch: Break 0:25 case: with expression 0:25 Constant: 0:25 2 (const int) 0:? Sequence 0:26 switch 0:26 condition 0:26 'd' ( in int) 0:26 body 0:26 Sequence 0:27 case: with expression 0:27 Constant: 0:27 2 (const int) 0:? Sequence 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'input' ( in 4-component vector of float) 0:28 Constant: 0:28 2.000000 0:29 Branch: Break 0:30 case: with expression 0:30 Constant: 0:30 3 (const int) 0:? Sequence 0:31 add second child into first child ( temp 4-component vector of float) 0:31 'input' ( in 4-component vector of float) 0:31 Constant: 0:31 3.000000 0:32 Branch: Break 0:34 Branch: Break 0:35 default: 0:? Sequence 0:36 add second child into first child ( temp 4-component vector of float) 0:36 'input' ( in 4-component vector of float) 0:36 Constant: 0:36 4.000000 0:39 switch 0:39 condition 0:39 'c' ( in int) 0:39 body 0:39 Sequence 0:40 case: with expression 0:40 Constant: 0:40 1 (const int) 0:39 Sequence 0:39 Branch: Break 0:43 switch 0:43 condition 0:43 'c' ( in int) 0:43 body 0:43 Sequence 0:44 case: with expression 0:44 Constant: 0:44 1 (const int) 0:45 case: with expression 0:45 Constant: 0:45 2 (const int) 0:46 case: with expression 0:46 Constant: 0:46 3 (const int) 0:? Sequence 0:47 Pre-Increment ( temp 4-component vector of float) 0:47 'input' ( in 4-component vector of float) 0:48 Branch: Break 0:49 case: with expression 0:49 Constant: 0:49 4 (const int) 0:50 case: with expression 0:50 Constant: 0:50 5 (const int) 0:? Sequence 0:51 Pre-Decrement ( temp 4-component vector of float) 0:51 'input' ( in 4-component vector of float) 0:54 Branch: Return with expression 0:54 'input' ( in 4-component vector of float) 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp int) 0:? 'c' ( temp int) 0:? 'c' (layout( location=1) flat in int) 0:2 move second child to first child ( temp int) 0:? 'd' ( temp int) 0:? 'd' (layout( location=2) flat in int) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'c' ( temp int) 0:? 'd' ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:? 'c' (layout( location=1) flat in int) 0:? 'd' (layout( location=2) flat in int) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:2 'c' ( in int) 0:2 'd' ( in int) 0:? Sequence 0:3 'c' ( in int) 0:7 switch 0:7 condition 0:7 'c' ( in int) 0:7 body 0:7 Sequence 0:9 default: 0:7 Sequence 0:7 Branch: Break 0:12 switch 0:12 condition 0:12 'c' ( in int) 0:12 body 0:12 Sequence 0:13 case: with expression 0:13 Constant: 0:13 1 (const int) 0:? Sequence 0:14 Pre-Increment ( temp 4-component vector of float) 0:14 'input' ( in 4-component vector of float) 0:15 Branch: Break 0:16 case: with expression 0:16 Constant: 0:16 2 (const int) 0:? Sequence 0:17 Pre-Decrement ( temp 4-component vector of float) 0:17 'input' ( in 4-component vector of float) 0:18 Branch: Break 0:21 switch: DontFlatten 0:21 condition 0:21 'c' ( in int) 0:21 body 0:21 Sequence 0:22 case: with expression 0:22 Constant: 0:22 1 (const int) 0:? Sequence 0:23 Pre-Increment ( temp 4-component vector of float) 0:23 'input' ( in 4-component vector of float) 0:24 Branch: Break 0:25 case: with expression 0:25 Constant: 0:25 2 (const int) 0:? Sequence 0:26 switch 0:26 condition 0:26 'd' ( in int) 0:26 body 0:26 Sequence 0:27 case: with expression 0:27 Constant: 0:27 2 (const int) 0:? Sequence 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'input' ( in 4-component vector of float) 0:28 Constant: 0:28 2.000000 0:29 Branch: Break 0:30 case: with expression 0:30 Constant: 0:30 3 (const int) 0:? Sequence 0:31 add second child into first child ( temp 4-component vector of float) 0:31 'input' ( in 4-component vector of float) 0:31 Constant: 0:31 3.000000 0:32 Branch: Break 0:34 Branch: Break 0:35 default: 0:? Sequence 0:36 add second child into first child ( temp 4-component vector of float) 0:36 'input' ( in 4-component vector of float) 0:36 Constant: 0:36 4.000000 0:39 switch 0:39 condition 0:39 'c' ( in int) 0:39 body 0:39 Sequence 0:40 case: with expression 0:40 Constant: 0:40 1 (const int) 0:39 Sequence 0:39 Branch: Break 0:43 switch 0:43 condition 0:43 'c' ( in int) 0:43 body 0:43 Sequence 0:44 case: with expression 0:44 Constant: 0:44 1 (const int) 0:45 case: with expression 0:45 Constant: 0:45 2 (const int) 0:46 case: with expression 0:46 Constant: 0:46 3 (const int) 0:? Sequence 0:47 Pre-Increment ( temp 4-component vector of float) 0:47 'input' ( in 4-component vector of float) 0:48 Branch: Break 0:49 case: with expression 0:49 Constant: 0:49 4 (const int) 0:50 case: with expression 0:50 Constant: 0:50 5 (const int) 0:? Sequence 0:51 Pre-Decrement ( temp 4-component vector of float) 0:51 'input' ( in 4-component vector of float) 0:54 Branch: Return with expression 0:54 'input' ( in 4-component vector of float) 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp int) 0:? 'c' ( temp int) 0:? 'c' (layout( location=1) flat in int) 0:2 move second child to first child ( temp int) 0:? 'd' ( temp int) 0:? 'd' (layout( location=2) flat in int) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'c' ( temp int) 0:? 'd' ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:? 'c' (layout( location=1) flat in int) 0:? 'd' (layout( location=2) flat in int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 106 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 88 92 95 98 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 15 "@PixelShaderFunction(vf4;i1;i1;" Name 12 "input" Name 13 "c" Name 14 "d" Name 86 "input" Name 88 "input" Name 90 "c" Name 92 "c" Name 94 "d" Name 95 "d" Name 98 "@entryPointOutput" Name 99 "param" Name 101 "param" Name 103 "param" Decorate 88(input) Location 0 Decorate 92(c) Flat Decorate 92(c) Location 1 Decorate 95(d) Flat Decorate 95(d) Location 2 Decorate 98(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeInt 32 1 10: TypePointer Function 9(int) 11: TypeFunction 7(fvec4) 8(ptr) 10(ptr) 10(ptr) 27: 6(float) Constant 1065353216 49: 6(float) Constant 1073741824 54: 6(float) Constant 1077936128 61: 6(float) Constant 1082130432 87: TypePointer Input 7(fvec4) 88(input): 87(ptr) Variable Input 91: TypePointer Input 9(int) 92(c): 91(ptr) Variable Input 95(d): 91(ptr) Variable Input 97: TypePointer Output 7(fvec4) 98(@entryPointOutput): 97(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 86(input): 8(ptr) Variable Function 90(c): 10(ptr) Variable Function 94(d): 10(ptr) Variable Function 99(param): 8(ptr) Variable Function 101(param): 10(ptr) Variable Function 103(param): 10(ptr) Variable Function 89: 7(fvec4) Load 88(input) Store 86(input) 89 93: 9(int) Load 92(c) Store 90(c) 93 96: 9(int) Load 95(d) Store 94(d) 96 100: 7(fvec4) Load 86(input) Store 99(param) 100 102: 9(int) Load 90(c) Store 101(param) 102 104: 9(int) Load 94(d) Store 103(param) 104 105: 7(fvec4) FunctionCall 15(@PixelShaderFunction(vf4;i1;i1;) 99(param) 101(param) 103(param) Store 98(@entryPointOutput) 105 Return FunctionEnd 15(@PixelShaderFunction(vf4;i1;i1;): 7(fvec4) Function None 11 12(input): 8(ptr) FunctionParameter 13(c): 10(ptr) FunctionParameter 14(d): 10(ptr) FunctionParameter 16: Label 17: 9(int) Load 13(c) SelectionMerge 19 None Switch 17 18 18: Label Branch 19 19: Label 22: 9(int) Load 13(c) SelectionMerge 25 None Switch 22 25 case 1: 23 case 2: 24 23: Label 26: 7(fvec4) Load 12(input) 28: 7(fvec4) CompositeConstruct 27 27 27 27 29: 7(fvec4) FAdd 26 28 Store 12(input) 29 Branch 25 24: Label 31: 7(fvec4) Load 12(input) 32: 7(fvec4) CompositeConstruct 27 27 27 27 33: 7(fvec4) FSub 31 32 Store 12(input) 33 Branch 25 25: Label 36: 9(int) Load 13(c) SelectionMerge 40 DontFlatten Switch 36 39 case 1: 37 case 2: 38 39: Label 62: 7(fvec4) Load 12(input) 63: 7(fvec4) CompositeConstruct 61 61 61 61 64: 7(fvec4) FAdd 62 63 Store 12(input) 64 Branch 40 37: Label 41: 7(fvec4) Load 12(input) 42: 7(fvec4) CompositeConstruct 27 27 27 27 43: 7(fvec4) FAdd 41 42 Store 12(input) 43 Branch 40 38: Label 45: 9(int) Load 14(d) SelectionMerge 48 None Switch 45 48 case 2: 46 case 3: 47 46: Label 50: 7(fvec4) Load 12(input) 51: 7(fvec4) CompositeConstruct 49 49 49 49 52: 7(fvec4) FAdd 50 51 Store 12(input) 52 Branch 48 47: Label 55: 7(fvec4) Load 12(input) 56: 7(fvec4) CompositeConstruct 54 54 54 54 57: 7(fvec4) FAdd 55 56 Store 12(input) 57 Branch 48 48: Label Branch 40 40: Label 66: 9(int) Load 13(c) SelectionMerge 68 None Switch 66 68 case 1: 67 67: Label Branch 68 68: Label 71: 9(int) Load 13(c) SelectionMerge 74 None Switch 71 74 case 1: 72 case 2: 72 case 3: 72 case 4: 73 case 5: 73 72: Label 75: 7(fvec4) Load 12(input) 76: 7(fvec4) CompositeConstruct 27 27 27 27 77: 7(fvec4) FAdd 75 76 Store 12(input) 77 Branch 74 73: Label 79: 7(fvec4) Load 12(input) 80: 7(fvec4) CompositeConstruct 27 27 27 27 81: 7(fvec4) FSub 79 80 Store 12(input) 81 Branch 74 74: Label 83: 7(fvec4) Load 12(input) ReturnValue 83 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.swizzle.frag.out000066400000000000000000000114211506534232700225650ustar00rootroot00000000000000hlsl.swizzle.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 4-component vector of float) 0:1 'AmbientColor' ( global 4-component vector of float) 0:1 Constant: 0:1 1.000000 0:1 0.500000 0:1 0.000000 0:1 1.000000 0:4 Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' ( in 4-component vector of float) 0:? Sequence 0:5 Branch: Return with expression 0:5 component-wise multiply ( temp 4-component vector of float) 0:5 vector swizzle ( temp 4-component vector of float) 0:5 'input' ( in 4-component vector of float) 0:5 Sequence 0:5 Constant: 0:5 3 (const int) 0:5 Constant: 0:5 3 (const int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 0 (const int) 0:5 Construct vec4 ( temp 4-component vector of float) 0:5 direct index ( temp float) 0:5 'AmbientColor' ( global 4-component vector of float) 0:5 Constant: 0:5 2 (const int) 0:? Linker Objects 0:? 'AmbientColor' ( global 4-component vector of float) Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 4-component vector of float) 0:1 'AmbientColor' ( global 4-component vector of float) 0:1 Constant: 0:1 1.000000 0:1 0.500000 0:1 0.000000 0:1 1.000000 0:4 Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' ( in 4-component vector of float) 0:? Sequence 0:5 Branch: Return with expression 0:5 component-wise multiply ( temp 4-component vector of float) 0:5 vector swizzle ( temp 4-component vector of float) 0:5 'input' ( in 4-component vector of float) 0:5 Sequence 0:5 Constant: 0:5 3 (const int) 0:5 Constant: 0:5 3 (const int) 0:5 Constant: 0:5 1 (const int) 0:5 Constant: 0:5 0 (const int) 0:5 Construct vec4 ( temp 4-component vector of float) 0:5 direct index ( temp float) 0:5 'AmbientColor' ( global 4-component vector of float) 0:5 Constant: 0:5 2 (const int) 0:? Linker Objects 0:? 'AmbientColor' ( global 4-component vector of float) // 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 Fragment 4 "PixelShaderFunction" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "ShaderFunction(vf4;" Name 10 "input" Name 14 "AmbientColor" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) 13: TypePointer Private 7(fvec4) 14(AmbientColor): 13(ptr) Variable Private 15: 6(float) Constant 1065353216 16: 6(float) Constant 1056964608 17: 6(float) Constant 0 18: 7(fvec4) ConstantComposite 15 16 17 15 21: TypeInt 32 0 22: 21(int) Constant 2 23: TypePointer Private 6(float) 4(PixelShaderFunction): 2 Function None 3 5: Label Store 14(AmbientColor) 18 Return FunctionEnd 11(ShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label 19: 7(fvec4) Load 10(input) 20: 7(fvec4) VectorShuffle 19 19 3 3 1 0 24: 23(ptr) AccessChain 14(AmbientColor) 22 25: 6(float) Load 24 26: 7(fvec4) CompositeConstruct 25 25 25 25 27: 7(fvec4) FMul 20 26 ReturnValue 27 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.swizzle.vec1.comp.out000066400000000000000000000045501506534232700234460ustar00rootroot00000000000000hlsl.swizzle.vec1.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:2 Function Definition: @main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 'f1' ( temp 1-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0.500000 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 Function Call: @main( ( temp void) 0:? Linker Objects Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence 0:2 Function Definition: @main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:4 move second child to first child ( temp float) 0:4 direct index ( temp float) 0:4 'f1' ( temp 1-component vector of float) 0:4 Constant: 0:4 0 (const int) 0:4 Constant: 0:4 0.500000 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 Function Call: @main( ( temp void) 0:? Linker Objects // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 13 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 "f1" 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypePointer Function 8(float) 11: 8(float) Constant 1056964608 4(main): 2 Function None 3 5: Label 12: 2 FunctionCall 6(@main() Return FunctionEnd 6(@main(): 2 Function None 3 7: Label 10(f1): 9(ptr) Variable Function Store 10(f1) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.synthesizeInput.frag.out000066400000000000000000000200411506534232700243010ustar00rootroot00000000000000hlsl.synthesizeInput.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct vec4 ( temp 4-component vector of float) 0:8 Convert uint to float ( temp float) 0:8 no_interp: direct index for structure ( temp uint) 0:8 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:8 Constant: 0:8 1 (const int) 0:8 interp: direct index for structure ( temp float) 0:8 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0.000000 0:8 Constant: 0:8 1.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 interp: direct index for structure ( temp float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Constant: 0:7 0 (const int) 0:? 'input.interp' (layout( location=0) in float) 0:7 move second child to first child ( temp uint) 0:7 no_interp: direct index for structure ( temp uint) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Constant: 0:7 1 (const int) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input.interp' (layout( location=0) in float) 0:? 'input.no_interp' (layout( location=1) flat in uint) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float) 0:7 Function Parameters: 0:7 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct vec4 ( temp 4-component vector of float) 0:8 Convert uint to float ( temp float) 0:8 no_interp: direct index for structure ( temp uint) 0:8 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:8 Constant: 0:8 1 (const int) 0:8 interp: direct index for structure ( temp float) 0:8 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 0.000000 0:8 Constant: 0:8 1.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 interp: direct index for structure ( temp float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Constant: 0:7 0 (const int) 0:? 'input.interp' (layout( location=0) in float) 0:7 move second child to first child ( temp uint) 0:7 no_interp: direct index for structure ( temp uint) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Constant: 0:7 1 (const int) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input.interp' (layout( location=0) in float) 0:? 'input.no_interp' (layout( location=1) flat in uint) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 32 36 40 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PSInput" MemberName 8(PSInput) 0 "interp" MemberName 8(PSInput) 1 "no_interp" Name 13 "@main(struct-PSInput-f1-u11;" Name 12 "input" Name 30 "input" Name 32 "input.interp" Name 36 "input.no_interp" Name 40 "@entryPointOutput" Name 41 "param" Decorate 32(input.interp) Location 0 Decorate 36(input.no_interp) Flat Decorate 36(input.no_interp) Location 1 Decorate 40(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8(PSInput): TypeStruct 6(float) 7(int) 9: TypePointer Function 8(PSInput) 10: TypeVector 6(float) 4 11: TypeFunction 10(fvec4) 9(ptr) 15: TypeInt 32 1 16: 15(int) Constant 1 17: TypePointer Function 7(int) 21: 15(int) Constant 0 22: TypePointer Function 6(float) 25: 6(float) Constant 0 26: 6(float) Constant 1065353216 31: TypePointer Input 6(float) 32(input.interp): 31(ptr) Variable Input 35: TypePointer Input 7(int) 36(input.no_interp): 35(ptr) Variable Input 39: TypePointer Output 10(fvec4) 40(@entryPointOutput): 39(ptr) Variable Output 4(main): 2 Function None 3 5: Label 30(input): 9(ptr) Variable Function 41(param): 9(ptr) Variable Function 33: 6(float) Load 32(input.interp) 34: 22(ptr) AccessChain 30(input) 21 Store 34 33 37: 7(int) Load 36(input.no_interp) 38: 17(ptr) AccessChain 30(input) 16 Store 38 37 42: 8(PSInput) Load 30(input) Store 41(param) 42 43: 10(fvec4) FunctionCall 13(@main(struct-PSInput-f1-u11;) 41(param) Store 40(@entryPointOutput) 43 Return FunctionEnd 13(@main(struct-PSInput-f1-u11;): 10(fvec4) Function None 11 12(input): 9(ptr) FunctionParameter 14: Label 18: 17(ptr) AccessChain 12(input) 16 19: 7(int) Load 18 20: 6(float) ConvertUToF 19 23: 22(ptr) AccessChain 12(input) 21 24: 6(float) Load 23 27: 10(fvec4) CompositeConstruct 20 24 25 26 ReturnValue 27 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.target.frag.out000066400000000000000000000232051506534232700223470ustar00rootroot00000000000000hlsl.target.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void) 0:7 Function Parameters: 0:7 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:7 'out1' ( out 4-component vector of float) 0:7 'out2' ( out 4-component vector of float) 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'out1' ( 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 4-component vector of float) 0:9 'out2' ( out 4-component vector of float) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 interp: direct index for structure ( temp float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Constant: 0:7 0 (const int) 0:? 'input.interp' (layout( location=0) in float) 0:7 move second child to first child ( temp uint) 0:7 no_interp: direct index for structure ( temp uint) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Constant: 0:7 1 (const int) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:7 Function Call: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'out1' ( temp 4-component vector of float) 0:? 'out2' ( temp 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out1' ( temp 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'out2' (layout( location=3) out 4-component vector of float) 0:? 'out2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'input.interp' (layout( location=0) in float) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out2' (layout( location=3) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:7 Function Definition: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void) 0:7 Function Parameters: 0:7 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:7 'out1' ( out 4-component vector of float) 0:7 'out2' ( out 4-component vector of float) 0:? Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'out1' ( 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 4-component vector of float) 0:9 'out2' ( out 4-component vector of float) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 interp: direct index for structure ( temp float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Constant: 0:7 0 (const int) 0:? 'input.interp' (layout( location=0) in float) 0:7 move second child to first child ( temp uint) 0:7 no_interp: direct index for structure ( temp uint) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Constant: 0:7 1 (const int) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:7 Function Call: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'out1' ( temp 4-component vector of float) 0:? 'out2' ( temp 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out1' ( temp 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float) 0:? 'out2' (layout( location=3) out 4-component vector of float) 0:? 'out2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'input.interp' (layout( location=0) in float) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out2' (layout( location=3) out 4-component vector of float) // Module Version 10000 // 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" 26 32 46 48 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PSInput" MemberName 8(PSInput) 0 "interp" MemberName 8(PSInput) 1 "no_interp" Name 16 "@main(struct-PSInput-f1-u11;vf4;vf4;" Name 13 "input" Name 14 "out1" Name 15 "out2" Name 22 "input" Name 26 "input.interp" Name 32 "input.no_interp" Name 36 "out1" Name 37 "out2" Name 38 "param" Name 40 "param" Name 41 "param" Name 46 "out1" Name 48 "out2" Decorate 26(input.interp) Location 0 Decorate 32(input.no_interp) Flat Decorate 32(input.no_interp) Location 1 Decorate 46(out1) Location 1 Decorate 48(out2) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8(PSInput): TypeStruct 6(float) 7(int) 9: TypePointer Function 8(PSInput) 10: TypeVector 6(float) 4 11: TypePointer Function 10(fvec4) 12: TypeFunction 2 9(ptr) 11(ptr) 11(ptr) 18: 6(float) Constant 1065353216 19: 10(fvec4) ConstantComposite 18 18 18 18 20: 6(float) Constant 0 21: 10(fvec4) ConstantComposite 20 20 20 20 23: TypeInt 32 1 24: 23(int) Constant 0 25: TypePointer Input 6(float) 26(input.interp): 25(ptr) Variable Input 28: TypePointer Function 6(float) 30: 23(int) Constant 1 31: TypePointer Input 7(int) 32(input.no_interp): 31(ptr) Variable Input 34: TypePointer Function 7(int) 45: TypePointer Output 10(fvec4) 46(out1): 45(ptr) Variable Output 48(out2): 45(ptr) Variable Output 4(main): 2 Function None 3 5: Label 22(input): 9(ptr) Variable Function 36(out1): 11(ptr) Variable Function 37(out2): 11(ptr) Variable Function 38(param): 9(ptr) Variable Function 40(param): 11(ptr) Variable Function 41(param): 11(ptr) Variable Function 27: 6(float) Load 26(input.interp) 29: 28(ptr) AccessChain 22(input) 24 Store 29 27 33: 7(int) Load 32(input.no_interp) 35: 34(ptr) AccessChain 22(input) 30 Store 35 33 39: 8(PSInput) Load 22(input) Store 38(param) 39 42: 2 FunctionCall 16(@main(struct-PSInput-f1-u11;vf4;vf4;) 38(param) 40(param) 41(param) 43: 10(fvec4) Load 40(param) Store 36(out1) 43 44: 10(fvec4) Load 41(param) Store 37(out2) 44 47: 10(fvec4) Load 36(out1) Store 46(out1) 47 49: 10(fvec4) Load 37(out2) Store 48(out2) 49 Return FunctionEnd 16(@main(struct-PSInput-f1-u11;vf4;vf4;): 2 Function None 12 13(input): 9(ptr) FunctionParameter 14(out1): 11(ptr) FunctionParameter 15(out2): 11(ptr) FunctionParameter 17: Label Store 14(out1) 19 Store 15(out2) 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.targetStruct1.frag.out000066400000000000000000000366741506534232700236530ustar00rootroot00000000000000hlsl.targetStruct1.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Parameters: 0:12 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:12 'po' ( out 4-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 o1: direct index for structure ( temp 4-component vector of float) 0:14 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:14 Constant: 0:14 0 (const int) 0:14 Construct vec4 ( temp 4-component vector of float) 0:14 Convert uint to float ( temp float) 0:14 no_interp: direct index for structure ( temp uint) 0:14 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:14 Constant: 0:14 1 (const int) 0:14 interp: direct index for structure ( temp float) 0:14 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0.000000 0:14 Constant: 0:14 1.000000 0:15 move second child to first child ( temp 4-component vector of float) 0:15 o2: direct index for structure ( temp 4-component vector of float) 0:15 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'po' ( out 4-component vector of float) 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:18 Branch: Return with expression 0:18 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 interp: direct index for structure ( temp float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Constant: 0:12 0 (const int) 0:? 'input.interp' (layout( location=0) in float) 0:12 move second child to first child ( temp uint) 0:12 no_interp: direct index for structure ( temp uint) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Constant: 0:12 1 (const int) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:12 Sequence 0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Call: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'po' ( temp 4-component vector of float) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float) 0:12 o1: direct index for structure ( temp 4-component vector of float) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.o2' (layout( location=1) out 4-component vector of float) 0:12 o2: direct index for structure ( temp 4-component vector of float) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:? 'po' (layout( location=0) out 4-component vector of float) 0:? 'po' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float) 0:? '@entryPointOutput.o2' (layout( location=1) out 4-component vector of float) 0:? 'input.interp' (layout( location=0) in float) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:? 'po' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Parameters: 0:12 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:12 'po' ( out 4-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 o1: direct index for structure ( temp 4-component vector of float) 0:14 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:14 Constant: 0:14 0 (const int) 0:14 Construct vec4 ( temp 4-component vector of float) 0:14 Convert uint to float ( temp float) 0:14 no_interp: direct index for structure ( temp uint) 0:14 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:14 Constant: 0:14 1 (const int) 0:14 interp: direct index for structure ( temp float) 0:14 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0.000000 0:14 Constant: 0:14 1.000000 0:15 move second child to first child ( temp 4-component vector of float) 0:15 o2: direct index for structure ( temp 4-component vector of float) 0:15 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'po' ( out 4-component vector of float) 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:18 Branch: Return with expression 0:18 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 interp: direct index for structure ( temp float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Constant: 0:12 0 (const int) 0:? 'input.interp' (layout( location=0) in float) 0:12 move second child to first child ( temp uint) 0:12 no_interp: direct index for structure ( temp uint) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Constant: 0:12 1 (const int) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:12 Sequence 0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Call: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'po' ( temp 4-component vector of float) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float) 0:12 o1: direct index for structure ( temp 4-component vector of float) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.o2' (layout( location=1) out 4-component vector of float) 0:12 o2: direct index for structure ( temp 4-component vector of float) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:? 'po' (layout( location=0) out 4-component vector of float) 0:? 'po' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float) 0:? '@entryPointOutput.o2' (layout( location=1) out 4-component vector of float) 0:? 'input.interp' (layout( location=0) in float) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:? 'po' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 42 46 57 60 63 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PSInput" MemberName 8(PSInput) 0 "interp" MemberName 8(PSInput) 1 "no_interp" Name 12 "PSOutput" MemberName 12(PSOutput) 0 "o1" MemberName 12(PSOutput) 1 "o2" Name 16 "@main(struct-PSInput-f1-u11;vf4;" Name 14 "input" Name 15 "po" Name 19 "pso" Name 40 "input" Name 42 "input.interp" Name 46 "input.no_interp" Name 49 "flattenTemp" Name 50 "po" Name 51 "param" Name 53 "param" Name 57 "@entryPointOutput.o1" Name 60 "@entryPointOutput.o2" Name 63 "po" Decorate 42(input.interp) Location 0 Decorate 46(input.no_interp) Flat Decorate 46(input.no_interp) Location 1 Decorate 57(@entryPointOutput.o1) Location 2 Decorate 60(@entryPointOutput.o2) Location 1 Decorate 63(po) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8(PSInput): TypeStruct 6(float) 7(int) 9: TypePointer Function 8(PSInput) 10: TypeVector 6(float) 4 11: TypePointer Function 10(fvec4) 12(PSOutput): TypeStruct 10(fvec4) 10(fvec4) 13: TypeFunction 12(PSOutput) 9(ptr) 11(ptr) 18: TypePointer Function 12(PSOutput) 20: TypeInt 32 1 21: 20(int) Constant 0 22: 20(int) Constant 1 23: TypePointer Function 7(int) 27: TypePointer Function 6(float) 30: 6(float) Constant 0 31: 6(float) Constant 1065353216 34: 10(fvec4) ConstantComposite 31 31 31 31 36: 10(fvec4) ConstantComposite 30 30 30 30 41: TypePointer Input 6(float) 42(input.interp): 41(ptr) Variable Input 45: TypePointer Input 7(int) 46(input.no_interp): 45(ptr) Variable Input 56: TypePointer Output 10(fvec4) 57(@entryPointOutput.o1): 56(ptr) Variable Output 60(@entryPointOutput.o2): 56(ptr) Variable Output 63(po): 56(ptr) Variable Output 4(main): 2 Function None 3 5: Label 40(input): 9(ptr) Variable Function 49(flattenTemp): 18(ptr) Variable Function 50(po): 11(ptr) Variable Function 51(param): 9(ptr) Variable Function 53(param): 11(ptr) Variable Function 43: 6(float) Load 42(input.interp) 44: 27(ptr) AccessChain 40(input) 21 Store 44 43 47: 7(int) Load 46(input.no_interp) 48: 23(ptr) AccessChain 40(input) 22 Store 48 47 52: 8(PSInput) Load 40(input) Store 51(param) 52 54:12(PSOutput) FunctionCall 16(@main(struct-PSInput-f1-u11;vf4;) 51(param) 53(param) 55: 10(fvec4) Load 53(param) Store 50(po) 55 Store 49(flattenTemp) 54 58: 11(ptr) AccessChain 49(flattenTemp) 21 59: 10(fvec4) Load 58 Store 57(@entryPointOutput.o1) 59 61: 11(ptr) AccessChain 49(flattenTemp) 22 62: 10(fvec4) Load 61 Store 60(@entryPointOutput.o2) 62 64: 10(fvec4) Load 50(po) Store 63(po) 64 Return FunctionEnd 16(@main(struct-PSInput-f1-u11;vf4;):12(PSOutput) Function None 13 14(input): 9(ptr) FunctionParameter 15(po): 11(ptr) FunctionParameter 17: Label 19(pso): 18(ptr) Variable Function 24: 23(ptr) AccessChain 14(input) 22 25: 7(int) Load 24 26: 6(float) ConvertUToF 25 28: 27(ptr) AccessChain 14(input) 21 29: 6(float) Load 28 32: 10(fvec4) CompositeConstruct 26 29 30 31 33: 11(ptr) AccessChain 19(pso) 21 Store 33 32 35: 11(ptr) AccessChain 19(pso) 22 Store 35 34 Store 15(po) 36 37:12(PSOutput) Load 19(pso) ReturnValue 37 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.targetStruct2.frag.out000066400000000000000000000366741506534232700236540ustar00rootroot00000000000000hlsl.targetStruct2.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Parameters: 0:12 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:12 'po' ( out 4-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 o1: direct index for structure ( temp 4-component vector of float) 0:14 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:14 Constant: 0:14 0 (const int) 0:14 Construct vec4 ( temp 4-component vector of float) 0:14 Convert uint to float ( temp float) 0:14 no_interp: direct index for structure ( temp uint) 0:14 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:14 Constant: 0:14 1 (const int) 0:14 interp: direct index for structure ( temp float) 0:14 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0.000000 0:14 Constant: 0:14 1.000000 0:15 move second child to first child ( temp 4-component vector of float) 0:15 o2: direct index for structure ( temp 4-component vector of float) 0:15 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'po' ( out 4-component vector of float) 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:18 Branch: Return with expression 0:18 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 interp: direct index for structure ( temp float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Constant: 0:12 0 (const int) 0:? 'input.interp' (layout( location=0) in float) 0:12 move second child to first child ( temp uint) 0:12 no_interp: direct index for structure ( temp uint) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Constant: 0:12 1 (const int) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:12 Sequence 0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Call: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'po' ( temp 4-component vector of float) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float) 0:12 o1: direct index for structure ( temp 4-component vector of float) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.o2' (layout( location=3) out 4-component vector of float) 0:12 o2: direct index for structure ( temp 4-component vector of float) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:? 'po' (layout( location=0) out 4-component vector of float) 0:? 'po' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float) 0:? '@entryPointOutput.o2' (layout( location=3) out 4-component vector of float) 0:? 'input.interp' (layout( location=0) in float) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:? 'po' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Parameters: 0:12 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:12 'po' ( out 4-component vector of float) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 o1: direct index for structure ( temp 4-component vector of float) 0:14 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:14 Constant: 0:14 0 (const int) 0:14 Construct vec4 ( temp 4-component vector of float) 0:14 Convert uint to float ( temp float) 0:14 no_interp: direct index for structure ( temp uint) 0:14 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:14 Constant: 0:14 1 (const int) 0:14 interp: direct index for structure ( temp float) 0:14 'input' ( in structure{ temp float interp, temp uint no_interp}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0.000000 0:14 Constant: 0:14 1.000000 0:15 move second child to first child ( temp 4-component vector of float) 0:15 o2: direct index for structure ( temp 4-component vector of float) 0:15 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:15 1.000000 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'po' ( out 4-component vector of float) 0:16 Constant: 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:16 0.000000 0:18 Branch: Return with expression 0:18 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Definition: main( ( temp void) 0:12 Function Parameters: 0:? Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 interp: direct index for structure ( temp float) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Constant: 0:12 0 (const int) 0:? 'input.interp' (layout( location=0) in float) 0:12 move second child to first child ( temp uint) 0:12 no_interp: direct index for structure ( temp uint) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Constant: 0:12 1 (const int) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:12 Sequence 0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Function Call: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'po' ( temp 4-component vector of float) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float) 0:12 o1: direct index for structure ( temp 4-component vector of float) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Constant: 0:12 0 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.o2' (layout( location=3) out 4-component vector of float) 0:12 o2: direct index for structure ( temp 4-component vector of float) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 Constant: 0:12 1 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:? 'po' (layout( location=0) out 4-component vector of float) 0:? 'po' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float) 0:? '@entryPointOutput.o2' (layout( location=3) out 4-component vector of float) 0:? 'input.interp' (layout( location=0) in float) 0:? 'input.no_interp' (layout( location=1) flat in uint) 0:? 'po' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 42 46 57 60 63 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PSInput" MemberName 8(PSInput) 0 "interp" MemberName 8(PSInput) 1 "no_interp" Name 12 "PSOutput" MemberName 12(PSOutput) 0 "o1" MemberName 12(PSOutput) 1 "o2" Name 16 "@main(struct-PSInput-f1-u11;vf4;" Name 14 "input" Name 15 "po" Name 19 "pso" Name 40 "input" Name 42 "input.interp" Name 46 "input.no_interp" Name 49 "flattenTemp" Name 50 "po" Name 51 "param" Name 53 "param" Name 57 "@entryPointOutput.o1" Name 60 "@entryPointOutput.o2" Name 63 "po" Decorate 42(input.interp) Location 0 Decorate 46(input.no_interp) Flat Decorate 46(input.no_interp) Location 1 Decorate 57(@entryPointOutput.o1) Location 2 Decorate 60(@entryPointOutput.o2) Location 3 Decorate 63(po) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8(PSInput): TypeStruct 6(float) 7(int) 9: TypePointer Function 8(PSInput) 10: TypeVector 6(float) 4 11: TypePointer Function 10(fvec4) 12(PSOutput): TypeStruct 10(fvec4) 10(fvec4) 13: TypeFunction 12(PSOutput) 9(ptr) 11(ptr) 18: TypePointer Function 12(PSOutput) 20: TypeInt 32 1 21: 20(int) Constant 0 22: 20(int) Constant 1 23: TypePointer Function 7(int) 27: TypePointer Function 6(float) 30: 6(float) Constant 0 31: 6(float) Constant 1065353216 34: 10(fvec4) ConstantComposite 31 31 31 31 36: 10(fvec4) ConstantComposite 30 30 30 30 41: TypePointer Input 6(float) 42(input.interp): 41(ptr) Variable Input 45: TypePointer Input 7(int) 46(input.no_interp): 45(ptr) Variable Input 56: TypePointer Output 10(fvec4) 57(@entryPointOutput.o1): 56(ptr) Variable Output 60(@entryPointOutput.o2): 56(ptr) Variable Output 63(po): 56(ptr) Variable Output 4(main): 2 Function None 3 5: Label 40(input): 9(ptr) Variable Function 49(flattenTemp): 18(ptr) Variable Function 50(po): 11(ptr) Variable Function 51(param): 9(ptr) Variable Function 53(param): 11(ptr) Variable Function 43: 6(float) Load 42(input.interp) 44: 27(ptr) AccessChain 40(input) 21 Store 44 43 47: 7(int) Load 46(input.no_interp) 48: 23(ptr) AccessChain 40(input) 22 Store 48 47 52: 8(PSInput) Load 40(input) Store 51(param) 52 54:12(PSOutput) FunctionCall 16(@main(struct-PSInput-f1-u11;vf4;) 51(param) 53(param) 55: 10(fvec4) Load 53(param) Store 50(po) 55 Store 49(flattenTemp) 54 58: 11(ptr) AccessChain 49(flattenTemp) 21 59: 10(fvec4) Load 58 Store 57(@entryPointOutput.o1) 59 61: 11(ptr) AccessChain 49(flattenTemp) 22 62: 10(fvec4) Load 61 Store 60(@entryPointOutput.o2) 62 64: 10(fvec4) Load 50(po) Store 63(po) 64 Return FunctionEnd 16(@main(struct-PSInput-f1-u11;vf4;):12(PSOutput) Function None 13 14(input): 9(ptr) FunctionParameter 15(po): 11(ptr) FunctionParameter 17: Label 19(pso): 18(ptr) Variable Function 24: 23(ptr) AccessChain 14(input) 22 25: 7(int) Load 24 26: 6(float) ConvertUToF 25 28: 27(ptr) AccessChain 14(input) 21 29: 6(float) Load 28 32: 10(fvec4) CompositeConstruct 26 29 30 31 33: 11(ptr) AccessChain 19(pso) 21 Store 33 32 35: 11(ptr) AccessChain 19(pso) 22 Store 35 34 Store 15(po) 36 37:12(PSOutput) Load 19(pso) ReturnValue 37 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.templatetypes.frag.out000066400000000000000000000705541506534232700237720ustar00rootroot00000000000000hlsl.templatetypes.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @PixelShaderFunction( ( temp float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:4 'r00' ( temp 4-component vector of float) 0:4 Constant: 0:4 1.000000 0:4 2.000000 0:4 3.000000 0:4 4.000000 0:5 Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'r01' ( temp 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 3.000000 0:5 4.000000 0:5 5.000000 0:7 Sequence 0:7 move second child to first child ( temp 1-component vector of bool) 0:7 'r12' ( temp 1-component vector of bool) 0:7 Constant: 0:7 false (const bool) 0:8 Sequence 0:8 move second child to first child ( temp 1-component vector of int) 0:8 'r13' ( temp 1-component vector of int) 0:8 Constant: 0:8 1 (const int) 0:9 Sequence 0:9 move second child to first child ( temp 1-component vector of float) 0:9 'r14' ( temp 1-component vector of float) 0:9 Constant: 0:9 1.000000 0:10 Sequence 0:10 move second child to first child ( temp 1-component vector of double) 0:10 'r15' ( temp 1-component vector of double) 0:10 Constant: 0:10 1.000000 0:11 Sequence 0:11 move second child to first child ( temp 1-component vector of uint) 0:11 'r16' ( temp 1-component vector of uint) 0:11 Constant: 0:11 1 (const uint) 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of bool) 0:13 'r20' ( temp 2-component vector of bool) 0:13 Constant: 0:13 false (const bool) 0:13 true (const bool) 0:14 Sequence 0:14 move second child to first child ( temp 2-component vector of int) 0:14 'r21' ( temp 2-component vector of int) 0:14 Constant: 0:14 1 (const int) 0:14 2 (const int) 0:15 Sequence 0:15 move second child to first child ( temp 2-component vector of float) 0:15 'r22' ( temp 2-component vector of float) 0:15 Constant: 0:15 1.000000 0:15 2.000000 0:16 Sequence 0:16 move second child to first child ( temp 2-component vector of double) 0:16 'r23' ( temp 2-component vector of double) 0:16 Constant: 0:16 1.000000 0:16 2.000000 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of uint) 0:17 'r24' ( temp 2-component vector of uint) 0:17 Constant: 0:17 1 (const uint) 0:17 2 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 3-component vector of bool) 0:19 'r30' ( temp 3-component vector of bool) 0:19 Constant: 0:19 false (const bool) 0:19 true (const bool) 0:19 true (const bool) 0:20 Sequence 0:20 move second child to first child ( temp 3-component vector of int) 0:20 'r31' ( temp 3-component vector of int) 0:20 Constant: 0:20 1 (const int) 0:20 2 (const int) 0:20 3 (const int) 0:21 Sequence 0:21 move second child to first child ( temp 3-component vector of float) 0:21 'r32' ( temp 3-component vector of float) 0:21 Constant: 0:21 1.000000 0:21 2.000000 0:21 3.000000 0:22 Sequence 0:22 move second child to first child ( temp 3-component vector of double) 0:22 'r33' ( temp 3-component vector of double) 0:22 Constant: 0:22 1.000000 0:22 2.000000 0:22 3.000000 0:23 Sequence 0:23 move second child to first child ( temp 3-component vector of uint) 0:23 'r34' ( temp 3-component vector of uint) 0:23 Constant: 0:23 1 (const uint) 0:23 2 (const uint) 0:23 3 (const uint) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of bool) 0:25 'r40' ( temp 4-component vector of bool) 0:25 Constant: 0:25 false (const bool) 0:25 true (const bool) 0:25 true (const bool) 0:25 false (const bool) 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of int) 0:26 'r41' ( temp 4-component vector of int) 0:26 Constant: 0:26 1 (const int) 0:26 2 (const int) 0:26 3 (const int) 0:26 4 (const int) 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'r42' ( temp 4-component vector of float) 0:27 Constant: 0:27 1.000000 0:27 2.000000 0:27 3.000000 0:27 4.000000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of double) 0:28 'r43' ( temp 4-component vector of double) 0:28 Constant: 0:28 1.000000 0:28 2.000000 0:28 3.000000 0:28 4.000000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'r44' ( temp 4-component vector of uint) 0:29 Constant: 0:29 1 (const uint) 0:29 2 (const uint) 0:29 3 (const uint) 0:29 4 (const uint) 0:31 Sequence 0:31 move second child to first child ( temp 4X4 matrix of float) 0:31 'r50' ( temp 4X4 matrix of float) 0:31 Constant: 0:31 0.000000 0:31 1.000000 0:31 2.000000 0:31 3.000000 0:31 4.000000 0:31 5.000000 0:31 6.000000 0:31 7.000000 0:31 8.000000 0:31 9.000000 0:31 10.000000 0:31 11.000000 0:31 12.000000 0:31 13.000000 0:31 14.000000 0:31 15.000000 0:32 Sequence 0:32 move second child to first child ( temp 4X4 matrix of float) 0:32 'r51' ( temp 4X4 matrix of float) 0:32 Constant: 0:32 0.000000 0:32 1.000000 0:32 2.000000 0:32 3.000000 0:32 4.000000 0:32 5.000000 0:32 6.000000 0:32 7.000000 0:32 8.000000 0:32 9.000000 0:32 10.000000 0:32 11.000000 0:32 12.000000 0:32 13.000000 0:32 14.000000 0:32 15.000000 0:35 Sequence 0:35 move second child to first child ( temp 2X3 matrix of float) 0:35 'r61' ( temp 2X3 matrix of float) 0:35 Constant: 0:35 1.000000 0:35 2.000000 0:35 3.000000 0:35 4.000000 0:35 5.000000 0:35 6.000000 0:36 Sequence 0:36 move second child to first child ( temp 3X2 matrix of float) 0:36 'r62' ( temp 3X2 matrix of float) 0:36 Constant: 0:36 1.000000 0:36 2.000000 0:36 3.000000 0:36 4.000000 0:36 5.000000 0:36 6.000000 0:39 Sequence 0:39 move second child to first child ( temp 4X2 matrix of float) 0:39 'r65' ( temp 4X2 matrix of float) 0:39 Constant: 0:39 1.000000 0:39 2.000000 0:39 3.000000 0:39 4.000000 0:39 5.000000 0:39 6.000000 0:39 7.000000 0:39 8.000000 0:40 Sequence 0:40 move second child to first child ( temp 4X3 matrix of float) 0:40 'r66' ( temp 4X3 matrix of float) 0:40 Constant: 0:40 1.000000 0:40 2.000000 0:40 3.000000 0:40 4.000000 0:40 5.000000 0:40 6.000000 0:40 7.000000 0:40 8.000000 0:40 9.000000 0:40 10.000000 0:40 11.000000 0:40 12.000000 0:45 Branch: Return with expression 0:45 Constant: 0:45 0.000000 0:3 Function Definition: PixelShaderFunction( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:3 Function Call: @PixelShaderFunction( ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @PixelShaderFunction( ( temp float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp 4-component vector of float) 0:4 'r00' ( temp 4-component vector of float) 0:4 Constant: 0:4 1.000000 0:4 2.000000 0:4 3.000000 0:4 4.000000 0:5 Sequence 0:5 move second child to first child ( temp 4-component vector of float) 0:5 'r01' ( temp 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 3.000000 0:5 4.000000 0:5 5.000000 0:7 Sequence 0:7 move second child to first child ( temp 1-component vector of bool) 0:7 'r12' ( temp 1-component vector of bool) 0:7 Constant: 0:7 false (const bool) 0:8 Sequence 0:8 move second child to first child ( temp 1-component vector of int) 0:8 'r13' ( temp 1-component vector of int) 0:8 Constant: 0:8 1 (const int) 0:9 Sequence 0:9 move second child to first child ( temp 1-component vector of float) 0:9 'r14' ( temp 1-component vector of float) 0:9 Constant: 0:9 1.000000 0:10 Sequence 0:10 move second child to first child ( temp 1-component vector of double) 0:10 'r15' ( temp 1-component vector of double) 0:10 Constant: 0:10 1.000000 0:11 Sequence 0:11 move second child to first child ( temp 1-component vector of uint) 0:11 'r16' ( temp 1-component vector of uint) 0:11 Constant: 0:11 1 (const uint) 0:13 Sequence 0:13 move second child to first child ( temp 2-component vector of bool) 0:13 'r20' ( temp 2-component vector of bool) 0:13 Constant: 0:13 false (const bool) 0:13 true (const bool) 0:14 Sequence 0:14 move second child to first child ( temp 2-component vector of int) 0:14 'r21' ( temp 2-component vector of int) 0:14 Constant: 0:14 1 (const int) 0:14 2 (const int) 0:15 Sequence 0:15 move second child to first child ( temp 2-component vector of float) 0:15 'r22' ( temp 2-component vector of float) 0:15 Constant: 0:15 1.000000 0:15 2.000000 0:16 Sequence 0:16 move second child to first child ( temp 2-component vector of double) 0:16 'r23' ( temp 2-component vector of double) 0:16 Constant: 0:16 1.000000 0:16 2.000000 0:17 Sequence 0:17 move second child to first child ( temp 2-component vector of uint) 0:17 'r24' ( temp 2-component vector of uint) 0:17 Constant: 0:17 1 (const uint) 0:17 2 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp 3-component vector of bool) 0:19 'r30' ( temp 3-component vector of bool) 0:19 Constant: 0:19 false (const bool) 0:19 true (const bool) 0:19 true (const bool) 0:20 Sequence 0:20 move second child to first child ( temp 3-component vector of int) 0:20 'r31' ( temp 3-component vector of int) 0:20 Constant: 0:20 1 (const int) 0:20 2 (const int) 0:20 3 (const int) 0:21 Sequence 0:21 move second child to first child ( temp 3-component vector of float) 0:21 'r32' ( temp 3-component vector of float) 0:21 Constant: 0:21 1.000000 0:21 2.000000 0:21 3.000000 0:22 Sequence 0:22 move second child to first child ( temp 3-component vector of double) 0:22 'r33' ( temp 3-component vector of double) 0:22 Constant: 0:22 1.000000 0:22 2.000000 0:22 3.000000 0:23 Sequence 0:23 move second child to first child ( temp 3-component vector of uint) 0:23 'r34' ( temp 3-component vector of uint) 0:23 Constant: 0:23 1 (const uint) 0:23 2 (const uint) 0:23 3 (const uint) 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of bool) 0:25 'r40' ( temp 4-component vector of bool) 0:25 Constant: 0:25 false (const bool) 0:25 true (const bool) 0:25 true (const bool) 0:25 false (const bool) 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of int) 0:26 'r41' ( temp 4-component vector of int) 0:26 Constant: 0:26 1 (const int) 0:26 2 (const int) 0:26 3 (const int) 0:26 4 (const int) 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'r42' ( temp 4-component vector of float) 0:27 Constant: 0:27 1.000000 0:27 2.000000 0:27 3.000000 0:27 4.000000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of double) 0:28 'r43' ( temp 4-component vector of double) 0:28 Constant: 0:28 1.000000 0:28 2.000000 0:28 3.000000 0:28 4.000000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'r44' ( temp 4-component vector of uint) 0:29 Constant: 0:29 1 (const uint) 0:29 2 (const uint) 0:29 3 (const uint) 0:29 4 (const uint) 0:31 Sequence 0:31 move second child to first child ( temp 4X4 matrix of float) 0:31 'r50' ( temp 4X4 matrix of float) 0:31 Constant: 0:31 0.000000 0:31 1.000000 0:31 2.000000 0:31 3.000000 0:31 4.000000 0:31 5.000000 0:31 6.000000 0:31 7.000000 0:31 8.000000 0:31 9.000000 0:31 10.000000 0:31 11.000000 0:31 12.000000 0:31 13.000000 0:31 14.000000 0:31 15.000000 0:32 Sequence 0:32 move second child to first child ( temp 4X4 matrix of float) 0:32 'r51' ( temp 4X4 matrix of float) 0:32 Constant: 0:32 0.000000 0:32 1.000000 0:32 2.000000 0:32 3.000000 0:32 4.000000 0:32 5.000000 0:32 6.000000 0:32 7.000000 0:32 8.000000 0:32 9.000000 0:32 10.000000 0:32 11.000000 0:32 12.000000 0:32 13.000000 0:32 14.000000 0:32 15.000000 0:35 Sequence 0:35 move second child to first child ( temp 2X3 matrix of float) 0:35 'r61' ( temp 2X3 matrix of float) 0:35 Constant: 0:35 1.000000 0:35 2.000000 0:35 3.000000 0:35 4.000000 0:35 5.000000 0:35 6.000000 0:36 Sequence 0:36 move second child to first child ( temp 3X2 matrix of float) 0:36 'r62' ( temp 3X2 matrix of float) 0:36 Constant: 0:36 1.000000 0:36 2.000000 0:36 3.000000 0:36 4.000000 0:36 5.000000 0:36 6.000000 0:39 Sequence 0:39 move second child to first child ( temp 4X2 matrix of float) 0:39 'r65' ( temp 4X2 matrix of float) 0:39 Constant: 0:39 1.000000 0:39 2.000000 0:39 3.000000 0:39 4.000000 0:39 5.000000 0:39 6.000000 0:39 7.000000 0:39 8.000000 0:40 Sequence 0:40 move second child to first child ( temp 4X3 matrix of float) 0:40 'r66' ( temp 4X3 matrix of float) 0:40 Constant: 0:40 1.000000 0:40 2.000000 0:40 3.000000 0:40 4.000000 0:40 5.000000 0:40 6.000000 0:40 7.000000 0:40 8.000000 0:40 9.000000 0:40 10.000000 0:40 11.000000 0:40 12.000000 0:45 Branch: Return with expression 0:45 Constant: 0:45 0.000000 0:3 Function Definition: PixelShaderFunction( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:3 Function Call: @PixelShaderFunction( ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 153 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 151 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 8 "@PixelShaderFunction(" Name 12 "r00" Name 18 "r01" Name 23 "r12" Name 27 "r13" Name 30 "r14" Name 33 "r15" Name 37 "r16" Name 41 "r20" Name 46 "r21" Name 51 "r22" Name 55 "r23" Name 60 "r24" Name 65 "r30" Name 69 "r31" Name 74 "r32" Name 78 "r33" Name 83 "r34" Name 88 "r40" Name 92 "r41" Name 95 "r42" Name 98 "r43" Name 103 "r44" Name 108 "r50" Name 125 "r51" Name 128 "r61" Name 133 "r62" Name 139 "r65" Name 144 "r66" Name 151 "@entryPointOutput" Decorate 151(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypeVector 6(float) 4 11: TypePointer Function 10(fvec4) 13: 6(float) Constant 1065353216 14: 6(float) Constant 1073741824 15: 6(float) Constant 1077936128 16: 6(float) Constant 1082130432 17: 10(fvec4) ConstantComposite 13 14 15 16 19: 6(float) Constant 1084227584 20: 10(fvec4) ConstantComposite 14 15 16 19 21: TypeBool 22: TypePointer Function 21(bool) 24: 21(bool) ConstantFalse 25: TypeInt 32 1 26: TypePointer Function 25(int) 28: 25(int) Constant 1 29: TypePointer Function 6(float) 31: TypeFloat 64 32: TypePointer Function 31(float64_t) 34:31(float64_t) Constant 0 1072693248 35: TypeInt 32 0 36: TypePointer Function 35(int) 38: 35(int) Constant 1 39: TypeVector 21(bool) 2 40: TypePointer Function 39(bvec2) 42: 21(bool) ConstantTrue 43: 39(bvec2) ConstantComposite 24 42 44: TypeVector 25(int) 2 45: TypePointer Function 44(ivec2) 47: 25(int) Constant 2 48: 44(ivec2) ConstantComposite 28 47 49: TypeVector 6(float) 2 50: TypePointer Function 49(fvec2) 52: 49(fvec2) ConstantComposite 13 14 53: TypeVector 31(float64_t) 2 54: TypePointer Function 53(f64vec2) 56:31(float64_t) Constant 0 1073741824 57: 53(f64vec2) ConstantComposite 34 56 58: TypeVector 35(int) 2 59: TypePointer Function 58(ivec2) 61: 35(int) Constant 2 62: 58(ivec2) ConstantComposite 38 61 63: TypeVector 21(bool) 3 64: TypePointer Function 63(bvec3) 66: 63(bvec3) ConstantComposite 24 42 42 67: TypeVector 25(int) 3 68: TypePointer Function 67(ivec3) 70: 25(int) Constant 3 71: 67(ivec3) ConstantComposite 28 47 70 72: TypeVector 6(float) 3 73: TypePointer Function 72(fvec3) 75: 72(fvec3) ConstantComposite 13 14 15 76: TypeVector 31(float64_t) 3 77: TypePointer Function 76(f64vec3) 79:31(float64_t) Constant 0 1074266112 80: 76(f64vec3) ConstantComposite 34 56 79 81: TypeVector 35(int) 3 82: TypePointer Function 81(ivec3) 84: 35(int) Constant 3 85: 81(ivec3) ConstantComposite 38 61 84 86: TypeVector 21(bool) 4 87: TypePointer Function 86(bvec4) 89: 86(bvec4) ConstantComposite 24 42 42 24 90: TypeVector 25(int) 4 91: TypePointer Function 90(ivec4) 93: 25(int) Constant 4 94: 90(ivec4) ConstantComposite 28 47 70 93 96: TypeVector 31(float64_t) 4 97: TypePointer Function 96(f64vec4) 99:31(float64_t) Constant 0 1074790400 100: 96(f64vec4) ConstantComposite 34 56 79 99 101: TypeVector 35(int) 4 102: TypePointer Function 101(ivec4) 104: 35(int) Constant 4 105: 101(ivec4) ConstantComposite 38 61 84 104 106: TypeMatrix 10(fvec4) 4 107: TypePointer Function 106 109: 6(float) Constant 0 110: 10(fvec4) ConstantComposite 109 13 14 15 111: 6(float) Constant 1086324736 112: 6(float) Constant 1088421888 113: 10(fvec4) ConstantComposite 16 19 111 112 114: 6(float) Constant 1090519040 115: 6(float) Constant 1091567616 116: 6(float) Constant 1092616192 117: 6(float) Constant 1093664768 118: 10(fvec4) ConstantComposite 114 115 116 117 119: 6(float) Constant 1094713344 120: 6(float) Constant 1095761920 121: 6(float) Constant 1096810496 122: 6(float) Constant 1097859072 123: 10(fvec4) ConstantComposite 119 120 121 122 124: 106 ConstantComposite 110 113 118 123 126: TypeMatrix 72(fvec3) 2 127: TypePointer Function 126 129: 72(fvec3) ConstantComposite 16 19 111 130: 126 ConstantComposite 75 129 131: TypeMatrix 49(fvec2) 3 132: TypePointer Function 131 134: 49(fvec2) ConstantComposite 15 16 135: 49(fvec2) ConstantComposite 19 111 136: 131 ConstantComposite 52 134 135 137: TypeMatrix 49(fvec2) 4 138: TypePointer Function 137 140: 49(fvec2) ConstantComposite 112 114 141: 137 ConstantComposite 52 134 135 140 142: TypeMatrix 72(fvec3) 4 143: TypePointer Function 142 145: 72(fvec3) ConstantComposite 112 114 115 146: 72(fvec3) ConstantComposite 116 117 119 147: 142 ConstantComposite 75 129 145 146 150: TypePointer Output 6(float) 151(@entryPointOutput): 150(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 152: 6(float) FunctionCall 8(@PixelShaderFunction() Store 151(@entryPointOutput) 152 Return FunctionEnd 8(@PixelShaderFunction(): 6(float) Function None 7 9: Label 12(r00): 11(ptr) Variable Function 18(r01): 11(ptr) Variable Function 23(r12): 22(ptr) Variable Function 27(r13): 26(ptr) Variable Function 30(r14): 29(ptr) Variable Function 33(r15): 32(ptr) Variable Function 37(r16): 36(ptr) Variable Function 41(r20): 40(ptr) Variable Function 46(r21): 45(ptr) Variable Function 51(r22): 50(ptr) Variable Function 55(r23): 54(ptr) Variable Function 60(r24): 59(ptr) Variable Function 65(r30): 64(ptr) Variable Function 69(r31): 68(ptr) Variable Function 74(r32): 73(ptr) Variable Function 78(r33): 77(ptr) Variable Function 83(r34): 82(ptr) Variable Function 88(r40): 87(ptr) Variable Function 92(r41): 91(ptr) Variable Function 95(r42): 11(ptr) Variable Function 98(r43): 97(ptr) Variable Function 103(r44): 102(ptr) Variable Function 108(r50): 107(ptr) Variable Function 125(r51): 107(ptr) Variable Function 128(r61): 127(ptr) Variable Function 133(r62): 132(ptr) Variable Function 139(r65): 138(ptr) Variable Function 144(r66): 143(ptr) Variable Function Store 12(r00) 17 Store 18(r01) 20 Store 23(r12) 24 Store 27(r13) 28 Store 30(r14) 13 Store 33(r15) 34 Store 37(r16) 38 Store 41(r20) 43 Store 46(r21) 48 Store 51(r22) 52 Store 55(r23) 57 Store 60(r24) 62 Store 65(r30) 66 Store 69(r31) 71 Store 74(r32) 75 Store 78(r33) 80 Store 83(r34) 85 Store 88(r40) 89 Store 92(r41) 94 Store 95(r42) 17 Store 98(r43) 100 Store 103(r44) 105 Store 108(r50) 124 Store 125(r51) 124 Store 128(r61) 130 Store 133(r62) 136 Store 139(r65) 141 Store 144(r66) 147 ReturnValue 109 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.texture.struct.frag.out000066400000000000000000002001501506534232700241000ustar00rootroot00000000000000hlsl.texture.struct.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:38 Function Definition: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Function Parameters: 0:38 't1' ( in texture2D) 0:? Sequence 0:38 Branch: Return with expression 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:38 Construct combined texture-sampler ( temp sampler2D) 0:38 't1' ( in texture2D) 0:38 'g_sSamp' ( uniform sampler) 0:38 Constant: 0:38 0.600000 0:38 0.610000 0:38 move second child to first child ( temp float) 0:38 c0: direct index for structure ( temp float) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Constant: 0:38 0 (const uint) 0:38 direct index ( temp float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:38 Constant: 0:38 0 (const uint) 0:38 move second child to first child ( temp float) 0:38 direct index ( temp float) 0:38 c1: direct index for structure ( temp 2-component vector of float) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Constant: 0:38 1 (const uint) 0:38 Constant: 0:38 0 (const int) 0:38 direct index ( temp float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:38 Constant: 0:38 1 (const uint) 0:38 move second child to first child ( temp float) 0:38 direct index ( temp float) 0:38 c1: direct index for structure ( temp 2-component vector of float) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Constant: 0:38 1 (const uint) 0:38 Constant: 0:38 1 (const int) 0:38 direct index ( temp float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:38 Constant: 0:38 2 (const uint) 0:38 move second child to first child ( temp float) 0:38 c2: direct index for structure ( temp float) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Constant: 0:38 2 (const uint) 0:38 direct index ( temp float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:38 Constant: 0:38 3 (const uint) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:39 Function Definition: fn1(t2-tx-struct1-1; ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Function Parameters: 0:39 't2' ( in texture2D) 0:? Sequence 0:39 Branch: Return with expression 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler2D) 0:39 't2' ( in texture2D) 0:39 'g_sSamp' ( uniform sampler) 0:39 Constant: 0:39 0.600000 0:39 0.610000 0:39 move second child to first child ( temp float) 0:39 c0: direct index for structure ( temp float) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:39 Constant: 0:39 0 (const uint) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 c1: direct index for structure ( temp 3-component vector of float) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( temp float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:39 Constant: 0:39 1 (const uint) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 c1: direct index for structure ( temp 3-component vector of float) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 1 (const int) 0:39 direct index ( temp float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:39 Constant: 0:39 2 (const uint) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 c1: direct index for structure ( temp 3-component vector of float) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 2 (const int) 0:39 direct index ( temp float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:39 Constant: 0:39 3 (const uint) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:42 Function Definition: @main( ( temp 4-component vector of float) 0:42 Function Parameters: 0:? Sequence 0:43 Sequence 0:43 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 's1' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:43 Construct combined texture-sampler ( temp sampler2D) 0:43 'g_tTex2s1' ( uniform texture2D) 0:43 'g_sSamp' ( uniform sampler) 0:43 Constant: 0:43 0.100000 0:43 0.110000 0:43 move second child to first child ( temp float) 0:43 c0: direct index for structure ( temp float) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Constant: 0:43 0 (const uint) 0:43 direct index ( temp float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:43 Constant: 0:43 0 (const uint) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 c1: direct index for structure ( temp 2-component vector of float) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Constant: 0:43 1 (const uint) 0:43 Constant: 0:43 0 (const int) 0:43 direct index ( temp float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:43 Constant: 0:43 1 (const uint) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 c1: direct index for structure ( temp 2-component vector of float) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Constant: 0:43 1 (const uint) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:43 Constant: 0:43 2 (const uint) 0:43 move second child to first child ( temp float) 0:43 c2: direct index for structure ( temp float) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Constant: 0:43 2 (const uint) 0:43 direct index ( temp float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:43 Constant: 0:43 3 (const uint) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:44 Sequence 0:44 move second child to first child ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 's2' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:44 Construct combined texture-sampler ( temp sampler2D) 0:44 'g_tTex2s2' ( uniform texture2D) 0:44 'g_sSamp' ( uniform sampler) 0:44 Constant: 0:44 0.200000 0:44 0.210000 0:44 move second child to first child ( temp float) 0:44 c0: direct index for structure ( temp float) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:44 Constant: 0:44 0 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 c1: direct index for structure ( temp 3-component vector of float) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Constant: 0:44 1 (const uint) 0:44 Constant: 0:44 0 (const int) 0:44 direct index ( temp float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:44 Constant: 0:44 1 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 c1: direct index for structure ( temp 3-component vector of float) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Constant: 0:44 1 (const uint) 0:44 Constant: 0:44 1 (const int) 0:44 direct index ( temp float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:44 Constant: 0:44 2 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 c1: direct index for structure ( temp 3-component vector of float) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Constant: 0:44 1 (const uint) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:44 Constant: 0:44 3 (const uint) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:45 Sequence 0:45 move second child to first child ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 's3' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:45 Construct combined texture-sampler ( temp sampler2D) 0:45 'g_tTex2s3' ( uniform texture2D) 0:45 'g_sSamp' ( uniform sampler) 0:45 Constant: 0:45 0.300000 0:45 0.310000 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 c0: direct index for structure ( temp 2-component vector of float) 0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 Constant: 0:45 0 (const uint) 0:45 Constant: 0:45 0 (const int) 0:45 direct index ( temp float) 0:45 '@sampleResultShadow' ( temp 4-component vector of float) 0:45 Constant: 0:45 0 (const uint) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 c0: direct index for structure ( temp 2-component vector of float) 0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 Constant: 0:45 0 (const uint) 0:45 Constant: 0:45 1 (const int) 0:45 direct index ( temp float) 0:45 '@sampleResultShadow' ( temp 4-component vector of float) 0:45 Constant: 0:45 1 (const uint) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 c1: direct index for structure ( temp 1-component vector of float) 0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 Constant: 0:45 1 (const uint) 0:45 Constant: 0:45 0 (const int) 0:45 direct index ( temp float) 0:45 '@sampleResultShadow' ( temp 4-component vector of float) 0:45 Constant: 0:45 2 (const uint) 0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:46 Sequence 0:46 move second child to first child ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 's4' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:? texture ( temp 4-component vector of int) 0:46 Construct combined texture-sampler ( temp isampler2D) 0:46 'g_tTex2s4' ( uniform itexture2D) 0:46 'g_sSamp' ( uniform sampler) 0:46 Constant: 0:46 0.400000 0:46 0.410000 0:46 move second child to first child ( temp int) 0:46 c0: direct index for structure ( temp int) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:46 Constant: 0:46 0 (const uint) 0:46 move second child to first child ( temp float) 0:46 direct index ( temp float) 0:46 c1: direct index for structure ( temp 2-component vector of int) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Constant: 0:46 1 (const uint) 0:46 Constant: 0:46 0 (const int) 0:46 Convert int to float ( temp float) 0:46 direct index ( temp int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:46 Constant: 0:46 1 (const uint) 0:46 move second child to first child ( temp float) 0:46 direct index ( temp float) 0:46 c1: direct index for structure ( temp 2-component vector of int) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Constant: 0:46 1 (const uint) 0:46 Constant: 0:46 1 (const int) 0:46 Convert int to float ( temp float) 0:46 direct index ( temp int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:46 Constant: 0:46 2 (const uint) 0:46 move second child to first child ( temp int) 0:46 c2: direct index for structure ( temp int) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Constant: 0:46 2 (const uint) 0:46 direct index ( temp int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:46 Constant: 0:46 3 (const uint) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:47 Sequence 0:47 move second child to first child ( temp structure{ temp uint c0, temp uint c1}) 0:47 's5' ( temp structure{ temp uint c0, temp uint c1}) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 '@sampleResultShadow' ( temp 4-component vector of uint) 0:? texture ( temp 4-component vector of uint) 0:47 Construct combined texture-sampler ( temp usampler2D) 0:47 'g_tTex2s5' ( uniform utexture2D) 0:47 'g_sSamp' ( uniform sampler) 0:47 Constant: 0:47 0.500000 0:47 0.510000 0:47 move second child to first child ( temp uint) 0:47 c0: direct index for structure ( temp uint) 0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 '@sampleResultShadow' ( temp 4-component vector of uint) 0:47 Constant: 0:47 0 (const uint) 0:47 move second child to first child ( temp uint) 0:47 c1: direct index for structure ( temp uint) 0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1}) 0:47 Constant: 0:47 1 (const uint) 0:47 direct index ( temp uint) 0:47 '@sampleResultShadow' ( temp 4-component vector of uint) 0:47 Constant: 0:47 1 (const uint) 0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1}) 0:49 Sequence 0:49 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:49 'r0' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:49 Function Call: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:49 'g_tTex2s1' ( uniform texture2D) 0:50 Sequence 0:50 move second child to first child ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:50 'r1' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:50 Function Call: fn1(t2-tx-struct1-1; ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:50 'g_tTex2s2' ( uniform texture2D) 0:51 Sequence 0:51 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:51 'r2' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:51 Function Call: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:51 'g_tTex2s1a' ( uniform texture2D) 0:53 Branch: Return with expression 0:53 Constant: 0:53 0.000000 0:53 0.000000 0:53 0.000000 0:53 0.000000 0:42 Function Definition: main( ( temp void) 0:42 Function Parameters: 0:? Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:42 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_sSamp' ( uniform sampler) 0:? 'g_tTex2s1' ( uniform texture2D) 0:? 'g_tTex2s2' ( uniform texture2D) 0:? 'g_tTex2s3' ( uniform texture2D) 0:? 'g_tTex2s4' ( uniform itexture2D) 0:? 'g_tTex2s5' ( uniform utexture2D) 0:? 'g_tTex2s1a' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:38 Function Definition: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Function Parameters: 0:38 't1' ( in texture2D) 0:? Sequence 0:38 Branch: Return with expression 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:38 Construct combined texture-sampler ( temp sampler2D) 0:38 't1' ( in texture2D) 0:38 'g_sSamp' ( uniform sampler) 0:38 Constant: 0:38 0.600000 0:38 0.610000 0:38 move second child to first child ( temp float) 0:38 c0: direct index for structure ( temp float) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Constant: 0:38 0 (const uint) 0:38 direct index ( temp float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:38 Constant: 0:38 0 (const uint) 0:38 move second child to first child ( temp float) 0:38 direct index ( temp float) 0:38 c1: direct index for structure ( temp 2-component vector of float) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Constant: 0:38 1 (const uint) 0:38 Constant: 0:38 0 (const int) 0:38 direct index ( temp float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:38 Constant: 0:38 1 (const uint) 0:38 move second child to first child ( temp float) 0:38 direct index ( temp float) 0:38 c1: direct index for structure ( temp 2-component vector of float) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Constant: 0:38 1 (const uint) 0:38 Constant: 0:38 1 (const int) 0:38 direct index ( temp float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:38 Constant: 0:38 2 (const uint) 0:38 move second child to first child ( temp float) 0:38 c2: direct index for structure ( temp float) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:38 Constant: 0:38 2 (const uint) 0:38 direct index ( temp float) 0:38 '@sampleResultShadow' ( temp 4-component vector of float) 0:38 Constant: 0:38 3 (const uint) 0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:39 Function Definition: fn1(t2-tx-struct1-1; ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Function Parameters: 0:39 't2' ( in texture2D) 0:? Sequence 0:39 Branch: Return with expression 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:39 Construct combined texture-sampler ( temp sampler2D) 0:39 't2' ( in texture2D) 0:39 'g_sSamp' ( uniform sampler) 0:39 Constant: 0:39 0.600000 0:39 0.610000 0:39 move second child to first child ( temp float) 0:39 c0: direct index for structure ( temp float) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:39 Constant: 0:39 0 (const uint) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 c1: direct index for structure ( temp 3-component vector of float) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 0 (const int) 0:39 direct index ( temp float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:39 Constant: 0:39 1 (const uint) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 c1: direct index for structure ( temp 3-component vector of float) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 1 (const int) 0:39 direct index ( temp float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:39 Constant: 0:39 2 (const uint) 0:39 move second child to first child ( temp float) 0:39 direct index ( temp float) 0:39 c1: direct index for structure ( temp 3-component vector of float) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:39 Constant: 0:39 1 (const uint) 0:39 Constant: 0:39 2 (const int) 0:39 direct index ( temp float) 0:39 '@sampleResultShadow' ( temp 4-component vector of float) 0:39 Constant: 0:39 3 (const uint) 0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:42 Function Definition: @main( ( temp 4-component vector of float) 0:42 Function Parameters: 0:? Sequence 0:43 Sequence 0:43 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 's1' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:43 Construct combined texture-sampler ( temp sampler2D) 0:43 'g_tTex2s1' ( uniform texture2D) 0:43 'g_sSamp' ( uniform sampler) 0:43 Constant: 0:43 0.100000 0:43 0.110000 0:43 move second child to first child ( temp float) 0:43 c0: direct index for structure ( temp float) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Constant: 0:43 0 (const uint) 0:43 direct index ( temp float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:43 Constant: 0:43 0 (const uint) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 c1: direct index for structure ( temp 2-component vector of float) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Constant: 0:43 1 (const uint) 0:43 Constant: 0:43 0 (const int) 0:43 direct index ( temp float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:43 Constant: 0:43 1 (const uint) 0:43 move second child to first child ( temp float) 0:43 direct index ( temp float) 0:43 c1: direct index for structure ( temp 2-component vector of float) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Constant: 0:43 1 (const uint) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:43 Constant: 0:43 2 (const uint) 0:43 move second child to first child ( temp float) 0:43 c2: direct index for structure ( temp float) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:43 Constant: 0:43 2 (const uint) 0:43 direct index ( temp float) 0:43 '@sampleResultShadow' ( temp 4-component vector of float) 0:43 Constant: 0:43 3 (const uint) 0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:44 Sequence 0:44 move second child to first child ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 's2' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:44 Construct combined texture-sampler ( temp sampler2D) 0:44 'g_tTex2s2' ( uniform texture2D) 0:44 'g_sSamp' ( uniform sampler) 0:44 Constant: 0:44 0.200000 0:44 0.210000 0:44 move second child to first child ( temp float) 0:44 c0: direct index for structure ( temp float) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:44 Constant: 0:44 0 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 c1: direct index for structure ( temp 3-component vector of float) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Constant: 0:44 1 (const uint) 0:44 Constant: 0:44 0 (const int) 0:44 direct index ( temp float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:44 Constant: 0:44 1 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 c1: direct index for structure ( temp 3-component vector of float) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Constant: 0:44 1 (const uint) 0:44 Constant: 0:44 1 (const int) 0:44 direct index ( temp float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:44 Constant: 0:44 2 (const uint) 0:44 move second child to first child ( temp float) 0:44 direct index ( temp float) 0:44 c1: direct index for structure ( temp 3-component vector of float) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:44 Constant: 0:44 1 (const uint) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 '@sampleResultShadow' ( temp 4-component vector of float) 0:44 Constant: 0:44 3 (const uint) 0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:45 Sequence 0:45 move second child to first child ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 's3' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:45 '@sampleResultShadow' ( temp 4-component vector of float) 0:? texture ( temp 4-component vector of float) 0:45 Construct combined texture-sampler ( temp sampler2D) 0:45 'g_tTex2s3' ( uniform texture2D) 0:45 'g_sSamp' ( uniform sampler) 0:45 Constant: 0:45 0.300000 0:45 0.310000 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 c0: direct index for structure ( temp 2-component vector of float) 0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 Constant: 0:45 0 (const uint) 0:45 Constant: 0:45 0 (const int) 0:45 direct index ( temp float) 0:45 '@sampleResultShadow' ( temp 4-component vector of float) 0:45 Constant: 0:45 0 (const uint) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 c0: direct index for structure ( temp 2-component vector of float) 0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 Constant: 0:45 0 (const uint) 0:45 Constant: 0:45 1 (const int) 0:45 direct index ( temp float) 0:45 '@sampleResultShadow' ( temp 4-component vector of float) 0:45 Constant: 0:45 1 (const uint) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 c1: direct index for structure ( temp 1-component vector of float) 0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:45 Constant: 0:45 1 (const uint) 0:45 Constant: 0:45 0 (const int) 0:45 direct index ( temp float) 0:45 '@sampleResultShadow' ( temp 4-component vector of float) 0:45 Constant: 0:45 2 (const uint) 0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1}) 0:46 Sequence 0:46 move second child to first child ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 's4' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Sequence 0:46 move second child to first child ( temp 4-component vector of int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:? texture ( temp 4-component vector of int) 0:46 Construct combined texture-sampler ( temp isampler2D) 0:46 'g_tTex2s4' ( uniform itexture2D) 0:46 'g_sSamp' ( uniform sampler) 0:46 Constant: 0:46 0.400000 0:46 0.410000 0:46 move second child to first child ( temp int) 0:46 c0: direct index for structure ( temp int) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:46 Constant: 0:46 0 (const uint) 0:46 move second child to first child ( temp float) 0:46 direct index ( temp float) 0:46 c1: direct index for structure ( temp 2-component vector of int) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Constant: 0:46 1 (const uint) 0:46 Constant: 0:46 0 (const int) 0:46 Convert int to float ( temp float) 0:46 direct index ( temp int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:46 Constant: 0:46 1 (const uint) 0:46 move second child to first child ( temp float) 0:46 direct index ( temp float) 0:46 c1: direct index for structure ( temp 2-component vector of int) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Constant: 0:46 1 (const uint) 0:46 Constant: 0:46 1 (const int) 0:46 Convert int to float ( temp float) 0:46 direct index ( temp int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:46 Constant: 0:46 2 (const uint) 0:46 move second child to first child ( temp int) 0:46 c2: direct index for structure ( temp int) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:46 Constant: 0:46 2 (const uint) 0:46 direct index ( temp int) 0:46 '@sampleResultShadow' ( temp 4-component vector of int) 0:46 Constant: 0:46 3 (const uint) 0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2}) 0:47 Sequence 0:47 move second child to first child ( temp structure{ temp uint c0, temp uint c1}) 0:47 's5' ( temp structure{ temp uint c0, temp uint c1}) 0:47 Sequence 0:47 move second child to first child ( temp 4-component vector of uint) 0:47 '@sampleResultShadow' ( temp 4-component vector of uint) 0:? texture ( temp 4-component vector of uint) 0:47 Construct combined texture-sampler ( temp usampler2D) 0:47 'g_tTex2s5' ( uniform utexture2D) 0:47 'g_sSamp' ( uniform sampler) 0:47 Constant: 0:47 0.500000 0:47 0.510000 0:47 move second child to first child ( temp uint) 0:47 c0: direct index for structure ( temp uint) 0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 '@sampleResultShadow' ( temp 4-component vector of uint) 0:47 Constant: 0:47 0 (const uint) 0:47 move second child to first child ( temp uint) 0:47 c1: direct index for structure ( temp uint) 0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1}) 0:47 Constant: 0:47 1 (const uint) 0:47 direct index ( temp uint) 0:47 '@sampleResultShadow' ( temp 4-component vector of uint) 0:47 Constant: 0:47 1 (const uint) 0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1}) 0:49 Sequence 0:49 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:49 'r0' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:49 Function Call: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:49 'g_tTex2s1' ( uniform texture2D) 0:50 Sequence 0:50 move second child to first child ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:50 'r1' ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:50 Function Call: fn1(t2-tx-struct1-1; ( temp structure{ temp float c0, temp 3-component vector of float c1}) 0:50 'g_tTex2s2' ( uniform texture2D) 0:51 Sequence 0:51 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:51 'r2' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:51 Function Call: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2}) 0:51 'g_tTex2s1a' ( uniform texture2D) 0:53 Branch: Return with expression 0:53 Constant: 0:53 0.000000 0:53 0.000000 0:53 0.000000 0:53 0.000000 0:42 Function Definition: main( ( temp void) 0:42 Function Parameters: 0:? Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:42 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_sSamp' ( uniform sampler) 0:? 'g_tTex2s1' ( uniform texture2D) 0:? 'g_tTex2s2' ( uniform texture2D) 0:? 'g_tTex2s3' ( uniform texture2D) 0:? 'g_tTex2s4' ( uniform itexture2D) 0:? 'g_tTex2s5' ( uniform utexture2D) 0:? 'g_tTex2s1a' ( uniform texture2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 240 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 238 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 10 "s1_t" MemberName 10(s1_t) 0 "c0" MemberName 10(s1_t) 1 "c1" MemberName 10(s1_t) 2 "c2" Name 13 "fn1(t2-tx-struct0-1;" Name 12 "t1" Name 16 "s2_t" MemberName 16(s2_t) 0 "c0" MemberName 16(s2_t) 1 "c1" Name 19 "fn1(t2-tx-struct1-1;" Name 18 "t2" Name 23 "@main(" Name 26 "@sampleResultShadow" Name 30 "g_sSamp" Name 39 "@sampleStructTemp" Name 65 "@sampleResultShadow" Name 71 "@sampleStructTemp" Name 87 "s1" Name 88 "@sampleResultShadow" Name 90 "g_tTex2s1" Name 98 "@sampleStructTemp" Name 112 "s2" Name 113 "@sampleResultShadow" Name 114 "g_tTex2s2" Name 122 "@sampleStructTemp" Name 136 "s3_t" MemberName 136(s3_t) 0 "c0" MemberName 136(s3_t) 1 "c1" Name 138 "s3" Name 139 "@sampleResultShadow" Name 140 "g_tTex2s3" Name 148 "@sampleStructTemp" Name 160 "s4_t" MemberName 160(s4_t) 0 "c0" MemberName 160(s4_t) 1 "c1" MemberName 160(s4_t) 2 "c2" Name 162 "s4" Name 165 "@sampleResultShadow" Name 168 "g_tTex2s4" Name 177 "@sampleStructTemp" Name 194 "s5_t" MemberName 194(s5_t) 0 "c0" MemberName 194(s5_t) 1 "c1" Name 196 "s5" Name 199 "@sampleResultShadow" Name 202 "g_tTex2s5" Name 211 "@sampleStructTemp" Name 220 "r0" Name 221 "param" Name 224 "r1" Name 225 "param" Name 228 "r2" Name 229 "g_tTex2s1a" Name 230 "param" Name 238 "@entryPointOutput" Decorate 30(g_sSamp) Binding 0 Decorate 30(g_sSamp) DescriptorSet 0 Decorate 90(g_tTex2s1) Binding 1 Decorate 90(g_tTex2s1) DescriptorSet 0 Decorate 114(g_tTex2s2) Binding 2 Decorate 114(g_tTex2s2) DescriptorSet 0 Decorate 140(g_tTex2s3) Binding 3 Decorate 140(g_tTex2s3) DescriptorSet 0 Decorate 168(g_tTex2s4) Binding 4 Decorate 168(g_tTex2s4) DescriptorSet 0 Decorate 202(g_tTex2s5) Binding 5 Decorate 202(g_tTex2s5) DescriptorSet 0 Decorate 229(g_tTex2s1a) Binding 6 Decorate 229(g_tTex2s1a) DescriptorSet 0 Decorate 238(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) 2D sampled format:Unknown 8: TypePointer Function 7 9: TypeVector 6(float) 2 10(s1_t): TypeStruct 6(float) 9(fvec2) 6(float) 11: TypeFunction 10(s1_t) 8(ptr) 15: TypeVector 6(float) 3 16(s2_t): TypeStruct 6(float) 15(fvec3) 17: TypeFunction 16(s2_t) 8(ptr) 21: TypeVector 6(float) 4 22: TypeFunction 21(fvec4) 25: TypePointer Function 21(fvec4) 28: TypeSampler 29: TypePointer UniformConstant 28 30(g_sSamp): 29(ptr) Variable UniformConstant 32: TypeSampledImage 7 34: 6(float) Constant 1058642330 35: 6(float) Constant 1058810102 36: 9(fvec2) ConstantComposite 34 35 38: TypePointer Function 10(s1_t) 40: TypeInt 32 1 41: 40(int) Constant 0 42: TypeInt 32 0 43: 42(int) Constant 0 44: TypePointer Function 6(float) 48: 40(int) Constant 1 49: 42(int) Constant 1 53: 42(int) Constant 2 57: 40(int) Constant 2 58: 42(int) Constant 3 70: TypePointer Function 16(s2_t) 89: TypePointer UniformConstant 7 90(g_tTex2s1): 89(ptr) Variable UniformConstant 94: 6(float) Constant 1036831949 95: 6(float) Constant 1038174126 96: 9(fvec2) ConstantComposite 94 95 114(g_tTex2s2): 89(ptr) Variable UniformConstant 118: 6(float) Constant 1045220557 119: 6(float) Constant 1045891645 120: 9(fvec2) ConstantComposite 118 119 136(s3_t): TypeStruct 9(fvec2) 6(float) 137: TypePointer Function 136(s3_t) 140(g_tTex2s3): 89(ptr) Variable UniformConstant 144: 6(float) Constant 1050253722 145: 6(float) Constant 1050589266 146: 9(fvec2) ConstantComposite 144 145 159: TypeVector 40(int) 2 160(s4_t): TypeStruct 40(int) 159(ivec2) 40(int) 161: TypePointer Function 160(s4_t) 163: TypeVector 40(int) 4 164: TypePointer Function 163(ivec4) 166: TypeImage 40(int) 2D sampled format:Unknown 167: TypePointer UniformConstant 166 168(g_tTex2s4): 167(ptr) Variable UniformConstant 171: TypeSampledImage 166 173: 6(float) Constant 1053609165 174: 6(float) Constant 1053944709 175: 9(fvec2) ConstantComposite 173 174 178: TypePointer Function 40(int) 194(s5_t): TypeStruct 42(int) 42(int) 195: TypePointer Function 194(s5_t) 197: TypeVector 42(int) 4 198: TypePointer Function 197(ivec4) 200: TypeImage 42(int) 2D sampled format:Unknown 201: TypePointer UniformConstant 200 202(g_tTex2s5): 201(ptr) Variable UniformConstant 205: TypeSampledImage 200 207: 6(float) Constant 1056964608 208: 6(float) Constant 1057132380 209: 9(fvec2) ConstantComposite 207 208 212: TypePointer Function 42(int) 229(g_tTex2s1a): 89(ptr) Variable UniformConstant 233: 6(float) Constant 0 234: 21(fvec4) ConstantComposite 233 233 233 233 237: TypePointer Output 21(fvec4) 238(@entryPointOutput): 237(ptr) Variable Output 4(main): 2 Function None 3 5: Label 239: 21(fvec4) FunctionCall 23(@main() Store 238(@entryPointOutput) 239 Return FunctionEnd 13(fn1(t2-tx-struct0-1;): 10(s1_t) Function None 11 12(t1): 8(ptr) FunctionParameter 14: Label 26(@sampleResultShadow): 25(ptr) Variable Function 39(@sampleStructTemp): 38(ptr) Variable Function 27: 7 Load 12(t1) 31: 28 Load 30(g_sSamp) 33: 32 SampledImage 27 31 37: 21(fvec4) ImageSampleImplicitLod 33 36 Store 26(@sampleResultShadow) 37 45: 44(ptr) AccessChain 26(@sampleResultShadow) 43 46: 6(float) Load 45 47: 44(ptr) AccessChain 39(@sampleStructTemp) 41 Store 47 46 50: 44(ptr) AccessChain 26(@sampleResultShadow) 49 51: 6(float) Load 50 52: 44(ptr) AccessChain 39(@sampleStructTemp) 48 43 Store 52 51 54: 44(ptr) AccessChain 26(@sampleResultShadow) 53 55: 6(float) Load 54 56: 44(ptr) AccessChain 39(@sampleStructTemp) 48 49 Store 56 55 59: 44(ptr) AccessChain 26(@sampleResultShadow) 58 60: 6(float) Load 59 61: 44(ptr) AccessChain 39(@sampleStructTemp) 57 Store 61 60 62: 10(s1_t) Load 39(@sampleStructTemp) ReturnValue 62 FunctionEnd 19(fn1(t2-tx-struct1-1;): 16(s2_t) Function None 17 18(t2): 8(ptr) FunctionParameter 20: Label 65(@sampleResultShadow): 25(ptr) Variable Function 71(@sampleStructTemp): 70(ptr) Variable Function 66: 7 Load 18(t2) 67: 28 Load 30(g_sSamp) 68: 32 SampledImage 66 67 69: 21(fvec4) ImageSampleImplicitLod 68 36 Store 65(@sampleResultShadow) 69 72: 44(ptr) AccessChain 65(@sampleResultShadow) 43 73: 6(float) Load 72 74: 44(ptr) AccessChain 71(@sampleStructTemp) 41 Store 74 73 75: 44(ptr) AccessChain 65(@sampleResultShadow) 49 76: 6(float) Load 75 77: 44(ptr) AccessChain 71(@sampleStructTemp) 48 43 Store 77 76 78: 44(ptr) AccessChain 65(@sampleResultShadow) 53 79: 6(float) Load 78 80: 44(ptr) AccessChain 71(@sampleStructTemp) 48 49 Store 80 79 81: 44(ptr) AccessChain 65(@sampleResultShadow) 58 82: 6(float) Load 81 83: 44(ptr) AccessChain 71(@sampleStructTemp) 48 53 Store 83 82 84: 16(s2_t) Load 71(@sampleStructTemp) ReturnValue 84 FunctionEnd 23(@main(): 21(fvec4) Function None 22 24: Label 87(s1): 38(ptr) Variable Function 88(@sampleResultShadow): 25(ptr) Variable Function 98(@sampleStructTemp): 38(ptr) Variable Function 112(s2): 70(ptr) Variable Function 113(@sampleResultShadow): 25(ptr) Variable Function 122(@sampleStructTemp): 70(ptr) Variable Function 138(s3): 137(ptr) Variable Function 139(@sampleResultShadow): 25(ptr) Variable Function 148(@sampleStructTemp): 137(ptr) Variable Function 162(s4): 161(ptr) Variable Function 165(@sampleResultShadow): 164(ptr) Variable Function 177(@sampleStructTemp): 161(ptr) Variable Function 196(s5): 195(ptr) Variable Function 199(@sampleResultShadow): 198(ptr) Variable Function 211(@sampleStructTemp): 195(ptr) Variable Function 220(r0): 38(ptr) Variable Function 221(param): 8(ptr) Variable Function 224(r1): 70(ptr) Variable Function 225(param): 8(ptr) Variable Function 228(r2): 38(ptr) Variable Function 230(param): 8(ptr) Variable Function 91: 7 Load 90(g_tTex2s1) 92: 28 Load 30(g_sSamp) 93: 32 SampledImage 91 92 97: 21(fvec4) ImageSampleImplicitLod 93 96 Store 88(@sampleResultShadow) 97 99: 44(ptr) AccessChain 88(@sampleResultShadow) 43 100: 6(float) Load 99 101: 44(ptr) AccessChain 98(@sampleStructTemp) 41 Store 101 100 102: 44(ptr) AccessChain 88(@sampleResultShadow) 49 103: 6(float) Load 102 104: 44(ptr) AccessChain 98(@sampleStructTemp) 48 43 Store 104 103 105: 44(ptr) AccessChain 88(@sampleResultShadow) 53 106: 6(float) Load 105 107: 44(ptr) AccessChain 98(@sampleStructTemp) 48 49 Store 107 106 108: 44(ptr) AccessChain 88(@sampleResultShadow) 58 109: 6(float) Load 108 110: 44(ptr) AccessChain 98(@sampleStructTemp) 57 Store 110 109 111: 10(s1_t) Load 98(@sampleStructTemp) Store 87(s1) 111 115: 7 Load 114(g_tTex2s2) 116: 28 Load 30(g_sSamp) 117: 32 SampledImage 115 116 121: 21(fvec4) ImageSampleImplicitLod 117 120 Store 113(@sampleResultShadow) 121 123: 44(ptr) AccessChain 113(@sampleResultShadow) 43 124: 6(float) Load 123 125: 44(ptr) AccessChain 122(@sampleStructTemp) 41 Store 125 124 126: 44(ptr) AccessChain 113(@sampleResultShadow) 49 127: 6(float) Load 126 128: 44(ptr) AccessChain 122(@sampleStructTemp) 48 43 Store 128 127 129: 44(ptr) AccessChain 113(@sampleResultShadow) 53 130: 6(float) Load 129 131: 44(ptr) AccessChain 122(@sampleStructTemp) 48 49 Store 131 130 132: 44(ptr) AccessChain 113(@sampleResultShadow) 58 133: 6(float) Load 132 134: 44(ptr) AccessChain 122(@sampleStructTemp) 48 53 Store 134 133 135: 16(s2_t) Load 122(@sampleStructTemp) Store 112(s2) 135 141: 7 Load 140(g_tTex2s3) 142: 28 Load 30(g_sSamp) 143: 32 SampledImage 141 142 147: 21(fvec4) ImageSampleImplicitLod 143 146 Store 139(@sampleResultShadow) 147 149: 44(ptr) AccessChain 139(@sampleResultShadow) 43 150: 6(float) Load 149 151: 44(ptr) AccessChain 148(@sampleStructTemp) 41 43 Store 151 150 152: 44(ptr) AccessChain 139(@sampleResultShadow) 49 153: 6(float) Load 152 154: 44(ptr) AccessChain 148(@sampleStructTemp) 41 49 Store 154 153 155: 44(ptr) AccessChain 139(@sampleResultShadow) 53 156: 6(float) Load 155 157: 44(ptr) AccessChain 148(@sampleStructTemp) 48 Store 157 156 158: 136(s3_t) Load 148(@sampleStructTemp) Store 138(s3) 158 169: 166 Load 168(g_tTex2s4) 170: 28 Load 30(g_sSamp) 172: 171 SampledImage 169 170 176: 163(ivec4) ImageSampleImplicitLod 172 175 Store 165(@sampleResultShadow) 176 179: 178(ptr) AccessChain 165(@sampleResultShadow) 43 180: 40(int) Load 179 181: 178(ptr) AccessChain 177(@sampleStructTemp) 41 Store 181 180 182: 178(ptr) AccessChain 165(@sampleResultShadow) 49 183: 40(int) Load 182 184: 6(float) ConvertSToF 183 185: 178(ptr) AccessChain 177(@sampleStructTemp) 48 43 Store 185 184 186: 178(ptr) AccessChain 165(@sampleResultShadow) 53 187: 40(int) Load 186 188: 6(float) ConvertSToF 187 189: 178(ptr) AccessChain 177(@sampleStructTemp) 48 49 Store 189 188 190: 178(ptr) AccessChain 165(@sampleResultShadow) 58 191: 40(int) Load 190 192: 178(ptr) AccessChain 177(@sampleStructTemp) 57 Store 192 191 193: 160(s4_t) Load 177(@sampleStructTemp) Store 162(s4) 193 203: 200 Load 202(g_tTex2s5) 204: 28 Load 30(g_sSamp) 206: 205 SampledImage 203 204 210: 197(ivec4) ImageSampleImplicitLod 206 209 Store 199(@sampleResultShadow) 210 213: 212(ptr) AccessChain 199(@sampleResultShadow) 43 214: 42(int) Load 213 215: 212(ptr) AccessChain 211(@sampleStructTemp) 41 Store 215 214 216: 212(ptr) AccessChain 199(@sampleResultShadow) 49 217: 42(int) Load 216 218: 212(ptr) AccessChain 211(@sampleStructTemp) 48 Store 218 217 219: 194(s5_t) Load 211(@sampleStructTemp) Store 196(s5) 219 222: 7 Load 90(g_tTex2s1) Store 221(param) 222 223: 10(s1_t) FunctionCall 13(fn1(t2-tx-struct0-1;) 221(param) Store 220(r0) 223 226: 7 Load 114(g_tTex2s2) Store 225(param) 226 227: 16(s2_t) FunctionCall 19(fn1(t2-tx-struct1-1;) 225(param) Store 224(r1) 227 231: 7 Load 229(g_tTex2s1a) Store 230(param) 231 232: 10(s1_t) FunctionCall 13(fn1(t2-tx-struct0-1;) 230(param) Store 228(r2) 232 ReturnValue 234 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.texture.subvec4.frag.out000066400000000000000000000621541506534232700241410ustar00rootroot00000000000000hlsl.texture.subvec4.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: @main( ( temp 4-component vector of float) 0:15 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp 2-component vector of uint) 0:24 'sizeQueryTemp' ( temp 2-component vector of uint) 0:24 textureSize ( temp 2-component vector of uint) 0:24 'g_tTex2dmsf1' ( uniform texture2DMS) 0:24 move second child to first child ( temp uint) 0:24 'WidthU' ( temp uint) 0:24 direct index ( temp uint) 0:24 'sizeQueryTemp' ( temp 2-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp uint) 0:24 'HeightU' ( temp uint) 0:24 direct index ( temp uint) 0:24 'sizeQueryTemp' ( temp 2-component vector of uint) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp uint) 0:24 'NumberOfSamplesU' ( temp uint) 0:24 imageQuerySamples ( temp uint) 0:24 'g_tTex2dmsf1' ( uniform texture2DMS) 0:25 Sequence 0:25 move second child to first child ( temp 2-component vector of uint) 0:25 'sizeQueryTemp' ( temp 2-component vector of uint) 0:25 textureSize ( temp 2-component vector of uint) 0:25 'g_tTex2dmsf2' ( uniform texture2DMS) 0:25 move second child to first child ( temp uint) 0:25 'WidthU' ( temp uint) 0:25 direct index ( temp uint) 0:25 'sizeQueryTemp' ( temp 2-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp uint) 0:25 'HeightU' ( temp uint) 0:25 direct index ( temp uint) 0:25 'sizeQueryTemp' ( temp 2-component vector of uint) 0:25 Constant: 0:25 1 (const int) 0:25 move second child to first child ( temp uint) 0:25 'NumberOfSamplesU' ( temp uint) 0:25 imageQuerySamples ( temp uint) 0:25 'g_tTex2dmsf2' ( uniform texture2DMS) 0:26 Sequence 0:26 move second child to first child ( temp 2-component vector of uint) 0:26 'sizeQueryTemp' ( temp 2-component vector of uint) 0:26 textureSize ( temp 2-component vector of uint) 0:26 'g_tTex2dmsf3' ( uniform texture2DMS) 0:26 move second child to first child ( temp uint) 0:26 'WidthU' ( temp uint) 0:26 direct index ( temp uint) 0:26 'sizeQueryTemp' ( temp 2-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp uint) 0:26 'HeightU' ( temp uint) 0:26 direct index ( temp uint) 0:26 'sizeQueryTemp' ( temp 2-component vector of uint) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp uint) 0:26 'NumberOfSamplesU' ( temp uint) 0:26 imageQuerySamples ( temp uint) 0:26 'g_tTex2dmsf3' ( uniform texture2DMS) 0:27 Sequence 0:27 move second child to first child ( temp 2-component vector of uint) 0:27 'sizeQueryTemp' ( temp 2-component vector of uint) 0:27 textureSize ( temp 2-component vector of uint) 0:27 'g_tTex2dmsf4' ( uniform texture2DMS) 0:27 move second child to first child ( temp uint) 0:27 'WidthU' ( temp uint) 0:27 direct index ( temp uint) 0:27 'sizeQueryTemp' ( temp 2-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 move second child to first child ( temp uint) 0:27 'HeightU' ( temp uint) 0:27 direct index ( temp uint) 0:27 'sizeQueryTemp' ( temp 2-component vector of uint) 0:27 Constant: 0:27 1 (const int) 0:27 move second child to first child ( temp uint) 0:27 'NumberOfSamplesU' ( temp uint) 0:27 imageQuerySamples ( temp uint) 0:27 'g_tTex2dmsf4' ( uniform texture2DMS) 0:29 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:29 'g_tTex2dmsf1' ( uniform texture2DMS) 0:29 Constant: 0:29 1 (const int) 0:29 2 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 Construct vec2 ( temp 2-component vector of float) 0:? textureFetch ( temp 4-component vector of float) 0:30 'g_tTex2dmsf2' ( uniform texture2DMS) 0:30 Constant: 0:30 1 (const int) 0:30 2 (const int) 0:30 Constant: 0:30 3 (const int) 0:31 Construct vec3 ( temp 3-component vector of float) 0:? textureFetch ( temp 4-component vector of float) 0:31 'g_tTex2dmsf3' ( uniform texture2DMS) 0:31 Constant: 0:31 1 (const int) 0:31 2 (const int) 0:31 Constant: 0:31 3 (const int) 0:32 textureFetch ( temp 4-component vector of float) 0:32 'g_tTex2dmsf4' ( uniform texture2DMS) 0:32 Constant: 0:32 1 (const int) 0:32 2 (const int) 0:32 Constant: 0:32 3 (const int) 0:34 Construct float ( temp float) 0:? texture ( temp 4-component vector of float) 0:34 Construct combined texture-sampler ( temp sampler2D) 0:34 'g_tTex2df1' ( uniform texture2D) 0:34 'g_sSamp' ( uniform sampler) 0:34 Constant: 0:34 0.100000 0:34 0.200000 0:35 Construct vec2 ( temp 2-component vector of float) 0:? texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df2' ( uniform texture2D) 0:35 'g_sSamp' ( uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:36 Construct vec3 ( temp 3-component vector of float) 0:? texture ( temp 4-component vector of float) 0:36 Construct combined texture-sampler ( temp sampler2D) 0:36 'g_tTex2df3' ( uniform texture2D) 0:36 'g_sSamp' ( uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:37 texture ( temp 4-component vector of float) 0:37 Construct combined texture-sampler ( temp sampler2D) 0:37 'g_tTex2df4' ( uniform texture2D) 0:37 'g_sSamp' ( uniform sampler) 0:37 Constant: 0:37 0.100000 0:37 0.200000 0:39 Branch: Return with expression 0:39 Constant: 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:15 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tTex2dmsf1' ( uniform texture2DMS) 0:? 'g_tTex2dmsf2' ( uniform texture2DMS) 0:? 'g_tTex2dmsf3' ( uniform texture2DMS) 0:? 'g_tTex2dmsf4' ( uniform texture2DMS) 0:? 'g_tTex2df1' ( uniform texture2D) 0:? 'g_tTex2df2' ( uniform texture2D) 0:? 'g_tTex2df3' ( uniform texture2D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_sSamp' ( uniform sampler) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: @main( ( temp 4-component vector of float) 0:15 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp 2-component vector of uint) 0:24 'sizeQueryTemp' ( temp 2-component vector of uint) 0:24 textureSize ( temp 2-component vector of uint) 0:24 'g_tTex2dmsf1' ( uniform texture2DMS) 0:24 move second child to first child ( temp uint) 0:24 'WidthU' ( temp uint) 0:24 direct index ( temp uint) 0:24 'sizeQueryTemp' ( temp 2-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 move second child to first child ( temp uint) 0:24 'HeightU' ( temp uint) 0:24 direct index ( temp uint) 0:24 'sizeQueryTemp' ( temp 2-component vector of uint) 0:24 Constant: 0:24 1 (const int) 0:24 move second child to first child ( temp uint) 0:24 'NumberOfSamplesU' ( temp uint) 0:24 imageQuerySamples ( temp uint) 0:24 'g_tTex2dmsf1' ( uniform texture2DMS) 0:25 Sequence 0:25 move second child to first child ( temp 2-component vector of uint) 0:25 'sizeQueryTemp' ( temp 2-component vector of uint) 0:25 textureSize ( temp 2-component vector of uint) 0:25 'g_tTex2dmsf2' ( uniform texture2DMS) 0:25 move second child to first child ( temp uint) 0:25 'WidthU' ( temp uint) 0:25 direct index ( temp uint) 0:25 'sizeQueryTemp' ( temp 2-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 move second child to first child ( temp uint) 0:25 'HeightU' ( temp uint) 0:25 direct index ( temp uint) 0:25 'sizeQueryTemp' ( temp 2-component vector of uint) 0:25 Constant: 0:25 1 (const int) 0:25 move second child to first child ( temp uint) 0:25 'NumberOfSamplesU' ( temp uint) 0:25 imageQuerySamples ( temp uint) 0:25 'g_tTex2dmsf2' ( uniform texture2DMS) 0:26 Sequence 0:26 move second child to first child ( temp 2-component vector of uint) 0:26 'sizeQueryTemp' ( temp 2-component vector of uint) 0:26 textureSize ( temp 2-component vector of uint) 0:26 'g_tTex2dmsf3' ( uniform texture2DMS) 0:26 move second child to first child ( temp uint) 0:26 'WidthU' ( temp uint) 0:26 direct index ( temp uint) 0:26 'sizeQueryTemp' ( temp 2-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 move second child to first child ( temp uint) 0:26 'HeightU' ( temp uint) 0:26 direct index ( temp uint) 0:26 'sizeQueryTemp' ( temp 2-component vector of uint) 0:26 Constant: 0:26 1 (const int) 0:26 move second child to first child ( temp uint) 0:26 'NumberOfSamplesU' ( temp uint) 0:26 imageQuerySamples ( temp uint) 0:26 'g_tTex2dmsf3' ( uniform texture2DMS) 0:27 Sequence 0:27 move second child to first child ( temp 2-component vector of uint) 0:27 'sizeQueryTemp' ( temp 2-component vector of uint) 0:27 textureSize ( temp 2-component vector of uint) 0:27 'g_tTex2dmsf4' ( uniform texture2DMS) 0:27 move second child to first child ( temp uint) 0:27 'WidthU' ( temp uint) 0:27 direct index ( temp uint) 0:27 'sizeQueryTemp' ( temp 2-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 move second child to first child ( temp uint) 0:27 'HeightU' ( temp uint) 0:27 direct index ( temp uint) 0:27 'sizeQueryTemp' ( temp 2-component vector of uint) 0:27 Constant: 0:27 1 (const int) 0:27 move second child to first child ( temp uint) 0:27 'NumberOfSamplesU' ( temp uint) 0:27 imageQuerySamples ( temp uint) 0:27 'g_tTex2dmsf4' ( uniform texture2DMS) 0:29 Construct float ( temp float) 0:? textureFetch ( temp 4-component vector of float) 0:29 'g_tTex2dmsf1' ( uniform texture2DMS) 0:29 Constant: 0:29 1 (const int) 0:29 2 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 Construct vec2 ( temp 2-component vector of float) 0:? textureFetch ( temp 4-component vector of float) 0:30 'g_tTex2dmsf2' ( uniform texture2DMS) 0:30 Constant: 0:30 1 (const int) 0:30 2 (const int) 0:30 Constant: 0:30 3 (const int) 0:31 Construct vec3 ( temp 3-component vector of float) 0:? textureFetch ( temp 4-component vector of float) 0:31 'g_tTex2dmsf3' ( uniform texture2DMS) 0:31 Constant: 0:31 1 (const int) 0:31 2 (const int) 0:31 Constant: 0:31 3 (const int) 0:32 textureFetch ( temp 4-component vector of float) 0:32 'g_tTex2dmsf4' ( uniform texture2DMS) 0:32 Constant: 0:32 1 (const int) 0:32 2 (const int) 0:32 Constant: 0:32 3 (const int) 0:34 Construct float ( temp float) 0:? texture ( temp 4-component vector of float) 0:34 Construct combined texture-sampler ( temp sampler2D) 0:34 'g_tTex2df1' ( uniform texture2D) 0:34 'g_sSamp' ( uniform sampler) 0:34 Constant: 0:34 0.100000 0:34 0.200000 0:35 Construct vec2 ( temp 2-component vector of float) 0:? texture ( temp 4-component vector of float) 0:35 Construct combined texture-sampler ( temp sampler2D) 0:35 'g_tTex2df2' ( uniform texture2D) 0:35 'g_sSamp' ( uniform sampler) 0:35 Constant: 0:35 0.100000 0:35 0.200000 0:36 Construct vec3 ( temp 3-component vector of float) 0:? texture ( temp 4-component vector of float) 0:36 Construct combined texture-sampler ( temp sampler2D) 0:36 'g_tTex2df3' ( uniform texture2D) 0:36 'g_sSamp' ( uniform sampler) 0:36 Constant: 0:36 0.100000 0:36 0.200000 0:37 texture ( temp 4-component vector of float) 0:37 Construct combined texture-sampler ( temp sampler2D) 0:37 'g_tTex2df4' ( uniform texture2D) 0:37 'g_sSamp' ( uniform sampler) 0:37 Constant: 0:37 0.100000 0:37 0.200000 0:39 Branch: Return with expression 0:39 Constant: 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:15 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'g_tTex2dmsf1' ( uniform texture2DMS) 0:? 'g_tTex2dmsf2' ( uniform texture2DMS) 0:? 'g_tTex2dmsf3' ( uniform texture2DMS) 0:? 'g_tTex2dmsf4' ( uniform texture2DMS) 0:? 'g_tTex2df1' ( uniform texture2D) 0:? 'g_tTex2df2' ( uniform texture2D) 0:? 'g_tTex2df3' ( uniform texture2D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_sSamp' ( uniform sampler) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 130 Capability Shader Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 128 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 14 "sizeQueryTemp" Name 17 "g_tTex2dmsf1" Name 21 "WidthU" Name 25 "HeightU" Name 29 "NumberOfSamplesU" Name 32 "sizeQueryTemp" Name 33 "g_tTex2dmsf2" Name 42 "sizeQueryTemp" Name 43 "g_tTex2dmsf3" Name 52 "sizeQueryTemp" Name 53 "g_tTex2dmsf4" Name 88 "g_tTex2df1" Name 92 "g_sSamp" Name 101 "g_tTex2df2" Name 109 "g_tTex2df3" Name 118 "g_tTex2df4" Name 128 "@entryPointOutput" Decorate 17(g_tTex2dmsf1) Binding 0 Decorate 17(g_tTex2dmsf1) DescriptorSet 0 Decorate 33(g_tTex2dmsf2) Binding 1 Decorate 33(g_tTex2dmsf2) DescriptorSet 0 Decorate 43(g_tTex2dmsf3) Binding 2 Decorate 43(g_tTex2dmsf3) DescriptorSet 0 Decorate 53(g_tTex2dmsf4) Binding 3 Decorate 53(g_tTex2dmsf4) DescriptorSet 0 Decorate 88(g_tTex2df1) Binding 4 Decorate 88(g_tTex2df1) DescriptorSet 0 Decorate 92(g_sSamp) Binding 8 Decorate 92(g_sSamp) DescriptorSet 0 Decorate 101(g_tTex2df2) Binding 5 Decorate 101(g_tTex2df2) DescriptorSet 0 Decorate 109(g_tTex2df3) Binding 6 Decorate 109(g_tTex2df3) DescriptorSet 0 Decorate 118(g_tTex2df4) Binding 7 Decorate 118(g_tTex2df4) DescriptorSet 0 Decorate 128(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 0 12: TypeVector 11(int) 2 13: TypePointer Function 12(ivec2) 15: TypeImage 6(float) 2D multi-sampled sampled format:Unknown 16: TypePointer UniformConstant 15 17(g_tTex2dmsf1): 16(ptr) Variable UniformConstant 20: TypePointer Function 11(int) 22: 11(int) Constant 0 26: 11(int) Constant 1 33(g_tTex2dmsf2): 16(ptr) Variable UniformConstant 43(g_tTex2dmsf3): 16(ptr) Variable UniformConstant 53(g_tTex2dmsf4): 16(ptr) Variable UniformConstant 63: TypeInt 32 1 64: TypeVector 63(int) 2 65: 63(int) Constant 1 66: 63(int) Constant 2 67: 64(ivec2) ConstantComposite 65 66 68: 63(int) Constant 3 73: TypeVector 6(float) 2 79: TypeVector 6(float) 3 86: TypeImage 6(float) 2D sampled format:Unknown 87: TypePointer UniformConstant 86 88(g_tTex2df1): 87(ptr) Variable UniformConstant 90: TypeSampler 91: TypePointer UniformConstant 90 92(g_sSamp): 91(ptr) Variable UniformConstant 94: TypeSampledImage 86 96: 6(float) Constant 1036831949 97: 6(float) Constant 1045220557 98: 73(fvec2) ConstantComposite 96 97 101(g_tTex2df2): 87(ptr) Variable UniformConstant 109(g_tTex2df3): 87(ptr) Variable UniformConstant 118(g_tTex2df4): 87(ptr) Variable UniformConstant 123: 6(float) Constant 0 124: 7(fvec4) ConstantComposite 123 123 123 123 127: TypePointer Output 7(fvec4) 128(@entryPointOutput): 127(ptr) Variable Output 4(main): 2 Function None 3 5: Label 129: 7(fvec4) FunctionCall 9(@main() Store 128(@entryPointOutput) 129 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 14(sizeQueryTemp): 13(ptr) Variable Function 21(WidthU): 20(ptr) Variable Function 25(HeightU): 20(ptr) Variable Function 29(NumberOfSamplesU): 20(ptr) Variable Function 32(sizeQueryTemp): 13(ptr) Variable Function 42(sizeQueryTemp): 13(ptr) Variable Function 52(sizeQueryTemp): 13(ptr) Variable Function 18: 15 Load 17(g_tTex2dmsf1) 19: 12(ivec2) ImageQuerySize 18 Store 14(sizeQueryTemp) 19 23: 20(ptr) AccessChain 14(sizeQueryTemp) 22 24: 11(int) Load 23 Store 21(WidthU) 24 27: 20(ptr) AccessChain 14(sizeQueryTemp) 26 28: 11(int) Load 27 Store 25(HeightU) 28 30: 15 Load 17(g_tTex2dmsf1) 31: 11(int) ImageQuerySamples 30 Store 29(NumberOfSamplesU) 31 34: 15 Load 33(g_tTex2dmsf2) 35: 12(ivec2) ImageQuerySize 34 Store 32(sizeQueryTemp) 35 36: 20(ptr) AccessChain 32(sizeQueryTemp) 22 37: 11(int) Load 36 Store 21(WidthU) 37 38: 20(ptr) AccessChain 32(sizeQueryTemp) 26 39: 11(int) Load 38 Store 25(HeightU) 39 40: 15 Load 33(g_tTex2dmsf2) 41: 11(int) ImageQuerySamples 40 Store 29(NumberOfSamplesU) 41 44: 15 Load 43(g_tTex2dmsf3) 45: 12(ivec2) ImageQuerySize 44 Store 42(sizeQueryTemp) 45 46: 20(ptr) AccessChain 42(sizeQueryTemp) 22 47: 11(int) Load 46 Store 21(WidthU) 47 48: 20(ptr) AccessChain 42(sizeQueryTemp) 26 49: 11(int) Load 48 Store 25(HeightU) 49 50: 15 Load 43(g_tTex2dmsf3) 51: 11(int) ImageQuerySamples 50 Store 29(NumberOfSamplesU) 51 54: 15 Load 53(g_tTex2dmsf4) 55: 12(ivec2) ImageQuerySize 54 Store 52(sizeQueryTemp) 55 56: 20(ptr) AccessChain 52(sizeQueryTemp) 22 57: 11(int) Load 56 Store 21(WidthU) 57 58: 20(ptr) AccessChain 52(sizeQueryTemp) 26 59: 11(int) Load 58 Store 25(HeightU) 59 60: 15 Load 53(g_tTex2dmsf4) 61: 11(int) ImageQuerySamples 60 Store 29(NumberOfSamplesU) 61 62: 15 Load 17(g_tTex2dmsf1) 69: 7(fvec4) ImageFetch 62 67 Sample 68 70: 6(float) CompositeExtract 69 0 71: 15 Load 33(g_tTex2dmsf2) 72: 7(fvec4) ImageFetch 71 67 Sample 68 74: 6(float) CompositeExtract 72 0 75: 6(float) CompositeExtract 72 1 76: 73(fvec2) CompositeConstruct 74 75 77: 15 Load 43(g_tTex2dmsf3) 78: 7(fvec4) ImageFetch 77 67 Sample 68 80: 6(float) CompositeExtract 78 0 81: 6(float) CompositeExtract 78 1 82: 6(float) CompositeExtract 78 2 83: 79(fvec3) CompositeConstruct 80 81 82 84: 15 Load 53(g_tTex2dmsf4) 85: 7(fvec4) ImageFetch 84 67 Sample 68 89: 86 Load 88(g_tTex2df1) 93: 90 Load 92(g_sSamp) 95: 94 SampledImage 89 93 99: 7(fvec4) ImageSampleImplicitLod 95 98 100: 6(float) CompositeExtract 99 0 102: 86 Load 101(g_tTex2df2) 103: 90 Load 92(g_sSamp) 104: 94 SampledImage 102 103 105: 7(fvec4) ImageSampleImplicitLod 104 98 106: 6(float) CompositeExtract 105 0 107: 6(float) CompositeExtract 105 1 108: 73(fvec2) CompositeConstruct 106 107 110: 86 Load 109(g_tTex2df3) 111: 90 Load 92(g_sSamp) 112: 94 SampledImage 110 111 113: 7(fvec4) ImageSampleImplicitLod 112 98 114: 6(float) CompositeExtract 113 0 115: 6(float) CompositeExtract 113 1 116: 6(float) CompositeExtract 113 2 117: 79(fvec3) CompositeConstruct 114 115 116 119: 86 Load 118(g_tTex2df4) 120: 90 Load 92(g_sSamp) 121: 94 SampledImage 119 120 122: 7(fvec4) ImageSampleImplicitLod 121 98 ReturnValue 124 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.texturebuffer.frag.out000066400000000000000000000215761506534232700237640ustar00rootroot00000000000000hlsl.texturebuffer.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:15 Function Parameters: 0:15 'pos' ( in 4-component vector of float) 0:? Sequence 0:16 Branch: Return with expression 0:16 add ( temp 4-component vector of float) 0:16 f: direct index for structure (layout( row_major std430) buffer 4-component vector of float) 0:16 'TextureBuffer_var' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f, layout( row_major std430) buffer 4-component vector of int i}) 0:16 Constant: 0:16 0 (const int) 0:16 f2: direct index for structure (layout( row_major std430) buffer 4-component vector of float) 0:16 'anon@0' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f2, layout( row_major std430) buffer 4-component vector of int i2}) 0:16 Constant: 0:16 0 (const uint) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:15 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'TextureBuffer_var' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f, layout( row_major std430) buffer 4-component vector of int i}) 0:? 'anon@0' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f2, layout( row_major std430) buffer 4-component vector of int i2}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: @main(vf4; ( temp 4-component vector of float) 0:15 Function Parameters: 0:15 'pos' ( in 4-component vector of float) 0:? Sequence 0:16 Branch: Return with expression 0:16 add ( temp 4-component vector of float) 0:16 f: direct index for structure (layout( row_major std430) buffer 4-component vector of float) 0:16 'TextureBuffer_var' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f, layout( row_major std430) buffer 4-component vector of int i}) 0:16 Constant: 0:16 0 (const int) 0:16 f2: direct index for structure (layout( row_major std430) buffer 4-component vector of float) 0:16 'anon@0' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f2, layout( row_major std430) buffer 4-component vector of int i2}) 0:16 Constant: 0:16 0 (const uint) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:15 Function Call: @main(vf4; ( temp 4-component vector of float) 0:? 'pos' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'TextureBuffer_var' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f, layout( row_major std430) buffer 4-component vector of int i}) 0:? 'anon@0' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f2, layout( row_major std430) buffer 4-component vector of int i2}) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'pos' ( in 4-component vector of float FragCoord) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 32 35 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "pos" Name 15 "TextureBuffer_var" MemberName 15(TextureBuffer_var) 0 "f" MemberName 15(TextureBuffer_var) 1 "i" Name 17 "TextureBuffer_var" Name 22 "tbuf2" MemberName 22(tbuf2) 0 "f2" MemberName 22(tbuf2) 1 "i2" Name 24 "" Name 30 "pos" Name 32 "pos" Name 35 "@entryPointOutput" Name 36 "param" Decorate 15(TextureBuffer_var) BufferBlock MemberDecorate 15(TextureBuffer_var) 0 NonWritable MemberDecorate 15(TextureBuffer_var) 0 Offset 0 MemberDecorate 15(TextureBuffer_var) 1 NonWritable MemberDecorate 15(TextureBuffer_var) 1 Offset 16 Decorate 17(TextureBuffer_var) NonWritable Decorate 17(TextureBuffer_var) Binding 0 Decorate 17(TextureBuffer_var) DescriptorSet 0 Decorate 22(tbuf2) BufferBlock MemberDecorate 22(tbuf2) 0 NonWritable MemberDecorate 22(tbuf2) 0 Offset 0 MemberDecorate 22(tbuf2) 1 NonWritable MemberDecorate 22(tbuf2) 1 Offset 16 Decorate 24 NonWritable Decorate 24 Binding 1 Decorate 24 DescriptorSet 0 Decorate 32(pos) BuiltIn FragCoord Decorate 35(@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) 13: TypeInt 32 1 14: TypeVector 13(int) 4 15(TextureBuffer_var): TypeStruct 7(fvec4) 14(ivec4) 16: TypePointer Uniform 15(TextureBuffer_var) 17(TextureBuffer_var): 16(ptr) Variable Uniform 18: 13(int) Constant 0 19: TypePointer Uniform 7(fvec4) 22(tbuf2): TypeStruct 7(fvec4) 14(ivec4) 23: TypePointer Uniform 22(tbuf2) 24: 23(ptr) Variable Uniform 31: TypePointer Input 7(fvec4) 32(pos): 31(ptr) Variable Input 34: TypePointer Output 7(fvec4) 35(@entryPointOutput): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label 30(pos): 8(ptr) Variable Function 36(param): 8(ptr) Variable Function 33: 7(fvec4) Load 32(pos) Store 30(pos) 33 37: 7(fvec4) Load 30(pos) Store 36(param) 37 38: 7(fvec4) FunctionCall 11(@main(vf4;) 36(param) Store 35(@entryPointOutput) 38 Return FunctionEnd 11(@main(vf4;): 7(fvec4) Function None 9 10(pos): 8(ptr) FunctionParameter 12: Label 20: 19(ptr) AccessChain 17(TextureBuffer_var) 18 21: 7(fvec4) Load 20 25: 19(ptr) AccessChain 24 18 26: 7(fvec4) Load 25 27: 7(fvec4) FAdd 21 26 ReturnValue 27 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.this.frag.out000066400000000000000000000420601506534232700220300ustar00rootroot00000000000000hlsl.this.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 2-component vector of float) 0:1 'var' ( global 2-component vector of float) 0:1 Constant: 0:1 1.000000 0:1 2.000000 0:6 Function Definition: type1::memFun1(vi3; ( temp int) 0:6 Function Parameters: 0:6 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:6 'var' ( in 3-component vector of int) 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp int) 0:7 add ( temp int) 0:7 direct index ( temp int) 0:7 'var' ( in 3-component vector of int) 0:7 Constant: 0:7 2 (const int) 0:7 var: direct index for structure ( temp int) 0:7 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:7 Constant: 0:7 1 (const int) 0:7 var2: direct index for structure ( temp int) 0:7 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:7 Constant: 0:7 2 (const uint) 0:10 Function Definition: type1::memFun2(i1; ( temp int) 0:10 Function Parameters: 0:10 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:10 'a' ( in int) 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 3-component vector of int) 0:11 'var' ( temp 3-component vector of int) 0:11 Constant: 0:11 1 (const int) 0:11 2 (const int) 0:11 3 (const int) 0:12 Branch: Return with expression 0:12 add ( temp int) 0:12 add ( temp int) 0:12 direct index ( temp int) 0:12 'var' ( temp 3-component vector of int) 0:12 Constant: 0:12 2 (const int) 0:12 Convert float to int ( temp int) 0:12 direct index ( temp float) 0:12 bar: direct index for structure ( temp 2-component vector of float) 0:12 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:12 Constant: 0:12 0 (const uint) 0:12 Constant: 0:12 1 (const int) 0:12 var2: direct index for structure ( temp int) 0:12 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:12 Constant: 0:12 2 (const int) 0:20 Function Definition: @main( ( temp 4-component vector of float) 0:20 Function Parameters: 0:? Sequence 0:22 move second child to first child ( temp 2-component vector of float) 0:22 bar: direct index for structure ( temp 2-component vector of float) 0:22 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:22 Constant: 0:22 0 (const int) 0:22 'var' ( global 2-component vector of float) 0:23 move second child to first child ( temp int) 0:23 var: direct index for structure ( temp int) 0:23 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 7 (const int) 0:24 move second child to first child ( temp int) 0:24 var2: direct index for structure ( temp int) 0:24 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 9 (const int) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'i' ( temp int) 0:25 Function Call: type1::memFun1(vi3; ( temp int) 0:25 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:25 Constant: 0:25 10 (const int) 0:25 11 (const int) 0:25 12 (const int) 0:26 add second child into first child ( temp int) 0:26 'i' ( temp int) 0:26 Function Call: type1::memFun2(i1; ( temp int) 0:26 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:26 Constant: 0:26 17 (const int) 0:28 Branch: Return with expression 0:28 Construct vec4 ( temp 4-component vector of float) 0:28 Convert int to float ( temp float) 0:28 'i' ( temp int) 0:28 Convert int to float ( temp float) 0:28 'i' ( temp int) 0:28 Convert int to float ( temp float) 0:28 'i' ( temp int) 0:28 Convert int to float ( temp float) 0:28 'i' ( temp int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:20 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'var' ( global 2-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Sequence 0:1 move second child to first child ( temp 2-component vector of float) 0:1 'var' ( global 2-component vector of float) 0:1 Constant: 0:1 1.000000 0:1 2.000000 0:6 Function Definition: type1::memFun1(vi3; ( temp int) 0:6 Function Parameters: 0:6 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:6 'var' ( in 3-component vector of int) 0:? Sequence 0:7 Branch: Return with expression 0:7 add ( temp int) 0:7 add ( temp int) 0:7 direct index ( temp int) 0:7 'var' ( in 3-component vector of int) 0:7 Constant: 0:7 2 (const int) 0:7 var: direct index for structure ( temp int) 0:7 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:7 Constant: 0:7 1 (const int) 0:7 var2: direct index for structure ( temp int) 0:7 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:7 Constant: 0:7 2 (const uint) 0:10 Function Definition: type1::memFun2(i1; ( temp int) 0:10 Function Parameters: 0:10 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:10 'a' ( in int) 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp 3-component vector of int) 0:11 'var' ( temp 3-component vector of int) 0:11 Constant: 0:11 1 (const int) 0:11 2 (const int) 0:11 3 (const int) 0:12 Branch: Return with expression 0:12 add ( temp int) 0:12 add ( temp int) 0:12 direct index ( temp int) 0:12 'var' ( temp 3-component vector of int) 0:12 Constant: 0:12 2 (const int) 0:12 Convert float to int ( temp int) 0:12 direct index ( temp float) 0:12 bar: direct index for structure ( temp 2-component vector of float) 0:12 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:12 Constant: 0:12 0 (const uint) 0:12 Constant: 0:12 1 (const int) 0:12 var2: direct index for structure ( temp int) 0:12 '@this' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:12 Constant: 0:12 2 (const int) 0:20 Function Definition: @main( ( temp 4-component vector of float) 0:20 Function Parameters: 0:? Sequence 0:22 move second child to first child ( temp 2-component vector of float) 0:22 bar: direct index for structure ( temp 2-component vector of float) 0:22 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:22 Constant: 0:22 0 (const int) 0:22 'var' ( global 2-component vector of float) 0:23 move second child to first child ( temp int) 0:23 var: direct index for structure ( temp int) 0:23 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 7 (const int) 0:24 move second child to first child ( temp int) 0:24 var2: direct index for structure ( temp int) 0:24 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 9 (const int) 0:25 Sequence 0:25 move second child to first child ( temp int) 0:25 'i' ( temp int) 0:25 Function Call: type1::memFun1(vi3; ( temp int) 0:25 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:25 Constant: 0:25 10 (const int) 0:25 11 (const int) 0:25 12 (const int) 0:26 add second child into first child ( temp int) 0:26 'i' ( temp int) 0:26 Function Call: type1::memFun2(i1; ( temp int) 0:26 'T' ( temp structure{ temp 2-component vector of float bar, temp int var, temp int var2}) 0:26 Constant: 0:26 17 (const int) 0:28 Branch: Return with expression 0:28 Construct vec4 ( temp 4-component vector of float) 0:28 Convert int to float ( temp float) 0:28 'i' ( temp int) 0:28 Convert int to float ( temp float) 0:28 'i' ( temp int) 0:28 Convert int to float ( temp float) 0:28 'i' ( temp int) 0:28 Convert int to float ( temp float) 0:28 'i' ( temp int) 0:20 Function Definition: main( ( temp void) 0:20 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:20 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'var' ( global 2-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 98 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 96 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "type1" MemberName 9(type1) 0 "bar" MemberName 9(type1) 1 "var" MemberName 9(type1) 2 "var2" Name 16 "type1::memFun1(vi3;" Name 14 "@this" Name 15 "var" Name 22 "type1::memFun2(i1;" Name 20 "@this" Name 21 "a" Name 26 "@main(" Name 29 "var" Name 47 "var" Name 64 "T" Name 72 "i" Name 77 "param" Name 80 "param" Name 96 "@entryPointOutput" Decorate 96(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeInt 32 1 9(type1): TypeStruct 7(fvec2) 8(int) 8(int) 10: TypePointer Function 9(type1) 11: TypeVector 8(int) 3 12: TypePointer Function 11(ivec3) 13: TypeFunction 8(int) 10(ptr) 12(ptr) 18: TypePointer Function 8(int) 19: TypeFunction 8(int) 10(ptr) 18(ptr) 24: TypeVector 6(float) 4 25: TypeFunction 24(fvec4) 28: TypePointer Private 7(fvec2) 29(var): 28(ptr) Variable Private 30: 6(float) Constant 1065353216 31: 6(float) Constant 1073741824 32: 7(fvec2) ConstantComposite 30 31 33: TypeInt 32 0 34: 33(int) Constant 2 37: 8(int) Constant 1 41: 8(int) Constant 2 48: 8(int) Constant 3 49: 11(ivec3) ConstantComposite 37 41 48 52: 8(int) Constant 0 53: 33(int) Constant 1 54: TypePointer Function 6(float) 66: TypePointer Function 7(fvec2) 68: 8(int) Constant 7 70: 8(int) Constant 9 73: 8(int) Constant 10 74: 8(int) Constant 11 75: 8(int) Constant 12 76: 11(ivec3) ConstantComposite 73 74 75 79: 8(int) Constant 17 95: TypePointer Output 24(fvec4) 96(@entryPointOutput): 95(ptr) Variable Output 4(main): 2 Function None 3 5: Label Store 29(var) 32 97: 24(fvec4) FunctionCall 26(@main() Store 96(@entryPointOutput) 97 Return FunctionEnd 16(type1::memFun1(vi3;): 8(int) Function None 13 14(@this): 10(ptr) FunctionParameter 15(var): 12(ptr) FunctionParameter 17: Label 35: 18(ptr) AccessChain 15(var) 34 36: 8(int) Load 35 38: 18(ptr) AccessChain 14(@this) 37 39: 8(int) Load 38 40: 8(int) IAdd 36 39 42: 18(ptr) AccessChain 14(@this) 41 43: 8(int) Load 42 44: 8(int) IAdd 40 43 ReturnValue 44 FunctionEnd 22(type1::memFun2(i1;): 8(int) Function None 19 20(@this): 10(ptr) FunctionParameter 21(a): 18(ptr) FunctionParameter 23: Label 47(var): 12(ptr) Variable Function Store 47(var) 49 50: 18(ptr) AccessChain 47(var) 34 51: 8(int) Load 50 55: 54(ptr) AccessChain 20(@this) 52 53 56: 6(float) Load 55 57: 8(int) ConvertFToS 56 58: 8(int) IAdd 51 57 59: 18(ptr) AccessChain 20(@this) 41 60: 8(int) Load 59 61: 8(int) IAdd 58 60 ReturnValue 61 FunctionEnd 26(@main(): 24(fvec4) Function None 25 27: Label 64(T): 10(ptr) Variable Function 72(i): 18(ptr) Variable Function 77(param): 12(ptr) Variable Function 80(param): 18(ptr) Variable Function 65: 7(fvec2) Load 29(var) 67: 66(ptr) AccessChain 64(T) 52 Store 67 65 69: 18(ptr) AccessChain 64(T) 37 Store 69 68 71: 18(ptr) AccessChain 64(T) 41 Store 71 70 Store 77(param) 76 78: 8(int) FunctionCall 16(type1::memFun1(vi3;) 64(T) 77(param) Store 72(i) 78 Store 80(param) 79 81: 8(int) FunctionCall 22(type1::memFun2(i1;) 64(T) 80(param) 82: 8(int) Load 72(i) 83: 8(int) IAdd 82 81 Store 72(i) 83 84: 8(int) Load 72(i) 85: 6(float) ConvertSToF 84 86: 8(int) Load 72(i) 87: 6(float) ConvertSToF 86 88: 8(int) Load 72(i) 89: 6(float) ConvertSToF 88 90: 8(int) Load 72(i) 91: 6(float) ConvertSToF 90 92: 24(fvec4) CompositeConstruct 85 87 89 91 ReturnValue 92 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.tristream-append.geom.out000066400000000000000000000300651506534232700243520ustar00rootroot00000000000000hlsl.tristream-append.geom Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:8 Function Definition: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void) 0:8 Function Parameters: 0:8 'output' ( in structure{}) 0:8 'TriStream' ( out structure{}) 0:? Sequence 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp structure{}) 0:9 'TriStream' ( out structure{}) 0:9 'output' ( in structure{}) 0:9 EmitVertex ( temp void) 0:14 Function Definition: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void) 0:14 Function Parameters: 0:14 'input' ( in 3-element array of structure{}) 0:14 'TriStream' ( out structure{}) 0:? Sequence 0:15 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void) 0:15 direct index ( temp structure{}) 0:15 'input' ( in 3-element array of structure{}) 0:15 Constant: 0:15 0 (const int) 0:15 'TriStream' ( out structure{}) 0:16 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void) 0:16 direct index ( temp structure{}) 0:16 'input' ( in 3-element array of structure{}) 0:16 Constant: 0:16 1 (const int) 0:16 'TriStream' ( out structure{}) 0:17 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void) 0:17 direct index ( temp structure{}) 0:17 'input' ( in 3-element array of structure{}) 0:17 Constant: 0:17 2 (const int) 0:17 'TriStream' ( out structure{}) 0:14 Function Definition: main( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp structure{}) 0:14 direct index ( temp structure{}) 0:? 'input' ( temp 3-element array of structure{}) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( in structure{}) 0:? 'input' ( in 3-element array of structure{}) 0:14 Constant: 0:14 0 (const int) 0:14 move second child to first child ( temp structure{}) 0:14 direct index ( temp structure{}) 0:? 'input' ( temp 3-element array of structure{}) 0:14 Constant: 0:14 1 (const int) 0:14 direct index ( in structure{}) 0:? 'input' ( in 3-element array of structure{}) 0:14 Constant: 0:14 1 (const int) 0:14 move second child to first child ( temp structure{}) 0:14 direct index ( temp structure{}) 0:? 'input' ( temp 3-element array of structure{}) 0:14 Constant: 0:14 2 (const int) 0:14 direct index ( in structure{}) 0:? 'input' ( in 3-element array of structure{}) 0:14 Constant: 0:14 2 (const int) 0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void) 0:? 'input' ( temp 3-element array of structure{}) 0:? 'TriStream' ( temp structure{}) 0:? Linker Objects Linked geometry stage: Shader version: 500 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:8 Function Definition: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void) 0:8 Function Parameters: 0:8 'output' ( in structure{}) 0:8 'TriStream' ( out structure{}) 0:? Sequence 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp structure{}) 0:9 'TriStream' ( out structure{}) 0:9 'output' ( in structure{}) 0:9 EmitVertex ( temp void) 0:14 Function Definition: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void) 0:14 Function Parameters: 0:14 'input' ( in 3-element array of structure{}) 0:14 'TriStream' ( out structure{}) 0:? Sequence 0:15 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void) 0:15 direct index ( temp structure{}) 0:15 'input' ( in 3-element array of structure{}) 0:15 Constant: 0:15 0 (const int) 0:15 'TriStream' ( out structure{}) 0:16 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void) 0:16 direct index ( temp structure{}) 0:16 'input' ( in 3-element array of structure{}) 0:16 Constant: 0:16 1 (const int) 0:16 'TriStream' ( out structure{}) 0:17 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void) 0:17 direct index ( temp structure{}) 0:17 'input' ( in 3-element array of structure{}) 0:17 Constant: 0:17 2 (const int) 0:17 'TriStream' ( out structure{}) 0:14 Function Definition: main( ( temp void) 0:14 Function Parameters: 0:? Sequence 0:14 Sequence 0:14 move second child to first child ( temp structure{}) 0:14 direct index ( temp structure{}) 0:? 'input' ( temp 3-element array of structure{}) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( in structure{}) 0:? 'input' ( in 3-element array of structure{}) 0:14 Constant: 0:14 0 (const int) 0:14 move second child to first child ( temp structure{}) 0:14 direct index ( temp structure{}) 0:? 'input' ( temp 3-element array of structure{}) 0:14 Constant: 0:14 1 (const int) 0:14 direct index ( in structure{}) 0:? 'input' ( in 3-element array of structure{}) 0:14 Constant: 0:14 1 (const int) 0:14 move second child to first child ( temp structure{}) 0:14 direct index ( temp structure{}) 0:? 'input' ( temp 3-element array of structure{}) 0:14 Constant: 0:14 2 (const int) 0:14 direct index ( in structure{}) 0:? 'input' ( in 3-element array of structure{}) 0:14 Constant: 0:14 2 (const int) 0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void) 0:? 'input' ( temp 3-element array of structure{}) 0:? 'TriStream' ( temp structure{}) 0:? Linker Objects Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Source HLSL 500 Name 4 "main" Name 6 "GSPS_INPUT" Name 11 "EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;" Name 9 "output" Name 10 "TriStream" Name 20 "@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;" Name 18 "input" Name 19 "TriStream" Name 23 "TriStream" Name 27 "param" Name 30 "param" Name 34 "param" Name 37 "param" Name 41 "param" Name 44 "param" Name 47 "input" Name 49 "input" Name 60 "TriStream" Name 61 "param" Name 63 "param" 2: TypeVoid 3: TypeFunction 2 6(GSPS_INPUT): TypeStruct 7: TypePointer Function 6(GSPS_INPUT) 8: TypeFunction 2 7(ptr) 7(ptr) 13: TypeInt 32 0 14: 13(int) Constant 3 15: TypeArray 6(GSPS_INPUT) 14 16: TypePointer Function 15 17: TypeFunction 2 16(ptr) 7(ptr) 22: TypePointer Output 6(GSPS_INPUT) 23(TriStream): 22(ptr) Variable Output 25: TypeInt 32 1 26: 25(int) Constant 0 33: 25(int) Constant 1 40: 25(int) Constant 2 48: TypePointer Input 15 49(input): 48(ptr) Variable Input 50: TypePointer Input 6(GSPS_INPUT) 4(main): 2 Function None 3 5: Label 47(input): 16(ptr) Variable Function 60(TriStream): 7(ptr) Variable Function 61(param): 16(ptr) Variable Function 63(param): 7(ptr) Variable Function 51: 50(ptr) AccessChain 49(input) 26 52:6(GSPS_INPUT) Load 51 53: 7(ptr) AccessChain 47(input) 26 Store 53 52 54: 50(ptr) AccessChain 49(input) 33 55:6(GSPS_INPUT) Load 54 56: 7(ptr) AccessChain 47(input) 33 Store 56 55 57: 50(ptr) AccessChain 49(input) 40 58:6(GSPS_INPUT) Load 57 59: 7(ptr) AccessChain 47(input) 40 Store 59 58 62: 15 Load 47(input) Store 61(param) 62 64: 2 FunctionCall 20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;) 61(param) 63(param) 65:6(GSPS_INPUT) Load 63(param) Store 60(TriStream) 65 Return FunctionEnd 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;): 2 Function None 8 9(output): 7(ptr) FunctionParameter 10(TriStream): 7(ptr) FunctionParameter 12: Label 24:6(GSPS_INPUT) Load 9(output) Store 23(TriStream) 24 EmitVertex Return FunctionEnd 20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;): 2 Function None 17 18(input): 16(ptr) FunctionParameter 19(TriStream): 7(ptr) FunctionParameter 21: Label 27(param): 7(ptr) Variable Function 30(param): 7(ptr) Variable Function 34(param): 7(ptr) Variable Function 37(param): 7(ptr) Variable Function 41(param): 7(ptr) Variable Function 44(param): 7(ptr) Variable Function 28: 7(ptr) AccessChain 18(input) 26 29:6(GSPS_INPUT) Load 28 Store 27(param) 29 31: 2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 27(param) 30(param) 32:6(GSPS_INPUT) Load 30(param) Store 19(TriStream) 32 35: 7(ptr) AccessChain 18(input) 33 36:6(GSPS_INPUT) Load 35 Store 34(param) 36 38: 2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 34(param) 37(param) 39:6(GSPS_INPUT) Load 37(param) Store 19(TriStream) 39 42: 7(ptr) AccessChain 18(input) 40 43:6(GSPS_INPUT) Load 42 Store 41(param) 43 45: 2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 41(param) 44(param) 46:6(GSPS_INPUT) Load 44(param) Store 19(TriStream) 46 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.tx.bracket.frag.out000066400000000000000000001266141506534232700231360ustar00rootroot00000000000000hlsl.tx.bracket.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:38 Function Definition: Fn1(vi4; ( temp 4-component vector of int) 0:38 Function Parameters: 0:38 'x' ( in 4-component vector of int) 0:? Sequence 0:38 Branch: Return with expression 0:38 'x' ( in 4-component vector of int) 0:39 Function Definition: Fn1(vu4; ( temp 4-component vector of uint) 0:39 Function Parameters: 0:39 'x' ( in 4-component vector of uint) 0:? Sequence 0:39 Branch: Return with expression 0:39 'x' ( in 4-component vector of uint) 0:40 Function Definition: Fn1(vf4; ( temp 4-component vector of float) 0:40 Function Parameters: 0:40 'x' ( in 4-component vector of float) 0:? Sequence 0:40 Branch: Return with expression 0:40 'x' ( in 4-component vector of float) 0:42 Function Definition: SomeValue( ( temp 4-component vector of float) 0:42 Function Parameters: 0:? Sequence 0:42 Branch: Return with expression 0:42 Convert int to float ( temp 4-component vector of float) 0:42 c4: direct index for structure ( uniform 4-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:42 Constant: 0:42 3 (const uint) 0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:45 Function Parameters: 0:? Sequence 0:49 textureFetch ( temp 4-component vector of float) 0:49 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:49 c1: direct index for structure ( uniform int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:49 Constant: 0:49 0 (const uint) 0:49 Constant: 0:49 0 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'r00' ( temp 4-component vector of float) 0:51 textureFetch ( temp 4-component vector of float) 0:51 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:51 c1: direct index for structure ( uniform int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 0 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of int) 0:52 'r01' ( temp 4-component vector of int) 0:52 textureFetch ( temp 4-component vector of int) 0:52 'g_tTex1di4' ( uniform itexture1D) 0:52 c1: direct index for structure ( uniform int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 0 (const uint) 0:52 Constant: 0:52 0 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of uint) 0:53 'r02' ( temp 4-component vector of uint) 0:53 textureFetch ( temp 4-component vector of uint) 0:53 'g_tTex1du4' ( uniform utexture1D) 0:53 c1: direct index for structure ( uniform int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 0 (const uint) 0:53 Constant: 0:53 0 (const int) 0:56 Sequence 0:56 move second child to first child ( temp 4-component vector of float) 0:56 'r10' ( temp 4-component vector of float) 0:56 textureFetch ( temp 4-component vector of float) 0:56 'g_tTex2df4' ( uniform texture2D) 0:56 c2: direct index for structure ( uniform 2-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 1 (const uint) 0:56 Constant: 0:56 0 (const int) 0:57 Sequence 0:57 move second child to first child ( temp 4-component vector of int) 0:57 'r11' ( temp 4-component vector of int) 0:57 textureFetch ( temp 4-component vector of int) 0:57 'g_tTex2di4' ( uniform itexture2D) 0:57 c2: direct index for structure ( uniform 2-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 1 (const uint) 0:57 Constant: 0:57 0 (const int) 0:58 Sequence 0:58 move second child to first child ( temp 4-component vector of uint) 0:58 'r12' ( temp 4-component vector of uint) 0:58 textureFetch ( temp 4-component vector of uint) 0:58 'g_tTex2du4' ( uniform utexture2D) 0:58 c2: direct index for structure ( uniform 2-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 1 (const uint) 0:58 Constant: 0:58 0 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of float) 0:61 'r20' ( temp 4-component vector of float) 0:61 textureFetch ( temp 4-component vector of float) 0:61 'g_tTex3df4' ( uniform texture3D) 0:61 c3: direct index for structure ( uniform 3-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 2 (const uint) 0:61 Constant: 0:61 0 (const int) 0:62 Sequence 0:62 move second child to first child ( temp 4-component vector of int) 0:62 'r21' ( temp 4-component vector of int) 0:62 textureFetch ( temp 4-component vector of int) 0:62 'g_tTex3di4' ( uniform itexture3D) 0:62 c3: direct index for structure ( uniform 3-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 2 (const uint) 0:62 Constant: 0:62 0 (const int) 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of uint) 0:63 'r22' ( temp 4-component vector of uint) 0:63 textureFetch ( temp 4-component vector of uint) 0:63 'g_tTex3du4' ( uniform utexture3D) 0:63 c3: direct index for structure ( uniform 3-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 2 (const uint) 0:63 Constant: 0:63 0 (const int) 0:66 Function Call: Fn1(vf4; ( temp 4-component vector of float) 0:66 textureFetch ( temp 4-component vector of float) 0:66 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:66 c1: direct index for structure ( uniform int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 0 (const uint) 0:66 Constant: 0:66 0 (const int) 0:67 Function Call: Fn1(vi4; ( temp 4-component vector of int) 0:67 textureFetch ( temp 4-component vector of int) 0:67 'g_tTex1di4' ( uniform itexture1D) 0:67 c1: direct index for structure ( uniform int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 0 (const uint) 0:67 Constant: 0:67 0 (const int) 0:68 Function Call: Fn1(vu4; ( temp 4-component vector of uint) 0:68 textureFetch ( temp 4-component vector of uint) 0:68 'g_tTex1du4' ( uniform utexture1D) 0:68 c1: direct index for structure ( uniform int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 0 (const uint) 0:68 Constant: 0:68 0 (const int) 0:70 move second child to first child ( temp 4-component vector of float) 0:70 Color: direct index for structure ( temp 4-component vector of float) 0:70 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1.000000 0:70 1.000000 0:70 1.000000 0:70 1.000000 0:72 Branch: Return with expression 0:72 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:45 Function Definition: main( ( temp void) 0:45 Function Parameters: 0:? Sequence 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:45 Constant: 0:45 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:38 Function Definition: Fn1(vi4; ( temp 4-component vector of int) 0:38 Function Parameters: 0:38 'x' ( in 4-component vector of int) 0:? Sequence 0:38 Branch: Return with expression 0:38 'x' ( in 4-component vector of int) 0:39 Function Definition: Fn1(vu4; ( temp 4-component vector of uint) 0:39 Function Parameters: 0:39 'x' ( in 4-component vector of uint) 0:? Sequence 0:39 Branch: Return with expression 0:39 'x' ( in 4-component vector of uint) 0:40 Function Definition: Fn1(vf4; ( temp 4-component vector of float) 0:40 Function Parameters: 0:40 'x' ( in 4-component vector of float) 0:? Sequence 0:40 Branch: Return with expression 0:40 'x' ( in 4-component vector of float) 0:42 Function Definition: SomeValue( ( temp 4-component vector of float) 0:42 Function Parameters: 0:? Sequence 0:42 Branch: Return with expression 0:42 Convert int to float ( temp 4-component vector of float) 0:42 c4: direct index for structure ( uniform 4-component vector of int) 0:42 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:42 Constant: 0:42 3 (const uint) 0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:45 Function Parameters: 0:? Sequence 0:49 textureFetch ( temp 4-component vector of float) 0:49 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:49 c1: direct index for structure ( uniform int) 0:49 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:49 Constant: 0:49 0 (const uint) 0:49 Constant: 0:49 0 (const int) 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'r00' ( temp 4-component vector of float) 0:51 textureFetch ( temp 4-component vector of float) 0:51 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:51 c1: direct index for structure ( uniform int) 0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:51 Constant: 0:51 0 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of int) 0:52 'r01' ( temp 4-component vector of int) 0:52 textureFetch ( temp 4-component vector of int) 0:52 'g_tTex1di4' ( uniform itexture1D) 0:52 c1: direct index for structure ( uniform int) 0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:52 Constant: 0:52 0 (const uint) 0:52 Constant: 0:52 0 (const int) 0:53 Sequence 0:53 move second child to first child ( temp 4-component vector of uint) 0:53 'r02' ( temp 4-component vector of uint) 0:53 textureFetch ( temp 4-component vector of uint) 0:53 'g_tTex1du4' ( uniform utexture1D) 0:53 c1: direct index for structure ( uniform int) 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:53 Constant: 0:53 0 (const uint) 0:53 Constant: 0:53 0 (const int) 0:56 Sequence 0:56 move second child to first child ( temp 4-component vector of float) 0:56 'r10' ( temp 4-component vector of float) 0:56 textureFetch ( temp 4-component vector of float) 0:56 'g_tTex2df4' ( uniform texture2D) 0:56 c2: direct index for structure ( uniform 2-component vector of int) 0:56 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:56 Constant: 0:56 1 (const uint) 0:56 Constant: 0:56 0 (const int) 0:57 Sequence 0:57 move second child to first child ( temp 4-component vector of int) 0:57 'r11' ( temp 4-component vector of int) 0:57 textureFetch ( temp 4-component vector of int) 0:57 'g_tTex2di4' ( uniform itexture2D) 0:57 c2: direct index for structure ( uniform 2-component vector of int) 0:57 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:57 Constant: 0:57 1 (const uint) 0:57 Constant: 0:57 0 (const int) 0:58 Sequence 0:58 move second child to first child ( temp 4-component vector of uint) 0:58 'r12' ( temp 4-component vector of uint) 0:58 textureFetch ( temp 4-component vector of uint) 0:58 'g_tTex2du4' ( uniform utexture2D) 0:58 c2: direct index for structure ( uniform 2-component vector of int) 0:58 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:58 Constant: 0:58 1 (const uint) 0:58 Constant: 0:58 0 (const int) 0:61 Sequence 0:61 move second child to first child ( temp 4-component vector of float) 0:61 'r20' ( temp 4-component vector of float) 0:61 textureFetch ( temp 4-component vector of float) 0:61 'g_tTex3df4' ( uniform texture3D) 0:61 c3: direct index for structure ( uniform 3-component vector of int) 0:61 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:61 Constant: 0:61 2 (const uint) 0:61 Constant: 0:61 0 (const int) 0:62 Sequence 0:62 move second child to first child ( temp 4-component vector of int) 0:62 'r21' ( temp 4-component vector of int) 0:62 textureFetch ( temp 4-component vector of int) 0:62 'g_tTex3di4' ( uniform itexture3D) 0:62 c3: direct index for structure ( uniform 3-component vector of int) 0:62 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:62 Constant: 0:62 2 (const uint) 0:62 Constant: 0:62 0 (const int) 0:63 Sequence 0:63 move second child to first child ( temp 4-component vector of uint) 0:63 'r22' ( temp 4-component vector of uint) 0:63 textureFetch ( temp 4-component vector of uint) 0:63 'g_tTex3du4' ( uniform utexture3D) 0:63 c3: direct index for structure ( uniform 3-component vector of int) 0:63 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:63 Constant: 0:63 2 (const uint) 0:63 Constant: 0:63 0 (const int) 0:66 Function Call: Fn1(vf4; ( temp 4-component vector of float) 0:66 textureFetch ( temp 4-component vector of float) 0:66 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:66 c1: direct index for structure ( uniform int) 0:66 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:66 Constant: 0:66 0 (const uint) 0:66 Constant: 0:66 0 (const int) 0:67 Function Call: Fn1(vi4; ( temp 4-component vector of int) 0:67 textureFetch ( temp 4-component vector of int) 0:67 'g_tTex1di4' ( uniform itexture1D) 0:67 c1: direct index for structure ( uniform int) 0:67 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:67 Constant: 0:67 0 (const uint) 0:67 Constant: 0:67 0 (const int) 0:68 Function Call: Fn1(vu4; ( temp 4-component vector of uint) 0:68 textureFetch ( temp 4-component vector of uint) 0:68 'g_tTex1du4' ( uniform utexture1D) 0:68 c1: direct index for structure ( uniform int) 0:68 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:68 Constant: 0:68 0 (const uint) 0:68 Constant: 0:68 0 (const int) 0:70 move second child to first child ( temp 4-component vector of float) 0:70 Color: direct index for structure ( temp 4-component vector of float) 0:70 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 1.000000 0:70 1.000000 0:70 1.000000 0:70 1.000000 0:72 Branch: Return with expression 0:72 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:45 Function Definition: main( ( temp void) 0:45 Function Parameters: 0:? Sequence 0:45 Sequence 0:45 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float Color}) 0:45 Constant: 0:45 0 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D) 0:? 'g_tTex1di4' ( uniform itexture1D) 0:? 'g_tTex1du4' ( uniform utexture1D) 0:? 'g_tTex2df4' ( uniform texture2D) 0:? 'g_tTex2di4' ( uniform itexture2D) 0:? 'g_tTex2du4' ( uniform utexture2D) 0:? 'g_tTex3df4' ( uniform texture3D) 0:? 'g_tTex3di4' ( uniform itexture3D) 0:? 'g_tTex3du4' ( uniform utexture3D) 0:? 'g_tTex1df4a' ( uniform texture1DArray) 0:? 'g_tTex1di4a' ( uniform itexture1DArray) 0:? 'g_tTex1du4a' ( uniform utexture1DArray) 0:? 'g_tTex2df4a' ( uniform texture2DArray) 0:? 'g_tTex2di4a' ( uniform itexture2DArray) 0:? 'g_tTex2du4a' ( uniform utexture2DArray) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 188 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 164 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "Fn1(vi4;" Name 10 "x" Name 18 "Fn1(vu4;" Name 17 "x" Name 25 "Fn1(vf4;" Name 24 "x" Name 28 "SomeValue(" Name 30 "PS_OUTPUT" MemberName 30(PS_OUTPUT) 0 "Color" Name 32 "@main(" Name 45 "$Global" MemberName 45($Global) 0 "c1" MemberName 45($Global) 1 "c2" MemberName 45($Global) 2 "c3" MemberName 45($Global) 3 "c4" MemberName 45($Global) 4 "o1" MemberName 45($Global) 5 "o2" MemberName 45($Global) 6 "o3" MemberName 45($Global) 7 "o4" Name 47 "" Name 57 "g_tTex1df4" Name 64 "r00" Name 69 "r01" Name 72 "g_tTex1di4" Name 77 "r02" Name 80 "g_tTex1du4" Name 85 "r10" Name 88 "g_tTex2df4" Name 95 "r11" Name 98 "g_tTex2di4" Name 103 "r12" Name 106 "g_tTex2du4" Name 111 "r20" Name 114 "g_tTex3df4" Name 121 "r21" Name 124 "g_tTex3di4" Name 129 "r22" Name 132 "g_tTex3du4" Name 141 "param" Name 147 "param" Name 153 "param" Name 156 "psout" Name 164 "@entryPointOutput.Color" Name 169 "g_sSamp" Name 172 "g_tTex1df4a" Name 175 "g_tTex1di4a" Name 178 "g_tTex1du4a" Name 181 "g_tTex2df4a" Name 184 "g_tTex2di4a" Name 187 "g_tTex2du4a" Decorate 45($Global) Block MemberDecorate 45($Global) 0 Offset 0 MemberDecorate 45($Global) 1 Offset 8 MemberDecorate 45($Global) 2 Offset 16 MemberDecorate 45($Global) 3 Offset 32 MemberDecorate 45($Global) 4 Offset 48 MemberDecorate 45($Global) 5 Offset 56 MemberDecorate 45($Global) 6 Offset 64 MemberDecorate 45($Global) 7 Offset 80 Decorate 47 Binding 9 Decorate 47 DescriptorSet 0 Decorate 57(g_tTex1df4) Binding 0 Decorate 57(g_tTex1df4) DescriptorSet 0 Decorate 72(g_tTex1di4) Binding 1 Decorate 72(g_tTex1di4) DescriptorSet 0 Decorate 80(g_tTex1du4) Binding 2 Decorate 80(g_tTex1du4) DescriptorSet 0 Decorate 88(g_tTex2df4) Binding 3 Decorate 88(g_tTex2df4) DescriptorSet 0 Decorate 98(g_tTex2di4) Binding 4 Decorate 98(g_tTex2di4) DescriptorSet 0 Decorate 106(g_tTex2du4) Binding 5 Decorate 106(g_tTex2du4) DescriptorSet 0 Decorate 114(g_tTex3df4) Binding 6 Decorate 114(g_tTex3df4) DescriptorSet 0 Decorate 124(g_tTex3di4) Binding 7 Decorate 124(g_tTex3di4) DescriptorSet 0 Decorate 132(g_tTex3du4) Binding 8 Decorate 132(g_tTex3du4) DescriptorSet 0 Decorate 164(@entryPointOutput.Color) Location 0 Decorate 169(g_sSamp) Binding 0 Decorate 169(g_sSamp) DescriptorSet 0 Decorate 172(g_tTex1df4a) Binding 0 Decorate 172(g_tTex1df4a) DescriptorSet 0 Decorate 175(g_tTex1di4a) Binding 0 Decorate 175(g_tTex1di4a) DescriptorSet 0 Decorate 178(g_tTex1du4a) Binding 0 Decorate 178(g_tTex1du4a) DescriptorSet 0 Decorate 181(g_tTex2df4a) Binding 0 Decorate 181(g_tTex2df4a) DescriptorSet 0 Decorate 184(g_tTex2di4a) Binding 0 Decorate 184(g_tTex2di4a) DescriptorSet 0 Decorate 187(g_tTex2du4a) Binding 0 Decorate 187(g_tTex2du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 4 8: TypePointer Function 7(ivec4) 9: TypeFunction 7(ivec4) 8(ptr) 13: TypeInt 32 0 14: TypeVector 13(int) 4 15: TypePointer Function 14(ivec4) 16: TypeFunction 14(ivec4) 15(ptr) 20: TypeFloat 32 21: TypeVector 20(float) 4 22: TypePointer Function 21(fvec4) 23: TypeFunction 21(fvec4) 22(ptr) 27: TypeFunction 21(fvec4) 30(PS_OUTPUT): TypeStruct 21(fvec4) 31: TypeFunction 30(PS_OUTPUT) 43: TypeVector 6(int) 2 44: TypeVector 6(int) 3 45($Global): TypeStruct 6(int) 43(ivec2) 44(ivec3) 7(ivec4) 6(int) 43(ivec2) 44(ivec3) 7(ivec4) 46: TypePointer Uniform 45($Global) 47: 46(ptr) Variable Uniform 48: 6(int) Constant 3 49: TypePointer Uniform 7(ivec4) 55: TypeImage 20(float) 1D sampled format:Unknown 56: TypePointer UniformConstant 55 57(g_tTex1df4): 56(ptr) Variable UniformConstant 59: 6(int) Constant 0 60: TypePointer Uniform 6(int) 70: TypeImage 6(int) 1D sampled format:Unknown 71: TypePointer UniformConstant 70 72(g_tTex1di4): 71(ptr) Variable UniformConstant 78: TypeImage 13(int) 1D sampled format:Unknown 79: TypePointer UniformConstant 78 80(g_tTex1du4): 79(ptr) Variable UniformConstant 86: TypeImage 20(float) 2D sampled format:Unknown 87: TypePointer UniformConstant 86 88(g_tTex2df4): 87(ptr) Variable UniformConstant 90: 6(int) Constant 1 91: TypePointer Uniform 43(ivec2) 96: TypeImage 6(int) 2D sampled format:Unknown 97: TypePointer UniformConstant 96 98(g_tTex2di4): 97(ptr) Variable UniformConstant 104: TypeImage 13(int) 2D sampled format:Unknown 105: TypePointer UniformConstant 104 106(g_tTex2du4): 105(ptr) Variable UniformConstant 112: TypeImage 20(float) 3D sampled format:Unknown 113: TypePointer UniformConstant 112 114(g_tTex3df4): 113(ptr) Variable UniformConstant 116: 6(int) Constant 2 117: TypePointer Uniform 44(ivec3) 122: TypeImage 6(int) 3D sampled format:Unknown 123: TypePointer UniformConstant 122 124(g_tTex3di4): 123(ptr) Variable UniformConstant 130: TypeImage 13(int) 3D sampled format:Unknown 131: TypePointer UniformConstant 130 132(g_tTex3du4): 131(ptr) Variable UniformConstant 155: TypePointer Function 30(PS_OUTPUT) 157: 20(float) Constant 1065353216 158: 21(fvec4) ConstantComposite 157 157 157 157 163: TypePointer Output 21(fvec4) 164(@entryPointOutput.Color): 163(ptr) Variable Output 167: TypeSampler 168: TypePointer UniformConstant 167 169(g_sSamp): 168(ptr) Variable UniformConstant 170: TypeImage 20(float) 1D array sampled format:Unknown 171: TypePointer UniformConstant 170 172(g_tTex1df4a): 171(ptr) Variable UniformConstant 173: TypeImage 6(int) 1D array sampled format:Unknown 174: TypePointer UniformConstant 173 175(g_tTex1di4a): 174(ptr) Variable UniformConstant 176: TypeImage 13(int) 1D array sampled format:Unknown 177: TypePointer UniformConstant 176 178(g_tTex1du4a): 177(ptr) Variable UniformConstant 179: TypeImage 20(float) 2D array sampled format:Unknown 180: TypePointer UniformConstant 179 181(g_tTex2df4a): 180(ptr) Variable UniformConstant 182: TypeImage 6(int) 2D array sampled format:Unknown 183: TypePointer UniformConstant 182 184(g_tTex2di4a): 183(ptr) Variable UniformConstant 185: TypeImage 13(int) 2D array sampled format:Unknown 186: TypePointer UniformConstant 185 187(g_tTex2du4a): 186(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 165:30(PS_OUTPUT) FunctionCall 32(@main() 166: 21(fvec4) CompositeExtract 165 0 Store 164(@entryPointOutput.Color) 166 Return FunctionEnd 11(Fn1(vi4;): 7(ivec4) Function None 9 10(x): 8(ptr) FunctionParameter 12: Label 34: 7(ivec4) Load 10(x) ReturnValue 34 FunctionEnd 18(Fn1(vu4;): 14(ivec4) Function None 16 17(x): 15(ptr) FunctionParameter 19: Label 37: 14(ivec4) Load 17(x) ReturnValue 37 FunctionEnd 25(Fn1(vf4;): 21(fvec4) Function None 23 24(x): 22(ptr) FunctionParameter 26: Label 40: 21(fvec4) Load 24(x) ReturnValue 40 FunctionEnd 28(SomeValue(): 21(fvec4) Function None 27 29: Label 50: 49(ptr) AccessChain 47 48 51: 7(ivec4) Load 50 52: 21(fvec4) ConvertSToF 51 ReturnValue 52 FunctionEnd 32(@main():30(PS_OUTPUT) Function None 31 33: Label 64(r00): 22(ptr) Variable Function 69(r01): 8(ptr) Variable Function 77(r02): 15(ptr) Variable Function 85(r10): 22(ptr) Variable Function 95(r11): 8(ptr) Variable Function 103(r12): 15(ptr) Variable Function 111(r20): 22(ptr) Variable Function 121(r21): 8(ptr) Variable Function 129(r22): 15(ptr) Variable Function 141(param): 22(ptr) Variable Function 147(param): 8(ptr) Variable Function 153(param): 15(ptr) Variable Function 156(psout): 155(ptr) Variable Function 58: 55 Load 57(g_tTex1df4) 61: 60(ptr) AccessChain 47 59 62: 6(int) Load 61 63: 21(fvec4) ImageFetch 58 62 Lod 59 65: 55 Load 57(g_tTex1df4) 66: 60(ptr) AccessChain 47 59 67: 6(int) Load 66 68: 21(fvec4) ImageFetch 65 67 Lod 59 Store 64(r00) 68 73: 70 Load 72(g_tTex1di4) 74: 60(ptr) AccessChain 47 59 75: 6(int) Load 74 76: 7(ivec4) ImageFetch 73 75 Lod 59 Store 69(r01) 76 81: 78 Load 80(g_tTex1du4) 82: 60(ptr) AccessChain 47 59 83: 6(int) Load 82 84: 14(ivec4) ImageFetch 81 83 Lod 59 Store 77(r02) 84 89: 86 Load 88(g_tTex2df4) 92: 91(ptr) AccessChain 47 90 93: 43(ivec2) Load 92 94: 21(fvec4) ImageFetch 89 93 Lod 59 Store 85(r10) 94 99: 96 Load 98(g_tTex2di4) 100: 91(ptr) AccessChain 47 90 101: 43(ivec2) Load 100 102: 7(ivec4) ImageFetch 99 101 Lod 59 Store 95(r11) 102 107: 104 Load 106(g_tTex2du4) 108: 91(ptr) AccessChain 47 90 109: 43(ivec2) Load 108 110: 14(ivec4) ImageFetch 107 109 Lod 59 Store 103(r12) 110 115: 112 Load 114(g_tTex3df4) 118: 117(ptr) AccessChain 47 116 119: 44(ivec3) Load 118 120: 21(fvec4) ImageFetch 115 119 Lod 59 Store 111(r20) 120 125: 122 Load 124(g_tTex3di4) 126: 117(ptr) AccessChain 47 116 127: 44(ivec3) Load 126 128: 7(ivec4) ImageFetch 125 127 Lod 59 Store 121(r21) 128 133: 130 Load 132(g_tTex3du4) 134: 117(ptr) AccessChain 47 116 135: 44(ivec3) Load 134 136: 14(ivec4) ImageFetch 133 135 Lod 59 Store 129(r22) 136 137: 55 Load 57(g_tTex1df4) 138: 60(ptr) AccessChain 47 59 139: 6(int) Load 138 140: 21(fvec4) ImageFetch 137 139 Lod 59 Store 141(param) 140 142: 21(fvec4) FunctionCall 25(Fn1(vf4;) 141(param) 143: 70 Load 72(g_tTex1di4) 144: 60(ptr) AccessChain 47 59 145: 6(int) Load 144 146: 7(ivec4) ImageFetch 143 145 Lod 59 Store 147(param) 146 148: 7(ivec4) FunctionCall 11(Fn1(vi4;) 147(param) 149: 78 Load 80(g_tTex1du4) 150: 60(ptr) AccessChain 47 59 151: 6(int) Load 150 152: 14(ivec4) ImageFetch 149 151 Lod 59 Store 153(param) 152 154: 14(ivec4) FunctionCall 18(Fn1(vu4;) 153(param) 159: 22(ptr) AccessChain 156(psout) 59 Store 159 158 160:30(PS_OUTPUT) Load 156(psout) ReturnValue 160 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.tx.overload.frag.out000066400000000000000000000253141506534232700233310ustar00rootroot00000000000000hlsl.tx.overload.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: Func(t211; ( temp float) 0:8 Function Parameters: 0:8 'DummyTex' ( in texture2D) 0:? Sequence 0:8 Branch: Return with expression 0:8 Constant: 0:8 1.000000 0:9 Function Definition: Func(t21; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 'DummyTex' ( in texture2D) 0:? Sequence 0:9 Branch: Return with expression 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:11 Function Definition: Func(I211; ( temp float) 0:11 Function Parameters: 0:11 'DummyTex' (layout( r32f) in image2D) 0:? Sequence 0:11 Branch: Return with expression 0:11 Constant: 0:11 1.000000 0:12 Function Definition: Func(I21; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'DummyTex' (layout( rgba32f) in image2D) 0:? Sequence 0:12 Branch: Return with expression 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:15 Function Definition: @main( ( temp 4-component vector of float) 0:15 Function Parameters: 0:? Sequence 0:16 Branch: Return with expression 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 Function Call: Func(t211; ( temp float) 0:16 'tf1' ( uniform texture2D) 0:16 Function Call: Func(t21; ( temp 4-component vector of float) 0:16 'tf4' ( uniform texture2D) 0:16 Function Call: Func(I211; ( temp float) 0:16 'twf1' (layout( r32f) uniform image2D) 0:16 Function Call: Func(I21; ( temp 4-component vector of float) 0:16 'twf4' (layout( rgba32f) uniform image2D) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:15 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tf1' ( uniform texture2D) 0:? 'tf4' ( uniform texture2D) 0:? 'twf1' (layout( r32f) uniform image2D) 0:? 'twf4' (layout( rgba32f) uniform image2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:8 Function Definition: Func(t211; ( temp float) 0:8 Function Parameters: 0:8 'DummyTex' ( in texture2D) 0:? Sequence 0:8 Branch: Return with expression 0:8 Constant: 0:8 1.000000 0:9 Function Definition: Func(t21; ( temp 4-component vector of float) 0:9 Function Parameters: 0:9 'DummyTex' ( in texture2D) 0:? Sequence 0:9 Branch: Return with expression 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:11 Function Definition: Func(I211; ( temp float) 0:11 Function Parameters: 0:11 'DummyTex' (layout( r32f) in image2D) 0:? Sequence 0:11 Branch: Return with expression 0:11 Constant: 0:11 1.000000 0:12 Function Definition: Func(I21; ( temp 4-component vector of float) 0:12 Function Parameters: 0:12 'DummyTex' (layout( rgba32f) in image2D) 0:? Sequence 0:12 Branch: Return with expression 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:15 Function Definition: @main( ( temp 4-component vector of float) 0:15 Function Parameters: 0:? Sequence 0:16 Branch: Return with expression 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 add ( temp 4-component vector of float) 0:16 Function Call: Func(t211; ( temp float) 0:16 'tf1' ( uniform texture2D) 0:16 Function Call: Func(t21; ( temp 4-component vector of float) 0:16 'tf4' ( uniform texture2D) 0:16 Function Call: Func(I211; ( temp float) 0:16 'twf1' (layout( r32f) uniform image2D) 0:16 Function Call: Func(I21; ( temp 4-component vector of float) 0:16 'twf4' (layout( rgba32f) uniform image2D) 0:15 Function Definition: main( ( temp void) 0:15 Function Parameters: 0:? Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:15 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? 'tf1' ( uniform texture2D) 0:? 'tf4' ( uniform texture2D) 0:? 'twf1' (layout( r32f) uniform image2D) 0:? 'twf4' (layout( rgba32f) uniform image2D) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 71 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "Func(t211;" Name 10 "DummyTex" Name 16 "Func(t21;" Name 15 "DummyTex" Name 22 "Func(I211;" Name 21 "DummyTex" Name 28 "Func(I21;" Name 27 "DummyTex" Name 31 "@main(" Name 45 "tf1" Name 46 "param" Name 49 "tf4" Name 50 "param" Name 56 "twf1" Name 57 "param" Name 63 "twf4" Name 64 "param" Name 71 "@entryPointOutput" Decorate 45(tf1) Binding 0 Decorate 45(tf1) DescriptorSet 0 Decorate 49(tf4) Binding 1 Decorate 49(tf4) DescriptorSet 0 Decorate 56(twf1) Binding 2 Decorate 56(twf1) DescriptorSet 0 Decorate 63(twf4) Binding 3 Decorate 63(twf4) DescriptorSet 0 Decorate 71(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) 2D sampled format:Unknown 8: TypePointer Function 7 9: TypeFunction 6(float) 8(ptr) 13: TypeVector 6(float) 4 14: TypeFunction 13(fvec4) 8(ptr) 18: TypeImage 6(float) 2D nonsampled format:R32f 19: TypePointer Function 18 20: TypeFunction 6(float) 19(ptr) 24: TypeImage 6(float) 2D nonsampled format:Rgba32f 25: TypePointer Function 24 26: TypeFunction 13(fvec4) 25(ptr) 30: TypeFunction 13(fvec4) 33: 6(float) Constant 1065353216 36: 6(float) Constant 0 37: 13(fvec4) ConstantComposite 36 36 36 36 44: TypePointer UniformConstant 7 45(tf1): 44(ptr) Variable UniformConstant 49(tf4): 44(ptr) Variable UniformConstant 55: TypePointer UniformConstant 18 56(twf1): 55(ptr) Variable UniformConstant 62: TypePointer UniformConstant 24 63(twf4): 62(ptr) Variable UniformConstant 70: TypePointer Output 13(fvec4) 71(@entryPointOutput): 70(ptr) Variable Output 4(main): 2 Function None 3 5: Label 72: 13(fvec4) FunctionCall 31(@main() Store 71(@entryPointOutput) 72 Return FunctionEnd 11(Func(t211;): 6(float) Function None 9 10(DummyTex): 8(ptr) FunctionParameter 12: Label ReturnValue 33 FunctionEnd 16(Func(t21;): 13(fvec4) Function None 14 15(DummyTex): 8(ptr) FunctionParameter 17: Label ReturnValue 37 FunctionEnd 22(Func(I211;): 6(float) Function None 20 21(DummyTex): 19(ptr) FunctionParameter 23: Label ReturnValue 33 FunctionEnd 28(Func(I21;): 13(fvec4) Function None 26 27(DummyTex): 25(ptr) FunctionParameter 29: Label ReturnValue 37 FunctionEnd 31(@main(): 13(fvec4) Function None 30 32: Label 46(param): 8(ptr) Variable Function 50(param): 8(ptr) Variable Function 57(param): 19(ptr) Variable Function 64(param): 25(ptr) Variable Function 47: 7 Load 45(tf1) Store 46(param) 47 48: 6(float) FunctionCall 11(Func(t211;) 46(param) 51: 7 Load 49(tf4) Store 50(param) 51 52: 13(fvec4) FunctionCall 16(Func(t21;) 50(param) 53: 13(fvec4) CompositeConstruct 48 48 48 48 54: 13(fvec4) FAdd 53 52 58: 18 Load 56(twf1) Store 57(param) 58 59: 6(float) FunctionCall 22(Func(I211;) 57(param) 60: 13(fvec4) CompositeConstruct 59 59 59 59 61: 13(fvec4) FAdd 54 60 65: 24 Load 63(twf4) Store 64(param) 65 66: 13(fvec4) FunctionCall 28(Func(I21;) 64(param) 67: 13(fvec4) FAdd 61 66 ReturnValue 67 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.type.half.frag.out000066400000000000000000000240141506534232700227520ustar00rootroot00000000000000hlsl.type.half.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @main( ( temp 4-component vector of float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp float) 0:4 'h0' ( temp float) 0:4 Constant: 0:4 0.000000 0:5 Sequence 0:5 move second child to first child ( temp 1-component vector of float) 0:5 'h1' ( temp 1-component vector of float) 0:5 Constant: 0:5 1.000000 0:6 Sequence 0:6 move second child to first child ( temp 2-component vector of float) 0:6 'h2' ( temp 2-component vector of float) 0:6 Constant: 0:6 2.000000 0:6 2.000000 0:7 Sequence 0:7 move second child to first child ( temp 3-component vector of float) 0:7 'h3' ( temp 3-component vector of float) 0:7 Constant: 0:7 3.000000 0:7 3.000000 0:7 3.000000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'h4' ( temp 4-component vector of float) 0:8 Constant: 0:8 4.000000 0:8 4.000000 0:8 4.000000 0:8 4.000000 0:15 Sequence 0:15 move second child to first child ( temp 2X2 matrix of float) 0:15 'h22' ( temp 2X2 matrix of float) 0:15 Constant: 0:15 1.000000 0:15 2.000000 0:15 3.000000 0:15 4.000000 0:16 Sequence 0:16 move second child to first child ( temp 2X3 matrix of float) 0:16 'h23' ( temp 2X3 matrix of float) 0:16 Constant: 0:16 4.900000 0:16 4.900000 0:16 4.900000 0:16 4.900000 0:16 4.900000 0:16 4.900000 0:27 Branch: Return with expression 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 add ( temp float) 0:27 add ( temp float) 0:27 direct index ( temp float) 0:27 direct index ( temp 3-component vector of float) 0:27 'h23' ( temp 2X3 matrix of float) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index ( temp float) 0:27 'h4' ( temp 4-component vector of float) 0:27 Constant: 0:27 1 (const int) 0:27 'h0' ( temp float) 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:3 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:3 Function Definition: @main( ( temp 4-component vector of float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp float) 0:4 'h0' ( temp float) 0:4 Constant: 0:4 0.000000 0:5 Sequence 0:5 move second child to first child ( temp 1-component vector of float) 0:5 'h1' ( temp 1-component vector of float) 0:5 Constant: 0:5 1.000000 0:6 Sequence 0:6 move second child to first child ( temp 2-component vector of float) 0:6 'h2' ( temp 2-component vector of float) 0:6 Constant: 0:6 2.000000 0:6 2.000000 0:7 Sequence 0:7 move second child to first child ( temp 3-component vector of float) 0:7 'h3' ( temp 3-component vector of float) 0:7 Constant: 0:7 3.000000 0:7 3.000000 0:7 3.000000 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'h4' ( temp 4-component vector of float) 0:8 Constant: 0:8 4.000000 0:8 4.000000 0:8 4.000000 0:8 4.000000 0:15 Sequence 0:15 move second child to first child ( temp 2X2 matrix of float) 0:15 'h22' ( temp 2X2 matrix of float) 0:15 Constant: 0:15 1.000000 0:15 2.000000 0:15 3.000000 0:15 4.000000 0:16 Sequence 0:16 move second child to first child ( temp 2X3 matrix of float) 0:16 'h23' ( temp 2X3 matrix of float) 0:16 Constant: 0:16 4.900000 0:16 4.900000 0:16 4.900000 0:16 4.900000 0:16 4.900000 0:16 4.900000 0:27 Branch: Return with expression 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 add ( temp float) 0:27 add ( temp float) 0:27 direct index ( temp float) 0:27 direct index ( temp 3-component vector of float) 0:27 'h23' ( temp 2X3 matrix of float) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 0 (const int) 0:27 direct index ( temp float) 0:27 'h4' ( temp 4-component vector of float) 0:27 Constant: 0:27 1 (const int) 0:27 'h0' ( temp float) 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence 0:3 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:3 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 58 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "h0" Name 14 "h1" Name 18 "h2" Name 23 "h3" Name 27 "h4" Name 32 "h22" Name 38 "h23" Name 58 "@entryPointOutput" Decorate 58(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 6(float) 13: 6(float) Constant 0 15: 6(float) Constant 1065353216 16: TypeVector 6(float) 2 17: TypePointer Function 16(fvec2) 19: 6(float) Constant 1073741824 20: 16(fvec2) ConstantComposite 19 19 21: TypeVector 6(float) 3 22: TypePointer Function 21(fvec3) 24: 6(float) Constant 1077936128 25: 21(fvec3) ConstantComposite 24 24 24 26: TypePointer Function 7(fvec4) 28: 6(float) Constant 1082130432 29: 7(fvec4) ConstantComposite 28 28 28 28 30: TypeMatrix 16(fvec2) 2 31: TypePointer Function 30 33: 16(fvec2) ConstantComposite 15 19 34: 16(fvec2) ConstantComposite 24 28 35: 30 ConstantComposite 33 34 36: TypeMatrix 21(fvec3) 2 37: TypePointer Function 36 39: 6(float) Constant 1084017869 40: 21(fvec3) ConstantComposite 39 39 39 41: 36 ConstantComposite 40 40 42: TypeInt 32 1 43: 42(int) Constant 0 44: TypeInt 32 0 45: 44(int) Constant 0 48: 44(int) Constant 1 57: TypePointer Output 7(fvec4) 58(@entryPointOutput): 57(ptr) Variable Output 4(main): 2 Function None 3 5: Label 59: 7(fvec4) FunctionCall 9(@main() Store 58(@entryPointOutput) 59 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(h0): 11(ptr) Variable Function 14(h1): 11(ptr) Variable Function 18(h2): 17(ptr) Variable Function 23(h3): 22(ptr) Variable Function 27(h4): 26(ptr) Variable Function 32(h22): 31(ptr) Variable Function 38(h23): 37(ptr) Variable Function Store 12(h0) 13 Store 14(h1) 15 Store 18(h2) 20 Store 23(h3) 25 Store 27(h4) 29 Store 32(h22) 35 Store 38(h23) 41 46: 11(ptr) AccessChain 38(h23) 43 45 47: 6(float) Load 46 49: 11(ptr) AccessChain 27(h4) 48 50: 6(float) Load 49 51: 6(float) FAdd 47 50 52: 6(float) Load 12(h0) 53: 6(float) FAdd 51 52 54: 7(fvec4) CompositeConstruct 53 53 53 53 ReturnValue 54 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.type.identifier.frag.out000066400000000000000000000456541506534232700241770ustar00rootroot00000000000000hlsl.type.identifier.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: fn(f1; ( temp float) 0:6 Function Parameters: 0:6 'float' ( in float) 0:? Sequence 0:6 Branch: Return with expression 0:6 'float' ( in float) 0:9 Function Definition: @main( ( temp 4-component vector of float) 0:9 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 'float' ( temp float) 0:10 Constant: 0:10 7.000000 0:11 Sequence 0:11 move second child to first child ( temp 2-element array of bool) 0:11 'bool' ( temp 2-element array of bool) 0:11 Construct bool ( temp 2-element array of bool) 0:11 Convert float to bool ( temp bool) 0:11 'float' ( temp float) 0:11 Convert float to bool ( temp bool) 0:11 'float' ( temp float) 0:12 Sequence 0:12 move second child to first child ( temp int) 0:12 'int' ( temp int) 0:12 Convert bool to int ( temp int) 0:12 direct index ( temp bool) 0:12 'bool' ( temp 2-element array of bool) 0:12 Constant: 0:12 1 (const int) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'uint' ( temp uint) 0:13 Convert float to uint ( temp uint) 0:13 add ( temp float) 0:13 'float' ( temp float) 0:13 Convert int to float ( temp float) 0:13 'int' ( temp int) 0:14 Sequence 0:14 move second child to first child ( temp mediump float) 0:14 'min16float' ( temp mediump float) 0:14 Convert uint to float ( temp mediump float) 0:14 'uint' ( temp mediump uint) 0:15 Sequence 0:15 move second child to first child ( temp mediump float) 0:15 'min10float' ( temp mediump float) 0:15 'min16float' ( temp mediump float) 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'half' ( temp float) 0:16 Constant: 0:16 0.500000 0:? Sequence 0:20 move second child to first child ( temp float) 0:20 float: direct index for structure ( temp float) 0:20 'float' ( temp structure{ temp float float}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 42.000000 0:23 move second child to first child ( temp bool) 0:23 direct index ( temp bool) 0:23 'bool' ( temp 2-element array of bool) 0:23 Constant: 0:23 0 (const int) 0:23 direct index ( temp bool) 0:23 'bool' ( temp 2-element array of bool) 0:23 Constant: 0:23 1 (const int) 0:25 move second child to first child ( temp mediump float) 0:25 'float' ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 'float' ( temp mediump float) 0:25 Convert int to float ( temp mediump float) 0:25 'int' ( temp mediump int) 0:25 Convert uint to float ( temp mediump float) 0:25 'uint' ( temp mediump uint) 0:25 'min16float' ( temp mediump float) 0:25 'min10float' ( temp mediump float) 0:25 Test condition and select ( temp mediump float): no shortcircuit 0:25 Condition 0:25 direct index ( temp bool) 0:25 'bool' ( temp 2-element array of bool) 0:25 Constant: 0:25 0 (const int) 0:25 true case 0:25 Convert int to float ( temp mediump float) 0:25 'int' ( temp mediump int) 0:25 false case 0:25 'float' ( temp mediump float) 0:25 Function Call: fn(f1; ( temp mediump float) 0:25 'float' ( temp mediump float) 0:28 move second child to first child ( temp float) 0:28 direct index ( temp float) 0:28 direct index ( temp 3-component vector of float) 0:28 'half2x3' ( temp 2X3 matrix of float) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 component-wise multiply ( temp float) 0:28 'float' ( temp float) 0:28 'float' ( temp float) 0:30 Branch: Return with expression 0:30 Construct vec4 ( temp 4-component vector of float) 0:30 add ( temp float) 0:30 'float' ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 3-component vector of float) 0:30 'half2x3' ( temp 2X3 matrix of float) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 0 (const int) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:9 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:6 Function Definition: fn(f1; ( temp float) 0:6 Function Parameters: 0:6 'float' ( in float) 0:? Sequence 0:6 Branch: Return with expression 0:6 'float' ( in float) 0:9 Function Definition: @main( ( temp 4-component vector of float) 0:9 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 'float' ( temp float) 0:10 Constant: 0:10 7.000000 0:11 Sequence 0:11 move second child to first child ( temp 2-element array of bool) 0:11 'bool' ( temp 2-element array of bool) 0:11 Construct bool ( temp 2-element array of bool) 0:11 Convert float to bool ( temp bool) 0:11 'float' ( temp float) 0:11 Convert float to bool ( temp bool) 0:11 'float' ( temp float) 0:12 Sequence 0:12 move second child to first child ( temp int) 0:12 'int' ( temp int) 0:12 Convert bool to int ( temp int) 0:12 direct index ( temp bool) 0:12 'bool' ( temp 2-element array of bool) 0:12 Constant: 0:12 1 (const int) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'uint' ( temp uint) 0:13 Convert float to uint ( temp uint) 0:13 add ( temp float) 0:13 'float' ( temp float) 0:13 Convert int to float ( temp float) 0:13 'int' ( temp int) 0:14 Sequence 0:14 move second child to first child ( temp mediump float) 0:14 'min16float' ( temp mediump float) 0:14 Convert uint to float ( temp mediump float) 0:14 'uint' ( temp mediump uint) 0:15 Sequence 0:15 move second child to first child ( temp mediump float) 0:15 'min10float' ( temp mediump float) 0:15 'min16float' ( temp mediump float) 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'half' ( temp float) 0:16 Constant: 0:16 0.500000 0:? Sequence 0:20 move second child to first child ( temp float) 0:20 float: direct index for structure ( temp float) 0:20 'float' ( temp structure{ temp float float}) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 42.000000 0:23 move second child to first child ( temp bool) 0:23 direct index ( temp bool) 0:23 'bool' ( temp 2-element array of bool) 0:23 Constant: 0:23 0 (const int) 0:23 direct index ( temp bool) 0:23 'bool' ( temp 2-element array of bool) 0:23 Constant: 0:23 1 (const int) 0:25 move second child to first child ( temp mediump float) 0:25 'float' ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 add ( temp mediump float) 0:25 'float' ( temp mediump float) 0:25 Convert int to float ( temp mediump float) 0:25 'int' ( temp mediump int) 0:25 Convert uint to float ( temp mediump float) 0:25 'uint' ( temp mediump uint) 0:25 'min16float' ( temp mediump float) 0:25 'min10float' ( temp mediump float) 0:25 Test condition and select ( temp mediump float): no shortcircuit 0:25 Condition 0:25 direct index ( temp bool) 0:25 'bool' ( temp 2-element array of bool) 0:25 Constant: 0:25 0 (const int) 0:25 true case 0:25 Convert int to float ( temp mediump float) 0:25 'int' ( temp mediump int) 0:25 false case 0:25 'float' ( temp mediump float) 0:25 Function Call: fn(f1; ( temp mediump float) 0:25 'float' ( temp mediump float) 0:28 move second child to first child ( temp float) 0:28 direct index ( temp float) 0:28 direct index ( temp 3-component vector of float) 0:28 'half2x3' ( temp 2X3 matrix of float) 0:28 Constant: 0:28 0 (const int) 0:28 Constant: 0:28 0 (const int) 0:28 component-wise multiply ( temp float) 0:28 'float' ( temp float) 0:28 'float' ( temp float) 0:30 Branch: Return with expression 0:30 Construct vec4 ( temp 4-component vector of float) 0:30 add ( temp float) 0:30 'float' ( temp float) 0:30 direct index ( temp float) 0:30 direct index ( temp 3-component vector of float) 0:30 'half2x3' ( temp 2X3 matrix of float) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 0 (const int) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:9 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 105 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 103 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 10 "fn(f1;" Name 9 "float" Name 14 "@main(" Name 19 "float" Name 26 "bool" Name 35 "int" Name 43 "uint" Name 49 "min16float" Name 52 "min10float" Name 54 "half" Name 56 "foo_t" MemberName 56(foo_t) 0 "float" Name 58 "float" Name 82 "param" Name 89 "half2x3" Name 103 "@entryPointOutput" Decorate 49(min16float) RelaxedPrecision Decorate 50 RelaxedPrecision Decorate 51 RelaxedPrecision Decorate 52(min10float) RelaxedPrecision Decorate 53 RelaxedPrecision Decorate 64 RelaxedPrecision Decorate 65 RelaxedPrecision Decorate 66 RelaxedPrecision Decorate 67 RelaxedPrecision Decorate 68 RelaxedPrecision Decorate 69 RelaxedPrecision Decorate 70 RelaxedPrecision Decorate 71 RelaxedPrecision Decorate 72 RelaxedPrecision Decorate 73 RelaxedPrecision Decorate 74 RelaxedPrecision Decorate 77 RelaxedPrecision Decorate 78 RelaxedPrecision Decorate 79 RelaxedPrecision Decorate 81 RelaxedPrecision Decorate 83 RelaxedPrecision Decorate 84 RelaxedPrecision Decorate 85 RelaxedPrecision Decorate 103(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 12: TypeVector 6(float) 4 13: TypeFunction 12(fvec4) 20: 6(float) Constant 1088421888 21: TypeBool 22: TypeInt 32 0 23: 22(int) Constant 2 24: TypeArray 21(bool) 23 25: TypePointer Function 24 28: 6(float) Constant 0 33: TypeInt 32 1 34: TypePointer Function 33(int) 36: 33(int) Constant 1 37: TypePointer Function 21(bool) 40: 33(int) Constant 0 42: TypePointer Function 22(int) 55: 6(float) Constant 1056964608 56(foo_t): TypeStruct 6(float) 57: TypePointer Function 56(foo_t) 59: 6(float) Constant 1109917696 86: TypeVector 6(float) 3 87: TypeMatrix 86(fvec3) 2 88: TypePointer Function 87 93: 22(int) Constant 0 102: TypePointer Output 12(fvec4) 103(@entryPointOutput): 102(ptr) Variable Output 4(main): 2 Function None 3 5: Label 104: 12(fvec4) FunctionCall 14(@main() Store 103(@entryPointOutput) 104 Return FunctionEnd 10(fn(f1;): 6(float) Function None 8 9(float): 7(ptr) FunctionParameter 11: Label 16: 6(float) Load 9(float) ReturnValue 16 FunctionEnd 14(@main(): 12(fvec4) Function None 13 15: Label 19(float): 7(ptr) Variable Function 26(bool): 25(ptr) Variable Function 35(int): 34(ptr) Variable Function 43(uint): 42(ptr) Variable Function 49(min16float): 7(ptr) Variable Function 52(min10float): 7(ptr) Variable Function 54(half): 7(ptr) Variable Function 58(float): 57(ptr) Variable Function 82(param): 7(ptr) Variable Function 89(half2x3): 88(ptr) Variable Function Store 19(float) 20 27: 6(float) Load 19(float) 29: 21(bool) FUnordNotEqual 27 28 30: 6(float) Load 19(float) 31: 21(bool) FUnordNotEqual 30 28 32: 24 CompositeConstruct 29 31 Store 26(bool) 32 38: 37(ptr) AccessChain 26(bool) 36 39: 21(bool) Load 38 41: 33(int) Select 39 36 40 Store 35(int) 41 44: 6(float) Load 19(float) 45: 33(int) Load 35(int) 46: 6(float) ConvertSToF 45 47: 6(float) FAdd 44 46 48: 22(int) ConvertFToU 47 Store 43(uint) 48 50: 22(int) Load 43(uint) 51: 6(float) ConvertUToF 50 Store 49(min16float) 51 53: 6(float) Load 49(min16float) Store 52(min10float) 53 Store 54(half) 55 60: 7(ptr) AccessChain 58(float) 40 Store 60 59 61: 37(ptr) AccessChain 26(bool) 36 62: 21(bool) Load 61 63: 37(ptr) AccessChain 26(bool) 40 Store 63 62 64: 6(float) Load 19(float) 65: 33(int) Load 35(int) 66: 6(float) ConvertSToF 65 67: 6(float) FAdd 64 66 68: 22(int) Load 43(uint) 69: 6(float) ConvertUToF 68 70: 6(float) FAdd 67 69 71: 6(float) Load 49(min16float) 72: 6(float) FAdd 70 71 73: 6(float) Load 52(min10float) 74: 6(float) FAdd 72 73 75: 37(ptr) AccessChain 26(bool) 40 76: 21(bool) Load 75 77: 33(int) Load 35(int) 78: 6(float) ConvertSToF 77 79: 6(float) Load 19(float) 80: 6(float) Select 76 78 79 81: 6(float) FAdd 74 80 83: 6(float) Load 19(float) Store 82(param) 83 84: 6(float) FunctionCall 10(fn(f1;) 82(param) 85: 6(float) FAdd 81 84 Store 19(float) 85 90: 6(float) Load 19(float) 91: 6(float) Load 19(float) 92: 6(float) FMul 90 91 94: 7(ptr) AccessChain 89(half2x3) 40 93 Store 94 92 95: 6(float) Load 19(float) 96: 7(ptr) AccessChain 89(half2x3) 40 93 97: 6(float) Load 96 98: 6(float) FAdd 95 97 99: 12(fvec4) CompositeConstruct 98 98 98 98 ReturnValue 99 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.type.type.conversion.all.frag.out000066400000000000000000001513311506534232700257570ustar00rootroot00000000000000hlsl.type.type.conversion.all.frag ERROR: 0:88: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 2-component vector of float' ERROR: 0:89: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 2-component vector of float' ERROR: 0:90: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 2-component vector of float' ERROR: 0:91: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 2-component vector of float' ERROR: 0:92: '=' : cannot convert from ' const 3X3 matrix of float' to ' temp 2-component vector of float' ERROR: 0:93: '=' : cannot convert from ' const 3X4 matrix of float' to ' temp 2-component vector of float' ERROR: 0:94: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 2-component vector of float' ERROR: 0:95: '=' : cannot convert from ' const 4X3 matrix of float' to ' temp 2-component vector of float' ERROR: 0:96: '=' : cannot convert from ' const 4X4 matrix of float' to ' temp 2-component vector of float' ERROR: 0:97: '=' : cannot convert from ' const 2-component vector of float' to ' temp 3-component vector of float' ERROR: 0:98: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 3-component vector of float' ERROR: 0:99: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 3-component vector of float' ERROR: 0:100: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 3-component vector of float' ERROR: 0:101: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 3-component vector of float' ERROR: 0:102: '=' : cannot convert from ' const 3X3 matrix of float' to ' temp 3-component vector of float' ERROR: 0:103: '=' : cannot convert from ' const 3X4 matrix of float' to ' temp 3-component vector of float' ERROR: 0:104: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 3-component vector of float' ERROR: 0:105: '=' : cannot convert from ' const 4X3 matrix of float' to ' temp 3-component vector of float' ERROR: 0:106: '=' : cannot convert from ' const 4X4 matrix of float' to ' temp 3-component vector of float' ERROR: 0:107: '=' : cannot convert from ' const 2-component vector of float' to ' temp 4-component vector of float' ERROR: 0:108: '=' : cannot convert from ' const 3-component vector of float' to ' temp 4-component vector of float' ERROR: 0:109: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 4-component vector of float' ERROR: 0:110: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 4-component vector of float' ERROR: 0:111: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 4-component vector of float' ERROR: 0:112: '=' : cannot convert from ' const 3X3 matrix of float' to ' temp 4-component vector of float' ERROR: 0:113: '=' : cannot convert from ' const 3X4 matrix of float' to ' temp 4-component vector of float' ERROR: 0:114: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 4-component vector of float' ERROR: 0:115: '=' : cannot convert from ' const 4X3 matrix of float' to ' temp 4-component vector of float' ERROR: 0:116: '=' : cannot convert from ' const 4X4 matrix of float' to ' temp 4-component vector of float' ERROR: 0:117: '=' : cannot convert from ' const 2-component vector of float' to ' temp 2X2 matrix of float' ERROR: 0:118: '=' : cannot convert from ' const 3-component vector of float' to ' temp 2X2 matrix of float' ERROR: 0:119: '=' : cannot convert from ' const 2-component vector of float' to ' temp 2X3 matrix of float' ERROR: 0:120: '=' : cannot convert from ' const 3-component vector of float' to ' temp 2X3 matrix of float' ERROR: 0:121: '=' : cannot convert from ' const 4-component vector of float' to ' temp 2X3 matrix of float' ERROR: 0:122: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 2X3 matrix of float' ERROR: 0:123: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 2X3 matrix of float' ERROR: 0:124: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 2X3 matrix of float' ERROR: 0:125: '=' : cannot convert from ' const 2-component vector of float' to ' temp 2X4 matrix of float' ERROR: 0:126: '=' : cannot convert from ' const 3-component vector of float' to ' temp 2X4 matrix of float' ERROR: 0:127: '=' : cannot convert from ' const 4-component vector of float' to ' temp 2X4 matrix of float' ERROR: 0:128: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 2X4 matrix of float' ERROR: 0:129: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 2X4 matrix of float' ERROR: 0:130: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 2X4 matrix of float' ERROR: 0:131: '=' : cannot convert from ' const 3X3 matrix of float' to ' temp 2X4 matrix of float' ERROR: 0:132: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 2X4 matrix of float' ERROR: 0:133: '=' : cannot convert from ' const 4X3 matrix of float' to ' temp 2X4 matrix of float' ERROR: 0:134: '=' : cannot convert from ' const 2-component vector of float' to ' temp 3X2 matrix of float' ERROR: 0:135: '=' : cannot convert from ' const 3-component vector of float' to ' temp 3X2 matrix of float' ERROR: 0:136: '=' : cannot convert from ' const 4-component vector of float' to ' temp 3X2 matrix of float' ERROR: 0:137: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 3X2 matrix of float' ERROR: 0:138: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 3X2 matrix of float' ERROR: 0:139: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 3X2 matrix of float' ERROR: 0:140: '=' : cannot convert from ' const 2-component vector of float' to ' temp 3X3 matrix of float' ERROR: 0:141: '=' : cannot convert from ' const 3-component vector of float' to ' temp 3X3 matrix of float' ERROR: 0:142: '=' : cannot convert from ' const 4-component vector of float' to ' temp 3X3 matrix of float' ERROR: 0:143: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 3X3 matrix of float' ERROR: 0:144: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 3X3 matrix of float' ERROR: 0:145: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 3X3 matrix of float' ERROR: 0:146: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 3X3 matrix of float' ERROR: 0:147: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 3X3 matrix of float' ERROR: 0:148: '=' : cannot convert from ' const 2-component vector of float' to ' temp 3X4 matrix of float' ERROR: 0:149: '=' : cannot convert from ' const 3-component vector of float' to ' temp 3X4 matrix of float' ERROR: 0:150: '=' : cannot convert from ' const 4-component vector of float' to ' temp 3X4 matrix of float' ERROR: 0:151: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 3X4 matrix of float' ERROR: 0:152: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 3X4 matrix of float' ERROR: 0:153: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 3X4 matrix of float' ERROR: 0:154: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 3X4 matrix of float' ERROR: 0:155: '=' : cannot convert from ' const 3X3 matrix of float' to ' temp 3X4 matrix of float' ERROR: 0:156: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 3X4 matrix of float' ERROR: 0:157: '=' : cannot convert from ' const 4X3 matrix of float' to ' temp 3X4 matrix of float' ERROR: 0:158: '=' : cannot convert from ' const 2-component vector of float' to ' temp 4X2 matrix of float' ERROR: 0:159: '=' : cannot convert from ' const 3-component vector of float' to ' temp 4X2 matrix of float' ERROR: 0:160: '=' : cannot convert from ' const 4-component vector of float' to ' temp 4X2 matrix of float' ERROR: 0:161: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 4X2 matrix of float' ERROR: 0:162: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 4X2 matrix of float' ERROR: 0:163: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 4X2 matrix of float' ERROR: 0:164: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 4X2 matrix of float' ERROR: 0:165: '=' : cannot convert from ' const 3X3 matrix of float' to ' temp 4X2 matrix of float' ERROR: 0:166: '=' : cannot convert from ' const 3X4 matrix of float' to ' temp 4X2 matrix of float' ERROR: 0:167: '=' : cannot convert from ' const 2-component vector of float' to ' temp 4X3 matrix of float' ERROR: 0:168: '=' : cannot convert from ' const 3-component vector of float' to ' temp 4X3 matrix of float' ERROR: 0:169: '=' : cannot convert from ' const 4-component vector of float' to ' temp 4X3 matrix of float' ERROR: 0:170: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 4X3 matrix of float' ERROR: 0:171: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 4X3 matrix of float' ERROR: 0:172: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 4X3 matrix of float' ERROR: 0:173: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 4X3 matrix of float' ERROR: 0:174: '=' : cannot convert from ' const 3X3 matrix of float' to ' temp 4X3 matrix of float' ERROR: 0:175: '=' : cannot convert from ' const 3X4 matrix of float' to ' temp 4X3 matrix of float' ERROR: 0:176: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 4X3 matrix of float' ERROR: 0:177: '=' : cannot convert from ' const 2-component vector of float' to ' temp 4X4 matrix of float' ERROR: 0:178: '=' : cannot convert from ' const 3-component vector of float' to ' temp 4X4 matrix of float' ERROR: 0:179: '=' : cannot convert from ' const 4-component vector of float' to ' temp 4X4 matrix of float' ERROR: 0:180: '=' : cannot convert from ' const 2X2 matrix of float' to ' temp 4X4 matrix of float' ERROR: 0:181: '=' : cannot convert from ' const 2X3 matrix of float' to ' temp 4X4 matrix of float' ERROR: 0:182: '=' : cannot convert from ' const 2X4 matrix of float' to ' temp 4X4 matrix of float' ERROR: 0:183: '=' : cannot convert from ' const 3X2 matrix of float' to ' temp 4X4 matrix of float' ERROR: 0:184: '=' : cannot convert from ' const 3X3 matrix of float' to ' temp 4X4 matrix of float' ERROR: 0:185: '=' : cannot convert from ' const 3X4 matrix of float' to ' temp 4X4 matrix of float' ERROR: 0:186: '=' : cannot convert from ' const 4X2 matrix of float' to ' temp 4X4 matrix of float' ERROR: 0:187: '=' : cannot convert from ' const 4X3 matrix of float' to ' temp 4X4 matrix of float' ERROR: 100 compilation errors. No code generated. Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'var0' ( temp float) 0:19 Constant: 0:19 0.000000 0:20 Sequence 0:20 move second child to first child ( temp 2-component vector of float) 0:20 'var13' ( temp 2-component vector of float) 0:20 Constant: 0:20 0.000000 0:20 0.000000 0:21 Sequence 0:21 move second child to first child ( temp 2-component vector of float) 0:21 'var14' ( temp 2-component vector of float) 0:21 Constant: 0:21 0.000000 0:21 0.000000 0:22 Sequence 0:22 move second child to first child ( temp 3-component vector of float) 0:22 'var26' ( temp 3-component vector of float) 0:22 Constant: 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:23 Sequence 0:23 move second child to first child ( temp 3-component vector of float) 0:23 'var28' ( temp 3-component vector of float) 0:23 Constant: 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'var39' ( temp 4-component vector of float) 0:24 Constant: 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'var42' ( temp 4-component vector of float) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of float) 0:26 'var43' ( temp 4-component vector of float) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:27 Sequence 0:27 move second child to first child ( temp 2X2 matrix of float) 0:27 'var52' ( temp 2X2 matrix of float) 0:27 Constant: 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:28 Sequence 0:28 move second child to first child ( temp 2X2 matrix of float) 0:28 'var55' ( temp 2X2 matrix of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 Sequence 0:29 move second child to first child ( temp 2X2 matrix of float) 0:29 'var56' ( temp 2X2 matrix of float) 0:29 Constant: 0:29 0.000000 0:29 0.000000 0:29 0.000000 0:29 0.000000 0:30 Sequence 0:30 move second child to first child ( temp 2X3 matrix of float) 0:30 'var65' ( temp 2X3 matrix of float) 0:30 Constant: 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:31 Sequence 0:31 move second child to first child ( temp 2X3 matrix of float) 0:31 'var70' ( temp 2X3 matrix of float) 0:31 Constant: 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:32 Sequence 0:32 move second child to first child ( temp 2X4 matrix of float) 0:32 'var78' ( temp 2X4 matrix of float) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:33 Sequence 0:33 move second child to first child ( temp 2X4 matrix of float) 0:33 'var84' ( temp 2X4 matrix of float) 0:33 Constant: 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:34 Sequence 0:34 move second child to first child ( temp 3X2 matrix of float) 0:34 'var91' ( temp 3X2 matrix of float) 0:34 Constant: 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:35 Sequence 0:35 move second child to first child ( temp 3X2 matrix of float) 0:35 'var98' ( temp 3X2 matrix of float) 0:35 Constant: 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:36 Sequence 0:36 move second child to first child ( temp 3X3 matrix of float) 0:36 'var104' ( temp 3X3 matrix of float) 0:36 Constant: 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:37 Sequence 0:37 move second child to first child ( temp 3X3 matrix of float) 0:37 'var112' ( temp 3X3 matrix of float) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:38 Sequence 0:38 move second child to first child ( temp 3X4 matrix of float) 0:38 'var117' ( temp 3X4 matrix of float) 0:38 Constant: 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:39 Sequence 0:39 move second child to first child ( temp 3X4 matrix of float) 0:39 'var126' ( temp 3X4 matrix of float) 0:39 Constant: 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:40 Sequence 0:40 move second child to first child ( temp 4X2 matrix of float) 0:40 'var130' ( temp 4X2 matrix of float) 0:40 Constant: 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:41 Sequence 0:41 move second child to first child ( temp 4X2 matrix of float) 0:41 'var140' ( temp 4X2 matrix of float) 0:41 Constant: 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:42 Sequence 0:42 move second child to first child ( temp 4X3 matrix of float) 0:42 'var143' ( temp 4X3 matrix of float) 0:42 Constant: 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:43 Sequence 0:43 move second child to first child ( temp 4X3 matrix of float) 0:43 'var154' ( temp 4X3 matrix of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:44 Sequence 0:44 move second child to first child ( temp 4X4 matrix of float) 0:44 'var156' ( temp 4X4 matrix of float) 0:44 Constant: 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:45 Sequence 0:45 move second child to first child ( temp 4X4 matrix of float) 0:45 'var168' ( temp 4X4 matrix of float) 0:45 Constant: 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:46 Sequence 0:46 move second child to first child ( temp float) 0:46 'var1' ( temp float) 0:46 Constant: 0:46 0.000000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'var2' ( temp float) 0:47 Constant: 0:47 0.000000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'var3' ( temp float) 0:48 Constant: 0:48 0.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'var4' ( temp float) 0:49 Constant: 0:49 0.000000 0:50 Sequence 0:50 move second child to first child ( temp float) 0:50 'var5' ( temp float) 0:50 Constant: 0:50 0.000000 0:51 Sequence 0:51 move second child to first child ( temp float) 0:51 'var6' ( temp float) 0:51 Constant: 0:51 0.000000 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'var7' ( temp float) 0:52 Constant: 0:52 0.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'var8' ( temp float) 0:53 Constant: 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'var9' ( temp float) 0:54 Constant: 0:54 0.000000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'var10' ( temp float) 0:55 Constant: 0:55 0.000000 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'var11' ( temp float) 0:56 Constant: 0:56 0.000000 0:57 Sequence 0:57 move second child to first child ( temp float) 0:57 'var12' ( temp float) 0:57 Constant: 0:57 0.000000 0:58 Sequence 0:58 move second child to first child ( temp 2-component vector of float) 0:58 'var15' ( temp 2-component vector of float) 0:58 Constant: 0:58 0.000000 0:58 0.000000 0:59 Sequence 0:59 move second child to first child ( temp 2-component vector of float) 0:59 'var16' ( temp 2-component vector of float) 0:59 Constant: 0:59 0.000000 0:59 0.000000 0:60 Sequence 0:60 move second child to first child ( temp 3-component vector of float) 0:60 'var29' ( temp 3-component vector of float) 0:60 Constant: 0:60 0.000000 0:60 0.000000 0:60 0.000000 0:61 Sequence 0:61 move second child to first child ( temp 2X2 matrix of float) 0:61 'var57' ( temp 2X2 matrix of float) 0:61 Constant: 0:61 0.000000 0:61 0.000000 0:61 0.000000 0:61 0.000000 0:62 Sequence 0:62 move second child to first child ( temp 2X2 matrix of float) 0:62 'var58' ( temp 2X2 matrix of float) 0:62 Constant: 0:62 0.000000 0:62 0.000000 0:62 0.000000 0:62 0.000000 0:63 Sequence 0:63 move second child to first child ( temp 2X2 matrix of float) 0:63 'var59' ( temp 2X2 matrix of float) 0:63 Constant: 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:64 Sequence 0:64 move second child to first child ( temp 2X2 matrix of float) 0:64 'var60' ( temp 2X2 matrix of float) 0:64 Constant: 0:64 0.000000 0:64 0.000000 0:64 0.000000 0:64 0.000000 0:65 Sequence 0:65 move second child to first child ( temp 2X2 matrix of float) 0:65 'var61' ( temp 2X2 matrix of float) 0:65 Constant: 0:65 0.000000 0:65 0.000000 0:65 0.000000 0:65 0.000000 0:66 Sequence 0:66 move second child to first child ( temp 2X2 matrix of float) 0:66 'var62' ( temp 2X2 matrix of float) 0:66 Constant: 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:67 Sequence 0:67 move second child to first child ( temp 2X2 matrix of float) 0:67 'var63' ( temp 2X2 matrix of float) 0:67 Constant: 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:68 Sequence 0:68 move second child to first child ( temp 2X2 matrix of float) 0:68 'var64' ( temp 2X2 matrix of float) 0:68 Constant: 0:68 0.000000 0:68 0.000000 0:68 0.000000 0:68 0.000000 0:69 Sequence 0:69 move second child to first child ( temp 2X3 matrix of float) 0:69 'var71' ( temp 2X3 matrix of float) 0:69 Constant: 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:70 Sequence 0:70 move second child to first child ( temp 2X3 matrix of float) 0:70 'var73' ( temp 2X3 matrix of float) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 Sequence 0:71 move second child to first child ( temp 2X3 matrix of float) 0:71 'var74' ( temp 2X3 matrix of float) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 Sequence 0:72 move second child to first child ( temp 2X3 matrix of float) 0:72 'var76' ( temp 2X3 matrix of float) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 Sequence 0:73 move second child to first child ( temp 2X3 matrix of float) 0:73 'var77' ( temp 2X3 matrix of float) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 Sequence 0:74 move second child to first child ( temp 2X4 matrix of float) 0:74 'var87' ( temp 2X4 matrix of float) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 Sequence 0:75 move second child to first child ( temp 2X4 matrix of float) 0:75 'var90' ( temp 2X4 matrix of float) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 Sequence 0:76 move second child to first child ( temp 3X2 matrix of float) 0:76 'var99' ( temp 3X2 matrix of float) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 Sequence 0:77 move second child to first child ( temp 3X2 matrix of float) 0:77 'var100' ( temp 3X2 matrix of float) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 Sequence 0:78 move second child to first child ( temp 3X2 matrix of float) 0:78 'var101' ( temp 3X2 matrix of float) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 Sequence 0:79 move second child to first child ( temp 3X2 matrix of float) 0:79 'var102' ( temp 3X2 matrix of float) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 Sequence 0:80 move second child to first child ( temp 3X2 matrix of float) 0:80 'var103' ( temp 3X2 matrix of float) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 Sequence 0:81 move second child to first child ( temp 3X3 matrix of float) 0:81 'var113' ( temp 3X3 matrix of float) 0:81 Constant: 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:82 Sequence 0:82 move second child to first child ( temp 3X3 matrix of float) 0:82 'var115' ( temp 3X3 matrix of float) 0:82 Constant: 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:83 Sequence 0:83 move second child to first child ( temp 3X3 matrix of float) 0:83 'var116' ( temp 3X3 matrix of float) 0:83 Constant: 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:84 Sequence 0:84 move second child to first child ( temp 3X4 matrix of float) 0:84 'var129' ( temp 3X4 matrix of float) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 Sequence 0:85 move second child to first child ( temp 4X2 matrix of float) 0:85 'var141' ( temp 4X2 matrix of float) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 Sequence 0:86 move second child to first child ( temp 4X2 matrix of float) 0:86 'var142' ( temp 4X2 matrix of float) 0:86 Constant: 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:87 Sequence 0:87 move second child to first child ( temp 4X3 matrix of float) 0:87 'var155' ( temp 4X3 matrix of float) 0:87 Constant: 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 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:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'var0' ( temp float) 0:19 Constant: 0:19 0.000000 0:20 Sequence 0:20 move second child to first child ( temp 2-component vector of float) 0:20 'var13' ( temp 2-component vector of float) 0:20 Constant: 0:20 0.000000 0:20 0.000000 0:21 Sequence 0:21 move second child to first child ( temp 2-component vector of float) 0:21 'var14' ( temp 2-component vector of float) 0:21 Constant: 0:21 0.000000 0:21 0.000000 0:22 Sequence 0:22 move second child to first child ( temp 3-component vector of float) 0:22 'var26' ( temp 3-component vector of float) 0:22 Constant: 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:23 Sequence 0:23 move second child to first child ( temp 3-component vector of float) 0:23 'var28' ( temp 3-component vector of float) 0:23 Constant: 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'var39' ( temp 4-component vector of float) 0:24 Constant: 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'var42' ( temp 4-component vector of float) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of float) 0:26 'var43' ( temp 4-component vector of float) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:27 Sequence 0:27 move second child to first child ( temp 2X2 matrix of float) 0:27 'var52' ( temp 2X2 matrix of float) 0:27 Constant: 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:28 Sequence 0:28 move second child to first child ( temp 2X2 matrix of float) 0:28 'var55' ( temp 2X2 matrix of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 Sequence 0:29 move second child to first child ( temp 2X2 matrix of float) 0:29 'var56' ( temp 2X2 matrix of float) 0:29 Constant: 0:29 0.000000 0:29 0.000000 0:29 0.000000 0:29 0.000000 0:30 Sequence 0:30 move second child to first child ( temp 2X3 matrix of float) 0:30 'var65' ( temp 2X3 matrix of float) 0:30 Constant: 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:31 Sequence 0:31 move second child to first child ( temp 2X3 matrix of float) 0:31 'var70' ( temp 2X3 matrix of float) 0:31 Constant: 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:32 Sequence 0:32 move second child to first child ( temp 2X4 matrix of float) 0:32 'var78' ( temp 2X4 matrix of float) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:33 Sequence 0:33 move second child to first child ( temp 2X4 matrix of float) 0:33 'var84' ( temp 2X4 matrix of float) 0:33 Constant: 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:34 Sequence 0:34 move second child to first child ( temp 3X2 matrix of float) 0:34 'var91' ( temp 3X2 matrix of float) 0:34 Constant: 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:35 Sequence 0:35 move second child to first child ( temp 3X2 matrix of float) 0:35 'var98' ( temp 3X2 matrix of float) 0:35 Constant: 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:36 Sequence 0:36 move second child to first child ( temp 3X3 matrix of float) 0:36 'var104' ( temp 3X3 matrix of float) 0:36 Constant: 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:37 Sequence 0:37 move second child to first child ( temp 3X3 matrix of float) 0:37 'var112' ( temp 3X3 matrix of float) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:38 Sequence 0:38 move second child to first child ( temp 3X4 matrix of float) 0:38 'var117' ( temp 3X4 matrix of float) 0:38 Constant: 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:39 Sequence 0:39 move second child to first child ( temp 3X4 matrix of float) 0:39 'var126' ( temp 3X4 matrix of float) 0:39 Constant: 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:40 Sequence 0:40 move second child to first child ( temp 4X2 matrix of float) 0:40 'var130' ( temp 4X2 matrix of float) 0:40 Constant: 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:41 Sequence 0:41 move second child to first child ( temp 4X2 matrix of float) 0:41 'var140' ( temp 4X2 matrix of float) 0:41 Constant: 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:42 Sequence 0:42 move second child to first child ( temp 4X3 matrix of float) 0:42 'var143' ( temp 4X3 matrix of float) 0:42 Constant: 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:43 Sequence 0:43 move second child to first child ( temp 4X3 matrix of float) 0:43 'var154' ( temp 4X3 matrix of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:44 Sequence 0:44 move second child to first child ( temp 4X4 matrix of float) 0:44 'var156' ( temp 4X4 matrix of float) 0:44 Constant: 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:45 Sequence 0:45 move second child to first child ( temp 4X4 matrix of float) 0:45 'var168' ( temp 4X4 matrix of float) 0:45 Constant: 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:46 Sequence 0:46 move second child to first child ( temp float) 0:46 'var1' ( temp float) 0:46 Constant: 0:46 0.000000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'var2' ( temp float) 0:47 Constant: 0:47 0.000000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'var3' ( temp float) 0:48 Constant: 0:48 0.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'var4' ( temp float) 0:49 Constant: 0:49 0.000000 0:50 Sequence 0:50 move second child to first child ( temp float) 0:50 'var5' ( temp float) 0:50 Constant: 0:50 0.000000 0:51 Sequence 0:51 move second child to first child ( temp float) 0:51 'var6' ( temp float) 0:51 Constant: 0:51 0.000000 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'var7' ( temp float) 0:52 Constant: 0:52 0.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'var8' ( temp float) 0:53 Constant: 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'var9' ( temp float) 0:54 Constant: 0:54 0.000000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'var10' ( temp float) 0:55 Constant: 0:55 0.000000 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'var11' ( temp float) 0:56 Constant: 0:56 0.000000 0:57 Sequence 0:57 move second child to first child ( temp float) 0:57 'var12' ( temp float) 0:57 Constant: 0:57 0.000000 0:58 Sequence 0:58 move second child to first child ( temp 2-component vector of float) 0:58 'var15' ( temp 2-component vector of float) 0:58 Constant: 0:58 0.000000 0:58 0.000000 0:59 Sequence 0:59 move second child to first child ( temp 2-component vector of float) 0:59 'var16' ( temp 2-component vector of float) 0:59 Constant: 0:59 0.000000 0:59 0.000000 0:60 Sequence 0:60 move second child to first child ( temp 3-component vector of float) 0:60 'var29' ( temp 3-component vector of float) 0:60 Constant: 0:60 0.000000 0:60 0.000000 0:60 0.000000 0:61 Sequence 0:61 move second child to first child ( temp 2X2 matrix of float) 0:61 'var57' ( temp 2X2 matrix of float) 0:61 Constant: 0:61 0.000000 0:61 0.000000 0:61 0.000000 0:61 0.000000 0:62 Sequence 0:62 move second child to first child ( temp 2X2 matrix of float) 0:62 'var58' ( temp 2X2 matrix of float) 0:62 Constant: 0:62 0.000000 0:62 0.000000 0:62 0.000000 0:62 0.000000 0:63 Sequence 0:63 move second child to first child ( temp 2X2 matrix of float) 0:63 'var59' ( temp 2X2 matrix of float) 0:63 Constant: 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:64 Sequence 0:64 move second child to first child ( temp 2X2 matrix of float) 0:64 'var60' ( temp 2X2 matrix of float) 0:64 Constant: 0:64 0.000000 0:64 0.000000 0:64 0.000000 0:64 0.000000 0:65 Sequence 0:65 move second child to first child ( temp 2X2 matrix of float) 0:65 'var61' ( temp 2X2 matrix of float) 0:65 Constant: 0:65 0.000000 0:65 0.000000 0:65 0.000000 0:65 0.000000 0:66 Sequence 0:66 move second child to first child ( temp 2X2 matrix of float) 0:66 'var62' ( temp 2X2 matrix of float) 0:66 Constant: 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:67 Sequence 0:67 move second child to first child ( temp 2X2 matrix of float) 0:67 'var63' ( temp 2X2 matrix of float) 0:67 Constant: 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:68 Sequence 0:68 move second child to first child ( temp 2X2 matrix of float) 0:68 'var64' ( temp 2X2 matrix of float) 0:68 Constant: 0:68 0.000000 0:68 0.000000 0:68 0.000000 0:68 0.000000 0:69 Sequence 0:69 move second child to first child ( temp 2X3 matrix of float) 0:69 'var71' ( temp 2X3 matrix of float) 0:69 Constant: 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:70 Sequence 0:70 move second child to first child ( temp 2X3 matrix of float) 0:70 'var73' ( temp 2X3 matrix of float) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 Sequence 0:71 move second child to first child ( temp 2X3 matrix of float) 0:71 'var74' ( temp 2X3 matrix of float) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 Sequence 0:72 move second child to first child ( temp 2X3 matrix of float) 0:72 'var76' ( temp 2X3 matrix of float) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 Sequence 0:73 move second child to first child ( temp 2X3 matrix of float) 0:73 'var77' ( temp 2X3 matrix of float) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 Sequence 0:74 move second child to first child ( temp 2X4 matrix of float) 0:74 'var87' ( temp 2X4 matrix of float) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 Sequence 0:75 move second child to first child ( temp 2X4 matrix of float) 0:75 'var90' ( temp 2X4 matrix of float) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 Sequence 0:76 move second child to first child ( temp 3X2 matrix of float) 0:76 'var99' ( temp 3X2 matrix of float) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 Sequence 0:77 move second child to first child ( temp 3X2 matrix of float) 0:77 'var100' ( temp 3X2 matrix of float) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 Sequence 0:78 move second child to first child ( temp 3X2 matrix of float) 0:78 'var101' ( temp 3X2 matrix of float) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 Sequence 0:79 move second child to first child ( temp 3X2 matrix of float) 0:79 'var102' ( temp 3X2 matrix of float) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 Sequence 0:80 move second child to first child ( temp 3X2 matrix of float) 0:80 'var103' ( temp 3X2 matrix of float) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 Sequence 0:81 move second child to first child ( temp 3X3 matrix of float) 0:81 'var113' ( temp 3X3 matrix of float) 0:81 Constant: 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:82 Sequence 0:82 move second child to first child ( temp 3X3 matrix of float) 0:82 'var115' ( temp 3X3 matrix of float) 0:82 Constant: 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:83 Sequence 0:83 move second child to first child ( temp 3X3 matrix of float) 0:83 'var116' ( temp 3X3 matrix of float) 0:83 Constant: 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:84 Sequence 0:84 move second child to first child ( temp 3X4 matrix of float) 0:84 'var129' ( temp 3X4 matrix of float) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 Sequence 0:85 move second child to first child ( temp 4X2 matrix of float) 0:85 'var141' ( temp 4X2 matrix of float) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 Sequence 0:86 move second child to first child ( temp 4X2 matrix of float) 0:86 'var142' ( temp 4X2 matrix of float) 0:86 Constant: 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:87 Sequence 0:87 move second child to first child ( temp 4X3 matrix of float) 0:87 'var155' ( temp 4X3 matrix of float) 0:87 Constant: 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 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:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/hlsl.type.type.conversion.valid.frag.out000066400000000000000000001566421506534232700263200ustar00rootroot00000000000000hlsl.type.type.conversion.valid.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'var0' ( temp float) 0:19 Constant: 0:19 0.000000 0:20 Sequence 0:20 move second child to first child ( temp 2-component vector of float) 0:20 'var13' ( temp 2-component vector of float) 0:20 Constant: 0:20 0.000000 0:20 0.000000 0:21 Sequence 0:21 move second child to first child ( temp 2-component vector of float) 0:21 'var14' ( temp 2-component vector of float) 0:21 Constant: 0:21 0.000000 0:21 0.000000 0:22 Sequence 0:22 move second child to first child ( temp 3-component vector of float) 0:22 'var26' ( temp 3-component vector of float) 0:22 Constant: 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:23 Sequence 0:23 move second child to first child ( temp 3-component vector of float) 0:23 'var28' ( temp 3-component vector of float) 0:23 Constant: 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'var39' ( temp 4-component vector of float) 0:24 Constant: 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'var42' ( temp 4-component vector of float) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of float) 0:26 'var43' ( temp 4-component vector of float) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:27 Sequence 0:27 move second child to first child ( temp 2X2 matrix of float) 0:27 'var52' ( temp 2X2 matrix of float) 0:27 Constant: 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:28 Sequence 0:28 move second child to first child ( temp 2X2 matrix of float) 0:28 'var55' ( temp 2X2 matrix of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 Sequence 0:29 move second child to first child ( temp 2X2 matrix of float) 0:29 'var56' ( temp 2X2 matrix of float) 0:29 Constant: 0:29 0.000000 0:29 0.000000 0:29 0.000000 0:29 0.000000 0:30 Sequence 0:30 move second child to first child ( temp 2X3 matrix of float) 0:30 'var65' ( temp 2X3 matrix of float) 0:30 Constant: 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:31 Sequence 0:31 move second child to first child ( temp 2X3 matrix of float) 0:31 'var70' ( temp 2X3 matrix of float) 0:31 Constant: 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:32 Sequence 0:32 move second child to first child ( temp 2X4 matrix of float) 0:32 'var78' ( temp 2X4 matrix of float) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:33 Sequence 0:33 move second child to first child ( temp 2X4 matrix of float) 0:33 'var84' ( temp 2X4 matrix of float) 0:33 Constant: 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:34 Sequence 0:34 move second child to first child ( temp 3X2 matrix of float) 0:34 'var91' ( temp 3X2 matrix of float) 0:34 Constant: 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:35 Sequence 0:35 move second child to first child ( temp 3X2 matrix of float) 0:35 'var98' ( temp 3X2 matrix of float) 0:35 Constant: 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:36 Sequence 0:36 move second child to first child ( temp 3X3 matrix of float) 0:36 'var104' ( temp 3X3 matrix of float) 0:36 Constant: 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:37 Sequence 0:37 move second child to first child ( temp 3X3 matrix of float) 0:37 'var112' ( temp 3X3 matrix of float) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:38 Sequence 0:38 move second child to first child ( temp 3X4 matrix of float) 0:38 'var117' ( temp 3X4 matrix of float) 0:38 Constant: 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:39 Sequence 0:39 move second child to first child ( temp 3X4 matrix of float) 0:39 'var126' ( temp 3X4 matrix of float) 0:39 Constant: 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:40 Sequence 0:40 move second child to first child ( temp 4X2 matrix of float) 0:40 'var130' ( temp 4X2 matrix of float) 0:40 Constant: 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:41 Sequence 0:41 move second child to first child ( temp 4X2 matrix of float) 0:41 'var140' ( temp 4X2 matrix of float) 0:41 Constant: 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:42 Sequence 0:42 move second child to first child ( temp 4X3 matrix of float) 0:42 'var143' ( temp 4X3 matrix of float) 0:42 Constant: 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:43 Sequence 0:43 move second child to first child ( temp 4X3 matrix of float) 0:43 'var154' ( temp 4X3 matrix of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:44 Sequence 0:44 move second child to first child ( temp 4X4 matrix of float) 0:44 'var156' ( temp 4X4 matrix of float) 0:44 Constant: 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:45 Sequence 0:45 move second child to first child ( temp 4X4 matrix of float) 0:45 'var168' ( temp 4X4 matrix of float) 0:45 Constant: 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:46 Sequence 0:46 move second child to first child ( temp float) 0:46 'var1' ( temp float) 0:46 Constant: 0:46 0.000000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'var2' ( temp float) 0:47 Constant: 0:47 0.000000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'var3' ( temp float) 0:48 Constant: 0:48 0.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'var4' ( temp float) 0:49 Constant: 0:49 0.000000 0:50 Sequence 0:50 move second child to first child ( temp float) 0:50 'var5' ( temp float) 0:50 Constant: 0:50 0.000000 0:51 Sequence 0:51 move second child to first child ( temp float) 0:51 'var6' ( temp float) 0:51 Constant: 0:51 0.000000 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'var7' ( temp float) 0:52 Constant: 0:52 0.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'var8' ( temp float) 0:53 Constant: 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'var9' ( temp float) 0:54 Constant: 0:54 0.000000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'var10' ( temp float) 0:55 Constant: 0:55 0.000000 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'var11' ( temp float) 0:56 Constant: 0:56 0.000000 0:57 Sequence 0:57 move second child to first child ( temp float) 0:57 'var12' ( temp float) 0:57 Constant: 0:57 0.000000 0:58 Sequence 0:58 move second child to first child ( temp 2-component vector of float) 0:58 'var15' ( temp 2-component vector of float) 0:58 Constant: 0:58 0.000000 0:58 0.000000 0:59 Sequence 0:59 move second child to first child ( temp 2-component vector of float) 0:59 'var16' ( temp 2-component vector of float) 0:59 Constant: 0:59 0.000000 0:59 0.000000 0:60 Sequence 0:60 move second child to first child ( temp 3-component vector of float) 0:60 'var29' ( temp 3-component vector of float) 0:60 Constant: 0:60 0.000000 0:60 0.000000 0:60 0.000000 0:61 Sequence 0:61 move second child to first child ( temp 2X2 matrix of float) 0:61 'var57' ( temp 2X2 matrix of float) 0:61 Constant: 0:61 0.000000 0:61 0.000000 0:61 0.000000 0:61 0.000000 0:62 Sequence 0:62 move second child to first child ( temp 2X2 matrix of float) 0:62 'var58' ( temp 2X2 matrix of float) 0:62 Constant: 0:62 0.000000 0:62 0.000000 0:62 0.000000 0:62 0.000000 0:63 Sequence 0:63 move second child to first child ( temp 2X2 matrix of float) 0:63 'var59' ( temp 2X2 matrix of float) 0:63 Constant: 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:64 Sequence 0:64 move second child to first child ( temp 2X2 matrix of float) 0:64 'var60' ( temp 2X2 matrix of float) 0:64 Constant: 0:64 0.000000 0:64 0.000000 0:64 0.000000 0:64 0.000000 0:65 Sequence 0:65 move second child to first child ( temp 2X2 matrix of float) 0:65 'var61' ( temp 2X2 matrix of float) 0:65 Constant: 0:65 0.000000 0:65 0.000000 0:65 0.000000 0:65 0.000000 0:66 Sequence 0:66 move second child to first child ( temp 2X2 matrix of float) 0:66 'var62' ( temp 2X2 matrix of float) 0:66 Constant: 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:67 Sequence 0:67 move second child to first child ( temp 2X2 matrix of float) 0:67 'var63' ( temp 2X2 matrix of float) 0:67 Constant: 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:68 Sequence 0:68 move second child to first child ( temp 2X2 matrix of float) 0:68 'var64' ( temp 2X2 matrix of float) 0:68 Constant: 0:68 0.000000 0:68 0.000000 0:68 0.000000 0:68 0.000000 0:69 Sequence 0:69 move second child to first child ( temp 2X3 matrix of float) 0:69 'var71' ( temp 2X3 matrix of float) 0:69 Constant: 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:70 Sequence 0:70 move second child to first child ( temp 2X3 matrix of float) 0:70 'var73' ( temp 2X3 matrix of float) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 Sequence 0:71 move second child to first child ( temp 2X3 matrix of float) 0:71 'var74' ( temp 2X3 matrix of float) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 Sequence 0:72 move second child to first child ( temp 2X3 matrix of float) 0:72 'var76' ( temp 2X3 matrix of float) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 Sequence 0:73 move second child to first child ( temp 2X3 matrix of float) 0:73 'var77' ( temp 2X3 matrix of float) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 Sequence 0:74 move second child to first child ( temp 2X4 matrix of float) 0:74 'var87' ( temp 2X4 matrix of float) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 Sequence 0:75 move second child to first child ( temp 2X4 matrix of float) 0:75 'var90' ( temp 2X4 matrix of float) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 Sequence 0:76 move second child to first child ( temp 3X2 matrix of float) 0:76 'var99' ( temp 3X2 matrix of float) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 Sequence 0:77 move second child to first child ( temp 3X2 matrix of float) 0:77 'var100' ( temp 3X2 matrix of float) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 Sequence 0:78 move second child to first child ( temp 3X2 matrix of float) 0:78 'var101' ( temp 3X2 matrix of float) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 Sequence 0:79 move second child to first child ( temp 3X2 matrix of float) 0:79 'var102' ( temp 3X2 matrix of float) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 Sequence 0:80 move second child to first child ( temp 3X2 matrix of float) 0:80 'var103' ( temp 3X2 matrix of float) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 Sequence 0:81 move second child to first child ( temp 3X3 matrix of float) 0:81 'var113' ( temp 3X3 matrix of float) 0:81 Constant: 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:82 Sequence 0:82 move second child to first child ( temp 3X3 matrix of float) 0:82 'var115' ( temp 3X3 matrix of float) 0:82 Constant: 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:83 Sequence 0:83 move second child to first child ( temp 3X3 matrix of float) 0:83 'var116' ( temp 3X3 matrix of float) 0:83 Constant: 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:84 Sequence 0:84 move second child to first child ( temp 3X4 matrix of float) 0:84 'var129' ( temp 3X4 matrix of float) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 Sequence 0:85 move second child to first child ( temp 4X2 matrix of float) 0:85 'var141' ( temp 4X2 matrix of float) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 Sequence 0:86 move second child to first child ( temp 4X2 matrix of float) 0:86 'var142' ( temp 4X2 matrix of float) 0:86 Constant: 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:87 Sequence 0:87 move second child to first child ( temp 4X3 matrix of float) 0:87 'var155' ( temp 4X3 matrix of float) 0:87 Constant: 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:88 Branch: Return with expression 0:88 Constant: 0:88 0.000000 0:88 0.000000 0:88 0.000000 0:88 0.000000 0:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:18 Function Definition: @main( ( temp 4-component vector of float) 0:18 Function Parameters: 0:? Sequence 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'var0' ( temp float) 0:19 Constant: 0:19 0.000000 0:20 Sequence 0:20 move second child to first child ( temp 2-component vector of float) 0:20 'var13' ( temp 2-component vector of float) 0:20 Constant: 0:20 0.000000 0:20 0.000000 0:21 Sequence 0:21 move second child to first child ( temp 2-component vector of float) 0:21 'var14' ( temp 2-component vector of float) 0:21 Constant: 0:21 0.000000 0:21 0.000000 0:22 Sequence 0:22 move second child to first child ( temp 3-component vector of float) 0:22 'var26' ( temp 3-component vector of float) 0:22 Constant: 0:22 0.000000 0:22 0.000000 0:22 0.000000 0:23 Sequence 0:23 move second child to first child ( temp 3-component vector of float) 0:23 'var28' ( temp 3-component vector of float) 0:23 Constant: 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'var39' ( temp 4-component vector of float) 0:24 Constant: 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:24 0.000000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'var42' ( temp 4-component vector of float) 0:25 Constant: 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:25 0.000000 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of float) 0:26 'var43' ( temp 4-component vector of float) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:27 Sequence 0:27 move second child to first child ( temp 2X2 matrix of float) 0:27 'var52' ( temp 2X2 matrix of float) 0:27 Constant: 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:27 0.000000 0:28 Sequence 0:28 move second child to first child ( temp 2X2 matrix of float) 0:28 'var55' ( temp 2X2 matrix of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 Sequence 0:29 move second child to first child ( temp 2X2 matrix of float) 0:29 'var56' ( temp 2X2 matrix of float) 0:29 Constant: 0:29 0.000000 0:29 0.000000 0:29 0.000000 0:29 0.000000 0:30 Sequence 0:30 move second child to first child ( temp 2X3 matrix of float) 0:30 'var65' ( temp 2X3 matrix of float) 0:30 Constant: 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:31 Sequence 0:31 move second child to first child ( temp 2X3 matrix of float) 0:31 'var70' ( temp 2X3 matrix of float) 0:31 Constant: 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:31 0.000000 0:32 Sequence 0:32 move second child to first child ( temp 2X4 matrix of float) 0:32 'var78' ( temp 2X4 matrix of float) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:33 Sequence 0:33 move second child to first child ( temp 2X4 matrix of float) 0:33 'var84' ( temp 2X4 matrix of float) 0:33 Constant: 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:33 0.000000 0:34 Sequence 0:34 move second child to first child ( temp 3X2 matrix of float) 0:34 'var91' ( temp 3X2 matrix of float) 0:34 Constant: 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:35 Sequence 0:35 move second child to first child ( temp 3X2 matrix of float) 0:35 'var98' ( temp 3X2 matrix of float) 0:35 Constant: 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:35 0.000000 0:36 Sequence 0:36 move second child to first child ( temp 3X3 matrix of float) 0:36 'var104' ( temp 3X3 matrix of float) 0:36 Constant: 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:37 Sequence 0:37 move second child to first child ( temp 3X3 matrix of float) 0:37 'var112' ( temp 3X3 matrix of float) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:38 Sequence 0:38 move second child to first child ( temp 3X4 matrix of float) 0:38 'var117' ( temp 3X4 matrix of float) 0:38 Constant: 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:39 Sequence 0:39 move second child to first child ( temp 3X4 matrix of float) 0:39 'var126' ( temp 3X4 matrix of float) 0:39 Constant: 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:40 Sequence 0:40 move second child to first child ( temp 4X2 matrix of float) 0:40 'var130' ( temp 4X2 matrix of float) 0:40 Constant: 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:40 0.000000 0:41 Sequence 0:41 move second child to first child ( temp 4X2 matrix of float) 0:41 'var140' ( temp 4X2 matrix of float) 0:41 Constant: 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:41 0.000000 0:42 Sequence 0:42 move second child to first child ( temp 4X3 matrix of float) 0:42 'var143' ( temp 4X3 matrix of float) 0:42 Constant: 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:42 0.000000 0:43 Sequence 0:43 move second child to first child ( temp 4X3 matrix of float) 0:43 'var154' ( temp 4X3 matrix of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:44 Sequence 0:44 move second child to first child ( temp 4X4 matrix of float) 0:44 'var156' ( temp 4X4 matrix of float) 0:44 Constant: 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:44 0.000000 0:45 Sequence 0:45 move second child to first child ( temp 4X4 matrix of float) 0:45 'var168' ( temp 4X4 matrix of float) 0:45 Constant: 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:45 0.000000 0:46 Sequence 0:46 move second child to first child ( temp float) 0:46 'var1' ( temp float) 0:46 Constant: 0:46 0.000000 0:47 Sequence 0:47 move second child to first child ( temp float) 0:47 'var2' ( temp float) 0:47 Constant: 0:47 0.000000 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 'var3' ( temp float) 0:48 Constant: 0:48 0.000000 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 'var4' ( temp float) 0:49 Constant: 0:49 0.000000 0:50 Sequence 0:50 move second child to first child ( temp float) 0:50 'var5' ( temp float) 0:50 Constant: 0:50 0.000000 0:51 Sequence 0:51 move second child to first child ( temp float) 0:51 'var6' ( temp float) 0:51 Constant: 0:51 0.000000 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'var7' ( temp float) 0:52 Constant: 0:52 0.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'var8' ( temp float) 0:53 Constant: 0:53 0.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'var9' ( temp float) 0:54 Constant: 0:54 0.000000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'var10' ( temp float) 0:55 Constant: 0:55 0.000000 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'var11' ( temp float) 0:56 Constant: 0:56 0.000000 0:57 Sequence 0:57 move second child to first child ( temp float) 0:57 'var12' ( temp float) 0:57 Constant: 0:57 0.000000 0:58 Sequence 0:58 move second child to first child ( temp 2-component vector of float) 0:58 'var15' ( temp 2-component vector of float) 0:58 Constant: 0:58 0.000000 0:58 0.000000 0:59 Sequence 0:59 move second child to first child ( temp 2-component vector of float) 0:59 'var16' ( temp 2-component vector of float) 0:59 Constant: 0:59 0.000000 0:59 0.000000 0:60 Sequence 0:60 move second child to first child ( temp 3-component vector of float) 0:60 'var29' ( temp 3-component vector of float) 0:60 Constant: 0:60 0.000000 0:60 0.000000 0:60 0.000000 0:61 Sequence 0:61 move second child to first child ( temp 2X2 matrix of float) 0:61 'var57' ( temp 2X2 matrix of float) 0:61 Constant: 0:61 0.000000 0:61 0.000000 0:61 0.000000 0:61 0.000000 0:62 Sequence 0:62 move second child to first child ( temp 2X2 matrix of float) 0:62 'var58' ( temp 2X2 matrix of float) 0:62 Constant: 0:62 0.000000 0:62 0.000000 0:62 0.000000 0:62 0.000000 0:63 Sequence 0:63 move second child to first child ( temp 2X2 matrix of float) 0:63 'var59' ( temp 2X2 matrix of float) 0:63 Constant: 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:63 0.000000 0:64 Sequence 0:64 move second child to first child ( temp 2X2 matrix of float) 0:64 'var60' ( temp 2X2 matrix of float) 0:64 Constant: 0:64 0.000000 0:64 0.000000 0:64 0.000000 0:64 0.000000 0:65 Sequence 0:65 move second child to first child ( temp 2X2 matrix of float) 0:65 'var61' ( temp 2X2 matrix of float) 0:65 Constant: 0:65 0.000000 0:65 0.000000 0:65 0.000000 0:65 0.000000 0:66 Sequence 0:66 move second child to first child ( temp 2X2 matrix of float) 0:66 'var62' ( temp 2X2 matrix of float) 0:66 Constant: 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:66 0.000000 0:67 Sequence 0:67 move second child to first child ( temp 2X2 matrix of float) 0:67 'var63' ( temp 2X2 matrix of float) 0:67 Constant: 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:67 0.000000 0:68 Sequence 0:68 move second child to first child ( temp 2X2 matrix of float) 0:68 'var64' ( temp 2X2 matrix of float) 0:68 Constant: 0:68 0.000000 0:68 0.000000 0:68 0.000000 0:68 0.000000 0:69 Sequence 0:69 move second child to first child ( temp 2X3 matrix of float) 0:69 'var71' ( temp 2X3 matrix of float) 0:69 Constant: 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:69 0.000000 0:70 Sequence 0:70 move second child to first child ( temp 2X3 matrix of float) 0:70 'var73' ( temp 2X3 matrix of float) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 Sequence 0:71 move second child to first child ( temp 2X3 matrix of float) 0:71 'var74' ( temp 2X3 matrix of float) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 Sequence 0:72 move second child to first child ( temp 2X3 matrix of float) 0:72 'var76' ( temp 2X3 matrix of float) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 Sequence 0:73 move second child to first child ( temp 2X3 matrix of float) 0:73 'var77' ( temp 2X3 matrix of float) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 Sequence 0:74 move second child to first child ( temp 2X4 matrix of float) 0:74 'var87' ( temp 2X4 matrix of float) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 Sequence 0:75 move second child to first child ( temp 2X4 matrix of float) 0:75 'var90' ( temp 2X4 matrix of float) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 Sequence 0:76 move second child to first child ( temp 3X2 matrix of float) 0:76 'var99' ( temp 3X2 matrix of float) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 Sequence 0:77 move second child to first child ( temp 3X2 matrix of float) 0:77 'var100' ( temp 3X2 matrix of float) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 Sequence 0:78 move second child to first child ( temp 3X2 matrix of float) 0:78 'var101' ( temp 3X2 matrix of float) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 Sequence 0:79 move second child to first child ( temp 3X2 matrix of float) 0:79 'var102' ( temp 3X2 matrix of float) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 Sequence 0:80 move second child to first child ( temp 3X2 matrix of float) 0:80 'var103' ( temp 3X2 matrix of float) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 Sequence 0:81 move second child to first child ( temp 3X3 matrix of float) 0:81 'var113' ( temp 3X3 matrix of float) 0:81 Constant: 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:81 0.000000 0:82 Sequence 0:82 move second child to first child ( temp 3X3 matrix of float) 0:82 'var115' ( temp 3X3 matrix of float) 0:82 Constant: 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:82 0.000000 0:83 Sequence 0:83 move second child to first child ( temp 3X3 matrix of float) 0:83 'var116' ( temp 3X3 matrix of float) 0:83 Constant: 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:83 0.000000 0:84 Sequence 0:84 move second child to first child ( temp 3X4 matrix of float) 0:84 'var129' ( temp 3X4 matrix of float) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 Sequence 0:85 move second child to first child ( temp 4X2 matrix of float) 0:85 'var141' ( temp 4X2 matrix of float) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 Sequence 0:86 move second child to first child ( temp 4X2 matrix of float) 0:86 'var142' ( temp 4X2 matrix of float) 0:86 Constant: 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:86 0.000000 0:87 Sequence 0:87 move second child to first child ( temp 4X3 matrix of float) 0:87 'var155' ( temp 4X3 matrix of float) 0:87 Constant: 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:87 0.000000 0:88 Branch: Return with expression 0:88 Constant: 0:88 0.000000 0:88 0.000000 0:88 0.000000 0:88 0.000000 0:18 Function Definition: main( ( temp void) 0:18 Function Parameters: 0:? Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:18 Function Call: @main( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 122 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 120 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "var0" Name 16 "var13" Name 18 "var14" Name 21 "var26" Name 23 "var28" Name 25 "var39" Name 27 "var42" Name 28 "var43" Name 31 "var52" Name 33 "var55" Name 34 "var56" Name 37 "var65" Name 39 "var70" Name 42 "var78" Name 44 "var84" Name 47 "var91" Name 49 "var98" Name 52 "var104" Name 54 "var112" Name 57 "var117" Name 59 "var126" Name 62 "var130" Name 64 "var140" Name 67 "var143" Name 69 "var154" Name 72 "var156" Name 74 "var168" Name 75 "var1" Name 76 "var2" Name 77 "var3" Name 78 "var4" Name 79 "var5" Name 80 "var6" Name 81 "var7" Name 82 "var8" Name 83 "var9" Name 84 "var10" Name 85 "var11" Name 86 "var12" Name 87 "var15" Name 88 "var16" Name 89 "var29" Name 90 "var57" Name 91 "var58" Name 92 "var59" Name 93 "var60" Name 94 "var61" Name 95 "var62" Name 96 "var63" Name 97 "var64" Name 98 "var71" Name 99 "var73" Name 100 "var74" Name 101 "var76" Name 102 "var77" Name 103 "var87" Name 104 "var90" Name 105 "var99" Name 106 "var100" Name 107 "var101" Name 108 "var102" Name 109 "var103" Name 110 "var113" Name 111 "var115" Name 112 "var116" Name 113 "var129" Name 114 "var141" Name 115 "var142" Name 116 "var155" Name 120 "@entryPointOutput" Decorate 120(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 6(float) 13: 6(float) Constant 0 14: TypeVector 6(float) 2 15: TypePointer Function 14(fvec2) 17: 14(fvec2) ConstantComposite 13 13 19: TypeVector 6(float) 3 20: TypePointer Function 19(fvec3) 22: 19(fvec3) ConstantComposite 13 13 13 24: TypePointer Function 7(fvec4) 26: 7(fvec4) ConstantComposite 13 13 13 13 29: TypeMatrix 14(fvec2) 2 30: TypePointer Function 29 32: 29 ConstantComposite 17 17 35: TypeMatrix 19(fvec3) 2 36: TypePointer Function 35 38: 35 ConstantComposite 22 22 40: TypeMatrix 7(fvec4) 2 41: TypePointer Function 40 43: 40 ConstantComposite 26 26 45: TypeMatrix 14(fvec2) 3 46: TypePointer Function 45 48: 45 ConstantComposite 17 17 17 50: TypeMatrix 19(fvec3) 3 51: TypePointer Function 50 53: 50 ConstantComposite 22 22 22 55: TypeMatrix 7(fvec4) 3 56: TypePointer Function 55 58: 55 ConstantComposite 26 26 26 60: TypeMatrix 14(fvec2) 4 61: TypePointer Function 60 63: 60 ConstantComposite 17 17 17 17 65: TypeMatrix 19(fvec3) 4 66: TypePointer Function 65 68: 65 ConstantComposite 22 22 22 22 70: TypeMatrix 7(fvec4) 4 71: TypePointer Function 70 73: 70 ConstantComposite 26 26 26 26 119: TypePointer Output 7(fvec4) 120(@entryPointOutput): 119(ptr) Variable Output 4(main): 2 Function None 3 5: Label 121: 7(fvec4) FunctionCall 9(@main() Store 120(@entryPointOutput) 121 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(var0): 11(ptr) Variable Function 16(var13): 15(ptr) Variable Function 18(var14): 15(ptr) Variable Function 21(var26): 20(ptr) Variable Function 23(var28): 20(ptr) Variable Function 25(var39): 24(ptr) Variable Function 27(var42): 24(ptr) Variable Function 28(var43): 24(ptr) Variable Function 31(var52): 30(ptr) Variable Function 33(var55): 30(ptr) Variable Function 34(var56): 30(ptr) Variable Function 37(var65): 36(ptr) Variable Function 39(var70): 36(ptr) Variable Function 42(var78): 41(ptr) Variable Function 44(var84): 41(ptr) Variable Function 47(var91): 46(ptr) Variable Function 49(var98): 46(ptr) Variable Function 52(var104): 51(ptr) Variable Function 54(var112): 51(ptr) Variable Function 57(var117): 56(ptr) Variable Function 59(var126): 56(ptr) Variable Function 62(var130): 61(ptr) Variable Function 64(var140): 61(ptr) Variable Function 67(var143): 66(ptr) Variable Function 69(var154): 66(ptr) Variable Function 72(var156): 71(ptr) Variable Function 74(var168): 71(ptr) Variable Function 75(var1): 11(ptr) Variable Function 76(var2): 11(ptr) Variable Function 77(var3): 11(ptr) Variable Function 78(var4): 11(ptr) Variable Function 79(var5): 11(ptr) Variable Function 80(var6): 11(ptr) Variable Function 81(var7): 11(ptr) Variable Function 82(var8): 11(ptr) Variable Function 83(var9): 11(ptr) Variable Function 84(var10): 11(ptr) Variable Function 85(var11): 11(ptr) Variable Function 86(var12): 11(ptr) Variable Function 87(var15): 15(ptr) Variable Function 88(var16): 15(ptr) Variable Function 89(var29): 20(ptr) Variable Function 90(var57): 30(ptr) Variable Function 91(var58): 30(ptr) Variable Function 92(var59): 30(ptr) Variable Function 93(var60): 30(ptr) Variable Function 94(var61): 30(ptr) Variable Function 95(var62): 30(ptr) Variable Function 96(var63): 30(ptr) Variable Function 97(var64): 30(ptr) Variable Function 98(var71): 36(ptr) Variable Function 99(var73): 36(ptr) Variable Function 100(var74): 36(ptr) Variable Function 101(var76): 36(ptr) Variable Function 102(var77): 36(ptr) Variable Function 103(var87): 41(ptr) Variable Function 104(var90): 41(ptr) Variable Function 105(var99): 46(ptr) Variable Function 106(var100): 46(ptr) Variable Function 107(var101): 46(ptr) Variable Function 108(var102): 46(ptr) Variable Function 109(var103): 46(ptr) Variable Function 110(var113): 51(ptr) Variable Function 111(var115): 51(ptr) Variable Function 112(var116): 51(ptr) Variable Function 113(var129): 56(ptr) Variable Function 114(var141): 61(ptr) Variable Function 115(var142): 61(ptr) Variable Function 116(var155): 66(ptr) Variable Function Store 12(var0) 13 Store 16(var13) 17 Store 18(var14) 17 Store 21(var26) 22 Store 23(var28) 22 Store 25(var39) 26 Store 27(var42) 26 Store 28(var43) 26 Store 31(var52) 32 Store 33(var55) 32 Store 34(var56) 32 Store 37(var65) 38 Store 39(var70) 38 Store 42(var78) 43 Store 44(var84) 43 Store 47(var91) 48 Store 49(var98) 48 Store 52(var104) 53 Store 54(var112) 53 Store 57(var117) 58 Store 59(var126) 58 Store 62(var130) 63 Store 64(var140) 63 Store 67(var143) 68 Store 69(var154) 68 Store 72(var156) 73 Store 74(var168) 73 Store 75(var1) 13 Store 76(var2) 13 Store 77(var3) 13 Store 78(var4) 13 Store 79(var5) 13 Store 80(var6) 13 Store 81(var7) 13 Store 82(var8) 13 Store 83(var9) 13 Store 84(var10) 13 Store 85(var11) 13 Store 86(var12) 13 Store 87(var15) 17 Store 88(var16) 17 Store 89(var29) 22 Store 90(var57) 32 Store 91(var58) 32 Store 92(var59) 32 Store 93(var60) 32 Store 94(var61) 32 Store 95(var62) 32 Store 96(var63) 32 Store 97(var64) 32 Store 98(var71) 38 Store 99(var73) 38 Store 100(var74) 38 Store 101(var76) 38 Store 102(var77) 38 Store 103(var87) 43 Store 104(var90) 43 Store 105(var99) 48 Store 106(var100) 48 Store 107(var101) 48 Store 108(var102) 48 Store 109(var103) 48 Store 110(var113) 53 Store 111(var115) 53 Store 112(var116) 53 Store 113(var129) 58 Store 114(var141) 63 Store 115(var142) 63 Store 116(var155) 68 ReturnValue 26 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.typeGraphCopy.vert.out000066400000000000000000000167671506534232700237370ustar00rootroot00000000000000hlsl.typeGraphCopy.vert Shader version: 500 0:? Sequence 0:22 Function Definition: @main( ( temp float) 0:22 Function Parameters: 0:? Sequence 0:23 Branch: Return with expression 0:23 b: direct index for structure ( temp float) 0:23 s2: direct index for structure ( temp structure{ temp int a, temp float b}) 0:23 t3: direct index for structure ( temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2}) 0:23 foo: direct index for structure ( uniform structure{ temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t1, temp structure{ temp int a, temp float b} t2, temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t3}) 0:23 'anon@0' (layout( row_major std140) uniform block{ uniform structure{ temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t1, temp structure{ temp int a, temp float b} t2, temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t3} foo}) 0:23 Constant: 0:23 0 (const uint) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 1 (const int) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:22 Function Call: @main( ( temp float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform structure{ temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t1, temp structure{ temp int a, temp float b} t2, temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t3} foo}) 0:? '@entryPointOutput' (layout( location=0) out float) Linked vertex stage: Shader version: 500 0:? Sequence 0:22 Function Definition: @main( ( temp float) 0:22 Function Parameters: 0:? Sequence 0:23 Branch: Return with expression 0:23 b: direct index for structure ( temp float) 0:23 s2: direct index for structure ( temp structure{ temp int a, temp float b}) 0:23 t3: direct index for structure ( temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2}) 0:23 foo: direct index for structure ( uniform structure{ temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t1, temp structure{ temp int a, temp float b} t2, temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t3}) 0:23 'anon@0' (layout( row_major std140) uniform block{ uniform structure{ temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t1, temp structure{ temp int a, temp float b} t2, temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t3} foo}) 0:23 Constant: 0:23 0 (const uint) 0:23 Constant: 0:23 2 (const int) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: 0:23 1 (const int) 0:22 Function Definition: main( ( temp void) 0:22 Function Parameters: 0:? Sequence 0:22 move second child to first child ( temp float) 0:? '@entryPointOutput' (layout( location=0) out float) 0:22 Function Call: @main( ( temp float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform structure{ temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t1, temp structure{ temp int a, temp float b} t2, temp structure{ temp structure{ temp int a, temp float b} s1, temp structure{ temp int a, temp float b} s2} t3} foo}) 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 26 Source HLSL 500 Name 4 "main" Name 8 "@main(" Name 11 "N1" MemberName 11(N1) 0 "a" MemberName 11(N1) 1 "b" Name 12 "N2" MemberName 12(N2) 0 "s1" MemberName 12(N2) 1 "s2" Name 13 "N3" MemberName 13(N3) 0 "t1" MemberName 13(N3) 1 "t2" MemberName 13(N3) 2 "t3" Name 14 "$Global" MemberName 14($Global) 0 "foo" Name 16 "" Name 26 "@entryPointOutput" MemberDecorate 11(N1) 0 Offset 0 MemberDecorate 11(N1) 1 Offset 4 MemberDecorate 12(N2) 0 Offset 0 MemberDecorate 12(N2) 1 Offset 16 MemberDecorate 13(N3) 0 Offset 0 MemberDecorate 13(N3) 1 Offset 32 MemberDecorate 13(N3) 2 Offset 48 Decorate 14($Global) Block MemberDecorate 14($Global) 0 Offset 0 Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 26(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypeInt 32 1 11(N1): TypeStruct 10(int) 6(float) 12(N2): TypeStruct 11(N1) 11(N1) 13(N3): TypeStruct 12(N2) 11(N1) 12(N2) 14($Global): TypeStruct 13(N3) 15: TypePointer Uniform 14($Global) 16: 15(ptr) Variable Uniform 17: 10(int) Constant 0 18: 10(int) Constant 2 19: 10(int) Constant 1 20: TypePointer Uniform 6(float) 25: TypePointer Output 6(float) 26(@entryPointOutput): 25(ptr) Variable Output 4(main): 2 Function None 3 5: Label 27: 6(float) FunctionCall 8(@main() Store 26(@entryPointOutput) 27 Return FunctionEnd 8(@main(): 6(float) Function None 7 9: Label 21: 20(ptr) AccessChain 16 17 18 19 19 22: 6(float) Load 21 ReturnValue 22 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.typedef.frag.out000066400000000000000000000123071506534232700225220ustar00rootroot00000000000000hlsl.typedef.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: ShaderFunction(vf4;i1; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' ( in 4-component vector of float) 0:4 'ii' ( in int) 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'a1' ( temp 4-component vector of float) 0:6 Constant: 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'i' ( temp int) 0:7 Constant: 0:7 2 (const int) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'j' ( temp int) 0:9 'ii' ( in int) 0:10 Branch: Return with expression 0:10 add ( temp 4-component vector of float) 0:10 component-wise multiply ( temp 4-component vector of float) 0:10 'input' ( in 4-component vector of float) 0:10 'a1' ( temp 4-component vector of float) 0:10 Construct vec4 ( uniform 4-component vector of float) 0:10 Convert int to float ( temp float) 0:10 add ( temp int) 0:10 'i' ( temp int) 0:10 'j' ( temp int) 0:? Linker Objects Linked fragment stage: WARNING: Linking fragment stage: Entry point not found Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:4 Function Definition: ShaderFunction(vf4;i1; ( temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' ( in 4-component vector of float) 0:4 'ii' ( in int) 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 'a1' ( temp 4-component vector of float) 0:6 Constant: 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'i' ( temp int) 0:7 Constant: 0:7 2 (const int) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'j' ( temp int) 0:9 'ii' ( in int) 0:10 Branch: Return with expression 0:10 add ( temp 4-component vector of float) 0:10 component-wise multiply ( temp 4-component vector of float) 0:10 'input' ( in 4-component vector of float) 0:10 'a1' ( temp 4-component vector of float) 0:10 Construct vec4 ( uniform 4-component vector of float) 0:10 Convert int to float ( temp float) 0:10 add ( temp int) 0:10 'i' ( temp int) 0:10 'j' ( temp int) 0:? Linker Objects // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 14 "ShaderFunction(vf4;i1;" Name 12 "input" Name 13 "ii" Name 16 "a1" Name 19 "i" Name 21 "j" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeInt 32 1 10: TypePointer Function 9(int) 11: TypeFunction 7(fvec4) 8(ptr) 10(ptr) 17: 6(float) Constant 1065353216 18: 7(fvec4) ConstantComposite 17 17 17 17 20: 9(int) Constant 2 4(PixelShaderFunction): 2 Function None 3 5: Label Return FunctionEnd 14(ShaderFunction(vf4;i1;): 7(fvec4) Function None 11 12(input): 8(ptr) FunctionParameter 13(ii): 10(ptr) FunctionParameter 15: Label 16(a1): 8(ptr) Variable Function 19(i): 10(ptr) Variable Function 21(j): 10(ptr) Variable Function Store 16(a1) 18 Store 19(i) 20 22: 9(int) Load 13(ii) Store 21(j) 22 23: 7(fvec4) Load 12(input) 24: 7(fvec4) Load 16(a1) 25: 7(fvec4) FMul 23 24 26: 9(int) Load 19(i) 27: 9(int) Load 21(j) 28: 9(int) IAdd 26 27 29: 6(float) ConvertSToF 28 30: 7(fvec4) CompositeConstruct 29 29 29 29 31: 7(fvec4) FAdd 25 30 ReturnValue 31 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.void.frag.out000066400000000000000000000107031506534232700220210ustar00rootroot00000000000000hlsl.void.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:1 Function Definition: foo1( ( temp void) 0:1 Function Parameters: 0:2 Function Definition: foo2( ( temp void) 0:2 Function Parameters: 0:5 Function Definition: @PixelShaderFunction(vf4; ( temp void) 0:5 Function Parameters: 0:5 'input' ( in 4-component vector of float) 0:? Sequence 0:6 Function Call: foo1( ( temp void) 0:7 Function Call: foo2( ( temp void) 0:8 Branch: Return 0:5 Function Definition: PixelShaderFunction( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 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:5 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:1 Function Definition: foo1( ( temp void) 0:1 Function Parameters: 0:2 Function Definition: foo2( ( temp void) 0:2 Function Parameters: 0:5 Function Definition: @PixelShaderFunction(vf4; ( temp void) 0:5 Function Parameters: 0:5 'input' ( in 4-component vector of float) 0:? Sequence 0:6 Function Call: foo1( ( temp void) 0:7 Function Call: foo2( ( temp void) 0:8 Branch: Return 0:5 Function Definition: PixelShaderFunction( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 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:5 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 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 22 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 6 "foo1(" Name 8 "foo2(" Name 15 "@PixelShaderFunction(vf4;" Name 14 "input" Name 20 "input" Name 22 "input" Name 24 "param" Decorate 22(input) Location 0 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Function 11(fvec4) 13: TypeFunction 2 12(ptr) 21: TypePointer Input 11(fvec4) 22(input): 21(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 20(input): 12(ptr) Variable Function 24(param): 12(ptr) Variable Function 23: 11(fvec4) Load 22(input) Store 20(input) 23 25: 11(fvec4) Load 20(input) Store 24(param) 25 26: 2 FunctionCall 15(@PixelShaderFunction(vf4;) 24(param) Return FunctionEnd 6(foo1(): 2 Function None 3 7: Label Return FunctionEnd 8(foo2(): 2 Function None 3 9: Label Return FunctionEnd 15(@PixelShaderFunction(vf4;): 2 Function None 13 14(input): 12(ptr) FunctionParameter 16: Label 17: 2 FunctionCall 6(foo1() 18: 2 FunctionCall 8(foo2() Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.w-recip.frag.out000066400000000000000000000303101506534232700224220ustar00rootroot00000000000000hlsl.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" Decorate 36($Global) Block MemberDecorate 36($Global) 0 Offset 0 MemberDecorate 36($Global) 1 Offset 16 Decorate 38 Binding 0 Decorate 38 DescriptorSet 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 glslang-16.0.0/Test/baseResults/hlsl.w-recip2.frag.out000066400000000000000000000443401506534232700225140ustar00rootroot00000000000000hlsl.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" Decorate 28($Global) Block MemberDecorate 28($Global) 0 Offset 0 MemberDecorate 28($Global) 1 Offset 16 Decorate 30 Binding 0 Decorate 30 DescriptorSet 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 glslang-16.0.0/Test/baseResults/hlsl.wavebroadcast.comp.out000066400000000000000000006172051506534232700237360ustar00rootroot00000000000000hlsl.wavebroadcast.comp Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:13 Function Definition: @CSMain(vu3; ( temp void) 0:13 Function Parameters: 0:13 'dti' ( in 3-component vector of uint) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 subgroupShuffle ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 13 (const uint) 0:15 move second child to first child ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 subgroupShuffle ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 13 (const uint) 0:16 move second child to first child ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 subgroupShuffle ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (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 13 (const uint) 0:17 move second child to first child ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 subgroupShuffle ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 13 (const uint) 0:19 move second child to first child ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupShuffle ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 13 (const uint) 0:20 move second child to first child ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 subgroupShuffle ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 13 (const uint) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupShuffle ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 13 (const uint) 0:22 move second child to first child ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupShuffle ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 13 (const uint) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupShuffle ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 13 (const uint) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 subgroupShuffle ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 13 (const uint) 0:26 move second child to first child ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupShuffle ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 13 (const uint) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupShuffle ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 13 (const uint) 0:29 move second child to first child ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 subgroupBroadcastFirst ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 move second child to first child ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 subgroupBroadcastFirst ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupBroadcastFirst ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:32 move second child to first child ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupBroadcastFirst ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupBroadcastFirst ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 subgroupBroadcastFirst ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 subgroupBroadcastFirst ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupBroadcastFirst ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:39 move second child to first child ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupBroadcastFirst ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupBroadcastFirst ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:41 move second child to first child ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupBroadcastFirst ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:42 move second child to first child ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupBroadcastFirst ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupBroadcastFirst ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupBroadcastFirst ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupBroadcastFirst ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupBroadcastFirst ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:49 move second child to first child ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 subgroupBroadcastFirst ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:50 move second child to first child ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupBroadcastFirst ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:51 move second child to first child ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupBroadcastFirst ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:52 move second child to first child ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupBroadcastFirst ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:13 Function Definition: CSMain( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:13 Function Definition: @CSMain(vu3; ( temp void) 0:13 Function Parameters: 0:13 'dti' ( in 3-component vector of uint) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 subgroupShuffle ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 13 (const uint) 0:15 move second child to first child ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 subgroupShuffle ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 13 (const uint) 0:16 move second child to first child ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 subgroupShuffle ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (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 13 (const uint) 0:17 move second child to first child ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 subgroupShuffle ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 13 (const uint) 0:19 move second child to first child ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupShuffle ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 13 (const uint) 0:20 move second child to first child ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 subgroupShuffle ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 13 (const uint) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupShuffle ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 13 (const uint) 0:22 move second child to first child ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupShuffle ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 13 (const uint) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupShuffle ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 13 (const uint) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 subgroupShuffle ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 13 (const uint) 0:26 move second child to first child ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupShuffle ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 13 (const uint) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupShuffle ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 13 (const uint) 0:29 move second child to first child ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 subgroupBroadcastFirst ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 move second child to first child ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 subgroupBroadcastFirst ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupBroadcastFirst ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:32 move second child to first child ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupBroadcastFirst ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupBroadcastFirst ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 subgroupBroadcastFirst ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 subgroupBroadcastFirst ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupBroadcastFirst ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:39 move second child to first child ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupBroadcastFirst ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupBroadcastFirst ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:41 move second child to first child ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupBroadcastFirst ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:42 move second child to first child ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupBroadcastFirst ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupBroadcastFirst ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupBroadcastFirst ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupBroadcastFirst ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupBroadcastFirst ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:49 move second child to first child ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 subgroupBroadcastFirst ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:50 move second child to first child ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupBroadcastFirst ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:51 move second child to first child ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupBroadcastFirst ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:52 move second child to first child ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupBroadcastFirst ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:13 Function Definition: CSMain( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 393 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformBallot Capability GroupNonUniformShuffle 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "CSMain" 388 ExecutionMode 4 LocalSize 32 16 1 Source HLSL 500 Name 4 "CSMain" Name 11 "@CSMain(vu3;" Name 10 "dti" Name 20 "Types" MemberName 20(Types) 0 "u" MemberName 20(Types) 1 "i" MemberName 20(Types) 2 "f" MemberName 20(Types) 3 "d" Name 22 "data" MemberName 22(data) 0 "@data" Name 24 "data" Name 386 "dti" Name 388 "dti" Name 390 "param" MemberDecorate 20(Types) 0 Offset 0 MemberDecorate 20(Types) 1 Offset 16 MemberDecorate 20(Types) 2 Offset 32 MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 Decorate 22(data) Block MemberDecorate 22(data) 0 Offset 0 Decorate 24(data) Binding 0 Decorate 24(data) DescriptorSet 0 Decorate 388(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeVector 6(int) 4 14: TypeInt 32 1 15: TypeVector 14(int) 4 16: TypeFloat 32 17: TypeVector 16(float) 4 18: TypeFloat 64 19: TypeVector 18(float64_t) 4 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4) 21: TypeRuntimeArray 20(Types) 22(data): TypeStruct 21 23: TypePointer StorageBuffer 22(data) 24(data): 23(ptr) Variable StorageBuffer 25: 14(int) Constant 0 26: 6(int) Constant 0 27: TypePointer Function 6(int) 32: TypePointer StorageBuffer 13(ivec4) 35: 6(int) Constant 13 36: 6(int) Constant 3 43: TypePointer StorageBuffer 6(int) 52: TypeVector 6(int) 2 59: 6(int) Constant 1 74: 6(int) Constant 2 79: 14(int) Constant 1 82: TypePointer StorageBuffer 15(ivec4) 91: TypePointer StorageBuffer 14(int) 100: TypeVector 14(int) 2 113: TypeVector 14(int) 3 126: 14(int) Constant 2 129: TypePointer StorageBuffer 17(fvec4) 138: TypePointer StorageBuffer 16(float) 147: TypeVector 16(float) 2 160: TypeVector 16(float) 3 173: 14(int) Constant 3 176: TypePointer StorageBuffer 19(f64vec4) 185: TypePointer StorageBuffer 18(float64_t) 194: TypeVector 18(float64_t) 2 207: TypeVector 18(float64_t) 3 387: TypePointer Input 7(ivec3) 388(dti): 387(ptr) Variable Input 4(CSMain): 2 Function None 3 5: Label 386(dti): 8(ptr) Variable Function 390(param): 8(ptr) Variable Function 389: 7(ivec3) Load 388(dti) Store 386(dti) 389 391: 7(ivec3) Load 386(dti) Store 390(param) 391 392: 2 FunctionCall 11(@CSMain(vu3;) 390(param) Return FunctionEnd 11(@CSMain(vu3;): 2 Function None 9 10(dti): 8(ptr) FunctionParameter 12: Label 28: 27(ptr) AccessChain 10(dti) 26 29: 6(int) Load 28 30: 27(ptr) AccessChain 10(dti) 26 31: 6(int) Load 30 33: 32(ptr) AccessChain 24(data) 25 31 25 34: 13(ivec4) Load 33 37: 13(ivec4) GroupNonUniformShuffle 36 34 35 38: 32(ptr) AccessChain 24(data) 25 29 25 Store 38 37 39: 27(ptr) AccessChain 10(dti) 26 40: 6(int) Load 39 41: 27(ptr) AccessChain 10(dti) 26 42: 6(int) Load 41 44: 43(ptr) AccessChain 24(data) 25 42 25 26 45: 6(int) Load 44 46: 6(int) GroupNonUniformShuffle 36 45 35 47: 43(ptr) AccessChain 24(data) 25 40 25 26 Store 47 46 48: 27(ptr) AccessChain 10(dti) 26 49: 6(int) Load 48 50: 27(ptr) AccessChain 10(dti) 26 51: 6(int) Load 50 53: 32(ptr) AccessChain 24(data) 25 51 25 54: 13(ivec4) Load 53 55: 52(ivec2) VectorShuffle 54 54 0 1 56: 52(ivec2) GroupNonUniformShuffle 36 55 35 57: 43(ptr) AccessChain 24(data) 25 49 25 26 58: 6(int) CompositeExtract 56 0 Store 57 58 60: 43(ptr) AccessChain 24(data) 25 49 25 59 61: 6(int) CompositeExtract 56 1 Store 60 61 62: 27(ptr) AccessChain 10(dti) 26 63: 6(int) Load 62 64: 27(ptr) AccessChain 10(dti) 26 65: 6(int) Load 64 66: 32(ptr) AccessChain 24(data) 25 65 25 67: 13(ivec4) Load 66 68: 7(ivec3) VectorShuffle 67 67 0 1 2 69: 7(ivec3) GroupNonUniformShuffle 36 68 35 70: 43(ptr) AccessChain 24(data) 25 63 25 26 71: 6(int) CompositeExtract 69 0 Store 70 71 72: 43(ptr) AccessChain 24(data) 25 63 25 59 73: 6(int) CompositeExtract 69 1 Store 72 73 75: 43(ptr) AccessChain 24(data) 25 63 25 74 76: 6(int) CompositeExtract 69 2 Store 75 76 77: 27(ptr) AccessChain 10(dti) 26 78: 6(int) Load 77 80: 27(ptr) AccessChain 10(dti) 26 81: 6(int) Load 80 83: 82(ptr) AccessChain 24(data) 25 81 79 84: 15(ivec4) Load 83 85: 15(ivec4) GroupNonUniformShuffle 36 84 35 86: 82(ptr) AccessChain 24(data) 25 78 79 Store 86 85 87: 27(ptr) AccessChain 10(dti) 26 88: 6(int) Load 87 89: 27(ptr) AccessChain 10(dti) 26 90: 6(int) Load 89 92: 91(ptr) AccessChain 24(data) 25 90 79 26 93: 14(int) Load 92 94: 14(int) GroupNonUniformShuffle 36 93 35 95: 91(ptr) AccessChain 24(data) 25 88 79 26 Store 95 94 96: 27(ptr) AccessChain 10(dti) 26 97: 6(int) Load 96 98: 27(ptr) AccessChain 10(dti) 26 99: 6(int) Load 98 101: 82(ptr) AccessChain 24(data) 25 99 79 102: 15(ivec4) Load 101 103: 100(ivec2) VectorShuffle 102 102 0 1 104: 100(ivec2) GroupNonUniformShuffle 36 103 35 105: 91(ptr) AccessChain 24(data) 25 97 79 26 106: 14(int) CompositeExtract 104 0 Store 105 106 107: 91(ptr) AccessChain 24(data) 25 97 79 59 108: 14(int) CompositeExtract 104 1 Store 107 108 109: 27(ptr) AccessChain 10(dti) 26 110: 6(int) Load 109 111: 27(ptr) AccessChain 10(dti) 26 112: 6(int) Load 111 114: 82(ptr) AccessChain 24(data) 25 112 79 115: 15(ivec4) Load 114 116: 113(ivec3) VectorShuffle 115 115 0 1 2 117: 113(ivec3) GroupNonUniformShuffle 36 116 35 118: 91(ptr) AccessChain 24(data) 25 110 79 26 119: 14(int) CompositeExtract 117 0 Store 118 119 120: 91(ptr) AccessChain 24(data) 25 110 79 59 121: 14(int) CompositeExtract 117 1 Store 120 121 122: 91(ptr) AccessChain 24(data) 25 110 79 74 123: 14(int) CompositeExtract 117 2 Store 122 123 124: 27(ptr) AccessChain 10(dti) 26 125: 6(int) Load 124 127: 27(ptr) AccessChain 10(dti) 26 128: 6(int) Load 127 130: 129(ptr) AccessChain 24(data) 25 128 126 131: 17(fvec4) Load 130 132: 17(fvec4) GroupNonUniformShuffle 36 131 35 133: 129(ptr) AccessChain 24(data) 25 125 126 Store 133 132 134: 27(ptr) AccessChain 10(dti) 26 135: 6(int) Load 134 136: 27(ptr) AccessChain 10(dti) 26 137: 6(int) Load 136 139: 138(ptr) AccessChain 24(data) 25 137 126 26 140: 16(float) Load 139 141: 16(float) GroupNonUniformShuffle 36 140 35 142: 138(ptr) AccessChain 24(data) 25 135 126 26 Store 142 141 143: 27(ptr) AccessChain 10(dti) 26 144: 6(int) Load 143 145: 27(ptr) AccessChain 10(dti) 26 146: 6(int) Load 145 148: 129(ptr) AccessChain 24(data) 25 146 126 149: 17(fvec4) Load 148 150: 147(fvec2) VectorShuffle 149 149 0 1 151: 147(fvec2) GroupNonUniformShuffle 36 150 35 152: 138(ptr) AccessChain 24(data) 25 144 126 26 153: 16(float) CompositeExtract 151 0 Store 152 153 154: 138(ptr) AccessChain 24(data) 25 144 126 59 155: 16(float) CompositeExtract 151 1 Store 154 155 156: 27(ptr) AccessChain 10(dti) 26 157: 6(int) Load 156 158: 27(ptr) AccessChain 10(dti) 26 159: 6(int) Load 158 161: 129(ptr) AccessChain 24(data) 25 159 126 162: 17(fvec4) Load 161 163: 160(fvec3) VectorShuffle 162 162 0 1 2 164: 160(fvec3) GroupNonUniformShuffle 36 163 35 165: 138(ptr) AccessChain 24(data) 25 157 126 26 166: 16(float) CompositeExtract 164 0 Store 165 166 167: 138(ptr) AccessChain 24(data) 25 157 126 59 168: 16(float) CompositeExtract 164 1 Store 167 168 169: 138(ptr) AccessChain 24(data) 25 157 126 74 170: 16(float) CompositeExtract 164 2 Store 169 170 171: 27(ptr) AccessChain 10(dti) 26 172: 6(int) Load 171 174: 27(ptr) AccessChain 10(dti) 26 175: 6(int) Load 174 177: 176(ptr) AccessChain 24(data) 25 175 173 178: 19(f64vec4) Load 177 179: 19(f64vec4) GroupNonUniformBroadcastFirst 36 178 180: 176(ptr) AccessChain 24(data) 25 172 173 Store 180 179 181: 27(ptr) AccessChain 10(dti) 26 182: 6(int) Load 181 183: 27(ptr) AccessChain 10(dti) 26 184: 6(int) Load 183 186: 185(ptr) AccessChain 24(data) 25 184 173 26 187:18(float64_t) Load 186 188:18(float64_t) GroupNonUniformBroadcastFirst 36 187 189: 185(ptr) AccessChain 24(data) 25 182 173 26 Store 189 188 190: 27(ptr) AccessChain 10(dti) 26 191: 6(int) Load 190 192: 27(ptr) AccessChain 10(dti) 26 193: 6(int) Load 192 195: 176(ptr) AccessChain 24(data) 25 193 173 196: 19(f64vec4) Load 195 197:194(f64vec2) VectorShuffle 196 196 0 1 198:194(f64vec2) GroupNonUniformBroadcastFirst 36 197 199: 185(ptr) AccessChain 24(data) 25 191 173 26 200:18(float64_t) CompositeExtract 198 0 Store 199 200 201: 185(ptr) AccessChain 24(data) 25 191 173 59 202:18(float64_t) CompositeExtract 198 1 Store 201 202 203: 27(ptr) AccessChain 10(dti) 26 204: 6(int) Load 203 205: 27(ptr) AccessChain 10(dti) 26 206: 6(int) Load 205 208: 176(ptr) AccessChain 24(data) 25 206 173 209: 19(f64vec4) Load 208 210:207(f64vec3) VectorShuffle 209 209 0 1 2 211:207(f64vec3) GroupNonUniformBroadcastFirst 36 210 212: 185(ptr) AccessChain 24(data) 25 204 173 26 213:18(float64_t) CompositeExtract 211 0 Store 212 213 214: 185(ptr) AccessChain 24(data) 25 204 173 59 215:18(float64_t) CompositeExtract 211 1 Store 214 215 216: 185(ptr) AccessChain 24(data) 25 204 173 74 217:18(float64_t) CompositeExtract 211 2 Store 216 217 218: 27(ptr) AccessChain 10(dti) 26 219: 6(int) Load 218 220: 27(ptr) AccessChain 10(dti) 26 221: 6(int) Load 220 222: 32(ptr) AccessChain 24(data) 25 221 25 223: 13(ivec4) Load 222 224: 13(ivec4) GroupNonUniformBroadcastFirst 36 223 225: 32(ptr) AccessChain 24(data) 25 219 25 Store 225 224 226: 27(ptr) AccessChain 10(dti) 26 227: 6(int) Load 226 228: 27(ptr) AccessChain 10(dti) 26 229: 6(int) Load 228 230: 43(ptr) AccessChain 24(data) 25 229 25 26 231: 6(int) Load 230 232: 6(int) GroupNonUniformBroadcastFirst 36 231 233: 43(ptr) AccessChain 24(data) 25 227 25 26 Store 233 232 234: 27(ptr) AccessChain 10(dti) 26 235: 6(int) Load 234 236: 27(ptr) AccessChain 10(dti) 26 237: 6(int) Load 236 238: 32(ptr) AccessChain 24(data) 25 237 25 239: 13(ivec4) Load 238 240: 52(ivec2) VectorShuffle 239 239 0 1 241: 52(ivec2) GroupNonUniformBroadcastFirst 36 240 242: 43(ptr) AccessChain 24(data) 25 235 25 26 243: 6(int) CompositeExtract 241 0 Store 242 243 244: 43(ptr) AccessChain 24(data) 25 235 25 59 245: 6(int) CompositeExtract 241 1 Store 244 245 246: 27(ptr) AccessChain 10(dti) 26 247: 6(int) Load 246 248: 27(ptr) AccessChain 10(dti) 26 249: 6(int) Load 248 250: 32(ptr) AccessChain 24(data) 25 249 25 251: 13(ivec4) Load 250 252: 7(ivec3) VectorShuffle 251 251 0 1 2 253: 7(ivec3) GroupNonUniformBroadcastFirst 36 252 254: 43(ptr) AccessChain 24(data) 25 247 25 26 255: 6(int) CompositeExtract 253 0 Store 254 255 256: 43(ptr) AccessChain 24(data) 25 247 25 59 257: 6(int) CompositeExtract 253 1 Store 256 257 258: 43(ptr) AccessChain 24(data) 25 247 25 74 259: 6(int) CompositeExtract 253 2 Store 258 259 260: 27(ptr) AccessChain 10(dti) 26 261: 6(int) Load 260 262: 27(ptr) AccessChain 10(dti) 26 263: 6(int) Load 262 264: 82(ptr) AccessChain 24(data) 25 263 79 265: 15(ivec4) Load 264 266: 15(ivec4) GroupNonUniformBroadcastFirst 36 265 267: 82(ptr) AccessChain 24(data) 25 261 79 Store 267 266 268: 27(ptr) AccessChain 10(dti) 26 269: 6(int) Load 268 270: 27(ptr) AccessChain 10(dti) 26 271: 6(int) Load 270 272: 91(ptr) AccessChain 24(data) 25 271 79 26 273: 14(int) Load 272 274: 14(int) GroupNonUniformBroadcastFirst 36 273 275: 91(ptr) AccessChain 24(data) 25 269 79 26 Store 275 274 276: 27(ptr) AccessChain 10(dti) 26 277: 6(int) Load 276 278: 27(ptr) AccessChain 10(dti) 26 279: 6(int) Load 278 280: 82(ptr) AccessChain 24(data) 25 279 79 281: 15(ivec4) Load 280 282: 100(ivec2) VectorShuffle 281 281 0 1 283: 100(ivec2) GroupNonUniformBroadcastFirst 36 282 284: 91(ptr) AccessChain 24(data) 25 277 79 26 285: 14(int) CompositeExtract 283 0 Store 284 285 286: 91(ptr) AccessChain 24(data) 25 277 79 59 287: 14(int) CompositeExtract 283 1 Store 286 287 288: 27(ptr) AccessChain 10(dti) 26 289: 6(int) Load 288 290: 27(ptr) AccessChain 10(dti) 26 291: 6(int) Load 290 292: 82(ptr) AccessChain 24(data) 25 291 79 293: 15(ivec4) Load 292 294: 113(ivec3) VectorShuffle 293 293 0 1 2 295: 113(ivec3) GroupNonUniformBroadcastFirst 36 294 296: 91(ptr) AccessChain 24(data) 25 289 79 26 297: 14(int) CompositeExtract 295 0 Store 296 297 298: 91(ptr) AccessChain 24(data) 25 289 79 59 299: 14(int) CompositeExtract 295 1 Store 298 299 300: 91(ptr) AccessChain 24(data) 25 289 79 74 301: 14(int) CompositeExtract 295 2 Store 300 301 302: 27(ptr) AccessChain 10(dti) 26 303: 6(int) Load 302 304: 27(ptr) AccessChain 10(dti) 26 305: 6(int) Load 304 306: 129(ptr) AccessChain 24(data) 25 305 126 307: 17(fvec4) Load 306 308: 17(fvec4) GroupNonUniformBroadcastFirst 36 307 309: 129(ptr) AccessChain 24(data) 25 303 126 Store 309 308 310: 27(ptr) AccessChain 10(dti) 26 311: 6(int) Load 310 312: 27(ptr) AccessChain 10(dti) 26 313: 6(int) Load 312 314: 138(ptr) AccessChain 24(data) 25 313 126 26 315: 16(float) Load 314 316: 16(float) GroupNonUniformBroadcastFirst 36 315 317: 138(ptr) AccessChain 24(data) 25 311 126 26 Store 317 316 318: 27(ptr) AccessChain 10(dti) 26 319: 6(int) Load 318 320: 27(ptr) AccessChain 10(dti) 26 321: 6(int) Load 320 322: 129(ptr) AccessChain 24(data) 25 321 126 323: 17(fvec4) Load 322 324: 147(fvec2) VectorShuffle 323 323 0 1 325: 147(fvec2) GroupNonUniformBroadcastFirst 36 324 326: 138(ptr) AccessChain 24(data) 25 319 126 26 327: 16(float) CompositeExtract 325 0 Store 326 327 328: 138(ptr) AccessChain 24(data) 25 319 126 59 329: 16(float) CompositeExtract 325 1 Store 328 329 330: 27(ptr) AccessChain 10(dti) 26 331: 6(int) Load 330 332: 27(ptr) AccessChain 10(dti) 26 333: 6(int) Load 332 334: 129(ptr) AccessChain 24(data) 25 333 126 335: 17(fvec4) Load 334 336: 160(fvec3) VectorShuffle 335 335 0 1 2 337: 160(fvec3) GroupNonUniformBroadcastFirst 36 336 338: 138(ptr) AccessChain 24(data) 25 331 126 26 339: 16(float) CompositeExtract 337 0 Store 338 339 340: 138(ptr) AccessChain 24(data) 25 331 126 59 341: 16(float) CompositeExtract 337 1 Store 340 341 342: 138(ptr) AccessChain 24(data) 25 331 126 74 343: 16(float) CompositeExtract 337 2 Store 342 343 344: 27(ptr) AccessChain 10(dti) 26 345: 6(int) Load 344 346: 27(ptr) AccessChain 10(dti) 26 347: 6(int) Load 346 348: 176(ptr) AccessChain 24(data) 25 347 173 349: 19(f64vec4) Load 348 350: 19(f64vec4) GroupNonUniformBroadcastFirst 36 349 351: 176(ptr) AccessChain 24(data) 25 345 173 Store 351 350 352: 27(ptr) AccessChain 10(dti) 26 353: 6(int) Load 352 354: 27(ptr) AccessChain 10(dti) 26 355: 6(int) Load 354 356: 185(ptr) AccessChain 24(data) 25 355 173 26 357:18(float64_t) Load 356 358:18(float64_t) GroupNonUniformBroadcastFirst 36 357 359: 185(ptr) AccessChain 24(data) 25 353 173 26 Store 359 358 360: 27(ptr) AccessChain 10(dti) 26 361: 6(int) Load 360 362: 27(ptr) AccessChain 10(dti) 26 363: 6(int) Load 362 364: 176(ptr) AccessChain 24(data) 25 363 173 365: 19(f64vec4) Load 364 366:194(f64vec2) VectorShuffle 365 365 0 1 367:194(f64vec2) GroupNonUniformBroadcastFirst 36 366 368: 185(ptr) AccessChain 24(data) 25 361 173 26 369:18(float64_t) CompositeExtract 367 0 Store 368 369 370: 185(ptr) AccessChain 24(data) 25 361 173 59 371:18(float64_t) CompositeExtract 367 1 Store 370 371 372: 27(ptr) AccessChain 10(dti) 26 373: 6(int) Load 372 374: 27(ptr) AccessChain 10(dti) 26 375: 6(int) Load 374 376: 176(ptr) AccessChain 24(data) 25 375 173 377: 19(f64vec4) Load 376 378:207(f64vec3) VectorShuffle 377 377 0 1 2 379:207(f64vec3) GroupNonUniformBroadcastFirst 36 378 380: 185(ptr) AccessChain 24(data) 25 373 173 26 381:18(float64_t) CompositeExtract 379 0 Store 380 381 382: 185(ptr) AccessChain 24(data) 25 373 173 59 383:18(float64_t) CompositeExtract 379 1 Store 382 383 384: 185(ptr) AccessChain 24(data) 25 373 173 74 385:18(float64_t) CompositeExtract 379 2 Store 384 385 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.waveprefix.comp.out000066400000000000000000006313071506534232700232700ustar00rootroot00000000000000hlsl.waveprefix.comp Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:13 Function Definition: @CSMain(vu3; ( temp void) 0:13 Function Parameters: 0:13 'dti' ( in 3-component vector of uint) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 subgroupInclusiveAdd ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:15 move second child to first child ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 subgroupInclusiveAdd ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:16 move second child to first child ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 subgroupInclusiveAdd ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 subgroupInclusiveAdd ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:19 move second child to first child ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupInclusiveAdd ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 subgroupInclusiveAdd ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupInclusiveAdd ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupInclusiveAdd ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupInclusiveAdd ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 subgroupInclusiveAdd ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 move second child to first child ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupInclusiveAdd ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupInclusiveAdd ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:29 move second child to first child ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 subgroupInclusiveAdd ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 move second child to first child ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 subgroupInclusiveAdd ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupInclusiveAdd ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:32 move second child to first child ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupInclusiveAdd ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupInclusiveMul ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 subgroupInclusiveMul ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 subgroupInclusiveMul ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupInclusiveMul ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:39 move second child to first child ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupInclusiveMul ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupInclusiveMul ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:41 move second child to first child ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupInclusiveMul ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:42 move second child to first child ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupInclusiveMul ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupInclusiveMul ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupInclusiveMul ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupInclusiveMul ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupInclusiveMul ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:49 move second child to first child ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 subgroupInclusiveMul ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:50 move second child to first child ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupInclusiveMul ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:51 move second child to first child ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupInclusiveMul ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:52 move second child to first child ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupInclusiveMul ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:54 move second child to first child ( temp uint) 0:54 direct index ( temp uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 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) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const uint) 0:13 Function Definition: CSMain( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:13 Function Definition: @CSMain(vu3; ( temp void) 0:13 Function Parameters: 0:13 'dti' ( in 3-component vector of uint) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 subgroupInclusiveAdd ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:15 move second child to first child ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 subgroupInclusiveAdd ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:16 move second child to first child ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 subgroupInclusiveAdd ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 subgroupInclusiveAdd ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:19 move second child to first child ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupInclusiveAdd ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 subgroupInclusiveAdd ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupInclusiveAdd ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupInclusiveAdd ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupInclusiveAdd ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 subgroupInclusiveAdd ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 move second child to first child ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupInclusiveAdd ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupInclusiveAdd ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:29 move second child to first child ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 subgroupInclusiveAdd ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 move second child to first child ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 subgroupInclusiveAdd ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupInclusiveAdd ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:32 move second child to first child ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupInclusiveAdd ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupInclusiveMul ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 subgroupInclusiveMul ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 subgroupInclusiveMul ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupInclusiveMul ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:39 move second child to first child ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupInclusiveMul ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupInclusiveMul ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:41 move second child to first child ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupInclusiveMul ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:42 move second child to first child ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupInclusiveMul ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupInclusiveMul ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupInclusiveMul ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupInclusiveMul ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupInclusiveMul ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:49 move second child to first child ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 subgroupInclusiveMul ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:50 move second child to first child ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupInclusiveMul ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:51 move second child to first child ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupInclusiveMul ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:52 move second child to first child ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupInclusiveMul ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:54 move second child to first child ( temp uint) 0:54 direct index ( temp uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 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) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const uint) 0:13 Function Definition: CSMain( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 403 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformArithmetic Capability GroupNonUniformBallot 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "CSMain" 398 ExecutionMode 4 LocalSize 32 16 1 Source HLSL 500 Name 4 "CSMain" Name 11 "@CSMain(vu3;" Name 10 "dti" Name 20 "Types" MemberName 20(Types) 0 "u" MemberName 20(Types) 1 "i" MemberName 20(Types) 2 "f" MemberName 20(Types) 3 "d" Name 22 "data" MemberName 22(data) 0 "@data" Name 24 "data" Name 396 "dti" Name 398 "dti" Name 400 "param" MemberDecorate 20(Types) 0 Offset 0 MemberDecorate 20(Types) 1 Offset 16 MemberDecorate 20(Types) 2 Offset 32 MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 Decorate 22(data) Block MemberDecorate 22(data) 0 Offset 0 Decorate 24(data) Binding 0 Decorate 24(data) DescriptorSet 0 Decorate 398(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeVector 6(int) 4 14: TypeInt 32 1 15: TypeVector 14(int) 4 16: TypeFloat 32 17: TypeVector 16(float) 4 18: TypeFloat 64 19: TypeVector 18(float64_t) 4 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4) 21: TypeRuntimeArray 20(Types) 22(data): TypeStruct 21 23: TypePointer StorageBuffer 22(data) 24(data): 23(ptr) Variable StorageBuffer 25: 14(int) Constant 0 26: 6(int) Constant 0 27: TypePointer Function 6(int) 32: TypePointer StorageBuffer 13(ivec4) 35: 6(int) Constant 3 42: TypePointer StorageBuffer 6(int) 51: TypeVector 6(int) 2 58: 6(int) Constant 1 73: 6(int) Constant 2 78: 14(int) Constant 1 81: TypePointer StorageBuffer 15(ivec4) 90: TypePointer StorageBuffer 14(int) 99: TypeVector 14(int) 2 112: TypeVector 14(int) 3 125: 14(int) Constant 2 128: TypePointer StorageBuffer 17(fvec4) 137: TypePointer StorageBuffer 16(float) 146: TypeVector 16(float) 2 159: TypeVector 16(float) 3 172: 14(int) Constant 3 175: TypePointer StorageBuffer 19(f64vec4) 184: TypePointer StorageBuffer 18(float64_t) 193: TypeVector 18(float64_t) 2 206: TypeVector 18(float64_t) 3 391: TypeBool 397: TypePointer Input 7(ivec3) 398(dti): 397(ptr) Variable Input 4(CSMain): 2 Function None 3 5: Label 396(dti): 8(ptr) Variable Function 400(param): 8(ptr) Variable Function 399: 7(ivec3) Load 398(dti) Store 396(dti) 399 401: 7(ivec3) Load 396(dti) Store 400(param) 401 402: 2 FunctionCall 11(@CSMain(vu3;) 400(param) Return FunctionEnd 11(@CSMain(vu3;): 2 Function None 9 10(dti): 8(ptr) FunctionParameter 12: Label 28: 27(ptr) AccessChain 10(dti) 26 29: 6(int) Load 28 30: 27(ptr) AccessChain 10(dti) 26 31: 6(int) Load 30 33: 32(ptr) AccessChain 24(data) 25 31 25 34: 13(ivec4) Load 33 36: 13(ivec4) GroupNonUniformIAdd 35 InclusiveScan 34 37: 32(ptr) AccessChain 24(data) 25 29 25 Store 37 36 38: 27(ptr) AccessChain 10(dti) 26 39: 6(int) Load 38 40: 27(ptr) AccessChain 10(dti) 26 41: 6(int) Load 40 43: 42(ptr) AccessChain 24(data) 25 41 25 26 44: 6(int) Load 43 45: 6(int) GroupNonUniformIAdd 35 InclusiveScan 44 46: 42(ptr) AccessChain 24(data) 25 39 25 26 Store 46 45 47: 27(ptr) AccessChain 10(dti) 26 48: 6(int) Load 47 49: 27(ptr) AccessChain 10(dti) 26 50: 6(int) Load 49 52: 32(ptr) AccessChain 24(data) 25 50 25 53: 13(ivec4) Load 52 54: 51(ivec2) VectorShuffle 53 53 0 1 55: 51(ivec2) GroupNonUniformIAdd 35 InclusiveScan 54 56: 42(ptr) AccessChain 24(data) 25 48 25 26 57: 6(int) CompositeExtract 55 0 Store 56 57 59: 42(ptr) AccessChain 24(data) 25 48 25 58 60: 6(int) CompositeExtract 55 1 Store 59 60 61: 27(ptr) AccessChain 10(dti) 26 62: 6(int) Load 61 63: 27(ptr) AccessChain 10(dti) 26 64: 6(int) Load 63 65: 32(ptr) AccessChain 24(data) 25 64 25 66: 13(ivec4) Load 65 67: 7(ivec3) VectorShuffle 66 66 0 1 2 68: 7(ivec3) GroupNonUniformIAdd 35 InclusiveScan 67 69: 42(ptr) AccessChain 24(data) 25 62 25 26 70: 6(int) CompositeExtract 68 0 Store 69 70 71: 42(ptr) AccessChain 24(data) 25 62 25 58 72: 6(int) CompositeExtract 68 1 Store 71 72 74: 42(ptr) AccessChain 24(data) 25 62 25 73 75: 6(int) CompositeExtract 68 2 Store 74 75 76: 27(ptr) AccessChain 10(dti) 26 77: 6(int) Load 76 79: 27(ptr) AccessChain 10(dti) 26 80: 6(int) Load 79 82: 81(ptr) AccessChain 24(data) 25 80 78 83: 15(ivec4) Load 82 84: 15(ivec4) GroupNonUniformIAdd 35 InclusiveScan 83 85: 81(ptr) AccessChain 24(data) 25 77 78 Store 85 84 86: 27(ptr) AccessChain 10(dti) 26 87: 6(int) Load 86 88: 27(ptr) AccessChain 10(dti) 26 89: 6(int) Load 88 91: 90(ptr) AccessChain 24(data) 25 89 78 26 92: 14(int) Load 91 93: 14(int) GroupNonUniformIAdd 35 InclusiveScan 92 94: 90(ptr) AccessChain 24(data) 25 87 78 26 Store 94 93 95: 27(ptr) AccessChain 10(dti) 26 96: 6(int) Load 95 97: 27(ptr) AccessChain 10(dti) 26 98: 6(int) Load 97 100: 81(ptr) AccessChain 24(data) 25 98 78 101: 15(ivec4) Load 100 102: 99(ivec2) VectorShuffle 101 101 0 1 103: 99(ivec2) GroupNonUniformIAdd 35 InclusiveScan 102 104: 90(ptr) AccessChain 24(data) 25 96 78 26 105: 14(int) CompositeExtract 103 0 Store 104 105 106: 90(ptr) AccessChain 24(data) 25 96 78 58 107: 14(int) CompositeExtract 103 1 Store 106 107 108: 27(ptr) AccessChain 10(dti) 26 109: 6(int) Load 108 110: 27(ptr) AccessChain 10(dti) 26 111: 6(int) Load 110 113: 81(ptr) AccessChain 24(data) 25 111 78 114: 15(ivec4) Load 113 115: 112(ivec3) VectorShuffle 114 114 0 1 2 116: 112(ivec3) GroupNonUniformIAdd 35 InclusiveScan 115 117: 90(ptr) AccessChain 24(data) 25 109 78 26 118: 14(int) CompositeExtract 116 0 Store 117 118 119: 90(ptr) AccessChain 24(data) 25 109 78 58 120: 14(int) CompositeExtract 116 1 Store 119 120 121: 90(ptr) AccessChain 24(data) 25 109 78 73 122: 14(int) CompositeExtract 116 2 Store 121 122 123: 27(ptr) AccessChain 10(dti) 26 124: 6(int) Load 123 126: 27(ptr) AccessChain 10(dti) 26 127: 6(int) Load 126 129: 128(ptr) AccessChain 24(data) 25 127 125 130: 17(fvec4) Load 129 131: 17(fvec4) GroupNonUniformFAdd 35 InclusiveScan 130 132: 128(ptr) AccessChain 24(data) 25 124 125 Store 132 131 133: 27(ptr) AccessChain 10(dti) 26 134: 6(int) Load 133 135: 27(ptr) AccessChain 10(dti) 26 136: 6(int) Load 135 138: 137(ptr) AccessChain 24(data) 25 136 125 26 139: 16(float) Load 138 140: 16(float) GroupNonUniformFAdd 35 InclusiveScan 139 141: 137(ptr) AccessChain 24(data) 25 134 125 26 Store 141 140 142: 27(ptr) AccessChain 10(dti) 26 143: 6(int) Load 142 144: 27(ptr) AccessChain 10(dti) 26 145: 6(int) Load 144 147: 128(ptr) AccessChain 24(data) 25 145 125 148: 17(fvec4) Load 147 149: 146(fvec2) VectorShuffle 148 148 0 1 150: 146(fvec2) GroupNonUniformFAdd 35 InclusiveScan 149 151: 137(ptr) AccessChain 24(data) 25 143 125 26 152: 16(float) CompositeExtract 150 0 Store 151 152 153: 137(ptr) AccessChain 24(data) 25 143 125 58 154: 16(float) CompositeExtract 150 1 Store 153 154 155: 27(ptr) AccessChain 10(dti) 26 156: 6(int) Load 155 157: 27(ptr) AccessChain 10(dti) 26 158: 6(int) Load 157 160: 128(ptr) AccessChain 24(data) 25 158 125 161: 17(fvec4) Load 160 162: 159(fvec3) VectorShuffle 161 161 0 1 2 163: 159(fvec3) GroupNonUniformFAdd 35 InclusiveScan 162 164: 137(ptr) AccessChain 24(data) 25 156 125 26 165: 16(float) CompositeExtract 163 0 Store 164 165 166: 137(ptr) AccessChain 24(data) 25 156 125 58 167: 16(float) CompositeExtract 163 1 Store 166 167 168: 137(ptr) AccessChain 24(data) 25 156 125 73 169: 16(float) CompositeExtract 163 2 Store 168 169 170: 27(ptr) AccessChain 10(dti) 26 171: 6(int) Load 170 173: 27(ptr) AccessChain 10(dti) 26 174: 6(int) Load 173 176: 175(ptr) AccessChain 24(data) 25 174 172 177: 19(f64vec4) Load 176 178: 19(f64vec4) GroupNonUniformFAdd 35 InclusiveScan 177 179: 175(ptr) AccessChain 24(data) 25 171 172 Store 179 178 180: 27(ptr) AccessChain 10(dti) 26 181: 6(int) Load 180 182: 27(ptr) AccessChain 10(dti) 26 183: 6(int) Load 182 185: 184(ptr) AccessChain 24(data) 25 183 172 26 186:18(float64_t) Load 185 187:18(float64_t) GroupNonUniformFAdd 35 InclusiveScan 186 188: 184(ptr) AccessChain 24(data) 25 181 172 26 Store 188 187 189: 27(ptr) AccessChain 10(dti) 26 190: 6(int) Load 189 191: 27(ptr) AccessChain 10(dti) 26 192: 6(int) Load 191 194: 175(ptr) AccessChain 24(data) 25 192 172 195: 19(f64vec4) Load 194 196:193(f64vec2) VectorShuffle 195 195 0 1 197:193(f64vec2) GroupNonUniformFAdd 35 InclusiveScan 196 198: 184(ptr) AccessChain 24(data) 25 190 172 26 199:18(float64_t) CompositeExtract 197 0 Store 198 199 200: 184(ptr) AccessChain 24(data) 25 190 172 58 201:18(float64_t) CompositeExtract 197 1 Store 200 201 202: 27(ptr) AccessChain 10(dti) 26 203: 6(int) Load 202 204: 27(ptr) AccessChain 10(dti) 26 205: 6(int) Load 204 207: 175(ptr) AccessChain 24(data) 25 205 172 208: 19(f64vec4) Load 207 209:206(f64vec3) VectorShuffle 208 208 0 1 2 210:206(f64vec3) GroupNonUniformFAdd 35 InclusiveScan 209 211: 184(ptr) AccessChain 24(data) 25 203 172 26 212:18(float64_t) CompositeExtract 210 0 Store 211 212 213: 184(ptr) AccessChain 24(data) 25 203 172 58 214:18(float64_t) CompositeExtract 210 1 Store 213 214 215: 184(ptr) AccessChain 24(data) 25 203 172 73 216:18(float64_t) CompositeExtract 210 2 Store 215 216 217: 27(ptr) AccessChain 10(dti) 26 218: 6(int) Load 217 219: 27(ptr) AccessChain 10(dti) 26 220: 6(int) Load 219 221: 32(ptr) AccessChain 24(data) 25 220 25 222: 13(ivec4) Load 221 223: 13(ivec4) GroupNonUniformIMul 35 InclusiveScan 222 224: 32(ptr) AccessChain 24(data) 25 218 25 Store 224 223 225: 27(ptr) AccessChain 10(dti) 26 226: 6(int) Load 225 227: 27(ptr) AccessChain 10(dti) 26 228: 6(int) Load 227 229: 42(ptr) AccessChain 24(data) 25 228 25 26 230: 6(int) Load 229 231: 6(int) GroupNonUniformIMul 35 InclusiveScan 230 232: 42(ptr) AccessChain 24(data) 25 226 25 26 Store 232 231 233: 27(ptr) AccessChain 10(dti) 26 234: 6(int) Load 233 235: 27(ptr) AccessChain 10(dti) 26 236: 6(int) Load 235 237: 32(ptr) AccessChain 24(data) 25 236 25 238: 13(ivec4) Load 237 239: 51(ivec2) VectorShuffle 238 238 0 1 240: 51(ivec2) GroupNonUniformIMul 35 InclusiveScan 239 241: 42(ptr) AccessChain 24(data) 25 234 25 26 242: 6(int) CompositeExtract 240 0 Store 241 242 243: 42(ptr) AccessChain 24(data) 25 234 25 58 244: 6(int) CompositeExtract 240 1 Store 243 244 245: 27(ptr) AccessChain 10(dti) 26 246: 6(int) Load 245 247: 27(ptr) AccessChain 10(dti) 26 248: 6(int) Load 247 249: 32(ptr) AccessChain 24(data) 25 248 25 250: 13(ivec4) Load 249 251: 7(ivec3) VectorShuffle 250 250 0 1 2 252: 7(ivec3) GroupNonUniformIMul 35 InclusiveScan 251 253: 42(ptr) AccessChain 24(data) 25 246 25 26 254: 6(int) CompositeExtract 252 0 Store 253 254 255: 42(ptr) AccessChain 24(data) 25 246 25 58 256: 6(int) CompositeExtract 252 1 Store 255 256 257: 42(ptr) AccessChain 24(data) 25 246 25 73 258: 6(int) CompositeExtract 252 2 Store 257 258 259: 27(ptr) AccessChain 10(dti) 26 260: 6(int) Load 259 261: 27(ptr) AccessChain 10(dti) 26 262: 6(int) Load 261 263: 81(ptr) AccessChain 24(data) 25 262 78 264: 15(ivec4) Load 263 265: 15(ivec4) GroupNonUniformIMul 35 InclusiveScan 264 266: 81(ptr) AccessChain 24(data) 25 260 78 Store 266 265 267: 27(ptr) AccessChain 10(dti) 26 268: 6(int) Load 267 269: 27(ptr) AccessChain 10(dti) 26 270: 6(int) Load 269 271: 90(ptr) AccessChain 24(data) 25 270 78 26 272: 14(int) Load 271 273: 14(int) GroupNonUniformIMul 35 InclusiveScan 272 274: 90(ptr) AccessChain 24(data) 25 268 78 26 Store 274 273 275: 27(ptr) AccessChain 10(dti) 26 276: 6(int) Load 275 277: 27(ptr) AccessChain 10(dti) 26 278: 6(int) Load 277 279: 81(ptr) AccessChain 24(data) 25 278 78 280: 15(ivec4) Load 279 281: 99(ivec2) VectorShuffle 280 280 0 1 282: 99(ivec2) GroupNonUniformIMul 35 InclusiveScan 281 283: 90(ptr) AccessChain 24(data) 25 276 78 26 284: 14(int) CompositeExtract 282 0 Store 283 284 285: 90(ptr) AccessChain 24(data) 25 276 78 58 286: 14(int) CompositeExtract 282 1 Store 285 286 287: 27(ptr) AccessChain 10(dti) 26 288: 6(int) Load 287 289: 27(ptr) AccessChain 10(dti) 26 290: 6(int) Load 289 291: 81(ptr) AccessChain 24(data) 25 290 78 292: 15(ivec4) Load 291 293: 112(ivec3) VectorShuffle 292 292 0 1 2 294: 112(ivec3) GroupNonUniformIMul 35 InclusiveScan 293 295: 90(ptr) AccessChain 24(data) 25 288 78 26 296: 14(int) CompositeExtract 294 0 Store 295 296 297: 90(ptr) AccessChain 24(data) 25 288 78 58 298: 14(int) CompositeExtract 294 1 Store 297 298 299: 90(ptr) AccessChain 24(data) 25 288 78 73 300: 14(int) CompositeExtract 294 2 Store 299 300 301: 27(ptr) AccessChain 10(dti) 26 302: 6(int) Load 301 303: 27(ptr) AccessChain 10(dti) 26 304: 6(int) Load 303 305: 128(ptr) AccessChain 24(data) 25 304 125 306: 17(fvec4) Load 305 307: 17(fvec4) GroupNonUniformFMul 35 InclusiveScan 306 308: 128(ptr) AccessChain 24(data) 25 302 125 Store 308 307 309: 27(ptr) AccessChain 10(dti) 26 310: 6(int) Load 309 311: 27(ptr) AccessChain 10(dti) 26 312: 6(int) Load 311 313: 137(ptr) AccessChain 24(data) 25 312 125 26 314: 16(float) Load 313 315: 16(float) GroupNonUniformFMul 35 InclusiveScan 314 316: 137(ptr) AccessChain 24(data) 25 310 125 26 Store 316 315 317: 27(ptr) AccessChain 10(dti) 26 318: 6(int) Load 317 319: 27(ptr) AccessChain 10(dti) 26 320: 6(int) Load 319 321: 128(ptr) AccessChain 24(data) 25 320 125 322: 17(fvec4) Load 321 323: 146(fvec2) VectorShuffle 322 322 0 1 324: 146(fvec2) GroupNonUniformFMul 35 InclusiveScan 323 325: 137(ptr) AccessChain 24(data) 25 318 125 26 326: 16(float) CompositeExtract 324 0 Store 325 326 327: 137(ptr) AccessChain 24(data) 25 318 125 58 328: 16(float) CompositeExtract 324 1 Store 327 328 329: 27(ptr) AccessChain 10(dti) 26 330: 6(int) Load 329 331: 27(ptr) AccessChain 10(dti) 26 332: 6(int) Load 331 333: 128(ptr) AccessChain 24(data) 25 332 125 334: 17(fvec4) Load 333 335: 159(fvec3) VectorShuffle 334 334 0 1 2 336: 159(fvec3) GroupNonUniformFMul 35 InclusiveScan 335 337: 137(ptr) AccessChain 24(data) 25 330 125 26 338: 16(float) CompositeExtract 336 0 Store 337 338 339: 137(ptr) AccessChain 24(data) 25 330 125 58 340: 16(float) CompositeExtract 336 1 Store 339 340 341: 137(ptr) AccessChain 24(data) 25 330 125 73 342: 16(float) CompositeExtract 336 2 Store 341 342 343: 27(ptr) AccessChain 10(dti) 26 344: 6(int) Load 343 345: 27(ptr) AccessChain 10(dti) 26 346: 6(int) Load 345 347: 175(ptr) AccessChain 24(data) 25 346 172 348: 19(f64vec4) Load 347 349: 19(f64vec4) GroupNonUniformFMul 35 InclusiveScan 348 350: 175(ptr) AccessChain 24(data) 25 344 172 Store 350 349 351: 27(ptr) AccessChain 10(dti) 26 352: 6(int) Load 351 353: 27(ptr) AccessChain 10(dti) 26 354: 6(int) Load 353 355: 184(ptr) AccessChain 24(data) 25 354 172 26 356:18(float64_t) Load 355 357:18(float64_t) GroupNonUniformFMul 35 InclusiveScan 356 358: 184(ptr) AccessChain 24(data) 25 352 172 26 Store 358 357 359: 27(ptr) AccessChain 10(dti) 26 360: 6(int) Load 359 361: 27(ptr) AccessChain 10(dti) 26 362: 6(int) Load 361 363: 175(ptr) AccessChain 24(data) 25 362 172 364: 19(f64vec4) Load 363 365:193(f64vec2) VectorShuffle 364 364 0 1 366:193(f64vec2) GroupNonUniformFMul 35 InclusiveScan 365 367: 184(ptr) AccessChain 24(data) 25 360 172 26 368:18(float64_t) CompositeExtract 366 0 Store 367 368 369: 184(ptr) AccessChain 24(data) 25 360 172 58 370:18(float64_t) CompositeExtract 366 1 Store 369 370 371: 27(ptr) AccessChain 10(dti) 26 372: 6(int) Load 371 373: 27(ptr) AccessChain 10(dti) 26 374: 6(int) Load 373 375: 175(ptr) AccessChain 24(data) 25 374 172 376: 19(f64vec4) Load 375 377:206(f64vec3) VectorShuffle 376 376 0 1 2 378:206(f64vec3) GroupNonUniformFMul 35 InclusiveScan 377 379: 184(ptr) AccessChain 24(data) 25 372 172 26 380:18(float64_t) CompositeExtract 378 0 Store 379 380 381: 184(ptr) AccessChain 24(data) 25 372 172 58 382:18(float64_t) CompositeExtract 378 1 Store 381 382 383: 184(ptr) AccessChain 24(data) 25 372 172 73 384:18(float64_t) CompositeExtract 378 2 Store 383 384 385: 27(ptr) AccessChain 10(dti) 26 386: 6(int) Load 385 387: 27(ptr) AccessChain 10(dti) 26 388: 6(int) Load 387 389: 42(ptr) AccessChain 24(data) 25 388 25 26 390: 6(int) Load 389 392: 391(bool) IEqual 390 26 393: 13(ivec4) GroupNonUniformBallot 35 392 394: 6(int) GroupNonUniformBallotBitCount 35 ExclusiveScan 393 395: 42(ptr) AccessChain 24(data) 25 386 25 26 Store 395 394 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.wavequad.comp.out000066400000000000000000025373641506534232700227370ustar00rootroot00000000000000hlsl.wavequad.comp Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:13 Function Definition: @CSMain(vu3; ( temp void) 0:13 Function Parameters: 0:13 'dti' ( in 3-component vector of uint) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 subgroupQuadBroadcast ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const uint) 0:15 move second child to first child ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 subgroupQuadBroadcast ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const uint) 0:16 move second child to first child ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 subgroupQuadBroadcast ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (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 0 (const uint) 0:17 move second child to first child ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 subgroupQuadBroadcast ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 0 (const uint) 0:19 move second child to first child ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupQuadBroadcast ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const uint) 0:20 move second child to first child ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 subgroupQuadBroadcast ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const uint) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupQuadBroadcast ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const uint) 0:22 move second child to first child ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupQuadBroadcast ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 0 (const uint) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupQuadBroadcast ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 0 (const uint) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 subgroupQuadBroadcast ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const uint) 0:26 move second child to first child ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupQuadBroadcast ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const uint) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupQuadBroadcast ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 0 (const uint) 0:29 move second child to first child ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 subgroupQuadBroadcast ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 Constant: 0:29 0 (const uint) 0:30 move second child to first child ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 subgroupQuadBroadcast ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 0 (const uint) 0:31 move second child to first child ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupQuadBroadcast ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const uint) 0:32 move second child to first child ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupQuadBroadcast ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 0 (const uint) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupQuadBroadcast ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const uint) 0:35 move second child to first child ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 subgroupQuadBroadcast ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 subgroupQuadBroadcast ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const uint) 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupQuadBroadcast ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 Constant: 0:37 1 (const uint) 0:39 move second child to first child ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupQuadBroadcast ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const uint) 0:40 move second child to first child ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupQuadBroadcast ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const uint) 0:41 move second child to first child ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupQuadBroadcast ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const uint) 0:42 move second child to first child ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupQuadBroadcast ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 Constant: 0:42 1 (const uint) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupQuadBroadcast ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupQuadBroadcast ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupQuadBroadcast ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupQuadBroadcast ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 1 (const uint) 0:49 move second child to first child ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 subgroupQuadBroadcast ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupQuadBroadcast ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupQuadBroadcast ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 1 (const uint) 0:52 move second child to first child ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupQuadBroadcast ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 Constant: 0:52 1 (const uint) 0:54 move second child to first child ( temp 4-component vector of uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupQuadBroadcast ( temp 4-component vector of uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 2 (const uint) 0:55 move second child to first child ( temp uint) 0:55 direct index ( temp uint) 0:55 u: direct index for structure ( temp 4-component vector of uint) 0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:55 Constant: 0:55 0 (const uint) 0:55 direct index ( temp uint) 0:55 'dti' ( in 3-component vector of uint) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 subgroupQuadBroadcast ( temp uint) 0:55 direct index ( temp uint) 0:55 u: direct index for structure ( temp 4-component vector of uint) 0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:55 Constant: 0:55 0 (const uint) 0:55 direct index ( temp uint) 0:55 'dti' ( in 3-component vector of uint) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 2 (const uint) 0:56 move second child to first child ( temp 2-component vector of uint) 0:56 vector swizzle ( temp 2-component vector of uint) 0:56 u: direct index for structure ( temp 4-component vector of uint) 0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:56 Constant: 0:56 0 (const uint) 0:56 direct index ( temp uint) 0:56 'dti' ( in 3-component vector of uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupQuadBroadcast ( temp 2-component vector of uint) 0:56 vector swizzle ( temp 2-component vector of uint) 0:56 u: direct index for structure ( temp 4-component vector of uint) 0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:56 Constant: 0:56 0 (const uint) 0:56 direct index ( temp uint) 0:56 'dti' ( in 3-component vector of uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const uint) 0:57 move second child to first child ( temp 3-component vector of uint) 0:57 vector swizzle ( temp 3-component vector of uint) 0:57 u: direct index for structure ( temp 4-component vector of uint) 0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:57 Constant: 0:57 0 (const uint) 0:57 direct index ( temp uint) 0:57 'dti' ( in 3-component vector of uint) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupQuadBroadcast ( temp 3-component vector of uint) 0:57 vector swizzle ( temp 3-component vector of uint) 0:57 u: direct index for structure ( temp 4-component vector of uint) 0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:57 Constant: 0:57 0 (const uint) 0:57 direct index ( temp uint) 0:57 'dti' ( in 3-component vector of uint) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 Constant: 0:57 2 (const uint) 0:59 move second child to first child ( temp 4-component vector of int) 0:59 i: direct index for structure ( temp 4-component vector of int) 0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:59 Constant: 0:59 0 (const uint) 0:59 direct index ( temp uint) 0:59 'dti' ( in 3-component vector of uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupQuadBroadcast ( temp 4-component vector of int) 0:59 i: direct index for structure ( temp 4-component vector of int) 0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:59 Constant: 0:59 0 (const uint) 0:59 direct index ( temp uint) 0:59 'dti' ( in 3-component vector of uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 2 (const uint) 0:60 move second child to first child ( temp int) 0:60 direct index ( temp int) 0:60 i: direct index for structure ( temp 4-component vector of int) 0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:60 Constant: 0:60 0 (const uint) 0:60 direct index ( temp uint) 0:60 'dti' ( in 3-component vector of uint) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 subgroupQuadBroadcast ( temp int) 0:60 direct index ( temp int) 0:60 i: direct index for structure ( temp 4-component vector of int) 0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:60 Constant: 0:60 0 (const uint) 0:60 direct index ( temp uint) 0:60 'dti' ( in 3-component vector of uint) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 2 (const uint) 0:61 move second child to first child ( temp 2-component vector of int) 0:61 vector swizzle ( temp 2-component vector of int) 0:61 i: direct index for structure ( temp 4-component vector of int) 0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:61 Constant: 0:61 0 (const uint) 0:61 direct index ( temp uint) 0:61 'dti' ( in 3-component vector of uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 subgroupQuadBroadcast ( temp 2-component vector of int) 0:61 vector swizzle ( temp 2-component vector of int) 0:61 i: direct index for structure ( temp 4-component vector of int) 0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:61 Constant: 0:61 0 (const uint) 0:61 direct index ( temp uint) 0:61 'dti' ( in 3-component vector of uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const uint) 0:62 move second child to first child ( temp 3-component vector of int) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 i: direct index for structure ( temp 4-component vector of int) 0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:62 Constant: 0:62 0 (const uint) 0:62 direct index ( temp uint) 0:62 'dti' ( in 3-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupQuadBroadcast ( temp 3-component vector of int) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 i: direct index for structure ( temp 4-component vector of int) 0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:62 Constant: 0:62 0 (const uint) 0:62 direct index ( temp uint) 0:62 'dti' ( in 3-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 2 (const uint) 0:64 move second child to first child ( temp 4-component vector of float) 0:64 f: direct index for structure ( temp 4-component vector of float) 0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:64 Constant: 0:64 0 (const uint) 0:64 direct index ( temp uint) 0:64 'dti' ( in 3-component vector of uint) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 subgroupQuadBroadcast ( temp 4-component vector of float) 0:64 f: direct index for structure ( temp 4-component vector of float) 0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:64 Constant: 0:64 0 (const uint) 0:64 direct index ( temp uint) 0:64 'dti' ( in 3-component vector of uint) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 Constant: 0:64 2 (const uint) 0:65 move second child to first child ( temp float) 0:65 direct index ( temp float) 0:65 f: direct index for structure ( temp 4-component vector of float) 0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:65 Constant: 0:65 0 (const uint) 0:65 direct index ( temp uint) 0:65 'dti' ( in 3-component vector of uint) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 subgroupQuadBroadcast ( temp float) 0:65 direct index ( temp float) 0:65 f: direct index for structure ( temp 4-component vector of float) 0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:65 Constant: 0:65 0 (const uint) 0:65 direct index ( temp uint) 0:65 'dti' ( in 3-component vector of uint) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const uint) 0:66 move second child to first child ( temp 2-component vector of float) 0:66 vector swizzle ( temp 2-component vector of float) 0:66 f: direct index for structure ( temp 4-component vector of float) 0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:66 Constant: 0:66 0 (const uint) 0:66 direct index ( temp uint) 0:66 'dti' ( in 3-component vector of uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupQuadBroadcast ( temp 2-component vector of float) 0:66 vector swizzle ( temp 2-component vector of float) 0:66 f: direct index for structure ( temp 4-component vector of float) 0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:66 Constant: 0:66 0 (const uint) 0:66 direct index ( temp uint) 0:66 'dti' ( in 3-component vector of uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const uint) 0:67 move second child to first child ( temp 3-component vector of float) 0:67 vector swizzle ( temp 3-component vector of float) 0:67 f: direct index for structure ( temp 4-component vector of float) 0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:67 Constant: 0:67 0 (const uint) 0:67 direct index ( temp uint) 0:67 'dti' ( in 3-component vector of uint) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 subgroupQuadBroadcast ( temp 3-component vector of float) 0:67 vector swizzle ( temp 3-component vector of float) 0:67 f: direct index for structure ( temp 4-component vector of float) 0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:67 Constant: 0:67 0 (const uint) 0:67 direct index ( temp uint) 0:67 'dti' ( in 3-component vector of uint) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Constant: 0:67 2 (const uint) 0:69 move second child to first child ( temp 4-component vector of double) 0:69 d: direct index for structure ( temp 4-component vector of double) 0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:69 Constant: 0:69 0 (const uint) 0:69 direct index ( temp uint) 0:69 'dti' ( in 3-component vector of uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 3 (const int) 0:69 subgroupQuadBroadcast ( temp 4-component vector of double) 0:69 d: direct index for structure ( temp 4-component vector of double) 0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:69 Constant: 0:69 0 (const uint) 0:69 direct index ( temp uint) 0:69 'dti' ( in 3-component vector of uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 3 (const int) 0:69 Constant: 0:69 2 (const uint) 0:70 move second child to first child ( temp double) 0:70 direct index ( temp double) 0:70 d: direct index for structure ( temp 4-component vector of double) 0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:70 Constant: 0:70 0 (const uint) 0:70 direct index ( temp uint) 0:70 'dti' ( in 3-component vector of uint) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 3 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 subgroupQuadBroadcast ( temp double) 0:70 direct index ( temp double) 0:70 d: direct index for structure ( temp 4-component vector of double) 0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:70 Constant: 0:70 0 (const uint) 0:70 direct index ( temp uint) 0:70 'dti' ( in 3-component vector of uint) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 3 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 2 (const uint) 0:71 move second child to first child ( temp 2-component vector of double) 0:71 vector swizzle ( temp 2-component vector of double) 0:71 d: direct index for structure ( temp 4-component vector of double) 0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:71 Constant: 0:71 0 (const uint) 0:71 direct index ( temp uint) 0:71 'dti' ( in 3-component vector of uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 3 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupQuadBroadcast ( temp 2-component vector of double) 0:71 vector swizzle ( temp 2-component vector of double) 0:71 d: direct index for structure ( temp 4-component vector of double) 0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:71 Constant: 0:71 0 (const uint) 0:71 direct index ( temp uint) 0:71 'dti' ( in 3-component vector of uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 3 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const uint) 0:72 move second child to first child ( temp 3-component vector of double) 0:72 vector swizzle ( temp 3-component vector of double) 0:72 d: direct index for structure ( temp 4-component vector of double) 0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:72 Constant: 0:72 0 (const uint) 0:72 direct index ( temp uint) 0:72 'dti' ( in 3-component vector of uint) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 3 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupQuadBroadcast ( temp 3-component vector of double) 0:72 vector swizzle ( temp 3-component vector of double) 0:72 d: direct index for structure ( temp 4-component vector of double) 0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:72 Constant: 0:72 0 (const uint) 0:72 direct index ( temp uint) 0:72 'dti' ( in 3-component vector of uint) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 3 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 2 (const uint) 0:74 move second child to first child ( temp 4-component vector of uint) 0:74 u: direct index for structure ( temp 4-component vector of uint) 0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp uint) 0:74 'dti' ( in 3-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupQuadBroadcast ( temp 4-component vector of uint) 0:74 u: direct index for structure ( temp 4-component vector of uint) 0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp uint) 0:74 'dti' ( in 3-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 3 (const uint) 0:75 move second child to first child ( temp uint) 0:75 direct index ( temp uint) 0:75 u: direct index for structure ( temp 4-component vector of uint) 0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:75 Constant: 0:75 0 (const uint) 0:75 direct index ( temp uint) 0:75 'dti' ( in 3-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 subgroupQuadBroadcast ( temp uint) 0:75 direct index ( temp uint) 0:75 u: direct index for structure ( temp 4-component vector of uint) 0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:75 Constant: 0:75 0 (const uint) 0:75 direct index ( temp uint) 0:75 'dti' ( in 3-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 3 (const uint) 0:76 move second child to first child ( temp 2-component vector of uint) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 u: direct index for structure ( temp 4-component vector of uint) 0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:76 Constant: 0:76 0 (const uint) 0:76 direct index ( temp uint) 0:76 'dti' ( in 3-component vector of uint) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 subgroupQuadBroadcast ( temp 2-component vector of uint) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 u: direct index for structure ( temp 4-component vector of uint) 0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:76 Constant: 0:76 0 (const uint) 0:76 direct index ( temp uint) 0:76 'dti' ( in 3-component vector of uint) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 3 (const uint) 0:77 move second child to first child ( temp 3-component vector of uint) 0:77 vector swizzle ( temp 3-component vector of uint) 0:77 u: direct index for structure ( temp 4-component vector of uint) 0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:77 Constant: 0:77 0 (const uint) 0:77 direct index ( temp uint) 0:77 'dti' ( in 3-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 subgroupQuadBroadcast ( temp 3-component vector of uint) 0:77 vector swizzle ( temp 3-component vector of uint) 0:77 u: direct index for structure ( temp 4-component vector of uint) 0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:77 Constant: 0:77 0 (const uint) 0:77 direct index ( temp uint) 0:77 'dti' ( in 3-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 Constant: 0:77 3 (const uint) 0:79 move second child to first child ( temp 4-component vector of int) 0:79 i: direct index for structure ( temp 4-component vector of int) 0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:79 Constant: 0:79 0 (const uint) 0:79 direct index ( temp uint) 0:79 'dti' ( in 3-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupQuadBroadcast ( temp 4-component vector of int) 0:79 i: direct index for structure ( temp 4-component vector of int) 0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:79 Constant: 0:79 0 (const uint) 0:79 direct index ( temp uint) 0:79 'dti' ( in 3-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 3 (const uint) 0:80 move second child to first child ( temp int) 0:80 direct index ( temp int) 0:80 i: direct index for structure ( temp 4-component vector of int) 0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:80 Constant: 0:80 0 (const uint) 0:80 direct index ( temp uint) 0:80 'dti' ( in 3-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 subgroupQuadBroadcast ( temp int) 0:80 direct index ( temp int) 0:80 i: direct index for structure ( temp 4-component vector of int) 0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:80 Constant: 0:80 0 (const uint) 0:80 direct index ( temp uint) 0:80 'dti' ( in 3-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 3 (const uint) 0:81 move second child to first child ( temp 2-component vector of int) 0:81 vector swizzle ( temp 2-component vector of int) 0:81 i: direct index for structure ( temp 4-component vector of int) 0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:81 Constant: 0:81 0 (const uint) 0:81 direct index ( temp uint) 0:81 'dti' ( in 3-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupQuadBroadcast ( temp 2-component vector of int) 0:81 vector swizzle ( temp 2-component vector of int) 0:81 i: direct index for structure ( temp 4-component vector of int) 0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:81 Constant: 0:81 0 (const uint) 0:81 direct index ( temp uint) 0:81 'dti' ( in 3-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 3 (const uint) 0:82 move second child to first child ( temp 3-component vector of int) 0:82 vector swizzle ( temp 3-component vector of int) 0:82 i: direct index for structure ( temp 4-component vector of int) 0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:82 Constant: 0:82 0 (const uint) 0:82 direct index ( temp uint) 0:82 'dti' ( in 3-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 subgroupQuadBroadcast ( temp 3-component vector of int) 0:82 vector swizzle ( temp 3-component vector of int) 0:82 i: direct index for structure ( temp 4-component vector of int) 0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:82 Constant: 0:82 0 (const uint) 0:82 direct index ( temp uint) 0:82 'dti' ( in 3-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 3 (const uint) 0:84 move second child to first child ( temp 4-component vector of float) 0:84 f: direct index for structure ( temp 4-component vector of float) 0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:84 Constant: 0:84 0 (const uint) 0:84 direct index ( temp uint) 0:84 'dti' ( in 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 subgroupQuadBroadcast ( temp 4-component vector of float) 0:84 f: direct index for structure ( temp 4-component vector of float) 0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:84 Constant: 0:84 0 (const uint) 0:84 direct index ( temp uint) 0:84 'dti' ( in 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Constant: 0:84 3 (const uint) 0:85 move second child to first child ( temp float) 0:85 direct index ( temp float) 0:85 f: direct index for structure ( temp 4-component vector of float) 0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:85 Constant: 0:85 0 (const uint) 0:85 direct index ( temp uint) 0:85 'dti' ( in 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 subgroupQuadBroadcast ( temp float) 0:85 direct index ( temp float) 0:85 f: direct index for structure ( temp 4-component vector of float) 0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:85 Constant: 0:85 0 (const uint) 0:85 direct index ( temp uint) 0:85 'dti' ( in 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 3 (const uint) 0:86 move second child to first child ( temp 2-component vector of float) 0:86 vector swizzle ( temp 2-component vector of float) 0:86 f: direct index for structure ( temp 4-component vector of float) 0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:86 Constant: 0:86 0 (const uint) 0:86 direct index ( temp uint) 0:86 'dti' ( in 3-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 subgroupQuadBroadcast ( temp 2-component vector of float) 0:86 vector swizzle ( temp 2-component vector of float) 0:86 f: direct index for structure ( temp 4-component vector of float) 0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:86 Constant: 0:86 0 (const uint) 0:86 direct index ( temp uint) 0:86 'dti' ( in 3-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 3 (const uint) 0:87 move second child to first child ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 f: direct index for structure ( temp 4-component vector of float) 0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:87 Constant: 0:87 0 (const uint) 0:87 direct index ( temp uint) 0:87 'dti' ( in 3-component vector of uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 subgroupQuadBroadcast ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 f: direct index for structure ( temp 4-component vector of float) 0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:87 Constant: 0:87 0 (const uint) 0:87 direct index ( temp uint) 0:87 'dti' ( in 3-component vector of uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Constant: 0:87 3 (const uint) 0:89 move second child to first child ( temp 4-component vector of double) 0:89 d: direct index for structure ( temp 4-component vector of double) 0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:89 Constant: 0:89 0 (const uint) 0:89 direct index ( temp uint) 0:89 'dti' ( in 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 3 (const int) 0:89 subgroupQuadBroadcast ( temp 4-component vector of double) 0:89 d: direct index for structure ( temp 4-component vector of double) 0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:89 Constant: 0:89 0 (const uint) 0:89 direct index ( temp uint) 0:89 'dti' ( in 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 3 (const int) 0:89 Constant: 0:89 3 (const uint) 0:90 move second child to first child ( temp double) 0:90 direct index ( temp double) 0:90 d: direct index for structure ( temp 4-component vector of double) 0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:90 Constant: 0:90 0 (const uint) 0:90 direct index ( temp uint) 0:90 'dti' ( in 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 subgroupQuadBroadcast ( temp double) 0:90 direct index ( temp double) 0:90 d: direct index for structure ( temp 4-component vector of double) 0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:90 Constant: 0:90 0 (const uint) 0:90 direct index ( temp uint) 0:90 'dti' ( in 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const uint) 0:91 move second child to first child ( temp 2-component vector of double) 0:91 vector swizzle ( temp 2-component vector of double) 0:91 d: direct index for structure ( temp 4-component vector of double) 0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:91 Constant: 0:91 0 (const uint) 0:91 direct index ( temp uint) 0:91 'dti' ( in 3-component vector of uint) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 3 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 subgroupQuadBroadcast ( temp 2-component vector of double) 0:91 vector swizzle ( temp 2-component vector of double) 0:91 d: direct index for structure ( temp 4-component vector of double) 0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:91 Constant: 0:91 0 (const uint) 0:91 direct index ( temp uint) 0:91 'dti' ( in 3-component vector of uint) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 3 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 3 (const uint) 0:92 move second child to first child ( temp 3-component vector of double) 0:92 vector swizzle ( temp 3-component vector of double) 0:92 d: direct index for structure ( temp 4-component vector of double) 0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:92 Constant: 0:92 0 (const uint) 0:92 direct index ( temp uint) 0:92 'dti' ( in 3-component vector of uint) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 3 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupQuadBroadcast ( temp 3-component vector of double) 0:92 vector swizzle ( temp 3-component vector of double) 0:92 d: direct index for structure ( temp 4-component vector of double) 0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:92 Constant: 0:92 0 (const uint) 0:92 direct index ( temp uint) 0:92 'dti' ( in 3-component vector of uint) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 3 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 3 (const uint) 0:94 move second child to first child ( temp 4-component vector of uint) 0:94 u: direct index for structure ( temp 4-component vector of uint) 0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:94 Constant: 0:94 0 (const uint) 0:94 direct index ( temp uint) 0:94 'dti' ( in 3-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupQuadSwapHorizontal ( temp 4-component vector of uint) 0:94 u: direct index for structure ( temp 4-component vector of uint) 0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:94 Constant: 0:94 0 (const uint) 0:94 direct index ( temp uint) 0:94 'dti' ( in 3-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:95 move second child to first child ( temp uint) 0:95 direct index ( temp uint) 0:95 u: direct index for structure ( temp 4-component vector of uint) 0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:95 Constant: 0:95 0 (const uint) 0:95 direct index ( temp uint) 0:95 'dti' ( in 3-component vector of uint) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 subgroupQuadSwapHorizontal ( temp uint) 0:95 direct index ( temp uint) 0:95 u: direct index for structure ( temp 4-component vector of uint) 0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:95 Constant: 0:95 0 (const uint) 0:95 direct index ( temp uint) 0:95 'dti' ( in 3-component vector of uint) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:96 move second child to first child ( temp 2-component vector of uint) 0:96 vector swizzle ( temp 2-component vector of uint) 0:96 u: direct index for structure ( temp 4-component vector of uint) 0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:96 Constant: 0:96 0 (const uint) 0:96 direct index ( temp uint) 0:96 'dti' ( in 3-component vector of uint) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupQuadSwapHorizontal ( temp 2-component vector of uint) 0:96 vector swizzle ( temp 2-component vector of uint) 0:96 u: direct index for structure ( temp 4-component vector of uint) 0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:96 Constant: 0:96 0 (const uint) 0:96 direct index ( temp uint) 0:96 'dti' ( in 3-component vector of uint) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:97 move second child to first child ( temp 3-component vector of uint) 0:97 vector swizzle ( temp 3-component vector of uint) 0:97 u: direct index for structure ( temp 4-component vector of uint) 0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:97 Constant: 0:97 0 (const uint) 0:97 direct index ( temp uint) 0:97 'dti' ( in 3-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 0 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 subgroupQuadSwapHorizontal ( temp 3-component vector of uint) 0:97 vector swizzle ( temp 3-component vector of uint) 0:97 u: direct index for structure ( temp 4-component vector of uint) 0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:97 Constant: 0:97 0 (const uint) 0:97 direct index ( temp uint) 0:97 'dti' ( in 3-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 0 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:99 move second child to first child ( temp 4-component vector of int) 0:99 i: direct index for structure ( temp 4-component vector of int) 0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:99 Constant: 0:99 0 (const uint) 0:99 direct index ( temp uint) 0:99 'dti' ( in 3-component vector of uint) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 subgroupQuadSwapHorizontal ( temp 4-component vector of int) 0:99 i: direct index for structure ( temp 4-component vector of int) 0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:99 Constant: 0:99 0 (const uint) 0:99 direct index ( temp uint) 0:99 'dti' ( in 3-component vector of uint) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:100 move second child to first child ( temp int) 0:100 direct index ( temp int) 0:100 i: direct index for structure ( temp 4-component vector of int) 0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:100 Constant: 0:100 0 (const uint) 0:100 direct index ( temp uint) 0:100 'dti' ( in 3-component vector of uint) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 subgroupQuadSwapHorizontal ( temp int) 0:100 direct index ( temp int) 0:100 i: direct index for structure ( temp 4-component vector of int) 0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:100 Constant: 0:100 0 (const uint) 0:100 direct index ( temp uint) 0:100 'dti' ( in 3-component vector of uint) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:101 move second child to first child ( temp 2-component vector of int) 0:101 vector swizzle ( temp 2-component vector of int) 0:101 i: direct index for structure ( temp 4-component vector of int) 0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:101 Constant: 0:101 0 (const uint) 0:101 direct index ( temp uint) 0:101 'dti' ( in 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 subgroupQuadSwapHorizontal ( temp 2-component vector of int) 0:101 vector swizzle ( temp 2-component vector of int) 0:101 i: direct index for structure ( temp 4-component vector of int) 0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:101 Constant: 0:101 0 (const uint) 0:101 direct index ( temp uint) 0:101 'dti' ( in 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 move second child to first child ( temp 3-component vector of int) 0:102 vector swizzle ( temp 3-component vector of int) 0:102 i: direct index for structure ( temp 4-component vector of int) 0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:102 Constant: 0:102 0 (const uint) 0:102 direct index ( temp uint) 0:102 'dti' ( in 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:102 subgroupQuadSwapHorizontal ( temp 3-component vector of int) 0:102 vector swizzle ( temp 3-component vector of int) 0:102 i: direct index for structure ( temp 4-component vector of int) 0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:102 Constant: 0:102 0 (const uint) 0:102 direct index ( temp uint) 0:102 'dti' ( in 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:104 move second child to first child ( temp 4-component vector of float) 0:104 f: direct index for structure ( temp 4-component vector of float) 0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:104 Constant: 0:104 0 (const uint) 0:104 direct index ( temp uint) 0:104 'dti' ( in 3-component vector of uint) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:104 subgroupQuadSwapHorizontal ( temp 4-component vector of float) 0:104 f: direct index for structure ( temp 4-component vector of float) 0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:104 Constant: 0:104 0 (const uint) 0:104 direct index ( temp uint) 0:104 'dti' ( in 3-component vector of uint) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:105 move second child to first child ( temp float) 0:105 direct index ( temp float) 0:105 f: direct index for structure ( temp 4-component vector of float) 0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:105 Constant: 0:105 0 (const uint) 0:105 direct index ( temp uint) 0:105 'dti' ( in 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 subgroupQuadSwapHorizontal ( temp float) 0:105 direct index ( temp float) 0:105 f: direct index for structure ( temp 4-component vector of float) 0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:105 Constant: 0:105 0 (const uint) 0:105 direct index ( temp uint) 0:105 'dti' ( in 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:106 move second child to first child ( temp 2-component vector of float) 0:106 vector swizzle ( temp 2-component vector of float) 0:106 f: direct index for structure ( temp 4-component vector of float) 0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:106 Constant: 0:106 0 (const uint) 0:106 direct index ( temp uint) 0:106 'dti' ( in 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 subgroupQuadSwapHorizontal ( temp 2-component vector of float) 0:106 vector swizzle ( temp 2-component vector of float) 0:106 f: direct index for structure ( temp 4-component vector of float) 0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:106 Constant: 0:106 0 (const uint) 0:106 direct index ( temp uint) 0:106 'dti' ( in 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:107 move second child to first child ( temp 3-component vector of float) 0:107 vector swizzle ( temp 3-component vector of float) 0:107 f: direct index for structure ( temp 4-component vector of float) 0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:107 Constant: 0:107 0 (const uint) 0:107 direct index ( temp uint) 0:107 'dti' ( in 3-component vector of uint) 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 2 (const int) 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:107 subgroupQuadSwapHorizontal ( temp 3-component vector of float) 0:107 vector swizzle ( temp 3-component vector of float) 0:107 f: direct index for structure ( temp 4-component vector of float) 0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:107 Constant: 0:107 0 (const uint) 0:107 direct index ( temp uint) 0:107 'dti' ( in 3-component vector of uint) 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 2 (const int) 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 move second child to first child ( temp 4-component vector of double) 0:109 d: direct index for structure ( temp 4-component vector of double) 0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:109 Constant: 0:109 0 (const uint) 0:109 direct index ( temp uint) 0:109 'dti' ( in 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 3 (const int) 0:109 subgroupQuadSwapHorizontal ( temp 4-component vector of double) 0:109 d: direct index for structure ( temp 4-component vector of double) 0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:109 Constant: 0:109 0 (const uint) 0:109 direct index ( temp uint) 0:109 'dti' ( in 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 3 (const int) 0:110 move second child to first child ( temp double) 0:110 direct index ( temp double) 0:110 d: direct index for structure ( temp 4-component vector of double) 0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:110 Constant: 0:110 0 (const uint) 0:110 direct index ( temp uint) 0:110 'dti' ( in 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 3 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 subgroupQuadSwapHorizontal ( temp double) 0:110 direct index ( temp double) 0:110 d: direct index for structure ( temp 4-component vector of double) 0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:110 Constant: 0:110 0 (const uint) 0:110 direct index ( temp uint) 0:110 'dti' ( in 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 3 (const int) 0:110 Constant: 0:110 0 (const int) 0:111 move second child to first child ( temp 2-component vector of double) 0:111 vector swizzle ( temp 2-component vector of double) 0:111 d: direct index for structure ( temp 4-component vector of double) 0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:111 Constant: 0:111 0 (const uint) 0:111 direct index ( temp uint) 0:111 'dti' ( in 3-component vector of uint) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 3 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 subgroupQuadSwapHorizontal ( temp 2-component vector of double) 0:111 vector swizzle ( temp 2-component vector of double) 0:111 d: direct index for structure ( temp 4-component vector of double) 0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:111 Constant: 0:111 0 (const uint) 0:111 direct index ( temp uint) 0:111 'dti' ( in 3-component vector of uint) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 3 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:112 move second child to first child ( temp 3-component vector of double) 0:112 vector swizzle ( temp 3-component vector of double) 0:112 d: direct index for structure ( temp 4-component vector of double) 0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:112 Constant: 0:112 0 (const uint) 0:112 direct index ( temp uint) 0:112 'dti' ( in 3-component vector of uint) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 3 (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:112 subgroupQuadSwapHorizontal ( temp 3-component vector of double) 0:112 vector swizzle ( temp 3-component vector of double) 0:112 d: direct index for structure ( temp 4-component vector of double) 0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:112 Constant: 0:112 0 (const uint) 0:112 direct index ( temp uint) 0:112 'dti' ( in 3-component vector of uint) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 3 (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 move second child to first child ( temp 4-component vector of uint) 0:114 u: direct index for structure ( temp 4-component vector of uint) 0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:114 Constant: 0:114 0 (const uint) 0:114 direct index ( temp uint) 0:114 'dti' ( in 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 subgroupQuadSwapVertical ( temp 4-component vector of uint) 0:114 u: direct index for structure ( temp 4-component vector of uint) 0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:114 Constant: 0:114 0 (const uint) 0:114 direct index ( temp uint) 0:114 'dti' ( in 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:115 move second child to first child ( temp uint) 0:115 direct index ( temp uint) 0:115 u: direct index for structure ( temp 4-component vector of uint) 0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:115 Constant: 0:115 0 (const uint) 0:115 direct index ( temp uint) 0:115 'dti' ( in 3-component vector of uint) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 subgroupQuadSwapVertical ( temp uint) 0:115 direct index ( temp uint) 0:115 u: direct index for structure ( temp 4-component vector of uint) 0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:115 Constant: 0:115 0 (const uint) 0:115 direct index ( temp uint) 0:115 'dti' ( in 3-component vector of uint) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:116 move second child to first child ( temp 2-component vector of uint) 0:116 vector swizzle ( temp 2-component vector of uint) 0:116 u: direct index for structure ( temp 4-component vector of uint) 0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:116 Constant: 0:116 0 (const uint) 0:116 direct index ( temp uint) 0:116 'dti' ( in 3-component vector of uint) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 subgroupQuadSwapVertical ( temp 2-component vector of uint) 0:116 vector swizzle ( temp 2-component vector of uint) 0:116 u: direct index for structure ( temp 4-component vector of uint) 0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:116 Constant: 0:116 0 (const uint) 0:116 direct index ( temp uint) 0:116 'dti' ( in 3-component vector of uint) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:117 move second child to first child ( temp 3-component vector of uint) 0:117 vector swizzle ( temp 3-component vector of uint) 0:117 u: direct index for structure ( temp 4-component vector of uint) 0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:117 Constant: 0:117 0 (const uint) 0:117 direct index ( temp uint) 0:117 'dti' ( in 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 subgroupQuadSwapVertical ( temp 3-component vector of uint) 0:117 vector swizzle ( temp 3-component vector of uint) 0:117 u: direct index for structure ( temp 4-component vector of uint) 0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:117 Constant: 0:117 0 (const uint) 0:117 direct index ( temp uint) 0:117 'dti' ( in 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:119 move second child to first child ( temp 4-component vector of int) 0:119 i: direct index for structure ( temp 4-component vector of int) 0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:119 Constant: 0:119 0 (const uint) 0:119 direct index ( temp uint) 0:119 'dti' ( in 3-component vector of uint) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 subgroupQuadSwapVertical ( temp 4-component vector of int) 0:119 i: direct index for structure ( temp 4-component vector of int) 0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:119 Constant: 0:119 0 (const uint) 0:119 direct index ( temp uint) 0:119 'dti' ( in 3-component vector of uint) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:120 move second child to first child ( temp int) 0:120 direct index ( temp int) 0:120 i: direct index for structure ( temp 4-component vector of int) 0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:120 Constant: 0:120 0 (const uint) 0:120 direct index ( temp uint) 0:120 'dti' ( in 3-component vector of uint) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 subgroupQuadSwapVertical ( temp int) 0:120 direct index ( temp int) 0:120 i: direct index for structure ( temp 4-component vector of int) 0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:120 Constant: 0:120 0 (const uint) 0:120 direct index ( temp uint) 0:120 'dti' ( in 3-component vector of uint) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 0 (const int) 0:121 move second child to first child ( temp 2-component vector of int) 0:121 vector swizzle ( temp 2-component vector of int) 0:121 i: direct index for structure ( temp 4-component vector of int) 0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:121 Constant: 0:121 0 (const uint) 0:121 direct index ( temp uint) 0:121 'dti' ( in 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 subgroupQuadSwapVertical ( temp 2-component vector of int) 0:121 vector swizzle ( temp 2-component vector of int) 0:121 i: direct index for structure ( temp 4-component vector of int) 0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:121 Constant: 0:121 0 (const uint) 0:121 direct index ( temp uint) 0:121 'dti' ( in 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:122 move second child to first child ( temp 3-component vector of int) 0:122 vector swizzle ( temp 3-component vector of int) 0:122 i: direct index for structure ( temp 4-component vector of int) 0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:122 Constant: 0:122 0 (const uint) 0:122 direct index ( temp uint) 0:122 'dti' ( in 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 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 subgroupQuadSwapVertical ( temp 3-component vector of int) 0:122 vector swizzle ( temp 3-component vector of int) 0:122 i: direct index for structure ( temp 4-component vector of int) 0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:122 Constant: 0:122 0 (const uint) 0:122 direct index ( temp uint) 0:122 'dti' ( in 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 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:124 move second child to first child ( temp 4-component vector of float) 0:124 f: direct index for structure ( temp 4-component vector of float) 0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:124 Constant: 0:124 0 (const uint) 0:124 direct index ( temp uint) 0:124 'dti' ( in 3-component vector of uint) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 2 (const int) 0:124 subgroupQuadSwapVertical ( temp 4-component vector of float) 0:124 f: direct index for structure ( temp 4-component vector of float) 0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:124 Constant: 0:124 0 (const uint) 0:124 direct index ( temp uint) 0:124 'dti' ( in 3-component vector of uint) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 2 (const int) 0:125 move second child to first child ( temp float) 0:125 direct index ( temp float) 0:125 f: direct index for structure ( temp 4-component vector of float) 0:125 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:125 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:125 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:125 Constant: 0:125 0 (const uint) 0:125 direct index ( temp uint) 0:125 'dti' ( in 3-component vector of uint) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 subgroupQuadSwapVertical ( temp float) 0:125 direct index ( temp float) 0:125 f: direct index for structure ( temp 4-component vector of float) 0:125 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:125 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:125 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:125 Constant: 0:125 0 (const uint) 0:125 direct index ( temp uint) 0:125 'dti' ( in 3-component vector of uint) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 0 (const int) 0:126 move second child to first child ( temp 2-component vector of float) 0:126 vector swizzle ( temp 2-component vector of float) 0:126 f: direct index for structure ( temp 4-component vector of float) 0:126 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:126 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:126 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:126 Constant: 0:126 0 (const uint) 0:126 direct index ( temp uint) 0:126 'dti' ( in 3-component vector of uint) 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 subgroupQuadSwapVertical ( temp 2-component vector of float) 0:126 vector swizzle ( temp 2-component vector of float) 0:126 f: direct index for structure ( temp 4-component vector of float) 0:126 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:126 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:126 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:126 Constant: 0:126 0 (const uint) 0:126 direct index ( temp uint) 0:126 'dti' ( in 3-component vector of uint) 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:127 move second child to first child ( temp 3-component vector of float) 0:127 vector swizzle ( temp 3-component vector of float) 0:127 f: direct index for structure ( temp 4-component vector of float) 0:127 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:127 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:127 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:127 Constant: 0:127 0 (const uint) 0:127 direct index ( temp uint) 0:127 'dti' ( in 3-component vector of uint) 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 subgroupQuadSwapVertical ( temp 3-component vector of float) 0:127 vector swizzle ( temp 3-component vector of float) 0:127 f: direct index for structure ( temp 4-component vector of float) 0:127 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:127 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:127 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:127 Constant: 0:127 0 (const uint) 0:127 direct index ( temp uint) 0:127 'dti' ( in 3-component vector of uint) 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 2 (const int) 0:129 move second child to first child ( temp 4-component vector of double) 0:129 d: direct index for structure ( temp 4-component vector of double) 0:129 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:129 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:129 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:129 Constant: 0:129 0 (const uint) 0:129 direct index ( temp uint) 0:129 'dti' ( in 3-component vector of uint) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 3 (const int) 0:129 subgroupQuadSwapVertical ( temp 4-component vector of double) 0:129 d: direct index for structure ( temp 4-component vector of double) 0:129 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:129 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:129 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:129 Constant: 0:129 0 (const uint) 0:129 direct index ( temp uint) 0:129 'dti' ( in 3-component vector of uint) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 3 (const int) 0:130 move second child to first child ( temp double) 0:130 direct index ( temp double) 0:130 d: direct index for structure ( temp 4-component vector of double) 0:130 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:130 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:130 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:130 Constant: 0:130 0 (const uint) 0:130 direct index ( temp uint) 0:130 'dti' ( in 3-component vector of uint) 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 3 (const int) 0:130 Constant: 0:130 0 (const int) 0:130 subgroupQuadSwapVertical ( temp double) 0:130 direct index ( temp double) 0:130 d: direct index for structure ( temp 4-component vector of double) 0:130 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:130 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:130 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:130 Constant: 0:130 0 (const uint) 0:130 direct index ( temp uint) 0:130 'dti' ( in 3-component vector of uint) 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 3 (const int) 0:130 Constant: 0:130 0 (const int) 0:131 move second child to first child ( temp 2-component vector of double) 0:131 vector swizzle ( temp 2-component vector of double) 0:131 d: direct index for structure ( temp 4-component vector of double) 0:131 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:131 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:131 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:131 Constant: 0:131 0 (const uint) 0:131 direct index ( temp uint) 0:131 'dti' ( in 3-component vector of uint) 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 3 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 subgroupQuadSwapVertical ( temp 2-component vector of double) 0:131 vector swizzle ( temp 2-component vector of double) 0:131 d: direct index for structure ( temp 4-component vector of double) 0:131 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:131 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:131 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:131 Constant: 0:131 0 (const uint) 0:131 direct index ( temp uint) 0:131 'dti' ( in 3-component vector of uint) 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 3 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:132 move second child to first child ( temp 3-component vector of double) 0:132 vector swizzle ( temp 3-component vector of double) 0:132 d: direct index for structure ( temp 4-component vector of double) 0:132 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:132 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:132 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:132 Constant: 0:132 0 (const uint) 0:132 direct index ( temp uint) 0:132 'dti' ( in 3-component vector of uint) 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 3 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:132 subgroupQuadSwapVertical ( temp 3-component vector of double) 0:132 vector swizzle ( temp 3-component vector of double) 0:132 d: direct index for structure ( temp 4-component vector of double) 0:132 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:132 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:132 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:132 Constant: 0:132 0 (const uint) 0:132 direct index ( temp uint) 0:132 'dti' ( in 3-component vector of uint) 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 3 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:134 move second child to first child ( temp 4-component vector of uint) 0:134 u: direct index for structure ( temp 4-component vector of uint) 0:134 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:134 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:134 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:134 Constant: 0:134 0 (const uint) 0:134 direct index ( temp uint) 0:134 'dti' ( in 3-component vector of uint) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 0 (const int) 0:134 subgroupQuadSwapDiagonal ( temp 4-component vector of uint) 0:134 u: direct index for structure ( temp 4-component vector of uint) 0:134 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:134 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:134 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:134 Constant: 0:134 0 (const uint) 0:134 direct index ( temp uint) 0:134 'dti' ( in 3-component vector of uint) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 0 (const int) 0:135 move second child to first child ( temp uint) 0:135 direct index ( temp uint) 0:135 u: direct index for structure ( temp 4-component vector of uint) 0:135 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:135 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:135 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:135 Constant: 0:135 0 (const uint) 0:135 direct index ( temp uint) 0:135 'dti' ( in 3-component vector of uint) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 subgroupQuadSwapDiagonal ( temp uint) 0:135 direct index ( temp uint) 0:135 u: direct index for structure ( temp 4-component vector of uint) 0:135 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:135 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:135 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:135 Constant: 0:135 0 (const uint) 0:135 direct index ( temp uint) 0:135 'dti' ( in 3-component vector of uint) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 0 (const int) 0:136 move second child to first child ( temp 2-component vector of uint) 0:136 vector swizzle ( temp 2-component vector of uint) 0:136 u: direct index for structure ( temp 4-component vector of uint) 0:136 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:136 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:136 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:136 Constant: 0:136 0 (const uint) 0:136 direct index ( temp uint) 0:136 'dti' ( in 3-component vector of uint) 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 subgroupQuadSwapDiagonal ( temp 2-component vector of uint) 0:136 vector swizzle ( temp 2-component vector of uint) 0:136 u: direct index for structure ( temp 4-component vector of uint) 0:136 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:136 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:136 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:136 Constant: 0:136 0 (const uint) 0:136 direct index ( temp uint) 0:136 'dti' ( in 3-component vector of uint) 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:137 move second child to first child ( temp 3-component vector of uint) 0:137 vector swizzle ( temp 3-component vector of uint) 0:137 u: direct index for structure ( temp 4-component vector of uint) 0:137 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:137 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:137 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:137 Constant: 0:137 0 (const uint) 0:137 direct index ( temp uint) 0:137 'dti' ( in 3-component vector of uint) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 0 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 subgroupQuadSwapDiagonal ( temp 3-component vector of uint) 0:137 vector swizzle ( temp 3-component vector of uint) 0:137 u: direct index for structure ( temp 4-component vector of uint) 0:137 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:137 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:137 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:137 Constant: 0:137 0 (const uint) 0:137 direct index ( temp uint) 0:137 'dti' ( in 3-component vector of uint) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 0 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 2 (const int) 0:139 move second child to first child ( temp 4-component vector of int) 0:139 i: direct index for structure ( temp 4-component vector of int) 0:139 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:139 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:139 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:139 Constant: 0:139 0 (const uint) 0:139 direct index ( temp uint) 0:139 'dti' ( in 3-component vector of uint) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 subgroupQuadSwapDiagonal ( temp 4-component vector of int) 0:139 i: direct index for structure ( temp 4-component vector of int) 0:139 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:139 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:139 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:139 Constant: 0:139 0 (const uint) 0:139 direct index ( temp uint) 0:139 'dti' ( in 3-component vector of uint) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:140 move second child to first child ( temp int) 0:140 direct index ( temp int) 0:140 i: direct index for structure ( temp 4-component vector of int) 0:140 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:140 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:140 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:140 Constant: 0:140 0 (const uint) 0:140 direct index ( temp uint) 0:140 'dti' ( in 3-component vector of uint) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 subgroupQuadSwapDiagonal ( temp int) 0:140 direct index ( temp int) 0:140 i: direct index for structure ( temp 4-component vector of int) 0:140 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:140 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:140 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:140 Constant: 0:140 0 (const uint) 0:140 direct index ( temp uint) 0:140 'dti' ( in 3-component vector of uint) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:141 move second child to first child ( temp 2-component vector of int) 0:141 vector swizzle ( temp 2-component vector of int) 0:141 i: direct index for structure ( temp 4-component vector of int) 0:141 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:141 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:141 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:141 Constant: 0:141 0 (const uint) 0:141 direct index ( temp uint) 0:141 'dti' ( in 3-component vector of uint) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 subgroupQuadSwapDiagonal ( temp 2-component vector of int) 0:141 vector swizzle ( temp 2-component vector of int) 0:141 i: direct index for structure ( temp 4-component vector of int) 0:141 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:141 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:141 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:141 Constant: 0:141 0 (const uint) 0:141 direct index ( temp uint) 0:141 'dti' ( in 3-component vector of uint) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:142 move second child to first child ( temp 3-component vector of int) 0:142 vector swizzle ( temp 3-component vector of int) 0:142 i: direct index for structure ( temp 4-component vector of int) 0:142 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:142 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:142 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:142 Constant: 0:142 0 (const uint) 0:142 direct index ( temp uint) 0:142 'dti' ( in 3-component vector of uint) 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 2 (const int) 0:142 subgroupQuadSwapDiagonal ( temp 3-component vector of int) 0:142 vector swizzle ( temp 3-component vector of int) 0:142 i: direct index for structure ( temp 4-component vector of int) 0:142 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:142 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:142 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:142 Constant: 0:142 0 (const uint) 0:142 direct index ( temp uint) 0:142 'dti' ( in 3-component vector of uint) 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 2 (const int) 0:144 move second child to first child ( temp 4-component vector of float) 0:144 f: direct index for structure ( temp 4-component vector of float) 0:144 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:144 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:144 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:144 Constant: 0:144 0 (const uint) 0:144 direct index ( temp uint) 0:144 'dti' ( in 3-component vector of uint) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 2 (const int) 0:144 subgroupQuadSwapDiagonal ( temp 4-component vector of float) 0:144 f: direct index for structure ( temp 4-component vector of float) 0:144 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:144 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:144 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:144 Constant: 0:144 0 (const uint) 0:144 direct index ( temp uint) 0:144 'dti' ( in 3-component vector of uint) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 2 (const int) 0:145 move second child to first child ( temp float) 0:145 direct index ( temp float) 0:145 f: direct index for structure ( temp 4-component vector of float) 0:145 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:145 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:145 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:145 Constant: 0:145 0 (const uint) 0:145 direct index ( temp uint) 0:145 'dti' ( in 3-component vector of uint) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 2 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 subgroupQuadSwapDiagonal ( temp float) 0:145 direct index ( temp float) 0:145 f: direct index for structure ( temp 4-component vector of float) 0:145 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:145 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:145 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:145 Constant: 0:145 0 (const uint) 0:145 direct index ( temp uint) 0:145 'dti' ( in 3-component vector of uint) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 2 (const int) 0:145 Constant: 0:145 0 (const int) 0:146 move second child to first child ( temp 2-component vector of float) 0:146 vector swizzle ( temp 2-component vector of float) 0:146 f: direct index for structure ( temp 4-component vector of float) 0:146 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:146 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:146 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:146 Constant: 0:146 0 (const uint) 0:146 direct index ( temp uint) 0:146 'dti' ( in 3-component vector of uint) 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 2 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 subgroupQuadSwapDiagonal ( temp 2-component vector of float) 0:146 vector swizzle ( temp 2-component vector of float) 0:146 f: direct index for structure ( temp 4-component vector of float) 0:146 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:146 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:146 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:146 Constant: 0:146 0 (const uint) 0:146 direct index ( temp uint) 0:146 'dti' ( in 3-component vector of uint) 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 2 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:147 move second child to first child ( temp 3-component vector of float) 0:147 vector swizzle ( temp 3-component vector of float) 0:147 f: direct index for structure ( temp 4-component vector of float) 0:147 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:147 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:147 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:147 Constant: 0:147 0 (const uint) 0:147 direct index ( temp uint) 0:147 'dti' ( in 3-component vector of uint) 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 subgroupQuadSwapDiagonal ( temp 3-component vector of float) 0:147 vector swizzle ( temp 3-component vector of float) 0:147 f: direct index for structure ( temp 4-component vector of float) 0:147 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:147 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:147 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:147 Constant: 0:147 0 (const uint) 0:147 direct index ( temp uint) 0:147 'dti' ( in 3-component vector of uint) 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:149 move second child to first child ( temp 4-component vector of double) 0:149 d: direct index for structure ( temp 4-component vector of double) 0:149 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:149 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:149 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:149 Constant: 0:149 0 (const uint) 0:149 direct index ( temp uint) 0:149 'dti' ( in 3-component vector of uint) 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 3 (const int) 0:149 subgroupQuadSwapDiagonal ( temp 4-component vector of double) 0:149 d: direct index for structure ( temp 4-component vector of double) 0:149 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:149 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:149 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:149 Constant: 0:149 0 (const uint) 0:149 direct index ( temp uint) 0:149 'dti' ( in 3-component vector of uint) 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 3 (const int) 0:150 move second child to first child ( temp double) 0:150 direct index ( temp double) 0:150 d: direct index for structure ( temp 4-component vector of double) 0:150 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:150 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:150 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:150 Constant: 0:150 0 (const uint) 0:150 direct index ( temp uint) 0:150 'dti' ( in 3-component vector of uint) 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 3 (const int) 0:150 Constant: 0:150 0 (const int) 0:150 subgroupQuadSwapDiagonal ( temp double) 0:150 direct index ( temp double) 0:150 d: direct index for structure ( temp 4-component vector of double) 0:150 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:150 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:150 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:150 Constant: 0:150 0 (const uint) 0:150 direct index ( temp uint) 0:150 'dti' ( in 3-component vector of uint) 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 3 (const int) 0:150 Constant: 0:150 0 (const int) 0:151 move second child to first child ( temp 2-component vector of double) 0:151 vector swizzle ( temp 2-component vector of double) 0:151 d: direct index for structure ( temp 4-component vector of double) 0:151 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:151 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:151 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:151 Constant: 0:151 0 (const uint) 0:151 direct index ( temp uint) 0:151 'dti' ( in 3-component vector of uint) 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 3 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 subgroupQuadSwapDiagonal ( temp 2-component vector of double) 0:151 vector swizzle ( temp 2-component vector of double) 0:151 d: direct index for structure ( temp 4-component vector of double) 0:151 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:151 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:151 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:151 Constant: 0:151 0 (const uint) 0:151 direct index ( temp uint) 0:151 'dti' ( in 3-component vector of uint) 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 3 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:152 move second child to first child ( temp 3-component vector of double) 0:152 vector swizzle ( temp 3-component vector of double) 0:152 d: direct index for structure ( temp 4-component vector of double) 0:152 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:152 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:152 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:152 Constant: 0:152 0 (const uint) 0:152 direct index ( temp uint) 0:152 'dti' ( in 3-component vector of uint) 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 3 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 2 (const int) 0:152 subgroupQuadSwapDiagonal ( temp 3-component vector of double) 0:152 vector swizzle ( temp 3-component vector of double) 0:152 d: direct index for structure ( temp 4-component vector of double) 0:152 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:152 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:152 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:152 Constant: 0:152 0 (const uint) 0:152 direct index ( temp uint) 0:152 'dti' ( in 3-component vector of uint) 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 3 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 2 (const int) 0:13 Function Definition: CSMain( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:13 Function Definition: @CSMain(vu3; ( temp void) 0:13 Function Parameters: 0:13 'dti' ( in 3-component vector of uint) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 subgroupQuadBroadcast ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const uint) 0:15 move second child to first child ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 subgroupQuadBroadcast ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const uint) 0:16 move second child to first child ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 subgroupQuadBroadcast ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (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 0 (const uint) 0:17 move second child to first child ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 subgroupQuadBroadcast ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 0 (const uint) 0:19 move second child to first child ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupQuadBroadcast ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 0 (const uint) 0:20 move second child to first child ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 subgroupQuadBroadcast ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 0 (const uint) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupQuadBroadcast ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const uint) 0:22 move second child to first child ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupQuadBroadcast ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 Constant: 0:22 0 (const uint) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupQuadBroadcast ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: 0:24 0 (const uint) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 subgroupQuadBroadcast ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const uint) 0:26 move second child to first child ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupQuadBroadcast ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 0 (const uint) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupQuadBroadcast ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 0 (const uint) 0:29 move second child to first child ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 subgroupQuadBroadcast ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 Constant: 0:29 0 (const uint) 0:30 move second child to first child ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 subgroupQuadBroadcast ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 0 (const uint) 0:31 move second child to first child ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupQuadBroadcast ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 Constant: 0:31 0 (const uint) 0:32 move second child to first child ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupQuadBroadcast ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 Constant: 0:32 0 (const uint) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupQuadBroadcast ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const uint) 0:35 move second child to first child ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 subgroupQuadBroadcast ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const uint) 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 subgroupQuadBroadcast ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: 0:36 1 (const uint) 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupQuadBroadcast ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 Constant: 0:37 1 (const uint) 0:39 move second child to first child ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupQuadBroadcast ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 1 (const uint) 0:40 move second child to first child ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupQuadBroadcast ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const uint) 0:41 move second child to first child ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupQuadBroadcast ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Constant: 0:41 1 (const uint) 0:42 move second child to first child ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupQuadBroadcast ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 Constant: 0:42 1 (const uint) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupQuadBroadcast ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const uint) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupQuadBroadcast ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupQuadBroadcast ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupQuadBroadcast ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Constant: 0:47 1 (const uint) 0:49 move second child to first child ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 subgroupQuadBroadcast ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupQuadBroadcast ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 1 (const uint) 0:51 move second child to first child ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupQuadBroadcast ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 1 (const uint) 0:52 move second child to first child ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupQuadBroadcast ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 Constant: 0:52 1 (const uint) 0:54 move second child to first child ( temp 4-component vector of uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupQuadBroadcast ( temp 4-component vector of uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 2 (const uint) 0:55 move second child to first child ( temp uint) 0:55 direct index ( temp uint) 0:55 u: direct index for structure ( temp 4-component vector of uint) 0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:55 Constant: 0:55 0 (const uint) 0:55 direct index ( temp uint) 0:55 'dti' ( in 3-component vector of uint) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 subgroupQuadBroadcast ( temp uint) 0:55 direct index ( temp uint) 0:55 u: direct index for structure ( temp 4-component vector of uint) 0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:55 Constant: 0:55 0 (const uint) 0:55 direct index ( temp uint) 0:55 'dti' ( in 3-component vector of uint) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 2 (const uint) 0:56 move second child to first child ( temp 2-component vector of uint) 0:56 vector swizzle ( temp 2-component vector of uint) 0:56 u: direct index for structure ( temp 4-component vector of uint) 0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:56 Constant: 0:56 0 (const uint) 0:56 direct index ( temp uint) 0:56 'dti' ( in 3-component vector of uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupQuadBroadcast ( temp 2-component vector of uint) 0:56 vector swizzle ( temp 2-component vector of uint) 0:56 u: direct index for structure ( temp 4-component vector of uint) 0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:56 Constant: 0:56 0 (const uint) 0:56 direct index ( temp uint) 0:56 'dti' ( in 3-component vector of uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 2 (const uint) 0:57 move second child to first child ( temp 3-component vector of uint) 0:57 vector swizzle ( temp 3-component vector of uint) 0:57 u: direct index for structure ( temp 4-component vector of uint) 0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:57 Constant: 0:57 0 (const uint) 0:57 direct index ( temp uint) 0:57 'dti' ( in 3-component vector of uint) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupQuadBroadcast ( temp 3-component vector of uint) 0:57 vector swizzle ( temp 3-component vector of uint) 0:57 u: direct index for structure ( temp 4-component vector of uint) 0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:57 Constant: 0:57 0 (const uint) 0:57 direct index ( temp uint) 0:57 'dti' ( in 3-component vector of uint) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 Constant: 0:57 2 (const uint) 0:59 move second child to first child ( temp 4-component vector of int) 0:59 i: direct index for structure ( temp 4-component vector of int) 0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:59 Constant: 0:59 0 (const uint) 0:59 direct index ( temp uint) 0:59 'dti' ( in 3-component vector of uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupQuadBroadcast ( temp 4-component vector of int) 0:59 i: direct index for structure ( temp 4-component vector of int) 0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:59 Constant: 0:59 0 (const uint) 0:59 direct index ( temp uint) 0:59 'dti' ( in 3-component vector of uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 Constant: 0:59 2 (const uint) 0:60 move second child to first child ( temp int) 0:60 direct index ( temp int) 0:60 i: direct index for structure ( temp 4-component vector of int) 0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:60 Constant: 0:60 0 (const uint) 0:60 direct index ( temp uint) 0:60 'dti' ( in 3-component vector of uint) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 subgroupQuadBroadcast ( temp int) 0:60 direct index ( temp int) 0:60 i: direct index for structure ( temp 4-component vector of int) 0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:60 Constant: 0:60 0 (const uint) 0:60 direct index ( temp uint) 0:60 'dti' ( in 3-component vector of uint) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 2 (const uint) 0:61 move second child to first child ( temp 2-component vector of int) 0:61 vector swizzle ( temp 2-component vector of int) 0:61 i: direct index for structure ( temp 4-component vector of int) 0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:61 Constant: 0:61 0 (const uint) 0:61 direct index ( temp uint) 0:61 'dti' ( in 3-component vector of uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 subgroupQuadBroadcast ( temp 2-component vector of int) 0:61 vector swizzle ( temp 2-component vector of int) 0:61 i: direct index for structure ( temp 4-component vector of int) 0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:61 Constant: 0:61 0 (const uint) 0:61 direct index ( temp uint) 0:61 'dti' ( in 3-component vector of uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: 0:61 2 (const uint) 0:62 move second child to first child ( temp 3-component vector of int) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 i: direct index for structure ( temp 4-component vector of int) 0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:62 Constant: 0:62 0 (const uint) 0:62 direct index ( temp uint) 0:62 'dti' ( in 3-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupQuadBroadcast ( temp 3-component vector of int) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 i: direct index for structure ( temp 4-component vector of int) 0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:62 Constant: 0:62 0 (const uint) 0:62 direct index ( temp uint) 0:62 'dti' ( in 3-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 Constant: 0:62 2 (const uint) 0:64 move second child to first child ( temp 4-component vector of float) 0:64 f: direct index for structure ( temp 4-component vector of float) 0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:64 Constant: 0:64 0 (const uint) 0:64 direct index ( temp uint) 0:64 'dti' ( in 3-component vector of uint) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 subgroupQuadBroadcast ( temp 4-component vector of float) 0:64 f: direct index for structure ( temp 4-component vector of float) 0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:64 Constant: 0:64 0 (const uint) 0:64 direct index ( temp uint) 0:64 'dti' ( in 3-component vector of uint) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 Constant: 0:64 2 (const uint) 0:65 move second child to first child ( temp float) 0:65 direct index ( temp float) 0:65 f: direct index for structure ( temp 4-component vector of float) 0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:65 Constant: 0:65 0 (const uint) 0:65 direct index ( temp uint) 0:65 'dti' ( in 3-component vector of uint) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 subgroupQuadBroadcast ( temp float) 0:65 direct index ( temp float) 0:65 f: direct index for structure ( temp 4-component vector of float) 0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:65 Constant: 0:65 0 (const uint) 0:65 direct index ( temp uint) 0:65 'dti' ( in 3-component vector of uint) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const uint) 0:66 move second child to first child ( temp 2-component vector of float) 0:66 vector swizzle ( temp 2-component vector of float) 0:66 f: direct index for structure ( temp 4-component vector of float) 0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:66 Constant: 0:66 0 (const uint) 0:66 direct index ( temp uint) 0:66 'dti' ( in 3-component vector of uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupQuadBroadcast ( temp 2-component vector of float) 0:66 vector swizzle ( temp 2-component vector of float) 0:66 f: direct index for structure ( temp 4-component vector of float) 0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:66 Constant: 0:66 0 (const uint) 0:66 direct index ( temp uint) 0:66 'dti' ( in 3-component vector of uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 Constant: 0:66 2 (const uint) 0:67 move second child to first child ( temp 3-component vector of float) 0:67 vector swizzle ( temp 3-component vector of float) 0:67 f: direct index for structure ( temp 4-component vector of float) 0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:67 Constant: 0:67 0 (const uint) 0:67 direct index ( temp uint) 0:67 'dti' ( in 3-component vector of uint) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 subgroupQuadBroadcast ( temp 3-component vector of float) 0:67 vector swizzle ( temp 3-component vector of float) 0:67 f: direct index for structure ( temp 4-component vector of float) 0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:67 Constant: 0:67 0 (const uint) 0:67 direct index ( temp uint) 0:67 'dti' ( in 3-component vector of uint) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Constant: 0:67 2 (const uint) 0:69 move second child to first child ( temp 4-component vector of double) 0:69 d: direct index for structure ( temp 4-component vector of double) 0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:69 Constant: 0:69 0 (const uint) 0:69 direct index ( temp uint) 0:69 'dti' ( in 3-component vector of uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 3 (const int) 0:69 subgroupQuadBroadcast ( temp 4-component vector of double) 0:69 d: direct index for structure ( temp 4-component vector of double) 0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:69 Constant: 0:69 0 (const uint) 0:69 direct index ( temp uint) 0:69 'dti' ( in 3-component vector of uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 3 (const int) 0:69 Constant: 0:69 2 (const uint) 0:70 move second child to first child ( temp double) 0:70 direct index ( temp double) 0:70 d: direct index for structure ( temp 4-component vector of double) 0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:70 Constant: 0:70 0 (const uint) 0:70 direct index ( temp uint) 0:70 'dti' ( in 3-component vector of uint) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 3 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 subgroupQuadBroadcast ( temp double) 0:70 direct index ( temp double) 0:70 d: direct index for structure ( temp 4-component vector of double) 0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:70 Constant: 0:70 0 (const uint) 0:70 direct index ( temp uint) 0:70 'dti' ( in 3-component vector of uint) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 3 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 2 (const uint) 0:71 move second child to first child ( temp 2-component vector of double) 0:71 vector swizzle ( temp 2-component vector of double) 0:71 d: direct index for structure ( temp 4-component vector of double) 0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:71 Constant: 0:71 0 (const uint) 0:71 direct index ( temp uint) 0:71 'dti' ( in 3-component vector of uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 3 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupQuadBroadcast ( temp 2-component vector of double) 0:71 vector swizzle ( temp 2-component vector of double) 0:71 d: direct index for structure ( temp 4-component vector of double) 0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:71 Constant: 0:71 0 (const uint) 0:71 direct index ( temp uint) 0:71 'dti' ( in 3-component vector of uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 3 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const uint) 0:72 move second child to first child ( temp 3-component vector of double) 0:72 vector swizzle ( temp 3-component vector of double) 0:72 d: direct index for structure ( temp 4-component vector of double) 0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:72 Constant: 0:72 0 (const uint) 0:72 direct index ( temp uint) 0:72 'dti' ( in 3-component vector of uint) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 3 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupQuadBroadcast ( temp 3-component vector of double) 0:72 vector swizzle ( temp 3-component vector of double) 0:72 d: direct index for structure ( temp 4-component vector of double) 0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:72 Constant: 0:72 0 (const uint) 0:72 direct index ( temp uint) 0:72 'dti' ( in 3-component vector of uint) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 3 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 Constant: 0:72 2 (const uint) 0:74 move second child to first child ( temp 4-component vector of uint) 0:74 u: direct index for structure ( temp 4-component vector of uint) 0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp uint) 0:74 'dti' ( in 3-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupQuadBroadcast ( temp 4-component vector of uint) 0:74 u: direct index for structure ( temp 4-component vector of uint) 0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp uint) 0:74 'dti' ( in 3-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 3 (const uint) 0:75 move second child to first child ( temp uint) 0:75 direct index ( temp uint) 0:75 u: direct index for structure ( temp 4-component vector of uint) 0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:75 Constant: 0:75 0 (const uint) 0:75 direct index ( temp uint) 0:75 'dti' ( in 3-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 subgroupQuadBroadcast ( temp uint) 0:75 direct index ( temp uint) 0:75 u: direct index for structure ( temp 4-component vector of uint) 0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:75 Constant: 0:75 0 (const uint) 0:75 direct index ( temp uint) 0:75 'dti' ( in 3-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 3 (const uint) 0:76 move second child to first child ( temp 2-component vector of uint) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 u: direct index for structure ( temp 4-component vector of uint) 0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:76 Constant: 0:76 0 (const uint) 0:76 direct index ( temp uint) 0:76 'dti' ( in 3-component vector of uint) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 subgroupQuadBroadcast ( temp 2-component vector of uint) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 u: direct index for structure ( temp 4-component vector of uint) 0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:76 Constant: 0:76 0 (const uint) 0:76 direct index ( temp uint) 0:76 'dti' ( in 3-component vector of uint) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 Constant: 0:76 3 (const uint) 0:77 move second child to first child ( temp 3-component vector of uint) 0:77 vector swizzle ( temp 3-component vector of uint) 0:77 u: direct index for structure ( temp 4-component vector of uint) 0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:77 Constant: 0:77 0 (const uint) 0:77 direct index ( temp uint) 0:77 'dti' ( in 3-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 subgroupQuadBroadcast ( temp 3-component vector of uint) 0:77 vector swizzle ( temp 3-component vector of uint) 0:77 u: direct index for structure ( temp 4-component vector of uint) 0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:77 Constant: 0:77 0 (const uint) 0:77 direct index ( temp uint) 0:77 'dti' ( in 3-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 Constant: 0:77 3 (const uint) 0:79 move second child to first child ( temp 4-component vector of int) 0:79 i: direct index for structure ( temp 4-component vector of int) 0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:79 Constant: 0:79 0 (const uint) 0:79 direct index ( temp uint) 0:79 'dti' ( in 3-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupQuadBroadcast ( temp 4-component vector of int) 0:79 i: direct index for structure ( temp 4-component vector of int) 0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:79 Constant: 0:79 0 (const uint) 0:79 direct index ( temp uint) 0:79 'dti' ( in 3-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 3 (const uint) 0:80 move second child to first child ( temp int) 0:80 direct index ( temp int) 0:80 i: direct index for structure ( temp 4-component vector of int) 0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:80 Constant: 0:80 0 (const uint) 0:80 direct index ( temp uint) 0:80 'dti' ( in 3-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 subgroupQuadBroadcast ( temp int) 0:80 direct index ( temp int) 0:80 i: direct index for structure ( temp 4-component vector of int) 0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:80 Constant: 0:80 0 (const uint) 0:80 direct index ( temp uint) 0:80 'dti' ( in 3-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 3 (const uint) 0:81 move second child to first child ( temp 2-component vector of int) 0:81 vector swizzle ( temp 2-component vector of int) 0:81 i: direct index for structure ( temp 4-component vector of int) 0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:81 Constant: 0:81 0 (const uint) 0:81 direct index ( temp uint) 0:81 'dti' ( in 3-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupQuadBroadcast ( temp 2-component vector of int) 0:81 vector swizzle ( temp 2-component vector of int) 0:81 i: direct index for structure ( temp 4-component vector of int) 0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:81 Constant: 0:81 0 (const uint) 0:81 direct index ( temp uint) 0:81 'dti' ( in 3-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Constant: 0:81 3 (const uint) 0:82 move second child to first child ( temp 3-component vector of int) 0:82 vector swizzle ( temp 3-component vector of int) 0:82 i: direct index for structure ( temp 4-component vector of int) 0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:82 Constant: 0:82 0 (const uint) 0:82 direct index ( temp uint) 0:82 'dti' ( in 3-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 subgroupQuadBroadcast ( temp 3-component vector of int) 0:82 vector swizzle ( temp 3-component vector of int) 0:82 i: direct index for structure ( temp 4-component vector of int) 0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:82 Constant: 0:82 0 (const uint) 0:82 direct index ( temp uint) 0:82 'dti' ( in 3-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 3 (const uint) 0:84 move second child to first child ( temp 4-component vector of float) 0:84 f: direct index for structure ( temp 4-component vector of float) 0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:84 Constant: 0:84 0 (const uint) 0:84 direct index ( temp uint) 0:84 'dti' ( in 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 subgroupQuadBroadcast ( temp 4-component vector of float) 0:84 f: direct index for structure ( temp 4-component vector of float) 0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:84 Constant: 0:84 0 (const uint) 0:84 direct index ( temp uint) 0:84 'dti' ( in 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 Constant: 0:84 3 (const uint) 0:85 move second child to first child ( temp float) 0:85 direct index ( temp float) 0:85 f: direct index for structure ( temp 4-component vector of float) 0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:85 Constant: 0:85 0 (const uint) 0:85 direct index ( temp uint) 0:85 'dti' ( in 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 subgroupQuadBroadcast ( temp float) 0:85 direct index ( temp float) 0:85 f: direct index for structure ( temp 4-component vector of float) 0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:85 Constant: 0:85 0 (const uint) 0:85 direct index ( temp uint) 0:85 'dti' ( in 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 3 (const uint) 0:86 move second child to first child ( temp 2-component vector of float) 0:86 vector swizzle ( temp 2-component vector of float) 0:86 f: direct index for structure ( temp 4-component vector of float) 0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:86 Constant: 0:86 0 (const uint) 0:86 direct index ( temp uint) 0:86 'dti' ( in 3-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 subgroupQuadBroadcast ( temp 2-component vector of float) 0:86 vector swizzle ( temp 2-component vector of float) 0:86 f: direct index for structure ( temp 4-component vector of float) 0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:86 Constant: 0:86 0 (const uint) 0:86 direct index ( temp uint) 0:86 'dti' ( in 3-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 Constant: 0:86 3 (const uint) 0:87 move second child to first child ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 f: direct index for structure ( temp 4-component vector of float) 0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:87 Constant: 0:87 0 (const uint) 0:87 direct index ( temp uint) 0:87 'dti' ( in 3-component vector of uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 subgroupQuadBroadcast ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 f: direct index for structure ( temp 4-component vector of float) 0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:87 Constant: 0:87 0 (const uint) 0:87 direct index ( temp uint) 0:87 'dti' ( in 3-component vector of uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Constant: 0:87 3 (const uint) 0:89 move second child to first child ( temp 4-component vector of double) 0:89 d: direct index for structure ( temp 4-component vector of double) 0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:89 Constant: 0:89 0 (const uint) 0:89 direct index ( temp uint) 0:89 'dti' ( in 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 3 (const int) 0:89 subgroupQuadBroadcast ( temp 4-component vector of double) 0:89 d: direct index for structure ( temp 4-component vector of double) 0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:89 Constant: 0:89 0 (const uint) 0:89 direct index ( temp uint) 0:89 'dti' ( in 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 3 (const int) 0:89 Constant: 0:89 3 (const uint) 0:90 move second child to first child ( temp double) 0:90 direct index ( temp double) 0:90 d: direct index for structure ( temp 4-component vector of double) 0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:90 Constant: 0:90 0 (const uint) 0:90 direct index ( temp uint) 0:90 'dti' ( in 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 subgroupQuadBroadcast ( temp double) 0:90 direct index ( temp double) 0:90 d: direct index for structure ( temp 4-component vector of double) 0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:90 Constant: 0:90 0 (const uint) 0:90 direct index ( temp uint) 0:90 'dti' ( in 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const uint) 0:91 move second child to first child ( temp 2-component vector of double) 0:91 vector swizzle ( temp 2-component vector of double) 0:91 d: direct index for structure ( temp 4-component vector of double) 0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:91 Constant: 0:91 0 (const uint) 0:91 direct index ( temp uint) 0:91 'dti' ( in 3-component vector of uint) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 3 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 subgroupQuadBroadcast ( temp 2-component vector of double) 0:91 vector swizzle ( temp 2-component vector of double) 0:91 d: direct index for structure ( temp 4-component vector of double) 0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:91 Constant: 0:91 0 (const uint) 0:91 direct index ( temp uint) 0:91 'dti' ( in 3-component vector of uint) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 3 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 3 (const uint) 0:92 move second child to first child ( temp 3-component vector of double) 0:92 vector swizzle ( temp 3-component vector of double) 0:92 d: direct index for structure ( temp 4-component vector of double) 0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:92 Constant: 0:92 0 (const uint) 0:92 direct index ( temp uint) 0:92 'dti' ( in 3-component vector of uint) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 3 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupQuadBroadcast ( temp 3-component vector of double) 0:92 vector swizzle ( temp 3-component vector of double) 0:92 d: direct index for structure ( temp 4-component vector of double) 0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:92 Constant: 0:92 0 (const uint) 0:92 direct index ( temp uint) 0:92 'dti' ( in 3-component vector of uint) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 3 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 3 (const uint) 0:94 move second child to first child ( temp 4-component vector of uint) 0:94 u: direct index for structure ( temp 4-component vector of uint) 0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:94 Constant: 0:94 0 (const uint) 0:94 direct index ( temp uint) 0:94 'dti' ( in 3-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupQuadSwapHorizontal ( temp 4-component vector of uint) 0:94 u: direct index for structure ( temp 4-component vector of uint) 0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:94 Constant: 0:94 0 (const uint) 0:94 direct index ( temp uint) 0:94 'dti' ( in 3-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:95 move second child to first child ( temp uint) 0:95 direct index ( temp uint) 0:95 u: direct index for structure ( temp 4-component vector of uint) 0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:95 Constant: 0:95 0 (const uint) 0:95 direct index ( temp uint) 0:95 'dti' ( in 3-component vector of uint) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 subgroupQuadSwapHorizontal ( temp uint) 0:95 direct index ( temp uint) 0:95 u: direct index for structure ( temp 4-component vector of uint) 0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:95 Constant: 0:95 0 (const uint) 0:95 direct index ( temp uint) 0:95 'dti' ( in 3-component vector of uint) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:96 move second child to first child ( temp 2-component vector of uint) 0:96 vector swizzle ( temp 2-component vector of uint) 0:96 u: direct index for structure ( temp 4-component vector of uint) 0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:96 Constant: 0:96 0 (const uint) 0:96 direct index ( temp uint) 0:96 'dti' ( in 3-component vector of uint) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupQuadSwapHorizontal ( temp 2-component vector of uint) 0:96 vector swizzle ( temp 2-component vector of uint) 0:96 u: direct index for structure ( temp 4-component vector of uint) 0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:96 Constant: 0:96 0 (const uint) 0:96 direct index ( temp uint) 0:96 'dti' ( in 3-component vector of uint) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:97 move second child to first child ( temp 3-component vector of uint) 0:97 vector swizzle ( temp 3-component vector of uint) 0:97 u: direct index for structure ( temp 4-component vector of uint) 0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:97 Constant: 0:97 0 (const uint) 0:97 direct index ( temp uint) 0:97 'dti' ( in 3-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 0 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 subgroupQuadSwapHorizontal ( temp 3-component vector of uint) 0:97 vector swizzle ( temp 3-component vector of uint) 0:97 u: direct index for structure ( temp 4-component vector of uint) 0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:97 Constant: 0:97 0 (const uint) 0:97 direct index ( temp uint) 0:97 'dti' ( in 3-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 0 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:99 move second child to first child ( temp 4-component vector of int) 0:99 i: direct index for structure ( temp 4-component vector of int) 0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:99 Constant: 0:99 0 (const uint) 0:99 direct index ( temp uint) 0:99 'dti' ( in 3-component vector of uint) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 subgroupQuadSwapHorizontal ( temp 4-component vector of int) 0:99 i: direct index for structure ( temp 4-component vector of int) 0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:99 Constant: 0:99 0 (const uint) 0:99 direct index ( temp uint) 0:99 'dti' ( in 3-component vector of uint) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:100 move second child to first child ( temp int) 0:100 direct index ( temp int) 0:100 i: direct index for structure ( temp 4-component vector of int) 0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:100 Constant: 0:100 0 (const uint) 0:100 direct index ( temp uint) 0:100 'dti' ( in 3-component vector of uint) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 subgroupQuadSwapHorizontal ( temp int) 0:100 direct index ( temp int) 0:100 i: direct index for structure ( temp 4-component vector of int) 0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:100 Constant: 0:100 0 (const uint) 0:100 direct index ( temp uint) 0:100 'dti' ( in 3-component vector of uint) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:101 move second child to first child ( temp 2-component vector of int) 0:101 vector swizzle ( temp 2-component vector of int) 0:101 i: direct index for structure ( temp 4-component vector of int) 0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:101 Constant: 0:101 0 (const uint) 0:101 direct index ( temp uint) 0:101 'dti' ( in 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 subgroupQuadSwapHorizontal ( temp 2-component vector of int) 0:101 vector swizzle ( temp 2-component vector of int) 0:101 i: direct index for structure ( temp 4-component vector of int) 0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:101 Constant: 0:101 0 (const uint) 0:101 direct index ( temp uint) 0:101 'dti' ( in 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 move second child to first child ( temp 3-component vector of int) 0:102 vector swizzle ( temp 3-component vector of int) 0:102 i: direct index for structure ( temp 4-component vector of int) 0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:102 Constant: 0:102 0 (const uint) 0:102 direct index ( temp uint) 0:102 'dti' ( in 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:102 subgroupQuadSwapHorizontal ( temp 3-component vector of int) 0:102 vector swizzle ( temp 3-component vector of int) 0:102 i: direct index for structure ( temp 4-component vector of int) 0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:102 Constant: 0:102 0 (const uint) 0:102 direct index ( temp uint) 0:102 'dti' ( in 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:104 move second child to first child ( temp 4-component vector of float) 0:104 f: direct index for structure ( temp 4-component vector of float) 0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:104 Constant: 0:104 0 (const uint) 0:104 direct index ( temp uint) 0:104 'dti' ( in 3-component vector of uint) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:104 subgroupQuadSwapHorizontal ( temp 4-component vector of float) 0:104 f: direct index for structure ( temp 4-component vector of float) 0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:104 Constant: 0:104 0 (const uint) 0:104 direct index ( temp uint) 0:104 'dti' ( in 3-component vector of uint) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 2 (const int) 0:105 move second child to first child ( temp float) 0:105 direct index ( temp float) 0:105 f: direct index for structure ( temp 4-component vector of float) 0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:105 Constant: 0:105 0 (const uint) 0:105 direct index ( temp uint) 0:105 'dti' ( in 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 subgroupQuadSwapHorizontal ( temp float) 0:105 direct index ( temp float) 0:105 f: direct index for structure ( temp 4-component vector of float) 0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:105 Constant: 0:105 0 (const uint) 0:105 direct index ( temp uint) 0:105 'dti' ( in 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 2 (const int) 0:105 Constant: 0:105 0 (const int) 0:106 move second child to first child ( temp 2-component vector of float) 0:106 vector swizzle ( temp 2-component vector of float) 0:106 f: direct index for structure ( temp 4-component vector of float) 0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:106 Constant: 0:106 0 (const uint) 0:106 direct index ( temp uint) 0:106 'dti' ( in 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 subgroupQuadSwapHorizontal ( temp 2-component vector of float) 0:106 vector swizzle ( temp 2-component vector of float) 0:106 f: direct index for structure ( temp 4-component vector of float) 0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:106 Constant: 0:106 0 (const uint) 0:106 direct index ( temp uint) 0:106 'dti' ( in 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 2 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:107 move second child to first child ( temp 3-component vector of float) 0:107 vector swizzle ( temp 3-component vector of float) 0:107 f: direct index for structure ( temp 4-component vector of float) 0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:107 Constant: 0:107 0 (const uint) 0:107 direct index ( temp uint) 0:107 'dti' ( in 3-component vector of uint) 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 2 (const int) 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:107 subgroupQuadSwapHorizontal ( temp 3-component vector of float) 0:107 vector swizzle ( temp 3-component vector of float) 0:107 f: direct index for structure ( temp 4-component vector of float) 0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:107 Constant: 0:107 0 (const uint) 0:107 direct index ( temp uint) 0:107 'dti' ( in 3-component vector of uint) 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 2 (const int) 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 move second child to first child ( temp 4-component vector of double) 0:109 d: direct index for structure ( temp 4-component vector of double) 0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:109 Constant: 0:109 0 (const uint) 0:109 direct index ( temp uint) 0:109 'dti' ( in 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 3 (const int) 0:109 subgroupQuadSwapHorizontal ( temp 4-component vector of double) 0:109 d: direct index for structure ( temp 4-component vector of double) 0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:109 Constant: 0:109 0 (const uint) 0:109 direct index ( temp uint) 0:109 'dti' ( in 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 3 (const int) 0:110 move second child to first child ( temp double) 0:110 direct index ( temp double) 0:110 d: direct index for structure ( temp 4-component vector of double) 0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:110 Constant: 0:110 0 (const uint) 0:110 direct index ( temp uint) 0:110 'dti' ( in 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 3 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 subgroupQuadSwapHorizontal ( temp double) 0:110 direct index ( temp double) 0:110 d: direct index for structure ( temp 4-component vector of double) 0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:110 Constant: 0:110 0 (const uint) 0:110 direct index ( temp uint) 0:110 'dti' ( in 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 3 (const int) 0:110 Constant: 0:110 0 (const int) 0:111 move second child to first child ( temp 2-component vector of double) 0:111 vector swizzle ( temp 2-component vector of double) 0:111 d: direct index for structure ( temp 4-component vector of double) 0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:111 Constant: 0:111 0 (const uint) 0:111 direct index ( temp uint) 0:111 'dti' ( in 3-component vector of uint) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 3 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 subgroupQuadSwapHorizontal ( temp 2-component vector of double) 0:111 vector swizzle ( temp 2-component vector of double) 0:111 d: direct index for structure ( temp 4-component vector of double) 0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:111 Constant: 0:111 0 (const uint) 0:111 direct index ( temp uint) 0:111 'dti' ( in 3-component vector of uint) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 3 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:112 move second child to first child ( temp 3-component vector of double) 0:112 vector swizzle ( temp 3-component vector of double) 0:112 d: direct index for structure ( temp 4-component vector of double) 0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:112 Constant: 0:112 0 (const uint) 0:112 direct index ( temp uint) 0:112 'dti' ( in 3-component vector of uint) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 3 (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:112 subgroupQuadSwapHorizontal ( temp 3-component vector of double) 0:112 vector swizzle ( temp 3-component vector of double) 0:112 d: direct index for structure ( temp 4-component vector of double) 0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:112 Constant: 0:112 0 (const uint) 0:112 direct index ( temp uint) 0:112 'dti' ( in 3-component vector of uint) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 3 (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 move second child to first child ( temp 4-component vector of uint) 0:114 u: direct index for structure ( temp 4-component vector of uint) 0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:114 Constant: 0:114 0 (const uint) 0:114 direct index ( temp uint) 0:114 'dti' ( in 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 subgroupQuadSwapVertical ( temp 4-component vector of uint) 0:114 u: direct index for structure ( temp 4-component vector of uint) 0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:114 Constant: 0:114 0 (const uint) 0:114 direct index ( temp uint) 0:114 'dti' ( in 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:115 move second child to first child ( temp uint) 0:115 direct index ( temp uint) 0:115 u: direct index for structure ( temp 4-component vector of uint) 0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:115 Constant: 0:115 0 (const uint) 0:115 direct index ( temp uint) 0:115 'dti' ( in 3-component vector of uint) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 subgroupQuadSwapVertical ( temp uint) 0:115 direct index ( temp uint) 0:115 u: direct index for structure ( temp 4-component vector of uint) 0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:115 Constant: 0:115 0 (const uint) 0:115 direct index ( temp uint) 0:115 'dti' ( in 3-component vector of uint) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:116 move second child to first child ( temp 2-component vector of uint) 0:116 vector swizzle ( temp 2-component vector of uint) 0:116 u: direct index for structure ( temp 4-component vector of uint) 0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:116 Constant: 0:116 0 (const uint) 0:116 direct index ( temp uint) 0:116 'dti' ( in 3-component vector of uint) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 subgroupQuadSwapVertical ( temp 2-component vector of uint) 0:116 vector swizzle ( temp 2-component vector of uint) 0:116 u: direct index for structure ( temp 4-component vector of uint) 0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:116 Constant: 0:116 0 (const uint) 0:116 direct index ( temp uint) 0:116 'dti' ( in 3-component vector of uint) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:117 move second child to first child ( temp 3-component vector of uint) 0:117 vector swizzle ( temp 3-component vector of uint) 0:117 u: direct index for structure ( temp 4-component vector of uint) 0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:117 Constant: 0:117 0 (const uint) 0:117 direct index ( temp uint) 0:117 'dti' ( in 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 subgroupQuadSwapVertical ( temp 3-component vector of uint) 0:117 vector swizzle ( temp 3-component vector of uint) 0:117 u: direct index for structure ( temp 4-component vector of uint) 0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:117 Constant: 0:117 0 (const uint) 0:117 direct index ( temp uint) 0:117 'dti' ( in 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:119 move second child to first child ( temp 4-component vector of int) 0:119 i: direct index for structure ( temp 4-component vector of int) 0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:119 Constant: 0:119 0 (const uint) 0:119 direct index ( temp uint) 0:119 'dti' ( in 3-component vector of uint) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 subgroupQuadSwapVertical ( temp 4-component vector of int) 0:119 i: direct index for structure ( temp 4-component vector of int) 0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:119 Constant: 0:119 0 (const uint) 0:119 direct index ( temp uint) 0:119 'dti' ( in 3-component vector of uint) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:120 move second child to first child ( temp int) 0:120 direct index ( temp int) 0:120 i: direct index for structure ( temp 4-component vector of int) 0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:120 Constant: 0:120 0 (const uint) 0:120 direct index ( temp uint) 0:120 'dti' ( in 3-component vector of uint) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 subgroupQuadSwapVertical ( temp int) 0:120 direct index ( temp int) 0:120 i: direct index for structure ( temp 4-component vector of int) 0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:120 Constant: 0:120 0 (const uint) 0:120 direct index ( temp uint) 0:120 'dti' ( in 3-component vector of uint) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 0 (const int) 0:121 move second child to first child ( temp 2-component vector of int) 0:121 vector swizzle ( temp 2-component vector of int) 0:121 i: direct index for structure ( temp 4-component vector of int) 0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:121 Constant: 0:121 0 (const uint) 0:121 direct index ( temp uint) 0:121 'dti' ( in 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 subgroupQuadSwapVertical ( temp 2-component vector of int) 0:121 vector swizzle ( temp 2-component vector of int) 0:121 i: direct index for structure ( temp 4-component vector of int) 0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:121 Constant: 0:121 0 (const uint) 0:121 direct index ( temp uint) 0:121 'dti' ( in 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:122 move second child to first child ( temp 3-component vector of int) 0:122 vector swizzle ( temp 3-component vector of int) 0:122 i: direct index for structure ( temp 4-component vector of int) 0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:122 Constant: 0:122 0 (const uint) 0:122 direct index ( temp uint) 0:122 'dti' ( in 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 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 subgroupQuadSwapVertical ( temp 3-component vector of int) 0:122 vector swizzle ( temp 3-component vector of int) 0:122 i: direct index for structure ( temp 4-component vector of int) 0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:122 Constant: 0:122 0 (const uint) 0:122 direct index ( temp uint) 0:122 'dti' ( in 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 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:124 move second child to first child ( temp 4-component vector of float) 0:124 f: direct index for structure ( temp 4-component vector of float) 0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:124 Constant: 0:124 0 (const uint) 0:124 direct index ( temp uint) 0:124 'dti' ( in 3-component vector of uint) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 2 (const int) 0:124 subgroupQuadSwapVertical ( temp 4-component vector of float) 0:124 f: direct index for structure ( temp 4-component vector of float) 0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:124 Constant: 0:124 0 (const uint) 0:124 direct index ( temp uint) 0:124 'dti' ( in 3-component vector of uint) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 2 (const int) 0:125 move second child to first child ( temp float) 0:125 direct index ( temp float) 0:125 f: direct index for structure ( temp 4-component vector of float) 0:125 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:125 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:125 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:125 Constant: 0:125 0 (const uint) 0:125 direct index ( temp uint) 0:125 'dti' ( in 3-component vector of uint) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 0 (const int) 0:125 subgroupQuadSwapVertical ( temp float) 0:125 direct index ( temp float) 0:125 f: direct index for structure ( temp 4-component vector of float) 0:125 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:125 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:125 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:125 Constant: 0:125 0 (const uint) 0:125 direct index ( temp uint) 0:125 'dti' ( in 3-component vector of uint) 0:125 Constant: 0:125 0 (const int) 0:125 Constant: 0:125 2 (const int) 0:125 Constant: 0:125 0 (const int) 0:126 move second child to first child ( temp 2-component vector of float) 0:126 vector swizzle ( temp 2-component vector of float) 0:126 f: direct index for structure ( temp 4-component vector of float) 0:126 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:126 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:126 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:126 Constant: 0:126 0 (const uint) 0:126 direct index ( temp uint) 0:126 'dti' ( in 3-component vector of uint) 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:126 subgroupQuadSwapVertical ( temp 2-component vector of float) 0:126 vector swizzle ( temp 2-component vector of float) 0:126 f: direct index for structure ( temp 4-component vector of float) 0:126 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:126 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:126 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:126 Constant: 0:126 0 (const uint) 0:126 direct index ( temp uint) 0:126 'dti' ( in 3-component vector of uint) 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 2 (const int) 0:126 Sequence 0:126 Constant: 0:126 0 (const int) 0:126 Constant: 0:126 1 (const int) 0:127 move second child to first child ( temp 3-component vector of float) 0:127 vector swizzle ( temp 3-component vector of float) 0:127 f: direct index for structure ( temp 4-component vector of float) 0:127 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:127 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:127 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:127 Constant: 0:127 0 (const uint) 0:127 direct index ( temp uint) 0:127 'dti' ( in 3-component vector of uint) 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 subgroupQuadSwapVertical ( temp 3-component vector of float) 0:127 vector swizzle ( temp 3-component vector of float) 0:127 f: direct index for structure ( temp 4-component vector of float) 0:127 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:127 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:127 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:127 Constant: 0:127 0 (const uint) 0:127 direct index ( temp uint) 0:127 'dti' ( in 3-component vector of uint) 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 2 (const int) 0:127 Sequence 0:127 Constant: 0:127 0 (const int) 0:127 Constant: 0:127 1 (const int) 0:127 Constant: 0:127 2 (const int) 0:129 move second child to first child ( temp 4-component vector of double) 0:129 d: direct index for structure ( temp 4-component vector of double) 0:129 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:129 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:129 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:129 Constant: 0:129 0 (const uint) 0:129 direct index ( temp uint) 0:129 'dti' ( in 3-component vector of uint) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 3 (const int) 0:129 subgroupQuadSwapVertical ( temp 4-component vector of double) 0:129 d: direct index for structure ( temp 4-component vector of double) 0:129 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:129 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:129 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:129 Constant: 0:129 0 (const uint) 0:129 direct index ( temp uint) 0:129 'dti' ( in 3-component vector of uint) 0:129 Constant: 0:129 0 (const int) 0:129 Constant: 0:129 3 (const int) 0:130 move second child to first child ( temp double) 0:130 direct index ( temp double) 0:130 d: direct index for structure ( temp 4-component vector of double) 0:130 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:130 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:130 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:130 Constant: 0:130 0 (const uint) 0:130 direct index ( temp uint) 0:130 'dti' ( in 3-component vector of uint) 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 3 (const int) 0:130 Constant: 0:130 0 (const int) 0:130 subgroupQuadSwapVertical ( temp double) 0:130 direct index ( temp double) 0:130 d: direct index for structure ( temp 4-component vector of double) 0:130 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:130 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:130 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:130 Constant: 0:130 0 (const uint) 0:130 direct index ( temp uint) 0:130 'dti' ( in 3-component vector of uint) 0:130 Constant: 0:130 0 (const int) 0:130 Constant: 0:130 3 (const int) 0:130 Constant: 0:130 0 (const int) 0:131 move second child to first child ( temp 2-component vector of double) 0:131 vector swizzle ( temp 2-component vector of double) 0:131 d: direct index for structure ( temp 4-component vector of double) 0:131 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:131 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:131 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:131 Constant: 0:131 0 (const uint) 0:131 direct index ( temp uint) 0:131 'dti' ( in 3-component vector of uint) 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 3 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:131 subgroupQuadSwapVertical ( temp 2-component vector of double) 0:131 vector swizzle ( temp 2-component vector of double) 0:131 d: direct index for structure ( temp 4-component vector of double) 0:131 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:131 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:131 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:131 Constant: 0:131 0 (const uint) 0:131 direct index ( temp uint) 0:131 'dti' ( in 3-component vector of uint) 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 3 (const int) 0:131 Sequence 0:131 Constant: 0:131 0 (const int) 0:131 Constant: 0:131 1 (const int) 0:132 move second child to first child ( temp 3-component vector of double) 0:132 vector swizzle ( temp 3-component vector of double) 0:132 d: direct index for structure ( temp 4-component vector of double) 0:132 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:132 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:132 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:132 Constant: 0:132 0 (const uint) 0:132 direct index ( temp uint) 0:132 'dti' ( in 3-component vector of uint) 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 3 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:132 subgroupQuadSwapVertical ( temp 3-component vector of double) 0:132 vector swizzle ( temp 3-component vector of double) 0:132 d: direct index for structure ( temp 4-component vector of double) 0:132 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:132 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:132 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:132 Constant: 0:132 0 (const uint) 0:132 direct index ( temp uint) 0:132 'dti' ( in 3-component vector of uint) 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 3 (const int) 0:132 Sequence 0:132 Constant: 0:132 0 (const int) 0:132 Constant: 0:132 1 (const int) 0:132 Constant: 0:132 2 (const int) 0:134 move second child to first child ( temp 4-component vector of uint) 0:134 u: direct index for structure ( temp 4-component vector of uint) 0:134 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:134 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:134 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:134 Constant: 0:134 0 (const uint) 0:134 direct index ( temp uint) 0:134 'dti' ( in 3-component vector of uint) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 0 (const int) 0:134 subgroupQuadSwapDiagonal ( temp 4-component vector of uint) 0:134 u: direct index for structure ( temp 4-component vector of uint) 0:134 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:134 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:134 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:134 Constant: 0:134 0 (const uint) 0:134 direct index ( temp uint) 0:134 'dti' ( in 3-component vector of uint) 0:134 Constant: 0:134 0 (const int) 0:134 Constant: 0:134 0 (const int) 0:135 move second child to first child ( temp uint) 0:135 direct index ( temp uint) 0:135 u: direct index for structure ( temp 4-component vector of uint) 0:135 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:135 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:135 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:135 Constant: 0:135 0 (const uint) 0:135 direct index ( temp uint) 0:135 'dti' ( in 3-component vector of uint) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 subgroupQuadSwapDiagonal ( temp uint) 0:135 direct index ( temp uint) 0:135 u: direct index for structure ( temp 4-component vector of uint) 0:135 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:135 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:135 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:135 Constant: 0:135 0 (const uint) 0:135 direct index ( temp uint) 0:135 'dti' ( in 3-component vector of uint) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 0 (const int) 0:135 Constant: 0:135 0 (const int) 0:136 move second child to first child ( temp 2-component vector of uint) 0:136 vector swizzle ( temp 2-component vector of uint) 0:136 u: direct index for structure ( temp 4-component vector of uint) 0:136 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:136 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:136 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:136 Constant: 0:136 0 (const uint) 0:136 direct index ( temp uint) 0:136 'dti' ( in 3-component vector of uint) 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:136 subgroupQuadSwapDiagonal ( temp 2-component vector of uint) 0:136 vector swizzle ( temp 2-component vector of uint) 0:136 u: direct index for structure ( temp 4-component vector of uint) 0:136 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:136 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:136 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:136 Constant: 0:136 0 (const uint) 0:136 direct index ( temp uint) 0:136 'dti' ( in 3-component vector of uint) 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 0 (const int) 0:136 Sequence 0:136 Constant: 0:136 0 (const int) 0:136 Constant: 0:136 1 (const int) 0:137 move second child to first child ( temp 3-component vector of uint) 0:137 vector swizzle ( temp 3-component vector of uint) 0:137 u: direct index for structure ( temp 4-component vector of uint) 0:137 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:137 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:137 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:137 Constant: 0:137 0 (const uint) 0:137 direct index ( temp uint) 0:137 'dti' ( in 3-component vector of uint) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 0 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 2 (const int) 0:137 subgroupQuadSwapDiagonal ( temp 3-component vector of uint) 0:137 vector swizzle ( temp 3-component vector of uint) 0:137 u: direct index for structure ( temp 4-component vector of uint) 0:137 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:137 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:137 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:137 Constant: 0:137 0 (const uint) 0:137 direct index ( temp uint) 0:137 'dti' ( in 3-component vector of uint) 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 0 (const int) 0:137 Sequence 0:137 Constant: 0:137 0 (const int) 0:137 Constant: 0:137 1 (const int) 0:137 Constant: 0:137 2 (const int) 0:139 move second child to first child ( temp 4-component vector of int) 0:139 i: direct index for structure ( temp 4-component vector of int) 0:139 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:139 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:139 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:139 Constant: 0:139 0 (const uint) 0:139 direct index ( temp uint) 0:139 'dti' ( in 3-component vector of uint) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:139 subgroupQuadSwapDiagonal ( temp 4-component vector of int) 0:139 i: direct index for structure ( temp 4-component vector of int) 0:139 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:139 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:139 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:139 Constant: 0:139 0 (const uint) 0:139 direct index ( temp uint) 0:139 'dti' ( in 3-component vector of uint) 0:139 Constant: 0:139 0 (const int) 0:139 Constant: 0:139 1 (const int) 0:140 move second child to first child ( temp int) 0:140 direct index ( temp int) 0:140 i: direct index for structure ( temp 4-component vector of int) 0:140 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:140 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:140 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:140 Constant: 0:140 0 (const uint) 0:140 direct index ( temp uint) 0:140 'dti' ( in 3-component vector of uint) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:140 subgroupQuadSwapDiagonal ( temp int) 0:140 direct index ( temp int) 0:140 i: direct index for structure ( temp 4-component vector of int) 0:140 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:140 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:140 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:140 Constant: 0:140 0 (const uint) 0:140 direct index ( temp uint) 0:140 'dti' ( in 3-component vector of uint) 0:140 Constant: 0:140 0 (const int) 0:140 Constant: 0:140 1 (const int) 0:140 Constant: 0:140 0 (const int) 0:141 move second child to first child ( temp 2-component vector of int) 0:141 vector swizzle ( temp 2-component vector of int) 0:141 i: direct index for structure ( temp 4-component vector of int) 0:141 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:141 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:141 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:141 Constant: 0:141 0 (const uint) 0:141 direct index ( temp uint) 0:141 'dti' ( in 3-component vector of uint) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 subgroupQuadSwapDiagonal ( temp 2-component vector of int) 0:141 vector swizzle ( temp 2-component vector of int) 0:141 i: direct index for structure ( temp 4-component vector of int) 0:141 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:141 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:141 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:141 Constant: 0:141 0 (const uint) 0:141 direct index ( temp uint) 0:141 'dti' ( in 3-component vector of uint) 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:141 Sequence 0:141 Constant: 0:141 0 (const int) 0:141 Constant: 0:141 1 (const int) 0:142 move second child to first child ( temp 3-component vector of int) 0:142 vector swizzle ( temp 3-component vector of int) 0:142 i: direct index for structure ( temp 4-component vector of int) 0:142 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:142 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:142 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:142 Constant: 0:142 0 (const uint) 0:142 direct index ( temp uint) 0:142 'dti' ( in 3-component vector of uint) 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 2 (const int) 0:142 subgroupQuadSwapDiagonal ( temp 3-component vector of int) 0:142 vector swizzle ( temp 3-component vector of int) 0:142 i: direct index for structure ( temp 4-component vector of int) 0:142 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:142 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:142 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:142 Constant: 0:142 0 (const uint) 0:142 direct index ( temp uint) 0:142 'dti' ( in 3-component vector of uint) 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Sequence 0:142 Constant: 0:142 0 (const int) 0:142 Constant: 0:142 1 (const int) 0:142 Constant: 0:142 2 (const int) 0:144 move second child to first child ( temp 4-component vector of float) 0:144 f: direct index for structure ( temp 4-component vector of float) 0:144 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:144 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:144 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:144 Constant: 0:144 0 (const uint) 0:144 direct index ( temp uint) 0:144 'dti' ( in 3-component vector of uint) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 2 (const int) 0:144 subgroupQuadSwapDiagonal ( temp 4-component vector of float) 0:144 f: direct index for structure ( temp 4-component vector of float) 0:144 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:144 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:144 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:144 Constant: 0:144 0 (const uint) 0:144 direct index ( temp uint) 0:144 'dti' ( in 3-component vector of uint) 0:144 Constant: 0:144 0 (const int) 0:144 Constant: 0:144 2 (const int) 0:145 move second child to first child ( temp float) 0:145 direct index ( temp float) 0:145 f: direct index for structure ( temp 4-component vector of float) 0:145 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:145 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:145 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:145 Constant: 0:145 0 (const uint) 0:145 direct index ( temp uint) 0:145 'dti' ( in 3-component vector of uint) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 2 (const int) 0:145 Constant: 0:145 0 (const int) 0:145 subgroupQuadSwapDiagonal ( temp float) 0:145 direct index ( temp float) 0:145 f: direct index for structure ( temp 4-component vector of float) 0:145 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:145 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:145 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:145 Constant: 0:145 0 (const uint) 0:145 direct index ( temp uint) 0:145 'dti' ( in 3-component vector of uint) 0:145 Constant: 0:145 0 (const int) 0:145 Constant: 0:145 2 (const int) 0:145 Constant: 0:145 0 (const int) 0:146 move second child to first child ( temp 2-component vector of float) 0:146 vector swizzle ( temp 2-component vector of float) 0:146 f: direct index for structure ( temp 4-component vector of float) 0:146 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:146 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:146 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:146 Constant: 0:146 0 (const uint) 0:146 direct index ( temp uint) 0:146 'dti' ( in 3-component vector of uint) 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 2 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:146 subgroupQuadSwapDiagonal ( temp 2-component vector of float) 0:146 vector swizzle ( temp 2-component vector of float) 0:146 f: direct index for structure ( temp 4-component vector of float) 0:146 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:146 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:146 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:146 Constant: 0:146 0 (const uint) 0:146 direct index ( temp uint) 0:146 'dti' ( in 3-component vector of uint) 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 2 (const int) 0:146 Sequence 0:146 Constant: 0:146 0 (const int) 0:146 Constant: 0:146 1 (const int) 0:147 move second child to first child ( temp 3-component vector of float) 0:147 vector swizzle ( temp 3-component vector of float) 0:147 f: direct index for structure ( temp 4-component vector of float) 0:147 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:147 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:147 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:147 Constant: 0:147 0 (const uint) 0:147 direct index ( temp uint) 0:147 'dti' ( in 3-component vector of uint) 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 subgroupQuadSwapDiagonal ( temp 3-component vector of float) 0:147 vector swizzle ( temp 3-component vector of float) 0:147 f: direct index for structure ( temp 4-component vector of float) 0:147 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:147 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:147 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:147 Constant: 0:147 0 (const uint) 0:147 direct index ( temp uint) 0:147 'dti' ( in 3-component vector of uint) 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 2 (const int) 0:147 Sequence 0:147 Constant: 0:147 0 (const int) 0:147 Constant: 0:147 1 (const int) 0:147 Constant: 0:147 2 (const int) 0:149 move second child to first child ( temp 4-component vector of double) 0:149 d: direct index for structure ( temp 4-component vector of double) 0:149 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:149 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:149 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:149 Constant: 0:149 0 (const uint) 0:149 direct index ( temp uint) 0:149 'dti' ( in 3-component vector of uint) 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 3 (const int) 0:149 subgroupQuadSwapDiagonal ( temp 4-component vector of double) 0:149 d: direct index for structure ( temp 4-component vector of double) 0:149 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:149 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:149 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:149 Constant: 0:149 0 (const uint) 0:149 direct index ( temp uint) 0:149 'dti' ( in 3-component vector of uint) 0:149 Constant: 0:149 0 (const int) 0:149 Constant: 0:149 3 (const int) 0:150 move second child to first child ( temp double) 0:150 direct index ( temp double) 0:150 d: direct index for structure ( temp 4-component vector of double) 0:150 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:150 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:150 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:150 Constant: 0:150 0 (const uint) 0:150 direct index ( temp uint) 0:150 'dti' ( in 3-component vector of uint) 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 3 (const int) 0:150 Constant: 0:150 0 (const int) 0:150 subgroupQuadSwapDiagonal ( temp double) 0:150 direct index ( temp double) 0:150 d: direct index for structure ( temp 4-component vector of double) 0:150 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:150 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:150 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:150 Constant: 0:150 0 (const uint) 0:150 direct index ( temp uint) 0:150 'dti' ( in 3-component vector of uint) 0:150 Constant: 0:150 0 (const int) 0:150 Constant: 0:150 3 (const int) 0:150 Constant: 0:150 0 (const int) 0:151 move second child to first child ( temp 2-component vector of double) 0:151 vector swizzle ( temp 2-component vector of double) 0:151 d: direct index for structure ( temp 4-component vector of double) 0:151 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:151 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:151 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:151 Constant: 0:151 0 (const uint) 0:151 direct index ( temp uint) 0:151 'dti' ( in 3-component vector of uint) 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 3 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:151 subgroupQuadSwapDiagonal ( temp 2-component vector of double) 0:151 vector swizzle ( temp 2-component vector of double) 0:151 d: direct index for structure ( temp 4-component vector of double) 0:151 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:151 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:151 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:151 Constant: 0:151 0 (const uint) 0:151 direct index ( temp uint) 0:151 'dti' ( in 3-component vector of uint) 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 3 (const int) 0:151 Sequence 0:151 Constant: 0:151 0 (const int) 0:151 Constant: 0:151 1 (const int) 0:152 move second child to first child ( temp 3-component vector of double) 0:152 vector swizzle ( temp 3-component vector of double) 0:152 d: direct index for structure ( temp 4-component vector of double) 0:152 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:152 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:152 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:152 Constant: 0:152 0 (const uint) 0:152 direct index ( temp uint) 0:152 'dti' ( in 3-component vector of uint) 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 3 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 2 (const int) 0:152 subgroupQuadSwapDiagonal ( temp 3-component vector of double) 0:152 vector swizzle ( temp 3-component vector of double) 0:152 d: direct index for structure ( temp 4-component vector of double) 0:152 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:152 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:152 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:152 Constant: 0:152 0 (const uint) 0:152 direct index ( temp uint) 0:152 'dti' ( in 3-component vector of uint) 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 3 (const int) 0:152 Sequence 0:152 Constant: 0:152 0 (const int) 0:152 Constant: 0:152 1 (const int) 0:152 Constant: 0:152 2 (const int) 0:13 Function Definition: CSMain( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 1232 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformQuad 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "CSMain" 1227 ExecutionMode 4 LocalSize 32 16 1 Source HLSL 500 Name 4 "CSMain" Name 11 "@CSMain(vu3;" Name 10 "dti" Name 20 "Types" MemberName 20(Types) 0 "u" MemberName 20(Types) 1 "i" MemberName 20(Types) 2 "f" MemberName 20(Types) 3 "d" Name 22 "data" MemberName 22(data) 0 "@data" Name 24 "data" Name 1225 "dti" Name 1227 "dti" Name 1229 "param" MemberDecorate 20(Types) 0 Offset 0 MemberDecorate 20(Types) 1 Offset 16 MemberDecorate 20(Types) 2 Offset 32 MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 Decorate 22(data) Block MemberDecorate 22(data) 0 Offset 0 Decorate 24(data) Binding 0 Decorate 24(data) DescriptorSet 0 Decorate 1227(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeVector 6(int) 4 14: TypeInt 32 1 15: TypeVector 14(int) 4 16: TypeFloat 32 17: TypeVector 16(float) 4 18: TypeFloat 64 19: TypeVector 18(float64_t) 4 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4) 21: TypeRuntimeArray 20(Types) 22(data): TypeStruct 21 23: TypePointer StorageBuffer 22(data) 24(data): 23(ptr) Variable StorageBuffer 25: 14(int) Constant 0 26: 6(int) Constant 0 27: TypePointer Function 6(int) 32: TypePointer StorageBuffer 13(ivec4) 35: 6(int) Constant 3 42: TypePointer StorageBuffer 6(int) 51: TypeVector 6(int) 2 58: 6(int) Constant 1 73: 6(int) Constant 2 78: 14(int) Constant 1 81: TypePointer StorageBuffer 15(ivec4) 90: TypePointer StorageBuffer 14(int) 99: TypeVector 14(int) 2 112: TypeVector 14(int) 3 125: 14(int) Constant 2 128: TypePointer StorageBuffer 17(fvec4) 137: TypePointer StorageBuffer 16(float) 146: TypeVector 16(float) 2 159: TypeVector 16(float) 3 172: 14(int) Constant 3 175: TypePointer StorageBuffer 19(f64vec4) 184: TypePointer StorageBuffer 18(float64_t) 193: TypeVector 18(float64_t) 2 206: TypeVector 18(float64_t) 3 1226: TypePointer Input 7(ivec3) 1227(dti): 1226(ptr) Variable Input 4(CSMain): 2 Function None 3 5: Label 1225(dti): 8(ptr) Variable Function 1229(param): 8(ptr) Variable Function 1228: 7(ivec3) Load 1227(dti) Store 1225(dti) 1228 1230: 7(ivec3) Load 1225(dti) Store 1229(param) 1230 1231: 2 FunctionCall 11(@CSMain(vu3;) 1229(param) Return FunctionEnd 11(@CSMain(vu3;): 2 Function None 9 10(dti): 8(ptr) FunctionParameter 12: Label 28: 27(ptr) AccessChain 10(dti) 26 29: 6(int) Load 28 30: 27(ptr) AccessChain 10(dti) 26 31: 6(int) Load 30 33: 32(ptr) AccessChain 24(data) 25 31 25 34: 13(ivec4) Load 33 36: 13(ivec4) GroupNonUniformQuadBroadcast 35 34 26 37: 32(ptr) AccessChain 24(data) 25 29 25 Store 37 36 38: 27(ptr) AccessChain 10(dti) 26 39: 6(int) Load 38 40: 27(ptr) AccessChain 10(dti) 26 41: 6(int) Load 40 43: 42(ptr) AccessChain 24(data) 25 41 25 26 44: 6(int) Load 43 45: 6(int) GroupNonUniformQuadBroadcast 35 44 26 46: 42(ptr) AccessChain 24(data) 25 39 25 26 Store 46 45 47: 27(ptr) AccessChain 10(dti) 26 48: 6(int) Load 47 49: 27(ptr) AccessChain 10(dti) 26 50: 6(int) Load 49 52: 32(ptr) AccessChain 24(data) 25 50 25 53: 13(ivec4) Load 52 54: 51(ivec2) VectorShuffle 53 53 0 1 55: 51(ivec2) GroupNonUniformQuadBroadcast 35 54 26 56: 42(ptr) AccessChain 24(data) 25 48 25 26 57: 6(int) CompositeExtract 55 0 Store 56 57 59: 42(ptr) AccessChain 24(data) 25 48 25 58 60: 6(int) CompositeExtract 55 1 Store 59 60 61: 27(ptr) AccessChain 10(dti) 26 62: 6(int) Load 61 63: 27(ptr) AccessChain 10(dti) 26 64: 6(int) Load 63 65: 32(ptr) AccessChain 24(data) 25 64 25 66: 13(ivec4) Load 65 67: 7(ivec3) VectorShuffle 66 66 0 1 2 68: 7(ivec3) GroupNonUniformQuadBroadcast 35 67 26 69: 42(ptr) AccessChain 24(data) 25 62 25 26 70: 6(int) CompositeExtract 68 0 Store 69 70 71: 42(ptr) AccessChain 24(data) 25 62 25 58 72: 6(int) CompositeExtract 68 1 Store 71 72 74: 42(ptr) AccessChain 24(data) 25 62 25 73 75: 6(int) CompositeExtract 68 2 Store 74 75 76: 27(ptr) AccessChain 10(dti) 26 77: 6(int) Load 76 79: 27(ptr) AccessChain 10(dti) 26 80: 6(int) Load 79 82: 81(ptr) AccessChain 24(data) 25 80 78 83: 15(ivec4) Load 82 84: 15(ivec4) GroupNonUniformQuadBroadcast 35 83 26 85: 81(ptr) AccessChain 24(data) 25 77 78 Store 85 84 86: 27(ptr) AccessChain 10(dti) 26 87: 6(int) Load 86 88: 27(ptr) AccessChain 10(dti) 26 89: 6(int) Load 88 91: 90(ptr) AccessChain 24(data) 25 89 78 26 92: 14(int) Load 91 93: 14(int) GroupNonUniformQuadBroadcast 35 92 26 94: 90(ptr) AccessChain 24(data) 25 87 78 26 Store 94 93 95: 27(ptr) AccessChain 10(dti) 26 96: 6(int) Load 95 97: 27(ptr) AccessChain 10(dti) 26 98: 6(int) Load 97 100: 81(ptr) AccessChain 24(data) 25 98 78 101: 15(ivec4) Load 100 102: 99(ivec2) VectorShuffle 101 101 0 1 103: 99(ivec2) GroupNonUniformQuadBroadcast 35 102 26 104: 90(ptr) AccessChain 24(data) 25 96 78 26 105: 14(int) CompositeExtract 103 0 Store 104 105 106: 90(ptr) AccessChain 24(data) 25 96 78 58 107: 14(int) CompositeExtract 103 1 Store 106 107 108: 27(ptr) AccessChain 10(dti) 26 109: 6(int) Load 108 110: 27(ptr) AccessChain 10(dti) 26 111: 6(int) Load 110 113: 81(ptr) AccessChain 24(data) 25 111 78 114: 15(ivec4) Load 113 115: 112(ivec3) VectorShuffle 114 114 0 1 2 116: 112(ivec3) GroupNonUniformQuadBroadcast 35 115 26 117: 90(ptr) AccessChain 24(data) 25 109 78 26 118: 14(int) CompositeExtract 116 0 Store 117 118 119: 90(ptr) AccessChain 24(data) 25 109 78 58 120: 14(int) CompositeExtract 116 1 Store 119 120 121: 90(ptr) AccessChain 24(data) 25 109 78 73 122: 14(int) CompositeExtract 116 2 Store 121 122 123: 27(ptr) AccessChain 10(dti) 26 124: 6(int) Load 123 126: 27(ptr) AccessChain 10(dti) 26 127: 6(int) Load 126 129: 128(ptr) AccessChain 24(data) 25 127 125 130: 17(fvec4) Load 129 131: 17(fvec4) GroupNonUniformQuadBroadcast 35 130 26 132: 128(ptr) AccessChain 24(data) 25 124 125 Store 132 131 133: 27(ptr) AccessChain 10(dti) 26 134: 6(int) Load 133 135: 27(ptr) AccessChain 10(dti) 26 136: 6(int) Load 135 138: 137(ptr) AccessChain 24(data) 25 136 125 26 139: 16(float) Load 138 140: 16(float) GroupNonUniformQuadBroadcast 35 139 26 141: 137(ptr) AccessChain 24(data) 25 134 125 26 Store 141 140 142: 27(ptr) AccessChain 10(dti) 26 143: 6(int) Load 142 144: 27(ptr) AccessChain 10(dti) 26 145: 6(int) Load 144 147: 128(ptr) AccessChain 24(data) 25 145 125 148: 17(fvec4) Load 147 149: 146(fvec2) VectorShuffle 148 148 0 1 150: 146(fvec2) GroupNonUniformQuadBroadcast 35 149 26 151: 137(ptr) AccessChain 24(data) 25 143 125 26 152: 16(float) CompositeExtract 150 0 Store 151 152 153: 137(ptr) AccessChain 24(data) 25 143 125 58 154: 16(float) CompositeExtract 150 1 Store 153 154 155: 27(ptr) AccessChain 10(dti) 26 156: 6(int) Load 155 157: 27(ptr) AccessChain 10(dti) 26 158: 6(int) Load 157 160: 128(ptr) AccessChain 24(data) 25 158 125 161: 17(fvec4) Load 160 162: 159(fvec3) VectorShuffle 161 161 0 1 2 163: 159(fvec3) GroupNonUniformQuadBroadcast 35 162 26 164: 137(ptr) AccessChain 24(data) 25 156 125 26 165: 16(float) CompositeExtract 163 0 Store 164 165 166: 137(ptr) AccessChain 24(data) 25 156 125 58 167: 16(float) CompositeExtract 163 1 Store 166 167 168: 137(ptr) AccessChain 24(data) 25 156 125 73 169: 16(float) CompositeExtract 163 2 Store 168 169 170: 27(ptr) AccessChain 10(dti) 26 171: 6(int) Load 170 173: 27(ptr) AccessChain 10(dti) 26 174: 6(int) Load 173 176: 175(ptr) AccessChain 24(data) 25 174 172 177: 19(f64vec4) Load 176 178: 19(f64vec4) GroupNonUniformQuadBroadcast 35 177 26 179: 175(ptr) AccessChain 24(data) 25 171 172 Store 179 178 180: 27(ptr) AccessChain 10(dti) 26 181: 6(int) Load 180 182: 27(ptr) AccessChain 10(dti) 26 183: 6(int) Load 182 185: 184(ptr) AccessChain 24(data) 25 183 172 26 186:18(float64_t) Load 185 187:18(float64_t) GroupNonUniformQuadBroadcast 35 186 26 188: 184(ptr) AccessChain 24(data) 25 181 172 26 Store 188 187 189: 27(ptr) AccessChain 10(dti) 26 190: 6(int) Load 189 191: 27(ptr) AccessChain 10(dti) 26 192: 6(int) Load 191 194: 175(ptr) AccessChain 24(data) 25 192 172 195: 19(f64vec4) Load 194 196:193(f64vec2) VectorShuffle 195 195 0 1 197:193(f64vec2) GroupNonUniformQuadBroadcast 35 196 26 198: 184(ptr) AccessChain 24(data) 25 190 172 26 199:18(float64_t) CompositeExtract 197 0 Store 198 199 200: 184(ptr) AccessChain 24(data) 25 190 172 58 201:18(float64_t) CompositeExtract 197 1 Store 200 201 202: 27(ptr) AccessChain 10(dti) 26 203: 6(int) Load 202 204: 27(ptr) AccessChain 10(dti) 26 205: 6(int) Load 204 207: 175(ptr) AccessChain 24(data) 25 205 172 208: 19(f64vec4) Load 207 209:206(f64vec3) VectorShuffle 208 208 0 1 2 210:206(f64vec3) GroupNonUniformQuadBroadcast 35 209 26 211: 184(ptr) AccessChain 24(data) 25 203 172 26 212:18(float64_t) CompositeExtract 210 0 Store 211 212 213: 184(ptr) AccessChain 24(data) 25 203 172 58 214:18(float64_t) CompositeExtract 210 1 Store 213 214 215: 184(ptr) AccessChain 24(data) 25 203 172 73 216:18(float64_t) CompositeExtract 210 2 Store 215 216 217: 27(ptr) AccessChain 10(dti) 26 218: 6(int) Load 217 219: 27(ptr) AccessChain 10(dti) 26 220: 6(int) Load 219 221: 32(ptr) AccessChain 24(data) 25 220 25 222: 13(ivec4) Load 221 223: 13(ivec4) GroupNonUniformQuadBroadcast 35 222 58 224: 32(ptr) AccessChain 24(data) 25 218 25 Store 224 223 225: 27(ptr) AccessChain 10(dti) 26 226: 6(int) Load 225 227: 27(ptr) AccessChain 10(dti) 26 228: 6(int) Load 227 229: 42(ptr) AccessChain 24(data) 25 228 25 26 230: 6(int) Load 229 231: 6(int) GroupNonUniformQuadBroadcast 35 230 58 232: 42(ptr) AccessChain 24(data) 25 226 25 26 Store 232 231 233: 27(ptr) AccessChain 10(dti) 26 234: 6(int) Load 233 235: 27(ptr) AccessChain 10(dti) 26 236: 6(int) Load 235 237: 32(ptr) AccessChain 24(data) 25 236 25 238: 13(ivec4) Load 237 239: 51(ivec2) VectorShuffle 238 238 0 1 240: 51(ivec2) GroupNonUniformQuadBroadcast 35 239 58 241: 42(ptr) AccessChain 24(data) 25 234 25 26 242: 6(int) CompositeExtract 240 0 Store 241 242 243: 42(ptr) AccessChain 24(data) 25 234 25 58 244: 6(int) CompositeExtract 240 1 Store 243 244 245: 27(ptr) AccessChain 10(dti) 26 246: 6(int) Load 245 247: 27(ptr) AccessChain 10(dti) 26 248: 6(int) Load 247 249: 32(ptr) AccessChain 24(data) 25 248 25 250: 13(ivec4) Load 249 251: 7(ivec3) VectorShuffle 250 250 0 1 2 252: 7(ivec3) GroupNonUniformQuadBroadcast 35 251 58 253: 42(ptr) AccessChain 24(data) 25 246 25 26 254: 6(int) CompositeExtract 252 0 Store 253 254 255: 42(ptr) AccessChain 24(data) 25 246 25 58 256: 6(int) CompositeExtract 252 1 Store 255 256 257: 42(ptr) AccessChain 24(data) 25 246 25 73 258: 6(int) CompositeExtract 252 2 Store 257 258 259: 27(ptr) AccessChain 10(dti) 26 260: 6(int) Load 259 261: 27(ptr) AccessChain 10(dti) 26 262: 6(int) Load 261 263: 81(ptr) AccessChain 24(data) 25 262 78 264: 15(ivec4) Load 263 265: 15(ivec4) GroupNonUniformQuadBroadcast 35 264 58 266: 81(ptr) AccessChain 24(data) 25 260 78 Store 266 265 267: 27(ptr) AccessChain 10(dti) 26 268: 6(int) Load 267 269: 27(ptr) AccessChain 10(dti) 26 270: 6(int) Load 269 271: 90(ptr) AccessChain 24(data) 25 270 78 26 272: 14(int) Load 271 273: 14(int) GroupNonUniformQuadBroadcast 35 272 58 274: 90(ptr) AccessChain 24(data) 25 268 78 26 Store 274 273 275: 27(ptr) AccessChain 10(dti) 26 276: 6(int) Load 275 277: 27(ptr) AccessChain 10(dti) 26 278: 6(int) Load 277 279: 81(ptr) AccessChain 24(data) 25 278 78 280: 15(ivec4) Load 279 281: 99(ivec2) VectorShuffle 280 280 0 1 282: 99(ivec2) GroupNonUniformQuadBroadcast 35 281 58 283: 90(ptr) AccessChain 24(data) 25 276 78 26 284: 14(int) CompositeExtract 282 0 Store 283 284 285: 90(ptr) AccessChain 24(data) 25 276 78 58 286: 14(int) CompositeExtract 282 1 Store 285 286 287: 27(ptr) AccessChain 10(dti) 26 288: 6(int) Load 287 289: 27(ptr) AccessChain 10(dti) 26 290: 6(int) Load 289 291: 81(ptr) AccessChain 24(data) 25 290 78 292: 15(ivec4) Load 291 293: 112(ivec3) VectorShuffle 292 292 0 1 2 294: 112(ivec3) GroupNonUniformQuadBroadcast 35 293 58 295: 90(ptr) AccessChain 24(data) 25 288 78 26 296: 14(int) CompositeExtract 294 0 Store 295 296 297: 90(ptr) AccessChain 24(data) 25 288 78 58 298: 14(int) CompositeExtract 294 1 Store 297 298 299: 90(ptr) AccessChain 24(data) 25 288 78 73 300: 14(int) CompositeExtract 294 2 Store 299 300 301: 27(ptr) AccessChain 10(dti) 26 302: 6(int) Load 301 303: 27(ptr) AccessChain 10(dti) 26 304: 6(int) Load 303 305: 128(ptr) AccessChain 24(data) 25 304 125 306: 17(fvec4) Load 305 307: 17(fvec4) GroupNonUniformQuadBroadcast 35 306 58 308: 128(ptr) AccessChain 24(data) 25 302 125 Store 308 307 309: 27(ptr) AccessChain 10(dti) 26 310: 6(int) Load 309 311: 27(ptr) AccessChain 10(dti) 26 312: 6(int) Load 311 313: 137(ptr) AccessChain 24(data) 25 312 125 26 314: 16(float) Load 313 315: 16(float) GroupNonUniformQuadBroadcast 35 314 58 316: 137(ptr) AccessChain 24(data) 25 310 125 26 Store 316 315 317: 27(ptr) AccessChain 10(dti) 26 318: 6(int) Load 317 319: 27(ptr) AccessChain 10(dti) 26 320: 6(int) Load 319 321: 128(ptr) AccessChain 24(data) 25 320 125 322: 17(fvec4) Load 321 323: 146(fvec2) VectorShuffle 322 322 0 1 324: 146(fvec2) GroupNonUniformQuadBroadcast 35 323 58 325: 137(ptr) AccessChain 24(data) 25 318 125 26 326: 16(float) CompositeExtract 324 0 Store 325 326 327: 137(ptr) AccessChain 24(data) 25 318 125 58 328: 16(float) CompositeExtract 324 1 Store 327 328 329: 27(ptr) AccessChain 10(dti) 26 330: 6(int) Load 329 331: 27(ptr) AccessChain 10(dti) 26 332: 6(int) Load 331 333: 128(ptr) AccessChain 24(data) 25 332 125 334: 17(fvec4) Load 333 335: 159(fvec3) VectorShuffle 334 334 0 1 2 336: 159(fvec3) GroupNonUniformQuadBroadcast 35 335 58 337: 137(ptr) AccessChain 24(data) 25 330 125 26 338: 16(float) CompositeExtract 336 0 Store 337 338 339: 137(ptr) AccessChain 24(data) 25 330 125 58 340: 16(float) CompositeExtract 336 1 Store 339 340 341: 137(ptr) AccessChain 24(data) 25 330 125 73 342: 16(float) CompositeExtract 336 2 Store 341 342 343: 27(ptr) AccessChain 10(dti) 26 344: 6(int) Load 343 345: 27(ptr) AccessChain 10(dti) 26 346: 6(int) Load 345 347: 175(ptr) AccessChain 24(data) 25 346 172 348: 19(f64vec4) Load 347 349: 19(f64vec4) GroupNonUniformQuadBroadcast 35 348 58 350: 175(ptr) AccessChain 24(data) 25 344 172 Store 350 349 351: 27(ptr) AccessChain 10(dti) 26 352: 6(int) Load 351 353: 27(ptr) AccessChain 10(dti) 26 354: 6(int) Load 353 355: 184(ptr) AccessChain 24(data) 25 354 172 26 356:18(float64_t) Load 355 357:18(float64_t) GroupNonUniformQuadBroadcast 35 356 58 358: 184(ptr) AccessChain 24(data) 25 352 172 26 Store 358 357 359: 27(ptr) AccessChain 10(dti) 26 360: 6(int) Load 359 361: 27(ptr) AccessChain 10(dti) 26 362: 6(int) Load 361 363: 175(ptr) AccessChain 24(data) 25 362 172 364: 19(f64vec4) Load 363 365:193(f64vec2) VectorShuffle 364 364 0 1 366:193(f64vec2) GroupNonUniformQuadBroadcast 35 365 58 367: 184(ptr) AccessChain 24(data) 25 360 172 26 368:18(float64_t) CompositeExtract 366 0 Store 367 368 369: 184(ptr) AccessChain 24(data) 25 360 172 58 370:18(float64_t) CompositeExtract 366 1 Store 369 370 371: 27(ptr) AccessChain 10(dti) 26 372: 6(int) Load 371 373: 27(ptr) AccessChain 10(dti) 26 374: 6(int) Load 373 375: 175(ptr) AccessChain 24(data) 25 374 172 376: 19(f64vec4) Load 375 377:206(f64vec3) VectorShuffle 376 376 0 1 2 378:206(f64vec3) GroupNonUniformQuadBroadcast 35 377 58 379: 184(ptr) AccessChain 24(data) 25 372 172 26 380:18(float64_t) CompositeExtract 378 0 Store 379 380 381: 184(ptr) AccessChain 24(data) 25 372 172 58 382:18(float64_t) CompositeExtract 378 1 Store 381 382 383: 184(ptr) AccessChain 24(data) 25 372 172 73 384:18(float64_t) CompositeExtract 378 2 Store 383 384 385: 27(ptr) AccessChain 10(dti) 26 386: 6(int) Load 385 387: 27(ptr) AccessChain 10(dti) 26 388: 6(int) Load 387 389: 32(ptr) AccessChain 24(data) 25 388 25 390: 13(ivec4) Load 389 391: 13(ivec4) GroupNonUniformQuadBroadcast 35 390 73 392: 32(ptr) AccessChain 24(data) 25 386 25 Store 392 391 393: 27(ptr) AccessChain 10(dti) 26 394: 6(int) Load 393 395: 27(ptr) AccessChain 10(dti) 26 396: 6(int) Load 395 397: 42(ptr) AccessChain 24(data) 25 396 25 26 398: 6(int) Load 397 399: 6(int) GroupNonUniformQuadBroadcast 35 398 73 400: 42(ptr) AccessChain 24(data) 25 394 25 26 Store 400 399 401: 27(ptr) AccessChain 10(dti) 26 402: 6(int) Load 401 403: 27(ptr) AccessChain 10(dti) 26 404: 6(int) Load 403 405: 32(ptr) AccessChain 24(data) 25 404 25 406: 13(ivec4) Load 405 407: 51(ivec2) VectorShuffle 406 406 0 1 408: 51(ivec2) GroupNonUniformQuadBroadcast 35 407 73 409: 42(ptr) AccessChain 24(data) 25 402 25 26 410: 6(int) CompositeExtract 408 0 Store 409 410 411: 42(ptr) AccessChain 24(data) 25 402 25 58 412: 6(int) CompositeExtract 408 1 Store 411 412 413: 27(ptr) AccessChain 10(dti) 26 414: 6(int) Load 413 415: 27(ptr) AccessChain 10(dti) 26 416: 6(int) Load 415 417: 32(ptr) AccessChain 24(data) 25 416 25 418: 13(ivec4) Load 417 419: 7(ivec3) VectorShuffle 418 418 0 1 2 420: 7(ivec3) GroupNonUniformQuadBroadcast 35 419 73 421: 42(ptr) AccessChain 24(data) 25 414 25 26 422: 6(int) CompositeExtract 420 0 Store 421 422 423: 42(ptr) AccessChain 24(data) 25 414 25 58 424: 6(int) CompositeExtract 420 1 Store 423 424 425: 42(ptr) AccessChain 24(data) 25 414 25 73 426: 6(int) CompositeExtract 420 2 Store 425 426 427: 27(ptr) AccessChain 10(dti) 26 428: 6(int) Load 427 429: 27(ptr) AccessChain 10(dti) 26 430: 6(int) Load 429 431: 81(ptr) AccessChain 24(data) 25 430 78 432: 15(ivec4) Load 431 433: 15(ivec4) GroupNonUniformQuadBroadcast 35 432 73 434: 81(ptr) AccessChain 24(data) 25 428 78 Store 434 433 435: 27(ptr) AccessChain 10(dti) 26 436: 6(int) Load 435 437: 27(ptr) AccessChain 10(dti) 26 438: 6(int) Load 437 439: 90(ptr) AccessChain 24(data) 25 438 78 26 440: 14(int) Load 439 441: 14(int) GroupNonUniformQuadBroadcast 35 440 73 442: 90(ptr) AccessChain 24(data) 25 436 78 26 Store 442 441 443: 27(ptr) AccessChain 10(dti) 26 444: 6(int) Load 443 445: 27(ptr) AccessChain 10(dti) 26 446: 6(int) Load 445 447: 81(ptr) AccessChain 24(data) 25 446 78 448: 15(ivec4) Load 447 449: 99(ivec2) VectorShuffle 448 448 0 1 450: 99(ivec2) GroupNonUniformQuadBroadcast 35 449 73 451: 90(ptr) AccessChain 24(data) 25 444 78 26 452: 14(int) CompositeExtract 450 0 Store 451 452 453: 90(ptr) AccessChain 24(data) 25 444 78 58 454: 14(int) CompositeExtract 450 1 Store 453 454 455: 27(ptr) AccessChain 10(dti) 26 456: 6(int) Load 455 457: 27(ptr) AccessChain 10(dti) 26 458: 6(int) Load 457 459: 81(ptr) AccessChain 24(data) 25 458 78 460: 15(ivec4) Load 459 461: 112(ivec3) VectorShuffle 460 460 0 1 2 462: 112(ivec3) GroupNonUniformQuadBroadcast 35 461 73 463: 90(ptr) AccessChain 24(data) 25 456 78 26 464: 14(int) CompositeExtract 462 0 Store 463 464 465: 90(ptr) AccessChain 24(data) 25 456 78 58 466: 14(int) CompositeExtract 462 1 Store 465 466 467: 90(ptr) AccessChain 24(data) 25 456 78 73 468: 14(int) CompositeExtract 462 2 Store 467 468 469: 27(ptr) AccessChain 10(dti) 26 470: 6(int) Load 469 471: 27(ptr) AccessChain 10(dti) 26 472: 6(int) Load 471 473: 128(ptr) AccessChain 24(data) 25 472 125 474: 17(fvec4) Load 473 475: 17(fvec4) GroupNonUniformQuadBroadcast 35 474 73 476: 128(ptr) AccessChain 24(data) 25 470 125 Store 476 475 477: 27(ptr) AccessChain 10(dti) 26 478: 6(int) Load 477 479: 27(ptr) AccessChain 10(dti) 26 480: 6(int) Load 479 481: 137(ptr) AccessChain 24(data) 25 480 125 26 482: 16(float) Load 481 483: 16(float) GroupNonUniformQuadBroadcast 35 482 73 484: 137(ptr) AccessChain 24(data) 25 478 125 26 Store 484 483 485: 27(ptr) AccessChain 10(dti) 26 486: 6(int) Load 485 487: 27(ptr) AccessChain 10(dti) 26 488: 6(int) Load 487 489: 128(ptr) AccessChain 24(data) 25 488 125 490: 17(fvec4) Load 489 491: 146(fvec2) VectorShuffle 490 490 0 1 492: 146(fvec2) GroupNonUniformQuadBroadcast 35 491 73 493: 137(ptr) AccessChain 24(data) 25 486 125 26 494: 16(float) CompositeExtract 492 0 Store 493 494 495: 137(ptr) AccessChain 24(data) 25 486 125 58 496: 16(float) CompositeExtract 492 1 Store 495 496 497: 27(ptr) AccessChain 10(dti) 26 498: 6(int) Load 497 499: 27(ptr) AccessChain 10(dti) 26 500: 6(int) Load 499 501: 128(ptr) AccessChain 24(data) 25 500 125 502: 17(fvec4) Load 501 503: 159(fvec3) VectorShuffle 502 502 0 1 2 504: 159(fvec3) GroupNonUniformQuadBroadcast 35 503 73 505: 137(ptr) AccessChain 24(data) 25 498 125 26 506: 16(float) CompositeExtract 504 0 Store 505 506 507: 137(ptr) AccessChain 24(data) 25 498 125 58 508: 16(float) CompositeExtract 504 1 Store 507 508 509: 137(ptr) AccessChain 24(data) 25 498 125 73 510: 16(float) CompositeExtract 504 2 Store 509 510 511: 27(ptr) AccessChain 10(dti) 26 512: 6(int) Load 511 513: 27(ptr) AccessChain 10(dti) 26 514: 6(int) Load 513 515: 175(ptr) AccessChain 24(data) 25 514 172 516: 19(f64vec4) Load 515 517: 19(f64vec4) GroupNonUniformQuadBroadcast 35 516 73 518: 175(ptr) AccessChain 24(data) 25 512 172 Store 518 517 519: 27(ptr) AccessChain 10(dti) 26 520: 6(int) Load 519 521: 27(ptr) AccessChain 10(dti) 26 522: 6(int) Load 521 523: 184(ptr) AccessChain 24(data) 25 522 172 26 524:18(float64_t) Load 523 525:18(float64_t) GroupNonUniformQuadBroadcast 35 524 73 526: 184(ptr) AccessChain 24(data) 25 520 172 26 Store 526 525 527: 27(ptr) AccessChain 10(dti) 26 528: 6(int) Load 527 529: 27(ptr) AccessChain 10(dti) 26 530: 6(int) Load 529 531: 175(ptr) AccessChain 24(data) 25 530 172 532: 19(f64vec4) Load 531 533:193(f64vec2) VectorShuffle 532 532 0 1 534:193(f64vec2) GroupNonUniformQuadBroadcast 35 533 73 535: 184(ptr) AccessChain 24(data) 25 528 172 26 536:18(float64_t) CompositeExtract 534 0 Store 535 536 537: 184(ptr) AccessChain 24(data) 25 528 172 58 538:18(float64_t) CompositeExtract 534 1 Store 537 538 539: 27(ptr) AccessChain 10(dti) 26 540: 6(int) Load 539 541: 27(ptr) AccessChain 10(dti) 26 542: 6(int) Load 541 543: 175(ptr) AccessChain 24(data) 25 542 172 544: 19(f64vec4) Load 543 545:206(f64vec3) VectorShuffle 544 544 0 1 2 546:206(f64vec3) GroupNonUniformQuadBroadcast 35 545 73 547: 184(ptr) AccessChain 24(data) 25 540 172 26 548:18(float64_t) CompositeExtract 546 0 Store 547 548 549: 184(ptr) AccessChain 24(data) 25 540 172 58 550:18(float64_t) CompositeExtract 546 1 Store 549 550 551: 184(ptr) AccessChain 24(data) 25 540 172 73 552:18(float64_t) CompositeExtract 546 2 Store 551 552 553: 27(ptr) AccessChain 10(dti) 26 554: 6(int) Load 553 555: 27(ptr) AccessChain 10(dti) 26 556: 6(int) Load 555 557: 32(ptr) AccessChain 24(data) 25 556 25 558: 13(ivec4) Load 557 559: 13(ivec4) GroupNonUniformQuadBroadcast 35 558 35 560: 32(ptr) AccessChain 24(data) 25 554 25 Store 560 559 561: 27(ptr) AccessChain 10(dti) 26 562: 6(int) Load 561 563: 27(ptr) AccessChain 10(dti) 26 564: 6(int) Load 563 565: 42(ptr) AccessChain 24(data) 25 564 25 26 566: 6(int) Load 565 567: 6(int) GroupNonUniformQuadBroadcast 35 566 35 568: 42(ptr) AccessChain 24(data) 25 562 25 26 Store 568 567 569: 27(ptr) AccessChain 10(dti) 26 570: 6(int) Load 569 571: 27(ptr) AccessChain 10(dti) 26 572: 6(int) Load 571 573: 32(ptr) AccessChain 24(data) 25 572 25 574: 13(ivec4) Load 573 575: 51(ivec2) VectorShuffle 574 574 0 1 576: 51(ivec2) GroupNonUniformQuadBroadcast 35 575 35 577: 42(ptr) AccessChain 24(data) 25 570 25 26 578: 6(int) CompositeExtract 576 0 Store 577 578 579: 42(ptr) AccessChain 24(data) 25 570 25 58 580: 6(int) CompositeExtract 576 1 Store 579 580 581: 27(ptr) AccessChain 10(dti) 26 582: 6(int) Load 581 583: 27(ptr) AccessChain 10(dti) 26 584: 6(int) Load 583 585: 32(ptr) AccessChain 24(data) 25 584 25 586: 13(ivec4) Load 585 587: 7(ivec3) VectorShuffle 586 586 0 1 2 588: 7(ivec3) GroupNonUniformQuadBroadcast 35 587 35 589: 42(ptr) AccessChain 24(data) 25 582 25 26 590: 6(int) CompositeExtract 588 0 Store 589 590 591: 42(ptr) AccessChain 24(data) 25 582 25 58 592: 6(int) CompositeExtract 588 1 Store 591 592 593: 42(ptr) AccessChain 24(data) 25 582 25 73 594: 6(int) CompositeExtract 588 2 Store 593 594 595: 27(ptr) AccessChain 10(dti) 26 596: 6(int) Load 595 597: 27(ptr) AccessChain 10(dti) 26 598: 6(int) Load 597 599: 81(ptr) AccessChain 24(data) 25 598 78 600: 15(ivec4) Load 599 601: 15(ivec4) GroupNonUniformQuadBroadcast 35 600 35 602: 81(ptr) AccessChain 24(data) 25 596 78 Store 602 601 603: 27(ptr) AccessChain 10(dti) 26 604: 6(int) Load 603 605: 27(ptr) AccessChain 10(dti) 26 606: 6(int) Load 605 607: 90(ptr) AccessChain 24(data) 25 606 78 26 608: 14(int) Load 607 609: 14(int) GroupNonUniformQuadBroadcast 35 608 35 610: 90(ptr) AccessChain 24(data) 25 604 78 26 Store 610 609 611: 27(ptr) AccessChain 10(dti) 26 612: 6(int) Load 611 613: 27(ptr) AccessChain 10(dti) 26 614: 6(int) Load 613 615: 81(ptr) AccessChain 24(data) 25 614 78 616: 15(ivec4) Load 615 617: 99(ivec2) VectorShuffle 616 616 0 1 618: 99(ivec2) GroupNonUniformQuadBroadcast 35 617 35 619: 90(ptr) AccessChain 24(data) 25 612 78 26 620: 14(int) CompositeExtract 618 0 Store 619 620 621: 90(ptr) AccessChain 24(data) 25 612 78 58 622: 14(int) CompositeExtract 618 1 Store 621 622 623: 27(ptr) AccessChain 10(dti) 26 624: 6(int) Load 623 625: 27(ptr) AccessChain 10(dti) 26 626: 6(int) Load 625 627: 81(ptr) AccessChain 24(data) 25 626 78 628: 15(ivec4) Load 627 629: 112(ivec3) VectorShuffle 628 628 0 1 2 630: 112(ivec3) GroupNonUniformQuadBroadcast 35 629 35 631: 90(ptr) AccessChain 24(data) 25 624 78 26 632: 14(int) CompositeExtract 630 0 Store 631 632 633: 90(ptr) AccessChain 24(data) 25 624 78 58 634: 14(int) CompositeExtract 630 1 Store 633 634 635: 90(ptr) AccessChain 24(data) 25 624 78 73 636: 14(int) CompositeExtract 630 2 Store 635 636 637: 27(ptr) AccessChain 10(dti) 26 638: 6(int) Load 637 639: 27(ptr) AccessChain 10(dti) 26 640: 6(int) Load 639 641: 128(ptr) AccessChain 24(data) 25 640 125 642: 17(fvec4) Load 641 643: 17(fvec4) GroupNonUniformQuadBroadcast 35 642 35 644: 128(ptr) AccessChain 24(data) 25 638 125 Store 644 643 645: 27(ptr) AccessChain 10(dti) 26 646: 6(int) Load 645 647: 27(ptr) AccessChain 10(dti) 26 648: 6(int) Load 647 649: 137(ptr) AccessChain 24(data) 25 648 125 26 650: 16(float) Load 649 651: 16(float) GroupNonUniformQuadBroadcast 35 650 35 652: 137(ptr) AccessChain 24(data) 25 646 125 26 Store 652 651 653: 27(ptr) AccessChain 10(dti) 26 654: 6(int) Load 653 655: 27(ptr) AccessChain 10(dti) 26 656: 6(int) Load 655 657: 128(ptr) AccessChain 24(data) 25 656 125 658: 17(fvec4) Load 657 659: 146(fvec2) VectorShuffle 658 658 0 1 660: 146(fvec2) GroupNonUniformQuadBroadcast 35 659 35 661: 137(ptr) AccessChain 24(data) 25 654 125 26 662: 16(float) CompositeExtract 660 0 Store 661 662 663: 137(ptr) AccessChain 24(data) 25 654 125 58 664: 16(float) CompositeExtract 660 1 Store 663 664 665: 27(ptr) AccessChain 10(dti) 26 666: 6(int) Load 665 667: 27(ptr) AccessChain 10(dti) 26 668: 6(int) Load 667 669: 128(ptr) AccessChain 24(data) 25 668 125 670: 17(fvec4) Load 669 671: 159(fvec3) VectorShuffle 670 670 0 1 2 672: 159(fvec3) GroupNonUniformQuadBroadcast 35 671 35 673: 137(ptr) AccessChain 24(data) 25 666 125 26 674: 16(float) CompositeExtract 672 0 Store 673 674 675: 137(ptr) AccessChain 24(data) 25 666 125 58 676: 16(float) CompositeExtract 672 1 Store 675 676 677: 137(ptr) AccessChain 24(data) 25 666 125 73 678: 16(float) CompositeExtract 672 2 Store 677 678 679: 27(ptr) AccessChain 10(dti) 26 680: 6(int) Load 679 681: 27(ptr) AccessChain 10(dti) 26 682: 6(int) Load 681 683: 175(ptr) AccessChain 24(data) 25 682 172 684: 19(f64vec4) Load 683 685: 19(f64vec4) GroupNonUniformQuadBroadcast 35 684 35 686: 175(ptr) AccessChain 24(data) 25 680 172 Store 686 685 687: 27(ptr) AccessChain 10(dti) 26 688: 6(int) Load 687 689: 27(ptr) AccessChain 10(dti) 26 690: 6(int) Load 689 691: 184(ptr) AccessChain 24(data) 25 690 172 26 692:18(float64_t) Load 691 693:18(float64_t) GroupNonUniformQuadBroadcast 35 692 35 694: 184(ptr) AccessChain 24(data) 25 688 172 26 Store 694 693 695: 27(ptr) AccessChain 10(dti) 26 696: 6(int) Load 695 697: 27(ptr) AccessChain 10(dti) 26 698: 6(int) Load 697 699: 175(ptr) AccessChain 24(data) 25 698 172 700: 19(f64vec4) Load 699 701:193(f64vec2) VectorShuffle 700 700 0 1 702:193(f64vec2) GroupNonUniformQuadBroadcast 35 701 35 703: 184(ptr) AccessChain 24(data) 25 696 172 26 704:18(float64_t) CompositeExtract 702 0 Store 703 704 705: 184(ptr) AccessChain 24(data) 25 696 172 58 706:18(float64_t) CompositeExtract 702 1 Store 705 706 707: 27(ptr) AccessChain 10(dti) 26 708: 6(int) Load 707 709: 27(ptr) AccessChain 10(dti) 26 710: 6(int) Load 709 711: 175(ptr) AccessChain 24(data) 25 710 172 712: 19(f64vec4) Load 711 713:206(f64vec3) VectorShuffle 712 712 0 1 2 714:206(f64vec3) GroupNonUniformQuadBroadcast 35 713 35 715: 184(ptr) AccessChain 24(data) 25 708 172 26 716:18(float64_t) CompositeExtract 714 0 Store 715 716 717: 184(ptr) AccessChain 24(data) 25 708 172 58 718:18(float64_t) CompositeExtract 714 1 Store 717 718 719: 184(ptr) AccessChain 24(data) 25 708 172 73 720:18(float64_t) CompositeExtract 714 2 Store 719 720 721: 27(ptr) AccessChain 10(dti) 26 722: 6(int) Load 721 723: 27(ptr) AccessChain 10(dti) 26 724: 6(int) Load 723 725: 32(ptr) AccessChain 24(data) 25 724 25 726: 13(ivec4) Load 725 727: 13(ivec4) GroupNonUniformQuadSwap 35 726 26 728: 32(ptr) AccessChain 24(data) 25 722 25 Store 728 727 729: 27(ptr) AccessChain 10(dti) 26 730: 6(int) Load 729 731: 27(ptr) AccessChain 10(dti) 26 732: 6(int) Load 731 733: 42(ptr) AccessChain 24(data) 25 732 25 26 734: 6(int) Load 733 735: 6(int) GroupNonUniformQuadSwap 35 734 26 736: 42(ptr) AccessChain 24(data) 25 730 25 26 Store 736 735 737: 27(ptr) AccessChain 10(dti) 26 738: 6(int) Load 737 739: 27(ptr) AccessChain 10(dti) 26 740: 6(int) Load 739 741: 32(ptr) AccessChain 24(data) 25 740 25 742: 13(ivec4) Load 741 743: 51(ivec2) VectorShuffle 742 742 0 1 744: 51(ivec2) GroupNonUniformQuadSwap 35 743 26 745: 42(ptr) AccessChain 24(data) 25 738 25 26 746: 6(int) CompositeExtract 744 0 Store 745 746 747: 42(ptr) AccessChain 24(data) 25 738 25 58 748: 6(int) CompositeExtract 744 1 Store 747 748 749: 27(ptr) AccessChain 10(dti) 26 750: 6(int) Load 749 751: 27(ptr) AccessChain 10(dti) 26 752: 6(int) Load 751 753: 32(ptr) AccessChain 24(data) 25 752 25 754: 13(ivec4) Load 753 755: 7(ivec3) VectorShuffle 754 754 0 1 2 756: 7(ivec3) GroupNonUniformQuadSwap 35 755 26 757: 42(ptr) AccessChain 24(data) 25 750 25 26 758: 6(int) CompositeExtract 756 0 Store 757 758 759: 42(ptr) AccessChain 24(data) 25 750 25 58 760: 6(int) CompositeExtract 756 1 Store 759 760 761: 42(ptr) AccessChain 24(data) 25 750 25 73 762: 6(int) CompositeExtract 756 2 Store 761 762 763: 27(ptr) AccessChain 10(dti) 26 764: 6(int) Load 763 765: 27(ptr) AccessChain 10(dti) 26 766: 6(int) Load 765 767: 81(ptr) AccessChain 24(data) 25 766 78 768: 15(ivec4) Load 767 769: 15(ivec4) GroupNonUniformQuadSwap 35 768 26 770: 81(ptr) AccessChain 24(data) 25 764 78 Store 770 769 771: 27(ptr) AccessChain 10(dti) 26 772: 6(int) Load 771 773: 27(ptr) AccessChain 10(dti) 26 774: 6(int) Load 773 775: 90(ptr) AccessChain 24(data) 25 774 78 26 776: 14(int) Load 775 777: 14(int) GroupNonUniformQuadSwap 35 776 26 778: 90(ptr) AccessChain 24(data) 25 772 78 26 Store 778 777 779: 27(ptr) AccessChain 10(dti) 26 780: 6(int) Load 779 781: 27(ptr) AccessChain 10(dti) 26 782: 6(int) Load 781 783: 81(ptr) AccessChain 24(data) 25 782 78 784: 15(ivec4) Load 783 785: 99(ivec2) VectorShuffle 784 784 0 1 786: 99(ivec2) GroupNonUniformQuadSwap 35 785 26 787: 90(ptr) AccessChain 24(data) 25 780 78 26 788: 14(int) CompositeExtract 786 0 Store 787 788 789: 90(ptr) AccessChain 24(data) 25 780 78 58 790: 14(int) CompositeExtract 786 1 Store 789 790 791: 27(ptr) AccessChain 10(dti) 26 792: 6(int) Load 791 793: 27(ptr) AccessChain 10(dti) 26 794: 6(int) Load 793 795: 81(ptr) AccessChain 24(data) 25 794 78 796: 15(ivec4) Load 795 797: 112(ivec3) VectorShuffle 796 796 0 1 2 798: 112(ivec3) GroupNonUniformQuadSwap 35 797 26 799: 90(ptr) AccessChain 24(data) 25 792 78 26 800: 14(int) CompositeExtract 798 0 Store 799 800 801: 90(ptr) AccessChain 24(data) 25 792 78 58 802: 14(int) CompositeExtract 798 1 Store 801 802 803: 90(ptr) AccessChain 24(data) 25 792 78 73 804: 14(int) CompositeExtract 798 2 Store 803 804 805: 27(ptr) AccessChain 10(dti) 26 806: 6(int) Load 805 807: 27(ptr) AccessChain 10(dti) 26 808: 6(int) Load 807 809: 128(ptr) AccessChain 24(data) 25 808 125 810: 17(fvec4) Load 809 811: 17(fvec4) GroupNonUniformQuadSwap 35 810 26 812: 128(ptr) AccessChain 24(data) 25 806 125 Store 812 811 813: 27(ptr) AccessChain 10(dti) 26 814: 6(int) Load 813 815: 27(ptr) AccessChain 10(dti) 26 816: 6(int) Load 815 817: 137(ptr) AccessChain 24(data) 25 816 125 26 818: 16(float) Load 817 819: 16(float) GroupNonUniformQuadSwap 35 818 26 820: 137(ptr) AccessChain 24(data) 25 814 125 26 Store 820 819 821: 27(ptr) AccessChain 10(dti) 26 822: 6(int) Load 821 823: 27(ptr) AccessChain 10(dti) 26 824: 6(int) Load 823 825: 128(ptr) AccessChain 24(data) 25 824 125 826: 17(fvec4) Load 825 827: 146(fvec2) VectorShuffle 826 826 0 1 828: 146(fvec2) GroupNonUniformQuadSwap 35 827 26 829: 137(ptr) AccessChain 24(data) 25 822 125 26 830: 16(float) CompositeExtract 828 0 Store 829 830 831: 137(ptr) AccessChain 24(data) 25 822 125 58 832: 16(float) CompositeExtract 828 1 Store 831 832 833: 27(ptr) AccessChain 10(dti) 26 834: 6(int) Load 833 835: 27(ptr) AccessChain 10(dti) 26 836: 6(int) Load 835 837: 128(ptr) AccessChain 24(data) 25 836 125 838: 17(fvec4) Load 837 839: 159(fvec3) VectorShuffle 838 838 0 1 2 840: 159(fvec3) GroupNonUniformQuadSwap 35 839 26 841: 137(ptr) AccessChain 24(data) 25 834 125 26 842: 16(float) CompositeExtract 840 0 Store 841 842 843: 137(ptr) AccessChain 24(data) 25 834 125 58 844: 16(float) CompositeExtract 840 1 Store 843 844 845: 137(ptr) AccessChain 24(data) 25 834 125 73 846: 16(float) CompositeExtract 840 2 Store 845 846 847: 27(ptr) AccessChain 10(dti) 26 848: 6(int) Load 847 849: 27(ptr) AccessChain 10(dti) 26 850: 6(int) Load 849 851: 175(ptr) AccessChain 24(data) 25 850 172 852: 19(f64vec4) Load 851 853: 19(f64vec4) GroupNonUniformQuadSwap 35 852 26 854: 175(ptr) AccessChain 24(data) 25 848 172 Store 854 853 855: 27(ptr) AccessChain 10(dti) 26 856: 6(int) Load 855 857: 27(ptr) AccessChain 10(dti) 26 858: 6(int) Load 857 859: 184(ptr) AccessChain 24(data) 25 858 172 26 860:18(float64_t) Load 859 861:18(float64_t) GroupNonUniformQuadSwap 35 860 26 862: 184(ptr) AccessChain 24(data) 25 856 172 26 Store 862 861 863: 27(ptr) AccessChain 10(dti) 26 864: 6(int) Load 863 865: 27(ptr) AccessChain 10(dti) 26 866: 6(int) Load 865 867: 175(ptr) AccessChain 24(data) 25 866 172 868: 19(f64vec4) Load 867 869:193(f64vec2) VectorShuffle 868 868 0 1 870:193(f64vec2) GroupNonUniformQuadSwap 35 869 26 871: 184(ptr) AccessChain 24(data) 25 864 172 26 872:18(float64_t) CompositeExtract 870 0 Store 871 872 873: 184(ptr) AccessChain 24(data) 25 864 172 58 874:18(float64_t) CompositeExtract 870 1 Store 873 874 875: 27(ptr) AccessChain 10(dti) 26 876: 6(int) Load 875 877: 27(ptr) AccessChain 10(dti) 26 878: 6(int) Load 877 879: 175(ptr) AccessChain 24(data) 25 878 172 880: 19(f64vec4) Load 879 881:206(f64vec3) VectorShuffle 880 880 0 1 2 882:206(f64vec3) GroupNonUniformQuadSwap 35 881 26 883: 184(ptr) AccessChain 24(data) 25 876 172 26 884:18(float64_t) CompositeExtract 882 0 Store 883 884 885: 184(ptr) AccessChain 24(data) 25 876 172 58 886:18(float64_t) CompositeExtract 882 1 Store 885 886 887: 184(ptr) AccessChain 24(data) 25 876 172 73 888:18(float64_t) CompositeExtract 882 2 Store 887 888 889: 27(ptr) AccessChain 10(dti) 26 890: 6(int) Load 889 891: 27(ptr) AccessChain 10(dti) 26 892: 6(int) Load 891 893: 32(ptr) AccessChain 24(data) 25 892 25 894: 13(ivec4) Load 893 895: 13(ivec4) GroupNonUniformQuadSwap 35 894 58 896: 32(ptr) AccessChain 24(data) 25 890 25 Store 896 895 897: 27(ptr) AccessChain 10(dti) 26 898: 6(int) Load 897 899: 27(ptr) AccessChain 10(dti) 26 900: 6(int) Load 899 901: 42(ptr) AccessChain 24(data) 25 900 25 26 902: 6(int) Load 901 903: 6(int) GroupNonUniformQuadSwap 35 902 58 904: 42(ptr) AccessChain 24(data) 25 898 25 26 Store 904 903 905: 27(ptr) AccessChain 10(dti) 26 906: 6(int) Load 905 907: 27(ptr) AccessChain 10(dti) 26 908: 6(int) Load 907 909: 32(ptr) AccessChain 24(data) 25 908 25 910: 13(ivec4) Load 909 911: 51(ivec2) VectorShuffle 910 910 0 1 912: 51(ivec2) GroupNonUniformQuadSwap 35 911 58 913: 42(ptr) AccessChain 24(data) 25 906 25 26 914: 6(int) CompositeExtract 912 0 Store 913 914 915: 42(ptr) AccessChain 24(data) 25 906 25 58 916: 6(int) CompositeExtract 912 1 Store 915 916 917: 27(ptr) AccessChain 10(dti) 26 918: 6(int) Load 917 919: 27(ptr) AccessChain 10(dti) 26 920: 6(int) Load 919 921: 32(ptr) AccessChain 24(data) 25 920 25 922: 13(ivec4) Load 921 923: 7(ivec3) VectorShuffle 922 922 0 1 2 924: 7(ivec3) GroupNonUniformQuadSwap 35 923 58 925: 42(ptr) AccessChain 24(data) 25 918 25 26 926: 6(int) CompositeExtract 924 0 Store 925 926 927: 42(ptr) AccessChain 24(data) 25 918 25 58 928: 6(int) CompositeExtract 924 1 Store 927 928 929: 42(ptr) AccessChain 24(data) 25 918 25 73 930: 6(int) CompositeExtract 924 2 Store 929 930 931: 27(ptr) AccessChain 10(dti) 26 932: 6(int) Load 931 933: 27(ptr) AccessChain 10(dti) 26 934: 6(int) Load 933 935: 81(ptr) AccessChain 24(data) 25 934 78 936: 15(ivec4) Load 935 937: 15(ivec4) GroupNonUniformQuadSwap 35 936 58 938: 81(ptr) AccessChain 24(data) 25 932 78 Store 938 937 939: 27(ptr) AccessChain 10(dti) 26 940: 6(int) Load 939 941: 27(ptr) AccessChain 10(dti) 26 942: 6(int) Load 941 943: 90(ptr) AccessChain 24(data) 25 942 78 26 944: 14(int) Load 943 945: 14(int) GroupNonUniformQuadSwap 35 944 58 946: 90(ptr) AccessChain 24(data) 25 940 78 26 Store 946 945 947: 27(ptr) AccessChain 10(dti) 26 948: 6(int) Load 947 949: 27(ptr) AccessChain 10(dti) 26 950: 6(int) Load 949 951: 81(ptr) AccessChain 24(data) 25 950 78 952: 15(ivec4) Load 951 953: 99(ivec2) VectorShuffle 952 952 0 1 954: 99(ivec2) GroupNonUniformQuadSwap 35 953 58 955: 90(ptr) AccessChain 24(data) 25 948 78 26 956: 14(int) CompositeExtract 954 0 Store 955 956 957: 90(ptr) AccessChain 24(data) 25 948 78 58 958: 14(int) CompositeExtract 954 1 Store 957 958 959: 27(ptr) AccessChain 10(dti) 26 960: 6(int) Load 959 961: 27(ptr) AccessChain 10(dti) 26 962: 6(int) Load 961 963: 81(ptr) AccessChain 24(data) 25 962 78 964: 15(ivec4) Load 963 965: 112(ivec3) VectorShuffle 964 964 0 1 2 966: 112(ivec3) GroupNonUniformQuadSwap 35 965 58 967: 90(ptr) AccessChain 24(data) 25 960 78 26 968: 14(int) CompositeExtract 966 0 Store 967 968 969: 90(ptr) AccessChain 24(data) 25 960 78 58 970: 14(int) CompositeExtract 966 1 Store 969 970 971: 90(ptr) AccessChain 24(data) 25 960 78 73 972: 14(int) CompositeExtract 966 2 Store 971 972 973: 27(ptr) AccessChain 10(dti) 26 974: 6(int) Load 973 975: 27(ptr) AccessChain 10(dti) 26 976: 6(int) Load 975 977: 128(ptr) AccessChain 24(data) 25 976 125 978: 17(fvec4) Load 977 979: 17(fvec4) GroupNonUniformQuadSwap 35 978 58 980: 128(ptr) AccessChain 24(data) 25 974 125 Store 980 979 981: 27(ptr) AccessChain 10(dti) 26 982: 6(int) Load 981 983: 27(ptr) AccessChain 10(dti) 26 984: 6(int) Load 983 985: 137(ptr) AccessChain 24(data) 25 984 125 26 986: 16(float) Load 985 987: 16(float) GroupNonUniformQuadSwap 35 986 58 988: 137(ptr) AccessChain 24(data) 25 982 125 26 Store 988 987 989: 27(ptr) AccessChain 10(dti) 26 990: 6(int) Load 989 991: 27(ptr) AccessChain 10(dti) 26 992: 6(int) Load 991 993: 128(ptr) AccessChain 24(data) 25 992 125 994: 17(fvec4) Load 993 995: 146(fvec2) VectorShuffle 994 994 0 1 996: 146(fvec2) GroupNonUniformQuadSwap 35 995 58 997: 137(ptr) AccessChain 24(data) 25 990 125 26 998: 16(float) CompositeExtract 996 0 Store 997 998 999: 137(ptr) AccessChain 24(data) 25 990 125 58 1000: 16(float) CompositeExtract 996 1 Store 999 1000 1001: 27(ptr) AccessChain 10(dti) 26 1002: 6(int) Load 1001 1003: 27(ptr) AccessChain 10(dti) 26 1004: 6(int) Load 1003 1005: 128(ptr) AccessChain 24(data) 25 1004 125 1006: 17(fvec4) Load 1005 1007: 159(fvec3) VectorShuffle 1006 1006 0 1 2 1008: 159(fvec3) GroupNonUniformQuadSwap 35 1007 58 1009: 137(ptr) AccessChain 24(data) 25 1002 125 26 1010: 16(float) CompositeExtract 1008 0 Store 1009 1010 1011: 137(ptr) AccessChain 24(data) 25 1002 125 58 1012: 16(float) CompositeExtract 1008 1 Store 1011 1012 1013: 137(ptr) AccessChain 24(data) 25 1002 125 73 1014: 16(float) CompositeExtract 1008 2 Store 1013 1014 1015: 27(ptr) AccessChain 10(dti) 26 1016: 6(int) Load 1015 1017: 27(ptr) AccessChain 10(dti) 26 1018: 6(int) Load 1017 1019: 175(ptr) AccessChain 24(data) 25 1018 172 1020: 19(f64vec4) Load 1019 1021: 19(f64vec4) GroupNonUniformQuadSwap 35 1020 58 1022: 175(ptr) AccessChain 24(data) 25 1016 172 Store 1022 1021 1023: 27(ptr) AccessChain 10(dti) 26 1024: 6(int) Load 1023 1025: 27(ptr) AccessChain 10(dti) 26 1026: 6(int) Load 1025 1027: 184(ptr) AccessChain 24(data) 25 1026 172 26 1028:18(float64_t) Load 1027 1029:18(float64_t) GroupNonUniformQuadSwap 35 1028 58 1030: 184(ptr) AccessChain 24(data) 25 1024 172 26 Store 1030 1029 1031: 27(ptr) AccessChain 10(dti) 26 1032: 6(int) Load 1031 1033: 27(ptr) AccessChain 10(dti) 26 1034: 6(int) Load 1033 1035: 175(ptr) AccessChain 24(data) 25 1034 172 1036: 19(f64vec4) Load 1035 1037:193(f64vec2) VectorShuffle 1036 1036 0 1 1038:193(f64vec2) GroupNonUniformQuadSwap 35 1037 58 1039: 184(ptr) AccessChain 24(data) 25 1032 172 26 1040:18(float64_t) CompositeExtract 1038 0 Store 1039 1040 1041: 184(ptr) AccessChain 24(data) 25 1032 172 58 1042:18(float64_t) CompositeExtract 1038 1 Store 1041 1042 1043: 27(ptr) AccessChain 10(dti) 26 1044: 6(int) Load 1043 1045: 27(ptr) AccessChain 10(dti) 26 1046: 6(int) Load 1045 1047: 175(ptr) AccessChain 24(data) 25 1046 172 1048: 19(f64vec4) Load 1047 1049:206(f64vec3) VectorShuffle 1048 1048 0 1 2 1050:206(f64vec3) GroupNonUniformQuadSwap 35 1049 58 1051: 184(ptr) AccessChain 24(data) 25 1044 172 26 1052:18(float64_t) CompositeExtract 1050 0 Store 1051 1052 1053: 184(ptr) AccessChain 24(data) 25 1044 172 58 1054:18(float64_t) CompositeExtract 1050 1 Store 1053 1054 1055: 184(ptr) AccessChain 24(data) 25 1044 172 73 1056:18(float64_t) CompositeExtract 1050 2 Store 1055 1056 1057: 27(ptr) AccessChain 10(dti) 26 1058: 6(int) Load 1057 1059: 27(ptr) AccessChain 10(dti) 26 1060: 6(int) Load 1059 1061: 32(ptr) AccessChain 24(data) 25 1060 25 1062: 13(ivec4) Load 1061 1063: 13(ivec4) GroupNonUniformQuadSwap 35 1062 73 1064: 32(ptr) AccessChain 24(data) 25 1058 25 Store 1064 1063 1065: 27(ptr) AccessChain 10(dti) 26 1066: 6(int) Load 1065 1067: 27(ptr) AccessChain 10(dti) 26 1068: 6(int) Load 1067 1069: 42(ptr) AccessChain 24(data) 25 1068 25 26 1070: 6(int) Load 1069 1071: 6(int) GroupNonUniformQuadSwap 35 1070 73 1072: 42(ptr) AccessChain 24(data) 25 1066 25 26 Store 1072 1071 1073: 27(ptr) AccessChain 10(dti) 26 1074: 6(int) Load 1073 1075: 27(ptr) AccessChain 10(dti) 26 1076: 6(int) Load 1075 1077: 32(ptr) AccessChain 24(data) 25 1076 25 1078: 13(ivec4) Load 1077 1079: 51(ivec2) VectorShuffle 1078 1078 0 1 1080: 51(ivec2) GroupNonUniformQuadSwap 35 1079 73 1081: 42(ptr) AccessChain 24(data) 25 1074 25 26 1082: 6(int) CompositeExtract 1080 0 Store 1081 1082 1083: 42(ptr) AccessChain 24(data) 25 1074 25 58 1084: 6(int) CompositeExtract 1080 1 Store 1083 1084 1085: 27(ptr) AccessChain 10(dti) 26 1086: 6(int) Load 1085 1087: 27(ptr) AccessChain 10(dti) 26 1088: 6(int) Load 1087 1089: 32(ptr) AccessChain 24(data) 25 1088 25 1090: 13(ivec4) Load 1089 1091: 7(ivec3) VectorShuffle 1090 1090 0 1 2 1092: 7(ivec3) GroupNonUniformQuadSwap 35 1091 73 1093: 42(ptr) AccessChain 24(data) 25 1086 25 26 1094: 6(int) CompositeExtract 1092 0 Store 1093 1094 1095: 42(ptr) AccessChain 24(data) 25 1086 25 58 1096: 6(int) CompositeExtract 1092 1 Store 1095 1096 1097: 42(ptr) AccessChain 24(data) 25 1086 25 73 1098: 6(int) CompositeExtract 1092 2 Store 1097 1098 1099: 27(ptr) AccessChain 10(dti) 26 1100: 6(int) Load 1099 1101: 27(ptr) AccessChain 10(dti) 26 1102: 6(int) Load 1101 1103: 81(ptr) AccessChain 24(data) 25 1102 78 1104: 15(ivec4) Load 1103 1105: 15(ivec4) GroupNonUniformQuadSwap 35 1104 73 1106: 81(ptr) AccessChain 24(data) 25 1100 78 Store 1106 1105 1107: 27(ptr) AccessChain 10(dti) 26 1108: 6(int) Load 1107 1109: 27(ptr) AccessChain 10(dti) 26 1110: 6(int) Load 1109 1111: 90(ptr) AccessChain 24(data) 25 1110 78 26 1112: 14(int) Load 1111 1113: 14(int) GroupNonUniformQuadSwap 35 1112 73 1114: 90(ptr) AccessChain 24(data) 25 1108 78 26 Store 1114 1113 1115: 27(ptr) AccessChain 10(dti) 26 1116: 6(int) Load 1115 1117: 27(ptr) AccessChain 10(dti) 26 1118: 6(int) Load 1117 1119: 81(ptr) AccessChain 24(data) 25 1118 78 1120: 15(ivec4) Load 1119 1121: 99(ivec2) VectorShuffle 1120 1120 0 1 1122: 99(ivec2) GroupNonUniformQuadSwap 35 1121 73 1123: 90(ptr) AccessChain 24(data) 25 1116 78 26 1124: 14(int) CompositeExtract 1122 0 Store 1123 1124 1125: 90(ptr) AccessChain 24(data) 25 1116 78 58 1126: 14(int) CompositeExtract 1122 1 Store 1125 1126 1127: 27(ptr) AccessChain 10(dti) 26 1128: 6(int) Load 1127 1129: 27(ptr) AccessChain 10(dti) 26 1130: 6(int) Load 1129 1131: 81(ptr) AccessChain 24(data) 25 1130 78 1132: 15(ivec4) Load 1131 1133: 112(ivec3) VectorShuffle 1132 1132 0 1 2 1134: 112(ivec3) GroupNonUniformQuadSwap 35 1133 73 1135: 90(ptr) AccessChain 24(data) 25 1128 78 26 1136: 14(int) CompositeExtract 1134 0 Store 1135 1136 1137: 90(ptr) AccessChain 24(data) 25 1128 78 58 1138: 14(int) CompositeExtract 1134 1 Store 1137 1138 1139: 90(ptr) AccessChain 24(data) 25 1128 78 73 1140: 14(int) CompositeExtract 1134 2 Store 1139 1140 1141: 27(ptr) AccessChain 10(dti) 26 1142: 6(int) Load 1141 1143: 27(ptr) AccessChain 10(dti) 26 1144: 6(int) Load 1143 1145: 128(ptr) AccessChain 24(data) 25 1144 125 1146: 17(fvec4) Load 1145 1147: 17(fvec4) GroupNonUniformQuadSwap 35 1146 73 1148: 128(ptr) AccessChain 24(data) 25 1142 125 Store 1148 1147 1149: 27(ptr) AccessChain 10(dti) 26 1150: 6(int) Load 1149 1151: 27(ptr) AccessChain 10(dti) 26 1152: 6(int) Load 1151 1153: 137(ptr) AccessChain 24(data) 25 1152 125 26 1154: 16(float) Load 1153 1155: 16(float) GroupNonUniformQuadSwap 35 1154 73 1156: 137(ptr) AccessChain 24(data) 25 1150 125 26 Store 1156 1155 1157: 27(ptr) AccessChain 10(dti) 26 1158: 6(int) Load 1157 1159: 27(ptr) AccessChain 10(dti) 26 1160: 6(int) Load 1159 1161: 128(ptr) AccessChain 24(data) 25 1160 125 1162: 17(fvec4) Load 1161 1163: 146(fvec2) VectorShuffle 1162 1162 0 1 1164: 146(fvec2) GroupNonUniformQuadSwap 35 1163 73 1165: 137(ptr) AccessChain 24(data) 25 1158 125 26 1166: 16(float) CompositeExtract 1164 0 Store 1165 1166 1167: 137(ptr) AccessChain 24(data) 25 1158 125 58 1168: 16(float) CompositeExtract 1164 1 Store 1167 1168 1169: 27(ptr) AccessChain 10(dti) 26 1170: 6(int) Load 1169 1171: 27(ptr) AccessChain 10(dti) 26 1172: 6(int) Load 1171 1173: 128(ptr) AccessChain 24(data) 25 1172 125 1174: 17(fvec4) Load 1173 1175: 159(fvec3) VectorShuffle 1174 1174 0 1 2 1176: 159(fvec3) GroupNonUniformQuadSwap 35 1175 73 1177: 137(ptr) AccessChain 24(data) 25 1170 125 26 1178: 16(float) CompositeExtract 1176 0 Store 1177 1178 1179: 137(ptr) AccessChain 24(data) 25 1170 125 58 1180: 16(float) CompositeExtract 1176 1 Store 1179 1180 1181: 137(ptr) AccessChain 24(data) 25 1170 125 73 1182: 16(float) CompositeExtract 1176 2 Store 1181 1182 1183: 27(ptr) AccessChain 10(dti) 26 1184: 6(int) Load 1183 1185: 27(ptr) AccessChain 10(dti) 26 1186: 6(int) Load 1185 1187: 175(ptr) AccessChain 24(data) 25 1186 172 1188: 19(f64vec4) Load 1187 1189: 19(f64vec4) GroupNonUniformQuadSwap 35 1188 73 1190: 175(ptr) AccessChain 24(data) 25 1184 172 Store 1190 1189 1191: 27(ptr) AccessChain 10(dti) 26 1192: 6(int) Load 1191 1193: 27(ptr) AccessChain 10(dti) 26 1194: 6(int) Load 1193 1195: 184(ptr) AccessChain 24(data) 25 1194 172 26 1196:18(float64_t) Load 1195 1197:18(float64_t) GroupNonUniformQuadSwap 35 1196 73 1198: 184(ptr) AccessChain 24(data) 25 1192 172 26 Store 1198 1197 1199: 27(ptr) AccessChain 10(dti) 26 1200: 6(int) Load 1199 1201: 27(ptr) AccessChain 10(dti) 26 1202: 6(int) Load 1201 1203: 175(ptr) AccessChain 24(data) 25 1202 172 1204: 19(f64vec4) Load 1203 1205:193(f64vec2) VectorShuffle 1204 1204 0 1 1206:193(f64vec2) GroupNonUniformQuadSwap 35 1205 73 1207: 184(ptr) AccessChain 24(data) 25 1200 172 26 1208:18(float64_t) CompositeExtract 1206 0 Store 1207 1208 1209: 184(ptr) AccessChain 24(data) 25 1200 172 58 1210:18(float64_t) CompositeExtract 1206 1 Store 1209 1210 1211: 27(ptr) AccessChain 10(dti) 26 1212: 6(int) Load 1211 1213: 27(ptr) AccessChain 10(dti) 26 1214: 6(int) Load 1213 1215: 175(ptr) AccessChain 24(data) 25 1214 172 1216: 19(f64vec4) Load 1215 1217:206(f64vec3) VectorShuffle 1216 1216 0 1 2 1218:206(f64vec3) GroupNonUniformQuadSwap 35 1217 73 1219: 184(ptr) AccessChain 24(data) 25 1212 172 26 1220:18(float64_t) CompositeExtract 1218 0 Store 1219 1220 1221: 184(ptr) AccessChain 24(data) 25 1212 172 58 1222:18(float64_t) CompositeExtract 1218 1 Store 1221 1222 1223: 184(ptr) AccessChain 24(data) 25 1212 172 73 1224:18(float64_t) CompositeExtract 1218 2 Store 1223 1224 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.wavequery.comp.out000066400000000000000000000122711506534232700231310ustar00rootroot00000000000000hlsl.wavequery.comp Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:5 Function Definition: @CSMain( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp uint) 0:6 indirect index (layout( row_major std430) buffer uint) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:6 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 '@gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:6 Test condition and select ( temp uint): no shortcircuit 0:6 Condition 0:6 subgroupElect ( temp bool) 0:6 true case 0:6 '@gl_SubgroupSize' ( in uint SubgroupSize) 0:6 false case 0:6 Constant: 0:6 0 (const uint) 0:5 Function Definition: CSMain( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 Function Call: @CSMain( ( temp void) 0:? Linker Objects 0:? 'data' (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 = (32, 16, 1) 0:? Sequence 0:5 Function Definition: @CSMain( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:6 move second child to first child ( temp uint) 0:6 indirect index (layout( row_major std430) buffer uint) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) 0:6 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 '@gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) 0:6 Test condition and select ( temp uint): no shortcircuit 0:6 Condition 0:6 subgroupElect ( temp bool) 0:6 true case 0:6 '@gl_SubgroupSize' ( in uint SubgroupSize) 0:6 false case 0:6 Constant: 0:6 0 (const uint) 0:5 Function Definition: CSMain( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 Function Call: @CSMain( ( temp void) 0:? Linker Objects 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): 8000b // Id's are bound by 28 Capability Shader Capability GroupNonUniform 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "CSMain" 16 21 ExecutionMode 4 LocalSize 32 16 1 Source HLSL 500 Name 4 "CSMain" Name 6 "@CSMain(" Name 10 "data" MemberName 10(data) 0 "@data" Name 12 "data" Name 16 "@gl_SubgroupInvocationID" Name 21 "@gl_SubgroupSize" Decorate 9 ArrayStride 4 Decorate 10(data) Block MemberDecorate 10(data) 0 Offset 0 Decorate 12(data) Binding 0 Decorate 12(data) DescriptorSet 0 Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21(@gl_SubgroupSize) BuiltIn SubgroupSize 2: TypeVoid 3: TypeFunction 2 8: TypeInt 32 0 9: TypeRuntimeArray 8(int) 10(data): TypeStruct 9 11: TypePointer StorageBuffer 10(data) 12(data): 11(ptr) Variable StorageBuffer 13: TypeInt 32 1 14: 13(int) Constant 0 15: TypePointer Input 8(int) 16(@gl_SubgroupInvocationID): 15(ptr) Variable Input 18: TypeBool 19: 8(int) Constant 3 21(@gl_SubgroupSize): 15(ptr) Variable Input 23: 8(int) Constant 0 25: TypePointer StorageBuffer 8(int) 4(CSMain): 2 Function None 3 5: Label 27: 2 FunctionCall 6(@CSMain() Return FunctionEnd 6(@CSMain(): 2 Function None 3 7: Label 17: 8(int) Load 16(@gl_SubgroupInvocationID) 20: 18(bool) GroupNonUniformElect 19 22: 8(int) Load 21(@gl_SubgroupSize) 24: 8(int) Select 20 22 23 26: 25(ptr) AccessChain 12(data) 14 17 Store 26 24 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.wavequery.frag.out000066400000000000000000000113041506534232700231060ustar00rootroot00000000000000hlsl.wavequery.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Test condition and select ( temp void) 0:3 Condition 0:3 subgroupElect ( temp bool) 0:3 true case 0:? Sequence 0:5 Branch: Return with expression 0:5 Constant: 0:5 1.000000 0:5 2.000000 0:5 3.000000 0:5 4.000000 0:3 false case 0:? Sequence 0:9 Branch: Return with expression 0:9 Constant: 0:9 4.000000 0:9 3.000000 0:9 2.000000 0:9 1.000000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction( ( temp 4-component vector of float) 0:2 Function Parameters: 0:? Sequence 0:3 Test condition and select ( temp void) 0:3 Condition 0:3 subgroupElect ( temp bool) 0:3 true case 0:? Sequence 0:5 Branch: Return with expression 0:5 Constant: 0:5 1.000000 0:5 2.000000 0:5 3.000000 0:5 4.000000 0:3 false case 0:? Sequence 0:9 Branch: Return with expression 0:9 Constant: 0:9 4.000000 0:9 3.000000 0:9 2.000000 0:9 1.000000 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction( ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader Capability GroupNonUniform 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 28 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 9 "@PixelShaderFunction(" Name 28 "@entryPointOutput" Decorate 28(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeBool 12: TypeInt 32 0 13: 12(int) Constant 3 17: 6(float) Constant 1065353216 18: 6(float) Constant 1073741824 19: 6(float) Constant 1077936128 20: 6(float) Constant 1082130432 21: 7(fvec4) ConstantComposite 17 18 19 20 24: 7(fvec4) ConstantComposite 20 19 18 17 27: TypePointer Output 7(fvec4) 28(@entryPointOutput): 27(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 29: 7(fvec4) FunctionCall 9(@PixelShaderFunction() Store 28(@entryPointOutput) 29 Return FunctionEnd 9(@PixelShaderFunction(): 7(fvec4) Function None 8 10: Label 14: 11(bool) GroupNonUniformElect 13 SelectionMerge 16 None BranchConditional 14 15 23 15: Label ReturnValue 21 23: Label ReturnValue 24 16: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.wavereduction.comp.out000066400000000000000000020661611506534232700237710ustar00rootroot00000000000000hlsl.wavereduction.comp Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:13 Function Definition: @CSMain(vu3; ( temp void) 0:13 Function Parameters: 0:13 'dti' ( in 3-component vector of uint) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 subgroupAdd ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:15 move second child to first child ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 subgroupAdd ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:16 move second child to first child ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 subgroupAdd ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 subgroupAdd ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:19 move second child to first child ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupAdd ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 subgroupAdd ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupAdd ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupAdd ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupAdd ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 subgroupAdd ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 move second child to first child ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupAdd ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupAdd ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:29 move second child to first child ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 subgroupAdd ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 move second child to first child ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 subgroupAdd ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupAdd ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:32 move second child to first child ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupAdd ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupMul ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 subgroupMul ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 subgroupMul ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupMul ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:39 move second child to first child ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupMul ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupMul ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:41 move second child to first child ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupMul ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:42 move second child to first child ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupMul ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupMul ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupMul ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupMul ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupMul ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:49 move second child to first child ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 subgroupMul ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:50 move second child to first child ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupMul ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:51 move second child to first child ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupMul ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:52 move second child to first child ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupMul ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:54 move second child to first child ( temp 4-component vector of uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupMin ( temp 4-component vector of uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:55 move second child to first child ( temp uint) 0:55 direct index ( temp uint) 0:55 u: direct index for structure ( temp 4-component vector of uint) 0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:55 Constant: 0:55 0 (const uint) 0:55 direct index ( temp uint) 0:55 'dti' ( in 3-component vector of uint) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 subgroupMin ( temp uint) 0:55 direct index ( temp uint) 0:55 u: direct index for structure ( temp 4-component vector of uint) 0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:55 Constant: 0:55 0 (const uint) 0:55 direct index ( temp uint) 0:55 'dti' ( in 3-component vector of uint) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:56 move second child to first child ( temp 2-component vector of uint) 0:56 vector swizzle ( temp 2-component vector of uint) 0:56 u: direct index for structure ( temp 4-component vector of uint) 0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:56 Constant: 0:56 0 (const uint) 0:56 direct index ( temp uint) 0:56 'dti' ( in 3-component vector of uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupMin ( temp 2-component vector of uint) 0:56 vector swizzle ( temp 2-component vector of uint) 0:56 u: direct index for structure ( temp 4-component vector of uint) 0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:56 Constant: 0:56 0 (const uint) 0:56 direct index ( temp uint) 0:56 'dti' ( in 3-component vector of uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:57 move second child to first child ( temp 3-component vector of uint) 0:57 vector swizzle ( temp 3-component vector of uint) 0:57 u: direct index for structure ( temp 4-component vector of uint) 0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:57 Constant: 0:57 0 (const uint) 0:57 direct index ( temp uint) 0:57 'dti' ( in 3-component vector of uint) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupMin ( temp 3-component vector of uint) 0:57 vector swizzle ( temp 3-component vector of uint) 0:57 u: direct index for structure ( temp 4-component vector of uint) 0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:57 Constant: 0:57 0 (const uint) 0:57 direct index ( temp uint) 0:57 'dti' ( in 3-component vector of uint) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:59 move second child to first child ( temp 4-component vector of int) 0:59 i: direct index for structure ( temp 4-component vector of int) 0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:59 Constant: 0:59 0 (const uint) 0:59 direct index ( temp uint) 0:59 'dti' ( in 3-component vector of uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupMin ( temp 4-component vector of int) 0:59 i: direct index for structure ( temp 4-component vector of int) 0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:59 Constant: 0:59 0 (const uint) 0:59 direct index ( temp uint) 0:59 'dti' ( in 3-component vector of uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:60 move second child to first child ( temp int) 0:60 direct index ( temp int) 0:60 i: direct index for structure ( temp 4-component vector of int) 0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:60 Constant: 0:60 0 (const uint) 0:60 direct index ( temp uint) 0:60 'dti' ( in 3-component vector of uint) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 subgroupMin ( temp int) 0:60 direct index ( temp int) 0:60 i: direct index for structure ( temp 4-component vector of int) 0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:60 Constant: 0:60 0 (const uint) 0:60 direct index ( temp uint) 0:60 'dti' ( in 3-component vector of uint) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:61 move second child to first child ( temp 2-component vector of int) 0:61 vector swizzle ( temp 2-component vector of int) 0:61 i: direct index for structure ( temp 4-component vector of int) 0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:61 Constant: 0:61 0 (const uint) 0:61 direct index ( temp uint) 0:61 'dti' ( in 3-component vector of uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 subgroupMin ( temp 2-component vector of int) 0:61 vector swizzle ( temp 2-component vector of int) 0:61 i: direct index for structure ( temp 4-component vector of int) 0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:61 Constant: 0:61 0 (const uint) 0:61 direct index ( temp uint) 0:61 'dti' ( in 3-component vector of uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:62 move second child to first child ( temp 3-component vector of int) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 i: direct index for structure ( temp 4-component vector of int) 0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:62 Constant: 0:62 0 (const uint) 0:62 direct index ( temp uint) 0:62 'dti' ( in 3-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupMin ( temp 3-component vector of int) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 i: direct index for structure ( temp 4-component vector of int) 0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:62 Constant: 0:62 0 (const uint) 0:62 direct index ( temp uint) 0:62 'dti' ( in 3-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:64 move second child to first child ( temp 4-component vector of float) 0:64 f: direct index for structure ( temp 4-component vector of float) 0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:64 Constant: 0:64 0 (const uint) 0:64 direct index ( temp uint) 0:64 'dti' ( in 3-component vector of uint) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 subgroupMin ( temp 4-component vector of float) 0:64 f: direct index for structure ( temp 4-component vector of float) 0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:64 Constant: 0:64 0 (const uint) 0:64 direct index ( temp uint) 0:64 'dti' ( in 3-component vector of uint) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 2 (const int) 0:65 move second child to first child ( temp float) 0:65 direct index ( temp float) 0:65 f: direct index for structure ( temp 4-component vector of float) 0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:65 Constant: 0:65 0 (const uint) 0:65 direct index ( temp uint) 0:65 'dti' ( in 3-component vector of uint) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 subgroupMin ( temp float) 0:65 direct index ( temp float) 0:65 f: direct index for structure ( temp 4-component vector of float) 0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:65 Constant: 0:65 0 (const uint) 0:65 direct index ( temp uint) 0:65 'dti' ( in 3-component vector of uint) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:66 move second child to first child ( temp 2-component vector of float) 0:66 vector swizzle ( temp 2-component vector of float) 0:66 f: direct index for structure ( temp 4-component vector of float) 0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:66 Constant: 0:66 0 (const uint) 0:66 direct index ( temp uint) 0:66 'dti' ( in 3-component vector of uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupMin ( temp 2-component vector of float) 0:66 vector swizzle ( temp 2-component vector of float) 0:66 f: direct index for structure ( temp 4-component vector of float) 0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:66 Constant: 0:66 0 (const uint) 0:66 direct index ( temp uint) 0:66 'dti' ( in 3-component vector of uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:67 move second child to first child ( temp 3-component vector of float) 0:67 vector swizzle ( temp 3-component vector of float) 0:67 f: direct index for structure ( temp 4-component vector of float) 0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:67 Constant: 0:67 0 (const uint) 0:67 direct index ( temp uint) 0:67 'dti' ( in 3-component vector of uint) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 subgroupMin ( temp 3-component vector of float) 0:67 vector swizzle ( temp 3-component vector of float) 0:67 f: direct index for structure ( temp 4-component vector of float) 0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:67 Constant: 0:67 0 (const uint) 0:67 direct index ( temp uint) 0:67 'dti' ( in 3-component vector of uint) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:69 move second child to first child ( temp 4-component vector of double) 0:69 d: direct index for structure ( temp 4-component vector of double) 0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:69 Constant: 0:69 0 (const uint) 0:69 direct index ( temp uint) 0:69 'dti' ( in 3-component vector of uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 3 (const int) 0:69 subgroupMin ( temp 4-component vector of double) 0:69 d: direct index for structure ( temp 4-component vector of double) 0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:69 Constant: 0:69 0 (const uint) 0:69 direct index ( temp uint) 0:69 'dti' ( in 3-component vector of uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 3 (const int) 0:70 move second child to first child ( temp double) 0:70 direct index ( temp double) 0:70 d: direct index for structure ( temp 4-component vector of double) 0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:70 Constant: 0:70 0 (const uint) 0:70 direct index ( temp uint) 0:70 'dti' ( in 3-component vector of uint) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 3 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 subgroupMin ( temp double) 0:70 direct index ( temp double) 0:70 d: direct index for structure ( temp 4-component vector of double) 0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:70 Constant: 0:70 0 (const uint) 0:70 direct index ( temp uint) 0:70 'dti' ( in 3-component vector of uint) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 3 (const int) 0:70 Constant: 0:70 0 (const int) 0:71 move second child to first child ( temp 2-component vector of double) 0:71 vector swizzle ( temp 2-component vector of double) 0:71 d: direct index for structure ( temp 4-component vector of double) 0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:71 Constant: 0:71 0 (const uint) 0:71 direct index ( temp uint) 0:71 'dti' ( in 3-component vector of uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 3 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupMin ( temp 2-component vector of double) 0:71 vector swizzle ( temp 2-component vector of double) 0:71 d: direct index for structure ( temp 4-component vector of double) 0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:71 Constant: 0:71 0 (const uint) 0:71 direct index ( temp uint) 0:71 'dti' ( in 3-component vector of uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 3 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:72 move second child to first child ( temp 3-component vector of double) 0:72 vector swizzle ( temp 3-component vector of double) 0:72 d: direct index for structure ( temp 4-component vector of double) 0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:72 Constant: 0:72 0 (const uint) 0:72 direct index ( temp uint) 0:72 'dti' ( in 3-component vector of uint) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 3 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupMin ( temp 3-component vector of double) 0:72 vector swizzle ( temp 3-component vector of double) 0:72 d: direct index for structure ( temp 4-component vector of double) 0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:72 Constant: 0:72 0 (const uint) 0:72 direct index ( temp uint) 0:72 'dti' ( in 3-component vector of uint) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 3 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:74 move second child to first child ( temp 4-component vector of uint) 0:74 u: direct index for structure ( temp 4-component vector of uint) 0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp uint) 0:74 'dti' ( in 3-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupMax ( temp 4-component vector of uint) 0:74 u: direct index for structure ( temp 4-component vector of uint) 0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp uint) 0:74 'dti' ( in 3-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 0 (const int) 0:75 move second child to first child ( temp uint) 0:75 direct index ( temp uint) 0:75 u: direct index for structure ( temp 4-component vector of uint) 0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:75 Constant: 0:75 0 (const uint) 0:75 direct index ( temp uint) 0:75 'dti' ( in 3-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 subgroupMax ( temp uint) 0:75 direct index ( temp uint) 0:75 u: direct index for structure ( temp 4-component vector of uint) 0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:75 Constant: 0:75 0 (const uint) 0:75 direct index ( temp uint) 0:75 'dti' ( in 3-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:76 move second child to first child ( temp 2-component vector of uint) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 u: direct index for structure ( temp 4-component vector of uint) 0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:76 Constant: 0:76 0 (const uint) 0:76 direct index ( temp uint) 0:76 'dti' ( in 3-component vector of uint) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 subgroupMax ( temp 2-component vector of uint) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 u: direct index for structure ( temp 4-component vector of uint) 0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:76 Constant: 0:76 0 (const uint) 0:76 direct index ( temp uint) 0:76 'dti' ( in 3-component vector of uint) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:77 move second child to first child ( temp 3-component vector of uint) 0:77 vector swizzle ( temp 3-component vector of uint) 0:77 u: direct index for structure ( temp 4-component vector of uint) 0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:77 Constant: 0:77 0 (const uint) 0:77 direct index ( temp uint) 0:77 'dti' ( in 3-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 subgroupMax ( temp 3-component vector of uint) 0:77 vector swizzle ( temp 3-component vector of uint) 0:77 u: direct index for structure ( temp 4-component vector of uint) 0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:77 Constant: 0:77 0 (const uint) 0:77 direct index ( temp uint) 0:77 'dti' ( in 3-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:79 move second child to first child ( temp 4-component vector of int) 0:79 i: direct index for structure ( temp 4-component vector of int) 0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:79 Constant: 0:79 0 (const uint) 0:79 direct index ( temp uint) 0:79 'dti' ( in 3-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupMax ( temp 4-component vector of int) 0:79 i: direct index for structure ( temp 4-component vector of int) 0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:79 Constant: 0:79 0 (const uint) 0:79 direct index ( temp uint) 0:79 'dti' ( in 3-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:80 move second child to first child ( temp int) 0:80 direct index ( temp int) 0:80 i: direct index for structure ( temp 4-component vector of int) 0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:80 Constant: 0:80 0 (const uint) 0:80 direct index ( temp uint) 0:80 'dti' ( in 3-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 subgroupMax ( temp int) 0:80 direct index ( temp int) 0:80 i: direct index for structure ( temp 4-component vector of int) 0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:80 Constant: 0:80 0 (const uint) 0:80 direct index ( temp uint) 0:80 'dti' ( in 3-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:81 move second child to first child ( temp 2-component vector of int) 0:81 vector swizzle ( temp 2-component vector of int) 0:81 i: direct index for structure ( temp 4-component vector of int) 0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:81 Constant: 0:81 0 (const uint) 0:81 direct index ( temp uint) 0:81 'dti' ( in 3-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupMax ( temp 2-component vector of int) 0:81 vector swizzle ( temp 2-component vector of int) 0:81 i: direct index for structure ( temp 4-component vector of int) 0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:81 Constant: 0:81 0 (const uint) 0:81 direct index ( temp uint) 0:81 'dti' ( in 3-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:82 move second child to first child ( temp 3-component vector of int) 0:82 vector swizzle ( temp 3-component vector of int) 0:82 i: direct index for structure ( temp 4-component vector of int) 0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:82 Constant: 0:82 0 (const uint) 0:82 direct index ( temp uint) 0:82 'dti' ( in 3-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 subgroupMax ( temp 3-component vector of int) 0:82 vector swizzle ( temp 3-component vector of int) 0:82 i: direct index for structure ( temp 4-component vector of int) 0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:82 Constant: 0:82 0 (const uint) 0:82 direct index ( temp uint) 0:82 'dti' ( in 3-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:84 move second child to first child ( temp 4-component vector of float) 0:84 f: direct index for structure ( temp 4-component vector of float) 0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:84 Constant: 0:84 0 (const uint) 0:84 direct index ( temp uint) 0:84 'dti' ( in 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 subgroupMax ( temp 4-component vector of float) 0:84 f: direct index for structure ( temp 4-component vector of float) 0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:84 Constant: 0:84 0 (const uint) 0:84 direct index ( temp uint) 0:84 'dti' ( in 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 2 (const int) 0:85 move second child to first child ( temp float) 0:85 direct index ( temp float) 0:85 f: direct index for structure ( temp 4-component vector of float) 0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:85 Constant: 0:85 0 (const uint) 0:85 direct index ( temp uint) 0:85 'dti' ( in 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 subgroupMax ( temp float) 0:85 direct index ( temp float) 0:85 f: direct index for structure ( temp 4-component vector of float) 0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:85 Constant: 0:85 0 (const uint) 0:85 direct index ( temp uint) 0:85 'dti' ( in 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:86 move second child to first child ( temp 2-component vector of float) 0:86 vector swizzle ( temp 2-component vector of float) 0:86 f: direct index for structure ( temp 4-component vector of float) 0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:86 Constant: 0:86 0 (const uint) 0:86 direct index ( temp uint) 0:86 'dti' ( in 3-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 subgroupMax ( temp 2-component vector of float) 0:86 vector swizzle ( temp 2-component vector of float) 0:86 f: direct index for structure ( temp 4-component vector of float) 0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:86 Constant: 0:86 0 (const uint) 0:86 direct index ( temp uint) 0:86 'dti' ( in 3-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:87 move second child to first child ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 f: direct index for structure ( temp 4-component vector of float) 0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:87 Constant: 0:87 0 (const uint) 0:87 direct index ( temp uint) 0:87 'dti' ( in 3-component vector of uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 subgroupMax ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 f: direct index for structure ( temp 4-component vector of float) 0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:87 Constant: 0:87 0 (const uint) 0:87 direct index ( temp uint) 0:87 'dti' ( in 3-component vector of uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:89 move second child to first child ( temp 4-component vector of double) 0:89 d: direct index for structure ( temp 4-component vector of double) 0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:89 Constant: 0:89 0 (const uint) 0:89 direct index ( temp uint) 0:89 'dti' ( in 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 3 (const int) 0:89 subgroupMax ( temp 4-component vector of double) 0:89 d: direct index for structure ( temp 4-component vector of double) 0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:89 Constant: 0:89 0 (const uint) 0:89 direct index ( temp uint) 0:89 'dti' ( in 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 3 (const int) 0:90 move second child to first child ( temp double) 0:90 direct index ( temp double) 0:90 d: direct index for structure ( temp 4-component vector of double) 0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:90 Constant: 0:90 0 (const uint) 0:90 direct index ( temp uint) 0:90 'dti' ( in 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 subgroupMax ( temp double) 0:90 direct index ( temp double) 0:90 d: direct index for structure ( temp 4-component vector of double) 0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:90 Constant: 0:90 0 (const uint) 0:90 direct index ( temp uint) 0:90 'dti' ( in 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 move second child to first child ( temp 2-component vector of double) 0:91 vector swizzle ( temp 2-component vector of double) 0:91 d: direct index for structure ( temp 4-component vector of double) 0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:91 Constant: 0:91 0 (const uint) 0:91 direct index ( temp uint) 0:91 'dti' ( in 3-component vector of uint) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 3 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 subgroupMax ( temp 2-component vector of double) 0:91 vector swizzle ( temp 2-component vector of double) 0:91 d: direct index for structure ( temp 4-component vector of double) 0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:91 Constant: 0:91 0 (const uint) 0:91 direct index ( temp uint) 0:91 'dti' ( in 3-component vector of uint) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 3 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:92 move second child to first child ( temp 3-component vector of double) 0:92 vector swizzle ( temp 3-component vector of double) 0:92 d: direct index for structure ( temp 4-component vector of double) 0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:92 Constant: 0:92 0 (const uint) 0:92 direct index ( temp uint) 0:92 'dti' ( in 3-component vector of uint) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 3 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupMax ( temp 3-component vector of double) 0:92 vector swizzle ( temp 3-component vector of double) 0:92 d: direct index for structure ( temp 4-component vector of double) 0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:92 Constant: 0:92 0 (const uint) 0:92 direct index ( temp uint) 0:92 'dti' ( in 3-component vector of uint) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 3 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:94 move second child to first child ( temp 4-component vector of uint) 0:94 u: direct index for structure ( temp 4-component vector of uint) 0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:94 Constant: 0:94 0 (const uint) 0:94 direct index ( temp uint) 0:94 'dti' ( in 3-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupAnd ( temp 4-component vector of uint) 0:94 u: direct index for structure ( temp 4-component vector of uint) 0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:94 Constant: 0:94 0 (const uint) 0:94 direct index ( temp uint) 0:94 'dti' ( in 3-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:95 move second child to first child ( temp uint) 0:95 direct index ( temp uint) 0:95 u: direct index for structure ( temp 4-component vector of uint) 0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:95 Constant: 0:95 0 (const uint) 0:95 direct index ( temp uint) 0:95 'dti' ( in 3-component vector of uint) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 subgroupAnd ( temp uint) 0:95 direct index ( temp uint) 0:95 u: direct index for structure ( temp 4-component vector of uint) 0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:95 Constant: 0:95 0 (const uint) 0:95 direct index ( temp uint) 0:95 'dti' ( in 3-component vector of uint) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:96 move second child to first child ( temp 2-component vector of uint) 0:96 vector swizzle ( temp 2-component vector of uint) 0:96 u: direct index for structure ( temp 4-component vector of uint) 0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:96 Constant: 0:96 0 (const uint) 0:96 direct index ( temp uint) 0:96 'dti' ( in 3-component vector of uint) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupAnd ( temp 2-component vector of uint) 0:96 vector swizzle ( temp 2-component vector of uint) 0:96 u: direct index for structure ( temp 4-component vector of uint) 0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:96 Constant: 0:96 0 (const uint) 0:96 direct index ( temp uint) 0:96 'dti' ( in 3-component vector of uint) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:97 move second child to first child ( temp 3-component vector of uint) 0:97 vector swizzle ( temp 3-component vector of uint) 0:97 u: direct index for structure ( temp 4-component vector of uint) 0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:97 Constant: 0:97 0 (const uint) 0:97 direct index ( temp uint) 0:97 'dti' ( in 3-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 0 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 subgroupAnd ( temp 3-component vector of uint) 0:97 vector swizzle ( temp 3-component vector of uint) 0:97 u: direct index for structure ( temp 4-component vector of uint) 0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:97 Constant: 0:97 0 (const uint) 0:97 direct index ( temp uint) 0:97 'dti' ( in 3-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 0 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:99 move second child to first child ( temp 4-component vector of int) 0:99 i: direct index for structure ( temp 4-component vector of int) 0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:99 Constant: 0:99 0 (const uint) 0:99 direct index ( temp uint) 0:99 'dti' ( in 3-component vector of uint) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 subgroupAnd ( temp 4-component vector of int) 0:99 i: direct index for structure ( temp 4-component vector of int) 0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:99 Constant: 0:99 0 (const uint) 0:99 direct index ( temp uint) 0:99 'dti' ( in 3-component vector of uint) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:100 move second child to first child ( temp int) 0:100 direct index ( temp int) 0:100 i: direct index for structure ( temp 4-component vector of int) 0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:100 Constant: 0:100 0 (const uint) 0:100 direct index ( temp uint) 0:100 'dti' ( in 3-component vector of uint) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 subgroupAnd ( temp int) 0:100 direct index ( temp int) 0:100 i: direct index for structure ( temp 4-component vector of int) 0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:100 Constant: 0:100 0 (const uint) 0:100 direct index ( temp uint) 0:100 'dti' ( in 3-component vector of uint) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:101 move second child to first child ( temp 2-component vector of int) 0:101 vector swizzle ( temp 2-component vector of int) 0:101 i: direct index for structure ( temp 4-component vector of int) 0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:101 Constant: 0:101 0 (const uint) 0:101 direct index ( temp uint) 0:101 'dti' ( in 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 subgroupAnd ( temp 2-component vector of int) 0:101 vector swizzle ( temp 2-component vector of int) 0:101 i: direct index for structure ( temp 4-component vector of int) 0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:101 Constant: 0:101 0 (const uint) 0:101 direct index ( temp uint) 0:101 'dti' ( in 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 move second child to first child ( temp 3-component vector of int) 0:102 vector swizzle ( temp 3-component vector of int) 0:102 i: direct index for structure ( temp 4-component vector of int) 0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:102 Constant: 0:102 0 (const uint) 0:102 direct index ( temp uint) 0:102 'dti' ( in 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:102 subgroupAnd ( temp 3-component vector of int) 0:102 vector swizzle ( temp 3-component vector of int) 0:102 i: direct index for structure ( temp 4-component vector of int) 0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:102 Constant: 0:102 0 (const uint) 0:102 direct index ( temp uint) 0:102 'dti' ( in 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:104 move second child to first child ( temp 4-component vector of uint) 0:104 u: direct index for structure ( temp 4-component vector of uint) 0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:104 Constant: 0:104 0 (const uint) 0:104 direct index ( temp uint) 0:104 'dti' ( in 3-component vector of uint) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 subgroupOr ( temp 4-component vector of uint) 0:104 u: direct index for structure ( temp 4-component vector of uint) 0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:104 Constant: 0:104 0 (const uint) 0:104 direct index ( temp uint) 0:104 'dti' ( in 3-component vector of uint) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 0 (const int) 0:105 move second child to first child ( temp uint) 0:105 direct index ( temp uint) 0:105 u: direct index for structure ( temp 4-component vector of uint) 0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:105 Constant: 0:105 0 (const uint) 0:105 direct index ( temp uint) 0:105 'dti' ( in 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 subgroupOr ( temp uint) 0:105 direct index ( temp uint) 0:105 u: direct index for structure ( temp 4-component vector of uint) 0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:105 Constant: 0:105 0 (const uint) 0:105 direct index ( temp uint) 0:105 'dti' ( in 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0 (const int) 0:106 move second child to first child ( temp 2-component vector of uint) 0:106 vector swizzle ( temp 2-component vector of uint) 0:106 u: direct index for structure ( temp 4-component vector of uint) 0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:106 Constant: 0:106 0 (const uint) 0:106 direct index ( temp uint) 0:106 'dti' ( in 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 subgroupOr ( temp 2-component vector of uint) 0:106 vector swizzle ( temp 2-component vector of uint) 0:106 u: direct index for structure ( temp 4-component vector of uint) 0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:106 Constant: 0:106 0 (const uint) 0:106 direct index ( temp uint) 0:106 'dti' ( in 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:107 move second child to first child ( temp 3-component vector of uint) 0:107 vector swizzle ( temp 3-component vector of uint) 0:107 u: direct index for structure ( temp 4-component vector of uint) 0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:107 Constant: 0:107 0 (const uint) 0:107 direct index ( temp uint) 0:107 'dti' ( in 3-component vector of uint) 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 0 (const int) 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:107 subgroupOr ( temp 3-component vector of uint) 0:107 vector swizzle ( temp 3-component vector of uint) 0:107 u: direct index for structure ( temp 4-component vector of uint) 0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:107 Constant: 0:107 0 (const uint) 0:107 direct index ( temp uint) 0:107 'dti' ( in 3-component vector of uint) 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 0 (const int) 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 move second child to first child ( temp 4-component vector of int) 0:109 i: direct index for structure ( temp 4-component vector of int) 0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:109 Constant: 0:109 0 (const uint) 0:109 direct index ( temp uint) 0:109 'dti' ( in 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 subgroupOr ( temp 4-component vector of int) 0:109 i: direct index for structure ( temp 4-component vector of int) 0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:109 Constant: 0:109 0 (const uint) 0:109 direct index ( temp uint) 0:109 'dti' ( in 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:110 move second child to first child ( temp int) 0:110 direct index ( temp int) 0:110 i: direct index for structure ( temp 4-component vector of int) 0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:110 Constant: 0:110 0 (const uint) 0:110 direct index ( temp uint) 0:110 'dti' ( in 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 subgroupOr ( temp int) 0:110 direct index ( temp int) 0:110 i: direct index for structure ( temp 4-component vector of int) 0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:110 Constant: 0:110 0 (const uint) 0:110 direct index ( temp uint) 0:110 'dti' ( in 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:111 move second child to first child ( temp 2-component vector of int) 0:111 vector swizzle ( temp 2-component vector of int) 0:111 i: direct index for structure ( temp 4-component vector of int) 0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:111 Constant: 0:111 0 (const uint) 0:111 direct index ( temp uint) 0:111 'dti' ( in 3-component vector of uint) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 subgroupOr ( temp 2-component vector of int) 0:111 vector swizzle ( temp 2-component vector of int) 0:111 i: direct index for structure ( temp 4-component vector of int) 0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:111 Constant: 0:111 0 (const uint) 0:111 direct index ( temp uint) 0:111 'dti' ( in 3-component vector of uint) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:112 move second child to first child ( temp 3-component vector of int) 0:112 vector swizzle ( temp 3-component vector of int) 0:112 i: direct index for structure ( temp 4-component vector of int) 0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:112 Constant: 0:112 0 (const uint) 0:112 direct index ( temp uint) 0:112 'dti' ( in 3-component vector of uint) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1 (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:112 subgroupOr ( temp 3-component vector of int) 0:112 vector swizzle ( temp 3-component vector of int) 0:112 i: direct index for structure ( temp 4-component vector of int) 0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:112 Constant: 0:112 0 (const uint) 0:112 direct index ( temp uint) 0:112 'dti' ( in 3-component vector of uint) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1 (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 move second child to first child ( temp 4-component vector of uint) 0:114 u: direct index for structure ( temp 4-component vector of uint) 0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:114 Constant: 0:114 0 (const uint) 0:114 direct index ( temp uint) 0:114 'dti' ( in 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 subgroupXor ( temp 4-component vector of uint) 0:114 u: direct index for structure ( temp 4-component vector of uint) 0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:114 Constant: 0:114 0 (const uint) 0:114 direct index ( temp uint) 0:114 'dti' ( in 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:115 move second child to first child ( temp uint) 0:115 direct index ( temp uint) 0:115 u: direct index for structure ( temp 4-component vector of uint) 0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:115 Constant: 0:115 0 (const uint) 0:115 direct index ( temp uint) 0:115 'dti' ( in 3-component vector of uint) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 subgroupXor ( temp uint) 0:115 direct index ( temp uint) 0:115 u: direct index for structure ( temp 4-component vector of uint) 0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:115 Constant: 0:115 0 (const uint) 0:115 direct index ( temp uint) 0:115 'dti' ( in 3-component vector of uint) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:116 move second child to first child ( temp 2-component vector of uint) 0:116 vector swizzle ( temp 2-component vector of uint) 0:116 u: direct index for structure ( temp 4-component vector of uint) 0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:116 Constant: 0:116 0 (const uint) 0:116 direct index ( temp uint) 0:116 'dti' ( in 3-component vector of uint) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 subgroupXor ( temp 2-component vector of uint) 0:116 vector swizzle ( temp 2-component vector of uint) 0:116 u: direct index for structure ( temp 4-component vector of uint) 0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:116 Constant: 0:116 0 (const uint) 0:116 direct index ( temp uint) 0:116 'dti' ( in 3-component vector of uint) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:117 move second child to first child ( temp 3-component vector of uint) 0:117 vector swizzle ( temp 3-component vector of uint) 0:117 u: direct index for structure ( temp 4-component vector of uint) 0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:117 Constant: 0:117 0 (const uint) 0:117 direct index ( temp uint) 0:117 'dti' ( in 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 subgroupXor ( temp 3-component vector of uint) 0:117 vector swizzle ( temp 3-component vector of uint) 0:117 u: direct index for structure ( temp 4-component vector of uint) 0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:117 Constant: 0:117 0 (const uint) 0:117 direct index ( temp uint) 0:117 'dti' ( in 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:119 move second child to first child ( temp 4-component vector of int) 0:119 i: direct index for structure ( temp 4-component vector of int) 0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:119 Constant: 0:119 0 (const uint) 0:119 direct index ( temp uint) 0:119 'dti' ( in 3-component vector of uint) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 subgroupXor ( temp 4-component vector of int) 0:119 i: direct index for structure ( temp 4-component vector of int) 0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:119 Constant: 0:119 0 (const uint) 0:119 direct index ( temp uint) 0:119 'dti' ( in 3-component vector of uint) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:120 move second child to first child ( temp int) 0:120 direct index ( temp int) 0:120 i: direct index for structure ( temp 4-component vector of int) 0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:120 Constant: 0:120 0 (const uint) 0:120 direct index ( temp uint) 0:120 'dti' ( in 3-component vector of uint) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 subgroupXor ( temp int) 0:120 direct index ( temp int) 0:120 i: direct index for structure ( temp 4-component vector of int) 0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:120 Constant: 0:120 0 (const uint) 0:120 direct index ( temp uint) 0:120 'dti' ( in 3-component vector of uint) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 0 (const int) 0:121 move second child to first child ( temp 2-component vector of int) 0:121 vector swizzle ( temp 2-component vector of int) 0:121 i: direct index for structure ( temp 4-component vector of int) 0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:121 Constant: 0:121 0 (const uint) 0:121 direct index ( temp uint) 0:121 'dti' ( in 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 subgroupXor ( temp 2-component vector of int) 0:121 vector swizzle ( temp 2-component vector of int) 0:121 i: direct index for structure ( temp 4-component vector of int) 0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:121 Constant: 0:121 0 (const uint) 0:121 direct index ( temp uint) 0:121 'dti' ( in 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:122 move second child to first child ( temp 3-component vector of int) 0:122 vector swizzle ( temp 3-component vector of int) 0:122 i: direct index for structure ( temp 4-component vector of int) 0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:122 Constant: 0:122 0 (const uint) 0:122 direct index ( temp uint) 0:122 'dti' ( in 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 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 subgroupXor ( temp 3-component vector of int) 0:122 vector swizzle ( temp 3-component vector of int) 0:122 i: direct index for structure ( temp 4-component vector of int) 0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:122 Constant: 0:122 0 (const uint) 0:122 direct index ( temp uint) 0:122 'dti' ( in 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 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:124 move second child to first child ( temp uint) 0:124 direct index ( temp uint) 0:124 u: direct index for structure ( temp 4-component vector of uint) 0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:124 Constant: 0:124 0 (const uint) 0:124 direct index ( temp uint) 0:124 'dti' ( in 3-component vector of uint) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 subgroupBallotBitCount ( temp uint) 0:124 subgroupBallot ( temp 4-component vector of uint) 0:124 Compare Equal ( temp bool) 0:124 direct index ( temp uint) 0:124 u: direct index for structure ( temp 4-component vector of uint) 0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:124 Constant: 0:124 0 (const uint) 0:124 direct index ( temp uint) 0:124 'dti' ( in 3-component vector of uint) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const uint) 0:13 Function Definition: CSMain( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:13 Function Definition: @CSMain(vu3; ( temp void) 0:13 Function Parameters: 0:13 'dti' ( in 3-component vector of uint) 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:14 subgroupAdd ( temp 4-component vector of uint) 0:14 u: direct index for structure ( temp 4-component vector of uint) 0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 direct index ( temp uint) 0:14 'dti' ( in 3-component vector of uint) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 0 (const int) 0:15 move second child to first child ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 subgroupAdd ( temp uint) 0:15 direct index ( temp uint) 0:15 u: direct index for structure ( temp 4-component vector of uint) 0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 direct index ( temp uint) 0:15 'dti' ( in 3-component vector of uint) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 0 (const int) 0:16 move second child to first child ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:16 subgroupAdd ( temp 2-component vector of uint) 0:16 vector swizzle ( temp 2-component vector of uint) 0:16 u: direct index for structure ( temp 4-component vector of uint) 0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 direct index ( temp uint) 0:16 'dti' ( in 3-component vector of uint) 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 0 (const int) 0:16 Sequence 0:16 Constant: 0:16 0 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 subgroupAdd ( temp 3-component vector of uint) 0:17 vector swizzle ( temp 3-component vector of uint) 0:17 u: direct index for structure ( temp 4-component vector of uint) 0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 direct index ( temp uint) 0:17 'dti' ( in 3-component vector of uint) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 0 (const int) 0:17 Sequence 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 2 (const int) 0:19 move second child to first child ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:19 subgroupAdd ( temp 4-component vector of int) 0:19 i: direct index for structure ( temp 4-component vector of int) 0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 direct index ( temp uint) 0:19 'dti' ( in 3-component vector of uint) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:20 subgroupAdd ( temp int) 0:20 direct index ( temp int) 0:20 i: direct index for structure ( temp 4-component vector of int) 0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 direct index ( temp uint) 0:20 'dti' ( in 3-component vector of uint) 0:20 Constant: 0:20 0 (const int) 0:20 Constant: 0:20 1 (const int) 0:20 Constant: 0:20 0 (const int) 0:21 move second child to first child ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 subgroupAdd ( temp 2-component vector of int) 0:21 vector swizzle ( temp 2-component vector of int) 0:21 i: direct index for structure ( temp 4-component vector of int) 0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 direct index ( temp uint) 0:21 'dti' ( in 3-component vector of uint) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:21 Sequence 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:22 subgroupAdd ( temp 3-component vector of int) 0:22 vector swizzle ( temp 3-component vector of int) 0:22 i: direct index for structure ( temp 4-component vector of int) 0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 direct index ( temp uint) 0:22 'dti' ( in 3-component vector of uint) 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Sequence 0:22 Constant: 0:22 0 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 2 (const int) 0:24 move second child to first child ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:24 subgroupAdd ( temp 4-component vector of float) 0:24 f: direct index for structure ( temp 4-component vector of float) 0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 direct index ( temp uint) 0:24 'dti' ( in 3-component vector of uint) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 2 (const int) 0:25 move second child to first child ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:25 subgroupAdd ( temp float) 0:25 direct index ( temp float) 0:25 f: direct index for structure ( temp 4-component vector of float) 0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:25 Constant: 0:25 0 (const uint) 0:25 direct index ( temp uint) 0:25 'dti' ( in 3-component vector of uint) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 move second child to first child ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 subgroupAdd ( temp 2-component vector of float) 0:26 vector swizzle ( temp 2-component vector of float) 0:26 f: direct index for structure ( temp 4-component vector of float) 0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:26 Constant: 0:26 0 (const uint) 0:26 direct index ( temp uint) 0:26 'dti' ( in 3-component vector of uint) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:27 move second child to first child ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 subgroupAdd ( temp 3-component vector of float) 0:27 vector swizzle ( temp 3-component vector of float) 0:27 f: direct index for structure ( temp 4-component vector of float) 0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:27 Constant: 0:27 0 (const uint) 0:27 direct index ( temp uint) 0:27 'dti' ( in 3-component vector of uint) 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Sequence 0:27 Constant: 0:27 0 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 2 (const int) 0:29 move second child to first child ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:29 subgroupAdd ( temp 4-component vector of double) 0:29 d: direct index for structure ( temp 4-component vector of double) 0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:29 Constant: 0:29 0 (const uint) 0:29 direct index ( temp uint) 0:29 'dti' ( in 3-component vector of uint) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 3 (const int) 0:30 move second child to first child ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 subgroupAdd ( temp double) 0:30 direct index ( temp double) 0:30 d: direct index for structure ( temp 4-component vector of double) 0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:30 Constant: 0:30 0 (const uint) 0:30 direct index ( temp uint) 0:30 'dti' ( in 3-component vector of uint) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 3 (const int) 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:31 subgroupAdd ( temp 2-component vector of double) 0:31 vector swizzle ( temp 2-component vector of double) 0:31 d: direct index for structure ( temp 4-component vector of double) 0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:31 Constant: 0:31 0 (const uint) 0:31 direct index ( temp uint) 0:31 'dti' ( in 3-component vector of uint) 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 Sequence 0:31 Constant: 0:31 0 (const int) 0:31 Constant: 0:31 1 (const int) 0:32 move second child to first child ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:32 subgroupAdd ( temp 3-component vector of double) 0:32 vector swizzle ( temp 3-component vector of double) 0:32 d: direct index for structure ( temp 4-component vector of double) 0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:32 Constant: 0:32 0 (const uint) 0:32 direct index ( temp uint) 0:32 'dti' ( in 3-component vector of uint) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 3 (const int) 0:32 Sequence 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 2 (const int) 0:34 move second child to first child ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 subgroupMul ( temp 4-component vector of uint) 0:34 u: direct index for structure ( temp 4-component vector of uint) 0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:34 Constant: 0:34 0 (const uint) 0:34 direct index ( temp uint) 0:34 'dti' ( in 3-component vector of uint) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 subgroupMul ( temp uint) 0:35 direct index ( temp uint) 0:35 u: direct index for structure ( temp 4-component vector of uint) 0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:35 Constant: 0:35 0 (const uint) 0:35 direct index ( temp uint) 0:35 'dti' ( in 3-component vector of uint) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:36 move second child to first child ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:36 subgroupMul ( temp 2-component vector of uint) 0:36 vector swizzle ( temp 2-component vector of uint) 0:36 u: direct index for structure ( temp 4-component vector of uint) 0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:36 Constant: 0:36 0 (const uint) 0:36 direct index ( temp uint) 0:36 'dti' ( in 3-component vector of uint) 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 0 (const int) 0:36 Sequence 0:36 Constant: 0:36 0 (const int) 0:36 Constant: 0:36 1 (const int) 0:37 move second child to first child ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 subgroupMul ( temp 3-component vector of uint) 0:37 vector swizzle ( temp 3-component vector of uint) 0:37 u: direct index for structure ( temp 4-component vector of uint) 0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:37 Constant: 0:37 0 (const uint) 0:37 direct index ( temp uint) 0:37 'dti' ( in 3-component vector of uint) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Sequence 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: 0:37 2 (const int) 0:39 move second child to first child ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 subgroupMul ( temp 4-component vector of int) 0:39 i: direct index for structure ( temp 4-component vector of int) 0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:39 Constant: 0:39 0 (const uint) 0:39 direct index ( temp uint) 0:39 'dti' ( in 3-component vector of uint) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:40 move second child to first child ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:40 subgroupMul ( temp int) 0:40 direct index ( temp int) 0:40 i: direct index for structure ( temp 4-component vector of int) 0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:40 Constant: 0:40 0 (const uint) 0:40 direct index ( temp uint) 0:40 'dti' ( in 3-component vector of uint) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:41 move second child to first child ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 subgroupMul ( temp 2-component vector of int) 0:41 vector swizzle ( temp 2-component vector of int) 0:41 i: direct index for structure ( temp 4-component vector of int) 0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:41 Constant: 0:41 0 (const uint) 0:41 direct index ( temp uint) 0:41 'dti' ( in 3-component vector of uint) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:42 move second child to first child ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:42 subgroupMul ( temp 3-component vector of int) 0:42 vector swizzle ( temp 3-component vector of int) 0:42 i: direct index for structure ( temp 4-component vector of int) 0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:42 Constant: 0:42 0 (const uint) 0:42 direct index ( temp uint) 0:42 'dti' ( in 3-component vector of uint) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Sequence 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 2 (const int) 0:44 move second child to first child ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:44 subgroupMul ( temp 4-component vector of float) 0:44 f: direct index for structure ( temp 4-component vector of float) 0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:44 Constant: 0:44 0 (const uint) 0:44 direct index ( temp uint) 0:44 'dti' ( in 3-component vector of uint) 0:44 Constant: 0:44 0 (const int) 0:44 Constant: 0:44 2 (const int) 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:45 subgroupMul ( temp float) 0:45 direct index ( temp float) 0:45 f: direct index for structure ( temp 4-component vector of float) 0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:45 Constant: 0:45 0 (const uint) 0:45 direct index ( temp uint) 0:45 'dti' ( in 3-component vector of uint) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 2 (const int) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:46 subgroupMul ( temp 2-component vector of float) 0:46 vector swizzle ( temp 2-component vector of float) 0:46 f: direct index for structure ( temp 4-component vector of float) 0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:46 Constant: 0:46 0 (const uint) 0:46 direct index ( temp uint) 0:46 'dti' ( in 3-component vector of uint) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 2 (const int) 0:46 Sequence 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 1 (const int) 0:47 move second child to first child ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 subgroupMul ( temp 3-component vector of float) 0:47 vector swizzle ( temp 3-component vector of float) 0:47 f: direct index for structure ( temp 4-component vector of float) 0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:47 Constant: 0:47 0 (const uint) 0:47 direct index ( temp uint) 0:47 'dti' ( in 3-component vector of uint) 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 2 (const int) 0:47 Sequence 0:47 Constant: 0:47 0 (const int) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 2 (const int) 0:49 move second child to first child ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:49 subgroupMul ( temp 4-component vector of double) 0:49 d: direct index for structure ( temp 4-component vector of double) 0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:49 Constant: 0:49 0 (const uint) 0:49 direct index ( temp uint) 0:49 'dti' ( in 3-component vector of uint) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3 (const int) 0:50 move second child to first child ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:50 subgroupMul ( temp double) 0:50 direct index ( temp double) 0:50 d: direct index for structure ( temp 4-component vector of double) 0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:50 Constant: 0:50 0 (const uint) 0:50 direct index ( temp uint) 0:50 'dti' ( in 3-component vector of uint) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 3 (const int) 0:50 Constant: 0:50 0 (const int) 0:51 move second child to first child ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:51 subgroupMul ( temp 2-component vector of double) 0:51 vector swizzle ( temp 2-component vector of double) 0:51 d: direct index for structure ( temp 4-component vector of double) 0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:51 Constant: 0:51 0 (const uint) 0:51 direct index ( temp uint) 0:51 'dti' ( in 3-component vector of uint) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:52 move second child to first child ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:52 subgroupMul ( temp 3-component vector of double) 0:52 vector swizzle ( temp 3-component vector of double) 0:52 d: direct index for structure ( temp 4-component vector of double) 0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:52 Constant: 0:52 0 (const uint) 0:52 direct index ( temp uint) 0:52 'dti' ( in 3-component vector of uint) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 3 (const int) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 2 (const int) 0:54 move second child to first child ( temp 4-component vector of uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:54 subgroupMin ( temp 4-component vector of uint) 0:54 u: direct index for structure ( temp 4-component vector of uint) 0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:54 Constant: 0:54 0 (const uint) 0:54 direct index ( temp uint) 0:54 'dti' ( in 3-component vector of uint) 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) 0:55 move second child to first child ( temp uint) 0:55 direct index ( temp uint) 0:55 u: direct index for structure ( temp 4-component vector of uint) 0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:55 Constant: 0:55 0 (const uint) 0:55 direct index ( temp uint) 0:55 'dti' ( in 3-component vector of uint) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 subgroupMin ( temp uint) 0:55 direct index ( temp uint) 0:55 u: direct index for structure ( temp 4-component vector of uint) 0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:55 Constant: 0:55 0 (const uint) 0:55 direct index ( temp uint) 0:55 'dti' ( in 3-component vector of uint) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:55 Constant: 0:55 0 (const int) 0:56 move second child to first child ( temp 2-component vector of uint) 0:56 vector swizzle ( temp 2-component vector of uint) 0:56 u: direct index for structure ( temp 4-component vector of uint) 0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:56 Constant: 0:56 0 (const uint) 0:56 direct index ( temp uint) 0:56 'dti' ( in 3-component vector of uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 subgroupMin ( temp 2-component vector of uint) 0:56 vector swizzle ( temp 2-component vector of uint) 0:56 u: direct index for structure ( temp 4-component vector of uint) 0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:56 Constant: 0:56 0 (const uint) 0:56 direct index ( temp uint) 0:56 'dti' ( in 3-component vector of uint) 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 0 (const int) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:57 move second child to first child ( temp 3-component vector of uint) 0:57 vector swizzle ( temp 3-component vector of uint) 0:57 u: direct index for structure ( temp 4-component vector of uint) 0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:57 Constant: 0:57 0 (const uint) 0:57 direct index ( temp uint) 0:57 'dti' ( in 3-component vector of uint) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:57 subgroupMin ( temp 3-component vector of uint) 0:57 vector swizzle ( temp 3-component vector of uint) 0:57 u: direct index for structure ( temp 4-component vector of uint) 0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:57 Constant: 0:57 0 (const uint) 0:57 direct index ( temp uint) 0:57 'dti' ( in 3-component vector of uint) 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 0 (const int) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 Constant: 0:57 2 (const int) 0:59 move second child to first child ( temp 4-component vector of int) 0:59 i: direct index for structure ( temp 4-component vector of int) 0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:59 Constant: 0:59 0 (const uint) 0:59 direct index ( temp uint) 0:59 'dti' ( in 3-component vector of uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 subgroupMin ( temp 4-component vector of int) 0:59 i: direct index for structure ( temp 4-component vector of int) 0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:59 Constant: 0:59 0 (const uint) 0:59 direct index ( temp uint) 0:59 'dti' ( in 3-component vector of uint) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:60 move second child to first child ( temp int) 0:60 direct index ( temp int) 0:60 i: direct index for structure ( temp 4-component vector of int) 0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:60 Constant: 0:60 0 (const uint) 0:60 direct index ( temp uint) 0:60 'dti' ( in 3-component vector of uint) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:60 subgroupMin ( temp int) 0:60 direct index ( temp int) 0:60 i: direct index for structure ( temp 4-component vector of int) 0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:60 Constant: 0:60 0 (const uint) 0:60 direct index ( temp uint) 0:60 'dti' ( in 3-component vector of uint) 0:60 Constant: 0:60 0 (const int) 0:60 Constant: 0:60 1 (const int) 0:60 Constant: 0:60 0 (const int) 0:61 move second child to first child ( temp 2-component vector of int) 0:61 vector swizzle ( temp 2-component vector of int) 0:61 i: direct index for structure ( temp 4-component vector of int) 0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:61 Constant: 0:61 0 (const uint) 0:61 direct index ( temp uint) 0:61 'dti' ( in 3-component vector of uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 subgroupMin ( temp 2-component vector of int) 0:61 vector swizzle ( temp 2-component vector of int) 0:61 i: direct index for structure ( temp 4-component vector of int) 0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:61 Constant: 0:61 0 (const uint) 0:61 direct index ( temp uint) 0:61 'dti' ( in 3-component vector of uint) 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) 0:61 Constant: 0:61 1 (const int) 0:62 move second child to first child ( temp 3-component vector of int) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 i: direct index for structure ( temp 4-component vector of int) 0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:62 Constant: 0:62 0 (const uint) 0:62 direct index ( temp uint) 0:62 'dti' ( in 3-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:62 subgroupMin ( temp 3-component vector of int) 0:62 vector swizzle ( temp 3-component vector of int) 0:62 i: direct index for structure ( temp 4-component vector of int) 0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:62 Constant: 0:62 0 (const uint) 0:62 direct index ( temp uint) 0:62 'dti' ( in 3-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 1 (const int) 0:62 Constant: 0:62 2 (const int) 0:64 move second child to first child ( temp 4-component vector of float) 0:64 f: direct index for structure ( temp 4-component vector of float) 0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:64 Constant: 0:64 0 (const uint) 0:64 direct index ( temp uint) 0:64 'dti' ( in 3-component vector of uint) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 2 (const int) 0:64 subgroupMin ( temp 4-component vector of float) 0:64 f: direct index for structure ( temp 4-component vector of float) 0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:64 Constant: 0:64 0 (const uint) 0:64 direct index ( temp uint) 0:64 'dti' ( in 3-component vector of uint) 0:64 Constant: 0:64 0 (const int) 0:64 Constant: 0:64 2 (const int) 0:65 move second child to first child ( temp float) 0:65 direct index ( temp float) 0:65 f: direct index for structure ( temp 4-component vector of float) 0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:65 Constant: 0:65 0 (const uint) 0:65 direct index ( temp uint) 0:65 'dti' ( in 3-component vector of uint) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:65 subgroupMin ( temp float) 0:65 direct index ( temp float) 0:65 f: direct index for structure ( temp 4-component vector of float) 0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:65 Constant: 0:65 0 (const uint) 0:65 direct index ( temp uint) 0:65 'dti' ( in 3-component vector of uint) 0:65 Constant: 0:65 0 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 Constant: 0:65 0 (const int) 0:66 move second child to first child ( temp 2-component vector of float) 0:66 vector swizzle ( temp 2-component vector of float) 0:66 f: direct index for structure ( temp 4-component vector of float) 0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:66 Constant: 0:66 0 (const uint) 0:66 direct index ( temp uint) 0:66 'dti' ( in 3-component vector of uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:66 subgroupMin ( temp 2-component vector of float) 0:66 vector swizzle ( temp 2-component vector of float) 0:66 f: direct index for structure ( temp 4-component vector of float) 0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:66 Constant: 0:66 0 (const uint) 0:66 direct index ( temp uint) 0:66 'dti' ( in 3-component vector of uint) 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 2 (const int) 0:66 Sequence 0:66 Constant: 0:66 0 (const int) 0:66 Constant: 0:66 1 (const int) 0:67 move second child to first child ( temp 3-component vector of float) 0:67 vector swizzle ( temp 3-component vector of float) 0:67 f: direct index for structure ( temp 4-component vector of float) 0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:67 Constant: 0:67 0 (const uint) 0:67 direct index ( temp uint) 0:67 'dti' ( in 3-component vector of uint) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 subgroupMin ( temp 3-component vector of float) 0:67 vector swizzle ( temp 3-component vector of float) 0:67 f: direct index for structure ( temp 4-component vector of float) 0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:67 Constant: 0:67 0 (const uint) 0:67 direct index ( temp uint) 0:67 'dti' ( in 3-component vector of uint) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 2 (const int) 0:67 Sequence 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 1 (const int) 0:67 Constant: 0:67 2 (const int) 0:69 move second child to first child ( temp 4-component vector of double) 0:69 d: direct index for structure ( temp 4-component vector of double) 0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:69 Constant: 0:69 0 (const uint) 0:69 direct index ( temp uint) 0:69 'dti' ( in 3-component vector of uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 3 (const int) 0:69 subgroupMin ( temp 4-component vector of double) 0:69 d: direct index for structure ( temp 4-component vector of double) 0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:69 Constant: 0:69 0 (const uint) 0:69 direct index ( temp uint) 0:69 'dti' ( in 3-component vector of uint) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 3 (const int) 0:70 move second child to first child ( temp double) 0:70 direct index ( temp double) 0:70 d: direct index for structure ( temp 4-component vector of double) 0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:70 Constant: 0:70 0 (const uint) 0:70 direct index ( temp uint) 0:70 'dti' ( in 3-component vector of uint) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 3 (const int) 0:70 Constant: 0:70 0 (const int) 0:70 subgroupMin ( temp double) 0:70 direct index ( temp double) 0:70 d: direct index for structure ( temp 4-component vector of double) 0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:70 Constant: 0:70 0 (const uint) 0:70 direct index ( temp uint) 0:70 'dti' ( in 3-component vector of uint) 0:70 Constant: 0:70 0 (const int) 0:70 Constant: 0:70 3 (const int) 0:70 Constant: 0:70 0 (const int) 0:71 move second child to first child ( temp 2-component vector of double) 0:71 vector swizzle ( temp 2-component vector of double) 0:71 d: direct index for structure ( temp 4-component vector of double) 0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:71 Constant: 0:71 0 (const uint) 0:71 direct index ( temp uint) 0:71 'dti' ( in 3-component vector of uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 3 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 subgroupMin ( temp 2-component vector of double) 0:71 vector swizzle ( temp 2-component vector of double) 0:71 d: direct index for structure ( temp 4-component vector of double) 0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:71 Constant: 0:71 0 (const uint) 0:71 direct index ( temp uint) 0:71 'dti' ( in 3-component vector of uint) 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 3 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:72 move second child to first child ( temp 3-component vector of double) 0:72 vector swizzle ( temp 3-component vector of double) 0:72 d: direct index for structure ( temp 4-component vector of double) 0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:72 Constant: 0:72 0 (const uint) 0:72 direct index ( temp uint) 0:72 'dti' ( in 3-component vector of uint) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 3 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:72 subgroupMin ( temp 3-component vector of double) 0:72 vector swizzle ( temp 3-component vector of double) 0:72 d: direct index for structure ( temp 4-component vector of double) 0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:72 Constant: 0:72 0 (const uint) 0:72 direct index ( temp uint) 0:72 'dti' ( in 3-component vector of uint) 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 3 (const int) 0:72 Sequence 0:72 Constant: 0:72 0 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 2 (const int) 0:74 move second child to first child ( temp 4-component vector of uint) 0:74 u: direct index for structure ( temp 4-component vector of uint) 0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp uint) 0:74 'dti' ( in 3-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 0 (const int) 0:74 subgroupMax ( temp 4-component vector of uint) 0:74 u: direct index for structure ( temp 4-component vector of uint) 0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp uint) 0:74 'dti' ( in 3-component vector of uint) 0:74 Constant: 0:74 0 (const int) 0:74 Constant: 0:74 0 (const int) 0:75 move second child to first child ( temp uint) 0:75 direct index ( temp uint) 0:75 u: direct index for structure ( temp 4-component vector of uint) 0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:75 Constant: 0:75 0 (const uint) 0:75 direct index ( temp uint) 0:75 'dti' ( in 3-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 subgroupMax ( temp uint) 0:75 direct index ( temp uint) 0:75 u: direct index for structure ( temp 4-component vector of uint) 0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:75 Constant: 0:75 0 (const uint) 0:75 direct index ( temp uint) 0:75 'dti' ( in 3-component vector of uint) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:75 Constant: 0:75 0 (const int) 0:76 move second child to first child ( temp 2-component vector of uint) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 u: direct index for structure ( temp 4-component vector of uint) 0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:76 Constant: 0:76 0 (const uint) 0:76 direct index ( temp uint) 0:76 'dti' ( in 3-component vector of uint) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:76 subgroupMax ( temp 2-component vector of uint) 0:76 vector swizzle ( temp 2-component vector of uint) 0:76 u: direct index for structure ( temp 4-component vector of uint) 0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:76 Constant: 0:76 0 (const uint) 0:76 direct index ( temp uint) 0:76 'dti' ( in 3-component vector of uint) 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 0 (const int) 0:76 Sequence 0:76 Constant: 0:76 0 (const int) 0:76 Constant: 0:76 1 (const int) 0:77 move second child to first child ( temp 3-component vector of uint) 0:77 vector swizzle ( temp 3-component vector of uint) 0:77 u: direct index for structure ( temp 4-component vector of uint) 0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:77 Constant: 0:77 0 (const uint) 0:77 direct index ( temp uint) 0:77 'dti' ( in 3-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:77 subgroupMax ( temp 3-component vector of uint) 0:77 vector swizzle ( temp 3-component vector of uint) 0:77 u: direct index for structure ( temp 4-component vector of uint) 0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:77 Constant: 0:77 0 (const uint) 0:77 direct index ( temp uint) 0:77 'dti' ( in 3-component vector of uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0 (const int) 0:77 Sequence 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 1 (const int) 0:77 Constant: 0:77 2 (const int) 0:79 move second child to first child ( temp 4-component vector of int) 0:79 i: direct index for structure ( temp 4-component vector of int) 0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:79 Constant: 0:79 0 (const uint) 0:79 direct index ( temp uint) 0:79 'dti' ( in 3-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subgroupMax ( temp 4-component vector of int) 0:79 i: direct index for structure ( temp 4-component vector of int) 0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:79 Constant: 0:79 0 (const uint) 0:79 direct index ( temp uint) 0:79 'dti' ( in 3-component vector of uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:80 move second child to first child ( temp int) 0:80 direct index ( temp int) 0:80 i: direct index for structure ( temp 4-component vector of int) 0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:80 Constant: 0:80 0 (const uint) 0:80 direct index ( temp uint) 0:80 'dti' ( in 3-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:80 subgroupMax ( temp int) 0:80 direct index ( temp int) 0:80 i: direct index for structure ( temp 4-component vector of int) 0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:80 Constant: 0:80 0 (const uint) 0:80 direct index ( temp uint) 0:80 'dti' ( in 3-component vector of uint) 0:80 Constant: 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0 (const int) 0:81 move second child to first child ( temp 2-component vector of int) 0:81 vector swizzle ( temp 2-component vector of int) 0:81 i: direct index for structure ( temp 4-component vector of int) 0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:81 Constant: 0:81 0 (const uint) 0:81 direct index ( temp uint) 0:81 'dti' ( in 3-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 subgroupMax ( temp 2-component vector of int) 0:81 vector swizzle ( temp 2-component vector of int) 0:81 i: direct index for structure ( temp 4-component vector of int) 0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:81 Constant: 0:81 0 (const uint) 0:81 direct index ( temp uint) 0:81 'dti' ( in 3-component vector of uint) 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:81 Sequence 0:81 Constant: 0:81 0 (const int) 0:81 Constant: 0:81 1 (const int) 0:82 move second child to first child ( temp 3-component vector of int) 0:82 vector swizzle ( temp 3-component vector of int) 0:82 i: direct index for structure ( temp 4-component vector of int) 0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:82 Constant: 0:82 0 (const uint) 0:82 direct index ( temp uint) 0:82 'dti' ( in 3-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:82 subgroupMax ( temp 3-component vector of int) 0:82 vector swizzle ( temp 3-component vector of int) 0:82 i: direct index for structure ( temp 4-component vector of int) 0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:82 Constant: 0:82 0 (const uint) 0:82 direct index ( temp uint) 0:82 'dti' ( in 3-component vector of uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Sequence 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 1 (const int) 0:82 Constant: 0:82 2 (const int) 0:84 move second child to first child ( temp 4-component vector of float) 0:84 f: direct index for structure ( temp 4-component vector of float) 0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:84 Constant: 0:84 0 (const uint) 0:84 direct index ( temp uint) 0:84 'dti' ( in 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 2 (const int) 0:84 subgroupMax ( temp 4-component vector of float) 0:84 f: direct index for structure ( temp 4-component vector of float) 0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:84 Constant: 0:84 0 (const uint) 0:84 direct index ( temp uint) 0:84 'dti' ( in 3-component vector of uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 2 (const int) 0:85 move second child to first child ( temp float) 0:85 direct index ( temp float) 0:85 f: direct index for structure ( temp 4-component vector of float) 0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:85 Constant: 0:85 0 (const uint) 0:85 direct index ( temp uint) 0:85 'dti' ( in 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:85 subgroupMax ( temp float) 0:85 direct index ( temp float) 0:85 f: direct index for structure ( temp 4-component vector of float) 0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:85 Constant: 0:85 0 (const uint) 0:85 direct index ( temp uint) 0:85 'dti' ( in 3-component vector of uint) 0:85 Constant: 0:85 0 (const int) 0:85 Constant: 0:85 2 (const int) 0:85 Constant: 0:85 0 (const int) 0:86 move second child to first child ( temp 2-component vector of float) 0:86 vector swizzle ( temp 2-component vector of float) 0:86 f: direct index for structure ( temp 4-component vector of float) 0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:86 Constant: 0:86 0 (const uint) 0:86 direct index ( temp uint) 0:86 'dti' ( in 3-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:86 subgroupMax ( temp 2-component vector of float) 0:86 vector swizzle ( temp 2-component vector of float) 0:86 f: direct index for structure ( temp 4-component vector of float) 0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:86 Constant: 0:86 0 (const uint) 0:86 direct index ( temp uint) 0:86 'dti' ( in 3-component vector of uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 2 (const int) 0:86 Sequence 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 1 (const int) 0:87 move second child to first child ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 f: direct index for structure ( temp 4-component vector of float) 0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:87 Constant: 0:87 0 (const uint) 0:87 direct index ( temp uint) 0:87 'dti' ( in 3-component vector of uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 subgroupMax ( temp 3-component vector of float) 0:87 vector swizzle ( temp 3-component vector of float) 0:87 f: direct index for structure ( temp 4-component vector of float) 0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:87 Constant: 0:87 0 (const uint) 0:87 direct index ( temp uint) 0:87 'dti' ( in 3-component vector of uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 2 (const int) 0:87 Sequence 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 2 (const int) 0:89 move second child to first child ( temp 4-component vector of double) 0:89 d: direct index for structure ( temp 4-component vector of double) 0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:89 Constant: 0:89 0 (const uint) 0:89 direct index ( temp uint) 0:89 'dti' ( in 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 3 (const int) 0:89 subgroupMax ( temp 4-component vector of double) 0:89 d: direct index for structure ( temp 4-component vector of double) 0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:89 Constant: 0:89 0 (const uint) 0:89 direct index ( temp uint) 0:89 'dti' ( in 3-component vector of uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 3 (const int) 0:90 move second child to first child ( temp double) 0:90 direct index ( temp double) 0:90 d: direct index for structure ( temp 4-component vector of double) 0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:90 Constant: 0:90 0 (const uint) 0:90 direct index ( temp uint) 0:90 'dti' ( in 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 subgroupMax ( temp double) 0:90 direct index ( temp double) 0:90 d: direct index for structure ( temp 4-component vector of double) 0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:90 Constant: 0:90 0 (const uint) 0:90 direct index ( temp uint) 0:90 'dti' ( in 3-component vector of uint) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 3 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 move second child to first child ( temp 2-component vector of double) 0:91 vector swizzle ( temp 2-component vector of double) 0:91 d: direct index for structure ( temp 4-component vector of double) 0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:91 Constant: 0:91 0 (const uint) 0:91 direct index ( temp uint) 0:91 'dti' ( in 3-component vector of uint) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 3 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 subgroupMax ( temp 2-component vector of double) 0:91 vector swizzle ( temp 2-component vector of double) 0:91 d: direct index for structure ( temp 4-component vector of double) 0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:91 Constant: 0:91 0 (const uint) 0:91 direct index ( temp uint) 0:91 'dti' ( in 3-component vector of uint) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 3 (const int) 0:91 Sequence 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:92 move second child to first child ( temp 3-component vector of double) 0:92 vector swizzle ( temp 3-component vector of double) 0:92 d: direct index for structure ( temp 4-component vector of double) 0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:92 Constant: 0:92 0 (const uint) 0:92 direct index ( temp uint) 0:92 'dti' ( in 3-component vector of uint) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 3 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 subgroupMax ( temp 3-component vector of double) 0:92 vector swizzle ( temp 3-component vector of double) 0:92 d: direct index for structure ( temp 4-component vector of double) 0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:92 Constant: 0:92 0 (const uint) 0:92 direct index ( temp uint) 0:92 'dti' ( in 3-component vector of uint) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 3 (const int) 0:92 Sequence 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 2 (const int) 0:94 move second child to first child ( temp 4-component vector of uint) 0:94 u: direct index for structure ( temp 4-component vector of uint) 0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:94 Constant: 0:94 0 (const uint) 0:94 direct index ( temp uint) 0:94 'dti' ( in 3-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:94 subgroupAnd ( temp 4-component vector of uint) 0:94 u: direct index for structure ( temp 4-component vector of uint) 0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:94 Constant: 0:94 0 (const uint) 0:94 direct index ( temp uint) 0:94 'dti' ( in 3-component vector of uint) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0 (const int) 0:95 move second child to first child ( temp uint) 0:95 direct index ( temp uint) 0:95 u: direct index for structure ( temp 4-component vector of uint) 0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:95 Constant: 0:95 0 (const uint) 0:95 direct index ( temp uint) 0:95 'dti' ( in 3-component vector of uint) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 subgroupAnd ( temp uint) 0:95 direct index ( temp uint) 0:95 u: direct index for structure ( temp 4-component vector of uint) 0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:95 Constant: 0:95 0 (const uint) 0:95 direct index ( temp uint) 0:95 'dti' ( in 3-component vector of uint) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:96 move second child to first child ( temp 2-component vector of uint) 0:96 vector swizzle ( temp 2-component vector of uint) 0:96 u: direct index for structure ( temp 4-component vector of uint) 0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:96 Constant: 0:96 0 (const uint) 0:96 direct index ( temp uint) 0:96 'dti' ( in 3-component vector of uint) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:96 subgroupAnd ( temp 2-component vector of uint) 0:96 vector swizzle ( temp 2-component vector of uint) 0:96 u: direct index for structure ( temp 4-component vector of uint) 0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:96 Constant: 0:96 0 (const uint) 0:96 direct index ( temp uint) 0:96 'dti' ( in 3-component vector of uint) 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 0 (const int) 0:96 Sequence 0:96 Constant: 0:96 0 (const int) 0:96 Constant: 0:96 1 (const int) 0:97 move second child to first child ( temp 3-component vector of uint) 0:97 vector swizzle ( temp 3-component vector of uint) 0:97 u: direct index for structure ( temp 4-component vector of uint) 0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:97 Constant: 0:97 0 (const uint) 0:97 direct index ( temp uint) 0:97 'dti' ( in 3-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 0 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:97 subgroupAnd ( temp 3-component vector of uint) 0:97 vector swizzle ( temp 3-component vector of uint) 0:97 u: direct index for structure ( temp 4-component vector of uint) 0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:97 Constant: 0:97 0 (const uint) 0:97 direct index ( temp uint) 0:97 'dti' ( in 3-component vector of uint) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 0 (const int) 0:97 Sequence 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 2 (const int) 0:99 move second child to first child ( temp 4-component vector of int) 0:99 i: direct index for structure ( temp 4-component vector of int) 0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:99 Constant: 0:99 0 (const uint) 0:99 direct index ( temp uint) 0:99 'dti' ( in 3-component vector of uint) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 subgroupAnd ( temp 4-component vector of int) 0:99 i: direct index for structure ( temp 4-component vector of int) 0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:99 Constant: 0:99 0 (const uint) 0:99 direct index ( temp uint) 0:99 'dti' ( in 3-component vector of uint) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:100 move second child to first child ( temp int) 0:100 direct index ( temp int) 0:100 i: direct index for structure ( temp 4-component vector of int) 0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:100 Constant: 0:100 0 (const uint) 0:100 direct index ( temp uint) 0:100 'dti' ( in 3-component vector of uint) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 subgroupAnd ( temp int) 0:100 direct index ( temp int) 0:100 i: direct index for structure ( temp 4-component vector of int) 0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:100 Constant: 0:100 0 (const uint) 0:100 direct index ( temp uint) 0:100 'dti' ( in 3-component vector of uint) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:101 move second child to first child ( temp 2-component vector of int) 0:101 vector swizzle ( temp 2-component vector of int) 0:101 i: direct index for structure ( temp 4-component vector of int) 0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:101 Constant: 0:101 0 (const uint) 0:101 direct index ( temp uint) 0:101 'dti' ( in 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 subgroupAnd ( temp 2-component vector of int) 0:101 vector swizzle ( temp 2-component vector of int) 0:101 i: direct index for structure ( temp 4-component vector of int) 0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:101 Constant: 0:101 0 (const uint) 0:101 direct index ( temp uint) 0:101 'dti' ( in 3-component vector of uint) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 move second child to first child ( temp 3-component vector of int) 0:102 vector swizzle ( temp 3-component vector of int) 0:102 i: direct index for structure ( temp 4-component vector of int) 0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:102 Constant: 0:102 0 (const uint) 0:102 direct index ( temp uint) 0:102 'dti' ( in 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:102 subgroupAnd ( temp 3-component vector of int) 0:102 vector swizzle ( temp 3-component vector of int) 0:102 i: direct index for structure ( temp 4-component vector of int) 0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:102 Constant: 0:102 0 (const uint) 0:102 direct index ( temp uint) 0:102 'dti' ( in 3-component vector of uint) 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Sequence 0:102 Constant: 0:102 0 (const int) 0:102 Constant: 0:102 1 (const int) 0:102 Constant: 0:102 2 (const int) 0:104 move second child to first child ( temp 4-component vector of uint) 0:104 u: direct index for structure ( temp 4-component vector of uint) 0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:104 Constant: 0:104 0 (const uint) 0:104 direct index ( temp uint) 0:104 'dti' ( in 3-component vector of uint) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 0 (const int) 0:104 subgroupOr ( temp 4-component vector of uint) 0:104 u: direct index for structure ( temp 4-component vector of uint) 0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:104 Constant: 0:104 0 (const uint) 0:104 direct index ( temp uint) 0:104 'dti' ( in 3-component vector of uint) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 0 (const int) 0:105 move second child to first child ( temp uint) 0:105 direct index ( temp uint) 0:105 u: direct index for structure ( temp 4-component vector of uint) 0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:105 Constant: 0:105 0 (const uint) 0:105 direct index ( temp uint) 0:105 'dti' ( in 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 subgroupOr ( temp uint) 0:105 direct index ( temp uint) 0:105 u: direct index for structure ( temp 4-component vector of uint) 0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:105 Constant: 0:105 0 (const uint) 0:105 direct index ( temp uint) 0:105 'dti' ( in 3-component vector of uint) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0 (const int) 0:105 Constant: 0:105 0 (const int) 0:106 move second child to first child ( temp 2-component vector of uint) 0:106 vector swizzle ( temp 2-component vector of uint) 0:106 u: direct index for structure ( temp 4-component vector of uint) 0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:106 Constant: 0:106 0 (const uint) 0:106 direct index ( temp uint) 0:106 'dti' ( in 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:106 subgroupOr ( temp 2-component vector of uint) 0:106 vector swizzle ( temp 2-component vector of uint) 0:106 u: direct index for structure ( temp 4-component vector of uint) 0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:106 Constant: 0:106 0 (const uint) 0:106 direct index ( temp uint) 0:106 'dti' ( in 3-component vector of uint) 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 0 (const int) 0:106 Sequence 0:106 Constant: 0:106 0 (const int) 0:106 Constant: 0:106 1 (const int) 0:107 move second child to first child ( temp 3-component vector of uint) 0:107 vector swizzle ( temp 3-component vector of uint) 0:107 u: direct index for structure ( temp 4-component vector of uint) 0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:107 Constant: 0:107 0 (const uint) 0:107 direct index ( temp uint) 0:107 'dti' ( in 3-component vector of uint) 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 0 (const int) 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:107 subgroupOr ( temp 3-component vector of uint) 0:107 vector swizzle ( temp 3-component vector of uint) 0:107 u: direct index for structure ( temp 4-component vector of uint) 0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:107 Constant: 0:107 0 (const uint) 0:107 direct index ( temp uint) 0:107 'dti' ( in 3-component vector of uint) 0:107 Constant: 0:107 0 (const int) 0:107 Constant: 0:107 0 (const int) 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 move second child to first child ( temp 4-component vector of int) 0:109 i: direct index for structure ( temp 4-component vector of int) 0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:109 Constant: 0:109 0 (const uint) 0:109 direct index ( temp uint) 0:109 'dti' ( in 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:109 subgroupOr ( temp 4-component vector of int) 0:109 i: direct index for structure ( temp 4-component vector of int) 0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:109 Constant: 0:109 0 (const uint) 0:109 direct index ( temp uint) 0:109 'dti' ( in 3-component vector of uint) 0:109 Constant: 0:109 0 (const int) 0:109 Constant: 0:109 1 (const int) 0:110 move second child to first child ( temp int) 0:110 direct index ( temp int) 0:110 i: direct index for structure ( temp 4-component vector of int) 0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:110 Constant: 0:110 0 (const uint) 0:110 direct index ( temp uint) 0:110 'dti' ( in 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:110 subgroupOr ( temp int) 0:110 direct index ( temp int) 0:110 i: direct index for structure ( temp 4-component vector of int) 0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:110 Constant: 0:110 0 (const uint) 0:110 direct index ( temp uint) 0:110 'dti' ( in 3-component vector of uint) 0:110 Constant: 0:110 0 (const int) 0:110 Constant: 0:110 1 (const int) 0:110 Constant: 0:110 0 (const int) 0:111 move second child to first child ( temp 2-component vector of int) 0:111 vector swizzle ( temp 2-component vector of int) 0:111 i: direct index for structure ( temp 4-component vector of int) 0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:111 Constant: 0:111 0 (const uint) 0:111 direct index ( temp uint) 0:111 'dti' ( in 3-component vector of uint) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 subgroupOr ( temp 2-component vector of int) 0:111 vector swizzle ( temp 2-component vector of int) 0:111 i: direct index for structure ( temp 4-component vector of int) 0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:111 Constant: 0:111 0 (const uint) 0:111 direct index ( temp uint) 0:111 'dti' ( in 3-component vector of uint) 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:111 Sequence 0:111 Constant: 0:111 0 (const int) 0:111 Constant: 0:111 1 (const int) 0:112 move second child to first child ( temp 3-component vector of int) 0:112 vector swizzle ( temp 3-component vector of int) 0:112 i: direct index for structure ( temp 4-component vector of int) 0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:112 Constant: 0:112 0 (const uint) 0:112 direct index ( temp uint) 0:112 'dti' ( in 3-component vector of uint) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1 (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:112 subgroupOr ( temp 3-component vector of int) 0:112 vector swizzle ( temp 3-component vector of int) 0:112 i: direct index for structure ( temp 4-component vector of int) 0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:112 Constant: 0:112 0 (const uint) 0:112 direct index ( temp uint) 0:112 'dti' ( in 3-component vector of uint) 0:112 Constant: 0:112 0 (const int) 0:112 Constant: 0:112 1 (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 move second child to first child ( temp 4-component vector of uint) 0:114 u: direct index for structure ( temp 4-component vector of uint) 0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:114 Constant: 0:114 0 (const uint) 0:114 direct index ( temp uint) 0:114 'dti' ( in 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:114 subgroupXor ( temp 4-component vector of uint) 0:114 u: direct index for structure ( temp 4-component vector of uint) 0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:114 Constant: 0:114 0 (const uint) 0:114 direct index ( temp uint) 0:114 'dti' ( in 3-component vector of uint) 0:114 Constant: 0:114 0 (const int) 0:114 Constant: 0:114 0 (const int) 0:115 move second child to first child ( temp uint) 0:115 direct index ( temp uint) 0:115 u: direct index for structure ( temp 4-component vector of uint) 0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:115 Constant: 0:115 0 (const uint) 0:115 direct index ( temp uint) 0:115 'dti' ( in 3-component vector of uint) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 subgroupXor ( temp uint) 0:115 direct index ( temp uint) 0:115 u: direct index for structure ( temp 4-component vector of uint) 0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:115 Constant: 0:115 0 (const uint) 0:115 direct index ( temp uint) 0:115 'dti' ( in 3-component vector of uint) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:115 Constant: 0:115 0 (const int) 0:116 move second child to first child ( temp 2-component vector of uint) 0:116 vector swizzle ( temp 2-component vector of uint) 0:116 u: direct index for structure ( temp 4-component vector of uint) 0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:116 Constant: 0:116 0 (const uint) 0:116 direct index ( temp uint) 0:116 'dti' ( in 3-component vector of uint) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:116 subgroupXor ( temp 2-component vector of uint) 0:116 vector swizzle ( temp 2-component vector of uint) 0:116 u: direct index for structure ( temp 4-component vector of uint) 0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:116 Constant: 0:116 0 (const uint) 0:116 direct index ( temp uint) 0:116 'dti' ( in 3-component vector of uint) 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 0 (const int) 0:116 Sequence 0:116 Constant: 0:116 0 (const int) 0:116 Constant: 0:116 1 (const int) 0:117 move second child to first child ( temp 3-component vector of uint) 0:117 vector swizzle ( temp 3-component vector of uint) 0:117 u: direct index for structure ( temp 4-component vector of uint) 0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:117 Constant: 0:117 0 (const uint) 0:117 direct index ( temp uint) 0:117 'dti' ( in 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:117 subgroupXor ( temp 3-component vector of uint) 0:117 vector swizzle ( temp 3-component vector of uint) 0:117 u: direct index for structure ( temp 4-component vector of uint) 0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:117 Constant: 0:117 0 (const uint) 0:117 direct index ( temp uint) 0:117 'dti' ( in 3-component vector of uint) 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 0 (const int) 0:117 Sequence 0:117 Constant: 0:117 0 (const int) 0:117 Constant: 0:117 1 (const int) 0:117 Constant: 0:117 2 (const int) 0:119 move second child to first child ( temp 4-component vector of int) 0:119 i: direct index for structure ( temp 4-component vector of int) 0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:119 Constant: 0:119 0 (const uint) 0:119 direct index ( temp uint) 0:119 'dti' ( in 3-component vector of uint) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:119 subgroupXor ( temp 4-component vector of int) 0:119 i: direct index for structure ( temp 4-component vector of int) 0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:119 Constant: 0:119 0 (const uint) 0:119 direct index ( temp uint) 0:119 'dti' ( in 3-component vector of uint) 0:119 Constant: 0:119 0 (const int) 0:119 Constant: 0:119 1 (const int) 0:120 move second child to first child ( temp int) 0:120 direct index ( temp int) 0:120 i: direct index for structure ( temp 4-component vector of int) 0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:120 Constant: 0:120 0 (const uint) 0:120 direct index ( temp uint) 0:120 'dti' ( in 3-component vector of uint) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 0 (const int) 0:120 subgroupXor ( temp int) 0:120 direct index ( temp int) 0:120 i: direct index for structure ( temp 4-component vector of int) 0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:120 Constant: 0:120 0 (const uint) 0:120 direct index ( temp uint) 0:120 'dti' ( in 3-component vector of uint) 0:120 Constant: 0:120 0 (const int) 0:120 Constant: 0:120 1 (const int) 0:120 Constant: 0:120 0 (const int) 0:121 move second child to first child ( temp 2-component vector of int) 0:121 vector swizzle ( temp 2-component vector of int) 0:121 i: direct index for structure ( temp 4-component vector of int) 0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:121 Constant: 0:121 0 (const uint) 0:121 direct index ( temp uint) 0:121 'dti' ( in 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 subgroupXor ( temp 2-component vector of int) 0:121 vector swizzle ( temp 2-component vector of int) 0:121 i: direct index for structure ( temp 4-component vector of int) 0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:121 Constant: 0:121 0 (const uint) 0:121 direct index ( temp uint) 0:121 'dti' ( in 3-component vector of uint) 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:121 Sequence 0:121 Constant: 0:121 0 (const int) 0:121 Constant: 0:121 1 (const int) 0:122 move second child to first child ( temp 3-component vector of int) 0:122 vector swizzle ( temp 3-component vector of int) 0:122 i: direct index for structure ( temp 4-component vector of int) 0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:122 Constant: 0:122 0 (const uint) 0:122 direct index ( temp uint) 0:122 'dti' ( in 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 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 subgroupXor ( temp 3-component vector of int) 0:122 vector swizzle ( temp 3-component vector of int) 0:122 i: direct index for structure ( temp 4-component vector of int) 0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:122 Constant: 0:122 0 (const uint) 0:122 direct index ( temp uint) 0:122 'dti' ( in 3-component vector of uint) 0:122 Constant: 0:122 0 (const int) 0:122 Constant: 0:122 1 (const int) 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:124 move second child to first child ( temp uint) 0:124 direct index ( temp uint) 0:124 u: direct index for structure ( temp 4-component vector of uint) 0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:124 Constant: 0:124 0 (const uint) 0:124 direct index ( temp uint) 0:124 'dti' ( in 3-component vector of uint) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 subgroupBallotBitCount ( temp uint) 0:124 subgroupBallot ( temp 4-component vector of uint) 0:124 Compare Equal ( temp bool) 0:124 direct index ( temp uint) 0:124 u: direct index for structure ( temp 4-component vector of uint) 0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d}) 0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:124 Constant: 0:124 0 (const uint) 0:124 direct index ( temp uint) 0:124 'dti' ( in 3-component vector of uint) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const int) 0:124 Constant: 0:124 0 (const uint) 0:13 Function Definition: CSMain( ( temp void) 0:13 Function Parameters: 0:? Sequence 0:13 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:13 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 991 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformArithmetic Capability GroupNonUniformBallot 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "CSMain" 986 ExecutionMode 4 LocalSize 32 16 1 Source HLSL 500 Name 4 "CSMain" Name 11 "@CSMain(vu3;" Name 10 "dti" Name 20 "Types" MemberName 20(Types) 0 "u" MemberName 20(Types) 1 "i" MemberName 20(Types) 2 "f" MemberName 20(Types) 3 "d" Name 22 "data" MemberName 22(data) 0 "@data" Name 24 "data" Name 984 "dti" Name 986 "dti" Name 988 "param" MemberDecorate 20(Types) 0 Offset 0 MemberDecorate 20(Types) 1 Offset 16 MemberDecorate 20(Types) 2 Offset 32 MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 Decorate 22(data) Block MemberDecorate 22(data) 0 Offset 0 Decorate 24(data) Binding 0 Decorate 24(data) DescriptorSet 0 Decorate 986(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeVector 6(int) 4 14: TypeInt 32 1 15: TypeVector 14(int) 4 16: TypeFloat 32 17: TypeVector 16(float) 4 18: TypeFloat 64 19: TypeVector 18(float64_t) 4 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4) 21: TypeRuntimeArray 20(Types) 22(data): TypeStruct 21 23: TypePointer StorageBuffer 22(data) 24(data): 23(ptr) Variable StorageBuffer 25: 14(int) Constant 0 26: 6(int) Constant 0 27: TypePointer Function 6(int) 32: TypePointer StorageBuffer 13(ivec4) 35: 6(int) Constant 3 42: TypePointer StorageBuffer 6(int) 51: TypeVector 6(int) 2 58: 6(int) Constant 1 73: 6(int) Constant 2 78: 14(int) Constant 1 81: TypePointer StorageBuffer 15(ivec4) 90: TypePointer StorageBuffer 14(int) 99: TypeVector 14(int) 2 112: TypeVector 14(int) 3 125: 14(int) Constant 2 128: TypePointer StorageBuffer 17(fvec4) 137: TypePointer StorageBuffer 16(float) 146: TypeVector 16(float) 2 159: TypeVector 16(float) 3 172: 14(int) Constant 3 175: TypePointer StorageBuffer 19(f64vec4) 184: TypePointer StorageBuffer 18(float64_t) 193: TypeVector 18(float64_t) 2 206: TypeVector 18(float64_t) 3 979: TypeBool 985: TypePointer Input 7(ivec3) 986(dti): 985(ptr) Variable Input 4(CSMain): 2 Function None 3 5: Label 984(dti): 8(ptr) Variable Function 988(param): 8(ptr) Variable Function 987: 7(ivec3) Load 986(dti) Store 984(dti) 987 989: 7(ivec3) Load 984(dti) Store 988(param) 989 990: 2 FunctionCall 11(@CSMain(vu3;) 988(param) Return FunctionEnd 11(@CSMain(vu3;): 2 Function None 9 10(dti): 8(ptr) FunctionParameter 12: Label 28: 27(ptr) AccessChain 10(dti) 26 29: 6(int) Load 28 30: 27(ptr) AccessChain 10(dti) 26 31: 6(int) Load 30 33: 32(ptr) AccessChain 24(data) 25 31 25 34: 13(ivec4) Load 33 36: 13(ivec4) GroupNonUniformIAdd 35 Reduce 34 37: 32(ptr) AccessChain 24(data) 25 29 25 Store 37 36 38: 27(ptr) AccessChain 10(dti) 26 39: 6(int) Load 38 40: 27(ptr) AccessChain 10(dti) 26 41: 6(int) Load 40 43: 42(ptr) AccessChain 24(data) 25 41 25 26 44: 6(int) Load 43 45: 6(int) GroupNonUniformIAdd 35 Reduce 44 46: 42(ptr) AccessChain 24(data) 25 39 25 26 Store 46 45 47: 27(ptr) AccessChain 10(dti) 26 48: 6(int) Load 47 49: 27(ptr) AccessChain 10(dti) 26 50: 6(int) Load 49 52: 32(ptr) AccessChain 24(data) 25 50 25 53: 13(ivec4) Load 52 54: 51(ivec2) VectorShuffle 53 53 0 1 55: 51(ivec2) GroupNonUniformIAdd 35 Reduce 54 56: 42(ptr) AccessChain 24(data) 25 48 25 26 57: 6(int) CompositeExtract 55 0 Store 56 57 59: 42(ptr) AccessChain 24(data) 25 48 25 58 60: 6(int) CompositeExtract 55 1 Store 59 60 61: 27(ptr) AccessChain 10(dti) 26 62: 6(int) Load 61 63: 27(ptr) AccessChain 10(dti) 26 64: 6(int) Load 63 65: 32(ptr) AccessChain 24(data) 25 64 25 66: 13(ivec4) Load 65 67: 7(ivec3) VectorShuffle 66 66 0 1 2 68: 7(ivec3) GroupNonUniformIAdd 35 Reduce 67 69: 42(ptr) AccessChain 24(data) 25 62 25 26 70: 6(int) CompositeExtract 68 0 Store 69 70 71: 42(ptr) AccessChain 24(data) 25 62 25 58 72: 6(int) CompositeExtract 68 1 Store 71 72 74: 42(ptr) AccessChain 24(data) 25 62 25 73 75: 6(int) CompositeExtract 68 2 Store 74 75 76: 27(ptr) AccessChain 10(dti) 26 77: 6(int) Load 76 79: 27(ptr) AccessChain 10(dti) 26 80: 6(int) Load 79 82: 81(ptr) AccessChain 24(data) 25 80 78 83: 15(ivec4) Load 82 84: 15(ivec4) GroupNonUniformIAdd 35 Reduce 83 85: 81(ptr) AccessChain 24(data) 25 77 78 Store 85 84 86: 27(ptr) AccessChain 10(dti) 26 87: 6(int) Load 86 88: 27(ptr) AccessChain 10(dti) 26 89: 6(int) Load 88 91: 90(ptr) AccessChain 24(data) 25 89 78 26 92: 14(int) Load 91 93: 14(int) GroupNonUniformIAdd 35 Reduce 92 94: 90(ptr) AccessChain 24(data) 25 87 78 26 Store 94 93 95: 27(ptr) AccessChain 10(dti) 26 96: 6(int) Load 95 97: 27(ptr) AccessChain 10(dti) 26 98: 6(int) Load 97 100: 81(ptr) AccessChain 24(data) 25 98 78 101: 15(ivec4) Load 100 102: 99(ivec2) VectorShuffle 101 101 0 1 103: 99(ivec2) GroupNonUniformIAdd 35 Reduce 102 104: 90(ptr) AccessChain 24(data) 25 96 78 26 105: 14(int) CompositeExtract 103 0 Store 104 105 106: 90(ptr) AccessChain 24(data) 25 96 78 58 107: 14(int) CompositeExtract 103 1 Store 106 107 108: 27(ptr) AccessChain 10(dti) 26 109: 6(int) Load 108 110: 27(ptr) AccessChain 10(dti) 26 111: 6(int) Load 110 113: 81(ptr) AccessChain 24(data) 25 111 78 114: 15(ivec4) Load 113 115: 112(ivec3) VectorShuffle 114 114 0 1 2 116: 112(ivec3) GroupNonUniformIAdd 35 Reduce 115 117: 90(ptr) AccessChain 24(data) 25 109 78 26 118: 14(int) CompositeExtract 116 0 Store 117 118 119: 90(ptr) AccessChain 24(data) 25 109 78 58 120: 14(int) CompositeExtract 116 1 Store 119 120 121: 90(ptr) AccessChain 24(data) 25 109 78 73 122: 14(int) CompositeExtract 116 2 Store 121 122 123: 27(ptr) AccessChain 10(dti) 26 124: 6(int) Load 123 126: 27(ptr) AccessChain 10(dti) 26 127: 6(int) Load 126 129: 128(ptr) AccessChain 24(data) 25 127 125 130: 17(fvec4) Load 129 131: 17(fvec4) GroupNonUniformFAdd 35 Reduce 130 132: 128(ptr) AccessChain 24(data) 25 124 125 Store 132 131 133: 27(ptr) AccessChain 10(dti) 26 134: 6(int) Load 133 135: 27(ptr) AccessChain 10(dti) 26 136: 6(int) Load 135 138: 137(ptr) AccessChain 24(data) 25 136 125 26 139: 16(float) Load 138 140: 16(float) GroupNonUniformFAdd 35 Reduce 139 141: 137(ptr) AccessChain 24(data) 25 134 125 26 Store 141 140 142: 27(ptr) AccessChain 10(dti) 26 143: 6(int) Load 142 144: 27(ptr) AccessChain 10(dti) 26 145: 6(int) Load 144 147: 128(ptr) AccessChain 24(data) 25 145 125 148: 17(fvec4) Load 147 149: 146(fvec2) VectorShuffle 148 148 0 1 150: 146(fvec2) GroupNonUniformFAdd 35 Reduce 149 151: 137(ptr) AccessChain 24(data) 25 143 125 26 152: 16(float) CompositeExtract 150 0 Store 151 152 153: 137(ptr) AccessChain 24(data) 25 143 125 58 154: 16(float) CompositeExtract 150 1 Store 153 154 155: 27(ptr) AccessChain 10(dti) 26 156: 6(int) Load 155 157: 27(ptr) AccessChain 10(dti) 26 158: 6(int) Load 157 160: 128(ptr) AccessChain 24(data) 25 158 125 161: 17(fvec4) Load 160 162: 159(fvec3) VectorShuffle 161 161 0 1 2 163: 159(fvec3) GroupNonUniformFAdd 35 Reduce 162 164: 137(ptr) AccessChain 24(data) 25 156 125 26 165: 16(float) CompositeExtract 163 0 Store 164 165 166: 137(ptr) AccessChain 24(data) 25 156 125 58 167: 16(float) CompositeExtract 163 1 Store 166 167 168: 137(ptr) AccessChain 24(data) 25 156 125 73 169: 16(float) CompositeExtract 163 2 Store 168 169 170: 27(ptr) AccessChain 10(dti) 26 171: 6(int) Load 170 173: 27(ptr) AccessChain 10(dti) 26 174: 6(int) Load 173 176: 175(ptr) AccessChain 24(data) 25 174 172 177: 19(f64vec4) Load 176 178: 19(f64vec4) GroupNonUniformFAdd 35 Reduce 177 179: 175(ptr) AccessChain 24(data) 25 171 172 Store 179 178 180: 27(ptr) AccessChain 10(dti) 26 181: 6(int) Load 180 182: 27(ptr) AccessChain 10(dti) 26 183: 6(int) Load 182 185: 184(ptr) AccessChain 24(data) 25 183 172 26 186:18(float64_t) Load 185 187:18(float64_t) GroupNonUniformFAdd 35 Reduce 186 188: 184(ptr) AccessChain 24(data) 25 181 172 26 Store 188 187 189: 27(ptr) AccessChain 10(dti) 26 190: 6(int) Load 189 191: 27(ptr) AccessChain 10(dti) 26 192: 6(int) Load 191 194: 175(ptr) AccessChain 24(data) 25 192 172 195: 19(f64vec4) Load 194 196:193(f64vec2) VectorShuffle 195 195 0 1 197:193(f64vec2) GroupNonUniformFAdd 35 Reduce 196 198: 184(ptr) AccessChain 24(data) 25 190 172 26 199:18(float64_t) CompositeExtract 197 0 Store 198 199 200: 184(ptr) AccessChain 24(data) 25 190 172 58 201:18(float64_t) CompositeExtract 197 1 Store 200 201 202: 27(ptr) AccessChain 10(dti) 26 203: 6(int) Load 202 204: 27(ptr) AccessChain 10(dti) 26 205: 6(int) Load 204 207: 175(ptr) AccessChain 24(data) 25 205 172 208: 19(f64vec4) Load 207 209:206(f64vec3) VectorShuffle 208 208 0 1 2 210:206(f64vec3) GroupNonUniformFAdd 35 Reduce 209 211: 184(ptr) AccessChain 24(data) 25 203 172 26 212:18(float64_t) CompositeExtract 210 0 Store 211 212 213: 184(ptr) AccessChain 24(data) 25 203 172 58 214:18(float64_t) CompositeExtract 210 1 Store 213 214 215: 184(ptr) AccessChain 24(data) 25 203 172 73 216:18(float64_t) CompositeExtract 210 2 Store 215 216 217: 27(ptr) AccessChain 10(dti) 26 218: 6(int) Load 217 219: 27(ptr) AccessChain 10(dti) 26 220: 6(int) Load 219 221: 32(ptr) AccessChain 24(data) 25 220 25 222: 13(ivec4) Load 221 223: 13(ivec4) GroupNonUniformIMul 35 Reduce 222 224: 32(ptr) AccessChain 24(data) 25 218 25 Store 224 223 225: 27(ptr) AccessChain 10(dti) 26 226: 6(int) Load 225 227: 27(ptr) AccessChain 10(dti) 26 228: 6(int) Load 227 229: 42(ptr) AccessChain 24(data) 25 228 25 26 230: 6(int) Load 229 231: 6(int) GroupNonUniformIMul 35 Reduce 230 232: 42(ptr) AccessChain 24(data) 25 226 25 26 Store 232 231 233: 27(ptr) AccessChain 10(dti) 26 234: 6(int) Load 233 235: 27(ptr) AccessChain 10(dti) 26 236: 6(int) Load 235 237: 32(ptr) AccessChain 24(data) 25 236 25 238: 13(ivec4) Load 237 239: 51(ivec2) VectorShuffle 238 238 0 1 240: 51(ivec2) GroupNonUniformIMul 35 Reduce 239 241: 42(ptr) AccessChain 24(data) 25 234 25 26 242: 6(int) CompositeExtract 240 0 Store 241 242 243: 42(ptr) AccessChain 24(data) 25 234 25 58 244: 6(int) CompositeExtract 240 1 Store 243 244 245: 27(ptr) AccessChain 10(dti) 26 246: 6(int) Load 245 247: 27(ptr) AccessChain 10(dti) 26 248: 6(int) Load 247 249: 32(ptr) AccessChain 24(data) 25 248 25 250: 13(ivec4) Load 249 251: 7(ivec3) VectorShuffle 250 250 0 1 2 252: 7(ivec3) GroupNonUniformIMul 35 Reduce 251 253: 42(ptr) AccessChain 24(data) 25 246 25 26 254: 6(int) CompositeExtract 252 0 Store 253 254 255: 42(ptr) AccessChain 24(data) 25 246 25 58 256: 6(int) CompositeExtract 252 1 Store 255 256 257: 42(ptr) AccessChain 24(data) 25 246 25 73 258: 6(int) CompositeExtract 252 2 Store 257 258 259: 27(ptr) AccessChain 10(dti) 26 260: 6(int) Load 259 261: 27(ptr) AccessChain 10(dti) 26 262: 6(int) Load 261 263: 81(ptr) AccessChain 24(data) 25 262 78 264: 15(ivec4) Load 263 265: 15(ivec4) GroupNonUniformIMul 35 Reduce 264 266: 81(ptr) AccessChain 24(data) 25 260 78 Store 266 265 267: 27(ptr) AccessChain 10(dti) 26 268: 6(int) Load 267 269: 27(ptr) AccessChain 10(dti) 26 270: 6(int) Load 269 271: 90(ptr) AccessChain 24(data) 25 270 78 26 272: 14(int) Load 271 273: 14(int) GroupNonUniformIMul 35 Reduce 272 274: 90(ptr) AccessChain 24(data) 25 268 78 26 Store 274 273 275: 27(ptr) AccessChain 10(dti) 26 276: 6(int) Load 275 277: 27(ptr) AccessChain 10(dti) 26 278: 6(int) Load 277 279: 81(ptr) AccessChain 24(data) 25 278 78 280: 15(ivec4) Load 279 281: 99(ivec2) VectorShuffle 280 280 0 1 282: 99(ivec2) GroupNonUniformIMul 35 Reduce 281 283: 90(ptr) AccessChain 24(data) 25 276 78 26 284: 14(int) CompositeExtract 282 0 Store 283 284 285: 90(ptr) AccessChain 24(data) 25 276 78 58 286: 14(int) CompositeExtract 282 1 Store 285 286 287: 27(ptr) AccessChain 10(dti) 26 288: 6(int) Load 287 289: 27(ptr) AccessChain 10(dti) 26 290: 6(int) Load 289 291: 81(ptr) AccessChain 24(data) 25 290 78 292: 15(ivec4) Load 291 293: 112(ivec3) VectorShuffle 292 292 0 1 2 294: 112(ivec3) GroupNonUniformIMul 35 Reduce 293 295: 90(ptr) AccessChain 24(data) 25 288 78 26 296: 14(int) CompositeExtract 294 0 Store 295 296 297: 90(ptr) AccessChain 24(data) 25 288 78 58 298: 14(int) CompositeExtract 294 1 Store 297 298 299: 90(ptr) AccessChain 24(data) 25 288 78 73 300: 14(int) CompositeExtract 294 2 Store 299 300 301: 27(ptr) AccessChain 10(dti) 26 302: 6(int) Load 301 303: 27(ptr) AccessChain 10(dti) 26 304: 6(int) Load 303 305: 128(ptr) AccessChain 24(data) 25 304 125 306: 17(fvec4) Load 305 307: 17(fvec4) GroupNonUniformFMul 35 Reduce 306 308: 128(ptr) AccessChain 24(data) 25 302 125 Store 308 307 309: 27(ptr) AccessChain 10(dti) 26 310: 6(int) Load 309 311: 27(ptr) AccessChain 10(dti) 26 312: 6(int) Load 311 313: 137(ptr) AccessChain 24(data) 25 312 125 26 314: 16(float) Load 313 315: 16(float) GroupNonUniformFMul 35 Reduce 314 316: 137(ptr) AccessChain 24(data) 25 310 125 26 Store 316 315 317: 27(ptr) AccessChain 10(dti) 26 318: 6(int) Load 317 319: 27(ptr) AccessChain 10(dti) 26 320: 6(int) Load 319 321: 128(ptr) AccessChain 24(data) 25 320 125 322: 17(fvec4) Load 321 323: 146(fvec2) VectorShuffle 322 322 0 1 324: 146(fvec2) GroupNonUniformFMul 35 Reduce 323 325: 137(ptr) AccessChain 24(data) 25 318 125 26 326: 16(float) CompositeExtract 324 0 Store 325 326 327: 137(ptr) AccessChain 24(data) 25 318 125 58 328: 16(float) CompositeExtract 324 1 Store 327 328 329: 27(ptr) AccessChain 10(dti) 26 330: 6(int) Load 329 331: 27(ptr) AccessChain 10(dti) 26 332: 6(int) Load 331 333: 128(ptr) AccessChain 24(data) 25 332 125 334: 17(fvec4) Load 333 335: 159(fvec3) VectorShuffle 334 334 0 1 2 336: 159(fvec3) GroupNonUniformFMul 35 Reduce 335 337: 137(ptr) AccessChain 24(data) 25 330 125 26 338: 16(float) CompositeExtract 336 0 Store 337 338 339: 137(ptr) AccessChain 24(data) 25 330 125 58 340: 16(float) CompositeExtract 336 1 Store 339 340 341: 137(ptr) AccessChain 24(data) 25 330 125 73 342: 16(float) CompositeExtract 336 2 Store 341 342 343: 27(ptr) AccessChain 10(dti) 26 344: 6(int) Load 343 345: 27(ptr) AccessChain 10(dti) 26 346: 6(int) Load 345 347: 175(ptr) AccessChain 24(data) 25 346 172 348: 19(f64vec4) Load 347 349: 19(f64vec4) GroupNonUniformFMul 35 Reduce 348 350: 175(ptr) AccessChain 24(data) 25 344 172 Store 350 349 351: 27(ptr) AccessChain 10(dti) 26 352: 6(int) Load 351 353: 27(ptr) AccessChain 10(dti) 26 354: 6(int) Load 353 355: 184(ptr) AccessChain 24(data) 25 354 172 26 356:18(float64_t) Load 355 357:18(float64_t) GroupNonUniformFMul 35 Reduce 356 358: 184(ptr) AccessChain 24(data) 25 352 172 26 Store 358 357 359: 27(ptr) AccessChain 10(dti) 26 360: 6(int) Load 359 361: 27(ptr) AccessChain 10(dti) 26 362: 6(int) Load 361 363: 175(ptr) AccessChain 24(data) 25 362 172 364: 19(f64vec4) Load 363 365:193(f64vec2) VectorShuffle 364 364 0 1 366:193(f64vec2) GroupNonUniformFMul 35 Reduce 365 367: 184(ptr) AccessChain 24(data) 25 360 172 26 368:18(float64_t) CompositeExtract 366 0 Store 367 368 369: 184(ptr) AccessChain 24(data) 25 360 172 58 370:18(float64_t) CompositeExtract 366 1 Store 369 370 371: 27(ptr) AccessChain 10(dti) 26 372: 6(int) Load 371 373: 27(ptr) AccessChain 10(dti) 26 374: 6(int) Load 373 375: 175(ptr) AccessChain 24(data) 25 374 172 376: 19(f64vec4) Load 375 377:206(f64vec3) VectorShuffle 376 376 0 1 2 378:206(f64vec3) GroupNonUniformFMul 35 Reduce 377 379: 184(ptr) AccessChain 24(data) 25 372 172 26 380:18(float64_t) CompositeExtract 378 0 Store 379 380 381: 184(ptr) AccessChain 24(data) 25 372 172 58 382:18(float64_t) CompositeExtract 378 1 Store 381 382 383: 184(ptr) AccessChain 24(data) 25 372 172 73 384:18(float64_t) CompositeExtract 378 2 Store 383 384 385: 27(ptr) AccessChain 10(dti) 26 386: 6(int) Load 385 387: 27(ptr) AccessChain 10(dti) 26 388: 6(int) Load 387 389: 32(ptr) AccessChain 24(data) 25 388 25 390: 13(ivec4) Load 389 391: 13(ivec4) GroupNonUniformUMin 35 Reduce 390 392: 32(ptr) AccessChain 24(data) 25 386 25 Store 392 391 393: 27(ptr) AccessChain 10(dti) 26 394: 6(int) Load 393 395: 27(ptr) AccessChain 10(dti) 26 396: 6(int) Load 395 397: 42(ptr) AccessChain 24(data) 25 396 25 26 398: 6(int) Load 397 399: 6(int) GroupNonUniformUMin 35 Reduce 398 400: 42(ptr) AccessChain 24(data) 25 394 25 26 Store 400 399 401: 27(ptr) AccessChain 10(dti) 26 402: 6(int) Load 401 403: 27(ptr) AccessChain 10(dti) 26 404: 6(int) Load 403 405: 32(ptr) AccessChain 24(data) 25 404 25 406: 13(ivec4) Load 405 407: 51(ivec2) VectorShuffle 406 406 0 1 408: 51(ivec2) GroupNonUniformUMin 35 Reduce 407 409: 42(ptr) AccessChain 24(data) 25 402 25 26 410: 6(int) CompositeExtract 408 0 Store 409 410 411: 42(ptr) AccessChain 24(data) 25 402 25 58 412: 6(int) CompositeExtract 408 1 Store 411 412 413: 27(ptr) AccessChain 10(dti) 26 414: 6(int) Load 413 415: 27(ptr) AccessChain 10(dti) 26 416: 6(int) Load 415 417: 32(ptr) AccessChain 24(data) 25 416 25 418: 13(ivec4) Load 417 419: 7(ivec3) VectorShuffle 418 418 0 1 2 420: 7(ivec3) GroupNonUniformUMin 35 Reduce 419 421: 42(ptr) AccessChain 24(data) 25 414 25 26 422: 6(int) CompositeExtract 420 0 Store 421 422 423: 42(ptr) AccessChain 24(data) 25 414 25 58 424: 6(int) CompositeExtract 420 1 Store 423 424 425: 42(ptr) AccessChain 24(data) 25 414 25 73 426: 6(int) CompositeExtract 420 2 Store 425 426 427: 27(ptr) AccessChain 10(dti) 26 428: 6(int) Load 427 429: 27(ptr) AccessChain 10(dti) 26 430: 6(int) Load 429 431: 81(ptr) AccessChain 24(data) 25 430 78 432: 15(ivec4) Load 431 433: 15(ivec4) GroupNonUniformSMin 35 Reduce 432 434: 81(ptr) AccessChain 24(data) 25 428 78 Store 434 433 435: 27(ptr) AccessChain 10(dti) 26 436: 6(int) Load 435 437: 27(ptr) AccessChain 10(dti) 26 438: 6(int) Load 437 439: 90(ptr) AccessChain 24(data) 25 438 78 26 440: 14(int) Load 439 441: 14(int) GroupNonUniformSMin 35 Reduce 440 442: 90(ptr) AccessChain 24(data) 25 436 78 26 Store 442 441 443: 27(ptr) AccessChain 10(dti) 26 444: 6(int) Load 443 445: 27(ptr) AccessChain 10(dti) 26 446: 6(int) Load 445 447: 81(ptr) AccessChain 24(data) 25 446 78 448: 15(ivec4) Load 447 449: 99(ivec2) VectorShuffle 448 448 0 1 450: 99(ivec2) GroupNonUniformSMin 35 Reduce 449 451: 90(ptr) AccessChain 24(data) 25 444 78 26 452: 14(int) CompositeExtract 450 0 Store 451 452 453: 90(ptr) AccessChain 24(data) 25 444 78 58 454: 14(int) CompositeExtract 450 1 Store 453 454 455: 27(ptr) AccessChain 10(dti) 26 456: 6(int) Load 455 457: 27(ptr) AccessChain 10(dti) 26 458: 6(int) Load 457 459: 81(ptr) AccessChain 24(data) 25 458 78 460: 15(ivec4) Load 459 461: 112(ivec3) VectorShuffle 460 460 0 1 2 462: 112(ivec3) GroupNonUniformSMin 35 Reduce 461 463: 90(ptr) AccessChain 24(data) 25 456 78 26 464: 14(int) CompositeExtract 462 0 Store 463 464 465: 90(ptr) AccessChain 24(data) 25 456 78 58 466: 14(int) CompositeExtract 462 1 Store 465 466 467: 90(ptr) AccessChain 24(data) 25 456 78 73 468: 14(int) CompositeExtract 462 2 Store 467 468 469: 27(ptr) AccessChain 10(dti) 26 470: 6(int) Load 469 471: 27(ptr) AccessChain 10(dti) 26 472: 6(int) Load 471 473: 128(ptr) AccessChain 24(data) 25 472 125 474: 17(fvec4) Load 473 475: 17(fvec4) GroupNonUniformFMin 35 Reduce 474 476: 128(ptr) AccessChain 24(data) 25 470 125 Store 476 475 477: 27(ptr) AccessChain 10(dti) 26 478: 6(int) Load 477 479: 27(ptr) AccessChain 10(dti) 26 480: 6(int) Load 479 481: 137(ptr) AccessChain 24(data) 25 480 125 26 482: 16(float) Load 481 483: 16(float) GroupNonUniformFMin 35 Reduce 482 484: 137(ptr) AccessChain 24(data) 25 478 125 26 Store 484 483 485: 27(ptr) AccessChain 10(dti) 26 486: 6(int) Load 485 487: 27(ptr) AccessChain 10(dti) 26 488: 6(int) Load 487 489: 128(ptr) AccessChain 24(data) 25 488 125 490: 17(fvec4) Load 489 491: 146(fvec2) VectorShuffle 490 490 0 1 492: 146(fvec2) GroupNonUniformFMin 35 Reduce 491 493: 137(ptr) AccessChain 24(data) 25 486 125 26 494: 16(float) CompositeExtract 492 0 Store 493 494 495: 137(ptr) AccessChain 24(data) 25 486 125 58 496: 16(float) CompositeExtract 492 1 Store 495 496 497: 27(ptr) AccessChain 10(dti) 26 498: 6(int) Load 497 499: 27(ptr) AccessChain 10(dti) 26 500: 6(int) Load 499 501: 128(ptr) AccessChain 24(data) 25 500 125 502: 17(fvec4) Load 501 503: 159(fvec3) VectorShuffle 502 502 0 1 2 504: 159(fvec3) GroupNonUniformFMin 35 Reduce 503 505: 137(ptr) AccessChain 24(data) 25 498 125 26 506: 16(float) CompositeExtract 504 0 Store 505 506 507: 137(ptr) AccessChain 24(data) 25 498 125 58 508: 16(float) CompositeExtract 504 1 Store 507 508 509: 137(ptr) AccessChain 24(data) 25 498 125 73 510: 16(float) CompositeExtract 504 2 Store 509 510 511: 27(ptr) AccessChain 10(dti) 26 512: 6(int) Load 511 513: 27(ptr) AccessChain 10(dti) 26 514: 6(int) Load 513 515: 175(ptr) AccessChain 24(data) 25 514 172 516: 19(f64vec4) Load 515 517: 19(f64vec4) GroupNonUniformFMin 35 Reduce 516 518: 175(ptr) AccessChain 24(data) 25 512 172 Store 518 517 519: 27(ptr) AccessChain 10(dti) 26 520: 6(int) Load 519 521: 27(ptr) AccessChain 10(dti) 26 522: 6(int) Load 521 523: 184(ptr) AccessChain 24(data) 25 522 172 26 524:18(float64_t) Load 523 525:18(float64_t) GroupNonUniformFMin 35 Reduce 524 526: 184(ptr) AccessChain 24(data) 25 520 172 26 Store 526 525 527: 27(ptr) AccessChain 10(dti) 26 528: 6(int) Load 527 529: 27(ptr) AccessChain 10(dti) 26 530: 6(int) Load 529 531: 175(ptr) AccessChain 24(data) 25 530 172 532: 19(f64vec4) Load 531 533:193(f64vec2) VectorShuffle 532 532 0 1 534:193(f64vec2) GroupNonUniformFMin 35 Reduce 533 535: 184(ptr) AccessChain 24(data) 25 528 172 26 536:18(float64_t) CompositeExtract 534 0 Store 535 536 537: 184(ptr) AccessChain 24(data) 25 528 172 58 538:18(float64_t) CompositeExtract 534 1 Store 537 538 539: 27(ptr) AccessChain 10(dti) 26 540: 6(int) Load 539 541: 27(ptr) AccessChain 10(dti) 26 542: 6(int) Load 541 543: 175(ptr) AccessChain 24(data) 25 542 172 544: 19(f64vec4) Load 543 545:206(f64vec3) VectorShuffle 544 544 0 1 2 546:206(f64vec3) GroupNonUniformFMin 35 Reduce 545 547: 184(ptr) AccessChain 24(data) 25 540 172 26 548:18(float64_t) CompositeExtract 546 0 Store 547 548 549: 184(ptr) AccessChain 24(data) 25 540 172 58 550:18(float64_t) CompositeExtract 546 1 Store 549 550 551: 184(ptr) AccessChain 24(data) 25 540 172 73 552:18(float64_t) CompositeExtract 546 2 Store 551 552 553: 27(ptr) AccessChain 10(dti) 26 554: 6(int) Load 553 555: 27(ptr) AccessChain 10(dti) 26 556: 6(int) Load 555 557: 32(ptr) AccessChain 24(data) 25 556 25 558: 13(ivec4) Load 557 559: 13(ivec4) GroupNonUniformUMax 35 Reduce 558 560: 32(ptr) AccessChain 24(data) 25 554 25 Store 560 559 561: 27(ptr) AccessChain 10(dti) 26 562: 6(int) Load 561 563: 27(ptr) AccessChain 10(dti) 26 564: 6(int) Load 563 565: 42(ptr) AccessChain 24(data) 25 564 25 26 566: 6(int) Load 565 567: 6(int) GroupNonUniformUMax 35 Reduce 566 568: 42(ptr) AccessChain 24(data) 25 562 25 26 Store 568 567 569: 27(ptr) AccessChain 10(dti) 26 570: 6(int) Load 569 571: 27(ptr) AccessChain 10(dti) 26 572: 6(int) Load 571 573: 32(ptr) AccessChain 24(data) 25 572 25 574: 13(ivec4) Load 573 575: 51(ivec2) VectorShuffle 574 574 0 1 576: 51(ivec2) GroupNonUniformUMax 35 Reduce 575 577: 42(ptr) AccessChain 24(data) 25 570 25 26 578: 6(int) CompositeExtract 576 0 Store 577 578 579: 42(ptr) AccessChain 24(data) 25 570 25 58 580: 6(int) CompositeExtract 576 1 Store 579 580 581: 27(ptr) AccessChain 10(dti) 26 582: 6(int) Load 581 583: 27(ptr) AccessChain 10(dti) 26 584: 6(int) Load 583 585: 32(ptr) AccessChain 24(data) 25 584 25 586: 13(ivec4) Load 585 587: 7(ivec3) VectorShuffle 586 586 0 1 2 588: 7(ivec3) GroupNonUniformUMax 35 Reduce 587 589: 42(ptr) AccessChain 24(data) 25 582 25 26 590: 6(int) CompositeExtract 588 0 Store 589 590 591: 42(ptr) AccessChain 24(data) 25 582 25 58 592: 6(int) CompositeExtract 588 1 Store 591 592 593: 42(ptr) AccessChain 24(data) 25 582 25 73 594: 6(int) CompositeExtract 588 2 Store 593 594 595: 27(ptr) AccessChain 10(dti) 26 596: 6(int) Load 595 597: 27(ptr) AccessChain 10(dti) 26 598: 6(int) Load 597 599: 81(ptr) AccessChain 24(data) 25 598 78 600: 15(ivec4) Load 599 601: 15(ivec4) GroupNonUniformSMax 35 Reduce 600 602: 81(ptr) AccessChain 24(data) 25 596 78 Store 602 601 603: 27(ptr) AccessChain 10(dti) 26 604: 6(int) Load 603 605: 27(ptr) AccessChain 10(dti) 26 606: 6(int) Load 605 607: 90(ptr) AccessChain 24(data) 25 606 78 26 608: 14(int) Load 607 609: 14(int) GroupNonUniformSMax 35 Reduce 608 610: 90(ptr) AccessChain 24(data) 25 604 78 26 Store 610 609 611: 27(ptr) AccessChain 10(dti) 26 612: 6(int) Load 611 613: 27(ptr) AccessChain 10(dti) 26 614: 6(int) Load 613 615: 81(ptr) AccessChain 24(data) 25 614 78 616: 15(ivec4) Load 615 617: 99(ivec2) VectorShuffle 616 616 0 1 618: 99(ivec2) GroupNonUniformSMax 35 Reduce 617 619: 90(ptr) AccessChain 24(data) 25 612 78 26 620: 14(int) CompositeExtract 618 0 Store 619 620 621: 90(ptr) AccessChain 24(data) 25 612 78 58 622: 14(int) CompositeExtract 618 1 Store 621 622 623: 27(ptr) AccessChain 10(dti) 26 624: 6(int) Load 623 625: 27(ptr) AccessChain 10(dti) 26 626: 6(int) Load 625 627: 81(ptr) AccessChain 24(data) 25 626 78 628: 15(ivec4) Load 627 629: 112(ivec3) VectorShuffle 628 628 0 1 2 630: 112(ivec3) GroupNonUniformSMax 35 Reduce 629 631: 90(ptr) AccessChain 24(data) 25 624 78 26 632: 14(int) CompositeExtract 630 0 Store 631 632 633: 90(ptr) AccessChain 24(data) 25 624 78 58 634: 14(int) CompositeExtract 630 1 Store 633 634 635: 90(ptr) AccessChain 24(data) 25 624 78 73 636: 14(int) CompositeExtract 630 2 Store 635 636 637: 27(ptr) AccessChain 10(dti) 26 638: 6(int) Load 637 639: 27(ptr) AccessChain 10(dti) 26 640: 6(int) Load 639 641: 128(ptr) AccessChain 24(data) 25 640 125 642: 17(fvec4) Load 641 643: 17(fvec4) GroupNonUniformFMax 35 Reduce 642 644: 128(ptr) AccessChain 24(data) 25 638 125 Store 644 643 645: 27(ptr) AccessChain 10(dti) 26 646: 6(int) Load 645 647: 27(ptr) AccessChain 10(dti) 26 648: 6(int) Load 647 649: 137(ptr) AccessChain 24(data) 25 648 125 26 650: 16(float) Load 649 651: 16(float) GroupNonUniformFMax 35 Reduce 650 652: 137(ptr) AccessChain 24(data) 25 646 125 26 Store 652 651 653: 27(ptr) AccessChain 10(dti) 26 654: 6(int) Load 653 655: 27(ptr) AccessChain 10(dti) 26 656: 6(int) Load 655 657: 128(ptr) AccessChain 24(data) 25 656 125 658: 17(fvec4) Load 657 659: 146(fvec2) VectorShuffle 658 658 0 1 660: 146(fvec2) GroupNonUniformFMax 35 Reduce 659 661: 137(ptr) AccessChain 24(data) 25 654 125 26 662: 16(float) CompositeExtract 660 0 Store 661 662 663: 137(ptr) AccessChain 24(data) 25 654 125 58 664: 16(float) CompositeExtract 660 1 Store 663 664 665: 27(ptr) AccessChain 10(dti) 26 666: 6(int) Load 665 667: 27(ptr) AccessChain 10(dti) 26 668: 6(int) Load 667 669: 128(ptr) AccessChain 24(data) 25 668 125 670: 17(fvec4) Load 669 671: 159(fvec3) VectorShuffle 670 670 0 1 2 672: 159(fvec3) GroupNonUniformFMax 35 Reduce 671 673: 137(ptr) AccessChain 24(data) 25 666 125 26 674: 16(float) CompositeExtract 672 0 Store 673 674 675: 137(ptr) AccessChain 24(data) 25 666 125 58 676: 16(float) CompositeExtract 672 1 Store 675 676 677: 137(ptr) AccessChain 24(data) 25 666 125 73 678: 16(float) CompositeExtract 672 2 Store 677 678 679: 27(ptr) AccessChain 10(dti) 26 680: 6(int) Load 679 681: 27(ptr) AccessChain 10(dti) 26 682: 6(int) Load 681 683: 175(ptr) AccessChain 24(data) 25 682 172 684: 19(f64vec4) Load 683 685: 19(f64vec4) GroupNonUniformFMax 35 Reduce 684 686: 175(ptr) AccessChain 24(data) 25 680 172 Store 686 685 687: 27(ptr) AccessChain 10(dti) 26 688: 6(int) Load 687 689: 27(ptr) AccessChain 10(dti) 26 690: 6(int) Load 689 691: 184(ptr) AccessChain 24(data) 25 690 172 26 692:18(float64_t) Load 691 693:18(float64_t) GroupNonUniformFMax 35 Reduce 692 694: 184(ptr) AccessChain 24(data) 25 688 172 26 Store 694 693 695: 27(ptr) AccessChain 10(dti) 26 696: 6(int) Load 695 697: 27(ptr) AccessChain 10(dti) 26 698: 6(int) Load 697 699: 175(ptr) AccessChain 24(data) 25 698 172 700: 19(f64vec4) Load 699 701:193(f64vec2) VectorShuffle 700 700 0 1 702:193(f64vec2) GroupNonUniformFMax 35 Reduce 701 703: 184(ptr) AccessChain 24(data) 25 696 172 26 704:18(float64_t) CompositeExtract 702 0 Store 703 704 705: 184(ptr) AccessChain 24(data) 25 696 172 58 706:18(float64_t) CompositeExtract 702 1 Store 705 706 707: 27(ptr) AccessChain 10(dti) 26 708: 6(int) Load 707 709: 27(ptr) AccessChain 10(dti) 26 710: 6(int) Load 709 711: 175(ptr) AccessChain 24(data) 25 710 172 712: 19(f64vec4) Load 711 713:206(f64vec3) VectorShuffle 712 712 0 1 2 714:206(f64vec3) GroupNonUniformFMax 35 Reduce 713 715: 184(ptr) AccessChain 24(data) 25 708 172 26 716:18(float64_t) CompositeExtract 714 0 Store 715 716 717: 184(ptr) AccessChain 24(data) 25 708 172 58 718:18(float64_t) CompositeExtract 714 1 Store 717 718 719: 184(ptr) AccessChain 24(data) 25 708 172 73 720:18(float64_t) CompositeExtract 714 2 Store 719 720 721: 27(ptr) AccessChain 10(dti) 26 722: 6(int) Load 721 723: 27(ptr) AccessChain 10(dti) 26 724: 6(int) Load 723 725: 32(ptr) AccessChain 24(data) 25 724 25 726: 13(ivec4) Load 725 727: 13(ivec4) GroupNonUniformBitwiseAnd 35 Reduce 726 728: 32(ptr) AccessChain 24(data) 25 722 25 Store 728 727 729: 27(ptr) AccessChain 10(dti) 26 730: 6(int) Load 729 731: 27(ptr) AccessChain 10(dti) 26 732: 6(int) Load 731 733: 42(ptr) AccessChain 24(data) 25 732 25 26 734: 6(int) Load 733 735: 6(int) GroupNonUniformBitwiseAnd 35 Reduce 734 736: 42(ptr) AccessChain 24(data) 25 730 25 26 Store 736 735 737: 27(ptr) AccessChain 10(dti) 26 738: 6(int) Load 737 739: 27(ptr) AccessChain 10(dti) 26 740: 6(int) Load 739 741: 32(ptr) AccessChain 24(data) 25 740 25 742: 13(ivec4) Load 741 743: 51(ivec2) VectorShuffle 742 742 0 1 744: 51(ivec2) GroupNonUniformBitwiseAnd 35 Reduce 743 745: 42(ptr) AccessChain 24(data) 25 738 25 26 746: 6(int) CompositeExtract 744 0 Store 745 746 747: 42(ptr) AccessChain 24(data) 25 738 25 58 748: 6(int) CompositeExtract 744 1 Store 747 748 749: 27(ptr) AccessChain 10(dti) 26 750: 6(int) Load 749 751: 27(ptr) AccessChain 10(dti) 26 752: 6(int) Load 751 753: 32(ptr) AccessChain 24(data) 25 752 25 754: 13(ivec4) Load 753 755: 7(ivec3) VectorShuffle 754 754 0 1 2 756: 7(ivec3) GroupNonUniformBitwiseAnd 35 Reduce 755 757: 42(ptr) AccessChain 24(data) 25 750 25 26 758: 6(int) CompositeExtract 756 0 Store 757 758 759: 42(ptr) AccessChain 24(data) 25 750 25 58 760: 6(int) CompositeExtract 756 1 Store 759 760 761: 42(ptr) AccessChain 24(data) 25 750 25 73 762: 6(int) CompositeExtract 756 2 Store 761 762 763: 27(ptr) AccessChain 10(dti) 26 764: 6(int) Load 763 765: 27(ptr) AccessChain 10(dti) 26 766: 6(int) Load 765 767: 81(ptr) AccessChain 24(data) 25 766 78 768: 15(ivec4) Load 767 769: 15(ivec4) GroupNonUniformBitwiseAnd 35 Reduce 768 770: 81(ptr) AccessChain 24(data) 25 764 78 Store 770 769 771: 27(ptr) AccessChain 10(dti) 26 772: 6(int) Load 771 773: 27(ptr) AccessChain 10(dti) 26 774: 6(int) Load 773 775: 90(ptr) AccessChain 24(data) 25 774 78 26 776: 14(int) Load 775 777: 14(int) GroupNonUniformBitwiseAnd 35 Reduce 776 778: 90(ptr) AccessChain 24(data) 25 772 78 26 Store 778 777 779: 27(ptr) AccessChain 10(dti) 26 780: 6(int) Load 779 781: 27(ptr) AccessChain 10(dti) 26 782: 6(int) Load 781 783: 81(ptr) AccessChain 24(data) 25 782 78 784: 15(ivec4) Load 783 785: 99(ivec2) VectorShuffle 784 784 0 1 786: 99(ivec2) GroupNonUniformBitwiseAnd 35 Reduce 785 787: 90(ptr) AccessChain 24(data) 25 780 78 26 788: 14(int) CompositeExtract 786 0 Store 787 788 789: 90(ptr) AccessChain 24(data) 25 780 78 58 790: 14(int) CompositeExtract 786 1 Store 789 790 791: 27(ptr) AccessChain 10(dti) 26 792: 6(int) Load 791 793: 27(ptr) AccessChain 10(dti) 26 794: 6(int) Load 793 795: 81(ptr) AccessChain 24(data) 25 794 78 796: 15(ivec4) Load 795 797: 112(ivec3) VectorShuffle 796 796 0 1 2 798: 112(ivec3) GroupNonUniformBitwiseAnd 35 Reduce 797 799: 90(ptr) AccessChain 24(data) 25 792 78 26 800: 14(int) CompositeExtract 798 0 Store 799 800 801: 90(ptr) AccessChain 24(data) 25 792 78 58 802: 14(int) CompositeExtract 798 1 Store 801 802 803: 90(ptr) AccessChain 24(data) 25 792 78 73 804: 14(int) CompositeExtract 798 2 Store 803 804 805: 27(ptr) AccessChain 10(dti) 26 806: 6(int) Load 805 807: 27(ptr) AccessChain 10(dti) 26 808: 6(int) Load 807 809: 32(ptr) AccessChain 24(data) 25 808 25 810: 13(ivec4) Load 809 811: 13(ivec4) GroupNonUniformBitwiseOr 35 Reduce 810 812: 32(ptr) AccessChain 24(data) 25 806 25 Store 812 811 813: 27(ptr) AccessChain 10(dti) 26 814: 6(int) Load 813 815: 27(ptr) AccessChain 10(dti) 26 816: 6(int) Load 815 817: 42(ptr) AccessChain 24(data) 25 816 25 26 818: 6(int) Load 817 819: 6(int) GroupNonUniformBitwiseOr 35 Reduce 818 820: 42(ptr) AccessChain 24(data) 25 814 25 26 Store 820 819 821: 27(ptr) AccessChain 10(dti) 26 822: 6(int) Load 821 823: 27(ptr) AccessChain 10(dti) 26 824: 6(int) Load 823 825: 32(ptr) AccessChain 24(data) 25 824 25 826: 13(ivec4) Load 825 827: 51(ivec2) VectorShuffle 826 826 0 1 828: 51(ivec2) GroupNonUniformBitwiseOr 35 Reduce 827 829: 42(ptr) AccessChain 24(data) 25 822 25 26 830: 6(int) CompositeExtract 828 0 Store 829 830 831: 42(ptr) AccessChain 24(data) 25 822 25 58 832: 6(int) CompositeExtract 828 1 Store 831 832 833: 27(ptr) AccessChain 10(dti) 26 834: 6(int) Load 833 835: 27(ptr) AccessChain 10(dti) 26 836: 6(int) Load 835 837: 32(ptr) AccessChain 24(data) 25 836 25 838: 13(ivec4) Load 837 839: 7(ivec3) VectorShuffle 838 838 0 1 2 840: 7(ivec3) GroupNonUniformBitwiseOr 35 Reduce 839 841: 42(ptr) AccessChain 24(data) 25 834 25 26 842: 6(int) CompositeExtract 840 0 Store 841 842 843: 42(ptr) AccessChain 24(data) 25 834 25 58 844: 6(int) CompositeExtract 840 1 Store 843 844 845: 42(ptr) AccessChain 24(data) 25 834 25 73 846: 6(int) CompositeExtract 840 2 Store 845 846 847: 27(ptr) AccessChain 10(dti) 26 848: 6(int) Load 847 849: 27(ptr) AccessChain 10(dti) 26 850: 6(int) Load 849 851: 81(ptr) AccessChain 24(data) 25 850 78 852: 15(ivec4) Load 851 853: 15(ivec4) GroupNonUniformBitwiseOr 35 Reduce 852 854: 81(ptr) AccessChain 24(data) 25 848 78 Store 854 853 855: 27(ptr) AccessChain 10(dti) 26 856: 6(int) Load 855 857: 27(ptr) AccessChain 10(dti) 26 858: 6(int) Load 857 859: 90(ptr) AccessChain 24(data) 25 858 78 26 860: 14(int) Load 859 861: 14(int) GroupNonUniformBitwiseOr 35 Reduce 860 862: 90(ptr) AccessChain 24(data) 25 856 78 26 Store 862 861 863: 27(ptr) AccessChain 10(dti) 26 864: 6(int) Load 863 865: 27(ptr) AccessChain 10(dti) 26 866: 6(int) Load 865 867: 81(ptr) AccessChain 24(data) 25 866 78 868: 15(ivec4) Load 867 869: 99(ivec2) VectorShuffle 868 868 0 1 870: 99(ivec2) GroupNonUniformBitwiseOr 35 Reduce 869 871: 90(ptr) AccessChain 24(data) 25 864 78 26 872: 14(int) CompositeExtract 870 0 Store 871 872 873: 90(ptr) AccessChain 24(data) 25 864 78 58 874: 14(int) CompositeExtract 870 1 Store 873 874 875: 27(ptr) AccessChain 10(dti) 26 876: 6(int) Load 875 877: 27(ptr) AccessChain 10(dti) 26 878: 6(int) Load 877 879: 81(ptr) AccessChain 24(data) 25 878 78 880: 15(ivec4) Load 879 881: 112(ivec3) VectorShuffle 880 880 0 1 2 882: 112(ivec3) GroupNonUniformBitwiseOr 35 Reduce 881 883: 90(ptr) AccessChain 24(data) 25 876 78 26 884: 14(int) CompositeExtract 882 0 Store 883 884 885: 90(ptr) AccessChain 24(data) 25 876 78 58 886: 14(int) CompositeExtract 882 1 Store 885 886 887: 90(ptr) AccessChain 24(data) 25 876 78 73 888: 14(int) CompositeExtract 882 2 Store 887 888 889: 27(ptr) AccessChain 10(dti) 26 890: 6(int) Load 889 891: 27(ptr) AccessChain 10(dti) 26 892: 6(int) Load 891 893: 32(ptr) AccessChain 24(data) 25 892 25 894: 13(ivec4) Load 893 895: 13(ivec4) GroupNonUniformBitwiseXor 35 Reduce 894 896: 32(ptr) AccessChain 24(data) 25 890 25 Store 896 895 897: 27(ptr) AccessChain 10(dti) 26 898: 6(int) Load 897 899: 27(ptr) AccessChain 10(dti) 26 900: 6(int) Load 899 901: 42(ptr) AccessChain 24(data) 25 900 25 26 902: 6(int) Load 901 903: 6(int) GroupNonUniformBitwiseXor 35 Reduce 902 904: 42(ptr) AccessChain 24(data) 25 898 25 26 Store 904 903 905: 27(ptr) AccessChain 10(dti) 26 906: 6(int) Load 905 907: 27(ptr) AccessChain 10(dti) 26 908: 6(int) Load 907 909: 32(ptr) AccessChain 24(data) 25 908 25 910: 13(ivec4) Load 909 911: 51(ivec2) VectorShuffle 910 910 0 1 912: 51(ivec2) GroupNonUniformBitwiseXor 35 Reduce 911 913: 42(ptr) AccessChain 24(data) 25 906 25 26 914: 6(int) CompositeExtract 912 0 Store 913 914 915: 42(ptr) AccessChain 24(data) 25 906 25 58 916: 6(int) CompositeExtract 912 1 Store 915 916 917: 27(ptr) AccessChain 10(dti) 26 918: 6(int) Load 917 919: 27(ptr) AccessChain 10(dti) 26 920: 6(int) Load 919 921: 32(ptr) AccessChain 24(data) 25 920 25 922: 13(ivec4) Load 921 923: 7(ivec3) VectorShuffle 922 922 0 1 2 924: 7(ivec3) GroupNonUniformBitwiseXor 35 Reduce 923 925: 42(ptr) AccessChain 24(data) 25 918 25 26 926: 6(int) CompositeExtract 924 0 Store 925 926 927: 42(ptr) AccessChain 24(data) 25 918 25 58 928: 6(int) CompositeExtract 924 1 Store 927 928 929: 42(ptr) AccessChain 24(data) 25 918 25 73 930: 6(int) CompositeExtract 924 2 Store 929 930 931: 27(ptr) AccessChain 10(dti) 26 932: 6(int) Load 931 933: 27(ptr) AccessChain 10(dti) 26 934: 6(int) Load 933 935: 81(ptr) AccessChain 24(data) 25 934 78 936: 15(ivec4) Load 935 937: 15(ivec4) GroupNonUniformBitwiseXor 35 Reduce 936 938: 81(ptr) AccessChain 24(data) 25 932 78 Store 938 937 939: 27(ptr) AccessChain 10(dti) 26 940: 6(int) Load 939 941: 27(ptr) AccessChain 10(dti) 26 942: 6(int) Load 941 943: 90(ptr) AccessChain 24(data) 25 942 78 26 944: 14(int) Load 943 945: 14(int) GroupNonUniformBitwiseXor 35 Reduce 944 946: 90(ptr) AccessChain 24(data) 25 940 78 26 Store 946 945 947: 27(ptr) AccessChain 10(dti) 26 948: 6(int) Load 947 949: 27(ptr) AccessChain 10(dti) 26 950: 6(int) Load 949 951: 81(ptr) AccessChain 24(data) 25 950 78 952: 15(ivec4) Load 951 953: 99(ivec2) VectorShuffle 952 952 0 1 954: 99(ivec2) GroupNonUniformBitwiseXor 35 Reduce 953 955: 90(ptr) AccessChain 24(data) 25 948 78 26 956: 14(int) CompositeExtract 954 0 Store 955 956 957: 90(ptr) AccessChain 24(data) 25 948 78 58 958: 14(int) CompositeExtract 954 1 Store 957 958 959: 27(ptr) AccessChain 10(dti) 26 960: 6(int) Load 959 961: 27(ptr) AccessChain 10(dti) 26 962: 6(int) Load 961 963: 81(ptr) AccessChain 24(data) 25 962 78 964: 15(ivec4) Load 963 965: 112(ivec3) VectorShuffle 964 964 0 1 2 966: 112(ivec3) GroupNonUniformBitwiseXor 35 Reduce 965 967: 90(ptr) AccessChain 24(data) 25 960 78 26 968: 14(int) CompositeExtract 966 0 Store 967 968 969: 90(ptr) AccessChain 24(data) 25 960 78 58 970: 14(int) CompositeExtract 966 1 Store 969 970 971: 90(ptr) AccessChain 24(data) 25 960 78 73 972: 14(int) CompositeExtract 966 2 Store 971 972 973: 27(ptr) AccessChain 10(dti) 26 974: 6(int) Load 973 975: 27(ptr) AccessChain 10(dti) 26 976: 6(int) Load 975 977: 42(ptr) AccessChain 24(data) 25 976 25 26 978: 6(int) Load 977 980: 979(bool) IEqual 978 26 981: 13(ivec4) GroupNonUniformBallot 35 980 982: 6(int) GroupNonUniformBallotBitCount 35 Reduce 981 983: 42(ptr) AccessChain 24(data) 25 974 25 26 Store 983 982 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.wavevote.comp.out000066400000000000000000000372701506534232700227470ustar00rootroot00000000000000hlsl.wavevote.comp Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:5 Function Definition: @CSMain(vu3; ( temp void) 0:5 Function Parameters: 0:5 'dti' ( in 3-component vector of uint) 0:? Sequence 0:6 move second child to first child ( temp uint64_t) 0:6 indirect index (layout( row_major std430) buffer uint64_t) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint64_t) 0:6 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 direct index ( temp uint) 0:6 'dti' ( in 3-component vector of uint) 0:6 Constant: 0:6 0 (const int) 0:6 Construct uint64 (layout( row_major std430) buffer uint64_t) 0:6 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:6 subgroupBallot ( temp 4-component vector of uint) 0:6 subgroupAny ( temp bool) 0:6 Compare Equal ( temp bool) 0:6 direct index ( temp uint) 0:6 'dti' ( in 3-component vector of uint) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const uint) 0:7 move second child to first child ( temp uint64_t) 0:7 indirect index (layout( row_major std430) buffer uint64_t) 0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint64_t) 0:7 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:7 Constant: 0:7 0 (const uint) 0:7 direct index ( temp uint) 0:7 'dti' ( in 3-component vector of uint) 0:7 Constant: 0:7 1 (const int) 0:7 Construct uint64 (layout( row_major std430) buffer uint64_t) 0:7 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:7 subgroupBallot ( temp 4-component vector of uint) 0:7 subgroupAll ( temp bool) 0:7 Compare Equal ( temp bool) 0:7 direct index ( temp uint) 0:7 'dti' ( in 3-component vector of uint) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const uint) 0:8 move second child to first child ( temp uint64_t) 0:8 indirect index (layout( row_major std430) buffer uint64_t) 0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint64_t) 0:8 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:8 Constant: 0:8 0 (const uint) 0:8 direct index ( temp uint) 0:8 'dti' ( in 3-component vector of uint) 0:8 Constant: 0:8 2 (const int) 0:8 Construct uint64 (layout( row_major std430) buffer uint64_t) 0:8 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:8 subgroupBallot ( temp 4-component vector of uint) 0:8 subgroupAllEqual ( temp bool) 0:8 Compare Equal ( temp bool) 0:8 direct index ( temp uint) 0:8 'dti' ( in 3-component vector of uint) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const uint) 0:9 move second child to first child ( temp uint64_t) 0:9 indirect index (layout( row_major std430) buffer uint64_t) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint64_t) 0:9 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 direct index ( temp uint) 0:9 'dti' ( in 3-component vector of uint) 0:9 Constant: 0:9 2 (const int) 0:9 Construct uint64 (layout( row_major std430) buffer uint64_t) 0:9 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:9 subgroupBallot ( temp 4-component vector of uint) 0:9 subgroupAllEqual ( temp bool) 0:9 direct index ( temp uint) 0:9 'dti' ( in 3-component vector of uint) 0:9 Constant: 0:9 2 (const int) 0:5 Function Definition: CSMain( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:5 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) Linked compute stage: Shader version: 500 local_size = (32, 16, 1) 0:? Sequence 0:5 Function Definition: @CSMain(vu3; ( temp void) 0:5 Function Parameters: 0:5 'dti' ( in 3-component vector of uint) 0:? Sequence 0:6 move second child to first child ( temp uint64_t) 0:6 indirect index (layout( row_major std430) buffer uint64_t) 0:6 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint64_t) 0:6 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:6 Constant: 0:6 0 (const uint) 0:6 direct index ( temp uint) 0:6 'dti' ( in 3-component vector of uint) 0:6 Constant: 0:6 0 (const int) 0:6 Construct uint64 (layout( row_major std430) buffer uint64_t) 0:6 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:6 subgroupBallot ( temp 4-component vector of uint) 0:6 subgroupAny ( temp bool) 0:6 Compare Equal ( temp bool) 0:6 direct index ( temp uint) 0:6 'dti' ( in 3-component vector of uint) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0 (const uint) 0:7 move second child to first child ( temp uint64_t) 0:7 indirect index (layout( row_major std430) buffer uint64_t) 0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint64_t) 0:7 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:7 Constant: 0:7 0 (const uint) 0:7 direct index ( temp uint) 0:7 'dti' ( in 3-component vector of uint) 0:7 Constant: 0:7 1 (const int) 0:7 Construct uint64 (layout( row_major std430) buffer uint64_t) 0:7 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:7 subgroupBallot ( temp 4-component vector of uint) 0:7 subgroupAll ( temp bool) 0:7 Compare Equal ( temp bool) 0:7 direct index ( temp uint) 0:7 'dti' ( in 3-component vector of uint) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 0 (const uint) 0:8 move second child to first child ( temp uint64_t) 0:8 indirect index (layout( row_major std430) buffer uint64_t) 0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint64_t) 0:8 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:8 Constant: 0:8 0 (const uint) 0:8 direct index ( temp uint) 0:8 'dti' ( in 3-component vector of uint) 0:8 Constant: 0:8 2 (const int) 0:8 Construct uint64 (layout( row_major std430) buffer uint64_t) 0:8 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:8 subgroupBallot ( temp 4-component vector of uint) 0:8 subgroupAllEqual ( temp bool) 0:8 Compare Equal ( temp bool) 0:8 direct index ( temp uint) 0:8 'dti' ( in 3-component vector of uint) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 0 (const uint) 0:9 move second child to first child ( temp uint64_t) 0:9 indirect index (layout( row_major std430) buffer uint64_t) 0:9 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint64_t) 0:9 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 direct index ( temp uint) 0:9 'dti' ( in 3-component vector of uint) 0:9 Constant: 0:9 2 (const int) 0:9 Construct uint64 (layout( row_major std430) buffer uint64_t) 0:9 Convert uint to uint64_t ( temp 4-component vector of uint64_t) 0:9 subgroupBallot ( temp 4-component vector of uint) 0:9 subgroupAllEqual ( temp bool) 0:9 direct index ( temp uint) 0:9 'dti' ( in 3-component vector of uint) 0:9 Constant: 0:9 2 (const int) 0:5 Function Definition: CSMain( ( temp void) 0:5 Function Parameters: 0:? Sequence 0:5 move second child to first child ( temp 3-component vector of uint) 0:? 'dti' ( temp 3-component vector of uint) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) 0:5 Function Call: @CSMain(vu3; ( temp void) 0:? 'dti' ( temp 3-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint64_t @data}) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 75 Capability Shader Capability Int64 Capability GroupNonUniform Capability GroupNonUniformVote Capability GroupNonUniformBallot 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "CSMain" 70 ExecutionMode 4 LocalSize 32 16 1 Source HLSL 500 Name 4 "CSMain" Name 11 "@CSMain(vu3;" Name 10 "dti" Name 15 "data" MemberName 15(data) 0 "@data" Name 17 "data" Name 68 "dti" Name 70 "dti" Name 72 "param" Decorate 14 ArrayStride 8 Decorate 15(data) Block MemberDecorate 15(data) 0 Offset 0 Decorate 17(data) Binding 0 Decorate 17(data) DescriptorSet 0 Decorate 70(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 9: TypeFunction 2 8(ptr) 13: TypeInt 64 0 14: TypeRuntimeArray 13(int64_t) 15(data): TypeStruct 14 16: TypePointer StorageBuffer 15(data) 17(data): 16(ptr) Variable StorageBuffer 18: TypeInt 32 1 19: 18(int) Constant 0 20: 6(int) Constant 0 21: TypePointer Function 6(int) 26: TypeBool 28: 6(int) Constant 3 30: TypeVector 6(int) 4 32: TypeVector 13(int64_t) 4 35: TypePointer StorageBuffer 13(int64_t) 37: 6(int) Constant 1 48: 6(int) Constant 2 69: TypePointer Input 7(ivec3) 70(dti): 69(ptr) Variable Input 4(CSMain): 2 Function None 3 5: Label 68(dti): 8(ptr) Variable Function 72(param): 8(ptr) Variable Function 71: 7(ivec3) Load 70(dti) Store 68(dti) 71 73: 7(ivec3) Load 68(dti) Store 72(param) 73 74: 2 FunctionCall 11(@CSMain(vu3;) 72(param) Return FunctionEnd 11(@CSMain(vu3;): 2 Function None 9 10(dti): 8(ptr) FunctionParameter 12: Label 22: 21(ptr) AccessChain 10(dti) 20 23: 6(int) Load 22 24: 21(ptr) AccessChain 10(dti) 20 25: 6(int) Load 24 27: 26(bool) IEqual 25 20 29: 26(bool) GroupNonUniformAny 28 27 31: 30(ivec4) GroupNonUniformBallot 28 29 33: 32(i64vec4) UConvert 31 34: 13(int64_t) CompositeExtract 33 0 36: 35(ptr) AccessChain 17(data) 19 23 Store 36 34 38: 21(ptr) AccessChain 10(dti) 37 39: 6(int) Load 38 40: 21(ptr) AccessChain 10(dti) 37 41: 6(int) Load 40 42: 26(bool) IEqual 41 20 43: 26(bool) GroupNonUniformAll 28 42 44: 30(ivec4) GroupNonUniformBallot 28 43 45: 32(i64vec4) UConvert 44 46: 13(int64_t) CompositeExtract 45 0 47: 35(ptr) AccessChain 17(data) 19 39 Store 47 46 49: 21(ptr) AccessChain 10(dti) 48 50: 6(int) Load 49 51: 21(ptr) AccessChain 10(dti) 48 52: 6(int) Load 51 53: 26(bool) IEqual 52 20 54: 26(bool) GroupNonUniformAllEqual 28 53 55: 30(ivec4) GroupNonUniformBallot 28 54 56: 32(i64vec4) UConvert 55 57: 13(int64_t) CompositeExtract 56 0 58: 35(ptr) AccessChain 17(data) 19 50 Store 58 57 59: 21(ptr) AccessChain 10(dti) 48 60: 6(int) Load 59 61: 21(ptr) AccessChain 10(dti) 48 62: 6(int) Load 61 63: 26(bool) GroupNonUniformAllEqual 28 62 64: 30(ivec4) GroupNonUniformBallot 28 63 65: 32(i64vec4) UConvert 64 66: 13(int64_t) CompositeExtract 65 0 67: 35(ptr) AccessChain 17(data) 19 60 Store 67 66 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.whileLoop.frag.out000066400000000000000000000202461506534232700230250ustar00rootroot00000000000000hlsl.whileLoop.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:3 Loop with condition tested first 0:3 Loop Condition 0:3 any ( temp bool) 0:3 NotEqual ( temp 4-component vector of bool) 0:3 'input' ( in 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:3 Loop Body 0:? Sequence 0:3 Branch: Return with expression 0:3 'input' ( in 4-component vector of float) 0:4 Loop with condition tested first 0:4 Loop Condition 0:4 Constant: 0:4 false (const bool) 0:4 No loop body 0:5 Loop with condition tested first: Unroll 0:5 Loop Condition 0:5 Constant: 0:5 false (const bool) 0:5 No loop body 0:6 Loop with condition tested first 0:6 Loop Condition 0:6 Constant: 0:6 false (const bool) 0:6 No loop body 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' ( in 4-component vector of float) 0:? Sequence 0:3 Loop with condition tested first 0:3 Loop Condition 0:3 any ( temp bool) 0:3 NotEqual ( temp 4-component vector of bool) 0:3 'input' ( in 4-component vector of float) 0:3 'input' ( in 4-component vector of float) 0:3 Loop Body 0:? Sequence 0:3 Branch: Return with expression 0:3 'input' ( in 4-component vector of float) 0:4 Loop with condition tested first 0:4 Loop Condition 0:4 Constant: 0:4 false (const bool) 0:4 No loop body 0:5 Loop with condition tested first: Unroll 0:5 Loop Condition 0:5 Constant: 0:5 false (const bool) 0:5 No loop body 0:6 Loop with condition tested first 0:6 Loop Condition 0:6 Constant: 0:6 false (const bool) 0:6 No loop body 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence 0:2 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) 0:2 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 45 48 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 11 "@PixelShaderFunction(vf4;" Name 10 "input" Name 43 "input" Name 45 "input" Name 48 "@entryPointOutput" Name 49 "param" Decorate 45(input) Location 0 Decorate 48(@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) 20: TypeBool 21: TypeVector 20(bool) 4 31: 20(bool) ConstantFalse 44: TypePointer Input 7(fvec4) 45(input): 44(ptr) Variable Input 47: TypePointer Output 7(fvec4) 48(@entryPointOutput): 47(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label 43(input): 8(ptr) Variable Function 49(param): 8(ptr) Variable Function 46: 7(fvec4) Load 45(input) Store 43(input) 46 50: 7(fvec4) Load 43(input) Store 49(param) 50 51: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 49(param) Store 48(@entryPointOutput) 51 Return FunctionEnd 11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label Branch 13 13: Label LoopMerge 15 16 None Branch 17 17: Label 18: 7(fvec4) Load 10(input) 19: 7(fvec4) Load 10(input) 22: 21(bvec4) FUnordNotEqual 18 19 23: 20(bool) Any 22 BranchConditional 23 14 15 14: Label 24: 7(fvec4) Load 10(input) ReturnValue 24 16: Label Branch 13 15: Label Branch 26 26: Label LoopMerge 28 29 None Branch 30 30: Label BranchConditional 31 27 28 27: Label Branch 29 29: Label Branch 26 28: Label Branch 32 32: Label LoopMerge 34 35 Unroll Branch 36 36: Label BranchConditional 31 33 34 33: Label Branch 35 35: Label Branch 32 34: Label Branch 37 37: Label LoopMerge 39 40 None Branch 41 41: Label BranchConditional 31 38 39 38: Label Branch 40 40: Label Branch 37 39: Label 42: 7(fvec4) Undef ReturnValue 42 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.y-negate-1.vert.out000066400000000000000000000135761506534232700230030ustar00rootroot00000000000000hlsl.y-negate-1.vert Shader version: 500 0:? Sequence 0:7 Function Definition: @main( ( temp 4-component vector of float) 0:7 Function Parameters: 0:? Sequence 0:8 Branch: Return with expression 0:8 pos: 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 pos}) 0:8 Constant: 0:8 0 (const uint) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 '@position' ( temp 4-component vector of float) 0:7 Function Call: @main( ( temp 4-component vector of float) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 '@position' ( temp 4-component vector of float) 0:7 Constant: 0:7 1 (const int) 0:7 Negate value ( temp float) 0:7 direct index ( temp float) 0:7 '@position' ( temp 4-component vector of float) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:7 '@position' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos}) 0:? '@entryPointOutput' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:7 Function Definition: @main( ( temp 4-component vector of float) 0:7 Function Parameters: 0:? Sequence 0:8 Branch: Return with expression 0:8 pos: 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 pos}) 0:8 Constant: 0:8 0 (const uint) 0:7 Function Definition: main( ( temp void) 0:7 Function Parameters: 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 '@position' ( temp 4-component vector of float) 0:7 Function Call: @main( ( temp 4-component vector of float) 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 '@position' ( temp 4-component vector of float) 0:7 Constant: 0:7 1 (const int) 0:7 Negate value ( temp float) 0:7 direct index ( temp float) 0:7 '@position' ( temp 4-component vector of float) 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:7 '@position' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos}) 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 32 Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 11 "$Global" MemberName 11($Global) 0 "pos" Name 13 "" Name 22 "@position" Name 32 "@entryPointOutput" Decorate 11($Global) Block MemberDecorate 11($Global) 0 Offset 0 Decorate 13 Binding 0 Decorate 13 DescriptorSet 0 Decorate 32(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11($Global): TypeStruct 7(fvec4) 12: TypePointer Uniform 11($Global) 13: 12(ptr) Variable Uniform 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Uniform 7(fvec4) 21: TypePointer Function 7(fvec4) 24: TypeInt 32 0 25: 24(int) Constant 1 26: TypePointer Function 6(float) 31: TypePointer Output 7(fvec4) 32(@entryPointOutput): 31(ptr) Variable Output 4(main): 2 Function None 3 5: Label 22(@position): 21(ptr) Variable Function 23: 7(fvec4) FunctionCall 9(@main() Store 22(@position) 23 27: 26(ptr) AccessChain 22(@position) 25 28: 6(float) Load 27 29: 6(float) FNegate 28 30: 26(ptr) AccessChain 22(@position) 25 Store 30 29 33: 7(fvec4) Load 22(@position) Store 32(@entryPointOutput) 33 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 17: 16(ptr) AccessChain 13 15 18: 7(fvec4) Load 17 ReturnValue 18 FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.y-negate-2.vert.out000066400000000000000000000153661506534232700230030ustar00rootroot00000000000000hlsl.y-negate-2.vert Shader version: 500 0:? Sequence 0:6 Function Definition: @main(vf4; ( temp void) 0:6 Function Parameters: 0:6 'position' ( out 4-component vector of float) 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'position' ( out 4-component vector of float) 0:7 pos: direct index for structure ( uniform 4-component vector of float) 0:7 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos}) 0:7 Constant: 0:7 0 (const uint) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 Function Call: @main(vf4; ( temp void) 0:? 'position' ( temp 4-component vector of float) 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 '@position' ( temp 4-component vector of float) 0:? 'position' ( temp 4-component vector of float) 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:6 '@position' ( temp 4-component vector of float) 0:6 Constant: 0:6 1 (const int) 0:6 Negate value ( temp float) 0:6 direct index ( temp float) 0:6 '@position' ( temp 4-component vector of float) 0:6 Constant: 0:6 1 (const int) 0:6 move second child to first child ( temp 4-component vector of float) 0:? 'position' ( out 4-component vector of float Position) 0:6 '@position' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos}) 0:? 'position' ( out 4-component vector of float Position) Linked vertex stage: Shader version: 500 0:? Sequence 0:6 Function Definition: @main(vf4; ( temp void) 0:6 Function Parameters: 0:6 'position' ( out 4-component vector of float) 0:? Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'position' ( out 4-component vector of float) 0:7 pos: direct index for structure ( uniform 4-component vector of float) 0:7 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos}) 0:7 Constant: 0:7 0 (const uint) 0:6 Function Definition: main( ( temp void) 0:6 Function Parameters: 0:? Sequence 0:6 Function Call: @main(vf4; ( temp void) 0:? 'position' ( temp 4-component vector of float) 0:6 Sequence 0:6 move second child to first child ( temp 4-component vector of float) 0:6 '@position' ( temp 4-component vector of float) 0:? 'position' ( temp 4-component vector of float) 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float) 0:6 '@position' ( temp 4-component vector of float) 0:6 Constant: 0:6 1 (const int) 0:6 Negate value ( temp float) 0:6 direct index ( temp float) 0:6 '@position' ( temp 4-component vector of float) 0:6 Constant: 0:6 1 (const int) 0:6 move second child to first child ( temp 4-component vector of float) 0:? 'position' ( out 4-component vector of float Position) 0:6 '@position' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos}) 0:? 'position' ( out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 35 Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "position" Name 13 "$Global" MemberName 13($Global) 0 "pos" Name 15 "" Name 21 "position" Name 22 "param" Name 25 "@position" Name 35 "position" Decorate 13($Global) Block MemberDecorate 13($Global) 0 Offset 0 Decorate 15 Binding 0 Decorate 15 DescriptorSet 0 Decorate 35(position) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 2 8(ptr) 13($Global): TypeStruct 7(fvec4) 14: TypePointer Uniform 13($Global) 15: 14(ptr) Variable Uniform 16: TypeInt 32 1 17: 16(int) Constant 0 18: TypePointer Uniform 7(fvec4) 27: TypeInt 32 0 28: 27(int) Constant 1 29: TypePointer Function 6(float) 34: TypePointer Output 7(fvec4) 35(position): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label 21(position): 8(ptr) Variable Function 22(param): 8(ptr) Variable Function 25(@position): 8(ptr) Variable Function 23: 2 FunctionCall 11(@main(vf4;) 22(param) 24: 7(fvec4) Load 22(param) Store 21(position) 24 26: 7(fvec4) Load 21(position) Store 25(@position) 26 30: 29(ptr) AccessChain 25(@position) 28 31: 6(float) Load 30 32: 6(float) FNegate 31 33: 29(ptr) AccessChain 25(@position) 28 Store 33 32 36: 7(fvec4) Load 25(@position) Store 35(position) 36 Return FunctionEnd 11(@main(vf4;): 2 Function None 9 10(position): 8(ptr) FunctionParameter 12: Label 19: 18(ptr) AccessChain 15 17 20: 7(fvec4) Load 19 Store 10(position) 20 Return FunctionEnd glslang-16.0.0/Test/baseResults/hlsl.y-negate-3.vert.out000066400000000000000000000260251506534232700227760ustar00rootroot00000000000000hlsl.y-negate-3.vert Shader version: 500 0:? Sequence 0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Function Parameters: 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 'vsout' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:14 Constant: 0:14 0 (const int) 0:14 position: direct index for structure ( uniform 4-component vector of float) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float position}) 0:14 Constant: 0:14 0 (const uint) 0:15 move second child to first child ( temp int) 0:15 somethingelse: direct index for structure ( temp int) 0:15 'vsout' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 42 (const int) 0:17 Branch: Return with expression 0:17 'vsout' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 '@position' ( temp 4-component vector of float) 0:11 pos: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 '@position' ( temp 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Negate value ( temp float) 0:11 direct index ( temp float) 0:11 '@position' ( temp 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' ( out 4-component vector of float Position) 0:11 '@position' ( temp 4-component vector of float) 0:11 move second child to first child ( temp int) 0:? '@entryPointOutput.somethingelse' (layout( location=0) out int) 0:11 somethingelse: direct index for structure ( temp int) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Constant: 0:11 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float position}) 0:? '@entryPointOutput.pos' ( out 4-component vector of float Position) 0:? '@entryPointOutput.somethingelse' (layout( location=0) out int) Linked vertex stage: Shader version: 500 0:? Sequence 0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Function Parameters: 0:? Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 pos: direct index for structure ( temp 4-component vector of float) 0:14 'vsout' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:14 Constant: 0:14 0 (const int) 0:14 position: direct index for structure ( uniform 4-component vector of float) 0:14 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float position}) 0:14 Constant: 0:14 0 (const uint) 0:15 move second child to first child ( temp int) 0:15 somethingelse: direct index for structure ( temp int) 0:15 'vsout' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:15 Constant: 0:15 1 (const int) 0:15 Constant: 0:15 42 (const int) 0:17 Branch: Return with expression 0:17 'vsout' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: 0:? Sequence 0:11 Sequence 0:11 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 '@position' ( temp 4-component vector of float) 0:11 pos: direct index for structure ( temp 4-component vector of float) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) 0:11 direct index ( temp float) 0:11 '@position' ( temp 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 Negate value ( temp float) 0:11 direct index ( temp float) 0:11 '@position' ( temp 4-component vector of float) 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.pos' ( out 4-component vector of float Position) 0:11 '@position' ( temp 4-component vector of float) 0:11 move second child to first child ( temp int) 0:? '@entryPointOutput.somethingelse' (layout( location=0) out int) 0:11 somethingelse: direct index for structure ( temp int) 0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp int somethingelse}) 0:11 Constant: 0:11 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float position}) 0:? '@entryPointOutput.pos' ( out 4-component vector of float Position) 0:? '@entryPointOutput.somethingelse' (layout( location=0) out int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 44 47 Source HLSL 500 Name 4 "main" Name 9 "VS_OUT" MemberName 9(VS_OUT) 0 "pos" MemberName 9(VS_OUT) 1 "somethingelse" Name 11 "@main(" Name 14 "vsout" Name 16 "$Global" MemberName 16($Global) 0 "position" Name 18 "" Name 31 "flattenTemp" Name 33 "@position" Name 44 "@entryPointOutput.pos" Name 47 "@entryPointOutput.somethingelse" Decorate 16($Global) Block MemberDecorate 16($Global) 0 Offset 0 Decorate 18 Binding 0 Decorate 18 DescriptorSet 0 Decorate 44(@entryPointOutput.pos) BuiltIn Position Decorate 47(@entryPointOutput.somethingelse) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 1 9(VS_OUT): TypeStruct 7(fvec4) 8(int) 10: TypeFunction 9(VS_OUT) 13: TypePointer Function 9(VS_OUT) 15: 8(int) Constant 0 16($Global): TypeStruct 7(fvec4) 17: TypePointer Uniform 16($Global) 18: 17(ptr) Variable Uniform 19: TypePointer Uniform 7(fvec4) 22: TypePointer Function 7(fvec4) 24: 8(int) Constant 1 25: 8(int) Constant 42 26: TypePointer Function 8(int) 36: TypeInt 32 0 37: 36(int) Constant 1 38: TypePointer Function 6(float) 43: TypePointer Output 7(fvec4) 44(@entryPointOutput.pos): 43(ptr) Variable Output 46: TypePointer Output 8(int) 47(@entryPointOutput.somethingelse): 46(ptr) Variable Output 4(main): 2 Function None 3 5: Label 31(flattenTemp): 13(ptr) Variable Function 33(@position): 22(ptr) Variable Function 32: 9(VS_OUT) FunctionCall 11(@main() Store 31(flattenTemp) 32 34: 22(ptr) AccessChain 31(flattenTemp) 15 35: 7(fvec4) Load 34 Store 33(@position) 35 39: 38(ptr) AccessChain 33(@position) 37 40: 6(float) Load 39 41: 6(float) FNegate 40 42: 38(ptr) AccessChain 33(@position) 37 Store 42 41 45: 7(fvec4) Load 33(@position) Store 44(@entryPointOutput.pos) 45 48: 26(ptr) AccessChain 31(flattenTemp) 24 49: 8(int) Load 48 Store 47(@entryPointOutput.somethingelse) 49 Return FunctionEnd 11(@main(): 9(VS_OUT) Function None 10 12: Label 14(vsout): 13(ptr) Variable Function 20: 19(ptr) AccessChain 18 15 21: 7(fvec4) Load 20 23: 22(ptr) AccessChain 14(vsout) 15 Store 23 21 27: 26(ptr) AccessChain 14(vsout) 24 Store 27 25 28: 9(VS_OUT) Load 14(vsout) ReturnValue 28 FunctionEnd glslang-16.0.0/Test/baseResults/implicitArraySize.vert.out000066400000000000000000000075621506534232700236350ustar00rootroot00000000000000implicitArraySize.vert Shader version: 460 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 direct index ( smooth temp float) 0:6 'a' ( smooth out unsized 1-element array of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0.100000 0:7 move second child to first child ( temp float) 0:7 direct index ( smooth temp float) 0:7 'c' ( smooth out unsized 6-element array of float) 0:7 Constant: 0:7 5 (const int) 0:7 Constant: 0:7 0.100000 0:? Linker Objects 0:? 'a' ( smooth out unsized 1-element array of float) 0:? 'c' ( smooth out unsized 6-element array of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) implicitArraySize.frag Shader version: 460 0:? Sequence 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 'b' ( out 5-element array of float) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( smooth temp float) 0:7 'a' ( smooth in unsized 2-element array of float) 0:7 Constant: 0:7 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 'b' ( out 5-element array of float) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( smooth temp float) 0:8 'c' ( smooth in 3-element array of float) 0:8 Constant: 0:8 1 (const int) 0:? Linker Objects 0:? 'a' ( smooth in unsized 2-element array of float) 0:? 'c' ( smooth in 3-element array of float) 0:? 'b' ( out 5-element array of float) Linked vertex stage: Linked fragment stage: ERROR: Linking vertex and fragment stages: Implicit size of unsized array doesn't match same symbol among multiple shaders. Shader version: 460 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 direct index ( smooth temp float) 0:6 'a' ( smooth out 1-element array of float) 0:6 Constant: 0:6 0 (const int) 0:6 Constant: 0:6 0.100000 0:7 move second child to first child ( temp float) 0:7 direct index ( smooth temp float) 0:7 'c' ( smooth out 6-element array of float) 0:7 Constant: 0:7 5 (const int) 0:7 Constant: 0:7 0.100000 0:? Linker Objects 0:? 'a' ( smooth out 1-element array of float) 0:? 'c' ( smooth out 6-element array of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 0:? Sequence 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 direct index ( temp float) 0:7 'b' ( out 5-element array of float) 0:7 Constant: 0:7 0 (const int) 0:7 direct index ( smooth temp float) 0:7 'a' ( smooth in 2-element array of float) 0:7 Constant: 0:7 1 (const int) 0:8 move second child to first child ( temp float) 0:8 direct index ( temp float) 0:8 'b' ( out 5-element array of float) 0:8 Constant: 0:8 1 (const int) 0:8 direct index ( smooth temp float) 0:8 'c' ( smooth in 3-element array of float) 0:8 Constant: 0:8 1 (const int) 0:? Linker Objects 0:? 'a' ( smooth in 2-element array of float) 0:? 'c' ( smooth in 3-element array of float) 0:? 'b' ( out 5-element array of float) glslang-16.0.0/Test/baseResults/implicitArraySize1.geom.out000066400000000000000000000066731506534232700236670ustar00rootroot00000000000000implicitArraySize1.geom Shader version: 460 invocations = -1 max_vertices = 204 input primitive = triangles output primitive = line_strip 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:12 Sequence 0:12 Function Call: f( ( global void) 0:13 move second child to first child ( temp float) 0:13 direct index (layout( stream=0) temp float) 0:13 'o' (layout( stream=0) out 3-element array of float) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( temp float) 0:13 direct index ( temp 3-element array of float) 0:13 'g' ( in 3-element array of 3-element array of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 1 (const int) 0:? Linker Objects 0:? 'g' ( in 3-element array of 3-element array of float) 0:? 'o' (layout( stream=0) out 3-element array of float) implicitArraySize2.geom Shader version: 460 invocations = -1 max_vertices = -1 input primitive = none output primitive = none 0:? Sequence 0:6 Function Definition: f( ( global void) 0:6 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 direct index (layout( stream=0) temp float) 0:7 'o' (layout( stream=0) out unsized 2-element array of float) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( temp float) 0:7 direct index ( temp 3-element array of float) 0:7 'g' ( in unsized 2-element array of 3-element array of float) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:? Linker Objects 0:? 'g' ( in unsized 2-element array of 3-element array of float) 0:? 'o' (layout( stream=0) out unsized 2-element array of float) Linked geometry stage: ERROR: Linking geometry stage: Not all array sizes match across all geometry shaders in the program Shader version: 460 invocations = 1 max_vertices = 204 input primitive = triangles output primitive = line_strip 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:12 Sequence 0:12 Function Call: f( ( global void) 0:13 move second child to first child ( temp float) 0:13 direct index (layout( stream=0) temp float) 0:13 'o' (layout( stream=0) out 3-element array of float) 0:13 Constant: 0:13 1 (const int) 0:13 direct index ( temp float) 0:13 direct index ( temp 3-element array of float) 0:13 'g' ( in 3-element array of 3-element array of float) 0:13 Constant: 0:13 2 (const int) 0:13 Constant: 0:13 1 (const int) 0:6 Function Definition: f( ( global void) 0:6 Function Parameters: 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 direct index (layout( stream=0) temp float) 0:7 'o' (layout( stream=0) out unsized 2-element array of float) 0:7 Constant: 0:7 1 (const int) 0:7 direct index ( temp float) 0:7 direct index ( temp 3-element array of float) 0:7 'g' ( in unsized 2-element array of 3-element array of float) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) 0:? Linker Objects 0:? 'g' ( in 3-element array of 3-element array of float) 0:? 'o' (layout( stream=0) out 3-element array of float) glslang-16.0.0/Test/baseResults/implicitArraySizeBuiltin.vert.out000066400000000000000000000302261506534232700251550ustar00rootroot00000000000000implicitArraySizeBuiltin.vert Shader version: 460 0:? Sequence 0:3 Function Definition: f1(f1; ( global void) 0:3 Function Parameters: 0:3 'x' ( in float) 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 direct index ( temp float ClipDistance) 0:5 gl_ClipDistance: direct index for structure ( out unsized 7-element array of float ClipDistance) 0:5 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance}) 0:5 Constant: 0:5 2 (const uint) 0:5 Constant: 0:5 6 (const int) 0:5 'x' ( in float) 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float CullDistance) 0:6 gl_CullDistance: direct index for structure ( out unsized 2-element array of float CullDistance) 0:6 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance}) 0:6 Constant: 0:6 3 (const uint) 0:6 Constant: 0:6 1 (const int) 0:6 'x' ( in float) 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:10 Sequence 0:10 Function Call: f1(f1; ( global void) 0:10 Constant: 0:10 0.100000 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) implicitArraySizeBuiltin.geom Shader version: 460 invocations = -1 max_vertices = 204 input primitive = triangles output primitive = line_strip 0:? Sequence 0:6 Function Definition: f2(f1; ( global void) 0:6 Function Parameters: 0:6 'x' ( in float) 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 direct index (layout( stream=0) temp float ClipDistance) 0:8 gl_ClipDistance: direct index for structure (layout( stream=0) out unsized 7-element array of float ClipDistance) 0:8 '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 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance}) 0:8 Constant: 0:8 2 (const uint) 0:8 Constant: 0:8 6 (const int) 0:8 direct index ( temp float ClipDistance) 0:8 gl_ClipDistance: direct index for structure ( in unsized 7-element array of float ClipDistance) 0:8 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:8 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 2 (const int) 0:8 Constant: 0:8 6 (const int) 0:10 Function Definition: f3(f1; ( global void) 0:10 Function Parameters: 0:10 'x' ( in float) 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 direct index (layout( stream=0) temp float CullDistance) 0:12 gl_CullDistance: direct index for structure (layout( stream=0) out unsized 2-element array of float CullDistance) 0:12 '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 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance}) 0:12 Constant: 0:12 3 (const uint) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( temp float CullDistance) 0:12 gl_CullDistance: direct index for structure ( in unsized 2-element array of float CullDistance) 0:12 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:12 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 1 (const int) 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:19 Sequence 0:19 Function Call: f3(f1; ( global void) 0:19 Constant: 0:19 0.100000 0:? Linker Objects 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 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance}) 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) Linked vertex stage: Linked geometry stage: Shader version: 460 0:? Sequence 0:3 Function Definition: f1(f1; ( global void) 0:3 Function Parameters: 0:3 'x' ( in float) 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 direct index ( temp float ClipDistance) 0:5 gl_ClipDistance: direct index for structure ( out 7-element array of float ClipDistance) 0:5 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance}) 0:5 Constant: 0:5 2 (const uint) 0:5 Constant: 0:5 6 (const int) 0:5 'x' ( in float) 0:6 move second child to first child ( temp float) 0:6 direct index ( temp float CullDistance) 0:6 gl_CullDistance: direct index for structure ( out 2-element array of float CullDistance) 0:6 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance}) 0:6 Constant: 0:6 3 (const uint) 0:6 Constant: 0:6 1 (const int) 0:6 'x' ( in float) 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:10 Sequence 0:10 Function Call: f1(f1; ( global void) 0:10 Constant: 0:10 0.100000 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 invocations = 1 max_vertices = 204 input primitive = triangles output primitive = line_strip 0:? Sequence 0:10 Function Definition: f3(f1; ( global void) 0:10 Function Parameters: 0:10 'x' ( in float) 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 direct index (layout( stream=0) temp float CullDistance) 0:12 gl_CullDistance: direct index for structure (layout( stream=0) out 2-element array of float CullDistance) 0:12 '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 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 2-element array of float CullDistance gl_CullDistance}) 0:12 Constant: 0:12 3 (const uint) 0:12 Constant: 0:12 1 (const int) 0:12 direct index ( temp float CullDistance) 0:12 gl_CullDistance: direct index for structure ( in 2-element array of float CullDistance) 0:12 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-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}) 0:12 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-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}) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 3 (const int) 0:12 Constant: 0:12 1 (const int) 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:19 Sequence 0:19 Function Call: f3(f1; ( global void) 0:19 Constant: 0:19 0.100000 0:? Linker Objects 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 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 2-element array of float CullDistance gl_CullDistance}) 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-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}) glslang-16.0.0/Test/baseResults/implicitArraySizeUniform.vert.out000066400000000000000000000331711506534232700251700ustar00rootroot00000000000000implicitArraySizeUniform.vert Shader version: 460 Requested GL_EXT_nonuniform_qualifier 0:? Sequence 0:49 Function Definition: main( ( global void) 0:49 Function Parameters: 0:50 Sequence 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'out_VS' ( smooth out 4-component vector of float) 0:50 texture ( global 4-component vector of float) 0:50 indirect index ( nonuniform temp sampler2D) 0:50 's1' ( uniform runtime-sized array of sampler2D) 0:50 copy object ( nonuniform temp int) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 0.000000 0:50 0.000000 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'out_VS' ( smooth out 4-component vector of float) 0:51 direct index (layout( column_major shared) temp 4-component vector of float) 0:51 a: direct index for structure (layout( column_major shared) uniform unsized 11-element array of 4-component vector of float) 0:51 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 11-element array of 4-component vector of float a}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 10 (const int) 0:52 move second child to first child ( temp 4-component vector of float) 0:52 'out_VS' ( smooth out 4-component vector of float) 0:52 direct index (layout( column_major shared) temp 4-component vector of float) 0:52 a: direct index for structure (layout( column_major shared) buffer unsized 6-element array of 4-component vector of float) 0:52 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 6-element array of 4-component vector of float a}) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 5 (const int) 0:? Linker Objects 0:? 'f0' ( uniform unsized 1-element array of float) 0:? 's0' ( uniform unsized 1-element array of sampler2D) 0:? 's1' ( uniform runtime-sized array of sampler2D) 0:? 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 11-element array of 4-component vector of float a}) 0:? 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 1-element array of 4-component vector of float a}) 0:? 'b0' (layout( column_major shared) buffer unsized 1-element array of block{layout( column_major shared) buffer 4-component vector of float a}) 0:? 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 6-element array of 4-component vector of float a}) 0:? 'b2' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:? 'out_VS' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) implicitArraySizeUniform.frag Shader version: 460 Requested GL_EXT_nonuniform_qualifier 0:? Sequence 0:50 Function Definition: main( ( global void) 0:50 Function Parameters: 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'o' ( out 4-component vector of float) 0:51 texture ( global 4-component vector of float) 0:51 indirect index ( nonuniform temp sampler2D) 0:51 's0' ( uniform runtime-sized array of sampler2D) 0:51 copy object ( nonuniform temp int) 0:51 Constant: 0:51 1 (const int) 0:51 vector swizzle ( temp 2-component vector of float) 0:51 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'o' ( out 4-component vector of float) 0:52 direct index (layout( column_major shared) temp 4-component vector of float) 0:52 a: direct index for structure (layout( column_major shared) uniform unsized 7-element array of 4-component vector of float) 0:52 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 7-element array of 4-component vector of float a}) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 6 (const int) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'o' ( out 4-component vector of float) 0:53 a: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:53 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float a}) 0:53 'b0' (layout( column_major shared) buffer unsized 10-element array of block{layout( column_major shared) buffer 4-component vector of float a}) 0:53 Constant: 0:53 9 (const int) 0:53 Constant: 0:53 0 (const int) 0:54 add second child into first child ( temp 4-component vector of float) 0:54 'o' ( out 4-component vector of float) 0:54 indirect index (layout( column_major shared) nonuniform temp 4-component vector of float) 0:54 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of 4-component vector of float) 0:54 'b2' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of 4-component vector of float a}) 0:54 Constant: 0:54 0 (const int) 0:54 copy object ( nonuniform temp int) 0:54 Constant: 0:54 1 (const int) 0:? Linker Objects 0:? 'f0' ( uniform unsized 1-element array of float) 0:? 's0' ( uniform runtime-sized array of sampler2D) 0:? 's1' ( uniform unsized 1-element array of sampler2D) 0:? 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 1-element array of 4-component vector of float a}) 0:? 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 7-element array of 4-component vector of float a}) 0:? 'b0' (layout( column_major shared) buffer unsized 10-element array of block{layout( column_major shared) buffer 4-component vector of float a}) 0:? 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 11-element array of 4-component vector of float a}) 0:? 'b2' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of 4-component vector of float a}) 0:? 'out_VS' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) Linked vertex stage: Linked fragment stage: Shader version: 460 Requested GL_EXT_nonuniform_qualifier 0:? Sequence 0:49 Function Definition: main( ( global void) 0:49 Function Parameters: 0:50 Sequence 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'out_VS' ( smooth out 4-component vector of float) 0:50 texture ( global 4-component vector of float) 0:50 indirect index ( nonuniform temp sampler2D) 0:50 's1' ( uniform runtime-sized array of sampler2D) 0:50 copy object ( nonuniform temp int) 0:50 Constant: 0:50 0 (const int) 0:50 Constant: 0:50 0.000000 0:50 0.000000 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'out_VS' ( smooth out 4-component vector of float) 0:51 direct index (layout( column_major shared) temp 4-component vector of float) 0:51 a: direct index for structure (layout( column_major shared) uniform 11-element array of 4-component vector of float) 0:51 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform 11-element array of 4-component vector of float a}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 10 (const int) 0:52 move second child to first child ( temp 4-component vector of float) 0:52 'out_VS' ( smooth out 4-component vector of float) 0:52 direct index (layout( column_major shared) temp 4-component vector of float) 0:52 a: direct index for structure (layout( column_major shared) buffer 11-element array of 4-component vector of float) 0:52 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 11-element array of 4-component vector of float a}) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 5 (const int) 0:? Linker Objects 0:? 'f0' ( uniform 1-element array of float) 0:? 's0' ( uniform runtime-sized array of sampler2D) 0:? 's1' ( uniform runtime-sized array of sampler2D) 0:? 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform 11-element array of 4-component vector of float a}) 0:? 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 7-element array of 4-component vector of float a}) 0:? 'b0' (layout( column_major shared) buffer 10-element array of block{layout( column_major shared) buffer 4-component vector of float a}) 0:? 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 11-element array of 4-component vector of float a}) 0:? 'b2' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of 4-component vector of float a}) 0:? 'out_VS' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 Requested GL_EXT_nonuniform_qualifier 0:? Sequence 0:50 Function Definition: main( ( global void) 0:50 Function Parameters: 0:51 Sequence 0:51 move second child to first child ( temp 4-component vector of float) 0:51 'o' ( out 4-component vector of float) 0:51 texture ( global 4-component vector of float) 0:51 indirect index ( nonuniform temp sampler2D) 0:51 's0' ( uniform runtime-sized array of sampler2D) 0:51 copy object ( nonuniform temp int) 0:51 Constant: 0:51 1 (const int) 0:51 vector swizzle ( temp 2-component vector of float) 0:51 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 1 (const int) 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'o' ( out 4-component vector of float) 0:52 direct index (layout( column_major shared) temp 4-component vector of float) 0:52 a: direct index for structure (layout( column_major shared) uniform 7-element array of 4-component vector of float) 0:52 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 7-element array of 4-component vector of float a}) 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 6 (const int) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'o' ( out 4-component vector of float) 0:53 a: direct index for structure (layout( column_major shared) buffer 4-component vector of float) 0:53 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float a}) 0:53 'b0' (layout( column_major shared) buffer 10-element array of block{layout( column_major shared) buffer 4-component vector of float a}) 0:53 Constant: 0:53 9 (const int) 0:53 Constant: 0:53 0 (const int) 0:54 add second child into first child ( temp 4-component vector of float) 0:54 'o' ( out 4-component vector of float) 0:54 indirect index (layout( column_major shared) nonuniform temp 4-component vector of float) 0:54 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of 4-component vector of float) 0:54 'b2' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of 4-component vector of float a}) 0:54 Constant: 0:54 0 (const int) 0:54 copy object ( nonuniform temp int) 0:54 Constant: 0:54 1 (const int) 0:? Linker Objects 0:? 'f0' ( uniform 1-element array of float) 0:? 's0' ( uniform runtime-sized array of sampler2D) 0:? 's1' ( uniform runtime-sized array of sampler2D) 0:? 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform 11-element array of 4-component vector of float a}) 0:? 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 7-element array of 4-component vector of float a}) 0:? 'b0' (layout( column_major shared) buffer 10-element array of block{layout( column_major shared) buffer 4-component vector of float a}) 0:? 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 11-element array of 4-component vector of float a}) 0:? 'b2' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of 4-component vector of float a}) 0:? 'out_VS' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/implicitArraySizeUniformContradict.vert.out000066400000000000000000000300511506534232700271750ustar00rootroot00000000000000implicitArraySizeUniformContradict.vert Shader version: 460 0:? Sequence 0:39 Function Definition: main( ( global void) 0:39 Function Parameters: 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'out_VS' ( smooth out 4-component vector of float) 0:40 direct index (layout( column_major shared) temp 4-component vector of float) 0:40 a: direct index for structure (layout( column_major shared) uniform unsized 21-element array of 4-component vector of float) 0:40 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 21-element array of 4-component vector of float a}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 20 (const int) 0:41 move second child to first child ( temp 4-component vector of float) 0:41 'out_VS' ( smooth out 4-component vector of float) 0:41 direct index (layout( column_major shared) temp 4-component vector of float) 0:41 a: direct index for structure (layout( column_major shared) buffer unsized 1-element array of 4-component vector of float) 0:41 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:41 'b2' (layout( column_major shared) buffer unsized 5-element array of block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:41 Constant: 0:41 4 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0 (const int) 0:? Linker Objects 0:? 's' ( uniform 3-element array of sampler2D) 0:? 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 21-element array of 4-component vector of float a}) 0:? 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 5-element array of 4-component vector of float a}) 0:? 'b0' (layout( column_major shared) buffer block{layout( column_major shared) buffer 3-element array of 4-component vector of float a}) 0:? 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 3-element array of 4-component vector of float a}) 0:? 'b2' (layout( column_major shared) buffer unsized 5-element array of block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:? 'out_VS' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) implicitArraySizeUniformContradict.frag Shader version: 460 0:? Sequence 0:40 Function Definition: main( ( global void) 0:40 Function Parameters: 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of float) 0:41 'o' ( out 4-component vector of float) 0:41 texture ( global 4-component vector of float) 0:41 direct index ( temp sampler2D) 0:41 's' ( uniform unsized 7-element array of sampler2D) 0:41 Constant: 0:41 6 (const int) 0:41 vector swizzle ( temp 2-component vector of float) 0:41 'out_VS' ( smooth in 4-component vector of float) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'o' ( out 4-component vector of float) 0:42 direct index (layout( column_major shared) temp 4-component vector of float) 0:42 a: direct index for structure (layout( column_major shared) uniform unsized 13-element array of 4-component vector of float) 0:42 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 13-element array of 4-component vector of float a}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 12 (const int) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'o' ( out 4-component vector of float) 0:43 direct index (layout( column_major shared) temp 4-component vector of float) 0:43 a: direct index for structure (layout( column_major shared) buffer unsized 5-element array of 4-component vector of float) 0:43 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 5-element array of 4-component vector of float a}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 4 (const int) 0:? Linker Objects 0:? 's' ( uniform unsized 7-element array of sampler2D) 0:? 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform 2-element array of 4-component vector of float a}) 0:? 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 13-element array of 4-component vector of float a}) 0:? 'b0' (layout( column_major shared) buffer block{layout( column_major shared) buffer 5-element array of 4-component vector of float a}) 0:? 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer unsized 5-element array of 4-component vector of float a}) 0:? 'b2' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:? 'out_VS' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) Linked vertex stage: Linked fragment stage: ERROR: Linking fragment stage: Implicit size of unsized array doesn't match same symbol among multiple shaders. ERROR: Linking fragment stage: Implicit size of unsized array doesn't match same symbol among multiple shaders. ERROR: Linking fragment stage: Implicit size of unsized array doesn't match same symbol among multiple shaders. ERROR: Linking fragment stage: Member names and types must match: Block: U1 vertex stage: " vec4 a[5]" fragment stage: " vec4 a[13]" ERROR: Linking fragment stage: Member names and types must match: Block: B0 vertex stage: " vec4 a[3]" fragment stage: " vec4 a[5]" ERROR: Linking fragment stage: Implicit size of unsized array doesn't match same symbol among multiple shaders. ERROR: Linking fragment stage: Member names and types must match: Block: B1 vertex stage: " vec4 a[3]" fragment stage: " vec4 a[5]" ERROR: Linking fragment stage: Implicit size of unsized array doesn't match same symbol among multiple shaders. Shader version: 460 0:? Sequence 0:39 Function Definition: main( ( global void) 0:39 Function Parameters: 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'out_VS' ( smooth out 4-component vector of float) 0:40 direct index (layout( column_major shared) temp 4-component vector of float) 0:40 a: direct index for structure (layout( column_major shared) uniform 2-element array of 4-component vector of float) 0:40 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform 2-element array of 4-component vector of float a}) 0:40 Constant: 0:40 0 (const int) 0:40 Constant: 0:40 20 (const int) 0:41 move second child to first child ( temp 4-component vector of float) 0:41 'out_VS' ( smooth out 4-component vector of float) 0:41 direct index (layout( column_major shared) temp 4-component vector of float) 0:41 a: direct index for structure (layout( column_major shared) buffer unsized 1-element array of 4-component vector of float) 0:41 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:41 'b2' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:41 Constant: 0:41 4 (const int) 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 0 (const int) 0:? Linker Objects 0:? 's' ( uniform 3-element array of sampler2D) 0:? 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform 2-element array of 4-component vector of float a}) 0:? 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 5-element array of 4-component vector of float a}) 0:? 'b0' (layout( column_major shared) buffer block{layout( column_major shared) buffer 3-element array of 4-component vector of float a}) 0:? 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 3-element array of 4-component vector of float a}) 0:? 'b2' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:? 'out_VS' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 0:? Sequence 0:40 Function Definition: main( ( global void) 0:40 Function Parameters: 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of float) 0:41 'o' ( out 4-component vector of float) 0:41 texture ( global 4-component vector of float) 0:41 direct index ( temp sampler2D) 0:41 's' ( uniform 3-element array of sampler2D) 0:41 Constant: 0:41 6 (const int) 0:41 vector swizzle ( temp 2-component vector of float) 0:41 'out_VS' ( smooth in 4-component vector of float) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'o' ( out 4-component vector of float) 0:42 direct index (layout( column_major shared) temp 4-component vector of float) 0:42 a: direct index for structure (layout( column_major shared) uniform 5-element array of 4-component vector of float) 0:42 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 5-element array of 4-component vector of float a}) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 12 (const int) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'o' ( out 4-component vector of float) 0:43 direct index (layout( column_major shared) temp 4-component vector of float) 0:43 a: direct index for structure (layout( column_major shared) buffer 3-element array of 4-component vector of float) 0:43 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 3-element array of 4-component vector of float a}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 4 (const int) 0:? Linker Objects 0:? 's' ( uniform 3-element array of sampler2D) 0:? 'u0' (layout( column_major shared) uniform block{layout( column_major shared) uniform 2-element array of 4-component vector of float a}) 0:? 'u1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 5-element array of 4-component vector of float a}) 0:? 'b0' (layout( column_major shared) buffer block{layout( column_major shared) buffer 5-element array of 4-component vector of float a}) 0:? 'b1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 3-element array of 4-component vector of float a}) 0:? 'b2' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer unsized 1-element array of 4-component vector of float a}) 0:? 'out_VS' ( smooth in 4-component vector of float) 0:? 'o' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/implicitInnerAtomicUint.frag.out000066400000000000000000000011651506534232700247240ustar00rootroot00000000000000implicitInnerAtomicUint.frag ERROR: 0:2: '[]' : only outermost dimension of an array of arrays can be implicitly sized ERROR: 1 compilation errors. No code generated. Shader version: 460 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'c' (layout( binding=0 offset=0) uniform 1-element array of 1-element array of atomic_uint) Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 460 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'c' (layout( binding=0 offset=0) uniform 1-element array of 1-element array of atomic_uint) glslang-16.0.0/Test/baseResults/include.vert.out000066400000000000000000000057211506534232700216070ustar00rootroot00000000000000include.vert Shader version: 450 Requested GL_GOOGLE_cpp_style_line_directive Requested GL_GOOGLE_include_directive 0:? Sequence 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'color' ( smooth out 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 'i1' ( global 4-component vector of float) 0:15 'i2' ( global 4-component vector of float) 0:15 'i3' ( global 4-component vector of float) 0:15 'i4' ( global 4-component vector of float) 0:15 'i5' ( global 4-component vector of float) 0:15 'i6' ( global 4-component vector of float) 0:? Linker Objects 0:? 'i1' ( global 4-component vector of float) 0:? 'i2' ( global 4-component vector of float) 0:? 'i4' ( global 4-component vector of float) 0:? 'i3' ( global 4-component vector of float) 0:? 'i6' ( global 4-component vector of float) 0:? 'i5' ( global 4-component vector of float) 0:? 'color' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 450 Requested GL_GOOGLE_cpp_style_line_directive Requested GL_GOOGLE_include_directive 0:? Sequence 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'color' ( smooth out 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 add ( temp 4-component vector of float) 0:15 'i1' ( global 4-component vector of float) 0:15 'i2' ( global 4-component vector of float) 0:15 'i3' ( global 4-component vector of float) 0:15 'i4' ( global 4-component vector of float) 0:15 'i5' ( global 4-component vector of float) 0:15 'i6' ( global 4-component vector of float) 0:? Linker Objects 0:? 'i1' ( global 4-component vector of float) 0:? 'i2' ( global 4-component vector of float) 0:? 'i4' ( global 4-component vector of float) 0:? 'i3' ( global 4-component vector of float) 0:? 'i6' ( global 4-component vector of float) 0:? 'i5' ( global 4-component vector of float) 0:? 'color' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/index_outside_sample_mask_range.frag.out000066400000000000000000000037511506534232700265170ustar00rootroot00000000000000index_outside_sample_mask_range.frag ERROR: 0:6: '[' : gl_SampleMask array index out of range '1' ERROR: 1 compilation errors. No code generated. Shader version: 320 ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp highp int) 0:6 'invalidValue' ( temp highp int) 0:6 direct index ( temp highp int SampleMaskIn) 0:6 'gl_SampleMask' ( out unsized 2-element array of highp int SampleMaskIn) 0:6 Constant: 0:6 1 (const int) 0:7 move second child to first child ( temp mediump 4-component vector of float) 0:7 'fs_color' (layout( location=0) out mediump 4-component vector of float) 0:7 Constant: 0:7 1.000000 0:7 0.000000 0:7 0.000000 0:7 1.000000 0:? Linker Objects 0:? 'fs_color' (layout( location=0) out mediump 4-component vector of float) 0:? 'gl_SampleMask' ( out unsized 2-element array of highp int SampleMaskIn) Linked fragment stage: Shader version: 320 ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Sequence 0:6 Sequence 0:6 move second child to first child ( temp highp int) 0:6 'invalidValue' ( temp highp int) 0:6 direct index ( temp highp int SampleMaskIn) 0:6 'gl_SampleMask' ( out 2-element array of highp int SampleMaskIn) 0:6 Constant: 0:6 1 (const int) 0:7 move second child to first child ( temp mediump 4-component vector of float) 0:7 'fs_color' (layout( location=0) out mediump 4-component vector of float) 0:7 Constant: 0:7 1.000000 0:7 0.000000 0:7 0.000000 0:7 1.000000 0:? Linker Objects 0:? 'fs_color' (layout( location=0) out mediump 4-component vector of float) 0:? 'gl_SampleMask' ( out 2-element array of highp int SampleMaskIn) glslang-16.0.0/Test/baseResults/invalidSwizzle.vert.out000066400000000000000000000023211506534232700231730ustar00rootroot00000000000000invalidSwizzle.vert ERROR: 0:7: 'rr' : does not apply to this type: uniform sampler2D ERROR: 0:7: '=' : cannot convert from ' uniform sampler2D' to ' temp 2-component vector of float' ERROR: 0:8: 'xx' : does not apply to this type: global void ERROR: 0:9: 'xy' : does not apply to this type: global void ERROR: 4 compilation errors. No code generated. Shader version: 420 ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:? Sequence 0:8 Function Call: f( ( global void) 0:9 Function Call: f( ( global void) 0:? Linker Objects 0:? 's' ( uniform sampler2D) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex stage: No function definition (body) found: f( Shader version: 420 ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:? Sequence 0:8 Function Call: f( ( global void) 0:9 Function Call: f( ( global void) 0:? Linker Objects 0:? 's' ( uniform sampler2D) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/iomap.blockOutVariableIn.2.vert.out000066400000000000000000000536661506534232700251620ustar00rootroot00000000000000iomap.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 Decorate 26(gl_PerVertex) Block MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance 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 Decorate 31(gl_PerVertex) Block MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance 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 glslang-16.0.0/Test/baseResults/iomap.blockOutVariableIn.vert.out000066400000000000000000000260551506534232700250120ustar00rootroot00000000000000iomap.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 Decorate 26(gl_PerVertex) Block MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance 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 glslang-16.0.0/Test/baseResults/iomap.crossStage.2.vert.out000066400000000000000000001133501506534232700235430ustar00rootroot00000000000000iomap.crossStage.2.vert Shader version: 460 0:? Sequence 0:32 Function Definition: main( ( global void) 0:32 Function Parameters: 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'vgo1' ( smooth out 4-component vector of float) 0:34 Constant: 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:35 move second child to first child ( temp 2-component vector of float) 0:35 'vgo2' ( smooth out 2-component vector of float) 0:35 Constant: 0:35 0.000000 0:35 0.000000 0:36 move second child to first child ( temp 4-component vector of float) 0:36 o3: direct index for structure ( out 4-component vector of float) 0:36 'anon@0' (layout( location=5) out block{ out 4-component vector of float o3}) 0:36 Constant: 0:36 0 (const uint) 0:36 Constant: 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:? Linker Objects 0:? 'vgo1' ( smooth out 4-component vector of float) 0:? 'vgo2' ( smooth out 2-component vector of float) 0:? 'anon@0' (layout( location=5) out block{ out 4-component vector of float o3}) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'glass' (layout( location=0 binding=0) uniform sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float vb1}) 0:? '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}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) iomap.crossStage.2.geom Shader version: 460 invocations = -1 max_vertices = 3 input primitive = points output primitive = triangle_strip 0:? Sequence 0:29 Function Definition: main( ( global void) 0:29 Function Parameters: 0:31 Sequence 0:31 Sequence 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'i' ( temp int) 0:31 Constant: 0:31 0 (const int) 0:31 Loop with condition tested first 0:31 Loop Condition 0:31 Compare Less Than ( temp bool) 0:31 'i' ( temp int) 0:31 Constant: 0:31 3 (const int) 0:31 Loop Body 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'gfo1' (layout( stream=0) out 4-component vector of float) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:33 move second child to first child ( temp 2-component vector of float) 0:33 'gfo2' (layout( stream=0) out 2-component vector of float) 0:33 Constant: 0:33 0.000000 0:33 0.000000 0:34 move second child to first child ( temp 4-component vector of float) 0:34 o3: direct index for structure (layout( stream=0) out 4-component vector of float) 0:34 'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out 4-component vector of float o3}) 0:34 Constant: 0:34 0 (const int) 0:34 o3: direct index for structure ( in 4-component vector of float) 0:34 indirect index (layout( location=5) temp block{ in 4-component vector of float o3}) 0:34 'inBlock' (layout( location=5) in 1-element array of block{ in 4-component vector of float o3}) 0:34 'i' ( temp int) 0:34 Constant: 0:34 0 (const int) 0:35 EmitVertex ( global void) 0:31 Loop Terminal Expression 0:31 Post-Increment ( temp int) 0:31 'i' ( temp int) 0:37 EndPrimitive ( global void) 0:? Linker Objects 0:? 'vgo1' ( in 1-element array of 4-component vector of float) 0:? 'vgo2' ( in 1-element array of 2-component vector of float) 0:? 'inBlock' (layout( location=5) in 1-element array of block{ in 4-component vector of float o3}) 0:? 'gfo1' (layout( stream=0) out 4-component vector of float) 0:? 'gfo2' (layout( stream=0) out 2-component vector of float) 0:? 'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out 4-component vector of float o3}) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? '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}) iomap.crossStage.2.frag Shader version: 460 0:? Sequence 0:37 Function Definition: main( ( global void) 0:37 Function Parameters: 0:39 Sequence 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'color' ( temp 4-component vector of float) 0:39 component-wise multiply ( temp 4-component vector of float) 0:39 component-wise multiply ( temp 4-component vector of float) 0:39 component-wise multiply ( temp 4-component vector of float) 0:39 'gfo1' ( smooth in 4-component vector of float) 0:39 vector swizzle ( temp 4-component vector of float) 0:39 'u1' ( uniform 2-component vector of float) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 vector swizzle ( temp 4-component vector of float) 0:39 'u2' ( uniform 3-component vector of float) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 vector swizzle ( temp 4-component vector of float) 0:39 'u3' ( uniform 4-component vector of float) 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 3 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'outColor' ( out 4-component vector of float) 0:40 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( location=5) in block{ in 4-component vector of float o3}) 0:? 'gfo1' ( smooth in 4-component vector of float) 0:? 'gfo2' ( smooth in 2-component vector of float) 0:? 'outColor' ( out 4-component vector of float) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'glass' (layout( location=0 binding=0) uniform sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float fb1}) 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}) Linked vertex stage: Linked geometry stage: Linked fragment stage: WARNING: Linking fragment stage: Matched shader interfaces are using different instance names. vertex stage: Block: crossStageBlock2 Instance: blockName1: "" fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence 0:32 Function Definition: main( ( global void) 0:32 Function Parameters: 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'vgo1' ( smooth out 4-component vector of float) 0:34 Constant: 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:35 move second child to first child ( temp 2-component vector of float) 0:35 'vgo2' ( smooth out 2-component vector of float) 0:35 Constant: 0:35 0.000000 0:35 0.000000 0:36 move second child to first child ( temp 4-component vector of float) 0:36 o3: direct index for structure ( out 4-component vector of float) 0:36 'anon@0' (layout( location=5) out block{ out 4-component vector of float o3}) 0:36 Constant: 0:36 0 (const uint) 0:36 Constant: 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:? Linker Objects 0:? 'vgo1' ( smooth out 4-component vector of float) 0:? 'vgo2' ( smooth out 2-component vector of float) 0:? 'anon@0' (layout( location=5) out block{ out 4-component vector of float o3}) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'glass' (layout( location=0 binding=0) uniform sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float vb1}) 0:? '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}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 invocations = 1 max_vertices = 3 input primitive = points output primitive = triangle_strip 0:? Sequence 0:29 Function Definition: main( ( global void) 0:29 Function Parameters: 0:31 Sequence 0:31 Sequence 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'i' ( temp int) 0:31 Constant: 0:31 0 (const int) 0:31 Loop with condition tested first 0:31 Loop Condition 0:31 Compare Less Than ( temp bool) 0:31 'i' ( temp int) 0:31 Constant: 0:31 3 (const int) 0:31 Loop Body 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of float) 0:32 'gfo1' (layout( stream=0) out 4-component vector of float) 0:32 Constant: 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:32 0.000000 0:33 move second child to first child ( temp 2-component vector of float) 0:33 'gfo2' (layout( stream=0) out 2-component vector of float) 0:33 Constant: 0:33 0.000000 0:33 0.000000 0:34 move second child to first child ( temp 4-component vector of float) 0:34 o3: direct index for structure (layout( stream=0) out 4-component vector of float) 0:34 'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out 4-component vector of float o3}) 0:34 Constant: 0:34 0 (const int) 0:34 o3: direct index for structure ( in 4-component vector of float) 0:34 indirect index (layout( location=5) temp block{ in 4-component vector of float o3}) 0:34 'inBlock' (layout( location=5) in 1-element array of block{ in 4-component vector of float o3}) 0:34 'i' ( temp int) 0:34 Constant: 0:34 0 (const int) 0:35 EmitVertex ( global void) 0:31 Loop Terminal Expression 0:31 Post-Increment ( temp int) 0:31 'i' ( temp int) 0:37 EndPrimitive ( global void) 0:? Linker Objects 0:? 'vgo1' ( in 1-element array of 4-component vector of float) 0:? 'vgo2' ( in 1-element array of 2-component vector of float) 0:? 'inBlock' (layout( location=5) in 1-element array of block{ in 4-component vector of float o3}) 0:? 'gfo1' (layout( stream=0) out 4-component vector of float) 0:? 'gfo2' (layout( stream=0) out 2-component vector of float) 0:? 'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out 4-component vector of float o3}) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? '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}) Shader version: 460 0:? Sequence 0:37 Function Definition: main( ( global void) 0:37 Function Parameters: 0:39 Sequence 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'color' ( temp 4-component vector of float) 0:39 component-wise multiply ( temp 4-component vector of float) 0:39 component-wise multiply ( temp 4-component vector of float) 0:39 component-wise multiply ( temp 4-component vector of float) 0:39 'gfo1' ( smooth in 4-component vector of float) 0:39 vector swizzle ( temp 4-component vector of float) 0:39 'u1' ( uniform 2-component vector of float) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 vector swizzle ( temp 4-component vector of float) 0:39 'u2' ( uniform 3-component vector of float) 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 0 (const int) 0:39 vector swizzle ( temp 4-component vector of float) 0:39 'u3' ( uniform 4-component vector of float) 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 0.000000 0:39 Sequence 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 1 (const int) 0:39 Constant: 0:39 2 (const int) 0:39 Constant: 0:39 3 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'outColor' ( out 4-component vector of float) 0:40 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( location=5) in block{ in 4-component vector of float o3}) 0:? 'gfo1' ( smooth in 4-component vector of float) 0:? 'gfo2' ( smooth in 2-component vector of float) 0:? 'outColor' ( out 4-component vector of float) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'glass' (layout( location=0 binding=0) uniform sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float fb1}) 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): 8000b // Id's are bound by 56 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 14 18 54 55 Source GLSL 460 Name 4 "main" Name 9 "vgo1" Name 14 "vgo2" Name 16 "outBlock" MemberName 16(outBlock) 0 "o3" Name 18 "" Name 23 "u1" Name 27 "u2" Name 29 "u3" Name 36 "um2" Name 40 "glass" Name 41 "crossStageBlock1" MemberName 41(crossStageBlock1) 0 "a" MemberName 41(crossStageBlock1) 1 "b" Name 43 "" Name 44 "vertOnlyBlock" MemberName 44(vertOnlyBlock) 0 "vb1" Name 46 "" Name 47 "crossStageBlock2" MemberName 47(crossStageBlock2) 0 "a" MemberName 47(crossStageBlock2) 1 "b" Name 52 "blockName1" Name 54 "gl_VertexID" Name 55 "gl_InstanceID" Decorate 9(vgo1) Location 0 Decorate 14(vgo2) Location 1 Decorate 16(outBlock) Block Decorate 18 Location 5 Decorate 23(u1) Location 1 Decorate 23(u1) DescriptorSet 0 Decorate 27(u2) Location 2 Decorate 27(u2) DescriptorSet 0 Decorate 29(u3) Location 3 Decorate 29(u3) DescriptorSet 0 Decorate 36(um2) Location 4 Decorate 36(um2) DescriptorSet 0 Decorate 40(glass) Location 0 Decorate 40(glass) Binding 0 Decorate 40(glass) DescriptorSet 0 Decorate 41(crossStageBlock1) Block MemberDecorate 41(crossStageBlock1) 0 Offset 0 MemberDecorate 41(crossStageBlock1) 1 Offset 16 Decorate 43 Binding 0 Decorate 43 DescriptorSet 0 Decorate 44(vertOnlyBlock) BufferBlock MemberDecorate 44(vertOnlyBlock) 0 Offset 0 Decorate 46 Binding 0 Decorate 46 DescriptorSet 0 Decorate 47(crossStageBlock2) Block MemberDecorate 47(crossStageBlock2) 0 Offset 0 MemberDecorate 47(crossStageBlock2) 1 Offset 16 Decorate 52(blockName1) Binding 0 Decorate 52(blockName1) DescriptorSet 0 Decorate 54(gl_VertexID) BuiltIn VertexId Decorate 55(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(vgo1): 8(ptr) Variable Output 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeVector 6(float) 2 13: TypePointer Output 12(fvec2) 14(vgo2): 13(ptr) Variable Output 15: 12(fvec2) ConstantComposite 10 10 16(outBlock): TypeStruct 7(fvec4) 17: TypePointer Output 16(outBlock) 18: 17(ptr) Variable Output 19: TypeInt 32 1 20: 19(int) Constant 0 22: TypePointer UniformConstant 12(fvec2) 23(u1): 22(ptr) Variable UniformConstant 24: TypeVector 6(float) 3 25: 24(fvec3) ConstantComposite 10 10 10 26: TypePointer UniformConstant 24(fvec3) 27(u2): 26(ptr) Variable UniformConstant 25 28: TypePointer UniformConstant 7(fvec4) 29(u3): 28(ptr) Variable UniformConstant 11 30: TypeMatrix 12(fvec2) 2 31: 6(float) Constant 1082130432 32: 12(fvec2) ConstantComposite 31 10 33: 12(fvec2) ConstantComposite 10 31 34: 30 ConstantComposite 32 33 35: TypePointer UniformConstant 30 36(um2): 35(ptr) Variable UniformConstant 34 37: TypeImage 6(float) 2D sampled format:Unknown 38: TypeSampledImage 37 39: TypePointer UniformConstant 38 40(glass): 39(ptr) Variable UniformConstant 41(crossStageBlock1): TypeStruct 7(fvec4) 7(fvec4) 42: TypePointer Uniform 41(crossStageBlock1) 43: 42(ptr) Variable Uniform 44(vertOnlyBlock): TypeStruct 12(fvec2) 45: TypePointer Uniform 44(vertOnlyBlock) 46: 45(ptr) Variable Uniform 47(crossStageBlock2): TypeStruct 7(fvec4) 12(fvec2) 48: TypeInt 32 0 49: 48(int) Constant 2 50: TypeArray 47(crossStageBlock2) 49 51: TypePointer Uniform 50 52(blockName1): 51(ptr) Variable Uniform 53: TypePointer Input 19(int) 54(gl_VertexID): 53(ptr) Variable Input 55(gl_InstanceID): 53(ptr) Variable Input 4(main): 2 Function None 3 5: Label Store 9(vgo1) 11 Store 14(vgo2) 15 21: 8(ptr) AccessChain 18 20 Store 21 11 Return FunctionEnd // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 65 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 22 27 31 37 48 51 ExecutionMode 4 InputPoints ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Source GLSL 460 Name 4 "main" Name 8 "i" Name 22 "gfo1" Name 27 "gfo2" Name 29 "outBlock" MemberName 29(outBlock) 0 "o3" Name 31 "gf_out" Name 32 "outBlock" MemberName 32(outBlock) 0 "o3" Name 37 "inBlock" Name 48 "vgo1" Name 51 "vgo2" Name 53 "u1" Name 57 "u2" Name 59 "u3" Name 60 "crossStageBlock2" MemberName 60(crossStageBlock2) 0 "a" MemberName 60(crossStageBlock2) 1 "b" Name 64 "blockName1" Decorate 22(gfo1) Location 0 Decorate 27(gfo2) Location 1 Decorate 29(outBlock) Block Decorate 31(gf_out) Location 5 Decorate 32(outBlock) Block Decorate 37(inBlock) Location 5 Decorate 48(vgo1) Location 0 Decorate 51(vgo2) Location 1 Decorate 53(u1) Location 1 Decorate 53(u1) DescriptorSet 0 Decorate 57(u2) Location 2 Decorate 57(u2) DescriptorSet 0 Decorate 59(u3) Location 3 Decorate 59(u3) DescriptorSet 0 Decorate 60(crossStageBlock2) Block MemberDecorate 60(crossStageBlock2) 0 Offset 0 MemberDecorate 60(crossStageBlock2) 1 Offset 16 Decorate 64(blockName1) Binding 0 Decorate 64(blockName1) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 3 17: TypeBool 19: TypeFloat 32 20: TypeVector 19(float) 4 21: TypePointer Output 20(fvec4) 22(gfo1): 21(ptr) Variable Output 23: 19(float) Constant 0 24: 20(fvec4) ConstantComposite 23 23 23 23 25: TypeVector 19(float) 2 26: TypePointer Output 25(fvec2) 27(gfo2): 26(ptr) Variable Output 28: 25(fvec2) ConstantComposite 23 23 29(outBlock): TypeStruct 20(fvec4) 30: TypePointer Output 29(outBlock) 31(gf_out): 30(ptr) Variable Output 32(outBlock): TypeStruct 20(fvec4) 33: TypeInt 32 0 34: 33(int) Constant 1 35: TypeArray 32(outBlock) 34 36: TypePointer Input 35 37(inBlock): 36(ptr) Variable Input 39: TypePointer Input 20(fvec4) 44: 6(int) Constant 1 46: TypeArray 20(fvec4) 34 47: TypePointer Input 46 48(vgo1): 47(ptr) Variable Input 49: TypeArray 25(fvec2) 34 50: TypePointer Input 49 51(vgo2): 50(ptr) Variable Input 52: TypePointer UniformConstant 25(fvec2) 53(u1): 52(ptr) Variable UniformConstant 54: TypeVector 19(float) 3 55: 54(fvec3) ConstantComposite 23 23 23 56: TypePointer UniformConstant 54(fvec3) 57(u2): 56(ptr) Variable UniformConstant 55 58: TypePointer UniformConstant 20(fvec4) 59(u3): 58(ptr) Variable UniformConstant 24 60(crossStageBlock2): TypeStruct 20(fvec4) 25(fvec2) 61: 33(int) Constant 2 62: TypeArray 60(crossStageBlock2) 61 63: TypePointer Uniform 62 64(blockName1): 63(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label Store 22(gfo1) 24 Store 27(gfo2) 28 38: 6(int) Load 8(i) 40: 39(ptr) AccessChain 37(inBlock) 38 9 41: 20(fvec4) Load 40 42: 21(ptr) AccessChain 31(gf_out) 9 Store 42 41 EmitVertex Branch 13 13: Label 43: 6(int) Load 8(i) 45: 6(int) IAdd 43 44 Store 8(i) 45 Branch 10 12: Label EndPrimitive Return FunctionEnd // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 32 36 38 ExecutionMode 4 OriginLowerLeft Source GLSL 460 Name 4 "main" Name 9 "color" Name 11 "gfo1" Name 15 "u1" Name 21 "u2" Name 28 "u3" Name 32 "outColor" Name 34 "outBlock" MemberName 34(outBlock) 0 "o3" Name 36 "" Name 38 "gfo2" Name 45 "um2" Name 49 "glass" Name 50 "crossStageBlock1" MemberName 50(crossStageBlock1) 0 "a" MemberName 50(crossStageBlock1) 1 "b" Name 52 "" Name 53 "fragOnlyBlock" MemberName 53(fragOnlyBlock) 0 "fb1" Name 55 "" Name 56 "crossStageBlock2" MemberName 56(crossStageBlock2) 0 "a" MemberName 56(crossStageBlock2) 1 "b" Name 61 "blockName2" Decorate 11(gfo1) Location 0 Decorate 15(u1) Location 1 Decorate 15(u1) DescriptorSet 0 Decorate 21(u2) Location 2 Decorate 21(u2) DescriptorSet 0 Decorate 28(u3) Location 3 Decorate 28(u3) DescriptorSet 0 Decorate 32(outColor) Location 0 Decorate 34(outBlock) Block Decorate 36 Location 5 Decorate 38(gfo2) Location 1 Decorate 45(um2) Location 4 Decorate 45(um2) DescriptorSet 0 Decorate 49(glass) Location 0 Decorate 49(glass) Binding 0 Decorate 49(glass) DescriptorSet 0 Decorate 50(crossStageBlock1) Block MemberDecorate 50(crossStageBlock1) 0 Offset 0 MemberDecorate 50(crossStageBlock1) 1 Offset 16 Decorate 52 Binding 0 Decorate 52 DescriptorSet 0 Decorate 53(fragOnlyBlock) BufferBlock MemberDecorate 53(fragOnlyBlock) 0 Offset 0 Decorate 55 Binding 0 Decorate 55 DescriptorSet 0 Decorate 56(crossStageBlock2) Block MemberDecorate 56(crossStageBlock2) 0 Offset 0 MemberDecorate 56(crossStageBlock2) 1 Offset 16 Decorate 61(blockName2) Binding 0 Decorate 61(blockName2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(gfo1): 10(ptr) Variable Input 13: TypeVector 6(float) 2 14: TypePointer UniformConstant 13(fvec2) 15(u1): 14(ptr) Variable UniformConstant 19: TypeVector 6(float) 3 20: TypePointer UniformConstant 19(fvec3) 21(u2): 20(ptr) Variable UniformConstant 25: 6(float) Constant 0 26: 7(fvec4) ConstantComposite 25 25 25 25 27: TypePointer UniformConstant 7(fvec4) 28(u3): 27(ptr) Variable UniformConstant 26 31: TypePointer Output 7(fvec4) 32(outColor): 31(ptr) Variable Output 34(outBlock): TypeStruct 7(fvec4) 35: TypePointer Input 34(outBlock) 36: 35(ptr) Variable Input 37: TypePointer Input 13(fvec2) 38(gfo2): 37(ptr) Variable Input 39: TypeMatrix 13(fvec2) 2 40: 6(float) Constant 1082130432 41: 13(fvec2) ConstantComposite 40 25 42: 13(fvec2) ConstantComposite 25 40 43: 39 ConstantComposite 41 42 44: TypePointer UniformConstant 39 45(um2): 44(ptr) Variable UniformConstant 43 46: TypeImage 6(float) 2D sampled format:Unknown 47: TypeSampledImage 46 48: TypePointer UniformConstant 47 49(glass): 48(ptr) Variable UniformConstant 50(crossStageBlock1): TypeStruct 7(fvec4) 7(fvec4) 51: TypePointer Uniform 50(crossStageBlock1) 52: 51(ptr) Variable Uniform 53(fragOnlyBlock): TypeStruct 13(fvec2) 54: TypePointer Uniform 53(fragOnlyBlock) 55: 54(ptr) Variable Uniform 56(crossStageBlock2): TypeStruct 7(fvec4) 13(fvec2) 57: TypeInt 32 0 58: 57(int) Constant 2 59: TypeArray 56(crossStageBlock2) 58 60: TypePointer Uniform 59 61(blockName2): 60(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 12: 7(fvec4) Load 11(gfo1) 16: 13(fvec2) Load 15(u1) 17: 7(fvec4) VectorShuffle 16 16 0 1 0 1 18: 7(fvec4) FMul 12 17 22: 19(fvec3) Load 21(u2) 23: 7(fvec4) VectorShuffle 22 22 0 1 2 0 24: 7(fvec4) FMul 18 23 29: 7(fvec4) Load 28(u3) 30: 7(fvec4) FMul 24 29 Store 9(color) 30 33: 7(fvec4) Load 9(color) Store 32(outColor) 33 Return FunctionEnd glslang-16.0.0/Test/baseResults/iomap.crossStage.vert.out000066400000000000000000000617071506534232700234130ustar00rootroot00000000000000iomap.crossStage.vert Shader version: 460 0:? Sequence 0:32 Function Definition: main( ( global void) 0:32 Function Parameters: 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'o1' ( smooth out 4-component vector of float) 0:34 Constant: 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:35 move second child to first child ( temp 2-component vector of float) 0:35 'o2' ( smooth out 2-component vector of float) 0:35 Constant: 0:35 0.000000 0:35 0.000000 0:36 move second child to first child ( temp 4-component vector of float) 0:36 o3: direct index for structure ( out 4-component vector of float) 0:36 'anon@0' (layout( location=5) out block{ out 4-component vector of float o3}) 0:36 Constant: 0:36 0 (const uint) 0:36 Constant: 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:? Linker Objects 0:? 'o1' ( smooth out 4-component vector of float) 0:? 'o2' ( smooth out 2-component vector of float) 0:? 'anon@0' (layout( location=5) out block{ out 4-component vector of float o3}) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'glass' (layout( location=0 binding=0) uniform sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float vb1}) 0:? '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}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) iomap.crossStage.frag Shader version: 460 0:? Sequence 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:38 Sequence 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'color' ( temp 4-component vector of float) 0:38 component-wise multiply ( temp 4-component vector of float) 0:38 component-wise multiply ( temp 4-component vector of float) 0:38 component-wise multiply ( temp 4-component vector of float) 0:38 'o1' ( smooth in 4-component vector of float) 0:38 vector swizzle ( temp 4-component vector of float) 0:38 'u1' ( uniform 2-component vector of float) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 vector swizzle ( temp 4-component vector of float) 0:38 'u2' ( uniform 3-component vector of float) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 vector swizzle ( temp 4-component vector of float) 0:38 'u3' ( uniform 4-component vector of float) 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 3 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'outColor' ( out 4-component vector of float) 0:39 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( location=5) in block{ in 4-component vector of float o3}) 0:? 'o2' ( smooth in 2-component vector of float) 0:? 'o1' ( smooth in 4-component vector of float) 0:? 'outColor' ( out 4-component vector of float) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'glass' (layout( location=0 binding=0) uniform sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float fb1}) 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}) Linked vertex stage: Linked fragment stage: WARNING: Linking fragment stage: Matched shader interfaces are using different instance names. vertex stage: Block: crossStageBlock2 Instance: blockName1: "" fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence 0:32 Function Definition: main( ( global void) 0:32 Function Parameters: 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'o1' ( smooth out 4-component vector of float) 0:34 Constant: 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:34 0.000000 0:35 move second child to first child ( temp 2-component vector of float) 0:35 'o2' ( smooth out 2-component vector of float) 0:35 Constant: 0:35 0.000000 0:35 0.000000 0:36 move second child to first child ( temp 4-component vector of float) 0:36 o3: direct index for structure ( out 4-component vector of float) 0:36 'anon@0' (layout( location=5) out block{ out 4-component vector of float o3}) 0:36 Constant: 0:36 0 (const uint) 0:36 Constant: 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:36 0.000000 0:? Linker Objects 0:? 'o1' ( smooth out 4-component vector of float) 0:? 'o2' ( smooth out 2-component vector of float) 0:? 'anon@0' (layout( location=5) out block{ out 4-component vector of float o3}) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'glass' (layout( location=0 binding=0) uniform sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float vb1}) 0:? '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}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 0:? Sequence 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:38 Sequence 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'color' ( temp 4-component vector of float) 0:38 component-wise multiply ( temp 4-component vector of float) 0:38 component-wise multiply ( temp 4-component vector of float) 0:38 component-wise multiply ( temp 4-component vector of float) 0:38 'o1' ( smooth in 4-component vector of float) 0:38 vector swizzle ( temp 4-component vector of float) 0:38 'u1' ( uniform 2-component vector of float) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 vector swizzle ( temp 4-component vector of float) 0:38 'u2' ( uniform 3-component vector of float) 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 0 (const int) 0:38 vector swizzle ( temp 4-component vector of float) 0:38 'u3' ( uniform 4-component vector of float) 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 0.000000 0:38 Sequence 0:38 Constant: 0:38 0 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 3 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'outColor' ( out 4-component vector of float) 0:39 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( location=5) in block{ in 4-component vector of float o3}) 0:? 'o2' ( smooth in 2-component vector of float) 0:? 'o1' ( smooth in 4-component vector of float) 0:? 'outColor' ( out 4-component vector of float) 0:? 'u1' ( uniform 2-component vector of float) 0:? 'u2' ( uniform 3-component vector of float) 0:? 'u3' ( uniform 4-component vector of float) 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'glass' (layout( location=0 binding=0) uniform sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float fb1}) 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): 8000b // Id's are bound by 56 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 14 18 54 55 Source GLSL 460 Name 4 "main" Name 9 "o1" Name 14 "o2" Name 16 "outBlock" MemberName 16(outBlock) 0 "o3" Name 18 "" Name 23 "u1" Name 27 "u2" Name 29 "u3" Name 36 "um2" Name 40 "glass" Name 41 "crossStageBlock1" MemberName 41(crossStageBlock1) 0 "a" MemberName 41(crossStageBlock1) 1 "b" Name 43 "" Name 44 "vertOnlyBlock" MemberName 44(vertOnlyBlock) 0 "vb1" Name 46 "" Name 47 "crossStageBlock2" MemberName 47(crossStageBlock2) 0 "a" MemberName 47(crossStageBlock2) 1 "b" Name 52 "blockName1" Name 54 "gl_VertexID" Name 55 "gl_InstanceID" Decorate 9(o1) Location 0 Decorate 14(o2) Location 1 Decorate 16(outBlock) Block Decorate 18 Location 5 Decorate 23(u1) Location 1 Decorate 23(u1) DescriptorSet 0 Decorate 27(u2) Location 2 Decorate 27(u2) DescriptorSet 0 Decorate 29(u3) Location 3 Decorate 29(u3) DescriptorSet 0 Decorate 36(um2) Location 4 Decorate 36(um2) DescriptorSet 0 Decorate 40(glass) Location 0 Decorate 40(glass) Binding 0 Decorate 40(glass) DescriptorSet 0 Decorate 41(crossStageBlock1) Block MemberDecorate 41(crossStageBlock1) 0 Offset 0 MemberDecorate 41(crossStageBlock1) 1 Offset 16 Decorate 43 Binding 0 Decorate 43 DescriptorSet 0 Decorate 44(vertOnlyBlock) BufferBlock MemberDecorate 44(vertOnlyBlock) 0 Offset 0 Decorate 46 Binding 0 Decorate 46 DescriptorSet 0 Decorate 47(crossStageBlock2) Block MemberDecorate 47(crossStageBlock2) 0 Offset 0 MemberDecorate 47(crossStageBlock2) 1 Offset 16 Decorate 52(blockName1) Binding 0 Decorate 52(blockName1) DescriptorSet 0 Decorate 54(gl_VertexID) BuiltIn VertexId Decorate 55(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(o1): 8(ptr) Variable Output 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeVector 6(float) 2 13: TypePointer Output 12(fvec2) 14(o2): 13(ptr) Variable Output 15: 12(fvec2) ConstantComposite 10 10 16(outBlock): TypeStruct 7(fvec4) 17: TypePointer Output 16(outBlock) 18: 17(ptr) Variable Output 19: TypeInt 32 1 20: 19(int) Constant 0 22: TypePointer UniformConstant 12(fvec2) 23(u1): 22(ptr) Variable UniformConstant 24: TypeVector 6(float) 3 25: 24(fvec3) ConstantComposite 10 10 10 26: TypePointer UniformConstant 24(fvec3) 27(u2): 26(ptr) Variable UniformConstant 25 28: TypePointer UniformConstant 7(fvec4) 29(u3): 28(ptr) Variable UniformConstant 11 30: TypeMatrix 12(fvec2) 2 31: 6(float) Constant 1082130432 32: 12(fvec2) ConstantComposite 31 10 33: 12(fvec2) ConstantComposite 10 31 34: 30 ConstantComposite 32 33 35: TypePointer UniformConstant 30 36(um2): 35(ptr) Variable UniformConstant 34 37: TypeImage 6(float) 2D sampled format:Unknown 38: TypeSampledImage 37 39: TypePointer UniformConstant 38 40(glass): 39(ptr) Variable UniformConstant 41(crossStageBlock1): TypeStruct 7(fvec4) 7(fvec4) 42: TypePointer Uniform 41(crossStageBlock1) 43: 42(ptr) Variable Uniform 44(vertOnlyBlock): TypeStruct 12(fvec2) 45: TypePointer Uniform 44(vertOnlyBlock) 46: 45(ptr) Variable Uniform 47(crossStageBlock2): TypeStruct 7(fvec4) 12(fvec2) 48: TypeInt 32 0 49: 48(int) Constant 2 50: TypeArray 47(crossStageBlock2) 49 51: TypePointer Uniform 50 52(blockName1): 51(ptr) Variable Uniform 53: TypePointer Input 19(int) 54(gl_VertexID): 53(ptr) Variable Input 55(gl_InstanceID): 53(ptr) Variable Input 4(main): 2 Function None 3 5: Label Store 9(o1) 11 Store 14(o2) 15 21: 8(ptr) AccessChain 18 20 Store 21 11 Return FunctionEnd // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 32 36 38 ExecutionMode 4 OriginLowerLeft Source GLSL 460 Name 4 "main" Name 9 "color" Name 11 "o1" Name 15 "u1" Name 21 "u2" Name 28 "u3" Name 32 "outColor" Name 34 "outBlock" MemberName 34(outBlock) 0 "o3" Name 36 "" Name 38 "o2" Name 45 "um2" Name 49 "glass" Name 50 "crossStageBlock1" MemberName 50(crossStageBlock1) 0 "a" MemberName 50(crossStageBlock1) 1 "b" Name 52 "" Name 53 "fragOnlyBlock" MemberName 53(fragOnlyBlock) 0 "fb1" Name 55 "" Name 56 "crossStageBlock2" MemberName 56(crossStageBlock2) 0 "a" MemberName 56(crossStageBlock2) 1 "b" Name 61 "blockName2" Decorate 11(o1) Location 0 Decorate 15(u1) Location 1 Decorate 15(u1) DescriptorSet 0 Decorate 21(u2) Location 2 Decorate 21(u2) DescriptorSet 0 Decorate 28(u3) Location 3 Decorate 28(u3) DescriptorSet 0 Decorate 32(outColor) Location 0 Decorate 34(outBlock) Block Decorate 36 Location 5 Decorate 38(o2) Location 1 Decorate 45(um2) Location 4 Decorate 45(um2) DescriptorSet 0 Decorate 49(glass) Location 0 Decorate 49(glass) Binding 0 Decorate 49(glass) DescriptorSet 0 Decorate 50(crossStageBlock1) Block MemberDecorate 50(crossStageBlock1) 0 Offset 0 MemberDecorate 50(crossStageBlock1) 1 Offset 16 Decorate 52 Binding 0 Decorate 52 DescriptorSet 0 Decorate 53(fragOnlyBlock) BufferBlock MemberDecorate 53(fragOnlyBlock) 0 Offset 0 Decorate 55 Binding 0 Decorate 55 DescriptorSet 0 Decorate 56(crossStageBlock2) Block MemberDecorate 56(crossStageBlock2) 0 Offset 0 MemberDecorate 56(crossStageBlock2) 1 Offset 16 Decorate 61(blockName2) Binding 0 Decorate 61(blockName2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(o1): 10(ptr) Variable Input 13: TypeVector 6(float) 2 14: TypePointer UniformConstant 13(fvec2) 15(u1): 14(ptr) Variable UniformConstant 19: TypeVector 6(float) 3 20: TypePointer UniformConstant 19(fvec3) 21(u2): 20(ptr) Variable UniformConstant 25: 6(float) Constant 0 26: 7(fvec4) ConstantComposite 25 25 25 25 27: TypePointer UniformConstant 7(fvec4) 28(u3): 27(ptr) Variable UniformConstant 26 31: TypePointer Output 7(fvec4) 32(outColor): 31(ptr) Variable Output 34(outBlock): TypeStruct 7(fvec4) 35: TypePointer Input 34(outBlock) 36: 35(ptr) Variable Input 37: TypePointer Input 13(fvec2) 38(o2): 37(ptr) Variable Input 39: TypeMatrix 13(fvec2) 2 40: 6(float) Constant 1082130432 41: 13(fvec2) ConstantComposite 40 25 42: 13(fvec2) ConstantComposite 25 40 43: 39 ConstantComposite 41 42 44: TypePointer UniformConstant 39 45(um2): 44(ptr) Variable UniformConstant 43 46: TypeImage 6(float) 2D sampled format:Unknown 47: TypeSampledImage 46 48: TypePointer UniformConstant 47 49(glass): 48(ptr) Variable UniformConstant 50(crossStageBlock1): TypeStruct 7(fvec4) 7(fvec4) 51: TypePointer Uniform 50(crossStageBlock1) 52: 51(ptr) Variable Uniform 53(fragOnlyBlock): TypeStruct 13(fvec2) 54: TypePointer Uniform 53(fragOnlyBlock) 55: 54(ptr) Variable Uniform 56(crossStageBlock2): TypeStruct 7(fvec4) 13(fvec2) 57: TypeInt 32 0 58: 57(int) Constant 2 59: TypeArray 56(crossStageBlock2) 58 60: TypePointer Uniform 59 61(blockName2): 60(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 12: 7(fvec4) Load 11(o1) 16: 13(fvec2) Load 15(u1) 17: 7(fvec4) VectorShuffle 16 16 0 1 0 1 18: 7(fvec4) FMul 12 17 22: 19(fvec3) Load 21(u2) 23: 7(fvec4) VectorShuffle 22 22 0 1 2 0 24: 7(fvec4) FMul 18 23 29: 7(fvec4) Load 28(u3) 30: 7(fvec4) FMul 24 29 Store 9(color) 30 33: 7(fvec4) Load 9(color) Store 32(outColor) 33 Return FunctionEnd glslang-16.0.0/Test/baseResults/iomap.crossStage.vk.vert.out000066400000000000000000001216021506534232700240210ustar00rootroot00000000000000iomap.crossStage.vk.vert Shader version: 460 0:? Sequence 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:28 Sequence 0:28 move second child to first child ( temp highp 4-component vector of float) 0:28 'vgo1' ( smooth out highp 4-component vector of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 move second child to first child ( temp highp 2-component vector of float) 0:29 'vgo2' ( smooth out highp 2-component vector of float) 0:29 Constant: 0:29 0.000000 0:29 0.000000 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 o3: direct index for structure ( out highp 4-component vector of float) 0:30 'anon@0' (layout( location=5) out block{ out highp 4-component vector of float o3}) 0:30 Constant: 0:30 0 (const uint) 0:30 Constant: 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:? Linker Objects 0:? 'vgo1' ( smooth out highp 4-component vector of float) 0:? 'vgo2' ( smooth out highp 2-component vector of float) 0:? 'anon@0' (layout( location=5) out block{ out highp 4-component vector of float o3}) 0:? 'glass' (layout( binding=0) uniform highp sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float vb1}) 0:? '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}) iomap.crossStage.vk.geom Shader version: 460 invocations = -1 max_vertices = 3 input primitive = points output primitive = triangle_strip 0:? Sequence 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 Sequence 0:27 Sequence 0:27 move second child to first child ( temp highp int) 0:27 'i' ( temp highp int) 0:27 Constant: 0:27 0 (const int) 0:27 Loop with condition tested first 0:27 Loop Condition 0:27 Compare Less Than ( temp bool) 0:27 'i' ( temp highp int) 0:27 Constant: 0:27 3 (const int) 0:27 Loop Body 0:28 Sequence 0:28 move second child to first child ( temp highp 4-component vector of float) 0:28 'gfo1' (layout( stream=0) out highp 4-component vector of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 move second child to first child ( temp highp 2-component vector of float) 0:29 'gfo2' (layout( stream=0) out highp 2-component vector of float) 0:29 Constant: 0:29 0.000000 0:29 0.000000 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 o3: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:30 'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out highp 4-component vector of float o3}) 0:30 Constant: 0:30 0 (const int) 0:30 o3: direct index for structure ( in highp 4-component vector of float) 0:30 indirect index (layout( location=5) temp block{ in highp 4-component vector of float o3}) 0:30 'inBlock' (layout( location=5) in 1-element array of block{ in highp 4-component vector of float o3}) 0:30 'i' ( temp highp int) 0:30 Constant: 0:30 0 (const int) 0:31 EmitVertex ( global void) 0:27 Loop Terminal Expression 0:27 Post-Increment ( temp highp int) 0:27 'i' ( temp highp int) 0:33 EndPrimitive ( global void) 0:? Linker Objects 0:? 'vgo1' ( in 1-element array of highp 4-component vector of float) 0:? 'vgo2' ( in 1-element array of highp 2-component vector of float) 0:? 'inBlock' (layout( location=5) in 1-element array of block{ in highp 4-component vector of float o3}) 0:? 'gfo1' (layout( stream=0) out highp 4-component vector of float) 0:? 'gfo2' (layout( stream=0) out highp 2-component vector of float) 0:? 'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out highp 4-component vector of float o3}) 0:? '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}) iomap.crossStage.vk.frag Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:30 Function Definition: Bar( ( global highp 2-component vector of float) 0:30 Function Parameters: 0:31 Sequence 0:31 Branch: Return with expression 0:32 add ( temp highp 2-component vector of float) 0:31 add ( temp highp 2-component vector of float) 0:31 fb1: direct index for structure (layout( column_major std430) readonly buffer highp 2-component vector of float) 0:31 'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float fb1}) 0:31 Constant: 0:31 0 (const uint) 0:32 b: direct index for structure (layout( column_major std140) uniform highp 2-component vector of float) 0:32 direct index (layout( column_major std140) temp 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}) 0:32 '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}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:33 b: direct index for structure (layout( column_major std140) uniform highp 2-component vector of float) 0:33 direct index (layout( column_major std140) temp 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}) 0:33 '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}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:36 Function Definition: Foo( ( global highp 4-component vector of float) 0:36 Function Parameters: 0:37 Sequence 0:37 Branch: Return with expression 0:40 add ( temp highp 4-component vector of float) 0:39 add ( temp highp 4-component vector of float) 0:38 add ( temp highp 4-component vector of float) 0:37 add ( temp highp 4-component vector of float) 0:37 a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:37 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b}) 0:37 Constant: 0:37 0 (const uint) 0:38 b: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:38 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b}) 0:38 Constant: 0:38 1 (const uint) 0:39 a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:39 direct index (layout( column_major std140) temp 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}) 0:39 '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}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:40 direct index (layout( column_major std140) temp 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}) 0:40 '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}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:41 Construct vec4 ( temp highp 4-component vector of float) 0:41 Function Call: Bar( ( global highp 2-component vector of float) 0:41 Constant: 0:41 0.000000 0:41 Constant: 0:41 0.000000 0:44 Function Definition: main( ( global void) 0:44 Function Parameters: 0:46 Sequence 0:46 Sequence 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 'color' ( temp highp 4-component vector of float) 0:46 'gfo1' ( smooth in highp 4-component vector of float) 0:47 move second child to first child ( temp highp 4-component vector of float) 0:47 'color' ( temp highp 4-component vector of float) 0:47 add ( temp highp 4-component vector of float) 0:47 'color' ( temp highp 4-component vector of float) 0:47 Function Call: Foo( ( global highp 4-component vector of float) 0:48 move second child to first child ( temp highp 4-component vector of float) 0:48 'outColor' ( out highp 4-component vector of float) 0:48 'color' ( temp highp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( location=5) in block{ in highp 4-component vector of float o3}) 0:? 'gfo1' ( smooth in highp 4-component vector of float) 0:? 'gfo2' ( smooth in highp 2-component vector of float) 0:? 'outColor' ( out highp 4-component vector of float) 0:? 'glass' (layout( binding=0) uniform highp sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float fb1}) 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}) Linked vertex stage: Linked geometry stage: Linked fragment stage: WARNING: Linking fragment stage: Matched shader interfaces are using different instance names. vertex stage: Block: crossStageBlock2 Instance: blockName1: "" fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:28 Sequence 0:28 move second child to first child ( temp highp 4-component vector of float) 0:28 'vgo1' ( smooth out highp 4-component vector of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 move second child to first child ( temp highp 2-component vector of float) 0:29 'vgo2' ( smooth out highp 2-component vector of float) 0:29 Constant: 0:29 0.000000 0:29 0.000000 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 o3: direct index for structure ( out highp 4-component vector of float) 0:30 'anon@0' (layout( location=5) out block{ out highp 4-component vector of float o3}) 0:30 Constant: 0:30 0 (const uint) 0:30 Constant: 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:30 0.000000 0:? Linker Objects 0:? 'vgo1' ( smooth out highp 4-component vector of float) 0:? 'vgo2' ( smooth out highp 2-component vector of float) 0:? 'anon@0' (layout( location=5) out block{ out highp 4-component vector of float o3}) 0:? 'glass' (layout( binding=0) uniform highp sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float vb1}) 0:? '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}) Shader version: 460 invocations = 1 max_vertices = 3 input primitive = points output primitive = triangle_strip 0:? Sequence 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 Sequence 0:27 Sequence 0:27 move second child to first child ( temp highp int) 0:27 'i' ( temp highp int) 0:27 Constant: 0:27 0 (const int) 0:27 Loop with condition tested first 0:27 Loop Condition 0:27 Compare Less Than ( temp bool) 0:27 'i' ( temp highp int) 0:27 Constant: 0:27 3 (const int) 0:27 Loop Body 0:28 Sequence 0:28 move second child to first child ( temp highp 4-component vector of float) 0:28 'gfo1' (layout( stream=0) out highp 4-component vector of float) 0:28 Constant: 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:28 0.000000 0:29 move second child to first child ( temp highp 2-component vector of float) 0:29 'gfo2' (layout( stream=0) out highp 2-component vector of float) 0:29 Constant: 0:29 0.000000 0:29 0.000000 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 o3: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:30 'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out highp 4-component vector of float o3}) 0:30 Constant: 0:30 0 (const int) 0:30 o3: direct index for structure ( in highp 4-component vector of float) 0:30 indirect index (layout( location=5) temp block{ in highp 4-component vector of float o3}) 0:30 'inBlock' (layout( location=5) in 1-element array of block{ in highp 4-component vector of float o3}) 0:30 'i' ( temp highp int) 0:30 Constant: 0:30 0 (const int) 0:31 EmitVertex ( global void) 0:27 Loop Terminal Expression 0:27 Post-Increment ( temp highp int) 0:27 'i' ( temp highp int) 0:33 EndPrimitive ( global void) 0:? Linker Objects 0:? 'vgo1' ( in 1-element array of highp 4-component vector of float) 0:? 'vgo2' ( in 1-element array of highp 2-component vector of float) 0:? 'inBlock' (layout( location=5) in 1-element array of block{ in highp 4-component vector of float o3}) 0:? 'gfo1' (layout( stream=0) out highp 4-component vector of float) 0:? 'gfo2' (layout( stream=0) out highp 2-component vector of float) 0:? 'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out highp 4-component vector of float o3}) 0:? '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}) Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:30 Function Definition: Bar( ( global highp 2-component vector of float) 0:30 Function Parameters: 0:31 Sequence 0:31 Branch: Return with expression 0:32 add ( temp highp 2-component vector of float) 0:31 add ( temp highp 2-component vector of float) 0:31 fb1: direct index for structure (layout( column_major std430) readonly buffer highp 2-component vector of float) 0:31 'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float fb1}) 0:31 Constant: 0:31 0 (const uint) 0:32 b: direct index for structure (layout( column_major std140) uniform highp 2-component vector of float) 0:32 direct index (layout( column_major std140) temp 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}) 0:32 '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}) 0:32 Constant: 0:32 0 (const int) 0:32 Constant: 0:32 1 (const int) 0:33 b: direct index for structure (layout( column_major std140) uniform highp 2-component vector of float) 0:33 direct index (layout( column_major std140) temp 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}) 0:33 '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}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: 0:33 1 (const int) 0:36 Function Definition: Foo( ( global highp 4-component vector of float) 0:36 Function Parameters: 0:37 Sequence 0:37 Branch: Return with expression 0:40 add ( temp highp 4-component vector of float) 0:39 add ( temp highp 4-component vector of float) 0:38 add ( temp highp 4-component vector of float) 0:37 add ( temp highp 4-component vector of float) 0:37 a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:37 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b}) 0:37 Constant: 0:37 0 (const uint) 0:38 b: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:38 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b}) 0:38 Constant: 0:38 1 (const uint) 0:39 a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:39 direct index (layout( column_major std140) temp 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}) 0:39 '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}) 0:39 Constant: 0:39 0 (const int) 0:39 Constant: 0:39 0 (const int) 0:40 a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:40 direct index (layout( column_major std140) temp 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}) 0:40 '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}) 0:40 Constant: 0:40 1 (const int) 0:40 Constant: 0:40 0 (const int) 0:41 Construct vec4 ( temp highp 4-component vector of float) 0:41 Function Call: Bar( ( global highp 2-component vector of float) 0:41 Constant: 0:41 0.000000 0:41 Constant: 0:41 0.000000 0:44 Function Definition: main( ( global void) 0:44 Function Parameters: 0:46 Sequence 0:46 Sequence 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 'color' ( temp highp 4-component vector of float) 0:46 'gfo1' ( smooth in highp 4-component vector of float) 0:47 move second child to first child ( temp highp 4-component vector of float) 0:47 'color' ( temp highp 4-component vector of float) 0:47 add ( temp highp 4-component vector of float) 0:47 'color' ( temp highp 4-component vector of float) 0:47 Function Call: Foo( ( global highp 4-component vector of float) 0:48 move second child to first child ( temp highp 4-component vector of float) 0:48 'outColor' ( out highp 4-component vector of float) 0:48 'color' ( temp highp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( location=5) in block{ in highp 4-component vector of float o3}) 0:? 'gfo1' ( smooth in highp 4-component vector of float) 0:? 'gfo2' ( smooth in highp 2-component vector of float) 0:? 'outColor' ( out highp 4-component vector of float) 0:? 'glass' (layout( binding=0) uniform highp sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b}) 0:? 'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float fb1}) 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): 8000b // Id's are bound by 38 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 14 18 Source GLSL 460 Name 4 "main" Name 9 "vgo1" Name 14 "vgo2" Name 16 "outBlock" MemberName 16(outBlock) 0 "o3" Name 18 "" Name 25 "glass" Name 26 "crossStageBlock1" MemberName 26(crossStageBlock1) 0 "a" MemberName 26(crossStageBlock1) 1 "b" Name 28 "" Name 29 "vertOnlyBlock" MemberName 29(vertOnlyBlock) 0 "vb1" Name 31 "" Name 32 "crossStageBlock2" MemberName 32(crossStageBlock2) 0 "a" MemberName 32(crossStageBlock2) 1 "b" Name 37 "blockName1" Decorate 9(vgo1) Location 0 Decorate 14(vgo2) Location 1 Decorate 16(outBlock) Block Decorate 18 Location 5 Decorate 25(glass) Binding 0 Decorate 25(glass) DescriptorSet 0 Decorate 26(crossStageBlock1) Block MemberDecorate 26(crossStageBlock1) 0 Offset 0 MemberDecorate 26(crossStageBlock1) 1 Offset 16 Decorate 28 Binding 1 Decorate 28 DescriptorSet 0 Decorate 29(vertOnlyBlock) BufferBlock MemberDecorate 29(vertOnlyBlock) 0 NonWritable MemberDecorate 29(vertOnlyBlock) 0 Offset 0 Decorate 31 NonWritable Decorate 31 Binding 0 Decorate 31 DescriptorSet 0 Decorate 32(crossStageBlock2) Block MemberDecorate 32(crossStageBlock2) 0 Offset 0 MemberDecorate 32(crossStageBlock2) 1 Offset 16 Decorate 37(blockName1) Binding 3 Decorate 37(blockName1) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(vgo1): 8(ptr) Variable Output 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeVector 6(float) 2 13: TypePointer Output 12(fvec2) 14(vgo2): 13(ptr) Variable Output 15: 12(fvec2) ConstantComposite 10 10 16(outBlock): TypeStruct 7(fvec4) 17: TypePointer Output 16(outBlock) 18: 17(ptr) Variable Output 19: TypeInt 32 1 20: 19(int) Constant 0 22: TypeImage 6(float) 2D sampled format:Unknown 23: TypeSampledImage 22 24: TypePointer UniformConstant 23 25(glass): 24(ptr) Variable UniformConstant 26(crossStageBlock1): TypeStruct 7(fvec4) 7(fvec4) 27: TypePointer Uniform 26(crossStageBlock1) 28: 27(ptr) Variable Uniform 29(vertOnlyBlock): TypeStruct 12(fvec2) 30: TypePointer Uniform 29(vertOnlyBlock) 31: 30(ptr) Variable Uniform 32(crossStageBlock2): TypeStruct 7(fvec4) 12(fvec2) 33: TypeInt 32 0 34: 33(int) Constant 2 35: TypeArray 32(crossStageBlock2) 34 36: TypePointer Uniform 35 37(blockName1): 36(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label Store 9(vgo1) 11 Store 14(vgo2) 15 21: 8(ptr) AccessChain 18 20 Store 21 11 Return FunctionEnd // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 57 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 22 27 31 37 48 51 ExecutionMode 4 InputPoints ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Source GLSL 460 Name 4 "main" Name 8 "i" Name 22 "gfo1" Name 27 "gfo2" Name 29 "outBlock" MemberName 29(outBlock) 0 "o3" Name 31 "gf_out" Name 32 "outBlock" MemberName 32(outBlock) 0 "o3" Name 37 "inBlock" Name 48 "vgo1" Name 51 "vgo2" Name 52 "crossStageBlock2" MemberName 52(crossStageBlock2) 0 "a" MemberName 52(crossStageBlock2) 1 "b" Name 56 "blockName1" Decorate 22(gfo1) Location 0 Decorate 27(gfo2) Location 1 Decorate 29(outBlock) Block Decorate 31(gf_out) Location 5 Decorate 32(outBlock) Block Decorate 37(inBlock) Location 5 Decorate 48(vgo1) Location 0 Decorate 51(vgo2) Location 1 Decorate 52(crossStageBlock2) Block MemberDecorate 52(crossStageBlock2) 0 Offset 0 MemberDecorate 52(crossStageBlock2) 1 Offset 16 Decorate 56(blockName1) Binding 3 Decorate 56(blockName1) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 3 17: TypeBool 19: TypeFloat 32 20: TypeVector 19(float) 4 21: TypePointer Output 20(fvec4) 22(gfo1): 21(ptr) Variable Output 23: 19(float) Constant 0 24: 20(fvec4) ConstantComposite 23 23 23 23 25: TypeVector 19(float) 2 26: TypePointer Output 25(fvec2) 27(gfo2): 26(ptr) Variable Output 28: 25(fvec2) ConstantComposite 23 23 29(outBlock): TypeStruct 20(fvec4) 30: TypePointer Output 29(outBlock) 31(gf_out): 30(ptr) Variable Output 32(outBlock): TypeStruct 20(fvec4) 33: TypeInt 32 0 34: 33(int) Constant 1 35: TypeArray 32(outBlock) 34 36: TypePointer Input 35 37(inBlock): 36(ptr) Variable Input 39: TypePointer Input 20(fvec4) 44: 6(int) Constant 1 46: TypeArray 20(fvec4) 34 47: TypePointer Input 46 48(vgo1): 47(ptr) Variable Input 49: TypeArray 25(fvec2) 34 50: TypePointer Input 49 51(vgo2): 50(ptr) Variable Input 52(crossStageBlock2): TypeStruct 20(fvec4) 25(fvec2) 53: 33(int) Constant 2 54: TypeArray 52(crossStageBlock2) 53 55: TypePointer Uniform 54 56(blockName1): 55(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label Store 22(gfo1) 24 Store 27(gfo2) 28 38: 6(int) Load 8(i) 40: 39(ptr) AccessChain 37(inBlock) 38 9 41: 20(fvec4) Load 40 42: 21(ptr) AccessChain 31(gf_out) 9 Store 42 41 EmitVertex Branch 13 13: Label 43: 6(int) Load 8(i) 45: 6(int) IAdd 43 44 Store 8(i) 45 Branch 10 12: Label EndPrimitive Return FunctionEnd // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 81 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 64 70 74 76 ExecutionMode 4 OriginUpperLeft Source GLSL 460 Name 4 "main" Name 9 "Bar(" Name 13 "Foo(" Name 15 "fragOnlyBlock" MemberName 15(fragOnlyBlock) 0 "fb1" Name 17 "" Name 23 "crossStageBlock2" MemberName 23(crossStageBlock2) 0 "a" MemberName 23(crossStageBlock2) 1 "b" Name 28 "blockName2" Name 38 "crossStageBlock1" MemberName 38(crossStageBlock1) 0 "a" MemberName 38(crossStageBlock1) 1 "b" Name 40 "" Name 62 "color" Name 64 "gfo1" Name 70 "outColor" Name 72 "outBlock" MemberName 72(outBlock) 0 "o3" Name 74 "" Name 76 "gfo2" Name 80 "glass" Decorate 15(fragOnlyBlock) BufferBlock MemberDecorate 15(fragOnlyBlock) 0 NonWritable MemberDecorate 15(fragOnlyBlock) 0 Offset 0 Decorate 17 NonWritable Decorate 17 Binding 2 Decorate 17 DescriptorSet 0 Decorate 23(crossStageBlock2) Block MemberDecorate 23(crossStageBlock2) 0 Offset 0 MemberDecorate 23(crossStageBlock2) 1 Offset 16 Decorate 28(blockName2) Binding 3 Decorate 28(blockName2) DescriptorSet 0 Decorate 38(crossStageBlock1) Block MemberDecorate 38(crossStageBlock1) 0 Offset 0 MemberDecorate 38(crossStageBlock1) 1 Offset 16 Decorate 40 Binding 1 Decorate 40 DescriptorSet 0 Decorate 64(gfo1) Location 0 Decorate 70(outColor) Location 0 Decorate 72(outBlock) Block Decorate 74 Location 5 Decorate 76(gfo2) Location 1 Decorate 80(glass) Binding 0 Decorate 80(glass) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeFunction 7(fvec2) 11: TypeVector 6(float) 4 12: TypeFunction 11(fvec4) 15(fragOnlyBlock): TypeStruct 7(fvec2) 16: TypePointer Uniform 15(fragOnlyBlock) 17: 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 20: TypePointer Uniform 7(fvec2) 23(crossStageBlock2): TypeStruct 11(fvec4) 7(fvec2) 24: TypeInt 32 0 25: 24(int) Constant 2 26: TypeArray 23(crossStageBlock2) 25 27: TypePointer Uniform 26 28(blockName2): 27(ptr) Variable Uniform 29: 18(int) Constant 1 38(crossStageBlock1): TypeStruct 11(fvec4) 11(fvec4) 39: TypePointer Uniform 38(crossStageBlock1) 40: 39(ptr) Variable Uniform 41: TypePointer Uniform 11(fvec4) 54: 6(float) Constant 0 61: TypePointer Function 11(fvec4) 63: TypePointer Input 11(fvec4) 64(gfo1): 63(ptr) Variable Input 69: TypePointer Output 11(fvec4) 70(outColor): 69(ptr) Variable Output 72(outBlock): TypeStruct 11(fvec4) 73: TypePointer Input 72(outBlock) 74: 73(ptr) Variable Input 75: TypePointer Input 7(fvec2) 76(gfo2): 75(ptr) Variable Input 77: TypeImage 6(float) 2D sampled format:Unknown 78: TypeSampledImage 77 79: TypePointer UniformConstant 78 80(glass): 79(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 62(color): 61(ptr) Variable Function 65: 11(fvec4) Load 64(gfo1) Store 62(color) 65 66: 11(fvec4) Load 62(color) 67: 11(fvec4) FunctionCall 13(Foo() 68: 11(fvec4) FAdd 66 67 Store 62(color) 68 71: 11(fvec4) Load 62(color) Store 70(outColor) 71 Return FunctionEnd 9(Bar(): 7(fvec2) Function None 8 10: Label 21: 20(ptr) AccessChain 17 19 22: 7(fvec2) Load 21 30: 20(ptr) AccessChain 28(blockName2) 19 29 31: 7(fvec2) Load 30 32: 7(fvec2) FAdd 22 31 33: 20(ptr) AccessChain 28(blockName2) 29 29 34: 7(fvec2) Load 33 35: 7(fvec2) FAdd 32 34 ReturnValue 35 FunctionEnd 13(Foo(): 11(fvec4) Function None 12 14: Label 42: 41(ptr) AccessChain 40 19 43: 11(fvec4) Load 42 44: 41(ptr) AccessChain 40 29 45: 11(fvec4) Load 44 46: 11(fvec4) FAdd 43 45 47: 41(ptr) AccessChain 28(blockName2) 19 19 48: 11(fvec4) Load 47 49: 11(fvec4) FAdd 46 48 50: 41(ptr) AccessChain 28(blockName2) 29 19 51: 11(fvec4) Load 50 52: 11(fvec4) FAdd 49 51 53: 7(fvec2) FunctionCall 9(Bar() 55: 6(float) CompositeExtract 53 0 56: 6(float) CompositeExtract 53 1 57: 11(fvec4) CompositeConstruct 55 56 54 54 58: 11(fvec4) FAdd 52 57 ReturnValue 58 FunctionEnd glslang-16.0.0/Test/baseResults/iomap.mismatchedBufferTypes.vert.out000066400000000000000000000032061506534232700255610ustar00rootroot00000000000000iomap.mismatchedBufferTypes.vert Shader version: 460 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:? Linker Objects 0:? 'blockname' (layout( column_major std140) uniform block{layout( column_major std140) uniform float a, layout( column_major std140) uniform float b}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) iomap.mismatchedBufferTypes.frag Shader version: 460 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:? Linker Objects 0:? 'blockname' (layout( column_major std140) uniform block{layout( column_major std140) uniform float a}) Linked vertex stage: Linked fragment stage: ERROR: Linking fragment stage: vertex block member has no corresponding member in fragment block: vertex stage: Block: crossStageBlock, Member: b fragment stage: Block: crossStageBlock, Member: n/a Shader version: 460 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:? Linker Objects 0:? 'blockname' (layout( column_major std140) uniform block{layout( column_major std140) uniform float a, layout( column_major std140) uniform float b}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:? Linker Objects 0:? 'blockname' (layout( column_major std140) uniform block{layout( column_major std140) uniform float a}) Validation failed SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/iomap.variableOutBlockIn.2.vert.out000066400000000000000000000327541506534232700251550ustar00rootroot00000000000000iomap.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 Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance 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 Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance 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 glslang-16.0.0/Test/baseResults/iomap.variableOutBlockIn.vert.out000066400000000000000000000262111506534232700250040ustar00rootroot00000000000000iomap.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 Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance 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 glslang-16.0.0/Test/baseResults/length.frag.out000066400000000000000000000046241506534232700214050ustar00rootroot00000000000000length.frag Shader version: 120 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp 2-component vector of float) 0:15 't' ( temp 2-component vector of float) 0:15 add ( temp 2-component vector of float) 0:15 direct index ( smooth temp 2-component vector of float) 0:15 'v' ( smooth in 2-element array of 2-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:15 direct index ( smooth temp 2-component vector of float) 0:15 'v' ( smooth in 2-element array of 2-component vector of float) 0:15 Constant: 0:15 1 (const int) 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:17 Constant: 0:17 30.000000 0:17 30.000000 0:17 30.000000 0:17 30.000000 0:? Linker Objects 0:? 'u' ( uniform 3-element array of 4-component vector of float) 0:? 'v' ( smooth in 2-element array of 2-component vector of float) Linked fragment stage: Shader version: 120 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:? Sequence 0:15 Sequence 0:15 move second child to first child ( temp 2-component vector of float) 0:15 't' ( temp 2-component vector of float) 0:15 add ( temp 2-component vector of float) 0:15 direct index ( smooth temp 2-component vector of float) 0:15 'v' ( smooth in 2-element array of 2-component vector of float) 0:15 Constant: 0:15 0 (const int) 0:15 direct index ( smooth temp 2-component vector of float) 0:15 'v' ( smooth in 2-element array of 2-component vector of float) 0:15 Constant: 0:15 1 (const int) 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:17 Constant: 0:17 30.000000 0:17 30.000000 0:17 30.000000 0:17 30.000000 0:? Linker Objects 0:? 'u' ( uniform 3-element array of 4-component vector of float) 0:? 'v' ( smooth in 2-element array of 2-component vector of float) glslang-16.0.0/Test/baseResults/lineContinuation.vert.out000066400000000000000000000233251506534232700235060ustar00rootroot00000000000000lineContinuation.vert WARNING: 0:3: 'line continuation' : used at end of comment; the following line is still part of the comment ERROR: 0:6: '#error' : e1 ERROR: 0:11: '#error' : e2 ERROR: 0:18: '#error' : e3 ERROR: 0:42: '\' : illegal use of escape character ERROR: 0:43: '@' : unexpected token ERROR: 0:44: '$' : unexpected token ERROR: 0:45: '\' : illegal use of escape character ERROR: 0:47: '\' : illegal use of escape character ERROR: 0:48: '\' : illegal use of escape character ERROR: 0:49: '$' : unexpected token ERROR: 0:50: '@' : unexpected token ERROR: 0:55: '#error' : good continuation WARNING: 0:62: 'line continuation' : used at end of comment; the following line is still part of the comment ERROR: 0:111: 'macro expansion' : End of line in macro substitution: FOOM ERROR: 0:112: 'preprocessor evaluation' : can't evaluate expression ERROR: 0:112: '#if' : unexpected tokens following directive ERROR: 0:117: 'macro expansion' : End of line in macro substitution: FOOM ERROR: 0:118: 'preprocessor evaluation' : can't evaluate expression ERROR: 0:118: '#if' : unexpected tokens following directive ERROR: 0:150: '' : syntax error, unexpected EQUAL ERROR: 19 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:20 Sequence 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:20 Construct vec4 ( temp highp 4-component vector of float) 0:20 'foo' ( global highp float) 0:22 Function Definition: foo2(vf4; ( global highp 4-component vector of float) 0:22 Function Parameters: 0:22 'a' ( in highp 4-component vector of float) 0:24 Sequence 0:24 Sequence 0:24 move second child to first child ( temp highp 4-component vector of float) 0:24 'b' ( temp highp 4-component vector of float) 0:24 'a' ( in highp 4-component vector of float) 0:25 Branch: Return with expression 0:25 'b' ( temp highp 4-component vector of float) 0:47 Sequence 0:47 move second child to first child ( temp highp int) 0:47 'q1' ( global highp int) 0:47 Constant: 0:47 1 (const int) 0:48 Sequence 0:48 move second child to first child ( temp highp int) 0:48 'q2' ( global highp int) 0:48 Constant: 0:48 1 (const int) 0:49 Sequence 0:49 move second child to first child ( temp highp int) 0:49 'q3' ( global highp int) 0:49 Constant: 0:49 1 (const int) 0:50 Sequence 0:50 move second child to first child ( temp highp int) 0:50 'q4' ( global highp int) 0:50 Constant: 0:50 1 (const int) 0:74 Sequence 0:74 move second child to first child ( temp highp float) 0:74 'funkyf' ( global highp float) 0:75 Constant: 0:75 1.2300000000000e+16 0:85 Sequence 0:84 move second child to first child ( temp highp int) 0:84 'funkyh' ( global highp int) 0:86 Constant: 0:86 244 (const int) 0:91 Sequence 0:91 move second child to first child ( temp highp int) 0:91 'funkyo' ( global highp int) 0:92 Constant: 0:92 34 (const int) 0:96 Sequence 0:96 move second child to first child ( temp highp int) 0:96 'c' ( global highp int) 0:97 Constant: 0:97 11 (const int) 0:98 Sequence 0:98 move second child to first child ( temp highp int) 0:98 'd' ( global highp int) 0:98 Constant: 0:98 12 (const int) 0:107 Sequence 0:107 move second child to first child ( temp highp int) 0:107 'bar103' ( global highp int) 0:107 Constant: 0:107 17 (const int) 0:113 Sequence 0:113 move second child to first child ( temp highp int) 0:113 'bar104' ( global highp int) 0:113 Constant: 0:113 19 (const int) 0:119 Sequence 0:119 move second child to first child ( temp highp int) 0:119 'bar105' ( global highp int) 0:119 Constant: 0:119 19 (const int) 0:122 Sequence 0:122 move second child to first child ( temp highp int) 0:122 'bar106' ( global highp int) 0:122 Constant: 0:122 12 (const int) 0:123 Sequence 0:123 move second child to first child ( temp highp int) 0:123 'bar107' ( global highp int) 0:128 Constant: 0:128 5 (const int) 0:131 Function Definition: foo203209409( ( global void) 0:131 Function Parameters: 0:134 Sequence 0:134 add second child into first child ( temp highp int) 0:133 'bar107' ( global highp int) 0:134 Constant: 0:134 37 (const int) 0:135 multiply second child into first child ( temp highp int) 0:135 'bar107' ( global highp int) 0:136 Constant: 0:136 38 (const int) 0:137 divide second child into first child ( temp highp int) 0:137 'bar107' ( global highp int) 0:138 Constant: 0:138 39 (const int) 0:139 add ( temp highp int) 0:139 'bar107' ( global highp int) 0:140 Constant: 0:140 41 (const int) 0:? Linker Objects 0:? 'foo' ( global highp float) 0:? 'goodDecl' ( global highp int) 0:? 'a1' ( const highp int) 0:? 4 (const int) 0:? 'a2' ( const highp int) 0:? 3 (const int) 0:? 'a3' ( const highp int) 0:? 4 (const int) 0:? 'a4' ( const highp int) 0:? 3 (const int) 0:? 'q1' ( global highp int) 0:? 'q2' ( global highp int) 0:? 'q3' ( global highp int) 0:? 'q4' ( global highp int) 0:? 'abdece' ( const highp int) 0:? 10 (const int) 0:? 'aoeuntaoehu' ( const highp int) 0:? 10 (const int) 0:? 'funkyf' ( global highp float) 0:? 'funkyh' ( global highp int) 0:? 'funkyo' ( global highp int) 0:? 'c' ( global highp int) 0:? 'd' ( global highp int) 0:? 'bar103' ( global highp int) 0:? 'bar104' ( global highp int) 0:? 'bar105' ( global highp int) 0:? 'bar106' ( global highp int) 0:? 'bar107' ( global highp int) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 300 ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:20 Sequence 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:20 Construct vec4 ( temp highp 4-component vector of float) 0:20 'foo' ( global highp float) 0:47 Sequence 0:47 move second child to first child ( temp highp int) 0:47 'q1' ( global highp int) 0:47 Constant: 0:47 1 (const int) 0:48 Sequence 0:48 move second child to first child ( temp highp int) 0:48 'q2' ( global highp int) 0:48 Constant: 0:48 1 (const int) 0:49 Sequence 0:49 move second child to first child ( temp highp int) 0:49 'q3' ( global highp int) 0:49 Constant: 0:49 1 (const int) 0:50 Sequence 0:50 move second child to first child ( temp highp int) 0:50 'q4' ( global highp int) 0:50 Constant: 0:50 1 (const int) 0:74 Sequence 0:74 move second child to first child ( temp highp float) 0:74 'funkyf' ( global highp float) 0:75 Constant: 0:75 1.2300000000000e+16 0:85 Sequence 0:84 move second child to first child ( temp highp int) 0:84 'funkyh' ( global highp int) 0:86 Constant: 0:86 244 (const int) 0:91 Sequence 0:91 move second child to first child ( temp highp int) 0:91 'funkyo' ( global highp int) 0:92 Constant: 0:92 34 (const int) 0:96 Sequence 0:96 move second child to first child ( temp highp int) 0:96 'c' ( global highp int) 0:97 Constant: 0:97 11 (const int) 0:98 Sequence 0:98 move second child to first child ( temp highp int) 0:98 'd' ( global highp int) 0:98 Constant: 0:98 12 (const int) 0:107 Sequence 0:107 move second child to first child ( temp highp int) 0:107 'bar103' ( global highp int) 0:107 Constant: 0:107 17 (const int) 0:113 Sequence 0:113 move second child to first child ( temp highp int) 0:113 'bar104' ( global highp int) 0:113 Constant: 0:113 19 (const int) 0:119 Sequence 0:119 move second child to first child ( temp highp int) 0:119 'bar105' ( global highp int) 0:119 Constant: 0:119 19 (const int) 0:122 Sequence 0:122 move second child to first child ( temp highp int) 0:122 'bar106' ( global highp int) 0:122 Constant: 0:122 12 (const int) 0:123 Sequence 0:123 move second child to first child ( temp highp int) 0:123 'bar107' ( global highp int) 0:128 Constant: 0:128 5 (const int) 0:? Linker Objects 0:? 'foo' ( global highp float) 0:? 'goodDecl' ( global highp int) 0:? 'a1' ( const highp int) 0:? 4 (const int) 0:? 'a2' ( const highp int) 0:? 3 (const int) 0:? 'a3' ( const highp int) 0:? 4 (const int) 0:? 'a4' ( const highp int) 0:? 3 (const int) 0:? 'q1' ( global highp int) 0:? 'q2' ( global highp int) 0:? 'q3' ( global highp int) 0:? 'q4' ( global highp int) 0:? 'abdece' ( const highp int) 0:? 10 (const int) 0:? 'aoeuntaoehu' ( const highp int) 0:? 10 (const int) 0:? 'funkyf' ( global highp float) 0:? 'funkyh' ( global highp int) 0:? 'funkyo' ( global highp int) 0:? 'c' ( global highp int) 0:? 'd' ( global highp int) 0:? 'bar103' ( global highp int) 0:? 'bar104' ( global highp int) 0:? 'bar105' ( global highp int) 0:? 'bar106' ( global highp int) 0:? 'bar107' ( global highp int) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/lineContinuation100.vert.out000066400000000000000000000114111506534232700237200ustar00rootroot00000000000000lineContinuation100.vert WARNING: 0:3: 'line continuation' : used at end of comment, but this version does not provide line continuation ERROR: 0:4: '#error' : good error ERROR: 0:8: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:11: '#error' : e2 ERROR: 0:13: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:14: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:15: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:18: '#error' : e3 ERROR: 0:24: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:40: '\' : illegal use of escape character ERROR: 0:41: '@' : unexpected token ERROR: 0:42: '$' : unexpected token ERROR: 0:43: '\' : illegal use of escape character ERROR: 0:45: '\' : illegal use of escape character ERROR: 0:46: '\' : illegal use of escape character ERROR: 0:47: '$' : unexpected token ERROR: 0:48: '@' : unexpected token ERROR: 0:50: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:52: 'line continuation' : not supported for this version or the enabled extensions ERROR: 0:53: '#error' : bad continuation ERROR: 0:55: 'line continuation' : not supported for this version or the enabled extensions ERROR: 20 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:20 Sequence 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:20 Construct vec4 ( temp highp 4-component vector of float) 0:20 'foo' ( global highp float) 0:22 Function Definition: foo2(vf4; ( global highp 4-component vector of float) 0:22 Function Parameters: 0:22 'a' ( in highp 4-component vector of float) 0:24 Sequence 0:24 Sequence 0:24 move second child to first child ( temp highp 4-component vector of float) 0:24 'b' ( temp highp 4-component vector of float) 0:24 'a' ( in highp 4-component vector of float) 0:25 Branch: Return with expression 0:25 'b' ( temp highp 4-component vector of float) 0:45 Sequence 0:45 move second child to first child ( temp highp int) 0:45 'q1' ( global highp int) 0:45 Constant: 0:45 1 (const int) 0:46 Sequence 0:46 move second child to first child ( temp highp int) 0:46 'q2' ( global highp int) 0:46 Constant: 0:46 1 (const int) 0:47 Sequence 0:47 move second child to first child ( temp highp int) 0:47 'q3' ( global highp int) 0:47 Constant: 0:47 1 (const int) 0:48 Sequence 0:48 move second child to first child ( temp highp int) 0:48 'q4' ( global highp int) 0:48 Constant: 0:48 1 (const int) 0:? Linker Objects 0:? 'foo' ( global highp float) 0:? 'a1' ( const highp int) 0:? 4 (const int) 0:? 'a2' ( const highp int) 0:? 3 (const int) 0:? 'a3' ( const highp int) 0:? 4 (const int) 0:? 'a4' ( const highp int) 0:? 3 (const int) 0:? 'q1' ( global highp int) 0:? 'q2' ( global highp int) 0:? 'q3' ( global highp int) 0:? 'q4' ( global highp int) Linked vertex stage: Shader version: 100 ERROR: node is still EOpNull! 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:20 Sequence 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:20 Construct vec4 ( temp highp 4-component vector of float) 0:20 'foo' ( global highp float) 0:45 Sequence 0:45 move second child to first child ( temp highp int) 0:45 'q1' ( global highp int) 0:45 Constant: 0:45 1 (const int) 0:46 Sequence 0:46 move second child to first child ( temp highp int) 0:46 'q2' ( global highp int) 0:46 Constant: 0:46 1 (const int) 0:47 Sequence 0:47 move second child to first child ( temp highp int) 0:47 'q3' ( global highp int) 0:47 Constant: 0:47 1 (const int) 0:48 Sequence 0:48 move second child to first child ( temp highp int) 0:48 'q4' ( global highp int) 0:48 Constant: 0:48 1 (const int) 0:? Linker Objects 0:? 'foo' ( global highp float) 0:? 'a1' ( const highp int) 0:? 4 (const int) 0:? 'a2' ( const highp int) 0:? 3 (const int) 0:? 'a3' ( const highp int) 0:? 4 (const int) 0:? 'a4' ( const highp int) 0:? 3 (const int) 0:? 'q1' ( global highp int) 0:? 'q2' ( global highp int) 0:? 'q3' ( global highp int) 0:? 'q4' ( global highp int) glslang-16.0.0/Test/baseResults/link.crossStageIO.0.vert.out000066400000000000000000003026301506534232700236220ustar00rootroot00000000000000link.crossStageIO.0.vert Shader version: 460 0:? Sequence 0:66 Function Definition: main( ( global void) 0:66 Function Parameters: 0:67 Sequence 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Constant: 0:67 false (const bool) 0:67 true case 0:68 Sequence 0:68 move second child to first child ( temp 4-component vector of float) 0:68 'a0' (layout( location=40) smooth out 4-component vector of float) 0:68 Constant: 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:70 move second child to first child ( temp 4-component vector of float) 0:70 a1: direct index for structure ( out 4-component vector of float) 0:70 'anon@0' (layout( location=1) out block{ out 4-component vector of float a1}) 0:70 Constant: 0:70 0 (const uint) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp 4-component vector of float) 0:71 a2: direct index for structure (layout( location=3) out 4-component vector of float) 0:71 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:71 Constant: 0:71 0 (const uint) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 move second child to first child ( temp 4-component vector of float) 0:72 a3: direct index for structure (layout( location=2) out 4-component vector of float) 0:72 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:72 Constant: 0:72 1 (const uint) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 move second child to first child ( temp 4-component vector of float) 0:73 direct index (layout( location=5) smooth temp 4-component vector of float) 0:73 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 move second child to first child ( temp 4-component vector of float) 0:74 direct index (layout( location=5) smooth temp 4-component vector of float) 0:74 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 move second child to first child ( temp 4-component vector of float) 0:75 direct index (layout( location=5) smooth temp 4-component vector of float) 0:75 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 move second child to first child ( temp 4-component vector of float) 0:76 a5: direct index for structure (layout( location=4) out 4-component vector of float) 0:76 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:76 Constant: 0:76 0 (const uint) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 move second child to first child ( temp 4-component vector of float) 0:77 direct index (layout( location=8) temp 4-component vector of float) 0:77 a6: direct index for structure (layout( location=8) out 2-element array of 4-component vector of float) 0:77 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:77 Constant: 0:77 1 (const uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 move second child to first child ( temp 4-component vector of float) 0:78 direct index (layout( location=8) temp 4-component vector of float) 0:78 a6: direct index for structure (layout( location=8) out 2-element array of 4-component vector of float) 0:78 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:78 Constant: 0:78 1 (const uint) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 move second child to first child ( temp 4-component vector of float) 0:79 direct index (layout( location=10) temp 4-component vector of float) 0:79 a7: direct index for structure (layout( location=10) out 2-element array of 4-component vector of float) 0:79 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:79 Constant: 0:79 2 (const uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 move second child to first child ( temp 4-component vector of float) 0:80 direct index (layout( location=10) temp 4-component vector of float) 0:80 a7: direct index for structure (layout( location=10) out 2-element array of 4-component vector of float) 0:80 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:80 Constant: 0:80 2 (const uint) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 move second child to first child ( temp float) 0:81 a8: direct index for structure (layout( location=12) out float) 0:81 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:81 Constant: 0:81 0 (const uint) 0:81 Constant: 0:81 0.000000 0:82 move second child to first child ( temp float) 0:82 direct index ( temp float) 0:82 direct index (layout( location=15) temp 2-component vector of float) 0:82 a9: direct index for structure (layout( location=15) out 2-element array of 2-component vector of float) 0:82 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:82 Constant: 0:82 1 (const uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0.000000 0:83 move second child to first child ( temp float) 0:83 direct index ( temp float) 0:83 direct index (layout( location=15) temp 2-component vector of float) 0:83 a9: direct index for structure (layout( location=15) out 2-element array of 2-component vector of float) 0:83 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:83 Constant: 0:83 1 (const uint) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0.000000 0:84 move second child to first child ( temp 4-component vector of float) 0:84 direct index (layout( location=17) temp 4-component vector of float) 0:84 a10: direct index for structure (layout( location=17) out 2-element array of 4-component vector of float) 0:84 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:84 Constant: 0:84 2 (const uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 move second child to first child ( temp 4-component vector of float) 0:85 direct index (layout( location=17) temp 4-component vector of float) 0:85 a10: direct index for structure (layout( location=17) out 2-element array of 4-component vector of float) 0:85 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:85 Constant: 0:85 2 (const uint) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 move second child to first child ( temp float) 0:86 direct index ( temp float) 0:86 a: direct index for structure ( global 3-element array of float) 0:86 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:86 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:86 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:86 Constant: 0:86 3 (const uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0.000000 0:87 move second child to first child ( temp float) 0:87 direct index ( temp float) 0:87 a: direct index for structure ( global 3-element array of float) 0:87 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:87 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:87 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:87 Constant: 0:87 3 (const uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0.000000 0:88 move second child to first child ( temp float) 0:88 direct index ( temp float) 0:88 a: direct index for structure ( global 3-element array of float) 0:88 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:88 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:88 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:88 Constant: 0:88 3 (const uint) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0.000000 0:89 move second child to first child ( temp float) 0:89 b: direct index for structure ( global float) 0:89 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:89 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:89 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:89 Constant: 0:89 3 (const uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0.000000 0:90 move second child to first child ( temp float) 0:90 direct index ( temp float) 0:90 a: direct index for structure ( global 3-element array of float) 0:90 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:90 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:90 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:90 Constant: 0:90 3 (const uint) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0.000000 0:91 move second child to first child ( temp float) 0:91 direct index ( temp float) 0:91 a: direct index for structure ( global 3-element array of float) 0:91 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:91 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:91 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0.000000 0:92 move second child to first child ( temp float) 0:92 direct index ( temp float) 0:92 a: direct index for structure ( global 3-element array of float) 0:92 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:92 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:92 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:92 Constant: 0:92 3 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.000000 0:93 move second child to first child ( temp float) 0:93 b: direct index for structure ( global float) 0:93 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:93 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:93 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:93 Constant: 0:93 3 (const uint) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0.000000 0:94 move second child to first child ( temp float) 0:94 direct index (layout( location=27) smooth temp float) 0:94 'a12' (layout( location=27) smooth out 3-element array of float) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0.000000 0:95 move second child to first child ( temp float) 0:95 direct index (layout( location=27) smooth temp float) 0:95 'a12' (layout( location=27) smooth out 3-element array of float) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0.000000 0:96 move second child to first child ( temp float) 0:96 direct index (layout( location=27) smooth temp float) 0:96 'a12' (layout( location=27) smooth out 3-element array of float) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0.000000 0:97 move second child to first child ( temp float) 0:97 direct index ( temp float) 0:97 a13: direct index for structure ( global 2-component vector of float) 0:97 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 0.000000 0:98 move second child to first child ( temp float) 0:98 direct index ( temp float) 0:98 a: direct index for structure ( global 3-element array of float) 0:98 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:98 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0.000000 0:99 move second child to first child ( temp float) 0:99 direct index ( temp float) 0:99 a: direct index for structure ( global 3-element array of float) 0:99 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:99 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0.000000 0:100 move second child to first child ( temp float) 0:100 direct index ( temp float) 0:100 a: direct index for structure ( global 3-element array of float) 0:100 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:100 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 0.000000 0:101 move second child to first child ( temp float) 0:101 b: direct index for structure ( global float) 0:101 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:101 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp 4X4 matrix of float) 0:102 a15: direct index for structure ( global 4X4 matrix of float) 0:102 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:104 move second child to first child ( temp 4-component vector of float) 0:104 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:104 'a17' (layout( location=46) smooth out 4-element array of 4-component vector of float) 0:104 i: direct index for structure (layout( column_major shared) uniform int) 0:104 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:105 move second child to first child ( temp 4-component vector of float) 0:105 direct index ( temp 4-component vector of float) 0:105 a18: direct index for structure ( out 10-element array of 4-component vector of float) 0:105 'anon@4' (layout( location=50) out block{ out 10-element array of 4-component vector of float a18}) 0:105 Constant: 0:105 0 (const uint) 0:105 Constant: 0:105 5 (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 2-component vector of float) 0:106 a19: direct index for structure (layout( location=60) out 2-component vector of float) 0:106 'anon@5' ( out block{layout( location=60) out 2-component vector of float a19}) 0:106 Constant: 0:106 0 (const uint) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:107 move second child to first child ( temp 4-component vector of float) 0:107 a20: direct index for structure ( out 4-component vector of float) 0:107 'anon@6' ( out block{ out 4-component vector of float a20}) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:108 move second child to first child ( temp 2-component vector of float) 0:108 direct index ( smooth temp 2-component vector of float) 0:108 'a21' ( smooth out 2-element array of 2-component vector of float) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 0.000000 0:108 0.000000 0:109 move second child to first child ( temp 2-component vector of float) 0:109 direct index ( smooth temp 2-component vector of float) 0:109 'a21' ( smooth out 2-element array of 2-component vector of float) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0.000000 0:109 0.000000 0:? Linker Objects 0:? 'a0' (layout( location=40) smooth out 4-component vector of float) 0:? 'anon@0' (layout( location=1) out block{ out 4-component vector of float a1}) 0:? 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:? 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:? 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:? 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:? 'a12' (layout( location=27) smooth out 3-element array of float) 0:? 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:? 'a16' (layout( location=39) smooth out float) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'a17' (layout( location=46) smooth out 4-element array of 4-component vector of float) 0:? 'anon@4' (layout( location=50) out block{ out 10-element array of 4-component vector of float a18}) 0:? 'anon@5' ( out block{layout( location=60) out 2-component vector of float a19}) 0:? 'anon@6' ( out block{ out 4-component vector of float a20}) 0:? 'a21' ( smooth out 2-element array of 2-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.crossStageIO.0.frag Shader version: 460 0:? Sequence 0:71 Function Definition: uncalled( ( global uint) 0:71 Function Parameters: 0:72 Sequence 0:72 Branch: Return with expression 0:72 'b16' ( flat in uint) 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'o' ( out 4-component vector of float) 0:76 b1: direct index for structure ( in 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp 4-component vector of float) 0:77 'o' ( out 4-component vector of float) 0:77 b2: direct index for structure ( in 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp 4-component vector of float) 0:78 'o' ( out 4-component vector of float) 0:78 b3: direct index for structure ( in 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'o' ( out 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'o' ( out 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp 4-component vector of float) 0:81 'o' ( out 4-component vector of float) 0:81 b5: direct index for structure ( in 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp 4-component vector of float) 0:82 'o' ( out 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'o' ( out 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp 4-component vector of float) 0:84 'o' ( out 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp 4-component vector of float) 0:85 'o' ( out 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp 4-component vector of float) 0:86 'o' ( out 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp 4-component vector of float) 0:87 'o' ( out 4-component vector of float) 0:87 Construct vec4 ( temp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp 4-component vector of float) 0:88 'o' ( out 4-component vector of float) 0:88 vector swizzle ( temp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp 4-component vector of float) 0:89 'o' ( out 4-component vector of float) 0:89 Construct vec4 ( temp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in float) 0:89 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp 4-component vector of float) 0:90 'o' ( out 4-component vector of float) 0:90 vector swizzle ( temp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp 4-component vector of float) 0:91 'o' ( out 4-component vector of float) 0:91 Construct vec4 ( temp 4-component vector of float) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp 4-component vector of float) 0:92 'o' ( out 4-component vector of float) 0:92 Construct vec4 ( temp 4-component vector of float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp float) 0:92 add ( temp float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'o' ( out 4-component vector of float) 0:93 Construct vec4 ( temp 4-component vector of float) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp 4-component vector of float) 0:95 'o' ( out 4-component vector of float) 0:95 vector swizzle ( temp 4-component vector of float) 0:95 matrix-times-vector ( temp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp 4-component vector of float) 0:96 'o' ( out 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp 4-component vector of float) 0:97 'o' ( out 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp 4-component vector of float) 0:99 'o' ( out 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:99 i: direct index for structure (layout( column_major shared) uniform int) 0:99 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp 4-component vector of float) 0:100 'o' ( out 4-component vector of float) 0:100 indirect index ( temp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major shared) uniform int) 0:100 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp 4-component vector of float) 0:101 'o' ( out 4-component vector of float) 0:101 vector swizzle ( temp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp 4-component vector of float) 0:102 'o' ( out 4-component vector of float) 0:102 a20: direct index for structure ( in 4-component vector of float) 0:102 'anon@8' ( in block{ in 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp 4-component vector of float) 0:103 'o' ( out 4-component vector of float) 0:103 Construct vec4 ( temp 4-component vector of float) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of float) 0:? 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:? 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:? 'b16' ( flat in uint) 0:? 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in 2-component vector of float) 0:? 'anon@8' ( in block{ in 4-component vector of float a20}) 0:? 'a21' ( smooth in 2-element array of 2-component vector of float) 0:? 'o' ( out 4-component vector of float) Linked vertex stage: Linked fragment stage: Shader version: 460 0:? Sequence 0:66 Function Definition: main( ( global void) 0:66 Function Parameters: 0:67 Sequence 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Constant: 0:67 false (const bool) 0:67 true case 0:68 Sequence 0:68 move second child to first child ( temp 4-component vector of float) 0:68 'a0' (layout( location=40) smooth out 4-component vector of float) 0:68 Constant: 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:70 move second child to first child ( temp 4-component vector of float) 0:70 a1: direct index for structure ( out 4-component vector of float) 0:70 'anon@0' (layout( location=1) out block{ out 4-component vector of float a1}) 0:70 Constant: 0:70 0 (const uint) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp 4-component vector of float) 0:71 a2: direct index for structure (layout( location=3) out 4-component vector of float) 0:71 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:71 Constant: 0:71 0 (const uint) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 move second child to first child ( temp 4-component vector of float) 0:72 a3: direct index for structure (layout( location=2) out 4-component vector of float) 0:72 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:72 Constant: 0:72 1 (const uint) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 move second child to first child ( temp 4-component vector of float) 0:73 direct index (layout( location=5) smooth temp 4-component vector of float) 0:73 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 move second child to first child ( temp 4-component vector of float) 0:74 direct index (layout( location=5) smooth temp 4-component vector of float) 0:74 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 move second child to first child ( temp 4-component vector of float) 0:75 direct index (layout( location=5) smooth temp 4-component vector of float) 0:75 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 move second child to first child ( temp 4-component vector of float) 0:76 a5: direct index for structure (layout( location=4) out 4-component vector of float) 0:76 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:76 Constant: 0:76 0 (const uint) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 move second child to first child ( temp 4-component vector of float) 0:77 direct index (layout( location=8) temp 4-component vector of float) 0:77 a6: direct index for structure (layout( location=8) out 2-element array of 4-component vector of float) 0:77 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:77 Constant: 0:77 1 (const uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 move second child to first child ( temp 4-component vector of float) 0:78 direct index (layout( location=8) temp 4-component vector of float) 0:78 a6: direct index for structure (layout( location=8) out 2-element array of 4-component vector of float) 0:78 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:78 Constant: 0:78 1 (const uint) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 move second child to first child ( temp 4-component vector of float) 0:79 direct index (layout( location=10) temp 4-component vector of float) 0:79 a7: direct index for structure (layout( location=10) out 2-element array of 4-component vector of float) 0:79 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:79 Constant: 0:79 2 (const uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 move second child to first child ( temp 4-component vector of float) 0:80 direct index (layout( location=10) temp 4-component vector of float) 0:80 a7: direct index for structure (layout( location=10) out 2-element array of 4-component vector of float) 0:80 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:80 Constant: 0:80 2 (const uint) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 move second child to first child ( temp float) 0:81 a8: direct index for structure (layout( location=12) out float) 0:81 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:81 Constant: 0:81 0 (const uint) 0:81 Constant: 0:81 0.000000 0:82 move second child to first child ( temp float) 0:82 direct index ( temp float) 0:82 direct index (layout( location=15) temp 2-component vector of float) 0:82 a9: direct index for structure (layout( location=15) out 2-element array of 2-component vector of float) 0:82 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:82 Constant: 0:82 1 (const uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0.000000 0:83 move second child to first child ( temp float) 0:83 direct index ( temp float) 0:83 direct index (layout( location=15) temp 2-component vector of float) 0:83 a9: direct index for structure (layout( location=15) out 2-element array of 2-component vector of float) 0:83 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:83 Constant: 0:83 1 (const uint) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0.000000 0:84 move second child to first child ( temp 4-component vector of float) 0:84 direct index (layout( location=17) temp 4-component vector of float) 0:84 a10: direct index for structure (layout( location=17) out 2-element array of 4-component vector of float) 0:84 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:84 Constant: 0:84 2 (const uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 move second child to first child ( temp 4-component vector of float) 0:85 direct index (layout( location=17) temp 4-component vector of float) 0:85 a10: direct index for structure (layout( location=17) out 2-element array of 4-component vector of float) 0:85 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:85 Constant: 0:85 2 (const uint) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 move second child to first child ( temp float) 0:86 direct index ( temp float) 0:86 a: direct index for structure ( global 3-element array of float) 0:86 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:86 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:86 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:86 Constant: 0:86 3 (const uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0.000000 0:87 move second child to first child ( temp float) 0:87 direct index ( temp float) 0:87 a: direct index for structure ( global 3-element array of float) 0:87 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:87 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:87 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:87 Constant: 0:87 3 (const uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0.000000 0:88 move second child to first child ( temp float) 0:88 direct index ( temp float) 0:88 a: direct index for structure ( global 3-element array of float) 0:88 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:88 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:88 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:88 Constant: 0:88 3 (const uint) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0.000000 0:89 move second child to first child ( temp float) 0:89 b: direct index for structure ( global float) 0:89 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:89 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:89 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:89 Constant: 0:89 3 (const uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0.000000 0:90 move second child to first child ( temp float) 0:90 direct index ( temp float) 0:90 a: direct index for structure ( global 3-element array of float) 0:90 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:90 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:90 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:90 Constant: 0:90 3 (const uint) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0.000000 0:91 move second child to first child ( temp float) 0:91 direct index ( temp float) 0:91 a: direct index for structure ( global 3-element array of float) 0:91 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:91 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:91 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0.000000 0:92 move second child to first child ( temp float) 0:92 direct index ( temp float) 0:92 a: direct index for structure ( global 3-element array of float) 0:92 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:92 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:92 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:92 Constant: 0:92 3 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.000000 0:93 move second child to first child ( temp float) 0:93 b: direct index for structure ( global float) 0:93 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:93 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:93 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:93 Constant: 0:93 3 (const uint) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0.000000 0:94 move second child to first child ( temp float) 0:94 direct index (layout( location=27) smooth temp float) 0:94 'a12' (layout( location=27) smooth out 3-element array of float) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0.000000 0:95 move second child to first child ( temp float) 0:95 direct index (layout( location=27) smooth temp float) 0:95 'a12' (layout( location=27) smooth out 3-element array of float) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0.000000 0:96 move second child to first child ( temp float) 0:96 direct index (layout( location=27) smooth temp float) 0:96 'a12' (layout( location=27) smooth out 3-element array of float) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0.000000 0:97 move second child to first child ( temp float) 0:97 direct index ( temp float) 0:97 a13: direct index for structure ( global 2-component vector of float) 0:97 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 0.000000 0:98 move second child to first child ( temp float) 0:98 direct index ( temp float) 0:98 a: direct index for structure ( global 3-element array of float) 0:98 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:98 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0.000000 0:99 move second child to first child ( temp float) 0:99 direct index ( temp float) 0:99 a: direct index for structure ( global 3-element array of float) 0:99 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:99 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0.000000 0:100 move second child to first child ( temp float) 0:100 direct index ( temp float) 0:100 a: direct index for structure ( global 3-element array of float) 0:100 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:100 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 0.000000 0:101 move second child to first child ( temp float) 0:101 b: direct index for structure ( global float) 0:101 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:101 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp 4X4 matrix of float) 0:102 a15: direct index for structure ( global 4X4 matrix of float) 0:102 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:104 move second child to first child ( temp 4-component vector of float) 0:104 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:104 'a17' (layout( location=46) smooth out 4-element array of 4-component vector of float) 0:104 i: direct index for structure (layout( column_major shared) uniform int) 0:104 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:105 move second child to first child ( temp 4-component vector of float) 0:105 direct index ( temp 4-component vector of float) 0:105 a18: direct index for structure ( out 10-element array of 4-component vector of float) 0:105 'anon@4' (layout( location=50) out block{ out 10-element array of 4-component vector of float a18}) 0:105 Constant: 0:105 0 (const uint) 0:105 Constant: 0:105 5 (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 2-component vector of float) 0:106 a19: direct index for structure (layout( location=60) out 2-component vector of float) 0:106 'anon@5' ( out block{layout( location=60) out 2-component vector of float a19}) 0:106 Constant: 0:106 0 (const uint) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:107 move second child to first child ( temp 4-component vector of float) 0:107 a20: direct index for structure ( out 4-component vector of float) 0:107 'anon@6' ( out block{ out 4-component vector of float a20}) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:108 move second child to first child ( temp 2-component vector of float) 0:108 direct index ( smooth temp 2-component vector of float) 0:108 'a21' ( smooth out 2-element array of 2-component vector of float) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 0.000000 0:108 0.000000 0:109 move second child to first child ( temp 2-component vector of float) 0:109 direct index ( smooth temp 2-component vector of float) 0:109 'a21' ( smooth out 2-element array of 2-component vector of float) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0.000000 0:109 0.000000 0:? Linker Objects 0:? 'a0' (layout( location=40) smooth out 4-component vector of float) 0:? 'anon@0' (layout( location=1) out block{ out 4-component vector of float a1}) 0:? 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:? 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:? 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:? 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:? 'a12' (layout( location=27) smooth out 3-element array of float) 0:? 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:? 'a16' (layout( location=39) smooth out float) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'a17' (layout( location=46) smooth out 4-element array of 4-component vector of float) 0:? 'anon@4' (layout( location=50) out block{ out 10-element array of 4-component vector of float a18}) 0:? 'anon@5' ( out block{layout( location=60) out 2-component vector of float a19}) 0:? 'anon@6' ( out block{ out 4-component vector of float a20}) 0:? 'a21' ( smooth out 2-element array of 2-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 0:? Sequence 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'o' ( out 4-component vector of float) 0:76 b1: direct index for structure ( in 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp 4-component vector of float) 0:77 'o' ( out 4-component vector of float) 0:77 b2: direct index for structure ( in 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp 4-component vector of float) 0:78 'o' ( out 4-component vector of float) 0:78 b3: direct index for structure ( in 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'o' ( out 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'o' ( out 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp 4-component vector of float) 0:81 'o' ( out 4-component vector of float) 0:81 b5: direct index for structure ( in 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp 4-component vector of float) 0:82 'o' ( out 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'o' ( out 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp 4-component vector of float) 0:84 'o' ( out 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp 4-component vector of float) 0:85 'o' ( out 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp 4-component vector of float) 0:86 'o' ( out 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp 4-component vector of float) 0:87 'o' ( out 4-component vector of float) 0:87 Construct vec4 ( temp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp 4-component vector of float) 0:88 'o' ( out 4-component vector of float) 0:88 vector swizzle ( temp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp 4-component vector of float) 0:89 'o' ( out 4-component vector of float) 0:89 Construct vec4 ( temp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in float) 0:89 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp 4-component vector of float) 0:90 'o' ( out 4-component vector of float) 0:90 vector swizzle ( temp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp 4-component vector of float) 0:91 'o' ( out 4-component vector of float) 0:91 Construct vec4 ( temp 4-component vector of float) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp 4-component vector of float) 0:92 'o' ( out 4-component vector of float) 0:92 Construct vec4 ( temp 4-component vector of float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp float) 0:92 add ( temp float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'o' ( out 4-component vector of float) 0:93 Construct vec4 ( temp 4-component vector of float) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp 4-component vector of float) 0:95 'o' ( out 4-component vector of float) 0:95 vector swizzle ( temp 4-component vector of float) 0:95 matrix-times-vector ( temp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp 4-component vector of float) 0:96 'o' ( out 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp 4-component vector of float) 0:97 'o' ( out 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp 4-component vector of float) 0:99 'o' ( out 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:99 i: direct index for structure (layout( column_major shared) uniform int) 0:99 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp 4-component vector of float) 0:100 'o' ( out 4-component vector of float) 0:100 indirect index ( temp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major shared) uniform int) 0:100 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp 4-component vector of float) 0:101 'o' ( out 4-component vector of float) 0:101 vector swizzle ( temp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp 4-component vector of float) 0:102 'o' ( out 4-component vector of float) 0:102 a20: direct index for structure ( in 4-component vector of float) 0:102 'anon@8' ( in block{ in 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp 4-component vector of float) 0:103 'o' ( out 4-component vector of float) 0:103 Construct vec4 ( temp 4-component vector of float) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of float) 0:? 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:? 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:? 'b16' ( flat in uint) 0:? 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in 2-component vector of float) 0:? 'anon@8' ( in block{ in 4-component vector of float a20}) 0:? 'a21' ( smooth in 2-element array of 2-component vector of float) 0:? 'o' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/link.crossStageIO.1.vert.out000066400000000000000000003304641506534232700236310ustar00rootroot00000000000000link.crossStageIO.1.vert Shader version: 460 0:? Sequence 0:66 Function Definition: main( ( global void) 0:66 Function Parameters: 0:67 Sequence 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Constant: 0:67 false (const bool) 0:67 true case 0:68 Sequence 0:68 move second child to first child ( temp 4-component vector of float) 0:68 'a0' (layout( location=40) smooth out 4-component vector of float) 0:68 Constant: 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:70 move second child to first child ( temp 4-component vector of float) 0:70 a1: direct index for structure ( out 4-component vector of float) 0:70 'anon@0' (layout( location=1) out block{ out 4-component vector of float a1}) 0:70 Constant: 0:70 0 (const uint) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp 4-component vector of float) 0:71 a2: direct index for structure (layout( location=3) out 4-component vector of float) 0:71 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:71 Constant: 0:71 0 (const uint) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 move second child to first child ( temp 4-component vector of float) 0:72 a3: direct index for structure (layout( location=2) out 4-component vector of float) 0:72 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:72 Constant: 0:72 1 (const uint) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 move second child to first child ( temp 4-component vector of float) 0:73 direct index (layout( location=5) smooth temp 4-component vector of float) 0:73 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 move second child to first child ( temp 4-component vector of float) 0:74 direct index (layout( location=5) smooth temp 4-component vector of float) 0:74 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 move second child to first child ( temp 4-component vector of float) 0:75 direct index (layout( location=5) smooth temp 4-component vector of float) 0:75 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 move second child to first child ( temp 4-component vector of float) 0:76 a5: direct index for structure (layout( location=4) out 4-component vector of float) 0:76 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:76 Constant: 0:76 0 (const uint) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 move second child to first child ( temp 4-component vector of float) 0:77 direct index (layout( location=8) temp 4-component vector of float) 0:77 a6: direct index for structure (layout( location=8) out 2-element array of 4-component vector of float) 0:77 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:77 Constant: 0:77 1 (const uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 move second child to first child ( temp 4-component vector of float) 0:78 direct index (layout( location=8) temp 4-component vector of float) 0:78 a6: direct index for structure (layout( location=8) out 2-element array of 4-component vector of float) 0:78 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:78 Constant: 0:78 1 (const uint) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 move second child to first child ( temp 4-component vector of float) 0:79 direct index (layout( location=10) temp 4-component vector of float) 0:79 a7: direct index for structure (layout( location=10) out 2-element array of 4-component vector of float) 0:79 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:79 Constant: 0:79 2 (const uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 move second child to first child ( temp 4-component vector of float) 0:80 direct index (layout( location=10) temp 4-component vector of float) 0:80 a7: direct index for structure (layout( location=10) out 2-element array of 4-component vector of float) 0:80 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:80 Constant: 0:80 2 (const uint) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 move second child to first child ( temp float) 0:81 a8: direct index for structure (layout( location=12) out float) 0:81 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:81 Constant: 0:81 0 (const uint) 0:81 Constant: 0:81 0.000000 0:82 move second child to first child ( temp float) 0:82 direct index ( temp float) 0:82 direct index (layout( location=15) temp 2-component vector of float) 0:82 a9: direct index for structure (layout( location=15) out 2-element array of 2-component vector of float) 0:82 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:82 Constant: 0:82 1 (const uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0.000000 0:83 move second child to first child ( temp float) 0:83 direct index ( temp float) 0:83 direct index (layout( location=15) temp 2-component vector of float) 0:83 a9: direct index for structure (layout( location=15) out 2-element array of 2-component vector of float) 0:83 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:83 Constant: 0:83 1 (const uint) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0.000000 0:84 move second child to first child ( temp 4-component vector of float) 0:84 direct index (layout( location=17) temp 4-component vector of float) 0:84 a10: direct index for structure (layout( location=17) out 2-element array of 4-component vector of float) 0:84 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:84 Constant: 0:84 2 (const uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 move second child to first child ( temp 4-component vector of float) 0:85 direct index (layout( location=17) temp 4-component vector of float) 0:85 a10: direct index for structure (layout( location=17) out 2-element array of 4-component vector of float) 0:85 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:85 Constant: 0:85 2 (const uint) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 move second child to first child ( temp float) 0:86 direct index ( temp float) 0:86 a: direct index for structure ( global 3-element array of float) 0:86 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:86 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:86 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:86 Constant: 0:86 3 (const uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0.000000 0:87 move second child to first child ( temp float) 0:87 direct index ( temp float) 0:87 a: direct index for structure ( global 3-element array of float) 0:87 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:87 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:87 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:87 Constant: 0:87 3 (const uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0.000000 0:88 move second child to first child ( temp float) 0:88 direct index ( temp float) 0:88 a: direct index for structure ( global 3-element array of float) 0:88 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:88 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:88 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:88 Constant: 0:88 3 (const uint) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0.000000 0:89 move second child to first child ( temp float) 0:89 b: direct index for structure ( global float) 0:89 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:89 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:89 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:89 Constant: 0:89 3 (const uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0.000000 0:90 move second child to first child ( temp float) 0:90 direct index ( temp float) 0:90 a: direct index for structure ( global 3-element array of float) 0:90 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:90 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:90 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:90 Constant: 0:90 3 (const uint) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0.000000 0:91 move second child to first child ( temp float) 0:91 direct index ( temp float) 0:91 a: direct index for structure ( global 3-element array of float) 0:91 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:91 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:91 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0.000000 0:92 move second child to first child ( temp float) 0:92 direct index ( temp float) 0:92 a: direct index for structure ( global 3-element array of float) 0:92 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:92 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:92 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:92 Constant: 0:92 3 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.000000 0:93 move second child to first child ( temp float) 0:93 b: direct index for structure ( global float) 0:93 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:93 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:93 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:93 Constant: 0:93 3 (const uint) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0.000000 0:94 move second child to first child ( temp float) 0:94 direct index (layout( location=27) smooth temp float) 0:94 'a12' (layout( location=27) smooth out 3-element array of float) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0.000000 0:95 move second child to first child ( temp float) 0:95 direct index (layout( location=27) smooth temp float) 0:95 'a12' (layout( location=27) smooth out 3-element array of float) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0.000000 0:96 move second child to first child ( temp float) 0:96 direct index (layout( location=27) smooth temp float) 0:96 'a12' (layout( location=27) smooth out 3-element array of float) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0.000000 0:97 move second child to first child ( temp float) 0:97 direct index ( temp float) 0:97 a13: direct index for structure ( global 2-component vector of float) 0:97 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 0.000000 0:98 move second child to first child ( temp float) 0:98 direct index ( temp float) 0:98 a: direct index for structure ( global 3-element array of float) 0:98 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:98 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0.000000 0:99 move second child to first child ( temp float) 0:99 direct index ( temp float) 0:99 a: direct index for structure ( global 3-element array of float) 0:99 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:99 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0.000000 0:100 move second child to first child ( temp float) 0:100 direct index ( temp float) 0:100 a: direct index for structure ( global 3-element array of float) 0:100 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:100 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 0.000000 0:101 move second child to first child ( temp float) 0:101 b: direct index for structure ( global float) 0:101 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:101 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp 4X4 matrix of float) 0:102 a15: direct index for structure ( global 4X4 matrix of float) 0:102 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:104 move second child to first child ( temp 4-component vector of float) 0:104 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:104 'a17' (layout( location=46) smooth out 4-element array of 4-component vector of float) 0:104 i: direct index for structure (layout( column_major shared) uniform int) 0:104 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:105 move second child to first child ( temp 4-component vector of float) 0:105 direct index ( temp 4-component vector of float) 0:105 a18: direct index for structure ( out 10-element array of 4-component vector of float) 0:105 'anon@4' (layout( location=50) out block{ out 10-element array of 4-component vector of float a18}) 0:105 Constant: 0:105 0 (const uint) 0:105 Constant: 0:105 5 (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 2-component vector of float) 0:106 a19: direct index for structure (layout( location=60) out 2-component vector of float) 0:106 'anon@5' ( out block{layout( location=60) out 2-component vector of float a19}) 0:106 Constant: 0:106 0 (const uint) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:107 move second child to first child ( temp 4-component vector of float) 0:107 a20: direct index for structure ( out 4-component vector of float) 0:107 'anon@6' ( out block{ out 4-component vector of float a20}) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:108 move second child to first child ( temp 2-component vector of float) 0:108 direct index ( smooth temp 2-component vector of float) 0:108 'a21' ( smooth out 2-element array of 2-component vector of float) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 0.000000 0:108 0.000000 0:109 move second child to first child ( temp 2-component vector of float) 0:109 direct index ( smooth temp 2-component vector of float) 0:109 'a21' ( smooth out 2-element array of 2-component vector of float) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0.000000 0:109 0.000000 0:? Linker Objects 0:? 'a0' (layout( location=40) smooth out 4-component vector of float) 0:? 'anon@0' (layout( location=1) out block{ out 4-component vector of float a1}) 0:? 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:? 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:? 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:? 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:? 'a12' (layout( location=27) smooth out 3-element array of float) 0:? 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:? 'a16' (layout( location=39) smooth out float) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'a17' (layout( location=46) smooth out 4-element array of 4-component vector of float) 0:? 'anon@4' (layout( location=50) out block{ out 10-element array of 4-component vector of float a18}) 0:? 'anon@5' ( out block{layout( location=60) out 2-component vector of float a19}) 0:? 'anon@6' ( out block{ out 4-component vector of float a20}) 0:? 'a21' ( smooth out 2-element array of 2-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.crossStageIO.1.geom Shader version: 460 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:28 Function Definition: main( ( global void) 0:28 Function Parameters: 0:29 Sequence 0:29 Sequence 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'i' ( temp int) 0:29 Constant: 0:29 0 (const int) 0:29 Loop with condition tested first 0:29 Loop Condition 0:29 Compare Less Than ( temp bool) 0:29 'i' ( temp int) 0:29 Constant: 0:29 32 (const int) 0:29 Loop Body 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:30 indirect index (layout( location=0 stream=0) temp 4-component vector of float) 0:30 'o0' (layout( location=0 stream=0) out 64-element array of 4-component vector of float) 0:30 'i' ( temp int) 0:30 indirect index (layout( location=0) temp 4-component vector of float) 0:30 a0: direct index for structure (layout( location=0) in 64-element array of 4-component vector of float) 0:30 direct index ( temp block{layout( location=0) in 64-element array of 4-component vector of float a0}) 0:30 'gs_in1' ( in 3-element array of block{layout( location=0) in 64-element array of 4-component vector of float a0}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 'i' ( temp int) 0:29 Loop Terminal Expression 0:29 Pre-Increment ( temp int) 0:29 'i' ( temp int) 0:33 move second child to first child ( temp 4-component vector of float) 0:33 a20: direct index for structure (layout( stream=0) out 4-component vector of float) 0:33 'gs_out0' (layout( stream=0) out block{layout( stream=0) out 4-component vector of float a20}) 0:33 Constant: 0:33 0 (const int) 0:33 a20: direct index for structure ( in 4-component vector of float) 0:33 direct index ( temp block{ in 4-component vector of float a20}) 0:33 'gs_in0' ( in 3-element array of block{ in 4-component vector of float a20}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 move second child to first child ( temp 2-component vector of float) 0:34 direct index (layout( stream=0) temp 2-component vector of float) 0:34 'g_a21' (layout( stream=0) out 2-element array of 2-component vector of float) 0:34 Constant: 0:34 0 (const int) 0:34 direct index ( temp 2-component vector of float) 0:34 direct index ( temp 2-element array of 2-component vector of float) 0:34 'a21' ( in 3-element array of 2-element array of 2-component vector of float) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp 2-component vector of float) 0:35 direct index (layout( stream=0) temp 2-component vector of float) 0:35 'g_a21' (layout( stream=0) out 2-element array of 2-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 direct index ( temp 2-component vector of float) 0:35 direct index ( temp 2-element array of 2-component vector of float) 0:35 'a21' ( in 3-element array of 2-element array of 2-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:37 '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, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance}) 0:37 Constant: 0:37 0 (const uint) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:39 EmitVertex ( global void) 0:40 EmitVertex ( global void) 0:41 EmitVertex ( global void) 0:? Linker Objects 0:? 'gs_in0' ( in 3-element array of block{ in 4-component vector of float a20}) 0:? 'a21' ( in 3-element array of 2-element array of 2-component vector of float) 0:? 'gs_out0' (layout( stream=0) out block{layout( stream=0) out 4-component vector of float a20}) 0:? 'g_a21' (layout( stream=0) out 2-element array of 2-component vector of float) 0:? 'gs_in1' ( in 3-element array of block{layout( location=0) in 64-element array of 4-component vector of float a0}) 0:? 'o0' (layout( location=0 stream=0) out 64-element array of 4-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, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance}) link.crossStageIO.1.frag Shader version: 460 0:? Sequence 0:71 Function Definition: uncalled( ( global uint) 0:71 Function Parameters: 0:72 Sequence 0:72 Branch: Return with expression 0:72 'b16' ( flat in uint) 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'o' ( out 4-component vector of float) 0:76 b1: direct index for structure ( in 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp 4-component vector of float) 0:77 'o' ( out 4-component vector of float) 0:77 b2: direct index for structure ( in 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp 4-component vector of float) 0:78 'o' ( out 4-component vector of float) 0:78 b3: direct index for structure ( in 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'o' ( out 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'o' ( out 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp 4-component vector of float) 0:81 'o' ( out 4-component vector of float) 0:81 b5: direct index for structure ( in 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp 4-component vector of float) 0:82 'o' ( out 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'o' ( out 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp 4-component vector of float) 0:84 'o' ( out 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp 4-component vector of float) 0:85 'o' ( out 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp 4-component vector of float) 0:86 'o' ( out 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp 4-component vector of float) 0:87 'o' ( out 4-component vector of float) 0:87 Construct vec4 ( temp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp 4-component vector of float) 0:88 'o' ( out 4-component vector of float) 0:88 vector swizzle ( temp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp 4-component vector of float) 0:89 'o' ( out 4-component vector of float) 0:89 Construct vec4 ( temp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in float) 0:89 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp 4-component vector of float) 0:90 'o' ( out 4-component vector of float) 0:90 vector swizzle ( temp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp 4-component vector of float) 0:91 'o' ( out 4-component vector of float) 0:91 Construct vec4 ( temp 4-component vector of float) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp 4-component vector of float) 0:92 'o' ( out 4-component vector of float) 0:92 Construct vec4 ( temp 4-component vector of float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp float) 0:92 add ( temp float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'o' ( out 4-component vector of float) 0:93 Construct vec4 ( temp 4-component vector of float) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp 4-component vector of float) 0:95 'o' ( out 4-component vector of float) 0:95 vector swizzle ( temp 4-component vector of float) 0:95 matrix-times-vector ( temp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp 4-component vector of float) 0:96 'o' ( out 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp 4-component vector of float) 0:97 'o' ( out 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp 4-component vector of float) 0:99 'o' ( out 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:99 i: direct index for structure (layout( column_major shared) uniform int) 0:99 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp 4-component vector of float) 0:100 'o' ( out 4-component vector of float) 0:100 indirect index ( temp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major shared) uniform int) 0:100 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp 4-component vector of float) 0:101 'o' ( out 4-component vector of float) 0:101 vector swizzle ( temp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp 4-component vector of float) 0:102 'o' ( out 4-component vector of float) 0:102 a20: direct index for structure ( in 4-component vector of float) 0:102 'anon@8' ( in block{ in 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp 4-component vector of float) 0:103 'o' ( out 4-component vector of float) 0:103 Construct vec4 ( temp 4-component vector of float) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'g_a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'g_a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of float) 0:? 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:? 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:? 'b16' ( flat in uint) 0:? 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in 2-component vector of float) 0:? 'anon@8' ( in block{ in 4-component vector of float a20}) 0:? 'g_a21' ( smooth in 2-element array of 2-component vector of float) 0:? 'o' ( out 4-component vector of float) Linked vertex stage: Linked geometry stage: Linked fragment stage: Shader version: 460 0:? Sequence 0:66 Function Definition: main( ( global void) 0:66 Function Parameters: 0:67 Sequence 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Constant: 0:67 false (const bool) 0:67 true case 0:68 Sequence 0:68 move second child to first child ( temp 4-component vector of float) 0:68 'a0' (layout( location=40) smooth out 4-component vector of float) 0:68 Constant: 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:70 move second child to first child ( temp 4-component vector of float) 0:70 a1: direct index for structure ( out 4-component vector of float) 0:70 'anon@0' (layout( location=1) out block{ out 4-component vector of float a1}) 0:70 Constant: 0:70 0 (const uint) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp 4-component vector of float) 0:71 a2: direct index for structure (layout( location=3) out 4-component vector of float) 0:71 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:71 Constant: 0:71 0 (const uint) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 move second child to first child ( temp 4-component vector of float) 0:72 a3: direct index for structure (layout( location=2) out 4-component vector of float) 0:72 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:72 Constant: 0:72 1 (const uint) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 move second child to first child ( temp 4-component vector of float) 0:73 direct index (layout( location=5) smooth temp 4-component vector of float) 0:73 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 move second child to first child ( temp 4-component vector of float) 0:74 direct index (layout( location=5) smooth temp 4-component vector of float) 0:74 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 move second child to first child ( temp 4-component vector of float) 0:75 direct index (layout( location=5) smooth temp 4-component vector of float) 0:75 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 move second child to first child ( temp 4-component vector of float) 0:76 a5: direct index for structure (layout( location=4) out 4-component vector of float) 0:76 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:76 Constant: 0:76 0 (const uint) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 move second child to first child ( temp 4-component vector of float) 0:77 direct index (layout( location=8) temp 4-component vector of float) 0:77 a6: direct index for structure (layout( location=8) out 2-element array of 4-component vector of float) 0:77 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:77 Constant: 0:77 1 (const uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 move second child to first child ( temp 4-component vector of float) 0:78 direct index (layout( location=8) temp 4-component vector of float) 0:78 a6: direct index for structure (layout( location=8) out 2-element array of 4-component vector of float) 0:78 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:78 Constant: 0:78 1 (const uint) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 move second child to first child ( temp 4-component vector of float) 0:79 direct index (layout( location=10) temp 4-component vector of float) 0:79 a7: direct index for structure (layout( location=10) out 2-element array of 4-component vector of float) 0:79 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:79 Constant: 0:79 2 (const uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 move second child to first child ( temp 4-component vector of float) 0:80 direct index (layout( location=10) temp 4-component vector of float) 0:80 a7: direct index for structure (layout( location=10) out 2-element array of 4-component vector of float) 0:80 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:80 Constant: 0:80 2 (const uint) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 move second child to first child ( temp float) 0:81 a8: direct index for structure (layout( location=12) out float) 0:81 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:81 Constant: 0:81 0 (const uint) 0:81 Constant: 0:81 0.000000 0:82 move second child to first child ( temp float) 0:82 direct index ( temp float) 0:82 direct index (layout( location=15) temp 2-component vector of float) 0:82 a9: direct index for structure (layout( location=15) out 2-element array of 2-component vector of float) 0:82 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:82 Constant: 0:82 1 (const uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0.000000 0:83 move second child to first child ( temp float) 0:83 direct index ( temp float) 0:83 direct index (layout( location=15) temp 2-component vector of float) 0:83 a9: direct index for structure (layout( location=15) out 2-element array of 2-component vector of float) 0:83 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:83 Constant: 0:83 1 (const uint) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0.000000 0:84 move second child to first child ( temp 4-component vector of float) 0:84 direct index (layout( location=17) temp 4-component vector of float) 0:84 a10: direct index for structure (layout( location=17) out 2-element array of 4-component vector of float) 0:84 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:84 Constant: 0:84 2 (const uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 move second child to first child ( temp 4-component vector of float) 0:85 direct index (layout( location=17) temp 4-component vector of float) 0:85 a10: direct index for structure (layout( location=17) out 2-element array of 4-component vector of float) 0:85 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:85 Constant: 0:85 2 (const uint) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 move second child to first child ( temp float) 0:86 direct index ( temp float) 0:86 a: direct index for structure ( global 3-element array of float) 0:86 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:86 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:86 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:86 Constant: 0:86 3 (const uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0.000000 0:87 move second child to first child ( temp float) 0:87 direct index ( temp float) 0:87 a: direct index for structure ( global 3-element array of float) 0:87 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:87 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:87 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:87 Constant: 0:87 3 (const uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0.000000 0:88 move second child to first child ( temp float) 0:88 direct index ( temp float) 0:88 a: direct index for structure ( global 3-element array of float) 0:88 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:88 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:88 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:88 Constant: 0:88 3 (const uint) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0.000000 0:89 move second child to first child ( temp float) 0:89 b: direct index for structure ( global float) 0:89 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:89 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:89 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:89 Constant: 0:89 3 (const uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0.000000 0:90 move second child to first child ( temp float) 0:90 direct index ( temp float) 0:90 a: direct index for structure ( global 3-element array of float) 0:90 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:90 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:90 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:90 Constant: 0:90 3 (const uint) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0.000000 0:91 move second child to first child ( temp float) 0:91 direct index ( temp float) 0:91 a: direct index for structure ( global 3-element array of float) 0:91 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:91 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:91 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0.000000 0:92 move second child to first child ( temp float) 0:92 direct index ( temp float) 0:92 a: direct index for structure ( global 3-element array of float) 0:92 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:92 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:92 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:92 Constant: 0:92 3 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.000000 0:93 move second child to first child ( temp float) 0:93 b: direct index for structure ( global float) 0:93 direct index (layout( location=19) temp structure{ global 3-element array of float a, global float b}) 0:93 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b}) 0:93 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:93 Constant: 0:93 3 (const uint) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0.000000 0:94 move second child to first child ( temp float) 0:94 direct index (layout( location=27) smooth temp float) 0:94 'a12' (layout( location=27) smooth out 3-element array of float) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0.000000 0:95 move second child to first child ( temp float) 0:95 direct index (layout( location=27) smooth temp float) 0:95 'a12' (layout( location=27) smooth out 3-element array of float) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0.000000 0:96 move second child to first child ( temp float) 0:96 direct index (layout( location=27) smooth temp float) 0:96 'a12' (layout( location=27) smooth out 3-element array of float) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0.000000 0:97 move second child to first child ( temp float) 0:97 direct index ( temp float) 0:97 a13: direct index for structure ( global 2-component vector of float) 0:97 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 0.000000 0:98 move second child to first child ( temp float) 0:98 direct index ( temp float) 0:98 a: direct index for structure ( global 3-element array of float) 0:98 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:98 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0.000000 0:99 move second child to first child ( temp float) 0:99 direct index ( temp float) 0:99 a: direct index for structure ( global 3-element array of float) 0:99 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:99 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0.000000 0:100 move second child to first child ( temp float) 0:100 direct index ( temp float) 0:100 a: direct index for structure ( global 3-element array of float) 0:100 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:100 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 0.000000 0:101 move second child to first child ( temp float) 0:101 b: direct index for structure ( global float) 0:101 a14: direct index for structure ( global structure{ global 3-element array of float a, global float b}) 0:101 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp 4X4 matrix of float) 0:102 a15: direct index for structure ( global 4X4 matrix of float) 0:102 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:104 move second child to first child ( temp 4-component vector of float) 0:104 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:104 'a17' (layout( location=46) smooth out 4-element array of 4-component vector of float) 0:104 i: direct index for structure (layout( column_major shared) uniform int) 0:104 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:105 move second child to first child ( temp 4-component vector of float) 0:105 direct index ( temp 4-component vector of float) 0:105 a18: direct index for structure ( out 10-element array of 4-component vector of float) 0:105 'anon@4' (layout( location=50) out block{ out 10-element array of 4-component vector of float a18}) 0:105 Constant: 0:105 0 (const uint) 0:105 Constant: 0:105 5 (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 2-component vector of float) 0:106 a19: direct index for structure (layout( location=60) out 2-component vector of float) 0:106 'anon@5' ( out block{layout( location=60) out 2-component vector of float a19}) 0:106 Constant: 0:106 0 (const uint) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:107 move second child to first child ( temp 4-component vector of float) 0:107 a20: direct index for structure ( out 4-component vector of float) 0:107 'anon@6' ( out block{ out 4-component vector of float a20}) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:108 move second child to first child ( temp 2-component vector of float) 0:108 direct index ( smooth temp 2-component vector of float) 0:108 'a21' ( smooth out 2-element array of 2-component vector of float) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 0.000000 0:108 0.000000 0:109 move second child to first child ( temp 2-component vector of float) 0:109 direct index ( smooth temp 2-component vector of float) 0:109 'a21' ( smooth out 2-element array of 2-component vector of float) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0.000000 0:109 0.000000 0:? Linker Objects 0:? 'a0' (layout( location=40) smooth out 4-component vector of float) 0:? 'anon@0' (layout( location=1) out block{ out 4-component vector of float a1}) 0:? 'anon@1' ( out block{layout( location=3) out 4-component vector of float a2, layout( location=2) out 4-component vector of float a3}) 0:? 'a4' (layout( location=5) smooth out 3-element array of 4-component vector of float) 0:? 'anon@2' ( out block{layout( location=4) out 4-component vector of float a5, layout( location=8) out 2-element array of 4-component vector of float a6, layout( location=10) out 2-element array of 4-component vector of float a7}) 0:? 'anon@3' ( out block{layout( location=12) out float a8, layout( location=15) out 2-element array of 2-component vector of float a9, layout( location=17) out 2-element array of 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of float a, global float b} a11}) 0:? 'a12' (layout( location=27) smooth out 3-element array of float) 0:? 's0' (layout( location=30) smooth out structure{ global 2-component vector of float a13, global structure{ global 3-element array of float a, global float b} a14, global 4X4 matrix of float a15}) 0:? 'a16' (layout( location=39) smooth out float) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'a17' (layout( location=46) smooth out 4-element array of 4-component vector of float) 0:? 'anon@4' (layout( location=50) out block{ out 10-element array of 4-component vector of float a18}) 0:? 'anon@5' ( out block{layout( location=60) out 2-component vector of float a19}) 0:? 'anon@6' ( out block{ out 4-component vector of float a20}) 0:? 'a21' ( smooth out 2-element array of 2-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:28 Function Definition: main( ( global void) 0:28 Function Parameters: 0:29 Sequence 0:29 Sequence 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'i' ( temp int) 0:29 Constant: 0:29 0 (const int) 0:29 Loop with condition tested first 0:29 Loop Condition 0:29 Compare Less Than ( temp bool) 0:29 'i' ( temp int) 0:29 Constant: 0:29 32 (const int) 0:29 Loop Body 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of float) 0:30 indirect index (layout( location=0 stream=0) temp 4-component vector of float) 0:30 'o0' (layout( location=0 stream=0) out 64-element array of 4-component vector of float) 0:30 'i' ( temp int) 0:30 indirect index (layout( location=0) temp 4-component vector of float) 0:30 a0: direct index for structure (layout( location=0) in 64-element array of 4-component vector of float) 0:30 direct index ( temp block{layout( location=0) in 64-element array of 4-component vector of float a0}) 0:30 'gs_in1' ( in 3-element array of block{layout( location=0) in 64-element array of 4-component vector of float a0}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 'i' ( temp int) 0:29 Loop Terminal Expression 0:29 Pre-Increment ( temp int) 0:29 'i' ( temp int) 0:33 move second child to first child ( temp 4-component vector of float) 0:33 a20: direct index for structure (layout( stream=0) out 4-component vector of float) 0:33 'gs_out0' (layout( stream=0) out block{layout( stream=0) out 4-component vector of float a20}) 0:33 Constant: 0:33 0 (const int) 0:33 a20: direct index for structure ( in 4-component vector of float) 0:33 direct index ( temp block{ in 4-component vector of float a20}) 0:33 'gs_in0' ( in 3-element array of block{ in 4-component vector of float a20}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 move second child to first child ( temp 2-component vector of float) 0:34 direct index (layout( stream=0) temp 2-component vector of float) 0:34 'g_a21' (layout( stream=0) out 2-element array of 2-component vector of float) 0:34 Constant: 0:34 0 (const int) 0:34 direct index ( temp 2-component vector of float) 0:34 direct index ( temp 2-element array of 2-component vector of float) 0:34 'a21' ( in 3-element array of 2-element array of 2-component vector of float) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp 2-component vector of float) 0:35 direct index (layout( stream=0) temp 2-component vector of float) 0:35 'g_a21' (layout( stream=0) out 2-element array of 2-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 direct index ( temp 2-component vector of float) 0:35 direct index ( temp 2-element array of 2-component vector of float) 0:35 'a21' ( in 3-element array of 2-element array of 2-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:37 '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, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance}) 0:37 Constant: 0:37 0 (const uint) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:39 EmitVertex ( global void) 0:40 EmitVertex ( global void) 0:41 EmitVertex ( global void) 0:? Linker Objects 0:? 'gs_in0' ( in 3-element array of block{ in 4-component vector of float a20}) 0:? 'a21' ( in 3-element array of 2-element array of 2-component vector of float) 0:? 'gs_out0' (layout( stream=0) out block{layout( stream=0) out 4-component vector of float a20}) 0:? 'g_a21' (layout( stream=0) out 2-element array of 2-component vector of float) 0:? 'gs_in1' ( in 3-element array of block{layout( location=0) in 64-element array of 4-component vector of float a0}) 0:? 'o0' (layout( location=0 stream=0) out 64-element array of 4-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, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance}) Shader version: 460 0:? Sequence 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'o' ( out 4-component vector of float) 0:76 b1: direct index for structure ( in 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp 4-component vector of float) 0:77 'o' ( out 4-component vector of float) 0:77 b2: direct index for structure ( in 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp 4-component vector of float) 0:78 'o' ( out 4-component vector of float) 0:78 b3: direct index for structure ( in 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'o' ( out 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'o' ( out 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp 4-component vector of float) 0:81 'o' ( out 4-component vector of float) 0:81 b5: direct index for structure ( in 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp 4-component vector of float) 0:82 'o' ( out 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'o' ( out 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp 4-component vector of float) 0:84 'o' ( out 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp 4-component vector of float) 0:85 'o' ( out 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp 4-component vector of float) 0:86 'o' ( out 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp 4-component vector of float) 0:87 'o' ( out 4-component vector of float) 0:87 Construct vec4 ( temp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp 4-component vector of float) 0:88 'o' ( out 4-component vector of float) 0:88 vector swizzle ( temp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp 4-component vector of float) 0:89 'o' ( out 4-component vector of float) 0:89 Construct vec4 ( temp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in float) 0:89 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp 4-component vector of float) 0:90 'o' ( out 4-component vector of float) 0:90 vector swizzle ( temp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp 4-component vector of float) 0:91 'o' ( out 4-component vector of float) 0:91 Construct vec4 ( temp 4-component vector of float) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp 4-component vector of float) 0:92 'o' ( out 4-component vector of float) 0:92 Construct vec4 ( temp 4-component vector of float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp float) 0:92 add ( temp float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'o' ( out 4-component vector of float) 0:93 Construct vec4 ( temp 4-component vector of float) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp 4-component vector of float) 0:95 'o' ( out 4-component vector of float) 0:95 vector swizzle ( temp 4-component vector of float) 0:95 matrix-times-vector ( temp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp 4-component vector of float) 0:96 'o' ( out 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp 4-component vector of float) 0:97 'o' ( out 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp 4-component vector of float) 0:99 'o' ( out 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:99 i: direct index for structure (layout( column_major shared) uniform int) 0:99 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp 4-component vector of float) 0:100 'o' ( out 4-component vector of float) 0:100 indirect index ( temp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major shared) uniform int) 0:100 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp 4-component vector of float) 0:101 'o' ( out 4-component vector of float) 0:101 vector swizzle ( temp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp 4-component vector of float) 0:102 'o' ( out 4-component vector of float) 0:102 a20: direct index for structure ( in 4-component vector of float) 0:102 'anon@8' ( in block{ in 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp 4-component vector of float) 0:103 'o' ( out 4-component vector of float) 0:103 Construct vec4 ( temp 4-component vector of float) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'g_a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'g_a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of float) 0:? 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:? 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:? 'b16' ( flat in uint) 0:? 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in 2-component vector of float) 0:? 'anon@8' ( in block{ in 4-component vector of float a20}) 0:? 'g_a21' ( smooth in 2-element array of 2-component vector of float) 0:? 'o' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/link.crossStageOptimization.out000066400000000000000000000273321506534232700246670ustar00rootroot00000000000000link.crossStageOptimization.vert link.crossStageOptimization.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 88 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 60 84 Source GLSL 440 Name 4 "main" Name 9 "a0" Name 10 "AccessedUniformBlock" MemberName 10(AccessedUniformBlock) 0 "a" MemberName 10(AccessedUniformBlock) 1 "b" Name 12 "" Name 21 "AccessedStorageBlock" MemberName 21(AccessedStorageBlock) 0 "e" Name 23 "" Name 32 "uSampler0" Name 41 "a1" Name 42 "NotAccessedUniformBlock" MemberName 42(NotAccessedUniformBlock) 0 "c" MemberName 42(NotAccessedUniformBlock) 1 "d" Name 44 "" Name 48 "NotAccessedStorageBlock" MemberName 48(NotAccessedStorageBlock) 0 "f" Name 50 "" Name 56 "uSampler1" Name 60 "a2" Name 70 "a3" Name 82 "gl_PerVertex" MemberName 82(gl_PerVertex) 0 "gl_Position" MemberName 82(gl_PerVertex) 1 "gl_PointSize" MemberName 82(gl_PerVertex) 2 "gl_ClipDistance" Name 84 "" Decorate 9(a0) Location 0 Decorate 10(AccessedUniformBlock) Block MemberDecorate 10(AccessedUniformBlock) 0 Offset 0 MemberDecorate 10(AccessedUniformBlock) 1 Offset 16 Decorate 12 Binding 0 Decorate 12 DescriptorSet 0 Decorate 20 ArrayStride 4 Decorate 21(AccessedStorageBlock) BufferBlock MemberDecorate 21(AccessedStorageBlock) 0 Offset 0 Decorate 23 Binding 2 Decorate 23 DescriptorSet 0 Decorate 32(uSampler0) Binding 4 Decorate 32(uSampler0) DescriptorSet 0 Decorate 42(NotAccessedUniformBlock) Block MemberDecorate 42(NotAccessedUniformBlock) 0 Offset 0 MemberDecorate 42(NotAccessedUniformBlock) 1 Offset 16 Decorate 44 Binding 1 Decorate 44 DescriptorSet 0 Decorate 47 ArrayStride 4 Decorate 48(NotAccessedStorageBlock) BufferBlock MemberDecorate 48(NotAccessedStorageBlock) 0 Offset 0 Decorate 50 Binding 3 Decorate 50 DescriptorSet 0 Decorate 56(uSampler1) Binding 5 Decorate 56(uSampler1) DescriptorSet 0 Decorate 60(a2) Location 2 Decorate 82(gl_PerVertex) Block MemberDecorate 82(gl_PerVertex) 0 BuiltIn Position MemberDecorate 82(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 82(gl_PerVertex) 2 BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(a0): 8(ptr) Variable Output 10(AccessedUniformBlock): TypeStruct 7(fvec4) 7(fvec4) 11: TypePointer Uniform 10(AccessedUniformBlock) 12: 11(ptr) Variable Uniform 13: TypeInt 32 1 14: 13(int) Constant 0 15: TypePointer Uniform 7(fvec4) 18: TypeInt 32 0 19: 18(int) Constant 512 20: TypeArray 6(float) 19 21(AccessedStorageBlock): TypeStruct 20 22: TypePointer Uniform 21(AccessedStorageBlock) 23: 22(ptr) Variable Uniform 24: TypePointer Uniform 6(float) 29: TypeImage 6(float) 2D sampled format:Unknown 30: TypeSampledImage 29 31: TypePointer UniformConstant 30 32(uSampler0): 31(ptr) Variable UniformConstant 34: TypeVector 6(float) 2 35: 6(float) Constant 1056964608 36: 34(fvec2) ConstantComposite 35 35 37: 6(float) Constant 0 40: TypePointer Private 7(fvec4) 41(a1): 40(ptr) Variable Private 42(NotAccessedUniformBlock): TypeStruct 7(fvec4) 7(fvec4) 43: TypePointer Uniform 42(NotAccessedUniformBlock) 44: 43(ptr) Variable Uniform 47: TypeArray 6(float) 19 48(NotAccessedStorageBlock): TypeStruct 47 49: TypePointer Uniform 48(NotAccessedStorageBlock) 50: 49(ptr) Variable Uniform 51: 13(int) Constant 1 56(uSampler1): 31(ptr) Variable UniformConstant 60(a2): 8(ptr) Variable Output 70(a3): 40(ptr) Variable Private 80: 18(int) Constant 1 81: TypeArray 6(float) 80 82(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 81 83: TypePointer Output 82(gl_PerVertex) 84: 83(ptr) Variable Output 85: 6(float) Constant 1065353216 86: 7(fvec4) ConstantComposite 85 85 85 85 4(main): 2 Function None 3 5: Label 16: 15(ptr) AccessChain 12 14 17: 7(fvec4) Load 16 25: 24(ptr) AccessChain 23 14 14 26: 6(float) Load 25 27: 7(fvec4) CompositeConstruct 26 26 26 26 28: 7(fvec4) FAdd 17 27 33: 30 Load 32(uSampler0) 38: 7(fvec4) ImageSampleExplicitLod 33 36 Lod 37 39: 7(fvec4) FAdd 28 38 Store 9(a0) 39 45: 15(ptr) AccessChain 44 14 46: 7(fvec4) Load 45 52: 24(ptr) AccessChain 50 14 51 53: 6(float) Load 52 54: 7(fvec4) CompositeConstruct 53 53 53 53 55: 7(fvec4) FAdd 46 54 57: 30 Load 56(uSampler1) 58: 7(fvec4) ImageSampleExplicitLod 57 36 Lod 37 59: 7(fvec4) FAdd 55 58 Store 41(a1) 59 61: 15(ptr) AccessChain 12 51 62: 7(fvec4) Load 61 63: 24(ptr) AccessChain 23 14 14 64: 6(float) Load 63 65: 7(fvec4) CompositeConstruct 64 64 64 64 66: 7(fvec4) FAdd 62 65 67: 30 Load 32(uSampler0) 68: 7(fvec4) ImageSampleExplicitLod 67 36 Lod 37 69: 7(fvec4) FAdd 66 68 Store 60(a2) 69 71: 15(ptr) AccessChain 44 51 72: 7(fvec4) Load 71 73: 24(ptr) AccessChain 50 14 51 74: 6(float) Load 73 75: 7(fvec4) CompositeConstruct 74 74 74 74 76: 7(fvec4) FAdd 72 75 77: 30 Load 56(uSampler1) 78: 7(fvec4) ImageSampleExplicitLod 77 36 Lod 37 79: 7(fvec4) FAdd 76 78 Store 70(a3) 79 87: 8(ptr) AccessChain 84 14 Store 87 86 Return FunctionEnd // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 17 21 38 ExecutionMode 4 OriginUpperLeft Source GLSL 440 Name 4 "main" Name 9 "temp" Name 17 "a0" Name 21 "a2" Name 29 "a1" Name 33 "a3" Name 38 "oColor" Decorate 17(a0) Location 0 Decorate 21(a2) Location 2 Decorate 38(oColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 1065353216 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeBool 13: 12(bool) ConstantTrue 16: TypePointer Input 7(fvec4) 17(a0): 16(ptr) Variable Input 21(a2): 16(ptr) Variable Input 25: 12(bool) ConstantFalse 28: TypePointer Private 7(fvec4) 29(a1): 28(ptr) Variable Private 33(a3): 28(ptr) Variable Private 37: TypePointer Output 7(fvec4) 38(oColor): 37(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(temp): 8(ptr) Variable Function Store 9(temp) 11 SelectionMerge 15 None BranchConditional 13 14 15 14: Label 18: 7(fvec4) Load 17(a0) 19: 7(fvec4) Load 9(temp) 20: 7(fvec4) FMul 19 18 Store 9(temp) 20 22: 7(fvec4) Load 21(a2) 23: 7(fvec4) Load 9(temp) 24: 7(fvec4) FMul 23 22 Store 9(temp) 24 Branch 15 15: Label SelectionMerge 27 None BranchConditional 25 26 27 26: Label 30: 7(fvec4) Load 29(a1) 31: 7(fvec4) Load 9(temp) 32: 7(fvec4) FMul 31 30 Store 9(temp) 32 34: 7(fvec4) Load 33(a3) 35: 7(fvec4) Load 9(temp) 36: 7(fvec4) FMul 35 34 Store 9(temp) 36 Branch 27 27: Label 39: 7(fvec4) Load 9(temp) Store 38(oColor) 39 Return FunctionEnd glslang-16.0.0/Test/baseResults/link.missingCrossStageIO.0.vert.out000066400000000000000000001401151506534232700251520ustar00rootroot00000000000000link.missingCrossStageIO.0.vert Shader version: 460 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.missingCrossStageIO.0.frag Shader version: 460 0:? Sequence 0:71 Function Definition: uncalled( ( global uint) 0:71 Function Parameters: 0:72 Sequence 0:72 Branch: Return with expression 0:72 'b16' ( flat in uint) 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'o' ( out 4-component vector of float) 0:76 b1: direct index for structure ( in 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp 4-component vector of float) 0:77 'o' ( out 4-component vector of float) 0:77 b2: direct index for structure ( in 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp 4-component vector of float) 0:78 'o' ( out 4-component vector of float) 0:78 b3: direct index for structure ( in 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'o' ( out 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'o' ( out 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp 4-component vector of float) 0:81 'o' ( out 4-component vector of float) 0:81 b5: direct index for structure ( in 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp 4-component vector of float) 0:82 'o' ( out 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'o' ( out 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp 4-component vector of float) 0:84 'o' ( out 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp 4-component vector of float) 0:85 'o' ( out 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp 4-component vector of float) 0:86 'o' ( out 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp 4-component vector of float) 0:87 'o' ( out 4-component vector of float) 0:87 Construct vec4 ( temp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp 4-component vector of float) 0:88 'o' ( out 4-component vector of float) 0:88 vector swizzle ( temp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp 4-component vector of float) 0:89 'o' ( out 4-component vector of float) 0:89 Construct vec4 ( temp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in float) 0:89 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp 4-component vector of float) 0:90 'o' ( out 4-component vector of float) 0:90 vector swizzle ( temp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp 4-component vector of float) 0:91 'o' ( out 4-component vector of float) 0:91 Construct vec4 ( temp 4-component vector of float) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp 4-component vector of float) 0:92 'o' ( out 4-component vector of float) 0:92 Construct vec4 ( temp 4-component vector of float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp float) 0:92 add ( temp float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'o' ( out 4-component vector of float) 0:93 Construct vec4 ( temp 4-component vector of float) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in unsized 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp 4-component vector of float) 0:95 'o' ( out 4-component vector of float) 0:95 vector swizzle ( temp 4-component vector of float) 0:95 matrix-times-vector ( temp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp 4-component vector of float) 0:96 'o' ( out 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp 4-component vector of float) 0:97 'o' ( out 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp 4-component vector of float) 0:99 'o' ( out 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:99 i: direct index for structure (layout( column_major shared) uniform int) 0:99 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp 4-component vector of float) 0:100 'o' ( out 4-component vector of float) 0:100 indirect index ( temp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major shared) uniform int) 0:100 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp 4-component vector of float) 0:101 'o' ( out 4-component vector of float) 0:101 vector swizzle ( temp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp 4-component vector of float) 0:102 'o' ( out 4-component vector of float) 0:102 a20: direct index for structure ( in 4-component vector of float) 0:102 'anon@8' ( in block{ in 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp 4-component vector of float) 0:103 'o' ( out 4-component vector of float) 0:103 Construct vec4 ( temp 4-component vector of float) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of float) 0:? 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:? 'anon@4' (layout( location=29) in block{ in unsized 10-element array of float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:? 'b16' ( flat in uint) 0:? 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in 2-component vector of float) 0:? 'anon@8' ( in block{ in 4-component vector of float a20}) 0:? 'a21' ( smooth in 2-element array of 2-component vector of float) 0:? 'o' ( out 4-component vector of float) Linked vertex stage: Linked fragment stage: ERROR: 0:76: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=0) in { in vec4 b0, in vec4 b1, in vec4 b2, in vec4 b3} BBlock0 ERROR: 0:77: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=0) in { in vec4 b0, in vec4 b1, in vec4 b2, in vec4 b3} BBlock0 ERROR: 0:78: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=0) in { in vec4 b0, in vec4 b1, in vec4 b2, in vec4 b3} BBlock0 ERROR: 0:79: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=4) smooth in vec4 b4[2] ERROR: 0:80: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=4) smooth in vec4 b4[2] ERROR: 0:81: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=6) in { in vec4 b5} BBlock1 ERROR: 0:82: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:83: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:84: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:85: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:86: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:87: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=12) smooth in float b7[4] ERROR: 0:87: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=12) smooth in float b7[4] ERROR: 0:87: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=12) smooth in float b7[4] ERROR: 0:87: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=12) smooth in float b7[4] ERROR: 0:88: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:89: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:90: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:91: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:91: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:91: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:91: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:93: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=29) in { in float b13[10]} BBlock4 ERROR: 0:93: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=29) in { in float b13[10]} BBlock4 ERROR: 0:93: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=29) in { in float b13[10]} BBlock4 ERROR: 0:93: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=29) in { in float b13[10]} BBlock4 ERROR: 0:99: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=46) smooth in vec4 b20[4] ERROR: 0:100: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=50) in { in vec4 b21[10]} BBlock7 ERROR: 0:101: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=60) smooth in vec2 b22 ERROR: 0:102: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in { in vec4 a20} Block0 ERROR: 0:103: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: smooth in vec2 a21[2] ERROR: 0:103: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: smooth in vec2 a21[2] Shader version: 460 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 460 0:? Sequence 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp 4-component vector of float) 0:76 'o' ( out 4-component vector of float) 0:76 b1: direct index for structure ( in 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp 4-component vector of float) 0:77 'o' ( out 4-component vector of float) 0:77 b2: direct index for structure ( in 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp 4-component vector of float) 0:78 'o' ( out 4-component vector of float) 0:78 b3: direct index for structure ( in 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'o' ( out 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'o' ( out 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp 4-component vector of float) 0:81 'o' ( out 4-component vector of float) 0:81 b5: direct index for structure ( in 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp 4-component vector of float) 0:82 'o' ( out 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'o' ( out 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp 4-component vector of float) 0:84 'o' ( out 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp 4-component vector of float) 0:85 'o' ( out 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp 4-component vector of float) 0:86 'o' ( out 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp 4-component vector of float) 0:87 'o' ( out 4-component vector of float) 0:87 Construct vec4 ( temp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp 4-component vector of float) 0:88 'o' ( out 4-component vector of float) 0:88 vector swizzle ( temp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp 4-component vector of float) 0:89 'o' ( out 4-component vector of float) 0:89 Construct vec4 ( temp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in float) 0:89 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp 4-component vector of float) 0:90 'o' ( out 4-component vector of float) 0:90 vector swizzle ( temp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp 4-component vector of float) 0:91 'o' ( out 4-component vector of float) 0:91 Construct vec4 ( temp 4-component vector of float) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of float) 0:91 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp 4-component vector of float) 0:92 'o' ( out 4-component vector of float) 0:92 Construct vec4 ( temp 4-component vector of float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp float) 0:92 add ( temp float) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp float) 0:92 b12: direct index for structure ( in 6-element array of float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'o' ( out 4-component vector of float) 0:93 Construct vec4 ( temp 4-component vector of float) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp float) 0:93 b13: direct index for structure ( in 10-element array of float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp 4-component vector of float) 0:95 'o' ( out 4-component vector of float) 0:95 vector swizzle ( temp 4-component vector of float) 0:95 matrix-times-vector ( temp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp 4-component vector of float) 0:96 'o' ( out 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp 4-component vector of float) 0:97 'o' ( out 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp 4-component vector of float) 0:99 'o' ( out 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:99 i: direct index for structure (layout( column_major shared) uniform int) 0:99 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp 4-component vector of float) 0:100 'o' ( out 4-component vector of float) 0:100 indirect index ( temp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major shared) uniform int) 0:100 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp 4-component vector of float) 0:101 'o' ( out 4-component vector of float) 0:101 vector swizzle ( temp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp 4-component vector of float) 0:102 'o' ( out 4-component vector of float) 0:102 a20: direct index for structure ( in 4-component vector of float) 0:102 'anon@8' ( in block{ in 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp 4-component vector of float) 0:103 'o' ( out 4-component vector of float) 0:103 Construct vec4 ( temp 4-component vector of float) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float b0, in 4-component vector of float b1, in 4-component vector of float b2, in 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of float) 0:? 'anon@2' ( in block{layout( location=21) in 2-component vector of float b8, layout( location=22) in float b9, layout( location=16) in 3-component vector of float b10, layout( location=17) in 4-element array of float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of float b12}) 0:? 'anon@4' (layout( location=29) in block{ in 10-element array of float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in 2X2 matrix of float) 0:? 'b16' ( flat in uint) 0:? 'anon@6' ( in block{layout( location=45) in 4-component vector of float b17, layout( location=43) in 4-component vector of float b18, layout( location=44) in 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in 2-component vector of float) 0:? 'anon@8' ( in block{ in 4-component vector of float a20}) 0:? 'a21' ( smooth in 2-element array of 2-component vector of float) 0:? 'o' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out000066400000000000000000000303111506534232700260200ustar00rootroot00000000000000link.multiAnonBlocksInvalid.0.0.vert ERROR: 0:22: 'ColorBlock' : nameless block contains a member that already has a name at global scope ERROR: 0:42: 'v1' : redefinition ERROR: 0:43: 'uProj' : redefinition ERROR: 3 compilation errors. No code generated. Shader version: 430 ERROR: node is still EOpNull! 0:46 Function Definition: main( ( global void) 0:46 Function Parameters: 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'oColor' ( smooth out 4-component vector of float) 0:48 component-wise multiply ( temp 4-component vector of float) 0:48 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:48 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2, layout( column_major std140 offset=32) uniform 4-component vector of float v1}) 0:48 Constant: 0:48 0 (const uint) 0:48 Function Call: getColor2( ( global 4-component vector of float) 0:49 move second child to first child ( temp 4-component vector of float) 0:49 v1: direct index for structure ( out 4-component vector of float) 0:49 'anon@2' ( out block{ out 4-component vector of float v1}) 0:49 Constant: 0:49 0 (const uint) 0:49 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:49 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2, layout( column_major std140 offset=32) uniform 4-component vector of float v1}) 0:49 Constant: 0:49 0 (const uint) 0:51 move second child to first child ( temp 4-component vector of float) 0:51 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:51 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:51 Constant: 0:51 0 (const uint) 0:51 matrix-times-vector ( temp 4-component vector of float) 0:51 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:51 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}) 0:51 Constant: 0:51 0 (const uint) 0:51 Function Call: getWorld( ( global 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}) 0:? 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float b}) 0:? 'anon@2' ( out block{ out 4-component vector of float v1}) 0:? 'myName' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}) 0:? 'oColor' ( smooth out 4-component vector of float) 0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.multiAnonBlocksInvalid.0.1.vert Shader version: 430 0:? Sequence 0:38 Function Definition: getColor2( ( global 4-component vector of float) 0:38 Function Parameters: 0:40 Sequence 0:40 Branch: Return with expression 0:40 color2: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:40 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}) 0:40 Constant: 0:40 0 (const uint) 0:43 Function Definition: getWorld( ( global 4-component vector of float) 0:43 Function Parameters: 0:45 Sequence 0:45 Branch: Return with expression 0:45 matrix-times-vector ( temp 4-component vector of float) 0:45 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float) 0:45 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:45 Constant: 0:45 1 (const uint) 0:45 'P' ( in 4-component vector of float) 0:46 move second child to first child ( temp 4-component vector of float) 0:46 v2: direct index for structure ( out 4-component vector of float) 0:46 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:46 Constant: 0:46 1 (const uint) 0:46 Constant: 0:46 1.000000 0:46 1.000000 0:46 1.000000 0:46 1.000000 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:? 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:? 'anon@3' (layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float a}) 0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}) 0:? 'P' ( in 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex 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! 0:46 Function Definition: main( ( global void) 0:46 Function Parameters: 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'oColor' ( smooth out 4-component vector of float) 0:48 component-wise multiply ( temp 4-component vector of float) 0:48 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:48 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2, layout( column_major std140 offset=32) uniform 4-component vector of float v1}) 0:48 Constant: 0:48 0 (const uint) 0:48 Function Call: getColor2( ( global 4-component vector of float) 0:49 move second child to first child ( temp 4-component vector of float) 0:49 v1: direct index for structure ( out 4-component vector of float) 0:49 'anon@2' ( out block{ out 4-component vector of float v1}) 0:49 Constant: 0:49 0 (const uint) 0:49 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:49 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2, layout( column_major std140 offset=32) uniform 4-component vector of float v1}) 0:49 Constant: 0:49 0 (const uint) 0:51 move second child to first child ( temp 4-component vector of float) 0:51 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:51 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:51 Constant: 0:51 0 (const uint) 0:51 matrix-times-vector ( temp 4-component vector of float) 0:51 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:51 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}) 0:51 Constant: 0:51 0 (const uint) 0:51 Function Call: getWorld( ( global 4-component vector of float) 0:38 Function Definition: getColor2( ( global 4-component vector of float) 0:38 Function Parameters: 0:40 Sequence 0:40 Branch: Return with expression 0:40 color2: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:40 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}) 0:40 Constant: 0:40 0 (const uint) 0:43 Function Definition: getWorld( ( global 4-component vector of float) 0:43 Function Parameters: 0:45 Sequence 0:45 Branch: Return with expression 0:45 matrix-times-vector ( temp 4-component vector of float) 0:45 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float) 0:45 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:45 Constant: 0:45 1 (const uint) 0:45 'P' ( in 4-component vector of float) 0:46 move second child to first child ( temp 4-component vector of float) 0:46 v2: direct index for structure ( out 4-component vector of float) 0:46 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:46 Constant: 0:46 1 (const uint) 0:46 Constant: 0:46 1.000000 0:46 1.000000 0:46 1.000000 0:46 1.000000 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}) 0:? 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float b}) 0:? 'anon@2' ( out block{ out 4-component vector of float v1}) 0:? 'myName' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}) 0:? 'oColor' ( smooth out 4-component vector of float) 0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}) 0:? 'P' ( in 4-component vector of float) glslang-16.0.0/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out000066400000000000000000000257441506534232700255070ustar00rootroot00000000000000link.multiAnonBlocksValid.0.0.vert Shader version: 430 0:? Sequence 0:32 Function Definition: main( ( global void) 0:32 Function Parameters: 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'oColor' ( smooth out 4-component vector of float) 0:34 component-wise multiply ( temp 4-component vector of float) 0:34 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:34 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:34 Constant: 0:34 0 (const uint) 0:34 Function Call: getColor2( ( global 4-component vector of float) 0:35 move second child to first child ( temp 4-component vector of float) 0:35 v1: direct index for structure ( out 4-component vector of float) 0:35 'anon@1' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:35 Constant: 0:35 0 (const uint) 0:35 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:35 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:35 Constant: 0:35 0 (const uint) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:37 'anon@3' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:37 Constant: 0:37 0 (const uint) 0:37 matrix-times-vector ( temp 4-component vector of float) 0:37 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:37 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:37 Constant: 0:37 0 (const uint) 0:37 Function Call: getWorld( ( global 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:? 'anon@1' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:? 'oColor' ( smooth out 4-component vector of float) 0:? 'anon@3' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.multiAnonBlocksValid.0.1.vert Shader version: 430 0:? Sequence 0:24 Function Definition: getColor2( ( global 4-component vector of float) 0:24 Function Parameters: 0:26 Sequence 0:26 Branch: Return with expression 0:26 color2: direct index for structure (layout( column_major std140 offset=16) uniform 4-component vector of float) 0:26 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:26 Constant: 0:26 1 (const uint) 0:29 Function Definition: getWorld( ( global 4-component vector of float) 0:29 Function Parameters: 0:31 Sequence 0:31 Branch: Return with expression 0:31 matrix-times-vector ( temp 4-component vector of float) 0:31 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float) 0:31 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:31 Constant: 0:31 1 (const uint) 0:31 'P' ( in 4-component vector of float) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 v2: direct index for structure ( out 4-component vector of float) 0:32 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:? 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:? 'P' ( in 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 430 0:? Sequence 0:32 Function Definition: main( ( global void) 0:32 Function Parameters: 0:34 Sequence 0:34 move second child to first child ( temp 4-component vector of float) 0:34 'oColor' ( smooth out 4-component vector of float) 0:34 component-wise multiply ( temp 4-component vector of float) 0:34 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:34 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:34 Constant: 0:34 0 (const uint) 0:34 Function Call: getColor2( ( global 4-component vector of float) 0:35 move second child to first child ( temp 4-component vector of float) 0:35 v1: direct index for structure ( out 4-component vector of float) 0:35 'anon@1' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:35 Constant: 0:35 0 (const uint) 0:35 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:35 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:35 Constant: 0:35 0 (const uint) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:37 'anon@3' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:37 Constant: 0:37 0 (const uint) 0:37 matrix-times-vector ( temp 4-component vector of float) 0:37 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:37 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:37 Constant: 0:37 0 (const uint) 0:37 Function Call: getWorld( ( global 4-component vector of float) 0:24 Function Definition: getColor2( ( global 4-component vector of float) 0:24 Function Parameters: 0:26 Sequence 0:26 Branch: Return with expression 0:26 color2: direct index for structure (layout( column_major std140 offset=16) uniform 4-component vector of float) 0:26 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:26 Constant: 0:26 1 (const uint) 0:29 Function Definition: getWorld( ( global 4-component vector of float) 0:29 Function Parameters: 0:31 Sequence 0:31 Branch: Return with expression 0:31 matrix-times-vector ( temp 4-component vector of float) 0:31 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float) 0:31 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:31 Constant: 0:31 1 (const uint) 0:31 'P' ( in 4-component vector of float) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 v2: direct index for structure ( out 4-component vector of float) 0:32 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:32 Constant: 0:32 1 (const uint) 0:32 Constant: 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:? 'anon@1' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:? 'oColor' ( smooth out 4-component vector of float) 0:? 'anon@3' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:? 'P' ( in 4-component vector of float) glslang-16.0.0/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out000066400000000000000000000301061506534232700252060ustar00rootroot00000000000000link.multiBlocksInvalid.0.0.vert Shader version: 430 0:? Sequence 0:34 Function Definition: main( ( global void) 0:34 Function Parameters: 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of float) 0:36 'oColor' ( smooth out 4-component vector of float) 0:36 component-wise multiply ( temp 4-component vector of float) 0:36 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:36 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}) 0:36 Constant: 0:36 0 (const int) 0:36 Function Call: getColor2( ( global 4-component vector of float) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 v1: direct index for structure ( out 4-component vector of float) 0:37 'oV' ( out block{ out 4-component vector of float v1}) 0:37 Constant: 0:37 0 (const int) 0:37 add ( temp 4-component vector of float) 0:37 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:37 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}) 0:37 Constant: 0:37 0 (const int) 0:37 color1: direct index for structure (layout( column_major std430 offset=0) buffer 4-component vector of float) 0:37 'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1}) 0:37 Constant: 0:37 0 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:39 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:39 Constant: 0:39 0 (const uint) 0:39 matrix-times-vector ( temp 4-component vector of float) 0:39 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:39 'uD' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}) 0:39 Constant: 0:39 0 (const int) 0:39 Function Call: getWorld( ( global 4-component vector of float) 0:? Linker Objects 0:? 'uD' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}) 0:? 'oV' ( out block{ out 4-component vector of float v1}) 0:? 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}) 0:? 'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1}) 0:? 'oColor' ( smooth out 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.multiBlocksInvalid.0.1.vert Shader version: 430 0:? Sequence 0:21 Function Definition: getColor2( ( global 4-component vector of float) 0:21 Function Parameters: 0:23 Sequence 0:23 Branch: Return with expression 0:23 color2: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:23 'uColorB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}) 0:23 Constant: 0:23 0 (const int) 0:26 Function Definition: getWorld( ( global 4-component vector of float) 0:26 Function Parameters: 0:28 Sequence 0:28 Branch: Return with expression 0:28 matrix-times-vector ( temp 4-component vector of float) 0:28 uWorld: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:28 'uDefaultB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld}) 0:28 Constant: 0:28 0 (const int) 0:28 'P' ( in 4-component vector of float) 0:29 move second child to first child ( temp 4-component vector of float) 0:29 v2: direct index for structure ( out 4-component vector of float) 0:29 'oVert' ( out block{ out 4-component vector of float v2}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:? Linker Objects 0:? 'uColorB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}) 0:? 'uDefaultB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld}) 0:? 'oVert' ( out block{ out 4-component vector of float v2}) 0:? 'P' ( in 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex 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 0:34 Function Definition: main( ( global void) 0:34 Function Parameters: 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of float) 0:36 'oColor' ( smooth out 4-component vector of float) 0:36 component-wise multiply ( temp 4-component vector of float) 0:36 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:36 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}) 0:36 Constant: 0:36 0 (const int) 0:36 Function Call: getColor2( ( global 4-component vector of float) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 v1: direct index for structure ( out 4-component vector of float) 0:37 'oV' ( out block{ out 4-component vector of float v1}) 0:37 Constant: 0:37 0 (const int) 0:37 add ( temp 4-component vector of float) 0:37 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:37 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}) 0:37 Constant: 0:37 0 (const int) 0:37 color1: direct index for structure (layout( column_major std430 offset=0) buffer 4-component vector of float) 0:37 'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1}) 0:37 Constant: 0:37 0 (const int) 0:39 move second child to first child ( temp 4-component vector of float) 0:39 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:39 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:39 Constant: 0:39 0 (const uint) 0:39 matrix-times-vector ( temp 4-component vector of float) 0:39 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:39 'uD' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}) 0:39 Constant: 0:39 0 (const int) 0:39 Function Call: getWorld( ( global 4-component vector of float) 0:21 Function Definition: getColor2( ( global 4-component vector of float) 0:21 Function Parameters: 0:23 Sequence 0:23 Branch: Return with expression 0:23 color2: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:23 'uColorB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}) 0:23 Constant: 0:23 0 (const int) 0:26 Function Definition: getWorld( ( global 4-component vector of float) 0:26 Function Parameters: 0:28 Sequence 0:28 Branch: Return with expression 0:28 matrix-times-vector ( temp 4-component vector of float) 0:28 uWorld: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:28 'uDefaultB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld}) 0:28 Constant: 0:28 0 (const int) 0:28 'P' ( in 4-component vector of float) 0:29 move second child to first child ( temp 4-component vector of float) 0:29 v2: direct index for structure ( out 4-component vector of float) 0:29 'oVert' ( out block{ out 4-component vector of float v2}) 0:29 Constant: 0:29 0 (const int) 0:29 Constant: 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:29 1.000000 0:? Linker Objects 0:? 'uD' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}) 0:? 'oV' ( out block{ out 4-component vector of float v1}) 0:? 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}) 0:? 'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1}) 0:? 'oColor' ( smooth out 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:? 'P' ( in 4-component vector of float) glslang-16.0.0/Test/baseResults/link.multiBlocksValid.1.0.vert.out000066400000000000000000000266741506534232700246770ustar00rootroot00000000000000link.multiBlocksValid.1.0.vert Shader version: 430 0:? Sequence 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'oColor' ( smooth out 4-component vector of float) 0:28 component-wise multiply ( temp 4-component vector of float) 0:28 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:28 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:28 Constant: 0:28 0 (const int) 0:28 Function Call: getColor2( ( global 4-component vector of float) 0:29 move second child to first child ( temp 4-component vector of float) 0:29 v1: direct index for structure ( out 4-component vector of float) 0:29 'b' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:29 Constant: 0:29 0 (const int) 0:29 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:29 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:29 Constant: 0:29 0 (const int) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:31 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:31 Constant: 0:31 0 (const uint) 0:31 matrix-times-vector ( temp 4-component vector of float) 0:31 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:31 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:31 Constant: 0:31 0 (const int) 0:31 Function Call: getWorld( ( global 4-component vector of float) 0:? Linker Objects 0:? 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:? 'b' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:? 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:? 'oColor' ( smooth out 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.multiBlocksValid.1.1.vert Shader version: 430 0:? Sequence 0:24 Function Definition: getColor2( ( global 4-component vector of float) 0:24 Function Parameters: 0:26 Sequence 0:26 Branch: Return with expression 0:26 color2: direct index for structure (layout( column_major std140 offset=16) uniform 4-component vector of float) 0:26 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:26 Constant: 0:26 1 (const int) 0:29 Function Definition: getWorld( ( global 4-component vector of float) 0:29 Function Parameters: 0:31 Sequence 0:31 Branch: Return with expression 0:31 matrix-times-vector ( temp 4-component vector of float) 0:31 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float) 0:31 'b' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:31 Constant: 0:31 1 (const int) 0:31 'P' ( in 4-component vector of float) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 v2: direct index for structure ( out 4-component vector of float) 0:32 'c' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:? Linker Objects 0:? 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:? 'b' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:? 'c' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:? 'P' ( in 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: WARNING: Linking vertex 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 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'oColor' ( smooth out 4-component vector of float) 0:28 component-wise multiply ( temp 4-component vector of float) 0:28 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:28 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:28 Constant: 0:28 0 (const int) 0:28 Function Call: getColor2( ( global 4-component vector of float) 0:29 move second child to first child ( temp 4-component vector of float) 0:29 v1: direct index for structure ( out 4-component vector of float) 0:29 'b' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:29 Constant: 0:29 0 (const int) 0:29 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float) 0:29 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:29 Constant: 0:29 0 (const int) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:31 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:31 Constant: 0:31 0 (const uint) 0:31 matrix-times-vector ( temp 4-component vector of float) 0:31 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float) 0:31 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:31 Constant: 0:31 0 (const int) 0:31 Function Call: getWorld( ( global 4-component vector of float) 0:24 Function Definition: getColor2( ( global 4-component vector of float) 0:24 Function Parameters: 0:26 Sequence 0:26 Branch: Return with expression 0:26 color2: direct index for structure (layout( column_major std140 offset=16) uniform 4-component vector of float) 0:26 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:26 Constant: 0:26 1 (const int) 0:29 Function Definition: getWorld( ( global 4-component vector of float) 0:29 Function Parameters: 0:31 Sequence 0:31 Branch: Return with expression 0:31 matrix-times-vector ( temp 4-component vector of float) 0:31 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float) 0:31 'b' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:31 Constant: 0:31 1 (const int) 0:31 'P' ( in 4-component vector of float) 0:32 move second child to first child ( temp 4-component vector of float) 0:32 v2: direct index for structure ( out 4-component vector of float) 0:32 'c' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:32 1.000000 0:? Linker Objects 0:? 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}) 0:? 'b' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2}) 0:? 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}) 0:? 'oColor' ( smooth out 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:? 'P' ( in 4-component vector of float) glslang-16.0.0/Test/baseResults/link.multiUnitLayout.0.frag.out000066400000000000000000000040711506534232700244020ustar00rootroot00000000000000link.multiUnitLayout.0.frag Shader version: 450 using depth_greater 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: outputColor(vf4; ( global void) 0:9 Constant: 0:9 1.000000 0:9 0.000000 0:9 0.000000 0:9 1.000000 0:10 move second child to first child ( temp float) 0:10 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:10 Constant: 0:10 0.500000 0:? Linker Objects 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) link.multiUnitLayout.1.frag Shader version: 450 0:? Sequence 0:5 Function Definition: outputColor(vf4; ( global void) 0:5 Function Parameters: 0:5 'color' ( in 4-component vector of float) 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'FragColor' (layout( location=0) out 4-component vector of float) 0:7 'color' ( in 4-component vector of float) 0:? Linker Objects 0:? 'FragColor' (layout( location=0) out 4-component vector of float) Linked fragment stage: Shader version: 450 using depth_greater 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: outputColor(vf4; ( global void) 0:9 Constant: 0:9 1.000000 0:9 0.000000 0:9 0.000000 0:9 1.000000 0:10 move second child to first child ( temp float) 0:10 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:10 Constant: 0:10 0.500000 0:5 Function Definition: outputColor(vf4; ( global void) 0:5 Function Parameters: 0:5 'color' ( in 4-component vector of float) 0:7 Sequence 0:7 move second child to first child ( temp 4-component vector of float) 0:7 'FragColor' (layout( location=0) out 4-component vector of float) 0:7 'color' ( in 4-component vector of float) 0:? Linker Objects 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:? 'FragColor' (layout( location=0) out 4-component vector of float) glslang-16.0.0/Test/baseResults/link.multiUnitLayout.0.mesh.out000066400000000000000000000070761506534232700244270ustar00rootroot00000000000000link.multiUnitLayout.0.mesh ERROR: 0:2: 'GL_EXT_mesh_shader' : not supported for current targeted SPIR-V version ERROR: 1 compilation errors. No code generated. Shader version: 460 Requested GL_EXT_mesh_shader max_vertices = 81 max_primitives = 32 output primitive = triangles local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 Function Call: do_process( ( global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) link.multiUnitLayout.1.mesh ERROR: 0:2: 'GL_EXT_mesh_shader' : not supported for current targeted SPIR-V version ERROR: 1 compilation errors. No code generated. Shader version: 460 Requested GL_EXT_mesh_shader max_vertices = -1 max_primitives = -1 output primitive = none local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:9 Function Definition: do_process( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 move second child to first child ( temp uint) 0:11 indirect index (layout( column_major std430 offset=0) temp uint) 0:11 data: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of uint) 0:11 'dataBuffer' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of uint data}) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp uint) 0:11 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp uint) 0:11 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'dataBuffer' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of uint data}) Linked mesh stage: Shader version: 460 Requested GL_EXT_mesh_shader max_vertices = 81 max_primitives = 32 output primitive = triangles local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 Function Call: do_process( ( global void) 0:9 Function Definition: do_process( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 move second child to first child ( temp uint) 0:11 indirect index (layout( column_major std430 offset=0) temp uint) 0:11 data: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of uint) 0:11 'dataBuffer' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of uint data}) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp uint) 0:11 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:11 Constant: 0:11 0 (const int) 0:11 direct index ( temp uint) 0:11 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'dataBuffer' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of uint data}) glslang-16.0.0/Test/baseResults/link.multiUnitLayout.0.tese.out000066400000000000000000000227011506534232700244230ustar00rootroot00000000000000link.multiUnitLayout.0.tese Shader version: 410 input primitive = triangles vertex spacing = equal_spacing triangle order = cw 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'p0' ( temp 4-component vector of float) 0:9 vector-scale ( temp 4-component vector of float) 0:9 direct index ( temp float) 0:9 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:9 Constant: 0:9 0 (const int) 0:9 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:9 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:9 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 0 (const int) 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'p1' ( temp 4-component vector of float) 0:10 vector-scale ( temp 4-component vector of float) 0:10 direct index ( temp float) 0:10 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:10 Constant: 0:10 1 (const int) 0:10 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:10 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:10 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 'p2' ( temp 4-component vector of float) 0:11 vector-scale ( temp 4-component vector of float) 0:11 direct index ( temp float) 0:11 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:11 Constant: 0:11 2 (const int) 0:11 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:11 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:11 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:12 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:12 Constant: 0:12 0 (const uint) 0:12 Function Call: transformPosition(vf4; ( global 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 'p0' ( temp 4-component vector of float) 0:12 'p1' ( temp 4-component vector of float) 0:12 'p2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) link.multiUnitLayout.1.tese Shader version: 410 input primitive = none vertex spacing = none triangle order = none 0:? Sequence 0:3 Function Definition: transformPosition(vf4; ( global 4-component vector of float) 0:3 Function Parameters: 0:3 'position' ( in 4-component vector of float) 0:5 Sequence 0:5 Branch: Return with expression 0:5 vector-scale ( temp 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 'position' ( in 4-component vector of float) 0:? Linker Objects Linked tessellation evaluation stage: Shader version: 410 input primitive = triangles vertex spacing = equal_spacing triangle order = cw 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'p0' ( temp 4-component vector of float) 0:9 vector-scale ( temp 4-component vector of float) 0:9 direct index ( temp float) 0:9 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:9 Constant: 0:9 0 (const int) 0:9 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:9 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) 0:9 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 0 (const int) 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'p1' ( temp 4-component vector of float) 0:10 vector-scale ( temp 4-component vector of float) 0:10 direct index ( temp float) 0:10 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:10 Constant: 0:10 1 (const int) 0:10 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:10 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) 0:10 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 'p2' ( temp 4-component vector of float) 0:11 vector-scale ( temp 4-component vector of float) 0:11 direct index ( temp float) 0:11 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:11 Constant: 0:11 2 (const int) 0:11 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:11 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) 0:11 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:12 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:12 Constant: 0:12 0 (const uint) 0:12 Function Call: transformPosition(vf4; ( global 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 'p0' ( temp 4-component vector of float) 0:12 'p1' ( temp 4-component vector of float) 0:12 'p2' ( temp 4-component vector of float) 0:3 Function Definition: transformPosition(vf4; ( global 4-component vector of float) 0:3 Function Parameters: 0:3 'position' ( in 4-component vector of float) 0:5 Sequence 0:5 Branch: Return with expression 0:5 vector-scale ( temp 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 'position' ( in 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) glslang-16.0.0/Test/baseResults/link.multiUnitLayout.0.vert.out000066400000000000000000000075431506534232700244520ustar00rootroot00000000000000link.multiUnitLayout.0.vert Shader version: 450 in xfb mode 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 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:11 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:11 Constant: 0:11 0 (const uint) 0:11 Function Call: computePosition(vf4; ( global 4-component vector of float) 0:11 'in_position' (layout( location=0) in 4-component vector of float) 0:? Linker Objects 0:? 'in_position' (layout( location=0) in 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.multiUnitLayout.1.vert Shader version: 450 0:? Sequence 0:3 Function Definition: computePosition(vf4; ( global 4-component vector of float) 0:3 Function Parameters: 0:3 'position' ( in 4-component vector of float) 0:5 Sequence 0:5 Branch: Return with expression 0:5 add ( temp 4-component vector of float) 0:5 Constant: 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 vector-scale ( temp 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 'position' ( in 4-component vector of float) 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 450 in xfb mode 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 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:11 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) 0:11 Constant: 0:11 0 (const uint) 0:11 Function Call: computePosition(vf4; ( global 4-component vector of float) 0:11 'in_position' (layout( location=0) in 4-component vector of float) 0:3 Function Definition: computePosition(vf4; ( global 4-component vector of float) 0:3 Function Parameters: 0:3 'position' ( in 4-component vector of float) 0:5 Sequence 0:5 Branch: Return with expression 0:5 add ( temp 4-component vector of float) 0:5 Constant: 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 1.000000 0:5 vector-scale ( temp 4-component vector of float) 0:5 Constant: 0:5 2.000000 0:5 'position' ( in 4-component vector of float) 0:? Linker Objects 0:? 'in_position' (layout( location=0) in 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/link.multiUnitLayout.2.frag.out000066400000000000000000000043011506534232700244000ustar00rootroot00000000000000link.multiUnitLayout.2.frag Shader version: 450 using depth_less 0:? Sequence 0:8 Function Definition: outputColor(vf4; ( global void) 0:8 Function Parameters: 0:8 'color' ( in 4-component vector of float) 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'FragColor' (layout( location=0) out 4-component vector of float) 0:10 'color' ( in 4-component vector of float) 0:? Linker Objects 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:? 'FragColor' (layout( location=0) out 4-component vector of float) link.multiUnitLayout.0.frag Shader version: 450 using depth_greater 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: outputColor(vf4; ( global void) 0:9 Constant: 0:9 1.000000 0:9 0.000000 0:9 0.000000 0:9 1.000000 0:10 move second child to first child ( temp float) 0:10 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:10 Constant: 0:10 0.500000 0:? Linker Objects 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) Linked fragment stage: ERROR: Linking fragment stage: Contradictory depth layouts Shader version: 450 using depth_less 0:? Sequence 0:8 Function Definition: outputColor(vf4; ( global void) 0:8 Function Parameters: 0:8 'color' ( in 4-component vector of float) 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'FragColor' (layout( location=0) out 4-component vector of float) 0:10 'color' ( in 4-component vector of float) 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: outputColor(vf4; ( global void) 0:9 Constant: 0:9 1.000000 0:9 0.000000 0:9 0.000000 0:9 1.000000 0:10 move second child to first child ( temp float) 0:10 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:10 Constant: 0:10 0.500000 0:? Linker Objects 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:? 'FragColor' (layout( location=0) out 4-component vector of float) glslang-16.0.0/Test/baseResults/link.multiUnitLayout.2.mesh.out000066400000000000000000000072101506534232700244170ustar00rootroot00000000000000link.multiUnitLayout.2.mesh ERROR: 0:2: 'GL_EXT_mesh_shader' : not supported for current targeted SPIR-V version ERROR: 1 compilation errors. No code generated. Shader version: 460 Requested GL_EXT_mesh_shader max_vertices = -1 max_primitives = 34 output primitive = none local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:12 Function Definition: do_process( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp uint) 0:14 indirect index (layout( column_major std430 offset=0) temp uint) 0:14 data: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of uint) 0:14 'dataBuffer' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of uint data}) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( temp uint) 0:14 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( temp uint) 0:14 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:14 Constant: 0:14 0 (const int) 0:? Linker Objects 0:? 'dataBuffer' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of uint data}) link.multiUnitLayout.0.mesh ERROR: 0:2: 'GL_EXT_mesh_shader' : not supported for current targeted SPIR-V version ERROR: 1 compilation errors. No code generated. Shader version: 460 Requested GL_EXT_mesh_shader max_vertices = 81 max_primitives = 32 output primitive = triangles local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 Function Call: do_process( ( global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) Linked mesh stage: ERROR: Linking mesh stage: Contradictory layout max_primitives values Shader version: 460 Requested GL_EXT_mesh_shader max_vertices = 81 max_primitives = 34 output primitive = triangles local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:12 Function Definition: do_process( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp uint) 0:14 indirect index (layout( column_major std430 offset=0) temp uint) 0:14 data: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of uint) 0:14 'dataBuffer' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of uint data}) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( temp uint) 0:14 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) 0:14 Constant: 0:14 0 (const int) 0:14 direct index ( temp uint) 0:14 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) 0:14 Constant: 0:14 0 (const int) 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 Function Call: do_process( ( global void) 0:? Linker Objects 0:? 'dataBuffer' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of uint data}) 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) glslang-16.0.0/Test/baseResults/link.multiUnitLayout.2.tese.out000066400000000000000000000233021506534232700244230ustar00rootroot00000000000000link.multiUnitLayout.2.tese Shader version: 410 input primitive = triangles vertex spacing = fractional_even_spacing triangle order = ccw 0:? Sequence 0:6 Function Definition: transformPosition(vf4; ( global 4-component vector of float) 0:6 Function Parameters: 0:6 'position' ( in 4-component vector of float) 0:8 Sequence 0:8 Branch: Return with expression 0:8 vector-scale ( temp 4-component vector of float) 0:8 Constant: 0:8 2.000000 0:8 'position' ( in 4-component vector of float) 0:? Linker Objects link.multiUnitLayout.0.tese Shader version: 410 input primitive = triangles vertex spacing = equal_spacing triangle order = cw 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'p0' ( temp 4-component vector of float) 0:9 vector-scale ( temp 4-component vector of float) 0:9 direct index ( temp float) 0:9 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:9 Constant: 0:9 0 (const int) 0:9 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:9 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:9 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 0 (const int) 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'p1' ( temp 4-component vector of float) 0:10 vector-scale ( temp 4-component vector of float) 0:10 direct index ( temp float) 0:10 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:10 Constant: 0:10 1 (const int) 0:10 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:10 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:10 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 'p2' ( temp 4-component vector of float) 0:11 vector-scale ( temp 4-component vector of float) 0:11 direct index ( temp float) 0:11 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:11 Constant: 0:11 2 (const int) 0:11 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:11 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:11 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:12 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:12 Constant: 0:12 0 (const uint) 0:12 Function Call: transformPosition(vf4; ( global 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 'p0' ( temp 4-component vector of float) 0:12 'p1' ( temp 4-component vector of float) 0:12 'p2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) Linked tessellation evaluation stage: ERROR: Linking tessellation evaluation stage: Contradictory input vertex spacing ERROR: Linking tessellation evaluation stage: Contradictory triangle ordering Shader version: 410 input primitive = triangles vertex spacing = fractional_even_spacing triangle order = ccw 0:? Sequence 0:6 Function Definition: transformPosition(vf4; ( global 4-component vector of float) 0:6 Function Parameters: 0:6 'position' ( in 4-component vector of float) 0:8 Sequence 0:8 Branch: Return with expression 0:8 vector-scale ( temp 4-component vector of float) 0:8 Constant: 0:8 2.000000 0:8 'position' ( in 4-component vector of float) 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'p0' ( temp 4-component vector of float) 0:9 vector-scale ( temp 4-component vector of float) 0:9 direct index ( temp float) 0:9 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:9 Constant: 0:9 0 (const int) 0:9 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:9 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:9 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:9 Constant: 0:9 0 (const int) 0:9 Constant: 0:9 0 (const int) 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 'p1' ( temp 4-component vector of float) 0:10 vector-scale ( temp 4-component vector of float) 0:10 direct index ( temp float) 0:10 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:10 Constant: 0:10 1 (const int) 0:10 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:10 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:10 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 'p2' ( temp 4-component vector of float) 0:11 vector-scale ( temp 4-component vector of float) 0:11 direct index ( temp float) 0:11 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:11 Constant: 0:11 2 (const int) 0:11 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:11 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:11 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:11 Constant: 0:11 2 (const int) 0:11 Constant: 0:11 0 (const int) 0:12 move second child to first child ( temp 4-component vector of float) 0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:12 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:12 Constant: 0:12 0 (const uint) 0:12 Function Call: transformPosition(vf4; ( global 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 'p0' ( temp 4-component vector of float) 0:12 'p1' ( temp 4-component vector of float) 0:12 'p2' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) glslang-16.0.0/Test/baseResults/link.multiUnitLayout.2.vert.out000066400000000000000000000077051506534232700244540ustar00rootroot00000000000000link.multiUnitLayout.2.vert Shader version: 450 in xfb mode 0:? Sequence 0:6 Function Definition: computePosition(vf4; ( global 4-component vector of float) 0:6 Function Parameters: 0:6 'position' ( in 4-component vector of float) 0:8 Sequence 0:8 Branch: Return with expression 0:8 add ( temp 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:8 vector-scale ( temp 4-component vector of float) 0:8 Constant: 0:8 2.000000 0:8 'position' ( in 4-component vector of float) 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.multiUnitLayout.0.vert Shader version: 450 in xfb mode 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 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:11 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:11 Constant: 0:11 0 (const uint) 0:11 Function Call: computePosition(vf4; ( global 4-component vector of float) 0:11 'in_position' (layout( location=0) in 4-component vector of float) 0:? Linker Objects 0:? 'in_position' (layout( location=0) in 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex stage: Contradictory xfb_stride Shader version: 450 in xfb mode 0:? Sequence 0:6 Function Definition: computePosition(vf4; ( global 4-component vector of float) 0:6 Function Parameters: 0:6 'position' ( in 4-component vector of float) 0:8 Sequence 0:8 Branch: Return with expression 0:8 add ( temp 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:8 vector-scale ( temp 4-component vector of float) 0:8 Constant: 0:8 2.000000 0:8 'position' ( in 4-component vector of float) 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 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:11 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:11 Constant: 0:11 0 (const uint) 0:11 Function Call: computePosition(vf4; ( global 4-component vector of float) 0:11 'in_position' (layout( location=0) in 4-component vector of float) 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:? 'in_position' (layout( location=0) in 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) glslang-16.0.0/Test/baseResults/link.redeclareBuiltin.vert.out000066400000000000000000000212431506534232700243720ustar00rootroot00000000000000link.redeclareBuiltin.vert Shader version: 410 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position}) 0:10 Constant: 0:10 0 (const uint) 0:10 Constant: 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.redeclareBuiltin.geom Shader version: 410 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:13 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:13 Constant: 0:13 0 (const uint) 0:13 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:13 direct index ( temp block{ in 4-component vector of float Position gl_Position}) 0:13 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:14 EmitVertex ( global void) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:16 Constant: 0:16 0 (const uint) 0:16 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:16 direct index ( temp block{ in 4-component vector of float Position gl_Position}) 0:16 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 0 (const int) 0:17 EmitVertex ( global void) 0:19 move second child to first child ( temp 4-component vector of float) 0:19 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:19 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:19 Constant: 0:19 0 (const uint) 0:19 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:19 direct index ( temp block{ in 4-component vector of float Position gl_Position}) 0:19 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 0 (const int) 0:20 EmitVertex ( global void) 0:22 EndPrimitive ( global void) 0:? Linker Objects 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) Linked vertex stage: Linked geometry stage: Shader version: 410 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 move second child to first child ( temp 4-component vector of float) 0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position}) 0:10 Constant: 0:10 0 (const uint) 0:10 Constant: 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:10 1.000000 0:? Linker Objects 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 410 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:13 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) 0:13 Constant: 0:13 0 (const uint) 0:13 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:13 direct index ( temp block{ in 4-component vector of float Position gl_Position}) 0:13 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) 0:14 EmitVertex ( global void) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) 0:16 Constant: 0:16 0 (const uint) 0:16 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:16 direct index ( temp block{ in 4-component vector of float Position gl_Position}) 0:16 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) 0:16 Constant: 0:16 1 (const int) 0:16 Constant: 0:16 0 (const int) 0:17 EmitVertex ( global void) 0:19 move second child to first child ( temp 4-component vector of float) 0:19 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:19 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) 0:19 Constant: 0:19 0 (const uint) 0:19 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:19 direct index ( temp block{ in 4-component vector of float Position gl_Position}) 0:19 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) 0:19 Constant: 0:19 2 (const int) 0:19 Constant: 0:19 0 (const int) 0:20 EmitVertex ( global void) 0:22 EndPrimitive ( global void) 0:? Linker Objects 0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) glslang-16.0.0/Test/baseResults/link.tesselation.tese.out000066400000000000000000000336051506534232700234340ustar00rootroot00000000000000link.tesselation.tese Shader version: 440 input primitive = triangles vertex spacing = fractional_odd_spacing triangle order = cw 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'u' ( temp float) 0:17 direct index ( temp float) 0:17 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:17 Constant: 0:17 0 (const int) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'v' ( temp float) 0:18 direct index ( temp float) 0:18 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:18 Constant: 0:18 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'w' ( temp float) 0:19 direct index ( temp float) 0:19 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:19 Constant: 0:19 2 (const int) 0:21 Sequence 0:21 move second child to first child ( temp 2-component vector of float) 0:21 'newUv' ( temp 2-component vector of float) 0:21 Construct vec2 ( temp 2-component vector of float) 0:21 add ( temp 2-component vector of float) 0:21 add ( temp 2-component vector of float) 0:21 vector-scale ( temp 2-component vector of float) 0:21 'u' ( temp float) 0:21 texCoord: direct index for structure ( in 2-component vector of float) 0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) 0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 vector-scale ( temp 2-component vector of float) 0:21 'v' ( temp float) 0:21 texCoord: direct index for structure ( in 2-component vector of float) 0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) 0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 vector-scale ( temp 2-component vector of float) 0:21 'w' ( temp float) 0:21 texCoord: direct index for structure ( in 2-component vector of float) 0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) 0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 move second child to first child ( temp 2-component vector of float) 0:22 texCoord: direct index for structure ( out 2-component vector of float) 0:22 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) 0:22 Constant: 0:22 0 (const int) 0:22 'newUv' ( temp 2-component vector of float) 0:23 move second child to first child ( temp 4-component vector of float) 0:23 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:23 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:23 Constant: 0:23 0 (const uint) 0:23 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:23 indirect index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_PatchVerticesIn' ( in int PatchVertices) 0:23 Constant: 0:23 0 (const int) 0:? Linker Objects 0:? 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:? 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) link.tesselation.tesc Shader version: 440 vertices = 3 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 move second child to first child ( temp 2-component vector of float) 0:16 texCoord: direct index for structure ( out 2-component vector of float) 0:16 indirect index (layout( location=0) temp block{ out 2-component vector of float texCoord}) 0:16 'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord}) 0:16 'gl_InvocationID' ( in int InvocationID) 0:16 Constant: 0:16 0 (const int) 0:16 texCoord: direct index for structure ( in 2-component vector of float) 0:16 indirect index (layout( location=0) temp block{ in 2-component vector of float texCoord}) 0:16 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:16 'gl_InvocationID' ( in int InvocationID) 0:16 Constant: 0:16 0 (const int) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'tessLevel' ( temp float) 0:18 Constant: 0:18 10.000000 0:19 move second child to first child ( temp float) 0:19 indirect index ( patch temp float TessLevelOuter) 0:19 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) 0:19 'gl_InvocationID' ( in int InvocationID) 0:19 'tessLevel' ( temp float) 0:20 move second child to first child ( temp float) 0:20 direct index ( patch temp float TessLevelInner) 0:20 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) 0:20 Constant: 0:20 0 (const int) 0:20 'tessLevel' ( temp float) 0:? Linker Objects 0:? 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:? 'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord}) Linked tessellation control stage: Linked tessellation evaluation stage: Shader version: 440 vertices = 3 0:? Sequence 0:14 Function Definition: main( ( global void) 0:14 Function Parameters: 0:16 Sequence 0:16 move second child to first child ( temp 2-component vector of float) 0:16 texCoord: direct index for structure ( out 2-component vector of float) 0:16 indirect index (layout( location=0) temp block{ out 2-component vector of float texCoord}) 0:16 'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord}) 0:16 'gl_InvocationID' ( in int InvocationID) 0:16 Constant: 0:16 0 (const int) 0:16 texCoord: direct index for structure ( in 2-component vector of float) 0:16 indirect index (layout( location=0) temp block{ in 2-component vector of float texCoord}) 0:16 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:16 'gl_InvocationID' ( in int InvocationID) 0:16 Constant: 0:16 0 (const int) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'tessLevel' ( temp float) 0:18 Constant: 0:18 10.000000 0:19 move second child to first child ( temp float) 0:19 indirect index ( patch temp float TessLevelOuter) 0:19 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) 0:19 'gl_InvocationID' ( in int InvocationID) 0:19 'tessLevel' ( temp float) 0:20 move second child to first child ( temp float) 0:20 direct index ( patch temp float TessLevelInner) 0:20 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) 0:20 Constant: 0:20 0 (const int) 0:20 'tessLevel' ( temp float) 0:? Linker Objects 0:? 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:? 'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord}) Shader version: 440 input primitive = triangles vertex spacing = fractional_odd_spacing triangle order = cw 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'u' ( temp float) 0:17 direct index ( temp float) 0:17 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:17 Constant: 0:17 0 (const int) 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'v' ( temp float) 0:18 direct index ( temp float) 0:18 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:18 Constant: 0:18 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'w' ( temp float) 0:19 direct index ( temp float) 0:19 'gl_TessCoord' ( in 3-component vector of float TessCoord) 0:19 Constant: 0:19 2 (const int) 0:21 Sequence 0:21 move second child to first child ( temp 2-component vector of float) 0:21 'newUv' ( temp 2-component vector of float) 0:21 Construct vec2 ( temp 2-component vector of float) 0:21 add ( temp 2-component vector of float) 0:21 add ( temp 2-component vector of float) 0:21 vector-scale ( temp 2-component vector of float) 0:21 'u' ( temp float) 0:21 texCoord: direct index for structure ( in 2-component vector of float) 0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) 0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:21 Constant: 0:21 0 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 vector-scale ( temp 2-component vector of float) 0:21 'v' ( temp float) 0:21 texCoord: direct index for structure ( in 2-component vector of float) 0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) 0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const int) 0:21 vector-scale ( temp 2-component vector of float) 0:21 'w' ( temp float) 0:21 texCoord: direct index for structure ( in 2-component vector of float) 0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) 0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 move second child to first child ( temp 2-component vector of float) 0:22 texCoord: direct index for structure ( out 2-component vector of float) 0:22 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) 0:22 Constant: 0:22 0 (const int) 0:22 'newUv' ( temp 2-component vector of float) 0:23 move second child to first child ( temp 4-component vector of float) 0:23 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:23 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:23 Constant: 0:23 0 (const uint) 0:23 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:23 indirect index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) 0:23 'gl_PatchVerticesIn' ( in int PatchVertices) 0:23 Constant: 0:23 0 (const int) 0:? Linker Objects 0:? 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) 0:? 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) glslang-16.0.0/Test/baseResults/link.tesselation.vert.out000066400000000000000000000116221506534232700234470ustar00rootroot00000000000000link.tesselation.vert Shader version: 440 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:13 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:13 Constant: 0:13 0 (const uint) 0:13 'i_Pos' (layout( location=0) in 4-component vector of float) 0:14 move second child to first child ( temp 2-component vector of float) 0:14 texCoord: direct index for structure ( out 2-component vector of float) 0:14 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) 0:14 Constant: 0:14 0 (const int) 0:14 'i_Tex' (layout( location=1) in 2-component vector of float) 0:? Linker Objects 0:? 'i_Pos' (layout( location=0) in 4-component vector of float) 0:? 'i_Tex' (layout( location=1) in 2-component vector of float) 0:? 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) link.tesselation.frag Shader version: 440 0:? Sequence 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'oColor' (layout( location=0) out 4-component vector of float) 0:14 texture ( global 4-component vector of float) 0:14 'mytex' (layout( binding=0) uniform sampler2D) 0:14 texCoord: direct index for structure ( in 2-component vector of float) 0:14 'IN' (layout( location=0) in block{ in 2-component vector of float texCoord}) 0:14 Constant: 0:14 0 (const int) 0:? Linker Objects 0:? 'IN' (layout( location=0) in block{ in 2-component vector of float texCoord}) 0:? 'oColor' (layout( location=0) out 4-component vector of float) 0:? 'mytex' (layout( binding=0) uniform sampler2D) Linked vertex stage: Linked fragment stage: Shader version: 440 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:13 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:13 Constant: 0:13 0 (const uint) 0:13 'i_Pos' (layout( location=0) in 4-component vector of float) 0:14 move second child to first child ( temp 2-component vector of float) 0:14 texCoord: direct index for structure ( out 2-component vector of float) 0:14 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) 0:14 Constant: 0:14 0 (const int) 0:14 'i_Tex' (layout( location=1) in 2-component vector of float) 0:? Linker Objects 0:? 'i_Pos' (layout( location=0) in 4-component vector of float) 0:? 'i_Tex' (layout( location=1) in 2-component vector of float) 0:? 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 440 0:? Sequence 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'oColor' (layout( location=0) out 4-component vector of float) 0:14 texture ( global 4-component vector of float) 0:14 'mytex' (layout( binding=0) uniform sampler2D) 0:14 texCoord: direct index for structure ( in 2-component vector of float) 0:14 'IN' (layout( location=0) in block{ in 2-component vector of float texCoord}) 0:14 Constant: 0:14 0 (const int) 0:? Linker Objects 0:? 'IN' (layout( location=0) in block{ in 2-component vector of float texCoord}) 0:? 'oColor' (layout( location=0) out 4-component vector of float) 0:? 'mytex' (layout( binding=0) uniform sampler2D) glslang-16.0.0/Test/baseResults/link.vk.crossStageIO.0.vert.out000066400000000000000000003503731506534232700242500ustar00rootroot00000000000000link.vk.crossStageIO.0.vert Shader version: 460 0:? Sequence 0:66 Function Definition: main( ( global void) 0:66 Function Parameters: 0:67 Sequence 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Constant: 0:67 false (const bool) 0:67 true case 0:68 Sequence 0:68 move second child to first child ( temp highp 4-component vector of float) 0:68 'a0' (layout( location=40) smooth out highp 4-component vector of float) 0:68 Constant: 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:70 move second child to first child ( temp highp 4-component vector of float) 0:70 a1: direct index for structure ( out highp 4-component vector of float) 0:70 'anon@0' (layout( location=1) out block{ out highp 4-component vector of float a1}) 0:70 Constant: 0:70 0 (const uint) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp highp 4-component vector of float) 0:71 a2: direct index for structure (layout( location=3) out highp 4-component vector of float) 0:71 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:71 Constant: 0:71 0 (const uint) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 move second child to first child ( temp highp 4-component vector of float) 0:72 a3: direct index for structure (layout( location=2) out highp 4-component vector of float) 0:72 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:72 Constant: 0:72 1 (const uint) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 move second child to first child ( temp highp 4-component vector of float) 0:73 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:73 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 move second child to first child ( temp highp 4-component vector of float) 0:74 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:74 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 move second child to first child ( temp highp 4-component vector of float) 0:75 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:75 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 a5: direct index for structure (layout( location=4) out highp 4-component vector of float) 0:76 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:76 Constant: 0:76 0 (const uint) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 move second child to first child ( temp highp 4-component vector of float) 0:77 direct index (layout( location=8) temp highp 4-component vector of float) 0:77 a6: direct index for structure (layout( location=8) out 2-element array of highp 4-component vector of float) 0:77 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:77 Constant: 0:77 1 (const uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 move second child to first child ( temp highp 4-component vector of float) 0:78 direct index (layout( location=8) temp highp 4-component vector of float) 0:78 a6: direct index for structure (layout( location=8) out 2-element array of highp 4-component vector of float) 0:78 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:78 Constant: 0:78 1 (const uint) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 move second child to first child ( temp highp 4-component vector of float) 0:79 direct index (layout( location=10) temp highp 4-component vector of float) 0:79 a7: direct index for structure (layout( location=10) out 2-element array of highp 4-component vector of float) 0:79 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:79 Constant: 0:79 2 (const uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 move second child to first child ( temp highp 4-component vector of float) 0:80 direct index (layout( location=10) temp highp 4-component vector of float) 0:80 a7: direct index for structure (layout( location=10) out 2-element array of highp 4-component vector of float) 0:80 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:80 Constant: 0:80 2 (const uint) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 move second child to first child ( temp highp float) 0:81 a8: direct index for structure (layout( location=12) out highp float) 0:81 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:81 Constant: 0:81 0 (const uint) 0:81 Constant: 0:81 0.000000 0:82 move second child to first child ( temp highp float) 0:82 direct index ( temp highp float) 0:82 direct index (layout( location=15) temp highp 2-component vector of float) 0:82 a9: direct index for structure (layout( location=15) out 2-element array of highp 2-component vector of float) 0:82 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:82 Constant: 0:82 1 (const uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0.000000 0:83 move second child to first child ( temp highp float) 0:83 direct index ( temp highp float) 0:83 direct index (layout( location=15) temp highp 2-component vector of float) 0:83 a9: direct index for structure (layout( location=15) out 2-element array of highp 2-component vector of float) 0:83 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:83 Constant: 0:83 1 (const uint) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0.000000 0:84 move second child to first child ( temp highp 4-component vector of float) 0:84 direct index (layout( location=17) temp highp 4-component vector of float) 0:84 a10: direct index for structure (layout( location=17) out 2-element array of highp 4-component vector of float) 0:84 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:84 Constant: 0:84 2 (const uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 move second child to first child ( temp highp 4-component vector of float) 0:85 direct index (layout( location=17) temp highp 4-component vector of float) 0:85 a10: direct index for structure (layout( location=17) out 2-element array of highp 4-component vector of float) 0:85 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:85 Constant: 0:85 2 (const uint) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 move second child to first child ( temp highp float) 0:86 direct index ( temp highp float) 0:86 a: direct index for structure ( global 3-element array of highp float) 0:86 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:86 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:86 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:86 Constant: 0:86 3 (const uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0.000000 0:87 move second child to first child ( temp highp float) 0:87 direct index ( temp highp float) 0:87 a: direct index for structure ( global 3-element array of highp float) 0:87 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:87 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:87 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:87 Constant: 0:87 3 (const uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0.000000 0:88 move second child to first child ( temp highp float) 0:88 direct index ( temp highp float) 0:88 a: direct index for structure ( global 3-element array of highp float) 0:88 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:88 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:88 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:88 Constant: 0:88 3 (const uint) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0.000000 0:89 move second child to first child ( temp highp float) 0:89 b: direct index for structure ( global highp float) 0:89 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:89 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:89 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:89 Constant: 0:89 3 (const uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0.000000 0:90 move second child to first child ( temp highp float) 0:90 direct index ( temp highp float) 0:90 a: direct index for structure ( global 3-element array of highp float) 0:90 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:90 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:90 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:90 Constant: 0:90 3 (const uint) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0.000000 0:91 move second child to first child ( temp highp float) 0:91 direct index ( temp highp float) 0:91 a: direct index for structure ( global 3-element array of highp float) 0:91 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:91 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:91 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0.000000 0:92 move second child to first child ( temp highp float) 0:92 direct index ( temp highp float) 0:92 a: direct index for structure ( global 3-element array of highp float) 0:92 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:92 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:92 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:92 Constant: 0:92 3 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.000000 0:93 move second child to first child ( temp highp float) 0:93 b: direct index for structure ( global highp float) 0:93 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:93 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:93 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:93 Constant: 0:93 3 (const uint) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0.000000 0:94 move second child to first child ( temp highp float) 0:94 direct index (layout( location=27) smooth temp highp float) 0:94 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0.000000 0:95 move second child to first child ( temp highp float) 0:95 direct index (layout( location=27) smooth temp highp float) 0:95 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0.000000 0:96 move second child to first child ( temp highp float) 0:96 direct index (layout( location=27) smooth temp highp float) 0:96 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0.000000 0:97 move second child to first child ( temp highp float) 0:97 direct index ( temp highp float) 0:97 a13: direct index for structure ( global highp 2-component vector of float) 0:97 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 0.000000 0:98 move second child to first child ( temp highp float) 0:98 direct index ( temp highp float) 0:98 a: direct index for structure ( global 3-element array of highp float) 0:98 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:98 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0.000000 0:99 move second child to first child ( temp highp float) 0:99 direct index ( temp highp float) 0:99 a: direct index for structure ( global 3-element array of highp float) 0:99 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:99 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0.000000 0:100 move second child to first child ( temp highp float) 0:100 direct index ( temp highp float) 0:100 a: direct index for structure ( global 3-element array of highp float) 0:100 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:100 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 0.000000 0:101 move second child to first child ( temp highp float) 0:101 b: direct index for structure ( global highp float) 0:101 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:101 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp highp 4X4 matrix of float) 0:102 a15: direct index for structure ( global highp 4X4 matrix of float) 0:102 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:104 move second child to first child ( temp highp 4-component vector of float) 0:104 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:104 'a17' (layout( location=46) smooth out 4-element array of highp 4-component vector of float) 0:104 i: direct index for structure (layout( column_major std140) uniform highp int) 0:104 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:105 move second child to first child ( temp highp 4-component vector of float) 0:105 direct index ( temp highp 4-component vector of float) 0:105 a18: direct index for structure ( out 10-element array of highp 4-component vector of float) 0:105 'anon@4' (layout( location=50) out block{ out 10-element array of highp 4-component vector of float a18}) 0:105 Constant: 0:105 0 (const uint) 0:105 Constant: 0:105 5 (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 highp 2-component vector of float) 0:106 a19: direct index for structure (layout( location=60) out highp 2-component vector of float) 0:106 'anon@5' ( out block{layout( location=60) out highp 2-component vector of float a19}) 0:106 Constant: 0:106 0 (const uint) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:107 move second child to first child ( temp highp 4-component vector of float) 0:107 a20: direct index for structure ( out highp 4-component vector of float) 0:107 'anon@6' ( out block{ out highp 4-component vector of float a20}) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:108 move second child to first child ( temp highp 2-component vector of float) 0:108 direct index ( smooth temp highp 2-component vector of float) 0:108 'a21' ( smooth out 2-element array of highp 2-component vector of float) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 0.000000 0:108 0.000000 0:109 move second child to first child ( temp highp 2-component vector of float) 0:109 direct index ( smooth temp highp 2-component vector of float) 0:109 'a21' ( smooth out 2-element array of highp 2-component vector of float) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0.000000 0:109 0.000000 0:? Linker Objects 0:? 'a0' (layout( location=40) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( location=1) out block{ out highp 4-component vector of float a1}) 0:? 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:? 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:? 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:? 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:? 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:? 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:? 'a16' (layout( location=39) smooth out highp float) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'a17' (layout( location=46) smooth out 4-element array of highp 4-component vector of float) 0:? 'anon@4' (layout( location=50) out block{ out 10-element array of highp 4-component vector of float a18}) 0:? 'anon@5' ( out block{layout( location=60) out highp 2-component vector of float a19}) 0:? 'anon@6' ( out block{ out highp 4-component vector of float a20}) 0:? 'a21' ( smooth out 2-element array of highp 2-component vector of float) link.vk.crossStageIO.0.frag Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:71 Function Definition: uncalled( ( global highp uint) 0:71 Function Parameters: 0:72 Sequence 0:72 Branch: Return with expression 0:72 'b16' ( flat in highp uint) 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 'o' ( out highp 4-component vector of float) 0:76 b1: direct index for structure ( in highp 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp highp 4-component vector of float) 0:77 'o' ( out highp 4-component vector of float) 0:77 b2: direct index for structure ( in highp 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp highp 4-component vector of float) 0:78 'o' ( out highp 4-component vector of float) 0:78 b3: direct index for structure ( in highp 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp highp 4-component vector of float) 0:79 'o' ( out highp 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp highp 4-component vector of float) 0:80 'o' ( out highp 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp highp 4-component vector of float) 0:81 'o' ( out highp 4-component vector of float) 0:81 b5: direct index for structure ( in highp 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp highp 4-component vector of float) 0:82 'o' ( out highp 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp highp 4-component vector of float) 0:83 'o' ( out highp 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp highp 4-component vector of float) 0:84 'o' ( out highp 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp highp 4-component vector of float) 0:85 'o' ( out highp 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp highp 4-component vector of float) 0:86 'o' ( out highp 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp highp 4-component vector of float) 0:87 'o' ( out highp 4-component vector of float) 0:87 Construct vec4 ( temp highp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp highp 4-component vector of float) 0:88 'o' ( out highp 4-component vector of float) 0:88 vector swizzle ( temp highp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in highp 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp highp 4-component vector of float) 0:89 'o' ( out highp 4-component vector of float) 0:89 Construct vec4 ( temp highp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in highp float) 0:89 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp highp 4-component vector of float) 0:90 'o' ( out highp 4-component vector of float) 0:90 vector swizzle ( temp highp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in highp 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp highp 4-component vector of float) 0:91 'o' ( out highp 4-component vector of float) 0:91 Construct vec4 ( temp highp 4-component vector of float) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp highp 4-component vector of float) 0:92 'o' ( out highp 4-component vector of float) 0:92 Construct vec4 ( temp highp 4-component vector of float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp highp float) 0:92 add ( temp highp float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp highp 4-component vector of float) 0:93 'o' ( out highp 4-component vector of float) 0:93 Construct vec4 ( temp highp 4-component vector of float) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp highp 4-component vector of float) 0:95 'o' ( out highp 4-component vector of float) 0:95 vector swizzle ( temp highp 4-component vector of float) 0:95 matrix-times-vector ( temp highp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp highp 4-component vector of float) 0:96 'o' ( out highp 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in highp 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp highp 4-component vector of float) 0:97 'o' ( out highp 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in highp 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp highp 4-component vector of float) 0:99 'o' ( out highp 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:99 i: direct index for structure (layout( column_major std140) uniform highp int) 0:99 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp highp 4-component vector of float) 0:100 'o' ( out highp 4-component vector of float) 0:100 indirect index ( temp highp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of highp 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major std140) uniform highp int) 0:100 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp highp 4-component vector of float) 0:101 'o' ( out highp 4-component vector of float) 0:101 vector swizzle ( temp highp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp highp 4-component vector of float) 0:102 'o' ( out highp 4-component vector of float) 0:102 a20: direct index for structure ( in highp 4-component vector of float) 0:102 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp highp 4-component vector of float) 0:103 'o' ( out highp 4-component vector of float) 0:103 Construct vec4 ( temp highp 4-component vector of float) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:? 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:? 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in highp 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:? 'b16' ( flat in highp uint) 0:? 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:? 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:? 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:? 'o' ( out highp 4-component vector of float) Linked vertex stage: Linked fragment stage: Shader version: 460 0:? Sequence 0:66 Function Definition: main( ( global void) 0:66 Function Parameters: 0:67 Sequence 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Constant: 0:67 false (const bool) 0:67 true case 0:68 Sequence 0:68 move second child to first child ( temp highp 4-component vector of float) 0:68 'a0' (layout( location=40) smooth out highp 4-component vector of float) 0:68 Constant: 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:70 move second child to first child ( temp highp 4-component vector of float) 0:70 a1: direct index for structure ( out highp 4-component vector of float) 0:70 'anon@0' (layout( location=1) out block{ out highp 4-component vector of float a1}) 0:70 Constant: 0:70 0 (const uint) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp highp 4-component vector of float) 0:71 a2: direct index for structure (layout( location=3) out highp 4-component vector of float) 0:71 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:71 Constant: 0:71 0 (const uint) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 move second child to first child ( temp highp 4-component vector of float) 0:72 a3: direct index for structure (layout( location=2) out highp 4-component vector of float) 0:72 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:72 Constant: 0:72 1 (const uint) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 move second child to first child ( temp highp 4-component vector of float) 0:73 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:73 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 move second child to first child ( temp highp 4-component vector of float) 0:74 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:74 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 move second child to first child ( temp highp 4-component vector of float) 0:75 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:75 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 a5: direct index for structure (layout( location=4) out highp 4-component vector of float) 0:76 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:76 Constant: 0:76 0 (const uint) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 move second child to first child ( temp highp 4-component vector of float) 0:77 direct index (layout( location=8) temp highp 4-component vector of float) 0:77 a6: direct index for structure (layout( location=8) out 2-element array of highp 4-component vector of float) 0:77 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:77 Constant: 0:77 1 (const uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 move second child to first child ( temp highp 4-component vector of float) 0:78 direct index (layout( location=8) temp highp 4-component vector of float) 0:78 a6: direct index for structure (layout( location=8) out 2-element array of highp 4-component vector of float) 0:78 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:78 Constant: 0:78 1 (const uint) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 move second child to first child ( temp highp 4-component vector of float) 0:79 direct index (layout( location=10) temp highp 4-component vector of float) 0:79 a7: direct index for structure (layout( location=10) out 2-element array of highp 4-component vector of float) 0:79 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:79 Constant: 0:79 2 (const uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 move second child to first child ( temp highp 4-component vector of float) 0:80 direct index (layout( location=10) temp highp 4-component vector of float) 0:80 a7: direct index for structure (layout( location=10) out 2-element array of highp 4-component vector of float) 0:80 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:80 Constant: 0:80 2 (const uint) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 move second child to first child ( temp highp float) 0:81 a8: direct index for structure (layout( location=12) out highp float) 0:81 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:81 Constant: 0:81 0 (const uint) 0:81 Constant: 0:81 0.000000 0:82 move second child to first child ( temp highp float) 0:82 direct index ( temp highp float) 0:82 direct index (layout( location=15) temp highp 2-component vector of float) 0:82 a9: direct index for structure (layout( location=15) out 2-element array of highp 2-component vector of float) 0:82 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:82 Constant: 0:82 1 (const uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0.000000 0:83 move second child to first child ( temp highp float) 0:83 direct index ( temp highp float) 0:83 direct index (layout( location=15) temp highp 2-component vector of float) 0:83 a9: direct index for structure (layout( location=15) out 2-element array of highp 2-component vector of float) 0:83 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:83 Constant: 0:83 1 (const uint) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0.000000 0:84 move second child to first child ( temp highp 4-component vector of float) 0:84 direct index (layout( location=17) temp highp 4-component vector of float) 0:84 a10: direct index for structure (layout( location=17) out 2-element array of highp 4-component vector of float) 0:84 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:84 Constant: 0:84 2 (const uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 move second child to first child ( temp highp 4-component vector of float) 0:85 direct index (layout( location=17) temp highp 4-component vector of float) 0:85 a10: direct index for structure (layout( location=17) out 2-element array of highp 4-component vector of float) 0:85 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:85 Constant: 0:85 2 (const uint) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 move second child to first child ( temp highp float) 0:86 direct index ( temp highp float) 0:86 a: direct index for structure ( global 3-element array of highp float) 0:86 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:86 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:86 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:86 Constant: 0:86 3 (const uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0.000000 0:87 move second child to first child ( temp highp float) 0:87 direct index ( temp highp float) 0:87 a: direct index for structure ( global 3-element array of highp float) 0:87 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:87 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:87 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:87 Constant: 0:87 3 (const uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0.000000 0:88 move second child to first child ( temp highp float) 0:88 direct index ( temp highp float) 0:88 a: direct index for structure ( global 3-element array of highp float) 0:88 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:88 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:88 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:88 Constant: 0:88 3 (const uint) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0.000000 0:89 move second child to first child ( temp highp float) 0:89 b: direct index for structure ( global highp float) 0:89 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:89 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:89 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:89 Constant: 0:89 3 (const uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0.000000 0:90 move second child to first child ( temp highp float) 0:90 direct index ( temp highp float) 0:90 a: direct index for structure ( global 3-element array of highp float) 0:90 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:90 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:90 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:90 Constant: 0:90 3 (const uint) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0.000000 0:91 move second child to first child ( temp highp float) 0:91 direct index ( temp highp float) 0:91 a: direct index for structure ( global 3-element array of highp float) 0:91 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:91 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:91 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0.000000 0:92 move second child to first child ( temp highp float) 0:92 direct index ( temp highp float) 0:92 a: direct index for structure ( global 3-element array of highp float) 0:92 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:92 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:92 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:92 Constant: 0:92 3 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.000000 0:93 move second child to first child ( temp highp float) 0:93 b: direct index for structure ( global highp float) 0:93 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:93 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:93 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:93 Constant: 0:93 3 (const uint) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0.000000 0:94 move second child to first child ( temp highp float) 0:94 direct index (layout( location=27) smooth temp highp float) 0:94 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0.000000 0:95 move second child to first child ( temp highp float) 0:95 direct index (layout( location=27) smooth temp highp float) 0:95 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0.000000 0:96 move second child to first child ( temp highp float) 0:96 direct index (layout( location=27) smooth temp highp float) 0:96 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0.000000 0:97 move second child to first child ( temp highp float) 0:97 direct index ( temp highp float) 0:97 a13: direct index for structure ( global highp 2-component vector of float) 0:97 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 0.000000 0:98 move second child to first child ( temp highp float) 0:98 direct index ( temp highp float) 0:98 a: direct index for structure ( global 3-element array of highp float) 0:98 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:98 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0.000000 0:99 move second child to first child ( temp highp float) 0:99 direct index ( temp highp float) 0:99 a: direct index for structure ( global 3-element array of highp float) 0:99 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:99 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0.000000 0:100 move second child to first child ( temp highp float) 0:100 direct index ( temp highp float) 0:100 a: direct index for structure ( global 3-element array of highp float) 0:100 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:100 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 0.000000 0:101 move second child to first child ( temp highp float) 0:101 b: direct index for structure ( global highp float) 0:101 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:101 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp highp 4X4 matrix of float) 0:102 a15: direct index for structure ( global highp 4X4 matrix of float) 0:102 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:104 move second child to first child ( temp highp 4-component vector of float) 0:104 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:104 'a17' (layout( location=46) smooth out 4-element array of highp 4-component vector of float) 0:104 i: direct index for structure (layout( column_major std140) uniform highp int) 0:104 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:105 move second child to first child ( temp highp 4-component vector of float) 0:105 direct index ( temp highp 4-component vector of float) 0:105 a18: direct index for structure ( out 10-element array of highp 4-component vector of float) 0:105 'anon@4' (layout( location=50) out block{ out 10-element array of highp 4-component vector of float a18}) 0:105 Constant: 0:105 0 (const uint) 0:105 Constant: 0:105 5 (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 highp 2-component vector of float) 0:106 a19: direct index for structure (layout( location=60) out highp 2-component vector of float) 0:106 'anon@5' ( out block{layout( location=60) out highp 2-component vector of float a19}) 0:106 Constant: 0:106 0 (const uint) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:107 move second child to first child ( temp highp 4-component vector of float) 0:107 a20: direct index for structure ( out highp 4-component vector of float) 0:107 'anon@6' ( out block{ out highp 4-component vector of float a20}) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:108 move second child to first child ( temp highp 2-component vector of float) 0:108 direct index ( smooth temp highp 2-component vector of float) 0:108 'a21' ( smooth out 2-element array of highp 2-component vector of float) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 0.000000 0:108 0.000000 0:109 move second child to first child ( temp highp 2-component vector of float) 0:109 direct index ( smooth temp highp 2-component vector of float) 0:109 'a21' ( smooth out 2-element array of highp 2-component vector of float) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0.000000 0:109 0.000000 0:? Linker Objects 0:? 'a0' (layout( location=40) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( location=1) out block{ out highp 4-component vector of float a1}) 0:? 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:? 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:? 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:? 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:? 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:? 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:? 'a16' (layout( location=39) smooth out highp float) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'a17' (layout( location=46) smooth out 4-element array of highp 4-component vector of float) 0:? 'anon@4' (layout( location=50) out block{ out 10-element array of highp 4-component vector of float a18}) 0:? 'anon@5' ( out block{layout( location=60) out highp 2-component vector of float a19}) 0:? 'anon@6' ( out block{ out highp 4-component vector of float a20}) 0:? 'a21' ( smooth out 2-element array of highp 2-component vector of float) Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 'o' ( out highp 4-component vector of float) 0:76 b1: direct index for structure ( in highp 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp highp 4-component vector of float) 0:77 'o' ( out highp 4-component vector of float) 0:77 b2: direct index for structure ( in highp 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp highp 4-component vector of float) 0:78 'o' ( out highp 4-component vector of float) 0:78 b3: direct index for structure ( in highp 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp highp 4-component vector of float) 0:79 'o' ( out highp 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp highp 4-component vector of float) 0:80 'o' ( out highp 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp highp 4-component vector of float) 0:81 'o' ( out highp 4-component vector of float) 0:81 b5: direct index for structure ( in highp 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp highp 4-component vector of float) 0:82 'o' ( out highp 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp highp 4-component vector of float) 0:83 'o' ( out highp 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp highp 4-component vector of float) 0:84 'o' ( out highp 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp highp 4-component vector of float) 0:85 'o' ( out highp 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp highp 4-component vector of float) 0:86 'o' ( out highp 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp highp 4-component vector of float) 0:87 'o' ( out highp 4-component vector of float) 0:87 Construct vec4 ( temp highp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp highp 4-component vector of float) 0:88 'o' ( out highp 4-component vector of float) 0:88 vector swizzle ( temp highp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in highp 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp highp 4-component vector of float) 0:89 'o' ( out highp 4-component vector of float) 0:89 Construct vec4 ( temp highp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in highp float) 0:89 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp highp 4-component vector of float) 0:90 'o' ( out highp 4-component vector of float) 0:90 vector swizzle ( temp highp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in highp 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp highp 4-component vector of float) 0:91 'o' ( out highp 4-component vector of float) 0:91 Construct vec4 ( temp highp 4-component vector of float) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp highp 4-component vector of float) 0:92 'o' ( out highp 4-component vector of float) 0:92 Construct vec4 ( temp highp 4-component vector of float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp highp float) 0:92 add ( temp highp float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp highp 4-component vector of float) 0:93 'o' ( out highp 4-component vector of float) 0:93 Construct vec4 ( temp highp 4-component vector of float) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp highp 4-component vector of float) 0:95 'o' ( out highp 4-component vector of float) 0:95 vector swizzle ( temp highp 4-component vector of float) 0:95 matrix-times-vector ( temp highp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp highp 4-component vector of float) 0:96 'o' ( out highp 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in highp 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp highp 4-component vector of float) 0:97 'o' ( out highp 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in highp 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp highp 4-component vector of float) 0:99 'o' ( out highp 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:99 i: direct index for structure (layout( column_major std140) uniform highp int) 0:99 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp highp 4-component vector of float) 0:100 'o' ( out highp 4-component vector of float) 0:100 indirect index ( temp highp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of highp 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major std140) uniform highp int) 0:100 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp highp 4-component vector of float) 0:101 'o' ( out highp 4-component vector of float) 0:101 vector swizzle ( temp highp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp highp 4-component vector of float) 0:102 'o' ( out highp 4-component vector of float) 0:102 a20: direct index for structure ( in highp 4-component vector of float) 0:102 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp highp 4-component vector of float) 0:103 'o' ( out highp 4-component vector of float) 0:103 Construct vec4 ( temp highp 4-component vector of float) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:? 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:? 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in highp 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:? 'b16' ( flat in highp uint) 0:? 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:? 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:? 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:? 'o' ( out highp 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 128 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 13 18 26 34 43 56 75 82 98 110 115 121 124 127 Source GLSL 460 Name 4 "main" Name 13 "a0" Name 16 "ABlock0" MemberName 16(ABlock0) 0 "a1" Name 18 "" Name 24 "ABlock1" MemberName 24(ABlock1) 0 "a2" MemberName 24(ABlock1) 1 "a3" Name 26 "" Name 34 "a4" Name 41 "ABlock2" MemberName 41(ABlock2) 0 "a5" MemberName 41(ABlock2) 1 "a6" MemberName 41(ABlock2) 2 "a7" Name 43 "" Name 52 "S" MemberName 52(S) 0 "a" MemberName 52(S) 1 "b" Name 54 "ABlock3" MemberName 54(ABlock3) 0 "a8" MemberName 54(ABlock3) 1 "a9" MemberName 54(ABlock3) 2 "a10" MemberName 54(ABlock3) 3 "a11" Name 56 "" Name 75 "a12" Name 80 "AStruct1" MemberName 80(AStruct1) 0 "a13" MemberName 80(AStruct1) 1 "a14" MemberName 80(AStruct1) 2 "a15" Name 82 "s0" Name 98 "a17" Name 99 "UBO0" MemberName 99(UBO0) 0 "i" Name 101 "ubo0" Name 108 "ABlock4" MemberName 108(ABlock4) 0 "a18" Name 110 "" Name 113 "ABlock5" MemberName 113(ABlock5) 0 "a19" Name 115 "" Name 119 "Block0" MemberName 119(Block0) 0 "a20" Name 121 "" Name 124 "a21" Name 127 "a16" Decorate 13(a0) Location 40 Decorate 16(ABlock0) Block Decorate 18 Location 1 Decorate 24(ABlock1) Block MemberDecorate 24(ABlock1) 0 Location 3 MemberDecorate 24(ABlock1) 1 Location 2 Decorate 26 Location 0 Decorate 34(a4) Location 5 Decorate 41(ABlock2) Block MemberDecorate 41(ABlock2) 0 Location 4 MemberDecorate 41(ABlock2) 1 Location 8 MemberDecorate 41(ABlock2) 2 Location 10 Decorate 43 Location 2 Decorate 54(ABlock3) Block MemberDecorate 54(ABlock3) 0 Location 12 MemberDecorate 54(ABlock3) 1 Location 15 MemberDecorate 54(ABlock3) 2 Location 17 MemberDecorate 54(ABlock3) 3 Location 19 Decorate 56 Location 7 Decorate 75(a12) Location 27 Decorate 82(s0) Location 30 Decorate 98(a17) Location 46 Decorate 99(UBO0) Block MemberDecorate 99(UBO0) 0 Offset 0 Decorate 101(ubo0) Binding 0 Decorate 101(ubo0) DescriptorSet 0 Decorate 108(ABlock4) Block Decorate 110 Location 50 Decorate 113(ABlock5) Block MemberDecorate 113(ABlock5) 0 Location 60 Decorate 115 Location 20 Decorate 119(Block0) Block Decorate 121 Location 21 Decorate 124(a21) Location 22 Decorate 127(a16) Location 39 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: 6(bool) ConstantFalse 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Output 11(fvec4) 13(a0): 12(ptr) Variable Output 14: 10(float) Constant 1065353216 15: 11(fvec4) ConstantComposite 14 14 14 14 16(ABlock0): TypeStruct 11(fvec4) 17: TypePointer Output 16(ABlock0) 18: 17(ptr) Variable Output 19: TypeInt 32 1 20: 19(int) Constant 0 21: 10(float) Constant 0 22: 11(fvec4) ConstantComposite 21 21 21 21 24(ABlock1): TypeStruct 11(fvec4) 11(fvec4) 25: TypePointer Output 24(ABlock1) 26: 25(ptr) Variable Output 28: 19(int) Constant 1 30: TypeInt 32 0 31: 30(int) Constant 3 32: TypeArray 11(fvec4) 31 33: TypePointer Output 32 34(a4): 33(ptr) Variable Output 37: 19(int) Constant 2 39: 30(int) Constant 2 40: TypeArray 11(fvec4) 39 41(ABlock2): TypeStruct 11(fvec4) 40 40 42: TypePointer Output 41(ABlock2) 43: 42(ptr) Variable Output 49: TypeVector 10(float) 2 50: TypeArray 49(fvec2) 39 51: TypeArray 10(float) 31 52(S): TypeStruct 51 10(float) 53: TypeArray 52(S) 39 54(ABlock3): TypeStruct 10(float) 50 40 53 55: TypePointer Output 54(ABlock3) 56: 55(ptr) Variable Output 57: TypePointer Output 10(float) 59: 30(int) Constant 0 61: 30(int) Constant 1 65: 19(int) Constant 3 74: TypePointer Output 51 75(a12): 74(ptr) Variable Output 79: TypeMatrix 11(fvec4) 4 80(AStruct1): TypeStruct 49(fvec2) 52(S) 79 81: TypePointer Output 80(AStruct1) 82(s0): 81(ptr) Variable Output 88: 11(fvec4) ConstantComposite 14 21 21 21 89: 11(fvec4) ConstantComposite 21 14 21 21 90: 11(fvec4) ConstantComposite 21 21 14 21 91: 11(fvec4) ConstantComposite 21 21 21 14 92: 79 ConstantComposite 88 89 90 91 93: TypePointer Output 79 95: 30(int) Constant 4 96: TypeArray 11(fvec4) 95 97: TypePointer Output 96 98(a17): 97(ptr) Variable Output 99(UBO0): TypeStruct 19(int) 100: TypePointer Uniform 99(UBO0) 101(ubo0): 100(ptr) Variable Uniform 102: TypePointer Uniform 19(int) 106: 30(int) Constant 10 107: TypeArray 11(fvec4) 106 108(ABlock4): TypeStruct 107 109: TypePointer Output 108(ABlock4) 110: 109(ptr) Variable Output 111: 19(int) Constant 5 113(ABlock5): TypeStruct 49(fvec2) 114: TypePointer Output 113(ABlock5) 115: 114(ptr) Variable Output 116: 49(fvec2) ConstantComposite 21 21 117: TypePointer Output 49(fvec2) 119(Block0): TypeStruct 11(fvec4) 120: TypePointer Output 119(Block0) 121: 120(ptr) Variable Output 123: TypePointer Output 50 124(a21): 123(ptr) Variable Output 127(a16): 57(ptr) Variable Output 4(main): 2 Function None 3 5: Label SelectionMerge 9 None BranchConditional 7 8 9 8: Label Store 13(a0) 15 Branch 9 9: Label 23: 12(ptr) AccessChain 18 20 Store 23 22 27: 12(ptr) AccessChain 26 20 Store 27 22 29: 12(ptr) AccessChain 26 28 Store 29 22 35: 12(ptr) AccessChain 34(a4) 20 Store 35 22 36: 12(ptr) AccessChain 34(a4) 28 Store 36 22 38: 12(ptr) AccessChain 34(a4) 37 Store 38 22 44: 12(ptr) AccessChain 43 20 Store 44 22 45: 12(ptr) AccessChain 43 28 20 Store 45 22 46: 12(ptr) AccessChain 43 28 28 Store 46 22 47: 12(ptr) AccessChain 43 37 20 Store 47 22 48: 12(ptr) AccessChain 43 37 28 Store 48 22 58: 57(ptr) AccessChain 56 20 Store 58 21 60: 57(ptr) AccessChain 56 28 20 59 Store 60 21 62: 57(ptr) AccessChain 56 28 28 61 Store 62 21 63: 12(ptr) AccessChain 56 37 20 Store 63 22 64: 12(ptr) AccessChain 56 37 28 Store 64 22 66: 57(ptr) AccessChain 56 65 20 20 20 Store 66 21 67: 57(ptr) AccessChain 56 65 20 20 28 Store 67 21 68: 57(ptr) AccessChain 56 65 20 20 37 Store 68 21 69: 57(ptr) AccessChain 56 65 20 28 Store 69 21 70: 57(ptr) AccessChain 56 65 28 20 20 Store 70 21 71: 57(ptr) AccessChain 56 65 28 20 28 Store 71 21 72: 57(ptr) AccessChain 56 65 28 20 37 Store 72 21 73: 57(ptr) AccessChain 56 65 28 28 Store 73 21 76: 57(ptr) AccessChain 75(a12) 20 Store 76 21 77: 57(ptr) AccessChain 75(a12) 28 Store 77 21 78: 57(ptr) AccessChain 75(a12) 37 Store 78 21 83: 57(ptr) AccessChain 82(s0) 20 61 Store 83 21 84: 57(ptr) AccessChain 82(s0) 28 20 20 Store 84 21 85: 57(ptr) AccessChain 82(s0) 28 20 28 Store 85 21 86: 57(ptr) AccessChain 82(s0) 28 20 37 Store 86 21 87: 57(ptr) AccessChain 82(s0) 28 28 Store 87 21 94: 93(ptr) AccessChain 82(s0) 37 Store 94 92 103: 102(ptr) AccessChain 101(ubo0) 20 104: 19(int) Load 103 105: 12(ptr) AccessChain 98(a17) 104 Store 105 15 112: 12(ptr) AccessChain 110 20 111 Store 112 15 118: 117(ptr) AccessChain 115 20 Store 118 116 122: 12(ptr) AccessChain 121 20 Store 122 15 125: 117(ptr) AccessChain 124(a21) 20 Store 125 116 126: 117(ptr) AccessChain 124(a21) 28 Store 126 116 Return FunctionEnd glslang-16.0.0/Test/baseResults/link.vk.crossStageIO.1.vert.out000066400000000000000000003771421506534232700242540ustar00rootroot00000000000000link.vk.crossStageIO.1.vert Shader version: 460 0:? Sequence 0:66 Function Definition: main( ( global void) 0:66 Function Parameters: 0:67 Sequence 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Constant: 0:67 false (const bool) 0:67 true case 0:68 Sequence 0:68 move second child to first child ( temp highp 4-component vector of float) 0:68 'a0' (layout( location=40) smooth out highp 4-component vector of float) 0:68 Constant: 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:70 move second child to first child ( temp highp 4-component vector of float) 0:70 a1: direct index for structure ( out highp 4-component vector of float) 0:70 'anon@0' (layout( location=1) out block{ out highp 4-component vector of float a1}) 0:70 Constant: 0:70 0 (const uint) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp highp 4-component vector of float) 0:71 a2: direct index for structure (layout( location=3) out highp 4-component vector of float) 0:71 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:71 Constant: 0:71 0 (const uint) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 move second child to first child ( temp highp 4-component vector of float) 0:72 a3: direct index for structure (layout( location=2) out highp 4-component vector of float) 0:72 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:72 Constant: 0:72 1 (const uint) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 move second child to first child ( temp highp 4-component vector of float) 0:73 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:73 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 move second child to first child ( temp highp 4-component vector of float) 0:74 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:74 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 move second child to first child ( temp highp 4-component vector of float) 0:75 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:75 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 a5: direct index for structure (layout( location=4) out highp 4-component vector of float) 0:76 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:76 Constant: 0:76 0 (const uint) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 move second child to first child ( temp highp 4-component vector of float) 0:77 direct index (layout( location=8) temp highp 4-component vector of float) 0:77 a6: direct index for structure (layout( location=8) out 2-element array of highp 4-component vector of float) 0:77 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:77 Constant: 0:77 1 (const uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 move second child to first child ( temp highp 4-component vector of float) 0:78 direct index (layout( location=8) temp highp 4-component vector of float) 0:78 a6: direct index for structure (layout( location=8) out 2-element array of highp 4-component vector of float) 0:78 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:78 Constant: 0:78 1 (const uint) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 move second child to first child ( temp highp 4-component vector of float) 0:79 direct index (layout( location=10) temp highp 4-component vector of float) 0:79 a7: direct index for structure (layout( location=10) out 2-element array of highp 4-component vector of float) 0:79 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:79 Constant: 0:79 2 (const uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 move second child to first child ( temp highp 4-component vector of float) 0:80 direct index (layout( location=10) temp highp 4-component vector of float) 0:80 a7: direct index for structure (layout( location=10) out 2-element array of highp 4-component vector of float) 0:80 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:80 Constant: 0:80 2 (const uint) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 move second child to first child ( temp highp float) 0:81 a8: direct index for structure (layout( location=12) out highp float) 0:81 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:81 Constant: 0:81 0 (const uint) 0:81 Constant: 0:81 0.000000 0:82 move second child to first child ( temp highp float) 0:82 direct index ( temp highp float) 0:82 direct index (layout( location=15) temp highp 2-component vector of float) 0:82 a9: direct index for structure (layout( location=15) out 2-element array of highp 2-component vector of float) 0:82 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:82 Constant: 0:82 1 (const uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0.000000 0:83 move second child to first child ( temp highp float) 0:83 direct index ( temp highp float) 0:83 direct index (layout( location=15) temp highp 2-component vector of float) 0:83 a9: direct index for structure (layout( location=15) out 2-element array of highp 2-component vector of float) 0:83 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:83 Constant: 0:83 1 (const uint) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0.000000 0:84 move second child to first child ( temp highp 4-component vector of float) 0:84 direct index (layout( location=17) temp highp 4-component vector of float) 0:84 a10: direct index for structure (layout( location=17) out 2-element array of highp 4-component vector of float) 0:84 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:84 Constant: 0:84 2 (const uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 move second child to first child ( temp highp 4-component vector of float) 0:85 direct index (layout( location=17) temp highp 4-component vector of float) 0:85 a10: direct index for structure (layout( location=17) out 2-element array of highp 4-component vector of float) 0:85 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:85 Constant: 0:85 2 (const uint) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 move second child to first child ( temp highp float) 0:86 direct index ( temp highp float) 0:86 a: direct index for structure ( global 3-element array of highp float) 0:86 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:86 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:86 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:86 Constant: 0:86 3 (const uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0.000000 0:87 move second child to first child ( temp highp float) 0:87 direct index ( temp highp float) 0:87 a: direct index for structure ( global 3-element array of highp float) 0:87 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:87 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:87 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:87 Constant: 0:87 3 (const uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0.000000 0:88 move second child to first child ( temp highp float) 0:88 direct index ( temp highp float) 0:88 a: direct index for structure ( global 3-element array of highp float) 0:88 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:88 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:88 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:88 Constant: 0:88 3 (const uint) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0.000000 0:89 move second child to first child ( temp highp float) 0:89 b: direct index for structure ( global highp float) 0:89 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:89 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:89 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:89 Constant: 0:89 3 (const uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0.000000 0:90 move second child to first child ( temp highp float) 0:90 direct index ( temp highp float) 0:90 a: direct index for structure ( global 3-element array of highp float) 0:90 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:90 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:90 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:90 Constant: 0:90 3 (const uint) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0.000000 0:91 move second child to first child ( temp highp float) 0:91 direct index ( temp highp float) 0:91 a: direct index for structure ( global 3-element array of highp float) 0:91 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:91 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:91 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0.000000 0:92 move second child to first child ( temp highp float) 0:92 direct index ( temp highp float) 0:92 a: direct index for structure ( global 3-element array of highp float) 0:92 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:92 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:92 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:92 Constant: 0:92 3 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.000000 0:93 move second child to first child ( temp highp float) 0:93 b: direct index for structure ( global highp float) 0:93 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:93 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:93 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:93 Constant: 0:93 3 (const uint) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0.000000 0:94 move second child to first child ( temp highp float) 0:94 direct index (layout( location=27) smooth temp highp float) 0:94 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0.000000 0:95 move second child to first child ( temp highp float) 0:95 direct index (layout( location=27) smooth temp highp float) 0:95 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0.000000 0:96 move second child to first child ( temp highp float) 0:96 direct index (layout( location=27) smooth temp highp float) 0:96 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0.000000 0:97 move second child to first child ( temp highp float) 0:97 direct index ( temp highp float) 0:97 a13: direct index for structure ( global highp 2-component vector of float) 0:97 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 0.000000 0:98 move second child to first child ( temp highp float) 0:98 direct index ( temp highp float) 0:98 a: direct index for structure ( global 3-element array of highp float) 0:98 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:98 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0.000000 0:99 move second child to first child ( temp highp float) 0:99 direct index ( temp highp float) 0:99 a: direct index for structure ( global 3-element array of highp float) 0:99 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:99 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0.000000 0:100 move second child to first child ( temp highp float) 0:100 direct index ( temp highp float) 0:100 a: direct index for structure ( global 3-element array of highp float) 0:100 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:100 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 0.000000 0:101 move second child to first child ( temp highp float) 0:101 b: direct index for structure ( global highp float) 0:101 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:101 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp highp 4X4 matrix of float) 0:102 a15: direct index for structure ( global highp 4X4 matrix of float) 0:102 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:104 move second child to first child ( temp highp 4-component vector of float) 0:104 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:104 'a17' (layout( location=46) smooth out 4-element array of highp 4-component vector of float) 0:104 i: direct index for structure (layout( column_major std140) uniform highp int) 0:104 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:105 move second child to first child ( temp highp 4-component vector of float) 0:105 direct index ( temp highp 4-component vector of float) 0:105 a18: direct index for structure ( out 10-element array of highp 4-component vector of float) 0:105 'anon@4' (layout( location=50) out block{ out 10-element array of highp 4-component vector of float a18}) 0:105 Constant: 0:105 0 (const uint) 0:105 Constant: 0:105 5 (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 highp 2-component vector of float) 0:106 a19: direct index for structure (layout( location=60) out highp 2-component vector of float) 0:106 'anon@5' ( out block{layout( location=60) out highp 2-component vector of float a19}) 0:106 Constant: 0:106 0 (const uint) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:107 move second child to first child ( temp highp 4-component vector of float) 0:107 a20: direct index for structure ( out highp 4-component vector of float) 0:107 'anon@6' ( out block{ out highp 4-component vector of float a20}) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:108 move second child to first child ( temp highp 2-component vector of float) 0:108 direct index ( smooth temp highp 2-component vector of float) 0:108 'a21' ( smooth out 2-element array of highp 2-component vector of float) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 0.000000 0:108 0.000000 0:109 move second child to first child ( temp highp 2-component vector of float) 0:109 direct index ( smooth temp highp 2-component vector of float) 0:109 'a21' ( smooth out 2-element array of highp 2-component vector of float) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0.000000 0:109 0.000000 0:? Linker Objects 0:? 'a0' (layout( location=40) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( location=1) out block{ out highp 4-component vector of float a1}) 0:? 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:? 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:? 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:? 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:? 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:? 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:? 'a16' (layout( location=39) smooth out highp float) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'a17' (layout( location=46) smooth out 4-element array of highp 4-component vector of float) 0:? 'anon@4' (layout( location=50) out block{ out 10-element array of highp 4-component vector of float a18}) 0:? 'anon@5' ( out block{layout( location=60) out highp 2-component vector of float a19}) 0:? 'anon@6' ( out block{ out highp 4-component vector of float a20}) 0:? 'a21' ( smooth out 2-element array of highp 2-component vector of float) link.vk.crossStageIO.1.geom Shader version: 460 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:28 Function Definition: main( ( global void) 0:28 Function Parameters: 0:29 Sequence 0:29 Sequence 0:29 Sequence 0:29 move second child to first child ( temp highp int) 0:29 'i' ( temp highp int) 0:29 Constant: 0:29 0 (const int) 0:29 Loop with condition tested first 0:29 Loop Condition 0:29 Compare Less Than ( temp bool) 0:29 'i' ( temp highp int) 0:29 Constant: 0:29 32 (const int) 0:29 Loop Body 0:30 Sequence 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 indirect index (layout( location=0 stream=0) temp highp 4-component vector of float) 0:30 'o0' (layout( location=0 stream=0) out 64-element array of highp 4-component vector of float) 0:30 'i' ( temp highp int) 0:30 indirect index (layout( location=0) temp highp 4-component vector of float) 0:30 a0: direct index for structure (layout( location=0) in 64-element array of highp 4-component vector of float) 0:30 direct index ( temp block{layout( location=0) in 64-element array of highp 4-component vector of float a0}) 0:30 'gs_in1' ( in 3-element array of block{layout( location=0) in 64-element array of highp 4-component vector of float a0}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 'i' ( temp highp int) 0:29 Loop Terminal Expression 0:29 Pre-Increment ( temp highp int) 0:29 'i' ( temp highp int) 0:33 move second child to first child ( temp highp 4-component vector of float) 0:33 a20: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:33 'gs_out0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float a20}) 0:33 Constant: 0:33 0 (const int) 0:33 a20: direct index for structure ( in highp 4-component vector of float) 0:33 direct index ( temp block{ in highp 4-component vector of float a20}) 0:33 'gs_in0' ( in 3-element array of block{ in highp 4-component vector of float a20}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 move second child to first child ( temp highp 2-component vector of float) 0:34 direct index (layout( stream=0) temp highp 2-component vector of float) 0:34 'g_a21' (layout( stream=0) out 2-element array of highp 2-component vector of float) 0:34 Constant: 0:34 0 (const int) 0:34 direct index ( temp highp 2-component vector of float) 0:34 direct index ( temp 2-element array of highp 2-component vector of float) 0:34 'a21' ( in 3-element array of 2-element array of highp 2-component vector of float) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp highp 2-component vector of float) 0:35 direct index (layout( stream=0) temp highp 2-component vector of float) 0:35 'g_a21' (layout( stream=0) out 2-element array of highp 2-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 direct index ( temp highp 2-component vector of float) 0:35 direct index ( temp 2-element array of highp 2-component vector of float) 0:35 'a21' ( in 3-element array of 2-element array of highp 2-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:37 '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, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance}) 0:37 Constant: 0:37 0 (const uint) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:39 EmitVertex ( global void) 0:40 EmitVertex ( global void) 0:41 EmitVertex ( global void) 0:? Linker Objects 0:? 'gs_in0' ( in 3-element array of block{ in highp 4-component vector of float a20}) 0:? 'a21' ( in 3-element array of 2-element array of highp 2-component vector of float) 0:? 'gs_out0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float a20}) 0:? 'g_a21' (layout( stream=0) out 2-element array of highp 2-component vector of float) 0:? 'gs_in1' ( in 3-element array of block{layout( location=0) in 64-element array of highp 4-component vector of float a0}) 0:? 'o0' (layout( location=0 stream=0) out 64-element array of highp 4-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, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance}) link.vk.crossStageIO.1.frag Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:71 Function Definition: uncalled( ( global highp uint) 0:71 Function Parameters: 0:72 Sequence 0:72 Branch: Return with expression 0:72 'b16' ( flat in highp uint) 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 'o' ( out highp 4-component vector of float) 0:76 b1: direct index for structure ( in highp 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp highp 4-component vector of float) 0:77 'o' ( out highp 4-component vector of float) 0:77 b2: direct index for structure ( in highp 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp highp 4-component vector of float) 0:78 'o' ( out highp 4-component vector of float) 0:78 b3: direct index for structure ( in highp 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp highp 4-component vector of float) 0:79 'o' ( out highp 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp highp 4-component vector of float) 0:80 'o' ( out highp 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp highp 4-component vector of float) 0:81 'o' ( out highp 4-component vector of float) 0:81 b5: direct index for structure ( in highp 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp highp 4-component vector of float) 0:82 'o' ( out highp 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp highp 4-component vector of float) 0:83 'o' ( out highp 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp highp 4-component vector of float) 0:84 'o' ( out highp 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp highp 4-component vector of float) 0:85 'o' ( out highp 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp highp 4-component vector of float) 0:86 'o' ( out highp 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp highp 4-component vector of float) 0:87 'o' ( out highp 4-component vector of float) 0:87 Construct vec4 ( temp highp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp highp 4-component vector of float) 0:88 'o' ( out highp 4-component vector of float) 0:88 vector swizzle ( temp highp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in highp 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp highp 4-component vector of float) 0:89 'o' ( out highp 4-component vector of float) 0:89 Construct vec4 ( temp highp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in highp float) 0:89 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp highp 4-component vector of float) 0:90 'o' ( out highp 4-component vector of float) 0:90 vector swizzle ( temp highp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in highp 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp highp 4-component vector of float) 0:91 'o' ( out highp 4-component vector of float) 0:91 Construct vec4 ( temp highp 4-component vector of float) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp highp 4-component vector of float) 0:92 'o' ( out highp 4-component vector of float) 0:92 Construct vec4 ( temp highp 4-component vector of float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp highp float) 0:92 add ( temp highp float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp highp 4-component vector of float) 0:93 'o' ( out highp 4-component vector of float) 0:93 Construct vec4 ( temp highp 4-component vector of float) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp highp 4-component vector of float) 0:95 'o' ( out highp 4-component vector of float) 0:95 vector swizzle ( temp highp 4-component vector of float) 0:95 matrix-times-vector ( temp highp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp highp 4-component vector of float) 0:96 'o' ( out highp 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in highp 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp highp 4-component vector of float) 0:97 'o' ( out highp 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in highp 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp highp 4-component vector of float) 0:99 'o' ( out highp 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:99 i: direct index for structure (layout( column_major std140) uniform highp int) 0:99 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp highp 4-component vector of float) 0:100 'o' ( out highp 4-component vector of float) 0:100 indirect index ( temp highp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of highp 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major std140) uniform highp int) 0:100 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp highp 4-component vector of float) 0:101 'o' ( out highp 4-component vector of float) 0:101 vector swizzle ( temp highp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp highp 4-component vector of float) 0:102 'o' ( out highp 4-component vector of float) 0:102 a20: direct index for structure ( in highp 4-component vector of float) 0:102 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp highp 4-component vector of float) 0:103 'o' ( out highp 4-component vector of float) 0:103 Construct vec4 ( temp highp 4-component vector of float) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'g_a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'g_a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:? 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:? 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in highp 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:? 'b16' ( flat in highp uint) 0:? 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:? 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:? 'g_a21' ( smooth in 2-element array of highp 2-component vector of float) 0:? 'o' ( out highp 4-component vector of float) Linked vertex stage: Linked geometry stage: Linked fragment stage: Shader version: 460 0:? Sequence 0:66 Function Definition: main( ( global void) 0:66 Function Parameters: 0:67 Sequence 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Constant: 0:67 false (const bool) 0:67 true case 0:68 Sequence 0:68 move second child to first child ( temp highp 4-component vector of float) 0:68 'a0' (layout( location=40) smooth out highp 4-component vector of float) 0:68 Constant: 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:68 1.000000 0:70 move second child to first child ( temp highp 4-component vector of float) 0:70 a1: direct index for structure ( out highp 4-component vector of float) 0:70 'anon@0' (layout( location=1) out block{ out highp 4-component vector of float a1}) 0:70 Constant: 0:70 0 (const uint) 0:70 Constant: 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:70 0.000000 0:71 move second child to first child ( temp highp 4-component vector of float) 0:71 a2: direct index for structure (layout( location=3) out highp 4-component vector of float) 0:71 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:71 Constant: 0:71 0 (const uint) 0:71 Constant: 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:71 0.000000 0:72 move second child to first child ( temp highp 4-component vector of float) 0:72 a3: direct index for structure (layout( location=2) out highp 4-component vector of float) 0:72 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:72 Constant: 0:72 1 (const uint) 0:72 Constant: 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:72 0.000000 0:73 move second child to first child ( temp highp 4-component vector of float) 0:73 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:73 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 Constant: 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:73 0.000000 0:74 move second child to first child ( temp highp 4-component vector of float) 0:74 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:74 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:74 0.000000 0:75 move second child to first child ( temp highp 4-component vector of float) 0:75 direct index (layout( location=5) smooth temp highp 4-component vector of float) 0:75 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 Constant: 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:75 0.000000 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 a5: direct index for structure (layout( location=4) out highp 4-component vector of float) 0:76 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:76 Constant: 0:76 0 (const uint) 0:76 Constant: 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:76 0.000000 0:77 move second child to first child ( temp highp 4-component vector of float) 0:77 direct index (layout( location=8) temp highp 4-component vector of float) 0:77 a6: direct index for structure (layout( location=8) out 2-element array of highp 4-component vector of float) 0:77 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:77 Constant: 0:77 1 (const uint) 0:77 Constant: 0:77 0 (const int) 0:77 Constant: 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:77 0.000000 0:78 move second child to first child ( temp highp 4-component vector of float) 0:78 direct index (layout( location=8) temp highp 4-component vector of float) 0:78 a6: direct index for structure (layout( location=8) out 2-element array of highp 4-component vector of float) 0:78 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:78 Constant: 0:78 1 (const uint) 0:78 Constant: 0:78 1 (const int) 0:78 Constant: 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:78 0.000000 0:79 move second child to first child ( temp highp 4-component vector of float) 0:79 direct index (layout( location=10) temp highp 4-component vector of float) 0:79 a7: direct index for structure (layout( location=10) out 2-element array of highp 4-component vector of float) 0:79 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:79 Constant: 0:79 2 (const uint) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:79 0.000000 0:80 move second child to first child ( temp highp 4-component vector of float) 0:80 direct index (layout( location=10) temp highp 4-component vector of float) 0:80 a7: direct index for structure (layout( location=10) out 2-element array of highp 4-component vector of float) 0:80 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:80 Constant: 0:80 2 (const uint) 0:80 Constant: 0:80 1 (const int) 0:80 Constant: 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:80 0.000000 0:81 move second child to first child ( temp highp float) 0:81 a8: direct index for structure (layout( location=12) out highp float) 0:81 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:81 Constant: 0:81 0 (const uint) 0:81 Constant: 0:81 0.000000 0:82 move second child to first child ( temp highp float) 0:82 direct index ( temp highp float) 0:82 direct index (layout( location=15) temp highp 2-component vector of float) 0:82 a9: direct index for structure (layout( location=15) out 2-element array of highp 2-component vector of float) 0:82 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:82 Constant: 0:82 1 (const uint) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0.000000 0:83 move second child to first child ( temp highp float) 0:83 direct index ( temp highp float) 0:83 direct index (layout( location=15) temp highp 2-component vector of float) 0:83 a9: direct index for structure (layout( location=15) out 2-element array of highp 2-component vector of float) 0:83 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:83 Constant: 0:83 1 (const uint) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 Constant: 0:83 0.000000 0:84 move second child to first child ( temp highp 4-component vector of float) 0:84 direct index (layout( location=17) temp highp 4-component vector of float) 0:84 a10: direct index for structure (layout( location=17) out 2-element array of highp 4-component vector of float) 0:84 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:84 Constant: 0:84 2 (const uint) 0:84 Constant: 0:84 0 (const int) 0:84 Constant: 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:84 0.000000 0:85 move second child to first child ( temp highp 4-component vector of float) 0:85 direct index (layout( location=17) temp highp 4-component vector of float) 0:85 a10: direct index for structure (layout( location=17) out 2-element array of highp 4-component vector of float) 0:85 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:85 Constant: 0:85 2 (const uint) 0:85 Constant: 0:85 1 (const int) 0:85 Constant: 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:85 0.000000 0:86 move second child to first child ( temp highp float) 0:86 direct index ( temp highp float) 0:86 a: direct index for structure ( global 3-element array of highp float) 0:86 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:86 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:86 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:86 Constant: 0:86 3 (const uint) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0 (const int) 0:86 Constant: 0:86 0.000000 0:87 move second child to first child ( temp highp float) 0:87 direct index ( temp highp float) 0:87 a: direct index for structure ( global 3-element array of highp float) 0:87 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:87 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:87 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:87 Constant: 0:87 3 (const uint) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 1 (const int) 0:87 Constant: 0:87 0.000000 0:88 move second child to first child ( temp highp float) 0:88 direct index ( temp highp float) 0:88 a: direct index for structure ( global 3-element array of highp float) 0:88 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:88 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:88 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:88 Constant: 0:88 3 (const uint) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 2 (const int) 0:88 Constant: 0:88 0.000000 0:89 move second child to first child ( temp highp float) 0:89 b: direct index for structure ( global highp float) 0:89 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:89 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:89 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:89 Constant: 0:89 3 (const uint) 0:89 Constant: 0:89 0 (const int) 0:89 Constant: 0:89 1 (const int) 0:89 Constant: 0:89 0.000000 0:90 move second child to first child ( temp highp float) 0:90 direct index ( temp highp float) 0:90 a: direct index for structure ( global 3-element array of highp float) 0:90 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:90 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:90 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:90 Constant: 0:90 3 (const uint) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 0.000000 0:91 move second child to first child ( temp highp float) 0:91 direct index ( temp highp float) 0:91 a: direct index for structure ( global 3-element array of highp float) 0:91 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:91 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:91 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0 (const int) 0:91 Constant: 0:91 1 (const int) 0:91 Constant: 0:91 0.000000 0:92 move second child to first child ( temp highp float) 0:92 direct index ( temp highp float) 0:92 a: direct index for structure ( global 3-element array of highp float) 0:92 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:92 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:92 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:92 Constant: 0:92 3 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 Constant: 0:92 0 (const int) 0:92 Constant: 0:92 2 (const int) 0:92 Constant: 0:92 0.000000 0:93 move second child to first child ( temp highp float) 0:93 b: direct index for structure ( global highp float) 0:93 direct index (layout( location=19) temp structure{ global 3-element array of highp float a, global highp float b}) 0:93 a11: direct index for structure (layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b}) 0:93 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:93 Constant: 0:93 3 (const uint) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 1 (const int) 0:93 Constant: 0:93 0.000000 0:94 move second child to first child ( temp highp float) 0:94 direct index (layout( location=27) smooth temp highp float) 0:94 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:94 Constant: 0:94 0 (const int) 0:94 Constant: 0:94 0.000000 0:95 move second child to first child ( temp highp float) 0:95 direct index (layout( location=27) smooth temp highp float) 0:95 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 0.000000 0:96 move second child to first child ( temp highp float) 0:96 direct index (layout( location=27) smooth temp highp float) 0:96 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:96 Constant: 0:96 2 (const int) 0:96 Constant: 0:96 0.000000 0:97 move second child to first child ( temp highp float) 0:97 direct index ( temp highp float) 0:97 a13: direct index for structure ( global highp 2-component vector of float) 0:97 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:97 Constant: 0:97 0 (const int) 0:97 Constant: 0:97 1 (const int) 0:97 Constant: 0:97 0.000000 0:98 move second child to first child ( temp highp float) 0:98 direct index ( temp highp float) 0:98 a: direct index for structure ( global 3-element array of highp float) 0:98 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:98 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:98 Constant: 0:98 1 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0 (const int) 0:98 Constant: 0:98 0.000000 0:99 move second child to first child ( temp highp float) 0:99 direct index ( temp highp float) 0:99 a: direct index for structure ( global 3-element array of highp float) 0:99 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:99 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0 (const int) 0:99 Constant: 0:99 1 (const int) 0:99 Constant: 0:99 0.000000 0:100 move second child to first child ( temp highp float) 0:100 direct index ( temp highp float) 0:100 a: direct index for structure ( global 3-element array of highp float) 0:100 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:100 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:100 Constant: 0:100 1 (const int) 0:100 Constant: 0:100 0 (const int) 0:100 Constant: 0:100 2 (const int) 0:100 Constant: 0:100 0.000000 0:101 move second child to first child ( temp highp float) 0:101 b: direct index for structure ( global highp float) 0:101 a14: direct index for structure ( global structure{ global 3-element array of highp float a, global highp float b}) 0:101 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 0.000000 0:102 move second child to first child ( temp highp 4X4 matrix of float) 0:102 a15: direct index for structure ( global highp 4X4 matrix of float) 0:102 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:102 Constant: 0:102 2 (const int) 0:102 Constant: 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 0.000000 0:102 1.000000 0:104 move second child to first child ( temp highp 4-component vector of float) 0:104 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:104 'a17' (layout( location=46) smooth out 4-element array of highp 4-component vector of float) 0:104 i: direct index for structure (layout( column_major std140) uniform highp int) 0:104 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:104 Constant: 0:104 0 (const int) 0:104 Constant: 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:104 1.000000 0:105 move second child to first child ( temp highp 4-component vector of float) 0:105 direct index ( temp highp 4-component vector of float) 0:105 a18: direct index for structure ( out 10-element array of highp 4-component vector of float) 0:105 'anon@4' (layout( location=50) out block{ out 10-element array of highp 4-component vector of float a18}) 0:105 Constant: 0:105 0 (const uint) 0:105 Constant: 0:105 5 (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 highp 2-component vector of float) 0:106 a19: direct index for structure (layout( location=60) out highp 2-component vector of float) 0:106 'anon@5' ( out block{layout( location=60) out highp 2-component vector of float a19}) 0:106 Constant: 0:106 0 (const uint) 0:106 Constant: 0:106 0.000000 0:106 0.000000 0:107 move second child to first child ( temp highp 4-component vector of float) 0:107 a20: direct index for structure ( out highp 4-component vector of float) 0:107 'anon@6' ( out block{ out highp 4-component vector of float a20}) 0:107 Constant: 0:107 0 (const uint) 0:107 Constant: 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:107 1.000000 0:108 move second child to first child ( temp highp 2-component vector of float) 0:108 direct index ( smooth temp highp 2-component vector of float) 0:108 'a21' ( smooth out 2-element array of highp 2-component vector of float) 0:108 Constant: 0:108 0 (const int) 0:108 Constant: 0:108 0.000000 0:108 0.000000 0:109 move second child to first child ( temp highp 2-component vector of float) 0:109 direct index ( smooth temp highp 2-component vector of float) 0:109 'a21' ( smooth out 2-element array of highp 2-component vector of float) 0:109 Constant: 0:109 1 (const int) 0:109 Constant: 0:109 0.000000 0:109 0.000000 0:? Linker Objects 0:? 'a0' (layout( location=40) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( location=1) out block{ out highp 4-component vector of float a1}) 0:? 'anon@1' ( out block{layout( location=3) out highp 4-component vector of float a2, layout( location=2) out highp 4-component vector of float a3}) 0:? 'a4' (layout( location=5) smooth out 3-element array of highp 4-component vector of float) 0:? 'anon@2' ( out block{layout( location=4) out highp 4-component vector of float a5, layout( location=8) out 2-element array of highp 4-component vector of float a6, layout( location=10) out 2-element array of highp 4-component vector of float a7}) 0:? 'anon@3' ( out block{layout( location=12) out highp float a8, layout( location=15) out 2-element array of highp 2-component vector of float a9, layout( location=17) out 2-element array of highp 4-component vector of float a10, layout( location=19) out 2-element array of structure{ global 3-element array of highp float a, global highp float b} a11}) 0:? 'a12' (layout( location=27) smooth out 3-element array of highp float) 0:? 's0' (layout( location=30) smooth out structure{ global highp 2-component vector of float a13, global structure{ global 3-element array of highp float a, global highp float b} a14, global highp 4X4 matrix of float a15}) 0:? 'a16' (layout( location=39) smooth out highp float) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'a17' (layout( location=46) smooth out 4-element array of highp 4-component vector of float) 0:? 'anon@4' (layout( location=50) out block{ out 10-element array of highp 4-component vector of float a18}) 0:? 'anon@5' ( out block{layout( location=60) out highp 2-component vector of float a19}) 0:? 'anon@6' ( out block{ out highp 4-component vector of float a20}) 0:? 'a21' ( smooth out 2-element array of highp 2-component vector of float) Shader version: 460 invocations = 1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:28 Function Definition: main( ( global void) 0:28 Function Parameters: 0:29 Sequence 0:29 Sequence 0:29 Sequence 0:29 move second child to first child ( temp highp int) 0:29 'i' ( temp highp int) 0:29 Constant: 0:29 0 (const int) 0:29 Loop with condition tested first 0:29 Loop Condition 0:29 Compare Less Than ( temp bool) 0:29 'i' ( temp highp int) 0:29 Constant: 0:29 32 (const int) 0:29 Loop Body 0:30 Sequence 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 indirect index (layout( location=0 stream=0) temp highp 4-component vector of float) 0:30 'o0' (layout( location=0 stream=0) out 64-element array of highp 4-component vector of float) 0:30 'i' ( temp highp int) 0:30 indirect index (layout( location=0) temp highp 4-component vector of float) 0:30 a0: direct index for structure (layout( location=0) in 64-element array of highp 4-component vector of float) 0:30 direct index ( temp block{layout( location=0) in 64-element array of highp 4-component vector of float a0}) 0:30 'gs_in1' ( in 3-element array of block{layout( location=0) in 64-element array of highp 4-component vector of float a0}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 0 (const int) 0:30 'i' ( temp highp int) 0:29 Loop Terminal Expression 0:29 Pre-Increment ( temp highp int) 0:29 'i' ( temp highp int) 0:33 move second child to first child ( temp highp 4-component vector of float) 0:33 a20: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:33 'gs_out0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float a20}) 0:33 Constant: 0:33 0 (const int) 0:33 a20: direct index for structure ( in highp 4-component vector of float) 0:33 direct index ( temp block{ in highp 4-component vector of float a20}) 0:33 'gs_in0' ( in 3-element array of block{ in highp 4-component vector of float a20}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:34 move second child to first child ( temp highp 2-component vector of float) 0:34 direct index (layout( stream=0) temp highp 2-component vector of float) 0:34 'g_a21' (layout( stream=0) out 2-element array of highp 2-component vector of float) 0:34 Constant: 0:34 0 (const int) 0:34 direct index ( temp highp 2-component vector of float) 0:34 direct index ( temp 2-element array of highp 2-component vector of float) 0:34 'a21' ( in 3-element array of 2-element array of highp 2-component vector of float) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child ( temp highp 2-component vector of float) 0:35 direct index (layout( stream=0) temp highp 2-component vector of float) 0:35 'g_a21' (layout( stream=0) out 2-element array of highp 2-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 direct index ( temp highp 2-component vector of float) 0:35 direct index ( temp 2-element array of highp 2-component vector of float) 0:35 'a21' ( in 3-element array of 2-element array of highp 2-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 1 (const int) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:37 '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, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance}) 0:37 Constant: 0:37 0 (const uint) 0:37 Constant: 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:37 0.000000 0:39 EmitVertex ( global void) 0:40 EmitVertex ( global void) 0:41 EmitVertex ( global void) 0:? Linker Objects 0:? 'gs_in0' ( in 3-element array of block{ in highp 4-component vector of float a20}) 0:? 'a21' ( in 3-element array of 2-element array of highp 2-component vector of float) 0:? 'gs_out0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float a20}) 0:? 'g_a21' (layout( stream=0) out 2-element array of highp 2-component vector of float) 0:? 'gs_in1' ( in 3-element array of block{layout( location=0) in 64-element array of highp 4-component vector of float a0}) 0:? 'o0' (layout( location=0 stream=0) out 64-element array of highp 4-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, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance}) Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 'o' ( out highp 4-component vector of float) 0:76 b1: direct index for structure ( in highp 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp highp 4-component vector of float) 0:77 'o' ( out highp 4-component vector of float) 0:77 b2: direct index for structure ( in highp 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp highp 4-component vector of float) 0:78 'o' ( out highp 4-component vector of float) 0:78 b3: direct index for structure ( in highp 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp highp 4-component vector of float) 0:79 'o' ( out highp 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp highp 4-component vector of float) 0:80 'o' ( out highp 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp highp 4-component vector of float) 0:81 'o' ( out highp 4-component vector of float) 0:81 b5: direct index for structure ( in highp 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp highp 4-component vector of float) 0:82 'o' ( out highp 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp highp 4-component vector of float) 0:83 'o' ( out highp 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp highp 4-component vector of float) 0:84 'o' ( out highp 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp highp 4-component vector of float) 0:85 'o' ( out highp 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp highp 4-component vector of float) 0:86 'o' ( out highp 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp highp 4-component vector of float) 0:87 'o' ( out highp 4-component vector of float) 0:87 Construct vec4 ( temp highp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp highp 4-component vector of float) 0:88 'o' ( out highp 4-component vector of float) 0:88 vector swizzle ( temp highp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in highp 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp highp 4-component vector of float) 0:89 'o' ( out highp 4-component vector of float) 0:89 Construct vec4 ( temp highp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in highp float) 0:89 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp highp 4-component vector of float) 0:90 'o' ( out highp 4-component vector of float) 0:90 vector swizzle ( temp highp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in highp 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp highp 4-component vector of float) 0:91 'o' ( out highp 4-component vector of float) 0:91 Construct vec4 ( temp highp 4-component vector of float) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp highp 4-component vector of float) 0:92 'o' ( out highp 4-component vector of float) 0:92 Construct vec4 ( temp highp 4-component vector of float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp highp float) 0:92 add ( temp highp float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp highp 4-component vector of float) 0:93 'o' ( out highp 4-component vector of float) 0:93 Construct vec4 ( temp highp 4-component vector of float) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp highp 4-component vector of float) 0:95 'o' ( out highp 4-component vector of float) 0:95 vector swizzle ( temp highp 4-component vector of float) 0:95 matrix-times-vector ( temp highp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp highp 4-component vector of float) 0:96 'o' ( out highp 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in highp 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp highp 4-component vector of float) 0:97 'o' ( out highp 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in highp 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp highp 4-component vector of float) 0:99 'o' ( out highp 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:99 i: direct index for structure (layout( column_major std140) uniform highp int) 0:99 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp highp 4-component vector of float) 0:100 'o' ( out highp 4-component vector of float) 0:100 indirect index ( temp highp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of highp 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major std140) uniform highp int) 0:100 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp highp 4-component vector of float) 0:101 'o' ( out highp 4-component vector of float) 0:101 vector swizzle ( temp highp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp highp 4-component vector of float) 0:102 'o' ( out highp 4-component vector of float) 0:102 a20: direct index for structure ( in highp 4-component vector of float) 0:102 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp highp 4-component vector of float) 0:103 'o' ( out highp 4-component vector of float) 0:103 Construct vec4 ( temp highp 4-component vector of float) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'g_a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'g_a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:? 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:? 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in highp 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:? 'b16' ( flat in highp uint) 0:? 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:? 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:? 'g_a21' ( smooth in 2-element array of highp 2-component vector of float) 0:? 'o' ( out highp 4-component vector of float) Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 128 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 13 18 26 34 43 56 75 82 98 110 115 121 124 127 Source GLSL 460 Name 4 "main" Name 13 "a0" Name 16 "ABlock0" MemberName 16(ABlock0) 0 "a1" Name 18 "" Name 24 "ABlock1" MemberName 24(ABlock1) 0 "a2" MemberName 24(ABlock1) 1 "a3" Name 26 "" Name 34 "a4" Name 41 "ABlock2" MemberName 41(ABlock2) 0 "a5" MemberName 41(ABlock2) 1 "a6" MemberName 41(ABlock2) 2 "a7" Name 43 "" Name 52 "S" MemberName 52(S) 0 "a" MemberName 52(S) 1 "b" Name 54 "ABlock3" MemberName 54(ABlock3) 0 "a8" MemberName 54(ABlock3) 1 "a9" MemberName 54(ABlock3) 2 "a10" MemberName 54(ABlock3) 3 "a11" Name 56 "" Name 75 "a12" Name 80 "AStruct1" MemberName 80(AStruct1) 0 "a13" MemberName 80(AStruct1) 1 "a14" MemberName 80(AStruct1) 2 "a15" Name 82 "s0" Name 98 "a17" Name 99 "UBO0" MemberName 99(UBO0) 0 "i" Name 101 "ubo0" Name 108 "ABlock4" MemberName 108(ABlock4) 0 "a18" Name 110 "" Name 113 "ABlock5" MemberName 113(ABlock5) 0 "a19" Name 115 "" Name 119 "Block0" MemberName 119(Block0) 0 "a20" Name 121 "" Name 124 "a21" Name 127 "a16" Decorate 13(a0) Location 40 Decorate 16(ABlock0) Block Decorate 18 Location 1 Decorate 24(ABlock1) Block MemberDecorate 24(ABlock1) 0 Location 3 MemberDecorate 24(ABlock1) 1 Location 2 Decorate 26 Location 0 Decorate 34(a4) Location 5 Decorate 41(ABlock2) Block MemberDecorate 41(ABlock2) 0 Location 4 MemberDecorate 41(ABlock2) 1 Location 8 MemberDecorate 41(ABlock2) 2 Location 10 Decorate 43 Location 2 Decorate 54(ABlock3) Block MemberDecorate 54(ABlock3) 0 Location 12 MemberDecorate 54(ABlock3) 1 Location 15 MemberDecorate 54(ABlock3) 2 Location 17 MemberDecorate 54(ABlock3) 3 Location 19 Decorate 56 Location 7 Decorate 75(a12) Location 27 Decorate 82(s0) Location 30 Decorate 98(a17) Location 46 Decorate 99(UBO0) Block MemberDecorate 99(UBO0) 0 Offset 0 Decorate 101(ubo0) Binding 0 Decorate 101(ubo0) DescriptorSet 0 Decorate 108(ABlock4) Block Decorate 110 Location 50 Decorate 113(ABlock5) Block MemberDecorate 113(ABlock5) 0 Location 60 Decorate 115 Location 20 Decorate 119(Block0) Block Decorate 121 Location 21 Decorate 124(a21) Location 22 Decorate 127(a16) Location 39 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: 6(bool) ConstantFalse 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Output 11(fvec4) 13(a0): 12(ptr) Variable Output 14: 10(float) Constant 1065353216 15: 11(fvec4) ConstantComposite 14 14 14 14 16(ABlock0): TypeStruct 11(fvec4) 17: TypePointer Output 16(ABlock0) 18: 17(ptr) Variable Output 19: TypeInt 32 1 20: 19(int) Constant 0 21: 10(float) Constant 0 22: 11(fvec4) ConstantComposite 21 21 21 21 24(ABlock1): TypeStruct 11(fvec4) 11(fvec4) 25: TypePointer Output 24(ABlock1) 26: 25(ptr) Variable Output 28: 19(int) Constant 1 30: TypeInt 32 0 31: 30(int) Constant 3 32: TypeArray 11(fvec4) 31 33: TypePointer Output 32 34(a4): 33(ptr) Variable Output 37: 19(int) Constant 2 39: 30(int) Constant 2 40: TypeArray 11(fvec4) 39 41(ABlock2): TypeStruct 11(fvec4) 40 40 42: TypePointer Output 41(ABlock2) 43: 42(ptr) Variable Output 49: TypeVector 10(float) 2 50: TypeArray 49(fvec2) 39 51: TypeArray 10(float) 31 52(S): TypeStruct 51 10(float) 53: TypeArray 52(S) 39 54(ABlock3): TypeStruct 10(float) 50 40 53 55: TypePointer Output 54(ABlock3) 56: 55(ptr) Variable Output 57: TypePointer Output 10(float) 59: 30(int) Constant 0 61: 30(int) Constant 1 65: 19(int) Constant 3 74: TypePointer Output 51 75(a12): 74(ptr) Variable Output 79: TypeMatrix 11(fvec4) 4 80(AStruct1): TypeStruct 49(fvec2) 52(S) 79 81: TypePointer Output 80(AStruct1) 82(s0): 81(ptr) Variable Output 88: 11(fvec4) ConstantComposite 14 21 21 21 89: 11(fvec4) ConstantComposite 21 14 21 21 90: 11(fvec4) ConstantComposite 21 21 14 21 91: 11(fvec4) ConstantComposite 21 21 21 14 92: 79 ConstantComposite 88 89 90 91 93: TypePointer Output 79 95: 30(int) Constant 4 96: TypeArray 11(fvec4) 95 97: TypePointer Output 96 98(a17): 97(ptr) Variable Output 99(UBO0): TypeStruct 19(int) 100: TypePointer Uniform 99(UBO0) 101(ubo0): 100(ptr) Variable Uniform 102: TypePointer Uniform 19(int) 106: 30(int) Constant 10 107: TypeArray 11(fvec4) 106 108(ABlock4): TypeStruct 107 109: TypePointer Output 108(ABlock4) 110: 109(ptr) Variable Output 111: 19(int) Constant 5 113(ABlock5): TypeStruct 49(fvec2) 114: TypePointer Output 113(ABlock5) 115: 114(ptr) Variable Output 116: 49(fvec2) ConstantComposite 21 21 117: TypePointer Output 49(fvec2) 119(Block0): TypeStruct 11(fvec4) 120: TypePointer Output 119(Block0) 121: 120(ptr) Variable Output 123: TypePointer Output 50 124(a21): 123(ptr) Variable Output 127(a16): 57(ptr) Variable Output 4(main): 2 Function None 3 5: Label SelectionMerge 9 None BranchConditional 7 8 9 8: Label Store 13(a0) 15 Branch 9 9: Label 23: 12(ptr) AccessChain 18 20 Store 23 22 27: 12(ptr) AccessChain 26 20 Store 27 22 29: 12(ptr) AccessChain 26 28 Store 29 22 35: 12(ptr) AccessChain 34(a4) 20 Store 35 22 36: 12(ptr) AccessChain 34(a4) 28 Store 36 22 38: 12(ptr) AccessChain 34(a4) 37 Store 38 22 44: 12(ptr) AccessChain 43 20 Store 44 22 45: 12(ptr) AccessChain 43 28 20 Store 45 22 46: 12(ptr) AccessChain 43 28 28 Store 46 22 47: 12(ptr) AccessChain 43 37 20 Store 47 22 48: 12(ptr) AccessChain 43 37 28 Store 48 22 58: 57(ptr) AccessChain 56 20 Store 58 21 60: 57(ptr) AccessChain 56 28 20 59 Store 60 21 62: 57(ptr) AccessChain 56 28 28 61 Store 62 21 63: 12(ptr) AccessChain 56 37 20 Store 63 22 64: 12(ptr) AccessChain 56 37 28 Store 64 22 66: 57(ptr) AccessChain 56 65 20 20 20 Store 66 21 67: 57(ptr) AccessChain 56 65 20 20 28 Store 67 21 68: 57(ptr) AccessChain 56 65 20 20 37 Store 68 21 69: 57(ptr) AccessChain 56 65 20 28 Store 69 21 70: 57(ptr) AccessChain 56 65 28 20 20 Store 70 21 71: 57(ptr) AccessChain 56 65 28 20 28 Store 71 21 72: 57(ptr) AccessChain 56 65 28 20 37 Store 72 21 73: 57(ptr) AccessChain 56 65 28 28 Store 73 21 76: 57(ptr) AccessChain 75(a12) 20 Store 76 21 77: 57(ptr) AccessChain 75(a12) 28 Store 77 21 78: 57(ptr) AccessChain 75(a12) 37 Store 78 21 83: 57(ptr) AccessChain 82(s0) 20 61 Store 83 21 84: 57(ptr) AccessChain 82(s0) 28 20 20 Store 84 21 85: 57(ptr) AccessChain 82(s0) 28 20 28 Store 85 21 86: 57(ptr) AccessChain 82(s0) 28 20 37 Store 86 21 87: 57(ptr) AccessChain 82(s0) 28 28 Store 87 21 94: 93(ptr) AccessChain 82(s0) 37 Store 94 92 103: 102(ptr) AccessChain 101(ubo0) 20 104: 19(int) Load 103 105: 12(ptr) AccessChain 98(a17) 104 Store 105 15 112: 12(ptr) AccessChain 110 20 111 Store 112 15 118: 117(ptr) AccessChain 115 20 Store 118 116 122: 12(ptr) AccessChain 121 20 Store 122 15 125: 117(ptr) AccessChain 124(a21) 20 Store 125 116 126: 117(ptr) AccessChain 124(a21) 28 Store 126 116 Return FunctionEnd glslang-16.0.0/Test/baseResults/link.vk.differentPC.0.0.frag.out000066400000000000000000000152751506534232700241700ustar00rootroot00000000000000link.vk.differentPC.0.0.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 'color' (layout( location=0) out highp 4-component vector of float) 0:17 add ( temp highp 4-component vector of float) 0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float) 0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:17 Constant: 0:17 0 (const int) 0:17 vector-scale ( temp highp 4-component vector of float) 0:17 Function Call: getColor2( ( global highp 4-component vector of float) 0:17 Function Call: getScale( ( global highp float) 0:? Linker Objects 0:? 'color' (layout( location=0) out highp 4-component vector of float) 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) link.vk.differentPC.0.1.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: getColor2( ( global highp 4-component vector of float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:13 Constant: 0:13 1 (const int) 0:? Linker Objects 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) link.vk.differentPC.0.2.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: getScale( ( global highp float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 scale2: direct index for structure (layout( column_major std430 offset=32) uniform highp float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2}) 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2}) Linked fragment stage: ERROR: Linking fragment 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 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 'color' (layout( location=0) out highp 4-component vector of float) 0:17 add ( temp highp 4-component vector of float) 0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float) 0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:17 Constant: 0:17 0 (const int) 0:17 vector-scale ( temp highp 4-component vector of float) 0:17 Function Call: getColor2( ( global highp 4-component vector of float) 0:17 Function Call: getScale( ( global highp float) 0:11 Function Definition: getColor2( ( global highp 4-component vector of float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:13 Constant: 0:13 1 (const int) 0:11 Function Definition: getScale( ( global highp float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 scale2: direct index for structure (layout( column_major std430 offset=32) uniform highp float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2}) 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects 0:? 'color' (layout( location=0) out highp 4-component vector of float) 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) Validation failed SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/link.vk.differentPC.1.0.frag.out000066400000000000000000000163341506534232700241660ustar00rootroot00000000000000link.vk.differentPC.1.0.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: getScale( ( global highp float) 0:12 Function Parameters: 0:14 Sequence 0:14 Branch: Return with expression 0:14 scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float) 0:14 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}) 0:14 Constant: 0:14 2 (const int) 0:? Linker Objects 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}) link.vk.differentPC.1.1.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: getColor2( ( global highp 4-component vector of float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:13 Constant: 0:13 1 (const int) 0:? Linker Objects 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) link.vk.differentPC.1.2.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 'color' (layout( location=0) out highp 4-component vector of float) 0:17 add ( temp highp 4-component vector of float) 0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float) 0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:17 Constant: 0:17 0 (const int) 0:17 vector-scale ( temp highp 4-component vector of float) 0:17 Function Call: getColor2( ( global highp 4-component vector of float) 0:17 Function Call: getScale( ( global highp float) 0:? Linker Objects 0:? 'color' (layout( location=0) out highp 4-component vector of float) 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) Linked fragment stage: ERROR: Linking fragment 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 0:? Sequence 0:12 Function Definition: getScale( ( global highp float) 0:12 Function Parameters: 0:14 Sequence 0:14 Branch: Return with expression 0:14 scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float) 0:14 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}) 0:14 Constant: 0:14 2 (const int) 0:11 Function Definition: getColor2( ( global highp 4-component vector of float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:13 Constant: 0:13 1 (const int) 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 'color' (layout( location=0) out highp 4-component vector of float) 0:17 add ( temp highp 4-component vector of float) 0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float) 0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:17 Constant: 0:17 0 (const int) 0:17 vector-scale ( temp highp 4-component vector of float) 0:17 Function Call: getColor2( ( global highp 4-component vector of float) 0:17 Function Call: getScale( ( global highp float) 0:? Linker Objects 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}) 0:? 'color' (layout( location=0) out highp 4-component vector of float) Validation failed SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out000066400000000000000000000601261506534232700265050ustar00rootroot00000000000000link.vk.inconsistentGLPerVertex.0.vert Shader version: 460 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 color: direct index for structure ( out highp 4-component vector of float) 0:17 'vs_out' ( out block{ out highp 4-component vector of float color}) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:18 move second child to first child ( temp float) 0:18 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 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, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:18 Constant: 0:18 1 (const uint) 0:18 Constant: 0:18 1.000000 0:19 move second child to first child ( temp highp 4-component vector of float) 0:19 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:19 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:19 Constant: 0:19 0 (const uint) 0:19 'P' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'vs_out' ( out block{ out highp 4-component vector of float color}) 0:? 'P' ( in highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) link.vk.inconsistentGLPerVertex.0.geom Shader version: 460 invocations = -1 max_vertices = 50 input primitive = lines_adjacency output primitive = triangle_strip 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp 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, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance}) 0:18 Constant: 0:18 0 (const uint) 0:18 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:18 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance, in unsized 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:18 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance, in unsized 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:19 move second child to first child ( temp highp 4-component vector of float) 0:19 color: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:19 'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color}) 0:19 Constant: 0:19 0 (const int) 0:19 color: direct index for structure ( in highp 4-component vector of float) 0:19 direct index ( temp block{ in highp 4-component vector of float color}) 0:19 'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:20 EmitVertex ( global void) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 color: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:21 'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color}) 0:21 Constant: 0:21 0 (const int) 0:21 color: direct index for structure ( in highp 4-component vector of float) 0:21 direct index ( temp block{ in highp 4-component vector of float color}) 0:21 'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:22 '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, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance}) 0:22 Constant: 0:22 0 (const uint) 0:22 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:22 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance, in unsized 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:22 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance, in unsized 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 EmitVertex ( global void) 0:24 move second child to first child ( temp highp 4-component vector of float) 0:24 color: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:24 'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color}) 0:24 Constant: 0:24 0 (const int) 0:24 color: direct index for structure ( in highp 4-component vector of float) 0:24 direct index ( temp block{ in highp 4-component vector of float color}) 0:24 'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:25 '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, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance}) 0:25 Constant: 0:25 0 (const uint) 0:25 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:25 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance, in unsized 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:25 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance, in unsized 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 EmitVertex ( global void) 0:? Linker Objects 0:? 'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color}) 0:? 'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color}) 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, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance}) 0:? 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance, in unsized 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) Linked vertex stage: Linked geometry stage: Shader version: 460 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 color: direct index for structure ( out highp 4-component vector of float) 0:17 'vs_out' ( out block{ out highp 4-component vector of float color}) 0:17 Constant: 0:17 0 (const int) 0:17 Constant: 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:17 1.000000 0:18 move second child to first child ( temp float) 0:18 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) 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, out 1-element array of float CullDistance gl_CullDistance}) 0:18 Constant: 0:18 1 (const uint) 0:18 Constant: 0:18 1.000000 0:19 move second child to first child ( temp highp 4-component vector of float) 0:19 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:19 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) 0:19 Constant: 0:19 0 (const uint) 0:19 'P' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'vs_out' ( out block{ out highp 4-component vector of float color}) 0:? 'P' ( in highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) Shader version: 460 invocations = 1 max_vertices = 50 input primitive = lines_adjacency output primitive = triangle_strip 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp 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, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance}) 0:18 Constant: 0:18 0 (const uint) 0:18 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:18 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance, 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}) 0:18 '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}) 0:18 Constant: 0:18 0 (const int) 0:18 Constant: 0:18 0 (const int) 0:19 move second child to first child ( temp highp 4-component vector of float) 0:19 color: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:19 'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color}) 0:19 Constant: 0:19 0 (const int) 0:19 color: direct index for structure ( in highp 4-component vector of float) 0:19 direct index ( temp block{ in highp 4-component vector of float color}) 0:19 'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 0 (const int) 0:20 EmitVertex ( global void) 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 color: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:21 'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color}) 0:21 Constant: 0:21 0 (const int) 0:21 color: direct index for structure ( in highp 4-component vector of float) 0:21 direct index ( temp block{ in highp 4-component vector of float color}) 0:21 'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color}) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 0 (const int) 0:22 move second child to first child ( temp 4-component vector of float) 0:22 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:22 '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, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance}) 0:22 Constant: 0:22 0 (const uint) 0:22 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:22 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance, 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}) 0:22 '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}) 0:22 Constant: 0:22 1 (const int) 0:22 Constant: 0:22 0 (const int) 0:23 EmitVertex ( global void) 0:24 move second child to first child ( temp highp 4-component vector of float) 0:24 color: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:24 'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color}) 0:24 Constant: 0:24 0 (const int) 0:24 color: direct index for structure ( in highp 4-component vector of float) 0:24 direct index ( temp block{ in highp 4-component vector of float color}) 0:24 'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 0 (const int) 0:25 move second child to first child ( temp 4-component vector of float) 0:25 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) 0:25 '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, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance}) 0:25 Constant: 0:25 0 (const uint) 0:25 gl_Position: direct index for structure ( in 4-component vector of float Position) 0:25 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance, 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}) 0:25 '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}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0 (const int) 0:26 EmitVertex ( global void) 0:? Linker Objects 0:? 'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color}) 0:? 'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color}) 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, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance}) 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): 8000b // Id's are bound by 30 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 22 27 Source GLSL 460 Name 4 "main" Name 8 "vs_output" MemberName 8(vs_output) 0 "color" Name 10 "vs_out" 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" MemberName 20(gl_PerVertex) 3 "gl_CullDistance" Name 22 "" Name 27 "P" Decorate 8(vs_output) Block Decorate 10(vs_out) Location 0 Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 20(gl_PerVertex) 3 BuiltIn CullDistance Decorate 27(P) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(vs_output): TypeStruct 7(fvec4) 9: TypePointer Output 8(vs_output) 10(vs_out): 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: 6(float) Constant 1065353216 14: 7(fvec4) ConstantComposite 13 13 13 13 15: TypePointer Output 7(fvec4) 17: TypeInt 32 0 18: 17(int) Constant 1 19: TypeArray 6(float) 18 20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19 19 21: TypePointer Output 20(gl_PerVertex) 22: 21(ptr) Variable Output 23: 11(int) Constant 1 24: TypePointer Output 6(float) 26: TypePointer Input 7(fvec4) 27(P): 26(ptr) Variable Input 4(main): 2 Function None 3 5: Label 16: 15(ptr) AccessChain 10(vs_out) 12 Store 16 14 25: 24(ptr) AccessChain 22 23 Store 25 13 28: 7(fvec4) Load 27(P) 29: 15(ptr) AccessChain 22 12 Store 29 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/link.vk.matchingPC.0.0.frag.out000066400000000000000000000231121506534232700240010ustar00rootroot00000000000000link.vk.matchingPC.0.0.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 'color' (layout( location=0) out highp 4-component vector of float) 0:17 add ( temp highp 4-component vector of float) 0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float) 0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:17 Constant: 0:17 0 (const int) 0:17 vector-scale ( temp highp 4-component vector of float) 0:17 Function Call: getColor2( ( global highp 4-component vector of float) 0:17 Function Call: getScale( ( global highp float) 0:? Linker Objects 0:? 'color' (layout( location=0) out highp 4-component vector of float) 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) link.vk.matchingPC.0.1.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: getColor2( ( global highp 4-component vector of float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:13 Constant: 0:13 1 (const int) 0:? Linker Objects 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) link.vk.matchingPC.0.2.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:11 Function Definition: getScale( ( global highp float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 'color' (layout( location=0) out highp 4-component vector of float) 0:17 add ( temp highp 4-component vector of float) 0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float) 0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:17 Constant: 0:17 0 (const int) 0:17 vector-scale ( temp highp 4-component vector of float) 0:17 Function Call: getColor2( ( global highp 4-component vector of float) 0:17 Function Call: getScale( ( global highp float) 0:11 Function Definition: getColor2( ( global highp 4-component vector of float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:13 Constant: 0:13 1 (const int) 0:11 Function Definition: getScale( ( global highp float) 0:11 Function Parameters: 0:13 Sequence 0:13 Branch: Return with expression 0:13 scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float) 0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects 0:? 'color' (layout( location=0) out highp 4-component vector of float) 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 15 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "getColor2(" Name 12 "getScale(" Name 15 "color" Name 16 "PushConstantBlock" MemberName 16(PushConstantBlock) 0 "color" MemberName 16(PushConstantBlock) 1 "color2" MemberName 16(PushConstantBlock) 2 "scale" Name 18 "uPC" Decorate 15(color) Location 0 Decorate 16(PushConstantBlock) Block MemberDecorate 16(PushConstantBlock) 0 Offset 0 MemberDecorate 16(PushConstantBlock) 1 Offset 16 MemberDecorate 16(PushConstantBlock) 2 Offset 32 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeFunction 6(float) 14: TypePointer Output 7(fvec4) 15(color): 14(ptr) Variable Output 16(PushConstantBlock): TypeStruct 7(fvec4) 7(fvec4) 6(float) 17: TypePointer PushConstant 16(PushConstantBlock) 18(uPC): 17(ptr) Variable PushConstant 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypePointer PushConstant 7(fvec4) 28: 19(int) Constant 1 33: 19(int) Constant 2 34: TypePointer PushConstant 6(float) 4(main): 2 Function None 3 5: Label 22: 21(ptr) AccessChain 18(uPC) 20 23: 7(fvec4) Load 22 24: 7(fvec4) FunctionCall 9(getColor2() 25: 6(float) FunctionCall 12(getScale() 26: 7(fvec4) VectorTimesScalar 24 25 27: 7(fvec4) FAdd 23 26 Store 15(color) 27 Return FunctionEnd 9(getColor2(): 7(fvec4) Function None 8 10: Label 29: 21(ptr) AccessChain 18(uPC) 28 30: 7(fvec4) Load 29 ReturnValue 30 FunctionEnd 12(getScale(): 6(float) Function None 11 13: Label 35: 34(ptr) AccessChain 18(uPC) 33 36: 6(float) Load 35 ReturnValue 36 FunctionEnd glslang-16.0.0/Test/baseResults/link.vk.missingCrossStageIO.0.vert.out000066400000000000000000001452401506534232700255750ustar00rootroot00000000000000link.vk.missingCrossStageIO.0.vert Shader version: 460 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Linker Objects link.vk.missingCrossStageIO.0.frag Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:71 Function Definition: uncalled( ( global highp uint) 0:71 Function Parameters: 0:72 Sequence 0:72 Branch: Return with expression 0:72 'b16' ( flat in highp uint) 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 'o' ( out highp 4-component vector of float) 0:76 b1: direct index for structure ( in highp 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp highp 4-component vector of float) 0:77 'o' ( out highp 4-component vector of float) 0:77 b2: direct index for structure ( in highp 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp highp 4-component vector of float) 0:78 'o' ( out highp 4-component vector of float) 0:78 b3: direct index for structure ( in highp 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp highp 4-component vector of float) 0:79 'o' ( out highp 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp highp 4-component vector of float) 0:80 'o' ( out highp 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp highp 4-component vector of float) 0:81 'o' ( out highp 4-component vector of float) 0:81 b5: direct index for structure ( in highp 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp highp 4-component vector of float) 0:82 'o' ( out highp 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp highp 4-component vector of float) 0:83 'o' ( out highp 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp highp 4-component vector of float) 0:84 'o' ( out highp 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp highp 4-component vector of float) 0:85 'o' ( out highp 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp highp 4-component vector of float) 0:86 'o' ( out highp 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp highp 4-component vector of float) 0:87 'o' ( out highp 4-component vector of float) 0:87 Construct vec4 ( temp highp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp highp 4-component vector of float) 0:88 'o' ( out highp 4-component vector of float) 0:88 vector swizzle ( temp highp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in highp 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp highp 4-component vector of float) 0:89 'o' ( out highp 4-component vector of float) 0:89 Construct vec4 ( temp highp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in highp float) 0:89 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp highp 4-component vector of float) 0:90 'o' ( out highp 4-component vector of float) 0:90 vector swizzle ( temp highp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in highp 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp highp 4-component vector of float) 0:91 'o' ( out highp 4-component vector of float) 0:91 Construct vec4 ( temp highp 4-component vector of float) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp highp 4-component vector of float) 0:92 'o' ( out highp 4-component vector of float) 0:92 Construct vec4 ( temp highp 4-component vector of float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp highp float) 0:92 add ( temp highp float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp highp 4-component vector of float) 0:93 'o' ( out highp 4-component vector of float) 0:93 Construct vec4 ( temp highp 4-component vector of float) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in unsized 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp highp 4-component vector of float) 0:95 'o' ( out highp 4-component vector of float) 0:95 vector swizzle ( temp highp 4-component vector of float) 0:95 matrix-times-vector ( temp highp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp highp 4-component vector of float) 0:96 'o' ( out highp 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in highp 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp highp 4-component vector of float) 0:97 'o' ( out highp 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in highp 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp highp 4-component vector of float) 0:99 'o' ( out highp 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:99 i: direct index for structure (layout( column_major std140) uniform highp int) 0:99 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp highp 4-component vector of float) 0:100 'o' ( out highp 4-component vector of float) 0:100 indirect index ( temp highp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of highp 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major std140) uniform highp int) 0:100 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp highp 4-component vector of float) 0:101 'o' ( out highp 4-component vector of float) 0:101 vector swizzle ( temp highp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp highp 4-component vector of float) 0:102 'o' ( out highp 4-component vector of float) 0:102 a20: direct index for structure ( in highp 4-component vector of float) 0:102 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp highp 4-component vector of float) 0:103 'o' ( out highp 4-component vector of float) 0:103 Construct vec4 ( temp highp 4-component vector of float) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:? 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:? 'anon@4' (layout( location=29) in block{ in unsized 10-element array of highp float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in highp 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:? 'b16' ( flat in highp uint) 0:? 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:? 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:? 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:? 'o' ( out highp 4-component vector of float) Linked vertex stage: Linked fragment stage: ERROR: 0:76: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=0) in { in vec4 b0, in vec4 b1, in vec4 b2, in vec4 b3} BBlock0 ERROR: 0:77: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=0) in { in vec4 b0, in vec4 b1, in vec4 b2, in vec4 b3} BBlock0 ERROR: 0:78: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=0) in { in vec4 b0, in vec4 b1, in vec4 b2, in vec4 b3} BBlock0 ERROR: 0:79: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=4) smooth in vec4 b4[2] ERROR: 0:80: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=4) smooth in vec4 b4[2] ERROR: 0:81: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=6) in { in vec4 b5} BBlock1 ERROR: 0:82: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:83: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:84: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:85: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:86: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=7) smooth in vec4 b6[5] ERROR: 0:87: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=12) smooth in float b7[4] ERROR: 0:87: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=12) smooth in float b7[4] ERROR: 0:87: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=12) smooth in float b7[4] ERROR: 0:87: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=12) smooth in float b7[4] ERROR: 0:88: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:89: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:90: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:91: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:91: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:91: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:91: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in {layout( location=21) in vec2 b8, layout( location=22) in float b9, layout( location=16) in vec3 b10, layout( location=17) in float b11[4]} BBlock2 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:92: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=23) in { in float b12[6]} BBlock3 ERROR: 0:93: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=29) in { in float b13[10]} BBlock4 ERROR: 0:93: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=29) in { in float b13[10]} BBlock4 ERROR: 0:93: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=29) in { in float b13[10]} BBlock4 ERROR: 0:93: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=29) in { in float b13[10]} BBlock4 ERROR: 0:99: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=46) smooth in vec4 b20[4] ERROR: 0:100: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=50) in { in vec4 b21[10]} BBlock7 ERROR: 0:101: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: layout( location=60) smooth in vec2 b22 ERROR: 0:102: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: in { in vec4 a20} Block0 ERROR: 0:103: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: smooth in vec2 a21[2] ERROR: 0:103: Linking fragment and vertex stages: Preceding stage has no matching declaration for statically used input: smooth in vec2 a21[2] Shader version: 460 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Linker Objects Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:75 Function Definition: main( ( global void) 0:75 Function Parameters: 0:76 Sequence 0:76 move second child to first child ( temp highp 4-component vector of float) 0:76 'o' ( out highp 4-component vector of float) 0:76 b1: direct index for structure ( in highp 4-component vector of float) 0:76 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:76 Constant: 0:76 1 (const uint) 0:77 add second child into first child ( temp highp 4-component vector of float) 0:77 'o' ( out highp 4-component vector of float) 0:77 b2: direct index for structure ( in highp 4-component vector of float) 0:77 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:77 Constant: 0:77 2 (const uint) 0:78 add second child into first child ( temp highp 4-component vector of float) 0:78 'o' ( out highp 4-component vector of float) 0:78 b3: direct index for structure ( in highp 4-component vector of float) 0:78 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:78 Constant: 0:78 3 (const uint) 0:79 add second child into first child ( temp highp 4-component vector of float) 0:79 'o' ( out highp 4-component vector of float) 0:79 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:79 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:79 Constant: 0:79 0 (const int) 0:80 add second child into first child ( temp highp 4-component vector of float) 0:80 'o' ( out highp 4-component vector of float) 0:80 direct index (layout( location=4) smooth temp highp 4-component vector of float) 0:80 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:80 Constant: 0:80 1 (const int) 0:81 add second child into first child ( temp highp 4-component vector of float) 0:81 'o' ( out highp 4-component vector of float) 0:81 b5: direct index for structure ( in highp 4-component vector of float) 0:81 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:81 Constant: 0:81 0 (const uint) 0:82 add second child into first child ( temp highp 4-component vector of float) 0:82 'o' ( out highp 4-component vector of float) 0:82 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:82 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:82 Constant: 0:82 0 (const int) 0:83 add second child into first child ( temp highp 4-component vector of float) 0:83 'o' ( out highp 4-component vector of float) 0:83 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:83 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:83 Constant: 0:83 1 (const int) 0:84 add second child into first child ( temp highp 4-component vector of float) 0:84 'o' ( out highp 4-component vector of float) 0:84 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:84 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:84 Constant: 0:84 2 (const int) 0:85 add second child into first child ( temp highp 4-component vector of float) 0:85 'o' ( out highp 4-component vector of float) 0:85 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:85 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:85 Constant: 0:85 3 (const int) 0:86 add second child into first child ( temp highp 4-component vector of float) 0:86 'o' ( out highp 4-component vector of float) 0:86 direct index (layout( location=7) smooth temp highp 4-component vector of float) 0:86 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:86 Constant: 0:86 4 (const int) 0:87 add second child into first child ( temp highp 4-component vector of float) 0:87 'o' ( out highp 4-component vector of float) 0:87 Construct vec4 ( temp highp 4-component vector of float) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 0 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 1 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 2 (const int) 0:87 direct index (layout( location=12) smooth temp highp float) 0:87 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:87 Constant: 0:87 3 (const int) 0:88 add second child into first child ( temp highp 4-component vector of float) 0:88 'o' ( out highp 4-component vector of float) 0:88 vector swizzle ( temp highp 4-component vector of float) 0:88 b8: direct index for structure (layout( location=21) in highp 2-component vector of float) 0:88 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:88 Constant: 0:88 0 (const uint) 0:88 Sequence 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 0 (const int) 0:88 Constant: 0:88 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 add second child into first child ( temp highp 4-component vector of float) 0:89 'o' ( out highp 4-component vector of float) 0:89 Construct vec4 ( temp highp 4-component vector of float) 0:89 b9: direct index for structure (layout( location=22) in highp float) 0:89 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:89 Constant: 0:89 1 (const uint) 0:90 add second child into first child ( temp highp 4-component vector of float) 0:90 'o' ( out highp 4-component vector of float) 0:90 vector swizzle ( temp highp 4-component vector of float) 0:90 b10: direct index for structure (layout( location=16) in highp 3-component vector of float) 0:90 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:90 Constant: 0:90 2 (const uint) 0:90 Sequence 0:90 Constant: 0:90 0 (const int) 0:90 Constant: 0:90 1 (const int) 0:90 Constant: 0:90 2 (const int) 0:90 Constant: 0:90 0 (const int) 0:91 add second child into first child ( temp highp 4-component vector of float) 0:91 'o' ( out highp 4-component vector of float) 0:91 Construct vec4 ( temp highp 4-component vector of float) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 0 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 1 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 2 (const int) 0:91 direct index (layout( location=17) temp highp float) 0:91 b11: direct index for structure (layout( location=17) in 4-element array of highp float) 0:91 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:91 Constant: 0:91 3 (const uint) 0:91 Constant: 0:91 3 (const int) 0:92 add second child into first child ( temp highp 4-component vector of float) 0:92 'o' ( out highp 4-component vector of float) 0:92 Construct vec4 ( temp highp 4-component vector of float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 0 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 1 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 2 (const int) 0:92 add ( temp highp float) 0:92 add ( temp highp float) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 3 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 4 (const int) 0:92 direct index ( temp highp float) 0:92 b12: direct index for structure ( in 6-element array of highp float) 0:92 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:92 Constant: 0:92 0 (const uint) 0:92 Constant: 0:92 5 (const int) 0:93 add second child into first child ( temp highp 4-component vector of float) 0:93 'o' ( out highp 4-component vector of float) 0:93 Construct vec4 ( temp highp 4-component vector of float) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 9 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 7 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 6 (const int) 0:93 direct index ( temp highp float) 0:93 b13: direct index for structure ( in 10-element array of highp float) 0:93 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:93 Constant: 0:93 0 (const uint) 0:93 Constant: 0:93 0 (const int) 0:94 Test condition and select ( temp void) 0:94 Condition 0:94 Constant: 0:94 false (const bool) 0:94 true case 0:95 Sequence 0:95 add second child into first child ( temp highp 4-component vector of float) 0:95 'o' ( out highp 4-component vector of float) 0:95 vector swizzle ( temp highp 4-component vector of float) 0:95 matrix-times-vector ( temp highp 2-component vector of float) 0:95 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:95 Constant: 0:95 1.000000 0:95 1.000000 0:95 Sequence 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 0 (const int) 0:95 Constant: 0:95 1 (const int) 0:95 Constant: 0:95 1 (const int) 0:96 add second child into first child ( temp highp 4-component vector of float) 0:96 'o' ( out highp 4-component vector of float) 0:96 b18: direct index for structure (layout( location=43) in highp 4-component vector of float) 0:96 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:96 Constant: 0:96 1 (const uint) 0:97 add second child into first child ( temp highp 4-component vector of float) 0:97 'o' ( out highp 4-component vector of float) 0:97 b19: direct index for structure (layout( location=44) in highp 4-component vector of float) 0:97 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:97 Constant: 0:97 2 (const uint) 0:99 add second child into first child ( temp highp 4-component vector of float) 0:99 'o' ( out highp 4-component vector of float) 0:99 indirect index (layout( location=46) smooth temp highp 4-component vector of float) 0:99 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:99 i: direct index for structure (layout( column_major std140) uniform highp int) 0:99 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:99 Constant: 0:99 0 (const int) 0:100 add second child into first child ( temp highp 4-component vector of float) 0:100 'o' ( out highp 4-component vector of float) 0:100 indirect index ( temp highp 4-component vector of float) 0:100 b21: direct index for structure ( in 10-element array of highp 4-component vector of float) 0:100 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:100 Constant: 0:100 0 (const uint) 0:100 i: direct index for structure (layout( column_major std140) uniform highp int) 0:100 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:100 Constant: 0:100 0 (const int) 0:101 add second child into first child ( temp highp 4-component vector of float) 0:101 'o' ( out highp 4-component vector of float) 0:101 vector swizzle ( temp highp 4-component vector of float) 0:101 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:101 Sequence 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 0 (const int) 0:101 Constant: 0:101 1 (const int) 0:101 Constant: 0:101 1 (const int) 0:102 add second child into first child ( temp highp 4-component vector of float) 0:102 'o' ( out highp 4-component vector of float) 0:102 a20: direct index for structure ( in highp 4-component vector of float) 0:102 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:102 Constant: 0:102 0 (const uint) 0:103 add second child into first child ( temp highp 4-component vector of float) 0:103 'o' ( out highp 4-component vector of float) 0:103 Construct vec4 ( temp highp 4-component vector of float) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 0 (const int) 0:103 direct index ( smooth temp highp 2-component vector of float) 0:103 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:103 Constant: 0:103 1 (const int) 0:? Linker Objects 0:? 'anon@0' (layout( location=0) in block{ in highp 4-component vector of float b0, in highp 4-component vector of float b1, in highp 4-component vector of float b2, in highp 4-component vector of float b3}) 0:? 'b4' (layout( location=4) smooth in 2-element array of highp 4-component vector of float) 0:? 'anon@1' (layout( location=6) in block{ in highp 4-component vector of float b5}) 0:? 'b6' (layout( location=7) smooth in 5-element array of highp 4-component vector of float) 0:? 'b7' (layout( location=12) smooth in 4-element array of highp float) 0:? 'anon@2' ( in block{layout( location=21) in highp 2-component vector of float b8, layout( location=22) in highp float b9, layout( location=16) in highp 3-component vector of float b10, layout( location=17) in 4-element array of highp float b11}) 0:? 'anon@3' (layout( location=23) in block{ in 6-element array of highp float b12}) 0:? 'anon@4' (layout( location=29) in block{ in 10-element array of highp float b13}) 0:? 'anon@5' (layout( location=39) in block{ flat in highp 2-component vector of int b14}) 0:? 'b15' (layout( location=40) smooth in highp 2X2 matrix of float) 0:? 'b16' ( flat in highp uint) 0:? 'anon@6' ( in block{layout( location=45) in highp 4-component vector of float b17, layout( location=43) in highp 4-component vector of float b18, layout( location=44) in highp 4-component vector of float b19}) 0:? 'ubo0' (layout( binding=0 column_major std140) uniform block{layout( column_major std140) uniform highp int i}) 0:? 'b20' (layout( location=46) smooth in 4-element array of highp 4-component vector of float) 0:? 'anon@7' (layout( location=50) in block{ in 10-element array of highp 4-component vector of float b21}) 0:? 'b22' (layout( location=60) smooth in highp 2-component vector of float) 0:? 'anon@8' ( in block{ in highp 4-component vector of float a20}) 0:? 'a21' ( smooth in 2-element array of highp 2-component vector of float) 0:? 'o' ( out highp 4-component vector of float) Validation failed SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out000066400000000000000000000557261506534232700253150ustar00rootroot00000000000000link.vk.multiBlocksValid.0.0.vert Shader version: 430 0:? Sequence 0:43 Function Definition: main( ( global void) 0:43 Function Parameters: 0:45 Sequence 0:45 move second child to first child ( temp highp 4-component vector of float) 0:45 'oColor' ( smooth out highp 4-component vector of float) 0:45 component-wise multiply ( temp highp 4-component vector of float) 0:45 component-wise multiply ( temp highp 4-component vector of float) 0:45 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float) 0:45 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:45 Constant: 0:45 0 (const int) 0:45 Function Call: getColor2( ( global highp 4-component vector of float) 0:45 c: direct index for structure (layout( column_major std430 offset=0) buffer highp 4-component vector of float) 0:45 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c}) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 v1: direct index for structure ( out highp 4-component vector of float) 0:46 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}) 0:46 Constant: 0:46 0 (const int) 0:46 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float) 0:46 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:46 Constant: 0:46 0 (const int) 0:48 move second child to first child ( temp highp 4-component vector of float) 0:48 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:48 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:48 Constant: 0:48 0 (const uint) 0:48 matrix-times-vector ( temp highp 4-component vector of float) 0:48 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float) 0:48 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:48 Constant: 0:48 0 (const int) 0:48 Function Call: getWorld( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:? 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}) 0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}) 0:? 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c}) 0:? 'oColor' ( smooth out highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) link.vk.multiBlocksValid.0.1.vert Shader version: 430 0:? Sequence 0:36 Function Definition: getColor2( ( global highp 4-component vector of float) 0:36 Function Parameters: 0:38 Sequence 0:38 Branch: Return with expression 0:38 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float) 0:38 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:38 Constant: 0:38 2 (const int) 0:41 Function Definition: getWorld( ( global highp 4-component vector of float) 0:41 Function Parameters: 0:43 Sequence 0:43 move second child to first child ( temp highp 4-component vector of float) 0:43 v1: direct index for structure ( out highp 4-component vector of float) 0:43 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}) 0:43 Constant: 0:43 0 (const uint) 0:43 Constant: 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:44 Branch: Return with expression 0:44 matrix-times-vector ( temp highp 4-component vector of float) 0:44 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float) 0:44 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:44 Constant: 0:44 1 (const int) 0:44 'P' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:? 'uBuffer' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}) 0:? 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:? 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}) 0:? 'P' ( in highp 4-component vector of float) Linked vertex stage: WARNING: Linking vertex 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 0:43 Function Definition: main( ( global void) 0:43 Function Parameters: 0:45 Sequence 0:45 move second child to first child ( temp highp 4-component vector of float) 0:45 'oColor' ( smooth out highp 4-component vector of float) 0:45 component-wise multiply ( temp highp 4-component vector of float) 0:45 component-wise multiply ( temp highp 4-component vector of float) 0:45 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float) 0:45 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:45 Constant: 0:45 0 (const int) 0:45 Function Call: getColor2( ( global highp 4-component vector of float) 0:45 c: direct index for structure (layout( column_major std430 offset=0) buffer highp 4-component vector of float) 0:45 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c}) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp highp 4-component vector of float) 0:46 v1: direct index for structure ( out highp 4-component vector of float) 0:46 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}) 0:46 Constant: 0:46 0 (const int) 0:46 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float) 0:46 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:46 Constant: 0:46 0 (const int) 0:48 move second child to first child ( temp highp 4-component vector of float) 0:48 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:48 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:48 Constant: 0:48 0 (const uint) 0:48 matrix-times-vector ( temp highp 4-component vector of float) 0:48 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float) 0:48 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:48 Constant: 0:48 0 (const int) 0:48 Function Call: getWorld( ( global highp 4-component vector of float) 0:36 Function Definition: getColor2( ( global highp 4-component vector of float) 0:36 Function Parameters: 0:38 Sequence 0:38 Branch: Return with expression 0:38 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float) 0:38 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:38 Constant: 0:38 2 (const int) 0:41 Function Definition: getWorld( ( global highp 4-component vector of float) 0:41 Function Parameters: 0:43 Sequence 0:43 move second child to first child ( temp highp 4-component vector of float) 0:43 v1: direct index for structure ( out highp 4-component vector of float) 0:43 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}) 0:43 Constant: 0:43 0 (const uint) 0:43 Constant: 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:43 1.000000 0:44 Branch: Return with expression 0:44 matrix-times-vector ( temp highp 4-component vector of float) 0:44 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float) 0:44 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:44 Constant: 0:44 1 (const int) 0:44 'P' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:? 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}) 0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}) 0:? 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c}) 0:? 'oColor' ( smooth out highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'P' ( in highp 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 14 34 42 65 Source GLSL 430 Name 4 "main" Name 9 "getColor2(" Name 11 "getWorld(" Name 14 "oColor" Name 16 "ColorBlock" MemberName 16(ColorBlock) 0 "color1" MemberName 16(ColorBlock) 1 "b" MemberName 16(ColorBlock) 2 "color2" MemberName 16(ColorBlock) 3 "color3" Name 18 "uC" Name 26 "SecondaryColorBlock" MemberName 26(SecondaryColorBlock) 0 "c" Name 28 "uColorBuf" Name 32 "Vertex" MemberName 32(Vertex) 0 "v1" MemberName 32(Vertex) 1 "v2" Name 34 "oV" Name 40 "gl_PerVertex" MemberName 40(gl_PerVertex) 0 "gl_Position" MemberName 40(gl_PerVertex) 1 "gl_PointSize" MemberName 40(gl_PerVertex) 2 "gl_ClipDistance" Name 42 "" Name 44 "MatrixBlock" MemberName 44(MatrixBlock) 0 "uProj" MemberName 44(MatrixBlock) 1 "uWorld" Name 46 "uM" Name 65 "P" Name 70 "BufferBlock" MemberName 70(BufferBlock) 0 "p" Name 72 "uBuf" Decorate 14(oColor) Location 2 Decorate 16(ColorBlock) Block MemberDecorate 16(ColorBlock) 0 Offset 0 MemberDecorate 16(ColorBlock) 1 Offset 16 MemberDecorate 16(ColorBlock) 2 Offset 32 MemberDecorate 16(ColorBlock) 3 Offset 48 Decorate 18(uC) Binding 1 Decorate 18(uC) DescriptorSet 0 Decorate 26(SecondaryColorBlock) BufferBlock MemberDecorate 26(SecondaryColorBlock) 0 Offset 0 Decorate 28(uColorBuf) Binding 0 Decorate 28(uColorBuf) DescriptorSet 0 Decorate 32(Vertex) Block Decorate 34(oV) Location 0 Decorate 40(gl_PerVertex) Block MemberDecorate 40(gl_PerVertex) 0 BuiltIn Position MemberDecorate 40(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 40(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 44(MatrixBlock) Block MemberDecorate 44(MatrixBlock) 0 ColMajor MemberDecorate 44(MatrixBlock) 0 MatrixStride 16 MemberDecorate 44(MatrixBlock) 0 Offset 0 MemberDecorate 44(MatrixBlock) 1 ColMajor MemberDecorate 44(MatrixBlock) 1 MatrixStride 16 MemberDecorate 44(MatrixBlock) 1 Offset 64 Decorate 46(uM) Binding 0 Decorate 46(uM) DescriptorSet 0 Decorate 65(P) Location 0 Decorate 70(BufferBlock) BufferBlock MemberDecorate 70(BufferBlock) 0 ColMajor MemberDecorate 70(BufferBlock) 0 MatrixStride 16 MemberDecorate 70(BufferBlock) 0 Offset 0 Decorate 72(uBuf) Binding 1 Decorate 72(uBuf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 13: TypePointer Output 7(fvec4) 14(oColor): 13(ptr) Variable Output 15: TypeInt 32 0 16(ColorBlock): TypeStruct 7(fvec4) 15(int) 7(fvec4) 7(fvec4) 17: TypePointer Uniform 16(ColorBlock) 18(uC): 17(ptr) Variable Uniform 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypePointer Uniform 7(fvec4) 26(SecondaryColorBlock): TypeStruct 7(fvec4) 27: TypePointer Uniform 26(SecondaryColorBlock) 28(uColorBuf): 27(ptr) Variable Uniform 32(Vertex): TypeStruct 7(fvec4) 7(fvec4) 33: TypePointer Output 32(Vertex) 34(oV): 33(ptr) Variable Output 38: 15(int) Constant 1 39: TypeArray 6(float) 38 40(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 39 41: TypePointer Output 40(gl_PerVertex) 42: 41(ptr) Variable Output 43: TypeMatrix 7(fvec4) 4 44(MatrixBlock): TypeStruct 43 43 45: TypePointer Uniform 44(MatrixBlock) 46(uM): 45(ptr) Variable Uniform 47: TypePointer Uniform 43 53: 19(int) Constant 2 58: 6(float) Constant 1065353216 59: 7(fvec4) ConstantComposite 58 58 58 58 61: 19(int) Constant 1 64: TypePointer Input 7(fvec4) 65(P): 64(ptr) Variable Input 70(BufferBlock): TypeStruct 43 71: TypePointer Uniform 70(BufferBlock) 72(uBuf): 71(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 22: 21(ptr) AccessChain 18(uC) 20 23: 7(fvec4) Load 22 24: 7(fvec4) FunctionCall 9(getColor2() 25: 7(fvec4) FMul 23 24 29: 21(ptr) AccessChain 28(uColorBuf) 20 30: 7(fvec4) Load 29 31: 7(fvec4) FMul 25 30 Store 14(oColor) 31 35: 21(ptr) AccessChain 18(uC) 20 36: 7(fvec4) Load 35 37: 13(ptr) AccessChain 34(oV) 20 Store 37 36 48: 47(ptr) AccessChain 46(uM) 20 49: 43 Load 48 50: 7(fvec4) FunctionCall 11(getWorld() 51: 7(fvec4) MatrixTimesVector 49 50 52: 13(ptr) AccessChain 42 20 Store 52 51 Return FunctionEnd 9(getColor2(): 7(fvec4) Function None 8 10: Label 54: 21(ptr) AccessChain 18(uC) 53 55: 7(fvec4) Load 54 ReturnValue 55 FunctionEnd 11(getWorld(): 7(fvec4) Function None 8 12: Label 60: 13(ptr) AccessChain 34(oV) 20 Store 60 59 62: 47(ptr) AccessChain 46(uM) 61 63: 43 Load 62 66: 7(fvec4) Load 65(P) 67: 7(fvec4) MatrixTimesVector 63 66 ReturnValue 67 FunctionEnd glslang-16.0.0/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out000066400000000000000000000725201506534232700252540ustar00rootroot00000000000000link.vk.multiBlocksValid.1.0.geom Shader version: 430 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:48 Function Definition: main( ( global void) 0:48 Function Parameters: 0:50 Sequence 0:50 move second child to first child ( temp highp 4-component vector of float) 0:50 'oColor' (layout( stream=0) out highp 4-component vector of float) 0:50 component-wise multiply ( temp highp 4-component vector of float) 0:50 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float) 0:50 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:50 Constant: 0:50 0 (const int) 0:50 Function Call: getColor2( ( global highp 4-component vector of float) 0:52 move second child to first child ( temp highp float) 0:52 'globalF' ( global highp float) 0:52 Constant: 0:52 1.000000 0:54 Sequence 0:54 Sequence 0:54 move second child to first child ( temp highp int) 0:54 'i' ( temp highp int) 0:54 Constant: 0:54 0 (const int) 0:54 Loop with condition tested first 0:54 Loop Condition 0:54 Compare Less Than ( temp bool) 0:54 'i' ( temp highp int) 0:54 Constant: 0:54 3 (const int) 0:54 Loop Body 0:56 Sequence 0:56 move second child to first child ( temp highp 4-component vector of float) 0:56 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position) 0:56 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) 0:56 Constant: 0:56 0 (const uint) 0:56 matrix-times-vector ( temp highp 4-component vector of float) 0:56 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float) 0:56 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:56 Constant: 0:56 0 (const int) 0:56 Function Call: getWorld(i1; ( global highp 4-component vector of float) 0:56 'i' ( temp highp int) 0:57 move second child to first child ( temp highp 4-component vector of float) 0:57 val1: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:57 'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}) 0:57 Constant: 0:57 0 (const int) 0:57 add ( temp highp 4-component vector of float) 0:57 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float) 0:57 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:57 Constant: 0:57 0 (const int) 0:57 vector-scale ( temp highp 4-component vector of float) 0:57 v2: direct index for structure ( in highp 4-component vector of float) 0:57 indirect index ( temp block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:57 'iV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:57 'i' ( temp highp int) 0:57 Constant: 0:57 1 (const int) 0:57 'globalF' ( global highp float) 0:58 EmitVertex ( global void) 0:54 Loop Terminal Expression 0:54 Post-Increment ( temp highp int) 0:54 'i' ( temp highp int) 0:61 EndPrimitive ( global void) 0:? Linker Objects 0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:? 'iV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:? 'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}) 0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}) 0:? 'oColor' (layout( stream=0) out highp 4-component vector of float) 0:? 'globalF' ( global highp float) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) link.vk.multiBlocksValid.1.1.geom Shader version: 430 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:44 Function Definition: getColor2( ( global highp 4-component vector of float) 0:44 Function Parameters: 0:46 Sequence 0:46 Branch: Return with expression 0:46 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float) 0:46 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:46 Constant: 0:46 2 (const int) 0:49 Function Definition: getWorld(i1; ( global highp 4-component vector of float) 0:49 Function Parameters: 0:49 'i' ( in highp int) 0:51 Sequence 0:51 move second child to first child ( temp highp 4-component vector of float) 0:51 val1: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:51 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}) 0:51 Constant: 0:51 0 (const uint) 0:51 Constant: 0:51 1.000000 0:51 1.000000 0:51 1.000000 0:51 1.000000 0:52 Branch: Return with expression 0:52 matrix-times-vector ( temp highp 4-component vector of float) 0:52 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float) 0:52 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:52 Constant: 0:52 1 (const int) 0:52 v1: direct index for structure ( in highp 4-component vector of float) 0:52 indirect index ( temp block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:52 'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:52 'i' ( in highp int) 0:52 Constant: 0:52 0 (const int) 0:? Linker Objects 0:? 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:? 'uBuffer' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}) 0:? 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}) 0:? 'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:? 'P' ( in 3-element array of highp 4-component vector of float) Linked geometry stage: WARNING: Linking geometry 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 max_vertices = 3 input primitive = triangles output primitive = triangle_strip 0:? Sequence 0:48 Function Definition: main( ( global void) 0:48 Function Parameters: 0:50 Sequence 0:50 move second child to first child ( temp highp 4-component vector of float) 0:50 'oColor' (layout( stream=0) out highp 4-component vector of float) 0:50 component-wise multiply ( temp highp 4-component vector of float) 0:50 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float) 0:50 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:50 Constant: 0:50 0 (const int) 0:50 Function Call: getColor2( ( global highp 4-component vector of float) 0:52 move second child to first child ( temp highp float) 0:52 'globalF' ( global highp float) 0:52 Constant: 0:52 1.000000 0:54 Sequence 0:54 Sequence 0:54 move second child to first child ( temp highp int) 0:54 'i' ( temp highp int) 0:54 Constant: 0:54 0 (const int) 0:54 Loop with condition tested first 0:54 Loop Condition 0:54 Compare Less Than ( temp bool) 0:54 'i' ( temp highp int) 0:54 Constant: 0:54 3 (const int) 0:54 Loop Body 0:56 Sequence 0:56 move second child to first child ( temp highp 4-component vector of float) 0:56 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position) 0:56 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) 0:56 Constant: 0:56 0 (const uint) 0:56 matrix-times-vector ( temp highp 4-component vector of float) 0:56 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float) 0:56 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:56 Constant: 0:56 0 (const int) 0:56 Function Call: getWorld(i1; ( global highp 4-component vector of float) 0:56 'i' ( temp highp int) 0:57 move second child to first child ( temp highp 4-component vector of float) 0:57 val1: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:57 'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}) 0:57 Constant: 0:57 0 (const int) 0:57 add ( temp highp 4-component vector of float) 0:57 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float) 0:57 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:57 Constant: 0:57 0 (const int) 0:57 vector-scale ( temp highp 4-component vector of float) 0:57 v2: direct index for structure ( in highp 4-component vector of float) 0:57 indirect index ( temp block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:57 'iV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:57 'i' ( temp highp int) 0:57 Constant: 0:57 1 (const int) 0:57 'globalF' ( global highp float) 0:58 EmitVertex ( global void) 0:54 Loop Terminal Expression 0:54 Post-Increment ( temp highp int) 0:54 'i' ( temp highp int) 0:61 EndPrimitive ( global void) 0:44 Function Definition: getColor2( ( global highp 4-component vector of float) 0:44 Function Parameters: 0:46 Sequence 0:46 Branch: Return with expression 0:46 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float) 0:46 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:46 Constant: 0:46 2 (const int) 0:49 Function Definition: getWorld(i1; ( global highp 4-component vector of float) 0:49 Function Parameters: 0:49 'i' ( in highp int) 0:51 Sequence 0:51 move second child to first child ( temp highp 4-component vector of float) 0:51 val1: direct index for structure (layout( stream=0) out highp 4-component vector of float) 0:51 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}) 0:51 Constant: 0:51 0 (const uint) 0:51 Constant: 0:51 1.000000 0:51 1.000000 0:51 1.000000 0:51 1.000000 0:52 Branch: Return with expression 0:52 matrix-times-vector ( temp highp 4-component vector of float) 0:52 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float) 0:52 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:52 Constant: 0:52 1 (const int) 0:52 v1: direct index for structure ( in highp 4-component vector of float) 0:52 indirect index ( temp block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:52 'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:52 'i' ( in highp int) 0:52 Constant: 0:52 0 (const int) 0:? Linker Objects 0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}) 0:? 'iV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}) 0:? 'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}) 0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}) 0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}) 0:? 'oColor' (layout( stream=0) out highp 4-component vector of float) 0:? 'globalF' ( global highp float) 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'P' ( in 3-element array of highp 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 101 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 18 46 61 68 100 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Source GLSL 430 Name 4 "main" Name 9 "getColor2(" Name 15 "getWorld(i1;" Name 14 "i" Name 18 "oColor" Name 20 "ColorBlock" MemberName 20(ColorBlock) 0 "color1" MemberName 20(ColorBlock) 1 "b" MemberName 20(ColorBlock) 2 "color2" MemberName 20(ColorBlock) 3 "color3" Name 22 "uC" Name 30 "globalF" Name 32 "i" Name 44 "gl_PerVertex" MemberName 44(gl_PerVertex) 0 "gl_Position" MemberName 44(gl_PerVertex) 1 "gl_PointSize" MemberName 44(gl_PerVertex) 2 "gl_ClipDistance" Name 46 "" Name 48 "MatrixBlock" MemberName 48(MatrixBlock) 0 "uProj" MemberName 48(MatrixBlock) 1 "uWorld" Name 50 "uM" Name 54 "param" Name 59 "Vertex" MemberName 59(Vertex) 0 "val1" Name 61 "oV" Name 64 "Vertex" MemberName 64(Vertex) 0 "v1" MemberName 64(Vertex) 1 "v2" Name 68 "iV" Name 95 "BufferBlock" MemberName 95(BufferBlock) 0 "p" Name 97 "uBuf" Name 100 "P" Decorate 18(oColor) Location 1 Decorate 20(ColorBlock) Block MemberDecorate 20(ColorBlock) 0 Offset 0 MemberDecorate 20(ColorBlock) 1 Offset 16 MemberDecorate 20(ColorBlock) 2 Offset 32 MemberDecorate 20(ColorBlock) 3 Offset 48 Decorate 22(uC) Binding 1 Decorate 22(uC) DescriptorSet 0 Decorate 44(gl_PerVertex) Block MemberDecorate 44(gl_PerVertex) 0 BuiltIn Position MemberDecorate 44(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 44(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 48(MatrixBlock) Block MemberDecorate 48(MatrixBlock) 0 ColMajor MemberDecorate 48(MatrixBlock) 0 MatrixStride 16 MemberDecorate 48(MatrixBlock) 0 Offset 0 MemberDecorate 48(MatrixBlock) 1 ColMajor MemberDecorate 48(MatrixBlock) 1 MatrixStride 16 MemberDecorate 48(MatrixBlock) 1 Offset 64 Decorate 50(uM) Binding 0 Decorate 50(uM) DescriptorSet 0 Decorate 59(Vertex) Block Decorate 61(oV) Location 0 Decorate 64(Vertex) Block Decorate 68(iV) Location 0 Decorate 95(BufferBlock) BufferBlock MemberDecorate 95(BufferBlock) 0 ColMajor MemberDecorate 95(BufferBlock) 0 MatrixStride 16 MemberDecorate 95(BufferBlock) 0 Offset 0 Decorate 97(uBuf) Binding 1 Decorate 97(uBuf) DescriptorSet 0 Decorate 100(P) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 1 12: TypePointer Function 11(int) 13: TypeFunction 7(fvec4) 12(ptr) 17: TypePointer Output 7(fvec4) 18(oColor): 17(ptr) Variable Output 19: TypeInt 32 0 20(ColorBlock): TypeStruct 7(fvec4) 19(int) 7(fvec4) 7(fvec4) 21: TypePointer Uniform 20(ColorBlock) 22(uC): 21(ptr) Variable Uniform 23: 11(int) Constant 0 24: TypePointer Uniform 7(fvec4) 29: TypePointer Private 6(float) 30(globalF): 29(ptr) Variable Private 31: 6(float) Constant 1065353216 39: 11(int) Constant 3 40: TypeBool 42: 19(int) Constant 1 43: TypeArray 6(float) 42 44(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 43 45: TypePointer Output 44(gl_PerVertex) 46: 45(ptr) Variable Output 47: TypeMatrix 7(fvec4) 4 48(MatrixBlock): TypeStruct 47 47 49: TypePointer Uniform 48(MatrixBlock) 50(uM): 49(ptr) Variable Uniform 51: TypePointer Uniform 47 59(Vertex): TypeStruct 7(fvec4) 60: TypePointer Output 59(Vertex) 61(oV): 60(ptr) Variable Output 64(Vertex): TypeStruct 7(fvec4) 7(fvec4) 65: 19(int) Constant 3 66: TypeArray 64(Vertex) 65 67: TypePointer Input 66 68(iV): 67(ptr) Variable Input 70: 11(int) Constant 1 71: TypePointer Input 7(fvec4) 80: 11(int) Constant 2 85: 7(fvec4) ConstantComposite 31 31 31 31 95(BufferBlock): TypeStruct 47 96: TypePointer Uniform 95(BufferBlock) 97(uBuf): 96(ptr) Variable Uniform 98: TypeArray 7(fvec4) 65 99: TypePointer Input 98 100(P): 99(ptr) Variable Input 4(main): 2 Function None 3 5: Label 32(i): 12(ptr) Variable Function 54(param): 12(ptr) Variable Function 25: 24(ptr) AccessChain 22(uC) 23 26: 7(fvec4) Load 25 27: 7(fvec4) FunctionCall 9(getColor2() 28: 7(fvec4) FMul 26 27 Store 18(oColor) 28 Store 30(globalF) 31 Store 32(i) 23 Branch 33 33: Label LoopMerge 35 36 None Branch 37 37: Label 38: 11(int) Load 32(i) 41: 40(bool) SLessThan 38 39 BranchConditional 41 34 35 34: Label 52: 51(ptr) AccessChain 50(uM) 23 53: 47 Load 52 55: 11(int) Load 32(i) Store 54(param) 55 56: 7(fvec4) FunctionCall 15(getWorld(i1;) 54(param) 57: 7(fvec4) MatrixTimesVector 53 56 58: 17(ptr) AccessChain 46 23 Store 58 57 62: 24(ptr) AccessChain 22(uC) 23 63: 7(fvec4) Load 62 69: 11(int) Load 32(i) 72: 71(ptr) AccessChain 68(iV) 69 70 73: 7(fvec4) Load 72 74: 6(float) Load 30(globalF) 75: 7(fvec4) VectorTimesScalar 73 74 76: 7(fvec4) FAdd 63 75 77: 17(ptr) AccessChain 61(oV) 23 Store 77 76 EmitVertex Branch 36 36: Label 78: 11(int) Load 32(i) 79: 11(int) IAdd 78 70 Store 32(i) 79 Branch 33 35: Label EndPrimitive Return FunctionEnd 9(getColor2(): 7(fvec4) Function None 8 10: Label 81: 24(ptr) AccessChain 22(uC) 80 82: 7(fvec4) Load 81 ReturnValue 82 FunctionEnd 15(getWorld(i1;): 7(fvec4) Function None 13 14(i): 12(ptr) FunctionParameter 16: Label 86: 17(ptr) AccessChain 61(oV) 23 Store 86 85 87: 51(ptr) AccessChain 50(uM) 70 88: 47 Load 87 89: 11(int) Load 14(i) 90: 71(ptr) AccessChain 68(iV) 89 23 91: 7(fvec4) Load 90 92: 7(fvec4) MatrixTimesVector 88 91 ReturnValue 92 FunctionEnd glslang-16.0.0/Test/baseResults/link.vk.multiUnitLayout.0.comp.out000066400000000000000000000154601506534232700250440ustar00rootroot00000000000000link.vk.multiUnitLayout.0.comp Shader version: 450 local_size = (1, 1, 1) local_size ids = (0, -1, -1) 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: do_compute(u1; ( global void) 0:9 direct index ( temp highp uint) 0:9 'gl_GlobalInvocationID' ( in highp 3-component vector of uint GlobalInvocationID) 0:9 Constant: 0:9 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( specialization-constant const highp 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) link.vk.multiUnitLayout.1.comp Shader version: 450 local_size = (1, 1, 1) 0:? Sequence 0:7 Function Definition: do_compute(u1; ( global void) 0:7 Function Parameters: 0:7 'index' ( in highp uint) 0:9 Sequence 0:9 add second child into first child ( temp highp 4-component vector of float) 0:9 indirect index (layout( column_major std430) temp highp 4-component vector of float) 0:9 data: direct index for structure (layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float) 0:9 'dataBuf' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float data}) 0:9 Constant: 0:9 0 (const int) 0:9 'index' ( in highp uint) 0:9 Constant: 0:9 1.000000 0:9 1.000000 0:9 1.000000 0:9 1.000000 0:? Linker Objects 0:? 'dataBuf' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float data}) Linked compute stage: Shader version: 450 local_size = (1, 1, 1) local_size ids = (0, -1, -1) 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: do_compute(u1; ( global void) 0:9 direct index ( temp highp uint) 0:9 'gl_GlobalInvocationID' ( in highp 3-component vector of uint GlobalInvocationID) 0:9 Constant: 0:9 0 (const int) 0:7 Function Definition: do_compute(u1; ( global void) 0:7 Function Parameters: 0:7 'index' ( in highp uint) 0:9 Sequence 0:9 add second child into first child ( temp highp 4-component vector of float) 0:9 indirect index (layout( column_major std430) temp highp 4-component vector of float) 0:9 data: direct index for structure (layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float) 0:9 'dataBuf' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float data}) 0:9 Constant: 0:9 0 (const int) 0:9 'index' ( in highp uint) 0:9 Constant: 0:9 1.000000 0:9 1.000000 0:9 1.000000 0:9 1.000000 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( specialization-constant const highp 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'dataBuf' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float data}) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 14 ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 Name 4 "main" Name 10 "do_compute(u1;" Name 9 "index" Name 14 "gl_GlobalInvocationID" Name 15 "param" Name 24 "DataBuf" MemberName 24(DataBuf) 0 "data" Name 26 "dataBuf" Decorate 14(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 23 ArrayStride 16 Decorate 24(DataBuf) BufferBlock MemberDecorate 24(DataBuf) 0 Offset 0 Decorate 26(dataBuf) Binding 0 Decorate 26(dataBuf) DescriptorSet 0 Decorate 37 SpecId 0 Decorate 39 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeFunction 2 7(ptr) 12: TypeVector 6(int) 3 13: TypePointer Input 12(ivec3) 14(gl_GlobalInvocationID): 13(ptr) Variable Input 16: 6(int) Constant 0 17: TypePointer Input 6(int) 21: TypeFloat 32 22: TypeVector 21(float) 4 23: TypeRuntimeArray 22(fvec4) 24(DataBuf): TypeStruct 23 25: TypePointer Uniform 24(DataBuf) 26(dataBuf): 25(ptr) Variable Uniform 27: TypeInt 32 1 28: 27(int) Constant 0 30: 21(float) Constant 1065353216 31: 22(fvec4) ConstantComposite 30 30 30 30 32: TypePointer Uniform 22(fvec4) 37: 6(int) SpecConstant 1 38: 6(int) Constant 1 39: 12(ivec3) SpecConstantComposite 37 38 38 4(main): 2 Function None 3 5: Label 15(param): 7(ptr) Variable Function 18: 17(ptr) AccessChain 14(gl_GlobalInvocationID) 16 19: 6(int) Load 18 Store 15(param) 19 20: 2 FunctionCall 10(do_compute(u1;) 15(param) Return FunctionEnd 10(do_compute(u1;): 2 Function None 8 9(index): 7(ptr) FunctionParameter 11: Label 29: 6(int) Load 9(index) 33: 32(ptr) AccessChain 26(dataBuf) 28 29 34: 22(fvec4) Load 33 35: 22(fvec4) FAdd 34 31 36: 32(ptr) AccessChain 26(dataBuf) 28 29 Store 36 35 Return FunctionEnd glslang-16.0.0/Test/baseResults/link.vk.multiUnitLayout.2.comp.out000066400000000000000000000074031506534232700250440ustar00rootroot00000000000000link.vk.multiUnitLayout.2.comp Shader version: 450 local_size = (1, 1, 1) local_size ids = (1, -1, -1) 0:? Sequence 0:10 Function Definition: do_compute(u1; ( global void) 0:10 Function Parameters: 0:10 'index' ( in highp uint) 0:12 Sequence 0:12 add second child into first child ( temp highp 4-component vector of float) 0:12 indirect index (layout( column_major std430) temp highp 4-component vector of float) 0:12 data: direct index for structure (layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float) 0:12 'dataBuf' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float data}) 0:12 Constant: 0:12 0 (const int) 0:12 'index' ( in highp uint) 0:12 Constant: 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( specialization-constant const highp 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'dataBuf' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float data}) link.vk.multiUnitLayout.0.comp Shader version: 450 local_size = (1, 1, 1) local_size ids = (0, -1, -1) 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: do_compute(u1; ( global void) 0:9 direct index ( temp highp uint) 0:9 'gl_GlobalInvocationID' ( in highp 3-component vector of uint GlobalInvocationID) 0:9 Constant: 0:9 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( specialization-constant const highp 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) Linked compute stage: ERROR: Linking compute stage: Contradictory local size specialization ids Shader version: 450 local_size = (1, 1, 1) local_size ids = (1, -1, -1) 0:? Sequence 0:10 Function Definition: do_compute(u1; ( global void) 0:10 Function Parameters: 0:10 'index' ( in highp uint) 0:12 Sequence 0:12 add second child into first child ( temp highp 4-component vector of float) 0:12 indirect index (layout( column_major std430) temp highp 4-component vector of float) 0:12 data: direct index for structure (layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float) 0:12 'dataBuf' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float data}) 0:12 Constant: 0:12 0 (const int) 0:12 'index' ( in highp uint) 0:12 Constant: 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:12 1.000000 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: do_compute(u1; ( global void) 0:9 direct index ( temp highp uint) 0:9 'gl_GlobalInvocationID' ( in highp 3-component vector of uint GlobalInvocationID) 0:9 Constant: 0:9 0 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( specialization-constant const highp 3-component vector of uint WorkGroupSize) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) 0:? 'dataBuf' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430) buffer runtime-sized array of highp 4-component vector of float data}) Validation failed SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out000066400000000000000000000250431506534232700250750ustar00rootroot00000000000000link.vk.pcNamingInvalid.0.0.vert Shader version: 450 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of float) 0:18 'oColor' ( smooth out highp 4-component vector of float) 0:18 component-wise multiply ( temp highp 4-component vector of float) 0:18 color1: direct index for structure (layout( column_major std430 offset=128) uniform highp 4-component vector of float) 0:18 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:18 Constant: 0:18 2 (const int) 0:18 Function Call: getColor2( ( global highp 4-component vector of float) 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:20 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:20 Constant: 0:20 0 (const uint) 0:20 matrix-times-vector ( temp highp 4-component vector of float) 0:20 uProj: direct index for structure (layout( column_major std430 offset=64) uniform highp 4X4 matrix of float) 0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:20 Constant: 0:20 1 (const int) 0:20 Function Call: getWorld( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:? 'oColor' ( smooth out highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) link.vk.pcNamingInvalid.0.1.vert Shader version: 450 0:? Sequence 0:13 Function Definition: getColor2( ( global highp 4-component vector of float) 0:13 Function Parameters: 0:15 Sequence 0:15 Branch: Return with expression 0:15 color2: direct index for structure (layout( column_major std430 offset=144) uniform highp 4-component vector of float) 0:15 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:15 Constant: 0:15 3 (const int) 0:18 Function Definition: getWorld( ( global highp 4-component vector of float) 0:18 Function Parameters: 0:20 Sequence 0:20 Branch: Return with expression 0:20 matrix-times-vector ( temp highp 4-component vector of float) 0:20 uWorld: direct index for structure (layout( column_major std430 offset=0) uniform highp 4X4 matrix of float) 0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:20 Constant: 0:20 0 (const int) 0:20 'P' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:? 'P' ( in highp 4-component vector of float) Linked vertex stage: ERROR: Linking vertex stage: Only one push_constant block is allowed per stage Shader version: 450 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of float) 0:18 'oColor' ( smooth out highp 4-component vector of float) 0:18 component-wise multiply ( temp highp 4-component vector of float) 0:18 color1: direct index for structure (layout( column_major std430 offset=128) uniform highp 4-component vector of float) 0:18 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:18 Constant: 0:18 2 (const int) 0:18 Function Call: getColor2( ( global highp 4-component vector of float) 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:20 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:20 Constant: 0:20 0 (const uint) 0:20 matrix-times-vector ( temp highp 4-component vector of float) 0:20 uProj: direct index for structure (layout( column_major std430 offset=64) uniform highp 4X4 matrix of float) 0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:20 Constant: 0:20 1 (const int) 0:20 Function Call: getWorld( ( global highp 4-component vector of float) 0:13 Function Definition: getColor2( ( global highp 4-component vector of float) 0:13 Function Parameters: 0:15 Sequence 0:15 Branch: Return with expression 0:15 color2: direct index for structure (layout( column_major std430 offset=144) uniform highp 4-component vector of float) 0:15 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:15 Constant: 0:15 3 (const int) 0:18 Function Definition: getWorld( ( global highp 4-component vector of float) 0:18 Function Parameters: 0:20 Sequence 0:20 Branch: Return with expression 0:20 matrix-times-vector ( temp highp 4-component vector of float) 0:20 uWorld: direct index for structure (layout( column_major std430 offset=0) uniform highp 4X4 matrix of float) 0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:20 Constant: 0:20 0 (const int) 0:20 'P' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:? 'oColor' ( smooth out highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:? 'P' ( in highp 4-component vector of float) Validation failed SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out000066400000000000000000000364451506534232700245560ustar00rootroot00000000000000link.vk.pcNamingValid.0.0.vert Shader version: 450 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of float) 0:18 'oColor' (layout( location=0) smooth out highp 4-component vector of float) 0:18 component-wise multiply ( temp highp 4-component vector of float) 0:18 color1: direct index for structure (layout( column_major std430 offset=128) uniform highp 4-component vector of float) 0:18 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:18 Constant: 0:18 2 (const int) 0:18 Function Call: getColor2( ( global highp 4-component vector of float) 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:20 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:20 Constant: 0:20 0 (const uint) 0:20 matrix-times-vector ( temp highp 4-component vector of float) 0:20 uProj: direct index for structure (layout( column_major std430 offset=64) uniform highp 4X4 matrix of float) 0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:20 Constant: 0:20 1 (const int) 0:20 Function Call: getWorld( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:? 'oColor' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) link.vk.pcNamingValid.0.1.vert Shader version: 450 0:? Sequence 0:13 Function Definition: getColor2( ( global highp 4-component vector of float) 0:13 Function Parameters: 0:15 Sequence 0:15 Branch: Return with expression 0:15 color2: direct index for structure (layout( column_major std430 offset=144) uniform highp 4-component vector of float) 0:15 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:15 Constant: 0:15 3 (const int) 0:18 Function Definition: getWorld( ( global highp 4-component vector of float) 0:18 Function Parameters: 0:20 Sequence 0:20 Branch: Return with expression 0:20 matrix-times-vector ( temp highp 4-component vector of float) 0:20 uWorld: direct index for structure (layout( column_major std430 offset=0) uniform highp 4X4 matrix of float) 0:20 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:20 Constant: 0:20 0 (const int) 0:20 'P' (layout( location=0) in highp 4-component vector of float) 0:? Linker Objects 0:? 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:? 'P' (layout( location=0) in highp 4-component vector of float) Linked vertex stage: WARNING: Linking vertex 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 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of float) 0:18 'oColor' (layout( location=0) smooth out highp 4-component vector of float) 0:18 component-wise multiply ( temp highp 4-component vector of float) 0:18 color1: direct index for structure (layout( column_major std430 offset=128) uniform highp 4-component vector of float) 0:18 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:18 Constant: 0:18 2 (const int) 0:18 Function Call: getColor2( ( global highp 4-component vector of float) 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:20 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) 0:20 Constant: 0:20 0 (const uint) 0:20 matrix-times-vector ( temp highp 4-component vector of float) 0:20 uProj: direct index for structure (layout( column_major std430 offset=64) uniform highp 4X4 matrix of float) 0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:20 Constant: 0:20 1 (const int) 0:20 Function Call: getWorld( ( global highp 4-component vector of float) 0:13 Function Definition: getColor2( ( global highp 4-component vector of float) 0:13 Function Parameters: 0:15 Sequence 0:15 Branch: Return with expression 0:15 color2: direct index for structure (layout( column_major std430 offset=144) uniform highp 4-component vector of float) 0:15 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:15 Constant: 0:15 3 (const int) 0:18 Function Definition: getWorld( ( global highp 4-component vector of float) 0:18 Function Parameters: 0:20 Sequence 0:20 Branch: Return with expression 0:20 matrix-times-vector ( temp highp 4-component vector of float) 0:20 uWorld: direct index for structure (layout( column_major std430 offset=0) uniform highp 4X4 matrix of float) 0:20 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:20 Constant: 0:20 0 (const int) 0:20 'P' (layout( location=0) in highp 4-component vector of float) 0:? Linker Objects 0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}) 0:? 'oColor' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) 0:? 'P' (layout( location=0) in highp 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 14 31 48 Source GLSL 450 Name 4 "main" Name 9 "getColor2(" Name 11 "getWorld(" Name 14 "oColor" Name 16 "PCBlock" MemberName 16(PCBlock) 0 "uWorld" MemberName 16(PCBlock) 1 "uProj" MemberName 16(PCBlock) 2 "color1" MemberName 16(PCBlock) 3 "color2" Name 18 "a" Name 29 "gl_PerVertex" MemberName 29(gl_PerVertex) 0 "gl_Position" MemberName 29(gl_PerVertex) 1 "gl_PointSize" MemberName 29(gl_PerVertex) 2 "gl_ClipDistance" MemberName 29(gl_PerVertex) 3 "gl_CullDistance" Name 31 "" Name 48 "P" Decorate 14(oColor) Location 0 Decorate 16(PCBlock) Block MemberDecorate 16(PCBlock) 0 ColMajor MemberDecorate 16(PCBlock) 0 MatrixStride 16 MemberDecorate 16(PCBlock) 0 Offset 0 MemberDecorate 16(PCBlock) 1 ColMajor MemberDecorate 16(PCBlock) 1 MatrixStride 16 MemberDecorate 16(PCBlock) 1 Offset 64 MemberDecorate 16(PCBlock) 2 Offset 128 MemberDecorate 16(PCBlock) 3 Offset 144 Decorate 29(gl_PerVertex) Block MemberDecorate 29(gl_PerVertex) 0 BuiltIn Position MemberDecorate 29(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 29(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 29(gl_PerVertex) 3 BuiltIn CullDistance Decorate 48(P) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 13: TypePointer Output 7(fvec4) 14(oColor): 13(ptr) Variable Output 15: TypeMatrix 7(fvec4) 4 16(PCBlock): TypeStruct 15 15 7(fvec4) 7(fvec4) 17: TypePointer PushConstant 16(PCBlock) 18(a): 17(ptr) Variable PushConstant 19: TypeInt 32 1 20: 19(int) Constant 2 21: TypePointer PushConstant 7(fvec4) 26: TypeInt 32 0 27: 26(int) Constant 1 28: TypeArray 6(float) 27 29(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 28 28 30: TypePointer Output 29(gl_PerVertex) 31: 30(ptr) Variable Output 32: 19(int) Constant 0 33: 19(int) Constant 1 34: TypePointer PushConstant 15 40: 19(int) Constant 3 47: TypePointer Input 7(fvec4) 48(P): 47(ptr) Variable Input 4(main): 2 Function None 3 5: Label 22: 21(ptr) AccessChain 18(a) 20 23: 7(fvec4) Load 22 24: 7(fvec4) FunctionCall 9(getColor2() 25: 7(fvec4) FMul 23 24 Store 14(oColor) 25 35: 34(ptr) AccessChain 18(a) 33 36: 15 Load 35 37: 7(fvec4) FunctionCall 11(getWorld() 38: 7(fvec4) MatrixTimesVector 36 37 39: 13(ptr) AccessChain 31 32 Store 39 38 Return FunctionEnd 9(getColor2(): 7(fvec4) Function None 8 10: Label 41: 21(ptr) AccessChain 18(a) 40 42: 7(fvec4) Load 41 ReturnValue 42 FunctionEnd 11(getWorld(): 7(fvec4) Function None 8 12: Label 45: 34(ptr) AccessChain 18(a) 32 46: 15 Load 45 49: 7(fvec4) Load 48(P) 50: 7(fvec4) MatrixTimesVector 46 49 ReturnValue 50 FunctionEnd glslang-16.0.0/Test/baseResults/link1.frag.out000066400000000000000000000131361506534232700211400ustar00rootroot00000000000000link1.frag Shader version: 130 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'a' ( global 4-component vector of float) 0:8 vector-scale ( temp 4-component vector of float) 0:8 Constant: 0:8 8.000000 0:8 'uv4' ( uniform 4-component vector of float) 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'b' ( global 4-component vector of float) 0:17 vector-scale ( temp 4-component vector of float) 0:17 Constant: 0:17 8.000000 0:17 'a' ( global 4-component vector of float) 0:19 Function Definition: foo(mf22; ( global 2-component vector of int) 0:19 Function Parameters: 0:19 'm' ( in 2X2 matrix of float) 0:21 Sequence 0:21 Branch: Return with expression 0:21 Convert float to int ( temp 2-component vector of int) 0:21 direct index ( temp 2-component vector of float) 0:21 'm' ( in 2X2 matrix of float) 0:21 Constant: 0:21 0 (const int) 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of float) 0:24 'c' ( global 4-component vector of float) 0:24 component-wise multiply ( temp 4-component vector of float) 0:24 'b' ( global 4-component vector of float) 0:24 'b' ( global 4-component vector of float) 0:? Linker Objects 0:? 'uv4' ( uniform 4-component vector of float) 0:? 'glass' ( uniform 3-component vector of float) 0:? 'ci' ( const int) 0:? 8 (const int) 0:? 'a' ( global 4-component vector of float) 0:? 'iv3' ( smooth in 3-component vector of float) 0:? 'cup' ( smooth in 4-component vector of float) 0:? 'b' ( global 4-component vector of float) 0:? 'c' ( global 4-component vector of float) 0:? 'cv3' ( const 3-component vector of float) 0:? 43.000000 0:? 0.340000 0:? 9.900000 0:? 'cv3n' ( const 3-component vector of float) 0:? 43.000000 0:? 0.340000 0:? 9.900000 0:? 'cv3e' ( const 3-component vector of float) 0:? 43.000000 0:? 0.340000 0:? 9.900000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'um2n' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'um2e' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 's' ( uniform structure{ global int a, global float b}) 0:? 82 (const int) 0:? 3.900000 0:? 'sn' ( uniform structure{ global int a, global float b}) 0:? 'se' ( uniform structure{ global int a, global float b}) 0:? 82 (const int) 0:? 3.900000 link2.frag Shader version: 130 Requested GL_OES_standard_derivatives Requested GL_OES_texture_3D 0:? Sequence 0:8 Sequence 0:8 move second child to first child ( temp 4-component vector of float) 0:8 'd' ( global 4-component vector of float) 0:8 vector-scale ( temp 4-component vector of float) 0:8 Constant: 0:8 8.000000 0:8 'uv4' ( uniform 4-component vector of float) 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'e' ( global 4-component vector of float) 0:13 vector-scale ( temp 4-component vector of float) 0:13 Constant: 0:13 8.000000 0:13 'd' ( global 4-component vector of float) 0:15 Function Definition: foo( ( global 2-component vector of int) 0:15 Function Parameters: 0:17 Sequence 0:17 Branch: Return with expression 0:17 Constant: 0:17 2 (const int) 0:17 2 (const int) 0:20 Sequence 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'f' ( global 4-component vector of float) 0:20 component-wise multiply ( temp 4-component vector of float) 0:20 'e' ( global 4-component vector of float) 0:20 'e' ( global 4-component vector of float) 0:? Linker Objects 0:? 'uv4' ( uniform 4-component vector of float) 0:? 'glass' ( uniform 2-component vector of float) 0:? 'ci' ( const int) 0:? 8 (const int) 0:? 'd' ( global 4-component vector of float) 0:? 'iv3' ( smooth in 3-component vector of float) 0:? 'cup' ( flat in 4-component vector of float) 0:? 'e' ( global 4-component vector of float) 0:? 'f' ( global 4-component vector of float) 0:? 'cv3' ( const 3-component vector of float) 0:? 43.000000 0:? 0.340000 0:? 9.900000 0:? 'cv3e' ( const 3-component vector of float) 0:? 43.000000 0:? 0.340000 0:? 2.900000 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 4.000000 0:? 0.000000 0:? 0.000000 0:? 4.000000 0:? 'um2n' ( uniform 2X2 matrix of float) 0:? 'um2e' ( uniform 2X2 matrix of float) 0:? 3.000000 0:? 0.000000 0:? 0.000000 0:? 3.000000 0:? 's' ( uniform structure{ global int a, global float b}) 0:? 82 (const int) 0:? 3.900000 0:? 'sn' ( uniform structure{ global int a, global float b}) 0:? 82 (const int) 0:? 3.900000 0:? 'se' ( uniform structure{ global int a, global float b}) 0:? 81 (const int) 0:? 3.900000 link3.frag Shader version: 300 Requested GL_OES_EGL_image_external Requested GL_OES_standard_derivatives Requested GL_OES_texture_3D 0:? Sequence 0:? Linker Objects 0:? 'iv3' ( smooth in highp 2-component vector of float) ERROR: Cannot mix ES profile with non-ES profile shaders glslang-16.0.0/Test/baseResults/link1.vk.frag.out000066400000000000000000000335741506534232700215670ustar00rootroot00000000000000link1.vk.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of float) 0:18 'color' (layout( location=0) out highp 4-component vector of float) 0:18 Function Call: getColor( ( global highp 4-component vector of float) 0:20 move second child to first child ( temp highp int) 0:20 direct index ( temp highp int) 0:20 'a1' ( global unsized 9-element array of highp int) 0:20 Constant: 0:20 8 (const int) 0:20 Constant: 0:20 1 (const int) 0:21 move second child to first child ( temp highp int) 0:21 direct index ( temp highp int) 0:21 'a2' ( global unsized 2-element array of highp int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp highp int) 0:22 indirect index ( temp highp int) 0:22 'b' ( global 5-element array of highp int) 0:22 'i' ( global highp int) 0:22 Constant: 0:22 1 (const int) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 'c' ( global unsized 4-element array of highp int) 0:23 Constant: 0:23 3 (const int) 0:23 Constant: 0:23 1 (const int) 0:? Linker Objects 0:? 'color' (layout( location=0) out highp 4-component vector of float) 0:? 'a1' ( global unsized 9-element array of highp int) 0:? 'a2' ( global unsized 2-element array of highp int) 0:? 'b' ( global 5-element array of highp int) 0:? 'c' ( global unsized 4-element array of highp int) 0:? 'i' ( global highp int) 0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) 0:? 'anon@1' (layout( binding=1 column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float m}) link2.vk.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:14 Function Definition: getColor( ( global highp 4-component vector of float) 0:14 Function Parameters: 0:16 Sequence 0:16 move second child to first child ( temp highp int) 0:16 direct index ( temp highp int) 0:16 'a1' ( global unsized 3-element array of highp int) 0:16 Constant: 0:16 2 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp highp int) 0:17 direct index ( temp highp int) 0:17 'a2' ( global unsized 10-element array of highp int) 0:17 Constant: 0:17 9 (const int) 0:17 Constant: 0:17 1 (const int) 0:18 move second child to first child ( temp highp int) 0:18 direct index ( temp highp int) 0:18 'b' ( global unsized 3-element array of highp int) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 1 (const int) 0:19 move second child to first child ( temp highp int) 0:19 direct index ( temp highp int) 0:19 'c' ( global 7-element array of highp int) 0:19 Constant: 0:19 3 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp highp int) 0:20 indirect index ( temp highp int) 0:20 'c' ( global 7-element array of highp int) 0:20 'i' ( global highp int) 0:20 Constant: 0:20 1 (const int) 0:22 Branch: Return with expression 0:22 texture ( global highp 4-component vector of float) 0:22 's2D' (layout( binding=1) uniform highp sampler2D) 0:22 Constant: 0:22 0.500000 0:22 0.500000 0:? Linker Objects 0:? 's2D' (layout( binding=1) uniform highp sampler2D) 0:? 'a1' ( global unsized 3-element array of highp int) 0:? 'a2' ( global unsized 10-element array of highp int) 0:? 'b' ( global unsized 3-element array of highp int) 0:? 'c' ( global 7-element array of highp int) 0:? 'i' ( global highp int) 0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) 0:? 'anon@1' (layout( binding=1 column_major std430) buffer block{layout( column_major std430) buffer 4-element array of highp float m}) Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of float) 0:18 'color' (layout( location=0) out highp 4-component vector of float) 0:18 Function Call: getColor( ( global highp 4-component vector of float) 0:20 move second child to first child ( temp highp int) 0:20 direct index ( temp highp int) 0:20 'a1' ( global 9-element array of highp int) 0:20 Constant: 0:20 8 (const int) 0:20 Constant: 0:20 1 (const int) 0:21 move second child to first child ( temp highp int) 0:21 direct index ( temp highp int) 0:21 'a2' ( global 10-element array of highp int) 0:21 Constant: 0:21 1 (const int) 0:21 Constant: 0:21 1 (const int) 0:22 move second child to first child ( temp highp int) 0:22 indirect index ( temp highp int) 0:22 'b' ( global 5-element array of highp int) 0:22 'i' ( global highp int) 0:22 Constant: 0:22 1 (const int) 0:23 move second child to first child ( temp highp int) 0:23 direct index ( temp highp int) 0:23 'c' ( global 7-element array of highp int) 0:23 Constant: 0:23 3 (const int) 0:23 Constant: 0:23 1 (const int) 0:14 Function Definition: getColor( ( global highp 4-component vector of float) 0:14 Function Parameters: 0:16 Sequence 0:16 move second child to first child ( temp highp int) 0:16 direct index ( temp highp int) 0:16 'a1' ( global 3-element array of highp int) 0:16 Constant: 0:16 2 (const int) 0:16 Constant: 0:16 1 (const int) 0:17 move second child to first child ( temp highp int) 0:17 direct index ( temp highp int) 0:17 'a2' ( global 10-element array of highp int) 0:17 Constant: 0:17 9 (const int) 0:17 Constant: 0:17 1 (const int) 0:18 move second child to first child ( temp highp int) 0:18 direct index ( temp highp int) 0:18 'b' ( global 3-element array of highp int) 0:18 Constant: 0:18 2 (const int) 0:18 Constant: 0:18 1 (const int) 0:19 move second child to first child ( temp highp int) 0:19 direct index ( temp highp int) 0:19 'c' ( global 7-element array of highp int) 0:19 Constant: 0:19 3 (const int) 0:19 Constant: 0:19 1 (const int) 0:20 move second child to first child ( temp highp int) 0:20 indirect index ( temp highp int) 0:20 'c' ( global 7-element array of highp int) 0:20 'i' ( global highp int) 0:20 Constant: 0:20 1 (const int) 0:22 Branch: Return with expression 0:22 texture ( global highp 4-component vector of float) 0:22 's2D' (layout( binding=1) uniform highp sampler2D) 0:22 Constant: 0:22 0.500000 0:22 0.500000 0:? Linker Objects 0:? 'color' (layout( location=0) out highp 4-component vector of float) 0:? 'a1' ( global 9-element array of highp int) 0:? 'a2' ( global 10-element array of highp int) 0:? 'b' ( global 5-element array of highp int) 0:? 'c' ( global 7-element array of highp int) 0:? 'i' ( global highp int) 0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) 0:? 'anon@1' (layout( binding=1 column_major std430) buffer block{layout( column_major std430) buffer 4-element array of highp float m}) 0:? 's2D' (layout( binding=1) uniform highp sampler2D) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 12 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "getColor(" Name 12 "color" Name 19 "a1" Name 27 "a2" Name 32 "b" Name 33 "i" Name 39 "c" Name 53 "s2D" Name 62 "bnameRuntime" MemberName 62(bnameRuntime) 0 "r" Name 64 "" Name 67 "bnameImplicit" MemberName 67(bnameImplicit) 0 "m" Name 69 "" Decorate 12(color) Location 0 Decorate 53(s2D) Binding 1 Decorate 53(s2D) DescriptorSet 0 Decorate 61 ArrayStride 4 Decorate 62(bnameRuntime) BufferBlock MemberDecorate 62(bnameRuntime) 0 Offset 0 Decorate 64 Binding 0 Decorate 64 DescriptorSet 0 Decorate 66 ArrayStride 4 Decorate 67(bnameImplicit) BufferBlock MemberDecorate 67(bnameImplicit) 0 Offset 0 Decorate 69 Binding 1 Decorate 69 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Output 7(fvec4) 12(color): 11(ptr) Variable Output 14: TypeInt 32 1 15: TypeInt 32 0 16: 15(int) Constant 9 17: TypeArray 14(int) 16 18: TypePointer Private 17 19(a1): 18(ptr) Variable Private 20: 14(int) Constant 8 21: 14(int) Constant 1 22: TypePointer Private 14(int) 24: 15(int) Constant 10 25: TypeArray 14(int) 24 26: TypePointer Private 25 27(a2): 26(ptr) Variable Private 29: 15(int) Constant 5 30: TypeArray 14(int) 29 31: TypePointer Private 30 32(b): 31(ptr) Variable Private 33(i): 22(ptr) Variable Private 36: 15(int) Constant 7 37: TypeArray 14(int) 36 38: TypePointer Private 37 39(c): 38(ptr) Variable Private 40: 14(int) Constant 3 42: 14(int) Constant 2 44: 14(int) Constant 9 50: TypeImage 6(float) 2D sampled format:Unknown 51: TypeSampledImage 50 52: TypePointer UniformConstant 51 53(s2D): 52(ptr) Variable UniformConstant 55: TypeVector 6(float) 2 56: 6(float) Constant 1056964608 57: 55(fvec2) ConstantComposite 56 56 61: TypeRuntimeArray 6(float) 62(bnameRuntime): TypeStruct 61 63: TypePointer Uniform 62(bnameRuntime) 64: 63(ptr) Variable Uniform 65: 15(int) Constant 4 66: TypeArray 6(float) 65 67(bnameImplicit): TypeStruct 66 68: TypePointer Uniform 67(bnameImplicit) 69: 68(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 13: 7(fvec4) FunctionCall 9(getColor() Store 12(color) 13 23: 22(ptr) AccessChain 19(a1) 20 Store 23 21 28: 22(ptr) AccessChain 27(a2) 21 Store 28 21 34: 14(int) Load 33(i) 35: 22(ptr) AccessChain 32(b) 34 Store 35 21 41: 22(ptr) AccessChain 39(c) 40 Store 41 21 Return FunctionEnd 9(getColor(): 7(fvec4) Function None 8 10: Label 43: 22(ptr) AccessChain 19(a1) 42 Store 43 21 45: 22(ptr) AccessChain 27(a2) 44 Store 45 21 46: 22(ptr) AccessChain 32(b) 42 Store 46 21 47: 22(ptr) AccessChain 39(c) 40 Store 47 21 48: 14(int) Load 33(i) 49: 22(ptr) AccessChain 39(c) 48 Store 49 21 54: 51 Load 53(s2D) 58: 7(fvec4) ImageSampleImplicitLod 54 57 ReturnValue 58 FunctionEnd glslang-16.0.0/Test/baseResults/liveTraverser.switch.vert.out000066400000000000000000000461311506534232700243210ustar00rootroot00000000000000liveTraverser.switch.vert Shader version: 460 0:? Sequence 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 switch 0:27 condition 0:27 Constant: 0:27 2 (const int) 0:27 body 0:27 Sequence 0:28 case: with expression 0:28 Constant: 0:28 2 (const int) 0:? Sequence 0:28 Branch: Break 0:29 case: with expression 0:29 Constant: 0:29 1 (const int) 0:? Sequence 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:30 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:30 Constant: 0:30 0 (const uint) 0:30 'n0' (layout( location=11) in highp 4-component vector of float) 0:34 switch 0:34 condition 0:34 Constant: 0:34 3 (const int) 0:34 body 0:34 Sequence 0:35 default: 0:? Sequence 0:35 Branch: Break 0:36 case: with expression 0:36 Constant: 0:36 1 (const int) 0:? Sequence 0:37 move second child to first child ( temp highp 4-component vector of float) 0:37 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:37 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:37 Constant: 0:37 0 (const uint) 0:37 'n1' (layout( location=12) in highp 4-component vector of float) 0:41 switch 0:41 condition 0:41 Constant: 0:41 3 (const int) 0:41 body 0:41 Sequence 0:42 case: with expression 0:42 Constant: 0:42 2 (const int) 0:43 case: with expression 0:43 Constant: 0:43 1 (const int) 0:? Sequence 0:44 move second child to first child ( temp highp 4-component vector of float) 0:44 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:44 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:44 Constant: 0:44 0 (const uint) 0:44 'n2' (layout( location=13) in highp 4-component vector of float) 0:48 switch 0:48 condition 0:48 Constant: 0:48 1 (const int) 0:48 body 0:48 Sequence 0:49 case: with expression 0:49 Constant: 0:49 -1 (const int) 0:? Sequence 0:50 move second child to first child ( temp highp 4-component vector of float) 0:50 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:50 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:50 Constant: 0:50 0 (const uint) 0:50 'n3' (layout( location=14) in highp 4-component vector of float) 0:51 Branch: Break 0:52 case: with expression 0:52 Constant: 0:52 1 (const int) 0:? Sequence 0:53 move second child to first child ( temp highp 4-component vector of float) 0:53 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:53 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:53 Constant: 0:53 0 (const uint) 0:53 'a0' (layout( location=0) in highp 4-component vector of float) 0:54 Branch: Break 0:55 move second child to first child ( temp highp 4-component vector of float) 0:55 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:55 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:55 Constant: 0:55 0 (const uint) 0:55 'n4' (layout( location=15) in highp 4-component vector of float) 0:56 case: with expression 0:56 Constant: 0:56 0 (const int) 0:? Sequence 0:57 move second child to first child ( temp highp 4-component vector of float) 0:57 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:57 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:57 Constant: 0:57 0 (const uint) 0:57 'n5' (layout( location=16) in highp 4-component vector of float) 0:63 switch 0:63 condition 0:63 Constant: 0:63 1 (const int) 0:63 body 0:63 Sequence 0:64 case: with expression 0:64 Constant: 0:64 1 (const uint) 0:? Sequence 0:65 move second child to first child ( temp highp 4-component vector of float) 0:65 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:65 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:65 Constant: 0:65 0 (const uint) 0:65 'a1' (layout( location=1) in highp 4-component vector of float) 0:69 switch 0:69 condition 0:69 Constant: 0:69 -1 (const int) 0:69 body 0:69 Sequence 0:70 case: with expression 0:70 Constant: 0:70 4294967295 (const uint) 0:? Sequence 0:71 move second child to first child ( temp highp 4-component vector of float) 0:71 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:71 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:71 Constant: 0:71 0 (const uint) 0:71 'a2' (layout( location=2) in highp 4-component vector of float) 0:75 switch 0:75 condition 0:75 Constant: 0:75 1 (const int) 0:75 body 0:75 Sequence 0:76 case: with expression 0:76 Constant: 0:76 1 (const int) 0:? Sequence 0:77 move second child to first child ( temp highp 4-component vector of float) 0:77 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:77 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:77 Constant: 0:77 0 (const uint) 0:77 'a3' (layout( location=3) in highp 4-component vector of float) 0:78 Branch: Break 0:79 case: with expression 0:79 Constant: 0:79 -1 (const int) 0:? Sequence 0:80 move second child to first child ( temp highp 4-component vector of float) 0:80 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:80 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:80 Constant: 0:80 0 (const uint) 0:80 'n6' (layout( location=17) in highp 4-component vector of float) 0:84 switch 0:84 condition 0:84 Constant: 0:84 1 (const int) 0:84 body 0:84 Sequence 0:85 default: 0:86 case: with expression 0:86 Constant: 0:86 2 (const int) 0:? Sequence 0:87 move second child to first child ( temp highp 4-component vector of float) 0:87 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:87 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:87 Constant: 0:87 0 (const uint) 0:87 'a4' (layout( location=4) in highp 4-component vector of float) 0:91 switch 0:91 condition 0:91 Constant: 0:91 1 (const int) 0:91 body 0:91 Sequence 0:92 case: with expression 0:92 Constant: 0:92 1 (const int) 0:? Sequence 0:93 move second child to first child ( temp highp 4-component vector of float) 0:93 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:93 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:93 Constant: 0:93 0 (const uint) 0:93 'a5' (layout( location=5) in highp 4-component vector of float) 0:94 Branch: Break 0:95 case: with expression 0:95 Constant: 0:95 2 (const int) 0:? Sequence 0:96 move second child to first child ( temp highp 4-component vector of float) 0:96 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:96 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:96 Constant: 0:96 0 (const uint) 0:96 'n7' (layout( location=18) in highp 4-component vector of float) 0:100 switch 0:100 condition 0:100 Constant: 0:100 8 (const int) 0:100 body 0:100 Sequence 0:101 case: with expression 0:101 Constant: 0:101 8 (const int) 0:? Sequence 0:102 move second child to first child ( temp highp 4-component vector of float) 0:102 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:102 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:102 Constant: 0:102 0 (const uint) 0:102 'a6' (layout( location=6) in highp 4-component vector of float) 0:103 Branch: Break 0:104 case: with expression 0:104 Constant: 0:104 7 (const int) 0:? Sequence 0:105 move second child to first child ( temp highp 4-component vector of float) 0:105 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:105 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:105 Constant: 0:105 0 (const uint) 0:105 'n8' (layout( location=19) in highp 4-component vector of float) 0:106 Branch: Break 0:109 Sequence 0:109 move second child to first child ( temp highp int) 0:109 'x' ( temp highp int) 0:109 Constant: 0:109 2 (const int) 0:112 switch 0:112 condition 0:112 'x' ( temp highp int) 0:112 body 0:112 Sequence 0:113 case: with expression 0:113 Constant: 0:113 1 (const int) 0:? Sequence 0:114 move second child to first child ( temp highp 4-component vector of float) 0:114 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:114 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:114 Constant: 0:114 0 (const uint) 0:114 'a7' (layout( location=7) in highp 4-component vector of float) 0:115 Branch: Break 0:116 case: with expression 0:116 Constant: 0:116 2 (const int) 0:? Sequence 0:117 move second child to first child ( temp highp 4-component vector of float) 0:117 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:117 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:117 Constant: 0:117 0 (const uint) 0:117 'a8' (layout( location=8) in highp 4-component vector of float) 0:118 Branch: Break 0:122 switch 0:122 condition 0:122 add ( temp highp int) 0:122 Constant: 0:122 1 (const int) 0:122 'x' ( temp highp int) 0:122 body 0:122 Sequence 0:123 case: with expression 0:123 Constant: 0:123 1 (const int) 0:? Sequence 0:124 move second child to first child ( temp highp 4-component vector of float) 0:124 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:124 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:124 Constant: 0:124 0 (const uint) 0:124 'a9' (layout( location=9) in highp 4-component vector of float) 0:125 Branch: Break 0:126 case: with expression 0:126 Constant: 0:126 3 (const int) 0:? Sequence 0:127 move second child to first child ( temp highp 4-component vector of float) 0:127 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:127 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:127 Constant: 0:127 0 (const uint) 0:127 'a10' (layout( location=10) in highp 4-component vector of float) 0:128 Branch: Break 0:? Linker Objects 0:? 'a0' (layout( location=0) in highp 4-component vector of float) 0:? 'a1' (layout( location=1) in highp 4-component vector of float) 0:? 'a2' (layout( location=2) in highp 4-component vector of float) 0:? 'a3' (layout( location=3) in highp 4-component vector of float) 0:? 'a4' (layout( location=4) in highp 4-component vector of float) 0:? 'a5' (layout( location=5) in highp 4-component vector of float) 0:? 'a6' (layout( location=6) in highp 4-component vector of float) 0:? 'a7' (layout( location=7) in highp 4-component vector of float) 0:? 'a8' (layout( location=8) in highp 4-component vector of float) 0:? 'a9' (layout( location=9) in highp 4-component vector of float) 0:? 'a10' (layout( location=10) in highp 4-component vector of float) 0:? 'n0' (layout( location=11) in highp 4-component vector of float) 0:? 'n1' (layout( location=12) in highp 4-component vector of float) 0:? 'n2' (layout( location=13) in highp 4-component vector of float) 0:? 'n3' (layout( location=14) in highp 4-component vector of float) 0:? 'n4' (layout( location=15) in highp 4-component vector of float) 0:? 'n5' (layout( location=16) in highp 4-component vector of float) 0:? 'n6' (layout( location=17) in highp 4-component vector of float) 0:? 'n7' (layout( location=18) in highp 4-component vector of float) 0:? 'n8' (layout( location=19) in highp 4-component vector of float) 0:? 'n9' (layout( location=20) in highp 4-component vector of float) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/localAggregates.frag.out000066400000000000000000000536621506534232700232160ustar00rootroot00000000000000localAggregates.frag WARNING: 0:4: varying deprecated in version 130; may be removed in future release WARNING: 0:5: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:34 Function Definition: main( ( global void) 0:34 Function Parameters: 0:? Sequence 0:41 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:41 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:41 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:41 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:41 Constant: 0:41 0 (const int) 0:43 Test condition and select ( temp void) 0:43 Condition 0:43 Compare Greater Than ( temp bool) 0:43 i: direct index for structure ( global int) 0:43 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:43 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 true case 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 f: direct index for structure ( global float) 0:44 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:44 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1.000000 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 'localFArray' ( temp 16-element array of float) 0:45 Constant: 0:45 4 (const int) 0:45 direct index ( temp float) 0:45 'coord' ( smooth in 2-component vector of float) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp int) 0:46 direct index ( temp int) 0:46 'localIArray' ( temp 8-element array of int) 0:46 Constant: 0:46 2 (const int) 0:46 i: direct index for structure ( global int) 0:46 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:46 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:43 false case 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 f: direct index for structure ( global float) 0:48 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:48 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 direct index ( temp float) 0:48 'coord' ( smooth in 2-component vector of float) 0:48 Constant: 0:48 0 (const int) 0:49 move second child to first child ( temp float) 0:49 direct index ( temp float) 0:49 'localFArray' ( temp 16-element array of float) 0:49 Constant: 0:49 4 (const int) 0:49 Constant: 0:49 1.000000 0:50 move second child to first child ( temp int) 0:50 direct index ( temp int) 0:50 'localIArray' ( temp 8-element array of int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:53 Test condition and select ( temp void) 0:53 Condition 0:53 Compare Equal ( temp bool) 0:53 direct index ( temp int) 0:53 'localIArray' ( temp 8-element array of int) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 true case 0:54 Pre-Increment ( temp float) 0:54 direct index ( temp float) 0:54 'localFArray' ( temp 16-element array of float) 0:54 Constant: 0:54 4 (const int) 0:57 Sequence 0:57 move second child to first child ( temp int) 0:57 'x' ( temp int) 0:57 Constant: 0:57 5 (const int) 0:58 move second child to first child ( temp float) 0:58 indirect index ( temp float) 0:58 'localArray' ( temp 16-element array of float) 0:58 'x' ( temp int) 0:58 direct index ( temp float) 0:58 'coord' ( smooth in 2-component vector of float) 0:58 Constant: 0:58 0 (const int) 0:62 Sequence 0:62 Sequence 0:62 move second child to first child ( temp int) 0:62 'i' ( temp int) 0:62 Constant: 0:62 0 (const int) 0:62 Loop with condition tested first 0:62 Loop Condition 0:62 Compare Less Than ( temp bool) 0:62 'i' ( temp int) 0:62 Constant: 0:62 16 (const int) 0:62 Loop Body 0:63 move second child to first child ( temp float) 0:63 indirect index ( temp float) 0:63 'a' ( temp 16-element array of float) 0:63 'i' ( temp int) 0:63 Constant: 0:63 0.000000 0:62 Loop Terminal Expression 0:62 Post-Increment ( temp int) 0:62 'i' ( temp int) 0:65 Test condition and select ( temp void) 0:65 Condition 0:65 Compare Equal ( temp bool) 0:65 'condition' ( uniform int) 0:65 Constant: 0:65 1 (const int) 0:65 true case 0:66 move second child to first child ( temp 16-element array of float) 0:66 'a' ( temp 16-element array of float) 0:66 'localArray' ( temp 16-element array of float) 0:68 move second child to first child ( temp 4-component vector of float) 0:68 bleh: direct index for structure ( global 4-component vector of float) 0:68 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:68 Constant: 0:68 3 (const int) 0:68 'color' ( smooth in 4-component vector of float) 0:69 move second child to first child ( temp float) 0:69 direct index ( temp float) 0:69 bleh: direct index for structure ( global 4-component vector of float) 0:69 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:69 Constant: 0:69 3 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 direct index ( temp float) 0:69 'coord' ( smooth in 2-component vector of float) 0:69 Constant: 0:69 1 (const int) 0:71 move second child to first child ( temp 4-component vector of float) 0:71 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:71 component-wise multiply ( temp 4-component vector of float) 0:71 vector-scale ( temp 4-component vector of float) 0:71 bleh: direct index for structure ( global 4-component vector of float) 0:71 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:71 Constant: 0:71 3 (const int) 0:71 add ( temp float) 0:71 add ( temp float) 0:71 add ( temp float) 0:71 direct index ( temp float) 0:71 'localFArray' ( temp 16-element array of float) 0:71 Constant: 0:71 4 (const int) 0:71 f: direct index for structure ( global float) 0:71 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:71 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 indirect index ( temp float) 0:71 'localArray' ( temp 16-element array of float) 0:71 'x' ( temp int) 0:71 indirect index ( temp float) 0:71 'a' ( temp 16-element array of float) 0:71 'x' ( temp int) 0:71 texture ( global 4-component vector of float) 0:71 'sampler' ( uniform sampler2D) 0:71 'coord' ( smooth in 2-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'color' ( smooth in 4-component vector of float) 0:? 'foo' ( uniform structure{ global int i, global float f}) 0:? 'foo2' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:? 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'uFloatArray' ( uniform 16-element array of float) 0:? 'condition' ( uniform int) Linked fragment stage: Shader version: 130 0:? Sequence 0:34 Function Definition: main( ( global void) 0:34 Function Parameters: 0:? Sequence 0:41 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:41 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:41 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:41 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:41 Constant: 0:41 0 (const int) 0:43 Test condition and select ( temp void) 0:43 Condition 0:43 Compare Greater Than ( temp bool) 0:43 i: direct index for structure ( global int) 0:43 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:43 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 Constant: 0:43 0 (const int) 0:43 true case 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 f: direct index for structure ( global float) 0:44 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:44 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const int) 0:44 Constant: 0:44 1.000000 0:45 move second child to first child ( temp float) 0:45 direct index ( temp float) 0:45 'localFArray' ( temp 16-element array of float) 0:45 Constant: 0:45 4 (const int) 0:45 direct index ( temp float) 0:45 'coord' ( smooth in 2-component vector of float) 0:45 Constant: 0:45 0 (const int) 0:46 move second child to first child ( temp int) 0:46 direct index ( temp int) 0:46 'localIArray' ( temp 8-element array of int) 0:46 Constant: 0:46 2 (const int) 0:46 i: direct index for structure ( global int) 0:46 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:46 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 0 (const int) 0:43 false case 0:48 Sequence 0:48 move second child to first child ( temp float) 0:48 f: direct index for structure ( global float) 0:48 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:48 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:48 Constant: 0:48 2 (const int) 0:48 Constant: 0:48 1 (const int) 0:48 direct index ( temp float) 0:48 'coord' ( smooth in 2-component vector of float) 0:48 Constant: 0:48 0 (const int) 0:49 move second child to first child ( temp float) 0:49 direct index ( temp float) 0:49 'localFArray' ( temp 16-element array of float) 0:49 Constant: 0:49 4 (const int) 0:49 Constant: 0:49 1.000000 0:50 move second child to first child ( temp int) 0:50 direct index ( temp int) 0:50 'localIArray' ( temp 8-element array of int) 0:50 Constant: 0:50 2 (const int) 0:50 Constant: 0:50 0 (const int) 0:53 Test condition and select ( temp void) 0:53 Condition 0:53 Compare Equal ( temp bool) 0:53 direct index ( temp int) 0:53 'localIArray' ( temp 8-element array of int) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 true case 0:54 Pre-Increment ( temp float) 0:54 direct index ( temp float) 0:54 'localFArray' ( temp 16-element array of float) 0:54 Constant: 0:54 4 (const int) 0:57 Sequence 0:57 move second child to first child ( temp int) 0:57 'x' ( temp int) 0:57 Constant: 0:57 5 (const int) 0:58 move second child to first child ( temp float) 0:58 indirect index ( temp float) 0:58 'localArray' ( temp 16-element array of float) 0:58 'x' ( temp int) 0:58 direct index ( temp float) 0:58 'coord' ( smooth in 2-component vector of float) 0:58 Constant: 0:58 0 (const int) 0:62 Sequence 0:62 Sequence 0:62 move second child to first child ( temp int) 0:62 'i' ( temp int) 0:62 Constant: 0:62 0 (const int) 0:62 Loop with condition tested first 0:62 Loop Condition 0:62 Compare Less Than ( temp bool) 0:62 'i' ( temp int) 0:62 Constant: 0:62 16 (const int) 0:62 Loop Body 0:63 move second child to first child ( temp float) 0:63 indirect index ( temp float) 0:63 'a' ( temp 16-element array of float) 0:63 'i' ( temp int) 0:63 Constant: 0:63 0.000000 0:62 Loop Terminal Expression 0:62 Post-Increment ( temp int) 0:62 'i' ( temp int) 0:65 Test condition and select ( temp void) 0:65 Condition 0:65 Compare Equal ( temp bool) 0:65 'condition' ( uniform int) 0:65 Constant: 0:65 1 (const int) 0:65 true case 0:66 move second child to first child ( temp 16-element array of float) 0:66 'a' ( temp 16-element array of float) 0:66 'localArray' ( temp 16-element array of float) 0:68 move second child to first child ( temp 4-component vector of float) 0:68 bleh: direct index for structure ( global 4-component vector of float) 0:68 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:68 Constant: 0:68 3 (const int) 0:68 'color' ( smooth in 4-component vector of float) 0:69 move second child to first child ( temp float) 0:69 direct index ( temp float) 0:69 bleh: direct index for structure ( global 4-component vector of float) 0:69 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:69 Constant: 0:69 3 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 direct index ( temp float) 0:69 'coord' ( smooth in 2-component vector of float) 0:69 Constant: 0:69 1 (const int) 0:71 move second child to first child ( temp 4-component vector of float) 0:71 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:71 component-wise multiply ( temp 4-component vector of float) 0:71 vector-scale ( temp 4-component vector of float) 0:71 bleh: direct index for structure ( global 4-component vector of float) 0:71 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:71 Constant: 0:71 3 (const int) 0:71 add ( temp float) 0:71 add ( temp float) 0:71 add ( temp float) 0:71 direct index ( temp float) 0:71 'localFArray' ( temp 16-element array of float) 0:71 Constant: 0:71 4 (const int) 0:71 f: direct index for structure ( global float) 0:71 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:71 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:71 Constant: 0:71 2 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 indirect index ( temp float) 0:71 'localArray' ( temp 16-element array of float) 0:71 'x' ( temp int) 0:71 indirect index ( temp float) 0:71 'a' ( temp 16-element array of float) 0:71 'x' ( temp int) 0:71 texture ( global 4-component vector of float) 0:71 'sampler' ( uniform sampler2D) 0:71 'coord' ( smooth in 2-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'color' ( smooth in 4-component vector of float) 0:? 'foo' ( uniform structure{ global int i, global float f}) 0:? 'foo2' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh}) 0:? 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'uFloatArray' ( uniform 16-element array of float) 0:? 'condition' ( uniform int) glslang-16.0.0/Test/baseResults/location_aliasing.tesc.out000066400000000000000000000023161506534232700236160ustar00rootroot00000000000000location_aliasing.tesc ERROR: 0:7: 'location' : the aliases sharing the location 1 must be the same basic type and interpolation qualification ERROR: 1 compilation errors. No code generated. Shader version: 430 Requested GL_ARB_enhanced_layouts vertices = 1 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:? Linker Objects 0:? 'gohan' (layout( location=1 component=0) in 32-element array of double) 0:? 'goten' (layout( location=1 component=2) in 32-element array of float) 0:? 'vs_tcs' ( in 32-element array of 4-component vector of float) 0:? 'tcs_tes' ( out 1-element array of 4-component vector of float) Linked tessellation control stage: Shader version: 430 Requested GL_ARB_enhanced_layouts vertices = 1 ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:? Linker Objects 0:? 'gohan' (layout( location=1 component=0) in 32-element array of double) 0:? 'goten' (layout( location=1 component=2) in 32-element array of float) 0:? 'vs_tcs' ( in 32-element array of 4-component vector of float) 0:? 'tcs_tes' ( out 1-element array of 4-component vector of float) glslang-16.0.0/Test/baseResults/location_aliasing1.frag.out000066400000000000000000000015051506534232700236570ustar00rootroot00000000000000location_aliasing1.frag ERROR: 0:6: 'location' : the aliases sharing the location 1 must be the same basic type and interpolation qualification ERROR: 1 compilation errors. No code generated. Shader version: 430 Requested GL_ARB_enhanced_layouts ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:? Linker Objects 0:? 'in1' (layout( location=1 component=0) smooth in float) 0:? 'in2' (layout( location=1 component=2) flat in float) Linked fragment stage: Shader version: 430 Requested GL_ARB_enhanced_layouts ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:? Linker Objects 0:? 'in1' (layout( location=1 component=0) smooth in float) 0:? 'in2' (layout( location=1 component=2) flat in float) glslang-16.0.0/Test/baseResults/loops.frag.out000066400000000000000000002355271506534232700212700ustar00rootroot00000000000000loops.frag WARNING: 0:14: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:53 Function Definition: main( ( global void) 0:53 Function Parameters: 0:55 Sequence 0:55 Sequence 0:55 move second child to first child ( temp 4-component vector of float) 0:55 'color' ( temp 4-component vector of float) 0:55 'BaseColor' ( smooth in 4-component vector of float) 0:58 Loop with condition tested first 0:58 Loop Condition 0:58 Constant: 0:58 true (const bool) 0:58 Loop Body 0:59 Sequence 0:59 Test condition and select ( temp void) 0:59 Condition 0:59 Compare Less Than ( temp bool) 0:59 direct index ( temp float) 0:59 'color' ( temp 4-component vector of float) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0.330000 0:59 true case 0:60 Sequence 0:60 add second child into first child ( temp 4-component vector of float) 0:60 'color' ( temp 4-component vector of float) 0:60 Constant: 0:60 0.330000 0:60 0.330000 0:60 0.330000 0:60 0.330000 0:61 Branch: Break 0:63 Test condition and select ( temp void) 0:63 Condition 0:63 Compare Less Than ( temp bool) 0:63 direct index ( temp float) 0:63 'color' ( temp 4-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0.660000 0:63 true case 0:64 Sequence 0:64 add second child into first child ( temp 4-component vector of float) 0:64 'color' ( temp 4-component vector of float) 0:64 Constant: 0:64 0.660000 0:64 0.660000 0:64 0.660000 0:64 0.660000 0:65 Branch: Break 0:68 add second child into first child ( temp 4-component vector of float) 0:68 'color' ( temp 4-component vector of float) 0:68 Constant: 0:68 0.330000 0:68 0.330000 0:68 0.330000 0:68 0.330000 0:69 Branch: Break 0:73 Loop with condition tested first 0:73 Loop Condition 0:73 Compare Less Than ( temp bool) 0:73 direct index ( temp float) 0:73 'color' ( temp 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 'd' ( uniform float) 0:73 Loop Body 0:74 Sequence 0:74 add second child into first child ( temp 4-component vector of float) 0:74 'color' ( temp 4-component vector of float) 0:74 'bigColor' ( uniform 4-component vector of float) 0:78 Loop with condition tested first 0:78 Loop Condition 0:78 Compare Less Than ( temp bool) 0:78 direct index ( temp float) 0:78 'color' ( temp 4-component vector of float) 0:78 Constant: 0:78 2 (const int) 0:78 'd' ( uniform float) 0:78 Loop Body 0:79 Sequence 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'color' ( temp 4-component vector of float) 0:79 'bigColor1_1' ( uniform 4-component vector of float) 0:80 Test condition and select ( temp void) 0:80 Condition 0:80 Compare Less Than ( temp bool) 0:80 direct index ( temp float) 0:80 'color' ( temp 4-component vector of float) 0:80 Constant: 0:80 3 (const int) 0:80 'd' ( uniform float) 0:80 true case 0:81 Branch: Continue 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'color' ( temp 4-component vector of float) 0:83 'bigColor1_1' ( uniform 4-component vector of float) 0:87 Loop with condition tested first 0:87 Loop Condition 0:87 Compare Less Than ( temp bool) 0:87 direct index ( temp float) 0:87 'color' ( temp 4-component vector of float) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 42.000000 0:87 Loop Body 0:88 Sequence 0:88 Pre-Increment ( temp 4-component vector of float) 0:88 'color' ( temp 4-component vector of float) 0:92 Loop with condition tested first 0:92 Loop Condition 0:92 logical-and ( temp bool) 0:92 Compare Less Than ( temp bool) 0:92 direct index ( temp float) 0:92 'color' ( temp 4-component vector of float) 0:92 Constant: 0:92 3 (const int) 0:92 'd2' ( uniform float) 0:92 Compare Less Than ( temp bool) 0:92 direct index ( temp float) 0:92 'color' ( temp 4-component vector of float) 0:92 Constant: 0:92 1 (const int) 0:92 'd3' ( uniform float) 0:92 Loop Body 0:93 Sequence 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'color' ( temp 4-component vector of float) 0:93 'bigColor1_2' ( uniform 4-component vector of float) 0:97 Loop with condition tested first 0:97 Loop Condition 0:97 Compare Less Than ( temp bool) 0:97 direct index ( temp float) 0:97 'color' ( temp 4-component vector of float) 0:97 Constant: 0:97 2 (const int) 0:97 'd3' ( uniform float) 0:97 Loop Body 0:98 Sequence 0:98 add second child into first child ( temp 4-component vector of float) 0:98 'color' ( temp 4-component vector of float) 0:98 'bigColor1_3' ( uniform 4-component vector of float) 0:99 Test condition and select ( temp void) 0:99 Condition 0:99 Compare Less Than ( temp bool) 0:99 direct index ( temp float) 0:99 'color' ( temp 4-component vector of float) 0:99 Constant: 0:99 1 (const int) 0:99 'd4' ( uniform float) 0:99 true case 0:100 Branch: Break 0:101 add second child into first child ( temp 4-component vector of float) 0:101 'color' ( temp 4-component vector of float) 0:101 'bigColor1_3' ( uniform 4-component vector of float) 0:105 Sequence 0:105 Sequence 0:105 move second child to first child ( temp int) 0:105 'i' ( temp int) 0:105 Constant: 0:105 0 (const int) 0:105 Loop with condition tested first 0:105 Loop Condition 0:105 Compare Less Than ( temp bool) 0:105 'i' ( temp int) 0:105 'Count' ( uniform int) 0:105 Loop Body 0:106 Sequence 0:106 add second child into first child ( temp 4-component vector of float) 0:106 'color' ( temp 4-component vector of float) 0:106 'bigColor2' ( uniform 4-component vector of float) 0:105 Loop Terminal Expression 0:105 Pre-Increment ( temp int) 0:105 'i' ( temp int) 0:112 Loop with condition not tested first 0:112 Loop Condition 0:112 Compare Less Than ( temp bool) 0:112 direct index ( temp float) 0:112 'color' ( temp 4-component vector of float) 0:112 Constant: 0:112 0 (const int) 0:112 'd2' ( uniform float) 0:112 Loop Body 0:111 Sequence 0:111 add second child into first child ( temp 4-component vector of float) 0:111 'color' ( temp 4-component vector of float) 0:111 'bigColor3' ( uniform 4-component vector of float) 0:115 Sequence 0:115 Sequence 0:115 move second child to first child ( temp int) 0:115 'i' ( temp int) 0:115 Constant: 0:115 0 (const int) 0:115 Loop with condition tested first 0:115 Loop Condition 0:115 Compare Less Than ( temp bool) 0:115 'i' ( temp int) 0:115 Constant: 0:115 42 (const int) 0:115 Loop Body 0:116 Sequence 0:116 add second child into first child ( temp float) 0:116 direct index ( temp float) 0:116 'color' ( temp 4-component vector of float) 0:116 Constant: 0:116 2 (const int) 0:116 'd3' ( uniform float) 0:115 Loop Terminal Expression 0:115 Pre-Increment ( temp int) 0:115 'i' ( temp int) 0:120 Sequence 0:120 Sequence 0:120 move second child to first child ( temp int) 0:120 'i' ( temp int) 0:120 Constant: 0:120 0 (const int) 0:120 Loop with condition tested first 0:120 Loop Condition 0:120 Compare Less Than ( temp bool) 0:120 'i' ( temp int) 0:120 Constant: 0:120 100 (const int) 0:120 Loop Body 0:121 Sequence 0:121 Test condition and select ( temp void) 0:121 Condition 0:121 Compare Less Than ( temp bool) 0:121 direct index ( temp float) 0:121 'color' ( temp 4-component vector of float) 0:121 Constant: 0:121 2 (const int) 0:121 Constant: 0:121 20.000000 0:121 true case 0:122 Post-Increment ( temp float) 0:122 direct index ( temp float) 0:122 'color' ( temp 4-component vector of float) 0:122 Constant: 0:122 0 (const int) 0:121 false case 0:124 Post-Increment ( temp float) 0:124 direct index ( temp float) 0:124 'color' ( temp 4-component vector of float) 0:124 Constant: 0:124 1 (const int) 0:125 Test condition and select ( temp void) 0:125 Condition 0:125 Compare Less Than ( temp bool) 0:125 direct index ( temp float) 0:125 'color' ( temp 4-component vector of float) 0:125 Constant: 0:125 3 (const int) 0:125 Constant: 0:125 20.000000 0:125 true case 0:126 Test condition and select ( temp void) 0:126 Condition 0:126 Compare Greater Than ( temp bool) 0:126 direct index ( temp float) 0:126 'color' ( temp 4-component vector of float) 0:126 Constant: 0:126 2 (const int) 0:126 direct index ( temp float) 0:126 'color' ( temp 4-component vector of float) 0:126 Constant: 0:126 1 (const int) 0:126 true case 0:127 Constant: 0:127 0 (const int) 0:120 Loop Terminal Expression 0:120 Pre-Increment ( temp int) 0:120 'i' ( temp int) 0:131 Sequence 0:131 Sequence 0:131 move second child to first child ( temp int) 0:131 'i' ( temp int) 0:131 Constant: 0:131 0 (const int) 0:131 Loop with condition tested first 0:131 Loop Condition 0:131 Compare Less Than ( temp bool) 0:131 'i' ( temp int) 0:131 Constant: 0:131 120 (const int) 0:131 Loop Body 0:132 Sequence 0:132 Test condition and select ( temp void) 0:132 Condition 0:132 Compare Less Than ( temp bool) 0:132 direct index ( temp float) 0:132 'color' ( temp 4-component vector of float) 0:132 Constant: 0:132 2 (const int) 0:132 Constant: 0:132 20.000000 0:132 true case 0:133 Post-Increment ( temp float) 0:133 direct index ( temp float) 0:133 'color' ( temp 4-component vector of float) 0:133 Constant: 0:133 0 (const int) 0:132 false case 0:135 Post-Increment ( temp float) 0:135 direct index ( temp float) 0:135 'color' ( temp 4-component vector of float) 0:135 Constant: 0:135 1 (const int) 0:131 Loop Terminal Expression 0:131 Pre-Increment ( temp int) 0:131 'i' ( temp int) 0:139 Sequence 0:139 Sequence 0:139 move second child to first child ( temp int) 0:139 'i' ( temp int) 0:139 Constant: 0:139 0 (const int) 0:139 Loop with condition tested first 0:139 Loop Condition 0:139 Compare Less Than ( temp bool) 0:139 'i' ( temp int) 0:139 Constant: 0:139 42 (const int) 0:139 Loop Body 0:140 Sequence 0:140 add second child into first child ( temp float) 0:140 direct index ( temp float) 0:140 'color' ( temp 4-component vector of float) 0:140 Constant: 0:140 2 (const int) 0:140 'd3' ( uniform float) 0:141 Test condition and select ( temp void) 0:141 Condition 0:141 Compare Less Than ( temp bool) 0:141 direct index ( temp float) 0:141 'color' ( temp 4-component vector of float) 0:141 Constant: 0:141 0 (const int) 0:141 'd4' ( uniform float) 0:141 true case 0:142 Branch: Continue 0:143 Pre-Increment ( temp float) 0:143 direct index ( temp float) 0:143 'color' ( temp 4-component vector of float) 0:143 Constant: 0:143 3 (const int) 0:139 Loop Terminal Expression 0:139 Pre-Increment ( temp int) 0:139 'i' ( temp int) 0:147 Sequence 0:147 Sequence 0:147 move second child to first child ( temp int) 0:147 'i' ( temp int) 0:147 Constant: 0:147 0 (const int) 0:147 Loop with condition tested first 0:147 Loop Condition 0:147 Compare Less Than ( temp bool) 0:147 'i' ( temp int) 0:147 Constant: 0:147 42 (const int) 0:147 Loop Body 0:148 Sequence 0:148 add second child into first child ( temp float) 0:148 direct index ( temp float) 0:148 'color' ( temp 4-component vector of float) 0:148 Constant: 0:148 2 (const int) 0:148 'd3' ( uniform float) 0:149 Test condition and select ( temp void) 0:149 Condition 0:149 Compare Less Than ( temp bool) 0:149 direct index ( temp float) 0:149 'color' ( temp 4-component vector of float) 0:149 Constant: 0:149 0 (const int) 0:149 'd4' ( uniform float) 0:149 true case 0:150 Branch: Break 0:151 Pre-Increment ( temp float) 0:151 direct index ( temp float) 0:151 'color' ( temp 4-component vector of float) 0:151 Constant: 0:151 3 (const int) 0:147 Loop Terminal Expression 0:147 Pre-Increment ( temp int) 0:147 'i' ( temp int) 0:163 Loop with condition not tested first 0:163 Loop Condition 0:163 Compare Less Than ( temp bool) 0:163 direct index ( temp float) 0:163 'color' ( temp 4-component vector of float) 0:163 Constant: 0:163 2 (const int) 0:163 'd4' ( uniform float) 0:163 Loop Body 0:156 Sequence 0:156 add second child into first child ( temp 4-component vector of float) 0:156 'color' ( temp 4-component vector of float) 0:156 'bigColor4' ( uniform 4-component vector of float) 0:157 Test condition and select ( temp void) 0:157 Condition 0:157 Compare Less Than ( temp bool) 0:157 direct index ( temp float) 0:157 'color' ( temp 4-component vector of float) 0:157 Constant: 0:157 0 (const int) 0:157 'd4' ( uniform float) 0:157 true case 0:158 Branch: Continue 0:159 Test condition and select ( temp void) 0:159 Condition 0:159 Compare Less Than ( temp bool) 0:159 direct index ( temp float) 0:159 'color' ( temp 4-component vector of float) 0:159 Constant: 0:159 1 (const int) 0:159 'd4' ( uniform float) 0:159 true case 0:160 add second child into first child ( temp float) 0:160 direct index ( temp float) 0:160 'color' ( temp 4-component vector of float) 0:160 Constant: 0:160 1 (const int) 0:160 'd4' ( uniform float) 0:159 false case 0:162 add second child into first child ( temp float) 0:162 direct index ( temp float) 0:162 'color' ( temp 4-component vector of float) 0:162 Constant: 0:162 0 (const int) 0:162 'd4' ( uniform float) 0:170 Loop with condition not tested first 0:170 Loop Condition 0:170 Compare Less Than ( temp bool) 0:170 direct index ( temp float) 0:170 'color' ( temp 4-component vector of float) 0:170 Constant: 0:170 0 (const int) 0:170 'd5' ( uniform float) 0:170 Loop Body 0:167 Sequence 0:167 add second child into first child ( temp 4-component vector of float) 0:167 'color' ( temp 4-component vector of float) 0:167 'bigColor5' ( uniform 4-component vector of float) 0:168 Test condition and select ( temp void) 0:168 Condition 0:168 Compare Less Than ( temp bool) 0:168 direct index ( temp float) 0:168 'color' ( temp 4-component vector of float) 0:168 Constant: 0:168 1 (const int) 0:168 'd5' ( uniform float) 0:168 true case 0:169 add second child into first child ( temp float) 0:169 direct index ( temp float) 0:169 'color' ( temp 4-component vector of float) 0:169 Constant: 0:169 1 (const int) 0:169 'd5' ( uniform float) 0:173 Test condition and select ( temp void) 0:173 Condition 0:173 Compare Less Than ( temp bool) 0:173 direct index ( temp float) 0:173 'color' ( temp 4-component vector of float) 0:173 Constant: 0:173 0 (const int) 0:173 'd6' ( uniform float) 0:173 true case 0:174 Sequence 0:174 Loop with condition tested first 0:174 Loop Condition 0:174 Compare Less Than ( temp bool) 0:174 direct index ( temp float) 0:174 'color' ( temp 4-component vector of float) 0:174 Constant: 0:174 1 (const int) 0:174 'd6' ( uniform float) 0:174 Loop Body 0:175 add second child into first child ( temp 4-component vector of float) 0:175 'color' ( temp 4-component vector of float) 0:175 'bigColor6' ( uniform 4-component vector of float) 0:173 false case 0:177 Sequence 0:177 Loop with condition tested first 0:177 Loop Condition 0:177 Compare Less Than ( temp bool) 0:177 direct index ( temp float) 0:177 'color' ( temp 4-component vector of float) 0:177 Constant: 0:177 2 (const int) 0:177 'd6' ( uniform float) 0:177 Loop Body 0:178 add second child into first child ( temp float) 0:178 direct index ( temp float) 0:178 'color' ( temp 4-component vector of float) 0:178 Constant: 0:178 2 (const int) 0:178 direct index ( temp float) 0:178 'bigColor6' ( uniform 4-component vector of float) 0:178 Constant: 0:178 2 (const int) 0:182 Test condition and select ( temp void) 0:182 Condition 0:182 Compare Less Than ( temp bool) 0:182 direct index ( temp float) 0:182 'color' ( temp 4-component vector of float) 0:182 Constant: 0:182 0 (const int) 0:182 'd6' ( uniform float) 0:182 true case 0:183 Sequence 0:183 Loop with condition tested first 0:183 Loop Condition 0:183 Compare Less Than ( temp bool) 0:183 direct index ( temp float) 0:183 'color' ( temp 4-component vector of float) 0:183 Constant: 0:183 1 (const int) 0:183 'd6' ( uniform float) 0:183 Loop Body 0:184 Sequence 0:184 add second child into first child ( temp 4-component vector of float) 0:184 'color' ( temp 4-component vector of float) 0:184 'bigColor6' ( uniform 4-component vector of float) 0:185 Test condition and select ( temp void) 0:185 Condition 0:185 Compare Less Than ( temp bool) 0:185 'd7' ( uniform float) 0:185 Constant: 0:185 1.000000 0:185 true case 0:186 Branch: Break 0:182 false case 0:190 Sequence 0:190 Loop with condition tested first 0:190 Loop Condition 0:190 Compare Less Than ( temp bool) 0:190 direct index ( temp float) 0:190 'color' ( temp 4-component vector of float) 0:190 Constant: 0:190 2 (const int) 0:190 'd6' ( uniform float) 0:190 Loop Body 0:191 add second child into first child ( temp float) 0:191 direct index ( temp float) 0:191 'color' ( temp 4-component vector of float) 0:191 Constant: 0:191 2 (const int) 0:191 direct index ( temp float) 0:191 'bigColor6' ( uniform 4-component vector of float) 0:191 Constant: 0:191 2 (const int) 0:209 Loop with condition not tested first 0:209 Loop Condition 0:209 Constant: 0:209 true (const bool) 0:209 Loop Body 0:197 Sequence 0:197 Test condition and select ( temp void) 0:197 Condition 0:197 Compare Less Than ( temp bool) 0:197 'd7' ( uniform float) 0:197 Constant: 0:197 0.000000 0:197 true case 0:198 Branch: Break 0:200 add second child into first child ( temp 4-component vector of float) 0:200 'color' ( temp 4-component vector of float) 0:200 'bigColor7' ( uniform 4-component vector of float) 0:202 Test condition and select ( temp void) 0:202 Condition 0:202 Compare Less Than ( temp bool) 0:202 'd7' ( uniform float) 0:202 Constant: 0:202 1.000000 0:202 true case 0:203 Sequence 0:203 Post-Increment ( temp float) 0:203 direct index ( temp float) 0:203 'color' ( temp 4-component vector of float) 0:203 Constant: 0:203 2 (const int) 0:204 Branch: Break 0:207 add second child into first child ( temp 4-component vector of float) 0:207 'color' ( temp 4-component vector of float) 0:207 'BaseColor' ( smooth in 4-component vector of float) 0:234 Loop with condition not tested first 0:234 Loop Condition 0:234 Compare Less Than ( temp bool) 0:234 direct index ( temp float) 0:234 'color' ( temp 4-component vector of float) 0:234 Constant: 0:234 2 (const int) 0:234 'd8' ( uniform float) 0:234 Loop Body 0:217 Sequence 0:217 Test condition and select ( temp void) 0:217 Condition 0:217 Compare Less Than ( temp bool) 0:217 'd8' ( uniform float) 0:217 Constant: 0:217 0.000000 0:217 true case 0:218 Branch: Break 0:220 add second child into first child ( temp 4-component vector of float) 0:220 'color' ( temp 4-component vector of float) 0:220 'bigColor7' ( uniform 4-component vector of float) 0:222 Test condition and select ( temp void) 0:222 Condition 0:222 Compare Less Than ( temp bool) 0:222 'd8' ( uniform float) 0:222 Constant: 0:222 1.000000 0:222 true case 0:223 Sequence 0:223 Post-Increment ( temp float) 0:223 direct index ( temp float) 0:223 'color' ( temp 4-component vector of float) 0:223 Constant: 0:223 2 (const int) 0:224 Test condition and select ( temp void) 0:224 Condition 0:224 Compare Less Than ( temp bool) 0:224 'd8' ( uniform float) 0:224 Constant: 0:224 2.000000 0:224 true case 0:225 Sequence 0:225 Post-Increment ( temp float) 0:225 direct index ( temp float) 0:225 'color' ( temp 4-component vector of float) 0:225 Constant: 0:225 1 (const int) 0:224 false case 0:227 Sequence 0:227 Post-Increment ( temp float) 0:227 direct index ( temp float) 0:227 'color' ( temp 4-component vector of float) 0:227 Constant: 0:227 0 (const int) 0:229 Branch: Break 0:232 add second child into first child ( temp 4-component vector of float) 0:232 'color' ( temp 4-component vector of float) 0:232 'BaseColor' ( smooth in 4-component vector of float) 0:237 Loop with condition tested first 0:237 Loop Condition 0:237 Compare Less Than ( temp bool) 0:237 direct index ( temp float) 0:237 'color' ( temp 4-component vector of float) 0:237 Constant: 0:237 3 (const int) 0:237 'd9' ( uniform float) 0:237 Loop Body 0:238 Sequence 0:238 Test condition and select ( temp void) 0:238 Condition 0:238 Compare Greater Than ( temp bool) 0:238 'd9' ( uniform float) 0:238 'd8' ( uniform float) 0:238 true case 0:239 Sequence 0:239 Test condition and select ( temp void) 0:239 Condition 0:239 Compare Less Than or Equal ( temp bool) 0:239 direct index ( temp float) 0:239 'color' ( temp 4-component vector of float) 0:239 Constant: 0:239 0 (const int) 0:239 'd7' ( uniform float) 0:239 true case 0:240 Sequence 0:240 Test condition and select ( temp void) 0:240 Condition 0:240 Compare Equal ( temp bool) 0:240 direct index ( temp float) 0:240 'color' ( temp 4-component vector of float) 0:240 Constant: 0:240 2 (const int) 0:240 Constant: 0:240 5.000000 0:240 true case 0:241 Post-Increment ( temp float) 0:241 direct index ( temp float) 0:241 'color' ( temp 4-component vector of float) 0:241 Constant: 0:241 3 (const int) 0:240 false case 0:243 Branch: Break 0:250 Loop with condition tested first 0:250 Loop Condition 0:250 Compare Less Than ( temp bool) 0:250 direct index ( temp float) 0:250 'color' ( temp 4-component vector of float) 0:250 Constant: 0:250 2 (const int) 0:250 'd10' ( uniform float) 0:250 Loop Body 0:251 Sequence 0:251 Post-Increment ( temp float) 0:251 direct index ( temp float) 0:251 'color' ( temp 4-component vector of float) 0:251 Constant: 0:251 1 (const int) 0:252 Test condition and select ( temp void) 0:252 Condition 0:252 Compare Less Than ( temp bool) 0:252 direct index ( temp float) 0:252 'color' ( temp 4-component vector of float) 0:252 Constant: 0:252 1 (const int) 0:252 'd11' ( uniform float) 0:252 true case 0:253 Sequence 0:253 Post-Increment ( temp float) 0:253 direct index ( temp float) 0:253 'color' ( temp 4-component vector of float) 0:253 Constant: 0:253 2 (const int) 0:254 Test condition and select ( temp void) 0:254 Condition 0:254 Compare Less Than ( temp bool) 0:254 direct index ( temp float) 0:254 'color' ( temp 4-component vector of float) 0:254 Constant: 0:254 3 (const int) 0:254 'd12' ( uniform float) 0:254 true case 0:255 Post-Increment ( temp float) 0:255 direct index ( temp float) 0:255 'color' ( temp 4-component vector of float) 0:255 Constant: 0:255 3 (const int) 0:254 false case 0:257 Post-Increment ( temp float) 0:257 direct index ( temp float) 0:257 'color' ( temp 4-component vector of float) 0:257 Constant: 0:257 0 (const int) 0:258 Branch: Continue 0:261 Post-Increment ( temp 4-component vector of float) 0:261 'color' ( temp 4-component vector of float) 0:262 Branch: Break 0:266 Loop with condition tested first 0:266 Loop Condition 0:266 Compare Less Than ( temp bool) 0:266 direct index ( temp float) 0:266 'color' ( temp 4-component vector of float) 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 10.000000 0:266 Loop Body 0:267 Sequence 0:267 add second child into first child ( temp 4-component vector of float) 0:267 'color' ( temp 4-component vector of float) 0:267 'bigColor8' ( uniform 4-component vector of float) 0:269 Test condition and select ( temp void) 0:269 Condition 0:269 Compare Less Than ( temp bool) 0:269 direct index ( temp float) 0:269 'color' ( temp 4-component vector of float) 0:269 Constant: 0:269 2 (const int) 0:269 'd8' ( uniform float) 0:269 true case 0:270 Test condition and select ( temp void) 0:270 Condition 0:270 Compare Less Than ( temp bool) 0:270 direct index ( temp float) 0:270 'color' ( temp 4-component vector of float) 0:270 Constant: 0:270 3 (const int) 0:270 'd6' ( uniform float) 0:270 true case 0:271 Branch: Continue 0:273 add second child into first child ( temp float) 0:273 direct index ( temp float) 0:273 'color' ( temp 4-component vector of float) 0:273 Constant: 0:273 1 (const int) 0:273 direct index ( temp float) 0:273 'bigColor8' ( uniform 4-component vector of float) 0:273 Constant: 0:273 0 (const int) 0:276 Post-Increment ( temp 4-component vector of float) 0:276 'color' ( temp 4-component vector of float) 0:277 move second child to first child ( temp 4-component vector of float) 0:277 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:277 'color' ( temp 4-component vector of float) 0:280 Loop with condition tested first 0:280 Loop Condition 0:280 Compare Less Than ( temp bool) 0:280 direct index ( temp float) 0:280 'color' ( temp 4-component vector of float) 0:280 Constant: 0:280 0 (const int) 0:280 'd14' ( uniform float) 0:280 Loop Body 0:281 Sequence 0:281 Test condition and select ( temp void) 0:281 Condition 0:281 Compare Less Than ( temp bool) 0:281 direct index ( temp float) 0:281 'color' ( temp 4-component vector of float) 0:281 Constant: 0:281 1 (const int) 0:281 'd15' ( uniform float) 0:281 true case 0:282 Sequence 0:282 Branch: Return 0:281 false case 0:285 Post-Increment ( temp 4-component vector of float) 0:285 'color' ( temp 4-component vector of float) 0:288 Post-Increment ( temp 4-component vector of float) 0:288 'color' ( temp 4-component vector of float) 0:290 Loop with condition tested first 0:290 Loop Condition 0:290 Compare Less Than ( temp bool) 0:290 direct index ( temp float) 0:290 'color' ( temp 4-component vector of float) 0:290 Constant: 0:290 3 (const int) 0:290 'd16' ( uniform float) 0:290 Loop Body 0:291 Sequence 0:291 Post-Increment ( temp float) 0:291 direct index ( temp float) 0:291 'color' ( temp 4-component vector of float) 0:291 Constant: 0:291 3 (const int) 0:296 Loop with condition tested first 0:296 Loop Condition 0:296 logical-and ( temp bool) 0:296 Compare Less Than ( temp bool) 0:296 direct index ( temp float) 0:296 'color' ( temp 4-component vector of float) 0:296 Constant: 0:296 3 (const int) 0:296 'd2' ( uniform float) 0:296 Compare Less Than ( temp bool) 0:296 direct index ( temp float) 0:296 'color' ( temp 4-component vector of float) 0:296 Constant: 0:296 1 (const int) 0:296 'd3' ( uniform float) 0:296 Loop Body 0:297 Sequence 0:297 add second child into first child ( temp 4-component vector of float) 0:297 'color' ( temp 4-component vector of float) 0:297 'bigColor1_2' ( uniform 4-component vector of float) 0:298 Test condition and select ( temp void) 0:298 Condition 0:298 Compare Less Than ( temp bool) 0:298 direct index ( temp float) 0:298 'color' ( temp 4-component vector of float) 0:298 Constant: 0:298 2 (const int) 0:298 'd3' ( uniform float) 0:298 true case 0:299 Branch: Return 0:307 Loop with condition not tested first 0:307 Loop Condition 0:307 Compare Less Than ( temp bool) 0:307 direct index ( temp float) 0:307 'color' ( temp 4-component vector of float) 0:307 Constant: 0:307 0 (const int) 0:307 'd17' ( uniform float) 0:307 Loop Body 0:304 Sequence 0:304 Test condition and select ( temp void) 0:304 Condition 0:304 Compare Less Than ( temp bool) 0:304 direct index ( temp float) 0:304 'color' ( temp 4-component vector of float) 0:304 Constant: 0:304 1 (const int) 0:304 'd18' ( uniform float) 0:304 true case 0:305 Branch: Return 0:306 Post-Increment ( temp 4-component vector of float) 0:306 'color' ( temp 4-component vector of float) 0:310 Loop with condition tested first 0:310 Loop Condition 0:310 Compare Less Than ( temp bool) 0:310 direct index ( temp float) 0:310 'color' ( temp 4-component vector of float) 0:310 Constant: 0:310 1 (const int) 0:310 'd16' ( uniform float) 0:310 Loop Body 0:311 Sequence 0:311 Test condition and select ( temp void) 0:311 Condition 0:311 Compare Less Than ( temp bool) 0:311 direct index ( temp float) 0:311 'color' ( temp 4-component vector of float) 0:311 Constant: 0:311 3 (const int) 0:311 'd16' ( uniform float) 0:311 true case 0:312 Sequence 0:312 Branch: Kill 0:311 false case 0:314 Post-Increment ( temp 4-component vector of float) 0:314 'color' ( temp 4-component vector of float) 0:317 Post-Increment ( temp 4-component vector of float) 0:317 'color' ( temp 4-component vector of float) 0:319 move second child to first child ( temp 4-component vector of float) 0:319 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:319 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'bigColor1_1' ( uniform 4-component vector of float) 0:? 'bigColor1_2' ( uniform 4-component vector of float) 0:? 'bigColor1_3' ( uniform 4-component vector of float) 0:? 'bigColor2' ( uniform 4-component vector of float) 0:? 'bigColor3' ( uniform 4-component vector of float) 0:? 'bigColor4' ( uniform 4-component vector of float) 0:? 'bigColor5' ( uniform 4-component vector of float) 0:? 'bigColor6' ( uniform 4-component vector of float) 0:? 'bigColor7' ( uniform 4-component vector of float) 0:? 'bigColor8' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) 0:? 'd2' ( uniform float) 0:? 'd3' ( uniform float) 0:? 'd4' ( uniform float) 0:? 'd5' ( uniform float) 0:? 'd6' ( uniform float) 0:? 'd7' ( uniform float) 0:? 'd8' ( uniform float) 0:? 'd9' ( uniform float) 0:? 'd10' ( uniform float) 0:? 'd11' ( uniform float) 0:? 'd12' ( uniform float) 0:? 'd13' ( uniform float) 0:? 'd14' ( uniform float) 0:? 'd15' ( uniform float) 0:? 'd16' ( uniform float) 0:? 'd17' ( uniform float) 0:? 'd18' ( uniform float) 0:? 'd19' ( uniform float) 0:? 'd20' ( uniform float) 0:? 'd21' ( uniform float) 0:? 'd22' ( uniform float) 0:? 'd23' ( uniform float) 0:? 'd24' ( uniform float) 0:? 'd25' ( uniform float) 0:? 'd26' ( uniform float) 0:? 'd27' ( uniform float) 0:? 'd28' ( uniform float) 0:? 'd29' ( uniform float) 0:? 'd30' ( uniform float) 0:? 'd31' ( uniform float) 0:? 'd32' ( uniform float) 0:? 'd33' ( uniform float) 0:? 'd34' ( uniform float) 0:? 'Count' ( uniform int) Linked fragment stage: Shader version: 130 0:? Sequence 0:53 Function Definition: main( ( global void) 0:53 Function Parameters: 0:55 Sequence 0:55 Sequence 0:55 move second child to first child ( temp 4-component vector of float) 0:55 'color' ( temp 4-component vector of float) 0:55 'BaseColor' ( smooth in 4-component vector of float) 0:58 Loop with condition tested first 0:58 Loop Condition 0:58 Constant: 0:58 true (const bool) 0:58 Loop Body 0:59 Sequence 0:59 Test condition and select ( temp void) 0:59 Condition 0:59 Compare Less Than ( temp bool) 0:59 direct index ( temp float) 0:59 'color' ( temp 4-component vector of float) 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 0.330000 0:59 true case 0:60 Sequence 0:60 add second child into first child ( temp 4-component vector of float) 0:60 'color' ( temp 4-component vector of float) 0:60 Constant: 0:60 0.330000 0:60 0.330000 0:60 0.330000 0:60 0.330000 0:61 Branch: Break 0:63 Test condition and select ( temp void) 0:63 Condition 0:63 Compare Less Than ( temp bool) 0:63 direct index ( temp float) 0:63 'color' ( temp 4-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:63 Constant: 0:63 0.660000 0:63 true case 0:64 Sequence 0:64 add second child into first child ( temp 4-component vector of float) 0:64 'color' ( temp 4-component vector of float) 0:64 Constant: 0:64 0.660000 0:64 0.660000 0:64 0.660000 0:64 0.660000 0:65 Branch: Break 0:68 add second child into first child ( temp 4-component vector of float) 0:68 'color' ( temp 4-component vector of float) 0:68 Constant: 0:68 0.330000 0:68 0.330000 0:68 0.330000 0:68 0.330000 0:69 Branch: Break 0:73 Loop with condition tested first 0:73 Loop Condition 0:73 Compare Less Than ( temp bool) 0:73 direct index ( temp float) 0:73 'color' ( temp 4-component vector of float) 0:73 Constant: 0:73 0 (const int) 0:73 'd' ( uniform float) 0:73 Loop Body 0:74 Sequence 0:74 add second child into first child ( temp 4-component vector of float) 0:74 'color' ( temp 4-component vector of float) 0:74 'bigColor' ( uniform 4-component vector of float) 0:78 Loop with condition tested first 0:78 Loop Condition 0:78 Compare Less Than ( temp bool) 0:78 direct index ( temp float) 0:78 'color' ( temp 4-component vector of float) 0:78 Constant: 0:78 2 (const int) 0:78 'd' ( uniform float) 0:78 Loop Body 0:79 Sequence 0:79 add second child into first child ( temp 4-component vector of float) 0:79 'color' ( temp 4-component vector of float) 0:79 'bigColor1_1' ( uniform 4-component vector of float) 0:80 Test condition and select ( temp void) 0:80 Condition 0:80 Compare Less Than ( temp bool) 0:80 direct index ( temp float) 0:80 'color' ( temp 4-component vector of float) 0:80 Constant: 0:80 3 (const int) 0:80 'd' ( uniform float) 0:80 true case 0:81 Branch: Continue 0:83 add second child into first child ( temp 4-component vector of float) 0:83 'color' ( temp 4-component vector of float) 0:83 'bigColor1_1' ( uniform 4-component vector of float) 0:87 Loop with condition tested first 0:87 Loop Condition 0:87 Compare Less Than ( temp bool) 0:87 direct index ( temp float) 0:87 'color' ( temp 4-component vector of float) 0:87 Constant: 0:87 0 (const int) 0:87 Constant: 0:87 42.000000 0:87 Loop Body 0:88 Sequence 0:88 Pre-Increment ( temp 4-component vector of float) 0:88 'color' ( temp 4-component vector of float) 0:92 Loop with condition tested first 0:92 Loop Condition 0:92 logical-and ( temp bool) 0:92 Compare Less Than ( temp bool) 0:92 direct index ( temp float) 0:92 'color' ( temp 4-component vector of float) 0:92 Constant: 0:92 3 (const int) 0:92 'd2' ( uniform float) 0:92 Compare Less Than ( temp bool) 0:92 direct index ( temp float) 0:92 'color' ( temp 4-component vector of float) 0:92 Constant: 0:92 1 (const int) 0:92 'd3' ( uniform float) 0:92 Loop Body 0:93 Sequence 0:93 add second child into first child ( temp 4-component vector of float) 0:93 'color' ( temp 4-component vector of float) 0:93 'bigColor1_2' ( uniform 4-component vector of float) 0:97 Loop with condition tested first 0:97 Loop Condition 0:97 Compare Less Than ( temp bool) 0:97 direct index ( temp float) 0:97 'color' ( temp 4-component vector of float) 0:97 Constant: 0:97 2 (const int) 0:97 'd3' ( uniform float) 0:97 Loop Body 0:98 Sequence 0:98 add second child into first child ( temp 4-component vector of float) 0:98 'color' ( temp 4-component vector of float) 0:98 'bigColor1_3' ( uniform 4-component vector of float) 0:99 Test condition and select ( temp void) 0:99 Condition 0:99 Compare Less Than ( temp bool) 0:99 direct index ( temp float) 0:99 'color' ( temp 4-component vector of float) 0:99 Constant: 0:99 1 (const int) 0:99 'd4' ( uniform float) 0:99 true case 0:100 Branch: Break 0:101 add second child into first child ( temp 4-component vector of float) 0:101 'color' ( temp 4-component vector of float) 0:101 'bigColor1_3' ( uniform 4-component vector of float) 0:105 Sequence 0:105 Sequence 0:105 move second child to first child ( temp int) 0:105 'i' ( temp int) 0:105 Constant: 0:105 0 (const int) 0:105 Loop with condition tested first 0:105 Loop Condition 0:105 Compare Less Than ( temp bool) 0:105 'i' ( temp int) 0:105 'Count' ( uniform int) 0:105 Loop Body 0:106 Sequence 0:106 add second child into first child ( temp 4-component vector of float) 0:106 'color' ( temp 4-component vector of float) 0:106 'bigColor2' ( uniform 4-component vector of float) 0:105 Loop Terminal Expression 0:105 Pre-Increment ( temp int) 0:105 'i' ( temp int) 0:112 Loop with condition not tested first 0:112 Loop Condition 0:112 Compare Less Than ( temp bool) 0:112 direct index ( temp float) 0:112 'color' ( temp 4-component vector of float) 0:112 Constant: 0:112 0 (const int) 0:112 'd2' ( uniform float) 0:112 Loop Body 0:111 Sequence 0:111 add second child into first child ( temp 4-component vector of float) 0:111 'color' ( temp 4-component vector of float) 0:111 'bigColor3' ( uniform 4-component vector of float) 0:115 Sequence 0:115 Sequence 0:115 move second child to first child ( temp int) 0:115 'i' ( temp int) 0:115 Constant: 0:115 0 (const int) 0:115 Loop with condition tested first 0:115 Loop Condition 0:115 Compare Less Than ( temp bool) 0:115 'i' ( temp int) 0:115 Constant: 0:115 42 (const int) 0:115 Loop Body 0:116 Sequence 0:116 add second child into first child ( temp float) 0:116 direct index ( temp float) 0:116 'color' ( temp 4-component vector of float) 0:116 Constant: 0:116 2 (const int) 0:116 'd3' ( uniform float) 0:115 Loop Terminal Expression 0:115 Pre-Increment ( temp int) 0:115 'i' ( temp int) 0:120 Sequence 0:120 Sequence 0:120 move second child to first child ( temp int) 0:120 'i' ( temp int) 0:120 Constant: 0:120 0 (const int) 0:120 Loop with condition tested first 0:120 Loop Condition 0:120 Compare Less Than ( temp bool) 0:120 'i' ( temp int) 0:120 Constant: 0:120 100 (const int) 0:120 Loop Body 0:121 Sequence 0:121 Test condition and select ( temp void) 0:121 Condition 0:121 Compare Less Than ( temp bool) 0:121 direct index ( temp float) 0:121 'color' ( temp 4-component vector of float) 0:121 Constant: 0:121 2 (const int) 0:121 Constant: 0:121 20.000000 0:121 true case 0:122 Post-Increment ( temp float) 0:122 direct index ( temp float) 0:122 'color' ( temp 4-component vector of float) 0:122 Constant: 0:122 0 (const int) 0:121 false case 0:124 Post-Increment ( temp float) 0:124 direct index ( temp float) 0:124 'color' ( temp 4-component vector of float) 0:124 Constant: 0:124 1 (const int) 0:125 Test condition and select ( temp void) 0:125 Condition 0:125 Compare Less Than ( temp bool) 0:125 direct index ( temp float) 0:125 'color' ( temp 4-component vector of float) 0:125 Constant: 0:125 3 (const int) 0:125 Constant: 0:125 20.000000 0:125 true case 0:126 Test condition and select ( temp void) 0:126 Condition 0:126 Compare Greater Than ( temp bool) 0:126 direct index ( temp float) 0:126 'color' ( temp 4-component vector of float) 0:126 Constant: 0:126 2 (const int) 0:126 direct index ( temp float) 0:126 'color' ( temp 4-component vector of float) 0:126 Constant: 0:126 1 (const int) 0:126 true case 0:127 Constant: 0:127 0 (const int) 0:120 Loop Terminal Expression 0:120 Pre-Increment ( temp int) 0:120 'i' ( temp int) 0:131 Sequence 0:131 Sequence 0:131 move second child to first child ( temp int) 0:131 'i' ( temp int) 0:131 Constant: 0:131 0 (const int) 0:131 Loop with condition tested first 0:131 Loop Condition 0:131 Compare Less Than ( temp bool) 0:131 'i' ( temp int) 0:131 Constant: 0:131 120 (const int) 0:131 Loop Body 0:132 Sequence 0:132 Test condition and select ( temp void) 0:132 Condition 0:132 Compare Less Than ( temp bool) 0:132 direct index ( temp float) 0:132 'color' ( temp 4-component vector of float) 0:132 Constant: 0:132 2 (const int) 0:132 Constant: 0:132 20.000000 0:132 true case 0:133 Post-Increment ( temp float) 0:133 direct index ( temp float) 0:133 'color' ( temp 4-component vector of float) 0:133 Constant: 0:133 0 (const int) 0:132 false case 0:135 Post-Increment ( temp float) 0:135 direct index ( temp float) 0:135 'color' ( temp 4-component vector of float) 0:135 Constant: 0:135 1 (const int) 0:131 Loop Terminal Expression 0:131 Pre-Increment ( temp int) 0:131 'i' ( temp int) 0:139 Sequence 0:139 Sequence 0:139 move second child to first child ( temp int) 0:139 'i' ( temp int) 0:139 Constant: 0:139 0 (const int) 0:139 Loop with condition tested first 0:139 Loop Condition 0:139 Compare Less Than ( temp bool) 0:139 'i' ( temp int) 0:139 Constant: 0:139 42 (const int) 0:139 Loop Body 0:140 Sequence 0:140 add second child into first child ( temp float) 0:140 direct index ( temp float) 0:140 'color' ( temp 4-component vector of float) 0:140 Constant: 0:140 2 (const int) 0:140 'd3' ( uniform float) 0:141 Test condition and select ( temp void) 0:141 Condition 0:141 Compare Less Than ( temp bool) 0:141 direct index ( temp float) 0:141 'color' ( temp 4-component vector of float) 0:141 Constant: 0:141 0 (const int) 0:141 'd4' ( uniform float) 0:141 true case 0:142 Branch: Continue 0:143 Pre-Increment ( temp float) 0:143 direct index ( temp float) 0:143 'color' ( temp 4-component vector of float) 0:143 Constant: 0:143 3 (const int) 0:139 Loop Terminal Expression 0:139 Pre-Increment ( temp int) 0:139 'i' ( temp int) 0:147 Sequence 0:147 Sequence 0:147 move second child to first child ( temp int) 0:147 'i' ( temp int) 0:147 Constant: 0:147 0 (const int) 0:147 Loop with condition tested first 0:147 Loop Condition 0:147 Compare Less Than ( temp bool) 0:147 'i' ( temp int) 0:147 Constant: 0:147 42 (const int) 0:147 Loop Body 0:148 Sequence 0:148 add second child into first child ( temp float) 0:148 direct index ( temp float) 0:148 'color' ( temp 4-component vector of float) 0:148 Constant: 0:148 2 (const int) 0:148 'd3' ( uniform float) 0:149 Test condition and select ( temp void) 0:149 Condition 0:149 Compare Less Than ( temp bool) 0:149 direct index ( temp float) 0:149 'color' ( temp 4-component vector of float) 0:149 Constant: 0:149 0 (const int) 0:149 'd4' ( uniform float) 0:149 true case 0:150 Branch: Break 0:151 Pre-Increment ( temp float) 0:151 direct index ( temp float) 0:151 'color' ( temp 4-component vector of float) 0:151 Constant: 0:151 3 (const int) 0:147 Loop Terminal Expression 0:147 Pre-Increment ( temp int) 0:147 'i' ( temp int) 0:163 Loop with condition not tested first 0:163 Loop Condition 0:163 Compare Less Than ( temp bool) 0:163 direct index ( temp float) 0:163 'color' ( temp 4-component vector of float) 0:163 Constant: 0:163 2 (const int) 0:163 'd4' ( uniform float) 0:163 Loop Body 0:156 Sequence 0:156 add second child into first child ( temp 4-component vector of float) 0:156 'color' ( temp 4-component vector of float) 0:156 'bigColor4' ( uniform 4-component vector of float) 0:157 Test condition and select ( temp void) 0:157 Condition 0:157 Compare Less Than ( temp bool) 0:157 direct index ( temp float) 0:157 'color' ( temp 4-component vector of float) 0:157 Constant: 0:157 0 (const int) 0:157 'd4' ( uniform float) 0:157 true case 0:158 Branch: Continue 0:159 Test condition and select ( temp void) 0:159 Condition 0:159 Compare Less Than ( temp bool) 0:159 direct index ( temp float) 0:159 'color' ( temp 4-component vector of float) 0:159 Constant: 0:159 1 (const int) 0:159 'd4' ( uniform float) 0:159 true case 0:160 add second child into first child ( temp float) 0:160 direct index ( temp float) 0:160 'color' ( temp 4-component vector of float) 0:160 Constant: 0:160 1 (const int) 0:160 'd4' ( uniform float) 0:159 false case 0:162 add second child into first child ( temp float) 0:162 direct index ( temp float) 0:162 'color' ( temp 4-component vector of float) 0:162 Constant: 0:162 0 (const int) 0:162 'd4' ( uniform float) 0:170 Loop with condition not tested first 0:170 Loop Condition 0:170 Compare Less Than ( temp bool) 0:170 direct index ( temp float) 0:170 'color' ( temp 4-component vector of float) 0:170 Constant: 0:170 0 (const int) 0:170 'd5' ( uniform float) 0:170 Loop Body 0:167 Sequence 0:167 add second child into first child ( temp 4-component vector of float) 0:167 'color' ( temp 4-component vector of float) 0:167 'bigColor5' ( uniform 4-component vector of float) 0:168 Test condition and select ( temp void) 0:168 Condition 0:168 Compare Less Than ( temp bool) 0:168 direct index ( temp float) 0:168 'color' ( temp 4-component vector of float) 0:168 Constant: 0:168 1 (const int) 0:168 'd5' ( uniform float) 0:168 true case 0:169 add second child into first child ( temp float) 0:169 direct index ( temp float) 0:169 'color' ( temp 4-component vector of float) 0:169 Constant: 0:169 1 (const int) 0:169 'd5' ( uniform float) 0:173 Test condition and select ( temp void) 0:173 Condition 0:173 Compare Less Than ( temp bool) 0:173 direct index ( temp float) 0:173 'color' ( temp 4-component vector of float) 0:173 Constant: 0:173 0 (const int) 0:173 'd6' ( uniform float) 0:173 true case 0:174 Sequence 0:174 Loop with condition tested first 0:174 Loop Condition 0:174 Compare Less Than ( temp bool) 0:174 direct index ( temp float) 0:174 'color' ( temp 4-component vector of float) 0:174 Constant: 0:174 1 (const int) 0:174 'd6' ( uniform float) 0:174 Loop Body 0:175 add second child into first child ( temp 4-component vector of float) 0:175 'color' ( temp 4-component vector of float) 0:175 'bigColor6' ( uniform 4-component vector of float) 0:173 false case 0:177 Sequence 0:177 Loop with condition tested first 0:177 Loop Condition 0:177 Compare Less Than ( temp bool) 0:177 direct index ( temp float) 0:177 'color' ( temp 4-component vector of float) 0:177 Constant: 0:177 2 (const int) 0:177 'd6' ( uniform float) 0:177 Loop Body 0:178 add second child into first child ( temp float) 0:178 direct index ( temp float) 0:178 'color' ( temp 4-component vector of float) 0:178 Constant: 0:178 2 (const int) 0:178 direct index ( temp float) 0:178 'bigColor6' ( uniform 4-component vector of float) 0:178 Constant: 0:178 2 (const int) 0:182 Test condition and select ( temp void) 0:182 Condition 0:182 Compare Less Than ( temp bool) 0:182 direct index ( temp float) 0:182 'color' ( temp 4-component vector of float) 0:182 Constant: 0:182 0 (const int) 0:182 'd6' ( uniform float) 0:182 true case 0:183 Sequence 0:183 Loop with condition tested first 0:183 Loop Condition 0:183 Compare Less Than ( temp bool) 0:183 direct index ( temp float) 0:183 'color' ( temp 4-component vector of float) 0:183 Constant: 0:183 1 (const int) 0:183 'd6' ( uniform float) 0:183 Loop Body 0:184 Sequence 0:184 add second child into first child ( temp 4-component vector of float) 0:184 'color' ( temp 4-component vector of float) 0:184 'bigColor6' ( uniform 4-component vector of float) 0:185 Test condition and select ( temp void) 0:185 Condition 0:185 Compare Less Than ( temp bool) 0:185 'd7' ( uniform float) 0:185 Constant: 0:185 1.000000 0:185 true case 0:186 Branch: Break 0:182 false case 0:190 Sequence 0:190 Loop with condition tested first 0:190 Loop Condition 0:190 Compare Less Than ( temp bool) 0:190 direct index ( temp float) 0:190 'color' ( temp 4-component vector of float) 0:190 Constant: 0:190 2 (const int) 0:190 'd6' ( uniform float) 0:190 Loop Body 0:191 add second child into first child ( temp float) 0:191 direct index ( temp float) 0:191 'color' ( temp 4-component vector of float) 0:191 Constant: 0:191 2 (const int) 0:191 direct index ( temp float) 0:191 'bigColor6' ( uniform 4-component vector of float) 0:191 Constant: 0:191 2 (const int) 0:209 Loop with condition not tested first 0:209 Loop Condition 0:209 Constant: 0:209 true (const bool) 0:209 Loop Body 0:197 Sequence 0:197 Test condition and select ( temp void) 0:197 Condition 0:197 Compare Less Than ( temp bool) 0:197 'd7' ( uniform float) 0:197 Constant: 0:197 0.000000 0:197 true case 0:198 Branch: Break 0:200 add second child into first child ( temp 4-component vector of float) 0:200 'color' ( temp 4-component vector of float) 0:200 'bigColor7' ( uniform 4-component vector of float) 0:202 Test condition and select ( temp void) 0:202 Condition 0:202 Compare Less Than ( temp bool) 0:202 'd7' ( uniform float) 0:202 Constant: 0:202 1.000000 0:202 true case 0:203 Sequence 0:203 Post-Increment ( temp float) 0:203 direct index ( temp float) 0:203 'color' ( temp 4-component vector of float) 0:203 Constant: 0:203 2 (const int) 0:204 Branch: Break 0:207 add second child into first child ( temp 4-component vector of float) 0:207 'color' ( temp 4-component vector of float) 0:207 'BaseColor' ( smooth in 4-component vector of float) 0:234 Loop with condition not tested first 0:234 Loop Condition 0:234 Compare Less Than ( temp bool) 0:234 direct index ( temp float) 0:234 'color' ( temp 4-component vector of float) 0:234 Constant: 0:234 2 (const int) 0:234 'd8' ( uniform float) 0:234 Loop Body 0:217 Sequence 0:217 Test condition and select ( temp void) 0:217 Condition 0:217 Compare Less Than ( temp bool) 0:217 'd8' ( uniform float) 0:217 Constant: 0:217 0.000000 0:217 true case 0:218 Branch: Break 0:220 add second child into first child ( temp 4-component vector of float) 0:220 'color' ( temp 4-component vector of float) 0:220 'bigColor7' ( uniform 4-component vector of float) 0:222 Test condition and select ( temp void) 0:222 Condition 0:222 Compare Less Than ( temp bool) 0:222 'd8' ( uniform float) 0:222 Constant: 0:222 1.000000 0:222 true case 0:223 Sequence 0:223 Post-Increment ( temp float) 0:223 direct index ( temp float) 0:223 'color' ( temp 4-component vector of float) 0:223 Constant: 0:223 2 (const int) 0:224 Test condition and select ( temp void) 0:224 Condition 0:224 Compare Less Than ( temp bool) 0:224 'd8' ( uniform float) 0:224 Constant: 0:224 2.000000 0:224 true case 0:225 Sequence 0:225 Post-Increment ( temp float) 0:225 direct index ( temp float) 0:225 'color' ( temp 4-component vector of float) 0:225 Constant: 0:225 1 (const int) 0:224 false case 0:227 Sequence 0:227 Post-Increment ( temp float) 0:227 direct index ( temp float) 0:227 'color' ( temp 4-component vector of float) 0:227 Constant: 0:227 0 (const int) 0:229 Branch: Break 0:232 add second child into first child ( temp 4-component vector of float) 0:232 'color' ( temp 4-component vector of float) 0:232 'BaseColor' ( smooth in 4-component vector of float) 0:237 Loop with condition tested first 0:237 Loop Condition 0:237 Compare Less Than ( temp bool) 0:237 direct index ( temp float) 0:237 'color' ( temp 4-component vector of float) 0:237 Constant: 0:237 3 (const int) 0:237 'd9' ( uniform float) 0:237 Loop Body 0:238 Sequence 0:238 Test condition and select ( temp void) 0:238 Condition 0:238 Compare Greater Than ( temp bool) 0:238 'd9' ( uniform float) 0:238 'd8' ( uniform float) 0:238 true case 0:239 Sequence 0:239 Test condition and select ( temp void) 0:239 Condition 0:239 Compare Less Than or Equal ( temp bool) 0:239 direct index ( temp float) 0:239 'color' ( temp 4-component vector of float) 0:239 Constant: 0:239 0 (const int) 0:239 'd7' ( uniform float) 0:239 true case 0:240 Sequence 0:240 Test condition and select ( temp void) 0:240 Condition 0:240 Compare Equal ( temp bool) 0:240 direct index ( temp float) 0:240 'color' ( temp 4-component vector of float) 0:240 Constant: 0:240 2 (const int) 0:240 Constant: 0:240 5.000000 0:240 true case 0:241 Post-Increment ( temp float) 0:241 direct index ( temp float) 0:241 'color' ( temp 4-component vector of float) 0:241 Constant: 0:241 3 (const int) 0:240 false case 0:243 Branch: Break 0:250 Loop with condition tested first 0:250 Loop Condition 0:250 Compare Less Than ( temp bool) 0:250 direct index ( temp float) 0:250 'color' ( temp 4-component vector of float) 0:250 Constant: 0:250 2 (const int) 0:250 'd10' ( uniform float) 0:250 Loop Body 0:251 Sequence 0:251 Post-Increment ( temp float) 0:251 direct index ( temp float) 0:251 'color' ( temp 4-component vector of float) 0:251 Constant: 0:251 1 (const int) 0:252 Test condition and select ( temp void) 0:252 Condition 0:252 Compare Less Than ( temp bool) 0:252 direct index ( temp float) 0:252 'color' ( temp 4-component vector of float) 0:252 Constant: 0:252 1 (const int) 0:252 'd11' ( uniform float) 0:252 true case 0:253 Sequence 0:253 Post-Increment ( temp float) 0:253 direct index ( temp float) 0:253 'color' ( temp 4-component vector of float) 0:253 Constant: 0:253 2 (const int) 0:254 Test condition and select ( temp void) 0:254 Condition 0:254 Compare Less Than ( temp bool) 0:254 direct index ( temp float) 0:254 'color' ( temp 4-component vector of float) 0:254 Constant: 0:254 3 (const int) 0:254 'd12' ( uniform float) 0:254 true case 0:255 Post-Increment ( temp float) 0:255 direct index ( temp float) 0:255 'color' ( temp 4-component vector of float) 0:255 Constant: 0:255 3 (const int) 0:254 false case 0:257 Post-Increment ( temp float) 0:257 direct index ( temp float) 0:257 'color' ( temp 4-component vector of float) 0:257 Constant: 0:257 0 (const int) 0:258 Branch: Continue 0:261 Post-Increment ( temp 4-component vector of float) 0:261 'color' ( temp 4-component vector of float) 0:262 Branch: Break 0:266 Loop with condition tested first 0:266 Loop Condition 0:266 Compare Less Than ( temp bool) 0:266 direct index ( temp float) 0:266 'color' ( temp 4-component vector of float) 0:266 Constant: 0:266 0 (const int) 0:266 Constant: 0:266 10.000000 0:266 Loop Body 0:267 Sequence 0:267 add second child into first child ( temp 4-component vector of float) 0:267 'color' ( temp 4-component vector of float) 0:267 'bigColor8' ( uniform 4-component vector of float) 0:269 Test condition and select ( temp void) 0:269 Condition 0:269 Compare Less Than ( temp bool) 0:269 direct index ( temp float) 0:269 'color' ( temp 4-component vector of float) 0:269 Constant: 0:269 2 (const int) 0:269 'd8' ( uniform float) 0:269 true case 0:270 Test condition and select ( temp void) 0:270 Condition 0:270 Compare Less Than ( temp bool) 0:270 direct index ( temp float) 0:270 'color' ( temp 4-component vector of float) 0:270 Constant: 0:270 3 (const int) 0:270 'd6' ( uniform float) 0:270 true case 0:271 Branch: Continue 0:273 add second child into first child ( temp float) 0:273 direct index ( temp float) 0:273 'color' ( temp 4-component vector of float) 0:273 Constant: 0:273 1 (const int) 0:273 direct index ( temp float) 0:273 'bigColor8' ( uniform 4-component vector of float) 0:273 Constant: 0:273 0 (const int) 0:276 Post-Increment ( temp 4-component vector of float) 0:276 'color' ( temp 4-component vector of float) 0:277 move second child to first child ( temp 4-component vector of float) 0:277 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:277 'color' ( temp 4-component vector of float) 0:280 Loop with condition tested first 0:280 Loop Condition 0:280 Compare Less Than ( temp bool) 0:280 direct index ( temp float) 0:280 'color' ( temp 4-component vector of float) 0:280 Constant: 0:280 0 (const int) 0:280 'd14' ( uniform float) 0:280 Loop Body 0:281 Sequence 0:281 Test condition and select ( temp void) 0:281 Condition 0:281 Compare Less Than ( temp bool) 0:281 direct index ( temp float) 0:281 'color' ( temp 4-component vector of float) 0:281 Constant: 0:281 1 (const int) 0:281 'd15' ( uniform float) 0:281 true case 0:282 Sequence 0:282 Branch: Return 0:281 false case 0:285 Post-Increment ( temp 4-component vector of float) 0:285 'color' ( temp 4-component vector of float) 0:288 Post-Increment ( temp 4-component vector of float) 0:288 'color' ( temp 4-component vector of float) 0:290 Loop with condition tested first 0:290 Loop Condition 0:290 Compare Less Than ( temp bool) 0:290 direct index ( temp float) 0:290 'color' ( temp 4-component vector of float) 0:290 Constant: 0:290 3 (const int) 0:290 'd16' ( uniform float) 0:290 Loop Body 0:291 Sequence 0:291 Post-Increment ( temp float) 0:291 direct index ( temp float) 0:291 'color' ( temp 4-component vector of float) 0:291 Constant: 0:291 3 (const int) 0:296 Loop with condition tested first 0:296 Loop Condition 0:296 logical-and ( temp bool) 0:296 Compare Less Than ( temp bool) 0:296 direct index ( temp float) 0:296 'color' ( temp 4-component vector of float) 0:296 Constant: 0:296 3 (const int) 0:296 'd2' ( uniform float) 0:296 Compare Less Than ( temp bool) 0:296 direct index ( temp float) 0:296 'color' ( temp 4-component vector of float) 0:296 Constant: 0:296 1 (const int) 0:296 'd3' ( uniform float) 0:296 Loop Body 0:297 Sequence 0:297 add second child into first child ( temp 4-component vector of float) 0:297 'color' ( temp 4-component vector of float) 0:297 'bigColor1_2' ( uniform 4-component vector of float) 0:298 Test condition and select ( temp void) 0:298 Condition 0:298 Compare Less Than ( temp bool) 0:298 direct index ( temp float) 0:298 'color' ( temp 4-component vector of float) 0:298 Constant: 0:298 2 (const int) 0:298 'd3' ( uniform float) 0:298 true case 0:299 Branch: Return 0:307 Loop with condition not tested first 0:307 Loop Condition 0:307 Compare Less Than ( temp bool) 0:307 direct index ( temp float) 0:307 'color' ( temp 4-component vector of float) 0:307 Constant: 0:307 0 (const int) 0:307 'd17' ( uniform float) 0:307 Loop Body 0:304 Sequence 0:304 Test condition and select ( temp void) 0:304 Condition 0:304 Compare Less Than ( temp bool) 0:304 direct index ( temp float) 0:304 'color' ( temp 4-component vector of float) 0:304 Constant: 0:304 1 (const int) 0:304 'd18' ( uniform float) 0:304 true case 0:305 Branch: Return 0:306 Post-Increment ( temp 4-component vector of float) 0:306 'color' ( temp 4-component vector of float) 0:310 Loop with condition tested first 0:310 Loop Condition 0:310 Compare Less Than ( temp bool) 0:310 direct index ( temp float) 0:310 'color' ( temp 4-component vector of float) 0:310 Constant: 0:310 1 (const int) 0:310 'd16' ( uniform float) 0:310 Loop Body 0:311 Sequence 0:311 Test condition and select ( temp void) 0:311 Condition 0:311 Compare Less Than ( temp bool) 0:311 direct index ( temp float) 0:311 'color' ( temp 4-component vector of float) 0:311 Constant: 0:311 3 (const int) 0:311 'd16' ( uniform float) 0:311 true case 0:312 Sequence 0:312 Branch: Kill 0:311 false case 0:314 Post-Increment ( temp 4-component vector of float) 0:314 'color' ( temp 4-component vector of float) 0:317 Post-Increment ( temp 4-component vector of float) 0:317 'color' ( temp 4-component vector of float) 0:319 move second child to first child ( temp 4-component vector of float) 0:319 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:319 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'bigColor1_1' ( uniform 4-component vector of float) 0:? 'bigColor1_2' ( uniform 4-component vector of float) 0:? 'bigColor1_3' ( uniform 4-component vector of float) 0:? 'bigColor2' ( uniform 4-component vector of float) 0:? 'bigColor3' ( uniform 4-component vector of float) 0:? 'bigColor4' ( uniform 4-component vector of float) 0:? 'bigColor5' ( uniform 4-component vector of float) 0:? 'bigColor6' ( uniform 4-component vector of float) 0:? 'bigColor7' ( uniform 4-component vector of float) 0:? 'bigColor8' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) 0:? 'd2' ( uniform float) 0:? 'd3' ( uniform float) 0:? 'd4' ( uniform float) 0:? 'd5' ( uniform float) 0:? 'd6' ( uniform float) 0:? 'd7' ( uniform float) 0:? 'd8' ( uniform float) 0:? 'd9' ( uniform float) 0:? 'd10' ( uniform float) 0:? 'd11' ( uniform float) 0:? 'd12' ( uniform float) 0:? 'd13' ( uniform float) 0:? 'd14' ( uniform float) 0:? 'd15' ( uniform float) 0:? 'd16' ( uniform float) 0:? 'd17' ( uniform float) 0:? 'd18' ( uniform float) 0:? 'd19' ( uniform float) 0:? 'd20' ( uniform float) 0:? 'd21' ( uniform float) 0:? 'd22' ( uniform float) 0:? 'd23' ( uniform float) 0:? 'd24' ( uniform float) 0:? 'd25' ( uniform float) 0:? 'd26' ( uniform float) 0:? 'd27' ( uniform float) 0:? 'd28' ( uniform float) 0:? 'd29' ( uniform float) 0:? 'd30' ( uniform float) 0:? 'd31' ( uniform float) 0:? 'd32' ( uniform float) 0:? 'd33' ( uniform float) 0:? 'd34' ( uniform float) 0:? 'Count' ( uniform int) glslang-16.0.0/Test/baseResults/loopsArtificial.frag.out000066400000000000000000000434111506534232700232450ustar00rootroot00000000000000loopsArtificial.frag WARNING: 0:14: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:53 Function Definition: main( ( global void) 0:53 Function Parameters: 0:55 Sequence 0:55 Sequence 0:55 move second child to first child ( temp 4-component vector of float) 0:55 'color' ( temp 4-component vector of float) 0:55 'BaseColor' ( smooth in 4-component vector of float) 0:71 Loop with condition not tested first 0:71 Loop Condition 0:71 Compare Less Than ( temp bool) 0:71 direct index ( temp float) 0:71 'color' ( temp 4-component vector of float) 0:71 Constant: 0:71 2 (const int) 0:71 'd4' ( uniform float) 0:71 Loop Body 0:59 Sequence 0:59 add second child into first child ( temp 4-component vector of float) 0:59 'color' ( temp 4-component vector of float) 0:59 'bigColor4' ( uniform 4-component vector of float) 0:60 Test condition and select ( temp void) 0:60 Condition 0:60 Compare Less Than ( temp bool) 0:60 direct index ( temp float) 0:60 'color' ( temp 4-component vector of float) 0:60 Constant: 0:60 0 (const int) 0:60 'd4' ( uniform float) 0:60 true case 0:61 Sequence 0:61 add second child into first child ( temp float) 0:61 direct index ( temp float) 0:61 'color' ( temp 4-component vector of float) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 2.000000 0:62 Test condition and select ( temp void) 0:62 Condition 0:62 Compare Less Than ( temp bool) 0:62 direct index ( temp float) 0:62 'color' ( temp 4-component vector of float) 0:62 Constant: 0:62 2 (const int) 0:62 'd4' ( uniform float) 0:62 true case 0:63 Sequence 0:63 Post-Increment ( temp float) 0:63 direct index ( temp float) 0:63 'color' ( temp 4-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:64 Branch: Continue 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Compare Less Than ( temp bool) 0:67 direct index ( temp float) 0:67 'color' ( temp 4-component vector of float) 0:67 Constant: 0:67 1 (const int) 0:67 'd4' ( uniform float) 0:67 true case 0:68 add second child into first child ( temp float) 0:68 direct index ( temp float) 0:68 'color' ( temp 4-component vector of float) 0:68 Constant: 0:68 1 (const int) 0:68 'd4' ( uniform float) 0:67 false case 0:70 add second child into first child ( temp float) 0:70 direct index ( temp float) 0:70 'color' ( temp 4-component vector of float) 0:70 Constant: 0:70 0 (const int) 0:70 'd4' ( uniform float) 0:74 Loop with condition tested first 0:74 Loop Condition 0:74 Compare Less Than ( temp bool) 0:74 direct index ( temp float) 0:74 'color' ( temp 4-component vector of float) 0:74 Constant: 0:74 3 (const int) 0:74 'd13' ( uniform float) 0:74 Loop Body 0:75 Sequence 0:75 Test condition and select ( temp void) 0:75 Condition 0:75 Compare Less Than ( temp bool) 0:75 direct index ( temp float) 0:75 'color' ( temp 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 'd13' ( uniform float) 0:75 true case 0:76 Post-Increment ( temp 4-component vector of float) 0:76 'color' ( temp 4-component vector of float) 0:75 false case 0:78 Post-Decrement ( temp 4-component vector of float) 0:78 'color' ( temp 4-component vector of float) 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'color' ( temp 4-component vector of float) 0:80 'bigColor4' ( uniform 4-component vector of float) 0:81 Test condition and select ( temp void) 0:81 Condition 0:81 Compare Less Than ( temp bool) 0:81 direct index ( temp float) 0:81 'color' ( temp 4-component vector of float) 0:81 Constant: 0:81 0 (const int) 0:81 'd4' ( uniform float) 0:81 true case 0:82 Sequence 0:82 add second child into first child ( temp float) 0:82 direct index ( temp float) 0:82 'color' ( temp 4-component vector of float) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 2.000000 0:83 Test condition and select ( temp void) 0:83 Condition 0:83 Compare Less Than ( temp bool) 0:83 direct index ( temp float) 0:83 'color' ( temp 4-component vector of float) 0:83 Constant: 0:83 2 (const int) 0:83 'd4' ( uniform float) 0:83 true case 0:84 Sequence 0:84 Post-Increment ( temp float) 0:84 direct index ( temp float) 0:84 'color' ( temp 4-component vector of float) 0:84 Constant: 0:84 0 (const int) 0:85 Branch: Continue 0:88 Test condition and select ( temp void) 0:88 Condition 0:88 Compare Less Than ( temp bool) 0:88 direct index ( temp float) 0:88 'color' ( temp 4-component vector of float) 0:88 Constant: 0:88 1 (const int) 0:88 'd4' ( uniform float) 0:88 true case 0:89 add second child into first child ( temp float) 0:89 direct index ( temp float) 0:89 'color' ( temp 4-component vector of float) 0:89 Constant: 0:89 1 (const int) 0:89 'd4' ( uniform float) 0:88 false case 0:91 add second child into first child ( temp float) 0:91 direct index ( temp float) 0:91 'color' ( temp 4-component vector of float) 0:91 Constant: 0:91 0 (const int) 0:91 'd4' ( uniform float) 0:94 Post-Increment ( temp 4-component vector of float) 0:94 'color' ( temp 4-component vector of float) 0:95 move second child to first child ( temp 4-component vector of float) 0:95 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:95 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'bigColor1_1' ( uniform 4-component vector of float) 0:? 'bigColor1_2' ( uniform 4-component vector of float) 0:? 'bigColor1_3' ( uniform 4-component vector of float) 0:? 'bigColor2' ( uniform 4-component vector of float) 0:? 'bigColor3' ( uniform 4-component vector of float) 0:? 'bigColor4' ( uniform 4-component vector of float) 0:? 'bigColor5' ( uniform 4-component vector of float) 0:? 'bigColor6' ( uniform 4-component vector of float) 0:? 'bigColor7' ( uniform 4-component vector of float) 0:? 'bigColor8' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) 0:? 'd2' ( uniform float) 0:? 'd3' ( uniform float) 0:? 'd4' ( uniform float) 0:? 'd5' ( uniform float) 0:? 'd6' ( uniform float) 0:? 'd7' ( uniform float) 0:? 'd8' ( uniform float) 0:? 'd9' ( uniform float) 0:? 'd10' ( uniform float) 0:? 'd11' ( uniform float) 0:? 'd12' ( uniform float) 0:? 'd13' ( uniform float) 0:? 'd14' ( uniform float) 0:? 'd15' ( uniform float) 0:? 'd16' ( uniform float) 0:? 'd17' ( uniform float) 0:? 'd18' ( uniform float) 0:? 'd19' ( uniform float) 0:? 'd20' ( uniform float) 0:? 'd21' ( uniform float) 0:? 'd22' ( uniform float) 0:? 'd23' ( uniform float) 0:? 'd24' ( uniform float) 0:? 'd25' ( uniform float) 0:? 'd26' ( uniform float) 0:? 'd27' ( uniform float) 0:? 'd28' ( uniform float) 0:? 'd29' ( uniform float) 0:? 'd30' ( uniform float) 0:? 'd31' ( uniform float) 0:? 'd32' ( uniform float) 0:? 'd33' ( uniform float) 0:? 'd34' ( uniform float) 0:? 'Count' ( uniform int) Linked fragment stage: Shader version: 130 0:? Sequence 0:53 Function Definition: main( ( global void) 0:53 Function Parameters: 0:55 Sequence 0:55 Sequence 0:55 move second child to first child ( temp 4-component vector of float) 0:55 'color' ( temp 4-component vector of float) 0:55 'BaseColor' ( smooth in 4-component vector of float) 0:71 Loop with condition not tested first 0:71 Loop Condition 0:71 Compare Less Than ( temp bool) 0:71 direct index ( temp float) 0:71 'color' ( temp 4-component vector of float) 0:71 Constant: 0:71 2 (const int) 0:71 'd4' ( uniform float) 0:71 Loop Body 0:59 Sequence 0:59 add second child into first child ( temp 4-component vector of float) 0:59 'color' ( temp 4-component vector of float) 0:59 'bigColor4' ( uniform 4-component vector of float) 0:60 Test condition and select ( temp void) 0:60 Condition 0:60 Compare Less Than ( temp bool) 0:60 direct index ( temp float) 0:60 'color' ( temp 4-component vector of float) 0:60 Constant: 0:60 0 (const int) 0:60 'd4' ( uniform float) 0:60 true case 0:61 Sequence 0:61 add second child into first child ( temp float) 0:61 direct index ( temp float) 0:61 'color' ( temp 4-component vector of float) 0:61 Constant: 0:61 2 (const int) 0:61 Constant: 0:61 2.000000 0:62 Test condition and select ( temp void) 0:62 Condition 0:62 Compare Less Than ( temp bool) 0:62 direct index ( temp float) 0:62 'color' ( temp 4-component vector of float) 0:62 Constant: 0:62 2 (const int) 0:62 'd4' ( uniform float) 0:62 true case 0:63 Sequence 0:63 Post-Increment ( temp float) 0:63 direct index ( temp float) 0:63 'color' ( temp 4-component vector of float) 0:63 Constant: 0:63 0 (const int) 0:64 Branch: Continue 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Compare Less Than ( temp bool) 0:67 direct index ( temp float) 0:67 'color' ( temp 4-component vector of float) 0:67 Constant: 0:67 1 (const int) 0:67 'd4' ( uniform float) 0:67 true case 0:68 add second child into first child ( temp float) 0:68 direct index ( temp float) 0:68 'color' ( temp 4-component vector of float) 0:68 Constant: 0:68 1 (const int) 0:68 'd4' ( uniform float) 0:67 false case 0:70 add second child into first child ( temp float) 0:70 direct index ( temp float) 0:70 'color' ( temp 4-component vector of float) 0:70 Constant: 0:70 0 (const int) 0:70 'd4' ( uniform float) 0:74 Loop with condition tested first 0:74 Loop Condition 0:74 Compare Less Than ( temp bool) 0:74 direct index ( temp float) 0:74 'color' ( temp 4-component vector of float) 0:74 Constant: 0:74 3 (const int) 0:74 'd13' ( uniform float) 0:74 Loop Body 0:75 Sequence 0:75 Test condition and select ( temp void) 0:75 Condition 0:75 Compare Less Than ( temp bool) 0:75 direct index ( temp float) 0:75 'color' ( temp 4-component vector of float) 0:75 Constant: 0:75 2 (const int) 0:75 'd13' ( uniform float) 0:75 true case 0:76 Post-Increment ( temp 4-component vector of float) 0:76 'color' ( temp 4-component vector of float) 0:75 false case 0:78 Post-Decrement ( temp 4-component vector of float) 0:78 'color' ( temp 4-component vector of float) 0:80 add second child into first child ( temp 4-component vector of float) 0:80 'color' ( temp 4-component vector of float) 0:80 'bigColor4' ( uniform 4-component vector of float) 0:81 Test condition and select ( temp void) 0:81 Condition 0:81 Compare Less Than ( temp bool) 0:81 direct index ( temp float) 0:81 'color' ( temp 4-component vector of float) 0:81 Constant: 0:81 0 (const int) 0:81 'd4' ( uniform float) 0:81 true case 0:82 Sequence 0:82 add second child into first child ( temp float) 0:82 direct index ( temp float) 0:82 'color' ( temp 4-component vector of float) 0:82 Constant: 0:82 2 (const int) 0:82 Constant: 0:82 2.000000 0:83 Test condition and select ( temp void) 0:83 Condition 0:83 Compare Less Than ( temp bool) 0:83 direct index ( temp float) 0:83 'color' ( temp 4-component vector of float) 0:83 Constant: 0:83 2 (const int) 0:83 'd4' ( uniform float) 0:83 true case 0:84 Sequence 0:84 Post-Increment ( temp float) 0:84 direct index ( temp float) 0:84 'color' ( temp 4-component vector of float) 0:84 Constant: 0:84 0 (const int) 0:85 Branch: Continue 0:88 Test condition and select ( temp void) 0:88 Condition 0:88 Compare Less Than ( temp bool) 0:88 direct index ( temp float) 0:88 'color' ( temp 4-component vector of float) 0:88 Constant: 0:88 1 (const int) 0:88 'd4' ( uniform float) 0:88 true case 0:89 add second child into first child ( temp float) 0:89 direct index ( temp float) 0:89 'color' ( temp 4-component vector of float) 0:89 Constant: 0:89 1 (const int) 0:89 'd4' ( uniform float) 0:88 false case 0:91 add second child into first child ( temp float) 0:91 direct index ( temp float) 0:91 'color' ( temp 4-component vector of float) 0:91 Constant: 0:91 0 (const int) 0:91 'd4' ( uniform float) 0:94 Post-Increment ( temp 4-component vector of float) 0:94 'color' ( temp 4-component vector of float) 0:95 move second child to first child ( temp 4-component vector of float) 0:95 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:95 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'bigColor1_1' ( uniform 4-component vector of float) 0:? 'bigColor1_2' ( uniform 4-component vector of float) 0:? 'bigColor1_3' ( uniform 4-component vector of float) 0:? 'bigColor2' ( uniform 4-component vector of float) 0:? 'bigColor3' ( uniform 4-component vector of float) 0:? 'bigColor4' ( uniform 4-component vector of float) 0:? 'bigColor5' ( uniform 4-component vector of float) 0:? 'bigColor6' ( uniform 4-component vector of float) 0:? 'bigColor7' ( uniform 4-component vector of float) 0:? 'bigColor8' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) 0:? 'd2' ( uniform float) 0:? 'd3' ( uniform float) 0:? 'd4' ( uniform float) 0:? 'd5' ( uniform float) 0:? 'd6' ( uniform float) 0:? 'd7' ( uniform float) 0:? 'd8' ( uniform float) 0:? 'd9' ( uniform float) 0:? 'd10' ( uniform float) 0:? 'd11' ( uniform float) 0:? 'd12' ( uniform float) 0:? 'd13' ( uniform float) 0:? 'd14' ( uniform float) 0:? 'd15' ( uniform float) 0:? 'd16' ( uniform float) 0:? 'd17' ( uniform float) 0:? 'd18' ( uniform float) 0:? 'd19' ( uniform float) 0:? 'd20' ( uniform float) 0:? 'd21' ( uniform float) 0:? 'd22' ( uniform float) 0:? 'd23' ( uniform float) 0:? 'd24' ( uniform float) 0:? 'd25' ( uniform float) 0:? 'd26' ( uniform float) 0:? 'd27' ( uniform float) 0:? 'd28' ( uniform float) 0:? 'd29' ( uniform float) 0:? 'd30' ( uniform float) 0:? 'd31' ( uniform float) 0:? 'd32' ( uniform float) 0:? 'd33' ( uniform float) 0:? 'd34' ( uniform float) 0:? 'Count' ( uniform int) glslang-16.0.0/Test/baseResults/mains1.frag.out000066400000000000000000000035471506534232700213170ustar00rootroot00000000000000mains1.frag Shader version: 110 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Linker Objects mains2.frag Shader version: 110 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Linker Objects noMain1.geom ERROR: #version: geometry shaders require es profile with version 310 or non-es profile with version 150 or above ERROR: 1 compilation errors. No code generated. Shader version: 150 invocations = -1 max_vertices = -1 input primitive = none output primitive = points ERROR: node is still EOpNull! 0:3 Function Definition: foo( ( global void) 0:3 Function Parameters: 0:? Linker Objects noMain2.geom Shader version: 150 invocations = -1 max_vertices = -1 input primitive = none output primitive = line_strip 0:? Sequence 0:3 Function Definition: bar( ( global void) 0:3 Function Parameters: 0:? Linker Objects Linked geometry stage: ERROR: Linking geometry stage: Contradictory output layout primitives ERROR: Linking geometry stage: Missing entry point: Each stage requires one entry point ERROR: Linking geometry stage: At least one shader must specify an input layout primitive ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value) Linked fragment stage: ERROR: Linking fragment stage: can't handle multiple entry points per stage ERROR: Linking fragment stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( Shader version: 150 invocations = 1 max_vertices = -1 input primitive = none output primitive = points ERROR: node is still EOpNull! 0:? Linker Objects Shader version: 110 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Linker Objects glslang-16.0.0/Test/baseResults/matrix.frag.out000066400000000000000000000625311506534232700214310ustar00rootroot00000000000000matrix.frag WARNING: 0:6: varying deprecated in version 130; may be removed in future release WARNING: 0:17: varying deprecated in version 130; may be removed in future release WARNING: 0:22: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 direct index ( temp 4-component vector of float) 0:27 'un34' ( uniform 4X4 matrix of float) 0:27 Constant: 0:27 1 (const int) 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:28 Construct vec4 ( temp 4-component vector of float) 0:28 vector-times-matrix ( temp 3-component vector of float) 0:28 'Color' ( smooth in 3-component vector of float) 0:28 'colorTransform' ( uniform 3X3 matrix of float) 0:28 Constant: 0:28 1.000000 0:30 Test condition and select ( temp void) 0:30 Condition 0:30 Compare Not Equal ( temp bool) 0:30 'm' ( uniform 4X4 matrix of float) 0:30 'n' ( uniform 4X4 matrix of float) 0:30 true case 0:31 add second child into first child ( temp 4-component vector of float) 0:31 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:31 'v' ( smooth in 4-component vector of float) 0:30 false case 0:33 Sequence 0:33 add second child into first child ( temp 4-component vector of float) 0:33 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:33 matrix-times-vector ( temp 4-component vector of float) 0:33 'm' ( uniform 4X4 matrix of float) 0:33 'v' ( smooth in 4-component vector of float) 0:34 add second child into first child ( temp 4-component vector of float) 0:34 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:34 vector-times-matrix ( temp 4-component vector of float) 0:34 'v' ( smooth in 4-component vector of float) 0:34 subtract ( temp 4X4 matrix of float) 0:34 'm' ( uniform 4X4 matrix of float) 0:34 'n' ( uniform 4X4 matrix of float) 0:42 Sequence 0:42 move second child to first child ( temp 4X4 matrix of float) 0:42 'm34' ( temp 4X4 matrix of float) 0:45 Construct mat4 ( temp 4X4 matrix of float) 0:42 component-wise multiply ( temp float) 0:42 direct index ( temp float) 0:42 'v' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 'u' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 component-wise multiply ( temp float) 0:42 direct index ( temp float) 0:42 'v' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 'u' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 1 (const int) 0:42 component-wise multiply ( temp float) 0:42 direct index ( temp float) 0:42 'v' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 'u' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 2 (const int) 0:42 component-wise multiply ( temp float) 0:42 direct index ( temp float) 0:42 'v' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 'u' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 3 (const int) 0:43 component-wise multiply ( temp float) 0:43 direct index ( temp float) 0:43 'v' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 'u' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 0 (const int) 0:43 component-wise multiply ( temp float) 0:43 direct index ( temp float) 0:43 'v' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 'u' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 component-wise multiply ( temp float) 0:43 direct index ( temp float) 0:43 'v' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 'u' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 2 (const int) 0:43 component-wise multiply ( temp float) 0:43 direct index ( temp float) 0:43 'v' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 'u' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 3 (const int) 0:44 component-wise multiply ( temp float) 0:44 direct index ( temp float) 0:44 'v' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 'u' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 0 (const int) 0:44 component-wise multiply ( temp float) 0:44 direct index ( temp float) 0:44 'v' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 'u' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 1 (const int) 0:44 component-wise multiply ( temp float) 0:44 direct index ( temp float) 0:44 'v' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 'u' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 component-wise multiply ( temp float) 0:44 direct index ( temp float) 0:44 'v' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 'u' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 3 (const int) 0:45 component-wise multiply ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:45 direct index ( temp float) 0:45 'u' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 0 (const int) 0:45 component-wise multiply ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:45 direct index ( temp float) 0:45 'u' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 1 (const int) 0:45 component-wise multiply ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:45 direct index ( temp float) 0:45 'u' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 2 (const int) 0:45 component-wise multiply ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:45 direct index ( temp float) 0:45 'u' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:46 add second child into first child ( temp 4X4 matrix of float) 0:46 'm34' ( temp 4X4 matrix of float) 0:46 Construct mat4 ( temp 4X4 matrix of float) 0:46 direct index ( temp float) 0:46 'v' ( smooth in 4-component vector of float) 0:46 Constant: 0:46 0 (const int) 0:47 add second child into first child ( temp 4X4 matrix of float) 0:47 'm34' ( temp 4X4 matrix of float) 0:47 Construct mat4 ( temp 4X4 matrix of float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 direct index ( temp float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:47 'u' ( smooth in 4-component vector of float) 0:47 direct index ( temp float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:47 'u' ( smooth in 4-component vector of float) 0:47 direct index ( temp float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:47 direct index ( temp float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:51 Test condition and select ( temp void) 0:51 Condition 0:51 Compare Equal ( temp bool) 0:51 'm34' ( temp 4X4 matrix of float) 0:51 'un34' ( uniform 4X4 matrix of float) 0:51 true case 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:52 matrix-times-vector ( temp 4-component vector of float) 0:52 'm34' ( temp 4X4 matrix of float) 0:52 'u' ( smooth in 4-component vector of float) 0:51 false case 0:54 add second child into first child ( temp 4-component vector of float) 0:54 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:54 matrix-times-vector ( temp 4-component vector of float) 0:54 matrix-multiply ( temp 4X4 matrix of float) 0:54 'un34' ( uniform 4X4 matrix of float) 0:54 'um43' ( uniform 4X4 matrix of float) 0:54 'v' ( smooth in 4-component vector of float) 0:56 Sequence 0:56 move second child to first child ( temp 4X2 matrix of float) 0:56 'm42' ( temp 4X2 matrix of float) 0:56 Constant: 0:56 42.000000 0:56 0.000000 0:56 0.000000 0:56 42.000000 0:56 0.000000 0:56 0.000000 0:56 0.000000 0:56 0.000000 0:57 Test condition and select ( temp void) 0:57 Condition 0:57 Compare Equal ( temp bool) 0:57 'm42' ( temp 4X2 matrix of float) 0:57 Constant: 0:57 42.000000 0:57 0.000000 0:57 0.000000 0:57 42.000000 0:57 0.000000 0:57 0.000000 0:57 0.000000 0:57 0.000000 0:57 true case 0:58 Sequence 0:58 add second child into first child ( temp 4-component vector of float) 0:58 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:58 'v' ( smooth in 4-component vector of float) 0:? Linker Objects 0:? 'colorTransform' ( uniform 3X3 matrix of float) 0:? 'Color' ( smooth in 3-component vector of float) 0:? 'm' ( uniform 4X4 matrix of float) 0:? 'n' ( uniform 4X4 matrix of float) 0:? 'um43' ( uniform 4X4 matrix of float) 0:? 'un34' ( uniform 4X4 matrix of float) 0:? 'v' ( smooth in 4-component vector of float) 0:? 'u' ( smooth in 4-component vector of float) Linked fragment stage: Shader version: 130 0:? Sequence 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 direct index ( temp 4-component vector of float) 0:27 'un34' ( uniform 4X4 matrix of float) 0:27 Constant: 0:27 1 (const int) 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:28 Construct vec4 ( temp 4-component vector of float) 0:28 vector-times-matrix ( temp 3-component vector of float) 0:28 'Color' ( smooth in 3-component vector of float) 0:28 'colorTransform' ( uniform 3X3 matrix of float) 0:28 Constant: 0:28 1.000000 0:30 Test condition and select ( temp void) 0:30 Condition 0:30 Compare Not Equal ( temp bool) 0:30 'm' ( uniform 4X4 matrix of float) 0:30 'n' ( uniform 4X4 matrix of float) 0:30 true case 0:31 add second child into first child ( temp 4-component vector of float) 0:31 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:31 'v' ( smooth in 4-component vector of float) 0:30 false case 0:33 Sequence 0:33 add second child into first child ( temp 4-component vector of float) 0:33 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:33 matrix-times-vector ( temp 4-component vector of float) 0:33 'm' ( uniform 4X4 matrix of float) 0:33 'v' ( smooth in 4-component vector of float) 0:34 add second child into first child ( temp 4-component vector of float) 0:34 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:34 vector-times-matrix ( temp 4-component vector of float) 0:34 'v' ( smooth in 4-component vector of float) 0:34 subtract ( temp 4X4 matrix of float) 0:34 'm' ( uniform 4X4 matrix of float) 0:34 'n' ( uniform 4X4 matrix of float) 0:42 Sequence 0:42 move second child to first child ( temp 4X4 matrix of float) 0:42 'm34' ( temp 4X4 matrix of float) 0:45 Construct mat4 ( temp 4X4 matrix of float) 0:42 component-wise multiply ( temp float) 0:42 direct index ( temp float) 0:42 'v' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 'u' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 component-wise multiply ( temp float) 0:42 direct index ( temp float) 0:42 'v' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 'u' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 1 (const int) 0:42 component-wise multiply ( temp float) 0:42 direct index ( temp float) 0:42 'v' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 'u' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 2 (const int) 0:42 component-wise multiply ( temp float) 0:42 direct index ( temp float) 0:42 'v' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 'u' ( smooth in 4-component vector of float) 0:42 Constant: 0:42 3 (const int) 0:43 component-wise multiply ( temp float) 0:43 direct index ( temp float) 0:43 'v' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 'u' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 0 (const int) 0:43 component-wise multiply ( temp float) 0:43 direct index ( temp float) 0:43 'v' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 'u' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 component-wise multiply ( temp float) 0:43 direct index ( temp float) 0:43 'v' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 'u' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 2 (const int) 0:43 component-wise multiply ( temp float) 0:43 direct index ( temp float) 0:43 'v' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 1 (const int) 0:43 direct index ( temp float) 0:43 'u' ( smooth in 4-component vector of float) 0:43 Constant: 0:43 3 (const int) 0:44 component-wise multiply ( temp float) 0:44 direct index ( temp float) 0:44 'v' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 'u' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 0 (const int) 0:44 component-wise multiply ( temp float) 0:44 direct index ( temp float) 0:44 'v' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 'u' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 1 (const int) 0:44 component-wise multiply ( temp float) 0:44 direct index ( temp float) 0:44 'v' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 'u' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 component-wise multiply ( temp float) 0:44 direct index ( temp float) 0:44 'v' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 2 (const int) 0:44 direct index ( temp float) 0:44 'u' ( smooth in 4-component vector of float) 0:44 Constant: 0:44 3 (const int) 0:45 component-wise multiply ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:45 direct index ( temp float) 0:45 'u' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 0 (const int) 0:45 component-wise multiply ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:45 direct index ( temp float) 0:45 'u' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 1 (const int) 0:45 component-wise multiply ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:45 direct index ( temp float) 0:45 'u' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 2 (const int) 0:45 component-wise multiply ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:45 direct index ( temp float) 0:45 'u' ( smooth in 4-component vector of float) 0:45 Constant: 0:45 3 (const int) 0:46 add second child into first child ( temp 4X4 matrix of float) 0:46 'm34' ( temp 4X4 matrix of float) 0:46 Construct mat4 ( temp 4X4 matrix of float) 0:46 direct index ( temp float) 0:46 'v' ( smooth in 4-component vector of float) 0:46 Constant: 0:46 0 (const int) 0:47 add second child into first child ( temp 4X4 matrix of float) 0:47 'm34' ( temp 4X4 matrix of float) 0:47 Construct mat4 ( temp 4X4 matrix of float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 direct index ( temp float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:47 'u' ( smooth in 4-component vector of float) 0:47 direct index ( temp float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:47 'u' ( smooth in 4-component vector of float) 0:47 direct index ( temp float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:47 direct index ( temp float) 0:47 'u' ( smooth in 4-component vector of float) 0:47 Constant: 0:47 0 (const int) 0:51 Test condition and select ( temp void) 0:51 Condition 0:51 Compare Equal ( temp bool) 0:51 'm34' ( temp 4X4 matrix of float) 0:51 'un34' ( uniform 4X4 matrix of float) 0:51 true case 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:52 matrix-times-vector ( temp 4-component vector of float) 0:52 'm34' ( temp 4X4 matrix of float) 0:52 'u' ( smooth in 4-component vector of float) 0:51 false case 0:54 add second child into first child ( temp 4-component vector of float) 0:54 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:54 matrix-times-vector ( temp 4-component vector of float) 0:54 matrix-multiply ( temp 4X4 matrix of float) 0:54 'un34' ( uniform 4X4 matrix of float) 0:54 'um43' ( uniform 4X4 matrix of float) 0:54 'v' ( smooth in 4-component vector of float) 0:56 Sequence 0:56 move second child to first child ( temp 4X2 matrix of float) 0:56 'm42' ( temp 4X2 matrix of float) 0:56 Constant: 0:56 42.000000 0:56 0.000000 0:56 0.000000 0:56 42.000000 0:56 0.000000 0:56 0.000000 0:56 0.000000 0:56 0.000000 0:57 Test condition and select ( temp void) 0:57 Condition 0:57 Compare Equal ( temp bool) 0:57 'm42' ( temp 4X2 matrix of float) 0:57 Constant: 0:57 42.000000 0:57 0.000000 0:57 0.000000 0:57 42.000000 0:57 0.000000 0:57 0.000000 0:57 0.000000 0:57 0.000000 0:57 true case 0:58 Sequence 0:58 add second child into first child ( temp 4-component vector of float) 0:58 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:58 'v' ( smooth in 4-component vector of float) 0:? Linker Objects 0:? 'colorTransform' ( uniform 3X3 matrix of float) 0:? 'Color' ( smooth in 3-component vector of float) 0:? 'm' ( uniform 4X4 matrix of float) 0:? 'n' ( uniform 4X4 matrix of float) 0:? 'um43' ( uniform 4X4 matrix of float) 0:? 'un34' ( uniform 4X4 matrix of float) 0:? 'v' ( smooth in 4-component vector of float) 0:? 'u' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/matrix2.frag.out000066400000000000000000000406761506534232700215210ustar00rootroot00000000000000matrix2.frag WARNING: 0:4: varying deprecated in version 130; may be removed in future release WARNING: 0:13: varying deprecated in version 130; may be removed in future release WARNING: 0:15: varying deprecated in version 130; may be removed in future release Shader version: 150 0:? Sequence 0:19 Function Definition: main( ( global void) 0:19 Function Parameters: 0:21 Sequence 0:21 Sequence 0:21 move second child to first child ( temp 3X4 matrix of float) 0:21 'm34' ( temp 3X4 matrix of float) 0:21 outer product ( global 3X4 matrix of float) 0:21 'v' ( smooth in 4-component vector of float) 0:21 'u' ( smooth in 3-component vector of float) 0:23 add second child into first child ( temp 3X4 matrix of float) 0:23 'm34' ( temp 3X4 matrix of float) 0:23 Constant: 0:23 4.300000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 4.300000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 4.300000 0:23 0.000000 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'FragColor' ( out 4-component vector of float) 0:25 Construct vec4 ( temp 4-component vector of float) 0:25 'Color' ( smooth in 3-component vector of float) 0:25 Constant: 0:25 1.000000 0:26 multiply second child into first child ( temp 4-component vector of float) 0:26 'FragColor' ( out 4-component vector of float) 0:26 Construct vec4 ( temp 4-component vector of float) 0:26 vector-times-matrix ( temp 3-component vector of float) 0:26 'FragColor' ( out 4-component vector of float) 0:26 'm34' ( temp 3X4 matrix of float) 0:26 Constant: 0:26 1.000000 0:28 matrix scale second child into first child ( temp 3X4 matrix of float) 0:28 'm34' ( temp 3X4 matrix of float) 0:28 direct index ( temp float) 0:28 'v' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:30 Sequence 0:30 move second child to first child ( temp 4X4 matrix of float) 0:30 'm44' ( temp 4X4 matrix of float) 0:30 Construct mat4 ( temp 4X4 matrix of float) 0:30 'un34' ( uniform 3X4 matrix of float) 0:32 add second child into first child ( temp 4X4 matrix of float) 0:32 'm44' ( temp 4X4 matrix of float) 0:32 matrix-multiply ( temp 4X4 matrix of float) 0:32 'm34' ( temp 3X4 matrix of float) 0:32 'um43' ( uniform 4X3 matrix of float) 0:34 add second child into first child ( temp 4-component vector of float) 0:34 'FragColor' ( out 4-component vector of float) 0:34 matrix-times-vector ( temp 4-component vector of float) 0:34 Negate value ( temp 4X4 matrix of float) 0:34 'm44' ( temp 4X4 matrix of float) 0:34 'v' ( smooth in 4-component vector of float) 0:36 matrix mult second child into first child ( temp 4-component vector of float) 0:36 'FragColor' ( out 4-component vector of float) 0:36 component-wise multiply ( global 4X4 matrix of float) 0:36 'm44' ( temp 4X4 matrix of float) 0:36 'm44' ( temp 4X4 matrix of float) 0:38 move second child to first child ( temp 3X4 matrix of float) 0:38 'm34' ( temp 3X4 matrix of float) 0:38 transpose ( global 3X4 matrix of float) 0:38 'um43' ( uniform 4X3 matrix of float) 0:39 multiply second child into first child ( temp 4-component vector of float) 0:39 'FragColor' ( out 4-component vector of float) 0:39 Construct vec4 ( temp 4-component vector of float) 0:39 vector-times-matrix ( temp 3-component vector of float) 0:39 'FragColor' ( out 4-component vector of float) 0:39 'm34' ( temp 3X4 matrix of float) 0:39 Constant: 0:39 1.000000 0:40 multiply second child into first child ( temp 4-component vector of float) 0:40 'FragColor' ( out 4-component vector of float) 0:40 Construct vec4 ( temp 4-component vector of float) 0:40 determinant ( global float) 0:40 'um4' ( uniform 4X4 matrix of float) 0:41 Sequence 0:41 move second child to first child ( temp 2X2 matrix of float) 0:41 'inv' ( temp 2X2 matrix of float) 0:41 inverse ( global 2X2 matrix of float) 0:41 'um2' ( uniform 2X2 matrix of float) 0:42 multiply second child into first child ( temp 4-component vector of float) 0:42 'FragColor' ( out 4-component vector of float) 0:42 Construct vec4 ( temp 4-component vector of float) 0:42 direct index ( temp float) 0:42 direct index ( temp 2-component vector of float) 0:42 'inv' ( temp 2X2 matrix of float) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 direct index ( temp 2-component vector of float) 0:42 'inv' ( temp 2X2 matrix of float) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 direct index ( temp 2-component vector of float) 0:42 'inv' ( temp 2X2 matrix of float) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 direct index ( temp float) 0:42 direct index ( temp 2-component vector of float) 0:42 'inv' ( temp 2X2 matrix of float) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 1 (const int) 0:43 Sequence 0:43 move second child to first child ( temp 3X3 matrix of float) 0:43 'inv3' ( temp 3X3 matrix of float) 0:43 inverse ( global 3X3 matrix of float) 0:43 'um3' ( uniform 3X3 matrix of float) 0:44 multiply second child into first child ( temp 4-component vector of float) 0:44 'FragColor' ( out 4-component vector of float) 0:44 Construct vec4 ( temp 4-component vector of float) 0:44 direct index ( temp float) 0:44 direct index ( temp 3-component vector of float) 0:44 'inv3' ( temp 3X3 matrix of float) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const int) 0:46 Sequence 0:46 move second child to first child ( temp 4X4 matrix of float) 0:46 'inv4' ( temp 4X4 matrix of float) 0:46 inverse ( global 4X4 matrix of float) 0:46 'um4' ( uniform 4X4 matrix of float) 0:47 matrix mult second child into first child ( temp 4-component vector of float) 0:47 'FragColor' ( out 4-component vector of float) 0:47 'inv4' ( temp 4X4 matrix of float) 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'FragColor' ( out 4-component vector of float) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 vector-times-matrix ( temp 3-component vector of float) 0:49 'FragColor' ( out 4-component vector of float) 0:49 component-wise multiply ( global 3X4 matrix of float) 0:49 'un34' ( uniform 3X4 matrix of float) 0:49 'un34' ( uniform 3X4 matrix of float) 0:49 direct index ( temp float) 0:49 'FragColor' ( out 4-component vector of float) 0:49 Constant: 0:49 3 (const int) 0:50 matrix mult second child into first child ( temp 3X4 matrix of float) 0:50 'm34' ( temp 3X4 matrix of float) 0:50 'colorTransform' ( uniform 3X3 matrix of float) 0:? Linker Objects 0:? 'colorTransform' ( uniform 3X3 matrix of float) 0:? 'Color' ( smooth in 3-component vector of float) 0:? 'm' ( uniform 4X4 matrix of float) 0:? 'n' ( uniform 4X4 matrix of float) 0:? 'um43' ( uniform 4X3 matrix of float) 0:? 'un34' ( uniform 3X4 matrix of float) 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 'um3' ( uniform 3X3 matrix of float) 0:? 'um4' ( uniform 4X4 matrix of float) 0:? 'v' ( smooth in 4-component vector of float) 0:? 'u' ( smooth in 3-component vector of float) 0:? 'FragColor' ( out 4-component vector of float) Linked fragment stage: Shader version: 150 0:? Sequence 0:19 Function Definition: main( ( global void) 0:19 Function Parameters: 0:21 Sequence 0:21 Sequence 0:21 move second child to first child ( temp 3X4 matrix of float) 0:21 'm34' ( temp 3X4 matrix of float) 0:21 outer product ( global 3X4 matrix of float) 0:21 'v' ( smooth in 4-component vector of float) 0:21 'u' ( smooth in 3-component vector of float) 0:23 add second child into first child ( temp 3X4 matrix of float) 0:23 'm34' ( temp 3X4 matrix of float) 0:23 Constant: 0:23 4.300000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 4.300000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 0.000000 0:23 4.300000 0:23 0.000000 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'FragColor' ( out 4-component vector of float) 0:25 Construct vec4 ( temp 4-component vector of float) 0:25 'Color' ( smooth in 3-component vector of float) 0:25 Constant: 0:25 1.000000 0:26 multiply second child into first child ( temp 4-component vector of float) 0:26 'FragColor' ( out 4-component vector of float) 0:26 Construct vec4 ( temp 4-component vector of float) 0:26 vector-times-matrix ( temp 3-component vector of float) 0:26 'FragColor' ( out 4-component vector of float) 0:26 'm34' ( temp 3X4 matrix of float) 0:26 Constant: 0:26 1.000000 0:28 matrix scale second child into first child ( temp 3X4 matrix of float) 0:28 'm34' ( temp 3X4 matrix of float) 0:28 direct index ( temp float) 0:28 'v' ( smooth in 4-component vector of float) 0:28 Constant: 0:28 0 (const int) 0:30 Sequence 0:30 move second child to first child ( temp 4X4 matrix of float) 0:30 'm44' ( temp 4X4 matrix of float) 0:30 Construct mat4 ( temp 4X4 matrix of float) 0:30 'un34' ( uniform 3X4 matrix of float) 0:32 add second child into first child ( temp 4X4 matrix of float) 0:32 'm44' ( temp 4X4 matrix of float) 0:32 matrix-multiply ( temp 4X4 matrix of float) 0:32 'm34' ( temp 3X4 matrix of float) 0:32 'um43' ( uniform 4X3 matrix of float) 0:34 add second child into first child ( temp 4-component vector of float) 0:34 'FragColor' ( out 4-component vector of float) 0:34 matrix-times-vector ( temp 4-component vector of float) 0:34 Negate value ( temp 4X4 matrix of float) 0:34 'm44' ( temp 4X4 matrix of float) 0:34 'v' ( smooth in 4-component vector of float) 0:36 matrix mult second child into first child ( temp 4-component vector of float) 0:36 'FragColor' ( out 4-component vector of float) 0:36 component-wise multiply ( global 4X4 matrix of float) 0:36 'm44' ( temp 4X4 matrix of float) 0:36 'm44' ( temp 4X4 matrix of float) 0:38 move second child to first child ( temp 3X4 matrix of float) 0:38 'm34' ( temp 3X4 matrix of float) 0:38 transpose ( global 3X4 matrix of float) 0:38 'um43' ( uniform 4X3 matrix of float) 0:39 multiply second child into first child ( temp 4-component vector of float) 0:39 'FragColor' ( out 4-component vector of float) 0:39 Construct vec4 ( temp 4-component vector of float) 0:39 vector-times-matrix ( temp 3-component vector of float) 0:39 'FragColor' ( out 4-component vector of float) 0:39 'm34' ( temp 3X4 matrix of float) 0:39 Constant: 0:39 1.000000 0:40 multiply second child into first child ( temp 4-component vector of float) 0:40 'FragColor' ( out 4-component vector of float) 0:40 Construct vec4 ( temp 4-component vector of float) 0:40 determinant ( global float) 0:40 'um4' ( uniform 4X4 matrix of float) 0:41 Sequence 0:41 move second child to first child ( temp 2X2 matrix of float) 0:41 'inv' ( temp 2X2 matrix of float) 0:41 inverse ( global 2X2 matrix of float) 0:41 'um2' ( uniform 2X2 matrix of float) 0:42 multiply second child into first child ( temp 4-component vector of float) 0:42 'FragColor' ( out 4-component vector of float) 0:42 Construct vec4 ( temp 4-component vector of float) 0:42 direct index ( temp float) 0:42 direct index ( temp 2-component vector of float) 0:42 'inv' ( temp 2X2 matrix of float) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 direct index ( temp 2-component vector of float) 0:42 'inv' ( temp 2X2 matrix of float) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 0 (const int) 0:42 direct index ( temp float) 0:42 direct index ( temp 2-component vector of float) 0:42 'inv' ( temp 2X2 matrix of float) 0:42 Constant: 0:42 0 (const int) 0:42 Constant: 0:42 1 (const int) 0:42 direct index ( temp float) 0:42 direct index ( temp 2-component vector of float) 0:42 'inv' ( temp 2X2 matrix of float) 0:42 Constant: 0:42 1 (const int) 0:42 Constant: 0:42 1 (const int) 0:43 Sequence 0:43 move second child to first child ( temp 3X3 matrix of float) 0:43 'inv3' ( temp 3X3 matrix of float) 0:43 inverse ( global 3X3 matrix of float) 0:43 'um3' ( uniform 3X3 matrix of float) 0:44 multiply second child into first child ( temp 4-component vector of float) 0:44 'FragColor' ( out 4-component vector of float) 0:44 Construct vec4 ( temp 4-component vector of float) 0:44 direct index ( temp float) 0:44 direct index ( temp 3-component vector of float) 0:44 'inv3' ( temp 3X3 matrix of float) 0:44 Constant: 0:44 2 (const int) 0:44 Constant: 0:44 1 (const int) 0:46 Sequence 0:46 move second child to first child ( temp 4X4 matrix of float) 0:46 'inv4' ( temp 4X4 matrix of float) 0:46 inverse ( global 4X4 matrix of float) 0:46 'um4' ( uniform 4X4 matrix of float) 0:47 matrix mult second child into first child ( temp 4-component vector of float) 0:47 'FragColor' ( out 4-component vector of float) 0:47 'inv4' ( temp 4X4 matrix of float) 0:49 move second child to first child ( temp 4-component vector of float) 0:49 'FragColor' ( out 4-component vector of float) 0:49 Construct vec4 ( temp 4-component vector of float) 0:49 vector-times-matrix ( temp 3-component vector of float) 0:49 'FragColor' ( out 4-component vector of float) 0:49 component-wise multiply ( global 3X4 matrix of float) 0:49 'un34' ( uniform 3X4 matrix of float) 0:49 'un34' ( uniform 3X4 matrix of float) 0:49 direct index ( temp float) 0:49 'FragColor' ( out 4-component vector of float) 0:49 Constant: 0:49 3 (const int) 0:50 matrix mult second child into first child ( temp 3X4 matrix of float) 0:50 'm34' ( temp 3X4 matrix of float) 0:50 'colorTransform' ( uniform 3X3 matrix of float) 0:? Linker Objects 0:? 'colorTransform' ( uniform 3X3 matrix of float) 0:? 'Color' ( smooth in 3-component vector of float) 0:? 'm' ( uniform 4X4 matrix of float) 0:? 'n' ( uniform 4X4 matrix of float) 0:? 'um43' ( uniform 4X3 matrix of float) 0:? 'un34' ( uniform 3X4 matrix of float) 0:? 'um2' ( uniform 2X2 matrix of float) 0:? 'um3' ( uniform 3X3 matrix of float) 0:? 'um4' ( uniform 4X4 matrix of float) 0:? 'v' ( smooth in 4-component vector of float) 0:? 'u' ( smooth in 3-component vector of float) 0:? 'FragColor' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/matrixCompMult.vert.out000066400000000000000000000016021506534232700231430ustar00rootroot00000000000000matrixCompMult.vert Shader version: 460 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:? Sequence 0:26 move second child to first child ( temp float) 0:26 'o1' ( smooth out float) 0:26 Constant: 0:26 18.000000 0:? Linker Objects 0:? 'o1' ( smooth out float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 460 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:? Sequence 0:26 move second child to first child ( temp float) 0:26 'o1' ( smooth out float) 0:26 Constant: 0:26 18.000000 0:? Linker Objects 0:? 'o1' ( smooth out float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/matrixError.vert.out000066400000000000000000000066601506534232700225050ustar00rootroot00000000000000matrixError.vert ERROR: 0:10: 'constructor' : too many arguments ERROR: 0:7: 'const' : non-matching or non-convertible constant type for const initializer ERROR: 0:17: 'assign' : cannot convert from ' temp 2-component vector of float' to ' temp 3-component vector of float' ERROR: 0:18: 'assign' : cannot convert from ' temp 2-component vector of float' to ' temp 3-component vector of float' ERROR: 0:19: 'xy' : does not apply to this type: temp 2X3 matrix of float ERROR: 0:21: '[' : matrix index out of range '2' ERROR: 0:21: '[' : vector index out of range '4' ERROR: 0:22: 'assign' : cannot convert from ' temp 2X3 matrix of float' to ' temp 2X3 matrix of float' ERROR: 0:23: 'assign' : cannot convert from ' uniform 3X2 matrix of float' to ' temp 2X3 matrix of float' ERROR: 9 compilation errors. No code generated. Shader version: 120 ERROR: node is still EOpNull! 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:? Sequence 0:17 'a' ( temp 3-component vector of float) 0:18 'b' ( temp 3-component vector of float) 0:19 'm23' ( temp 2X3 matrix of float) 0:21 move second child to first child ( temp 4-component vector of float) 0:21 'gl_Position' ( gl_Position 4-component vector of float Position) 0:21 Construct vec4 ( temp 4-component vector of float) 0:21 matrix-times-vector ( temp 3-component vector of float) 0:21 matrix-multiply ( temp 3X3 matrix of float) 0:21 'm23' ( temp 2X3 matrix of float) 0:21 'm32' ( uniform 3X2 matrix of float) 0:21 'v3' ( in 3-component vector of float) 0:21 direct index ( temp float) 0:21 direct index ( temp 4-component vector of float) 0:21 'm24' ( temp 2X4 matrix of float) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 4 (const int) 0:22 'm23' ( temp 2X3 matrix of float) 0:23 'm23' ( temp 2X3 matrix of float) 0:? Linker Objects 0:? 'v3' ( in 3-component vector of float) 0:? 'm32' ( uniform 3X2 matrix of float) 0:? 'm24' ( temp 2X4 matrix of float) Linked vertex stage: Shader version: 120 ERROR: node is still EOpNull! 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:? Sequence 0:17 'a' ( temp 3-component vector of float) 0:18 'b' ( temp 3-component vector of float) 0:19 'm23' ( temp 2X3 matrix of float) 0:21 move second child to first child ( temp 4-component vector of float) 0:21 'gl_Position' ( gl_Position 4-component vector of float Position) 0:21 Construct vec4 ( temp 4-component vector of float) 0:21 matrix-times-vector ( temp 3-component vector of float) 0:21 matrix-multiply ( temp 3X3 matrix of float) 0:21 'm23' ( temp 2X3 matrix of float) 0:21 'm32' ( uniform 3X2 matrix of float) 0:21 'v3' ( in 3-component vector of float) 0:21 direct index ( temp float) 0:21 direct index ( temp 4-component vector of float) 0:21 'm24' ( temp 2X4 matrix of float) 0:21 Constant: 0:21 2 (const int) 0:21 Constant: 0:21 4 (const int) 0:22 'm23' ( temp 2X3 matrix of float) 0:23 'm23' ( temp 2X3 matrix of float) 0:? Linker Objects 0:? 'v3' ( in 3-component vector of float) 0:? 'm32' ( uniform 3X2 matrix of float) 0:? 'm24' ( temp 2X4 matrix of float) glslang-16.0.0/Test/baseResults/maxClipDistances.vert.out000066400000000000000000000010641506534232700234130ustar00rootroot00000000000000maxClipDistances.vert Shader version: 130 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:? Linker Objects 0:? 'gl_ClipDistance' ( smooth out 8-element array of float ClipDistance) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) Linked vertex stage: Shader version: 130 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:? Linker Objects 0:? 'gl_ClipDistance' ( smooth out 8-element array of float ClipDistance) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) glslang-16.0.0/Test/baseResults/max_vertices_0.geom.out000066400000000000000000000017451506534232700230450ustar00rootroot00000000000000max_vertices_0.geom Shader version: 330 invocations = -1 max_vertices = 0 input primitive = points output primitive = triangle_strip 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 EndPrimitive ( global void) 0:11 EndPrimitive ( global void) 0:? Linker Objects 0:? 'v_geom_FragColor' ( in 1-element array of 4-component vector of float) 0:? 'v_frag_FragColor' (layout( stream=0) out 4-component vector of float) Linked geometry stage: Shader version: 330 invocations = 1 max_vertices = 0 input primitive = points output primitive = triangle_strip 0:? Sequence 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence 0:10 EndPrimitive ( global void) 0:11 EndPrimitive ( global void) 0:? Linker Objects 0:? 'v_geom_FragColor' ( in 1-element array of 4-component vector of float) 0:? 'v_frag_FragColor' (layout( stream=0) out 4-component vector of float) glslang-16.0.0/Test/baseResults/missingBodies.vert.out000066400000000000000000000056621506534232700227670ustar00rootroot00000000000000missingBodies.vert Shader version: 450 0:? Sequence 0:4 Function Definition: foo( ( global void) 0:4 Function Parameters: 0:4 Sequence 0:4 Function Call: bar( ( global void) 0:8 Function Definition: C(i1;i1; ( global void) 0:8 Function Parameters: 0:8 '' ( in int) 0:8 '' ( in int) 0:10 Function Definition: A( ( global void) 0:10 Function Parameters: 0:10 Sequence 0:10 Function Call: B( ( global void) 0:10 Function Call: C(i1; ( global void) 0:10 Constant: 0:10 1 (const int) 0:10 Function Call: C(b1; ( global void) 0:10 Constant: 0:10 true (const bool) 0:10 Function Call: C(i1;i1; ( global void) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 2 (const int) 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 Function Call: foo( ( global void) 0:15 Function Call: C(b1; ( global void) 0:15 Constant: 0:15 true (const bool) 0:20 Sequence 0:20 move second child to first child ( temp int) 0:20 'f1' ( global int) 0:20 Function Call: ret1( ( global int) 0:22 Function Definition: ret2( ( global int) 0:22 Function Parameters: 0:22 Sequence 0:22 Branch: Return with expression 0:22 Constant: 0:22 3 (const int) 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'f2' ( global int) 0:24 Function Call: ret2( ( global int) 0:? Linker Objects 0:? 'f1' ( global int) 0:? 'f2' ( global int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex stage: No function definition (body) found: ret1( ERROR: Linking vertex stage: No function definition (body) found: C(b1; ERROR: Linking vertex stage: No function definition (body) found: bar( Shader version: 450 0:? Sequence 0:4 Function Definition: foo( ( global void) 0:4 Function Parameters: 0:4 Sequence 0:4 Function Call: bar( ( global void) 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 Function Call: foo( ( global void) 0:15 Function Call: C(b1; ( global void) 0:15 Constant: 0:15 true (const bool) 0:20 Sequence 0:20 move second child to first child ( temp int) 0:20 'f1' ( global int) 0:20 Function Call: ret1( ( global int) 0:22 Function Definition: ret2( ( global int) 0:22 Function Parameters: 0:22 Sequence 0:22 Branch: Return with expression 0:22 Constant: 0:22 3 (const int) 0:24 Sequence 0:24 move second child to first child ( temp int) 0:24 'f2' ( global int) 0:24 Function Call: ret2( ( global int) 0:? Linker Objects 0:? 'f1' ( global int) 0:? 'f2' ( global int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/mixedArrayDecls.frag.out000066400000000000000000000065621506534232700232070ustar00rootroot00000000000000mixedArrayDecls.frag ERROR: 0:30: '' : syntax error, unexpected LEFT_PAREN, expecting COMMA or SEMICOLON ERROR: 1 compilation errors. No code generated. Shader version: 450 ERROR: node is still EOpNull! 0:16 Function Definition: foo(i1[14][15][6]; ( global 14-element array of 15-element array of 6-element array of int) 0:16 Function Parameters: 0:16 'p' ( in 14-element array of 15-element array of 6-element array of int) 0:16 Sequence 0:16 Branch: Return with expression 0:16 'p' ( in 14-element array of 15-element array of 6-element array of int) 0:18 Function Definition: main( ( global void) 0:18 Function Parameters: 0:20 Sequence 0:20 direct index ( temp 14-element array of int) 0:20 'g' ( global unsized 4-element array of 14-element array of int) 0:20 Constant: 0:20 3 (const int) 0:21 direct index ( temp 14-element array of int) 0:21 'h' ( global unsized 3-element array of 14-element array of int) 0:21 Constant: 0:21 2 (const int) 0:24 Function Definition: bar( ( global 4-element array of 3-element array of 2-element array of float) 0:24 Function Parameters: 0:? Sequence 0:24 Branch: Return with expression 0:24 'a' ( temp 4-element array of 3-element array of 2-element array of float) 0:? Linker Objects 0:? 's' ( global structure{ global 2-element array of 3-element array of int a, global 5-element array of 3-element array of int b}) 0:? 'c' ( global 4-element array of 5-element array of int) 0:? 'd' ( global 8-element array of 5-element array of int) 0:? 'e' ( global 11-element array of 9-element array of int) 0:? 'f' ( global 13-element array of 9-element array of int) 0:? 'g' ( global unsized 4-element array of 14-element array of int) 0:? 'h' ( global unsized 3-element array of 14-element array of int) 0:? 'inbinst' ( in 4-element array of 5-element array of 6-element array of block{ in 8-element array of 9-element array of 7-element array of float f}) 0:? 'barm' ( global 4-element array of 3-element array of 2-element array of float) Linked fragment stage: Shader version: 450 ERROR: node is still EOpNull! 0:18 Function Definition: main( ( global void) 0:18 Function Parameters: 0:20 Sequence 0:20 direct index ( temp 14-element array of int) 0:20 'g' ( global 4-element array of 14-element array of int) 0:20 Constant: 0:20 3 (const int) 0:21 direct index ( temp 14-element array of int) 0:21 'h' ( global 3-element array of 14-element array of int) 0:21 Constant: 0:21 2 (const int) 0:? Linker Objects 0:? 's' ( global structure{ global 2-element array of 3-element array of int a, global 5-element array of 3-element array of int b}) 0:? 'c' ( global 4-element array of 5-element array of int) 0:? 'd' ( global 8-element array of 5-element array of int) 0:? 'e' ( global 11-element array of 9-element array of int) 0:? 'f' ( global 13-element array of 9-element array of int) 0:? 'g' ( global 4-element array of 14-element array of int) 0:? 'h' ( global 3-element array of 14-element array of int) 0:? 'inbinst' ( in 4-element array of 5-element array of 6-element array of block{ in 8-element array of 9-element array of 7-element array of float f}) 0:? 'barm' ( global 4-element array of 3-element array of 2-element array of float) glslang-16.0.0/Test/baseResults/negativeArraySize.comp.out000066400000000000000000000007601506534232700235740ustar00rootroot00000000000000negativeArraySize.comp ERROR: 0:9: '' : array size must be a positive integer ERROR: 1 compilation errors. No code generated. Shader version: 310 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:? Linker Objects Linked compute stage: Shader version: 310 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:? Linker Objects glslang-16.0.0/Test/baseResults/negativeWorkGroupSize.comp.out000066400000000000000000000042751506534232700244620ustar00rootroot00000000000000negativeWorkGroupSize.comp ERROR: 0:4: 'initializer' : can't read from gl_WorkGroupSize before a fixed workgroup size has been declared ERROR: 1 compilation errors. No code generated. Shader version: 460 local_size = (64, 1, 1) ERROR: node is still EOpNull! 0:3 Function Definition: fn( ( global void) 0:3 Function Parameters: 0:4 Sequence 0:4 Sequence 0:4 move second child to first child ( temp 3-component vector of uint) 0:4 'wgs' ( temp 3-component vector of uint) 0:4 Constant: 0:4 1 (const uint) 0:4 1 (const uint) 0:4 1 (const uint) 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:10 Sequence 0:10 Function Call: fn( ( global void) 0:11 Sequence 0:11 move second child to first child ( temp 3-component vector of uint) 0:11 'wgs' ( temp 3-component vector of uint) 0:11 Constant: 0:11 64 (const uint) 0:11 1 (const uint) 0:11 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 64 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) Linked compute stage: Shader version: 460 local_size = (64, 1, 1) ERROR: node is still EOpNull! 0:3 Function Definition: fn( ( global void) 0:3 Function Parameters: 0:4 Sequence 0:4 Sequence 0:4 move second child to first child ( temp 3-component vector of uint) 0:4 'wgs' ( temp 3-component vector of uint) 0:4 Constant: 0:4 1 (const uint) 0:4 1 (const uint) 0:4 1 (const uint) 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:10 Sequence 0:10 Function Call: fn( ( global void) 0:11 Sequence 0:11 move second child to first child ( temp 3-component vector of uint) 0:11 'wgs' ( temp 3-component vector of uint) 0:11 Constant: 0:11 64 (const uint) 0:11 1 (const uint) 0:11 1 (const uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 64 (const uint) 0:? 1 (const uint) 0:? 1 (const uint) glslang-16.0.0/Test/baseResults/newTexture.frag.out000066400000000000000000000631021506534232700222720ustar00rootroot00000000000000newTexture.frag Shader version: 430 0:? Sequence 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:38 Sequence 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'v' ( temp 4-component vector of float) 0:38 texture ( global 4-component vector of float) 0:38 's2D' ( uniform sampler2D) 0:38 'c2D' ( smooth in 2-component vector of float) 0:39 add second child into first child ( temp 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:39 textureProj ( global 4-component vector of float) 0:39 's3D' ( uniform sampler3D) 0:39 'c4D' ( smooth in 4-component vector of float) 0:40 add second child into first child ( temp 4-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:40 textureLod ( global 4-component vector of float) 0:40 's2DArray' ( uniform sampler2DArray) 0:40 'c3D' ( smooth in 3-component vector of float) 0:40 Constant: 0:40 1.200000 0:41 add second child into first child ( temp float) 0:41 direct index ( temp float) 0:41 'v' ( temp 4-component vector of float) 0:41 Constant: 0:41 1 (const int) 0:41 textureOffset ( global float) 0:41 's2DShadow' ( uniform sampler2DShadow) 0:41 'c3D' ( smooth in 3-component vector of float) 0:41 Constant: 0:41 3 (const int) 0:41 3 (const int) 0:41 'c1D' ( smooth in float) 0:42 add second child into first child ( temp 4-component vector of float) 0:42 'v' ( temp 4-component vector of float) 0:42 textureFetch ( global 4-component vector of float) 0:42 's3D' ( uniform sampler3D) 0:42 'ic3D' ( flat in 3-component vector of int) 0:42 'ic1D' ( flat in int) 0:43 add second child into first child ( temp 4-component vector of float) 0:43 'v' ( temp 4-component vector of float) 0:43 textureFetchOffset ( global 4-component vector of float) 0:43 's2D' ( uniform sampler2D) 0:43 'ic2D' ( flat in 2-component vector of int) 0:43 Constant: 0:43 4 (const int) 0:43 Constant: 0:43 3 (const int) 0:43 3 (const int) 0:44 add second child into first child ( temp 4-component vector of float) 0:44 'v' ( temp 4-component vector of float) 0:44 textureFetchOffset ( global 4-component vector of float) 0:44 'sr' ( uniform sampler2DRect) 0:44 'ic2D' ( flat in 2-component vector of int) 0:44 Constant: 0:44 4 (const int) 0:44 4 (const int) 0:45 add second child into first child ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( temp 4-component vector of float) 0:45 Constant: 0:45 1 (const int) 0:45 textureLodOffset ( global float) 0:45 's2DShadow' ( uniform sampler2DShadow) 0:45 'c3D' ( smooth in 3-component vector of float) 0:45 'c1D' ( smooth in float) 0:45 Constant: 0:45 3 (const int) 0:45 3 (const int) 0:46 add second child into first child ( temp 4-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:46 textureProjLodOffset ( global 4-component vector of float) 0:46 's2D' ( uniform sampler2D) 0:46 'c3D' ( smooth in 3-component vector of float) 0:46 'c1D' ( smooth in float) 0:46 Constant: 0:46 3 (const int) 0:46 3 (const int) 0:47 add second child into first child ( temp 4-component vector of float) 0:47 'v' ( temp 4-component vector of float) 0:47 textureGrad ( global 4-component vector of float) 0:47 'sCube' ( uniform samplerCube) 0:47 'c3D' ( smooth in 3-component vector of float) 0:47 'c3D' ( smooth in 3-component vector of float) 0:47 'c3D' ( smooth in 3-component vector of float) 0:48 add second child into first child ( temp float) 0:48 direct index ( temp float) 0:48 'v' ( temp 4-component vector of float) 0:48 Constant: 0:48 0 (const int) 0:48 textureGradOffset ( global float) 0:48 's2DArrayShadow' ( uniform sampler2DArrayShadow) 0:48 'c4D' ( smooth in 4-component vector of float) 0:48 'c2D' ( smooth in 2-component vector of float) 0:48 'c2D' ( smooth in 2-component vector of float) 0:48 Constant: 0:48 3 (const int) 0:48 3 (const int) 0:49 add second child into first child ( temp 4-component vector of float) 0:49 'v' ( temp 4-component vector of float) 0:49 textureProjGrad ( global 4-component vector of float) 0:49 's3D' ( uniform sampler3D) 0:49 'c4D' ( smooth in 4-component vector of float) 0:49 'c3D' ( smooth in 3-component vector of float) 0:49 'c3D' ( smooth in 3-component vector of float) 0:50 add second child into first child ( temp 4-component vector of float) 0:50 'v' ( temp 4-component vector of float) 0:50 textureProjGradOffset ( global 4-component vector of float) 0:50 's2D' ( uniform sampler2D) 0:50 'c3D' ( smooth in 3-component vector of float) 0:50 'c2D' ( smooth in 2-component vector of float) 0:50 'c2D' ( smooth in 2-component vector of float) 0:50 Constant: 0:50 3 (const int) 0:50 3 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of int) 0:52 'iv' ( temp 4-component vector of int) 0:52 texture ( global 4-component vector of int) 0:52 'is2D' ( uniform isampler2D) 0:52 'c2D' ( smooth in 2-component vector of float) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'v' ( temp 4-component vector of float) 0:53 Convert int to float ( temp 4-component vector of float) 0:53 'iv' ( temp 4-component vector of int) 0:54 move second child to first child ( temp 4-component vector of int) 0:54 'iv' ( temp 4-component vector of int) 0:54 textureProjOffset ( global 4-component vector of int) 0:54 'is2D' ( uniform isampler2D) 0:54 'c4D' ( smooth in 4-component vector of float) 0:54 Constant: 0:54 3 (const int) 0:54 3 (const int) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'v' ( temp 4-component vector of float) 0:55 Convert int to float ( temp 4-component vector of float) 0:55 'iv' ( temp 4-component vector of int) 0:56 move second child to first child ( temp 4-component vector of int) 0:56 'iv' ( temp 4-component vector of int) 0:56 textureProjLod ( global 4-component vector of int) 0:56 'is2D' ( uniform isampler2D) 0:56 'c3D' ( smooth in 3-component vector of float) 0:56 'c1D' ( smooth in float) 0:57 add second child into first child ( temp 4-component vector of float) 0:57 'v' ( temp 4-component vector of float) 0:57 Convert int to float ( temp 4-component vector of float) 0:57 'iv' ( temp 4-component vector of int) 0:58 move second child to first child ( temp 4-component vector of int) 0:58 'iv' ( temp 4-component vector of int) 0:58 textureProjGrad ( global 4-component vector of int) 0:58 'is2D' ( uniform isampler2D) 0:58 'c3D' ( smooth in 3-component vector of float) 0:58 'c2D' ( smooth in 2-component vector of float) 0:58 'c2D' ( smooth in 2-component vector of float) 0:59 add second child into first child ( temp 4-component vector of float) 0:59 'v' ( temp 4-component vector of float) 0:59 Convert int to float ( temp 4-component vector of float) 0:59 'iv' ( temp 4-component vector of int) 0:60 move second child to first child ( temp 4-component vector of int) 0:60 'iv' ( temp 4-component vector of int) 0:60 texture ( global 4-component vector of int) 0:60 'is3D' ( uniform isampler3D) 0:60 'c3D' ( smooth in 3-component vector of float) 0:60 Constant: 0:60 4.200000 0:61 add second child into first child ( temp 4-component vector of float) 0:61 'v' ( temp 4-component vector of float) 0:61 Convert int to float ( temp 4-component vector of float) 0:61 'iv' ( temp 4-component vector of int) 0:62 move second child to first child ( temp 4-component vector of int) 0:62 'iv' ( temp 4-component vector of int) 0:62 textureLod ( global 4-component vector of int) 0:62 'isCube' ( uniform isamplerCube) 0:62 'c3D' ( smooth in 3-component vector of float) 0:62 'c1D' ( smooth in float) 0:63 add second child into first child ( temp 4-component vector of float) 0:63 'v' ( temp 4-component vector of float) 0:63 Convert int to float ( temp 4-component vector of float) 0:63 'iv' ( temp 4-component vector of int) 0:64 move second child to first child ( temp 4-component vector of int) 0:64 'iv' ( temp 4-component vector of int) 0:64 textureFetch ( global 4-component vector of int) 0:64 'is2DArray' ( uniform isampler2DArray) 0:64 'ic3D' ( flat in 3-component vector of int) 0:64 'ic1D' ( flat in int) 0:65 add second child into first child ( temp 4-component vector of float) 0:65 'v' ( temp 4-component vector of float) 0:65 Convert int to float ( temp 4-component vector of float) 0:65 'iv' ( temp 4-component vector of int) 0:66 add second child into first child ( temp 4-component vector of int) 0:66 'iv' ( temp 4-component vector of int) 0:66 textureFetch ( global 4-component vector of int) 0:66 'is2Dms' ( uniform isampler2DMS) 0:66 'ic2D' ( flat in 2-component vector of int) 0:66 'ic1D' ( flat in int) 0:67 add second child into first child ( temp 4-component vector of float) 0:67 'v' ( temp 4-component vector of float) 0:67 Convert int to float ( temp 4-component vector of float) 0:67 'iv' ( temp 4-component vector of int) 0:68 add second child into first child ( temp 4-component vector of float) 0:68 'v' ( temp 4-component vector of float) 0:68 textureFetch ( global 4-component vector of float) 0:68 'sb' ( uniform samplerBuffer) 0:68 'ic1D' ( flat in int) 0:69 add second child into first child ( temp 4-component vector of float) 0:69 'v' ( temp 4-component vector of float) 0:69 textureFetch ( global 4-component vector of float) 0:69 'sr' ( uniform sampler2DRect) 0:69 'ic2D' ( flat in 2-component vector of int) 0:71 Sequence 0:71 move second child to first child ( temp 2-component vector of int) 0:71 'iv2' ( temp 2-component vector of int) 0:71 textureSize ( global 2-component vector of int) 0:71 'sCubeShadow' ( uniform samplerCubeShadow) 0:71 Constant: 0:71 2 (const int) 0:74 move second child to first child ( temp 4-component vector of float) 0:74 'FragData' ( out 4-component vector of float) 0:74 add ( temp 4-component vector of float) 0:74 'v' ( temp 4-component vector of float) 0:74 Construct vec4 ( temp 4-component vector of float) 0:74 Convert int to float ( temp 2-component vector of float) 0:74 'iv2' ( temp 2-component vector of int) 0:74 Constant: 0:74 0.000000 0:74 Constant: 0:74 0.000000 0:? Linker Objects 0:? 'sb' ( uniform samplerBuffer) 0:? 'sr' ( uniform sampler2DRect) 0:? 's2D' ( uniform sampler2D) 0:? 's3D' ( uniform sampler3D) 0:? 'sCube' ( uniform samplerCube) 0:? 'sCubeShadow' ( uniform samplerCubeShadow) 0:? 's2DShadow' ( uniform sampler2DShadow) 0:? 's2DArray' ( uniform sampler2DArray) 0:? 's2DArrayShadow' ( uniform sampler2DArrayShadow) 0:? 'is2D' ( uniform isampler2D) 0:? 'is3D' ( uniform isampler3D) 0:? 'isCube' ( uniform isamplerCube) 0:? 'is2DArray' ( uniform isampler2DArray) 0:? 'is2Dms' ( uniform isampler2DMS) 0:? 'us2D' ( uniform usampler2D) 0:? 'us3D' ( uniform usampler3D) 0:? 'usCube' ( uniform usamplerCube) 0:? 'us2DArray' ( uniform usampler2DArray) 0:? 'c1D' ( smooth in float) 0:? 'c2D' ( smooth in 2-component vector of float) 0:? 'c3D' ( smooth in 3-component vector of float) 0:? 'c4D' ( smooth in 4-component vector of float) 0:? 'ic1D' ( flat in int) 0:? 'ic2D' ( flat in 2-component vector of int) 0:? 'ic3D' ( flat in 3-component vector of int) 0:? 'ic4D' ( flat in 4-component vector of int) 0:? 'FragData' ( out 4-component vector of float) Linked fragment stage: Shader version: 430 0:? Sequence 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:38 Sequence 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'v' ( temp 4-component vector of float) 0:38 texture ( global 4-component vector of float) 0:38 's2D' ( uniform sampler2D) 0:38 'c2D' ( smooth in 2-component vector of float) 0:39 add second child into first child ( temp 4-component vector of float) 0:39 'v' ( temp 4-component vector of float) 0:39 textureProj ( global 4-component vector of float) 0:39 's3D' ( uniform sampler3D) 0:39 'c4D' ( smooth in 4-component vector of float) 0:40 add second child into first child ( temp 4-component vector of float) 0:40 'v' ( temp 4-component vector of float) 0:40 textureLod ( global 4-component vector of float) 0:40 's2DArray' ( uniform sampler2DArray) 0:40 'c3D' ( smooth in 3-component vector of float) 0:40 Constant: 0:40 1.200000 0:41 add second child into first child ( temp float) 0:41 direct index ( temp float) 0:41 'v' ( temp 4-component vector of float) 0:41 Constant: 0:41 1 (const int) 0:41 textureOffset ( global float) 0:41 's2DShadow' ( uniform sampler2DShadow) 0:41 'c3D' ( smooth in 3-component vector of float) 0:41 Constant: 0:41 3 (const int) 0:41 3 (const int) 0:41 'c1D' ( smooth in float) 0:42 add second child into first child ( temp 4-component vector of float) 0:42 'v' ( temp 4-component vector of float) 0:42 textureFetch ( global 4-component vector of float) 0:42 's3D' ( uniform sampler3D) 0:42 'ic3D' ( flat in 3-component vector of int) 0:42 'ic1D' ( flat in int) 0:43 add second child into first child ( temp 4-component vector of float) 0:43 'v' ( temp 4-component vector of float) 0:43 textureFetchOffset ( global 4-component vector of float) 0:43 's2D' ( uniform sampler2D) 0:43 'ic2D' ( flat in 2-component vector of int) 0:43 Constant: 0:43 4 (const int) 0:43 Constant: 0:43 3 (const int) 0:43 3 (const int) 0:44 add second child into first child ( temp 4-component vector of float) 0:44 'v' ( temp 4-component vector of float) 0:44 textureFetchOffset ( global 4-component vector of float) 0:44 'sr' ( uniform sampler2DRect) 0:44 'ic2D' ( flat in 2-component vector of int) 0:44 Constant: 0:44 4 (const int) 0:44 4 (const int) 0:45 add second child into first child ( temp float) 0:45 direct index ( temp float) 0:45 'v' ( temp 4-component vector of float) 0:45 Constant: 0:45 1 (const int) 0:45 textureLodOffset ( global float) 0:45 's2DShadow' ( uniform sampler2DShadow) 0:45 'c3D' ( smooth in 3-component vector of float) 0:45 'c1D' ( smooth in float) 0:45 Constant: 0:45 3 (const int) 0:45 3 (const int) 0:46 add second child into first child ( temp 4-component vector of float) 0:46 'v' ( temp 4-component vector of float) 0:46 textureProjLodOffset ( global 4-component vector of float) 0:46 's2D' ( uniform sampler2D) 0:46 'c3D' ( smooth in 3-component vector of float) 0:46 'c1D' ( smooth in float) 0:46 Constant: 0:46 3 (const int) 0:46 3 (const int) 0:47 add second child into first child ( temp 4-component vector of float) 0:47 'v' ( temp 4-component vector of float) 0:47 textureGrad ( global 4-component vector of float) 0:47 'sCube' ( uniform samplerCube) 0:47 'c3D' ( smooth in 3-component vector of float) 0:47 'c3D' ( smooth in 3-component vector of float) 0:47 'c3D' ( smooth in 3-component vector of float) 0:48 add second child into first child ( temp float) 0:48 direct index ( temp float) 0:48 'v' ( temp 4-component vector of float) 0:48 Constant: 0:48 0 (const int) 0:48 textureGradOffset ( global float) 0:48 's2DArrayShadow' ( uniform sampler2DArrayShadow) 0:48 'c4D' ( smooth in 4-component vector of float) 0:48 'c2D' ( smooth in 2-component vector of float) 0:48 'c2D' ( smooth in 2-component vector of float) 0:48 Constant: 0:48 3 (const int) 0:48 3 (const int) 0:49 add second child into first child ( temp 4-component vector of float) 0:49 'v' ( temp 4-component vector of float) 0:49 textureProjGrad ( global 4-component vector of float) 0:49 's3D' ( uniform sampler3D) 0:49 'c4D' ( smooth in 4-component vector of float) 0:49 'c3D' ( smooth in 3-component vector of float) 0:49 'c3D' ( smooth in 3-component vector of float) 0:50 add second child into first child ( temp 4-component vector of float) 0:50 'v' ( temp 4-component vector of float) 0:50 textureProjGradOffset ( global 4-component vector of float) 0:50 's2D' ( uniform sampler2D) 0:50 'c3D' ( smooth in 3-component vector of float) 0:50 'c2D' ( smooth in 2-component vector of float) 0:50 'c2D' ( smooth in 2-component vector of float) 0:50 Constant: 0:50 3 (const int) 0:50 3 (const int) 0:52 Sequence 0:52 move second child to first child ( temp 4-component vector of int) 0:52 'iv' ( temp 4-component vector of int) 0:52 texture ( global 4-component vector of int) 0:52 'is2D' ( uniform isampler2D) 0:52 'c2D' ( smooth in 2-component vector of float) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'v' ( temp 4-component vector of float) 0:53 Convert int to float ( temp 4-component vector of float) 0:53 'iv' ( temp 4-component vector of int) 0:54 move second child to first child ( temp 4-component vector of int) 0:54 'iv' ( temp 4-component vector of int) 0:54 textureProjOffset ( global 4-component vector of int) 0:54 'is2D' ( uniform isampler2D) 0:54 'c4D' ( smooth in 4-component vector of float) 0:54 Constant: 0:54 3 (const int) 0:54 3 (const int) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'v' ( temp 4-component vector of float) 0:55 Convert int to float ( temp 4-component vector of float) 0:55 'iv' ( temp 4-component vector of int) 0:56 move second child to first child ( temp 4-component vector of int) 0:56 'iv' ( temp 4-component vector of int) 0:56 textureProjLod ( global 4-component vector of int) 0:56 'is2D' ( uniform isampler2D) 0:56 'c3D' ( smooth in 3-component vector of float) 0:56 'c1D' ( smooth in float) 0:57 add second child into first child ( temp 4-component vector of float) 0:57 'v' ( temp 4-component vector of float) 0:57 Convert int to float ( temp 4-component vector of float) 0:57 'iv' ( temp 4-component vector of int) 0:58 move second child to first child ( temp 4-component vector of int) 0:58 'iv' ( temp 4-component vector of int) 0:58 textureProjGrad ( global 4-component vector of int) 0:58 'is2D' ( uniform isampler2D) 0:58 'c3D' ( smooth in 3-component vector of float) 0:58 'c2D' ( smooth in 2-component vector of float) 0:58 'c2D' ( smooth in 2-component vector of float) 0:59 add second child into first child ( temp 4-component vector of float) 0:59 'v' ( temp 4-component vector of float) 0:59 Convert int to float ( temp 4-component vector of float) 0:59 'iv' ( temp 4-component vector of int) 0:60 move second child to first child ( temp 4-component vector of int) 0:60 'iv' ( temp 4-component vector of int) 0:60 texture ( global 4-component vector of int) 0:60 'is3D' ( uniform isampler3D) 0:60 'c3D' ( smooth in 3-component vector of float) 0:60 Constant: 0:60 4.200000 0:61 add second child into first child ( temp 4-component vector of float) 0:61 'v' ( temp 4-component vector of float) 0:61 Convert int to float ( temp 4-component vector of float) 0:61 'iv' ( temp 4-component vector of int) 0:62 move second child to first child ( temp 4-component vector of int) 0:62 'iv' ( temp 4-component vector of int) 0:62 textureLod ( global 4-component vector of int) 0:62 'isCube' ( uniform isamplerCube) 0:62 'c3D' ( smooth in 3-component vector of float) 0:62 'c1D' ( smooth in float) 0:63 add second child into first child ( temp 4-component vector of float) 0:63 'v' ( temp 4-component vector of float) 0:63 Convert int to float ( temp 4-component vector of float) 0:63 'iv' ( temp 4-component vector of int) 0:64 move second child to first child ( temp 4-component vector of int) 0:64 'iv' ( temp 4-component vector of int) 0:64 textureFetch ( global 4-component vector of int) 0:64 'is2DArray' ( uniform isampler2DArray) 0:64 'ic3D' ( flat in 3-component vector of int) 0:64 'ic1D' ( flat in int) 0:65 add second child into first child ( temp 4-component vector of float) 0:65 'v' ( temp 4-component vector of float) 0:65 Convert int to float ( temp 4-component vector of float) 0:65 'iv' ( temp 4-component vector of int) 0:66 add second child into first child ( temp 4-component vector of int) 0:66 'iv' ( temp 4-component vector of int) 0:66 textureFetch ( global 4-component vector of int) 0:66 'is2Dms' ( uniform isampler2DMS) 0:66 'ic2D' ( flat in 2-component vector of int) 0:66 'ic1D' ( flat in int) 0:67 add second child into first child ( temp 4-component vector of float) 0:67 'v' ( temp 4-component vector of float) 0:67 Convert int to float ( temp 4-component vector of float) 0:67 'iv' ( temp 4-component vector of int) 0:68 add second child into first child ( temp 4-component vector of float) 0:68 'v' ( temp 4-component vector of float) 0:68 textureFetch ( global 4-component vector of float) 0:68 'sb' ( uniform samplerBuffer) 0:68 'ic1D' ( flat in int) 0:69 add second child into first child ( temp 4-component vector of float) 0:69 'v' ( temp 4-component vector of float) 0:69 textureFetch ( global 4-component vector of float) 0:69 'sr' ( uniform sampler2DRect) 0:69 'ic2D' ( flat in 2-component vector of int) 0:71 Sequence 0:71 move second child to first child ( temp 2-component vector of int) 0:71 'iv2' ( temp 2-component vector of int) 0:71 textureSize ( global 2-component vector of int) 0:71 'sCubeShadow' ( uniform samplerCubeShadow) 0:71 Constant: 0:71 2 (const int) 0:74 move second child to first child ( temp 4-component vector of float) 0:74 'FragData' ( out 4-component vector of float) 0:74 add ( temp 4-component vector of float) 0:74 'v' ( temp 4-component vector of float) 0:74 Construct vec4 ( temp 4-component vector of float) 0:74 Convert int to float ( temp 2-component vector of float) 0:74 'iv2' ( temp 2-component vector of int) 0:74 Constant: 0:74 0.000000 0:74 Constant: 0:74 0.000000 0:? Linker Objects 0:? 'sb' ( uniform samplerBuffer) 0:? 'sr' ( uniform sampler2DRect) 0:? 's2D' ( uniform sampler2D) 0:? 's3D' ( uniform sampler3D) 0:? 'sCube' ( uniform samplerCube) 0:? 'sCubeShadow' ( uniform samplerCubeShadow) 0:? 's2DShadow' ( uniform sampler2DShadow) 0:? 's2DArray' ( uniform sampler2DArray) 0:? 's2DArrayShadow' ( uniform sampler2DArrayShadow) 0:? 'is2D' ( uniform isampler2D) 0:? 'is3D' ( uniform isampler3D) 0:? 'isCube' ( uniform isamplerCube) 0:? 'is2DArray' ( uniform isampler2DArray) 0:? 'is2Dms' ( uniform isampler2DMS) 0:? 'us2D' ( uniform usampler2D) 0:? 'us3D' ( uniform usampler3D) 0:? 'usCube' ( uniform usamplerCube) 0:? 'us2DArray' ( uniform usampler2DArray) 0:? 'c1D' ( smooth in float) 0:? 'c2D' ( smooth in 2-component vector of float) 0:? 'c3D' ( smooth in 3-component vector of float) 0:? 'c4D' ( smooth in 4-component vector of float) 0:? 'ic1D' ( flat in int) 0:? 'ic2D' ( flat in 2-component vector of int) 0:? 'ic3D' ( flat in 3-component vector of int) 0:? 'ic4D' ( flat in 4-component vector of int) 0:? 'FragData' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/noMain.vert.out000066400000000000000000000021471506534232700214040ustar00rootroot00000000000000noMain.vert Shader version: 300 0:? Sequence 0:3 Function Definition: foo( ( global void) 0:3 Function Parameters: 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) mains.frag ERROR: 0:7: 'main' : function already has a body ERROR: 1 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:? Linker Objects Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point Linked fragment stage: Shader version: 300 0:? Sequence 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Shader version: 300 ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:? Linker Objects glslang-16.0.0/Test/baseResults/noMatchingFunction.frag.out000066400000000000000000000034271506534232700237210ustar00rootroot00000000000000noMatchingFunction.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) glslang-16.0.0/Test/baseResults/nonSquare.vert.out000066400000000000000000000150611506534232700221350ustar00rootroot00000000000000nonSquare.vert Shader version: 120 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp 2-component vector of float) 0:20 'a' ( temp 2-component vector of float) 0:20 vector-times-matrix ( temp 2-component vector of float) 0:20 'v3' ( in 3-component vector of float) 0:20 'm23' ( temp 2X3 matrix of float) 0:21 move second child to first child ( temp 2-component vector of float) 0:21 'b' ( temp 2-component vector of float) 0:21 matrix-times-vector ( temp 2-component vector of float) 0:21 'm32' ( uniform 3X2 matrix of float) 0:21 'v3' ( in 3-component vector of float) 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'gl_Position' ( gl_Position 4-component vector of float Position) 0:24 add ( temp 4-component vector of float) 0:24 add ( temp 4-component vector of float) 0:24 add ( temp 4-component vector of float) 0:23 add ( temp 4-component vector of float) 0:23 Construct vec4 ( temp 4-component vector of float) 0:23 matrix-times-vector ( temp 3-component vector of float) 0:23 matrix-multiply ( temp 3X3 matrix of float) 0:23 'm23' ( temp 2X3 matrix of float) 0:23 'm32' ( uniform 3X2 matrix of float) 0:23 'v3' ( in 3-component vector of float) 0:23 Constant: 0:23 0.000000 0:24 matrix-times-vector ( temp 4-component vector of float) 0:24 Constant: 0:24 3.000000 0:24 6.000000 0:24 0.000000 0:24 0.000000 0:24 9.000000 0:24 12.000000 0:24 0.000000 0:24 0.000000 0:24 15.000000 0:24 18.000000 0:24 0.000000 0:24 0.000000 0:24 21.000000 0:24 24.000000 0:24 0.000000 0:24 0.000000 0:24 'v4' ( in 4-component vector of float) 0:24 Constant: 0:24 50.000000 0:24 110.000000 0:24 170.000000 0:24 230.000000 0:24 Constant: 0:24 30.000000 0:24 60.000000 0:24 0.000000 0:24 0.000000 0:24 Constant: 0:24 20.000000 0:24 10.000000 0:24 6.000000 0:24 5.000000 0:? Linker Objects 0:? 'v3' ( in 3-component vector of float) 0:? 'v4' ( in 4-component vector of float) 0:? 'm32' ( uniform 3X2 matrix of float) 0:? 'cv2' ( const 2-component vector of float) 0:? 10.000000 0:? 20.000000 0:? 'm24' ( const 2X4 matrix of float) 0:? 3.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 3.000000 0:? 0.000000 0:? 0.000000 0:? 'm42' ( const 4X2 matrix of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 5.000000 0:? 6.000000 0:? 7.000000 0:? 8.000000 Linked vertex stage: Shader version: 120 0:? Sequence 0:15 Function Definition: main( ( global void) 0:15 Function Parameters: 0:? Sequence 0:20 move second child to first child ( temp 2-component vector of float) 0:20 'a' ( temp 2-component vector of float) 0:20 vector-times-matrix ( temp 2-component vector of float) 0:20 'v3' ( in 3-component vector of float) 0:20 'm23' ( temp 2X3 matrix of float) 0:21 move second child to first child ( temp 2-component vector of float) 0:21 'b' ( temp 2-component vector of float) 0:21 matrix-times-vector ( temp 2-component vector of float) 0:21 'm32' ( uniform 3X2 matrix of float) 0:21 'v3' ( in 3-component vector of float) 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'gl_Position' ( gl_Position 4-component vector of float Position) 0:24 add ( temp 4-component vector of float) 0:24 add ( temp 4-component vector of float) 0:24 add ( temp 4-component vector of float) 0:23 add ( temp 4-component vector of float) 0:23 Construct vec4 ( temp 4-component vector of float) 0:23 matrix-times-vector ( temp 3-component vector of float) 0:23 matrix-multiply ( temp 3X3 matrix of float) 0:23 'm23' ( temp 2X3 matrix of float) 0:23 'm32' ( uniform 3X2 matrix of float) 0:23 'v3' ( in 3-component vector of float) 0:23 Constant: 0:23 0.000000 0:24 matrix-times-vector ( temp 4-component vector of float) 0:24 Constant: 0:24 3.000000 0:24 6.000000 0:24 0.000000 0:24 0.000000 0:24 9.000000 0:24 12.000000 0:24 0.000000 0:24 0.000000 0:24 15.000000 0:24 18.000000 0:24 0.000000 0:24 0.000000 0:24 21.000000 0:24 24.000000 0:24 0.000000 0:24 0.000000 0:24 'v4' ( in 4-component vector of float) 0:24 Constant: 0:24 50.000000 0:24 110.000000 0:24 170.000000 0:24 230.000000 0:24 Constant: 0:24 30.000000 0:24 60.000000 0:24 0.000000 0:24 0.000000 0:24 Constant: 0:24 20.000000 0:24 10.000000 0:24 6.000000 0:24 5.000000 0:? Linker Objects 0:? 'v3' ( in 3-component vector of float) 0:? 'v4' ( in 4-component vector of float) 0:? 'm32' ( uniform 3X2 matrix of float) 0:? 'cv2' ( const 2-component vector of float) 0:? 10.000000 0:? 20.000000 0:? 'm24' ( const 2X4 matrix of float) 0:? 3.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 0.000000 0:? 3.000000 0:? 0.000000 0:? 0.000000 0:? 'm42' ( const 4X2 matrix of float) 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 0:? 5.000000 0:? 6.000000 0:? 7.000000 0:? 8.000000 glslang-16.0.0/Test/baseResults/nonVulkan.frag.out000066400000000000000000000020701506534232700220700ustar00rootroot00000000000000nonVulkan.frag ERROR: 0:3: 'constant_id' : only allowed when generating SPIR-V ERROR: 0:4: 'input_attachment_index' : only allowed when using GLSL for Vulkan ERROR: 0:4: 'input_attachment_index' : can only be used with a subpass ERROR: 0:5: 'push_constant' : only allowed when using GLSL for Vulkan ERROR: 4 compilation errors. No code generated. Shader version: 450 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'arraySize' ( specialization-constant const int) 0:? 12 (const int) 0:? 'foo' ( temp int) 0:? 'ubi' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform int a}) Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 450 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'arraySize' ( specialization-constant const int) 0:? 12 (const int) 0:? 'foo' ( temp int) 0:? 'ubi' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform int a}) glslang-16.0.0/Test/baseResults/nonuniform.frag.out000066400000000000000000000112451506534232700223130ustar00rootroot00000000000000nonuniform.frag ERROR: 0:10: 'nonuniformEXT' : for non-parameter, can only apply to 'in' or no storage qualifier ERROR: 0:11: 'nonuniformEXT' : for non-parameter, can only apply to 'in' or no storage qualifier ERROR: 0:12: 'nonuniformEXT' : for non-parameter, can only apply to 'in' or no storage qualifier ERROR: 0:22: 'nonuniformEXT' : for non-parameter, can only apply to 'in' or no storage qualifier ERROR: 0:28: 'constructor' : too many arguments ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' nonuniform temp int' ERROR: 0:29: 'constructor' : not enough data provided for construction ERROR: 0:29: 'assign' : cannot convert from ' const float' to ' nonuniform temp int' ERROR: 0:32: 'nonuniformEXT' : not allowed on block or structure members ERROR: 0:33: 'nonuniformEXT' : not allowed on block or structure members ERROR: 10 compilation errors. No code generated. Shader version: 450 Requested GL_EXT_nonuniform_qualifier ERROR: node is still EOpNull! 0:14 Function Definition: foo(i1;i1; ( nonuniform temp int) 0:14 Function Parameters: 0:14 'nupi' ( nonuniform in int) 0:14 'f' ( nonuniform out int) 0:16 Sequence 0:16 Branch: Return with expression 0:16 'nupi' ( nonuniform in int) 0:19 Function Definition: main( ( global void) 0:19 Function Parameters: 0:? Sequence 0:24 Function Call: foo(i1;i1; ( nonuniform temp int) 0:24 'nu_li' ( nonuniform temp int) 0:24 'nu_li' ( nonuniform temp int) 0:27 move second child to first child ( temp int) 0:27 'nu_li' ( nonuniform temp int) 0:27 add ( nonuniform temp int) 0:27 copy object ( nonuniform temp int) 0:27 'a' ( temp int) 0:27 copy object ( nonuniform temp int) 0:27 component-wise multiply ( temp int) 0:27 'a' ( temp int) 0:27 Constant: 0:27 2 (const int) 0:28 'nu_li' ( nonuniform temp int) 0:29 'nu_li' ( nonuniform temp int) 0:30 move second child to first child ( temp int) 0:30 'nu_li' ( nonuniform temp int) 0:30 indirect index ( nonuniform temp int) 0:30 'table' ( temp 5-element array of int) 0:30 copy object ( nonuniform temp int) 0:30 Constant: 0:30 3 (const int) 0:? Linker Objects 0:? 'nonuniformEXT' ( global int) 0:? 'nu_inv4' ( smooth nonuniform in 4-component vector of float) 0:? 'nu_gf' ( nonuniform temp float) 0:? 'nu_outv4' ( nonuniform out 4-component vector of float) 0:? 'nu_uv4' ( nonuniform uniform 4-component vector of float) 0:? 'nu_constf' ( nonuniform const float) 0:? 1.000000 0:? 'ins' (layout( location=1) smooth in structure{ global float a, temp float b}) 0:? 'inb' (layout( location=3) in block{ in float a, in float b}) Linked fragment stage: Shader version: 450 Requested GL_EXT_nonuniform_qualifier ERROR: node is still EOpNull! 0:14 Function Definition: foo(i1;i1; ( nonuniform temp int) 0:14 Function Parameters: 0:14 'nupi' ( nonuniform in int) 0:14 'f' ( nonuniform out int) 0:16 Sequence 0:16 Branch: Return with expression 0:16 'nupi' ( nonuniform in int) 0:19 Function Definition: main( ( global void) 0:19 Function Parameters: 0:? Sequence 0:24 Function Call: foo(i1;i1; ( nonuniform temp int) 0:24 'nu_li' ( nonuniform temp int) 0:24 'nu_li' ( nonuniform temp int) 0:27 move second child to first child ( temp int) 0:27 'nu_li' ( nonuniform temp int) 0:27 add ( nonuniform temp int) 0:27 copy object ( nonuniform temp int) 0:27 'a' ( temp int) 0:27 copy object ( nonuniform temp int) 0:27 component-wise multiply ( temp int) 0:27 'a' ( temp int) 0:27 Constant: 0:27 2 (const int) 0:28 'nu_li' ( nonuniform temp int) 0:29 'nu_li' ( nonuniform temp int) 0:30 move second child to first child ( temp int) 0:30 'nu_li' ( nonuniform temp int) 0:30 indirect index ( nonuniform temp int) 0:30 'table' ( temp 5-element array of int) 0:30 copy object ( nonuniform temp int) 0:30 Constant: 0:30 3 (const int) 0:? Linker Objects 0:? 'nonuniformEXT' ( global int) 0:? 'nu_inv4' ( smooth nonuniform in 4-component vector of float) 0:? 'nu_gf' ( nonuniform temp float) 0:? 'nu_outv4' ( nonuniform out 4-component vector of float) 0:? 'nu_uv4' ( nonuniform uniform 4-component vector of float) 0:? 'nu_constf' ( nonuniform const float) 0:? 1.000000 0:? 'ins' (layout( location=1) smooth in structure{ global float a, temp float b}) 0:? 'inb' (layout( location=3) in block{ in float a, in float b}) glslang-16.0.0/Test/baseResults/nosuffix.out000066400000000000000000000006601506534232700210430ustar00rootroot00000000000000nosuffix 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 glslang-16.0.0/Test/baseResults/numeral.frag.out000066400000000000000000000656021506534232700215720ustar00rootroot00000000000000numeral.frag ERROR: 0:14: '' : octal literal digit too large ERROR: 0:15: '' : octal literal digit too large ERROR: 0:16: '' : octal literal digit too large ERROR: 0:17: '' : octal literal too big ERROR: 0:18: '' : octal literal too big ERROR: 0:23: '' : octal literal digit too large ERROR: 0:24: '' : octal literal digit too large ERROR: 0:49: '' : bad digit in hexadecimal literal ERROR: 0:50: '' : hexadecimal literal too big ERROR: 0:88: '' : float literal needs a decimal point or exponent ERROR: 0:98: '' : numeric literal too big ERROR: 0:101: '' : numeric literal too big ERROR: 0:104: '#' : preprocessor directive cannot be preceded by another token ERROR: 0:104: '' : syntax error, unexpected end of file, expecting COMMA or SEMICOLON ERROR: 14 compilation errors. No code generated. Shader version: 400 ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:5 Sequence 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'o00' ( temp int) 0:5 Constant: 0:5 0 (const int) 0:6 Sequence 0:6 move second child to first child ( temp int) 0:6 'o000' ( temp int) 0:6 Constant: 0:6 0 (const int) 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'o0000' ( temp int) 0:7 Constant: 0:7 0 (const int) 0:8 Sequence 0:8 move second child to first child ( temp int) 0:8 'o5' ( temp int) 0:8 Constant: 0:8 5 (const int) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'o05' ( temp int) 0:9 Constant: 0:9 5 (const int) 0:10 Sequence 0:10 move second child to first child ( temp int) 0:10 'o006' ( temp int) 0:10 Constant: 0:10 6 (const int) 0:11 Sequence 0:11 move second child to first child ( temp int) 0:11 'o7' ( temp int) 0:11 Constant: 0:11 7 (const int) 0:12 Sequence 0:12 move second child to first child ( temp int) 0:12 'o58' ( temp int) 0:12 Constant: 0:12 58 (const int) 0:13 Sequence 0:13 move second child to first child ( temp int) 0:13 'omax' ( temp int) 0:13 Constant: 0:13 -1 (const int) 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'o8' ( temp int) 0:14 Constant: 0:14 0 (const int) 0:15 Sequence 0:15 move second child to first child ( temp int) 0:15 'o08' ( temp int) 0:15 Constant: 0:15 0 (const int) 0:16 Sequence 0:16 move second child to first child ( temp int) 0:16 'o009' ( temp int) 0:16 Constant: 0:16 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'obig' ( temp int) 0:17 Constant: 0:17 -1662398820 (const int) 0:18 Sequence 0:18 move second child to first child ( temp int) 0:18 'omax1' ( temp int) 0:18 Constant: 0:18 0 (const int) 0:20 Sequence 0:20 move second child to first child ( temp uint) 0:20 'uo5' ( temp uint) 0:20 Constant: 0:20 5 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp uint) 0:21 'uo6' ( temp uint) 0:21 Constant: 0:21 6 (const uint) 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'uo7' ( temp uint) 0:22 Constant: 0:22 7 (const uint) 0:23 Sequence 0:23 move second child to first child ( temp uint) 0:23 'uo8' ( temp uint) 0:23 Constant: 0:23 0 (const uint) 0:24 Sequence 0:24 move second child to first child ( temp uint) 0:24 'uo9' ( temp uint) 0:24 Constant: 0:24 0 (const uint) 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'h0' ( temp int) 0:26 Constant: 0:26 0 (const int) 0:27 Sequence 0:27 move second child to first child ( temp int) 0:27 'h00' ( temp int) 0:27 Constant: 0:27 0 (const int) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'h000' ( temp int) 0:28 Constant: 0:28 0 (const int) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'h1' ( temp int) 0:29 Constant: 0:29 1 (const int) 0:30 Sequence 0:30 move second child to first child ( temp int) 0:30 'h2' ( temp int) 0:30 Constant: 0:30 2 (const int) 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'h300' ( temp int) 0:31 Constant: 0:31 768 (const int) 0:32 Sequence 0:32 move second child to first child ( temp int) 0:32 'hABCDEF' ( temp int) 0:32 Constant: 0:32 11259375 (const int) 0:33 Sequence 0:33 move second child to first child ( temp int) 0:33 'hFFFFFFFF' ( temp int) 0:33 Constant: 0:33 -1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp int) 0:34 'h12345678' ( temp int) 0:34 Constant: 0:34 12345678 (const int) 0:35 Sequence 0:35 move second child to first child ( temp int) 0:35 'hToBeOrNotToBe' ( temp int) 0:35 Constant: 0:35 -1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp uint) 0:37 'uh0' ( temp uint) 0:37 Constant: 0:37 0 (const uint) 0:38 Sequence 0:38 move second child to first child ( temp uint) 0:38 'uhg' ( temp uint) 0:38 Constant: 0:38 12 (const uint) 0:39 Sequence 0:39 move second child to first child ( temp uint) 0:39 'uh000' ( temp uint) 0:39 Constant: 0:39 0 (const uint) 0:40 Sequence 0:40 move second child to first child ( temp uint) 0:40 'uh1' ( temp uint) 0:40 Constant: 0:40 1 (const uint) 0:41 Sequence 0:41 move second child to first child ( temp uint) 0:41 'uh2' ( temp uint) 0:41 Constant: 0:41 2 (const uint) 0:42 Sequence 0:42 move second child to first child ( temp uint) 0:42 'uh300' ( temp uint) 0:42 Constant: 0:42 768 (const uint) 0:43 Sequence 0:43 move second child to first child ( temp uint) 0:43 'uhABCDEF' ( temp uint) 0:43 Constant: 0:43 11259375 (const uint) 0:44 Sequence 0:44 move second child to first child ( temp uint) 0:44 'uhFFFFFFFF' ( temp uint) 0:44 Constant: 0:44 4294967295 (const uint) 0:45 Sequence 0:45 move second child to first child ( temp uint) 0:45 'uh12345678' ( temp uint) 0:45 Constant: 0:45 12345678 (const uint) 0:46 Sequence 0:46 move second child to first child ( temp uint) 0:46 'uhToBeOrNotToBe' ( temp uint) 0:46 Constant: 0:46 4294967295 (const uint) 0:49 Sequence 0:49 move second child to first child ( temp int) 0:49 'he2' ( temp int) 0:49 Constant: 0:49 0 (const int) 0:50 Sequence 0:50 move second child to first child ( temp int) 0:50 'hbig' ( temp int) 0:50 Constant: 0:50 -15 (const int) 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'f1' ( temp float) 0:52 Constant: 0:52 1.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'f2' ( temp float) 0:53 Constant: 0:53 2.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'f3' ( temp float) 0:54 Constant: 0:54 3.000000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'f4' ( temp float) 0:55 Constant: 0:55 4.000000 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'f5' ( temp float) 0:56 Constant: 0:56 5.000000 0:57 Sequence 0:57 move second child to first child ( temp float) 0:57 'f6' ( temp float) 0:57 Constant: 0:57 6.000000 0:58 Sequence 0:58 move second child to first child ( temp float) 0:58 'f7' ( temp float) 0:58 Constant: 0:58 7.000000 0:59 Sequence 0:59 move second child to first child ( temp float) 0:59 'f8' ( temp float) 0:59 Constant: 0:59 8.000000 0:60 Sequence 0:60 move second child to first child ( temp float) 0:60 'f9' ( temp float) 0:60 Constant: 0:60 9.000000 0:61 Sequence 0:61 move second child to first child ( temp float) 0:61 'f10' ( temp float) 0:61 Constant: 0:61 10.000000 0:62 Sequence 0:62 move second child to first child ( temp float) 0:62 'f11' ( temp float) 0:62 Constant: 0:62 11.000000 0:63 Sequence 0:63 move second child to first child ( temp float) 0:63 'f12' ( temp float) 0:63 Constant: 0:63 12.000000 0:64 Sequence 0:64 move second child to first child ( temp float) 0:64 'f543' ( temp float) 0:64 Constant: 0:64 543.000000 0:65 Sequence 0:65 move second child to first child ( temp float) 0:65 'f6789' ( temp float) 0:65 Constant: 0:65 6789.000000 0:66 Sequence 0:66 move second child to first child ( temp float) 0:66 'f88' ( temp float) 0:66 Constant: 0:66 88.000000 0:68 Sequence 0:68 move second child to first child ( temp float) 0:68 'g1' ( temp float) 0:68 Constant: 0:68 53876.000000 0:69 Sequence 0:69 move second child to first child ( temp float) 0:69 'g2' ( temp float) 0:69 Constant: 0:69 0.040000 0:70 Sequence 0:70 move second child to first child ( temp float) 0:70 'g3' ( temp float) 0:70 Constant: 0:70 100000.000000 0:71 Sequence 0:71 move second child to first child ( temp float) 0:71 'g4' ( temp float) 0:71 Constant: 0:71 0.007321 0:72 Sequence 0:72 move second child to first child ( temp float) 0:72 'g5' ( temp float) 0:72 Constant: 0:72 32000.000000 0:73 Sequence 0:73 move second child to first child ( temp float) 0:73 'g6' ( temp float) 0:73 Constant: 0:73 5.0000000000000e-06 0:74 Sequence 0:74 move second child to first child ( temp float) 0:74 'g7' ( temp float) 0:74 Constant: 0:74 0.450000 0:75 Sequence 0:75 move second child to first child ( temp float) 0:75 'g8' ( temp float) 0:75 Constant: 0:75 60000000000.000000 0:77 Sequence 0:77 move second child to first child ( temp double) 0:77 'gf1' ( temp double) 0:77 Constant: 0:77 1.000000 0:78 Sequence 0:78 move second child to first child ( temp double) 0:78 'gf2' ( temp double) 0:78 Constant: 0:78 2.000000 0:79 Sequence 0:79 move second child to first child ( temp double) 0:79 'gf3' ( temp double) 0:79 Constant: 0:79 3.000000 0:80 Sequence 0:80 move second child to first child ( temp double) 0:80 'gf4' ( temp double) 0:80 Constant: 0:80 4.000000 0:81 Sequence 0:81 move second child to first child ( temp float) 0:81 'gf5' ( temp float) 0:81 Constant: 0:81 5.000000 0:82 Sequence 0:82 move second child to first child ( temp float) 0:82 'gf6' ( temp float) 0:82 Constant: 0:82 6.000000 0:88 Sequence 0:88 move second child to first child ( temp float) 0:88 'e5' ( temp float) 0:88 Constant: 0:88 5.000000 0:98 Sequence 0:98 move second child to first child ( temp uint) 0:98 'g1' ( global uint) 0:98 Constant: 0:98 4294967295 (const uint) 0:99 Sequence 0:99 move second child to first child ( temp uint) 0:99 'g2' ( global uint) 0:99 Constant: 0:99 4294967295 (const uint) 0:100 Sequence 0:100 move second child to first child ( temp uint) 0:100 'g3' ( global uint) 0:100 Constant: 0:100 4294967294 (const uint) 0:101 Sequence 0:101 move second child to first child ( temp int) 0:101 'g4' ( global int) 0:101 Constant: 0:101 -1 (const int) 0:102 Sequence 0:102 move second child to first child ( temp int) 0:102 'g5' ( global int) 0:102 Constant: 0:102 -1 (const int) 0:103 Sequence 0:103 move second child to first child ( temp int) 0:103 'g6' ( global int) 0:103 Constant: 0:103 -2 (const int) 0:? Linker Objects 0:? 'c2' (layout( location=2) out 4-component vector of float) 0:? 'c3' (layout( location=3) out 4-component vector of float) 0:? 'c4' (layout( location=4) out 4-component vector of float) 0:? 'c5' (layout( location=5) out 4-component vector of float) 0:? 'c6' (layout( location=6) out 4-component vector of float) 0:? 'c7' (layout( location=7) out 4-component vector of float) 0:? 'g1' ( global uint) 0:? 'g2' ( global uint) 0:? 'g3' ( global uint) 0:? 'g4' ( global int) 0:? 'g5' ( global int) 0:? 'g6' ( global int) 0:? 'inf1' ( global float) Linked fragment stage: Shader version: 400 ERROR: node is still EOpNull! 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:5 Sequence 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'o00' ( temp int) 0:5 Constant: 0:5 0 (const int) 0:6 Sequence 0:6 move second child to first child ( temp int) 0:6 'o000' ( temp int) 0:6 Constant: 0:6 0 (const int) 0:7 Sequence 0:7 move second child to first child ( temp int) 0:7 'o0000' ( temp int) 0:7 Constant: 0:7 0 (const int) 0:8 Sequence 0:8 move second child to first child ( temp int) 0:8 'o5' ( temp int) 0:8 Constant: 0:8 5 (const int) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'o05' ( temp int) 0:9 Constant: 0:9 5 (const int) 0:10 Sequence 0:10 move second child to first child ( temp int) 0:10 'o006' ( temp int) 0:10 Constant: 0:10 6 (const int) 0:11 Sequence 0:11 move second child to first child ( temp int) 0:11 'o7' ( temp int) 0:11 Constant: 0:11 7 (const int) 0:12 Sequence 0:12 move second child to first child ( temp int) 0:12 'o58' ( temp int) 0:12 Constant: 0:12 58 (const int) 0:13 Sequence 0:13 move second child to first child ( temp int) 0:13 'omax' ( temp int) 0:13 Constant: 0:13 -1 (const int) 0:14 Sequence 0:14 move second child to first child ( temp int) 0:14 'o8' ( temp int) 0:14 Constant: 0:14 0 (const int) 0:15 Sequence 0:15 move second child to first child ( temp int) 0:15 'o08' ( temp int) 0:15 Constant: 0:15 0 (const int) 0:16 Sequence 0:16 move second child to first child ( temp int) 0:16 'o009' ( temp int) 0:16 Constant: 0:16 0 (const int) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'obig' ( temp int) 0:17 Constant: 0:17 -1662398820 (const int) 0:18 Sequence 0:18 move second child to first child ( temp int) 0:18 'omax1' ( temp int) 0:18 Constant: 0:18 0 (const int) 0:20 Sequence 0:20 move second child to first child ( temp uint) 0:20 'uo5' ( temp uint) 0:20 Constant: 0:20 5 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp uint) 0:21 'uo6' ( temp uint) 0:21 Constant: 0:21 6 (const uint) 0:22 Sequence 0:22 move second child to first child ( temp uint) 0:22 'uo7' ( temp uint) 0:22 Constant: 0:22 7 (const uint) 0:23 Sequence 0:23 move second child to first child ( temp uint) 0:23 'uo8' ( temp uint) 0:23 Constant: 0:23 0 (const uint) 0:24 Sequence 0:24 move second child to first child ( temp uint) 0:24 'uo9' ( temp uint) 0:24 Constant: 0:24 0 (const uint) 0:26 Sequence 0:26 move second child to first child ( temp int) 0:26 'h0' ( temp int) 0:26 Constant: 0:26 0 (const int) 0:27 Sequence 0:27 move second child to first child ( temp int) 0:27 'h00' ( temp int) 0:27 Constant: 0:27 0 (const int) 0:28 Sequence 0:28 move second child to first child ( temp int) 0:28 'h000' ( temp int) 0:28 Constant: 0:28 0 (const int) 0:29 Sequence 0:29 move second child to first child ( temp int) 0:29 'h1' ( temp int) 0:29 Constant: 0:29 1 (const int) 0:30 Sequence 0:30 move second child to first child ( temp int) 0:30 'h2' ( temp int) 0:30 Constant: 0:30 2 (const int) 0:31 Sequence 0:31 move second child to first child ( temp int) 0:31 'h300' ( temp int) 0:31 Constant: 0:31 768 (const int) 0:32 Sequence 0:32 move second child to first child ( temp int) 0:32 'hABCDEF' ( temp int) 0:32 Constant: 0:32 11259375 (const int) 0:33 Sequence 0:33 move second child to first child ( temp int) 0:33 'hFFFFFFFF' ( temp int) 0:33 Constant: 0:33 -1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp int) 0:34 'h12345678' ( temp int) 0:34 Constant: 0:34 12345678 (const int) 0:35 Sequence 0:35 move second child to first child ( temp int) 0:35 'hToBeOrNotToBe' ( temp int) 0:35 Constant: 0:35 -1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp uint) 0:37 'uh0' ( temp uint) 0:37 Constant: 0:37 0 (const uint) 0:38 Sequence 0:38 move second child to first child ( temp uint) 0:38 'uhg' ( temp uint) 0:38 Constant: 0:38 12 (const uint) 0:39 Sequence 0:39 move second child to first child ( temp uint) 0:39 'uh000' ( temp uint) 0:39 Constant: 0:39 0 (const uint) 0:40 Sequence 0:40 move second child to first child ( temp uint) 0:40 'uh1' ( temp uint) 0:40 Constant: 0:40 1 (const uint) 0:41 Sequence 0:41 move second child to first child ( temp uint) 0:41 'uh2' ( temp uint) 0:41 Constant: 0:41 2 (const uint) 0:42 Sequence 0:42 move second child to first child ( temp uint) 0:42 'uh300' ( temp uint) 0:42 Constant: 0:42 768 (const uint) 0:43 Sequence 0:43 move second child to first child ( temp uint) 0:43 'uhABCDEF' ( temp uint) 0:43 Constant: 0:43 11259375 (const uint) 0:44 Sequence 0:44 move second child to first child ( temp uint) 0:44 'uhFFFFFFFF' ( temp uint) 0:44 Constant: 0:44 4294967295 (const uint) 0:45 Sequence 0:45 move second child to first child ( temp uint) 0:45 'uh12345678' ( temp uint) 0:45 Constant: 0:45 12345678 (const uint) 0:46 Sequence 0:46 move second child to first child ( temp uint) 0:46 'uhToBeOrNotToBe' ( temp uint) 0:46 Constant: 0:46 4294967295 (const uint) 0:49 Sequence 0:49 move second child to first child ( temp int) 0:49 'he2' ( temp int) 0:49 Constant: 0:49 0 (const int) 0:50 Sequence 0:50 move second child to first child ( temp int) 0:50 'hbig' ( temp int) 0:50 Constant: 0:50 -15 (const int) 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 'f1' ( temp float) 0:52 Constant: 0:52 1.000000 0:53 Sequence 0:53 move second child to first child ( temp float) 0:53 'f2' ( temp float) 0:53 Constant: 0:53 2.000000 0:54 Sequence 0:54 move second child to first child ( temp float) 0:54 'f3' ( temp float) 0:54 Constant: 0:54 3.000000 0:55 Sequence 0:55 move second child to first child ( temp float) 0:55 'f4' ( temp float) 0:55 Constant: 0:55 4.000000 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 'f5' ( temp float) 0:56 Constant: 0:56 5.000000 0:57 Sequence 0:57 move second child to first child ( temp float) 0:57 'f6' ( temp float) 0:57 Constant: 0:57 6.000000 0:58 Sequence 0:58 move second child to first child ( temp float) 0:58 'f7' ( temp float) 0:58 Constant: 0:58 7.000000 0:59 Sequence 0:59 move second child to first child ( temp float) 0:59 'f8' ( temp float) 0:59 Constant: 0:59 8.000000 0:60 Sequence 0:60 move second child to first child ( temp float) 0:60 'f9' ( temp float) 0:60 Constant: 0:60 9.000000 0:61 Sequence 0:61 move second child to first child ( temp float) 0:61 'f10' ( temp float) 0:61 Constant: 0:61 10.000000 0:62 Sequence 0:62 move second child to first child ( temp float) 0:62 'f11' ( temp float) 0:62 Constant: 0:62 11.000000 0:63 Sequence 0:63 move second child to first child ( temp float) 0:63 'f12' ( temp float) 0:63 Constant: 0:63 12.000000 0:64 Sequence 0:64 move second child to first child ( temp float) 0:64 'f543' ( temp float) 0:64 Constant: 0:64 543.000000 0:65 Sequence 0:65 move second child to first child ( temp float) 0:65 'f6789' ( temp float) 0:65 Constant: 0:65 6789.000000 0:66 Sequence 0:66 move second child to first child ( temp float) 0:66 'f88' ( temp float) 0:66 Constant: 0:66 88.000000 0:68 Sequence 0:68 move second child to first child ( temp float) 0:68 'g1' ( temp float) 0:68 Constant: 0:68 53876.000000 0:69 Sequence 0:69 move second child to first child ( temp float) 0:69 'g2' ( temp float) 0:69 Constant: 0:69 0.040000 0:70 Sequence 0:70 move second child to first child ( temp float) 0:70 'g3' ( temp float) 0:70 Constant: 0:70 100000.000000 0:71 Sequence 0:71 move second child to first child ( temp float) 0:71 'g4' ( temp float) 0:71 Constant: 0:71 0.007321 0:72 Sequence 0:72 move second child to first child ( temp float) 0:72 'g5' ( temp float) 0:72 Constant: 0:72 32000.000000 0:73 Sequence 0:73 move second child to first child ( temp float) 0:73 'g6' ( temp float) 0:73 Constant: 0:73 5.0000000000000e-06 0:74 Sequence 0:74 move second child to first child ( temp float) 0:74 'g7' ( temp float) 0:74 Constant: 0:74 0.450000 0:75 Sequence 0:75 move second child to first child ( temp float) 0:75 'g8' ( temp float) 0:75 Constant: 0:75 60000000000.000000 0:77 Sequence 0:77 move second child to first child ( temp double) 0:77 'gf1' ( temp double) 0:77 Constant: 0:77 1.000000 0:78 Sequence 0:78 move second child to first child ( temp double) 0:78 'gf2' ( temp double) 0:78 Constant: 0:78 2.000000 0:79 Sequence 0:79 move second child to first child ( temp double) 0:79 'gf3' ( temp double) 0:79 Constant: 0:79 3.000000 0:80 Sequence 0:80 move second child to first child ( temp double) 0:80 'gf4' ( temp double) 0:80 Constant: 0:80 4.000000 0:81 Sequence 0:81 move second child to first child ( temp float) 0:81 'gf5' ( temp float) 0:81 Constant: 0:81 5.000000 0:82 Sequence 0:82 move second child to first child ( temp float) 0:82 'gf6' ( temp float) 0:82 Constant: 0:82 6.000000 0:88 Sequence 0:88 move second child to first child ( temp float) 0:88 'e5' ( temp float) 0:88 Constant: 0:88 5.000000 0:98 Sequence 0:98 move second child to first child ( temp uint) 0:98 'g1' ( global uint) 0:98 Constant: 0:98 4294967295 (const uint) 0:99 Sequence 0:99 move second child to first child ( temp uint) 0:99 'g2' ( global uint) 0:99 Constant: 0:99 4294967295 (const uint) 0:100 Sequence 0:100 move second child to first child ( temp uint) 0:100 'g3' ( global uint) 0:100 Constant: 0:100 4294967294 (const uint) 0:101 Sequence 0:101 move second child to first child ( temp int) 0:101 'g4' ( global int) 0:101 Constant: 0:101 -1 (const int) 0:102 Sequence 0:102 move second child to first child ( temp int) 0:102 'g5' ( global int) 0:102 Constant: 0:102 -1 (const int) 0:103 Sequence 0:103 move second child to first child ( temp int) 0:103 'g6' ( global int) 0:103 Constant: 0:103 -2 (const int) 0:? Linker Objects 0:? 'c2' (layout( location=2) out 4-component vector of float) 0:? 'c3' (layout( location=3) out 4-component vector of float) 0:? 'c4' (layout( location=4) out 4-component vector of float) 0:? 'c5' (layout( location=5) out 4-component vector of float) 0:? 'c6' (layout( location=6) out 4-component vector of float) 0:? 'c7' (layout( location=7) out 4-component vector of float) 0:? 'g1' ( global uint) 0:? 'g2' ( global uint) 0:? 'g3' ( global uint) 0:? 'g4' ( global int) 0:? 'g5' ( global int) 0:? 'g6' ( global int) 0:? 'inf1' ( global float) glslang-16.0.0/Test/baseResults/nvShaderNoperspectiveInterpolation.frag.out000066400000000000000000000030251506534232700272070ustar00rootroot00000000000000nvShaderNoperspectiveInterpolation.frag ERROR: 0:5: 'noperspective' : Reserved word. ERROR: 0:5: 'noperspective' : not supported for this version or the enabled extensions ERROR: 2 compilation errors. No code generated. Shader version: 300 Requested GL_NV_shader_noperspective_interpolation ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp mediump 4-component vector of float) 0:14 'fragColor' ( out mediump 4-component vector of float) 0:14 'color' ( noperspective in mediump 4-component vector of float) 0:? Linker Objects 0:? 'bad' ( noperspective in mediump 4-component vector of float) 0:? 'color' ( noperspective in mediump 4-component vector of float) 0:? 'fragColor' ( out mediump 4-component vector of float) Linked fragment stage: Shader version: 300 Requested GL_NV_shader_noperspective_interpolation ERROR: node is still EOpNull! 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp mediump 4-component vector of float) 0:14 'fragColor' ( out mediump 4-component vector of float) 0:14 'color' ( noperspective in mediump 4-component vector of float) 0:? Linker Objects 0:? 'bad' ( noperspective in mediump 4-component vector of float) 0:? 'color' ( noperspective in mediump 4-component vector of float) 0:? 'fragColor' ( out mediump 4-component vector of float) glslang-16.0.0/Test/baseResults/overflow_underflow_toinf_0.frag.out000066400000000000000000000050241506534232700254650ustar00rootroot00000000000000overflow_underflow_toinf_0.frag Shader version: 320 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp highp float) 0:9 'correct' ( temp highp float) 0:9 Constant: 0:9 1.000000 0:10 Sequence 0:10 move second child to first child ( temp highp float) 0:10 'correct1' ( temp highp float) 0:10 Constant: 0:10 1.000000 0:11 Sequence 0:11 move second child to first child ( temp highp 4-component vector of float) 0:11 'foo' ( temp highp 4-component vector of float) 0:11 Constant: 0:11 0.000000 0:11 -0.000000 0:11 +1.#INF 0:11 -1.#INF 0:12 move second child to first child ( temp highp 4-component vector of float) 0:12 'my_FragColor' ( out highp 4-component vector of float) 0:12 Construct vec4 ( temp highp 4-component vector of float) 0:12 Constant: 0:12 0.000000 0:12 'correct' ( temp highp float) 0:12 'correct1' ( temp highp float) 0:12 Constant: 0:12 1.000000 0:? Linker Objects 0:? 'my_FragColor' ( out highp 4-component vector of float) Linked fragment stage: Shader version: 320 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp highp float) 0:9 'correct' ( temp highp float) 0:9 Constant: 0:9 1.000000 0:10 Sequence 0:10 move second child to first child ( temp highp float) 0:10 'correct1' ( temp highp float) 0:10 Constant: 0:10 1.000000 0:11 Sequence 0:11 move second child to first child ( temp highp 4-component vector of float) 0:11 'foo' ( temp highp 4-component vector of float) 0:11 Constant: 0:11 0.000000 0:11 -0.000000 0:11 +1.#INF 0:11 -1.#INF 0:12 move second child to first child ( temp highp 4-component vector of float) 0:12 'my_FragColor' ( out highp 4-component vector of float) 0:12 Construct vec4 ( temp highp 4-component vector of float) 0:12 Constant: 0:12 0.000000 0:12 'correct' ( temp highp float) 0:12 'correct1' ( temp highp float) 0:12 Constant: 0:12 1.000000 0:? Linker Objects 0:? 'my_FragColor' ( out highp 4-component vector of float) glslang-16.0.0/Test/baseResults/overlongLiteral.frag.out000066400000000000000000000006601506534232700232700ustar00rootroot00000000000000overlongLiteral.frag ERROR: 0:1: '' : hexadecimal literal too long ERROR: 0:1: '' : syntax error, unexpected INTCONSTANT ERROR: 2 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects Linked fragment stage: ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point Shader version: 100 ERROR: node is still EOpNull! 0:? Linker Objects glslang-16.0.0/Test/baseResults/pointCoord.frag.out000066400000000000000000000055161506534232700222450ustar00rootroot00000000000000pointCoord.frag Shader version: 100 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:? Sequence 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Compare Less Than ( temp bool) 0:9 length ( global mediump float) 0:9 'gl_PointCoord' ( gl_PointCoord mediump 2-component vector of float PointCoord) 0:9 Constant: 0:9 0.300000 0:9 true case 0:10 move second child to first child ( temp highp 4-component vector of float) 0:10 'color' ( temp highp 4-component vector of float) 0:10 texture ( global lowp 4-component vector of float, operation at mediump) 0:10 'sampler' ( uniform lowp sampler2D) 0:10 'gl_PointCoord' ( gl_PointCoord mediump 2-component vector of float PointCoord) 0:9 false case 0:12 move second child to first child ( temp highp 4-component vector of float) 0:12 'color' ( temp highp 4-component vector of float) 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:14 move second child to first child ( temp highp 4-component vector of float) 0:14 'gl_FragColor' ( fragColor mediump 4-component vector of float FragColor) 0:14 'color' ( temp highp 4-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform lowp sampler2D) Linked fragment stage: Shader version: 100 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:? Sequence 0:9 Test condition and select ( temp void) 0:9 Condition 0:9 Compare Less Than ( temp bool) 0:9 length ( global mediump float) 0:9 'gl_PointCoord' ( gl_PointCoord mediump 2-component vector of float PointCoord) 0:9 Constant: 0:9 0.300000 0:9 true case 0:10 move second child to first child ( temp highp 4-component vector of float) 0:10 'color' ( temp highp 4-component vector of float) 0:10 texture ( global lowp 4-component vector of float, operation at mediump) 0:10 'sampler' ( uniform lowp sampler2D) 0:10 'gl_PointCoord' ( gl_PointCoord mediump 2-component vector of float PointCoord) 0:9 false case 0:12 move second child to first child ( temp highp 4-component vector of float) 0:12 'color' ( temp highp 4-component vector of float) 0:12 Constant: 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:12 0.000000 0:14 move second child to first child ( temp highp 4-component vector of float) 0:14 'gl_FragColor' ( fragColor mediump 4-component vector of float FragColor) 0:14 'color' ( temp highp 4-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform lowp sampler2D) glslang-16.0.0/Test/baseResults/positive_infinity.frag.out000066400000000000000000000031511506534232700236710ustar00rootroot00000000000000positive_infinity.frag Shader version: 300 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp highp float) 0:9 'correct' ( temp highp float) 0:9 Constant: 0:9 1.000000 0:10 move second child to first child ( temp highp 4-component vector of float) 0:10 'my_FragColor' ( out highp 4-component vector of float) 0:10 Construct vec4 ( temp highp 4-component vector of float) 0:10 Constant: 0:10 0.000000 0:10 'correct' ( temp highp float) 0:10 Constant: 0:10 0.000000 0:10 Constant: 0:10 1.000000 0:? Linker Objects 0:? 'my_FragColor' ( out highp 4-component vector of float) Linked fragment stage: Shader version: 300 0:? Sequence 0:4 Function Definition: main( ( global void) 0:4 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp highp float) 0:9 'correct' ( temp highp float) 0:9 Constant: 0:9 1.000000 0:10 move second child to first child ( temp highp 4-component vector of float) 0:10 'my_FragColor' ( out highp 4-component vector of float) 0:10 Construct vec4 ( temp highp 4-component vector of float) 0:10 Constant: 0:10 0.000000 0:10 'correct' ( temp highp float) 0:10 Constant: 0:10 0.000000 0:10 Constant: 0:10 1.000000 0:? Linker Objects 0:? 'my_FragColor' ( out highp 4-component vector of float) glslang-16.0.0/Test/baseResults/precise.tesc.out000066400000000000000000000357731506534232700216060ustar00rootroot00000000000000precise.tesc Shader version: 450 Requested GL_EXT_gpu_shader5 Requested GL_EXT_shader_io_blocks Requested GL_EXT_tessellation_shader vertices = -1 0:? Sequence 0:5 Function Definition: minimal( ( global float) 0:5 Function Parameters: 0:6 Sequence 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'result' ( noContraction temp float) 0:6 Constant: 0:6 5.000000 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 'a' ( noContraction temp float) 0:7 Constant: 0:7 10.000000 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'b' ( noContraction temp float) 0:8 Constant: 0:8 20.000000 0:9 Sequence 0:9 move second child to first child ( temp float) 0:9 'c' ( noContraction temp float) 0:9 Constant: 0:9 30.000000 0:10 Sequence 0:10 move second child to first child ( temp float) 0:10 'd' ( noContraction temp float) 0:10 Constant: 0:10 40.000000 0:11 move second child to first child ( temp float) 0:11 'result' ( noContraction temp float) 0:11 add ( noContraction temp float) 0:11 component-wise multiply ( noContraction temp float) 0:11 'a' ( noContraction temp float) 0:11 'b' ( noContraction temp float) 0:11 component-wise multiply ( noContraction temp float) 0:11 'c' ( noContraction temp float) 0:11 'd' ( noContraction temp float) 0:12 Branch: Return with expression 0:12 'result' ( noContraction temp float) 0:15 Function Definition: continuous_assignment( ( global void) 0:15 Function Parameters: 0:16 Sequence 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'result' ( noContraction temp float) 0:16 Constant: 0:16 5.000000 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'a' ( noContraction temp float) 0:17 Constant: 0:17 10.000000 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'b' ( noContraction temp float) 0:18 Constant: 0:18 20.000000 0:19 move second child to first child ( temp float) 0:19 'result' ( noContraction temp float) 0:19 move second child to first child ( temp float) 0:19 'a' ( noContraction temp float) 0:19 add ( noContraction temp float) 0:19 'b' ( noContraction temp float) 0:19 Constant: 0:19 4.000000 0:22 Function Definition: convert( ( global void) 0:22 Function Parameters: 0:? Sequence 0:24 Sequence 0:24 move second child to first child ( temp float) 0:24 'a' ( noContraction temp float) 0:24 Constant: 0:24 10.000000 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'b' ( noContraction temp float) 0:25 Constant: 0:25 20.000000 0:26 move second child to first child ( temp float) 0:26 'b' ( noContraction temp float) 0:26 add ( noContraction temp float) 0:26 'a' ( noContraction temp float) 0:26 'b' ( noContraction temp float) 0:27 move second child to first child ( temp double) 0:27 'result' ( noContraction temp double) 0:27 Convert float to double ( temp double) 0:27 'b' ( noContraction temp float) 0:30 Function Definition: loop_for( ( global float) 0:30 Function Parameters: 0:31 Sequence 0:31 Sequence 0:31 move second child to first child ( temp float) 0:31 'r1' ( noContraction temp float) 0:31 Constant: 0:31 5.000000 0:32 Sequence 0:32 move second child to first child ( temp float) 0:32 'r2' ( noContraction temp float) 0:32 Constant: 0:32 10.000000 0:33 Sequence 0:33 move second child to first child ( temp int) 0:33 'a' ( temp int) 0:33 Constant: 0:33 10 (const int) 0:34 Sequence 0:34 move second child to first child ( temp int) 0:34 'b' ( noContraction temp int) 0:34 Constant: 0:34 20 (const int) 0:35 Sequence 0:35 move second child to first child ( temp int) 0:35 'c' ( noContraction temp int) 0:35 Constant: 0:35 30 (const int) 0:36 Sequence 0:36 Sequence 0:36 move second child to first child ( temp int) 0:36 'i' ( noContraction temp int) 0:36 Constant: 0:36 0 (const int) 0:36 Loop with condition tested first 0:36 Loop Condition 0:36 Compare Less Than ( temp bool) 0:36 'i' ( temp int) 0:36 'a' ( temp int) 0:36 Loop Body 0:37 Sequence 0:37 add second child into first child ( noContraction temp float) 0:37 'r1' ( noContraction temp float) 0:37 add ( noContraction temp float) 0:37 add ( noContraction temp float) 0:37 Constant: 0:37 3.120000 0:37 Convert int to float ( temp float) 0:37 'b' ( noContraction temp int) 0:37 Convert int to float ( temp float) 0:37 'i' ( noContraction temp int) 0:38 add second child into first child ( noContraction temp int) 0:38 'c' ( noContraction temp int) 0:38 Constant: 0:38 1 (const int) 0:36 Loop Terminal Expression 0:36 Post-Increment ( noContraction temp int) 0:36 'i' ( noContraction temp int) 0:40 add second child into first child ( temp int) 0:40 'a' ( temp int) 0:40 Constant: 0:40 1 (const int) 0:41 move second child to first child ( temp float) 0:41 'r2' ( noContraction temp float) 0:41 Convert int to float ( temp float) 0:41 'c' ( noContraction temp int) 0:42 Branch: Return with expression 0:42 Construct float ( temp float) 0:42 add ( temp float) 0:42 'r1' ( noContraction temp float) 0:42 'r2' ( noContraction temp float) 0:45 Function Definition: loop_array( ( global void) 0:45 Function Parameters: 0:? Sequence 0:48 Sequence 0:48 move second child to first child ( temp int) 0:48 'x' ( noContraction temp int) 0:48 Constant: 0:48 22 (const int) 0:49 Sequence 0:49 move second child to first child ( temp int) 0:49 'y' ( noContraction temp int) 0:49 Constant: 0:49 33 (const int) 0:52 add second child into first child ( noContraction temp float) 0:52 'result' ( noContraction temp float) 0:52 add ( noContraction temp float) 0:52 Convert int to float ( temp float) 0:52 'x' ( noContraction temp int) 0:52 Convert int to float ( temp float) 0:52 'y' ( noContraction temp int) 0:54 Sequence 0:54 Sequence 0:54 move second child to first child ( temp int) 0:54 'i' ( temp int) 0:54 Constant: 0:54 0 (const int) 0:54 Loop with condition tested first 0:54 Loop Condition 0:54 Compare Less Than ( temp bool) 0:54 'i' ( temp int) 0:54 Constant: 0:54 3 (const int) 0:54 Loop Body 0:56 Sequence 0:56 add second child into first child ( noContraction temp float) 0:56 'result' ( noContraction temp float) 0:56 add ( noContraction temp float) 0:56 indirect index ( noContraction temp float) 0:56 'a0' ( temp 3-element array of float) 0:56 'i' ( temp int) 0:56 Constant: 0:56 2.000000 0:58 move second child to first child ( temp float) 0:58 indirect index ( noContraction temp float) 0:58 'a0' ( noContraction temp 3-element array of float) 0:58 'i' ( temp int) 0:58 subtract ( noContraction temp float) 0:58 Constant: 0:58 3.000000 0:58 Post-Increment ( noContraction temp float) 0:58 'result' ( noContraction temp float) 0:54 Loop Terminal Expression 0:54 Pre-Increment ( temp int) 0:54 'i' ( temp int) 0:62 Function Definition: loop_while( ( global void) 0:62 Function Parameters: 0:63 Sequence 0:63 Sequence 0:63 move second child to first child ( temp float) 0:63 'result' ( noContraction temp float) 0:63 Constant: 0:63 5.000000 0:64 Sequence 0:64 move second child to first child ( temp int) 0:64 'a' ( noContraction temp int) 0:64 Constant: 0:64 10 (const int) 0:65 Sequence 0:65 move second child to first child ( temp int) 0:65 'b' ( noContraction temp int) 0:65 Constant: 0:65 20 (const int) 0:66 Loop with condition tested first 0:66 Loop Condition 0:66 Compare Less Than ( temp bool) 0:66 'result' ( noContraction temp float) 0:66 Constant: 0:66 10.000000 0:66 Loop Body 0:67 Sequence 0:67 add second child into first child ( noContraction temp float) 0:67 'result' ( noContraction temp float) 0:67 add ( noContraction temp float) 0:67 Constant: 0:67 3.120000 0:67 Convert int to float ( temp float) 0:67 'b' ( noContraction temp int) 0:69 move second child to first child ( temp float) 0:69 'result' ( noContraction temp float) 0:69 Convert int to float ( temp float) 0:69 add ( temp int) 0:69 add ( temp int) 0:69 'a' ( noContraction temp int) 0:69 'b' ( noContraction temp int) 0:69 Constant: 0:69 5 (const int) 0:70 move second child to first child ( temp float) 0:70 'result' ( noContraction temp float) 0:70 Constant: 0:70 11.100000 0:73 Function Definition: fma_not_decorated( ( global float) 0:73 Function Parameters: 0:? Sequence 0:75 Sequence 0:75 move second child to first child ( temp float) 0:75 'a' ( noContraction temp float) 0:75 Constant: 0:75 1.000000 0:76 Sequence 0:76 move second child to first child ( temp float) 0:76 'b' ( noContraction temp float) 0:76 Constant: 0:76 2.000000 0:77 Sequence 0:77 move second child to first child ( temp float) 0:77 'c' ( noContraction temp float) 0:77 Constant: 0:77 3.000000 0:78 move second child to first child ( temp float) 0:78 'b' ( noContraction temp float) 0:78 add ( noContraction temp float) 0:78 'b' ( noContraction temp float) 0:78 'c' ( noContraction temp float) 0:79 move second child to first child ( temp float) 0:79 'result' ( noContraction temp float) 0:79 fma ( global float) 0:79 'a' ( noContraction temp float) 0:79 'b' ( noContraction temp float) 0:79 'c' ( noContraction temp float) 0:80 Branch: Return with expression 0:80 'result' ( noContraction temp float) 0:83 Function Definition: precise_return_exp_func( ( noContraction temp float) 0:83 Function Parameters: 0:84 Sequence 0:84 Sequence 0:84 move second child to first child ( temp float) 0:84 'a' ( noContraction temp float) 0:84 Constant: 0:84 1.000000 0:85 Sequence 0:85 move second child to first child ( temp float) 0:85 'b' ( noContraction temp float) 0:85 Constant: 0:85 2.000000 0:86 Branch: Return with expression 0:86 add ( noContraction temp float) 0:86 'a' ( noContraction temp float) 0:86 'b' ( noContraction temp float) 0:89 Function Definition: precise_return_val_func( ( noContraction temp float) 0:89 Function Parameters: 0:90 Sequence 0:90 Sequence 0:90 move second child to first child ( temp float) 0:90 'a' ( noContraction temp float) 0:90 Constant: 0:90 1.000000 0:91 Sequence 0:91 move second child to first child ( temp float) 0:91 'b' ( noContraction temp float) 0:91 Constant: 0:91 2.000000 0:92 Sequence 0:92 move second child to first child ( temp float) 0:92 'result' ( noContraction temp float) 0:92 add ( noContraction temp float) 0:92 'a' ( noContraction temp float) 0:92 'b' ( noContraction temp float) 0:93 Branch: Return with expression 0:93 'result' ( noContraction temp float) 0:96 Function Definition: precise_func_parameter(f1;f1; ( global float) 0:96 Function Parameters: 0:96 'b' ( in float) 0:96 'c' ( noContraction out float) 0:97 Sequence 0:97 Sequence 0:97 move second child to first child ( temp float) 0:97 'a' ( noContraction temp float) 0:97 Constant: 0:97 0.500000 0:98 move second child to first child ( temp float) 0:98 'c' ( noContraction out float) 0:98 add ( noContraction temp float) 0:98 'a' ( noContraction temp float) 0:98 'b' ( noContraction in float) 0:99 Branch: Return with expression 0:99 subtract ( temp float) 0:99 'a' ( temp float) 0:99 'b' ( in float) 0:102 Function Definition: matrix(mf23;mf32; ( global 3X3 matrix of float) 0:102 Function Parameters: 0:102 'a' ( in 2X3 matrix of float) 0:102 'b' ( in 3X2 matrix of float) 0:103 Sequence 0:103 Sequence 0:103 move second child to first child ( temp 2X3 matrix of float) 0:103 'c' ( noContraction temp 2X3 matrix of float) 0:103 Constant: 0:103 1.000000 0:103 2.000000 0:103 3.000000 0:103 4.000000 0:103 5.000000 0:103 6.000000 0:105 move second child to first child ( temp 3X3 matrix of float) 0:105 'result' ( noContraction temp 3X3 matrix of float) 0:105 matrix-multiply ( noContraction temp 3X3 matrix of float) 0:105 add ( noContraction temp 2X3 matrix of float) 0:105 'a' ( noContraction in 2X3 matrix of float) 0:105 'c' ( noContraction temp 2X3 matrix of float) 0:105 'b' ( noContraction in 3X2 matrix of float) 0:106 Branch: Return with expression 0:106 'result' ( noContraction temp 3X3 matrix of float) 0:109 Function Definition: main( ( global void) 0:109 Function Parameters: 0:? Linker Objects Linked tessellation control stage: ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...) Shader version: 450 Requested GL_EXT_gpu_shader5 Requested GL_EXT_shader_io_blocks Requested GL_EXT_tessellation_shader vertices = -1 0:? Sequence 0:109 Function Definition: main( ( global void) 0:109 Function Parameters: 0:? Linker Objects glslang-16.0.0/Test/baseResults/precise_struct_block.vert.out000066400000000000000000001140661506534232700243770ustar00rootroot00000000000000precise_struct_block.vert Shader version: 450 0:? Sequence 0:11 Function Definition: struct_member( ( global float) 0:11 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp float) 0:12 'a' ( noContraction temp float) 0:12 Constant: 0:12 1.000000 0:13 Sequence 0:13 move second child to first child ( temp float) 0:13 'b' ( temp float) 0:13 Constant: 0:13 2.000000 0:14 Sequence 0:14 move second child to first child ( temp float) 0:14 'c' ( temp float) 0:14 Constant: 0:14 3.000000 0:15 Sequence 0:15 move second child to first child ( temp float) 0:15 'd' ( temp float) 0:15 Constant: 0:15 4.000000 0:21 move second child to first child ( temp float) 0:21 f1: direct index for structure ( noContraction global float) 0:21 'S2' ( temp structure{ global float f1, global float f2}) 0:21 Constant: 0:21 0 (const int) 0:21 add ( noContraction temp float) 0:21 'a' ( noContraction temp float) 0:21 Constant: 0:21 0.200000 0:22 move second child to first child ( temp float) 0:22 f2: direct index for structure ( global float) 0:22 'S2' ( temp structure{ global float f1, global float f2}) 0:22 Constant: 0:22 1 (const int) 0:22 add ( temp float) 0:22 'b' ( temp float) 0:22 Constant: 0:22 0.200000 0:23 move second child to first child ( temp float) 0:23 f1: direct index for structure ( global float) 0:23 'S3' ( temp structure{ global float f1, global float f2}) 0:23 Constant: 0:23 0 (const int) 0:23 add ( temp float) 0:23 'a' ( temp float) 0:23 'b' ( temp float) 0:24 move second child to first child ( temp structure{ global float f1, global float f2}) 0:24 'S' ( temp structure{ global float f1, global float f2}) 0:24 'S2' ( temp structure{ global float f1, global float f2}) 0:25 move second child to first child ( temp float) 0:25 'result' ( noContraction temp float) 0:25 add ( noContraction temp float) 0:25 f1: direct index for structure ( noContraction global float) 0:25 'S' ( temp structure{ global float f1, global float f2}) 0:25 Constant: 0:25 0 (const int) 0:25 Constant: 0:25 0.100000 0:27 Branch: Return with expression 0:27 'result' ( noContraction temp float) 0:30 Function Definition: complex_array_struct( ( global float) 0:30 Function Parameters: 0:? Sequence 0:43 Sequence 0:43 Sequence 0:43 move second child to first child ( temp int) 0:43 'i' ( noContraction temp int) 0:43 Constant: 0:43 0 (const int) 0:43 Loop with condition tested first 0:43 Loop Condition 0:43 Compare Less Than ( temp bool) 0:43 'i' ( temp int) 0:43 Constant: 0:43 10 (const int) 0:43 Loop Body 0:44 Sequence 0:44 move second child to first child ( temp float) 0:44 f: direct index for structure ( temp float) 0:44 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:44 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:44 'i' ( temp int) 0:44 Constant: 0:44 0 (const int) 0:44 divide ( temp float) 0:44 Convert int to float ( temp float) 0:44 'i' ( temp int) 0:44 Constant: 0:44 3.000000 0:45 move second child to first child ( temp 4-component vector of float) 0:45 v: direct index for structure ( noContraction temp 4-component vector of float) 0:45 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:45 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:45 'i' ( temp int) 0:45 Constant: 0:45 2 (const int) 0:45 Construct vec4 ( temp 4-component vector of float) 0:45 component-wise multiply ( noContraction temp float) 0:45 Convert int to float ( temp float) 0:45 'i' ( noContraction temp int) 0:45 Constant: 0:45 1.500000 0:46 move second child to first child ( temp int) 0:46 p: direct index for structure ( temp int) 0:46 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:46 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:46 'i' ( temp int) 0:46 Constant: 0:46 3 (const int) 0:46 add ( temp int) 0:46 'i' ( temp int) 0:46 Constant: 0:46 1 (const int) 0:47 Sequence 0:47 Sequence 0:47 move second child to first child ( temp int) 0:47 'j' ( temp int) 0:47 Constant: 0:47 0 (const int) 0:47 Loop with condition tested first 0:47 Loop Condition 0:47 Compare Less Than ( temp bool) 0:47 'j' ( temp int) 0:47 Constant: 0:47 5 (const int) 0:47 Loop Body 0:48 Sequence 0:48 Sequence 0:48 Sequence 0:48 move second child to first child ( temp int) 0:48 'k' ( temp int) 0:48 Constant: 0:48 0 (const int) 0:48 Loop with condition tested first 0:48 Loop Condition 0:48 Compare Less Than ( temp bool) 0:48 'k' ( temp int) 0:48 Constant: 0:48 3 (const int) 0:48 Loop Body 0:49 Sequence 0:49 move second child to first child ( temp float) 0:49 indirect index ( temp float) 0:49 t1_array: direct index for structure ( temp 3-element array of float) 0:49 indirect index ( temp structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:49 t1a: direct index for structure ( temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:49 t2: direct index for structure ( temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c}) 0:49 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:49 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:49 'i' ( temp int) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 0 (const int) 0:49 'j' ( temp int) 0:49 Constant: 0:49 0 (const int) 0:49 'k' ( temp int) 0:49 Convert int to float ( temp float) 0:49 add ( temp int) 0:49 component-wise multiply ( temp int) 0:49 'i' ( temp int) 0:49 'j' ( temp int) 0:49 'k' ( temp int) 0:48 Loop Terminal Expression 0:48 Post-Increment ( temp int) 0:48 'k' ( temp int) 0:51 move second child to first child ( temp float) 0:51 t1_scalar: direct index for structure ( temp float) 0:51 indirect index ( temp structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:51 t1a: direct index for structure ( temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:51 t2: direct index for structure ( temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c}) 0:51 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:51 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:51 'i' ( temp int) 0:51 Constant: 0:51 1 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 'j' ( temp int) 0:51 Constant: 0:51 1 (const int) 0:51 divide ( temp float) 0:51 component-wise multiply ( temp float) 0:51 Convert int to float ( temp float) 0:51 'j' ( temp int) 0:51 Constant: 0:51 2.000000 0:51 Convert int to float ( temp float) 0:51 'i' ( temp int) 0:47 Loop Terminal Expression 0:47 Post-Increment ( temp int) 0:47 'j' ( temp int) 0:54 Sequence 0:54 Sequence 0:54 move second child to first child ( temp int) 0:54 'j' ( noContraction temp int) 0:54 Constant: 0:54 0 (const int) 0:54 Loop with condition tested first 0:54 Loop Condition 0:54 Compare Less Than ( temp bool) 0:54 'j' ( temp int) 0:54 Constant: 0:54 6 (const int) 0:54 Loop Body 0:55 Sequence 0:55 Sequence 0:55 Sequence 0:55 move second child to first child ( temp int) 0:55 'k' ( temp int) 0:55 Constant: 0:55 0 (const int) 0:55 Loop with condition tested first 0:55 Loop Condition 0:55 Compare Less Than ( temp bool) 0:55 'k' ( temp int) 0:55 Constant: 0:55 3 (const int) 0:55 Loop Body 0:56 Sequence 0:56 move second child to first child ( temp float) 0:56 indirect index ( temp float) 0:56 t1_array: direct index for structure ( temp 3-element array of float) 0:56 indirect index ( temp structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:56 t1b: direct index for structure ( temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:56 t2: direct index for structure ( temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c}) 0:56 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:56 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:56 'i' ( temp int) 0:56 Constant: 0:56 1 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 'j' ( temp int) 0:56 Constant: 0:56 0 (const int) 0:56 'k' ( temp int) 0:56 Convert int to float ( temp float) 0:56 add ( temp int) 0:56 component-wise multiply ( temp int) 0:56 'i' ( temp int) 0:56 'j' ( temp int) 0:56 'k' ( temp int) 0:55 Loop Terminal Expression 0:55 Post-Increment ( temp int) 0:55 'k' ( temp int) 0:58 move second child to first child ( temp float) 0:58 t1_scalar: direct index for structure ( noContraction temp float) 0:58 indirect index ( temp structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:58 t1b: direct index for structure ( temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:58 t2: direct index for structure ( temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c}) 0:58 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:58 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:58 'i' ( temp int) 0:58 Constant: 0:58 1 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 'j' ( temp int) 0:58 Constant: 0:58 1 (const int) 0:58 divide ( noContraction temp float) 0:58 component-wise multiply ( noContraction temp float) 0:58 Convert int to float ( temp float) 0:58 'j' ( noContraction temp int) 0:58 Constant: 0:58 2.000000 0:58 Convert int to float ( temp float) 0:58 'i' ( noContraction temp int) 0:54 Loop Terminal Expression 0:54 Post-Increment ( noContraction temp int) 0:54 'j' ( noContraction temp int) 0:61 Sequence 0:61 Sequence 0:61 move second child to first child ( temp int) 0:61 'j' ( noContraction temp int) 0:61 Constant: 0:61 0 (const int) 0:61 Loop with condition tested first 0:61 Loop Condition 0:61 Compare Less Than ( temp bool) 0:61 'j' ( temp int) 0:61 Constant: 0:61 6 (const int) 0:61 Loop Body 0:62 Sequence 0:62 Sequence 0:62 Sequence 0:62 move second child to first child ( temp int) 0:62 'k' ( noContraction temp int) 0:62 Constant: 0:62 0 (const int) 0:62 Loop with condition tested first 0:62 Loop Condition 0:62 Compare Less Than ( temp bool) 0:62 'k' ( temp int) 0:62 Constant: 0:62 3 (const int) 0:62 Loop Body 0:63 Sequence 0:63 move second child to first child ( temp float) 0:63 indirect index ( noContraction temp float) 0:63 t1_array: direct index for structure ( noContraction temp 3-element array of float) 0:63 indirect index ( temp structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:63 t1c: direct index for structure ( temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:63 t2: direct index for structure ( temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c}) 0:63 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:63 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:63 'i' ( temp int) 0:63 Constant: 0:63 1 (const int) 0:63 Constant: 0:63 2 (const int) 0:63 'j' ( temp int) 0:63 Constant: 0:63 0 (const int) 0:63 'k' ( temp int) 0:63 Convert int to float ( temp float) 0:63 add ( temp int) 0:63 component-wise multiply ( temp int) 0:63 'i' ( noContraction temp int) 0:63 'j' ( noContraction temp int) 0:63 'k' ( noContraction temp int) 0:62 Loop Terminal Expression 0:62 Post-Increment ( noContraction temp int) 0:62 'k' ( noContraction temp int) 0:65 move second child to first child ( temp float) 0:65 t1_scalar: direct index for structure ( temp float) 0:65 indirect index ( temp structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:65 t1c: direct index for structure ( temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:65 t2: direct index for structure ( temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c}) 0:65 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:65 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:65 'i' ( temp int) 0:65 Constant: 0:65 1 (const int) 0:65 Constant: 0:65 2 (const int) 0:65 'j' ( temp int) 0:65 Constant: 0:65 1 (const int) 0:65 divide ( temp float) 0:65 component-wise multiply ( temp float) 0:65 Convert int to float ( temp float) 0:65 'j' ( temp int) 0:65 Constant: 0:65 2.000000 0:65 Convert int to float ( temp float) 0:65 'i' ( temp int) 0:61 Loop Terminal Expression 0:61 Post-Increment ( noContraction temp int) 0:61 'j' ( noContraction temp int) 0:43 Loop Terminal Expression 0:43 Post-Increment ( noContraction temp int) 0:43 'i' ( noContraction temp int) 0:68 Sequence 0:68 move second child to first child ( temp int) 0:68 'i' ( temp int) 0:68 Constant: 0:68 2 (const int) 0:69 move second child to first child ( temp float) 0:69 'result' ( noContraction temp float) 0:71 add ( noContraction temp float) 0:70 add ( noContraction temp float) 0:69 direct index ( noContraction temp float) 0:69 t1_array: direct index for structure ( temp 3-element array of float) 0:69 direct index ( temp structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:69 t1c: direct index for structure ( temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:69 t2: direct index for structure ( temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c}) 0:69 direct index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:69 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:69 Constant: 0:69 5 (const int) 0:69 Constant: 0:69 1 (const int) 0:69 Constant: 0:69 2 (const int) 0:69 Constant: 0:69 6 (const int) 0:69 Constant: 0:69 0 (const int) 0:69 Constant: 0:69 1 (const int) 0:70 t1_scalar: direct index for structure ( noContraction temp float) 0:70 direct index ( temp structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:70 t1b: direct index for structure ( temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar}) 0:70 t2: direct index for structure ( temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c}) 0:70 direct index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:70 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 Constant: 0:70 1 (const int) 0:71 direct index ( noContraction temp float) 0:71 vector swizzle ( temp 2-component vector of float) 0:71 v: direct index for structure ( temp 4-component vector of float) 0:71 indirect index ( temp structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:71 't3' ( temp 10-element array of structure{ temp float f, temp structure{ temp 5-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{ temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) 0:71 subtract ( temp int) 0:71 'i' ( temp int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 2 (const int) 0:71 Sequence 0:71 Constant: 0:71 0 (const int) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:72 Branch: Return with expression 0:72 'result' ( noContraction temp float) 0:75 Function Definition: out_block( ( global float) 0:75 Function Parameters: 0:76 Sequence 0:76 Sequence 0:76 move second child to first child ( temp float) 0:76 'a' ( noContraction temp float) 0:76 Constant: 0:76 0.100000 0:77 Sequence 0:77 move second child to first child ( temp float) 0:77 'b' ( noContraction temp float) 0:77 Constant: 0:77 0.200000 0:78 move second child to first child ( temp float) 0:78 f1: direct index for structure ( noContraction global float) 0:78 s: direct index for structure ( noContraction out structure{ global float f1, global float f2}) 0:78 'partial_precise_block' ( out block{ noContraction out structure{ global float f1, global float f2} s, out float x}) 0:78 Constant: 0:78 0 (const int) 0:78 Constant: 0:78 0 (const int) 0:78 add ( noContraction temp float) 0:78 'a' ( noContraction temp float) 0:78 'b' ( noContraction temp float) 0:79 move second child to first child ( temp float) 0:79 f2: direct index for structure ( noContraction global float) 0:79 s: direct index for structure ( noContraction out structure{ global float f1, global float f2}) 0:79 'partial_precise_block' ( out block{ noContraction out structure{ global float f1, global float f2} s, out float x}) 0:79 Constant: 0:79 0 (const int) 0:79 Constant: 0:79 1 (const int) 0:79 subtract ( noContraction temp float) 0:79 'a' ( noContraction temp float) 0:79 'b' ( noContraction temp float) 0:80 move second child to first child ( temp float) 0:80 x: direct index for structure ( out float) 0:80 'partial_precise_block' ( out block{ noContraction out structure{ global float f1, global float f2} s, out float x}) 0:80 Constant: 0:80 1 (const int) 0:80 component-wise multiply ( temp float) 0:80 'a' ( temp float) 0:80 'b' ( temp float) 0:82 move second child to first child ( temp float) 0:82 f1: direct index for structure ( noContraction global float) 0:82 s: direct index for structure ( noContraction out structure{ global float f1, global float f2}) 0:82 'all_precise_block' ( noContraction out block{ out structure{ global float f1, global float f2} s, out float x}) 0:82 Constant: 0:82 0 (const int) 0:82 Constant: 0:82 0 (const int) 0:82 add ( noContraction temp float) 0:82 add ( noContraction temp float) 0:82 'a' ( noContraction temp float) 0:82 'b' ( noContraction temp float) 0:82 Constant: 0:82 1.000000 0:83 move second child to first child ( temp float) 0:83 f2: direct index for structure ( noContraction global float) 0:83 s: direct index for structure ( noContraction out structure{ global float f1, global float f2}) 0:83 'all_precise_block' ( noContraction out block{ out structure{ global float f1, global float f2} s, out float x}) 0:83 Constant: 0:83 0 (const int) 0:83 Constant: 0:83 1 (const int) 0:83 subtract ( noContraction temp float) 0:83 subtract ( noContraction temp float) 0:83 'a' ( noContraction temp float) 0:83 'b' ( noContraction temp float) 0:83 Constant: 0:83 1.000000 0:84 move second child to first child ( temp float) 0:84 x: direct index for structure ( noContraction out float) 0:84 'all_precise_block' ( noContraction out block{ out structure{ global float f1, global float f2} s, out float x}) 0:84 Constant: 0:84 1 (const int) 0:84 component-wise multiply ( noContraction temp float) 0:84 component-wise multiply ( noContraction temp float) 0:84 'a' ( noContraction temp float) 0:84 'b' ( noContraction temp float) 0:84 Constant: 0:84 2.000000 0:86 Branch: Return with expression 0:86 add ( temp float) 0:86 'a' ( temp float) 0:86 'b' ( temp float) 0:89 Function Definition: main( ( global void) 0:89 Function Parameters: 0:? Linker Objects 0:? 'partial_precise_block' ( out block{ noContraction out structure{ global float f1, global float f2} s, out float x}) 0:? 'all_precise_block' ( noContraction out block{ out structure{ global float f1, global float f2} s, out float x}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 450 0:? Sequence 0:89 Function Definition: main( ( global void) 0:89 Function Parameters: 0:? Linker Objects 0:? 'partial_precise_block' ( out block{ noContraction out structure{ global float f1, global float f2} s, out float x}) 0:? 'all_precise_block' ( noContraction out block{ out structure{ global float f1, global float f2} s, out float x}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/precision.frag.out000066400000000000000000000240651506534232700221200ustar00rootroot00000000000000precision.frag ERROR: 0:3: 'float' : type requires declaration of default precision qualifier ERROR: 0:18: 'int' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type ERROR: 0:19: 'int' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type ERROR: 0:21: 'float' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type ERROR: 0:72: 'bool' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type ERROR: 0:75: 'structure' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type ERROR: 0:76: 'bool' : type cannot have precision qualifier ERROR: 7 compilation errors. No code generated. Shader version: 100 ERROR: node is still EOpNull! 0:5 Function Definition: foo(vf3; ( global lowp 2-component vector of float) 0:5 Function Parameters: 0:5 'mv3' ( in mediump 3-component vector of float) 0:? Sequence 0:8 Branch: Return with expression 0:8 vector swizzle ( temp highp 2-component vector of float) 0:8 'hv4' ( temp highp 4-component vector of float) 0:8 Sequence 0:8 Constant: 0:8 0 (const int) 0:8 Constant: 0:8 1 (const int) 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 Sequence 0:27 move second child to first child ( temp highp int) 0:27 'sum' ( temp lowp int) 0:27 add ( temp highp int) 0:27 'global_medium' ( global mediump int) 0:27 'global_high' ( global highp int) 0:29 move second child to first child ( temp mediump 4-component vector of float) 0:29 'gl_FragColor' ( fragColor mediump 4-component vector of float FragColor) 0:29 Construct vec4 ( temp mediump 4-component vector of float) 0:29 'color' ( smooth in mediump 3-component vector of float) 0:29 Constant: 0:29 1.000000 0:32 add second child into first child ( temp highp int) 0:32 'sum' ( temp lowp int) 0:32 'level1_high' ( temp highp int) 0:36 add second child into first child ( temp lowp int) 0:36 'sum' ( temp lowp int) 0:36 'level1_low' ( temp lowp int) 0:41 Sequence 0:41 move second child to first child ( temp mediump float) 0:41 'd' ( temp lowp float) 0:41 distance ( global mediump float) 0:41 'arg1' ( temp lowp float) 0:41 'arg2' ( temp mediump float) 0:? Sequence 0:45 add second child into first child ( temp lowp int) 0:45 'sum' ( temp lowp int) 0:45 'level2_low' ( temp lowp int) 0:49 add second child into first child ( temp highp int) 0:49 'sum' ( temp lowp int) 0:49 'level2_high' ( temp highp int) 0:58 Loop with condition not tested first 0:58 Loop Condition 0:58 Constant: 0:58 true (const bool) 0:58 Loop Body 0:51 Sequence 0:51 Test condition and select ( temp void) 0:51 Condition 0:51 Constant: 0:51 true (const bool) 0:51 true case 0:? Sequence 0:54 add second child into first child ( temp mediump int) 0:54 'sum' ( temp lowp int) 0:54 'level4_medium' ( temp mediump int) 0:57 add second child into first child ( temp highp int) 0:57 'sum' ( temp lowp int) 0:57 'level3_high' ( temp highp int) 0:60 add second child into first child ( temp highp int) 0:60 'sum' ( temp lowp int) 0:60 'level2_high2' ( temp highp int) 0:63 add second child into first child ( temp lowp int) 0:63 'sum' ( temp lowp int) 0:63 'level1_low3' ( temp lowp int) 0:65 add second child into first child ( temp lowp int) 0:65 'sum' ( temp lowp int) 0:65 add ( temp lowp int) 0:65 Constant: 0:65 4 (const int) 0:65 direct index ( temp lowp int) 0:65 add ( temp lowp 2-component vector of int) 0:65 component-wise multiply ( temp lowp 2-component vector of int) 0:65 Construct ivec2 ( temp lowp 2-component vector of int) 0:65 'level1_low3' ( temp lowp int) 0:65 Construct ivec2 ( temp lowp 2-component vector of int) 0:65 'level1_high' ( temp highp int) 0:65 Construct ivec2 ( temp lowp 2-component vector of int) 0:65 Comma ( temp highp int) 0:65 'level1_low3' ( temp lowp int) 0:65 'level1_high' ( temp highp int) 0:65 Constant: 0:65 0 (const int) 0:67 texture ( global lowp 4-component vector of float) 0:67 'samplerLow' ( uniform lowp sampler2D) 0:67 Constant: 0:67 0.100000 0:67 0.200000 0:68 texture ( global mediump 4-component vector of float) 0:68 'samplerMed' ( uniform mediump sampler2D) 0:68 Constant: 0:68 0.100000 0:68 0.200000 0:69 texture ( global highp 4-component vector of float) 0:69 'samplerHigh' ( uniform highp sampler2D) 0:69 Constant: 0:69 0.100000 0:69 0.200000 0:? Linker Objects 0:? 'color' ( smooth in mediump 3-component vector of float) 0:? 'global_medium' ( global mediump int) 0:? 'samplerLow' ( uniform lowp sampler2D) 0:? 'samplerMed' ( uniform mediump sampler2D) 0:? 'samplerHigh' ( uniform highp sampler2D) 0:? 'uint' ( global mediump 4-component vector of float) 0:? 'global_high' ( global highp int) 0:? 'b2' ( global mediump 2-component vector of bool) Linked fragment stage: Shader version: 100 ERROR: node is still EOpNull! 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 Sequence 0:27 move second child to first child ( temp highp int) 0:27 'sum' ( temp lowp int) 0:27 add ( temp highp int) 0:27 'global_medium' ( global mediump int) 0:27 'global_high' ( global highp int) 0:29 move second child to first child ( temp mediump 4-component vector of float) 0:29 'gl_FragColor' ( fragColor mediump 4-component vector of float FragColor) 0:29 Construct vec4 ( temp mediump 4-component vector of float) 0:29 'color' ( smooth in mediump 3-component vector of float) 0:29 Constant: 0:29 1.000000 0:32 add second child into first child ( temp highp int) 0:32 'sum' ( temp lowp int) 0:32 'level1_high' ( temp highp int) 0:36 add second child into first child ( temp lowp int) 0:36 'sum' ( temp lowp int) 0:36 'level1_low' ( temp lowp int) 0:41 Sequence 0:41 move second child to first child ( temp mediump float) 0:41 'd' ( temp lowp float) 0:41 distance ( global mediump float) 0:41 'arg1' ( temp lowp float) 0:41 'arg2' ( temp mediump float) 0:? Sequence 0:45 add second child into first child ( temp lowp int) 0:45 'sum' ( temp lowp int) 0:45 'level2_low' ( temp lowp int) 0:49 add second child into first child ( temp highp int) 0:49 'sum' ( temp lowp int) 0:49 'level2_high' ( temp highp int) 0:58 Loop with condition not tested first 0:58 Loop Condition 0:58 Constant: 0:58 true (const bool) 0:58 Loop Body 0:51 Sequence 0:51 Test condition and select ( temp void) 0:51 Condition 0:51 Constant: 0:51 true (const bool) 0:51 true case 0:? Sequence 0:54 add second child into first child ( temp mediump int) 0:54 'sum' ( temp lowp int) 0:54 'level4_medium' ( temp mediump int) 0:57 add second child into first child ( temp highp int) 0:57 'sum' ( temp lowp int) 0:57 'level3_high' ( temp highp int) 0:60 add second child into first child ( temp highp int) 0:60 'sum' ( temp lowp int) 0:60 'level2_high2' ( temp highp int) 0:63 add second child into first child ( temp lowp int) 0:63 'sum' ( temp lowp int) 0:63 'level1_low3' ( temp lowp int) 0:65 add second child into first child ( temp lowp int) 0:65 'sum' ( temp lowp int) 0:65 add ( temp lowp int) 0:65 Constant: 0:65 4 (const int) 0:65 direct index ( temp lowp int) 0:65 add ( temp lowp 2-component vector of int) 0:65 component-wise multiply ( temp lowp 2-component vector of int) 0:65 Construct ivec2 ( temp lowp 2-component vector of int) 0:65 'level1_low3' ( temp lowp int) 0:65 Construct ivec2 ( temp lowp 2-component vector of int) 0:65 'level1_high' ( temp highp int) 0:65 Construct ivec2 ( temp lowp 2-component vector of int) 0:65 Comma ( temp highp int) 0:65 'level1_low3' ( temp lowp int) 0:65 'level1_high' ( temp highp int) 0:65 Constant: 0:65 0 (const int) 0:67 texture ( global lowp 4-component vector of float) 0:67 'samplerLow' ( uniform lowp sampler2D) 0:67 Constant: 0:67 0.100000 0:67 0.200000 0:68 texture ( global mediump 4-component vector of float) 0:68 'samplerMed' ( uniform mediump sampler2D) 0:68 Constant: 0:68 0.100000 0:68 0.200000 0:69 texture ( global highp 4-component vector of float) 0:69 'samplerHigh' ( uniform highp sampler2D) 0:69 Constant: 0:69 0.100000 0:69 0.200000 0:? Linker Objects 0:? 'color' ( smooth in mediump 3-component vector of float) 0:? 'global_medium' ( global mediump int) 0:? 'samplerLow' ( uniform lowp sampler2D) 0:? 'samplerMed' ( uniform mediump sampler2D) 0:? 'samplerHigh' ( uniform highp sampler2D) 0:? 'uint' ( global mediump 4-component vector of float) 0:? 'global_high' ( global highp int) 0:? 'b2' ( global mediump 2-component vector of bool) glslang-16.0.0/Test/baseResults/precision.vert.out000066400000000000000000000103451506534232700221550ustar00rootroot00000000000000precision.vert ERROR: 0:7: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:8: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:14: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 3 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:18 Function Definition: main( ( global void) 0:18 Function Parameters: 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 't' ( temp highp 4-component vector of float) 0:20 texture ( global lowp 4-component vector of float) 0:20 's2D' ( uniform lowp sampler2D) 0:20 Constant: 0:20 0.100000 0:20 0.200000 0:21 add second child into first child ( temp highp 4-component vector of float) 0:21 't' ( temp highp 4-component vector of float) 0:21 texture ( global highp 4-component vector of float) 0:21 's2Dhigh' ( uniform highp sampler2D) 0:21 Constant: 0:21 0.100000 0:21 0.200000 0:22 add second child into first child ( temp highp 4-component vector of float) 0:22 't' ( temp highp 4-component vector of float) 0:22 texture ( global mediump float) 0:22 's2dAS' ( uniform mediump sampler2DArrayShadow) 0:22 Constant: 0:22 0.500000 0:22 0.500000 0:22 0.500000 0:22 0.500000 0:24 move second child to first child ( temp highp 4-component vector of float) 0:24 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:24 'pos' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( in highp 4-component vector of float) 0:? 's2D' ( uniform lowp sampler2D) 0:? 'sCube' ( uniform lowp samplerCube) 0:? 'is2DAbad' ( uniform mediump isampler2DArray) 0:? 's2dASbad' ( uniform mediump sampler2DArrayShadow) 0:? 's2dAS' ( uniform mediump sampler2DArrayShadow) 0:? 'is2DAbad2' ( uniform mediump isampler2DArray) 0:? 's2Dhigh' ( uniform highp sampler2D) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 300 ERROR: node is still EOpNull! 0:18 Function Definition: main( ( global void) 0:18 Function Parameters: 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 't' ( temp highp 4-component vector of float) 0:20 texture ( global lowp 4-component vector of float) 0:20 's2D' ( uniform lowp sampler2D) 0:20 Constant: 0:20 0.100000 0:20 0.200000 0:21 add second child into first child ( temp highp 4-component vector of float) 0:21 't' ( temp highp 4-component vector of float) 0:21 texture ( global highp 4-component vector of float) 0:21 's2Dhigh' ( uniform highp sampler2D) 0:21 Constant: 0:21 0.100000 0:21 0.200000 0:22 add second child into first child ( temp highp 4-component vector of float) 0:22 't' ( temp highp 4-component vector of float) 0:22 texture ( global mediump float) 0:22 's2dAS' ( uniform mediump sampler2DArrayShadow) 0:22 Constant: 0:22 0.500000 0:22 0.500000 0:22 0.500000 0:22 0.500000 0:24 move second child to first child ( temp highp 4-component vector of float) 0:24 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:24 'pos' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( in highp 4-component vector of float) 0:? 's2D' ( uniform lowp sampler2D) 0:? 'sCube' ( uniform lowp samplerCube) 0:? 'is2DAbad' ( uniform mediump isampler2DArray) 0:? 's2dASbad' ( uniform mediump sampler2DArrayShadow) 0:? 's2dAS' ( uniform mediump sampler2DArrayShadow) 0:? 'is2DAbad2' ( uniform mediump isampler2DArray) 0:? 's2Dhigh' ( uniform highp sampler2D) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/prepost.frag.out000066400000000000000000000252231506534232700216160ustar00rootroot00000000000000prepost.frag Shader version: 140 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp int) 0:10 'index' ( temp int) 0:10 Constant: 0:10 5 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 y: direct index for structure ( temp 5-element array of float) 0:12 'str' ( temp structure{ temp 5-element array of float y}) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 4 (const int) 0:12 Constant: 0:12 2.000000 0:13 move second child to first child ( temp float) 0:13 't' ( temp float) 0:13 Pre-Increment ( temp float) 0:13 indirect index ( temp float) 0:13 y: direct index for structure ( temp 5-element array of float) 0:13 'str' ( temp structure{ temp 5-element array of float y}) 0:13 Constant: 0:13 0 (const int) 0:13 Pre-Decrement ( temp int) 0:13 'index' ( temp int) 0:14 add second child into first child ( temp float) 0:14 direct index ( temp float) 0:14 y: direct index for structure ( temp 5-element array of float) 0:14 'str' ( temp structure{ temp 5-element array of float y}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 4 (const int) 0:14 't' ( temp float) 0:15 move second child to first child ( temp float) 0:15 't' ( temp float) 0:15 Post-Decrement ( temp float) 0:15 direct index ( temp float) 0:15 y: direct index for structure ( temp 5-element array of float) 0:15 'str' ( temp structure{ temp 5-element array of float y}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 4 (const int) 0:16 add second child into first child ( temp float) 0:16 indirect index ( temp float) 0:16 y: direct index for structure ( temp 5-element array of float) 0:16 'str' ( temp structure{ temp 5-element array of float y}) 0:16 Constant: 0:16 0 (const int) 0:16 Post-Increment ( temp int) 0:16 'index' ( temp int) 0:16 't' ( temp float) 0:17 Pre-Decrement ( temp float) 0:17 indirect index ( temp float) 0:17 y: direct index for structure ( temp 5-element array of float) 0:17 'str' ( temp structure{ temp 5-element array of float y}) 0:17 Constant: 0:17 0 (const int) 0:17 Pre-Decrement ( temp int) 0:17 'index' ( temp int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'x' ( temp float) 0:19 direct index ( temp float) 0:19 y: direct index for structure ( temp 5-element array of float) 0:19 'str' ( temp structure{ temp 5-element array of float y}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 4 (const int) 0:20 Pre-Increment ( temp float) 0:20 'x' ( temp float) 0:21 Pre-Decrement ( temp float) 0:21 'x' ( temp float) 0:22 Post-Increment ( temp float) 0:22 'x' ( temp float) 0:23 Post-Decrement ( temp float) 0:23 'x' ( temp float) 0:27 Sequence 0:27 move second child to first child ( temp float) 0:27 'y' ( temp float) 0:27 component-wise multiply ( temp float) 0:27 'x' ( temp float) 0:27 Pre-Increment ( temp float) 0:27 'x' ( temp float) 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'z' ( temp float) 0:28 component-wise multiply ( temp float) 0:28 'y' ( temp float) 0:28 Post-Decrement ( temp float) 0:28 'x' ( temp float) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'v' ( temp 4-component vector of float) 0:33 Constant: 0:33 1.000000 0:33 2.000000 0:33 3.000000 0:33 4.000000 0:34 move second child to first child ( temp float) 0:34 direct index ( temp float) 0:34 'v' ( temp 4-component vector of float) 0:34 Constant: 0:34 1 (const int) 0:34 Post-Decrement ( temp float) 0:34 direct index ( temp float) 0:34 'v' ( temp 4-component vector of float) 0:34 Constant: 0:34 2 (const int) 0:35 move second child to first child ( temp float) 0:35 direct index ( temp float) 0:35 'v' ( temp 4-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 Pre-Decrement ( temp float) 0:35 direct index ( temp float) 0:35 'v' ( temp 4-component vector of float) 0:35 Constant: 0:35 3 (const int) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:37 vector-scale ( temp 4-component vector of float) 0:37 'z' ( temp float) 0:37 'v' ( temp 4-component vector of float) 0:? Linker Objects Linked fragment stage: Shader version: 140 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Sequence 0:10 Sequence 0:10 move second child to first child ( temp int) 0:10 'index' ( temp int) 0:10 Constant: 0:10 5 (const int) 0:12 move second child to first child ( temp float) 0:12 direct index ( temp float) 0:12 y: direct index for structure ( temp 5-element array of float) 0:12 'str' ( temp structure{ temp 5-element array of float y}) 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 4 (const int) 0:12 Constant: 0:12 2.000000 0:13 move second child to first child ( temp float) 0:13 't' ( temp float) 0:13 Pre-Increment ( temp float) 0:13 indirect index ( temp float) 0:13 y: direct index for structure ( temp 5-element array of float) 0:13 'str' ( temp structure{ temp 5-element array of float y}) 0:13 Constant: 0:13 0 (const int) 0:13 Pre-Decrement ( temp int) 0:13 'index' ( temp int) 0:14 add second child into first child ( temp float) 0:14 direct index ( temp float) 0:14 y: direct index for structure ( temp 5-element array of float) 0:14 'str' ( temp structure{ temp 5-element array of float y}) 0:14 Constant: 0:14 0 (const int) 0:14 Constant: 0:14 4 (const int) 0:14 't' ( temp float) 0:15 move second child to first child ( temp float) 0:15 't' ( temp float) 0:15 Post-Decrement ( temp float) 0:15 direct index ( temp float) 0:15 y: direct index for structure ( temp 5-element array of float) 0:15 'str' ( temp structure{ temp 5-element array of float y}) 0:15 Constant: 0:15 0 (const int) 0:15 Constant: 0:15 4 (const int) 0:16 add second child into first child ( temp float) 0:16 indirect index ( temp float) 0:16 y: direct index for structure ( temp 5-element array of float) 0:16 'str' ( temp structure{ temp 5-element array of float y}) 0:16 Constant: 0:16 0 (const int) 0:16 Post-Increment ( temp int) 0:16 'index' ( temp int) 0:16 't' ( temp float) 0:17 Pre-Decrement ( temp float) 0:17 indirect index ( temp float) 0:17 y: direct index for structure ( temp 5-element array of float) 0:17 'str' ( temp structure{ temp 5-element array of float y}) 0:17 Constant: 0:17 0 (const int) 0:17 Pre-Decrement ( temp int) 0:17 'index' ( temp int) 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'x' ( temp float) 0:19 direct index ( temp float) 0:19 y: direct index for structure ( temp 5-element array of float) 0:19 'str' ( temp structure{ temp 5-element array of float y}) 0:19 Constant: 0:19 0 (const int) 0:19 Constant: 0:19 4 (const int) 0:20 Pre-Increment ( temp float) 0:20 'x' ( temp float) 0:21 Pre-Decrement ( temp float) 0:21 'x' ( temp float) 0:22 Post-Increment ( temp float) 0:22 'x' ( temp float) 0:23 Post-Decrement ( temp float) 0:23 'x' ( temp float) 0:27 Sequence 0:27 move second child to first child ( temp float) 0:27 'y' ( temp float) 0:27 component-wise multiply ( temp float) 0:27 'x' ( temp float) 0:27 Pre-Increment ( temp float) 0:27 'x' ( temp float) 0:28 Sequence 0:28 move second child to first child ( temp float) 0:28 'z' ( temp float) 0:28 component-wise multiply ( temp float) 0:28 'y' ( temp float) 0:28 Post-Decrement ( temp float) 0:28 'x' ( temp float) 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of float) 0:33 'v' ( temp 4-component vector of float) 0:33 Constant: 0:33 1.000000 0:33 2.000000 0:33 3.000000 0:33 4.000000 0:34 move second child to first child ( temp float) 0:34 direct index ( temp float) 0:34 'v' ( temp 4-component vector of float) 0:34 Constant: 0:34 1 (const int) 0:34 Post-Decrement ( temp float) 0:34 direct index ( temp float) 0:34 'v' ( temp 4-component vector of float) 0:34 Constant: 0:34 2 (const int) 0:35 move second child to first child ( temp float) 0:35 direct index ( temp float) 0:35 'v' ( temp 4-component vector of float) 0:35 Constant: 0:35 0 (const int) 0:35 Pre-Decrement ( temp float) 0:35 direct index ( temp float) 0:35 'v' ( temp 4-component vector of float) 0:35 Constant: 0:35 3 (const int) 0:37 move second child to first child ( temp 4-component vector of float) 0:37 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:37 vector-scale ( temp 4-component vector of float) 0:37 'z' ( temp float) 0:37 'v' ( temp 4-component vector of float) 0:? Linker Objects glslang-16.0.0/Test/baseResults/preprocess.arb_shading_language_include.vert.err000066400000000000000000000002071506534232700301320ustar00rootroot00000000000000ERROR: 0:7: '#include' : Could not process include directive for header name: bar.h ERROR: 1 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocess.arb_shading_language_include.vert.out000066400000000000000000000000001506534232700301400ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocess.inactive_stringify.vert.err000066400000000000000000000000001506534232700262120ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocess.inactive_stringify.vert.out000077500000000000000000000001221506534232700262410ustar00rootroot00000000000000#version 460 void main() { gl_Position = vec4(1.0); } glslang-16.0.0/Test/baseResults/preprocess.include_directive_missing_extension.vert.err000066400000000000000000000004331506534232700316320ustar00rootroot00000000000000ERROR: 0:3: '#include' : required extension not requested: Possible extensions include: GL_GOOGLE_include_directive GL_ARB_shading_language_include ERROR: 0:3: '#include' : Could not process include directive for header name: bar.h ERROR: 2 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocess.include_directive_missing_extension.vert.out000066400000000000000000000000001506534232700316370ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.bad_arg.vert.err000066400000000000000000000001561506534232700242460ustar00rootroot00000000000000ERROR: 0:8: 'macro expansion' : End of input in macro EXP2 ERROR: 1 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocessor.bad_arg.vert.out000066400000000000000000000000001506534232700242510ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.cpp_style___FILE__.vert.err000066400000000000000000000000001506534232700262500ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.cpp_style___FILE__.vert.out000066400000000000000000000005441506534232700263040ustar00rootroot00000000000000#extension GL_GOOGLE_cpp_style_line_directive : enable 0 #line 150 "a.h" "a.h" #line 24 "a.h" #line 42 "a.h" #line 30 "b.cc" "b.cc" #line 10 3 3 #line 48 3 #line 4 3 #line 55 100 100 #line 1000 "c" "c" #line 42 1 1 #line 42 "this-is-a-quite-long-name-maybe-i-should-shorten-it" "this-is-a-quite-long-name-maybe-i-should-shorten-it" glslang-16.0.0/Test/baseResults/preprocessor.cpp_style_line_directive.vert.err000066400000000000000000000011101506534232700277250ustar00rootroot00000000000000ERROR: 0:3: '#error' : at 0:3 ERROR: a.h:150: '#error' : at a.h:150 ERROR: a.h:24: '#error' : at a.h:24 ERROR: a.h:42: '#error' : at a.h:42 ERROR: b.cc:30: '#error' : at b.cc:30 ERROR: 3:10: '#error' : at 3:10 ERROR: 3:48: '#error' : at 3:48 ERROR: 3:4: '#error' : at 3:4 ERROR: 100:55: '#error' : at 100:55 ERROR: c:1000: '#error' : at c:1000 ERROR: 1:42: '#error' : at 1:42 ERROR: this-is-a-quite-long-name-maybe-i-should-shorten-it:42: '#error' : at this-is-a-quite-long-name-maybe-i-should-shorten-it:42 ERROR: 12 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocessor.cpp_style_line_directive.vert.out000066400000000000000000000000001506534232700277410ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.defined.vert.err000066400000000000000000000001631506534232700242630ustar00rootroot00000000000000ERROR: 0:2: '#define' : "defined" can't be (un)defined: defined ERROR: 1 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocessor.defined.vert.out000066400000000000000000000000001506534232700242700ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.edge_cases.vert.err000066400000000000000000000000001506534232700247350ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.edge_cases.vert.out000066400000000000000000000001351506534232700247650ustar00rootroot00000000000000#version 310 es void main() { gl_Position = vec4(3 + 2 + 2 * 4 + 2 + 3 * 2); } glslang-16.0.0/Test/baseResults/preprocessor.eof_missing.vert.err000066400000000000000000000000001506534232700251550ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.eof_missing.vert.out000066400000000000000000000000071506534232700252030ustar00rootroot00000000000000noEOF glslang-16.0.0/Test/baseResults/preprocessor.errors.vert.err000066400000000000000000000004361506534232700242040ustar00rootroot00000000000000ERROR: 0:9: '#error' : This should show up in pp output . ERROR: 0:14: '#' : invalid directive: def ERROR: 0:15: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile Y ERROR: 0:21: '' : missing #endif ERROR: 4 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocessor.errors.vert.out000066400000000000000000000000001506534232700242060ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.extensions.vert.err000066400000000000000000000001331506534232700250610ustar00rootroot00000000000000WARNING: 0:6: '#extension' : extension not supported: GL_EXT_shader_texture_image_samples glslang-16.0.0/Test/baseResults/preprocessor.extensions.vert.out000066400000000000000000000003721506534232700251050ustar00rootroot00000000000000#version 310 es #extension GL_EXT_geometry_shader : enable #extension GL_EXT_frag_depth : disable #extension GL_EXT_gpu_shader5 : require #extension GL_EXT_shader_texture_image_samples : warn #extension unknown_extension : require int main() { } glslang-16.0.0/Test/baseResults/preprocessor.function_macro.vert.err000066400000000000000000000000001506534232700256610ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.function_macro.vert.out000066400000000000000000000003411506534232700257100ustar00rootroot00000000000000#version 310 es int main() { gl_Position = vec4(3 + 1, 3 + 4, 3 + 1); gl_Position = vec4(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12); gl_Position = vec4(4 + 3 + 3); gl_Position = 4 + 3 + F.a; } glslang-16.0.0/Test/baseResults/preprocessor.include.disabled.vert.err000066400000000000000000000022021506534232700260520ustar00rootroot00000000000000ERROR: 0:8000: '#include' : required extension not requested: Possible extensions include: GL_GOOGLE_include_directive GL_ARB_shading_language_include ERROR: 0:8000: '#include' : must be followed by a header name ERROR: 0:8001: '#include' : required extension not requested: Possible extensions include: GL_GOOGLE_include_directive GL_ARB_shading_language_include ERROR: 0:8001: '#include' : must be followed by a header name ERROR: 0:8002: '#include' : required extension not requested: Possible extensions include: GL_GOOGLE_include_directive GL_ARB_shading_language_include ERROR: 0:8002: '#include' : Could not process include directive for header name: foo ERROR: 0:8003: '#include' : required extension not requested: Possible extensions include: GL_GOOGLE_include_directive GL_ARB_shading_language_include ERROR: 0:8003: '#include' : extra content after header name: foo ERROR: 0:8004: '#include' : required extension not requested: Possible extensions include: GL_GOOGLE_include_directive GL_ARB_shading_language_include ERROR: 0:8004: '#include' : expected newline after header name: no-eol ERROR: 10 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocessor.include.disabled.vert.out000066400000000000000000000000001506534232700260630ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.include.enabled.vert.err000066400000000000000000000065661506534232700257160ustar00rootroot00000000000000ERROR: 0:8000: '#include' : must be followed by a header name ERROR: 0:8001: '#include' : must be followed by a header name ERROR: 0:8002: '#include' : Could not process include directive for header name: foo.oeu ERROR: 0:8003: '#include' : Could not process include directive for header name: foo.oeu/ao eu/ao.h ERROR: 0:8004: '#include' : Could not process include directive for header name: foo ERROR: 0:8006: '#include' : Could not process include directive for header name: foo.oe ERROR: 0:8007: '#include' : Could not process include directive for header name: foo"bar" ERROR: 0:8008: '#include' : Could not process include directive for header name: foo\bar ERROR: 0:8009: '#include' : Could not process include directive for header name: foo.oe> ERROR: 0:8010: '#include' : Could not process include directive for header name: foo ERROR: 0:8011: '#include' : extra content after header name: foo2.h ERROR: 0:8012: '#include' : extra content after header name: foo.h ERROR: 0:8014: '#include' : Could not process include directive for header name: ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789 ERROR: 0:8016: '' : header name too long ERROR: 0:8016: '#include' : Could not process include directive for header name: ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789 ERROR: 0:8017: '#include' : expected newline after header name: no-eol ERROR: 17 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocessor.include.enabled.vert.out000066400000000000000000000000001506534232700257060ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.line.frag.err000066400000000000000000000000001506534232700235410ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.line.frag.out000066400000000000000000000000751506534232700235740ustar00rootroot00000000000000#version 310 es #line 1 2 #pragma something void main() { } glslang-16.0.0/Test/baseResults/preprocessor.line.vert.err000066400000000000000000000000001506534232700236020ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.line.vert.out000066400000000000000000000002341506534232700236320ustar00rootroot00000000000000#line 300 #line 2 #line 10 #line 2 #line 0 #line 4 #line 8 void main() { gl_Position = vec4(10); } #line 8 4 #line 12 3 #line 1 glslang-16.0.0/Test/baseResults/preprocessor.many.endif.vert.err000066400000000000000000000007201506534232700247140ustar00rootroot00000000000000ERROR: 0:1: '#endif' : mismatched statements ERROR: 0:2: '#endif' : mismatched statements ERROR: 0:3: '#endif' : mismatched statements ERROR: 0:4: '#endif' : mismatched statements ERROR: 0:5: '#endif' : mismatched statements ERROR: 0:6: '#endif' : mismatched statements ERROR: 0:7: '#endif' : mismatched statements ERROR: 0:10: 'preprocessor evaluation' : bad expression ERROR: 0:11: '' : missing #endif ERROR: 9 compilation errors. No code generated. glslang-16.0.0/Test/baseResults/preprocessor.many.endif.vert.out000066400000000000000000000000001506534232700247220ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.pragma.vert.err000066400000000000000000000000621506534232700241320ustar00rootroot00000000000000WARNING: 0:10: '#pragma once' : not implemented glslang-16.0.0/Test/baseResults/preprocessor.pragma.vert.out000066400000000000000000000002371506534232700241550ustar00rootroot00000000000000#version 310 es #pragma optimize(on) #pragma optimize(off) #pragma debug(on) #pragma debug(off) #pragma undefined_pragma(x,4) #pragma once int main() { } glslang-16.0.0/Test/baseResults/preprocessor.simple.vert.err000066400000000000000000000000001506534232700241440ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.simple.vert.out000066400000000000000000000014771506534232700242060ustar00rootroot00000000000000#version 310 es float fn(float x) { return x + 4.0; } int main() { gl_Position = vec4(1); gl_Position = clamp(1, 2, 3); gl_Position = vec4(1); gl_Position = vec4(1, 2); gl_Position = vec4(fn(3)); [].++ -- + - * % / - ! ~ << >> < > <= >= == != & ^ | && ^^ || ? : += -= *= /= %= <<= >>= &= |= ^= 1.2 2E10 5u - 5l f } struct S { int member1; float member2; vec4 member3; }; void bar(int x) { } void foo() { S s; s.member2 + s.member1; s.member3.zyx; s.member2.xxyz; s.member2.yyz; s.member2.xxyz(); s.member2.yzy; for (int i = 0; i < 100; i = i + 1) { bar(i) } vec3 a = vec3(0); vec3 b = a.zxyz; vec3 b = a.xxyz; vec3 b = a.yyz; vec3 b = a.xxyz(); vec3 b = a.yzy; vec3 b = a.z; yyz; yzy } glslang-16.0.0/Test/baseResults/preprocessor.success_if_parse_would_fail.vert.err000066400000000000000000000000001506534232700304000ustar00rootroot00000000000000glslang-16.0.0/Test/baseResults/preprocessor.success_if_parse_would_fail.vert.out000066400000000000000000000000601506534232700304250ustar00rootroot00000000000000int x() { something that shouldnt compile; } glslang-16.0.0/Test/baseResults/ps_sample.frag.out000066400000000000000000000036621506534232700221100ustar00rootroot00000000000000ps_sample.frag ERROR: 0:5: 'location' : the aliases sharing the location 1 must be the same basic type and interpolation qualification ERROR: 1 compilation errors. No code generated. Shader version: 430 Requested GL_ARB_enhanced_layouts ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'result' ( temp 4-component vector of float) 0:12 'gs_fs' ( smooth in 4-component vector of float) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'fs_out' ( out 4-component vector of float) 0:16 'result' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'gohan' (layout( location=1 component=0) flat in uint) 0:? 'goten' (layout( location=1 component=2) flat sample in 2-component vector of uint) 0:? 'gs_fs' ( smooth in 4-component vector of float) 0:? 'fs_out' ( out 4-component vector of float) Linked fragment stage: Shader version: 430 Requested GL_ARB_enhanced_layouts ERROR: node is still EOpNull! 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'result' ( temp 4-component vector of float) 0:12 'gs_fs' ( smooth in 4-component vector of float) 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'fs_out' ( out 4-component vector of float) 0:16 'result' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'gohan' (layout( location=1 component=0) flat in uint) 0:? 'goten' (layout( location=1 component=2) flat sample in 2-component vector of uint) 0:? 'gs_fs' ( smooth in 4-component vector of float) 0:? 'fs_out' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/ps_uint_int.frag.out000066400000000000000000000010331506534232700224460ustar00rootroot00000000000000ps_uint_int.frag Shader version: 450 0:? Sequence 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:? Linker Objects 0:? 'u' (layout( location=0 component=0) flat in uint) 0:? 'i' (layout( location=0 component=1) flat in int) Linked fragment stage: Shader version: 450 0:? Sequence 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:? Linker Objects 0:? 'u' (layout( location=0 component=0) flat in uint) 0:? 'i' (layout( location=0 component=1) flat in int) glslang-16.0.0/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out000066400000000000000000000047361506534232700311350ustar00rootroot00000000000000rayQuery-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 "" Decorate 11(params) Block MemberDecorate 11(params) 0 Offset 0 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 glslang-16.0.0/Test/baseResults/rayQuery-allOps.Error.rgen.out000066400000000000000000000047631506534232700243050ustar00rootroot00000000000000rayQuery-allOps.Error.rgen ERROR: 0:47: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global bool' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:49: '=' : cannot convert from ' global uint' to ' temp highp int' ERROR: 0:59: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global bool' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:64: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global 2-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:69: '' : boolean expression expected ERROR: 0:74: '' : boolean expression expected ERROR: 0:79: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' global 3-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:84: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' global 3-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:89: '' : boolean expression expected ERROR: 0:94: '' : boolean expression expected ERROR: 0:99: '' : boolean expression expected ERROR: 0:127: '=' : cannot convert from ' global uint' to ' temp highp int' ERROR: 0:145: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global 2-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:158: '' : boolean expression expected ERROR: 0:163: '' : boolean expression expected ERROR: 0:168: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' global 3-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:173: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' global 3-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:178: '' : boolean expression expected ERROR: 0:183: '' : boolean expression expected ERROR: 0:195: '' : boolean expression expected ERROR: 0:200: '' : boolean expression expected ERROR: 21 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/rayQuery-allOps.comp.out000066400000000000000000000576351506534232700232260ustar00rootroot00000000000000rayQuery-allOps.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 275 Capability Shader Capability RayQueryKHR Capability RayTraversalPrimitiveCullingKHR Capability RayQueryPositionFetchKHR Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing_position_fetch" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_EXT_ray_flags_primitive_culling" SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing_position_fetch" Name 4 "main" Name 6 "doSomething(" Name 10 "Ray" MemberName 10(Ray) 0 "pos" MemberName 10(Ray) 1 "tmin" MemberName 10(Ray) 2 "dir" MemberName 10(Ray) 3 "tmax" Name 12 "makeRayDesc(" Name 15 "Log" MemberName 15(Log) 0 "x" MemberName 15(Log) 1 "y" Name 17 "" Name 26 "ray" Name 43 "ray" Name 47 "rayQuery" Name 50 "rtas" Name 69 "candidateType" Name 78 "_mat4x3" Name 83 "_mat3x4" Name 143 "t" Name 156 "committedStatus" Name 184 "positions" Name 258 "o" Name 260 "d" Name 270 "Ray" MemberName 270(Ray) 0 "pos" MemberName 270(Ray) 1 "tmin" MemberName 270(Ray) 2 "dir" MemberName 270(Ray) 3 "tmax" Name 272 "Rays" MemberName 272(Rays) 0 "rays" Name 274 "" Decorate 15(Log) BufferBlock MemberDecorate 15(Log) 0 Offset 0 MemberDecorate 15(Log) 1 Offset 4 Decorate 17 Binding 0 Decorate 17 DescriptorSet 0 Decorate 50(rtas) Binding 1 Decorate 50(rtas) DescriptorSet 0 MemberDecorate 270(Ray) 0 Offset 0 MemberDecorate 270(Ray) 1 Offset 12 MemberDecorate 270(Ray) 2 Offset 16 MemberDecorate 270(Ray) 3 Offset 28 Decorate 271 ArrayStride 32 Decorate 272(Rays) BufferBlock MemberDecorate 272(Rays) 0 Offset 0 Decorate 274 Binding 2 Decorate 274 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 3 10(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float) 11: TypeFunction 10(Ray) 14: TypeInt 32 0 15(Log): TypeStruct 14(int) 14(int) 16: TypePointer Uniform 15(Log) 17: 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 20: 14(int) Constant 0 21: TypePointer Uniform 14(int) 23: 18(int) Constant 1 25: TypePointer Function 10(Ray) 27: 8(float) Constant 0 28: 9(fvec3) ConstantComposite 27 27 27 29: TypePointer Function 9(fvec3) 31: 18(int) Constant 2 32: 8(float) Constant 1065353216 33: 9(fvec3) ConstantComposite 32 27 27 35: TypePointer Function 8(float) 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 45: TypeRayQueryKHR 46: TypePointer Private 45 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR 49: TypePointer UniformConstant 48 50(rtas): 49(ptr) Variable UniformConstant 52: 14(int) Constant 255 66: TypeBool 68: TypePointer Function 14(int) 70: 66(bool) ConstantFalse 76: TypeMatrix 9(fvec3) 4 77: TypePointer Function 76 80: TypeVector 8(float) 4 81: TypeMatrix 80(fvec4) 3 82: TypePointer Function 81 86: 66(bool) ConstantTrue 91: TypeVector 8(float) 2 144: 8(float) Constant 1056964608 175: 14(int) Constant 1 181: 14(int) Constant 3 182: TypeArray 9(fvec3) 181 183: TypePointer Function 182 215: 14(int) Constant 2 248: 14(int) Constant 256 270(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float) 271: TypeRuntimeArray 270(Ray) 272(Rays): TypeStruct 271 273: TypePointer Uniform 272(Rays) 274: 273(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 43(ray): 25(ptr) Variable Function 69(candidateType): 68(ptr) Variable Function 78(_mat4x3): 77(ptr) Variable Function 83(_mat3x4): 82(ptr) Variable Function 143(t): 35(ptr) Variable Function 156(committedStatus): 68(ptr) Variable Function 184(positions): 183(ptr) Variable Function 258(o): 29(ptr) Variable Function 260(d): 29(ptr) Variable Function 44: 10(Ray) FunctionCall 12(makeRayDesc() Store 43(ray) 44 51: 48 Load 50(rtas) 53: 29(ptr) AccessChain 43(ray) 19 54: 9(fvec3) Load 53 55: 35(ptr) AccessChain 43(ray) 23 56: 8(float) Load 55 57: 29(ptr) AccessChain 43(ray) 31 58: 9(fvec3) Load 57 59: 35(ptr) AccessChain 43(ray) 37 60: 8(float) Load 59 RayQueryInitializeKHR 47(rayQuery) 51 20 52 54 56 58 60 Branch 61 61: Label LoopMerge 63 64 None Branch 65 65: Label 67: 66(bool) RayQueryProceedKHR 47(rayQuery) BranchConditional 67 62 63 62: Label 71: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 19 Store 69(candidateType) 71 72: 14(int) Load 69(candidateType) SelectionMerge 75 None Switch 72 75 case 0: 73 case 1: 74 73: Label RayQueryTerminateKHR 47(rayQuery) 79: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19 Store 78(_mat4x3) 79 84: 76 Load 78(_mat4x3) 85: 81 Transpose 84 Store 83(_mat3x4) 85 RayQueryConfirmIntersectionKHR 47(rayQuery) 87: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23 SelectionMerge 89 None BranchConditional 87 88 89 88: Label 90: 2 FunctionCall 6(doSomething() Branch 89 89: Label 92: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23 93: 8(float) CompositeExtract 92 0 94: 66(bool) FOrdEqual 93 27 SelectionMerge 96 None BranchConditional 94 95 96 95: Label 97: 2 FunctionCall 6(doSomething() Branch 96 96: Label 98: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23 99: 66(bool) SGreaterThan 98 19 SelectionMerge 101 None BranchConditional 99 100 101 100: Label 102: 2 FunctionCall 6(doSomething() Branch 101 101: Label 103: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23 104: 66(bool) SGreaterThan 103 19 SelectionMerge 106 None BranchConditional 104 105 106 105: Label 107: 2 FunctionCall 6(doSomething() Branch 106 106: Label 108: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23 109: 8(float) CompositeExtract 108 0 110: 66(bool) FOrdGreaterThan 109 27 SelectionMerge 112 None BranchConditional 110 111 112 111: Label 113: 2 FunctionCall 6(doSomething() Branch 112 112: Label 114: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23 115: 8(float) CompositeExtract 114 0 116: 66(bool) FOrdGreaterThan 115 27 SelectionMerge 118 None BranchConditional 116 117 118 117: Label 119: 2 FunctionCall 6(doSomething() Branch 118 118: Label 120: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23 121: 66(bool) SGreaterThan 120 19 SelectionMerge 123 None BranchConditional 121 122 123 122: Label 124: 2 FunctionCall 6(doSomething() Branch 123 123: Label 125: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23 126: 66(bool) FOrdGreaterThan 125 27 SelectionMerge 128 None BranchConditional 126 127 128 127: Label 129: 2 FunctionCall 6(doSomething() Branch 128 128: Label 130: 14(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 131: 66(bool) UGreaterThan 130 20 SelectionMerge 133 None BranchConditional 131 132 133 132: Label 134: 2 FunctionCall 6(doSomething() Branch 133 133: Label Branch 75 74: Label 136: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19 Store 78(_mat4x3) 136 137: 76 Load 78(_mat4x3) 138: 81 Transpose 137 Store 83(_mat3x4) 138 139: 66(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 47(rayQuery) SelectionMerge 141 None BranchConditional 139 140 141 140: Label 142: 2 FunctionCall 6(doSomething() Branch 141 141: Label Store 143(t) 144 145: 8(float) Load 143(t) RayQueryGenerateIntersectionKHR 47(rayQuery) 145 RayQueryTerminateKHR 47(rayQuery) Branch 75 75: Label Branch 64 64: Label Branch 61 63: Label 148: 35(ptr) AccessChain 83(_mat3x4) 19 20 149: 8(float) Load 148 150: 35(ptr) AccessChain 78(_mat4x3) 19 20 151: 8(float) Load 150 152: 66(bool) FOrdEqual 149 151 SelectionMerge 154 None BranchConditional 152 153 154 153: Label 155: 2 FunctionCall 6(doSomething() Branch 154 154: Label 157: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 23 Store 156(committedStatus) 157 158: 14(int) Load 156(committedStatus) SelectionMerge 162 None Switch 158 162 case 0: 159 case 1: 160 case 2: 161 159: Label 163: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 19 Store 78(_mat4x3) 163 164: 76 Load 78(_mat4x3) 165: 81 Transpose 164 Store 83(_mat3x4) 165 Branch 162 160: Label 167: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 23 Store 78(_mat4x3) 167 168: 76 Load 78(_mat4x3) 169: 81 Transpose 168 Store 83(_mat3x4) 169 170: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23 SelectionMerge 172 None BranchConditional 170 171 172 171: Label 173: 2 FunctionCall 6(doSomething() Branch 172 172: Label 174: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23 176: 8(float) CompositeExtract 174 1 177: 66(bool) FOrdEqual 176 27 SelectionMerge 179 None BranchConditional 177 178 179 178: Label 180: 2 FunctionCall 6(doSomething() Branch 179 179: Label 185: 182 RayQueryGetIntersectionTriangleVertexPositionsKHR 47(rayQuery) 23 Store 184(positions) 185 186: 35(ptr) AccessChain 184(positions) 19 20 187: 8(float) Load 186 188: 66(bool) FOrdLessThan 187 27 SelectionMerge 190 None BranchConditional 188 189 190 189: Label 191: 35(ptr) AccessChain 184(positions) 31 175 192: 8(float) Load 191 193: 66(bool) FOrdGreaterThan 192 27 Branch 190 190: Label 194: 66(bool) Phi 188 179 193 189 SelectionMerge 196 None BranchConditional 194 195 196 195: Label 197: 2 FunctionCall 6(doSomething() Branch 196 196: Label Branch 162 161: Label 199: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23 200: 66(bool) SGreaterThan 199 19 SelectionMerge 202 None BranchConditional 200 201 202 201: Label 203: 2 FunctionCall 6(doSomething() Branch 202 202: Label 204: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23 205: 66(bool) SGreaterThan 204 19 SelectionMerge 207 None BranchConditional 205 206 207 206: Label 208: 2 FunctionCall 6(doSomething() Branch 207 207: Label 209: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23 210: 66(bool) SGreaterThan 209 19 SelectionMerge 212 None BranchConditional 210 211 212 211: Label 213: 2 FunctionCall 6(doSomething() Branch 212 212: Label 214: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23 216: 8(float) CompositeExtract 214 2 217: 66(bool) FOrdGreaterThan 216 27 SelectionMerge 219 None BranchConditional 217 218 219 218: Label 220: 2 FunctionCall 6(doSomething() Branch 219 219: Label 221: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23 222: 8(float) CompositeExtract 221 0 223: 66(bool) FOrdGreaterThan 222 27 SelectionMerge 225 None BranchConditional 223 224 225 224: Label 226: 2 FunctionCall 6(doSomething() Branch 225 225: Label 227: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23 228: 66(bool) SGreaterThan 227 19 SelectionMerge 230 None BranchConditional 228 229 230 229: Label 231: 2 FunctionCall 6(doSomething() Branch 230 230: Label 232: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23 233: 66(bool) FOrdGreaterThan 232 27 SelectionMerge 235 None BranchConditional 233 234 235 234: Label 236: 2 FunctionCall 6(doSomething() Branch 235 235: Label Branch 162 162: Label 239: 35(ptr) AccessChain 83(_mat3x4) 19 20 240: 8(float) Load 239 241: 35(ptr) AccessChain 78(_mat4x3) 19 20 242: 8(float) Load 241 243: 66(bool) FOrdEqual 240 242 SelectionMerge 245 None BranchConditional 243 244 245 244: Label 246: 2 FunctionCall 6(doSomething() Branch 245 245: Label 247: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery) 249: 66(bool) UGreaterThan 247 248 SelectionMerge 251 None BranchConditional 249 250 251 250: Label 252: 2 FunctionCall 6(doSomething() Branch 251 251: Label 253: 8(float) RayQueryGetRayTMinKHR 47(rayQuery) 254: 66(bool) FOrdGreaterThan 253 27 SelectionMerge 256 None BranchConditional 254 255 256 255: Label 257: 2 FunctionCall 6(doSomething() Branch 256 256: Label 259: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery) Store 258(o) 259 261: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery) Store 260(d) 261 262: 35(ptr) AccessChain 258(o) 20 263: 8(float) Load 262 264: 35(ptr) AccessChain 260(d) 215 265: 8(float) Load 264 266: 66(bool) FOrdEqual 263 265 SelectionMerge 268 None BranchConditional 266 267 268 267: Label 269: 2 FunctionCall 6(doSomething() Branch 268 268: Label Return FunctionEnd 6(doSomething(): 2 Function None 3 7: Label 22: 21(ptr) AccessChain 17 19 Store 22 20 24: 21(ptr) AccessChain 17 23 Store 24 20 Return FunctionEnd 12(makeRayDesc(): 10(Ray) Function None 11 13: Label 26(ray): 25(ptr) Variable Function 30: 29(ptr) AccessChain 26(ray) 19 Store 30 28 34: 29(ptr) AccessChain 26(ray) 31 Store 34 33 36: 35(ptr) AccessChain 26(ray) 23 Store 36 27 39: 35(ptr) AccessChain 26(ray) 37 Store 39 38 40: 10(Ray) Load 26(ray) ReturnValue 40 FunctionEnd glslang-16.0.0/Test/baseResults/rayQuery-allOps.frag.out000066400000000000000000000544041506534232700231760ustar00rootroot00000000000000rayQuery-allOps.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 257 Capability Shader Capability RayQueryKHR Extension "SPV_KHR_ray_query" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 6 "doSomething(" Name 10 "Ray" MemberName 10(Ray) 0 "pos" MemberName 10(Ray) 1 "tmin" MemberName 10(Ray) 2 "dir" MemberName 10(Ray) 3 "tmax" Name 12 "makeRayDesc(" Name 15 "Log" MemberName 15(Log) 0 "x" MemberName 15(Log) 1 "y" Name 17 "" Name 26 "ray" Name 43 "ray" Name 47 "rayQuery" Name 50 "rtas" Name 69 "candidateType" Name 78 "_mat4x3" Name 83 "_mat3x4" Name 143 "t" Name 156 "committedStatus" Name 240 "o" Name 242 "d" Name 252 "Ray" MemberName 252(Ray) 0 "pos" MemberName 252(Ray) 1 "tmin" MemberName 252(Ray) 2 "dir" MemberName 252(Ray) 3 "tmax" Name 254 "Rays" MemberName 254(Rays) 0 "rays" Name 256 "" Decorate 15(Log) BufferBlock MemberDecorate 15(Log) 0 Offset 0 MemberDecorate 15(Log) 1 Offset 4 Decorate 17 Binding 0 Decorate 17 DescriptorSet 0 Decorate 50(rtas) Binding 1 Decorate 50(rtas) DescriptorSet 0 MemberDecorate 252(Ray) 0 Offset 0 MemberDecorate 252(Ray) 1 Offset 12 MemberDecorate 252(Ray) 2 Offset 16 MemberDecorate 252(Ray) 3 Offset 28 Decorate 253 ArrayStride 32 Decorate 254(Rays) BufferBlock MemberDecorate 254(Rays) 0 Offset 0 Decorate 256 Binding 2 Decorate 256 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 3 10(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float) 11: TypeFunction 10(Ray) 14: TypeInt 32 0 15(Log): TypeStruct 14(int) 14(int) 16: TypePointer Uniform 15(Log) 17: 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 20: 14(int) Constant 0 21: TypePointer Uniform 14(int) 23: 18(int) Constant 1 25: TypePointer Function 10(Ray) 27: 8(float) Constant 0 28: 9(fvec3) ConstantComposite 27 27 27 29: TypePointer Function 9(fvec3) 31: 18(int) Constant 2 32: 8(float) Constant 1065353216 33: 9(fvec3) ConstantComposite 32 27 27 35: TypePointer Function 8(float) 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 45: TypeRayQueryKHR 46: TypePointer Private 45 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR 49: TypePointer UniformConstant 48 50(rtas): 49(ptr) Variable UniformConstant 52: 14(int) Constant 255 66: TypeBool 68: TypePointer Function 14(int) 70: 66(bool) ConstantFalse 76: TypeMatrix 9(fvec3) 4 77: TypePointer Function 76 80: TypeVector 8(float) 4 81: TypeMatrix 80(fvec4) 3 82: TypePointer Function 81 86: 66(bool) ConstantTrue 91: TypeVector 8(float) 2 144: 8(float) Constant 1056964608 175: 14(int) Constant 1 198: 14(int) Constant 2 252(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float) 253: TypeRuntimeArray 252(Ray) 254(Rays): TypeStruct 253 255: TypePointer Uniform 254(Rays) 256: 255(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 43(ray): 25(ptr) Variable Function 69(candidateType): 68(ptr) Variable Function 78(_mat4x3): 77(ptr) Variable Function 83(_mat3x4): 82(ptr) Variable Function 143(t): 35(ptr) Variable Function 156(committedStatus): 68(ptr) Variable Function 240(o): 29(ptr) Variable Function 242(d): 29(ptr) Variable Function 44: 10(Ray) FunctionCall 12(makeRayDesc() Store 43(ray) 44 51: 48 Load 50(rtas) 53: 29(ptr) AccessChain 43(ray) 19 54: 9(fvec3) Load 53 55: 35(ptr) AccessChain 43(ray) 23 56: 8(float) Load 55 57: 29(ptr) AccessChain 43(ray) 31 58: 9(fvec3) Load 57 59: 35(ptr) AccessChain 43(ray) 37 60: 8(float) Load 59 RayQueryInitializeKHR 47(rayQuery) 51 20 52 54 56 58 60 Branch 61 61: Label LoopMerge 63 64 None Branch 65 65: Label 67: 66(bool) RayQueryProceedKHR 47(rayQuery) BranchConditional 67 62 63 62: Label 71: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 19 Store 69(candidateType) 71 72: 14(int) Load 69(candidateType) SelectionMerge 75 None Switch 72 75 case 0: 73 case 1: 74 73: Label RayQueryTerminateKHR 47(rayQuery) 79: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19 Store 78(_mat4x3) 79 84: 76 Load 78(_mat4x3) 85: 81 Transpose 84 Store 83(_mat3x4) 85 RayQueryConfirmIntersectionKHR 47(rayQuery) 87: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23 SelectionMerge 89 None BranchConditional 87 88 89 88: Label 90: 2 FunctionCall 6(doSomething() Branch 89 89: Label 92: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23 93: 8(float) CompositeExtract 92 0 94: 66(bool) FOrdEqual 93 27 SelectionMerge 96 None BranchConditional 94 95 96 95: Label 97: 2 FunctionCall 6(doSomething() Branch 96 96: Label 98: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23 99: 66(bool) SGreaterThan 98 19 SelectionMerge 101 None BranchConditional 99 100 101 100: Label 102: 2 FunctionCall 6(doSomething() Branch 101 101: Label 103: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23 104: 66(bool) SGreaterThan 103 19 SelectionMerge 106 None BranchConditional 104 105 106 105: Label 107: 2 FunctionCall 6(doSomething() Branch 106 106: Label 108: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23 109: 8(float) CompositeExtract 108 0 110: 66(bool) FOrdGreaterThan 109 27 SelectionMerge 112 None BranchConditional 110 111 112 111: Label 113: 2 FunctionCall 6(doSomething() Branch 112 112: Label 114: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23 115: 8(float) CompositeExtract 114 0 116: 66(bool) FOrdGreaterThan 115 27 SelectionMerge 118 None BranchConditional 116 117 118 117: Label 119: 2 FunctionCall 6(doSomething() Branch 118 118: Label 120: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23 121: 66(bool) SGreaterThan 120 19 SelectionMerge 123 None BranchConditional 121 122 123 122: Label 124: 2 FunctionCall 6(doSomething() Branch 123 123: Label 125: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23 126: 66(bool) FOrdGreaterThan 125 27 SelectionMerge 128 None BranchConditional 126 127 128 127: Label 129: 2 FunctionCall 6(doSomething() Branch 128 128: Label 130: 14(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 131: 66(bool) UGreaterThan 130 20 SelectionMerge 133 None BranchConditional 131 132 133 132: Label 134: 2 FunctionCall 6(doSomething() Branch 133 133: Label Branch 75 74: Label 136: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19 Store 78(_mat4x3) 136 137: 76 Load 78(_mat4x3) 138: 81 Transpose 137 Store 83(_mat3x4) 138 139: 66(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 47(rayQuery) SelectionMerge 141 None BranchConditional 139 140 141 140: Label 142: 2 FunctionCall 6(doSomething() Branch 141 141: Label Store 143(t) 144 145: 8(float) Load 143(t) RayQueryGenerateIntersectionKHR 47(rayQuery) 145 RayQueryTerminateKHR 47(rayQuery) Branch 75 75: Label Branch 64 64: Label Branch 61 63: Label 148: 35(ptr) AccessChain 83(_mat3x4) 19 20 149: 8(float) Load 148 150: 35(ptr) AccessChain 78(_mat4x3) 19 20 151: 8(float) Load 150 152: 66(bool) FOrdEqual 149 151 SelectionMerge 154 None BranchConditional 152 153 154 153: Label 155: 2 FunctionCall 6(doSomething() Branch 154 154: Label 157: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 23 Store 156(committedStatus) 157 158: 14(int) Load 156(committedStatus) SelectionMerge 162 None Switch 158 162 case 0: 159 case 1: 160 case 2: 161 159: Label 163: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 19 Store 78(_mat4x3) 163 164: 76 Load 78(_mat4x3) 165: 81 Transpose 164 Store 83(_mat3x4) 165 Branch 162 160: Label 167: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 23 Store 78(_mat4x3) 167 168: 76 Load 78(_mat4x3) 169: 81 Transpose 168 Store 83(_mat3x4) 169 170: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23 SelectionMerge 172 None BranchConditional 170 171 172 171: Label 173: 2 FunctionCall 6(doSomething() Branch 172 172: Label 174: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23 176: 8(float) CompositeExtract 174 1 177: 66(bool) FOrdEqual 176 27 SelectionMerge 179 None BranchConditional 177 178 179 178: Label 180: 2 FunctionCall 6(doSomething() Branch 179 179: Label Branch 162 161: Label 182: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23 183: 66(bool) SGreaterThan 182 19 SelectionMerge 185 None BranchConditional 183 184 185 184: Label 186: 2 FunctionCall 6(doSomething() Branch 185 185: Label 187: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23 188: 66(bool) SGreaterThan 187 19 SelectionMerge 190 None BranchConditional 188 189 190 189: Label 191: 2 FunctionCall 6(doSomething() Branch 190 190: Label 192: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23 193: 66(bool) SGreaterThan 192 19 SelectionMerge 195 None BranchConditional 193 194 195 194: Label 196: 2 FunctionCall 6(doSomething() Branch 195 195: Label 197: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23 199: 8(float) CompositeExtract 197 2 200: 66(bool) FOrdGreaterThan 199 27 SelectionMerge 202 None BranchConditional 200 201 202 201: Label 203: 2 FunctionCall 6(doSomething() Branch 202 202: Label 204: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23 205: 8(float) CompositeExtract 204 0 206: 66(bool) FOrdGreaterThan 205 27 SelectionMerge 208 None BranchConditional 206 207 208 207: Label 209: 2 FunctionCall 6(doSomething() Branch 208 208: Label 210: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23 211: 66(bool) SGreaterThan 210 19 SelectionMerge 213 None BranchConditional 211 212 213 212: Label 214: 2 FunctionCall 6(doSomething() Branch 213 213: Label 215: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23 216: 66(bool) FOrdGreaterThan 215 27 SelectionMerge 218 None BranchConditional 216 217 218 217: Label 219: 2 FunctionCall 6(doSomething() Branch 218 218: Label Branch 162 162: Label 222: 35(ptr) AccessChain 83(_mat3x4) 19 20 223: 8(float) Load 222 224: 35(ptr) AccessChain 78(_mat4x3) 19 20 225: 8(float) Load 224 226: 66(bool) FOrdEqual 223 225 SelectionMerge 228 None BranchConditional 226 227 228 227: Label 229: 2 FunctionCall 6(doSomething() Branch 228 228: Label 230: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery) 231: 66(bool) UGreaterThan 230 20 SelectionMerge 233 None BranchConditional 231 232 233 232: Label 234: 2 FunctionCall 6(doSomething() Branch 233 233: Label 235: 8(float) RayQueryGetRayTMinKHR 47(rayQuery) 236: 66(bool) FOrdGreaterThan 235 27 SelectionMerge 238 None BranchConditional 236 237 238 237: Label 239: 2 FunctionCall 6(doSomething() Branch 238 238: Label 241: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery) Store 240(o) 241 243: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery) Store 242(d) 243 244: 35(ptr) AccessChain 240(o) 20 245: 8(float) Load 244 246: 35(ptr) AccessChain 242(d) 198 247: 8(float) Load 246 248: 66(bool) FOrdEqual 245 247 SelectionMerge 250 None BranchConditional 248 249 250 249: Label 251: 2 FunctionCall 6(doSomething() Branch 250 250: Label Return FunctionEnd 6(doSomething(): 2 Function None 3 7: Label 22: 21(ptr) AccessChain 17 19 Store 22 20 24: 21(ptr) AccessChain 17 23 Store 24 20 Return FunctionEnd 12(makeRayDesc(): 10(Ray) Function None 11 13: Label 26(ray): 25(ptr) Variable Function 30: 29(ptr) AccessChain 26(ray) 19 Store 30 28 34: 29(ptr) AccessChain 26(ray) 31 Store 34 33 36: 35(ptr) AccessChain 26(ray) 23 Store 36 27 39: 35(ptr) AccessChain 26(ray) 37 Store 39 38 40: 10(Ray) Load 26(ray) ReturnValue 40 FunctionEnd glslang-16.0.0/Test/baseResults/rayQuery-allOps.rgen.out000066400000000000000000000544221506534232700232120ustar00rootroot00000000000000rayQuery-allOps.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 257 Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 6 "doSomething(" Name 10 "Ray" MemberName 10(Ray) 0 "pos" MemberName 10(Ray) 1 "tmin" MemberName 10(Ray) 2 "dir" MemberName 10(Ray) 3 "tmax" Name 12 "makeRayDesc(" Name 15 "Log" MemberName 15(Log) 0 "x" MemberName 15(Log) 1 "y" Name 17 "" Name 26 "ray" Name 43 "ray" Name 47 "rayQuery" Name 50 "rtas" Name 69 "candidateType" Name 78 "_mat4x3" Name 83 "_mat3x4" Name 143 "t" Name 156 "committedStatus" Name 240 "o" Name 242 "d" Name 252 "Ray" MemberName 252(Ray) 0 "pos" MemberName 252(Ray) 1 "tmin" MemberName 252(Ray) 2 "dir" MemberName 252(Ray) 3 "tmax" Name 254 "Rays" MemberName 254(Rays) 0 "rays" Name 256 "" Decorate 15(Log) BufferBlock MemberDecorate 15(Log) 0 Offset 0 MemberDecorate 15(Log) 1 Offset 4 Decorate 17 Binding 0 Decorate 17 DescriptorSet 0 Decorate 50(rtas) Binding 1 Decorate 50(rtas) DescriptorSet 0 MemberDecorate 252(Ray) 0 Offset 0 MemberDecorate 252(Ray) 1 Offset 12 MemberDecorate 252(Ray) 2 Offset 16 MemberDecorate 252(Ray) 3 Offset 28 Decorate 253 ArrayStride 32 Decorate 254(Rays) BufferBlock MemberDecorate 254(Rays) 0 Offset 0 Decorate 256 Binding 2 Decorate 256 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 3 10(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float) 11: TypeFunction 10(Ray) 14: TypeInt 32 0 15(Log): TypeStruct 14(int) 14(int) 16: TypePointer Uniform 15(Log) 17: 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 20: 14(int) Constant 0 21: TypePointer Uniform 14(int) 23: 18(int) Constant 1 25: TypePointer Function 10(Ray) 27: 8(float) Constant 0 28: 9(fvec3) ConstantComposite 27 27 27 29: TypePointer Function 9(fvec3) 31: 18(int) Constant 2 32: 8(float) Constant 1065353216 33: 9(fvec3) ConstantComposite 32 27 27 35: TypePointer Function 8(float) 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 45: TypeRayQueryKHR 46: TypePointer Private 45 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR 49: TypePointer UniformConstant 48 50(rtas): 49(ptr) Variable UniformConstant 52: 14(int) Constant 255 66: TypeBool 68: TypePointer Function 14(int) 70: 66(bool) ConstantFalse 76: TypeMatrix 9(fvec3) 4 77: TypePointer Function 76 80: TypeVector 8(float) 4 81: TypeMatrix 80(fvec4) 3 82: TypePointer Function 81 86: 66(bool) ConstantTrue 91: TypeVector 8(float) 2 144: 8(float) Constant 1056964608 175: 14(int) Constant 1 198: 14(int) Constant 2 252(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float) 253: TypeRuntimeArray 252(Ray) 254(Rays): TypeStruct 253 255: TypePointer Uniform 254(Rays) 256: 255(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 43(ray): 25(ptr) Variable Function 69(candidateType): 68(ptr) Variable Function 78(_mat4x3): 77(ptr) Variable Function 83(_mat3x4): 82(ptr) Variable Function 143(t): 35(ptr) Variable Function 156(committedStatus): 68(ptr) Variable Function 240(o): 29(ptr) Variable Function 242(d): 29(ptr) Variable Function 44: 10(Ray) FunctionCall 12(makeRayDesc() Store 43(ray) 44 51: 48 Load 50(rtas) 53: 29(ptr) AccessChain 43(ray) 19 54: 9(fvec3) Load 53 55: 35(ptr) AccessChain 43(ray) 23 56: 8(float) Load 55 57: 29(ptr) AccessChain 43(ray) 31 58: 9(fvec3) Load 57 59: 35(ptr) AccessChain 43(ray) 37 60: 8(float) Load 59 RayQueryInitializeKHR 47(rayQuery) 51 20 52 54 56 58 60 Branch 61 61: Label LoopMerge 63 64 None Branch 65 65: Label 67: 66(bool) RayQueryProceedKHR 47(rayQuery) BranchConditional 67 62 63 62: Label 71: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 19 Store 69(candidateType) 71 72: 14(int) Load 69(candidateType) SelectionMerge 75 None Switch 72 75 case 0: 73 case 1: 74 73: Label RayQueryTerminateKHR 47(rayQuery) 79: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19 Store 78(_mat4x3) 79 84: 76 Load 78(_mat4x3) 85: 81 Transpose 84 Store 83(_mat3x4) 85 RayQueryConfirmIntersectionKHR 47(rayQuery) 87: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23 SelectionMerge 89 None BranchConditional 87 88 89 88: Label 90: 2 FunctionCall 6(doSomething() Branch 89 89: Label 92: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23 93: 8(float) CompositeExtract 92 0 94: 66(bool) FOrdEqual 93 27 SelectionMerge 96 None BranchConditional 94 95 96 95: Label 97: 2 FunctionCall 6(doSomething() Branch 96 96: Label 98: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23 99: 66(bool) SGreaterThan 98 19 SelectionMerge 101 None BranchConditional 99 100 101 100: Label 102: 2 FunctionCall 6(doSomething() Branch 101 101: Label 103: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23 104: 66(bool) SGreaterThan 103 19 SelectionMerge 106 None BranchConditional 104 105 106 105: Label 107: 2 FunctionCall 6(doSomething() Branch 106 106: Label 108: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23 109: 8(float) CompositeExtract 108 0 110: 66(bool) FOrdGreaterThan 109 27 SelectionMerge 112 None BranchConditional 110 111 112 111: Label 113: 2 FunctionCall 6(doSomething() Branch 112 112: Label 114: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23 115: 8(float) CompositeExtract 114 0 116: 66(bool) FOrdGreaterThan 115 27 SelectionMerge 118 None BranchConditional 116 117 118 117: Label 119: 2 FunctionCall 6(doSomething() Branch 118 118: Label 120: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23 121: 66(bool) SGreaterThan 120 19 SelectionMerge 123 None BranchConditional 121 122 123 122: Label 124: 2 FunctionCall 6(doSomething() Branch 123 123: Label 125: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23 126: 66(bool) FOrdGreaterThan 125 27 SelectionMerge 128 None BranchConditional 126 127 128 127: Label 129: 2 FunctionCall 6(doSomething() Branch 128 128: Label 130: 14(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 131: 66(bool) UGreaterThan 130 20 SelectionMerge 133 None BranchConditional 131 132 133 132: Label 134: 2 FunctionCall 6(doSomething() Branch 133 133: Label Branch 75 74: Label 136: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19 Store 78(_mat4x3) 136 137: 76 Load 78(_mat4x3) 138: 81 Transpose 137 Store 83(_mat3x4) 138 139: 66(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 47(rayQuery) SelectionMerge 141 None BranchConditional 139 140 141 140: Label 142: 2 FunctionCall 6(doSomething() Branch 141 141: Label Store 143(t) 144 145: 8(float) Load 143(t) RayQueryGenerateIntersectionKHR 47(rayQuery) 145 RayQueryTerminateKHR 47(rayQuery) Branch 75 75: Label Branch 64 64: Label Branch 61 63: Label 148: 35(ptr) AccessChain 83(_mat3x4) 19 20 149: 8(float) Load 148 150: 35(ptr) AccessChain 78(_mat4x3) 19 20 151: 8(float) Load 150 152: 66(bool) FOrdEqual 149 151 SelectionMerge 154 None BranchConditional 152 153 154 153: Label 155: 2 FunctionCall 6(doSomething() Branch 154 154: Label 157: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 23 Store 156(committedStatus) 157 158: 14(int) Load 156(committedStatus) SelectionMerge 162 None Switch 158 162 case 0: 159 case 1: 160 case 2: 161 159: Label 163: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 19 Store 78(_mat4x3) 163 164: 76 Load 78(_mat4x3) 165: 81 Transpose 164 Store 83(_mat3x4) 165 Branch 162 160: Label 167: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 23 Store 78(_mat4x3) 167 168: 76 Load 78(_mat4x3) 169: 81 Transpose 168 Store 83(_mat3x4) 169 170: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23 SelectionMerge 172 None BranchConditional 170 171 172 171: Label 173: 2 FunctionCall 6(doSomething() Branch 172 172: Label 174: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23 176: 8(float) CompositeExtract 174 1 177: 66(bool) FOrdEqual 176 27 SelectionMerge 179 None BranchConditional 177 178 179 178: Label 180: 2 FunctionCall 6(doSomething() Branch 179 179: Label Branch 162 161: Label 182: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23 183: 66(bool) SGreaterThan 182 19 SelectionMerge 185 None BranchConditional 183 184 185 184: Label 186: 2 FunctionCall 6(doSomething() Branch 185 185: Label 187: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23 188: 66(bool) SGreaterThan 187 19 SelectionMerge 190 None BranchConditional 188 189 190 189: Label 191: 2 FunctionCall 6(doSomething() Branch 190 190: Label 192: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23 193: 66(bool) SGreaterThan 192 19 SelectionMerge 195 None BranchConditional 193 194 195 194: Label 196: 2 FunctionCall 6(doSomething() Branch 195 195: Label 197: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23 199: 8(float) CompositeExtract 197 2 200: 66(bool) FOrdGreaterThan 199 27 SelectionMerge 202 None BranchConditional 200 201 202 201: Label 203: 2 FunctionCall 6(doSomething() Branch 202 202: Label 204: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23 205: 8(float) CompositeExtract 204 0 206: 66(bool) FOrdGreaterThan 205 27 SelectionMerge 208 None BranchConditional 206 207 208 207: Label 209: 2 FunctionCall 6(doSomething() Branch 208 208: Label 210: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23 211: 66(bool) SGreaterThan 210 19 SelectionMerge 213 None BranchConditional 211 212 213 212: Label 214: 2 FunctionCall 6(doSomething() Branch 213 213: Label 215: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23 216: 66(bool) FOrdGreaterThan 215 27 SelectionMerge 218 None BranchConditional 216 217 218 217: Label 219: 2 FunctionCall 6(doSomething() Branch 218 218: Label Branch 162 162: Label 222: 35(ptr) AccessChain 83(_mat3x4) 19 20 223: 8(float) Load 222 224: 35(ptr) AccessChain 78(_mat4x3) 19 20 225: 8(float) Load 224 226: 66(bool) FOrdEqual 223 225 SelectionMerge 228 None BranchConditional 226 227 228 227: Label 229: 2 FunctionCall 6(doSomething() Branch 228 228: Label 230: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery) 231: 66(bool) UGreaterThan 230 20 SelectionMerge 233 None BranchConditional 231 232 233 232: Label 234: 2 FunctionCall 6(doSomething() Branch 233 233: Label 235: 8(float) RayQueryGetRayTMinKHR 47(rayQuery) 236: 66(bool) FOrdGreaterThan 235 27 SelectionMerge 238 None BranchConditional 236 237 238 237: Label 239: 2 FunctionCall 6(doSomething() Branch 238 238: Label 241: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery) Store 240(o) 241 243: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery) Store 242(d) 243 244: 35(ptr) AccessChain 240(o) 20 245: 8(float) Load 244 246: 35(ptr) AccessChain 242(d) 198 247: 8(float) Load 246 248: 66(bool) FOrdEqual 245 247 SelectionMerge 250 None BranchConditional 248 249 250 249: Label 251: 2 FunctionCall 6(doSomething() Branch 250 250: Label Return FunctionEnd 6(doSomething(): 2 Function None 3 7: Label 22: 21(ptr) AccessChain 17 19 Store 22 20 24: 21(ptr) AccessChain 17 23 Store 24 20 Return FunctionEnd 12(makeRayDesc(): 10(Ray) Function None 11 13: Label 26(ray): 25(ptr) Variable Function 30: 29(ptr) AccessChain 26(ray) 19 Store 30 28 34: 29(ptr) AccessChain 26(ray) 31 Store 34 33 36: 35(ptr) AccessChain 26(ray) 23 Store 36 27 39: 35(ptr) AccessChain 26(ray) 37 Store 39 38 40: 10(Ray) Load 26(ray) ReturnValue 40 FunctionEnd glslang-16.0.0/Test/baseResults/rayQuery-committed.Error.rgen.out000066400000000000000000000020601506534232700250240ustar00rootroot00000000000000rayQuery-committed.Error.rgen ERROR: 0:48: 'committed' : argument must be compile-time constant ERROR: 0:53: 'committed' : argument must be compile-time constant ERROR: 0:54: 'committed' : argument must be compile-time constant ERROR: 0:58: 'committed' : argument must be compile-time constant ERROR: 0:62: 'committed' : argument must be compile-time constant ERROR: 0:66: 'committed' : argument must be compile-time constant ERROR: 0:70: 'committed' : argument must be compile-time constant ERROR: 0:74: 'committed' : argument must be compile-time constant ERROR: 0:78: 'committed' : argument must be compile-time constant ERROR: 0:82: 'committed' : argument must be compile-time constant ERROR: 0:86: 'committed' : argument must be compile-time constant ERROR: 0:90: 'committed' : argument must be compile-time constant ERROR: 0:97: 'committed' : argument must be compile-time constant ERROR: 0:100: 'committed' : argument must be compile-time constant ERROR: 14 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/rayQuery-global.rgen.out000066400000000000000000000074511506534232700232200ustar00rootroot00000000000000rayQuery-global.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability RayQueryKHR Capability RayTracingKHR Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" Source GLSL 460 SourceExtension "GL_EXT_ray_flags_primitive_culling" SourceExtension "GL_EXT_ray_query" Name 4 "main" Name 10 "otherWrapper(rq1;" Name 9 "rq" Name 13 "wrapper(rq1;" Name 12 "rq" Name 17 "rqGlobal" Name 22 "rq2" Name 27 "rtas" Name 40 "rq2" Decorate 27(rtas) Binding 1 Decorate 27(rtas) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeRayQueryKHR 7: TypePointer Private 6 8: TypeFunction 2 7(ptr) 15: TypeBool 17(rqGlobal): 7(ptr) Variable Private 22(rq2): 7(ptr) Variable Private 25: TypeAccelerationStructureKHR 26: TypePointer UniformConstant 25 27(rtas): 26(ptr) Variable UniformConstant 29: TypeInt 32 0 30: 29(int) Constant 0 31: 29(int) Constant 255 32: TypeFloat 32 33: TypeVector 32(float) 3 34: 32(float) Constant 0 35: 33(fvec3) ConstantComposite 34 34 34 36: 32(float) Constant 1065353216 37: 33(fvec3) ConstantComposite 36 34 34 40(rq2): 7(ptr) Variable Private 4(main): 2 Function None 3 5: Label 28: 25 Load 27(rtas) RayQueryInitializeKHR 17(rqGlobal) 28 30 31 35 34 37 36 38: 2 FunctionCall 13(wrapper(rq1;) 17(rqGlobal) 39: 2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal) 41: 25 Load 27(rtas) RayQueryInitializeKHR 40(rq2) 41 30 31 35 34 37 36 42: 2 FunctionCall 13(wrapper(rq1;) 40(rq2) 43: 2 FunctionCall 10(otherWrapper(rq1;) 40(rq2) Return FunctionEnd 10(otherWrapper(rq1;): 2 Function None 8 9(rq): 7(ptr) FunctionParameter 11: Label 16: 15(bool) RayQueryProceedKHR 9(rq) 18: 15(bool) RayQueryProceedKHR 17(rqGlobal) Return FunctionEnd 13(wrapper(rq1;): 2 Function None 8 12(rq): 7(ptr) FunctionParameter 14: Label 19: 15(bool) RayQueryProceedKHR 12(rq) 20: 15(bool) RayQueryProceedKHR 17(rqGlobal) 21: 2 FunctionCall 10(otherWrapper(rq1;) 12(rq) 23: 2 FunctionCall 10(otherWrapper(rq1;) 22(rq2) 24: 2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal) Return FunctionEnd glslang-16.0.0/Test/baseResults/rayQuery-initialization.Error.comp.out000066400000000000000000000003611506534232700260730ustar00rootroot00000000000000rayQuery-initialization.Error.comp ERROR: 0:7: '=' : ray queries can only be initialized by using the rayQueryInitializeEXT intrinsic: bar ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/rayQuery-initialize.rgen.out000066400000000000000000000204311506534232700241120ustar00rootroot00000000000000rayQuery-initialize.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 103 Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 23 28 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 8 "launchIndex(" Name 14 "Ray" MemberName 14(Ray) 0 "pos" MemberName 14(Ray) 1 "tmin" MemberName 14(Ray) 2 "dir" MemberName 14(Ray) 3 "tmax" Name 19 "doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;" Name 17 "rayQuery" Name 18 "ray" Name 23 "gl_LaunchIDNV" Name 28 "gl_LaunchSizeNV" Name 50 "rtas" Name 69 "index" Name 71 "ray" Name 72 "Ray" MemberName 72(Ray) 0 "pos" MemberName 72(Ray) 1 "tmin" MemberName 72(Ray) 2 "dir" MemberName 72(Ray) 3 "tmax" Name 74 "Rays" MemberName 74(Rays) 0 "rays" Name 76 "" Name 89 "rayQuery" Name 90 "param" Decorate 23(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 28(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 50(rtas) Binding 0 Decorate 50(rtas) DescriptorSet 0 MemberDecorate 72(Ray) 0 Offset 0 MemberDecorate 72(Ray) 1 Offset 12 MemberDecorate 72(Ray) 2 Offset 16 MemberDecorate 72(Ray) 3 Offset 28 Decorate 73 ArrayStride 32 Decorate 74(Rays) BufferBlock MemberDecorate 74(Rays) 0 Offset 0 Decorate 76 Binding 2 Decorate 76 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeFunction 6(int) 10: TypeRayQueryKHR 11: TypePointer Private 10 12: TypeFloat 32 13: TypeVector 12(float) 3 14(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float) 15: TypePointer Function 14(Ray) 16: TypeFunction 2 11(ptr) 15(ptr) 21: TypeVector 6(int) 3 22: TypePointer Input 21(ivec3) 23(gl_LaunchIDNV): 22(ptr) Variable Input 24: 6(int) Constant 2 25: TypePointer Input 6(int) 28(gl_LaunchSizeNV): 22(ptr) Variable Input 29: 6(int) Constant 0 33: 6(int) Constant 1 48: TypeAccelerationStructureKHR 49: TypePointer UniformConstant 48 50(rtas): 49(ptr) Variable UniformConstant 52: 6(int) Constant 16 53: TypeInt 32 1 54: 53(int) Constant 0 55: TypePointer Function 13(fvec3) 58: 53(int) Constant 1 59: TypePointer Function 12(float) 62: 53(int) Constant 2 65: 53(int) Constant 3 68: TypePointer Function 6(int) 72(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float) 73: TypeRuntimeArray 72(Ray) 74(Rays): TypeStruct 73 75: TypePointer Uniform 74(Rays) 76: 75(ptr) Variable Uniform 78: TypePointer Uniform 72(Ray) 89(rayQuery): 11(ptr) Variable Private 94: 6(int) Constant 32 4(main): 2 Function None 3 5: Label 69(index): 68(ptr) Variable Function 71(ray): 15(ptr) Variable Function 90(param): 15(ptr) Variable Function 70: 6(int) FunctionCall 8(launchIndex() Store 69(index) 70 77: 6(int) Load 69(index) 79: 78(ptr) AccessChain 76 54 77 80: 72(Ray) Load 79 81: 13(fvec3) CompositeExtract 80 0 82: 55(ptr) AccessChain 71(ray) 54 Store 82 81 83: 12(float) CompositeExtract 80 1 84: 59(ptr) AccessChain 71(ray) 58 Store 84 83 85: 13(fvec3) CompositeExtract 80 2 86: 55(ptr) AccessChain 71(ray) 62 Store 86 85 87: 12(float) CompositeExtract 80 3 88: 59(ptr) AccessChain 71(ray) 65 Store 88 87 91: 14(Ray) Load 71(ray) Store 90(param) 91 92: 2 FunctionCall 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;) 89(rayQuery) 90(param) 93: 48 Load 50(rtas) 95: 55(ptr) AccessChain 71(ray) 54 96: 13(fvec3) Load 95 97: 59(ptr) AccessChain 71(ray) 58 98: 12(float) Load 97 99: 55(ptr) AccessChain 71(ray) 62 100: 13(fvec3) Load 99 101: 59(ptr) AccessChain 71(ray) 65 102: 12(float) Load 101 RayQueryInitializeKHR 89(rayQuery) 93 33 94 96 98 100 102 Return FunctionEnd 8(launchIndex(): 6(int) Function None 7 9: Label 26: 25(ptr) AccessChain 23(gl_LaunchIDNV) 24 27: 6(int) Load 26 30: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 29 31: 6(int) Load 30 32: 6(int) IMul 27 31 34: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 33 35: 6(int) Load 34 36: 6(int) IMul 32 35 37: 25(ptr) AccessChain 23(gl_LaunchIDNV) 33 38: 6(int) Load 37 39: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 29 40: 6(int) Load 39 41: 6(int) IMul 38 40 42: 6(int) IAdd 36 41 43: 25(ptr) AccessChain 23(gl_LaunchIDNV) 29 44: 6(int) Load 43 45: 6(int) IAdd 42 44 ReturnValue 45 FunctionEnd 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;): 2 Function None 16 17(rayQuery): 11(ptr) FunctionParameter 18(ray): 15(ptr) FunctionParameter 20: Label 51: 48 Load 50(rtas) 56: 55(ptr) AccessChain 18(ray) 54 57: 13(fvec3) Load 56 60: 59(ptr) AccessChain 18(ray) 58 61: 12(float) Load 60 63: 55(ptr) AccessChain 18(ray) 62 64: 13(fvec3) Load 63 66: 59(ptr) AccessChain 18(ray) 65 67: 12(float) Load 66 RayQueryInitializeKHR 17(rayQuery) 51 29 52 57 61 64 67 Return FunctionEnd glslang-16.0.0/Test/baseResults/rayQuery-no-cse.rgen.out000066400000000000000000000212561506534232700231430ustar00rootroot00000000000000rayQuery-no-cse.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 107 Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 23 28 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 8 "launchIndex(" Name 14 "Ray" MemberName 14(Ray) 0 "pos" MemberName 14(Ray) 1 "tmin" MemberName 14(Ray) 2 "dir" MemberName 14(Ray) 3 "tmax" Name 19 "doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;" Name 17 "rayQuery" Name 18 "ray" Name 23 "gl_LaunchIDNV" Name 28 "gl_LaunchSizeNV" Name 50 "rtas" Name 69 "index" Name 71 "ray" Name 72 "Ray" MemberName 72(Ray) 0 "pos" MemberName 72(Ray) 1 "tmin" MemberName 72(Ray) 2 "dir" MemberName 72(Ray) 3 "tmax" Name 74 "Rays" MemberName 74(Rays) 0 "rays" Name 76 "" Name 89 "rayQuery1" Name 90 "param" Name 103 "rayQuery2" Name 104 "param" Decorate 23(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 28(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 50(rtas) Binding 0 Decorate 50(rtas) DescriptorSet 0 MemberDecorate 72(Ray) 0 Offset 0 MemberDecorate 72(Ray) 1 Offset 12 MemberDecorate 72(Ray) 2 Offset 16 MemberDecorate 72(Ray) 3 Offset 28 Decorate 73 ArrayStride 32 Decorate 74(Rays) BufferBlock MemberDecorate 74(Rays) 0 Offset 0 Decorate 76 Binding 2 Decorate 76 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeFunction 6(int) 10: TypeRayQueryKHR 11: TypePointer Private 10 12: TypeFloat 32 13: TypeVector 12(float) 3 14(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float) 15: TypePointer Function 14(Ray) 16: TypeFunction 2 11(ptr) 15(ptr) 21: TypeVector 6(int) 3 22: TypePointer Input 21(ivec3) 23(gl_LaunchIDNV): 22(ptr) Variable Input 24: 6(int) Constant 2 25: TypePointer Input 6(int) 28(gl_LaunchSizeNV): 22(ptr) Variable Input 29: 6(int) Constant 0 33: 6(int) Constant 1 48: TypeAccelerationStructureKHR 49: TypePointer UniformConstant 48 50(rtas): 49(ptr) Variable UniformConstant 52: 6(int) Constant 16 53: TypeInt 32 1 54: 53(int) Constant 0 55: TypePointer Function 13(fvec3) 58: 53(int) Constant 1 59: TypePointer Function 12(float) 62: 53(int) Constant 2 65: 53(int) Constant 3 68: TypePointer Function 6(int) 72(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float) 73: TypeRuntimeArray 72(Ray) 74(Rays): TypeStruct 73 75: TypePointer Uniform 74(Rays) 76: 75(ptr) Variable Uniform 78: TypePointer Uniform 72(Ray) 89(rayQuery1): 11(ptr) Variable Private 94: 6(int) Constant 32 103(rayQuery2): 11(ptr) Variable Private 4(main): 2 Function None 3 5: Label 69(index): 68(ptr) Variable Function 71(ray): 15(ptr) Variable Function 90(param): 15(ptr) Variable Function 104(param): 15(ptr) Variable Function 70: 6(int) FunctionCall 8(launchIndex() Store 69(index) 70 77: 6(int) Load 69(index) 79: 78(ptr) AccessChain 76 54 77 80: 72(Ray) Load 79 81: 13(fvec3) CompositeExtract 80 0 82: 55(ptr) AccessChain 71(ray) 54 Store 82 81 83: 12(float) CompositeExtract 80 1 84: 59(ptr) AccessChain 71(ray) 58 Store 84 83 85: 13(fvec3) CompositeExtract 80 2 86: 55(ptr) AccessChain 71(ray) 62 Store 86 85 87: 12(float) CompositeExtract 80 3 88: 59(ptr) AccessChain 71(ray) 65 Store 88 87 91: 14(Ray) Load 71(ray) Store 90(param) 91 92: 2 FunctionCall 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;) 89(rayQuery1) 90(param) 93: 48 Load 50(rtas) 95: 55(ptr) AccessChain 71(ray) 54 96: 13(fvec3) Load 95 97: 59(ptr) AccessChain 71(ray) 58 98: 12(float) Load 97 99: 55(ptr) AccessChain 71(ray) 62 100: 13(fvec3) Load 99 101: 59(ptr) AccessChain 71(ray) 65 102: 12(float) Load 101 RayQueryInitializeKHR 89(rayQuery1) 93 33 94 96 98 100 102 105: 14(Ray) Load 71(ray) Store 104(param) 105 106: 2 FunctionCall 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;) 103(rayQuery2) 104(param) Return FunctionEnd 8(launchIndex(): 6(int) Function None 7 9: Label 26: 25(ptr) AccessChain 23(gl_LaunchIDNV) 24 27: 6(int) Load 26 30: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 29 31: 6(int) Load 30 32: 6(int) IMul 27 31 34: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 33 35: 6(int) Load 34 36: 6(int) IMul 32 35 37: 25(ptr) AccessChain 23(gl_LaunchIDNV) 33 38: 6(int) Load 37 39: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 29 40: 6(int) Load 39 41: 6(int) IMul 38 40 42: 6(int) IAdd 36 41 43: 25(ptr) AccessChain 23(gl_LaunchIDNV) 29 44: 6(int) Load 43 45: 6(int) IAdd 42 44 ReturnValue 45 FunctionEnd 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;): 2 Function None 16 17(rayQuery): 11(ptr) FunctionParameter 18(ray): 15(ptr) FunctionParameter 20: Label 51: 48 Load 50(rtas) 56: 55(ptr) AccessChain 18(ray) 54 57: 13(fvec3) Load 56 60: 59(ptr) AccessChain 18(ray) 58 61: 12(float) Load 60 63: 55(ptr) AccessChain 18(ray) 62 64: 13(fvec3) Load 63 66: 59(ptr) AccessChain 18(ray) 65 67: 12(float) Load 66 RayQueryInitializeKHR 17(rayQuery) 51 29 52 57 61 64 67 Return FunctionEnd glslang-16.0.0/Test/baseResults/rayQuery-types.comp.out000066400000000000000000000177671506534232700231420ustar00rootroot00000000000000rayQuery-types.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 86 Capability Shader Capability RayQueryKHR Extension "SPV_KHR_ray_query" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 16 8 1 Source GLSL 460 SourceExtension "GL_EXT_ray_query" Name 4 "main" Name 8 "rayQuery" Name 11 "tlas" Name 25 "rq_proceed" Name 35 "intersectionType" Name 41 "rayTMin" Name 43 "rayFlags" Name 46 "worldRayOrigin" Name 48 "worldDirection" Name 50 "intersectionT" Name 53 "customIndex" Name 55 "instanceId" Name 57 "sbtOffset" Name 59 "geometryIndex" Name 61 "primitiveIndex" Name 65 "barys" Name 67 "frontface" Name 69 "aabbOpaque" Name 71 "objRayDirection" Name 73 "objRayOrigin" Name 77 "objToWorld" Name 79 "worldToObj" Decorate 11(tlas) Binding 0 Decorate 11(tlas) DescriptorSet 0 Decorate 85 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeRayQueryKHR 7: TypePointer Private 6 8(rayQuery): 7(ptr) Variable Private 9: TypeAccelerationStructureKHR 10: TypePointer UniformConstant 9 11(tlas): 10(ptr) Variable UniformConstant 13: TypeInt 32 0 14: 13(int) Constant 0 15: 13(int) Constant 255 16: TypeFloat 32 17: TypeVector 16(float) 3 18: 16(float) Constant 0 19: 17(fvec3) ConstantComposite 18 18 18 20: 16(float) Constant 1065353216 21: 17(fvec3) ConstantComposite 20 18 18 22: 16(float) Constant 1176256512 23: TypeBool 24: TypePointer Function 23(bool) 34: TypePointer Function 13(int) 36: 23(bool) ConstantTrue 37: TypeInt 32 1 38: 37(int) Constant 1 40: TypePointer Function 16(float) 45: TypePointer Function 17(fvec3) 52: TypePointer Function 37(int) 63: TypeVector 16(float) 2 64: TypePointer Function 63(fvec2) 75: TypeMatrix 17(fvec3) 4 76: TypePointer Function 75 81: TypeVector 13(int) 3 82: 13(int) Constant 16 83: 13(int) Constant 8 84: 13(int) Constant 1 85: 81(ivec3) ConstantComposite 82 83 84 4(main): 2 Function None 3 5: Label 25(rq_proceed): 24(ptr) Variable Function 35(intersectionType): 34(ptr) Variable Function 41(rayTMin): 40(ptr) Variable Function 43(rayFlags): 34(ptr) Variable Function 46(worldRayOrigin): 45(ptr) Variable Function 48(worldDirection): 45(ptr) Variable Function 50(intersectionT): 40(ptr) Variable Function 53(customIndex): 52(ptr) Variable Function 55(instanceId): 52(ptr) Variable Function 57(sbtOffset): 34(ptr) Variable Function 59(geometryIndex): 52(ptr) Variable Function 61(primitiveIndex): 52(ptr) Variable Function 65(barys): 64(ptr) Variable Function 67(frontface): 24(ptr) Variable Function 69(aabbOpaque): 24(ptr) Variable Function 71(objRayDirection): 45(ptr) Variable Function 73(objRayOrigin): 45(ptr) Variable Function 77(objToWorld): 76(ptr) Variable Function 79(worldToObj): 76(ptr) Variable Function 12: 9 Load 11(tlas) RayQueryInitializeKHR 8(rayQuery) 12 14 15 19 18 21 22 26: 23(bool) RayQueryProceedKHR 8(rayQuery) Store 25(rq_proceed) 26 Branch 27 27: Label LoopMerge 29 30 None Branch 31 31: Label 32: 23(bool) Load 25(rq_proceed) BranchConditional 32 28 29 28: Label 33: 23(bool) RayQueryProceedKHR 8(rayQuery) Store 25(rq_proceed) 33 Branch 30 30: Label Branch 27 29: Label 39: 13(int) RayQueryGetIntersectionTypeKHR 8(rayQuery) 38 Store 35(intersectionType) 39 42: 16(float) RayQueryGetRayTMinKHR 8(rayQuery) Store 41(rayTMin) 42 44: 13(int) RayQueryGetRayFlagsKHR 8(rayQuery) Store 43(rayFlags) 44 47: 17(fvec3) RayQueryGetWorldRayOriginKHR 8(rayQuery) Store 46(worldRayOrigin) 47 49: 17(fvec3) RayQueryGetWorldRayDirectionKHR 8(rayQuery) Store 48(worldDirection) 49 51: 16(float) RayQueryGetIntersectionTKHR 8(rayQuery) 38 Store 50(intersectionT) 51 54: 37(int) RayQueryGetIntersectionInstanceCustomIndexKHR 8(rayQuery) 38 Store 53(customIndex) 54 56: 37(int) RayQueryGetIntersectionInstanceIdKHR 8(rayQuery) 38 Store 55(instanceId) 56 58: 13(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 8(rayQuery) 38 Store 57(sbtOffset) 58 60: 37(int) RayQueryGetIntersectionGeometryIndexKHR 8(rayQuery) 38 Store 59(geometryIndex) 60 62: 37(int) RayQueryGetIntersectionPrimitiveIndexKHR 8(rayQuery) 38 Store 61(primitiveIndex) 62 66: 63(fvec2) RayQueryGetIntersectionBarycentricsKHR 8(rayQuery) 38 Store 65(barys) 66 68: 23(bool) RayQueryGetIntersectionFrontFaceKHR 8(rayQuery) 38 Store 67(frontface) 68 70: 23(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 8(rayQuery) Store 69(aabbOpaque) 70 72: 17(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 8(rayQuery) 38 Store 71(objRayDirection) 72 74: 17(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 8(rayQuery) 38 Store 73(objRayOrigin) 74 78: 75 RayQueryGetIntersectionObjectToWorldKHR 8(rayQuery) 38 Store 77(objToWorld) 78 80: 75 RayQueryGetIntersectionWorldToObjectKHR 8(rayQuery) 38 Store 79(worldToObj) 80 Return FunctionEnd glslang-16.0.0/Test/baseResults/rayQuery.rgen.out000066400000000000000000000077651506534232700217720ustar00rootroot00000000000000rayQuery.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 8 "rayFlags" Name 12 "tMin" Name 14 "tMax" Name 18 "localRayQuery" Name 21 "acc0" Name 26 "block" MemberName 26(block) 0 "dir" MemberName 26(block) 1 "origin" Name 28 "" Decorate 21(acc0) Binding 0 Decorate 21(acc0) DescriptorSet 0 Decorate 26(block) BufferBlock MemberDecorate 26(block) 0 Offset 0 MemberDecorate 26(block) 1 Offset 16 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: 6(int) Constant 9 10: TypeFloat 32 11: TypePointer Function 10(float) 13: 10(float) Constant 0 15: 10(float) Constant 1148846080 16: TypeRayQueryKHR 17: TypePointer Private 16 18(localRayQuery): 17(ptr) Variable Private 19: TypeAccelerationStructureKHR 20: TypePointer UniformConstant 19 21(acc0): 20(ptr) Variable UniformConstant 24: 6(int) Constant 255 25: TypeVector 10(float) 3 26(block): TypeStruct 25(fvec3) 25(fvec3) 27: TypePointer ShaderRecordBufferKHR 26(block) 28: 27(ptr) Variable ShaderRecordBufferKHR 29: TypeInt 32 1 30: 29(int) Constant 1 31: TypePointer ShaderRecordBufferKHR 25(fvec3) 35: 29(int) Constant 0 39: TypeBool 4(main): 2 Function None 3 5: Label 8(rayFlags): 7(ptr) Variable Function 12(tMin): 11(ptr) Variable Function 14(tMax): 11(ptr) Variable Function Store 8(rayFlags) 9 Store 12(tMin) 13 Store 14(tMax) 15 22: 19 Load 21(acc0) 23: 6(int) Load 8(rayFlags) 32: 31(ptr) AccessChain 28 30 33: 25(fvec3) Load 32 34: 10(float) Load 12(tMin) 36: 31(ptr) AccessChain 28 35 37: 25(fvec3) Load 36 38: 10(float) Load 14(tMax) RayQueryInitializeKHR 18(localRayQuery) 22 23 24 33 34 37 38 40: 39(bool) RayQueryProceedKHR 18(localRayQuery) 41: 39(bool) LogicalNot 40 SelectionMerge 43 None BranchConditional 41 42 43 42: Label RayQueryTerminateKHR 18(localRayQuery) Branch 43 43: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/recurse1.vert.out000066400000000000000000000164431506534232700217200ustar00rootroot00000000000000recurse1.vert Shader version: 330 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:9 Function Definition: self( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Function Call: self( ( global void) 0:16 Function Definition: foo(f1; ( global void) 0:16 Function Parameters: 0:16 '' ( in float) 0:18 Sequence 0:18 Function Call: bar(i1; ( global float) 0:18 Constant: 0:18 2 (const int) 0:21 Function Definition: bar(i1; ( global float) 0:21 Function Parameters: 0:21 '' ( in int) 0:23 Sequence 0:23 Function Call: foo(f1; ( global void) 0:23 Constant: 0:23 4.200000 0:25 Branch: Return with expression 0:25 Constant: 0:25 3.200000 0:32 Function Definition: A( ( global void) 0:32 Function Parameters: 0:32 Sequence 0:32 Function Call: B( ( global void) 0:33 Function Definition: C( ( global void) 0:33 Function Parameters: 0:33 Sequence 0:33 Function Call: D( ( global void) 0:34 Function Definition: B( ( global void) 0:34 Function Parameters: 0:34 Sequence 0:34 Function Call: C( ( global void) 0:35 Function Definition: D( ( global void) 0:35 Function Parameters: 0:35 Sequence 0:35 Function Call: A( ( global void) 0:41 Function Definition: AT( ( global void) 0:41 Function Parameters: 0:41 Sequence 0:41 Function Call: BT( ( global void) 0:41 Function Call: BT( ( global void) 0:41 Function Call: BT( ( global void) 0:42 Function Definition: CT( ( global void) 0:42 Function Parameters: 0:42 Sequence 0:42 Function Call: DT( ( global void) 0:42 Function Call: AT( ( global void) 0:42 Function Call: DT( ( global void) 0:42 Function Call: BT( ( global void) 0:43 Function Definition: BT( ( global void) 0:43 Function Parameters: 0:43 Sequence 0:43 Function Call: CT( ( global void) 0:43 Function Call: CT( ( global void) 0:43 Function Call: CT( ( global void) 0:44 Function Definition: DT( ( global void) 0:44 Function Parameters: 0:44 Sequence 0:44 Function Call: AT( ( global void) 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) recurse1.frag Shader version: 330 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:11 Function Definition: cfoo(f1; ( global void) 0:11 Function Parameters: 0:11 '' ( in float) 0:13 Sequence 0:13 Function Call: cbar(i1; ( global float) 0:13 Constant: 0:13 2 (const int) 0:20 Function Definition: CA( ( global void) 0:20 Function Parameters: 0:20 Sequence 0:20 Function Call: CB( ( global void) 0:21 Function Definition: CC( ( global void) 0:21 Function Parameters: 0:21 Sequence 0:21 Function Call: CD( ( global void) 0:27 Function Definition: CAT( ( global void) 0:27 Function Parameters: 0:27 Sequence 0:27 Function Call: CBT( ( global void) 0:27 Function Call: CBT( ( global void) 0:27 Function Call: CBT( ( global void) 0:28 Function Definition: CCT( ( global void) 0:28 Function Parameters: 0:28 Sequence 0:28 Function Call: CDT( ( global void) 0:28 Function Call: CDT( ( global void) 0:28 Function Call: CBT( ( global void) 0:32 Function Definition: norA( ( global void) 0:32 Function Parameters: 0:33 Function Definition: norB( ( global void) 0:33 Function Parameters: 0:33 Sequence 0:33 Function Call: norA( ( global void) 0:34 Function Definition: norC( ( global void) 0:34 Function Parameters: 0:34 Sequence 0:34 Function Call: norA( ( global void) 0:35 Function Definition: norD( ( global void) 0:35 Function Parameters: 0:35 Sequence 0:35 Function Call: norA( ( global void) 0:36 Function Definition: norE( ( global void) 0:36 Function Parameters: 0:36 Sequence 0:36 Function Call: norB( ( global void) 0:37 Function Definition: norF( ( global void) 0:37 Function Parameters: 0:37 Sequence 0:37 Function Call: norB( ( global void) 0:38 Function Definition: norG( ( global void) 0:38 Function Parameters: 0:38 Sequence 0:38 Function Call: norE( ( global void) 0:39 Function Definition: norH( ( global void) 0:39 Function Parameters: 0:39 Sequence 0:39 Function Call: norE( ( global void) 0:40 Function Definition: norI( ( global void) 0:40 Function Parameters: 0:40 Sequence 0:40 Function Call: norE( ( global void) 0:44 Function Definition: norcA( ( global void) 0:44 Function Parameters: 0:45 Function Definition: norcB( ( global void) 0:45 Function Parameters: 0:45 Sequence 0:45 Function Call: norcA( ( global void) 0:46 Function Definition: norcC( ( global void) 0:46 Function Parameters: 0:46 Sequence 0:46 Function Call: norcB( ( global void) 0:47 Function Definition: norcD( ( global void) 0:47 Function Parameters: 0:47 Sequence 0:47 Function Call: norcC( ( global void) 0:47 Function Call: norcB( ( global void) 0:48 Function Definition: norcE( ( global void) 0:48 Function Parameters: 0:48 Sequence 0:48 Function Call: norcD( ( global void) 0:? Linker Objects recurse2.frag Shader version: 330 0:? Sequence 0:9 Function Definition: cbar(i1; ( global float) 0:9 Function Parameters: 0:9 '' ( in int) 0:11 Sequence 0:11 Function Call: cfoo(f1; ( global void) 0:11 Constant: 0:11 4.200000 0:13 Branch: Return with expression 0:13 Constant: 0:13 3.200000 0:20 Function Definition: CB( ( global void) 0:20 Function Parameters: 0:20 Sequence 0:20 Function Call: CC( ( global void) 0:21 Function Definition: CD( ( global void) 0:21 Function Parameters: 0:21 Sequence 0:21 Function Call: CA( ( global void) 0:27 Function Definition: CBT( ( global void) 0:27 Function Parameters: 0:27 Sequence 0:27 Function Call: CCT( ( global void) 0:27 Function Call: CCT( ( global void) 0:27 Function Call: CCT( ( global void) 0:28 Function Definition: CDT( ( global void) 0:28 Function Parameters: 0:28 Sequence 0:28 Function Call: CAT( ( global void) 0:? Linker Objects Linked vertex stage: ERROR: Linking vertex stage: Recursion detected: BT( calling CT( ERROR: Linking vertex stage: Recursion detected: AT( calling BT( ERROR: Linking vertex stage: Recursion detected: DT( calling AT( ERROR: Linking vertex stage: Recursion detected: D( calling A( ERROR: Linking vertex stage: Recursion detected: bar(i1; calling foo(f1; ERROR: Linking vertex stage: Recursion detected: self( calling self( Linked fragment stage: ERROR: Linking fragment stage: Recursion detected: CCT( calling CBT( ERROR: Linking fragment stage: Recursion detected: CBT( calling CCT( ERROR: Linking fragment stage: Recursion detected: CC( calling CD( ERROR: Linking fragment stage: Recursion detected: cfoo(f1; calling cbar(i1; Shader version: 330 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Shader version: 330 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:? Linker Objects glslang-16.0.0/Test/baseResults/reflection.frag.out000066400000000000000000000002601506534232700222460ustar00rootroot00000000000000reflection.frag Uniform reflection: Uniform block reflection: Buffer variable reflection: Buffer block reflection: Pipeline input reflection: Pipeline output reflection: glslang-16.0.0/Test/baseResults/reflection.linked.options.out000066400000000000000000000016311506534232700242720ustar00rootroot00000000000000reflection.linked.vert reflection.linked.frag Uniform reflection: ubo_block.unused_uniform: offset 0, type 1406, size 1, index 0, binding -1, stages 0 ubo_block.shared_uniform: offset 4, type 1406, size 1, index 0, binding -1, stages 17 ubo_block.vsonly_uniform: offset 8, type 1406, size 1, index 0, binding -1, stages 1 ubo_block.fsonly_uniform: offset 12, type 1406, size 1, index 0, binding -1, stages 16 Uniform block reflection: ubo_block: offset -1, type ffffffff, size 16, index 0, binding 0, stages 17, numMembers 4 Buffer variable reflection: Buffer block reflection: Pipeline input reflection: vertin: offset 0, type 1406, size 1, index 0, binding -1, stages 1 gl_VertexID: offset 0, type 1404, size 1, index 0, binding -1, stages 1 gl_InstanceID: offset 0, type 1404, size 1, index 0, binding -1, stages 1 Pipeline output reflection: fragout: offset 0, type 1406, size 1, index 0, binding -1, stages 16 glslang-16.0.0/Test/baseResults/reflection.linked.out000066400000000000000000000012631506534232700226010ustar00rootroot00000000000000reflection.linked.vert reflection.linked.frag Uniform reflection: ubo_block.shared_uniform: offset 4, type 1406, size 1, index 0, binding -1, stages 17 ubo_block.vsonly_uniform: offset 8, type 1406, size 1, index 0, binding -1, stages 17 ubo_block.fsonly_uniform: offset 12, type 1406, size 1, index 0, binding -1, stages 16 Uniform block reflection: ubo_block: offset -1, type ffffffff, size 16, index 0, binding 0, stages 17, numMembers 4 Buffer variable reflection: Buffer block reflection: Pipeline input reflection: vertin: offset 0, type 1406, size 1, index 0, binding -1, stages 1 Pipeline output reflection: fragout: offset 0, type 1406, size 1, index 0, binding -1, stages 16 glslang-16.0.0/Test/baseResults/reflection.options.frag.out000066400000000000000000000003631506534232700237440ustar00rootroot00000000000000reflection.frag Uniform reflection: Uniform block reflection: Buffer variable reflection: Buffer block reflection: Pipeline input reflection: inval: offset 0, type 1406, size 1, index 0, binding -1, stages 16 Pipeline output reflection: glslang-16.0.0/Test/baseResults/reflection.options.geom.out000066400000000000000000000021141506534232700237500ustar00rootroot00000000000000reflection.options.geom Uniform reflection: Uniform block reflection: Buffer variable reflection: Buffer block reflection: Pipeline input reflection: gl_PerVertex.gl_Position: offset 0, type 8b52, size 1, index 0, binding -1, stages 8 gl_PerVertex.gl_PointSize: offset 0, type 1406, size 1, index 0, binding -1, stages 8 gl_PerVertex.gl_ClipDistance[0]: offset 0, type 1406, size 1, index 0, binding -1, stages 8 block.Color: offset 0, type 8b50, size 1, index 0, binding -1, stages 8 block.Texcoord: offset 0, type 8b50, size 1, index 0, binding -1, stages 8 block.in_a: offset 0, type 8b54, size 1, index 0, binding -1, stages 8 Pipeline output reflection: gl_Position: offset 0, type 8b52, size 1, index 0, binding -1, stages 8 gl_PointSize: offset 0, type 1406, size 1, index 0, binding -1, stages 8 gl_ClipDistance[0]: offset 0, type 1406, size 1, index 0, binding -1, stages 8 block.Color: offset 0, type 8b52, size 1, index 0, binding -1, stages 8 block.a: offset 0, type 8b52, size 1, index 0, binding -1, stages 8 block.b[0]: offset 0, type 8b50, size 3, index 0, binding -1, stages 8 glslang-16.0.0/Test/baseResults/reflection.options.vert.out000066400000000000000000000157501506534232700240130ustar00rootroot00000000000000reflection.options.vert Uniform reflection: UBO.verts[0].position[0]: offset 0, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 UBO.verts[0].normal[0]: offset 12, type 1406, size 3, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.verts[1].position[0]: offset 24, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 UBO.verts[1].normal[0]: offset 36, type 1406, size 3, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.flt[0]: offset 48, type 1406, size 8, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 4 UBO.unused: offset 80, type 8dc8, size 1, index 0, binding -1, stages 0 UBO.uniform_multi[0][0][0]: offset 96, type 1406, size 2, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[0][1][0]: offset 104, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[0][2][0]: offset 112, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[1][0][0]: offset 120, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[1][1][0]: offset 128, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[1][2][0]: offset 136, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[2][0][0]: offset 144, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[2][1][0]: offset 152, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[2][2][0]: offset 160, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[3][0][0]: offset 168, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[3][1][0]: offset 176, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 UBO.uniform_multi[3][2][0]: offset 184, type 1406, size 2, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 uniform_multi[0][0][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[0][1][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[0][2][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[1][0][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[1][1][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[1][2][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[2][0][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[2][1][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[2][2][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[3][0][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[3][1][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 uniform_multi[3][2][0]: offset -1, type 1406, size 2, index -1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 Uniform block reflection: UBO: offset -1, type ffffffff, size 192, index 0, binding -1, stages 1, numMembers 7 Buffer variable reflection: t[0].v[0].position[0]: offset 0, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[0].normal[0]: offset 12, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[1].position[0]: offset 24, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[1].normal[0]: offset 36, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[2].position[0]: offset 48, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[2].normal[0]: offset 60, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 padding[0]: offset 360, type 1405, size 10, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 4 MultipleArrays.tri[0].v[0].position[0]: offset 0, type 1406, size 3, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 MultipleArrays.tri[0].v[0].normal[0]: offset 12, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72 MultipleArrays.tri[0].v[1].position[0]: offset 24, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72 MultipleArrays.tri[0].v[1].normal[0]: offset 36, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72 MultipleArrays.tri[0].v[2].position[0]: offset 48, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72 MultipleArrays.tri[0].v[2].normal[0]: offset 60, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72 MultipleArrays.vert[0].position[0]: offset 360, type 1406, size 3, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 MultipleArrays.vert[0].normal[0]: offset 372, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 MultipleArrays.f[0]: offset 480, type 1406, size 5, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 4 ArrayedBind.a: offset 0, type 1406, size 1, index 2, binding -1, stages 0 ArrayedBind.b: offset 4, type 1406, size 1, index 2, binding -1, stages 1 Buffer block reflection: VertexCollection: offset -1, type ffffffff, size 400, index 0, binding -1, stages 1, numMembers 7 MultipleArrays: offset -1, type ffffffff, size 500, index 1, binding -1, stages 1, numMembers 9 ArrayedBind[0]: offset -1, type ffffffff, size 8, index 2, binding -1, stages 1, numMembers 2 ArrayedBind[1]: offset -1, type ffffffff, size 8, index 3, binding -1, stages 1, numMembers 2 ArrayedBind[2]: offset -1, type ffffffff, size 8, index 4, binding -1, stages 1, numMembers 2 Pipeline input reflection: gl_InstanceID: offset 0, type 1404, size 1, index 0, binding -1, stages 1 gl_VertexID: offset 0, type 1404, size 1, index 0, binding -1, stages 1 Pipeline output reflection: outval.val: offset 0, type 1406, size 1, index 0, binding -1, stages 1 outval.a: offset 0, type 8b51, size 1, index 0, binding -1, stages 1 outval.b[0]: offset 0, type 8b50, size 4, index 0, binding -1, stages 1 outval.c: offset 0, type 8b5a, size 1, index 0, binding -1, stages 1 outarr[0]: offset 0, type 1406, size 3, index 0, binding -1, stages 1 glslang-16.0.0/Test/baseResults/reflection.vert.out000066400000000000000000000407451506534232700223230ustar00rootroot00000000000000reflection.vert Uniform reflection: named.deadMember1: offset 0, type 8b51, size 1, index 0, binding -1, stages 1 anonDeadMember2: offset 64, type 8b52, size 1, index 1, binding -1, stages 1 ufDead4: offset -1, type 1406, size 1, index -1, binding -1, stages 1 anonMember1: offset 0, type 8b51, size 1, index 1, binding -1, stages 1 uf1: offset -1, type 1406, size 1, index -1, binding -1, stages 1 uf2: offset -1, type 1406, size 1, index -1, binding -1, stages 1 named.member3: offset 32, type 8b52, size 1, index 0, binding -1, stages 1 image_ui2D: offset -1, type 9063, size 1, index -1, binding -1, stages 1 sampler_2D: offset -1, type 8b5e, size 1, index -1, binding -1, stages 1 sampler_2DMSArray: offset -1, type 910b, size 1, index -1, binding -1, stages 1 anonMember3: offset 80, type 8b52, size 1, index 1, binding -1, stages 1 s.a: offset -1, type 1404, size 1, index -1, binding -1, stages 1 named.scalar: offset 12, type 1404, size 1, index 0, binding -1, stages 1 m23: offset 16, type 8b67, size 1, index 1, binding -1, stages 1 scalarAfterm23: offset 48, type 1404, size 1, index 1, binding -1, stages 1 c_m23: offset 16, type 8b67, size 1, index 2, binding -1, stages 1 c_scalarAfterm23: offset 64, type 1404, size 1, index 2, binding -1, stages 1 scalarBeforeArray: offset 96, type 1404, size 1, index 1, binding -1, stages 1 floatArray: offset 112, type 1406, size 5, index 1, binding -1, stages 1, arrayStride 16, topLevelArrayStride 16 scalarAfterArray: offset 192, type 1404, size 1, index 1, binding -1, stages 1 named.memvec2: offset 48, type 8b50, size 1, index 0, binding -1, stages 1 named.memf1: offset 56, type 1406, size 1, index 0, binding -1, stages 1 named.memf2: offset 60, type 8b56, size 1, index 0, binding -1, stages 1 named.memf3: offset 64, type 1404, size 1, index 0, binding -1, stages 1 named.memvec2a: offset 72, type 8b50, size 1, index 0, binding -1, stages 1 named.m22: offset 80, type 8b5a, size 7, index 0, binding -1, stages 1, arrayStride 32, topLevelArrayStride 32 dm22: offset -1, type 8b5a, size 4, index -1, binding -1, stages 1, arrayStride 16, topLevelArrayStride 16 m22: offset 208, type 8b5a, size 3, index 1, binding -1, stages 1, arrayStride 32, topLevelArrayStride 32 nested.foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1, stages 1 nested.foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1, stages 1 nested.foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1, stages 1 nested.foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1, stages 1 deepA[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepA[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepC[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepC[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepC[1].v3: offset -1, type 8b54, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepD[0].iv4: offset -1, type 8b52, size 1, index -1, binding -1, stages 1 deepD[0].d2.i: offset -1, type 1404, size 1, index -1, binding -1, stages 1 deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 8 deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1 deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 8 deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1 deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 8 deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1 deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 8 deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1 deepD[0].v3: offset -1, type 8b54, size 1, index -1, binding -1, stages 1 deepD[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1, stages 1 deepD[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1, stages 1 deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 8 deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1 deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 8 deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1 deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 8 deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1 deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 8 deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1 deepD[1].v3: offset -1, type 8b54, size 1, index -1, binding -1, stages 1 deepA[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepA[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepA[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepA[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepA[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepA[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepA[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepA[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepA[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepA[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepA[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepA[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 deepA[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1, arrayStride 8, topLevelArrayStride 176 deepA[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1, topLevelArrayStride 176 ufDead3: offset -1, type 1406, size 1, index -1, binding -1, stages 1 abl.foo: offset 0, type 1406, size 1, index 4, binding -1, stages 1 abl2.foo: offset 0, type 1406, size 1, index 8, binding -1, stages 1 buf1.runtimeArray: offset 4, type 1406, size 4, index 12, binding -1, stages 1, arrayStride 4, topLevelArrayStride 4 buf2.runtimeArray.c: offset 8, type 1406, size 1, index 13, binding -1, stages 1, topLevelArrayStride 12 buf3.runtimeArray: offset 4, type 1406, size 0, index 14, binding -1, stages 1, arrayStride 4, topLevelArrayStride 4 buf4.runtimeArray.c: offset 8, type 1406, size 1, index 15, binding -1, stages 1, topLevelArrayStride 12 nested2.a.n1.a: offset 16, type 1406, size 1, index 16, binding -1, stages 1 nested2.a.n2.b: offset 32, type 1406, size 1, index 16, binding -1, stages 1 nested2.a.n2.c: offset 36, type 1406, size 1, index 16, binding -1, stages 1 nested2.a.n2.d: offset 40, type 1406, size 1, index 16, binding -1, stages 1 nested2.b[0].a: offset 48, type 1406, size 1, index 16, binding -1, stages 1, topLevelArrayStride 16 nested2.b[1].a: offset 64, type 1406, size 1, index 16, binding -1, stages 1, topLevelArrayStride 16 nested2.b[2].a: offset 80, type 1406, size 1, index 16, binding -1, stages 1, topLevelArrayStride 16 nested2.b[3].a: offset 96, type 1406, size 1, index 16, binding -1, stages 1, topLevelArrayStride 16 nested2.c.a: offset 112, type 1406, size 1, index 16, binding -1, stages 1, topLevelArrayStride 16 nested2.d.a: offset 144, type 1406, size 1, index 16, binding -1, stages 1, topLevelArrayStride 16 t.v.position: offset 0, type 1406, size 1, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t.v[0].position: offset 0, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t.v[1].position: offset 24, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t.v[2].position: offset 48, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t.v[0].normal: offset 12, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t.v[1].normal: offset 36, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t.v[2].normal: offset 60, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[0].position: offset 0, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[0].normal: offset 12, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[1].position: offset 24, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[1].normal: offset 36, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[2].position: offset 48, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[0].v[2].normal: offset 60, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[1].v[0].position: offset 72, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[1].v[0].normal: offset 84, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[1].v[1].position: offset 96, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[1].v[1].normal: offset 108, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[1].v[2].position: offset 120, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[1].v[2].normal: offset 132, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[2].v[0].position: offset 144, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[2].v[0].normal: offset 156, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[2].v[1].position: offset 168, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[2].v[1].normal: offset 180, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[2].v[2].position: offset 192, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[2].v[2].normal: offset 204, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[3].v[0].position: offset 216, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[3].v[0].normal: offset 228, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[3].v[1].position: offset 240, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[3].v[1].normal: offset 252, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[3].v[2].position: offset 264, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[3].v[2].normal: offset 276, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[4].v[0].position: offset 288, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[4].v[0].normal: offset 300, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[4].v[1].position: offset 312, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[4].v[1].normal: offset 324, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[4].v[2].position: offset 336, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 t[4].v[2].normal: offset 348, type 1406, size 3, index 17, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72 Uniform block reflection: named: offset -1, type ffffffff, size 304, index 0, binding -1, stages 1, numMembers 10 nameless: offset -1, type ffffffff, size 496, index 1, binding -1, stages 1, numMembers 9 c_nameless: offset -1, type ffffffff, size 112, index 2, binding -1, stages 1, numMembers 5 nested: offset -1, type ffffffff, size 32, index 3, binding -1, stages 1, numMembers 4 abl[0]: offset -1, type ffffffff, size 4, index 4, binding -1, stages 1, numMembers 1 abl[1]: offset -1, type ffffffff, size 4, index 5, binding -1, stages 1, numMembers 1 abl[2]: offset -1, type ffffffff, size 4, index 6, binding -1, stages 1, numMembers 1 abl[3]: offset -1, type ffffffff, size 4, index 7, binding -1, stages 1, numMembers 1 abl2[0]: offset -1, type ffffffff, size 4, index 8, binding -1, stages 1, numMembers 1 abl2[1]: offset -1, type ffffffff, size 4, index 9, binding -1, stages 1, numMembers 1 abl2[2]: offset -1, type ffffffff, size 4, index 10, binding -1, stages 1, numMembers 1 abl2[3]: offset -1, type ffffffff, size 4, index 11, binding -1, stages 1, numMembers 1 buf1: offset -1, type ffffffff, size 8, index 12, binding -1, stages 1, numMembers 2 buf2: offset -1, type ffffffff, size 16, index 13, binding -1, stages 1, numMembers 4 buf3: offset -1, type ffffffff, size 8, index 14, binding -1, stages 1, numMembers 2 buf4: offset -1, type ffffffff, size 16, index 15, binding -1, stages 1, numMembers 4 nested2: offset -1, type ffffffff, size 208, index 16, binding -1, stages 1, numMembers 15 VertexCollection: offset -1, type ffffffff, size 400, index 17, binding -1, stages 1, numMembers 31 Buffer variable reflection: Buffer block reflection: Pipeline input reflection: attributeFloat: offset 0, type 1406, size 1, index 0, binding -1, stages 1 attributeFloat2: offset 0, type 8b50, size 1, index 0, binding -1, stages 1 attributeFloat3: offset 0, type 8b51, size 1, index 0, binding -1, stages 1 attributeFloat4: offset 0, type 8b52, size 1, index 0, binding -1, stages 1 attributeMat4: offset 0, type 8b5c, size 1, index 0, binding -1, stages 1 attributeFloatArray: offset 0, type 1406, size 3, index 0, binding -1, stages 1 gl_InstanceID: offset 0, type 1404, size 1, index 0, binding -1, stages 1 Pipeline output reflection: glslang-16.0.0/Test/baseResults/runtimeArray.vert.out000066400000000000000000001344211506534232700226460ustar00rootroot00000000000000runtimeArray.vert WARNING: 0:33: '[]' : assuming binding count of one for compile-time checking of binding numbers for unsized array WARNING: 0:34: '[]' : assuming binding count of one for compile-time checking of binding numbers for unsized array WARNING: 0:37: '[]' : assuming binding count of one for compile-time checking of binding numbers for unsized array WARNING: 0:38: '[]' : assuming binding count of one for compile-time checking of binding numbers for unsized array WARNING: 0:39: '[]' : assuming binding count of one for compile-time checking of binding numbers for unsized array WARNING: 0:40: '[]' : assuming binding count of one for compile-time checking of binding numbers for unsized array ERROR: 0:61: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:62: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:63: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:66: 'length' : array must be declared with a size before using this method ERROR: 0:67: 'length' : array must be declared with a size before using this method ERROR: 0:68: 'length' : array must be declared with a size before using this method ERROR: 0:71: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:72: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:73: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:76: 'length' : array must be declared with a size before using this method ERROR: 0:77: 'length' : array must be declared with a size before using this method ERROR: 0:78: 'length' : array must be declared with a size before using this method ERROR: 0:81: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:82: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:83: '[' : array must be redeclared with a size before being indexed with a variable ERROR: 0:86: 'length' : array must be declared with a size before using this method ERROR: 0:87: 'length' : array must be declared with a size before using this method ERROR: 0:88: 'length' : array must be declared with a size before using this method ERROR: 0:100: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:101: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:102: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:103: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:104: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:105: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:106: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:107: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier ERROR: 0:109: '[]' : array initializer must be sized ERROR: 27 compilation errors. No code generated. Shader version: 450 ERROR: node is still EOpNull! 0:44 Function Definition: main( ( global void) 0:44 Function Parameters: 0:46 Sequence 0:46 direct index (layout( column_major shared) temp int) 0:46 a: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:46 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 3 (const int) 0:47 direct index (layout( column_major shared) temp float) 0:47 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:47 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 3 (const int) 0:48 direct index (layout( column_major shared) temp int) 0:48 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:48 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 3 (const int) 0:49 direct index (layout( column_major shared) temp float) 0:49 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:49 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 3 (const int) 0:51 direct index (layout( column_major shared) temp int) 0:51 a: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:51 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:51 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:52 direct index (layout( column_major shared) temp float) 0:52 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:52 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:52 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 3 (const int) 0:53 direct index (layout( column_major shared) temp int) 0:53 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:53 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:53 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 3 (const int) 0:54 direct index (layout( column_major shared) temp float) 0:54 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:54 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:54 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 3 (const int) 0:56 direct index (layout( column_major shared) temp int) 0:56 aua: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:56 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:56 Constant: 0:56 0 (const uint) 0:56 Constant: 0:56 3 (const int) 0:57 direct index (layout( column_major shared) temp float) 0:57 aub: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:57 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:57 Constant: 0:57 1 (const uint) 0:57 Constant: 0:57 3 (const int) 0:58 direct index (layout( column_major shared) temp int) 0:58 aba: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:58 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:58 Constant: 0:58 0 (const uint) 0:58 Constant: 0:58 3 (const int) 0:59 direct index (layout( column_major shared) temp float) 0:59 abb: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:59 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:59 Constant: 0:59 1 (const uint) 0:59 Constant: 0:59 3 (const int) 0:61 indirect index (layout( column_major shared) temp int) 0:61 a: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:61 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:61 Constant: 0:61 0 (const int) 0:61 'i' ( global int) 0:62 indirect index (layout( column_major shared) temp float) 0:62 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:62 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:62 Constant: 0:62 1 (const int) 0:62 'i' ( global int) 0:63 indirect index (layout( column_major shared) temp int) 0:63 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:63 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:63 Constant: 0:63 0 (const int) 0:63 'i' ( global int) 0:64 indirect index (layout( column_major shared) temp float) 0:64 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:64 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:64 Constant: 0:64 1 (const int) 0:64 'i' ( global int) 0:66 Constant: 0:66 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:68 Constant: 0:68 1 (const int) 0:69 array length ( temp int) 0:69 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:69 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:69 Constant: 0:69 1 (const int) 0:71 indirect index (layout( column_major shared) temp int) 0:71 a: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:71 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:71 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 'i' ( global int) 0:72 indirect index (layout( column_major shared) temp float) 0:72 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:72 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:72 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 'i' ( global int) 0:73 indirect index (layout( column_major shared) temp int) 0:73 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:73 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:73 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 'i' ( global int) 0:74 indirect index (layout( column_major shared) temp float) 0:74 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:74 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:74 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 'i' ( global int) 0:76 Constant: 0:76 1 (const int) 0:77 Constant: 0:77 1 (const int) 0:78 Constant: 0:78 1 (const int) 0:79 array length ( temp int) 0:79 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:79 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:79 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 1 (const int) 0:81 indirect index (layout( column_major shared) temp int) 0:81 aua: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:81 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:81 Constant: 0:81 0 (const uint) 0:81 'i' ( global int) 0:82 indirect index (layout( column_major shared) temp float) 0:82 aub: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:82 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:82 Constant: 0:82 1 (const uint) 0:82 'i' ( global int) 0:83 indirect index (layout( column_major shared) temp int) 0:83 aba: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:83 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:83 Constant: 0:83 0 (const uint) 0:83 'i' ( global int) 0:84 indirect index (layout( column_major shared) temp float) 0:84 abb: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:84 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:84 Constant: 0:84 1 (const uint) 0:84 'i' ( global int) 0:86 Constant: 0:86 1 (const int) 0:87 Constant: 0:87 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 array length ( temp int) 0:89 abb: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:89 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:89 Constant: 0:89 1 (const uint) 0:91 direct index (layout( binding=1) temp samplerBuffer) 0:91 'uniformTexelBufferDyn' (layout( binding=1) uniform runtime-sized array of samplerBuffer) 0:91 Constant: 0:91 1 (const int) 0:92 direct index (layout( binding=2 r32f) temp imageBuffer) 0:92 'storageTexelBufferDyn' (layout( binding=2 r32f) uniform runtime-sized array of imageBuffer) 0:92 Constant: 0:92 1 (const int) 0:93 direct index (layout( binding=3 column_major shared) temp block{layout( column_major shared) uniform float a}) 0:93 'uniformBuffer' (layout( binding=3 column_major shared) uniform runtime-sized array of block{layout( column_major shared) uniform float a}) 0:93 Constant: 0:93 1 (const int) 0:94 direct index (layout( binding=4 column_major shared) temp block{layout( column_major shared) buffer float b}) 0:94 'storageBuffer' (layout( binding=4 column_major shared) buffer runtime-sized array of block{layout( column_major shared) buffer float b}) 0:94 Constant: 0:94 1 (const int) 0:95 direct index (layout( binding=5) temp sampler2D) 0:95 'sampledImage' (layout( binding=5) uniform runtime-sized array of sampler2D) 0:95 Constant: 0:95 1 (const int) 0:96 direct index (layout( binding=6 r32f) temp image2D) 0:96 'storageImage' (layout( binding=6 r32f) uniform runtime-sized array of image2D) 0:96 Constant: 0:96 1 (const int) 0:97 direct index (layout( binding=8) temp samplerBuffer) 0:97 'uniformTexelBuffer' (layout( binding=8) uniform runtime-sized array of samplerBuffer) 0:97 Constant: 0:97 1 (const int) 0:98 direct index (layout( binding=9 r32f) temp imageBuffer) 0:98 'storageTexelBuffer' (layout( binding=9 r32f) uniform runtime-sized array of imageBuffer) 0:98 Constant: 0:98 1 (const int) 0:100 indirect index (layout( binding=1) temp samplerBuffer) 0:100 'uniformTexelBufferDyn' (layout( binding=1) uniform runtime-sized array of samplerBuffer) 0:100 'i' ( global int) 0:101 indirect index (layout( binding=2 r32f) temp imageBuffer) 0:101 'storageTexelBufferDyn' (layout( binding=2 r32f) uniform runtime-sized array of imageBuffer) 0:101 'i' ( global int) 0:102 indirect index (layout( binding=3 column_major shared) temp block{layout( column_major shared) uniform float a}) 0:102 'uniformBuffer' (layout( binding=3 column_major shared) uniform runtime-sized array of block{layout( column_major shared) uniform float a}) 0:102 'i' ( global int) 0:103 indirect index (layout( binding=4 column_major shared) temp block{layout( column_major shared) buffer float b}) 0:103 'storageBuffer' (layout( binding=4 column_major shared) buffer runtime-sized array of block{layout( column_major shared) buffer float b}) 0:103 'i' ( global int) 0:104 indirect index (layout( binding=5) temp sampler2D) 0:104 'sampledImage' (layout( binding=5) uniform runtime-sized array of sampler2D) 0:104 'i' ( global int) 0:105 indirect index (layout( binding=6 r32f) temp image2D) 0:105 'storageImage' (layout( binding=6 r32f) uniform runtime-sized array of image2D) 0:105 'i' ( global int) 0:106 indirect index (layout( binding=8) temp samplerBuffer) 0:106 'uniformTexelBuffer' (layout( binding=8) uniform runtime-sized array of samplerBuffer) 0:106 'i' ( global int) 0:107 indirect index (layout( binding=9 r32f) temp imageBuffer) 0:107 'storageTexelBuffer' (layout( binding=9 r32f) uniform runtime-sized array of imageBuffer) 0:107 'i' ( global int) 0:109 Sequence 0:109 move second child to first child ( temp unsized 1-element array of float) 0:109 'local' ( temp unsized 1-element array of float) 0:109 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:109 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:109 Constant: 0:109 1 (const int) 0:? Linker Objects 0:? 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:? 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:? 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:? 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:? 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:? 'uniformTexelBufferDyn' (layout( binding=1) uniform runtime-sized array of samplerBuffer) 0:? 'storageTexelBufferDyn' (layout( binding=2 r32f) uniform runtime-sized array of imageBuffer) 0:? 'uniformBuffer' (layout( binding=3 column_major shared) uniform runtime-sized array of block{layout( column_major shared) uniform float a}) 0:? 'storageBuffer' (layout( binding=4 column_major shared) buffer runtime-sized array of block{layout( column_major shared) buffer float b}) 0:? 'sampledImage' (layout( binding=5) uniform runtime-sized array of sampler2D) 0:? 'storageImage' (layout( binding=6 r32f) uniform runtime-sized array of image2D) 0:? 'uniformTexelBuffer' (layout( binding=8) uniform runtime-sized array of samplerBuffer) 0:? 'storageTexelBuffer' (layout( binding=9 r32f) uniform runtime-sized array of imageBuffer) 0:? 'i' ( global int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 450 ERROR: node is still EOpNull! 0:44 Function Definition: main( ( global void) 0:44 Function Parameters: 0:46 Sequence 0:46 direct index (layout( column_major shared) temp int) 0:46 a: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:46 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 3 (const int) 0:47 direct index (layout( column_major shared) temp float) 0:47 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:47 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:47 Constant: 0:47 1 (const int) 0:47 Constant: 0:47 3 (const int) 0:48 direct index (layout( column_major shared) temp int) 0:48 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:48 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 3 (const int) 0:49 direct index (layout( column_major shared) temp float) 0:49 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:49 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:49 Constant: 0:49 1 (const int) 0:49 Constant: 0:49 3 (const int) 0:51 direct index (layout( column_major shared) temp int) 0:51 a: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:51 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:51 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:51 Constant: 0:51 3 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 3 (const int) 0:52 direct index (layout( column_major shared) temp float) 0:52 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:52 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:52 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:52 Constant: 0:52 3 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 3 (const int) 0:53 direct index (layout( column_major shared) temp int) 0:53 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:53 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:53 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:53 Constant: 0:53 3 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 3 (const int) 0:54 direct index (layout( column_major shared) temp float) 0:54 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:54 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:54 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:54 Constant: 0:54 3 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 Constant: 0:54 3 (const int) 0:56 direct index (layout( column_major shared) temp int) 0:56 aua: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:56 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:56 Constant: 0:56 0 (const uint) 0:56 Constant: 0:56 3 (const int) 0:57 direct index (layout( column_major shared) temp float) 0:57 aub: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:57 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:57 Constant: 0:57 1 (const uint) 0:57 Constant: 0:57 3 (const int) 0:58 direct index (layout( column_major shared) temp int) 0:58 aba: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:58 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:58 Constant: 0:58 0 (const uint) 0:58 Constant: 0:58 3 (const int) 0:59 direct index (layout( column_major shared) temp float) 0:59 abb: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:59 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:59 Constant: 0:59 1 (const uint) 0:59 Constant: 0:59 3 (const int) 0:61 indirect index (layout( column_major shared) temp int) 0:61 a: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:61 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:61 Constant: 0:61 0 (const int) 0:61 'i' ( global int) 0:62 indirect index (layout( column_major shared) temp float) 0:62 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:62 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:62 Constant: 0:62 1 (const int) 0:62 'i' ( global int) 0:63 indirect index (layout( column_major shared) temp int) 0:63 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:63 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:63 Constant: 0:63 0 (const int) 0:63 'i' ( global int) 0:64 indirect index (layout( column_major shared) temp float) 0:64 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:64 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:64 Constant: 0:64 1 (const int) 0:64 'i' ( global int) 0:66 Constant: 0:66 1 (const int) 0:67 Constant: 0:67 1 (const int) 0:68 Constant: 0:68 1 (const int) 0:69 array length ( temp int) 0:69 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:69 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:69 Constant: 0:69 1 (const int) 0:71 indirect index (layout( column_major shared) temp int) 0:71 a: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:71 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:71 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:71 Constant: 0:71 1 (const int) 0:71 Constant: 0:71 0 (const int) 0:71 'i' ( global int) 0:72 indirect index (layout( column_major shared) temp float) 0:72 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:72 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:72 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:72 Constant: 0:72 1 (const int) 0:72 Constant: 0:72 1 (const int) 0:72 'i' ( global int) 0:73 indirect index (layout( column_major shared) temp int) 0:73 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:73 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:73 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:73 Constant: 0:73 1 (const int) 0:73 Constant: 0:73 0 (const int) 0:73 'i' ( global int) 0:74 indirect index (layout( column_major shared) temp float) 0:74 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:74 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:74 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:74 Constant: 0:74 1 (const int) 0:74 Constant: 0:74 1 (const int) 0:74 'i' ( global int) 0:76 Constant: 0:76 1 (const int) 0:77 Constant: 0:77 1 (const int) 0:78 Constant: 0:78 1 (const int) 0:79 array length ( temp int) 0:79 b: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:79 direct index (layout( column_major shared) temp block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:79 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:79 Constant: 0:79 1 (const int) 0:79 Constant: 0:79 1 (const int) 0:81 indirect index (layout( column_major shared) temp int) 0:81 aua: direct index for structure (layout( column_major shared) uniform runtime-sized array of int) 0:81 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:81 Constant: 0:81 0 (const uint) 0:81 'i' ( global int) 0:82 indirect index (layout( column_major shared) temp float) 0:82 aub: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:82 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:82 Constant: 0:82 1 (const uint) 0:82 'i' ( global int) 0:83 indirect index (layout( column_major shared) temp int) 0:83 aba: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) 0:83 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:83 Constant: 0:83 0 (const uint) 0:83 'i' ( global int) 0:84 indirect index (layout( column_major shared) temp float) 0:84 abb: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:84 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:84 Constant: 0:84 1 (const uint) 0:84 'i' ( global int) 0:86 Constant: 0:86 1 (const int) 0:87 Constant: 0:87 1 (const int) 0:88 Constant: 0:88 1 (const int) 0:89 array length ( temp int) 0:89 abb: direct index for structure (layout( column_major shared) buffer runtime-sized array of float) 0:89 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:89 Constant: 0:89 1 (const uint) 0:91 direct index (layout( binding=1) temp samplerBuffer) 0:91 'uniformTexelBufferDyn' (layout( binding=1) uniform runtime-sized array of samplerBuffer) 0:91 Constant: 0:91 1 (const int) 0:92 direct index (layout( binding=2 r32f) temp imageBuffer) 0:92 'storageTexelBufferDyn' (layout( binding=2 r32f) uniform runtime-sized array of imageBuffer) 0:92 Constant: 0:92 1 (const int) 0:93 direct index (layout( binding=3 column_major shared) temp block{layout( column_major shared) uniform float a}) 0:93 'uniformBuffer' (layout( binding=3 column_major shared) uniform runtime-sized array of block{layout( column_major shared) uniform float a}) 0:93 Constant: 0:93 1 (const int) 0:94 direct index (layout( binding=4 column_major shared) temp block{layout( column_major shared) buffer float b}) 0:94 'storageBuffer' (layout( binding=4 column_major shared) buffer runtime-sized array of block{layout( column_major shared) buffer float b}) 0:94 Constant: 0:94 1 (const int) 0:95 direct index (layout( binding=5) temp sampler2D) 0:95 'sampledImage' (layout( binding=5) uniform runtime-sized array of sampler2D) 0:95 Constant: 0:95 1 (const int) 0:96 direct index (layout( binding=6 r32f) temp image2D) 0:96 'storageImage' (layout( binding=6 r32f) uniform runtime-sized array of image2D) 0:96 Constant: 0:96 1 (const int) 0:97 direct index (layout( binding=8) temp samplerBuffer) 0:97 'uniformTexelBuffer' (layout( binding=8) uniform runtime-sized array of samplerBuffer) 0:97 Constant: 0:97 1 (const int) 0:98 direct index (layout( binding=9 r32f) temp imageBuffer) 0:98 'storageTexelBuffer' (layout( binding=9 r32f) uniform runtime-sized array of imageBuffer) 0:98 Constant: 0:98 1 (const int) 0:100 indirect index (layout( binding=1) temp samplerBuffer) 0:100 'uniformTexelBufferDyn' (layout( binding=1) uniform runtime-sized array of samplerBuffer) 0:100 'i' ( global int) 0:101 indirect index (layout( binding=2 r32f) temp imageBuffer) 0:101 'storageTexelBufferDyn' (layout( binding=2 r32f) uniform runtime-sized array of imageBuffer) 0:101 'i' ( global int) 0:102 indirect index (layout( binding=3 column_major shared) temp block{layout( column_major shared) uniform float a}) 0:102 'uniformBuffer' (layout( binding=3 column_major shared) uniform runtime-sized array of block{layout( column_major shared) uniform float a}) 0:102 'i' ( global int) 0:103 indirect index (layout( binding=4 column_major shared) temp block{layout( column_major shared) buffer float b}) 0:103 'storageBuffer' (layout( binding=4 column_major shared) buffer runtime-sized array of block{layout( column_major shared) buffer float b}) 0:103 'i' ( global int) 0:104 indirect index (layout( binding=5) temp sampler2D) 0:104 'sampledImage' (layout( binding=5) uniform runtime-sized array of sampler2D) 0:104 'i' ( global int) 0:105 indirect index (layout( binding=6 r32f) temp image2D) 0:105 'storageImage' (layout( binding=6 r32f) uniform runtime-sized array of image2D) 0:105 'i' ( global int) 0:106 indirect index (layout( binding=8) temp samplerBuffer) 0:106 'uniformTexelBuffer' (layout( binding=8) uniform runtime-sized array of samplerBuffer) 0:106 'i' ( global int) 0:107 indirect index (layout( binding=9 r32f) temp imageBuffer) 0:107 'storageTexelBuffer' (layout( binding=9 r32f) uniform runtime-sized array of imageBuffer) 0:107 'i' ( global int) 0:109 Sequence 0:109 move second child to first child ( temp 1-element array of float) 0:109 'local' ( temp 1-element array of float) 0:109 b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float) 0:109 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:109 Constant: 0:109 1 (const int) 0:? Linker Objects 0:? 'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:? 'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:? 'bufa' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b}) 0:? 'ubufa' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b}) 0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int aba, layout( column_major shared) buffer runtime-sized array of float abb}) 0:? 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int aua, layout( column_major shared) uniform runtime-sized array of float aub}) 0:? 'uniformTexelBufferDyn' (layout( binding=1) uniform runtime-sized array of samplerBuffer) 0:? 'storageTexelBufferDyn' (layout( binding=2 r32f) uniform runtime-sized array of imageBuffer) 0:? 'uniformBuffer' (layout( binding=3 column_major shared) uniform runtime-sized array of block{layout( column_major shared) uniform float a}) 0:? 'storageBuffer' (layout( binding=4 column_major shared) buffer runtime-sized array of block{layout( column_major shared) buffer float b}) 0:? 'sampledImage' (layout( binding=5) uniform runtime-sized array of sampler2D) 0:? 'storageImage' (layout( binding=6 r32f) uniform runtime-sized array of image2D) 0:? 'uniformTexelBuffer' (layout( binding=8) uniform runtime-sized array of samplerBuffer) 0:? 'storageTexelBuffer' (layout( binding=9 r32f) uniform runtime-sized array of imageBuffer) 0:? 'i' ( global int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/sample.frag.out000066400000000000000000000021341506534232700213770ustar00rootroot00000000000000sample.frag Shader version: 110 0:? Sequence 0:38 Function Definition: main( ( global void) 0:38 Function Parameters: 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:40 Construct vec4 ( temp 4-component vector of float) 0:40 'color' ( smooth in 3-component vector of float) 0:40 Constant: 0:40 1.000000 0:? Linker Objects 0:? 'color' ( smooth in 3-component vector of float) Linked fragment stage: Shader version: 110 0:? Sequence 0:38 Function Definition: main( ( global void) 0:38 Function Parameters: 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:40 Construct vec4 ( temp 4-component vector of float) 0:40 'color' ( smooth in 3-component vector of float) 0:40 Constant: 0:40 1.000000 0:? Linker Objects 0:? 'color' ( smooth in 3-component vector of float) glslang-16.0.0/Test/baseResults/sample.vert.out000066400000000000000000000031641506534232700214440ustar00rootroot00000000000000sample.vert Shader version: 110 0:? Sequence 0:38 Function Definition: main( ( global void) 0:38 Function Parameters: 0:40 Sequence 0:40 move second child to first child ( temp 3-component vector of float) 0:40 'color' ( smooth out 3-component vector of float) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'gl_Position' ( gl_Position 4-component vector of float Position) 0:42 matrix-times-vector ( temp 4-component vector of float) 0:42 'gl_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:42 'gl_Vertex' ( in 4-component vector of float Vertex) 0:? Linker Objects 0:? 'color' ( smooth out 3-component vector of float) Linked vertex stage: Shader version: 110 0:? Sequence 0:38 Function Definition: main( ( global void) 0:38 Function Parameters: 0:40 Sequence 0:40 move second child to first child ( temp 3-component vector of float) 0:40 'color' ( smooth out 3-component vector of float) 0:40 Constant: 0:40 1.000000 0:40 1.000000 0:40 1.000000 0:42 move second child to first child ( temp 4-component vector of float) 0:42 'gl_Position' ( gl_Position 4-component vector of float Position) 0:42 matrix-times-vector ( temp 4-component vector of float) 0:42 'gl_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) 0:42 'gl_Vertex' ( in 4-component vector of float Vertex) 0:? Linker Objects 0:? 'color' ( smooth out 3-component vector of float) glslang-16.0.0/Test/baseResults/samplerlessTextureFunctions.frag.out000066400000000000000000000016631506534232700257300ustar00rootroot00000000000000samplerlessTextureFunctions.frag ERROR: 0:9: 'texelFetch' : required extension not requested: GL_EXT_samplerless_texture_functions ERROR: 0:10: 'texelFetch' : required extension not requested: GL_EXT_samplerless_texture_functions ERROR: 0:16: 'texelFetchOffset' : required extension not requested: GL_EXT_samplerless_texture_functions ERROR: 0:18: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions ERROR: 0:19: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions ERROR: 0:20: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions ERROR: 0:22: 'textureQueryLevels' : required extension not requested: GL_EXT_samplerless_texture_functions ERROR: 0:24: 'textureSamples' : required extension not requested: GL_EXT_samplerless_texture_functions ERROR: 8 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/simpleFunctionCall.frag.out000066400000000000000000000031231506534232700237100ustar00rootroot00000000000000simpleFunctionCall.frag WARNING: 0:4: varying deprecated in version 130; may be removed in future release Shader version: 150 0:? Sequence 0:7 Function Definition: foo( ( global 4-component vector of float) 0:7 Function Parameters: 0:9 Sequence 0:9 Branch: Return with expression 0:9 'BaseColor' ( smooth in 4-component vector of float) 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 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:14 Function Call: foo( ( global 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) Linked fragment stage: Shader version: 150 0:? Sequence 0:7 Function Definition: foo( ( global 4-component vector of float) 0:7 Function Parameters: 0:9 Sequence 0:9 Branch: Return with expression 0:9 'BaseColor' ( smooth in 4-component vector of float) 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 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:14 Function Call: foo( ( global 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) glslang-16.0.0/Test/baseResults/size000066400000000000000000000000501506534232700173370ustar00rootroot00000000000000399360 ../build/install/bin/glslang.exe glslang-16.0.0/Test/baseResults/specExamples.frag.out000066400000000000000000000567031506534232700225620ustar00rootroot00000000000000specExamples.frag ERROR: 0:6: '=' : cannot convert from ' const uint' to ' global int' ERROR: 0:20: '' : numeric literal too big ERROR: 0:21: '' : hexadecimal literal too big ERROR: 0:37: 'view' : redefinition ERROR: 0:63: 'invariant' : can only apply to an output ERROR: 0:68: 'lightPosition' : redefinition ERROR: 0:75: 'Atten' : member storage qualifier cannot contradict block storage qualifier ERROR: 0:87: 'Color' : redefinition ERROR: 0:92: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:93: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:99: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:99: 'local_size_y' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:100: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:102: 'color' : redefinition ERROR: 0:112: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth ERROR: 0:118: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth ERROR: 0:121: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth ERROR: 0:123: 'gl_Color' : identifiers starting with "gl_" are reserved ERROR: 0:172: 'x' : undeclared identifier ERROR: 0:172: '[]' : scalar integer expression required ERROR: 0:175: 'x' : undeclared identifier ERROR: 0:175: '[]' : scalar integer expression required ERROR: 0:175: 'b' : left of '[' is not of type array, matrix, or vector ERROR: 0:175: 'a' : vector swizzle selection out of range ERROR: 0:175: 'length' : does not operate on this type: const float ERROR: 0:175: '' : function call, method, or subroutine call expected ERROR: 0:175: '' : no matching overloaded function found ERROR: 0:178: '[]' : scalar integer expression required ERROR: 0:178: 's' : undeclared identifier ERROR: 0:178: 's' : left of '[' is not of type array, matrix, or vector ERROR: 0:178: 'a' : vector swizzle selection out of range ERROR: 0:178: 'length' : does not operate on this type: const float ERROR: 0:178: '' : function call, method, or subroutine call expected ERROR: 0:178: '' : no matching overloaded function found ERROR: 0:198: 'e' : redefinition ERROR: 0:226: 'in' : not allowed in nested scope ERROR: 0:227: 'in' : not allowed in nested scope ERROR: 0:228: 'in' : not allowed in nested scope ERROR: 0:232: 'out' : not allowed in nested scope ERROR: 39 compilation errors. No code generated. Shader version: 430 Requested GL_3DL_array_objects gl_FragCoord pixel center is integer gl_FragCoord origin is upper left using early_fragment_tests using depth_greater ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'a' ( global int) 0:5 Constant: 0:5 -1 (const int) 0:7 Sequence 0:7 move second child to first child ( temp uint) 0:7 'c' ( global uint) 0:7 Constant: 0:7 4294967295 (const uint) 0:8 Sequence 0:8 move second child to first child ( temp uint) 0:8 'd' ( global uint) 0:8 Constant: 0:8 4294967295 (const uint) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'e' ( global int) 0:9 Constant: 0:9 -1 (const int) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'f' ( global uint) 0:13 Constant: 0:13 4294967295 (const uint) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'g' ( global int) 0:17 Constant: 0:17 -1294967296 (const int) 0:19 Sequence 0:19 move second child to first child ( temp int) 0:19 'h' ( global int) 0:19 Constant: 0:19 -1610612736 (const int) 0:20 Sequence 0:20 move second child to first child ( temp int) 0:20 'i' ( global int) 0:20 Constant: 0:20 -1 (const int) 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'j' ( global int) 0:21 Constant: 0:21 -1 (const int) 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 'k' ( global int) 0:22 Constant: 0:22 -2147483648 (const int) 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'l' ( global int) 0:23 Constant: 0:23 -2147483648 (const int) 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'fb' ( global float) 0:25 Constant: 0:25 1.500000 0:26 Sequence 0:26 move second child to first child ( temp double) 0:26 'fd' ( global double) 0:26 Constant: 0:26 2.000000 0:127 Function Definition: foo(f1[5]; ( global 5-element array of float) 0:127 Function Parameters: 0:127 '' ( in 5-element array of float) 0:129 Sequence 0:129 Branch: Return with expression 0:129 Constant: 0:129 3.400000 0:129 4.200000 0:129 5.000000 0:129 5.200000 0:129 1.100000 0:137 Function Definition: main( ( global void) 0:137 Function Parameters: 0:140 Sequence 0:140 Sequence 0:140 Sequence 0:140 move second child to first child ( temp 5-element array of float) 0:140 'a' ( temp 5-element array of float) 0:140 Constant: 0:140 3.400000 0:140 4.200000 0:140 5.000000 0:140 5.200000 0:140 1.100000 0:143 Sequence 0:143 Sequence 0:143 move second child to first child ( temp 5-element array of float) 0:143 'a' ( temp 5-element array of float) 0:143 Constant: 0:143 3.400000 0:143 4.200000 0:143 5.000000 0:143 5.200000 0:143 1.100000 0:? Sequence 0:149 Sequence 0:149 move second child to first child ( temp 2-element array of 4-component vector of float) 0:149 'b' ( temp 2-element array of 4-component vector of float) 0:149 Constant: 0:149 0.000000 0:149 0.000000 0:149 0.000000 0:149 0.000000 0:149 0.100000 0:149 0.100000 0:149 0.100000 0:149 0.100000 0:150 Sequence 0:150 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:150 'a3' ( temp 3-element array of 2-element array of 4-component vector of float) 0:150 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:150 'b' ( temp 2-element array of 4-component vector of float) 0:150 'b' ( temp 2-element array of 4-component vector of float) 0:150 'b' ( temp 2-element array of 4-component vector of float) 0:152 Sequence 0:152 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:152 'a4' ( temp 3-element array of 2-element array of 4-component vector of float) 0:152 Constant: 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:? Sequence 0:159 Sequence 0:159 Sequence 0:159 move second child to first child ( temp 5-element array of float) 0:159 'b' ( temp 5-element array of float) 0:159 'a' ( temp 5-element array of float) 0:162 Sequence 0:162 Sequence 0:162 move second child to first child ( temp 5-element array of float) 0:162 'b' ( temp 5-element array of float) 0:162 'a' ( temp 5-element array of float) 0:165 Sequence 0:165 Sequence 0:165 move second child to first child ( temp 5-element array of float) 0:165 'b' ( temp 5-element array of float) 0:165 Constant: 0:165 1.000000 0:165 2.000000 0:165 3.000000 0:165 4.000000 0:165 5.000000 0:167 Constant: 0:167 5 (const int) 0:? Sequence 0:171 Constant: 0:171 3 (const int) 0:172 Constant: 0:172 2 (const int) 0:175 Constant: 0:175 0.000000 0:178 Constant: 0:178 0.000000 0:193 Sequence 0:193 move second child to first child ( temp structure{ temp float a, temp int b}) 0:193 'e' ( temp structure{ temp float a, temp int b}) 0:193 Constant: 0:193 1.200000 0:193 2 (const int) 0:216 Sequence 0:216 Sequence 0:216 move second child to first child ( temp 5-element array of float) 0:216 'a' ( temp 5-element array of float) 0:216 Constant: 0:216 3.400000 0:216 4.200000 0:216 5.000000 0:216 5.200000 0:216 1.100000 0:217 Sequence 0:217 move second child to first child ( temp 5-element array of float) 0:217 'b' ( temp 5-element array of float) 0:217 Constant: 0:217 3.400000 0:217 4.200000 0:217 5.000000 0:217 5.200000 0:217 1.100000 0:218 Sequence 0:218 move second child to first child ( temp 5-element array of float) 0:218 'c' ( temp 5-element array of float) 0:218 'a' ( temp 5-element array of float) 0:219 Sequence 0:219 move second child to first child ( temp 5-element array of float) 0:219 'd' ( temp 5-element array of float) 0:219 'b' ( temp 5-element array of float) 0:? Sequence 0:223 Sequence 0:223 move second child to first child ( temp float) 0:223 'ceiling' ( const (read only) float) 0:223 Convert int to float ( temp float) 0:223 add ( temp int) 0:223 'a' ( global int) 0:223 'b' ( global int) 0:? Linker Objects 0:? 'a' ( global int) 0:? 'b' ( global int) 0:? 'c' ( global uint) 0:? 'd' ( global uint) 0:? 'e' ( global int) 0:? 'f' ( global uint) 0:? 'g' ( global int) 0:? 'h' ( global int) 0:? 'i' ( global int) 0:? 'j' ( global int) 0:? 'k' ( global int) 0:? 'l' ( global int) 0:? 'fa' ( global float) 0:? 'fb' ( global float) 0:? 'fc' ( global double) 0:? 'fd' ( global double) 0:? 'texcoord1' ( global 2-component vector of float) 0:? 'texcoord2' ( global 2-component vector of float) 0:? 'position' ( global 3-component vector of float) 0:? 'myRGBA' ( global 4-component vector of float) 0:? 'textureLookup' ( global 2-component vector of int) 0:? 'less' ( global 3-component vector of bool) 0:? 'mat2D' ( global 2X2 matrix of float) 0:? 'optMatrix' ( global 3X3 matrix of float) 0:? 'view' ( global 4X4 matrix of float) 0:? 'projection' ( global 4X4 matrix of float) 0:? 'm' ( global 3X2 matrix of float) 0:? 'highPrecisionMVP' ( global 4X4 matrix of double) 0:? 'dm' ( global 2X4 matrix of double) 0:? 'lightVar' ( global structure{ global float intensity, global 3-component vector of float position}) 0:? 'frequencies' ( global 3-element array of float) 0:? 'lightPosition' ( uniform 4-element array of 4-component vector of float) 0:? 'lights' ( global 2-element array of structure{ global float intensity, global 3-component vector of float position}) 0:? 'numLights' ( const int) 0:? 2 (const int) 0:? 'normal' ( smooth in 3-component vector of float) 0:? 'TexCoord' ( centroid smooth in 2-component vector of float) 0:? 'Color' ( invariant centroid smooth in 4-component vector of float) 0:? 'temperature' ( noperspective in float) 0:? 'myColor' ( flat in 3-component vector of float) 0:? 'myTexCoord' ( centroid noperspective in 2-component vector of float) 0:? 'color' ( uniform 3-component vector of float) 0:? 0.700000 0:? 0.700000 0:? 0.200000 0:? 'anon@0' ( in block{ smooth in 4-component vector of float Color1, smooth in 4-component vector of float Color2, in 2-component vector of float TexCoordA, in float Atten}) 0:? 'anon@1' ( in block{ in 4-component vector of float LightPos, in 3-component vector of float LightColor}) 0:? 'Materiala' ( in block{ in 4-component vector of float Color, in 2-component vector of float TexCoord}) 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? 'factor' (layout( location=3 index=1) out 4-component vector of float) 0:? 'colors' (layout( location=2) out 3-element array of 4-component vector of float) 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:? 'gl_Color' ( flat in 4-component vector of float) Linked fragment stage: Shader version: 430 Requested GL_3DL_array_objects gl_FragCoord pixel center is integer gl_FragCoord origin is upper left using early_fragment_tests using depth_greater ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child ( temp int) 0:5 'a' ( global int) 0:5 Constant: 0:5 -1 (const int) 0:7 Sequence 0:7 move second child to first child ( temp uint) 0:7 'c' ( global uint) 0:7 Constant: 0:7 4294967295 (const uint) 0:8 Sequence 0:8 move second child to first child ( temp uint) 0:8 'd' ( global uint) 0:8 Constant: 0:8 4294967295 (const uint) 0:9 Sequence 0:9 move second child to first child ( temp int) 0:9 'e' ( global int) 0:9 Constant: 0:9 -1 (const int) 0:13 Sequence 0:13 move second child to first child ( temp uint) 0:13 'f' ( global uint) 0:13 Constant: 0:13 4294967295 (const uint) 0:17 Sequence 0:17 move second child to first child ( temp int) 0:17 'g' ( global int) 0:17 Constant: 0:17 -1294967296 (const int) 0:19 Sequence 0:19 move second child to first child ( temp int) 0:19 'h' ( global int) 0:19 Constant: 0:19 -1610612736 (const int) 0:20 Sequence 0:20 move second child to first child ( temp int) 0:20 'i' ( global int) 0:20 Constant: 0:20 -1 (const int) 0:21 Sequence 0:21 move second child to first child ( temp int) 0:21 'j' ( global int) 0:21 Constant: 0:21 -1 (const int) 0:22 Sequence 0:22 move second child to first child ( temp int) 0:22 'k' ( global int) 0:22 Constant: 0:22 -2147483648 (const int) 0:23 Sequence 0:23 move second child to first child ( temp int) 0:23 'l' ( global int) 0:23 Constant: 0:23 -2147483648 (const int) 0:25 Sequence 0:25 move second child to first child ( temp float) 0:25 'fb' ( global float) 0:25 Constant: 0:25 1.500000 0:26 Sequence 0:26 move second child to first child ( temp double) 0:26 'fd' ( global double) 0:26 Constant: 0:26 2.000000 0:137 Function Definition: main( ( global void) 0:137 Function Parameters: 0:140 Sequence 0:140 Sequence 0:140 Sequence 0:140 move second child to first child ( temp 5-element array of float) 0:140 'a' ( temp 5-element array of float) 0:140 Constant: 0:140 3.400000 0:140 4.200000 0:140 5.000000 0:140 5.200000 0:140 1.100000 0:143 Sequence 0:143 Sequence 0:143 move second child to first child ( temp 5-element array of float) 0:143 'a' ( temp 5-element array of float) 0:143 Constant: 0:143 3.400000 0:143 4.200000 0:143 5.000000 0:143 5.200000 0:143 1.100000 0:? Sequence 0:149 Sequence 0:149 move second child to first child ( temp 2-element array of 4-component vector of float) 0:149 'b' ( temp 2-element array of 4-component vector of float) 0:149 Constant: 0:149 0.000000 0:149 0.000000 0:149 0.000000 0:149 0.000000 0:149 0.100000 0:149 0.100000 0:149 0.100000 0:149 0.100000 0:150 Sequence 0:150 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:150 'a3' ( temp 3-element array of 2-element array of 4-component vector of float) 0:150 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:150 'b' ( temp 2-element array of 4-component vector of float) 0:150 'b' ( temp 2-element array of 4-component vector of float) 0:150 'b' ( temp 2-element array of 4-component vector of float) 0:152 Sequence 0:152 move second child to first child ( temp 3-element array of 2-element array of 4-component vector of float) 0:152 'a4' ( temp 3-element array of 2-element array of 4-component vector of float) 0:152 Constant: 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 0.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:152 1.000000 0:? Sequence 0:159 Sequence 0:159 Sequence 0:159 move second child to first child ( temp 5-element array of float) 0:159 'b' ( temp 5-element array of float) 0:159 'a' ( temp 5-element array of float) 0:162 Sequence 0:162 Sequence 0:162 move second child to first child ( temp 5-element array of float) 0:162 'b' ( temp 5-element array of float) 0:162 'a' ( temp 5-element array of float) 0:165 Sequence 0:165 Sequence 0:165 move second child to first child ( temp 5-element array of float) 0:165 'b' ( temp 5-element array of float) 0:165 Constant: 0:165 1.000000 0:165 2.000000 0:165 3.000000 0:165 4.000000 0:165 5.000000 0:167 Constant: 0:167 5 (const int) 0:? Sequence 0:171 Constant: 0:171 3 (const int) 0:172 Constant: 0:172 2 (const int) 0:175 Constant: 0:175 0.000000 0:178 Constant: 0:178 0.000000 0:193 Sequence 0:193 move second child to first child ( temp structure{ temp float a, temp int b}) 0:193 'e' ( temp structure{ temp float a, temp int b}) 0:193 Constant: 0:193 1.200000 0:193 2 (const int) 0:216 Sequence 0:216 Sequence 0:216 move second child to first child ( temp 5-element array of float) 0:216 'a' ( temp 5-element array of float) 0:216 Constant: 0:216 3.400000 0:216 4.200000 0:216 5.000000 0:216 5.200000 0:216 1.100000 0:217 Sequence 0:217 move second child to first child ( temp 5-element array of float) 0:217 'b' ( temp 5-element array of float) 0:217 Constant: 0:217 3.400000 0:217 4.200000 0:217 5.000000 0:217 5.200000 0:217 1.100000 0:218 Sequence 0:218 move second child to first child ( temp 5-element array of float) 0:218 'c' ( temp 5-element array of float) 0:218 'a' ( temp 5-element array of float) 0:219 Sequence 0:219 move second child to first child ( temp 5-element array of float) 0:219 'd' ( temp 5-element array of float) 0:219 'b' ( temp 5-element array of float) 0:? Sequence 0:223 Sequence 0:223 move second child to first child ( temp float) 0:223 'ceiling' ( const (read only) float) 0:223 Convert int to float ( temp float) 0:223 add ( temp int) 0:223 'a' ( global int) 0:223 'b' ( global int) 0:? Linker Objects 0:? 'a' ( global int) 0:? 'b' ( global int) 0:? 'c' ( global uint) 0:? 'd' ( global uint) 0:? 'e' ( global int) 0:? 'f' ( global uint) 0:? 'g' ( global int) 0:? 'h' ( global int) 0:? 'i' ( global int) 0:? 'j' ( global int) 0:? 'k' ( global int) 0:? 'l' ( global int) 0:? 'fa' ( global float) 0:? 'fb' ( global float) 0:? 'fc' ( global double) 0:? 'fd' ( global double) 0:? 'texcoord1' ( global 2-component vector of float) 0:? 'texcoord2' ( global 2-component vector of float) 0:? 'position' ( global 3-component vector of float) 0:? 'myRGBA' ( global 4-component vector of float) 0:? 'textureLookup' ( global 2-component vector of int) 0:? 'less' ( global 3-component vector of bool) 0:? 'mat2D' ( global 2X2 matrix of float) 0:? 'optMatrix' ( global 3X3 matrix of float) 0:? 'view' ( global 4X4 matrix of float) 0:? 'projection' ( global 4X4 matrix of float) 0:? 'm' ( global 3X2 matrix of float) 0:? 'highPrecisionMVP' ( global 4X4 matrix of double) 0:? 'dm' ( global 2X4 matrix of double) 0:? 'lightVar' ( global structure{ global float intensity, global 3-component vector of float position}) 0:? 'frequencies' ( global 3-element array of float) 0:? 'lightPosition' ( uniform 4-element array of 4-component vector of float) 0:? 'lights' ( global 2-element array of structure{ global float intensity, global 3-component vector of float position}) 0:? 'numLights' ( const int) 0:? 2 (const int) 0:? 'normal' ( smooth in 3-component vector of float) 0:? 'TexCoord' ( centroid smooth in 2-component vector of float) 0:? 'Color' ( invariant centroid smooth in 4-component vector of float) 0:? 'temperature' ( noperspective in float) 0:? 'myColor' ( flat in 3-component vector of float) 0:? 'myTexCoord' ( centroid noperspective in 2-component vector of float) 0:? 'color' ( uniform 3-component vector of float) 0:? 0.700000 0:? 0.700000 0:? 0.200000 0:? 'anon@0' ( in block{ smooth in 4-component vector of float Color1, smooth in 4-component vector of float Color2, in 2-component vector of float TexCoordA, in float Atten}) 0:? 'anon@1' ( in block{ in 4-component vector of float LightPos, in 3-component vector of float LightColor}) 0:? 'Materiala' ( in block{ in 4-component vector of float Color, in 2-component vector of float TexCoord}) 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? 'factor' (layout( location=3 index=1) out 4-component vector of float) 0:? 'colors' (layout( location=2) out 3-element array of 4-component vector of float) 0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth) 0:? 'gl_Color' ( flat in 4-component vector of float) glslang-16.0.0/Test/baseResults/specExamples.vert.out000066400000000000000000000755271506534232700226300ustar00rootroot00000000000000specExamples.vert ERROR: 0:29: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:31: 'triangles' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:31: 'invocations' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:33: 'lines' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:35: 'triangle_strip' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:35: 'max_vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:36: 'max_vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:37: 'triangle_strip' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:41: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:43: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:45: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:46: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:47: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:50: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:55: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:80: 's17' : redefinition ERROR: 0:85: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:87: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:89: 'binding' : atomic_uint binding is too large ERROR: 0:91: 'bar' : redefinition ERROR: 0:94: 'a2' : redefinition ERROR: 0:95: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:96: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:97: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:106: '' : vertex input cannot be further qualified ERROR: 0:106: 'gl_FrontColor' : identifiers starting with "gl_" are reserved ERROR: 0:107: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor ERROR: 0:112: 'ColorIvn' : identifier not previously declared ERROR: 0:132: 'shared' : not supported in this stage: vertex ERROR: 0:134: '' : function does not return a value: funcA ERROR: 0:136: '' : function does not return a value: funcB ERROR: 0:153: '' : function does not return a value: func3 ERROR: 0:169: 'format' : image formats must match ERROR: 0:170: 'coherent' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:170: 'format' : image formats must match ERROR: 35 compilation errors. No code generated. Shader version: 430 Requested GL_3DL_array_objects ERROR: node is still EOpNull! 0:134 Function Definition: funcA(I21; ( global 4-component vector of float) 0:134 Function Parameters: 0:134 'a' ( restrict in image2D) 0:136 Function Definition: funcB(I21; ( global 4-component vector of float) 0:136 Function Parameters: 0:136 'a' ( in image2D) 0:140 Function Definition: func(f1;f1;f1;f1; ( global float) 0:140 Function Parameters: 0:140 'e' ( in float) 0:140 'f' ( in float) 0:140 'g' ( in float) 0:140 'h' ( in float) 0:142 Sequence 0:142 Branch: Return with expression 0:142 add ( temp float) 0:142 component-wise multiply ( temp float) 0:142 'e' ( in float) 0:142 'f' ( in float) 0:142 component-wise multiply ( temp float) 0:142 'g' ( in float) 0:142 'h' ( in float) 0:146 Function Definition: func2(f1;f1;f1;f1; ( global float) 0:146 Function Parameters: 0:146 'e' ( in float) 0:146 'f' ( in float) 0:146 'g' ( in float) 0:146 'h' ( in float) 0:148 Sequence 0:148 Sequence 0:148 move second child to first child ( temp float) 0:148 'result' ( noContraction temp float) 0:148 add ( temp float) 0:148 component-wise multiply ( temp float) 0:148 'e' ( in float) 0:148 'f' ( in float) 0:148 component-wise multiply ( temp float) 0:148 'g' ( in float) 0:148 'h' ( in float) 0:150 Branch: Return with expression 0:150 'result' ( noContraction temp float) 0:153 Function Definition: func3(f1;f1;f1; ( global float) 0:153 Function Parameters: 0:153 'i' ( in float) 0:153 'j' ( in float) 0:153 'k' ( noContraction out float) 0:155 Sequence 0:155 move second child to first child ( temp float) 0:155 'k' ( noContraction out float) 0:155 add ( temp float) 0:155 component-wise multiply ( temp float) 0:155 'i' ( in float) 0:155 'i' ( in float) 0:155 'j' ( in float) 0:158 Function Definition: main( ( global void) 0:158 Function Parameters: 0:160 Sequence 0:160 Sequence 0:160 move second child to first child ( temp 3-component vector of float) 0:160 'r' ( temp 3-component vector of float) 0:160 Construct vec3 ( temp 3-component vector of float) 0:160 component-wise multiply ( temp 4-component vector of float) 0:160 'a' ( in 4-component vector of float) 0:160 'b' ( in 4-component vector of float) 0:161 Sequence 0:161 move second child to first child ( temp 3-component vector of float) 0:161 's' ( temp 3-component vector of float) 0:161 Construct vec3 ( temp 3-component vector of float) 0:161 component-wise multiply ( temp 4-component vector of float) 0:161 'c' ( in 4-component vector of float) 0:161 'd' ( in 4-component vector of float) 0:162 move second child to first child ( temp 3-component vector of float) 0:162 vector swizzle ( noContraction temp 3-component vector of float) 0:162 'v' ( noContraction smooth out 4-component vector of float) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 add ( temp 3-component vector of float) 0:162 'r' ( temp 3-component vector of float) 0:162 's' ( temp 3-component vector of float) 0:163 move second child to first child ( temp float) 0:163 direct index ( noContraction temp float) 0:163 'v' ( noContraction smooth out 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 add ( temp float) 0:163 component-wise multiply ( temp float) 0:163 direct index ( temp float) 0:163 'a' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 direct index ( temp float) 0:163 'b' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 component-wise multiply ( temp float) 0:163 direct index ( temp float) 0:163 'c' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 direct index ( temp float) 0:163 'd' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:164 move second child to first child ( temp float) 0:164 direct index ( noContraction temp float) 0:164 'v' ( noContraction smooth out 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 Function Call: func(f1;f1;f1;f1; ( global float) 0:164 direct index ( temp float) 0:164 'a' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'b' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'c' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'd' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:166 move second child to first child ( temp float) 0:166 direct index ( noContraction temp float) 0:166 'v' ( noContraction smooth out 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 Function Call: func2(f1;f1;f1;f1; ( global float) 0:166 direct index ( temp float) 0:166 'a' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'b' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'c' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'd' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:167 Function Call: func3(f1;f1;f1; ( global float) 0:167 component-wise multiply ( temp float) 0:167 direct index ( temp float) 0:167 'a' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( temp float) 0:167 'b' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 component-wise multiply ( temp float) 0:167 direct index ( temp float) 0:167 'c' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( temp float) 0:167 'd' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( noContraction temp float) 0:167 'v' ( noContraction smooth out 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:169 Function Call: funcA(I21; ( global 4-component vector of float) 0:169 'img1' (layout( rgba32f) uniform image2D) 0:170 Function Call: funcB(I21; ( global 4-component vector of float) 0:170 'img2' (layout( rgba32f) coherent uniform image2D) 0:? Sequence 0:178 Sequence 0:178 move second child to first child ( temp structure{ temp float intensity, temp 3-component vector of float position}) 0:178 'lightVar' ( temp structure{ temp float intensity, temp 3-component vector of float position}) 0:178 Constant: 0:178 3.000000 0:178 1.000000 0:178 2.000000 0:178 3.000000 0:? Sequence 0:185 Sequence 0:185 move second child to first child ( temp 5-element array of float) 0:185 'a' ( temp 5-element array of float) 0:185 Construct float ( temp 5-element array of float) 0:185 'g' ( temp float) 0:185 Constant: 0:185 1.000000 0:185 'g' ( temp float) 0:185 Constant: 0:185 2.300000 0:185 'g' ( temp float) 0:188 move second child to first child ( temp 3-element array of float) 0:188 'b' ( temp 3-element array of float) 0:188 Construct float ( temp 3-element array of float) 0:188 'g' ( temp float) 0:188 add ( temp float) 0:188 'g' ( temp float) 0:188 Constant: 0:188 1.000000 0:188 add ( temp float) 0:188 'g' ( temp float) 0:188 Constant: 0:188 2.000000 0:191 Sequence 0:191 Sequence 0:191 move second child to first child ( temp 2-element array of 4-component vector of float) 0:191 'b' ( temp 2-element array of 4-component vector of float) 0:191 Constant: 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:192 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:193 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:194 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:? Linker Objects 0:? 'Coords' ( out block{ out 4-component vector of float Position, out 2-component vector of float Texture}) 0:? 'anon@0' ( out block{ out 4-component vector of float Color}) 0:? 'transforms' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform 4X4 matrix of float ModelViewMatrix, layout( column_major shared) uniform 4X4 matrix of float ModelViewProjectionMatrix, layout( column_major shared) uniform unsized 1-element array of 4-component vector of float a, layout( column_major shared) uniform float Deformation}) 0:? 'normal' (layout( location=3) in 4-component vector of float) 0:? 'colors' (layout( location=6) in 3-element array of 4-component vector of float) 0:? 'transforms2' (layout( location=9) in 2-element array of 4X4 matrix of float) 0:? 's' (layout( location=3) temp structure{ global 3-component vector of float a1, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c}) 0:? 'var1' ( smooth out 4-component vector of float) 0:? 'anon@1' ( out block{ out 4-component vector of float var2, out 2-component vector of float var3, out 3-component vector of float var4}) 0:? 'var5' ( smooth out 4-component vector of float) 0:? 'anon@2' ( out block{ out 4-component vector of float var6}) 0:? 'var7' ( smooth out 4-component vector of float) 0:? 'anon@3' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform 3X3 matrix of float N1}) 0:? 'anon@4' (layout( column_major shared) uniform block{layout( column_major shared) uniform 4X4 matrix of float M13, layout( row_major shared) uniform 4X4 matrix of float m14, layout( column_major shared) uniform 3X3 matrix of float N12}) 0:? 's17' (layout( binding=3) uniform sampler2D) 0:? 'a2' (layout( binding=2 offset=4) uniform atomic_uint) 0:? 'bar' (layout( binding=2) uniform atomic_uint) 0:? 'bar23' (layout( offset=8) uniform atomic_uint) 0:? 'b2' (layout( binding=2) uniform atomic_uint) 0:? 'c2' (layout( binding=3) uniform atomic_uint) 0:? 'd2' (layout( binding=2) uniform atomic_uint) 0:? 'gl_FrontColor' ( flat in 4-component vector of float) 0:? 'ColorInv' ( smooth out 3-component vector of float) 0:? 'Color4' ( invariant centroid smooth out 3-component vector of float) 0:? 'position' ( noContraction smooth out 4-component vector of float) 0:? 'Color5' ( noContraction smooth out 3-component vector of float) 0:? 'a' ( in 4-component vector of float) 0:? 'b' ( in 4-component vector of float) 0:? 'c' ( in 4-component vector of float) 0:? 'd' ( in 4-component vector of float) 0:? 'v' ( noContraction smooth out 4-component vector of float) 0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1, layout( column_major shared) coherent buffer 4-component vector of float member2}) 0:? 'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A}) 0:? 'shv' ( shared 4-component vector of float) 0:? 'img1' (layout( rgba32f) uniform image2D) 0:? 'img2' (layout( rgba32f) coherent uniform image2D) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 430 Requested GL_3DL_array_objects ERROR: node is still EOpNull! 0:134 Function Definition: funcA(I21; ( global 4-component vector of float) 0:134 Function Parameters: 0:134 'a' ( restrict in image2D) 0:136 Function Definition: funcB(I21; ( global 4-component vector of float) 0:136 Function Parameters: 0:136 'a' ( in image2D) 0:140 Function Definition: func(f1;f1;f1;f1; ( global float) 0:140 Function Parameters: 0:140 'e' ( in float) 0:140 'f' ( in float) 0:140 'g' ( in float) 0:140 'h' ( in float) 0:142 Sequence 0:142 Branch: Return with expression 0:142 add ( temp float) 0:142 component-wise multiply ( temp float) 0:142 'e' ( in float) 0:142 'f' ( in float) 0:142 component-wise multiply ( temp float) 0:142 'g' ( in float) 0:142 'h' ( in float) 0:146 Function Definition: func2(f1;f1;f1;f1; ( global float) 0:146 Function Parameters: 0:146 'e' ( in float) 0:146 'f' ( in float) 0:146 'g' ( in float) 0:146 'h' ( in float) 0:148 Sequence 0:148 Sequence 0:148 move second child to first child ( temp float) 0:148 'result' ( noContraction temp float) 0:148 add ( temp float) 0:148 component-wise multiply ( temp float) 0:148 'e' ( in float) 0:148 'f' ( in float) 0:148 component-wise multiply ( temp float) 0:148 'g' ( in float) 0:148 'h' ( in float) 0:150 Branch: Return with expression 0:150 'result' ( noContraction temp float) 0:153 Function Definition: func3(f1;f1;f1; ( global float) 0:153 Function Parameters: 0:153 'i' ( in float) 0:153 'j' ( in float) 0:153 'k' ( noContraction out float) 0:155 Sequence 0:155 move second child to first child ( temp float) 0:155 'k' ( noContraction out float) 0:155 add ( temp float) 0:155 component-wise multiply ( temp float) 0:155 'i' ( in float) 0:155 'i' ( in float) 0:155 'j' ( in float) 0:158 Function Definition: main( ( global void) 0:158 Function Parameters: 0:160 Sequence 0:160 Sequence 0:160 move second child to first child ( temp 3-component vector of float) 0:160 'r' ( temp 3-component vector of float) 0:160 Construct vec3 ( temp 3-component vector of float) 0:160 component-wise multiply ( temp 4-component vector of float) 0:160 'a' ( in 4-component vector of float) 0:160 'b' ( in 4-component vector of float) 0:161 Sequence 0:161 move second child to first child ( temp 3-component vector of float) 0:161 's' ( temp 3-component vector of float) 0:161 Construct vec3 ( temp 3-component vector of float) 0:161 component-wise multiply ( temp 4-component vector of float) 0:161 'c' ( in 4-component vector of float) 0:161 'd' ( in 4-component vector of float) 0:162 move second child to first child ( temp 3-component vector of float) 0:162 vector swizzle ( noContraction temp 3-component vector of float) 0:162 'v' ( noContraction smooth out 4-component vector of float) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 add ( temp 3-component vector of float) 0:162 'r' ( temp 3-component vector of float) 0:162 's' ( temp 3-component vector of float) 0:163 move second child to first child ( temp float) 0:163 direct index ( noContraction temp float) 0:163 'v' ( noContraction smooth out 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 add ( temp float) 0:163 component-wise multiply ( temp float) 0:163 direct index ( temp float) 0:163 'a' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 direct index ( temp float) 0:163 'b' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 component-wise multiply ( temp float) 0:163 direct index ( temp float) 0:163 'c' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 direct index ( temp float) 0:163 'd' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:164 move second child to first child ( temp float) 0:164 direct index ( noContraction temp float) 0:164 'v' ( noContraction smooth out 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 Function Call: func(f1;f1;f1;f1; ( global float) 0:164 direct index ( temp float) 0:164 'a' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'b' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'c' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'd' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:166 move second child to first child ( temp float) 0:166 direct index ( noContraction temp float) 0:166 'v' ( noContraction smooth out 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 Function Call: func2(f1;f1;f1;f1; ( global float) 0:166 direct index ( temp float) 0:166 'a' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'b' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'c' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'd' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:167 Function Call: func3(f1;f1;f1; ( global float) 0:167 component-wise multiply ( temp float) 0:167 direct index ( temp float) 0:167 'a' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( temp float) 0:167 'b' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 component-wise multiply ( temp float) 0:167 direct index ( temp float) 0:167 'c' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( temp float) 0:167 'd' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( noContraction temp float) 0:167 'v' ( noContraction smooth out 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:169 Function Call: funcA(I21; ( global 4-component vector of float) 0:169 'img1' (layout( rgba32f) uniform image2D) 0:170 Function Call: funcB(I21; ( global 4-component vector of float) 0:170 'img2' (layout( rgba32f) coherent uniform image2D) 0:? Sequence 0:178 Sequence 0:178 move second child to first child ( temp structure{ temp float intensity, temp 3-component vector of float position}) 0:178 'lightVar' ( temp structure{ temp float intensity, temp 3-component vector of float position}) 0:178 Constant: 0:178 3.000000 0:178 1.000000 0:178 2.000000 0:178 3.000000 0:? Sequence 0:185 Sequence 0:185 move second child to first child ( temp 5-element array of float) 0:185 'a' ( temp 5-element array of float) 0:185 Construct float ( temp 5-element array of float) 0:185 'g' ( temp float) 0:185 Constant: 0:185 1.000000 0:185 'g' ( temp float) 0:185 Constant: 0:185 2.300000 0:185 'g' ( temp float) 0:188 move second child to first child ( temp 3-element array of float) 0:188 'b' ( temp 3-element array of float) 0:188 Construct float ( temp 3-element array of float) 0:188 'g' ( temp float) 0:188 add ( temp float) 0:188 'g' ( temp float) 0:188 Constant: 0:188 1.000000 0:188 add ( temp float) 0:188 'g' ( temp float) 0:188 Constant: 0:188 2.000000 0:191 Sequence 0:191 Sequence 0:191 move second child to first child ( temp 2-element array of 4-component vector of float) 0:191 'b' ( temp 2-element array of 4-component vector of float) 0:191 Constant: 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:192 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:193 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:194 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:? Linker Objects 0:? 'Coords' ( out block{ out 4-component vector of float Position, out 2-component vector of float Texture}) 0:? 'anon@0' ( out block{ out 4-component vector of float Color}) 0:? 'transforms' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform 4X4 matrix of float ModelViewMatrix, layout( column_major shared) uniform 4X4 matrix of float ModelViewProjectionMatrix, layout( column_major shared) uniform 1-element array of 4-component vector of float a, layout( column_major shared) uniform float Deformation}) 0:? 'normal' (layout( location=3) in 4-component vector of float) 0:? 'colors' (layout( location=6) in 3-element array of 4-component vector of float) 0:? 'transforms2' (layout( location=9) in 2-element array of 4X4 matrix of float) 0:? 's' (layout( location=3) temp structure{ global 3-component vector of float a1, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c}) 0:? 'var1' ( smooth out 4-component vector of float) 0:? 'anon@1' ( out block{ out 4-component vector of float var2, out 2-component vector of float var3, out 3-component vector of float var4}) 0:? 'var5' ( smooth out 4-component vector of float) 0:? 'anon@2' ( out block{ out 4-component vector of float var6}) 0:? 'var7' ( smooth out 4-component vector of float) 0:? 'anon@3' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform 3X3 matrix of float N1}) 0:? 'anon@4' (layout( column_major shared) uniform block{layout( column_major shared) uniform 4X4 matrix of float M13, layout( row_major shared) uniform 4X4 matrix of float m14, layout( column_major shared) uniform 3X3 matrix of float N12}) 0:? 's17' (layout( binding=3) uniform sampler2D) 0:? 'a2' (layout( binding=2 offset=4) uniform atomic_uint) 0:? 'bar' (layout( binding=2) uniform atomic_uint) 0:? 'bar23' (layout( offset=8) uniform atomic_uint) 0:? 'b2' (layout( binding=2) uniform atomic_uint) 0:? 'c2' (layout( binding=3) uniform atomic_uint) 0:? 'd2' (layout( binding=2) uniform atomic_uint) 0:? 'gl_FrontColor' ( flat in 4-component vector of float) 0:? 'ColorInv' ( smooth out 3-component vector of float) 0:? 'Color4' ( invariant centroid smooth out 3-component vector of float) 0:? 'position' ( noContraction smooth out 4-component vector of float) 0:? 'Color5' ( noContraction smooth out 3-component vector of float) 0:? 'a' ( in 4-component vector of float) 0:? 'b' ( in 4-component vector of float) 0:? 'c' ( in 4-component vector of float) 0:? 'd' ( in 4-component vector of float) 0:? 'v' ( noContraction smooth out 4-component vector of float) 0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1, layout( column_major shared) coherent buffer 4-component vector of float member2}) 0:? 'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A}) 0:? 'shv' ( shared 4-component vector of float) 0:? 'img1' (layout( rgba32f) uniform image2D) 0:? 'img2' (layout( rgba32f) coherent uniform image2D) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/specExamplesConf.vert.out000066400000000000000000000756231506534232700234330ustar00rootroot00000000000000specExamples.vert ERROR: 0:29: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:31: 'triangles' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:31: 'invocations' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:33: 'lines' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:35: 'triangle_strip' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:35: 'max_vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:36: 'max_vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:37: 'triangle_strip' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:41: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:43: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:45: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:46: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:47: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:50: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:55: 'stream' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:80: 's17' : redefinition ERROR: 0:85: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:87: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:89: 'binding' : atomic_uint binding is too large ERROR: 0:91: 'bar' : redefinition ERROR: 0:92: 'atomic_uint' : layout(binding=X) is required ERROR: 0:94: 'a2' : redefinition ERROR: 0:95: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:96: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:97: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings ERROR: 0:106: '' : vertex input cannot be further qualified ERROR: 0:106: 'gl_FrontColor' : identifiers starting with "gl_" are reserved ERROR: 0:107: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor ERROR: 0:112: 'ColorIvn' : identifier not previously declared ERROR: 0:132: 'shared' : not supported in this stage: vertex ERROR: 0:134: '' : function does not return a value: funcA ERROR: 0:136: '' : function does not return a value: funcB ERROR: 0:153: '' : function does not return a value: func3 ERROR: 0:169: 'format' : image formats must match ERROR: 0:170: 'coherent' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:170: 'format' : image formats must match ERROR: 36 compilation errors. No code generated. Shader version: 430 Requested GL_3DL_array_objects ERROR: node is still EOpNull! 0:134 Function Definition: funcA(I21; ( global 4-component vector of float) 0:134 Function Parameters: 0:134 'a' ( restrict in image2D) 0:136 Function Definition: funcB(I21; ( global 4-component vector of float) 0:136 Function Parameters: 0:136 'a' ( in image2D) 0:140 Function Definition: func(f1;f1;f1;f1; ( global float) 0:140 Function Parameters: 0:140 'e' ( in float) 0:140 'f' ( in float) 0:140 'g' ( in float) 0:140 'h' ( in float) 0:142 Sequence 0:142 Branch: Return with expression 0:142 add ( temp float) 0:142 component-wise multiply ( temp float) 0:142 'e' ( in float) 0:142 'f' ( in float) 0:142 component-wise multiply ( temp float) 0:142 'g' ( in float) 0:142 'h' ( in float) 0:146 Function Definition: func2(f1;f1;f1;f1; ( global float) 0:146 Function Parameters: 0:146 'e' ( in float) 0:146 'f' ( in float) 0:146 'g' ( in float) 0:146 'h' ( in float) 0:148 Sequence 0:148 Sequence 0:148 move second child to first child ( temp float) 0:148 'result' ( noContraction temp float) 0:148 add ( temp float) 0:148 component-wise multiply ( temp float) 0:148 'e' ( in float) 0:148 'f' ( in float) 0:148 component-wise multiply ( temp float) 0:148 'g' ( in float) 0:148 'h' ( in float) 0:150 Branch: Return with expression 0:150 'result' ( noContraction temp float) 0:153 Function Definition: func3(f1;f1;f1; ( global float) 0:153 Function Parameters: 0:153 'i' ( in float) 0:153 'j' ( in float) 0:153 'k' ( noContraction out float) 0:155 Sequence 0:155 move second child to first child ( temp float) 0:155 'k' ( noContraction out float) 0:155 add ( temp float) 0:155 component-wise multiply ( temp float) 0:155 'i' ( in float) 0:155 'i' ( in float) 0:155 'j' ( in float) 0:158 Function Definition: main( ( global void) 0:158 Function Parameters: 0:160 Sequence 0:160 Sequence 0:160 move second child to first child ( temp 3-component vector of float) 0:160 'r' ( temp 3-component vector of float) 0:160 Construct vec3 ( temp 3-component vector of float) 0:160 component-wise multiply ( temp 4-component vector of float) 0:160 'a' ( in 4-component vector of float) 0:160 'b' ( in 4-component vector of float) 0:161 Sequence 0:161 move second child to first child ( temp 3-component vector of float) 0:161 's' ( temp 3-component vector of float) 0:161 Construct vec3 ( temp 3-component vector of float) 0:161 component-wise multiply ( temp 4-component vector of float) 0:161 'c' ( in 4-component vector of float) 0:161 'd' ( in 4-component vector of float) 0:162 move second child to first child ( temp 3-component vector of float) 0:162 vector swizzle ( noContraction temp 3-component vector of float) 0:162 'v' ( noContraction smooth out 4-component vector of float) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 add ( temp 3-component vector of float) 0:162 'r' ( temp 3-component vector of float) 0:162 's' ( temp 3-component vector of float) 0:163 move second child to first child ( temp float) 0:163 direct index ( noContraction temp float) 0:163 'v' ( noContraction smooth out 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 add ( temp float) 0:163 component-wise multiply ( temp float) 0:163 direct index ( temp float) 0:163 'a' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 direct index ( temp float) 0:163 'b' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 component-wise multiply ( temp float) 0:163 direct index ( temp float) 0:163 'c' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 direct index ( temp float) 0:163 'd' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:164 move second child to first child ( temp float) 0:164 direct index ( noContraction temp float) 0:164 'v' ( noContraction smooth out 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 Function Call: func(f1;f1;f1;f1; ( global float) 0:164 direct index ( temp float) 0:164 'a' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'b' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'c' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'd' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:166 move second child to first child ( temp float) 0:166 direct index ( noContraction temp float) 0:166 'v' ( noContraction smooth out 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 Function Call: func2(f1;f1;f1;f1; ( global float) 0:166 direct index ( temp float) 0:166 'a' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'b' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'c' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'd' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:167 Function Call: func3(f1;f1;f1; ( global float) 0:167 component-wise multiply ( temp float) 0:167 direct index ( temp float) 0:167 'a' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( temp float) 0:167 'b' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 component-wise multiply ( temp float) 0:167 direct index ( temp float) 0:167 'c' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( temp float) 0:167 'd' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( noContraction temp float) 0:167 'v' ( noContraction smooth out 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:169 Function Call: funcA(I21; ( global 4-component vector of float) 0:169 'img1' (layout( rgba32f) uniform image2D) 0:170 Function Call: funcB(I21; ( global 4-component vector of float) 0:170 'img2' (layout( rgba32f) coherent uniform image2D) 0:? Sequence 0:178 Sequence 0:178 move second child to first child ( temp structure{ temp float intensity, temp 3-component vector of float position}) 0:178 'lightVar' ( temp structure{ temp float intensity, temp 3-component vector of float position}) 0:178 Constant: 0:178 3.000000 0:178 1.000000 0:178 2.000000 0:178 3.000000 0:? Sequence 0:185 Sequence 0:185 move second child to first child ( temp 5-element array of float) 0:185 'a' ( temp 5-element array of float) 0:185 Construct float ( temp 5-element array of float) 0:185 'g' ( temp float) 0:185 Constant: 0:185 1.000000 0:185 'g' ( temp float) 0:185 Constant: 0:185 2.300000 0:185 'g' ( temp float) 0:188 move second child to first child ( temp 3-element array of float) 0:188 'b' ( temp 3-element array of float) 0:188 Construct float ( temp 3-element array of float) 0:188 'g' ( temp float) 0:188 add ( temp float) 0:188 'g' ( temp float) 0:188 Constant: 0:188 1.000000 0:188 add ( temp float) 0:188 'g' ( temp float) 0:188 Constant: 0:188 2.000000 0:191 Sequence 0:191 Sequence 0:191 move second child to first child ( temp 2-element array of 4-component vector of float) 0:191 'b' ( temp 2-element array of 4-component vector of float) 0:191 Constant: 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:192 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:193 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:194 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:? Linker Objects 0:? 'Coords' ( out block{ out 4-component vector of float Position, out 2-component vector of float Texture}) 0:? 'anon@0' ( out block{ out 4-component vector of float Color}) 0:? 'transforms' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform 4X4 matrix of float ModelViewMatrix, layout( column_major shared) uniform 4X4 matrix of float ModelViewProjectionMatrix, layout( column_major shared) uniform unsized 1-element array of 4-component vector of float a, layout( column_major shared) uniform float Deformation}) 0:? 'normal' (layout( location=3) in 4-component vector of float) 0:? 'colors' (layout( location=6) in 3-element array of 4-component vector of float) 0:? 'transforms2' (layout( location=9) in 2-element array of 4X4 matrix of float) 0:? 's' (layout( location=3) temp structure{ global 3-component vector of float a1, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c}) 0:? 'var1' ( smooth out 4-component vector of float) 0:? 'anon@1' ( out block{ out 4-component vector of float var2, out 2-component vector of float var3, out 3-component vector of float var4}) 0:? 'var5' ( smooth out 4-component vector of float) 0:? 'anon@2' ( out block{ out 4-component vector of float var6}) 0:? 'var7' ( smooth out 4-component vector of float) 0:? 'anon@3' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform 3X3 matrix of float N1}) 0:? 'anon@4' (layout( column_major shared) uniform block{layout( column_major shared) uniform 4X4 matrix of float M13, layout( row_major shared) uniform 4X4 matrix of float m14, layout( column_major shared) uniform 3X3 matrix of float N12}) 0:? 's17' (layout( binding=3) uniform sampler2D) 0:? 'a2' (layout( binding=2 offset=4) uniform atomic_uint) 0:? 'bar' (layout( binding=2) uniform atomic_uint) 0:? 'bar23' (layout( offset=8) uniform atomic_uint) 0:? 'b2' (layout( binding=2) uniform atomic_uint) 0:? 'c2' (layout( binding=3) uniform atomic_uint) 0:? 'd2' (layout( binding=2) uniform atomic_uint) 0:? 'gl_FrontColor' ( flat in 4-component vector of float) 0:? 'ColorInv' ( smooth out 3-component vector of float) 0:? 'Color4' ( invariant centroid smooth out 3-component vector of float) 0:? 'position' ( noContraction smooth out 4-component vector of float) 0:? 'Color5' ( noContraction smooth out 3-component vector of float) 0:? 'a' ( in 4-component vector of float) 0:? 'b' ( in 4-component vector of float) 0:? 'c' ( in 4-component vector of float) 0:? 'd' ( in 4-component vector of float) 0:? 'v' ( noContraction smooth out 4-component vector of float) 0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1, layout( column_major shared) coherent buffer 4-component vector of float member2}) 0:? 'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A}) 0:? 'shv' ( shared 4-component vector of float) 0:? 'img1' (layout( rgba32f) uniform image2D) 0:? 'img2' (layout( rgba32f) coherent uniform image2D) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 430 Requested GL_3DL_array_objects ERROR: node is still EOpNull! 0:134 Function Definition: funcA(I21; ( global 4-component vector of float) 0:134 Function Parameters: 0:134 'a' ( restrict in image2D) 0:136 Function Definition: funcB(I21; ( global 4-component vector of float) 0:136 Function Parameters: 0:136 'a' ( in image2D) 0:140 Function Definition: func(f1;f1;f1;f1; ( global float) 0:140 Function Parameters: 0:140 'e' ( in float) 0:140 'f' ( in float) 0:140 'g' ( in float) 0:140 'h' ( in float) 0:142 Sequence 0:142 Branch: Return with expression 0:142 add ( temp float) 0:142 component-wise multiply ( temp float) 0:142 'e' ( in float) 0:142 'f' ( in float) 0:142 component-wise multiply ( temp float) 0:142 'g' ( in float) 0:142 'h' ( in float) 0:146 Function Definition: func2(f1;f1;f1;f1; ( global float) 0:146 Function Parameters: 0:146 'e' ( in float) 0:146 'f' ( in float) 0:146 'g' ( in float) 0:146 'h' ( in float) 0:148 Sequence 0:148 Sequence 0:148 move second child to first child ( temp float) 0:148 'result' ( noContraction temp float) 0:148 add ( temp float) 0:148 component-wise multiply ( temp float) 0:148 'e' ( in float) 0:148 'f' ( in float) 0:148 component-wise multiply ( temp float) 0:148 'g' ( in float) 0:148 'h' ( in float) 0:150 Branch: Return with expression 0:150 'result' ( noContraction temp float) 0:153 Function Definition: func3(f1;f1;f1; ( global float) 0:153 Function Parameters: 0:153 'i' ( in float) 0:153 'j' ( in float) 0:153 'k' ( noContraction out float) 0:155 Sequence 0:155 move second child to first child ( temp float) 0:155 'k' ( noContraction out float) 0:155 add ( temp float) 0:155 component-wise multiply ( temp float) 0:155 'i' ( in float) 0:155 'i' ( in float) 0:155 'j' ( in float) 0:158 Function Definition: main( ( global void) 0:158 Function Parameters: 0:160 Sequence 0:160 Sequence 0:160 move second child to first child ( temp 3-component vector of float) 0:160 'r' ( temp 3-component vector of float) 0:160 Construct vec3 ( temp 3-component vector of float) 0:160 component-wise multiply ( temp 4-component vector of float) 0:160 'a' ( in 4-component vector of float) 0:160 'b' ( in 4-component vector of float) 0:161 Sequence 0:161 move second child to first child ( temp 3-component vector of float) 0:161 's' ( temp 3-component vector of float) 0:161 Construct vec3 ( temp 3-component vector of float) 0:161 component-wise multiply ( temp 4-component vector of float) 0:161 'c' ( in 4-component vector of float) 0:161 'd' ( in 4-component vector of float) 0:162 move second child to first child ( temp 3-component vector of float) 0:162 vector swizzle ( noContraction temp 3-component vector of float) 0:162 'v' ( noContraction smooth out 4-component vector of float) 0:162 Sequence 0:162 Constant: 0:162 0 (const int) 0:162 Constant: 0:162 1 (const int) 0:162 Constant: 0:162 2 (const int) 0:162 add ( temp 3-component vector of float) 0:162 'r' ( temp 3-component vector of float) 0:162 's' ( temp 3-component vector of float) 0:163 move second child to first child ( temp float) 0:163 direct index ( noContraction temp float) 0:163 'v' ( noContraction smooth out 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 add ( temp float) 0:163 component-wise multiply ( temp float) 0:163 direct index ( temp float) 0:163 'a' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 direct index ( temp float) 0:163 'b' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 component-wise multiply ( temp float) 0:163 direct index ( temp float) 0:163 'c' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:163 direct index ( temp float) 0:163 'd' ( in 4-component vector of float) 0:163 Constant: 0:163 3 (const int) 0:164 move second child to first child ( temp float) 0:164 direct index ( noContraction temp float) 0:164 'v' ( noContraction smooth out 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 Function Call: func(f1;f1;f1;f1; ( global float) 0:164 direct index ( temp float) 0:164 'a' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'b' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'c' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:164 direct index ( temp float) 0:164 'd' ( in 4-component vector of float) 0:164 Constant: 0:164 0 (const int) 0:166 move second child to first child ( temp float) 0:166 direct index ( noContraction temp float) 0:166 'v' ( noContraction smooth out 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 Function Call: func2(f1;f1;f1;f1; ( global float) 0:166 direct index ( temp float) 0:166 'a' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'b' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'c' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:166 direct index ( temp float) 0:166 'd' ( in 4-component vector of float) 0:166 Constant: 0:166 0 (const int) 0:167 Function Call: func3(f1;f1;f1; ( global float) 0:167 component-wise multiply ( temp float) 0:167 direct index ( temp float) 0:167 'a' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( temp float) 0:167 'b' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 component-wise multiply ( temp float) 0:167 direct index ( temp float) 0:167 'c' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( temp float) 0:167 'd' ( in 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:167 direct index ( noContraction temp float) 0:167 'v' ( noContraction smooth out 4-component vector of float) 0:167 Constant: 0:167 0 (const int) 0:169 Function Call: funcA(I21; ( global 4-component vector of float) 0:169 'img1' (layout( rgba32f) uniform image2D) 0:170 Function Call: funcB(I21; ( global 4-component vector of float) 0:170 'img2' (layout( rgba32f) coherent uniform image2D) 0:? Sequence 0:178 Sequence 0:178 move second child to first child ( temp structure{ temp float intensity, temp 3-component vector of float position}) 0:178 'lightVar' ( temp structure{ temp float intensity, temp 3-component vector of float position}) 0:178 Constant: 0:178 3.000000 0:178 1.000000 0:178 2.000000 0:178 3.000000 0:? Sequence 0:185 Sequence 0:185 move second child to first child ( temp 5-element array of float) 0:185 'a' ( temp 5-element array of float) 0:185 Construct float ( temp 5-element array of float) 0:185 'g' ( temp float) 0:185 Constant: 0:185 1.000000 0:185 'g' ( temp float) 0:185 Constant: 0:185 2.300000 0:185 'g' ( temp float) 0:188 move second child to first child ( temp 3-element array of float) 0:188 'b' ( temp 3-element array of float) 0:188 Construct float ( temp 3-element array of float) 0:188 'g' ( temp float) 0:188 add ( temp float) 0:188 'g' ( temp float) 0:188 Constant: 0:188 1.000000 0:188 add ( temp float) 0:188 'g' ( temp float) 0:188 Constant: 0:188 2.000000 0:191 Sequence 0:191 Sequence 0:191 move second child to first child ( temp 2-element array of 4-component vector of float) 0:191 'b' ( temp 2-element array of 4-component vector of float) 0:191 Constant: 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:191 1.000000 0:192 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:192 'b' ( temp 2-element array of 4-component vector of float) 0:193 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:193 'b' ( temp 2-element array of 4-component vector of float) 0:194 Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:194 'b' ( temp 2-element array of 4-component vector of float) 0:? Linker Objects 0:? 'Coords' ( out block{ out 4-component vector of float Position, out 2-component vector of float Texture}) 0:? 'anon@0' ( out block{ out 4-component vector of float Color}) 0:? 'transforms' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform 4X4 matrix of float ModelViewMatrix, layout( column_major shared) uniform 4X4 matrix of float ModelViewProjectionMatrix, layout( column_major shared) uniform 1-element array of 4-component vector of float a, layout( column_major shared) uniform float Deformation}) 0:? 'normal' (layout( location=3) in 4-component vector of float) 0:? 'colors' (layout( location=6) in 3-element array of 4-component vector of float) 0:? 'transforms2' (layout( location=9) in 2-element array of 4X4 matrix of float) 0:? 's' (layout( location=3) temp structure{ global 3-component vector of float a1, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c}) 0:? 'var1' ( smooth out 4-component vector of float) 0:? 'anon@1' ( out block{ out 4-component vector of float var2, out 2-component vector of float var3, out 3-component vector of float var4}) 0:? 'var5' ( smooth out 4-component vector of float) 0:? 'anon@2' ( out block{ out 4-component vector of float var6}) 0:? 'var7' ( smooth out 4-component vector of float) 0:? 'anon@3' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform 3X3 matrix of float N1}) 0:? 'anon@4' (layout( column_major shared) uniform block{layout( column_major shared) uniform 4X4 matrix of float M13, layout( row_major shared) uniform 4X4 matrix of float m14, layout( column_major shared) uniform 3X3 matrix of float N12}) 0:? 's17' (layout( binding=3) uniform sampler2D) 0:? 'a2' (layout( binding=2 offset=4) uniform atomic_uint) 0:? 'bar' (layout( binding=2) uniform atomic_uint) 0:? 'bar23' (layout( offset=8) uniform atomic_uint) 0:? 'b2' (layout( binding=2) uniform atomic_uint) 0:? 'c2' (layout( binding=3) uniform atomic_uint) 0:? 'd2' (layout( binding=2) uniform atomic_uint) 0:? 'gl_FrontColor' ( flat in 4-component vector of float) 0:? 'ColorInv' ( smooth out 3-component vector of float) 0:? 'Color4' ( invariant centroid smooth out 3-component vector of float) 0:? 'position' ( noContraction smooth out 4-component vector of float) 0:? 'Color5' ( noContraction smooth out 3-component vector of float) 0:? 'a' ( in 4-component vector of float) 0:? 'b' ( in 4-component vector of float) 0:? 'c' ( in 4-component vector of float) 0:? 'd' ( in 4-component vector of float) 0:? 'v' ( noContraction smooth out 4-component vector of float) 0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1, layout( column_major shared) coherent buffer 4-component vector of float member2}) 0:? 'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A}) 0:? 'shv' ( shared 4-component vector of float) 0:? 'img1' (layout( rgba32f) uniform image2D) 0:? 'img2' (layout( rgba32f) coherent uniform image2D) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out000066400000000000000000000054371506534232700244760ustar00rootroot00000000000000spv.1.3.8bitstorage-ssbo.vert // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader Capability StorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 18 Source GLSL 450 SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 9 "color" Name 12 "Vertices" MemberName 12(Vertices) 0 "vertices" Name 14 "" Name 18 "gl_VertexIndex" Decorate 9(color) Location 0 Decorate 11 ArrayStride 1 Decorate 12(Vertices) Block MemberDecorate 12(Vertices) 0 NonWritable MemberDecorate 12(Vertices) 0 Offset 0 Decorate 14 NonWritable Decorate 14 Binding 0 Decorate 14 DescriptorSet 0 Decorate 18(gl_VertexIndex) BuiltIn VertexIndex 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: TypeInt 8 0 11: TypeRuntimeArray 10(int8_t) 12(Vertices): TypeStruct 11 13: TypePointer StorageBuffer 12(Vertices) 14: 13(ptr) Variable StorageBuffer 15: TypeInt 32 1 16: 15(int) Constant 0 17: TypePointer Input 15(int) 18(gl_VertexIndex): 17(ptr) Variable Input 20: TypePointer StorageBuffer 10(int8_t) 23: TypeInt 32 0 4(main): 2 Function None 3 5: Label 19: 15(int) Load 18(gl_VertexIndex) 21: 20(ptr) AccessChain 14 16 19 22: 10(int8_t) Load 21 24: 23(int) UConvert 22 25: 15(int) Bitcast 24 26: 6(float) ConvertSToF 25 27: 7(fvec4) CompositeConstruct 26 26 26 26 Store 9(color) 27 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out000066400000000000000000000053661506534232700243160ustar00rootroot00000000000000spv.1.3.8bitstorage-ubo.vert // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 20 Source GLSL 450 SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 9 "color" Name 14 "Vertices" MemberName 14(Vertices) 0 "vertices" Name 16 "" Name 20 "gl_VertexIndex" Decorate 9(color) Location 0 Decorate 13 ArrayStride 16 Decorate 14(Vertices) Block MemberDecorate 14(Vertices) 0 Offset 0 Decorate 16 NonWritable Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 20(gl_VertexIndex) BuiltIn VertexIndex 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: TypeInt 8 0 11: TypeInt 32 0 12: 11(int) Constant 512 13: TypeArray 10(int8_t) 12 14(Vertices): TypeStruct 13 15: TypePointer Uniform 14(Vertices) 16: 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypePointer Input 17(int) 20(gl_VertexIndex): 19(ptr) Variable Input 22: TypePointer Uniform 10(int8_t) 4(main): 2 Function None 3 5: Label 21: 17(int) Load 20(gl_VertexIndex) 23: 22(ptr) AccessChain 16 18 21 24: 10(int8_t) Load 23 25: 11(int) UConvert 24 26: 17(int) Bitcast 25 27: 6(float) ConvertSToF 26 28: 7(fvec4) CompositeConstruct 27 27 27 27 Store 9(color) 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.3.coopmat.comp.out000066400000000000000000000110101506534232700226770ustar00rootroot00000000000000spv.1.3.coopmat.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader Capability VariablePointers Capability VulkanMemoryModelKHR Capability CooperativeMatrixNV Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix" Name 4 "main" Name 13 "m" Name 32 "Block" MemberName 32(Block) 0 "y" MemberName 32(Block) 1 "x" Name 34 "block" Decorate 30 ArrayStride 4 Decorate 31 ArrayStride 4 Decorate 32(Block) Block MemberDecorate 32(Block) 0 Offset 0 MemberDecorate 32(Block) 1 Offset 4194304 Decorate 34(block) Binding 0 Decorate 34(block) DescriptorSet 0 Decorate 49 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 16 10: 7(int) Constant 8 11: TypeCooperativeMatrixNV 6(float) 8 9 10 12: TypePointer Function 11 14: 6(float) Constant 0 15: 11 ConstantComposite 14 24: 6(float) Constant 1073741824 29: 7(int) Constant 1048576 30: TypeArray 6(float) 29 31: TypeRuntimeArray 6(float) 32(Block): TypeStruct 30 31 33: TypePointer StorageBuffer 32(Block) 34(block): 33(ptr) Variable StorageBuffer 35: TypeInt 32 1 36: 35(int) Constant 1 37: 7(int) Constant 5 38: TypePointer StorageBuffer 6(float) 40: 7(int) Constant 128 41: TypeBool 42: 41(bool) ConstantFalse 46: TypeVector 7(int) 3 47: 7(int) Constant 64 48: 7(int) Constant 1 49: 46(ivec3) ConstantComposite 47 48 48 4(main): 2 Function None 3 5: Label 13(m): 12(ptr) Variable Function Store 13(m) 15 16: 11 Load 13(m) 17: 11 Load 13(m) 18: 11 FAdd 16 17 Store 13(m) 18 19: 11 Load 13(m) 20: 11 Load 13(m) 21: 11 FSub 19 20 Store 13(m) 21 22: 11 Load 13(m) 23: 11 FNegate 22 Store 13(m) 23 25: 11 Load 13(m) 26: 11 MatrixTimesScalar 25 24 Store 13(m) 26 27: 11 Load 13(m) 28: 11 MatrixTimesScalar 27 24 Store 13(m) 28 39: 38(ptr) AccessChain 34(block) 36 9 43: 11 CooperativeMatrixLoadNV 39 40 42 MakePointerVisibleKHR NonPrivatePointerKHR 37 Store 13(m) 43 44: 11 Load 13(m) 45: 38(ptr) AccessChain 34(block) 36 9 CooperativeMatrixStoreNV 45 44 40 42 MakePointerAvailableKHR NonPrivatePointerKHR 37 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.LoopControl.frag.out000066400000000000000000000112011506534232700234730ustar00rootroot00000000000000spv.1.4.LoopControl.frag WARNING: 0:15: 'min_iterations' : expected a single integer argument WARNING: 0:15: 'max_iterations' : expected a single integer argument // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 53 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_control_flow_attributes" Name 4 "main" Name 8 "i" Name 32 "i" Name 42 "i" Name 53 "cond" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 8 17: TypeBool 20: 6(int) Constant 1 27: 17(bool) ConstantTrue 52: TypePointer Private 17(bool) 53(cond): 52(ptr) Variable Private 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function 32(i): 7(ptr) Variable Function 42(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 MinIterations MaxIterations 3 7 Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label Branch 13 13: Label 19: 6(int) Load 8(i) 21: 6(int) IAdd 19 20 Store 8(i) 21 Branch 10 12: Label Branch 22 22: Label LoopMerge 24 25 IterationMultiple 2 Branch 26 26: Label BranchConditional 27 23 24 23: Label Branch 25 25: Label Branch 22 24: Label Branch 28 28: Label LoopMerge 30 31 PeelCount 5 Branch 29 29: Label Branch 31 31: Label BranchConditional 27 28 30 30: Label Store 32(i) 9 Branch 33 33: Label LoopMerge 35 36 PartialCount 4 Branch 37 37: Label 38: 6(int) Load 32(i) 39: 17(bool) SLessThan 38 16 BranchConditional 39 34 35 34: Label Branch 36 36: Label 40: 6(int) Load 32(i) 41: 6(int) IAdd 40 20 Store 32(i) 41 Branch 33 35: Label Store 42(i) 9 Branch 43 43: Label LoopMerge 45 46 None Branch 47 47: Label 48: 6(int) Load 42(i) 49: 17(bool) SLessThan 48 16 BranchConditional 49 44 45 44: Label Branch 46 46: Label 50: 6(int) Load 42(i) 51: 6(int) IAdd 50 20 Store 42(i) 51 Branch 43 45: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.NonWritable.frag.out000066400000000000000000000053621506534232700234600ustar00rootroot00000000000000spv.1.4.NonWritable.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 31 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 8 "color" Name 31 "index" Name 34 "indexable" Decorate 8(color) Location 0 Decorate 31(index) Flat Decorate 31(index) Location 0 Decorate 34(indexable) NonWritable 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Output 6(float) 8(color): 7(ptr) Variable Output 9: TypeInt 32 0 10: 9(int) Constant 16 11: TypeArray 6(float) 10 12: 6(float) Constant 1065353216 13: 6(float) Constant 1073741824 14: 6(float) Constant 1077936128 15: 6(float) Constant 1082130432 16: 6(float) Constant 1084227584 17: 6(float) Constant 1086324736 18: 6(float) Constant 1088421888 19: 6(float) Constant 1090519040 20: 6(float) Constant 1091567616 21: 6(float) Constant 1092616192 22: 6(float) Constant 1093664768 23: 6(float) Constant 1094713344 24: 6(float) Constant 1095761920 25: 6(float) Constant 1096810496 26: 6(float) Constant 1097859072 27: 6(float) Constant 1098907648 28: 11 ConstantComposite 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29: TypeInt 32 1 30: TypePointer Input 29(int) 31(index): 30(ptr) Variable Input 33: TypePointer Function 11 35: TypePointer Function 6(float) 4(main): 2 Function None 3 5: Label 34(indexable): 33(ptr) Variable Function 28 32: 29(int) Load 31(index) 36: 35(ptr) AccessChain 34(indexable) 32 37: 6(float) Load 36 Store 8(color) 37 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.OpCopyLogical.comp.out000066400000000000000000000174001506534232700237530ustar00rootroot00000000000000spv.1.4.OpCopyLogical.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 19 27 35 51 60 ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 Name 4 "main" Name 12 "MyStruct" MemberName 12(MyStruct) 0 "foo" MemberName 12(MyStruct) 1 "sb" Name 14 "t" Name 16 "MyStruct" MemberName 16(MyStruct) 0 "foo" MemberName 16(MyStruct) 1 "sb" Name 17 "SSBO0" MemberName 17(SSBO0) 0 "a" Name 19 "inBuf" Name 25 "SSBO1" MemberName 25(SSBO1) 0 "b" Name 27 "outBuf" Name 32 "MyStruct" MemberName 32(MyStruct) 0 "foo" MemberName 32(MyStruct) 1 "sb" Name 33 "UBO" MemberName 33(UBO) 0 "c" Name 35 "uBuf" Name 44 "Nested" MemberName 44(Nested) 0 "f" MemberName 44(Nested) 1 "S" Name 46 "n" Name 48 "Nested" MemberName 48(Nested) 0 "f" MemberName 48(Nested) 1 "S" Name 49 "UBON" MemberName 49(UBON) 0 "N1" Name 51 "uBufN" Name 57 "Nested" MemberName 57(Nested) 0 "f" MemberName 57(Nested) 1 "S" Name 58 "SSBO1N" MemberName 58(SSBO1N) 0 "N2" Name 60 "outBufN" Decorate 15 ArrayStride 8 MemberDecorate 16(MyStruct) 0 Offset 0 MemberDecorate 16(MyStruct) 1 Offset 16 Decorate 17(SSBO0) Block MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 19(inBuf) Binding 0 Decorate 19(inBuf) DescriptorSet 0 Decorate 25(SSBO1) Block MemberDecorate 25(SSBO1) 0 Offset 0 Decorate 27(outBuf) Binding 1 Decorate 27(outBuf) DescriptorSet 0 Decorate 31 ArrayStride 16 MemberDecorate 32(MyStruct) 0 Offset 0 MemberDecorate 32(MyStruct) 1 Offset 32 Decorate 33(UBO) Block MemberDecorate 33(UBO) 0 Offset 0 Decorate 35(uBuf) Binding 2 Decorate 35(uBuf) DescriptorSet 0 Decorate 47 ArrayStride 48 MemberDecorate 48(Nested) 0 Offset 0 MemberDecorate 48(Nested) 1 Offset 16 Decorate 49(UBON) Block MemberDecorate 49(UBON) 0 Offset 0 Decorate 51(uBufN) Binding 2 Decorate 51(uBufN) DescriptorSet 0 Decorate 56 ArrayStride 24 MemberDecorate 57(Nested) 0 Offset 0 MemberDecorate 57(Nested) 1 Offset 8 Decorate 58(SSBO1N) Block MemberDecorate 58(SSBO1N) 0 Offset 0 Decorate 60(outBufN) Binding 1 Decorate 60(outBufN) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeInt 32 0 9: 8(int) Constant 2 10: TypeArray 7(fvec2) 9 11: TypeInt 32 1 12(MyStruct): TypeStruct 10 11(int) 13: TypePointer Function 12(MyStruct) 15: TypeArray 7(fvec2) 9 16(MyStruct): TypeStruct 15 11(int) 17(SSBO0): TypeStruct 16(MyStruct) 18: TypePointer StorageBuffer 17(SSBO0) 19(inBuf): 18(ptr) Variable StorageBuffer 20: 11(int) Constant 0 21: TypePointer StorageBuffer 16(MyStruct) 25(SSBO1): TypeStruct 16(MyStruct) 26: TypePointer StorageBuffer 25(SSBO1) 27(outBuf): 26(ptr) Variable StorageBuffer 31: TypeArray 7(fvec2) 9 32(MyStruct): TypeStruct 31 11(int) 33(UBO): TypeStruct 32(MyStruct) 34: TypePointer Uniform 33(UBO) 35(uBuf): 34(ptr) Variable Uniform 36: TypePointer Uniform 32(MyStruct) 43: TypeArray 12(MyStruct) 9 44(Nested): TypeStruct 6(float) 43 45: TypePointer Function 44(Nested) 47: TypeArray 32(MyStruct) 9 48(Nested): TypeStruct 6(float) 47 49(UBON): TypeStruct 48(Nested) 50: TypePointer Uniform 49(UBON) 51(uBufN): 50(ptr) Variable Uniform 52: TypePointer Uniform 48(Nested) 56: TypeArray 16(MyStruct) 9 57(Nested): TypeStruct 6(float) 56 58(SSBO1N): TypeStruct 57(Nested) 59: TypePointer StorageBuffer 58(SSBO1N) 60(outBufN): 59(ptr) Variable StorageBuffer 62: TypePointer StorageBuffer 57(Nested) 4(main): 2 Function None 3 5: Label 14(t): 13(ptr) Variable Function 46(n): 45(ptr) Variable Function 22: 21(ptr) AccessChain 19(inBuf) 20 23:16(MyStruct) Load 22 24:12(MyStruct) CopyLogical 23 Store 14(t) 24 28:12(MyStruct) Load 14(t) 29: 21(ptr) AccessChain 27(outBuf) 20 30:16(MyStruct) CopyLogical 28 Store 29 30 37: 36(ptr) AccessChain 35(uBuf) 20 38:32(MyStruct) Load 37 39:12(MyStruct) CopyLogical 38 Store 14(t) 39 40:12(MyStruct) Load 14(t) 41: 21(ptr) AccessChain 27(outBuf) 20 42:16(MyStruct) CopyLogical 40 Store 41 42 53: 52(ptr) AccessChain 51(uBufN) 20 54: 48(Nested) Load 53 55: 44(Nested) CopyLogical 54 Store 46(n) 55 61: 44(Nested) Load 46(n) 63: 62(ptr) AccessChain 60(outBufN) 20 64: 57(Nested) CopyLogical 61 Store 63 64 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out000066400000000000000000000124021506534232700253540ustar00rootroot00000000000000spv.1.4.OpCopyLogical.funcall.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 59 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 25 36 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "S" MemberName 9(S) 0 "m" Name 12 "fooConst(struct-S-mf441;" Name 11 "s" Name 17 "foo(struct-S-mf441;" Name 16 "s" Name 20 "fooOut(struct-S-mf441;" Name 19 "s" Name 22 "S" MemberName 22(S) 0 "m" Name 23 "blockName" MemberName 23(blockName) 0 "s1" Name 25 "" Name 31 "arg" Name 36 "s2" Name 39 "param" Name 44 "param" Name 47 "param" Name 55 "param" MemberDecorate 22(S) 0 ColMajor MemberDecorate 22(S) 0 MatrixStride 16 MemberDecorate 22(S) 0 Offset 0 Decorate 23(blockName) Block MemberDecorate 23(blockName) 0 Offset 0 Decorate 25 Binding 0 Decorate 25 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeMatrix 7(fvec4) 4 9(S): TypeStruct 8 10: TypeFunction 2 9(S) 14: TypePointer Function 9(S) 15: TypeFunction 2 14(ptr) 22(S): TypeStruct 8 23(blockName): TypeStruct 22(S) 24: TypePointer StorageBuffer 23(blockName) 25: 24(ptr) Variable StorageBuffer 26: TypeInt 32 1 27: 26(int) Constant 0 28: TypePointer StorageBuffer 22(S) 35: TypePointer Private 9(S) 36(s2): 35(ptr) Variable Private 4(main): 2 Function None 3 5: Label 31(arg): 14(ptr) Variable Function 39(param): 14(ptr) Variable Function 44(param): 14(ptr) Variable Function 47(param): 14(ptr) Variable Function 55(param): 14(ptr) Variable Function 29: 28(ptr) AccessChain 25 27 30: 22(S) Load 29 32: 9(S) CopyLogical 30 Store 31(arg) 32 33: 9(S) Load 31(arg) 34: 2 FunctionCall 12(fooConst(struct-S-mf441;) 33 37: 9(S) Load 36(s2) 38: 2 FunctionCall 12(fooConst(struct-S-mf441;) 37 40: 28(ptr) AccessChain 25 27 41: 22(S) Load 40 42: 9(S) CopyLogical 41 Store 39(param) 42 43: 2 FunctionCall 17(foo(struct-S-mf441;) 39(param) 45: 9(S) Load 36(s2) Store 44(param) 45 46: 2 FunctionCall 17(foo(struct-S-mf441;) 44(param) 48: 28(ptr) AccessChain 25 27 49: 22(S) Load 48 50: 9(S) CopyLogical 49 Store 47(param) 50 51: 2 FunctionCall 20(fooOut(struct-S-mf441;) 47(param) 52: 9(S) Load 47(param) 53: 28(ptr) AccessChain 25 27 54: 22(S) CopyLogical 52 Store 53 54 56: 9(S) Load 36(s2) Store 55(param) 56 57: 2 FunctionCall 20(fooOut(struct-S-mf441;) 55(param) 58: 9(S) Load 55(param) Store 36(s2) 58 Return FunctionEnd 12(fooConst(struct-S-mf441;): 2 Function None 10 11(s): 9(S) FunctionParameter 13: Label Return FunctionEnd 17(foo(struct-S-mf441;): 2 Function None 15 16(s): 14(ptr) FunctionParameter 18: Label Return FunctionEnd 20(fooOut(struct-S-mf441;): 2 Function None 15 19(s): 14(ptr) FunctionParameter 21: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out000066400000000000000000000272761506534232700246030ustar00rootroot00000000000000spv.1.4.OpCopyLogicalBool.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 135 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 19 37 53 79 109 ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 Name 4 "main" Name 12 "MyStruct" MemberName 12(MyStruct) 0 "foo" MemberName 12(MyStruct) 1 "sb" Name 14 "t" Name 16 "MyStruct" MemberName 16(MyStruct) 0 "foo" MemberName 16(MyStruct) 1 "sb" Name 17 "SSBO0" MemberName 17(SSBO0) 0 "a" Name 19 "inBuf" Name 35 "SSBO1" MemberName 35(SSBO1) 0 "b" Name 37 "outBuf" Name 50 "MyStruct" MemberName 50(MyStruct) 0 "foo" MemberName 50(MyStruct) 1 "sb" Name 51 "UBO" MemberName 51(UBO) 0 "c" Name 53 "uBuf" Name 72 "Nested" MemberName 72(Nested) 0 "b" MemberName 72(Nested) 1 "S" Name 74 "n" Name 76 "Nested" MemberName 76(Nested) 0 "b" MemberName 76(Nested) 1 "S" Name 77 "UBON" MemberName 77(UBON) 0 "N1" Name 79 "uBufN" Name 106 "Nested" MemberName 106(Nested) 0 "b" MemberName 106(Nested) 1 "S" Name 107 "SSBO1N" MemberName 107(SSBO1N) 0 "N2" Name 109 "outBufN" Decorate 15 ArrayStride 8 MemberDecorate 16(MyStruct) 0 Offset 0 MemberDecorate 16(MyStruct) 1 Offset 16 Decorate 17(SSBO0) Block MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 19(inBuf) Binding 0 Decorate 19(inBuf) DescriptorSet 0 Decorate 35(SSBO1) Block MemberDecorate 35(SSBO1) 0 Offset 0 Decorate 37(outBuf) Binding 1 Decorate 37(outBuf) DescriptorSet 0 Decorate 49 ArrayStride 16 MemberDecorate 50(MyStruct) 0 Offset 0 MemberDecorate 50(MyStruct) 1 Offset 32 Decorate 51(UBO) Block MemberDecorate 51(UBO) 0 Offset 0 Decorate 53(uBuf) Binding 2 Decorate 53(uBuf) DescriptorSet 0 Decorate 75 ArrayStride 48 MemberDecorate 76(Nested) 0 Offset 0 MemberDecorate 76(Nested) 1 Offset 16 Decorate 77(UBON) Block MemberDecorate 77(UBON) 0 Offset 0 Decorate 79(uBufN) Binding 2 Decorate 79(uBufN) DescriptorSet 0 Decorate 105 ArrayStride 24 MemberDecorate 106(Nested) 0 Offset 0 MemberDecorate 106(Nested) 1 Offset 8 Decorate 107(SSBO1N) Block MemberDecorate 107(SSBO1N) 0 Offset 0 Decorate 109(outBufN) Binding 1 Decorate 109(outBufN) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeInt 32 0 9: 8(int) Constant 2 10: TypeArray 7(fvec2) 9 11: TypeBool 12(MyStruct): TypeStruct 10 11(bool) 13: TypePointer Function 12(MyStruct) 15: TypeArray 7(fvec2) 9 16(MyStruct): TypeStruct 15 8(int) 17(SSBO0): TypeStruct 16(MyStruct) 18: TypePointer StorageBuffer 17(SSBO0) 19(inBuf): 18(ptr) Variable StorageBuffer 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypePointer StorageBuffer 16(MyStruct) 26: TypePointer Function 10 30: 20(int) Constant 1 31: 8(int) Constant 0 33: TypePointer Function 11(bool) 35(SSBO1): TypeStruct 16(MyStruct) 36: TypePointer StorageBuffer 35(SSBO1) 37(outBuf): 36(ptr) Variable StorageBuffer 41: TypePointer StorageBuffer 15 45: 8(int) Constant 1 47: TypePointer StorageBuffer 8(int) 49: TypeArray 7(fvec2) 9 50(MyStruct): TypeStruct 49 8(int) 51(UBO): TypeStruct 50(MyStruct) 52: TypePointer Uniform 51(UBO) 53(uBuf): 52(ptr) Variable Uniform 54: TypePointer Uniform 50(MyStruct) 71: TypeArray 12(MyStruct) 9 72(Nested): TypeStruct 11(bool) 71 73: TypePointer Function 72(Nested) 75: TypeArray 50(MyStruct) 9 76(Nested): TypeStruct 8(int) 75 77(UBON): TypeStruct 76(Nested) 78: TypePointer Uniform 77(UBON) 79(uBufN): 78(ptr) Variable Uniform 80: TypePointer Uniform 76(Nested) 87: TypePointer Function 71 105: TypeArray 16(MyStruct) 9 106(Nested): TypeStruct 8(int) 105 107(SSBO1N): TypeStruct 106(Nested) 108: TypePointer StorageBuffer 107(SSBO1N) 109(outBufN): 108(ptr) Variable StorageBuffer 111: TypePointer StorageBuffer 106(Nested) 117: TypePointer StorageBuffer 105 4(main): 2 Function None 3 5: Label 14(t): 13(ptr) Variable Function 74(n): 73(ptr) Variable Function 23: 22(ptr) AccessChain 19(inBuf) 21 24:16(MyStruct) Load 23 25: 15 CompositeExtract 24 0 27: 26(ptr) AccessChain 14(t) 21 28: 10 CopyLogical 25 Store 27 28 29: 8(int) CompositeExtract 24 1 32: 11(bool) INotEqual 29 31 34: 33(ptr) AccessChain 14(t) 30 Store 34 32 38:12(MyStruct) Load 14(t) 39: 22(ptr) AccessChain 37(outBuf) 21 40: 10 CompositeExtract 38 0 42: 41(ptr) AccessChain 39 21 43: 15 CopyLogical 40 Store 42 43 44: 11(bool) CompositeExtract 38 1 46: 8(int) Select 44 45 31 48: 47(ptr) AccessChain 39 30 Store 48 46 55: 54(ptr) AccessChain 53(uBuf) 21 56:50(MyStruct) Load 55 57: 49 CompositeExtract 56 0 58: 26(ptr) AccessChain 14(t) 21 59: 10 CopyLogical 57 Store 58 59 60: 8(int) CompositeExtract 56 1 61: 11(bool) INotEqual 60 31 62: 33(ptr) AccessChain 14(t) 30 Store 62 61 63:12(MyStruct) Load 14(t) 64: 22(ptr) AccessChain 37(outBuf) 21 65: 10 CompositeExtract 63 0 66: 41(ptr) AccessChain 64 21 67: 15 CopyLogical 65 Store 66 67 68: 11(bool) CompositeExtract 63 1 69: 8(int) Select 68 45 31 70: 47(ptr) AccessChain 64 30 Store 70 69 81: 80(ptr) AccessChain 79(uBufN) 21 82: 76(Nested) Load 81 83: 8(int) CompositeExtract 82 0 84: 11(bool) INotEqual 83 31 85: 33(ptr) AccessChain 74(n) 21 Store 85 84 86: 75 CompositeExtract 82 1 88: 87(ptr) AccessChain 74(n) 30 89:50(MyStruct) CompositeExtract 86 0 90: 13(ptr) AccessChain 88 21 91: 49 CompositeExtract 89 0 92: 26(ptr) AccessChain 90 21 93: 10 CopyLogical 91 Store 92 93 94: 8(int) CompositeExtract 89 1 95: 11(bool) INotEqual 94 31 96: 33(ptr) AccessChain 90 30 Store 96 95 97:50(MyStruct) CompositeExtract 86 1 98: 13(ptr) AccessChain 88 30 99: 49 CompositeExtract 97 0 100: 26(ptr) AccessChain 98 21 101: 10 CopyLogical 99 Store 100 101 102: 8(int) CompositeExtract 97 1 103: 11(bool) INotEqual 102 31 104: 33(ptr) AccessChain 98 30 Store 104 103 110: 72(Nested) Load 74(n) 112: 111(ptr) AccessChain 109(outBufN) 21 113: 11(bool) CompositeExtract 110 0 114: 8(int) Select 113 45 31 115: 47(ptr) AccessChain 112 21 Store 115 114 116: 71 CompositeExtract 110 1 118: 117(ptr) AccessChain 112 30 119:12(MyStruct) CompositeExtract 116 0 120: 22(ptr) AccessChain 118 21 121: 10 CompositeExtract 119 0 122: 41(ptr) AccessChain 120 21 123: 15 CopyLogical 121 Store 122 123 124: 11(bool) CompositeExtract 119 1 125: 8(int) Select 124 45 31 126: 47(ptr) AccessChain 120 30 Store 126 125 127:12(MyStruct) CompositeExtract 116 1 128: 22(ptr) AccessChain 118 30 129: 10 CompositeExtract 127 0 130: 41(ptr) AccessChain 128 21 131: 15 CopyLogical 129 Store 130 131 132: 11(bool) CompositeExtract 127 1 133: 8(int) Select 132 45 31 134: 47(ptr) AccessChain 128 30 Store 134 133 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.OpEntryPoint.frag.out000066400000000000000000000120601506534232700236370ustar00rootroot00000000000000spv.1.4.OpEntryPoint.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 14 17 25 33 41 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "functionv" Name 11 "inv" Name 14 "globalv" Name 17 "outv" Name 23 "ubt" MemberName 23(ubt) 0 "v" Name 25 "uniformv" Name 31 "pushB" MemberName 31(pushB) 0 "a" Name 33 "pushv" Name 39 "bbt" MemberName 39(bbt) 0 "f" Name 41 "bufferv" Decorate 11(inv) Location 0 Decorate 17(outv) Location 0 Decorate 23(ubt) Block MemberDecorate 23(ubt) 0 Offset 0 Decorate 25(uniformv) Binding 0 Decorate 25(uniformv) DescriptorSet 0 Decorate 31(pushB) Block MemberDecorate 31(pushB) 0 Offset 0 Decorate 39(bbt) Block MemberDecorate 39(bbt) 0 Offset 0 Decorate 41(bufferv) Binding 1 Decorate 41(bufferv) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(inv): 10(ptr) Variable Input 13: TypePointer Private 7(fvec4) 14(globalv): 13(ptr) Variable Private 16: TypePointer Output 7(fvec4) 17(outv): 16(ptr) Variable Output 23(ubt): TypeStruct 7(fvec4) 24: TypePointer Uniform 23(ubt) 25(uniformv): 24(ptr) Variable Uniform 26: TypeInt 32 1 27: 26(int) Constant 0 28: TypePointer Uniform 7(fvec4) 31(pushB): TypeStruct 26(int) 32: TypePointer PushConstant 31(pushB) 33(pushv): 32(ptr) Variable PushConstant 34: TypePointer PushConstant 26(int) 39(bbt): TypeStruct 6(float) 40: TypePointer StorageBuffer 39(bbt) 41(bufferv): 40(ptr) Variable StorageBuffer 42: TypePointer StorageBuffer 6(float) 4(main): 2 Function None 3 5: Label 9(functionv): 8(ptr) Variable Function 12: 7(fvec4) Load 11(inv) Store 9(functionv) 12 15: 7(fvec4) Load 11(inv) Store 14(globalv) 15 18: 7(fvec4) Load 9(functionv) 19: 7(fvec4) Load 11(inv) 20: 7(fvec4) FAdd 18 19 21: 7(fvec4) Load 14(globalv) 22: 7(fvec4) FAdd 20 21 29: 28(ptr) AccessChain 25(uniformv) 27 30: 7(fvec4) Load 29 35: 34(ptr) AccessChain 33(pushv) 27 36: 26(int) Load 35 37: 6(float) ConvertSToF 36 38: 7(fvec4) VectorTimesScalar 30 37 43: 42(ptr) AccessChain 41(bufferv) 27 44: 6(float) Load 43 45: 7(fvec4) VectorTimesScalar 38 44 46: 7(fvec4) FAdd 22 45 Store 17(outv) 46 47: 7(fvec4) Load 9(functionv) 48: 7(fvec4) Load 11(inv) 49: 7(fvec4) FAdd 47 48 50: 7(fvec4) Load 14(globalv) 51: 7(fvec4) FAdd 49 50 52: 28(ptr) AccessChain 25(uniformv) 27 53: 7(fvec4) Load 52 54: 34(ptr) AccessChain 33(pushv) 27 55: 26(int) Load 54 56: 6(float) ConvertSToF 55 57: 7(fvec4) VectorTimesScalar 53 56 58: 42(ptr) AccessChain 41(bufferv) 27 59: 6(float) Load 58 60: 7(fvec4) VectorTimesScalar 57 59 61: 7(fvec4) FAdd 51 60 62: 7(fvec4) Load 17(outv) 63: 7(fvec4) FAdd 62 61 Store 17(outv) 63 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out000066400000000000000000000067231506534232700263460ustar00rootroot00000000000000spv.1.4.OpEntryPoint.opaqueParams.vert // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 41 42 43 Source GLSL 450 Name 4 "main" Name 18 "funOpaque(s21;t21;p1;" Name 15 "s2D" Name 16 "t2D" Name 17 "s" Name 40 "size" Name 41 "s2D" Name 42 "t2D" Name 43 "s" Decorate 41(s2D) Binding 0 Decorate 41(s2D) DescriptorSet 0 Decorate 42(t2D) Binding 1 Decorate 42(t2D) DescriptorSet 0 Decorate 43(s) Binding 3 Decorate 43(s) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) 2D sampled format:Unknown 8: TypeSampledImage 7 9: TypePointer UniformConstant 8 10: TypePointer UniformConstant 7 11: TypeSampler 12: TypePointer UniformConstant 11 13: TypeVector 6(float) 2 14: TypeFunction 13(fvec2) 9(ptr) 10(ptr) 12(ptr) 21: TypeInt 32 1 22: 21(int) Constant 0 24: TypeVector 21(int) 2 30: 6(float) Constant 1056964608 31: 13(fvec2) ConstantComposite 30 30 32: TypeVector 6(float) 4 33: 6(float) Constant 0 39: TypePointer Function 13(fvec2) 41(s2D): 9(ptr) Variable UniformConstant 42(t2D): 10(ptr) Variable UniformConstant 43(s): 12(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 40(size): 39(ptr) Variable Function 44: 13(fvec2) FunctionCall 18(funOpaque(s21;t21;p1;) 41(s2D) 42(t2D) 43(s) Store 40(size) 44 Return FunctionEnd 18(funOpaque(s21;t21;p1;): 13(fvec2) Function None 14 15(s2D): 9(ptr) FunctionParameter 16(t2D): 10(ptr) FunctionParameter 17(s): 12(ptr) FunctionParameter 19: Label 20: 8 Load 15(s2D) 23: 7 Image 20 25: 24(ivec2) ImageQuerySizeLod 23 22 26: 13(fvec2) ConvertSToF 25 27: 7 Load 16(t2D) 28: 11 Load 17(s) 29: 8 SampledImage 27 28 34: 32(fvec4) ImageSampleExplicitLod 29 31 Lod 33 35: 13(fvec2) VectorShuffle 34 34 0 1 36: 13(fvec2) FMul 26 35 ReturnValue 36 FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.OpSelect.frag.out000066400000000000000000000156631506534232700227570ustar00rootroot00000000000000spv.1.4.OpSelect.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 98 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 17 20 82 84 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 6 "fun1(" Name 8 "fun2(" Name 12 "f1" Name 14 "f2" Name 17 "outv" Name 20 "cond" Name 30 "iv1" Name 34 "iv2" Name 53 "m1" Name 59 "m2" Name 75 "S1" MemberName 75(S1) 0 "a" MemberName 75(S1) 1 "b" Name 77 "fv" Name 82 "in1" Name 84 "in2" Decorate 17(outv) Location 0 Decorate 20(cond) Flat Decorate 20(cond) Location 4 Decorate 82(in1) Flat Decorate 82(in1) Location 0 Decorate 84(in2) Flat Decorate 84(in2) Location 2 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 11: TypePointer Function 10(float) 13: 10(float) Constant 1065353216 15: 10(float) Constant 1073741824 16: TypePointer Output 10(float) 17(outv): 16(ptr) Variable Output 18: TypeInt 32 1 19: TypePointer Input 18(int) 20(cond): 19(ptr) Variable Input 22: 18(int) Constant 8 23: TypeBool 28: TypeVector 18(int) 4 29: TypePointer Function 28(ivec4) 39: 18(int) Constant 0 44: TypeInt 32 0 45: 44(int) Constant 2 50: TypeVector 10(float) 3 51: TypeMatrix 50(fvec3) 3 52: TypePointer Function 51 54: 10(float) Constant 0 55: 50(fvec3) ConstantComposite 13 54 54 56: 50(fvec3) ConstantComposite 54 13 54 57: 50(fvec3) ConstantComposite 54 54 13 58: 51 ConstantComposite 55 56 57 60: 50(fvec3) ConstantComposite 15 54 54 61: 50(fvec3) ConstantComposite 54 15 54 62: 50(fvec3) ConstantComposite 54 54 15 63: 51 ConstantComposite 60 61 62 65: 18(int) Constant 20 70: 18(int) Constant 2 71: 44(int) Constant 1 75(S1): TypeStruct 10(float) 18(int) 76: TypePointer Function 75(S1) 79: 18(int) Constant 5 81: TypePointer Input 75(S1) 82(in1): 81(ptr) Variable Input 84(in2): 81(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12(f1): 11(ptr) Variable Function 14(f2): 11(ptr) Variable Function 30(iv1): 29(ptr) Variable Function 34(iv2): 29(ptr) Variable Function 53(m1): 52(ptr) Variable Function 59(m2): 52(ptr) Variable Function 77(fv): 76(ptr) Variable Function Store 12(f1) 13 Store 14(f2) 15 21: 18(int) Load 20(cond) 24: 23(bool) SLessThan 21 22 25: 10(float) Load 12(f1) 26: 10(float) Load 14(f2) 27: 10(float) Select 24 25 26 Store 17(outv) 27 31: 10(float) Load 12(f1) 32: 18(int) ConvertFToS 31 33: 28(ivec4) CompositeConstruct 32 32 32 32 Store 30(iv1) 33 35: 10(float) Load 14(f2) 36: 18(int) ConvertFToS 35 37: 28(ivec4) CompositeConstruct 36 36 36 36 Store 34(iv2) 37 38: 18(int) Load 20(cond) 40: 23(bool) SGreaterThan 38 39 41: 28(ivec4) Load 30(iv1) 42: 28(ivec4) Load 34(iv2) 43: 28(ivec4) Select 40 41 42 46: 18(int) CompositeExtract 43 2 47: 10(float) ConvertSToF 46 48: 10(float) Load 17(outv) 49: 10(float) FMul 48 47 Store 17(outv) 49 Store 53(m1) 58 Store 59(m2) 63 64: 18(int) Load 20(cond) 66: 23(bool) SLessThan 64 65 67: 51 Load 53(m1) 68: 51 Load 59(m2) 69: 51 Select 66 67 68 72: 10(float) CompositeExtract 69 2 1 73: 10(float) Load 17(outv) 74: 10(float) FMul 73 72 Store 17(outv) 74 78: 18(int) Load 20(cond) 80: 23(bool) SGreaterThan 78 79 83: 75(S1) Load 82(in1) 85: 75(S1) Load 84(in2) 86: 75(S1) Select 80 83 85 Store 77(fv) 86 87: 11(ptr) AccessChain 77(fv) 39 88: 10(float) Load 87 89: 10(float) Load 17(outv) 90: 10(float) FMul 89 88 Store 17(outv) 90 91: 18(int) Load 20(cond) 92: 23(bool) SGreaterThan 91 39 SelectionMerge 94 None BranchConditional 92 93 96 93: Label 95: 2 FunctionCall 6(fun1() Branch 94 96: Label 97: 2 FunctionCall 8(fun2() Branch 94 94: Label Return FunctionEnd 6(fun1(): 2 Function None 3 7: Label Return FunctionEnd 8(fun2(): 2 Function None 3 9: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.constructComposite.comp.out000066400000000000000000000056551506534232700251670ustar00rootroot00000000000000spv.1.4.constructComposite.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 15 ExecutionMode 4 LocalSize 64 1 1 Source GLSL 460 Name 4 "main" Name 7 "sA" MemberName 7(sA) 0 "x" MemberName 7(sA) 1 "y" Name 8 "sC" MemberName 8(sC) 0 "state" Name 10 "c" Name 11 "sA" MemberName 11(sA) 0 "x" MemberName 11(sA) 1 "y" Name 12 "sB" MemberName 12(sB) 0 "a" Name 13 "ubo" MemberName 13(ubo) 0 "b" Name 15 "" MemberDecorate 11(sA) 0 Offset 0 MemberDecorate 11(sA) 1 Offset 4 MemberDecorate 12(sB) 0 Offset 0 Decorate 13(ubo) Block MemberDecorate 13(ubo) 0 Offset 0 Decorate 15 Binding 0 Decorate 15 DescriptorSet 0 Decorate 26 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7(sA): TypeStruct 6(int) 6(int) 8(sC): TypeStruct 7(sA) 9: TypePointer Private 8(sC) 10(c): 9(ptr) Variable Private 11(sA): TypeStruct 6(int) 6(int) 12(sB): TypeStruct 11(sA) 13(ubo): TypeStruct 12(sB) 14: TypePointer Uniform 13(ubo) 15: 14(ptr) Variable Uniform 16: 6(int) Constant 0 17: TypePointer Uniform 11(sA) 22: TypeInt 32 0 23: TypeVector 22(int) 3 24: 22(int) Constant 64 25: 22(int) Constant 1 26: 23(ivec3) ConstantComposite 24 25 25 4(main): 2 Function None 3 5: Label 18: 17(ptr) AccessChain 15 16 16 19: 11(sA) Load 18 20: 7(sA) CopyLogical 19 21: 8(sC) CompositeConstruct 20 Store 10(c) 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.funcall.array.frag.out000066400000000000000000000066561506534232700240040ustar00rootroot00000000000000spv.1.4.funcall.array.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 27 31 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 16 "f(vf4[9];i1;" Name 14 "a" Name 15 "ix" Name 20 "indexable" Name 27 "color" Name 29 "ub" MemberName 29(ub) 0 "u" Name 31 "" Name 37 "arg" Name 40 "param" Decorate 27(color) Location 0 Decorate 28 ArrayStride 16 Decorate 29(ub) Block MemberDecorate 29(ub) 0 Offset 0 Decorate 31 Binding 0 Decorate 31 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 9 10: TypeArray 7(fvec4) 9 11: TypeInt 32 1 12: TypePointer Function 11(int) 13: TypeFunction 7(fvec4) 10 12(ptr) 19: TypePointer Function 10 21: TypePointer Function 7(fvec4) 26: TypePointer Output 7(fvec4) 27(color): 26(ptr) Variable Output 28: TypeArray 7(fvec4) 9 29(ub): TypeStruct 28 30: TypePointer Uniform 29(ub) 31: 30(ptr) Variable Uniform 32: 11(int) Constant 0 33: TypePointer Uniform 28 36: 11(int) Constant 2 4(main): 2 Function None 3 5: Label 37(arg): 19(ptr) Variable Function 40(param): 12(ptr) Variable Function 34: 33(ptr) AccessChain 31 32 35: 28 Load 34 38: 10 CopyLogical 35 Store 37(arg) 38 39: 10 Load 37(arg) Store 40(param) 36 41: 7(fvec4) FunctionCall 16(f(vf4[9];i1;) 39 40(param) Store 27(color) 41 Return FunctionEnd 16(f(vf4[9];i1;): 7(fvec4) Function None 13 14(a): 10 FunctionParameter 15(ix): 12(ptr) FunctionParameter 17: Label 20(indexable): 19(ptr) Variable Function 18: 11(int) Load 15(ix) Store 20(indexable) 14(a) 22: 21(ptr) AccessChain 20(indexable) 18 23: 7(fvec4) Load 22 ReturnValue 23 FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.image.frag.out000066400000000000000000000177411506534232700223220ustar00rootroot00000000000000spv.1.4.image.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 104 Capability Shader Capability StorageImageMultisample 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 26 30 40 52 64 77 89 100 103 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "v" Name 15 "iv" Name 21 "uv" Name 26 "i2D" Name 30 "ic2D" Name 40 "ii2D" Name 52 "ui2D" Name 64 "i2DMS" Name 77 "ii2DMS" Name 89 "ui2DMS" Name 100 "fragData" Name 103 "value" Decorate 26(i2D) Binding 1 Decorate 26(i2D) DescriptorSet 0 Decorate 30(ic2D) Flat Decorate 30(ic2D) Location 0 Decorate 40(ii2D) Binding 12 Decorate 40(ii2D) DescriptorSet 0 Decorate 52(ui2D) Binding 12 Decorate 52(ui2D) DescriptorSet 0 Decorate 64(i2DMS) Binding 9 Decorate 64(i2DMS) DescriptorSet 0 Decorate 77(ii2DMS) Binding 13 Decorate 77(ii2DMS) DescriptorSet 0 Decorate 89(ui2DMS) Binding 13 Decorate 89(ui2DMS) DescriptorSet 0 Decorate 100(fragData) Location 0 Decorate 103(value) Flat Decorate 103(value) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeInt 32 1 13: TypeVector 12(int) 4 14: TypePointer Function 13(ivec4) 16: 12(int) Constant 0 17: 13(ivec4) ConstantComposite 16 16 16 16 18: TypeInt 32 0 19: TypeVector 18(int) 4 20: TypePointer Function 19(ivec4) 22: 18(int) Constant 0 23: 19(ivec4) ConstantComposite 22 22 22 22 24: TypeImage 6(float) 2D nonsampled format:Rgba32f 25: TypePointer UniformConstant 24 26(i2D): 25(ptr) Variable UniformConstant 28: TypeVector 12(int) 2 29: TypePointer Input 28(ivec2) 30(ic2D): 29(ptr) Variable Input 38: TypeImage 12(int) 2D nonsampled format:R32i 39: TypePointer UniformConstant 38 40(ii2D): 39(ptr) Variable UniformConstant 50: TypeImage 18(int) 2D nonsampled format:R32ui 51: TypePointer UniformConstant 50 52(ui2D): 51(ptr) Variable UniformConstant 62: TypeImage 6(float) 2D multi-sampled nonsampled format:Rgba32f 63: TypePointer UniformConstant 62 64(i2DMS): 63(ptr) Variable UniformConstant 67: 12(int) Constant 1 73: 12(int) Constant 2 75: TypeImage 12(int) 2D multi-sampled nonsampled format:R32i 76: TypePointer UniformConstant 75 77(ii2DMS): 76(ptr) Variable UniformConstant 87: TypeImage 18(int) 2D multi-sampled nonsampled format:R32ui 88: TypePointer UniformConstant 87 89(ui2DMS): 88(ptr) Variable UniformConstant 99: TypePointer Output 7(fvec4) 100(fragData): 99(ptr) Variable Output 102: TypePointer Input 18(int) 103(value): 102(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function 15(iv): 14(ptr) Variable Function 21(uv): 20(ptr) Variable Function Store 9(v) 11 Store 15(iv) 17 Store 21(uv) 23 27: 24 Load 26(i2D) 31: 28(ivec2) Load 30(ic2D) 32: 7(fvec4) ImageRead 27 31 33: 7(fvec4) Load 9(v) 34: 7(fvec4) FAdd 33 32 Store 9(v) 34 35: 24 Load 26(i2D) 36: 28(ivec2) Load 30(ic2D) 37: 7(fvec4) Load 9(v) ImageWrite 35 36 37 41: 38 Load 40(ii2D) 42: 28(ivec2) Load 30(ic2D) 43: 13(ivec4) ImageRead 41 42 SignExtend 44: 7(fvec4) ConvertSToF 43 45: 7(fvec4) Load 9(v) 46: 7(fvec4) FAdd 45 44 Store 9(v) 46 47: 38 Load 40(ii2D) 48: 28(ivec2) Load 30(ic2D) 49: 13(ivec4) Load 15(iv) ImageWrite 47 48 49 SignExtend 53: 50 Load 52(ui2D) 54: 28(ivec2) Load 30(ic2D) 55: 19(ivec4) ImageRead 53 54 ZeroExtend 56: 7(fvec4) ConvertUToF 55 57: 7(fvec4) Load 9(v) 58: 7(fvec4) FAdd 57 56 Store 9(v) 58 59: 50 Load 52(ui2D) 60: 28(ivec2) Load 30(ic2D) 61: 19(ivec4) Load 21(uv) ImageWrite 59 60 61 ZeroExtend 65: 62 Load 64(i2DMS) 66: 28(ivec2) Load 30(ic2D) 68: 7(fvec4) ImageRead 65 66 Sample 67 69: 7(fvec4) Load 9(v) 70: 7(fvec4) FAdd 69 68 Store 9(v) 70 71: 62 Load 64(i2DMS) 72: 28(ivec2) Load 30(ic2D) 74: 7(fvec4) Load 9(v) ImageWrite 71 72 74 Sample 73 78: 75 Load 77(ii2DMS) 79: 28(ivec2) Load 30(ic2D) 80: 13(ivec4) ImageRead 78 79 Sample SignExtend 67 81: 7(fvec4) ConvertSToF 80 82: 7(fvec4) Load 9(v) 83: 7(fvec4) FAdd 82 81 Store 9(v) 83 84: 75 Load 77(ii2DMS) 85: 28(ivec2) Load 30(ic2D) 86: 13(ivec4) Load 15(iv) ImageWrite 84 85 86 Sample SignExtend 73 90: 87 Load 89(ui2DMS) 91: 28(ivec2) Load 30(ic2D) 92: 19(ivec4) ImageRead 90 91 Sample ZeroExtend 67 93: 7(fvec4) ConvertUToF 92 94: 7(fvec4) Load 9(v) 95: 7(fvec4) FAdd 94 93 Store 9(v) 95 96: 87 Load 89(ui2DMS) 97: 28(ivec2) Load 30(ic2D) 98: 19(ivec4) Load 21(uv) ImageWrite 96 97 98 Sample ZeroExtend 73 101: 7(fvec4) Load 9(v) Store 100(fragData) 101 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out000066400000000000000000000115321506534232700272460ustar00rootroot00000000000000spv.1.4.load.bool.array.interface.block.frag Validation failed // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 20 61 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 11 "ssbo" MemberName 11(ssbo) 0 "bo" Name 13 "" Name 18 "ub" MemberName 18(ub) 0 "bi" Name 20 "" Name 61 "color" Decorate 8 ArrayStride 4 Decorate 10 ArrayStride 12 Decorate 11(ssbo) Block MemberDecorate 11(ssbo) 0 Offset 0 Decorate 13 Binding 1 Decorate 13 DescriptorSet 0 Decorate 16 ArrayStride 16 Decorate 17 ArrayStride 48 Decorate 18(ub) Block MemberDecorate 18(ub) 0 Offset 0 Decorate 20 Binding 0 Decorate 20 DescriptorSet 0 Decorate 61(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 3 8: TypeArray 6(int) 7 9: 6(int) Constant 2 10: TypeArray 8 9 11(ssbo): TypeStruct 10 12: TypePointer StorageBuffer 11(ssbo) 13: 12(ptr) Variable StorageBuffer 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypeArray 6(int) 7 17: TypeArray 16 9 18(ub): TypeStruct 17 19: TypePointer Uniform 18(ub) 20: 19(ptr) Variable Uniform 21: TypePointer Uniform 17 24: TypeBool 25: TypeArray 24(bool) 7 26: TypeArray 25 9 28: TypePointer StorageBuffer 10 31: TypePointer StorageBuffer 8 34: 6(int) Constant 1 35: 6(int) Constant 0 37: TypePointer StorageBuffer 6(int) 40: 14(int) Constant 1 44: 14(int) Constant 2 58: TypeFloat 32 59: TypeVector 58(float) 4 60: TypePointer Output 59(fvec4) 61(color): 60(ptr) Variable Output 62: 58(float) Constant 0 63: 59(fvec4) ConstantComposite 62 62 62 62 4(main): 2 Function None 3 5: Label 22: 21(ptr) AccessChain 20 15 23: 17 Load 22 27: 26 CopyLogical 23 29: 28(ptr) AccessChain 13 15 30: 25 CompositeExtract 27 0 32: 31(ptr) AccessChain 29 15 33: 24(bool) CompositeExtract 30 0 36: 6(int) Select 33 34 35 38: 37(ptr) AccessChain 32 15 Store 38 36 39: 24(bool) CompositeExtract 30 1 41: 6(int) Select 39 34 35 42: 37(ptr) AccessChain 32 40 Store 42 41 43: 24(bool) CompositeExtract 30 2 45: 6(int) Select 43 34 35 46: 37(ptr) AccessChain 32 44 Store 46 45 47: 25 CompositeExtract 27 1 48: 31(ptr) AccessChain 29 40 49: 24(bool) CompositeExtract 47 0 50: 6(int) Select 49 34 35 51: 37(ptr) AccessChain 48 15 Store 51 50 52: 24(bool) CompositeExtract 47 1 53: 6(int) Select 52 34 35 54: 37(ptr) AccessChain 48 40 Store 54 53 55: 24(bool) CompositeExtract 47 2 56: 6(int) Select 55 34 35 57: 37(ptr) AccessChain 48 44 Store 57 56 Store 61(color) 63 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.sparseTexture.frag.out000066400000000000000000000412451506534232700241120ustar00rootroot00000000000000spv.1.4.sparseTexture.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 213 Capability Shader Capability StorageImageMultisample Capability SparseResidency 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 29 33 42 46 59 63 84 96 119 133 149 152 159 162 177 181 189 206 208 212 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_sparse_texture2" Name 4 "main" Name 8 "resident" Name 13 "texel" Name 18 "itexel" Name 23 "utexel" Name 29 "s2D" Name 33 "c2" Name 35 "ResType" Name 42 "tempReturn" Name 46 "is2D" Name 49 "tempArg" Name 50 "ResType" Name 59 "tempReturn" Name 63 "us2D" Name 66 "tempArg" Name 67 "ResType" Name 84 "tempReturn" Name 87 "tempArg" Name 96 "tempReturn" Name 99 "tempArg" Name 119 "tempReturn" Name 123 "tempArg" Name 133 "tempReturn" Name 137 "tempArg" Name 149 "i2D" Name 152 "ic2" Name 159 "tempReturn" Name 162 "ii2DMS" Name 166 "tempArg" Name 177 "ui3D" Name 181 "ic3" Name 189 "outColor" Name 206 "c3" Name 208 "c4" Name 212 "offsets" Decorate 29(s2D) Binding 0 Decorate 29(s2D) DescriptorSet 0 Decorate 33(c2) Location 0 Decorate 46(is2D) Binding 1 Decorate 46(is2D) DescriptorSet 0 Decorate 63(us2D) Binding 2 Decorate 63(us2D) DescriptorSet 0 Decorate 149(i2D) Binding 3 Decorate 149(i2D) DescriptorSet 0 Decorate 152(ic2) Flat Decorate 152(ic2) Location 3 Decorate 162(ii2DMS) Binding 4 Decorate 162(ii2DMS) DescriptorSet 0 Decorate 177(ui3D) Binding 5 Decorate 177(ui3D) DescriptorSet 0 Decorate 181(ic3) Flat Decorate 181(ic3) Location 4 Decorate 189(outColor) Location 0 Decorate 206(c3) Location 1 Decorate 208(c4) Location 2 Decorate 212(offsets) Flat Decorate 212(offsets) Location 5 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Function 11(fvec4) 14: 10(float) Constant 0 15: 11(fvec4) ConstantComposite 14 14 14 14 16: TypeVector 6(int) 4 17: TypePointer Function 16(ivec4) 19: 16(ivec4) ConstantComposite 9 9 9 9 20: TypeInt 32 0 21: TypeVector 20(int) 4 22: TypePointer Function 21(ivec4) 24: 20(int) Constant 0 25: 21(ivec4) ConstantComposite 24 24 24 24 26: TypeImage 10(float) 2D sampled format:Unknown 27: TypeSampledImage 26 28: TypePointer UniformConstant 27 29(s2D): 28(ptr) Variable UniformConstant 31: TypeVector 10(float) 2 32: TypePointer Input 31(fvec2) 33(c2): 32(ptr) Variable Input 35(ResType): TypeStruct 6(int) 11(fvec4) 41: TypePointer Private 6(int) 42(tempReturn): 41(ptr) Variable Private 43: TypeImage 6(int) 2D sampled format:Unknown 44: TypeSampledImage 43 45: TypePointer UniformConstant 44 46(is2D): 45(ptr) Variable UniformConstant 50(ResType): TypeStruct 6(int) 16(ivec4) 59(tempReturn): 41(ptr) Variable Private 60: TypeImage 20(int) 2D sampled format:Unknown 61: TypeSampledImage 60 62: TypePointer UniformConstant 61 63(us2D): 62(ptr) Variable UniformConstant 67(ResType): TypeStruct 6(int) 21(ivec4) 78: 10(float) Constant 1073741824 84(tempReturn): 41(ptr) Variable Private 96(tempReturn): 41(ptr) Variable Private 110: TypeVector 6(int) 2 112: 6(int) Constant 2 119(tempReturn): 41(ptr) Variable Private 133(tempReturn): 41(ptr) Variable Private 147: TypeImage 10(float) 2D nonsampled format:Rgba32f 148: TypePointer UniformConstant 147 149(i2D): 148(ptr) Variable UniformConstant 151: TypePointer Input 110(ivec2) 152(ic2): 151(ptr) Variable Input 159(tempReturn): 41(ptr) Variable Private 160: TypeImage 6(int) 2D multi-sampled nonsampled format:Rgba32i 161: TypePointer UniformConstant 160 162(ii2DMS): 161(ptr) Variable UniformConstant 165: 6(int) Constant 3 175: TypeImage 20(int) 3D nonsampled format:Rgba32ui 176: TypePointer UniformConstant 175 177(ui3D): 176(ptr) Variable UniformConstant 179: TypeVector 6(int) 3 180: TypePointer Input 179(ivec3) 181(ic3): 180(ptr) Variable Input 188: TypePointer Output 11(fvec4) 189(outColor): 188(ptr) Variable Output 191: TypeBool 204: TypeVector 10(float) 3 205: TypePointer Input 204(fvec3) 206(c3): 205(ptr) Variable Input 207: TypePointer Input 11(fvec4) 208(c4): 207(ptr) Variable Input 209: 20(int) Constant 4 210: TypeArray 110(ivec2) 209 211: TypePointer Input 210 212(offsets): 211(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(resident): 7(ptr) Variable Function 13(texel): 12(ptr) Variable Function 18(itexel): 17(ptr) Variable Function 23(utexel): 22(ptr) Variable Function 49(tempArg): 17(ptr) Variable Function 66(tempArg): 22(ptr) Variable Function 87(tempArg): 17(ptr) Variable Function 99(tempArg): 22(ptr) Variable Function 123(tempArg): 17(ptr) Variable Function 137(tempArg): 22(ptr) Variable Function 166(tempArg): 17(ptr) Variable Function 193: 12(ptr) Variable Function Store 8(resident) 9 Store 13(texel) 15 Store 18(itexel) 19 Store 23(utexel) 25 30: 27 Load 29(s2D) 34: 31(fvec2) Load 33(c2) 36: 35(ResType) ImageSparseSampleImplicitLod 30 34 37: 11(fvec4) CompositeExtract 36 1 Store 13(texel) 37 38: 6(int) CompositeExtract 36 0 39: 6(int) Load 8(resident) 40: 6(int) BitwiseOr 39 38 Store 8(resident) 40 47: 44 Load 46(is2D) 48: 31(fvec2) Load 33(c2) 51: 50(ResType) ImageSparseSampleImplicitLod 47 48 SignExtend 52: 16(ivec4) CompositeExtract 51 1 Store 49(tempArg) 52 53: 6(int) CompositeExtract 51 0 Store 42(tempReturn) 53 54: 16(ivec4) Load 49(tempArg) 55: 11(fvec4) ConvertSToF 54 Store 13(texel) 55 56: 6(int) Load 42(tempReturn) 57: 6(int) Load 8(resident) 58: 6(int) BitwiseOr 57 56 Store 8(resident) 58 64: 61 Load 63(us2D) 65: 31(fvec2) Load 33(c2) 68: 67(ResType) ImageSparseSampleImplicitLod 64 65 ZeroExtend 69: 21(ivec4) CompositeExtract 68 1 Store 66(tempArg) 69 70: 6(int) CompositeExtract 68 0 Store 59(tempReturn) 70 71: 21(ivec4) Load 66(tempArg) 72: 11(fvec4) ConvertUToF 71 Store 13(texel) 72 73: 6(int) Load 59(tempReturn) 74: 6(int) Load 8(resident) 75: 6(int) BitwiseOr 74 73 Store 8(resident) 75 76: 27 Load 29(s2D) 77: 31(fvec2) Load 33(c2) 79: 35(ResType) ImageSparseSampleExplicitLod 76 77 Lod 78 80: 11(fvec4) CompositeExtract 79 1 Store 13(texel) 80 81: 6(int) CompositeExtract 79 0 82: 6(int) Load 8(resident) 83: 6(int) BitwiseOr 82 81 Store 8(resident) 83 85: 44 Load 46(is2D) 86: 31(fvec2) Load 33(c2) 88: 50(ResType) ImageSparseSampleExplicitLod 85 86 Lod SignExtend 78 89: 16(ivec4) CompositeExtract 88 1 Store 87(tempArg) 89 90: 6(int) CompositeExtract 88 0 Store 84(tempReturn) 90 91: 16(ivec4) Load 87(tempArg) 92: 11(fvec4) ConvertSToF 91 Store 13(texel) 92 93: 6(int) Load 84(tempReturn) 94: 6(int) Load 8(resident) 95: 6(int) BitwiseOr 94 93 Store 8(resident) 95 97: 61 Load 63(us2D) 98: 31(fvec2) Load 33(c2) 100: 67(ResType) ImageSparseSampleExplicitLod 97 98 Lod ZeroExtend 78 101: 21(ivec4) CompositeExtract 100 1 Store 99(tempArg) 101 102: 6(int) CompositeExtract 100 0 Store 96(tempReturn) 102 103: 21(ivec4) Load 99(tempArg) 104: 11(fvec4) ConvertUToF 103 Store 13(texel) 104 105: 6(int) Load 96(tempReturn) 106: 6(int) Load 8(resident) 107: 6(int) BitwiseOr 106 105 Store 8(resident) 107 108: 27 Load 29(s2D) 109: 31(fvec2) Load 33(c2) 111: 110(ivec2) ConvertFToS 109 113: 26 Image 108 114: 35(ResType) ImageSparseFetch 113 111 Lod 112 115: 11(fvec4) CompositeExtract 114 1 Store 13(texel) 115 116: 6(int) CompositeExtract 114 0 117: 6(int) Load 8(resident) 118: 6(int) BitwiseOr 117 116 Store 8(resident) 118 120: 44 Load 46(is2D) 121: 31(fvec2) Load 33(c2) 122: 110(ivec2) ConvertFToS 121 124: 43 Image 120 125: 50(ResType) ImageSparseFetch 124 122 Lod SignExtend 112 126: 16(ivec4) CompositeExtract 125 1 Store 123(tempArg) 126 127: 6(int) CompositeExtract 125 0 Store 119(tempReturn) 127 128: 16(ivec4) Load 123(tempArg) 129: 11(fvec4) ConvertSToF 128 Store 13(texel) 129 130: 6(int) Load 119(tempReturn) 131: 6(int) Load 8(resident) 132: 6(int) BitwiseOr 131 130 Store 8(resident) 132 134: 61 Load 63(us2D) 135: 31(fvec2) Load 33(c2) 136: 110(ivec2) ConvertFToS 135 138: 60 Image 134 139: 67(ResType) ImageSparseFetch 138 136 Lod ZeroExtend 112 140: 21(ivec4) CompositeExtract 139 1 Store 137(tempArg) 140 141: 6(int) CompositeExtract 139 0 Store 133(tempReturn) 141 142: 21(ivec4) Load 137(tempArg) 143: 11(fvec4) ConvertUToF 142 Store 13(texel) 143 144: 6(int) Load 133(tempReturn) 145: 6(int) Load 8(resident) 146: 6(int) BitwiseOr 145 144 Store 8(resident) 146 150: 147 Load 149(i2D) 153: 110(ivec2) Load 152(ic2) 154: 35(ResType) ImageSparseRead 150 153 155: 11(fvec4) CompositeExtract 154 1 Store 13(texel) 155 156: 6(int) CompositeExtract 154 0 157: 6(int) Load 8(resident) 158: 6(int) BitwiseOr 157 156 Store 8(resident) 158 163: 160 Load 162(ii2DMS) 164: 110(ivec2) Load 152(ic2) 167: 50(ResType) ImageSparseRead 163 164 Sample SignExtend 165 168: 16(ivec4) CompositeExtract 167 1 Store 166(tempArg) 168 169: 6(int) CompositeExtract 167 0 Store 159(tempReturn) 169 170: 16(ivec4) Load 166(tempArg) 171: 11(fvec4) ConvertSToF 170 Store 13(texel) 171 172: 6(int) Load 159(tempReturn) 173: 6(int) Load 8(resident) 174: 6(int) BitwiseOr 173 172 Store 8(resident) 174 178: 175 Load 177(ui3D) 182: 179(ivec3) Load 181(ic3) 183: 67(ResType) ImageSparseRead 178 182 ZeroExtend 184: 21(ivec4) CompositeExtract 183 1 Store 23(utexel) 184 185: 6(int) CompositeExtract 183 0 186: 6(int) Load 8(resident) 187: 6(int) BitwiseOr 186 185 Store 8(resident) 187 190: 6(int) Load 8(resident) 192: 191(bool) ImageSparseTexelsResident 190 SelectionMerge 195 None BranchConditional 192 194 197 194: Label 196: 11(fvec4) Load 13(texel) Store 193 196 Branch 195 197: Label 198: 16(ivec4) Load 18(itexel) 199: 11(fvec4) ConvertSToF 198 200: 21(ivec4) Load 23(utexel) 201: 11(fvec4) ConvertUToF 200 202: 11(fvec4) FAdd 199 201 Store 193 202 Branch 195 195: Label 203: 11(fvec4) Load 193 Store 189(outColor) 203 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.4.texture.frag.out000066400000000000000000000136731506534232700227400ustar00rootroot00000000000000spv.1.4.texture.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 79 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 15 19 28 40 51 54 76 78 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "color" Name 15 "texSampler2D" Name 19 "coords2D" Name 28 "itexSampler2D" Name 40 "utexSampler2D" Name 51 "iCoords2D" Name 54 "iLod" Name 76 "t" Name 78 "color" Decorate 15(texSampler2D) Binding 0 Decorate 15(texSampler2D) DescriptorSet 0 Decorate 19(coords2D) Location 1 Decorate 28(itexSampler2D) Binding 1 Decorate 28(itexSampler2D) DescriptorSet 0 Decorate 40(utexSampler2D) Binding 2 Decorate 40(utexSampler2D) DescriptorSet 0 Decorate 51(iCoords2D) Flat Decorate 51(iCoords2D) Location 2 Decorate 54(iLod) Flat Decorate 54(iLod) Location 3 Decorate 76(t) Location 0 Decorate 78(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeImage 6(float) 2D sampled format:Unknown 13: TypeSampledImage 12 14: TypePointer UniformConstant 13 15(texSampler2D): 14(ptr) Variable UniformConstant 17: TypeVector 6(float) 2 18: TypePointer Input 17(fvec2) 19(coords2D): 18(ptr) Variable Input 24: TypeInt 32 1 25: TypeImage 24(int) 2D sampled format:Unknown 26: TypeSampledImage 25 27: TypePointer UniformConstant 26 28(itexSampler2D): 27(ptr) Variable UniformConstant 31: TypeVector 24(int) 4 36: TypeInt 32 0 37: TypeImage 36(int) 2D sampled format:Unknown 38: TypeSampledImage 37 39: TypePointer UniformConstant 38 40(utexSampler2D): 39(ptr) Variable UniformConstant 43: TypeVector 36(int) 4 49: TypeVector 24(int) 2 50: TypePointer Input 49(ivec2) 51(iCoords2D): 50(ptr) Variable Input 53: TypePointer Input 24(int) 54(iLod): 53(ptr) Variable Input 76(t): 18(ptr) Variable Input 77: TypePointer Output 7(fvec4) 78(color): 77(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function Store 9(color) 11 16: 13 Load 15(texSampler2D) 20: 17(fvec2) Load 19(coords2D) 21: 7(fvec4) ImageSampleImplicitLod 16 20 22: 7(fvec4) Load 9(color) 23: 7(fvec4) FAdd 22 21 Store 9(color) 23 29: 26 Load 28(itexSampler2D) 30: 17(fvec2) Load 19(coords2D) 32: 31(ivec4) ImageSampleImplicitLod 29 30 SignExtend 33: 7(fvec4) ConvertSToF 32 34: 7(fvec4) Load 9(color) 35: 7(fvec4) FAdd 34 33 Store 9(color) 35 41: 38 Load 40(utexSampler2D) 42: 17(fvec2) Load 19(coords2D) 44: 43(ivec4) ImageSampleImplicitLod 41 42 ZeroExtend 45: 7(fvec4) ConvertUToF 44 46: 7(fvec4) Load 9(color) 47: 7(fvec4) FAdd 46 45 Store 9(color) 47 48: 13 Load 15(texSampler2D) 52: 49(ivec2) Load 51(iCoords2D) 55: 24(int) Load 54(iLod) 56: 12 Image 48 57: 7(fvec4) ImageFetch 56 52 Lod 55 58: 7(fvec4) Load 9(color) 59: 7(fvec4) FAdd 58 57 Store 9(color) 59 60: 26 Load 28(itexSampler2D) 61: 49(ivec2) Load 51(iCoords2D) 62: 24(int) Load 54(iLod) 63: 25 Image 60 64: 31(ivec4) ImageFetch 63 61 Lod SignExtend 62 65: 7(fvec4) ConvertSToF 64 66: 7(fvec4) Load 9(color) 67: 7(fvec4) FAdd 66 65 Store 9(color) 67 68: 38 Load 40(utexSampler2D) 69: 49(ivec2) Load 51(iCoords2D) 70: 24(int) Load 54(iLod) 71: 37 Image 68 72: 43(ivec4) ImageFetch 71 69 Lod ZeroExtend 70 73: 7(fvec4) ConvertUToF 72 74: 7(fvec4) Load 9(color) 75: 7(fvec4) FAdd 74 73 Store 9(color) 75 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.6.conditionalDiscard.frag.out000066400000000000000000000056761506534232700250430ustar00rootroot00000000000000spv.1.6.conditionalDiscard.frag // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader Capability DemoteToHelperInvocationEXT 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 17 33 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 9 "v" Name 13 "tex" Name 17 "coord" Name 33 "gl_FragColor" Decorate 13(tex) Binding 0 Decorate 13(tex) DescriptorSet 0 Decorate 17(coord) Location 0 Decorate 33(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 32: TypePointer Output 7(fvec4) 33(gl_FragColor): 32(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 DemoteToHelperInvocationEXT Branch 31 31: Label 34: 7(fvec4) Load 9(v) Store 33(gl_FragColor) 34 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.6.helperInvocation.frag.out000066400000000000000000000036371506534232700245520ustar00rootroot00000000000000spv.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 glslang-16.0.0/Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out000066400000000000000000000045541506534232700263470ustar00rootroot00000000000000spv.1.6.helperInvocation.memmodel.frag // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader Capability VulkanMemoryModelKHR Capability DemoteToHelperInvocationEXT Extension "SPV_EXT_demote_to_helper_invocation" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint Fragment 4 "main" 9 14 ExecutionMode 4 OriginUpperLeft Source ESSL 310 SourceExtension "GL_EXT_demote_to_helper_invocation" Name 4 "main" Name 7 "B" MemberName 7(B) 0 "o" Name 9 "" Name 14 "gl_HelperInvocation" Decorate 7(B) Block MemberDecorate 7(B) 0 Offset 0 Decorate 9 Binding 0 Decorate 9 DescriptorSet 0 Decorate 14(gl_HelperInvocation) BuiltIn HelperInvocation 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7(B): TypeStruct 6(float) 8: TypePointer StorageBuffer 7(B) 9: 8(ptr) Variable StorageBuffer 10: TypeInt 32 1 11: 10(int) Constant 0 12: TypeBool 13: TypePointer Input 12(bool) 14(gl_HelperInvocation): 13(ptr) Variable Input 16: 6(float) Constant 1065353216 17: 6(float) Constant 0 19: TypePointer StorageBuffer 6(float) 4(main): 2 Function None 3 5: Label DemoteToHelperInvocationEXT 15: 12(bool) Load 14(gl_HelperInvocation) Volatile 18: 6(float) Select 15 16 17 20: 19(ptr) AccessChain 9 11 Store 20 18 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.6.nontemporalimage.frag.out000066400000000000000000000123061506534232700245730ustar00rootroot00000000000000spv.1.6.nontemporalimage.frag // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader Capability VulkanMemoryModelKHR 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint Fragment 4 "main" 22 36 43 49 51 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_nontemporal_keyword" Name 4 "main" Name 11 "function_accepting_nontemporal(I21;" Name 10 "image" Name 14 "function_not_accepting_nontemporal(I21;" Name 13 "image" Name 19 "uv" Name 22 "in_uv" Name 36 "u_nontempimage" Name 43 "u_image" Name 49 "u_nontempnoformatimage" Name 51 "u_noformatimage" Decorate 10(image) NonReadable Decorate 13(image) NonReadable Decorate 22(in_uv) Location 0 Decorate 36(u_nontempimage) Binding 1 Decorate 36(u_nontempimage) DescriptorSet 0 Decorate 43(u_image) Binding 2 Decorate 43(u_image) DescriptorSet 0 Decorate 49(u_nontempnoformatimage) NonReadable Decorate 49(u_nontempnoformatimage) Binding 3 Decorate 49(u_nontempnoformatimage) DescriptorSet 0 Decorate 51(u_noformatimage) NonReadable Decorate 51(u_noformatimage) Binding 4 Decorate 51(u_noformatimage) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) 2D nonsampled format:Unknown 8: TypePointer UniformConstant 7 9: TypeFunction 2 8(ptr) 16: TypeInt 32 1 17: TypeVector 16(int) 2 18: TypePointer Function 17(ivec2) 20: TypeVector 6(float) 2 21: TypePointer Input 20(fvec2) 22(in_uv): 21(ptr) Variable Input 23: TypeInt 32 0 24: 23(int) Constant 0 25: TypePointer Input 6(float) 29: 23(int) Constant 1 34: TypeImage 6(float) 2D nonsampled format:Rgba8 35: TypePointer UniformConstant 34 36(u_nontempimage): 35(ptr) Variable UniformConstant 41: TypeVector 6(float) 4 43(u_image): 35(ptr) Variable UniformConstant 49(u_nontempnoformatimage): 8(ptr) Variable UniformConstant 51(u_noformatimage): 8(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 19(uv): 18(ptr) Variable Function 26: 25(ptr) AccessChain 22(in_uv) 24 27: 6(float) Load 26 28: 16(int) ConvertFToS 27 30: 25(ptr) AccessChain 22(in_uv) 29 31: 6(float) Load 30 32: 16(int) ConvertFToS 31 33: 17(ivec2) CompositeConstruct 28 32 Store 19(uv) 33 37: 34 Load 36(u_nontempimage) 38: 17(ivec2) Load 19(uv) 39: 34 Load 36(u_nontempimage) 40: 17(ivec2) Load 19(uv) 42: 41(fvec4) ImageRead 39 40 Nontemporal ImageWrite 37 38 42 Nontemporal 44: 34 Load 43(u_image) 45: 17(ivec2) Load 19(uv) 46: 34 Load 43(u_image) 47: 17(ivec2) Load 19(uv) 48: 41(fvec4) ImageRead 46 47 ImageWrite 44 45 48 50: 2 FunctionCall 11(function_accepting_nontemporal(I21;) 49(u_nontempnoformatimage) 52: 2 FunctionCall 11(function_accepting_nontemporal(I21;) 51(u_noformatimage) 53: 2 FunctionCall 14(function_not_accepting_nontemporal(I21;) 51(u_noformatimage) Return FunctionEnd 11(function_accepting_nontemporal(I21;): 2 Function None 9 10(image): 8(ptr) FunctionParameter 12: Label Return FunctionEnd 14(function_not_accepting_nontemporal(I21;): 2 Function None 9 13(image): 8(ptr) FunctionParameter 15: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.6.quad.frag.out000066400000000000000000000071211506534232700221630ustar00rootroot00000000000000spv.1.6.quad.frag // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader Capability GroupNonUniform Capability GroupNonUniformVote Capability QuadControlKHR Extension "SPV_KHR_quad_control" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 16 33 ExecutionMode 4 QuadDerivativesKHR ExecutionMode 4 RequireFullQuadsKHR ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_shader_quad_control" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_vote" Name 4 "main" Name 8 "bTemp" Name 16 "iInput" Name 33 "bOut" Decorate 16(iInput) Flat Decorate 16(iInput) Location 0 Decorate 33(bOut) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 9: 6(bool) ConstantFalse 14: TypeInt 32 1 15: TypePointer Input 14(int) 16(iInput): 15(ptr) Variable Input 18: 14(int) Constant 0 20: TypeInt 32 0 21: 20(int) Constant 3 32: TypePointer Output 14(int) 33(bOut): 32(ptr) Variable Output 35: 6(bool) ConstantTrue 37: 14(int) Constant 1 4(main): 2 Function None 3 5: Label 8(bTemp): 7(ptr) Variable Function Store 8(bTemp) 9 10: 6(bool) Load 8(bTemp) 11: 6(bool) LogicalNot 10 SelectionMerge 13 None BranchConditional 11 12 13 12: Label 17: 14(int) Load 16(iInput) 19: 6(bool) SGreaterThan 17 18 22: 6(bool) GroupNonUniformQuadAllKHR 19 Branch 13 13: Label 23: 6(bool) Phi 10 5 22 12 Store 8(bTemp) 23 24: 6(bool) Load 8(bTemp) 25: 6(bool) LogicalNot 24 SelectionMerge 27 None BranchConditional 25 26 27 26: Label 28: 14(int) Load 16(iInput) 29: 6(bool) SGreaterThan 28 18 30: 6(bool) GroupNonUniformQuadAnyKHR 29 Branch 27 27: Label 31: 6(bool) Phi 24 13 30 26 Store 8(bTemp) 31 34: 6(bool) Load 8(bTemp) 36: 6(bool) LogicalEqual 34 35 38: 14(int) Select 36 37 18 Store 33(bOut) 38 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.1.6.samplerBuffer.frag.out000066400000000000000000000037411506534232700240320ustar00rootroot00000000000000spv.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) Binding 0 Decorate 13(sampB) DescriptorSet 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 glslang-16.0.0/Test/baseResults/spv.1.6.separate.frag.out000066400000000000000000000051321506534232700230350ustar00rootroot00000000000000spv.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) Binding 1 Decorate 9(texBuffer) DescriptorSet 0 Decorate 13(s) Binding 0 Decorate 13(s) DescriptorSet 0 Decorate 18(itexBuffer) Binding 2 Decorate 18(itexBuffer) DescriptorSet 0 Decorate 24(utexBuffer) Binding 3 Decorate 24(utexBuffer) DescriptorSet 0 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 glslang-16.0.0/Test/baseResults/spv.1.6.specConstant.comp.out000066400000000000000000000062431506534232700237200ustar00rootroot00000000000000spv.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 Decorate 16(bn) Block MemberDecorate 16(bn) 0 Offset 0 Decorate 18(bi) Binding 0 Decorate 18(bi) DescriptorSet 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 glslang-16.0.0/Test/baseResults/spv.100ops.frag.out000066400000000000000000000115601506534232700217520ustar00rootroot00000000000000spv.100ops.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 49 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 21 26 37 ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 8 "foo(" Name 11 "face1" Name 13 "face2" Name 17 "z" Name 21 "low" Name 26 "high" Name 37 "Color" Decorate 8(foo() RelaxedPrecision Decorate 11(face1) RelaxedPrecision Decorate 13(face2) RelaxedPrecision Decorate 17(z) RelaxedPrecision Decorate 21(low) RelaxedPrecision Decorate 21(low) Location 0 Decorate 22 RelaxedPrecision Decorate 23 RelaxedPrecision Decorate 25 RelaxedPrecision Decorate 26(high) RelaxedPrecision Decorate 26(high) Location 1 Decorate 27 RelaxedPrecision Decorate 32 RelaxedPrecision Decorate 34 RelaxedPrecision Decorate 37(Color) RelaxedPrecision Decorate 37(Color) Location 0 Decorate 38 RelaxedPrecision Decorate 39 RelaxedPrecision Decorate 40 RelaxedPrecision Decorate 41 RelaxedPrecision Decorate 42 RelaxedPrecision Decorate 43 RelaxedPrecision Decorate 44 RelaxedPrecision Decorate 45 RelaxedPrecision Decorate 46 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypePointer Private 6(float) 11(face1): 10(ptr) Variable Private 12: 6(float) Constant 1093664768 13(face2): 10(ptr) Variable Private 14: 6(float) Constant 3221225472 15: TypeInt 32 1 16: TypePointer Function 15(int) 18: 15(int) Constant 3 19: 6(float) Constant 1073741824 20: TypePointer Input 6(float) 21(low): 20(ptr) Variable Input 24: 6(float) Constant 1065353216 26(high): 20(ptr) Variable Input 28: TypeBool 33: 15(int) Constant 1 35: TypeVector 6(float) 4 36: TypePointer Output 35(fvec4) 37(Color): 36(ptr) Variable Output 4(main): 2 Function None 3 5: Label 17(z): 16(ptr) Variable Function Store 11(face1) 12 Store 13(face2) 14 Store 17(z) 18 22: 6(float) Load 21(low) 23: 6(float) FMul 19 22 25: 6(float) FAdd 23 24 27: 6(float) Load 26(high) 29: 28(bool) FOrdLessThan 25 27 SelectionMerge 31 None BranchConditional 29 30 31 30: Label 32: 15(int) Load 17(z) 34: 15(int) IAdd 32 33 Store 17(z) 34 Branch 31 31: Label 38: 6(float) Load 11(face1) 39: 15(int) Load 17(z) 40: 6(float) ConvertSToF 39 41: 35(fvec4) CompositeConstruct 40 40 40 40 42: 35(fvec4) VectorTimesScalar 41 38 43: 6(float) FunctionCall 8(foo() 44: 35(fvec4) CompositeConstruct 43 43 43 43 45: 35(fvec4) FAdd 42 44 Store 37(Color) 45 Return FunctionEnd 8(foo(): 6(float) Function None 7 9: Label 46: 6(float) Load 13(face2) ReturnValue 46 FunctionEnd glslang-16.0.0/Test/baseResults/spv.130.frag.out000066400000000000000000000412051506534232700212320ustar00rootroot00000000000000spv.130.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 205 Capability Shader Capability ClipDistance Capability SampledRect Capability Sampled1D Capability SampledCubeArray Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 17 68 79 99 173 184 185 186 ExecutionMode 4 OriginUpperLeft Source GLSL 140 SourceExtension "GL_ARB_gpu_shader5" SourceExtension "GL_ARB_shader_texture_lod" SourceExtension "GL_ARB_shading_language_420pack" SourceExtension "GL_ARB_texture_cube_map_array" SourceExtension "GL_ARB_texture_gather" SourceExtension "GL_ARB_texture_rectangle" Name 4 "main" Name 6 "bar3(" Name 8 "bar4(" Name 10 "bar5(" Name 12 "bar6(" Name 17 "o" Name 21 "samp2D" Name 37 "samp2DA" Name 47 "samp2DR" Name 55 "samp2DS" Name 68 "io" Name 72 "Sca" Name 79 "i" Name 87 "Isca" Name 99 "uo" Name 103 "Usca" Name 114 "a" Name 118 "Scas" Name 124 "f" Name 133 "c" Name 154 "a1" Name 157 "m43" Name 160 "b" Name 167 "sampC" Name 173 "gl_ClipDistance" Name 183 "b" Name 184 "fflat" Name 185 "fsmooth" Name 186 "fnop" Name 193 "bounds" Name 194 "s2D" Name 195 "s2DR" Name 199 "s2DRS" Name 203 "s1D" Name 204 "s2DS" Decorate 17(o) Location 0 Decorate 21(samp2D) Binding 2 Decorate 21(samp2D) DescriptorSet 0 Decorate 37(samp2DA) Binding 5 Decorate 37(samp2DA) DescriptorSet 0 Decorate 47(samp2DR) Binding 4 Decorate 47(samp2DR) DescriptorSet 0 Decorate 55(samp2DS) Binding 3 Decorate 55(samp2DS) DescriptorSet 0 Decorate 68(io) Location 1 Decorate 72(Sca) Binding 6 Decorate 72(Sca) DescriptorSet 0 Decorate 79(i) Location 0 Decorate 87(Isca) Binding 7 Decorate 87(Isca) DescriptorSet 0 Decorate 99(uo) Location 2 Decorate 103(Usca) Binding 8 Decorate 103(Usca) DescriptorSet 0 Decorate 118(Scas) Binding 9 Decorate 118(Scas) DescriptorSet 0 Decorate 167(sampC) Binding 1 Decorate 167(sampC) DescriptorSet 0 Decorate 173(gl_ClipDistance) BuiltIn ClipDistance Decorate 184(fflat) Flat Decorate 184(fflat) Location 1 Decorate 185(fsmooth) Location 2 Decorate 186(fnop) NoPerspective Decorate 186(fnop) Location 3 Decorate 193(bounds) Binding 0 Decorate 193(bounds) DescriptorSet 0 Decorate 194(s2D) Binding 0 Decorate 194(s2D) DescriptorSet 0 Decorate 195(s2DR) Binding 0 Decorate 195(s2DR) DescriptorSet 0 Decorate 199(s2DRS) Binding 0 Decorate 199(s2DRS) DescriptorSet 0 Decorate 203(s1D) Binding 0 Decorate 203(s1D) DescriptorSet 0 Decorate 204(s2DS) Binding 0 Decorate 204(s2DS) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 14: TypeFloat 32 15: TypeVector 14(float) 4 16: TypePointer Output 15(fvec4) 17(o): 16(ptr) Variable Output 18: TypeImage 14(float) 2D sampled format:Unknown 19: TypeSampledImage 18 20: TypePointer UniformConstant 19 21(samp2D): 20(ptr) Variable UniformConstant 23: TypeVector 14(float) 2 24: 14(float) Constant 1050253722 25: 23(fvec2) ConstantComposite 24 24 26: TypeInt 32 1 27: TypeVector 26(int) 2 28: 26(int) Constant 1 29: 27(ivec2) ConstantComposite 28 28 30: 26(int) Constant 0 34: TypeImage 14(float) 2D array sampled format:Unknown 35: TypeSampledImage 34 36: TypePointer UniformConstant 35 37(samp2DA): 36(ptr) Variable UniformConstant 39: TypeVector 14(float) 3 40: 39(fvec3) ConstantComposite 24 24 24 44: TypeImage 14(float) Rect sampled format:Unknown 45: TypeSampledImage 44 46: TypePointer UniformConstant 45 47(samp2DR): 46(ptr) Variable UniformConstant 52: TypeImage 14(float) 2D depth sampled format:Unknown 53: TypeSampledImage 52 54: TypePointer UniformConstant 53 55(samp2DS): 54(ptr) Variable UniformConstant 57: 14(float) Constant 1067869798 62: 26(int) Constant 2 66: TypeVector 26(int) 3 67: TypePointer Output 66(ivec3) 68(io): 67(ptr) Variable Output 69: TypeImage 14(float) Cube array sampled format:Unknown 70: TypeSampledImage 69 71: TypePointer UniformConstant 70 72(Sca): 71(ptr) Variable UniformConstant 74: 26(int) Constant 3 78: TypePointer Input 15(fvec4) 79(i): 78(ptr) Variable Input 84: TypeImage 26(int) Cube array sampled format:Unknown 85: TypeSampledImage 84 86: TypePointer UniformConstant 85 87(Isca): 86(ptr) Variable UniformConstant 90: 14(float) Constant 1060320051 91: TypeVector 26(int) 4 96: TypeInt 32 0 97: TypeVector 96(int) 4 98: TypePointer Output 97(ivec4) 99(uo): 98(ptr) Variable Output 100: TypeImage 96(int) Cube array sampled format:Unknown 101: TypeSampledImage 100 102: TypePointer UniformConstant 101 103(Usca): 102(ptr) Variable UniformConstant 109: 14(float) Constant 1071225242 113: TypePointer Private 39(fvec3) 114(a): 113(ptr) Variable Private 115: TypeImage 14(float) Cube depth array sampled format:Unknown 116: TypeSampledImage 115 117: TypePointer UniformConstant 116 118(Scas): 117(ptr) Variable UniformConstant 123: TypePointer Function 14(float) 127: 96(int) Constant 1 128: TypePointer Input 14(float) 132: TypePointer Function 91(ivec4) 136: 14(float) Constant 1036831949 137: 39(fvec3) ConstantComposite 136 136 136 138: 14(float) Constant 1045220557 139: 39(fvec3) ConstantComposite 138 138 138 155: TypeMatrix 39(fvec3) 4 156: TypePointer Function 155 161: 14(float) Constant 1073741824 164: TypeImage 14(float) Cube sampled format:Unknown 165: TypeSampledImage 164 166: TypePointer UniformConstant 165 167(sampC): 166(ptr) Variable UniformConstant 170: 96(int) Constant 4 171: TypeArray 14(float) 170 172: TypePointer Input 171 173(gl_ClipDistance): 172(ptr) Variable Input 176: TypePointer Output 14(float) 182: TypePointer Private 14(float) 183(b): 182(ptr) Variable Private 184(fflat): 128(ptr) Variable Input 185(fsmooth): 128(ptr) Variable Input 186(fnop): 128(ptr) Variable Input 187: 96(int) Constant 3 188: TypeArray 26(int) 187 189: 26(int) Constant 10 190: 26(int) Constant 23 191: 26(int) Constant 32 192: 188 ConstantComposite 189 190 191 193(bounds): 20(ptr) Variable UniformConstant 194(s2D): 20(ptr) Variable UniformConstant 195(s2DR): 46(ptr) Variable UniformConstant 196: TypeImage 14(float) Rect depth sampled format:Unknown 197: TypeSampledImage 196 198: TypePointer UniformConstant 197 199(s2DRS): 198(ptr) Variable UniformConstant 200: TypeImage 14(float) 1D sampled format:Unknown 201: TypeSampledImage 200 202: TypePointer UniformConstant 201 203(s1D): 202(ptr) Variable UniformConstant 204(s2DS): 54(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 168: 165 Load 167(sampC) 169: 15(fvec4) ImageGather 168 139 30 Store 17(o) 169 174: 128(ptr) AccessChain 173(gl_ClipDistance) 74 175: 14(float) Load 174 177: 176(ptr) AccessChain 17(o) 127 Store 177 175 178: 2 FunctionCall 6(bar3() 179: 2 FunctionCall 8(bar4() 180: 2 FunctionCall 10(bar5() 181: 2 FunctionCall 12(bar6() Return FunctionEnd 6(bar3(): 2 Function None 3 7: Label 22: 19 Load 21(samp2D) 31: 15(fvec4) ImageGather 22 25 30 ConstOffset 29 32: 15(fvec4) Load 17(o) 33: 15(fvec4) FAdd 32 31 Store 17(o) 33 38: 35 Load 37(samp2DA) 41: 15(fvec4) ImageGather 38 40 30 ConstOffset 29 42: 15(fvec4) Load 17(o) 43: 15(fvec4) FAdd 42 41 Store 17(o) 43 Return FunctionEnd 8(bar4(): 2 Function None 3 9: Label 48: 45 Load 47(samp2DR) 49: 15(fvec4) ImageGather 48 25 30 ConstOffset 29 50: 15(fvec4) Load 17(o) 51: 15(fvec4) FAdd 50 49 Store 17(o) 51 56: 53 Load 55(samp2DS) 58: 15(fvec4) ImageDrefGather 56 25 57 ConstOffset 29 59: 15(fvec4) Load 17(o) 60: 15(fvec4) FAdd 59 58 Store 17(o) 60 61: 19 Load 21(samp2D) 63: 15(fvec4) ImageGather 61 25 62 ConstOffset 29 64: 15(fvec4) Load 17(o) 65: 15(fvec4) FAdd 64 63 Store 17(o) 65 Return FunctionEnd 10(bar5(): 2 Function None 3 11: Label 124(f): 123(ptr) Variable Function 133(c): 132(ptr) Variable Function 73: 70 Load 72(Sca) 75: 69 Image 73 76: 66(ivec3) ImageQuerySizeLod 75 74 Store 68(io) 76 77: 70 Load 72(Sca) 80: 15(fvec4) Load 79(i) 81: 15(fvec4) ImageSampleImplicitLod 77 80 82: 15(fvec4) Load 17(o) 83: 15(fvec4) FAdd 82 81 Store 17(o) 83 88: 85 Load 87(Isca) 89: 15(fvec4) Load 79(i) 92: 91(ivec4) ImageSampleImplicitLod 88 89 Bias 90 93: 66(ivec3) VectorShuffle 92 92 0 1 2 94: 66(ivec3) Load 68(io) 95: 66(ivec3) IAdd 94 93 Store 68(io) 95 104: 101 Load 103(Usca) 105: 15(fvec4) Load 79(i) 106: 97(ivec4) ImageSampleImplicitLod 104 105 Store 99(uo) 106 107: 70 Load 72(Sca) 108: 15(fvec4) Load 79(i) 110: 15(fvec4) ImageSampleExplicitLod 107 108 Lod 109 111: 15(fvec4) Load 17(o) 112: 15(fvec4) FAdd 111 110 Store 17(o) 112 119: 116 Load 118(Scas) 120: 115 Image 119 121: 66(ivec3) ImageQuerySizeLod 120 74 122: 39(fvec3) ConvertSToF 121 Store 114(a) 122 125: 116 Load 118(Scas) 126: 15(fvec4) Load 79(i) 129: 128(ptr) AccessChain 79(i) 127 130: 14(float) Load 129 131: 14(float) ImageSampleDrefImplicitLod 125 126 130 Store 124(f) 131 134: 85 Load 87(Isca) 135: 15(fvec4) Load 79(i) 140: 91(ivec4) ImageSampleExplicitLod 134 135 Grad 137 139 Store 133(c) 140 141: 39(fvec3) Load 114(a) 142: 14(float) Load 124(f) 143: 91(ivec4) Load 133(c) 144: 15(fvec4) ConvertSToF 143 145: 15(fvec4) CompositeConstruct 142 142 142 142 146: 15(fvec4) FAdd 145 144 147: 14(float) CompositeExtract 141 0 148: 14(float) CompositeExtract 141 1 149: 14(float) CompositeExtract 141 2 150: 14(float) CompositeExtract 146 0 151: 15(fvec4) CompositeConstruct 147 148 149 150 152: 15(fvec4) Load 17(o) 153: 15(fvec4) FAdd 152 151 Store 17(o) 153 Return FunctionEnd 12(bar6(): 2 Function None 3 13: Label 154(a1): 123(ptr) Variable Function 157(m43): 156(ptr) Variable Function 160(b): 123(ptr) Variable Function 158: 123(ptr) AccessChain 157(m43) 74 127 159: 14(float) Load 158 Store 154(a1) 159 162: 14(float) Load 154(a1) 163: 14(float) FMul 161 162 Store 160(b) 163 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.140.frag.out000066400000000000000000000214261506534232700212360ustar00rootroot00000000000000spv.140.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 96 Capability Shader Capability ClipDistance Capability SampledRect Capability SampledBuffer Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 14 23 28 38 ExecutionMode 4 OriginUpperLeft Source GLSL 140 SourceExtension "GL_ARB_enhanced_layouts" Name 4 "main" Name 8 "foo(" Name 11 "i1" Name 14 "gl_FrontFacing" Name 19 "i2" Name 23 "o" Name 28 "gl_ClipDistance" Name 38 "k" Name 50 "sampR" Name 58 "sampB" Name 82 "samp2Da" Name 87 "bn" MemberName 87(bn) 0 "matra" MemberName 87(bn) 1 "matca" MemberName 87(bn) 2 "matr" MemberName 87(bn) 3 "matc" MemberName 87(bn) 4 "matrdef" Name 89 "" Name 92 "bi" MemberName 92(bi) 0 "v" Name 95 "bname" Decorate 14(gl_FrontFacing) BuiltIn FrontFacing Decorate 23(o) Location 0 Decorate 28(gl_ClipDistance) BuiltIn ClipDistance Decorate 38(k) Location 0 Decorate 50(sampR) Binding 0 Decorate 50(sampR) DescriptorSet 0 Decorate 58(sampB) Binding 1 Decorate 58(sampB) DescriptorSet 0 Decorate 82(samp2Da) Binding 0 Decorate 82(samp2Da) DescriptorSet 0 Decorate 85 ArrayStride 64 Decorate 86 ArrayStride 64 Decorate 87(bn) Block MemberDecorate 87(bn) 0 RowMajor MemberDecorate 87(bn) 0 MatrixStride 16 MemberDecorate 87(bn) 0 Offset 0 MemberDecorate 87(bn) 1 ColMajor MemberDecorate 87(bn) 1 MatrixStride 16 MemberDecorate 87(bn) 1 Offset 256 MemberDecorate 87(bn) 2 RowMajor MemberDecorate 87(bn) 2 MatrixStride 16 MemberDecorate 87(bn) 2 Offset 512 MemberDecorate 87(bn) 3 ColMajor MemberDecorate 87(bn) 3 MatrixStride 16 MemberDecorate 87(bn) 3 Offset 576 MemberDecorate 87(bn) 4 RowMajor MemberDecorate 87(bn) 4 MatrixStride 16 MemberDecorate 87(bn) 4 Offset 1024 Decorate 89 Binding 0 Decorate 89 DescriptorSet 0 Decorate 91 ArrayStride 16 Decorate 92(bi) Block MemberDecorate 92(bi) 0 Offset 0 Decorate 95(bname) Binding 0 Decorate 95(bname) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 10: TypePointer Private 6(float) 11(i1): 10(ptr) Variable Private 12: TypeBool 13: TypePointer Input 12(bool) 14(gl_FrontFacing): 13(ptr) Variable Input 16: 6(float) Constant 3221225472 17: 6(float) Constant 1073741824 19(i2): 10(ptr) Variable Private 20: 6(float) Constant 1120665600 21: TypeVector 6(float) 4 22: TypePointer Output 21(fvec4) 23(o): 22(ptr) Variable Output 24: TypeInt 32 0 25: 24(int) Constant 5 26: TypeArray 6(float) 25 27: TypePointer Input 26 28(gl_ClipDistance): 27(ptr) Variable Input 29: TypeInt 32 1 30: 29(int) Constant 2 31: TypePointer Input 6(float) 34: 24(int) Constant 1 35: TypePointer Output 6(float) 37: TypePointer Input 21(fvec4) 38(k): 37(ptr) Variable Input 40: TypeVector 29(int) 4 45: 24(int) Constant 2 47: TypeImage 6(float) Rect sampled format:Unknown 48: TypeSampledImage 47 49: TypePointer UniformConstant 48 50(sampR): 49(ptr) Variable UniformConstant 53: TypeVector 29(int) 2 55: TypeImage 29(int) Buffer sampled format:Unknown 56: TypeSampledImage 55 57: TypePointer UniformConstant 56 58(sampB): 57(ptr) Variable UniformConstant 64: TypeVector 6(float) 2 67: 6(float) Constant 1120403456 69: 24(int) Constant 3 78: TypeImage 6(float) 2D sampled format:Unknown 79: TypeSampledImage 78 80: TypeArray 79 69 81: TypePointer UniformConstant 80 82(samp2Da): 81(ptr) Variable UniformConstant 83: TypeMatrix 21(fvec4) 4 84: 24(int) Constant 4 85: TypeArray 83 84 86: TypeArray 83 84 87(bn): TypeStruct 85 86 83 83 83 88: TypePointer Uniform 87(bn) 89: 88(ptr) Variable Uniform 90: TypeVector 6(float) 3 91: TypeArray 90(fvec3) 45 92(bi): TypeStruct 91 93: TypeArray 92(bi) 84 94: TypePointer Uniform 93 95(bname): 94(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 15: 12(bool) Load 14(gl_FrontFacing) 18: 6(float) Select 15 16 17 Store 11(i1) 18 Store 19(i2) 20 32: 31(ptr) AccessChain 28(gl_ClipDistance) 30 33: 6(float) Load 32 36: 35(ptr) AccessChain 23(o) 34 Store 36 33 39: 21(fvec4) Load 38(k) 41: 40(ivec4) ConvertFToS 39 42: 29(int) CompositeExtract 41 0 43: 31(ptr) AccessChain 28(gl_ClipDistance) 42 44: 6(float) Load 43 46: 35(ptr) AccessChain 23(o) 45 Store 46 44 51: 48 Load 50(sampR) 52: 47 Image 51 54: 53(ivec2) ImageQuerySize 52 59: 56 Load 58(sampB) 60: 55 Image 59 61: 29(int) ImageQuerySize 60 62: 53(ivec2) CompositeConstruct 61 61 63: 53(ivec2) IAdd 54 62 65: 64(fvec2) ConvertSToF 63 66: 6(float) CompositeExtract 65 0 68: 6(float) FDiv 66 67 70: 35(ptr) AccessChain 23(o) 69 Store 70 68 71: 6(float) FunctionCall 8(foo() 72: 35(ptr) AccessChain 23(o) 45 Store 72 71 Return FunctionEnd 8(foo(): 6(float) Function None 7 9: Label 73: 6(float) Load 11(i1) 74: 6(float) Load 19(i2) 75: 6(float) FAdd 73 74 ReturnValue 75 FunctionEnd glslang-16.0.0/Test/baseResults/spv.150.geom.out000066400000000000000000000170461506534232700212520ustar00rootroot00000000000000spv.150.geom // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 71 Capability Geometry Capability GeometryPointSize Capability GeometryStreams 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 10 18 29 33 47 49 51 70 ExecutionMode 4 InputTrianglesAdjacency ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 30 Source GLSL 150 Name 4 "main" Name 8 "fromVertex" MemberName 8(fromVertex) 0 "color" Name 10 "" Name 13 "fromVertex" MemberName 13(fromVertex) 0 "color" Name 18 "fromV" Name 27 "gl_PerVertex" MemberName 27(gl_PerVertex) 0 "gl_Position" MemberName 27(gl_PerVertex) 1 "gl_PointSize" MemberName 27(gl_PerVertex) 2 "gl_ClipDistance" Name 29 "" Name 30 "gl_PerVertex" MemberName 30(gl_PerVertex) 0 "gl_Position" MemberName 30(gl_PerVertex) 1 "gl_PointSize" MemberName 30(gl_PerVertex) 2 "gl_ClipDistance" Name 33 "gl_in" Name 47 "gl_PrimitiveID" Name 49 "gl_PrimitiveIDIn" Name 51 "gl_Layer" Name 68 "toFragment" MemberName 68(toFragment) 0 "color" Name 70 "toF" Decorate 8(fromVertex) Block Decorate 10 Stream 3 Decorate 10 Location 1 Decorate 13(fromVertex) Block Decorate 18(fromV) Location 0 Decorate 27(gl_PerVertex) Block MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 29 Stream 0 Decorate 30(gl_PerVertex) Block MemberDecorate 30(gl_PerVertex) 0 BuiltIn Position MemberDecorate 30(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 30(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 47(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 47(gl_PrimitiveID) Stream 0 Decorate 49(gl_PrimitiveIDIn) BuiltIn PrimitiveId Decorate 51(gl_Layer) BuiltIn Layer Decorate 51(gl_Layer) Stream 0 Decorate 68(toFragment) Block Decorate 70(toF) Stream 3 Decorate 70(toF) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(fromVertex): TypeStruct 7(fvec3) 9: TypePointer Output 8(fromVertex) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13(fromVertex): TypeStruct 7(fvec3) 14: TypeInt 32 0 15: 14(int) Constant 6 16: TypeArray 13(fromVertex) 15 17: TypePointer Input 16 18(fromV): 17(ptr) Variable Input 19: TypePointer Input 7(fvec3) 22: TypePointer Output 7(fvec3) 24: TypeVector 6(float) 4 25: 14(int) Constant 1 26: TypeArray 6(float) 25 27(gl_PerVertex): TypeStruct 24(fvec4) 6(float) 26 28: TypePointer Output 27(gl_PerVertex) 29: 28(ptr) Variable Output 30(gl_PerVertex): TypeStruct 24(fvec4) 6(float) 26 31: TypeArray 30(gl_PerVertex) 15 32: TypePointer Input 31 33(gl_in): 32(ptr) Variable Input 34: TypePointer Input 24(fvec4) 37: TypePointer Output 24(fvec4) 39: 11(int) Constant 1 40: 11(int) Constant 3 41: TypePointer Input 6(float) 44: TypePointer Output 6(float) 46: TypePointer Output 11(int) 47(gl_PrimitiveID): 46(ptr) Variable Output 48: TypePointer Input 11(int) 49(gl_PrimitiveIDIn): 48(ptr) Variable Input 51(gl_Layer): 46(ptr) Variable Output 52: 11(int) Constant 2 53: 6(float) Constant 1073741824 68(toFragment): TypeStruct 7(fvec3) 69: TypePointer Output 68(toFragment) 70(toF): 69(ptr) Variable Output 4(main): 2 Function None 3 5: Label 20: 19(ptr) AccessChain 18(fromV) 12 12 21: 7(fvec3) Load 20 23: 22(ptr) AccessChain 10 12 Store 23 21 35: 34(ptr) AccessChain 33(gl_in) 12 12 36: 24(fvec4) Load 35 38: 37(ptr) AccessChain 29 12 Store 38 36 42: 41(ptr) AccessChain 33(gl_in) 40 39 43: 6(float) Load 42 45: 44(ptr) AccessChain 29 39 Store 45 43 50: 11(int) Load 49(gl_PrimitiveIDIn) Store 47(gl_PrimitiveID) 50 Store 51(gl_Layer) 52 EmitVertex 54: 19(ptr) AccessChain 18(fromV) 12 12 55: 7(fvec3) Load 54 56: 7(fvec3) VectorTimesScalar 55 53 57: 22(ptr) AccessChain 10 12 Store 57 56 58: 34(ptr) AccessChain 33(gl_in) 12 12 59: 24(fvec4) Load 58 60: 24(fvec4) VectorTimesScalar 59 53 61: 37(ptr) AccessChain 29 12 Store 61 60 62: 41(ptr) AccessChain 33(gl_in) 40 39 63: 6(float) Load 62 64: 6(float) FMul 53 63 65: 44(ptr) AccessChain 29 39 Store 65 64 66: 11(int) Load 49(gl_PrimitiveIDIn) 67: 11(int) IAdd 66 39 Store 47(gl_PrimitiveID) 67 Store 51(gl_Layer) 40 EmitVertex EndPrimitive Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.150.vert.out000066400000000000000000000125571506534232700213050ustar00rootroot00000000000000spv.150.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 63 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 13 17 23 38 62 Source GLSL 150 Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" Name 13 "" Name 17 "iv4" Name 23 "ps" Name 34 "s1" MemberName 34(s1) 0 "a" MemberName 34(s1) 1 "a2" MemberName 34(s1) 2 "b" Name 36 "s2" MemberName 36(s2) 0 "c" MemberName 36(s2) 1 "d" Name 38 "s2out" Name 40 "i" Name 47 "s2D" Name 62 "ui" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 0 Invariant MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 17(iv4) Location 0 Decorate 23(ps) Location 1 Decorate 38(s2out) Location 0 Decorate 47(s2D) Binding 0 Decorate 47(s2D) DescriptorSet 0 Decorate 62(ui) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 4 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Input 7(fvec4) 17(iv4): 16(ptr) Variable Input 19: TypePointer Output 7(fvec4) 21: 14(int) Constant 1 22: TypePointer Input 6(float) 23(ps): 22(ptr) Variable Input 25: TypePointer Output 6(float) 27: 14(int) Constant 2 28: 8(int) Constant 0 32: 8(int) Constant 3 33: TypeArray 7(fvec4) 32 34(s1): TypeStruct 14(int) 14(int) 33 35: TypeArray 34(s1) 9 36(s2): TypeStruct 14(int) 35 37: TypePointer Output 36(s2) 38(s2out): 37(ptr) Variable Output 39: TypePointer Function 14(int) 44: TypeImage 6(float) 2D sampled format:Unknown 45: TypeSampledImage 44 46: TypePointer UniformConstant 45 47(s2D): 46(ptr) Variable UniformConstant 49: TypeVector 6(float) 2 50: 6(float) Constant 1056964608 51: 49(fvec2) ConstantComposite 50 50 52: 6(float) Constant 0 55: TypeVector 6(float) 3 56: 55(fvec3) ConstantComposite 50 50 50 59: 6(float) Constant 1078774989 61: TypePointer Input 14(int) 62(ui): 61(ptr) Variable Input 4(main): 2 Function None 3 5: Label 40(i): 39(ptr) Variable Function 18: 7(fvec4) Load 17(iv4) 20: 19(ptr) AccessChain 13 15 Store 20 18 24: 6(float) Load 23(ps) 26: 25(ptr) AccessChain 13 21 Store 26 24 29: 22(ptr) AccessChain 17(iv4) 28 30: 6(float) Load 29 31: 25(ptr) AccessChain 13 27 27 Store 31 30 41: 14(int) Load 40(i) 42: 6(float) Load 23(ps) 43: 25(ptr) AccessChain 38(s2out) 21 41 27 27 32 Store 43 42 48: 45 Load 47(s2D) 53: 7(fvec4) ImageSampleExplicitLod 48 51 Lod 52 54: 45 Load 47(s2D) 57: 7(fvec4) ImageSampleProjExplicitLod 54 56 Lod 52 58: 45 Load 47(s2D) 60: 7(fvec4) ImageSampleExplicitLod 58 51 Lod 59 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.16bitstorage-int.frag.out000066400000000000000000000434071506534232700240370ustar00rootroot00000000000000spv.16bitstorage-int.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 180 Capability Shader Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_16bit_storage" Name 4 "main" Name 12 "S" MemberName 12(S) 0 "x" MemberName 12(S) 1 "y" MemberName 12(S) 2 "z" Name 17 "B2" MemberName 17(B2) 0 "o" MemberName 17(B2) 1 "p" MemberName 17(B2) 2 "q" MemberName 17(B2) 3 "r" MemberName 17(B2) 4 "u" MemberName 17(B2) 5 "v" MemberName 17(B2) 6 "x" MemberName 17(B2) 7 "w" Name 19 "b2" Name 23 "S" MemberName 23(S) 0 "x" MemberName 23(S) 1 "y" MemberName 23(S) 2 "z" Name 25 "B1" MemberName 25(B1) 0 "a" MemberName 25(B1) 1 "b" MemberName 25(B1) 2 "c" MemberName 25(B1) 3 "d" MemberName 25(B1) 4 "g" MemberName 25(B1) 5 "h" MemberName 25(B1) 6 "j" Name 27 "b1" Name 45 "S" MemberName 45(S) 0 "x" MemberName 45(S) 1 "y" MemberName 45(S) 2 "z" Name 49 "B5" MemberName 49(B5) 0 "o" MemberName 49(B5) 1 "p" MemberName 49(B5) 2 "q" MemberName 49(B5) 3 "r" MemberName 49(B5) 4 "u" MemberName 49(B5) 5 "v" MemberName 49(B5) 6 "x" MemberName 49(B5) 7 "w" Name 51 "b5" Name 69 "x0" Name 75 "x1" Name 88 "S2" MemberName 88(S2) 0 "x" MemberName 88(S2) 1 "y" MemberName 88(S2) 2 "z" Name 89 "S3" MemberName 89(S3) 0 "x" Name 90 "B4" MemberName 90(B4) 0 "x" MemberName 90(B4) 1 "y" Name 92 "b4" Name 93 "S2" MemberName 93(S2) 0 "x" MemberName 93(S2) 1 "y" MemberName 93(S2) 2 "z" Name 94 "B3" MemberName 94(B3) 0 "x" Name 96 "b3" Name 113 "v3" Name 135 "u3" Decorate 11 ArrayStride 2 MemberDecorate 12(S) 0 Offset 0 MemberDecorate 12(S) 1 Offset 4 MemberDecorate 12(S) 2 Offset 8 Decorate 13 ArrayStride 16 Decorate 15 ArrayStride 4 Decorate 16 ArrayStride 2 Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 4 MemberDecorate 17(B2) 2 Offset 8 MemberDecorate 17(B2) 3 Offset 14 MemberDecorate 17(B2) 4 Offset 24 MemberDecorate 17(B2) 5 Offset 40 MemberDecorate 17(B2) 6 Offset 72 MemberDecorate 17(B2) 7 Offset 472 Decorate 19(b2) Binding 1 Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 4 MemberDecorate 23(S) 2 Offset 8 Decorate 24 ArrayStride 16 Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 4 MemberDecorate 25(B1) 2 Offset 8 MemberDecorate 25(B1) 3 Offset 16 MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 Decorate 27(b1) Binding 0 Decorate 27(b1) DescriptorSet 0 Decorate 44 ArrayStride 16 MemberDecorate 45(S) 0 Offset 0 MemberDecorate 45(S) 1 Offset 4 MemberDecorate 45(S) 2 Offset 8 Decorate 46 ArrayStride 16 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 Decorate 49(B5) Block MemberDecorate 49(B5) 0 Offset 0 MemberDecorate 49(B5) 1 Offset 4 MemberDecorate 49(B5) 2 Offset 8 MemberDecorate 49(B5) 3 Offset 16 MemberDecorate 49(B5) 4 Offset 48 MemberDecorate 49(B5) 5 Offset 64 MemberDecorate 49(B5) 6 Offset 96 MemberDecorate 49(B5) 7 Offset 1696 Decorate 51(b5) Binding 2 Decorate 51(b5) DescriptorSet 0 MemberDecorate 88(S2) 0 ColMajor MemberDecorate 88(S2) 0 MatrixStride 16 MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 1 Offset 64 MemberDecorate 88(S2) 2 Offset 68 MemberDecorate 89(S3) 0 Offset 0 Decorate 90(B4) BufferBlock MemberDecorate 90(B4) 0 Offset 0 MemberDecorate 90(B4) 1 Offset 80 Decorate 92(b4) Binding 4 Decorate 92(b4) DescriptorSet 0 MemberDecorate 93(S2) 0 RowMajor MemberDecorate 93(S2) 0 MatrixStride 16 MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 1 Offset 64 MemberDecorate 93(S2) 2 Offset 68 Decorate 94(B3) BufferBlock MemberDecorate 94(B3) 0 Offset 0 Decorate 96(b3) Binding 3 Decorate 96(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 16 1 7: TypeVector 6(int16_t) 2 8: TypeVector 6(int16_t) 3 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(int16_t) 10 12(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 13: TypeArray 12(S) 10 14: 9(int) Constant 100 15: TypeArray 7(i16vec2) 14 16: TypeRuntimeArray 6(int16_t) 17(B2): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 11 12(S) 13 15 16 18: TypePointer Uniform 17(B2) 19(b2): 18(ptr) Variable Uniform 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypeArray 6(int16_t) 10 23(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 24: TypeArray 23(S) 10 25(B1): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 22 23(S) 24 20(int) 26: TypePointer Uniform 25(B1) 27(b1): 26(ptr) Variable Uniform 28: TypePointer Uniform 6(int16_t) 32: 20(int) Constant 1 33: 20(int) Constant 2 34: TypePointer Uniform 8(i16vec3) 37: TypeVector 20(int) 3 39: TypeVector 20(int) 2 42: TypePointer Uniform 7(i16vec2) 44: TypeArray 6(int16_t) 10 45(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 46: TypeArray 45(S) 10 47: TypeArray 7(i16vec2) 14 48: TypeArray 6(int16_t) 14 49(B5): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 44 45(S) 46 47 48 50: TypePointer Uniform 49(B5) 51(b5): 50(ptr) Variable Uniform 58: 20(int) Constant 3 68: TypePointer Function 20(int) 73: TypeVector 20(int) 4 74: TypePointer Function 73(ivec4) 85: TypeFloat 32 86: TypeVector 85(float) 4 87: TypeMatrix 86(fvec4) 4 88(S2): TypeStruct 87 6(int16_t) 20(int) 89(S3): TypeStruct 88(S2) 90(B4): TypeStruct 88(S2) 89(S3) 91: TypePointer Uniform 90(B4) 92(b4): 91(ptr) Variable Uniform 93(S2): TypeStruct 87 6(int16_t) 20(int) 94(B3): TypeStruct 93(S2) 95: TypePointer Uniform 94(B3) 96(b3): 95(ptr) Variable Uniform 97: TypePointer Uniform 87 104: 9(int) Constant 0 108: 20(int) Constant 5 112: TypePointer Function 37(ivec3) 114: 20(int) Constant 7 115: 20(int) Constant 6 116: TypePointer Uniform 20(int) 166: 39(ivec2) ConstantComposite 32 33 4(main): 2 Function None 3 5: Label 69(x0): 68(ptr) Variable Function 75(x1): 74(ptr) Variable Function 113(v3): 112(ptr) Variable Function 135(u3): 112(ptr) Variable Function 29: 28(ptr) AccessChain 27(b1) 21 30: 6(int16_t) Load 29 31: 28(ptr) AccessChain 19(b2) 21 Store 31 30 35: 34(ptr) AccessChain 19(b2) 33 36: 8(i16vec3) Load 35 38: 37(ivec3) SConvert 36 40: 39(ivec2) VectorShuffle 38 38 0 1 41: 7(i16vec2) SConvert 40 43: 42(ptr) AccessChain 19(b2) 32 Store 43 41 52: 34(ptr) AccessChain 51(b5) 33 53: 8(i16vec3) Load 52 54: 37(ivec3) SConvert 53 55: 39(ivec2) VectorShuffle 54 54 0 1 56: 7(i16vec2) SConvert 55 57: 42(ptr) AccessChain 19(b2) 32 Store 57 56 59: 28(ptr) AccessChain 19(b2) 58 21 60: 6(int16_t) Load 59 61: 28(ptr) AccessChain 19(b2) 58 21 Store 61 60 62: 28(ptr) AccessChain 51(b5) 58 32 63: 6(int16_t) Load 62 64: 28(ptr) AccessChain 19(b2) 58 32 Store 64 63 65: 42(ptr) AccessChain 19(b2) 32 66: 7(i16vec2) Load 65 67: 42(ptr) AccessChain 19(b2) 32 Store 67 66 70: 28(ptr) AccessChain 27(b1) 21 71: 6(int16_t) Load 70 72: 20(int) SConvert 71 Store 69(x0) 72 76: 28(ptr) AccessChain 27(b1) 21 77: 6(int16_t) Load 76 78: 20(int) SConvert 77 79: 42(ptr) AccessChain 19(b2) 32 80: 7(i16vec2) Load 79 81: 39(ivec2) SConvert 80 82: 20(int) CompositeExtract 81 0 83: 20(int) CompositeExtract 81 1 84: 73(ivec4) CompositeConstruct 78 82 83 32 Store 75(x1) 84 98: 97(ptr) AccessChain 96(b3) 21 21 99: 87 Load 98 100: 97(ptr) AccessChain 92(b4) 21 21 Store 100 99 101: 42(ptr) AccessChain 19(b2) 32 102: 7(i16vec2) Load 101 103: 39(ivec2) SConvert 102 105: 20(int) CompositeExtract 103 0 106: 6(int16_t) SConvert 105 107: 28(ptr) AccessChain 19(b2) 21 Store 107 106 109: 42(ptr) AccessChain 19(b2) 108 32 32 110: 7(i16vec2) Load 109 111: 42(ptr) AccessChain 19(b2) 32 Store 111 110 117: 116(ptr) AccessChain 27(b1) 115 118: 20(int) Load 117 119: 28(ptr) AccessChain 19(b2) 114 118 120: 6(int16_t) Load 119 121: 20(int) SConvert 120 122: 116(ptr) AccessChain 27(b1) 115 123: 20(int) Load 122 124: 20(int) IAdd 123 32 125: 28(ptr) AccessChain 19(b2) 114 124 126: 6(int16_t) Load 125 127: 20(int) SConvert 126 128: 116(ptr) AccessChain 27(b1) 115 129: 20(int) Load 128 130: 20(int) IAdd 129 33 131: 28(ptr) AccessChain 19(b2) 114 130 132: 6(int16_t) Load 131 133: 20(int) SConvert 132 134: 37(ivec3) CompositeConstruct 121 127 133 Store 113(v3) 134 136: 116(ptr) AccessChain 27(b1) 115 137: 20(int) Load 136 138: 28(ptr) AccessChain 51(b5) 114 137 139: 6(int16_t) Load 138 140: 20(int) SConvert 139 141: 116(ptr) AccessChain 27(b1) 115 142: 20(int) Load 141 143: 20(int) IAdd 142 32 144: 28(ptr) AccessChain 51(b5) 114 143 145: 6(int16_t) Load 144 146: 20(int) SConvert 145 147: 116(ptr) AccessChain 27(b1) 115 148: 20(int) Load 147 149: 20(int) IAdd 148 33 150: 28(ptr) AccessChain 51(b5) 114 149 151: 6(int16_t) Load 150 152: 20(int) SConvert 151 153: 37(ivec3) CompositeConstruct 140 146 152 Store 135(u3) 153 154: 42(ptr) AccessChain 19(b2) 115 21 155: 7(i16vec2) Load 154 156: 42(ptr) AccessChain 19(b2) 115 21 Store 156 155 157: 42(ptr) AccessChain 51(b5) 115 32 158: 7(i16vec2) Load 157 159: 42(ptr) AccessChain 19(b2) 115 32 Store 159 158 160: 28(ptr) AccessChain 27(b1) 21 161: 6(int16_t) Load 160 162: 28(ptr) AccessChain 19(b2) 32 104 Store 162 161 163: 28(ptr) AccessChain 19(b2) 32 104 164: 6(int16_t) Load 163 165: 28(ptr) AccessChain 19(b2) 21 Store 165 164 167: 7(i16vec2) SConvert 166 168: 42(ptr) AccessChain 19(b2) 32 Store 168 167 169: 6(int16_t) SConvert 58 170: 28(ptr) AccessChain 19(b2) 21 Store 170 169 171: 28(ptr) AccessChain 27(b1) 21 172: 6(int16_t) Load 171 173: 28(ptr) AccessChain 19(b2) 21 Store 173 172 174: 42(ptr) AccessChain 27(b1) 32 175: 7(i16vec2) Load 174 176: 42(ptr) AccessChain 19(b2) 32 Store 176 175 177: 34(ptr) AccessChain 27(b1) 33 178: 8(i16vec3) Load 177 179: 34(ptr) AccessChain 19(b2) 33 Store 179 178 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.16bitstorage-uint.frag.out000066400000000000000000000435241506534232700242240ustar00rootroot00000000000000spv.16bitstorage-uint.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 182 Capability Shader Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_16bit_storage" Name 4 "main" Name 12 "S" MemberName 12(S) 0 "x" MemberName 12(S) 1 "y" MemberName 12(S) 2 "z" Name 17 "B2" MemberName 17(B2) 0 "o" MemberName 17(B2) 1 "p" MemberName 17(B2) 2 "q" MemberName 17(B2) 3 "r" MemberName 17(B2) 4 "u" MemberName 17(B2) 5 "v" MemberName 17(B2) 6 "x" MemberName 17(B2) 7 "w" Name 19 "b2" Name 23 "S" MemberName 23(S) 0 "x" MemberName 23(S) 1 "y" MemberName 23(S) 2 "z" Name 25 "B1" MemberName 25(B1) 0 "a" MemberName 25(B1) 1 "b" MemberName 25(B1) 2 "c" MemberName 25(B1) 3 "d" MemberName 25(B1) 4 "g" MemberName 25(B1) 5 "h" MemberName 25(B1) 6 "j" Name 27 "b1" Name 45 "S" MemberName 45(S) 0 "x" MemberName 45(S) 1 "y" MemberName 45(S) 2 "z" Name 49 "B5" MemberName 49(B5) 0 "o" MemberName 49(B5) 1 "p" MemberName 49(B5) 2 "q" MemberName 49(B5) 3 "r" MemberName 49(B5) 4 "u" MemberName 49(B5) 5 "v" MemberName 49(B5) 6 "x" MemberName 49(B5) 7 "w" Name 51 "b5" Name 69 "x0" Name 75 "x1" Name 89 "S2" MemberName 89(S2) 0 "x" MemberName 89(S2) 1 "y" MemberName 89(S2) 2 "z" Name 90 "S3" MemberName 90(S3) 0 "x" Name 91 "B4" MemberName 91(B4) 0 "x" MemberName 91(B4) 1 "y" Name 93 "b4" Name 94 "S2" MemberName 94(S2) 0 "x" MemberName 94(S2) 1 "y" MemberName 94(S2) 2 "z" Name 95 "B3" MemberName 95(B3) 0 "x" Name 97 "b3" Name 114 "v3" Name 136 "u3" Decorate 11 ArrayStride 2 MemberDecorate 12(S) 0 Offset 0 MemberDecorate 12(S) 1 Offset 4 MemberDecorate 12(S) 2 Offset 8 Decorate 13 ArrayStride 16 Decorate 15 ArrayStride 4 Decorate 16 ArrayStride 2 Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 4 MemberDecorate 17(B2) 2 Offset 8 MemberDecorate 17(B2) 3 Offset 14 MemberDecorate 17(B2) 4 Offset 24 MemberDecorate 17(B2) 5 Offset 40 MemberDecorate 17(B2) 6 Offset 72 MemberDecorate 17(B2) 7 Offset 472 Decorate 19(b2) Binding 1 Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 4 MemberDecorate 23(S) 2 Offset 8 Decorate 24 ArrayStride 16 Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 4 MemberDecorate 25(B1) 2 Offset 8 MemberDecorate 25(B1) 3 Offset 16 MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 Decorate 27(b1) Binding 0 Decorate 27(b1) DescriptorSet 0 Decorate 44 ArrayStride 16 MemberDecorate 45(S) 0 Offset 0 MemberDecorate 45(S) 1 Offset 4 MemberDecorate 45(S) 2 Offset 8 Decorate 46 ArrayStride 16 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 Decorate 49(B5) Block MemberDecorate 49(B5) 0 Offset 0 MemberDecorate 49(B5) 1 Offset 4 MemberDecorate 49(B5) 2 Offset 8 MemberDecorate 49(B5) 3 Offset 16 MemberDecorate 49(B5) 4 Offset 48 MemberDecorate 49(B5) 5 Offset 64 MemberDecorate 49(B5) 6 Offset 96 MemberDecorate 49(B5) 7 Offset 1696 Decorate 51(b5) Binding 2 Decorate 51(b5) DescriptorSet 0 MemberDecorate 89(S2) 0 ColMajor MemberDecorate 89(S2) 0 MatrixStride 16 MemberDecorate 89(S2) 0 Offset 0 MemberDecorate 89(S2) 1 Offset 64 MemberDecorate 89(S2) 2 Offset 68 MemberDecorate 90(S3) 0 Offset 0 Decorate 91(B4) BufferBlock MemberDecorate 91(B4) 0 Offset 0 MemberDecorate 91(B4) 1 Offset 80 Decorate 93(b4) Binding 4 Decorate 93(b4) DescriptorSet 0 MemberDecorate 94(S2) 0 RowMajor MemberDecorate 94(S2) 0 MatrixStride 16 MemberDecorate 94(S2) 0 Offset 0 MemberDecorate 94(S2) 1 Offset 64 MemberDecorate 94(S2) 2 Offset 68 Decorate 95(B3) BufferBlock MemberDecorate 95(B3) 0 Offset 0 Decorate 97(b3) Binding 3 Decorate 97(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 16 0 7: TypeVector 6(int16_t) 2 8: TypeVector 6(int16_t) 3 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(int16_t) 10 12(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 13: TypeArray 12(S) 10 14: 9(int) Constant 100 15: TypeArray 7(i16vec2) 14 16: TypeRuntimeArray 6(int16_t) 17(B2): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 11 12(S) 13 15 16 18: TypePointer Uniform 17(B2) 19(b2): 18(ptr) Variable Uniform 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypeArray 6(int16_t) 10 23(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 24: TypeArray 23(S) 10 25(B1): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 22 23(S) 24 9(int) 26: TypePointer Uniform 25(B1) 27(b1): 26(ptr) Variable Uniform 28: TypePointer Uniform 6(int16_t) 32: 20(int) Constant 1 33: 20(int) Constant 2 34: TypePointer Uniform 8(i16vec3) 37: TypeVector 9(int) 3 39: TypeVector 9(int) 2 42: TypePointer Uniform 7(i16vec2) 44: TypeArray 6(int16_t) 10 45(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 46: TypeArray 45(S) 10 47: TypeArray 7(i16vec2) 14 48: TypeArray 6(int16_t) 14 49(B5): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 44 45(S) 46 47 48 50: TypePointer Uniform 49(B5) 51(b5): 50(ptr) Variable Uniform 58: 20(int) Constant 3 68: TypePointer Function 9(int) 73: TypeVector 9(int) 4 74: TypePointer Function 73(ivec4) 82: 9(int) Constant 1 86: TypeFloat 32 87: TypeVector 86(float) 4 88: TypeMatrix 87(fvec4) 4 89(S2): TypeStruct 88 6(int16_t) 9(int) 90(S3): TypeStruct 89(S2) 91(B4): TypeStruct 89(S2) 90(S3) 92: TypePointer Uniform 91(B4) 93(b4): 92(ptr) Variable Uniform 94(S2): TypeStruct 88 6(int16_t) 9(int) 95(B3): TypeStruct 94(S2) 96: TypePointer Uniform 95(B3) 97(b3): 96(ptr) Variable Uniform 98: TypePointer Uniform 88 105: 9(int) Constant 0 109: 20(int) Constant 5 113: TypePointer Function 37(ivec3) 115: 20(int) Constant 7 116: 20(int) Constant 6 117: TypePointer Uniform 9(int) 167: 39(ivec2) ConstantComposite 82 10 170: 9(int) Constant 3 4(main): 2 Function None 3 5: Label 69(x0): 68(ptr) Variable Function 75(x1): 74(ptr) Variable Function 114(v3): 113(ptr) Variable Function 136(u3): 113(ptr) Variable Function 29: 28(ptr) AccessChain 27(b1) 21 30: 6(int16_t) Load 29 31: 28(ptr) AccessChain 19(b2) 21 Store 31 30 35: 34(ptr) AccessChain 19(b2) 33 36: 8(i16vec3) Load 35 38: 37(ivec3) UConvert 36 40: 39(ivec2) VectorShuffle 38 38 0 1 41: 7(i16vec2) UConvert 40 43: 42(ptr) AccessChain 19(b2) 32 Store 43 41 52: 34(ptr) AccessChain 51(b5) 33 53: 8(i16vec3) Load 52 54: 37(ivec3) UConvert 53 55: 39(ivec2) VectorShuffle 54 54 0 1 56: 7(i16vec2) UConvert 55 57: 42(ptr) AccessChain 19(b2) 32 Store 57 56 59: 28(ptr) AccessChain 19(b2) 58 21 60: 6(int16_t) Load 59 61: 28(ptr) AccessChain 19(b2) 58 21 Store 61 60 62: 28(ptr) AccessChain 51(b5) 58 32 63: 6(int16_t) Load 62 64: 28(ptr) AccessChain 19(b2) 58 32 Store 64 63 65: 42(ptr) AccessChain 19(b2) 32 66: 7(i16vec2) Load 65 67: 42(ptr) AccessChain 19(b2) 32 Store 67 66 70: 28(ptr) AccessChain 27(b1) 21 71: 6(int16_t) Load 70 72: 9(int) UConvert 71 Store 69(x0) 72 76: 28(ptr) AccessChain 27(b1) 21 77: 6(int16_t) Load 76 78: 9(int) UConvert 77 79: 42(ptr) AccessChain 19(b2) 32 80: 7(i16vec2) Load 79 81: 39(ivec2) UConvert 80 83: 9(int) CompositeExtract 81 0 84: 9(int) CompositeExtract 81 1 85: 73(ivec4) CompositeConstruct 78 83 84 82 Store 75(x1) 85 99: 98(ptr) AccessChain 97(b3) 21 21 100: 88 Load 99 101: 98(ptr) AccessChain 93(b4) 21 21 Store 101 100 102: 42(ptr) AccessChain 19(b2) 32 103: 7(i16vec2) Load 102 104: 39(ivec2) UConvert 103 106: 9(int) CompositeExtract 104 0 107: 6(int16_t) UConvert 106 108: 28(ptr) AccessChain 19(b2) 21 Store 108 107 110: 42(ptr) AccessChain 19(b2) 109 32 32 111: 7(i16vec2) Load 110 112: 42(ptr) AccessChain 19(b2) 32 Store 112 111 118: 117(ptr) AccessChain 27(b1) 116 119: 9(int) Load 118 120: 28(ptr) AccessChain 19(b2) 115 119 121: 6(int16_t) Load 120 122: 9(int) UConvert 121 123: 117(ptr) AccessChain 27(b1) 116 124: 9(int) Load 123 125: 9(int) IAdd 124 82 126: 28(ptr) AccessChain 19(b2) 115 125 127: 6(int16_t) Load 126 128: 9(int) UConvert 127 129: 117(ptr) AccessChain 27(b1) 116 130: 9(int) Load 129 131: 9(int) IAdd 130 10 132: 28(ptr) AccessChain 19(b2) 115 131 133: 6(int16_t) Load 132 134: 9(int) UConvert 133 135: 37(ivec3) CompositeConstruct 122 128 134 Store 114(v3) 135 137: 117(ptr) AccessChain 27(b1) 116 138: 9(int) Load 137 139: 28(ptr) AccessChain 51(b5) 115 138 140: 6(int16_t) Load 139 141: 9(int) UConvert 140 142: 117(ptr) AccessChain 27(b1) 116 143: 9(int) Load 142 144: 9(int) IAdd 143 82 145: 28(ptr) AccessChain 51(b5) 115 144 146: 6(int16_t) Load 145 147: 9(int) UConvert 146 148: 117(ptr) AccessChain 27(b1) 116 149: 9(int) Load 148 150: 9(int) IAdd 149 10 151: 28(ptr) AccessChain 51(b5) 115 150 152: 6(int16_t) Load 151 153: 9(int) UConvert 152 154: 37(ivec3) CompositeConstruct 141 147 153 Store 136(u3) 154 155: 42(ptr) AccessChain 19(b2) 116 21 156: 7(i16vec2) Load 155 157: 42(ptr) AccessChain 19(b2) 116 21 Store 157 156 158: 42(ptr) AccessChain 51(b5) 116 32 159: 7(i16vec2) Load 158 160: 42(ptr) AccessChain 19(b2) 116 32 Store 160 159 161: 28(ptr) AccessChain 27(b1) 21 162: 6(int16_t) Load 161 163: 28(ptr) AccessChain 19(b2) 32 105 Store 163 162 164: 28(ptr) AccessChain 19(b2) 32 105 165: 6(int16_t) Load 164 166: 28(ptr) AccessChain 19(b2) 21 Store 166 165 168: 7(i16vec2) UConvert 167 169: 42(ptr) AccessChain 19(b2) 32 Store 169 168 171: 6(int16_t) UConvert 170 172: 28(ptr) AccessChain 19(b2) 21 Store 172 171 173: 28(ptr) AccessChain 27(b1) 21 174: 6(int16_t) Load 173 175: 28(ptr) AccessChain 19(b2) 21 Store 175 174 176: 42(ptr) AccessChain 27(b1) 32 177: 7(i16vec2) Load 176 178: 42(ptr) AccessChain 19(b2) 32 Store 178 177 179: 34(ptr) AccessChain 27(b1) 33 180: 8(i16vec3) Load 179 181: 34(ptr) AccessChain 19(b2) 33 Store 181 180 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.16bitstorage.frag.out000066400000000000000000000436221506534232700232460ustar00rootroot00000000000000spv.16bitstorage.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 182 Capability Shader Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_16bit_storage" Name 4 "main" Name 12 "S" MemberName 12(S) 0 "x" MemberName 12(S) 1 "y" MemberName 12(S) 2 "z" Name 17 "B2" MemberName 17(B2) 0 "o" MemberName 17(B2) 1 "p" MemberName 17(B2) 2 "q" MemberName 17(B2) 3 "r" MemberName 17(B2) 4 "u" MemberName 17(B2) 5 "v" MemberName 17(B2) 6 "x" MemberName 17(B2) 7 "w" Name 19 "b2" Name 23 "S" MemberName 23(S) 0 "x" MemberName 23(S) 1 "y" MemberName 23(S) 2 "z" Name 25 "B1" MemberName 25(B1) 0 "a" MemberName 25(B1) 1 "b" MemberName 25(B1) 2 "c" MemberName 25(B1) 3 "d" MemberName 25(B1) 4 "g" MemberName 25(B1) 5 "h" MemberName 25(B1) 6 "j" Name 27 "b1" Name 46 "S" MemberName 46(S) 0 "x" MemberName 46(S) 1 "y" MemberName 46(S) 2 "z" Name 50 "B5" MemberName 50(B5) 0 "o" MemberName 50(B5) 1 "p" MemberName 50(B5) 2 "q" MemberName 50(B5) 3 "r" MemberName 50(B5) 4 "u" MemberName 50(B5) 5 "v" MemberName 50(B5) 6 "x" MemberName 50(B5) 7 "w" Name 52 "b5" Name 70 "x0" Name 76 "x1" Name 88 "S2" MemberName 88(S2) 0 "x" MemberName 88(S2) 1 "y" MemberName 88(S2) 2 "z" Name 89 "S3" MemberName 89(S3) 0 "x" Name 90 "B4" MemberName 90(B4) 0 "x" MemberName 90(B4) 1 "y" Name 92 "b4" Name 93 "S2" MemberName 93(S2) 0 "x" MemberName 93(S2) 1 "y" MemberName 93(S2) 2 "z" Name 94 "B3" MemberName 94(B3) 0 "x" Name 96 "b3" Name 113 "v3" Name 135 "u3" Decorate 11 ArrayStride 2 MemberDecorate 12(S) 0 Offset 0 MemberDecorate 12(S) 1 Offset 4 MemberDecorate 12(S) 2 Offset 8 Decorate 13 ArrayStride 16 Decorate 15 ArrayStride 4 Decorate 16 ArrayStride 2 Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 4 MemberDecorate 17(B2) 2 Offset 8 MemberDecorate 17(B2) 3 Offset 14 MemberDecorate 17(B2) 4 Offset 24 MemberDecorate 17(B2) 5 Offset 40 MemberDecorate 17(B2) 6 Offset 72 MemberDecorate 17(B2) 7 Offset 472 Decorate 19(b2) Binding 1 Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 4 MemberDecorate 23(S) 2 Offset 8 Decorate 24 ArrayStride 16 Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 4 MemberDecorate 25(B1) 2 Offset 8 MemberDecorate 25(B1) 3 Offset 16 MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 Decorate 27(b1) Binding 0 Decorate 27(b1) DescriptorSet 0 Decorate 45 ArrayStride 16 MemberDecorate 46(S) 0 Offset 0 MemberDecorate 46(S) 1 Offset 4 MemberDecorate 46(S) 2 Offset 8 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 Decorate 49 ArrayStride 16 Decorate 50(B5) Block MemberDecorate 50(B5) 0 Offset 0 MemberDecorate 50(B5) 1 Offset 4 MemberDecorate 50(B5) 2 Offset 8 MemberDecorate 50(B5) 3 Offset 16 MemberDecorate 50(B5) 4 Offset 48 MemberDecorate 50(B5) 5 Offset 64 MemberDecorate 50(B5) 6 Offset 96 MemberDecorate 50(B5) 7 Offset 1696 Decorate 52(b5) Binding 2 Decorate 52(b5) DescriptorSet 0 MemberDecorate 88(S2) 0 ColMajor MemberDecorate 88(S2) 0 MatrixStride 16 MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 1 Offset 64 MemberDecorate 88(S2) 2 Offset 68 MemberDecorate 89(S3) 0 Offset 0 Decorate 90(B4) BufferBlock MemberDecorate 90(B4) 0 Offset 0 MemberDecorate 90(B4) 1 Offset 80 Decorate 92(b4) Binding 4 Decorate 92(b4) DescriptorSet 0 MemberDecorate 93(S2) 0 RowMajor MemberDecorate 93(S2) 0 MatrixStride 16 MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 1 Offset 64 MemberDecorate 93(S2) 2 Offset 68 Decorate 94(B3) BufferBlock MemberDecorate 94(B3) 0 Offset 0 Decorate 96(b3) Binding 3 Decorate 96(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeVector 6(float16_t) 2 8: TypeVector 6(float16_t) 3 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(float16_t) 10 12(S): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 13: TypeArray 12(S) 10 14: 9(int) Constant 100 15: TypeArray 7(f16vec2) 14 16: TypeRuntimeArray 6(float16_t) 17(B2): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 11 12(S) 13 15 16 18: TypePointer Uniform 17(B2) 19(b2): 18(ptr) Variable Uniform 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypeArray 6(float16_t) 10 23(S): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 24: TypeArray 23(S) 10 25(B1): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 22 23(S) 24 20(int) 26: TypePointer Uniform 25(B1) 27(b1): 26(ptr) Variable Uniform 28: TypePointer Uniform 6(float16_t) 32: 20(int) Constant 1 33: 20(int) Constant 2 34: TypePointer Uniform 8(f16vec3) 37: TypeFloat 32 38: TypeVector 37(float) 3 40: TypeVector 37(float) 2 43: TypePointer Uniform 7(f16vec2) 45: TypeArray 6(float16_t) 10 46(S): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 47: TypeArray 46(S) 10 48: TypeArray 7(f16vec2) 14 49: TypeArray 6(float16_t) 14 50(B5): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 45 46(S) 47 48 49 51: TypePointer Uniform 50(B5) 52(b5): 51(ptr) Variable Uniform 59: 20(int) Constant 3 69: TypePointer Function 37(float) 74: TypeVector 37(float) 4 75: TypePointer Function 74(fvec4) 83: 37(float) Constant 1065353216 87: TypeMatrix 74(fvec4) 4 88(S2): TypeStruct 87 6(float16_t) 37(float) 89(S3): TypeStruct 88(S2) 90(B4): TypeStruct 88(S2) 89(S3) 91: TypePointer Uniform 90(B4) 92(b4): 91(ptr) Variable Uniform 93(S2): TypeStruct 87 6(float16_t) 37(float) 94(B3): TypeStruct 93(S2) 95: TypePointer Uniform 94(B3) 96(b3): 95(ptr) Variable Uniform 97: TypePointer Uniform 87 104: 9(int) Constant 0 108: 20(int) Constant 5 112: TypePointer Function 38(fvec3) 114: 20(int) Constant 7 115: 20(int) Constant 6 116: TypePointer Uniform 20(int) 166: 37(float) Constant 1073741824 167: 40(fvec2) ConstantComposite 83 166 170: 37(float) Constant 1077936128 4(main): 2 Function None 3 5: Label 70(x0): 69(ptr) Variable Function 76(x1): 75(ptr) Variable Function 113(v3): 112(ptr) Variable Function 135(u3): 112(ptr) Variable Function 29: 28(ptr) AccessChain 27(b1) 21 30:6(float16_t) Load 29 31: 28(ptr) AccessChain 19(b2) 21 Store 31 30 35: 34(ptr) AccessChain 19(b2) 33 36: 8(f16vec3) Load 35 39: 38(fvec3) FConvert 36 41: 40(fvec2) VectorShuffle 39 39 0 1 42: 7(f16vec2) FConvert 41 44: 43(ptr) AccessChain 19(b2) 32 Store 44 42 53: 34(ptr) AccessChain 52(b5) 33 54: 8(f16vec3) Load 53 55: 38(fvec3) FConvert 54 56: 40(fvec2) VectorShuffle 55 55 0 1 57: 7(f16vec2) FConvert 56 58: 43(ptr) AccessChain 19(b2) 32 Store 58 57 60: 28(ptr) AccessChain 19(b2) 59 21 61:6(float16_t) Load 60 62: 28(ptr) AccessChain 19(b2) 59 21 Store 62 61 63: 28(ptr) AccessChain 52(b5) 59 32 64:6(float16_t) Load 63 65: 28(ptr) AccessChain 19(b2) 59 32 Store 65 64 66: 43(ptr) AccessChain 19(b2) 32 67: 7(f16vec2) Load 66 68: 43(ptr) AccessChain 19(b2) 32 Store 68 67 71: 28(ptr) AccessChain 27(b1) 21 72:6(float16_t) Load 71 73: 37(float) FConvert 72 Store 70(x0) 73 77: 28(ptr) AccessChain 27(b1) 21 78:6(float16_t) Load 77 79: 37(float) FConvert 78 80: 43(ptr) AccessChain 19(b2) 32 81: 7(f16vec2) Load 80 82: 40(fvec2) FConvert 81 84: 37(float) CompositeExtract 82 0 85: 37(float) CompositeExtract 82 1 86: 74(fvec4) CompositeConstruct 79 84 85 83 Store 76(x1) 86 98: 97(ptr) AccessChain 96(b3) 21 21 99: 87 Load 98 100: 97(ptr) AccessChain 92(b4) 21 21 Store 100 99 101: 43(ptr) AccessChain 19(b2) 32 102: 7(f16vec2) Load 101 103: 40(fvec2) FConvert 102 105: 37(float) CompositeExtract 103 0 106:6(float16_t) FConvert 105 107: 28(ptr) AccessChain 19(b2) 21 Store 107 106 109: 43(ptr) AccessChain 19(b2) 108 32 32 110: 7(f16vec2) Load 109 111: 43(ptr) AccessChain 19(b2) 32 Store 111 110 117: 116(ptr) AccessChain 27(b1) 115 118: 20(int) Load 117 119: 28(ptr) AccessChain 19(b2) 114 118 120:6(float16_t) Load 119 121: 37(float) FConvert 120 122: 116(ptr) AccessChain 27(b1) 115 123: 20(int) Load 122 124: 20(int) IAdd 123 32 125: 28(ptr) AccessChain 19(b2) 114 124 126:6(float16_t) Load 125 127: 37(float) FConvert 126 128: 116(ptr) AccessChain 27(b1) 115 129: 20(int) Load 128 130: 20(int) IAdd 129 33 131: 28(ptr) AccessChain 19(b2) 114 130 132:6(float16_t) Load 131 133: 37(float) FConvert 132 134: 38(fvec3) CompositeConstruct 121 127 133 Store 113(v3) 134 136: 116(ptr) AccessChain 27(b1) 115 137: 20(int) Load 136 138: 28(ptr) AccessChain 52(b5) 114 137 139:6(float16_t) Load 138 140: 37(float) FConvert 139 141: 116(ptr) AccessChain 27(b1) 115 142: 20(int) Load 141 143: 20(int) IAdd 142 32 144: 28(ptr) AccessChain 52(b5) 114 143 145:6(float16_t) Load 144 146: 37(float) FConvert 145 147: 116(ptr) AccessChain 27(b1) 115 148: 20(int) Load 147 149: 20(int) IAdd 148 33 150: 28(ptr) AccessChain 52(b5) 114 149 151:6(float16_t) Load 150 152: 37(float) FConvert 151 153: 38(fvec3) CompositeConstruct 140 146 152 Store 135(u3) 153 154: 43(ptr) AccessChain 19(b2) 115 21 155: 7(f16vec2) Load 154 156: 43(ptr) AccessChain 19(b2) 115 21 Store 156 155 157: 43(ptr) AccessChain 52(b5) 115 32 158: 7(f16vec2) Load 157 159: 43(ptr) AccessChain 19(b2) 115 32 Store 159 158 160: 28(ptr) AccessChain 27(b1) 21 161:6(float16_t) Load 160 162: 28(ptr) AccessChain 19(b2) 32 104 Store 162 161 163: 28(ptr) AccessChain 19(b2) 32 104 164:6(float16_t) Load 163 165: 28(ptr) AccessChain 19(b2) 21 Store 165 164 168: 7(f16vec2) FConvert 167 169: 43(ptr) AccessChain 19(b2) 32 Store 169 168 171:6(float16_t) FConvert 170 172: 28(ptr) AccessChain 19(b2) 21 Store 172 171 173: 28(ptr) AccessChain 27(b1) 21 174:6(float16_t) Load 173 175: 28(ptr) AccessChain 19(b2) 21 Store 175 174 176: 43(ptr) AccessChain 27(b1) 32 177: 7(f16vec2) Load 176 178: 43(ptr) AccessChain 19(b2) 32 Store 178 177 179: 34(ptr) AccessChain 27(b1) 33 180: 8(f16vec3) Load 179 181: 34(ptr) AccessChain 19(b2) 33 Store 181 180 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.16bitstorage_Error-int.frag.out000066400000000000000000000147671506534232700252170ustar00rootroot00000000000000spv.16bitstorage_Error-int.frag ERROR: 0:54: 'structure: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:58: 'return: can't use with structs containing int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:61: 'int16_t: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:74: '[: does not operate on types containing (u)int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:75: '.: can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:77: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:77: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int16_t' (or there is no acceptable conversion) ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform int16_t (or there is no acceptable conversion) ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:81: '.: can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:82: '=: can't use with structs containing int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:83: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:84: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:85: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int16_t' (or there is no acceptable conversion) ERROR: 0:87: '=: can't use with arrays containing int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:88: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:89: 'constructor: 16-bit arrays not supported' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:89: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:92: 'constructor: can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:93: 'func2' : no matching overloaded function found ERROR: 0:99: '' : syntax error, unexpected IDENTIFIER ERROR: 26 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.16bitstorage_Error-uint.frag.out000066400000000000000000000150021506534232700253630ustar00rootroot00000000000000spv.16bitstorage_Error-uint.frag ERROR: 0:54: 'structure: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:58: 'return: can't use with structs containing uint16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:61: 'uint16_t: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:74: '[: does not operate on types containing (u)int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:75: '.: can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:77: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:77: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint16_t' (or there is no acceptable conversion) ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform uint16_t (or there is no acceptable conversion) ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:81: '.: can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:82: '=: can't use with structs containing uint16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:83: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:84: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:85: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint16_t' (or there is no acceptable conversion) ERROR: 0:87: '=: can't use with arrays containing uint16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:88: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:89: 'constructor: 16-bit arrays not supported' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:89: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:92: 'constructor: can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_int16 GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int16 ERROR: 0:93: 'func2' : no matching overloaded function found ERROR: 0:99: '' : syntax error, unexpected IDENTIFIER ERROR: 26 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.16bitstorage_Error.frag.out000066400000000000000000000161011506534232700244070ustar00rootroot00000000000000spv.16bitstorage_Error.frag ERROR: 0:54: 'structure: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:58: 'return: can't use with structs containing float16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:61: 'float16_t: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:74: '[: does not operate on types containing float16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:75: '.: can't swizzle types containing float16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:76: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:76: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:76: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:77: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:77: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform float16_t' (or there is no acceptable conversion) ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform float16_t (or there is no acceptable conversion) ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type ' const float' (or there is no acceptable conversion) ERROR: 0:81: '.: can't swizzle types containing float16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:82: '=: can't use with structs containing float16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:83: 'qualifier: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:84: 'qualifier: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:85: 'qualifier: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform float16_t' (or there is no acceptable conversion) ERROR: 0:87: '=: can't use with arrays containing float16' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:88: 'half floating-point suffix' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:88: 'half float literal' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:89: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:90: 'constructor: 16-bit arrays not supported' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:90: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:93: 'constructor: can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include: GL_AMD_gpu_shader_half_float GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_float16 ERROR: 0:94: 'func2' : no matching overloaded function found ERROR: 0:100: '' : syntax error, unexpected IDENTIFIER ERROR: 28 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.16bitxfb.vert.out000066400000000000000000000141161506534232700224160ustar00rootroot00000000000000spv.16bitxfb.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 59 Capability Shader Capability Float16 Capability Int16 Capability TransformFeedback Capability StorageInputOutput16 Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 12 18 36 39 46 49 ExecutionMode 4 Xfb Source GLSL 450 SourceExtension "GL_AMD_gpu_shader_half_float" SourceExtension "GL_AMD_gpu_shader_int16" Name 4 "main" Name 9 "of16v3" Name 12 "if16v4" Name 16 "F16Out" MemberName 16(F16Out) 0 "of16" MemberName 16(F16Out) 1 "of16v2" Name 18 "" Name 36 "oi16v3" Name 39 "ii16v4" Name 44 "I16Out" MemberName 44(I16Out) 0 "ou16" MemberName 44(I16Out) 1 "ou16v2" Name 46 "" Name 49 "iu16v4" Decorate 9(of16v3) Location 0 Decorate 9(of16v3) Offset 0 Decorate 9(of16v3) XfbBuffer 0 Decorate 9(of16v3) XfbStride 6 Decorate 12(if16v4) Location 0 Decorate 16(F16Out) Block MemberDecorate 16(F16Out) 0 Offset 0 MemberDecorate 16(F16Out) 1 Offset 2 Decorate 18 Location 1 Decorate 18 XfbBuffer 1 Decorate 18 XfbStride 6 Decorate 36(oi16v3) Location 5 Decorate 36(oi16v3) Offset 0 Decorate 36(oi16v3) XfbBuffer 2 Decorate 36(oi16v3) XfbStride 6 Decorate 39(ii16v4) Location 1 Decorate 44(I16Out) Block MemberDecorate 44(I16Out) 0 Offset 0 MemberDecorate 44(I16Out) 1 Offset 2 Decorate 46 Location 6 Decorate 46 XfbBuffer 3 Decorate 46 XfbStride 6 Decorate 49(iu16v4) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeVector 6(float16_t) 3 8: TypePointer Output 7(f16vec3) 9(of16v3): 8(ptr) Variable Output 10: TypeVector 6(float16_t) 4 11: TypePointer Input 10(f16vec4) 12(if16v4): 11(ptr) Variable Input 15: TypeVector 6(float16_t) 2 16(F16Out): TypeStruct 6(float16_t) 15(f16vec2) 17: TypePointer Output 16(F16Out) 18: 17(ptr) Variable Output 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypeInt 32 0 22: 21(int) Constant 0 23: TypePointer Input 6(float16_t) 26: TypePointer Output 6(float16_t) 28: 19(int) Constant 1 31: TypePointer Output 15(f16vec2) 33: TypeInt 16 1 34: TypeVector 33(int16_t) 3 35: TypePointer Output 34(i16vec3) 36(oi16v3): 35(ptr) Variable Output 37: TypeVector 33(int16_t) 4 38: TypePointer Input 37(i16vec4) 39(ii16v4): 38(ptr) Variable Input 42: TypeInt 16 0 43: TypeVector 42(int16_t) 2 44(I16Out): TypeStruct 42(int16_t) 43(i16vec2) 45: TypePointer Output 44(I16Out) 46: 45(ptr) Variable Output 47: TypeVector 42(int16_t) 4 48: TypePointer Input 47(i16vec4) 49(iu16v4): 48(ptr) Variable Input 50: TypePointer Input 42(int16_t) 53: TypePointer Output 42(int16_t) 57: TypePointer Output 43(i16vec2) 4(main): 2 Function None 3 5: Label 13: 10(f16vec4) Load 12(if16v4) 14: 7(f16vec3) VectorShuffle 13 13 0 1 2 Store 9(of16v3) 14 24: 23(ptr) AccessChain 12(if16v4) 22 25:6(float16_t) Load 24 27: 26(ptr) AccessChain 18 20 Store 27 25 29: 10(f16vec4) Load 12(if16v4) 30: 15(f16vec2) VectorShuffle 29 29 0 1 32: 31(ptr) AccessChain 18 28 Store 32 30 40: 37(i16vec4) Load 39(ii16v4) 41: 34(i16vec3) VectorShuffle 40 40 0 1 2 Store 36(oi16v3) 41 51: 50(ptr) AccessChain 49(iu16v4) 22 52: 42(int16_t) Load 51 54: 53(ptr) AccessChain 46 20 Store 54 52 55: 47(i16vec4) Load 49(iu16v4) 56: 43(i16vec2) VectorShuffle 55 55 0 1 58: 57(ptr) AccessChain 46 28 Store 58 56 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.300BuiltIns.vert.out000066400000000000000000000071271506534232700227510ustar00rootroot00000000000000spv.300BuiltIns.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 14 21 34 Source ESSL 310 Name 4 "main" Name 8 "gl_PerVertex" MemberName 8(gl_PerVertex) 0 "gl_Position" MemberName 8(gl_PerVertex) 1 "gl_PointSize" Name 10 "" Name 14 "ps" Name 21 "gl_VertexIndex" Name 34 "gl_InstanceIndex" Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position MemberDecorate 8(gl_PerVertex) 0 Invariant MemberDecorate 8(gl_PerVertex) 1 BuiltIn PointSize Decorate 14(ps) RelaxedPrecision Decorate 14(ps) Location 0 Decorate 15 RelaxedPrecision Decorate 21(gl_VertexIndex) BuiltIn VertexIndex Decorate 30 RelaxedPrecision Decorate 34(gl_InstanceIndex) BuiltIn InstanceIndex 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 9: TypePointer Output 8(gl_PerVertex) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: TypePointer Input 6(float) 14(ps): 13(ptr) Variable Input 17: TypePointer Output 7(fvec4) 19: 11(int) Constant 4 20: TypePointer Input 11(int) 21(gl_VertexIndex): 20(ptr) Variable Input 29: 11(int) Constant 1 31: TypePointer Output 6(float) 33: 11(int) Constant 5 34(gl_InstanceIndex): 20(ptr) Variable Input 4(main): 2 Function None 3 5: Label 15: 6(float) Load 14(ps) 16: 7(fvec4) CompositeConstruct 15 15 15 15 18: 17(ptr) AccessChain 10 12 Store 18 16 22: 11(int) Load 21(gl_VertexIndex) 23: 11(int) ISub 19 22 24: 6(float) ConvertSToF 23 25: 17(ptr) AccessChain 10 12 26: 7(fvec4) Load 25 27: 7(fvec4) VectorTimesScalar 26 24 28: 17(ptr) AccessChain 10 12 Store 28 27 30: 6(float) Load 14(ps) 32: 31(ptr) AccessChain 10 29 Store 32 30 35: 11(int) Load 34(gl_InstanceIndex) 36: 11(int) ISub 33 35 37: 6(float) ConvertSToF 36 38: 31(ptr) AccessChain 10 29 39: 6(float) Load 38 40: 6(float) FMul 39 37 41: 31(ptr) AccessChain 10 29 Store 41 40 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.300layout.frag.out000066400000000000000000000072271506534232700224750ustar00rootroot00000000000000spv.300layout.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 11 15 26 29 ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 9 "c" Name 11 "color" Name 13 "S" MemberName 13(S) 0 "c" MemberName 13(S) 1 "f" Name 15 "s" Name 26 "p" Name 29 "pos" Decorate 9(c) RelaxedPrecision Decorate 9(c) Location 7 Decorate 11(color) RelaxedPrecision Decorate 11(color) Location 1 Decorate 12 RelaxedPrecision MemberDecorate 13(S) 0 RelaxedPrecision MemberDecorate 13(S) 1 RelaxedPrecision Decorate 15(s) Location 2 Decorate 19 RelaxedPrecision Decorate 20 RelaxedPrecision Decorate 26(p) RelaxedPrecision Decorate 26(p) Location 3 Decorate 29(pos) RelaxedPrecision Decorate 29(pos) Location 0 Decorate 30 RelaxedPrecision Decorate 33 RelaxedPrecision Decorate 34 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Output 7(fvec3) 9(c): 8(ptr) Variable Output 10: TypePointer Input 7(fvec3) 11(color): 10(ptr) Variable Input 13(S): TypeStruct 7(fvec3) 6(float) 14: TypePointer Input 13(S) 15(s): 14(ptr) Variable Input 16: TypeInt 32 1 17: 16(int) Constant 0 21: TypeVector 6(float) 4 22: TypeInt 32 0 23: 22(int) Constant 2 24: TypeArray 21(fvec4) 23 25: TypePointer Output 24 26(p): 25(ptr) Variable Output 27: 16(int) Constant 1 28: TypePointer Input 21(fvec4) 29(pos): 28(ptr) Variable Input 31: TypePointer Input 6(float) 35: TypePointer Output 21(fvec4) 4(main): 2 Function None 3 5: Label 12: 7(fvec3) Load 11(color) 18: 10(ptr) AccessChain 15(s) 17 19: 7(fvec3) Load 18 20: 7(fvec3) FAdd 12 19 Store 9(c) 20 30: 21(fvec4) Load 29(pos) 32: 31(ptr) AccessChain 15(s) 27 33: 6(float) Load 32 34: 21(fvec4) VectorTimesScalar 30 33 36: 35(ptr) AccessChain 26(p) 27 Store 36 34 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.300layout.vert.out000066400000000000000000000314171506534232700225340ustar00rootroot00000000000000spv.300layout.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 163 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 11 98 100 108 114 120 128 Source ESSL 310 Name 4 "main" Name 9 "pos" Name 11 "p" Name 17 "Transform" MemberName 17(Transform) 0 "M1" MemberName 17(Transform) 1 "M2" MemberName 17(Transform) 2 "N1" MemberName 17(Transform) 3 "iuin" Name 19 "tblock" Name 45 "T3" MemberName 45(T3) 0 "M3" MemberName 45(T3) 1 "M4" MemberName 45(T3) 2 "N2" MemberName 45(T3) 3 "uv3a" Name 47 "" Name 78 "T2" MemberName 78(T2) 0 "b" MemberName 78(T2) 1 "t2m" Name 80 "" Name 98 "color" Name 100 "c" Name 108 "iout" Name 114 "uiuin" Name 120 "aiv2" Name 126 "S" MemberName 126(S) 0 "c" MemberName 126(S) 1 "f" Name 128 "s" Decorate 9(pos) Location 0 Decorate 11(p) Location 3 Decorate 17(Transform) Block MemberDecorate 17(Transform) 0 RowMajor MemberDecorate 17(Transform) 0 MatrixStride 16 MemberDecorate 17(Transform) 0 Offset 0 MemberDecorate 17(Transform) 1 ColMajor MemberDecorate 17(Transform) 1 MatrixStride 16 MemberDecorate 17(Transform) 1 Offset 64 MemberDecorate 17(Transform) 2 RowMajor MemberDecorate 17(Transform) 2 MatrixStride 16 MemberDecorate 17(Transform) 2 Offset 128 MemberDecorate 17(Transform) 3 Offset 176 Decorate 19(tblock) Binding 0 Decorate 19(tblock) DescriptorSet 0 Decorate 44 ArrayStride 16 Decorate 45(T3) Block MemberDecorate 45(T3) 0 ColMajor MemberDecorate 45(T3) 0 MatrixStride 16 MemberDecorate 45(T3) 0 Offset 0 MemberDecorate 45(T3) 1 RowMajor MemberDecorate 45(T3) 1 MatrixStride 16 MemberDecorate 45(T3) 1 Offset 64 MemberDecorate 45(T3) 2 ColMajor MemberDecorate 45(T3) 2 MatrixStride 16 MemberDecorate 45(T3) 2 Offset 128 MemberDecorate 45(T3) 3 Offset 2048 Decorate 47 Binding 2 Decorate 47 DescriptorSet 0 Decorate 78(T2) Block MemberDecorate 78(T2) 0 Offset 0 MemberDecorate 78(T2) 1 RowMajor MemberDecorate 78(T2) 1 MatrixStride 16 MemberDecorate 78(T2) 1 Offset 16 Decorate 80 Binding 1 Decorate 80 DescriptorSet 0 Decorate 98(color) Location 1 Decorate 100(c) Location 7 Decorate 108(iout) Flat Decorate 108(iout) Location 2 Decorate 114(uiuin) Location 0 Decorate 120(aiv2) Location 9 Decorate 128(s) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(pos): 8(ptr) Variable Output 10: TypePointer Input 7(fvec4) 11(p): 10(ptr) Variable Input 13: TypeMatrix 7(fvec4) 4 14: TypeVector 6(float) 3 15: TypeMatrix 14(fvec3) 3 16: TypeInt 32 1 17(Transform): TypeStruct 13 13 15 16(int) 18: TypePointer Uniform 17(Transform) 19(tblock): 18(ptr) Variable Uniform 20: 16(int) Constant 0 21: TypePointer Uniform 13 24: 16(int) Constant 1 40: TypeMatrix 14(fvec3) 2 41: TypeInt 32 0 42: TypeVector 41(int) 3 43: 41(int) Constant 4 44: TypeArray 42(ivec3) 43 45(T3): TypeStruct 13 13 40 44 46: TypePointer Uniform 45(T3) 47: 46(ptr) Variable Uniform 78(T2): TypeStruct 41(int) 13 79: TypePointer Uniform 78(T2) 80: 79(ptr) Variable Uniform 97: TypePointer Output 14(fvec3) 98(color): 97(ptr) Variable Output 99: TypePointer Input 14(fvec3) 100(c): 99(ptr) Variable Input 102: 16(int) Constant 2 103: TypePointer Uniform 15 107: TypePointer Output 16(int) 108(iout): 107(ptr) Variable Output 109: 16(int) Constant 3 110: TypePointer Uniform 16(int) 113: TypePointer Input 41(int) 114(uiuin): 113(ptr) Variable Input 118: TypeVector 16(int) 2 119: TypePointer Input 118(ivec2) 120(aiv2): 119(ptr) Variable Input 121: 41(int) Constant 1 122: TypePointer Input 16(int) 126(S): TypeStruct 14(fvec3) 6(float) 127: TypePointer Output 126(S) 128(s): 127(ptr) Variable Output 131: 41(int) Constant 0 132: TypePointer Input 6(float) 135: TypePointer Output 6(float) 137: TypeBool 138: TypePointer Uniform 14(fvec3) 141: 6(float) Constant 1065353216 142: 14(fvec3) ConstantComposite 141 141 141 143: TypeVector 137(bool) 3 149: TypePointer Uniform 42(ivec3) 152: 41(int) Constant 5 153: 42(ivec3) ConstantComposite 152 152 152 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(p) 22: 21(ptr) AccessChain 19(tblock) 20 23: 13 Load 22 25: 21(ptr) AccessChain 19(tblock) 24 26: 13 Load 25 27: 7(fvec4) CompositeExtract 23 0 28: 7(fvec4) CompositeExtract 26 0 29: 7(fvec4) FAdd 27 28 30: 7(fvec4) CompositeExtract 23 1 31: 7(fvec4) CompositeExtract 26 1 32: 7(fvec4) FAdd 30 31 33: 7(fvec4) CompositeExtract 23 2 34: 7(fvec4) CompositeExtract 26 2 35: 7(fvec4) FAdd 33 34 36: 7(fvec4) CompositeExtract 23 3 37: 7(fvec4) CompositeExtract 26 3 38: 7(fvec4) FAdd 36 37 39: 13 CompositeConstruct 29 32 35 38 48: 21(ptr) AccessChain 47 24 49: 13 Load 48 50: 7(fvec4) CompositeExtract 39 0 51: 7(fvec4) CompositeExtract 49 0 52: 7(fvec4) FAdd 50 51 53: 7(fvec4) CompositeExtract 39 1 54: 7(fvec4) CompositeExtract 49 1 55: 7(fvec4) FAdd 53 54 56: 7(fvec4) CompositeExtract 39 2 57: 7(fvec4) CompositeExtract 49 2 58: 7(fvec4) FAdd 56 57 59: 7(fvec4) CompositeExtract 39 3 60: 7(fvec4) CompositeExtract 49 3 61: 7(fvec4) FAdd 59 60 62: 13 CompositeConstruct 52 55 58 61 63: 21(ptr) AccessChain 47 20 64: 13 Load 63 65: 7(fvec4) CompositeExtract 62 0 66: 7(fvec4) CompositeExtract 64 0 67: 7(fvec4) FAdd 65 66 68: 7(fvec4) CompositeExtract 62 1 69: 7(fvec4) CompositeExtract 64 1 70: 7(fvec4) FAdd 68 69 71: 7(fvec4) CompositeExtract 62 2 72: 7(fvec4) CompositeExtract 64 2 73: 7(fvec4) FAdd 71 72 74: 7(fvec4) CompositeExtract 62 3 75: 7(fvec4) CompositeExtract 64 3 76: 7(fvec4) FAdd 74 75 77: 13 CompositeConstruct 67 70 73 76 81: 21(ptr) AccessChain 80 24 82: 13 Load 81 83: 7(fvec4) CompositeExtract 77 0 84: 7(fvec4) CompositeExtract 82 0 85: 7(fvec4) FAdd 83 84 86: 7(fvec4) CompositeExtract 77 1 87: 7(fvec4) CompositeExtract 82 1 88: 7(fvec4) FAdd 86 87 89: 7(fvec4) CompositeExtract 77 2 90: 7(fvec4) CompositeExtract 82 2 91: 7(fvec4) FAdd 89 90 92: 7(fvec4) CompositeExtract 77 3 93: 7(fvec4) CompositeExtract 82 3 94: 7(fvec4) FAdd 92 93 95: 13 CompositeConstruct 85 88 91 94 96: 7(fvec4) VectorTimesMatrix 12 95 Store 9(pos) 96 101: 14(fvec3) Load 100(c) 104: 103(ptr) AccessChain 19(tblock) 102 105: 15 Load 104 106: 14(fvec3) VectorTimesMatrix 101 105 Store 98(color) 106 111: 110(ptr) AccessChain 19(tblock) 109 112: 16(int) Load 111 115: 41(int) Load 114(uiuin) 116: 16(int) Bitcast 115 117: 16(int) IAdd 112 116 123: 122(ptr) AccessChain 120(aiv2) 121 124: 16(int) Load 123 125: 16(int) IAdd 117 124 Store 108(iout) 125 129: 14(fvec3) Load 100(c) 130: 97(ptr) AccessChain 128(s) 20 Store 130 129 133: 132(ptr) AccessChain 11(p) 131 134: 6(float) Load 133 136: 135(ptr) AccessChain 128(s) 24 Store 136 134 139: 138(ptr) AccessChain 47 102 24 140: 14(fvec3) Load 139 144: 143(bvec3) FUnordNotEqual 140 142 145: 137(bool) Any 144 146: 137(bool) LogicalNot 145 SelectionMerge 148 None BranchConditional 146 147 148 147: Label 150: 149(ptr) AccessChain 47 109 102 151: 42(ivec3) Load 150 154: 143(bvec3) INotEqual 151 153 155: 137(bool) Any 154 Branch 148 148: Label 156: 137(bool) Phi 145 5 155 147 SelectionMerge 158 None BranchConditional 156 157 158 157: Label 159: 97(ptr) AccessChain 128(s) 20 160: 14(fvec3) Load 159 161: 14(fvec3) CompositeConstruct 141 141 141 162: 14(fvec3) FAdd 160 161 Store 159 162 Branch 158 158: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.300layoutp.vert.out000066400000000000000000000245431506534232700227160ustar00rootroot00000000000000spv.300layoutp.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 115 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 11 50 52 60 72 80 Source ESSL 310 Name 4 "main" Name 9 "pos" Name 11 "p" Name 17 "Transform" MemberName 17(Transform) 0 "M1" MemberName 17(Transform) 1 "M2" MemberName 17(Transform) 2 "N1" MemberName 17(Transform) 3 "iuin" Name 19 "tblock" Name 33 "T3" MemberName 33(T3) 0 "M3" MemberName 33(T3) 1 "M4" MemberName 33(T3) 2 "N2" MemberName 33(T3) 3 "uv3a" Name 35 "" Name 42 "T2" MemberName 42(T2) 0 "b" MemberName 42(T2) 1 "t2m" Name 44 "" Name 50 "color" Name 52 "c" Name 60 "iout" Name 66 "uiuin" Name 72 "aiv2" Name 78 "S" MemberName 78(S) 0 "c" MemberName 78(S) 1 "f" Name 80 "s" Decorate 9(pos) Location 0 Decorate 11(p) Location 3 Decorate 17(Transform) Block MemberDecorate 17(Transform) 0 RowMajor MemberDecorate 17(Transform) 0 MatrixStride 16 MemberDecorate 17(Transform) 0 Offset 0 MemberDecorate 17(Transform) 1 ColMajor MemberDecorate 17(Transform) 1 MatrixStride 16 MemberDecorate 17(Transform) 1 Offset 64 MemberDecorate 17(Transform) 2 RowMajor MemberDecorate 17(Transform) 2 MatrixStride 16 MemberDecorate 17(Transform) 2 Offset 128 MemberDecorate 17(Transform) 3 Offset 176 Decorate 19(tblock) Binding 0 Decorate 19(tblock) DescriptorSet 0 Decorate 32 ArrayStride 16 Decorate 33(T3) Block MemberDecorate 33(T3) 0 ColMajor MemberDecorate 33(T3) 0 MatrixStride 16 MemberDecorate 33(T3) 0 Offset 0 MemberDecorate 33(T3) 1 RowMajor MemberDecorate 33(T3) 1 MatrixStride 16 MemberDecorate 33(T3) 1 Offset 64 MemberDecorate 33(T3) 2 ColMajor MemberDecorate 33(T3) 2 MatrixStride 16 MemberDecorate 33(T3) 2 Offset 128 MemberDecorate 33(T3) 3 Offset 160 Decorate 35 Binding 2 Decorate 35 DescriptorSet 0 Decorate 42(T2) Block MemberDecorate 42(T2) 0 Offset 0 MemberDecorate 42(T2) 1 RowMajor MemberDecorate 42(T2) 1 MatrixStride 16 MemberDecorate 42(T2) 1 Offset 16 Decorate 44 Binding 1 Decorate 44 DescriptorSet 0 Decorate 50(color) Location 1 Decorate 52(c) Location 7 Decorate 60(iout) Flat Decorate 60(iout) Location 2 Decorate 72(aiv2) Location 9 Decorate 80(s) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(pos): 8(ptr) Variable Output 10: TypePointer Input 7(fvec4) 11(p): 10(ptr) Variable Input 13: TypeMatrix 7(fvec4) 4 14: TypeVector 6(float) 3 15: TypeMatrix 14(fvec3) 3 16: TypeInt 32 1 17(Transform): TypeStruct 13 13 15 16(int) 18: TypePointer Uniform 17(Transform) 19(tblock): 18(ptr) Variable Uniform 20: 16(int) Constant 0 21: TypePointer Uniform 13 24: 16(int) Constant 1 28: TypeMatrix 14(fvec3) 2 29: TypeInt 32 0 30: TypeVector 29(int) 3 31: 29(int) Constant 4 32: TypeArray 30(ivec3) 31 33(T3): TypeStruct 13 13 28 32 34: TypePointer Uniform 33(T3) 35: 34(ptr) Variable Uniform 42(T2): TypeStruct 29(int) 13 43: TypePointer Uniform 42(T2) 44: 43(ptr) Variable Uniform 49: TypePointer Output 14(fvec3) 50(color): 49(ptr) Variable Output 51: TypePointer Input 14(fvec3) 52(c): 51(ptr) Variable Input 54: 16(int) Constant 2 55: TypePointer Uniform 15 59: TypePointer Output 16(int) 60(iout): 59(ptr) Variable Output 61: 16(int) Constant 3 62: TypePointer Uniform 16(int) 65: TypePointer Private 29(int) 66(uiuin): 65(ptr) Variable Private 70: TypeVector 16(int) 2 71: TypePointer Input 70(ivec2) 72(aiv2): 71(ptr) Variable Input 73: 29(int) Constant 1 74: TypePointer Input 16(int) 78(S): TypeStruct 14(fvec3) 6(float) 79: TypePointer Output 78(S) 80(s): 79(ptr) Variable Output 83: 29(int) Constant 0 84: TypePointer Input 6(float) 87: TypePointer Output 6(float) 89: TypeBool 90: TypePointer Uniform 14(fvec3) 93: 6(float) Constant 1065353216 94: 14(fvec3) ConstantComposite 93 93 93 95: TypeVector 89(bool) 3 101: TypePointer Uniform 30(ivec3) 104: 29(int) Constant 5 105: 30(ivec3) ConstantComposite 104 104 104 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(p) 22: 21(ptr) AccessChain 19(tblock) 20 23: 13 Load 22 25: 21(ptr) AccessChain 19(tblock) 24 26: 13 Load 25 27: 13 MatrixTimesMatrix 23 26 36: 21(ptr) AccessChain 35 24 37: 13 Load 36 38: 13 MatrixTimesMatrix 27 37 39: 21(ptr) AccessChain 35 20 40: 13 Load 39 41: 13 MatrixTimesMatrix 38 40 45: 21(ptr) AccessChain 44 24 46: 13 Load 45 47: 13 MatrixTimesMatrix 41 46 48: 7(fvec4) VectorTimesMatrix 12 47 Store 9(pos) 48 53: 14(fvec3) Load 52(c) 56: 55(ptr) AccessChain 19(tblock) 54 57: 15 Load 56 58: 14(fvec3) VectorTimesMatrix 53 57 Store 50(color) 58 63: 62(ptr) AccessChain 19(tblock) 61 64: 16(int) Load 63 67: 29(int) Load 66(uiuin) 68: 16(int) Bitcast 67 69: 16(int) IAdd 64 68 75: 74(ptr) AccessChain 72(aiv2) 73 76: 16(int) Load 75 77: 16(int) IAdd 69 76 Store 60(iout) 77 81: 14(fvec3) Load 52(c) 82: 49(ptr) AccessChain 80(s) 20 Store 82 81 85: 84(ptr) AccessChain 11(p) 83 86: 6(float) Load 85 88: 87(ptr) AccessChain 80(s) 24 Store 88 86 91: 90(ptr) AccessChain 35 54 24 92: 14(fvec3) Load 91 96: 95(bvec3) FUnordNotEqual 92 94 97: 89(bool) Any 96 98: 89(bool) LogicalNot 97 SelectionMerge 100 None BranchConditional 98 99 100 99: Label 102: 101(ptr) AccessChain 35 61 54 103: 30(ivec3) Load 102 106: 95(bvec3) INotEqual 103 105 107: 89(bool) Any 106 Branch 100 100: Label 108: 89(bool) Phi 97 5 107 99 SelectionMerge 110 None BranchConditional 108 109 110 109: Label 111: 49(ptr) AccessChain 80(s) 20 112: 14(fvec3) Load 111 113: 14(fvec3) CompositeConstruct 93 93 93 114: 14(fvec3) FAdd 112 113 Store 111 114 Branch 110 110: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.310.bitcast.frag.out000066400000000000000000000325561506534232700226730ustar00rootroot00000000000000spv.310.bitcast.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 179 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 14 26 40 56 103 112 123 136 142 150 161 174 ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 9 "idata" Name 14 "f1" Name 26 "f2" Name 40 "f3" Name 56 "f4" Name 63 "udata" Name 99 "fdata" Name 103 "i1" Name 112 "i2" Name 123 "i3" Name 136 "i4" Name 142 "u1" Name 150 "u2" Name 161 "u3" Name 174 "u4" Decorate 14(f1) RelaxedPrecision Decorate 14(f1) Location 8 Decorate 15 RelaxedPrecision Decorate 26(f2) RelaxedPrecision Decorate 26(f2) Location 9 Decorate 27 RelaxedPrecision Decorate 40(f3) RelaxedPrecision Decorate 40(f3) Location 10 Decorate 41 RelaxedPrecision Decorate 56(f4) Location 11 Decorate 65 RelaxedPrecision Decorate 72 RelaxedPrecision Decorate 82 RelaxedPrecision Decorate 103(i1) RelaxedPrecision Decorate 103(i1) Flat Decorate 103(i1) Location 0 Decorate 104 RelaxedPrecision Decorate 112(i2) RelaxedPrecision Decorate 112(i2) Flat Decorate 112(i2) Location 1 Decorate 113 RelaxedPrecision Decorate 123(i3) RelaxedPrecision Decorate 123(i3) Flat Decorate 123(i3) Location 2 Decorate 124 RelaxedPrecision Decorate 136(i4) Flat Decorate 136(i4) Location 3 Decorate 142(u1) RelaxedPrecision Decorate 142(u1) Flat Decorate 142(u1) Location 4 Decorate 143 RelaxedPrecision Decorate 150(u2) RelaxedPrecision Decorate 150(u2) Flat Decorate 150(u2) Location 5 Decorate 151 RelaxedPrecision Decorate 161(u3) RelaxedPrecision Decorate 161(u3) Flat Decorate 161(u3) Location 6 Decorate 162 RelaxedPrecision Decorate 174(u4) Flat Decorate 174(u4) Location 7 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 4 8: TypePointer Function 7(ivec4) 10: 6(int) Constant 0 11: 7(ivec4) ConstantComposite 10 10 10 10 12: TypeFloat 32 13: TypePointer Input 12(float) 14(f1): 13(ptr) Variable Input 17: TypeInt 32 0 18: 17(int) Constant 0 19: TypePointer Function 6(int) 24: TypeVector 12(float) 2 25: TypePointer Input 24(fvec2) 26(f2): 25(ptr) Variable Input 28: TypeVector 6(int) 2 35: 17(int) Constant 1 38: TypeVector 12(float) 3 39: TypePointer Input 38(fvec3) 40(f3): 39(ptr) Variable Input 42: TypeVector 6(int) 3 51: 17(int) Constant 2 54: TypeVector 12(float) 4 55: TypePointer Input 54(fvec4) 56(f4): 55(ptr) Variable Input 61: TypeVector 17(int) 4 62: TypePointer Function 61(ivec4) 64: 61(ivec4) ConstantComposite 18 18 18 18 67: TypePointer Function 17(int) 73: TypeVector 17(int) 2 83: TypeVector 17(int) 3 98: TypePointer Function 54(fvec4) 100: 12(float) Constant 0 101: 54(fvec4) ConstantComposite 100 100 100 100 102: TypePointer Input 6(int) 103(i1): 102(ptr) Variable Input 106: TypePointer Function 12(float) 111: TypePointer Input 28(ivec2) 112(i2): 111(ptr) Variable Input 122: TypePointer Input 42(ivec3) 123(i3): 122(ptr) Variable Input 135: TypePointer Input 7(ivec4) 136(i4): 135(ptr) Variable Input 141: TypePointer Input 17(int) 142(u1): 141(ptr) Variable Input 149: TypePointer Input 73(ivec2) 150(u2): 149(ptr) Variable Input 160: TypePointer Input 83(ivec3) 161(u3): 160(ptr) Variable Input 173: TypePointer Input 61(ivec4) 174(u4): 173(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(idata): 8(ptr) Variable Function 63(udata): 62(ptr) Variable Function 99(fdata): 98(ptr) Variable Function Store 9(idata) 11 15: 12(float) Load 14(f1) 16: 6(int) Bitcast 15 20: 19(ptr) AccessChain 9(idata) 18 21: 6(int) Load 20 22: 6(int) IAdd 21 16 23: 19(ptr) AccessChain 9(idata) 18 Store 23 22 27: 24(fvec2) Load 26(f2) 29: 28(ivec2) Bitcast 27 30: 7(ivec4) Load 9(idata) 31: 28(ivec2) VectorShuffle 30 30 0 1 32: 28(ivec2) IAdd 31 29 33: 19(ptr) AccessChain 9(idata) 18 34: 6(int) CompositeExtract 32 0 Store 33 34 36: 19(ptr) AccessChain 9(idata) 35 37: 6(int) CompositeExtract 32 1 Store 36 37 41: 38(fvec3) Load 40(f3) 43: 42(ivec3) Bitcast 41 44: 7(ivec4) Load 9(idata) 45: 42(ivec3) VectorShuffle 44 44 0 1 2 46: 42(ivec3) IAdd 45 43 47: 19(ptr) AccessChain 9(idata) 18 48: 6(int) CompositeExtract 46 0 Store 47 48 49: 19(ptr) AccessChain 9(idata) 35 50: 6(int) CompositeExtract 46 1 Store 49 50 52: 19(ptr) AccessChain 9(idata) 51 53: 6(int) CompositeExtract 46 2 Store 52 53 57: 54(fvec4) Load 56(f4) 58: 7(ivec4) Bitcast 57 59: 7(ivec4) Load 9(idata) 60: 7(ivec4) IAdd 59 58 Store 9(idata) 60 Store 63(udata) 64 65: 12(float) Load 14(f1) 66: 17(int) Bitcast 65 68: 67(ptr) AccessChain 63(udata) 18 69: 17(int) Load 68 70: 17(int) IAdd 69 66 71: 67(ptr) AccessChain 63(udata) 18 Store 71 70 72: 24(fvec2) Load 26(f2) 74: 73(ivec2) Bitcast 72 75: 61(ivec4) Load 63(udata) 76: 73(ivec2) VectorShuffle 75 75 0 1 77: 73(ivec2) IAdd 76 74 78: 67(ptr) AccessChain 63(udata) 18 79: 17(int) CompositeExtract 77 0 Store 78 79 80: 67(ptr) AccessChain 63(udata) 35 81: 17(int) CompositeExtract 77 1 Store 80 81 82: 38(fvec3) Load 40(f3) 84: 83(ivec3) Bitcast 82 85: 61(ivec4) Load 63(udata) 86: 83(ivec3) VectorShuffle 85 85 0 1 2 87: 83(ivec3) IAdd 86 84 88: 67(ptr) AccessChain 63(udata) 18 89: 17(int) CompositeExtract 87 0 Store 88 89 90: 67(ptr) AccessChain 63(udata) 35 91: 17(int) CompositeExtract 87 1 Store 90 91 92: 67(ptr) AccessChain 63(udata) 51 93: 17(int) CompositeExtract 87 2 Store 92 93 94: 54(fvec4) Load 56(f4) 95: 61(ivec4) Bitcast 94 96: 61(ivec4) Load 63(udata) 97: 61(ivec4) IAdd 96 95 Store 63(udata) 97 Store 99(fdata) 101 104: 6(int) Load 103(i1) 105: 12(float) Bitcast 104 107: 106(ptr) AccessChain 99(fdata) 18 108: 12(float) Load 107 109: 12(float) FAdd 108 105 110: 106(ptr) AccessChain 99(fdata) 18 Store 110 109 113: 28(ivec2) Load 112(i2) 114: 24(fvec2) Bitcast 113 115: 54(fvec4) Load 99(fdata) 116: 24(fvec2) VectorShuffle 115 115 0 1 117: 24(fvec2) FAdd 116 114 118: 106(ptr) AccessChain 99(fdata) 18 119: 12(float) CompositeExtract 117 0 Store 118 119 120: 106(ptr) AccessChain 99(fdata) 35 121: 12(float) CompositeExtract 117 1 Store 120 121 124: 42(ivec3) Load 123(i3) 125: 38(fvec3) Bitcast 124 126: 54(fvec4) Load 99(fdata) 127: 38(fvec3) VectorShuffle 126 126 0 1 2 128: 38(fvec3) FAdd 127 125 129: 106(ptr) AccessChain 99(fdata) 18 130: 12(float) CompositeExtract 128 0 Store 129 130 131: 106(ptr) AccessChain 99(fdata) 35 132: 12(float) CompositeExtract 128 1 Store 131 132 133: 106(ptr) AccessChain 99(fdata) 51 134: 12(float) CompositeExtract 128 2 Store 133 134 137: 7(ivec4) Load 136(i4) 138: 54(fvec4) Bitcast 137 139: 54(fvec4) Load 99(fdata) 140: 54(fvec4) FAdd 139 138 Store 99(fdata) 140 143: 17(int) Load 142(u1) 144: 12(float) Bitcast 143 145: 106(ptr) AccessChain 99(fdata) 18 146: 12(float) Load 145 147: 12(float) FAdd 146 144 148: 106(ptr) AccessChain 99(fdata) 18 Store 148 147 151: 73(ivec2) Load 150(u2) 152: 24(fvec2) Bitcast 151 153: 54(fvec4) Load 99(fdata) 154: 24(fvec2) VectorShuffle 153 153 0 1 155: 24(fvec2) FAdd 154 152 156: 106(ptr) AccessChain 99(fdata) 18 157: 12(float) CompositeExtract 155 0 Store 156 157 158: 106(ptr) AccessChain 99(fdata) 35 159: 12(float) CompositeExtract 155 1 Store 158 159 162: 83(ivec3) Load 161(u3) 163: 38(fvec3) Bitcast 162 164: 54(fvec4) Load 99(fdata) 165: 38(fvec3) VectorShuffle 164 164 0 1 2 166: 38(fvec3) FAdd 165 163 167: 106(ptr) AccessChain 99(fdata) 18 168: 12(float) CompositeExtract 166 0 Store 167 168 169: 106(ptr) AccessChain 99(fdata) 35 170: 12(float) CompositeExtract 166 1 Store 169 170 171: 106(ptr) AccessChain 99(fdata) 51 172: 12(float) CompositeExtract 166 2 Store 171 172 175: 61(ivec4) Load 174(u4) 176: 54(fvec4) Bitcast 175 177: 54(fvec4) Load 99(fdata) 178: 54(fvec4) FAdd 177 176 Store 99(fdata) 178 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.310.comp.out000066400000000000000000000157641506534232700212640ustar00rootroot00000000000000spv.310.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability DeviceGroup Extension "SPV_KHR_device_group" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 53 65 ExecutionMode 4 LocalSize 16 32 4 Source ESSL 310 SourceExtension "GL_EXT_device_group" Name 4 "main" Name 12 "outb" MemberName 12(outb) 0 "f" MemberName 12(outb) 1 "g" MemberName 12(outb) 2 "h" MemberName 12(outb) 3 "uns" Name 14 "outbname" Name 18 "s" Name 23 "outbna" MemberName 23(outbna) 0 "k" MemberName 23(outbna) 1 "na" Name 25 "outbnamena" Name 42 "i" Name 48 "outs" MemberName 48(outs) 0 "s" MemberName 48(outs) 1 "va" Name 50 "outnames" Name 53 "gl_LocalInvocationID" Name 65 "gl_DeviceIndex" Decorate 11 ArrayStride 16 Decorate 12(outb) BufferBlock MemberDecorate 12(outb) 0 Offset 0 MemberDecorate 12(outb) 1 Offset 4 MemberDecorate 12(outb) 2 Offset 8 MemberDecorate 12(outb) 3 Offset 16 Decorate 14(outbname) Binding 0 Decorate 14(outbname) DescriptorSet 0 Decorate 23(outbna) BufferBlock MemberDecorate 23(outbna) 0 Offset 0 MemberDecorate 23(outbna) 1 Offset 16 Decorate 25(outbnamena) Binding 1 Decorate 25(outbnamena) DescriptorSet 0 Decorate 47 ArrayStride 16 Decorate 48(outs) BufferBlock MemberDecorate 48(outs) 0 Offset 0 MemberDecorate 48(outs) 1 Offset 16 Decorate 50(outnames) Binding 2 Decorate 50(outnames) DescriptorSet 0 Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 65(gl_DeviceIndex) BuiltIn DeviceIndex Decorate 71 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 2 8: 6(int) Constant 264 9: TypeFloat 32 10: TypeVector 9(float) 3 11: TypeRuntimeArray 10(fvec3) 12(outb): TypeStruct 9(float) 9(float) 9(float) 11 13: TypePointer Uniform 12(outb) 14(outbname): 13(ptr) Variable Uniform 15: TypeInt 32 1 16: 15(int) Constant 0 17: TypePointer Workgroup 9(float) 18(s): 17(ptr) Variable Workgroup 20: TypePointer Uniform 9(float) 22: TypeVector 9(float) 4 23(outbna): TypeStruct 15(int) 22(fvec4) 24: TypePointer Uniform 23(outbna) 25(outbnamena): 24(ptr) Variable Uniform 26: 15(int) Constant 1 29: TypePointer Uniform 22(fvec4) 31: 15(int) Constant 3 32: 15(int) Constant 18 33: 6(int) Constant 0 36: 15(int) Constant 17 37: 9(float) Constant 1077936128 38: 10(fvec3) ConstantComposite 37 37 37 39: TypePointer Uniform 10(fvec3) 41: TypePointer Workgroup 15(int) 42(i): 41(ptr) Variable Workgroup 47: TypeRuntimeArray 22(fvec4) 48(outs): TypeStruct 15(int) 47 49: TypePointer Uniform 48(outs) 50(outnames): 49(ptr) Variable Uniform 51: TypeVector 6(int) 3 52: TypePointer Input 51(ivec3) 53(gl_LocalInvocationID): 52(ptr) Variable Input 54: TypePointer Input 6(int) 62: TypePointer Uniform 15(int) 64: TypePointer Input 15(int) 65(gl_DeviceIndex): 64(ptr) Variable Input 66: 6(int) Constant 1 67: 6(int) Constant 3400 68: 6(int) Constant 16 69: 6(int) Constant 32 70: 6(int) Constant 4 71: 51(ivec3) ConstantComposite 68 69 70 4(main): 2 Function None 3 5: Label ControlBarrier 7 7 8 19: 9(float) Load 18(s) 21: 20(ptr) AccessChain 14(outbname) 16 Store 21 19 27: 9(float) Load 18(s) 28: 22(fvec4) CompositeConstruct 27 27 27 27 30: 29(ptr) AccessChain 25(outbnamena) 26 Store 30 28 34: 20(ptr) AccessChain 14(outbname) 31 32 33 35: 9(float) Load 34 Store 18(s) 35 40: 39(ptr) AccessChain 14(outbname) 31 36 Store 40 38 43: 15(int) Load 42(i) 44: 9(float) Load 18(s) 45: 10(fvec3) CompositeConstruct 44 44 44 46: 39(ptr) AccessChain 14(outbname) 31 43 Store 46 45 55: 54(ptr) AccessChain 53(gl_LocalInvocationID) 33 56: 6(int) Load 55 57: 9(float) Load 18(s) 58: 22(fvec4) CompositeConstruct 57 57 57 57 59: 29(ptr) AccessChain 50(outnames) 26 56 Store 59 58 60: 6(int) ArrayLength 14(outbname) 3 61: 15(int) Bitcast 60 63: 62(ptr) AccessChain 50(outnames) 16 Store 63 61 MemoryBarrier 66 8 MemoryBarrier 7 67 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out000066400000000000000000000245011506534232700254500ustar00rootroot00000000000000spv.320.meshShaderUserDefined.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 143 Capability MeshShadingNV Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 12 19 37 106 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source ESSL 320 SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 8 "iid" Name 12 "gl_LocalInvocationID" Name 18 "gid" Name 19 "gl_WorkGroupID" Name 33 "myblock" MemberName 33(myblock) 0 "f" MemberName 33(myblock) 1 "fArr" MemberName 33(myblock) 2 "pos" MemberName 33(myblock) 3 "posArr" MemberName 33(myblock) 4 "m" MemberName 33(myblock) 5 "mArr" Name 37 "blk" Name 102 "myblock2" MemberName 102(myblock2) 0 "f" MemberName 102(myblock2) 1 "pos" MemberName 102(myblock2) 2 "m" Name 106 "blk2" Decorate 12(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 33(myblock) Block MemberDecorate 33(myblock) 0 PerPrimitiveNV MemberDecorate 33(myblock) 1 PerPrimitiveNV MemberDecorate 33(myblock) 2 PerPrimitiveNV MemberDecorate 33(myblock) 3 PerPrimitiveNV MemberDecorate 33(myblock) 4 PerPrimitiveNV MemberDecorate 33(myblock) 5 PerPrimitiveNV Decorate 37(blk) Location 0 Decorate 102(myblock2) Block Decorate 106(blk2) Location 20 Decorate 142 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypeInt 32 0 10: TypeVector 9(int) 3 11: TypePointer Input 10(ivec3) 12(gl_LocalInvocationID): 11(ptr) Variable Input 13: 9(int) Constant 0 14: TypePointer Input 9(int) 19(gl_WorkGroupID): 11(ptr) Variable Input 23: TypeFloat 32 24: 9(int) Constant 4 25: TypeArray 23(float) 24 26: TypeVector 23(float) 3 27: TypeVector 23(float) 4 28: TypeArray 27(fvec4) 24 29: TypeMatrix 27(fvec4) 4 30: TypeMatrix 26(fvec3) 3 31: 9(int) Constant 2 32: TypeArray 30 31 33(myblock): TypeStruct 23(float) 25 26(fvec3) 28 29 32 34: 9(int) Constant 32 35: TypeArray 33(myblock) 34 36: TypePointer Output 35 37(blk): 36(ptr) Variable Output 39: 6(int) Constant 0 40: 23(float) Constant 1093664768 41: TypePointer Output 23(float) 44: 6(int) Constant 1 52: 6(int) Constant 2 54: 23(float) Constant 1096810496 55: 23(float) Constant 1097859072 56: 23(float) Constant 1095761920 57: 26(fvec3) ConstantComposite 54 55 56 58: TypePointer Output 26(fvec3) 64: 6(int) Constant 3 69: 9(int) Constant 1 74: 9(int) Constant 3 78: 6(int) Constant 4 80: 23(float) Constant 1098907648 81: 27(fvec4) ConstantComposite 56 54 55 80 82: TypePointer Output 27(fvec4) 87: 6(int) Constant 5 96: 23(float) Constant 1099431936 97: 23(float) Constant 1099956224 98: 23(float) Constant 1100480512 99: 26(fvec3) ConstantComposite 96 97 98 101: 9(int) Constant 264 102(myblock2): TypeStruct 23(float) 27(fvec4) 29 103: 9(int) Constant 81 104: TypeArray 102(myblock2) 103 105: TypePointer Output 104 106(blk2): 105(ptr) Variable Output 112: 23(float) Constant 1101004800 116: 23(float) Constant 1101529088 117: 23(float) Constant 1102053376 118: 23(float) Constant 1102577664 119: 23(float) Constant 1103101952 120: 27(fvec4) ConstantComposite 116 117 118 119 132: 23(float) Constant 1105723392 142: 10(ivec3) ConstantComposite 34 69 69 4(main): 2 Function None 3 5: Label 8(iid): 7(ptr) Variable Function 18(gid): 7(ptr) Variable Function 15: 14(ptr) AccessChain 12(gl_LocalInvocationID) 13 16: 9(int) Load 15 17: 6(int) Bitcast 16 Store 8(iid) 17 20: 14(ptr) AccessChain 19(gl_WorkGroupID) 13 21: 9(int) Load 20 22: 6(int) Bitcast 21 Store 18(gid) 22 38: 6(int) Load 8(iid) 42: 41(ptr) AccessChain 37(blk) 38 39 Store 42 40 43: 6(int) Load 8(iid) 45: 6(int) IAdd 43 44 46: 6(int) Load 18(gid) 47: 6(int) Load 8(iid) 48: 41(ptr) AccessChain 37(blk) 47 39 49: 23(float) Load 48 50: 41(ptr) AccessChain 37(blk) 45 44 46 Store 50 49 51: 6(int) Load 8(iid) 53: 6(int) SDiv 51 52 59: 58(ptr) AccessChain 37(blk) 53 52 60: 26(fvec3) Load 59 61: 26(fvec3) VectorShuffle 60 57 5 3 4 Store 59 61 62: 6(int) Load 8(iid) 63: 6(int) IMul 62 52 65: 6(int) Load 8(iid) 66: 6(int) SDiv 65 52 67: 58(ptr) AccessChain 37(blk) 66 52 68: 26(fvec3) Load 67 70: 41(ptr) AccessChain 37(blk) 63 64 44 69 71: 23(float) CompositeExtract 68 0 Store 70 71 72: 41(ptr) AccessChain 37(blk) 63 64 44 31 73: 23(float) CompositeExtract 68 1 Store 72 73 75: 41(ptr) AccessChain 37(blk) 63 64 44 74 76: 23(float) CompositeExtract 68 2 Store 75 76 77: 6(int) Load 8(iid) 79: 6(int) SDiv 77 78 83: 82(ptr) AccessChain 37(blk) 79 78 52 84: 27(fvec4) Load 83 85: 27(fvec4) VectorShuffle 84 81 7 6 5 4 Store 83 85 86: 6(int) Load 8(iid) 88: 6(int) Load 8(iid) 89: 6(int) SDiv 88 78 90: 41(ptr) AccessChain 37(blk) 89 78 52 74 91: 23(float) Load 90 92: 41(ptr) AccessChain 37(blk) 86 87 39 44 69 Store 92 91 93: 6(int) Load 8(iid) 94: 6(int) IMul 93 78 95: 6(int) Load 18(gid) 100: 58(ptr) AccessChain 37(blk) 94 87 44 95 Store 100 99 MemoryBarrier 69 101 ControlBarrier 31 31 101 107: 6(int) Load 8(iid) 108: 6(int) Load 8(iid) 109: 6(int) ISub 108 44 110: 41(ptr) AccessChain 106(blk2) 109 39 111: 23(float) Load 110 113: 23(float) FAdd 111 112 114: 41(ptr) AccessChain 106(blk2) 107 39 Store 114 113 115: 6(int) Load 8(iid) 121: 82(ptr) AccessChain 106(blk2) 115 44 Store 121 120 122: 6(int) Load 8(iid) 123: 6(int) IAdd 122 44 124: 6(int) Load 18(gid) 125: 6(int) Load 8(iid) 126: 82(ptr) AccessChain 106(blk2) 125 44 127: 27(fvec4) Load 126 128: 82(ptr) AccessChain 106(blk2) 123 52 124 Store 128 127 129: 6(int) Load 8(iid) 130: 6(int) IAdd 129 44 131: 6(int) Load 18(gid) 133: 41(ptr) AccessChain 106(blk2) 130 52 131 31 Store 133 132 134: 6(int) Load 8(iid) 135: 6(int) IAdd 134 52 136: 6(int) Load 8(iid) 137: 6(int) IAdd 136 44 138: 6(int) Load 18(gid) 139: 82(ptr) AccessChain 106(blk2) 137 52 138 140: 27(fvec4) Load 139 141: 82(ptr) AccessChain 106(blk2) 135 52 64 Store 141 140 MemoryBarrier 69 101 ControlBarrier 31 31 101 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.330.geom.out000066400000000000000000000066201506534232700212460ustar00rootroot00000000000000spv.330.geom // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 32 Capability Geometry Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 13 20 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Source GLSL 330 SourceExtension "GL_ARB_separate_shader_objects" Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_ClipDistance" Name 13 "" Name 16 "gl_PerVertex" MemberName 16(gl_PerVertex) 0 "gl_Position" MemberName 16(gl_PerVertex) 1 "gl_ClipDistance" Name 20 "gl_in" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn ClipDistance Decorate 16(gl_PerVertex) Block MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position MemberDecorate 16(gl_PerVertex) 1 BuiltIn ClipDistance 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16(gl_PerVertex): TypeStruct 7(fvec4) 10 17: 8(int) Constant 3 18: TypeArray 16(gl_PerVertex) 17 19: TypePointer Input 18 20(gl_in): 19(ptr) Variable Input 21: 14(int) Constant 1 22: TypePointer Input 7(fvec4) 25: TypePointer Output 7(fvec4) 27: TypePointer Input 6(float) 30: TypePointer Output 6(float) 4(main): 2 Function None 3 5: Label 23: 22(ptr) AccessChain 20(gl_in) 21 15 24: 7(fvec4) Load 23 26: 25(ptr) AccessChain 13 15 Store 26 24 28: 27(ptr) AccessChain 20(gl_in) 21 21 15 29: 6(float) Load 28 31: 30(ptr) AccessChain 13 21 15 Store 31 29 EmitVertex EndPrimitive Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.400.frag.nanclamp.out000066400000000000000000002157621506534232700230350ustar00rootroot00000000000000spv.400.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 1134 Capability Shader Capability Geometry Capability Float64 Capability ImageGatherExtended Capability ClipDistance Capability SampledRect 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 1039 1045 1050 1066 1092 1113 1115 1121 1123 1132 ExecutionMode 4 OriginUpperLeft Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" Name 4 "main" Name 6 "foo23(" Name 8 "doubles(" Name 13 "outp" Name 17 "u2drs" Name 41 "doublev" Name 45 "dvec2v" Name 50 "dvec3v" Name 55 "dvec4v" Name 242 "ResType" Name 249 "ResType" Name 256 "ResType" Name 263 "ResType" Name 442 "boolv" Name 451 "bvec2v" Name 460 "bvec3v" Name 469 "bvec4v" Name 751 "dmat2v" Name 757 "dmat3v" Name 763 "dmat4v" Name 769 "dmat2x3v" Name 775 "dmat3x2v" Name 781 "dmat2x4v" Name 787 "dmat4x2v" Name 793 "dmat3x4v" Name 799 "dmat4x3v" Name 1031 "v" Name 1037 "arrayedSampler" Name 1039 "i" Name 1045 "c2D" Name 1050 "gl_ClipDistance" Name 1066 "uoutp" Name 1070 "samp2dr" Name 1092 "ioutp" Name 1096 "isamp2DA" Name 1113 "gl_FragCoord" Name 1115 "vl2" Name 1121 "uo" Name 1123 "u" Name 1131 "id" Name 1132 "gl_PrimitiveID" Decorate 13(outp) Location 1 Decorate 17(u2drs) Binding 3 Decorate 17(u2drs) DescriptorSet 0 Decorate 1037(arrayedSampler) Binding 0 Decorate 1037(arrayedSampler) DescriptorSet 0 Decorate 1039(i) Flat Decorate 1039(i) Location 1 Decorate 1045(c2D) Location 0 Decorate 1050(gl_ClipDistance) BuiltIn ClipDistance Decorate 1066(uoutp) Location 3 Decorate 1070(samp2dr) Binding 1 Decorate 1070(samp2dr) DescriptorSet 0 Decorate 1092(ioutp) Location 2 Decorate 1096(isamp2DA) Binding 2 Decorate 1096(isamp2DA) DescriptorSet 0 Decorate 1113(gl_FragCoord) BuiltIn FragCoord Decorate 1115(vl2) Location 6 Decorate 1121(uo) Location 0 Decorate 1123(u) Flat Decorate 1123(u) Location 2 Decorate 1132(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 1132(gl_PrimitiveID) Flat 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Output 11(fvec4) 13(outp): 12(ptr) Variable Output 14: TypeImage 10(float) Rect depth sampled format:Unknown 15: TypeSampledImage 14 16: TypePointer UniformConstant 15 17(u2drs): 16(ptr) Variable UniformConstant 20: TypeVector 10(float) 2 21: 10(float) Constant 0 22: 20(fvec2) ConstantComposite 21 21 23: TypeInt 32 1 24: TypeVector 23(int) 2 25: 23(int) Constant 3 26: 23(int) Constant 4 27: 24(ivec2) ConstantComposite 25 26 32: TypeInt 32 0 33: 32(int) Constant 0 34: TypePointer Output 10(float) 39: TypeFloat 64 40: TypePointer Function 39(float64_t) 42:39(float64_t) Constant 2507418074 1073430332 43: TypeVector 39(float64_t) 2 44: TypePointer Function 43(f64vec2) 46:39(float64_t) Constant 796182188 1073367658 47: 43(f64vec2) ConstantComposite 46 46 48: TypeVector 39(float64_t) 3 49: TypePointer Function 48(f64vec3) 51:39(float64_t) Constant 1719614413 1073127582 52: 48(f64vec3) ConstantComposite 51 51 51 53: TypeVector 39(float64_t) 4 54: TypePointer Function 53(f64vec4) 242(ResType): TypeStruct 39(float64_t) 39(float64_t) 249(ResType): TypeStruct 43(f64vec2) 43(f64vec2) 256(ResType): TypeStruct 48(f64vec3) 48(f64vec3) 263(ResType): TypeStruct 53(f64vec4) 53(f64vec4) 440: TypeBool 441: TypePointer Function 440(bool) 449: TypeVector 440(bool) 2 450: TypePointer Function 449(bvec2) 458: TypeVector 440(bool) 3 459: TypePointer Function 458(bvec3) 467: TypeVector 440(bool) 4 468: TypePointer Function 467(bvec4) 575: 440(bool) ConstantFalse 584: 449(bvec2) ConstantComposite 575 575 593: 458(bvec3) ConstantComposite 575 575 575 602: 467(bvec4) ConstantComposite 575 575 575 575 749: TypeMatrix 43(f64vec2) 2 750: TypePointer Function 749 755: TypeMatrix 48(f64vec3) 3 756: TypePointer Function 755 761: TypeMatrix 53(f64vec4) 4 762: TypePointer Function 761 767: TypeMatrix 48(f64vec3) 2 768: TypePointer Function 767 773: TypeMatrix 43(f64vec2) 3 774: TypePointer Function 773 779: TypeMatrix 53(f64vec4) 2 780: TypePointer Function 779 785: TypeMatrix 43(f64vec2) 4 786: TypePointer Function 785 791: TypeMatrix 53(f64vec4) 3 792: TypePointer Function 791 797: TypeMatrix 48(f64vec3) 4 798: TypePointer Function 797 966: 32(int) Constant 1 970: 32(int) Constant 2 974: 32(int) Constant 3 978: 23(int) Constant 1 982: 23(int) Constant 2 1008: 10(float) Constant 1065353216 1030: TypePointer Function 11(fvec4) 1032: TypeImage 10(float) 2D sampled format:Unknown 1033: TypeSampledImage 1032 1034: 32(int) Constant 5 1035: TypeArray 1033 1034 1036: TypePointer UniformConstant 1035 1037(arrayedSampler): 1036(ptr) Variable UniformConstant 1038: TypePointer Input 23(int) 1039(i): 1038(ptr) Variable Input 1041: TypePointer UniformConstant 1033 1044: TypePointer Input 20(fvec2) 1045(c2D): 1044(ptr) Variable Input 1048: TypeArray 10(float) 970 1049: TypePointer Input 1048 1050(gl_ClipDistance): 1049(ptr) Variable Input 1051: TypePointer Input 10(float) 1055: TypeVector 10(float) 3 1064: TypeVector 32(int) 4 1065: TypePointer Output 1064(ivec4) 1066(uoutp): 1065(ptr) Variable Output 1067: TypeImage 32(int) Rect sampled format:Unknown 1068: TypeSampledImage 1067 1069: TypePointer UniformConstant 1068 1070(samp2dr): 1069(ptr) Variable UniformConstant 1073: 32(int) Constant 4 1074: TypeArray 24(ivec2) 1073 1075: 24(ivec2) ConstantComposite 978 982 1076: 23(int) Constant 15 1077: 23(int) Constant 16 1078: 24(ivec2) ConstantComposite 1076 1077 1079: 23(int) Constant 4294967294 1080: 23(int) Constant 0 1081: 24(ivec2) ConstantComposite 1079 1080 1082: 1074 ConstantComposite 1075 27 1078 1081 1090: TypeVector 23(int) 4 1091: TypePointer Output 1090(ivec4) 1092(ioutp): 1091(ptr) Variable Output 1093: TypeImage 23(int) 2D array sampled format:Unknown 1094: TypeSampledImage 1093 1095: TypePointer UniformConstant 1094 1096(isamp2DA): 1095(ptr) Variable UniformConstant 1098: 10(float) Constant 1036831949 1099: 1055(fvec3) ConstantComposite 1098 1098 1098 1100: 24(ivec2) ConstantComposite 978 978 1112: TypePointer Input 11(fvec4) 1113(gl_FragCoord): 1112(ptr) Variable Input 1115(vl2): 1112(ptr) Variable Input 1120: TypePointer Output 32(int) 1121(uo): 1120(ptr) Variable Output 1122: TypePointer Input 32(int) 1123(u): 1122(ptr) Variable Input 1130: TypePointer Function 23(int) 1132(gl_PrimitiveID): 1038(ptr) Variable Input 4(main): 2 Function None 3 5: Label 1031(v): 1030(ptr) Variable Function 1131(id): 1130(ptr) Variable Function 1040: 23(int) Load 1039(i) 1042: 1041(ptr) AccessChain 1037(arrayedSampler) 1040 1043: 1033 Load 1042 1046: 20(fvec2) Load 1045(c2D) 1047: 11(fvec4) ImageSampleImplicitLod 1043 1046 Store 1031(v) 1047 1052: 1051(ptr) AccessChain 1050(gl_ClipDistance) 978 1053: 10(float) Load 1052 1054: 34(ptr) AccessChain 13(outp) 33 Store 1054 1053 1056: 11(fvec4) Load 1031(v) 1057: 1055(fvec3) VectorShuffle 1056 1056 1 2 3 1058: 34(ptr) AccessChain 13(outp) 966 1059: 10(float) CompositeExtract 1057 0 Store 1058 1059 1060: 34(ptr) AccessChain 13(outp) 970 1061: 10(float) CompositeExtract 1057 1 Store 1060 1061 1062: 34(ptr) AccessChain 13(outp) 974 1063: 10(float) CompositeExtract 1057 2 Store 1062 1063 1071: 1068 Load 1070(samp2dr) 1072: 20(fvec2) Load 1045(c2D) 1083: 1064(ivec4) ImageGather 1071 1072 982 ConstOffsets 1082 Store 1066(uoutp) 1083 1084: 1041(ptr) AccessChain 1037(arrayedSampler) 1080 1085: 1033 Load 1084 1086: 20(fvec2) Load 1045(c2D) 1087: 11(fvec4) ImageGather 1085 1086 1080 1088: 11(fvec4) Load 13(outp) 1089: 11(fvec4) FAdd 1088 1087 Store 13(outp) 1089 1097: 1094 Load 1096(isamp2DA) 1101: 1090(ivec4) ImageGather 1097 1099 25 ConstOffset 1100 Store 1092(ioutp) 1101 1102: 1094 Load 1096(isamp2DA) 1103: 1090(ivec4) ImageGather 1102 1099 25 ConstOffset 1100 1104: 1090(ivec4) Load 1092(ioutp) 1105: 1090(ivec4) IAdd 1104 1103 Store 1092(ioutp) 1105 1106: 1094 Load 1096(isamp2DA) 1107: 23(int) Load 1039(i) 1108: 24(ivec2) CompositeConstruct 1107 1107 1109: 1090(ivec4) ImageGather 1106 1099 1080 Offset 1108 1110: 1090(ivec4) Load 1092(ioutp) 1111: 1090(ivec4) IAdd 1110 1109 Store 1092(ioutp) 1111 1114: 11(fvec4) Load 1113(gl_FragCoord) 1116: 11(fvec4) Load 1115(vl2) 1117: 11(fvec4) FAdd 1114 1116 1118: 11(fvec4) Load 13(outp) 1119: 11(fvec4) FAdd 1118 1117 Store 13(outp) 1119 1124: 32(int) Load 1123(u) 1125: 23(int) Load 1039(i) 1126: 32(int) Bitcast 1125 1127: 32(int) UMod 1124 1126 Store 1121(uo) 1127 1128: 2 FunctionCall 6(foo23() 1129: 2 FunctionCall 8(doubles() 1133: 23(int) Load 1132(gl_PrimitiveID) Store 1131(id) 1133 Return FunctionEnd 6(foo23(): 2 Function None 3 7: Label 18: 15 Load 17(u2drs) 19: 11(fvec4) Load 13(outp) 28: 10(float) CompositeExtract 19 2 29: 10(float) CompositeExtract 19 3 30: 11(fvec4) CompositeInsert 29 19 2 31: 10(float) ImageSampleProjDrefExplicitLod 18 30 28 Grad ConstOffset 22 22 27 35: 34(ptr) AccessChain 13(outp) 33 36: 10(float) Load 35 37: 10(float) FAdd 36 31 38: 34(ptr) AccessChain 13(outp) 33 Store 38 37 Return FunctionEnd 8(doubles(): 2 Function None 3 9: Label 41(doublev): 40(ptr) Variable Function 45(dvec2v): 44(ptr) Variable Function 50(dvec3v): 49(ptr) Variable Function 55(dvec4v): 54(ptr) Variable Function 442(boolv): 441(ptr) Variable Function 451(bvec2v): 450(ptr) Variable Function 460(bvec3v): 459(ptr) Variable Function 469(bvec4v): 468(ptr) Variable Function 569: 441(ptr) Variable Function 578: 450(ptr) Variable Function 587: 459(ptr) Variable Function 596: 468(ptr) Variable Function 751(dmat2v): 750(ptr) Variable Function 757(dmat3v): 756(ptr) Variable Function 763(dmat4v): 762(ptr) Variable Function 769(dmat2x3v): 768(ptr) Variable Function 775(dmat3x2v): 774(ptr) Variable Function 781(dmat2x4v): 780(ptr) Variable Function 787(dmat4x2v): 786(ptr) Variable Function 793(dmat3x4v): 792(ptr) Variable Function 799(dmat4x3v): 798(ptr) Variable Function Store 41(doublev) 42 Store 45(dvec2v) 47 Store 50(dvec3v) 52 56:39(float64_t) Load 41(doublev) 57: 53(f64vec4) CompositeConstruct 56 56 56 56 58: 53(f64vec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 57 Store 55(dvec4v) 58 59:39(float64_t) Load 41(doublev) 60:39(float64_t) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 59 61:39(float64_t) Load 41(doublev) 62:39(float64_t) FAdd 61 60 Store 41(doublev) 62 63: 43(f64vec2) Load 45(dvec2v) 64: 43(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 63 65: 43(f64vec2) Load 45(dvec2v) 66: 43(f64vec2) FAdd 65 64 Store 45(dvec2v) 66 67: 48(f64vec3) Load 50(dvec3v) 68: 48(f64vec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 67 69: 48(f64vec3) Load 50(dvec3v) 70: 48(f64vec3) FAdd 69 68 Store 50(dvec3v) 70 71: 53(f64vec4) Load 55(dvec4v) 72: 53(f64vec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 71 73: 53(f64vec4) Load 55(dvec4v) 74: 53(f64vec4) FAdd 73 72 Store 55(dvec4v) 74 75:39(float64_t) Load 41(doublev) 76:39(float64_t) ExtInst 1(GLSL.std.450) 4(FAbs) 75 77:39(float64_t) Load 41(doublev) 78:39(float64_t) FAdd 77 76 Store 41(doublev) 78 79: 43(f64vec2) Load 45(dvec2v) 80: 43(f64vec2) ExtInst 1(GLSL.std.450) 4(FAbs) 79 81: 43(f64vec2) Load 45(dvec2v) 82: 43(f64vec2) FAdd 81 80 Store 45(dvec2v) 82 83: 48(f64vec3) Load 50(dvec3v) 84: 48(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 83 85: 48(f64vec3) Load 50(dvec3v) 86: 48(f64vec3) FAdd 85 84 Store 50(dvec3v) 86 87: 53(f64vec4) Load 55(dvec4v) 88: 53(f64vec4) ExtInst 1(GLSL.std.450) 4(FAbs) 87 89: 53(f64vec4) Load 55(dvec4v) 90: 53(f64vec4) FAdd 89 88 Store 55(dvec4v) 90 91:39(float64_t) Load 41(doublev) 92:39(float64_t) ExtInst 1(GLSL.std.450) 6(FSign) 91 93:39(float64_t) Load 41(doublev) 94:39(float64_t) FAdd 93 92 Store 41(doublev) 94 95: 43(f64vec2) Load 45(dvec2v) 96: 43(f64vec2) ExtInst 1(GLSL.std.450) 6(FSign) 95 97: 43(f64vec2) Load 45(dvec2v) 98: 43(f64vec2) FAdd 97 96 Store 45(dvec2v) 98 99: 48(f64vec3) Load 50(dvec3v) 100: 48(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 99 101: 48(f64vec3) Load 50(dvec3v) 102: 48(f64vec3) FAdd 101 100 Store 50(dvec3v) 102 103: 53(f64vec4) Load 55(dvec4v) 104: 53(f64vec4) ExtInst 1(GLSL.std.450) 6(FSign) 103 105: 53(f64vec4) Load 55(dvec4v) 106: 53(f64vec4) FAdd 105 104 Store 55(dvec4v) 106 107:39(float64_t) Load 41(doublev) 108:39(float64_t) ExtInst 1(GLSL.std.450) 8(Floor) 107 109:39(float64_t) Load 41(doublev) 110:39(float64_t) FAdd 109 108 Store 41(doublev) 110 111: 43(f64vec2) Load 45(dvec2v) 112: 43(f64vec2) ExtInst 1(GLSL.std.450) 8(Floor) 111 113: 43(f64vec2) Load 45(dvec2v) 114: 43(f64vec2) FAdd 113 112 Store 45(dvec2v) 114 115: 48(f64vec3) Load 50(dvec3v) 116: 48(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 115 117: 48(f64vec3) Load 50(dvec3v) 118: 48(f64vec3) FAdd 117 116 Store 50(dvec3v) 118 119: 53(f64vec4) Load 55(dvec4v) 120: 53(f64vec4) ExtInst 1(GLSL.std.450) 8(Floor) 119 121: 53(f64vec4) Load 55(dvec4v) 122: 53(f64vec4) FAdd 121 120 Store 55(dvec4v) 122 123:39(float64_t) Load 41(doublev) 124:39(float64_t) ExtInst 1(GLSL.std.450) 3(Trunc) 123 125:39(float64_t) Load 41(doublev) 126:39(float64_t) FAdd 125 124 Store 41(doublev) 126 127: 43(f64vec2) Load 45(dvec2v) 128: 43(f64vec2) ExtInst 1(GLSL.std.450) 3(Trunc) 127 129: 43(f64vec2) Load 45(dvec2v) 130: 43(f64vec2) FAdd 129 128 Store 45(dvec2v) 130 131: 48(f64vec3) Load 50(dvec3v) 132: 48(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 131 133: 48(f64vec3) Load 50(dvec3v) 134: 48(f64vec3) FAdd 133 132 Store 50(dvec3v) 134 135: 53(f64vec4) Load 55(dvec4v) 136: 53(f64vec4) ExtInst 1(GLSL.std.450) 3(Trunc) 135 137: 53(f64vec4) Load 55(dvec4v) 138: 53(f64vec4) FAdd 137 136 Store 55(dvec4v) 138 139:39(float64_t) Load 41(doublev) 140:39(float64_t) ExtInst 1(GLSL.std.450) 1(Round) 139 141:39(float64_t) Load 41(doublev) 142:39(float64_t) FAdd 141 140 Store 41(doublev) 142 143: 43(f64vec2) Load 45(dvec2v) 144: 43(f64vec2) ExtInst 1(GLSL.std.450) 1(Round) 143 145: 43(f64vec2) Load 45(dvec2v) 146: 43(f64vec2) FAdd 145 144 Store 45(dvec2v) 146 147: 48(f64vec3) Load 50(dvec3v) 148: 48(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 147 149: 48(f64vec3) Load 50(dvec3v) 150: 48(f64vec3) FAdd 149 148 Store 50(dvec3v) 150 151: 53(f64vec4) Load 55(dvec4v) 152: 53(f64vec4) ExtInst 1(GLSL.std.450) 1(Round) 151 153: 53(f64vec4) Load 55(dvec4v) 154: 53(f64vec4) FAdd 153 152 Store 55(dvec4v) 154 155:39(float64_t) Load 41(doublev) 156:39(float64_t) ExtInst 1(GLSL.std.450) 2(RoundEven) 155 157:39(float64_t) Load 41(doublev) 158:39(float64_t) FAdd 157 156 Store 41(doublev) 158 159: 43(f64vec2) Load 45(dvec2v) 160: 43(f64vec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 159 161: 43(f64vec2) Load 45(dvec2v) 162: 43(f64vec2) FAdd 161 160 Store 45(dvec2v) 162 163: 48(f64vec3) Load 50(dvec3v) 164: 48(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 163 165: 48(f64vec3) Load 50(dvec3v) 166: 48(f64vec3) FAdd 165 164 Store 50(dvec3v) 166 167: 53(f64vec4) Load 55(dvec4v) 168: 53(f64vec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 167 169: 53(f64vec4) Load 55(dvec4v) 170: 53(f64vec4) FAdd 169 168 Store 55(dvec4v) 170 171:39(float64_t) Load 41(doublev) 172:39(float64_t) ExtInst 1(GLSL.std.450) 9(Ceil) 171 173:39(float64_t) Load 41(doublev) 174:39(float64_t) FAdd 173 172 Store 41(doublev) 174 175: 43(f64vec2) Load 45(dvec2v) 176: 43(f64vec2) ExtInst 1(GLSL.std.450) 9(Ceil) 175 177: 43(f64vec2) Load 45(dvec2v) 178: 43(f64vec2) FAdd 177 176 Store 45(dvec2v) 178 179: 48(f64vec3) Load 50(dvec3v) 180: 48(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 179 181: 48(f64vec3) Load 50(dvec3v) 182: 48(f64vec3) FAdd 181 180 Store 50(dvec3v) 182 183: 53(f64vec4) Load 55(dvec4v) 184: 53(f64vec4) ExtInst 1(GLSL.std.450) 9(Ceil) 183 185: 53(f64vec4) Load 55(dvec4v) 186: 53(f64vec4) FAdd 185 184 Store 55(dvec4v) 186 187:39(float64_t) Load 41(doublev) 188:39(float64_t) ExtInst 1(GLSL.std.450) 10(Fract) 187 189:39(float64_t) Load 41(doublev) 190:39(float64_t) FAdd 189 188 Store 41(doublev) 190 191: 43(f64vec2) Load 45(dvec2v) 192: 43(f64vec2) ExtInst 1(GLSL.std.450) 10(Fract) 191 193: 43(f64vec2) Load 45(dvec2v) 194: 43(f64vec2) FAdd 193 192 Store 45(dvec2v) 194 195: 48(f64vec3) Load 50(dvec3v) 196: 48(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 195 197: 48(f64vec3) Load 50(dvec3v) 198: 48(f64vec3) FAdd 197 196 Store 50(dvec3v) 198 199: 53(f64vec4) Load 55(dvec4v) 200: 53(f64vec4) ExtInst 1(GLSL.std.450) 10(Fract) 199 201: 53(f64vec4) Load 55(dvec4v) 202: 53(f64vec4) FAdd 201 200 Store 55(dvec4v) 202 203:39(float64_t) Load 41(doublev) 204:39(float64_t) Load 41(doublev) 205:39(float64_t) FMod 203 204 206:39(float64_t) Load 41(doublev) 207:39(float64_t) FAdd 206 205 Store 41(doublev) 207 208: 43(f64vec2) Load 45(dvec2v) 209:39(float64_t) Load 41(doublev) 210: 43(f64vec2) CompositeConstruct 209 209 211: 43(f64vec2) FMod 208 210 212: 43(f64vec2) Load 45(dvec2v) 213: 43(f64vec2) FAdd 212 211 Store 45(dvec2v) 213 214: 48(f64vec3) Load 50(dvec3v) 215:39(float64_t) Load 41(doublev) 216: 48(f64vec3) CompositeConstruct 215 215 215 217: 48(f64vec3) FMod 214 216 218: 48(f64vec3) Load 50(dvec3v) 219: 48(f64vec3) FAdd 218 217 Store 50(dvec3v) 219 220: 53(f64vec4) Load 55(dvec4v) 221:39(float64_t) Load 41(doublev) 222: 53(f64vec4) CompositeConstruct 221 221 221 221 223: 53(f64vec4) FMod 220 222 224: 53(f64vec4) Load 55(dvec4v) 225: 53(f64vec4) FAdd 224 223 Store 55(dvec4v) 225 226: 43(f64vec2) Load 45(dvec2v) 227: 43(f64vec2) Load 45(dvec2v) 228: 43(f64vec2) FMod 226 227 229: 43(f64vec2) Load 45(dvec2v) 230: 43(f64vec2) FAdd 229 228 Store 45(dvec2v) 230 231: 48(f64vec3) Load 50(dvec3v) 232: 48(f64vec3) Load 50(dvec3v) 233: 48(f64vec3) FMod 231 232 234: 48(f64vec3) Load 50(dvec3v) 235: 48(f64vec3) FAdd 234 233 Store 50(dvec3v) 235 236: 53(f64vec4) Load 55(dvec4v) 237: 53(f64vec4) Load 55(dvec4v) 238: 53(f64vec4) FMod 236 237 239: 53(f64vec4) Load 55(dvec4v) 240: 53(f64vec4) FAdd 239 238 Store 55(dvec4v) 240 241:39(float64_t) Load 41(doublev) 243:242(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 241 244:39(float64_t) CompositeExtract 243 1 Store 41(doublev) 244 245:39(float64_t) CompositeExtract 243 0 246:39(float64_t) Load 41(doublev) 247:39(float64_t) FAdd 246 245 Store 41(doublev) 247 248: 43(f64vec2) Load 45(dvec2v) 250:249(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 248 251: 43(f64vec2) CompositeExtract 250 1 Store 45(dvec2v) 251 252: 43(f64vec2) CompositeExtract 250 0 253: 43(f64vec2) Load 45(dvec2v) 254: 43(f64vec2) FAdd 253 252 Store 45(dvec2v) 254 255: 48(f64vec3) Load 50(dvec3v) 257:256(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 255 258: 48(f64vec3) CompositeExtract 257 1 Store 50(dvec3v) 258 259: 48(f64vec3) CompositeExtract 257 0 260: 48(f64vec3) Load 50(dvec3v) 261: 48(f64vec3) FAdd 260 259 Store 50(dvec3v) 261 262: 53(f64vec4) Load 55(dvec4v) 264:263(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 262 265: 53(f64vec4) CompositeExtract 264 1 Store 55(dvec4v) 265 266: 53(f64vec4) CompositeExtract 264 0 267: 53(f64vec4) Load 55(dvec4v) 268: 53(f64vec4) FAdd 267 266 Store 55(dvec4v) 268 269:39(float64_t) Load 41(doublev) 270:39(float64_t) Load 41(doublev) 271:39(float64_t) ExtInst 1(GLSL.std.450) 79(NMin) 269 270 272:39(float64_t) Load 41(doublev) 273:39(float64_t) FAdd 272 271 Store 41(doublev) 273 274: 43(f64vec2) Load 45(dvec2v) 275:39(float64_t) Load 41(doublev) 276: 43(f64vec2) CompositeConstruct 275 275 277: 43(f64vec2) ExtInst 1(GLSL.std.450) 79(NMin) 274 276 278: 43(f64vec2) Load 45(dvec2v) 279: 43(f64vec2) FAdd 278 277 Store 45(dvec2v) 279 280: 48(f64vec3) Load 50(dvec3v) 281:39(float64_t) Load 41(doublev) 282: 48(f64vec3) CompositeConstruct 281 281 281 283: 48(f64vec3) ExtInst 1(GLSL.std.450) 79(NMin) 280 282 284: 48(f64vec3) Load 50(dvec3v) 285: 48(f64vec3) FAdd 284 283 Store 50(dvec3v) 285 286: 53(f64vec4) Load 55(dvec4v) 287:39(float64_t) Load 41(doublev) 288: 53(f64vec4) CompositeConstruct 287 287 287 287 289: 53(f64vec4) ExtInst 1(GLSL.std.450) 79(NMin) 286 288 290: 53(f64vec4) Load 55(dvec4v) 291: 53(f64vec4) FAdd 290 289 Store 55(dvec4v) 291 292: 43(f64vec2) Load 45(dvec2v) 293: 43(f64vec2) Load 45(dvec2v) 294: 43(f64vec2) ExtInst 1(GLSL.std.450) 79(NMin) 292 293 295: 43(f64vec2) Load 45(dvec2v) 296: 43(f64vec2) FAdd 295 294 Store 45(dvec2v) 296 297: 48(f64vec3) Load 50(dvec3v) 298: 48(f64vec3) Load 50(dvec3v) 299: 48(f64vec3) ExtInst 1(GLSL.std.450) 79(NMin) 297 298 300: 48(f64vec3) Load 50(dvec3v) 301: 48(f64vec3) FAdd 300 299 Store 50(dvec3v) 301 302: 53(f64vec4) Load 55(dvec4v) 303: 53(f64vec4) Load 55(dvec4v) 304: 53(f64vec4) ExtInst 1(GLSL.std.450) 79(NMin) 302 303 305: 53(f64vec4) Load 55(dvec4v) 306: 53(f64vec4) FAdd 305 304 Store 55(dvec4v) 306 307:39(float64_t) Load 41(doublev) 308:39(float64_t) Load 41(doublev) 309:39(float64_t) ExtInst 1(GLSL.std.450) 80(NMax) 307 308 310:39(float64_t) Load 41(doublev) 311:39(float64_t) FAdd 310 309 Store 41(doublev) 311 312: 43(f64vec2) Load 45(dvec2v) 313:39(float64_t) Load 41(doublev) 314: 43(f64vec2) CompositeConstruct 313 313 315: 43(f64vec2) ExtInst 1(GLSL.std.450) 80(NMax) 312 314 316: 43(f64vec2) Load 45(dvec2v) 317: 43(f64vec2) FAdd 316 315 Store 45(dvec2v) 317 318: 48(f64vec3) Load 50(dvec3v) 319:39(float64_t) Load 41(doublev) 320: 48(f64vec3) CompositeConstruct 319 319 319 321: 48(f64vec3) ExtInst 1(GLSL.std.450) 80(NMax) 318 320 322: 48(f64vec3) Load 50(dvec3v) 323: 48(f64vec3) FAdd 322 321 Store 50(dvec3v) 323 324: 53(f64vec4) Load 55(dvec4v) 325:39(float64_t) Load 41(doublev) 326: 53(f64vec4) CompositeConstruct 325 325 325 325 327: 53(f64vec4) ExtInst 1(GLSL.std.450) 80(NMax) 324 326 328: 53(f64vec4) Load 55(dvec4v) 329: 53(f64vec4) FAdd 328 327 Store 55(dvec4v) 329 330: 43(f64vec2) Load 45(dvec2v) 331: 43(f64vec2) Load 45(dvec2v) 332: 43(f64vec2) ExtInst 1(GLSL.std.450) 80(NMax) 330 331 333: 43(f64vec2) Load 45(dvec2v) 334: 43(f64vec2) FAdd 333 332 Store 45(dvec2v) 334 335: 48(f64vec3) Load 50(dvec3v) 336: 48(f64vec3) Load 50(dvec3v) 337: 48(f64vec3) ExtInst 1(GLSL.std.450) 80(NMax) 335 336 338: 48(f64vec3) Load 50(dvec3v) 339: 48(f64vec3) FAdd 338 337 Store 50(dvec3v) 339 340: 53(f64vec4) Load 55(dvec4v) 341: 53(f64vec4) Load 55(dvec4v) 342: 53(f64vec4) ExtInst 1(GLSL.std.450) 80(NMax) 340 341 343: 53(f64vec4) Load 55(dvec4v) 344: 53(f64vec4) FAdd 343 342 Store 55(dvec4v) 344 345:39(float64_t) Load 41(doublev) 346:39(float64_t) Load 41(doublev) 347:39(float64_t) Load 41(doublev) 348:39(float64_t) ExtInst 1(GLSL.std.450) 81(NClamp) 345 346 347 349:39(float64_t) Load 41(doublev) 350:39(float64_t) FAdd 349 348 Store 41(doublev) 350 351: 43(f64vec2) Load 45(dvec2v) 352:39(float64_t) Load 41(doublev) 353:39(float64_t) Load 41(doublev) 354: 43(f64vec2) CompositeConstruct 352 352 355: 43(f64vec2) CompositeConstruct 353 353 356: 43(f64vec2) ExtInst 1(GLSL.std.450) 81(NClamp) 351 354 355 357: 43(f64vec2) Load 45(dvec2v) 358: 43(f64vec2) FAdd 357 356 Store 45(dvec2v) 358 359: 48(f64vec3) Load 50(dvec3v) 360:39(float64_t) Load 41(doublev) 361:39(float64_t) Load 41(doublev) 362: 48(f64vec3) CompositeConstruct 360 360 360 363: 48(f64vec3) CompositeConstruct 361 361 361 364: 48(f64vec3) ExtInst 1(GLSL.std.450) 81(NClamp) 359 362 363 365: 48(f64vec3) Load 50(dvec3v) 366: 48(f64vec3) FAdd 365 364 Store 50(dvec3v) 366 367: 53(f64vec4) Load 55(dvec4v) 368:39(float64_t) Load 41(doublev) 369:39(float64_t) Load 41(doublev) 370: 53(f64vec4) CompositeConstruct 368 368 368 368 371: 53(f64vec4) CompositeConstruct 369 369 369 369 372: 53(f64vec4) ExtInst 1(GLSL.std.450) 81(NClamp) 367 370 371 373: 53(f64vec4) Load 55(dvec4v) 374: 53(f64vec4) FAdd 373 372 Store 55(dvec4v) 374 375: 43(f64vec2) Load 45(dvec2v) 376: 43(f64vec2) Load 45(dvec2v) 377: 43(f64vec2) Load 45(dvec2v) 378: 43(f64vec2) ExtInst 1(GLSL.std.450) 81(NClamp) 375 376 377 379: 43(f64vec2) Load 45(dvec2v) 380: 43(f64vec2) FAdd 379 378 Store 45(dvec2v) 380 381: 48(f64vec3) Load 50(dvec3v) 382: 48(f64vec3) Load 50(dvec3v) 383: 48(f64vec3) Load 50(dvec3v) 384: 48(f64vec3) ExtInst 1(GLSL.std.450) 81(NClamp) 381 382 383 385: 48(f64vec3) Load 50(dvec3v) 386: 48(f64vec3) FAdd 385 384 Store 50(dvec3v) 386 387: 53(f64vec4) Load 55(dvec4v) 388: 53(f64vec4) Load 55(dvec4v) 389: 53(f64vec4) Load 55(dvec4v) 390: 53(f64vec4) ExtInst 1(GLSL.std.450) 81(NClamp) 387 388 389 391: 53(f64vec4) Load 55(dvec4v) 392: 53(f64vec4) FAdd 391 390 Store 55(dvec4v) 392 393:39(float64_t) Load 41(doublev) 394:39(float64_t) Load 41(doublev) 395:39(float64_t) Load 41(doublev) 396:39(float64_t) ExtInst 1(GLSL.std.450) 46(FMix) 393 394 395 397:39(float64_t) Load 41(doublev) 398:39(float64_t) FAdd 397 396 Store 41(doublev) 398 399: 43(f64vec2) Load 45(dvec2v) 400: 43(f64vec2) Load 45(dvec2v) 401:39(float64_t) Load 41(doublev) 402: 43(f64vec2) CompositeConstruct 401 401 403: 43(f64vec2) ExtInst 1(GLSL.std.450) 46(FMix) 399 400 402 404: 43(f64vec2) Load 45(dvec2v) 405: 43(f64vec2) FAdd 404 403 Store 45(dvec2v) 405 406: 48(f64vec3) Load 50(dvec3v) 407: 48(f64vec3) Load 50(dvec3v) 408:39(float64_t) Load 41(doublev) 409: 48(f64vec3) CompositeConstruct 408 408 408 410: 48(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 406 407 409 411: 48(f64vec3) Load 50(dvec3v) 412: 48(f64vec3) FAdd 411 410 Store 50(dvec3v) 412 413: 53(f64vec4) Load 55(dvec4v) 414: 53(f64vec4) Load 55(dvec4v) 415:39(float64_t) Load 41(doublev) 416: 53(f64vec4) CompositeConstruct 415 415 415 415 417: 53(f64vec4) ExtInst 1(GLSL.std.450) 46(FMix) 413 414 416 418: 53(f64vec4) Load 55(dvec4v) 419: 53(f64vec4) FAdd 418 417 Store 55(dvec4v) 419 420: 43(f64vec2) Load 45(dvec2v) 421: 43(f64vec2) Load 45(dvec2v) 422: 43(f64vec2) Load 45(dvec2v) 423: 43(f64vec2) ExtInst 1(GLSL.std.450) 46(FMix) 420 421 422 424: 43(f64vec2) Load 45(dvec2v) 425: 43(f64vec2) FAdd 424 423 Store 45(dvec2v) 425 426: 48(f64vec3) Load 50(dvec3v) 427: 48(f64vec3) Load 50(dvec3v) 428: 48(f64vec3) Load 50(dvec3v) 429: 48(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 426 427 428 430: 48(f64vec3) Load 50(dvec3v) 431: 48(f64vec3) FAdd 430 429 Store 50(dvec3v) 431 432: 53(f64vec4) Load 55(dvec4v) 433: 53(f64vec4) Load 55(dvec4v) 434: 53(f64vec4) Load 55(dvec4v) 435: 53(f64vec4) ExtInst 1(GLSL.std.450) 46(FMix) 432 433 434 436: 53(f64vec4) Load 55(dvec4v) 437: 53(f64vec4) FAdd 436 435 Store 55(dvec4v) 437 438:39(float64_t) Load 41(doublev) 439:39(float64_t) Load 41(doublev) 443: 440(bool) Load 442(boolv) 444:39(float64_t) Select 443 439 438 445:39(float64_t) Load 41(doublev) 446:39(float64_t) FAdd 445 444 Store 41(doublev) 446 447: 43(f64vec2) Load 45(dvec2v) 448: 43(f64vec2) Load 45(dvec2v) 452: 449(bvec2) Load 451(bvec2v) 453: 43(f64vec2) Select 452 448 447 454: 43(f64vec2) Load 45(dvec2v) 455: 43(f64vec2) FAdd 454 453 Store 45(dvec2v) 455 456: 48(f64vec3) Load 50(dvec3v) 457: 48(f64vec3) Load 50(dvec3v) 461: 458(bvec3) Load 460(bvec3v) 462: 48(f64vec3) Select 461 457 456 463: 48(f64vec3) Load 50(dvec3v) 464: 48(f64vec3) FAdd 463 462 Store 50(dvec3v) 464 465: 53(f64vec4) Load 55(dvec4v) 466: 53(f64vec4) Load 55(dvec4v) 470: 467(bvec4) Load 469(bvec4v) 471: 53(f64vec4) Select 470 466 465 472: 53(f64vec4) Load 55(dvec4v) 473: 53(f64vec4) FAdd 472 471 Store 55(dvec4v) 473 474:39(float64_t) Load 41(doublev) 475:39(float64_t) Load 41(doublev) 476:39(float64_t) ExtInst 1(GLSL.std.450) 48(Step) 474 475 477:39(float64_t) Load 41(doublev) 478:39(float64_t) FAdd 477 476 Store 41(doublev) 478 479: 43(f64vec2) Load 45(dvec2v) 480: 43(f64vec2) Load 45(dvec2v) 481: 43(f64vec2) ExtInst 1(GLSL.std.450) 48(Step) 479 480 482: 43(f64vec2) Load 45(dvec2v) 483: 43(f64vec2) FAdd 482 481 Store 45(dvec2v) 483 484: 48(f64vec3) Load 50(dvec3v) 485: 48(f64vec3) Load 50(dvec3v) 486: 48(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 484 485 487: 48(f64vec3) Load 50(dvec3v) 488: 48(f64vec3) FAdd 487 486 Store 50(dvec3v) 488 489: 53(f64vec4) Load 55(dvec4v) 490: 53(f64vec4) Load 55(dvec4v) 491: 53(f64vec4) ExtInst 1(GLSL.std.450) 48(Step) 489 490 492: 53(f64vec4) Load 55(dvec4v) 493: 53(f64vec4) FAdd 492 491 Store 55(dvec4v) 493 494:39(float64_t) Load 41(doublev) 495: 43(f64vec2) Load 45(dvec2v) 496: 43(f64vec2) CompositeConstruct 494 494 497: 43(f64vec2) ExtInst 1(GLSL.std.450) 48(Step) 496 495 498: 43(f64vec2) Load 45(dvec2v) 499: 43(f64vec2) FAdd 498 497 Store 45(dvec2v) 499 500:39(float64_t) Load 41(doublev) 501: 48(f64vec3) Load 50(dvec3v) 502: 48(f64vec3) CompositeConstruct 500 500 500 503: 48(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 502 501 504: 48(f64vec3) Load 50(dvec3v) 505: 48(f64vec3) FAdd 504 503 Store 50(dvec3v) 505 506:39(float64_t) Load 41(doublev) 507: 53(f64vec4) Load 55(dvec4v) 508: 53(f64vec4) CompositeConstruct 506 506 506 506 509: 53(f64vec4) ExtInst 1(GLSL.std.450) 48(Step) 508 507 510: 53(f64vec4) Load 55(dvec4v) 511: 53(f64vec4) FAdd 510 509 Store 55(dvec4v) 511 512:39(float64_t) Load 41(doublev) 513:39(float64_t) Load 41(doublev) 514:39(float64_t) Load 41(doublev) 515:39(float64_t) ExtInst 1(GLSL.std.450) 49(SmoothStep) 512 513 514 516:39(float64_t) Load 41(doublev) 517:39(float64_t) FAdd 516 515 Store 41(doublev) 517 518: 43(f64vec2) Load 45(dvec2v) 519: 43(f64vec2) Load 45(dvec2v) 520: 43(f64vec2) Load 45(dvec2v) 521: 43(f64vec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 518 519 520 522: 43(f64vec2) Load 45(dvec2v) 523: 43(f64vec2) FAdd 522 521 Store 45(dvec2v) 523 524: 48(f64vec3) Load 50(dvec3v) 525: 48(f64vec3) Load 50(dvec3v) 526: 48(f64vec3) Load 50(dvec3v) 527: 48(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 524 525 526 528: 48(f64vec3) Load 50(dvec3v) 529: 48(f64vec3) FAdd 528 527 Store 50(dvec3v) 529 530: 53(f64vec4) Load 55(dvec4v) 531: 53(f64vec4) Load 55(dvec4v) 532: 53(f64vec4) Load 55(dvec4v) 533: 53(f64vec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 530 531 532 534: 53(f64vec4) Load 55(dvec4v) 535: 53(f64vec4) FAdd 534 533 Store 55(dvec4v) 535 536:39(float64_t) Load 41(doublev) 537:39(float64_t) Load 41(doublev) 538: 43(f64vec2) Load 45(dvec2v) 539: 43(f64vec2) CompositeConstruct 536 536 540: 43(f64vec2) CompositeConstruct 537 537 541: 43(f64vec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 539 540 538 542: 43(f64vec2) Load 45(dvec2v) 543: 43(f64vec2) FAdd 542 541 Store 45(dvec2v) 543 544:39(float64_t) Load 41(doublev) 545:39(float64_t) Load 41(doublev) 546: 48(f64vec3) Load 50(dvec3v) 547: 48(f64vec3) CompositeConstruct 544 544 544 548: 48(f64vec3) CompositeConstruct 545 545 545 549: 48(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 547 548 546 550: 48(f64vec3) Load 50(dvec3v) 551: 48(f64vec3) FAdd 550 549 Store 50(dvec3v) 551 552:39(float64_t) Load 41(doublev) 553:39(float64_t) Load 41(doublev) 554: 53(f64vec4) Load 55(dvec4v) 555: 53(f64vec4) CompositeConstruct 552 552 552 552 556: 53(f64vec4) CompositeConstruct 553 553 553 553 557: 53(f64vec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 555 556 554 558: 53(f64vec4) Load 55(dvec4v) 559: 53(f64vec4) FAdd 558 557 Store 55(dvec4v) 559 560:39(float64_t) Load 41(doublev) 561: 440(bool) IsNan 560 Store 442(boolv) 561 562: 43(f64vec2) Load 45(dvec2v) 563: 449(bvec2) IsNan 562 Store 451(bvec2v) 563 564: 48(f64vec3) Load 50(dvec3v) 565: 458(bvec3) IsNan 564 Store 460(bvec3v) 565 566: 53(f64vec4) Load 55(dvec4v) 567: 467(bvec4) IsNan 566 Store 469(bvec4v) 567 568: 440(bool) Load 442(boolv) SelectionMerge 571 None BranchConditional 568 570 574 570: Label 572:39(float64_t) Load 41(doublev) 573: 440(bool) IsInf 572 Store 569 573 Branch 571 574: Label Store 569 575 Branch 571 571: Label 576: 440(bool) Load 569 Store 442(boolv) 576 577: 440(bool) Load 442(boolv) SelectionMerge 580 None BranchConditional 577 579 583 579: Label 581: 43(f64vec2) Load 45(dvec2v) 582: 449(bvec2) IsInf 581 Store 578 582 Branch 580 583: Label Store 578 584 Branch 580 580: Label 585: 449(bvec2) Load 578 Store 451(bvec2v) 585 586: 440(bool) Load 442(boolv) SelectionMerge 589 None BranchConditional 586 588 592 588: Label 590: 48(f64vec3) Load 50(dvec3v) 591: 458(bvec3) IsInf 590 Store 587 591 Branch 589 592: Label Store 587 593 Branch 589 589: Label 594: 458(bvec3) Load 587 Store 460(bvec3v) 594 595: 440(bool) Load 442(boolv) SelectionMerge 598 None BranchConditional 595 597 601 597: Label 599: 53(f64vec4) Load 55(dvec4v) 600: 467(bvec4) IsInf 599 Store 596 600 Branch 598 601: Label Store 596 602 Branch 598 598: Label 603: 467(bvec4) Load 596 Store 469(bvec4v) 603 604:39(float64_t) Load 41(doublev) 605:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 604 606:39(float64_t) Load 41(doublev) 607:39(float64_t) FAdd 606 605 Store 41(doublev) 607 608: 43(f64vec2) Load 45(dvec2v) 609:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 608 610:39(float64_t) Load 41(doublev) 611:39(float64_t) FAdd 610 609 Store 41(doublev) 611 612: 48(f64vec3) Load 50(dvec3v) 613:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 612 614:39(float64_t) Load 41(doublev) 615:39(float64_t) FAdd 614 613 Store 41(doublev) 615 616: 53(f64vec4) Load 55(dvec4v) 617:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 616 618:39(float64_t) Load 41(doublev) 619:39(float64_t) FAdd 618 617 Store 41(doublev) 619 620:39(float64_t) Load 41(doublev) 621:39(float64_t) Load 41(doublev) 622:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 620 621 623:39(float64_t) Load 41(doublev) 624:39(float64_t) FAdd 623 622 Store 41(doublev) 624 625: 43(f64vec2) Load 45(dvec2v) 626: 43(f64vec2) Load 45(dvec2v) 627:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 625 626 628:39(float64_t) Load 41(doublev) 629:39(float64_t) FAdd 628 627 Store 41(doublev) 629 630: 48(f64vec3) Load 50(dvec3v) 631: 48(f64vec3) Load 50(dvec3v) 632:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 630 631 633:39(float64_t) Load 41(doublev) 634:39(float64_t) FAdd 633 632 Store 41(doublev) 634 635: 53(f64vec4) Load 55(dvec4v) 636: 53(f64vec4) Load 55(dvec4v) 637:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 635 636 638:39(float64_t) Load 41(doublev) 639:39(float64_t) FAdd 638 637 Store 41(doublev) 639 640:39(float64_t) Load 41(doublev) 641:39(float64_t) Load 41(doublev) 642:39(float64_t) FMul 640 641 643:39(float64_t) Load 41(doublev) 644:39(float64_t) FAdd 643 642 Store 41(doublev) 644 645: 43(f64vec2) Load 45(dvec2v) 646: 43(f64vec2) Load 45(dvec2v) 647:39(float64_t) Dot 645 646 648:39(float64_t) Load 41(doublev) 649:39(float64_t) FAdd 648 647 Store 41(doublev) 649 650: 48(f64vec3) Load 50(dvec3v) 651: 48(f64vec3) Load 50(dvec3v) 652:39(float64_t) Dot 650 651 653:39(float64_t) Load 41(doublev) 654:39(float64_t) FAdd 653 652 Store 41(doublev) 654 655: 53(f64vec4) Load 55(dvec4v) 656: 53(f64vec4) Load 55(dvec4v) 657:39(float64_t) Dot 655 656 658:39(float64_t) Load 41(doublev) 659:39(float64_t) FAdd 658 657 Store 41(doublev) 659 660: 48(f64vec3) Load 50(dvec3v) 661: 48(f64vec3) Load 50(dvec3v) 662: 48(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 660 661 663: 48(f64vec3) Load 50(dvec3v) 664: 48(f64vec3) FAdd 663 662 Store 50(dvec3v) 664 665:39(float64_t) Load 41(doublev) 666:39(float64_t) ExtInst 1(GLSL.std.450) 69(Normalize) 665 667:39(float64_t) Load 41(doublev) 668:39(float64_t) FAdd 667 666 Store 41(doublev) 668 669: 43(f64vec2) Load 45(dvec2v) 670: 43(f64vec2) ExtInst 1(GLSL.std.450) 69(Normalize) 669 671: 43(f64vec2) Load 45(dvec2v) 672: 43(f64vec2) FAdd 671 670 Store 45(dvec2v) 672 673: 48(f64vec3) Load 50(dvec3v) 674: 48(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 673 675: 48(f64vec3) Load 50(dvec3v) 676: 48(f64vec3) FAdd 675 674 Store 50(dvec3v) 676 677: 53(f64vec4) Load 55(dvec4v) 678: 53(f64vec4) ExtInst 1(GLSL.std.450) 69(Normalize) 677 679: 53(f64vec4) Load 55(dvec4v) 680: 53(f64vec4) FAdd 679 678 Store 55(dvec4v) 680 681:39(float64_t) Load 41(doublev) 682:39(float64_t) Load 41(doublev) 683:39(float64_t) Load 41(doublev) 684:39(float64_t) ExtInst 1(GLSL.std.450) 70(FaceForward) 681 682 683 685:39(float64_t) Load 41(doublev) 686:39(float64_t) FAdd 685 684 Store 41(doublev) 686 687: 43(f64vec2) Load 45(dvec2v) 688: 43(f64vec2) Load 45(dvec2v) 689: 43(f64vec2) Load 45(dvec2v) 690: 43(f64vec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 687 688 689 691: 43(f64vec2) Load 45(dvec2v) 692: 43(f64vec2) FAdd 691 690 Store 45(dvec2v) 692 693: 48(f64vec3) Load 50(dvec3v) 694: 48(f64vec3) Load 50(dvec3v) 695: 48(f64vec3) Load 50(dvec3v) 696: 48(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 693 694 695 697: 48(f64vec3) Load 50(dvec3v) 698: 48(f64vec3) FAdd 697 696 Store 50(dvec3v) 698 699: 53(f64vec4) Load 55(dvec4v) 700: 53(f64vec4) Load 55(dvec4v) 701: 53(f64vec4) Load 55(dvec4v) 702: 53(f64vec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 699 700 701 703: 53(f64vec4) Load 55(dvec4v) 704: 53(f64vec4) FAdd 703 702 Store 55(dvec4v) 704 705:39(float64_t) Load 41(doublev) 706:39(float64_t) Load 41(doublev) 707:39(float64_t) ExtInst 1(GLSL.std.450) 71(Reflect) 705 706 708:39(float64_t) Load 41(doublev) 709:39(float64_t) FAdd 708 707 Store 41(doublev) 709 710: 43(f64vec2) Load 45(dvec2v) 711: 43(f64vec2) Load 45(dvec2v) 712: 43(f64vec2) ExtInst 1(GLSL.std.450) 71(Reflect) 710 711 713: 43(f64vec2) Load 45(dvec2v) 714: 43(f64vec2) FAdd 713 712 Store 45(dvec2v) 714 715: 48(f64vec3) Load 50(dvec3v) 716: 48(f64vec3) Load 50(dvec3v) 717: 48(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 715 716 718: 48(f64vec3) Load 50(dvec3v) 719: 48(f64vec3) FAdd 718 717 Store 50(dvec3v) 719 720: 53(f64vec4) Load 55(dvec4v) 721: 53(f64vec4) Load 55(dvec4v) 722: 53(f64vec4) ExtInst 1(GLSL.std.450) 71(Reflect) 720 721 723: 53(f64vec4) Load 55(dvec4v) 724: 53(f64vec4) FAdd 723 722 Store 55(dvec4v) 724 725:39(float64_t) Load 41(doublev) 726:39(float64_t) Load 41(doublev) 727:39(float64_t) Load 41(doublev) 728:39(float64_t) ExtInst 1(GLSL.std.450) 72(Refract) 725 726 727 729:39(float64_t) Load 41(doublev) 730:39(float64_t) FAdd 729 728 Store 41(doublev) 730 731: 43(f64vec2) Load 45(dvec2v) 732: 43(f64vec2) Load 45(dvec2v) 733:39(float64_t) Load 41(doublev) 734: 43(f64vec2) ExtInst 1(GLSL.std.450) 72(Refract) 731 732 733 735: 43(f64vec2) Load 45(dvec2v) 736: 43(f64vec2) FAdd 735 734 Store 45(dvec2v) 736 737: 48(f64vec3) Load 50(dvec3v) 738: 48(f64vec3) Load 50(dvec3v) 739:39(float64_t) Load 41(doublev) 740: 48(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 737 738 739 741: 48(f64vec3) Load 50(dvec3v) 742: 48(f64vec3) FAdd 741 740 Store 50(dvec3v) 742 743: 53(f64vec4) Load 55(dvec4v) 744: 53(f64vec4) Load 55(dvec4v) 745:39(float64_t) Load 41(doublev) 746: 53(f64vec4) ExtInst 1(GLSL.std.450) 72(Refract) 743 744 745 747: 53(f64vec4) Load 55(dvec4v) 748: 53(f64vec4) FAdd 747 746 Store 55(dvec4v) 748 752: 43(f64vec2) Load 45(dvec2v) 753: 43(f64vec2) Load 45(dvec2v) 754: 749 OuterProduct 752 753 Store 751(dmat2v) 754 758: 48(f64vec3) Load 50(dvec3v) 759: 48(f64vec3) Load 50(dvec3v) 760: 755 OuterProduct 758 759 Store 757(dmat3v) 760 764: 53(f64vec4) Load 55(dvec4v) 765: 53(f64vec4) Load 55(dvec4v) 766: 761 OuterProduct 764 765 Store 763(dmat4v) 766 770: 48(f64vec3) Load 50(dvec3v) 771: 43(f64vec2) Load 45(dvec2v) 772: 767 OuterProduct 770 771 Store 769(dmat2x3v) 772 776: 43(f64vec2) Load 45(dvec2v) 777: 48(f64vec3) Load 50(dvec3v) 778: 773 OuterProduct 776 777 Store 775(dmat3x2v) 778 782: 53(f64vec4) Load 55(dvec4v) 783: 43(f64vec2) Load 45(dvec2v) 784: 779 OuterProduct 782 783 Store 781(dmat2x4v) 784 788: 43(f64vec2) Load 45(dvec2v) 789: 53(f64vec4) Load 55(dvec4v) 790: 785 OuterProduct 788 789 Store 787(dmat4x2v) 790 794: 53(f64vec4) Load 55(dvec4v) 795: 48(f64vec3) Load 50(dvec3v) 796: 791 OuterProduct 794 795 Store 793(dmat3x4v) 796 800: 48(f64vec3) Load 50(dvec3v) 801: 53(f64vec4) Load 55(dvec4v) 802: 797 OuterProduct 800 801 Store 799(dmat4x3v) 802 803: 749 Load 751(dmat2v) 804: 749 Load 751(dmat2v) 805: 43(f64vec2) CompositeExtract 803 0 806: 43(f64vec2) CompositeExtract 804 0 807: 43(f64vec2) FMul 805 806 808: 43(f64vec2) CompositeExtract 803 1 809: 43(f64vec2) CompositeExtract 804 1 810: 43(f64vec2) FMul 808 809 811: 749 CompositeConstruct 807 810 812: 749 Load 751(dmat2v) 813: 749 MatrixTimesMatrix 812 811 Store 751(dmat2v) 813 814: 755 Load 757(dmat3v) 815: 755 Load 757(dmat3v) 816: 48(f64vec3) CompositeExtract 814 0 817: 48(f64vec3) CompositeExtract 815 0 818: 48(f64vec3) FMul 816 817 819: 48(f64vec3) CompositeExtract 814 1 820: 48(f64vec3) CompositeExtract 815 1 821: 48(f64vec3) FMul 819 820 822: 48(f64vec3) CompositeExtract 814 2 823: 48(f64vec3) CompositeExtract 815 2 824: 48(f64vec3) FMul 822 823 825: 755 CompositeConstruct 818 821 824 826: 755 Load 757(dmat3v) 827: 755 MatrixTimesMatrix 826 825 Store 757(dmat3v) 827 828: 761 Load 763(dmat4v) 829: 761 Load 763(dmat4v) 830: 53(f64vec4) CompositeExtract 828 0 831: 53(f64vec4) CompositeExtract 829 0 832: 53(f64vec4) FMul 830 831 833: 53(f64vec4) CompositeExtract 828 1 834: 53(f64vec4) CompositeExtract 829 1 835: 53(f64vec4) FMul 833 834 836: 53(f64vec4) CompositeExtract 828 2 837: 53(f64vec4) CompositeExtract 829 2 838: 53(f64vec4) FMul 836 837 839: 53(f64vec4) CompositeExtract 828 3 840: 53(f64vec4) CompositeExtract 829 3 841: 53(f64vec4) FMul 839 840 842: 761 CompositeConstruct 832 835 838 841 843: 761 Load 763(dmat4v) 844: 761 MatrixTimesMatrix 843 842 Store 763(dmat4v) 844 845: 767 Load 769(dmat2x3v) 846: 767 Load 769(dmat2x3v) 847: 48(f64vec3) CompositeExtract 845 0 848: 48(f64vec3) CompositeExtract 846 0 849: 48(f64vec3) FMul 847 848 850: 48(f64vec3) CompositeExtract 845 1 851: 48(f64vec3) CompositeExtract 846 1 852: 48(f64vec3) FMul 850 851 853: 767 CompositeConstruct 849 852 Store 769(dmat2x3v) 853 854: 779 Load 781(dmat2x4v) 855: 779 Load 781(dmat2x4v) 856: 53(f64vec4) CompositeExtract 854 0 857: 53(f64vec4) CompositeExtract 855 0 858: 53(f64vec4) FMul 856 857 859: 53(f64vec4) CompositeExtract 854 1 860: 53(f64vec4) CompositeExtract 855 1 861: 53(f64vec4) FMul 859 860 862: 779 CompositeConstruct 858 861 Store 781(dmat2x4v) 862 863: 773 Load 775(dmat3x2v) 864: 773 Load 775(dmat3x2v) 865: 43(f64vec2) CompositeExtract 863 0 866: 43(f64vec2) CompositeExtract 864 0 867: 43(f64vec2) FMul 865 866 868: 43(f64vec2) CompositeExtract 863 1 869: 43(f64vec2) CompositeExtract 864 1 870: 43(f64vec2) FMul 868 869 871: 43(f64vec2) CompositeExtract 863 2 872: 43(f64vec2) CompositeExtract 864 2 873: 43(f64vec2) FMul 871 872 874: 773 CompositeConstruct 867 870 873 Store 775(dmat3x2v) 874 875: 791 Load 793(dmat3x4v) 876: 791 Load 793(dmat3x4v) 877: 53(f64vec4) CompositeExtract 875 0 878: 53(f64vec4) CompositeExtract 876 0 879: 53(f64vec4) FMul 877 878 880: 53(f64vec4) CompositeExtract 875 1 881: 53(f64vec4) CompositeExtract 876 1 882: 53(f64vec4) FMul 880 881 883: 53(f64vec4) CompositeExtract 875 2 884: 53(f64vec4) CompositeExtract 876 2 885: 53(f64vec4) FMul 883 884 886: 791 CompositeConstruct 879 882 885 Store 793(dmat3x4v) 886 887: 785 Load 787(dmat4x2v) 888: 785 Load 787(dmat4x2v) 889: 43(f64vec2) CompositeExtract 887 0 890: 43(f64vec2) CompositeExtract 888 0 891: 43(f64vec2) FMul 889 890 892: 43(f64vec2) CompositeExtract 887 1 893: 43(f64vec2) CompositeExtract 888 1 894: 43(f64vec2) FMul 892 893 895: 43(f64vec2) CompositeExtract 887 2 896: 43(f64vec2) CompositeExtract 888 2 897: 43(f64vec2) FMul 895 896 898: 43(f64vec2) CompositeExtract 887 3 899: 43(f64vec2) CompositeExtract 888 3 900: 43(f64vec2) FMul 898 899 901: 785 CompositeConstruct 891 894 897 900 Store 787(dmat4x2v) 901 902: 797 Load 799(dmat4x3v) 903: 797 Load 799(dmat4x3v) 904: 48(f64vec3) CompositeExtract 902 0 905: 48(f64vec3) CompositeExtract 903 0 906: 48(f64vec3) FMul 904 905 907: 48(f64vec3) CompositeExtract 902 1 908: 48(f64vec3) CompositeExtract 903 1 909: 48(f64vec3) FMul 907 908 910: 48(f64vec3) CompositeExtract 902 2 911: 48(f64vec3) CompositeExtract 903 2 912: 48(f64vec3) FMul 910 911 913: 48(f64vec3) CompositeExtract 902 3 914: 48(f64vec3) CompositeExtract 903 3 915: 48(f64vec3) FMul 913 914 916: 797 CompositeConstruct 906 909 912 915 Store 799(dmat4x3v) 916 917: 749 Load 751(dmat2v) 918: 749 Transpose 917 919: 749 Load 751(dmat2v) 920: 749 MatrixTimesMatrix 919 918 Store 751(dmat2v) 920 921: 755 Load 757(dmat3v) 922: 755 Transpose 921 923: 755 Load 757(dmat3v) 924: 755 MatrixTimesMatrix 923 922 Store 757(dmat3v) 924 925: 761 Load 763(dmat4v) 926: 761 Transpose 925 927: 761 Load 763(dmat4v) 928: 761 MatrixTimesMatrix 927 926 Store 763(dmat4v) 928 929: 773 Load 775(dmat3x2v) 930: 767 Transpose 929 Store 769(dmat2x3v) 930 931: 767 Load 769(dmat2x3v) 932: 773 Transpose 931 Store 775(dmat3x2v) 932 933: 785 Load 787(dmat4x2v) 934: 779 Transpose 933 Store 781(dmat2x4v) 934 935: 779 Load 781(dmat2x4v) 936: 785 Transpose 935 Store 787(dmat4x2v) 936 937: 797 Load 799(dmat4x3v) 938: 791 Transpose 937 Store 793(dmat3x4v) 938 939: 791 Load 793(dmat3x4v) 940: 797 Transpose 939 Store 799(dmat4x3v) 940 941: 749 Load 751(dmat2v) 942:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 941 943:39(float64_t) Load 41(doublev) 944:39(float64_t) FAdd 943 942 Store 41(doublev) 944 945: 755 Load 757(dmat3v) 946:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 945 947:39(float64_t) Load 41(doublev) 948:39(float64_t) FAdd 947 946 Store 41(doublev) 948 949: 761 Load 763(dmat4v) 950:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 949 951:39(float64_t) Load 41(doublev) 952:39(float64_t) FAdd 951 950 Store 41(doublev) 952 953: 749 Load 751(dmat2v) 954: 749 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 953 955: 749 Load 751(dmat2v) 956: 749 MatrixTimesMatrix 955 954 Store 751(dmat2v) 956 957: 755 Load 757(dmat3v) 958: 755 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 957 959: 755 Load 757(dmat3v) 960: 755 MatrixTimesMatrix 959 958 Store 757(dmat3v) 960 961: 761 Load 763(dmat4v) 962: 761 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 961 963: 761 Load 763(dmat4v) 964: 761 MatrixTimesMatrix 963 962 Store 763(dmat4v) 964 965:39(float64_t) Load 41(doublev) 967: 40(ptr) AccessChain 45(dvec2v) 966 968:39(float64_t) Load 967 969:39(float64_t) FAdd 965 968 971: 40(ptr) AccessChain 50(dvec3v) 970 972:39(float64_t) Load 971 973:39(float64_t) FAdd 969 972 975: 40(ptr) AccessChain 55(dvec4v) 974 976:39(float64_t) Load 975 977:39(float64_t) FAdd 973 976 979: 40(ptr) AccessChain 751(dmat2v) 978 966 980:39(float64_t) Load 979 981:39(float64_t) FAdd 977 980 983: 40(ptr) AccessChain 757(dmat3v) 982 970 984:39(float64_t) Load 983 985:39(float64_t) FAdd 981 984 986: 40(ptr) AccessChain 763(dmat4v) 25 974 987:39(float64_t) Load 986 988:39(float64_t) FAdd 985 987 989: 40(ptr) AccessChain 769(dmat2x3v) 978 966 990:39(float64_t) Load 989 991:39(float64_t) FAdd 988 990 992: 40(ptr) AccessChain 775(dmat3x2v) 978 966 993:39(float64_t) Load 992 994:39(float64_t) FAdd 991 993 995: 40(ptr) AccessChain 793(dmat3x4v) 982 970 996:39(float64_t) Load 995 997:39(float64_t) FAdd 994 996 998: 40(ptr) AccessChain 799(dmat4x3v) 982 970 999:39(float64_t) Load 998 1000:39(float64_t) FAdd 997 999 1001: 40(ptr) AccessChain 781(dmat2x4v) 978 966 1002:39(float64_t) Load 1001 1003:39(float64_t) FAdd 1000 1002 1004: 40(ptr) AccessChain 787(dmat4x2v) 978 966 1005:39(float64_t) Load 1004 1006:39(float64_t) FAdd 1003 1005 1007: 440(bool) Load 442(boolv) 1009: 10(float) Select 1007 1008 21 1010:39(float64_t) FConvert 1009 1011:39(float64_t) FAdd 1006 1010 1012: 441(ptr) AccessChain 451(bvec2v) 33 1013: 440(bool) Load 1012 1014: 10(float) Select 1013 1008 21 1015:39(float64_t) FConvert 1014 1016:39(float64_t) FAdd 1011 1015 1017: 441(ptr) AccessChain 460(bvec3v) 33 1018: 440(bool) Load 1017 1019: 10(float) Select 1018 1008 21 1020:39(float64_t) FConvert 1019 1021:39(float64_t) FAdd 1016 1020 1022: 441(ptr) AccessChain 469(bvec4v) 33 1023: 440(bool) Load 1022 1024: 10(float) Select 1023 1008 21 1025:39(float64_t) FConvert 1024 1026:39(float64_t) FAdd 1021 1025 1027: 10(float) FConvert 1026 1028: 11(fvec4) Load 13(outp) 1029: 11(fvec4) VectorTimesScalar 1028 1027 Store 13(outp) 1029 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.400.frag.out000066400000000000000000002160041506534232700212330ustar00rootroot00000000000000spv.400.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 1134 Capability Shader Capability Geometry Capability Float64 Capability ImageGatherExtended Capability ClipDistance Capability SampledRect 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 1039 1045 1050 1066 1092 1113 1115 1121 1123 1132 ExecutionMode 4 OriginUpperLeft Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" Name 4 "main" Name 6 "foo23(" Name 8 "doubles(" Name 13 "outp" Name 17 "u2drs" Name 41 "doublev" Name 45 "dvec2v" Name 50 "dvec3v" Name 55 "dvec4v" Name 242 "ResType" Name 249 "ResType" Name 256 "ResType" Name 263 "ResType" Name 442 "boolv" Name 451 "bvec2v" Name 460 "bvec3v" Name 469 "bvec4v" Name 751 "dmat2v" Name 757 "dmat3v" Name 763 "dmat4v" Name 769 "dmat2x3v" Name 775 "dmat3x2v" Name 781 "dmat2x4v" Name 787 "dmat4x2v" Name 793 "dmat3x4v" Name 799 "dmat4x3v" Name 1031 "v" Name 1037 "arrayedSampler" Name 1039 "i" Name 1045 "c2D" Name 1050 "gl_ClipDistance" Name 1066 "uoutp" Name 1070 "samp2dr" Name 1092 "ioutp" Name 1096 "isamp2DA" Name 1113 "gl_FragCoord" Name 1115 "vl2" Name 1121 "uo" Name 1123 "u" Name 1131 "id" Name 1132 "gl_PrimitiveID" Decorate 13(outp) Location 1 Decorate 17(u2drs) Binding 3 Decorate 17(u2drs) DescriptorSet 0 Decorate 1037(arrayedSampler) Binding 0 Decorate 1037(arrayedSampler) DescriptorSet 0 Decorate 1039(i) Flat Decorate 1039(i) Location 1 Decorate 1045(c2D) Location 0 Decorate 1050(gl_ClipDistance) BuiltIn ClipDistance Decorate 1066(uoutp) Location 3 Decorate 1070(samp2dr) Binding 1 Decorate 1070(samp2dr) DescriptorSet 0 Decorate 1092(ioutp) Location 2 Decorate 1096(isamp2DA) Binding 2 Decorate 1096(isamp2DA) DescriptorSet 0 Decorate 1113(gl_FragCoord) BuiltIn FragCoord Decorate 1115(vl2) Location 6 Decorate 1121(uo) Location 0 Decorate 1123(u) Flat Decorate 1123(u) Location 2 Decorate 1132(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 1132(gl_PrimitiveID) Flat 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Output 11(fvec4) 13(outp): 12(ptr) Variable Output 14: TypeImage 10(float) Rect depth sampled format:Unknown 15: TypeSampledImage 14 16: TypePointer UniformConstant 15 17(u2drs): 16(ptr) Variable UniformConstant 20: TypeVector 10(float) 2 21: 10(float) Constant 0 22: 20(fvec2) ConstantComposite 21 21 23: TypeInt 32 1 24: TypeVector 23(int) 2 25: 23(int) Constant 3 26: 23(int) Constant 4 27: 24(ivec2) ConstantComposite 25 26 32: TypeInt 32 0 33: 32(int) Constant 0 34: TypePointer Output 10(float) 39: TypeFloat 64 40: TypePointer Function 39(float64_t) 42:39(float64_t) Constant 2507418074 1073430332 43: TypeVector 39(float64_t) 2 44: TypePointer Function 43(f64vec2) 46:39(float64_t) Constant 796182188 1073367658 47: 43(f64vec2) ConstantComposite 46 46 48: TypeVector 39(float64_t) 3 49: TypePointer Function 48(f64vec3) 51:39(float64_t) Constant 1719614413 1073127582 52: 48(f64vec3) ConstantComposite 51 51 51 53: TypeVector 39(float64_t) 4 54: TypePointer Function 53(f64vec4) 242(ResType): TypeStruct 39(float64_t) 39(float64_t) 249(ResType): TypeStruct 43(f64vec2) 43(f64vec2) 256(ResType): TypeStruct 48(f64vec3) 48(f64vec3) 263(ResType): TypeStruct 53(f64vec4) 53(f64vec4) 440: TypeBool 441: TypePointer Function 440(bool) 449: TypeVector 440(bool) 2 450: TypePointer Function 449(bvec2) 458: TypeVector 440(bool) 3 459: TypePointer Function 458(bvec3) 467: TypeVector 440(bool) 4 468: TypePointer Function 467(bvec4) 575: 440(bool) ConstantFalse 584: 449(bvec2) ConstantComposite 575 575 593: 458(bvec3) ConstantComposite 575 575 575 602: 467(bvec4) ConstantComposite 575 575 575 575 749: TypeMatrix 43(f64vec2) 2 750: TypePointer Function 749 755: TypeMatrix 48(f64vec3) 3 756: TypePointer Function 755 761: TypeMatrix 53(f64vec4) 4 762: TypePointer Function 761 767: TypeMatrix 48(f64vec3) 2 768: TypePointer Function 767 773: TypeMatrix 43(f64vec2) 3 774: TypePointer Function 773 779: TypeMatrix 53(f64vec4) 2 780: TypePointer Function 779 785: TypeMatrix 43(f64vec2) 4 786: TypePointer Function 785 791: TypeMatrix 53(f64vec4) 3 792: TypePointer Function 791 797: TypeMatrix 48(f64vec3) 4 798: TypePointer Function 797 966: 32(int) Constant 1 970: 32(int) Constant 2 974: 32(int) Constant 3 978: 23(int) Constant 1 982: 23(int) Constant 2 1008: 10(float) Constant 1065353216 1030: TypePointer Function 11(fvec4) 1032: TypeImage 10(float) 2D sampled format:Unknown 1033: TypeSampledImage 1032 1034: 32(int) Constant 5 1035: TypeArray 1033 1034 1036: TypePointer UniformConstant 1035 1037(arrayedSampler): 1036(ptr) Variable UniformConstant 1038: TypePointer Input 23(int) 1039(i): 1038(ptr) Variable Input 1041: TypePointer UniformConstant 1033 1044: TypePointer Input 20(fvec2) 1045(c2D): 1044(ptr) Variable Input 1048: TypeArray 10(float) 970 1049: TypePointer Input 1048 1050(gl_ClipDistance): 1049(ptr) Variable Input 1051: TypePointer Input 10(float) 1055: TypeVector 10(float) 3 1064: TypeVector 32(int) 4 1065: TypePointer Output 1064(ivec4) 1066(uoutp): 1065(ptr) Variable Output 1067: TypeImage 32(int) Rect sampled format:Unknown 1068: TypeSampledImage 1067 1069: TypePointer UniformConstant 1068 1070(samp2dr): 1069(ptr) Variable UniformConstant 1073: 32(int) Constant 4 1074: TypeArray 24(ivec2) 1073 1075: 24(ivec2) ConstantComposite 978 982 1076: 23(int) Constant 15 1077: 23(int) Constant 16 1078: 24(ivec2) ConstantComposite 1076 1077 1079: 23(int) Constant 4294967294 1080: 23(int) Constant 0 1081: 24(ivec2) ConstantComposite 1079 1080 1082: 1074 ConstantComposite 1075 27 1078 1081 1090: TypeVector 23(int) 4 1091: TypePointer Output 1090(ivec4) 1092(ioutp): 1091(ptr) Variable Output 1093: TypeImage 23(int) 2D array sampled format:Unknown 1094: TypeSampledImage 1093 1095: TypePointer UniformConstant 1094 1096(isamp2DA): 1095(ptr) Variable UniformConstant 1098: 10(float) Constant 1036831949 1099: 1055(fvec3) ConstantComposite 1098 1098 1098 1100: 24(ivec2) ConstantComposite 978 978 1112: TypePointer Input 11(fvec4) 1113(gl_FragCoord): 1112(ptr) Variable Input 1115(vl2): 1112(ptr) Variable Input 1120: TypePointer Output 32(int) 1121(uo): 1120(ptr) Variable Output 1122: TypePointer Input 32(int) 1123(u): 1122(ptr) Variable Input 1130: TypePointer Function 23(int) 1132(gl_PrimitiveID): 1038(ptr) Variable Input 4(main): 2 Function None 3 5: Label 1031(v): 1030(ptr) Variable Function 1131(id): 1130(ptr) Variable Function 1040: 23(int) Load 1039(i) 1042: 1041(ptr) AccessChain 1037(arrayedSampler) 1040 1043: 1033 Load 1042 1046: 20(fvec2) Load 1045(c2D) 1047: 11(fvec4) ImageSampleImplicitLod 1043 1046 Store 1031(v) 1047 1052: 1051(ptr) AccessChain 1050(gl_ClipDistance) 978 1053: 10(float) Load 1052 1054: 34(ptr) AccessChain 13(outp) 33 Store 1054 1053 1056: 11(fvec4) Load 1031(v) 1057: 1055(fvec3) VectorShuffle 1056 1056 1 2 3 1058: 34(ptr) AccessChain 13(outp) 966 1059: 10(float) CompositeExtract 1057 0 Store 1058 1059 1060: 34(ptr) AccessChain 13(outp) 970 1061: 10(float) CompositeExtract 1057 1 Store 1060 1061 1062: 34(ptr) AccessChain 13(outp) 974 1063: 10(float) CompositeExtract 1057 2 Store 1062 1063 1071: 1068 Load 1070(samp2dr) 1072: 20(fvec2) Load 1045(c2D) 1083: 1064(ivec4) ImageGather 1071 1072 982 ConstOffsets 1082 Store 1066(uoutp) 1083 1084: 1041(ptr) AccessChain 1037(arrayedSampler) 1080 1085: 1033 Load 1084 1086: 20(fvec2) Load 1045(c2D) 1087: 11(fvec4) ImageGather 1085 1086 1080 1088: 11(fvec4) Load 13(outp) 1089: 11(fvec4) FAdd 1088 1087 Store 13(outp) 1089 1097: 1094 Load 1096(isamp2DA) 1101: 1090(ivec4) ImageGather 1097 1099 25 ConstOffset 1100 Store 1092(ioutp) 1101 1102: 1094 Load 1096(isamp2DA) 1103: 1090(ivec4) ImageGather 1102 1099 25 ConstOffset 1100 1104: 1090(ivec4) Load 1092(ioutp) 1105: 1090(ivec4) IAdd 1104 1103 Store 1092(ioutp) 1105 1106: 1094 Load 1096(isamp2DA) 1107: 23(int) Load 1039(i) 1108: 24(ivec2) CompositeConstruct 1107 1107 1109: 1090(ivec4) ImageGather 1106 1099 1080 Offset 1108 1110: 1090(ivec4) Load 1092(ioutp) 1111: 1090(ivec4) IAdd 1110 1109 Store 1092(ioutp) 1111 1114: 11(fvec4) Load 1113(gl_FragCoord) 1116: 11(fvec4) Load 1115(vl2) 1117: 11(fvec4) FAdd 1114 1116 1118: 11(fvec4) Load 13(outp) 1119: 11(fvec4) FAdd 1118 1117 Store 13(outp) 1119 1124: 32(int) Load 1123(u) 1125: 23(int) Load 1039(i) 1126: 32(int) Bitcast 1125 1127: 32(int) UMod 1124 1126 Store 1121(uo) 1127 1128: 2 FunctionCall 6(foo23() 1129: 2 FunctionCall 8(doubles() 1133: 23(int) Load 1132(gl_PrimitiveID) Store 1131(id) 1133 Return FunctionEnd 6(foo23(): 2 Function None 3 7: Label 18: 15 Load 17(u2drs) 19: 11(fvec4) Load 13(outp) 28: 10(float) CompositeExtract 19 2 29: 10(float) CompositeExtract 19 3 30: 11(fvec4) CompositeInsert 29 19 2 31: 10(float) ImageSampleProjDrefExplicitLod 18 30 28 Grad ConstOffset 22 22 27 35: 34(ptr) AccessChain 13(outp) 33 36: 10(float) Load 35 37: 10(float) FAdd 36 31 38: 34(ptr) AccessChain 13(outp) 33 Store 38 37 Return FunctionEnd 8(doubles(): 2 Function None 3 9: Label 41(doublev): 40(ptr) Variable Function 45(dvec2v): 44(ptr) Variable Function 50(dvec3v): 49(ptr) Variable Function 55(dvec4v): 54(ptr) Variable Function 442(boolv): 441(ptr) Variable Function 451(bvec2v): 450(ptr) Variable Function 460(bvec3v): 459(ptr) Variable Function 469(bvec4v): 468(ptr) Variable Function 569: 441(ptr) Variable Function 578: 450(ptr) Variable Function 587: 459(ptr) Variable Function 596: 468(ptr) Variable Function 751(dmat2v): 750(ptr) Variable Function 757(dmat3v): 756(ptr) Variable Function 763(dmat4v): 762(ptr) Variable Function 769(dmat2x3v): 768(ptr) Variable Function 775(dmat3x2v): 774(ptr) Variable Function 781(dmat2x4v): 780(ptr) Variable Function 787(dmat4x2v): 786(ptr) Variable Function 793(dmat3x4v): 792(ptr) Variable Function 799(dmat4x3v): 798(ptr) Variable Function Store 41(doublev) 42 Store 45(dvec2v) 47 Store 50(dvec3v) 52 56:39(float64_t) Load 41(doublev) 57: 53(f64vec4) CompositeConstruct 56 56 56 56 58: 53(f64vec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 57 Store 55(dvec4v) 58 59:39(float64_t) Load 41(doublev) 60:39(float64_t) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 59 61:39(float64_t) Load 41(doublev) 62:39(float64_t) FAdd 61 60 Store 41(doublev) 62 63: 43(f64vec2) Load 45(dvec2v) 64: 43(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 63 65: 43(f64vec2) Load 45(dvec2v) 66: 43(f64vec2) FAdd 65 64 Store 45(dvec2v) 66 67: 48(f64vec3) Load 50(dvec3v) 68: 48(f64vec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 67 69: 48(f64vec3) Load 50(dvec3v) 70: 48(f64vec3) FAdd 69 68 Store 50(dvec3v) 70 71: 53(f64vec4) Load 55(dvec4v) 72: 53(f64vec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 71 73: 53(f64vec4) Load 55(dvec4v) 74: 53(f64vec4) FAdd 73 72 Store 55(dvec4v) 74 75:39(float64_t) Load 41(doublev) 76:39(float64_t) ExtInst 1(GLSL.std.450) 4(FAbs) 75 77:39(float64_t) Load 41(doublev) 78:39(float64_t) FAdd 77 76 Store 41(doublev) 78 79: 43(f64vec2) Load 45(dvec2v) 80: 43(f64vec2) ExtInst 1(GLSL.std.450) 4(FAbs) 79 81: 43(f64vec2) Load 45(dvec2v) 82: 43(f64vec2) FAdd 81 80 Store 45(dvec2v) 82 83: 48(f64vec3) Load 50(dvec3v) 84: 48(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 83 85: 48(f64vec3) Load 50(dvec3v) 86: 48(f64vec3) FAdd 85 84 Store 50(dvec3v) 86 87: 53(f64vec4) Load 55(dvec4v) 88: 53(f64vec4) ExtInst 1(GLSL.std.450) 4(FAbs) 87 89: 53(f64vec4) Load 55(dvec4v) 90: 53(f64vec4) FAdd 89 88 Store 55(dvec4v) 90 91:39(float64_t) Load 41(doublev) 92:39(float64_t) ExtInst 1(GLSL.std.450) 6(FSign) 91 93:39(float64_t) Load 41(doublev) 94:39(float64_t) FAdd 93 92 Store 41(doublev) 94 95: 43(f64vec2) Load 45(dvec2v) 96: 43(f64vec2) ExtInst 1(GLSL.std.450) 6(FSign) 95 97: 43(f64vec2) Load 45(dvec2v) 98: 43(f64vec2) FAdd 97 96 Store 45(dvec2v) 98 99: 48(f64vec3) Load 50(dvec3v) 100: 48(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 99 101: 48(f64vec3) Load 50(dvec3v) 102: 48(f64vec3) FAdd 101 100 Store 50(dvec3v) 102 103: 53(f64vec4) Load 55(dvec4v) 104: 53(f64vec4) ExtInst 1(GLSL.std.450) 6(FSign) 103 105: 53(f64vec4) Load 55(dvec4v) 106: 53(f64vec4) FAdd 105 104 Store 55(dvec4v) 106 107:39(float64_t) Load 41(doublev) 108:39(float64_t) ExtInst 1(GLSL.std.450) 8(Floor) 107 109:39(float64_t) Load 41(doublev) 110:39(float64_t) FAdd 109 108 Store 41(doublev) 110 111: 43(f64vec2) Load 45(dvec2v) 112: 43(f64vec2) ExtInst 1(GLSL.std.450) 8(Floor) 111 113: 43(f64vec2) Load 45(dvec2v) 114: 43(f64vec2) FAdd 113 112 Store 45(dvec2v) 114 115: 48(f64vec3) Load 50(dvec3v) 116: 48(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 115 117: 48(f64vec3) Load 50(dvec3v) 118: 48(f64vec3) FAdd 117 116 Store 50(dvec3v) 118 119: 53(f64vec4) Load 55(dvec4v) 120: 53(f64vec4) ExtInst 1(GLSL.std.450) 8(Floor) 119 121: 53(f64vec4) Load 55(dvec4v) 122: 53(f64vec4) FAdd 121 120 Store 55(dvec4v) 122 123:39(float64_t) Load 41(doublev) 124:39(float64_t) ExtInst 1(GLSL.std.450) 3(Trunc) 123 125:39(float64_t) Load 41(doublev) 126:39(float64_t) FAdd 125 124 Store 41(doublev) 126 127: 43(f64vec2) Load 45(dvec2v) 128: 43(f64vec2) ExtInst 1(GLSL.std.450) 3(Trunc) 127 129: 43(f64vec2) Load 45(dvec2v) 130: 43(f64vec2) FAdd 129 128 Store 45(dvec2v) 130 131: 48(f64vec3) Load 50(dvec3v) 132: 48(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 131 133: 48(f64vec3) Load 50(dvec3v) 134: 48(f64vec3) FAdd 133 132 Store 50(dvec3v) 134 135: 53(f64vec4) Load 55(dvec4v) 136: 53(f64vec4) ExtInst 1(GLSL.std.450) 3(Trunc) 135 137: 53(f64vec4) Load 55(dvec4v) 138: 53(f64vec4) FAdd 137 136 Store 55(dvec4v) 138 139:39(float64_t) Load 41(doublev) 140:39(float64_t) ExtInst 1(GLSL.std.450) 1(Round) 139 141:39(float64_t) Load 41(doublev) 142:39(float64_t) FAdd 141 140 Store 41(doublev) 142 143: 43(f64vec2) Load 45(dvec2v) 144: 43(f64vec2) ExtInst 1(GLSL.std.450) 1(Round) 143 145: 43(f64vec2) Load 45(dvec2v) 146: 43(f64vec2) FAdd 145 144 Store 45(dvec2v) 146 147: 48(f64vec3) Load 50(dvec3v) 148: 48(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 147 149: 48(f64vec3) Load 50(dvec3v) 150: 48(f64vec3) FAdd 149 148 Store 50(dvec3v) 150 151: 53(f64vec4) Load 55(dvec4v) 152: 53(f64vec4) ExtInst 1(GLSL.std.450) 1(Round) 151 153: 53(f64vec4) Load 55(dvec4v) 154: 53(f64vec4) FAdd 153 152 Store 55(dvec4v) 154 155:39(float64_t) Load 41(doublev) 156:39(float64_t) ExtInst 1(GLSL.std.450) 2(RoundEven) 155 157:39(float64_t) Load 41(doublev) 158:39(float64_t) FAdd 157 156 Store 41(doublev) 158 159: 43(f64vec2) Load 45(dvec2v) 160: 43(f64vec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 159 161: 43(f64vec2) Load 45(dvec2v) 162: 43(f64vec2) FAdd 161 160 Store 45(dvec2v) 162 163: 48(f64vec3) Load 50(dvec3v) 164: 48(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 163 165: 48(f64vec3) Load 50(dvec3v) 166: 48(f64vec3) FAdd 165 164 Store 50(dvec3v) 166 167: 53(f64vec4) Load 55(dvec4v) 168: 53(f64vec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 167 169: 53(f64vec4) Load 55(dvec4v) 170: 53(f64vec4) FAdd 169 168 Store 55(dvec4v) 170 171:39(float64_t) Load 41(doublev) 172:39(float64_t) ExtInst 1(GLSL.std.450) 9(Ceil) 171 173:39(float64_t) Load 41(doublev) 174:39(float64_t) FAdd 173 172 Store 41(doublev) 174 175: 43(f64vec2) Load 45(dvec2v) 176: 43(f64vec2) ExtInst 1(GLSL.std.450) 9(Ceil) 175 177: 43(f64vec2) Load 45(dvec2v) 178: 43(f64vec2) FAdd 177 176 Store 45(dvec2v) 178 179: 48(f64vec3) Load 50(dvec3v) 180: 48(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 179 181: 48(f64vec3) Load 50(dvec3v) 182: 48(f64vec3) FAdd 181 180 Store 50(dvec3v) 182 183: 53(f64vec4) Load 55(dvec4v) 184: 53(f64vec4) ExtInst 1(GLSL.std.450) 9(Ceil) 183 185: 53(f64vec4) Load 55(dvec4v) 186: 53(f64vec4) FAdd 185 184 Store 55(dvec4v) 186 187:39(float64_t) Load 41(doublev) 188:39(float64_t) ExtInst 1(GLSL.std.450) 10(Fract) 187 189:39(float64_t) Load 41(doublev) 190:39(float64_t) FAdd 189 188 Store 41(doublev) 190 191: 43(f64vec2) Load 45(dvec2v) 192: 43(f64vec2) ExtInst 1(GLSL.std.450) 10(Fract) 191 193: 43(f64vec2) Load 45(dvec2v) 194: 43(f64vec2) FAdd 193 192 Store 45(dvec2v) 194 195: 48(f64vec3) Load 50(dvec3v) 196: 48(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 195 197: 48(f64vec3) Load 50(dvec3v) 198: 48(f64vec3) FAdd 197 196 Store 50(dvec3v) 198 199: 53(f64vec4) Load 55(dvec4v) 200: 53(f64vec4) ExtInst 1(GLSL.std.450) 10(Fract) 199 201: 53(f64vec4) Load 55(dvec4v) 202: 53(f64vec4) FAdd 201 200 Store 55(dvec4v) 202 203:39(float64_t) Load 41(doublev) 204:39(float64_t) Load 41(doublev) 205:39(float64_t) FMod 203 204 206:39(float64_t) Load 41(doublev) 207:39(float64_t) FAdd 206 205 Store 41(doublev) 207 208: 43(f64vec2) Load 45(dvec2v) 209:39(float64_t) Load 41(doublev) 210: 43(f64vec2) CompositeConstruct 209 209 211: 43(f64vec2) FMod 208 210 212: 43(f64vec2) Load 45(dvec2v) 213: 43(f64vec2) FAdd 212 211 Store 45(dvec2v) 213 214: 48(f64vec3) Load 50(dvec3v) 215:39(float64_t) Load 41(doublev) 216: 48(f64vec3) CompositeConstruct 215 215 215 217: 48(f64vec3) FMod 214 216 218: 48(f64vec3) Load 50(dvec3v) 219: 48(f64vec3) FAdd 218 217 Store 50(dvec3v) 219 220: 53(f64vec4) Load 55(dvec4v) 221:39(float64_t) Load 41(doublev) 222: 53(f64vec4) CompositeConstruct 221 221 221 221 223: 53(f64vec4) FMod 220 222 224: 53(f64vec4) Load 55(dvec4v) 225: 53(f64vec4) FAdd 224 223 Store 55(dvec4v) 225 226: 43(f64vec2) Load 45(dvec2v) 227: 43(f64vec2) Load 45(dvec2v) 228: 43(f64vec2) FMod 226 227 229: 43(f64vec2) Load 45(dvec2v) 230: 43(f64vec2) FAdd 229 228 Store 45(dvec2v) 230 231: 48(f64vec3) Load 50(dvec3v) 232: 48(f64vec3) Load 50(dvec3v) 233: 48(f64vec3) FMod 231 232 234: 48(f64vec3) Load 50(dvec3v) 235: 48(f64vec3) FAdd 234 233 Store 50(dvec3v) 235 236: 53(f64vec4) Load 55(dvec4v) 237: 53(f64vec4) Load 55(dvec4v) 238: 53(f64vec4) FMod 236 237 239: 53(f64vec4) Load 55(dvec4v) 240: 53(f64vec4) FAdd 239 238 Store 55(dvec4v) 240 241:39(float64_t) Load 41(doublev) 243:242(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 241 244:39(float64_t) CompositeExtract 243 1 Store 41(doublev) 244 245:39(float64_t) CompositeExtract 243 0 246:39(float64_t) Load 41(doublev) 247:39(float64_t) FAdd 246 245 Store 41(doublev) 247 248: 43(f64vec2) Load 45(dvec2v) 250:249(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 248 251: 43(f64vec2) CompositeExtract 250 1 Store 45(dvec2v) 251 252: 43(f64vec2) CompositeExtract 250 0 253: 43(f64vec2) Load 45(dvec2v) 254: 43(f64vec2) FAdd 253 252 Store 45(dvec2v) 254 255: 48(f64vec3) Load 50(dvec3v) 257:256(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 255 258: 48(f64vec3) CompositeExtract 257 1 Store 50(dvec3v) 258 259: 48(f64vec3) CompositeExtract 257 0 260: 48(f64vec3) Load 50(dvec3v) 261: 48(f64vec3) FAdd 260 259 Store 50(dvec3v) 261 262: 53(f64vec4) Load 55(dvec4v) 264:263(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 262 265: 53(f64vec4) CompositeExtract 264 1 Store 55(dvec4v) 265 266: 53(f64vec4) CompositeExtract 264 0 267: 53(f64vec4) Load 55(dvec4v) 268: 53(f64vec4) FAdd 267 266 Store 55(dvec4v) 268 269:39(float64_t) Load 41(doublev) 270:39(float64_t) Load 41(doublev) 271:39(float64_t) ExtInst 1(GLSL.std.450) 37(FMin) 269 270 272:39(float64_t) Load 41(doublev) 273:39(float64_t) FAdd 272 271 Store 41(doublev) 273 274: 43(f64vec2) Load 45(dvec2v) 275:39(float64_t) Load 41(doublev) 276: 43(f64vec2) CompositeConstruct 275 275 277: 43(f64vec2) ExtInst 1(GLSL.std.450) 37(FMin) 274 276 278: 43(f64vec2) Load 45(dvec2v) 279: 43(f64vec2) FAdd 278 277 Store 45(dvec2v) 279 280: 48(f64vec3) Load 50(dvec3v) 281:39(float64_t) Load 41(doublev) 282: 48(f64vec3) CompositeConstruct 281 281 281 283: 48(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 280 282 284: 48(f64vec3) Load 50(dvec3v) 285: 48(f64vec3) FAdd 284 283 Store 50(dvec3v) 285 286: 53(f64vec4) Load 55(dvec4v) 287:39(float64_t) Load 41(doublev) 288: 53(f64vec4) CompositeConstruct 287 287 287 287 289: 53(f64vec4) ExtInst 1(GLSL.std.450) 37(FMin) 286 288 290: 53(f64vec4) Load 55(dvec4v) 291: 53(f64vec4) FAdd 290 289 Store 55(dvec4v) 291 292: 43(f64vec2) Load 45(dvec2v) 293: 43(f64vec2) Load 45(dvec2v) 294: 43(f64vec2) ExtInst 1(GLSL.std.450) 37(FMin) 292 293 295: 43(f64vec2) Load 45(dvec2v) 296: 43(f64vec2) FAdd 295 294 Store 45(dvec2v) 296 297: 48(f64vec3) Load 50(dvec3v) 298: 48(f64vec3) Load 50(dvec3v) 299: 48(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 297 298 300: 48(f64vec3) Load 50(dvec3v) 301: 48(f64vec3) FAdd 300 299 Store 50(dvec3v) 301 302: 53(f64vec4) Load 55(dvec4v) 303: 53(f64vec4) Load 55(dvec4v) 304: 53(f64vec4) ExtInst 1(GLSL.std.450) 37(FMin) 302 303 305: 53(f64vec4) Load 55(dvec4v) 306: 53(f64vec4) FAdd 305 304 Store 55(dvec4v) 306 307:39(float64_t) Load 41(doublev) 308:39(float64_t) Load 41(doublev) 309:39(float64_t) ExtInst 1(GLSL.std.450) 40(FMax) 307 308 310:39(float64_t) Load 41(doublev) 311:39(float64_t) FAdd 310 309 Store 41(doublev) 311 312: 43(f64vec2) Load 45(dvec2v) 313:39(float64_t) Load 41(doublev) 314: 43(f64vec2) CompositeConstruct 313 313 315: 43(f64vec2) ExtInst 1(GLSL.std.450) 40(FMax) 312 314 316: 43(f64vec2) Load 45(dvec2v) 317: 43(f64vec2) FAdd 316 315 Store 45(dvec2v) 317 318: 48(f64vec3) Load 50(dvec3v) 319:39(float64_t) Load 41(doublev) 320: 48(f64vec3) CompositeConstruct 319 319 319 321: 48(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 318 320 322: 48(f64vec3) Load 50(dvec3v) 323: 48(f64vec3) FAdd 322 321 Store 50(dvec3v) 323 324: 53(f64vec4) Load 55(dvec4v) 325:39(float64_t) Load 41(doublev) 326: 53(f64vec4) CompositeConstruct 325 325 325 325 327: 53(f64vec4) ExtInst 1(GLSL.std.450) 40(FMax) 324 326 328: 53(f64vec4) Load 55(dvec4v) 329: 53(f64vec4) FAdd 328 327 Store 55(dvec4v) 329 330: 43(f64vec2) Load 45(dvec2v) 331: 43(f64vec2) Load 45(dvec2v) 332: 43(f64vec2) ExtInst 1(GLSL.std.450) 40(FMax) 330 331 333: 43(f64vec2) Load 45(dvec2v) 334: 43(f64vec2) FAdd 333 332 Store 45(dvec2v) 334 335: 48(f64vec3) Load 50(dvec3v) 336: 48(f64vec3) Load 50(dvec3v) 337: 48(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 335 336 338: 48(f64vec3) Load 50(dvec3v) 339: 48(f64vec3) FAdd 338 337 Store 50(dvec3v) 339 340: 53(f64vec4) Load 55(dvec4v) 341: 53(f64vec4) Load 55(dvec4v) 342: 53(f64vec4) ExtInst 1(GLSL.std.450) 40(FMax) 340 341 343: 53(f64vec4) Load 55(dvec4v) 344: 53(f64vec4) FAdd 343 342 Store 55(dvec4v) 344 345:39(float64_t) Load 41(doublev) 346:39(float64_t) Load 41(doublev) 347:39(float64_t) Load 41(doublev) 348:39(float64_t) ExtInst 1(GLSL.std.450) 43(FClamp) 345 346 347 349:39(float64_t) Load 41(doublev) 350:39(float64_t) FAdd 349 348 Store 41(doublev) 350 351: 43(f64vec2) Load 45(dvec2v) 352:39(float64_t) Load 41(doublev) 353:39(float64_t) Load 41(doublev) 354: 43(f64vec2) CompositeConstruct 352 352 355: 43(f64vec2) CompositeConstruct 353 353 356: 43(f64vec2) ExtInst 1(GLSL.std.450) 43(FClamp) 351 354 355 357: 43(f64vec2) Load 45(dvec2v) 358: 43(f64vec2) FAdd 357 356 Store 45(dvec2v) 358 359: 48(f64vec3) Load 50(dvec3v) 360:39(float64_t) Load 41(doublev) 361:39(float64_t) Load 41(doublev) 362: 48(f64vec3) CompositeConstruct 360 360 360 363: 48(f64vec3) CompositeConstruct 361 361 361 364: 48(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 359 362 363 365: 48(f64vec3) Load 50(dvec3v) 366: 48(f64vec3) FAdd 365 364 Store 50(dvec3v) 366 367: 53(f64vec4) Load 55(dvec4v) 368:39(float64_t) Load 41(doublev) 369:39(float64_t) Load 41(doublev) 370: 53(f64vec4) CompositeConstruct 368 368 368 368 371: 53(f64vec4) CompositeConstruct 369 369 369 369 372: 53(f64vec4) ExtInst 1(GLSL.std.450) 43(FClamp) 367 370 371 373: 53(f64vec4) Load 55(dvec4v) 374: 53(f64vec4) FAdd 373 372 Store 55(dvec4v) 374 375: 43(f64vec2) Load 45(dvec2v) 376: 43(f64vec2) Load 45(dvec2v) 377: 43(f64vec2) Load 45(dvec2v) 378: 43(f64vec2) ExtInst 1(GLSL.std.450) 43(FClamp) 375 376 377 379: 43(f64vec2) Load 45(dvec2v) 380: 43(f64vec2) FAdd 379 378 Store 45(dvec2v) 380 381: 48(f64vec3) Load 50(dvec3v) 382: 48(f64vec3) Load 50(dvec3v) 383: 48(f64vec3) Load 50(dvec3v) 384: 48(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 381 382 383 385: 48(f64vec3) Load 50(dvec3v) 386: 48(f64vec3) FAdd 385 384 Store 50(dvec3v) 386 387: 53(f64vec4) Load 55(dvec4v) 388: 53(f64vec4) Load 55(dvec4v) 389: 53(f64vec4) Load 55(dvec4v) 390: 53(f64vec4) ExtInst 1(GLSL.std.450) 43(FClamp) 387 388 389 391: 53(f64vec4) Load 55(dvec4v) 392: 53(f64vec4) FAdd 391 390 Store 55(dvec4v) 392 393:39(float64_t) Load 41(doublev) 394:39(float64_t) Load 41(doublev) 395:39(float64_t) Load 41(doublev) 396:39(float64_t) ExtInst 1(GLSL.std.450) 46(FMix) 393 394 395 397:39(float64_t) Load 41(doublev) 398:39(float64_t) FAdd 397 396 Store 41(doublev) 398 399: 43(f64vec2) Load 45(dvec2v) 400: 43(f64vec2) Load 45(dvec2v) 401:39(float64_t) Load 41(doublev) 402: 43(f64vec2) CompositeConstruct 401 401 403: 43(f64vec2) ExtInst 1(GLSL.std.450) 46(FMix) 399 400 402 404: 43(f64vec2) Load 45(dvec2v) 405: 43(f64vec2) FAdd 404 403 Store 45(dvec2v) 405 406: 48(f64vec3) Load 50(dvec3v) 407: 48(f64vec3) Load 50(dvec3v) 408:39(float64_t) Load 41(doublev) 409: 48(f64vec3) CompositeConstruct 408 408 408 410: 48(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 406 407 409 411: 48(f64vec3) Load 50(dvec3v) 412: 48(f64vec3) FAdd 411 410 Store 50(dvec3v) 412 413: 53(f64vec4) Load 55(dvec4v) 414: 53(f64vec4) Load 55(dvec4v) 415:39(float64_t) Load 41(doublev) 416: 53(f64vec4) CompositeConstruct 415 415 415 415 417: 53(f64vec4) ExtInst 1(GLSL.std.450) 46(FMix) 413 414 416 418: 53(f64vec4) Load 55(dvec4v) 419: 53(f64vec4) FAdd 418 417 Store 55(dvec4v) 419 420: 43(f64vec2) Load 45(dvec2v) 421: 43(f64vec2) Load 45(dvec2v) 422: 43(f64vec2) Load 45(dvec2v) 423: 43(f64vec2) ExtInst 1(GLSL.std.450) 46(FMix) 420 421 422 424: 43(f64vec2) Load 45(dvec2v) 425: 43(f64vec2) FAdd 424 423 Store 45(dvec2v) 425 426: 48(f64vec3) Load 50(dvec3v) 427: 48(f64vec3) Load 50(dvec3v) 428: 48(f64vec3) Load 50(dvec3v) 429: 48(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 426 427 428 430: 48(f64vec3) Load 50(dvec3v) 431: 48(f64vec3) FAdd 430 429 Store 50(dvec3v) 431 432: 53(f64vec4) Load 55(dvec4v) 433: 53(f64vec4) Load 55(dvec4v) 434: 53(f64vec4) Load 55(dvec4v) 435: 53(f64vec4) ExtInst 1(GLSL.std.450) 46(FMix) 432 433 434 436: 53(f64vec4) Load 55(dvec4v) 437: 53(f64vec4) FAdd 436 435 Store 55(dvec4v) 437 438:39(float64_t) Load 41(doublev) 439:39(float64_t) Load 41(doublev) 443: 440(bool) Load 442(boolv) 444:39(float64_t) Select 443 439 438 445:39(float64_t) Load 41(doublev) 446:39(float64_t) FAdd 445 444 Store 41(doublev) 446 447: 43(f64vec2) Load 45(dvec2v) 448: 43(f64vec2) Load 45(dvec2v) 452: 449(bvec2) Load 451(bvec2v) 453: 43(f64vec2) Select 452 448 447 454: 43(f64vec2) Load 45(dvec2v) 455: 43(f64vec2) FAdd 454 453 Store 45(dvec2v) 455 456: 48(f64vec3) Load 50(dvec3v) 457: 48(f64vec3) Load 50(dvec3v) 461: 458(bvec3) Load 460(bvec3v) 462: 48(f64vec3) Select 461 457 456 463: 48(f64vec3) Load 50(dvec3v) 464: 48(f64vec3) FAdd 463 462 Store 50(dvec3v) 464 465: 53(f64vec4) Load 55(dvec4v) 466: 53(f64vec4) Load 55(dvec4v) 470: 467(bvec4) Load 469(bvec4v) 471: 53(f64vec4) Select 470 466 465 472: 53(f64vec4) Load 55(dvec4v) 473: 53(f64vec4) FAdd 472 471 Store 55(dvec4v) 473 474:39(float64_t) Load 41(doublev) 475:39(float64_t) Load 41(doublev) 476:39(float64_t) ExtInst 1(GLSL.std.450) 48(Step) 474 475 477:39(float64_t) Load 41(doublev) 478:39(float64_t) FAdd 477 476 Store 41(doublev) 478 479: 43(f64vec2) Load 45(dvec2v) 480: 43(f64vec2) Load 45(dvec2v) 481: 43(f64vec2) ExtInst 1(GLSL.std.450) 48(Step) 479 480 482: 43(f64vec2) Load 45(dvec2v) 483: 43(f64vec2) FAdd 482 481 Store 45(dvec2v) 483 484: 48(f64vec3) Load 50(dvec3v) 485: 48(f64vec3) Load 50(dvec3v) 486: 48(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 484 485 487: 48(f64vec3) Load 50(dvec3v) 488: 48(f64vec3) FAdd 487 486 Store 50(dvec3v) 488 489: 53(f64vec4) Load 55(dvec4v) 490: 53(f64vec4) Load 55(dvec4v) 491: 53(f64vec4) ExtInst 1(GLSL.std.450) 48(Step) 489 490 492: 53(f64vec4) Load 55(dvec4v) 493: 53(f64vec4) FAdd 492 491 Store 55(dvec4v) 493 494:39(float64_t) Load 41(doublev) 495: 43(f64vec2) Load 45(dvec2v) 496: 43(f64vec2) CompositeConstruct 494 494 497: 43(f64vec2) ExtInst 1(GLSL.std.450) 48(Step) 496 495 498: 43(f64vec2) Load 45(dvec2v) 499: 43(f64vec2) FAdd 498 497 Store 45(dvec2v) 499 500:39(float64_t) Load 41(doublev) 501: 48(f64vec3) Load 50(dvec3v) 502: 48(f64vec3) CompositeConstruct 500 500 500 503: 48(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 502 501 504: 48(f64vec3) Load 50(dvec3v) 505: 48(f64vec3) FAdd 504 503 Store 50(dvec3v) 505 506:39(float64_t) Load 41(doublev) 507: 53(f64vec4) Load 55(dvec4v) 508: 53(f64vec4) CompositeConstruct 506 506 506 506 509: 53(f64vec4) ExtInst 1(GLSL.std.450) 48(Step) 508 507 510: 53(f64vec4) Load 55(dvec4v) 511: 53(f64vec4) FAdd 510 509 Store 55(dvec4v) 511 512:39(float64_t) Load 41(doublev) 513:39(float64_t) Load 41(doublev) 514:39(float64_t) Load 41(doublev) 515:39(float64_t) ExtInst 1(GLSL.std.450) 49(SmoothStep) 512 513 514 516:39(float64_t) Load 41(doublev) 517:39(float64_t) FAdd 516 515 Store 41(doublev) 517 518: 43(f64vec2) Load 45(dvec2v) 519: 43(f64vec2) Load 45(dvec2v) 520: 43(f64vec2) Load 45(dvec2v) 521: 43(f64vec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 518 519 520 522: 43(f64vec2) Load 45(dvec2v) 523: 43(f64vec2) FAdd 522 521 Store 45(dvec2v) 523 524: 48(f64vec3) Load 50(dvec3v) 525: 48(f64vec3) Load 50(dvec3v) 526: 48(f64vec3) Load 50(dvec3v) 527: 48(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 524 525 526 528: 48(f64vec3) Load 50(dvec3v) 529: 48(f64vec3) FAdd 528 527 Store 50(dvec3v) 529 530: 53(f64vec4) Load 55(dvec4v) 531: 53(f64vec4) Load 55(dvec4v) 532: 53(f64vec4) Load 55(dvec4v) 533: 53(f64vec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 530 531 532 534: 53(f64vec4) Load 55(dvec4v) 535: 53(f64vec4) FAdd 534 533 Store 55(dvec4v) 535 536:39(float64_t) Load 41(doublev) 537:39(float64_t) Load 41(doublev) 538: 43(f64vec2) Load 45(dvec2v) 539: 43(f64vec2) CompositeConstruct 536 536 540: 43(f64vec2) CompositeConstruct 537 537 541: 43(f64vec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 539 540 538 542: 43(f64vec2) Load 45(dvec2v) 543: 43(f64vec2) FAdd 542 541 Store 45(dvec2v) 543 544:39(float64_t) Load 41(doublev) 545:39(float64_t) Load 41(doublev) 546: 48(f64vec3) Load 50(dvec3v) 547: 48(f64vec3) CompositeConstruct 544 544 544 548: 48(f64vec3) CompositeConstruct 545 545 545 549: 48(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 547 548 546 550: 48(f64vec3) Load 50(dvec3v) 551: 48(f64vec3) FAdd 550 549 Store 50(dvec3v) 551 552:39(float64_t) Load 41(doublev) 553:39(float64_t) Load 41(doublev) 554: 53(f64vec4) Load 55(dvec4v) 555: 53(f64vec4) CompositeConstruct 552 552 552 552 556: 53(f64vec4) CompositeConstruct 553 553 553 553 557: 53(f64vec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 555 556 554 558: 53(f64vec4) Load 55(dvec4v) 559: 53(f64vec4) FAdd 558 557 Store 55(dvec4v) 559 560:39(float64_t) Load 41(doublev) 561: 440(bool) IsNan 560 Store 442(boolv) 561 562: 43(f64vec2) Load 45(dvec2v) 563: 449(bvec2) IsNan 562 Store 451(bvec2v) 563 564: 48(f64vec3) Load 50(dvec3v) 565: 458(bvec3) IsNan 564 Store 460(bvec3v) 565 566: 53(f64vec4) Load 55(dvec4v) 567: 467(bvec4) IsNan 566 Store 469(bvec4v) 567 568: 440(bool) Load 442(boolv) SelectionMerge 571 None BranchConditional 568 570 574 570: Label 572:39(float64_t) Load 41(doublev) 573: 440(bool) IsInf 572 Store 569 573 Branch 571 574: Label Store 569 575 Branch 571 571: Label 576: 440(bool) Load 569 Store 442(boolv) 576 577: 440(bool) Load 442(boolv) SelectionMerge 580 None BranchConditional 577 579 583 579: Label 581: 43(f64vec2) Load 45(dvec2v) 582: 449(bvec2) IsInf 581 Store 578 582 Branch 580 583: Label Store 578 584 Branch 580 580: Label 585: 449(bvec2) Load 578 Store 451(bvec2v) 585 586: 440(bool) Load 442(boolv) SelectionMerge 589 None BranchConditional 586 588 592 588: Label 590: 48(f64vec3) Load 50(dvec3v) 591: 458(bvec3) IsInf 590 Store 587 591 Branch 589 592: Label Store 587 593 Branch 589 589: Label 594: 458(bvec3) Load 587 Store 460(bvec3v) 594 595: 440(bool) Load 442(boolv) SelectionMerge 598 None BranchConditional 595 597 601 597: Label 599: 53(f64vec4) Load 55(dvec4v) 600: 467(bvec4) IsInf 599 Store 596 600 Branch 598 601: Label Store 596 602 Branch 598 598: Label 603: 467(bvec4) Load 596 Store 469(bvec4v) 603 604:39(float64_t) Load 41(doublev) 605:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 604 606:39(float64_t) Load 41(doublev) 607:39(float64_t) FAdd 606 605 Store 41(doublev) 607 608: 43(f64vec2) Load 45(dvec2v) 609:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 608 610:39(float64_t) Load 41(doublev) 611:39(float64_t) FAdd 610 609 Store 41(doublev) 611 612: 48(f64vec3) Load 50(dvec3v) 613:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 612 614:39(float64_t) Load 41(doublev) 615:39(float64_t) FAdd 614 613 Store 41(doublev) 615 616: 53(f64vec4) Load 55(dvec4v) 617:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 616 618:39(float64_t) Load 41(doublev) 619:39(float64_t) FAdd 618 617 Store 41(doublev) 619 620:39(float64_t) Load 41(doublev) 621:39(float64_t) Load 41(doublev) 622:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 620 621 623:39(float64_t) Load 41(doublev) 624:39(float64_t) FAdd 623 622 Store 41(doublev) 624 625: 43(f64vec2) Load 45(dvec2v) 626: 43(f64vec2) Load 45(dvec2v) 627:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 625 626 628:39(float64_t) Load 41(doublev) 629:39(float64_t) FAdd 628 627 Store 41(doublev) 629 630: 48(f64vec3) Load 50(dvec3v) 631: 48(f64vec3) Load 50(dvec3v) 632:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 630 631 633:39(float64_t) Load 41(doublev) 634:39(float64_t) FAdd 633 632 Store 41(doublev) 634 635: 53(f64vec4) Load 55(dvec4v) 636: 53(f64vec4) Load 55(dvec4v) 637:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 635 636 638:39(float64_t) Load 41(doublev) 639:39(float64_t) FAdd 638 637 Store 41(doublev) 639 640:39(float64_t) Load 41(doublev) 641:39(float64_t) Load 41(doublev) 642:39(float64_t) FMul 640 641 643:39(float64_t) Load 41(doublev) 644:39(float64_t) FAdd 643 642 Store 41(doublev) 644 645: 43(f64vec2) Load 45(dvec2v) 646: 43(f64vec2) Load 45(dvec2v) 647:39(float64_t) Dot 645 646 648:39(float64_t) Load 41(doublev) 649:39(float64_t) FAdd 648 647 Store 41(doublev) 649 650: 48(f64vec3) Load 50(dvec3v) 651: 48(f64vec3) Load 50(dvec3v) 652:39(float64_t) Dot 650 651 653:39(float64_t) Load 41(doublev) 654:39(float64_t) FAdd 653 652 Store 41(doublev) 654 655: 53(f64vec4) Load 55(dvec4v) 656: 53(f64vec4) Load 55(dvec4v) 657:39(float64_t) Dot 655 656 658:39(float64_t) Load 41(doublev) 659:39(float64_t) FAdd 658 657 Store 41(doublev) 659 660: 48(f64vec3) Load 50(dvec3v) 661: 48(f64vec3) Load 50(dvec3v) 662: 48(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 660 661 663: 48(f64vec3) Load 50(dvec3v) 664: 48(f64vec3) FAdd 663 662 Store 50(dvec3v) 664 665:39(float64_t) Load 41(doublev) 666:39(float64_t) ExtInst 1(GLSL.std.450) 69(Normalize) 665 667:39(float64_t) Load 41(doublev) 668:39(float64_t) FAdd 667 666 Store 41(doublev) 668 669: 43(f64vec2) Load 45(dvec2v) 670: 43(f64vec2) ExtInst 1(GLSL.std.450) 69(Normalize) 669 671: 43(f64vec2) Load 45(dvec2v) 672: 43(f64vec2) FAdd 671 670 Store 45(dvec2v) 672 673: 48(f64vec3) Load 50(dvec3v) 674: 48(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 673 675: 48(f64vec3) Load 50(dvec3v) 676: 48(f64vec3) FAdd 675 674 Store 50(dvec3v) 676 677: 53(f64vec4) Load 55(dvec4v) 678: 53(f64vec4) ExtInst 1(GLSL.std.450) 69(Normalize) 677 679: 53(f64vec4) Load 55(dvec4v) 680: 53(f64vec4) FAdd 679 678 Store 55(dvec4v) 680 681:39(float64_t) Load 41(doublev) 682:39(float64_t) Load 41(doublev) 683:39(float64_t) Load 41(doublev) 684:39(float64_t) ExtInst 1(GLSL.std.450) 70(FaceForward) 681 682 683 685:39(float64_t) Load 41(doublev) 686:39(float64_t) FAdd 685 684 Store 41(doublev) 686 687: 43(f64vec2) Load 45(dvec2v) 688: 43(f64vec2) Load 45(dvec2v) 689: 43(f64vec2) Load 45(dvec2v) 690: 43(f64vec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 687 688 689 691: 43(f64vec2) Load 45(dvec2v) 692: 43(f64vec2) FAdd 691 690 Store 45(dvec2v) 692 693: 48(f64vec3) Load 50(dvec3v) 694: 48(f64vec3) Load 50(dvec3v) 695: 48(f64vec3) Load 50(dvec3v) 696: 48(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 693 694 695 697: 48(f64vec3) Load 50(dvec3v) 698: 48(f64vec3) FAdd 697 696 Store 50(dvec3v) 698 699: 53(f64vec4) Load 55(dvec4v) 700: 53(f64vec4) Load 55(dvec4v) 701: 53(f64vec4) Load 55(dvec4v) 702: 53(f64vec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 699 700 701 703: 53(f64vec4) Load 55(dvec4v) 704: 53(f64vec4) FAdd 703 702 Store 55(dvec4v) 704 705:39(float64_t) Load 41(doublev) 706:39(float64_t) Load 41(doublev) 707:39(float64_t) ExtInst 1(GLSL.std.450) 71(Reflect) 705 706 708:39(float64_t) Load 41(doublev) 709:39(float64_t) FAdd 708 707 Store 41(doublev) 709 710: 43(f64vec2) Load 45(dvec2v) 711: 43(f64vec2) Load 45(dvec2v) 712: 43(f64vec2) ExtInst 1(GLSL.std.450) 71(Reflect) 710 711 713: 43(f64vec2) Load 45(dvec2v) 714: 43(f64vec2) FAdd 713 712 Store 45(dvec2v) 714 715: 48(f64vec3) Load 50(dvec3v) 716: 48(f64vec3) Load 50(dvec3v) 717: 48(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 715 716 718: 48(f64vec3) Load 50(dvec3v) 719: 48(f64vec3) FAdd 718 717 Store 50(dvec3v) 719 720: 53(f64vec4) Load 55(dvec4v) 721: 53(f64vec4) Load 55(dvec4v) 722: 53(f64vec4) ExtInst 1(GLSL.std.450) 71(Reflect) 720 721 723: 53(f64vec4) Load 55(dvec4v) 724: 53(f64vec4) FAdd 723 722 Store 55(dvec4v) 724 725:39(float64_t) Load 41(doublev) 726:39(float64_t) Load 41(doublev) 727:39(float64_t) Load 41(doublev) 728:39(float64_t) ExtInst 1(GLSL.std.450) 72(Refract) 725 726 727 729:39(float64_t) Load 41(doublev) 730:39(float64_t) FAdd 729 728 Store 41(doublev) 730 731: 43(f64vec2) Load 45(dvec2v) 732: 43(f64vec2) Load 45(dvec2v) 733:39(float64_t) Load 41(doublev) 734: 43(f64vec2) ExtInst 1(GLSL.std.450) 72(Refract) 731 732 733 735: 43(f64vec2) Load 45(dvec2v) 736: 43(f64vec2) FAdd 735 734 Store 45(dvec2v) 736 737: 48(f64vec3) Load 50(dvec3v) 738: 48(f64vec3) Load 50(dvec3v) 739:39(float64_t) Load 41(doublev) 740: 48(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 737 738 739 741: 48(f64vec3) Load 50(dvec3v) 742: 48(f64vec3) FAdd 741 740 Store 50(dvec3v) 742 743: 53(f64vec4) Load 55(dvec4v) 744: 53(f64vec4) Load 55(dvec4v) 745:39(float64_t) Load 41(doublev) 746: 53(f64vec4) ExtInst 1(GLSL.std.450) 72(Refract) 743 744 745 747: 53(f64vec4) Load 55(dvec4v) 748: 53(f64vec4) FAdd 747 746 Store 55(dvec4v) 748 752: 43(f64vec2) Load 45(dvec2v) 753: 43(f64vec2) Load 45(dvec2v) 754: 749 OuterProduct 752 753 Store 751(dmat2v) 754 758: 48(f64vec3) Load 50(dvec3v) 759: 48(f64vec3) Load 50(dvec3v) 760: 755 OuterProduct 758 759 Store 757(dmat3v) 760 764: 53(f64vec4) Load 55(dvec4v) 765: 53(f64vec4) Load 55(dvec4v) 766: 761 OuterProduct 764 765 Store 763(dmat4v) 766 770: 48(f64vec3) Load 50(dvec3v) 771: 43(f64vec2) Load 45(dvec2v) 772: 767 OuterProduct 770 771 Store 769(dmat2x3v) 772 776: 43(f64vec2) Load 45(dvec2v) 777: 48(f64vec3) Load 50(dvec3v) 778: 773 OuterProduct 776 777 Store 775(dmat3x2v) 778 782: 53(f64vec4) Load 55(dvec4v) 783: 43(f64vec2) Load 45(dvec2v) 784: 779 OuterProduct 782 783 Store 781(dmat2x4v) 784 788: 43(f64vec2) Load 45(dvec2v) 789: 53(f64vec4) Load 55(dvec4v) 790: 785 OuterProduct 788 789 Store 787(dmat4x2v) 790 794: 53(f64vec4) Load 55(dvec4v) 795: 48(f64vec3) Load 50(dvec3v) 796: 791 OuterProduct 794 795 Store 793(dmat3x4v) 796 800: 48(f64vec3) Load 50(dvec3v) 801: 53(f64vec4) Load 55(dvec4v) 802: 797 OuterProduct 800 801 Store 799(dmat4x3v) 802 803: 749 Load 751(dmat2v) 804: 749 Load 751(dmat2v) 805: 43(f64vec2) CompositeExtract 803 0 806: 43(f64vec2) CompositeExtract 804 0 807: 43(f64vec2) FMul 805 806 808: 43(f64vec2) CompositeExtract 803 1 809: 43(f64vec2) CompositeExtract 804 1 810: 43(f64vec2) FMul 808 809 811: 749 CompositeConstruct 807 810 812: 749 Load 751(dmat2v) 813: 749 MatrixTimesMatrix 812 811 Store 751(dmat2v) 813 814: 755 Load 757(dmat3v) 815: 755 Load 757(dmat3v) 816: 48(f64vec3) CompositeExtract 814 0 817: 48(f64vec3) CompositeExtract 815 0 818: 48(f64vec3) FMul 816 817 819: 48(f64vec3) CompositeExtract 814 1 820: 48(f64vec3) CompositeExtract 815 1 821: 48(f64vec3) FMul 819 820 822: 48(f64vec3) CompositeExtract 814 2 823: 48(f64vec3) CompositeExtract 815 2 824: 48(f64vec3) FMul 822 823 825: 755 CompositeConstruct 818 821 824 826: 755 Load 757(dmat3v) 827: 755 MatrixTimesMatrix 826 825 Store 757(dmat3v) 827 828: 761 Load 763(dmat4v) 829: 761 Load 763(dmat4v) 830: 53(f64vec4) CompositeExtract 828 0 831: 53(f64vec4) CompositeExtract 829 0 832: 53(f64vec4) FMul 830 831 833: 53(f64vec4) CompositeExtract 828 1 834: 53(f64vec4) CompositeExtract 829 1 835: 53(f64vec4) FMul 833 834 836: 53(f64vec4) CompositeExtract 828 2 837: 53(f64vec4) CompositeExtract 829 2 838: 53(f64vec4) FMul 836 837 839: 53(f64vec4) CompositeExtract 828 3 840: 53(f64vec4) CompositeExtract 829 3 841: 53(f64vec4) FMul 839 840 842: 761 CompositeConstruct 832 835 838 841 843: 761 Load 763(dmat4v) 844: 761 MatrixTimesMatrix 843 842 Store 763(dmat4v) 844 845: 767 Load 769(dmat2x3v) 846: 767 Load 769(dmat2x3v) 847: 48(f64vec3) CompositeExtract 845 0 848: 48(f64vec3) CompositeExtract 846 0 849: 48(f64vec3) FMul 847 848 850: 48(f64vec3) CompositeExtract 845 1 851: 48(f64vec3) CompositeExtract 846 1 852: 48(f64vec3) FMul 850 851 853: 767 CompositeConstruct 849 852 Store 769(dmat2x3v) 853 854: 779 Load 781(dmat2x4v) 855: 779 Load 781(dmat2x4v) 856: 53(f64vec4) CompositeExtract 854 0 857: 53(f64vec4) CompositeExtract 855 0 858: 53(f64vec4) FMul 856 857 859: 53(f64vec4) CompositeExtract 854 1 860: 53(f64vec4) CompositeExtract 855 1 861: 53(f64vec4) FMul 859 860 862: 779 CompositeConstruct 858 861 Store 781(dmat2x4v) 862 863: 773 Load 775(dmat3x2v) 864: 773 Load 775(dmat3x2v) 865: 43(f64vec2) CompositeExtract 863 0 866: 43(f64vec2) CompositeExtract 864 0 867: 43(f64vec2) FMul 865 866 868: 43(f64vec2) CompositeExtract 863 1 869: 43(f64vec2) CompositeExtract 864 1 870: 43(f64vec2) FMul 868 869 871: 43(f64vec2) CompositeExtract 863 2 872: 43(f64vec2) CompositeExtract 864 2 873: 43(f64vec2) FMul 871 872 874: 773 CompositeConstruct 867 870 873 Store 775(dmat3x2v) 874 875: 791 Load 793(dmat3x4v) 876: 791 Load 793(dmat3x4v) 877: 53(f64vec4) CompositeExtract 875 0 878: 53(f64vec4) CompositeExtract 876 0 879: 53(f64vec4) FMul 877 878 880: 53(f64vec4) CompositeExtract 875 1 881: 53(f64vec4) CompositeExtract 876 1 882: 53(f64vec4) FMul 880 881 883: 53(f64vec4) CompositeExtract 875 2 884: 53(f64vec4) CompositeExtract 876 2 885: 53(f64vec4) FMul 883 884 886: 791 CompositeConstruct 879 882 885 Store 793(dmat3x4v) 886 887: 785 Load 787(dmat4x2v) 888: 785 Load 787(dmat4x2v) 889: 43(f64vec2) CompositeExtract 887 0 890: 43(f64vec2) CompositeExtract 888 0 891: 43(f64vec2) FMul 889 890 892: 43(f64vec2) CompositeExtract 887 1 893: 43(f64vec2) CompositeExtract 888 1 894: 43(f64vec2) FMul 892 893 895: 43(f64vec2) CompositeExtract 887 2 896: 43(f64vec2) CompositeExtract 888 2 897: 43(f64vec2) FMul 895 896 898: 43(f64vec2) CompositeExtract 887 3 899: 43(f64vec2) CompositeExtract 888 3 900: 43(f64vec2) FMul 898 899 901: 785 CompositeConstruct 891 894 897 900 Store 787(dmat4x2v) 901 902: 797 Load 799(dmat4x3v) 903: 797 Load 799(dmat4x3v) 904: 48(f64vec3) CompositeExtract 902 0 905: 48(f64vec3) CompositeExtract 903 0 906: 48(f64vec3) FMul 904 905 907: 48(f64vec3) CompositeExtract 902 1 908: 48(f64vec3) CompositeExtract 903 1 909: 48(f64vec3) FMul 907 908 910: 48(f64vec3) CompositeExtract 902 2 911: 48(f64vec3) CompositeExtract 903 2 912: 48(f64vec3) FMul 910 911 913: 48(f64vec3) CompositeExtract 902 3 914: 48(f64vec3) CompositeExtract 903 3 915: 48(f64vec3) FMul 913 914 916: 797 CompositeConstruct 906 909 912 915 Store 799(dmat4x3v) 916 917: 749 Load 751(dmat2v) 918: 749 Transpose 917 919: 749 Load 751(dmat2v) 920: 749 MatrixTimesMatrix 919 918 Store 751(dmat2v) 920 921: 755 Load 757(dmat3v) 922: 755 Transpose 921 923: 755 Load 757(dmat3v) 924: 755 MatrixTimesMatrix 923 922 Store 757(dmat3v) 924 925: 761 Load 763(dmat4v) 926: 761 Transpose 925 927: 761 Load 763(dmat4v) 928: 761 MatrixTimesMatrix 927 926 Store 763(dmat4v) 928 929: 773 Load 775(dmat3x2v) 930: 767 Transpose 929 Store 769(dmat2x3v) 930 931: 767 Load 769(dmat2x3v) 932: 773 Transpose 931 Store 775(dmat3x2v) 932 933: 785 Load 787(dmat4x2v) 934: 779 Transpose 933 Store 781(dmat2x4v) 934 935: 779 Load 781(dmat2x4v) 936: 785 Transpose 935 Store 787(dmat4x2v) 936 937: 797 Load 799(dmat4x3v) 938: 791 Transpose 937 Store 793(dmat3x4v) 938 939: 791 Load 793(dmat3x4v) 940: 797 Transpose 939 Store 799(dmat4x3v) 940 941: 749 Load 751(dmat2v) 942:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 941 943:39(float64_t) Load 41(doublev) 944:39(float64_t) FAdd 943 942 Store 41(doublev) 944 945: 755 Load 757(dmat3v) 946:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 945 947:39(float64_t) Load 41(doublev) 948:39(float64_t) FAdd 947 946 Store 41(doublev) 948 949: 761 Load 763(dmat4v) 950:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 949 951:39(float64_t) Load 41(doublev) 952:39(float64_t) FAdd 951 950 Store 41(doublev) 952 953: 749 Load 751(dmat2v) 954: 749 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 953 955: 749 Load 751(dmat2v) 956: 749 MatrixTimesMatrix 955 954 Store 751(dmat2v) 956 957: 755 Load 757(dmat3v) 958: 755 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 957 959: 755 Load 757(dmat3v) 960: 755 MatrixTimesMatrix 959 958 Store 757(dmat3v) 960 961: 761 Load 763(dmat4v) 962: 761 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 961 963: 761 Load 763(dmat4v) 964: 761 MatrixTimesMatrix 963 962 Store 763(dmat4v) 964 965:39(float64_t) Load 41(doublev) 967: 40(ptr) AccessChain 45(dvec2v) 966 968:39(float64_t) Load 967 969:39(float64_t) FAdd 965 968 971: 40(ptr) AccessChain 50(dvec3v) 970 972:39(float64_t) Load 971 973:39(float64_t) FAdd 969 972 975: 40(ptr) AccessChain 55(dvec4v) 974 976:39(float64_t) Load 975 977:39(float64_t) FAdd 973 976 979: 40(ptr) AccessChain 751(dmat2v) 978 966 980:39(float64_t) Load 979 981:39(float64_t) FAdd 977 980 983: 40(ptr) AccessChain 757(dmat3v) 982 970 984:39(float64_t) Load 983 985:39(float64_t) FAdd 981 984 986: 40(ptr) AccessChain 763(dmat4v) 25 974 987:39(float64_t) Load 986 988:39(float64_t) FAdd 985 987 989: 40(ptr) AccessChain 769(dmat2x3v) 978 966 990:39(float64_t) Load 989 991:39(float64_t) FAdd 988 990 992: 40(ptr) AccessChain 775(dmat3x2v) 978 966 993:39(float64_t) Load 992 994:39(float64_t) FAdd 991 993 995: 40(ptr) AccessChain 793(dmat3x4v) 982 970 996:39(float64_t) Load 995 997:39(float64_t) FAdd 994 996 998: 40(ptr) AccessChain 799(dmat4x3v) 982 970 999:39(float64_t) Load 998 1000:39(float64_t) FAdd 997 999 1001: 40(ptr) AccessChain 781(dmat2x4v) 978 966 1002:39(float64_t) Load 1001 1003:39(float64_t) FAdd 1000 1002 1004: 40(ptr) AccessChain 787(dmat4x2v) 978 966 1005:39(float64_t) Load 1004 1006:39(float64_t) FAdd 1003 1005 1007: 440(bool) Load 442(boolv) 1009: 10(float) Select 1007 1008 21 1010:39(float64_t) FConvert 1009 1011:39(float64_t) FAdd 1006 1010 1012: 441(ptr) AccessChain 451(bvec2v) 33 1013: 440(bool) Load 1012 1014: 10(float) Select 1013 1008 21 1015:39(float64_t) FConvert 1014 1016:39(float64_t) FAdd 1011 1015 1017: 441(ptr) AccessChain 460(bvec3v) 33 1018: 440(bool) Load 1017 1019: 10(float) Select 1018 1008 21 1020:39(float64_t) FConvert 1019 1021:39(float64_t) FAdd 1016 1020 1022: 441(ptr) AccessChain 469(bvec4v) 33 1023: 440(bool) Load 1022 1024: 10(float) Select 1023 1008 21 1025:39(float64_t) FConvert 1024 1026:39(float64_t) FAdd 1021 1025 1027: 10(float) FConvert 1026 1028: 11(fvec4) Load 13(outp) 1029: 11(fvec4) VectorTimesScalar 1028 1027 Store 13(outp) 1029 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.400.tesc.out000066400000000000000000000217371506534232700212610ustar00rootroot00000000000000spv.400.tesc // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 92 Capability Tessellation Capability TessellationPointSize Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 24 41 44 47 53 67 72 78 82 83 86 87 90 91 ExecutionMode 4 OutputVertices 4 Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" Name 4 "main" Name 12 "a" Name 17 "p" 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 24 "gl_in" Name 31 "ps" Name 35 "cd" Name 39 "pvi" Name 41 "gl_PatchVerticesIn" Name 43 "pid" Name 44 "gl_PrimitiveID" Name 46 "iid" Name 47 "gl_InvocationID" Name 50 "gl_PerVertex" MemberName 50(gl_PerVertex) 0 "gl_Position" MemberName 50(gl_PerVertex) 1 "gl_PointSize" MemberName 50(gl_PerVertex) 2 "gl_ClipDistance" Name 53 "gl_out" Name 67 "gl_TessLevelOuter" Name 72 "gl_TessLevelInner" Name 77 "outa" Name 78 "patchOut" Name 82 "inb" Name 83 "ind" Name 86 "ivla" Name 87 "ivlb" Name 90 "ovla" Name 91 "ovlb" Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 47(gl_InvocationID) BuiltIn InvocationId Decorate 50(gl_PerVertex) Block MemberDecorate 50(gl_PerVertex) 0 BuiltIn Position MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 67(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 67(gl_TessLevelOuter) Patch Decorate 72(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 72(gl_TessLevelInner) Patch Decorate 78(patchOut) Patch Decorate 78(patchOut) Location 0 Decorate 82(inb) Location 0 Decorate 83(ind) Location 1 Decorate 86(ivla) Location 3 Decorate 87(ivlb) Location 4 Decorate 90(ovla) Location 3 Decorate 91(ovlb) Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 2 8: 6(int) Constant 4 9: 6(int) Constant 0 10: TypeInt 32 1 11: TypePointer Function 10(int) 13: 10(int) Constant 5392 14: TypeFloat 32 15: TypeVector 14(float) 4 16: TypePointer Function 15(fvec4) 18: 6(int) Constant 3 19: TypeArray 14(float) 18 20(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 19 21: 6(int) Constant 32 22: TypeArray 20(gl_PerVertex) 21 23: TypePointer Input 22 24(gl_in): 23(ptr) Variable Input 25: 10(int) Constant 1 26: 10(int) Constant 0 27: TypePointer Input 15(fvec4) 30: TypePointer Function 14(float) 32: TypePointer Input 14(float) 36: 10(int) Constant 2 40: TypePointer Input 10(int) 41(gl_PatchVerticesIn): 40(ptr) Variable Input 44(gl_PrimitiveID): 40(ptr) Variable Input 47(gl_InvocationID): 40(ptr) Variable Input 49: TypeArray 14(float) 7 50(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 49 51: TypeArray 50(gl_PerVertex) 8 52: TypePointer Output 51 53(gl_out): 52(ptr) Variable Output 56: TypePointer Output 15(fvec4) 60: TypePointer Output 14(float) 65: TypeArray 14(float) 8 66: TypePointer Output 65 67(gl_TessLevelOuter): 66(ptr) Variable Output 68: 10(int) Constant 3 69: 14(float) Constant 1078774989 71: TypePointer Output 49 72(gl_TessLevelInner): 71(ptr) Variable Output 73: 14(float) Constant 1067869798 75: TypeArray 10(int) 8 76: TypePointer Private 75 77(outa): 76(ptr) Variable Private 78(patchOut): 56(ptr) Variable Output 79: TypeVector 14(float) 2 80: TypeArray 79(fvec2) 21 81: TypePointer Input 80 82(inb): 81(ptr) Variable Input 83(ind): 81(ptr) Variable Input 84: TypeArray 15(fvec4) 21 85: TypePointer Input 84 86(ivla): 85(ptr) Variable Input 87(ivlb): 85(ptr) Variable Input 88: TypeArray 15(fvec4) 8 89: TypePointer Output 88 90(ovla): 89(ptr) Variable Output 91(ovlb): 89(ptr) Variable Output 4(main): 2 Function None 3 5: Label 12(a): 11(ptr) Variable Function 17(p): 16(ptr) Variable Function 31(ps): 30(ptr) Variable Function 35(cd): 30(ptr) Variable Function 39(pvi): 11(ptr) Variable Function 43(pid): 11(ptr) Variable Function 46(iid): 11(ptr) Variable Function ControlBarrier 7 8 9 Store 12(a) 13 28: 27(ptr) AccessChain 24(gl_in) 25 26 29: 15(fvec4) Load 28 Store 17(p) 29 33: 32(ptr) AccessChain 24(gl_in) 25 25 34: 14(float) Load 33 Store 31(ps) 34 37: 32(ptr) AccessChain 24(gl_in) 25 36 36 38: 14(float) Load 37 Store 35(cd) 38 42: 10(int) Load 41(gl_PatchVerticesIn) Store 39(pvi) 42 45: 10(int) Load 44(gl_PrimitiveID) Store 43(pid) 45 48: 10(int) Load 47(gl_InvocationID) Store 46(iid) 48 54: 10(int) Load 47(gl_InvocationID) 55: 15(fvec4) Load 17(p) 57: 56(ptr) AccessChain 53(gl_out) 54 26 Store 57 55 58: 10(int) Load 47(gl_InvocationID) 59: 14(float) Load 31(ps) 61: 60(ptr) AccessChain 53(gl_out) 58 25 Store 61 59 62: 10(int) Load 47(gl_InvocationID) 63: 14(float) Load 35(cd) 64: 60(ptr) AccessChain 53(gl_out) 62 36 25 Store 64 63 70: 60(ptr) AccessChain 67(gl_TessLevelOuter) 68 Store 70 69 74: 60(ptr) AccessChain 72(gl_TessLevelInner) 25 Store 74 73 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.400.tese.out000066400000000000000000000233161506534232700212560ustar00rootroot00000000000000spv.400.tese // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 96 Capability Tessellation Capability TessellationPointSize Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 4 "main" 21 38 41 47 53 61 66 75 79 80 84 88 91 92 95 ExecutionMode 4 Triangles ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 VertexOrderCcw ExecutionMode 4 PointMode Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" Name 4 "main" Name 8 "a" Name 13 "p" Name 17 "gl_PerVertex" MemberName 17(gl_PerVertex) 0 "gl_Position" MemberName 17(gl_PerVertex) 1 "gl_PointSize" MemberName 17(gl_PerVertex) 2 "gl_ClipDistance" Name 21 "gl_in" Name 28 "ps" Name 32 "cd" Name 36 "pvi" Name 38 "gl_PatchVerticesIn" Name 40 "pid" Name 41 "gl_PrimitiveID" Name 45 "tc" Name 47 "gl_TessCoord" Name 49 "tlo" Name 53 "gl_TessLevelOuter" Name 57 "tli" Name 61 "gl_TessLevelInner" Name 64 "gl_PerVertex" MemberName 64(gl_PerVertex) 0 "gl_Position" MemberName 64(gl_PerVertex) 1 "gl_PointSize" MemberName 64(gl_PerVertex) 2 "gl_ClipDistance" Name 66 "" Name 75 "patchIn" Name 79 "inb" Name 80 "ind" Name 81 "testblb" MemberName 81(testblb) 0 "f" Name 84 "blb" Name 85 "testbld" MemberName 85(testbld) 0 "f" Name 88 "bld" Name 91 "ivla" Name 92 "ivlb" Name 95 "ovla" Decorate 17(gl_PerVertex) Block MemberDecorate 17(gl_PerVertex) 0 BuiltIn Position MemberDecorate 17(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 17(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 38(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 41(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 47(gl_TessCoord) BuiltIn TessCoord Decorate 53(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 53(gl_TessLevelOuter) Patch Decorate 61(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 61(gl_TessLevelInner) Patch Decorate 64(gl_PerVertex) Block MemberDecorate 64(gl_PerVertex) 0 BuiltIn Position MemberDecorate 64(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 64(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 75(patchIn) Patch Decorate 75(patchIn) Location 0 Decorate 79(inb) Location 1 Decorate 80(ind) Location 2 Decorate 81(testblb) Block Decorate 84(blb) Location 3 Decorate 85(testbld) Block Decorate 88(bld) Location 4 Decorate 91(ivla) Location 23 Decorate 92(ivlb) Location 24 Decorate 95(ovla) Location 23 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 1512 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Function 11(fvec4) 14: TypeInt 32 0 15: 14(int) Constant 3 16: TypeArray 10(float) 15 17(gl_PerVertex): TypeStruct 11(fvec4) 10(float) 16 18: 14(int) Constant 32 19: TypeArray 17(gl_PerVertex) 18 20: TypePointer Input 19 21(gl_in): 20(ptr) Variable Input 22: 6(int) Constant 1 23: 6(int) Constant 0 24: TypePointer Input 11(fvec4) 27: TypePointer Function 10(float) 29: TypePointer Input 10(float) 33: 6(int) Constant 2 37: TypePointer Input 6(int) 38(gl_PatchVerticesIn): 37(ptr) Variable Input 41(gl_PrimitiveID): 37(ptr) Variable Input 43: TypeVector 10(float) 3 44: TypePointer Function 43(fvec3) 46: TypePointer Input 43(fvec3) 47(gl_TessCoord): 46(ptr) Variable Input 50: 14(int) Constant 4 51: TypeArray 10(float) 50 52: TypePointer Input 51 53(gl_TessLevelOuter): 52(ptr) Variable Input 54: 6(int) Constant 3 58: 14(int) Constant 2 59: TypeArray 10(float) 58 60: TypePointer Input 59 61(gl_TessLevelInner): 60(ptr) Variable Input 64(gl_PerVertex): TypeStruct 11(fvec4) 10(float) 16 65: TypePointer Output 64(gl_PerVertex) 66: 65(ptr) Variable Output 68: TypePointer Output 11(fvec4) 71: TypePointer Output 10(float) 75(patchIn): 24(ptr) Variable Input 76: TypeVector 10(float) 2 77: TypeArray 76(fvec2) 18 78: TypePointer Input 77 79(inb): 78(ptr) Variable Input 80(ind): 78(ptr) Variable Input 81(testblb): TypeStruct 6(int) 82: TypeArray 81(testblb) 18 83: TypePointer Input 82 84(blb): 83(ptr) Variable Input 85(testbld): TypeStruct 6(int) 86: TypeArray 85(testbld) 18 87: TypePointer Input 86 88(bld): 87(ptr) Variable Input 89: TypeArray 11(fvec4) 18 90: TypePointer Input 89 91(ivla): 90(ptr) Variable Input 92(ivlb): 90(ptr) Variable Input 93: TypeArray 11(fvec4) 58 94: TypePointer Output 93 95(ovla): 94(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(a): 7(ptr) Variable Function 13(p): 12(ptr) Variable Function 28(ps): 27(ptr) Variable Function 32(cd): 27(ptr) Variable Function 36(pvi): 7(ptr) Variable Function 40(pid): 7(ptr) Variable Function 45(tc): 44(ptr) Variable Function 49(tlo): 27(ptr) Variable Function 57(tli): 27(ptr) Variable Function Store 8(a) 9 25: 24(ptr) AccessChain 21(gl_in) 22 23 26: 11(fvec4) Load 25 Store 13(p) 26 30: 29(ptr) AccessChain 21(gl_in) 22 22 31: 10(float) Load 30 Store 28(ps) 31 34: 29(ptr) AccessChain 21(gl_in) 22 33 33 35: 10(float) Load 34 Store 32(cd) 35 39: 6(int) Load 38(gl_PatchVerticesIn) Store 36(pvi) 39 42: 6(int) Load 41(gl_PrimitiveID) Store 40(pid) 42 48: 43(fvec3) Load 47(gl_TessCoord) Store 45(tc) 48 55: 29(ptr) AccessChain 53(gl_TessLevelOuter) 54 56: 10(float) Load 55 Store 49(tlo) 56 62: 29(ptr) AccessChain 61(gl_TessLevelInner) 22 63: 10(float) Load 62 Store 57(tli) 63 67: 11(fvec4) Load 13(p) 69: 68(ptr) AccessChain 66 23 Store 69 67 70: 10(float) Load 28(ps) 72: 71(ptr) AccessChain 66 22 Store 72 70 73: 10(float) Load 32(cd) 74: 71(ptr) AccessChain 66 33 33 Store 74 73 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.420.geom.out000066400000000000000000000145671506534232700212570ustar00rootroot00000000000000spv.420.geom // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Geometry Capability GeometryPointSize Capability ImageGatherExtended Capability GeometryStreams Capability MultiViewport 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 14 23 28 33 46 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 4 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 127 Source GLSL 420 Name 4 "main" Name 8 "p" Name 9 "gl_PerVertex" MemberName 9(gl_PerVertex) 0 "gl_PointSize" Name 14 "gl_in" Name 21 "gl_PerVertex" MemberName 21(gl_PerVertex) 0 "gl_PointSize" Name 23 "" Name 28 "gl_ViewportIndex" Name 31 "id" Name 33 "gl_InvocationID" Name 37 "v" Name 41 "s2D" Name 46 "coord" Name 64 "i" Name 67 "indexable" Decorate 9(gl_PerVertex) Block MemberDecorate 9(gl_PerVertex) 0 BuiltIn PointSize Decorate 21(gl_PerVertex) Block MemberDecorate 21(gl_PerVertex) 0 BuiltIn PointSize Decorate 23 Stream 0 Decorate 28(gl_ViewportIndex) BuiltIn ViewportIndex Decorate 28(gl_ViewportIndex) Stream 0 Decorate 33(gl_InvocationID) BuiltIn InvocationId Decorate 41(s2D) Binding 0 Decorate 41(s2D) DescriptorSet 0 Decorate 46(coord) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9(gl_PerVertex): TypeStruct 6(float) 10: TypeInt 32 0 11: 10(int) Constant 3 12: TypeArray 9(gl_PerVertex) 11 13: TypePointer Input 12 14(gl_in): 13(ptr) Variable Input 15: TypeInt 32 1 16: 15(int) Constant 1 17: 15(int) Constant 0 18: TypePointer Input 6(float) 21(gl_PerVertex): TypeStruct 6(float) 22: TypePointer Output 21(gl_PerVertex) 23: 22(ptr) Variable Output 25: TypePointer Output 6(float) 27: TypePointer Output 15(int) 28(gl_ViewportIndex): 27(ptr) Variable Output 29: 15(int) Constant 7 30: TypePointer Function 15(int) 32: TypePointer Input 15(int) 33(gl_InvocationID): 32(ptr) Variable Input 35: TypeVector 6(float) 4 36: TypePointer Function 35(fvec4) 38: TypeImage 6(float) 2D sampled format:Unknown 39: TypeSampledImage 38 40: TypePointer UniformConstant 39 41(s2D): 40(ptr) Variable UniformConstant 43: TypeVector 6(float) 2 44: TypeArray 43(fvec2) 11 45: TypePointer Input 44 46(coord): 45(ptr) Variable Input 47: TypePointer Input 43(fvec2) 50: TypeVector 15(int) 2 51: 10(int) Constant 5 52: TypeArray 50(ivec2) 51 53: 50(ivec2) ConstantComposite 17 16 54: 15(int) Constant 4294967294 55: 50(ivec2) ConstantComposite 16 54 56: 15(int) Constant 3 57: 50(ivec2) ConstantComposite 17 56 58: 15(int) Constant 4294967293 59: 50(ivec2) ConstantComposite 58 17 60: 15(int) Constant 2 61: 50(ivec2) ConstantComposite 60 16 62: 52 ConstantComposite 53 55 57 59 61 63: TypePointer Private 15(int) 64(i): 63(ptr) Variable Private 66: TypePointer Function 52 68: TypePointer Function 50(ivec2) 4(main): 2 Function None 3 5: Label 8(p): 7(ptr) Variable Function 31(id): 30(ptr) Variable Function 37(v): 36(ptr) Variable Function 67(indexable): 66(ptr) Variable Function 19: 18(ptr) AccessChain 14(gl_in) 16 17 20: 6(float) Load 19 Store 8(p) 20 24: 6(float) Load 8(p) 26: 25(ptr) AccessChain 23 17 Store 26 24 Store 28(gl_ViewportIndex) 29 EmitStreamVertex 16 EndStreamPrimitive 17 EmitVertex EndPrimitive 34: 15(int) Load 33(gl_InvocationID) Store 31(id) 34 42: 39 Load 41(s2D) 48: 47(ptr) AccessChain 46(coord) 17 49: 43(fvec2) Load 48 65: 15(int) Load 64(i) Store 67(indexable) 62 69: 68(ptr) AccessChain 67(indexable) 65 70: 50(ivec2) Load 69 71: 35(fvec4) ImageGather 42 49 17 Offset 70 Store 37(v) 71 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.430.frag.out000066400000000000000000000044641506534232700212430ustar00rootroot00000000000000spv.430.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader Capability Geometry Capability MultiViewport 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 14 19 ExecutionMode 4 OriginUpperLeft Source GLSL 430 Name 4 "main" Name 9 "color" Name 14 "gl_Layer" Name 19 "gl_ViewportIndex" Decorate 9(color) Location 0 Decorate 14(gl_Layer) BuiltIn Layer Decorate 14(gl_Layer) Flat Decorate 19(gl_ViewportIndex) BuiltIn ViewportIndex Decorate 19(gl_ViewportIndex) Flat 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: 6(float) Constant 1065353216 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeInt 32 1 13: TypePointer Input 12(int) 14(gl_Layer): 13(ptr) Variable Input 19(gl_ViewportIndex): 13(ptr) Variable Input 4(main): 2 Function None 3 5: Label Store 9(color) 11 15: 12(int) Load 14(gl_Layer) 16: 6(float) ConvertSToF 15 17: 7(fvec4) Load 9(color) 18: 7(fvec4) VectorTimesScalar 17 16 Store 9(color) 18 20: 12(int) Load 19(gl_ViewportIndex) 21: 6(float) ConvertSToF 20 22: 7(fvec4) Load 9(color) 23: 7(fvec4) VectorTimesScalar 22 21 Store 9(color) 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.430.vert.out000066400000000000000000000163131506534232700213000ustar00rootroot00000000000000spv.430.vert Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 12 23 34 38 41 42 62 65 Source GLSL 450 Name 4 "main" Name 10 "gl_PerVertex" MemberName 10(gl_PerVertex) 0 "gl_ClipDistance" Name 12 "" Name 23 "bad" Name 34 "badorder3" Name 38 "f" Name 41 "badorder" Name 42 "badorder2" Name 43 "boundblock" MemberName 43(boundblock) 0 "aoeu" Name 45 "boundInst" Name 46 "anonblock" MemberName 46(anonblock) 0 "aoeu" Name 48 "" Name 52 "sampb1" Name 55 "sampb2" Name 56 "sampb4" Name 59 "S" MemberName 59(S) 0 "a" MemberName 59(S) 1 "b" MemberName 59(S) 2 "c" Name 60 "SS" MemberName 60(SS) 0 "b" MemberName 60(SS) 1 "s" MemberName 60(SS) 2 "c" Name 62 "var" Name 63 "MS" MemberName 63(MS) 0 "f" Name 65 "outMS" Decorate 10(gl_PerVertex) Block MemberDecorate 10(gl_PerVertex) 0 BuiltIn ClipDistance Decorate 23(bad) Location 0 Decorate 34(badorder3) Flat Decorate 34(badorder3) Location 1 Decorate 38(f) Location 11 Decorate 41(badorder) Location 10 Decorate 42(badorder2) Invariant Decorate 42(badorder2) Location 0 Decorate 43(boundblock) Block MemberDecorate 43(boundblock) 0 Offset 0 Decorate 45(boundInst) Binding 3 Decorate 45(boundInst) DescriptorSet 0 Decorate 46(anonblock) Block MemberDecorate 46(anonblock) 0 Offset 0 Decorate 48 Binding 7 Decorate 48 DescriptorSet 0 Decorate 52(sampb1) Binding 4 Decorate 52(sampb1) DescriptorSet 0 Decorate 55(sampb2) Binding 5 Decorate 55(sampb2) DescriptorSet 0 Decorate 56(sampb4) Binding 31 Decorate 56(sampb4) DescriptorSet 0 MemberDecorate 59(S) 0 RelaxedPrecision Decorate 62(var) Flat Decorate 62(var) Location 0 Decorate 63(MS) Block MemberDecorate 63(MS) 0 Location 17 Decorate 65(outMS) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 3 9: TypeArray 6(float) 8 10(gl_PerVertex): TypeStruct 9 11: TypePointer Output 10(gl_PerVertex) 12: 11(ptr) Variable Output 13: TypeInt 32 1 14: 13(int) Constant 0 15: 13(int) Constant 2 16: 6(float) Constant 1080872141 17: TypePointer Output 6(float) 19: TypeVector 6(float) 4 20: 7(int) Constant 10 21: TypeArray 19(fvec4) 20 22: TypePointer Input 21 23(bad): 22(ptr) Variable Input 24: 7(int) Constant 0 25: TypePointer Input 6(float) 28: 6(float) Constant 1082549862 29: TypeBool 33: TypePointer Output 19(fvec4) 34(badorder3): 33(ptr) Variable Output 35: TypePointer Input 19(fvec4) 38(f): 25(ptr) Variable Input 41(badorder): 35(ptr) Variable Input 42(badorder2): 33(ptr) Variable Output 43(boundblock): TypeStruct 13(int) 44: TypePointer Uniform 43(boundblock) 45(boundInst): 44(ptr) Variable Uniform 46(anonblock): TypeStruct 13(int) 47: TypePointer Uniform 46(anonblock) 48: 47(ptr) Variable Uniform 49: TypeImage 6(float) 2D sampled format:Unknown 50: TypeSampledImage 49 51: TypePointer UniformConstant 50 52(sampb1): 51(ptr) Variable UniformConstant 53: TypeArray 50 20 54: TypePointer UniformConstant 53 55(sampb2): 54(ptr) Variable UniformConstant 56(sampb4): 51(ptr) Variable UniformConstant 57: TypeVector 7(int) 2 58: TypeVector 6(float) 3 59(S): TypeStruct 6(float) 57(ivec2) 58(fvec3) 60(SS): TypeStruct 19(fvec4) 59(S) 19(fvec4) 61: TypePointer Output 60(SS) 62(var): 61(ptr) Variable Output 63(MS): TypeStruct 6(float) 64: TypePointer Output 63(MS) 65(outMS): 64(ptr) Variable Output 4(main): 2 Function None 3 5: Label 18: 17(ptr) AccessChain 12 14 15 Store 18 16 26: 25(ptr) AccessChain 23(bad) 14 24 27: 6(float) Load 26 30: 29(bool) FOrdEqual 27 28 SelectionMerge 32 None BranchConditional 30 31 32 31: Label 36: 35(ptr) AccessChain 23(bad) 14 37: 19(fvec4) Load 36 Store 34(badorder3) 37 Branch 32 32: Label 39: 6(float) Load 38(f) 40: 17(ptr) AccessChain 12 14 14 Store 40 39 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.450.geom.out000066400000000000000000000103071506534232700212460ustar00rootroot00000000000000spv.450.geom // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Geometry Capability GeometryPointSize Capability MultiViewport 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 13 20 27 29 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 4 ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputVertices 127 Source GLSL 450 Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" Name 16 "gl_PerVertex" MemberName 16(gl_PerVertex) 0 "gl_Position" MemberName 16(gl_PerVertex) 1 "gl_PointSize" MemberName 16(gl_PerVertex) 2 "gl_ClipDistance" MemberName 16(gl_PerVertex) 3 "gl_CullDistance" Name 20 "gl_in" Name 27 "gl_Layer" Name 29 "gl_ViewportIndex" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance Decorate 16(gl_PerVertex) Block MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position MemberDecorate 16(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance Decorate 27(gl_Layer) BuiltIn Layer Decorate 29(gl_ViewportIndex) BuiltIn ViewportIndex 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 1 16(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 17: 8(int) Constant 3 18: TypeArray 16(gl_PerVertex) 17 19: TypePointer Input 18 20(gl_in): 19(ptr) Variable Input 21: TypePointer Input 6(float) 24: TypePointer Output 6(float) 26: TypePointer Output 14(int) 27(gl_Layer): 26(ptr) Variable Output 28: 14(int) Constant 2 29(gl_ViewportIndex): 26(ptr) Variable Output 30: 14(int) Constant 3 4(main): 2 Function None 3 5: Label 22: 21(ptr) AccessChain 20(gl_in) 15 15 23: 6(float) Load 22 25: 24(ptr) AccessChain 13 15 Store 25 23 Store 27(gl_Layer) 28 Store 29(gl_ViewportIndex) 30 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.450.noRedecl.tesc.out000066400000000000000000000047261506534232700230170ustar00rootroot00000000000000spv.450.noRedecl.tesc // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Tessellation Capability TessellationPointSize 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 15 20 ExecutionMode 4 OutputVertices 4 Source GLSL 450 Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 15 "gl_in" Name 20 "patchOut" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance Decorate 20(patchOut) Patch Decorate 20(patchOut) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: 8(int) Constant 32 13: TypeArray 11(gl_PerVertex) 12 14: TypePointer Input 13 15(gl_in): 14(ptr) Variable Input 16: TypeInt 32 1 17: 16(int) Constant 0 18: 16(int) Constant 1 19: TypePointer Output 7(fvec4) 20(patchOut): 19(ptr) Variable Output 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.450.tesc.out000066400000000000000000000154131506534232700212600ustar00rootroot00000000000000spv.450.tesc Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 15 18 25 32 38 41 44 ExecutionMode 4 OutputVertices 4 Source GLSL 450 Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 15 "gl_out" Name 18 "gl_InvocationID" Name 21 "gl_PerVertex" MemberName 21(gl_PerVertex) 0 "gl_Position" MemberName 21(gl_PerVertex) 1 "gl_PointSize" MemberName 21(gl_PerVertex) 2 "gl_ClipDistance" MemberName 21(gl_PerVertex) 3 "gl_CullDistance" Name 25 "gl_in" Name 32 "patchOut" Name 33 "S" MemberName 33(S) 0 "sMem1" MemberName 33(S) 1 "sMem2" Name 34 "TheBlock" MemberName 34(TheBlock) 0 "bMem1" MemberName 34(TheBlock) 1 "bMem2" MemberName 34(TheBlock) 2 "s" Name 38 "tcBlock" Name 39 "SingleBlock" MemberName 39(SingleBlock) 0 "bMem1" MemberName 39(SingleBlock) 1 "bMem2" MemberName 39(SingleBlock) 2 "s" Name 41 "singleBlock" Name 42 "bn" MemberName 42(bn) 0 "v1" MemberName 42(bn) 1 "v2" MemberName 42(bn) 2 "v3" Name 44 "" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance Decorate 18(gl_InvocationID) BuiltIn InvocationId Decorate 21(gl_PerVertex) Block MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance Decorate 32(patchOut) Patch Decorate 32(patchOut) Location 1 Decorate 34(TheBlock) Block MemberDecorate 34(TheBlock) 0 Patch MemberDecorate 34(TheBlock) 1 Patch MemberDecorate 34(TheBlock) 2 Patch Decorate 38(tcBlock) Location 12 Decorate 39(SingleBlock) Block MemberDecorate 39(SingleBlock) 0 Patch MemberDecorate 39(SingleBlock) 1 Patch MemberDecorate 39(SingleBlock) 2 Patch Decorate 41(singleBlock) Location 2 Decorate 42(bn) Block MemberDecorate 42(bn) 0 Patch MemberDecorate 42(bn) 0 Location 20 MemberDecorate 42(bn) 1 Patch MemberDecorate 42(bn) 1 Location 24 MemberDecorate 42(bn) 2 Patch MemberDecorate 42(bn) 2 Location 25 Decorate 44 Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: 8(int) Constant 4 13: TypeArray 11(gl_PerVertex) 12 14: TypePointer Output 13 15(gl_out): 14(ptr) Variable Output 16: TypeInt 32 1 17: TypePointer Input 16(int) 18(gl_InvocationID): 17(ptr) Variable Input 20: 16(int) Constant 0 21(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 22: 8(int) Constant 32 23: TypeArray 21(gl_PerVertex) 22 24: TypePointer Input 23 25(gl_in): 24(ptr) Variable Input 27: TypePointer Input 7(fvec4) 30: TypePointer Output 7(fvec4) 32(patchOut): 30(ptr) Variable Output 33(S): TypeStruct 6(float) 6(float) 34(TheBlock): TypeStruct 6(float) 6(float) 33(S) 35: 8(int) Constant 2 36: TypeArray 34(TheBlock) 35 37: TypePointer Output 36 38(tcBlock): 37(ptr) Variable Output 39(SingleBlock): TypeStruct 6(float) 6(float) 33(S) 40: TypePointer Output 39(SingleBlock) 41(singleBlock): 40(ptr) Variable Output 42(bn): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 43: TypePointer Output 42(bn) 44: 43(ptr) Variable Output 4(main): 2 Function None 3 5: Label 19: 16(int) Load 18(gl_InvocationID) 26: 16(int) Load 18(gl_InvocationID) 28: 27(ptr) AccessChain 25(gl_in) 26 20 29: 7(fvec4) Load 28 31: 30(ptr) AccessChain 15(gl_out) 19 20 Store 31 29 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.460.comp.out000066400000000000000000000026421506534232700212610ustar00rootroot00000000000000spv.460.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader Capability SubgroupVoteKHR Extension "SPV_KHR_subgroup_vote" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 Name 4 "main" Name 8 "b1" 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 4(main): 2 Function None 3 5: Label 8(b1): 7(ptr) Variable Function 9: 6(bool) Load 8(b1) 10: 6(bool) SubgroupAnyKHR 9 Store 8(b1) 10 11: 6(bool) Load 8(b1) 12: 6(bool) SubgroupAllKHR 11 Store 8(b1) 12 13: 6(bool) Load 8(b1) 14: 6(bool) SubgroupAllEqualKHR 13 Store 8(b1) 14 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.460.frag.out000066400000000000000000000046461506534232700212500ustar00rootroot00000000000000spv.460.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader Capability AtomicStorage Capability AtomicStorageOps Extension "SPV_KHR_shader_atomic_counter_ops" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginLowerLeft Source GLSL 460 Name 4 "main" Name 8 "aui" Name 10 "ui" Decorate 8(aui) Binding 0 Decorate 8(aui) DescriptorSet 0 Decorate 8(aui) Offset 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer AtomicCounter 6(int) 8(aui): 7(ptr) Variable AtomicCounter 9: TypePointer Private 6(int) 10(ui): 9(ptr) Variable Private 12: 6(int) Constant 1 13: 6(int) Constant 0 4(main): 2 Function None 3 5: Label 11: 6(int) Load 10(ui) 14: 6(int) AtomicIAdd 8(aui) 12 13 11 15: 6(int) Load 10(ui) 16: 6(int) AtomicISub 8(aui) 12 13 15 17: 6(int) Load 10(ui) 18: 6(int) AtomicUMin 8(aui) 12 13 17 19: 6(int) Load 10(ui) 20: 6(int) AtomicUMax 8(aui) 12 13 19 21: 6(int) Load 10(ui) 22: 6(int) AtomicAnd 8(aui) 12 13 21 23: 6(int) Load 10(ui) 24: 6(int) AtomicOr 8(aui) 12 13 23 25: 6(int) Load 10(ui) 26: 6(int) AtomicXor 8(aui) 12 13 25 27: 6(int) Load 10(ui) 28: 6(int) AtomicExchange 8(aui) 12 13 27 29: 6(int) Load 10(ui) 30: 6(int) Load 10(ui) 31: 6(int) AtomicCompareExchange 8(aui) 12 13 13 30 29 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.460.subgroupEXT.mesh.out000066400000000000000000000603541506534232700235110ustar00rootroot00000000000000spv.460.subgroupEXT.mesh // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 279 Capability ClipDistance Capability CullDistance 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 MeshEXT 4 "main" 35 41 57 109 147 161 162 167 168 171 172 173 174 175 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" Name 109 "gl_MeshPrimitivesEXT" Name 147 "gl_PrimitiveTriangleIndicesEXT" Name 161 "gl_SubgroupSize" Name 162 "gl_SubgroupInvocationID" Name 167 "gl_NumSubgroups" Name 168 "gl_SubgroupID" Name 171 "gl_SubgroupEqMask" Name 172 "gl_SubgroupGeMask" Name 173 "gl_SubgroupGtMask" Name 174 "gl_SubgroupLeMask" Name 175 "gl_SubgroupLtMask" Name 181 "ballot" Name 218 "ballot" Name 253 "ballot" Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 54(gl_MeshPerVertexEXT) Block 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 106(gl_MeshPerPrimitiveEXT) Block MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 161(gl_SubgroupSize) RelaxedPrecision Decorate 161(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 162(gl_SubgroupInvocationID) RelaxedPrecision Decorate 162(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 167(gl_NumSubgroups) BuiltIn NumSubgroups Decorate 168(gl_SubgroupID) BuiltIn SubgroupId Decorate 171(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR Decorate 172(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR Decorate 173(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 174(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 175(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR Decorate 278 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) 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: TypeArray 33(ivec3) 47 146: TypePointer Output 145 147(gl_PrimitiveTriangleIndicesEXT): 146(ptr) Variable Output 148: 33(ivec3) ConstantComposite 78 78 78 149: TypePointer Output 33(ivec3) 153: 33(ivec3) ConstantComposite 80 80 80 161(gl_SubgroupSize): 37(ptr) Variable Input 162(gl_SubgroupInvocationID): 37(ptr) Variable Input 163: 30(int) Constant 3400 164: 30(int) Constant 72 165: 30(int) Constant 2056 167(gl_NumSubgroups): 37(ptr) Variable Input 168(gl_SubgroupID): 37(ptr) Variable Input 169: TypeVector 30(int) 4 170: TypePointer Input 169(ivec4) 171(gl_SubgroupEqMask): 170(ptr) Variable Input 172(gl_SubgroupGeMask): 170(ptr) Variable Input 173(gl_SubgroupGtMask): 170(ptr) Variable Input 174(gl_SubgroupLeMask): 170(ptr) Variable Input 175(gl_SubgroupLtMask): 170(ptr) Variable Input 180: TypePointer Function 169(ivec4) 183: 169(ivec4) ConstantComposite 78 78 78 78 197: 105(bool) ConstantTrue 254: 30(int) Constant 85 255: 169(ivec4) ConstantComposite 254 36 36 36 278: 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 150: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 60 Store 150 148 151: 30(int) Load 46(primitiveCount) 152: 30(int) ISub 151 78 154: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 152 Store 154 153 155: 30(int) Load 40(gid) 156: 30(int) Load 40(gid) 157: 30(int) ISub 156 78 158: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 157 159: 33(ivec3) Load 158 160: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 155 Store 160 159 MemoryBarrier 78 79 ControlBarrier 80 80 79 Return FunctionEnd 6(basic_works(): 2 Function None 3 7: Label ControlBarrier 52 52 163 MemoryBarrier 52 163 MemoryBarrier 52 164 MemoryBarrier 52 165 166: 105(bool) GroupNonUniformElect 52 MemoryBarrier 52 79 Return FunctionEnd 13(ballot_works(vf4;): 2 Function None 11 12(f4): 10(ptr) FunctionParameter 14: Label 181(ballot): 180(ptr) Variable Function 176: 9(fvec4) Load 12(f4) 177: 9(fvec4) GroupNonUniformBroadcast 52 176 36 178: 9(fvec4) Load 12(f4) 179: 9(fvec4) GroupNonUniformBroadcastFirst 52 178 182: 169(ivec4) GroupNonUniformBallot 52 121 Store 181(ballot) 182 184: 105(bool) GroupNonUniformInverseBallot 52 183 185: 169(ivec4) Load 181(ballot) 186: 105(bool) GroupNonUniformBallotBitExtract 52 185 36 187: 169(ivec4) Load 181(ballot) 188: 30(int) GroupNonUniformBallotBitCount 52 Reduce 187 189: 169(ivec4) Load 181(ballot) 190: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 189 191: 169(ivec4) Load 181(ballot) 192: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 191 193: 169(ivec4) Load 181(ballot) 194: 30(int) GroupNonUniformBallotFindLSB 52 193 195: 169(ivec4) Load 181(ballot) 196: 30(int) GroupNonUniformBallotFindMSB 52 195 Return FunctionEnd 16(vote_works(vf4;): 2 Function None 11 15(f4): 10(ptr) FunctionParameter 17: Label 198: 105(bool) GroupNonUniformAll 52 197 199: 105(bool) GroupNonUniformAny 52 121 200: 9(fvec4) Load 15(f4) 201: 105(bool) GroupNonUniformAllEqual 52 200 Return FunctionEnd 19(shuffle_works(vf4;): 2 Function None 11 18(f4): 10(ptr) FunctionParameter 20: Label 202: 9(fvec4) Load 18(f4) 203: 9(fvec4) GroupNonUniformShuffle 52 202 36 204: 9(fvec4) Load 18(f4) 205: 9(fvec4) GroupNonUniformShuffleXor 52 204 78 206: 9(fvec4) Load 18(f4) 207: 9(fvec4) GroupNonUniformShuffleUp 52 206 78 208: 9(fvec4) Load 18(f4) 209: 9(fvec4) GroupNonUniformShuffleDown 52 208 78 Return FunctionEnd 22(arith_works(vf4;): 2 Function None 11 21(f4): 10(ptr) FunctionParameter 23: Label 218(ballot): 180(ptr) Variable Function 210: 9(fvec4) Load 21(f4) 211: 9(fvec4) GroupNonUniformFAdd 52 Reduce 210 212: 9(fvec4) Load 21(f4) 213: 9(fvec4) GroupNonUniformFMul 52 Reduce 212 214: 9(fvec4) Load 21(f4) 215: 9(fvec4) GroupNonUniformFMin 52 Reduce 214 216: 9(fvec4) Load 21(f4) 217: 9(fvec4) GroupNonUniformFMax 52 Reduce 216 219: 169(ivec4) Load 218(ballot) 220: 169(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 219 221: 169(ivec4) Load 218(ballot) 222: 169(ivec4) GroupNonUniformBitwiseOr 52 Reduce 221 223: 169(ivec4) Load 218(ballot) 224: 169(ivec4) GroupNonUniformBitwiseXor 52 Reduce 223 225: 9(fvec4) Load 21(f4) 226: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 225 227: 9(fvec4) Load 21(f4) 228: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 227 229: 9(fvec4) Load 21(f4) 230: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 229 231: 9(fvec4) Load 21(f4) 232: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 231 233: 169(ivec4) Load 218(ballot) 234: 169(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 233 235: 169(ivec4) Load 218(ballot) 236: 169(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 235 237: 169(ivec4) Load 218(ballot) 238: 169(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 237 239: 9(fvec4) Load 21(f4) 240: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 239 241: 9(fvec4) Load 21(f4) 242: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 241 243: 9(fvec4) Load 21(f4) 244: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 243 245: 9(fvec4) Load 21(f4) 246: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 245 247: 169(ivec4) Load 218(ballot) 248: 169(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 247 249: 169(ivec4) Load 218(ballot) 250: 169(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 249 251: 169(ivec4) Load 218(ballot) 252: 169(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 251 Return FunctionEnd 25(clustered_works(vf4;): 2 Function None 11 24(f4): 10(ptr) FunctionParameter 26: Label 253(ballot): 180(ptr) Variable Function Store 253(ballot) 255 256: 9(fvec4) Load 24(f4) 257: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 256 80 258: 9(fvec4) Load 24(f4) 259: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 258 80 260: 9(fvec4) Load 24(f4) 261: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 260 80 262: 9(fvec4) Load 24(f4) 263: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 262 80 264: 169(ivec4) Load 253(ballot) 265: 169(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 264 80 266: 169(ivec4) Load 253(ballot) 267: 169(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 266 80 268: 169(ivec4) Load 253(ballot) 269: 169(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 268 80 Return FunctionEnd 28(quad_works(vf4;): 2 Function None 11 27(f4): 10(ptr) FunctionParameter 29: Label 270: 9(fvec4) Load 27(f4) 271: 9(fvec4) GroupNonUniformQuadBroadcast 52 270 36 272: 9(fvec4) Load 27(f4) 273: 9(fvec4) GroupNonUniformQuadSwap 52 272 36 274: 9(fvec4) Load 27(f4) 275: 9(fvec4) GroupNonUniformQuadSwap 52 274 78 276: 9(fvec4) Load 27(f4) 277: 9(fvec4) GroupNonUniformQuadSwap 52 276 80 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.460.subgroupEXT.task.out000066400000000000000000000472631506534232700235230ustar00rootroot00000000000000spv.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 Decorate 59(block0) Block MemberDecorate 59(block0) 0 Offset 0 Decorate 61 Binding 1 Decorate 61 DescriptorSet 0 Decorate 77(uni_image) NonReadable Decorate 77(uni_image) Binding 0 Decorate 77(uni_image) DescriptorSet 0 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 glslang-16.0.0/Test/baseResults/spv.460.vert.out000066400000000000000000000042421506534232700213010ustar00rootroot00000000000000spv.460.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader Capability DrawParameters Extension "SPV_KHR_shader_draw_parameters" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 12 15 18 19 Source GLSL 460 Name 4 "main" Name 8 "a" Name 10 "gl_BaseVertex" Name 12 "gl_BaseInstance" Name 15 "gl_DrawID" Name 18 "gl_VertexID" Name 19 "gl_InstanceID" Decorate 10(gl_BaseVertex) BuiltIn BaseVertex Decorate 12(gl_BaseInstance) BuiltIn BaseInstance Decorate 15(gl_DrawID) BuiltIn DrawIndex Decorate 18(gl_VertexID) BuiltIn VertexId Decorate 19(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_BaseVertex): 9(ptr) Variable Input 12(gl_BaseInstance): 9(ptr) Variable Input 15(gl_DrawID): 9(ptr) Variable Input 18(gl_VertexID): 9(ptr) Variable Input 19(gl_InstanceID): 9(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(a): 7(ptr) Variable Function 11: 6(int) Load 10(gl_BaseVertex) 13: 6(int) Load 12(gl_BaseInstance) 14: 6(int) IAdd 11 13 16: 6(int) Load 15(gl_DrawID) 17: 6(int) IAdd 14 16 Store 8(a) 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.8bit-16bit-construction.frag.out000066400000000000000000000077031506534232700252550ustar00rootroot00000000000000spv.8bit-16bit-construction.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader Capability StorageUniformBufferBlock16 Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_16bit_storage" Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_16bit_storage" SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 11 "B" MemberName 11(B) 0 "i8_from_i16" MemberName 11(B) 1 "i16_from_i8" MemberName 11(B) 2 "u8_from_u16" MemberName 11(B) 3 "u16_from_u8" MemberName 11(B) 4 "f16_from_i8" Name 13 "" Decorate 11(B) BufferBlock MemberDecorate 11(B) 0 Offset 0 MemberDecorate 11(B) 1 Offset 2 MemberDecorate 11(B) 2 Offset 4 MemberDecorate 11(B) 3 Offset 6 MemberDecorate 11(B) 4 Offset 8 Decorate 13 Binding 0 Decorate 13 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 7: TypeInt 16 1 8: TypeInt 8 0 9: TypeInt 16 0 10: TypeFloat 16 11(B): TypeStruct 6(int8_t) 7(int16_t) 8(int8_t) 9(int16_t) 10(float16_t) 12: TypePointer Uniform 11(B) 13: 12(ptr) Variable Uniform 14: TypeInt 32 1 15: 14(int) Constant 0 16: 14(int) Constant 1 19: TypePointer Uniform 6(int8_t) 23: TypePointer Uniform 7(int16_t) 25: 14(int) Constant 2 26: TypeInt 32 0 27: 26(int) Constant 1 30: TypePointer Uniform 8(int8_t) 32: 14(int) Constant 3 35: TypePointer Uniform 9(int16_t) 37: 14(int) Constant 4 39: TypeFloat 32 41: TypePointer Uniform 10(float16_t) 4(main): 2 Function None 3 5: Label 17: 7(int16_t) SConvert 16 18: 6(int8_t) SConvert 17 20: 19(ptr) AccessChain 13 15 Store 20 18 21: 6(int8_t) SConvert 16 22: 7(int16_t) SConvert 21 24: 23(ptr) AccessChain 13 16 Store 24 22 28: 9(int16_t) UConvert 27 29: 8(int8_t) UConvert 28 31: 30(ptr) AccessChain 13 25 Store 31 29 33: 8(int8_t) UConvert 27 34: 9(int16_t) UConvert 33 36: 35(ptr) AccessChain 13 32 Store 36 34 38: 6(int8_t) SConvert 16 40:10(float16_t) FConvert 38 42: 41(ptr) AccessChain 13 37 Store 42 40 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.8bitstorage-int.frag.out000066400000000000000000000432551506534232700237610ustar00rootroot00000000000000spv.8bitstorage-int.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 180 Capability Shader Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 12 "S" MemberName 12(S) 0 "x" MemberName 12(S) 1 "y" MemberName 12(S) 2 "z" Name 17 "B2" MemberName 17(B2) 0 "o" MemberName 17(B2) 1 "p" MemberName 17(B2) 2 "q" MemberName 17(B2) 3 "r" MemberName 17(B2) 4 "u" MemberName 17(B2) 5 "v" MemberName 17(B2) 6 "x" MemberName 17(B2) 7 "w" Name 19 "b2" Name 23 "S" MemberName 23(S) 0 "x" MemberName 23(S) 1 "y" MemberName 23(S) 2 "z" Name 25 "B1" MemberName 25(B1) 0 "a" MemberName 25(B1) 1 "b" MemberName 25(B1) 2 "c" MemberName 25(B1) 3 "d" MemberName 25(B1) 4 "g" MemberName 25(B1) 5 "h" MemberName 25(B1) 6 "j" Name 27 "b1" Name 45 "S" MemberName 45(S) 0 "x" MemberName 45(S) 1 "y" MemberName 45(S) 2 "z" Name 49 "B5" MemberName 49(B5) 0 "o" MemberName 49(B5) 1 "p" MemberName 49(B5) 2 "q" MemberName 49(B5) 3 "r" MemberName 49(B5) 4 "u" MemberName 49(B5) 5 "v" MemberName 49(B5) 6 "x" MemberName 49(B5) 7 "w" Name 51 "b5" Name 69 "x0" Name 75 "x1" Name 88 "S2" MemberName 88(S2) 0 "x" MemberName 88(S2) 1 "y" MemberName 88(S2) 2 "z" Name 89 "S3" MemberName 89(S3) 0 "x" Name 90 "B4" MemberName 90(B4) 0 "x" MemberName 90(B4) 1 "y" Name 92 "b4" Name 93 "S2" MemberName 93(S2) 0 "x" MemberName 93(S2) 1 "y" MemberName 93(S2) 2 "z" Name 94 "B3" MemberName 94(B3) 0 "x" Name 96 "b3" Name 113 "v3" Name 135 "u3" Decorate 11 ArrayStride 1 MemberDecorate 12(S) 0 Offset 0 MemberDecorate 12(S) 1 Offset 2 MemberDecorate 12(S) 2 Offset 4 Decorate 13 ArrayStride 8 Decorate 15 ArrayStride 2 Decorate 16 ArrayStride 1 Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 2 MemberDecorate 17(B2) 2 Offset 4 MemberDecorate 17(B2) 3 Offset 7 MemberDecorate 17(B2) 4 Offset 12 MemberDecorate 17(B2) 5 Offset 20 MemberDecorate 17(B2) 6 Offset 36 MemberDecorate 17(B2) 7 Offset 236 Decorate 19(b2) Binding 1 Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 2 MemberDecorate 23(S) 2 Offset 4 Decorate 24 ArrayStride 16 Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 2 MemberDecorate 25(B1) 2 Offset 4 MemberDecorate 25(B1) 3 Offset 16 MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 Decorate 27(b1) Binding 0 Decorate 27(b1) DescriptorSet 0 Decorate 44 ArrayStride 16 MemberDecorate 45(S) 0 Offset 0 MemberDecorate 45(S) 1 Offset 2 MemberDecorate 45(S) 2 Offset 4 Decorate 46 ArrayStride 16 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 Decorate 49(B5) Block MemberDecorate 49(B5) 0 Offset 0 MemberDecorate 49(B5) 1 Offset 2 MemberDecorate 49(B5) 2 Offset 4 MemberDecorate 49(B5) 3 Offset 16 MemberDecorate 49(B5) 4 Offset 48 MemberDecorate 49(B5) 5 Offset 64 MemberDecorate 49(B5) 6 Offset 96 MemberDecorate 49(B5) 7 Offset 1696 Decorate 51(b5) Binding 2 Decorate 51(b5) DescriptorSet 0 MemberDecorate 88(S2) 0 ColMajor MemberDecorate 88(S2) 0 MatrixStride 16 MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 1 Offset 64 MemberDecorate 88(S2) 2 Offset 68 MemberDecorate 89(S3) 0 Offset 0 Decorate 90(B4) BufferBlock MemberDecorate 90(B4) 0 Offset 0 MemberDecorate 90(B4) 1 Offset 80 Decorate 92(b4) Binding 4 Decorate 92(b4) DescriptorSet 0 MemberDecorate 93(S2) 0 RowMajor MemberDecorate 93(S2) 0 MatrixStride 16 MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 1 Offset 64 MemberDecorate 93(S2) 2 Offset 68 Decorate 94(B3) BufferBlock MemberDecorate 94(B3) 0 Offset 0 Decorate 96(b3) Binding 3 Decorate 96(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 7: TypeVector 6(int8_t) 2 8: TypeVector 6(int8_t) 3 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(int8_t) 10 12(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 13: TypeArray 12(S) 10 14: 9(int) Constant 100 15: TypeArray 7(i8vec2) 14 16: TypeRuntimeArray 6(int8_t) 17(B2): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 11 12(S) 13 15 16 18: TypePointer Uniform 17(B2) 19(b2): 18(ptr) Variable Uniform 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypeArray 6(int8_t) 10 23(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 24: TypeArray 23(S) 10 25(B1): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 22 23(S) 24 20(int) 26: TypePointer Uniform 25(B1) 27(b1): 26(ptr) Variable Uniform 28: TypePointer Uniform 6(int8_t) 32: 20(int) Constant 1 33: 20(int) Constant 2 34: TypePointer Uniform 8(i8vec3) 37: TypeVector 20(int) 3 39: TypeVector 20(int) 2 42: TypePointer Uniform 7(i8vec2) 44: TypeArray 6(int8_t) 10 45(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 46: TypeArray 45(S) 10 47: TypeArray 7(i8vec2) 14 48: TypeArray 6(int8_t) 14 49(B5): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 44 45(S) 46 47 48 50: TypePointer Uniform 49(B5) 51(b5): 50(ptr) Variable Uniform 58: 20(int) Constant 3 68: TypePointer Function 20(int) 73: TypeVector 20(int) 4 74: TypePointer Function 73(ivec4) 85: TypeFloat 32 86: TypeVector 85(float) 4 87: TypeMatrix 86(fvec4) 4 88(S2): TypeStruct 87 6(int8_t) 20(int) 89(S3): TypeStruct 88(S2) 90(B4): TypeStruct 88(S2) 89(S3) 91: TypePointer Uniform 90(B4) 92(b4): 91(ptr) Variable Uniform 93(S2): TypeStruct 87 6(int8_t) 20(int) 94(B3): TypeStruct 93(S2) 95: TypePointer Uniform 94(B3) 96(b3): 95(ptr) Variable Uniform 97: TypePointer Uniform 87 104: 9(int) Constant 0 108: 20(int) Constant 5 112: TypePointer Function 37(ivec3) 114: 20(int) Constant 7 115: 20(int) Constant 6 116: TypePointer Uniform 20(int) 166: 39(ivec2) ConstantComposite 32 33 4(main): 2 Function None 3 5: Label 69(x0): 68(ptr) Variable Function 75(x1): 74(ptr) Variable Function 113(v3): 112(ptr) Variable Function 135(u3): 112(ptr) Variable Function 29: 28(ptr) AccessChain 27(b1) 21 30: 6(int8_t) Load 29 31: 28(ptr) AccessChain 19(b2) 21 Store 31 30 35: 34(ptr) AccessChain 19(b2) 33 36: 8(i8vec3) Load 35 38: 37(ivec3) SConvert 36 40: 39(ivec2) VectorShuffle 38 38 0 1 41: 7(i8vec2) SConvert 40 43: 42(ptr) AccessChain 19(b2) 32 Store 43 41 52: 34(ptr) AccessChain 51(b5) 33 53: 8(i8vec3) Load 52 54: 37(ivec3) SConvert 53 55: 39(ivec2) VectorShuffle 54 54 0 1 56: 7(i8vec2) SConvert 55 57: 42(ptr) AccessChain 19(b2) 32 Store 57 56 59: 28(ptr) AccessChain 19(b2) 58 21 60: 6(int8_t) Load 59 61: 28(ptr) AccessChain 19(b2) 58 21 Store 61 60 62: 28(ptr) AccessChain 51(b5) 58 32 63: 6(int8_t) Load 62 64: 28(ptr) AccessChain 19(b2) 58 32 Store 64 63 65: 42(ptr) AccessChain 19(b2) 32 66: 7(i8vec2) Load 65 67: 42(ptr) AccessChain 19(b2) 32 Store 67 66 70: 28(ptr) AccessChain 27(b1) 21 71: 6(int8_t) Load 70 72: 20(int) SConvert 71 Store 69(x0) 72 76: 28(ptr) AccessChain 27(b1) 21 77: 6(int8_t) Load 76 78: 20(int) SConvert 77 79: 42(ptr) AccessChain 19(b2) 32 80: 7(i8vec2) Load 79 81: 39(ivec2) SConvert 80 82: 20(int) CompositeExtract 81 0 83: 20(int) CompositeExtract 81 1 84: 73(ivec4) CompositeConstruct 78 82 83 32 Store 75(x1) 84 98: 97(ptr) AccessChain 96(b3) 21 21 99: 87 Load 98 100: 97(ptr) AccessChain 92(b4) 21 21 Store 100 99 101: 42(ptr) AccessChain 19(b2) 32 102: 7(i8vec2) Load 101 103: 39(ivec2) SConvert 102 105: 20(int) CompositeExtract 103 0 106: 6(int8_t) SConvert 105 107: 28(ptr) AccessChain 19(b2) 21 Store 107 106 109: 42(ptr) AccessChain 19(b2) 108 32 32 110: 7(i8vec2) Load 109 111: 42(ptr) AccessChain 19(b2) 32 Store 111 110 117: 116(ptr) AccessChain 27(b1) 115 118: 20(int) Load 117 119: 28(ptr) AccessChain 19(b2) 114 118 120: 6(int8_t) Load 119 121: 20(int) SConvert 120 122: 116(ptr) AccessChain 27(b1) 115 123: 20(int) Load 122 124: 20(int) IAdd 123 32 125: 28(ptr) AccessChain 19(b2) 114 124 126: 6(int8_t) Load 125 127: 20(int) SConvert 126 128: 116(ptr) AccessChain 27(b1) 115 129: 20(int) Load 128 130: 20(int) IAdd 129 33 131: 28(ptr) AccessChain 19(b2) 114 130 132: 6(int8_t) Load 131 133: 20(int) SConvert 132 134: 37(ivec3) CompositeConstruct 121 127 133 Store 113(v3) 134 136: 116(ptr) AccessChain 27(b1) 115 137: 20(int) Load 136 138: 28(ptr) AccessChain 51(b5) 114 137 139: 6(int8_t) Load 138 140: 20(int) SConvert 139 141: 116(ptr) AccessChain 27(b1) 115 142: 20(int) Load 141 143: 20(int) IAdd 142 32 144: 28(ptr) AccessChain 51(b5) 114 143 145: 6(int8_t) Load 144 146: 20(int) SConvert 145 147: 116(ptr) AccessChain 27(b1) 115 148: 20(int) Load 147 149: 20(int) IAdd 148 33 150: 28(ptr) AccessChain 51(b5) 114 149 151: 6(int8_t) Load 150 152: 20(int) SConvert 151 153: 37(ivec3) CompositeConstruct 140 146 152 Store 135(u3) 153 154: 42(ptr) AccessChain 19(b2) 115 21 155: 7(i8vec2) Load 154 156: 42(ptr) AccessChain 19(b2) 115 21 Store 156 155 157: 42(ptr) AccessChain 51(b5) 115 32 158: 7(i8vec2) Load 157 159: 42(ptr) AccessChain 19(b2) 115 32 Store 159 158 160: 28(ptr) AccessChain 27(b1) 21 161: 6(int8_t) Load 160 162: 28(ptr) AccessChain 19(b2) 32 104 Store 162 161 163: 28(ptr) AccessChain 19(b2) 32 104 164: 6(int8_t) Load 163 165: 28(ptr) AccessChain 19(b2) 21 Store 165 164 167: 7(i8vec2) SConvert 166 168: 42(ptr) AccessChain 19(b2) 32 Store 168 167 169: 6(int8_t) SConvert 58 170: 28(ptr) AccessChain 19(b2) 21 Store 170 169 171: 28(ptr) AccessChain 27(b1) 21 172: 6(int8_t) Load 171 173: 28(ptr) AccessChain 19(b2) 21 Store 173 172 174: 42(ptr) AccessChain 27(b1) 32 175: 7(i8vec2) Load 174 176: 42(ptr) AccessChain 19(b2) 32 Store 176 175 177: 34(ptr) AccessChain 27(b1) 33 178: 8(i8vec3) Load 177 179: 34(ptr) AccessChain 19(b2) 33 Store 179 178 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.8bitstorage-ssbo.vert.out000066400000000000000000000054311506534232700241700ustar00rootroot00000000000000spv.8bitstorage-ssbo.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 18 Source GLSL 450 SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 9 "color" Name 12 "Vertices" MemberName 12(Vertices) 0 "vertices" Name 14 "" Name 18 "gl_VertexIndex" Decorate 9(color) Location 0 Decorate 11 ArrayStride 1 Decorate 12(Vertices) BufferBlock MemberDecorate 12(Vertices) 0 NonWritable MemberDecorate 12(Vertices) 0 Offset 0 Decorate 14 NonWritable Decorate 14 Binding 0 Decorate 14 DescriptorSet 0 Decorate 18(gl_VertexIndex) BuiltIn VertexIndex 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: TypeInt 8 0 11: TypeRuntimeArray 10(int8_t) 12(Vertices): TypeStruct 11 13: TypePointer Uniform 12(Vertices) 14: 13(ptr) Variable Uniform 15: TypeInt 32 1 16: 15(int) Constant 0 17: TypePointer Input 15(int) 18(gl_VertexIndex): 17(ptr) Variable Input 20: TypePointer Uniform 10(int8_t) 23: TypeInt 32 0 4(main): 2 Function None 3 5: Label 19: 15(int) Load 18(gl_VertexIndex) 21: 20(ptr) AccessChain 14 16 19 22: 10(int8_t) Load 21 24: 23(int) UConvert 22 25: 15(int) Bitcast 24 26: 6(float) ConvertSToF 25 27: 7(fvec4) CompositeConstruct 26 26 26 26 Store 9(color) 27 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.8bitstorage-ubo.vert.out000066400000000000000000000053621506534232700240120ustar00rootroot00000000000000spv.8bitstorage-ubo.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 20 Source GLSL 450 SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 9 "color" Name 14 "Vertices" MemberName 14(Vertices) 0 "vertices" Name 16 "" Name 20 "gl_VertexIndex" Decorate 9(color) Location 0 Decorate 13 ArrayStride 16 Decorate 14(Vertices) Block MemberDecorate 14(Vertices) 0 Offset 0 Decorate 16 NonWritable Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 20(gl_VertexIndex) BuiltIn VertexIndex 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: TypeInt 8 0 11: TypeInt 32 0 12: 11(int) Constant 512 13: TypeArray 10(int8_t) 12 14(Vertices): TypeStruct 13 15: TypePointer Uniform 14(Vertices) 16: 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypePointer Input 17(int) 20(gl_VertexIndex): 19(ptr) Variable Input 22: TypePointer Uniform 10(int8_t) 4(main): 2 Function None 3 5: Label 21: 17(int) Load 20(gl_VertexIndex) 23: 22(ptr) AccessChain 16 18 21 24: 10(int8_t) Load 23 25: 11(int) UConvert 24 26: 17(int) Bitcast 25 27: 6(float) ConvertSToF 26 28: 7(fvec4) CompositeConstruct 27 27 27 27 Store 9(color) 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.8bitstorage-uint.frag.out000066400000000000000000000433721506534232700241460ustar00rootroot00000000000000spv.8bitstorage-uint.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 182 Capability Shader Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 12 "S" MemberName 12(S) 0 "x" MemberName 12(S) 1 "y" MemberName 12(S) 2 "z" Name 17 "B2" MemberName 17(B2) 0 "o" MemberName 17(B2) 1 "p" MemberName 17(B2) 2 "q" MemberName 17(B2) 3 "r" MemberName 17(B2) 4 "u" MemberName 17(B2) 5 "v" MemberName 17(B2) 6 "x" MemberName 17(B2) 7 "w" Name 19 "b2" Name 23 "S" MemberName 23(S) 0 "x" MemberName 23(S) 1 "y" MemberName 23(S) 2 "z" Name 25 "B1" MemberName 25(B1) 0 "a" MemberName 25(B1) 1 "b" MemberName 25(B1) 2 "c" MemberName 25(B1) 3 "d" MemberName 25(B1) 4 "g" MemberName 25(B1) 5 "h" MemberName 25(B1) 6 "j" Name 27 "b1" Name 45 "S" MemberName 45(S) 0 "x" MemberName 45(S) 1 "y" MemberName 45(S) 2 "z" Name 49 "B5" MemberName 49(B5) 0 "o" MemberName 49(B5) 1 "p" MemberName 49(B5) 2 "q" MemberName 49(B5) 3 "r" MemberName 49(B5) 4 "u" MemberName 49(B5) 5 "v" MemberName 49(B5) 6 "x" MemberName 49(B5) 7 "w" Name 51 "b5" Name 69 "x0" Name 75 "x1" Name 89 "S2" MemberName 89(S2) 0 "x" MemberName 89(S2) 1 "y" MemberName 89(S2) 2 "z" Name 90 "S3" MemberName 90(S3) 0 "x" Name 91 "B4" MemberName 91(B4) 0 "x" MemberName 91(B4) 1 "y" Name 93 "b4" Name 94 "S2" MemberName 94(S2) 0 "x" MemberName 94(S2) 1 "y" MemberName 94(S2) 2 "z" Name 95 "B3" MemberName 95(B3) 0 "x" Name 97 "b3" Name 114 "v3" Name 136 "u3" Decorate 11 ArrayStride 1 MemberDecorate 12(S) 0 Offset 0 MemberDecorate 12(S) 1 Offset 2 MemberDecorate 12(S) 2 Offset 4 Decorate 13 ArrayStride 8 Decorate 15 ArrayStride 2 Decorate 16 ArrayStride 1 Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 2 MemberDecorate 17(B2) 2 Offset 4 MemberDecorate 17(B2) 3 Offset 7 MemberDecorate 17(B2) 4 Offset 12 MemberDecorate 17(B2) 5 Offset 20 MemberDecorate 17(B2) 6 Offset 36 MemberDecorate 17(B2) 7 Offset 236 Decorate 19(b2) Binding 1 Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 2 MemberDecorate 23(S) 2 Offset 4 Decorate 24 ArrayStride 16 Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 2 MemberDecorate 25(B1) 2 Offset 4 MemberDecorate 25(B1) 3 Offset 16 MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 Decorate 27(b1) Binding 0 Decorate 27(b1) DescriptorSet 0 Decorate 44 ArrayStride 16 MemberDecorate 45(S) 0 Offset 0 MemberDecorate 45(S) 1 Offset 2 MemberDecorate 45(S) 2 Offset 4 Decorate 46 ArrayStride 16 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 Decorate 49(B5) Block MemberDecorate 49(B5) 0 Offset 0 MemberDecorate 49(B5) 1 Offset 2 MemberDecorate 49(B5) 2 Offset 4 MemberDecorate 49(B5) 3 Offset 16 MemberDecorate 49(B5) 4 Offset 48 MemberDecorate 49(B5) 5 Offset 64 MemberDecorate 49(B5) 6 Offset 96 MemberDecorate 49(B5) 7 Offset 1696 Decorate 51(b5) Binding 2 Decorate 51(b5) DescriptorSet 0 MemberDecorate 89(S2) 0 ColMajor MemberDecorate 89(S2) 0 MatrixStride 16 MemberDecorate 89(S2) 0 Offset 0 MemberDecorate 89(S2) 1 Offset 64 MemberDecorate 89(S2) 2 Offset 68 MemberDecorate 90(S3) 0 Offset 0 Decorate 91(B4) BufferBlock MemberDecorate 91(B4) 0 Offset 0 MemberDecorate 91(B4) 1 Offset 80 Decorate 93(b4) Binding 4 Decorate 93(b4) DescriptorSet 0 MemberDecorate 94(S2) 0 RowMajor MemberDecorate 94(S2) 0 MatrixStride 16 MemberDecorate 94(S2) 0 Offset 0 MemberDecorate 94(S2) 1 Offset 64 MemberDecorate 94(S2) 2 Offset 68 Decorate 95(B3) BufferBlock MemberDecorate 95(B3) 0 Offset 0 Decorate 97(b3) Binding 3 Decorate 97(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 0 7: TypeVector 6(int8_t) 2 8: TypeVector 6(int8_t) 3 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(int8_t) 10 12(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 13: TypeArray 12(S) 10 14: 9(int) Constant 100 15: TypeArray 7(i8vec2) 14 16: TypeRuntimeArray 6(int8_t) 17(B2): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 11 12(S) 13 15 16 18: TypePointer Uniform 17(B2) 19(b2): 18(ptr) Variable Uniform 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypeArray 6(int8_t) 10 23(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 24: TypeArray 23(S) 10 25(B1): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 22 23(S) 24 9(int) 26: TypePointer Uniform 25(B1) 27(b1): 26(ptr) Variable Uniform 28: TypePointer Uniform 6(int8_t) 32: 20(int) Constant 1 33: 20(int) Constant 2 34: TypePointer Uniform 8(i8vec3) 37: TypeVector 9(int) 3 39: TypeVector 9(int) 2 42: TypePointer Uniform 7(i8vec2) 44: TypeArray 6(int8_t) 10 45(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 46: TypeArray 45(S) 10 47: TypeArray 7(i8vec2) 14 48: TypeArray 6(int8_t) 14 49(B5): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 44 45(S) 46 47 48 50: TypePointer Uniform 49(B5) 51(b5): 50(ptr) Variable Uniform 58: 20(int) Constant 3 68: TypePointer Function 9(int) 73: TypeVector 9(int) 4 74: TypePointer Function 73(ivec4) 82: 9(int) Constant 1 86: TypeFloat 32 87: TypeVector 86(float) 4 88: TypeMatrix 87(fvec4) 4 89(S2): TypeStruct 88 6(int8_t) 9(int) 90(S3): TypeStruct 89(S2) 91(B4): TypeStruct 89(S2) 90(S3) 92: TypePointer Uniform 91(B4) 93(b4): 92(ptr) Variable Uniform 94(S2): TypeStruct 88 6(int8_t) 9(int) 95(B3): TypeStruct 94(S2) 96: TypePointer Uniform 95(B3) 97(b3): 96(ptr) Variable Uniform 98: TypePointer Uniform 88 105: 9(int) Constant 0 109: 20(int) Constant 5 113: TypePointer Function 37(ivec3) 115: 20(int) Constant 7 116: 20(int) Constant 6 117: TypePointer Uniform 9(int) 167: 39(ivec2) ConstantComposite 82 10 170: 9(int) Constant 3 4(main): 2 Function None 3 5: Label 69(x0): 68(ptr) Variable Function 75(x1): 74(ptr) Variable Function 114(v3): 113(ptr) Variable Function 136(u3): 113(ptr) Variable Function 29: 28(ptr) AccessChain 27(b1) 21 30: 6(int8_t) Load 29 31: 28(ptr) AccessChain 19(b2) 21 Store 31 30 35: 34(ptr) AccessChain 19(b2) 33 36: 8(i8vec3) Load 35 38: 37(ivec3) UConvert 36 40: 39(ivec2) VectorShuffle 38 38 0 1 41: 7(i8vec2) UConvert 40 43: 42(ptr) AccessChain 19(b2) 32 Store 43 41 52: 34(ptr) AccessChain 51(b5) 33 53: 8(i8vec3) Load 52 54: 37(ivec3) UConvert 53 55: 39(ivec2) VectorShuffle 54 54 0 1 56: 7(i8vec2) UConvert 55 57: 42(ptr) AccessChain 19(b2) 32 Store 57 56 59: 28(ptr) AccessChain 19(b2) 58 21 60: 6(int8_t) Load 59 61: 28(ptr) AccessChain 19(b2) 58 21 Store 61 60 62: 28(ptr) AccessChain 51(b5) 58 32 63: 6(int8_t) Load 62 64: 28(ptr) AccessChain 19(b2) 58 32 Store 64 63 65: 42(ptr) AccessChain 19(b2) 32 66: 7(i8vec2) Load 65 67: 42(ptr) AccessChain 19(b2) 32 Store 67 66 70: 28(ptr) AccessChain 27(b1) 21 71: 6(int8_t) Load 70 72: 9(int) UConvert 71 Store 69(x0) 72 76: 28(ptr) AccessChain 27(b1) 21 77: 6(int8_t) Load 76 78: 9(int) UConvert 77 79: 42(ptr) AccessChain 19(b2) 32 80: 7(i8vec2) Load 79 81: 39(ivec2) UConvert 80 83: 9(int) CompositeExtract 81 0 84: 9(int) CompositeExtract 81 1 85: 73(ivec4) CompositeConstruct 78 83 84 82 Store 75(x1) 85 99: 98(ptr) AccessChain 97(b3) 21 21 100: 88 Load 99 101: 98(ptr) AccessChain 93(b4) 21 21 Store 101 100 102: 42(ptr) AccessChain 19(b2) 32 103: 7(i8vec2) Load 102 104: 39(ivec2) UConvert 103 106: 9(int) CompositeExtract 104 0 107: 6(int8_t) UConvert 106 108: 28(ptr) AccessChain 19(b2) 21 Store 108 107 110: 42(ptr) AccessChain 19(b2) 109 32 32 111: 7(i8vec2) Load 110 112: 42(ptr) AccessChain 19(b2) 32 Store 112 111 118: 117(ptr) AccessChain 27(b1) 116 119: 9(int) Load 118 120: 28(ptr) AccessChain 19(b2) 115 119 121: 6(int8_t) Load 120 122: 9(int) UConvert 121 123: 117(ptr) AccessChain 27(b1) 116 124: 9(int) Load 123 125: 9(int) IAdd 124 82 126: 28(ptr) AccessChain 19(b2) 115 125 127: 6(int8_t) Load 126 128: 9(int) UConvert 127 129: 117(ptr) AccessChain 27(b1) 116 130: 9(int) Load 129 131: 9(int) IAdd 130 10 132: 28(ptr) AccessChain 19(b2) 115 131 133: 6(int8_t) Load 132 134: 9(int) UConvert 133 135: 37(ivec3) CompositeConstruct 122 128 134 Store 114(v3) 135 137: 117(ptr) AccessChain 27(b1) 116 138: 9(int) Load 137 139: 28(ptr) AccessChain 51(b5) 115 138 140: 6(int8_t) Load 139 141: 9(int) UConvert 140 142: 117(ptr) AccessChain 27(b1) 116 143: 9(int) Load 142 144: 9(int) IAdd 143 82 145: 28(ptr) AccessChain 51(b5) 115 144 146: 6(int8_t) Load 145 147: 9(int) UConvert 146 148: 117(ptr) AccessChain 27(b1) 116 149: 9(int) Load 148 150: 9(int) IAdd 149 10 151: 28(ptr) AccessChain 51(b5) 115 150 152: 6(int8_t) Load 151 153: 9(int) UConvert 152 154: 37(ivec3) CompositeConstruct 141 147 153 Store 136(u3) 154 155: 42(ptr) AccessChain 19(b2) 116 21 156: 7(i8vec2) Load 155 157: 42(ptr) AccessChain 19(b2) 116 21 Store 157 156 158: 42(ptr) AccessChain 51(b5) 116 32 159: 7(i8vec2) Load 158 160: 42(ptr) AccessChain 19(b2) 116 32 Store 160 159 161: 28(ptr) AccessChain 27(b1) 21 162: 6(int8_t) Load 161 163: 28(ptr) AccessChain 19(b2) 32 105 Store 163 162 164: 28(ptr) AccessChain 19(b2) 32 105 165: 6(int8_t) Load 164 166: 28(ptr) AccessChain 19(b2) 21 Store 166 165 168: 7(i8vec2) UConvert 167 169: 42(ptr) AccessChain 19(b2) 32 Store 169 168 171: 6(int8_t) UConvert 170 172: 28(ptr) AccessChain 19(b2) 21 Store 172 171 173: 28(ptr) AccessChain 27(b1) 21 174: 6(int8_t) Load 173 175: 28(ptr) AccessChain 19(b2) 21 Store 175 174 176: 42(ptr) AccessChain 27(b1) 32 177: 7(i8vec2) Load 176 178: 42(ptr) AccessChain 19(b2) 32 Store 178 177 179: 34(ptr) AccessChain 27(b1) 33 180: 8(i8vec3) Load 179 181: 34(ptr) AccessChain 19(b2) 33 Store 181 180 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.8bitstorage_Error-int.frag.out000066400000000000000000000137471506534232700251350ustar00rootroot00000000000000spv.8bitstorage_Error-int.frag ERROR: 0:54: 'structure: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:58: 'return: can't use with structs containing int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:61: 'int8_t: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:74: '[: does not operate on types containing (u)int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:75: '.: can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:77: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:77: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int8_t' (or there is no acceptable conversion) ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform int8_t (or there is no acceptable conversion) ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:81: '.: can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:82: '=: can't use with structs containing int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:83: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:84: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:85: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int8_t' (or there is no acceptable conversion) ERROR: 0:87: '=: can't use with arrays containing int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:88: 'constructor: 8-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:89: 'constructor: 8-bit arrays not supported' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:89: 'constructor: 8-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:92: 'constructor: can't construct structure containing 8-bit type' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:93: 'func2' : no matching overloaded function found ERROR: 0:99: '' : syntax error, unexpected IDENTIFIER ERROR: 26 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.8bitstorage_Error-uint.frag.out000066400000000000000000000137621506534232700253170ustar00rootroot00000000000000spv.8bitstorage_Error-uint.frag ERROR: 0:54: 'structure: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:58: 'return: can't use with structs containing uint8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:61: 'uint8_t: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:74: '[: does not operate on types containing (u)int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:75: '.: can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:77: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:77: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint8_t' (or there is no acceptable conversion) ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform uint8_t (or there is no acceptable conversion) ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:81: '.: can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:82: '=: can't use with structs containing uint8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:83: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:84: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:85: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint8_t' (or there is no acceptable conversion) ERROR: 0:87: '=: can't use with arrays containing uint8' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:88: 'constructor: 8-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:89: 'constructor: 8-bit arrays not supported' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:89: 'constructor: 8-bit vectors only take vector types' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:92: 'constructor: can't construct structure containing 8-bit type' : required extension not requested: Possible extensions include: GL_EXT_shader_explicit_arithmetic_types GL_NV_gpu_shader5 GL_EXT_shader_explicit_arithmetic_types_int8 ERROR: 0:93: 'func2' : no matching overloaded function found ERROR: 0:99: '' : syntax error, unexpected IDENTIFIER ERROR: 26 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ARMCoreBuiltIns.frag.out000066400000000000000000000061711506534232700236340ustar00rootroot00000000000000spv.ARMCoreBuiltIns.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader Capability CoreBuiltinsARM Extension "SPV_ARM_core_builtins" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 10 14 15 17 19 21 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARM_shader_core_builtins" Name 4 "main" Name 8 "temp" Name 10 "gl_WarpMaxIDARM" Name 14 "data" Name 15 "gl_CoreIDARM" Name 17 "gl_CoreCountARM" Name 19 "gl_CoreMaxIDARM" Name 21 "gl_WarpIDARM" Decorate 10(gl_WarpMaxIDARM) BuiltIn BuiltInWarpMaxIDARM Decorate 10(gl_WarpMaxIDARM) Flat Decorate 14(data) Location 0 Decorate 15(gl_CoreIDARM) BuiltIn CoreIDARM Decorate 15(gl_CoreIDARM) Flat Decorate 17(gl_CoreCountARM) BuiltIn CoreCountARM Decorate 17(gl_CoreCountARM) Flat Decorate 19(gl_CoreMaxIDARM) BuiltIn CoreMaxIDARM Decorate 19(gl_CoreMaxIDARM) Flat Decorate 21(gl_WarpIDARM) BuiltIn WarpIDARM Decorate 21(gl_WarpIDARM) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_WarpMaxIDARM): 9(ptr) Variable Input 12: TypeVector 6(int) 4 13: TypePointer Output 12(ivec4) 14(data): 13(ptr) Variable Output 15(gl_CoreIDARM): 9(ptr) Variable Input 17(gl_CoreCountARM): 9(ptr) Variable Input 19(gl_CoreMaxIDARM): 9(ptr) Variable Input 21(gl_WarpIDARM): 9(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(temp): 7(ptr) Variable Function 11: 6(int) Load 10(gl_WarpMaxIDARM) Store 8(temp) 11 16: 6(int) Load 15(gl_CoreIDARM) 18: 6(int) Load 17(gl_CoreCountARM) 20: 6(int) Load 19(gl_CoreMaxIDARM) 22: 6(int) Load 21(gl_WarpIDARM) 23: 6(int) Load 8(temp) 24: 6(int) IAdd 22 23 25: 12(ivec4) CompositeConstruct 16 18 20 24 Store 14(data) 25 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ARMCoreBuiltIns.vert.out000066400000000000000000000064141506534232700236750ustar00rootroot00000000000000spv.ARMCoreBuiltIns.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader Capability CoreBuiltinsARM Extension "SPV_ARM_core_builtins" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 18 20 22 24 Source GLSL 450 SourceExtension "GL_ARM_shader_core_builtins" Name 4 "main" Name 8 "temp" Name 10 "gl_WarpMaxIDARM" Name 13 "Output" MemberName 13(Output) 0 "result" Name 15 "" Name 18 "gl_CoreIDARM" Name 20 "gl_CoreCountARM" Name 22 "gl_CoreMaxIDARM" Name 24 "gl_WarpIDARM" Decorate 10(gl_WarpMaxIDARM) BuiltIn BuiltInWarpMaxIDARM Decorate 13(Output) BufferBlock MemberDecorate 13(Output) 0 Offset 0 Decorate 15 Binding 0 Decorate 15 DescriptorSet 0 Decorate 18(gl_CoreIDARM) BuiltIn CoreIDARM Decorate 20(gl_CoreCountARM) BuiltIn CoreCountARM Decorate 22(gl_CoreMaxIDARM) BuiltIn CoreMaxIDARM Decorate 24(gl_WarpIDARM) BuiltIn WarpIDARM 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_WarpMaxIDARM): 9(ptr) Variable Input 12: TypeVector 6(int) 4 13(Output): TypeStruct 12(ivec4) 14: TypePointer Uniform 13(Output) 15: 14(ptr) Variable Uniform 16: TypeInt 32 1 17: 16(int) Constant 0 18(gl_CoreIDARM): 9(ptr) Variable Input 20(gl_CoreCountARM): 9(ptr) Variable Input 22(gl_CoreMaxIDARM): 9(ptr) Variable Input 24(gl_WarpIDARM): 9(ptr) Variable Input 29: TypePointer Uniform 12(ivec4) 4(main): 2 Function None 3 5: Label 8(temp): 7(ptr) Variable Function 11: 6(int) Load 10(gl_WarpMaxIDARM) Store 8(temp) 11 19: 6(int) Load 18(gl_CoreIDARM) 21: 6(int) Load 20(gl_CoreCountARM) 23: 6(int) Load 22(gl_CoreMaxIDARM) 25: 6(int) Load 24(gl_WarpIDARM) 26: 6(int) Load 8(temp) 27: 6(int) IAdd 25 26 28: 12(ivec4) CompositeConstruct 19 21 23 27 30: 29(ptr) AccessChain 15 17 Store 30 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.AnyHitShader.rahit.out000066400000000000000000000204741506534232700234470ustar00rootroot00000000000000spv.AnyHitShader.rahit // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 80 Capability RayTracingNV Extension "SPV_NV_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 57 63 66 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDNV" Name 13 "v1" Name 14 "gl_LaunchSizeNV" Name 18 "v2" Name 20 "gl_PrimitiveID" Name 22 "v3" Name 23 "gl_InstanceID" Name 25 "v4" Name 26 "gl_InstanceCustomIndexNV" Name 31 "v5" Name 33 "gl_WorldRayOriginNV" Name 35 "v6" Name 36 "gl_WorldRayDirectionNV" Name 38 "v7" Name 39 "gl_ObjectRayOriginNV" Name 41 "v8" Name 42 "gl_ObjectRayDirectionNV" Name 45 "v9" Name 47 "gl_RayTminNV" Name 49 "v10" Name 50 "gl_RayTmaxNV" Name 52 "v11" Name 55 "v12" Name 57 "gl_HitKindNV" Name 61 "v13" Name 63 "gl_ObjectToWorldNV" Name 65 "v14" Name 66 "gl_WorldToObjectNV" Name 70 "incomingPayload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 23(gl_InstanceID) BuiltIn InstanceId Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexKHR Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR Decorate 57(gl_HitKindNV) BuiltIn HitKindKHR Decorate 63(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR Decorate 66(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR Decorate 70(incomingPayload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDNV): 10(ptr) Variable Input 14(gl_LaunchSizeNV): 10(ptr) Variable Input 16: TypeInt 32 1 17: TypePointer Function 16(int) 19: TypePointer Input 16(int) 20(gl_PrimitiveID): 19(ptr) Variable Input 23(gl_InstanceID): 19(ptr) Variable Input 26(gl_InstanceCustomIndexNV): 19(ptr) Variable Input 28: TypeFloat 32 29: TypeVector 28(float) 3 30: TypePointer Function 29(fvec3) 32: TypePointer Input 29(fvec3) 33(gl_WorldRayOriginNV): 32(ptr) Variable Input 36(gl_WorldRayDirectionNV): 32(ptr) Variable Input 39(gl_ObjectRayOriginNV): 32(ptr) Variable Input 42(gl_ObjectRayDirectionNV): 32(ptr) Variable Input 44: TypePointer Function 28(float) 46: TypePointer Input 28(float) 47(gl_RayTminNV): 46(ptr) Variable Input 50(gl_RayTmaxNV): 46(ptr) Variable Input 54: TypePointer Function 6(int) 56: TypePointer Input 6(int) 57(gl_HitKindNV): 56(ptr) Variable Input 59: TypeMatrix 29(fvec3) 4 60: TypePointer Function 59 62: TypePointer Input 59 63(gl_ObjectToWorldNV): 62(ptr) Variable Input 66(gl_WorldToObjectNV): 62(ptr) Variable Input 68: TypeVector 28(float) 4 69: TypePointer IncomingRayPayloadKHR 68(fvec4) 70(incomingPayload): 69(ptr) Variable IncomingRayPayloadKHR 71: 28(float) Constant 1056964608 72: 68(fvec4) ConstantComposite 71 71 71 71 74: 16(int) Constant 1 75: TypeBool 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function 13(v1): 8(ptr) Variable Function 18(v2): 17(ptr) Variable Function 22(v3): 17(ptr) Variable Function 25(v4): 17(ptr) Variable Function 31(v5): 30(ptr) Variable Function 35(v6): 30(ptr) Variable Function 38(v7): 30(ptr) Variable Function 41(v8): 30(ptr) Variable Function 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function 55(v12): 54(ptr) Variable Function 61(v13): 60(ptr) Variable Function 65(v14): 60(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) Store 13(v1) 15 21: 16(int) Load 20(gl_PrimitiveID) Store 18(v2) 21 24: 16(int) Load 23(gl_InstanceID) Store 22(v3) 24 27: 16(int) Load 26(gl_InstanceCustomIndexNV) Store 25(v4) 27 34: 29(fvec3) Load 33(gl_WorldRayOriginNV) Store 31(v5) 34 37: 29(fvec3) Load 36(gl_WorldRayDirectionNV) Store 35(v6) 37 40: 29(fvec3) Load 39(gl_ObjectRayOriginNV) Store 38(v7) 40 43: 29(fvec3) Load 42(gl_ObjectRayDirectionNV) Store 41(v8) 43 48: 28(float) Load 47(gl_RayTminNV) Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxNV) Store 49(v10) 51 53: 28(float) Load 50(gl_RayTmaxNV) Store 52(v11) 53 58: 6(int) Load 57(gl_HitKindNV) Store 55(v12) 58 64: 59 Load 63(gl_ObjectToWorldNV) Store 61(v13) 64 67: 59 Load 66(gl_WorldToObjectNV) Store 65(v14) 67 Store 70(incomingPayload) 72 73: 16(int) Load 18(v2) 76: 75(bool) IEqual 73 74 SelectionMerge 78 None BranchConditional 76 77 79 77: Label IgnoreIntersectionNV Branch 78 79: Label TerminateRayNV Branch 78 78: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.AnyHitShaderMotion.rahit.out000066400000000000000000000031241506534232700246260ustar00rootroot00000000000000spv.AnyHitShaderMotion.rahit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 14 Capability RayTracingKHR Capability RayTracingMotionBlurNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_ray_tracing_motion_blur" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint AnyHitKHR 4 "main" 10 Source GLSL 460 SourceExtension "GL_NV_ray_tracing_motion_blur" Name 4 "main" Name 8 "time" Name 10 "gl_CurrentRayTimeNV" Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: TypePointer Input 6(float) 10(gl_CurrentRayTimeNV): 9(ptr) Variable Input 12: 6(float) Constant 1056964608 4(main): 2 Function None 3 5: Label 8(time): 7(ptr) Variable Function 11: 6(float) Load 10(gl_CurrentRayTimeNV) 13: 6(float) FAdd 11 12 Store 8(time) 13 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.AnyHitShader_Errors.rahit.out000066400000000000000000000005601506534232700247750ustar00rootroot00000000000000spv.AnyHitShader_Errors.rahit ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage) ERROR: 0:9: 'reportIntersectionNV' : no matching overloaded function found ERROR: 0:10: 'traceNV' : no matching overloaded function found ERROR: 3 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.AofA.frag.out000066400000000000000000000166541506534232700215470ustar00rootroot00000000000000spv.AofA.frag WARNING: 0:6: '[][]' : Generating SPIR-V array-of-arrays, but Vulkan only supports single array level for this resource Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 104 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 39 44 68 70 72 78 ExecutionMode 4 OriginUpperLeft Source GLSL 430 Name 4 "main" Name 17 "foo(f1[5][7];" Name 16 "a" Name 20 "r" Name 39 "outfloat" Name 42 "g4" Name 44 "g5" Name 45 "param" Name 48 "u" Name 52 "param" Name 66 "many" Name 68 "i" Name 70 "j" Name 72 "k" Name 78 "infloat" Name 94 "uAofA" MemberName 94(uAofA) 0 "f" Name 98 "nameAofA" Decorate 39(outfloat) Location 0 Decorate 44(g5) Location 1 Decorate 68(i) Flat Decorate 68(i) Location 36 Decorate 70(j) Flat Decorate 70(j) Location 37 Decorate 72(k) Flat Decorate 72(k) Location 38 Decorate 78(infloat) Location 0 Decorate 92 ArrayStride 16 Decorate 93 ArrayStride 64 Decorate 94(uAofA) Block MemberDecorate 94(uAofA) 0 Offset 0 Decorate 98(nameAofA) Binding 0 Decorate 98(nameAofA) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 7 9: TypeArray 6(float) 8 10: 7(int) Constant 5 11: TypeArray 9 10 12: TypePointer Function 11 13: 7(int) Constant 4 14: TypeArray 9 13 15: TypeFunction 14 12(ptr) 19: TypePointer Function 9 21: TypeInt 32 1 22: 21(int) Constant 2 25: 21(int) Constant 0 28: 21(int) Constant 1 32: 21(int) Constant 3 38: TypePointer Output 6(float) 39(outfloat): 38(ptr) Variable Output 40: 6(float) Constant 0 41: TypePointer Private 14 42(g4): 41(ptr) Variable Private 43: TypePointer Input 11 44(g5): 43(ptr) Variable Input 49: 6(float) Constant 1077936128 50: TypePointer Function 6(float) 55: 7(int) Constant 6 56: TypeArray 6(float) 55 57: TypeArray 56 10 58: TypeArray 57 13 59: 7(int) Constant 3 60: TypeArray 58 59 61: 7(int) Constant 2 62: TypeArray 60 61 63: 7(int) Constant 1 64: TypeArray 62 63 65: TypePointer Private 64 66(many): 65(ptr) Variable Private 67: TypePointer Input 21(int) 68(i): 67(ptr) Variable Input 70(j): 67(ptr) Variable Input 72(k): 67(ptr) Variable Input 77: TypePointer Input 6(float) 78(infloat): 77(ptr) Variable Input 80: TypePointer Private 6(float) 92: TypeArray 6(float) 13 93: TypeArray 92 61 94(uAofA): TypeStruct 93 95: TypeArray 94(uAofA) 10 96: TypeArray 95 59 97: TypePointer Uniform 96 98(nameAofA): 97(ptr) Variable Uniform 99: TypePointer Uniform 6(float) 4(main): 2 Function None 3 5: Label 45(param): 12(ptr) Variable Function 48(u): 12(ptr) Variable Function 52(param): 12(ptr) Variable Function Store 39(outfloat) 40 46: 11 Load 44(g5) Store 45(param) 46 47: 14 FunctionCall 17(foo(f1[5][7];) 45(param) Store 42(g4) 47 51: 50(ptr) AccessChain 48(u) 22 22 Store 51 49 53: 11 Load 48(u) Store 52(param) 53 54: 14 FunctionCall 17(foo(f1[5][7];) 52(param) 69: 21(int) Load 68(i) 71: 21(int) Load 70(j) 73: 21(int) Load 72(k) 74: 21(int) Load 68(i) 75: 21(int) Load 70(j) 76: 21(int) Load 72(k) 79: 6(float) Load 78(infloat) 81: 80(ptr) AccessChain 66(many) 69 71 73 74 75 76 Store 81 79 82: 21(int) Load 70(j) 83: 21(int) Load 70(j) 84: 21(int) Load 70(j) 85: 21(int) Load 70(j) 86: 21(int) Load 70(j) 87: 21(int) Load 70(j) 88: 80(ptr) AccessChain 66(many) 82 83 84 85 86 87 89: 6(float) Load 88 90: 6(float) Load 39(outfloat) 91: 6(float) FAdd 90 89 Store 39(outfloat) 91 100: 99(ptr) AccessChain 98(nameAofA) 28 22 25 25 32 101: 6(float) Load 100 102: 6(float) Load 39(outfloat) 103: 6(float) FAdd 102 101 Store 39(outfloat) 103 Return FunctionEnd 17(foo(f1[5][7];): 14 Function None 15 16(a): 12(ptr) FunctionParameter 18: Label 20(r): 19(ptr) Variable Function 23: 19(ptr) AccessChain 16(a) 22 24: 9 Load 23 Store 20(r) 24 26: 19(ptr) AccessChain 16(a) 25 27: 9 Load 26 29: 19(ptr) AccessChain 16(a) 28 30: 9 Load 29 31: 9 Load 20(r) 33: 19(ptr) AccessChain 16(a) 32 34: 9 Load 33 35: 14 CompositeConstruct 27 30 31 34 ReturnValue 35 FunctionEnd glslang-16.0.0/Test/baseResults/spv.ClosestHitShader.rchit.out000066400000000000000000000213631506534232700243340ustar00rootroot00000000000000spv.ClosestHitShader.rchit // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 87 Capability RayTracingNV Extension "SPV_NV_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 57 63 66 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDNV" Name 13 "v1" Name 14 "gl_LaunchSizeNV" Name 18 "v2" Name 20 "gl_PrimitiveID" Name 22 "v3" Name 23 "gl_InstanceID" Name 25 "v4" Name 26 "gl_InstanceCustomIndexNV" Name 31 "v5" Name 33 "gl_WorldRayOriginNV" Name 35 "v6" Name 36 "gl_WorldRayDirectionNV" Name 38 "v7" Name 39 "gl_ObjectRayOriginNV" Name 41 "v8" Name 42 "gl_ObjectRayDirectionNV" Name 45 "v9" Name 47 "gl_RayTminNV" Name 49 "v10" Name 50 "gl_RayTmaxNV" Name 52 "v11" Name 55 "v12" Name 57 "gl_HitKindNV" Name 61 "v13" Name 63 "gl_ObjectToWorldNV" Name 65 "v14" Name 66 "gl_WorldToObjectNV" Name 70 "accNV" Name 84 "localPayload" Name 86 "incomingPayload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 23(gl_InstanceID) BuiltIn InstanceId Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexKHR Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR Decorate 57(gl_HitKindNV) BuiltIn HitKindKHR Decorate 63(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR Decorate 66(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR Decorate 70(accNV) Binding 0 Decorate 70(accNV) DescriptorSet 0 Decorate 84(localPayload) Location 0 Decorate 86(incomingPayload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDNV): 10(ptr) Variable Input 14(gl_LaunchSizeNV): 10(ptr) Variable Input 16: TypeInt 32 1 17: TypePointer Function 16(int) 19: TypePointer Input 16(int) 20(gl_PrimitiveID): 19(ptr) Variable Input 23(gl_InstanceID): 19(ptr) Variable Input 26(gl_InstanceCustomIndexNV): 19(ptr) Variable Input 28: TypeFloat 32 29: TypeVector 28(float) 3 30: TypePointer Function 29(fvec3) 32: TypePointer Input 29(fvec3) 33(gl_WorldRayOriginNV): 32(ptr) Variable Input 36(gl_WorldRayDirectionNV): 32(ptr) Variable Input 39(gl_ObjectRayOriginNV): 32(ptr) Variable Input 42(gl_ObjectRayDirectionNV): 32(ptr) Variable Input 44: TypePointer Function 28(float) 46: TypePointer Input 28(float) 47(gl_RayTminNV): 46(ptr) Variable Input 50(gl_RayTmaxNV): 46(ptr) Variable Input 54: TypePointer Function 6(int) 56: TypePointer Input 6(int) 57(gl_HitKindNV): 56(ptr) Variable Input 59: TypeMatrix 29(fvec3) 4 60: TypePointer Function 59 62: TypePointer Input 59 63(gl_ObjectToWorldNV): 62(ptr) Variable Input 66(gl_WorldToObjectNV): 62(ptr) Variable Input 68: TypeAccelerationStructureKHR 69: TypePointer UniformConstant 68 70(accNV): 69(ptr) Variable UniformConstant 72: 6(int) Constant 0 73: 6(int) Constant 1 74: 6(int) Constant 2 75: 6(int) Constant 3 76: 28(float) Constant 1056964608 77: 29(fvec3) ConstantComposite 76 76 76 78: 28(float) Constant 1065353216 79: 29(fvec3) ConstantComposite 78 78 78 80: 28(float) Constant 1061158912 81: 16(int) Constant 1 82: TypeVector 28(float) 4 83: TypePointer RayPayloadKHR 82(fvec4) 84(localPayload): 83(ptr) Variable RayPayloadKHR 85: TypePointer IncomingRayPayloadKHR 82(fvec4) 86(incomingPayload): 85(ptr) Variable IncomingRayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function 13(v1): 8(ptr) Variable Function 18(v2): 17(ptr) Variable Function 22(v3): 17(ptr) Variable Function 25(v4): 17(ptr) Variable Function 31(v5): 30(ptr) Variable Function 35(v6): 30(ptr) Variable Function 38(v7): 30(ptr) Variable Function 41(v8): 30(ptr) Variable Function 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function 55(v12): 54(ptr) Variable Function 61(v13): 60(ptr) Variable Function 65(v14): 60(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) Store 13(v1) 15 21: 16(int) Load 20(gl_PrimitiveID) Store 18(v2) 21 24: 16(int) Load 23(gl_InstanceID) Store 22(v3) 24 27: 16(int) Load 26(gl_InstanceCustomIndexNV) Store 25(v4) 27 34: 29(fvec3) Load 33(gl_WorldRayOriginNV) Store 31(v5) 34 37: 29(fvec3) Load 36(gl_WorldRayDirectionNV) Store 35(v6) 37 40: 29(fvec3) Load 39(gl_ObjectRayOriginNV) Store 38(v7) 40 43: 29(fvec3) Load 42(gl_ObjectRayDirectionNV) Store 41(v8) 43 48: 28(float) Load 47(gl_RayTminNV) Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxNV) Store 49(v10) 51 53: 28(float) Load 50(gl_RayTmaxNV) Store 52(v11) 53 58: 6(int) Load 57(gl_HitKindNV) Store 55(v12) 58 64: 59 Load 63(gl_ObjectToWorldNV) Store 61(v13) 64 67: 59 Load 66(gl_WorldToObjectNV) Store 65(v14) 67 71: 68 Load 70(accNV) TraceNV 71 72 73 74 75 72 77 76 79 80 81 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out000066400000000000000000000057021506534232700255210ustar00rootroot00000000000000spv.ClosestHitShaderMotion.rchit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 33 Capability RayTracingKHR Capability RayTracingMotionBlurNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_ray_tracing_motion_blur" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint ClosestHitKHR 4 "main" 10 16 32 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_ray_tracing_motion_blur" Name 4 "main" Name 8 "time" Name 10 "gl_CurrentRayTimeNV" Name 16 "accEXT" Name 32 "incomingPayloadEXT" Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV Decorate 16(accEXT) Binding 0 Decorate 16(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: TypePointer Input 6(float) 10(gl_CurrentRayTimeNV): 9(ptr) Variable Input 12: 6(float) Constant 1056964608 14: TypeAccelerationStructureKHR 15: TypePointer UniformConstant 14 16(accEXT): 15(ptr) Variable UniformConstant 18: TypeInt 32 0 19: 18(int) Constant 0 20: 18(int) Constant 1 21: 18(int) Constant 2 22: 18(int) Constant 3 23: TypeVector 6(float) 3 24: 23(fvec3) ConstantComposite 12 12 12 25: 6(float) Constant 1065353216 26: 23(fvec3) ConstantComposite 25 25 25 27: 6(float) Constant 1061158912 28: TypeInt 32 1 29: 28(int) Constant 0 30: TypeVector 6(float) 4 31: TypePointer IncomingRayPayloadKHR 30(fvec4) 32(incomingPayloadEXT): 31(ptr) Variable IncomingRayPayloadKHR 4(main): 2 Function None 3 5: Label 8(time): 7(ptr) Variable Function 11: 6(float) Load 10(gl_CurrentRayTimeNV) 13: 6(float) FAdd 11 12 Store 8(time) 13 17: 14 Load 16(accEXT) TraceRayMotionNV 17 19 20 21 22 19 24 12 26 27 25 32(incomingPayloadEXT) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ClosestHitShader_Errors.rchit.out000066400000000000000000000007101506534232700256610ustar00rootroot00000000000000spv.ClosestHitShader_Errors.rchit ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage) ERROR: 0:9: 'reportIntersectionNV' : no matching overloaded function found ERROR: 0:10: 'terminateRayNV' : no matching overloaded function found ERROR: 0:11: 'ignoreIntersectionNV' : no matching overloaded function found ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.GeometryShaderPassthrough.geom.out000066400000000000000000000045271506534232700261170ustar00rootroot00000000000000spv.GeometryShaderPassthrough.geom // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Geometry Capability GeometryShaderPassthroughNV Extension "SPV_NV_geometry_shader_passthrough" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 10 14 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Source GLSL 450 SourceExtension "GL_NV_geometry_shader_passthrough" Name 4 "main" Name 8 "gl_PerVertex" MemberName 8(gl_PerVertex) 0 "gl_Position" Name 10 "" Name 12 "Inputs" MemberName 12(Inputs) 0 "texcoord" MemberName 12(Inputs) 1 "baseColor" Name 14 "" Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position Decorate 10 PassthroughNV Decorate 12(Inputs) Block Decorate 14 Location 0 Decorate 14 PassthroughNV 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(gl_PerVertex): TypeStruct 7(fvec4) 9: TypePointer Input 8(gl_PerVertex) 10: 9(ptr) Variable Input 11: TypeVector 6(float) 2 12(Inputs): TypeStruct 11(fvec2) 7(fvec4) 13: TypePointer Input 12(Inputs) 14: 13(ptr) Variable Input 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.IntersectShader.rint.out000066400000000000000000000163431506534232700240600ustar00rootroot00000000000000spv.IntersectShader.rint // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 71 Capability RayTracingNV Extension "SPV_NV_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 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDNV" Name 13 "v1" Name 14 "gl_LaunchSizeNV" Name 18 "v2" Name 20 "gl_PrimitiveID" Name 22 "v3" Name 23 "gl_InstanceID" Name 25 "v4" Name 26 "gl_InstanceCustomIndexNV" Name 31 "v5" Name 33 "gl_WorldRayOriginNV" Name 35 "v6" Name 36 "gl_WorldRayDirectionNV" Name 38 "v7" Name 39 "gl_ObjectRayOriginNV" Name 41 "v8" Name 42 "gl_ObjectRayDirectionNV" Name 45 "v9" Name 47 "gl_RayTminNV" Name 49 "v10" Name 50 "gl_RayTmaxNV" Name 54 "v11" Name 56 "gl_ObjectToWorldNV" Name 58 "v12" Name 59 "gl_WorldToObjectNV" Name 63 "iAttr" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 23(gl_InstanceID) BuiltIn InstanceId Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexKHR Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR Decorate 56(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR Decorate 59(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDNV): 10(ptr) Variable Input 14(gl_LaunchSizeNV): 10(ptr) Variable Input 16: TypeInt 32 1 17: TypePointer Function 16(int) 19: TypePointer Input 16(int) 20(gl_PrimitiveID): 19(ptr) Variable Input 23(gl_InstanceID): 19(ptr) Variable Input 26(gl_InstanceCustomIndexNV): 19(ptr) Variable Input 28: TypeFloat 32 29: TypeVector 28(float) 3 30: TypePointer Function 29(fvec3) 32: TypePointer Input 29(fvec3) 33(gl_WorldRayOriginNV): 32(ptr) Variable Input 36(gl_WorldRayDirectionNV): 32(ptr) Variable Input 39(gl_ObjectRayOriginNV): 32(ptr) Variable Input 42(gl_ObjectRayDirectionNV): 32(ptr) Variable Input 44: TypePointer Function 28(float) 46: TypePointer Input 28(float) 47(gl_RayTminNV): 46(ptr) Variable Input 50(gl_RayTmaxNV): 46(ptr) Variable Input 52: TypeMatrix 29(fvec3) 4 53: TypePointer Function 52 55: TypePointer Input 52 56(gl_ObjectToWorldNV): 55(ptr) Variable Input 59(gl_WorldToObjectNV): 55(ptr) Variable Input 61: TypeVector 28(float) 4 62: TypePointer HitAttributeKHR 61(fvec4) 63(iAttr): 62(ptr) Variable HitAttributeKHR 64: 28(float) Constant 1056964608 65: 28(float) Constant 0 66: 28(float) Constant 1065353216 67: 61(fvec4) ConstantComposite 64 64 65 66 68: 6(int) Constant 1 69: TypeBool 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function 13(v1): 8(ptr) Variable Function 18(v2): 17(ptr) Variable Function 22(v3): 17(ptr) Variable Function 25(v4): 17(ptr) Variable Function 31(v5): 30(ptr) Variable Function 35(v6): 30(ptr) Variable Function 38(v7): 30(ptr) Variable Function 41(v8): 30(ptr) Variable Function 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 54(v11): 53(ptr) Variable Function 58(v12): 53(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) Store 13(v1) 15 21: 16(int) Load 20(gl_PrimitiveID) Store 18(v2) 21 24: 16(int) Load 23(gl_InstanceID) Store 22(v3) 24 27: 16(int) Load 26(gl_InstanceCustomIndexNV) Store 25(v4) 27 34: 29(fvec3) Load 33(gl_WorldRayOriginNV) Store 31(v5) 34 37: 29(fvec3) Load 36(gl_WorldRayDirectionNV) Store 35(v6) 37 40: 29(fvec3) Load 39(gl_ObjectRayOriginNV) Store 38(v7) 40 43: 29(fvec3) Load 42(gl_ObjectRayDirectionNV) Store 41(v8) 43 48: 28(float) Load 47(gl_RayTminNV) Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxNV) Store 49(v10) 51 57: 52 Load 56(gl_ObjectToWorldNV) Store 54(v11) 57 60: 52 Load 59(gl_WorldToObjectNV) Store 58(v12) 60 Store 63(iAttr) 67 70: 69(bool) ReportIntersectionKHR 64 68 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.IntersectShaderMotion.rint.out000066400000000000000000000031341506534232700252400ustar00rootroot00000000000000spv.IntersectShaderMotion.rint // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 14 Capability RayTracingKHR Capability RayTracingMotionBlurNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_ray_tracing_motion_blur" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint IntersectionKHR 4 "main" 10 Source GLSL 460 SourceExtension "GL_NV_ray_tracing_motion_blur" Name 4 "main" Name 8 "time" Name 10 "gl_CurrentRayTimeNV" Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: TypePointer Input 6(float) 10(gl_CurrentRayTimeNV): 9(ptr) Variable Input 12: 6(float) Constant 1056964608 4(main): 2 Function None 3 5: Label 8(time): 7(ptr) Variable Function 11: 6(float) Load 10(gl_CurrentRayTimeNV) 13: 6(float) FAdd 11 12 Store 8(time) 13 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.IntersectShader_Errors.rint.out000066400000000000000000000006731506534232700254130ustar00rootroot00000000000000spv.IntersectShader_Errors.rint ERROR: 0:3: 'rayPayloadInNV' : not supported in this stage: intersection ERROR: 0:4: 'rayPayloadNV' : not supported in this stage: intersection ERROR: 0:8: 'gl_HitTNV' : undeclared identifier ERROR: 0:9: 'gl_HitKindNV' : undeclared identifier ERROR: 0:10: 'traceNV' : no matching overloaded function found ERROR: 5 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.MissShader.rmiss.out000066400000000000000000000131161506534232700232070ustar00rootroot00000000000000spv.MissShader.rmiss // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 59 Capability RayTracingNV Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MissKHR 4 "main" 11 14 21 24 29 34 37 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDNV" Name 13 "v1" Name 14 "gl_LaunchSizeNV" Name 19 "v2" Name 21 "gl_WorldRayOriginNV" Name 23 "v3" Name 24 "gl_WorldRayDirectionNV" Name 27 "v4" Name 29 "gl_IncomingRayFlagsNV" Name 32 "v6" Name 34 "gl_RayTminNV" Name 36 "v7" Name 37 "gl_RayTmaxNV" Name 41 "accNV" Name 56 "localPayload" Name 58 "incomingPayload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 21(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR Decorate 24(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR Decorate 29(gl_IncomingRayFlagsNV) BuiltIn IncomingRayFlagsKHR Decorate 34(gl_RayTminNV) BuiltIn RayTminKHR Decorate 37(gl_RayTmaxNV) BuiltIn RayTmaxKHR Decorate 41(accNV) Binding 0 Decorate 41(accNV) DescriptorSet 0 Decorate 56(localPayload) Location 0 Decorate 58(incomingPayload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDNV): 10(ptr) Variable Input 14(gl_LaunchSizeNV): 10(ptr) Variable Input 16: TypeFloat 32 17: TypeVector 16(float) 3 18: TypePointer Function 17(fvec3) 20: TypePointer Input 17(fvec3) 21(gl_WorldRayOriginNV): 20(ptr) Variable Input 24(gl_WorldRayDirectionNV): 20(ptr) Variable Input 26: TypePointer Function 6(int) 28: TypePointer Input 6(int) 29(gl_IncomingRayFlagsNV): 28(ptr) Variable Input 31: TypePointer Function 16(float) 33: TypePointer Input 16(float) 34(gl_RayTminNV): 33(ptr) Variable Input 37(gl_RayTmaxNV): 33(ptr) Variable Input 39: TypeAccelerationStructureKHR 40: TypePointer UniformConstant 39 41(accNV): 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 RayPayloadKHR 54(fvec4) 56(localPayload): 55(ptr) Variable RayPayloadKHR 57: TypePointer IncomingRayPayloadKHR 54(fvec4) 58(incomingPayload): 57(ptr) Variable IncomingRayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function 13(v1): 8(ptr) Variable Function 19(v2): 18(ptr) Variable Function 23(v3): 18(ptr) Variable Function 27(v4): 26(ptr) Variable Function 32(v6): 31(ptr) Variable Function 36(v7): 31(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) Store 13(v1) 15 22: 17(fvec3) Load 21(gl_WorldRayOriginNV) Store 19(v2) 22 25: 17(fvec3) Load 24(gl_WorldRayDirectionNV) Store 23(v3) 25 30: 6(int) Load 29(gl_IncomingRayFlagsNV) Store 27(v4) 30 35: 16(float) Load 34(gl_RayTminNV) Store 32(v6) 35 38: 16(float) Load 37(gl_RayTmaxNV) Store 36(v7) 38 42: 39 Load 41(accNV) TraceNV 42 43 44 45 46 43 48 47 50 51 53 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.MissShaderMotion.rmiss.out000066400000000000000000000056351506534232700244040ustar00rootroot00000000000000spv.MissShaderMotion.rmiss // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 33 Capability RayTracingKHR Capability RayTracingMotionBlurNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_ray_tracing_motion_blur" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MissKHR 4 "main" 10 16 32 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_ray_tracing_motion_blur" Name 4 "main" Name 8 "time" Name 10 "gl_CurrentRayTimeNV" Name 16 "accEXT" Name 32 "localPayloadEXT" Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV Decorate 16(accEXT) Binding 0 Decorate 16(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: TypePointer Input 6(float) 10(gl_CurrentRayTimeNV): 9(ptr) Variable Input 12: 6(float) Constant 1056964608 14: TypeAccelerationStructureKHR 15: TypePointer UniformConstant 14 16(accEXT): 15(ptr) Variable UniformConstant 18: TypeInt 32 0 19: 18(int) Constant 0 20: 18(int) Constant 1 21: 18(int) Constant 2 22: 18(int) Constant 3 23: TypeVector 6(float) 3 24: 23(fvec3) ConstantComposite 12 12 12 25: 6(float) Constant 1065353216 26: 23(fvec3) ConstantComposite 25 25 25 27: 6(float) Constant 1061158912 28: TypeInt 32 1 29: 28(int) Constant 0 30: TypeVector 6(float) 4 31: TypePointer RayPayloadKHR 30(fvec4) 32(localPayloadEXT): 31(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 8(time): 7(ptr) Variable Function 11: 6(float) Load 10(gl_CurrentRayTimeNV) 13: 6(float) FAdd 11 12 Store 8(time) 13 17: 14 Load 16(accEXT) TraceRayMotionNV 17 19 20 21 22 19 24 12 26 27 25 32(localPayloadEXT) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.MissShader_Errors.rmiss.out000066400000000000000000000023371506534232700245460ustar00rootroot00000000000000spv.MissShader_Errors.rmiss ERROR: 0:3: 'hitAttributeNV' : not supported in this stage: miss ERROR: 0:6: 'gl_PrimitiveID' : undeclared identifier ERROR: 0:6: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:7: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) ERROR: 0:7: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:8: 'gl_InstanceCustomIndexNV' : undeclared identifier ERROR: 0:8: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:9: 'gl_ObjectToWorldNV' : undeclared identifier ERROR: 0:9: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:10: 'gl_WorldToObjectNV' : undeclared identifier ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:11: 'gl_HitTNV' : undeclared identifier ERROR: 0:12: 'gl_HitKindNV' : undeclared identifier ERROR: 0:13: 'reportIntersectionNV' : no matching overloaded function found ERROR: 0:14: 'ignoreIntersectionNV' : no matching overloaded function found ERROR: 0:15: 'terminateRayNV' : no matching overloaded function found ERROR: 16 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.OVR_multiview.vert.out000066400000000000000000000056261506534232700235520ustar00rootroot00000000000000spv.OVR_multiview.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader Capability MultiView Extension "SPV_KHR_multiview" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 13 17 25 26 Source GLSL 330 SourceExtension "GL_OVR_multiview" Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" Name 13 "" Name 17 "gl_ViewID_OVR" Name 25 "gl_VertexID" Name 26 "gl_InstanceID" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 17(gl_ViewID_OVR) BuiltIn ViewIndex Decorate 25(gl_VertexID) BuiltIn VertexId Decorate 26(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Input 8(int) 17(gl_ViewID_OVR): 16(ptr) Variable Input 20: 6(float) Constant 0 22: TypePointer Output 7(fvec4) 24: TypePointer Input 14(int) 25(gl_VertexID): 24(ptr) Variable Input 26(gl_InstanceID): 24(ptr) Variable Input 4(main): 2 Function None 3 5: Label 18: 8(int) Load 17(gl_ViewID_OVR) 19: 6(float) ConvertUToF 18 21: 7(fvec4) CompositeConstruct 19 20 20 20 23: 22(ptr) AccessChain 13 15 Store 23 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.Operations.frag.out000066400000000000000000001107711506534232700230570ustar00rootroot00000000000000spv.Operations.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 596 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 22 225 301 319 552 593 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "v" Name 11 "uv4" Name 20 "i" Name 22 "ui" Name 151 "ResType" Name 158 "swizzleTemp" Name 194 "ub41" Name 201 "f" Name 225 "uf" Name 298 "u" Name 301 "uui" Name 319 "uuv4" Name 326 "msb" Name 328 "swizzleTemp" Name 329 "lsb" Name 330 "swizzleTemp" Name 331 "ResType" Name 372 "b" Name 409 "ub42" Name 552 "FragColor" Name 570 "m1" Name 577 "m2" Name 593 "uiv4" Name 595 "ub" Decorate 11(uv4) Location 1 Decorate 22(ui) Flat Decorate 22(ui) Location 3 Decorate 225(uf) Location 2 Decorate 301(uui) Flat Decorate 301(uui) Location 5 Decorate 319(uuv4) Flat Decorate 319(uuv4) Location 4 Decorate 552(FragColor) Location 0 Decorate 593(uiv4) Flat Decorate 593(uiv4) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(uv4): 10(ptr) Variable Input 18: TypeInt 32 1 19: TypePointer Function 18(int) 21: TypePointer Input 18(int) 22(ui): 21(ptr) Variable Input 141: TypeInt 32 0 142: 141(int) Constant 0 143: TypePointer Function 6(float) 151(ResType): TypeStruct 7(fvec4) 7(fvec4) 191: TypeBool 192: TypeVector 191(bool) 4 193: TypePointer Private 192(bvec4) 194(ub41): 193(ptr) Variable Private 224: TypePointer Input 6(float) 225(uf): 224(ptr) Variable Input 297: TypePointer Function 141(int) 300: TypePointer Input 141(int) 301(uui): 300(ptr) Variable Input 317: TypeVector 141(int) 4 318: TypePointer Input 317(ivec4) 319(uuv4): 318(ptr) Variable Input 320: TypeVector 141(int) 3 325: TypePointer Function 317(ivec4) 327: TypePointer Function 320(ivec3) 331(ResType): TypeStruct 320(ivec3) 320(ivec3) 338: 141(int) Constant 1 341: 141(int) Constant 2 371: TypePointer Function 191(bool) 409(ub42): 193(ptr) Variable Private 465: 18(int) Constant 2 472: 18(int) Constant 1 502: TypeVector 6(float) 3 521: 6(float) Constant 1073741824 528: 6(float) Constant 1065353216 533: 18(int) Constant 66 539: 18(int) Constant 17 551: TypePointer Output 7(fvec4) 552(FragColor): 551(ptr) Variable Output 568: TypeMatrix 7(fvec4) 4 569: TypePointer Function 568 571: 6(float) Constant 0 572: 7(fvec4) ConstantComposite 528 571 571 571 573: 7(fvec4) ConstantComposite 571 528 571 571 574: 7(fvec4) ConstantComposite 571 571 528 571 575: 7(fvec4) ConstantComposite 571 571 571 528 576: 568 ConstantComposite 572 573 574 575 578: 7(fvec4) ConstantComposite 571 571 571 571 579: 568 ConstantComposite 578 578 578 578 591: TypeVector 18(int) 4 592: TypePointer Input 591(ivec4) 593(uiv4): 592(ptr) Variable Input 594: TypePointer Private 191(bool) 595(ub): 594(ptr) Variable Private 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function 20(i): 19(ptr) Variable Function 158(swizzleTemp): 8(ptr) Variable Function 201(f): 143(ptr) Variable Function 298(u): 297(ptr) Variable Function 326(msb): 325(ptr) Variable Function 328(swizzleTemp): 327(ptr) Variable Function 329(lsb): 325(ptr) Variable Function 330(swizzleTemp): 327(ptr) Variable Function 372(b): 371(ptr) Variable Function 554: 8(ptr) Variable Function 570(m1): 569(ptr) Variable Function 577(m2): 569(ptr) Variable Function 581: 569(ptr) Variable Function 12: 7(fvec4) Load 11(uv4) 13: 7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12 Store 9(v) 13 14: 7(fvec4) Load 9(v) 15: 7(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 14 16: 7(fvec4) Load 9(v) 17: 7(fvec4) FAdd 16 15 Store 9(v) 17 23: 18(int) Load 22(ui) 24: 18(int) Load 22(ui) 25: 18(int) IMul 23 24 Store 20(i) 25 26: 7(fvec4) Load 9(v) 27: 7(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 26 28: 7(fvec4) Load 9(v) 29: 7(fvec4) FAdd 28 27 Store 9(v) 29 30: 7(fvec4) Load 9(v) 31: 7(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 30 32: 7(fvec4) Load 9(v) 33: 7(fvec4) FAdd 32 31 Store 9(v) 33 34: 7(fvec4) Load 9(v) 35: 7(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 34 36: 7(fvec4) Load 9(v) 37: 7(fvec4) FAdd 36 35 Store 9(v) 37 38: 7(fvec4) Load 9(v) 39: 7(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 38 40: 7(fvec4) Load 9(v) 41: 7(fvec4) FAdd 40 39 Store 9(v) 41 42: 7(fvec4) Load 9(v) 43: 7(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 42 44: 7(fvec4) Load 9(v) 45: 7(fvec4) FAdd 44 43 Store 9(v) 45 46: 7(fvec4) Load 9(v) 47: 7(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 46 48: 7(fvec4) Load 9(v) 49: 7(fvec4) FAdd 48 47 Store 9(v) 49 50: 7(fvec4) Load 9(v) 51: 7(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 50 52: 7(fvec4) Load 9(v) 53: 7(fvec4) FAdd 52 51 Store 9(v) 53 54: 7(fvec4) Load 9(v) 55: 7(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 54 56: 7(fvec4) Load 9(v) 57: 7(fvec4) FAdd 56 55 Store 9(v) 57 58: 7(fvec4) Load 9(v) 59: 7(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 58 60: 7(fvec4) Load 9(v) 61: 7(fvec4) FAdd 60 59 Store 9(v) 61 62: 7(fvec4) Load 9(v) 63: 7(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 62 64: 7(fvec4) Load 9(v) 65: 7(fvec4) FAdd 64 63 Store 9(v) 65 66: 7(fvec4) Load 9(v) 67: 7(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 66 68: 7(fvec4) Load 9(v) 69: 7(fvec4) FAdd 68 67 Store 9(v) 69 70: 7(fvec4) Load 9(v) 71: 7(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 70 72: 7(fvec4) Load 9(v) 73: 7(fvec4) FAdd 72 71 Store 9(v) 73 74: 7(fvec4) Load 9(v) 75: 7(fvec4) Load 9(v) 76: 7(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 74 75 77: 7(fvec4) Load 9(v) 78: 7(fvec4) FAdd 77 76 Store 9(v) 78 79: 7(fvec4) Load 9(v) 80: 7(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 79 81: 7(fvec4) Load 9(v) 82: 7(fvec4) FAdd 81 80 Store 9(v) 82 83: 7(fvec4) Load 9(v) 84: 7(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 83 85: 7(fvec4) Load 9(v) 86: 7(fvec4) FAdd 85 84 Store 9(v) 86 87: 7(fvec4) Load 9(v) 88: 7(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 87 89: 7(fvec4) Load 9(v) 90: 7(fvec4) FAdd 89 88 Store 9(v) 90 91: 7(fvec4) Load 9(v) 92: 7(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 91 93: 7(fvec4) Load 9(v) 94: 7(fvec4) FAdd 93 92 Store 9(v) 94 95: 7(fvec4) Load 9(v) 96: 7(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 95 97: 7(fvec4) Load 9(v) 98: 7(fvec4) FAdd 97 96 Store 9(v) 98 99: 7(fvec4) Load 9(v) 100: 7(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 99 101: 7(fvec4) Load 9(v) 102: 7(fvec4) FAdd 101 100 Store 9(v) 102 103: 7(fvec4) Load 9(v) 104: 7(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 103 105: 7(fvec4) Load 9(v) 106: 7(fvec4) FAdd 105 104 Store 9(v) 106 107: 7(fvec4) Load 9(v) 108: 7(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 107 109: 7(fvec4) Load 9(v) 110: 7(fvec4) FAdd 109 108 Store 9(v) 110 111: 7(fvec4) Load 9(v) 112: 7(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 111 113: 7(fvec4) Load 9(v) 114: 7(fvec4) FAdd 113 112 Store 9(v) 114 115: 7(fvec4) Load 9(v) 116: 7(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 115 117: 7(fvec4) Load 9(v) 118: 7(fvec4) FAdd 117 116 Store 9(v) 118 119: 7(fvec4) Load 9(v) 120: 7(fvec4) ExtInst 1(GLSL.std.450) 1(Round) 119 121: 7(fvec4) Load 9(v) 122: 7(fvec4) FAdd 121 120 Store 9(v) 122 123: 7(fvec4) Load 9(v) 124: 7(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 123 125: 7(fvec4) Load 9(v) 126: 7(fvec4) FAdd 125 124 Store 9(v) 126 127: 7(fvec4) Load 9(v) 128: 7(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 127 129: 7(fvec4) Load 9(v) 130: 7(fvec4) FAdd 129 128 Store 9(v) 130 131: 7(fvec4) Load 9(v) 132: 7(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 131 133: 7(fvec4) Load 9(v) 134: 7(fvec4) FAdd 133 132 Store 9(v) 134 135: 7(fvec4) Load 9(v) 136: 7(fvec4) Load 9(v) 137: 7(fvec4) FMod 135 136 138: 7(fvec4) Load 9(v) 139: 7(fvec4) FAdd 138 137 Store 9(v) 139 140: 7(fvec4) Load 9(v) 144: 143(ptr) AccessChain 9(v) 142 145: 6(float) Load 144 146: 7(fvec4) CompositeConstruct 145 145 145 145 147: 7(fvec4) FMod 140 146 148: 7(fvec4) Load 9(v) 149: 7(fvec4) FAdd 148 147 Store 9(v) 149 150: 7(fvec4) Load 9(v) 152:151(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 150 153: 7(fvec4) CompositeExtract 152 1 Store 9(v) 153 154: 7(fvec4) CompositeExtract 152 0 155: 7(fvec4) Load 9(v) 156: 7(fvec4) FAdd 155 154 Store 9(v) 156 157: 7(fvec4) Load 9(v) 159:151(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 157 160: 7(fvec4) CompositeExtract 159 1 Store 158(swizzleTemp) 160 161: 7(fvec4) CompositeExtract 159 0 162: 7(fvec4) Load 158(swizzleTemp) 163: 7(fvec4) Load 9(v) 164: 7(fvec4) VectorShuffle 163 162 6 4 5 7 Store 9(v) 164 165: 7(fvec4) Load 9(v) 166: 7(fvec4) FAdd 165 161 Store 9(v) 166 167: 7(fvec4) Load 9(v) 168: 7(fvec4) Load 11(uv4) 169: 7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 167 168 170: 7(fvec4) Load 9(v) 171: 7(fvec4) FAdd 170 169 Store 9(v) 171 172: 7(fvec4) Load 9(v) 173: 7(fvec4) Load 11(uv4) 174: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 172 173 175: 7(fvec4) Load 9(v) 176: 7(fvec4) FAdd 175 174 Store 9(v) 176 177: 7(fvec4) Load 9(v) 178: 7(fvec4) Load 11(uv4) 179: 7(fvec4) Load 11(uv4) 180: 7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 177 178 179 181: 7(fvec4) Load 9(v) 182: 7(fvec4) FAdd 181 180 Store 9(v) 182 183: 7(fvec4) Load 9(v) 184: 7(fvec4) Load 9(v) 185: 7(fvec4) Load 9(v) 186: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 183 184 185 187: 7(fvec4) Load 9(v) 188: 7(fvec4) FAdd 187 186 Store 9(v) 188 189: 7(fvec4) Load 9(v) 190: 7(fvec4) Load 9(v) 195: 192(bvec4) Load 194(ub41) 196: 7(fvec4) Select 195 190 189 197: 7(fvec4) Load 9(v) 198: 7(fvec4) FAdd 197 196 Store 9(v) 198 199: 7(fvec4) Load 9(v) 200: 7(fvec4) Load 9(v) 202: 6(float) Load 201(f) 203: 7(fvec4) CompositeConstruct 202 202 202 202 204: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 199 200 203 205: 7(fvec4) Load 9(v) 206: 7(fvec4) FAdd 205 204 Store 9(v) 206 207: 7(fvec4) Load 9(v) 208: 7(fvec4) Load 11(uv4) 209: 7(fvec4) Load 9(v) 210: 7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 207 208 209 211: 7(fvec4) Load 9(v) 212: 7(fvec4) FAdd 211 210 Store 9(v) 212 213: 7(fvec4) Load 9(v) 214: 7(fvec4) Load 9(v) 215: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 213 214 216: 7(fvec4) Load 9(v) 217: 7(fvec4) FAdd 216 215 Store 9(v) 217 218: 7(fvec4) Load 9(v) 219: 7(fvec4) Load 9(v) 220: 7(fvec4) Load 9(v) 221: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 218 219 220 222: 7(fvec4) Load 9(v) 223: 7(fvec4) FAdd 222 221 Store 9(v) 223 226: 6(float) Load 225(uf) 227: 7(fvec4) Load 9(v) 228: 7(fvec4) CompositeConstruct 226 226 226 226 229: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 228 227 230: 7(fvec4) Load 9(v) 231: 7(fvec4) FAdd 230 229 Store 9(v) 231 232: 6(float) Load 225(uf) 233: 6(float) Load 225(uf) 234: 7(fvec4) Load 9(v) 235: 7(fvec4) CompositeConstruct 232 232 232 232 236: 7(fvec4) CompositeConstruct 233 233 233 233 237: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 235 236 234 238: 7(fvec4) Load 9(v) 239: 7(fvec4) FAdd 238 237 Store 9(v) 239 240: 7(fvec4) Load 9(v) 241: 7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 240 242: 7(fvec4) Load 9(v) 243: 7(fvec4) FAdd 242 241 Store 9(v) 243 244: 7(fvec4) Load 9(v) 245: 7(fvec4) Load 9(v) 246: 7(fvec4) Load 9(v) 247: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 244 245 246 248: 7(fvec4) Load 9(v) 249: 7(fvec4) FAdd 248 247 Store 9(v) 249 250: 7(fvec4) Load 9(v) 251: 7(fvec4) Load 9(v) 252: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 250 251 253: 7(fvec4) Load 9(v) 254: 7(fvec4) FAdd 253 252 Store 9(v) 254 255: 7(fvec4) Load 9(v) 256: 7(fvec4) Load 9(v) 257: 6(float) Load 225(uf) 258: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 255 256 257 259: 7(fvec4) Load 9(v) 260: 7(fvec4) FAdd 259 258 Store 9(v) 260 261: 7(fvec4) Load 9(v) 262: 7(fvec4) DPdx 261 263: 7(fvec4) Load 9(v) 264: 7(fvec4) FAdd 263 262 Store 9(v) 264 265: 7(fvec4) Load 9(v) 266: 7(fvec4) DPdy 265 267: 7(fvec4) Load 9(v) 268: 7(fvec4) FAdd 267 266 Store 9(v) 268 269: 7(fvec4) Load 9(v) 270: 7(fvec4) Fwidth 269 271: 7(fvec4) Load 9(v) 272: 7(fvec4) FAdd 271 270 Store 9(v) 272 273: 18(int) Load 22(ui) 274: 18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 273 275: 18(int) Load 20(i) 276: 18(int) IAdd 275 274 Store 20(i) 276 277: 18(int) Load 20(i) 278: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 277 279: 18(int) Load 20(i) 280: 18(int) IAdd 279 278 Store 20(i) 280 281: 18(int) Load 20(i) 282: 18(int) Load 22(ui) 283: 18(int) ExtInst 1(GLSL.std.450) 39(SMin) 281 282 284: 18(int) Load 20(i) 285: 18(int) IAdd 284 283 Store 20(i) 285 286: 18(int) Load 20(i) 287: 18(int) Load 22(ui) 288: 18(int) ExtInst 1(GLSL.std.450) 42(SMax) 286 287 289: 18(int) Load 20(i) 290: 18(int) IAdd 289 288 Store 20(i) 290 291: 18(int) Load 20(i) 292: 18(int) Load 22(ui) 293: 18(int) Load 22(ui) 294: 18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 291 292 293 295: 18(int) Load 20(i) 296: 18(int) IAdd 295 294 Store 20(i) 296 299: 141(int) Load 298(u) 302: 141(int) Load 301(uui) 303: 141(int) ExtInst 1(GLSL.std.450) 38(UMin) 299 302 304: 141(int) Load 298(u) 305: 141(int) IAdd 304 303 Store 298(u) 305 306: 141(int) Load 298(u) 307: 141(int) Load 301(uui) 308: 141(int) ExtInst 1(GLSL.std.450) 41(UMax) 306 307 309: 141(int) Load 298(u) 310: 141(int) IAdd 309 308 Store 298(u) 310 311: 141(int) Load 298(u) 312: 141(int) Load 301(uui) 313: 141(int) Load 301(uui) 314: 141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 311 312 313 315: 141(int) Load 298(u) 316: 141(int) IAdd 315 314 Store 298(u) 316 321: 317(ivec4) Load 319(uuv4) 322: 320(ivec3) VectorShuffle 321 321 0 1 2 323: 317(ivec4) Load 319(uuv4) 324: 320(ivec3) VectorShuffle 323 323 0 1 2 332:331(ResType) UMulExtended 322 324 333: 320(ivec3) CompositeExtract 332 0 Store 330(swizzleTemp) 333 334: 320(ivec3) CompositeExtract 332 1 Store 328(swizzleTemp) 334 335: 320(ivec3) Load 328(swizzleTemp) 336: 297(ptr) AccessChain 326(msb) 142 337: 141(int) CompositeExtract 335 0 Store 336 337 339: 297(ptr) AccessChain 326(msb) 338 340: 141(int) CompositeExtract 335 1 Store 339 340 342: 297(ptr) AccessChain 326(msb) 341 343: 141(int) CompositeExtract 335 2 Store 342 343 344: 320(ivec3) Load 330(swizzleTemp) 345: 297(ptr) AccessChain 329(lsb) 142 346: 141(int) CompositeExtract 344 0 Store 345 346 347: 297(ptr) AccessChain 329(lsb) 338 348: 141(int) CompositeExtract 344 1 Store 347 348 349: 297(ptr) AccessChain 329(lsb) 341 350: 141(int) CompositeExtract 344 2 Store 349 350 351: 297(ptr) AccessChain 326(msb) 142 352: 141(int) Load 351 353: 297(ptr) AccessChain 326(msb) 338 354: 141(int) Load 353 355: 141(int) IAdd 352 354 356: 297(ptr) AccessChain 326(msb) 341 357: 141(int) Load 356 358: 141(int) IAdd 355 357 359: 141(int) Load 298(u) 360: 141(int) IAdd 359 358 Store 298(u) 360 361: 297(ptr) AccessChain 329(lsb) 142 362: 141(int) Load 361 363: 297(ptr) AccessChain 329(lsb) 338 364: 141(int) Load 363 365: 141(int) IAdd 362 364 366: 297(ptr) AccessChain 329(lsb) 341 367: 141(int) Load 366 368: 141(int) IAdd 365 367 369: 141(int) Load 298(u) 370: 141(int) IAdd 369 368 Store 298(u) 370 373: 6(float) Load 225(uf) 374: 191(bool) IsNan 373 Store 372(b) 374 375: 6(float) Load 201(f) 376: 191(bool) IsInf 375 Store 372(b) 376 377: 7(fvec4) Load 9(v) 378: 7(fvec4) Load 11(uv4) 379: 192(bvec4) FOrdLessThan 377 378 380: 191(bool) Any 379 Store 372(b) 380 381: 191(bool) Load 372(b) SelectionMerge 383 None BranchConditional 381 382 383 382: Label 384: 7(fvec4) Load 9(v) 385: 7(fvec4) Load 11(uv4) 386: 192(bvec4) FOrdLessThanEqual 384 385 387: 191(bool) Any 386 Branch 383 383: Label 388: 191(bool) Phi 381 5 387 382 Store 372(b) 388 389: 191(bool) Load 372(b) SelectionMerge 391 None BranchConditional 389 390 391 390: Label 392: 7(fvec4) Load 9(v) 393: 7(fvec4) Load 11(uv4) 394: 192(bvec4) FOrdGreaterThan 392 393 395: 191(bool) Any 394 Branch 391 391: Label 396: 191(bool) Phi 389 383 395 390 Store 372(b) 396 397: 191(bool) Load 372(b) SelectionMerge 399 None BranchConditional 397 398 399 398: Label 400: 7(fvec4) Load 9(v) 401: 7(fvec4) Load 11(uv4) 402: 192(bvec4) FOrdGreaterThanEqual 400 401 403: 191(bool) Any 402 Branch 399 399: Label 404: 191(bool) Phi 397 391 403 398 Store 372(b) 404 405: 191(bool) Load 372(b) SelectionMerge 407 None BranchConditional 405 406 407 406: Label 408: 192(bvec4) Load 194(ub41) 410: 192(bvec4) Load 409(ub42) 411: 192(bvec4) LogicalEqual 408 410 412: 191(bool) Any 411 Branch 407 407: Label 413: 191(bool) Phi 405 399 412 406 Store 372(b) 413 414: 191(bool) Load 372(b) SelectionMerge 416 None BranchConditional 414 415 416 415: Label 417: 192(bvec4) Load 194(ub41) 418: 192(bvec4) Load 409(ub42) 419: 192(bvec4) LogicalNotEqual 417 418 420: 191(bool) Any 419 Branch 416 416: Label 421: 191(bool) Phi 414 407 420 415 Store 372(b) 421 422: 191(bool) Load 372(b) 423: 192(bvec4) Load 194(ub41) 424: 191(bool) Any 423 425: 191(bool) LogicalAnd 422 424 Store 372(b) 425 426: 191(bool) Load 372(b) 427: 192(bvec4) Load 194(ub41) 428: 191(bool) All 427 429: 191(bool) LogicalAnd 426 428 Store 372(b) 429 430: 191(bool) Load 372(b) SelectionMerge 432 None BranchConditional 430 431 432 431: Label 433: 192(bvec4) Load 194(ub41) 434: 192(bvec4) LogicalNot 433 435: 191(bool) Any 434 Branch 432 432: Label 436: 191(bool) Phi 430 416 435 431 Store 372(b) 436 437: 18(int) Load 20(i) 438: 18(int) Load 22(ui) 439: 18(int) IAdd 437 438 440: 18(int) Load 20(i) 441: 18(int) IMul 439 440 442: 18(int) Load 22(ui) 443: 18(int) ISub 441 442 444: 18(int) Load 20(i) 445: 18(int) SDiv 443 444 Store 20(i) 445 446: 18(int) Load 20(i) 447: 18(int) Load 22(ui) 448: 18(int) SMod 446 447 Store 20(i) 448 449: 18(int) Load 20(i) 450: 18(int) Load 22(ui) 451: 191(bool) IEqual 449 450 452: 191(bool) LogicalNot 451 SelectionMerge 454 None BranchConditional 452 453 454 453: Label 455: 18(int) Load 20(i) 456: 18(int) Load 22(ui) 457: 191(bool) INotEqual 455 456 SelectionMerge 459 None BranchConditional 457 458 459 458: Label 460: 18(int) Load 20(i) 461: 18(int) Load 22(ui) 462: 191(bool) IEqual 460 461 Branch 459 459: Label 463: 191(bool) Phi 457 453 462 458 464: 18(int) Load 20(i) 466: 191(bool) INotEqual 464 465 467: 191(bool) LogicalNotEqual 463 466 Branch 454 454: Label 468: 191(bool) Phi 451 432 467 459 SelectionMerge 470 None BranchConditional 468 469 470 469: Label 471: 18(int) Load 20(i) 473: 18(int) IAdd 471 472 Store 20(i) 473 Branch 470 470: Label 474: 6(float) Load 225(uf) 475: 6(float) Load 225(uf) 476: 6(float) FAdd 474 475 477: 6(float) Load 225(uf) 478: 6(float) FMul 476 477 479: 6(float) Load 225(uf) 480: 6(float) FSub 478 479 481: 6(float) Load 225(uf) 482: 6(float) FDiv 480 481 Store 201(f) 482 483: 7(fvec4) Load 9(v) 484: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 483 485: 6(float) Load 201(f) 486: 6(float) FAdd 485 484 Store 201(f) 486 487: 7(fvec4) Load 9(v) 488: 7(fvec4) Load 9(v) 489: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 487 488 490: 6(float) Load 201(f) 491: 6(float) FAdd 490 489 Store 201(f) 491 492: 7(fvec4) Load 9(v) 493: 7(fvec4) Load 9(v) 494: 6(float) Dot 492 493 495: 6(float) Load 201(f) 496: 6(float) FAdd 495 494 Store 201(f) 496 497: 6(float) Load 201(f) 498: 6(float) Load 225(uf) 499: 6(float) FMul 497 498 500: 6(float) Load 201(f) 501: 6(float) FAdd 500 499 Store 201(f) 501 503: 7(fvec4) Load 9(v) 504: 502(fvec3) VectorShuffle 503 503 0 1 2 505: 7(fvec4) Load 9(v) 506: 502(fvec3) VectorShuffle 505 505 0 1 2 507: 502(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 504 506 508: 6(float) CompositeExtract 507 0 509: 6(float) Load 201(f) 510: 6(float) FAdd 509 508 Store 201(f) 510 511: 6(float) Load 201(f) 512: 6(float) Load 225(uf) 513: 191(bool) FOrdEqual 511 512 514: 191(bool) LogicalNot 513 SelectionMerge 516 None BranchConditional 514 515 516 515: Label 517: 6(float) Load 201(f) 518: 6(float) Load 225(uf) 519: 191(bool) FUnordNotEqual 517 518 520: 6(float) Load 201(f) 522: 191(bool) FUnordNotEqual 520 521 523: 191(bool) LogicalAnd 519 522 Branch 516 516: Label 524: 191(bool) Phi 513 470 523 515 SelectionMerge 526 None BranchConditional 524 525 526 525: Label 527: 6(float) Load 201(f) 529: 6(float) FAdd 527 528 Store 201(f) 529 Branch 526 526: Label 530: 18(int) Load 22(ui) 531: 18(int) Load 20(i) 532: 18(int) BitwiseAnd 531 530 Store 20(i) 532 534: 18(int) Load 20(i) 535: 18(int) BitwiseOr 534 533 Store 20(i) 535 536: 18(int) Load 22(ui) 537: 18(int) Load 20(i) 538: 18(int) BitwiseXor 537 536 Store 20(i) 538 540: 18(int) Load 20(i) 541: 18(int) SMod 540 539 Store 20(i) 541 542: 18(int) Load 20(i) 543: 18(int) ShiftRightArithmetic 542 465 Store 20(i) 543 544: 18(int) Load 22(ui) 545: 18(int) Load 20(i) 546: 18(int) ShiftLeftLogical 545 544 Store 20(i) 546 547: 18(int) Load 20(i) 548: 18(int) Not 547 Store 20(i) 548 549: 191(bool) Load 372(b) 550: 191(bool) LogicalNot 549 Store 372(b) 550 553: 191(bool) Load 372(b) SelectionMerge 556 None BranchConditional 553 555 565 555: Label 557: 18(int) Load 20(i) 558: 6(float) ConvertSToF 557 559: 7(fvec4) CompositeConstruct 558 558 558 558 560: 6(float) Load 201(f) 561: 7(fvec4) CompositeConstruct 560 560 560 560 562: 7(fvec4) FAdd 559 561 563: 7(fvec4) Load 9(v) 564: 7(fvec4) FAdd 562 563 Store 554 564 Branch 556 565: Label 566: 7(fvec4) Load 9(v) Store 554 566 Branch 556 556: Label 567: 7(fvec4) Load 554 Store 552(FragColor) 567 Store 570(m1) 576 Store 577(m2) 579 580: 191(bool) Load 372(b) SelectionMerge 583 None BranchConditional 580 582 585 582: Label 584: 568 Load 570(m1) Store 581 584 Branch 583 585: Label 586: 568 Load 577(m2) Store 581 586 Branch 583 583: Label 587: 8(ptr) AccessChain 581 472 588: 7(fvec4) Load 587 589: 7(fvec4) Load 552(FragColor) 590: 7(fvec4) FAdd 589 588 Store 552(FragColor) 590 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.RayCallable.rcall.out000066400000000000000000000056551506534232700232710ustar00rootroot00000000000000spv.RayCallable.rcall // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 30 Capability RayTracingNV Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint CallableKHR 4 "main" 11 14 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 9 "id" Name 11 "gl_LaunchIDNV" Name 13 "size" Name 14 "gl_LaunchSizeNV" Name 16 "dataBlock" MemberName 16(dataBlock) 0 "data1" Name 18 "" Name 29 "data0" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 16(dataBlock) Block Decorate 18 Location 1 Decorate 29(data0) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDNV): 10(ptr) Variable Input 14(gl_LaunchSizeNV): 10(ptr) Variable Input 16(dataBlock): TypeStruct 6(int) 17: TypePointer IncomingCallableDataKHR 16(dataBlock) 18: 17(ptr) Variable IncomingCallableDataKHR 19: TypeInt 32 1 20: 19(int) Constant 0 21: 6(int) Constant 256 22: TypePointer IncomingCallableDataKHR 6(int) 24: 6(int) Constant 2 25: 19(int) Constant 1 26: TypeFloat 32 27: TypeVector 26(float) 4 28: TypePointer CallableDataKHR 27(fvec4) 29(data0): 28(ptr) Variable CallableDataKHR 4(main): 2 Function None 3 5: Label 9(id): 8(ptr) Variable Function 13(size): 8(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(id) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) Store 13(size) 15 23: 22(ptr) AccessChain 18 20 Store 23 21 ExecuteCallableNV 24 25 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.RayCallable_Errors.rcall.out000066400000000000000000000043521506534232700246160ustar00rootroot00000000000000spv.RayCallable_Errors.rcall ERROR: 0:3: 'hitAttributeNV' : not supported in this stage: callable ERROR: 0:4: 'rayPayloadNV' : not supported in this stage: callable ERROR: 0:5: 'rayPayloadInNV' : not supported in this stage: callable ERROR: 0:9: 'gl_PrimitiveID' : undeclared identifier ERROR: 0:9: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:10: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:11: 'gl_InstanceCustomIndexNV' : undeclared identifier ERROR: 0:11: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:12: 'gl_WorldRayOriginNV' : undeclared identifier ERROR: 0:12: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:13: 'gl_WorldRayDirectionNV' : undeclared identifier ERROR: 0:13: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:14: 'gl_ObjectRayOriginNV' : undeclared identifier ERROR: 0:14: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:15: 'gl_ObjectRayDirectionNV' : undeclared identifier ERROR: 0:15: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:16: 'gl_RayTminNV' : undeclared identifier ERROR: 0:17: 'gl_RayTmaxNV' : undeclared identifier ERROR: 0:18: 'gl_ObjectToWorldNV' : undeclared identifier ERROR: 0:18: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:19: 'gl_WorldToObjectNV' : undeclared identifier ERROR: 0:19: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:20: 'gl_HitTNV' : undeclared identifier ERROR: 0:21: 'gl_HitKindNV' : undeclared identifier ERROR: 0:22: 'gl_IncomingRayFlagsNV' : undeclared identifier ERROR: 0:22: '=' : cannot convert from ' temp float' to ' temp highp uint' ERROR: 0:23: 'reportIntersectionNV' : no matching overloaded function found ERROR: 0:24: 'ignoreIntersectionNV' : no matching overloaded function found ERROR: 0:25: 'terminateRayNV' : no matching overloaded function found ERROR: 30 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.RayConstants.rgen.out000066400000000000000000000042361506534232700233760ustar00rootroot00000000000000spv.RayConstants.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability RayTracingNV Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 8 "accNV" Name 26 "payload" Decorate 8(accNV) Binding 0 Decorate 8(accNV) DescriptorSet 0 Decorate 26(payload) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeAccelerationStructureKHR 7: TypePointer UniformConstant 6 8(accNV): 7(ptr) Variable UniformConstant 10: TypeInt 32 0 11: 10(int) Constant 255 12: 10(int) Constant 0 13: 10(int) Constant 1 14: TypeFloat 32 15: TypeVector 14(float) 3 16: 14(float) Constant 0 17: 15(fvec3) ConstantComposite 16 16 16 18: 14(float) Constant 1056964608 19: 14(float) Constant 1065353216 20: 15(fvec3) ConstantComposite 19 19 19 21: 14(float) Constant 1061158912 22: TypeInt 32 1 23: 22(int) Constant 1 24: TypeVector 14(float) 4 25: TypePointer RayPayloadKHR 24(fvec4) 26(payload): 25(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9: 6 Load 8(accNV) TraceNV 9 11 12 13 13 12 17 18 20 21 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.RayGenShader.rgen.out000066400000000000000000000113011506534232700232510ustar00rootroot00000000000000spv.RayGenShader.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 54 Capability RayTracingNV Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDNV" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeNV" Name 24 "sy" Name 29 "accNV0" Name 37 "block" MemberName 37(block) 0 "dir" MemberName 37(block) 1 "origin" Name 39 "" Name 50 "accNV1" Name 53 "payload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 29(accNV0) Binding 0 Decorate 29(accNV0) DescriptorSet 0 Decorate 37(block) BufferBlock MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 Decorate 50(accNV1) Binding 1 Decorate 50(accNV1) DescriptorSet 0 Decorate 53(payload) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDNV): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeNV): 10(ptr) Variable Input 27: TypeAccelerationStructureKHR 28: TypePointer UniformConstant 27 29(accNV0): 28(ptr) Variable UniformConstant 35: TypeFloat 32 36: TypeVector 35(float) 3 37(block): TypeStruct 36(fvec3) 36(fvec3) 38: TypePointer ShaderRecordBufferKHR 37(block) 39: 38(ptr) Variable ShaderRecordBufferKHR 40: TypeInt 32 1 41: 40(int) Constant 1 42: TypePointer ShaderRecordBufferKHR 36(fvec3) 45: 35(float) Constant 1056964608 46: 40(int) Constant 0 49: 35(float) Constant 1061158912 50(accNV1): 28(ptr) Variable UniformConstant 51: TypeVector 35(float) 4 52: TypePointer RayPayloadKHR 51(fvec4) 53(payload): 52(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDNV) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDNV) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 17 26: 6(int) Load 25 Store 24(sy) 26 30: 27 Load 29(accNV0) 31: 6(int) Load 8(lx) 32: 6(int) Load 16(ly) 33: 6(int) Load 20(sx) 34: 6(int) Load 24(sy) 43: 42(ptr) AccessChain 39 41 44: 36(fvec3) Load 43 47: 42(ptr) AccessChain 39 46 48: 36(fvec3) Load 47 TraceNV 30 31 32 33 34 12 44 45 48 49 41 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.RayGenShader11.rgen.out000066400000000000000000000107241506534232700234230ustar00rootroot00000000000000spv.RayGenShader11.rgen // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 53 Capability RayTracingNV Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDNV" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeNV" Name 24 "sy" Name 29 "accNV" Name 37 "block" MemberName 37(block) 0 "dir" MemberName 37(block) 1 "origin" Name 39 "" Name 52 "payload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 29(accNV) Binding 0 Decorate 29(accNV) DescriptorSet 0 Decorate 37(block) Block MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 Decorate 52(payload) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDNV): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeNV): 10(ptr) Variable Input 27: TypeAccelerationStructureKHR 28: TypePointer UniformConstant 27 29(accNV): 28(ptr) Variable UniformConstant 35: TypeFloat 32 36: TypeVector 35(float) 3 37(block): TypeStruct 36(fvec3) 36(fvec3) 38: TypePointer ShaderRecordBufferKHR 37(block) 39: 38(ptr) Variable ShaderRecordBufferKHR 40: TypeInt 32 1 41: 40(int) Constant 1 42: TypePointer ShaderRecordBufferKHR 36(fvec3) 45: 35(float) Constant 1056964608 46: 40(int) Constant 0 49: 35(float) Constant 1061158912 50: TypeVector 35(float) 4 51: TypePointer RayPayloadKHR 50(fvec4) 52(payload): 51(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDNV) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDNV) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 17 26: 6(int) Load 25 Store 24(sy) 26 30: 27 Load 29(accNV) 31: 6(int) Load 8(lx) 32: 6(int) Load 16(ly) 33: 6(int) Load 20(sx) 34: 6(int) Load 24(sy) 43: 42(ptr) AccessChain 39 41 44: 36(fvec3) Load 43 47: 42(ptr) AccessChain 39 46 48: 36(fvec3) Load 47 TraceNV 30 31 32 33 34 12 44 45 48 49 41 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.RayGenShaderArray.rgen.out000066400000000000000000000157471506534232700242720ustar00rootroot00000000000000spv.RayGenShaderArray.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 89 Capability ShaderNonUniformEXT Capability RuntimeDescriptorArrayEXT Capability RayTracingNV Extension "SPV_EXT_descriptor_indexing" Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 Source GLSL 460 SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_NV_ray_tracing" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDNV" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeNV" Name 24 "sy" Name 30 "accNV0" Name 34 "block" MemberName 34(block) 0 "dir" MemberName 34(block) 1 "origin" MemberName 34(block) 2 "i" Name 36 "" Name 60 "accNV1" Name 88 "payload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 30(accNV0) Binding 0 Decorate 30(accNV0) DescriptorSet 0 Decorate 34(block) BufferBlock MemberDecorate 34(block) 0 Offset 0 MemberDecorate 34(block) 1 Offset 16 MemberDecorate 34(block) 2 Offset 28 Decorate 60(accNV1) Binding 1 Decorate 60(accNV1) DescriptorSet 0 Decorate 75 DecorationNonUniformEXT Decorate 76 DecorationNonUniformEXT Decorate 77 DecorationNonUniformEXT Decorate 88(payload) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDNV): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeNV): 10(ptr) Variable Input 27: TypeAccelerationStructureKHR 28: TypeRuntimeArray 27 29: TypePointer UniformConstant 28 30(accNV0): 29(ptr) Variable UniformConstant 31: TypeFloat 32 32: TypeVector 31(float) 3 33: TypeInt 32 1 34(block): TypeStruct 32(fvec3) 32(fvec3) 33(int) 35: TypePointer ShaderRecordBufferKHR 34(block) 36: 35(ptr) Variable ShaderRecordBufferKHR 37: 33(int) Constant 2 38: TypePointer ShaderRecordBufferKHR 33(int) 41: TypePointer UniformConstant 27 48: 33(int) Constant 1 49: TypePointer ShaderRecordBufferKHR 32(fvec3) 52: 31(float) Constant 1056964608 53: 33(int) Constant 0 56: 31(float) Constant 1061158912 57: 6(int) Constant 2 58: TypeArray 27 57 59: TypePointer UniformConstant 58 60(accNV1): 59(ptr) Variable UniformConstant 86: TypeVector 31(float) 4 87: TypePointer RayPayloadKHR 86(fvec4) 88(payload): 87(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDNV) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDNV) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 17 26: 6(int) Load 25 Store 24(sy) 26 39: 38(ptr) AccessChain 36 37 40: 33(int) Load 39 42: 41(ptr) AccessChain 30(accNV0) 40 43: 27 Load 42 44: 6(int) Load 8(lx) 45: 6(int) Load 16(ly) 46: 6(int) Load 20(sx) 47: 6(int) Load 24(sy) 50: 49(ptr) AccessChain 36 48 51: 32(fvec3) Load 50 54: 49(ptr) AccessChain 36 53 55: 32(fvec3) Load 54 TraceNV 43 44 45 46 47 12 51 52 55 56 48 61: 38(ptr) AccessChain 36 37 62: 33(int) Load 61 63: 41(ptr) AccessChain 60(accNV1) 62 64: 27 Load 63 65: 6(int) Load 8(lx) 66: 6(int) Load 16(ly) 67: 6(int) Load 20(sx) 68: 6(int) Load 24(sy) 69: 49(ptr) AccessChain 36 48 70: 32(fvec3) Load 69 71: 49(ptr) AccessChain 36 53 72: 32(fvec3) Load 71 TraceNV 64 65 66 67 68 12 70 52 72 56 48 73: 38(ptr) AccessChain 36 37 74: 33(int) Load 73 75: 33(int) CopyObject 74 76: 41(ptr) AccessChain 30(accNV0) 75 77: 27 Load 76 78: 6(int) Load 8(lx) 79: 6(int) Load 16(ly) 80: 6(int) Load 20(sx) 81: 6(int) Load 24(sy) 82: 49(ptr) AccessChain 36 48 83: 32(fvec3) Load 82 84: 49(ptr) AccessChain 36 53 85: 32(fvec3) Load 84 TraceNV 77 78 79 80 81 12 83 52 85 56 48 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.RayGenShaderMotion.rgen.out000066400000000000000000000077261506534232700244570ustar00rootroot00000000000000spv.RayGenShaderMotion.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 47 Capability RayTracingKHR Capability RayTracingMotionBlurNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_ray_tracing_motion_blur" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 29 46 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_ray_tracing_motion_blur" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDEXT" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 29 "accEXT" Name 46 "payloadEXT" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 29(accEXT) Binding 0 Decorate 29(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeEXT): 10(ptr) Variable Input 27: TypeAccelerationStructureKHR 28: TypePointer UniformConstant 27 29(accEXT): 28(ptr) Variable UniformConstant 35: TypeFloat 32 36: TypeVector 35(float) 3 37: 35(float) Constant 1056964608 38: 36(fvec3) ConstantComposite 37 37 37 39: 35(float) Constant 1065353216 40: 36(fvec3) ConstantComposite 39 39 39 41: 35(float) Constant 1061158912 42: TypeInt 32 1 43: 42(int) Constant 0 44: TypeVector 35(float) 4 45: TypePointer RayPayloadKHR 44(fvec4) 46(payloadEXT): 45(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 30: 27 Load 29(accEXT) 31: 6(int) Load 8(lx) 32: 6(int) Load 16(ly) 33: 6(int) Load 20(sx) 34: 6(int) Load 24(sy) TraceRayMotionNV 30 31 32 33 34 12 38 37 40 41 37 46(payloadEXT) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.RayGenShader_Errors.rgen.out000066400000000000000000000051741506534232700246200ustar00rootroot00000000000000spv.RayGenShader_Errors.rgen ERROR: 0:3: 'hitAttributeNV' : not supported in this stage: ray-generation ERROR: 0:4: 'rayPayloadInNV' : not supported in this stage: ray-generation ERROR: 0:5: 'shaderRecordNV' : can only be used with a buffer ERROR: 0:9: 'binding' : cannot be used with shaderRecordNV ERROR: 0:12: 'set' : cannot be used with shaderRecordNV ERROR: 0:23: 'accelerationStructureNV' : accelerationStructureNV can only be used in uniform variables or function parameters: a ERROR: 0:23: '=' : cannot convert from ' const int' to ' temp accelerationStructureNV' ERROR: 0:24: 'gl_PrimitiveID' : undeclared identifier ERROR: 0:24: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:25: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) ERROR: 0:25: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:26: 'gl_InstanceCustomIndexNV' : undeclared identifier ERROR: 0:26: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:27: 'gl_WorldRayOriginNV' : undeclared identifier ERROR: 0:27: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:28: 'gl_WorldRayDirectionNV' : undeclared identifier ERROR: 0:28: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:29: 'gl_ObjectRayOriginNV' : undeclared identifier ERROR: 0:29: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:30: 'gl_ObjectRayDirectionNV' : undeclared identifier ERROR: 0:30: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:31: 'gl_RayTminNV' : undeclared identifier ERROR: 0:32: 'gl_RayTmaxNV' : undeclared identifier ERROR: 0:33: 'gl_ObjectToWorldNV' : undeclared identifier ERROR: 0:33: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:34: 'gl_WorldToObjectNV' : undeclared identifier ERROR: 0:34: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:35: 'gl_HitTNV' : undeclared identifier ERROR: 0:36: 'gl_HitKindNV' : undeclared identifier ERROR: 0:37: 'reportIntersectionNV' : no matching overloaded function found ERROR: 0:38: 'ignoreIntersectionNV' : no matching overloaded function found ERROR: 0:39: 'terminateRayNV' : no matching overloaded function found ERROR: 0:40: 'assign' : l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer) ERROR: 33 compilation errors. No code generated. ERROR: Linking ray-generation stage: Only one shaderRecordNV buffer block is allowed per stage SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out000066400000000000000000000052551506534232700310510ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader Capability Float16 Capability Int16 Capability WorkgroupMemoryExplicitLayoutKHR Capability WorkgroupMemoryExplicitLayout16BitAccessKHR Extension "SPV_KHR_workgroup_memory_explicit_layout" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 ExecutionMode 4 LocalSize 2 1 1 Source GLSL 430 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shared_memory_block" Name 4 "main" Name 8 "first" MemberName 8(first) 0 "a" MemberName 8(first) 1 "f" Name 10 "" Decorate 8(first) Block MemberDecorate 8(first) 0 Offset 0 MemberDecorate 8(first) 1 Offset 2 Decorate 24 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 16 1 7: TypeFloat 16 8(first): TypeStruct 6(int16_t) 7(float16_t) 9: TypePointer Workgroup 8(first) 10: 9(ptr) Variable Workgroup 11: TypeInt 32 1 12: 11(int) Constant 0 13: 6(int16_t) Constant 3 14: TypePointer Workgroup 6(int16_t) 16: 11(int) Constant 1 17:7(float16_t) Constant 18982 18: TypePointer Workgroup 7(float16_t) 20: TypeInt 32 0 21: TypeVector 20(int) 3 22: 20(int) Constant 2 23: 20(int) Constant 1 24: 21(ivec3) ConstantComposite 22 23 23 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 10 12 Store 15 13 19: 18(ptr) AccessChain 10 16 Store 19 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out000066400000000000000000000043201506534232700307620ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader Capability Int8 Capability WorkgroupMemoryExplicitLayoutKHR Capability WorkgroupMemoryExplicitLayout8BitAccessKHR Extension "SPV_KHR_workgroup_memory_explicit_layout" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 9 ExecutionMode 4 LocalSize 2 1 1 Source GLSL 430 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shared_memory_block" Name 4 "main" Name 7 "first" MemberName 7(first) 0 "a" Name 9 "" Decorate 7(first) Block MemberDecorate 7(first) 0 Offset 0 Decorate 19 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 7(first): TypeStruct 6(int8_t) 8: TypePointer Workgroup 7(first) 9: 8(ptr) Variable Workgroup 10: TypeInt 32 1 11: 10(int) Constant 0 12: 6(int8_t) Constant 2 13: TypePointer Workgroup 6(int8_t) 15: TypeInt 32 0 16: TypeVector 15(int) 3 17: 15(int) Constant 2 18: 15(int) Constant 1 19: 16(ivec3) ConstantComposite 17 18 18 4(main): 2 Function None 3 5: Label 14: 13(ptr) AccessChain 9 11 Store 14 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp.out000066400000000000000000000003161506534232700335250ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp ERROR: Linking compute stage: cannot mix use of shared variables inside and outside blocks SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out000066400000000000000000000051361506534232700311050ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader Capability WorkgroupMemoryExplicitLayoutKHR Extension "SPV_KHR_workgroup_memory_explicit_layout" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 9 16 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 430 SourceExtension "GL_EXT_shared_memory_block" Name 4 "main" Name 7 "first" MemberName 7(first) 0 "a" Name 9 "" Name 14 "second" MemberName 14(second) 0 "b" Name 16 "" Decorate 7(first) Block MemberDecorate 7(first) 0 Offset 0 Decorate 9 Aliased Decorate 14(second) Block MemberDecorate 14(second) 0 Offset 0 Decorate 16 Aliased Decorate 23 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7(first): TypeStruct 6(int) 8: TypePointer Workgroup 7(first) 9: 8(ptr) Variable Workgroup 10: 6(int) Constant 0 11: 6(int) Constant 2 12: TypePointer Workgroup 6(int) 14(second): TypeStruct 6(int) 15: TypePointer Workgroup 14(second) 16: 15(ptr) Variable Workgroup 17: 6(int) Constant 3 19: TypeInt 32 0 20: TypeVector 19(int) 3 21: 19(int) Constant 8 22: 19(int) Constant 1 23: 20(ivec3) ConstantComposite 21 22 22 4(main): 2 Function None 3 5: Label 13: 12(ptr) AccessChain 9 10 Store 13 11 18: 12(ptr) AccessChain 16 10 Store 18 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out000066400000000000000000000030711506534232700305410ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.NonBlock.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 8 10 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 430 SourceExtension "GL_EXT_shared_memory_block" Name 4 "main" Name 8 "a" Name 10 "b" Decorate 16 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Workgroup 6(int) 8(a): 7(ptr) Variable Workgroup 9: 6(int) Constant 2 10(b): 7(ptr) Variable Workgroup 11: 6(int) Constant 3 12: TypeInt 32 0 13: TypeVector 12(int) 3 14: 12(int) Constant 8 15: 12(int) Constant 1 16: 13(ivec3) ConstantComposite 14 15 15 4(main): 2 Function None 3 5: Label Store 8(a) 9 Store 10(b) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out000066400000000000000000000037061506534232700312350ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 19 Capability Shader Capability WorkgroupMemoryExplicitLayoutKHR Extension "SPV_KHR_workgroup_memory_explicit_layout" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 9 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 430 SourceExtension "GL_EXT_shared_memory_block" Name 4 "main" Name 7 "first" MemberName 7(first) 0 "a" Name 9 "" Decorate 7(first) Block MemberDecorate 7(first) 0 Offset 0 Decorate 18 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7(first): TypeStruct 6(int) 8: TypePointer Workgroup 7(first) 9: 8(ptr) Variable Workgroup 10: 6(int) Constant 0 11: 6(int) Constant 2 12: TypePointer Workgroup 6(int) 14: TypeInt 32 0 15: TypeVector 14(int) 3 16: 14(int) Constant 8 17: 14(int) Constant 1 18: 15(ivec3) ConstantComposite 16 17 17 4(main): 2 Function None 3 5: Label 13: 12(ptr) AccessChain 9 10 Store 13 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out000066400000000000000000000106541506534232700303060ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.scalar.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability WorkgroupMemoryExplicitLayoutKHR Extension "SPV_KHR_workgroup_memory_explicit_layout" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 28 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 430 SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shared_memory_block" Name 4 "main" Name 17 "T" MemberName 17(T) 0 "t" Name 24 "S" MemberName 24(S) 0 "f" MemberName 24(S) 1 "v2" MemberName 24(S) 2 "v3" MemberName 24(S) 3 "v4" MemberName 24(S) 4 "t" MemberName 24(S) 5 "f_array" MemberName 24(S) 6 "v2_array" MemberName 24(S) 7 "v3_array" MemberName 24(S) 8 "v4_array" MemberName 24(S) 9 "t_array" Name 26 "Block" MemberName 26(Block) 0 "s" MemberName 26(Block) 1 "s_array" Name 28 "" Decorate 10 BuiltIn WorkgroupSize Decorate 16 ArrayStride 4 MemberDecorate 17(T) 0 Offset 0 Decorate 19 ArrayStride 4 Decorate 20 ArrayStride 8 Decorate 21 ArrayStride 12 Decorate 22 ArrayStride 16 Decorate 23 ArrayStride 12 MemberDecorate 24(S) 0 Offset 0 MemberDecorate 24(S) 1 Offset 4 MemberDecorate 24(S) 2 Offset 12 MemberDecorate 24(S) 3 Offset 24 MemberDecorate 24(S) 4 Offset 40 MemberDecorate 24(S) 5 Offset 52 MemberDecorate 24(S) 6 Offset 76 MemberDecorate 24(S) 7 Offset 124 MemberDecorate 24(S) 8 Offset 196 MemberDecorate 24(S) 9 Offset 292 Decorate 25 ArrayStride 364 Decorate 26(Block) Block MemberDecorate 26(Block) 0 Offset 0 MemberDecorate 26(Block) 1 Offset 364 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: 6(int) Constant 8 9: 6(int) Constant 1 10: 7(ivec3) ConstantComposite 8 9 9 11: TypeFloat 32 12: TypeVector 11(float) 2 13: TypeVector 11(float) 3 14: TypeVector 11(float) 4 15: 6(int) Constant 3 16: TypeArray 11(float) 15 17(T): TypeStruct 16 18: 6(int) Constant 6 19: TypeArray 11(float) 18 20: TypeArray 12(fvec2) 18 21: TypeArray 13(fvec3) 18 22: TypeArray 14(fvec4) 18 23: TypeArray 17(T) 18 24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23 25: TypeArray 24(S) 18 26(Block): TypeStruct 24(S) 25 27: TypePointer Workgroup 26(Block) 28: 27(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out000066400000000000000000000105441506534232700300560ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.std140.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability WorkgroupMemoryExplicitLayoutKHR Extension "SPV_KHR_workgroup_memory_explicit_layout" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 28 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 430 SourceExtension "GL_EXT_shared_memory_block" Name 4 "main" Name 17 "T" MemberName 17(T) 0 "t" Name 24 "S" MemberName 24(S) 0 "f" MemberName 24(S) 1 "v2" MemberName 24(S) 2 "v3" MemberName 24(S) 3 "v4" MemberName 24(S) 4 "t" MemberName 24(S) 5 "f_array" MemberName 24(S) 6 "v2_array" MemberName 24(S) 7 "v3_array" MemberName 24(S) 8 "v4_array" MemberName 24(S) 9 "t_array" Name 26 "Block" MemberName 26(Block) 0 "s" MemberName 26(Block) 1 "s_array" Name 28 "" Decorate 10 BuiltIn WorkgroupSize Decorate 16 ArrayStride 16 MemberDecorate 17(T) 0 Offset 0 Decorate 19 ArrayStride 16 Decorate 20 ArrayStride 16 Decorate 21 ArrayStride 16 Decorate 22 ArrayStride 16 Decorate 23 ArrayStride 48 MemberDecorate 24(S) 0 Offset 0 MemberDecorate 24(S) 1 Offset 8 MemberDecorate 24(S) 2 Offset 16 MemberDecorate 24(S) 3 Offset 32 MemberDecorate 24(S) 4 Offset 48 MemberDecorate 24(S) 5 Offset 96 MemberDecorate 24(S) 6 Offset 192 MemberDecorate 24(S) 7 Offset 288 MemberDecorate 24(S) 8 Offset 384 MemberDecorate 24(S) 9 Offset 480 Decorate 25 ArrayStride 768 Decorate 26(Block) Block MemberDecorate 26(Block) 0 Offset 0 MemberDecorate 26(Block) 1 Offset 768 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: 6(int) Constant 8 9: 6(int) Constant 1 10: 7(ivec3) ConstantComposite 8 9 9 11: TypeFloat 32 12: TypeVector 11(float) 2 13: TypeVector 11(float) 3 14: TypeVector 11(float) 4 15: 6(int) Constant 3 16: TypeArray 11(float) 15 17(T): TypeStruct 16 18: 6(int) Constant 6 19: TypeArray 11(float) 18 20: TypeArray 12(fvec2) 18 21: TypeArray 13(fvec3) 18 22: TypeArray 14(fvec4) 18 23: TypeArray 17(T) 18 24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23 25: TypeArray 24(S) 18 26(Block): TypeStruct 24(S) 25 27: TypePointer Workgroup 26(Block) 28: 27(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out000066400000000000000000000105401506534232700300540ustar00rootroot00000000000000spv.WorkgroupMemoryExplicitLayout.std430.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability WorkgroupMemoryExplicitLayoutKHR Extension "SPV_KHR_workgroup_memory_explicit_layout" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 28 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 430 SourceExtension "GL_EXT_shared_memory_block" Name 4 "main" Name 17 "T" MemberName 17(T) 0 "t" Name 24 "S" MemberName 24(S) 0 "f" MemberName 24(S) 1 "v2" MemberName 24(S) 2 "v3" MemberName 24(S) 3 "v4" MemberName 24(S) 4 "t" MemberName 24(S) 5 "f_array" MemberName 24(S) 6 "v2_array" MemberName 24(S) 7 "v3_array" MemberName 24(S) 8 "v4_array" MemberName 24(S) 9 "t_array" Name 26 "Block" MemberName 26(Block) 0 "s" MemberName 26(Block) 1 "s_array" Name 28 "" Decorate 10 BuiltIn WorkgroupSize Decorate 16 ArrayStride 4 MemberDecorate 17(T) 0 Offset 0 Decorate 19 ArrayStride 4 Decorate 20 ArrayStride 8 Decorate 21 ArrayStride 16 Decorate 22 ArrayStride 16 Decorate 23 ArrayStride 12 MemberDecorate 24(S) 0 Offset 0 MemberDecorate 24(S) 1 Offset 8 MemberDecorate 24(S) 2 Offset 16 MemberDecorate 24(S) 3 Offset 32 MemberDecorate 24(S) 4 Offset 48 MemberDecorate 24(S) 5 Offset 60 MemberDecorate 24(S) 6 Offset 88 MemberDecorate 24(S) 7 Offset 144 MemberDecorate 24(S) 8 Offset 240 MemberDecorate 24(S) 9 Offset 336 Decorate 25 ArrayStride 416 Decorate 26(Block) Block MemberDecorate 26(Block) 0 Offset 0 MemberDecorate 26(Block) 1 Offset 416 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: 6(int) Constant 8 9: 6(int) Constant 1 10: 7(ivec3) ConstantComposite 8 9 9 11: TypeFloat 32 12: TypeVector 11(float) 2 13: TypeVector 11(float) 3 14: TypeVector 11(float) 4 15: 6(int) Constant 3 16: TypeArray 11(float) 15 17(T): TypeStruct 16 18: 6(int) Constant 6 19: TypeArray 11(float) 18 20: TypeArray 12(fvec2) 18 21: TypeArray 13(fvec3) 18 22: TypeArray 14(fvec4) 18 23: TypeArray 17(T) 18 24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23 25: TypeArray 24(S) 18 26(Block): TypeStruct 24(S) 25 27: TypePointer Workgroup 26(Block) 28: 27(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.accessChain.frag.out000066400000000000000000000432361506534232700231410ustar00rootroot00000000000000spv.accessChain.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 228 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 69 176 ExecutionMode 4 OriginUpperLeft Source GLSL 420 Name 4 "main" Name 8 "S" MemberName 8(S) 0 "color" Name 11 "GetColor1(struct-S-vf31;" Name 10 "i" Name 18 "GetColor2(struct-S-vf31;i1;" Name 16 "i" Name 17 "comp" Name 22 "GetColor3(struct-S-vf31;i1;" Name 20 "i" Name 21 "comp" Name 26 "GetColor4(struct-S-vf31;i1;" Name 24 "i" Name 25 "comp" Name 30 "GetColor5(struct-S-vf31;i1;" Name 28 "i" Name 29 "comp" Name 34 "GetColor6(struct-S-vf31;i1;" Name 32 "i" Name 33 "comp" Name 38 "GetColor7(struct-S-vf31;i1;" Name 36 "i" Name 37 "comp" Name 42 "GetColor8(struct-S-vf31;i1;" Name 40 "i" Name 41 "comp" Name 46 "GetColor9(struct-S-vf31;i1;" Name 44 "i" Name 45 "comp" Name 50 "GetColor10(struct-S-vf31;i1;" Name 48 "i" Name 49 "comp" Name 54 "GetColor11(struct-S-vf31;i1;" Name 52 "i" Name 53 "comp" Name 58 "GetColor12(struct-S-vf31;i1;" Name 56 "i" Name 57 "comp" Name 62 "GetColor13(struct-S-vf31;i1;" Name 60 "i" Name 61 "comp" Name 66 "GetColor14(struct-S-vf31;i1;" Name 64 "i" Name 65 "comp" Name 69 "OutColor" Name 171 "s" Name 176 "u" Name 177 "param" Name 181 "param" Name 185 "param" Name 189 "param" Name 193 "param" Name 197 "param" Name 201 "param" Name 205 "param" Name 209 "param" Name 213 "param" Name 217 "param" Name 221 "param" Name 225 "param" Decorate 69(OutColor) Location 0 Decorate 176(u) Flat Decorate 176(u) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8(S): TypeStruct 7(fvec3) 9: TypeFunction 2 8(S) 13: TypeInt 32 1 14: TypePointer Function 13(int) 15: TypeFunction 2 8(S) 14(ptr) 68: TypePointer Output 7(fvec3) 69(OutColor): 68(ptr) Variable Output 70: 13(int) Constant 0 71: TypeInt 32 0 72: 71(int) Constant 0 99: TypeVector 6(float) 2 111: TypePointer Output 6(float) 114: 71(int) Constant 1 117: 71(int) Constant 2 154: TypeVector 71(int) 2 155: 154(ivec2) ConstantComposite 117 114 164: TypeVector 71(int) 3 165: 164(ivec3) ConstantComposite 117 114 72 168: 6(float) Constant 0 169: 7(fvec3) ConstantComposite 168 168 168 170: TypePointer Function 8(S) 175: TypePointer Input 13(int) 176(u): 175(ptr) Variable Input 4(main): 2 Function None 3 5: Label 171(s): 170(ptr) Variable Function 177(param): 14(ptr) Variable Function 181(param): 14(ptr) Variable Function 185(param): 14(ptr) Variable Function 189(param): 14(ptr) Variable Function 193(param): 14(ptr) Variable Function 197(param): 14(ptr) Variable Function 201(param): 14(ptr) Variable Function 205(param): 14(ptr) Variable Function 209(param): 14(ptr) Variable Function 213(param): 14(ptr) Variable Function 217(param): 14(ptr) Variable Function 221(param): 14(ptr) Variable Function 225(param): 14(ptr) Variable Function Store 69(OutColor) 169 172: 8(S) Load 171(s) 173: 2 FunctionCall 11(GetColor1(struct-S-vf31;) 172 174: 8(S) Load 171(s) 178: 13(int) Load 176(u) Store 177(param) 178 179: 2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 174 177(param) 180: 8(S) Load 171(s) 182: 13(int) Load 176(u) Store 181(param) 182 183: 2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 180 181(param) 184: 8(S) Load 171(s) 186: 13(int) Load 176(u) Store 185(param) 186 187: 2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 184 185(param) 188: 8(S) Load 171(s) 190: 13(int) Load 176(u) Store 189(param) 190 191: 2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 188 189(param) 192: 8(S) Load 171(s) 194: 13(int) Load 176(u) Store 193(param) 194 195: 2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 192 193(param) 196: 8(S) Load 171(s) 198: 13(int) Load 176(u) Store 197(param) 198 199: 2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 196 197(param) 200: 8(S) Load 171(s) 202: 13(int) Load 176(u) Store 201(param) 202 203: 2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 200 201(param) 204: 8(S) Load 171(s) 206: 13(int) Load 176(u) Store 205(param) 206 207: 2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 204 205(param) 208: 8(S) Load 171(s) 210: 13(int) Load 176(u) Store 209(param) 210 211: 2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 208 209(param) 212: 8(S) Load 171(s) 214: 13(int) Load 176(u) Store 213(param) 214 215: 2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 212 213(param) 216: 8(S) Load 171(s) 218: 13(int) Load 176(u) Store 217(param) 218 219: 2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 216 217(param) 220: 8(S) Load 171(s) 222: 13(int) Load 176(u) Store 221(param) 222 223: 2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 220 221(param) 224: 8(S) Load 171(s) 226: 13(int) Load 176(u) Store 225(param) 226 227: 2 FunctionCall 66(GetColor14(struct-S-vf31;i1;) 224 225(param) Return FunctionEnd 11(GetColor1(struct-S-vf31;): 2 Function None 9 10(i): 8(S) FunctionParameter 12: Label 73: 6(float) CompositeExtract 10(i) 0 0 74: 7(fvec3) Load 69(OutColor) 75: 7(fvec3) CompositeConstruct 73 73 73 76: 7(fvec3) FAdd 74 75 Store 69(OutColor) 76 Return FunctionEnd 18(GetColor2(struct-S-vf31;i1;): 2 Function None 15 16(i): 8(S) FunctionParameter 17(comp): 14(ptr) FunctionParameter 19: Label 77: 13(int) Load 17(comp) 78: 7(fvec3) CompositeExtract 16(i) 0 79: 6(float) VectorExtractDynamic 78 77 80: 7(fvec3) Load 69(OutColor) 81: 7(fvec3) CompositeConstruct 79 79 79 82: 7(fvec3) FAdd 80 81 Store 69(OutColor) 82 Return FunctionEnd 22(GetColor3(struct-S-vf31;i1;): 2 Function None 15 20(i): 8(S) FunctionParameter 21(comp): 14(ptr) FunctionParameter 23: Label 83: 13(int) Load 21(comp) 84: 7(fvec3) CompositeExtract 20(i) 0 85: 6(float) VectorExtractDynamic 84 83 86: 7(fvec3) Load 69(OutColor) 87: 7(fvec3) CompositeConstruct 85 85 85 88: 7(fvec3) FAdd 86 87 Store 69(OutColor) 88 Return FunctionEnd 26(GetColor4(struct-S-vf31;i1;): 2 Function None 15 24(i): 8(S) FunctionParameter 25(comp): 14(ptr) FunctionParameter 27: Label 89: 13(int) Load 25(comp) 90: 7(fvec3) CompositeExtract 24(i) 0 91: 6(float) VectorExtractDynamic 90 89 92: 7(fvec3) Load 69(OutColor) 93: 7(fvec3) CompositeConstruct 91 91 91 94: 7(fvec3) FAdd 92 93 Store 69(OutColor) 94 Return FunctionEnd 30(GetColor5(struct-S-vf31;i1;): 2 Function None 15 28(i): 8(S) FunctionParameter 29(comp): 14(ptr) FunctionParameter 31: Label 95: 7(fvec3) CompositeExtract 28(i) 0 96: 7(fvec3) Load 69(OutColor) 97: 7(fvec3) FAdd 96 95 Store 69(OutColor) 97 Return FunctionEnd 34(GetColor6(struct-S-vf31;i1;): 2 Function None 15 32(i): 8(S) FunctionParameter 33(comp): 14(ptr) FunctionParameter 35: Label 98: 13(int) Load 33(comp) 100: 7(fvec3) CompositeExtract 32(i) 0 101: 99(fvec2) VectorShuffle 100 100 1 0 102: 6(float) VectorExtractDynamic 101 98 103: 7(fvec3) Load 69(OutColor) 104: 7(fvec3) CompositeConstruct 102 102 102 105: 7(fvec3) FAdd 103 104 Store 69(OutColor) 105 Return FunctionEnd 38(GetColor7(struct-S-vf31;i1;): 2 Function None 15 36(i): 8(S) FunctionParameter 37(comp): 14(ptr) FunctionParameter 39: Label 106: 7(fvec3) CompositeExtract 36(i) 0 107: 99(fvec2) VectorShuffle 106 106 0 1 108: 7(fvec3) Load 69(OutColor) 109: 99(fvec2) VectorShuffle 108 108 0 1 110: 99(fvec2) FAdd 109 107 112: 111(ptr) AccessChain 69(OutColor) 72 113: 6(float) CompositeExtract 110 0 Store 112 113 115: 111(ptr) AccessChain 69(OutColor) 114 116: 6(float) CompositeExtract 110 1 Store 115 116 Return FunctionEnd 42(GetColor8(struct-S-vf31;i1;): 2 Function None 15 40(i): 8(S) FunctionParameter 41(comp): 14(ptr) FunctionParameter 43: Label 118: 6(float) CompositeExtract 40(i) 0 2 119: 7(fvec3) Load 69(OutColor) 120: 7(fvec3) CompositeConstruct 118 118 118 121: 7(fvec3) FAdd 119 120 Store 69(OutColor) 121 Return FunctionEnd 46(GetColor9(struct-S-vf31;i1;): 2 Function None 15 44(i): 8(S) FunctionParameter 45(comp): 14(ptr) FunctionParameter 47: Label 122: 7(fvec3) CompositeExtract 44(i) 0 123: 7(fvec3) Load 69(OutColor) 124: 7(fvec3) VectorShuffle 123 123 2 0 1 125: 7(fvec3) FAdd 124 122 126: 7(fvec3) Load 69(OutColor) 127: 7(fvec3) VectorShuffle 126 125 4 5 3 Store 69(OutColor) 127 Return FunctionEnd 50(GetColor10(struct-S-vf31;i1;): 2 Function None 15 48(i): 8(S) FunctionParameter 49(comp): 14(ptr) FunctionParameter 51: Label 128: 7(fvec3) CompositeExtract 48(i) 0 129: 99(fvec2) VectorShuffle 128 128 0 1 130: 7(fvec3) Load 69(OutColor) 131: 99(fvec2) VectorShuffle 130 130 2 1 132: 99(fvec2) FAdd 131 129 133: 111(ptr) AccessChain 69(OutColor) 117 134: 6(float) CompositeExtract 132 0 Store 133 134 135: 111(ptr) AccessChain 69(OutColor) 114 136: 6(float) CompositeExtract 132 1 Store 135 136 Return FunctionEnd 54(GetColor11(struct-S-vf31;i1;): 2 Function None 15 52(i): 8(S) FunctionParameter 53(comp): 14(ptr) FunctionParameter 55: Label 137: 7(fvec3) CompositeExtract 52(i) 0 138: 99(fvec2) VectorShuffle 137 137 0 1 139: 7(fvec3) Load 69(OutColor) 140: 99(fvec2) VectorShuffle 139 139 0 2 141: 99(fvec2) FAdd 140 138 142: 111(ptr) AccessChain 69(OutColor) 72 143: 6(float) CompositeExtract 141 0 Store 142 143 144: 111(ptr) AccessChain 69(OutColor) 117 145: 6(float) CompositeExtract 141 1 Store 144 145 Return FunctionEnd 58(GetColor12(struct-S-vf31;i1;): 2 Function None 15 56(i): 8(S) FunctionParameter 57(comp): 14(ptr) FunctionParameter 59: Label 146: 13(int) Load 57(comp) 147: 6(float) CompositeExtract 56(i) 0 0 148: 111(ptr) AccessChain 69(OutColor) 146 149: 6(float) Load 148 150: 6(float) FAdd 149 147 151: 111(ptr) AccessChain 69(OutColor) 146 Store 151 150 Return FunctionEnd 62(GetColor13(struct-S-vf31;i1;): 2 Function None 15 60(i): 8(S) FunctionParameter 61(comp): 14(ptr) FunctionParameter 63: Label 152: 13(int) Load 61(comp) 153: 6(float) CompositeExtract 60(i) 0 0 156: 71(int) VectorExtractDynamic 155 152 157: 111(ptr) AccessChain 69(OutColor) 156 158: 6(float) Load 157 159: 6(float) FAdd 158 153 160: 71(int) VectorExtractDynamic 155 152 161: 111(ptr) AccessChain 69(OutColor) 160 Store 161 159 Return FunctionEnd 66(GetColor14(struct-S-vf31;i1;): 2 Function None 15 64(i): 8(S) FunctionParameter 65(comp): 14(ptr) FunctionParameter 67: Label 162: 13(int) Load 65(comp) 163: 6(float) CompositeExtract 64(i) 0 0 166: 71(int) VectorExtractDynamic 165 162 167: 111(ptr) AccessChain 69(OutColor) 166 Store 167 163 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.aggOps.frag.out000066400000000000000000000370571506534232700221610ustar00rootroot00000000000000spv.aggOps.frag WARNING: 0:4: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 215 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 16 41 101 213 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 8 "s1" MemberName 8(s1) 0 "i" MemberName 8(s1) 1 "f" Name 13 "a" Name 16 "u" Name 37 "b" Name 41 "w" Name 55 "s1" MemberName 55(s1) 0 "i" MemberName 55(s1) 1 "f" Name 56 "s2" MemberName 56(s2) 0 "i" MemberName 56(s2) 1 "f" MemberName 56(s2) 2 "s1_1" Name 57 "ub1" MemberName 57(ub1) 0 "foo2a" Name 59 "uName1" Name 64 "s1" MemberName 64(s1) 0 "i" MemberName 64(s1) 1 "f" Name 65 "s2" MemberName 65(s2) 0 "i" MemberName 65(s2) 1 "f" MemberName 65(s2) 2 "s1_1" Name 66 "ub2" MemberName 66(ub2) 0 "foo2b" Name 68 "uName2" Name 93 "v" Name 97 "samp2D" Name 101 "coord" Name 213 "color" Decorate 16(u) Location 1 Decorate 41(w) Location 2 MemberDecorate 55(s1) 0 Offset 0 MemberDecorate 55(s1) 1 Offset 4 MemberDecorate 56(s2) 0 Offset 0 MemberDecorate 56(s2) 1 Offset 4 MemberDecorate 56(s2) 2 Offset 16 Decorate 57(ub1) Block MemberDecorate 57(ub1) 0 Offset 0 Decorate 59(uName1) Binding 1 Decorate 59(uName1) DescriptorSet 0 MemberDecorate 64(s1) 0 Offset 0 MemberDecorate 64(s1) 1 Offset 4 MemberDecorate 65(s2) 0 Offset 0 MemberDecorate 65(s2) 1 Offset 4 MemberDecorate 65(s2) 2 Offset 8 Decorate 66(ub2) BufferBlock MemberDecorate 66(ub2) 0 Offset 0 Decorate 68(uName2) Binding 2 Decorate 68(uName2) DescriptorSet 0 Decorate 97(samp2D) Binding 0 Decorate 97(samp2D) DescriptorSet 0 Decorate 101(coord) RelaxedPrecision Decorate 101(coord) Location 0 Decorate 102 RelaxedPrecision Decorate 107 RelaxedPrecision Decorate 108 RelaxedPrecision Decorate 129 RelaxedPrecision Decorate 213(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFloat 32 8(s1): TypeStruct 6(int) 7(float) 9: TypeInt 32 0 10: 9(int) Constant 3 11: TypeArray 8(s1) 10 12: TypePointer Function 11 14: TypeVector 7(float) 4 15: TypePointer Input 14(fvec4) 16(u): 15(ptr) Variable Input 17: 9(int) Constant 0 18: TypePointer Input 7(float) 22: 9(int) Constant 1 26: 9(int) Constant 2 33: 6(int) Constant 14 34: 7(float) Constant 1096810496 35: 8(s1) ConstantComposite 33 34 38: 6(int) Constant 17 39: 7(float) Constant 1099431936 40: 8(s1) ConstantComposite 38 39 41(w): 15(ptr) Variable Input 55(s1): TypeStruct 6(int) 7(float) 56(s2): TypeStruct 6(int) 7(float) 55(s1) 57(ub1): TypeStruct 56(s2) 58: TypePointer Uniform 57(ub1) 59(uName1): 58(ptr) Variable Uniform 60: 6(int) Constant 0 61: TypePointer Uniform 56(s2) 64(s1): TypeStruct 6(int) 7(float) 65(s2): TypeStruct 6(int) 7(float) 64(s1) 66(ub2): TypeStruct 65(s2) 67: TypePointer Uniform 66(ub2) 68(uName2): 67(ptr) Variable Uniform 69: TypePointer Uniform 65(s2) 72: TypeBool 92: TypePointer Function 14(fvec4) 94: TypeImage 7(float) 2D sampled format:Unknown 95: TypeSampledImage 94 96: TypePointer UniformConstant 95 97(samp2D): 96(ptr) Variable UniformConstant 99: TypeVector 7(float) 2 100: TypePointer Input 99(fvec2) 101(coord): 100(ptr) Variable Input 106: 7(float) Constant 1073741824 112: TypeVector 72(bool) 4 117: 7(float) Constant 1077936128 126: 7(float) Constant 1082130432 132: TypeVector 72(bool) 2 137: 7(float) Constant 1084227584 173: 7(float) Constant 1086324736 209: 7(float) Constant 1088421888 212: TypePointer Output 14(fvec4) 213(color): 212(ptr) Variable Output 4(main): 2 Function None 3 5: Label 13(a): 12(ptr) Variable Function 37(b): 12(ptr) Variable Function 93(v): 92(ptr) Variable Function 19: 18(ptr) AccessChain 16(u) 17 20: 7(float) Load 19 21: 6(int) ConvertFToS 20 23: 18(ptr) AccessChain 16(u) 22 24: 7(float) Load 23 25: 8(s1) CompositeConstruct 21 24 27: 18(ptr) AccessChain 16(u) 26 28: 7(float) Load 27 29: 6(int) ConvertFToS 28 30: 18(ptr) AccessChain 16(u) 10 31: 7(float) Load 30 32: 8(s1) CompositeConstruct 29 31 36: 11 CompositeConstruct 25 32 35 Store 13(a) 36 42: 18(ptr) AccessChain 41(w) 17 43: 7(float) Load 42 44: 6(int) ConvertFToS 43 45: 18(ptr) AccessChain 41(w) 22 46: 7(float) Load 45 47: 8(s1) CompositeConstruct 44 46 48: 18(ptr) AccessChain 41(w) 26 49: 7(float) Load 48 50: 6(int) ConvertFToS 49 51: 18(ptr) AccessChain 41(w) 10 52: 7(float) Load 51 53: 8(s1) CompositeConstruct 50 52 54: 11 CompositeConstruct 40 47 53 Store 37(b) 54 62: 61(ptr) AccessChain 59(uName1) 60 63: 56(s2) Load 62 70: 69(ptr) AccessChain 68(uName2) 60 71: 65(s2) Load 70 73: 6(int) CompositeExtract 63 0 74: 6(int) CompositeExtract 71 0 75: 72(bool) IEqual 73 74 76: 7(float) CompositeExtract 63 1 77: 7(float) CompositeExtract 71 1 78: 72(bool) FOrdEqual 76 77 79: 72(bool) LogicalAnd 75 78 80: 55(s1) CompositeExtract 63 2 81: 64(s1) CompositeExtract 71 2 82: 6(int) CompositeExtract 80 0 83: 6(int) CompositeExtract 81 0 84: 72(bool) IEqual 82 83 85: 7(float) CompositeExtract 80 1 86: 7(float) CompositeExtract 81 1 87: 72(bool) FOrdEqual 85 86 88: 72(bool) LogicalAnd 84 87 89: 72(bool) LogicalAnd 79 88 SelectionMerge 91 None BranchConditional 89 90 104 90: Label 98: 95 Load 97(samp2D) 102: 99(fvec2) Load 101(coord) 103: 14(fvec4) ImageSampleImplicitLod 98 102 Store 93(v) 103 Branch 91 104: Label 105: 95 Load 97(samp2D) 107: 99(fvec2) Load 101(coord) 108: 99(fvec2) VectorTimesScalar 107 106 109: 14(fvec4) ImageSampleImplicitLod 105 108 Store 93(v) 109 Branch 91 91: Label 110: 14(fvec4) Load 16(u) 111: 14(fvec4) Load 93(v) 113: 112(bvec4) FOrdEqual 110 111 114: 72(bool) All 113 SelectionMerge 116 None BranchConditional 114 115 116 115: Label 118: 14(fvec4) Load 93(v) 119: 14(fvec4) VectorTimesScalar 118 117 Store 93(v) 119 Branch 116 116: Label 120: 14(fvec4) Load 16(u) 121: 14(fvec4) Load 93(v) 122: 112(bvec4) FUnordNotEqual 120 121 123: 72(bool) Any 122 SelectionMerge 125 None BranchConditional 123 124 125 124: Label 127: 14(fvec4) Load 93(v) 128: 14(fvec4) VectorTimesScalar 127 126 Store 93(v) 128 Branch 125 125: Label 129: 99(fvec2) Load 101(coord) 130: 14(fvec4) Load 93(v) 131: 99(fvec2) VectorShuffle 130 130 1 3 133: 132(bvec2) FOrdEqual 129 131 134: 72(bool) All 133 SelectionMerge 136 None BranchConditional 134 135 136 135: Label 138: 14(fvec4) Load 93(v) 139: 14(fvec4) VectorTimesScalar 138 137 Store 93(v) 139 Branch 136 136: Label 140: 11 Load 13(a) 141: 11 Load 37(b) 142: 8(s1) CompositeExtract 140 0 143: 8(s1) CompositeExtract 141 0 144: 6(int) CompositeExtract 142 0 145: 6(int) CompositeExtract 143 0 146: 72(bool) IEqual 144 145 147: 7(float) CompositeExtract 142 1 148: 7(float) CompositeExtract 143 1 149: 72(bool) FOrdEqual 147 148 150: 72(bool) LogicalAnd 146 149 151: 8(s1) CompositeExtract 140 1 152: 8(s1) CompositeExtract 141 1 153: 6(int) CompositeExtract 151 0 154: 6(int) CompositeExtract 152 0 155: 72(bool) IEqual 153 154 156: 7(float) CompositeExtract 151 1 157: 7(float) CompositeExtract 152 1 158: 72(bool) FOrdEqual 156 157 159: 72(bool) LogicalAnd 155 158 160: 72(bool) LogicalAnd 150 159 161: 8(s1) CompositeExtract 140 2 162: 8(s1) CompositeExtract 141 2 163: 6(int) CompositeExtract 161 0 164: 6(int) CompositeExtract 162 0 165: 72(bool) IEqual 163 164 166: 7(float) CompositeExtract 161 1 167: 7(float) CompositeExtract 162 1 168: 72(bool) FOrdEqual 166 167 169: 72(bool) LogicalAnd 165 168 170: 72(bool) LogicalAnd 160 169 SelectionMerge 172 None BranchConditional 170 171 172 171: Label 174: 14(fvec4) Load 93(v) 175: 14(fvec4) VectorTimesScalar 174 173 Store 93(v) 175 Branch 172 172: Label 176: 11 Load 13(a) 177: 11 Load 37(b) 178: 8(s1) CompositeExtract 176 0 179: 8(s1) CompositeExtract 177 0 180: 6(int) CompositeExtract 178 0 181: 6(int) CompositeExtract 179 0 182: 72(bool) INotEqual 180 181 183: 7(float) CompositeExtract 178 1 184: 7(float) CompositeExtract 179 1 185: 72(bool) FUnordNotEqual 183 184 186: 72(bool) LogicalOr 182 185 187: 8(s1) CompositeExtract 176 1 188: 8(s1) CompositeExtract 177 1 189: 6(int) CompositeExtract 187 0 190: 6(int) CompositeExtract 188 0 191: 72(bool) INotEqual 189 190 192: 7(float) CompositeExtract 187 1 193: 7(float) CompositeExtract 188 1 194: 72(bool) FUnordNotEqual 192 193 195: 72(bool) LogicalOr 191 194 196: 72(bool) LogicalOr 186 195 197: 8(s1) CompositeExtract 176 2 198: 8(s1) CompositeExtract 177 2 199: 6(int) CompositeExtract 197 0 200: 6(int) CompositeExtract 198 0 201: 72(bool) INotEqual 199 200 202: 7(float) CompositeExtract 197 1 203: 7(float) CompositeExtract 198 1 204: 72(bool) FUnordNotEqual 202 203 205: 72(bool) LogicalOr 201 204 206: 72(bool) LogicalOr 196 205 SelectionMerge 208 None BranchConditional 206 207 208 207: Label 210: 14(fvec4) Load 93(v) 211: 14(fvec4) VectorTimesScalar 210 209 Store 93(v) 211 Branch 208 208: Label 214: 14(fvec4) Load 93(v) Store 213(color) 214 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.always-discard.frag.out000066400000000000000000000122301506534232700236320ustar00rootroot00000000000000spv.always-discard.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 21 59 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "white" Name 12 "black" Name 15 "color" Name 18 "x" Name 21 "tex_coord" Name 30 "y" Name 36 "radius" Name 59 "gl_FragColor" Decorate 21(tex_coord) Location 0 Decorate 59(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 1065353216 11: 7(fvec4) ConstantComposite 10 10 10 10 13: 6(float) Constant 1045220557 14: 7(fvec4) ConstantComposite 13 13 13 13 17: TypePointer Function 6(float) 19: TypeVector 6(float) 2 20: TypePointer Input 19(fvec2) 21(tex_coord): 20(ptr) Variable Input 22: TypeInt 32 0 23: 22(int) Constant 0 24: TypePointer Input 6(float) 27: 6(float) Constant 1073741824 31: 22(int) Constant 1 46: TypeBool 51: 6(float) Constant 1066192077 58: TypePointer Output 7(fvec4) 59(gl_FragColor): 58(ptr) Variable Output 62: 6(float) Constant 1067030938 71: 6(float) Constant 1061158912 76: 6(float) Constant 1098907648 4(main): 2 Function None 3 5: Label 9(white): 8(ptr) Variable Function 12(black): 8(ptr) Variable Function 15(color): 8(ptr) Variable Function 18(x): 17(ptr) Variable Function 30(y): 17(ptr) Variable Function 36(radius): 17(ptr) Variable Function Store 9(white) 11 Store 12(black) 14 16: 7(fvec4) Load 9(white) Store 15(color) 16 25: 24(ptr) AccessChain 21(tex_coord) 23 26: 6(float) Load 25 28: 6(float) FMul 26 27 29: 6(float) FSub 28 10 Store 18(x) 29 32: 24(ptr) AccessChain 21(tex_coord) 31 33: 6(float) Load 32 34: 6(float) FMul 33 27 35: 6(float) FSub 34 10 Store 30(y) 35 37: 6(float) Load 18(x) 38: 6(float) Load 18(x) 39: 6(float) FMul 37 38 40: 6(float) Load 30(y) 41: 6(float) Load 30(y) 42: 6(float) FMul 40 41 43: 6(float) FAdd 39 42 44: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 43 Store 36(radius) 44 45: 6(float) Load 36(radius) 47: 46(bool) FOrdGreaterThan 45 10 SelectionMerge 49 None BranchConditional 47 48 49 48: Label 50: 6(float) Load 36(radius) 52: 46(bool) FOrdGreaterThan 50 51 SelectionMerge 54 None BranchConditional 52 53 54 53: Label 55: 7(fvec4) Load 15(color) 56: 7(fvec4) CompositeConstruct 10 10 10 10 57: 7(fvec4) FAdd 55 56 Store 15(color) 57 Branch 54 54: Label 60: 7(fvec4) Load 15(color) Store 59(gl_FragColor) 60 61: 6(float) Load 36(radius) 63: 46(bool) FOrdGreaterThan 61 62 SelectionMerge 65 None BranchConditional 63 64 65 64: Label 66: 7(fvec4) Load 15(color) 67: 7(fvec4) CompositeConstruct 10 10 10 10 68: 7(fvec4) FAdd 66 67 Store 15(color) 68 Branch 65 65: Label Branch 49 49: Label Kill FunctionEnd glslang-16.0.0/Test/baseResults/spv.always-discard2.frag.out000066400000000000000000000056761506534232700237340ustar00rootroot00000000000000spv.always-discard2.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 21 38 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "white" Name 12 "black" Name 15 "color" Name 18 "x" Name 21 "tex_coord" Name 30 "y" Name 38 "gl_FragColor" Decorate 21(tex_coord) Location 0 Decorate 38(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 1065353216 11: 7(fvec4) ConstantComposite 10 10 10 10 13: 6(float) Constant 1045220557 14: 7(fvec4) ConstantComposite 13 13 13 13 17: TypePointer Function 6(float) 19: TypeVector 6(float) 2 20: TypePointer Input 19(fvec2) 21(tex_coord): 20(ptr) Variable Input 22: TypeInt 32 0 23: 22(int) Constant 0 24: TypePointer Input 6(float) 27: 6(float) Constant 1073741824 31: 22(int) Constant 1 37: TypePointer Output 7(fvec4) 38(gl_FragColor): 37(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(white): 8(ptr) Variable Function 12(black): 8(ptr) Variable Function 15(color): 8(ptr) Variable Function 18(x): 17(ptr) Variable Function 30(y): 17(ptr) Variable Function Store 9(white) 11 Store 12(black) 14 16: 7(fvec4) Load 9(white) Store 15(color) 16 25: 24(ptr) AccessChain 21(tex_coord) 23 26: 6(float) Load 25 28: 6(float) FMul 26 27 29: 6(float) FSub 28 10 Store 18(x) 29 32: 24(ptr) AccessChain 21(tex_coord) 31 33: 6(float) Load 32 34: 6(float) FMul 33 27 35: 6(float) FSub 34 10 Store 30(y) 35 Kill FunctionEnd glslang-16.0.0/Test/baseResults/spv.arbPostDepthCoverage.frag.out000066400000000000000000000041241506534232700250010ustar00rootroot00000000000000spv.arbPostDepthCoverage.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader Capability SampleMaskPostDepthCoverage Extension "SPV_KHR_post_depth_coverage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 13 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 EarlyFragmentTests ExecutionMode 4 PostDepthCoverage Source GLSL 450 SourceExtension "GL_ARB_post_depth_coverage" SourceExtension "GL_EXT_post_depth_coverage" Name 4 "main" Name 8 "readSampleMaskIn" Name 13 "gl_SampleMaskIn" Decorate 8(readSampleMaskIn) Location 0 Decorate 13(gl_SampleMaskIn) BuiltIn SampleMask Decorate 13(gl_SampleMaskIn) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(readSampleMaskIn): 7(ptr) Variable Output 9: TypeInt 32 0 10: 9(int) Constant 1 11: TypeArray 6(int) 10 12: TypePointer Input 11 13(gl_SampleMaskIn): 12(ptr) Variable Input 14: 6(int) Constant 0 15: TypePointer Input 6(int) 4(main): 2 Function None 3 5: Label 16: 15(ptr) AccessChain 13(gl_SampleMaskIn) 14 17: 6(int) Load 16 Store 8(readSampleMaskIn) 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.arbPostDepthCoverage_Error.frag.out000066400000000000000000000004471506534232700261560ustar00rootroot00000000000000spv.arbPostDepthCoverage_Error.frag ERROR: 0:7: 'early_fragment_tests' : can only apply to a standalone qualifier ERROR: 0:7: 'post_depth_coverage' : can only apply to a standalone qualifier ERROR: 2 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.atomiAddEXT.error.mesh.out000066400000000000000000000005341506534232700241770ustar00rootroot00000000000000spv.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 glslang-16.0.0/Test/baseResults/spv.atomiAddEXT.task.out000066400000000000000000000071531506534232700230610ustar00rootroot00000000000000spv.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" Decorate 7(Buffer) Block MemberDecorate 7(Buffer) 0 Coherent MemberDecorate 7(Buffer) 0 Offset 0 Decorate 9 Coherent Decorate 9 Binding 1 Decorate 9 DescriptorSet 0 Decorate 19 ArrayStride 4 MemberDecorate 20(structType) 0 Offset 0 Decorate 21(t2) Block MemberDecorate 21(t2) 0 Offset 0 Decorate 23(t) Binding 0 Decorate 23(t) DescriptorSet 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 glslang-16.0.0/Test/baseResults/spv.atomic.comp.out000066400000000000000000000147161506534232700222310ustar00rootroot00000000000000spv.atomic.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 74 Capability Shader Capability AtomicStorage 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 Name 4 "main" Name 10 "func(au1;" Name 9 "c" Name 12 "atoms(" Name 20 "counter" Name 23 "val" Name 27 "countArr" Name 37 "origi" Name 39 "atomi" Name 42 "origu" Name 44 "atomu" Name 45 "value" Name 62 "dataSSB" MemberName 62(dataSSB) 0 "f" MemberName 62(dataSSB) 1 "n_frames_rendered" Name 64 "result" Name 71 "arrX" Name 72 "arrY" Name 73 "arrZ" Decorate 20(counter) Binding 0 Decorate 20(counter) DescriptorSet 0 Decorate 20(counter) Offset 0 Decorate 27(countArr) Binding 0 Decorate 27(countArr) DescriptorSet 0 Decorate 27(countArr) Offset 4 Decorate 62(dataSSB) BufferBlock MemberDecorate 62(dataSSB) 0 Restrict MemberDecorate 62(dataSSB) 0 Offset 0 MemberDecorate 62(dataSSB) 1 Restrict MemberDecorate 62(dataSSB) 1 Offset 16 Decorate 64(result) Restrict Decorate 64(result) Binding 0 Decorate 64(result) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer AtomicCounter 6(int) 8: TypeFunction 6(int) 7(ptr) 14: 6(int) Constant 1 15: 6(int) Constant 0 19: 6(int) Constant 1032 20(counter): 7(ptr) Variable AtomicCounter 22: TypePointer Function 6(int) 24: 6(int) Constant 4 25: TypeArray 6(int) 24 26: TypePointer AtomicCounter 25 27(countArr): 26(ptr) Variable AtomicCounter 28: TypeInt 32 1 29: 28(int) Constant 2 33: 28(int) Constant 1 36: TypePointer Function 28(int) 38: TypePointer Workgroup 28(int) 39(atomi): 38(ptr) Variable Workgroup 40: 28(int) Constant 3 43: TypePointer Workgroup 6(int) 44(atomu): 43(ptr) Variable Workgroup 45(value): 43(ptr) Variable Workgroup 48: 6(int) Constant 7 53: 28(int) Constant 7 57: 6(int) Constant 10 60: TypeFloat 32 61: TypeVector 28(int) 4 62(dataSSB): TypeStruct 60(float) 61(ivec4) 63: TypePointer Uniform 62(dataSSB) 64(result): 63(ptr) Variable Uniform 65: 6(int) Constant 2 66: TypePointer Uniform 28(int) 69: TypeArray 28(int) 14 70: TypePointer Private 69 71(arrX): 70(ptr) Variable Private 72(arrY): 70(ptr) Variable Private 73(arrZ): 70(ptr) Variable Private 4(main): 2 Function None 3 5: Label 23(val): 22(ptr) Variable Function MemoryBarrier 14 19 21: 6(int) FunctionCall 10(func(au1;) 20(counter) 30: 7(ptr) AccessChain 27(countArr) 29 31: 6(int) AtomicLoad 30 14 15 Store 23(val) 31 32: 6(int) AtomicIDecrement 20(counter) 14 15 34: 6(int) ISub 32 33 35: 6(int) AtomicIIncrement 20(counter) 14 15 Return FunctionEnd 10(func(au1;): 6(int) Function None 8 9(c): 7(ptr) FunctionParameter 11: Label 16: 6(int) AtomicIIncrement 9(c) 14 15 ReturnValue 16 FunctionEnd 12(atoms(): 2 Function None 3 13: Label 37(origi): 36(ptr) Variable Function 42(origu): 22(ptr) Variable Function 41: 28(int) AtomicIAdd 39(atomi) 14 15 40 Store 37(origi) 41 46: 6(int) Load 45(value) 47: 6(int) AtomicAnd 44(atomu) 14 15 46 Store 42(origu) 47 49: 6(int) AtomicOr 44(atomu) 14 15 48 Store 42(origu) 49 50: 6(int) AtomicXor 44(atomu) 14 15 48 Store 42(origu) 50 51: 6(int) Load 45(value) 52: 6(int) AtomicUMin 44(atomu) 14 15 51 Store 42(origu) 52 54: 28(int) AtomicSMax 39(atomi) 14 15 53 Store 37(origi) 54 55: 28(int) Load 37(origi) 56: 28(int) AtomicExchange 39(atomi) 14 15 55 Store 37(origi) 56 58: 6(int) Load 45(value) 59: 6(int) AtomicCompareExchange 44(atomu) 14 15 15 58 57 Store 42(origu) 59 67: 66(ptr) AccessChain 64(result) 33 65 68: 28(int) AtomicIAdd 67 14 15 33 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.atomicAdd.bufferReference.comp.out000066400000000000000000000376351506534232700257360ustar00rootroot00000000000000spv.atomicAdd.bufferReference.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 188 Capability Shader Capability VulkanMemoryModelKHR Capability VulkanMemoryModelDeviceScopeKHR Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint GLCompute 4 "main" 37 81 133 ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_KHR_shader_subgroup_ballot" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_shuffle" Name 4 "main" Name 8 "pass" Name 10 "skip" Name 13 "sharedSkip" Name 18 "PayloadRef" MemberName 18(PayloadRef) 0 "x" Name 20 "payload" Name 22 "PC" MemberName 22(PC) 0 "payloadref" MemberName 22(PC) 1 "guard" Name 24 "GuardRef" MemberName 24(GuardRef) 0 "x" Name 26 "" Name 34 "globalId" Name 37 "gl_GlobalInvocationID" Name 42 "partnerGlobalId" Name 43 "DIM" Name 44 "NUM_WORKGROUP_EACH_DIM" Name 54 "bufferCoord" Name 66 "partnerBufferCoord" Name 75 "imageCoord" Name 77 "partnerImageCoord" Name 79 "globalId00" Name 81 "gl_WorkGroupID" Name 86 "partnerGlobalId00" Name 95 "bufferCoord00" Name 104 "partnerBufferCoord00" Name 113 "imageCoord00" Name 115 "partnerImageCoord00" Name 133 "gl_LocalInvocationID" Name 163 "r" Name 179 "Fail" MemberName 179(Fail) 0 "x" Name 181 "fail" Decorate 17 ArrayStride 4 Decorate 18(PayloadRef) Block MemberDecorate 18(PayloadRef) 0 Offset 0 Decorate 20(payload) DecorationAliasedPointerEXT Decorate 22(PC) Block MemberDecorate 22(PC) 0 Offset 0 MemberDecorate 22(PC) 1 Offset 8 Decorate 23 ArrayStride 4 Decorate 24(GuardRef) Block MemberDecorate 24(GuardRef) 0 Offset 0 Decorate 37(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 43(DIM) SpecId 0 Decorate 44(NUM_WORKGROUP_EACH_DIM) SpecId 1 Decorate 81(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 133(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 178 ArrayStride 4 Decorate 179(Fail) Block MemberDecorate 179(Fail) 0 Offset 0 Decorate 181(fail) Binding 2 Decorate 181(fail) DescriptorSet 0 Decorate 185 SpecId 0 Decorate 186 SpecId 0 Decorate 187 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 9: 6(bool) ConstantTrue 11: 6(bool) ConstantFalse 12: TypePointer Workgroup 6(bool) 13(sharedSkip): 12(ptr) Variable Workgroup 14: TypeInt 32 0 15: 14(int) Constant 2 TypeForwardPointer 16 PhysicalStorageBufferEXT 17: TypeRuntimeArray 14(int) 18(PayloadRef): TypeStruct 17 16: TypePointer PhysicalStorageBufferEXT 18(PayloadRef) 19: TypePointer Function 16(ptr) TypeForwardPointer 21 PhysicalStorageBufferEXT 22(PC): TypeStruct 16(ptr) 21 23: TypeRuntimeArray 14(int) 24(GuardRef): TypeStruct 23 21: TypePointer PhysicalStorageBufferEXT 24(GuardRef) 25: TypePointer PushConstant 22(PC) 26: 25(ptr) Variable PushConstant 27: TypeInt 32 1 28: 27(int) Constant 0 29: TypePointer PushConstant 16(ptr) 32: TypeVector 27(int) 2 33: TypePointer Function 32(ivec2) 35: TypeVector 14(int) 3 36: TypePointer Input 35(ivec3) 37(gl_GlobalInvocationID): 36(ptr) Variable Input 38: TypeVector 14(int) 2 43(DIM): 27(int) SpecConstant 1 44(NUM_WORKGROUP_EACH_DIM): 27(int) SpecConstant 1 45: 27(int) SpecConstantOp 132 43(DIM) 44(NUM_WORKGROUP_EACH_DIM) 46: 27(int) Constant 1 47: 27(int) SpecConstantOp 130 45 46 48: 32(ivec2) SpecConstantComposite 47 47 53: TypePointer Function 14(int) 55: 14(int) Constant 1 56: TypePointer Function 27(int) 61: 14(int) Constant 0 80: 32(ivec2) SpecConstantComposite 43(DIM) 43(DIM) 81(gl_WorkGroupID): 36(ptr) Variable Input 87: 32(ivec2) SpecConstantComposite 43(DIM) 43(DIM) 88: 27(int) SpecConstantOp 130 44(NUM_WORKGROUP_EACH_DIM) 46 89: 32(ivec2) SpecConstantComposite 88 88 122: TypePointer PhysicalStorageBufferEXT 14(int) 125: 27(int) Constant 31 129: 27(int) Constant 2 130: 27(int) Constant 320 131: 27(int) Constant 8200 132: 14(int) Constant 8520 133(gl_LocalInvocationID): 36(ptr) Variable Input 136: 38(ivec2) ConstantComposite 61 61 137: TypeVector 6(bool) 2 142: TypePointer PushConstant 21(ptr) 147: 27(int) Constant 64 148: 27(int) Constant 8196 149: 14(int) Constant 5 150: 14(int) Constant 8260 155: 27(int) Constant 16386 156: 14(int) Constant 16450 160: 27(int) Constant 16392 161: 14(int) Constant 16712 178: TypeRuntimeArray 14(int) 179(Fail): TypeStruct 178 180: TypePointer StorageBuffer 179(Fail) 181(fail): 180(ptr) Variable StorageBuffer 183: TypePointer StorageBuffer 14(int) 185: 14(int) SpecConstant 1 186: 14(int) SpecConstant 1 187: 35(ivec3) SpecConstantComposite 185 186 55 4(main): 2 Function None 3 5: Label 8(pass): 7(ptr) Variable Function 10(skip): 7(ptr) Variable Function 20(payload): 19(ptr) Variable Function 34(globalId): 33(ptr) Variable Function 42(partnerGlobalId): 33(ptr) Variable Function 54(bufferCoord): 53(ptr) Variable Function 66(partnerBufferCoord): 53(ptr) Variable Function 75(imageCoord): 33(ptr) Variable Function 77(partnerImageCoord): 33(ptr) Variable Function 79(globalId00): 33(ptr) Variable Function 86(partnerGlobalId00): 33(ptr) Variable Function 95(bufferCoord00): 53(ptr) Variable Function 104(partnerBufferCoord00): 53(ptr) Variable Function 113(imageCoord00): 33(ptr) Variable Function 115(partnerImageCoord00): 33(ptr) Variable Function 163(r): 53(ptr) Variable Function Store 8(pass) 9 Store 10(skip) 11 Store 13(sharedSkip) 11 MakePointerAvailableKHR NonPrivatePointerKHR 15 30: 29(ptr) AccessChain 26 28 31: 16(ptr) Load 30 Store 20(payload) 31 39: 35(ivec3) Load 37(gl_GlobalInvocationID) 40: 38(ivec2) VectorShuffle 39 39 0 1 41: 32(ivec2) Bitcast 40 Store 34(globalId) 41 49: 35(ivec3) Load 37(gl_GlobalInvocationID) 50: 38(ivec2) VectorShuffle 49 49 0 1 51: 32(ivec2) Bitcast 50 52: 32(ivec2) ISub 48 51 Store 42(partnerGlobalId) 52 57: 56(ptr) AccessChain 34(globalId) 55 58: 27(int) Load 57 59: 27(int) IMul 58 43(DIM) 60: 27(int) IMul 59 44(NUM_WORKGROUP_EACH_DIM) 62: 56(ptr) AccessChain 34(globalId) 61 63: 27(int) Load 62 64: 27(int) IAdd 60 63 65: 14(int) Bitcast 64 Store 54(bufferCoord) 65 67: 56(ptr) AccessChain 42(partnerGlobalId) 55 68: 27(int) Load 67 69: 27(int) IMul 68 43(DIM) 70: 27(int) IMul 69 44(NUM_WORKGROUP_EACH_DIM) 71: 56(ptr) AccessChain 42(partnerGlobalId) 61 72: 27(int) Load 71 73: 27(int) IAdd 70 72 74: 14(int) Bitcast 73 Store 66(partnerBufferCoord) 74 76: 32(ivec2) Load 34(globalId) Store 75(imageCoord) 76 78: 32(ivec2) Load 42(partnerGlobalId) Store 77(partnerImageCoord) 78 82: 35(ivec3) Load 81(gl_WorkGroupID) 83: 38(ivec2) VectorShuffle 82 82 0 1 84: 32(ivec2) Bitcast 83 85: 32(ivec2) IMul 80 84 Store 79(globalId00) 85 90: 35(ivec3) Load 81(gl_WorkGroupID) 91: 38(ivec2) VectorShuffle 90 90 0 1 92: 32(ivec2) Bitcast 91 93: 32(ivec2) ISub 89 92 94: 32(ivec2) IMul 87 93 Store 86(partnerGlobalId00) 94 96: 56(ptr) AccessChain 79(globalId00) 55 97: 27(int) Load 96 98: 27(int) IMul 97 43(DIM) 99: 27(int) IMul 98 44(NUM_WORKGROUP_EACH_DIM) 100: 56(ptr) AccessChain 79(globalId00) 61 101: 27(int) Load 100 102: 27(int) IAdd 99 101 103: 14(int) Bitcast 102 Store 95(bufferCoord00) 103 105: 56(ptr) AccessChain 86(partnerGlobalId00) 55 106: 27(int) Load 105 107: 27(int) IMul 106 43(DIM) 108: 27(int) IMul 107 44(NUM_WORKGROUP_EACH_DIM) 109: 56(ptr) AccessChain 86(partnerGlobalId00) 61 110: 27(int) Load 109 111: 27(int) IAdd 108 110 112: 14(int) Bitcast 111 Store 104(partnerBufferCoord00) 112 114: 32(ivec2) Load 79(globalId00) Store 113(imageCoord00) 114 116: 32(ivec2) Load 86(partnerGlobalId00) Store 115(partnerImageCoord00) 116 117: 16(ptr) Load 20(payload) 118: 14(int) Load 54(bufferCoord) 119: 14(int) Load 54(bufferCoord) 120: 16(ptr) Load 20(payload) 121: 14(int) Load 66(partnerBufferCoord) 123: 122(ptr) AccessChain 120 28 121 124: 14(int) Load 123 Aligned NonPrivatePointerKHR 4 126: 14(int) ShiftRightLogical 124 125 127: 14(int) IAdd 119 126 128: 122(ptr) AccessChain 117 28 118 Store 128 127 Aligned NonPrivatePointerKHR 4 ControlBarrier 15 15 132 134: 35(ivec3) Load 133(gl_LocalInvocationID) 135: 38(ivec2) VectorShuffle 134 134 0 1 138: 137(bvec2) IEqual 135 136 139: 6(bool) All 138 SelectionMerge 141 None BranchConditional 139 140 141 140: Label 143: 142(ptr) AccessChain 26 46 144: 21(ptr) Load 143 145: 14(int) Load 54(bufferCoord) 146: 122(ptr) AccessChain 144 28 145 AtomicStore 146 46 150 55 151: 142(ptr) AccessChain 26 46 152: 21(ptr) Load 151 153: 14(int) Load 104(partnerBufferCoord00) 154: 122(ptr) AccessChain 152 28 153 157: 14(int) AtomicLoad 154 46 156 158: 6(bool) IEqual 157 61 Store 10(skip) 158 159: 6(bool) Load 10(skip) Store 13(sharedSkip) 159 MakePointerAvailableKHR NonPrivatePointerKHR 15 Branch 141 141: Label ControlBarrier 15 15 161 162: 6(bool) Load 13(sharedSkip) MakePointerVisibleKHR NonPrivatePointerKHR 15 Store 10(skip) 162 164: 16(ptr) Load 20(payload) 165: 14(int) Load 66(partnerBufferCoord) 166: 122(ptr) AccessChain 164 28 165 167: 14(int) Load 166 Aligned NonPrivatePointerKHR 4 Store 163(r) 167 168: 6(bool) Load 10(skip) 169: 6(bool) LogicalNot 168 SelectionMerge 171 None BranchConditional 169 170 171 170: Label 172: 14(int) Load 163(r) 173: 14(int) Load 66(partnerBufferCoord) 174: 6(bool) INotEqual 172 173 Branch 171 171: Label 175: 6(bool) Phi 169 141 174 170 SelectionMerge 177 None BranchConditional 175 176 177 176: Label 182: 14(int) Load 54(bufferCoord) 184: 183(ptr) AccessChain 181(fail) 28 182 Store 184 55 Branch 177 177: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.atomicCounter.comp.out000066400000000000000000000016341506534232700235640ustar00rootroot00000000000000spv.atomicCounter.comp ERROR: 0:5: 'atomic counter types' : not allowed when using GLSL for Vulkan ERROR: 0:7: 'atomic counter types' : not allowed when using GLSL for Vulkan ERROR: 0:14: 'atomic counter types' : not allowed when using GLSL for Vulkan ERROR: 0:16: 'atomicCounterIncrement' : no matching overloaded function found ERROR: 0:16: 'return' : type does not match, or is not convertible to, the function's return type ERROR: 0:21: 'memoryBarrierAtomicCounter' : no matching overloaded function found ERROR: 0:23: 'atomicCounter' : no matching overloaded function found ERROR: 0:23: '=' : cannot convert from ' const float' to ' temp highp uint' ERROR: 0:24: 'atomicCounterDecrement' : no matching overloaded function found ERROR: 0:25: 'atomicCounterIncrement' : no matching overloaded function found ERROR: 10 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.atomicFloat.comp.out000066400000000000000000001113521506534232700232110ustar00rootroot00000000000000spv.atomicFloat.comp Validation failed // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 476 Capability Shader Capability Float64 Capability ImageCubeArray Capability ImageRect Capability Image1D Capability VulkanMemoryModelKHR Capability VulkanMemoryModelDeviceScopeKHR Capability AtomicFloat32AddEXT Capability AtomicFloat64AddEXT Extension "SPV_EXT_shader_atomic_float_add" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 16 16 1 Source GLSL 450 SourceExtension "GL_EXT_shader_atomic_float" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 8 "resultf" Name 11 "atomf" Name 25 "Buffer" MemberName 25(Buffer) 0 "dataf" MemberName 25(Buffer) 1 "datad" Name 27 "buf" Name 35 "resultd" Name 38 "atomd" Name 148 "fimage1D" Name 195 "fimage1DArray" Name 238 "fimage2D" Name 276 "fimage2DRect" Name 314 "fimage2DArray" Name 358 "fimageCube" Name 398 "fimageCubeArray" Name 436 "fimage3D" Decorate 25(Buffer) Block MemberDecorate 25(Buffer) 0 Offset 0 MemberDecorate 25(Buffer) 1 Offset 8 Decorate 27(buf) Binding 0 Decorate 27(buf) DescriptorSet 0 Decorate 148(fimage1D) Binding 0 Decorate 148(fimage1D) DescriptorSet 0 Decorate 195(fimage1DArray) Binding 1 Decorate 195(fimage1DArray) DescriptorSet 0 Decorate 238(fimage2D) Binding 2 Decorate 238(fimage2D) DescriptorSet 0 Decorate 276(fimage2DRect) Binding 4 Decorate 276(fimage2DRect) DescriptorSet 0 Decorate 314(fimage2DArray) Binding 3 Decorate 314(fimage2DArray) DescriptorSet 0 Decorate 358(fimageCube) Binding 5 Decorate 358(fimageCube) DescriptorSet 0 Decorate 398(fimageCubeArray) Binding 6 Decorate 398(fimageCubeArray) DescriptorSet 0 Decorate 436(fimage3D) Binding 9 Decorate 436(fimage3D) DescriptorSet 0 Decorate 475 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: 6(float) Constant 0 10: TypePointer Workgroup 6(float) 11(atomf): 10(ptr) Variable Workgroup 12: 6(float) Constant 1077936128 13: TypeInt 32 0 14: 13(int) Constant 5 15: 13(int) Constant 0 17: 6(float) Constant 1083179008 18: TypeInt 32 1 19: 18(int) Constant 1 20: 18(int) Constant 64 21: 18(int) Constant 8 22: 13(int) Constant 72 24: TypeFloat 64 25(Buffer): TypeStruct 6(float) 24(float64_t) 26: TypePointer StorageBuffer 25(Buffer) 27(buf): 26(ptr) Variable StorageBuffer 28: 18(int) Constant 0 29: TypePointer StorageBuffer 6(float) 34: TypePointer Function 24(float64_t) 36:24(float64_t) Constant 0 0 37: TypePointer Workgroup 24(float64_t) 38(atomd): 37(ptr) Variable Workgroup 39:24(float64_t) Constant 0 1074266112 41:24(float64_t) Constant 0 1074921472 43: TypePointer StorageBuffer 24(float64_t) 58: 18(int) Constant 256 59: 13(int) Constant 264 111: 18(int) Constant 2 112: 13(int) Constant 258 116: 18(int) Constant 4 117: 13(int) Constant 260 146: TypeImage 6(float) 1D nonsampled format:R32f 147: TypePointer UniformConstant 146 148(fimage1D): 147(ptr) Variable UniformConstant 149: 6(float) Constant 1073741824 150: TypePointer Image 6(float) 152: 13(int) Constant 32768 154: 13(int) Constant 2 160: 18(int) Constant 2048 162: 13(int) Constant 2056 169: 6(float) Constant 1082130432 178: 13(int) Constant 2050 187: 13(int) Constant 2052 193: TypeImage 6(float) 1D array nonsampled format:R32f 194: TypePointer UniformConstant 193 195(fimage1DArray): 194(ptr) Variable UniformConstant 196: TypeVector 18(int) 2 197: 196(ivec2) ConstantComposite 28 28 205: 196(ivec2) ConstantComposite 19 19 213: 196(ivec2) ConstantComposite 19 28 228: 196(ivec2) ConstantComposite 111 111 236: TypeImage 6(float) 2D nonsampled format:R32f 237: TypePointer UniformConstant 236 238(fimage2D): 237(ptr) Variable UniformConstant 274: TypeImage 6(float) Rect nonsampled format:R32f 275: TypePointer UniformConstant 274 276(fimage2DRect): 275(ptr) Variable UniformConstant 312: TypeImage 6(float) 2D array nonsampled format:R32f 313: TypePointer UniformConstant 312 314(fimage2DArray): 313(ptr) Variable UniformConstant 315: TypeVector 18(int) 3 316: 315(ivec3) ConstantComposite 28 28 28 324: 315(ivec3) ConstantComposite 19 19 28 332: 315(ivec3) ConstantComposite 19 28 19 340: 315(ivec3) ConstantComposite 19 19 19 348: 315(ivec3) ConstantComposite 111 111 28 356: TypeImage 6(float) Cube nonsampled format:R32f 357: TypePointer UniformConstant 356 358(fimageCube): 357(ptr) Variable UniformConstant 373: 315(ivec3) ConstantComposite 19 28 28 388: 315(ivec3) ConstantComposite 111 111 19 396: TypeImage 6(float) Cube array nonsampled format:R32f 397: TypePointer UniformConstant 396 398(fimageCubeArray): 397(ptr) Variable UniformConstant 434: TypeImage 6(float) 3D nonsampled format:R32f 435: TypePointer UniformConstant 434 436(fimage3D): 435(ptr) Variable UniformConstant 472: TypeVector 13(int) 3 473: 13(int) Constant 16 474: 13(int) Constant 1 475: 472(ivec3) ConstantComposite 473 473 474 4(main): 2 Function None 3 5: Label 8(resultf): 7(ptr) Variable Function 35(resultd): 34(ptr) Variable Function Store 8(resultf) 9 16: 6(float) AtomicFAddEXT 11(atomf) 14 15 12 Store 8(resultf) 16 23: 6(float) AtomicFAddEXT 11(atomf) 19 22 17 Store 8(resultf) 23 30: 29(ptr) AccessChain 27(buf) 28 31: 6(float) AtomicFAddEXT 30 14 15 12 Store 8(resultf) 31 32: 29(ptr) AccessChain 27(buf) 28 33: 6(float) AtomicFAddEXT 32 19 22 17 Store 8(resultf) 33 Store 35(resultd) 36 40:24(float64_t) AtomicFAddEXT 38(atomd) 14 15 39 Store 35(resultd) 40 42:24(float64_t) AtomicFAddEXT 38(atomd) 19 22 41 Store 35(resultd) 42 44: 43(ptr) AccessChain 27(buf) 19 45:24(float64_t) AtomicFAddEXT 44 14 15 39 Store 35(resultd) 45 46: 43(ptr) AccessChain 27(buf) 19 47:24(float64_t) AtomicFAddEXT 46 19 22 41 Store 35(resultd) 47 48: 29(ptr) AccessChain 27(buf) 28 49: 6(float) Load 8(resultf) 50: 6(float) AtomicExchange 48 14 15 49 Store 8(resultf) 50 51: 6(float) Load 8(resultf) 52: 29(ptr) AccessChain 27(buf) 28 53: 6(float) Load 52 54: 6(float) FAdd 53 51 55: 29(ptr) AccessChain 27(buf) 28 Store 55 54 56: 29(ptr) AccessChain 27(buf) 28 57: 6(float) Load 8(resultf) 60: 6(float) AtomicExchange 56 19 59 57 Store 8(resultf) 60 61: 6(float) Load 8(resultf) 62: 29(ptr) AccessChain 27(buf) 28 63: 6(float) Load 62 64: 6(float) FAdd 63 61 65: 29(ptr) AccessChain 27(buf) 28 Store 65 64 66: 6(float) Load 8(resultf) 67: 6(float) AtomicExchange 11(atomf) 14 15 66 Store 8(resultf) 67 68: 6(float) Load 8(resultf) 69: 29(ptr) AccessChain 27(buf) 28 70: 6(float) Load 69 71: 6(float) FAdd 70 68 72: 29(ptr) AccessChain 27(buf) 28 Store 72 71 73: 6(float) Load 8(resultf) 74: 6(float) AtomicExchange 11(atomf) 19 59 73 Store 8(resultf) 74 75: 6(float) Load 8(resultf) 76: 29(ptr) AccessChain 27(buf) 28 77: 6(float) Load 76 78: 6(float) FAdd 77 75 79: 29(ptr) AccessChain 27(buf) 28 Store 79 78 80: 43(ptr) AccessChain 27(buf) 19 81:24(float64_t) Load 35(resultd) 82:24(float64_t) AtomicExchange 80 14 15 81 Store 35(resultd) 82 83:24(float64_t) Load 35(resultd) 84: 43(ptr) AccessChain 27(buf) 19 85:24(float64_t) Load 84 86:24(float64_t) FAdd 85 83 87: 43(ptr) AccessChain 27(buf) 19 Store 87 86 88: 43(ptr) AccessChain 27(buf) 19 89:24(float64_t) Load 35(resultd) 90:24(float64_t) AtomicExchange 88 19 59 89 Store 35(resultd) 90 91:24(float64_t) Load 35(resultd) 92: 43(ptr) AccessChain 27(buf) 19 93:24(float64_t) Load 92 94:24(float64_t) FAdd 93 91 95: 43(ptr) AccessChain 27(buf) 19 Store 95 94 96:24(float64_t) Load 35(resultd) 97:24(float64_t) AtomicExchange 38(atomd) 14 15 96 Store 35(resultd) 97 98:24(float64_t) Load 35(resultd) 99: 43(ptr) AccessChain 27(buf) 19 100:24(float64_t) Load 99 101:24(float64_t) FAdd 100 98 102: 43(ptr) AccessChain 27(buf) 19 Store 102 101 103:24(float64_t) Load 35(resultd) 104:24(float64_t) AtomicExchange 38(atomd) 19 59 103 Store 35(resultd) 104 105:24(float64_t) Load 35(resultd) 106: 43(ptr) AccessChain 27(buf) 19 107:24(float64_t) Load 106 108:24(float64_t) FAdd 107 105 109: 43(ptr) AccessChain 27(buf) 19 Store 109 108 110: 29(ptr) AccessChain 27(buf) 28 113: 6(float) AtomicLoad 110 19 112 Store 8(resultf) 113 114: 29(ptr) AccessChain 27(buf) 28 115: 6(float) Load 8(resultf) AtomicStore 114 19 117 115 118: 6(float) Load 8(resultf) 119: 29(ptr) AccessChain 27(buf) 28 120: 6(float) Load 119 121: 6(float) FAdd 120 118 122: 29(ptr) AccessChain 27(buf) 28 Store 122 121 123: 6(float) AtomicLoad 11(atomf) 19 112 Store 8(resultf) 123 124: 6(float) Load 8(resultf) AtomicStore 11(atomf) 19 117 124 125: 6(float) Load 8(resultf) 126: 29(ptr) AccessChain 27(buf) 28 127: 6(float) Load 126 128: 6(float) FAdd 127 125 129: 29(ptr) AccessChain 27(buf) 28 Store 129 128 130: 43(ptr) AccessChain 27(buf) 19 131:24(float64_t) AtomicLoad 130 19 112 Store 35(resultd) 131 132: 43(ptr) AccessChain 27(buf) 19 133:24(float64_t) Load 35(resultd) AtomicStore 132 19 117 133 134:24(float64_t) Load 35(resultd) 135: 43(ptr) AccessChain 27(buf) 19 136:24(float64_t) Load 135 137:24(float64_t) FAdd 136 134 138: 43(ptr) AccessChain 27(buf) 19 Store 138 137 139:24(float64_t) AtomicLoad 38(atomd) 19 112 Store 35(resultd) 139 140:24(float64_t) Load 35(resultd) AtomicStore 38(atomd) 19 117 140 141:24(float64_t) Load 35(resultd) 142: 43(ptr) AccessChain 27(buf) 19 143:24(float64_t) Load 142 144:24(float64_t) FAdd 143 141 145: 43(ptr) AccessChain 27(buf) 19 Store 145 144 151: 150(ptr) ImageTexelPointer 148(fimage1D) 28 15 153: 6(float) AtomicFAddEXT 151 14 152 149 Store 11(atomf) 153 MakePointerAvailableKHR NonPrivatePointerKHR 154 155: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 156: 29(ptr) AccessChain 27(buf) 28 157: 6(float) Load 156 158: 6(float) FAdd 157 155 159: 29(ptr) AccessChain 27(buf) 28 Store 159 158 161: 150(ptr) ImageTexelPointer 148(fimage1D) 19 15 163: 6(float) AtomicFAddEXT 161 19 162 12 Store 11(atomf) 163 MakePointerAvailableKHR NonPrivatePointerKHR 154 164: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 165: 29(ptr) AccessChain 27(buf) 28 166: 6(float) Load 165 167: 6(float) FAdd 166 164 168: 29(ptr) AccessChain 27(buf) 28 Store 168 167 170: 150(ptr) ImageTexelPointer 148(fimage1D) 19 15 171: 6(float) AtomicExchange 170 19 162 169 Store 11(atomf) 171 MakePointerAvailableKHR NonPrivatePointerKHR 154 172: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 173: 29(ptr) AccessChain 27(buf) 28 174: 6(float) Load 173 175: 6(float) FAdd 174 172 176: 29(ptr) AccessChain 27(buf) 28 Store 176 175 177: 150(ptr) ImageTexelPointer 148(fimage1D) 19 15 179: 6(float) AtomicLoad 177 19 178 Store 11(atomf) 179 MakePointerAvailableKHR NonPrivatePointerKHR 154 180: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 181: 29(ptr) AccessChain 27(buf) 28 182: 6(float) Load 181 183: 6(float) FAdd 182 180 184: 29(ptr) AccessChain 27(buf) 28 Store 184 183 185: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 186: 150(ptr) ImageTexelPointer 148(fimage1D) 111 15 AtomicStore 186 19 187 185 188: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 189: 29(ptr) AccessChain 27(buf) 28 190: 6(float) Load 189 191: 6(float) FAdd 190 188 192: 29(ptr) AccessChain 27(buf) 28 Store 192 191 198: 150(ptr) ImageTexelPointer 195(fimage1DArray) 197 15 199: 6(float) AtomicFAddEXT 198 14 152 149 Store 11(atomf) 199 MakePointerAvailableKHR NonPrivatePointerKHR 154 200: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 201: 29(ptr) AccessChain 27(buf) 28 202: 6(float) Load 201 203: 6(float) FAdd 202 200 204: 29(ptr) AccessChain 27(buf) 28 Store 204 203 206: 150(ptr) ImageTexelPointer 195(fimage1DArray) 205 15 207: 6(float) AtomicFAddEXT 206 19 162 12 Store 11(atomf) 207 MakePointerAvailableKHR NonPrivatePointerKHR 154 208: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 209: 29(ptr) AccessChain 27(buf) 28 210: 6(float) Load 209 211: 6(float) FAdd 210 208 212: 29(ptr) AccessChain 27(buf) 28 Store 212 211 214: 150(ptr) ImageTexelPointer 195(fimage1DArray) 213 15 215: 6(float) AtomicExchange 214 19 162 169 Store 11(atomf) 215 MakePointerAvailableKHR NonPrivatePointerKHR 154 216: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 217: 29(ptr) AccessChain 27(buf) 28 218: 6(float) Load 217 219: 6(float) FAdd 218 216 220: 29(ptr) AccessChain 27(buf) 28 Store 220 219 221: 150(ptr) ImageTexelPointer 195(fimage1DArray) 205 15 222: 6(float) AtomicLoad 221 19 178 Store 11(atomf) 222 MakePointerAvailableKHR NonPrivatePointerKHR 154 223: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 224: 29(ptr) AccessChain 27(buf) 28 225: 6(float) Load 224 226: 6(float) FAdd 225 223 227: 29(ptr) AccessChain 27(buf) 28 Store 227 226 229: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 230: 150(ptr) ImageTexelPointer 195(fimage1DArray) 228 15 AtomicStore 230 19 187 229 231: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 232: 29(ptr) AccessChain 27(buf) 28 233: 6(float) Load 232 234: 6(float) FAdd 233 231 235: 29(ptr) AccessChain 27(buf) 28 Store 235 234 239: 150(ptr) ImageTexelPointer 238(fimage2D) 197 15 240: 6(float) AtomicFAddEXT 239 14 152 149 Store 11(atomf) 240 MakePointerAvailableKHR NonPrivatePointerKHR 154 241: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 242: 29(ptr) AccessChain 27(buf) 28 243: 6(float) Load 242 244: 6(float) FAdd 243 241 245: 29(ptr) AccessChain 27(buf) 28 Store 245 244 246: 150(ptr) ImageTexelPointer 238(fimage2D) 205 15 247: 6(float) AtomicFAddEXT 246 19 162 12 Store 11(atomf) 247 MakePointerAvailableKHR NonPrivatePointerKHR 154 248: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 249: 29(ptr) AccessChain 27(buf) 28 250: 6(float) Load 249 251: 6(float) FAdd 250 248 252: 29(ptr) AccessChain 27(buf) 28 Store 252 251 253: 150(ptr) ImageTexelPointer 238(fimage2D) 213 15 254: 6(float) AtomicExchange 253 19 162 169 Store 11(atomf) 254 MakePointerAvailableKHR NonPrivatePointerKHR 154 255: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 256: 29(ptr) AccessChain 27(buf) 28 257: 6(float) Load 256 258: 6(float) FAdd 257 255 259: 29(ptr) AccessChain 27(buf) 28 Store 259 258 260: 150(ptr) ImageTexelPointer 238(fimage2D) 205 15 261: 6(float) AtomicLoad 260 19 178 Store 11(atomf) 261 MakePointerAvailableKHR NonPrivatePointerKHR 154 262: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 263: 29(ptr) AccessChain 27(buf) 28 264: 6(float) Load 263 265: 6(float) FAdd 264 262 266: 29(ptr) AccessChain 27(buf) 28 Store 266 265 267: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 268: 150(ptr) ImageTexelPointer 238(fimage2D) 228 15 AtomicStore 268 19 187 267 269: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 270: 29(ptr) AccessChain 27(buf) 28 271: 6(float) Load 270 272: 6(float) FAdd 271 269 273: 29(ptr) AccessChain 27(buf) 28 Store 273 272 277: 150(ptr) ImageTexelPointer 276(fimage2DRect) 197 15 278: 6(float) AtomicFAddEXT 277 14 152 149 Store 11(atomf) 278 MakePointerAvailableKHR NonPrivatePointerKHR 154 279: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 280: 29(ptr) AccessChain 27(buf) 28 281: 6(float) Load 280 282: 6(float) FAdd 281 279 283: 29(ptr) AccessChain 27(buf) 28 Store 283 282 284: 150(ptr) ImageTexelPointer 276(fimage2DRect) 205 15 285: 6(float) AtomicFAddEXT 284 19 162 12 Store 11(atomf) 285 MakePointerAvailableKHR NonPrivatePointerKHR 154 286: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 287: 29(ptr) AccessChain 27(buf) 28 288: 6(float) Load 287 289: 6(float) FAdd 288 286 290: 29(ptr) AccessChain 27(buf) 28 Store 290 289 291: 150(ptr) ImageTexelPointer 276(fimage2DRect) 213 15 292: 6(float) AtomicExchange 291 19 162 169 Store 11(atomf) 292 MakePointerAvailableKHR NonPrivatePointerKHR 154 293: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 294: 29(ptr) AccessChain 27(buf) 28 295: 6(float) Load 294 296: 6(float) FAdd 295 293 297: 29(ptr) AccessChain 27(buf) 28 Store 297 296 298: 150(ptr) ImageTexelPointer 276(fimage2DRect) 205 15 299: 6(float) AtomicLoad 298 19 178 Store 11(atomf) 299 MakePointerAvailableKHR NonPrivatePointerKHR 154 300: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 301: 29(ptr) AccessChain 27(buf) 28 302: 6(float) Load 301 303: 6(float) FAdd 302 300 304: 29(ptr) AccessChain 27(buf) 28 Store 304 303 305: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 306: 150(ptr) ImageTexelPointer 276(fimage2DRect) 228 15 AtomicStore 306 19 187 305 307: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 308: 29(ptr) AccessChain 27(buf) 28 309: 6(float) Load 308 310: 6(float) FAdd 309 307 311: 29(ptr) AccessChain 27(buf) 28 Store 311 310 317: 150(ptr) ImageTexelPointer 314(fimage2DArray) 316 15 318: 6(float) AtomicFAddEXT 317 14 152 149 Store 11(atomf) 318 MakePointerAvailableKHR NonPrivatePointerKHR 154 319: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 320: 29(ptr) AccessChain 27(buf) 28 321: 6(float) Load 320 322: 6(float) FAdd 321 319 323: 29(ptr) AccessChain 27(buf) 28 Store 323 322 325: 150(ptr) ImageTexelPointer 314(fimage2DArray) 324 15 326: 6(float) AtomicFAddEXT 325 19 162 12 Store 11(atomf) 326 MakePointerAvailableKHR NonPrivatePointerKHR 154 327: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 328: 29(ptr) AccessChain 27(buf) 28 329: 6(float) Load 328 330: 6(float) FAdd 329 327 331: 29(ptr) AccessChain 27(buf) 28 Store 331 330 333: 150(ptr) ImageTexelPointer 314(fimage2DArray) 332 15 334: 6(float) AtomicExchange 333 19 162 169 Store 11(atomf) 334 MakePointerAvailableKHR NonPrivatePointerKHR 154 335: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 336: 29(ptr) AccessChain 27(buf) 28 337: 6(float) Load 336 338: 6(float) FAdd 337 335 339: 29(ptr) AccessChain 27(buf) 28 Store 339 338 341: 150(ptr) ImageTexelPointer 314(fimage2DArray) 340 15 342: 6(float) AtomicLoad 341 19 178 Store 11(atomf) 342 MakePointerAvailableKHR NonPrivatePointerKHR 154 343: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 344: 29(ptr) AccessChain 27(buf) 28 345: 6(float) Load 344 346: 6(float) FAdd 345 343 347: 29(ptr) AccessChain 27(buf) 28 Store 347 346 349: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 350: 150(ptr) ImageTexelPointer 314(fimage2DArray) 348 15 AtomicStore 350 19 187 349 351: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 352: 29(ptr) AccessChain 27(buf) 28 353: 6(float) Load 352 354: 6(float) FAdd 353 351 355: 29(ptr) AccessChain 27(buf) 28 Store 355 354 359: 150(ptr) ImageTexelPointer 358(fimageCube) 316 15 360: 6(float) AtomicFAddEXT 359 14 152 149 Store 11(atomf) 360 MakePointerAvailableKHR NonPrivatePointerKHR 154 361: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 362: 29(ptr) AccessChain 27(buf) 28 363: 6(float) Load 362 364: 6(float) FAdd 363 361 365: 29(ptr) AccessChain 27(buf) 28 Store 365 364 366: 150(ptr) ImageTexelPointer 358(fimageCube) 324 15 367: 6(float) AtomicFAddEXT 366 19 162 12 Store 11(atomf) 367 MakePointerAvailableKHR NonPrivatePointerKHR 154 368: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 369: 29(ptr) AccessChain 27(buf) 28 370: 6(float) Load 369 371: 6(float) FAdd 370 368 372: 29(ptr) AccessChain 27(buf) 28 Store 372 371 374: 150(ptr) ImageTexelPointer 358(fimageCube) 373 15 375: 6(float) AtomicExchange 374 19 162 169 Store 11(atomf) 375 MakePointerAvailableKHR NonPrivatePointerKHR 154 376: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 377: 29(ptr) AccessChain 27(buf) 28 378: 6(float) Load 377 379: 6(float) FAdd 378 376 380: 29(ptr) AccessChain 27(buf) 28 Store 380 379 381: 150(ptr) ImageTexelPointer 358(fimageCube) 340 15 382: 6(float) AtomicLoad 381 19 178 Store 11(atomf) 382 MakePointerAvailableKHR NonPrivatePointerKHR 154 383: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 384: 29(ptr) AccessChain 27(buf) 28 385: 6(float) Load 384 386: 6(float) FAdd 385 383 387: 29(ptr) AccessChain 27(buf) 28 Store 387 386 389: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 390: 150(ptr) ImageTexelPointer 358(fimageCube) 388 15 AtomicStore 390 19 187 389 391: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 392: 29(ptr) AccessChain 27(buf) 28 393: 6(float) Load 392 394: 6(float) FAdd 393 391 395: 29(ptr) AccessChain 27(buf) 28 Store 395 394 399: 150(ptr) ImageTexelPointer 398(fimageCubeArray) 316 15 400: 6(float) AtomicFAddEXT 399 14 152 149 Store 11(atomf) 400 MakePointerAvailableKHR NonPrivatePointerKHR 154 401: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 402: 29(ptr) AccessChain 27(buf) 28 403: 6(float) Load 402 404: 6(float) FAdd 403 401 405: 29(ptr) AccessChain 27(buf) 28 Store 405 404 406: 150(ptr) ImageTexelPointer 398(fimageCubeArray) 324 15 407: 6(float) AtomicFAddEXT 406 19 162 12 Store 11(atomf) 407 MakePointerAvailableKHR NonPrivatePointerKHR 154 408: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 409: 29(ptr) AccessChain 27(buf) 28 410: 6(float) Load 409 411: 6(float) FAdd 410 408 412: 29(ptr) AccessChain 27(buf) 28 Store 412 411 413: 150(ptr) ImageTexelPointer 398(fimageCubeArray) 332 15 414: 6(float) AtomicExchange 413 19 162 169 Store 11(atomf) 414 MakePointerAvailableKHR NonPrivatePointerKHR 154 415: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 416: 29(ptr) AccessChain 27(buf) 28 417: 6(float) Load 416 418: 6(float) FAdd 417 415 419: 29(ptr) AccessChain 27(buf) 28 Store 419 418 420: 150(ptr) ImageTexelPointer 398(fimageCubeArray) 340 15 421: 6(float) AtomicLoad 420 19 178 Store 11(atomf) 421 MakePointerAvailableKHR NonPrivatePointerKHR 154 422: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 423: 29(ptr) AccessChain 27(buf) 28 424: 6(float) Load 423 425: 6(float) FAdd 424 422 426: 29(ptr) AccessChain 27(buf) 28 Store 426 425 427: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 428: 150(ptr) ImageTexelPointer 398(fimageCubeArray) 348 15 AtomicStore 428 19 187 427 429: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 430: 29(ptr) AccessChain 27(buf) 28 431: 6(float) Load 430 432: 6(float) FAdd 431 429 433: 29(ptr) AccessChain 27(buf) 28 Store 433 432 437: 150(ptr) ImageTexelPointer 436(fimage3D) 316 15 438: 6(float) AtomicFAddEXT 437 14 152 149 Store 11(atomf) 438 MakePointerAvailableKHR NonPrivatePointerKHR 154 439: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 440: 29(ptr) AccessChain 27(buf) 28 441: 6(float) Load 440 442: 6(float) FAdd 441 439 443: 29(ptr) AccessChain 27(buf) 28 Store 443 442 444: 150(ptr) ImageTexelPointer 436(fimage3D) 324 15 445: 6(float) AtomicFAddEXT 444 19 162 12 Store 11(atomf) 445 MakePointerAvailableKHR NonPrivatePointerKHR 154 446: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 447: 29(ptr) AccessChain 27(buf) 28 448: 6(float) Load 447 449: 6(float) FAdd 448 446 450: 29(ptr) AccessChain 27(buf) 28 Store 450 449 451: 150(ptr) ImageTexelPointer 436(fimage3D) 332 15 452: 6(float) AtomicExchange 451 19 162 169 Store 11(atomf) 452 MakePointerAvailableKHR NonPrivatePointerKHR 154 453: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 454: 29(ptr) AccessChain 27(buf) 28 455: 6(float) Load 454 456: 6(float) FAdd 455 453 457: 29(ptr) AccessChain 27(buf) 28 Store 457 456 458: 150(ptr) ImageTexelPointer 436(fimage3D) 340 15 459: 6(float) AtomicLoad 458 19 178 Store 11(atomf) 459 MakePointerAvailableKHR NonPrivatePointerKHR 154 460: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 461: 29(ptr) AccessChain 27(buf) 28 462: 6(float) Load 461 463: 6(float) FAdd 462 460 464: 29(ptr) AccessChain 27(buf) 28 Store 464 463 465: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 466: 150(ptr) ImageTexelPointer 436(fimage3D) 348 15 AtomicStore 466 19 187 465 467: 6(float) Load 11(atomf) MakePointerVisibleKHR NonPrivatePointerKHR 154 468: 29(ptr) AccessChain 27(buf) 28 469: 6(float) Load 468 470: 6(float) FAdd 469 467 471: 29(ptr) AccessChain 27(buf) 28 Store 471 470 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.atomicFloat_Error.comp.out000066400000000000000000000104351506534232700243620ustar00rootroot00000000000000spv.atomicFloat_Error.comp ERROR: 0:25: 'atomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:26: 'atomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:27: 'atomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:28: 'atomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:31: 'atomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:32: 'atomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:33: 'atomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:34: 'atomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:37: 'atomicExchange' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:38: 'atomicExchange' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:39: 'atomicExchange' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:40: 'atomicExchange' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:43: 'atomicExchange' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:44: 'atomicExchange' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:45: 'atomicExchange' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:46: 'atomicExchange' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:50: 'atomicLoad' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:51: 'atomicStore' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:52: 'atomicLoad' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:53: 'atomicStore' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:56: 'atomicLoad' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:57: 'atomicStore' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:58: 'atomicLoad' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:59: 'atomicStore' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:63: 'imageAtomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:64: 'imageAtomicAdd' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:66: 'imageAtomicLoad' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:67: 'imageAtomicStore' : required extension not requested: GL_EXT_shader_atomic_float ERROR: 0:80: 'atomicAdd' : no matching overloaded function found ERROR: 0:81: 'atomicAdd' : no matching overloaded function found ERROR: 0:82: 'atomicAdd' : no matching overloaded function found ERROR: 0:83: 'atomicAdd' : no matching overloaded function found ERROR: 0:86: 'atomicExchange' : no matching overloaded function found ERROR: 0:87: 'atomicExchange' : no matching overloaded function found ERROR: 0:88: 'atomicExchange' : no matching overloaded function found ERROR: 0:89: 'atomicExchange' : no matching overloaded function found ERROR: 0:90: 'atomicExchange' : no matching overloaded function found ERROR: 0:91: 'atomicExchange' : no matching overloaded function found ERROR: 0:95: 'atomicLoad' : no matching overloaded function found ERROR: 0:96: 'atomicStore' : no matching overloaded function found ERROR: 0:99: 'imageAtomicAdd' : no matching overloaded function found ERROR: 0:100: 'imageAtomicAdd' : no matching overloaded function found ERROR: 0:101: 'imageAtomicAdd' : no matching overloaded function found ERROR: 0:102: 'imageAtomicExchange' : no matching overloaded function found ERROR: 0:103: 'imageAtomicExchange' : no matching overloaded function found ERROR: 0:104: 'imageAtomicExchange' : no matching overloaded function found ERROR: 0:105: 'imageAtomicLoad' : no matching overloaded function found ERROR: 0:106: 'imageAtomicLoad' : no matching overloaded function found ERROR: 0:107: 'imageAtomicLoad' : no matching overloaded function found ERROR: 0:108: 'imageAtomicStore' : no matching overloaded function found ERROR: 0:109: 'imageAtomicStore' : no matching overloaded function found ERROR: 0:110: 'imageAtomicStore' : no matching overloaded function found ERROR: 52 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.atomicInt64.comp.out000066400000000000000000000242051506534232700230500ustar00rootroot00000000000000spv.atomicInt64.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 149 Capability Shader Capability Int64 Capability Int64Atomics 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 16 16 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_NV_shader_atomic_int64" Name 4 "main" Name 8 "i64" Name 12 "u64" Name 14 "Buffer" MemberName 14(Buffer) 0 "i64" MemberName 14(Buffer) 1 "u64" Name 16 "buf" Name 84 "Struct" MemberName 84(Struct) 0 "i64" MemberName 84(Struct) 1 "u64" Name 86 "s" Decorate 14(Buffer) BufferBlock MemberDecorate 14(Buffer) 0 Offset 0 MemberDecorate 14(Buffer) 1 Offset 8 Decorate 16(buf) Binding 0 Decorate 16(buf) DescriptorSet 0 Decorate 148 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 64 1 7: TypePointer Function 6(int64_t) 9: 6(int64_t) Constant 0 0 10: TypeInt 64 0 11: TypePointer Function 10(int64_t) 13: 10(int64_t) Constant 0 0 14(Buffer): TypeStruct 6(int64_t) 10(int64_t) 15: TypePointer Uniform 14(Buffer) 16(buf): 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypePointer Uniform 6(int64_t) 21: 6(int64_t) Constant 4294967272 4294967295 22: TypeInt 32 0 23: 22(int) Constant 1 24: 22(int) Constant 0 28: 17(int) Constant 1 29: TypePointer Uniform 10(int64_t) 31: 10(int64_t) Constant 15 240 84(Struct): TypeStruct 6(int64_t) 10(int64_t) 85: TypePointer Workgroup 84(Struct) 86(s): 85(ptr) Variable Workgroup 87: TypePointer Workgroup 6(int64_t) 92: TypePointer Workgroup 10(int64_t) 146: TypeVector 22(int) 3 147: 22(int) Constant 16 148: 146(ivec3) ConstantComposite 147 147 23 4(main): 2 Function None 3 5: Label 8(i64): 7(ptr) Variable Function 12(u64): 11(ptr) Variable Function Store 8(i64) 9 Store 12(u64) 13 20: 19(ptr) AccessChain 16(buf) 18 25: 6(int64_t) AtomicSMin 20 23 24 21 26: 6(int64_t) Load 8(i64) 27: 6(int64_t) IAdd 26 25 Store 8(i64) 27 30: 29(ptr) AccessChain 16(buf) 28 32: 10(int64_t) AtomicUMin 30 23 24 31 33: 10(int64_t) Load 12(u64) 34: 10(int64_t) IAdd 33 32 Store 12(u64) 34 35: 19(ptr) AccessChain 16(buf) 18 36: 6(int64_t) AtomicSMax 35 23 24 21 37: 6(int64_t) Load 8(i64) 38: 6(int64_t) IAdd 37 36 Store 8(i64) 38 39: 29(ptr) AccessChain 16(buf) 28 40: 10(int64_t) AtomicUMax 39 23 24 31 41: 10(int64_t) Load 12(u64) 42: 10(int64_t) IAdd 41 40 Store 12(u64) 42 43: 19(ptr) AccessChain 16(buf) 18 44: 6(int64_t) AtomicAnd 43 23 24 21 45: 6(int64_t) Load 8(i64) 46: 6(int64_t) IAdd 45 44 Store 8(i64) 46 47: 29(ptr) AccessChain 16(buf) 28 48: 10(int64_t) AtomicAnd 47 23 24 31 49: 10(int64_t) Load 12(u64) 50: 10(int64_t) IAdd 49 48 Store 12(u64) 50 51: 19(ptr) AccessChain 16(buf) 18 52: 6(int64_t) AtomicOr 51 23 24 21 53: 6(int64_t) Load 8(i64) 54: 6(int64_t) IAdd 53 52 Store 8(i64) 54 55: 29(ptr) AccessChain 16(buf) 28 56: 10(int64_t) AtomicOr 55 23 24 31 57: 10(int64_t) Load 12(u64) 58: 10(int64_t) IAdd 57 56 Store 12(u64) 58 59: 19(ptr) AccessChain 16(buf) 18 60: 6(int64_t) AtomicXor 59 23 24 21 61: 6(int64_t) Load 8(i64) 62: 6(int64_t) IAdd 61 60 Store 8(i64) 62 63: 29(ptr) AccessChain 16(buf) 28 64: 10(int64_t) AtomicXor 63 23 24 31 65: 10(int64_t) Load 12(u64) 66: 10(int64_t) IAdd 65 64 Store 12(u64) 66 67: 19(ptr) AccessChain 16(buf) 18 68: 6(int64_t) AtomicIAdd 67 23 24 21 69: 6(int64_t) Load 8(i64) 70: 6(int64_t) IAdd 69 68 Store 8(i64) 70 71: 19(ptr) AccessChain 16(buf) 18 72: 6(int64_t) AtomicExchange 71 23 24 21 73: 6(int64_t) Load 8(i64) 74: 6(int64_t) IAdd 73 72 Store 8(i64) 74 75: 19(ptr) AccessChain 16(buf) 18 76: 6(int64_t) Load 8(i64) 77: 6(int64_t) AtomicCompareExchange 75 23 24 24 76 21 78: 6(int64_t) Load 8(i64) 79: 6(int64_t) IAdd 78 77 Store 8(i64) 79 80: 6(int64_t) Load 8(i64) 81: 19(ptr) AccessChain 16(buf) 18 Store 81 80 82: 10(int64_t) Load 12(u64) 83: 29(ptr) AccessChain 16(buf) 28 Store 83 82 Store 8(i64) 9 Store 12(u64) 13 88: 87(ptr) AccessChain 86(s) 18 89: 6(int64_t) AtomicSMin 88 23 24 21 90: 6(int64_t) Load 8(i64) 91: 6(int64_t) IAdd 90 89 Store 8(i64) 91 93: 92(ptr) AccessChain 86(s) 28 94: 10(int64_t) AtomicUMin 93 23 24 31 95: 10(int64_t) Load 12(u64) 96: 10(int64_t) IAdd 95 94 Store 12(u64) 96 97: 87(ptr) AccessChain 86(s) 18 98: 6(int64_t) AtomicSMax 97 23 24 21 99: 6(int64_t) Load 8(i64) 100: 6(int64_t) IAdd 99 98 Store 8(i64) 100 101: 92(ptr) AccessChain 86(s) 28 102: 10(int64_t) AtomicUMax 101 23 24 31 103: 10(int64_t) Load 12(u64) 104: 10(int64_t) IAdd 103 102 Store 12(u64) 104 105: 87(ptr) AccessChain 86(s) 18 106: 6(int64_t) AtomicAnd 105 23 24 21 107: 6(int64_t) Load 8(i64) 108: 6(int64_t) IAdd 107 106 Store 8(i64) 108 109: 92(ptr) AccessChain 86(s) 28 110: 10(int64_t) AtomicAnd 109 23 24 31 111: 10(int64_t) Load 12(u64) 112: 10(int64_t) IAdd 111 110 Store 12(u64) 112 113: 87(ptr) AccessChain 86(s) 18 114: 6(int64_t) AtomicOr 113 23 24 21 115: 6(int64_t) Load 8(i64) 116: 6(int64_t) IAdd 115 114 Store 8(i64) 116 117: 92(ptr) AccessChain 86(s) 28 118: 10(int64_t) AtomicOr 117 23 24 31 119: 10(int64_t) Load 12(u64) 120: 10(int64_t) IAdd 119 118 Store 12(u64) 120 121: 87(ptr) AccessChain 86(s) 18 122: 6(int64_t) AtomicXor 121 23 24 21 123: 6(int64_t) Load 8(i64) 124: 6(int64_t) IAdd 123 122 Store 8(i64) 124 125: 92(ptr) AccessChain 86(s) 28 126: 10(int64_t) AtomicXor 125 23 24 31 127: 10(int64_t) Load 12(u64) 128: 10(int64_t) IAdd 127 126 Store 12(u64) 128 129: 87(ptr) AccessChain 86(s) 18 130: 6(int64_t) AtomicIAdd 129 23 24 21 131: 6(int64_t) Load 8(i64) 132: 6(int64_t) IAdd 131 130 Store 8(i64) 132 133: 87(ptr) AccessChain 86(s) 18 134: 6(int64_t) AtomicExchange 133 23 24 21 135: 6(int64_t) Load 8(i64) 136: 6(int64_t) IAdd 135 134 Store 8(i64) 136 137: 87(ptr) AccessChain 86(s) 18 138: 6(int64_t) Load 8(i64) 139: 6(int64_t) AtomicCompareExchange 137 23 24 24 138 21 140: 6(int64_t) Load 8(i64) 141: 6(int64_t) IAdd 140 139 Store 8(i64) 141 142: 6(int64_t) Load 8(i64) 143: 87(ptr) AccessChain 86(s) 18 Store 143 142 144: 10(int64_t) Load 12(u64) 145: 92(ptr) AccessChain 86(s) 28 Store 145 144 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.atomicRvalue.error.vert.out000066400000000000000000000010311506534232700245440ustar00rootroot00000000000000spv.atomicRvalue.error.vert ERROR: 0:5: 'assign' : l-value required ERROR: 0:5: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters. ERROR: 0:5: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions. ERROR: 0:6: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions. ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.atomicStoreInt64.comp.out000066400000000000000000000053741506534232700240730ustar00rootroot00000000000000spv.atomicStoreInt64.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader Capability Int64 Capability Int64Atomics 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_atomic_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 7 "ssbo" MemberName 7(ssbo) 0 "y" Name 9 "" Name 14 "ubo" MemberName 14(ubo) 0 "z" Name 16 "" Decorate 7(ssbo) BufferBlock MemberDecorate 7(ssbo) 0 Offset 0 Decorate 9 Binding 0 Decorate 9 DescriptorSet 0 Decorate 14(ubo) Block MemberDecorate 14(ubo) 0 Offset 0 Decorate 16 Binding 1 Decorate 16 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 64 0 7(ssbo): TypeStruct 6(int64_t) 8: TypePointer Uniform 7(ssbo) 9: 8(ptr) Variable Uniform 10: TypeInt 32 1 11: 10(int) Constant 0 12: TypePointer Uniform 6(int64_t) 14(ubo): TypeStruct 6(int64_t) 15: TypePointer Uniform 14(ubo) 16: 15(ptr) Variable Uniform 19: 10(int) Constant 1 20: 10(int) Constant 64 21: 10(int) Constant 4 22: TypeInt 32 0 23: 22(int) Constant 1 24: 22(int) Constant 0 25: 22(int) Constant 68 4(main): 2 Function None 3 5: Label 13: 12(ptr) AccessChain 9 11 17: 12(ptr) AccessChain 16 11 18: 6(int64_t) Load 17 AtomicStore 13 19 25 18 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.barrier.vert.out000066400000000000000000000040071506534232700224150ustar00rootroot00000000000000spv.barrier.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 15 Source GLSL 450 Name 4 "main" Name 9 "c0" Name 15 "c1" Decorate 9(c0) Location 0 Decorate 15(c1) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(c0): 8(ptr) Variable Output 10: 6(float) Constant 1065353216 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeInt 32 0 13: 12(int) Constant 1 14: 12(int) Constant 3400 15(c1): 8(ptr) Variable Output 16: 12(int) Constant 72 20: 12(int) Constant 2056 4(main): 2 Function None 3 5: Label Store 9(c0) 11 MemoryBarrier 13 14 Store 15(c1) 11 MemoryBarrier 13 16 17: 7(fvec4) Load 9(c0) 18: 7(fvec4) CompositeConstruct 10 10 10 10 19: 7(fvec4) FAdd 17 18 Store 9(c0) 19 MemoryBarrier 13 20 21: 7(fvec4) Load 9(c0) 22: 7(fvec4) CompositeConstruct 10 10 10 10 23: 7(fvec4) FAdd 21 22 Store 9(c0) 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bfloat16.comp.out000066400000000000000000000567621506534232700224020ustar00rootroot00000000000000spv.bfloat16.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 325 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability BFloat16TypeKHR Capability BFloat16DotProductKHR Capability BFloat16CooperativeMatrixKHR Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Extension "SPV_KHR_bfloat16" Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_EXT_bfloat16" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 10 "funcbf16(bf161;" Name 9 "x" Name 16 "funcf32(f1;" Name 15 "x" Name 22 "funcf64(d1;" Name 21 "x" Name 34 "func2(vbf164[2];i1;" Name 32 "v" Name 33 "i" Name 47 "f" Name 49 "b" Name 55 "b2" Name 61 "u8" Name 65 "u16" Name 68 "u32" Name 72 "u64" Name 76 "i8" Name 80 "i16" Name 82 "i32" Name 86 "i64" Name 88 "bf16" Name 92 "f16" Name 94 "f32" Name 96 "f64" Name 149 "B" MemberName 149(B) 0 "b3" MemberName 149(B) 1 "b2" MemberName 149(B) 2 "b1" Name 151 "buf" Name 161 "b3" Name 174 "cmA" Name 179 "cmAf" Name 182 "param" Name 187 "param" Name 191 "param" Name 193 "i16_1" Name 198 "i16_2" Name 203 "i16_3" Name 212 "i16_4" Name 220 "u16_1" Name 225 "u16_2" Name 230 "u16_3" Name 239 "u16_4" Name 247 "b16_1" Name 250 "b16_2" Name 253 "b16_3" Name 257 "b16_4" Name 268 "b" Name 289 "S" MemberName 289(S) 0 "b" Name 291 "s" Name 317 "bsc10" Name 324 "bfs" Decorate 149(B) Block MemberDecorate 149(B) 0 Offset 0 MemberDecorate 149(B) 1 Offset 6 MemberDecorate 149(B) 2 Offset 10 Decorate 151(buf) Binding 0 Decorate 151(buf) DescriptorSet 0 Decorate 313 BuiltIn WorkgroupSize Decorate 317(bsc10) SpecId 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 0 7: TypePointer Function 6(bfloat16_t) 8: TypeFunction 6(bfloat16_t) 7(ptr) 12: TypeFloat 32 13: TypePointer Function 12(float) 14: TypeFunction 6(bfloat16_t) 13(ptr) 18: TypeFloat 64 19: TypePointer Function 18(float64_t) 20: TypeFunction 6(bfloat16_t) 19(ptr) 24: TypeVector 6(bfloat16_t) 4 25: TypeInt 32 0 26: 25(int) Constant 2 27: TypeArray 24(bf16vec4) 26 28: TypePointer Function 27 29: TypeInt 32 1 30: TypePointer Function 29(int) 31: TypeFunction 6(bfloat16_t) 28(ptr) 30(ptr) 48: 12(float) Constant 1073741824 50:6(bfloat16_t) Constant 16256 53: TypeVector 6(bfloat16_t) 2 54: TypePointer Function 53(bf16vec2) 59: TypeInt 8 0 60: TypePointer Function 59(int8_t) 62: 59(int8_t) Constant 5 63: TypeInt 16 0 64: TypePointer Function 63(int16_t) 66: 63(int16_t) Constant 5 67: TypePointer Function 25(int) 69: 25(int) Constant 5 70: TypeInt 64 0 71: TypePointer Function 70(int64_t) 73: 70(int64_t) Constant 5 0 74: TypeInt 8 1 75: TypePointer Function 74(int8_t) 77: 74(int8_t) Constant 6 78: TypeInt 16 1 79: TypePointer Function 78(int16_t) 81: 78(int16_t) Constant 6 83: 29(int) Constant 6 84: TypeInt 64 1 85: TypePointer Function 84(int64_t) 87: 84(int64_t) Constant 6 0 89:6(bfloat16_t) Constant 16608 90: TypeFloat 16 91: TypePointer Function 90(float16_t) 93:90(float16_t) Constant 18176 95: 12(float) Constant 1088421888 97:18(float64_t) Constant 0 1075576832 148: TypeVector 6(bfloat16_t) 3 149(B): TypeStruct 148(bf16vec3) 53(bf16vec2) 6(bfloat16_t) 150: TypePointer StorageBuffer 149(B) 151(buf): 150(ptr) Variable StorageBuffer 152: 29(int) Constant 2 153: TypePointer StorageBuffer 6(bfloat16_t) 156: 29(int) Constant 1 157: TypePointer StorageBuffer 53(bf16vec2) 160: TypePointer Function 148(bf16vec3) 162: 29(int) Constant 0 163: TypePointer StorageBuffer 148(bf16vec3) 169: 25(int) Constant 3 170: 25(int) Constant 16 171: 25(int) Constant 0 172: TypeCooperativeMatrixKHR 6(bfloat16_t) 169 170 170 171 173: TypePointer Function 172 175:6(bfloat16_t) Constant 16448 176: 172 ConstantComposite 175 177: TypeCooperativeMatrixKHR 12(float) 169 170 170 171 178: TypePointer Function 177 196: TypeVector 78(int16_t) 2 197: TypePointer Function 196(i16vec2) 201: TypeVector 78(int16_t) 3 202: TypePointer Function 201(i16vec3) 210: TypeVector 78(int16_t) 4 211: TypePointer Function 210(i16vec4) 223: TypeVector 63(int16_t) 2 224: TypePointer Function 223(i16vec2) 228: TypeVector 63(int16_t) 3 229: TypePointer Function 228(i16vec3) 237: TypeVector 63(int16_t) 4 238: TypePointer Function 237(i16vec4) 256: TypePointer Function 24(bf16vec4) 281: 25(int) Constant 1 289(S): TypeStruct 6(bfloat16_t) 290: TypePointer Function 289(S) 295: TypeBool 298:6(bfloat16_t) Constant 16384 312: TypeVector 25(int) 3 313: 312(ivec3) ConstantComposite 281 281 281 314:6(bfloat16_t) Constant 16672 315:6(bfloat16_t) Constant 16800 316:53(bf16vec2) ConstantComposite 315 315 317(bsc10):6(bfloat16_t) SpecConstant 16672 318: 289(S) ConstantComposite 314 319: TypeArray 6(bfloat16_t) 26 320: 319 ConstantComposite 314 314 321: 25(int) Constant 10 322: TypeArray 6(bfloat16_t) 321 323: TypePointer Workgroup 322 324(bfs): 323(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label 47(f): 13(ptr) Variable Function 49(b): 7(ptr) Variable Function 55(b2): 54(ptr) Variable Function 61(u8): 60(ptr) Variable Function 65(u16): 64(ptr) Variable Function 68(u32): 67(ptr) Variable Function 72(u64): 71(ptr) Variable Function 76(i8): 75(ptr) Variable Function 80(i16): 79(ptr) Variable Function 82(i32): 30(ptr) Variable Function 86(i64): 85(ptr) Variable Function 88(bf16): 7(ptr) Variable Function 92(f16): 91(ptr) Variable Function 94(f32): 13(ptr) Variable Function 96(f64): 19(ptr) Variable Function 161(b3): 160(ptr) Variable Function 174(cmA): 173(ptr) Variable Function 179(cmAf): 178(ptr) Variable Function 182(param): 7(ptr) Variable Function 187(param): 13(ptr) Variable Function 191(param): 19(ptr) Variable Function 193(i16_1): 79(ptr) Variable Function 198(i16_2): 197(ptr) Variable Function 203(i16_3): 202(ptr) Variable Function 212(i16_4): 211(ptr) Variable Function 220(u16_1): 64(ptr) Variable Function 225(u16_2): 224(ptr) Variable Function 230(u16_3): 229(ptr) Variable Function 239(u16_4): 238(ptr) Variable Function 247(b16_1): 7(ptr) Variable Function 250(b16_2): 54(ptr) Variable Function 253(b16_3): 160(ptr) Variable Function 257(b16_4): 256(ptr) Variable Function Store 47(f) 48 Store 49(b) 50 51: 12(float) Load 47(f) 52:6(bfloat16_t) FConvert 51 56: 12(float) Load 47(f) 57:6(bfloat16_t) FConvert 56 58:53(bf16vec2) CompositeConstruct 57 57 Store 55(b2) 58 Store 61(u8) 62 Store 65(u16) 66 Store 68(u32) 69 Store 72(u64) 73 Store 76(i8) 77 Store 80(i16) 81 Store 82(i32) 83 Store 86(i64) 87 Store 88(bf16) 89 Store 92(f16) 93 Store 94(f32) 95 Store 96(f64) 97 98: 59(int8_t) Load 61(u8) 99:6(bfloat16_t) ConvertUToF 98 Store 49(b) 99 100: 63(int16_t) Load 65(u16) 101:6(bfloat16_t) ConvertUToF 100 Store 49(b) 101 102: 25(int) Load 68(u32) 103:6(bfloat16_t) ConvertUToF 102 Store 49(b) 103 104: 70(int64_t) Load 72(u64) 105:6(bfloat16_t) ConvertUToF 104 Store 49(b) 105 106: 74(int8_t) Load 76(i8) 107:6(bfloat16_t) ConvertSToF 106 Store 49(b) 107 108: 78(int16_t) Load 80(i16) 109:6(bfloat16_t) ConvertSToF 108 Store 49(b) 109 110: 29(int) Load 82(i32) 111:6(bfloat16_t) ConvertSToF 110 Store 49(b) 111 112: 84(int64_t) Load 86(i64) 113:6(bfloat16_t) ConvertSToF 112 Store 49(b) 113 114:6(bfloat16_t) Load 88(bf16) Store 49(b) 114 115:90(float16_t) Load 92(f16) 116:6(bfloat16_t) FConvert 115 Store 49(b) 116 117: 12(float) Load 94(f32) 118:6(bfloat16_t) FConvert 117 Store 49(b) 118 119:18(float64_t) Load 96(f64) 120:6(bfloat16_t) FConvert 119 Store 49(b) 120 121:6(bfloat16_t) Load 49(b) 122: 59(int8_t) ConvertFToU 121 Store 61(u8) 122 123:6(bfloat16_t) Load 49(b) 124: 63(int16_t) ConvertFToU 123 Store 65(u16) 124 125:6(bfloat16_t) Load 49(b) 126: 25(int) ConvertFToU 125 Store 68(u32) 126 127:6(bfloat16_t) Load 49(b) 128: 70(int64_t) ConvertFToU 127 Store 72(u64) 128 129:6(bfloat16_t) Load 49(b) 130: 74(int8_t) ConvertFToS 129 Store 76(i8) 130 131:6(bfloat16_t) Load 49(b) 132: 78(int16_t) ConvertFToS 131 Store 80(i16) 132 133:6(bfloat16_t) Load 49(b) 134: 29(int) ConvertFToS 133 Store 82(i32) 134 135:6(bfloat16_t) Load 49(b) 136: 84(int64_t) ConvertFToS 135 Store 86(i64) 136 137:6(bfloat16_t) Load 49(b) Store 88(bf16) 137 138:6(bfloat16_t) Load 49(b) 139:90(float16_t) FConvert 138 Store 92(f16) 139 140:6(bfloat16_t) Load 49(b) 141: 12(float) FConvert 140 Store 94(f32) 141 142:6(bfloat16_t) Load 49(b) 143:18(float64_t) FConvert 142 Store 96(f64) 143 144:6(bfloat16_t) Load 49(b) 145: 12(float) FConvert 144 Store 94(f32) 145 146:6(bfloat16_t) Load 49(b) 147:18(float64_t) FConvert 146 Store 96(f64) 147 154: 153(ptr) AccessChain 151(buf) 152 155:6(bfloat16_t) Load 154 Store 49(b) 155 158: 157(ptr) AccessChain 151(buf) 156 159:53(bf16vec2) Load 158 Store 55(b2) 159 164: 163(ptr) AccessChain 151(buf) 162 165:148(bf16vec3) Load 164 Store 161(b3) 165 166:53(bf16vec2) Load 55(b2) 167:53(bf16vec2) Load 55(b2) 168:6(bfloat16_t) Dot 166 167 Store 174(cmA) 176 180: 172 Load 174(cmA) 181: 177 FConvert 180 Store 179(cmAf) 181 183:6(bfloat16_t) Load 49(b) Store 182(param) 183 184:6(bfloat16_t) FunctionCall 10(funcbf16(bf161;) 182(param) 185:6(bfloat16_t) Load 49(b) 186: 12(float) FConvert 185 Store 187(param) 186 188:6(bfloat16_t) FunctionCall 16(funcf32(f1;) 187(param) 189:6(bfloat16_t) Load 49(b) 190:18(float64_t) FConvert 189 Store 191(param) 190 192:6(bfloat16_t) FunctionCall 22(funcf64(d1;) 191(param) 194:6(bfloat16_t) Load 49(b) 195: 78(int16_t) Bitcast 194 Store 193(i16_1) 195 199:53(bf16vec2) Load 55(b2) 200:196(i16vec2) Bitcast 199 Store 198(i16_2) 200 204:53(bf16vec2) Load 55(b2) 205:6(bfloat16_t) Load 49(b) 206:6(bfloat16_t) CompositeExtract 204 0 207:6(bfloat16_t) CompositeExtract 204 1 208:148(bf16vec3) CompositeConstruct 206 207 205 209:201(i16vec3) Bitcast 208 Store 203(i16_3) 209 213:53(bf16vec2) Load 55(b2) 214:6(bfloat16_t) CompositeExtract 213 0 215:6(bfloat16_t) CompositeExtract 213 1 216:6(bfloat16_t) CompositeExtract 213 0 217:6(bfloat16_t) CompositeExtract 213 1 218:24(bf16vec4) CompositeConstruct 214 215 216 217 219:210(i16vec4) Bitcast 218 Store 212(i16_4) 219 221:6(bfloat16_t) Load 49(b) 222: 63(int16_t) Bitcast 221 Store 220(u16_1) 222 226:53(bf16vec2) Load 55(b2) 227:223(i16vec2) Bitcast 226 Store 225(u16_2) 227 231:53(bf16vec2) Load 55(b2) 232:6(bfloat16_t) Load 49(b) 233:6(bfloat16_t) CompositeExtract 231 0 234:6(bfloat16_t) CompositeExtract 231 1 235:148(bf16vec3) CompositeConstruct 233 234 232 236:228(i16vec3) Bitcast 235 Store 230(u16_3) 236 240:53(bf16vec2) Load 55(b2) 241:6(bfloat16_t) CompositeExtract 240 0 242:6(bfloat16_t) CompositeExtract 240 1 243:6(bfloat16_t) CompositeExtract 240 0 244:6(bfloat16_t) CompositeExtract 240 1 245:24(bf16vec4) CompositeConstruct 241 242 243 244 246:237(i16vec4) Bitcast 245 Store 239(u16_4) 246 248: 78(int16_t) Load 193(i16_1) 249:6(bfloat16_t) Bitcast 248 Store 247(b16_1) 249 251:196(i16vec2) Load 198(i16_2) 252:53(bf16vec2) Bitcast 251 Store 250(b16_2) 252 254:201(i16vec3) Load 203(i16_3) 255:148(bf16vec3) Bitcast 254 Store 253(b16_3) 255 258:210(i16vec4) Load 212(i16_4) 259:24(bf16vec4) Bitcast 258 Store 257(b16_4) 259 260: 63(int16_t) Load 220(u16_1) 261:6(bfloat16_t) Bitcast 260 Store 247(b16_1) 261 262:223(i16vec2) Load 225(u16_2) 263:53(bf16vec2) Bitcast 262 Store 250(b16_2) 263 264:228(i16vec3) Load 230(u16_3) 265:148(bf16vec3) Bitcast 264 Store 253(b16_3) 265 266:237(i16vec4) Load 239(u16_4) 267:24(bf16vec4) Bitcast 266 Store 257(b16_4) 267 Return FunctionEnd 10(funcbf16(bf161;):6(bfloat16_t) Function None 8 9(x): 7(ptr) FunctionParameter 11: Label 36:6(bfloat16_t) Load 9(x) ReturnValue 36 FunctionEnd 16(funcf32(f1;):6(bfloat16_t) Function None 14 15(x): 13(ptr) FunctionParameter 17: Label 39: 12(float) Load 15(x) 40:6(bfloat16_t) FConvert 39 ReturnValue 40 FunctionEnd 22(funcf64(d1;):6(bfloat16_t) Function None 20 21(x): 19(ptr) FunctionParameter 23: Label 43:18(float64_t) Load 21(x) 44:6(bfloat16_t) FConvert 43 ReturnValue 44 FunctionEnd 34(func2(vbf164[2];i1;):6(bfloat16_t) Function None 31 32(v): 28(ptr) FunctionParameter 33(i): 30(ptr) FunctionParameter 35: Label 268(b): 7(ptr) Variable Function 291(s): 290(ptr) Variable Function 269: 256(ptr) AccessChain 32(v) 162 270:24(bf16vec4) Load 269 271:6(bfloat16_t) CompositeExtract 270 0 272:6(bfloat16_t) CompositeExtract 270 1 273:53(bf16vec2) CompositeConstruct 271 272 274: 29(int) Load 33(i) 275:6(bfloat16_t) VectorExtractDynamic 273 274 Store 268(b) 275 276: 256(ptr) AccessChain 32(v) 156 277:24(bf16vec4) Load 276 278:6(bfloat16_t) CompositeExtract 277 0 279:6(bfloat16_t) CompositeExtract 277 1 280:53(bf16vec2) CompositeConstruct 278 279 282:6(bfloat16_t) CompositeExtract 280 1 Store 268(b) 282 283: 29(int) Load 33(i) 284: 29(int) Load 33(i) 285: 29(int) Load 33(i) 286: 7(ptr) AccessChain 32(v) 284 285 287:6(bfloat16_t) Load 286 288: 7(ptr) AccessChain 32(v) 283 26 Store 288 287 292:6(bfloat16_t) Load 268(b) 293: 7(ptr) AccessChain 291(s) 162 Store 293 292 294: 29(int) Load 33(i) 296: 295(bool) INotEqual 294 162 297:6(bfloat16_t) Load 268(b) 299:6(bfloat16_t) Select 296 297 298 Store 268(b) 299 300: 29(int) Load 33(i) 301: 295(bool) IEqual 300 152 SelectionMerge 303 None BranchConditional 301 302 306 302: Label 304: 7(ptr) AccessChain 32(v) 162 171 305:6(bfloat16_t) Load 304 Store 268(b) 305 Branch 303 306: Label 307: 7(ptr) AccessChain 32(v) 156 281 308:6(bfloat16_t) Load 307 Store 268(b) 308 Branch 303 303: Label 309:6(bfloat16_t) Load 268(b) ReturnValue 309 FunctionEnd glslang-16.0.0/Test/baseResults/spv.bfloat16_error.comp.out000066400000000000000000000065061506534232700236020ustar00rootroot00000000000000spv.bfloat16_error.comp ERROR: 0:31: 'assign' : cannot convert from ' temp uint8_t' to ' temp bfloat16_t' ERROR: 0:32: 'assign' : cannot convert from ' temp uint16_t' to ' temp bfloat16_t' ERROR: 0:33: 'assign' : cannot convert from ' temp highp uint' to ' temp bfloat16_t' ERROR: 0:34: 'assign' : cannot convert from ' temp uint64_t' to ' temp bfloat16_t' ERROR: 0:35: 'assign' : cannot convert from ' temp int8_t' to ' temp bfloat16_t' ERROR: 0:36: 'assign' : cannot convert from ' temp int16_t' to ' temp bfloat16_t' ERROR: 0:37: 'assign' : cannot convert from ' temp highp int' to ' temp bfloat16_t' ERROR: 0:38: 'assign' : cannot convert from ' temp int64_t' to ' temp bfloat16_t' ERROR: 0:40: 'assign' : cannot convert from ' temp float16_t' to ' temp bfloat16_t' ERROR: 0:41: 'assign' : cannot convert from ' temp highp float' to ' temp bfloat16_t' ERROR: 0:42: 'assign' : cannot convert from ' temp double' to ' temp bfloat16_t' ERROR: 0:43: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp uint8_t' ERROR: 0:44: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp uint16_t' ERROR: 0:45: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp highp uint' ERROR: 0:46: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp uint64_t' ERROR: 0:47: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp int8_t' ERROR: 0:48: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp int16_t' ERROR: 0:49: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp highp int' ERROR: 0:50: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp int64_t' ERROR: 0:52: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp float16_t' ERROR: 0:56: 'b2' : undeclared identifier ERROR: 0:56: 'dot' : no matching overloaded function found ERROR: 0:58: 'funcbf16' : no matching overloaded function found ERROR: 0:59: 'funcbf16' : no matching overloaded function found ERROR: 0:60: 'funcbf16' : no matching overloaded function found ERROR: 0:62: 'constructor' : can't convert ERROR: 0:62: ' temp bool' : cannot construct with these arguments ERROR: 0:62: '=' : cannot convert from ' const float' to ' temp bool' ERROR: 0:63: 'constructor' : can't convert ERROR: 0:63: ' temp bfloat16_t' : cannot construct with these arguments ERROR: 0:63: 'assign' : cannot convert from ' const float' to ' temp bfloat16_t' ERROR: 0:65: '++' : wrong operand type no operation '++' exists that takes an operand of type temp bfloat16_t (or there is no acceptable conversion) ERROR: 0:66: '--' : wrong operand type no operation '--' exists that takes an operand of type temp bfloat16_t (or there is no acceptable conversion) ERROR: 0:67: '-' : wrong operand type no operation '-' exists that takes an operand of type temp bfloat16_t (or there is no acceptable conversion) ERROR: 0:69: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp bfloat16_t' and a right operand of type ' temp bfloat16_t' (or there is no acceptable conversion) ERROR: 0:72: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 16, 16, 0> bfloat16_t' and a right operand of type ' temp coopmat<3, 16, 16, 0> bfloat16_t' (or there is no acceptable conversion) ERROR: 36 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.bfloat16_error.frag.out000066400000000000000000000004131506534232700235520ustar00rootroot00000000000000spv.bfloat16_error.frag ERROR: 0:9: 'bfloat16 types not allowed as input/output' : qualifier ERROR: 0:10: 'bfloat16 types not allowed as input/output' : qualifier ERROR: 2 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.bitCast.frag.out000066400000000000000000000326261506534232700223270ustar00rootroot00000000000000spv.bitCast.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 14 26 40 56 103 112 123 136 142 150 161 174 180 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "idata" Name 14 "f1" Name 26 "f2" Name 40 "f3" Name 56 "f4" Name 63 "udata" Name 99 "fdata" Name 103 "i1" Name 112 "i2" Name 123 "i3" Name 136 "i4" Name 142 "u1" Name 150 "u2" Name 161 "u3" Name 174 "u4" Name 180 "fragColor" Decorate 14(f1) Location 8 Decorate 26(f2) Location 9 Decorate 40(f3) Location 10 Decorate 56(f4) Location 11 Decorate 103(i1) Flat Decorate 103(i1) Location 0 Decorate 112(i2) Flat Decorate 112(i2) Location 1 Decorate 123(i3) Flat Decorate 123(i3) Location 2 Decorate 136(i4) Flat Decorate 136(i4) Location 3 Decorate 142(u1) Flat Decorate 142(u1) Location 4 Decorate 150(u2) Flat Decorate 150(u2) Location 5 Decorate 161(u3) Flat Decorate 161(u3) Location 6 Decorate 174(u4) Flat Decorate 174(u4) Location 7 Decorate 180(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 4 8: TypePointer Function 7(ivec4) 10: 6(int) Constant 0 11: 7(ivec4) ConstantComposite 10 10 10 10 12: TypeFloat 32 13: TypePointer Input 12(float) 14(f1): 13(ptr) Variable Input 17: TypeInt 32 0 18: 17(int) Constant 0 19: TypePointer Function 6(int) 24: TypeVector 12(float) 2 25: TypePointer Input 24(fvec2) 26(f2): 25(ptr) Variable Input 28: TypeVector 6(int) 2 35: 17(int) Constant 1 38: TypeVector 12(float) 3 39: TypePointer Input 38(fvec3) 40(f3): 39(ptr) Variable Input 42: TypeVector 6(int) 3 51: 17(int) Constant 2 54: TypeVector 12(float) 4 55: TypePointer Input 54(fvec4) 56(f4): 55(ptr) Variable Input 61: TypeVector 17(int) 4 62: TypePointer Function 61(ivec4) 64: 61(ivec4) ConstantComposite 18 18 18 18 67: TypePointer Function 17(int) 73: TypeVector 17(int) 2 83: TypeVector 17(int) 3 98: TypePointer Function 54(fvec4) 100: 12(float) Constant 0 101: 54(fvec4) ConstantComposite 100 100 100 100 102: TypePointer Input 6(int) 103(i1): 102(ptr) Variable Input 106: TypePointer Function 12(float) 111: TypePointer Input 28(ivec2) 112(i2): 111(ptr) Variable Input 122: TypePointer Input 42(ivec3) 123(i3): 122(ptr) Variable Input 135: TypePointer Input 7(ivec4) 136(i4): 135(ptr) Variable Input 141: TypePointer Input 17(int) 142(u1): 141(ptr) Variable Input 149: TypePointer Input 73(ivec2) 150(u2): 149(ptr) Variable Input 160: TypePointer Input 83(ivec3) 161(u3): 160(ptr) Variable Input 173: TypePointer Input 61(ivec4) 174(u4): 173(ptr) Variable Input 179: TypePointer Output 54(fvec4) 180(fragColor): 179(ptr) Variable Output 184: TypeBool 185: TypeVector 184(bool) 4 194: 12(float) Constant 1045220557 195: 54(fvec4) ConstantComposite 194 194 194 194 4(main): 2 Function None 3 5: Label 9(idata): 8(ptr) Variable Function 63(udata): 62(ptr) Variable Function 99(fdata): 98(ptr) Variable Function 188: 98(ptr) Variable Function Store 9(idata) 11 15: 12(float) Load 14(f1) 16: 6(int) Bitcast 15 20: 19(ptr) AccessChain 9(idata) 18 21: 6(int) Load 20 22: 6(int) IAdd 21 16 23: 19(ptr) AccessChain 9(idata) 18 Store 23 22 27: 24(fvec2) Load 26(f2) 29: 28(ivec2) Bitcast 27 30: 7(ivec4) Load 9(idata) 31: 28(ivec2) VectorShuffle 30 30 0 1 32: 28(ivec2) IAdd 31 29 33: 19(ptr) AccessChain 9(idata) 18 34: 6(int) CompositeExtract 32 0 Store 33 34 36: 19(ptr) AccessChain 9(idata) 35 37: 6(int) CompositeExtract 32 1 Store 36 37 41: 38(fvec3) Load 40(f3) 43: 42(ivec3) Bitcast 41 44: 7(ivec4) Load 9(idata) 45: 42(ivec3) VectorShuffle 44 44 0 1 2 46: 42(ivec3) IAdd 45 43 47: 19(ptr) AccessChain 9(idata) 18 48: 6(int) CompositeExtract 46 0 Store 47 48 49: 19(ptr) AccessChain 9(idata) 35 50: 6(int) CompositeExtract 46 1 Store 49 50 52: 19(ptr) AccessChain 9(idata) 51 53: 6(int) CompositeExtract 46 2 Store 52 53 57: 54(fvec4) Load 56(f4) 58: 7(ivec4) Bitcast 57 59: 7(ivec4) Load 9(idata) 60: 7(ivec4) IAdd 59 58 Store 9(idata) 60 Store 63(udata) 64 65: 12(float) Load 14(f1) 66: 17(int) Bitcast 65 68: 67(ptr) AccessChain 63(udata) 18 69: 17(int) Load 68 70: 17(int) IAdd 69 66 71: 67(ptr) AccessChain 63(udata) 18 Store 71 70 72: 24(fvec2) Load 26(f2) 74: 73(ivec2) Bitcast 72 75: 61(ivec4) Load 63(udata) 76: 73(ivec2) VectorShuffle 75 75 0 1 77: 73(ivec2) IAdd 76 74 78: 67(ptr) AccessChain 63(udata) 18 79: 17(int) CompositeExtract 77 0 Store 78 79 80: 67(ptr) AccessChain 63(udata) 35 81: 17(int) CompositeExtract 77 1 Store 80 81 82: 38(fvec3) Load 40(f3) 84: 83(ivec3) Bitcast 82 85: 61(ivec4) Load 63(udata) 86: 83(ivec3) VectorShuffle 85 85 0 1 2 87: 83(ivec3) IAdd 86 84 88: 67(ptr) AccessChain 63(udata) 18 89: 17(int) CompositeExtract 87 0 Store 88 89 90: 67(ptr) AccessChain 63(udata) 35 91: 17(int) CompositeExtract 87 1 Store 90 91 92: 67(ptr) AccessChain 63(udata) 51 93: 17(int) CompositeExtract 87 2 Store 92 93 94: 54(fvec4) Load 56(f4) 95: 61(ivec4) Bitcast 94 96: 61(ivec4) Load 63(udata) 97: 61(ivec4) IAdd 96 95 Store 63(udata) 97 Store 99(fdata) 101 104: 6(int) Load 103(i1) 105: 12(float) Bitcast 104 107: 106(ptr) AccessChain 99(fdata) 18 108: 12(float) Load 107 109: 12(float) FAdd 108 105 110: 106(ptr) AccessChain 99(fdata) 18 Store 110 109 113: 28(ivec2) Load 112(i2) 114: 24(fvec2) Bitcast 113 115: 54(fvec4) Load 99(fdata) 116: 24(fvec2) VectorShuffle 115 115 0 1 117: 24(fvec2) FAdd 116 114 118: 106(ptr) AccessChain 99(fdata) 18 119: 12(float) CompositeExtract 117 0 Store 118 119 120: 106(ptr) AccessChain 99(fdata) 35 121: 12(float) CompositeExtract 117 1 Store 120 121 124: 42(ivec3) Load 123(i3) 125: 38(fvec3) Bitcast 124 126: 54(fvec4) Load 99(fdata) 127: 38(fvec3) VectorShuffle 126 126 0 1 2 128: 38(fvec3) FAdd 127 125 129: 106(ptr) AccessChain 99(fdata) 18 130: 12(float) CompositeExtract 128 0 Store 129 130 131: 106(ptr) AccessChain 99(fdata) 35 132: 12(float) CompositeExtract 128 1 Store 131 132 133: 106(ptr) AccessChain 99(fdata) 51 134: 12(float) CompositeExtract 128 2 Store 133 134 137: 7(ivec4) Load 136(i4) 138: 54(fvec4) Bitcast 137 139: 54(fvec4) Load 99(fdata) 140: 54(fvec4) FAdd 139 138 Store 99(fdata) 140 143: 17(int) Load 142(u1) 144: 12(float) Bitcast 143 145: 106(ptr) AccessChain 99(fdata) 18 146: 12(float) Load 145 147: 12(float) FAdd 146 144 148: 106(ptr) AccessChain 99(fdata) 18 Store 148 147 151: 73(ivec2) Load 150(u2) 152: 24(fvec2) Bitcast 151 153: 54(fvec4) Load 99(fdata) 154: 24(fvec2) VectorShuffle 153 153 0 1 155: 24(fvec2) FAdd 154 152 156: 106(ptr) AccessChain 99(fdata) 18 157: 12(float) CompositeExtract 155 0 Store 156 157 158: 106(ptr) AccessChain 99(fdata) 35 159: 12(float) CompositeExtract 155 1 Store 158 159 162: 83(ivec3) Load 161(u3) 163: 38(fvec3) Bitcast 162 164: 54(fvec4) Load 99(fdata) 165: 38(fvec3) VectorShuffle 164 164 0 1 2 166: 38(fvec3) FAdd 165 163 167: 106(ptr) AccessChain 99(fdata) 18 168: 12(float) CompositeExtract 166 0 Store 167 168 169: 106(ptr) AccessChain 99(fdata) 35 170: 12(float) CompositeExtract 166 1 Store 169 170 171: 106(ptr) AccessChain 99(fdata) 51 172: 12(float) CompositeExtract 166 2 Store 171 172 175: 61(ivec4) Load 174(u4) 176: 54(fvec4) Bitcast 175 177: 54(fvec4) Load 99(fdata) 178: 54(fvec4) FAdd 177 176 Store 99(fdata) 178 181: 7(ivec4) Load 9(idata) 182: 61(ivec4) Bitcast 181 183: 61(ivec4) Load 63(udata) 186: 185(bvec4) IEqual 182 183 187: 184(bool) All 186 SelectionMerge 190 None BranchConditional 187 189 192 189: Label 191: 54(fvec4) Load 99(fdata) Store 188 191 Branch 190 192: Label 193: 54(fvec4) Load 99(fdata) 196: 54(fvec4) FAdd 193 195 Store 188 196 Branch 190 190: Label 197: 54(fvec4) Load 188 Store 180(fragColor) 197 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bool.vert.out000066400000000000000000000077671506534232700217420ustar00rootroot00000000000000spv.bool.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 24 Source GLSL 450 Name 4 "main" Name 10 "foo(b1;" Name 9 "b" Name 22 "gl_PerVertex" MemberName 22(gl_PerVertex) 0 "gl_Position" MemberName 22(gl_PerVertex) 1 "gl_PointSize" MemberName 22(gl_PerVertex) 2 "gl_ClipDistance" MemberName 22(gl_PerVertex) 3 "gl_CullDistance" Name 24 "" Name 27 "ubname" MemberName 27(ubname) 0 "b" Name 29 "ubinst" Name 30 "param" Decorate 22(gl_PerVertex) Block MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance Decorate 27(ubname) Block MemberDecorate 27(ubname) 0 Offset 0 Decorate 29(ubinst) Binding 0 Decorate 29(ubinst) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 8: TypeFunction 6(bool) 7(ptr) 13: 6(bool) ConstantFalse 17: TypeFloat 32 18: TypeVector 17(float) 4 19: TypeInt 32 0 20: 19(int) Constant 1 21: TypeArray 17(float) 20 22(gl_PerVertex): TypeStruct 18(fvec4) 17(float) 21 21 23: TypePointer Output 22(gl_PerVertex) 24: 23(ptr) Variable Output 25: TypeInt 32 1 26: 25(int) Constant 0 27(ubname): TypeStruct 19(int) 28: TypePointer Uniform 27(ubname) 29(ubinst): 28(ptr) Variable Uniform 31: TypePointer Uniform 19(int) 34: 19(int) Constant 0 37: 17(float) Constant 0 38: 18(fvec4) ConstantComposite 37 37 37 37 39: 17(float) Constant 1065353216 40: 18(fvec4) ConstantComposite 39 39 39 39 41: TypeVector 6(bool) 4 44: TypePointer Output 18(fvec4) 4(main): 2 Function None 3 5: Label 30(param): 7(ptr) Variable Function 32: 31(ptr) AccessChain 29(ubinst) 26 33: 19(int) Load 32 35: 6(bool) INotEqual 33 34 Store 30(param) 35 36: 6(bool) FunctionCall 10(foo(b1;) 30(param) 42: 41(bvec4) CompositeConstruct 36 36 36 36 43: 18(fvec4) Select 42 38 40 45: 44(ptr) AccessChain 24 26 Store 45 43 Return FunctionEnd 10(foo(b1;): 6(bool) Function None 8 9(b): 7(ptr) FunctionParameter 11: Label 12: 6(bool) Load 9(b) 14: 6(bool) LogicalNotEqual 12 13 ReturnValue 14 FunctionEnd glslang-16.0.0/Test/baseResults/spv.boolInBlock.frag.out000066400000000000000000000166651506534232700231400ustar00rootroot00000000000000spv.boolInBlock.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 102 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 74 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 14 "foo(vb4;vb2;" Name 12 "paramb4" Name 13 "paramb2" Name 17 "b1" Name 25 "Buffer" MemberName 25(Buffer) 0 "b2" Name 27 "" Name 40 "Uniform" MemberName 40(Uniform) 0 "b4" Name 42 "" Name 60 "param" Name 66 "param" Name 74 "fragColor" Decorate 25(Buffer) BufferBlock MemberDecorate 25(Buffer) 0 Offset 0 Decorate 27 Binding 1 Decorate 27 DescriptorSet 0 Decorate 40(Uniform) Block MemberDecorate 40(Uniform) 0 Offset 0 Decorate 42 Binding 0 Decorate 42 DescriptorSet 0 Decorate 74(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypeVector 6(bool) 4 8: TypePointer Function 7(bvec4) 9: TypeVector 6(bool) 2 10: TypePointer Function 9(bvec2) 11: TypeFunction 2 8(ptr) 10(ptr) 16: TypePointer Function 6(bool) 18: TypeInt 32 0 19: 18(int) Constant 2 24: TypeVector 18(int) 2 25(Buffer): TypeStruct 24(ivec2) 26: TypePointer Uniform 25(Buffer) 27: 26(ptr) Variable Uniform 28: TypeInt 32 1 29: 28(int) Constant 0 30: 6(bool) ConstantFalse 31: 9(bvec2) ConstantComposite 30 30 32: 18(int) Constant 1 33: 24(ivec2) ConstantComposite 32 32 34: 18(int) Constant 0 35: 24(ivec2) ConstantComposite 34 34 37: TypePointer Uniform 24(ivec2) 39: TypeVector 18(int) 4 40(Uniform): TypeStruct 39(ivec4) 41: TypePointer Uniform 40(Uniform) 42: 41(ptr) Variable Uniform 43: TypePointer Uniform 18(int) 61: TypePointer Uniform 39(ivec4) 64: 39(ivec4) ConstantComposite 34 34 34 34 71: TypeFloat 32 72: TypeVector 71(float) 4 73: TypePointer Output 72(fvec4) 74(fragColor): 73(ptr) Variable Output 84: 71(float) Constant 0 85: 71(float) Constant 1065353216 4(main): 2 Function None 3 5: Label 60(param): 8(ptr) Variable Function 66(param): 10(ptr) Variable Function 36: 24(ivec2) Select 31 33 35 38: 37(ptr) AccessChain 27 29 Store 38 36 44: 43(ptr) AccessChain 42 29 19 45: 18(int) Load 44 46: 6(bool) INotEqual 45 34 SelectionMerge 48 None BranchConditional 46 47 48 47: Label 49: 43(ptr) AccessChain 42 29 34 50: 18(int) Load 49 51: 6(bool) INotEqual 50 34 52: 9(bvec2) CompositeConstruct 51 51 53: 24(ivec2) Select 52 33 35 54: 37(ptr) AccessChain 27 29 Store 54 53 Branch 48 48: Label 55: 43(ptr) AccessChain 27 29 34 56: 18(int) Load 55 57: 6(bool) INotEqual 56 34 SelectionMerge 59 None BranchConditional 57 58 59 58: Label 62: 61(ptr) AccessChain 42 29 63: 39(ivec4) Load 62 65: 7(bvec4) INotEqual 63 64 Store 60(param) 65 67: 2 FunctionCall 14(foo(vb4;vb2;) 60(param) 66(param) 68: 9(bvec2) Load 66(param) 69: 24(ivec2) Select 68 33 35 70: 37(ptr) AccessChain 27 29 Store 70 69 Branch 59 59: Label 75: 43(ptr) AccessChain 42 29 34 76: 18(int) Load 75 77: 6(bool) INotEqual 76 34 SelectionMerge 79 None BranchConditional 77 78 79 78: Label 80: 43(ptr) AccessChain 42 29 32 81: 18(int) Load 80 82: 6(bool) INotEqual 81 34 Branch 79 79: Label 83: 6(bool) Phi 77 59 82 78 86: 71(float) Select 83 85 84 87: 72(fvec4) CompositeConstruct 86 86 86 86 Store 74(fragColor) 87 88: 43(ptr) AccessChain 42 29 34 89: 18(int) Load 88 90: 6(bool) INotEqual 89 34 91: 6(bool) LogicalNot 90 SelectionMerge 93 None BranchConditional 91 92 93 92: Label 94: 43(ptr) AccessChain 42 29 32 95: 18(int) Load 94 96: 6(bool) INotEqual 95 34 Branch 93 93: Label 97: 6(bool) Phi 90 79 96 92 98: 71(float) Select 97 85 84 99: 72(fvec4) CompositeConstruct 98 98 98 98 100: 72(fvec4) Load 74(fragColor) 101: 72(fvec4) FSub 100 99 Store 74(fragColor) 101 Return FunctionEnd 14(foo(vb4;vb2;): 2 Function None 11 12(paramb4): 8(ptr) FunctionParameter 13(paramb2): 10(ptr) FunctionParameter 15: Label 17(b1): 16(ptr) Variable Function 20: 16(ptr) AccessChain 12(paramb4) 19 21: 6(bool) Load 20 Store 17(b1) 21 22: 6(bool) Load 17(b1) 23: 9(bvec2) CompositeConstruct 22 22 Store 13(paramb2) 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.branch-return.vert.out000066400000000000000000000060351506534232700235440ustar00rootroot00000000000000spv.branch-return.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 8 20 Source ESSL 310 Name 4 "main" Name 8 "gl_InstanceIndex" Name 18 "gl_PerVertex" MemberName 18(gl_PerVertex) 0 "gl_Position" MemberName 18(gl_PerVertex) 1 "gl_PointSize" Name 20 "" Decorate 8(gl_InstanceIndex) BuiltIn InstanceIndex Decorate 18(gl_PerVertex) Block MemberDecorate 18(gl_PerVertex) 0 BuiltIn Position MemberDecorate 18(gl_PerVertex) 1 BuiltIn PointSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Input 6(int) 8(gl_InstanceIndex): 7(ptr) Variable Input 16: TypeFloat 32 17: TypeVector 16(float) 4 18(gl_PerVertex): TypeStruct 17(fvec4) 16(float) 19: TypePointer Output 18(gl_PerVertex) 20: 19(ptr) Variable Output 21: 6(int) Constant 0 22: 16(float) Constant 0 23: 17(fvec4) ConstantComposite 22 22 22 22 24: TypePointer Output 17(fvec4) 30: 16(float) Constant 1039918957 31: TypeInt 32 0 32: 31(int) Constant 0 33: TypePointer Output 16(float) 4(main): 2 Function None 3 5: Label 9: 6(int) Load 8(gl_InstanceIndex) SelectionMerge 14 None Switch 9 14 case 0: 10 case 1: 11 case 2: 12 case 3: 13 10: Label Return 11: Label 25: 24(ptr) AccessChain 20 21 Store 25 23 Branch 14 12: Label Return 13: Label Return 14: Label 34: 33(ptr) AccessChain 20 21 32 35: 16(float) Load 34 36: 16(float) FAdd 35 30 37: 33(ptr) AccessChain 20 21 32 Store 37 36 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.buffer.autoassign.frag.out000066400000000000000000000110251506534232700243510ustar00rootroot00000000000000spv.buffer.autoassign.frag // Module Version 10000 // 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" 47 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 13 "psout" Name 16 "MyUB1" MemberName 16(MyUB1) 0 "g_a" MemberName 16(MyUB1) 1 "g_b" Name 18 "" Name 28 "MyUB2" MemberName 28(MyUB2) 0 "g_c" Name 30 "" Name 34 "MyUB3" MemberName 34(MyUB3) 0 "g_d" Name 36 "" Name 47 "@entryPointOutput.Color" Decorate 16(MyUB1) Block MemberDecorate 16(MyUB1) 0 Offset 0 MemberDecorate 16(MyUB1) 1 Offset 4 Decorate 18 Binding 20 Decorate 18 DescriptorSet 0 Decorate 28(MyUB2) Block MemberDecorate 28(MyUB2) 0 Offset 0 Decorate 30 Binding 15 Decorate 30 DescriptorSet 0 Decorate 34(MyUB3) Block MemberDecorate 34(MyUB3) 0 Offset 0 Decorate 36 Binding 16 Decorate 36 DescriptorSet 0 Decorate 47(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 8(PS_OUTPUT) 14: TypeInt 32 1 15: 14(int) Constant 0 16(MyUB1): TypeStruct 6(float) 14(int) 17: TypePointer Uniform 16(MyUB1) 18: 17(ptr) Variable Uniform 19: TypePointer Uniform 6(float) 22: 14(int) Constant 1 23: TypePointer Uniform 14(int) 28(MyUB2): TypeStruct 6(float) 29: TypePointer Uniform 28(MyUB2) 30: 29(ptr) Variable Uniform 34(MyUB3): TypeStruct 6(float) 35: TypePointer Uniform 34(MyUB3) 36: 35(ptr) Variable Uniform 41: TypePointer Function 7(fvec4) 46: TypePointer Output 7(fvec4) 47(@entryPointOutput.Color): 46(ptr) Variable Output 4(main): 2 Function None 3 5: Label 48:8(PS_OUTPUT) FunctionCall 10(@main() 49: 7(fvec4) CompositeExtract 48 0 Store 47(@entryPointOutput.Color) 49 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(psout): 12(ptr) Variable Function 20: 19(ptr) AccessChain 18 15 21: 6(float) Load 20 24: 23(ptr) AccessChain 18 22 25: 14(int) Load 24 26: 6(float) ConvertSToF 25 27: 6(float) FAdd 21 26 31: 19(ptr) AccessChain 30 15 32: 6(float) Load 31 33: 6(float) FAdd 27 32 37: 19(ptr) AccessChain 36 15 38: 6(float) Load 37 39: 6(float) FAdd 33 38 40: 7(fvec4) CompositeConstruct 39 39 39 39 42: 41(ptr) AccessChain 13(psout) 15 Store 42 40 43:8(PS_OUTPUT) Load 13(psout) ReturnValue 43 FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle1.frag.out000066400000000000000000000124351506534232700234400ustar00rootroot00000000000000spv.bufferhandle1.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 7 "t2" MemberName 7(t2) 0 "f" MemberName 7(t2) 1 "g" Name 13 "blockType" MemberName 13(blockType) 0 "a" MemberName 13(blockType) 1 "b" MemberName 13(blockType) 2 "c" MemberName 13(blockType) 3 "d" MemberName 13(blockType) 4 "e" MemberName 13(blockType) 5 "f" MemberName 13(blockType) 6 "g" Name 15 "t" Name 28 "j" Decorate 7(t2) Block MemberDecorate 7(t2) 0 Offset 0 MemberDecorate 7(t2) 1 Offset 8 Decorate 11 ArrayStride 4 Decorate 13(blockType) Block MemberDecorate 13(blockType) 0 Offset 0 MemberDecorate 13(blockType) 1 Offset 4 MemberDecorate 13(blockType) 2 Offset 8 MemberDecorate 13(blockType) 3 Offset 12 MemberDecorate 13(blockType) 4 Offset 16 MemberDecorate 13(blockType) 5 Offset 32 MemberDecorate 13(blockType) 6 Offset 48 Decorate 15(t) Binding 0 Decorate 15(t) DescriptorSet 0 Decorate 28(j) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7(t2): TypeStruct 6 6 8: TypeInt 32 1 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 8(int) 10 12: TypeVector 8(int) 4 13(blockType): TypeStruct 8(int) 8(int) 8(int) 8(int) 8(int) 11 12(ivec4) 6: TypePointer PhysicalStorageBufferEXT 13(blockType) 14: TypePointer StorageBuffer 7(t2) 15(t): 14(ptr) Variable StorageBuffer 16: 8(int) Constant 0 17: TypePointer StorageBuffer 6(ptr) 20: 8(int) Constant 1 23: TypePointer PhysicalStorageBufferEXT 8(int) 27: TypePointer Function 6(ptr) 32: 8(int) Constant 3 34: 8(int) Constant 2 40: 8(int) Constant 5 46: 8(int) Constant 6 47: 9(int) Constant 1 50: 9(int) Constant 5 4(main): 2 Function None 3 5: Label 28(j): 27(ptr) Variable Function 18: 17(ptr) AccessChain 15(t) 16 19: 6(ptr) Load 18 21: 17(ptr) AccessChain 15(t) 20 22: 6(ptr) Load 21 24: 23(ptr) AccessChain 22 16 25: 8(int) Load 24 Aligned 16 26: 23(ptr) AccessChain 19 20 Store 26 25 Aligned 4 29: 17(ptr) AccessChain 15(t) 16 30: 6(ptr) Load 29 Store 28(j) 30 31: 6(ptr) Load 28(j) 33: 6(ptr) Load 28(j) 35: 23(ptr) AccessChain 33 34 36: 8(int) Load 35 Aligned 8 37: 23(ptr) AccessChain 31 32 Store 37 36 Aligned 4 38: 6(ptr) Load 28(j) 39: 6(ptr) Load 28(j) 41: 23(ptr) AccessChain 39 40 20 42: 8(int) Load 41 Aligned 4 43: 23(ptr) AccessChain 38 32 Store 43 42 Aligned 4 44: 6(ptr) Load 28(j) 45: 6(ptr) Load 28(j) 48: 23(ptr) AccessChain 45 46 47 49: 8(int) Load 48 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 4 50 51: 23(ptr) AccessChain 44 32 Store 51 49 Aligned 4 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle10.frag.out000066400000000000000000000103011506534232700235060ustar00rootroot00000000000000spv.bufferhandle10.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint Fragment 4 "main" 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 7 "t2" MemberName 7(t2) 0 "f" Name 10 "blockType" MemberName 10(blockType) 0 "x" Name 12 "t" Name 19 "i" Name 28 "b" Name 34 "b2" Decorate 7(t2) Block MemberDecorate 7(t2) 0 Offset 0 Decorate 9 ArrayStride 4 Decorate 10(blockType) Block MemberDecorate 10(blockType) 0 Offset 0 Decorate 12(t) Binding 0 Decorate 12(t) DescriptorSet 0 Decorate 19(i) Flat Decorate 19(i) Location 0 Decorate 28(b) DecorationAliasedPointerEXT Decorate 34(b2) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7(t2): TypeStruct 6 8: TypeInt 32 0 9: TypeRuntimeArray 8(int) 10(blockType): TypeStruct 9 6: TypePointer PhysicalStorageBufferEXT 10(blockType) 11: TypePointer StorageBuffer 7(t2) 12(t): 11(ptr) Variable StorageBuffer 13: TypeInt 32 1 14: 13(int) Constant 0 15: TypePointer StorageBuffer 6(ptr) 18: TypePointer Input 8(int) 19(i): 18(ptr) Variable Input 21: TypePointer PhysicalStorageBufferEXT 8(int) 23: 8(int) Constant 1 24: 8(int) Constant 5 25: 8(int) Constant 0 27: TypePointer Function 6(ptr) 32: 8(int) Constant 2 38: 8(int) Constant 3 4(main): 2 Function None 3 5: Label 28(b): 27(ptr) Variable Function 34(b2): 27(ptr) Variable Function 16: 15(ptr) AccessChain 12(t) 14 17: 6(ptr) Load 16 20: 8(int) Load 19(i) 22: 21(ptr) AccessChain 17 14 20 26: 8(int) AtomicIAdd 22 24 25 23 29: 15(ptr) AccessChain 12(t) 14 30: 6(ptr) Load 29 Store 28(b) 30 31: 6(ptr) Load 28(b) 33: 21(ptr) AccessChain 31 14 14 Store 33 32 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 4 24 35: 15(ptr) AccessChain 12(t) 14 36: 6(ptr) Load 35 Store 34(b2) 36 Volatile 37: 6(ptr) Load 34(b2) Volatile 39: 21(ptr) AccessChain 37 14 14 Store 39 38 Volatile Aligned MakePointerAvailableKHR NonPrivatePointerKHR 4 24 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle11.frag.out000066400000000000000000000136211506534232700235170ustar00rootroot00000000000000spv.bufferhandle11.frag WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader Capability StorageBuffer8BitAccess Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_8bit_storage" Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_shader_16bit_storage" SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 12 "compare_uint8_t(u1;u1;" Name 10 "a" Name 11 "b" Name 20 "allOk" Name 26 "PC" MemberName 26(PC) 0 "block" Name 28 "Block" MemberName 28(Block) 0 "var" Name 30 "" Name 41 "param" Name 42 "param" Name 48 "AcBlock" MemberName 48(AcBlock) 0 "ac_numPassed" Name 50 "" Decorate 26(PC) Block MemberDecorate 26(PC) 0 Offset 0 Decorate 28(Block) Block MemberDecorate 28(Block) 0 Offset 0 Decorate 48(AcBlock) Block MemberDecorate 48(AcBlock) 0 Offset 0 Decorate 50 Binding 0 Decorate 50 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 8: TypeBool 9: TypeFunction 8(bool) 7(ptr) 7(ptr) 19: TypePointer Function 8(bool) 21: 8(bool) ConstantTrue TypeForwardPointer 25 PhysicalStorageBufferEXT 26(PC): TypeStruct 25 27: TypeInt 8 0 28(Block): TypeStruct 27(int8_t) 25: TypePointer PhysicalStorageBufferEXT 28(Block) 29: TypePointer PushConstant 26(PC) 30: 29(ptr) Variable PushConstant 31: TypeInt 32 1 32: 31(int) Constant 0 33: TypePointer PushConstant 25(ptr) 36: TypePointer PhysicalStorageBufferEXT 27(int8_t) 40: 6(int) Constant 7 48(AcBlock): TypeStruct 6(int) 49: TypePointer StorageBuffer 48(AcBlock) 50: 49(ptr) Variable StorageBuffer 51: TypePointer StorageBuffer 6(int) 54: 31(int) Constant 1 58: 6(int) Constant 9 4(main): 2 Function None 3 5: Label 20(allOk): 19(ptr) Variable Function 41(param): 7(ptr) Variable Function 42(param): 7(ptr) Variable Function Store 20(allOk) 21 22: 8(bool) Load 20(allOk) SelectionMerge 24 None BranchConditional 22 23 24 23: Label 34: 33(ptr) AccessChain 30 32 35: 25(ptr) Load 34 37: 36(ptr) AccessChain 35 32 38: 27(int8_t) Load 37 Aligned 16 39: 6(int) UConvert 38 Store 41(param) 39 Store 42(param) 40 43: 8(bool) FunctionCall 12(compare_uint8_t(u1;u1;) 41(param) 42(param) Branch 24 24: Label 44: 8(bool) Phi 22 5 43 23 Store 20(allOk) 44 45: 8(bool) Load 20(allOk) SelectionMerge 47 None BranchConditional 45 46 47 46: Label 52: 51(ptr) AccessChain 50 32 53: 6(int) Load 52 55: 6(int) IAdd 53 54 Store 52 55 Branch 47 47: Label 56: 33(ptr) AccessChain 30 32 57: 25(ptr) Load 56 59: 27(int8_t) UConvert 58 60: 36(ptr) AccessChain 57 32 Store 60 59 Aligned 16 Return FunctionEnd 12(compare_uint8_t(u1;u1;): 8(bool) Function None 9 10(a): 7(ptr) FunctionParameter 11(b): 7(ptr) FunctionParameter 13: Label 14: 6(int) Load 10(a) 15: 6(int) Load 11(b) 16: 8(bool) IEqual 14 15 ReturnValue 16 FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle12.frag.out000066400000000000000000000367021506534232700235250ustar00rootroot00000000000000spv.bufferhandle12.frag WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 183 Capability Shader Capability StorageUniformBufferBlock16 Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_16bit_storage" Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_shader_16bit_storage" SourceExtension "GL_EXT_shader_8bit_storage" Name 4 "main" Name 12 "compare_float(f1;f1;" Name 10 "a" Name 11 "b" Name 19 "compare_vec3(vf3;vf3;" Name 17 "a" Name 18 "b" Name 26 "compare_mat2x3(mf23;mf23;" Name 24 "a" Name 25 "b" Name 34 "compare_ivec2(vi2;vi2;" Name 32 "a" Name 33 "b" Name 42 "compare_uvec3(vu3;vu3;" Name 40 "a" Name 41 "b" Name 46 "compare_float16_t(f1;f1;" Name 44 "a" Name 45 "b" Name 56 "param" Name 60 "param" Name 66 "param" Name 70 "param" Name 77 "param" Name 81 "param" Name 89 "param" Name 92 "param" Name 99 "param" Name 102 "param" Name 131 "allOk" Name 139 "PC" MemberName 139(PC) 0 "blockB" MemberName 139(PC) 1 "blockC" MemberName 139(PC) 2 "blockD" Name 141 "BlockB" MemberName 141(BlockB) 0 "a" MemberName 141(BlockB) 1 "b" Name 142 "BlockC" MemberName 142(BlockC) 0 "c" Name 143 "BlockD" MemberName 143(BlockD) 0 "d" Name 145 "" Name 157 "param" Name 161 "param" Name 167 "AcBlock" MemberName 167(AcBlock) 0 "ac_numPassed" Name 169 "" Decorate 139(PC) Block MemberDecorate 139(PC) 0 Offset 0 MemberDecorate 139(PC) 1 Offset 8 MemberDecorate 139(PC) 2 Offset 16 Decorate 141(BlockB) Block MemberDecorate 141(BlockB) 0 Offset 0 MemberDecorate 141(BlockB) 1 Offset 8 Decorate 142(BlockC) Block MemberDecorate 142(BlockC) 0 RelaxedPrecision MemberDecorate 142(BlockC) 0 ColMajor MemberDecorate 142(BlockC) 0 MatrixStride 16 MemberDecorate 142(BlockC) 0 Offset 0 Decorate 143(BlockD) Block MemberDecorate 143(BlockD) 0 RelaxedPrecision MemberDecorate 143(BlockD) 0 Offset 0 Decorate 160 RelaxedPrecision Decorate 167(AcBlock) Block MemberDecorate 167(AcBlock) 0 Offset 0 Decorate 169 Binding 0 Decorate 169 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeBool 9: TypeFunction 8(bool) 7(ptr) 7(ptr) 14: TypeVector 6(float) 3 15: TypePointer Function 14(fvec3) 16: TypeFunction 8(bool) 15(ptr) 15(ptr) 21: TypeMatrix 14(fvec3) 2 22: TypePointer Function 21 23: TypeFunction 8(bool) 22(ptr) 22(ptr) 28: TypeInt 32 1 29: TypeVector 28(int) 2 30: TypePointer Function 29(ivec2) 31: TypeFunction 8(bool) 30(ptr) 30(ptr) 36: TypeInt 32 0 37: TypeVector 36(int) 3 38: TypePointer Function 37(ivec3) 39: TypeFunction 8(bool) 38(ptr) 38(ptr) 52: 6(float) Constant 1028443341 57: 36(int) Constant 0 67: 36(int) Constant 1 78: 36(int) Constant 2 88: 28(int) Constant 0 98: 28(int) Constant 1 111: TypeVector 8(bool) 2 118: TypeVector 8(bool) 3 130: TypePointer Function 8(bool) 132: 8(bool) ConstantTrue TypeForwardPointer 136 PhysicalStorageBufferEXT TypeForwardPointer 137 PhysicalStorageBufferEXT TypeForwardPointer 138 PhysicalStorageBufferEXT 139(PC): TypeStruct 136 137 138 140: TypeFloat 16 141(BlockB): TypeStruct 140(float16_t) 29(ivec2) 136: TypePointer PhysicalStorageBufferEXT 141(BlockB) 142(BlockC): TypeStruct 21 137: TypePointer PhysicalStorageBufferEXT 142(BlockC) 143(BlockD): TypeStruct 37(ivec3) 138: TypePointer PhysicalStorageBufferEXT 143(BlockD) 144: TypePointer PushConstant 139(PC) 145: 144(ptr) Variable PushConstant 146: TypePointer PushConstant 137(ptr) 149: 6(float) Constant 3231711232 150: 6(float) Constant 1065353216 151: 6(float) Constant 3235905536 152: 14(fvec3) ConstantComposite 149 150 151 153: 6(float) Constant 1073741824 154: 6(float) Constant 1090519040 155: 14(fvec3) ConstantComposite 150 153 154 156: 21 ConstantComposite 152 155 158: TypePointer PhysicalStorageBufferEXT 21 167(AcBlock): TypeStruct 36(int) 168: TypePointer StorageBuffer 167(AcBlock) 169: 168(ptr) Variable StorageBuffer 170: TypePointer StorageBuffer 36(int) 174: 28(int) Constant 2 175: TypePointer PushConstant 138(ptr) 178: 36(int) Constant 8 179: 36(int) Constant 5 180: 37(ivec3) ConstantComposite 178 67 179 181: TypePointer PhysicalStorageBufferEXT 37(ivec3) 4(main): 2 Function None 3 5: Label 131(allOk): 130(ptr) Variable Function 157(param): 22(ptr) Variable Function 161(param): 22(ptr) Variable Function Store 131(allOk) 132 133: 8(bool) Load 131(allOk) SelectionMerge 135 None BranchConditional 133 134 135 134: Label 147: 146(ptr) AccessChain 145 98 148: 137(ptr) Load 147 159: 158(ptr) AccessChain 148 88 160: 21 Load 159 Aligned 16 Store 157(param) 160 Store 161(param) 156 162: 8(bool) FunctionCall 26(compare_mat2x3(mf23;mf23;) 157(param) 161(param) Branch 135 135: Label 163: 8(bool) Phi 133 5 162 134 Store 131(allOk) 163 164: 8(bool) Load 131(allOk) SelectionMerge 166 None BranchConditional 164 165 166 165: Label 171: 170(ptr) AccessChain 169 88 172: 36(int) Load 171 173: 36(int) IAdd 172 98 Store 171 173 Branch 166 166: Label 176: 175(ptr) AccessChain 145 174 177: 138(ptr) Load 176 182: 181(ptr) AccessChain 177 88 Store 182 180 Aligned 16 Return FunctionEnd 12(compare_float(f1;f1;): 8(bool) Function None 9 10(a): 7(ptr) FunctionParameter 11(b): 7(ptr) FunctionParameter 13: Label 48: 6(float) Load 10(a) 49: 6(float) Load 11(b) 50: 6(float) FSub 48 49 51: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 50 53: 8(bool) FOrdLessThan 51 52 ReturnValue 53 FunctionEnd 19(compare_vec3(vf3;vf3;): 8(bool) Function None 16 17(a): 15(ptr) FunctionParameter 18(b): 15(ptr) FunctionParameter 20: Label 56(param): 7(ptr) Variable Function 60(param): 7(ptr) Variable Function 66(param): 7(ptr) Variable Function 70(param): 7(ptr) Variable Function 77(param): 7(ptr) Variable Function 81(param): 7(ptr) Variable Function 58: 7(ptr) AccessChain 17(a) 57 59: 6(float) Load 58 Store 56(param) 59 61: 7(ptr) AccessChain 18(b) 57 62: 6(float) Load 61 Store 60(param) 62 63: 8(bool) FunctionCall 12(compare_float(f1;f1;) 56(param) 60(param) SelectionMerge 65 None BranchConditional 63 64 65 64: Label 68: 7(ptr) AccessChain 17(a) 67 69: 6(float) Load 68 Store 66(param) 69 71: 7(ptr) AccessChain 18(b) 67 72: 6(float) Load 71 Store 70(param) 72 73: 8(bool) FunctionCall 12(compare_float(f1;f1;) 66(param) 70(param) Branch 65 65: Label 74: 8(bool) Phi 63 20 73 64 SelectionMerge 76 None BranchConditional 74 75 76 75: Label 79: 7(ptr) AccessChain 17(a) 78 80: 6(float) Load 79 Store 77(param) 80 82: 7(ptr) AccessChain 18(b) 78 83: 6(float) Load 82 Store 81(param) 83 84: 8(bool) FunctionCall 12(compare_float(f1;f1;) 77(param) 81(param) Branch 76 76: Label 85: 8(bool) Phi 74 65 84 75 ReturnValue 85 FunctionEnd 26(compare_mat2x3(mf23;mf23;): 8(bool) Function None 23 24(a): 22(ptr) FunctionParameter 25(b): 22(ptr) FunctionParameter 27: Label 89(param): 15(ptr) Variable Function 92(param): 15(ptr) Variable Function 99(param): 15(ptr) Variable Function 102(param): 15(ptr) Variable Function 90: 15(ptr) AccessChain 24(a) 88 91: 14(fvec3) Load 90 Store 89(param) 91 93: 15(ptr) AccessChain 25(b) 88 94: 14(fvec3) Load 93 Store 92(param) 94 95: 8(bool) FunctionCall 19(compare_vec3(vf3;vf3;) 89(param) 92(param) SelectionMerge 97 None BranchConditional 95 96 97 96: Label 100: 15(ptr) AccessChain 24(a) 98 101: 14(fvec3) Load 100 Store 99(param) 101 103: 15(ptr) AccessChain 25(b) 98 104: 14(fvec3) Load 103 Store 102(param) 104 105: 8(bool) FunctionCall 19(compare_vec3(vf3;vf3;) 99(param) 102(param) Branch 97 97: Label 106: 8(bool) Phi 95 27 105 96 ReturnValue 106 FunctionEnd 34(compare_ivec2(vi2;vi2;): 8(bool) Function None 31 32(a): 30(ptr) FunctionParameter 33(b): 30(ptr) FunctionParameter 35: Label 109: 29(ivec2) Load 32(a) 110: 29(ivec2) Load 33(b) 112: 111(bvec2) IEqual 109 110 113: 8(bool) All 112 ReturnValue 113 FunctionEnd 42(compare_uvec3(vu3;vu3;): 8(bool) Function None 39 40(a): 38(ptr) FunctionParameter 41(b): 38(ptr) FunctionParameter 43: Label 116: 37(ivec3) Load 40(a) 117: 37(ivec3) Load 41(b) 119: 118(bvec3) IEqual 116 117 120: 8(bool) All 119 ReturnValue 120 FunctionEnd 46(compare_float16_t(f1;f1;): 8(bool) Function None 9 44(a): 7(ptr) FunctionParameter 45(b): 7(ptr) FunctionParameter 47: Label 123: 6(float) Load 44(a) 124: 6(float) Load 45(b) 125: 6(float) FSub 123 124 126: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 125 127: 8(bool) FOrdLessThan 126 52 ReturnValue 127 FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle13.frag.out000066400000000000000000000134031506534232700235170ustar00rootroot00000000000000spv.bufferhandle13.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 58 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 8 "t4" MemberName 8(t4) 0 "j" Name 11 "f1(1;" Name 10 "y" Name 16 "f2(1;" Name 15 "y" Name 19 "f3(1;" Name 18 "y" Name 22 "f4(1;" Name 21 "y" Name 34 "a" Name 35 "t5" MemberName 35(t5) 0 "m" Name 37 "s5" Name 42 "b" Name 47 "param" Name 52 "param" Name 56 "g1" Name 57 "g2" Decorate 8(t4) Block MemberDecorate 8(t4) 0 Offset 0 Decorate 10(y) Aliased Decorate 15(y) DecorationAliasedPointerEXT Decorate 18(y) Restrict Decorate 21(y) Restrict Decorate 21(y) DecorationRestrictPointerEXT Decorate 34(a) DecorationAliasedPointerEXT Decorate 35(t5) Block MemberDecorate 35(t5) 0 Offset 0 Decorate 37(s5) Binding 0 Decorate 37(s5) DescriptorSet 0 Decorate 42(b) Restrict Decorate 42(b) DecorationRestrictPointerEXT Decorate 47(param) DecorationAliasedPointerEXT Decorate 52(param) DecorationAliasedPointerEXT Decorate 56(g1) DecorationAliasedPointerEXT Decorate 57(g2) Restrict Decorate 57(g2) DecorationRestrictPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7: TypeInt 32 1 8(t4): TypeStruct 7(int) 6: TypePointer PhysicalStorageBufferEXT 8(t4) 9: TypeFunction 6(ptr) 6(ptr) 13: TypePointer Function 6(ptr) 14: TypeFunction 6(ptr) 13(ptr) 35(t5): TypeStruct 6(ptr) 36: TypePointer StorageBuffer 35(t5) 37(s5): 36(ptr) Variable StorageBuffer 38: 7(int) Constant 0 39: TypePointer StorageBuffer 6(ptr) 55: TypePointer Private 6(ptr) 56(g1): 55(ptr) Variable Private 4(main): 2 Function None 3 5: Label 34(a): 13(ptr) Variable Function 42(b): 13(ptr) Variable Function 47(param): 13(ptr) Variable Function 52(param): 13(ptr) Variable Function 57(g2): 13(ptr) Variable Function 40: 39(ptr) AccessChain 37(s5) 38 41: 6(ptr) Load 40 Store 34(a) 41 43: 39(ptr) AccessChain 37(s5) 38 44: 6(ptr) Load 43 Store 42(b) 44 45: 6(ptr) Load 34(a) 46: 6(ptr) FunctionCall 11(f1(1;) 45 48: 6(ptr) Load 34(a) Store 47(param) 48 49: 6(ptr) FunctionCall 16(f2(1;) 47(param) 50: 6(ptr) Load 34(a) 51: 6(ptr) FunctionCall 19(f3(1;) 50 53: 6(ptr) Load 34(a) Store 52(param) 53 54: 6(ptr) FunctionCall 22(f4(1;) 52(param) Return FunctionEnd 11(f1(1;): 6(ptr) Function None 9 10(y): 6(ptr) FunctionParameter 12: Label ReturnValue 10(y) FunctionEnd 16(f2(1;): 6(ptr) Function None 14 15(y): 13(ptr) FunctionParameter 17: Label 26: 6(ptr) Load 15(y) ReturnValue 26 FunctionEnd 19(f3(1;): 6(ptr) Function None 9 18(y): 6(ptr) FunctionParameter 20: Label ReturnValue 18(y) FunctionEnd 22(f4(1;): 6(ptr) Function None 14 21(y): 13(ptr) FunctionParameter 23: Label 31: 6(ptr) Load 21(y) ReturnValue 31 FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle14.frag.out000066400000000000000000000133171506534232700235240ustar00rootroot00000000000000spv.bufferhandle14.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 8 "T1" MemberName 8(T1) 0 "i" MemberName 8(T1) 1 "j" MemberName 8(T1) 2 "k" Name 10 "t1" Name 20 "T2" MemberName 20(T2) 0 "i" MemberName 20(T2) 1 "j" MemberName 20(T2) 2 "k" Name 22 "t2" Name 29 "T3" MemberName 29(T3) 0 "i" MemberName 29(T3) 1 "j" MemberName 29(T3) 2 "k" Name 31 "t3" Name 38 "T4" MemberName 38(T4) 0 "i" MemberName 38(T4) 1 "j" MemberName 38(T4) 2 "k" Name 40 "t4" Decorate 8(T1) Block MemberDecorate 8(T1) 0 Offset 0 MemberDecorate 8(T1) 1 Offset 4 MemberDecorate 8(T1) 2 Offset 8 Decorate 10(t1) DecorationAliasedPointerEXT Decorate 20(T2) Block MemberDecorate 20(T2) 0 Offset 0 MemberDecorate 20(T2) 1 Offset 4 MemberDecorate 20(T2) 2 Offset 8 Decorate 22(t2) DecorationAliasedPointerEXT Decorate 29(T3) Block MemberDecorate 29(T3) 0 Offset 0 MemberDecorate 29(T3) 1 Offset 4 MemberDecorate 29(T3) 2 Offset 8 Decorate 31(t3) DecorationAliasedPointerEXT Decorate 38(T4) Block MemberDecorate 38(T4) 0 Offset 0 MemberDecorate 38(T4) 1 Offset 4 MemberDecorate 38(T4) 2 Offset 8 Decorate 40(t4) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7: TypeInt 32 1 8(T1): TypeStruct 7(int) 7(int) 7(int) 6: TypePointer PhysicalStorageBufferEXT 8(T1) 9: TypePointer Function 6(ptr) 12: 7(int) Constant 0 14: 7(int) Constant 2 15: TypePointer PhysicalStorageBufferEXT 7(int) TypeForwardPointer 19 PhysicalStorageBufferEXT 20(T2): TypeStruct 7(int) 7(int) 7(int) 19: TypePointer PhysicalStorageBufferEXT 20(T2) 21: TypePointer Function 19(ptr) TypeForwardPointer 28 PhysicalStorageBufferEXT 29(T3): TypeStruct 7(int) 7(int) 7(int) 28: TypePointer PhysicalStorageBufferEXT 29(T3) 30: TypePointer Function 28(ptr) TypeForwardPointer 37 PhysicalStorageBufferEXT 38(T4): TypeStruct 7(int) 7(int) 7(int) 37: TypePointer PhysicalStorageBufferEXT 38(T4) 39: TypePointer Function 37(ptr) 4(main): 2 Function None 3 5: Label 10(t1): 9(ptr) Variable Function 22(t2): 21(ptr) Variable Function 31(t3): 30(ptr) Variable Function 40(t4): 39(ptr) Variable Function 11: 6(ptr) Load 10(t1) 13: 6(ptr) Load 10(t1) 16: 15(ptr) AccessChain 13 14 17: 7(int) Load 16 Aligned 4 18: 15(ptr) AccessChain 11 12 Store 18 17 Aligned 4 23: 19(ptr) Load 22(t2) 24: 19(ptr) Load 22(t2) 25: 15(ptr) AccessChain 24 14 26: 7(int) Load 25 Aligned 8 27: 15(ptr) AccessChain 23 12 Store 27 26 Aligned 8 32: 28(ptr) Load 31(t3) 33: 28(ptr) Load 31(t3) 34: 15(ptr) AccessChain 33 14 35: 7(int) Load 34 Aligned 8 36: 15(ptr) AccessChain 32 12 Store 36 35 Aligned 16 41: 37(ptr) Load 40(t4) 42: 37(ptr) Load 40(t4) 43: 15(ptr) AccessChain 42 14 44: 7(int) Load 43 Aligned 8 45: 15(ptr) AccessChain 41 12 Store 45 44 Aligned 32 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle15.frag.out000066400000000000000000000153141506534232700235240ustar00rootroot00000000000000spv.bufferhandle15.frag WARNING: 0:16: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" 37 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_scalar_block_layout" Name 4 "main" Name 9 "y" Name 13 "T4" MemberName 13(T4) 0 "t1" MemberName 13(T4) 1 "t2" MemberName 13(T4) 2 "t3" Name 15 "T1" MemberName 15(T1) 0 "x" Name 22 "T2" MemberName 22(T2) 0 "x" Name 28 "S" MemberName 28(S) 0 "a" MemberName 28(S) 1 "b" MemberName 28(S) 2 "c" Name 29 "T3" MemberName 29(T3) 0 "s" Name 31 "t4" Name 37 "i" Name 52 "z" Decorate 13(T4) Block MemberDecorate 13(T4) 0 Offset 0 MemberDecorate 13(T4) 1 Offset 8 MemberDecorate 13(T4) 2 Offset 16 Decorate 14 ArrayStride 12 Decorate 15(T1) Block MemberDecorate 15(T1) 0 Offset 0 Decorate 18 ArrayStride 12 Decorate 20 ArrayStride 24 Decorate 21 ArrayStride 96 Decorate 22(T2) Block MemberDecorate 22(T2) 0 Offset 0 Decorate 26 ArrayStride 36 MemberDecorate 28(S) 0 Offset 0 MemberDecorate 28(S) 1 RelaxedPrecision MemberDecorate 28(S) 1 ColMajor MemberDecorate 28(S) 1 MatrixStride 12 MemberDecorate 28(S) 1 Offset 12 MemberDecorate 28(S) 2 Offset 156 Decorate 29(T3) Block MemberDecorate 29(T3) 0 Offset 0 Decorate 31(t4) Binding 0 Decorate 31(t4) DescriptorSet 0 Decorate 37(i) Flat Decorate 37(i) Location 0 Decorate 59 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) TypeForwardPointer 10 PhysicalStorageBufferEXT TypeForwardPointer 11 PhysicalStorageBufferEXT TypeForwardPointer 12 PhysicalStorageBufferEXT 13(T4): TypeStruct 10 11 12 14: TypeRuntimeArray 7(fvec3) 15(T1): TypeStruct 14 10: TypePointer PhysicalStorageBufferEXT 15(T1) 16: TypeInt 32 0 17: 16(int) Constant 2 18: TypeArray 7(fvec3) 17 19: 16(int) Constant 4 20: TypeArray 18 19 21: TypeRuntimeArray 20 22(T2): TypeStruct 21 11: TypePointer PhysicalStorageBufferEXT 22(T2) 23: TypeInt 32 1 24: TypeVector 23(int) 3 25: TypeMatrix 7(fvec3) 3 26: TypeArray 25 19 27: TypeVector 6(float) 4 28(S): TypeStruct 24(ivec3) 26 27(fvec4) 29(T3): TypeStruct 28(S) 12: TypePointer PhysicalStorageBufferEXT 29(T3) 30: TypePointer StorageBuffer 13(T4) 31(t4): 30(ptr) Variable StorageBuffer 32: 23(int) Constant 0 33: TypePointer StorageBuffer 10(ptr) 36: TypePointer Input 23(int) 37(i): 36(ptr) Variable Input 39: TypePointer PhysicalStorageBufferEXT 7(fvec3) 42: 23(int) Constant 1 43: TypePointer StorageBuffer 11(ptr) 51: TypePointer Function 25 53: 23(int) Constant 2 54: TypePointer StorageBuffer 12(ptr) 57: TypePointer PhysicalStorageBufferEXT 25 4(main): 2 Function None 3 5: Label 9(y): 8(ptr) Variable Function 52(z): 51(ptr) Variable Function 34: 33(ptr) AccessChain 31(t4) 32 35: 10(ptr) Load 34 38: 23(int) Load 37(i) 40: 39(ptr) AccessChain 35 32 38 41: 7(fvec3) Load 40 Aligned 4 Store 9(y) 41 44: 43(ptr) AccessChain 31(t4) 42 45: 11(ptr) Load 44 46: 23(int) Load 37(i) 47: 23(int) Load 37(i) 48: 23(int) Load 37(i) 49: 39(ptr) AccessChain 45 32 46 47 48 50: 7(fvec3) Load 49 Aligned 4 Store 9(y) 50 55: 54(ptr) AccessChain 31(t4) 53 56: 12(ptr) Load 55 58: 57(ptr) AccessChain 56 32 42 32 59: 25 Load 58 Aligned 4 Store 52(z) 59 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle16.frag.out000066400000000000000000000106751506534232700235320ustar00rootroot00000000000000spv.bufferhandle16.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" Name 4 "main" Name 9 "T1" MemberName 9(T1) 0 "x" MemberName 9(T1) 1 "y" Name 11 "a" Name 15 "b" Name 18 "c" Name 24 "d" Name 26 "e" Name 29 "f" Name 46 "x" Decorate 9(T1) Block MemberDecorate 9(T1) 0 Offset 0 MemberDecorate 9(T1) 1 Offset 4 Decorate 11(a) DecorationAliasedPointerEXT Decorate 15(b) DecorationAliasedPointerEXT Decorate 18(c) DecorationAliasedPointerEXT Decorate 24(d) DecorationAliasedPointerEXT Decorate 26(e) DecorationAliasedPointerEXT Decorate 29(f) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7: TypeInt 32 1 8: TypeInt 32 0 9(T1): TypeStruct 7(int) 8(int) 6: TypePointer PhysicalStorageBufferEXT 9(T1) 10: TypePointer Function 6(ptr) 12: TypeInt 64 0 13: 12(int64_t) Constant 4 0 16: 12(int64_t) Constant 5 0 19: TypeBool 20: 19(bool) ConstantTrue 27: 12(int64_t) Constant 6 0 31: 7(int) Constant 1 32: TypePointer PhysicalStorageBufferEXT 8(int) 35: 8(int) Constant 0 37: 12(int64_t) Constant 8 0 39: 12(int64_t) Constant 9 0 42: 7(int) Constant 3 43: 8(int) Constant 3 44: TypeArray 7(int) 43 45: TypePointer Private 44 46(x): 45(ptr) Variable Private 47: 12(int64_t) Constant 10 0 4(main): 2 Function None 3 5: Label 11(a): 10(ptr) Variable Function 15(b): 10(ptr) Variable Function 18(c): 10(ptr) Variable Function 24(d): 10(ptr) Variable Function 26(e): 10(ptr) Variable Function 29(f): 10(ptr) Variable Function 14: 6(ptr) Bitcast 13 Store 11(a) 14 17: 6(ptr) Bitcast 16 Store 15(b) 17 21: 6(ptr) Load 11(a) 22: 6(ptr) Load 15(b) 23: 6(ptr) Select 20 21 22 Store 18(c) 23 25: 6(ptr) Load 15(b) Store 24(d) 25 28: 6(ptr) Bitcast 27 Store 26(e) 28 30: 6(ptr) Load 11(a) 33: 32(ptr) AccessChain 30 31 34: 8(int) Load 33 Aligned 4 36: 19(bool) INotEqual 34 35 38: 6(ptr) Bitcast 37 40: 6(ptr) Bitcast 39 41: 6(ptr) Select 36 38 40 Store 29(f) 41 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle17_Errors.frag.out000066400000000000000000000020011506534232700250470ustar00rootroot00000000000000spv.bufferhandle17_Errors.frag ERROR: 0:11: 'qualifier' : variables with reference type can't have qualifier 'const' ERROR: 0:16: 'qualifier' : variables with reference type can't have qualifier 'const' ERROR: 0:18: '==' : can't use with reference types ERROR: 0:18: 'buffer reference math' : required extension not requested: GL_EXT_buffer_reference2 ERROR: 0:18: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' temp reference' (or there is no acceptable conversion) ERROR: 0:19: '!=' : can't use with reference types ERROR: 0:19: 'buffer reference math' : required extension not requested: GL_EXT_buffer_reference2 ERROR: 0:19: '!=' : wrong operand types: no operation '!=' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' temp reference' (or there is no acceptable conversion) ERROR: 8 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.bufferhandle18.frag.out000066400000000000000000000314511506534232700235270ustar00rootroot00000000000000spv.bufferhandle18.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 196 Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_buffer_reference2" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" Name 4 "main" Name 9 "T1" MemberName 9(T1) 0 "x" MemberName 9(T1) 1 "y" Name 11 "a" Name 15 "b" Name 18 "c" Name 24 "d" Name 26 "e" Name 29 "f" Name 59 "arr" Name 71 "i" Name 130 "j" Name 153 "k" Name 160 "x" Name 171 "y" Name 178 "T2" MemberName 178(T2) 0 "x" Name 180 "m" Name 190 "x" Name 195 "buf" Decorate 9(T1) Block MemberDecorate 9(T1) 0 Offset 0 MemberDecorate 9(T1) 1 Offset 4 Decorate 11(a) DecorationAliasedPointerEXT Decorate 15(b) DecorationAliasedPointerEXT Decorate 18(c) DecorationAliasedPointerEXT Decorate 24(d) DecorationAliasedPointerEXT Decorate 26(e) DecorationAliasedPointerEXT Decorate 29(f) DecorationAliasedPointerEXT Decorate 59(arr) DecorationAliasedPointerEXT Decorate 130(j) DecorationAliasedPointerEXT Decorate 153(k) DecorationAliasedPointerEXT Decorate 178(T2) Block MemberDecorate 178(T2) 0 Offset 0 Decorate 180(m) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7: TypeInt 32 1 8: TypeInt 32 0 9(T1): TypeStruct 7(int) 8(int) 6: TypePointer PhysicalStorageBufferEXT 9(T1) 10: TypePointer Function 6(ptr) 12: TypeInt 64 0 13: 12(int64_t) Constant 4 0 16: 12(int64_t) Constant 5 0 19: TypeBool 20: 19(bool) ConstantTrue 27: 12(int64_t) Constant 6 0 31: 7(int) Constant 1 32: TypePointer PhysicalStorageBufferEXT 8(int) 35: 8(int) Constant 0 37: 12(int64_t) Constant 8 0 39: 12(int64_t) Constant 9 0 44: 12(int64_t) Constant 24 0 47: 7(int) Constant 0 48: TypePointer PhysicalStorageBufferEXT 7(int) 52: 12(int64_t) Constant 40 0 56: 8(int) Constant 2 57: TypeArray 6(ptr) 56 58: TypePointer Function 57 66: 12(int64_t) Constant 56 0 70: TypePointer Function 7(int) 77: TypeInt 64 1 137: 12(int64_t) Constant 16 0 146: 12(int64_t) Constant 32 0 156: 12(int64_t) Constant 48 0 159: TypePointer Function 77(int64_t) 168: 77(int64_t) Constant 8 0 170: TypePointer Function 12(int64_t) 174: 12(int64_t) Constant 4294967288 4294967295 TypeForwardPointer 177 PhysicalStorageBufferEXT 178(T2): TypeStruct 7(int) 177: TypePointer PhysicalStorageBufferEXT 178(T2) 179: TypePointer Function 177(ptr) 183: 12(int64_t) Constant 64 0 186: 7(int) Constant 3 187: 8(int) Constant 3 188: TypeArray 7(int) 187 189: TypePointer Private 188 190(x): 189(ptr) Variable Private 191: 12(int64_t) Constant 10 0 192: 8(int) Constant 8 193: TypeArray 8(int) 192 194: TypePointer Private 193 195(buf): 194(ptr) Variable Private 4(main): 2 Function None 3 5: Label 11(a): 10(ptr) Variable Function 15(b): 10(ptr) Variable Function 18(c): 10(ptr) Variable Function 24(d): 10(ptr) Variable Function 26(e): 10(ptr) Variable Function 29(f): 10(ptr) Variable Function 59(arr): 58(ptr) Variable Function 71(i): 70(ptr) Variable Function 130(j): 10(ptr) Variable Function 153(k): 10(ptr) Variable Function 160(x): 159(ptr) Variable Function 171(y): 170(ptr) Variable Function 180(m): 179(ptr) Variable Function 14: 6(ptr) Bitcast 13 Store 11(a) 14 17: 6(ptr) Bitcast 16 Store 15(b) 17 21: 6(ptr) Load 11(a) 22: 6(ptr) Load 15(b) 23: 6(ptr) Select 20 21 22 Store 18(c) 23 25: 6(ptr) Load 15(b) Store 24(d) 25 28: 6(ptr) Bitcast 27 Store 26(e) 28 30: 6(ptr) Load 11(a) 33: 32(ptr) AccessChain 30 31 34: 8(int) Load 33 Aligned 4 36: 19(bool) INotEqual 34 35 38: 6(ptr) Bitcast 37 40: 6(ptr) Bitcast 39 41: 6(ptr) Select 36 38 40 Store 29(f) 41 42: 6(ptr) Load 29(f) 43: 12(int64_t) ConvertPtrToU 42 45: 12(int64_t) IAdd 43 44 46: 6(ptr) ConvertUToPtr 45 49: 48(ptr) AccessChain 46 47 Store 49 31 Aligned 8 50: 6(ptr) Load 29(f) 51: 12(int64_t) ConvertPtrToU 50 53: 12(int64_t) IAdd 51 52 54: 6(ptr) ConvertUToPtr 53 55: 48(ptr) AccessChain 54 47 Store 55 31 Aligned 8 60: 6(ptr) Load 11(a) 61: 6(ptr) Load 29(f) 62: 57 CompositeConstruct 60 61 Store 59(arr) 62 63: 10(ptr) AccessChain 59(arr) 31 64: 6(ptr) Load 63 65: 12(int64_t) ConvertPtrToU 64 67: 12(int64_t) IAdd 65 66 68: 6(ptr) ConvertUToPtr 67 69: 48(ptr) AccessChain 68 47 Store 69 31 Aligned 8 72: 7(int) Load 71(i) 73: 10(ptr) AccessChain 59(arr) 72 74: 6(ptr) Load 73 75: 12(int64_t) ConvertPtrToU 74 76: 7(int) Load 71(i) 78: 77(int64_t) SConvert 76 79: 12(int64_t) Bitcast 78 80: 12(int64_t) IMul 79 37 81: 12(int64_t) IAdd 75 80 82: 6(ptr) ConvertUToPtr 81 83: 48(ptr) AccessChain 82 47 Store 83 31 Aligned 8 84: 7(int) Load 71(i) 85: 10(ptr) AccessChain 59(arr) 84 86: 6(ptr) Load 85 87: 12(int64_t) ConvertPtrToU 86 88: 7(int) Load 71(i) 89: 77(int64_t) SConvert 88 90: 12(int64_t) Bitcast 89 91: 12(int64_t) IMul 90 37 92: 12(int64_t) IAdd 87 91 93: 6(ptr) ConvertUToPtr 92 94: 12(int64_t) ConvertPtrToU 93 95: 7(int) Load 71(i) 96: 77(int64_t) SConvert 95 97: 12(int64_t) Bitcast 96 98: 12(int64_t) IMul 97 37 99: 12(int64_t) IAdd 94 98 100: 6(ptr) ConvertUToPtr 99 101: 12(int64_t) ConvertPtrToU 100 102: 7(int) Load 71(i) 103: 77(int64_t) SConvert 102 104: 12(int64_t) Bitcast 103 105: 12(int64_t) IMul 104 37 106: 12(int64_t) IAdd 101 105 107: 6(ptr) ConvertUToPtr 106 108: 12(int64_t) ConvertPtrToU 107 109: 7(int) Load 71(i) 110: 77(int64_t) SConvert 109 111: 12(int64_t) Bitcast 110 112: 12(int64_t) IMul 111 37 113: 12(int64_t) IAdd 108 112 114: 6(ptr) ConvertUToPtr 113 115: 12(int64_t) ConvertPtrToU 114 116: 7(int) Load 71(i) 117: 77(int64_t) SConvert 116 118: 12(int64_t) Bitcast 117 119: 12(int64_t) IMul 118 37 120: 12(int64_t) IAdd 115 119 121: 6(ptr) ConvertUToPtr 120 122: 12(int64_t) ConvertPtrToU 121 123: 7(int) Load 71(i) 124: 77(int64_t) SConvert 123 125: 12(int64_t) Bitcast 124 126: 12(int64_t) IMul 125 37 127: 12(int64_t) IAdd 122 126 128: 6(ptr) ConvertUToPtr 127 129: 48(ptr) AccessChain 128 47 Store 129 31 Aligned 8 131: 6(ptr) Load 130(j) 132: 12(int64_t) ConvertPtrToU 131 133: 12(int64_t) IAdd 132 37 134: 6(ptr) ConvertUToPtr 133 Store 130(j) 134 135: 6(ptr) Load 130(j) 136: 12(int64_t) ConvertPtrToU 135 138: 12(int64_t) ISub 136 137 139: 6(ptr) ConvertUToPtr 138 Store 130(j) 139 140: 6(ptr) Load 130(j) 141: 12(int64_t) ConvertPtrToU 140 142: 12(int64_t) IAdd 141 44 143: 6(ptr) ConvertUToPtr 142 Store 130(j) 143 144: 6(ptr) Load 130(j) 145: 12(int64_t) ConvertPtrToU 144 147: 12(int64_t) ISub 145 146 148: 6(ptr) ConvertUToPtr 147 Store 130(j) 148 149: 6(ptr) Load 130(j) 150: 12(int64_t) ConvertPtrToU 149 151: 12(int64_t) IAdd 52 150 152: 6(ptr) ConvertUToPtr 151 Store 130(j) 152 154: 6(ptr) Load 130(j) 155: 12(int64_t) ConvertPtrToU 154 157: 12(int64_t) IAdd 155 156 158: 6(ptr) ConvertUToPtr 157 Store 153(k) 158 161: 6(ptr) Load 153(k) 162: 12(int64_t) ConvertPtrToU 161 163: 77(int64_t) Bitcast 162 164: 6(ptr) Load 130(j) 165: 12(int64_t) ConvertPtrToU 164 166: 77(int64_t) Bitcast 165 167: 77(int64_t) ISub 163 166 169: 77(int64_t) SDiv 167 168 Store 160(x) 169 Store 171(y) 37 172: 6(ptr) Load 153(k) 173: 12(int64_t) ConvertPtrToU 172 175: 12(int64_t) IAdd 173 174 176: 6(ptr) ConvertUToPtr 175 Store 153(k) 176 181: 177(ptr) Load 180(m) 182: 12(int64_t) ConvertPtrToU 181 184: 12(int64_t) IAdd 182 183 185: 177(ptr) ConvertUToPtr 184 Store 180(m) 185 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle19_Errors.frag.out000066400000000000000000000034721506534232700250660ustar00rootroot00000000000000spv.bufferhandle19_Errors.frag ERROR: 0:18: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:19: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:20: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' const int' and a right operand of type ' temp reference' (or there is no acceptable conversion) ERROR: 0:21: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' temp reference' (or there is no acceptable conversion) ERROR: 0:22: 'assign' : cannot convert from ' const int' to ' temp reference' ERROR: 0:23: 'assign' : cannot convert from ' const int' to ' temp reference' ERROR: 0:24: 'assign' : cannot convert from ' temp reference' to ' temp reference' ERROR: 0:25: 'assign' : cannot convert from ' temp reference' to ' temp reference' ERROR: 0:28: 'assign' : cannot convert from ' temp reference' to ' temp reference' ERROR: 0:29: 'assign' : cannot convert from ' temp reference' to ' temp reference' ERROR: 0:30: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' temp reference' (or there is no acceptable conversion) ERROR: 0:31: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' const int' and a right operand of type ' temp reference' (or there is no acceptable conversion) ERROR: 12 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.bufferhandle2.frag.out000066400000000000000000000114731506534232700234420ustar00rootroot00000000000000spv.bufferhandle2.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 8 "blockType" MemberName 8(blockType) 0 "a" MemberName 8(blockType) 1 "b" MemberName 8(blockType) 2 "c" MemberName 8(blockType) 3 "d" MemberName 8(blockType) 4 "e" Name 13 "b1" Name 14 "t2" MemberName 14(t2) 0 "f" MemberName 14(t2) 1 "g" Name 16 "t" Name 34 "b2" Name 37 "b3" Decorate 8(blockType) Block MemberDecorate 8(blockType) 0 Offset 0 MemberDecorate 8(blockType) 1 Offset 4 MemberDecorate 8(blockType) 2 Offset 8 MemberDecorate 8(blockType) 3 Offset 12 MemberDecorate 8(blockType) 4 Offset 16 Decorate 13(b1) DecorationAliasedPointerEXT Decorate 14(t2) Block MemberDecorate 14(t2) 0 Offset 0 MemberDecorate 14(t2) 1 Offset 8 Decorate 16(t) Binding 0 Decorate 16(t) DescriptorSet 0 Decorate 34(b2) DecorationAliasedPointerEXT Decorate 37(b3) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7: TypeInt 32 1 8(blockType): TypeStruct 7(int) 7(int) 7(int) 7(int) 7(int) 6: TypePointer PhysicalStorageBufferEXT 8(blockType) 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(ptr) 10 12: TypePointer Function 11 14(t2): TypeStruct 6(ptr) 6(ptr) 15: TypePointer StorageBuffer 14(t2) 16(t): 15(ptr) Variable StorageBuffer 17: 7(int) Constant 0 18: TypePointer StorageBuffer 6(ptr) 21: 7(int) Constant 1 25: TypePointer Function 6(ptr) 30: TypePointer PhysicalStorageBufferEXT 7(int) 4(main): 2 Function None 3 5: Label 13(b1): 12(ptr) Variable Function 34(b2): 25(ptr) Variable Function 37(b3): 25(ptr) Variable Function 19: 18(ptr) AccessChain 16(t) 17 20: 6(ptr) Load 19 22: 18(ptr) AccessChain 16(t) 21 23: 6(ptr) Load 22 24: 11 CompositeConstruct 20 23 Store 13(b1) 24 26: 25(ptr) AccessChain 13(b1) 17 27: 6(ptr) Load 26 28: 25(ptr) AccessChain 13(b1) 21 29: 6(ptr) Load 28 31: 30(ptr) AccessChain 29 21 32: 7(int) Load 31 Aligned 4 33: 30(ptr) AccessChain 27 17 Store 33 32 Aligned 16 35: 18(ptr) AccessChain 16(t) 17 36: 6(ptr) Load 35 Store 34(b2) 36 38: 18(ptr) AccessChain 16(t) 21 39: 6(ptr) Load 38 Store 37(b3) 39 40: 6(ptr) Load 34(b2) 41: 6(ptr) Load 37(b3) 42: 30(ptr) AccessChain 41 21 43: 7(int) Load 42 Aligned 4 44: 30(ptr) AccessChain 40 17 Store 44 43 Aligned 16 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle3_Errors.frag.out000066400000000000000000000004541506534232700247740ustar00rootroot00000000000000spv.bufferhandle3_Errors.frag ERROR: 0:18: 'in' : cannot contain any structs with buffer_reference. If you want to interface shader stages with a buffer_reference cast to a uint64 or uvec2 instead. ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.bufferhandle4.frag.out000066400000000000000000000136411506534232700234430ustar00rootroot00000000000000spv.bufferhandle4.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 8 "t4" MemberName 8(t4) 0 "j" MemberName 8(t4) 1 "k" Name 10 "t3" MemberName 10(t3) 0 "h" MemberName 10(t3) 1 "i" Name 11 "t4" MemberName 11(t4) 0 "j" MemberName 11(t4) 1 "k" Name 13 "x" Name 19 "t5" MemberName 19(t5) 0 "m" Name 21 "s5" Name 43 "b" Decorate 8(t4) Block MemberDecorate 8(t4) 0 Offset 0 MemberDecorate 8(t4) 1 Offset 8 Decorate 10(t3) Block MemberDecorate 10(t3) 0 Offset 0 MemberDecorate 10(t3) 1 Offset 8 Decorate 11(t4) Block MemberDecorate 11(t4) 0 Offset 0 MemberDecorate 11(t4) 1 Offset 8 Decorate 13(x) Binding 2 Decorate 13(x) DescriptorSet 1 Decorate 19(t5) Block MemberDecorate 19(t5) 0 Offset 0 Decorate 21(s5) Binding 0 Decorate 21(s5) DescriptorSet 0 Decorate 47 DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 TypeForwardPointer 7 PhysicalStorageBufferEXT 8(t4): TypeStruct 6(int) 7 TypeForwardPointer 9 PhysicalStorageBufferEXT 10(t3): TypeStruct 6(int) 9 11(t4): TypeStruct 6(int) 7 9: TypePointer PhysicalStorageBufferEXT 11(t4) 7: TypePointer PhysicalStorageBufferEXT 10(t3) 12: TypePointer StorageBuffer 8(t4) 13(x): 12(ptr) Variable StorageBuffer 14: 6(int) Constant 1 15: TypePointer StorageBuffer 7(ptr) 18: 6(int) Constant 0 19(t5): TypeStruct 9(ptr) 20: TypePointer StorageBuffer 19(t5) 21(s5): 20(ptr) Variable StorageBuffer 22: TypePointer StorageBuffer 9(ptr) 25: TypePointer PhysicalStorageBufferEXT 7(ptr) 28: TypePointer PhysicalStorageBufferEXT 9(ptr) 37: TypePointer PhysicalStorageBufferEXT 6(int) 41: TypeBool 42: TypePointer Function 41(bool) 44: 41(bool) ConstantTrue 46: TypePointer Function 9(ptr) 4(main): 2 Function None 3 5: Label 43(b): 42(ptr) Variable Function 47: 46(ptr) Variable Function 16: 15(ptr) AccessChain 13(x) 14 17: 7(ptr) Load 16 23: 22(ptr) AccessChain 21(s5) 18 24: 9(ptr) Load 23 26: 25(ptr) AccessChain 24 14 27: 7(ptr) Load 26 Aligned 8 29: 28(ptr) AccessChain 27 14 30: 9(ptr) Load 29 Aligned 8 31: 25(ptr) AccessChain 30 14 32: 7(ptr) Load 31 Aligned 8 33: 28(ptr) AccessChain 32 14 34: 9(ptr) Load 33 Aligned 8 35: 25(ptr) AccessChain 34 14 36: 7(ptr) Load 35 Aligned 8 38: 37(ptr) AccessChain 36 18 39: 6(int) Load 38 Aligned 16 40: 37(ptr) AccessChain 17 18 Store 40 39 Aligned 16 Store 43(b) 44 45: 41(bool) Load 43(b) SelectionMerge 49 None BranchConditional 45 48 52 48: Label 50: 22(ptr) AccessChain 21(s5) 18 51: 9(ptr) Load 50 Store 47 51 Branch 49 52: Label 53: 22(ptr) AccessChain 21(s5) 18 54: 9(ptr) Load 53 55: 25(ptr) AccessChain 54 14 56: 7(ptr) Load 55 Aligned 8 57: 28(ptr) AccessChain 56 14 58: 9(ptr) Load 57 Aligned 8 Store 47 58 Branch 49 49: Label 59: 9(ptr) Load 47 60: 22(ptr) AccessChain 21(s5) 18 Store 60 59 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle5.frag.out000066400000000000000000000050651506534232700234450ustar00rootroot00000000000000spv.bufferhandle5.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 8 "t4" MemberName 8(t4) 0 "j" MemberName 8(t4) 1 "k" Name 9 "t3" MemberName 9(t3) 0 "h" Name 11 "x" Decorate 8(t4) Block MemberDecorate 8(t4) 0 Offset 0 MemberDecorate 8(t4) 1 Offset 8 Decorate 9(t3) Block MemberDecorate 9(t3) 0 Offset 0 Decorate 11(x) Binding 2 Decorate 11(x) DescriptorSet 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 TypeForwardPointer 7 PhysicalStorageBufferEXT 8(t4): TypeStruct 6(int) 7 9(t3): TypeStruct 6(int) 7: TypePointer PhysicalStorageBufferEXT 9(t3) 10: TypePointer Uniform 8(t4) 11(x): 10(ptr) Variable Uniform 12: 6(int) Constant 1 13: TypePointer Uniform 7(ptr) 16: 6(int) Constant 0 17: TypePointer Uniform 6(int) 20: TypePointer PhysicalStorageBufferEXT 6(int) 4(main): 2 Function None 3 5: Label 14: 13(ptr) AccessChain 11(x) 12 15: 7(ptr) Load 14 18: 17(ptr) AccessChain 11(x) 16 19: 6(int) Load 18 21: 20(ptr) AccessChain 15 16 Store 21 19 Aligned 16 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle6.frag.out000066400000000000000000000270371506534232700234510ustar00rootroot00000000000000spv.bufferhandle6.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 165 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" 154 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 8 "accum" Name 15 "T1" MemberName 15(T1) 0 "a" MemberName 15(T1) 1 "b" MemberName 15(T1) 2 "c" MemberName 15(T1) 3 "d" Name 18 "T1" MemberName 18(T1) 0 "a" MemberName 18(T1) 1 "b" MemberName 18(T1) 2 "c" MemberName 18(T1) 3 "d" Name 21 "x" Name 30 "Block" MemberName 30(Block) 0 "identity" Name 32 "pc" Name 136 "color" Name 149 "image0_0" Name 154 "gl_FragCoord" Decorate 12 ArrayStride 4 Decorate 14 ArrayStride 8 Decorate 15(T1) Block MemberDecorate 15(T1) 0 Offset 0 MemberDecorate 15(T1) 1 Offset 32 MemberDecorate 15(T1) 2 Offset 48 MemberDecorate 15(T1) 3 Offset 80 Decorate 16 ArrayStride 4 Decorate 17 ArrayStride 8 Decorate 18(T1) Block MemberDecorate 18(T1) 0 Offset 0 MemberDecorate 18(T1) 1 Offset 32 MemberDecorate 18(T1) 2 Offset 48 MemberDecorate 18(T1) 3 Offset 80 Decorate 19 ArrayStride 8 Decorate 21(x) Binding 1 Decorate 21(x) DescriptorSet 3 Decorate 29 ArrayStride 4 Decorate 30(Block) Block MemberDecorate 30(Block) 0 Offset 0 Decorate 149(image0_0) Binding 0 Decorate 149(image0_0) DescriptorSet 3 Decorate 154(gl_FragCoord) BuiltIn FragCoord 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 10: TypeInt 32 0 11: 10(int) Constant 2 12: TypeArray 6(int) 11 TypeForwardPointer 13 PhysicalStorageBufferEXT 14: TypeArray 13 11 15(T1): TypeStruct 12 6(int) 14 13 16: TypeArray 6(int) 11 17: TypeArray 13 11 18(T1): TypeStruct 16 6(int) 17 13 13: TypePointer PhysicalStorageBufferEXT 18(T1) 19: TypeArray 13(ptr) 11 20: TypePointer StorageBuffer 15(T1) 21(x): 20(ptr) Variable StorageBuffer 22: TypePointer StorageBuffer 6(int) 28: 10(int) Constant 32 29: TypeArray 6(int) 28 30(Block): TypeStruct 29 31: TypePointer PushConstant 30(Block) 32(pc): 31(ptr) Variable PushConstant 33: 6(int) Constant 1 34: TypePointer PushConstant 6(int) 44: 6(int) Constant 2 48: TypePointer StorageBuffer 13(ptr) 51: TypePointer PhysicalStorageBufferEXT 6(int) 54: 6(int) Constant 3 64: 6(int) Constant 4 72: 6(int) Constant 5 82: 6(int) Constant 6 94: 6(int) Constant 7 104: 6(int) Constant 8 112: 6(int) Constant 9 122: 6(int) Constant 10 130: 6(int) Constant 11 134: TypeVector 10(int) 4 135: TypePointer Function 134(ivec4) 138: TypeBool 140: 10(int) Constant 0 141: 134(ivec4) ConstantComposite 140 140 140 140 142: 10(int) Constant 1 143: 134(ivec4) ConstantComposite 142 140 140 142 144: TypeVector 138(bool) 4 147: TypeImage 10(int) 2D nonsampled format:R32ui 148: TypePointer UniformConstant 147 149(image0_0): 148(ptr) Variable UniformConstant 151: TypeFloat 32 152: TypeVector 151(float) 4 153: TypePointer Input 152(fvec4) 154(gl_FragCoord): 153(ptr) Variable Input 155: TypePointer Input 151(float) 162: TypeVector 6(int) 2 4(main): 2 Function None 3 5: Label 8(accum): 7(ptr) Variable Function 136(color): 135(ptr) Variable Function Store 8(accum) 9 23: 22(ptr) AccessChain 21(x) 9 9 24: 6(int) Load 23 25: 6(int) ISub 24 9 26: 6(int) Load 8(accum) 27: 6(int) BitwiseOr 26 25 Store 8(accum) 27 35: 34(ptr) AccessChain 32(pc) 9 33 36: 6(int) Load 35 37: 22(ptr) AccessChain 21(x) 9 36 38: 6(int) Load 37 39: 6(int) ISub 38 33 40: 6(int) Load 8(accum) 41: 6(int) BitwiseOr 40 39 Store 8(accum) 41 42: 22(ptr) AccessChain 21(x) 33 43: 6(int) Load 42 45: 6(int) ISub 43 44 46: 6(int) Load 8(accum) 47: 6(int) BitwiseOr 46 45 Store 8(accum) 47 49: 48(ptr) AccessChain 21(x) 44 9 50: 13(ptr) Load 49 52: 51(ptr) AccessChain 50 9 9 53: 6(int) Load 52 Aligned 4 55: 6(int) ISub 53 54 56: 6(int) Load 8(accum) 57: 6(int) BitwiseOr 56 55 Store 8(accum) 57 58: 48(ptr) AccessChain 21(x) 44 9 59: 13(ptr) Load 58 60: 34(ptr) AccessChain 32(pc) 9 33 61: 6(int) Load 60 62: 51(ptr) AccessChain 59 9 61 63: 6(int) Load 62 Aligned 4 65: 6(int) ISub 63 64 66: 6(int) Load 8(accum) 67: 6(int) BitwiseOr 66 65 Store 8(accum) 67 68: 48(ptr) AccessChain 21(x) 44 9 69: 13(ptr) Load 68 70: 51(ptr) AccessChain 69 33 71: 6(int) Load 70 Aligned 16 73: 6(int) ISub 71 72 74: 6(int) Load 8(accum) 75: 6(int) BitwiseOr 74 73 Store 8(accum) 75 76: 34(ptr) AccessChain 32(pc) 9 33 77: 6(int) Load 76 78: 48(ptr) AccessChain 21(x) 44 77 79: 13(ptr) Load 78 80: 51(ptr) AccessChain 79 9 9 81: 6(int) Load 80 Aligned 4 83: 6(int) ISub 81 82 84: 6(int) Load 8(accum) 85: 6(int) BitwiseOr 84 83 Store 8(accum) 85 86: 34(ptr) AccessChain 32(pc) 9 33 87: 6(int) Load 86 88: 48(ptr) AccessChain 21(x) 44 87 89: 13(ptr) Load 88 90: 34(ptr) AccessChain 32(pc) 9 33 91: 6(int) Load 90 92: 51(ptr) AccessChain 89 9 91 93: 6(int) Load 92 Aligned 4 95: 6(int) ISub 93 94 96: 6(int) Load 8(accum) 97: 6(int) BitwiseOr 96 95 Store 8(accum) 97 98: 34(ptr) AccessChain 32(pc) 9 33 99: 6(int) Load 98 100: 48(ptr) AccessChain 21(x) 44 99 101: 13(ptr) Load 100 102: 51(ptr) AccessChain 101 33 103: 6(int) Load 102 Aligned 16 105: 6(int) ISub 103 104 106: 6(int) Load 8(accum) 107: 6(int) BitwiseOr 106 105 Store 8(accum) 107 108: 48(ptr) AccessChain 21(x) 54 109: 13(ptr) Load 108 110: 51(ptr) AccessChain 109 9 9 111: 6(int) Load 110 Aligned 4 113: 6(int) ISub 111 112 114: 6(int) Load 8(accum) 115: 6(int) BitwiseOr 114 113 Store 8(accum) 115 116: 48(ptr) AccessChain 21(x) 54 117: 13(ptr) Load 116 118: 34(ptr) AccessChain 32(pc) 9 33 119: 6(int) Load 118 120: 51(ptr) AccessChain 117 9 119 121: 6(int) Load 120 Aligned 4 123: 6(int) ISub 121 122 124: 6(int) Load 8(accum) 125: 6(int) BitwiseOr 124 123 Store 8(accum) 125 126: 48(ptr) AccessChain 21(x) 54 127: 13(ptr) Load 126 128: 51(ptr) AccessChain 127 33 129: 6(int) Load 128 Aligned 16 131: 6(int) ISub 129 130 132: 6(int) Load 8(accum) 133: 6(int) BitwiseOr 132 131 Store 8(accum) 133 137: 6(int) Load 8(accum) 139: 138(bool) INotEqual 137 9 145: 144(bvec4) CompositeConstruct 139 139 139 139 146: 134(ivec4) Select 145 141 143 Store 136(color) 146 150: 147 Load 149(image0_0) 156: 155(ptr) AccessChain 154(gl_FragCoord) 140 157: 151(float) Load 156 158: 6(int) ConvertFToS 157 159: 155(ptr) AccessChain 154(gl_FragCoord) 142 160: 151(float) Load 159 161: 6(int) ConvertFToS 160 163: 162(ivec2) CompositeConstruct 158 161 164: 134(ivec4) Load 136(color) ImageWrite 150 163 164 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle7.frag.out000066400000000000000000000101461506534232700234430ustar00rootroot00000000000000spv.bufferhandle7.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 7 "t2" MemberName 7(t2) 0 "f" MemberName 7(t2) 1 "g" Name 9 "blockType" MemberName 9(blockType) 0 "a" MemberName 9(blockType) 1 "b" MemberName 9(blockType) 2 "c" MemberName 9(blockType) 3 "d" MemberName 9(blockType) 4 "e" Name 11 "t" Name 14 "t3" MemberName 14(t3) 0 "f" Name 15 "t2" MemberName 15(t2) 0 "f" MemberName 15(t2) 1 "g" Name 17 "u" Decorate 7(t2) Block MemberDecorate 7(t2) 0 Offset 0 MemberDecorate 7(t2) 1 Offset 8 Decorate 9(blockType) Block MemberDecorate 9(blockType) 0 Offset 0 MemberDecorate 9(blockType) 1 Offset 4 MemberDecorate 9(blockType) 2 Offset 8 MemberDecorate 9(blockType) 3 Offset 12 MemberDecorate 9(blockType) 4 Offset 16 Decorate 11(t) Binding 0 Decorate 11(t) DescriptorSet 0 Decorate 14(t3) Block MemberDecorate 14(t3) 0 Offset 0 Decorate 15(t2) Block MemberDecorate 15(t2) 0 Offset 0 MemberDecorate 15(t2) 1 Offset 8 Decorate 17(u) Binding 1 Decorate 17(u) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7(t2): TypeStruct 6 6 8: TypeInt 32 1 9(blockType): TypeStruct 8(int) 8(int) 8(int) 8(int) 8(int) 6: TypePointer PhysicalStorageBufferEXT 9(blockType) 10: TypePointer StorageBuffer 7(t2) 11(t): 10(ptr) Variable StorageBuffer 12: 8(int) Constant 0 TypeForwardPointer 13 PhysicalStorageBufferEXT 14(t3): TypeStruct 13 15(t2): TypeStruct 6(ptr) 6(ptr) 13: TypePointer PhysicalStorageBufferEXT 15(t2) 16: TypePointer StorageBuffer 14(t3) 17(u): 16(ptr) Variable StorageBuffer 18: TypePointer StorageBuffer 13(ptr) 22: TypePointer StorageBuffer 6(ptr) 4(main): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 17(u) 12 20: 13(ptr) Load 19 21: 6(ptr) Bitcast 20 23: 22(ptr) AccessChain 11(t) 12 Store 23 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle8.frag.out000066400000000000000000000134021506534232700234420ustar00rootroot00000000000000spv.bufferhandle8.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 8 "Blah" MemberName 8(Blah) 0 "t1" MemberName 8(Blah) 1 "t2" Name 10 "T1" MemberName 10(T1) 0 "x" Name 11 "T2" MemberName 11(T2) 0 "x" Name 13 "x" Name 14 "Blah" MemberName 14(Blah) 0 "t1" MemberName 14(Blah) 1 "t2" Name 16 "T3" MemberName 16(T3) 0 "Bindings" Name 18 "t3" Name 35 "t2" MemberName 35(t2) 0 "f" MemberName 35(t2) 1 "g" Name 36 "blockType" MemberName 36(blockType) 0 "a" MemberName 36(blockType) 1 "b" MemberName 36(blockType) 2 "c" MemberName 36(blockType) 3 "d" MemberName 36(blockType) 4 "e" Name 38 "t" Decorate 10(T1) Block MemberDecorate 10(T1) 0 Offset 0 Decorate 11(T2) Block MemberDecorate 11(T2) 0 Offset 0 Decorate 13(x) DecorationAliasedPointerEXT MemberDecorate 14(Blah) 0 Offset 0 MemberDecorate 14(Blah) 1 Offset 8 Decorate 15 ArrayStride 16 Decorate 16(T3) Block MemberDecorate 16(T3) 0 Offset 0 Decorate 18(t3) Binding 0 Decorate 18(t3) DescriptorSet 0 Decorate 35(t2) Block MemberDecorate 35(t2) 0 Offset 0 MemberDecorate 35(t2) 1 Offset 8 Decorate 36(blockType) Block MemberDecorate 36(blockType) 0 Offset 0 MemberDecorate 36(blockType) 1 Offset 4 MemberDecorate 36(blockType) 2 Offset 8 MemberDecorate 36(blockType) 3 Offset 12 MemberDecorate 36(blockType) 4 Offset 16 Decorate 38(t) Binding 0 Decorate 38(t) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT TypeForwardPointer 7 PhysicalStorageBufferEXT 8(Blah): TypeStruct 6 7 9: TypeInt 32 1 10(T1): TypeStruct 9(int) 6: TypePointer PhysicalStorageBufferEXT 10(T1) 11(T2): TypeStruct 9(int) 7: TypePointer PhysicalStorageBufferEXT 11(T2) 12: TypePointer Function 8(Blah) 14(Blah): TypeStruct 6(ptr) 7(ptr) 15: TypeRuntimeArray 14(Blah) 16(T3): TypeStruct 15 17: TypePointer StorageBuffer 16(T3) 18(t3): 17(ptr) Variable StorageBuffer 19: 9(int) Constant 0 20: 9(int) Constant 2 21: TypePointer StorageBuffer 14(Blah) 25: TypePointer Function 6(ptr) 28: 9(int) Constant 1 29: TypePointer Function 7(ptr) TypeForwardPointer 34 PhysicalStorageBufferEXT 35(t2): TypeStruct 34 34 36(blockType): TypeStruct 9(int) 9(int) 9(int) 9(int) 9(int) 34: TypePointer PhysicalStorageBufferEXT 36(blockType) 37: TypePointer StorageBuffer 35(t2) 38(t): 37(ptr) Variable StorageBuffer 4(main): 2 Function None 3 5: Label 13(x): 12(ptr) Variable Function 22: 21(ptr) AccessChain 18(t3) 19 20 23: 14(Blah) Load 22 24: 6(ptr) CompositeExtract 23 0 26: 25(ptr) AccessChain 13(x) 19 Store 26 24 27: 7(ptr) CompositeExtract 23 1 30: 29(ptr) AccessChain 13(x) 28 Store 30 27 31: 21(ptr) AccessChain 18(t3) 19 28 32: 14(Blah) Load 31 33: 21(ptr) AccessChain 18(t3) 19 19 Store 33 32 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle9.frag.out000066400000000000000000000135351506534232700234520ustar00rootroot00000000000000spv.bufferhandle9.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" 16 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_buffer_reference" Name 4 "main" Name 8 "blockType" MemberName 8(blockType) 0 "a" MemberName 8(blockType) 1 "b" MemberName 8(blockType) 2 "c" MemberName 8(blockType) 3 "d" MemberName 8(blockType) 4 "e" Name 13 "b1" Name 16 "h" Name 19 "i" Name 34 "b2" Name 37 "b3" Name 46 "j" Name 53 "t2" MemberName 53(t2) 0 "f" MemberName 53(t2) 1 "g" Name 55 "t" Decorate 8(blockType) Block MemberDecorate 8(blockType) 0 Offset 0 MemberDecorate 8(blockType) 1 Offset 4 MemberDecorate 8(blockType) 2 Offset 8 MemberDecorate 8(blockType) 3 Offset 12 MemberDecorate 8(blockType) 4 Offset 16 Decorate 13(b1) DecorationAliasedPointerEXT Decorate 16(h) Flat Decorate 16(h) Location 0 Decorate 19(i) Flat Decorate 19(i) Location 1 Decorate 34(b2) DecorationAliasedPointerEXT Decorate 37(b3) DecorationAliasedPointerEXT Decorate 53(t2) Block MemberDecorate 53(t2) 0 Offset 0 MemberDecorate 53(t2) 1 Offset 8 Decorate 55(t) Binding 0 Decorate 55(t) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7: TypeInt 32 1 8(blockType): TypeStruct 7(int) 7(int) 7(int) 7(int) 7(int) 6: TypePointer PhysicalStorageBufferEXT 8(blockType) 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(ptr) 10 12: TypePointer Function 11 14: TypeInt 64 0 15: TypePointer Input 14(int64_t) 16(h): 15(ptr) Variable Input 19(i): 15(ptr) Variable Input 23: 7(int) Constant 0 24: TypePointer Function 6(ptr) 27: 7(int) Constant 1 30: TypePointer PhysicalStorageBufferEXT 7(int) 45: TypePointer Function 14(int64_t) 50: 14(int64_t) Constant 256 0 53(t2): TypeStruct 6(ptr) 6(ptr) 54: TypePointer StorageBuffer 53(t2) 55(t): 54(ptr) Variable StorageBuffer 4(main): 2 Function None 3 5: Label 13(b1): 12(ptr) Variable Function 34(b2): 24(ptr) Variable Function 37(b3): 24(ptr) Variable Function 46(j): 45(ptr) Variable Function 17: 14(int64_t) Load 16(h) 18: 6(ptr) ConvertUToPtr 17 20: 14(int64_t) Load 19(i) 21: 6(ptr) ConvertUToPtr 20 22: 11 CompositeConstruct 18 21 Store 13(b1) 22 25: 24(ptr) AccessChain 13(b1) 23 26: 6(ptr) Load 25 28: 24(ptr) AccessChain 13(b1) 27 29: 6(ptr) Load 28 31: 30(ptr) AccessChain 29 27 32: 7(int) Load 31 Aligned 4 33: 30(ptr) AccessChain 26 23 Store 33 32 Aligned 16 35: 14(int64_t) Load 16(h) 36: 6(ptr) ConvertUToPtr 35 Store 34(b2) 36 38: 14(int64_t) Load 19(i) 39: 6(ptr) ConvertUToPtr 38 Store 37(b3) 39 40: 6(ptr) Load 34(b2) 41: 6(ptr) Load 37(b3) 42: 30(ptr) AccessChain 41 27 43: 7(int) Load 42 Aligned 4 44: 30(ptr) AccessChain 40 23 Store 44 43 Aligned 16 47: 6(ptr) Load 34(b2) 48: 14(int64_t) ConvertPtrToU 47 Store 46(j) 48 49: 14(int64_t) Load 46(j) 51: 14(int64_t) IAdd 49 50 52: 6(ptr) ConvertUToPtr 51 Store 34(b2) 52 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandleUvec2.frag.out000066400000000000000000000153101506534232700242570ustar00rootroot00000000000000spv.bufferhandleUvec2.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 71 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" 16 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_buffer_reference_uvec2" Name 4 "main" Name 8 "blockType" MemberName 8(blockType) 0 "a" MemberName 8(blockType) 1 "b" MemberName 8(blockType) 2 "c" MemberName 8(blockType) 3 "d" MemberName 8(blockType) 4 "e" Name 13 "b1" Name 16 "h" Name 19 "i" Name 34 "b2" Name 37 "b3" Name 46 "j" Name 54 "carry" Name 55 "ResType" Name 68 "t2" MemberName 68(t2) 0 "f" MemberName 68(t2) 1 "g" Name 70 "t" Decorate 8(blockType) Block MemberDecorate 8(blockType) 0 Offset 0 MemberDecorate 8(blockType) 1 Offset 4 MemberDecorate 8(blockType) 2 Offset 8 MemberDecorate 8(blockType) 3 Offset 12 MemberDecorate 8(blockType) 4 Offset 16 Decorate 13(b1) DecorationAliasedPointerEXT Decorate 16(h) Flat Decorate 16(h) Location 0 Decorate 19(i) Flat Decorate 19(i) Location 1 Decorate 34(b2) DecorationAliasedPointerEXT Decorate 37(b3) DecorationAliasedPointerEXT Decorate 68(t2) Block MemberDecorate 68(t2) 0 Offset 0 MemberDecorate 68(t2) 1 Offset 8 Decorate 70(t) Binding 0 Decorate 70(t) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7: TypeInt 32 1 8(blockType): TypeStruct 7(int) 7(int) 7(int) 7(int) 7(int) 6: TypePointer PhysicalStorageBufferEXT 8(blockType) 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(ptr) 10 12: TypePointer Function 11 14: TypeVector 9(int) 2 15: TypePointer Input 14(ivec2) 16(h): 15(ptr) Variable Input 19(i): 15(ptr) Variable Input 23: 7(int) Constant 0 24: TypePointer Function 6(ptr) 27: 7(int) Constant 1 30: TypePointer PhysicalStorageBufferEXT 7(int) 45: TypePointer Function 14(ivec2) 49: 9(int) Constant 0 50: TypePointer Function 9(int) 53: 9(int) Constant 256 55(ResType): TypeStruct 9(int) 9(int) 61: 9(int) Constant 1 68(t2): TypeStruct 6(ptr) 6(ptr) 69: TypePointer StorageBuffer 68(t2) 70(t): 69(ptr) Variable StorageBuffer 4(main): 2 Function None 3 5: Label 13(b1): 12(ptr) Variable Function 34(b2): 24(ptr) Variable Function 37(b3): 24(ptr) Variable Function 46(j): 45(ptr) Variable Function 54(carry): 50(ptr) Variable Function 17: 14(ivec2) Load 16(h) 18: 6(ptr) Bitcast 17 20: 14(ivec2) Load 19(i) 21: 6(ptr) Bitcast 20 22: 11 CompositeConstruct 18 21 Store 13(b1) 22 25: 24(ptr) AccessChain 13(b1) 23 26: 6(ptr) Load 25 28: 24(ptr) AccessChain 13(b1) 27 29: 6(ptr) Load 28 31: 30(ptr) AccessChain 29 27 32: 7(int) Load 31 Aligned 4 33: 30(ptr) AccessChain 26 23 Store 33 32 Aligned 16 35: 14(ivec2) Load 16(h) 36: 6(ptr) Bitcast 35 Store 34(b2) 36 38: 14(ivec2) Load 19(i) 39: 6(ptr) Bitcast 38 Store 37(b3) 39 40: 6(ptr) Load 34(b2) 41: 6(ptr) Load 37(b3) 42: 30(ptr) AccessChain 41 27 43: 7(int) Load 42 Aligned 4 44: 30(ptr) AccessChain 40 23 Store 44 43 Aligned 16 47: 6(ptr) Load 34(b2) 48: 14(ivec2) Bitcast 47 Store 46(j) 48 51: 50(ptr) AccessChain 46(j) 49 52: 9(int) Load 51 56: 55(ResType) IAddCarry 52 53 57: 9(int) CompositeExtract 56 1 Store 54(carry) 57 58: 9(int) CompositeExtract 56 0 59: 50(ptr) AccessChain 46(j) 49 Store 59 58 60: 9(int) Load 54(carry) 62: 50(ptr) AccessChain 46(j) 61 63: 9(int) Load 62 64: 9(int) IAdd 63 60 65: 50(ptr) AccessChain 46(j) 61 Store 65 64 66: 14(ivec2) Load 46(j) 67: 6(ptr) Bitcast 66 Store 34(b2) 67 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.bufferhandle_Error.frag.out000066400000000000000000000044171506534232700245310ustar00rootroot00000000000000spv.bufferhandle_Error.frag ERROR: 0:7: 'buffer_reference' : can only be used with buffer ERROR: 0:9: 'buffer_reference' : cannot declare a default, can only be used on a block ERROR: 0:10: 'buffer_reference' : can only be used with buffer ERROR: 0:10: 'buffer_reference' : cannot declare a default, can only be used on a block ERROR: 0:11: 'buffer_reference' : can only be used with buffer ERROR: 0:11: 'buffer_reference' : cannot declare a default, can only be used on a block ERROR: 0:12: 'buffer_reference' : can only be used with buffer ERROR: 0:12: 'buffer_reference' : cannot declare a default, can only be used on a block ERROR: 0:13: 'buffer_reference' : can only be used with buffer ERROR: 0:13: 'buffer_reference' : can only be used with buffer ERROR: 0:14: 'output block' : not supported in this stage: fragment ERROR: 0:14: 'buffer_reference' : can only be used with buffer ERROR: 0:14: 'buffer_reference' : can only be used with buffer WARNING: 0:20: 'bufType7' : the buffer_reference_align layout is ignored when defined in forward declaration WARNING: 0:20: 'bufType7' : the packing layout (scalar, std430, etc) is ignored when defined in forward declaration ERROR: 0:34: 'length' : array must be declared with a size before using this method ERROR: 0:35: 'length' : array must be declared with a size before using this method ERROR: 0:36: 'buffer reference indexing' : required extension not requested: GL_EXT_buffer_reference2 ERROR: 0:36: '' : cannot index reference to buffer containing an unsized array ERROR: 0:36: '' : cannot index buffer reference ERROR: 0:40: '=' : cannot convert from 'layout( column_major std430) buffer reference' to ' temp reference' ERROR: 0:45: 'assign' : cannot convert from 'layout( column_major std430) buffer reference' to 'layout( column_major std430) buffer reference' ERROR: 0:46: 'assign' : cannot convert from 'layout( column_major std430) buffer reference' to 'layout( column_major std430) buffer reference' ERROR: 0:47: 'assign' : cannot convert from 'layout( column_major std430) buffer reference' to 'layout( column_major std430) buffer reference' ERROR: 0:50: '' : syntax error, unexpected LEFT_BRACE, expecting COMMA or SEMICOLON ERROR: 23 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.builtInXFB.vert.out000066400000000000000000000044521506534232700227410ustar00rootroot00000000000000spv.builtInXFB.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader Capability TransformFeedback 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 ExecutionMode 4 Xfb Source GLSL 450 Name 4 "main" Name 8 "gl_PerVertex" MemberName 8(gl_PerVertex) 0 "gl_Position" MemberName 8(gl_PerVertex) 1 "gl_PointSize" Name 10 "" Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position MemberDecorate 8(gl_PerVertex) 0 Offset 20 MemberDecorate 8(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 8(gl_PerVertex) 1 Offset 16 Decorate 10 XfbBuffer 1 Decorate 10 XfbStride 64 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 9: TypePointer Output 8(gl_PerVertex) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: 6(float) Constant 1065353216 14: 7(fvec4) ConstantComposite 13 13 13 13 15: TypePointer Output 7(fvec4) 17: 11(int) Constant 1 18: 6(float) Constant 1073741824 19: TypePointer Output 6(float) 4(main): 2 Function None 3 5: Label 16: 15(ptr) AccessChain 10 12 Store 16 14 20: 19(ptr) AccessChain 10 17 Store 20 18 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out000066400000000000000000000050161506534232700271000ustar00rootroot00000000000000spv.builtin.PrimitiveShadingRateEXT.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader Capability FragmentShadingRateKHR Extension "SPV_KHR_fragment_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 8 16 Source GLSL 450 SourceExtension "GL_EXT_fragment_shading_rate" Name 4 "main" Name 8 "id" Name 16 "gl_PrimitiveShadingRateEXT" Decorate 8(id) Location 0 Decorate 16(gl_PrimitiveShadingRateEXT) BuiltIn PrimitiveShadingRateKHR 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Input 6(int) 8(id): 7(ptr) Variable Input 15: TypePointer Output 6(int) 16(gl_PrimitiveShadingRateEXT): 15(ptr) Variable Output 17: 6(int) Constant 5 19: 6(int) Constant 9 21: 6(int) Constant 6 23: 6(int) Constant 10 4(main): 2 Function None 3 5: Label 9: 6(int) Load 8(id) SelectionMerge 14 None Switch 9 14 case 0: 10 case 1: 11 case 2: 12 case 3: 13 10: Label Store 16(gl_PrimitiveShadingRateEXT) 17 Branch 14 11: Label Store 16(gl_PrimitiveShadingRateEXT) 19 Branch 14 12: Label Store 16(gl_PrimitiveShadingRateEXT) 21 Branch 14 13: Label Store 16(gl_PrimitiveShadingRateEXT) 23 Branch 14 14: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out000066400000000000000000000033731506534232700251520ustar00rootroot00000000000000spv.builtin.ShadingRateEXT.frag WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader Capability FragmentShadingRateKHR Extension "SPV_KHR_fragment_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 10 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_fragment_shading_rate" Name 4 "main" Name 8 "val" Name 10 "gl_ShadingRateEXT" Decorate 8(val) Location 0 Decorate 10(gl_ShadingRateEXT) BuiltIn ShadingRateKHR Decorate 10(gl_ShadingRateEXT) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(val): 7(ptr) Variable Output 9: TypePointer Input 6(int) 10(gl_ShadingRateEXT): 9(ptr) Variable Input 4(main): 2 Function None 3 5: Label 11: 6(int) Load 10(gl_ShadingRateEXT) Store 8(val) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.computeShaderDerivatives.comp.out000066400000000000000000000444521506534232700257660ustar00rootroot00000000000000spv.computeShaderDerivatives.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 212 Capability Shader Capability DerivativeControl Capability ComputeDerivativeGroupQuadsNV Extension "SPV_NV_compute_shader_derivatives" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 2 4 1 ExecutionMode 4 DerivativeGroupQuadsNV Source GLSL 450 SourceExtension "GL_NV_compute_shader_derivatives" Name 4 "main" Name 10 "block" MemberName 10(block) 0 "fDerivativeX" MemberName 10(block) 1 "fDerivativeY" MemberName 10(block) 2 "fDerivativeWidth" MemberName 10(block) 3 "fCoarseDerivativeX" MemberName 10(block) 4 "fCoarseDerivativeY" MemberName 10(block) 5 "fCoarseDerivativeWidth" MemberName 10(block) 6 "fFineDerivativeX" MemberName 10(block) 7 "fFineDerivativeY" MemberName 10(block) 8 "fFineDerivativeWidth" MemberName 10(block) 9 "fX" MemberName 10(block) 10 "fY" MemberName 10(block) 11 "v2DerivativeX" MemberName 10(block) 12 "v2DerivativeY" MemberName 10(block) 13 "v2DerivativeWidth" MemberName 10(block) 14 "v2CoarseDerivativeX" MemberName 10(block) 15 "v2CoarseDerivativeY" MemberName 10(block) 16 "v2CoarseDerivativeWidth" MemberName 10(block) 17 "v2FineDerivativeX" MemberName 10(block) 18 "v2FineDerivativeY" MemberName 10(block) 19 "v2FineDerivativeWidth" MemberName 10(block) 20 "v2X" MemberName 10(block) 21 "v2Y" MemberName 10(block) 22 "v3DerivativeX" MemberName 10(block) 23 "v3DerivativeY" MemberName 10(block) 24 "v3DerivativeWidth" MemberName 10(block) 25 "v3CoarseDerivativeX" MemberName 10(block) 26 "v3CoarseDerivativeY" MemberName 10(block) 27 "v3CoarseDerivativeWidth" MemberName 10(block) 28 "v3FineDerivativeX" MemberName 10(block) 29 "v3FineDerivativeY" MemberName 10(block) 30 "v3FineDerivativeWidth" MemberName 10(block) 31 "v3X" MemberName 10(block) 32 "v3Y" MemberName 10(block) 33 "v4DerivativeX" MemberName 10(block) 34 "v4DerivativeY" MemberName 10(block) 35 "v4DerivativeWidth" MemberName 10(block) 36 "v4CoarseDerivativeX" MemberName 10(block) 37 "v4CoarseDerivativeY" MemberName 10(block) 38 "v4CoarseDerivativeWidth" MemberName 10(block) 39 "v4FineDerivativeX" MemberName 10(block) 40 "v4FineDerivativeY" MemberName 10(block) 41 "v4FineDerivativeWidth" MemberName 10(block) 42 "v4X" MemberName 10(block) 43 "v4Y" Name 12 "" Decorate 10(block) BufferBlock MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 4 MemberDecorate 10(block) 2 Offset 8 MemberDecorate 10(block) 3 Offset 12 MemberDecorate 10(block) 4 Offset 16 MemberDecorate 10(block) 5 Offset 20 MemberDecorate 10(block) 6 Offset 24 MemberDecorate 10(block) 7 Offset 28 MemberDecorate 10(block) 8 Offset 32 MemberDecorate 10(block) 9 Offset 36 MemberDecorate 10(block) 10 Offset 40 MemberDecorate 10(block) 11 Offset 48 MemberDecorate 10(block) 12 Offset 56 MemberDecorate 10(block) 13 Offset 64 MemberDecorate 10(block) 14 Offset 72 MemberDecorate 10(block) 15 Offset 80 MemberDecorate 10(block) 16 Offset 88 MemberDecorate 10(block) 17 Offset 96 MemberDecorate 10(block) 18 Offset 104 MemberDecorate 10(block) 19 Offset 112 MemberDecorate 10(block) 20 Offset 120 MemberDecorate 10(block) 21 Offset 128 MemberDecorate 10(block) 22 Offset 144 MemberDecorate 10(block) 23 Offset 160 MemberDecorate 10(block) 24 Offset 176 MemberDecorate 10(block) 25 Offset 192 MemberDecorate 10(block) 26 Offset 208 MemberDecorate 10(block) 27 Offset 224 MemberDecorate 10(block) 28 Offset 240 MemberDecorate 10(block) 29 Offset 256 MemberDecorate 10(block) 30 Offset 272 MemberDecorate 10(block) 31 Offset 288 MemberDecorate 10(block) 32 Offset 304 MemberDecorate 10(block) 33 Offset 320 MemberDecorate 10(block) 34 Offset 336 MemberDecorate 10(block) 35 Offset 352 MemberDecorate 10(block) 36 Offset 368 MemberDecorate 10(block) 37 Offset 384 MemberDecorate 10(block) 38 Offset 400 MemberDecorate 10(block) 39 Offset 416 MemberDecorate 10(block) 40 Offset 432 MemberDecorate 10(block) 41 Offset 448 MemberDecorate 10(block) 42 Offset 464 MemberDecorate 10(block) 43 Offset 480 Decorate 12 Binding 0 Decorate 12 DescriptorSet 0 Decorate 211 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeVector 6(float) 3 9: TypeVector 6(float) 4 10(block): TypeStruct 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 11: TypePointer Uniform 10(block) 12: 11(ptr) Variable Uniform 13: TypeInt 32 1 14: 13(int) Constant 0 15: 13(int) Constant 9 16: TypePointer Uniform 6(float) 21: 13(int) Constant 1 22: 13(int) Constant 10 27: 13(int) Constant 2 32: 13(int) Constant 3 37: 13(int) Constant 4 42: 13(int) Constant 5 47: 13(int) Constant 6 52: 13(int) Constant 7 57: 13(int) Constant 8 62: 13(int) Constant 11 63: 13(int) Constant 20 64: TypePointer Uniform 7(fvec2) 69: 13(int) Constant 12 70: 13(int) Constant 21 75: 13(int) Constant 13 80: 13(int) Constant 14 85: 13(int) Constant 15 90: 13(int) Constant 16 95: 13(int) Constant 17 100: 13(int) Constant 18 105: 13(int) Constant 19 110: 13(int) Constant 22 111: 13(int) Constant 31 112: TypePointer Uniform 8(fvec3) 117: 13(int) Constant 23 118: 13(int) Constant 32 123: 13(int) Constant 24 128: 13(int) Constant 25 133: 13(int) Constant 26 138: 13(int) Constant 27 143: 13(int) Constant 28 148: 13(int) Constant 29 153: 13(int) Constant 30 158: 13(int) Constant 33 159: 13(int) Constant 42 160: TypePointer Uniform 9(fvec4) 165: 13(int) Constant 34 166: 13(int) Constant 43 171: 13(int) Constant 35 176: 13(int) Constant 36 181: 13(int) Constant 37 186: 13(int) Constant 38 191: 13(int) Constant 39 196: 13(int) Constant 40 201: 13(int) Constant 41 206: TypeInt 32 0 207: TypeVector 206(int) 3 208: 206(int) Constant 2 209: 206(int) Constant 4 210: 206(int) Constant 1 211: 207(ivec3) ConstantComposite 208 209 210 4(main): 2 Function None 3 5: Label 17: 16(ptr) AccessChain 12 15 18: 6(float) Load 17 19: 6(float) DPdx 18 20: 16(ptr) AccessChain 12 14 Store 20 19 23: 16(ptr) AccessChain 12 22 24: 6(float) Load 23 25: 6(float) DPdy 24 26: 16(ptr) AccessChain 12 21 Store 26 25 28: 16(ptr) AccessChain 12 15 29: 6(float) Load 28 30: 6(float) Fwidth 29 31: 16(ptr) AccessChain 12 27 Store 31 30 33: 16(ptr) AccessChain 12 15 34: 6(float) Load 33 35: 6(float) DPdxCoarse 34 36: 16(ptr) AccessChain 12 32 Store 36 35 38: 16(ptr) AccessChain 12 22 39: 6(float) Load 38 40: 6(float) DPdyCoarse 39 41: 16(ptr) AccessChain 12 37 Store 41 40 43: 16(ptr) AccessChain 12 15 44: 6(float) Load 43 45: 6(float) FwidthCoarse 44 46: 16(ptr) AccessChain 12 42 Store 46 45 48: 16(ptr) AccessChain 12 15 49: 6(float) Load 48 50: 6(float) DPdxFine 49 51: 16(ptr) AccessChain 12 47 Store 51 50 53: 16(ptr) AccessChain 12 22 54: 6(float) Load 53 55: 6(float) DPdyFine 54 56: 16(ptr) AccessChain 12 52 Store 56 55 58: 16(ptr) AccessChain 12 15 59: 6(float) Load 58 60: 6(float) FwidthFine 59 61: 16(ptr) AccessChain 12 57 Store 61 60 65: 64(ptr) AccessChain 12 63 66: 7(fvec2) Load 65 67: 7(fvec2) DPdx 66 68: 64(ptr) AccessChain 12 62 Store 68 67 71: 64(ptr) AccessChain 12 70 72: 7(fvec2) Load 71 73: 7(fvec2) DPdy 72 74: 64(ptr) AccessChain 12 69 Store 74 73 76: 64(ptr) AccessChain 12 63 77: 7(fvec2) Load 76 78: 7(fvec2) Fwidth 77 79: 64(ptr) AccessChain 12 75 Store 79 78 81: 64(ptr) AccessChain 12 63 82: 7(fvec2) Load 81 83: 7(fvec2) DPdxCoarse 82 84: 64(ptr) AccessChain 12 80 Store 84 83 86: 64(ptr) AccessChain 12 70 87: 7(fvec2) Load 86 88: 7(fvec2) DPdyCoarse 87 89: 64(ptr) AccessChain 12 85 Store 89 88 91: 64(ptr) AccessChain 12 63 92: 7(fvec2) Load 91 93: 7(fvec2) FwidthCoarse 92 94: 64(ptr) AccessChain 12 90 Store 94 93 96: 64(ptr) AccessChain 12 63 97: 7(fvec2) Load 96 98: 7(fvec2) DPdxFine 97 99: 64(ptr) AccessChain 12 95 Store 99 98 101: 64(ptr) AccessChain 12 70 102: 7(fvec2) Load 101 103: 7(fvec2) DPdyFine 102 104: 64(ptr) AccessChain 12 100 Store 104 103 106: 64(ptr) AccessChain 12 63 107: 7(fvec2) Load 106 108: 7(fvec2) FwidthFine 107 109: 64(ptr) AccessChain 12 105 Store 109 108 113: 112(ptr) AccessChain 12 111 114: 8(fvec3) Load 113 115: 8(fvec3) DPdx 114 116: 112(ptr) AccessChain 12 110 Store 116 115 119: 112(ptr) AccessChain 12 118 120: 8(fvec3) Load 119 121: 8(fvec3) DPdy 120 122: 112(ptr) AccessChain 12 117 Store 122 121 124: 112(ptr) AccessChain 12 111 125: 8(fvec3) Load 124 126: 8(fvec3) Fwidth 125 127: 112(ptr) AccessChain 12 123 Store 127 126 129: 112(ptr) AccessChain 12 111 130: 8(fvec3) Load 129 131: 8(fvec3) DPdxCoarse 130 132: 112(ptr) AccessChain 12 128 Store 132 131 134: 112(ptr) AccessChain 12 118 135: 8(fvec3) Load 134 136: 8(fvec3) DPdyCoarse 135 137: 112(ptr) AccessChain 12 133 Store 137 136 139: 112(ptr) AccessChain 12 111 140: 8(fvec3) Load 139 141: 8(fvec3) FwidthCoarse 140 142: 112(ptr) AccessChain 12 138 Store 142 141 144: 112(ptr) AccessChain 12 111 145: 8(fvec3) Load 144 146: 8(fvec3) DPdxFine 145 147: 112(ptr) AccessChain 12 143 Store 147 146 149: 112(ptr) AccessChain 12 118 150: 8(fvec3) Load 149 151: 8(fvec3) DPdyFine 150 152: 112(ptr) AccessChain 12 148 Store 152 151 154: 112(ptr) AccessChain 12 111 155: 8(fvec3) Load 154 156: 8(fvec3) FwidthFine 155 157: 112(ptr) AccessChain 12 153 Store 157 156 161: 160(ptr) AccessChain 12 159 162: 9(fvec4) Load 161 163: 9(fvec4) DPdx 162 164: 160(ptr) AccessChain 12 158 Store 164 163 167: 160(ptr) AccessChain 12 166 168: 9(fvec4) Load 167 169: 9(fvec4) DPdy 168 170: 160(ptr) AccessChain 12 165 Store 170 169 172: 160(ptr) AccessChain 12 159 173: 9(fvec4) Load 172 174: 9(fvec4) Fwidth 173 175: 160(ptr) AccessChain 12 171 Store 175 174 177: 160(ptr) AccessChain 12 159 178: 9(fvec4) Load 177 179: 9(fvec4) DPdxCoarse 178 180: 160(ptr) AccessChain 12 176 Store 180 179 182: 160(ptr) AccessChain 12 166 183: 9(fvec4) Load 182 184: 9(fvec4) DPdyCoarse 183 185: 160(ptr) AccessChain 12 181 Store 185 184 187: 160(ptr) AccessChain 12 159 188: 9(fvec4) Load 187 189: 9(fvec4) FwidthCoarse 188 190: 160(ptr) AccessChain 12 186 Store 190 189 192: 160(ptr) AccessChain 12 159 193: 9(fvec4) Load 192 194: 9(fvec4) DPdxFine 193 195: 160(ptr) AccessChain 12 191 Store 195 194 197: 160(ptr) AccessChain 12 166 198: 9(fvec4) Load 197 199: 9(fvec4) DPdyFine 198 200: 160(ptr) AccessChain 12 196 Store 200 199 202: 160(ptr) AccessChain 12 159 203: 9(fvec4) Load 202 204: 9(fvec4) FwidthFine 203 205: 160(ptr) AccessChain 12 201 Store 205 204 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.computeShaderDerivatives2.comp.out000066400000000000000000000444551506534232700260530ustar00rootroot00000000000000spv.computeShaderDerivatives2.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 212 Capability Shader Capability DerivativeControl Capability ComputeDerivativeGroupLinearNV Extension "SPV_NV_compute_shader_derivatives" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 2 4 1 ExecutionMode 4 DerivativeGroupLinearNV Source ESSL 320 SourceExtension "GL_NV_compute_shader_derivatives" Name 4 "main" Name 10 "block" MemberName 10(block) 0 "fDerivativeX" MemberName 10(block) 1 "fDerivativeY" MemberName 10(block) 2 "fDerivativeWidth" MemberName 10(block) 3 "fCoarseDerivativeX" MemberName 10(block) 4 "fCoarseDerivativeY" MemberName 10(block) 5 "fCoarseDerivativeWidth" MemberName 10(block) 6 "fFineDerivativeX" MemberName 10(block) 7 "fFineDerivativeY" MemberName 10(block) 8 "fFineDerivativeWidth" MemberName 10(block) 9 "fX" MemberName 10(block) 10 "fY" MemberName 10(block) 11 "v2DerivativeX" MemberName 10(block) 12 "v2DerivativeY" MemberName 10(block) 13 "v2DerivativeWidth" MemberName 10(block) 14 "v2CoarseDerivativeX" MemberName 10(block) 15 "v2CoarseDerivativeY" MemberName 10(block) 16 "v2CoarseDerivativeWidth" MemberName 10(block) 17 "v2FineDerivativeX" MemberName 10(block) 18 "v2FineDerivativeY" MemberName 10(block) 19 "v2FineDerivativeWidth" MemberName 10(block) 20 "v2X" MemberName 10(block) 21 "v2Y" MemberName 10(block) 22 "v3DerivativeX" MemberName 10(block) 23 "v3DerivativeY" MemberName 10(block) 24 "v3DerivativeWidth" MemberName 10(block) 25 "v3CoarseDerivativeX" MemberName 10(block) 26 "v3CoarseDerivativeY" MemberName 10(block) 27 "v3CoarseDerivativeWidth" MemberName 10(block) 28 "v3FineDerivativeX" MemberName 10(block) 29 "v3FineDerivativeY" MemberName 10(block) 30 "v3FineDerivativeWidth" MemberName 10(block) 31 "v3X" MemberName 10(block) 32 "v3Y" MemberName 10(block) 33 "v4DerivativeX" MemberName 10(block) 34 "v4DerivativeY" MemberName 10(block) 35 "v4DerivativeWidth" MemberName 10(block) 36 "v4CoarseDerivativeX" MemberName 10(block) 37 "v4CoarseDerivativeY" MemberName 10(block) 38 "v4CoarseDerivativeWidth" MemberName 10(block) 39 "v4FineDerivativeX" MemberName 10(block) 40 "v4FineDerivativeY" MemberName 10(block) 41 "v4FineDerivativeWidth" MemberName 10(block) 42 "v4X" MemberName 10(block) 43 "v4Y" Name 12 "" Decorate 10(block) BufferBlock MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 4 MemberDecorate 10(block) 2 Offset 8 MemberDecorate 10(block) 3 Offset 12 MemberDecorate 10(block) 4 Offset 16 MemberDecorate 10(block) 5 Offset 20 MemberDecorate 10(block) 6 Offset 24 MemberDecorate 10(block) 7 Offset 28 MemberDecorate 10(block) 8 Offset 32 MemberDecorate 10(block) 9 Offset 36 MemberDecorate 10(block) 10 Offset 40 MemberDecorate 10(block) 11 Offset 48 MemberDecorate 10(block) 12 Offset 56 MemberDecorate 10(block) 13 Offset 64 MemberDecorate 10(block) 14 Offset 72 MemberDecorate 10(block) 15 Offset 80 MemberDecorate 10(block) 16 Offset 88 MemberDecorate 10(block) 17 Offset 96 MemberDecorate 10(block) 18 Offset 104 MemberDecorate 10(block) 19 Offset 112 MemberDecorate 10(block) 20 Offset 120 MemberDecorate 10(block) 21 Offset 128 MemberDecorate 10(block) 22 Offset 144 MemberDecorate 10(block) 23 Offset 160 MemberDecorate 10(block) 24 Offset 176 MemberDecorate 10(block) 25 Offset 192 MemberDecorate 10(block) 26 Offset 208 MemberDecorate 10(block) 27 Offset 224 MemberDecorate 10(block) 28 Offset 240 MemberDecorate 10(block) 29 Offset 256 MemberDecorate 10(block) 30 Offset 272 MemberDecorate 10(block) 31 Offset 288 MemberDecorate 10(block) 32 Offset 304 MemberDecorate 10(block) 33 Offset 320 MemberDecorate 10(block) 34 Offset 336 MemberDecorate 10(block) 35 Offset 352 MemberDecorate 10(block) 36 Offset 368 MemberDecorate 10(block) 37 Offset 384 MemberDecorate 10(block) 38 Offset 400 MemberDecorate 10(block) 39 Offset 416 MemberDecorate 10(block) 40 Offset 432 MemberDecorate 10(block) 41 Offset 448 MemberDecorate 10(block) 42 Offset 464 MemberDecorate 10(block) 43 Offset 480 Decorate 12 Binding 0 Decorate 12 DescriptorSet 0 Decorate 211 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeVector 6(float) 3 9: TypeVector 6(float) 4 10(block): TypeStruct 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 11: TypePointer Uniform 10(block) 12: 11(ptr) Variable Uniform 13: TypeInt 32 1 14: 13(int) Constant 0 15: 13(int) Constant 9 16: TypePointer Uniform 6(float) 21: 13(int) Constant 1 22: 13(int) Constant 10 27: 13(int) Constant 2 32: 13(int) Constant 3 37: 13(int) Constant 4 42: 13(int) Constant 5 47: 13(int) Constant 6 52: 13(int) Constant 7 57: 13(int) Constant 8 62: 13(int) Constant 11 63: 13(int) Constant 20 64: TypePointer Uniform 7(fvec2) 69: 13(int) Constant 12 70: 13(int) Constant 21 75: 13(int) Constant 13 80: 13(int) Constant 14 85: 13(int) Constant 15 90: 13(int) Constant 16 95: 13(int) Constant 17 100: 13(int) Constant 18 105: 13(int) Constant 19 110: 13(int) Constant 22 111: 13(int) Constant 31 112: TypePointer Uniform 8(fvec3) 117: 13(int) Constant 23 118: 13(int) Constant 32 123: 13(int) Constant 24 128: 13(int) Constant 25 133: 13(int) Constant 26 138: 13(int) Constant 27 143: 13(int) Constant 28 148: 13(int) Constant 29 153: 13(int) Constant 30 158: 13(int) Constant 33 159: 13(int) Constant 42 160: TypePointer Uniform 9(fvec4) 165: 13(int) Constant 34 166: 13(int) Constant 43 171: 13(int) Constant 35 176: 13(int) Constant 36 181: 13(int) Constant 37 186: 13(int) Constant 38 191: 13(int) Constant 39 196: 13(int) Constant 40 201: 13(int) Constant 41 206: TypeInt 32 0 207: TypeVector 206(int) 3 208: 206(int) Constant 2 209: 206(int) Constant 4 210: 206(int) Constant 1 211: 207(ivec3) ConstantComposite 208 209 210 4(main): 2 Function None 3 5: Label 17: 16(ptr) AccessChain 12 15 18: 6(float) Load 17 19: 6(float) DPdx 18 20: 16(ptr) AccessChain 12 14 Store 20 19 23: 16(ptr) AccessChain 12 22 24: 6(float) Load 23 25: 6(float) DPdy 24 26: 16(ptr) AccessChain 12 21 Store 26 25 28: 16(ptr) AccessChain 12 15 29: 6(float) Load 28 30: 6(float) Fwidth 29 31: 16(ptr) AccessChain 12 27 Store 31 30 33: 16(ptr) AccessChain 12 15 34: 6(float) Load 33 35: 6(float) DPdxCoarse 34 36: 16(ptr) AccessChain 12 32 Store 36 35 38: 16(ptr) AccessChain 12 22 39: 6(float) Load 38 40: 6(float) DPdyCoarse 39 41: 16(ptr) AccessChain 12 37 Store 41 40 43: 16(ptr) AccessChain 12 15 44: 6(float) Load 43 45: 6(float) FwidthCoarse 44 46: 16(ptr) AccessChain 12 42 Store 46 45 48: 16(ptr) AccessChain 12 15 49: 6(float) Load 48 50: 6(float) DPdxFine 49 51: 16(ptr) AccessChain 12 47 Store 51 50 53: 16(ptr) AccessChain 12 22 54: 6(float) Load 53 55: 6(float) DPdyFine 54 56: 16(ptr) AccessChain 12 52 Store 56 55 58: 16(ptr) AccessChain 12 15 59: 6(float) Load 58 60: 6(float) FwidthFine 59 61: 16(ptr) AccessChain 12 57 Store 61 60 65: 64(ptr) AccessChain 12 63 66: 7(fvec2) Load 65 67: 7(fvec2) DPdx 66 68: 64(ptr) AccessChain 12 62 Store 68 67 71: 64(ptr) AccessChain 12 70 72: 7(fvec2) Load 71 73: 7(fvec2) DPdy 72 74: 64(ptr) AccessChain 12 69 Store 74 73 76: 64(ptr) AccessChain 12 63 77: 7(fvec2) Load 76 78: 7(fvec2) Fwidth 77 79: 64(ptr) AccessChain 12 75 Store 79 78 81: 64(ptr) AccessChain 12 63 82: 7(fvec2) Load 81 83: 7(fvec2) DPdxCoarse 82 84: 64(ptr) AccessChain 12 80 Store 84 83 86: 64(ptr) AccessChain 12 70 87: 7(fvec2) Load 86 88: 7(fvec2) DPdyCoarse 87 89: 64(ptr) AccessChain 12 85 Store 89 88 91: 64(ptr) AccessChain 12 63 92: 7(fvec2) Load 91 93: 7(fvec2) FwidthCoarse 92 94: 64(ptr) AccessChain 12 90 Store 94 93 96: 64(ptr) AccessChain 12 63 97: 7(fvec2) Load 96 98: 7(fvec2) DPdxFine 97 99: 64(ptr) AccessChain 12 95 Store 99 98 101: 64(ptr) AccessChain 12 70 102: 7(fvec2) Load 101 103: 7(fvec2) DPdyFine 102 104: 64(ptr) AccessChain 12 100 Store 104 103 106: 64(ptr) AccessChain 12 63 107: 7(fvec2) Load 106 108: 7(fvec2) FwidthFine 107 109: 64(ptr) AccessChain 12 105 Store 109 108 113: 112(ptr) AccessChain 12 111 114: 8(fvec3) Load 113 115: 8(fvec3) DPdx 114 116: 112(ptr) AccessChain 12 110 Store 116 115 119: 112(ptr) AccessChain 12 118 120: 8(fvec3) Load 119 121: 8(fvec3) DPdy 120 122: 112(ptr) AccessChain 12 117 Store 122 121 124: 112(ptr) AccessChain 12 111 125: 8(fvec3) Load 124 126: 8(fvec3) Fwidth 125 127: 112(ptr) AccessChain 12 123 Store 127 126 129: 112(ptr) AccessChain 12 111 130: 8(fvec3) Load 129 131: 8(fvec3) DPdxCoarse 130 132: 112(ptr) AccessChain 12 128 Store 132 131 134: 112(ptr) AccessChain 12 118 135: 8(fvec3) Load 134 136: 8(fvec3) DPdyCoarse 135 137: 112(ptr) AccessChain 12 133 Store 137 136 139: 112(ptr) AccessChain 12 111 140: 8(fvec3) Load 139 141: 8(fvec3) FwidthCoarse 140 142: 112(ptr) AccessChain 12 138 Store 142 141 144: 112(ptr) AccessChain 12 111 145: 8(fvec3) Load 144 146: 8(fvec3) DPdxFine 145 147: 112(ptr) AccessChain 12 143 Store 147 146 149: 112(ptr) AccessChain 12 118 150: 8(fvec3) Load 149 151: 8(fvec3) DPdyFine 150 152: 112(ptr) AccessChain 12 148 Store 152 151 154: 112(ptr) AccessChain 12 111 155: 8(fvec3) Load 154 156: 8(fvec3) FwidthFine 155 157: 112(ptr) AccessChain 12 153 Store 157 156 161: 160(ptr) AccessChain 12 159 162: 9(fvec4) Load 161 163: 9(fvec4) DPdx 162 164: 160(ptr) AccessChain 12 158 Store 164 163 167: 160(ptr) AccessChain 12 166 168: 9(fvec4) Load 167 169: 9(fvec4) DPdy 168 170: 160(ptr) AccessChain 12 165 Store 170 169 172: 160(ptr) AccessChain 12 159 173: 9(fvec4) Load 172 174: 9(fvec4) Fwidth 173 175: 160(ptr) AccessChain 12 171 Store 175 174 177: 160(ptr) AccessChain 12 159 178: 9(fvec4) Load 177 179: 9(fvec4) DPdxCoarse 178 180: 160(ptr) AccessChain 12 176 Store 180 179 182: 160(ptr) AccessChain 12 166 183: 9(fvec4) Load 182 184: 9(fvec4) DPdyCoarse 183 185: 160(ptr) AccessChain 12 181 Store 185 184 187: 160(ptr) AccessChain 12 159 188: 9(fvec4) Load 187 189: 9(fvec4) FwidthCoarse 188 190: 160(ptr) AccessChain 12 186 Store 190 189 192: 160(ptr) AccessChain 12 159 193: 9(fvec4) Load 192 194: 9(fvec4) DPdxFine 193 195: 160(ptr) AccessChain 12 191 Store 195 194 197: 160(ptr) AccessChain 12 166 198: 9(fvec4) Load 197 199: 9(fvec4) DPdyFine 198 200: 160(ptr) AccessChain 12 196 Store 200 199 202: 160(ptr) AccessChain 12 159 203: 9(fvec4) Load 202 204: 9(fvec4) FwidthFine 203 205: 160(ptr) AccessChain 12 201 Store 205 204 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.computeShaderDerivativesSpec.comp.out000066400000000000000000000027271506534232700266000ustar00rootroot00000000000000spv.computeShaderDerivativesSpec.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader Capability ComputeDerivativeGroupQuadsNV Extension "SPV_NV_compute_shader_derivatives" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 ExecutionMode 4 DerivativeGroupQuadsNV Source GLSL 450 SourceExtension "GL_NV_compute_shader_derivatives" Name 4 "main" Decorate 7 SpecId 0 Decorate 8 SpecId 1 Decorate 11 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) SpecConstant 1 8: 6(int) SpecConstant 1 9: 6(int) Constant 1 10: TypeVector 6(int) 3 11: 10(ivec3) SpecConstantComposite 7 8 9 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out000066400000000000000000000027321506534232700266560ustar00rootroot00000000000000spv.computeShaderDerivativesSpec2.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader Capability ComputeDerivativeGroupLinearNV Extension "SPV_NV_compute_shader_derivatives" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 ExecutionMode 4 DerivativeGroupLinearNV Source ESSL 320 SourceExtension "GL_NV_compute_shader_derivatives" Name 4 "main" Decorate 7 SpecId 0 Decorate 8 SpecId 1 Decorate 11 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) SpecConstant 1 8: 6(int) SpecConstant 1 9: 6(int) Constant 1 10: TypeVector 6(int) 3 11: 10(ivec3) SpecConstantComposite 7 8 9 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.conditionalDemote.frag.out000066400000000000000000000064601506534232700243740ustar00rootroot00000000000000spv.conditionalDemote.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader Capability DemoteToHelperInvocationEXT Extension "SPV_EXT_demote_to_helper_invocation" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 17 36 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_demote_to_helper_invocation" Name 4 "main" Name 9 "v" Name 13 "tex" Name 17 "coord" Name 33 "x" Name 36 "o" Decorate 13(tex) Binding 0 Decorate 13(tex) DescriptorSet 0 Decorate 17(coord) Location 0 Decorate 36(o) 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 32: TypePointer Function 26(bool) 35: TypePointer Output 7(fvec4) 36(o): 35(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function 33(x): 32(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 DemoteToHelperInvocationEXT Branch 31 31: Label 34: 26(bool) IsHelperInvocationEXT Store 33(x) 34 37: 7(fvec4) Load 9(v) Store 36(o) 37 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.conditionalDiscard.frag.out000066400000000000000000000054611506534232700245300ustar00rootroot00000000000000spv.conditionalDiscard.frag // Module Version 10000 // 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" 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) Binding 0 Decorate 13(tex) DescriptorSet 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 Kill 31: Label 35: 7(fvec4) Load 9(v) Store 34(gl_FragColor) 35 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.constConstruct.vert.out000066400000000000000000000175151506534232700240320ustar00rootroot00000000000000spv.constConstruct.vert // Module Version 10000 // 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" Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7:6(float16_t) Constant 15360 8:6(float16_t) Constant 16384 9:6(float16_t) Constant 16896 10:6(float16_t) Constant 17408 11:6(float16_t) Constant 17664 12:6(float16_t) Constant 17920 13:6(float16_t) Constant 18176 14:6(float16_t) Constant 18432 15:6(float16_t) Constant 18560 16:6(float16_t) Constant 18688 17:6(float16_t) Constant 18816 18: TypeFloat 32 19: 18(float) Constant 1099431936 20: 18(float) Constant 1099956224 21: 18(float) Constant 1100480512 22: 18(float) Constant 1101004800 23: 18(float) Constant 1101529088 24: 18(float) Constant 1102053376 25: 18(float) Constant 1102577664 26: 18(float) Constant 1103101952 27: 18(float) Constant 1103626240 28: 18(float) Constant 1104150528 29: 18(float) Constant 1104674816 30: 18(float) Constant 1065353216 31: TypeFloat 64 32:31(float64_t) Constant 0 1077968896 33:31(float64_t) Constant 0 1078001664 34:31(float64_t) Constant 0 1078034432 35:31(float64_t) Constant 0 1078067200 36:31(float64_t) Constant 0 1078099968 37:31(float64_t) Constant 0 1078132736 38:31(float64_t) Constant 0 1078165504 39:31(float64_t) Constant 0 1078198272 40:31(float64_t) Constant 0 1078231040 41:31(float64_t) Constant 0 1078263808 42:31(float64_t) Constant 0 1078296576 43:31(float64_t) Constant 0 1072693248 44: TypeInt 8 1 45: 44(int8_t) Constant 49 46: 44(int8_t) Constant 50 47: 44(int8_t) Constant 51 48: 44(int8_t) Constant 52 49: 44(int8_t) Constant 53 50: 44(int8_t) Constant 54 51: 44(int8_t) Constant 55 52: 44(int8_t) Constant 56 53: 44(int8_t) Constant 57 54: 44(int8_t) Constant 58 55: 44(int8_t) Constant 59 56: 44(int8_t) Constant 1 57: TypeInt 16 1 58: 57(int16_t) Constant 65 59: 57(int16_t) Constant 66 60: 57(int16_t) Constant 67 61: 57(int16_t) Constant 68 62: 57(int16_t) Constant 69 63: 57(int16_t) Constant 70 64: 57(int16_t) Constant 71 65: 57(int16_t) Constant 72 66: 57(int16_t) Constant 73 67: 57(int16_t) Constant 74 68: 57(int16_t) Constant 75 69: 57(int16_t) Constant 1 70: TypeInt 32 1 71: 70(int) Constant 81 72: 70(int) Constant 82 73: 70(int) Constant 83 74: 70(int) Constant 84 75: 70(int) Constant 85 76: 70(int) Constant 86 77: 70(int) Constant 87 78: 70(int) Constant 88 79: 70(int) Constant 89 80: 70(int) Constant 90 81: 70(int) Constant 91 82: 70(int) Constant 1 83: TypeInt 64 1 84: 83(int64_t) Constant 97 0 85: 83(int64_t) Constant 98 0 86: 83(int64_t) Constant 99 0 87: 83(int64_t) Constant 100 0 88: 83(int64_t) Constant 101 0 89: 83(int64_t) Constant 102 0 90: 83(int64_t) Constant 103 0 91: 83(int64_t) Constant 104 0 92: 83(int64_t) Constant 105 0 93: 83(int64_t) Constant 106 0 94: 83(int64_t) Constant 107 0 95: 83(int64_t) Constant 1 0 96: TypeInt 8 0 97: 96(int8_t) Constant 113 98: 96(int8_t) Constant 114 99: 96(int8_t) Constant 115 100: 96(int8_t) Constant 116 101: 96(int8_t) Constant 117 102: 96(int8_t) Constant 118 103: 96(int8_t) Constant 119 104: 96(int8_t) Constant 120 105: 96(int8_t) Constant 121 106: 96(int8_t) Constant 122 107: 96(int8_t) Constant 123 108: 96(int8_t) Constant 1 109: TypeInt 16 0 110:109(int16_t) Constant 129 111:109(int16_t) Constant 130 112:109(int16_t) Constant 131 113:109(int16_t) Constant 65412 114:109(int16_t) Constant 133 115:109(int16_t) Constant 134 116:109(int16_t) Constant 135 117:109(int16_t) Constant 136 118:109(int16_t) Constant 137 119:109(int16_t) Constant 138 120:109(int16_t) Constant 139 121:109(int16_t) Constant 1 122: TypeInt 32 0 123: 122(int) Constant 145 124: 122(int) Constant 146 125: 122(int) Constant 147 126: 122(int) Constant 4294967188 127: 122(int) Constant 149 128: 122(int) Constant 150 129: 122(int) Constant 151 130: 122(int) Constant 152 131: 122(int) Constant 153 132: 122(int) Constant 154 133: 122(int) Constant 155 134: 122(int) Constant 1 135: TypeInt 64 0 136:135(int64_t) Constant 161 0 137:135(int64_t) Constant 162 0 138:135(int64_t) Constant 163 0 139:135(int64_t) Constant 4294967204 4294967295 140:135(int64_t) Constant 165 0 141:135(int64_t) Constant 166 0 142:135(int64_t) Constant 167 0 143:135(int64_t) Constant 168 0 144:135(int64_t) Constant 169 0 145:135(int64_t) Constant 170 0 146:135(int64_t) Constant 171 0 147:135(int64_t) Constant 1 0 148: TypeBool 149: 148(bool) ConstantTrue 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.constStruct.vert.out000066400000000000000000000037661506534232700233350ustar00rootroot00000000000000spv.constStruct.vert // 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 Vertex 4 "main" Source GLSL 450 Name 4 "main" Name 9 "T" MemberName 9(T) 0 "m" Name 10 "U" MemberName 10(U) 0 "m" Name 11 "S" MemberName 11(S) 0 "t" MemberName 11(S) 1 "u" Name 13 "s1" Name 22 "s2" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeMatrix 7(fvec2) 2 9(T): TypeStruct 8 10(U): TypeStruct 8 11(S): TypeStruct 9(T) 10(U) 12: TypePointer Function 11(S) 14: 6(float) Constant 1065353216 15: 6(float) Constant 0 16: 7(fvec2) ConstantComposite 14 15 17: 7(fvec2) ConstantComposite 15 14 18: 8 ConstantComposite 16 17 19: 9(T) ConstantComposite 18 20: 10(U) ConstantComposite 18 21: 11(S) ConstantComposite 19 20 4(main): 2 Function None 3 5: Label 13(s1): 12(ptr) Variable Function 22(s2): 12(ptr) Variable Function Store 13(s1) 21 Store 22(s2) 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.constructComposite.comp.out000066400000000000000000000060251506534232700246560ustar00rootroot00000000000000spv.constructComposite.comp // 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 GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 460 Name 4 "main" Name 7 "sA" MemberName 7(sA) 0 "x" MemberName 7(sA) 1 "y" Name 8 "sC" MemberName 8(sC) 0 "state" Name 10 "c" Name 11 "sA" MemberName 11(sA) 0 "x" MemberName 11(sA) 1 "y" Name 12 "sB" MemberName 12(sB) 0 "a" Name 13 "ubo" MemberName 13(ubo) 0 "b" Name 15 "" MemberDecorate 11(sA) 0 Offset 0 MemberDecorate 11(sA) 1 Offset 4 MemberDecorate 12(sB) 0 Offset 0 Decorate 13(ubo) Block MemberDecorate 13(ubo) 0 Offset 0 Decorate 15 Binding 0 Decorate 15 DescriptorSet 0 Decorate 28 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7(sA): TypeStruct 6(int) 6(int) 8(sC): TypeStruct 7(sA) 9: TypePointer Private 8(sC) 10(c): 9(ptr) Variable Private 11(sA): TypeStruct 6(int) 6(int) 12(sB): TypeStruct 11(sA) 13(ubo): TypeStruct 12(sB) 14: TypePointer Uniform 13(ubo) 15: 14(ptr) Variable Uniform 16: 6(int) Constant 0 17: TypePointer Uniform 11(sA) 24: TypeInt 32 0 25: TypeVector 24(int) 3 26: 24(int) Constant 64 27: 24(int) Constant 1 28: 25(ivec3) ConstantComposite 26 27 27 4(main): 2 Function None 3 5: Label 18: 17(ptr) AccessChain 15 16 16 19: 11(sA) Load 18 20: 6(int) CompositeExtract 19 0 21: 6(int) CompositeExtract 19 1 22: 7(sA) CompositeConstruct 20 21 23: 8(sC) CompositeConstruct 22 Store 10(c) 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.controlFlowAttributes.frag.out000066400000000000000000000253101506534232700253050ustar00rootroot00000000000000spv.controlFlowAttributes.frag WARNING: 0:27: 'unroll' : expected no arguments WARNING: 0:28: 'dont_unroll' : expected no arguments WARNING: 0:29: 'dependency_infinite' : expected no arguments WARNING: 0:30: 'dependency_length' : expected a single integer argument WARNING: 0:31: '' : attribute with arguments not recognized, skipping WARNING: 0:32: '' : attribute with arguments not recognized, skipping WARNING: 0:33: '' : attribute with arguments not recognized, skipping Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 123 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_control_flow_attributes" Name 4 "main" Name 6 "f0(" Name 8 "f1(" Name 23 "i" Name 41 "i" Name 52 "cond" Name 65 "i" Name 84 "i" 2: TypeVoid 3: TypeFunction 2 19: TypeBool 20: 19(bool) ConstantTrue 21: TypeInt 32 1 22: TypePointer Function 21(int) 24: 21(int) Constant 0 31: 21(int) Constant 8 34: 21(int) Constant 1 51: TypePointer Private 19(bool) 52(cond): 51(ptr) Variable Private 59: 19(bool) ConstantFalse 60: 21(int) Constant 3 4(main): 2 Function None 3 5: Label 23(i): 22(ptr) Variable Function 41(i): 22(ptr) Variable Function 65(i): 22(ptr) Variable Function 84(i): 22(ptr) Variable Function Store 23(i) 24 Branch 25 25: Label LoopMerge 27 28 Unroll Branch 29 29: Label 30: 21(int) Load 23(i) 32: 19(bool) SLessThan 30 31 BranchConditional 32 26 27 26: Label Branch 28 28: Label 33: 21(int) Load 23(i) 35: 21(int) IAdd 33 34 Store 23(i) 35 Branch 25 27: Label 36: 2 FunctionCall 6(f0() Branch 37 37: Label LoopMerge 39 40 DependencyInfinite Branch 38 38: Label Branch 40 40: Label BranchConditional 20 37 39 39: Label Store 41(i) 24 Branch 42 42: Label LoopMerge 44 45 DependencyLength 4 Branch 46 46: Label 47: 21(int) Load 41(i) 48: 19(bool) SLessThan 47 31 BranchConditional 48 43 44 43: Label Branch 45 45: Label 49: 21(int) Load 41(i) 50: 21(int) IAdd 49 34 Store 41(i) 50 Branch 42 44: Label 53: 19(bool) Load 52(cond) SelectionMerge 55 Flatten BranchConditional 53 54 55 54: Label Branch 55 55: Label 56: 19(bool) Load 52(cond) SelectionMerge 58 DontFlatten BranchConditional 56 57 58 57: Label Store 52(cond) 59 Branch 58 58: Label SelectionMerge 62 DontFlatten Switch 60 62 case 3: 61 61: Label Branch 62 62: Label Store 65(i) 24 Branch 66 66: Label LoopMerge 68 69 None Branch 70 70: Label 71: 21(int) Load 65(i) 72: 19(bool) SLessThan 71 31 BranchConditional 72 67 68 67: Label Branch 69 69: Label 73: 21(int) Load 65(i) 74: 21(int) IAdd 73 34 Store 65(i) 74 Branch 66 68: Label Branch 75 75: Label LoopMerge 77 78 None Branch 79 79: Label BranchConditional 20 76 77 76: Label Branch 78 78: Label Branch 75 77: Label Branch 80 80: Label LoopMerge 82 83 None Branch 81 81: Label Branch 83 83: Label BranchConditional 20 80 82 82: Label Store 84(i) 24 Branch 85 85: Label LoopMerge 87 88 None Branch 89 89: Label 90: 21(int) Load 84(i) 91: 19(bool) SLessThan 90 31 BranchConditional 91 86 87 86: Label Branch 88 88: Label 92: 21(int) Load 84(i) 93: 21(int) IAdd 92 34 Store 84(i) 93 Branch 85 87: Label 94: 19(bool) Load 52(cond) SelectionMerge 96 None BranchConditional 94 95 96 95: Label Branch 96 96: Label 97: 19(bool) Load 52(cond) SelectionMerge 99 None BranchConditional 97 98 99 98: Label Store 52(cond) 59 Branch 99 99: Label SelectionMerge 101 None Switch 60 101 case 3: 100 100: Label Branch 101 101: Label Branch 104 104: Label LoopMerge 106 107 Unroll DontUnroll DependencyLength 2 Branch 108 108: Label 109: 19(bool) Load 52(cond) BranchConditional 109 105 106 105: Label Branch 107 107: Label Branch 104 106: Label SelectionMerge 111 DontFlatten Switch 60 111 case 3: 110 110: Label Branch 111 111: Label 114: 19(bool) Load 52(cond) SelectionMerge 116 Flatten BranchConditional 114 115 116 115: Label Branch 116 116: Label Branch 117 117: Label LoopMerge 119 120 DependencyInfinite Branch 121 121: Label 122: 19(bool) Load 52(cond) BranchConditional 122 118 119 118: Label Branch 120 120: Label Branch 117 119: Label Return FunctionEnd 6(f0(): 2 Function None 3 7: Label Branch 10 10: Label LoopMerge 12 13 DontUnroll Branch 11 11: Label Branch 13 13: Label Branch 10 12: Label Unreachable FunctionEnd 8(f1(): 2 Function None 3 9: Label Branch 14 14: Label LoopMerge 16 17 DontUnroll Branch 18 18: Label BranchConditional 20 15 16 15: Label Branch 17 17: Label Branch 14 16: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.conversion.frag.out000066400000000000000000000656621506534232700231310ustar00rootroot00000000000000spv.conversion.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 455 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 39 53 157 322 446 448 450 452 454 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 8 "b" Name 11 "u_i" Name 18 "u_f" Name 25 "b2" Name 33 "b3" Name 39 "i_i" Name 45 "b4" Name 53 "i_f" Name 58 "i" Name 68 "i2" Name 71 "u_f2" Name 81 "i3" Name 84 "u_f3" Name 94 "i4" Name 97 "u_f4" Name 106 "f" Name 110 "f2" Name 114 "f3" Name 118 "f4" Name 157 "i_i4" Name 322 "gl_FragColor" Name 417 "cv2" Name 418 "cv5" Name 428 "u_b" Name 430 "u_b2" Name 432 "u_b3" Name 434 "u_b4" Name 436 "u_i2" Name 438 "u_i3" Name 440 "u_i4" Name 441 "i_b" Name 442 "i_b2" Name 443 "i_b3" Name 444 "i_b4" Name 446 "i_i2" Name 448 "i_i3" Name 450 "i_f2" Name 452 "i_f3" Name 454 "i_f4" Decorate 39(i_i) Flat Decorate 39(i_i) Location 0 Decorate 53(i_f) Location 4 Decorate 157(i_i4) Flat Decorate 157(i_i4) Location 3 Decorate 322(gl_FragColor) Location 0 Decorate 446(i_i2) Flat Decorate 446(i_i2) Location 1 Decorate 448(i_i3) Flat Decorate 448(i_i3) Location 2 Decorate 450(i_f2) Location 5 Decorate 452(i_f3) Location 6 Decorate 454(i_f4) Location 7 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 9: TypeInt 32 1 10: TypePointer Private 9(int) 11(u_i): 10(ptr) Variable Private 13: TypeInt 32 0 14: 13(int) Constant 0 16: TypeFloat 32 17: TypePointer Private 16(float) 18(u_f): 17(ptr) Variable Private 20: 16(float) Constant 0 23: TypeVector 6(bool) 2 24: TypePointer Function 23(bvec2) 31: TypeVector 6(bool) 3 32: TypePointer Function 31(bvec3) 38: TypePointer Input 9(int) 39(i_i): 38(ptr) Variable Input 43: TypeVector 6(bool) 4 44: TypePointer Function 43(bvec4) 52: TypePointer Input 16(float) 53(i_f): 52(ptr) Variable Input 57: TypePointer Function 9(int) 62: 9(int) Constant 0 63: 9(int) Constant 1 66: TypeVector 9(int) 2 67: TypePointer Function 66(ivec2) 69: TypeVector 16(float) 2 70: TypePointer Private 69(fvec2) 71(u_f2): 70(ptr) Variable Private 75: 66(ivec2) ConstantComposite 62 62 76: 66(ivec2) ConstantComposite 63 63 79: TypeVector 9(int) 3 80: TypePointer Function 79(ivec3) 82: TypeVector 16(float) 3 83: TypePointer Private 82(fvec3) 84(u_f3): 83(ptr) Variable Private 88: 79(ivec3) ConstantComposite 62 62 62 89: 79(ivec3) ConstantComposite 63 63 63 92: TypeVector 9(int) 4 93: TypePointer Function 92(ivec4) 95: TypeVector 16(float) 4 96: TypePointer Private 95(fvec4) 97(u_f4): 96(ptr) Variable Private 101: 92(ivec4) ConstantComposite 62 62 62 62 102: 92(ivec4) ConstantComposite 63 63 63 63 105: TypePointer Function 16(float) 109: TypePointer Function 69(fvec2) 113: TypePointer Function 82(fvec3) 117: TypePointer Function 95(fvec4) 124: 16(float) Constant 1065353216 132: 69(fvec2) ConstantComposite 20 20 133: 69(fvec2) ConstantComposite 124 124 141: 82(fvec3) ConstantComposite 20 20 20 142: 82(fvec3) ConstantComposite 124 124 124 150: 95(fvec4) ConstantComposite 20 20 20 20 151: 95(fvec4) ConstantComposite 124 124 124 124 156: TypePointer Input 92(ivec4) 157(i_i4): 156(ptr) Variable Input 159: TypeVector 13(int) 4 160: 159(ivec4) ConstantComposite 14 14 14 14 315: 13(int) Constant 1 321: TypePointer Output 95(fvec4) 322(gl_FragColor): 321(ptr) Variable Output 336: 13(int) Constant 2 349: 13(int) Constant 3 427: TypePointer Private 6(bool) 428(u_b): 427(ptr) Variable Private 429: TypePointer Private 23(bvec2) 430(u_b2): 429(ptr) Variable Private 431: TypePointer Private 31(bvec3) 432(u_b3): 431(ptr) Variable Private 433: TypePointer Private 43(bvec4) 434(u_b4): 433(ptr) Variable Private 435: TypePointer Private 66(ivec2) 436(u_i2): 435(ptr) Variable Private 437: TypePointer Private 79(ivec3) 438(u_i3): 437(ptr) Variable Private 439: TypePointer Private 92(ivec4) 440(u_i4): 439(ptr) Variable Private 441(i_b): 427(ptr) Variable Private 442(i_b2): 429(ptr) Variable Private 443(i_b3): 431(ptr) Variable Private 444(i_b4): 433(ptr) Variable Private 445: TypePointer Input 66(ivec2) 446(i_i2): 445(ptr) Variable Input 447: TypePointer Input 79(ivec3) 448(i_i3): 447(ptr) Variable Input 449: TypePointer Input 69(fvec2) 450(i_f2): 449(ptr) Variable Input 451: TypePointer Input 82(fvec3) 452(i_f3): 451(ptr) Variable Input 453: TypePointer Input 95(fvec4) 454(i_f4): 453(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(b): 7(ptr) Variable Function 25(b2): 24(ptr) Variable Function 33(b3): 32(ptr) Variable Function 45(b4): 44(ptr) Variable Function 58(i): 57(ptr) Variable Function 68(i2): 67(ptr) Variable Function 81(i3): 80(ptr) Variable Function 94(i4): 93(ptr) Variable Function 106(f): 105(ptr) Variable Function 110(f2): 109(ptr) Variable Function 114(f3): 113(ptr) Variable Function 118(f4): 117(ptr) Variable Function 298: 105(ptr) Variable Function 309: 105(ptr) Variable Function 353: 117(ptr) Variable Function 417(cv2): 93(ptr) Variable Function 418(cv5): 44(ptr) Variable Function 12: 9(int) Load 11(u_i) 15: 6(bool) INotEqual 12 14 19: 16(float) Load 18(u_f) 21: 6(bool) FUnordNotEqual 19 20 22: 6(bool) LogicalNotEqual 15 21 Store 8(b) 22 26: 9(int) Load 11(u_i) 27: 6(bool) INotEqual 26 14 28: 16(float) Load 18(u_f) 29: 6(bool) FUnordNotEqual 28 20 30: 23(bvec2) CompositeConstruct 27 29 Store 25(b2) 30 34: 9(int) Load 11(u_i) 35: 6(bool) INotEqual 34 14 36: 16(float) Load 18(u_f) 37: 6(bool) FUnordNotEqual 36 20 40: 9(int) Load 39(i_i) 41: 6(bool) INotEqual 40 14 42: 31(bvec3) CompositeConstruct 35 37 41 Store 33(b3) 42 46: 9(int) Load 11(u_i) 47: 6(bool) INotEqual 46 14 48: 16(float) Load 18(u_f) 49: 6(bool) FUnordNotEqual 48 20 50: 9(int) Load 39(i_i) 51: 6(bool) INotEqual 50 14 54: 16(float) Load 53(i_f) 55: 6(bool) FUnordNotEqual 54 20 56: 43(bvec4) CompositeConstruct 47 49 51 55 Store 45(b4) 56 59: 16(float) Load 18(u_f) 60: 9(int) ConvertFToS 59 61: 6(bool) Load 8(b) 64: 9(int) Select 61 63 62 65: 9(int) IAdd 60 64 Store 58(i) 65 72: 69(fvec2) Load 71(u_f2) 73: 66(ivec2) ConvertFToS 72 74: 23(bvec2) Load 25(b2) 77: 66(ivec2) Select 74 76 75 78: 66(ivec2) IAdd 73 77 Store 68(i2) 78 85: 82(fvec3) Load 84(u_f3) 86: 79(ivec3) ConvertFToS 85 87: 31(bvec3) Load 33(b3) 90: 79(ivec3) Select 87 89 88 91: 79(ivec3) IAdd 86 90 Store 81(i3) 91 98: 95(fvec4) Load 97(u_f4) 99: 92(ivec4) ConvertFToS 98 100: 43(bvec4) Load 45(b4) 103: 92(ivec4) Select 100 102 101 104: 92(ivec4) IAdd 99 103 Store 94(i4) 104 107: 9(int) Load 58(i) 108: 16(float) ConvertSToF 107 Store 106(f) 108 111: 66(ivec2) Load 68(i2) 112: 69(fvec2) ConvertSToF 111 Store 110(f2) 112 115: 79(ivec3) Load 81(i3) 116: 82(fvec3) ConvertSToF 115 Store 114(f3) 116 119: 92(ivec4) Load 94(i4) 120: 95(fvec4) ConvertSToF 119 Store 118(f4) 120 121: 9(int) Load 58(i) 122: 16(float) ConvertSToF 121 123: 6(bool) Load 8(b) 125: 16(float) Select 123 124 20 126: 16(float) FAdd 122 125 127: 16(float) Load 106(f) 128: 16(float) FAdd 127 126 Store 106(f) 128 129: 66(ivec2) Load 68(i2) 130: 69(fvec2) ConvertSToF 129 131: 23(bvec2) Load 25(b2) 134: 69(fvec2) Select 131 133 132 135: 69(fvec2) FAdd 130 134 136: 69(fvec2) Load 110(f2) 137: 69(fvec2) FSub 136 135 Store 110(f2) 137 138: 79(ivec3) Load 81(i3) 139: 82(fvec3) ConvertSToF 138 140: 31(bvec3) Load 33(b3) 143: 82(fvec3) Select 140 142 141 144: 82(fvec3) FAdd 139 143 145: 82(fvec3) Load 114(f3) 146: 82(fvec3) FDiv 145 144 Store 114(f3) 146 147: 92(ivec4) Load 94(i4) 148: 95(fvec4) ConvertSToF 147 149: 43(bvec4) Load 45(b4) 152: 95(fvec4) Select 149 151 150 153: 95(fvec4) FAdd 148 152 154: 95(fvec4) Load 118(f4) 155: 95(fvec4) FAdd 154 153 Store 118(f4) 155 158: 92(ivec4) Load 157(i_i4) 161: 43(bvec4) INotEqual 158 160 162: 95(fvec4) Select 161 151 150 163: 95(fvec4) Load 118(f4) 164: 95(fvec4) FAdd 163 162 Store 118(f4) 164 165: 95(fvec4) Load 97(u_f4) 166: 43(bvec4) FUnordNotEqual 165 150 167: 95(fvec4) Select 166 151 150 168: 95(fvec4) Load 118(f4) 169: 95(fvec4) FAdd 168 167 Store 118(f4) 169 170: 16(float) Load 106(f) 171: 9(int) Load 58(i) 172: 16(float) ConvertSToF 171 173: 16(float) FSub 170 172 174: 16(float) Load 106(f) 175: 16(float) FAdd 174 173 Store 106(f) 175 176: 16(float) Load 106(f) 177: 9(int) Load 58(i) 178: 16(float) ConvertSToF 177 179: 69(fvec2) CompositeConstruct 176 178 180: 66(ivec2) Load 68(i2) 181: 69(fvec2) ConvertSToF 180 182: 69(fvec2) FAdd 179 181 183: 69(fvec2) Load 110(f2) 184: 69(fvec2) FAdd 183 182 Store 110(f2) 184 185: 79(ivec3) Load 81(i3) 186: 82(fvec3) ConvertSToF 185 187: 16(float) Load 106(f) 188: 9(int) Load 58(i) 189: 16(float) ConvertSToF 188 190: 16(float) Load 106(f) 191: 82(fvec3) CompositeConstruct 187 189 190 192: 82(fvec3) FAdd 186 191 193: 82(fvec3) Load 114(f3) 194: 82(fvec3) FAdd 193 192 Store 114(f3) 194 195: 6(bool) Load 8(b) 196: 16(float) Select 195 124 20 197: 9(int) Load 58(i) 198: 16(float) ConvertSToF 197 199: 16(float) Load 106(f) 200: 9(int) Load 58(i) 201: 16(float) ConvertSToF 200 202: 95(fvec4) CompositeConstruct 196 198 199 201 203: 92(ivec4) Load 94(i4) 204: 95(fvec4) ConvertSToF 203 205: 95(fvec4) FAdd 202 204 206: 95(fvec4) Load 118(f4) 207: 95(fvec4) FAdd 206 205 Store 118(f4) 207 208: 16(float) Load 106(f) 209: 9(int) Load 58(i) 210: 16(float) ConvertSToF 209 211: 69(fvec2) CompositeConstruct 208 210 212: 9(int) Load 58(i) 213: 16(float) ConvertSToF 212 214: 69(fvec2) VectorTimesScalar 211 213 215: 69(fvec2) Load 110(f2) 216: 69(fvec2) FAdd 215 214 Store 110(f2) 216 217: 16(float) Load 106(f) 218: 9(int) Load 58(i) 219: 16(float) ConvertSToF 218 220: 16(float) Load 106(f) 221: 82(fvec3) CompositeConstruct 217 219 220 222: 9(int) Load 58(i) 223: 16(float) ConvertSToF 222 224: 82(fvec3) CompositeConstruct 223 223 223 225: 82(fvec3) FAdd 221 224 226: 82(fvec3) Load 114(f3) 227: 82(fvec3) FAdd 226 225 Store 114(f3) 227 228: 9(int) Load 58(i) 229: 16(float) ConvertSToF 228 230: 6(bool) Load 8(b) 231: 16(float) Select 230 124 20 232: 9(int) Load 58(i) 233: 16(float) ConvertSToF 232 234: 16(float) Load 106(f) 235: 9(int) Load 58(i) 236: 16(float) ConvertSToF 235 237: 95(fvec4) CompositeConstruct 231 233 234 236 238: 95(fvec4) CompositeConstruct 229 229 229 229 239: 95(fvec4) FSub 238 237 240: 95(fvec4) Load 118(f4) 241: 95(fvec4) FAdd 240 239 Store 118(f4) 241 242: 16(float) Load 106(f) 243: 9(int) ConvertFToS 242 244: 9(int) Load 58(i) 245: 66(ivec2) CompositeConstruct 243 244 246: 66(ivec2) Load 68(i2) 247: 66(ivec2) IAdd 246 245 Store 68(i2) 247 248: 16(float) Load 106(f) 249: 9(int) ConvertFToS 248 250: 9(int) Load 58(i) 251: 16(float) Load 106(f) 252: 9(int) ConvertFToS 251 253: 79(ivec3) CompositeConstruct 249 250 252 254: 79(ivec3) Load 81(i3) 255: 79(ivec3) IAdd 254 253 Store 81(i3) 255 256: 6(bool) Load 8(b) 257: 9(int) Select 256 63 62 258: 9(int) Load 58(i) 259: 16(float) Load 106(f) 260: 9(int) ConvertFToS 259 261: 9(int) Load 58(i) 262: 92(ivec4) CompositeConstruct 257 258 260 261 263: 92(ivec4) Load 94(i4) 264: 92(ivec4) IAdd 263 262 Store 94(i4) 264 265: 16(float) Load 106(f) 266: 9(int) Load 58(i) 267: 16(float) ConvertSToF 266 268: 6(bool) FOrdLessThan 265 267 269: 6(bool) LogicalNot 268 SelectionMerge 271 None BranchConditional 269 270 271 270: Label 272: 9(int) Load 58(i) 273: 16(float) ConvertSToF 272 274: 16(float) Load 106(f) 275: 6(bool) FOrdLessThan 273 274 Branch 271 271: Label 276: 6(bool) Phi 268 5 275 270 277: 6(bool) LogicalNot 276 SelectionMerge 279 None BranchConditional 277 278 279 278: Label 280: 69(fvec2) Load 110(f2) 281: 66(ivec2) Load 68(i2) 282: 69(fvec2) ConvertSToF 281 283: 23(bvec2) FOrdEqual 280 282 284: 6(bool) All 283 Branch 279 279: Label 285: 6(bool) Phi 276 271 284 278 286: 6(bool) LogicalNot 285 SelectionMerge 288 None BranchConditional 286 287 288 287: Label 289: 79(ivec3) Load 81(i3) 290: 82(fvec3) ConvertSToF 289 291: 82(fvec3) Load 114(f3) 292: 31(bvec3) FUnordNotEqual 290 291 293: 6(bool) Any 292 Branch 288 288: Label 294: 6(bool) Phi 285 279 293 287 SelectionMerge 296 None BranchConditional 294 295 296 295: Label 297: 6(bool) Load 8(b) SelectionMerge 300 None BranchConditional 297 299 303 299: Label 301: 9(int) Load 58(i) 302: 16(float) ConvertSToF 301 Store 298 302 Branch 300 303: Label 304: 105(ptr) AccessChain 110(f2) 14 305: 16(float) Load 304 Store 298 305 Branch 300 300: Label 306: 16(float) Load 298 307: 7(ptr) AccessChain 25(b2) 14 308: 6(bool) Load 307 SelectionMerge 311 None BranchConditional 308 310 314 310: Label 312: 105(ptr) AccessChain 114(f3) 14 313: 16(float) Load 312 Store 309 313 Branch 311 314: Label 316: 57(ptr) AccessChain 68(i2) 315 317: 9(int) Load 316 318: 16(float) ConvertSToF 317 Store 309 318 Branch 311 311: Label 319: 16(float) Load 309 320: 16(float) FAdd 306 319 Store 106(f) 320 Branch 296 296: Label 323: 6(bool) Load 8(b) 324: 7(ptr) AccessChain 25(b2) 14 325: 6(bool) Load 324 326: 6(bool) LogicalOr 323 325 327: 7(ptr) AccessChain 25(b2) 315 328: 6(bool) Load 327 329: 6(bool) LogicalOr 326 328 330: 7(ptr) AccessChain 33(b3) 14 331: 6(bool) Load 330 332: 6(bool) LogicalOr 329 331 333: 7(ptr) AccessChain 33(b3) 315 334: 6(bool) Load 333 335: 6(bool) LogicalOr 332 334 337: 7(ptr) AccessChain 33(b3) 336 338: 6(bool) Load 337 339: 6(bool) LogicalOr 335 338 340: 7(ptr) AccessChain 45(b4) 14 341: 6(bool) Load 340 342: 6(bool) LogicalOr 339 341 343: 7(ptr) AccessChain 45(b4) 315 344: 6(bool) Load 343 345: 6(bool) LogicalOr 342 344 346: 7(ptr) AccessChain 45(b4) 336 347: 6(bool) Load 346 348: 6(bool) LogicalOr 345 347 350: 7(ptr) AccessChain 45(b4) 349 351: 6(bool) Load 350 352: 6(bool) LogicalOr 348 351 SelectionMerge 355 None BranchConditional 352 354 415 354: Label 356: 9(int) Load 58(i) 357: 57(ptr) AccessChain 68(i2) 14 358: 9(int) Load 357 359: 9(int) IAdd 356 358 360: 57(ptr) AccessChain 68(i2) 315 361: 9(int) Load 360 362: 9(int) IAdd 359 361 363: 57(ptr) AccessChain 81(i3) 14 364: 9(int) Load 363 365: 9(int) IAdd 362 364 366: 57(ptr) AccessChain 81(i3) 315 367: 9(int) Load 366 368: 9(int) IAdd 365 367 369: 57(ptr) AccessChain 81(i3) 336 370: 9(int) Load 369 371: 9(int) IAdd 368 370 372: 57(ptr) AccessChain 94(i4) 14 373: 9(int) Load 372 374: 9(int) IAdd 371 373 375: 57(ptr) AccessChain 94(i4) 315 376: 9(int) Load 375 377: 9(int) IAdd 374 376 378: 57(ptr) AccessChain 94(i4) 336 379: 9(int) Load 378 380: 9(int) IAdd 377 379 381: 57(ptr) AccessChain 94(i4) 349 382: 9(int) Load 381 383: 9(int) IAdd 380 382 384: 16(float) ConvertSToF 383 385: 16(float) Load 106(f) 386: 16(float) FAdd 384 385 387: 105(ptr) AccessChain 110(f2) 14 388: 16(float) Load 387 389: 16(float) FAdd 386 388 390: 105(ptr) AccessChain 110(f2) 315 391: 16(float) Load 390 392: 16(float) FAdd 389 391 393: 105(ptr) AccessChain 114(f3) 14 394: 16(float) Load 393 395: 16(float) FAdd 392 394 396: 105(ptr) AccessChain 114(f3) 315 397: 16(float) Load 396 398: 16(float) FAdd 395 397 399: 105(ptr) AccessChain 114(f3) 336 400: 16(float) Load 399 401: 16(float) FAdd 398 400 402: 105(ptr) AccessChain 118(f4) 14 403: 16(float) Load 402 404: 16(float) FAdd 401 403 405: 105(ptr) AccessChain 118(f4) 315 406: 16(float) Load 405 407: 16(float) FAdd 404 406 408: 105(ptr) AccessChain 118(f4) 336 409: 16(float) Load 408 410: 16(float) FAdd 407 409 411: 105(ptr) AccessChain 118(f4) 349 412: 16(float) Load 411 413: 16(float) FAdd 410 412 414: 95(fvec4) CompositeConstruct 413 413 413 413 Store 353 414 Branch 355 415: Label Store 353 151 Branch 355 355: Label 416: 95(fvec4) Load 353 Store 322(gl_FragColor) 416 Store 417(cv2) 102 419: 92(ivec4) Load 417(cv2) 420: 43(bvec4) INotEqual 419 160 Store 418(cv5) 420 421: 43(bvec4) Load 418(cv5) 422: 95(fvec4) Select 421 151 150 423: 16(float) CompositeExtract 422 0 424: 95(fvec4) Load 322(gl_FragColor) 425: 95(fvec4) CompositeConstruct 423 423 423 423 426: 95(fvec4) FAdd 424 425 Store 322(gl_FragColor) 426 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopmat.comp.out000066400000000000000000000461451506534232700224200ustar00rootroot00000000000000spv.coopmat.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 224 Capability Shader Capability Float16 Capability StorageUniformBufferBlock16 Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixNV Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix" Name 4 "main" Name 14 "f16(f161<16><3><8><8>;" Name 13 "m" Name 21 "f32(f1<32><3><8><8>;" Name 20 "m" Name 34 "m" Name 52 "m2" Name 56 "x" Name 67 "Block" MemberName 67(Block) 0 "y" MemberName 67(Block) 1 "x" Name 69 "block" Name 86 "Block16" MemberName 86(Block16) 0 "arr" MemberName 86(Block16) 1 "y" MemberName 86(Block16) 2 "x" MemberName 86(Block16) 3 "b" Name 89 "Block" MemberName 89(Block) 0 "y" MemberName 89(Block) 1 "x" Name 91 "block16" Name 109 "D" Name 110 "A" Name 112 "B" Name 114 "C" Name 118 "l" Name 122 "Y" Name 123 "Z" Name 126 "F" Name 131 "a" Name 134 "md1" Name 145 "mC2" Name 158 "p1" Name 159 "param" Name 162 "p2" Name 163 "param" Name 177 "ms" Name 182 "shmatrix" Name 197 "mC" Name 202 "arr" Name 207 "arr2" Name 208 "F" Name 213 "S" MemberName 213(S) 0 "a" MemberName 213(S) 1 "b" MemberName 213(S) 2 "c" Name 218 "SC" Name 223 "scm" Decorate 65 ArrayStride 4 Decorate 66 ArrayStride 4 Decorate 67(Block) Block MemberDecorate 67(Block) 0 Offset 0 MemberDecorate 67(Block) 1 Offset 4194304 Decorate 69(block) Binding 0 Decorate 69(block) DescriptorSet 0 Decorate 80 ArrayStride 2 Decorate 81 ArrayStride 512 Decorate 82 ArrayStride 2 Decorate 84 ArrayStride 2 Decorate 86(Block16) Block MemberDecorate 86(Block16) 0 Offset 0 MemberDecorate 86(Block16) 1 Offset 131072 MemberDecorate 86(Block16) 2 Offset 2228224 MemberDecorate 86(Block16) 3 Offset 2228232 Decorate 87 ArrayStride 4 Decorate 88 ArrayStride 4 Decorate 89(Block) Block MemberDecorate 89(Block) 0 Offset 0 MemberDecorate 89(Block) 1 Offset 4194304 Decorate 91(block16) Binding 0 Decorate 91(block16) DescriptorSet 0 Decorate 122(Y) SpecId 0 Decorate 196 BuiltIn WorkgroupSize Decorate 208(F) SpecId 1 Decorate 218(SC) SpecId 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 8 10: TypeCooperativeMatrixNV 6(float16_t) 8 9 9 11: TypePointer Function 10 12: TypeFunction 10 11(ptr) 16: TypeFloat 32 17: TypeCooperativeMatrixNV 16(float) 8 9 9 18: TypePointer Function 17 19: TypeFunction 17 18(ptr) 31: 7(int) Constant 16 32: TypeCooperativeMatrixNV 16(float) 8 31 9 33: TypePointer Function 32 35: 16(float) Constant 0 36: 32 ConstantComposite 35 45: 16(float) Constant 1073741824 50: TypeCooperativeMatrixNV 6(float16_t) 8 31 9 51: TypePointer Function 50 55: TypePointer Function 16(float) 57: TypeInt 32 1 58: 57(int) Constant 1 61: 57(int) Constant 0 64: 7(int) Constant 1048576 65: TypeArray 16(float) 64 66: TypeRuntimeArray 16(float) 67(Block): TypeStruct 65 66 68: TypePointer StorageBuffer 67(Block) 69(block): 68(ptr) Variable StorageBuffer 70: 7(int) Constant 5 71: TypePointer StorageBuffer 16(float) 73: 7(int) Constant 128 74: TypeBool 75: 74(bool) ConstantFalse 79: 7(int) Constant 256 80: TypeArray 6(float16_t) 79 81: TypeArray 80 79 82: TypeArray 6(float16_t) 64 83: 7(int) Constant 1 84: TypeArray 6(float16_t) 83 TypeForwardPointer 85 PhysicalStorageBufferEXT 86(Block16): TypeStruct 81 82 84 85 87: TypeArray 16(float) 64 88: TypeRuntimeArray 16(float) 89(Block): TypeStruct 87 88 85: TypePointer PhysicalStorageBufferEXT 89(Block) 90: TypePointer StorageBuffer 86(Block16) 91(block16): 90(ptr) Variable StorageBuffer 92: 57(int) Constant 2 93: TypePointer StorageBuffer 6(float16_t) 98: 57(int) Constant 3 99: TypePointer StorageBuffer 85(ptr) 102: TypePointer PhysicalStorageBufferEXT 16(float) 117: TypePointer Function 57(int) 119: 7(int) SpecConstantOp 5362 32 120: 57(int) SpecConstantOp 128 119 61 121: 57(int) Constant 8 122(Y): 57(int) SpecConstant 2 123(Z): 57(int) SpecConstantOp 132 121 122(Y) 124: TypeCooperativeMatrixNV 6(float16_t) 8 123(Z) 123(Z) 125: TypePointer Function 124 127:6(float16_t) Constant 0 128: 124 ConstantComposite 127 129: TypeArray 32 70 130: TypePointer Function 129 132: 16(float) Constant 1065353216 138: 57(int) Constant 1234 142: TypeCooperativeMatrixNV 6(float16_t) 8 123(Z) 9 143: TypeArray 142 8 144: TypePointer Private 143 145(mC2): 144(ptr) Variable Private 146: TypePointer Private 142 166: 10 ConstantComposite 127 167: 17 ConstantComposite 35 171:6(float16_t) Constant 16384 174: 16(float) Constant 1082130432 178: TypeVector 7(int) 4 179: 7(int) Constant 32 180: TypeArray 178(ivec4) 179 181: TypePointer Workgroup 180 182(shmatrix): 181(ptr) Variable Workgroup 183: 7(int) Constant 2 184: TypePointer Workgroup 178(ivec4) 192: 57(int) Constant 16 194: TypeVector 7(int) 3 195: 7(int) Constant 64 196: 194(ivec3) ConstantComposite 195 83 83 197(mC): 146(ptr) Variable Private 198: 7(int) SpecConstantOp 5362 142 199: 57(int) SpecConstantOp 128 198 61 200: TypeArray 57(int) 199 201: TypePointer Private 200 202(arr): 201(ptr) Variable Private 203: 7(int) SpecConstantOp 5362 142 204: 57(int) SpecConstantOp 128 203 61 205: TypeArray 57(int) 204 206: TypePointer Private 205 207(arr2): 206(ptr) Variable Private 208(F): 16(float) SpecConstant 1077936128 209: TypeCooperativeMatrixNV 16(float) 8 123(Z) 9 210: 209 ConstantComposite 35 211:6(float16_t) Constant 15360 212: 10 ConstantComposite 211 213(S): TypeStruct 57(int) 57(int) 57(int) 214: 57(int) Constant 12 215: 57(int) Constant 23 216: 57(int) Constant 34 217: 213(S) ConstantComposite 214 215 216 218(SC): 57(int) SpecConstant 1 219: TypeCooperativeMatrixNV 6(float16_t) 8 218(SC) 218(SC) 220: TypeArray 219 218(SC) 221: TypeArray 220 218(SC) 222: TypePointer Private 221 223(scm): 222(ptr) Variable Private 4(main): 2 Function None 3 5: Label 34(m): 33(ptr) Variable Function 52(m2): 51(ptr) Variable Function 56(x): 55(ptr) Variable Function 109(D): 33(ptr) Variable Function 110(A): 51(ptr) Variable Function 112(B): 11(ptr) Variable Function 114(C): 33(ptr) Variable Function 118(l): 117(ptr) Variable Function 126(F): 125(ptr) Variable Function 131(a): 130(ptr) Variable Function 134(md1): 55(ptr) Variable Function 158(p1): 11(ptr) Variable Function 159(param): 11(ptr) Variable Function 162(p2): 18(ptr) Variable Function 163(param): 18(ptr) Variable Function 177(ms): 51(ptr) Variable Function Store 34(m) 36 37: 32 Load 34(m) 38: 32 Load 34(m) 39: 32 FAdd 37 38 Store 34(m) 39 40: 32 Load 34(m) 41: 32 Load 34(m) 42: 32 FSub 40 41 Store 34(m) 42 43: 32 Load 34(m) 44: 32 FNegate 43 Store 34(m) 44 46: 32 Load 34(m) 47: 32 MatrixTimesScalar 46 45 Store 34(m) 47 48: 32 Load 34(m) 49: 32 MatrixTimesScalar 48 45 Store 34(m) 49 53: 32 Load 34(m) 54: 50 FConvert 53 Store 52(m2) 54 59: 55(ptr) AccessChain 34(m) 58 60: 16(float) Load 59 Store 56(x) 60 62: 16(float) Load 56(x) 63: 55(ptr) AccessChain 34(m) 61 Store 63 62 72: 71(ptr) AccessChain 69(block) 58 31 76: 32 CooperativeMatrixLoadNV 72 73 75 MakePointerVisibleKHR NonPrivatePointerKHR 70 Store 34(m) 76 77: 32 Load 34(m) 78: 71(ptr) AccessChain 69(block) 58 31 CooperativeMatrixStoreNV 78 77 73 75 MakePointerAvailableKHR NonPrivatePointerKHR 70 94: 93(ptr) AccessChain 91(block16) 92 31 95: 50 CooperativeMatrixLoadNV 94 73 75 MakePointerVisibleKHR NonPrivatePointerKHR 70 Store 52(m2) 95 96: 50 Load 52(m2) 97: 93(ptr) AccessChain 91(block16) 92 31 CooperativeMatrixStoreNV 97 96 73 75 MakePointerAvailableKHR NonPrivatePointerKHR 70 100: 99(ptr) AccessChain 91(block16) 98 101: 85(ptr) Load 100 MakePointerVisibleKHR NonPrivatePointerKHR 70 103: 102(ptr) AccessChain 101 58 31 104: 32 CooperativeMatrixLoadNV 103 73 75 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 70 Store 34(m) 104 105: 32 Load 34(m) 106: 99(ptr) AccessChain 91(block16) 98 107: 85(ptr) Load 106 MakePointerVisibleKHR NonPrivatePointerKHR 70 108: 102(ptr) AccessChain 107 58 31 CooperativeMatrixStoreNV 108 105 73 75 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 70 111: 50 Load 110(A) 113: 10 Load 112(B) 115: 32 Load 114(C) 116: 32 CooperativeMatrixMulAddNV 111 113 115 Store 109(D) 116 Store 118(l) 120 Store 126(F) 128 133: 55(ptr) AccessChain 131(a) 98 61 Store 133 132 Store 134(md1) 35 135: 32 Load 34(m) 136: 32 Load 34(m) 137: 32 FAdd 136 135 Store 34(m) 137 139: 16(float) CompositeExtract 137 1234 140: 16(float) Load 134(md1) 141: 16(float) FAdd 140 139 Store 134(md1) 141 147: 146(ptr) AccessChain 145(mC2) 92 148: 142 Load 147 149: 146(ptr) AccessChain 145(mC2) 58 Store 149 148 150: 71(ptr) AccessChain 69(block) 61 31 151: 32 CooperativeMatrixLoadNV 150 73 75 MakePointerVisibleKHR NonPrivatePointerKHR 70 Store 34(m) 151 152: 32 Load 34(m) 153: 71(ptr) AccessChain 69(block) 61 31 CooperativeMatrixStoreNV 153 152 73 75 MakePointerAvailableKHR NonPrivatePointerKHR 70 154: 93(ptr) AccessChain 91(block16) 58 31 155: 50 CooperativeMatrixLoadNV 154 73 75 MakePointerVisibleKHR NonPrivatePointerKHR 70 Store 52(m2) 155 156: 50 Load 52(m2) 157: 93(ptr) AccessChain 91(block16) 58 31 CooperativeMatrixStoreNV 157 156 73 75 MakePointerAvailableKHR NonPrivatePointerKHR 70 160: 10 Load 158(p1) Store 159(param) 160 161: 10 FunctionCall 14(f16(f161<16><3><8><8>;) 159(param) Store 158(p1) 161 164: 17 Load 162(p2) Store 163(param) 164 165: 17 FunctionCall 21(f32(f1<32><3><8><8>;) 163(param) Store 162(p2) 165 Store 158(p1) 166 Store 162(p2) 167 168: 10 Load 158(p1) 169: 10 Load 158(p1) 170: 10 FDiv 169 168 Store 158(p1) 170 172: 10 Load 158(p1) 173: 10 MatrixTimesScalar 172 171 Store 158(p1) 173 175: 17 Load 162(p2) 176: 17 MatrixTimesScalar 175 174 Store 162(p2) 176 185: 184(ptr) AccessChain 182(shmatrix) 83 186: 50 CooperativeMatrixLoadNV 185 183 75 MakePointerVisibleKHR NonPrivatePointerKHR 183 Store 177(ms) 186 187: 50 Load 177(ms) 188: 184(ptr) AccessChain 182(shmatrix) 83 CooperativeMatrixStoreNV 188 187 183 75 MakePointerAvailableKHR NonPrivatePointerKHR 183 189: 93(ptr) AccessChain 91(block16) 61 121 83 190: 50 CooperativeMatrixLoadNV 189 183 75 MakePointerVisibleKHR NonPrivatePointerKHR 70 Store 177(ms) 190 191: 50 Load 177(ms) 193: 93(ptr) AccessChain 91(block16) 61 192 83 CooperativeMatrixStoreNV 193 191 183 75 MakePointerAvailableKHR NonPrivatePointerKHR 70 Return FunctionEnd 14(f16(f161<16><3><8><8>;): 10 Function None 12 13(m): 11(ptr) FunctionParameter 15: Label 23: 10 Load 13(m) 24: 10 FNegate 23 ReturnValue 24 FunctionEnd 21(f32(f1<32><3><8><8>;): 17 Function None 19 20(m): 18(ptr) FunctionParameter 22: Label 27: 17 Load 20(m) 28: 17 FNegate 27 ReturnValue 28 FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopmat2_constructor.comp.out000066400000000000000000000272751506534232700251520ustar00rootroot00000000000000spv.coopmat2_constructor.comp // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 156 Capability Shader Capability Float16 Capability Int8 Capability StorageUniformBufferBlock16 Capability VulkanMemoryModelKHR Capability CooperativeMatrixReductionsNV Capability CooperativeMatrixConversionsNV Capability CooperativeMatrixPerElementOperationsNV Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_NV_cooperative_matrix2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" 155 ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix2" Name 4 "main" Name 10 "addr(u1;u1;" Name 8 "x" Name 9 "y" Name 13 "foo(" Name 20 "relu(u1;u1;f161;" Name 17 "row" Name 18 "col" Name 19 "x" Name 27 "add(u1;u1;f161;f161;" Name 23 "row" Name 24 "col" Name 25 "x" Name 26 "y" Name 32 "combineSum(f161;f161;" Name 30 "a" Name 31 "b" Name 36 "combineMax(f161;f161;" Name 34 "a" Name 35 "b" Name 64 "A" Name 67 "Acc" Name 73 "B" Name 78 "tr" Name 94 "Acc2x2" Name 105 "Accu32" Name 119 "Accs32" Name 127 "Accf16" Name 137 "Accf32" Name 144 "Dim" Name 147 "mijm1" Name 153 "BufType" MemberName 153(BufType) 0 "x" Name 155 "Buf" Decorate 144(Dim) SpecId 0 Decorate 152 ArrayStride 2 Decorate 153(BufType) Block MemberDecorate 153(BufType) 0 Offset 0 Decorate 155(Buf) Binding 0 Decorate 155(Buf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeFunction 6(int) 6(int) 6(int) 12: TypeFunction 6(int) 15: TypeFloat 16 16: TypeFunction 15(float16_t) 6(int) 6(int) 15(float16_t) 22: TypeFunction 15(float16_t) 6(int) 6(int) 15(float16_t) 15(float16_t) 29: TypeFunction 15(float16_t) 15(float16_t) 15(float16_t) 38: 6(int) Constant 64 43: 6(int) Constant 124 46:15(float16_t) Constant 0 59: 6(int) Constant 2 60: 6(int) Constant 32 61: 6(int) Constant 0 62: TypeCooperativeMatrixKHR 15(float16_t) 59 38 60 61 63: TypePointer Function 62 65: TypeCooperativeMatrixKHR 15(float16_t) 59 38 60 59 66: TypePointer Function 65 70: 6(int) Constant 1 71: TypeCooperativeMatrixKHR 15(float16_t) 59 38 60 70 72: TypePointer Function 71 76: TypeCooperativeMatrixKHR 15(float16_t) 59 60 38 70 77: TypePointer Function 76 82: TypeInt 32 1 83: 82(int) Constant 1 86: 82(int) Constant 2 89: 82(int) Constant 3 91: 6(int) Constant 16 92: TypeCooperativeMatrixKHR 15(float16_t) 59 60 91 59 93: TypePointer Function 92 96: 82(int) Constant 4 101:15(float16_t) Constant 15360 103: TypeCooperativeMatrixKHR 6(int) 59 38 60 59 104: TypePointer Function 103 107: TypeInt 8 0 108: TypeCooperativeMatrixKHR 107(int8_t) 59 38 60 61 111: TypeInt 8 1 112: TypeCooperativeMatrixKHR 111(int8_t) 59 38 60 61 117: TypeCooperativeMatrixKHR 82(int) 59 38 60 59 118: TypePointer Function 117 134: TypeFloat 32 135: TypeCooperativeMatrixKHR 134(float) 59 38 60 59 136: TypePointer Function 135 144(Dim): 6(int) SpecConstant 32 145: TypeCooperativeMatrixKHR 134(float) 59 144(Dim) 144(Dim) 59 146: TypePointer Function 145 148: 134(float) Constant 4286578688 149: 145 ConstantComposite 148 150: TypeVector 6(int) 3 151: 150(ivec3) ConstantComposite 38 70 70 152: TypeRuntimeArray 15(float16_t) 153(BufType): TypeStruct 152 154: TypePointer StorageBuffer 153(BufType) 155(Buf): 154(ptr) Variable StorageBuffer 4(main): 2 Function None 3 5: Label 64(A): 63(ptr) Variable Function 67(Acc): 66(ptr) Variable Function 73(B): 72(ptr) Variable Function 78(tr): 77(ptr) Variable Function 94(Acc2x2): 93(ptr) Variable Function 105(Accu32): 104(ptr) Variable Function 119(Accs32): 118(ptr) Variable Function 127(Accf16): 66(ptr) Variable Function 137(Accf32): 136(ptr) Variable Function 147(mijm1): 146(ptr) Variable Function 68: 65 Load 67(Acc) 69: 62 CooperativeMatrixConvertNV 68 Store 64(A) 69 74: 65 Load 67(Acc) 75: 71 CooperativeMatrixConvertNV 74 Store 73(B) 75 79: 65 Load 67(Acc) 80: 76 CooperativeMatrixTransposeNV 79 Store 78(tr) 80 81: 65 Load 67(Acc) 84: 65 CooperativeMatrixReduceNV 81 1 32(combineSum(f161;f161;) Store 67(Acc) 84 85: 65 Load 67(Acc) 87: 65 CooperativeMatrixReduceNV 85 2 32(combineSum(f161;f161;) Store 67(Acc) 87 88: 65 Load 67(Acc) 90: 65 CooperativeMatrixReduceNV 88 3 32(combineSum(f161;f161;) Store 67(Acc) 90 95: 65 Load 67(Acc) 97: 92 CooperativeMatrixReduceNV 95 4 36(combineMax(f161;f161;) Store 94(Acc2x2) 97 98: 65 Load 67(Acc) 99: 65 CooperativeMatrixPerElementOpNV 98 20(relu(u1;u1;f161;) Store 67(Acc) 99 100: 65 Load 67(Acc) 102: 65 CooperativeMatrixPerElementOpNV 100 27(add(u1;u1;f161;f161;) 101 Store 67(Acc) 102 106: 103 Load 105(Accu32) 109: 108 UConvert 106 110: 103 Load 105(Accu32) 113: 108 UConvert 110 114: 112 Bitcast 113 115: 103 Load 105(Accu32) 116: 62 ConvertUToF 115 120: 117 Load 119(Accs32) 121: 112 SConvert 120 122: 108 Bitcast 121 123: 117 Load 119(Accs32) 124: 112 SConvert 123 125: 117 Load 119(Accs32) 126: 62 ConvertSToF 125 128: 65 Load 127(Accf16) 129: 108 ConvertFToU 128 130: 65 Load 127(Accf16) 131: 112 ConvertFToS 130 132: 65 Load 127(Accf16) 133: 62 CooperativeMatrixConvertNV 132 138: 135 Load 137(Accf32) 139: 108 ConvertFToU 138 140: 135 Load 137(Accf32) 141: 112 ConvertFToS 140 142: 135 Load 137(Accf32) 143: 62 FConvert 142 Store 147(mijm1) 149 Return FunctionEnd 10(addr(u1;u1;): 6(int) Function None 7 8(x): 6(int) FunctionParameter 9(y): 6(int) FunctionParameter 11: Label 39: 6(int) IMul 9(y) 38 40: 6(int) IAdd 39 8(x) ReturnValue 40 FunctionEnd 13(foo(): 6(int) Function None 12 14: Label ReturnValue 43 FunctionEnd 20(relu(u1;u1;f161;):15(float16_t) Function None 16 17(row): 6(int) FunctionParameter 18(col): 6(int) FunctionParameter 19(x):15(float16_t) FunctionParameter 21: Label 47:15(float16_t) ExtInst 1(GLSL.std.450) 40(FMax) 19(x) 46 ReturnValue 47 FunctionEnd 27(add(u1;u1;f161;f161;):15(float16_t) Function None 22 23(row): 6(int) FunctionParameter 24(col): 6(int) FunctionParameter 25(x):15(float16_t) FunctionParameter 26(y):15(float16_t) FunctionParameter 28: Label 50:15(float16_t) FAdd 25(x) 26(y) ReturnValue 50 FunctionEnd 32(combineSum(f161;f161;):15(float16_t) Function None 29 30(a):15(float16_t) FunctionParameter 31(b):15(float16_t) FunctionParameter 33: Label 53:15(float16_t) FAdd 30(a) 31(b) ReturnValue 53 FunctionEnd 36(combineMax(f161;f161;):15(float16_t) Function None 29 34(a):15(float16_t) FunctionParameter 35(b):15(float16_t) FunctionParameter 37: Label 56:15(float16_t) ExtInst 1(GLSL.std.450) 40(FMax) 34(a) 35(b) ReturnValue 56 FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopmat2_error.comp.out000066400000000000000000000045471506534232700237130ustar00rootroot00000000000000spv.coopmat2_error.comp ERROR: 0:53: 'decode2(1;u1[2];u1[2];' : function parameters must all be qualified 'const in' ERROR: 0:54: 'decode3(1;u1[2];u1[2];' : function parameters must all be qualified 'const in' ERROR: 0:56: 'decode5(1;u1[2];u1[2];' : function parameters must all be qualified 'const in' ERROR: 0:57: 'decode6(1;u1[2];u1[2];' : function parameters must all be qualified 'const in' ERROR: 0:59: 'decode8(1;u1[2];u1[2];' : function parameters must all be qualified 'const in' ERROR: 0:60: 'decode9(1;u1[2];u1[2];' : function parameters must all be qualified 'const in' ERROR: 0:61: 'decode10(u1;u161[2];u161[2];' : first parameter must be buffer reference type ERROR: 0:61: 'decode10(u1;u161[2];u161[2];' : coordinate parameters must be uint32_t ERROR: 0:62: 'decode11(1;u1;u1;' : coordinate parameters must be uint32_t ERROR: 0:67: 'combineSum2(f161;f161;' : function parameters must all be qualified 'const in' ERROR: 0:67: 'combineSum2(f161;f161;' : function parameters must all be qualified 'const in' ERROR: 0:68: 'combineSum(f161;f161;' : parameter types must match cooperative matrix component type ERROR: 0:68: 'combineSum(f161;f161;' : parameter types must match cooperative matrix component type ERROR: 0:68: 'combineSum(f161;f161;' : return type must match cooperative matrix component type ERROR: 0:73: 'add(u1;u1;f161;f161;' : parameter types must match or be cooperative matrix component type ERROR: 0:74: 'add(u1;u1;f161;f161;' : parameter types must match or be cooperative matrix component type ERROR: 0:75: 'add(u1;u1;f161;f161;' : number of parameters must match call to coopMatPerElementNV ERROR: 0:76: 'add(u1;u1;f161;f161;' : number of parameters must match call to coopMatPerElementNV ERROR: 0:77: '' : cooperative matrix input and result types must match ERROR: 0:77: 'perelemf32(u1;u1;f161;' : return type must match cooperative matrix component type ERROR: 0:78: '' : cooperative matrix input and result types must match ERROR: 0:81: 'coopMatLoadTensorNV' : Only l-values corresponding to storage block or shared variables can be used with cooperative matrix load/store functions. ERROR: 0:82: 'coopMatStoreTensorNV' : Only l-values corresponding to storage block or shared variables can be used with cooperative matrix load/store functions. ERROR: 23 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.coopmat2_tensor.comp.out000066400000000000000000000327211506534232700240670ustar00rootroot00000000000000spv.coopmat2_tensor.comp // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 162 Capability Shader Capability Float16 Capability StorageUniformBufferBlock16 Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixTensorAddressingNV Capability CooperativeMatrixBlockLoadsNV Capability TensorAddressingNV Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_NV_cooperative_matrix2" Extension "SPV_NV_tensor_addressing" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint GLCompute 4 "main" 90 122 ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix2" Name 4 "main" Name 8 "fp16Buf" MemberName 8(fp16Buf) 0 "f" Name 16 "decode(1;u1[2];u1[2];" Name 13 "b" Name 14 "blockCoords" Name 15 "coordInBlock" Name 28 "t" Name 35 "t2" Name 56 "v" Name 75 "v2" Name 79 "v3" Name 84 "A" Name 88 "BufType" MemberName 88(BufType) 0 "arr" MemberName 88(BufType) 1 "x" Name 90 "Buf" Name 118 "S" MemberName 118(S) 0 "x" Name 120 "SBuf" MemberName 120(SBuf) 0 "s" Name 122 "sbuf" Name 129 "Clamp" Name 132 "tc" Name 136 "Arr" Name 151 "Clamp_signed" Name 154 "tc_s" Name 158 "v4" Decorate 8(fp16Buf) Block MemberDecorate 8(fp16Buf) 0 Offset 0 Decorate 13(b) Aliased Decorate 85 ArrayStride 2 Decorate 86 ArrayStride 512 Decorate 87 ArrayStride 2 Decorate 88(BufType) Block MemberDecorate 88(BufType) 0 Offset 0 MemberDecorate 88(BufType) 1 Offset 131072 Decorate 90(Buf) Binding 1 Decorate 90(Buf) DescriptorSet 0 MemberDecorate 118(S) 0 Offset 0 Decorate 119 ArrayStride 4 Decorate 120(SBuf) Block MemberDecorate 120(SBuf) 0 Offset 0 Decorate 122(sbuf) Binding 0 Decorate 122(sbuf) DescriptorSet 0 Decorate 129(Clamp) SpecId 0 Decorate 151(Clamp_signed) SpecId 1 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT 7: TypeFloat 16 8(fp16Buf): TypeStruct 7(float16_t) 6: TypePointer PhysicalStorageBufferEXT 8(fp16Buf) 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 9(int) 10 12: TypeFunction 7(float16_t) 6(ptr) 11 11 18: TypeInt 32 1 19: 18(int) Constant 0 20: TypePointer PhysicalStorageBufferEXT 7(float16_t) 25: 9(int) Constant 0 26: TypeTensorLayoutNV 10 25 27: TypePointer Function 26 29: 18(int) Constant 2 31: 9(int) Constant 3 32: 9(int) Constant 1 33: TypeTensorLayoutNV 31 32 34: TypePointer Function 33 36: 18(int) Constant 3 37: 18(int) Constant 1 40: 9(int) Constant 4 41: 9(int) Constant 8 44: 9(int) Constant 256 45: 9(int) Constant 512 48: 9(int) Constant 128 49: 9(int) Constant 32 51: 9(int) Constant 5 52: TypeBool 53: 52(bool) ConstantFalse 54: TypeTensorViewNV 51 53 25 32 10 31 40 55: TypePointer Function 54 57: 18(int) Constant 5 60: 9(int) Constant 10 61: 9(int) Constant 11 62: 9(int) Constant 12 63: 9(int) Constant 13 64: 9(int) Constant 14 67: 9(int) Constant 15 70: 9(int) Constant 16 72: 52(bool) ConstantTrue 73: TypeTensorViewNV 51 72 25 32 10 31 40 74: TypePointer Function 73 77: TypeTensorViewNV 10 72 32 25 78: TypePointer Function 77 81: 9(int) Constant 64 82: TypeCooperativeMatrixKHR 7(float16_t) 10 81 49 25 83: TypePointer Function 82 85: TypeArray 7(float16_t) 44 86: TypeArray 85 44 87: TypeRuntimeArray 7(float16_t) 88(BufType): TypeStruct 86 87 89: TypePointer StorageBuffer 88(BufType) 90(Buf): 89(ptr) Variable StorageBuffer 91: TypePointer StorageBuffer 7(float16_t) 117: TypeVector 7(float16_t) 2 118(S): TypeStruct 117(f16vec2) 119: TypeRuntimeArray 118(S) 120(SBuf): TypeStruct 119 121: TypePointer StorageBuffer 120(SBuf) 122(sbuf): 121(ptr) Variable StorageBuffer 123: TypePointer StorageBuffer 118(S) 129(Clamp): 9(int) SpecConstant 1 130: TypeTensorLayoutNV 10 129(Clamp) 131: TypePointer Function 130 134: TypeArray 82 10 135: TypePointer Function 134 142: 18(int) Constant 8 148: 18(int) Constant 16 151(Clamp_signed): 18(int) SpecConstant 1 152: TypeTensorLayoutNV 10 151(Clamp_signed) 153: TypePointer Function 152 156: TypeTensorViewNV 129(Clamp) 72 25 157: TypePointer Function 156 160: TypeVector 9(int) 3 161: 160(ivec3) ConstantComposite 81 32 32 4(main): 2 Function None 3 5: Label 28(t): 27(ptr) Variable Function 35(t2): 34(ptr) Variable Function 56(v): 55(ptr) Variable Function 75(v2): 74(ptr) Variable Function 79(v3): 78(ptr) Variable Function 84(A): 83(ptr) Variable Function 132(tc): 131(ptr) Variable Function 136(Arr): 135(ptr) Variable Function 154(tc_s): 153(ptr) Variable Function 158(v4): 157(ptr) Variable Function 30: 26 CreateTensorLayoutNV Store 28(t) 30 38: 33 CreateTensorLayoutNV Store 35(t2) 38 39: 26 Load 28(t) 42: 26 TensorLayoutSetBlockSizeNV 39 40 41 Store 28(t) 42 43: 26 Load 28(t) 46: 26 TensorLayoutSetDimensionNV 43 44 45 Store 28(t) 46 47: 26 Load 28(t) 50: 26 TensorLayoutSliceNV 47 48 49 44 49 Store 28(t) 50 58: 54 CreateTensorViewNV Store 56(v) 58 59: 54 Load 56(v) 65: 54 TensorViewSetDimensionNV 59 60 61 62 63 64 Store 56(v) 65 66: 54 Load 56(v) 68: 54 TensorViewSetStrideNV 66 60 61 62 63 67 Store 56(v) 68 69: 54 Load 56(v) 71: 54 TensorViewSetClipNV 69 25 70 25 70 Store 56(v) 71 76: 73 CreateTensorViewNV Store 75(v2) 76 80: 77 CreateTensorViewNV Store 79(v3) 80 92: 91(ptr) AccessChain 90(Buf) 37 25 93: 26 Load 28(t) 94: 82 Load 84(A) 95: 82 CooperativeMatrixLoadTensorNV 92 94 93 None None Store 84(A) 95 96: 82 Load 84(A) 97: 91(ptr) AccessChain 90(Buf) 37 25 98: 26 Load 28(t) CooperativeMatrixStoreTensorNV 97 96 98 None None 99: 91(ptr) AccessChain 90(Buf) 37 25 100: 26 Load 28(t) 101: 54 Load 56(v) 102: 82 Load 84(A) 103: 82 CooperativeMatrixLoadTensorNV 99 102 100 None TensorView 101 Store 84(A) 103 104: 82 Load 84(A) 105: 91(ptr) AccessChain 90(Buf) 37 25 106: 26 Load 28(t) 107: 54 Load 56(v) CooperativeMatrixStoreTensorNV 105 104 106 None TensorView 107 108: 91(ptr) AccessChain 90(Buf) 37 25 109: 26 Load 28(t) 110: 82 Load 84(A) 111: 82 CooperativeMatrixLoadTensorNV 108 110 109 None DecodeFunc 16(decode(1;u1[2];u1[2];) Store 84(A) 111 112: 91(ptr) AccessChain 90(Buf) 37 25 113: 26 Load 28(t) 114: 54 Load 56(v) 115: 82 Load 84(A) 116: 82 CooperativeMatrixLoadTensorNV 112 115 113 None TensorView DecodeFunc 114 16(decode(1;u1[2];u1[2];) Store 84(A) 116 124: 123(ptr) AccessChain 122(sbuf) 19 32 125: 26 Load 28(t) 126: 54 Load 56(v) 127: 82 Load 84(A) 128: 82 CooperativeMatrixLoadTensorNV 124 127 125 None TensorView DecodeFunc 126 16(decode(1;u1[2];u1[2];) Store 84(A) 128 133: 130 CreateTensorLayoutNV Store 132(tc) 133 137: 83(ptr) AccessChain 136(Arr) 37 138: 91(ptr) AccessChain 90(Buf) 37 25 139: 26 Load 28(t) 140: 82 Load 137 141: 82 CooperativeMatrixLoadTensorNV 138 140 139 None None Store 137 141 143: 91(ptr) AccessChain 90(Buf) 19 142 25 144: 26 Load 28(t) 145: 82 Load 84(A) 146: 82 CooperativeMatrixLoadTensorNV 143 145 144 None None Store 84(A) 146 147: 82 Load 84(A) 149: 91(ptr) AccessChain 90(Buf) 19 148 25 150: 26 Load 28(t) CooperativeMatrixStoreTensorNV 149 147 150 None None 155: 152 CreateTensorLayoutNV Store 154(tc_s) 155 159: 156 CreateTensorViewNV Store 158(v4) 159 Return FunctionEnd 16(decode(1;u1[2];u1[2];):7(float16_t) Function None 12 13(b): 6(ptr) FunctionParameter 14(blockCoords): 11 FunctionParameter 15(coordInBlock): 11 FunctionParameter 17: Label 21: 20(ptr) AccessChain 13(b) 19 22:7(float16_t) Load 21 Aligned 2 ReturnValue 22 FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopmatKHR.comp.out000066400000000000000000000516301506534232700227600ustar00rootroot00000000000000spv.coopmatKHR.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 245 Capability Shader Capability Float16 Capability Int16 Capability Int8 Capability StorageUniformBufferBlock16 Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 15 "f16(f161<3><8><8><2>;" Name 14 "m" Name 22 "f32(f1<3><8><8><2>;" Name 21 "m" Name 35 "m" Name 53 "m2" Name 57 "x" Name 68 "Block" MemberName 68(Block) 0 "y" MemberName 68(Block) 1 "x" Name 70 "block" Name 85 "Block16" MemberName 85(Block16) 0 "arr" MemberName 85(Block16) 1 "y" MemberName 85(Block16) 2 "x" MemberName 85(Block16) 3 "b" Name 88 "Block" MemberName 88(Block) 0 "y" MemberName 88(Block) 1 "x" Name 90 "block16" Name 108 "D" Name 112 "A" Name 116 "B" Name 118 "C" Name 122 "l" Name 126 "Y" Name 127 "Z" Name 130 "F" Name 135 "a" Name 138 "md1" Name 149 "mC2" Name 162 "p1" Name 163 "param" Name 166 "p2" Name 167 "param" Name 181 "ms" Name 186 "shmatrix" Name 200 "ms8A" Name 204 "ms8B" Name 208 "ms8C" Name 222 "m16" Name 228 "mC" Name 229 "F" Name 234 "S" MemberName 234(S) 0 "a" MemberName 234(S) 1 "b" MemberName 234(S) 2 "c" Name 239 "SC" Name 244 "scm" Decorate 66 ArrayStride 4 Decorate 67 ArrayStride 4 Decorate 68(Block) Block MemberDecorate 68(Block) 0 Offset 0 MemberDecorate 68(Block) 1 Offset 4194304 Decorate 70(block) Binding 0 Decorate 70(block) DescriptorSet 0 Decorate 79 ArrayStride 2 Decorate 80 ArrayStride 512 Decorate 81 ArrayStride 2 Decorate 83 ArrayStride 2 Decorate 85(Block16) Block MemberDecorate 85(Block16) 0 Offset 0 MemberDecorate 85(Block16) 1 Offset 131072 MemberDecorate 85(Block16) 2 Offset 2228224 MemberDecorate 85(Block16) 3 Offset 2228232 Decorate 86 ArrayStride 4 Decorate 87 ArrayStride 4 Decorate 88(Block) Block MemberDecorate 88(Block) 0 Offset 0 MemberDecorate 88(Block) 1 Offset 4194304 Decorate 90(block16) Binding 0 Decorate 90(block16) DescriptorSet 0 Decorate 126(Y) SpecId 0 Decorate 227 BuiltIn WorkgroupSize Decorate 229(F) SpecId 1 Decorate 239(SC) SpecId 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 8 10: 7(int) Constant 2 11: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 10 12: TypePointer Function 11 13: TypeFunction 11 12(ptr) 17: TypeFloat 32 18: TypeCooperativeMatrixKHR 17(float) 8 9 9 10 19: TypePointer Function 18 20: TypeFunction 18 19(ptr) 32: 7(int) Constant 16 33: TypeCooperativeMatrixKHR 17(float) 8 32 9 10 34: TypePointer Function 33 36: 17(float) Constant 0 37: 33 ConstantComposite 36 46: 17(float) Constant 1073741824 51: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 10 52: TypePointer Function 51 56: TypePointer Function 17(float) 58: TypeInt 32 1 59: 58(int) Constant 1 62: 58(int) Constant 0 65: 7(int) Constant 1048576 66: TypeArray 17(float) 65 67: TypeRuntimeArray 17(float) 68(Block): TypeStruct 66 67 69: TypePointer StorageBuffer 68(Block) 70(block): 69(ptr) Variable StorageBuffer 71: 7(int) Constant 5 72: TypePointer StorageBuffer 17(float) 74: 7(int) Constant 128 78: 7(int) Constant 256 79: TypeArray 6(float16_t) 78 80: TypeArray 79 78 81: TypeArray 6(float16_t) 65 82: 7(int) Constant 1 83: TypeArray 6(float16_t) 82 TypeForwardPointer 84 PhysicalStorageBufferEXT 85(Block16): TypeStruct 80 81 83 84 86: TypeArray 17(float) 65 87: TypeRuntimeArray 17(float) 88(Block): TypeStruct 86 87 84: TypePointer PhysicalStorageBufferEXT 88(Block) 89: TypePointer StorageBuffer 85(Block16) 90(block16): 89(ptr) Variable StorageBuffer 91: 58(int) Constant 2 92: TypePointer StorageBuffer 6(float16_t) 97: 58(int) Constant 3 98: TypePointer StorageBuffer 84(ptr) 101: TypePointer PhysicalStorageBufferEXT 17(float) 109: 7(int) Constant 0 110: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 109 111: TypePointer Function 110 114: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 82 115: TypePointer Function 114 121: TypePointer Function 58(int) 125: 58(int) Constant 8 126(Y): 58(int) SpecConstant 2 127(Z): 58(int) SpecConstantOp 132 125 126(Y) 128: TypeCooperativeMatrixKHR 6(float16_t) 8 127(Z) 127(Z) 10 129: TypePointer Function 128 131:6(float16_t) Constant 0 132: 128 ConstantComposite 131 133: TypeArray 33 71 134: TypePointer Function 133 136: 17(float) Constant 1065353216 142: 58(int) Constant 1234 146: TypeCooperativeMatrixKHR 6(float16_t) 8 127(Z) 9 10 147: TypeArray 146 8 148: TypePointer Private 147 149(mC2): 148(ptr) Variable Private 150: TypePointer Private 146 170: 11 ConstantComposite 131 171: 18 ConstantComposite 36 175:6(float16_t) Constant 16384 178: 17(float) Constant 1082130432 182: TypeVector 7(int) 4 183: 7(int) Constant 32 184: TypeArray 182(ivec4) 183 185: TypePointer Workgroup 184 186(shmatrix): 185(ptr) Variable Workgroup 187: TypePointer Workgroup 182(ivec4) 195: 58(int) Constant 16 197: TypeInt 8 1 198: TypeCooperativeMatrixKHR 197(int8_t) 8 9 9 109 199: TypePointer Function 198 202: TypeCooperativeMatrixKHR 197(int8_t) 8 9 9 82 203: TypePointer Function 202 206: TypeCooperativeMatrixKHR 197(int8_t) 8 9 9 10 207: TypePointer Function 206 219: TypeInt 16 1 220: TypeCooperativeMatrixKHR 219(int16_t) 8 9 9 109 221: TypePointer Function 220 225: TypeVector 7(int) 3 226: 7(int) Constant 64 227: 225(ivec3) ConstantComposite 226 82 82 228(mC): 150(ptr) Variable Private 229(F): 17(float) SpecConstant 1077936128 230: TypeCooperativeMatrixKHR 17(float) 8 127(Z) 9 10 231: 230 ConstantComposite 36 232:6(float16_t) Constant 15360 233: 11 ConstantComposite 232 234(S): TypeStruct 58(int) 58(int) 58(int) 235: 58(int) Constant 12 236: 58(int) Constant 23 237: 58(int) Constant 34 238: 234(S) ConstantComposite 235 236 237 239(SC): 58(int) SpecConstant 1 240: TypeCooperativeMatrixKHR 6(float16_t) 8 239(SC) 239(SC) 10 241: TypeArray 240 239(SC) 242: TypeArray 241 239(SC) 243: TypePointer Private 242 244(scm): 243(ptr) Variable Private 4(main): 2 Function None 3 5: Label 35(m): 34(ptr) Variable Function 53(m2): 52(ptr) Variable Function 57(x): 56(ptr) Variable Function 108(D): 34(ptr) Variable Function 112(A): 111(ptr) Variable Function 116(B): 115(ptr) Variable Function 118(C): 34(ptr) Variable Function 122(l): 121(ptr) Variable Function 130(F): 129(ptr) Variable Function 135(a): 134(ptr) Variable Function 138(md1): 56(ptr) Variable Function 162(p1): 12(ptr) Variable Function 163(param): 12(ptr) Variable Function 166(p2): 19(ptr) Variable Function 167(param): 19(ptr) Variable Function 181(ms): 52(ptr) Variable Function 200(ms8A): 199(ptr) Variable Function 204(ms8B): 203(ptr) Variable Function 208(ms8C): 207(ptr) Variable Function 222(m16): 221(ptr) Variable Function Store 35(m) 37 38: 33 Load 35(m) 39: 33 Load 35(m) 40: 33 FAdd 38 39 Store 35(m) 40 41: 33 Load 35(m) 42: 33 Load 35(m) 43: 33 FSub 41 42 Store 35(m) 43 44: 33 Load 35(m) 45: 33 FNegate 44 Store 35(m) 45 47: 33 Load 35(m) 48: 33 MatrixTimesScalar 47 46 Store 35(m) 48 49: 33 Load 35(m) 50: 33 MatrixTimesScalar 49 46 Store 35(m) 50 54: 33 Load 35(m) 55: 51 FConvert 54 Store 53(m2) 55 60: 56(ptr) AccessChain 35(m) 59 61: 17(float) Load 60 Store 57(x) 61 63: 17(float) Load 57(x) 64: 56(ptr) AccessChain 35(m) 62 Store 64 63 73: 72(ptr) AccessChain 70(block) 59 32 75: 33 CooperativeMatrixLoadKHR 73 62 74 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 35(m) 75 76: 33 Load 35(m) 77: 72(ptr) AccessChain 70(block) 59 32 CooperativeMatrixStoreKHR 77 76 62 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 93: 92(ptr) AccessChain 90(block16) 91 32 94: 51 CooperativeMatrixLoadKHR 93 62 74 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 53(m2) 94 95: 51 Load 53(m2) 96: 92(ptr) AccessChain 90(block16) 91 32 CooperativeMatrixStoreKHR 96 95 62 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 99: 98(ptr) AccessChain 90(block16) 97 100: 84(ptr) Load 99 MakePointerVisibleKHR NonPrivatePointerKHR 71 102: 101(ptr) AccessChain 100 59 32 103: 33 CooperativeMatrixLoadKHR 102 62 74 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 71 Store 35(m) 103 104: 33 Load 35(m) 105: 98(ptr) AccessChain 90(block16) 97 106: 84(ptr) Load 105 MakePointerVisibleKHR NonPrivatePointerKHR 71 107: 101(ptr) AccessChain 106 59 32 CooperativeMatrixStoreKHR 107 104 62 74 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 71 113: 110 Load 112(A) 117: 114 Load 116(B) 119: 33 Load 118(C) 120: 33 CooperativeMatrixMulAddKHR 113 117 119 Store 108(D) 120 123: 7(int) CooperativeMatrixLengthKHR 33 124: 58(int) Bitcast 123 Store 122(l) 124 Store 130(F) 132 137: 56(ptr) AccessChain 135(a) 97 62 Store 137 136 Store 138(md1) 36 139: 33 Load 35(m) 140: 33 Load 35(m) 141: 33 FAdd 140 139 Store 35(m) 141 143: 17(float) CompositeExtract 141 1234 144: 17(float) Load 138(md1) 145: 17(float) FAdd 144 143 Store 138(md1) 145 151: 150(ptr) AccessChain 149(mC2) 91 152: 146 Load 151 153: 150(ptr) AccessChain 149(mC2) 59 Store 153 152 154: 72(ptr) AccessChain 70(block) 62 32 155: 33 CooperativeMatrixLoadKHR 154 62 74 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 35(m) 155 156: 33 Load 35(m) 157: 72(ptr) AccessChain 70(block) 62 32 CooperativeMatrixStoreKHR 157 156 62 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 158: 92(ptr) AccessChain 90(block16) 59 32 159: 51 CooperativeMatrixLoadKHR 158 62 74 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 53(m2) 159 160: 51 Load 53(m2) 161: 92(ptr) AccessChain 90(block16) 59 32 CooperativeMatrixStoreKHR 161 160 62 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 164: 11 Load 162(p1) Store 163(param) 164 165: 11 FunctionCall 15(f16(f161<3><8><8><2>;) 163(param) Store 162(p1) 165 168: 18 Load 166(p2) Store 167(param) 168 169: 18 FunctionCall 22(f32(f1<3><8><8><2>;) 167(param) Store 166(p2) 169 Store 162(p1) 170 Store 166(p2) 171 172: 11 Load 162(p1) 173: 11 Load 162(p1) 174: 11 FDiv 173 172 Store 162(p1) 174 176: 11 Load 162(p1) 177: 11 MatrixTimesScalar 176 175 Store 162(p1) 177 179: 18 Load 166(p2) 180: 18 MatrixTimesScalar 179 178 Store 166(p2) 180 188: 187(ptr) AccessChain 186(shmatrix) 82 189: 51 CooperativeMatrixLoadKHR 188 62 10 MakePointerVisibleKHR NonPrivatePointerKHR 10 Store 181(ms) 189 190: 51 Load 181(ms) 191: 187(ptr) AccessChain 186(shmatrix) 82 CooperativeMatrixStoreKHR 191 190 62 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 192: 92(ptr) AccessChain 90(block16) 62 125 82 193: 51 CooperativeMatrixLoadKHR 192 62 10 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 181(ms) 193 194: 51 Load 181(ms) 196: 92(ptr) AccessChain 90(block16) 62 195 82 CooperativeMatrixStoreKHR 196 194 62 10 MakePointerAvailableKHR NonPrivatePointerKHR 71 201: 198 Load 200(ms8A) 205: 202 Load 204(ms8B) 209: 206 Load 208(ms8C) 210: 206 CooperativeMatrixMulAddKHR 201 205 209 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR 211: 198 Load 200(ms8A) 212: 202 Load 204(ms8B) 213: 206 Load 208(ms8C) 214: 206 CooperativeMatrixMulAddKHR 211 212 213 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR 215: 198 Load 200(ms8A) 216: 202 Load 204(ms8B) 217: 206 Load 208(ms8C) 218: 206 CooperativeMatrixMulAddKHR 215 216 217 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR SaturatingAccumulationKHR 223: 220 Load 222(m16) 224: 187(ptr) AccessChain 186(shmatrix) 82 CooperativeMatrixStoreKHR 224 223 62 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 Return FunctionEnd 15(f16(f161<3><8><8><2>;): 11 Function None 13 14(m): 12(ptr) FunctionParameter 16: Label 24: 11 Load 14(m) 25: 11 FNegate 24 ReturnValue 25 FunctionEnd 22(f32(f1<3><8><8><2>;): 18 Function None 20 21(m): 19(ptr) FunctionParameter 23: Label 28: 18 Load 21(m) 29: 18 FNegate 28 ReturnValue 29 FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopmatKHR_Error.comp.out000066400000000000000000000061111506534232700241230ustar00rootroot00000000000000spv.coopmatKHR_Error.comp ERROR: 0:8: 'ftemplate16' : unexpected type parameters ERROR: 0:10: '' : coopmat missing type parameters ERROR: 0:10: 'fnoparams' : unexpected number type parameters ERROR: 0:17: 'void' : coopmat invalid basic type ERROR: 0:17: 'fbadtype' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type ERROR: 0:17: 'fbadtype' : illegal use of type 'void' ERROR: 0:18: '' : type parameter must be a constant integer expression ERROR: 0:18: 'void' : coopmat invalid basic type ERROR: 0:18: '' : coopmat incorrect number of type parameters ERROR: 0:18: 'fbadtype2' : unexpected number type parameters ERROR: 0:18: 'fbadtype2' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type ERROR: 0:18: 'fbadtype2' : illegal use of type 'void' ERROR: 0:19: 'void' : coopmat invalid basic type ERROR: 0:19: '' : coopmat incorrect number of type parameters ERROR: 0:19: 'fbadtype3' : unexpected number type parameters ERROR: 0:19: 'fbadtype3' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type ERROR: 0:19: 'fbadtype3' : illegal use of type 'void' ERROR: 0:21: '' : coopmat incorrect number of type parameters ERROR: 0:21: 'fbadnumparams' : unexpected number type parameters ERROR: 0:25: '' : type parameter must be a constant integer expression ERROR: 0:29: '' : coopmat incorrect number of type parameters ERROR: 0:29: 'sharedmat' : unexpected number type parameters ERROR: 0:29: 'Cooperative matrix types must not be used in shared memory' : qualifier ERROR: 0:32: 'bufmat' : member of block cannot be or contain a cooperative matrix type ERROR: 0:41: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float' ERROR: 0:42: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float' ERROR: 0:47: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float16_t' ERROR: 0:53: 'assign' : cannot convert from ' temp coopmat<3, 8, 1, 0> float16_t' to ' temp coopmat<3, 8, 1, 0> float16_t' ERROR: 0:56: 'constructor' : too many arguments ERROR: 0:56: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float16_t' ERROR: 0:60: 'constructor' : Cooperative matrix constructor argument must be scalar or cooperative matrix ERROR: 0:60: '=' : cannot convert from ' const float' to ' temp coopmat<3, 4, 4, 0> float' ERROR: 0:63: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:66: '.' : cannot apply to a cooperative matrix type: x ERROR: 0:68: 'transpose' : no matching overloaded function found ERROR: 0:73: 'coopMatLoad' : Only l-values corresponding to storage block or shared variables can be used with cooperative matrix load/store functions. ERROR: 0:74: 'coopMatStore' : Only l-values corresponding to storage block or shared variables can be used with cooperative matrix load/store functions. ERROR: 37 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.coopmatKHR_arithmetic.comp.out000066400000000000000000000261141506534232700251700ustar00rootroot00000000000000spv.coopmatKHR_arithmetic.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 196 Capability Shader Capability Float16 Capability Int8 Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 13 "f" Name 48 "f16" Name 82 "u32" Name 117 "u8" Name 152 "i8" Decorate 195 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 8 10: 7(int) Constant 0 11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10 12: TypePointer Function 11 39: 6(float) Constant 1073741824 45: TypeFloat 16 46: TypeCooperativeMatrixKHR 45(float16_t) 8 9 9 10 47: TypePointer Function 46 74:45(float16_t) Constant 16384 80: TypeCooperativeMatrixKHR 7(int) 8 9 9 10 81: TypePointer Function 80 108: 7(int) Constant 2 114: TypeInt 8 0 115: TypeCooperativeMatrixKHR 114(int8_t) 8 9 9 10 116: TypePointer Function 115 143: 114(int8_t) Constant 2 149: TypeInt 8 1 150: TypeCooperativeMatrixKHR 149(int8_t) 8 9 9 10 151: TypePointer Function 150 178: 149(int8_t) Constant 2 192: TypeVector 7(int) 3 193: 7(int) Constant 64 194: 7(int) Constant 1 195: 192(ivec3) ConstantComposite 193 194 194 4(main): 2 Function None 3 5: Label 13(f): 12(ptr) Variable Function 48(f16): 47(ptr) Variable Function 82(u32): 81(ptr) Variable Function 117(u8): 116(ptr) Variable Function 152(i8): 151(ptr) Variable Function 14: 11 Load 13(f) 15: 11 Load 13(f) 16: 11 FAdd 14 15 17: 11 Load 13(f) 18: 11 Load 13(f) 19: 11 FSub 17 18 20: 11 Load 13(f) 21: 11 Load 13(f) 22: 11 FMul 20 21 23: 11 Load 13(f) 24: 11 Load 13(f) 25: 11 FDiv 23 24 26: 11 Load 13(f) 27: 11 Load 13(f) 28: 11 FAdd 27 26 Store 13(f) 28 29: 11 Load 13(f) 30: 11 Load 13(f) 31: 11 FSub 30 29 Store 13(f) 31 32: 11 Load 13(f) 33: 11 Load 13(f) 34: 11 FMul 33 32 Store 13(f) 34 35: 11 Load 13(f) 36: 11 Load 13(f) 37: 11 FDiv 36 35 Store 13(f) 37 38: 11 Load 13(f) 40: 11 MatrixTimesScalar 38 39 41: 11 Load 13(f) 42: 11 MatrixTimesScalar 41 39 43: 11 Load 13(f) 44: 11 MatrixTimesScalar 43 39 Store 13(f) 44 49: 46 Load 48(f16) 50: 46 Load 48(f16) 51: 46 FAdd 49 50 52: 46 Load 48(f16) 53: 46 Load 48(f16) 54: 46 FSub 52 53 55: 46 Load 48(f16) 56: 46 Load 48(f16) 57: 46 FMul 55 56 58: 46 Load 48(f16) 59: 46 Load 48(f16) 60: 46 FDiv 58 59 61: 46 Load 48(f16) 62: 46 Load 48(f16) 63: 46 FAdd 62 61 Store 48(f16) 63 64: 46 Load 48(f16) 65: 46 Load 48(f16) 66: 46 FSub 65 64 Store 48(f16) 66 67: 46 Load 48(f16) 68: 46 Load 48(f16) 69: 46 FMul 68 67 Store 48(f16) 69 70: 46 Load 48(f16) 71: 46 Load 48(f16) 72: 46 FDiv 71 70 Store 48(f16) 72 73: 46 Load 48(f16) 75: 46 MatrixTimesScalar 73 74 76: 46 Load 48(f16) 77: 46 MatrixTimesScalar 76 74 78: 46 Load 48(f16) 79: 46 MatrixTimesScalar 78 74 Store 48(f16) 79 83: 80 Load 82(u32) 84: 80 Load 82(u32) 85: 80 IAdd 83 84 86: 80 Load 82(u32) 87: 80 Load 82(u32) 88: 80 ISub 86 87 89: 80 Load 82(u32) 90: 80 Load 82(u32) 91: 80 IMul 89 90 92: 80 Load 82(u32) 93: 80 Load 82(u32) 94: 80 UDiv 92 93 95: 80 Load 82(u32) 96: 80 Load 82(u32) 97: 80 IAdd 96 95 Store 82(u32) 97 98: 80 Load 82(u32) 99: 80 Load 82(u32) 100: 80 ISub 99 98 Store 82(u32) 100 101: 80 Load 82(u32) 102: 80 Load 82(u32) 103: 80 IMul 102 101 Store 82(u32) 103 104: 80 Load 82(u32) 105: 80 Load 82(u32) 106: 80 UDiv 105 104 Store 82(u32) 106 107: 80 Load 82(u32) 109: 80 MatrixTimesScalar 107 108 110: 80 Load 82(u32) 111: 80 MatrixTimesScalar 110 108 112: 80 Load 82(u32) 113: 80 MatrixTimesScalar 112 108 Store 82(u32) 113 118: 115 Load 117(u8) 119: 115 Load 117(u8) 120: 115 IAdd 118 119 121: 115 Load 117(u8) 122: 115 Load 117(u8) 123: 115 ISub 121 122 124: 115 Load 117(u8) 125: 115 Load 117(u8) 126: 115 IMul 124 125 127: 115 Load 117(u8) 128: 115 Load 117(u8) 129: 115 UDiv 127 128 130: 115 Load 117(u8) 131: 115 Load 117(u8) 132: 115 IAdd 131 130 Store 117(u8) 132 133: 115 Load 117(u8) 134: 115 Load 117(u8) 135: 115 ISub 134 133 Store 117(u8) 135 136: 115 Load 117(u8) 137: 115 Load 117(u8) 138: 115 IMul 137 136 Store 117(u8) 138 139: 115 Load 117(u8) 140: 115 Load 117(u8) 141: 115 UDiv 140 139 Store 117(u8) 141 142: 115 Load 117(u8) 144: 115 MatrixTimesScalar 142 143 145: 115 Load 117(u8) 146: 115 MatrixTimesScalar 145 143 147: 115 Load 117(u8) 148: 115 MatrixTimesScalar 147 143 Store 117(u8) 148 153: 150 Load 152(i8) 154: 150 Load 152(i8) 155: 150 IAdd 153 154 156: 150 Load 152(i8) 157: 150 Load 152(i8) 158: 150 ISub 156 157 159: 150 Load 152(i8) 160: 150 Load 152(i8) 161: 150 IMul 159 160 162: 150 Load 152(i8) 163: 150 Load 152(i8) 164: 150 SDiv 162 163 165: 150 Load 152(i8) 166: 150 Load 152(i8) 167: 150 IAdd 166 165 Store 152(i8) 167 168: 150 Load 152(i8) 169: 150 Load 152(i8) 170: 150 ISub 169 168 Store 152(i8) 170 171: 150 Load 152(i8) 172: 150 Load 152(i8) 173: 150 IMul 172 171 Store 152(i8) 173 174: 150 Load 152(i8) 175: 150 Load 152(i8) 176: 150 SDiv 175 174 Store 152(i8) 176 177: 150 Load 152(i8) 179: 150 MatrixTimesScalar 177 178 180: 150 Load 152(i8) 181: 150 MatrixTimesScalar 180 178 182: 150 Load 152(i8) 183: 150 MatrixTimesScalar 182 178 Store 152(i8) 183 184: 11 Load 13(f) 185: 11 FNegate 184 186: 46 Load 48(f16) 187: 46 FNegate 186 188: 150 Load 152(i8) 189: 150 SNegate 188 190: 115 Load 117(u8) 191: 115 SNegate 190 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopmatKHR_arithmeticError.comp.out000066400000000000000000000241671506534232700262100ustar00rootroot00000000000000spv.coopmatKHR_arithmeticError.comp ERROR: 0:21: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion) ERROR: 0:22: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion) ERROR: 0:23: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion) ERROR: 0:24: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion) ERROR: 0:25: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion) ERROR: 0:26: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion) ERROR: 0:27: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:29: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:31: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion) ERROR: 0:32: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion) ERROR: 0:33: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion) ERROR: 0:34: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion) ERROR: 0:35: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:36: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:37: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:38: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:40: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion) ERROR: 0:41: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion) ERROR: 0:42: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion) ERROR: 0:43: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion) ERROR: 0:44: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:45: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:46: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:47: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:49: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion) ERROR: 0:50: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion) ERROR: 0:51: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion) ERROR: 0:52: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion) ERROR: 0:53: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:54: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:55: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:56: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float' ERROR: 0:58: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion) ERROR: 0:59: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion) ERROR: 0:60: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion) ERROR: 0:61: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion) ERROR: 0:62: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' ERROR: 0:63: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' ERROR: 0:64: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' ERROR: 0:65: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' ERROR: 0:67: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion) ERROR: 0:68: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion) ERROR: 0:69: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion) ERROR: 0:70: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' ERROR: 0:71: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' ERROR: 0:72: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' ERROR: 0:74: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion) ERROR: 0:75: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion) ERROR: 0:76: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion) ERROR: 0:77: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t' ERROR: 0:78: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t' ERROR: 0:79: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t' ERROR: 0:81: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:82: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:83: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion) ERROR: 0:84: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int' ERROR: 0:85: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int' ERROR: 0:86: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int' ERROR: 59 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.coopmatKHR_constructor.comp.out000066400000000000000000000717261506534232700254350ustar00rootroot00000000000000spv.coopmatKHR_constructor.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 481 Capability Shader Capability Float16 Capability Int16 Capability Int8 Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 154 "v" Name 158 "v" Name 164 "v" Name 170 "v" Name 176 "v" Name 182 "v" Name 188 "v" Name 194 "v" Name 199 "v" Name 204 "v" Name 207 "v" Name 212 "v" Name 217 "v" Name 222 "v" Name 227 "v" Name 232 "v" Name 237 "v" Name 242 "v" Name 247 "v" Name 250 "v" Name 255 "v" Name 260 "v" Name 265 "v" Name 271 "v" Name 277 "v" Name 282 "v" Name 287 "v" Name 292 "v" Name 295 "v" Name 300 "v" Name 306 "v" Name 311 "v" Name 317 "v" Name 322 "v" Name 327 "v" Name 332 "v" Name 337 "v" Name 340 "v" Name 346 "v" Name 352 "v" Name 357 "v" Name 362 "v" Name 367 "v" Name 372 "v" Name 378 "v" Name 384 "v" Name 387 "v" Name 392 "v" Name 397 "v" Name 402 "v" Name 407 "v" Name 413 "v" Name 418 "v" Name 424 "v" Name 429 "v" Name 432 "v" Name 437 "v" Name 442 "v" Name 447 "v" Name 453 "v" Name 459 "v" Name 464 "v" Name 469 "v" Name 474 "v" Decorate 480 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 8 10: 7(int) Constant 0 11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10 12: 6(float) Constant 1065353216 13: 11 ConstantComposite 12 14: 6(float) Constant 1073741824 15: 11 ConstantComposite 14 16: 6(float) Constant 1077936128 17: 11 ConstantComposite 16 18: 6(float) Constant 1082130432 19: 11 ConstantComposite 18 20: 6(float) Constant 1084227584 21: 11 ConstantComposite 20 22: 6(float) Constant 1086324736 23: 11 ConstantComposite 22 24: 6(float) Constant 1088421888 25: 11 ConstantComposite 24 26: 6(float) Constant 1090519040 27: 11 ConstantComposite 26 28: TypeFloat 16 29: TypeCooperativeMatrixKHR 28(float16_t) 8 9 9 10 30:28(float16_t) Constant 18816 31: 29 ConstantComposite 30 32:28(float16_t) Constant 18944 33: 29 ConstantComposite 32 34:28(float16_t) Constant 19072 35: 29 ConstantComposite 34 36:28(float16_t) Constant 19200 37: 29 ConstantComposite 36 38:28(float16_t) Constant 19328 39: 29 ConstantComposite 38 40:28(float16_t) Constant 19456 41: 29 ConstantComposite 40 42:28(float16_t) Constant 19520 43: 29 ConstantComposite 42 44:28(float16_t) Constant 19584 45: 29 ConstantComposite 44 46: TypeCooperativeMatrixKHR 7(int) 8 9 9 10 47: 7(int) Constant 21 48: 46 ConstantComposite 47 49: 7(int) Constant 22 50: 46 ConstantComposite 49 51: 7(int) Constant 23 52: 46 ConstantComposite 51 53: 7(int) Constant 24 54: 46 ConstantComposite 53 55: 7(int) Constant 25 56: 46 ConstantComposite 55 57: 7(int) Constant 26 58: 46 ConstantComposite 57 59: 7(int) Constant 27 60: 46 ConstantComposite 59 61: 7(int) Constant 28 62: 46 ConstantComposite 61 63: TypeInt 16 0 64: TypeCooperativeMatrixKHR 63(int16_t) 8 9 9 10 65: 63(int16_t) Constant 31 66: 64 ConstantComposite 65 67: 63(int16_t) Constant 32 68: 64 ConstantComposite 67 69: 63(int16_t) Constant 33 70: 64 ConstantComposite 69 71: 63(int16_t) Constant 34 72: 64 ConstantComposite 71 73: 63(int16_t) Constant 35 74: 64 ConstantComposite 73 75: 63(int16_t) Constant 36 76: 64 ConstantComposite 75 77: 63(int16_t) Constant 37 78: 64 ConstantComposite 77 79: 63(int16_t) Constant 38 80: 64 ConstantComposite 79 81: TypeInt 8 0 82: TypeCooperativeMatrixKHR 81(int8_t) 8 9 9 10 83: 81(int8_t) Constant 41 84: 82 ConstantComposite 83 85: 81(int8_t) Constant 42 86: 82 ConstantComposite 85 87: 81(int8_t) Constant 43 88: 82 ConstantComposite 87 89: 81(int8_t) Constant 44 90: 82 ConstantComposite 89 91: 81(int8_t) Constant 45 92: 82 ConstantComposite 91 93: 81(int8_t) Constant 46 94: 82 ConstantComposite 93 95: 81(int8_t) Constant 47 96: 82 ConstantComposite 95 97: 81(int8_t) Constant 48 98: 82 ConstantComposite 97 99: TypeInt 32 1 100: TypeCooperativeMatrixKHR 99(int) 8 9 9 10 101: 99(int) Constant 51 102: 100 ConstantComposite 101 103: 99(int) Constant 52 104: 100 ConstantComposite 103 105: 99(int) Constant 53 106: 100 ConstantComposite 105 107: 99(int) Constant 54 108: 100 ConstantComposite 107 109: 99(int) Constant 55 110: 100 ConstantComposite 109 111: 99(int) Constant 56 112: 100 ConstantComposite 111 113: 99(int) Constant 57 114: 100 ConstantComposite 113 115: 99(int) Constant 58 116: 100 ConstantComposite 115 117: TypeInt 16 1 118: TypeCooperativeMatrixKHR 117(int16_t) 8 9 9 10 119:117(int16_t) Constant 61 120: 118 ConstantComposite 119 121:117(int16_t) Constant 62 122: 118 ConstantComposite 121 123:117(int16_t) Constant 63 124: 118 ConstantComposite 123 125:117(int16_t) Constant 64 126: 118 ConstantComposite 125 127:117(int16_t) Constant 65 128: 118 ConstantComposite 127 129:117(int16_t) Constant 66 130: 118 ConstantComposite 129 131:117(int16_t) Constant 67 132: 118 ConstantComposite 131 133:117(int16_t) Constant 68 134: 118 ConstantComposite 133 135: TypeInt 8 1 136: TypeCooperativeMatrixKHR 135(int8_t) 8 9 9 10 137: 135(int8_t) Constant 71 138: 136 ConstantComposite 137 139: 135(int8_t) Constant 72 140: 136 ConstantComposite 139 141: 135(int8_t) Constant 73 142: 136 ConstantComposite 141 143: 135(int8_t) Constant 74 144: 136 ConstantComposite 143 145: 135(int8_t) Constant 75 146: 136 ConstantComposite 145 147: 135(int8_t) Constant 76 148: 136 ConstantComposite 147 149: 135(int8_t) Constant 77 150: 136 ConstantComposite 149 151: 135(int8_t) Constant 78 152: 136 ConstantComposite 151 153: TypePointer Function 11 155: 6(float) Constant 1120534528 156: 11 ConstantComposite 155 157: TypePointer Function 29 159:28(float16_t) Constant 22112 160: 29 ConstantComposite 159 163: TypePointer Function 46 165: 7(int) Constant 103 166: 46 ConstantComposite 165 169: TypePointer Function 64 171: 63(int16_t) Constant 104 172: 64 ConstantComposite 171 175: TypePointer Function 82 177: 81(int8_t) Constant 105 178: 82 ConstantComposite 177 181: TypePointer Function 100 183: 99(int) Constant 106 184: 100 ConstantComposite 183 187: TypePointer Function 118 189:117(int16_t) Constant 107 190: 118 ConstantComposite 189 193: TypePointer Function 136 195: 135(int8_t) Constant 108 196: 136 ConstantComposite 195 200: 6(float) Constant 1121845248 201: 11 ConstantComposite 200 205:28(float16_t) Constant 22272 206: 29 ConstantComposite 205 208: 7(int) Constant 113 209: 46 ConstantComposite 208 213: 63(int16_t) Constant 114 214: 64 ConstantComposite 213 218: 81(int8_t) Constant 115 219: 82 ConstantComposite 218 223: 99(int) Constant 116 224: 100 ConstantComposite 223 228:117(int16_t) Constant 117 229: 118 ConstantComposite 228 233: 135(int8_t) Constant 118 234: 136 ConstantComposite 233 238: 6(float) Constant 1123155968 239: 11 ConstantComposite 238 243:28(float16_t) Constant 22432 244: 29 ConstantComposite 243 248: 7(int) Constant 123 249: 46 ConstantComposite 248 251: 63(int16_t) Constant 124 252: 64 ConstantComposite 251 256: 81(int8_t) Constant 125 257: 82 ConstantComposite 256 261: 99(int) Constant 126 262: 100 ConstantComposite 261 266:117(int16_t) Constant 127 267: 118 ConstantComposite 266 272: 135(int8_t) Constant 4294967168 273: 136 ConstantComposite 272 278: 6(float) Constant 1124270080 279: 11 ConstantComposite 278 283:28(float16_t) Constant 22560 284: 29 ConstantComposite 283 288: 7(int) Constant 133 289: 46 ConstantComposite 288 293: 63(int16_t) Constant 134 294: 64 ConstantComposite 293 296: 81(int8_t) Constant 135 297: 82 ConstantComposite 296 301: 99(int) Constant 136 302: 100 ConstantComposite 301 307:117(int16_t) Constant 137 308: 118 ConstantComposite 307 312: 135(int8_t) Constant 4294967178 313: 136 ConstantComposite 312 318: 6(float) Constant 1124925440 319: 11 ConstantComposite 318 323:28(float16_t) Constant 22640 324: 29 ConstantComposite 323 328: 7(int) Constant 143 329: 46 ConstantComposite 328 333: 63(int16_t) Constant 144 334: 64 ConstantComposite 333 338: 81(int8_t) Constant 145 339: 82 ConstantComposite 338 341: 99(int) Constant 146 342: 100 ConstantComposite 341 347:117(int16_t) Constant 147 348: 118 ConstantComposite 347 353: 135(int8_t) Constant 4294967188 354: 136 ConstantComposite 353 358: 6(float) Constant 1125580800 359: 11 ConstantComposite 358 363:28(float16_t) Constant 22720 364: 29 ConstantComposite 363 368: 7(int) Constant 153 369: 46 ConstantComposite 368 373: 63(int16_t) Constant 154 374: 64 ConstantComposite 373 379: 81(int8_t) Constant 155 380: 82 ConstantComposite 379 385: 99(int) Constant 156 386: 100 ConstantComposite 385 388:117(int16_t) Constant 157 389: 118 ConstantComposite 388 393: 135(int8_t) Constant 4294967198 394: 136 ConstantComposite 393 398: 6(float) Constant 1126236160 399: 11 ConstantComposite 398 403:28(float16_t) Constant 22800 404: 29 ConstantComposite 403 408: 7(int) Constant 163 409: 46 ConstantComposite 408 414: 63(int16_t) Constant 164 415: 64 ConstantComposite 414 419: 81(int8_t) Constant 165 420: 82 ConstantComposite 419 425: 99(int) Constant 166 426: 100 ConstantComposite 425 430:117(int16_t) Constant 167 431: 118 ConstantComposite 430 433: 135(int8_t) Constant 4294967208 434: 136 ConstantComposite 433 438: 6(float) Constant 1126891520 439: 11 ConstantComposite 438 443:28(float16_t) Constant 22880 444: 29 ConstantComposite 443 448: 7(int) Constant 173 449: 46 ConstantComposite 448 454: 63(int16_t) Constant 174 455: 64 ConstantComposite 454 460: 81(int8_t) Constant 175 461: 82 ConstantComposite 460 465: 99(int) Constant 176 466: 100 ConstantComposite 465 470:117(int16_t) Constant 177 471: 118 ConstantComposite 470 475: 135(int8_t) Constant 4294967218 476: 136 ConstantComposite 475 477: TypeVector 7(int) 3 478: 7(int) Constant 64 479: 7(int) Constant 1 480: 477(ivec3) ConstantComposite 478 479 479 4(main): 2 Function None 3 5: Label 154(v): 153(ptr) Variable Function 158(v): 157(ptr) Variable Function 164(v): 163(ptr) Variable Function 170(v): 169(ptr) Variable Function 176(v): 175(ptr) Variable Function 182(v): 181(ptr) Variable Function 188(v): 187(ptr) Variable Function 194(v): 193(ptr) Variable Function 199(v): 153(ptr) Variable Function 204(v): 157(ptr) Variable Function 207(v): 163(ptr) Variable Function 212(v): 169(ptr) Variable Function 217(v): 175(ptr) Variable Function 222(v): 181(ptr) Variable Function 227(v): 187(ptr) Variable Function 232(v): 193(ptr) Variable Function 237(v): 153(ptr) Variable Function 242(v): 157(ptr) Variable Function 247(v): 163(ptr) Variable Function 250(v): 169(ptr) Variable Function 255(v): 175(ptr) Variable Function 260(v): 181(ptr) Variable Function 265(v): 187(ptr) Variable Function 271(v): 193(ptr) Variable Function 277(v): 153(ptr) Variable Function 282(v): 157(ptr) Variable Function 287(v): 163(ptr) Variable Function 292(v): 169(ptr) Variable Function 295(v): 175(ptr) Variable Function 300(v): 181(ptr) Variable Function 306(v): 187(ptr) Variable Function 311(v): 193(ptr) Variable Function 317(v): 153(ptr) Variable Function 322(v): 157(ptr) Variable Function 327(v): 163(ptr) Variable Function 332(v): 169(ptr) Variable Function 337(v): 175(ptr) Variable Function 340(v): 181(ptr) Variable Function 346(v): 187(ptr) Variable Function 352(v): 193(ptr) Variable Function 357(v): 153(ptr) Variable Function 362(v): 157(ptr) Variable Function 367(v): 163(ptr) Variable Function 372(v): 169(ptr) Variable Function 378(v): 175(ptr) Variable Function 384(v): 181(ptr) Variable Function 387(v): 187(ptr) Variable Function 392(v): 193(ptr) Variable Function 397(v): 153(ptr) Variable Function 402(v): 157(ptr) Variable Function 407(v): 163(ptr) Variable Function 413(v): 169(ptr) Variable Function 418(v): 175(ptr) Variable Function 424(v): 181(ptr) Variable Function 429(v): 187(ptr) Variable Function 432(v): 193(ptr) Variable Function 437(v): 153(ptr) Variable Function 442(v): 157(ptr) Variable Function 447(v): 163(ptr) Variable Function 453(v): 169(ptr) Variable Function 459(v): 175(ptr) Variable Function 464(v): 181(ptr) Variable Function 469(v): 187(ptr) Variable Function 474(v): 193(ptr) Variable Function Store 154(v) 156 Store 158(v) 160 161: 29 Load 158(v) 162: 11 FConvert 161 Store 164(v) 166 167: 46 Load 164(v) 168: 11 ConvertUToF 167 Store 170(v) 172 173: 64 Load 170(v) 174: 11 ConvertUToF 173 Store 176(v) 178 179: 82 Load 176(v) 180: 11 ConvertUToF 179 Store 182(v) 184 185: 100 Load 182(v) 186: 11 ConvertSToF 185 Store 188(v) 190 191: 118 Load 188(v) 192: 11 ConvertSToF 191 Store 194(v) 196 197: 136 Load 194(v) 198: 11 ConvertSToF 197 Store 199(v) 201 202: 11 Load 199(v) 203: 29 FConvert 202 Store 204(v) 206 Store 207(v) 209 210: 46 Load 207(v) 211: 29 ConvertUToF 210 Store 212(v) 214 215: 64 Load 212(v) 216: 29 ConvertUToF 215 Store 217(v) 219 220: 82 Load 217(v) 221: 29 ConvertUToF 220 Store 222(v) 224 225: 100 Load 222(v) 226: 29 ConvertSToF 225 Store 227(v) 229 230: 118 Load 227(v) 231: 29 ConvertSToF 230 Store 232(v) 234 235: 136 Load 232(v) 236: 29 ConvertSToF 235 Store 237(v) 239 240: 11 Load 237(v) 241: 46 ConvertFToU 240 Store 242(v) 244 245: 29 Load 242(v) 246: 46 ConvertFToU 245 Store 247(v) 249 Store 250(v) 252 253: 64 Load 250(v) 254: 46 UConvert 253 Store 255(v) 257 258: 82 Load 255(v) 259: 46 UConvert 258 Store 260(v) 262 263: 100 Load 260(v) 264: 46 Bitcast 263 Store 265(v) 267 268: 118 Load 265(v) 269: 100 SConvert 268 270: 46 Bitcast 269 Store 271(v) 273 274: 136 Load 271(v) 275: 100 SConvert 274 276: 46 Bitcast 275 Store 277(v) 279 280: 11 Load 277(v) 281: 64 ConvertFToU 280 Store 282(v) 284 285: 29 Load 282(v) 286: 64 ConvertFToU 285 Store 287(v) 289 290: 46 Load 287(v) 291: 64 UConvert 290 Store 292(v) 294 Store 295(v) 297 298: 82 Load 295(v) 299: 64 UConvert 298 Store 300(v) 302 303: 100 Load 300(v) 304: 118 SConvert 303 305: 64 Bitcast 304 Store 306(v) 308 309: 118 Load 306(v) 310: 64 Bitcast 309 Store 311(v) 313 314: 136 Load 311(v) 315: 118 SConvert 314 316: 64 Bitcast 315 Store 317(v) 319 320: 11 Load 317(v) 321: 82 ConvertFToU 320 Store 322(v) 324 325: 29 Load 322(v) 326: 82 ConvertFToU 325 Store 327(v) 329 330: 46 Load 327(v) 331: 82 UConvert 330 Store 332(v) 334 335: 64 Load 332(v) 336: 82 UConvert 335 Store 337(v) 339 Store 340(v) 342 343: 100 Load 340(v) 344: 136 SConvert 343 345: 82 Bitcast 344 Store 346(v) 348 349: 118 Load 346(v) 350: 136 SConvert 349 351: 82 Bitcast 350 Store 352(v) 354 355: 136 Load 352(v) 356: 82 Bitcast 355 Store 357(v) 359 360: 11 Load 357(v) 361: 100 ConvertFToS 360 Store 362(v) 364 365: 29 Load 362(v) 366: 100 ConvertFToS 365 Store 367(v) 369 370: 46 Load 367(v) 371: 100 Bitcast 370 Store 372(v) 374 375: 64 Load 372(v) 376: 46 UConvert 375 377: 100 Bitcast 376 Store 378(v) 380 381: 82 Load 378(v) 382: 46 UConvert 381 383: 100 Bitcast 382 Store 384(v) 386 Store 387(v) 389 390: 118 Load 387(v) 391: 100 SConvert 390 Store 392(v) 394 395: 136 Load 392(v) 396: 100 SConvert 395 Store 397(v) 399 400: 11 Load 397(v) 401: 118 ConvertFToS 400 Store 402(v) 404 405: 29 Load 402(v) 406: 118 ConvertFToS 405 Store 407(v) 409 410: 46 Load 407(v) 411: 64 UConvert 410 412: 118 Bitcast 411 Store 413(v) 415 416: 64 Load 413(v) 417: 118 Bitcast 416 Store 418(v) 420 421: 82 Load 418(v) 422: 64 UConvert 421 423: 118 Bitcast 422 Store 424(v) 426 427: 100 Load 424(v) 428: 118 SConvert 427 Store 429(v) 431 Store 432(v) 434 435: 136 Load 432(v) 436: 118 SConvert 435 Store 437(v) 439 440: 11 Load 437(v) 441: 136 ConvertFToS 440 Store 442(v) 444 445: 29 Load 442(v) 446: 136 ConvertFToS 445 Store 447(v) 449 450: 46 Load 447(v) 451: 82 UConvert 450 452: 136 Bitcast 451 Store 453(v) 455 456: 64 Load 453(v) 457: 82 UConvert 456 458: 136 Bitcast 457 Store 459(v) 461 462: 82 Load 459(v) 463: 136 Bitcast 462 Store 464(v) 466 467: 100 Load 464(v) 468: 136 SConvert 467 Store 469(v) 471 472: 118 Load 469(v) 473: 136 SConvert 472 Store 474(v) 476 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopmatKHR_constructorError.comp.out000066400000000000000000000006631506534232700264370ustar00rootroot00000000000000spv.coopmatKHR_constructorError.comp ERROR: 0:12: 'constructor' : Cooperative matrix type parameters mismatch ERROR: 0:13: 'constructor' : Cooperative matrix type parameters mismatch ERROR: 0:14: 'constructor' : Cooperative matrix type parameters mismatch ERROR: 0:15: 'constructor' : Cooperative matrix type parameters mismatch ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.coopmat_Error.comp.out000066400000000000000000000077561506534232700235760ustar00rootroot00000000000000spv.coopmat_Error.comp ERROR: 0:8: 'ftemplate16' : unexpected type parameters ERROR: 0:10: 'fnoparams' : expected four type parameters ERROR: 0:12: 'fbadbits' : expected 16, 32, or 64 bits for first type parameter ERROR: 0:14: 'fbadnumparams' : expected four type parameters ERROR: 0:18: '' : type parameter must be a constant integer expression ERROR: 0:20: 'constant_id' : can only be applied to 'const'-qualified scalar ERROR: 0:22: 'Cooperative matrix types must not be used in shared memory' : qualifier ERROR: 0:25: 'bufmat' : member of block cannot be or contain a cooperative matrix type ERROR: 0:34: 'assign' : cannot convert from ' temp<16, 3, 16, 8> float16_t' to ' temp<32, 3, 16, 8> highp float' ERROR: 0:35: 'assign' : cannot convert from ' temp<16, 3, 16, 8> float16_t' to ' temp<32, 3, 16, 8> highp float' ERROR: 0:40: 'assign' : cannot convert from ' temp<16, 3, 8, 8> float16_t' to ' temp<16, 3, 16, 8> float16_t' ERROR: 0:46: 'assign' : cannot convert from ' temp<16, 3, 8, 1> float16_t' to ' temp<16, 3, 8, 1> float16_t' ERROR: 0:49: 'constructor' : too many arguments ERROR: 0:49: 'assign' : cannot convert from ' const float' to ' temp<16, 3, 8, 8> float16_t' ERROR: 0:53: 'constructor' : Cooperative matrix constructor argument must be scalar or cooperative matrix ERROR: 0:53: '=' : cannot convert from ' const float' to ' temp<32, 3, 4, 4> highp float' ERROR: 0:56: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:59: '.' : cannot apply to a cooperative matrix type: x ERROR: 0:61: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp<16, 3, 16, 8> float16_t' and a right operand of type ' temp<16, 3, 16, 8> float16_t' (or there is no acceptable conversion) ERROR: 0:63: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp<16, 3, 16, 8> float16_t' and a right operand of type ' const float' (or there is no acceptable conversion) ERROR: 0:64: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp<16, 3, 16, 8> float16_t' and a right operand of type ' const float' (or there is no acceptable conversion) ERROR: 0:65: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp<16, 3, 16, 8> float16_t' and a right operand of type ' const float' (or there is no acceptable conversion) ERROR: 0:66: 'assign' : cannot convert from ' const float' to ' temp<16, 3, 16, 8> float16_t' ERROR: 0:67: 'assign' : cannot convert from ' const float' to ' temp<16, 3, 16, 8> float16_t' ERROR: 0:68: 'assign' : cannot convert from ' const float' to ' temp<16, 3, 16, 8> float16_t' ERROR: 0:70: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp<16, 3, 16, 8> float16_t' and a right operand of type ' const float' (or there is no acceptable conversion) ERROR: 0:71: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp<16, 3, 16, 8> float16_t' (or there is no acceptable conversion) ERROR: 0:72: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp<32, 3, 16, 8> highp float' and a right operand of type ' const float16_t' (or there is no acceptable conversion) ERROR: 0:73: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' const float16_t' and a right operand of type ' temp<32, 3, 16, 8> highp float' (or there is no acceptable conversion) ERROR: 0:75: 'transpose' : no matching overloaded function found ERROR: 0:80: 'coopMatLoadNV' : Only l-values corresponding to storage block or shared variables can be used with cooperative matrix load/store functions. ERROR: 0:81: 'coopMatStoreNV' : Only l-values corresponding to storage block or shared variables can be used with cooperative matrix load/store functions. ERROR: 32 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.coopmat_armlayout.comp.out000066400000000000000000000504201506534232700245040ustar00rootroot00000000000000spv.coopmat_armlayout.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 239 Capability Shader Capability Float16 Capability Int16 Capability Int8 Capability CooperativeMatrixLayoutsARM Capability StorageUniformBufferBlock16 Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixKHR Extension "SPV_ARM_cooperative_matrix_layouts" Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 15 "f16(f161<3><8><8><2>;" Name 14 "m" Name 22 "f32(f1<3><8><8><2>;" Name 21 "m" Name 35 "m" Name 53 "m2" Name 57 "x" Name 68 "Block" MemberName 68(Block) 0 "y" MemberName 68(Block) 1 "x" Name 70 "block" Name 83 "Block16" MemberName 83(Block16) 0 "y" MemberName 83(Block16) 1 "x" MemberName 83(Block16) 2 "b" Name 86 "Block" MemberName 86(Block) 0 "y" MemberName 86(Block) 1 "x" Name 88 "block16" Name 105 "D" Name 109 "A" Name 113 "B" Name 115 "C" Name 119 "l" Name 123 "Y" Name 124 "Z" Name 127 "F" Name 132 "a" Name 136 "md1" Name 147 "mC2" Name 160 "p1" Name 161 "param" Name 164 "p2" Name 165 "param" Name 179 "ms" Name 184 "shmatrix" Name 193 "ms8A" Name 197 "ms8B" Name 201 "ms8C" Name 216 "m16" Name 222 "mC" Name 223 "F" Name 228 "S" MemberName 228(S) 0 "a" MemberName 228(S) 1 "b" MemberName 228(S) 2 "c" Name 233 "SC" Name 238 "scm" Decorate 66 ArrayStride 4 Decorate 67 ArrayStride 4 Decorate 68(Block) Block MemberDecorate 68(Block) 0 Offset 0 MemberDecorate 68(Block) 1 Offset 4194304 Decorate 70(block) Binding 0 Decorate 70(block) DescriptorSet 0 Decorate 79 ArrayStride 2 Decorate 81 ArrayStride 2 Decorate 83(Block16) Block MemberDecorate 83(Block16) 0 Offset 0 MemberDecorate 83(Block16) 1 Offset 2097152 MemberDecorate 83(Block16) 2 Offset 2097160 Decorate 84 ArrayStride 4 Decorate 85 ArrayStride 4 Decorate 86(Block) Block MemberDecorate 86(Block) 0 Offset 0 MemberDecorate 86(Block) 1 Offset 4194304 Decorate 88(block16) Binding 0 Decorate 88(block16) DescriptorSet 0 Decorate 123(Y) SpecId 0 Decorate 221 BuiltIn WorkgroupSize Decorate 223(F) SpecId 1 Decorate 233(SC) SpecId 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 8 10: 7(int) Constant 2 11: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 10 12: TypePointer Function 11 13: TypeFunction 11 12(ptr) 17: TypeFloat 32 18: TypeCooperativeMatrixKHR 17(float) 8 9 9 10 19: TypePointer Function 18 20: TypeFunction 18 19(ptr) 32: 7(int) Constant 16 33: TypeCooperativeMatrixKHR 17(float) 8 32 9 10 34: TypePointer Function 33 36: 17(float) Constant 0 37: 33 ConstantComposite 36 46: 17(float) Constant 1073741824 51: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 10 52: TypePointer Function 51 56: TypePointer Function 17(float) 58: TypeInt 32 1 59: 58(int) Constant 1 62: 58(int) Constant 0 65: 7(int) Constant 1048576 66: TypeArray 17(float) 65 67: TypeRuntimeArray 17(float) 68(Block): TypeStruct 66 67 69: TypePointer StorageBuffer 68(Block) 70(block): 69(ptr) Variable StorageBuffer 71: 7(int) Constant 5 72: TypePointer StorageBuffer 17(float) 74: 7(int) Constant 128 75: 58(int) Constant 4202 79: TypeArray 6(float16_t) 65 80: 7(int) Constant 1 81: TypeArray 6(float16_t) 80 TypeForwardPointer 82 PhysicalStorageBufferEXT 83(Block16): TypeStruct 79 81 82 84: TypeArray 17(float) 65 85: TypeRuntimeArray 17(float) 86(Block): TypeStruct 84 85 82: TypePointer PhysicalStorageBufferEXT 86(Block) 87: TypePointer StorageBuffer 83(Block16) 88(block16): 87(ptr) Variable StorageBuffer 89: TypePointer StorageBuffer 6(float16_t) 94: 58(int) Constant 2 95: TypePointer StorageBuffer 82(ptr) 98: TypePointer PhysicalStorageBufferEXT 17(float) 106: 7(int) Constant 0 107: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 106 108: TypePointer Function 107 111: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 80 112: TypePointer Function 111 118: TypePointer Function 58(int) 122: 58(int) Constant 8 123(Y): 58(int) SpecConstant 2 124(Z): 58(int) SpecConstantOp 132 122 123(Y) 125: TypeCooperativeMatrixKHR 6(float16_t) 8 124(Z) 124(Z) 10 126: TypePointer Function 125 128:6(float16_t) Constant 0 129: 125 ConstantComposite 128 130: TypeArray 33 71 131: TypePointer Function 130 133: 58(int) Constant 3 134: 17(float) Constant 1065353216 140: 58(int) Constant 1234 144: TypeCooperativeMatrixKHR 6(float16_t) 8 124(Z) 9 10 145: TypeArray 144 8 146: TypePointer Private 145 147(mC2): 146(ptr) Variable Private 148: TypePointer Private 144 168: 11 ConstantComposite 128 169: 18 ConstantComposite 36 173:6(float16_t) Constant 16384 176: 17(float) Constant 1082130432 180: TypeVector 7(int) 4 181: 7(int) Constant 32 182: TypeArray 180(ivec4) 181 183: TypePointer Workgroup 182 184(shmatrix): 183(ptr) Variable Workgroup 185: TypePointer Workgroup 180(ivec4) 190: TypeInt 8 1 191: TypeCooperativeMatrixKHR 190(int8_t) 8 9 9 106 192: TypePointer Function 191 195: TypeCooperativeMatrixKHR 190(int8_t) 8 9 9 80 196: TypePointer Function 195 199: TypeCooperativeMatrixKHR 190(int8_t) 8 9 9 10 200: TypePointer Function 199 211: 58(int) Constant 16 213: TypeInt 16 1 214: TypeCooperativeMatrixKHR 213(int16_t) 8 9 9 106 215: TypePointer Function 214 219: TypeVector 7(int) 3 220: 7(int) Constant 64 221: 219(ivec3) ConstantComposite 220 80 80 222(mC): 148(ptr) Variable Private 223(F): 17(float) SpecConstant 1077936128 224: TypeCooperativeMatrixKHR 17(float) 8 124(Z) 9 10 225: 224 ConstantComposite 36 226:6(float16_t) Constant 15360 227: 11 ConstantComposite 226 228(S): TypeStruct 58(int) 58(int) 58(int) 229: 58(int) Constant 12 230: 58(int) Constant 23 231: 58(int) Constant 34 232: 228(S) ConstantComposite 229 230 231 233(SC): 58(int) SpecConstant 1 234: TypeCooperativeMatrixKHR 6(float16_t) 8 233(SC) 233(SC) 10 235: TypeArray 234 233(SC) 236: TypeArray 235 233(SC) 237: TypePointer Private 236 238(scm): 237(ptr) Variable Private 4(main): 2 Function None 3 5: Label 35(m): 34(ptr) Variable Function 53(m2): 52(ptr) Variable Function 57(x): 56(ptr) Variable Function 105(D): 34(ptr) Variable Function 109(A): 108(ptr) Variable Function 113(B): 112(ptr) Variable Function 115(C): 34(ptr) Variable Function 119(l): 118(ptr) Variable Function 127(F): 126(ptr) Variable Function 132(a): 131(ptr) Variable Function 136(md1): 56(ptr) Variable Function 160(p1): 12(ptr) Variable Function 161(param): 12(ptr) Variable Function 164(p2): 19(ptr) Variable Function 165(param): 19(ptr) Variable Function 179(ms): 52(ptr) Variable Function 193(ms8A): 192(ptr) Variable Function 197(ms8B): 196(ptr) Variable Function 201(ms8C): 200(ptr) Variable Function 216(m16): 215(ptr) Variable Function Store 35(m) 37 38: 33 Load 35(m) 39: 33 Load 35(m) 40: 33 FAdd 38 39 Store 35(m) 40 41: 33 Load 35(m) 42: 33 Load 35(m) 43: 33 FSub 41 42 Store 35(m) 43 44: 33 Load 35(m) 45: 33 FNegate 44 Store 35(m) 45 47: 33 Load 35(m) 48: 33 MatrixTimesScalar 47 46 Store 35(m) 48 49: 33 Load 35(m) 50: 33 MatrixTimesScalar 49 46 Store 35(m) 50 54: 33 Load 35(m) 55: 51 FConvert 54 Store 53(m2) 55 60: 56(ptr) AccessChain 35(m) 59 61: 17(float) Load 60 Store 57(x) 61 63: 17(float) Load 57(x) 64: 56(ptr) AccessChain 35(m) 62 Store 64 63 73: 72(ptr) AccessChain 70(block) 59 32 76: 33 CooperativeMatrixLoadKHR 73 75 74 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 35(m) 76 77: 33 Load 35(m) 78: 72(ptr) AccessChain 70(block) 59 32 CooperativeMatrixStoreKHR 78 77 75 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 90: 89(ptr) AccessChain 88(block16) 59 32 91: 51 CooperativeMatrixLoadKHR 90 75 74 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 53(m2) 91 92: 51 Load 53(m2) 93: 89(ptr) AccessChain 88(block16) 59 32 CooperativeMatrixStoreKHR 93 92 75 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 96: 95(ptr) AccessChain 88(block16) 94 97: 82(ptr) Load 96 MakePointerVisibleKHR NonPrivatePointerKHR 71 99: 98(ptr) AccessChain 97 59 32 100: 33 CooperativeMatrixLoadKHR 99 75 74 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 71 Store 35(m) 100 101: 33 Load 35(m) 102: 95(ptr) AccessChain 88(block16) 94 103: 82(ptr) Load 102 MakePointerVisibleKHR NonPrivatePointerKHR 71 104: 98(ptr) AccessChain 103 59 32 CooperativeMatrixStoreKHR 104 101 75 74 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 71 110: 107 Load 109(A) 114: 111 Load 113(B) 116: 33 Load 115(C) 117: 33 CooperativeMatrixMulAddKHR 110 114 116 Store 105(D) 117 120: 7(int) CooperativeMatrixLengthKHR 33 121: 58(int) Bitcast 120 Store 119(l) 121 Store 127(F) 129 135: 56(ptr) AccessChain 132(a) 133 62 Store 135 134 Store 136(md1) 36 137: 33 Load 35(m) 138: 33 Load 35(m) 139: 33 FAdd 138 137 Store 35(m) 139 141: 17(float) CompositeExtract 139 1234 142: 17(float) Load 136(md1) 143: 17(float) FAdd 142 141 Store 136(md1) 143 149: 148(ptr) AccessChain 147(mC2) 94 150: 144 Load 149 151: 148(ptr) AccessChain 147(mC2) 59 Store 151 150 152: 72(ptr) AccessChain 70(block) 62 32 153: 33 CooperativeMatrixLoadKHR 152 75 74 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 35(m) 153 154: 33 Load 35(m) 155: 72(ptr) AccessChain 70(block) 62 32 CooperativeMatrixStoreKHR 155 154 75 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 156: 89(ptr) AccessChain 88(block16) 62 32 157: 51 CooperativeMatrixLoadKHR 156 75 74 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 53(m2) 157 158: 51 Load 53(m2) 159: 89(ptr) AccessChain 88(block16) 62 32 CooperativeMatrixStoreKHR 159 158 75 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 162: 11 Load 160(p1) Store 161(param) 162 163: 11 FunctionCall 15(f16(f161<3><8><8><2>;) 161(param) Store 160(p1) 163 166: 18 Load 164(p2) Store 165(param) 166 167: 18 FunctionCall 22(f32(f1<3><8><8><2>;) 165(param) Store 164(p2) 167 Store 160(p1) 168 Store 164(p2) 169 170: 11 Load 160(p1) 171: 11 Load 160(p1) 172: 11 FDiv 171 170 Store 160(p1) 172 174: 11 Load 160(p1) 175: 11 MatrixTimesScalar 174 173 Store 160(p1) 175 177: 18 Load 164(p2) 178: 18 MatrixTimesScalar 177 176 Store 164(p2) 178 186: 185(ptr) AccessChain 184(shmatrix) 80 187: 51 CooperativeMatrixLoadKHR 186 75 10 MakePointerVisibleKHR NonPrivatePointerKHR 10 Store 179(ms) 187 188: 51 Load 179(ms) 189: 185(ptr) AccessChain 184(shmatrix) 80 CooperativeMatrixStoreKHR 189 188 75 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 194: 191 Load 193(ms8A) 198: 195 Load 197(ms8B) 202: 199 Load 201(ms8C) 203: 199 CooperativeMatrixMulAddKHR 194 198 202 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR 204: 191 Load 193(ms8A) 205: 195 Load 197(ms8B) 206: 199 Load 201(ms8C) 207: 199 CooperativeMatrixMulAddKHR 204 205 206 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR 208: 191 Load 193(ms8A) 209: 195 Load 197(ms8B) 210: 199 Load 201(ms8C) 212: 199 CooperativeMatrixMulAddKHR 208 209 210 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR SaturatingAccumulationKHR 217: 214 Load 216(m16) 218: 185(ptr) AccessChain 184(shmatrix) 80 CooperativeMatrixStoreKHR 218 217 75 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 Return FunctionEnd 15(f16(f161<3><8><8><2>;): 11 Function None 13 14(m): 12(ptr) FunctionParameter 16: Label 24: 11 Load 14(m) 25: 11 FNegate 24 ReturnValue 25 FunctionEnd 22(f32(f1<3><8><8><2>;): 18 Function None 20 21(m): 19(ptr) FunctionParameter 23: Label 28: 18 Load 21(m) 29: 18 FNegate 28 ReturnValue 29 FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopvec.comp.out000066400000000000000000000461711506534232700224130ustar00rootroot00000000000000spv.coopvec.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 250 Capability Shader Capability Float16 Capability Int8 Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Capability VulkanMemoryModelKHR Capability CooperativeVectorNV Capability ReplicatedCompositesEXT Extension "SPV_EXT_replicated_composites" Extension "SPV_KHR_8bit_storage" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_vector" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_vector" Name 4 "main" Name 13 "foo(coopvecf161<1>;" Name 12 "x" Name 20 "foo(coopvecf161<2>;" Name 19 "x" Name 26 "v" Name 31 "x" Name 34 "y" Name 37 "v2" Name 46 "v3" Name 48 "x3" Name 53 "y3" Name 58 "v4" Name 71 "v5" Name 74 "v6" Name 100 "f" Name 108 "len" Name 125 "tempArg" Name 129 "v7" Name 132 "MatrixBuf" MemberName 132(MatrixBuf) 0 "matrixData" Name 134 "matrixBuf" Name 142 "v8" Name 145 "matrixOffset" Name 148 "tempArg" Name 152 "v9" Name 156 "MatrixBuf2" MemberName 156(MatrixBuf2) 0 "matrixData" Name 158 "matrixBuf2" Name 165 "v10" Name 167 "f162" Name 171 "f161" Name 173 "f16" Name 179 "v11" Name 181 "v12" Name 192 "v13" Name 207 "tempArg" Name 214 "biasOffset" Name 215 "tempArg" Name 223 "tempArg" Name 226 "v14" Name 231 "matrixLayout" Decorate 131 ArrayStride 2 Decorate 132(MatrixBuf) Block MemberDecorate 132(MatrixBuf) 0 Offset 0 Decorate 134(matrixBuf) Binding 0 Decorate 134(matrixBuf) DescriptorSet 0 Decorate 155 ArrayStride 1 Decorate 156(MatrixBuf2) Block MemberDecorate 156(MatrixBuf2) 0 Offset 0 Decorate 158(matrixBuf2) Binding 0 Decorate 158(matrixBuf2) DescriptorSet 0 Decorate 231(matrixLayout) SpecId 0 Decorate 249 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeInt 32 0 8: 7(int) Constant 1 9: TypeCooperativeVectorNV 6(float16_t) 8 10: TypePointer Function 9 11: TypeFunction 9 10(ptr) 15: 7(int) Constant 2 16: TypeCooperativeVectorNV 6(float16_t) 15 17: TypePointer Function 16 18: TypeFunction 16 17(ptr) 22: TypeFloat 32 23: 7(int) Constant 5 24: TypeCooperativeVectorNV 22(float) 23 25: TypePointer Function 24 27: 22(float) Constant 0 28: 24 ConstantCompositeReplicateEXT 27 29: TypeVector 22(float) 3 30: TypePointer Function 29(fvec3) 32: 22(float) Constant 1065353216 33: 29(fvec3) ConstantComposite 32 32 32 35: 22(float) Constant 1073741824 36: 29(fvec3) ConstantComposite 35 35 35 47: 24 ConstantComposite 32 32 32 35 35 49: 22(float) Constant 1082130432 50: 22(float) Constant 1084227584 51: 22(float) Constant 1086324736 52: 29(fvec3) ConstantComposite 49 50 51 54: 22(float) Constant 1088421888 55: 22(float) Constant 1090519040 56: 22(float) Constant 1091567616 57: 29(fvec3) ConstantComposite 54 55 56 69: TypeCooperativeVectorNV 6(float16_t) 23 70: TypePointer Function 69 99: TypePointer Function 22(float) 106: TypeInt 32 1 107: TypePointer Function 106(int) 110: 106(int) Constant 0 113: 106(int) Constant 4 122: 7(int) Constant 100 123: TypeCooperativeVectorNV 22(float) 122 124: TypePointer Function 123 126: 7(int) Constant 20 127: TypeCooperativeVectorNV 22(float) 126 128: TypePointer Function 127 131: TypeRuntimeArray 6(float16_t) 132(MatrixBuf): TypeStruct 131 133: TypePointer StorageBuffer 132(MatrixBuf) 134(matrixBuf): 133(ptr) Variable StorageBuffer 135: TypePointer StorageBuffer 131 137: 7(int) Constant 11 138: TypeBool 139: 138(bool) ConstantFalse 140: 7(int) Constant 300 144: TypePointer Function 7(int) 146: TypeCooperativeVectorNV 106(int) 122 147: TypePointer Function 146 149: TypeInt 8 1 150: TypeCooperativeVectorNV 149(int8_t) 126 151: TypePointer Function 150 154: 106(int) Constant 3 155: TypeRuntimeArray 149(int8_t) 156(MatrixBuf2): TypeStruct 155 157: TypePointer StorageBuffer 156(MatrixBuf2) 158(matrixBuf2): 157(ptr) Variable StorageBuffer 159: TypePointer StorageBuffer 155 162: 106(int) Constant 1 163: 138(bool) ConstantTrue 172: TypePointer Function 6(float16_t) 176: 7(int) Constant 7 177: TypeCooperativeVectorNV 6(float16_t) 176 178: TypePointer Function 177 211: 7(int) Constant 50 224: TypeCooperativeVectorNV 7(int) 126 225: TypePointer Function 224 228: 106(int) Constant 1000491000 231(matrixLayout): 106(int) SpecConstant 1 247: TypeVector 7(int) 3 248: 7(int) Constant 64 249: 247(ivec3) ConstantComposite 248 8 8 4(main): 2 Function None 3 5: Label 26(v): 25(ptr) Variable Function 31(x): 30(ptr) Variable Function 34(y): 30(ptr) Variable Function 37(v2): 25(ptr) Variable Function 46(v3): 25(ptr) Variable Function 48(x3): 30(ptr) Variable Function 53(y3): 30(ptr) Variable Function 58(v4): 25(ptr) Variable Function 71(v5): 70(ptr) Variable Function 74(v6): 25(ptr) Variable Function 100(f): 99(ptr) Variable Function 108(len): 107(ptr) Variable Function 125(tempArg): 124(ptr) Variable Function 129(v7): 128(ptr) Variable Function 142(v8): 124(ptr) Variable Function 145(matrixOffset): 144(ptr) Variable Function 148(tempArg): 147(ptr) Variable Function 152(v9): 151(ptr) Variable Function 165(v10): 147(ptr) Variable Function 167(f162): 17(ptr) Variable Function 171(f161): 10(ptr) Variable Function 173(f16): 172(ptr) Variable Function 179(v11): 178(ptr) Variable Function 181(v12): 178(ptr) Variable Function 192(v13): 178(ptr) Variable Function 207(tempArg): 124(ptr) Variable Function 214(biasOffset): 144(ptr) Variable Function 215(tempArg): 147(ptr) Variable Function 223(tempArg): 147(ptr) Variable Function 226(v14): 225(ptr) Variable Function Store 26(v) 28 Store 31(x) 33 Store 34(y) 36 38: 29(fvec3) Load 31(x) 39: 29(fvec3) Load 34(y) 40: 22(float) CompositeExtract 38 0 41: 22(float) CompositeExtract 38 1 42: 22(float) CompositeExtract 38 2 43: 22(float) CompositeExtract 39 0 44: 22(float) CompositeExtract 39 1 45: 24 CompositeConstruct 40 41 42 43 44 Store 37(v2) 45 Store 46(v3) 47 Store 48(x3) 52 Store 53(y3) 57 59: 29(fvec3) Load 48(x3) 60: 29(fvec3) VectorShuffle 59 59 2 1 0 61: 29(fvec3) Load 53(y3) 62: 29(fvec3) VectorShuffle 61 61 2 2 1 63: 22(float) CompositeExtract 60 0 64: 22(float) CompositeExtract 60 1 65: 22(float) CompositeExtract 60 2 66: 22(float) CompositeExtract 62 0 67: 22(float) CompositeExtract 62 1 68: 24 CompositeConstruct 63 64 65 66 67 Store 58(v4) 68 72: 24 Load 58(v4) 73: 69 FConvert 72 Store 71(v5) 73 75: 24 Load 26(v) 76: 24 Load 37(v2) 77: 24 FAdd 75 76 Store 74(v6) 77 78: 24 Load 26(v) 79: 24 Load 37(v2) 80: 24 FSub 78 79 Store 74(v6) 80 81: 24 Load 26(v) 82: 24 Load 37(v2) 83: 24 FMul 81 82 Store 74(v6) 83 84: 24 Load 26(v) 85: 24 Load 37(v2) 86: 24 FDiv 84 85 Store 74(v6) 86 87: 24 Load 26(v) 88: 24 Load 74(v6) 89: 24 FAdd 88 87 Store 74(v6) 89 90: 24 Load 26(v) 91: 24 Load 74(v6) 92: 24 FSub 91 90 Store 74(v6) 92 93: 24 Load 26(v) 94: 24 Load 74(v6) 95: 24 FMul 94 93 Store 74(v6) 95 96: 24 Load 26(v) 97: 24 Load 74(v6) 98: 24 FDiv 97 96 Store 74(v6) 98 101: 22(float) Load 100(f) 102: 24 Load 74(v6) 103: 24 VectorTimesScalar 102 101 Store 74(v6) 103 104: 24 Load 74(v6) 105: 24 VectorTimesScalar 104 50 Store 74(v6) 105 109: 106(int) Bitcast 23 Store 108(len) 109 111: 22(float) Load 100(f) 112: 99(ptr) AccessChain 74(v6) 110 Store 112 111 114: 99(ptr) AccessChain 74(v6) 113 Store 114 50 115: 24 Load 26(v) 116: 24 Load 26(v) 117: 24 FAdd 116 115 Store 26(v) 117 118: 22(float) CompositeExtract 117 4 119: 22(float) Load 100(f) 120: 22(float) FAdd 119 118 Store 100(f) 120 121: 24 Load 26(v) Store 74(v6) 121 130: 127 Load 129(v7) 136: 135(ptr) AccessChain 134(matrixBuf) 110 141: 123 CooperativeVectorMatrixMulNV 130 110 136 137 110 122 126 110 139 140 Store 125(tempArg) 141 143: 123 Load 125(tempArg) Store 142(v8) 143 Store 145(matrixOffset) 137 153: 150 Load 152(v9) 160: 159(ptr) AccessChain 158(matrixBuf2) 110 161: 7(int) Load 145(matrixOffset) 164: 146 CooperativeVectorMatrixMulNV 153 154 160 161 154 122 126 162 163 140 BSignedComponentsKHR ResultSignedComponentsKHR Store 148(tempArg) 164 166: 146 Load 148(tempArg) Store 165(v10) 166 168: 106(int) Bitcast 126 169:6(float16_t) ConvertSToF 168 170: 16 CompositeConstructReplicateEXT 169 Store 167(f162) 170 174:6(float16_t) Load 173(f16) 175: 9 CompositeConstructReplicateEXT 174 Store 171(f161) 175 180: 177 Load 179(v11) 182: 177 Load 181(v12) 183: 177 ExtInst 1(GLSL.std.450) 40(FMax) 180 182 Store 179(v11) 183 184: 177 Load 179(v11) 185: 177 Load 181(v12) 186: 177 ExtInst 1(GLSL.std.450) 37(FMin) 184 185 Store 179(v11) 186 187: 177 Load 179(v11) 188: 177 Load 181(v12) 189: 177 ExtInst 1(GLSL.std.450) 48(Step) 187 188 Store 179(v11) 189 190: 177 Load 179(v11) 191: 177 Load 181(v12) 193: 177 Load 192(v13) 194: 177 ExtInst 1(GLSL.std.450) 43(FClamp) 190 191 193 Store 179(v11) 194 195: 177 Load 179(v11) 196: 177 ExtInst 1(GLSL.std.450) 27(Exp) 195 Store 179(v11) 196 197: 177 Load 179(v11) 198: 177 ExtInst 1(GLSL.std.450) 28(Log) 197 Store 179(v11) 198 199: 177 Load 179(v11) 200: 177 ExtInst 1(GLSL.std.450) 21(Tanh) 199 Store 179(v11) 200 201: 177 Load 179(v11) 202: 177 ExtInst 1(GLSL.std.450) 18(Atan) 201 Store 179(v11) 202 203: 177 Load 179(v11) 204: 177 Load 181(v12) 205: 177 Load 192(v13) 206: 177 ExtInst 1(GLSL.std.450) 50(Fma) 203 204 205 Store 179(v11) 206 208: 127 Load 129(v7) 209: 135(ptr) AccessChain 134(matrixBuf) 110 210: 135(ptr) AccessChain 134(matrixBuf) 110 212: 123 CooperativeVectorMatrixMulAddNV 208 110 209 137 110 210 211 110 122 126 110 139 140 Store 207(tempArg) 212 213: 123 Load 207(tempArg) Store 142(v8) 213 Store 214(biasOffset) 137 216: 150 Load 152(v9) 217: 159(ptr) AccessChain 158(matrixBuf2) 110 218: 7(int) Load 145(matrixOffset) 219: 159(ptr) AccessChain 158(matrixBuf2) 110 220: 7(int) Load 214(biasOffset) 221: 146 CooperativeVectorMatrixMulAddNV 216 154 217 218 154 219 220 154 122 126 162 163 140 BSignedComponentsKHR ResultSignedComponentsKHR Store 215(tempArg) 221 222: 146 Load 215(tempArg) Store 165(v10) 222 227: 224 Load 226(v14) 229: 159(ptr) AccessChain 158(matrixBuf2) 110 230: 7(int) Load 145(matrixOffset) 232: 146 CooperativeVectorMatrixMulNV 227 228 229 230 154 122 126 231(matrixLayout) 163 140 ResultSignedComponentsKHR Store 223(tempArg) 232 233: 146 Load 223(tempArg) Store 165(v10) 233 234: 24 Load 26(v) 235: 24 Load 26(v) 236: 24 FAdd 235 234 Store 26(v) 236 237: 106(int) Load 108(len) 238: 22(float) VectorExtractDynamic 236 237 239: 22(float) Load 100(f) 240: 22(float) FAdd 239 238 Store 100(f) 240 Return FunctionEnd 13(foo(coopvecf161<1>;): 9 Function None 11 12(x): 10(ptr) FunctionParameter 14: Label 241: 9 Load 12(x) ReturnValue 241 FunctionEnd 20(foo(coopvecf161<2>;): 16 Function None 18 19(x): 17(ptr) FunctionParameter 21: Label 244: 16 Load 19(x) ReturnValue 244 FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopvec2.comp.out000066400000000000000000000225071506534232700224720ustar00rootroot00000000000000spv.coopvec2.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 122 Capability Shader Capability Float16 Capability Int8 Capability VulkanMemoryModelKHR Capability CooperativeVectorNV Capability ReplicatedCompositesEXT Extension "SPV_EXT_replicated_composites" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_vector" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_vector" Name 4 "main" Name 13 "foo(coopvecf1<4>;" Name 12 "v" Name 17 "f1" Name 19 "f2" Name 21 "f3" Name 23 "N" Name 26 "v" Name 28 "v2" Name 31 "v3" Name 33 "v4" Name 38 "v5" Name 39 "v6" Name 42 "v7" Name 50 "v8" Name 57 "v9" Name 61 "v10" Name 100 "v11" Name 110 "v12" Name 116 "v13" Decorate 23(N) SpecId 0 Decorate 121 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 4 9: TypeCooperativeVectorNV 6(float) 8 10: TypePointer Function 9 11: TypeFunction 2 10(ptr) 15: TypeFloat 16 16: TypePointer Function 15(float16_t) 18:15(float16_t) Constant 15360 20:15(float16_t) Constant 16384 22:15(float16_t) Constant 16896 23(N): 7(int) SpecConstant 3 24: TypeCooperativeVectorNV 15(float16_t) 23(N) 25: TypePointer Function 24 27: 24 ConstantCompositeReplicateEXT 18 32: 24 ConstantComposite 18 20 22 40: TypeCooperativeVectorNV 6(float) 23(N) 41: TypePointer Function 40 43: 6(float) Constant 1065353216 44: 40 ConstantCompositeReplicateEXT 43 45: 6(float) Constant 1073741824 48: TypeCooperativeVectorNV 7(int) 23(N) 49: TypePointer Function 48 51: 7(int) Constant 1 52: 48 ConstantCompositeReplicateEXT 51 53: 7(int) Constant 2 97: TypeInt 32 1 98: TypeCooperativeVectorNV 97(int) 51 99: TypePointer Function 98 102: TypeInt 8 0 103: TypeCooperativeVectorNV 102(int8_t) 51 104: TypeInt 8 1 105: TypeCooperativeVectorNV 104(int8_t) 51 108: TypeCooperativeVectorNV 97(int) 8 109: TypePointer Function 108 112: TypeCooperativeVectorNV 102(int8_t) 8 113: TypeCooperativeVectorNV 104(int8_t) 8 119: TypeVector 7(int) 3 120: 7(int) Constant 64 121: 119(ivec3) ConstantComposite 120 51 51 4(main): 2 Function None 3 5: Label 17(f1): 16(ptr) Variable Function 19(f2): 16(ptr) Variable Function 21(f3): 16(ptr) Variable Function 26(v): 25(ptr) Variable Function 28(v2): 25(ptr) Variable Function 31(v3): 25(ptr) Variable Function 33(v4): 25(ptr) Variable Function 38(v5): 25(ptr) Variable Function 39(v6): 25(ptr) Variable Function 42(v7): 41(ptr) Variable Function 50(v8): 49(ptr) Variable Function 57(v9): 49(ptr) Variable Function 61(v10): 49(ptr) Variable Function 100(v11): 99(ptr) Variable Function 110(v12): 109(ptr) Variable Function 116(v13): 10(ptr) Variable Function Store 17(f1) 18 Store 19(f2) 20 Store 21(f3) 22 Store 26(v) 27 29:15(float16_t) Load 19(f2) 30: 24 CompositeConstructReplicateEXT 29 Store 28(v2) 30 Store 31(v3) 32 34:15(float16_t) Load 17(f1) 35:15(float16_t) Load 19(f2) 36:15(float16_t) Load 21(f3) 37: 24 CompositeConstruct 34 35 36 Store 33(v4) 37 Store 38(v5) 27 Store 39(v6) 32 Store 42(v7) 44 46: 40 Load 42(v7) 47: 40 VectorTimesScalar 46 45 Store 42(v7) 47 Store 50(v8) 52 54: 48 Load 50(v8) 55: 48 CompositeConstructReplicateEXT 53 56: 48 IMul 54 55 Store 50(v8) 56 58: 48 Load 50(v8) 59: 48 CompositeConstructReplicateEXT 53 60: 48 IMul 58 59 Store 57(v9) 60 62: 48 Load 50(v8) 63: 48 CompositeConstructReplicateEXT 53 64: 48 IMul 62 63 Store 61(v10) 64 65: 48 Load 50(v8) 66: 48 Load 57(v9) 67: 48 BitwiseAnd 65 66 Store 50(v8) 67 68: 48 Load 50(v8) 69: 48 Load 57(v9) 70: 48 BitwiseOr 68 69 Store 50(v8) 70 71: 48 Load 50(v8) 72: 48 Load 57(v9) 73: 48 Not 72 74: 48 BitwiseXor 71 73 Store 50(v8) 74 75: 48 Load 50(v8) 76: 48 Load 57(v9) 77: 48 ShiftRightLogical 75 76 Store 50(v8) 77 78: 48 Load 50(v8) 79: 48 Load 57(v9) 80: 48 ShiftLeftLogical 78 79 Store 50(v8) 80 81: 48 Load 57(v9) 82: 48 Load 50(v8) 83: 48 BitwiseAnd 82 81 Store 50(v8) 83 84: 48 Load 57(v9) 85: 48 Load 50(v8) 86: 48 BitwiseOr 85 84 Store 50(v8) 86 87: 48 Load 57(v9) 88: 48 Load 50(v8) 89: 48 BitwiseXor 88 87 Store 50(v8) 89 90: 48 Load 57(v9) 91: 48 Load 50(v8) 92: 48 ShiftRightLogical 91 90 Store 50(v8) 92 93: 48 Load 57(v9) 94: 48 Load 50(v8) 95: 48 ShiftLeftLogical 94 93 Store 50(v8) 95 96: 24 Load 26(v) Store 26(v) 96 101: 98 Load 100(v11) 106: 105 SConvert 101 107: 103 Bitcast 106 111: 108 Load 110(v12) 114: 113 SConvert 111 115: 112 Bitcast 114 117: 9 Load 116(v13) 118: 113 ConvertFToS 117 Return FunctionEnd 13(foo(coopvecf1<4>;): 2 Function None 11 12(v): 10(ptr) FunctionParameter 14: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopvecTraining.comp.out000066400000000000000000000124661506534232700241070ustar00rootroot00000000000000spv.coopvecTraining.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 47 Capability Shader Capability Float16 Capability Int8 Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Capability VulkanMemoryModelKHR Capability CooperativeVectorNV Capability CooperativeVectorTrainingNV Extension "SPV_KHR_8bit_storage" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_vector" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_vector" Name 4 "main" Name 11 "v0" Name 16 "v1" Name 19 "MatrixBuf" MemberName 19(MatrixBuf) 0 "matrixData" Name 21 "matrixBuf" Name 28 "matrixLayout" Name 33 "MatrixBuf2" MemberName 33(MatrixBuf2) 0 "matrixData" Name 35 "matrixBuf2" Decorate 18 ArrayStride 2 Decorate 19(MatrixBuf) Block MemberDecorate 19(MatrixBuf) 0 Offset 0 Decorate 21(matrixBuf) Binding 0 Decorate 21(matrixBuf) DescriptorSet 0 Decorate 28(matrixLayout) SpecId 0 Decorate 32 ArrayStride 1 Decorate 33(MatrixBuf2) Block MemberDecorate 33(MatrixBuf2) 0 Offset 0 Decorate 35(matrixBuf2) Binding 0 Decorate 35(matrixBuf2) DescriptorSet 0 Decorate 46 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeInt 32 0 8: 7(int) Constant 8 9: TypeCooperativeVectorNV 6(float16_t) 8 10: TypePointer Function 9 13: 7(int) Constant 5 14: TypeCooperativeVectorNV 6(float16_t) 13 15: TypePointer Function 14 18: TypeRuntimeArray 6(float16_t) 19(MatrixBuf): TypeStruct 18 20: TypePointer StorageBuffer 19(MatrixBuf) 21(matrixBuf): 20(ptr) Variable StorageBuffer 22: TypeInt 32 1 23: 22(int) Constant 0 24: TypePointer StorageBuffer 18 26: 7(int) Constant 100 27: 7(int) Constant 128 28(matrixLayout): 22(int) SpecConstant 2 31: TypeInt 8 1 32: TypeRuntimeArray 31(int8_t) 33(MatrixBuf2): TypeStruct 32 34: TypePointer StorageBuffer 33(MatrixBuf2) 35(matrixBuf2): 34(ptr) Variable StorageBuffer 36: TypePointer StorageBuffer 32 38: 22(int) Constant 2 43: TypeVector 7(int) 3 44: 7(int) Constant 64 45: 7(int) Constant 1 46: 43(ivec3) ConstantComposite 44 45 45 4(main): 2 Function None 3 5: Label 11(v0): 10(ptr) Variable Function 16(v1): 15(ptr) Variable Function 12: 9 Load 11(v0) 17: 14 Load 16(v1) 25: 24(ptr) AccessChain 21(matrixBuf) 23 CooperativeVectorOuterProductAccumulateNV 25 26 12 17 28(matrixLayout) 23 27 29: 9 Load 11(v0) 30: 14 Load 16(v1) 37: 36(ptr) AccessChain 35(matrixBuf2) 23 CooperativeVectorOuterProductAccumulateNV 37 26 29 30 38 23 27 39: 9 Load 11(v0) 40: 24(ptr) AccessChain 21(matrixBuf) 23 CooperativeVectorReduceSumAccumulateNV 40 26 39 41: 9 Load 11(v0) 42: 36(ptr) AccessChain 35(matrixBuf2) 23 CooperativeVectorReduceSumAccumulateNV 42 26 41 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.coopvecTraining_Error.comp.out000066400000000000000000000006161506534232700252520ustar00rootroot00000000000000spv.coopvecTraining_Error.comp ERROR: 0:19: 'coopVecOuterProductAccumulateNV' : cooperative vector basic types must match ERROR: 0:20: 'coopVecOuterProductAccumulateNV' : no matching overloaded function found ERROR: 0:21: 'coopVecReduceSumAccumulateNV' : no matching overloaded function found ERROR: 3 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.coopvec_Error.comp.out000066400000000000000000000017271506534232700235620ustar00rootroot00000000000000spv.coopvec_Error.comp ERROR: 0:25: 'inputInterpretation' : argument must be compile-time constant ERROR: 0:25: 'matrixInterpretation' : argument must be compile-time constant ERROR: 0:25: 'M' : argument must be compile-time constant ERROR: 0:25: 'K' : argument must be compile-time constant ERROR: 0:25: 'matrixLayout' : argument must be compile-time constant ERROR: 0:25: 'transpose' : argument must be compile-time constant ERROR: 0:28: 'x' : does not apply to this type: temp coopvecNV<5> float ERROR: 0:29: '[' : cooperative vector index out of range '5' ERROR: 0:31: 'v2' : expected two type parameters ERROR: 0:32: 'v3' : expected positive number of components ERROR: 0:33: '' : type parameter must be a non-negative integer ERROR: 0:33: 'v4' : expected positive number of components ERROR: 0:34: '' : syntax error, unexpected RIGHT_ANGLE, expecting LEFT_PAREN ERROR: 13 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.coopvecloadstore.comp.out000066400000000000000000000217261506534232700243270ustar00rootroot00000000000000spv.coopvecloadstore.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 79 Capability Shader Capability Float16 Capability Int64 Capability StorageUniformBufferBlock16 Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeVectorNV Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_vector" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_vector" Name 4 "main" Name 11 "tempArg" Name 15 "MatrixBuf" MemberName 15(MatrixBuf) 0 "matrixData" Name 17 "matrixBuf" Name 24 "v" Name 29 "tempArg" Name 32 "MatrixBuf2" MemberName 32(MatrixBuf2) 0 "matrixData" Name 34 "matrixBuf2" Name 41 "tempArg" Name 43 "MatrixBuf3" MemberName 43(MatrixBuf3) 0 "matrixData" Name 45 "matrixBuf3" Name 52 "tempArg" Name 55 "MatrixBuf4" MemberName 55(MatrixBuf4) 0 "matrixData" Name 57 "matrixBuf4" Name 66 "tempArg" Name 70 "matrixShmem" Decorate 14 ArrayStride 32 Decorate 15(MatrixBuf) Block MemberDecorate 15(MatrixBuf) 0 Offset 0 Decorate 17(matrixBuf) Binding 0 Decorate 17(matrixBuf) DescriptorSet 0 Decorate 31 ArrayStride 2 Decorate 32(MatrixBuf2) Block MemberDecorate 32(MatrixBuf2) 0 Offset 0 Decorate 34(matrixBuf2) Binding 0 Decorate 34(matrixBuf2) DescriptorSet 0 Decorate 42 ArrayStride 4 Decorate 43(MatrixBuf3) Block MemberDecorate 43(MatrixBuf3) 0 Offset 0 Decorate 45(matrixBuf3) Binding 0 Decorate 45(matrixBuf3) DescriptorSet 0 Decorate 54 ArrayStride 2 Decorate 55(MatrixBuf4) Block MemberDecorate 55(MatrixBuf4) 0 Offset 0 Decorate 57(matrixBuf4) DecorationAliasedPointerEXT Decorate 78 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 5 9: TypeCooperativeVectorNV 6(float) 8 10: TypePointer Function 9 12: TypeInt 64 0 13: TypeVector 12(int64_t) 3 14: TypeRuntimeArray 13(i64vec3) 15(MatrixBuf): TypeStruct 14 16: TypePointer StorageBuffer 15(MatrixBuf) 17(matrixBuf): 16(ptr) Variable StorageBuffer 18: TypeInt 32 1 19: 18(int) Constant 0 20: TypePointer StorageBuffer 14 22: 7(int) Constant 128 28: 7(int) Constant 144 30: TypeFloat 16 31: TypeRuntimeArray 30(float16_t) 32(MatrixBuf2): TypeStruct 31 33: TypePointer StorageBuffer 32(MatrixBuf2) 34(matrixBuf2): 33(ptr) Variable StorageBuffer 35: TypePointer StorageBuffer 31 42: TypeRuntimeArray 6(float) 43(MatrixBuf3): TypeStruct 42 44: TypePointer StorageBuffer 43(MatrixBuf3) 45(matrixBuf3): 44(ptr) Variable StorageBuffer 46: TypePointer StorageBuffer 42 TypeForwardPointer 53 PhysicalStorageBufferEXT 54: TypeRuntimeArray 30(float16_t) 55(MatrixBuf4): TypeStruct 54 53: TypePointer PhysicalStorageBufferEXT 55(MatrixBuf4) 56: TypePointer Function 53(ptr) 59: TypePointer PhysicalStorageBufferEXT 54 67: 7(int) Constant 100 68: TypeArray 7(int) 67 69: TypePointer Workgroup 68 70(matrixShmem): 69(ptr) Variable Workgroup 71: 7(int) Constant 2 75: TypeVector 7(int) 3 76: 7(int) Constant 64 77: 7(int) Constant 1 78: 75(ivec3) ConstantComposite 76 77 77 4(main): 2 Function None 3 5: Label 11(tempArg): 10(ptr) Variable Function 24(v): 10(ptr) Variable Function 29(tempArg): 10(ptr) Variable Function 41(tempArg): 10(ptr) Variable Function 52(tempArg): 10(ptr) Variable Function 57(matrixBuf4): 56(ptr) Variable Function 66(tempArg): 10(ptr) Variable Function 21: 20(ptr) AccessChain 17(matrixBuf) 19 23: 9 CooperativeVectorLoadNV 21 22 None Store 11(tempArg) 23 25: 9 Load 11(tempArg) Store 24(v) 25 26: 9 Load 24(v) 27: 20(ptr) AccessChain 17(matrixBuf) 19 CooperativeVectorStoreNV 27 28 26 None 36: 35(ptr) AccessChain 34(matrixBuf2) 19 37: 9 CooperativeVectorLoadNV 36 22 MakePointerVisibleKHR NonPrivatePointerKHR 8 Store 29(tempArg) 37 38: 9 Load 29(tempArg) Store 24(v) 38 39: 9 Load 24(v) 40: 35(ptr) AccessChain 34(matrixBuf2) 19 CooperativeVectorStoreNV 40 28 39 MakePointerAvailableKHR NonPrivatePointerKHR 8 47: 46(ptr) AccessChain 45(matrixBuf3) 19 48: 9 CooperativeVectorLoadNV 47 22 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 8 Store 41(tempArg) 48 49: 9 Load 41(tempArg) Store 24(v) 49 50: 9 Load 24(v) 51: 46(ptr) AccessChain 45(matrixBuf3) 19 CooperativeVectorStoreNV 51 28 50 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 8 58: 53(ptr) Load 57(matrixBuf4) 60: 59(ptr) AccessChain 58 19 61: 9 CooperativeVectorLoadNV 60 22 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 8 Store 52(tempArg) 61 62: 9 Load 52(tempArg) Store 24(v) 62 63: 9 Load 24(v) 64: 53(ptr) Load 57(matrixBuf4) 65: 59(ptr) AccessChain 64 19 CooperativeVectorStoreNV 65 28 63 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 8 72: 9 CooperativeVectorLoadNV 70(matrixShmem) 22 MakePointerVisibleKHR NonPrivatePointerKHR 71 Store 66(tempArg) 72 73: 9 Load 66(tempArg) Store 24(v) 73 74: 9 Load 24(v) CooperativeVectorStoreNV 70(matrixShmem) 28 74 MakePointerAvailableKHR NonPrivatePointerKHR 71 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dataOut.frag.out000066400000000000000000000031411506534232700223250ustar00rootroot00000000000000spv.dataOut.frag Validation failed // Module Version 10000 // 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" 12 16 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 12 "gl_FragData" Name 16 "Color" Decorate 16(Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 32 10: TypeArray 7(fvec4) 9 11: TypePointer Output 10 12(gl_FragData): 11(ptr) Variable Output 13: TypeInt 32 1 14: 13(int) Constant 1 15: TypePointer Input 7(fvec4) 16(Color): 15(ptr) Variable Input 18: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 17: 7(fvec4) Load 16(Color) 19: 18(ptr) AccessChain 12(gl_FragData) 14 Store 19 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dataOutIndirect.frag.out000066400000000000000000000044651506534232700240210ustar00rootroot00000000000000spv.dataOutIndirect.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 12 22 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 12 "fcolor" Name 14 "b" MemberName 14(b) 0 "i" Name 16 "bName" Name 22 "Color" Decorate 12(fcolor) Location 0 Decorate 14(b) Block MemberDecorate 14(b) 0 Offset 0 Decorate 16(bName) Binding 0 Decorate 16(bName) DescriptorSet 0 Decorate 22(Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 4 10: TypeArray 7(fvec4) 9 11: TypePointer Output 10 12(fcolor): 11(ptr) Variable Output 13: TypeInt 32 1 14(b): TypeStruct 13(int) 15: TypePointer Uniform 14(b) 16(bName): 15(ptr) Variable Uniform 17: 13(int) Constant 0 18: TypePointer Uniform 13(int) 21: TypePointer Input 7(fvec4) 22(Color): 21(ptr) Variable Input 24: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 16(bName) 17 20: 13(int) Load 19 23: 7(fvec4) Load 22(Color) 25: 24(ptr) AccessChain 12(fcolor) 20 Store 25 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dataOutIndirect.vert.out000066400000000000000000000057661506534232700240670ustar00rootroot00000000000000spv.dataOutIndirect.vert WARNING: 0:3: attribute deprecated in version 130; may be removed in future release // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 25 28 34 Source GLSL 140 Name 4 "main" Name 8 "i" Name 25 "colorOut" Name 28 "color" Name 34 "gl_Position" Decorate 25(colorOut) Location 0 Decorate 28(color) Location 0 Decorate 34(gl_Position) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 1 16: 6(int) Constant 5 17: TypeBool 19: TypeFloat 32 20: TypeVector 19(float) 4 21: TypeInt 32 0 22: 21(int) Constant 6 23: TypeArray 20(fvec4) 22 24: TypePointer Output 23 25(colorOut): 24(ptr) Variable Output 27: TypePointer Input 20(fvec4) 28(color): 27(ptr) Variable Input 30: TypePointer Output 20(fvec4) 34(gl_Position): 30(ptr) Variable Output 35: 6(int) Constant 2 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label 26: 6(int) Load 8(i) 29: 20(fvec4) Load 28(color) 31: 30(ptr) AccessChain 25(colorOut) 26 Store 31 29 Branch 13 13: Label 32: 6(int) Load 8(i) 33: 6(int) IAdd 32 9 Store 8(i) 33 Branch 10 12: Label 36: 30(ptr) AccessChain 25(colorOut) 35 37: 20(fvec4) Load 36 Store 34(gl_Position) 37 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dead-after-continue.vert.out000066400000000000000000000044251506534232700246110ustar00rootroot00000000000000spv.dead-after-continue.vert // 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" 20 28 Source GLSL 450 Name 4 "main" Name 8 "i" Name 20 "o" Name 28 "c" Decorate 20(o) Location 0 Decorate 28(c) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 5 17: TypeBool 19: TypePointer Output 6(int) 20(o): 19(ptr) Variable Output 21: 6(int) Constant 1 23: 6(int) Constant 2 26: 6(int) Constant 3 27: TypePointer Input 6(int) 28(c): 27(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label Store 20(o) 21 Branch 13 13: Label 24: 6(int) Load 8(i) 25: 6(int) IAdd 24 21 Store 8(i) 25 Branch 10 12: Label Store 20(o) 26 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dead-after-discard.frag.out000066400000000000000000000025121506534232700243300ustar00rootroot00000000000000spv.dead-after-discard.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 14 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 8 "o" Name 14 "c" Decorate 8(o) Location 0 Decorate 14(c) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(o): 7(ptr) Variable Output 9: 6(int) Constant 1 11: 6(int) Constant 3 12: TypeFloat 32 13: TypePointer Input 12(float) 14(c): 13(ptr) Variable Input 4(main): 2 Function None 3 5: Label Store 8(o) 9 Kill FunctionEnd glslang-16.0.0/Test/baseResults/spv.dead-after-loop-break.vert.out000066400000000000000000000055411506534232700250200ustar00rootroot00000000000000spv.dead-after-loop-break.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 8 25 Source GLSL 450 Name 4 "main" Name 8 "o" Name 11 "i" Name 25 "c" Decorate 8(o) Location 0 Decorate 25(c) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(o): 7(ptr) Variable Output 9: 6(int) Constant 1 10: TypePointer Function 6(int) 12: 6(int) Constant 0 19: 6(int) Constant 5 20: TypeBool 22: 6(int) Constant 2 24: TypePointer Input 6(int) 25(c): 24(ptr) Variable Input 30: 6(int) Constant 3 32: 6(int) Constant 4 35: 6(int) Constant 6 4(main): 2 Function None 3 5: Label 11(i): 10(ptr) Variable Function Store 8(o) 9 Store 11(i) 12 Branch 13 13: Label LoopMerge 15 16 None Branch 17 17: Label 18: 6(int) Load 11(i) 21: 20(bool) SLessThan 18 19 BranchConditional 21 14 15 14: Label Store 8(o) 22 23: 6(int) Load 11(i) 26: 6(int) Load 25(c) 27: 20(bool) IEqual 23 26 SelectionMerge 29 None BranchConditional 27 28 29 28: Label Store 8(o) 30 Branch 15 29: Label Store 8(o) 19 Branch 16 16: Label 33: 6(int) Load 11(i) 34: 6(int) IAdd 33 9 Store 11(i) 34 Branch 13 15: Label Store 8(o) 35 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dead-after-return.vert.out000066400000000000000000000023351506534232700243020ustar00rootroot00000000000000spv.dead-after-return.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 14 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 8 13 Source GLSL 450 Name 4 "main" Name 8 "o" Name 13 "c" Decorate 8(o) Location 0 Decorate 13(c) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(o): 7(ptr) Variable Output 9: 6(int) Constant 1 11: 6(int) Constant 3 12: TypePointer Input 6(int) 13(c): 12(ptr) Variable Input 4(main): 2 Function None 3 5: Label Store 8(o) 9 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dead-after-switch-break.vert.out000066400000000000000000000032711506534232700253460ustar00rootroot00000000000000spv.dead-after-switch-break.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 8 14 Source GLSL 450 Name 4 "main" Name 8 "c" Name 14 "o" Decorate 8(c) Location 0 Decorate 14(o) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Input 6(int) 8(c): 7(ptr) Variable Input 13: TypePointer Output 6(int) 14(o): 13(ptr) Variable Output 15: 6(int) Constant 1 17: 6(int) Constant 2 20: 6(int) Constant 3 4(main): 2 Function None 3 5: Label 9: 6(int) Load 8(c) SelectionMerge 12 None Switch 9 11 case 0: 10 11: Label Branch 12 10: Label Store 14(o) 15 Branch 12 12: Label Store 14(o) 20 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dead-complex-continue-after-return.vert.out000066400000000000000000000045111506534232700275670ustar00rootroot00000000000000spv.dead-complex-continue-after-return.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 11 30 Source GLSL 450 Name 4 "main" Name 8 "i" Name 11 "o" Name 30 "c" Decorate 11(o) Location 0 Decorate 30(c) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 10: TypePointer Output 6(int) 11(o): 10(ptr) Variable Output 12: 6(int) Constant 1 19: 6(int) Constant 5 20: TypeBool 22: 6(int) Constant 2 24: 6(int) Constant 3 27: 6(int) Constant 99 28: 6(int) Constant 4 29: TypePointer Input 6(int) 30(c): 29(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Store 11(o) 12 Store 8(i) 9 Branch 13 13: Label LoopMerge 15 16 None Branch 17 17: Label 18: 6(int) Load 8(i) 21: 20(bool) SLessThan 18 19 BranchConditional 21 14 15 14: Label Store 11(o) 22 Return 16: Label Branch 13 15: Label Store 11(o) 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.dead-complex-merge-after-return.vert.out000066400000000000000000000042151506534232700270430ustar00rootroot00000000000000spv.dead-complex-merge-after-return.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 11 27 Source GLSL 450 Name 4 "main" Name 8 "i" Name 11 "o" Name 27 "c" Decorate 11(o) Location 0 Decorate 27(c) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 10: TypePointer Output 6(int) 11(o): 10(ptr) Variable Output 12: 6(int) Constant 1 17: 6(int) Constant 2 19: 6(int) Constant 3 22: 6(int) Constant 5 23: TypeBool 25: 6(int) Constant 4 26: TypePointer Input 6(int) 27(c): 26(ptr) Variable Input 32: 6(int) Constant 100 34: 6(int) Constant 200 35: 6(int) Constant 300 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Store 11(o) 12 Branch 13 13: Label LoopMerge 15 16 None Branch 14 14: Label Store 11(o) 17 Return 16: Label Branch 13 15: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/spv.debugInfo.1.1.frag.out000066400000000000000000000421131506534232700231260ustar00rootroot00000000000000spv.debugInfo.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 187 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "main" 30 104 ExecutionMode 5 OriginUpperLeft 1: String "spv.debugInfo.frag" Source GLSL 450 1 "#version 450 struct S { int a; }; uniform ubuf { S s; }; uniform sampler2D s2d; layout(location = 0) in vec4 inv; layout(location = 0) out vec4 outv; vec4 foo(S s) { vec4 r = s.a * inv; ++r; if (r.x > 3.0) --r; else r *= 2; return r; } float testBranch(float x, float y) { float result = 0; bool b = x > 0; // branch with load if (b) { result += 1; } else { result -= 1; } // branch with expression if (x > y) { result += x - y; } // selection with load result += b ? 1 : -1; // selection with expression result += x < y ? y : float(b); return result; } void main() { outv = foo(s); outv += testBranch(inv.x, inv.y); outv += texture(s2d, vec2(0.5)); switch (s.a) { case 10: ++outv; break; case 20: outv = 2 * outv; ++outv; break; default: --outv; break; } for (int i = 0; i < 10; ++i) outv *= 3.0; outv.x < 10.0 ? outv = sin(outv) : outv = cos(outv); }" Name 5 "main" Name 8 "S" MemberName 8(S) 0 "a" Name 14 "foo(struct-S-i11;" Name 13 "s" Name 20 "testBranch(f1;f1;" Name 18 "x" Name 19 "y" Name 23 "r" Name 30 "inv" Name 56 "result" Name 59 "b" Name 104 "outv" Name 105 "S" MemberName 105(S) 0 "a" Name 106 "ubuf" MemberName 106(ubuf) 0 "s" Name 108 "" Name 109 "param" Name 116 "param" Name 120 "param" Name 131 "s2d" Name 161 "i" ModuleProcessed "no-storage-format" ModuleProcessed "resource-set-binding 3" ModuleProcessed "auto-map-bindings" ModuleProcessed "auto-map-locations" ModuleProcessed "client vulkan100" ModuleProcessed "target-env spirv1.3" ModuleProcessed "target-env vulkan1.1" ModuleProcessed "relaxed-errors" ModuleProcessed "suppress-warnings" ModuleProcessed "hlsl-offsets" ModuleProcessed "entry-point main" Decorate 30(inv) Location 0 Decorate 104(outv) Location 0 MemberDecorate 105(S) 0 Offset 0 Decorate 106(ubuf) Block MemberDecorate 106(ubuf) 0 Offset 0 Decorate 108 Binding 0 Decorate 108 DescriptorSet 3 Decorate 131(s2d) Binding 1 Decorate 131(s2d) DescriptorSet 3 3: TypeVoid 4: TypeFunction 3 7: TypeInt 32 1 8(S): TypeStruct 7(int) 9: TypePointer Function 8(S) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypeFunction 11(fvec4) 9(ptr) 16: TypePointer Function 10(float) 17: TypeFunction 10(float) 16(ptr) 16(ptr) 22: TypePointer Function 11(fvec4) 24: 7(int) Constant 0 25: TypePointer Function 7(int) 29: TypePointer Input 11(fvec4) 30(inv): 29(ptr) Variable Input 34: 10(float) Constant 1065353216 37: TypeInt 32 0 38: 37(int) Constant 0 41: 10(float) Constant 1077936128 42: TypeBool 50: 10(float) Constant 1073741824 57: 10(float) Constant 0 58: TypePointer Function 42(bool) 81: 7(int) Constant 1 82: 7(int) Constant 4294967295 103: TypePointer Output 11(fvec4) 104(outv): 103(ptr) Variable Output 105(S): TypeStruct 7(int) 106(ubuf): TypeStruct 105(S) 107: TypePointer Uniform 106(ubuf) 108: 107(ptr) Variable Uniform 110: TypePointer Uniform 105(S) 117: TypePointer Input 10(float) 121: 37(int) Constant 1 128: TypeImage 10(float) 2D sampled format:Unknown 129: TypeSampledImage 128 130: TypePointer UniformConstant 129 131(s2d): 130(ptr) Variable UniformConstant 133: TypeVector 10(float) 2 134: 10(float) Constant 1056964608 135: 133(fvec2) ConstantComposite 134 134 139: TypePointer Uniform 7(int) 168: 7(int) Constant 10 174: TypePointer Output 10(float) 177: 10(float) Constant 1092616192 Line 1 58 11 5(main): 3 Function None 4 6: Label 109(param): 9(ptr) Variable Function 116(param): 16(ptr) Variable Function 120(param): 16(ptr) Variable Function 161(i): 25(ptr) Variable Function 179: 22(ptr) Variable Function Line 1 60 0 111: 110(ptr) AccessChain 108 24 112: 105(S) Load 111 113: 7(int) CompositeExtract 112 0 114: 25(ptr) AccessChain 109(param) 24 Store 114 113 115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param) Store 104(outv) 115 Line 1 61 0 118: 117(ptr) AccessChain 30(inv) 38 119: 10(float) Load 118 Store 116(param) 119 122: 117(ptr) AccessChain 30(inv) 121 123: 10(float) Load 122 Store 120(param) 123 124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param) 125: 11(fvec4) Load 104(outv) 126: 11(fvec4) CompositeConstruct 124 124 124 124 127: 11(fvec4) FAdd 125 126 Store 104(outv) 127 Line 1 62 0 132: 129 Load 131(s2d) 136: 11(fvec4) ImageSampleImplicitLod 132 135 137: 11(fvec4) Load 104(outv) 138: 11(fvec4) FAdd 137 136 Store 104(outv) 138 Line 1 64 0 140: 139(ptr) AccessChain 108 24 24 141: 7(int) Load 140 SelectionMerge 145 None Switch 141 144 case 10: 142 case 20: 143 144: Label Line 1 73 0 156: 11(fvec4) Load 104(outv) 157: 11(fvec4) CompositeConstruct 34 34 34 34 158: 11(fvec4) FSub 156 157 Store 104(outv) 158 Line 1 74 0 Branch 145 142: Label Line 1 66 0 146: 11(fvec4) Load 104(outv) 147: 11(fvec4) CompositeConstruct 34 34 34 34 148: 11(fvec4) FAdd 146 147 Store 104(outv) 148 Line 1 67 0 Branch 145 143: Label Line 1 69 0 150: 11(fvec4) Load 104(outv) 151: 11(fvec4) VectorTimesScalar 150 50 Store 104(outv) 151 Line 1 70 0 152: 11(fvec4) Load 104(outv) 153: 11(fvec4) CompositeConstruct 34 34 34 34 154: 11(fvec4) FAdd 152 153 Store 104(outv) 154 Line 1 71 0 Branch 145 145: Label Line 1 77 0 Store 161(i) 24 Branch 162 162: Label Line 1 77 0 LoopMerge 164 165 None Branch 166 166: Label Line 1 77 0 167: 7(int) Load 161(i) 169: 42(bool) SLessThan 167 168 BranchConditional 169 163 164 163: Label Line 1 78 0 170: 11(fvec4) Load 104(outv) 171: 11(fvec4) VectorTimesScalar 170 41 Store 104(outv) 171 Branch 165 165: Label Line 1 77 0 172: 7(int) Load 161(i) 173: 7(int) IAdd 172 81 Store 161(i) 173 Branch 162 164: Label Line 1 80 0 175: 174(ptr) AccessChain 104(outv) 38 176: 10(float) Load 175 178: 42(bool) FOrdLessThan 176 177 SelectionMerge 181 None BranchConditional 178 180 184 180: Label Line 1 81 0 182: 11(fvec4) Load 104(outv) 183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182 Store 104(outv) 183 Store 179 183 Branch 181 184: Label Line 1 82 0 185: 11(fvec4) Load 104(outv) 186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185 Store 104(outv) 186 Store 179 186 Branch 181 181: Label Line 1 83 0 Return FunctionEnd Line 1 16 13 14(foo(struct-S-i11;): 11(fvec4) Function None 12 13(s): 9(ptr) FunctionParameter 15: Label 23(r): 22(ptr) Variable Function Line 1 18 0 26: 25(ptr) AccessChain 13(s) 24 27: 7(int) Load 26 28: 10(float) ConvertSToF 27 31: 11(fvec4) Load 30(inv) 32: 11(fvec4) VectorTimesScalar 31 28 Store 23(r) 32 Line 1 19 0 33: 11(fvec4) Load 23(r) 35: 11(fvec4) CompositeConstruct 34 34 34 34 36: 11(fvec4) FAdd 33 35 Store 23(r) 36 Line 1 20 0 39: 16(ptr) AccessChain 23(r) 38 40: 10(float) Load 39 43: 42(bool) FOrdGreaterThan 40 41 SelectionMerge 45 None BranchConditional 43 44 49 44: Label Line 1 21 0 46: 11(fvec4) Load 23(r) 47: 11(fvec4) CompositeConstruct 34 34 34 34 48: 11(fvec4) FSub 46 47 Store 23(r) 48 Branch 45 49: Label Line 1 23 0 51: 11(fvec4) Load 23(r) 52: 11(fvec4) VectorTimesScalar 51 50 Store 23(r) 52 Branch 45 45: Label Line 1 25 0 53: 11(fvec4) Load 23(r) ReturnValue 53 FunctionEnd Line 1 28 34 20(testBranch(f1;f1;): 10(float) Function None 17 18(x): 16(ptr) FunctionParameter 19(y): 16(ptr) FunctionParameter 21: Label 56(result): 16(ptr) Variable Function 59(b): 58(ptr) Variable Function 90: 16(ptr) Variable Function Line 1 30 0 Store 56(result) 57 Line 1 31 0 60: 10(float) Load 18(x) 61: 42(bool) FOrdGreaterThan 60 57 Store 59(b) 61 Line 1 34 0 62: 42(bool) Load 59(b) SelectionMerge 64 None BranchConditional 62 63 67 63: Label Line 1 35 0 65: 10(float) Load 56(result) 66: 10(float) FAdd 65 34 Store 56(result) 66 Branch 64 67: Label Line 1 38 0 68: 10(float) Load 56(result) 69: 10(float) FSub 68 34 Store 56(result) 69 Branch 64 64: Label Line 1 42 0 70: 10(float) Load 18(x) 71: 10(float) Load 19(y) 72: 42(bool) FOrdGreaterThan 70 71 SelectionMerge 74 None BranchConditional 72 73 74 73: Label Line 1 43 0 75: 10(float) Load 18(x) 76: 10(float) Load 19(y) 77: 10(float) FSub 75 76 78: 10(float) Load 56(result) 79: 10(float) FAdd 78 77 Store 56(result) 79 Branch 74 74: Label Line 1 47 0 80: 42(bool) Load 59(b) 83: 7(int) Select 80 81 82 84: 10(float) ConvertSToF 83 85: 10(float) Load 56(result) 86: 10(float) FAdd 85 84 Store 56(result) 86 Line 1 51 0 87: 10(float) Load 18(x) 88: 10(float) Load 19(y) 89: 42(bool) FOrdLessThan 87 88 SelectionMerge 92 None BranchConditional 89 91 94 91: Label Line 1 52 0 93: 10(float) Load 19(y) Store 90 93 Branch 92 94: Label Line 1 53 0 95: 42(bool) Load 59(b) 96: 10(float) Select 95 34 57 Store 90 96 Branch 92 92: Label Line 1 53 0 97: 10(float) Load 90 Line 1 51 0 98: 10(float) Load 56(result) 99: 10(float) FAdd 98 97 Store 56(result) 99 Line 1 55 0 100: 10(float) Load 56(result) ReturnValue 100 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debugInfo.frag.out000066400000000000000000000414561506534232700226410ustar00rootroot00000000000000spv.debugInfo.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 187 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "main" 30 104 ExecutionMode 5 OriginLowerLeft 1: String "spv.debugInfo.frag" Source GLSL 450 1 "// OpModuleProcessed no-storage-format // OpModuleProcessed resource-set-binding 3 // OpModuleProcessed auto-map-bindings // OpModuleProcessed auto-map-locations // OpModuleProcessed client opengl100 // OpModuleProcessed target-env opengl // OpModuleProcessed relaxed-errors // OpModuleProcessed suppress-warnings // OpModuleProcessed hlsl-offsets // OpModuleProcessed entry-point main #line 1 #version 450 struct S { int a; }; uniform ubuf { S s; }; uniform sampler2D s2d; layout(location = 0) in vec4 inv; layout(location = 0) out vec4 outv; vec4 foo(S s) { vec4 r = s.a * inv; ++r; if (r.x > 3.0) --r; else r *= 2; return r; } float testBranch(float x, float y) { float result = 0; bool b = x > 0; // branch with load if (b) { result += 1; } else { result -= 1; } // branch with expression if (x > y) { result += x - y; } // selection with load result += b ? 1 : -1; // selection with expression result += x < y ? y : float(b); return result; } void main() { outv = foo(s); outv += testBranch(inv.x, inv.y); outv += texture(s2d, vec2(0.5)); switch (s.a) { case 10: ++outv; break; case 20: outv = 2 * outv; ++outv; break; default: --outv; break; } for (int i = 0; i < 10; ++i) outv *= 3.0; outv.x < 10.0 ? outv = sin(outv) : outv = cos(outv); }" Name 5 "main" Name 8 "S" MemberName 8(S) 0 "a" Name 14 "foo(struct-S-i11;" Name 13 "s" Name 20 "testBranch(f1;f1;" Name 18 "x" Name 19 "y" Name 23 "r" Name 30 "inv" Name 56 "result" Name 59 "b" Name 104 "outv" Name 105 "S" MemberName 105(S) 0 "a" Name 106 "ubuf" MemberName 106(ubuf) 0 "s" Name 108 "" Name 109 "param" Name 116 "param" Name 120 "param" Name 131 "s2d" Name 161 "i" Decorate 30(inv) Location 0 Decorate 104(outv) Location 0 MemberDecorate 105(S) 0 Offset 0 Decorate 106(ubuf) Block MemberDecorate 106(ubuf) 0 Offset 0 Decorate 108 Binding 0 Decorate 108 DescriptorSet 3 Decorate 131(s2d) Location 0 Decorate 131(s2d) Binding 1 Decorate 131(s2d) DescriptorSet 3 3: TypeVoid 4: TypeFunction 3 7: TypeInt 32 1 8(S): TypeStruct 7(int) 9: TypePointer Function 8(S) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypeFunction 11(fvec4) 9(ptr) 16: TypePointer Function 10(float) 17: TypeFunction 10(float) 16(ptr) 16(ptr) 22: TypePointer Function 11(fvec4) 24: 7(int) Constant 0 25: TypePointer Function 7(int) 29: TypePointer Input 11(fvec4) 30(inv): 29(ptr) Variable Input 34: 10(float) Constant 1065353216 37: TypeInt 32 0 38: 37(int) Constant 0 41: 10(float) Constant 1077936128 42: TypeBool 50: 10(float) Constant 1073741824 57: 10(float) Constant 0 58: TypePointer Function 42(bool) 81: 7(int) Constant 1 82: 7(int) Constant 4294967295 103: TypePointer Output 11(fvec4) 104(outv): 103(ptr) Variable Output 105(S): TypeStruct 7(int) 106(ubuf): TypeStruct 105(S) 107: TypePointer Uniform 106(ubuf) 108: 107(ptr) Variable Uniform 110: TypePointer Uniform 105(S) 117: TypePointer Input 10(float) 121: 37(int) Constant 1 128: TypeImage 10(float) 2D sampled format:Unknown 129: TypeSampledImage 128 130: TypePointer UniformConstant 129 131(s2d): 130(ptr) Variable UniformConstant 133: TypeVector 10(float) 2 134: 10(float) Constant 1056964608 135: 133(fvec2) ConstantComposite 134 134 139: TypePointer Uniform 7(int) 168: 7(int) Constant 10 174: TypePointer Output 10(float) 177: 10(float) Constant 1092616192 Line 1 58 11 5(main): 3 Function None 4 6: Label 109(param): 9(ptr) Variable Function 116(param): 16(ptr) Variable Function 120(param): 16(ptr) Variable Function 161(i): 25(ptr) Variable Function 179: 22(ptr) Variable Function Line 1 60 0 111: 110(ptr) AccessChain 108 24 112: 105(S) Load 111 113: 7(int) CompositeExtract 112 0 114: 25(ptr) AccessChain 109(param) 24 Store 114 113 115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param) Store 104(outv) 115 Line 1 61 0 118: 117(ptr) AccessChain 30(inv) 38 119: 10(float) Load 118 Store 116(param) 119 122: 117(ptr) AccessChain 30(inv) 121 123: 10(float) Load 122 Store 120(param) 123 124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param) 125: 11(fvec4) Load 104(outv) 126: 11(fvec4) CompositeConstruct 124 124 124 124 127: 11(fvec4) FAdd 125 126 Store 104(outv) 127 Line 1 62 0 132: 129 Load 131(s2d) 136: 11(fvec4) ImageSampleImplicitLod 132 135 137: 11(fvec4) Load 104(outv) 138: 11(fvec4) FAdd 137 136 Store 104(outv) 138 Line 1 64 0 140: 139(ptr) AccessChain 108 24 24 141: 7(int) Load 140 SelectionMerge 145 None Switch 141 144 case 10: 142 case 20: 143 144: Label Line 1 73 0 156: 11(fvec4) Load 104(outv) 157: 11(fvec4) CompositeConstruct 34 34 34 34 158: 11(fvec4) FSub 156 157 Store 104(outv) 158 Line 1 74 0 Branch 145 142: Label Line 1 66 0 146: 11(fvec4) Load 104(outv) 147: 11(fvec4) CompositeConstruct 34 34 34 34 148: 11(fvec4) FAdd 146 147 Store 104(outv) 148 Line 1 67 0 Branch 145 143: Label Line 1 69 0 150: 11(fvec4) Load 104(outv) 151: 11(fvec4) VectorTimesScalar 150 50 Store 104(outv) 151 Line 1 70 0 152: 11(fvec4) Load 104(outv) 153: 11(fvec4) CompositeConstruct 34 34 34 34 154: 11(fvec4) FAdd 152 153 Store 104(outv) 154 Line 1 71 0 Branch 145 145: Label Line 1 77 0 Store 161(i) 24 Branch 162 162: Label Line 1 77 0 LoopMerge 164 165 None Branch 166 166: Label Line 1 77 0 167: 7(int) Load 161(i) 169: 42(bool) SLessThan 167 168 BranchConditional 169 163 164 163: Label Line 1 78 0 170: 11(fvec4) Load 104(outv) 171: 11(fvec4) VectorTimesScalar 170 41 Store 104(outv) 171 Branch 165 165: Label Line 1 77 0 172: 7(int) Load 161(i) 173: 7(int) IAdd 172 81 Store 161(i) 173 Branch 162 164: Label Line 1 80 0 175: 174(ptr) AccessChain 104(outv) 38 176: 10(float) Load 175 178: 42(bool) FOrdLessThan 176 177 SelectionMerge 181 None BranchConditional 178 180 184 180: Label Line 1 81 0 182: 11(fvec4) Load 104(outv) 183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182 Store 104(outv) 183 Store 179 183 Branch 181 184: Label Line 1 82 0 185: 11(fvec4) Load 104(outv) 186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185 Store 104(outv) 186 Store 179 186 Branch 181 181: Label Line 1 83 0 Return FunctionEnd Line 1 16 13 14(foo(struct-S-i11;): 11(fvec4) Function None 12 13(s): 9(ptr) FunctionParameter 15: Label 23(r): 22(ptr) Variable Function Line 1 18 0 26: 25(ptr) AccessChain 13(s) 24 27: 7(int) Load 26 28: 10(float) ConvertSToF 27 31: 11(fvec4) Load 30(inv) 32: 11(fvec4) VectorTimesScalar 31 28 Store 23(r) 32 Line 1 19 0 33: 11(fvec4) Load 23(r) 35: 11(fvec4) CompositeConstruct 34 34 34 34 36: 11(fvec4) FAdd 33 35 Store 23(r) 36 Line 1 20 0 39: 16(ptr) AccessChain 23(r) 38 40: 10(float) Load 39 43: 42(bool) FOrdGreaterThan 40 41 SelectionMerge 45 None BranchConditional 43 44 49 44: Label Line 1 21 0 46: 11(fvec4) Load 23(r) 47: 11(fvec4) CompositeConstruct 34 34 34 34 48: 11(fvec4) FSub 46 47 Store 23(r) 48 Branch 45 49: Label Line 1 23 0 51: 11(fvec4) Load 23(r) 52: 11(fvec4) VectorTimesScalar 51 50 Store 23(r) 52 Branch 45 45: Label Line 1 25 0 53: 11(fvec4) Load 23(r) ReturnValue 53 FunctionEnd Line 1 28 34 20(testBranch(f1;f1;): 10(float) Function None 17 18(x): 16(ptr) FunctionParameter 19(y): 16(ptr) FunctionParameter 21: Label 56(result): 16(ptr) Variable Function 59(b): 58(ptr) Variable Function 90: 16(ptr) Variable Function Line 1 30 0 Store 56(result) 57 Line 1 31 0 60: 10(float) Load 18(x) 61: 42(bool) FOrdGreaterThan 60 57 Store 59(b) 61 Line 1 34 0 62: 42(bool) Load 59(b) SelectionMerge 64 None BranchConditional 62 63 67 63: Label Line 1 35 0 65: 10(float) Load 56(result) 66: 10(float) FAdd 65 34 Store 56(result) 66 Branch 64 67: Label Line 1 38 0 68: 10(float) Load 56(result) 69: 10(float) FSub 68 34 Store 56(result) 69 Branch 64 64: Label Line 1 42 0 70: 10(float) Load 18(x) 71: 10(float) Load 19(y) 72: 42(bool) FOrdGreaterThan 70 71 SelectionMerge 74 None BranchConditional 72 73 74 73: Label Line 1 43 0 75: 10(float) Load 18(x) 76: 10(float) Load 19(y) 77: 10(float) FSub 75 76 78: 10(float) Load 56(result) 79: 10(float) FAdd 78 77 Store 56(result) 79 Branch 74 74: Label Line 1 47 0 80: 42(bool) Load 59(b) 83: 7(int) Select 80 81 82 84: 10(float) ConvertSToF 83 85: 10(float) Load 56(result) 86: 10(float) FAdd 85 84 Store 56(result) 86 Line 1 51 0 87: 10(float) Load 18(x) 88: 10(float) Load 19(y) 89: 42(bool) FOrdLessThan 87 88 SelectionMerge 92 None BranchConditional 89 91 94 91: Label Line 1 52 0 93: 10(float) Load 19(y) Store 90 93 Branch 92 94: Label Line 1 53 0 95: 42(bool) Load 59(b) 96: 10(float) Select 95 34 57 Store 90 96 Branch 92 92: Label Line 1 53 0 97: 10(float) Load 90 Line 1 51 0 98: 10(float) Load 56(result) 99: 10(float) FAdd 98 97 Store 56(result) 99 Line 1 55 0 100: 10(float) Load 56(result) ReturnValue 100 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debugPrintf.frag.out000066400000000000000000000027571506534232700232110ustar00rootroot00000000000000spv.debugPrintf.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "GLSL.std.450" 11: ExtInstImport "NonSemantic.DebugPrintf" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft 6: String "ASDF \ ? \ %d %d %d" 13: String "ABAZ" 15: String "B#$B1Z" Source GLSL 450 SourceExtension "GL_EXT_debug_printf" Name 4 "main" 2: TypeVoid 3: TypeFunction 2 7: TypeInt 32 1 8: 7(int) Constant 1 9: 7(int) Constant 2 10: 7(int) Constant 3 4(main): 2 Function None 3 5: Label 12: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 6 8 9 10 14: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 13 16: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 15 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debugPrintf_Error.frag.out000066400000000000000000000003601506534232700243460ustar00rootroot00000000000000spv.debugPrintf_Error.frag ERROR: 0:7: 'string' : Expected hex value in escape sequence ERROR: 0:10: 'string' : Invalid escape sequence ERROR: 2 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out000066400000000000000000000332371506534232700256040ustar00rootroot00000000000000spv.debuginfo.bufferref.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 148 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_non_semantic_info" Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_relaxed_extended_instruction" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 14 "main" 82 135 ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.bufferref.glsl.frag" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 450 core #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430) buffer MeshVertexPositions { float data[]; }; struct Mesh { MeshVertexPositions positions; }; layout(set = 0, binding = 0) readonly buffer PerPass_meshes { Mesh data[]; } perPass_meshes; layout(location = 0) out vec4 out_fragColor; layout(location = 0) in flat uint tri_idx0; void main() { Mesh meshData = perPass_meshes.data[tri_idx0]; vec3 vertex_pos0 = vec3(meshData.positions.data[3 * tri_idx0], meshData.positions.data[3 * tri_idx0 + 1], meshData.positions.data[3 * tri_idx0 + 2]); out_fragColor = vec4(vertex_pos0, 1.0); } " 33: String "positions" 37: String "Mesh" 40: String "float" 46: String "data" 49: String "MeshVertexPositions" 55: String "meshData" 69: String "PerPass_meshes" 75: String "perPass_meshes" 77: String "int" 84: String "tri_idx0" 100: String "vertex_pos0" 137: String "out_fragColor" SourceExtension "GL_EXT_buffer_reference" Name 14 "main" Name 31 "Mesh" MemberName 31(Mesh) 0 "positions" Name 44 "MeshVertexPositions" MemberName 44(MeshVertexPositions) 0 "data" Name 53 "meshData" Name 59 "Mesh" MemberName 59(Mesh) 0 "positions" Name 64 "PerPass_meshes" MemberName 64(PerPass_meshes) 0 "data" Name 73 "perPass_meshes" Name 82 "tri_idx0" Name 98 "vertex_pos0" Name 135 "out_fragColor" Decorate 42 ArrayStride 4 Decorate 44(MeshVertexPositions) Block MemberDecorate 44(MeshVertexPositions) 0 Offset 0 Decorate 53(meshData) DecorationAliasedPointerEXT MemberDecorate 59(Mesh) 0 Offset 0 Decorate 62 ArrayStride 8 Decorate 64(PerPass_meshes) Block MemberDecorate 64(PerPass_meshes) 0 NonWritable MemberDecorate 64(PerPass_meshes) 0 Offset 0 Decorate 73(perPass_meshes) NonWritable Decorate 73(perPass_meshes) Binding 0 Decorate 73(perPass_meshes) DescriptorSet 0 Decorate 82(tri_idx0) Flat Decorate 82(tri_idx0) Location 0 Decorate 135(out_fragColor) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 20 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 TypeForwardPointer 28 PhysicalStorageBufferEXT 29: 7(int) Constant 5349 30: 4 ExtInstWithForwardRefsKHR 1(NonSemantic.Shader.DebugInfo.100) 3 48 29 12 31(Mesh): TypeStruct 28 34: 7(int) Constant 9 35: 7(int) Constant 23 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 33 30 18 34 35 12 12 13 38: 7(int) Constant 21 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 37 22 18 38 12 21 37 12 13 32 39: TypeFloat 32 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 40 10 13 12 42: TypeRuntimeArray 39(float) 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 41 12 44(MeshVertexPositions): TypeStruct 42 47: 7(int) Constant 5 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 43 18 47 34 12 12 13 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 49 22 18 38 12 21 49 12 13 45 28: TypePointer PhysicalStorageBufferEXT 44(MeshVertexPositions) 50: TypePointer Function 31(Mesh) 51: 7(int) Constant 7 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 36 51 12 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 36 18 38 12 17 23 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 59(Mesh): TypeStruct 28(ptr) 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 33 30 18 34 35 12 12 13 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 37 22 18 38 12 21 37 12 13 60 62: TypeRuntimeArray 59(Mesh) 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 12 64(PerPass_meshes): TypeStruct 62 66: 7(int) Constant 13 67: 7(int) Constant 8 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 63 18 66 67 12 12 13 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 69 22 18 38 12 21 69 12 13 65 70: TypePointer StorageBuffer 64(PerPass_meshes) 71: 7(int) Constant 12 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 68 71 12 73(perPass_meshes): 70(ptr) Variable StorageBuffer 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 75 68 18 38 12 21 75 73(perPass_meshes) 67 76: TypeInt 32 1 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 77 10 23 12 79: 76(int) Constant 0 80: TypePointer Input 7(int) 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 82(tri_idx0): 80(ptr) Variable Input 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 9 18 38 12 21 84 82(tri_idx0) 67 86: TypePointer StorageBuffer 59(Mesh) 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 71 12 91: TypePointer Function 28(ptr) 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 51 12 94: TypeVector 39(float) 3 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 41 13 96: TypePointer Function 94(fvec3) 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 95 51 12 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 100 95 18 35 12 17 23 107: TypePointer PhysicalStorageBufferEXT 39(float) 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 29 12 113: 7(int) Constant 24 122: 7(int) Constant 25 131: TypeVector 39(float) 4 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 41 23 133: TypePointer Output 131(fvec4) 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 132 13 12 135(out_fragColor): 133(ptr) Variable Output 138: 7(int) Constant 27 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 137 132 18 138 12 21 137 135(out_fragColor) 67 141: 39(float) Constant 1065353216 147: 7(int) Constant 28 14(main): 4 Function None 5 15: Label 53(meshData): 50(ptr) Variable Function 98(vertex_pos0): 96(ptr) Variable Function 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 38 38 12 12 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 54 53(meshData) 57 85: 7(int) Load 82(tri_idx0) 88: 86(ptr) AccessChain 73(perPass_meshes) 79 85 89: 59(Mesh) Load 88 90: 28(ptr) CompositeExtract 89 0 93: 91(ptr) AccessChain 53(meshData) 79 Store 93 90 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 35 35 12 12 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 99 98(vertex_pos0) 57 103: 91(ptr) AccessChain 53(meshData) 79 104: 28(ptr) Load 103 105: 7(int) Load 82(tri_idx0) 106: 7(int) IMul 13 105 109: 107(ptr) AccessChain 104 79 106 110: 39(float) Load 109 Aligned 4 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 113 113 12 12 111: 91(ptr) AccessChain 53(meshData) 79 114: 28(ptr) Load 111 115: 7(int) Load 82(tri_idx0) 116: 7(int) IMul 13 115 117: 7(int) IAdd 116 22 118: 107(ptr) AccessChain 114 79 117 119: 39(float) Load 118 Aligned 4 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 122 122 12 12 120: 91(ptr) AccessChain 53(meshData) 79 123: 28(ptr) Load 120 124: 7(int) Load 82(tri_idx0) 125: 7(int) IMul 13 124 126: 7(int) IAdd 125 24 127: 107(ptr) AccessChain 123 79 126 128: 39(float) Load 127 Aligned 4 129: 94(fvec3) CompositeConstruct 110 119 128 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 35 35 12 12 Store 98(vertex_pos0) 129 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 138 138 12 12 139: 94(fvec3) Load 98(vertex_pos0) 142: 39(float) CompositeExtract 139 0 143: 39(float) CompositeExtract 139 1 144: 39(float) CompositeExtract 139 2 145: 131(fvec4) CompositeConstruct 142 143 144 141 Store 135(out_fragColor) 145 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 147 147 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out000066400000000000000000000144241506534232700263430ustar00rootroot00000000000000spv.debuginfo.const_params.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 14 "main" ExecutionMode 14 LocalSize 1 1 1 2: String "spv.debuginfo.const_params.glsl.comp" 8: String "uint" 17: String "float" 35: String "function" 38: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 450 void function( const float f, const vec2 f2, const vec3 f3, const vec4 f4) { } void main() { function(0, vec2(0), vec3(0), vec4(0)); } " 43: String "f" 49: String "f2" 52: String "f3" 55: String "f4" 57: String "main" Name 14 "main" Name 33 "function(f1;vf2;vf3;vf4;" Name 29 "f" Name 30 "f2" Name 31 "f3" Name 32 "f4" 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypeVector 16(float) 2 20: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 22: TypeVector 16(float) 3 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 24: TypeVector 16(float) 4 25: 7(int) Constant 4 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 25 27: TypeFunction 4 16(float) 19(fvec2) 22(fvec3) 24(fvec4) 28: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18 21 23 26 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 38 39: 7(int) Constant 7 41: 7(int) Constant 1 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 41 25 37 20 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 35 28 37 39 12 40 35 13 39 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 18 37 39 12 36 25 41 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 21 37 39 12 36 25 20 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 23 37 39 12 36 25 13 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 26 37 39 12 36 25 25 59: 7(int) Constant 11 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 6 37 59 12 40 57 13 59 64: 16(float) Constant 0 65: 19(fvec2) ConstantComposite 64 64 66: 22(fvec3) ConstantComposite 64 64 64 67: 24(fvec4) ConstantComposite 64 64 64 64 70: 7(int) Constant 13 72: 7(int) Constant 14 14(main): 4 Function None 5 15: Label 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 59 59 12 12 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 14(main) 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 70 70 12 12 68: 4 FunctionCall 33(function(f1;vf2;vf3;vf4;) 64 65 66 67 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 72 72 12 12 Return FunctionEnd 33(function(f1;vf2;vf3;vf4;): 4 Function None 27 29(f): 16(float) FunctionParameter 30(f2): 19(fvec2) FunctionParameter 31(f3): 22(fvec3) FunctionParameter 32(f4): 24(fvec4) FunctionParameter 34: Label 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 42 29(f) 45 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 48 30(f2) 45 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 51 31(f3) 45 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 54 32(f4) 45 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 33(function(f1;vf2;vf3;vf4;) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.continued.glsl.vert.out000066400000000000000000020140171506534232700256640ustar00rootroot00000000000000spv.debuginfo.continued.glsl.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 71 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 14 "main" 55 2: String "spv.debuginfo.continued.glsl.vert" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 460 // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceCont" 20: String "inued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and req" 22: String "uire the use of DebugSourceContinued. void main() { gl_Position = vec4(1.0); } " 33: String "float" 41: String "gl_Position" 44: String "gl_PointSize" 47: String "gl_CullDistance" 51: String "gl_PerVertex" 57: String "" 60: String "int" Name 14 "main" Name 39 "gl_PerVertex" MemberName 39(gl_PerVertex) 0 "gl_Position" MemberName 39(gl_PerVertex) 1 "gl_PointSize" MemberName 39(gl_PerVertex) 2 "gl_ClipDistance" MemberName 39(gl_PerVertex) 3 "gl_CullDistance" Name 55 "" Decorate 39(gl_PerVertex) Block MemberDecorate 39(gl_PerVertex) 0 BuiltIn Position MemberDecorate 39(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 39(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 39(gl_PerVertex) 3 BuiltIn CullDistance 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 102(DebugSourceContinued) 20 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 102(DebugSourceContinued) 22 24: 7(int) Constant 3774 26: 7(int) Constant 1 27: 7(int) Constant 4 28: 7(int) Constant 2 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 26 27 18 28 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 24 12 25 16 13 24 32: TypeFloat 32 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 33 10 13 12 35: TypeVector 32(float) 4 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 34 27 37: TypeArray 32(float) 26 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 34 26 39(gl_PerVertex): TypeStruct 35(fvec4) 32(float) 37 37 42: 7(int) Constant 24 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 41 36 18 26 42 12 12 13 45: 7(int) Constant 42 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 44 34 18 26 45 12 12 13 48: 7(int) Constant 85 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 38 18 26 48 12 12 13 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 38 18 26 48 12 12 13 52: 7(int) Constant 3776 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 26 18 52 12 25 51 12 13 40 43 46 49 53: TypePointer Output 39(gl_PerVertex) 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 13 12 55: 53(ptr) Variable Output 58: 7(int) Constant 8 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 57 50 18 52 12 25 57 55 58 59: TypeInt 32 1 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 60 10 27 12 62: 59(int) Constant 0 63: 32(float) Constant 1065353216 64: 35(fvec4) ConstantComposite 63 63 63 63 65: TypePointer Output 35(fvec4) 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 36 13 12 70: 7(int) Constant 3777 14(main): 4 Function None 5 15: Label 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 24 24 12 12 29: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 52 52 12 12 67: 65(ptr) AccessChain 55 62 Store 67 64 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 70 70 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.coopmatKHR.comp.out000066400000000000000000001111601506534232700247140ustar00rootroot00000000000000spv.debuginfo.coopmatKHR.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 367 Capability Shader Capability Float16 Capability StorageUniformBufferBlock16 Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_non_semantic_info" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 14 "main" ExecutionMode 14 LocalSize 1 1 1 2: String "spv.debuginfo.coopmatKHR.comp" 8: String "uint" 16: String "main" 19: String "/* * Copyright (c) 2019-2024, NVIDIA CORPORATION. All rights reserved. * * 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 core #pragma use_vulkan_memory_model #extension GL_EXT_scalar_block_layout : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_control_flow_attributes : enable layout(constant_id = 0) const uint lM = 1; layout(constant_id = 1) const uint lN = 1; layout(constant_id = 2) const uint lK = 1; layout(constant_id = 3) const uint TILE_M = 1; layout(constant_id = 4) const uint TILE_N = 1; layout(constant_id = 5) const uint TILE_K = 1; layout(constant_id = 6) const uint K = 1; #define A_BITS 16 #define A_TYPE float16_t #define C_BITS 16 #define C_TYPE float16_t buffer Output { C_TYPE x[]; } outputO; shared uvec4 Ash[128]; shared uvec4 Bsh[128]; const uint C_ROWS = 2; const uint C_COLS = 2; coopmat result[C_ROWS][C_COLS]; void main() { [[unroll]] for (uint i = 0; i < C_ROWS; ++i) { [[unroll]] for (uint j = 0; j < C_COLS; ++j) { result[i][j] = coopmat(0.0); } } for (uint chunkK = 0; chunkK < K; chunkK += TILE_K) { [[unroll]] for (uint k = 0; k < TILE_K / lK; ++k) { coopmat matA[C_ROWS]; [[unroll]] for (uint i = 0; i < C_ROWS; ++i) { coopMatLoad(matA[i], Ash, 0, 0, gl_CooperativeMatrixLayoutRowMajor); } coopmat matB; [[unroll]] for (uint j = 0; j < C_COLS; ++j) { coopMatLoad(matB, Bsh, 0, 0, gl_CooperativeMatrixLayoutRowMajor); [[unroll]] for (uint i = 0; i < C_ROWS; ++i) { result[i][j] = coopMatMulAdd(matA[i], matB, result[i][j]); } } } } [[unroll]] for (uint i = 0; i < C_ROWS; ++i) { [[unroll]] for (uint j = 0; j < C_COLS; ++j) { coopMatStore(result[i][j], outputO.x, 0, 0, gl_CooperativeMatrixLayoutRowMajor); } } } " 33: String "i" 49: String "bool" 54: String "j" 71: String "float16_t" 78: String "coopmat" 80: String "@coopmat" 90: String "result" 106: String "int" 116: String "chunkK" 135: String "k" 173: String "coopmat" 175: String "@coopmat" 182: String "matA" 201: String "Ash" 230: String "coopmat" 232: String "@coopmat" 237: String "matB" 243: String "Bsh" 340: String "x" 344: String "Output" 350: String "outputO" SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_control_flow_attributes" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 14 "main" Name 31 "i" Name 52 "j" Name 74 "lM" Name 75 "lN" Name 88 "result" Name 114 "chunkK" Name 131 "K" Name 133 "k" Name 150 "TILE_K" Name 151 "lK" Name 154 "i" Name 180 "matA" Name 199 "Ash" Name 211 "j" Name 235 "matB" Name 241 "Bsh" Name 248 "i" Name 295 "i" Name 312 "j" Name 338 "Output" MemberName 338(Output) 0 "x" Name 348 "outputO" Name 365 "TILE_M" Name 366 "TILE_N" ModuleProcessed "auto-map-locations" ModuleProcessed "auto-map-bindings" ModuleProcessed "client vulkan100" ModuleProcessed "target-env spirv1.3" ModuleProcessed "target-env vulkan1.1" ModuleProcessed "keep-uncalled" ModuleProcessed "entry-point main" ModuleProcessed "use-vulkan-memory-model" ModuleProcessed "use-vulkan-memory-model" ModuleProcessed "use-vulkan-memory-model" ModuleProcessed "use-vulkan-memory-model" Decorate 74(lM) SpecId 0 Decorate 75(lN) SpecId 1 Decorate 131(K) SpecId 6 Decorate 150(TILE_K) SpecId 5 Decorate 151(lK) SpecId 2 Decorate 336 ArrayStride 2 Decorate 338(Output) Block MemberDecorate 338(Output) 0 Offset 0 Decorate 348(outputO) Binding 0 Decorate 348(outputO) DescriptorSet 0 Decorate 365(TILE_M) SpecId 3 Decorate 366(TILE_N) SpecId 4 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 55 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 28: TypePointer Function 7(int) 29: 7(int) Constant 7 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 29 12 34: 7(int) Constant 57 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 34 12 17 23 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 48: TypeBool 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 10 24 12 55: 7(int) Constant 58 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 54 9 18 55 12 17 23 70: TypeFloat 16 73: 7(int) Constant 16 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 71 73 13 12 74(lM): 7(int) SpecConstant 1 75(lN): 7(int) SpecConstant 1 76: TypeCooperativeMatrixKHR 70(float16_t) 13 74(lM) 75(lN) 24 79: 7(int) Constant 53 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 78 22 18 79 12 21 80 81 13 82: TypeArray 76 24 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 77 24 84: TypeArray 82 24 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 83 24 86: TypePointer Private 84 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 85 11 12 88(result): 86(ptr) Variable Private 91: 7(int) Constant 8 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 90 85 18 79 12 21 90 88(result) 91 95: 7(int) Constant 59 97:70(float16_t) Constant 0 98: 76 ConstantComposite 97 99: TypePointer Private 76 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 77 11 12 105: TypeInt 32 1 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 106 10 23 12 108: 105(int) Constant 1 117: 7(int) Constant 63 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 116 9 18 117 12 17 23 131(K): 7(int) SpecConstant 1 136: 7(int) Constant 64 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 135 9 18 136 12 17 23 150(TILE_K): 7(int) SpecConstant 1 151(lK): 7(int) SpecConstant 1 152: 7(int) SpecConstantOp 134 150(TILE_K) 151(lK) 156: 7(int) Constant 67 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 156 12 17 23 171: TypeCooperativeMatrixKHR 70(float16_t) 13 74(lM) 151(lK) 12 174: 7(int) Constant 66 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 22 18 174 12 21 175 81 13 176: TypeArray 171 24 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 172 24 178: TypePointer Function 176 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 177 29 12 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 182 177 18 174 12 17 23 188: 7(int) Constant 68 189: TypePointer Function 171 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 172 29 12 192: TypeVector 7(int) 4 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 23 194: 7(int) Constant 128 195: TypeArray 192(ivec4) 194 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 193 194 197: TypePointer Workgroup 195 198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 196 23 12 199(Ash): 197(ptr) Variable Workgroup 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 201 196 18 188 12 21 201 199(Ash) 91 202: TypePointer Workgroup 192(ivec4) 203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 193 23 12 205: 105(int) Constant 0 213: 7(int) Constant 72 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 54 9 18 213 12 17 23 228: TypeCooperativeMatrixKHR 70(float16_t) 13 151(lK) 75(lN) 22 231: 7(int) Constant 71 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 230 22 18 231 12 21 232 81 13 233: TypePointer Function 228 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 229 29 12 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 229 18 231 12 17 23 241(Bsh): 197(ptr) Variable Workgroup 244: 7(int) Constant 73 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 243 196 18 244 12 21 243 241(Bsh) 91 250: 7(int) Constant 75 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 250 12 17 23 267: 7(int) Constant 76 297: 7(int) Constant 82 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 297 12 17 23 314: 7(int) Constant 83 313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 54 9 18 314 12 17 23 332: 7(int) Constant 84 336: TypeRuntimeArray 70(float16_t) 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 72 12 338(Output): TypeStruct 336 341: 7(int) Constant 46 342: 7(int) Constant 24 339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 340 337 18 341 342 12 12 13 343: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 344 22 18 332 12 21 344 12 13 339 345: TypePointer StorageBuffer 338(Output) 346: 7(int) Constant 12 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 343 346 12 348(outputO): 345(ptr) Variable StorageBuffer 349: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 350 343 18 332 12 21 350 348(outputO) 91 351: TypePointer StorageBuffer 70(float16_t) 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 346 12 364: 7(int) Constant 87 365(TILE_M): 7(int) SpecConstant 1 366(TILE_N): 7(int) SpecConstant 1 14(main): 4 Function None 5 15: Label 31(i): 28(ptr) Variable Function 52(j): 28(ptr) Variable Function 114(chunkK): 28(ptr) Variable Function 133(k): 28(ptr) Variable Function 154(i): 28(ptr) Variable Function 180(matA): 178(ptr) Variable Function 211(j): 28(ptr) Variable Function 235(matB): 233(ptr) Variable Function 248(i): 28(ptr) Variable Function 295(i): 28(ptr) Variable Function 312(j): 28(ptr) Variable Function 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 32 31(i) 36 Store 31(i) 12 Branch 38 38: Label 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12 LoopMerge 40 41 Unroll Branch 44 44: Label 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12 45: 7(int) Load 31(i) 51: 48(bool) ULessThan 45 24 BranchConditional 51 39 40 39: Label 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 53 52(j) 36 Store 52(j) 12 Branch 59 59: Label 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12 LoopMerge 61 62 Unroll Branch 65 65: Label 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12 66: 7(int) Load 52(j) 69: 48(bool) ULessThan 66 24 BranchConditional 69 60 61 60: Label 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 95 95 12 12 92: 7(int) Load 31(i) 96: 7(int) Load 52(j) 101: 99(ptr) AccessChain 88(result) 92 96 Store 101 98 Branch 62 62: Label 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12 102: 7(int) Load 52(j) 109: 7(int) IAdd 102 108 Store 52(j) 109 Branch 59 61: Label Branch 41 41: Label 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12 110: 7(int) Load 31(i) 113: 7(int) IAdd 110 108 Store 31(i) 113 Branch 38 40: Label 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 115 114(chunkK) 36 Store 114(chunkK) 12 Branch 121 121: Label 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12 LoopMerge 123 124 None Branch 127 127: Label 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12 128: 7(int) Load 114(chunkK) 132: 48(bool) ULessThan 128 131(K) BranchConditional 132 122 123 122: Label 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12 137: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 134 133(k) 36 Store 133(k) 12 Branch 140 140: Label 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12 LoopMerge 142 143 Unroll Branch 146 146: Label 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12 147: 7(int) Load 133(k) 153: 48(bool) ULessThan 147 152 BranchConditional 153 141 142 141: Label 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 155 154(i) 36 Store 154(i) 12 Branch 160 160: Label 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 LoopMerge 162 163 Unroll Branch 166 166: Label 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 167: 7(int) Load 154(i) 170: 48(bool) ULessThan 167 24 BranchConditional 170 161 162 161: Label 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 174 174 12 12 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 181 180(matA) 36 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 188 188 12 12 186: 7(int) Load 154(i) 191: 189(ptr) AccessChain 180(matA) 186 204: 202(ptr) AccessChain 199(Ash) 12 206: 171 CooperativeMatrixLoadKHR 204 205 12 MakePointerVisibleKHR NonPrivatePointerKHR 24 Store 191 206 Branch 163 163: Label 208: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 207: 7(int) Load 154(i) 210: 7(int) IAdd 207 108 Store 154(i) 210 Branch 160 162: Label 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 212 211(j) 36 Store 211(j) 12 Branch 217 217: Label 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 LoopMerge 219 220 Unroll Branch 223 223: Label 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 224: 7(int) Load 211(j) 227: 48(bool) ULessThan 224 24 BranchConditional 227 218 219 218: Label 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 231 231 12 12 238: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(matB) 36 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 244 244 12 12 245: 202(ptr) AccessChain 241(Bsh) 12 247: 228 CooperativeMatrixLoadKHR 245 205 12 MakePointerVisibleKHR NonPrivatePointerKHR 24 Store 235(matB) 247 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 250 250 12 12 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(i) 36 Store 248(i) 12 Branch 253 253: Label 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 250 250 12 12 LoopMerge 255 256 Unroll Branch 259 259: Label 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 250 250 12 12 260: 7(int) Load 248(i) 263: 48(bool) ULessThan 260 24 BranchConditional 263 254 255 254: Label 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 267 267 12 12 264: 7(int) Load 248(i) 268: 7(int) Load 211(j) 269: 7(int) Load 248(i) 270: 189(ptr) AccessChain 180(matA) 269 271: 171 Load 270 272: 228 Load 235(matB) 273: 7(int) Load 248(i) 274: 7(int) Load 211(j) 275: 99(ptr) AccessChain 88(result) 273 274 276: 76 Load 275 277: 76 CooperativeMatrixMulAddKHR 271 272 276 278: 99(ptr) AccessChain 88(result) 264 268 Store 278 277 Branch 256 256: Label 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 250 250 12 12 279: 7(int) Load 248(i) 282: 7(int) IAdd 279 108 Store 248(i) 282 Branch 253 255: Label Branch 220 220: Label 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 283: 7(int) Load 211(j) 286: 7(int) IAdd 283 108 Store 211(j) 286 Branch 217 219: Label Branch 143 143: Label 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12 287: 7(int) Load 133(k) 290: 7(int) IAdd 287 108 Store 133(k) 290 Branch 140 142: Label Branch 124 124: Label 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12 291: 7(int) Load 114(chunkK) 294: 7(int) IAdd 291 150(TILE_K) Store 114(chunkK) 294 Branch 121 123: Label 299: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 296 295(i) 36 Store 295(i) 12 Branch 301 301: Label 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 LoopMerge 303 304 Unroll Branch 307 307: Label 309: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 308: 7(int) Load 295(i) 311: 48(bool) ULessThan 308 24 BranchConditional 311 302 303 302: Label 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 314 314 12 12 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 313 312(j) 36 Store 312(j) 12 Branch 318 318: Label 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 314 314 12 12 LoopMerge 320 321 Unroll Branch 324 324: Label 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 314 314 12 12 325: 7(int) Load 312(j) 328: 48(bool) ULessThan 325 24 BranchConditional 328 319 320 319: Label 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 332 332 12 12 329: 7(int) Load 295(i) 333: 7(int) Load 312(j) 334: 99(ptr) AccessChain 88(result) 329 333 335: 76 Load 334 353: 351(ptr) AccessChain 348(outputO) 205 12 CooperativeMatrixStoreKHR 353 335 205 12 None Branch 321 321: Label 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 356: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 314 314 12 12 354: 7(int) Load 312(j) 357: 7(int) IAdd 354 108 Store 312(j) 357 Branch 318 320: Label Branch 304 304: Label 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 360: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 358: 7(int) Load 295(i) 361: 7(int) IAdd 358 108 Store 295(i) 361 Branch 301 303: Label 362: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 364 364 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.glsl.comp.out000066400000000000000000002375251506534232700236640ustar00rootroot00000000000000spv.debuginfo.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 999 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 14 "main" 135 ExecutionMode 14 LocalSize 10 10 1 2: String "spv.debuginfo.glsl.comp" 8: String "uint" 17: String "float" 33: String "springForce" 36: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 /* 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); } } " 43: String "p0" 49: String "p1" 52: String "restDist" 54: String "main" 60: String "dist" 74: String "int" 80: String "sphereRadius" 91: String "gravity" 95: String "particleCount" 98: String "UBO" 103: String "params" 129: String "id" 137: String "gl_GlobalInvocationID" 143: String "index" 169: String "bool" 180: String "normal" 186: String "pinned" 188: String "Particle" 194: String "particleIn" 198: String "ParticleIn" 203: String "" 222: String "particleOut" 225: String "ParticleOut" 251: String "force" 265: String "pos" 275: String "vel" 592: String "f" 641: String "sphereDist" 694: String "calculateNormals" 697: String "PushConsts" 703: String "pushConsts" 742: String "a" 755: String "b" 772: String "c" Name 14 "main" Name 31 "springForce(vf3;vf3;f1;" Name 28 "p0" Name 29 "p1" Name 30 "restDist" Name 58 "dist" Name 78 "UBO" MemberName 78(UBO) 0 "deltaT" MemberName 78(UBO) 1 "particleMass" MemberName 78(UBO) 2 "springStiffness" MemberName 78(UBO) 3 "damping" MemberName 78(UBO) 4 "restDistH" MemberName 78(UBO) 5 "restDistV" MemberName 78(UBO) 6 "restDistD" MemberName 78(UBO) 7 "sphereRadius" MemberName 78(UBO) 8 "spherePos" MemberName 78(UBO) 9 "gravity" MemberName 78(UBO) 10 "particleCount" Name 101 "params" Name 127 "id" Name 135 "gl_GlobalInvocationID" Name 141 "index" Name 178 "Particle" MemberName 178(Particle) 0 "pos" MemberName 178(Particle) 1 "vel" MemberName 178(Particle) 2 "uv" MemberName 178(Particle) 3 "normal" MemberName 178(Particle) 4 "pinned" Name 192 "ParticleIn" MemberName 192(ParticleIn) 0 "particleIn" Name 201 "" Name 220 "ParticleOut" MemberName 220(ParticleOut) 0 "particleOut" Name 228 "" Name 249 "force" Name 263 "pos" Name 273 "vel" Name 297 "param" Name 301 "param" Name 303 "param" Name 327 "param" Name 331 "param" Name 333 "param" Name 361 "param" Name 365 "param" Name 367 "param" Name 390 "param" Name 394 "param" Name 396 "param" Name 435 "param" Name 439 "param" Name 441 "param" Name 475 "param" Name 479 "param" Name 481 "param" Name 523 "param" Name 527 "param" Name 529 "param" Name 567 "param" Name 571 "param" Name 573 "param" Name 590 "f" Name 639 "sphereDist" Name 692 "PushConsts" MemberName 692(PushConsts) 0 "calculateNormals" Name 701 "pushConsts" Name 716 "normal" Name 740 "a" Name 753 "b" Name 770 "c" Decorate 78(UBO) Block MemberDecorate 78(UBO) 0 Offset 0 MemberDecorate 78(UBO) 1 Offset 4 MemberDecorate 78(UBO) 2 Offset 8 MemberDecorate 78(UBO) 3 Offset 12 MemberDecorate 78(UBO) 4 Offset 16 MemberDecorate 78(UBO) 5 Offset 20 MemberDecorate 78(UBO) 6 Offset 24 MemberDecorate 78(UBO) 7 Offset 28 MemberDecorate 78(UBO) 8 Offset 32 MemberDecorate 78(UBO) 9 Offset 48 MemberDecorate 78(UBO) 10 Offset 64 Decorate 101(params) Binding 2 Decorate 101(params) DescriptorSet 0 Decorate 135(gl_GlobalInvocationID) BuiltIn GlobalInvocationId MemberDecorate 178(Particle) 0 Offset 0 MemberDecorate 178(Particle) 1 Offset 16 MemberDecorate 178(Particle) 2 Offset 32 MemberDecorate 178(Particle) 3 Offset 48 MemberDecorate 178(Particle) 4 Offset 64 Decorate 190 ArrayStride 80 Decorate 192(ParticleIn) BufferBlock MemberDecorate 192(ParticleIn) 0 Offset 0 Decorate 201 Binding 0 Decorate 201 DescriptorSet 0 Decorate 218 ArrayStride 80 Decorate 220(ParticleOut) BufferBlock MemberDecorate 220(ParticleOut) 0 Offset 0 Decorate 228 Binding 1 Decorate 228 DescriptorSet 0 Decorate 692(PushConsts) Block MemberDecorate 692(PushConsts) 0 Offset 0 Decorate 998 BuiltIn WorkgroupSize 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypeVector 16(float) 3 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 21: TypePointer Function 19(fvec3) 22: 7(int) Constant 7 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 12 24: TypePointer Function 16(float) 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 22 12 26: TypeFunction 19(fvec3) 21(ptr) 21(ptr) 24(ptr) 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 20 20 20 18 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 36 37: 7(int) Constant 66 39: 7(int) Constant 1 40: 7(int) Constant 4 41: 7(int) Constant 2 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 39 40 35 41 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 27 35 37 12 38 33 13 37 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 20 35 37 12 34 40 39 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 20 35 37 12 34 40 41 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 18 35 37 12 34 40 13 56: 7(int) Constant 72 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 54 6 35 56 12 38 54 13 56 61: 7(int) Constant 68 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 60 20 35 61 12 34 40 69: 7(int) Constant 69 71: TypeVector 16(float) 4 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 40 73: TypeInt 32 1 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 74 10 40 12 76: TypeVector 73(int) 2 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 75 41 78(UBO): TypeStruct 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 71(fvec4) 71(fvec4) 76(ivec2) 81: 7(int) Constant 56 82: 7(int) Constant 8 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 92: 7(int) Constant 58 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 72 35 92 22 12 12 13 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 72 35 92 22 12 12 13 96: 7(int) Constant 59 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 77 35 96 82 12 12 13 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 98 39 35 69 12 38 98 12 13 79 83 84 85 86 87 88 89 90 93 94 99: TypePointer Uniform 78(UBO) 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 97 41 12 101(params): 99(ptr) Variable Uniform 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 103 97 35 69 12 38 103 101(params) 82 104: 73(int) Constant 2 105: TypePointer Uniform 16(float) 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 41 12 119: 7(int) Constant 70 123: TypeVector 7(int) 3 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 125: TypePointer Function 123(ivec3) 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 124 22 12 130: 7(int) Constant 74 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 129 124 35 130 12 55 40 133: TypePointer Input 123(ivec3) 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 124 39 12 135(gl_GlobalInvocationID): 133(ptr) Variable Input 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 137 124 35 130 12 38 137 135(gl_GlobalInvocationID) 82 139: TypePointer Function 7(int) 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 144: 7(int) Constant 76 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 9 35 144 12 55 40 149: 73(int) Constant 10 150: TypePointer Uniform 73(int) 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 41 12 161: 7(int) Constant 77 168: TypeBool 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 169 10 41 12 176: 7(int) Constant 78 178(Particle): TypeStruct 71(fvec4) 71(fvec4) 71(fvec4) 71(fvec4) 16(float) 181: 7(int) Constant 31 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 72 35 181 22 12 12 13 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 72 35 181 22 12 12 13 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 72 35 181 22 12 12 13 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 72 35 181 22 12 12 13 185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 18 35 10 82 12 12 13 189: 7(int) Constant 81 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 188 39 35 189 12 38 188 12 13 179 182 183 184 185 190: TypeRuntimeArray 178(Particle) 191: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 12 192(ParticleIn): TypeStruct 190 195: 7(int) Constant 36 196: 7(int) Constant 11 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 191 35 195 196 12 12 13 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 198 39 35 189 12 38 198 12 13 193 199: TypePointer Uniform 192(ParticleIn) 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 197 41 12 201: 199(ptr) Variable Uniform 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 203 197 35 189 12 38 203 201 82 204: 73(int) Constant 0 208: 73(int) Constant 4 211: 16(float) Constant 1065353216 216: 7(int) Constant 82 217: 7(int) Constant 26 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 216 217 55 218: TypeRuntimeArray 178(Particle) 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 12 220(ParticleOut): TypeStruct 218 223: 7(int) Constant 40 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 219 35 223 196 12 12 13 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 225 39 35 216 12 38 225 12 13 221 226: TypePointer Uniform 220(ParticleOut) 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 224 41 12 228: 226(ptr) Variable Uniform 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 203 224 35 216 12 38 203 228 82 234: TypePointer Uniform 71(fvec4) 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 41 12 241: 7(int) Constant 83 242: 73(int) Constant 1 243: 16(float) Constant 0 244: 71(fvec4) ConstantComposite 243 243 243 243 247: 7(int) Constant 84 252: 7(int) Constant 88 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 251 20 35 252 12 55 40 256: 73(int) Constant 9 266: 7(int) Constant 90 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 20 35 266 12 55 40 276: 7(int) Constant 91 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 20 35 276 12 55 40 285: 7(int) Constant 95 291: 7(int) Constant 96 292: 7(int) Constant 9 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 291 292 55 312: 7(int) Constant 99 322: 7(int) Constant 100 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 322 292 55 342: 7(int) Constant 103 352: 7(int) Constant 104 351: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 352 292 55 360: 73(int) Constant 5 376: 7(int) Constant 107 382: 7(int) Constant 108 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 382 292 55 405: 7(int) Constant 111 425: 7(int) Constant 112 424: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 425 292 55 434: 73(int) Constant 6 450: 7(int) Constant 115 466: 7(int) Constant 116 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 466 292 55 490: 7(int) Constant 119 514: 7(int) Constant 120 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 514 292 55 538: 7(int) Constant 123 558: 7(int) Constant 124 557: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 558 292 55 579: 73(int) Constant 3 583: 7(int) Constant 127 593: 7(int) Constant 130 591: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 592 20 35 593 12 55 40 603: 7(int) Constant 131 610: 16(float) Constant 1056964608 627: 7(int) Constant 132 642: 7(int) Constant 135 640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 641 20 35 642 12 55 40 649: 73(int) Constant 8 656: 7(int) Constant 136 658: 73(int) Constant 7 661: 16(float) Constant 1008981770 667: 7(int) Constant 138 668: 7(int) Constant 30 666: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 667 668 55 690: 7(int) Constant 140 692(PushConsts): TypeStruct 7(int) 695: 7(int) Constant 63 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 694 9 35 695 22 12 12 13 698: 7(int) Constant 144 696: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 697 39 35 698 12 38 697 12 13 693 699: TypePointer PushConstant 692(PushConsts) 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 696 292 12 701(pushConsts): 699(ptr) Variable PushConstant 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 703 696 35 698 12 38 703 701(pushConsts) 82 704: TypePointer PushConstant 7(int) 705: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 292 12 714: 7(int) Constant 145 715: 7(int) Constant 15 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 714 715 55 717: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 180 20 35 714 12 713 40 721: 19(fvec3) ConstantComposite 243 243 243 724: 7(int) Constant 147 730: 7(int) Constant 148 729: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 730 40 713 739: 7(int) Constant 149 738: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 739 22 729 741: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 742 20 35 739 12 738 40 756: 7(int) Constant 150 754: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 755 20 35 756 12 738 40 773: 7(int) Constant 151 771: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 772 20 35 773 12 738 40 788: 7(int) Constant 152 800: 7(int) Constant 154 810: 7(int) Constant 155 809: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 810 22 729 825: 7(int) Constant 156 838: 7(int) Constant 157 847: 7(int) Constant 158 859: 7(int) Constant 161 869: 7(int) Constant 162 868: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 869 40 713 878: 7(int) Constant 163 877: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 878 22 868 893: 7(int) Constant 164 906: 7(int) Constant 165 915: 7(int) Constant 166 927: 7(int) Constant 168 937: 7(int) Constant 169 936: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 35 937 22 868 949: 7(int) Constant 170 962: 7(int) Constant 171 974: 7(int) Constant 172 986: 7(int) Constant 175 996: 7(int) Constant 177 997: 7(int) Constant 10 998: 123(ivec3) ConstantComposite 997 997 39 14(main): 4 Function None 5 15: Label 127(id): 125(ptr) Variable Function 141(index): 139(ptr) Variable Function 249(force): 21(ptr) Variable Function 263(pos): 21(ptr) Variable Function 273(vel): 21(ptr) Variable Function 297(param): 21(ptr) Variable Function 301(param): 21(ptr) Variable Function 303(param): 24(ptr) Variable Function 327(param): 21(ptr) Variable Function 331(param): 21(ptr) Variable Function 333(param): 24(ptr) Variable Function 361(param): 21(ptr) Variable Function 365(param): 21(ptr) Variable Function 367(param): 24(ptr) Variable Function 390(param): 21(ptr) Variable Function 394(param): 21(ptr) Variable Function 396(param): 24(ptr) Variable Function 435(param): 21(ptr) Variable Function 439(param): 21(ptr) Variable Function 441(param): 24(ptr) Variable Function 475(param): 21(ptr) Variable Function 479(param): 21(ptr) Variable Function 481(param): 24(ptr) Variable Function 523(param): 21(ptr) Variable Function 527(param): 21(ptr) Variable Function 529(param): 24(ptr) Variable Function 567(param): 21(ptr) Variable Function 571(param): 21(ptr) Variable Function 573(param): 24(ptr) Variable Function 590(f): 21(ptr) Variable Function 639(sphereDist): 21(ptr) Variable Function 716(normal): 21(ptr) Variable Function 740(a): 21(ptr) Variable Function 753(b): 21(ptr) Variable Function 770(c): 21(ptr) Variable Function 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 56 56 12 12 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 14(main) 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 130 130 12 12 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 128 127(id) 45 138: 123(ivec3) Load 135(gl_GlobalInvocationID) Store 127(id) 138 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 144 144 12 12 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 142 141(index) 45 147: 139(ptr) AccessChain 127(id) 39 148: 7(int) Load 147 152: 150(ptr) AccessChain 101(params) 149 12 153: 73(int) Load 152 154: 7(int) Bitcast 153 155: 7(int) IMul 148 154 156: 139(ptr) AccessChain 127(id) 12 157: 7(int) Load 156 158: 7(int) IAdd 155 157 Store 141(index) 158 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 161 161 12 12 159: 7(int) Load 141(index) 162: 150(ptr) AccessChain 101(params) 149 12 163: 73(int) Load 162 164: 150(ptr) AccessChain 101(params) 149 39 165: 73(int) Load 164 166: 73(int) IMul 163 165 167: 7(int) Bitcast 166 171: 168(bool) UGreaterThan 159 167 SelectionMerge 173 None BranchConditional 171 172 173 172: Label 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 176 176 12 12 Return 173: Label 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 189 189 12 12 205: 7(int) Load 141(index) 209: 105(ptr) AccessChain 201 204 205 208 210: 16(float) Load 209 212: 168(bool) FOrdEqual 210 211 SelectionMerge 214 None BranchConditional 212 213 214 213: Label 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 215 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 216 216 12 12 230: 7(int) Load 141(index) 233: 7(int) Load 141(index) 236: 234(ptr) AccessChain 228 204 233 204 237: 71(fvec4) Load 236 238: 234(ptr) AccessChain 228 204 230 204 Store 238 237 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 241 241 12 12 239: 7(int) Load 141(index) 245: 234(ptr) AccessChain 228 204 239 242 Store 245 244 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 247 247 12 12 Return 214: Label 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 252 252 12 12 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 250 249(force) 45 257: 234(ptr) AccessChain 101(params) 256 258: 71(fvec4) Load 257 259: 19(fvec3) VectorShuffle 258 258 0 1 2 260: 105(ptr) AccessChain 101(params) 242 261: 16(float) Load 260 262: 19(fvec3) VectorTimesScalar 259 261 Store 249(force) 262 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 266 266 12 12 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 264 263(pos) 45 269: 7(int) Load 141(index) 270: 234(ptr) AccessChain 201 204 269 204 271: 71(fvec4) Load 270 272: 19(fvec3) VectorShuffle 271 271 0 1 2 Store 263(pos) 272 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 276 276 12 12 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(vel) 45 279: 7(int) Load 141(index) 280: 234(ptr) AccessChain 201 204 279 242 281: 71(fvec4) Load 280 282: 19(fvec3) VectorShuffle 281 281 0 1 2 Store 273(vel) 282 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 285 285 12 12 283: 139(ptr) AccessChain 127(id) 12 286: 7(int) Load 283 287: 168(bool) UGreaterThan 286 12 SelectionMerge 289 None BranchConditional 287 288 289 288: Label 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 290 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 291 291 12 12 293: 7(int) Load 141(index) 296: 7(int) ISub 293 39 298: 234(ptr) AccessChain 201 204 296 204 299: 71(fvec4) Load 298 300: 19(fvec3) VectorShuffle 299 299 0 1 2 Store 297(param) 300 302: 19(fvec3) Load 263(pos) Store 301(param) 302 304: 105(ptr) AccessChain 101(params) 208 305: 16(float) Load 304 Store 303(param) 305 306: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 297(param) 301(param) 303(param) 307: 19(fvec3) Load 249(force) 308: 19(fvec3) FAdd 307 306 Store 249(force) 308 Branch 289 289: Label 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 312 312 12 12 309: 139(ptr) AccessChain 127(id) 12 313: 7(int) Load 309 314: 150(ptr) AccessChain 101(params) 149 12 315: 73(int) Load 314 316: 73(int) ISub 315 242 317: 7(int) Bitcast 316 318: 168(bool) ULessThan 313 317 SelectionMerge 320 None BranchConditional 318 319 320 319: Label 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 321 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 322 322 12 12 323: 7(int) Load 141(index) 326: 7(int) IAdd 323 39 328: 234(ptr) AccessChain 201 204 326 204 329: 71(fvec4) Load 328 330: 19(fvec3) VectorShuffle 329 329 0 1 2 Store 327(param) 330 332: 19(fvec3) Load 263(pos) Store 331(param) 332 334: 105(ptr) AccessChain 101(params) 208 335: 16(float) Load 334 Store 333(param) 335 336: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 327(param) 331(param) 333(param) 337: 19(fvec3) Load 249(force) 338: 19(fvec3) FAdd 337 336 Store 249(force) 338 Branch 320 320: Label 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 342 342 12 12 339: 139(ptr) AccessChain 127(id) 39 343: 7(int) Load 339 344: 150(ptr) AccessChain 101(params) 149 39 345: 73(int) Load 344 346: 73(int) ISub 345 242 347: 7(int) Bitcast 346 348: 168(bool) ULessThan 343 347 SelectionMerge 350 None BranchConditional 348 349 350 349: Label 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 351 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 352 352 12 12 353: 7(int) Load 141(index) 356: 150(ptr) AccessChain 101(params) 149 12 357: 73(int) Load 356 358: 7(int) Bitcast 357 359: 7(int) IAdd 353 358 362: 234(ptr) AccessChain 201 204 359 204 363: 71(fvec4) Load 362 364: 19(fvec3) VectorShuffle 363 363 0 1 2 Store 361(param) 364 366: 19(fvec3) Load 263(pos) Store 365(param) 366 368: 105(ptr) AccessChain 101(params) 360 369: 16(float) Load 368 Store 367(param) 369 370: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 361(param) 365(param) 367(param) 371: 19(fvec3) Load 249(force) 372: 19(fvec3) FAdd 371 370 Store 249(force) 372 Branch 350 350: Label 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 376 376 12 12 373: 139(ptr) AccessChain 127(id) 39 377: 7(int) Load 373 378: 168(bool) UGreaterThan 377 12 SelectionMerge 380 None BranchConditional 378 379 380 379: Label 384: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 381 385: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 382 382 12 12 383: 7(int) Load 141(index) 386: 150(ptr) AccessChain 101(params) 149 12 387: 73(int) Load 386 388: 7(int) Bitcast 387 389: 7(int) ISub 383 388 391: 234(ptr) AccessChain 201 204 389 204 392: 71(fvec4) Load 391 393: 19(fvec3) VectorShuffle 392 392 0 1 2 Store 390(param) 393 395: 19(fvec3) Load 263(pos) Store 394(param) 395 397: 105(ptr) AccessChain 101(params) 360 398: 16(float) Load 397 Store 396(param) 398 399: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 390(param) 394(param) 396(param) 400: 19(fvec3) Load 249(force) 401: 19(fvec3) FAdd 400 399 Store 249(force) 401 Branch 380 380: Label 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 405 405 12 12 402: 139(ptr) AccessChain 127(id) 12 406: 7(int) Load 402 407: 168(bool) UGreaterThan 406 12 SelectionMerge 409 None BranchConditional 407 408 409 408: Label 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 405 405 12 12 410: 139(ptr) AccessChain 127(id) 39 413: 7(int) Load 410 414: 150(ptr) AccessChain 101(params) 149 39 415: 73(int) Load 414 416: 73(int) ISub 415 242 417: 7(int) Bitcast 416 418: 168(bool) ULessThan 413 417 Branch 409 409: Label 419: 168(bool) Phi 407 380 418 408 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 405 405 12 12 SelectionMerge 421 None BranchConditional 419 420 421 420: Label 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 424 428: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 425 425 12 12 426: 7(int) Load 141(index) 429: 150(ptr) AccessChain 101(params) 149 12 430: 73(int) Load 429 431: 7(int) Bitcast 430 432: 7(int) IAdd 426 431 433: 7(int) ISub 432 39 436: 234(ptr) AccessChain 201 204 433 204 437: 71(fvec4) Load 436 438: 19(fvec3) VectorShuffle 437 437 0 1 2 Store 435(param) 438 440: 19(fvec3) Load 263(pos) Store 439(param) 440 442: 105(ptr) AccessChain 101(params) 434 443: 16(float) Load 442 Store 441(param) 443 444: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 435(param) 439(param) 441(param) 445: 19(fvec3) Load 249(force) 446: 19(fvec3) FAdd 445 444 Store 249(force) 446 Branch 421 421: Label 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 450 450 12 12 447: 139(ptr) AccessChain 127(id) 12 451: 7(int) Load 447 452: 168(bool) UGreaterThan 451 12 SelectionMerge 454 None BranchConditional 452 453 454 453: Label 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 450 450 12 12 455: 139(ptr) AccessChain 127(id) 39 458: 7(int) Load 455 459: 168(bool) UGreaterThan 458 12 Branch 454 454: Label 460: 168(bool) Phi 452 421 459 453 463: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 464: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 450 450 12 12 SelectionMerge 462 None BranchConditional 460 461 462 461: Label 468: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 465 469: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 466 466 12 12 467: 7(int) Load 141(index) 470: 150(ptr) AccessChain 101(params) 149 12 471: 73(int) Load 470 472: 7(int) Bitcast 471 473: 7(int) ISub 467 472 474: 7(int) ISub 473 39 476: 234(ptr) AccessChain 201 204 474 204 477: 71(fvec4) Load 476 478: 19(fvec3) VectorShuffle 477 477 0 1 2 Store 475(param) 478 480: 19(fvec3) Load 263(pos) Store 479(param) 480 482: 105(ptr) AccessChain 101(params) 434 483: 16(float) Load 482 Store 481(param) 483 484: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 475(param) 479(param) 481(param) 485: 19(fvec3) Load 249(force) 486: 19(fvec3) FAdd 485 484 Store 249(force) 486 Branch 462 462: Label 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 489: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 490 490 12 12 487: 139(ptr) AccessChain 127(id) 12 491: 7(int) Load 487 492: 150(ptr) AccessChain 101(params) 149 12 493: 73(int) Load 492 494: 73(int) ISub 493 242 495: 7(int) Bitcast 494 496: 168(bool) ULessThan 491 495 SelectionMerge 498 None BranchConditional 496 497 498 497: Label 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 490 490 12 12 499: 139(ptr) AccessChain 127(id) 39 502: 7(int) Load 499 503: 150(ptr) AccessChain 101(params) 149 39 504: 73(int) Load 503 505: 73(int) ISub 504 242 506: 7(int) Bitcast 505 507: 168(bool) ULessThan 502 506 Branch 498 498: Label 508: 168(bool) Phi 496 462 507 497 511: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 512: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 490 490 12 12 SelectionMerge 510 None BranchConditional 508 509 510 509: Label 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 513 517: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 514 514 12 12 515: 7(int) Load 141(index) 518: 150(ptr) AccessChain 101(params) 149 12 519: 73(int) Load 518 520: 7(int) Bitcast 519 521: 7(int) IAdd 515 520 522: 7(int) IAdd 521 39 524: 234(ptr) AccessChain 201 204 522 204 525: 71(fvec4) Load 524 526: 19(fvec3) VectorShuffle 525 525 0 1 2 Store 523(param) 526 528: 19(fvec3) Load 263(pos) Store 527(param) 528 530: 105(ptr) AccessChain 101(params) 434 531: 16(float) Load 530 Store 529(param) 531 532: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 523(param) 527(param) 529(param) 533: 19(fvec3) Load 249(force) 534: 19(fvec3) FAdd 533 532 Store 249(force) 534 Branch 510 510: Label 536: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 538 538 12 12 535: 139(ptr) AccessChain 127(id) 12 539: 7(int) Load 535 540: 150(ptr) AccessChain 101(params) 149 12 541: 73(int) Load 540 542: 73(int) ISub 541 242 543: 7(int) Bitcast 542 544: 168(bool) ULessThan 539 543 SelectionMerge 546 None BranchConditional 544 545 546 545: Label 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 549: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 538 538 12 12 547: 139(ptr) AccessChain 127(id) 39 550: 7(int) Load 547 551: 168(bool) UGreaterThan 550 12 Branch 546 546: Label 552: 168(bool) Phi 544 510 551 545 555: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 538 538 12 12 SelectionMerge 554 None BranchConditional 552 553 554 553: Label 560: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 557 561: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 558 558 12 12 559: 7(int) Load 141(index) 562: 150(ptr) AccessChain 101(params) 149 12 563: 73(int) Load 562 564: 7(int) Bitcast 563 565: 7(int) ISub 559 564 566: 7(int) IAdd 565 39 568: 234(ptr) AccessChain 201 204 566 204 569: 71(fvec4) Load 568 570: 19(fvec3) VectorShuffle 569 569 0 1 2 Store 567(param) 570 572: 19(fvec3) Load 263(pos) Store 571(param) 572 574: 105(ptr) AccessChain 101(params) 434 575: 16(float) Load 574 Store 573(param) 575 576: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 567(param) 571(param) 573(param) 577: 19(fvec3) Load 249(force) 578: 19(fvec3) FAdd 577 576 Store 249(force) 578 Branch 554 554: Label 581: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 582: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 583 583 12 12 580: 105(ptr) AccessChain 101(params) 579 584: 16(float) Load 580 585: 16(float) FNegate 584 586: 19(fvec3) Load 273(vel) 587: 19(fvec3) VectorTimesScalar 586 585 588: 19(fvec3) Load 249(force) 589: 19(fvec3) FAdd 588 587 Store 249(force) 589 595: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 593 593 12 12 594: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 591 590(f) 45 596: 19(fvec3) Load 249(force) 597: 105(ptr) AccessChain 101(params) 242 598: 16(float) Load 597 599: 16(float) FDiv 211 598 600: 19(fvec3) VectorTimesScalar 596 599 Store 590(f) 600 602: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 603 603 12 12 601: 7(int) Load 141(index) 604: 19(fvec3) Load 263(pos) 605: 19(fvec3) Load 273(vel) 606: 105(ptr) AccessChain 101(params) 204 607: 16(float) Load 606 608: 19(fvec3) VectorTimesScalar 605 607 609: 19(fvec3) FAdd 604 608 611: 19(fvec3) Load 590(f) 612: 19(fvec3) VectorTimesScalar 611 610 613: 105(ptr) AccessChain 101(params) 204 614: 16(float) Load 613 615: 19(fvec3) VectorTimesScalar 612 614 616: 105(ptr) AccessChain 101(params) 204 617: 16(float) Load 616 618: 19(fvec3) VectorTimesScalar 615 617 619: 19(fvec3) FAdd 609 618 620: 16(float) CompositeExtract 619 0 621: 16(float) CompositeExtract 619 1 622: 16(float) CompositeExtract 619 2 623: 71(fvec4) CompositeConstruct 620 621 622 211 624: 234(ptr) AccessChain 228 204 601 204 Store 624 623 626: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 627 627 12 12 625: 7(int) Load 141(index) 628: 19(fvec3) Load 273(vel) 629: 19(fvec3) Load 590(f) 630: 105(ptr) AccessChain 101(params) 204 631: 16(float) Load 630 632: 19(fvec3) VectorTimesScalar 629 631 633: 19(fvec3) FAdd 628 632 634: 16(float) CompositeExtract 633 0 635: 16(float) CompositeExtract 633 1 636: 16(float) CompositeExtract 633 2 637: 71(fvec4) CompositeConstruct 634 635 636 243 638: 234(ptr) AccessChain 228 204 625 242 Store 638 637 644: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 642 642 12 12 643: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 640 639(sphereDist) 45 645: 7(int) Load 141(index) 646: 234(ptr) AccessChain 228 204 645 204 647: 71(fvec4) Load 646 648: 19(fvec3) VectorShuffle 647 647 0 1 2 650: 234(ptr) AccessChain 101(params) 649 651: 71(fvec4) Load 650 652: 19(fvec3) VectorShuffle 651 651 0 1 2 653: 19(fvec3) FSub 648 652 Store 639(sphereDist) 653 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 656 656 12 12 654: 19(fvec3) Load 639(sphereDist) 657: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 654 659: 105(ptr) AccessChain 101(params) 658 660: 16(float) Load 659 662: 16(float) FAdd 660 661 663: 168(bool) FOrdLessThan 657 662 SelectionMerge 665 None BranchConditional 663 664 665 664: Label 670: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 666 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 667 667 12 12 669: 7(int) Load 141(index) 672: 234(ptr) AccessChain 101(params) 649 673: 71(fvec4) Load 672 674: 19(fvec3) VectorShuffle 673 673 0 1 2 675: 19(fvec3) Load 639(sphereDist) 676: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 675 677: 105(ptr) AccessChain 101(params) 658 678: 16(float) Load 677 679: 16(float) FAdd 678 661 680: 19(fvec3) VectorTimesScalar 676 679 681: 19(fvec3) FAdd 674 680 682: 105(ptr) AccessChain 228 204 669 204 12 683: 16(float) CompositeExtract 681 0 Store 682 683 684: 105(ptr) AccessChain 228 204 669 204 39 685: 16(float) CompositeExtract 681 1 Store 684 685 686: 105(ptr) AccessChain 228 204 669 204 41 687: 16(float) CompositeExtract 681 2 Store 686 687 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 690 690 12 12 688: 7(int) Load 141(index) 691: 234(ptr) AccessChain 228 204 688 242 Store 691 244 Branch 665 665: Label 707: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 708: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 698 698 12 12 706: 704(ptr) AccessChain 701(pushConsts) 204 709: 7(int) Load 706 710: 168(bool) IEqual 709 39 SelectionMerge 712 None BranchConditional 710 711 712 711: Label 719: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 713 720: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 714 714 12 12 718: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 717 716(normal) 45 Store 716(normal) 721 723: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 724 724 12 12 722: 139(ptr) AccessChain 127(id) 39 725: 7(int) Load 722 726: 168(bool) UGreaterThan 725 12 SelectionMerge 728 None BranchConditional 726 727 728 727: Label 732: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 729 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 730 730 12 12 731: 139(ptr) AccessChain 127(id) 12 734: 7(int) Load 731 735: 168(bool) UGreaterThan 734 12 SelectionMerge 737 None BranchConditional 735 736 737 736: Label 744: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 738 745: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 739 739 12 12 743: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 741 740(a) 45 746: 7(int) Load 141(index) 747: 7(int) ISub 746 39 748: 234(ptr) AccessChain 201 204 747 204 749: 71(fvec4) Load 748 750: 19(fvec3) VectorShuffle 749 749 0 1 2 751: 19(fvec3) Load 263(pos) 752: 19(fvec3) FSub 750 751 Store 740(a) 752 758: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 756 756 12 12 757: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 754 753(b) 45 759: 7(int) Load 141(index) 760: 150(ptr) AccessChain 101(params) 149 12 761: 73(int) Load 760 762: 7(int) Bitcast 761 763: 7(int) ISub 759 762 764: 7(int) ISub 763 39 765: 234(ptr) AccessChain 201 204 764 204 766: 71(fvec4) Load 765 767: 19(fvec3) VectorShuffle 766 766 0 1 2 768: 19(fvec3) Load 263(pos) 769: 19(fvec3) FSub 767 768 Store 753(b) 769 775: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 773 773 12 12 774: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 771 770(c) 45 776: 7(int) Load 141(index) 777: 150(ptr) AccessChain 101(params) 149 12 778: 73(int) Load 777 779: 7(int) Bitcast 778 780: 7(int) ISub 776 779 781: 234(ptr) AccessChain 201 204 780 204 782: 71(fvec4) Load 781 783: 19(fvec3) VectorShuffle 782 782 0 1 2 784: 19(fvec3) Load 263(pos) 785: 19(fvec3) FSub 783 784 Store 770(c) 785 787: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 788 788 12 12 786: 19(fvec3) Load 740(a) 789: 19(fvec3) Load 753(b) 790: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 786 789 791: 19(fvec3) Load 753(b) 792: 19(fvec3) Load 770(c) 793: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 791 792 794: 19(fvec3) FAdd 790 793 795: 19(fvec3) Load 716(normal) 796: 19(fvec3) FAdd 795 794 Store 716(normal) 796 Branch 737 737: Label 798: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 729 799: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 800 800 12 12 797: 139(ptr) AccessChain 127(id) 12 801: 7(int) Load 797 802: 150(ptr) AccessChain 101(params) 149 12 803: 73(int) Load 802 804: 73(int) ISub 803 242 805: 7(int) Bitcast 804 806: 168(bool) ULessThan 801 805 SelectionMerge 808 None BranchConditional 806 807 808 807: Label 812: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 809 813: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 810 810 12 12 811: 7(int) Load 141(index) 814: 150(ptr) AccessChain 101(params) 149 12 815: 73(int) Load 814 816: 7(int) Bitcast 815 817: 7(int) ISub 811 816 818: 234(ptr) AccessChain 201 204 817 204 819: 71(fvec4) Load 818 820: 19(fvec3) VectorShuffle 819 819 0 1 2 821: 19(fvec3) Load 263(pos) 822: 19(fvec3) FSub 820 821 Store 740(a) 822 824: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 825 825 12 12 823: 7(int) Load 141(index) 826: 150(ptr) AccessChain 101(params) 149 12 827: 73(int) Load 826 828: 7(int) Bitcast 827 829: 7(int) ISub 823 828 830: 7(int) IAdd 829 39 831: 234(ptr) AccessChain 201 204 830 204 832: 71(fvec4) Load 831 833: 19(fvec3) VectorShuffle 832 832 0 1 2 834: 19(fvec3) Load 263(pos) 835: 19(fvec3) FSub 833 834 Store 753(b) 835 837: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 838 838 12 12 836: 7(int) Load 141(index) 839: 7(int) IAdd 836 39 840: 234(ptr) AccessChain 201 204 839 204 841: 71(fvec4) Load 840 842: 19(fvec3) VectorShuffle 841 841 0 1 2 843: 19(fvec3) Load 263(pos) 844: 19(fvec3) FSub 842 843 Store 770(c) 844 846: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 847 847 12 12 845: 19(fvec3) Load 740(a) 848: 19(fvec3) Load 753(b) 849: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 845 848 850: 19(fvec3) Load 753(b) 851: 19(fvec3) Load 770(c) 852: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 850 851 853: 19(fvec3) FAdd 849 852 854: 19(fvec3) Load 716(normal) 855: 19(fvec3) FAdd 854 853 Store 716(normal) 855 Branch 808 808: Label Branch 728 728: Label 857: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 713 858: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 859 859 12 12 856: 139(ptr) AccessChain 127(id) 39 860: 7(int) Load 856 861: 150(ptr) AccessChain 101(params) 149 39 862: 73(int) Load 861 863: 73(int) ISub 862 242 864: 7(int) Bitcast 863 865: 168(bool) ULessThan 860 864 SelectionMerge 867 None BranchConditional 865 866 867 866: Label 871: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 868 872: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 869 869 12 12 870: 139(ptr) AccessChain 127(id) 12 873: 7(int) Load 870 874: 168(bool) UGreaterThan 873 12 SelectionMerge 876 None BranchConditional 874 875 876 875: Label 880: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 877 881: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 878 878 12 12 879: 7(int) Load 141(index) 882: 150(ptr) AccessChain 101(params) 149 12 883: 73(int) Load 882 884: 7(int) Bitcast 883 885: 7(int) IAdd 879 884 886: 234(ptr) AccessChain 201 204 885 204 887: 71(fvec4) Load 886 888: 19(fvec3) VectorShuffle 887 887 0 1 2 889: 19(fvec3) Load 263(pos) 890: 19(fvec3) FSub 888 889 Store 740(a) 890 892: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 893 893 12 12 891: 7(int) Load 141(index) 894: 150(ptr) AccessChain 101(params) 149 12 895: 73(int) Load 894 896: 7(int) Bitcast 895 897: 7(int) IAdd 891 896 898: 7(int) ISub 897 39 899: 234(ptr) AccessChain 201 204 898 204 900: 71(fvec4) Load 899 901: 19(fvec3) VectorShuffle 900 900 0 1 2 902: 19(fvec3) Load 263(pos) 903: 19(fvec3) FSub 901 902 Store 753(b) 903 905: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 906 906 12 12 904: 7(int) Load 141(index) 907: 7(int) ISub 904 39 908: 234(ptr) AccessChain 201 204 907 204 909: 71(fvec4) Load 908 910: 19(fvec3) VectorShuffle 909 909 0 1 2 911: 19(fvec3) Load 263(pos) 912: 19(fvec3) FSub 910 911 Store 770(c) 912 914: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 915 915 12 12 913: 19(fvec3) Load 740(a) 916: 19(fvec3) Load 753(b) 917: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 913 916 918: 19(fvec3) Load 753(b) 919: 19(fvec3) Load 770(c) 920: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 918 919 921: 19(fvec3) FAdd 917 920 922: 19(fvec3) Load 716(normal) 923: 19(fvec3) FAdd 922 921 Store 716(normal) 923 Branch 876 876: Label 925: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 868 926: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 927 927 12 12 924: 139(ptr) AccessChain 127(id) 12 928: 7(int) Load 924 929: 150(ptr) AccessChain 101(params) 149 12 930: 73(int) Load 929 931: 73(int) ISub 930 242 932: 7(int) Bitcast 931 933: 168(bool) ULessThan 928 932 SelectionMerge 935 None BranchConditional 933 934 935 934: Label 939: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 936 940: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 937 937 12 12 938: 7(int) Load 141(index) 941: 7(int) IAdd 938 39 942: 234(ptr) AccessChain 201 204 941 204 943: 71(fvec4) Load 942 944: 19(fvec3) VectorShuffle 943 943 0 1 2 945: 19(fvec3) Load 263(pos) 946: 19(fvec3) FSub 944 945 Store 740(a) 946 948: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 949 949 12 12 947: 7(int) Load 141(index) 950: 150(ptr) AccessChain 101(params) 149 12 951: 73(int) Load 950 952: 7(int) Bitcast 951 953: 7(int) IAdd 947 952 954: 7(int) IAdd 953 39 955: 234(ptr) AccessChain 201 204 954 204 956: 71(fvec4) Load 955 957: 19(fvec3) VectorShuffle 956 956 0 1 2 958: 19(fvec3) Load 263(pos) 959: 19(fvec3) FSub 957 958 Store 753(b) 959 961: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 962 962 12 12 960: 7(int) Load 141(index) 963: 150(ptr) AccessChain 101(params) 149 12 964: 73(int) Load 963 965: 7(int) Bitcast 964 966: 7(int) IAdd 960 965 967: 234(ptr) AccessChain 201 204 966 204 968: 71(fvec4) Load 967 969: 19(fvec3) VectorShuffle 968 968 0 1 2 970: 19(fvec3) Load 263(pos) 971: 19(fvec3) FSub 969 970 Store 770(c) 971 973: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 974 974 12 12 972: 19(fvec3) Load 740(a) 975: 19(fvec3) Load 753(b) 976: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 972 975 977: 19(fvec3) Load 753(b) 978: 19(fvec3) Load 770(c) 979: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 977 978 980: 19(fvec3) FAdd 976 979 981: 19(fvec3) Load 716(normal) 982: 19(fvec3) FAdd 981 980 Store 716(normal) 982 Branch 935 935: Label Branch 867 867: Label 984: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 713 985: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 986 986 12 12 983: 7(int) Load 141(index) 987: 19(fvec3) Load 716(normal) 988: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 987 989: 16(float) CompositeExtract 988 0 990: 16(float) CompositeExtract 988 1 991: 16(float) CompositeExtract 988 2 992: 71(fvec4) CompositeConstruct 989 990 991 243 993: 234(ptr) AccessChain 228 204 983 579 Store 993 992 Branch 712 712: Label 994: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 995: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 996 996 12 12 Return FunctionEnd 31(springForce(vf3;vf3;f1;): 19(fvec3) Function None 26 28(p0): 21(ptr) FunctionParameter 29(p1): 21(ptr) FunctionParameter 30(restDist): 24(ptr) FunctionParameter 32: Label 58(dist): 21(ptr) Variable Function 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 37 37 12 12 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 28(p0) 45 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 29(p1) 45 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 30(restDist) 45 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 34 31(springForce(vf3;vf3;f1;) 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 61 61 12 12 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 59 58(dist) 45 64: 19(fvec3) Load 28(p0) 65: 19(fvec3) Load 29(p1) 66: 19(fvec3) FSub 64 65 Store 58(dist) 66 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 69 69 12 12 67: 19(fvec3) Load 58(dist) 70: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 67 107: 105(ptr) AccessChain 101(params) 104 108: 16(float) Load 107 109: 19(fvec3) VectorTimesScalar 70 108 110: 19(fvec3) Load 58(dist) 111: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 110 112: 16(float) Load 30(restDist) 113: 16(float) FSub 111 112 114: 19(fvec3) VectorTimesScalar 109 113 ReturnValue 114 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.glsl.frag.out000066400000000000000000002306131506534232700236340ustar00rootroot00000000000000spv.debuginfo.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 886 Capability Shader Capability ImageQuery Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 14 "main" 503 557 ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.glsl.frag" 8: String "uint" 17: String "float" 39: String "textureProj" 42: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 /* 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 int global_var = 0; 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); } " 47: String "P" 53: String "layer" 56: String "offset" 64: String "filterPCF" 68: String "sc" 84: String "shadow" 88: String "fragcolor" 93: String "fragpos" 95: String "main" 99: String "int" 105: String "global_var" 120: String "shadowCoord" 142: String "bool" 167: String "dist" 173: String "type.2d.image" 174: String "@type.2d.image" 178: String "type.sampled.image" 179: String "@type.sampled.image" 184: String "samplerShadowMap" 237: String "texDim" 249: String "scale" 256: String "dx" 270: String "dy" 282: String "shadowFactor" 288: String "count" 294: String "range" 301: String "x" 321: String "y" 387: String "i" 405: String "shadowClip" 415: String "color" 420: String "viewMatrix" 423: String "Light" 429: String "lights" 432: String "debugDisplayTarget" 436: String "UBO" 441: String "ubo" 487: String "fragPos" 499: String "samplerposition" 505: String "inUV" 511: String "normal" 517: String "samplerNormal" 524: String "albedo" 530: String "samplerAlbedo" 559: String "outFragColor" 653: String "N" 677: String "L" 703: String "V" 718: String "lightCosInnerAngle" 725: String "lightCosOuterAngle" 732: String "lightRange" 739: String "dir" 755: String "cosDir" 764: String "spotEffect" 774: String "heightAttenuation" 783: String "NdotL" 793: String "diff" 801: String "R" 811: String "NdotR" 821: String "spec" Name 14 "main" Name 37 "textureProj(vf4;f1;vf2;" Name 34 "P" Name 35 "layer" Name 36 "offset" Name 62 "filterPCF(vf4;f1;" Name 60 "sc" Name 61 "layer" Name 82 "shadow(vf3;vf3;" Name 80 "fragcolor" Name 81 "fragpos" Name 103 "global_var" Name 112 "shadow" Name 118 "shadowCoord" Name 165 "dist" Name 182 "samplerShadowMap" Name 235 "texDim" Name 247 "scale" Name 254 "dx" Name 268 "dy" Name 280 "shadowFactor" Name 286 "count" Name 292 "range" Name 299 "x" Name 319 "y" Name 352 "param" Name 354 "param" Name 356 "param" Name 385 "i" Name 403 "shadowClip" Name 413 "Light" MemberName 413(Light) 0 "position" MemberName 413(Light) 1 "target" MemberName 413(Light) 2 "color" MemberName 413(Light) 3 "viewMatrix" Name 426 "UBO" MemberName 426(UBO) 0 "viewPos" MemberName 426(UBO) 1 "lights" MemberName 426(UBO) 2 "useShadows" MemberName 426(UBO) 3 "debugDisplayTarget" Name 439 "ubo" Name 453 "shadowFactor" Name 460 "param" Name 462 "param" Name 485 "fragPos" Name 497 "samplerposition" Name 503 "inUV" Name 509 "normal" Name 515 "samplerNormal" Name 522 "albedo" Name 528 "samplerAlbedo" Name 557 "outFragColor" Name 562 "param" Name 565 "param" Name 641 "fragcolor" Name 651 "N" Name 659 "i" Name 675 "L" Name 690 "dist" Name 701 "V" Name 716 "lightCosInnerAngle" Name 723 "lightCosOuterAngle" Name 730 "lightRange" Name 737 "dir" Name 753 "cosDir" Name 762 "spotEffect" Name 772 "heightAttenuation" Name 781 "NdotL" Name 791 "diff" Name 799 "R" Name 809 "NdotR" Name 819 "spec" Name 869 "param" Name 873 "param" Decorate 182(samplerShadowMap) Binding 5 Decorate 182(samplerShadowMap) DescriptorSet 0 MemberDecorate 413(Light) 0 Offset 0 MemberDecorate 413(Light) 1 Offset 16 MemberDecorate 413(Light) 2 Offset 32 MemberDecorate 413(Light) 3 ColMajor MemberDecorate 413(Light) 3 MatrixStride 16 MemberDecorate 413(Light) 3 Offset 48 Decorate 424 ArrayStride 112 Decorate 426(UBO) Block MemberDecorate 426(UBO) 0 Offset 0 MemberDecorate 426(UBO) 1 Offset 16 MemberDecorate 426(UBO) 2 Offset 352 MemberDecorate 426(UBO) 3 Offset 356 Decorate 439(ubo) Binding 4 Decorate 439(ubo) DescriptorSet 0 Decorate 497(samplerposition) Binding 1 Decorate 497(samplerposition) DescriptorSet 0 Decorate 503(inUV) Location 0 Decorate 515(samplerNormal) Binding 2 Decorate 515(samplerNormal) DescriptorSet 0 Decorate 528(samplerAlbedo) Binding 3 Decorate 528(samplerAlbedo) DescriptorSet 0 Decorate 557(outFragColor) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypeVector 16(float) 4 20: 7(int) Constant 4 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 22: TypePointer Function 19(fvec4) 23: 7(int) Constant 7 24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12 25: TypePointer Function 16(float) 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12 27: TypeVector 16(float) 2 28: 7(int) Constant 2 29: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 28 30: TypePointer Function 27(fvec2) 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 23 12 32: TypeFunction 16(float) 22(ptr) 25(ptr) 30(ptr) 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 29 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 42 43: 7(int) Constant 59 45: 7(int) Constant 1 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 45 20 41 28 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 33 41 43 12 44 39 13 43 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 21 41 43 12 40 20 45 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 43 12 40 20 28 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 29 41 43 12 40 20 13 58: TypeFunction 16(float) 22(ptr) 25(ptr) 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 66: 7(int) Constant 76 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 41 66 12 44 64 13 66 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 68 21 41 66 12 65 20 45 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 66 12 65 20 28 74: TypeVector 16(float) 3 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 76: TypePointer Function 74(fvec3) 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 23 12 78: TypeFunction 74(fvec3) 76(ptr) 76(ptr) 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 75 75 75 86: 7(int) Constant 99 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 41 86 12 44 84 13 86 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 41 86 12 85 20 45 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 41 86 12 85 20 28 97: 7(int) Constant 116 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 95 6 41 97 12 44 95 13 97 98: TypeInt 32 1 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 99 10 20 12 101: TypePointer Private 98(int) 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 11 12 103(global_var): 101(ptr) Variable Private 106: 7(int) Constant 41 107: 7(int) Constant 8 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 105 100 41 106 12 44 105 103(global_var) 107 108: 98(int) Constant 0 114: 7(int) Constant 61 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 18 41 114 12 40 20 117: 16(float) Constant 1065353216 121: 7(int) Constant 62 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 21 41 121 12 40 20 131: 7(int) Constant 63 133: 16(float) Constant 1056964608 141: TypeBool 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 28 12 146: 7(int) Constant 65 148: 16(float) Constant 3212836864 163: 7(int) Constant 67 164: 7(int) Constant 14 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 41 163 164 40 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 167 18 41 163 12 162 20 171: TypeImage 16(float) 2D array sampled format:Unknown 175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 12 41 163 12 44 174 175 13 176: TypeSampledImage 171 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 12 41 163 12 44 179 175 13 180: TypePointer UniformConstant 176 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 177 12 12 182(samplerShadowMap): 180(ptr) Variable UniformConstant 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 184 177 41 163 12 44 184 182(samplerShadowMap) 107 198: 7(int) Constant 68 200: 16(float) Constant 0 216: 7(int) Constant 70 217: 7(int) Constant 11 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 41 216 217 162 218: 16(float) Constant 1048576000 224: 7(int) Constant 73 229: 7(int) Constant 74 231: TypeVector 98(int) 2 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 28 233: TypePointer Function 231(ivec2) 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 232 23 12 238: 7(int) Constant 78 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 232 41 238 12 65 20 243: TypeVector 98(int) 3 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 13 250: 7(int) Constant 79 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 18 41 250 12 65 20 253: 16(float) Constant 1069547520 257: 7(int) Constant 80 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 256 18 41 257 12 65 20 262: TypePointer Function 98(int) 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 23 12 271: 7(int) Constant 81 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 270 18 41 271 12 65 20 283: 7(int) Constant 83 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 282 18 41 283 12 65 20 289: 7(int) Constant 84 287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 288 100 41 289 12 65 20 295: 7(int) Constant 85 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 294 100 41 295 12 65 20 298: 98(int) Constant 1 302: 7(int) Constant 87 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 301 100 41 302 12 65 20 322: 7(int) Constant 89 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 321 100 41 322 12 65 20 343: 7(int) Constant 91 362: 7(int) Constant 92 375: 7(int) Constant 96 383: 7(int) Constant 97 388: 7(int) Constant 100 386: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 387 100 41 388 12 85 20 401: 98(int) Constant 3 406: 7(int) Constant 102 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 405 21 41 406 12 85 20 410: TypeMatrix 19(fvec4) 4 412: 141(bool) ConstantTrue 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 412 413(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 410 416: 7(int) Constant 47 414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 415 21 41 416 23 12 12 13 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 415 21 41 416 23 12 12 13 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 415 21 41 416 23 12 12 13 421: 7(int) Constant 48 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 420 411 41 421 23 12 12 13 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 423 45 41 406 12 44 423 12 13 414 417 418 419 424: TypeArray 413(Light) 13 425: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 422 13 426(UBO): TypeStruct 19(fvec4) 424 98(int) 98(int) 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 415 21 41 416 23 12 12 13 430: 7(int) Constant 54 428: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 429 425 41 430 107 12 12 13 433: 7(int) Constant 56 431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 432 100 41 433 11 12 12 13 434: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 432 100 41 433 11 12 12 13 435: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 436 45 41 406 12 44 436 12 13 427 428 431 434 437: TypePointer Uniform 426(UBO) 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 435 28 12 439(ubo): 437(ptr) Variable Uniform 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 441 435 41 406 12 44 441 439(ubo) 107 443: TypePointer Uniform 410 444: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 411 28 12 455: 7(int) Constant 106 454: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 282 18 41 455 12 85 20 466: 7(int) Constant 111 476: 7(int) Constant 113 481: 7(int) Constant 114 488: 7(int) Constant 119 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 487 75 41 488 12 96 20 491: TypeImage 16(float) 2D sampled format:Unknown 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 12 41 488 12 44 174 175 13 493: TypeSampledImage 491 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 12 41 488 12 44 179 175 13 495: TypePointer UniformConstant 493 496: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 494 12 12 497(samplerposition): 495(ptr) Variable UniformConstant 498: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 499 494 41 488 12 44 499 497(samplerposition) 107 501: TypePointer Input 27(fvec2) 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 45 12 503(inUV): 501(ptr) Variable Input 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 505 29 41 488 12 44 505 503(inUV) 107 512: 7(int) Constant 120 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 511 75 41 512 12 96 20 515(samplerNormal): 495(ptr) Variable UniformConstant 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 517 494 41 512 12 44 517 515(samplerNormal) 107 525: 7(int) Constant 121 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 524 21 41 525 12 96 20 528(samplerAlbedo): 495(ptr) Variable UniformConstant 529: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 530 494 41 525 12 44 530 528(samplerAlbedo) 107 534: TypePointer Uniform 98(int) 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 28 12 538: 7(int) Constant 124 544: 7(int) Constant 125 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 41 544 13 96 555: TypePointer Output 19(fvec4) 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 557(outFragColor): 555(ptr) Variable Output 560: 7(int) Constant 127 558: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 559 21 41 560 12 44 559 557(outFragColor) 107 561: 74(fvec3) ConstantComposite 117 117 117 568: TypePointer Output 16(float) 569: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 577: 7(int) Constant 128 582: 7(int) Constant 130 590: 7(int) Constant 131 595: 7(int) Constant 133 603: 7(int) Constant 134 608: 7(int) Constant 136 617: 7(int) Constant 137 622: 7(int) Constant 139 631: 7(int) Constant 140 637: 7(int) Constant 142 639: 7(int) Constant 143 643: 7(int) Constant 147 642: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 41 643 12 96 20 649: 16(float) Constant 1036831949 654: 7(int) Constant 149 652: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 653 75 41 654 12 96 20 661: 7(int) Constant 151 660: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 387 100 41 661 12 96 20 678: 7(int) Constant 154 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 677 75 41 678 12 96 20 683: TypePointer Uniform 19(fvec4) 684: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 28 12 692: 7(int) Constant 156 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 167 18 41 692 12 96 20 699: 7(int) Constant 157 704: 7(int) Constant 160 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 703 75 41 704 12 96 20 714: 7(int) Constant 161 719: 7(int) Constant 163 717: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 718 18 41 719 12 96 20 722: 16(float) Constant 1064781546 726: 7(int) Constant 164 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 725 18 41 726 12 96 20 729: 16(float) Constant 1063781322 733: 7(int) Constant 165 731: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 732 18 41 733 12 96 20 736: 16(float) Constant 1120403456 740: 7(int) Constant 168 738: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 739 75 41 740 12 96 20 756: 7(int) Constant 171 754: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 755 18 41 756 12 96 20 765: 7(int) Constant 172 763: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 764 18 41 765 12 96 20 775: 7(int) Constant 173 773: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 774 18 41 775 12 96 20 784: 7(int) Constant 176 782: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 783 18 41 784 12 96 20 794: 7(int) Constant 177 792: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 793 75 41 794 12 96 20 802: 7(int) Constant 180 800: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 801 75 41 802 12 96 20 812: 7(int) Constant 181 810: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 811 18 41 812 12 96 20 822: 7(int) Constant 182 820: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 821 75 41 822 12 96 20 826: 16(float) Constant 1098907648 831: 16(float) Constant 1075838976 836: 7(int) Constant 184 844: 98(int) Constant 2 861: 7(int) Constant 188 867: 7(int) Constant 190 868: 7(int) Constant 13 866: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 41 867 868 96 879: 7(int) Constant 193 885: 7(int) Constant 194 14(main): 4 Function None 5 15: Label 485(fragPos): 76(ptr) Variable Function 509(normal): 76(ptr) Variable Function 522(albedo): 22(ptr) Variable Function 562(param): 76(ptr) Variable Function 565(param): 76(ptr) Variable Function 641(fragcolor): 76(ptr) Variable Function 651(N): 76(ptr) Variable Function 659(i): 262(ptr) Variable Function 675(L): 76(ptr) Variable Function 690(dist): 25(ptr) Variable Function 701(V): 76(ptr) Variable Function 716(lightCosInnerAngle): 25(ptr) Variable Function 723(lightCosOuterAngle): 25(ptr) Variable Function 730(lightRange): 25(ptr) Variable Function 737(dir): 76(ptr) Variable Function 753(cosDir): 25(ptr) Variable Function 762(spotEffect): 25(ptr) Variable Function 772(heightAttenuation): 25(ptr) Variable Function 781(NdotL): 25(ptr) Variable Function 791(diff): 76(ptr) Variable Function 799(R): 76(ptr) Variable Function 809(NdotR): 25(ptr) Variable Function 819(spec): 76(ptr) Variable Function 869(param): 76(ptr) Variable Function 873(param): 76(ptr) Variable Function 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 106 106 12 12 Store 103(global_var) 108 483: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 97 97 12 12 482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 14(main) 490: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 488 488 12 12 489: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 486 485(fragPos) 49 500: 493 Load 497(samplerposition) 506: 27(fvec2) Load 503(inUV) 507: 19(fvec4) ImageSampleImplicitLod 500 506 508: 74(fvec3) VectorShuffle 507 507 0 1 2 Store 485(fragPos) 508 514: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 512 512 12 12 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 510 509(normal) 49 518: 493 Load 515(samplerNormal) 519: 27(fvec2) Load 503(inUV) 520: 19(fvec4) ImageSampleImplicitLod 518 519 521: 74(fvec3) VectorShuffle 520 520 0 1 2 Store 509(normal) 521 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 525 525 12 12 526: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 523 522(albedo) 49 531: 493 Load 528(samplerAlbedo) 532: 27(fvec2) Load 503(inUV) 533: 19(fvec4) ImageSampleImplicitLod 531 532 Store 522(albedo) 533 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 538 538 12 12 536: 534(ptr) AccessChain 439(ubo) 401 539: 98(int) Load 536 540: 141(bool) SGreaterThan 539 108 SelectionMerge 542 None BranchConditional 540 541 542 541: Label 546: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 543 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 544 544 12 12 545: 534(ptr) AccessChain 439(ubo) 401 548: 98(int) Load 545 SelectionMerge 554 None Switch 548 554 case 1: 549 case 2: 550 case 3: 551 case 4: 552 case 5: 553 549: Label 563: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 543 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 560 560 12 12 Store 562(param) 561 566: 74(fvec3) Load 485(fragPos) Store 565(param) 566 567: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 562(param) 565(param) 570: 568(ptr) AccessChain 557(outFragColor) 12 571: 16(float) CompositeExtract 567 0 Store 570 571 572: 568(ptr) AccessChain 557(outFragColor) 45 573: 16(float) CompositeExtract 567 1 Store 572 573 574: 568(ptr) AccessChain 557(outFragColor) 28 575: 16(float) CompositeExtract 567 2 Store 574 575 576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 577 577 12 12 Branch 554 550: Label 580: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 543 581: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 582 582 12 12 579: 74(fvec3) Load 485(fragPos) 583: 568(ptr) AccessChain 557(outFragColor) 12 584: 16(float) CompositeExtract 579 0 Store 583 584 585: 568(ptr) AccessChain 557(outFragColor) 45 586: 16(float) CompositeExtract 579 1 Store 585 586 587: 568(ptr) AccessChain 557(outFragColor) 28 588: 16(float) CompositeExtract 579 2 Store 587 588 589: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 590 590 12 12 Branch 554 551: Label 593: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 543 594: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 595 595 12 12 592: 74(fvec3) Load 509(normal) 596: 568(ptr) AccessChain 557(outFragColor) 12 597: 16(float) CompositeExtract 592 0 Store 596 597 598: 568(ptr) AccessChain 557(outFragColor) 45 599: 16(float) CompositeExtract 592 1 Store 598 599 600: 568(ptr) AccessChain 557(outFragColor) 28 601: 16(float) CompositeExtract 592 2 Store 600 601 602: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 603 603 12 12 Branch 554 552: Label 606: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 543 607: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 608 608 12 12 605: 19(fvec4) Load 522(albedo) 609: 74(fvec3) VectorShuffle 605 605 0 1 2 610: 568(ptr) AccessChain 557(outFragColor) 12 611: 16(float) CompositeExtract 609 0 Store 610 611 612: 568(ptr) AccessChain 557(outFragColor) 45 613: 16(float) CompositeExtract 609 1 Store 612 613 614: 568(ptr) AccessChain 557(outFragColor) 28 615: 16(float) CompositeExtract 609 2 Store 614 615 616: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 617 617 12 12 Branch 554 553: Label 620: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 543 621: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 622 622 12 12 619: 19(fvec4) Load 522(albedo) 623: 74(fvec3) VectorShuffle 619 619 3 3 3 624: 568(ptr) AccessChain 557(outFragColor) 12 625: 16(float) CompositeExtract 623 0 Store 624 625 626: 568(ptr) AccessChain 557(outFragColor) 45 627: 16(float) CompositeExtract 623 1 Store 626 627 628: 568(ptr) AccessChain 557(outFragColor) 28 629: 16(float) CompositeExtract 623 2 Store 628 629 630: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 631 631 12 12 Branch 554 554: Label 635: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 543 636: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 637 637 12 12 634: 568(ptr) AccessChain 557(outFragColor) 13 Store 634 117 638: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 639 639 12 12 Return 542: Label 645: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 646: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 643 643 12 12 644: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 642 641(fragcolor) 49 647: 19(fvec4) Load 522(albedo) 648: 74(fvec3) VectorShuffle 647 647 0 1 2 650: 74(fvec3) VectorTimesScalar 648 649 Store 641(fragcolor) 650 656: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 654 654 12 12 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 652 651(N) 49 657: 74(fvec3) Load 509(normal) 658: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 657 Store 651(N) 658 663: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 661 661 12 12 662: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 660 659(i) 49 Store 659(i) 108 Branch 664 664: Label 668: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 669: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 661 661 12 12 LoopMerge 666 667 None Branch 670 670: Label 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 673: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 661 661 12 12 671: 98(int) Load 659(i) 674: 141(bool) SLessThan 671 401 BranchConditional 674 665 666 665: Label 680: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 678 678 12 12 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 676 675(L) 49 682: 98(int) Load 659(i) 685: 683(ptr) AccessChain 439(ubo) 298 682 108 686: 19(fvec4) Load 685 687: 74(fvec3) VectorShuffle 686 686 0 1 2 688: 74(fvec3) Load 485(fragPos) 689: 74(fvec3) FSub 687 688 Store 675(L) 689 694: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 692 692 12 12 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 691 690(dist) 49 695: 74(fvec3) Load 675(L) 696: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 695 Store 690(dist) 696 698: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 699 699 12 12 697: 74(fvec3) Load 675(L) 700: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 697 Store 675(L) 700 706: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 704 704 12 12 705: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 702 701(V) 49 707: 683(ptr) AccessChain 439(ubo) 108 708: 19(fvec4) Load 707 709: 74(fvec3) VectorShuffle 708 708 0 1 2 710: 74(fvec3) Load 485(fragPos) 711: 74(fvec3) FSub 709 710 Store 701(V) 711 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 714 714 12 12 712: 74(fvec3) Load 701(V) 715: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 712 Store 701(V) 715 721: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 719 719 12 12 720: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 717 716(lightCosInnerAngle) 49 Store 716(lightCosInnerAngle) 722 728: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 726 726 12 12 727: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(lightCosOuterAngle) 49 Store 723(lightCosOuterAngle) 729 735: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 733 733 12 12 734: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 731 730(lightRange) 49 Store 730(lightRange) 736 742: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 740 740 12 12 741: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 738 737(dir) 49 743: 98(int) Load 659(i) 744: 683(ptr) AccessChain 439(ubo) 298 743 108 745: 19(fvec4) Load 744 746: 74(fvec3) VectorShuffle 745 745 0 1 2 747: 98(int) Load 659(i) 748: 683(ptr) AccessChain 439(ubo) 298 747 298 749: 19(fvec4) Load 748 750: 74(fvec3) VectorShuffle 749 749 0 1 2 751: 74(fvec3) FSub 746 750 752: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 751 Store 737(dir) 752 758: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 756 756 12 12 757: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 754 753(cosDir) 49 759: 74(fvec3) Load 675(L) 760: 74(fvec3) Load 737(dir) 761: 16(float) Dot 759 760 Store 753(cosDir) 761 767: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 765 765 12 12 766: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 763 762(spotEffect) 49 768: 16(float) Load 723(lightCosOuterAngle) 769: 16(float) Load 716(lightCosInnerAngle) 770: 16(float) Load 753(cosDir) 771: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 768 769 770 Store 762(spotEffect) 771 777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 775 775 12 12 776: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 773 772(heightAttenuation) 49 778: 16(float) Load 730(lightRange) 779: 16(float) Load 690(dist) 780: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 778 200 779 Store 772(heightAttenuation) 780 786: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 784 784 12 12 785: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 782 781(NdotL) 49 787: 74(fvec3) Load 651(N) 788: 74(fvec3) Load 675(L) 789: 16(float) Dot 787 788 790: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 200 789 Store 781(NdotL) 790 796: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 794 794 12 12 795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 792 791(diff) 49 797: 16(float) Load 781(NdotL) 798: 74(fvec3) CompositeConstruct 797 797 797 Store 791(diff) 798 804: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 802 802 12 12 803: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 800 799(R) 49 805: 74(fvec3) Load 675(L) 806: 74(fvec3) FNegate 805 807: 74(fvec3) Load 651(N) 808: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 806 807 Store 799(R) 808 814: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 812 812 12 12 813: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 810 809(NdotR) 49 815: 74(fvec3) Load 799(R) 816: 74(fvec3) Load 701(V) 817: 16(float) Dot 815 816 818: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 200 817 Store 809(NdotR) 818 824: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 822 822 12 12 823: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 820 819(spec) 49 825: 16(float) Load 809(NdotR) 827: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 825 826 828: 25(ptr) AccessChain 522(albedo) 13 829: 16(float) Load 828 830: 16(float) FMul 827 829 832: 16(float) FMul 830 831 833: 74(fvec3) CompositeConstruct 832 832 832 Store 819(spec) 833 835: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 836 836 12 12 834: 74(fvec3) Load 791(diff) 837: 74(fvec3) Load 819(spec) 838: 74(fvec3) FAdd 834 837 839: 16(float) Load 762(spotEffect) 840: 74(fvec3) VectorTimesScalar 838 839 841: 16(float) Load 772(heightAttenuation) 842: 74(fvec3) VectorTimesScalar 840 841 843: 98(int) Load 659(i) 845: 683(ptr) AccessChain 439(ubo) 298 843 844 846: 19(fvec4) Load 845 847: 74(fvec3) VectorShuffle 846 846 0 1 2 848: 74(fvec3) FMul 842 847 849: 19(fvec4) Load 522(albedo) 850: 74(fvec3) VectorShuffle 849 849 0 1 2 851: 74(fvec3) FMul 848 850 852: 74(fvec3) Load 641(fragcolor) 853: 74(fvec3) FAdd 852 851 Store 641(fragcolor) 853 Branch 667 667: Label 855: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 856: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 661 661 12 12 854: 98(int) Load 659(i) 857: 98(int) IAdd 854 298 Store 659(i) 857 Branch 664 666: Label 859: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 860: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 861 861 12 12 858: 534(ptr) AccessChain 439(ubo) 844 862: 98(int) Load 858 863: 141(bool) SGreaterThan 862 108 SelectionMerge 865 None BranchConditional 863 864 865 864: Label 871: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 866 872: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 867 867 12 12 870: 74(fvec3) Load 641(fragcolor) Store 869(param) 870 874: 74(fvec3) Load 485(fragPos) Store 873(param) 874 875: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 869(param) 873(param) Store 641(fragcolor) 875 Branch 865 865: Label 877: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 878: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 879 879 12 12 876: 74(fvec3) Load 641(fragcolor) 880: 16(float) CompositeExtract 876 0 881: 16(float) CompositeExtract 876 1 882: 16(float) CompositeExtract 876 2 883: 19(fvec4) CompositeConstruct 880 881 882 117 Store 557(outFragColor) 883 884: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 885 885 12 12 Return FunctionEnd 37(textureProj(vf4;f1;vf2;): 16(float) Function None 32 34(P): 22(ptr) FunctionParameter 35(layer): 25(ptr) FunctionParameter 36(offset): 30(ptr) FunctionParameter 38: Label 112(shadow): 25(ptr) Variable Function 118(shadowCoord): 22(ptr) Variable Function 165(dist): 25(ptr) Variable Function 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 43 43 12 12 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 34(P) 49 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 35(layer) 49 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 36(offset) 49 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 37(textureProj(vf4;f1;vf2;) 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 114 114 12 12 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(shadow) 49 Store 112(shadow) 117 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 121 121 12 12 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(shadowCoord) 49 124: 19(fvec4) Load 34(P) 125: 25(ptr) AccessChain 34(P) 13 126: 16(float) Load 125 127: 19(fvec4) CompositeConstruct 126 126 126 126 128: 19(fvec4) FDiv 124 127 Store 118(shadowCoord) 128 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 131 131 12 12 129: 19(fvec4) Load 118(shadowCoord) 132: 27(fvec2) VectorShuffle 129 129 0 1 134: 27(fvec2) VectorTimesScalar 132 133 135: 27(fvec2) CompositeConstruct 133 133 136: 27(fvec2) FAdd 134 135 137: 25(ptr) AccessChain 118(shadowCoord) 12 138: 16(float) CompositeExtract 136 0 Store 137 138 139: 25(ptr) AccessChain 118(shadowCoord) 45 140: 16(float) CompositeExtract 136 1 Store 139 140 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12 144: 25(ptr) AccessChain 118(shadowCoord) 28 147: 16(float) Load 144 149: 141(bool) FOrdGreaterThan 147 148 SelectionMerge 151 None BranchConditional 149 150 151 150: Label 153: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12 152: 25(ptr) AccessChain 118(shadowCoord) 28 155: 16(float) Load 152 156: 141(bool) FOrdLessThan 155 117 Branch 151 151: Label 157: 141(bool) Phi 149 38 156 150 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12 SelectionMerge 159 None BranchConditional 157 158 159 158: Label 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 162 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 163 163 12 12 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 166 165(dist) 49 185: 176 Load 182(samplerShadowMap) 186: 19(fvec4) Load 118(shadowCoord) 187: 27(fvec2) VectorShuffle 186 186 0 1 188: 27(fvec2) Load 36(offset) 189: 27(fvec2) FAdd 187 188 190: 16(float) Load 35(layer) 191: 16(float) CompositeExtract 189 0 192: 16(float) CompositeExtract 189 1 193: 74(fvec3) CompositeConstruct 191 192 190 194: 19(fvec4) ImageSampleImplicitLod 185 193 195: 16(float) CompositeExtract 194 0 Store 165(dist) 195 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 198 198 12 12 196: 25(ptr) AccessChain 118(shadowCoord) 13 199: 16(float) Load 196 201: 141(bool) FOrdGreaterThan 199 200 SelectionMerge 203 None BranchConditional 201 202 203 202: Label 205: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 162 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 198 198 12 12 204: 16(float) Load 165(dist) 207: 25(ptr) AccessChain 118(shadowCoord) 28 208: 16(float) Load 207 209: 141(bool) FOrdLessThan 204 208 Branch 203 203: Label 210: 141(bool) Phi 201 158 209 202 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 162 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 198 198 12 12 SelectionMerge 212 None BranchConditional 210 211 212 211: Label 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 215 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 216 216 12 12 Store 112(shadow) 218 Branch 212 212: Label Branch 159 159: Label 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 224 224 12 12 221: 16(float) Load 112(shadow) ReturnValue 221 FunctionEnd 62(filterPCF(vf4;f1;): 16(float) Function None 58 60(sc): 22(ptr) FunctionParameter 61(layer): 25(ptr) FunctionParameter 63: Label 235(texDim): 233(ptr) Variable Function 247(scale): 25(ptr) Variable Function 254(dx): 25(ptr) Variable Function 268(dy): 25(ptr) Variable Function 280(shadowFactor): 25(ptr) Variable Function 286(count): 262(ptr) Variable Function 292(range): 262(ptr) Variable Function 299(x): 262(ptr) Variable Function 319(y): 262(ptr) Variable Function 352(param): 22(ptr) Variable Function 354(param): 25(ptr) Variable Function 356(param): 30(ptr) Variable Function 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 66 66 12 12 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 60(sc) 49 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 49 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 238 238 12 12 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(texDim) 49 241: 176 Load 182(samplerShadowMap) 242: 171 Image 241 245: 243(ivec3) ImageQuerySizeLod 242 108 246: 231(ivec2) VectorShuffle 245 245 0 1 Store 235(texDim) 246 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 250 250 12 12 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(scale) 49 Store 247(scale) 253 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 257 257 12 12 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 255 254(dx) 49 260: 16(float) Load 247(scale) 261: 16(float) FMul 260 117 264: 262(ptr) AccessChain 235(texDim) 12 265: 98(int) Load 264 266: 16(float) ConvertSToF 265 267: 16(float) FDiv 261 266 Store 254(dx) 267 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 271 271 12 12 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 269 268(dy) 49 274: 16(float) Load 247(scale) 275: 16(float) FMul 274 117 276: 262(ptr) AccessChain 235(texDim) 45 277: 98(int) Load 276 278: 16(float) ConvertSToF 277 279: 16(float) FDiv 275 278 Store 268(dy) 279 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 283 283 12 12 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 281 280(shadowFactor) 49 Store 280(shadowFactor) 200 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 289 289 12 12 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 287 286(count) 49 Store 286(count) 108 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 293 292(range) 49 Store 292(range) 298 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 302 302 12 12 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 300 299(x) 49 305: 98(int) Load 292(range) 306: 98(int) SNegate 305 Store 299(x) 306 Branch 307 307: Label 311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 302 302 12 12 LoopMerge 309 310 None Branch 313 313: Label 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 302 302 12 12 314: 98(int) Load 299(x) 317: 98(int) Load 292(range) 318: 141(bool) SLessThanEqual 314 317 BranchConditional 318 308 309 308: Label 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 322 322 12 12 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 320 319(y) 49 326: 98(int) Load 292(range) 327: 98(int) SNegate 326 Store 319(y) 327 Branch 328 328: Label 332: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 322 322 12 12 LoopMerge 330 331 None Branch 334 334: Label 336: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 322 322 12 12 335: 98(int) Load 319(y) 338: 98(int) Load 292(range) 339: 141(bool) SLessThanEqual 335 338 BranchConditional 339 329 330 329: Label 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 343 343 12 12 340: 16(float) Load 254(dx) 344: 98(int) Load 299(x) 345: 16(float) ConvertSToF 344 346: 16(float) FMul 340 345 347: 16(float) Load 268(dy) 348: 98(int) Load 319(y) 349: 16(float) ConvertSToF 348 350: 16(float) FMul 347 349 351: 27(fvec2) CompositeConstruct 346 350 353: 19(fvec4) Load 60(sc) Store 352(param) 353 355: 16(float) Load 61(layer) Store 354(param) 355 Store 356(param) 351 357: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 352(param) 354(param) 356(param) 358: 16(float) Load 280(shadowFactor) 359: 16(float) FAdd 358 357 Store 280(shadowFactor) 359 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 362 362 12 12 360: 98(int) Load 286(count) 363: 98(int) IAdd 360 298 Store 286(count) 363 Branch 331 331: Label 365: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 322 322 12 12 364: 98(int) Load 319(y) 367: 98(int) IAdd 364 298 Store 319(y) 367 Branch 328 330: Label Branch 310 310: Label 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 370: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 302 302 12 12 368: 98(int) Load 299(x) 371: 98(int) IAdd 368 298 Store 299(x) 371 Branch 307 309: Label 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 372: 16(float) Load 280(shadowFactor) 376: 98(int) Load 286(count) 377: 16(float) ConvertSToF 376 378: 16(float) FDiv 372 377 ReturnValue 378 FunctionEnd 82(shadow(vf3;vf3;): 74(fvec3) Function None 78 80(fragcolor): 76(ptr) FunctionParameter 81(fragpos): 76(ptr) FunctionParameter 83: Label 385(i): 262(ptr) Variable Function 403(shadowClip): 22(ptr) Variable Function 453(shadowFactor): 25(ptr) Variable Function 460(param): 22(ptr) Variable Function 462(param): 25(ptr) Variable Function 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 86 86 12 12 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 80(fragcolor) 49 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragpos) 49 384: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 388 388 12 12 389: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 386 385(i) 49 Store 385(i) 108 Branch 391 391: Label 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 388 388 12 12 LoopMerge 393 394 None Branch 397 397: Label 399: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 388 388 12 12 398: 98(int) Load 385(i) 402: 141(bool) SLessThan 398 401 BranchConditional 402 392 393 392: Label 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 406 406 12 12 407: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 404 403(shadowClip) 49 442: 98(int) Load 385(i) 445: 443(ptr) AccessChain 439(ubo) 298 442 401 446: 410 Load 445 447: 74(fvec3) Load 81(fragpos) 448: 16(float) CompositeExtract 447 0 449: 16(float) CompositeExtract 447 1 450: 16(float) CompositeExtract 447 2 451: 19(fvec4) CompositeConstruct 448 449 450 117 452: 19(fvec4) MatrixTimesVector 446 451 Store 403(shadowClip) 452 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 455 455 12 12 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 454 453(shadowFactor) 49 458: 98(int) Load 385(i) 459: 16(float) ConvertSToF 458 461: 19(fvec4) Load 403(shadowClip) Store 460(param) 461 Store 462(param) 459 463: 16(float) FunctionCall 62(filterPCF(vf4;f1;) 460(param) 462(param) Store 453(shadowFactor) 463 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 466 466 12 12 464: 16(float) Load 453(shadowFactor) 467: 74(fvec3) Load 80(fragcolor) 468: 74(fvec3) VectorTimesScalar 467 464 Store 80(fragcolor) 468 Branch 394 394: Label 470: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 471: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 388 388 12 12 469: 98(int) Load 385(i) 472: 98(int) IAdd 469 298 Store 385(i) 472 Branch 391 393: Label 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 475: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 476 476 12 12 473: 74(fvec3) Load 80(fragcolor) ReturnValue 473 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.glsl.geom.out000066400000000000000000000663031506534232700236470ustar00rootroot00000000000000spv.debuginfo.glsl.geom // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 276 Capability Geometry Capability MultiViewport Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 14 "main" 64 98 121 130 134 168 208 217 236 250 256 260 ExecutionMode 14 Triangles ExecutionMode 14 Invocations 2 ExecutionMode 14 OutputTriangleStrip ExecutionMode 14 OutputVertices 3 2: String "spv.debuginfo.glsl.geom" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 /* 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(); } " 29: String "int" 36: String "i" 54: String "bool" 58: String "float" 66: String "outNormal" 80: String "projection" 83: String "modelview" 86: String "lightPos" 89: String "UBO" 94: String "ubo" 100: String "gl_InvocationID" 123: String "inNormal" 132: String "outColor" 136: String "inColor" 145: String "pos" 153: String "gl_Position" 156: String "gl_PointSize" 159: String "gl_CullDistance" 163: String "gl_PerVertex" 170: String "gl_in" 178: String "worldPos" 191: String "lPos" 210: String "outLightVec" 219: String "outViewVec" 238: String "" 252: String "gl_ViewportIndex" 258: String "gl_PrimitiveID" 262: String "gl_PrimitiveIDIn" SourceExtension "GL_ARB_viewport_array" Name 14 "main" Name 34 "i" Name 64 "outNormal" Name 78 "UBO" MemberName 78(UBO) 0 "projection" MemberName 78(UBO) 1 "modelview" MemberName 78(UBO) 2 "lightPos" Name 92 "ubo" Name 98 "gl_InvocationID" Name 121 "inNormal" Name 130 "outColor" Name 134 "inColor" Name 143 "pos" Name 151 "gl_PerVertex" MemberName 151(gl_PerVertex) 0 "gl_Position" MemberName 151(gl_PerVertex) 1 "gl_PointSize" MemberName 151(gl_PerVertex) 2 "gl_ClipDistance" MemberName 151(gl_PerVertex) 3 "gl_CullDistance" Name 168 "gl_in" Name 176 "worldPos" Name 189 "lPos" Name 208 "outLightVec" Name 217 "outViewVec" Name 225 "gl_PerVertex" MemberName 225(gl_PerVertex) 0 "gl_Position" MemberName 225(gl_PerVertex) 1 "gl_PointSize" MemberName 225(gl_PerVertex) 2 "gl_ClipDistance" MemberName 225(gl_PerVertex) 3 "gl_CullDistance" Name 236 "" Name 250 "gl_ViewportIndex" Name 256 "gl_PrimitiveID" Name 260 "gl_PrimitiveIDIn" Decorate 64(outNormal) Location 0 Decorate 74 ArrayStride 64 Decorate 76 ArrayStride 64 Decorate 78(UBO) Block MemberDecorate 78(UBO) 0 ColMajor MemberDecorate 78(UBO) 0 MatrixStride 16 MemberDecorate 78(UBO) 0 Offset 0 MemberDecorate 78(UBO) 1 ColMajor MemberDecorate 78(UBO) 1 MatrixStride 16 MemberDecorate 78(UBO) 1 Offset 128 MemberDecorate 78(UBO) 2 Offset 256 Decorate 92(ubo) Binding 0 Decorate 92(ubo) DescriptorSet 0 Decorate 98(gl_InvocationID) BuiltIn InvocationId Decorate 121(inNormal) Location 0 Decorate 130(outColor) Location 1 Decorate 134(inColor) Location 1 Decorate 151(gl_PerVertex) Block MemberDecorate 151(gl_PerVertex) 0 BuiltIn Position MemberDecorate 151(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 151(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 151(gl_PerVertex) 3 BuiltIn CullDistance Decorate 208(outLightVec) Location 3 Decorate 217(outViewVec) Location 2 Decorate 225(gl_PerVertex) Block MemberDecorate 225(gl_PerVertex) 0 BuiltIn Position MemberDecorate 225(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 225(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 225(gl_PerVertex) 3 BuiltIn CullDistance Decorate 250(gl_ViewportIndex) BuiltIn ViewportIndex Decorate 256(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 260(gl_PrimitiveIDIn) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 47 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 28: TypeInt 32 1 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 23 12 31: TypePointer Function 28(int) 32: 7(int) Constant 7 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 32 12 37: 7(int) Constant 49 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 36 30 18 37 12 17 23 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 41: 28(int) Constant 0 52: 28(int) Constant 3 53: TypeBool 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 54 10 24 12 57: TypeFloat 32 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 58 10 13 12 60: TypeVector 57(float) 3 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 59 13 62: TypePointer Output 60(fvec3) 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 13 12 64(outNormal): 62(ptr) Variable Output 67: 7(int) Constant 51 68: 7(int) Constant 8 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 66 61 18 67 12 21 66 64(outNormal) 68 69: TypeVector 57(float) 4 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 59 23 71: TypeMatrix 69(fvec4) 4 73: 53(bool) ConstantTrue 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 70 23 73 74: TypeArray 71 24 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 72 24 76: TypeArray 71 24 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 72 24 78(UBO): TypeStruct 74 76 69(fvec4) 81: 7(int) Constant 34 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 75 18 81 32 12 12 13 84: 7(int) Constant 35 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 77 18 84 32 12 12 13 87: 7(int) Constant 36 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 86 70 18 87 32 12 12 13 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 89 22 18 67 12 21 89 12 13 79 82 85 90: TypePointer Uniform 78(UBO) 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 24 12 92(ubo): 90(ptr) Variable Uniform 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 94 88 18 67 12 21 94 92(ubo) 68 95: 28(int) Constant 1 96: TypePointer Input 28(int) 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 22 12 98(gl_InvocationID): 96(ptr) Variable Input 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 100 30 18 67 12 21 100 98(gl_InvocationID) 68 104: TypePointer Uniform 71 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 24 12 108: TypeMatrix 60(fvec3) 3 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 61 13 73 117: TypeArray 60(fvec3) 13 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 13 119: TypePointer Input 117 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 118 22 12 121(inNormal): 119(ptr) Variable Input 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 123 118 18 67 12 21 123 121(inNormal) 68 125: TypePointer Input 60(fvec3) 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 22 12 130(outColor): 62(ptr) Variable Output 133: 7(int) Constant 52 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 132 61 18 133 12 21 132 130(outColor) 68 134(inColor): 119(ptr) Variable Input 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 136 118 18 133 12 21 136 134(inColor) 68 141: TypePointer Function 69(fvec4) 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 32 12 146: 7(int) Constant 54 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 145 70 18 146 12 17 23 149: TypeArray 57(float) 22 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 59 22 151(gl_PerVertex): TypeStruct 69(fvec4) 57(float) 149 149 154: 7(int) Constant 23 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 153 70 18 24 154 12 12 13 157: 7(int) Constant 41 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 59 18 24 157 12 12 13 160: 7(int) Constant 84 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 150 18 24 160 12 12 13 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 150 18 24 160 12 12 13 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 22 18 146 12 21 163 12 13 152 155 158 161 164: TypeArray 151(gl_PerVertex) 13 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 162 13 166: TypePointer Input 164 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 165 22 12 168(gl_in): 166(ptr) Variable Input 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 170 165 18 146 12 21 170 168(gl_in) 68 172: TypePointer Input 69(fvec4) 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 22 12 179: 7(int) Constant 55 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 178 70 18 179 12 17 23 187: TypePointer Function 60(fvec3) 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 32 12 192: 7(int) Constant 57 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 191 61 18 192 12 17 23 198: 28(int) Constant 2 199: TypePointer Uniform 69(fvec4) 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 24 12 208(outLightVec): 62(ptr) Variable Output 211: 7(int) Constant 58 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 210 61 18 211 12 21 210 208(outLightVec) 68 217(outViewVec): 62(ptr) Variable Output 220: 7(int) Constant 59 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 219 61 18 220 12 21 219 217(outViewVec) 68 225(gl_PerVertex): TypeStruct 69(fvec4) 57(float) 149 149 227: 7(int) Constant 215 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 153 70 18 24 227 12 12 13 229: 7(int) Constant 233 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 59 18 24 229 12 12 13 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 150 18 13 32 12 12 13 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 150 18 13 32 12 12 13 233: 7(int) Constant 61 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 22 18 233 12 21 163 12 13 226 228 230 231 234: TypePointer Output 225(gl_PerVertex) 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 232 13 12 236: 234(ptr) Variable Output 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 238 232 18 233 12 21 238 236 68 245: TypePointer Output 69(fvec4) 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 13 12 248: TypePointer Output 28(int) 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 13 12 250(gl_ViewportIndex): 248(ptr) Variable Output 253: 7(int) Constant 64 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 252 30 18 253 12 21 252 250(gl_ViewportIndex) 68 256(gl_PrimitiveID): 248(ptr) Variable Output 259: 7(int) Constant 65 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 30 18 259 12 21 258 256(gl_PrimitiveID) 68 260(gl_PrimitiveIDIn): 96(ptr) Variable Input 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 262 30 18 259 12 21 262 260(gl_PrimitiveIDIn) 68 266: 7(int) Constant 66 273: 7(int) Constant 68 275: 7(int) Constant 69 14(main): 4 Function None 5 15: Label 34(i): 31(ptr) Variable Function 143(pos): 141(ptr) Variable Function 176(worldPos): 141(ptr) Variable Function 189(lPos): 187(ptr) Variable Function 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 35 34(i) 39 Store 34(i) 41 Branch 42 42: Label 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 LoopMerge 44 45 None Branch 48 48: Label 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 49: 28(int) Load 34(i) 56: 53(bool) SLessThan 49 52 BranchConditional 56 43 44 43: Label 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 67 67 12 12 101: 28(int) Load 98(gl_InvocationID) 106: 104(ptr) AccessChain 92(ubo) 95 101 107: 71 Load 106 110: 69(fvec4) CompositeExtract 107 0 111: 60(fvec3) VectorShuffle 110 110 0 1 2 112: 69(fvec4) CompositeExtract 107 1 113: 60(fvec3) VectorShuffle 112 112 0 1 2 114: 69(fvec4) CompositeExtract 107 2 115: 60(fvec3) VectorShuffle 114 114 0 1 2 116: 108 CompositeConstruct 111 113 115 124: 28(int) Load 34(i) 127: 125(ptr) AccessChain 121(inNormal) 124 128: 60(fvec3) Load 127 129: 60(fvec3) MatrixTimesVector 116 128 Store 64(outNormal) 129 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 133 133 12 12 137: 28(int) Load 34(i) 139: 125(ptr) AccessChain 134(inColor) 137 140: 60(fvec3) Load 139 Store 130(outColor) 140 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 146 146 12 12 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 144 143(pos) 39 171: 28(int) Load 34(i) 174: 172(ptr) AccessChain 168(gl_in) 171 41 175: 69(fvec4) Load 174 Store 143(pos) 175 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 179 179 12 12 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 177 176(worldPos) 39 182: 28(int) Load 98(gl_InvocationID) 183: 104(ptr) AccessChain 92(ubo) 95 182 184: 71 Load 183 185: 69(fvec4) Load 143(pos) 186: 69(fvec4) MatrixTimesVector 184 185 Store 176(worldPos) 186 194: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 192 192 12 12 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 190 189(lPos) 39 195: 28(int) Load 98(gl_InvocationID) 196: 104(ptr) AccessChain 92(ubo) 95 195 197: 71 Load 196 201: 199(ptr) AccessChain 92(ubo) 198 202: 69(fvec4) Load 201 203: 69(fvec4) MatrixTimesVector 197 202 204: 57(float) CompositeExtract 203 0 205: 57(float) CompositeExtract 203 1 206: 57(float) CompositeExtract 203 2 207: 60(fvec3) CompositeConstruct 204 205 206 Store 189(lPos) 207 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 211 211 12 12 212: 60(fvec3) Load 189(lPos) 214: 69(fvec4) Load 176(worldPos) 215: 60(fvec3) VectorShuffle 214 214 0 1 2 216: 60(fvec3) FSub 212 215 Store 208(outLightVec) 216 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 220 220 12 12 221: 69(fvec4) Load 176(worldPos) 223: 60(fvec3) VectorShuffle 221 221 0 1 2 224: 60(fvec3) FNegate 223 Store 217(outViewVec) 224 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 233 233 12 12 239: 28(int) Load 98(gl_InvocationID) 241: 104(ptr) AccessChain 92(ubo) 41 239 242: 71 Load 241 243: 69(fvec4) Load 176(worldPos) 244: 69(fvec4) MatrixTimesVector 242 243 247: 245(ptr) AccessChain 236 41 Store 247 244 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 253 253 12 12 254: 28(int) Load 98(gl_InvocationID) Store 250(gl_ViewportIndex) 254 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 259 259 12 12 263: 28(int) Load 260(gl_PrimitiveIDIn) Store 256(gl_PrimitiveID) 263 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 266 266 12 12 EmitVertex Branch 45 45: Label 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 267: 28(int) Load 34(i) 270: 28(int) IAdd 267 95 Store 34(i) 270 Branch 42 44: Label 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 273 273 12 12 EndPrimitive 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 275 275 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.glsl.tesc.out000066400000000000000000001505251506534232700236560ustar00rootroot00000000000000spv.debuginfo.glsl.tesc // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 579 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 14 "main" 262 267 296 390 405 524 540 550 565 ExecutionMode 14 OutputVertices 4 2: String "spv.debuginfo.glsl.tesc" 8: String "uint" 17: String "float" 31: String "screenSpaceTessFactor" 34: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 /* 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]; } " 40: String "p0" 46: String "p1" 49: String "bool" 55: String "frustumCheck" 58: String "main" 64: String "midPoint" 77: String "radius" 88: String "v0" 101: String "modelview" 105: String "lightPos" 108: String "frustumPlanes" 110: String "tessellatedEdgeSize" 115: String "viewportDim" 119: String "UBO" 124: String "ubo" 126: String "int" 137: String "clip0" 158: String "clip1" 239: String "pos" 247: String "gl_Position" 250: String "gl_PointSize" 253: String "gl_CullDistance" 257: String "gl_PerVertex" 264: String "gl_in" 269: String "gl_InvocationID" 277: String "type.2d.image" 279: String "@type.2d.image" 283: String "type.sampled.image" 284: String "@type.sampled.image" 289: String "samplerHeight" 298: String "inUV" 317: String "i" 392: String "gl_TessLevelInner" 407: String "gl_TessLevelOuter" 526: String "gl_out" 542: String "outNormal" 552: String "inNormal" 567: String "outUV" Name 14 "main" Name 29 "screenSpaceTessFactor(vf4;vf4;" Name 27 "p0" Name 28 "p1" Name 53 "frustumCheck(" Name 62 "midPoint" Name 75 "radius" Name 86 "v0" Name 99 "UBO" MemberName 99(UBO) 0 "projection" MemberName 99(UBO) 1 "modelview" MemberName 99(UBO) 2 "lightPos" MemberName 99(UBO) 3 "frustumPlanes" MemberName 99(UBO) 4 "displacementFactor" MemberName 99(UBO) 5 "tessellationFactor" MemberName 99(UBO) 6 "viewportDim" MemberName 99(UBO) 7 "tessellatedEdgeSize" Name 122 "ubo" Name 135 "clip0" Name 156 "clip1" Name 237 "pos" Name 245 "gl_PerVertex" MemberName 245(gl_PerVertex) 0 "gl_Position" MemberName 245(gl_PerVertex) 1 "gl_PointSize" MemberName 245(gl_PerVertex) 2 "gl_ClipDistance" MemberName 245(gl_PerVertex) 3 "gl_CullDistance" Name 262 "gl_in" Name 267 "gl_InvocationID" Name 287 "samplerHeight" Name 296 "inUV" Name 315 "i" Name 390 "gl_TessLevelInner" Name 405 "gl_TessLevelOuter" Name 434 "param" Name 439 "param" Name 444 "param" Name 449 "param" Name 454 "param" Name 459 "param" Name 464 "param" Name 469 "param" Name 511 "gl_PerVertex" MemberName 511(gl_PerVertex) 0 "gl_Position" MemberName 511(gl_PerVertex) 1 "gl_PointSize" MemberName 511(gl_PerVertex) 2 "gl_ClipDistance" MemberName 511(gl_PerVertex) 3 "gl_CullDistance" Name 524 "gl_out" Name 540 "outNormal" Name 550 "inNormal" Name 565 "outUV" Decorate 95 ArrayStride 16 Decorate 99(UBO) Block MemberDecorate 99(UBO) 0 ColMajor MemberDecorate 99(UBO) 0 MatrixStride 16 MemberDecorate 99(UBO) 0 Offset 0 MemberDecorate 99(UBO) 1 ColMajor MemberDecorate 99(UBO) 1 MatrixStride 16 MemberDecorate 99(UBO) 1 Offset 64 MemberDecorate 99(UBO) 2 Offset 128 MemberDecorate 99(UBO) 3 Offset 144 MemberDecorate 99(UBO) 4 Offset 240 MemberDecorate 99(UBO) 5 Offset 244 MemberDecorate 99(UBO) 6 Offset 248 MemberDecorate 99(UBO) 7 Offset 256 Decorate 122(ubo) Binding 0 Decorate 122(ubo) DescriptorSet 0 Decorate 245(gl_PerVertex) Block MemberDecorate 245(gl_PerVertex) 0 BuiltIn Position MemberDecorate 245(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 245(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 245(gl_PerVertex) 3 BuiltIn CullDistance Decorate 267(gl_InvocationID) BuiltIn InvocationId Decorate 287(samplerHeight) Binding 1 Decorate 287(samplerHeight) DescriptorSet 0 Decorate 296(inUV) Location 1 Decorate 390(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 390(gl_TessLevelInner) Patch Decorate 405(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 405(gl_TessLevelOuter) Patch Decorate 511(gl_PerVertex) Block MemberDecorate 511(gl_PerVertex) 0 BuiltIn Position MemberDecorate 511(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 511(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 511(gl_PerVertex) 3 BuiltIn CullDistance Decorate 540(outNormal) Location 0 Decorate 550(inNormal) Location 0 Decorate 565(outUV) Location 1 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypeVector 16(float) 4 20: 7(int) Constant 4 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 22: TypePointer Function 19(fvec4) 23: 7(int) Constant 7 24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12 25: TypeFunction 16(float) 22(ptr) 22(ptr) 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 21 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 34 35: 7(int) Constant 51 37: 7(int) Constant 1 38: 7(int) Constant 2 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 20 33 38 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 31 26 33 35 12 36 31 13 35 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 21 33 35 12 32 20 37 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 21 33 35 12 32 20 38 48: TypeBool 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 10 38 12 51: TypeFunction 48(bool) 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 50 57: 7(int) Constant 81 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 55 52 33 57 12 36 55 13 57 60: 7(int) Constant 98 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 6 33 60 12 36 58 13 60 65: 7(int) Constant 54 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 21 33 65 12 32 20 68: 16(float) Constant 1056964608 73: TypePointer Function 16(float) 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12 78: 7(int) Constant 56 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 18 33 78 12 32 20 84: 16(float) Constant 1073741824 89: 7(int) Constant 59 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 21 33 89 12 32 20 92: TypeMatrix 19(fvec4) 4 94: 48(bool) ConstantTrue 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 94 95: TypeArray 19(fvec4) 11 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 21 11 97: TypeVector 16(float) 2 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 38 99(UBO): TypeStruct 92 92 19(fvec4) 95 16(float) 16(float) 97(fvec2) 16(float) 102: 7(int) Constant 30 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 93 33 102 23 12 12 13 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 93 33 102 23 12 12 13 106: 7(int) Constant 31 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 105 21 33 106 23 12 12 13 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 108 96 33 10 23 12 12 13 111: 7(int) Constant 36 112: 7(int) Constant 8 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 110 18 33 111 112 12 12 13 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 110 18 33 111 112 12 12 13 116: 7(int) Constant 35 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 115 98 33 116 23 12 12 13 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 110 18 33 111 112 12 12 13 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 119 37 33 89 12 36 119 12 13 100 103 104 107 109 113 114 117 120: TypePointer Uniform 99(UBO) 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 118 38 12 122(ubo): 120(ptr) Variable Uniform 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 118 33 89 12 36 124 122(ubo) 112 125: TypeInt 32 1 127: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 126 10 20 12 128: 125(int) Constant 1 129: TypePointer Uniform 92 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 38 12 138: 7(int) Constant 62 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 137 21 33 138 12 32 20 141: 125(int) Constant 0 146: TypeVector 16(float) 3 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 148: 16(float) Constant 0 149: 146(fvec3) ConstantComposite 148 148 148 159: 7(int) Constant 63 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 158 21 33 159 12 32 20 174: 7(int) Constant 66 181: 7(int) Constant 67 186: 125(int) Constant 6 187: TypePointer Uniform 97(fvec2) 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 38 12 191: 7(int) Constant 70 202: 7(int) Constant 71 213: 7(int) Constant 76 216: 125(int) Constant 7 217: TypePointer Uniform 16(float) 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 38 12 222: 125(int) Constant 5 226: 16(float) Constant 1065353216 227: 16(float) Constant 1115684864 233: 7(int) Constant 77 240: 7(int) Constant 85 238: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 239 21 33 240 12 56 20 243: TypeArray 16(float) 37 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 37 245(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 243 243 248: 7(int) Constant 1756 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 247 21 33 37 248 12 12 13 251: 7(int) Constant 1774 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 18 33 37 251 12 12 13 254: 7(int) Constant 1817 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 33 37 254 12 12 13 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 33 37 254 12 12 13 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 257 37 33 240 12 36 257 12 13 246 249 252 255 258: TypeArray 245(gl_PerVertex) 10 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 256 10 260: TypePointer Input 258 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 259 37 12 262(gl_in): 260(ptr) Variable Input 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 264 259 33 240 12 36 264 262(gl_in) 112 265: TypePointer Input 125(int) 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 127 37 12 267(gl_InvocationID): 265(ptr) Variable Input 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 269 127 33 240 12 36 269 267(gl_InvocationID) 112 271: TypePointer Input 19(fvec4) 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 37 12 275: TypeImage 16(float) 2D sampled format:Unknown 278: 7(int) Constant 86 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 277 12 33 278 12 36 279 280 13 281: TypeSampledImage 275 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 283 12 33 278 12 36 284 280 13 285: TypePointer UniformConstant 281 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 282 12 12 287(samplerHeight): 285(ptr) Variable UniformConstant 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 289 282 33 278 12 36 289 287(samplerHeight) 112 292: TypeArray 97(fvec2) 10 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 98 10 294: TypePointer Input 292 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 293 37 12 296(inUV): 294(ptr) Variable Input 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 298 293 33 278 12 36 298 296(inUV) 112 299: TypePointer Input 97(fvec2) 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 37 12 305: 125(int) Constant 4 313: TypePointer Function 125(int) 314: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 127 23 12 318: 7(int) Constant 89 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 317 127 33 318 12 56 20 335: 7(int) Constant 90 336: 125(int) Constant 3 338: TypePointer Uniform 19(fvec4) 339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 38 12 343: 16(float) Constant 1090519040 349: 7(int) Constant 92 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 33 349 20 56 350: 48(bool) ConstantFalse 360: 7(int) Constant 95 365: 7(int) Constant 96 371: 7(int) Constant 100 376: 7(int) Constant 102 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 33 376 13 59 384: 7(int) Constant 104 385: 7(int) Constant 25 383: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 33 384 385 375 386: TypeArray 16(float) 38 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 38 388: TypePointer Output 386 389: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 387 13 12 390(gl_TessLevelInner): 388(ptr) Variable Output 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 392 387 33 384 12 36 392 390(gl_TessLevelInner) 112 393: TypePointer Output 16(float) 394: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 400: 7(int) Constant 105 401: TypeArray 16(float) 20 402: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 403: TypePointer Output 401 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 402 13 12 405(gl_TessLevelOuter): 403(ptr) Variable Output 408: 7(int) Constant 106 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 407 402 33 408 12 36 407 405(gl_TessLevelOuter) 112 413: 7(int) Constant 107 414: 125(int) Constant 2 417: 7(int) Constant 108 420: 7(int) Constant 109 423: 7(int) Constant 113 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 33 423 20 375 432: 7(int) Constant 115 433: 7(int) Constant 26 431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 33 432 433 422 447: 7(int) Constant 116 457: 7(int) Constant 117 467: 7(int) Constant 118 476: 7(int) Constant 119 484: 7(int) Constant 120 492: 7(int) Constant 126 491: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 33 492 433 422 498: 7(int) Constant 127 501: 7(int) Constant 128 504: 7(int) Constant 129 507: 7(int) Constant 130 510: 7(int) Constant 131 511(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 243 243 513: 7(int) Constant 110 512: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 247 21 33 37 513 12 12 13 514: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 18 33 37 501 12 12 13 516: 7(int) Constant 171 515: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 33 37 516 12 12 13 517: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 33 37 516 12 12 13 519: 7(int) Constant 137 518: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 257 37 33 519 12 36 257 12 13 512 514 515 517 520: TypeArray 511(gl_PerVertex) 20 521: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 518 20 522: TypePointer Output 520 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 521 13 12 524(gl_out): 522(ptr) Variable Output 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 526 521 33 519 12 36 526 524(gl_out) 112 533: TypePointer Output 19(fvec4) 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 536: TypeArray 146(fvec3) 20 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 147 20 538: TypePointer Output 536 539: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 537 13 12 540(outNormal): 538(ptr) Variable Output 543: 7(int) Constant 138 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 542 537 33 543 12 36 542 540(outNormal) 112 546: TypeArray 146(fvec3) 10 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 147 10 548: TypePointer Input 546 549: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 547 37 12 550(inNormal): 548(ptr) Variable Input 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 552 547 33 543 12 36 552 550(inNormal) 112 554: TypePointer Input 146(fvec3) 555: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 147 37 12 558: TypePointer Output 146(fvec3) 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 147 13 12 561: TypeArray 97(fvec2) 20 562: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 98 20 563: TypePointer Output 561 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 562 13 12 565(outUV): 563(ptr) Variable Output 568: 7(int) Constant 139 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 567 562 33 568 12 36 567 565(outUV) 112 574: TypePointer Output 97(fvec2) 575: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 13 12 578: 7(int) Constant 140 14(main): 4 Function None 5 15: Label 434(param): 22(ptr) Variable Function 439(param): 22(ptr) Variable Function 444(param): 22(ptr) Variable Function 449(param): 22(ptr) Variable Function 454(param): 22(ptr) Variable Function 459(param): 22(ptr) Variable Function 464(param): 22(ptr) Variable Function 469(param): 22(ptr) Variable Function 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 60 60 12 12 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 14(main) 370: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 371 371 12 12 369: 125(int) Load 267(gl_InvocationID) 372: 48(bool) IEqual 369 141 SelectionMerge 374 None BranchConditional 372 373 374 373: Label 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 375 379: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 376 376 12 12 377: 48(bool) FunctionCall 53(frustumCheck() 380: 48(bool) LogicalNot 377 SelectionMerge 382 None BranchConditional 380 381 421 381: Label 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 383 397: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 384 384 12 12 395: 393(ptr) AccessChain 390(gl_TessLevelInner) 141 Store 395 148 399: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 400 400 12 12 398: 393(ptr) AccessChain 390(gl_TessLevelInner) 128 Store 398 148 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 408 408 12 12 409: 393(ptr) AccessChain 405(gl_TessLevelOuter) 141 Store 409 148 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 413 413 12 12 411: 393(ptr) AccessChain 405(gl_TessLevelOuter) 128 Store 411 148 416: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 417 417 12 12 415: 393(ptr) AccessChain 405(gl_TessLevelOuter) 414 Store 415 148 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 420 420 12 12 418: 393(ptr) AccessChain 405(gl_TessLevelOuter) 336 Store 418 148 Branch 382 421: Label 425: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 422 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 423 423 12 12 424: 217(ptr) AccessChain 122(ubo) 222 427: 16(float) Load 424 428: 48(bool) FOrdGreaterThan 427 148 SelectionMerge 430 None BranchConditional 428 429 490 429: Label 436: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 431 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 432 432 12 12 435: 271(ptr) AccessChain 262(gl_in) 336 141 438: 19(fvec4) Load 435 Store 434(param) 438 440: 271(ptr) AccessChain 262(gl_in) 141 141 441: 19(fvec4) Load 440 Store 439(param) 441 442: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 434(param) 439(param) 443: 393(ptr) AccessChain 405(gl_TessLevelOuter) 141 Store 443 442 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 447 447 12 12 445: 271(ptr) AccessChain 262(gl_in) 141 141 448: 19(fvec4) Load 445 Store 444(param) 448 450: 271(ptr) AccessChain 262(gl_in) 128 141 451: 19(fvec4) Load 450 Store 449(param) 451 452: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 444(param) 449(param) 453: 393(ptr) AccessChain 405(gl_TessLevelOuter) 128 Store 453 452 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 457 457 12 12 455: 271(ptr) AccessChain 262(gl_in) 128 141 458: 19(fvec4) Load 455 Store 454(param) 458 460: 271(ptr) AccessChain 262(gl_in) 414 141 461: 19(fvec4) Load 460 Store 459(param) 461 462: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 454(param) 459(param) 463: 393(ptr) AccessChain 405(gl_TessLevelOuter) 414 Store 463 462 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 467 467 12 12 465: 271(ptr) AccessChain 262(gl_in) 414 141 468: 19(fvec4) Load 465 Store 464(param) 468 470: 271(ptr) AccessChain 262(gl_in) 336 141 471: 19(fvec4) Load 470 Store 469(param) 471 472: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 464(param) 469(param) 473: 393(ptr) AccessChain 405(gl_TessLevelOuter) 336 Store 473 472 475: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 476 476 12 12 474: 393(ptr) AccessChain 405(gl_TessLevelOuter) 141 477: 16(float) Load 474 478: 393(ptr) AccessChain 405(gl_TessLevelOuter) 336 479: 16(float) Load 478 480: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 477 479 68 481: 393(ptr) AccessChain 390(gl_TessLevelInner) 141 Store 481 480 483: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 484 484 12 12 482: 393(ptr) AccessChain 405(gl_TessLevelOuter) 414 485: 16(float) Load 482 486: 393(ptr) AccessChain 405(gl_TessLevelOuter) 128 487: 16(float) Load 486 488: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 485 487 68 489: 393(ptr) AccessChain 390(gl_TessLevelInner) 128 Store 489 488 Branch 430 490: Label 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 491 495: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 492 492 12 12 493: 393(ptr) AccessChain 390(gl_TessLevelInner) 141 Store 493 226 497: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 498 498 12 12 496: 393(ptr) AccessChain 390(gl_TessLevelInner) 128 Store 496 226 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 501 501 12 12 499: 393(ptr) AccessChain 405(gl_TessLevelOuter) 141 Store 499 226 503: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 504 504 12 12 502: 393(ptr) AccessChain 405(gl_TessLevelOuter) 128 Store 502 226 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 507 507 12 12 505: 393(ptr) AccessChain 405(gl_TessLevelOuter) 414 Store 505 226 509: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 510 510 12 12 508: 393(ptr) AccessChain 405(gl_TessLevelOuter) 336 Store 508 226 Branch 430 430: Label Branch 382 382: Label Branch 374 374: Label 528: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 529: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 519 519 12 12 527: 125(int) Load 267(gl_InvocationID) 530: 125(int) Load 267(gl_InvocationID) 531: 271(ptr) AccessChain 262(gl_in) 530 141 532: 19(fvec4) Load 531 535: 533(ptr) AccessChain 524(gl_out) 527 141 Store 535 532 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 543 543 12 12 544: 125(int) Load 267(gl_InvocationID) 553: 125(int) Load 267(gl_InvocationID) 556: 554(ptr) AccessChain 550(inNormal) 553 557: 146(fvec3) Load 556 560: 558(ptr) AccessChain 540(outNormal) 544 Store 560 557 570: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 568 568 12 12 569: 125(int) Load 267(gl_InvocationID) 571: 125(int) Load 267(gl_InvocationID) 572: 299(ptr) AccessChain 296(inUV) 571 573: 97(fvec2) Load 572 576: 574(ptr) AccessChain 565(outUV) 569 Store 576 573 577: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 578 578 12 12 Return FunctionEnd 29(screenSpaceTessFactor(vf4;vf4;): 16(float) Function None 25 27(p0): 22(ptr) FunctionParameter 28(p1): 22(ptr) FunctionParameter 30: Label 62(midPoint): 22(ptr) Variable Function 75(radius): 73(ptr) Variable Function 86(v0): 22(ptr) Variable Function 135(clip0): 22(ptr) Variable Function 156(clip1): 22(ptr) Variable Function 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 35 35 12 12 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 27(p0) 42 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 28(p1) 42 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 32 29(screenSpaceTessFactor(vf4;vf4;) 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 65 65 12 12 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 63 62(midPoint) 42 69: 19(fvec4) Load 27(p0) 70: 19(fvec4) Load 28(p1) 71: 19(fvec4) FAdd 69 70 72: 19(fvec4) VectorTimesScalar 71 68 Store 62(midPoint) 72 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 78 78 12 12 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 75(radius) 42 81: 19(fvec4) Load 27(p0) 82: 19(fvec4) Load 28(p1) 83: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 81 82 85: 16(float) FDiv 83 84 Store 75(radius) 85 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 89 89 12 12 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 86(v0) 42 131: 129(ptr) AccessChain 122(ubo) 128 132: 92 Load 131 133: 19(fvec4) Load 62(midPoint) 134: 19(fvec4) MatrixTimesVector 132 133 Store 86(v0) 134 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 138 138 12 12 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 135(clip0) 42 142: 129(ptr) AccessChain 122(ubo) 141 143: 92 Load 142 144: 19(fvec4) Load 86(v0) 145: 16(float) Load 75(radius) 150: 16(float) CompositeExtract 149 0 151: 16(float) CompositeExtract 149 1 152: 16(float) CompositeExtract 149 2 153: 19(fvec4) CompositeConstruct 145 150 151 152 154: 19(fvec4) FSub 144 153 155: 19(fvec4) MatrixTimesVector 143 154 Store 135(clip0) 155 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 159 159 12 12 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 157 156(clip1) 42 162: 129(ptr) AccessChain 122(ubo) 141 163: 92 Load 162 164: 19(fvec4) Load 86(v0) 165: 16(float) Load 75(radius) 166: 16(float) CompositeExtract 149 0 167: 16(float) CompositeExtract 149 1 168: 16(float) CompositeExtract 149 2 169: 19(fvec4) CompositeConstruct 165 166 167 168 170: 19(fvec4) FAdd 164 169 171: 19(fvec4) MatrixTimesVector 163 170 Store 156(clip1) 171 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 174 174 12 12 172: 73(ptr) AccessChain 135(clip0) 13 175: 16(float) Load 172 176: 19(fvec4) Load 135(clip0) 177: 19(fvec4) CompositeConstruct 175 175 175 175 178: 19(fvec4) FDiv 176 177 Store 135(clip0) 178 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 181 181 12 12 179: 73(ptr) AccessChain 156(clip1) 13 182: 16(float) Load 179 183: 19(fvec4) Load 156(clip1) 184: 19(fvec4) CompositeConstruct 182 182 182 182 185: 19(fvec4) FDiv 183 184 Store 156(clip1) 185 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 191 191 12 12 189: 187(ptr) AccessChain 122(ubo) 186 192: 97(fvec2) Load 189 193: 19(fvec4) Load 135(clip0) 194: 97(fvec2) VectorShuffle 193 193 0 1 195: 97(fvec2) FMul 194 192 196: 73(ptr) AccessChain 135(clip0) 12 197: 16(float) CompositeExtract 195 0 Store 196 197 198: 73(ptr) AccessChain 135(clip0) 37 199: 16(float) CompositeExtract 195 1 Store 198 199 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 202 202 12 12 200: 187(ptr) AccessChain 122(ubo) 186 203: 97(fvec2) Load 200 204: 19(fvec4) Load 156(clip1) 205: 97(fvec2) VectorShuffle 204 204 0 1 206: 97(fvec2) FMul 205 203 207: 73(ptr) AccessChain 156(clip1) 12 208: 16(float) CompositeExtract 206 0 Store 207 208 209: 73(ptr) AccessChain 156(clip1) 37 210: 16(float) CompositeExtract 206 1 Store 209 210 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 213 213 12 12 211: 19(fvec4) Load 135(clip0) 214: 19(fvec4) Load 156(clip1) 215: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 211 214 219: 217(ptr) AccessChain 122(ubo) 216 220: 16(float) Load 219 221: 16(float) FDiv 215 220 223: 217(ptr) AccessChain 122(ubo) 222 224: 16(float) Load 223 225: 16(float) FMul 221 224 228: 16(float) ExtInst 3(GLSL.std.450) 43(FClamp) 225 226 227 ReturnValue 228 FunctionEnd 53(frustumCheck(): 48(bool) Function None 51 54: Label 237(pos): 22(ptr) Variable Function 315(i): 313(ptr) Variable Function 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 57 57 12 12 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 56 53(frustumCheck() 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 240 240 12 12 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 238 237(pos) 42 270: 125(int) Load 267(gl_InvocationID) 273: 271(ptr) AccessChain 262(gl_in) 270 141 274: 19(fvec4) Load 273 Store 237(pos) 274 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 278 278 12 12 290: 281 Load 287(samplerHeight) 301: 299(ptr) AccessChain 296(inUV) 141 302: 97(fvec2) Load 301 303: 19(fvec4) ImageSampleExplicitLod 290 302 Lod 148 304: 16(float) CompositeExtract 303 0 306: 217(ptr) AccessChain 122(ubo) 305 307: 16(float) Load 306 308: 16(float) FMul 304 307 309: 73(ptr) AccessChain 237(pos) 37 310: 16(float) Load 309 311: 16(float) FSub 310 308 312: 73(ptr) AccessChain 237(pos) 37 Store 312 311 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 318 318 12 12 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 316 315(i) 42 Store 315(i) 141 Branch 321 321: Label 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 318 318 12 12 LoopMerge 323 324 None Branch 327 327: Label 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 318 318 12 12 328: 125(int) Load 315(i) 331: 48(bool) SLessThan 328 186 BranchConditional 331 322 323 322: Label 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 335 335 12 12 332: 19(fvec4) Load 237(pos) 337: 125(int) Load 315(i) 340: 338(ptr) AccessChain 122(ubo) 336 337 341: 19(fvec4) Load 340 342: 16(float) Dot 332 341 344: 16(float) FAdd 342 343 345: 48(bool) FOrdLessThan 344 148 SelectionMerge 347 None BranchConditional 345 346 347 346: Label 351: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 348 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 349 349 12 12 ReturnValue 350 347: Label Branch 324 324: Label 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 356: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 318 318 12 12 354: 125(int) Load 315(i) 357: 125(int) IAdd 354 128 Store 315(i) 357 Branch 321 323: Label 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 360 360 12 12 ReturnValue 94 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.glsl.tese.out000066400000000000000000001024001506534232700236450ustar00rootroot00000000000000spv.debuginfo.glsl.tese // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 359 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 14 "main" 47 66 93 116 143 183 300 316 324 337 344 ExecutionMode 14 Quads ExecutionMode 14 SpacingEqual ExecutionMode 14 VertexOrderCw 2: String "spv.debuginfo.glsl.tese" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 /* 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); } " 29: String "float" 38: String "uv1" 49: String "inUV" 52: String "int" 68: String "gl_TessCoord" 77: String "uv2" 95: String "outUV" 108: String "n1" 118: String "inNormal" 129: String "n2" 145: String "outNormal" 160: String "pos1" 168: String "gl_Position" 171: String "gl_PointSize" 174: String "gl_CullDistance" 178: String "gl_PerVertex" 185: String "gl_in" 198: String "pos2" 212: String "pos" 224: String "type.2d.image" 226: String "@type.2d.image" 230: String "type.sampled.image" 231: String "@type.sampled.image" 236: String "displacementMap" 246: String "bool" 253: String "modelview" 257: String "lightPos" 260: String "frustumPlanes" 262: String "tessellatedEdgeSize" 266: String "viewportDim" 270: String "UBO" 275: String "ubo" 302: String "" 318: String "outViewVec" 326: String "outLightVec" 339: String "outWorldPos" 346: String "outEyePos" Name 14 "main" Name 36 "uv1" Name 47 "inUV" Name 66 "gl_TessCoord" Name 75 "uv2" Name 93 "outUV" Name 106 "n1" Name 116 "inNormal" Name 127 "n2" Name 143 "outNormal" Name 158 "pos1" Name 166 "gl_PerVertex" MemberName 166(gl_PerVertex) 0 "gl_Position" MemberName 166(gl_PerVertex) 1 "gl_PointSize" MemberName 166(gl_PerVertex) 2 "gl_ClipDistance" MemberName 166(gl_PerVertex) 3 "gl_CullDistance" Name 183 "gl_in" Name 196 "pos2" Name 210 "pos" Name 234 "displacementMap" Name 251 "UBO" MemberName 251(UBO) 0 "projection" MemberName 251(UBO) 1 "modelview" MemberName 251(UBO) 2 "lightPos" MemberName 251(UBO) 3 "frustumPlanes" MemberName 251(UBO) 4 "displacementFactor" MemberName 251(UBO) 5 "tessellationFactor" MemberName 251(UBO) 6 "viewportDim" MemberName 251(UBO) 7 "tessellatedEdgeSize" Name 273 "ubo" Name 288 "gl_PerVertex" MemberName 288(gl_PerVertex) 0 "gl_Position" MemberName 288(gl_PerVertex) 1 "gl_PointSize" MemberName 288(gl_PerVertex) 2 "gl_ClipDistance" MemberName 288(gl_PerVertex) 3 "gl_CullDistance" Name 300 "" Name 316 "outViewVec" Name 324 "outLightVec" Name 337 "outWorldPos" Name 344 "outEyePos" Decorate 47(inUV) Location 1 Decorate 66(gl_TessCoord) BuiltIn TessCoord Decorate 93(outUV) Location 1 Decorate 116(inNormal) Location 0 Decorate 143(outNormal) Location 0 Decorate 166(gl_PerVertex) Block MemberDecorate 166(gl_PerVertex) 0 BuiltIn Position MemberDecorate 166(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 166(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 166(gl_PerVertex) 3 BuiltIn CullDistance Decorate 234(displacementMap) Binding 1 Decorate 234(displacementMap) DescriptorSet 0 Decorate 249 ArrayStride 16 Decorate 251(UBO) Block MemberDecorate 251(UBO) 0 ColMajor MemberDecorate 251(UBO) 0 MatrixStride 16 MemberDecorate 251(UBO) 0 Offset 0 MemberDecorate 251(UBO) 1 ColMajor MemberDecorate 251(UBO) 1 MatrixStride 16 MemberDecorate 251(UBO) 1 Offset 64 MemberDecorate 251(UBO) 2 Offset 128 MemberDecorate 251(UBO) 3 Offset 144 MemberDecorate 251(UBO) 4 Offset 240 MemberDecorate 251(UBO) 5 Offset 244 MemberDecorate 251(UBO) 6 Offset 248 MemberDecorate 251(UBO) 7 Offset 256 Decorate 273(ubo) Binding 0 Decorate 273(ubo) DescriptorSet 0 Decorate 288(gl_PerVertex) Block MemberDecorate 288(gl_PerVertex) 0 BuiltIn Position MemberDecorate 288(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 288(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 288(gl_PerVertex) 3 BuiltIn CullDistance Decorate 316(outViewVec) Location 2 Decorate 324(outLightVec) Location 3 Decorate 337(outWorldPos) Location 5 Decorate 344(outEyePos) Location 4 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 53 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 28: TypeFloat 32 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 31: TypeVector 28(float) 2 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 24 33: TypePointer Function 31(fvec2) 34: 7(int) Constant 7 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 34 12 39: 7(int) Constant 56 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 38 32 18 39 12 17 23 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 43: TypeArray 31(fvec2) 10 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 32 10 45: TypePointer Input 43 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 44 22 12 47(inUV): 45(ptr) Variable Input 50: 7(int) Constant 8 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 49 44 18 39 12 21 49 47(inUV) 50 51: TypeInt 32 1 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 52 10 23 12 54: 51(int) Constant 0 55: TypePointer Input 31(fvec2) 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 22 12 59: 51(int) Constant 1 62: TypeVector 28(float) 3 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 13 64: TypePointer Input 62(fvec3) 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 22 12 66(gl_TessCoord): 64(ptr) Variable Input 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 68 63 18 39 12 21 68 66(gl_TessCoord) 50 69: TypePointer Input 28(float) 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 22 12 78: 7(int) Constant 57 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 32 18 78 12 17 23 81: 51(int) Constant 3 84: 51(int) Constant 2 91: TypePointer Output 31(fvec2) 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 13 12 93(outUV): 91(ptr) Variable Output 96: 7(int) Constant 58 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 95 32 18 96 12 21 95 93(outUV) 50 104: TypePointer Function 62(fvec3) 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 34 12 109: 7(int) Constant 60 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 108 63 18 109 12 17 23 112: TypeArray 62(fvec3) 10 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 63 10 114: TypePointer Input 112 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 113 22 12 116(inNormal): 114(ptr) Variable Input 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 118 113 18 109 12 21 118 116(inNormal) 50 130: 7(int) Constant 61 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 129 63 18 130 12 17 23 141: TypePointer Output 62(fvec3) 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 13 12 143(outNormal): 141(ptr) Variable Output 146: 7(int) Constant 62 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 145 63 18 146 12 21 145 143(outNormal) 50 154: TypeVector 28(float) 4 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 23 156: TypePointer Function 154(fvec4) 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 34 12 161: 7(int) Constant 65 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 155 18 161 12 17 23 164: TypeArray 28(float) 22 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 30 22 166(gl_PerVertex): TypeStruct 154(fvec4) 28(float) 164 164 169: 7(int) Constant 1756 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 168 155 18 22 169 12 12 13 172: 7(int) Constant 1774 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 171 30 18 22 172 12 12 13 175: 7(int) Constant 1817 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 174 165 18 22 175 12 12 13 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 174 165 18 22 175 12 12 13 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 22 18 161 12 21 178 12 13 167 170 173 176 179: TypeArray 166(gl_PerVertex) 10 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 177 10 181: TypePointer Input 179 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 180 22 12 183(gl_in): 181(ptr) Variable Input 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 185 180 18 161 12 21 185 183(gl_in) 50 186: TypePointer Input 154(fvec4) 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 22 12 199: 7(int) Constant 66 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 198 155 18 199 12 17 23 213: 7(int) Constant 67 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 212 155 18 213 12 17 23 222: TypeImage 28(float) 2D sampled format:Unknown 225: 7(int) Constant 69 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 224 12 18 225 12 21 226 227 13 228: TypeSampledImage 222 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 230 12 18 225 12 21 231 227 13 232: TypePointer UniformConstant 228 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 229 12 12 234(displacementMap): 232(ptr) Variable UniformConstant 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 229 18 225 12 21 236 234(displacementMap) 50 240: 28(float) Constant 0 243: TypeMatrix 154(fvec4) 4 245: TypeBool 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 246 10 24 12 248: 245(bool) ConstantTrue 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 155 23 248 249: TypeArray 154(fvec4) 11 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 155 11 251(UBO): TypeStruct 243 243 154(fvec4) 249 28(float) 28(float) 31(fvec2) 28(float) 254: 7(int) Constant 30 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 18 254 34 12 12 13 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 18 254 34 12 12 13 258: 7(int) Constant 31 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 257 155 18 258 34 12 12 13 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 260 250 18 10 34 12 12 13 263: 7(int) Constant 36 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 30 18 263 50 12 12 13 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 30 18 263 50 12 12 13 267: 7(int) Constant 35 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 266 32 18 267 34 12 12 13 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 30 18 263 50 12 12 13 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 270 22 18 225 12 21 270 12 13 252 255 256 259 261 264 265 268 271: TypePointer Uniform 251(UBO) 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 269 24 12 273(ubo): 271(ptr) Variable Uniform 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 275 269 18 225 12 21 275 273(ubo) 50 276: 51(int) Constant 4 277: TypePointer Uniform 28(float) 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 24 12 282: TypePointer Function 28(float) 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 34 12 288(gl_PerVertex): TypeStruct 154(fvec4) 28(float) 164 164 290: 7(int) Constant 165 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 168 155 18 22 290 12 12 13 292: 7(int) Constant 183 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 171 30 18 22 292 12 12 13 294: 7(int) Constant 226 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 174 165 18 22 294 12 12 13 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 174 165 18 22 294 12 12 13 297: 7(int) Constant 71 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 22 18 297 12 21 178 12 13 289 291 293 295 298: TypePointer Output 288(gl_PerVertex) 299: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 296 13 12 300: 298(ptr) Variable Output 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 302 296 18 297 12 21 302 300 50 303: TypePointer Uniform 243 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 244 24 12 313: TypePointer Output 154(fvec4) 314: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 13 12 316(outViewVec): 141(ptr) Variable Output 319: 7(int) Constant 74 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 318 63 18 319 12 21 318 316(outViewVec) 50 324(outLightVec): 141(ptr) Variable Output 327: 7(int) Constant 75 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 326 63 18 327 12 21 326 324(outLightVec) 50 328: TypePointer Uniform 154(fvec4) 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 24 12 337(outWorldPos): 141(ptr) Variable Output 340: 7(int) Constant 76 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 339 63 18 340 12 21 339 337(outWorldPos) 50 344(outEyePos): 141(ptr) Variable Output 347: 7(int) Constant 77 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 346 63 18 347 12 21 346 344(outEyePos) 50 358: 7(int) Constant 78 14(main): 4 Function None 5 15: Label 36(uv1): 33(ptr) Variable Function 75(uv2): 33(ptr) Variable Function 106(n1): 104(ptr) Variable Function 127(n2): 104(ptr) Variable Function 158(pos1): 156(ptr) Variable Function 196(pos2): 156(ptr) Variable Function 210(pos): 156(ptr) Variable Function 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 39 39 12 12 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 37 36(uv1) 41 57: 55(ptr) AccessChain 47(inUV) 54 58: 31(fvec2) Load 57 60: 55(ptr) AccessChain 47(inUV) 59 61: 31(fvec2) Load 60 71: 69(ptr) AccessChain 66(gl_TessCoord) 12 72: 28(float) Load 71 73: 31(fvec2) CompositeConstruct 72 72 74: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 58 61 73 Store 36(uv1) 74 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 78 78 12 12 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 75(uv2) 41 82: 55(ptr) AccessChain 47(inUV) 81 83: 31(fvec2) Load 82 85: 55(ptr) AccessChain 47(inUV) 84 86: 31(fvec2) Load 85 87: 69(ptr) AccessChain 66(gl_TessCoord) 12 88: 28(float) Load 87 89: 31(fvec2) CompositeConstruct 88 88 90: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 83 86 89 Store 75(uv2) 90 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 96 96 12 12 97: 31(fvec2) Load 36(uv1) 99: 31(fvec2) Load 75(uv2) 100: 69(ptr) AccessChain 66(gl_TessCoord) 22 101: 28(float) Load 100 102: 31(fvec2) CompositeConstruct 101 101 103: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 97 99 102 Store 93(outUV) 103 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 109 109 12 12 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 107 106(n1) 41 119: 64(ptr) AccessChain 116(inNormal) 54 120: 62(fvec3) Load 119 121: 64(ptr) AccessChain 116(inNormal) 59 122: 62(fvec3) Load 121 123: 69(ptr) AccessChain 66(gl_TessCoord) 12 124: 28(float) Load 123 125: 62(fvec3) CompositeConstruct 124 124 124 126: 62(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 120 122 125 Store 106(n1) 126 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 130 130 12 12 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 128 127(n2) 41 133: 64(ptr) AccessChain 116(inNormal) 81 134: 62(fvec3) Load 133 135: 64(ptr) AccessChain 116(inNormal) 84 136: 62(fvec3) Load 135 137: 69(ptr) AccessChain 66(gl_TessCoord) 12 138: 28(float) Load 137 139: 62(fvec3) CompositeConstruct 138 138 138 140: 62(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 134 136 139 Store 127(n2) 140 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 146 146 12 12 147: 62(fvec3) Load 106(n1) 149: 62(fvec3) Load 127(n2) 150: 69(ptr) AccessChain 66(gl_TessCoord) 22 151: 28(float) Load 150 152: 62(fvec3) CompositeConstruct 151 151 151 153: 62(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 147 149 152 Store 143(outNormal) 153 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 161 161 12 12 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 159 158(pos1) 41 188: 186(ptr) AccessChain 183(gl_in) 54 54 189: 154(fvec4) Load 188 190: 186(ptr) AccessChain 183(gl_in) 59 54 191: 154(fvec4) Load 190 192: 69(ptr) AccessChain 66(gl_TessCoord) 12 193: 28(float) Load 192 194: 154(fvec4) CompositeConstruct 193 193 193 193 195: 154(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 189 191 194 Store 158(pos1) 195 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 199 199 12 12 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 197 196(pos2) 41 202: 186(ptr) AccessChain 183(gl_in) 81 54 203: 154(fvec4) Load 202 204: 186(ptr) AccessChain 183(gl_in) 84 54 205: 154(fvec4) Load 204 206: 69(ptr) AccessChain 66(gl_TessCoord) 12 207: 28(float) Load 206 208: 154(fvec4) CompositeConstruct 207 207 207 207 209: 154(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 203 205 208 Store 196(pos2) 209 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 211 210(pos) 41 216: 154(fvec4) Load 158(pos1) 217: 154(fvec4) Load 196(pos2) 218: 69(ptr) AccessChain 66(gl_TessCoord) 22 219: 28(float) Load 218 220: 154(fvec4) CompositeConstruct 219 219 219 219 221: 154(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 216 217 220 Store 210(pos) 221 238: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 225 225 12 12 237: 228 Load 234(displacementMap) 239: 31(fvec2) Load 93(outUV) 241: 154(fvec4) ImageSampleExplicitLod 237 239 Lod 240 242: 28(float) CompositeExtract 241 0 279: 277(ptr) AccessChain 273(ubo) 276 280: 28(float) Load 279 281: 28(float) FMul 242 280 284: 282(ptr) AccessChain 210(pos) 22 285: 28(float) Load 284 286: 28(float) FSub 285 281 287: 282(ptr) AccessChain 210(pos) 22 Store 287 286 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 305: 303(ptr) AccessChain 273(ubo) 54 307: 243 Load 305 308: 303(ptr) AccessChain 273(ubo) 59 309: 243 Load 308 310: 243 MatrixTimesMatrix 307 309 311: 154(fvec4) Load 210(pos) 312: 154(fvec4) MatrixTimesVector 310 311 315: 313(ptr) AccessChain 300 54 Store 315 312 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 319 319 12 12 320: 154(fvec4) Load 210(pos) 322: 62(fvec3) VectorShuffle 320 320 0 1 2 323: 62(fvec3) FNegate 322 Store 316(outViewVec) 323 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 327 327 12 12 330: 328(ptr) AccessChain 273(ubo) 84 332: 154(fvec4) Load 330 333: 62(fvec3) VectorShuffle 332 332 0 1 2 334: 62(fvec3) Load 316(outViewVec) 335: 62(fvec3) FAdd 333 334 336: 62(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 335 Store 324(outLightVec) 336 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 340 340 12 12 341: 154(fvec4) Load 210(pos) 343: 62(fvec3) VectorShuffle 341 341 0 1 2 Store 337(outWorldPos) 343 349: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 347 347 12 12 348: 303(ptr) AccessChain 273(ubo) 59 350: 243 Load 348 351: 154(fvec4) Load 210(pos) 352: 154(fvec4) MatrixTimesVector 350 351 353: 28(float) CompositeExtract 352 0 354: 28(float) CompositeExtract 352 1 355: 28(float) CompositeExtract 352 2 356: 62(fvec3) CompositeConstruct 353 354 355 Store 344(outEyePos) 356 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 358 358 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.glsl.vert.out000066400000000000000000001132661506534232700237010ustar00rootroot00000000000000spv.debuginfo.glsl.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 447 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 14 "main" 35 42 47 55 65 83 305 323 328 353 371 390 428 437 2: String "spv.debuginfo.glsl.vert" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 /* 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; } " 29: String "float" 37: String "outColor" 44: String "inColor" 49: String "outUV" 57: String "inUV" 61: String "int" 67: String "instanceTexIndex" 78: String "s" 85: String "instanceRot" 95: String "bool" 100: String "modelview" 104: String "lightPos" 107: String "globSpeed" 111: String "UBO" 116: String "ubo" 126: String "c" 142: String "mx" 186: String "my" 223: String "mz" 244: String "rotMat" 274: String "gRotMat" 301: String "locPos" 307: String "inPos" 317: String "pos" 325: String "instanceScale" 330: String "instancePos" 341: String "gl_Position" 344: String "gl_PointSize" 346: String "gl_CullDistance" 349: String "gl_PerVertex" 355: String "" 373: String "outNormal" 392: String "inNormal" 409: String "lPos" 430: String "outLightVec" 439: String "outViewVec" Name 14 "main" Name 35 "outColor" Name 42 "inColor" Name 47 "outUV" Name 55 "inUV" Name 65 "instanceTexIndex" Name 76 "s" Name 83 "instanceRot" Name 98 "UBO" MemberName 98(UBO) 0 "projection" MemberName 98(UBO) 1 "modelview" MemberName 98(UBO) 2 "lightPos" MemberName 98(UBO) 3 "locSpeed" MemberName 98(UBO) 4 "globSpeed" Name 114 "ubo" Name 124 "c" Name 140 "mx" Name 184 "my" Name 221 "mz" Name 242 "rotMat" Name 272 "gRotMat" Name 299 "locPos" Name 305 "inPos" Name 315 "pos" Name 323 "instanceScale" Name 328 "instancePos" Name 339 "gl_PerVertex" MemberName 339(gl_PerVertex) 0 "gl_Position" MemberName 339(gl_PerVertex) 1 "gl_PointSize" MemberName 339(gl_PerVertex) 2 "gl_ClipDistance" MemberName 339(gl_PerVertex) 3 "gl_CullDistance" Name 353 "" Name 371 "outNormal" Name 390 "inNormal" Name 407 "lPos" Name 428 "outLightVec" Name 437 "outViewVec" Decorate 35(outColor) Location 1 Decorate 42(inColor) Location 3 Decorate 47(outUV) Location 2 Decorate 55(inUV) Location 2 Decorate 65(instanceTexIndex) Location 7 Decorate 83(instanceRot) Location 5 Decorate 98(UBO) Block MemberDecorate 98(UBO) 0 ColMajor MemberDecorate 98(UBO) 0 MatrixStride 16 MemberDecorate 98(UBO) 0 Offset 0 MemberDecorate 98(UBO) 1 ColMajor MemberDecorate 98(UBO) 1 MatrixStride 16 MemberDecorate 98(UBO) 1 Offset 64 MemberDecorate 98(UBO) 2 Offset 128 MemberDecorate 98(UBO) 3 Offset 144 MemberDecorate 98(UBO) 4 Offset 148 Decorate 114(ubo) Binding 0 Decorate 114(ubo) DescriptorSet 0 Decorate 305(inPos) Location 0 Decorate 323(instanceScale) Location 6 Decorate 328(instancePos) Location 4 Decorate 339(gl_PerVertex) Block MemberDecorate 339(gl_PerVertex) 0 BuiltIn Position MemberDecorate 339(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 339(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 339(gl_PerVertex) 3 BuiltIn CullDistance Decorate 371(outNormal) Location 0 Decorate 390(inNormal) Location 1 Decorate 428(outLightVec) Location 4 Decorate 437(outViewVec) Location 3 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 54 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 28: TypeFloat 32 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 31: TypeVector 28(float) 3 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 13 33: TypePointer Output 31(fvec3) 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 13 12 35(outColor): 33(ptr) Variable Output 38: 7(int) Constant 56 39: 7(int) Constant 8 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 37 32 18 38 12 21 37 35(outColor) 39 40: TypePointer Input 31(fvec3) 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 22 12 42(inColor): 40(ptr) Variable Input 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 44 32 18 38 12 21 44 42(inColor) 39 47(outUV): 33(ptr) Variable Output 50: 7(int) Constant 57 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 49 32 18 50 12 21 49 47(outUV) 39 51: TypeVector 28(float) 2 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 24 53: TypePointer Input 51(fvec2) 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 52 22 12 55(inUV): 53(ptr) Variable Input 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 57 52 18 50 12 21 57 55(inUV) 39 60: TypeInt 32 1 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 61 10 23 12 63: TypePointer Input 60(int) 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 22 12 65(instanceTexIndex): 63(ptr) Variable Input 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 67 62 18 50 12 21 67 65(instanceTexIndex) 39 73: TypePointer Function 28(float) 74: 7(int) Constant 7 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 74 12 79: 7(int) Constant 62 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 30 18 79 12 17 23 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 83(instanceRot): 40(ptr) Variable Input 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 85 32 18 79 12 21 85 83(instanceRot) 39 86: TypePointer Input 28(float) 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 22 12 90: TypeVector 28(float) 4 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 23 92: TypeMatrix 90(fvec4) 4 94: TypeBool 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 95 10 24 12 97: 94(bool) ConstantTrue 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 91 23 97 98(UBO): TypeStruct 92 92 90(fvec4) 28(float) 28(float) 101: 7(int) Constant 42 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 93 18 101 74 12 12 13 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 93 18 101 74 12 12 13 105: 7(int) Constant 43 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 91 18 105 74 12 12 13 108: 7(int) Constant 45 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 30 18 108 39 12 12 13 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 30 18 108 39 12 12 13 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 111 22 18 79 12 21 111 12 13 99 102 103 106 109 112: TypePointer Uniform 98(UBO) 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 110 24 12 114(ubo): 112(ptr) Variable Uniform 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 116 110 18 79 12 21 116 114(ubo) 39 117: 60(int) Constant 3 118: TypePointer Uniform 28(float) 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 24 12 127: 7(int) Constant 63 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 126 30 18 127 12 17 23 136: TypeMatrix 31(fvec3) 3 137: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 32 13 97 138: TypePointer Function 136 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 137 74 12 143: 7(int) Constant 65 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 137 18 143 12 17 23 146: 60(int) Constant 0 149: 28(float) Constant 0 151: TypePointer Function 31(fvec3) 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 74 12 154: 60(int) Constant 1 157: 7(int) Constant 66 162: 60(int) Constant 2 163: 28(float) Constant 1065353216 164: 31(fvec3) ConstantComposite 149 149 163 167: 7(int) Constant 67 170: 7(int) Constant 70 178: 7(int) Constant 71 187: 7(int) Constant 73 185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 186 137 18 187 12 17 23 194: 31(fvec3) ConstantComposite 149 163 149 197: 7(int) Constant 74 200: 7(int) Constant 75 207: 7(int) Constant 78 215: 7(int) Constant 79 224: 7(int) Constant 81 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 137 18 224 12 17 23 227: 31(fvec3) ConstantComposite 163 149 149 231: 7(int) Constant 82 237: 7(int) Constant 83 245: 7(int) Constant 85 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 137 18 245 12 17 23 255: 7(int) Constant 88 257: 60(int) Constant 4 264: 7(int) Constant 89 270: TypePointer Function 92 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 74 12 275: 7(int) Constant 90 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 93 18 275 12 17 23 281: TypePointer Function 90(fvec4) 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 74 12 284: 90(fvec4) ConstantComposite 149 163 149 149 287: 7(int) Constant 91 290: 7(int) Constant 92 295: 90(fvec4) ConstantComposite 149 149 149 163 298: 7(int) Constant 93 302: 7(int) Constant 95 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 301 91 18 302 12 17 23 305(inPos): 40(ptr) Variable Input 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 307 32 18 302 12 21 307 305(inPos) 39 318: 7(int) Constant 96 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 317 91 18 318 12 17 23 323(instanceScale): 86(ptr) Variable Input 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 325 30 18 318 12 21 325 323(instanceScale) 39 328(instancePos): 40(ptr) Variable Input 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 330 32 18 318 12 21 330 328(instancePos) 39 337: TypeArray 28(float) 22 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 30 22 339(gl_PerVertex): TypeStruct 90(fvec4) 28(float) 337 337 342: 7(int) Constant 24 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 341 91 18 22 342 12 12 13 343: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 344 30 18 22 101 12 12 13 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 346 338 18 22 245 12 12 13 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 346 338 18 22 245 12 12 13 350: 7(int) Constant 98 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 349 22 18 350 12 21 349 12 13 340 343 345 347 351: TypePointer Output 339(gl_PerVertex) 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 348 13 12 353: 351(ptr) Variable Output 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 355 348 18 350 12 21 355 353 39 356: TypePointer Uniform 92 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 24 12 368: TypePointer Output 90(fvec4) 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 13 12 371(outNormal): 33(ptr) Variable Output 374: 7(int) Constant 99 372: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 373 32 18 374 12 21 373 371(outNormal) 39 390(inNormal): 40(ptr) Variable Input 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 392 32 18 374 12 21 392 390(inNormal) 39 397: 7(int) Constant 101 410: 7(int) Constant 102 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 32 18 410 12 17 23 422: TypePointer Uniform 90(fvec4) 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 24 12 428(outLightVec): 33(ptr) Variable Output 431: 7(int) Constant 103 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 32 18 431 12 21 430 428(outLightVec) 39 437(outViewVec): 33(ptr) Variable Output 440: 7(int) Constant 104 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 439 32 18 440 12 21 439 437(outViewVec) 39 446: 7(int) Constant 105 14(main): 4 Function None 5 15: Label 76(s): 73(ptr) Variable Function 124(c): 73(ptr) Variable Function 140(mx): 138(ptr) Variable Function 184(my): 138(ptr) Variable Function 221(mz): 138(ptr) Variable Function 242(rotMat): 138(ptr) Variable Function 272(gRotMat): 270(ptr) Variable Function 299(locPos): 281(ptr) Variable Function 315(pos): 281(ptr) Variable Function 407(lPos): 151(ptr) Variable Function 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 38 38 12 12 45: 31(fvec3) Load 42(inColor) Store 35(outColor) 45 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 50 50 12 12 58: 51(fvec2) Load 55(inUV) 68: 60(int) Load 65(instanceTexIndex) 69: 28(float) ConvertSToF 68 70: 28(float) CompositeExtract 58 0 71: 28(float) CompositeExtract 58 1 72: 31(fvec3) CompositeConstruct 70 71 69 Store 47(outUV) 72 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 79 79 12 12 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 77 76(s) 81 88: 86(ptr) AccessChain 83(instanceRot) 12 89: 28(float) Load 88 120: 118(ptr) AccessChain 114(ubo) 117 121: 28(float) Load 120 122: 28(float) FAdd 89 121 123: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 122 Store 76(s) 123 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 127 127 12 12 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 125 124(c) 81 130: 86(ptr) AccessChain 83(instanceRot) 12 131: 28(float) Load 130 132: 118(ptr) AccessChain 114(ubo) 117 133: 28(float) Load 132 134: 28(float) FAdd 131 133 135: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 134 Store 124(c) 135 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 143 143 12 12 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(mx) 81 147: 28(float) Load 124(c) 148: 28(float) Load 76(s) 150: 31(fvec3) CompositeConstruct 147 148 149 153: 151(ptr) AccessChain 140(mx) 146 Store 153 150 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 157 157 12 12 155: 28(float) Load 76(s) 158: 28(float) FNegate 155 159: 28(float) Load 124(c) 160: 31(fvec3) CompositeConstruct 158 159 149 161: 151(ptr) AccessChain 140(mx) 154 Store 161 160 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 167 167 12 12 165: 151(ptr) AccessChain 140(mx) 162 Store 165 164 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 170 170 12 12 168: 86(ptr) AccessChain 83(instanceRot) 22 171: 28(float) Load 168 172: 118(ptr) AccessChain 114(ubo) 117 173: 28(float) Load 172 174: 28(float) FAdd 171 173 175: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 174 Store 76(s) 175 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 178 178 12 12 176: 86(ptr) AccessChain 83(instanceRot) 22 179: 28(float) Load 176 180: 118(ptr) AccessChain 114(ubo) 117 181: 28(float) Load 180 182: 28(float) FAdd 179 181 183: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 182 Store 124(c) 183 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 187 187 12 12 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 185 184(my) 81 190: 28(float) Load 124(c) 191: 28(float) Load 76(s) 192: 31(fvec3) CompositeConstruct 190 149 191 193: 151(ptr) AccessChain 184(my) 146 Store 193 192 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 197 197 12 12 195: 151(ptr) AccessChain 184(my) 154 Store 195 194 199: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 200 200 12 12 198: 28(float) Load 76(s) 201: 28(float) FNegate 198 202: 28(float) Load 124(c) 203: 31(fvec3) CompositeConstruct 201 149 202 204: 151(ptr) AccessChain 184(my) 162 Store 204 203 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 207 207 12 12 205: 86(ptr) AccessChain 83(instanceRot) 24 208: 28(float) Load 205 209: 118(ptr) AccessChain 114(ubo) 117 210: 28(float) Load 209 211: 28(float) FAdd 208 210 212: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 211 Store 76(s) 212 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 215 215 12 12 213: 86(ptr) AccessChain 83(instanceRot) 24 216: 28(float) Load 213 217: 118(ptr) AccessChain 114(ubo) 117 218: 28(float) Load 217 219: 28(float) FAdd 216 218 220: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 219 Store 124(c) 220 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 224 224 12 12 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(mz) 81 228: 151(ptr) AccessChain 221(mz) 146 Store 228 227 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 231 231 12 12 229: 28(float) Load 124(c) 232: 28(float) Load 76(s) 233: 31(fvec3) CompositeConstruct 149 229 232 234: 151(ptr) AccessChain 221(mz) 154 Store 234 233 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 237 237 12 12 235: 28(float) Load 76(s) 238: 28(float) FNegate 235 239: 28(float) Load 124(c) 240: 31(fvec3) CompositeConstruct 149 238 239 241: 151(ptr) AccessChain 221(mz) 162 Store 241 240 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 245 245 12 12 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(rotMat) 81 248: 136 Load 221(mz) 249: 136 Load 184(my) 250: 136 MatrixTimesMatrix 248 249 251: 136 Load 140(mx) 252: 136 MatrixTimesMatrix 250 251 Store 242(rotMat) 252 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 255 255 12 12 253: 86(ptr) AccessChain 83(instanceRot) 22 256: 28(float) Load 253 258: 118(ptr) AccessChain 114(ubo) 257 259: 28(float) Load 258 260: 28(float) FAdd 256 259 261: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 260 Store 76(s) 261 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 264 264 12 12 262: 86(ptr) AccessChain 83(instanceRot) 22 265: 28(float) Load 262 266: 118(ptr) AccessChain 114(ubo) 257 267: 28(float) Load 266 268: 28(float) FAdd 265 267 269: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 268 Store 124(c) 269 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 275 275 12 12 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 273 272(gRotMat) 81 278: 28(float) Load 124(c) 279: 28(float) Load 76(s) 280: 90(fvec4) CompositeConstruct 278 149 279 149 283: 281(ptr) AccessChain 272(gRotMat) 146 Store 283 280 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 287 287 12 12 285: 281(ptr) AccessChain 272(gRotMat) 154 Store 285 284 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 290 290 12 12 288: 28(float) Load 76(s) 291: 28(float) FNegate 288 292: 28(float) Load 124(c) 293: 90(fvec4) CompositeConstruct 291 149 292 149 294: 281(ptr) AccessChain 272(gRotMat) 162 Store 294 293 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 298 298 12 12 296: 281(ptr) AccessChain 272(gRotMat) 117 Store 296 295 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 302 302 12 12 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 300 299(locPos) 81 308: 31(fvec3) Load 305(inPos) 309: 136 Load 242(rotMat) 310: 31(fvec3) VectorTimesMatrix 308 309 311: 28(float) CompositeExtract 310 0 312: 28(float) CompositeExtract 310 1 313: 28(float) CompositeExtract 310 2 314: 90(fvec4) CompositeConstruct 311 312 313 163 Store 299(locPos) 314 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 318 318 12 12 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 316 315(pos) 81 321: 90(fvec4) Load 299(locPos) 322: 31(fvec3) VectorShuffle 321 321 0 1 2 326: 28(float) Load 323(instanceScale) 327: 31(fvec3) VectorTimesScalar 322 326 331: 31(fvec3) Load 328(instancePos) 332: 31(fvec3) FAdd 327 331 333: 28(float) CompositeExtract 332 0 334: 28(float) CompositeExtract 332 1 335: 28(float) CompositeExtract 332 2 336: 90(fvec4) CompositeConstruct 333 334 335 163 Store 315(pos) 336 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 350 350 12 12 358: 356(ptr) AccessChain 114(ubo) 146 360: 92 Load 358 361: 356(ptr) AccessChain 114(ubo) 154 362: 92 Load 361 363: 92 MatrixTimesMatrix 360 362 364: 92 Load 272(gRotMat) 365: 92 MatrixTimesMatrix 363 364 366: 90(fvec4) Load 315(pos) 367: 90(fvec4) MatrixTimesVector 365 366 370: 368(ptr) AccessChain 353 146 Store 370 367 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 374 374 12 12 375: 356(ptr) AccessChain 114(ubo) 154 377: 92 Load 375 378: 92 Load 272(gRotMat) 379: 92 MatrixTimesMatrix 377 378 380: 90(fvec4) CompositeExtract 379 0 381: 31(fvec3) VectorShuffle 380 380 0 1 2 382: 90(fvec4) CompositeExtract 379 1 383: 31(fvec3) VectorShuffle 382 382 0 1 2 384: 90(fvec4) CompositeExtract 379 2 385: 31(fvec3) VectorShuffle 384 384 0 1 2 386: 136 CompositeConstruct 381 383 385 387: 136 Load 242(rotMat) 388: 136 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 387 389: 136 MatrixTimesMatrix 386 388 393: 31(fvec3) Load 390(inNormal) 394: 31(fvec3) MatrixTimesVector 389 393 Store 371(outNormal) 394 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 397 397 12 12 395: 356(ptr) AccessChain 114(ubo) 154 398: 92 Load 395 399: 31(fvec3) Load 305(inPos) 400: 31(fvec3) Load 328(instancePos) 401: 31(fvec3) FAdd 399 400 402: 28(float) CompositeExtract 401 0 403: 28(float) CompositeExtract 401 1 404: 28(float) CompositeExtract 401 2 405: 90(fvec4) CompositeConstruct 402 403 404 163 406: 90(fvec4) MatrixTimesVector 398 405 Store 315(pos) 406 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 410 410 12 12 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(lPos) 81 413: 356(ptr) AccessChain 114(ubo) 154 414: 92 Load 413 415: 90(fvec4) CompositeExtract 414 0 416: 31(fvec3) VectorShuffle 415 415 0 1 2 417: 90(fvec4) CompositeExtract 414 1 418: 31(fvec3) VectorShuffle 417 417 0 1 2 419: 90(fvec4) CompositeExtract 414 2 420: 31(fvec3) VectorShuffle 419 419 0 1 2 421: 136 CompositeConstruct 416 418 420 424: 422(ptr) AccessChain 114(ubo) 162 425: 90(fvec4) Load 424 426: 31(fvec3) VectorShuffle 425 425 0 1 2 427: 31(fvec3) MatrixTimesVector 421 426 Store 407(lPos) 427 433: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 431 431 12 12 432: 31(fvec3) Load 407(lPos) 434: 90(fvec4) Load 315(pos) 435: 31(fvec3) VectorShuffle 434 434 0 1 2 436: 31(fvec3) FSub 432 435 Store 428(outLightVec) 436 442: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 440 440 12 12 441: 90(fvec4) Load 315(pos) 443: 31(fvec3) VectorShuffle 441 441 0 1 2 444: 31(fvec3) FNegate 443 Store 437(outViewVec) 444 445: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 446 446 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.hlsl.comp.out000066400000000000000000002371231506534232700236570ustar00rootroot00000000000000spv.debuginfo.hlsl.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 992 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 6 "main" 987 ExecutionMode 6 LocalSize 10 10 1 2: String "spv.debuginfo.hlsl.comp" 9: String "float" 12: String "uint" 32: String "springForce" 35: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 /* 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 particleIn; [[vk::binding(1)]] RWStructuredBuffer 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); } } " 42: String "p0" 48: String "p1" 52: String "restDist" 63: String "@main" 67: String "id" 75: String "dist" 90: String "int" 96: String "sphereRadius" 107: String "gravity" 112: String "particleCount" 115: String "UBO" 118: String "params" 122: String "ubo" 127: String "" 151: String "index" 178: String "bool" 189: String "normal" 196: String "pinned" 200: String "Particle" 206: String "@data" 210: String "particleIn" 232: String "particleOut" 259: String "force" 273: String "pos" 283: String "vel" 575: String "f" 624: String "sphereDist" 676: String "calculateNormals" 680: String "PushConstants" 684: String "pushConstants" 687: String "$Global" 711: String "a" 717: String "b" 721: String "c" Name 6 "main" Name 30 "springForce(vf3;vf3;f1;" Name 27 "p0" Name 28 "p1" Name 29 "restDist" Name 61 "@main(vu3;" Name 60 "id" Name 73 "dist" Name 94 "UBO" MemberName 94(UBO) 0 "deltaT" MemberName 94(UBO) 1 "particleMass" MemberName 94(UBO) 2 "springStiffness" MemberName 94(UBO) 3 "damping" MemberName 94(UBO) 4 "restDistH" MemberName 94(UBO) 5 "restDistV" MemberName 94(UBO) 6 "restDistD" MemberName 94(UBO) 7 "sphereRadius" MemberName 94(UBO) 8 "spherePos" MemberName 94(UBO) 9 "gravity" MemberName 94(UBO) 10 "particleCount" Name 116 "ubo" MemberName 116(ubo) 0 "params" Name 125 "" Name 149 "index" Name 187 "Particle" MemberName 187(Particle) 0 "pos" MemberName 187(Particle) 1 "vel" MemberName 187(Particle) 2 "uv" MemberName 187(Particle) 3 "normal" MemberName 187(Particle) 4 "pinned" Name 204 "particleIn" MemberName 204(particleIn) 0 "@data" Name 213 "particleIn" Name 228 "particleOut" MemberName 228(particleOut) 0 "@data" Name 236 "particleOut" Name 257 "force" Name 271 "pos" Name 281 "vel" Name 304 "param" Name 308 "param" Name 310 "param" Name 334 "param" Name 338 "param" Name 340 "param" Name 368 "param" Name 372 "param" Name 374 "param" Name 397 "param" Name 401 "param" Name 403 "param" Name 436 "param" Name 440 "param" Name 442 "param" Name 470 "param" Name 474 "param" Name 476 "param" Name 512 "param" Name 516 "param" Name 518 "param" Name 550 "param" Name 554 "param" Name 556 "param" Name 573 "f" Name 622 "sphereDist" Name 674 "PushConstants" MemberName 674(PushConstants) 0 "calculateNormals" Name 682 "$Global" MemberName 682($Global) 0 "pushConstants" Name 690 "" Name 702 "normal" Name 709 "a" Name 715 "b" Name 719 "c" Name 985 "id" Name 987 "id" Name 989 "param" MemberDecorate 94(UBO) 0 Offset 0 MemberDecorate 94(UBO) 1 Offset 4 MemberDecorate 94(UBO) 2 Offset 8 MemberDecorate 94(UBO) 3 Offset 12 MemberDecorate 94(UBO) 4 Offset 16 MemberDecorate 94(UBO) 5 Offset 20 MemberDecorate 94(UBO) 6 Offset 24 MemberDecorate 94(UBO) 7 Offset 28 MemberDecorate 94(UBO) 8 Offset 32 MemberDecorate 94(UBO) 9 Offset 48 MemberDecorate 94(UBO) 10 Offset 64 Decorate 116(ubo) Block MemberDecorate 116(ubo) 0 Offset 0 Decorate 125 Binding 2 Decorate 125 DescriptorSet 0 MemberDecorate 187(Particle) 0 Offset 0 MemberDecorate 187(Particle) 1 Offset 16 MemberDecorate 187(Particle) 2 Offset 32 MemberDecorate 187(Particle) 3 Offset 48 MemberDecorate 187(Particle) 4 Offset 64 Decorate 202 ArrayStride 80 Decorate 204(particleIn) BufferBlock MemberDecorate 204(particleIn) 0 NonWritable MemberDecorate 204(particleIn) 0 Offset 0 Decorate 213(particleIn) NonWritable Decorate 213(particleIn) Binding 0 Decorate 213(particleIn) DescriptorSet 0 Decorate 226 ArrayStride 80 Decorate 228(particleOut) BufferBlock MemberDecorate 228(particleOut) 0 Offset 0 Decorate 236(particleOut) Binding 1 Decorate 236(particleOut) DescriptorSet 0 MemberDecorate 674(PushConstants) 0 Offset 0 Decorate 682($Global) Block MemberDecorate 682($Global) 0 Offset 0 Decorate 690 Binding 3 Decorate 690 DescriptorSet 0 Decorate 987(id) BuiltIn GlobalInvocationId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 11: TypeInt 32 0 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 3 19: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 20: TypePointer Function 18(fvec3) 21: 11(int) Constant 7 22: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 21 16 23: TypePointer Function 8(float) 24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 25: TypeFunction 18(fvec3) 20(ptr) 20(ptr) 23(ptr) 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 10 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 35 36: 11(int) Constant 75 38: 11(int) Constant 1 39: 11(int) Constant 4 40: 11(int) Constant 5 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 38 39 34 40 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 32 26 34 36 16 37 32 17 36 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 19 34 36 16 33 39 38 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 49: 11(int) Constant 2 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 19 34 36 16 33 39 49 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 10 34 36 16 33 39 17 54: TypeVector 11(int) 3 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 56: TypePointer Function 54(ivec3) 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 55 21 16 58: TypeFunction 4 56(ptr) 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 55 65: 11(int) Constant 82 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 63 59 34 65 16 37 63 17 65 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 55 34 65 16 64 39 38 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 33 76: 11(int) Constant 76 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 75 19 34 76 16 72 39 85: 11(int) Constant 77 87: TypeVector 8(float) 4 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 39 89: TypeInt 32 1 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 90 14 39 16 92: TypeVector 89(int) 2 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 91 49 94(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 87(fvec4) 87(fvec4) 92(ivec2) 97: 11(int) Constant 48 98: 11(int) Constant 20 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 10 34 97 98 16 16 17 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 10 34 97 98 16 16 17 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 10 34 97 98 16 16 17 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 10 34 97 98 16 16 17 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 10 34 97 98 16 16 17 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 10 34 97 98 16 16 17 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 10 34 97 98 16 16 17 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 10 34 97 98 16 16 17 108: 11(int) Constant 50 109: 11(int) Constant 16 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 88 34 108 109 16 16 17 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 88 34 108 109 16 16 17 113: 11(int) Constant 51 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 112 93 34 113 98 16 16 17 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 115 38 34 85 16 37 115 16 17 95 99 100 101 102 103 104 105 106 110 111 116(ubo): TypeStruct 94(UBO) 119: 11(int) Constant 56 120: 11(int) Constant 12 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 118 114 34 119 120 16 16 17 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 122 38 34 85 16 37 122 16 17 117 123: TypePointer Uniform 116(ubo) 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 121 49 16 125: 123(ptr) Variable Uniform 128: 11(int) Constant 8 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 127 121 34 85 16 37 127 125 128 129: 89(int) Constant 0 130: 89(int) Constant 2 131: TypePointer Uniform 8(float) 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 49 16 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 64 147: TypePointer Function 11(int) 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 21 16 152: 11(int) Constant 83 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 151 13 34 152 16 146 39 158: 89(int) Constant 10 159: TypePointer Uniform 89(int) 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 49 16 170: 11(int) Constant 84 177: TypeBool 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 178 14 49 16 185: 11(int) Constant 85 187(Particle): TypeStruct 87(fvec4) 87(fvec4) 87(fvec4) 87(fvec4) 8(float) 190: 11(int) Constant 30 191: 11(int) Constant 15 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 189 88 34 190 191 16 16 17 192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 189 88 34 190 191 16 16 17 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 189 88 34 190 191 16 16 17 194: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 189 88 34 190 191 16 16 17 197: 11(int) Constant 31 198: 11(int) Constant 14 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 196 10 34 197 198 16 16 17 201: 11(int) Constant 88 199: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 200 38 34 201 16 37 200 16 17 188 192 193 194 195 202: TypeRuntimeArray 187(Particle) 203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 199 16 204(particleIn): TypeStruct 202 207: 11(int) Constant 35 208: 11(int) Constant 28 205: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 206 203 34 207 208 16 16 17 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 210 38 34 201 16 37 210 16 17 205 211: TypePointer Uniform 204(particleIn) 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 209 49 16 213(particleIn): 211(ptr) Variable Uniform 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 210 209 34 201 16 37 210 213(particleIn) 128 218: 89(int) Constant 4 221: 8(float) Constant 1065353216 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 226: TypeRuntimeArray 187(Particle) 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 199 16 228(particleOut): TypeStruct 226 230: 11(int) Constant 37 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 206 227 34 230 190 16 16 17 233: 11(int) Constant 89 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 232 38 34 233 16 37 232 16 17 229 234: TypePointer Uniform 228(particleOut) 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 231 49 16 236(particleOut): 234(ptr) Variable Uniform 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 232 231 34 233 16 37 232 236(particleOut) 128 242: TypePointer Uniform 87(fvec4) 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 49 16 249: 11(int) Constant 90 250: 89(int) Constant 1 251: 8(float) Constant 0 252: 87(fvec4) ConstantComposite 251 251 251 251 255: 11(int) Constant 91 260: 11(int) Constant 95 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 259 19 34 260 16 146 39 264: 89(int) Constant 9 274: 11(int) Constant 97 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 273 19 34 274 16 146 39 284: 11(int) Constant 98 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 283 19 34 284 16 146 39 293: 11(int) Constant 102 298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 302: 11(int) Constant 103 319: 11(int) Constant 106 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 332: 11(int) Constant 107 349: 11(int) Constant 110 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 362: 11(int) Constant 111 367: 89(int) Constant 5 383: 11(int) Constant 114 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 392: 11(int) Constant 115 412: 11(int) Constant 118 425: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 429: 11(int) Constant 119 435: 89(int) Constant 6 451: 11(int) Constant 122 460: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 464: 11(int) Constant 123 485: 11(int) Constant 126 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 506: 11(int) Constant 127 527: 11(int) Constant 130 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 544: 11(int) Constant 131 562: 89(int) Constant 3 566: 11(int) Constant 134 576: 11(int) Constant 137 574: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 575 19 34 576 16 146 39 586: 11(int) Constant 138 593: 8(float) Constant 1056964608 610: 11(int) Constant 139 625: 11(int) Constant 142 623: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 624 19 34 625 16 146 39 632: 89(int) Constant 8 639: 11(int) Constant 143 641: 89(int) Constant 7 644: 8(float) Constant 1008981770 649: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 653: 11(int) Constant 145 672: 11(int) Constant 147 674(PushConstants): TypeStruct 11(int) 677: 11(int) Constant 67 678: 11(int) Constant 23 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 676 13 34 677 678 16 16 17 681: 11(int) Constant 151 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 680 38 34 681 16 37 680 16 17 675 682($Global): TypeStruct 674(PushConstants) 685: 11(int) Constant 71 683: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 684 679 34 685 191 16 16 17 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 687 38 34 681 16 37 687 16 17 683 688: TypePointer Uniform 682($Global) 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 686 49 16 690: 688(ptr) Variable Uniform 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 127 686 34 681 16 37 127 690 128 692: TypePointer Uniform 11(int) 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 49 16 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 146 704: 11(int) Constant 152 703: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 189 19 34 704 16 701 39 708: 18(fvec3) ConstantComposite 251 251 251 712: 11(int) Constant 153 710: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 711 19 34 712 16 701 39 716: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 717 19 34 712 16 701 39 720: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 721 19 34 712 16 701 39 725: 11(int) Constant 154 730: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 701 734: 11(int) Constant 155 739: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 730 743: 11(int) Constant 156 752: 11(int) Constant 157 765: 11(int) Constant 158 777: 11(int) Constant 159 789: 11(int) Constant 161 798: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 730 802: 11(int) Constant 162 814: 11(int) Constant 163 827: 11(int) Constant 164 836: 11(int) Constant 165 848: 11(int) Constant 168 857: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 701 861: 11(int) Constant 169 866: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 857 870: 11(int) Constant 170 882: 11(int) Constant 171 895: 11(int) Constant 172 904: 11(int) Constant 173 916: 11(int) Constant 175 925: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 34 16 16 857 929: 11(int) Constant 176 938: 11(int) Constant 177 951: 11(int) Constant 178 963: 11(int) Constant 179 975: 11(int) Constant 182 986: TypePointer Input 54(ivec3) 987(id): 986(ptr) Variable Input 6(main): 4 Function None 5 7: Label 985(id): 56(ptr) Variable Function 989(param): 56(ptr) Variable Function 988: 54(ivec3) Load 987(id) Store 985(id) 988 990: 54(ivec3) Load 985(id) Store 989(param) 990 991: 4 FunctionCall 61(@main(vu3;) 989(param) Return FunctionEnd 30(springForce(vf3;vf3;f1;): 18(fvec3) Function None 25 27(p0): 20(ptr) FunctionParameter 28(p1): 20(ptr) FunctionParameter 29(restDist): 23(ptr) FunctionParameter 31: Label 73(dist): 20(ptr) Variable Function 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 36 36 16 16 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 27(p0) 44 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 28(p1) 44 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 29(restDist) 44 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 33 30(springForce(vf3;vf3;f1;) 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 72 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 76 76 16 16 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 74 73(dist) 44 80: 18(fvec3) Load 27(p0) 81: 18(fvec3) Load 28(p1) 82: 18(fvec3) FSub 80 81 Store 73(dist) 82 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 85 85 16 16 83: 18(fvec3) Load 73(dist) 86: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 83 133: 131(ptr) AccessChain 125 129 130 134: 8(float) Load 133 135: 18(fvec3) VectorTimesScalar 86 134 136: 18(fvec3) Load 73(dist) 137: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 136 138: 8(float) Load 29(restDist) 139: 8(float) FSub 137 138 140: 18(fvec3) VectorTimesScalar 135 139 ReturnValue 140 FunctionEnd 61(@main(vu3;): 4 Function None 58 60(id): 56(ptr) FunctionParameter 62: Label 149(index): 147(ptr) Variable Function 257(force): 20(ptr) Variable Function 271(pos): 20(ptr) Variable Function 281(vel): 20(ptr) Variable Function 304(param): 20(ptr) Variable Function 308(param): 20(ptr) Variable Function 310(param): 23(ptr) Variable Function 334(param): 20(ptr) Variable Function 338(param): 20(ptr) Variable Function 340(param): 23(ptr) Variable Function 368(param): 20(ptr) Variable Function 372(param): 20(ptr) Variable Function 374(param): 23(ptr) Variable Function 397(param): 20(ptr) Variable Function 401(param): 20(ptr) Variable Function 403(param): 23(ptr) Variable Function 436(param): 20(ptr) Variable Function 440(param): 20(ptr) Variable Function 442(param): 23(ptr) Variable Function 470(param): 20(ptr) Variable Function 474(param): 20(ptr) Variable Function 476(param): 23(ptr) Variable Function 512(param): 20(ptr) Variable Function 516(param): 20(ptr) Variable Function 518(param): 23(ptr) Variable Function 550(param): 20(ptr) Variable Function 554(param): 20(ptr) Variable Function 556(param): 23(ptr) Variable Function 573(f): 20(ptr) Variable Function 622(sphereDist): 20(ptr) Variable Function 702(normal): 20(ptr) Variable Function 709(a): 20(ptr) Variable Function 715(b): 20(ptr) Variable Function 719(c): 20(ptr) Variable Function 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 65 65 16 16 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 60(id) 44 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 64 61(@main(vu3;) 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 152 152 16 16 153: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 150 149(index) 44 156: 147(ptr) AccessChain 60(id) 38 157: 11(int) Load 156 161: 159(ptr) AccessChain 125 129 158 16 162: 89(int) Load 161 163: 11(int) Bitcast 162 164: 11(int) IMul 157 163 165: 147(ptr) AccessChain 60(id) 16 166: 11(int) Load 165 167: 11(int) IAdd 164 166 Store 149(index) 167 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 170 170 16 16 168: 11(int) Load 149(index) 171: 159(ptr) AccessChain 125 129 158 16 172: 89(int) Load 171 173: 159(ptr) AccessChain 125 129 158 38 174: 89(int) Load 173 175: 89(int) IMul 172 174 176: 11(int) Bitcast 175 180: 177(bool) UGreaterThan 168 176 SelectionMerge 182 None BranchConditional 180 181 182 181: Label 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 185 185 16 16 Return 182: Label 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 201 201 16 16 215: 11(int) Load 149(index) 219: 131(ptr) AccessChain 213(particleIn) 129 215 218 220: 8(float) Load 219 222: 177(bool) FOrdEqual 220 221 SelectionMerge 224 None BranchConditional 222 223 224 223: Label 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 225 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 233 233 16 16 238: 11(int) Load 149(index) 241: 11(int) Load 149(index) 244: 242(ptr) AccessChain 236(particleOut) 129 241 129 245: 87(fvec4) Load 244 246: 242(ptr) AccessChain 236(particleOut) 129 238 129 Store 246 245 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 249 249 16 16 247: 11(int) Load 149(index) 253: 242(ptr) AccessChain 236(particleOut) 129 247 250 Store 253 252 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 255 255 16 16 Return 224: Label 262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 260 260 16 16 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 258 257(force) 44 265: 242(ptr) AccessChain 125 129 264 266: 87(fvec4) Load 265 267: 18(fvec3) VectorShuffle 266 266 0 1 2 268: 131(ptr) AccessChain 125 129 250 269: 8(float) Load 268 270: 18(fvec3) VectorTimesScalar 267 269 Store 257(force) 270 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 274 274 16 16 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 272 271(pos) 44 277: 11(int) Load 149(index) 278: 242(ptr) AccessChain 213(particleIn) 129 277 129 279: 87(fvec4) Load 278 280: 18(fvec3) VectorShuffle 279 279 0 1 2 Store 271(pos) 280 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 284 284 16 16 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 282 281(vel) 44 287: 11(int) Load 149(index) 288: 242(ptr) AccessChain 213(particleIn) 129 287 250 289: 87(fvec4) Load 288 290: 18(fvec3) VectorShuffle 289 289 0 1 2 Store 281(vel) 290 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 293 293 16 16 291: 147(ptr) AccessChain 60(id) 16 294: 11(int) Load 291 295: 177(bool) UGreaterThan 294 16 SelectionMerge 297 None BranchConditional 295 296 297 296: Label 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 298 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 302 302 16 16 299: 11(int) Load 149(index) 303: 11(int) ISub 299 38 305: 242(ptr) AccessChain 213(particleIn) 129 303 129 306: 87(fvec4) Load 305 307: 18(fvec3) VectorShuffle 306 306 0 1 2 Store 304(param) 307 309: 18(fvec3) Load 271(pos) Store 308(param) 309 311: 131(ptr) AccessChain 125 129 218 312: 8(float) Load 311 Store 310(param) 312 313: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 304(param) 308(param) 310(param) 314: 18(fvec3) Load 257(force) 315: 18(fvec3) FAdd 314 313 Store 257(force) 315 Branch 297 297: Label 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 319 319 16 16 316: 147(ptr) AccessChain 60(id) 16 320: 11(int) Load 316 321: 159(ptr) AccessChain 125 129 158 16 322: 89(int) Load 321 323: 89(int) ISub 322 250 324: 11(int) Bitcast 323 325: 177(bool) ULessThan 320 324 SelectionMerge 327 None BranchConditional 325 326 327 326: Label 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 328 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 332 332 16 16 329: 11(int) Load 149(index) 333: 11(int) IAdd 329 38 335: 242(ptr) AccessChain 213(particleIn) 129 333 129 336: 87(fvec4) Load 335 337: 18(fvec3) VectorShuffle 336 336 0 1 2 Store 334(param) 337 339: 18(fvec3) Load 271(pos) Store 338(param) 339 341: 131(ptr) AccessChain 125 129 218 342: 8(float) Load 341 Store 340(param) 342 343: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 334(param) 338(param) 340(param) 344: 18(fvec3) Load 257(force) 345: 18(fvec3) FAdd 344 343 Store 257(force) 345 Branch 327 327: Label 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 349 349 16 16 346: 147(ptr) AccessChain 60(id) 38 350: 11(int) Load 346 351: 159(ptr) AccessChain 125 129 158 38 352: 89(int) Load 351 353: 89(int) ISub 352 250 354: 11(int) Bitcast 353 355: 177(bool) ULessThan 350 354 SelectionMerge 357 None BranchConditional 355 356 357 356: Label 360: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 358 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 362 362 16 16 359: 11(int) Load 149(index) 363: 159(ptr) AccessChain 125 129 158 16 364: 89(int) Load 363 365: 11(int) Bitcast 364 366: 11(int) IAdd 359 365 369: 242(ptr) AccessChain 213(particleIn) 129 366 129 370: 87(fvec4) Load 369 371: 18(fvec3) VectorShuffle 370 370 0 1 2 Store 368(param) 371 373: 18(fvec3) Load 271(pos) Store 372(param) 373 375: 131(ptr) AccessChain 125 129 367 376: 8(float) Load 375 Store 374(param) 376 377: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 368(param) 372(param) 374(param) 378: 18(fvec3) Load 257(force) 379: 18(fvec3) FAdd 378 377 Store 257(force) 379 Branch 357 357: Label 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 383 383 16 16 380: 147(ptr) AccessChain 60(id) 38 384: 11(int) Load 380 385: 177(bool) UGreaterThan 384 16 SelectionMerge 387 None BranchConditional 385 386 387 386: Label 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 388 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 392 392 16 16 389: 11(int) Load 149(index) 393: 159(ptr) AccessChain 125 129 158 16 394: 89(int) Load 393 395: 11(int) Bitcast 394 396: 11(int) ISub 389 395 398: 242(ptr) AccessChain 213(particleIn) 129 396 129 399: 87(fvec4) Load 398 400: 18(fvec3) VectorShuffle 399 399 0 1 2 Store 397(param) 400 402: 18(fvec3) Load 271(pos) Store 401(param) 402 404: 131(ptr) AccessChain 125 129 367 405: 8(float) Load 404 Store 403(param) 405 406: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 397(param) 401(param) 403(param) 407: 18(fvec3) Load 257(force) 408: 18(fvec3) FAdd 407 406 Store 257(force) 408 Branch 387 387: Label 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 412 412 16 16 409: 147(ptr) AccessChain 60(id) 16 413: 11(int) Load 409 414: 177(bool) UGreaterThan 413 16 415: 147(ptr) AccessChain 60(id) 38 416: 11(int) Load 415 417: 159(ptr) AccessChain 125 129 158 38 418: 89(int) Load 417 419: 89(int) ISub 418 250 420: 11(int) Bitcast 419 421: 177(bool) ULessThan 416 420 422: 177(bool) LogicalAnd 414 421 SelectionMerge 424 None BranchConditional 422 423 424 423: Label 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 425 428: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 429 429 16 16 426: 11(int) Load 149(index) 430: 159(ptr) AccessChain 125 129 158 16 431: 89(int) Load 430 432: 11(int) Bitcast 431 433: 11(int) IAdd 426 432 434: 11(int) ISub 433 38 437: 242(ptr) AccessChain 213(particleIn) 129 434 129 438: 87(fvec4) Load 437 439: 18(fvec3) VectorShuffle 438 438 0 1 2 Store 436(param) 439 441: 18(fvec3) Load 271(pos) Store 440(param) 441 443: 131(ptr) AccessChain 125 129 435 444: 8(float) Load 443 Store 442(param) 444 445: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 436(param) 440(param) 442(param) 446: 18(fvec3) Load 257(force) 447: 18(fvec3) FAdd 446 445 Store 257(force) 447 Branch 424 424: Label 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 450: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 451 451 16 16 448: 147(ptr) AccessChain 60(id) 16 452: 11(int) Load 448 453: 177(bool) UGreaterThan 452 16 454: 147(ptr) AccessChain 60(id) 38 455: 11(int) Load 454 456: 177(bool) UGreaterThan 455 16 457: 177(bool) LogicalAnd 453 456 SelectionMerge 459 None BranchConditional 457 458 459 458: Label 462: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 460 463: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 464 464 16 16 461: 11(int) Load 149(index) 465: 159(ptr) AccessChain 125 129 158 16 466: 89(int) Load 465 467: 11(int) Bitcast 466 468: 11(int) ISub 461 467 469: 11(int) ISub 468 38 471: 242(ptr) AccessChain 213(particleIn) 129 469 129 472: 87(fvec4) Load 471 473: 18(fvec3) VectorShuffle 472 472 0 1 2 Store 470(param) 473 475: 18(fvec3) Load 271(pos) Store 474(param) 475 477: 131(ptr) AccessChain 125 129 435 478: 8(float) Load 477 Store 476(param) 478 479: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 470(param) 474(param) 476(param) 480: 18(fvec3) Load 257(force) 481: 18(fvec3) FAdd 480 479 Store 257(force) 481 Branch 459 459: Label 483: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 485 485 16 16 482: 147(ptr) AccessChain 60(id) 16 486: 11(int) Load 482 487: 159(ptr) AccessChain 125 129 158 16 488: 89(int) Load 487 489: 89(int) ISub 488 250 490: 11(int) Bitcast 489 491: 177(bool) ULessThan 486 490 492: 147(ptr) AccessChain 60(id) 38 493: 11(int) Load 492 494: 159(ptr) AccessChain 125 129 158 38 495: 89(int) Load 494 496: 89(int) ISub 495 250 497: 11(int) Bitcast 496 498: 177(bool) ULessThan 493 497 499: 177(bool) LogicalAnd 491 498 SelectionMerge 501 None BranchConditional 499 500 501 500: Label 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 502 505: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 506 506 16 16 503: 11(int) Load 149(index) 507: 159(ptr) AccessChain 125 129 158 16 508: 89(int) Load 507 509: 11(int) Bitcast 508 510: 11(int) IAdd 503 509 511: 11(int) IAdd 510 38 513: 242(ptr) AccessChain 213(particleIn) 129 511 129 514: 87(fvec4) Load 513 515: 18(fvec3) VectorShuffle 514 514 0 1 2 Store 512(param) 515 517: 18(fvec3) Load 271(pos) Store 516(param) 517 519: 131(ptr) AccessChain 125 129 435 520: 8(float) Load 519 Store 518(param) 520 521: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 512(param) 516(param) 518(param) 522: 18(fvec3) Load 257(force) 523: 18(fvec3) FAdd 522 521 Store 257(force) 523 Branch 501 501: Label 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 526: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 527 527 16 16 524: 147(ptr) AccessChain 60(id) 16 528: 11(int) Load 524 529: 159(ptr) AccessChain 125 129 158 16 530: 89(int) Load 529 531: 89(int) ISub 530 250 532: 11(int) Bitcast 531 533: 177(bool) ULessThan 528 532 534: 147(ptr) AccessChain 60(id) 38 535: 11(int) Load 534 536: 177(bool) UGreaterThan 535 16 537: 177(bool) LogicalAnd 533 536 SelectionMerge 539 None BranchConditional 537 538 539 538: Label 542: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 540 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 544 544 16 16 541: 11(int) Load 149(index) 545: 159(ptr) AccessChain 125 129 158 16 546: 89(int) Load 545 547: 11(int) Bitcast 546 548: 11(int) ISub 541 547 549: 11(int) IAdd 548 38 551: 242(ptr) AccessChain 213(particleIn) 129 549 129 552: 87(fvec4) Load 551 553: 18(fvec3) VectorShuffle 552 552 0 1 2 Store 550(param) 553 555: 18(fvec3) Load 271(pos) Store 554(param) 555 557: 131(ptr) AccessChain 125 129 435 558: 8(float) Load 557 Store 556(param) 558 559: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 550(param) 554(param) 556(param) 560: 18(fvec3) Load 257(force) 561: 18(fvec3) FAdd 560 559 Store 257(force) 561 Branch 539 539: Label 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 566 566 16 16 563: 131(ptr) AccessChain 125 129 562 567: 8(float) Load 563 568: 8(float) FNegate 567 569: 18(fvec3) Load 281(vel) 570: 18(fvec3) VectorTimesScalar 569 568 571: 18(fvec3) Load 257(force) 572: 18(fvec3) FAdd 571 570 Store 257(force) 572 578: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 576 576 16 16 577: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 574 573(f) 44 579: 18(fvec3) Load 257(force) 580: 131(ptr) AccessChain 125 129 250 581: 8(float) Load 580 582: 8(float) FDiv 221 581 583: 18(fvec3) VectorTimesScalar 579 582 Store 573(f) 583 585: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 586 586 16 16 584: 11(int) Load 149(index) 587: 18(fvec3) Load 271(pos) 588: 18(fvec3) Load 281(vel) 589: 131(ptr) AccessChain 125 129 129 590: 8(float) Load 589 591: 18(fvec3) VectorTimesScalar 588 590 592: 18(fvec3) FAdd 587 591 594: 18(fvec3) Load 573(f) 595: 18(fvec3) VectorTimesScalar 594 593 596: 131(ptr) AccessChain 125 129 129 597: 8(float) Load 596 598: 18(fvec3) VectorTimesScalar 595 597 599: 131(ptr) AccessChain 125 129 129 600: 8(float) Load 599 601: 18(fvec3) VectorTimesScalar 598 600 602: 18(fvec3) FAdd 592 601 603: 8(float) CompositeExtract 602 0 604: 8(float) CompositeExtract 602 1 605: 8(float) CompositeExtract 602 2 606: 87(fvec4) CompositeConstruct 603 604 605 221 607: 242(ptr) AccessChain 236(particleOut) 129 584 129 Store 607 606 609: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 610 610 16 16 608: 11(int) Load 149(index) 611: 18(fvec3) Load 281(vel) 612: 18(fvec3) Load 573(f) 613: 131(ptr) AccessChain 125 129 129 614: 8(float) Load 613 615: 18(fvec3) VectorTimesScalar 612 614 616: 18(fvec3) FAdd 611 615 617: 8(float) CompositeExtract 616 0 618: 8(float) CompositeExtract 616 1 619: 8(float) CompositeExtract 616 2 620: 87(fvec4) CompositeConstruct 617 618 619 251 621: 242(ptr) AccessChain 236(particleOut) 129 608 250 Store 621 620 627: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 625 625 16 16 626: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 623 622(sphereDist) 44 628: 11(int) Load 149(index) 629: 242(ptr) AccessChain 236(particleOut) 129 628 129 630: 87(fvec4) Load 629 631: 18(fvec3) VectorShuffle 630 630 0 1 2 633: 242(ptr) AccessChain 125 129 632 634: 87(fvec4) Load 633 635: 18(fvec3) VectorShuffle 634 634 0 1 2 636: 18(fvec3) FSub 631 635 Store 622(sphereDist) 636 638: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 639 639 16 16 637: 18(fvec3) Load 622(sphereDist) 640: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 637 642: 131(ptr) AccessChain 125 129 641 643: 8(float) Load 642 645: 8(float) FAdd 643 644 646: 177(bool) FOrdLessThan 640 645 SelectionMerge 648 None BranchConditional 646 647 648 647: Label 651: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 649 652: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 653 653 16 16 650: 11(int) Load 149(index) 654: 242(ptr) AccessChain 125 129 632 655: 87(fvec4) Load 654 656: 18(fvec3) VectorShuffle 655 655 0 1 2 657: 18(fvec3) Load 622(sphereDist) 658: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 657 659: 131(ptr) AccessChain 125 129 641 660: 8(float) Load 659 661: 8(float) FAdd 660 644 662: 18(fvec3) VectorTimesScalar 658 661 663: 18(fvec3) FAdd 656 662 664: 131(ptr) AccessChain 236(particleOut) 129 650 129 16 665: 8(float) CompositeExtract 663 0 Store 664 665 666: 131(ptr) AccessChain 236(particleOut) 129 650 129 38 667: 8(float) CompositeExtract 663 1 Store 666 667 668: 131(ptr) AccessChain 236(particleOut) 129 650 129 49 669: 8(float) CompositeExtract 663 2 Store 668 669 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 672 672 16 16 670: 11(int) Load 149(index) 673: 242(ptr) AccessChain 236(particleOut) 129 670 250 Store 673 252 Branch 648 648: Label 695: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 146 696: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 681 681 16 16 694: 692(ptr) AccessChain 690 129 129 697: 11(int) Load 694 698: 177(bool) IEqual 697 38 SelectionMerge 700 None BranchConditional 698 699 700 699: Label 706: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 701 707: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 704 704 16 16 705: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 703 702(normal) 44 Store 702(normal) 708 714: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 712 712 16 16 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 710 709(a) 44 718: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 716 715(b) 44 722: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 720 719(c) 44 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 725 725 16 16 723: 147(ptr) AccessChain 60(id) 38 726: 11(int) Load 723 727: 177(bool) UGreaterThan 726 16 SelectionMerge 729 None BranchConditional 727 728 729 728: Label 732: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 730 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 734 734 16 16 731: 147(ptr) AccessChain 60(id) 16 735: 11(int) Load 731 736: 177(bool) UGreaterThan 735 16 SelectionMerge 738 None BranchConditional 736 737 738 737: Label 741: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 739 742: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 743 743 16 16 740: 11(int) Load 149(index) 744: 11(int) ISub 740 38 745: 242(ptr) AccessChain 213(particleIn) 129 744 129 746: 87(fvec4) Load 745 747: 18(fvec3) VectorShuffle 746 746 0 1 2 748: 18(fvec3) Load 271(pos) 749: 18(fvec3) FSub 747 748 Store 709(a) 749 751: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 752 752 16 16 750: 11(int) Load 149(index) 753: 159(ptr) AccessChain 125 129 158 16 754: 89(int) Load 753 755: 11(int) Bitcast 754 756: 11(int) ISub 750 755 757: 11(int) ISub 756 38 758: 242(ptr) AccessChain 213(particleIn) 129 757 129 759: 87(fvec4) Load 758 760: 18(fvec3) VectorShuffle 759 759 0 1 2 761: 18(fvec3) Load 271(pos) 762: 18(fvec3) FSub 760 761 Store 715(b) 762 764: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 765 765 16 16 763: 11(int) Load 149(index) 766: 159(ptr) AccessChain 125 129 158 16 767: 89(int) Load 766 768: 11(int) Bitcast 767 769: 11(int) ISub 763 768 770: 242(ptr) AccessChain 213(particleIn) 129 769 129 771: 87(fvec4) Load 770 772: 18(fvec3) VectorShuffle 771 771 0 1 2 773: 18(fvec3) Load 271(pos) 774: 18(fvec3) FSub 772 773 Store 719(c) 774 776: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 777 777 16 16 775: 18(fvec3) Load 709(a) 778: 18(fvec3) Load 715(b) 779: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 775 778 780: 18(fvec3) Load 715(b) 781: 18(fvec3) Load 719(c) 782: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 780 781 783: 18(fvec3) FAdd 779 782 784: 18(fvec3) Load 702(normal) 785: 18(fvec3) FAdd 784 783 Store 702(normal) 785 Branch 738 738: Label 787: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 730 788: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 789 789 16 16 786: 147(ptr) AccessChain 60(id) 16 790: 11(int) Load 786 791: 159(ptr) AccessChain 125 129 158 16 792: 89(int) Load 791 793: 89(int) ISub 792 250 794: 11(int) Bitcast 793 795: 177(bool) ULessThan 790 794 SelectionMerge 797 None BranchConditional 795 796 797 796: Label 800: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 798 801: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 802 802 16 16 799: 11(int) Load 149(index) 803: 159(ptr) AccessChain 125 129 158 16 804: 89(int) Load 803 805: 11(int) Bitcast 804 806: 11(int) ISub 799 805 807: 242(ptr) AccessChain 213(particleIn) 129 806 129 808: 87(fvec4) Load 807 809: 18(fvec3) VectorShuffle 808 808 0 1 2 810: 18(fvec3) Load 271(pos) 811: 18(fvec3) FSub 809 810 Store 709(a) 811 813: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 814 814 16 16 812: 11(int) Load 149(index) 815: 159(ptr) AccessChain 125 129 158 16 816: 89(int) Load 815 817: 11(int) Bitcast 816 818: 11(int) ISub 812 817 819: 11(int) IAdd 818 38 820: 242(ptr) AccessChain 213(particleIn) 129 819 129 821: 87(fvec4) Load 820 822: 18(fvec3) VectorShuffle 821 821 0 1 2 823: 18(fvec3) Load 271(pos) 824: 18(fvec3) FSub 822 823 Store 715(b) 824 826: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 827 827 16 16 825: 11(int) Load 149(index) 828: 11(int) IAdd 825 38 829: 242(ptr) AccessChain 213(particleIn) 129 828 129 830: 87(fvec4) Load 829 831: 18(fvec3) VectorShuffle 830 830 0 1 2 832: 18(fvec3) Load 271(pos) 833: 18(fvec3) FSub 831 832 Store 719(c) 833 835: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 836 836 16 16 834: 18(fvec3) Load 709(a) 837: 18(fvec3) Load 715(b) 838: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 834 837 839: 18(fvec3) Load 715(b) 840: 18(fvec3) Load 719(c) 841: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 839 840 842: 18(fvec3) FAdd 838 841 843: 18(fvec3) Load 702(normal) 844: 18(fvec3) FAdd 843 842 Store 702(normal) 844 Branch 797 797: Label Branch 729 729: Label 846: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 701 847: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 848 848 16 16 845: 147(ptr) AccessChain 60(id) 38 849: 11(int) Load 845 850: 159(ptr) AccessChain 125 129 158 38 851: 89(int) Load 850 852: 89(int) ISub 851 250 853: 11(int) Bitcast 852 854: 177(bool) ULessThan 849 853 SelectionMerge 856 None BranchConditional 854 855 856 855: Label 859: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 857 860: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 861 861 16 16 858: 147(ptr) AccessChain 60(id) 16 862: 11(int) Load 858 863: 177(bool) UGreaterThan 862 16 SelectionMerge 865 None BranchConditional 863 864 865 864: Label 868: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 866 869: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 870 870 16 16 867: 11(int) Load 149(index) 871: 159(ptr) AccessChain 125 129 158 16 872: 89(int) Load 871 873: 11(int) Bitcast 872 874: 11(int) IAdd 867 873 875: 242(ptr) AccessChain 213(particleIn) 129 874 129 876: 87(fvec4) Load 875 877: 18(fvec3) VectorShuffle 876 876 0 1 2 878: 18(fvec3) Load 271(pos) 879: 18(fvec3) FSub 877 878 Store 709(a) 879 881: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 882 882 16 16 880: 11(int) Load 149(index) 883: 159(ptr) AccessChain 125 129 158 16 884: 89(int) Load 883 885: 11(int) Bitcast 884 886: 11(int) IAdd 880 885 887: 11(int) ISub 886 38 888: 242(ptr) AccessChain 213(particleIn) 129 887 129 889: 87(fvec4) Load 888 890: 18(fvec3) VectorShuffle 889 889 0 1 2 891: 18(fvec3) Load 271(pos) 892: 18(fvec3) FSub 890 891 Store 715(b) 892 894: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 895 895 16 16 893: 11(int) Load 149(index) 896: 11(int) ISub 893 38 897: 242(ptr) AccessChain 213(particleIn) 129 896 129 898: 87(fvec4) Load 897 899: 18(fvec3) VectorShuffle 898 898 0 1 2 900: 18(fvec3) Load 271(pos) 901: 18(fvec3) FSub 899 900 Store 719(c) 901 903: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 904 904 16 16 902: 18(fvec3) Load 709(a) 905: 18(fvec3) Load 715(b) 906: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 902 905 907: 18(fvec3) Load 715(b) 908: 18(fvec3) Load 719(c) 909: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 907 908 910: 18(fvec3) FAdd 906 909 911: 18(fvec3) Load 702(normal) 912: 18(fvec3) FAdd 911 910 Store 702(normal) 912 Branch 865 865: Label 914: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 857 915: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 916 916 16 16 913: 147(ptr) AccessChain 60(id) 16 917: 11(int) Load 913 918: 159(ptr) AccessChain 125 129 158 16 919: 89(int) Load 918 920: 89(int) ISub 919 250 921: 11(int) Bitcast 920 922: 177(bool) ULessThan 917 921 SelectionMerge 924 None BranchConditional 922 923 924 923: Label 927: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 925 928: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 929 929 16 16 926: 11(int) Load 149(index) 930: 11(int) IAdd 926 38 931: 242(ptr) AccessChain 213(particleIn) 129 930 129 932: 87(fvec4) Load 931 933: 18(fvec3) VectorShuffle 932 932 0 1 2 934: 18(fvec3) Load 271(pos) 935: 18(fvec3) FSub 933 934 Store 709(a) 935 937: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 938 938 16 16 936: 11(int) Load 149(index) 939: 159(ptr) AccessChain 125 129 158 16 940: 89(int) Load 939 941: 11(int) Bitcast 940 942: 11(int) IAdd 936 941 943: 11(int) IAdd 942 38 944: 242(ptr) AccessChain 213(particleIn) 129 943 129 945: 87(fvec4) Load 944 946: 18(fvec3) VectorShuffle 945 945 0 1 2 947: 18(fvec3) Load 271(pos) 948: 18(fvec3) FSub 946 947 Store 715(b) 948 950: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 951 951 16 16 949: 11(int) Load 149(index) 952: 159(ptr) AccessChain 125 129 158 16 953: 89(int) Load 952 954: 11(int) Bitcast 953 955: 11(int) IAdd 949 954 956: 242(ptr) AccessChain 213(particleIn) 129 955 129 957: 87(fvec4) Load 956 958: 18(fvec3) VectorShuffle 957 957 0 1 2 959: 18(fvec3) Load 271(pos) 960: 18(fvec3) FSub 958 959 Store 719(c) 960 962: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 963 963 16 16 961: 18(fvec3) Load 709(a) 964: 18(fvec3) Load 715(b) 965: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 961 964 966: 18(fvec3) Load 715(b) 967: 18(fvec3) Load 719(c) 968: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 966 967 969: 18(fvec3) FAdd 965 968 970: 18(fvec3) Load 702(normal) 971: 18(fvec3) FAdd 970 969 Store 702(normal) 971 Branch 924 924: Label Branch 856 856: Label 973: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 701 974: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 975 975 16 16 972: 11(int) Load 149(index) 976: 18(fvec3) Load 702(normal) 977: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 976 978: 8(float) CompositeExtract 977 0 979: 8(float) CompositeExtract 977 1 980: 8(float) CompositeExtract 977 2 981: 87(fvec4) CompositeConstruct 978 979 980 251 982: 242(ptr) AccessChain 236(particleOut) 129 972 562 Store 982 981 Branch 700 700: Label 983: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 984: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 975 975 16 16 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.hlsl.frag.out000066400000000000000000002417351506534232700236440ustar00rootroot00000000000000spv.debuginfo.hlsl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 931 Capability Shader Capability ImageQuery Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 6 "main" 924 927 ExecutionMode 6 OriginUpperLeft 2: String "spv.debuginfo.hlsl.frag" 9: String "float" 12: String "uint" 38: String "textureProj" 41: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 /* 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); } " 47: String "P" 53: String "layer" 56: String "offset" 64: String "filterPCF" 68: String "sc" 84: String "shadow" 88: String "fragcolor" 93: String "fragPos" 100: String "@main" 104: String "inUV" 119: String "shadowCoord" 146: String "bool" 158: String "dist" 165: String "type.2d.image" 166: String "@type.2d.image" 172: String "textureShadowMap" 177: String "type.sampler" 178: String "@type.sampler" 183: String "samplerShadowMap" 187: String "type.sampled.image" 188: String "@type.sampled.image" 229: String "int" 237: String "texDim" 246: String "elements" 250: String "levels" 258: String "sizeQueryTemp" 282: String "scale" 289: String "dx" 301: String "dy" 313: String "shadowFactor" 319: String "count" 326: String "range" 336: String "x" 360: String "y" 428: String "i" 447: String "shadowClip" 462: String "color" 468: String "viewMatrix" 472: String "Light" 478: String "lights" 481: String "displayDebugTarget" 486: String "UBO" 489: String "ubo" 497: String "" 548: String "textureposition" 553: String "samplerposition" 563: String "normal" 569: String "textureNormal" 574: String "samplerNormal" 582: String "albedo" 588: String "textureAlbedo" 593: String "samplerAlbedo" 684: String "N" 712: String "L" 738: String "V" 753: String "lightCosInnerAngle" 760: String "lightCosOuterAngle" 767: String "lightRange" 774: String "dir" 790: String "cosDir" 799: String "spotEffect" 809: String "heightAttenuation" 818: String "NdotL" 828: String "diff" 836: String "R" 846: String "NdotR" 856: String "spec" Name 6 "main" Name 36 "textureProj(vf4;f1;vf2;" Name 33 "P" Name 34 "layer" Name 35 "offset" Name 62 "filterPCF(vf4;f1;" Name 60 "sc" Name 61 "layer" Name 82 "shadow(vf3;vf3;" Name 80 "fragcolor" Name 81 "fragPos" Name 98 "@main(vf2;" Name 97 "inUV" Name 110 "shadow" Name 117 "shadowCoord" Name 156 "dist" Name 170 "textureShadowMap" Name 181 "samplerShadowMap" Name 235 "texDim" Name 244 "elements" Name 248 "levels" Name 256 "sizeQueryTemp" Name 280 "scale" Name 287 "dx" Name 299 "dy" Name 311 "shadowFactor" Name 317 "count" Name 324 "range" Name 334 "x" Name 358 "y" Name 391 "param" Name 393 "param" Name 395 "param" Name 426 "i" Name 445 "shadowClip" Name 460 "Light" MemberName 460(Light) 0 "position" MemberName 460(Light) 1 "target" MemberName 460(Light) 2 "color" MemberName 460(Light) 3 "viewMatrix" Name 475 "UBO" MemberName 475(UBO) 0 "viewPos" MemberName 475(UBO) 1 "lights" MemberName 475(UBO) 2 "useShadows" MemberName 475(UBO) 3 "displayDebugTarget" Name 487 "ubo" MemberName 487(ubo) 0 "ubo" Name 495 "" Name 504 "shadowFactor" Name 513 "param" Name 515 "param" Name 536 "fragPos" Name 546 "textureposition" Name 551 "samplerposition" Name 561 "normal" Name 567 "textureNormal" Name 572 "samplerNormal" Name 580 "albedo" Name 586 "textureAlbedo" Name 591 "samplerAlbedo" Name 598 "fragcolor" Name 625 "param" Name 629 "param" Name 682 "N" Name 693 "i" Name 710 "L" Name 725 "dist" Name 736 "V" Name 751 "lightCosInnerAngle" Name 758 "lightCosOuterAngle" Name 765 "lightRange" Name 772 "dir" Name 788 "cosDir" Name 797 "spotEffect" Name 807 "heightAttenuation" Name 816 "NdotL" Name 826 "diff" Name 834 "R" Name 844 "NdotR" Name 854 "spec" Name 902 "param" Name 907 "param" Name 922 "inUV" Name 924 "inUV" Name 927 "@entryPointOutput" Name 928 "param" Decorate 170(textureShadowMap) Binding 5 Decorate 170(textureShadowMap) DescriptorSet 0 Decorate 181(samplerShadowMap) Binding 5 Decorate 181(samplerShadowMap) DescriptorSet 0 MemberDecorate 460(Light) 0 Offset 0 MemberDecorate 460(Light) 1 Offset 16 MemberDecorate 460(Light) 2 Offset 32 MemberDecorate 460(Light) 3 RowMajor MemberDecorate 460(Light) 3 MatrixStride 16 MemberDecorate 460(Light) 3 Offset 48 Decorate 473 ArrayStride 112 MemberDecorate 475(UBO) 0 Offset 0 MemberDecorate 475(UBO) 1 Offset 16 MemberDecorate 475(UBO) 2 Offset 352 MemberDecorate 475(UBO) 3 Offset 356 Decorate 487(ubo) Block MemberDecorate 487(ubo) 0 Offset 0 Decorate 495 Binding 4 Decorate 495 DescriptorSet 0 Decorate 546(textureposition) Binding 1 Decorate 546(textureposition) DescriptorSet 0 Decorate 551(samplerposition) Binding 1 Decorate 551(samplerposition) DescriptorSet 0 Decorate 567(textureNormal) Binding 2 Decorate 567(textureNormal) DescriptorSet 0 Decorate 572(samplerNormal) Binding 2 Decorate 572(samplerNormal) DescriptorSet 0 Decorate 586(textureAlbedo) Binding 3 Decorate 586(textureAlbedo) DescriptorSet 0 Decorate 591(samplerAlbedo) Binding 3 Decorate 591(samplerAlbedo) DescriptorSet 0 Decorate 924(inUV) Location 0 Decorate 927(@entryPointOutput) Location 0 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 11: TypeInt 32 0 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypePointer Function 18(fvec4) 22: 11(int) Constant 7 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 16 24: TypePointer Function 8(float) 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 26: TypeVector 8(float) 2 27: 11(int) Constant 2 28: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 27 29: TypePointer Function 26(fvec2) 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 28 22 16 31: TypeFunction 8(float) 21(ptr) 24(ptr) 29(ptr) 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 28 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 41 42: 11(int) Constant 61 44: 11(int) Constant 1 45: 11(int) Constant 5 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 44 19 40 45 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 38 32 40 42 16 43 38 17 42 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 20 40 42 16 39 19 44 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 42 16 39 19 27 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 28 40 42 16 39 19 17 58: TypeFunction 8(float) 21(ptr) 24(ptr) 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 66: 11(int) Constant 78 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 40 66 16 43 64 17 66 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 68 20 40 66 16 65 19 44 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 66 16 65 19 27 74: TypeVector 8(float) 3 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 76: TypePointer Function 74(fvec3) 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 22 16 78: TypeFunction 74(fvec3) 76(ptr) 76(ptr) 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 75 75 75 86: 11(int) Constant 101 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 40 86 16 43 84 17 86 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 40 86 16 85 19 44 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 86 16 85 19 27 95: TypeFunction 18(fvec4) 29(ptr) 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 28 102: 11(int) Constant 119 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 100 96 40 102 16 43 100 17 102 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 104 28 40 102 16 101 19 44 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 39 112: 11(int) Constant 62 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 10 40 112 16 109 19 116: 8(float) Constant 1065353216 120: 11(int) Constant 63 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 119 20 40 120 16 109 19 130: 11(int) Constant 64 132: 8(float) Constant 1056964608 142: 11(int) Constant 66 144: 8(float) Constant 3212836864 145: TypeBool 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 146 14 27 16 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 109 159: 11(int) Constant 68 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 158 10 40 159 16 155 19 163: TypeImage 8(float) 2D array sampled format:Unknown 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 16 40 159 16 43 166 167 17 168: TypePointer UniformConstant 163 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 164 16 16 170(textureShadowMap): 168(ptr) Variable UniformConstant 173: 11(int) Constant 8 171: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 172 164 40 159 16 43 172 170(textureShadowMap) 173 175: TypeSampler 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 177 44 40 159 16 43 178 167 17 179: TypePointer UniformConstant 175 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 176 16 16 181(samplerShadowMap): 179(ptr) Variable UniformConstant 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 183 176 40 159 16 43 183 181(samplerShadowMap) 173 185: TypeSampledImage 163 186: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 187 16 40 159 16 43 188 167 17 202: 11(int) Constant 69 204: 8(float) Constant 0 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 155 214: 8(float) Constant 1048576000 217: 11(int) Constant 71 221: 11(int) Constant 74 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 65 228: TypeInt 32 1 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 229 14 19 16 231: TypeVector 228(int) 2 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 230 27 233: TypePointer Function 231(ivec2) 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 232 22 16 238: 11(int) Constant 79 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 232 40 238 16 227 19 242: TypePointer Function 228(int) 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 230 22 16 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 246 230 40 238 16 227 19 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 230 40 238 16 227 19 252: TypeVector 11(int) 3 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 254: TypePointer Function 252(ivec3) 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 253 22 16 259: 11(int) Constant 80 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 258 253 40 259 16 227 19 264: TypePointer Function 11(int) 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 283: 11(int) Constant 81 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 282 10 40 283 16 227 19 286: 8(float) Constant 1069547520 290: 11(int) Constant 82 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 289 10 40 290 16 227 19 302: 11(int) Constant 83 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 301 10 40 302 16 227 19 314: 11(int) Constant 85 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 10 40 314 16 227 19 320: 11(int) Constant 86 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 319 230 40 320 16 227 19 323: 228(int) Constant 0 327: 11(int) Constant 87 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 326 230 40 327 16 227 19 330: 228(int) Constant 1 332: 11(int) Constant 89 333: 11(int) Constant 11 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 332 333 227 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 336 230 40 332 16 331 19 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 331 356: 11(int) Constant 91 357: 11(int) Constant 12 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 356 357 354 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 360 230 40 356 16 355 19 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 355 382: 11(int) Constant 93 401: 11(int) Constant 94 414: 11(int) Constant 98 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 85 425: 11(int) Constant 102 424: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 425 333 423 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 428 230 40 425 16 424 19 442: 228(int) Constant 3 444: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 424 448: 11(int) Constant 104 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 447 20 40 448 16 444 19 457: TypeMatrix 18(fvec4) 4 459: 145(bool) ConstantTrue 458: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 459 460(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 457 463: 11(int) Constant 46 464: 11(int) Constant 14 461: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 462 20 40 463 464 16 16 17 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 462 20 40 463 464 16 16 17 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 462 20 40 463 464 16 16 17 469: 11(int) Constant 47 470: 11(int) Constant 21 467: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 468 458 40 469 470 16 16 17 471: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 472 44 40 448 16 43 472 16 17 461 465 466 467 473: TypeArray 460(Light) 17 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 471 17 475(UBO): TypeStruct 18(fvec4) 473 228(int) 228(int) 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 462 20 40 463 464 16 16 17 479: 11(int) Constant 53 477: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 478 474 40 479 464 16 16 17 482: 11(int) Constant 55 483: 11(int) Constant 24 480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 481 230 40 482 483 16 16 17 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 481 230 40 482 483 16 16 17 485: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 486 44 40 448 16 43 486 16 17 476 477 480 484 487(ubo): TypeStruct 475(UBO) 490: 11(int) Constant 58 491: 11(int) Constant 37 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 489 485 40 490 491 16 16 17 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 489 44 40 448 16 43 489 16 17 488 493: TypePointer Uniform 487(ubo) 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 492 27 16 495: 493(ptr) Variable Uniform 496: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 497 492 40 448 16 43 497 495 173 499: TypePointer Uniform 457 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 458 27 16 506: 11(int) Constant 106 505: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 10 40 506 16 444 19 511: 11(int) Constant 108 519: 11(int) Constant 113 529: 11(int) Constant 115 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 101 538: 11(int) Constant 121 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 538 16 535 19 542: TypeImage 8(float) 2D sampled format:Unknown 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 16 40 538 16 43 166 167 17 544: TypePointer UniformConstant 542 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 543 16 16 546(textureposition): 544(ptr) Variable UniformConstant 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 543 40 538 16 43 548 546(textureposition) 173 550: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 177 44 40 538 16 43 178 167 17 551(samplerposition): 179(ptr) Variable UniformConstant 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 553 550 40 538 16 43 553 551(samplerposition) 173 555: TypeSampledImage 542 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 187 16 40 538 16 43 188 167 17 564: 11(int) Constant 122 562: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 563 75 40 564 16 535 19 567(textureNormal): 544(ptr) Variable UniformConstant 568: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 569 543 40 564 16 43 569 567(textureNormal) 173 571: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 177 44 40 564 16 43 178 167 17 572(samplerNormal): 179(ptr) Variable UniformConstant 573: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 574 571 40 564 16 43 574 572(samplerNormal) 173 583: 11(int) Constant 123 581: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 582 20 40 583 16 535 19 586(textureAlbedo): 544(ptr) Variable UniformConstant 587: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 588 543 40 583 16 43 588 586(textureAlbedo) 173 590: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 177 44 40 583 16 43 178 167 17 591(samplerAlbedo): 179(ptr) Variable UniformConstant 592: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 593 590 40 583 16 43 593 591(samplerAlbedo) 173 600: 11(int) Constant 125 599: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 40 600 16 535 19 603: TypePointer Uniform 228(int) 604: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 230 27 16 607: 11(int) Constant 128 612: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 535 616: 11(int) Constant 129 624: 74(fvec3) ConstantComposite 116 116 116 628: 11(int) Constant 131 633: 11(int) Constant 132 638: 11(int) Constant 134 640: 11(int) Constant 135 645: 11(int) Constant 137 647: 11(int) Constant 138 652: 11(int) Constant 140 655: 11(int) Constant 141 660: 11(int) Constant 143 663: 11(int) Constant 144 669: 11(int) Constant 146 678: 11(int) Constant 150 680: 8(float) Constant 1036831949 685: 11(int) Constant 152 683: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 684 75 40 685 16 535 19 691: 11(int) Constant 154 692: 11(int) Constant 10 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 691 692 535 694: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 428 230 40 691 16 690 19 709: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 690 713: 11(int) Constant 157 711: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 75 40 713 16 709 19 718: TypePointer Uniform 18(fvec4) 719: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 27 16 727: 11(int) Constant 159 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 158 10 40 727 16 709 19 734: 11(int) Constant 160 739: 11(int) Constant 163 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 738 75 40 739 16 709 19 749: 11(int) Constant 164 754: 11(int) Constant 166 752: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 753 10 40 754 16 709 19 757: 8(float) Constant 1064781546 761: 11(int) Constant 167 759: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 760 10 40 761 16 709 19 764: 8(float) Constant 1063781322 768: 11(int) Constant 168 766: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 767 10 40 768 16 709 19 771: 8(float) Constant 1120403456 775: 11(int) Constant 171 773: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 774 75 40 775 16 709 19 791: 11(int) Constant 174 789: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 790 10 40 791 16 709 19 800: 11(int) Constant 175 798: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 799 10 40 800 16 709 19 810: 11(int) Constant 176 808: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 809 10 40 810 16 709 19 819: 11(int) Constant 179 817: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 818 10 40 819 16 709 19 829: 11(int) Constant 180 827: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 828 75 40 829 16 709 19 837: 11(int) Constant 183 835: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 836 75 40 837 16 709 19 847: 11(int) Constant 184 845: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 846 10 40 847 16 709 19 857: 11(int) Constant 185 855: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 856 75 40 857 16 709 19 861: 8(float) Constant 1098907648 866: 8(float) Constant 1075838976 871: 11(int) Constant 187 879: 228(int) Constant 2 896: 11(int) Constant 191 901: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 40 16 16 535 906: 11(int) Constant 193 913: 11(int) Constant 196 923: TypePointer Input 26(fvec2) 924(inUV): 923(ptr) Variable Input 926: TypePointer Output 18(fvec4) 927(@entryPointOutput): 926(ptr) Variable Output 6(main): 4 Function None 5 7: Label 922(inUV): 29(ptr) Variable Function 928(param): 29(ptr) Variable Function 925: 26(fvec2) Load 924(inUV) Store 922(inUV) 925 929: 26(fvec2) Load 922(inUV) Store 928(param) 929 930: 18(fvec4) FunctionCall 98(@main(vf2;) 928(param) Store 927(@entryPointOutput) 930 Return FunctionEnd 36(textureProj(vf4;f1;vf2;): 8(float) Function None 31 33(P): 21(ptr) FunctionParameter 34(layer): 24(ptr) FunctionParameter 35(offset): 29(ptr) FunctionParameter 37: Label 110(shadow): 24(ptr) Variable Function 117(shadowCoord): 21(ptr) Variable Function 156(dist): 24(ptr) Variable Function 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 42 42 16 16 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 33(P) 49 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 34(layer) 49 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 35(offset) 49 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 39 36(textureProj(vf4;f1;vf2;) 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 109 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 112 112 16 16 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 111 110(shadow) 49 Store 110(shadow) 116 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 120 120 16 16 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 118 117(shadowCoord) 49 123: 18(fvec4) Load 33(P) 124: 24(ptr) AccessChain 33(P) 17 125: 8(float) Load 124 126: 18(fvec4) CompositeConstruct 125 125 125 125 127: 18(fvec4) FDiv 123 126 Store 117(shadowCoord) 127 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 130 130 16 16 128: 18(fvec4) Load 117(shadowCoord) 131: 26(fvec2) VectorShuffle 128 128 0 1 133: 26(fvec2) VectorTimesScalar 131 132 134: 26(fvec2) CompositeConstruct 132 132 135: 26(fvec2) FAdd 133 134 136: 24(ptr) AccessChain 117(shadowCoord) 16 137: 8(float) CompositeExtract 135 0 Store 136 137 138: 24(ptr) AccessChain 117(shadowCoord) 44 139: 8(float) CompositeExtract 135 1 Store 138 139 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 142 142 16 16 140: 24(ptr) AccessChain 117(shadowCoord) 27 143: 8(float) Load 140 148: 145(bool) FOrdGreaterThan 143 144 149: 24(ptr) AccessChain 117(shadowCoord) 27 150: 8(float) Load 149 151: 145(bool) FOrdLessThan 150 116 152: 145(bool) LogicalAnd 148 151 SelectionMerge 154 None BranchConditional 152 153 154 153: Label 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 155 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 159 159 16 16 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 157 156(dist) 49 174: 163 Load 170(textureShadowMap) 184: 175 Load 181(samplerShadowMap) 189: 185 SampledImage 174 184 190: 18(fvec4) Load 117(shadowCoord) 191: 26(fvec2) VectorShuffle 190 190 0 1 192: 26(fvec2) Load 35(offset) 193: 26(fvec2) FAdd 191 192 194: 8(float) Load 34(layer) 195: 8(float) CompositeExtract 193 0 196: 8(float) CompositeExtract 193 1 197: 74(fvec3) CompositeConstruct 195 196 194 198: 18(fvec4) ImageSampleImplicitLod 189 197 199: 8(float) CompositeExtract 198 0 Store 156(dist) 199 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 202 202 16 16 200: 24(ptr) AccessChain 117(shadowCoord) 17 203: 8(float) Load 200 205: 145(bool) FOrdGreaterThan 203 204 206: 8(float) Load 156(dist) 207: 24(ptr) AccessChain 117(shadowCoord) 27 208: 8(float) Load 207 209: 145(bool) FOrdLessThan 206 208 210: 145(bool) LogicalAnd 205 209 SelectionMerge 212 None BranchConditional 210 211 212 211: Label 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 213 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 217 217 16 16 Store 110(shadow) 214 Branch 212 212: Label Branch 154 154: Label 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 109 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 221 221 16 16 218: 8(float) Load 110(shadow) ReturnValue 218 FunctionEnd 62(filterPCF(vf4;f1;): 8(float) Function None 58 60(sc): 21(ptr) FunctionParameter 61(layer): 24(ptr) FunctionParameter 63: Label 235(texDim): 233(ptr) Variable Function 244(elements): 242(ptr) Variable Function 248(levels): 242(ptr) Variable Function 256(sizeQueryTemp): 254(ptr) Variable Function 280(scale): 24(ptr) Variable Function 287(dx): 24(ptr) Variable Function 299(dy): 24(ptr) Variable Function 311(shadowFactor): 24(ptr) Variable Function 317(count): 242(ptr) Variable Function 324(range): 242(ptr) Variable Function 334(x): 242(ptr) Variable Function 358(y): 242(ptr) Variable Function 391(param): 21(ptr) Variable Function 393(param): 24(ptr) Variable Function 395(param): 29(ptr) Variable Function 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 66 66 16 16 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 60(sc) 49 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 49 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 227 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 238 238 16 16 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(texDim) 49 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 245 244(elements) 49 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(levels) 49 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 259 259 16 16 260: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 257 256(sizeQueryTemp) 49 262: 163 Load 170(textureShadowMap) 263: 252(ivec3) ImageQuerySizeLod 262 16 Store 256(sizeQueryTemp) 263 266: 264(ptr) AccessChain 256(sizeQueryTemp) 16 267: 11(int) Load 266 268: 228(int) Bitcast 267 269: 242(ptr) AccessChain 235(texDim) 16 Store 269 268 270: 264(ptr) AccessChain 256(sizeQueryTemp) 44 271: 11(int) Load 270 272: 228(int) Bitcast 271 273: 242(ptr) AccessChain 235(texDim) 44 Store 273 272 274: 264(ptr) AccessChain 256(sizeQueryTemp) 27 275: 11(int) Load 274 276: 228(int) Bitcast 275 Store 244(elements) 276 277: 163 Load 170(textureShadowMap) 278: 11(int) ImageQueryLevels 277 279: 228(int) Bitcast 278 Store 248(levels) 279 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 283 283 16 16 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 281 280(scale) 49 Store 280(scale) 286 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 290 290 16 16 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 288 287(dx) 49 293: 8(float) Load 280(scale) 294: 8(float) FMul 293 116 295: 242(ptr) AccessChain 235(texDim) 16 296: 228(int) Load 295 297: 8(float) ConvertSToF 296 298: 8(float) FDiv 294 297 Store 287(dx) 298 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 302 302 16 16 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 300 299(dy) 49 305: 8(float) Load 280(scale) 306: 8(float) FMul 305 116 307: 242(ptr) AccessChain 235(texDim) 44 308: 228(int) Load 307 309: 8(float) ConvertSToF 308 310: 8(float) FDiv 306 309 Store 299(dy) 310 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 314 314 16 16 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 312 311(shadowFactor) 49 Store 311(shadowFactor) 204 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 320 320 16 16 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 318 317(count) 49 Store 317(count) 323 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 327 327 16 16 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 325 324(range) 49 Store 324(range) 330 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 331 339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 332 332 16 16 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 335 334(x) 49 340: 228(int) Load 324(range) 341: 228(int) SNegate 340 Store 334(x) 341 Branch 342 342: Label 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 331 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 332 332 16 16 LoopMerge 344 345 None Branch 348 348: Label 350: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 331 351: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 332 332 16 16 349: 228(int) Load 334(x) 352: 228(int) Load 324(range) 353: 145(bool) SLessThanEqual 349 352 BranchConditional 353 343 344 343: Label 362: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 355 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 356 356 16 16 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 359 358(y) 49 364: 228(int) Load 324(range) 365: 228(int) SNegate 364 Store 358(y) 365 Branch 366 366: Label 370: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 355 371: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 356 356 16 16 LoopMerge 368 369 None Branch 372 372: Label 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 355 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 356 356 16 16 373: 228(int) Load 358(y) 376: 228(int) Load 324(range) 377: 145(bool) SLessThanEqual 373 376 BranchConditional 377 367 368 367: Label 380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 378 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 382 382 16 16 379: 8(float) Load 287(dx) 383: 228(int) Load 334(x) 384: 8(float) ConvertSToF 383 385: 8(float) FMul 379 384 386: 8(float) Load 299(dy) 387: 228(int) Load 358(y) 388: 8(float) ConvertSToF 387 389: 8(float) FMul 386 388 390: 26(fvec2) CompositeConstruct 385 389 392: 18(fvec4) Load 60(sc) Store 391(param) 392 394: 8(float) Load 61(layer) Store 393(param) 394 Store 395(param) 390 396: 8(float) FunctionCall 36(textureProj(vf4;f1;vf2;) 391(param) 393(param) 395(param) 397: 8(float) Load 311(shadowFactor) 398: 8(float) FAdd 397 396 Store 311(shadowFactor) 398 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 401 401 16 16 399: 228(int) Load 317(count) 402: 228(int) IAdd 399 330 Store 317(count) 402 Branch 369 369: Label 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 355 405: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 356 356 16 16 403: 228(int) Load 358(y) 406: 228(int) IAdd 403 330 Store 358(y) 406 Branch 366 368: Label Branch 345 345: Label 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 331 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 332 332 16 16 407: 228(int) Load 334(x) 410: 228(int) IAdd 407 330 Store 334(x) 410 Branch 342 344: Label 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 227 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 414 414 16 16 411: 8(float) Load 311(shadowFactor) 415: 228(int) Load 317(count) 416: 8(float) ConvertSToF 415 417: 8(float) FDiv 411 416 ReturnValue 417 FunctionEnd 82(shadow(vf3;vf3;): 74(fvec3) Function None 78 80(fragcolor): 76(ptr) FunctionParameter 81(fragPos): 76(ptr) FunctionParameter 83: Label 426(i): 242(ptr) Variable Function 445(shadowClip): 21(ptr) Variable Function 504(shadowFactor): 24(ptr) Variable Function 513(param): 21(ptr) Variable Function 515(param): 24(ptr) Variable Function 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 86 86 16 16 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 80(fragcolor) 49 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragPos) 49 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 424 431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 425 425 16 16 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 427 426(i) 49 Store 426(i) 323 Branch 432 432: Label 436: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 424 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 425 425 16 16 LoopMerge 434 435 None Branch 438 438: Label 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 424 441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 425 425 16 16 439: 228(int) Load 426(i) 443: 145(bool) SLessThan 439 442 BranchConditional 443 433 434 433: Label 450: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 444 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 448 448 16 16 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 446 445(shadowClip) 49 452: 74(fvec3) Load 81(fragPos) 453: 8(float) CompositeExtract 452 0 454: 8(float) CompositeExtract 452 1 455: 8(float) CompositeExtract 452 2 456: 18(fvec4) CompositeConstruct 453 454 455 116 498: 228(int) Load 426(i) 501: 499(ptr) AccessChain 495 323 330 498 442 502: 457 Load 501 503: 18(fvec4) VectorTimesMatrix 456 502 Store 445(shadowClip) 503 508: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 506 506 16 16 507: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 505 504(shadowFactor) 49 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 511 511 16 16 509: 228(int) Load 426(i) 512: 8(float) ConvertSToF 509 514: 18(fvec4) Load 445(shadowClip) Store 513(param) 514 Store 515(param) 512 516: 8(float) FunctionCall 62(filterPCF(vf4;f1;) 513(param) 515(param) Store 504(shadowFactor) 516 518: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 519 519 16 16 517: 8(float) Load 504(shadowFactor) 520: 74(fvec3) Load 80(fragcolor) 521: 74(fvec3) VectorTimesScalar 520 517 Store 80(fragcolor) 521 Branch 435 435: Label 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 424 524: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 425 425 16 16 522: 228(int) Load 426(i) 525: 228(int) IAdd 522 330 Store 426(i) 525 Branch 432 434: Label 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 423 528: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 529 529 16 16 526: 74(fvec3) Load 80(fragcolor) ReturnValue 526 FunctionEnd 98(@main(vf2;): 18(fvec4) Function None 95 97(inUV): 29(ptr) FunctionParameter 99: Label 536(fragPos): 76(ptr) Variable Function 561(normal): 76(ptr) Variable Function 580(albedo): 21(ptr) Variable Function 598(fragcolor): 76(ptr) Variable Function 625(param): 76(ptr) Variable Function 629(param): 76(ptr) Variable Function 682(N): 76(ptr) Variable Function 693(i): 242(ptr) Variable Function 710(L): 76(ptr) Variable Function 725(dist): 24(ptr) Variable Function 736(V): 76(ptr) Variable Function 751(lightCosInnerAngle): 24(ptr) Variable Function 758(lightCosOuterAngle): 24(ptr) Variable Function 765(lightRange): 24(ptr) Variable Function 772(dir): 76(ptr) Variable Function 788(cosDir): 24(ptr) Variable Function 797(spotEffect): 24(ptr) Variable Function 807(heightAttenuation): 24(ptr) Variable Function 816(NdotL): 24(ptr) Variable Function 826(diff): 76(ptr) Variable Function 834(R): 76(ptr) Variable Function 844(NdotR): 24(ptr) Variable Function 854(spec): 76(ptr) Variable Function 902(param): 76(ptr) Variable Function 907(param): 76(ptr) Variable Function 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 102 102 16 16 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 103 97(inUV) 49 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 101 98(@main(vf2;) 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 535 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 538 538 16 16 539: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 537 536(fragPos) 49 549: 542 Load 546(textureposition) 554: 175 Load 551(samplerposition) 557: 555 SampledImage 549 554 558: 26(fvec2) Load 97(inUV) 559: 18(fvec4) ImageSampleImplicitLod 557 558 560: 74(fvec3) VectorShuffle 559 559 0 1 2 Store 536(fragPos) 560 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 564 564 16 16 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 562 561(normal) 49 570: 542 Load 567(textureNormal) 575: 175 Load 572(samplerNormal) 576: 555 SampledImage 570 575 577: 26(fvec2) Load 97(inUV) 578: 18(fvec4) ImageSampleImplicitLod 576 577 579: 74(fvec3) VectorShuffle 578 578 0 1 2 Store 561(normal) 579 585: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 583 583 16 16 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 581 580(albedo) 49 589: 542 Load 586(textureAlbedo) 594: 175 Load 591(samplerAlbedo) 595: 555 SampledImage 589 594 596: 26(fvec2) Load 97(inUV) 597: 18(fvec4) ImageSampleImplicitLod 595 596 Store 580(albedo) 597 602: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 600 600 16 16 601: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 599 598(fragcolor) 49 606: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 607 607 16 16 605: 603(ptr) AccessChain 495 323 442 608: 228(int) Load 605 609: 145(bool) SGreaterThan 608 323 SelectionMerge 611 None BranchConditional 609 610 611 610: Label 614: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 612 615: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 616 616 16 16 613: 603(ptr) AccessChain 495 323 442 617: 228(int) Load 613 SelectionMerge 623 None Switch 617 623 case 1: 618 case 2: 619 case 3: 620 case 4: 621 case 5: 622 618: Label 626: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 612 627: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 628 628 16 16 Store 625(param) 624 630: 74(fvec3) Load 536(fragPos) Store 629(param) 630 631: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 625(param) 629(param) Store 598(fragcolor) 631 632: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 633 633 16 16 Branch 623 619: Label 636: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 612 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 638 638 16 16 635: 74(fvec3) Load 536(fragPos) Store 598(fragcolor) 635 639: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 640 640 16 16 Branch 623 620: Label 643: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 612 644: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 645 645 16 16 642: 74(fvec3) Load 561(normal) Store 598(fragcolor) 642 646: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 647 647 16 16 Branch 623 621: Label 650: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 612 651: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 652 652 16 16 649: 18(fvec4) Load 580(albedo) 653: 74(fvec3) VectorShuffle 649 649 0 1 2 Store 598(fragcolor) 653 654: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 655 655 16 16 Branch 623 622: Label 658: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 612 659: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 660 660 16 16 657: 18(fvec4) Load 580(albedo) 661: 74(fvec3) VectorShuffle 657 657 3 3 3 Store 598(fragcolor) 661 662: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 663 663 16 16 Branch 623 623: Label 667: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 612 668: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 669 669 16 16 666: 74(fvec3) Load 598(fragcolor) 670: 8(float) CompositeExtract 666 0 671: 8(float) CompositeExtract 666 1 672: 8(float) CompositeExtract 666 2 673: 18(fvec4) CompositeConstruct 670 671 672 116 ReturnValue 673 611: Label 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 535 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 678 678 16 16 675: 18(fvec4) Load 580(albedo) 679: 74(fvec3) VectorShuffle 675 675 0 1 2 681: 74(fvec3) VectorTimesScalar 679 680 Store 598(fragcolor) 681 687: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 685 685 16 16 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 683 682(N) 49 688: 74(fvec3) Load 561(normal) 689: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 688 Store 682(N) 689 696: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 690 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 691 691 16 16 695: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 694 693(i) 49 Store 693(i) 323 Branch 698 698: Label 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 690 703: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 691 691 16 16 LoopMerge 700 701 None Branch 704 704: Label 706: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 690 707: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 691 691 16 16 705: 228(int) Load 693(i) 708: 145(bool) SLessThan 705 442 BranchConditional 708 699 700 699: Label 715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 709 716: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 713 713 16 16 714: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 711 710(L) 49 717: 228(int) Load 693(i) 720: 718(ptr) AccessChain 495 323 330 717 323 721: 18(fvec4) Load 720 722: 74(fvec3) VectorShuffle 721 721 0 1 2 723: 74(fvec3) Load 536(fragPos) 724: 74(fvec3) FSub 722 723 Store 710(L) 724 729: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 727 727 16 16 728: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 726 725(dist) 49 730: 74(fvec3) Load 710(L) 731: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 730 Store 725(dist) 731 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 734 734 16 16 732: 74(fvec3) Load 710(L) 735: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 732 Store 710(L) 735 741: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 739 739 16 16 740: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 737 736(V) 49 742: 718(ptr) AccessChain 495 323 323 743: 18(fvec4) Load 742 744: 74(fvec3) VectorShuffle 743 743 0 1 2 745: 74(fvec3) Load 536(fragPos) 746: 74(fvec3) FSub 744 745 Store 736(V) 746 748: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 749 749 16 16 747: 74(fvec3) Load 736(V) 750: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 747 Store 736(V) 750 756: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 754 754 16 16 755: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 752 751(lightCosInnerAngle) 49 Store 751(lightCosInnerAngle) 757 763: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 761 761 16 16 762: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 759 758(lightCosOuterAngle) 49 Store 758(lightCosOuterAngle) 764 770: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 768 768 16 16 769: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 766 765(lightRange) 49 Store 765(lightRange) 771 777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 775 775 16 16 776: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 773 772(dir) 49 778: 228(int) Load 693(i) 779: 718(ptr) AccessChain 495 323 330 778 323 780: 18(fvec4) Load 779 781: 74(fvec3) VectorShuffle 780 780 0 1 2 782: 228(int) Load 693(i) 783: 718(ptr) AccessChain 495 323 330 782 330 784: 18(fvec4) Load 783 785: 74(fvec3) VectorShuffle 784 784 0 1 2 786: 74(fvec3) FSub 781 785 787: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 786 Store 772(dir) 787 793: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 791 791 16 16 792: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 789 788(cosDir) 49 794: 74(fvec3) Load 710(L) 795: 74(fvec3) Load 772(dir) 796: 8(float) Dot 794 795 Store 788(cosDir) 796 802: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 800 800 16 16 801: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 798 797(spotEffect) 49 803: 8(float) Load 758(lightCosOuterAngle) 804: 8(float) Load 751(lightCosInnerAngle) 805: 8(float) Load 788(cosDir) 806: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 803 804 805 Store 797(spotEffect) 806 812: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 810 810 16 16 811: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 808 807(heightAttenuation) 49 813: 8(float) Load 765(lightRange) 814: 8(float) Load 725(dist) 815: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 813 204 814 Store 807(heightAttenuation) 815 821: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 819 819 16 16 820: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 817 816(NdotL) 49 822: 74(fvec3) Load 682(N) 823: 74(fvec3) Load 710(L) 824: 8(float) Dot 822 823 825: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 204 824 Store 816(NdotL) 825 831: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 829 829 16 16 830: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 827 826(diff) 49 832: 8(float) Load 816(NdotL) 833: 74(fvec3) CompositeConstruct 832 832 832 Store 826(diff) 833 839: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 837 837 16 16 838: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 835 834(R) 49 840: 74(fvec3) Load 710(L) 841: 74(fvec3) FNegate 840 842: 74(fvec3) Load 682(N) 843: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 841 842 Store 834(R) 843 849: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 847 847 16 16 848: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 845 844(NdotR) 49 850: 74(fvec3) Load 834(R) 851: 74(fvec3) Load 736(V) 852: 8(float) Dot 850 851 853: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 204 852 Store 844(NdotR) 853 859: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 857 857 16 16 858: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 855 854(spec) 49 860: 8(float) Load 844(NdotR) 862: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 860 861 863: 24(ptr) AccessChain 580(albedo) 17 864: 8(float) Load 863 865: 8(float) FMul 862 864 867: 8(float) FMul 865 866 868: 74(fvec3) CompositeConstruct 867 867 867 Store 854(spec) 868 870: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 871 871 16 16 869: 74(fvec3) Load 826(diff) 872: 74(fvec3) Load 854(spec) 873: 74(fvec3) FAdd 869 872 874: 8(float) Load 797(spotEffect) 875: 74(fvec3) VectorTimesScalar 873 874 876: 8(float) Load 807(heightAttenuation) 877: 74(fvec3) VectorTimesScalar 875 876 878: 228(int) Load 693(i) 880: 718(ptr) AccessChain 495 323 330 878 879 881: 18(fvec4) Load 880 882: 74(fvec3) VectorShuffle 881 881 0 1 2 883: 74(fvec3) FMul 877 882 884: 18(fvec4) Load 580(albedo) 885: 74(fvec3) VectorShuffle 884 884 0 1 2 886: 74(fvec3) FMul 883 885 887: 74(fvec3) Load 598(fragcolor) 888: 74(fvec3) FAdd 887 886 Store 598(fragcolor) 888 Branch 701 701: Label 890: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 690 891: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 691 691 16 16 889: 228(int) Load 693(i) 892: 228(int) IAdd 889 330 Store 693(i) 892 Branch 698 700: Label 894: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 535 895: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 896 896 16 16 893: 603(ptr) AccessChain 495 323 879 897: 228(int) Load 893 898: 145(bool) SGreaterThan 897 323 SelectionMerge 900 None BranchConditional 898 899 900 899: Label 904: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 901 905: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 906 906 16 16 903: 74(fvec3) Load 598(fragcolor) Store 902(param) 903 908: 74(fvec3) Load 536(fragPos) Store 907(param) 908 909: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 902(param) 907(param) Store 598(fragcolor) 909 Branch 900 900: Label 911: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 535 912: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 913 913 16 16 910: 74(fvec3) Load 598(fragcolor) 914: 8(float) CompositeExtract 910 0 915: 8(float) CompositeExtract 910 1 916: 8(float) CompositeExtract 910 2 917: 18(fvec4) CompositeConstruct 914 915 916 116 ReturnValue 917 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.hlsl.geom.out000066400000000000000000001056151506534232700236500ustar00rootroot00000000000000spv.debuginfo.hlsl.geom // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 373 Capability Geometry Capability MultiViewport Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 6 "main" 270 279 284 291 296 301 306 322 329 334 358 361 ExecutionMode 6 Triangles ExecutionMode 6 Invocations 2 ExecutionMode 6 OutputTriangleStrip ExecutionMode 6 OutputVertices 3 2: String "spv.debuginfo.hlsl.geom" 9: String "float" 12: String "uint" 25: String "Pos" 27: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 /* 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 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(); } " 31: String "Color" 36: String "VSOutput" 50: String "PrimitiveID" 55: String "LightVec" 61: String "GSOutput" 74: String "@main" 77: String "input" 83: String "outStream" 87: String "InvocationID" 97: String "int" 103: String "i" 120: String "bool" 126: String "output" 152: String "projection" 156: String "modelview" 160: String "lightPos" 164: String "UBO" 167: String "ubo" 174: String "" 204: String "pos" 213: String "worldPos" 224: String "lPos" 272: String "outStream.Pos" 281: String "outStream.ViewportIndex" 286: String "outStream.PrimitiveID" 293: String "outStream.Normal" 298: String "outStream.Color" 303: String "outStream.ViewVec" 308: String "outStream.LightVec" Name 6 "main" Name 23 "VSOutput" MemberName 23(VSOutput) 0 "Pos" MemberName 23(VSOutput) 1 "Normal" MemberName 23(VSOutput) 2 "Color" Name 46 "GSOutput" MemberName 46(GSOutput) 0 "Pos" MemberName 46(GSOutput) 1 "ViewportIndex" MemberName 46(GSOutput) 2 "PrimitiveID" MemberName 46(GSOutput) 3 "Normal" MemberName 46(GSOutput) 4 "Color" MemberName 46(GSOutput) 5 "ViewVec" MemberName 46(GSOutput) 6 "LightVec" Name 72 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;" Name 68 "input" Name 69 "outStream" Name 70 "InvocationID" Name 71 "PrimitiveID" Name 101 "i" Name 124 "output" Name 150 "UBO" MemberName 150(UBO) 0 "projection" MemberName 150(UBO) 1 "modelview" MemberName 150(UBO) 2 "lightPos" Name 165 "ubo" MemberName 165(ubo) 0 "ubo" Name 172 "" Name 202 "pos" Name 211 "worldPos" Name 222 "lPos" Name 270 "outStream.Pos" Name 279 "outStream.ViewportIndex" Name 284 "outStream.PrimitiveID" Name 291 "outStream.Normal" Name 296 "outStream.Color" Name 301 "outStream.ViewVec" Name 306 "outStream.LightVec" Name 319 "input" Name 322 "input.Pos" Name 329 "input.Normal" Name 334 "input.Color" Name 356 "InvocationID" Name 358 "InvocationID" Name 360 "PrimitiveID" Name 361 "PrimitiveID" Name 363 "outStream" Name 364 "param" Name 366 "param" Name 367 "param" Name 369 "param" Decorate 146 ArrayStride 64 Decorate 148 ArrayStride 64 MemberDecorate 150(UBO) 0 RowMajor MemberDecorate 150(UBO) 0 MatrixStride 16 MemberDecorate 150(UBO) 0 Offset 0 MemberDecorate 150(UBO) 1 RowMajor MemberDecorate 150(UBO) 1 MatrixStride 16 MemberDecorate 150(UBO) 1 Offset 128 MemberDecorate 150(UBO) 2 Offset 256 Decorate 165(ubo) Block MemberDecorate 165(ubo) 0 Offset 0 Decorate 172 Binding 0 Decorate 172 DescriptorSet 0 Decorate 270(outStream.Pos) BuiltIn Position Decorate 279(outStream.ViewportIndex) BuiltIn ViewportIndex Decorate 284(outStream.PrimitiveID) BuiltIn PrimitiveId Decorate 291(outStream.Normal) Location 0 Decorate 296(outStream.Color) Location 1 Decorate 301(outStream.ViewVec) Location 2 Decorate 306(outStream.LightVec) Location 3 Decorate 322(input.Pos) BuiltIn Position Decorate 329(input.Normal) Location 0 Decorate 334(input.Color) Location 1 Decorate 358(InvocationID) BuiltIn InvocationId Decorate 361(PrimitiveID) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 11: TypeInt 32 0 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypeVector 8(float) 3 22: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 23(VSOutput): TypeStruct 18(fvec4) 21(fvec3) 21(fvec3) 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 27 28: 11(int) Constant 37 29: 11(int) Constant 13 24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 28 29 16 16 17 32: 11(int) Constant 39 33: 11(int) Constant 34 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 37: 11(int) Constant 1 38: 11(int) Constant 56 40: 11(int) Constant 5 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 19 26 40 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 36 37 26 38 16 39 36 16 17 24 30 34 41: TypeArray 23(VSOutput) 17 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 17 43: TypePointer Function 41 44: 11(int) Constant 7 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 42 44 16 46(GSOutput): TypeStruct 18(fvec4) 11(int) 11(int) 21(fvec3) 21(fvec3) 21(fvec3) 21(fvec3) 48: 11(int) Constant 44 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 48 29 16 16 17 51: 11(int) Constant 46 52: 11(int) Constant 19 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 50 13 26 51 52 16 16 17 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 50 13 26 51 52 16 16 17 56: 11(int) Constant 50 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 22 26 56 28 16 16 17 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 22 26 56 28 16 16 17 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 22 26 56 28 16 16 17 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 22 26 56 28 16 16 17 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 61 37 26 38 16 39 61 16 17 47 49 53 54 57 58 59 62: TypePointer Function 46(GSOutput) 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 60 44 16 64: TypePointer Function 11(int) 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 44 16 66: TypeFunction 4 43(ptr) 62(ptr) 64(ptr) 64(ptr) 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 42 60 13 13 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 74 67 26 38 16 39 74 17 38 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 42 26 38 16 75 19 37 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 84: 11(int) Constant 2 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 60 26 38 16 75 19 84 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 13 26 38 16 75 19 17 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 13 26 38 16 75 19 19 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 26 16 16 75 94: 11(int) Constant 57 95: 11(int) Constant 10 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 26 94 95 92 96: TypeInt 32 1 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 14 19 16 99: TypePointer Function 96(int) 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 44 16 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 103 98 26 94 16 93 19 107: 96(int) Constant 0 118: 96(int) Constant 3 119: TypeBool 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 120 14 84 16 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 26 16 16 93 127: 11(int) Constant 59 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 126 60 26 127 16 123 19 131: 8(float) Constant 0 132: 18(fvec4) ConstantComposite 131 131 131 131 133: 21(fvec3) ConstantComposite 131 131 131 134:46(GSOutput) ConstantComposite 132 16 16 133 133 133 133 137: 11(int) Constant 60 138: 96(int) Constant 1 139: TypePointer Function 21(fvec3) 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 44 16 143: TypeMatrix 18(fvec4) 4 145: 119(bool) ConstantTrue 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 145 146: TypeArray 143 84 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 84 148: TypeArray 143 84 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 84 150(UBO): TypeStruct 146 148 18(fvec4) 153: 11(int) Constant 28 154: 11(int) Constant 21 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 147 26 153 154 16 16 17 157: 11(int) Constant 29 158: 11(int) Constant 20 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 149 26 157 158 16 16 17 161: 11(int) Constant 30 162: 11(int) Constant 17 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 160 20 26 161 162 16 16 17 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 164 37 26 137 16 39 164 16 17 151 155 159 165(ubo): TypeStruct 150(UBO) 168: 11(int) Constant 33 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 167 163 26 168 28 16 16 17 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 37 26 137 16 39 167 16 17 166 170: TypePointer Uniform 165(ubo) 171: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 169 84 16 172: 170(ptr) Variable Uniform 175: 11(int) Constant 8 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 174 169 26 137 16 39 174 172 175 177: TypePointer Uniform 143 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 144 84 16 181: TypeMatrix 21(fvec3) 3 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 22 17 145 192: 96(int) Constant 4 195: 11(int) Constant 61 196: 96(int) Constant 2 200: TypePointer Function 18(fvec4) 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 44 16 205: 11(int) Constant 63 203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 204 20 26 205 16 123 19 214: 11(int) Constant 64 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 213 20 26 214 16 123 19 225: 11(int) Constant 66 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 224 22 26 225 16 123 19 228: TypePointer Uniform 18(fvec4) 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 84 16 237: 96(int) Constant 6 240: 11(int) Constant 67 245: 96(int) Constant 5 248: 11(int) Constant 68 254: 11(int) Constant 70 262: 11(int) Constant 73 266: 11(int) Constant 74 268: TypePointer Output 18(fvec4) 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 17 16 270(outStream.Pos): 268(ptr) Variable Output 273: 11(int) Constant 75 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 272 20 26 273 16 39 272 270(outStream.Pos) 175 277: TypePointer Output 11(int) 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 17 16 279(outStream.ViewportIndex): 277(ptr) Variable Output 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 281 13 26 273 16 39 281 279(outStream.ViewportIndex) 175 284(outStream.PrimitiveID): 277(ptr) Variable Output 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 286 13 26 273 16 39 286 284(outStream.PrimitiveID) 175 289: TypePointer Output 21(fvec3) 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 17 16 291(outStream.Normal): 289(ptr) Variable Output 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 293 22 26 273 16 39 293 291(outStream.Normal) 175 296(outStream.Color): 289(ptr) Variable Output 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 298 22 26 273 16 39 298 296(outStream.Color) 175 301(outStream.ViewVec): 289(ptr) Variable Output 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 303 22 26 273 16 39 303 301(outStream.ViewVec) 175 306(outStream.LightVec): 289(ptr) Variable Output 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 308 22 26 273 16 39 308 306(outStream.LightVec) 175 317: 11(int) Constant 78 320: TypeArray 18(fvec4) 17 321: TypePointer Input 320 322(input.Pos): 321(ptr) Variable Input 323: TypePointer Input 18(fvec4) 327: TypeArray 21(fvec3) 17 328: TypePointer Input 327 329(input.Normal): 328(ptr) Variable Input 330: TypePointer Input 21(fvec3) 334(input.Color): 328(ptr) Variable Input 357: TypePointer Input 11(int) 358(InvocationID): 357(ptr) Variable Input 361(PrimitiveID): 357(ptr) Variable Input 6(main): 4 Function None 5 7: Label 319(input): 43(ptr) Variable Function 356(InvocationID): 64(ptr) Variable Function 360(PrimitiveID): 64(ptr) Variable Function 363(outStream): 62(ptr) Variable Function 364(param): 43(ptr) Variable Function 366(param): 62(ptr) Variable Function 367(param): 64(ptr) Variable Function 369(param): 64(ptr) Variable Function 324: 323(ptr) AccessChain 322(input.Pos) 107 325: 18(fvec4) Load 324 326: 200(ptr) AccessChain 319(input) 107 107 Store 326 325 331: 330(ptr) AccessChain 329(input.Normal) 107 332: 21(fvec3) Load 331 333: 139(ptr) AccessChain 319(input) 107 138 Store 333 332 335: 330(ptr) AccessChain 334(input.Color) 107 336: 21(fvec3) Load 335 337: 139(ptr) AccessChain 319(input) 107 196 Store 337 336 338: 323(ptr) AccessChain 322(input.Pos) 138 339: 18(fvec4) Load 338 340: 200(ptr) AccessChain 319(input) 138 107 Store 340 339 341: 330(ptr) AccessChain 329(input.Normal) 138 342: 21(fvec3) Load 341 343: 139(ptr) AccessChain 319(input) 138 138 Store 343 342 344: 330(ptr) AccessChain 334(input.Color) 138 345: 21(fvec3) Load 344 346: 139(ptr) AccessChain 319(input) 138 196 Store 346 345 347: 323(ptr) AccessChain 322(input.Pos) 196 348: 18(fvec4) Load 347 349: 200(ptr) AccessChain 319(input) 196 107 Store 349 348 350: 330(ptr) AccessChain 329(input.Normal) 196 351: 21(fvec3) Load 350 352: 139(ptr) AccessChain 319(input) 196 138 Store 352 351 353: 330(ptr) AccessChain 334(input.Color) 196 354: 21(fvec3) Load 353 355: 139(ptr) AccessChain 319(input) 196 196 Store 355 354 359: 11(int) Load 358(InvocationID) Store 356(InvocationID) 359 362: 11(int) Load 361(PrimitiveID) Store 360(PrimitiveID) 362 365: 41 Load 319(input) Store 364(param) 365 368: 11(int) Load 356(InvocationID) Store 367(param) 368 370: 11(int) Load 360(PrimitiveID) Store 369(param) 370 371: 4 FunctionCall 72(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 364(param) 366(param) 367(param) 369(param) 372:46(GSOutput) Load 366(param) Store 363(outStream) 372 Return FunctionEnd 72(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 4 Function None 66 68(input): 43(ptr) FunctionParameter 69(outStream): 62(ptr) FunctionParameter 70(InvocationID): 64(ptr) FunctionParameter 71(PrimitiveID): 64(ptr) FunctionParameter 73: Label 101(i): 99(ptr) Variable Function 124(output): 62(ptr) Variable Function 202(pos): 200(ptr) Variable Function 211(worldPos): 200(ptr) Variable Function 222(lPos): 139(ptr) Variable Function 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 75 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 38 38 16 16 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 68(input) 79 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 69(outStream) 79 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 70(InvocationID) 79 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 71(PrimitiveID) 79 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 75 72(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 93 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 102 101(i) 79 Store 101(i) 107 Branch 108 108: Label 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 93 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 LoopMerge 110 111 None Branch 114 114: Label 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 93 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 115: 96(int) Load 101(i) 122: 119(bool) SLessThan 115 118 BranchConditional 122 109 110 109: Label 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 123 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 127 127 16 16 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 125 124(output) 79 Store 124(output) 134 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 137 137 16 16 135: 96(int) Load 101(i) 141: 139(ptr) AccessChain 68(input) 135 138 142: 21(fvec3) Load 141 176: 11(int) Load 70(InvocationID) 179: 177(ptr) AccessChain 172 107 138 176 180: 143 Load 179 183: 18(fvec4) CompositeExtract 180 0 184: 21(fvec3) VectorShuffle 183 183 0 1 2 185: 18(fvec4) CompositeExtract 180 1 186: 21(fvec3) VectorShuffle 185 185 0 1 2 187: 18(fvec4) CompositeExtract 180 2 188: 21(fvec3) VectorShuffle 187 187 0 1 2 189: 181 CompositeConstruct 184 186 188 190: 21(fvec3) VectorTimesMatrix 142 189 191: 139(ptr) AccessChain 124(output) 118 Store 191 190 194: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 195 195 16 16 193: 96(int) Load 101(i) 197: 139(ptr) AccessChain 68(input) 193 196 198: 21(fvec3) Load 197 199: 139(ptr) AccessChain 124(output) 192 Store 199 198 207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 205 205 16 16 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 203 202(pos) 79 208: 96(int) Load 101(i) 209: 200(ptr) AccessChain 68(input) 208 107 210: 18(fvec4) Load 209 Store 202(pos) 210 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 214 214 16 16 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 212 211(worldPos) 79 217: 18(fvec4) Load 202(pos) 218: 11(int) Load 70(InvocationID) 219: 177(ptr) AccessChain 172 107 138 218 220: 143 Load 219 221: 18(fvec4) VectorTimesMatrix 217 220 Store 211(worldPos) 221 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 225 225 16 16 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 223 222(lPos) 79 230: 228(ptr) AccessChain 172 107 196 231: 18(fvec4) Load 230 232: 11(int) Load 70(InvocationID) 233: 177(ptr) AccessChain 172 107 138 232 234: 143 Load 233 235: 18(fvec4) VectorTimesMatrix 231 234 236: 21(fvec3) VectorShuffle 235 235 0 1 2 Store 222(lPos) 236 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 240 240 16 16 238: 21(fvec3) Load 222(lPos) 241: 18(fvec4) Load 211(worldPos) 242: 21(fvec3) VectorShuffle 241 241 0 1 2 243: 21(fvec3) FSub 238 242 244: 139(ptr) AccessChain 124(output) 237 Store 244 243 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 248 248 16 16 246: 18(fvec4) Load 211(worldPos) 249: 21(fvec3) VectorShuffle 246 246 0 1 2 250: 21(fvec3) FNegate 249 251: 139(ptr) AccessChain 124(output) 245 Store 251 250 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 254 254 16 16 252: 18(fvec4) Load 211(worldPos) 255: 11(int) Load 70(InvocationID) 256: 177(ptr) AccessChain 172 107 107 255 257: 143 Load 256 258: 18(fvec4) VectorTimesMatrix 252 257 259: 200(ptr) AccessChain 124(output) 107 Store 259 258 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 262 262 16 16 260: 11(int) Load 70(InvocationID) 263: 64(ptr) AccessChain 124(output) 138 Store 263 260 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 266 266 16 16 264: 11(int) Load 71(PrimitiveID) 267: 64(ptr) AccessChain 124(output) 196 Store 267 264 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 273 273 16 16 274: 200(ptr) AccessChain 124(output) 107 276: 18(fvec4) Load 274 Store 270(outStream.Pos) 276 282: 64(ptr) AccessChain 124(output) 138 283: 11(int) Load 282 Store 279(outStream.ViewportIndex) 283 287: 64(ptr) AccessChain 124(output) 196 288: 11(int) Load 287 Store 284(outStream.PrimitiveID) 288 294: 139(ptr) AccessChain 124(output) 118 295: 21(fvec3) Load 294 Store 291(outStream.Normal) 295 299: 139(ptr) AccessChain 124(output) 192 300: 21(fvec3) Load 299 Store 296(outStream.Color) 300 304: 139(ptr) AccessChain 124(output) 245 305: 21(fvec3) Load 304 Store 301(outStream.ViewVec) 305 309: 139(ptr) AccessChain 124(output) 237 310: 21(fvec3) Load 309 Store 306(outStream.LightVec) 310 EmitVertex Branch 111 111: Label 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 93 313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 311: 96(int) Load 101(i) 314: 96(int) IAdd 311 138 Store 101(i) 314 Branch 108 110: Label 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 317 317 16 16 EndPrimitive 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 75 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.hlsl.tesc.out000066400000000000000000001772341506534232700236650ustar00rootroot00000000000000spv.debuginfo.hlsl.tesc WARNING: spv.debuginfo.hlsl.tesc:158: '' : attribute does not apply to entry point // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 724 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 6 "main" 616 623 630 664 673 680 687 702 717 ExecutionMode 6 OutputVertices 4 ExecutionMode 6 Quads ExecutionMode 6 SpacingEqual ExecutionMode 6 VertexOrderCw 2: String "spv.debuginfo.hlsl.tesc" 9: String "float" 12: String "uint" 30: String "screenSpaceTessFactor" 33: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 /* 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 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 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; } " 39: String "p0" 45: String "p1" 53: String "bool" 61: String "frustumCheck" 65: String "Pos" 70: String "inUV" 79: String "Normal" 83: String "UV" 87: String "VSOutput" 99: String "TessLevelOuter" 103: String "TessLevelInner" 106: String "ConstantsHSOutput" 112: String "ConstantsHS" 115: String "patch" 129: String "HSOutput" 137: String "@main" 144: String "InvocationID" 150: String "midPoint" 164: String "radius" 175: String "v0" 187: String "modelview" 192: String "lightPos" 196: String "frustumPlanes" 199: String "tessellatedEdgeSize" 203: String "viewportDim" 207: String "UBO" 210: String "ubo" 217: String "" 220: String "int" 231: String "clip0" 249: String "clip1" 328: String "pos" 336: String "type.2d.image" 338: String "@type.2d.image" 344: String "textureHeight" 349: String "type.sampler" 350: String "@type.sampler" 355: String "samplerHeight" 359: String "type.sampled.image" 360: String "@type.sampled.image" 380: String "i" 435: String "output" Name 6 "main" Name 28 "screenSpaceTessFactor(vf4;vf4;" Name 26 "p0" Name 27 "p1" Name 59 "frustumCheck(vf4;vf2;" Name 57 "Pos" Name 58 "inUV" Name 74 "VSOutput" MemberName 74(VSOutput) 0 "Pos" MemberName 74(VSOutput) 1 "Normal" MemberName 74(VSOutput) 2 "UV" Name 97 "ConstantsHSOutput" MemberName 97(ConstantsHSOutput) 0 "TessLevelOuter" MemberName 97(ConstantsHSOutput) 1 "TessLevelInner" Name 110 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" Name 109 "patch" Name 121 "HSOutput" MemberName 121(HSOutput) 0 "Pos" MemberName 121(HSOutput) 1 "Normal" MemberName 121(HSOutput) 2 "UV" Name 135 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" Name 133 "patch" Name 134 "InvocationID" Name 148 "midPoint" Name 162 "radius" Name 173 "v0" Name 185 "UBO" MemberName 185(UBO) 0 "projection" MemberName 185(UBO) 1 "modelview" MemberName 185(UBO) 2 "lightPos" MemberName 185(UBO) 3 "frustumPlanes" MemberName 185(UBO) 4 "displacementFactor" MemberName 185(UBO) 5 "tessellationFactor" MemberName 185(UBO) 6 "viewportDim" MemberName 185(UBO) 7 "tessellatedEdgeSize" Name 208 "ubo" MemberName 208(ubo) 0 "ubo" Name 215 "" Name 229 "clip0" Name 247 "clip1" Name 326 "pos" Name 342 "textureHeight" Name 353 "samplerHeight" Name 378 "i" Name 433 "output" Name 444 "param" Name 449 "param" Name 487 "param" Name 493 "param" Name 498 "param" Name 503 "param" Name 508 "param" Name 513 "param" Name 518 "param" Name 523 "param" Name 577 "output" Name 613 "patch" Name 616 "patch.Pos" Name 623 "patch.Normal" Name 630 "patch.UV" Name 662 "InvocationID" Name 664 "InvocationID" Name 666 "flattenTemp" Name 667 "param" Name 669 "param" Name 673 "@entryPointOutput.Pos" Name 680 "@entryPointOutput.Normal" Name 687 "@entryPointOutput.UV" Name 697 "@patchConstantResult" Name 698 "param" Name 702 "@patchConstantOutput.TessLevelOuter" Name 717 "@patchConstantOutput.TessLevelInner" Decorate 183 ArrayStride 16 MemberDecorate 185(UBO) 0 RowMajor MemberDecorate 185(UBO) 0 MatrixStride 16 MemberDecorate 185(UBO) 0 Offset 0 MemberDecorate 185(UBO) 1 RowMajor MemberDecorate 185(UBO) 1 MatrixStride 16 MemberDecorate 185(UBO) 1 Offset 64 MemberDecorate 185(UBO) 2 Offset 128 MemberDecorate 185(UBO) 3 Offset 144 MemberDecorate 185(UBO) 4 Offset 240 MemberDecorate 185(UBO) 5 Offset 244 MemberDecorate 185(UBO) 6 Offset 248 MemberDecorate 185(UBO) 7 Offset 256 Decorate 208(ubo) Block MemberDecorate 208(ubo) 0 Offset 0 Decorate 215 Binding 0 Decorate 215 DescriptorSet 0 Decorate 342(textureHeight) Binding 1 Decorate 342(textureHeight) DescriptorSet 0 Decorate 353(samplerHeight) Binding 1 Decorate 353(samplerHeight) DescriptorSet 0 Decorate 616(patch.Pos) BuiltIn Position Decorate 623(patch.Normal) Location 0 Decorate 630(patch.UV) Location 1 Decorate 664(InvocationID) BuiltIn InvocationId Decorate 673(@entryPointOutput.Pos) BuiltIn Position Decorate 680(@entryPointOutput.Normal) Location 0 Decorate 687(@entryPointOutput.UV) Location 1 Decorate 702(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter Decorate 702(@patchConstantOutput.TessLevelOuter) Patch Decorate 717(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner Decorate 717(@patchConstantOutput.TessLevelInner) Patch 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 11: TypeInt 32 0 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypePointer Function 18(fvec4) 22: 11(int) Constant 7 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 16 24: TypeFunction 8(float) 21(ptr) 21(ptr) 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 20 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 33 34: 11(int) Constant 65 36: 11(int) Constant 1 37: 11(int) Constant 5 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 19 32 37 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 30 25 32 34 16 35 30 17 34 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 39 20 32 34 16 31 19 36 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 46: 11(int) Constant 2 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 20 32 34 16 31 19 46 48: TypeVector 8(float) 2 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 46 50: TypePointer Function 48(fvec2) 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 22 16 52: TypeBool 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 53 14 46 16 55: TypeFunction 52(bool) 21(ptr) 50(ptr) 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 54 20 49 63: 11(int) Constant 95 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 61 56 32 63 16 35 61 17 63 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 20 32 63 16 62 19 36 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 70 49 32 63 16 62 19 46 72: TypeVector 8(float) 3 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 74(VSOutput): TypeStruct 18(fvec4) 72(fvec3) 48(fvec2) 76: 11(int) Constant 44 77: 11(int) Constant 13 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 65 20 32 76 77 16 16 17 80: 11(int) Constant 45 81: 11(int) Constant 35 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 79 73 32 80 81 16 16 17 84: 11(int) Constant 46 85: 11(int) Constant 31 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 49 32 84 85 16 16 17 88: 11(int) Constant 112 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 87 36 32 88 16 35 87 16 17 75 78 82 89: TypeArray 74(VSOutput) 19 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 86 19 91: TypePointer Function 89 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 22 16 93: TypeArray 8(float) 19 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 95: TypeArray 8(float) 46 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 46 97(ConstantsHSOutput): TypeStruct 93 95 100: 11(int) Constant 58 101: 11(int) Constant 25 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 94 32 100 101 16 16 17 104: 11(int) Constant 59 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 103 96 32 104 101 16 16 17 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 106 36 32 88 16 35 106 16 17 98 102 107: TypeFunction 97(ConstantsHSOutput) 91(ptr) 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 105 90 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 112 108 32 88 16 35 112 17 88 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 115 90 32 88 16 113 19 36 119: TypePointer Function 11(int) 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 121(HSOutput): TypeStruct 18(fvec4) 72(fvec3) 48(fvec2) 123: 11(int) Constant 51 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 65 20 32 123 14 16 16 17 125: 11(int) Constant 52 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 79 73 32 125 81 16 16 17 127: 11(int) Constant 53 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 49 32 127 85 16 16 17 130: 11(int) Constant 158 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 129 36 32 130 16 35 129 16 17 122 124 126 131: TypeFunction 121(HSOutput) 91(ptr) 119(ptr) 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 128 90 13 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 137 132 32 130 16 35 137 17 130 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 115 90 32 130 16 138 19 36 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 144 13 32 130 16 138 19 46 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 31 151: 11(int) Constant 67 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 150 20 32 151 16 147 19 155: 8(float) Constant 1056964608 160: TypePointer Function 8(float) 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 165: 11(int) Constant 69 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 164 10 32 165 16 147 19 171: 8(float) Constant 1073741824 176: 11(int) Constant 72 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 175 20 32 176 16 147 19 180: TypeMatrix 18(fvec4) 4 182: 52(bool) ConstantTrue 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 182 183: TypeArray 18(fvec4) 15 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 185(UBO): TypeStruct 180 180 18(fvec4) 183 8(float) 8(float) 48(fvec2) 8(float) 188: 11(int) Constant 29 189: 11(int) Constant 20 186: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 181 32 188 189 16 16 17 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 181 32 188 189 16 16 17 193: 11(int) Constant 30 194: 11(int) Constant 17 191: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 20 32 193 194 16 16 17 197: 11(int) Constant 22 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 196 184 32 85 197 16 16 17 200: 11(int) Constant 27 198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 199 10 32 81 200 16 16 17 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 199 10 32 81 200 16 16 17 204: 11(int) Constant 34 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 203 49 32 204 189 16 16 17 205: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 199 10 32 81 200 16 16 17 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 207 36 32 176 16 35 207 16 17 186 190 191 195 198 201 202 205 208(ubo): TypeStruct 185(UBO) 211: 11(int) Constant 37 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 210 206 32 211 211 16 16 17 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 210 36 32 176 16 35 210 16 17 209 213: TypePointer Uniform 208(ubo) 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 212 46 16 215: 213(ptr) Variable Uniform 218: 11(int) Constant 8 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 217 212 32 176 16 35 217 215 218 219: TypeInt 32 1 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 220 14 19 16 222: 219(int) Constant 0 223: 219(int) Constant 1 224: TypePointer Uniform 180 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 181 46 16 232: 11(int) Constant 75 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 231 20 32 232 16 147 19 237: 8(float) Constant 0 238: 72(fvec3) ConstantComposite 237 237 237 250: 11(int) Constant 76 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 20 32 250 16 147 19 265: 11(int) Constant 79 272: 11(int) Constant 80 277: 219(int) Constant 6 278: TypePointer Uniform 48(fvec2) 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 46 16 282: 11(int) Constant 83 293: 11(int) Constant 84 304: 11(int) Constant 89 307: 219(int) Constant 7 308: TypePointer Uniform 8(float) 309: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 46 16 313: 219(int) Constant 5 317: 8(float) Constant 1065353216 318: 8(float) Constant 1115684864 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 62 329: 11(int) Constant 98 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 328 20 32 329 16 325 19 334: TypeImage 8(float) 2D sampled format:Unknown 337: 11(int) Constant 99 339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 336 16 32 337 16 35 338 339 17 340: TypePointer UniformConstant 334 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 335 16 16 342(textureHeight): 340(ptr) Variable UniformConstant 343: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 344 335 32 337 16 35 344 342(textureHeight) 218 347: TypeSampler 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 349 36 32 337 16 35 350 339 17 351: TypePointer UniformConstant 347 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 348 16 16 353(samplerHeight): 351(ptr) Variable UniformConstant 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 355 348 32 337 16 35 355 353(samplerHeight) 218 357: TypeSampledImage 334 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 359 16 32 337 16 35 360 339 17 365: 219(int) Constant 4 374: 11(int) Constant 102 375: 11(int) Constant 11 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 374 375 325 376: TypePointer Function 219(int) 377: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 221 22 16 379: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 380 221 32 374 16 373 19 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 373 399: 11(int) Constant 103 400: 219(int) Constant 3 402: TypePointer Uniform 18(fvec4) 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 46 16 407: 8(float) Constant 1090519040 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 395 413: 52(bool) ConstantFalse 416: 11(int) Constant 105 424: 11(int) Constant 108 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 113 431: TypePointer Function 97(ConstantsHSOutput) 432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 105 22 16 436: 11(int) Constant 113 434: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 435 105 32 436 16 430 19 440: 93 ConstantComposite 237 237 237 237 441: 95 ConstantComposite 237 237 442:97(ConstantsHSOutput) ConstantComposite 440 441 443: 219(int) Constant 2 447: 11(int) Constant 115 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 430 460: 11(int) Constant 117 463: 11(int) Constant 118 466: 11(int) Constant 119 469: 11(int) Constant 120 472: 11(int) Constant 121 475: 11(int) Constant 122 477: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 430 481: 11(int) Constant 126 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 477 491: 11(int) Constant 128 501: 11(int) Constant 129 511: 11(int) Constant 130 521: 11(int) Constant 131 530: 11(int) Constant 132 538: 11(int) Constant 133 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 477 549: 11(int) Constant 139 552: 11(int) Constant 140 555: 11(int) Constant 141 558: 11(int) Constant 142 561: 11(int) Constant 143 564: 11(int) Constant 144 568: 11(int) Constant 148 574: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 32 16 16 138 575: TypePointer Function 121(HSOutput) 576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 22 16 579: 11(int) Constant 159 578: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 435 128 32 579 16 574 19 583: 18(fvec4) ConstantComposite 237 237 237 237 584: 48(fvec2) ConstantComposite 237 237 585:121(HSOutput) ConstantComposite 583 238 584 588: 11(int) Constant 160 594: 11(int) Constant 161 595: TypePointer Function 72(fvec3) 596: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 22 16 602: 11(int) Constant 162 608: 11(int) Constant 163 614: TypeArray 18(fvec4) 19 615: TypePointer Input 614 616(patch.Pos): 615(ptr) Variable Input 617: TypePointer Input 18(fvec4) 621: TypeArray 72(fvec3) 19 622: TypePointer Input 621 623(patch.Normal): 622(ptr) Variable Input 624: TypePointer Input 72(fvec3) 628: TypeArray 48(fvec2) 19 629: TypePointer Input 628 630(patch.UV): 629(ptr) Variable Input 631: TypePointer Input 48(fvec2) 663: TypePointer Input 11(int) 664(InvocationID): 663(ptr) Variable Input 672: TypePointer Output 614 673(@entryPointOutput.Pos): 672(ptr) Variable Output 677: TypePointer Output 18(fvec4) 679: TypePointer Output 621 680(@entryPointOutput.Normal): 679(ptr) Variable Output 684: TypePointer Output 72(fvec3) 686: TypePointer Output 628 687(@entryPointOutput.UV): 686(ptr) Variable Output 691: TypePointer Output 48(fvec2) 701: TypePointer Output 93 702(@patchConstantOutput.TessLevelOuter): 701(ptr) Variable Output 705: TypePointer Output 8(float) 716: TypePointer Output 95 717(@patchConstantOutput.TessLevelInner): 716(ptr) Variable Output 6(main): 4 Function None 5 7: Label 613(patch): 91(ptr) Variable Function 662(InvocationID): 119(ptr) Variable Function 666(flattenTemp): 575(ptr) Variable Function 667(param): 91(ptr) Variable Function 669(param): 119(ptr) Variable Function 697(@patchConstantResult): 431(ptr) Variable Function 698(param): 91(ptr) Variable Function 618: 617(ptr) AccessChain 616(patch.Pos) 222 619: 18(fvec4) Load 618 620: 21(ptr) AccessChain 613(patch) 222 222 Store 620 619 625: 624(ptr) AccessChain 623(patch.Normal) 222 626: 72(fvec3) Load 625 627: 595(ptr) AccessChain 613(patch) 222 223 Store 627 626 632: 631(ptr) AccessChain 630(patch.UV) 222 633: 48(fvec2) Load 632 634: 50(ptr) AccessChain 613(patch) 222 443 Store 634 633 635: 617(ptr) AccessChain 616(patch.Pos) 223 636: 18(fvec4) Load 635 637: 21(ptr) AccessChain 613(patch) 223 222 Store 637 636 638: 624(ptr) AccessChain 623(patch.Normal) 223 639: 72(fvec3) Load 638 640: 595(ptr) AccessChain 613(patch) 223 223 Store 640 639 641: 631(ptr) AccessChain 630(patch.UV) 223 642: 48(fvec2) Load 641 643: 50(ptr) AccessChain 613(patch) 223 443 Store 643 642 644: 617(ptr) AccessChain 616(patch.Pos) 443 645: 18(fvec4) Load 644 646: 21(ptr) AccessChain 613(patch) 443 222 Store 646 645 647: 624(ptr) AccessChain 623(patch.Normal) 443 648: 72(fvec3) Load 647 649: 595(ptr) AccessChain 613(patch) 443 223 Store 649 648 650: 631(ptr) AccessChain 630(patch.UV) 443 651: 48(fvec2) Load 650 652: 50(ptr) AccessChain 613(patch) 443 443 Store 652 651 653: 617(ptr) AccessChain 616(patch.Pos) 400 654: 18(fvec4) Load 653 655: 21(ptr) AccessChain 613(patch) 400 222 Store 655 654 656: 624(ptr) AccessChain 623(patch.Normal) 400 657: 72(fvec3) Load 656 658: 595(ptr) AccessChain 613(patch) 400 223 Store 658 657 659: 631(ptr) AccessChain 630(patch.UV) 400 660: 48(fvec2) Load 659 661: 50(ptr) AccessChain 613(patch) 400 443 Store 661 660 665: 11(int) Load 664(InvocationID) Store 662(InvocationID) 665 668: 89 Load 613(patch) Store 667(param) 668 670: 11(int) Load 662(InvocationID) Store 669(param) 670 671:121(HSOutput) FunctionCall 135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 667(param) 669(param) Store 666(flattenTemp) 671 674: 11(int) Load 664(InvocationID) 675: 21(ptr) AccessChain 666(flattenTemp) 222 676: 18(fvec4) Load 675 678: 677(ptr) AccessChain 673(@entryPointOutput.Pos) 674 Store 678 676 681: 11(int) Load 664(InvocationID) 682: 595(ptr) AccessChain 666(flattenTemp) 223 683: 72(fvec3) Load 682 685: 684(ptr) AccessChain 680(@entryPointOutput.Normal) 681 Store 685 683 688: 11(int) Load 664(InvocationID) 689: 50(ptr) AccessChain 666(flattenTemp) 443 690: 48(fvec2) Load 689 692: 691(ptr) AccessChain 687(@entryPointOutput.UV) 688 Store 692 690 ControlBarrier 46 19 16 693: 11(int) Load 664(InvocationID) 694: 52(bool) IEqual 693 222 SelectionMerge 696 None BranchConditional 694 695 696 695: Label 699: 89 Load 613(patch) Store 698(param) 699 700:97(ConstantsHSOutput) FunctionCall 110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 698(param) Store 697(@patchConstantResult) 700 703: 160(ptr) AccessChain 697(@patchConstantResult) 222 222 704: 8(float) Load 703 706: 705(ptr) AccessChain 702(@patchConstantOutput.TessLevelOuter) 222 Store 706 704 707: 160(ptr) AccessChain 697(@patchConstantResult) 222 223 708: 8(float) Load 707 709: 705(ptr) AccessChain 702(@patchConstantOutput.TessLevelOuter) 223 Store 709 708 710: 160(ptr) AccessChain 697(@patchConstantResult) 222 443 711: 8(float) Load 710 712: 705(ptr) AccessChain 702(@patchConstantOutput.TessLevelOuter) 443 Store 712 711 713: 160(ptr) AccessChain 697(@patchConstantResult) 222 400 714: 8(float) Load 713 715: 705(ptr) AccessChain 702(@patchConstantOutput.TessLevelOuter) 400 Store 715 714 718: 160(ptr) AccessChain 697(@patchConstantResult) 223 222 719: 8(float) Load 718 720: 705(ptr) AccessChain 717(@patchConstantOutput.TessLevelInner) 222 Store 720 719 721: 160(ptr) AccessChain 697(@patchConstantResult) 223 223 722: 8(float) Load 721 723: 705(ptr) AccessChain 717(@patchConstantOutput.TessLevelInner) 223 Store 723 722 Branch 696 696: Label Return FunctionEnd 28(screenSpaceTessFactor(vf4;vf4;): 8(float) Function None 24 26(p0): 21(ptr) FunctionParameter 27(p1): 21(ptr) FunctionParameter 29: Label 148(midPoint): 21(ptr) Variable Function 162(radius): 160(ptr) Variable Function 173(v0): 21(ptr) Variable Function 229(clip0): 21(ptr) Variable Function 247(clip1): 21(ptr) Variable Function 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 34 34 16 16 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 26(p0) 41 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 27(p1) 41 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 31 28(screenSpaceTessFactor(vf4;vf4;) 153: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 147 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 151 151 16 16 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 149 148(midPoint) 41 156: 18(fvec4) Load 26(p0) 157: 18(fvec4) Load 27(p1) 158: 18(fvec4) FAdd 156 157 159: 18(fvec4) VectorTimesScalar 158 155 Store 148(midPoint) 159 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 165 165 16 16 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 163 162(radius) 41 168: 18(fvec4) Load 26(p0) 169: 18(fvec4) Load 27(p1) 170: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 168 169 172: 8(float) FDiv 170 171 Store 162(radius) 172 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 176 176 16 16 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 174 173(v0) 41 179: 18(fvec4) Load 148(midPoint) 226: 224(ptr) AccessChain 215 222 223 227: 180 Load 226 228: 18(fvec4) VectorTimesMatrix 179 227 Store 173(v0) 228 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 232 232 16 16 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 230 229(clip0) 41 235: 18(fvec4) Load 173(v0) 236: 8(float) Load 162(radius) 239: 8(float) CompositeExtract 238 0 240: 8(float) CompositeExtract 238 1 241: 8(float) CompositeExtract 238 2 242: 18(fvec4) CompositeConstruct 236 239 240 241 243: 18(fvec4) FSub 235 242 244: 224(ptr) AccessChain 215 222 222 245: 180 Load 244 246: 18(fvec4) VectorTimesMatrix 243 245 Store 229(clip0) 246 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 250 250 16 16 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(clip1) 41 253: 18(fvec4) Load 173(v0) 254: 8(float) Load 162(radius) 255: 8(float) CompositeExtract 238 0 256: 8(float) CompositeExtract 238 1 257: 8(float) CompositeExtract 238 2 258: 18(fvec4) CompositeConstruct 254 255 256 257 259: 18(fvec4) FAdd 253 258 260: 224(ptr) AccessChain 215 222 222 261: 180 Load 260 262: 18(fvec4) VectorTimesMatrix 259 261 Store 247(clip1) 262 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 265 265 16 16 263: 160(ptr) AccessChain 229(clip0) 17 266: 8(float) Load 263 267: 18(fvec4) Load 229(clip0) 268: 18(fvec4) CompositeConstruct 266 266 266 266 269: 18(fvec4) FDiv 267 268 Store 229(clip0) 269 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 272 272 16 16 270: 160(ptr) AccessChain 247(clip1) 17 273: 8(float) Load 270 274: 18(fvec4) Load 247(clip1) 275: 18(fvec4) CompositeConstruct 273 273 273 273 276: 18(fvec4) FDiv 274 275 Store 247(clip1) 276 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 282 282 16 16 280: 278(ptr) AccessChain 215 222 277 283: 48(fvec2) Load 280 284: 18(fvec4) Load 229(clip0) 285: 48(fvec2) VectorShuffle 284 284 0 1 286: 48(fvec2) FMul 285 283 287: 160(ptr) AccessChain 229(clip0) 16 288: 8(float) CompositeExtract 286 0 Store 287 288 289: 160(ptr) AccessChain 229(clip0) 36 290: 8(float) CompositeExtract 286 1 Store 289 290 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 293 293 16 16 291: 278(ptr) AccessChain 215 222 277 294: 48(fvec2) Load 291 295: 18(fvec4) Load 247(clip1) 296: 48(fvec2) VectorShuffle 295 295 0 1 297: 48(fvec2) FMul 296 294 298: 160(ptr) AccessChain 247(clip1) 16 299: 8(float) CompositeExtract 297 0 Store 298 299 300: 160(ptr) AccessChain 247(clip1) 36 301: 8(float) CompositeExtract 297 1 Store 300 301 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 304 304 16 16 302: 18(fvec4) Load 229(clip0) 305: 18(fvec4) Load 247(clip1) 306: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 302 305 310: 308(ptr) AccessChain 215 222 307 311: 8(float) Load 310 312: 8(float) FDiv 306 311 314: 308(ptr) AccessChain 215 222 313 315: 8(float) Load 314 316: 8(float) FMul 312 315 319: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 316 317 318 ReturnValue 319 FunctionEnd 59(frustumCheck(vf4;vf2;): 52(bool) Function None 55 57(Pos): 21(ptr) FunctionParameter 58(inUV): 50(ptr) FunctionParameter 60: Label 326(pos): 21(ptr) Variable Function 378(i): 376(ptr) Variable Function 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 63 63 16 16 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 57(Pos) 41 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 58(inUV) 41 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 62 59(frustumCheck(vf4;vf2;) 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 325 332: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 329 329 16 16 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 327 326(pos) 41 333: 18(fvec4) Load 57(Pos) Store 326(pos) 333 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 337 337 16 16 345: 334 Load 342(textureHeight) 356: 347 Load 353(samplerHeight) 361: 357 SampledImage 345 356 362: 48(fvec2) Load 58(inUV) 363: 18(fvec4) ImageSampleExplicitLod 361 362 Lod 237 364: 8(float) CompositeExtract 363 0 366: 308(ptr) AccessChain 215 222 365 367: 8(float) Load 366 368: 8(float) FMul 364 367 369: 160(ptr) AccessChain 326(pos) 36 370: 8(float) Load 369 371: 8(float) FSub 370 368 372: 160(ptr) AccessChain 326(pos) 36 Store 372 371 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 373 383: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 374 374 16 16 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 379 378(i) 41 Store 378(i) 222 Branch 384 384: Label 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 373 389: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 374 374 16 16 LoopMerge 386 387 None Branch 390 390: Label 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 373 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 374 374 16 16 391: 219(int) Load 378(i) 394: 52(bool) SLessThan 391 277 BranchConditional 394 385 386 385: Label 397: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 395 398: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 399 399 16 16 396: 18(fvec4) Load 326(pos) 401: 219(int) Load 378(i) 404: 402(ptr) AccessChain 215 222 400 401 405: 18(fvec4) Load 404 406: 8(float) Dot 396 405 408: 8(float) FAdd 406 407 409: 52(bool) FOrdLessThan 408 237 SelectionMerge 411 None BranchConditional 409 410 411 410: Label 414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 412 415: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 416 416 16 16 ReturnValue 413 411: Label Branch 387 387: Label 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 373 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 374 374 16 16 418: 219(int) Load 378(i) 421: 219(int) IAdd 418 223 Store 378(i) 421 Branch 384 386: Label 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 325 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 424 424 16 16 ReturnValue 182 FunctionEnd 110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):97(ConstantsHSOutput) Function None 107 109(patch): 91(ptr) FunctionParameter 111: Label 433(output): 431(ptr) Variable Function 444(param): 21(ptr) Variable Function 449(param): 50(ptr) Variable Function 487(param): 21(ptr) Variable Function 493(param): 21(ptr) Variable Function 498(param): 21(ptr) Variable Function 503(param): 21(ptr) Variable Function 508(param): 21(ptr) Variable Function 513(param): 21(ptr) Variable Function 518(param): 21(ptr) Variable Function 523(param): 21(ptr) Variable Function 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 88 88 16 16 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 114 109(patch) 41 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 113 110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 430 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 436 436 16 16 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 434 433(output) 41 Store 433(output) 442 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 447 447 16 16 445: 21(ptr) AccessChain 109(patch) 222 222 448: 18(fvec4) Load 445 Store 444(param) 448 450: 50(ptr) AccessChain 109(patch) 222 443 451: 48(fvec2) Load 450 Store 449(param) 451 452: 52(bool) FunctionCall 59(frustumCheck(vf4;vf2;) 444(param) 449(param) 453: 52(bool) LogicalNot 452 SelectionMerge 455 None BranchConditional 453 454 476 454: Label 458: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 456 459: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 460 460 16 16 457: 160(ptr) AccessChain 433(output) 223 222 Store 457 237 462: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 463 463 16 16 461: 160(ptr) AccessChain 433(output) 223 223 Store 461 237 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 466 466 16 16 464: 160(ptr) AccessChain 433(output) 222 222 Store 464 237 468: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 469 469 16 16 467: 160(ptr) AccessChain 433(output) 222 223 Store 467 237 471: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 472 472 16 16 470: 160(ptr) AccessChain 433(output) 222 443 Store 470 237 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 475 475 16 16 473: 160(ptr) AccessChain 433(output) 222 400 Store 473 237 Branch 455 476: Label 479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 477 480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 481 481 16 16 478: 308(ptr) AccessChain 215 222 313 482: 8(float) Load 478 483: 52(bool) FOrdGreaterThan 482 237 SelectionMerge 485 None BranchConditional 483 484 544 484: Label 489: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 486 490: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 491 491 16 16 488: 21(ptr) AccessChain 109(patch) 400 222 492: 18(fvec4) Load 488 Store 487(param) 492 494: 21(ptr) AccessChain 109(patch) 222 222 495: 18(fvec4) Load 494 Store 493(param) 495 496: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 487(param) 493(param) 497: 160(ptr) AccessChain 433(output) 222 222 Store 497 496 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 501 501 16 16 499: 21(ptr) AccessChain 109(patch) 222 222 502: 18(fvec4) Load 499 Store 498(param) 502 504: 21(ptr) AccessChain 109(patch) 223 222 505: 18(fvec4) Load 504 Store 503(param) 505 506: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 498(param) 503(param) 507: 160(ptr) AccessChain 433(output) 222 223 Store 507 506 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 511 511 16 16 509: 21(ptr) AccessChain 109(patch) 223 222 512: 18(fvec4) Load 509 Store 508(param) 512 514: 21(ptr) AccessChain 109(patch) 443 222 515: 18(fvec4) Load 514 Store 513(param) 515 516: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 508(param) 513(param) 517: 160(ptr) AccessChain 433(output) 222 443 Store 517 516 520: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 521 521 16 16 519: 21(ptr) AccessChain 109(patch) 443 222 522: 18(fvec4) Load 519 Store 518(param) 522 524: 21(ptr) AccessChain 109(patch) 400 222 525: 18(fvec4) Load 524 Store 523(param) 525 526: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 518(param) 523(param) 527: 160(ptr) AccessChain 433(output) 222 400 Store 527 526 529: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 530 530 16 16 528: 160(ptr) AccessChain 433(output) 222 222 531: 8(float) Load 528 532: 160(ptr) AccessChain 433(output) 222 400 533: 8(float) Load 532 534: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 531 533 155 535: 160(ptr) AccessChain 433(output) 223 222 Store 535 534 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 538 538 16 16 536: 160(ptr) AccessChain 433(output) 222 443 539: 8(float) Load 536 540: 160(ptr) AccessChain 433(output) 222 223 541: 8(float) Load 540 542: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 539 541 155 543: 160(ptr) AccessChain 433(output) 223 223 Store 543 542 Branch 485 544: Label 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 545 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 549 549 16 16 546: 160(ptr) AccessChain 433(output) 223 222 Store 546 317 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 552 552 16 16 550: 160(ptr) AccessChain 433(output) 223 223 Store 550 317 554: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 555 555 16 16 553: 160(ptr) AccessChain 433(output) 222 222 Store 553 317 557: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 558 558 16 16 556: 160(ptr) AccessChain 433(output) 222 223 Store 556 317 560: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 561 561 16 16 559: 160(ptr) AccessChain 433(output) 222 443 Store 559 317 563: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 564 564 16 16 562: 160(ptr) AccessChain 433(output) 222 400 Store 562 317 Branch 485 485: Label Branch 455 455: Label 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 430 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 568 568 16 16 565:97(ConstantsHSOutput) Load 433(output) ReturnValue 565 FunctionEnd 135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):121(HSOutput) Function None 131 133(patch): 91(ptr) FunctionParameter 134(InvocationID): 119(ptr) FunctionParameter 136: Label 577(output): 575(ptr) Variable Function 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 138 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 130 130 16 16 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 139 133(patch) 41 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 143 134(InvocationID) 41 573: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 138 135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 581: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 574 582: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 579 579 16 16 580: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 578 577(output) 41 Store 577(output) 585 587: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 588 588 16 16 586: 11(int) Load 134(InvocationID) 589: 21(ptr) AccessChain 133(patch) 586 222 590: 18(fvec4) Load 589 591: 21(ptr) AccessChain 577(output) 222 Store 591 590 593: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 594 594 16 16 592: 11(int) Load 134(InvocationID) 597: 595(ptr) AccessChain 133(patch) 592 223 598: 72(fvec3) Load 597 599: 595(ptr) AccessChain 577(output) 223 Store 599 598 601: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 602 602 16 16 600: 11(int) Load 134(InvocationID) 603: 50(ptr) AccessChain 133(patch) 600 443 604: 48(fvec2) Load 603 605: 50(ptr) AccessChain 577(output) 443 Store 605 604 607: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 608 608 16 16 606:121(HSOutput) Load 577(output) ReturnValue 606 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.hlsl.tese.out000066400000000000000000001261471506534232700236640ustar00rootroot00000000000000spv.debuginfo.hlsl.tese // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 481 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 6 "main" 372 387 396 405 412 418 458 462 466 469 472 475 478 ExecutionMode 6 Quads 2: String "spv.debuginfo.hlsl.tese" 9: String "float" 12: String "uint" 26: String "TessLevelOuter" 28: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 /* 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 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; } " 32: String "TessLevelInner" 35: String "ConstantsHSOutput" 53: String "Pos" 56: String "Normal" 60: String "UV" 64: String "HSOutput" 72: String "WorldPos" 82: String "DSOutput" 90: String "@main" 93: String "input" 99: String "TessCoord" 102: String "patch" 110: String "output" 122: String "uv1" 127: String "int" 142: String "uv2" 166: String "n1" 178: String "n2" 201: String "pos1" 213: String "pos2" 225: String "pos" 237: String "type.2d.image" 239: String "@type.2d.image" 245: String "displacementMapTexture" 251: String "type.sampler" 252: String "@type.sampler" 257: String "displacementMapSampler" 261: String "type.sampled.image" 262: String "@type.sampled.image" 271: String "bool" 278: String "modelview" 283: String "lightPos" 287: String "frustumPlanes" 290: String "tessellatedEdgeSize" 294: String "viewportDim" 298: String "UBO" 301: String "ubo" 307: String "" Name 6 "main" Name 24 "ConstantsHSOutput" MemberName 24(ConstantsHSOutput) 0 "TessLevelOuter" MemberName 24(ConstantsHSOutput) 1 "TessLevelInner" Name 51 "HSOutput" MemberName 51(HSOutput) 0 "Pos" MemberName 51(HSOutput) 1 "Normal" MemberName 51(HSOutput) 2 "UV" Name 67 "DSOutput" MemberName 67(DSOutput) 0 "Pos" MemberName 67(DSOutput) 1 "Normal" MemberName 67(DSOutput) 2 "UV" MemberName 67(DSOutput) 3 "ViewVec" MemberName 67(DSOutput) 4 "LightVec" MemberName 67(DSOutput) 5 "EyePos" MemberName 67(DSOutput) 6 "WorldPos" Name 88 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];" Name 85 "input" Name 86 "TessCoord" Name 87 "patch" Name 108 "output" Name 120 "uv1" Name 140 "uv2" Name 164 "n1" Name 176 "n2" Name 199 "pos1" Name 211 "pos2" Name 223 "pos" Name 243 "displacementMapTexture" Name 255 "displacementMapSampler" Name 276 "UBO" MemberName 276(UBO) 0 "projection" MemberName 276(UBO) 1 "modelview" MemberName 276(UBO) 2 "lightPos" MemberName 276(UBO) 3 "frustumPlanes" MemberName 276(UBO) 4 "displacementFactor" MemberName 276(UBO) 5 "tessellationFactor" MemberName 276(UBO) 6 "viewportDim" MemberName 276(UBO) 7 "tessellatedEdgeSize" Name 299 "ubo" MemberName 299(ubo) 0 "ubo" Name 305 "" Name 370 "input" Name 372 "input.TessLevelOuter" Name 387 "input.TessLevelInner" Name 394 "TessCoord" Name 396 "TessCoord" Name 402 "patch" Name 405 "patch.Pos" Name 412 "patch.Normal" Name 418 "patch.UV" Name 450 "flattenTemp" Name 452 "param" Name 454 "param" Name 458 "@entryPointOutput.Pos" Name 462 "@entryPointOutput.Normal" Name 466 "@entryPointOutput.UV" Name 469 "@entryPointOutput.ViewVec" Name 472 "@entryPointOutput.LightVec" Name 475 "@entryPointOutput.EyePos" Name 478 "@entryPointOutput.WorldPos" Decorate 243(displacementMapTexture) Binding 1 Decorate 243(displacementMapTexture) DescriptorSet 0 Decorate 255(displacementMapSampler) Binding 1 Decorate 255(displacementMapSampler) DescriptorSet 0 Decorate 274 ArrayStride 16 MemberDecorate 276(UBO) 0 RowMajor MemberDecorate 276(UBO) 0 MatrixStride 16 MemberDecorate 276(UBO) 0 Offset 0 MemberDecorate 276(UBO) 1 RowMajor MemberDecorate 276(UBO) 1 MatrixStride 16 MemberDecorate 276(UBO) 1 Offset 64 MemberDecorate 276(UBO) 2 Offset 128 MemberDecorate 276(UBO) 3 Offset 144 MemberDecorate 276(UBO) 4 Offset 240 MemberDecorate 276(UBO) 5 Offset 244 MemberDecorate 276(UBO) 6 Offset 248 MemberDecorate 276(UBO) 7 Offset 256 Decorate 299(ubo) Block MemberDecorate 299(ubo) 0 Offset 0 Decorate 305 Binding 0 Decorate 305 DescriptorSet 0 Decorate 372(input.TessLevelOuter) BuiltIn TessLevelOuter Decorate 372(input.TessLevelOuter) Patch Decorate 387(input.TessLevelInner) BuiltIn TessLevelInner Decorate 387(input.TessLevelInner) Patch Decorate 396(TessCoord) BuiltIn TessCoord Decorate 396(TessCoord) Patch Decorate 405(patch.Pos) BuiltIn Position Decorate 412(patch.Normal) Location 0 Decorate 418(patch.UV) Location 1 Decorate 458(@entryPointOutput.Pos) BuiltIn Position Decorate 462(@entryPointOutput.Normal) Location 0 Decorate 466(@entryPointOutput.UV) Location 1 Decorate 469(@entryPointOutput.ViewVec) Location 2 Decorate 472(@entryPointOutput.LightVec) Location 3 Decorate 475(@entryPointOutput.EyePos) Location 4 Decorate 478(@entryPointOutput.WorldPos) Location 5 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 11: TypeInt 32 0 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: 11(int) Constant 4 19: TypeArray 8(float) 18 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 18 21: 11(int) Constant 2 22: TypeArray 8(float) 21 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 21 24(ConstantsHSOutput): TypeStruct 19 22 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 28 29: 11(int) Constant 51 30: 11(int) Constant 25 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 26 20 27 29 30 16 16 17 33: 11(int) Constant 52 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 32 23 27 33 30 16 16 17 36: 11(int) Constant 1 37: 11(int) Constant 68 39: 11(int) Constant 5 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 27 39 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 27 37 16 38 35 16 17 25 31 40: TypePointer Function 24(ConstantsHSOutput) 41: 11(int) Constant 7 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 34 41 16 43: TypeVector 8(float) 2 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 45: TypePointer Function 43(fvec2) 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 44 41 16 47: TypeVector 8(float) 4 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 18 49: TypeVector 8(float) 3 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 51(HSOutput): TypeStruct 47(fvec4) 49(fvec3) 43(fvec2) 54: 11(int) Constant 44 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 53 48 27 54 14 16 16 17 57: 11(int) Constant 45 58: 11(int) Constant 35 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 56 50 27 57 58 16 16 17 61: 11(int) Constant 46 62: 11(int) Constant 31 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 60 44 27 61 62 16 16 17 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 64 36 27 37 16 38 64 16 17 52 55 59 65: TypeArray 51(HSOutput) 18 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 63 18 67(DSOutput): TypeStruct 47(fvec4) 49(fvec3) 43(fvec2) 49(fvec3) 49(fvec3) 49(fvec3) 49(fvec3) 69: 11(int) Constant 57 70: 11(int) Constant 13 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 53 48 27 69 70 16 16 17 73: 11(int) Constant 63 74: 11(int) Constant 37 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 76: 11(int) Constant 59 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 60 44 27 76 62 16 16 17 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 82 36 27 37 16 38 82 16 17 68 71 75 77 78 79 80 83: TypeFunction 67(DSOutput) 40(ptr) 45(ptr) 65 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 81 34 44 63 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 90 84 27 37 16 38 90 17 37 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 34 27 37 16 91 18 36 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 44 27 37 16 91 18 21 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 63 27 37 16 91 18 17 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 27 16 16 91 106: TypePointer Function 67(DSOutput) 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 81 41 16 111: 11(int) Constant 70 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 110 81 27 111 16 105 18 115: 8(float) Constant 0 116: 47(fvec4) ConstantComposite 115 115 115 115 117: 49(fvec3) ConstantComposite 115 115 115 118: 43(fvec2) ConstantComposite 115 115 119:67(DSOutput) ConstantComposite 116 117 118 117 117 117 117 123: 11(int) Constant 71 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 122 44 27 123 16 105 18 126: TypeInt 32 1 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 127 14 18 16 129: 126(int) Constant 0 130: 126(int) Constant 2 132: 126(int) Constant 1 134: TypePointer Function 8(float) 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 41 16 143: 11(int) Constant 72 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 44 27 143 16 105 18 146: 126(int) Constant 3 155: 11(int) Constant 73 162: TypePointer Function 49(fvec3) 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 41 16 167: 11(int) Constant 75 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 50 27 167 16 105 18 179: 11(int) Constant 76 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 178 50 27 179 16 105 18 190: 11(int) Constant 77 197: TypePointer Function 47(fvec4) 198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 48 41 16 202: 11(int) Constant 80 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 201 48 27 202 16 105 18 214: 11(int) Constant 81 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 213 48 27 214 16 105 18 226: 11(int) Constant 82 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 48 27 226 16 105 18 235: TypeImage 8(float) 2D sampled format:Unknown 238: 11(int) Constant 84 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 237 16 27 238 16 38 239 240 17 241: TypePointer UniformConstant 235 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 236 16 16 243(displacementMapTexture): 241(ptr) Variable UniformConstant 246: 11(int) Constant 8 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 245 236 27 238 16 38 245 243(displacementMapTexture) 246 249: TypeSampler 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 251 36 27 238 16 38 252 240 17 253: TypePointer UniformConstant 249 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 250 16 16 255(displacementMapSampler): 253(ptr) Variable UniformConstant 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 250 27 238 16 38 257 255(displacementMapSampler) 246 259: TypeSampledImage 235 260: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 261 16 27 238 16 38 262 240 17 268: TypeMatrix 47(fvec4) 4 270: TypeBool 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 271 14 21 16 273: 270(bool) ConstantTrue 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 48 18 273 274: TypeArray 47(fvec4) 15 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 48 15 276(UBO): TypeStruct 268 268 47(fvec4) 274 8(float) 8(float) 43(fvec2) 8(float) 279: 11(int) Constant 29 280: 11(int) Constant 20 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 278 269 27 279 280 16 16 17 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 278 269 27 279 280 16 16 17 284: 11(int) Constant 30 285: 11(int) Constant 17 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 283 48 27 284 285 16 16 17 288: 11(int) Constant 22 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 287 275 27 62 288 16 16 17 291: 11(int) Constant 27 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 290 10 27 58 291 16 16 17 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 290 10 27 58 291 16 16 17 295: 11(int) Constant 34 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 294 44 27 295 280 16 16 17 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 290 10 27 58 291 16 16 17 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 298 36 27 238 16 38 298 16 17 277 281 282 286 289 292 293 296 299(ubo): TypeStruct 276(UBO) 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 301 297 27 74 74 16 16 17 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 301 36 27 238 16 38 301 16 17 300 303: TypePointer Uniform 299(ubo) 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 302 21 16 305: 303(ptr) Variable Uniform 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 307 302 27 238 16 38 307 305 246 308: 126(int) Constant 4 309: TypePointer Uniform 8(float) 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 320: 11(int) Constant 86 321: TypePointer Uniform 268 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 269 21 16 332: 11(int) Constant 89 336: TypePointer Uniform 47(fvec4) 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 48 21 16 340: 11(int) Constant 90 348: 126(int) Constant 6 351: 11(int) Constant 91 354: 126(int) Constant 5 357: 11(int) Constant 92 365: 11(int) Constant 93 371: TypePointer Input 19 372(input.TessLevelOuter): 371(ptr) Variable Input 373: TypePointer Input 8(float) 386: TypePointer Input 22 387(input.TessLevelInner): 386(ptr) Variable Input 395: TypePointer Input 49(fvec3) 396(TessCoord): 395(ptr) Variable Input 401: TypePointer Function 65 403: TypeArray 47(fvec4) 18 404: TypePointer Input 403 405(patch.Pos): 404(ptr) Variable Input 406: TypePointer Input 47(fvec4) 410: TypeArray 49(fvec3) 18 411: TypePointer Input 410 412(patch.Normal): 411(ptr) Variable Input 416: TypeArray 43(fvec2) 18 417: TypePointer Input 416 418(patch.UV): 417(ptr) Variable Input 419: TypePointer Input 43(fvec2) 457: TypePointer Output 47(fvec4) 458(@entryPointOutput.Pos): 457(ptr) Variable Output 461: TypePointer Output 49(fvec3) 462(@entryPointOutput.Normal): 461(ptr) Variable Output 465: TypePointer Output 43(fvec2) 466(@entryPointOutput.UV): 465(ptr) Variable Output 469(@entryPointOutput.ViewVec): 461(ptr) Variable Output 472(@entryPointOutput.LightVec): 461(ptr) Variable Output 475(@entryPointOutput.EyePos): 461(ptr) Variable Output 478(@entryPointOutput.WorldPos): 461(ptr) Variable Output 6(main): 4 Function None 5 7: Label 370(input): 40(ptr) Variable Function 394(TessCoord): 45(ptr) Variable Function 402(patch): 401(ptr) Variable Function 450(flattenTemp): 106(ptr) Variable Function 452(param): 40(ptr) Variable Function 454(param): 45(ptr) Variable Function 374: 373(ptr) AccessChain 372(input.TessLevelOuter) 129 375: 8(float) Load 374 376: 134(ptr) AccessChain 370(input) 129 129 Store 376 375 377: 373(ptr) AccessChain 372(input.TessLevelOuter) 132 378: 8(float) Load 377 379: 134(ptr) AccessChain 370(input) 129 132 Store 379 378 380: 373(ptr) AccessChain 372(input.TessLevelOuter) 130 381: 8(float) Load 380 382: 134(ptr) AccessChain 370(input) 129 130 Store 382 381 383: 373(ptr) AccessChain 372(input.TessLevelOuter) 146 384: 8(float) Load 383 385: 134(ptr) AccessChain 370(input) 129 146 Store 385 384 388: 373(ptr) AccessChain 387(input.TessLevelInner) 129 389: 8(float) Load 388 390: 134(ptr) AccessChain 370(input) 132 129 Store 390 389 391: 373(ptr) AccessChain 387(input.TessLevelInner) 132 392: 8(float) Load 391 393: 134(ptr) AccessChain 370(input) 132 132 Store 393 392 397: 49(fvec3) Load 396(TessCoord) 398: 8(float) CompositeExtract 397 0 399: 8(float) CompositeExtract 397 1 400: 43(fvec2) CompositeConstruct 398 399 Store 394(TessCoord) 400 407: 406(ptr) AccessChain 405(patch.Pos) 129 408: 47(fvec4) Load 407 409: 197(ptr) AccessChain 402(patch) 129 129 Store 409 408 413: 395(ptr) AccessChain 412(patch.Normal) 129 414: 49(fvec3) Load 413 415: 162(ptr) AccessChain 402(patch) 129 132 Store 415 414 420: 419(ptr) AccessChain 418(patch.UV) 129 421: 43(fvec2) Load 420 422: 45(ptr) AccessChain 402(patch) 129 130 Store 422 421 423: 406(ptr) AccessChain 405(patch.Pos) 132 424: 47(fvec4) Load 423 425: 197(ptr) AccessChain 402(patch) 132 129 Store 425 424 426: 395(ptr) AccessChain 412(patch.Normal) 132 427: 49(fvec3) Load 426 428: 162(ptr) AccessChain 402(patch) 132 132 Store 428 427 429: 419(ptr) AccessChain 418(patch.UV) 132 430: 43(fvec2) Load 429 431: 45(ptr) AccessChain 402(patch) 132 130 Store 431 430 432: 406(ptr) AccessChain 405(patch.Pos) 130 433: 47(fvec4) Load 432 434: 197(ptr) AccessChain 402(patch) 130 129 Store 434 433 435: 395(ptr) AccessChain 412(patch.Normal) 130 436: 49(fvec3) Load 435 437: 162(ptr) AccessChain 402(patch) 130 132 Store 437 436 438: 419(ptr) AccessChain 418(patch.UV) 130 439: 43(fvec2) Load 438 440: 45(ptr) AccessChain 402(patch) 130 130 Store 440 439 441: 406(ptr) AccessChain 405(patch.Pos) 146 442: 47(fvec4) Load 441 443: 197(ptr) AccessChain 402(patch) 146 129 Store 443 442 444: 395(ptr) AccessChain 412(patch.Normal) 146 445: 49(fvec3) Load 444 446: 162(ptr) AccessChain 402(patch) 146 132 Store 446 445 447: 419(ptr) AccessChain 418(patch.UV) 146 448: 43(fvec2) Load 447 449: 45(ptr) AccessChain 402(patch) 146 130 Store 449 448 451: 65 Load 402(patch) 453:24(ConstantsHSOutput) Load 370(input) Store 452(param) 453 455: 43(fvec2) Load 394(TessCoord) Store 454(param) 455 456:67(DSOutput) FunctionCall 88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 452(param) 454(param) 451 Store 450(flattenTemp) 456 459: 197(ptr) AccessChain 450(flattenTemp) 129 460: 47(fvec4) Load 459 Store 458(@entryPointOutput.Pos) 460 463: 162(ptr) AccessChain 450(flattenTemp) 132 464: 49(fvec3) Load 463 Store 462(@entryPointOutput.Normal) 464 467: 45(ptr) AccessChain 450(flattenTemp) 130 468: 43(fvec2) Load 467 Store 466(@entryPointOutput.UV) 468 470: 162(ptr) AccessChain 450(flattenTemp) 146 471: 49(fvec3) Load 470 Store 469(@entryPointOutput.ViewVec) 471 473: 162(ptr) AccessChain 450(flattenTemp) 308 474: 49(fvec3) Load 473 Store 472(@entryPointOutput.LightVec) 474 476: 162(ptr) AccessChain 450(flattenTemp) 354 477: 49(fvec3) Load 476 Store 475(@entryPointOutput.EyePos) 477 479: 162(ptr) AccessChain 450(flattenTemp) 348 480: 49(fvec3) Load 479 Store 478(@entryPointOutput.WorldPos) 480 Return FunctionEnd 88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):67(DSOutput) Function None 83 85(input): 40(ptr) FunctionParameter 86(TessCoord): 45(ptr) FunctionParameter 87(patch): 65 FunctionParameter 89: Label 108(output): 106(ptr) Variable Function 120(uv1): 45(ptr) Variable Function 140(uv2): 45(ptr) Variable Function 164(n1): 162(ptr) Variable Function 176(n2): 162(ptr) Variable Function 199(pos1): 197(ptr) Variable Function 211(pos2): 197(ptr) Variable Function 223(pos): 197(ptr) Variable Function 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 37 37 16 16 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 85(input) 95 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 86(TessCoord) 95 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 87(patch) 95 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 91 88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 111 111 16 16 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 109 108(output) 95 Store 108(output) 119 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 123 123 16 16 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 121 120(uv1) 95 131: 43(fvec2) CompositeExtract 87(patch) 0 2 133: 43(fvec2) CompositeExtract 87(patch) 1 2 136: 134(ptr) AccessChain 86(TessCoord) 16 137: 8(float) Load 136 138: 43(fvec2) CompositeConstruct 137 137 139: 43(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 131 133 138 Store 120(uv1) 139 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 143 143 16 16 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(uv2) 95 147: 43(fvec2) CompositeExtract 87(patch) 3 2 148: 43(fvec2) CompositeExtract 87(patch) 2 2 149: 134(ptr) AccessChain 86(TessCoord) 16 150: 8(float) Load 149 151: 43(fvec2) CompositeConstruct 150 150 152: 43(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 147 148 151 Store 140(uv2) 152 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 155 155 16 16 153: 43(fvec2) Load 120(uv1) 156: 43(fvec2) Load 140(uv2) 157: 134(ptr) AccessChain 86(TessCoord) 36 158: 8(float) Load 157 159: 43(fvec2) CompositeConstruct 158 158 160: 43(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 153 156 159 161: 45(ptr) AccessChain 108(output) 130 Store 161 160 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 167 167 16 16 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 165 164(n1) 95 170: 49(fvec3) CompositeExtract 87(patch) 0 1 171: 49(fvec3) CompositeExtract 87(patch) 1 1 172: 134(ptr) AccessChain 86(TessCoord) 16 173: 8(float) Load 172 174: 49(fvec3) CompositeConstruct 173 173 173 175: 49(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 170 171 174 Store 164(n1) 175 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 179 179 16 16 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 177 176(n2) 95 182: 49(fvec3) CompositeExtract 87(patch) 3 1 183: 49(fvec3) CompositeExtract 87(patch) 2 1 184: 134(ptr) AccessChain 86(TessCoord) 16 185: 8(float) Load 184 186: 49(fvec3) CompositeConstruct 185 185 185 187: 49(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 182 183 186 Store 176(n2) 187 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 190 190 16 16 188: 49(fvec3) Load 164(n1) 191: 49(fvec3) Load 176(n2) 192: 134(ptr) AccessChain 86(TessCoord) 36 193: 8(float) Load 192 194: 49(fvec3) CompositeConstruct 193 193 193 195: 49(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 188 191 194 196: 162(ptr) AccessChain 108(output) 132 Store 196 195 204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 202 202 16 16 203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 200 199(pos1) 95 205: 47(fvec4) CompositeExtract 87(patch) 0 0 206: 47(fvec4) CompositeExtract 87(patch) 1 0 207: 134(ptr) AccessChain 86(TessCoord) 16 208: 8(float) Load 207 209: 47(fvec4) CompositeConstruct 208 208 208 208 210: 47(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 205 206 209 Store 199(pos1) 210 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 214 214 16 16 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 212 211(pos2) 95 217: 47(fvec4) CompositeExtract 87(patch) 3 0 218: 47(fvec4) CompositeExtract 87(patch) 2 0 219: 134(ptr) AccessChain 86(TessCoord) 16 220: 8(float) Load 219 221: 47(fvec4) CompositeConstruct 220 220 220 220 222: 47(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 217 218 221 Store 211(pos2) 222 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 226 226 16 16 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(pos) 95 229: 47(fvec4) Load 199(pos1) 230: 47(fvec4) Load 211(pos2) 231: 134(ptr) AccessChain 86(TessCoord) 36 232: 8(float) Load 231 233: 47(fvec4) CompositeConstruct 232 232 232 232 234: 47(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 229 230 233 Store 223(pos) 234 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 238 238 16 16 247: 235 Load 243(displacementMapTexture) 258: 249 Load 255(displacementMapSampler) 263: 259 SampledImage 247 258 264: 45(ptr) AccessChain 108(output) 130 265: 43(fvec2) Load 264 266: 47(fvec4) ImageSampleExplicitLod 263 265 Lod 115 267: 8(float) CompositeExtract 266 0 311: 309(ptr) AccessChain 305 129 308 312: 8(float) Load 311 313: 8(float) FMul 267 312 314: 134(ptr) AccessChain 223(pos) 36 315: 8(float) Load 314 316: 8(float) FSub 315 313 317: 134(ptr) AccessChain 223(pos) 36 Store 317 316 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 320 320 16 16 318: 47(fvec4) Load 223(pos) 323: 321(ptr) AccessChain 305 129 132 324: 268 Load 323 325: 47(fvec4) VectorTimesMatrix 318 324 326: 321(ptr) AccessChain 305 129 129 327: 268 Load 326 328: 47(fvec4) VectorTimesMatrix 325 327 329: 197(ptr) AccessChain 108(output) 129 Store 329 328 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 332 332 16 16 330: 47(fvec4) Load 223(pos) 333: 49(fvec3) VectorShuffle 330 330 0 1 2 334: 49(fvec3) FNegate 333 335: 162(ptr) AccessChain 108(output) 146 Store 335 334 339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 340 340 16 16 338: 336(ptr) AccessChain 305 129 130 341: 47(fvec4) Load 338 342: 49(fvec3) VectorShuffle 341 341 0 1 2 343: 162(ptr) AccessChain 108(output) 146 344: 49(fvec3) Load 343 345: 49(fvec3) FAdd 342 344 346: 49(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 345 347: 162(ptr) AccessChain 108(output) 308 Store 347 346 350: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 351 351 16 16 349: 47(fvec4) Load 223(pos) 352: 49(fvec3) VectorShuffle 349 349 0 1 2 353: 162(ptr) AccessChain 108(output) 348 Store 353 352 356: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 357 357 16 16 355: 47(fvec4) Load 223(pos) 358: 321(ptr) AccessChain 305 129 132 359: 268 Load 358 360: 47(fvec4) VectorTimesMatrix 355 359 361: 49(fvec3) VectorShuffle 360 360 0 1 2 362: 162(ptr) AccessChain 108(output) 354 Store 362 361 364: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 365 365 16 16 363:67(DSOutput) Load 108(output) ReturnValue 363 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.hlsl.vert.out000066400000000000000000001266551506534232700237100ustar00rootroot00000000000000spv.debuginfo.hlsl.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 518 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 6 "main" 467 470 474 477 480 483 487 491 499 503 506 509 512 515 2: String "spv.debuginfo.hlsl.vert" 9: String "float" 12: String "uint" 24: String "int" 29: String "instanceRot" 31: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed hlsl-offsets #line 1 /* 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; } " 36: String "UV" 43: String "instanceScale" 47: String "instanceTexIndex" 51: String "VSInput" 63: String "Pos" 67: String "LightVec" 74: String "VSOutput" 80: String "@main" 83: String "input" 94: String "output" 132: String "s" 142: String "bool" 147: String "modelview" 152: String "lightPos" 156: String "globSpeed" 160: String "UBO" 163: String "ubo" 170: String "" 181: String "c" 197: String "mx" 232: String "my" 266: String "mz" 286: String "rotMat" 299: String "gRotMat" 346: String "locPos" 360: String "pos" 426: String "lPos" Name 6 "main" Name 27 "VSInput" MemberName 27(VSInput) 0 "Pos" MemberName 27(VSInput) 1 "Normal" MemberName 27(VSInput) 2 "UV" MemberName 27(VSInput) 3 "Color" MemberName 27(VSInput) 4 "instancePos" MemberName 27(VSInput) 5 "instanceRot" MemberName 27(VSInput) 6 "instanceScale" MemberName 27(VSInput) 7 "instanceTexIndex" Name 61 "VSOutput" MemberName 61(VSOutput) 0 "Pos" MemberName 61(VSOutput) 1 "Normal" MemberName 61(VSOutput) 2 "Color" MemberName 61(VSOutput) 3 "UV" MemberName 61(VSOutput) 4 "ViewVec" MemberName 61(VSOutput) 5 "LightVec" Name 78 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" Name 77 "input" Name 92 "output" Name 130 "s" Name 145 "UBO" MemberName 145(UBO) 0 "projection" MemberName 145(UBO) 1 "modelview" MemberName 145(UBO) 2 "lightPos" MemberName 145(UBO) 3 "locSpeed" MemberName 145(UBO) 4 "globSpeed" Name 161 "ubo" MemberName 161(ubo) 0 "ubo" Name 168 "" Name 179 "c" Name 195 "mx" Name 230 "my" Name 264 "mz" Name 284 "rotMat" Name 297 "gRotMat" Name 344 "locPos" Name 358 "pos" Name 424 "lPos" Name 465 "input" Name 467 "input.Pos" Name 470 "input.Normal" Name 474 "input.UV" Name 477 "input.Color" Name 480 "input.instancePos" Name 483 "input.instanceRot" Name 487 "input.instanceScale" Name 491 "input.instanceTexIndex" Name 494 "flattenTemp" Name 495 "param" Name 499 "@entryPointOutput.Pos" Name 503 "@entryPointOutput.Normal" Name 506 "@entryPointOutput.Color" Name 509 "@entryPointOutput.UV" Name 512 "@entryPointOutput.ViewVec" Name 515 "@entryPointOutput.LightVec" MemberDecorate 145(UBO) 0 RowMajor MemberDecorate 145(UBO) 0 MatrixStride 16 MemberDecorate 145(UBO) 0 Offset 0 MemberDecorate 145(UBO) 1 RowMajor MemberDecorate 145(UBO) 1 MatrixStride 16 MemberDecorate 145(UBO) 1 Offset 64 MemberDecorate 145(UBO) 2 Offset 128 MemberDecorate 145(UBO) 3 Offset 144 MemberDecorate 145(UBO) 4 Offset 148 Decorate 161(ubo) Block MemberDecorate 161(ubo) 0 Offset 0 Decorate 168 Binding 0 Decorate 168 DescriptorSet 0 Decorate 467(input.Pos) Location 0 Decorate 470(input.Normal) Location 1 Decorate 474(input.UV) Location 2 Decorate 477(input.Color) Location 3 Decorate 480(input.instancePos) Location 4 Decorate 483(input.instanceRot) Location 5 Decorate 487(input.instanceScale) Location 6 Decorate 491(input.instanceTexIndex) Location 7 Decorate 499(@entryPointOutput.Pos) BuiltIn Position Decorate 503(@entryPointOutput.Normal) Location 0 Decorate 506(@entryPointOutput.Color) Location 1 Decorate 509(@entryPointOutput.UV) Location 2 Decorate 512(@entryPointOutput.ViewVec) Location 3 Decorate 515(@entryPointOutput.LightVec) Location 4 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 11: TypeInt 32 0 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 3 19: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 20: TypeVector 8(float) 2 21: 11(int) Constant 2 22: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 23: TypeInt 32 1 26: 11(int) Constant 4 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 14 26 16 27(VSInput): TypeStruct 18(fvec3) 18(fvec3) 20(fvec2) 18(fvec3) 18(fvec3) 18(fvec3) 8(float) 23(int) 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 31 32: 11(int) Constant 35 33: 11(int) Constant 40 28: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 37: 11(int) Constant 30 38: 11(int) Constant 31 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 36 22 30 37 38 16 16 17 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 44: 11(int) Constant 36 45: 11(int) Constant 41 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 43 10 30 44 45 16 16 17 48: 11(int) Constant 37 49: 11(int) Constant 42 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 25 30 48 49 16 16 17 52: 11(int) Constant 1 53: 11(int) Constant 62 55: 11(int) Constant 5 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 52 26 30 55 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 52 30 53 16 54 51 16 17 28 34 35 39 40 41 42 46 56: TypePointer Function 27(VSInput) 57: 11(int) Constant 7 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 57 16 59: TypeVector 8(float) 4 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 26 61(VSOutput): TypeStruct 59(fvec4) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 64: 11(int) Constant 53 65: 11(int) Constant 13 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 60 30 64 65 16 16 17 68: 11(int) Constant 58 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 74 52 30 53 16 54 74 16 17 62 66 69 70 71 72 75: TypeFunction 61(VSOutput) 56(ptr) 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 73 50 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 80 76 30 53 16 54 80 17 53 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 50 30 53 16 81 26 52 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 30 16 16 81 90: TypePointer Function 61(VSOutput) 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 57 16 95: 11(int) Constant 63 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 94 73 30 95 16 89 26 99: 8(float) Constant 0 100: 59(fvec4) ConstantComposite 99 99 99 99 101: 18(fvec3) ConstantComposite 99 99 99 102:61(VSOutput) ConstantComposite 100 101 101 101 101 101 103: 23(int) Constant 2 104: 23(int) Constant 3 105: TypePointer Function 18(fvec3) 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 57 16 109: 11(int) Constant 64 112: TypePointer Function 20(fvec2) 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 57 16 116: 11(int) Constant 65 118: 23(int) Constant 7 119: TypePointer Function 23(int) 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 25 57 16 128: TypePointer Function 8(float) 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 57 16 133: 11(int) Constant 68 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 132 10 30 133 16 89 26 136: 23(int) Constant 5 139: TypeMatrix 59(fvec4) 4 141: TypeBool 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 14 21 16 144: 141(bool) ConstantTrue 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 60 26 144 145(UBO): TypeStruct 139 139 59(fvec4) 8(float) 8(float) 148: 11(int) Constant 43 149: 11(int) Constant 20 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 147 140 30 148 149 16 16 17 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 147 140 30 148 149 16 16 17 153: 11(int) Constant 44 154: 11(int) Constant 17 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 60 30 153 154 16 16 17 157: 11(int) Constant 46 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 10 30 157 154 16 16 17 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 10 30 157 154 16 16 17 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 160 52 30 133 16 54 160 16 17 146 150 151 155 158 161(ubo): TypeStruct 145(UBO) 164: 11(int) Constant 49 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 159 30 164 48 16 16 17 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 52 30 133 16 54 163 16 17 162 166: TypePointer Uniform 161(ubo) 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 165 21 16 168: 166(ptr) Variable Uniform 171: 11(int) Constant 8 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 170 165 30 133 16 54 170 168 171 172: 23(int) Constant 0 173: TypePointer Uniform 8(float) 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 182: 11(int) Constant 69 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 181 10 30 182 16 89 26 191: TypeMatrix 18(fvec3) 3 192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 144 193: TypePointer Function 191 194: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 192 57 16 198: 11(int) Constant 71 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 197 192 30 198 16 89 26 206: 11(int) Constant 72 208: 8(float) Constant 1065353216 216: 11(int) Constant 76 224: 11(int) Constant 77 233: 11(int) Constant 79 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 232 192 30 233 16 89 26 241: 11(int) Constant 81 250: 11(int) Constant 84 258: 11(int) Constant 85 267: 11(int) Constant 87 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 192 30 267 16 89 26 272: 11(int) Constant 88 277: 11(int) Constant 89 287: 11(int) Constant 91 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 286 192 30 287 16 89 26 295: TypePointer Function 139 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 140 57 16 300: 11(int) Constant 93 298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 299 140 30 300 16 89 26 305: 11(int) Constant 94 307: 23(int) Constant 4 314: 11(int) Constant 95 322: 11(int) Constant 96 326: TypePointer Function 59(fvec4) 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 60 57 16 329: 23(int) Constant 1 330: 59(fvec4) ConstantComposite 99 208 99 99 333: 11(int) Constant 97 336: 11(int) Constant 98 340: 59(fvec4) ConstantComposite 99 99 99 208 343: 11(int) Constant 99 347: 11(int) Constant 101 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 346 60 30 347 16 89 26 361: 11(int) Constant 102 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 360 60 30 361 16 89 26 366: 23(int) Constant 6 379: 11(int) Constant 104 382: TypePointer Uniform 139 383: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 140 21 16 393: 11(int) Constant 105 412: 11(int) Constant 107 427: 11(int) Constant 108 425: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 426 19 30 427 16 89 26 430: TypePointer Uniform 59(fvec4) 431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 60 21 16 447: 11(int) Constant 109 454: 11(int) Constant 110 460: 11(int) Constant 111 466: TypePointer Input 18(fvec3) 467(input.Pos): 466(ptr) Variable Input 470(input.Normal): 466(ptr) Variable Input 473: TypePointer Input 20(fvec2) 474(input.UV): 473(ptr) Variable Input 477(input.Color): 466(ptr) Variable Input 480(input.instancePos): 466(ptr) Variable Input 483(input.instanceRot): 466(ptr) Variable Input 486: TypePointer Input 8(float) 487(input.instanceScale): 486(ptr) Variable Input 490: TypePointer Input 23(int) 491(input.instanceTexIndex): 490(ptr) Variable Input 498: TypePointer Output 59(fvec4) 499(@entryPointOutput.Pos): 498(ptr) Variable Output 502: TypePointer Output 18(fvec3) 503(@entryPointOutput.Normal): 502(ptr) Variable Output 506(@entryPointOutput.Color): 502(ptr) Variable Output 509(@entryPointOutput.UV): 502(ptr) Variable Output 512(@entryPointOutput.ViewVec): 502(ptr) Variable Output 515(@entryPointOutput.LightVec): 502(ptr) Variable Output 6(main): 4 Function None 5 7: Label 465(input): 56(ptr) Variable Function 494(flattenTemp): 90(ptr) Variable Function 495(param): 56(ptr) Variable Function 468: 18(fvec3) Load 467(input.Pos) 469: 105(ptr) AccessChain 465(input) 172 Store 469 468 471: 18(fvec3) Load 470(input.Normal) 472: 105(ptr) AccessChain 465(input) 329 Store 472 471 475: 20(fvec2) Load 474(input.UV) 476: 112(ptr) AccessChain 465(input) 103 Store 476 475 478: 18(fvec3) Load 477(input.Color) 479: 105(ptr) AccessChain 465(input) 104 Store 479 478 481: 18(fvec3) Load 480(input.instancePos) 482: 105(ptr) AccessChain 465(input) 307 Store 482 481 484: 18(fvec3) Load 483(input.instanceRot) 485: 105(ptr) AccessChain 465(input) 136 Store 485 484 488: 8(float) Load 487(input.instanceScale) 489: 128(ptr) AccessChain 465(input) 366 Store 489 488 492: 23(int) Load 491(input.instanceTexIndex) 493: 119(ptr) AccessChain 465(input) 118 Store 493 492 496: 27(VSInput) Load 465(input) Store 495(param) 496 497:61(VSOutput) FunctionCall 78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 495(param) Store 494(flattenTemp) 497 500: 326(ptr) AccessChain 494(flattenTemp) 172 501: 59(fvec4) Load 500 Store 499(@entryPointOutput.Pos) 501 504: 105(ptr) AccessChain 494(flattenTemp) 329 505: 18(fvec3) Load 504 Store 503(@entryPointOutput.Normal) 505 507: 105(ptr) AccessChain 494(flattenTemp) 103 508: 18(fvec3) Load 507 Store 506(@entryPointOutput.Color) 508 510: 105(ptr) AccessChain 494(flattenTemp) 104 511: 18(fvec3) Load 510 Store 509(@entryPointOutput.UV) 511 513: 105(ptr) AccessChain 494(flattenTemp) 307 514: 18(fvec3) Load 513 Store 512(@entryPointOutput.ViewVec) 514 516: 105(ptr) AccessChain 494(flattenTemp) 136 517: 18(fvec3) Load 516 Store 515(@entryPointOutput.LightVec) 517 Return FunctionEnd 78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):61(VSOutput) Function None 75 77(input): 56(ptr) FunctionParameter 79: Label 92(output): 90(ptr) Variable Function 130(s): 128(ptr) Variable Function 179(c): 128(ptr) Variable Function 195(mx): 193(ptr) Variable Function 230(my): 193(ptr) Variable Function 264(mz): 193(ptr) Variable Function 284(rotMat): 193(ptr) Variable Function 297(gRotMat): 295(ptr) Variable Function 344(locPos): 326(ptr) Variable Function 358(pos): 326(ptr) Variable Function 424(lPos): 105(ptr) Variable Function 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 81 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 53 53 16 16 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 77(input) 85 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 81 78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 89 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 95 95 16 16 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 93 92(output) 85 Store 92(output) 102 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 109 109 16 16 107: 105(ptr) AccessChain 77(input) 104 110: 18(fvec3) Load 107 111: 105(ptr) AccessChain 92(output) 103 Store 111 110 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 116 116 16 16 114: 112(ptr) AccessChain 77(input) 103 117: 20(fvec2) Load 114 121: 119(ptr) AccessChain 77(input) 118 122: 23(int) Load 121 123: 8(float) ConvertSToF 122 124: 8(float) CompositeExtract 117 0 125: 8(float) CompositeExtract 117 1 126: 18(fvec3) CompositeConstruct 124 125 123 127: 105(ptr) AccessChain 92(output) 104 Store 127 126 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 133 133 16 16 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 131 130(s) 85 137: 128(ptr) AccessChain 77(input) 136 16 138: 8(float) Load 137 175: 173(ptr) AccessChain 168 172 104 176: 8(float) Load 175 177: 8(float) FAdd 138 176 178: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 177 Store 130(s) 178 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 182 182 16 16 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 180 179(c) 85 185: 128(ptr) AccessChain 77(input) 136 16 186: 8(float) Load 185 187: 173(ptr) AccessChain 168 172 104 188: 8(float) Load 187 189: 8(float) FAdd 186 188 190: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 189 Store 179(c) 190 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 198 198 16 16 199: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 196 195(mx) 85 201: 8(float) Load 179(c) 202: 8(float) Load 130(s) 203: 8(float) FNegate 202 205: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 206 206 16 16 204: 8(float) Load 130(s) 207: 8(float) Load 179(c) 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 198 198 16 16 209: 18(fvec3) CompositeConstruct 201 203 99 211: 18(fvec3) CompositeConstruct 204 207 99 212: 18(fvec3) CompositeConstruct 99 99 208 213: 191 CompositeConstruct 209 211 212 Store 195(mx) 213 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 216 216 16 16 214: 128(ptr) AccessChain 77(input) 136 52 217: 8(float) Load 214 218: 173(ptr) AccessChain 168 172 104 219: 8(float) Load 218 220: 8(float) FAdd 217 219 221: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 220 Store 130(s) 221 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 224 224 16 16 222: 128(ptr) AccessChain 77(input) 136 52 225: 8(float) Load 222 226: 173(ptr) AccessChain 168 172 104 227: 8(float) Load 226 228: 8(float) FAdd 225 227 229: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 228 Store 179(c) 229 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 233 233 16 16 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 231 230(my) 85 236: 8(float) Load 179(c) 237: 8(float) Load 130(s) 238: 8(float) FNegate 237 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 241 241 16 16 239: 8(float) Load 130(s) 242: 8(float) Load 179(c) 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 233 233 16 16 243: 18(fvec3) CompositeConstruct 236 99 238 245: 18(fvec3) CompositeConstruct 99 208 99 246: 18(fvec3) CompositeConstruct 239 99 242 247: 191 CompositeConstruct 243 245 246 Store 230(my) 247 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 250 250 16 16 248: 128(ptr) AccessChain 77(input) 136 21 251: 8(float) Load 248 252: 173(ptr) AccessChain 168 172 104 253: 8(float) Load 252 254: 8(float) FAdd 251 253 255: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 254 Store 130(s) 255 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 258 258 16 16 256: 128(ptr) AccessChain 77(input) 136 21 259: 8(float) Load 256 260: 173(ptr) AccessChain 168 172 104 261: 8(float) Load 260 262: 8(float) FAdd 259 261 263: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 262 Store 179(c) 263 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 267 267 16 16 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(mz) 85 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 272 272 16 16 270: 8(float) Load 179(c) 273: 8(float) Load 130(s) 274: 8(float) FNegate 273 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 277 277 16 16 275: 8(float) Load 130(s) 278: 8(float) Load 179(c) 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 267 267 16 16 279: 18(fvec3) CompositeConstruct 208 99 99 281: 18(fvec3) CompositeConstruct 99 270 274 282: 18(fvec3) CompositeConstruct 99 275 278 283: 191 CompositeConstruct 279 281 282 Store 264(mz) 283 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 287 287 16 16 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 285 284(rotMat) 85 290: 191 Load 195(mx) 291: 191 Load 230(my) 292: 191 MatrixTimesMatrix 290 291 293: 191 Load 264(mz) 294: 191 MatrixTimesMatrix 292 293 Store 284(rotMat) 294 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 300 300 16 16 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 298 297(gRotMat) 85 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 305 305 16 16 303: 128(ptr) AccessChain 77(input) 136 52 306: 8(float) Load 303 308: 173(ptr) AccessChain 168 172 307 309: 8(float) Load 308 310: 8(float) FAdd 306 309 311: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 310 Store 130(s) 311 313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 314 314 16 16 312: 128(ptr) AccessChain 77(input) 136 52 315: 8(float) Load 312 316: 173(ptr) AccessChain 168 172 307 317: 8(float) Load 316 318: 8(float) FAdd 315 317 319: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 318 Store 179(c) 319 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 322 322 16 16 320: 8(float) Load 179(c) 323: 8(float) Load 130(s) 324: 8(float) FNegate 323 325: 59(fvec4) CompositeConstruct 320 99 324 99 328: 326(ptr) AccessChain 297(gRotMat) 172 Store 328 325 332: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 333 333 16 16 331: 326(ptr) AccessChain 297(gRotMat) 329 Store 331 330 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 336 336 16 16 334: 8(float) Load 130(s) 337: 8(float) Load 179(c) 338: 59(fvec4) CompositeConstruct 334 99 337 99 339: 326(ptr) AccessChain 297(gRotMat) 103 Store 339 338 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 343 343 16 16 341: 326(ptr) AccessChain 297(gRotMat) 104 Store 341 340 349: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 347 347 16 16 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 345 344(locPos) 85 350: 105(ptr) AccessChain 77(input) 172 351: 18(fvec3) Load 350 352: 191 Load 284(rotMat) 353: 18(fvec3) VectorTimesMatrix 351 352 354: 8(float) CompositeExtract 353 0 355: 8(float) CompositeExtract 353 1 356: 8(float) CompositeExtract 353 2 357: 59(fvec4) CompositeConstruct 354 355 356 208 Store 344(locPos) 357 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 361 361 16 16 362: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 359 358(pos) 85 364: 59(fvec4) Load 344(locPos) 365: 18(fvec3) VectorShuffle 364 364 0 1 2 367: 128(ptr) AccessChain 77(input) 366 368: 8(float) Load 367 369: 18(fvec3) VectorTimesScalar 365 368 370: 105(ptr) AccessChain 77(input) 307 371: 18(fvec3) Load 370 372: 18(fvec3) FAdd 369 371 373: 8(float) CompositeExtract 372 0 374: 8(float) CompositeExtract 372 1 375: 8(float) CompositeExtract 372 2 376: 59(fvec4) CompositeConstruct 373 374 375 208 Store 358(pos) 376 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 379 379 16 16 377: 59(fvec4) Load 358(pos) 380: 139 Load 297(gRotMat) 381: 59(fvec4) VectorTimesMatrix 377 380 384: 382(ptr) AccessChain 168 172 329 385: 139 Load 384 386: 59(fvec4) VectorTimesMatrix 381 385 387: 382(ptr) AccessChain 168 172 172 388: 139 Load 387 389: 59(fvec4) VectorTimesMatrix 386 388 390: 326(ptr) AccessChain 92(output) 172 Store 390 389 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 393 393 16 16 391: 105(ptr) AccessChain 77(input) 329 394: 18(fvec3) Load 391 395: 191 Load 284(rotMat) 396: 18(fvec3) VectorTimesMatrix 394 395 397: 139 Load 297(gRotMat) 398: 382(ptr) AccessChain 168 172 329 399: 139 Load 398 400: 139 MatrixTimesMatrix 397 399 401: 59(fvec4) CompositeExtract 400 0 402: 18(fvec3) VectorShuffle 401 401 0 1 2 403: 59(fvec4) CompositeExtract 400 1 404: 18(fvec3) VectorShuffle 403 403 0 1 2 405: 59(fvec4) CompositeExtract 400 2 406: 18(fvec3) VectorShuffle 405 405 0 1 2 407: 191 CompositeConstruct 402 404 406 408: 18(fvec3) VectorTimesMatrix 396 407 409: 105(ptr) AccessChain 92(output) 329 Store 409 408 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 412 412 16 16 410: 105(ptr) AccessChain 77(input) 172 413: 18(fvec3) Load 410 414: 105(ptr) AccessChain 77(input) 307 415: 18(fvec3) Load 414 416: 18(fvec3) FAdd 413 415 417: 8(float) CompositeExtract 416 0 418: 8(float) CompositeExtract 416 1 419: 8(float) CompositeExtract 416 2 420: 59(fvec4) CompositeConstruct 417 418 419 208 421: 382(ptr) AccessChain 168 172 329 422: 139 Load 421 423: 59(fvec4) VectorTimesMatrix 420 422 Store 358(pos) 423 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 427 427 16 16 428: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 425 424(lPos) 85 432: 430(ptr) AccessChain 168 172 103 433: 59(fvec4) Load 432 434: 18(fvec3) VectorShuffle 433 433 0 1 2 435: 382(ptr) AccessChain 168 172 329 436: 139 Load 435 437: 59(fvec4) CompositeExtract 436 0 438: 18(fvec3) VectorShuffle 437 437 0 1 2 439: 59(fvec4) CompositeExtract 436 1 440: 18(fvec3) VectorShuffle 439 439 0 1 2 441: 59(fvec4) CompositeExtract 436 2 442: 18(fvec3) VectorShuffle 441 441 0 1 2 443: 191 CompositeConstruct 438 440 442 444: 18(fvec3) VectorTimesMatrix 434 443 Store 424(lPos) 444 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 447 447 16 16 445: 18(fvec3) Load 424(lPos) 448: 59(fvec4) Load 358(pos) 449: 18(fvec3) VectorShuffle 448 448 0 1 2 450: 18(fvec3) FSub 445 449 451: 105(ptr) AccessChain 92(output) 136 Store 451 450 453: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 454 454 16 16 452: 59(fvec4) Load 358(pos) 455: 18(fvec3) VectorShuffle 452 452 0 1 2 456: 18(fvec3) FNegate 455 457: 105(ptr) AccessChain 92(output) 307 Store 457 456 459: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 460 460 16 16 458:61(VSOutput) Load 92(output) ReturnValue 458 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.implicit_br.glsl.frag.out000066400000000000000000000436351506534232700261360ustar00rootroot00000000000000spv.debuginfo.implicit_br.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 204 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 14 "main" 196 ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.implicit_br.glsl.frag" 8: String "uint" 18: String "test_if" 21: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 460 out int outx; int counter = 0; void test_if() { if (false) { counter += 1; } } void test_ifelse() { if (false) { counter += 1; } else { counter += 2; } } void test_if_compound() { if (false) { if (false) { counter += 1; } } } void test_if_compound2() { if (false) { if (false) { counter += 1; } counter += 2; } } void test_switch() { switch (0) { case 0: counter += 1; // implict fallthrough case 1: counter += 2; break; default: counter += 3; // implicit break } } void main() { test_if(); test_ifelse(); test_if_compound(); test_if_compound2(); test_switch(); outx = counter; }" 28: String "test_ifelse" 33: String "test_if_compound" 38: String "test_if_compound2" 43: String "test_switch" 46: String "main" 50: String "int" 56: String "counter" 65: String "bool" 198: String "outx" Name 14 "main" Name 16 "test_if(" Name 26 "test_ifelse(" Name 31 "test_if_compound(" Name 36 "test_if_compound2(" Name 41 "test_switch(" Name 54 "counter" Name 196 "outx" Decorate 196(outx) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 21 23: 7(int) Constant 1 24: 7(int) Constant 4 25: 7(int) Constant 2 22: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 23 24 20 25 19: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 18 6 20 11 12 22 18 13 11 30: 7(int) Constant 12 29: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 28 6 20 30 12 22 28 13 30 35: 7(int) Constant 21 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 6 20 35 12 22 33 13 35 40: 7(int) Constant 29 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 38 6 20 40 12 22 38 13 40 45: 7(int) Constant 39 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 43 6 20 45 12 22 43 13 45 48: 7(int) Constant 53 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 46 6 20 48 12 22 46 13 48 49: TypeInt 32 1 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 10 24 12 52: TypePointer Private 49(int) 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 51 11 12 54(counter): 52(ptr) Variable Private 57: 7(int) Constant 8 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 56 51 20 24 12 22 56 54(counter) 57 58: 49(int) Constant 0 64: TypeBool 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 65 10 25 12 67: 64(bool) ConstantFalse 71: 7(int) Constant 17 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 20 57 71 19 72: 49(int) Constant 1 79: 7(int) Constant 10 86: 7(int) Constant 14 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 20 86 71 29 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 20 71 71 29 93: 49(int) Constant 2 100: 7(int) Constant 19 107: 7(int) Constant 23 108: 7(int) Constant 9 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 20 107 108 34 114: 7(int) Constant 24 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 20 114 35 106 121: 7(int) Constant 27 128: 7(int) Constant 31 127: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 20 128 108 39 133: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 20 10 35 127 141: 7(int) Constant 35 145: 7(int) Constant 37 156: 7(int) Constant 42 161: 7(int) Constant 45 164: 7(int) Constant 46 166: 49(int) Constant 3 170: 7(int) Constant 48 175: 7(int) Constant 51 181: 7(int) Constant 54 184: 7(int) Constant 55 187: 7(int) Constant 56 190: 7(int) Constant 57 193: 7(int) Constant 58 194: TypePointer Output 49(int) 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 51 13 12 196(outx): 194(ptr) Variable Output 199: 7(int) Constant 59 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 198 51 20 199 12 22 198 196(outx) 57 203: 7(int) Constant 60 14(main): 4 Function None 5 15: Label 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 22 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 24 24 12 12 Store 54(counter) 58 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 47 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 48 48 12 12 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 47 14(main) 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 181 181 12 12 179: 4 FunctionCall 16(test_if() 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 184 184 12 12 182: 4 FunctionCall 26(test_ifelse() 186: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 187 187 12 12 185: 4 FunctionCall 31(test_if_compound() 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 190 190 12 12 188: 4 FunctionCall 36(test_if_compound2() 192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 193 193 12 12 191: 4 FunctionCall 41(test_switch() 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 199 199 12 12 200: 49(int) Load 54(counter) Store 196(outx) 200 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 203 203 12 12 Return FunctionEnd 16(test_if(): 4 Function None 5 17: Label 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 19 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 11 11 12 12 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 19 16(test_if() SelectionMerge 69 None BranchConditional 67 68 69 68: Label 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 57 57 12 12 73: 49(int) Load 54(counter) 76: 49(int) IAdd 73 72 Store 54(counter) 76 Branch 69 69: Label 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 19 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 79 79 12 12 Return FunctionEnd 26(test_ifelse(): 4 Function None 5 27: Label 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 30 30 12 12 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 29 26(test_ifelse() SelectionMerge 84 None BranchConditional 67 83 91 83: Label 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 86 86 12 12 87: 49(int) Load 54(counter) 90: 49(int) IAdd 87 72 Store 54(counter) 90 Branch 84 91: Label 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 71 71 12 12 94: 49(int) Load 54(counter) 97: 49(int) IAdd 94 93 Store 54(counter) 97 Branch 84 84: Label 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 100 100 12 12 Return FunctionEnd 31(test_if_compound(): 4 Function None 5 32: Label 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 35 35 12 12 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 34 31(test_if_compound() SelectionMerge 105 None BranchConditional 67 104 105 104: Label 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 106 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 35 35 12 12 SelectionMerge 110 None BranchConditional 67 109 110 109: Label 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 114 114 12 12 115: 49(int) Load 54(counter) 118: 49(int) IAdd 115 72 Store 54(counter) 118 Branch 110 110: Label Branch 105 105: Label 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 121 121 12 12 Return FunctionEnd 36(test_if_compound2(): 4 Function None 5 37: Label 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 40 40 12 12 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 39 36(test_if_compound2() SelectionMerge 126 None BranchConditional 67 125 126 125: Label 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 127 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 40 40 12 12 SelectionMerge 130 None BranchConditional 67 129 130 129: Label 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 133 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 10 10 12 12 134: 49(int) Load 54(counter) 137: 49(int) IAdd 134 72 Store 54(counter) 137 Branch 130 130: Label 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 127 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 141 141 12 12 138: 49(int) Load 54(counter) 142: 49(int) IAdd 138 93 Store 54(counter) 142 Branch 126 126: Label 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 145 145 12 12 Return FunctionEnd 41(test_switch(): 4 Function None 5 42: Label 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 45 45 12 12 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 44 41(test_switch() SelectionMerge 152 None Switch 58 151 case 0: 149 case 1: 150 151: Label 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 170 170 12 12 167: 49(int) Load 54(counter) 171: 49(int) IAdd 167 166 Store 54(counter) 171 Branch 152 149: Label 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 156 156 12 12 153: 49(int) Load 54(counter) 157: 49(int) IAdd 153 72 Store 54(counter) 157 Branch 150 150: Label 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 161 161 12 12 158: 49(int) Load 54(counter) 162: 49(int) IAdd 158 93 Store 54(counter) 162 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 164 164 12 12 Branch 152 152: Label 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 175 175 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.include.glsl.frag.out000066400000000000000000000226601506534232700252570ustar00rootroot00000000000000spv.debuginfo.include.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 112 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 4: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 15 "main" 82 ExecutionMode 15 OriginUpperLeft 2: String "spv.debuginfo.include.glsl.frag" 3: String "spv.debuginfo.include.glsl.h" 9: String "uint" 18: String "float" 31: String "headerFunction" 34: String " out vec4 headerOut; uniform UBO { vec4 headerUboItem; }; vec4 headerFunction(vec4 a) { return -a; }" 39: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 450 #extension GL_GOOGLE_include_directive : require #include "spv.debuginfo.include.glsl.h" vec4 mainFileFunction(vec4 v) { return -v; } void main() { headerOut = headerFunction(mainFileFunction(headerUboItem)); }" 42: String "a" 50: String "mainFileFunction" 53: String "v" 57: String "main" 84: String "headerOut" 88: String "headerUboItem" 91: String "UBO" 96: String "" 98: String "int" SourceExtension "GL_GOOGLE_cpp_style_line_directive" SourceExtension "GL_GOOGLE_include_directive" Name 15 "main" Name 29 "headerFunction(vf4;" Name 28 "a" Name 48 "mainFileFunction(vf4;" Name 47 "v" Name 82 "headerOut" Name 86 "UBO" MemberName 86(UBO) 0 "headerUboItem" Name 94 "" Name 101 "param" Name 108 "param" Decorate 82(headerOut) Location 0 Decorate 86(UBO) Block MemberDecorate 86(UBO) 0 Offset 0 Decorate 94 Binding 0 Decorate 94 DescriptorSet 0 5: TypeVoid 6: TypeFunction 5 8: TypeInt 32 0 11: 8(int) Constant 32 12: 8(int) Constant 6 13: 8(int) Constant 0 10: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 11 12 13 14: 8(int) Constant 3 7: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 14 5 17: TypeFloat 32 19: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 18 11 14 13 20: TypeVector 17(float) 4 21: 8(int) Constant 4 22: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 19 21 23: TypePointer Function 20(fvec4) 24: 8(int) Constant 7 25: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 24 13 26: TypeFunction 20(fvec4) 23(ptr) 27: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 14 22 22 33: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 3 34 35: 8(int) Constant 8 37: 8(int) Constant 1 38: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 39 40: 8(int) Constant 2 36: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 21 38 40 32: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 31 27 33 35 13 36 31 14 35 41: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 22 33 35 13 32 21 37 44: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 51: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 50 27 38 12 13 36 50 14 12 52: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 22 38 12 13 51 21 37 59: 8(int) Constant 10 58: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 7 38 59 13 36 57 14 59 63: 8(int) Constant 9 80: TypePointer Output 20(fvec4) 81: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 14 13 82(headerOut): 80(ptr) Variable Output 85: 8(int) Constant 11 83: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 22 38 85 13 36 84 82(headerOut) 35 86(UBO): TypeStruct 20(fvec4) 89: 8(int) Constant 5 87: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 88 22 38 89 24 13 13 14 90: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 91 37 38 85 13 36 91 13 14 87 92: TypePointer Uniform 86(UBO) 93: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 40 13 94: 92(ptr) Variable Uniform 95: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 90 38 85 13 36 96 94 35 97: TypeInt 32 1 99: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 11 21 13 100: 97(int) Constant 0 102: TypePointer Uniform 20(fvec4) 103: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 40 13 111: 8(int) Constant 12 15(main): 5 Function None 6 16: Label 101(param): 23(ptr) Variable Function 108(param): 23(ptr) Variable Function 78: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 79: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 59 59 13 13 77: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 15(main) 105: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 85 85 13 13 104: 102(ptr) AccessChain 94 100 106: 20(fvec4) Load 104 Store 101(param) 106 107: 20(fvec4) FunctionCall 48(mainFileFunction(vf4;) 101(param) Store 108(param) 107 109: 20(fvec4) FunctionCall 29(headerFunction(vf4;) 108(param) Store 82(headerOut) 109 110: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 111 111 13 13 Return FunctionEnd 29(headerFunction(vf4;): 20(fvec4) Function None 26 28(a): 23(ptr) FunctionParameter 30: Label 45: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 46: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 35 35 13 13 43: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 28(a) 44 60: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 32 29(headerFunction(vf4;) 62: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 63 63 13 13 61: 20(fvec4) Load 28(a) 64: 20(fvec4) FNegate 61 ReturnValue 64 FunctionEnd 48(mainFileFunction(vf4;): 20(fvec4) Function None 26 47(v): 23(ptr) FunctionParameter 49: Label 55: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 51 56: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 12 12 13 13 54: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 47(v) 44 69: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 51 48(mainFileFunction(vf4;) 71: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 24 24 13 13 70: 20(fvec4) Load 47(v) 72: 20(fvec4) FNegate 70 ReturnValue 72 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.multiline.glsl.frag.out000066400000000000000000000213161506534232700256330ustar00rootroot00000000000000spv.debuginfo.multiline.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 109 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 14 "main" 75 81 ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.multiline.glsl.frag" 8: String "uint" 17: String "float" 29: String "add" 32: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 460 in float inx; out float outx; float add(float x, float y, float z) { return x + y + z ; } void main() { outx = add( inx+1, inx+2, inx+3 ) ; }" 38: String "x" 44: String "y" 47: String "z" 49: String "main" 77: String "outx" 83: String "inx" Name 14 "main" Name 27 "add(f1;f1;f1;" Name 24 "x" Name 25 "y" Name 26 "z" Name 75 "outx" Name 81 "inx" Name 99 "param" Name 102 "param" Name 103 "param" Decorate 75(outx) Location 0 Decorate 81(inx) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypePointer Function 16(float) 20: 7(int) Constant 7 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 20 12 22: TypeFunction 16(float) 19(ptr) 19(ptr) 19(ptr) 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 18 18 18 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 32 34: 7(int) Constant 1 35: 7(int) Constant 4 36: 7(int) Constant 2 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 34 35 31 36 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 29 23 31 11 12 33 29 13 11 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 38 18 31 11 12 30 35 34 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 18 31 11 12 30 35 36 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 18 31 11 12 30 35 13 51: 7(int) Constant 16 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 49 6 31 51 12 33 49 13 51 55: 7(int) Constant 8 58: 7(int) Constant 10 62: 7(int) Constant 12 69: 7(int) Constant 14 73: TypePointer Output 16(float) 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 75(outx): 73(ptr) Variable Output 78: 7(int) Constant 17 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 77 18 31 78 12 33 77 75(outx) 55 79: TypePointer Input 16(float) 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 34 12 81(inx): 79(ptr) Variable Input 84: 7(int) Constant 20 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 83 18 31 84 12 33 83 81(inx) 55 87: 16(float) Constant 1065353216 91: 7(int) Constant 21 92: 16(float) Constant 1073741824 96: 7(int) Constant 22 97: 16(float) Constant 1077936128 101: 7(int) Constant 23 106: 7(int) Constant 18 108: 7(int) Constant 25 14(main): 4 Function None 5 15: Label 99(param): 19(ptr) Variable Function 102(param): 19(ptr) Variable Function 103(param): 19(ptr) Variable Function 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 50 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 51 51 12 12 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 50 14(main) 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 84 84 12 12 85: 16(float) Load 81(inx) 88: 16(float) FAdd 85 87 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 91 91 12 12 89: 16(float) Load 81(inx) 93: 16(float) FAdd 89 92 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 96 96 12 12 94: 16(float) Load 81(inx) 98: 16(float) FAdd 94 97 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 101 101 12 12 Store 99(param) 88 Store 102(param) 93 Store 103(param) 98 104: 16(float) FunctionCall 27(add(f1;f1;f1;) 99(param) 102(param) 103(param) 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 106 106 12 12 Store 75(outx) 104 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 108 108 12 12 Return FunctionEnd 27(add(f1;f1;f1;): 16(float) Function None 22 24(x): 19(ptr) FunctionParameter 25(y): 19(ptr) FunctionParameter 26(z): 19(ptr) FunctionParameter 28: Label 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 11 11 12 12 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 37 24(x) 40 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 25(y) 40 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 26(z) 40 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 30 27(add(f1;f1;f1;) 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 55 55 12 12 53: 16(float) Load 24(x) 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 58 58 12 12 56: 16(float) Load 25(y) 59: 16(float) FAdd 53 56 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 62 62 12 12 60: 16(float) Load 26(z) 63: 16(float) FAdd 59 60 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 20 20 12 12 ReturnValue 63 FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.non_ascii.glsl.frag.out000066400000000000000000000075611506534232700256010ustar00rootroot00000000000000spv.debuginfo.non_ascii.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 14 "main" 35 ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.non_ascii.glsl.frag" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 460 layout(location = 0) out vec4 o; void main() { // éž ASCII 文字をテストã™ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆ (a comment to test non-ASCII characters) o = vec4(1.0); } " 29: String "float" 37: String "o" Name 14 "main" Name 35 "o" Decorate 35(o) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 5 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 28: TypeFloat 32 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 31: TypeVector 28(float) 4 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 23 33: TypePointer Output 31(fvec4) 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 13 12 35(o): 33(ptr) Variable Output 38: 7(int) Constant 8 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 37 32 18 38 12 21 37 35(o) 38 39: 28(float) Constant 1065353216 40: 31(fvec4) ConstantComposite 39 39 39 39 43: 7(int) Constant 9 14(main): 4 Function None 5 15: Label 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 38 38 12 12 Store 35(o) 40 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 43 43 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out000066400000000000000000000264401506534232700255210ustar00rootroot00000000000000spv.debuginfo.rt_types.glsl.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 127 Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_non_semantic_info" Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 14 "main" 2: String "spv.debuginfo.rt_types.glsl.rgen" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT acc0; layout(shaderRecordNV) buffer block { vec3 dir; vec3 origin; }; void main() { rayQueryEXT localRayQuery; uint rayFlags = gl_RayFlagsOpaqueEXT | gl_RayFlagsSkipClosestHitShaderEXT; float tMin = 0.f; float tMax = 1000.f; rayQueryInitializeEXT(localRayQuery, acc0, rayFlags, 0xFF , origin, tMin, dir, tMax); if (!rayQueryProceedEXT(localRayQuery)) { rayQueryTerminateEXT(localRayQuery); } } " 33: String "rayFlags" 40: String "float" 46: String "tMin" 53: String "tMax" 60: String "rayQuery" 62: String "@rayQuery" 68: String "localRayQuery" 72: String "accelerationStructure" 73: String "@accelerationStructure" 78: String "acc0" 87: String "origin" 90: String "block" 96: String "" 98: String "int" 111: String "bool" SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_ray_tracing" Name 14 "main" Name 31 "rayFlags" Name 44 "tMin" Name 51 "tMax" Name 66 "localRayQuery" Name 76 "acc0" Name 85 "block" MemberName 85(block) 0 "dir" MemberName 85(block) 1 "origin" Name 94 "" Decorate 76(acc0) Binding 0 Decorate 76(acc0) DescriptorSet 0 Decorate 85(block) BufferBlock MemberDecorate 85(block) 0 Offset 0 MemberDecorate 85(block) 1 Offset 16 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 12 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 28: TypePointer Function 7(int) 29: 7(int) Constant 7 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 29 12 34: 7(int) Constant 15 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 34 12 17 23 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 38: 7(int) Constant 9 39: TypeFloat 32 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 40 10 13 12 42: TypePointer Function 39(float) 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 29 12 47: 7(int) Constant 16 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 41 18 47 12 17 23 50: 39(float) Constant 0 54: 7(int) Constant 17 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 41 18 54 12 17 23 57: 39(float) Constant 1148846080 58: TypeRayQueryKHR 61: 7(int) Constant 18 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 22 18 61 12 21 62 63 13 64: TypePointer Private 58 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 11 12 66(localRayQuery): 64(ptr) Variable Private 69: 7(int) Constant 8 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 68 59 18 61 12 21 68 66(localRayQuery) 69 70: TypeAccelerationStructureKHR 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 72 22 18 61 12 21 73 63 13 74: TypePointer UniformConstant 70 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 12 12 76(acc0): 74(ptr) Variable UniformConstant 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 71 18 61 12 21 78 76(acc0) 69 82: 7(int) Constant 255 83: TypeVector 39(float) 3 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 41 13 85(block): TypeStruct 83(fvec3) 83(fvec3) 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 84 18 38 29 12 12 13 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 84 18 38 29 12 12 13 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 90 22 18 61 12 21 90 12 13 86 88 91: TypePointer ShaderRecordBufferKHR 85(block) 92: 7(int) Constant 5343 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 92 12 94: 91(ptr) Variable ShaderRecordBufferKHR 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 89 18 61 12 21 96 94 69 97: TypeInt 32 1 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 10 23 12 100: 97(int) Constant 1 101: TypePointer ShaderRecordBufferKHR 83(fvec3) 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 84 92 12 106: 97(int) Constant 0 110: TypeBool 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 111 10 24 12 115: 7(int) Constant 19 120: 7(int) Constant 21 121: 7(int) Constant 30 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 21(DebugLexicalBlock) 18 120 121 17 126: 7(int) Constant 23 14(main): 4 Function None 5 15: Label 31(rayFlags): 28(ptr) Variable Function 44(tMin): 42(ptr) Variable Function 51(tMax): 42(ptr) Variable Function 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 32 31(rayFlags) 36 Store 31(rayFlags) 38 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 47 47 12 12 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 44(tMin) 36 Store 44(tMin) 50 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 54 54 12 12 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 51(tMax) 36 Store 51(tMax) 57 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 61 61 12 12 79: 70 Load 76(acc0) 81: 7(int) Load 31(rayFlags) 103: 101(ptr) AccessChain 94 100 104: 83(fvec3) Load 103 105: 39(float) Load 44(tMin) 107: 101(ptr) AccessChain 94 106 108: 83(fvec3) Load 107 109: 39(float) Load 51(tMax) RayQueryInitializeKHR 66(localRayQuery) 79 81 82 104 105 108 109 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 115 115 12 12 113: 110(bool) RayQueryProceedKHR 66(localRayQuery) 116: 110(bool) LogicalNot 113 SelectionMerge 118 None BranchConditional 116 117 118 117: Label 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 119 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 120 120 12 12 RayQueryTerminateKHR 66(localRayQuery) Branch 118 118: Label 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 126 126 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out000066400000000000000000000357771506534232700263420ustar00rootroot00000000000000spv.debuginfo.scalar_types.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 161 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 14 "main" ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.scalar_types.glsl.frag" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 /* The MIT License (MIT) Copyright (c) 2023 NVIDIA CORPORATION. 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 460 #extension GL_EXT_shader_explicit_arithmetic_types : require bool VAR_bool; int VAR_int; uint VAR_uint; float VAR_float; double VAR_double; int8_t VAR_int8_t; uint8_t VAR_uint8_t; int16_t VAR_int16_t; uint16_t VAR_uint16_t; int64_t VAR_int64_t; uint64_t VAR_uint64_t; float16_t VAR_float16_t; void main() { VAR_bool = bool(0); VAR_int = int(0); VAR_uint = uint(0); VAR_float = float(0); VAR_double = double(0); VAR_int8_t = int8_t(0); VAR_uint8_t = uint8_t(0); VAR_int16_t = int16_t(0); VAR_uint16_t = uint16_t(0); VAR_int64_t = int64_t(0); VAR_uint64_t = uint64_t(0); VAR_float16_t = float16_t(0); }" 29: String "bool" 35: String "VAR_bool" 41: String "int" 47: String "VAR_int" 55: String "VAR_uint" 59: String "float" 65: String "VAR_float" 70: String "double" 77: String "VAR_double" 82: String "int8_t" 88: String "VAR_int8_t" 93: String "uint8_t" 99: String "VAR_uint8_t" 104: String "int16_t" 111: String "VAR_int16_t" 116: String "uint16_t" 122: String "VAR_uint16_t" 127: String "int64_t" 133: String "VAR_int64_t" 138: String "uint64_t" 144: String "VAR_uint64_t" 149: String "float16_t" 155: String "VAR_float16_t" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 14 "main" Name 33 "VAR_bool" Name 45 "VAR_int" Name 53 "VAR_uint" Name 63 "VAR_float" Name 75 "VAR_double" Name 86 "VAR_int8_t" Name 97 "VAR_uint8_t" Name 109 "VAR_int16_t" Name 120 "VAR_uint16_t" Name 131 "VAR_int64_t" Name 142 "VAR_uint64_t" Name 153 "VAR_float16_t" 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 42 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 28: TypeBool 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 24 12 31: TypePointer Private 28(bool) 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 11 12 33(VAR_bool): 31(ptr) Variable Private 36: 7(int) Constant 43 37: 7(int) Constant 8 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 35 30 18 36 12 21 35 33(VAR_bool) 37 38: 28(bool) ConstantFalse 40: TypeInt 32 1 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 41 10 23 12 43: TypePointer Private 40(int) 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 42 11 12 45(VAR_int): 43(ptr) Variable Private 48: 7(int) Constant 44 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 47 42 18 48 12 21 47 45(VAR_int) 37 49: 40(int) Constant 0 51: TypePointer Private 7(int) 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 11 12 53(VAR_uint): 51(ptr) Variable Private 56: 7(int) Constant 45 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 55 9 18 56 12 21 55 53(VAR_uint) 37 58: TypeFloat 32 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 59 10 13 12 61: TypePointer Private 58(float) 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 60 11 12 63(VAR_float): 61(ptr) Variable Private 66: 7(int) Constant 46 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 65 60 18 66 12 21 65 63(VAR_float) 37 67: 58(float) Constant 0 69: TypeFloat 64 72: 7(int) Constant 64 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 70 72 13 12 73: TypePointer Private 69(float64_t) 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 11 12 75(VAR_double): 73(ptr) Variable Private 78: 7(int) Constant 47 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 77 71 18 78 12 21 77 75(VAR_double) 37 79:69(float64_t) Constant 0 0 81: TypeInt 8 1 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 82 37 23 12 84: TypePointer Private 81(int8_t) 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 83 11 12 86(VAR_int8_t): 84(ptr) Variable Private 89: 7(int) Constant 48 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 88 83 18 89 12 21 88 86(VAR_int8_t) 37 90: 81(int8_t) Constant 0 92: TypeInt 8 0 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 93 37 11 12 95: TypePointer Private 92(int8_t) 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 94 11 12 97(VAR_uint8_t): 95(ptr) Variable Private 100: 7(int) Constant 49 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 99 94 18 100 12 21 99 97(VAR_uint8_t) 37 101: 92(int8_t) Constant 0 103: TypeInt 16 1 106: 7(int) Constant 16 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 104 106 23 12 107: TypePointer Private 103(int16_t) 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 105 11 12 109(VAR_int16_t): 107(ptr) Variable Private 112: 7(int) Constant 50 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 111 105 18 112 12 21 111 109(VAR_int16_t) 37 113:103(int16_t) Constant 0 115: TypeInt 16 0 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 116 106 11 12 118: TypePointer Private 115(int16_t) 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 117 11 12 120(VAR_uint16_t): 118(ptr) Variable Private 123: 7(int) Constant 51 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 122 117 18 123 12 21 122 120(VAR_uint16_t) 37 124:115(int16_t) Constant 0 126: TypeInt 64 1 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 127 72 23 12 129: TypePointer Private 126(int64_t) 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 11 12 131(VAR_int64_t): 129(ptr) Variable Private 134: 7(int) Constant 52 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 133 128 18 134 12 21 133 131(VAR_int64_t) 37 135:126(int64_t) Constant 0 0 137: TypeInt 64 0 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 72 11 12 140: TypePointer Private 137(int64_t) 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 139 11 12 142(VAR_uint64_t): 140(ptr) Variable Private 145: 7(int) Constant 53 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 144 139 18 145 12 21 144 142(VAR_uint64_t) 37 146:137(int64_t) Constant 0 0 148: TypeFloat 16 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 149 106 13 12 151: TypePointer Private 148(float16_t) 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 150 11 12 153(VAR_float16_t): 151(ptr) Variable Private 156: 7(int) Constant 54 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 155 150 18 156 12 21 155 153(VAR_float16_t) 37 157:148(float16_t) Constant 0 160: 7(int) Constant 55 14(main): 4 Function None 5 15: Label 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 36 36 12 12 Store 33(VAR_bool) 38 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 48 48 12 12 Store 45(VAR_int) 49 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 56 56 12 12 Store 53(VAR_uint) 12 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 66 66 12 12 Store 63(VAR_float) 67 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 78 78 12 12 Store 75(VAR_double) 79 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 89 89 12 12 Store 86(VAR_int8_t) 90 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 100 100 12 12 Store 97(VAR_uint8_t) 101 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 112 112 12 12 Store 109(VAR_int16_t) 113 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 123 123 12 12 Store 120(VAR_uint16_t) 124 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 134 134 12 12 Store 131(VAR_int64_t) 135 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 145 145 12 12 Store 142(VAR_uint64_t) 146 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 Store 153(VAR_float16_t) 157 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 160 160 12 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.deepRvalue.frag.out000066400000000000000000000230031506534232700230170ustar00rootroot00000000000000spv.deepRvalue.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 152 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 146 ExecutionMode 4 OriginUpperLeft Source GLSL 330 Name 4 "main" Name 9 "v1" Name 15 "v2" Name 21 "v3" Name 27 "v4" Name 35 "m" Name 63 "mm" Name 80 "f" Name 87 "g" Name 106 "h" Name 107 "i" Name 111 "samp2D" Name 131 "str" MemberName 131(str) 0 "a" MemberName 131(str) 1 "b" MemberName 131(str) 2 "c" Name 133 "t" Name 146 "gl_FragColor" Decorate 111(samp2D) Binding 0 Decorate 111(samp2D) DescriptorSet 0 Decorate 146(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Private 7(fvec4) 9(v1): 8(ptr) Variable Private 10: 6(float) Constant 1073741824 11: 6(float) Constant 1077936128 12: 6(float) Constant 1084227584 13: 6(float) Constant 1088421888 14: 7(fvec4) ConstantComposite 10 11 12 13 15(v2): 8(ptr) Variable Private 16: 6(float) Constant 1093664768 17: 6(float) Constant 1095761920 18: 6(float) Constant 1099431936 19: 6(float) Constant 1100480512 20: 7(fvec4) ConstantComposite 16 17 18 19 21(v3): 8(ptr) Variable Private 22: 6(float) Constant 1102577664 23: 6(float) Constant 1105723392 24: 6(float) Constant 1106771968 25: 6(float) Constant 1108606976 26: 7(fvec4) ConstantComposite 22 23 24 25 27(v4): 8(ptr) Variable Private 28: 6(float) Constant 1109655552 29: 6(float) Constant 1110179840 30: 6(float) Constant 1111228416 31: 6(float) Constant 1112801280 32: 7(fvec4) ConstantComposite 28 29 30 31 33: TypeMatrix 7(fvec4) 4 34: TypePointer Function 33 40: 6(float) Constant 1065353216 41: 6(float) Constant 0 79: TypePointer Function 6(float) 81: TypeInt 32 1 82: 81(int) Constant 1 83: TypeInt 32 0 84: 83(int) Constant 3 103: 81(int) Constant 2 104: 83(int) Constant 1 108: TypeImage 6(float) 2D sampled format:Unknown 109: TypeSampledImage 108 110: TypePointer UniformConstant 109 111(samp2D): 110(ptr) Variable UniformConstant 113: TypeVector 6(float) 2 114: 6(float) Constant 1056964608 115: 113(fvec2) ConstantComposite 114 114 119: 6(float) Constant 1036831949 120: TypeBool 124: TypeVector 120(bool) 4 130: TypeArray 113(fvec2) 84 131(str): TypeStruct 81(int) 130 120(bool) 132: TypePointer Function 131(str) 134: 113(fvec2) ConstantComposite 10 11 135: 6(float) Constant 1082130432 136: 113(fvec2) ConstantComposite 135 12 137: 6(float) Constant 1086324736 138: 113(fvec2) ConstantComposite 137 13 139: 130 ConstantComposite 134 136 138 140: 120(bool) ConstantTrue 141: 131(str) ConstantComposite 82 139 140 145: TypePointer Output 7(fvec4) 146(gl_FragColor): 145(ptr) Variable Output 4(main): 2 Function None 3 5: Label 35(m): 34(ptr) Variable Function 63(mm): 34(ptr) Variable Function 80(f): 79(ptr) Variable Function 87(g): 79(ptr) Variable Function 106(h): 79(ptr) Variable Function 107(i): 79(ptr) Variable Function 133(t): 132(ptr) Variable Function Store 9(v1) 14 Store 15(v2) 20 Store 21(v3) 26 Store 27(v4) 32 36: 7(fvec4) Load 9(v1) 37: 7(fvec4) Load 15(v2) 38: 7(fvec4) Load 21(v3) 39: 7(fvec4) Load 27(v4) 42: 6(float) CompositeExtract 36 0 43: 6(float) CompositeExtract 36 1 44: 6(float) CompositeExtract 36 2 45: 6(float) CompositeExtract 36 3 46: 6(float) CompositeExtract 37 0 47: 6(float) CompositeExtract 37 1 48: 6(float) CompositeExtract 37 2 49: 6(float) CompositeExtract 37 3 50: 6(float) CompositeExtract 38 0 51: 6(float) CompositeExtract 38 1 52: 6(float) CompositeExtract 38 2 53: 6(float) CompositeExtract 38 3 54: 6(float) CompositeExtract 39 0 55: 6(float) CompositeExtract 39 1 56: 6(float) CompositeExtract 39 2 57: 6(float) CompositeExtract 39 3 58: 7(fvec4) CompositeConstruct 42 43 44 45 59: 7(fvec4) CompositeConstruct 46 47 48 49 60: 7(fvec4) CompositeConstruct 50 51 52 53 61: 7(fvec4) CompositeConstruct 54 55 56 57 62: 33 CompositeConstruct 58 59 60 61 Store 35(m) 62 64: 33 Load 35(m) 65: 33 Load 35(m) 66: 7(fvec4) CompositeExtract 64 0 67: 7(fvec4) CompositeExtract 65 0 68: 7(fvec4) FMul 66 67 69: 7(fvec4) CompositeExtract 64 1 70: 7(fvec4) CompositeExtract 65 1 71: 7(fvec4) FMul 69 70 72: 7(fvec4) CompositeExtract 64 2 73: 7(fvec4) CompositeExtract 65 2 74: 7(fvec4) FMul 72 73 75: 7(fvec4) CompositeExtract 64 3 76: 7(fvec4) CompositeExtract 65 3 77: 7(fvec4) FMul 75 76 78: 33 CompositeConstruct 68 71 74 77 Store 63(mm) 78 85: 79(ptr) AccessChain 63(mm) 82 84 86: 6(float) Load 85 Store 80(f) 86 88: 33 Load 35(m) 89: 33 Load 35(m) 90: 7(fvec4) CompositeExtract 88 0 91: 7(fvec4) CompositeExtract 89 0 92: 7(fvec4) FMul 90 91 93: 7(fvec4) CompositeExtract 88 1 94: 7(fvec4) CompositeExtract 89 1 95: 7(fvec4) FMul 93 94 96: 7(fvec4) CompositeExtract 88 2 97: 7(fvec4) CompositeExtract 89 2 98: 7(fvec4) FMul 96 97 99: 7(fvec4) CompositeExtract 88 3 100: 7(fvec4) CompositeExtract 89 3 101: 7(fvec4) FMul 99 100 102: 33 CompositeConstruct 92 95 98 101 105: 6(float) CompositeExtract 102 2 1 Store 87(g) 105 Store 106(h) 12 112: 109 Load 111(samp2D) 116: 7(fvec4) ImageSampleImplicitLod 112 115 117: 6(float) CompositeExtract 116 1 Store 107(i) 117 118: 6(float) Load 107(i) 121: 120(bool) FOrdGreaterThan 118 119 122: 7(fvec4) Load 9(v1) 123: 7(fvec4) Load 15(v2) 125: 124(bvec4) CompositeConstruct 121 121 121 121 126: 7(fvec4) Select 125 122 123 127: 6(float) CompositeExtract 126 3 128: 6(float) Load 107(i) 129: 6(float) FAdd 128 127 Store 107(i) 129 Store 133(t) 141 142: 6(float) CompositeExtract 141 1 2 1 143: 6(float) Load 107(i) 144: 6(float) FAdd 143 142 Store 107(i) 144 147: 6(float) Load 80(f) 148: 6(float) Load 87(g) 149: 6(float) Load 106(h) 150: 6(float) Load 107(i) 151: 7(fvec4) CompositeConstruct 147 148 149 150 Store 146(gl_FragColor) 151 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.demoteDisabled.frag.out000066400000000000000000000002541506534232700236330ustar00rootroot00000000000000spv.demoteDisabled.frag ERROR: 0:9: 'demote' : undeclared identifier ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.depthOut.frag.out000066400000000000000000000032451506534232700225250ustar00rootroot00000000000000spv.depthOut.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 10 14 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing ExecutionMode 4 DepthGreater Source GLSL 450 Name 4 "main" Name 8 "gl_FragDepth" Name 10 "Depth" Name 14 "Color" Decorate 8(gl_FragDepth) BuiltIn FragDepth Decorate 10(Depth) Location 1 Decorate 14(Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Output 6(float) 8(gl_FragDepth): 7(ptr) Variable Output 9: TypePointer Input 6(float) 10(Depth): 9(ptr) Variable Input 12: TypeVector 6(float) 4 13: TypePointer Input 12(fvec4) 14(Color): 13(ptr) Variable Input 4(main): 2 Function None 3 5: Label 11: 6(float) Load 10(Depth) Store 8(gl_FragDepth) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.depthUnchanged.frag.out000066400000000000000000000041301506534232700236440ustar00rootroot00000000000000spv.depthUnchanged.frag // 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" 9 14 16 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing ExecutionMode 4 DepthUnchanged Source GLSL 430 Name 4 "main" Name 9 "outColor" Name 14 "gl_FragDepth" Name 16 "gl_FragCoord" Decorate 9(outColor) Location 0 Decorate 14(gl_FragDepth) BuiltIn FragDepth Decorate 16(gl_FragCoord) BuiltIn FragCoord 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(outColor): 8(ptr) Variable Output 10: 6(float) Constant 1065353216 11: 6(float) Constant 0 12: 7(fvec4) ConstantComposite 10 11 11 10 13: TypePointer Output 6(float) 14(gl_FragDepth): 13(ptr) Variable Output 15: TypePointer Input 7(fvec4) 16(gl_FragCoord): 15(ptr) Variable Input 17: TypeInt 32 0 18: 17(int) Constant 1 19: TypePointer Input 6(float) 4(main): 2 Function None 3 5: Label Store 9(outColor) 12 20: 19(ptr) AccessChain 16(gl_FragCoord) 18 21: 6(float) Load 20 Store 14(gl_FragDepth) 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.deviceGroup.frag.out000066400000000000000000000033331506534232700232030ustar00rootroot00000000000000spv.deviceGroup.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader Capability DeviceGroup 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 12 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_device_group" Name 4 "main" Name 9 "color" Name 12 "gl_DeviceIndex" Decorate 9(color) Location 0 Decorate 12(gl_DeviceIndex) BuiltIn DeviceIndex Decorate 12(gl_DeviceIndex) Flat 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: TypeInt 32 1 11: TypePointer Input 10(int) 12(gl_DeviceIndex): 11(ptr) Variable Input 15: 6(float) Constant 0 4(main): 2 Function None 3 5: Label 13: 10(int) Load 12(gl_DeviceIndex) 14: 6(float) ConvertSToF 13 16: 7(fvec4) CompositeConstruct 14 15 15 15 Store 9(color) 16 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.discard-dce.frag.out000066400000000000000000000137601506534232700230760ustar00rootroot00000000000000spv.discard-dce.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 21 59 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "white" Name 12 "black" Name 15 "color" Name 18 "x" Name 21 "tex_coord" Name 30 "y" Name 36 "radius" Name 59 "gl_FragColor" Decorate 21(tex_coord) Location 0 Decorate 59(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 1065353216 11: 7(fvec4) ConstantComposite 10 10 10 10 13: 6(float) Constant 1045220557 14: 7(fvec4) ConstantComposite 13 13 13 13 17: TypePointer Function 6(float) 19: TypeVector 6(float) 2 20: TypePointer Input 19(fvec2) 21(tex_coord): 20(ptr) Variable Input 22: TypeInt 32 0 23: 22(int) Constant 0 24: TypePointer Input 6(float) 27: 6(float) Constant 1073741824 31: 22(int) Constant 1 46: TypeBool 51: 6(float) Constant 1066192077 58: TypePointer Output 7(fvec4) 59(gl_FragColor): 58(ptr) Variable Output 62: 6(float) Constant 1067030938 71: 6(float) Constant 1061158912 76: 6(float) Constant 1098907648 4(main): 2 Function None 3 5: Label 9(white): 8(ptr) Variable Function 12(black): 8(ptr) Variable Function 15(color): 8(ptr) Variable Function 18(x): 17(ptr) Variable Function 30(y): 17(ptr) Variable Function 36(radius): 17(ptr) Variable Function Store 9(white) 11 Store 12(black) 14 16: 7(fvec4) Load 9(white) Store 15(color) 16 25: 24(ptr) AccessChain 21(tex_coord) 23 26: 6(float) Load 25 28: 6(float) FMul 26 27 29: 6(float) FSub 28 10 Store 18(x) 29 32: 24(ptr) AccessChain 21(tex_coord) 31 33: 6(float) Load 32 34: 6(float) FMul 33 27 35: 6(float) FSub 34 10 Store 30(y) 35 37: 6(float) Load 18(x) 38: 6(float) Load 18(x) 39: 6(float) FMul 37 38 40: 6(float) Load 30(y) 41: 6(float) Load 30(y) 42: 6(float) FMul 40 41 43: 6(float) FAdd 39 42 44: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 43 Store 36(radius) 44 45: 6(float) Load 36(radius) 47: 46(bool) FOrdGreaterThan 45 10 SelectionMerge 49 None BranchConditional 47 48 49 48: Label 50: 6(float) Load 36(radius) 52: 46(bool) FOrdGreaterThan 50 51 SelectionMerge 54 None BranchConditional 52 53 54 53: Label 55: 7(fvec4) Load 15(color) 56: 7(fvec4) CompositeConstruct 10 10 10 10 57: 7(fvec4) FAdd 55 56 Store 15(color) 57 Branch 54 54: Label 60: 7(fvec4) Load 15(color) Store 59(gl_FragColor) 60 61: 6(float) Load 36(radius) 63: 46(bool) FOrdGreaterThan 61 62 SelectionMerge 65 None BranchConditional 63 64 65 64: Label 66: 7(fvec4) Load 15(color) 67: 7(fvec4) CompositeConstruct 10 10 10 10 68: 7(fvec4) FAdd 66 67 Store 15(color) 68 Branch 65 65: Label Kill 49: Label 70: 6(float) Load 36(radius) 72: 46(bool) FOrdGreaterThanEqual 70 71 SelectionMerge 74 None BranchConditional 72 73 74 73: Label 75: 6(float) Load 36(radius) 77: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 75 76 78: 6(float) FDiv 77 27 79: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 78 80: 7(fvec4) Load 15(color) 81: 7(fvec4) CompositeConstruct 79 79 79 79 82: 7(fvec4) FSub 80 81 Store 15(color) 82 Branch 74 74: Label 83: 7(fvec4) Load 15(color) Store 59(gl_FragColor) 83 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.do-simple.vert.out000066400000000000000000000031561506534232700226640ustar00rootroot00000000000000spv.do-simple.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source ESSL 310 Name 4 "main" Name 8 "i" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 15: 6(int) Constant 1 18: 6(int) Constant 10 19: TypeBool 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 11 11: Label 14: 6(int) Load 8(i) 16: 6(int) IAdd 14 15 Store 8(i) 16 Branch 13 13: Label 17: 6(int) Load 8(i) 20: 19(bool) SLessThan 17 18 BranchConditional 20 10 12 12: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.do-while-continue-break.vert.out000066400000000000000000000064301506534232700254050ustar00rootroot00000000000000spv.do-while-continue-break.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source ESSL 310 Name 4 "main" Name 8 "i" Name 14 "A" Name 21 "B" Name 24 "C" Name 30 "D" Name 33 "E" Name 35 "F" Name 41 "G" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 2 17: TypeBool 22: 6(int) Constant 1 26: 6(int) Constant 5 31: 6(int) Constant 3 34: 6(int) Constant 42 36: 6(int) Constant 99 39: 6(int) Constant 19 42: 6(int) Constant 12 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function 14(A): 7(ptr) Variable Function 21(B): 7(ptr) Variable Function 24(C): 7(ptr) Variable Function 30(D): 7(ptr) Variable Function 33(E): 7(ptr) Variable Function 35(F): 7(ptr) Variable Function 41(G): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 11 11: Label Store 14(A) 9 15: 6(int) Load 8(i) 18: 17(bool) IEqual 15 16 SelectionMerge 20 None BranchConditional 18 19 20 19: Label Store 21(B) 22 Branch 13 20: Label 25: 6(int) Load 8(i) 27: 17(bool) IEqual 25 26 SelectionMerge 29 None BranchConditional 27 28 29 28: Label Store 30(D) 31 Branch 12 29: Label Store 35(F) 36 Branch 13 13: Label 37: 6(int) Load 8(i) 38: 6(int) IAdd 37 22 Store 8(i) 38 40: 17(bool) SLessThan 38 39 BranchConditional 40 10 12 12: Label Store 41(G) 42 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.doWhileLoop.frag.out000066400000000000000000000055351506534232700231620ustar00rootroot00000000000000spv.doWhileLoop.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 17 27 32 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "color" Name 11 "BaseColor" Name 17 "bigColor" Name 27 "d" Name 32 "gl_FragColor" Decorate 11(BaseColor) Location 1 Decorate 17(bigColor) Location 0 Decorate 27(d) Location 2 Decorate 32(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input 17(bigColor): 10(ptr) Variable Input 21: TypeInt 32 0 22: 21(int) Constant 0 23: TypePointer Function 6(float) 26: TypePointer Input 6(float) 27(d): 26(ptr) Variable Input 29: TypeBool 31: TypePointer Output 7(fvec4) 32(gl_FragColor): 31(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 Branch 13 13: Label LoopMerge 15 16 None Branch 14 14: Label 18: 7(fvec4) Load 17(bigColor) 19: 7(fvec4) Load 9(color) 20: 7(fvec4) FAdd 19 18 Store 9(color) 20 Branch 16 16: Label 24: 23(ptr) AccessChain 9(color) 22 25: 6(float) Load 24 28: 6(float) Load 27(d) 30: 29(bool) FOrdLessThan 25 28 BranchConditional 30 13 15 15: Label 33: 7(fvec4) Load 9(color) Store 32(gl_FragColor) 33 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.double.comp.out000066400000000000000000000121571506534232700222240ustar00rootroot00000000000000spv.double.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 26 33 ExecutionMode 4 LocalSize 1 1 1 Source GLSL 430 Name 4 "main" Name 8 "bufName" MemberName 8(bufName) 0 "f" MemberName 8(bufName) 1 "d" Name 10 "bufInst" Name 22 "storePos" Name 26 "gl_GlobalInvocationID" Name 32 "localCoef" Name 33 "gl_LocalInvocationID" Name 49 "aa" Name 54 "globalCoef" Name 59 "destTex" Decorate 8(bufName) BufferBlock MemberDecorate 8(bufName) 0 Offset 0 MemberDecorate 8(bufName) 1 Offset 8 Decorate 10(bufInst) Binding 0 Decorate 10(bufInst) DescriptorSet 0 Decorate 26(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 33(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 59(destTex) NonReadable Decorate 59(destTex) Binding 0 Decorate 59(destTex) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFloat 64 8(bufName): TypeStruct 6(float) 7(float64_t) 9: TypePointer Uniform 8(bufName) 10(bufInst): 9(ptr) Variable Uniform 11: TypeInt 32 1 12: 11(int) Constant 1 13:7(float64_t) Constant 1413754136 1074340347 14: TypePointer Uniform 7(float64_t) 16: 11(int) Constant 0 17: 6(float) Constant 1095307129 18: TypePointer Uniform 6(float) 20: TypeVector 11(int) 2 21: TypePointer Function 20(ivec2) 23: TypeInt 32 0 24: TypeVector 23(int) 3 25: TypePointer Input 24(ivec3) 26(gl_GlobalInvocationID): 25(ptr) Variable Input 27: TypeVector 23(int) 2 31: TypePointer Function 7(float64_t) 33(gl_LocalInvocationID): 25(ptr) Variable Input 37: 11(int) Constant 8 40: TypeVector 6(float) 2 42: 6(float) Constant 1090519040 47: TypeVector 7(float64_t) 4 48: TypePointer Function 47(f64vec4) 50:7(float64_t) Constant 2576980378 1071225241 51:7(float64_t) Constant 2576980378 1070176665 52:7(float64_t) Constant 858993459 1070805811 53: 47(f64vec4) ConstantComposite 50 51 52 50 55:7(float64_t) Constant 0 1072693248 56:7(float64_t) Constant 3229815407 1074340298 57: TypeImage 6(float) 2D nonsampled format:Unknown 58: TypePointer UniformConstant 57 59(destTex): 58(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 22(storePos): 21(ptr) Variable Function 32(localCoef): 31(ptr) Variable Function 49(aa): 48(ptr) Variable Function 54(globalCoef): 31(ptr) Variable Function 15: 14(ptr) AccessChain 10(bufInst) 12 Store 15 13 19: 18(ptr) AccessChain 10(bufInst) 16 Store 19 17 28: 24(ivec3) Load 26(gl_GlobalInvocationID) 29: 27(ivec2) VectorShuffle 28 28 0 1 30: 20(ivec2) Bitcast 29 Store 22(storePos) 30 34: 24(ivec3) Load 33(gl_LocalInvocationID) 35: 27(ivec2) VectorShuffle 34 34 0 1 36: 20(ivec2) Bitcast 35 38: 20(ivec2) CompositeConstruct 37 37 39: 20(ivec2) ISub 36 38 41: 40(fvec2) ConvertSToF 39 43: 40(fvec2) CompositeConstruct 42 42 44: 40(fvec2) FDiv 41 43 45: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 44 46:7(float64_t) FConvert 45 Store 32(localCoef) 46 Store 49(aa) 53 Store 54(globalCoef) 55 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.drawParams.vert.out000066400000000000000000000053111506534232700230670ustar00rootroot00000000000000spv.drawParams.vert // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability DrawParameters 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 13 16 21 Source GLSL 450 SourceExtension "GL_ARB_shader_draw_parameters" Name 4 "main" Name 8 "a" Name 10 "gl_BaseVertexARB" Name 12 "b" Name 13 "gl_BaseInstanceARB" Name 15 "c" Name 16 "gl_DrawIDARB" Name 21 "pos" Decorate 10(gl_BaseVertexARB) BuiltIn BaseVertex Decorate 13(gl_BaseInstanceARB) BuiltIn BaseInstance Decorate 16(gl_DrawIDARB) BuiltIn DrawIndex Decorate 21(pos) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_BaseVertexARB): 9(ptr) Variable Input 13(gl_BaseInstanceARB): 9(ptr) Variable Input 16(gl_DrawIDARB): 9(ptr) Variable Input 18: TypeFloat 32 19: TypeVector 18(float) 3 20: TypePointer Output 19(fvec3) 21(pos): 20(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(a): 7(ptr) Variable Function 12(b): 7(ptr) Variable Function 15(c): 7(ptr) Variable Function 11: 6(int) Load 10(gl_BaseVertexARB) Store 8(a) 11 14: 6(int) Load 13(gl_BaseInstanceARB) Store 12(b) 14 17: 6(int) Load 16(gl_DrawIDARB) Store 15(c) 17 22: 6(int) Load 8(a) 23: 18(float) ConvertSToF 22 24: 6(int) Load 12(b) 25: 18(float) ConvertSToF 24 26: 6(int) Load 15(c) 27: 18(float) ConvertSToF 26 28: 19(fvec3) CompositeConstruct 23 25 27 Store 21(pos) 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.earlyAndlateFragmentTests.frag.out000066400000000000000000000041031506534232700260370ustar00rootroot00000000000000spv.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 glslang-16.0.0/Test/baseResults/spv.earlyReturnDiscard.frag.out000066400000000000000000000207061506534232700245400ustar00rootroot00000000000000spv.earlyReturnDiscard.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 110 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 14 17 19 25 30 39 51 63 105 109 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "color" Name 11 "BaseColor" Name 13 "color2" Name 14 "otherColor" Name 17 "c" Name 19 "d" Name 25 "bigColor" Name 30 "smallColor" Name 39 "minimum" Name 51 "threshhold" Name 63 "threshhold2" Name 77 "b" Name 105 "gl_FragColor" Name 109 "threshhold3" Decorate 11(BaseColor) Location 9 Decorate 14(otherColor) Location 3 Decorate 17(c) Location 4 Decorate 19(d) Location 0 Decorate 25(bigColor) Location 1 Decorate 30(smallColor) Location 2 Decorate 39(minimum) Location 8 Decorate 51(threshhold) Location 5 Decorate 63(threshhold2) Location 6 Decorate 105(gl_FragColor) Location 0 Decorate 109(threshhold3) Location 7 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input 14(otherColor): 10(ptr) Variable Input 16: TypePointer Input 6(float) 17(c): 16(ptr) Variable Input 19(d): 16(ptr) Variable Input 21: TypeBool 25(bigColor): 10(ptr) Variable Input 30(smallColor): 10(ptr) Variable Input 34: TypeInt 32 0 35: 34(int) Constant 2 36: TypePointer Function 6(float) 39(minimum): 16(ptr) Variable Input 47: 6(float) Constant 1065353216 51(threshhold): 16(ptr) Variable Input 60: 34(int) Constant 3 63(threshhold2): 16(ptr) Variable Input 76: TypePointer Private 21(bool) 77(b): 76(ptr) Variable Private 85: 34(int) Constant 0 104: TypePointer Output 7(fvec4) 105(gl_FragColor): 104(ptr) Variable Output 109(threshhold3): 16(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 13(color2): 8(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 15: 7(fvec4) Load 14(otherColor) Store 13(color2) 15 18: 6(float) Load 17(c) 20: 6(float) Load 19(d) 22: 21(bool) FOrdGreaterThan 18 20 SelectionMerge 24 None BranchConditional 22 23 29 23: Label 26: 7(fvec4) Load 25(bigColor) 27: 7(fvec4) Load 9(color) 28: 7(fvec4) FAdd 27 26 Store 9(color) 28 Branch 24 29: Label 31: 7(fvec4) Load 30(smallColor) 32: 7(fvec4) Load 9(color) 33: 7(fvec4) FAdd 32 31 Store 9(color) 33 Branch 24 24: Label 37: 36(ptr) AccessChain 9(color) 35 38: 6(float) Load 37 40: 6(float) Load 39(minimum) 41: 21(bool) FOrdLessThan 38 40 SelectionMerge 43 None BranchConditional 41 42 43 42: Label Return 43: Label 45: 36(ptr) AccessChain 9(color) 35 46: 6(float) Load 45 48: 6(float) FAdd 46 47 Store 45 48 49: 36(ptr) AccessChain 9(color) 35 50: 6(float) Load 49 52: 6(float) Load 51(threshhold) 53: 21(bool) FOrdGreaterThan 50 52 SelectionMerge 55 None BranchConditional 53 54 55 54: Label Kill 55: Label 57: 7(fvec4) Load 9(color) 58: 7(fvec4) CompositeConstruct 47 47 47 47 59: 7(fvec4) FAdd 57 58 Store 9(color) 59 61: 36(ptr) AccessChain 9(color) 60 62: 6(float) Load 61 64: 6(float) Load 63(threshhold2) 65: 21(bool) FOrdGreaterThan 62 64 SelectionMerge 67 None BranchConditional 65 66 97 66: Label 68: 36(ptr) AccessChain 9(color) 35 69: 6(float) Load 68 70: 6(float) Load 63(threshhold2) 71: 21(bool) FOrdGreaterThan 69 70 SelectionMerge 73 None BranchConditional 71 72 75 72: Label Return 75: Label 78: 21(bool) Load 77(b) SelectionMerge 80 None BranchConditional 78 79 84 79: Label 81: 36(ptr) AccessChain 9(color) 35 82: 6(float) Load 81 83: 6(float) FAdd 82 47 Store 81 83 Branch 80 84: Label 86: 36(ptr) AccessChain 9(color) 85 87: 6(float) Load 86 88: 6(float) Load 39(minimum) 89: 21(bool) FOrdLessThan 87 88 SelectionMerge 91 None BranchConditional 89 90 93 90: Label Kill 93: Label 94: 7(fvec4) Load 9(color) 95: 7(fvec4) CompositeConstruct 47 47 47 47 96: 7(fvec4) FAdd 94 95 Store 9(color) 96 Branch 91 91: Label Branch 80 80: Label Branch 73 73: Label Branch 67 97: Label 98: 21(bool) Load 77(b) SelectionMerge 100 None BranchConditional 98 99 102 99: Label Kill 102: Label Return 100: Label Unreachable 67: Label 106: 7(fvec4) Load 9(color) 107: 7(fvec4) Load 13(color2) 108: 7(fvec4) FMul 106 107 Store 105(gl_FragColor) 108 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.expect_assume.assumeEXT.comp.out000066400000000000000000000044171506534232700254740ustar00rootroot00000000000000spv.expect_assume.assumeEXT.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader Capability ExpectAssumeKHR Extension "SPV_KHR_expect_assume" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_expect_assume" Name 4 "main" Name 7 "roblock" MemberName 7(roblock) 0 "i" Name 9 "ro" Decorate 7(roblock) BufferBlock MemberDecorate 7(roblock) 0 NonWritable MemberDecorate 7(roblock) 0 Offset 0 Decorate 9(ro) NonWritable Decorate 9(ro) Binding 0 Decorate 9(ro) DescriptorSet 0 Decorate 21 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7(roblock): TypeStruct 6(int) 8: TypePointer Uniform 7(roblock) 9(ro): 8(ptr) Variable Uniform 10: 6(int) Constant 0 11: TypePointer Uniform 6(int) 14: 6(int) Constant 42 15: TypeBool 17: TypeInt 32 0 18: TypeVector 17(int) 3 19: 17(int) Constant 8 20: 17(int) Constant 1 21: 18(ivec3) ConstantComposite 19 20 20 4(main): 2 Function None 3 5: Label 12: 11(ptr) AccessChain 9(ro) 10 13: 6(int) Load 12 16: 15(bool) SGreaterThan 13 14 AssumeTrueKHR 16 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.expect_assume.expectEXT.comp.out000066400000000000000000000330641506534232700254670ustar00rootroot00000000000000spv.expect_assume.expectEXT.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 178 Capability Shader Capability ExpectAssumeKHR Extension "SPV_KHR_expect_assume" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_expect_assume" Name 4 "main" Name 8 "x" Name 18 "roblock" MemberName 18(roblock) 0 "b" MemberName 18(roblock) 1 "bv2" MemberName 18(roblock) 2 "bv3" MemberName 18(roblock) 3 "bv4" MemberName 18(roblock) 4 "i" MemberName 18(roblock) 5 "iv2" MemberName 18(roblock) 6 "iv3" MemberName 18(roblock) 7 "iv4" MemberName 18(roblock) 8 "ui" MemberName 18(roblock) 9 "uv2" MemberName 18(roblock) 10 "uv3" MemberName 18(roblock) 11 "uv4" Name 20 "ro" Decorate 18(roblock) BufferBlock MemberDecorate 18(roblock) 0 NonWritable MemberDecorate 18(roblock) 0 Offset 0 MemberDecorate 18(roblock) 1 NonWritable MemberDecorate 18(roblock) 1 Offset 8 MemberDecorate 18(roblock) 2 NonWritable MemberDecorate 18(roblock) 2 Offset 16 MemberDecorate 18(roblock) 3 NonWritable MemberDecorate 18(roblock) 3 Offset 32 MemberDecorate 18(roblock) 4 NonWritable MemberDecorate 18(roblock) 4 Offset 48 MemberDecorate 18(roblock) 5 NonWritable MemberDecorate 18(roblock) 5 Offset 56 MemberDecorate 18(roblock) 6 NonWritable MemberDecorate 18(roblock) 6 Offset 64 MemberDecorate 18(roblock) 7 NonWritable MemberDecorate 18(roblock) 7 Offset 80 MemberDecorate 18(roblock) 8 NonWritable MemberDecorate 18(roblock) 8 Offset 96 MemberDecorate 18(roblock) 9 NonWritable MemberDecorate 18(roblock) 9 Offset 104 MemberDecorate 18(roblock) 10 NonWritable MemberDecorate 18(roblock) 10 Offset 112 MemberDecorate 18(roblock) 11 NonWritable MemberDecorate 18(roblock) 11 Offset 128 Decorate 20(ro) NonWritable Decorate 20(ro) Binding 0 Decorate 20(ro) DescriptorSet 0 Decorate 177 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 10: TypeBool 11: TypeInt 32 0 12: TypeVector 11(int) 2 13: TypeVector 11(int) 3 14: TypeVector 11(int) 4 15: TypeVector 6(int) 2 16: TypeVector 6(int) 3 17: TypeVector 6(int) 4 18(roblock): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 6(int) 15(ivec2) 16(ivec3) 17(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 19: TypePointer Uniform 18(roblock) 20(ro): 19(ptr) Variable Uniform 21: TypePointer Uniform 11(int) 24: 11(int) Constant 0 26: 10(bool) ConstantTrue 32: 6(int) Constant 1 33: TypePointer Uniform 12(ivec2) 36: TypeVector 10(bool) 2 37: 12(ivec2) ConstantComposite 24 24 39: 10(bool) ConstantFalse 40: 36(bvec2) ConstantComposite 26 39 48: 6(int) Constant 2 49: TypePointer Uniform 13(ivec3) 52: TypeVector 10(bool) 3 53: 13(ivec3) ConstantComposite 24 24 24 55: 52(bvec3) ConstantComposite 26 39 26 63: 6(int) Constant 3 64: TypePointer Uniform 14(ivec4) 67: TypeVector 10(bool) 4 68: 14(ivec4) ConstantComposite 24 24 24 24 70: 67(bvec4) ConstantComposite 39 26 39 26 79: 6(int) Constant 4 80: TypePointer Uniform 6(int) 83: 6(int) Constant 10 89: 6(int) Constant 5 90: TypePointer Uniform 15(ivec2) 93: 6(int) Constant 11 94: 6(int) Constant 4294967274 95: 15(ivec2) ConstantComposite 93 94 103: 6(int) Constant 6 104: TypePointer Uniform 16(ivec3) 107: 6(int) Constant 33 108: 16(ivec3) ConstantComposite 93 94 107 116: 6(int) Constant 7 117: TypePointer Uniform 17(ivec4) 120: 6(int) Constant 44 121: 17(ivec4) ConstantComposite 93 94 107 120 130: 6(int) Constant 8 133: 11(int) Constant 10 139: 6(int) Constant 9 142: 11(int) Constant 11 143: 11(int) Constant 22 144: 12(ivec2) ConstantComposite 142 143 154: 11(int) Constant 33 155: 13(ivec3) ConstantComposite 142 143 154 165: 11(int) Constant 44 166: 14(ivec4) ConstantComposite 142 143 154 165 175: 11(int) Constant 8 176: 11(int) Constant 1 177: 13(ivec3) ConstantComposite 175 176 176 4(main): 2 Function None 3 5: Label 8(x): 7(ptr) Variable Function Store 8(x) 9 22: 21(ptr) AccessChain 20(ro) 9 23: 11(int) Load 22 25: 10(bool) INotEqual 23 24 27: 10(bool) ExpectKHR 25 26 28: 10(bool) LogicalEqual 27 26 29: 10(bool) LogicalNot 28 SelectionMerge 31 None BranchConditional 29 30 31 30: Label 34: 33(ptr) AccessChain 20(ro) 32 35: 12(ivec2) Load 34 38: 36(bvec2) INotEqual 35 37 41: 36(bvec2) ExpectKHR 38 40 42: 36(bvec2) LogicalEqual 41 40 43: 10(bool) All 42 Branch 31 31: Label 44: 10(bool) Phi 28 5 43 30 45: 10(bool) LogicalNot 44 SelectionMerge 47 None BranchConditional 45 46 47 46: Label 50: 49(ptr) AccessChain 20(ro) 48 51: 13(ivec3) Load 50 54: 52(bvec3) INotEqual 51 53 56: 52(bvec3) ExpectKHR 54 55 57: 52(bvec3) LogicalEqual 56 55 58: 10(bool) All 57 Branch 47 47: Label 59: 10(bool) Phi 44 31 58 46 60: 10(bool) LogicalNot 59 SelectionMerge 62 None BranchConditional 60 61 62 61: Label 65: 64(ptr) AccessChain 20(ro) 63 66: 14(ivec4) Load 65 69: 67(bvec4) INotEqual 66 68 71: 67(bvec4) ExpectKHR 69 70 72: 67(bvec4) LogicalEqual 71 70 73: 10(bool) All 72 Branch 62 62: Label 74: 10(bool) Phi 59 47 73 61 SelectionMerge 76 None BranchConditional 74 75 76 75: Label 77: 6(int) Load 8(x) 78: 6(int) IAdd 77 32 Store 8(x) 78 Branch 76 76: Label 81: 80(ptr) AccessChain 20(ro) 79 82: 6(int) Load 81 84: 6(int) ExpectKHR 82 83 85: 10(bool) IEqual 84 83 86: 10(bool) LogicalNot 85 SelectionMerge 88 None BranchConditional 86 87 88 87: Label 91: 90(ptr) AccessChain 20(ro) 89 92: 15(ivec2) Load 91 96: 15(ivec2) ExpectKHR 92 95 97: 36(bvec2) IEqual 96 95 98: 10(bool) All 97 Branch 88 88: Label 99: 10(bool) Phi 85 76 98 87 100: 10(bool) LogicalNot 99 SelectionMerge 102 None BranchConditional 100 101 102 101: Label 105: 104(ptr) AccessChain 20(ro) 103 106: 16(ivec3) Load 105 109: 16(ivec3) ExpectKHR 106 108 110: 52(bvec3) IEqual 109 108 111: 10(bool) All 110 Branch 102 102: Label 112: 10(bool) Phi 99 88 111 101 113: 10(bool) LogicalNot 112 SelectionMerge 115 None BranchConditional 113 114 115 114: Label 118: 117(ptr) AccessChain 20(ro) 116 119: 17(ivec4) Load 118 122: 17(ivec4) ExpectKHR 119 121 123: 67(bvec4) IEqual 122 121 124: 10(bool) All 123 Branch 115 115: Label 125: 10(bool) Phi 112 102 124 114 SelectionMerge 127 None BranchConditional 125 126 127 126: Label 128: 6(int) Load 8(x) 129: 6(int) IAdd 128 32 Store 8(x) 129 Branch 127 127: Label 131: 21(ptr) AccessChain 20(ro) 130 132: 11(int) Load 131 134: 11(int) ExpectKHR 132 133 135: 10(bool) IEqual 134 133 136: 10(bool) LogicalNot 135 SelectionMerge 138 None BranchConditional 136 137 138 137: Label 140: 33(ptr) AccessChain 20(ro) 139 141: 12(ivec2) Load 140 145: 12(ivec2) ExpectKHR 141 144 146: 36(bvec2) IEqual 145 144 147: 10(bool) All 146 Branch 138 138: Label 148: 10(bool) Phi 135 127 147 137 149: 10(bool) LogicalNot 148 SelectionMerge 151 None BranchConditional 149 150 151 150: Label 152: 49(ptr) AccessChain 20(ro) 83 153: 13(ivec3) Load 152 156: 13(ivec3) ExpectKHR 153 155 157: 52(bvec3) IEqual 156 155 158: 10(bool) All 157 Branch 151 151: Label 159: 10(bool) Phi 148 138 158 150 160: 10(bool) LogicalNot 159 SelectionMerge 162 None BranchConditional 160 161 162 161: Label 163: 64(ptr) AccessChain 20(ro) 93 164: 14(ivec4) Load 163 167: 14(ivec4) ExpectKHR 164 166 168: 67(bvec4) IEqual 167 166 169: 10(bool) All 168 Branch 162 162: Label 170: 10(bool) Phi 159 151 169 161 SelectionMerge 172 None BranchConditional 170 171 172 171: Label 173: 6(int) Load 8(x) 174: 6(int) IAdd 173 32 Store 8(x) 174 Branch 172 172: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out000066400000000000000000001047221506534232700273530ustar00rootroot00000000000000spv.expect_assume.expectEXT.exttypes.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 458 Capability Shader Capability Int64 Capability Int16 Capability Int8 Capability StorageUniformBufferBlock16 Capability UniformAndStorageBuffer8BitAccess Capability ExpectAssumeKHR Extension "SPV_KHR_16bit_storage" Extension "SPV_KHR_8bit_storage" Extension "SPV_KHR_expect_assume" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_expect_assume" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 4 "main" Name 8 "x" Name 42 "roblock" MemberName 42(roblock) 0 "i8" MemberName 42(roblock) 1 "i8v2" MemberName 42(roblock) 2 "i8v3" MemberName 42(roblock) 3 "i8v4" MemberName 42(roblock) 4 "u8" MemberName 42(roblock) 5 "u8v2" MemberName 42(roblock) 6 "u8v3" MemberName 42(roblock) 7 "u8v4" MemberName 42(roblock) 8 "i16" MemberName 42(roblock) 9 "i16v2" MemberName 42(roblock) 10 "i16v3" MemberName 42(roblock) 11 "i16v4" MemberName 42(roblock) 12 "u16" MemberName 42(roblock) 13 "u16v2" MemberName 42(roblock) 14 "u16v3" MemberName 42(roblock) 15 "u16v4" MemberName 42(roblock) 16 "i32" MemberName 42(roblock) 17 "i32v2" MemberName 42(roblock) 18 "i32v3" MemberName 42(roblock) 19 "i32v4" MemberName 42(roblock) 20 "u32" MemberName 42(roblock) 21 "u32v2" MemberName 42(roblock) 22 "u32v3" MemberName 42(roblock) 23 "u32v4" MemberName 42(roblock) 24 "i64" MemberName 42(roblock) 25 "i64v2" MemberName 42(roblock) 26 "i64v3" MemberName 42(roblock) 27 "i64v4" MemberName 42(roblock) 28 "u64" MemberName 42(roblock) 29 "u64v2" MemberName 42(roblock) 30 "u64v3" MemberName 42(roblock) 31 "u64v4" Name 44 "ro" Decorate 42(roblock) BufferBlock MemberDecorate 42(roblock) 0 NonWritable MemberDecorate 42(roblock) 0 Offset 0 MemberDecorate 42(roblock) 1 NonWritable MemberDecorate 42(roblock) 1 Offset 2 MemberDecorate 42(roblock) 2 NonWritable MemberDecorate 42(roblock) 2 Offset 4 MemberDecorate 42(roblock) 3 NonWritable MemberDecorate 42(roblock) 3 Offset 8 MemberDecorate 42(roblock) 4 NonWritable MemberDecorate 42(roblock) 4 Offset 12 MemberDecorate 42(roblock) 5 NonWritable MemberDecorate 42(roblock) 5 Offset 14 MemberDecorate 42(roblock) 6 NonWritable MemberDecorate 42(roblock) 6 Offset 16 MemberDecorate 42(roblock) 7 NonWritable MemberDecorate 42(roblock) 7 Offset 20 MemberDecorate 42(roblock) 8 NonWritable MemberDecorate 42(roblock) 8 Offset 24 MemberDecorate 42(roblock) 9 NonWritable MemberDecorate 42(roblock) 9 Offset 28 MemberDecorate 42(roblock) 10 NonWritable MemberDecorate 42(roblock) 10 Offset 32 MemberDecorate 42(roblock) 11 NonWritable MemberDecorate 42(roblock) 11 Offset 40 MemberDecorate 42(roblock) 12 NonWritable MemberDecorate 42(roblock) 12 Offset 48 MemberDecorate 42(roblock) 13 NonWritable MemberDecorate 42(roblock) 13 Offset 52 MemberDecorate 42(roblock) 14 NonWritable MemberDecorate 42(roblock) 14 Offset 56 MemberDecorate 42(roblock) 15 NonWritable MemberDecorate 42(roblock) 15 Offset 64 MemberDecorate 42(roblock) 16 NonWritable MemberDecorate 42(roblock) 16 Offset 72 MemberDecorate 42(roblock) 17 NonWritable MemberDecorate 42(roblock) 17 Offset 80 MemberDecorate 42(roblock) 18 NonWritable MemberDecorate 42(roblock) 18 Offset 96 MemberDecorate 42(roblock) 19 NonWritable MemberDecorate 42(roblock) 19 Offset 112 MemberDecorate 42(roblock) 20 NonWritable MemberDecorate 42(roblock) 20 Offset 128 MemberDecorate 42(roblock) 21 NonWritable MemberDecorate 42(roblock) 21 Offset 136 MemberDecorate 42(roblock) 22 NonWritable MemberDecorate 42(roblock) 22 Offset 144 MemberDecorate 42(roblock) 23 NonWritable MemberDecorate 42(roblock) 23 Offset 160 MemberDecorate 42(roblock) 24 NonWritable MemberDecorate 42(roblock) 24 Offset 176 MemberDecorate 42(roblock) 25 NonWritable MemberDecorate 42(roblock) 25 Offset 192 MemberDecorate 42(roblock) 26 NonWritable MemberDecorate 42(roblock) 26 Offset 224 MemberDecorate 42(roblock) 27 NonWritable MemberDecorate 42(roblock) 27 Offset 256 MemberDecorate 42(roblock) 28 NonWritable MemberDecorate 42(roblock) 28 Offset 288 MemberDecorate 42(roblock) 29 NonWritable MemberDecorate 42(roblock) 29 Offset 304 MemberDecorate 42(roblock) 30 NonWritable MemberDecorate 42(roblock) 30 Offset 320 MemberDecorate 42(roblock) 31 NonWritable MemberDecorate 42(roblock) 31 Offset 352 Decorate 44(ro) NonWritable Decorate 44(ro) Binding 0 Decorate 44(ro) DescriptorSet 0 Decorate 457 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 10: TypeBool 11: TypeInt 8 1 12: TypeVector 11(int8_t) 2 13: TypeVector 11(int8_t) 3 14: TypeVector 11(int8_t) 4 15: TypeInt 8 0 16: TypeVector 15(int8_t) 2 17: TypeVector 15(int8_t) 3 18: TypeVector 15(int8_t) 4 19: TypeInt 16 1 20: TypeVector 19(int16_t) 2 21: TypeVector 19(int16_t) 3 22: TypeVector 19(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 2 25: TypeVector 23(int16_t) 3 26: TypeVector 23(int16_t) 4 27: TypeVector 6(int) 2 28: TypeVector 6(int) 3 29: TypeVector 6(int) 4 30: TypeInt 32 0 31: TypeVector 30(int) 2 32: TypeVector 30(int) 3 33: TypeVector 30(int) 4 34: TypeInt 64 1 35: TypeVector 34(int64_t) 2 36: TypeVector 34(int64_t) 3 37: TypeVector 34(int64_t) 4 38: TypeInt 64 0 39: TypeVector 38(int64_t) 2 40: TypeVector 38(int64_t) 3 41: TypeVector 38(int64_t) 4 42(roblock): TypeStruct 11(int8_t) 12(i8vec2) 13(i8vec3) 14(i8vec4) 15(int8_t) 16(i8vec2) 17(i8vec3) 18(i8vec4) 19(int16_t) 20(i16vec2) 21(i16vec3) 22(i16vec4) 23(int16_t) 24(i16vec2) 25(i16vec3) 26(i16vec4) 6(int) 27(ivec2) 28(ivec3) 29(ivec4) 30(int) 31(ivec2) 32(ivec3) 33(ivec4) 34(int64_t) 35(i64vec2) 36(i64vec3) 37(i64vec4) 38(int64_t) 39(i64vec2) 40(i64vec3) 41(i64vec4) 43: TypePointer Uniform 42(roblock) 44(ro): 43(ptr) Variable Uniform 45: TypePointer Uniform 11(int8_t) 49: 6(int) Constant 10 55: 6(int) Constant 1 56: TypePointer Uniform 12(i8vec2) 59: 11(int8_t) Constant 11 60: 11(int8_t) Constant 4294967274 61: 12(i8vec2) ConstantComposite 59 60 63: TypeVector 10(bool) 2 70: 6(int) Constant 2 71: TypePointer Uniform 13(i8vec3) 74: 11(int8_t) Constant 33 75: 13(i8vec3) ConstantComposite 59 60 74 77: TypeVector 10(bool) 3 84: 6(int) Constant 3 85: TypePointer Uniform 14(i8vec4) 88: 11(int8_t) Constant 44 89: 14(i8vec4) ConstantComposite 59 60 74 88 91: TypeVector 10(bool) 4 99: 6(int) Constant 4 100: TypePointer Uniform 15(int8_t) 110: 6(int) Constant 5 111: TypePointer Uniform 16(i8vec2) 114: 15(int8_t) Constant 11 115: 15(int8_t) Constant 22 116: 16(i8vec2) ConstantComposite 114 115 124: 6(int) Constant 6 125: TypePointer Uniform 17(i8vec3) 128: 15(int8_t) Constant 33 129: 17(i8vec3) ConstantComposite 114 115 128 137: 6(int) Constant 7 138: TypePointer Uniform 18(i8vec4) 141: 15(int8_t) Constant 44 142: 18(i8vec4) ConstantComposite 114 115 128 141 151: 6(int) Constant 8 152: TypePointer Uniform 19(int16_t) 161: 6(int) Constant 9 162: TypePointer Uniform 20(i16vec2) 165: 19(int16_t) Constant 11 166: 19(int16_t) Constant 4294967274 167: 20(i16vec2) ConstantComposite 165 166 175: TypePointer Uniform 21(i16vec3) 178: 19(int16_t) Constant 33 179: 21(i16vec3) ConstantComposite 165 166 178 187: 6(int) Constant 11 188: TypePointer Uniform 22(i16vec4) 191: 19(int16_t) Constant 44 192: 22(i16vec4) ConstantComposite 165 166 178 191 201: 6(int) Constant 12 202: TypePointer Uniform 23(int16_t) 212: 6(int) Constant 13 213: TypePointer Uniform 24(i16vec2) 216: 23(int16_t) Constant 11 217: 23(int16_t) Constant 22 218: 24(i16vec2) ConstantComposite 216 217 226: 6(int) Constant 14 227: TypePointer Uniform 25(i16vec3) 230: 23(int16_t) Constant 33 231: 25(i16vec3) ConstantComposite 216 217 230 239: 6(int) Constant 15 240: TypePointer Uniform 26(i16vec4) 243: 23(int16_t) Constant 44 244: 26(i16vec4) ConstantComposite 216 217 230 243 253: 6(int) Constant 16 254: TypePointer Uniform 6(int) 262: 6(int) Constant 17 263: TypePointer Uniform 27(ivec2) 266: 6(int) Constant 4294967274 267: 27(ivec2) ConstantComposite 187 266 275: 6(int) Constant 18 276: TypePointer Uniform 28(ivec3) 279: 6(int) Constant 33 280: 28(ivec3) ConstantComposite 187 266 279 288: 6(int) Constant 19 289: TypePointer Uniform 29(ivec4) 292: 6(int) Constant 44 293: 29(ivec4) ConstantComposite 187 266 279 292 302: 6(int) Constant 20 303: TypePointer Uniform 30(int) 306: 30(int) Constant 10 312: 6(int) Constant 21 313: TypePointer Uniform 31(ivec2) 316: 30(int) Constant 11 317: 30(int) Constant 22 318: 31(ivec2) ConstantComposite 316 317 326: 6(int) Constant 22 327: TypePointer Uniform 32(ivec3) 330: 30(int) Constant 33 331: 32(ivec3) ConstantComposite 316 317 330 339: 6(int) Constant 23 340: TypePointer Uniform 33(ivec4) 343: 30(int) Constant 44 344: 33(ivec4) ConstantComposite 316 317 330 343 353: 6(int) Constant 24 354: TypePointer Uniform 34(int64_t) 357: 34(int64_t) Constant 10 0 363: 6(int) Constant 25 364: TypePointer Uniform 35(i64vec2) 367: 34(int64_t) Constant 11 0 368: 34(int64_t) Constant 4294967274 4294967295 369: 35(i64vec2) ConstantComposite 367 368 377: 6(int) Constant 26 378: TypePointer Uniform 36(i64vec3) 381: 34(int64_t) Constant 33 0 382: 36(i64vec3) ConstantComposite 367 368 381 390: 6(int) Constant 27 391: TypePointer Uniform 37(i64vec4) 394: 34(int64_t) Constant 44 0 395: 37(i64vec4) ConstantComposite 367 368 381 394 404: 6(int) Constant 28 405: TypePointer Uniform 38(int64_t) 408: 38(int64_t) Constant 10 0 414: 6(int) Constant 29 415: TypePointer Uniform 39(i64vec2) 418: 38(int64_t) Constant 11 0 419: 38(int64_t) Constant 22 0 420: 39(i64vec2) ConstantComposite 418 419 428: 6(int) Constant 30 429: TypePointer Uniform 40(i64vec3) 432: 38(int64_t) Constant 33 0 433: 40(i64vec3) ConstantComposite 418 419 432 441: 6(int) Constant 31 442: TypePointer Uniform 41(i64vec4) 445: 38(int64_t) Constant 44 0 446: 41(i64vec4) ConstantComposite 418 419 432 445 455: 30(int) Constant 8 456: 30(int) Constant 1 457: 32(ivec3) ConstantComposite 455 456 456 4(main): 2 Function None 3 5: Label 8(x): 7(ptr) Variable Function Store 8(x) 9 46: 45(ptr) AccessChain 44(ro) 9 47: 11(int8_t) Load 46 48: 6(int) SConvert 47 50: 6(int) ExpectKHR 48 49 51: 10(bool) IEqual 50 49 52: 10(bool) LogicalNot 51 SelectionMerge 54 None BranchConditional 52 53 54 53: Label 57: 56(ptr) AccessChain 44(ro) 55 58: 12(i8vec2) Load 57 62: 12(i8vec2) ExpectKHR 58 61 64: 63(bvec2) IEqual 62 61 65: 10(bool) All 64 Branch 54 54: Label 66: 10(bool) Phi 51 5 65 53 67: 10(bool) LogicalNot 66 SelectionMerge 69 None BranchConditional 67 68 69 68: Label 72: 71(ptr) AccessChain 44(ro) 70 73: 13(i8vec3) Load 72 76: 13(i8vec3) ExpectKHR 73 75 78: 77(bvec3) IEqual 76 75 79: 10(bool) All 78 Branch 69 69: Label 80: 10(bool) Phi 66 54 79 68 81: 10(bool) LogicalNot 80 SelectionMerge 83 None BranchConditional 81 82 83 82: Label 86: 85(ptr) AccessChain 44(ro) 84 87: 14(i8vec4) Load 86 90: 14(i8vec4) ExpectKHR 87 89 92: 91(bvec4) IEqual 90 89 93: 10(bool) All 92 Branch 83 83: Label 94: 10(bool) Phi 80 69 93 82 SelectionMerge 96 None BranchConditional 94 95 96 95: Label 97: 6(int) Load 8(x) 98: 6(int) IAdd 97 55 Store 8(x) 98 Branch 96 96: Label 101: 100(ptr) AccessChain 44(ro) 99 102: 15(int8_t) Load 101 103: 30(int) UConvert 102 104: 6(int) Bitcast 103 105: 6(int) ExpectKHR 104 49 106: 10(bool) IEqual 105 49 107: 10(bool) LogicalNot 106 SelectionMerge 109 None BranchConditional 107 108 109 108: Label 112: 111(ptr) AccessChain 44(ro) 110 113: 16(i8vec2) Load 112 117: 16(i8vec2) ExpectKHR 113 116 118: 63(bvec2) IEqual 117 116 119: 10(bool) All 118 Branch 109 109: Label 120: 10(bool) Phi 106 96 119 108 121: 10(bool) LogicalNot 120 SelectionMerge 123 None BranchConditional 121 122 123 122: Label 126: 125(ptr) AccessChain 44(ro) 124 127: 17(i8vec3) Load 126 130: 17(i8vec3) ExpectKHR 127 129 131: 77(bvec3) IEqual 130 129 132: 10(bool) All 131 Branch 123 123: Label 133: 10(bool) Phi 120 109 132 122 134: 10(bool) LogicalNot 133 SelectionMerge 136 None BranchConditional 134 135 136 135: Label 139: 138(ptr) AccessChain 44(ro) 137 140: 18(i8vec4) Load 139 143: 18(i8vec4) ExpectKHR 140 142 144: 91(bvec4) IEqual 143 142 145: 10(bool) All 144 Branch 136 136: Label 146: 10(bool) Phi 133 123 145 135 SelectionMerge 148 None BranchConditional 146 147 148 147: Label 149: 6(int) Load 8(x) 150: 6(int) IAdd 149 55 Store 8(x) 150 Branch 148 148: Label 153: 152(ptr) AccessChain 44(ro) 151 154: 19(int16_t) Load 153 155: 6(int) SConvert 154 156: 6(int) ExpectKHR 155 49 157: 10(bool) IEqual 156 49 158: 10(bool) LogicalNot 157 SelectionMerge 160 None BranchConditional 158 159 160 159: Label 163: 162(ptr) AccessChain 44(ro) 161 164: 20(i16vec2) Load 163 168: 20(i16vec2) ExpectKHR 164 167 169: 63(bvec2) IEqual 168 167 170: 10(bool) All 169 Branch 160 160: Label 171: 10(bool) Phi 157 148 170 159 172: 10(bool) LogicalNot 171 SelectionMerge 174 None BranchConditional 172 173 174 173: Label 176: 175(ptr) AccessChain 44(ro) 49 177: 21(i16vec3) Load 176 180: 21(i16vec3) ExpectKHR 177 179 181: 77(bvec3) IEqual 180 179 182: 10(bool) All 181 Branch 174 174: Label 183: 10(bool) Phi 171 160 182 173 184: 10(bool) LogicalNot 183 SelectionMerge 186 None BranchConditional 184 185 186 185: Label 189: 188(ptr) AccessChain 44(ro) 187 190: 22(i16vec4) Load 189 193: 22(i16vec4) ExpectKHR 190 192 194: 91(bvec4) IEqual 193 192 195: 10(bool) All 194 Branch 186 186: Label 196: 10(bool) Phi 183 174 195 185 SelectionMerge 198 None BranchConditional 196 197 198 197: Label 199: 6(int) Load 8(x) 200: 6(int) IAdd 199 55 Store 8(x) 200 Branch 198 198: Label 203: 202(ptr) AccessChain 44(ro) 201 204: 23(int16_t) Load 203 205: 30(int) UConvert 204 206: 6(int) Bitcast 205 207: 6(int) ExpectKHR 206 49 208: 10(bool) IEqual 207 49 209: 10(bool) LogicalNot 208 SelectionMerge 211 None BranchConditional 209 210 211 210: Label 214: 213(ptr) AccessChain 44(ro) 212 215: 24(i16vec2) Load 214 219: 24(i16vec2) ExpectKHR 215 218 220: 63(bvec2) IEqual 219 218 221: 10(bool) All 220 Branch 211 211: Label 222: 10(bool) Phi 208 198 221 210 223: 10(bool) LogicalNot 222 SelectionMerge 225 None BranchConditional 223 224 225 224: Label 228: 227(ptr) AccessChain 44(ro) 226 229: 25(i16vec3) Load 228 232: 25(i16vec3) ExpectKHR 229 231 233: 77(bvec3) IEqual 232 231 234: 10(bool) All 233 Branch 225 225: Label 235: 10(bool) Phi 222 211 234 224 236: 10(bool) LogicalNot 235 SelectionMerge 238 None BranchConditional 236 237 238 237: Label 241: 240(ptr) AccessChain 44(ro) 239 242: 26(i16vec4) Load 241 245: 26(i16vec4) ExpectKHR 242 244 246: 91(bvec4) IEqual 245 244 247: 10(bool) All 246 Branch 238 238: Label 248: 10(bool) Phi 235 225 247 237 SelectionMerge 250 None BranchConditional 248 249 250 249: Label 251: 6(int) Load 8(x) 252: 6(int) IAdd 251 55 Store 8(x) 252 Branch 250 250: Label 255: 254(ptr) AccessChain 44(ro) 253 256: 6(int) Load 255 257: 6(int) ExpectKHR 256 49 258: 10(bool) IEqual 257 49 259: 10(bool) LogicalNot 258 SelectionMerge 261 None BranchConditional 259 260 261 260: Label 264: 263(ptr) AccessChain 44(ro) 262 265: 27(ivec2) Load 264 268: 27(ivec2) ExpectKHR 265 267 269: 63(bvec2) IEqual 268 267 270: 10(bool) All 269 Branch 261 261: Label 271: 10(bool) Phi 258 250 270 260 272: 10(bool) LogicalNot 271 SelectionMerge 274 None BranchConditional 272 273 274 273: Label 277: 276(ptr) AccessChain 44(ro) 275 278: 28(ivec3) Load 277 281: 28(ivec3) ExpectKHR 278 280 282: 77(bvec3) IEqual 281 280 283: 10(bool) All 282 Branch 274 274: Label 284: 10(bool) Phi 271 261 283 273 285: 10(bool) LogicalNot 284 SelectionMerge 287 None BranchConditional 285 286 287 286: Label 290: 289(ptr) AccessChain 44(ro) 288 291: 29(ivec4) Load 290 294: 29(ivec4) ExpectKHR 291 293 295: 91(bvec4) IEqual 294 293 296: 10(bool) All 295 Branch 287 287: Label 297: 10(bool) Phi 284 274 296 286 SelectionMerge 299 None BranchConditional 297 298 299 298: Label 300: 6(int) Load 8(x) 301: 6(int) IAdd 300 55 Store 8(x) 301 Branch 299 299: Label 304: 303(ptr) AccessChain 44(ro) 302 305: 30(int) Load 304 307: 30(int) ExpectKHR 305 306 308: 10(bool) IEqual 307 306 309: 10(bool) LogicalNot 308 SelectionMerge 311 None BranchConditional 309 310 311 310: Label 314: 313(ptr) AccessChain 44(ro) 312 315: 31(ivec2) Load 314 319: 31(ivec2) ExpectKHR 315 318 320: 63(bvec2) IEqual 319 318 321: 10(bool) All 320 Branch 311 311: Label 322: 10(bool) Phi 308 299 321 310 323: 10(bool) LogicalNot 322 SelectionMerge 325 None BranchConditional 323 324 325 324: Label 328: 327(ptr) AccessChain 44(ro) 326 329: 32(ivec3) Load 328 332: 32(ivec3) ExpectKHR 329 331 333: 77(bvec3) IEqual 332 331 334: 10(bool) All 333 Branch 325 325: Label 335: 10(bool) Phi 322 311 334 324 336: 10(bool) LogicalNot 335 SelectionMerge 338 None BranchConditional 336 337 338 337: Label 341: 340(ptr) AccessChain 44(ro) 339 342: 33(ivec4) Load 341 345: 33(ivec4) ExpectKHR 342 344 346: 91(bvec4) IEqual 345 344 347: 10(bool) All 346 Branch 338 338: Label 348: 10(bool) Phi 335 325 347 337 SelectionMerge 350 None BranchConditional 348 349 350 349: Label 351: 6(int) Load 8(x) 352: 6(int) IAdd 351 55 Store 8(x) 352 Branch 350 350: Label 355: 354(ptr) AccessChain 44(ro) 353 356: 34(int64_t) Load 355 358: 34(int64_t) ExpectKHR 356 357 359: 10(bool) IEqual 358 357 360: 10(bool) LogicalNot 359 SelectionMerge 362 None BranchConditional 360 361 362 361: Label 365: 364(ptr) AccessChain 44(ro) 363 366: 35(i64vec2) Load 365 370: 35(i64vec2) ExpectKHR 366 369 371: 63(bvec2) IEqual 370 369 372: 10(bool) All 371 Branch 362 362: Label 373: 10(bool) Phi 359 350 372 361 374: 10(bool) LogicalNot 373 SelectionMerge 376 None BranchConditional 374 375 376 375: Label 379: 378(ptr) AccessChain 44(ro) 377 380: 36(i64vec3) Load 379 383: 36(i64vec3) ExpectKHR 380 382 384: 77(bvec3) IEqual 383 382 385: 10(bool) All 384 Branch 376 376: Label 386: 10(bool) Phi 373 362 385 375 387: 10(bool) LogicalNot 386 SelectionMerge 389 None BranchConditional 387 388 389 388: Label 392: 391(ptr) AccessChain 44(ro) 390 393: 37(i64vec4) Load 392 396: 37(i64vec4) ExpectKHR 393 395 397: 91(bvec4) IEqual 396 395 398: 10(bool) All 397 Branch 389 389: Label 399: 10(bool) Phi 386 376 398 388 SelectionMerge 401 None BranchConditional 399 400 401 400: Label 402: 6(int) Load 8(x) 403: 6(int) IAdd 402 55 Store 8(x) 403 Branch 401 401: Label 406: 405(ptr) AccessChain 44(ro) 404 407: 38(int64_t) Load 406 409: 38(int64_t) ExpectKHR 407 408 410: 10(bool) IEqual 409 408 411: 10(bool) LogicalNot 410 SelectionMerge 413 None BranchConditional 411 412 413 412: Label 416: 415(ptr) AccessChain 44(ro) 414 417: 39(i64vec2) Load 416 421: 39(i64vec2) ExpectKHR 417 420 422: 63(bvec2) IEqual 421 420 423: 10(bool) All 422 Branch 413 413: Label 424: 10(bool) Phi 410 401 423 412 425: 10(bool) LogicalNot 424 SelectionMerge 427 None BranchConditional 425 426 427 426: Label 430: 429(ptr) AccessChain 44(ro) 428 431: 40(i64vec3) Load 430 434: 40(i64vec3) ExpectKHR 431 433 435: 77(bvec3) IEqual 434 433 436: 10(bool) All 435 Branch 427 427: Label 437: 10(bool) Phi 424 413 436 426 438: 10(bool) LogicalNot 437 SelectionMerge 440 None BranchConditional 438 439 440 439: Label 443: 442(ptr) AccessChain 44(ro) 441 444: 41(i64vec4) Load 443 447: 41(i64vec4) ExpectKHR 444 446 448: 91(bvec4) IEqual 447 446 449: 10(bool) All 448 Branch 440 440: Label 450: 10(bool) Phi 437 427 449 439 SelectionMerge 452 None BranchConditional 450 451 452 451: Label 453: 6(int) Load 8(x) 454: 6(int) IAdd 453 55 Store 8(x) 454 Branch 452 452: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.explicittypes.frag.out000066400000000000000000001226771506534232700236520ustar00rootroot00000000000000spv.explicittypes.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 567 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability StorageUniform16 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 6 "literal(" Name 8 "typeCast8(" Name 10 "typeCast16(" Name 12 "typeCast32(" Name 14 "typeCast64(" Name 18 "i64" Name 26 "Uniforms" MemberName 26(Uniforms) 0 "index" Name 28 "" Name 35 "indexable" Name 40 "u64" Name 49 "indexable" Name 53 "i32" Name 62 "indexable" Name 66 "u32" Name 74 "indexable" Name 79 "i16" Name 88 "indexable" Name 93 "u16" Name 101 "indexable" Name 106 "i8" Name 115 "indexable" Name 120 "u8" Name 128 "indexable" Name 133 "u8v" Name 136 "i8v" Name 141 "i16v" Name 150 "i32v" Name 158 "u32v" Name 164 "i64v" Name 169 "u64v" Name 183 "f16v" Name 189 "f32v" Name 195 "f64v" Name 222 "u16v" Name 252 "bv" Name 268 "i32v" Name 269 "i16v" Name 272 "u16v" Name 278 "u32v" Name 282 "i64v" Name 285 "u64v" Name 296 "f16v" Name 299 "f32v" Name 302 "f64v" Name 347 "i8v" Name 353 "u8v" Name 363 "bv" Name 380 "u32v" Name 381 "i32v" Name 384 "i64v" Name 387 "u64v" Name 396 "f32v" Name 399 "f64v" Name 406 "i8v" Name 412 "i16v" Name 426 "u8v" Name 432 "u16v" Name 446 "f16v" Name 459 "bv" Name 475 "u64v" Name 476 "i64v" Name 479 "f64v" Name 484 "i8v" Name 490 "i16v" Name 496 "i32v" Name 504 "u8v" Name 510 "u16v" Name 516 "u32v" Name 525 "f16v" Name 528 "f32v" Name 539 "bv" Name 564 "Block" MemberName 564(Block) 0 "i16" MemberName 564(Block) 1 "i16v2" MemberName 564(Block) 2 "i16v3" MemberName 564(Block) 3 "i16v4" MemberName 564(Block) 4 "u16" MemberName 564(Block) 5 "u16v2" MemberName 564(Block) 6 "u16v3" MemberName 564(Block) 7 "u16v4" MemberName 564(Block) 8 "i32" MemberName 564(Block) 9 "i32v2" MemberName 564(Block) 10 "i32v3" MemberName 564(Block) 11 "i32v4" MemberName 564(Block) 12 "u32" MemberName 564(Block) 13 "u32v2" MemberName 564(Block) 14 "u32v3" MemberName 564(Block) 15 "u32v4" Name 566 "block" Decorate 26(Uniforms) Block MemberDecorate 26(Uniforms) 0 Offset 0 Decorate 28 Binding 0 Decorate 28 DescriptorSet 0 Decorate 564(Block) Block MemberDecorate 564(Block) 0 Offset 0 MemberDecorate 564(Block) 1 Offset 4 MemberDecorate 564(Block) 2 Offset 8 MemberDecorate 564(Block) 3 Offset 16 MemberDecorate 564(Block) 4 Offset 24 MemberDecorate 564(Block) 5 Offset 28 MemberDecorate 564(Block) 6 Offset 32 MemberDecorate 564(Block) 7 Offset 40 MemberDecorate 564(Block) 8 Offset 48 MemberDecorate 564(Block) 9 Offset 56 MemberDecorate 564(Block) 10 Offset 64 MemberDecorate 564(Block) 11 Offset 80 MemberDecorate 564(Block) 12 Offset 96 MemberDecorate 564(Block) 13 Offset 104 MemberDecorate 564(Block) 14 Offset 112 MemberDecorate 564(Block) 15 Offset 128 Decorate 566(block) Binding 1 Decorate 566(block) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 16: TypeInt 64 1 17: TypePointer Function 16(int64_t) 19: TypeInt 32 0 20: 19(int) Constant 3 21: TypeArray 16(int64_t) 20 22: 16(int64_t) Constant 4008636143 4008636142 23: 16(int64_t) Constant 4294967295 4294967295 24: 16(int64_t) Constant 0 1 25: 21 ConstantComposite 22 23 24 26(Uniforms): TypeStruct 19(int) 27: TypePointer Uniform 26(Uniforms) 28: 27(ptr) Variable Uniform 29: TypeInt 32 1 30: 29(int) Constant 0 31: TypePointer Uniform 19(int) 34: TypePointer Function 21 38: TypeInt 64 0 39: TypePointer Function 38(int64_t) 41: TypeArray 38(int64_t) 20 42: 38(int64_t) Constant 4294967295 4294967295 43: 38(int64_t) Constant 0 1 44: 38(int64_t) Constant 4294967295 1 45: 41 ConstantComposite 42 43 44 48: TypePointer Function 41 52: TypePointer Function 29(int) 54: TypeArray 29(int) 20 55: 29(int) Constant 4008636143 56: 29(int) Constant 4294967295 57: 29(int) Constant 536870912 58: 54 ConstantComposite 55 56 57 61: TypePointer Function 54 65: TypePointer Function 19(int) 67: TypeArray 19(int) 20 68: 19(int) Constant 4294967295 69: 19(int) Constant 2147483647 70: 67 ConstantComposite 68 68 69 73: TypePointer Function 67 77: TypeInt 16 1 78: TypePointer Function 77(int16_t) 80: TypeArray 77(int16_t) 20 81: 77(int16_t) Constant 4294962927 82: 77(int16_t) Constant 4294967295 83: 77(int16_t) Constant 16384 84: 80 ConstantComposite 81 82 83 87: TypePointer Function 80 91: TypeInt 16 0 92: TypePointer Function 91(int16_t) 94: TypeArray 91(int16_t) 20 95: 91(int16_t) Constant 65535 96: 91(int16_t) Constant 32767 97: 94 ConstantComposite 95 95 96 100: TypePointer Function 94 104: TypeInt 8 1 105: TypePointer Function 104(int8_t) 107: TypeArray 104(int8_t) 20 108: 104(int8_t) Constant 4294967279 109: 104(int8_t) Constant 4294967295 110: 104(int8_t) Constant 0 111: 107 ConstantComposite 108 109 110 114: TypePointer Function 107 118: TypeInt 8 0 119: TypePointer Function 118(int8_t) 121: TypeArray 118(int8_t) 20 122: 118(int8_t) Constant 255 123: 118(int8_t) Constant 127 124: 121 ConstantComposite 122 122 123 127: TypePointer Function 121 131: TypeVector 118(int8_t) 2 132: TypePointer Function 131(i8vec2) 134: TypeVector 104(int8_t) 2 135: TypePointer Function 134(i8vec2) 139: TypeVector 77(int16_t) 2 140: TypePointer Function 139(i16vec2) 145: TypeVector 91(int16_t) 2 148: TypeVector 29(int) 2 149: TypePointer Function 148(ivec2) 154: TypeVector 19(int) 2 157: TypePointer Function 154(ivec2) 162: TypeVector 16(int64_t) 2 163: TypePointer Function 162(i64vec2) 167: TypeVector 38(int64_t) 2 168: TypePointer Function 167(i64vec2) 180: TypeFloat 16 181: TypeVector 180(float16_t) 2 182: TypePointer Function 181(f16vec2) 186: TypeFloat 32 187: TypeVector 186(float) 2 188: TypePointer Function 187(fvec2) 192: TypeFloat 64 193: TypeVector 192(float64_t) 2 194: TypePointer Function 193(f64vec2) 221: TypePointer Function 145(i16vec2) 249: TypeBool 250: TypeVector 249(bool) 2 251: TypePointer Function 250(bvec2) 254: 104(int8_t) Constant 1 255: 134(i8vec2) ConstantComposite 110 110 256: 134(i8vec2) ConstantComposite 254 254 259: 118(int8_t) Constant 0 260: 118(int8_t) Constant 1 261: 131(i8vec2) ConstantComposite 259 259 262: 131(i8vec2) ConstantComposite 260 260 365: 77(int16_t) Constant 0 366: 77(int16_t) Constant 1 367:139(i16vec2) ConstantComposite 365 365 368:139(i16vec2) ConstantComposite 366 366 371: 91(int16_t) Constant 0 372: 91(int16_t) Constant 1 373:145(i16vec2) ConstantComposite 371 371 374:145(i16vec2) ConstantComposite 372 372 461: 29(int) Constant 1 462: 148(ivec2) ConstantComposite 30 30 463: 148(ivec2) ConstantComposite 461 461 466: 19(int) Constant 0 467: 19(int) Constant 1 468: 154(ivec2) ConstantComposite 466 466 469: 154(ivec2) ConstantComposite 467 467 541: 16(int64_t) Constant 0 0 542: 16(int64_t) Constant 1 0 543:162(i64vec2) ConstantComposite 541 541 544:162(i64vec2) ConstantComposite 542 542 547: 38(int64_t) Constant 0 0 548: 38(int64_t) Constant 1 0 549:167(i64vec2) ConstantComposite 547 547 550:167(i64vec2) ConstantComposite 548 548 556: TypeVector 77(int16_t) 3 557: TypeVector 77(int16_t) 4 558: TypeVector 91(int16_t) 3 559: TypeVector 91(int16_t) 4 560: TypeVector 29(int) 3 561: TypeVector 29(int) 4 562: TypeVector 19(int) 3 563: TypeVector 19(int) 4 564(Block): TypeStruct 77(int16_t) 139(i16vec2) 556(i16vec3) 557(i16vec4) 91(int16_t) 145(i16vec2) 558(i16vec3) 559(i16vec4) 29(int) 148(ivec2) 560(ivec3) 561(ivec4) 19(int) 154(ivec2) 562(ivec3) 563(ivec4) 565: TypePointer Uniform 564(Block) 566(block): 565(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 18(i64): 17(ptr) Variable Function 35(indexable): 34(ptr) Variable Function 40(u64): 39(ptr) Variable Function 49(indexable): 48(ptr) Variable Function 53(i32): 52(ptr) Variable Function 62(indexable): 61(ptr) Variable Function 66(u32): 65(ptr) Variable Function 74(indexable): 73(ptr) Variable Function 79(i16): 78(ptr) Variable Function 88(indexable): 87(ptr) Variable Function 93(u16): 92(ptr) Variable Function 101(indexable): 100(ptr) Variable Function 106(i8): 105(ptr) Variable Function 115(indexable): 114(ptr) Variable Function 120(u8): 119(ptr) Variable Function 128(indexable): 127(ptr) Variable Function 32: 31(ptr) AccessChain 28 30 33: 19(int) Load 32 Store 35(indexable) 25 36: 17(ptr) AccessChain 35(indexable) 33 37: 16(int64_t) Load 36 Store 18(i64) 37 46: 31(ptr) AccessChain 28 30 47: 19(int) Load 46 Store 49(indexable) 45 50: 39(ptr) AccessChain 49(indexable) 47 51: 38(int64_t) Load 50 Store 40(u64) 51 59: 31(ptr) AccessChain 28 30 60: 19(int) Load 59 Store 62(indexable) 58 63: 52(ptr) AccessChain 62(indexable) 60 64: 29(int) Load 63 Store 53(i32) 64 71: 31(ptr) AccessChain 28 30 72: 19(int) Load 71 Store 74(indexable) 70 75: 65(ptr) AccessChain 74(indexable) 72 76: 19(int) Load 75 Store 66(u32) 76 85: 31(ptr) AccessChain 28 30 86: 19(int) Load 85 Store 88(indexable) 84 89: 78(ptr) AccessChain 88(indexable) 86 90: 77(int16_t) Load 89 Store 79(i16) 90 98: 31(ptr) AccessChain 28 30 99: 19(int) Load 98 Store 101(indexable) 97 102: 92(ptr) AccessChain 101(indexable) 99 103: 91(int16_t) Load 102 Store 93(u16) 103 112: 31(ptr) AccessChain 28 30 113: 19(int) Load 112 Store 115(indexable) 111 116: 105(ptr) AccessChain 115(indexable) 113 117: 104(int8_t) Load 116 Store 106(i8) 117 125: 31(ptr) AccessChain 28 30 126: 19(int) Load 125 Store 128(indexable) 124 129: 119(ptr) AccessChain 128(indexable) 126 130: 118(int8_t) Load 129 Store 120(u8) 130 Return FunctionEnd 8(typeCast8(): 2 Function None 3 9: Label 133(u8v): 132(ptr) Variable Function 136(i8v): 135(ptr) Variable Function 141(i16v): 140(ptr) Variable Function 150(i32v): 149(ptr) Variable Function 158(u32v): 157(ptr) Variable Function 164(i64v): 163(ptr) Variable Function 169(u64v): 168(ptr) Variable Function 183(f16v): 182(ptr) Variable Function 189(f32v): 188(ptr) Variable Function 195(f64v): 194(ptr) Variable Function 222(u16v): 221(ptr) Variable Function 252(bv): 251(ptr) Variable Function 137: 134(i8vec2) Load 136(i8v) 138: 131(i8vec2) Bitcast 137 Store 133(u8v) 138 142: 134(i8vec2) Load 136(i8v) 143:139(i16vec2) SConvert 142 Store 141(i16v) 143 144: 131(i8vec2) Load 133(u8v) 146:145(i16vec2) UConvert 144 147:139(i16vec2) Bitcast 146 Store 141(i16v) 147 151: 134(i8vec2) Load 136(i8v) 152: 148(ivec2) SConvert 151 Store 150(i32v) 152 153: 131(i8vec2) Load 133(u8v) 155: 154(ivec2) UConvert 153 156: 148(ivec2) Bitcast 155 Store 150(i32v) 156 159: 134(i8vec2) Load 136(i8v) 160: 148(ivec2) SConvert 159 161: 154(ivec2) Bitcast 160 Store 158(u32v) 161 165: 134(i8vec2) Load 136(i8v) 166:162(i64vec2) SConvert 165 Store 164(i64v) 166 170: 134(i8vec2) Load 136(i8v) 171:162(i64vec2) SConvert 170 172:167(i64vec2) Bitcast 171 Store 169(u64v) 172 173: 131(i8vec2) Load 133(u8v) 174: 154(ivec2) UConvert 173 Store 158(u32v) 174 175: 131(i8vec2) Load 133(u8v) 176:167(i64vec2) UConvert 175 177:162(i64vec2) Bitcast 176 Store 164(i64v) 177 178: 131(i8vec2) Load 133(u8v) 179:167(i64vec2) UConvert 178 Store 169(u64v) 179 184: 134(i8vec2) Load 136(i8v) 185:181(f16vec2) ConvertSToF 184 Store 183(f16v) 185 190: 134(i8vec2) Load 136(i8v) 191: 187(fvec2) ConvertSToF 190 Store 189(f32v) 191 196: 134(i8vec2) Load 136(i8v) 197:193(f64vec2) ConvertSToF 196 Store 195(f64v) 197 198: 131(i8vec2) Load 133(u8v) 199:181(f16vec2) ConvertUToF 198 Store 183(f16v) 199 200: 131(i8vec2) Load 133(u8v) 201: 187(fvec2) ConvertUToF 200 Store 189(f32v) 201 202: 131(i8vec2) Load 133(u8v) 203:193(f64vec2) ConvertUToF 202 Store 195(f64v) 203 204: 131(i8vec2) Load 133(u8v) 205: 134(i8vec2) Bitcast 204 Store 136(i8v) 205 206: 134(i8vec2) Load 136(i8v) 207:139(i16vec2) SConvert 206 Store 141(i16v) 207 208: 131(i8vec2) Load 133(u8v) 209:145(i16vec2) UConvert 208 210:139(i16vec2) Bitcast 209 Store 141(i16v) 210 211: 134(i8vec2) Load 136(i8v) 212: 148(ivec2) SConvert 211 Store 150(i32v) 212 213: 131(i8vec2) Load 133(u8v) 214: 154(ivec2) UConvert 213 215: 148(ivec2) Bitcast 214 Store 150(i32v) 215 216: 134(i8vec2) Load 136(i8v) 217:162(i64vec2) SConvert 216 Store 164(i64v) 217 218: 134(i8vec2) Load 136(i8v) 219:162(i64vec2) SConvert 218 220:167(i64vec2) Bitcast 219 Store 169(u64v) 220 223: 134(i8vec2) Load 136(i8v) 224:139(i16vec2) SConvert 223 225:145(i16vec2) Bitcast 224 Store 222(u16v) 225 226: 131(i8vec2) Load 133(u8v) 227:145(i16vec2) UConvert 226 Store 222(u16v) 227 228: 131(i8vec2) Load 133(u8v) 229: 154(ivec2) UConvert 228 Store 158(u32v) 229 230: 131(i8vec2) Load 133(u8v) 231:167(i64vec2) UConvert 230 232:162(i64vec2) Bitcast 231 Store 164(i64v) 232 233: 131(i8vec2) Load 133(u8v) 234:167(i64vec2) UConvert 233 235:162(i64vec2) Bitcast 234 236:167(i64vec2) Bitcast 235 Store 169(u64v) 236 237: 134(i8vec2) Load 136(i8v) 238:181(f16vec2) ConvertSToF 237 Store 183(f16v) 238 239: 134(i8vec2) Load 136(i8v) 240: 187(fvec2) ConvertSToF 239 Store 189(f32v) 240 241: 134(i8vec2) Load 136(i8v) 242:193(f64vec2) ConvertSToF 241 Store 195(f64v) 242 243: 131(i8vec2) Load 133(u8v) 244:181(f16vec2) ConvertUToF 243 Store 183(f16v) 244 245: 131(i8vec2) Load 133(u8v) 246: 187(fvec2) ConvertUToF 245 Store 189(f32v) 246 247: 131(i8vec2) Load 133(u8v) 248:193(f64vec2) ConvertUToF 247 Store 195(f64v) 248 253: 250(bvec2) Load 252(bv) 257: 134(i8vec2) Select 253 256 255 Store 136(i8v) 257 258: 250(bvec2) Load 252(bv) 263: 131(i8vec2) Select 258 262 261 Store 133(u8v) 263 264: 134(i8vec2) Load 136(i8v) 265: 250(bvec2) INotEqual 264 261 Store 252(bv) 265 266: 131(i8vec2) Load 133(u8v) 267: 250(bvec2) INotEqual 266 261 Store 252(bv) 267 Return FunctionEnd 10(typeCast16(): 2 Function None 3 11: Label 268(i32v): 149(ptr) Variable Function 269(i16v): 140(ptr) Variable Function 272(u16v): 221(ptr) Variable Function 278(u32v): 157(ptr) Variable Function 282(i64v): 163(ptr) Variable Function 285(u64v): 168(ptr) Variable Function 296(f16v): 182(ptr) Variable Function 299(f32v): 188(ptr) Variable Function 302(f64v): 194(ptr) Variable Function 347(i8v): 135(ptr) Variable Function 353(u8v): 132(ptr) Variable Function 363(bv): 251(ptr) Variable Function 270:139(i16vec2) Load 269(i16v) 271: 148(ivec2) SConvert 270 Store 268(i32v) 271 273:145(i16vec2) Load 272(u16v) 274: 154(ivec2) UConvert 273 275: 148(ivec2) Bitcast 274 Store 268(i32v) 275 276:139(i16vec2) Load 269(i16v) 277:145(i16vec2) Bitcast 276 Store 272(u16v) 277 279:139(i16vec2) Load 269(i16v) 280: 148(ivec2) SConvert 279 281: 154(ivec2) Bitcast 280 Store 278(u32v) 281 283:139(i16vec2) Load 269(i16v) 284:162(i64vec2) SConvert 283 Store 282(i64v) 284 286:139(i16vec2) Load 269(i16v) 287:162(i64vec2) SConvert 286 288:167(i64vec2) Bitcast 287 Store 285(u64v) 288 289:145(i16vec2) Load 272(u16v) 290: 154(ivec2) UConvert 289 Store 278(u32v) 290 291:145(i16vec2) Load 272(u16v) 292:167(i64vec2) UConvert 291 293:162(i64vec2) Bitcast 292 Store 282(i64v) 293 294:145(i16vec2) Load 272(u16v) 295:167(i64vec2) UConvert 294 Store 285(u64v) 295 297:139(i16vec2) Load 269(i16v) 298:181(f16vec2) ConvertSToF 297 Store 296(f16v) 298 300:139(i16vec2) Load 269(i16v) 301: 187(fvec2) ConvertSToF 300 Store 299(f32v) 301 303:139(i16vec2) Load 269(i16v) 304:193(f64vec2) ConvertSToF 303 Store 302(f64v) 304 305:145(i16vec2) Load 272(u16v) 306:181(f16vec2) ConvertUToF 305 Store 296(f16v) 306 307:145(i16vec2) Load 272(u16v) 308: 187(fvec2) ConvertUToF 307 Store 299(f32v) 308 309:145(i16vec2) Load 272(u16v) 310:193(f64vec2) ConvertUToF 309 Store 302(f64v) 310 311:139(i16vec2) Load 269(i16v) 312: 148(ivec2) SConvert 311 Store 268(i32v) 312 313:145(i16vec2) Load 272(u16v) 314: 154(ivec2) UConvert 313 315: 148(ivec2) Bitcast 314 Store 268(i32v) 315 316:139(i16vec2) Load 269(i16v) 317:145(i16vec2) Bitcast 316 Store 272(u16v) 317 318:139(i16vec2) Load 269(i16v) 319: 148(ivec2) SConvert 318 320: 154(ivec2) Bitcast 319 Store 278(u32v) 320 321:139(i16vec2) Load 269(i16v) 322:162(i64vec2) SConvert 321 Store 282(i64v) 322 323:139(i16vec2) Load 269(i16v) 324:162(i64vec2) SConvert 323 325:167(i64vec2) Bitcast 324 Store 285(u64v) 325 326:145(i16vec2) Load 272(u16v) 327: 154(ivec2) UConvert 326 Store 278(u32v) 327 328:145(i16vec2) Load 272(u16v) 329:167(i64vec2) UConvert 328 330:162(i64vec2) Bitcast 329 Store 282(i64v) 330 331:145(i16vec2) Load 272(u16v) 332:167(i64vec2) UConvert 331 333:162(i64vec2) Bitcast 332 334:167(i64vec2) Bitcast 333 Store 285(u64v) 334 335:139(i16vec2) Load 269(i16v) 336:181(f16vec2) ConvertSToF 335 Store 296(f16v) 336 337:139(i16vec2) Load 269(i16v) 338: 187(fvec2) ConvertSToF 337 Store 299(f32v) 338 339:139(i16vec2) Load 269(i16v) 340:193(f64vec2) ConvertSToF 339 Store 302(f64v) 340 341:145(i16vec2) Load 272(u16v) 342:181(f16vec2) ConvertUToF 341 Store 296(f16v) 342 343:145(i16vec2) Load 272(u16v) 344: 187(fvec2) ConvertUToF 343 Store 299(f32v) 344 345:145(i16vec2) Load 272(u16v) 346:193(f64vec2) ConvertUToF 345 Store 302(f64v) 346 348:139(i16vec2) Load 269(i16v) 349: 134(i8vec2) SConvert 348 Store 347(i8v) 349 350:145(i16vec2) Load 272(u16v) 351: 131(i8vec2) UConvert 350 352: 134(i8vec2) Bitcast 351 Store 347(i8v) 352 354:139(i16vec2) Load 269(i16v) 355: 134(i8vec2) SConvert 354 356: 131(i8vec2) Bitcast 355 Store 353(u8v) 356 357:145(i16vec2) Load 272(u16v) 358: 131(i8vec2) UConvert 357 Store 353(u8v) 358 359:145(i16vec2) Load 272(u16v) 360: 131(i8vec2) UConvert 359 361:145(i16vec2) UConvert 360 362:139(i16vec2) Bitcast 361 Store 269(i16v) 362 364: 250(bvec2) Load 363(bv) 369:139(i16vec2) Select 364 368 367 Store 269(i16v) 369 370: 250(bvec2) Load 363(bv) 375:145(i16vec2) Select 370 374 373 Store 272(u16v) 375 376:139(i16vec2) Load 269(i16v) 377: 250(bvec2) INotEqual 376 373 Store 363(bv) 377 378:145(i16vec2) Load 272(u16v) 379: 250(bvec2) INotEqual 378 373 Store 363(bv) 379 Return FunctionEnd 12(typeCast32(): 2 Function None 3 13: Label 380(u32v): 157(ptr) Variable Function 381(i32v): 149(ptr) Variable Function 384(i64v): 163(ptr) Variable Function 387(u64v): 168(ptr) Variable Function 396(f32v): 188(ptr) Variable Function 399(f64v): 194(ptr) Variable Function 406(i8v): 135(ptr) Variable Function 412(i16v): 140(ptr) Variable Function 426(u8v): 132(ptr) Variable Function 432(u16v): 221(ptr) Variable Function 446(f16v): 182(ptr) Variable Function 459(bv): 251(ptr) Variable Function 382: 148(ivec2) Load 381(i32v) 383: 154(ivec2) Bitcast 382 Store 380(u32v) 383 385: 148(ivec2) Load 381(i32v) 386:162(i64vec2) SConvert 385 Store 384(i64v) 386 388: 148(ivec2) Load 381(i32v) 389:162(i64vec2) SConvert 388 390:167(i64vec2) Bitcast 389 Store 387(u64v) 390 391: 154(ivec2) Load 380(u32v) 392:167(i64vec2) UConvert 391 393:162(i64vec2) Bitcast 392 Store 384(i64v) 393 394: 154(ivec2) Load 380(u32v) 395:167(i64vec2) UConvert 394 Store 387(u64v) 395 397: 148(ivec2) Load 381(i32v) 398: 187(fvec2) ConvertSToF 397 Store 396(f32v) 398 400: 148(ivec2) Load 381(i32v) 401:193(f64vec2) ConvertSToF 400 Store 399(f64v) 401 402: 154(ivec2) Load 380(u32v) 403: 187(fvec2) ConvertUToF 402 Store 396(f32v) 403 404: 154(ivec2) Load 380(u32v) 405:193(f64vec2) ConvertUToF 404 Store 399(f64v) 405 407: 148(ivec2) Load 381(i32v) 408: 134(i8vec2) SConvert 407 Store 406(i8v) 408 409: 154(ivec2) Load 380(u32v) 410: 131(i8vec2) UConvert 409 411: 134(i8vec2) Bitcast 410 Store 406(i8v) 411 413: 148(ivec2) Load 381(i32v) 414:139(i16vec2) SConvert 413 Store 412(i16v) 414 415: 154(ivec2) Load 380(u32v) 416:145(i16vec2) UConvert 415 417:139(i16vec2) Bitcast 416 Store 412(i16v) 417 418: 148(ivec2) Load 381(i32v) Store 381(i32v) 418 419: 154(ivec2) Load 380(u32v) 420: 148(ivec2) Bitcast 419 Store 381(i32v) 420 421: 148(ivec2) Load 381(i32v) 422:162(i64vec2) SConvert 421 Store 384(i64v) 422 423: 154(ivec2) Load 380(u32v) 424:167(i64vec2) UConvert 423 425:162(i64vec2) Bitcast 424 Store 384(i64v) 425 427: 148(ivec2) Load 381(i32v) 428: 134(i8vec2) SConvert 427 429: 131(i8vec2) Bitcast 428 Store 426(u8v) 429 430: 154(ivec2) Load 380(u32v) 431: 131(i8vec2) UConvert 430 Store 426(u8v) 431 433: 148(ivec2) Load 381(i32v) 434:139(i16vec2) SConvert 433 435:145(i16vec2) Bitcast 434 Store 432(u16v) 435 436: 154(ivec2) Load 380(u32v) 437:145(i16vec2) UConvert 436 Store 432(u16v) 437 438: 148(ivec2) Load 381(i32v) 439: 154(ivec2) Bitcast 438 Store 380(u32v) 439 440: 154(ivec2) Load 380(u32v) Store 380(u32v) 440 441: 148(ivec2) Load 381(i32v) 442:162(i64vec2) SConvert 441 443:167(i64vec2) Bitcast 442 Store 387(u64v) 443 444: 154(ivec2) Load 380(u32v) 445:167(i64vec2) UConvert 444 Store 387(u64v) 445 447: 148(ivec2) Load 381(i32v) 448:181(f16vec2) ConvertSToF 447 Store 446(f16v) 448 449: 148(ivec2) Load 381(i32v) 450: 187(fvec2) ConvertSToF 449 Store 396(f32v) 450 451: 148(ivec2) Load 381(i32v) 452:193(f64vec2) ConvertSToF 451 Store 399(f64v) 452 453: 154(ivec2) Load 380(u32v) 454:181(f16vec2) ConvertUToF 453 Store 446(f16v) 454 455: 154(ivec2) Load 380(u32v) 456: 187(fvec2) ConvertUToF 455 Store 396(f32v) 456 457: 154(ivec2) Load 380(u32v) 458:193(f64vec2) ConvertUToF 457 Store 399(f64v) 458 460: 250(bvec2) Load 459(bv) 464: 148(ivec2) Select 460 463 462 Store 381(i32v) 464 465: 250(bvec2) Load 459(bv) 470: 154(ivec2) Select 465 469 468 Store 380(u32v) 470 471: 148(ivec2) Load 381(i32v) 472: 250(bvec2) INotEqual 471 468 Store 459(bv) 472 473: 154(ivec2) Load 380(u32v) 474: 250(bvec2) INotEqual 473 468 Store 459(bv) 474 Return FunctionEnd 14(typeCast64(): 2 Function None 3 15: Label 475(u64v): 168(ptr) Variable Function 476(i64v): 163(ptr) Variable Function 479(f64v): 194(ptr) Variable Function 484(i8v): 135(ptr) Variable Function 490(i16v): 140(ptr) Variable Function 496(i32v): 149(ptr) Variable Function 504(u8v): 132(ptr) Variable Function 510(u16v): 221(ptr) Variable Function 516(u32v): 157(ptr) Variable Function 525(f16v): 182(ptr) Variable Function 528(f32v): 188(ptr) Variable Function 539(bv): 251(ptr) Variable Function 477:162(i64vec2) Load 476(i64v) 478:167(i64vec2) Bitcast 477 Store 475(u64v) 478 480:162(i64vec2) Load 476(i64v) 481:193(f64vec2) ConvertSToF 480 Store 479(f64v) 481 482:167(i64vec2) Load 475(u64v) 483:193(f64vec2) ConvertUToF 482 Store 479(f64v) 483 485:162(i64vec2) Load 476(i64v) 486: 134(i8vec2) SConvert 485 Store 484(i8v) 486 487:167(i64vec2) Load 475(u64v) 488: 131(i8vec2) UConvert 487 489: 134(i8vec2) Bitcast 488 Store 484(i8v) 489 491:162(i64vec2) Load 476(i64v) 492:139(i16vec2) SConvert 491 Store 490(i16v) 492 493:167(i64vec2) Load 475(u64v) 494:145(i16vec2) UConvert 493 495:139(i16vec2) Bitcast 494 Store 490(i16v) 495 497:162(i64vec2) Load 476(i64v) 498: 148(ivec2) SConvert 497 Store 496(i32v) 498 499:167(i64vec2) Load 475(u64v) 500: 154(ivec2) UConvert 499 501: 148(ivec2) Bitcast 500 Store 496(i32v) 501 502:167(i64vec2) Load 475(u64v) 503:162(i64vec2) Bitcast 502 Store 476(i64v) 503 505:162(i64vec2) Load 476(i64v) 506: 134(i8vec2) SConvert 505 507: 131(i8vec2) Bitcast 506 Store 504(u8v) 507 508:167(i64vec2) Load 475(u64v) 509: 131(i8vec2) UConvert 508 Store 504(u8v) 509 511:162(i64vec2) Load 476(i64v) 512:139(i16vec2) SConvert 511 513:145(i16vec2) Bitcast 512 Store 510(u16v) 513 514:167(i64vec2) Load 475(u64v) 515:145(i16vec2) UConvert 514 Store 510(u16v) 515 517:162(i64vec2) Load 476(i64v) 518: 148(ivec2) SConvert 517 519: 154(ivec2) Bitcast 518 Store 516(u32v) 519 520:167(i64vec2) Load 475(u64v) 521: 154(ivec2) UConvert 520 Store 516(u32v) 521 522:162(i64vec2) Load 476(i64v) 523:167(i64vec2) Bitcast 522 Store 475(u64v) 523 524:167(i64vec2) Load 475(u64v) Store 475(u64v) 524 526:162(i64vec2) Load 476(i64v) 527:181(f16vec2) ConvertSToF 526 Store 525(f16v) 527 529:162(i64vec2) Load 476(i64v) 530: 187(fvec2) ConvertSToF 529 Store 528(f32v) 530 531:162(i64vec2) Load 476(i64v) 532:193(f64vec2) ConvertSToF 531 Store 479(f64v) 532 533:167(i64vec2) Load 475(u64v) 534:181(f16vec2) ConvertUToF 533 Store 525(f16v) 534 535:167(i64vec2) Load 475(u64v) 536: 187(fvec2) ConvertUToF 535 Store 528(f32v) 536 537:167(i64vec2) Load 475(u64v) 538:193(f64vec2) ConvertUToF 537 Store 479(f64v) 538 540: 250(bvec2) Load 539(bv) 545:162(i64vec2) Select 540 544 543 Store 476(i64v) 545 546: 250(bvec2) Load 539(bv) 551:167(i64vec2) Select 546 550 549 Store 475(u64v) 551 552:162(i64vec2) Load 476(i64v) 553: 250(bvec2) INotEqual 552 549 Store 539(bv) 553 554:167(i64vec2) Load 475(u64v) 555: 250(bvec2) INotEqual 554 549 Store 539(bv) 555 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.exportFunctions.comp.out000066400000000000000000000031351506534232700241600ustar00rootroot00000000000000spv.exportFunctions.comp Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader Capability Linkage 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 Source GLSL 450 Name 7 "add(f1;f1;" Name 5 "a" Name 6 "b" Name 11 "foo(" Decorate 7(add(f1;f1;) Linkage Attributes 6579297 0 Decorate 11(foo() Linkage Attributes 7303014 0 2: TypeFloat 32 3: TypePointer Function 2(float) 4: TypeFunction 2(float) 3(ptr) 3(ptr) 9: TypeInt 32 1 10: TypeFunction 9(int) 17: TypeVoid 19: 9(int) Constant 0 7(add(f1;f1;): 2(float) Function None 4 5(a): 3(ptr) FunctionParameter 6(b): 3(ptr) FunctionParameter 8: Label 13: 2(float) Load 5(a) 14: 2(float) Load 6(b) 15: 2(float) FAdd 13 14 ReturnValue 15 FunctionEnd 11(foo(): 9(int) Function None 10 12: Label ReturnValue 19 FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.AccelDecl.frag.out000066400000000000000000000041301506534232700233210ustar00rootroot00000000000000spv.ext.AccelDecl.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader Capability RayQueryKHR Extension "SPV_KHR_ray_query" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 14 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_GOOGLE_cpp_style_line_directive" SourceExtension "GL_GOOGLE_include_directive" Name 4 "main" Name 9 "outColor" Name 14 "topLevelAS" Decorate 9(outColor) Location 0 Decorate 14(topLevelAS) Binding 1 Decorate 14(topLevelAS) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(outColor): 8(ptr) Variable Output 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeAccelerationStructureKHR 13: TypePointer UniformConstant 12 14(topLevelAS): 13(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label Store 9(outColor) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.AnyHitShader.rahit.out000066400000000000000000000270751506534232700242520ustar00rootroot00000000000000spv.ext.AnyHitShader.rahit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 115 Capability GroupNonUniform Capability RayTracingKHR Capability RayTracingPositionFetchKHR Capability RayCullMaskKHR Extension "SPV_KHR_ray_cull_mask" Extension "SPV_KHR_ray_tracing" Extension "SPV_KHR_ray_tracing_position_fetch" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 69 81 87 92 106 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_EXT_ray_tracing_position_fetch" SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDEXT" Name 13 "v1" Name 14 "gl_LaunchSizeEXT" Name 18 "v2" Name 20 "gl_PrimitiveID" Name 22 "v3" Name 23 "gl_InstanceID" Name 25 "v4" Name 26 "gl_InstanceCustomIndexEXT" Name 31 "v5" Name 33 "gl_WorldRayOriginEXT" Name 35 "v6" Name 36 "gl_WorldRayDirectionEXT" Name 38 "v7" Name 39 "gl_ObjectRayOriginEXT" Name 41 "v8" Name 42 "gl_ObjectRayDirectionEXT" Name 45 "v9" Name 47 "gl_RayTminEXT" Name 49 "v10" Name 50 "gl_RayTmaxEXT" Name 52 "v11" Name 55 "v12" Name 57 "gl_HitKindEXT" Name 61 "v13" Name 63 "gl_ObjectToWorldEXT" Name 65 "v14" Name 66 "gl_WorldToObjectEXT" Name 68 "v15" Name 69 "gl_GeometryIndexEXT" Name 74 "v16" Name 77 "v17" Name 80 "v18" Name 81 "gl_CullMaskEXT" Name 83 "v19" Name 87 "gl_HitTriangleVertexPositionsEXT" Name 92 "incomingPayload" Name 106 "gl_SubgroupSize" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 23(gl_InstanceID) BuiltIn InstanceId Decorate 26(gl_InstanceCustomIndexEXT) BuiltIn InstanceCustomIndexKHR Decorate 33(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR Decorate 36(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR Decorate 39(gl_ObjectRayOriginEXT) BuiltIn ObjectRayOriginKHR Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR Decorate 57(gl_HitKindEXT) BuiltIn HitKindKHR Decorate 63(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 66(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 69(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR Decorate 81(gl_CullMaskEXT) BuiltIn CullMaskKHR Decorate 87(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR Decorate 106(gl_SubgroupSize) RelaxedPrecision Decorate 106(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 107 RelaxedPrecision Decorate 108 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 14(gl_LaunchSizeEXT): 10(ptr) Variable Input 16: TypeInt 32 1 17: TypePointer Function 16(int) 19: TypePointer Input 16(int) 20(gl_PrimitiveID): 19(ptr) Variable Input 23(gl_InstanceID): 19(ptr) Variable Input 26(gl_InstanceCustomIndexEXT): 19(ptr) Variable Input 28: TypeFloat 32 29: TypeVector 28(float) 3 30: TypePointer Function 29(fvec3) 32: TypePointer Input 29(fvec3) 33(gl_WorldRayOriginEXT): 32(ptr) Variable Input 36(gl_WorldRayDirectionEXT): 32(ptr) Variable Input 39(gl_ObjectRayOriginEXT): 32(ptr) Variable Input 42(gl_ObjectRayDirectionEXT): 32(ptr) Variable Input 44: TypePointer Function 28(float) 46: TypePointer Input 28(float) 47(gl_RayTminEXT): 46(ptr) Variable Input 50(gl_RayTmaxEXT): 46(ptr) Variable Input 54: TypePointer Function 6(int) 56: TypePointer Input 6(int) 57(gl_HitKindEXT): 56(ptr) Variable Input 59: TypeMatrix 29(fvec3) 4 60: TypePointer Function 59 62: TypePointer Input 59 63(gl_ObjectToWorldEXT): 62(ptr) Variable Input 66(gl_WorldToObjectEXT): 62(ptr) Variable Input 69(gl_GeometryIndexEXT): 19(ptr) Variable Input 71: TypeVector 28(float) 4 72: TypeMatrix 71(fvec4) 3 73: TypePointer Function 72 81(gl_CullMaskEXT): 56(ptr) Variable Input 84: 6(int) Constant 3 85: TypeArray 29(fvec3) 84 86: TypePointer Input 85 87(gl_HitTriangleVertexPositionsEXT): 86(ptr) Variable Input 88: 16(int) Constant 0 91: TypePointer IncomingRayPayloadKHR 71(fvec4) 92(incomingPayload): 91(ptr) Variable IncomingRayPayloadKHR 93: 28(float) Constant 1056964608 94: 71(fvec4) ConstantComposite 93 93 93 93 96: 16(int) Constant 1 97: TypeBool 102: 6(int) Constant 0 106(gl_SubgroupSize): 56(ptr) Variable Input 109: TypePointer IncomingRayPayloadKHR 28(float) 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function 13(v1): 8(ptr) Variable Function 18(v2): 17(ptr) Variable Function 22(v3): 17(ptr) Variable Function 25(v4): 17(ptr) Variable Function 31(v5): 30(ptr) Variable Function 35(v6): 30(ptr) Variable Function 38(v7): 30(ptr) Variable Function 41(v8): 30(ptr) Variable Function 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function 55(v12): 54(ptr) Variable Function 61(v13): 60(ptr) Variable Function 65(v14): 60(ptr) Variable Function 68(v15): 17(ptr) Variable Function 74(v16): 73(ptr) Variable Function 77(v17): 73(ptr) Variable Function 80(v18): 54(ptr) Variable Function 83(v19): 30(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) Store 13(v1) 15 21: 16(int) Load 20(gl_PrimitiveID) Store 18(v2) 21 24: 16(int) Load 23(gl_InstanceID) Store 22(v3) 24 27: 16(int) Load 26(gl_InstanceCustomIndexEXT) Store 25(v4) 27 34: 29(fvec3) Load 33(gl_WorldRayOriginEXT) Store 31(v5) 34 37: 29(fvec3) Load 36(gl_WorldRayDirectionEXT) Store 35(v6) 37 40: 29(fvec3) Load 39(gl_ObjectRayOriginEXT) Store 38(v7) 40 43: 29(fvec3) Load 42(gl_ObjectRayDirectionEXT) Store 41(v8) 43 48: 28(float) Load 47(gl_RayTminEXT) Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxEXT) Store 49(v10) 51 53: 28(float) Load 50(gl_RayTmaxEXT) Store 52(v11) 53 58: 6(int) Load 57(gl_HitKindEXT) Store 55(v12) 58 64: 59 Load 63(gl_ObjectToWorldEXT) Store 61(v13) 64 67: 59 Load 66(gl_WorldToObjectEXT) Store 65(v14) 67 70: 16(int) Load 69(gl_GeometryIndexEXT) Store 68(v15) 70 75: 59 Load 63(gl_ObjectToWorldEXT) 76: 72 Transpose 75 Store 74(v16) 76 78: 59 Load 66(gl_WorldToObjectEXT) 79: 72 Transpose 78 Store 77(v17) 79 82: 6(int) Load 81(gl_CullMaskEXT) Store 80(v18) 82 89: 32(ptr) AccessChain 87(gl_HitTriangleVertexPositionsEXT) 88 90: 29(fvec3) Load 89 Store 83(v19) 90 Store 92(incomingPayload) 94 95: 16(int) Load 18(v2) 98: 97(bool) IEqual 95 96 SelectionMerge 100 None BranchConditional 98 99 100 99: Label IgnoreIntersectionKHR 100: Label 107: 6(int) Load 106(gl_SubgroupSize) 108: 28(float) ConvertUToF 107 110: 109(ptr) AccessChain 92(incomingPayload) 102 111: 28(float) Load 110 112: 28(float) FAdd 111 108 113: 109(ptr) AccessChain 92(incomingPayload) 102 Store 113 112 TerminateRayKHR FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.AnyHitShader_Errors.rahit.out000066400000000000000000000005711506534232700255760ustar00rootroot00000000000000spv.ext.AnyHitShader_Errors.rahit ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage) ERROR: 0:9: 'reportIntersectionEXT' : no matching overloaded function found ERROR: 0:10: 'traceRayEXT' : no matching overloaded function found ERROR: 3 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.ClosestHitShader.rchit.out000066400000000000000000000261511506534232700251330ustar00rootroot00000000000000spv.ext.ClosestHitShader.rchit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 108 Capability RayTracingKHR Capability RayTracingPositionFetchKHR Capability RayCullMaskKHR Extension "SPV_KHR_ray_cull_mask" Extension "SPV_KHR_ray_tracing" Extension "SPV_KHR_ray_tracing_position_fetch" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 69 81 87 93 105 107 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_EXT_ray_tracing_position_fetch" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDEXT" Name 13 "v1" Name 14 "gl_LaunchSizeEXT" Name 18 "v2" Name 20 "gl_PrimitiveID" Name 22 "v3" Name 23 "gl_InstanceID" Name 25 "v4" Name 26 "gl_InstanceCustomIndexEXT" Name 31 "v5" Name 33 "gl_WorldRayOriginEXT" Name 35 "v6" Name 36 "gl_WorldRayDirectionEXT" Name 38 "v7" Name 39 "gl_ObjectRayOriginEXT" Name 41 "v8" Name 42 "gl_ObjectRayDirectionEXT" Name 45 "v9" Name 47 "gl_RayTminEXT" Name 49 "v10" Name 50 "gl_RayTmaxEXT" Name 52 "v11" Name 55 "v12" Name 57 "gl_HitKindEXT" Name 61 "v13" Name 63 "gl_ObjectToWorldEXT" Name 65 "v14" Name 66 "gl_WorldToObjectEXT" Name 68 "v15" Name 69 "gl_GeometryIndexEXT" Name 74 "v16" Name 77 "v17" Name 80 "v18" Name 81 "gl_CullMaskEXT" Name 83 "v19" Name 87 "gl_HitTriangleVertexPositionsEXT" Name 93 "accEXT" Name 105 "incomingPayload" Name 107 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 23(gl_InstanceID) BuiltIn InstanceId Decorate 26(gl_InstanceCustomIndexEXT) BuiltIn InstanceCustomIndexKHR Decorate 33(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR Decorate 36(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR Decorate 39(gl_ObjectRayOriginEXT) BuiltIn ObjectRayOriginKHR Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR Decorate 57(gl_HitKindEXT) BuiltIn HitKindKHR Decorate 63(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 66(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 69(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR Decorate 81(gl_CullMaskEXT) BuiltIn CullMaskKHR Decorate 87(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR Decorate 93(accEXT) Binding 0 Decorate 93(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 14(gl_LaunchSizeEXT): 10(ptr) Variable Input 16: TypeInt 32 1 17: TypePointer Function 16(int) 19: TypePointer Input 16(int) 20(gl_PrimitiveID): 19(ptr) Variable Input 23(gl_InstanceID): 19(ptr) Variable Input 26(gl_InstanceCustomIndexEXT): 19(ptr) Variable Input 28: TypeFloat 32 29: TypeVector 28(float) 3 30: TypePointer Function 29(fvec3) 32: TypePointer Input 29(fvec3) 33(gl_WorldRayOriginEXT): 32(ptr) Variable Input 36(gl_WorldRayDirectionEXT): 32(ptr) Variable Input 39(gl_ObjectRayOriginEXT): 32(ptr) Variable Input 42(gl_ObjectRayDirectionEXT): 32(ptr) Variable Input 44: TypePointer Function 28(float) 46: TypePointer Input 28(float) 47(gl_RayTminEXT): 46(ptr) Variable Input 50(gl_RayTmaxEXT): 46(ptr) Variable Input 54: TypePointer Function 6(int) 56: TypePointer Input 6(int) 57(gl_HitKindEXT): 56(ptr) Variable Input 59: TypeMatrix 29(fvec3) 4 60: TypePointer Function 59 62: TypePointer Input 59 63(gl_ObjectToWorldEXT): 62(ptr) Variable Input 66(gl_WorldToObjectEXT): 62(ptr) Variable Input 69(gl_GeometryIndexEXT): 19(ptr) Variable Input 71: TypeVector 28(float) 4 72: TypeMatrix 71(fvec4) 3 73: TypePointer Function 72 81(gl_CullMaskEXT): 56(ptr) Variable Input 84: 6(int) Constant 3 85: TypeArray 29(fvec3) 84 86: TypePointer Input 85 87(gl_HitTriangleVertexPositionsEXT): 86(ptr) Variable Input 88: 16(int) Constant 0 91: TypeAccelerationStructureKHR 92: TypePointer UniformConstant 91 93(accEXT): 92(ptr) Variable UniformConstant 95: 6(int) Constant 0 96: 6(int) Constant 1 97: 6(int) Constant 2 98: 28(float) Constant 1056964608 99: 29(fvec3) ConstantComposite 98 98 98 100: 28(float) Constant 1065353216 101: 29(fvec3) ConstantComposite 100 100 100 102: 28(float) Constant 1061158912 103: 16(int) Constant 1 104: TypePointer IncomingRayPayloadKHR 71(fvec4) 105(incomingPayload): 104(ptr) Variable IncomingRayPayloadKHR 106: TypePointer RayPayloadKHR 71(fvec4) 107(localPayload): 106(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function 13(v1): 8(ptr) Variable Function 18(v2): 17(ptr) Variable Function 22(v3): 17(ptr) Variable Function 25(v4): 17(ptr) Variable Function 31(v5): 30(ptr) Variable Function 35(v6): 30(ptr) Variable Function 38(v7): 30(ptr) Variable Function 41(v8): 30(ptr) Variable Function 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function 55(v12): 54(ptr) Variable Function 61(v13): 60(ptr) Variable Function 65(v14): 60(ptr) Variable Function 68(v15): 17(ptr) Variable Function 74(v16): 73(ptr) Variable Function 77(v17): 73(ptr) Variable Function 80(v18): 54(ptr) Variable Function 83(v19): 30(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) Store 13(v1) 15 21: 16(int) Load 20(gl_PrimitiveID) Store 18(v2) 21 24: 16(int) Load 23(gl_InstanceID) Store 22(v3) 24 27: 16(int) Load 26(gl_InstanceCustomIndexEXT) Store 25(v4) 27 34: 29(fvec3) Load 33(gl_WorldRayOriginEXT) Store 31(v5) 34 37: 29(fvec3) Load 36(gl_WorldRayDirectionEXT) Store 35(v6) 37 40: 29(fvec3) Load 39(gl_ObjectRayOriginEXT) Store 38(v7) 40 43: 29(fvec3) Load 42(gl_ObjectRayDirectionEXT) Store 41(v8) 43 48: 28(float) Load 47(gl_RayTminEXT) Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxEXT) Store 49(v10) 51 53: 28(float) Load 50(gl_RayTmaxEXT) Store 52(v11) 53 58: 6(int) Load 57(gl_HitKindEXT) Store 55(v12) 58 64: 59 Load 63(gl_ObjectToWorldEXT) Store 61(v13) 64 67: 59 Load 66(gl_WorldToObjectEXT) Store 65(v14) 67 70: 16(int) Load 69(gl_GeometryIndexEXT) Store 68(v15) 70 75: 59 Load 63(gl_ObjectToWorldEXT) 76: 72 Transpose 75 Store 74(v16) 76 78: 59 Load 66(gl_WorldToObjectEXT) 79: 72 Transpose 78 Store 77(v17) 79 82: 6(int) Load 81(gl_CullMaskEXT) Store 80(v18) 82 89: 32(ptr) AccessChain 87(gl_HitTriangleVertexPositionsEXT) 88 90: 29(fvec3) Load 89 Store 83(v19) 90 94: 91 Load 93(accEXT) TraceRayKHR 94 95 96 97 84 95 99 98 101 102 105(incomingPayload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out000066400000000000000000000013151506534232700264620ustar00rootroot00000000000000spv.ext.ClosestHitShader_Errors.rchit ERROR: 0:6: 'location' : overlapping use of location 2 ERROR: 0:9: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage) ERROR: 0:10: 'reportIntersectionEXT' : no matching overloaded function found ERROR: 0:11: 'terminateRayEXT' : not supported in this stage: closest-hit ERROR: 0:12: 'ignoreIntersectionEXT' : not supported in this stage: closest-hit ERROR: 0:13: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling ERROR: 0:14: 'no rayPayloadEXT/rayPayloadInEXT declared' : with layout(location = 0) ERROR: 7 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out000066400000000000000000000151461506534232700270230ustar00rootroot00000000000000spv.ext.ClosestHitShader_Subgroup.rchit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 67 Capability Int64 Capability GroupNonUniform Capability GroupNonUniformBallot Capability SubgroupBallotKHR Capability RayTracingKHR Capability VulkanMemoryModelKHR Capability ShaderSMBuiltinsNV Extension "SPV_KHR_ray_tracing" Extension "SPV_KHR_shader_ballot" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_shader_sm_builtins" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint ClosestHitKHR 4 "main" 8 26 28 34 43 48 53 61 Source GLSL 460 SourceExtension "GL_ARB_shader_ballot" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_KHR_shader_subgroup_ballot" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_NV_shader_sm_builtins" Name 4 "main" Name 8 "accEXT" Name 26 "incomingPayload" Name 28 "gl_SubgroupInvocationID" Name 34 "gl_SubGroupGeMaskARB" Name 43 "gl_SubgroupGtMask" Name 48 "gl_SubgroupLeMask" Name 53 "gl_SubGroupLtMaskARB" Name 61 "gl_SMIDNV" Decorate 8(accEXT) Binding 0 Decorate 8(accEXT) DescriptorSet 0 Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 29 RelaxedPrecision Decorate 30 RelaxedPrecision Decorate 34(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR Decorate 41 RelaxedPrecision Decorate 42 RelaxedPrecision Decorate 43(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 46 RelaxedPrecision Decorate 47 RelaxedPrecision Decorate 48(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 51 RelaxedPrecision Decorate 52 RelaxedPrecision Decorate 53(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR Decorate 59 RelaxedPrecision Decorate 60 RelaxedPrecision Decorate 61(gl_SMIDNV) BuiltIn SMIDNV 2: TypeVoid 3: TypeFunction 2 6: TypeAccelerationStructureKHR 7: TypePointer UniformConstant 6 8(accEXT): 7(ptr) Variable UniformConstant 10: TypeInt 32 0 11: 10(int) Constant 0 12: 10(int) Constant 1 13: 10(int) Constant 2 14: 10(int) Constant 3 15: TypeFloat 32 16: TypeVector 15(float) 3 17: 15(float) Constant 1056964608 18: 16(fvec3) ConstantComposite 17 17 17 19: 15(float) Constant 1065353216 20: 16(fvec3) ConstantComposite 19 19 19 21: 15(float) Constant 1061158912 22: TypeInt 32 1 23: 22(int) Constant 1 24: TypeVector 15(float) 4 25: TypePointer IncomingRayPayloadKHR 24(fvec4) 26(incomingPayload): 25(ptr) Variable IncomingRayPayloadKHR 27: TypePointer Input 10(int) 28(gl_SubgroupInvocationID): 27(ptr) Variable Input 31: TypeVector 10(int) 4 32: TypeInt 64 0 33: TypePointer Input 31(ivec4) 34(gl_SubGroupGeMaskARB): 33(ptr) Variable Input 38: TypeVector 10(int) 2 43(gl_SubgroupGtMask): 33(ptr) Variable Input 48(gl_SubgroupLeMask): 33(ptr) Variable Input 53(gl_SubGroupLtMaskARB): 33(ptr) Variable Input 61(gl_SMIDNV): 27(ptr) Variable Input 65: TypePointer IncomingRayPayloadKHR 15(float) 4(main): 2 Function None 3 5: Label 9: 6 Load 8(accEXT) TraceRayKHR 9 11 12 13 14 11 18 17 20 21 26(incomingPayload) 29: 10(int) Load 28(gl_SubgroupInvocationID) Volatile 30: 15(float) ConvertUToF 29 35: 31(ivec4) Load 34(gl_SubGroupGeMaskARB) 36: 10(int) CompositeExtract 35 0 37: 10(int) CompositeExtract 35 1 39: 38(ivec2) CompositeConstruct 36 37 40: 32(int64_t) Bitcast 39 41: 15(float) ConvertUToF 40 42: 15(float) FAdd 30 41 44: 31(ivec4) Load 43(gl_SubgroupGtMask) Volatile 45: 24(fvec4) ConvertUToF 44 46: 15(float) CompositeExtract 45 0 47: 15(float) FAdd 42 46 49: 31(ivec4) Load 48(gl_SubgroupLeMask) Volatile 50: 24(fvec4) ConvertUToF 49 51: 15(float) CompositeExtract 50 0 52: 15(float) FAdd 47 51 54: 31(ivec4) Load 53(gl_SubGroupLtMaskARB) 55: 10(int) CompositeExtract 54 0 56: 10(int) CompositeExtract 54 1 57: 38(ivec2) CompositeConstruct 55 56 58: 32(int64_t) Bitcast 57 59: 15(float) ConvertUToF 58 60: 15(float) FAdd 52 59 62: 10(int) Load 61(gl_SMIDNV) Volatile 63: 15(float) ConvertUToF 62 64: 15(float) FAdd 60 63 66: 65(ptr) AccessChain 26(incomingPayload) 11 Store 66 64 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.IntersectShader.rint.out000066400000000000000000000212261506534232700246530ustar00rootroot00000000000000spv.ext.IntersectShader.rint // Module Version 10400 // 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 73 76 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDEXT" Name 13 "v1" Name 14 "gl_LaunchSizeEXT" Name 18 "v2" Name 20 "gl_PrimitiveID" Name 22 "v3" Name 23 "gl_InstanceID" Name 25 "v4" Name 26 "gl_InstanceCustomIndexEXT" Name 31 "v5" Name 33 "gl_WorldRayOriginEXT" Name 35 "v6" Name 36 "gl_WorldRayDirectionEXT" Name 38 "v7" Name 39 "gl_ObjectRayOriginEXT" Name 41 "v8" Name 42 "gl_ObjectRayDirectionEXT" Name 45 "v9" Name 47 "gl_RayTminEXT" Name 49 "v10" Name 50 "gl_RayTmaxEXT" Name 54 "v11" Name 56 "gl_ObjectToWorldEXT" Name 58 "v12" Name 59 "gl_WorldToObjectEXT" Name 64 "v13" Name 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 Decorate 23(gl_InstanceID) BuiltIn InstanceId Decorate 26(gl_InstanceCustomIndexEXT) BuiltIn InstanceCustomIndexKHR Decorate 33(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR Decorate 36(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR Decorate 39(gl_ObjectRayOriginEXT) BuiltIn ObjectRayOriginKHR Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR Decorate 50(gl_RayTmaxEXT) Volatile Decorate 50(gl_RayTmaxEXT) Coherent Decorate 56(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 73(gl_CullMaskEXT) BuiltIn CullMaskKHR 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 14(gl_LaunchSizeEXT): 10(ptr) Variable Input 16: TypeInt 32 1 17: TypePointer Function 16(int) 19: TypePointer Input 16(int) 20(gl_PrimitiveID): 19(ptr) Variable Input 23(gl_InstanceID): 19(ptr) Variable Input 26(gl_InstanceCustomIndexEXT): 19(ptr) Variable Input 28: TypeFloat 32 29: TypeVector 28(float) 3 30: TypePointer Function 29(fvec3) 32: TypePointer Input 29(fvec3) 33(gl_WorldRayOriginEXT): 32(ptr) Variable Input 36(gl_WorldRayDirectionEXT): 32(ptr) Variable Input 39(gl_ObjectRayOriginEXT): 32(ptr) Variable Input 42(gl_ObjectRayDirectionEXT): 32(ptr) Variable Input 44: TypePointer Function 28(float) 46: TypePointer Input 28(float) 47(gl_RayTminEXT): 46(ptr) Variable Input 50(gl_RayTmaxEXT): 46(ptr) Variable Input 52: TypeMatrix 29(fvec3) 4 53: TypePointer Function 52 55: TypePointer Input 52 56(gl_ObjectToWorldEXT): 55(ptr) Variable Input 59(gl_WorldToObjectEXT): 55(ptr) Variable Input 61: TypeVector 28(float) 4 62: TypeMatrix 61(fvec4) 3 63: TypePointer Function 62 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 13(v1): 8(ptr) Variable Function 18(v2): 17(ptr) Variable Function 22(v3): 17(ptr) Variable Function 25(v4): 17(ptr) Variable Function 31(v5): 30(ptr) Variable Function 35(v6): 30(ptr) Variable Function 38(v7): 30(ptr) Variable Function 41(v8): 30(ptr) Variable Function 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 54(v11): 53(ptr) Variable Function 58(v12): 53(ptr) Variable Function 64(v13): 63(ptr) Variable Function 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) Store 13(v1) 15 21: 16(int) Load 20(gl_PrimitiveID) Store 18(v2) 21 24: 16(int) Load 23(gl_InstanceID) Store 22(v3) 24 27: 16(int) Load 26(gl_InstanceCustomIndexEXT) Store 25(v4) 27 34: 29(fvec3) Load 33(gl_WorldRayOriginEXT) Store 31(v5) 34 37: 29(fvec3) Load 36(gl_WorldRayDirectionEXT) Store 35(v6) 37 40: 29(fvec3) Load 39(gl_ObjectRayOriginEXT) Store 38(v7) 40 43: 29(fvec3) Load 42(gl_ObjectRayDirectionEXT) Store 41(v8) 43 48: 28(float) Load 47(gl_RayTminEXT) Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxEXT) Store 49(v10) 51 57: 52 Load 56(gl_ObjectToWorldEXT) Store 54(v11) 57 60: 52 Load 59(gl_WorldToObjectEXT) Store 58(v12) 60 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 glslang-16.0.0/Test/baseResults/spv.ext.IntersectShader_Errors.rint.out000066400000000000000000000007071506534232700262100ustar00rootroot00000000000000spv.ext.IntersectShader_Errors.rint ERROR: 0:3: 'rayPayloadInEXT' : not supported in this stage: intersection ERROR: 0:4: 'rayPayloadEXT' : not supported in this stage: intersection ERROR: 0:8: 'gl_HitTEXT' : undeclared identifier ERROR: 0:9: 'gl_HitKindEXT' : undeclared identifier ERROR: 0:10: 'traceRayEXT' : no matching overloaded function found ERROR: 5 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.MissShader.rmiss.out000066400000000000000000000227511506534232700240130ustar00rootroot00000000000000spv.ext.MissShader.rmiss // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 92 Capability MinLod Capability GroupNonUniform Capability GroupNonUniformBallot 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 37 41 56 57 62 67 78 82 87 91 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" SourceExtension "GL_NV_shader_sm_builtins" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDEXT" Name 13 "v1" Name 14 "gl_LaunchSizeEXT" Name 19 "v2" Name 21 "gl_WorldRayOriginEXT" Name 23 "v3" Name 24 "gl_WorldRayDirectionEXT" Name 27 "v4" Name 29 "gl_RayTminEXT" Name 31 "v5" Name 32 "gl_RayTmaxEXT" Name 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 87 "lodClamp" Name 91 "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 37(gl_CullMaskEXT) BuiltIn CullMaskKHR Decorate 41(accEXT) Binding 0 Decorate 41(accEXT) DescriptorSet 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) Binding 1 Decorate 78(s2D) DescriptorSet 0 Decorate 82(c2) Location 2 Decorate 87(lodClamp) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 14(gl_LaunchSizeEXT): 10(ptr) Variable Input 16: TypeFloat 32 17: TypeVector 16(float) 3 18: TypePointer Function 17(fvec3) 20: TypePointer Input 17(fvec3) 21(gl_WorldRayOriginEXT): 20(ptr) Variable Input 24(gl_WorldRayDirectionEXT): 20(ptr) Variable Input 26: TypePointer Function 16(float) 28: TypePointer Input 16(float) 29(gl_RayTminEXT): 28(ptr) Variable Input 32(gl_RayTmaxEXT): 28(ptr) Variable Input 34: 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 84: TypeVector 52(int) 2 85: 52(int) Constant 5 86: 84(ivec2) ConstantComposite 85 85 87(lodClamp): 28(ptr) Variable Input 90: TypePointer RayPayloadKHR 54(fvec4) 91(localPayload): 90(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function 13(v1): 8(ptr) Variable Function 19(v2): 18(ptr) Variable Function 23(v3): 18(ptr) Variable Function 27(v4): 26(ptr) Variable Function 31(v5): 26(ptr) Variable Function 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) Store 13(v1) 15 22: 17(fvec3) Load 21(gl_WorldRayOriginEXT) Store 19(v2) 22 25: 17(fvec3) Load 24(gl_WorldRayDirectionEXT) Store 23(v3) 25 30: 16(float) Load 29(gl_RayTminEXT) Store 27(v4) 30 33: 16(float) Load 32(gl_RayTmaxEXT) Store 31(v5) 33 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) 88: 16(float) Load 87(lodClamp) 89: 54(fvec4) ImageSampleExplicitLod 79 83 Grad ConstOffset MinLod 83 83 86 88 Store 74(texel) 89 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out000066400000000000000000000023421506534232700253410ustar00rootroot00000000000000spv.ext.MissShader_Errors.rmiss ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: miss ERROR: 0:6: 'gl_PrimitiveID' : undeclared identifier ERROR: 0:6: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:7: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) ERROR: 0:7: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:8: 'gl_InstanceCustomIndexEXT' : undeclared identifier ERROR: 0:8: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:9: 'gl_ObjectToWorldEXT' : undeclared identifier ERROR: 0:9: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:10: 'gl_WorldToObjectEXT' : undeclared identifier ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:11: 'gl_HitTEXT' : undeclared identifier ERROR: 0:12: 'gl_HitKindEXT' : undeclared identifier ERROR: 0:13: 'reportIntersectionEXT' : no matching overloaded function found ERROR: 0:14: 'ignoreIntersectionEXT' : not supported in this stage: miss ERROR: 0:15: 'terminateRayEXT' : not supported in this stage: miss ERROR: 16 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.RayCallable.rcall.out000066400000000000000000000055221506534232700240610ustar00rootroot00000000000000spv.ext.RayCallable.rcall // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 30 Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint CallableKHR 4 "main" 11 14 18 29 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 9 "id" Name 11 "gl_LaunchIDEXT" Name 13 "size" Name 14 "gl_LaunchSizeEXT" Name 16 "dataBlock" MemberName 16(dataBlock) 0 "data1" Name 18 "" Name 29 "data0" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 16(dataBlock) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: TypePointer Input 7(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 14(gl_LaunchSizeEXT): 10(ptr) Variable Input 16(dataBlock): TypeStruct 6(int) 17: TypePointer IncomingCallableDataKHR 16(dataBlock) 18: 17(ptr) Variable IncomingCallableDataKHR 19: TypeInt 32 1 20: 19(int) Constant 0 21: 6(int) Constant 256 22: TypePointer IncomingCallableDataKHR 6(int) 24: 6(int) Constant 2 25: 19(int) Constant 1 26: TypeFloat 32 27: TypeVector 26(float) 4 28: TypePointer CallableDataKHR 27(fvec4) 29(data0): 28(ptr) Variable CallableDataKHR 4(main): 2 Function None 3 5: Label 9(id): 8(ptr) Variable Function 13(size): 8(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(id) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) Store 13(size) 15 23: 22(ptr) AccessChain 18 20 Store 23 21 ExecuteCallableKHR 24 18 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out000066400000000000000000000046201506534232700254130ustar00rootroot00000000000000spv.ext.RayCallable_Errors.rcall ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: callable ERROR: 0:4: 'rayPayloadEXT' : not supported in this stage: callable ERROR: 0:5: 'rayPayloadInEXT' : not supported in this stage: callable ERROR: 0:7: 'location' : overlapping use of location 0 ERROR: 0:10: 'gl_PrimitiveID' : undeclared identifier ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:11: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) ERROR: 0:11: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:12: 'gl_InstanceCustomIndexEXT' : undeclared identifier ERROR: 0:12: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:13: 'gl_WorldRayOriginEXT' : undeclared identifier ERROR: 0:13: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:14: 'gl_WorldRayDirectionEXT' : undeclared identifier ERROR: 0:14: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:15: 'gl_ObjectRayOriginEXT' : undeclared identifier ERROR: 0:15: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:16: 'gl_ObjectRayDirectionEXT' : undeclared identifier ERROR: 0:16: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:17: 'gl_RayTminEXT' : undeclared identifier ERROR: 0:18: 'gl_RayTmaxEXT' : undeclared identifier ERROR: 0:19: 'gl_ObjectToWorldEXT' : undeclared identifier ERROR: 0:19: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:20: 'gl_WorldToObjectEXT' : undeclared identifier ERROR: 0:20: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:21: 'gl_HitTEXT' : undeclared identifier ERROR: 0:22: 'gl_HitKindEXT' : undeclared identifier ERROR: 0:23: 'gl_IncomingRayFlagsEXT' : undeclared identifier ERROR: 0:23: '=' : cannot convert from ' temp float' to ' temp highp uint' ERROR: 0:24: 'reportIntersectionEXT' : no matching overloaded function found ERROR: 0:25: 'ignoreIntersectionEXT' : not supported in this stage: callable ERROR: 0:26: 'terminateRayEXT' : not supported in this stage: callable ERROR: 0:27: 'no callableDataEXT/callableDataInEXT declared' : with layout(location = 1) ERROR: 32 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.RayConstants.rgen.out000066400000000000000000000041751506534232700241770ustar00rootroot00000000000000spv.ext.RayConstants.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 27 Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 8 26 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 8 "accEXT" Name 26 "payload" Decorate 8(accEXT) Binding 0 Decorate 8(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeAccelerationStructureKHR 7: TypePointer UniformConstant 6 8(accEXT): 7(ptr) Variable UniformConstant 10: TypeInt 32 0 11: 10(int) Constant 255 12: 10(int) Constant 0 13: 10(int) Constant 1 14: TypeFloat 32 15: TypeVector 14(float) 3 16: 14(float) Constant 0 17: 15(fvec3) ConstantComposite 16 16 16 18: 14(float) Constant 1056964608 19: 14(float) Constant 1065353216 20: 15(fvec3) ConstantComposite 19 19 19 21: 14(float) Constant 1061158912 22: TypeInt 32 1 23: 22(int) Constant 1 24: TypeVector 14(float) 4 25: TypePointer RayPayloadKHR 24(fvec4) 26(payload): 25(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9: 6 Load 8(accEXT) TraceRayKHR 9 11 12 13 13 12 17 18 20 21 26(payload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out000066400000000000000000000154211506534232700245370ustar00rootroot00000000000000spv.ext.RayGenSBTlayout.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 74 Capability Int64 Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 38 60 Source GLSL 460 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDEXT" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 36 "block" MemberName 36(block) 0 "dir" MemberName 36(block) 1 "origin" MemberName 36(block) 2 "i" MemberName 36(block) 3 "aHandle32" MemberName 36(block) 4 "aHandle64" MemberName 36(block) 5 "arr2" MemberName 36(block) 6 "a" MemberName 36(block) 7 "arr3" MemberName 36(block) 8 "packme" MemberName 36(block) 9 "b" MemberName 36(block) 10 "c" Name 38 "" Name 60 "payload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 34 ArrayStride 8 Decorate 35 ArrayStride 16 Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 16 MemberDecorate 36(block) 2 Offset 28 MemberDecorate 36(block) 3 Offset 32 MemberDecorate 36(block) 4 Offset 40 MemberDecorate 36(block) 5 Offset 48 MemberDecorate 36(block) 6 Offset 64 MemberDecorate 36(block) 7 Offset 80 MemberDecorate 36(block) 8 Offset 112 MemberDecorate 36(block) 9 Offset 120 MemberDecorate 36(block) 10 Offset 128 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeEXT): 10(ptr) Variable Input 27: TypeFloat 32 28: TypeVector 27(float) 3 29: TypeInt 32 1 30: TypeVector 6(int) 2 31: TypeInt 64 0 32: TypeVector 27(float) 2 33: 6(int) Constant 2 34: TypeArray 32(fvec2) 33 35: TypeArray 28(fvec3) 33 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float) 37: TypePointer ShaderRecordBufferKHR 36(block) 38: 37(ptr) Variable ShaderRecordBufferKHR 39: 29(int) Constant 3 40: TypePointer ShaderRecordBufferKHR 30(ivec2) 43: TypeAccelerationStructureKHR 49: 29(int) Constant 1 50: TypePointer ShaderRecordBufferKHR 28(fvec3) 53: 27(float) Constant 1056964608 54: 29(int) Constant 0 57: 27(float) Constant 1061158912 58: TypeVector 27(float) 4 59: TypePointer RayPayloadKHR 58(fvec4) 60(payload): 59(ptr) Variable RayPayloadKHR 61: 29(int) Constant 4 62: TypePointer ShaderRecordBufferKHR 31(int64_t) 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 41: 40(ptr) AccessChain 38 39 42: 30(ivec2) Load 41 44: 43 ConvertUToAccelerationStructureKHR 42 45: 6(int) Load 8(lx) 46: 6(int) Load 16(ly) 47: 6(int) Load 20(sx) 48: 6(int) Load 24(sy) 51: 50(ptr) AccessChain 38 49 52: 28(fvec3) Load 51 55: 50(ptr) AccessChain 38 54 56: 28(fvec3) Load 55 TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload) 63: 62(ptr) AccessChain 38 61 64: 31(int64_t) Load 63 65: 43 ConvertUToAccelerationStructureKHR 64 66: 6(int) Load 8(lx) 67: 6(int) Load 16(ly) 68: 6(int) Load 20(sx) 69: 6(int) Load 24(sy) 70: 50(ptr) AccessChain 38 49 71: 28(fvec3) Load 70 72: 50(ptr) AccessChain 38 54 73: 28(fvec3) Load 72 TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out000066400000000000000000000154241506534232700247670ustar00rootroot00000000000000spv.ext.RayGenSBTlayout140.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 74 Capability Int64 Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 38 60 Source GLSL 460 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDEXT" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 36 "block" MemberName 36(block) 0 "dir" MemberName 36(block) 1 "origin" MemberName 36(block) 2 "i" MemberName 36(block) 3 "aHandle32" MemberName 36(block) 4 "aHandle64" MemberName 36(block) 5 "arr" MemberName 36(block) 6 "a" MemberName 36(block) 7 "arr3" MemberName 36(block) 8 "packme" MemberName 36(block) 9 "b" MemberName 36(block) 10 "c" Name 38 "" Name 60 "payload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 34 ArrayStride 16 Decorate 35 ArrayStride 16 Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 16 MemberDecorate 36(block) 2 Offset 28 MemberDecorate 36(block) 3 Offset 32 MemberDecorate 36(block) 4 Offset 40 MemberDecorate 36(block) 5 Offset 48 MemberDecorate 36(block) 6 Offset 80 MemberDecorate 36(block) 7 Offset 96 MemberDecorate 36(block) 8 Offset 128 MemberDecorate 36(block) 9 Offset 136 MemberDecorate 36(block) 10 Offset 144 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeEXT): 10(ptr) Variable Input 27: TypeFloat 32 28: TypeVector 27(float) 3 29: TypeInt 32 1 30: TypeVector 6(int) 2 31: TypeInt 64 0 32: TypeVector 27(float) 2 33: 6(int) Constant 2 34: TypeArray 32(fvec2) 33 35: TypeArray 28(fvec3) 33 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float) 37: TypePointer ShaderRecordBufferKHR 36(block) 38: 37(ptr) Variable ShaderRecordBufferKHR 39: 29(int) Constant 3 40: TypePointer ShaderRecordBufferKHR 30(ivec2) 43: TypeAccelerationStructureKHR 49: 29(int) Constant 1 50: TypePointer ShaderRecordBufferKHR 28(fvec3) 53: 27(float) Constant 1056964608 54: 29(int) Constant 0 57: 27(float) Constant 1061158912 58: TypeVector 27(float) 4 59: TypePointer RayPayloadKHR 58(fvec4) 60(payload): 59(ptr) Variable RayPayloadKHR 61: 29(int) Constant 4 62: TypePointer ShaderRecordBufferKHR 31(int64_t) 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 41: 40(ptr) AccessChain 38 39 42: 30(ivec2) Load 41 44: 43 ConvertUToAccelerationStructureKHR 42 45: 6(int) Load 8(lx) 46: 6(int) Load 16(ly) 47: 6(int) Load 20(sx) 48: 6(int) Load 24(sy) 51: 50(ptr) AccessChain 38 49 52: 28(fvec3) Load 51 55: 50(ptr) AccessChain 38 54 56: 28(fvec3) Load 55 TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload) 63: 62(ptr) AccessChain 38 61 64: 31(int64_t) Load 63 65: 43 ConvertUToAccelerationStructureKHR 64 66: 6(int) Load 8(lx) 67: 6(int) Load 16(ly) 68: 6(int) Load 20(sx) 69: 6(int) Load 24(sy) 70: 50(ptr) AccessChain 38 49 71: 28(fvec3) Load 70 72: 50(ptr) AccessChain 38 54 73: 28(fvec3) Load 72 TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out000066400000000000000000000154231506534232700247700ustar00rootroot00000000000000spv.ext.RayGenSBTlayout430.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 74 Capability Int64 Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 38 60 Source GLSL 460 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDEXT" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 36 "block" MemberName 36(block) 0 "dir" MemberName 36(block) 1 "origin" MemberName 36(block) 2 "i" MemberName 36(block) 3 "aHandle32" MemberName 36(block) 4 "aHandle64" MemberName 36(block) 5 "arr" MemberName 36(block) 6 "a" MemberName 36(block) 7 "arr3" MemberName 36(block) 8 "packme" MemberName 36(block) 9 "b" MemberName 36(block) 10 "c" Name 38 "" Name 60 "payload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 34 ArrayStride 8 Decorate 35 ArrayStride 16 Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 16 MemberDecorate 36(block) 2 Offset 28 MemberDecorate 36(block) 3 Offset 32 MemberDecorate 36(block) 4 Offset 40 MemberDecorate 36(block) 5 Offset 48 MemberDecorate 36(block) 6 Offset 64 MemberDecorate 36(block) 7 Offset 80 MemberDecorate 36(block) 8 Offset 112 MemberDecorate 36(block) 9 Offset 120 MemberDecorate 36(block) 10 Offset 128 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeEXT): 10(ptr) Variable Input 27: TypeFloat 32 28: TypeVector 27(float) 3 29: TypeInt 32 1 30: TypeVector 6(int) 2 31: TypeInt 64 0 32: TypeVector 27(float) 2 33: 6(int) Constant 2 34: TypeArray 32(fvec2) 33 35: TypeArray 28(fvec3) 33 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float) 37: TypePointer ShaderRecordBufferKHR 36(block) 38: 37(ptr) Variable ShaderRecordBufferKHR 39: 29(int) Constant 3 40: TypePointer ShaderRecordBufferKHR 30(ivec2) 43: TypeAccelerationStructureKHR 49: 29(int) Constant 1 50: TypePointer ShaderRecordBufferKHR 28(fvec3) 53: 27(float) Constant 1056964608 54: 29(int) Constant 0 57: 27(float) Constant 1061158912 58: TypeVector 27(float) 4 59: TypePointer RayPayloadKHR 58(fvec4) 60(payload): 59(ptr) Variable RayPayloadKHR 61: 29(int) Constant 4 62: TypePointer ShaderRecordBufferKHR 31(int64_t) 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 41: 40(ptr) AccessChain 38 39 42: 30(ivec2) Load 41 44: 43 ConvertUToAccelerationStructureKHR 42 45: 6(int) Load 8(lx) 46: 6(int) Load 16(ly) 47: 6(int) Load 20(sx) 48: 6(int) Load 24(sy) 51: 50(ptr) AccessChain 38 49 52: 28(fvec3) Load 51 55: 50(ptr) AccessChain 38 54 56: 28(fvec3) Load 55 TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload) 63: 62(ptr) AccessChain 38 61 64: 31(int64_t) Load 63 65: 43 ConvertUToAccelerationStructureKHR 64 66: 6(int) Load 8(lx) 67: 6(int) Load 16(ly) 68: 6(int) Load 20(sx) 69: 6(int) Load 24(sy) 70: 50(ptr) AccessChain 38 49 71: 28(fvec3) Load 70 72: 50(ptr) AccessChain 38 54 73: 28(fvec3) Load 72 TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out000066400000000000000000000155401506534232700257270ustar00rootroot00000000000000spv.ext.RayGenSBTlayoutscalar.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 74 Capability Int64 Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 38 60 Source GLSL 460 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_EXT_scalar_block_layout" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDEXT" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 36 "block" MemberName 36(block) 0 "dir" MemberName 36(block) 1 "origin" MemberName 36(block) 2 "i" MemberName 36(block) 3 "aHandle32" MemberName 36(block) 4 "aHandle64" MemberName 36(block) 5 "arr" MemberName 36(block) 6 "a" MemberName 36(block) 7 "arr3" MemberName 36(block) 8 "packme" MemberName 36(block) 9 "b" MemberName 36(block) 10 "c" Name 38 "" Name 60 "payload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 34 ArrayStride 8 Decorate 35 ArrayStride 12 Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 12 MemberDecorate 36(block) 2 Offset 24 MemberDecorate 36(block) 3 Offset 28 MemberDecorate 36(block) 4 Offset 40 MemberDecorate 36(block) 5 Offset 48 MemberDecorate 36(block) 6 Offset 64 MemberDecorate 36(block) 7 Offset 68 MemberDecorate 36(block) 8 Offset 92 MemberDecorate 36(block) 9 Offset 96 MemberDecorate 36(block) 10 Offset 104 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeEXT): 10(ptr) Variable Input 27: TypeFloat 32 28: TypeVector 27(float) 3 29: TypeInt 32 1 30: TypeVector 6(int) 2 31: TypeInt 64 0 32: TypeVector 27(float) 2 33: 6(int) Constant 2 34: TypeArray 32(fvec2) 33 35: TypeArray 28(fvec3) 33 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float) 37: TypePointer ShaderRecordBufferKHR 36(block) 38: 37(ptr) Variable ShaderRecordBufferKHR 39: 29(int) Constant 3 40: TypePointer ShaderRecordBufferKHR 30(ivec2) 43: TypeAccelerationStructureKHR 49: 29(int) Constant 1 50: TypePointer ShaderRecordBufferKHR 28(fvec3) 53: 27(float) Constant 1056964608 54: 29(int) Constant 0 57: 27(float) Constant 1061158912 58: TypeVector 27(float) 4 59: TypePointer RayPayloadKHR 58(fvec4) 60(payload): 59(ptr) Variable RayPayloadKHR 61: 29(int) Constant 4 62: TypePointer ShaderRecordBufferKHR 31(int64_t) 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 41: 40(ptr) AccessChain 38 39 42: 30(ivec2) Load 41 44: 43 ConvertUToAccelerationStructureKHR 42 45: 6(int) Load 8(lx) 46: 6(int) Load 16(ly) 47: 6(int) Load 20(sx) 48: 6(int) Load 24(sy) 51: 50(ptr) AccessChain 38 49 52: 28(fvec3) Load 51 55: 50(ptr) AccessChain 38 54 56: 28(fvec3) Load 55 TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload) 63: 62(ptr) AccessChain 38 61 64: 31(int64_t) Load 63 65: 43 ConvertUToAccelerationStructureKHR 64 66: 6(int) Load 8(lx) 67: 6(int) Load 16(ly) 68: 6(int) Load 20(sx) 69: 6(int) Load 24(sy) 70: 50(ptr) AccessChain 38 49 71: 28(fvec3) Load 70 72: 50(ptr) AccessChain 38 54 73: 28(fvec3) Load 72 TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayGenShader.rgen.out000066400000000000000000000126711506534232700240630ustar00rootroot00000000000000spv.ext.RayGenShader.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 58 Capability RayTraversalPrimitiveCullingKHR Capability RayTracingKHR Capability RayTracingOpacityMicromapEXT Extension "SPV_EXT_opacity_micromap" Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" 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" Name 8 "lx" Name 11 "gl_LaunchIDEXT" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 29 "accEXT0" Name 38 "block" MemberName 38(block) 0 "dir" MemberName 38(block) 1 "origin" Name 40 "" Name 53 "payload" Name 54 "accEXT1" Name 57 "imageu" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 29(accEXT0) Binding 0 Decorate 29(accEXT0) DescriptorSet 0 Decorate 38(block) Block MemberDecorate 38(block) 0 Offset 0 MemberDecorate 38(block) 1 Offset 16 Decorate 54(accEXT1) Binding 1 Decorate 54(accEXT1) DescriptorSet 0 Decorate 57(imageu) Binding 2 Decorate 57(imageu) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeEXT): 10(ptr) Variable Input 27: TypeAccelerationStructureKHR 28: TypePointer UniformConstant 27 29(accEXT0): 28(ptr) Variable UniformConstant 35: 6(int) Constant 1792 36: TypeFloat 32 37: TypeVector 36(float) 3 38(block): TypeStruct 37(fvec3) 37(fvec3) 39: TypePointer ShaderRecordBufferKHR 38(block) 40: 39(ptr) Variable ShaderRecordBufferKHR 41: TypeInt 32 1 42: 41(int) Constant 1 43: TypePointer ShaderRecordBufferKHR 37(fvec3) 46: 36(float) Constant 1056964608 47: 41(int) Constant 0 50: 36(float) Constant 1061158912 51: TypeVector 36(float) 4 52: TypePointer RayPayloadKHR 51(fvec4) 53(payload): 52(ptr) Variable RayPayloadKHR 54(accEXT1): 28(ptr) Variable UniformConstant 55: TypeImage 6(int) 2D nonsampled format:R32ui 56: TypePointer UniformConstant 55 57(imageu): 56(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 30: 27 Load 29(accEXT0) 31: 6(int) Load 8(lx) 32: 6(int) Load 16(ly) 33: 6(int) Load 20(sx) 34: 6(int) Load 24(sy) 44: 43(ptr) AccessChain 40 42 45: 37(fvec3) Load 44 48: 43(ptr) AccessChain 40 47 49: 37(fvec3) Load 48 TraceRayKHR 30 31 32 33 34 35 45 46 49 50 53(payload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayGenShader11.rgen.out000066400000000000000000000107011506534232700242150ustar00rootroot00000000000000spv.ext.RayGenShader11.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 53 Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 29 39 52 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDEXT" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 29 "accEXT" Name 37 "block" MemberName 37(block) 0 "dir" MemberName 37(block) 1 "origin" Name 39 "" Name 52 "payload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 29(accEXT) Binding 0 Decorate 29(accEXT) DescriptorSet 0 Decorate 37(block) Block MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeEXT): 10(ptr) Variable Input 27: TypeAccelerationStructureKHR 28: TypePointer UniformConstant 27 29(accEXT): 28(ptr) Variable UniformConstant 35: TypeFloat 32 36: TypeVector 35(float) 3 37(block): TypeStruct 36(fvec3) 36(fvec3) 38: TypePointer ShaderRecordBufferKHR 37(block) 39: 38(ptr) Variable ShaderRecordBufferKHR 40: TypeInt 32 1 41: 40(int) Constant 1 42: TypePointer ShaderRecordBufferKHR 36(fvec3) 45: 35(float) Constant 1056964608 46: 40(int) Constant 0 49: 35(float) Constant 1061158912 50: TypeVector 35(float) 4 51: TypePointer RayPayloadKHR 50(fvec4) 52(payload): 51(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 30: 27 Load 29(accEXT) 31: 6(int) Load 8(lx) 32: 6(int) Load 16(ly) 33: 6(int) Load 20(sx) 34: 6(int) Load 24(sy) 43: 42(ptr) AccessChain 39 41 44: 36(fvec3) Load 43 47: 42(ptr) AccessChain 39 46 48: 36(fvec3) Load 47 TraceRayKHR 30 31 32 33 34 12 44 45 48 49 52(payload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out000066400000000000000000000215401506534232700250550ustar00rootroot00000000000000spv.ext.RayGenShaderArray.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 117 Capability Int64 Capability RayTracingKHR Capability ShaderNonUniformEXT Capability RuntimeDescriptorArrayEXT Extension "SPV_EXT_descriptor_indexing" Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 30 38 61 65 Source GLSL 460 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 8 "lx" Name 11 "gl_LaunchIDEXT" Name 16 "ly" Name 20 "sx" Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 30 "accEXT0" Name 36 "block" MemberName 36(block) 0 "dir" MemberName 36(block) 1 "origin" MemberName 36(block) 2 "i" MemberName 36(block) 3 "aHandle32" MemberName 36(block) 4 "aHandle64" Name 38 "" Name 61 "payload" Name 65 "accEXT1" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 30(accEXT0) Binding 0 Decorate 30(accEXT0) DescriptorSet 0 Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 16 MemberDecorate 36(block) 2 Offset 28 MemberDecorate 36(block) 3 Offset 32 MemberDecorate 36(block) 4 Offset 40 Decorate 65(accEXT1) Binding 1 Decorate 65(accEXT1) DescriptorSet 0 Decorate 80 DecorationNonUniformEXT Decorate 81 DecorationNonUniformEXT Decorate 82 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeVector 6(int) 3 10: TypePointer Input 9(ivec3) 11(gl_LaunchIDEXT): 10(ptr) Variable Input 12: 6(int) Constant 0 13: TypePointer Input 6(int) 17: 6(int) Constant 1 21(gl_LaunchSizeEXT): 10(ptr) Variable Input 27: TypeAccelerationStructureKHR 28: TypeRuntimeArray 27 29: TypePointer UniformConstant 28 30(accEXT0): 29(ptr) Variable UniformConstant 31: TypeFloat 32 32: TypeVector 31(float) 3 33: TypeInt 32 1 34: TypeVector 6(int) 2 35: TypeInt 64 0 36(block): TypeStruct 32(fvec3) 32(fvec3) 33(int) 34(ivec2) 35(int64_t) 37: TypePointer ShaderRecordBufferKHR 36(block) 38: 37(ptr) Variable ShaderRecordBufferKHR 39: 33(int) Constant 2 40: TypePointer ShaderRecordBufferKHR 33(int) 43: TypePointer UniformConstant 27 50: 33(int) Constant 1 51: TypePointer ShaderRecordBufferKHR 32(fvec3) 54: 31(float) Constant 1056964608 55: 33(int) Constant 0 58: 31(float) Constant 1061158912 59: TypeVector 31(float) 4 60: TypePointer RayPayloadKHR 59(fvec4) 61(payload): 60(ptr) Variable RayPayloadKHR 62: 6(int) Constant 2 63: TypeArray 27 62 64: TypePointer UniformConstant 63 65(accEXT1): 64(ptr) Variable UniformConstant 91: 33(int) Constant 3 92: TypePointer ShaderRecordBufferKHR 34(ivec2) 104: 33(int) Constant 4 105: TypePointer ShaderRecordBufferKHR 35(int64_t) 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function 16(ly): 7(ptr) Variable Function 20(sx): 7(ptr) Variable Function 24(sy): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 15: 6(int) Load 14 Store 8(lx) 15 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 19: 6(int) Load 18 Store 16(ly) 19 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 23: 6(int) Load 22 Store 20(sx) 23 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 41: 40(ptr) AccessChain 38 39 42: 33(int) Load 41 44: 43(ptr) AccessChain 30(accEXT0) 42 45: 27 Load 44 46: 6(int) Load 8(lx) 47: 6(int) Load 16(ly) 48: 6(int) Load 20(sx) 49: 6(int) Load 24(sy) 52: 51(ptr) AccessChain 38 50 53: 32(fvec3) Load 52 56: 51(ptr) AccessChain 38 55 57: 32(fvec3) Load 56 TraceRayKHR 45 46 47 48 49 12 53 54 57 58 61(payload) 66: 40(ptr) AccessChain 38 39 67: 33(int) Load 66 68: 43(ptr) AccessChain 65(accEXT1) 67 69: 27 Load 68 70: 6(int) Load 8(lx) 71: 6(int) Load 16(ly) 72: 6(int) Load 20(sx) 73: 6(int) Load 24(sy) 74: 51(ptr) AccessChain 38 50 75: 32(fvec3) Load 74 76: 51(ptr) AccessChain 38 55 77: 32(fvec3) Load 76 TraceRayKHR 69 70 71 72 73 12 75 54 77 58 61(payload) 78: 40(ptr) AccessChain 38 39 79: 33(int) Load 78 80: 33(int) CopyObject 79 81: 43(ptr) AccessChain 30(accEXT0) 80 82: 27 Load 81 83: 6(int) Load 8(lx) 84: 6(int) Load 16(ly) 85: 6(int) Load 20(sx) 86: 6(int) Load 24(sy) 87: 51(ptr) AccessChain 38 50 88: 32(fvec3) Load 87 89: 51(ptr) AccessChain 38 55 90: 32(fvec3) Load 89 TraceRayKHR 82 83 84 85 86 12 88 54 90 58 61(payload) 93: 92(ptr) AccessChain 38 91 94: 34(ivec2) Load 93 95: 27 ConvertUToAccelerationStructureKHR 94 96: 6(int) Load 8(lx) 97: 6(int) Load 16(ly) 98: 6(int) Load 20(sx) 99: 6(int) Load 24(sy) 100: 51(ptr) AccessChain 38 50 101: 32(fvec3) Load 100 102: 51(ptr) AccessChain 38 55 103: 32(fvec3) Load 102 TraceRayKHR 95 96 97 98 99 12 101 54 103 58 61(payload) 106: 105(ptr) AccessChain 38 104 107: 35(int64_t) Load 106 108: 27 ConvertUToAccelerationStructureKHR 107 109: 6(int) Load 8(lx) 110: 6(int) Load 16(ly) 111: 6(int) Load 20(sx) 112: 6(int) Load 24(sy) 113: 51(ptr) AccessChain 38 50 114: 32(fvec3) Load 113 115: 51(ptr) AccessChain 38 55 116: 32(fvec3) Load 115 TraceRayKHR 108 109 110 111 112 12 114 54 116 58 61(payload) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out000066400000000000000000000056521506534232700254200ustar00rootroot00000000000000spv.ext.RayGenShader_Errors.rgen ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: ray-generation ERROR: 0:4: 'rayPayloadInEXT' : not supported in this stage: ray-generation ERROR: 0:5: 'shaderRecordNV' : can only be used with a buffer ERROR: 0:9: 'binding' : cannot be used with shaderRecordNV ERROR: 0:12: 'set' : cannot be used with shaderRecordNV ERROR: 0:23: ' temp accelerationStructureNV' : cannot construct with these arguments ERROR: 0:23: 'accelerationStructureNV' : accelerationStructureNV can only be used in uniform variables or function parameters: a ERROR: 0:23: '=' : cannot convert from ' const float' to ' temp accelerationStructureNV' ERROR: 0:24: 'gl_PrimitiveID' : undeclared identifier ERROR: 0:24: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:25: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) ERROR: 0:25: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:26: 'gl_InstanceCustomIndexEXT' : undeclared identifier ERROR: 0:26: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:27: 'gl_WorldRayOriginEXT' : undeclared identifier ERROR: 0:27: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:28: 'gl_WorldRayDirectionEXT' : undeclared identifier ERROR: 0:28: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:29: 'gl_ObjectRayOriginEXT' : undeclared identifier ERROR: 0:29: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:30: 'gl_ObjectRayDirectionEXT' : undeclared identifier ERROR: 0:30: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' ERROR: 0:31: 'gl_RayTminEXT' : undeclared identifier ERROR: 0:32: 'gl_RayTmaxEXT' : undeclared identifier ERROR: 0:33: 'gl_ObjectToWorldEXT' : undeclared identifier ERROR: 0:33: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:34: 'gl_WorldToObjectEXT' : undeclared identifier ERROR: 0:34: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:35: 'gl_HitTEXT' : undeclared identifier ERROR: 0:36: 'gl_HitKindEXT' : undeclared identifier ERROR: 0:37: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling ERROR: 0:37: '=' : cannot convert from ' const uint' to ' temp highp int' ERROR: 0:38: 'reportIntersectionEXT' : no matching overloaded function found ERROR: 0:39: 'ignoreIntersectionEXT' : not supported in this stage: ray-generation ERROR: 0:40: 'terminateRayEXT' : not supported in this stage: ray-generation ERROR: 0:41: 'assign' : l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer) ERROR: 36 compilation errors. No code generated. ERROR: Linking ray-generation stage: Only one shaderRecordNV buffer block is allowed per stage SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.RayPrimCull_Errors.rgen.out000066400000000000000000000007121506534232700252770ustar00rootroot00000000000000spv.ext.RayPrimCull_Errors.rgen ERROR: 0:3: 'primitive culling' : required extension not requested: GL_EXT_ray_flags_primitive_culling ERROR: 0:5: 'primitive_culling' : layout qualifier cannot have storage qualifiers ERROR: 0:6: 'primitive_culling' : can only be applied as standalone ERROR: 0:7: 'primitive_culling' : can only be applied as standalone ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.RayQueryDecl.frag.out000066400000000000000000000036601506534232700241020ustar00rootroot00000000000000spv.ext.RayQueryDecl.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader Capability RayQueryKHR Extension "SPV_KHR_ray_query" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 14 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_GOOGLE_cpp_style_line_directive" SourceExtension "GL_GOOGLE_include_directive" Name 4 "main" Name 9 "outColor" Name 14 "rq" Decorate 9(outColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(outColor): 8(ptr) Variable Output 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeRayQueryKHR 13: TypePointer Private 12 14(rq): 13(ptr) Variable Private 4(main): 2 Function None 3 5: Label Store 9(outColor) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.ShaderTileImage.color.frag.out000066400000000000000000000035601506534232700256340ustar00rootroot00000000000000spv.ext.ShaderTileImage.color.frag WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader Capability TileImageColorReadAccessEXT Extension "SPV_EXT_shader_tile_image" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_shader_tile_image" Name 4 "main" Name 9 "out_color" Name 12 "in_color" Decorate 9(out_color) Location 0 Decorate 12(in_color) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(out_color): 8(ptr) Variable Output 10: TypeImage 6(float) TileImageDataEXT nonsampled format:Unknown 11: TypePointer TileImageEXT 10 12(in_color): 11(ptr) Variable TileImageEXT 4(main): 2 Function None 3 5: Label 13: 10 Load 12(in_color) 14: 7(fvec4) ColorAttachmentReadEXT 13 Store 9(out_color) 14 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.ShaderTileImage.depth_stencil.frag.out000066400000000000000000000054221506534232700273420ustar00rootroot00000000000000spv.ext.ShaderTileImage.depth_stencil.frag WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader Capability TileImageDepthReadAccessEXT Capability TileImageStencilReadAccessEXT Extension "SPV_EXT_shader_tile_image" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 16 22 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_shader_tile_image" Name 4 "main" Name 8 "depth" Name 12 "stencil_value" Name 16 "stencil_out" Name 22 "depth_out" Decorate 13 RelaxedPrecision Decorate 16(stencil_out) Location 0 Decorate 22(depth_out) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 10: TypeInt 32 0 11: TypePointer Function 10(int) 14: TypeVector 10(int) 4 15: TypePointer Output 14(ivec4) 16(stencil_out): 15(ptr) Variable Output 18: 10(int) Constant 0 20: TypeVector 6(float) 4 21: TypePointer Output 20(fvec4) 22(depth_out): 21(ptr) Variable Output 24: 6(float) Constant 0 4(main): 2 Function None 3 5: Label 8(depth): 7(ptr) Variable Function 12(stencil_value): 11(ptr) Variable Function 9: 6(float) DepthAttachmentReadEXT Store 8(depth) 9 13: 10(int) StencilAttachmentReadEXT Store 12(stencil_value) 13 17: 10(int) Load 12(stencil_value) 19: 14(ivec4) CompositeConstruct 17 18 18 18 Store 16(stencil_out) 19 23: 6(float) Load 8(depth) 25: 20(fvec4) CompositeConstruct 23 24 24 24 Store 22(depth_out) 25 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.ShaderTileImage.overlap.frag.out000066400000000000000000000003021506534232700261550ustar00rootroot00000000000000spv.ext.ShaderTileImage.overlap.frag ERROR: 0:8: 'location' : overlapping use of location 1 ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.ShaderTileImage.subpassinput.frag.out000066400000000000000000000003431506534232700272520ustar00rootroot00000000000000spv.ext.ShaderTileImage.subpassinput.frag ERROR: 0:6: 'subpassInput' : cannot be used with GL_EXT_shader_tile_image enabled ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out000066400000000000000000000004101506534232700272140ustar00rootroot00000000000000spv.ext.ShaderTileImage.typemismatch.frag ERROR: 0:7: 'location' : the aliases sharing the location 0 must be the same basic type and interpolation qualification ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.ShaderTileImage.wronglayout.frag.out000066400000000000000000000006521506534232700271070ustar00rootroot00000000000000spv.ext.ShaderTileImage.wronglayout.frag ERROR: 0:7: 'binding' : requires uniform or buffer or tile image storage qualifier ERROR: 0:7: 'set' : cannot be used with tileImageEXT ERROR: 0:7: 'tileImageEXT' : can only be used with an explicit location ERROR: 0:7: 'input_attachment_index' : can only be used with a subpass ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.World3x4.rahit.out000066400000000000000000000156241506534232700233520ustar00rootroot00000000000000spv.ext.World3x4.rahit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 90 Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint AnyHitKHR 4 "main" 43 60 78 87 89 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 8 "k" Name 12 "ndx" Name 14 "col" Name 25 "row" Name 39 "p" Name 43 "gl_LaunchIDEXT" Name 53 "r" Name 60 "gl_WorldToObject3x4EXT" Name 66 "indexable" Name 72 "c" Name 78 "result" Name 87 "attribs" Name 89 "hitValue" Decorate 43(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 60(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR Decorate 78(result) Binding 0 Decorate 78(result) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: 6(float) Constant 1233125376 10: TypeInt 32 1 11: TypePointer Function 10(int) 13: 10(int) Constant 4294967295 15: 10(int) Constant 0 22: 10(int) Constant 3 23: TypeBool 32: 10(int) Constant 4 35: 10(int) Constant 1 37: TypeVector 10(int) 3 38: TypePointer Function 37(ivec3) 40: TypeInt 32 0 41: TypeVector 40(int) 3 42: TypePointer Input 41(ivec3) 43(gl_LaunchIDEXT): 42(ptr) Variable Input 44: TypeVector 40(int) 2 47: TypeVector 10(int) 2 55: TypeVector 6(float) 3 56: TypeMatrix 55(fvec3) 4 57: TypeVector 6(float) 4 58: TypeMatrix 57(fvec4) 3 59: TypePointer Input 56 60(gl_WorldToObject3x4EXT): 59(ptr) Variable Input 65: TypePointer Function 58 70: TypeVector 10(int) 4 71: TypePointer Function 70(ivec4) 76: TypeImage 10(int) 3D nonsampled format:R32i 77: TypePointer UniformConstant 76 78(result): 77(ptr) Variable UniformConstant 86: TypePointer HitAttributeKHR 55(fvec3) 87(attribs): 86(ptr) Variable HitAttributeKHR 88: TypePointer IncomingRayPayloadKHR 55(fvec3) 89(hitValue): 88(ptr) Variable IncomingRayPayloadKHR 4(main): 2 Function None 3 5: Label 8(k): 7(ptr) Variable Function 12(ndx): 11(ptr) Variable Function 14(col): 11(ptr) Variable Function 25(row): 11(ptr) Variable Function 39(p): 38(ptr) Variable Function 53(r): 7(ptr) Variable Function 66(indexable): 65(ptr) Variable Function 72(c): 71(ptr) Variable Function Store 8(k) 9 Store 12(ndx) 13 Store 14(col) 15 Branch 16 16: Label LoopMerge 18 19 None Branch 20 20: Label 21: 10(int) Load 14(col) 24: 23(bool) SLessThan 21 22 BranchConditional 24 17 18 17: Label Store 25(row) 15 Branch 26 26: Label LoopMerge 28 29 None Branch 30 30: Label 31: 10(int) Load 25(row) 33: 23(bool) SLessThan 31 32 BranchConditional 33 27 28 27: Label 34: 10(int) Load 12(ndx) 36: 10(int) IAdd 34 35 Store 12(ndx) 36 45: 41(ivec3) Load 43(gl_LaunchIDEXT) 46: 44(ivec2) VectorShuffle 45 45 0 1 48: 47(ivec2) Bitcast 46 49: 10(int) Load 12(ndx) 50: 10(int) CompositeExtract 48 0 51: 10(int) CompositeExtract 48 1 52: 37(ivec3) CompositeConstruct 50 51 49 Store 39(p) 52 54: 6(float) Load 8(k) 61: 56 Load 60(gl_WorldToObject3x4EXT) 62: 58 Transpose 61 63: 10(int) Load 14(col) 64: 10(int) Load 25(row) Store 66(indexable) 62 67: 7(ptr) AccessChain 66(indexable) 63 64 68: 6(float) Load 67 69: 6(float) FMul 54 68 Store 53(r) 69 73: 6(float) Load 53(r) 74: 10(int) ConvertFToS 73 75: 70(ivec4) CompositeConstruct 74 15 15 35 Store 72(c) 75 79: 76 Load 78(result) 80: 37(ivec3) Load 39(p) 81: 70(ivec4) Load 72(c) ImageWrite 79 80 81 SignExtend Branch 29 29: Label 82: 10(int) Load 25(row) 83: 10(int) IAdd 82 35 Store 25(row) 83 Branch 26 28: Label Branch 19 19: Label 84: 10(int) Load 14(col) 85: 10(int) IAdd 84 35 Store 14(col) 85 Branch 16 18: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out000066400000000000000000000347411506534232700253470ustar00rootroot00000000000000spv.ext.meshShaderBuiltins.mesh // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 158 Capability ClipDistance Capability CullDistance Capability DrawParameters Capability MultiView Capability MeshShadingEXT Extension "SPV_EXT_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshEXT 4 "main" 13 19 24 41 93 134 152 155 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" Name 93 "gl_MeshPrimitivesEXT" Name 134 "gl_PrimitiveTriangleIndicesEXT" Name 150 "id" Name 152 "gl_DrawIDARB" Name 154 "viewIdx" Name 155 "gl_ViewIndex" Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups Decorate 38(gl_MeshPerVertexEXT) Block 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 90(gl_MeshPerPrimitiveEXT) Block MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV Decorate 134(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 152(gl_DrawIDARB) BuiltIn DrawIndex Decorate 155(gl_ViewIndex) BuiltIn ViewIndex Decorate 157 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) 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: TypeArray 11(ivec3) 29 133: TypePointer Output 132 134(gl_PrimitiveTriangleIndicesEXT): 133(ptr) Variable Output 135: 8(int) Constant 257 136: 11(ivec3) ConstantComposite 135 135 135 137: TypePointer Output 11(ivec3) 141: 11(ivec3) ConstantComposite 64 64 64 149: TypePointer Function 43(int) 151: TypePointer Input 43(int) 152(gl_DrawIDARB): 151(ptr) Variable Input 155(gl_ViewIndex): 151(ptr) Variable Input 157: 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 138: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 44 Store 138 136 139: 8(int) Load 28(primitiveCount) 140: 8(int) ISub 139 62 142: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 140 Store 142 141 143: 8(int) Load 18(gid) 144: 8(int) Load 18(gid) 145: 8(int) ISub 144 62 146: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 145 147: 11(ivec3) Load 146 148: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 143 Store 148 147 MemoryBarrier 62 63 ControlBarrier 64 64 63 Return FunctionEnd 6(testAdditionalBuiltins(): 2 Function None 3 7: Label 150(id): 149(ptr) Variable Function 154(viewIdx): 149(ptr) Variable Function 153: 43(int) Load 152(gl_DrawIDARB) Store 150(id) 153 156: 43(int) Load 155(gl_ViewIndex) Store 154(viewIdx) 156 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out000066400000000000000000000366071506534232700274640ustar00rootroot00000000000000spv.ext.meshShaderBuiltinsShadingRate.mesh // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 164 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 140 158 161 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_fragment_shading_rate" 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 140 "gl_PrimitiveTriangleIndicesEXT" Name 156 "id" Name 158 "gl_DrawIDARB" Name 160 "viewIdx" Name 161 "gl_ViewIndex" Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups Decorate 38(gl_MeshPerVertexEXT) Block 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 90(gl_MeshPerPrimitiveEXT) Block MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV Decorate 140(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 158(gl_DrawIDARB) BuiltIn DrawIndex Decorate 161(gl_ViewIndex) BuiltIn ViewIndex Decorate 163 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) 109: 43(int) Constant 4 138: TypeArray 11(ivec3) 29 139: TypePointer Output 138 140(gl_PrimitiveTriangleIndicesEXT): 139(ptr) Variable Output 141: 8(int) Constant 257 142: 11(ivec3) ConstantComposite 141 141 141 143: TypePointer Output 11(ivec3) 147: 11(ivec3) ConstantComposite 64 64 64 155: TypePointer Function 43(int) 157: TypePointer Input 43(int) 158(gl_DrawIDARB): 157(ptr) Variable Input 161(gl_ViewIndex): 157(ptr) Variable Input 163: 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 108: 8(int) Load 10(iid) 110: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 108 109 Store 110 44 MemoryBarrier 62 63 ControlBarrier 64 64 63 111: 8(int) Load 10(iid) 112: 8(int) IAdd 111 62 113: 8(int) Load 10(iid) 114: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 113 44 115: 43(int) Load 114 116: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 112 44 Store 116 115 117: 8(int) Load 10(iid) 118: 8(int) IAdd 117 62 119: 8(int) Load 10(iid) 120: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 119 50 121: 43(int) Load 120 122: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 118 50 Store 122 121 123: 8(int) Load 10(iid) 124: 8(int) IAdd 123 62 125: 8(int) Load 10(iid) 126: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 125 55 127: 43(int) Load 126 128: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 124 55 Store 128 127 129: 8(int) Load 10(iid) 130: 8(int) IAdd 129 62 131: 8(int) Load 10(iid) 132: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 131 56 133: 89(bool) Load 132 134: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 130 56 Store 134 133 135: 8(int) Load 10(iid) 136: 8(int) IAdd 135 62 137: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 136 109 Store 137 44 MemoryBarrier 62 63 ControlBarrier 64 64 63 144: 143(ptr) AccessChain 140(gl_PrimitiveTriangleIndicesEXT) 44 Store 144 142 145: 8(int) Load 28(primitiveCount) 146: 8(int) ISub 145 62 148: 143(ptr) AccessChain 140(gl_PrimitiveTriangleIndicesEXT) 146 Store 148 147 149: 8(int) Load 18(gid) 150: 8(int) Load 18(gid) 151: 8(int) ISub 150 62 152: 143(ptr) AccessChain 140(gl_PrimitiveTriangleIndicesEXT) 151 153: 11(ivec3) Load 152 154: 143(ptr) AccessChain 140(gl_PrimitiveTriangleIndicesEXT) 149 Store 154 153 MemoryBarrier 62 63 ControlBarrier 64 64 63 Return FunctionEnd 6(testAdditionalBuiltins(): 2 Function None 3 7: Label 156(id): 155(ptr) Variable Function 160(viewIdx): 155(ptr) Variable Function 159: 43(int) Load 158(gl_DrawIDARB) Store 156(id) 159 162: 43(int) Load 161(gl_ViewIndex) Store 160(viewIdx) 162 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out000066400000000000000000000267031506534232700264650ustar00rootroot00000000000000spv.ext.meshShaderRedeclBuiltins.mesh // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 128 Capability ClipDistance Capability CullDistance Capability MeshShadingEXT Extension "SPV_EXT_mesh_shader" 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" Name 81 "gl_MeshPrimitivesEXT" Name 122 "gl_PrimitivePointIndicesEXT" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 26(gl_MeshPerVertexEXT) Block 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 78(gl_MeshPerPrimitiveEXT) Block MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV 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) 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 glslang-16.0.0/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out000066400000000000000000000124151506534232700251110ustar00rootroot00000000000000spv.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 Decorate 36(bufferBlock) Block MemberDecorate 36(bufferBlock) 0 Offset 0 MemberDecorate 36(bufferBlock) 1 Offset 16 Decorate 38(mybuf) Binding 0 Decorate 38(mybuf) DescriptorSet 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 glslang-16.0.0/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out000066400000000000000000000243551506534232700257530ustar00rootroot00000000000000spv.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 Decorate 30(myblock) Block 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 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 glslang-16.0.0/Test/baseResults/spv.ext.meshTaskShader.task.out000066400000000000000000000176171506534232700244710ustar00rootroot00000000000000spv.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 Decorate 37(block0) Block MemberDecorate 37(block0) 0 Offset 0 Decorate 39 Binding 1 Decorate 39 DescriptorSet 0 Decorate 55(uni_image) NonReadable Decorate 55(uni_image) Binding 0 Decorate 55(uni_image) DescriptorSet 0 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 glslang-16.0.0/Test/baseResults/spv.ext.textureShadowLod.error.frag.out000066400000000000000000000003621506534232700261620ustar00rootroot00000000000000spv.ext.textureShadowLod.error.frag ERROR: 0:11: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.ext.textureShadowLod.frag.out000066400000000000000000000107221506534232700250330ustar00rootroot00000000000000spv.ext.textureShadowLod.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 55 Capability Shader Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 16 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_texture_shadow_lod" Name 4 "main" Name 8 "c" Name 12 "s2da" Name 16 "tc" Name 24 "sca" Name 43 "sc" Decorate 8(c) Location 0 Decorate 12(s2da) Binding 0 Decorate 12(s2da) DescriptorSet 0 Decorate 16(tc) Location 0 Decorate 24(sca) Binding 1 Decorate 24(sca) DescriptorSet 0 Decorate 43(sc) Binding 2 Decorate 43(sc) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Output 6(float) 8(c): 7(ptr) Variable Output 9: TypeImage 6(float) 2D depth array sampled format:Unknown 10: TypeSampledImage 9 11: TypePointer UniformConstant 10 12(s2da): 11(ptr) Variable UniformConstant 14: TypeVector 6(float) 4 15: TypePointer Input 14(fvec4) 16(tc): 15(ptr) Variable Input 18: 6(float) Constant 0 21: TypeImage 6(float) Cube depth array sampled format:Unknown 22: TypeSampledImage 21 23: TypePointer UniformConstant 22 24(sca): 23(ptr) Variable UniformConstant 30: TypeInt 32 1 31: TypeVector 30(int) 2 32: 30(int) Constant 0 33: 31(ivec2) ConstantComposite 32 32 40: TypeImage 6(float) Cube depth sampled format:Unknown 41: TypeSampledImage 40 42: TypePointer UniformConstant 41 43(sc): 42(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 13: 10 Load 12(s2da) 17: 14(fvec4) Load 16(tc) 19: 6(float) CompositeExtract 17 3 20: 6(float) ImageSampleDrefImplicitLod 13 17 19 Bias 18 Store 8(c) 20 25: 22 Load 24(sca) 26: 14(fvec4) Load 16(tc) 27: 6(float) ImageSampleDrefImplicitLod 25 26 18 Store 8(c) 27 28: 10 Load 12(s2da) 29: 14(fvec4) Load 16(tc) 34: 6(float) CompositeExtract 29 3 35: 6(float) ImageSampleDrefImplicitLod 28 29 34 Bias ConstOffset 18 33 Store 8(c) 35 36: 10 Load 12(s2da) 37: 14(fvec4) Load 16(tc) 38: 6(float) CompositeExtract 37 3 39: 6(float) ImageSampleDrefExplicitLod 36 37 38 Lod 18 Store 8(c) 39 44: 41 Load 43(sc) 45: 14(fvec4) Load 16(tc) 46: 6(float) CompositeExtract 45 3 47: 6(float) ImageSampleDrefExplicitLod 44 45 46 Lod 18 Store 8(c) 47 48: 22 Load 24(sca) 49: 14(fvec4) Load 16(tc) 50: 6(float) ImageSampleDrefExplicitLod 48 49 18 Lod 18 Store 8(c) 50 51: 10 Load 12(s2da) 52: 14(fvec4) Load 16(tc) 53: 6(float) CompositeExtract 52 3 54: 6(float) ImageSampleDrefExplicitLod 51 52 53 Lod ConstOffset 18 33 Store 8(c) 54 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.extPostDepthCoverage.frag.out000066400000000000000000000020751506534232700250400ustar00rootroot00000000000000spv.extPostDepthCoverage.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 6 Capability Shader Capability SampleMaskPostDepthCoverage Extension "SPV_KHR_post_depth_coverage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft ExecutionMode 4 EarlyFragmentTests ExecutionMode 4 PostDepthCoverage Source ESSL 310 SourceExtension "GL_EXT_post_depth_coverage" Name 4 "main" 2: TypeVoid 3: TypeFunction 2 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.extPostDepthCoverage_Error.frag.out000066400000000000000000000002511506534232700262030ustar00rootroot00000000000000spv.extPostDepthCoverage_Error.frag ERROR: Linking fragment stage: post_depth_coverage requires early_fragment_tests SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.float16.frag.out000066400000000000000000001254021506534232700222050ustar00rootroot00000000000000spv.float16.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 541 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability DerivativeControl Capability InterpolationFunction Capability StorageUniformBufferBlock16 Capability StorageUniform16 Capability StorageInputOutput16 Extension "SPV_AMD_gpu_shader_half_float" Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 464 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_gpu_shader_half_float" SourceExtension "GL_ARB_gpu_shader_int64" Name 4 "main" Name 6 "literal(" Name 8 "operators(" Name 10 "typeCast(" Name 12 "builtinAngleTrigFuncs(" Name 14 "builtinExpFuncs(" Name 16 "builtinCommonFuncs(" Name 18 "builtinPackUnpackFuncs(" Name 20 "builtinGeometryFuncs(" Name 22 "builtinMatrixFuncs(" Name 24 "builtinVecRelFuncs(" Name 26 "builtinFragProcFuncs(" Name 31 "f16v" Name 42 "f16v" Name 64 "f16m" Name 87 "f16" Name 111 "b" Name 153 "f16v" Name 156 "bv" Name 167 "fv" Name 175 "dv" Name 182 "iv" Name 189 "uv" Name 197 "i64v" Name 205 "u64v" Name 212 "f16v2" Name 213 "f16v1" Name 245 "f16v2" Name 246 "f16v1" Name 262 "f16v2" Name 263 "f16v1" Name 284 "f16" Name 288 "f16v3" Name 290 "ResType" Name 331 "bv" Name 352 "b" Name 362 "iv" Name 363 "ResType" Name 371 "u" Name 372 "f16v" Name 377 "f16" Name 378 "f16v1" Name 382 "f16v2" Name 388 "f16v3" Name 407 "f16m3" Name 408 "f16m1" Name 410 "f16m2" Name 419 "f16v1" Name 421 "f16v2" Name 426 "f16m4" Name 429 "f16" Name 432 "f16m5" Name 437 "f16m6" Name 438 "f16m7" Name 441 "bv" Name 442 "f16v1" Name 444 "f16v2" Name 462 "f16v" Name 464 "if16v" Name 521 "S" MemberName 521(S) 0 "x" MemberName 521(S) 1 "y" MemberName 521(S) 2 "z" Name 523 "B1" MemberName 523(B1) 0 "a" MemberName 523(B1) 1 "b" MemberName 523(B1) 2 "c" MemberName 523(B1) 3 "d" MemberName 523(B1) 4 "e" MemberName 523(B1) 5 "f" MemberName 523(B1) 6 "g" MemberName 523(B1) 7 "h" Name 525 "" Name 528 "S" MemberName 528(S) 0 "x" MemberName 528(S) 1 "y" MemberName 528(S) 2 "z" Name 530 "B2" MemberName 530(B2) 0 "o" MemberName 530(B2) 1 "p" MemberName 530(B2) 2 "q" MemberName 530(B2) 3 "r" MemberName 530(B2) 4 "s" MemberName 530(B2) 5 "t" MemberName 530(B2) 6 "u" MemberName 530(B2) 7 "v" Name 532 "" Name 533 "sf16" Name 534 "sf" Name 535 "sd" Name 536 "f16_to_f" Name 538 "f16_to_d" Name 539 "f_to_f16" Name 540 "d_to_f16" Decorate 464(if16v) Location 0 Decorate 519 ArrayStride 16 Decorate 520 ArrayStride 32 MemberDecorate 521(S) 0 Offset 0 MemberDecorate 521(S) 1 Offset 4 MemberDecorate 521(S) 2 Offset 8 Decorate 522 ArrayStride 16 Decorate 523(B1) Block MemberDecorate 523(B1) 0 Offset 0 MemberDecorate 523(B1) 1 Offset 4 MemberDecorate 523(B1) 2 Offset 8 MemberDecorate 523(B1) 3 Offset 16 MemberDecorate 523(B1) 4 ColMajor MemberDecorate 523(B1) 4 MatrixStride 16 MemberDecorate 523(B1) 4 Offset 48 MemberDecorate 523(B1) 5 ColMajor MemberDecorate 523(B1) 5 MatrixStride 16 MemberDecorate 523(B1) 5 Offset 80 MemberDecorate 523(B1) 6 Offset 144 MemberDecorate 523(B1) 7 Offset 160 Decorate 525 Binding 0 Decorate 525 DescriptorSet 0 Decorate 526 ArrayStride 2 Decorate 527 ArrayStride 12 MemberDecorate 528(S) 0 Offset 0 MemberDecorate 528(S) 1 Offset 4 MemberDecorate 528(S) 2 Offset 8 Decorate 529 ArrayStride 16 Decorate 530(B2) BufferBlock MemberDecorate 530(B2) 0 Offset 0 MemberDecorate 530(B2) 1 Offset 4 MemberDecorate 530(B2) 2 Offset 8 MemberDecorate 530(B2) 3 Offset 14 MemberDecorate 530(B2) 4 RowMajor MemberDecorate 530(B2) 4 MatrixStride 4 MemberDecorate 530(B2) 4 Offset 20 MemberDecorate 530(B2) 5 RowMajor MemberDecorate 530(B2) 5 MatrixStride 4 MemberDecorate 530(B2) 5 Offset 32 MemberDecorate 530(B2) 6 Offset 56 MemberDecorate 530(B2) 7 Offset 72 Decorate 532 Binding 0 Decorate 532 DescriptorSet 0 Decorate 533(sf16) SpecId 100 Decorate 534(sf) SpecId 101 Decorate 535(sd) SpecId 102 2: TypeVoid 3: TypeFunction 2 28: TypeFloat 16 29: TypeVector 28(float16_t) 2 30: TypePointer Function 29(f16vec2) 32:28(float16_t) Constant 16 33: TypeInt 32 0 34: 33(int) Constant 0 35: TypePointer Function 28(float16_t) 37:28(float16_t) Constant 46080 38:28(float16_t) Constant 10158 39: 29(f16vec2) ConstantComposite 37 38 56:28(float16_t) Constant 15360 62: TypeMatrix 29(f16vec2) 2 63: TypePointer Function 62 90: 33(int) Constant 1 109: TypeBool 110: TypePointer Function 109(bool) 151: TypeVector 28(float16_t) 3 152: TypePointer Function 151(f16vec3) 154: TypeVector 109(bool) 3 155: TypePointer Function 154(bvec3) 158:28(float16_t) Constant 0 159:151(f16vec3) ConstantComposite 158 158 158 160:151(f16vec3) ConstantComposite 56 56 56 164: TypeFloat 32 165: TypeVector 164(float) 3 166: TypePointer Function 165(fvec3) 172: TypeFloat 64 173: TypeVector 172(float64_t) 3 174: TypePointer Function 173(f64vec3) 179: TypeInt 32 1 180: TypeVector 179(int) 3 181: TypePointer Function 180(ivec3) 187: TypeVector 33(int) 3 188: TypePointer Function 187(ivec3) 194: TypeInt 64 1 195: TypeVector 194(int64_t) 3 196: TypePointer Function 195(i64vec3) 202: TypeInt 64 0 203: TypeVector 202(int64_t) 3 204: TypePointer Function 203(i64vec3) 210: TypeVector 28(float16_t) 4 211: TypePointer Function 210(f16vec4) 290(ResType): TypeStruct 151(f16vec3) 151(f16vec3) 363(ResType): TypeStruct 151(f16vec3) 180(ivec3) 370: TypePointer Function 33(int) 405: TypeMatrix 151(f16vec3) 2 406: TypePointer Function 405 424: TypeMatrix 29(f16vec2) 3 425: TypePointer Function 424 430: TypeMatrix 151(f16vec3) 3 431: TypePointer Function 430 435: TypeMatrix 210(f16vec4) 4 436: TypePointer Function 435 463: TypePointer Input 151(f16vec3) 464(if16v): 463(ptr) Variable Input 465: TypePointer Input 28(float16_t) 508: 179(int) Constant 1 515:28(float16_t) Constant 14336 516: 29(f16vec2) ConstantComposite 515 515 518: 33(int) Constant 2 519: TypeArray 28(float16_t) 518 520: TypeArray 405 518 521(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 522: TypeArray 521(S) 518 523(B1): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 519 405 520 521(S) 522 524: TypePointer Uniform 523(B1) 525: 524(ptr) Variable Uniform 526: TypeArray 28(float16_t) 518 527: TypeArray 405 518 528(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 529: TypeArray 528(S) 518 530(B2): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 526 405 527 528(S) 529 531: TypePointer Uniform 530(B2) 532: 531(ptr) Variable Uniform 533(sf16):28(float16_t) SpecConstant 12288 534(sf): 164(float) SpecConstant 1048576000 535(sd):172(float64_t) SpecConstant 0 1071644672 536(f16_to_f): 164(float) SpecConstantOp 115 533(sf16) 537: 164(float) SpecConstantOp 115 533(sf16) 538(f16_to_d):172(float64_t) SpecConstantOp 115 537 539(f_to_f16):28(float16_t) SpecConstantOp 115 534(sf) 540(d_to_f16):28(float16_t) SpecConstantOp 115 535(sd) 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 31(f16v): 30(ptr) Variable Function 36: 35(ptr) AccessChain 31(f16v) 34 Store 36 32 40: 29(f16vec2) Load 31(f16v) 41: 29(f16vec2) FAdd 40 39 Store 31(f16v) 41 Return FunctionEnd 8(operators(): 2 Function None 3 9: Label 42(f16v): 30(ptr) Variable Function 64(f16m): 63(ptr) Variable Function 87(f16): 35(ptr) Variable Function 111(b): 110(ptr) Variable Function 43: 29(f16vec2) Load 42(f16v) 44: 29(f16vec2) Load 42(f16v) 45: 29(f16vec2) FAdd 44 43 Store 42(f16v) 45 46: 29(f16vec2) Load 42(f16v) 47: 29(f16vec2) Load 42(f16v) 48: 29(f16vec2) FSub 47 46 Store 42(f16v) 48 49: 29(f16vec2) Load 42(f16v) 50: 29(f16vec2) Load 42(f16v) 51: 29(f16vec2) FMul 50 49 Store 42(f16v) 51 52: 29(f16vec2) Load 42(f16v) 53: 29(f16vec2) Load 42(f16v) 54: 29(f16vec2) FDiv 53 52 Store 42(f16v) 54 55: 29(f16vec2) Load 42(f16v) 57: 29(f16vec2) CompositeConstruct 56 56 58: 29(f16vec2) FAdd 55 57 Store 42(f16v) 58 59: 29(f16vec2) Load 42(f16v) 60: 29(f16vec2) CompositeConstruct 56 56 61: 29(f16vec2) FSub 59 60 Store 42(f16v) 61 65: 62 Load 64(f16m) 66: 29(f16vec2) CompositeConstruct 56 56 67: 29(f16vec2) CompositeExtract 65 0 68: 29(f16vec2) FAdd 67 66 69: 29(f16vec2) CompositeExtract 65 1 70: 29(f16vec2) FAdd 69 66 71: 62 CompositeConstruct 68 70 Store 64(f16m) 71 72: 62 Load 64(f16m) 73: 29(f16vec2) CompositeConstruct 56 56 74: 29(f16vec2) CompositeExtract 72 0 75: 29(f16vec2) FSub 74 73 76: 29(f16vec2) CompositeExtract 72 1 77: 29(f16vec2) FSub 76 73 78: 62 CompositeConstruct 75 77 Store 64(f16m) 78 79: 29(f16vec2) Load 42(f16v) 80: 29(f16vec2) FNegate 79 Store 42(f16v) 80 81: 62 Load 64(f16m) 82: 29(f16vec2) CompositeExtract 81 0 83: 29(f16vec2) FNegate 82 84: 29(f16vec2) CompositeExtract 81 1 85: 29(f16vec2) FNegate 84 86: 62 CompositeConstruct 83 85 Store 64(f16m) 86 88: 35(ptr) AccessChain 42(f16v) 34 89:28(float16_t) Load 88 91: 35(ptr) AccessChain 42(f16v) 90 92:28(float16_t) Load 91 93:28(float16_t) FAdd 89 92 Store 87(f16) 93 94: 35(ptr) AccessChain 42(f16v) 34 95:28(float16_t) Load 94 96: 35(ptr) AccessChain 42(f16v) 90 97:28(float16_t) Load 96 98:28(float16_t) FSub 95 97 Store 87(f16) 98 99: 35(ptr) AccessChain 42(f16v) 34 100:28(float16_t) Load 99 101: 35(ptr) AccessChain 42(f16v) 90 102:28(float16_t) Load 101 103:28(float16_t) FMul 100 102 Store 87(f16) 103 104: 35(ptr) AccessChain 42(f16v) 34 105:28(float16_t) Load 104 106: 35(ptr) AccessChain 42(f16v) 90 107:28(float16_t) Load 106 108:28(float16_t) FDiv 105 107 Store 87(f16) 108 112: 35(ptr) AccessChain 42(f16v) 34 113:28(float16_t) Load 112 114:28(float16_t) Load 87(f16) 115: 109(bool) FUnordNotEqual 113 114 Store 111(b) 115 116: 35(ptr) AccessChain 42(f16v) 90 117:28(float16_t) Load 116 118:28(float16_t) Load 87(f16) 119: 109(bool) FOrdEqual 117 118 Store 111(b) 119 120: 35(ptr) AccessChain 42(f16v) 34 121:28(float16_t) Load 120 122:28(float16_t) Load 87(f16) 123: 109(bool) FOrdGreaterThan 121 122 Store 111(b) 123 124: 35(ptr) AccessChain 42(f16v) 90 125:28(float16_t) Load 124 126:28(float16_t) Load 87(f16) 127: 109(bool) FOrdLessThan 125 126 Store 111(b) 127 128: 35(ptr) AccessChain 42(f16v) 34 129:28(float16_t) Load 128 130:28(float16_t) Load 87(f16) 131: 109(bool) FOrdGreaterThanEqual 129 130 Store 111(b) 131 132: 35(ptr) AccessChain 42(f16v) 90 133:28(float16_t) Load 132 134:28(float16_t) Load 87(f16) 135: 109(bool) FOrdLessThanEqual 133 134 Store 111(b) 135 136: 29(f16vec2) Load 42(f16v) 137:28(float16_t) Load 87(f16) 138: 29(f16vec2) VectorTimesScalar 136 137 Store 42(f16v) 138 139: 62 Load 64(f16m) 140:28(float16_t) Load 87(f16) 141: 62 MatrixTimesScalar 139 140 Store 64(f16m) 141 142: 62 Load 64(f16m) 143: 29(f16vec2) Load 42(f16v) 144: 29(f16vec2) MatrixTimesVector 142 143 Store 42(f16v) 144 145: 29(f16vec2) Load 42(f16v) 146: 62 Load 64(f16m) 147: 29(f16vec2) VectorTimesMatrix 145 146 Store 42(f16v) 147 148: 62 Load 64(f16m) 149: 62 Load 64(f16m) 150: 62 MatrixTimesMatrix 148 149 Store 64(f16m) 150 Return FunctionEnd 10(typeCast(): 2 Function None 3 11: Label 153(f16v): 152(ptr) Variable Function 156(bv): 155(ptr) Variable Function 167(fv): 166(ptr) Variable Function 175(dv): 174(ptr) Variable Function 182(iv): 181(ptr) Variable Function 189(uv): 188(ptr) Variable Function 197(i64v): 196(ptr) Variable Function 205(u64v): 204(ptr) Variable Function 157: 154(bvec3) Load 156(bv) 161:151(f16vec3) Select 157 160 159 Store 153(f16v) 161 162:151(f16vec3) Load 153(f16v) 163: 154(bvec3) FUnordNotEqual 162 159 Store 156(bv) 163 168: 165(fvec3) Load 167(fv) 169:151(f16vec3) FConvert 168 Store 153(f16v) 169 170:151(f16vec3) Load 153(f16v) 171: 165(fvec3) FConvert 170 Store 167(fv) 171 176:173(f64vec3) Load 175(dv) 177:151(f16vec3) FConvert 176 Store 153(f16v) 177 178:173(f64vec3) Load 175(dv) Store 175(dv) 178 183: 180(ivec3) Load 182(iv) 184:151(f16vec3) ConvertSToF 183 Store 153(f16v) 184 185:151(f16vec3) Load 153(f16v) 186: 180(ivec3) ConvertFToS 185 Store 182(iv) 186 190: 187(ivec3) Load 189(uv) 191:151(f16vec3) ConvertUToF 190 Store 153(f16v) 191 192:151(f16vec3) Load 153(f16v) 193: 187(ivec3) ConvertFToU 192 Store 189(uv) 193 198:195(i64vec3) Load 197(i64v) 199:151(f16vec3) ConvertSToF 198 Store 153(f16v) 199 200:151(f16vec3) Load 153(f16v) 201:195(i64vec3) ConvertFToS 200 Store 197(i64v) 201 206:203(i64vec3) Load 205(u64v) 207:151(f16vec3) ConvertUToF 206 Store 153(f16v) 207 208:151(f16vec3) Load 153(f16v) 209:203(i64vec3) ConvertFToU 208 Store 205(u64v) 209 Return FunctionEnd 12(builtinAngleTrigFuncs(): 2 Function None 3 13: Label 212(f16v2): 211(ptr) Variable Function 213(f16v1): 211(ptr) Variable Function 214:210(f16vec4) Load 213(f16v1) 215:210(f16vec4) ExtInst 1(GLSL.std.450) 11(Radians) 214 Store 212(f16v2) 215 216:210(f16vec4) Load 213(f16v1) 217:210(f16vec4) ExtInst 1(GLSL.std.450) 12(Degrees) 216 Store 212(f16v2) 217 218:210(f16vec4) Load 213(f16v1) 219:210(f16vec4) ExtInst 1(GLSL.std.450) 13(Sin) 218 Store 212(f16v2) 219 220:210(f16vec4) Load 213(f16v1) 221:210(f16vec4) ExtInst 1(GLSL.std.450) 14(Cos) 220 Store 212(f16v2) 221 222:210(f16vec4) Load 213(f16v1) 223:210(f16vec4) ExtInst 1(GLSL.std.450) 15(Tan) 222 Store 212(f16v2) 223 224:210(f16vec4) Load 213(f16v1) 225:210(f16vec4) ExtInst 1(GLSL.std.450) 16(Asin) 224 Store 212(f16v2) 225 226:210(f16vec4) Load 213(f16v1) 227:210(f16vec4) ExtInst 1(GLSL.std.450) 17(Acos) 226 Store 212(f16v2) 227 228:210(f16vec4) Load 213(f16v1) 229:210(f16vec4) Load 212(f16v2) 230:210(f16vec4) ExtInst 1(GLSL.std.450) 25(Atan2) 228 229 Store 212(f16v2) 230 231:210(f16vec4) Load 213(f16v1) 232:210(f16vec4) ExtInst 1(GLSL.std.450) 18(Atan) 231 Store 212(f16v2) 232 233:210(f16vec4) Load 213(f16v1) 234:210(f16vec4) ExtInst 1(GLSL.std.450) 19(Sinh) 233 Store 212(f16v2) 234 235:210(f16vec4) Load 213(f16v1) 236:210(f16vec4) ExtInst 1(GLSL.std.450) 20(Cosh) 235 Store 212(f16v2) 236 237:210(f16vec4) Load 213(f16v1) 238:210(f16vec4) ExtInst 1(GLSL.std.450) 21(Tanh) 237 Store 212(f16v2) 238 239:210(f16vec4) Load 213(f16v1) 240:210(f16vec4) ExtInst 1(GLSL.std.450) 22(Asinh) 239 Store 212(f16v2) 240 241:210(f16vec4) Load 213(f16v1) 242:210(f16vec4) ExtInst 1(GLSL.std.450) 23(Acosh) 241 Store 212(f16v2) 242 243:210(f16vec4) Load 213(f16v1) 244:210(f16vec4) ExtInst 1(GLSL.std.450) 24(Atanh) 243 Store 212(f16v2) 244 Return FunctionEnd 14(builtinExpFuncs(): 2 Function None 3 15: Label 245(f16v2): 30(ptr) Variable Function 246(f16v1): 30(ptr) Variable Function 247: 29(f16vec2) Load 246(f16v1) 248: 29(f16vec2) Load 245(f16v2) 249: 29(f16vec2) ExtInst 1(GLSL.std.450) 26(Pow) 247 248 Store 245(f16v2) 249 250: 29(f16vec2) Load 246(f16v1) 251: 29(f16vec2) ExtInst 1(GLSL.std.450) 27(Exp) 250 Store 245(f16v2) 251 252: 29(f16vec2) Load 246(f16v1) 253: 29(f16vec2) ExtInst 1(GLSL.std.450) 28(Log) 252 Store 245(f16v2) 253 254: 29(f16vec2) Load 246(f16v1) 255: 29(f16vec2) ExtInst 1(GLSL.std.450) 29(Exp2) 254 Store 245(f16v2) 255 256: 29(f16vec2) Load 246(f16v1) 257: 29(f16vec2) ExtInst 1(GLSL.std.450) 30(Log2) 256 Store 245(f16v2) 257 258: 29(f16vec2) Load 246(f16v1) 259: 29(f16vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 258 Store 245(f16v2) 259 260: 29(f16vec2) Load 246(f16v1) 261: 29(f16vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 260 Store 245(f16v2) 261 Return FunctionEnd 16(builtinCommonFuncs(): 2 Function None 3 17: Label 262(f16v2): 152(ptr) Variable Function 263(f16v1): 152(ptr) Variable Function 284(f16): 35(ptr) Variable Function 288(f16v3): 152(ptr) Variable Function 331(bv): 155(ptr) Variable Function 352(b): 110(ptr) Variable Function 362(iv): 181(ptr) Variable Function 264:151(f16vec3) Load 263(f16v1) 265:151(f16vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 264 Store 262(f16v2) 265 266:151(f16vec3) Load 263(f16v1) 267:151(f16vec3) ExtInst 1(GLSL.std.450) 6(FSign) 266 Store 262(f16v2) 267 268:151(f16vec3) Load 263(f16v1) 269:151(f16vec3) ExtInst 1(GLSL.std.450) 8(Floor) 268 Store 262(f16v2) 269 270:151(f16vec3) Load 263(f16v1) 271:151(f16vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 270 Store 262(f16v2) 271 272:151(f16vec3) Load 263(f16v1) 273:151(f16vec3) ExtInst 1(GLSL.std.450) 1(Round) 272 Store 262(f16v2) 273 274:151(f16vec3) Load 263(f16v1) 275:151(f16vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 274 Store 262(f16v2) 275 276:151(f16vec3) Load 263(f16v1) 277:151(f16vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 276 Store 262(f16v2) 277 278:151(f16vec3) Load 263(f16v1) 279:151(f16vec3) ExtInst 1(GLSL.std.450) 10(Fract) 278 Store 262(f16v2) 279 280:151(f16vec3) Load 263(f16v1) 281:151(f16vec3) Load 262(f16v2) 282:151(f16vec3) FMod 280 281 Store 262(f16v2) 282 283:151(f16vec3) Load 263(f16v1) 285:28(float16_t) Load 284(f16) 286:151(f16vec3) CompositeConstruct 285 285 285 287:151(f16vec3) FMod 283 286 Store 262(f16v2) 287 289:151(f16vec3) Load 263(f16v1) 291:290(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 289 292:151(f16vec3) CompositeExtract 291 1 Store 262(f16v2) 292 293:151(f16vec3) CompositeExtract 291 0 Store 288(f16v3) 293 294:151(f16vec3) Load 263(f16v1) 295:151(f16vec3) Load 262(f16v2) 296:151(f16vec3) ExtInst 1(GLSL.std.450) 37(FMin) 294 295 Store 288(f16v3) 296 297:151(f16vec3) Load 263(f16v1) 298:28(float16_t) Load 284(f16) 299:151(f16vec3) CompositeConstruct 298 298 298 300:151(f16vec3) ExtInst 1(GLSL.std.450) 37(FMin) 297 299 Store 288(f16v3) 300 301:151(f16vec3) Load 263(f16v1) 302:151(f16vec3) Load 262(f16v2) 303:151(f16vec3) ExtInst 1(GLSL.std.450) 40(FMax) 301 302 Store 288(f16v3) 303 304:151(f16vec3) Load 263(f16v1) 305:28(float16_t) Load 284(f16) 306:151(f16vec3) CompositeConstruct 305 305 305 307:151(f16vec3) ExtInst 1(GLSL.std.450) 40(FMax) 304 306 Store 288(f16v3) 307 308:151(f16vec3) Load 263(f16v1) 309:28(float16_t) Load 284(f16) 310: 35(ptr) AccessChain 262(f16v2) 34 311:28(float16_t) Load 310 312:151(f16vec3) CompositeConstruct 309 309 309 313:151(f16vec3) CompositeConstruct 311 311 311 314:151(f16vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 308 312 313 Store 288(f16v3) 314 315:151(f16vec3) Load 263(f16v1) 316:151(f16vec3) Load 262(f16v2) 317:28(float16_t) Load 284(f16) 318:151(f16vec3) CompositeConstruct 317 317 317 319:151(f16vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 315 316 318 Store 288(f16v3) 319 320:151(f16vec3) Load 263(f16v1) 321:151(f16vec3) Load 262(f16v2) 322:28(float16_t) Load 284(f16) 323:151(f16vec3) CompositeConstruct 322 322 322 324:151(f16vec3) ExtInst 1(GLSL.std.450) 46(FMix) 320 321 323 Store 288(f16v3) 324 325:151(f16vec3) Load 263(f16v1) 326:151(f16vec3) Load 262(f16v2) 327:151(f16vec3) Load 288(f16v3) 328:151(f16vec3) ExtInst 1(GLSL.std.450) 46(FMix) 325 326 327 Store 288(f16v3) 328 329:151(f16vec3) Load 263(f16v1) 330:151(f16vec3) Load 262(f16v2) 332: 154(bvec3) Load 331(bv) 333:151(f16vec3) Select 332 330 329 Store 288(f16v3) 333 334:151(f16vec3) Load 263(f16v1) 335:151(f16vec3) Load 262(f16v2) 336:151(f16vec3) ExtInst 1(GLSL.std.450) 48(Step) 334 335 Store 288(f16v3) 336 337:28(float16_t) Load 284(f16) 338:151(f16vec3) Load 288(f16v3) 339:151(f16vec3) CompositeConstruct 337 337 337 340:151(f16vec3) ExtInst 1(GLSL.std.450) 48(Step) 339 338 Store 288(f16v3) 340 341:151(f16vec3) Load 263(f16v1) 342:151(f16vec3) Load 262(f16v2) 343:151(f16vec3) Load 288(f16v3) 344:151(f16vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 341 342 343 Store 288(f16v3) 344 345:28(float16_t) Load 284(f16) 346: 35(ptr) AccessChain 263(f16v1) 34 347:28(float16_t) Load 346 348:151(f16vec3) Load 262(f16v2) 349:151(f16vec3) CompositeConstruct 345 345 345 350:151(f16vec3) CompositeConstruct 347 347 347 351:151(f16vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 349 350 348 Store 288(f16v3) 351 353:28(float16_t) Load 284(f16) 354: 109(bool) IsNan 353 Store 352(b) 354 355:151(f16vec3) Load 263(f16v1) 356: 154(bvec3) IsInf 355 Store 331(bv) 356 357:151(f16vec3) Load 263(f16v1) 358:151(f16vec3) Load 262(f16v2) 359:151(f16vec3) Load 288(f16v3) 360:151(f16vec3) ExtInst 1(GLSL.std.450) 50(Fma) 357 358 359 Store 288(f16v3) 360 361:151(f16vec3) Load 263(f16v1) 364:363(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 361 365: 180(ivec3) CompositeExtract 364 1 Store 362(iv) 365 366:151(f16vec3) CompositeExtract 364 0 Store 262(f16v2) 366 367:151(f16vec3) Load 263(f16v1) 368: 180(ivec3) Load 362(iv) 369:151(f16vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 367 368 Store 262(f16v2) 369 Return FunctionEnd 18(builtinPackUnpackFuncs(): 2 Function None 3 19: Label 371(u): 370(ptr) Variable Function 372(f16v): 30(ptr) Variable Function 373: 29(f16vec2) Load 372(f16v) 374: 33(int) Bitcast 373 Store 371(u) 374 375: 33(int) Load 371(u) 376: 29(f16vec2) Bitcast 375 Store 372(f16v) 376 Return FunctionEnd 20(builtinGeometryFuncs(): 2 Function None 3 21: Label 377(f16): 35(ptr) Variable Function 378(f16v1): 152(ptr) Variable Function 382(f16v2): 152(ptr) Variable Function 388(f16v3): 152(ptr) Variable Function 379:151(f16vec3) Load 378(f16v1) 380:28(float16_t) ExtInst 1(GLSL.std.450) 66(Length) 379 Store 377(f16) 380 381:151(f16vec3) Load 378(f16v1) 383:151(f16vec3) Load 382(f16v2) 384:28(float16_t) ExtInst 1(GLSL.std.450) 67(Distance) 381 383 Store 377(f16) 384 385:151(f16vec3) Load 378(f16v1) 386:151(f16vec3) Load 382(f16v2) 387:28(float16_t) Dot 385 386 Store 377(f16) 387 389:151(f16vec3) Load 378(f16v1) 390:151(f16vec3) Load 382(f16v2) 391:151(f16vec3) ExtInst 1(GLSL.std.450) 68(Cross) 389 390 Store 388(f16v3) 391 392:151(f16vec3) Load 378(f16v1) 393:151(f16vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 392 Store 382(f16v2) 393 394:151(f16vec3) Load 378(f16v1) 395:151(f16vec3) Load 382(f16v2) 396:151(f16vec3) Load 388(f16v3) 397:151(f16vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 394 395 396 Store 388(f16v3) 397 398:151(f16vec3) Load 378(f16v1) 399:151(f16vec3) Load 382(f16v2) 400:151(f16vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 398 399 Store 388(f16v3) 400 401:151(f16vec3) Load 378(f16v1) 402:151(f16vec3) Load 382(f16v2) 403:28(float16_t) Load 377(f16) 404:151(f16vec3) ExtInst 1(GLSL.std.450) 72(Refract) 401 402 403 Store 388(f16v3) 404 Return FunctionEnd 22(builtinMatrixFuncs(): 2 Function None 3 23: Label 407(f16m3): 406(ptr) Variable Function 408(f16m1): 406(ptr) Variable Function 410(f16m2): 406(ptr) Variable Function 419(f16v1): 152(ptr) Variable Function 421(f16v2): 30(ptr) Variable Function 426(f16m4): 425(ptr) Variable Function 429(f16): 35(ptr) Variable Function 432(f16m5): 431(ptr) Variable Function 437(f16m6): 436(ptr) Variable Function 438(f16m7): 436(ptr) Variable Function 409: 405 Load 408(f16m1) 411: 405 Load 410(f16m2) 412:151(f16vec3) CompositeExtract 409 0 413:151(f16vec3) CompositeExtract 411 0 414:151(f16vec3) FMul 412 413 415:151(f16vec3) CompositeExtract 409 1 416:151(f16vec3) CompositeExtract 411 1 417:151(f16vec3) FMul 415 416 418: 405 CompositeConstruct 414 417 Store 407(f16m3) 418 420:151(f16vec3) Load 419(f16v1) 422: 29(f16vec2) Load 421(f16v2) 423: 405 OuterProduct 420 422 Store 408(f16m1) 423 427: 405 Load 408(f16m1) 428: 424 Transpose 427 Store 426(f16m4) 428 433: 430 Load 432(f16m5) 434:28(float16_t) ExtInst 1(GLSL.std.450) 33(Determinant) 433 Store 429(f16) 434 439: 435 Load 438(f16m7) 440: 435 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 439 Store 437(f16m6) 440 Return FunctionEnd 24(builtinVecRelFuncs(): 2 Function None 3 25: Label 441(bv): 155(ptr) Variable Function 442(f16v1): 152(ptr) Variable Function 444(f16v2): 152(ptr) Variable Function 443:151(f16vec3) Load 442(f16v1) 445:151(f16vec3) Load 444(f16v2) 446: 154(bvec3) FOrdLessThan 443 445 Store 441(bv) 446 447:151(f16vec3) Load 442(f16v1) 448:151(f16vec3) Load 444(f16v2) 449: 154(bvec3) FOrdLessThanEqual 447 448 Store 441(bv) 449 450:151(f16vec3) Load 442(f16v1) 451:151(f16vec3) Load 444(f16v2) 452: 154(bvec3) FOrdGreaterThan 450 451 Store 441(bv) 452 453:151(f16vec3) Load 442(f16v1) 454:151(f16vec3) Load 444(f16v2) 455: 154(bvec3) FOrdGreaterThanEqual 453 454 Store 441(bv) 455 456:151(f16vec3) Load 442(f16v1) 457:151(f16vec3) Load 444(f16v2) 458: 154(bvec3) FOrdEqual 456 457 Store 441(bv) 458 459:151(f16vec3) Load 442(f16v1) 460:151(f16vec3) Load 444(f16v2) 461: 154(bvec3) FUnordNotEqual 459 460 Store 441(bv) 461 Return FunctionEnd 26(builtinFragProcFuncs(): 2 Function None 3 27: Label 462(f16v): 152(ptr) Variable Function 466: 465(ptr) AccessChain 464(if16v) 34 467:28(float16_t) Load 466 468:28(float16_t) DPdx 467 469: 35(ptr) AccessChain 462(f16v) 34 Store 469 468 470: 465(ptr) AccessChain 464(if16v) 90 471:28(float16_t) Load 470 472:28(float16_t) DPdy 471 473: 35(ptr) AccessChain 462(f16v) 90 Store 473 472 474:151(f16vec3) Load 464(if16v) 475: 29(f16vec2) VectorShuffle 474 474 0 1 476: 29(f16vec2) DPdxFine 475 477: 35(ptr) AccessChain 462(f16v) 34 478:28(float16_t) CompositeExtract 476 0 Store 477 478 479: 35(ptr) AccessChain 462(f16v) 90 480:28(float16_t) CompositeExtract 476 1 Store 479 480 481:151(f16vec3) Load 464(if16v) 482: 29(f16vec2) VectorShuffle 481 481 0 1 483: 29(f16vec2) DPdyFine 482 484: 35(ptr) AccessChain 462(f16v) 34 485:28(float16_t) CompositeExtract 483 0 Store 484 485 486: 35(ptr) AccessChain 462(f16v) 90 487:28(float16_t) CompositeExtract 483 1 Store 486 487 488:151(f16vec3) Load 464(if16v) 489:151(f16vec3) DPdxCoarse 488 Store 462(f16v) 489 490:151(f16vec3) Load 464(if16v) 491:151(f16vec3) DPdxCoarse 490 Store 462(f16v) 491 492: 465(ptr) AccessChain 464(if16v) 34 493:28(float16_t) Load 492 494:28(float16_t) Fwidth 493 495: 35(ptr) AccessChain 462(f16v) 34 Store 495 494 496:151(f16vec3) Load 464(if16v) 497: 29(f16vec2) VectorShuffle 496 496 0 1 498: 29(f16vec2) FwidthFine 497 499: 35(ptr) AccessChain 462(f16v) 34 500:28(float16_t) CompositeExtract 498 0 Store 499 500 501: 35(ptr) AccessChain 462(f16v) 90 502:28(float16_t) CompositeExtract 498 1 Store 501 502 503:151(f16vec3) Load 464(if16v) 504:151(f16vec3) FwidthCoarse 503 Store 462(f16v) 504 505: 465(ptr) AccessChain 464(if16v) 34 506:28(float16_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 505 507: 35(ptr) AccessChain 462(f16v) 34 Store 507 506 509:151(f16vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 464(if16v) 508 510: 29(f16vec2) VectorShuffle 509 509 0 1 511: 35(ptr) AccessChain 462(f16v) 34 512:28(float16_t) CompositeExtract 510 0 Store 511 512 513: 35(ptr) AccessChain 462(f16v) 90 514:28(float16_t) CompositeExtract 510 1 Store 513 514 517:151(f16vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 464(if16v) 516 Store 462(f16v) 517 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.float16Fetch.frag.out000066400000000000000000013203571506534232700231660ustar00rootroot00000000000000spv.float16Fetch.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 5787 Capability Shader Capability Float16 Capability ImageGatherExtended Capability StorageImageMultisample Capability ImageCubeArray Capability ImageRect Capability SampledRect Capability InputAttachment Capability SparseResidency Capability MinLod Capability Sampled1D Capability Image1D Capability SampledCubeArray Capability SampledBuffer Capability ImageBuffer Capability ImageMSArray Capability ImageQuery Capability StorageInputOutput16 Capability Float16ImageAMD Capability ImageGatherBiasLodAMD Extension "SPV_AMD_gpu_shader_half_float_fetch" Extension "SPV_AMD_texture_gather_bias_lod" Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 128 135 137 148 156 169 177 215 251 309 565 572 1393 1400 1407 1414 1421 1428 4187 4194 5777 5786 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_gpu_shader_half_float" SourceExtension "GL_AMD_gpu_shader_half_float_fetch" SourceExtension "GL_AMD_texture_gather_bias_lod" SourceExtension "GL_ARB_sparse_texture2" SourceExtension "GL_ARB_sparse_texture_clamp" Name 4 "main" Name 9 "testTexture(" Name 11 "testTextureProj(" Name 13 "testTextureLod(" Name 15 "testTextureOffset(" Name 17 "testTextureProjOffset(" Name 19 "testTextureLodOffset(" Name 21 "testTextureProjLodOffset(" Name 23 "testTexelFetch(" Name 25 "testTexelFetchOffset(" Name 27 "testTextureGrad(" Name 29 "testTextureGradOffset(" Name 31 "testTextureProjGrad(" Name 33 "testTextureProjGradoffset(" Name 35 "testTextureGather(" Name 37 "testTextureGatherOffset(" Name 39 "testTextureGatherOffsets(" Name 41 "testTextureGatherLod(" Name 43 "testTextureGatherLodOffset(" Name 45 "testTextureGatherLodOffsets(" Name 50 "testTextureSize(" Name 55 "testTextureQueryLod(" Name 58 "testTextureQueryLevels(" Name 60 "testTextureSamples(" Name 62 "testImageLoad(" Name 67 "testImageStore(vf164;" Name 66 "data" Name 69 "testSparseTexture(" Name 71 "testSparseTextureLod(" Name 73 "testSparseTextureOffset(" Name 75 "testSparseTextureLodOffset(" Name 77 "testSparseTextureGrad(" Name 79 "testSparseTextureGradOffset(" Name 81 "testSparseTexelFetch(" Name 83 "testSparseTexelFetchOffset(" Name 85 "testSparseTextureGather(" Name 87 "testSparseTextureGatherOffset(" Name 89 "testSparseTextureGatherOffsets(" Name 91 "testSparseTextureGatherLod(" Name 93 "testSparseTextureGatherLodOffset(" Name 95 "testSparseTextureGatherLodOffsets(" Name 97 "testSparseImageLoad(" Name 99 "testSparseTextureClamp(" Name 101 "testTextureClamp(" Name 103 "testSparseTextureOffsetClamp(" Name 105 "testTextureOffsetClamp(" Name 107 "testSparseTextureGradClamp(" Name 109 "testTextureGradClamp(" Name 111 "testSparseTextureGradOffsetClamp(" Name 113 "testTextureGradOffsetClamp(" Name 115 "testCombinedTextureSampler(" Name 117 "testSubpassLoad(" Name 119 "texel" Name 125 "s1D" Name 128 "c1" Name 135 "f16c1" Name 137 "f16bias" Name 145 "s2D" Name 148 "c2" Name 156 "f16c2" Name 165 "s3D" Name 169 "c3" Name 177 "f16c3" Name 186 "sCube" Name 201 "s1DShadow" Name 215 "compare" Name 226 "s2DShadow" Name 247 "sCubeShadow" Name 251 "c4" Name 271 "s1DArray" Name 286 "s2DArray" Name 301 "sCubeArray" Name 309 "f16c4" Name 318 "s1DArrayShadow" Name 339 "s2DArrayShadow" Name 359 "s2DRect" Name 373 "s2DRectShadow" Name 393 "sCubeArrayShadow" Name 413 "texel" Name 562 "texel" Name 565 "lod" Name 572 "f16lod" Name 706 "texel" Name 863 "texel" Name 1012 "texel" Name 1130 "texel" Name 1244 "texel" Name 1300 "sBuffer" Name 1311 "s2DMS" Name 1322 "s2DMSArray" Name 1334 "texel" Name 1390 "texel" Name 1393 "dPdxy1" Name 1400 "f16dPdxy1" Name 1407 "dPdxy2" Name 1414 "f16dPdxy2" Name 1421 "dPdxy3" Name 1428 "f16dPdxy3" Name 1604 "texel" Name 1770 "texel" Name 1932 "texel" Name 2094 "texel" Name 2213 "texel" Name 2285 "texel" Name 2360 "texel" Name 2412 "texel" Name 2440 "texel" Name 2469 "size" Name 2687 "lod" Name 2823 "levels" Name 2892 "samples" Name 2906 "texel" Name 2909 "i1D" Name 2918 "i2D" Name 2927 "i3D" Name 2936 "i2DRect" Name 2945 "iCube" Name 2954 "iBuffer" Name 2963 "i1DArray" Name 2972 "i2DArray" Name 2981 "iCubeArray" Name 2990 "i2DMS" Name 2999 "i2DMSArray" Name 3053 "texel" Name 3056 "ResType" Name 3092 "ResType" Name 3196 "texel" Name 3276 "texel" Name 3366 "texel" Name 3422 "texel" Name 3562 "texel" Name 3662 "texel" Name 3714 "texel" Name 3752 "texel" Name 3870 "texel" Name 3942 "texel" Name 4024 "texel" Name 4076 "texel" Name 4104 "texel" Name 4132 "texel" Name 4184 "texel" Name 4187 "lodClamp" Name 4194 "f16lodClamp" Name 4321 "texel" Name 4528 "texel" Name 4604 "texel" Name 4748 "texel" Name 4876 "texel" Name 5078 "texel" Name 5160 "texel" Name 5314 "texel" Name 5316 "t1D" Name 5320 "s" Name 5336 "t2D" Name 5353 "t3D" Name 5370 "tCube" Name 5387 "sShadow" Name 5451 "t1DArray" Name 5468 "t2DArray" Name 5485 "tCubeArray" Name 5543 "t2DRect" Name 5603 "subpass" Name 5609 "subpassMS" Name 5615 "result" Name 5698 "param" Name 5777 "fragColor" Name 5781 "tBuffer" Name 5783 "t2DMS" Name 5785 "t2DMSArray" Name 5786 "bias" Decorate 125(s1D) Binding 0 Decorate 125(s1D) DescriptorSet 0 Decorate 128(c1) Location 0 Decorate 135(f16c1) Location 11 Decorate 137(f16bias) Location 16 Decorate 145(s2D) Binding 1 Decorate 145(s2D) DescriptorSet 0 Decorate 148(c2) Location 1 Decorate 156(f16c2) Location 12 Decorate 165(s3D) Binding 2 Decorate 165(s3D) DescriptorSet 0 Decorate 169(c3) Location 2 Decorate 177(f16c3) Location 13 Decorate 186(sCube) Binding 4 Decorate 186(sCube) DescriptorSet 0 Decorate 201(s1DShadow) Binding 11 Decorate 201(s1DShadow) DescriptorSet 0 Decorate 215(compare) Location 4 Decorate 226(s2DShadow) Binding 12 Decorate 226(s2DShadow) DescriptorSet 0 Decorate 247(sCubeShadow) Binding 14 Decorate 247(sCubeShadow) DescriptorSet 0 Decorate 251(c4) Location 3 Decorate 271(s1DArray) Binding 7 Decorate 271(s1DArray) DescriptorSet 0 Decorate 286(s2DArray) Binding 8 Decorate 286(s2DArray) DescriptorSet 0 Decorate 301(sCubeArray) Binding 9 Decorate 301(sCubeArray) DescriptorSet 0 Decorate 309(f16c4) Location 14 Decorate 318(s1DArrayShadow) Binding 15 Decorate 318(s1DArrayShadow) DescriptorSet 0 Decorate 339(s2DArrayShadow) Binding 16 Decorate 339(s2DArrayShadow) DescriptorSet 0 Decorate 359(s2DRect) Binding 3 Decorate 359(s2DRect) DescriptorSet 0 Decorate 373(s2DRectShadow) Binding 13 Decorate 373(s2DRectShadow) DescriptorSet 0 Decorate 393(sCubeArrayShadow) Binding 17 Decorate 393(sCubeArrayShadow) DescriptorSet 0 Decorate 565(lod) Location 5 Decorate 572(f16lod) Location 15 Decorate 1300(sBuffer) Binding 5 Decorate 1300(sBuffer) DescriptorSet 0 Decorate 1311(s2DMS) Binding 6 Decorate 1311(s2DMS) DescriptorSet 0 Decorate 1322(s2DMSArray) Binding 10 Decorate 1322(s2DMSArray) DescriptorSet 0 Decorate 1393(dPdxy1) Location 8 Decorate 1400(f16dPdxy1) Location 18 Decorate 1407(dPdxy2) Location 9 Decorate 1414(f16dPdxy2) Location 19 Decorate 1421(dPdxy3) Location 10 Decorate 1428(f16dPdxy3) Location 20 Decorate 2909(i1D) Binding 0 Decorate 2909(i1D) DescriptorSet 1 Decorate 2918(i2D) Binding 1 Decorate 2918(i2D) DescriptorSet 1 Decorate 2927(i3D) Binding 2 Decorate 2927(i3D) DescriptorSet 1 Decorate 2936(i2DRect) Binding 3 Decorate 2936(i2DRect) DescriptorSet 1 Decorate 2945(iCube) Binding 4 Decorate 2945(iCube) DescriptorSet 1 Decorate 2954(iBuffer) Binding 8 Decorate 2954(iBuffer) DescriptorSet 1 Decorate 2963(i1DArray) Binding 5 Decorate 2963(i1DArray) DescriptorSet 1 Decorate 2972(i2DArray) Binding 6 Decorate 2972(i2DArray) DescriptorSet 1 Decorate 2981(iCubeArray) Binding 7 Decorate 2981(iCubeArray) DescriptorSet 1 Decorate 2990(i2DMS) Binding 9 Decorate 2990(i2DMS) DescriptorSet 1 Decorate 2999(i2DMSArray) Binding 10 Decorate 2999(i2DMSArray) DescriptorSet 1 Decorate 4187(lodClamp) Location 7 Decorate 4194(f16lodClamp) Location 17 Decorate 5316(t1D) Binding 0 Decorate 5316(t1D) DescriptorSet 2 Decorate 5320(s) Binding 11 Decorate 5320(s) DescriptorSet 2 Decorate 5336(t2D) Binding 1 Decorate 5336(t2D) DescriptorSet 2 Decorate 5353(t3D) Binding 2 Decorate 5353(t3D) DescriptorSet 2 Decorate 5370(tCube) Binding 4 Decorate 5370(tCube) DescriptorSet 2 Decorate 5387(sShadow) Binding 12 Decorate 5387(sShadow) DescriptorSet 2 Decorate 5451(t1DArray) Binding 5 Decorate 5451(t1DArray) DescriptorSet 2 Decorate 5468(t2DArray) Binding 6 Decorate 5468(t2DArray) DescriptorSet 2 Decorate 5485(tCubeArray) Binding 7 Decorate 5485(tCubeArray) DescriptorSet 2 Decorate 5543(t2DRect) Binding 3 Decorate 5543(t2DRect) DescriptorSet 2 Decorate 5603(subpass) Binding 0 Decorate 5603(subpass) DescriptorSet 3 Decorate 5603(subpass) InputAttachmentIndex 0 Decorate 5609(subpassMS) Binding 1 Decorate 5609(subpassMS) DescriptorSet 3 Decorate 5609(subpassMS) InputAttachmentIndex 0 Decorate 5777(fragColor) Location 0 Decorate 5781(tBuffer) Binding 8 Decorate 5781(tBuffer) DescriptorSet 2 Decorate 5783(t2DMS) Binding 9 Decorate 5783(t2DMS) DescriptorSet 2 Decorate 5785(t2DMSArray) Binding 10 Decorate 5785(t2DMSArray) DescriptorSet 2 Decorate 5786(bias) Location 6 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeVector 6(float16_t) 4 8: TypeFunction 7(f16vec4) 47: TypeInt 32 1 48: TypeVector 47(int) 4 49: TypeFunction 48(ivec4) 52: TypeFloat 32 53: TypeVector 52(float) 2 54: TypeFunction 53(fvec2) 57: TypeFunction 47(int) 64: TypePointer Function 7(f16vec4) 65: TypeFunction 2 64(ptr) 120:6(float16_t) Constant 0 121: 7(f16vec4) ConstantComposite 120 120 120 120 122: TypeImage 6(float16_t) 1D sampled format:Unknown 123: TypeSampledImage 122 124: TypePointer UniformConstant 123 125(s1D): 124(ptr) Variable UniformConstant 127: TypePointer Input 52(float) 128(c1): 127(ptr) Variable Input 134: TypePointer Input 6(float16_t) 135(f16c1): 134(ptr) Variable Input 137(f16bias): 134(ptr) Variable Input 142: TypeImage 6(float16_t) 2D sampled format:Unknown 143: TypeSampledImage 142 144: TypePointer UniformConstant 143 145(s2D): 144(ptr) Variable UniformConstant 147: TypePointer Input 53(fvec2) 148(c2): 147(ptr) Variable Input 154: TypeVector 6(float16_t) 2 155: TypePointer Input 154(f16vec2) 156(f16c2): 155(ptr) Variable Input 162: TypeImage 6(float16_t) 3D sampled format:Unknown 163: TypeSampledImage 162 164: TypePointer UniformConstant 163 165(s3D): 164(ptr) Variable UniformConstant 167: TypeVector 52(float) 3 168: TypePointer Input 167(fvec3) 169(c3): 168(ptr) Variable Input 175: TypeVector 6(float16_t) 3 176: TypePointer Input 175(f16vec3) 177(f16c3): 176(ptr) Variable Input 183: TypeImage 6(float16_t) Cube sampled format:Unknown 184: TypeSampledImage 183 185: TypePointer UniformConstant 184 186(sCube): 185(ptr) Variable UniformConstant 198: TypeImage 6(float16_t) 1D depth sampled format:Unknown 199: TypeSampledImage 198 200: TypePointer UniformConstant 199 201(s1DShadow): 200(ptr) Variable UniformConstant 206: TypeInt 32 0 207: 206(int) Constant 0 208: TypePointer Function 6(float16_t) 215(compare): 127(ptr) Variable Input 223: TypeImage 6(float16_t) 2D depth sampled format:Unknown 224: TypeSampledImage 223 225: TypePointer UniformConstant 224 226(s2DShadow): 225(ptr) Variable UniformConstant 244: TypeImage 6(float16_t) Cube depth sampled format:Unknown 245: TypeSampledImage 244 246: TypePointer UniformConstant 245 247(sCubeShadow): 246(ptr) Variable UniformConstant 249: TypeVector 52(float) 4 250: TypePointer Input 249(fvec4) 251(c4): 250(ptr) Variable Input 268: TypeImage 6(float16_t) 1D array sampled format:Unknown 269: TypeSampledImage 268 270: TypePointer UniformConstant 269 271(s1DArray): 270(ptr) Variable UniformConstant 283: TypeImage 6(float16_t) 2D array sampled format:Unknown 284: TypeSampledImage 283 285: TypePointer UniformConstant 284 286(s2DArray): 285(ptr) Variable UniformConstant 298: TypeImage 6(float16_t) Cube array sampled format:Unknown 299: TypeSampledImage 298 300: TypePointer UniformConstant 299 301(sCubeArray): 300(ptr) Variable UniformConstant 308: TypePointer Input 7(f16vec4) 309(f16c4): 308(ptr) Variable Input 315: TypeImage 6(float16_t) 1D depth array sampled format:Unknown 316: TypeSampledImage 315 317: TypePointer UniformConstant 316 318(s1DArrayShadow): 317(ptr) Variable UniformConstant 336: TypeImage 6(float16_t) 2D depth array sampled format:Unknown 337: TypeSampledImage 336 338: TypePointer UniformConstant 337 339(s2DArrayShadow): 338(ptr) Variable UniformConstant 356: TypeImage 6(float16_t) Rect sampled format:Unknown 357: TypeSampledImage 356 358: TypePointer UniformConstant 357 359(s2DRect): 358(ptr) Variable UniformConstant 370: TypeImage 6(float16_t) Rect depth sampled format:Unknown 371: TypeSampledImage 370 372: TypePointer UniformConstant 371 373(s2DRectShadow): 372(ptr) Variable UniformConstant 390: TypeImage 6(float16_t) Cube depth array sampled format:Unknown 391: TypeSampledImage 390 392: TypePointer UniformConstant 391 393(sCubeArrayShadow): 392(ptr) Variable UniformConstant 565(lod): 127(ptr) Variable Input 572(f16lod): 134(ptr) Variable Input 709: 47(int) Constant 1 721: TypeVector 47(int) 2 722: 721(ivec2) ConstantComposite 709 709 734: TypeVector 47(int) 3 735: 734(ivec3) ConstantComposite 709 709 709 1297: TypeImage 6(float16_t) Buffer sampled format:Unknown 1298: TypeSampledImage 1297 1299: TypePointer UniformConstant 1298 1300(sBuffer): 1299(ptr) Variable UniformConstant 1308: TypeImage 6(float16_t) 2D multi-sampled sampled format:Unknown 1309: TypeSampledImage 1308 1310: TypePointer UniformConstant 1309 1311(s2DMS): 1310(ptr) Variable UniformConstant 1319: TypeImage 6(float16_t) 2D array multi-sampled sampled format:Unknown 1320: TypeSampledImage 1319 1321: TypePointer UniformConstant 1320 1322(s2DMSArray): 1321(ptr) Variable UniformConstant 1326: 47(int) Constant 2 1393(dPdxy1): 127(ptr) Variable Input 1400(f16dPdxy1): 134(ptr) Variable Input 1407(dPdxy2): 147(ptr) Variable Input 1414(f16dPdxy2): 155(ptr) Variable Input 1421(dPdxy3): 168(ptr) Variable Input 1428(f16dPdxy3): 176(ptr) Variable Input 2097: 47(int) Constant 0 2288: 206(int) Constant 4 2289: TypeArray 721(ivec2) 2288 2290: 2289 ConstantComposite 722 722 722 722 2468: TypePointer Function 48(ivec4) 2470: 48(ivec4) ConstantComposite 2097 2097 2097 2097 2476: TypePointer Function 47(int) 2491: 206(int) Constant 1 2506: 206(int) Constant 2 2686: TypePointer Function 53(fvec2) 2688: 52(float) Constant 0 2689: 53(fvec2) ConstantComposite 2688 2688 2907: TypeImage 6(float16_t) 1D nonsampled format:Rgba16f 2908: TypePointer UniformConstant 2907 2909(i1D): 2908(ptr) Variable UniformConstant 2916: TypeImage 6(float16_t) 2D nonsampled format:Rgba16f 2917: TypePointer UniformConstant 2916 2918(i2D): 2917(ptr) Variable UniformConstant 2925: TypeImage 6(float16_t) 3D nonsampled format:Rgba16f 2926: TypePointer UniformConstant 2925 2927(i3D): 2926(ptr) Variable UniformConstant 2934: TypeImage 6(float16_t) Rect nonsampled format:Rgba16f 2935: TypePointer UniformConstant 2934 2936(i2DRect): 2935(ptr) Variable UniformConstant 2943: TypeImage 6(float16_t) Cube nonsampled format:Rgba16f 2944: TypePointer UniformConstant 2943 2945(iCube): 2944(ptr) Variable UniformConstant 2952: TypeImage 6(float16_t) Buffer nonsampled format:Rgba16f 2953: TypePointer UniformConstant 2952 2954(iBuffer): 2953(ptr) Variable UniformConstant 2961: TypeImage 6(float16_t) 1D array nonsampled format:Rgba16f 2962: TypePointer UniformConstant 2961 2963(i1DArray): 2962(ptr) Variable UniformConstant 2970: TypeImage 6(float16_t) 2D array nonsampled format:Rgba16f 2971: TypePointer UniformConstant 2970 2972(i2DArray): 2971(ptr) Variable UniformConstant 2979: TypeImage 6(float16_t) Cube array nonsampled format:Rgba16f 2980: TypePointer UniformConstant 2979 2981(iCubeArray): 2980(ptr) Variable UniformConstant 2988: TypeImage 6(float16_t) 2D multi-sampled nonsampled format:Rgba16f 2989: TypePointer UniformConstant 2988 2990(i2DMS): 2989(ptr) Variable UniformConstant 2997: TypeImage 6(float16_t) 2D array multi-sampled nonsampled format:Rgba16f 2998: TypePointer UniformConstant 2997 2999(i2DMSArray): 2998(ptr) Variable UniformConstant 3056(ResType): TypeStruct 47(int) 7(f16vec4) 3092(ResType): TypeStruct 47(int) 6(float16_t) 3945: 721(ivec2) ConstantComposite 709 1326 3946: 47(int) Constant 3 3947: 47(int) Constant 4 3948: 721(ivec2) ConstantComposite 3946 3947 3949: 47(int) Constant 15 3950: 47(int) Constant 16 3951: 721(ivec2) ConstantComposite 3949 3950 3952: 47(int) Constant 4294967294 3953: 721(ivec2) ConstantComposite 3952 2097 3954: 2289 ConstantComposite 3945 3948 3951 3953 4187(lodClamp): 127(ptr) Variable Input 4194(f16lodClamp): 134(ptr) Variable Input 5315: TypePointer UniformConstant 122 5316(t1D): 5315(ptr) Variable UniformConstant 5318: TypeSampler 5319: TypePointer UniformConstant 5318 5320(s): 5319(ptr) Variable UniformConstant 5335: TypePointer UniformConstant 142 5336(t2D): 5335(ptr) Variable UniformConstant 5352: TypePointer UniformConstant 162 5353(t3D): 5352(ptr) Variable UniformConstant 5369: TypePointer UniformConstant 183 5370(tCube): 5369(ptr) Variable UniformConstant 5387(sShadow): 5319(ptr) Variable UniformConstant 5450: TypePointer UniformConstant 268 5451(t1DArray): 5450(ptr) Variable UniformConstant 5467: TypePointer UniformConstant 283 5468(t2DArray): 5467(ptr) Variable UniformConstant 5484: TypePointer UniformConstant 298 5485(tCubeArray): 5484(ptr) Variable UniformConstant 5542: TypePointer UniformConstant 356 5543(t2DRect): 5542(ptr) Variable UniformConstant 5601: TypeImage 6(float16_t) SubpassData nonsampled format:Unknown 5602: TypePointer UniformConstant 5601 5603(subpass): 5602(ptr) Variable UniformConstant 5605: 721(ivec2) ConstantComposite 2097 2097 5607: TypeImage 6(float16_t) SubpassData multi-sampled nonsampled format:Unknown 5608: TypePointer UniformConstant 5607 5609(subpassMS): 5608(ptr) Variable UniformConstant 5776: TypePointer Output 249(fvec4) 5777(fragColor): 5776(ptr) Variable Output 5780: TypePointer UniformConstant 1297 5781(tBuffer): 5780(ptr) Variable UniformConstant 5782: TypePointer UniformConstant 1308 5783(t2DMS): 5782(ptr) Variable UniformConstant 5784: TypePointer UniformConstant 1319 5785(t2DMSArray): 5784(ptr) Variable UniformConstant 5786(bias): 127(ptr) Variable Input 4(main): 2 Function None 3 5: Label 5615(result): 64(ptr) Variable Function 5698(param): 64(ptr) Variable Function Store 5615(result) 121 5616: 7(f16vec4) FunctionCall 9(testTexture() 5617: 7(f16vec4) Load 5615(result) 5618: 7(f16vec4) FAdd 5617 5616 Store 5615(result) 5618 5619: 7(f16vec4) FunctionCall 11(testTextureProj() 5620: 7(f16vec4) Load 5615(result) 5621: 7(f16vec4) FAdd 5620 5619 Store 5615(result) 5621 5622: 7(f16vec4) FunctionCall 13(testTextureLod() 5623: 7(f16vec4) Load 5615(result) 5624: 7(f16vec4) FAdd 5623 5622 Store 5615(result) 5624 5625: 7(f16vec4) FunctionCall 15(testTextureOffset() 5626: 7(f16vec4) Load 5615(result) 5627: 7(f16vec4) FAdd 5626 5625 Store 5615(result) 5627 5628: 7(f16vec4) FunctionCall 19(testTextureLodOffset() 5629: 7(f16vec4) Load 5615(result) 5630: 7(f16vec4) FAdd 5629 5628 Store 5615(result) 5630 5631: 7(f16vec4) FunctionCall 21(testTextureProjLodOffset() 5632: 7(f16vec4) Load 5615(result) 5633: 7(f16vec4) FAdd 5632 5631 Store 5615(result) 5633 5634: 7(f16vec4) FunctionCall 23(testTexelFetch() 5635: 7(f16vec4) Load 5615(result) 5636: 7(f16vec4) FAdd 5635 5634 Store 5615(result) 5636 5637: 7(f16vec4) FunctionCall 25(testTexelFetchOffset() 5638: 7(f16vec4) Load 5615(result) 5639: 7(f16vec4) FAdd 5638 5637 Store 5615(result) 5639 5640: 7(f16vec4) FunctionCall 27(testTextureGrad() 5641: 7(f16vec4) Load 5615(result) 5642: 7(f16vec4) FAdd 5641 5640 Store 5615(result) 5642 5643: 7(f16vec4) FunctionCall 29(testTextureGradOffset() 5644: 7(f16vec4) Load 5615(result) 5645: 7(f16vec4) FAdd 5644 5643 Store 5615(result) 5645 5646: 7(f16vec4) FunctionCall 31(testTextureProjGrad() 5647: 7(f16vec4) Load 5615(result) 5648: 7(f16vec4) FAdd 5647 5646 Store 5615(result) 5648 5649: 7(f16vec4) FunctionCall 33(testTextureProjGradoffset() 5650: 7(f16vec4) Load 5615(result) 5651: 7(f16vec4) FAdd 5650 5649 Store 5615(result) 5651 5652: 7(f16vec4) FunctionCall 35(testTextureGather() 5653: 7(f16vec4) Load 5615(result) 5654: 7(f16vec4) FAdd 5653 5652 Store 5615(result) 5654 5655: 7(f16vec4) FunctionCall 37(testTextureGatherOffset() 5656: 7(f16vec4) Load 5615(result) 5657: 7(f16vec4) FAdd 5656 5655 Store 5615(result) 5657 5658: 7(f16vec4) FunctionCall 39(testTextureGatherOffsets() 5659: 7(f16vec4) Load 5615(result) 5660: 7(f16vec4) FAdd 5659 5658 Store 5615(result) 5660 5661: 7(f16vec4) FunctionCall 41(testTextureGatherLod() 5662: 7(f16vec4) Load 5615(result) 5663: 7(f16vec4) FAdd 5662 5661 Store 5615(result) 5663 5664: 7(f16vec4) FunctionCall 43(testTextureGatherLodOffset() 5665: 7(f16vec4) Load 5615(result) 5666: 7(f16vec4) FAdd 5665 5664 Store 5615(result) 5666 5667: 7(f16vec4) FunctionCall 45(testTextureGatherLodOffsets() 5668: 7(f16vec4) Load 5615(result) 5669: 7(f16vec4) FAdd 5668 5667 Store 5615(result) 5669 5670: 48(ivec4) FunctionCall 50(testTextureSize() 5671: 7(f16vec4) ConvertSToF 5670 5672: 7(f16vec4) Load 5615(result) 5673: 7(f16vec4) FAdd 5672 5671 Store 5615(result) 5673 5674: 53(fvec2) FunctionCall 55(testTextureQueryLod() 5675:154(f16vec2) FConvert 5674 5676: 7(f16vec4) Load 5615(result) 5677:154(f16vec2) VectorShuffle 5676 5676 0 1 5678:154(f16vec2) FAdd 5677 5675 5679: 208(ptr) AccessChain 5615(result) 207 5680:6(float16_t) CompositeExtract 5678 0 Store 5679 5680 5681: 208(ptr) AccessChain 5615(result) 2491 5682:6(float16_t) CompositeExtract 5678 1 Store 5681 5682 5683: 47(int) FunctionCall 58(testTextureQueryLevels() 5684:6(float16_t) ConvertSToF 5683 5685: 208(ptr) AccessChain 5615(result) 207 5686:6(float16_t) Load 5685 5687:6(float16_t) FAdd 5686 5684 5688: 208(ptr) AccessChain 5615(result) 207 Store 5688 5687 5689: 47(int) FunctionCall 60(testTextureSamples() 5690:6(float16_t) ConvertSToF 5689 5691: 208(ptr) AccessChain 5615(result) 207 5692:6(float16_t) Load 5691 5693:6(float16_t) FAdd 5692 5690 5694: 208(ptr) AccessChain 5615(result) 207 Store 5694 5693 5695: 7(f16vec4) FunctionCall 62(testImageLoad() 5696: 7(f16vec4) Load 5615(result) 5697: 7(f16vec4) FAdd 5696 5695 Store 5615(result) 5697 5699: 7(f16vec4) Load 5615(result) Store 5698(param) 5699 5700: 2 FunctionCall 67(testImageStore(vf164;) 5698(param) 5701: 7(f16vec4) FunctionCall 69(testSparseTexture() 5702: 7(f16vec4) Load 5615(result) 5703: 7(f16vec4) FAdd 5702 5701 Store 5615(result) 5703 5704: 7(f16vec4) FunctionCall 71(testSparseTextureLod() 5705: 7(f16vec4) Load 5615(result) 5706: 7(f16vec4) FAdd 5705 5704 Store 5615(result) 5706 5707: 7(f16vec4) FunctionCall 73(testSparseTextureOffset() 5708: 7(f16vec4) Load 5615(result) 5709: 7(f16vec4) FAdd 5708 5707 Store 5615(result) 5709 5710: 7(f16vec4) FunctionCall 75(testSparseTextureLodOffset() 5711: 7(f16vec4) Load 5615(result) 5712: 7(f16vec4) FAdd 5711 5710 Store 5615(result) 5712 5713: 7(f16vec4) FunctionCall 77(testSparseTextureGrad() 5714: 7(f16vec4) Load 5615(result) 5715: 7(f16vec4) FAdd 5714 5713 Store 5615(result) 5715 5716: 7(f16vec4) FunctionCall 79(testSparseTextureGradOffset() 5717: 7(f16vec4) Load 5615(result) 5718: 7(f16vec4) FAdd 5717 5716 Store 5615(result) 5718 5719: 7(f16vec4) FunctionCall 81(testSparseTexelFetch() 5720: 7(f16vec4) Load 5615(result) 5721: 7(f16vec4) FAdd 5720 5719 Store 5615(result) 5721 5722: 7(f16vec4) FunctionCall 83(testSparseTexelFetchOffset() 5723: 7(f16vec4) Load 5615(result) 5724: 7(f16vec4) FAdd 5723 5722 Store 5615(result) 5724 5725: 7(f16vec4) FunctionCall 85(testSparseTextureGather() 5726: 7(f16vec4) Load 5615(result) 5727: 7(f16vec4) FAdd 5726 5725 Store 5615(result) 5727 5728: 7(f16vec4) FunctionCall 87(testSparseTextureGatherOffset() 5729: 7(f16vec4) Load 5615(result) 5730: 7(f16vec4) FAdd 5729 5728 Store 5615(result) 5730 5731: 7(f16vec4) FunctionCall 89(testSparseTextureGatherOffsets() 5732: 7(f16vec4) Load 5615(result) 5733: 7(f16vec4) FAdd 5732 5731 Store 5615(result) 5733 5734: 7(f16vec4) FunctionCall 91(testSparseTextureGatherLod() 5735: 7(f16vec4) Load 5615(result) 5736: 7(f16vec4) FAdd 5735 5734 Store 5615(result) 5736 5737: 7(f16vec4) FunctionCall 93(testSparseTextureGatherLodOffset() 5738: 7(f16vec4) Load 5615(result) 5739: 7(f16vec4) FAdd 5738 5737 Store 5615(result) 5739 5740: 7(f16vec4) FunctionCall 95(testSparseTextureGatherLodOffsets() 5741: 7(f16vec4) Load 5615(result) 5742: 7(f16vec4) FAdd 5741 5740 Store 5615(result) 5742 5743: 7(f16vec4) FunctionCall 97(testSparseImageLoad() 5744: 7(f16vec4) Load 5615(result) 5745: 7(f16vec4) FAdd 5744 5743 Store 5615(result) 5745 5746: 7(f16vec4) FunctionCall 99(testSparseTextureClamp() 5747: 7(f16vec4) Load 5615(result) 5748: 7(f16vec4) FAdd 5747 5746 Store 5615(result) 5748 5749: 7(f16vec4) FunctionCall 101(testTextureClamp() 5750: 7(f16vec4) Load 5615(result) 5751: 7(f16vec4) FAdd 5750 5749 Store 5615(result) 5751 5752: 7(f16vec4) FunctionCall 103(testSparseTextureOffsetClamp() 5753: 7(f16vec4) Load 5615(result) 5754: 7(f16vec4) FAdd 5753 5752 Store 5615(result) 5754 5755: 7(f16vec4) FunctionCall 105(testTextureOffsetClamp() 5756: 7(f16vec4) Load 5615(result) 5757: 7(f16vec4) FAdd 5756 5755 Store 5615(result) 5757 5758: 7(f16vec4) FunctionCall 77(testSparseTextureGrad() 5759: 7(f16vec4) Load 5615(result) 5760: 7(f16vec4) FAdd 5759 5758 Store 5615(result) 5760 5761: 7(f16vec4) FunctionCall 27(testTextureGrad() 5762: 7(f16vec4) Load 5615(result) 5763: 7(f16vec4) FAdd 5762 5761 Store 5615(result) 5763 5764: 7(f16vec4) FunctionCall 111(testSparseTextureGradOffsetClamp() 5765: 7(f16vec4) Load 5615(result) 5766: 7(f16vec4) FAdd 5765 5764 Store 5615(result) 5766 5767: 7(f16vec4) FunctionCall 113(testTextureGradOffsetClamp() 5768: 7(f16vec4) Load 5615(result) 5769: 7(f16vec4) FAdd 5768 5767 Store 5615(result) 5769 5770: 7(f16vec4) FunctionCall 115(testCombinedTextureSampler() 5771: 7(f16vec4) Load 5615(result) 5772: 7(f16vec4) FAdd 5771 5770 Store 5615(result) 5772 5773: 7(f16vec4) FunctionCall 117(testSubpassLoad() 5774: 7(f16vec4) Load 5615(result) 5775: 7(f16vec4) FAdd 5774 5773 Store 5615(result) 5775 5778: 7(f16vec4) Load 5615(result) 5779: 249(fvec4) FConvert 5778 Store 5777(fragColor) 5779 Return FunctionEnd 9(testTexture(): 7(f16vec4) Function None 8 10: Label 119(texel): 64(ptr) Variable Function Store 119(texel) 121 126: 123 Load 125(s1D) 129: 52(float) Load 128(c1) 130: 7(f16vec4) ImageSampleImplicitLod 126 129 131: 7(f16vec4) Load 119(texel) 132: 7(f16vec4) FAdd 131 130 Store 119(texel) 132 133: 123 Load 125(s1D) 136:6(float16_t) Load 135(f16c1) 138:6(float16_t) Load 137(f16bias) 139: 7(f16vec4) ImageSampleImplicitLod 133 136 Bias 138 140: 7(f16vec4) Load 119(texel) 141: 7(f16vec4) FAdd 140 139 Store 119(texel) 141 146: 143 Load 145(s2D) 149: 53(fvec2) Load 148(c2) 150: 7(f16vec4) ImageSampleImplicitLod 146 149 151: 7(f16vec4) Load 119(texel) 152: 7(f16vec4) FAdd 151 150 Store 119(texel) 152 153: 143 Load 145(s2D) 157:154(f16vec2) Load 156(f16c2) 158:6(float16_t) Load 137(f16bias) 159: 7(f16vec4) ImageSampleImplicitLod 153 157 Bias 158 160: 7(f16vec4) Load 119(texel) 161: 7(f16vec4) FAdd 160 159 Store 119(texel) 161 166: 163 Load 165(s3D) 170: 167(fvec3) Load 169(c3) 171: 7(f16vec4) ImageSampleImplicitLod 166 170 172: 7(f16vec4) Load 119(texel) 173: 7(f16vec4) FAdd 172 171 Store 119(texel) 173 174: 163 Load 165(s3D) 178:175(f16vec3) Load 177(f16c3) 179:6(float16_t) Load 137(f16bias) 180: 7(f16vec4) ImageSampleImplicitLod 174 178 Bias 179 181: 7(f16vec4) Load 119(texel) 182: 7(f16vec4) FAdd 181 180 Store 119(texel) 182 187: 184 Load 186(sCube) 188: 167(fvec3) Load 169(c3) 189: 7(f16vec4) ImageSampleImplicitLod 187 188 190: 7(f16vec4) Load 119(texel) 191: 7(f16vec4) FAdd 190 189 Store 119(texel) 191 192: 184 Load 186(sCube) 193:175(f16vec3) Load 177(f16c3) 194:6(float16_t) Load 137(f16bias) 195: 7(f16vec4) ImageSampleImplicitLod 192 193 Bias 194 196: 7(f16vec4) Load 119(texel) 197: 7(f16vec4) FAdd 196 195 Store 119(texel) 197 202: 199 Load 201(s1DShadow) 203: 167(fvec3) Load 169(c3) 204: 52(float) CompositeExtract 203 2 205:6(float16_t) ImageSampleDrefImplicitLod 202 203 204 209: 208(ptr) AccessChain 119(texel) 207 210:6(float16_t) Load 209 211:6(float16_t) FAdd 210 205 212: 208(ptr) AccessChain 119(texel) 207 Store 212 211 213: 199 Load 201(s1DShadow) 214:154(f16vec2) Load 156(f16c2) 216: 52(float) Load 215(compare) 217:6(float16_t) Load 137(f16bias) 218:6(float16_t) ImageSampleDrefImplicitLod 213 214 216 Bias 217 219: 208(ptr) AccessChain 119(texel) 207 220:6(float16_t) Load 219 221:6(float16_t) FAdd 220 218 222: 208(ptr) AccessChain 119(texel) 207 Store 222 221 227: 224 Load 226(s2DShadow) 228: 167(fvec3) Load 169(c3) 229: 52(float) CompositeExtract 228 2 230:6(float16_t) ImageSampleDrefImplicitLod 227 228 229 231: 208(ptr) AccessChain 119(texel) 207 232:6(float16_t) Load 231 233:6(float16_t) FAdd 232 230 234: 208(ptr) AccessChain 119(texel) 207 Store 234 233 235: 224 Load 226(s2DShadow) 236:154(f16vec2) Load 156(f16c2) 237: 52(float) Load 215(compare) 238:6(float16_t) Load 137(f16bias) 239:6(float16_t) ImageSampleDrefImplicitLod 235 236 237 Bias 238 240: 208(ptr) AccessChain 119(texel) 207 241:6(float16_t) Load 240 242:6(float16_t) FAdd 241 239 243: 208(ptr) AccessChain 119(texel) 207 Store 243 242 248: 245 Load 247(sCubeShadow) 252: 249(fvec4) Load 251(c4) 253: 52(float) CompositeExtract 252 3 254:6(float16_t) ImageSampleDrefImplicitLod 248 252 253 255: 208(ptr) AccessChain 119(texel) 207 256:6(float16_t) Load 255 257:6(float16_t) FAdd 256 254 258: 208(ptr) AccessChain 119(texel) 207 Store 258 257 259: 245 Load 247(sCubeShadow) 260:175(f16vec3) Load 177(f16c3) 261: 52(float) Load 215(compare) 262:6(float16_t) Load 137(f16bias) 263:6(float16_t) ImageSampleDrefImplicitLod 259 260 261 Bias 262 264: 208(ptr) AccessChain 119(texel) 207 265:6(float16_t) Load 264 266:6(float16_t) FAdd 265 263 267: 208(ptr) AccessChain 119(texel) 207 Store 267 266 272: 269 Load 271(s1DArray) 273: 53(fvec2) Load 148(c2) 274: 7(f16vec4) ImageSampleImplicitLod 272 273 275: 7(f16vec4) Load 119(texel) 276: 7(f16vec4) FAdd 275 274 Store 119(texel) 276 277: 269 Load 271(s1DArray) 278:154(f16vec2) Load 156(f16c2) 279:6(float16_t) Load 137(f16bias) 280: 7(f16vec4) ImageSampleImplicitLod 277 278 Bias 279 281: 7(f16vec4) Load 119(texel) 282: 7(f16vec4) FAdd 281 280 Store 119(texel) 282 287: 284 Load 286(s2DArray) 288: 167(fvec3) Load 169(c3) 289: 7(f16vec4) ImageSampleImplicitLod 287 288 290: 7(f16vec4) Load 119(texel) 291: 7(f16vec4) FAdd 290 289 Store 119(texel) 291 292: 284 Load 286(s2DArray) 293:175(f16vec3) Load 177(f16c3) 294:6(float16_t) Load 137(f16bias) 295: 7(f16vec4) ImageSampleImplicitLod 292 293 Bias 294 296: 7(f16vec4) Load 119(texel) 297: 7(f16vec4) FAdd 296 295 Store 119(texel) 297 302: 299 Load 301(sCubeArray) 303: 249(fvec4) Load 251(c4) 304: 7(f16vec4) ImageSampleImplicitLod 302 303 305: 7(f16vec4) Load 119(texel) 306: 7(f16vec4) FAdd 305 304 Store 119(texel) 306 307: 299 Load 301(sCubeArray) 310: 7(f16vec4) Load 309(f16c4) 311:6(float16_t) Load 137(f16bias) 312: 7(f16vec4) ImageSampleImplicitLod 307 310 Bias 311 313: 7(f16vec4) Load 119(texel) 314: 7(f16vec4) FAdd 313 312 Store 119(texel) 314 319: 316 Load 318(s1DArrayShadow) 320: 167(fvec3) Load 169(c3) 321: 52(float) CompositeExtract 320 2 322:6(float16_t) ImageSampleDrefImplicitLod 319 320 321 323: 208(ptr) AccessChain 119(texel) 207 324:6(float16_t) Load 323 325:6(float16_t) FAdd 324 322 326: 208(ptr) AccessChain 119(texel) 207 Store 326 325 327: 316 Load 318(s1DArrayShadow) 328:154(f16vec2) Load 156(f16c2) 329: 52(float) Load 215(compare) 330:6(float16_t) Load 137(f16bias) 331:6(float16_t) ImageSampleDrefImplicitLod 327 328 329 Bias 330 332: 208(ptr) AccessChain 119(texel) 207 333:6(float16_t) Load 332 334:6(float16_t) FAdd 333 331 335: 208(ptr) AccessChain 119(texel) 207 Store 335 334 340: 337 Load 339(s2DArrayShadow) 341: 249(fvec4) Load 251(c4) 342: 52(float) CompositeExtract 341 3 343:6(float16_t) ImageSampleDrefImplicitLod 340 341 342 344: 208(ptr) AccessChain 119(texel) 207 345:6(float16_t) Load 344 346:6(float16_t) FAdd 345 343 347: 208(ptr) AccessChain 119(texel) 207 Store 347 346 348: 337 Load 339(s2DArrayShadow) 349:175(f16vec3) Load 177(f16c3) 350: 52(float) Load 215(compare) 351:6(float16_t) ImageSampleDrefImplicitLod 348 349 350 352: 208(ptr) AccessChain 119(texel) 207 353:6(float16_t) Load 352 354:6(float16_t) FAdd 353 351 355: 208(ptr) AccessChain 119(texel) 207 Store 355 354 360: 357 Load 359(s2DRect) 361: 53(fvec2) Load 148(c2) 362: 7(f16vec4) ImageSampleImplicitLod 360 361 363: 7(f16vec4) Load 119(texel) 364: 7(f16vec4) FAdd 363 362 Store 119(texel) 364 365: 357 Load 359(s2DRect) 366:154(f16vec2) Load 156(f16c2) 367: 7(f16vec4) ImageSampleImplicitLod 365 366 368: 7(f16vec4) Load 119(texel) 369: 7(f16vec4) FAdd 368 367 Store 119(texel) 369 374: 371 Load 373(s2DRectShadow) 375: 167(fvec3) Load 169(c3) 376: 52(float) CompositeExtract 375 2 377:6(float16_t) ImageSampleDrefImplicitLod 374 375 376 378: 208(ptr) AccessChain 119(texel) 207 379:6(float16_t) Load 378 380:6(float16_t) FAdd 379 377 381: 208(ptr) AccessChain 119(texel) 207 Store 381 380 382: 371 Load 373(s2DRectShadow) 383:154(f16vec2) Load 156(f16c2) 384: 52(float) Load 215(compare) 385:6(float16_t) ImageSampleDrefImplicitLod 382 383 384 386: 208(ptr) AccessChain 119(texel) 207 387:6(float16_t) Load 386 388:6(float16_t) FAdd 387 385 389: 208(ptr) AccessChain 119(texel) 207 Store 389 388 394: 391 Load 393(sCubeArrayShadow) 395: 249(fvec4) Load 251(c4) 396: 52(float) Load 215(compare) 397:6(float16_t) ImageSampleDrefImplicitLod 394 395 396 398: 208(ptr) AccessChain 119(texel) 207 399:6(float16_t) Load 398 400:6(float16_t) FAdd 399 397 401: 208(ptr) AccessChain 119(texel) 207 Store 401 400 402: 391 Load 393(sCubeArrayShadow) 403: 7(f16vec4) Load 309(f16c4) 404: 52(float) Load 215(compare) 405:6(float16_t) ImageSampleDrefImplicitLod 402 403 404 406: 208(ptr) AccessChain 119(texel) 207 407:6(float16_t) Load 406 408:6(float16_t) FAdd 407 405 409: 208(ptr) AccessChain 119(texel) 207 Store 409 408 410: 7(f16vec4) Load 119(texel) ReturnValue 410 FunctionEnd 11(testTextureProj(): 7(f16vec4) Function None 8 12: Label 413(texel): 64(ptr) Variable Function Store 413(texel) 121 414: 123 Load 125(s1D) 415: 53(fvec2) Load 148(c2) 416: 7(f16vec4) ImageSampleProjImplicitLod 414 415 417: 7(f16vec4) Load 413(texel) 418: 7(f16vec4) FAdd 417 416 Store 413(texel) 418 419: 123 Load 125(s1D) 420:154(f16vec2) Load 156(f16c2) 421:6(float16_t) Load 137(f16bias) 422: 7(f16vec4) ImageSampleProjImplicitLod 419 420 Bias 421 423: 7(f16vec4) Load 413(texel) 424: 7(f16vec4) FAdd 423 422 Store 413(texel) 424 425: 123 Load 125(s1D) 426: 249(fvec4) Load 251(c4) 427: 52(float) CompositeExtract 426 3 428: 249(fvec4) CompositeInsert 427 426 1 429: 7(f16vec4) ImageSampleProjImplicitLod 425 428 430: 7(f16vec4) Load 413(texel) 431: 7(f16vec4) FAdd 430 429 Store 413(texel) 431 432: 123 Load 125(s1D) 433: 7(f16vec4) Load 309(f16c4) 434:6(float16_t) Load 137(f16bias) 435:6(float16_t) CompositeExtract 433 3 436: 7(f16vec4) CompositeInsert 435 433 1 437: 7(f16vec4) ImageSampleProjImplicitLod 432 436 Bias 434 438: 7(f16vec4) Load 413(texel) 439: 7(f16vec4) FAdd 438 437 Store 413(texel) 439 440: 143 Load 145(s2D) 441: 167(fvec3) Load 169(c3) 442: 7(f16vec4) ImageSampleProjImplicitLod 440 441 443: 7(f16vec4) Load 413(texel) 444: 7(f16vec4) FAdd 443 442 Store 413(texel) 444 445: 143 Load 145(s2D) 446:175(f16vec3) Load 177(f16c3) 447:6(float16_t) Load 137(f16bias) 448: 7(f16vec4) ImageSampleProjImplicitLod 445 446 Bias 447 449: 7(f16vec4) Load 413(texel) 450: 7(f16vec4) FAdd 449 448 Store 413(texel) 450 451: 143 Load 145(s2D) 452: 249(fvec4) Load 251(c4) 453: 52(float) CompositeExtract 452 3 454: 249(fvec4) CompositeInsert 453 452 2 455: 7(f16vec4) ImageSampleProjImplicitLod 451 454 456: 7(f16vec4) Load 413(texel) 457: 7(f16vec4) FAdd 456 455 Store 413(texel) 457 458: 143 Load 145(s2D) 459: 7(f16vec4) Load 309(f16c4) 460:6(float16_t) Load 137(f16bias) 461:6(float16_t) CompositeExtract 459 3 462: 7(f16vec4) CompositeInsert 461 459 2 463: 7(f16vec4) ImageSampleProjImplicitLod 458 462 Bias 460 464: 7(f16vec4) Load 413(texel) 465: 7(f16vec4) FAdd 464 463 Store 413(texel) 465 466: 163 Load 165(s3D) 467: 249(fvec4) Load 251(c4) 468: 7(f16vec4) ImageSampleProjImplicitLod 466 467 469: 7(f16vec4) Load 413(texel) 470: 7(f16vec4) FAdd 469 468 Store 413(texel) 470 471: 163 Load 165(s3D) 472: 7(f16vec4) Load 309(f16c4) 473:6(float16_t) Load 137(f16bias) 474: 7(f16vec4) ImageSampleProjImplicitLod 471 472 Bias 473 475: 7(f16vec4) Load 413(texel) 476: 7(f16vec4) FAdd 475 474 Store 413(texel) 476 477: 199 Load 201(s1DShadow) 478: 249(fvec4) Load 251(c4) 479: 52(float) CompositeExtract 478 2 480: 52(float) CompositeExtract 478 3 481: 249(fvec4) CompositeInsert 480 478 1 482:6(float16_t) ImageSampleProjDrefImplicitLod 477 481 479 483: 208(ptr) AccessChain 413(texel) 207 484:6(float16_t) Load 483 485:6(float16_t) FAdd 484 482 486: 208(ptr) AccessChain 413(texel) 207 Store 486 485 487: 199 Load 201(s1DShadow) 488:175(f16vec3) Load 177(f16c3) 489: 52(float) Load 215(compare) 490:6(float16_t) Load 137(f16bias) 491:6(float16_t) CompositeExtract 488 2 492:175(f16vec3) CompositeInsert 491 488 1 493:6(float16_t) ImageSampleProjDrefImplicitLod 487 492 489 Bias 490 494: 208(ptr) AccessChain 413(texel) 207 495:6(float16_t) Load 494 496:6(float16_t) FAdd 495 493 497: 208(ptr) AccessChain 413(texel) 207 Store 497 496 498: 224 Load 226(s2DShadow) 499: 249(fvec4) Load 251(c4) 500: 52(float) CompositeExtract 499 2 501: 52(float) CompositeExtract 499 3 502: 249(fvec4) CompositeInsert 501 499 2 503:6(float16_t) ImageSampleProjDrefImplicitLod 498 502 500 504: 208(ptr) AccessChain 413(texel) 207 505:6(float16_t) Load 504 506:6(float16_t) FAdd 505 503 507: 208(ptr) AccessChain 413(texel) 207 Store 507 506 508: 224 Load 226(s2DShadow) 509:175(f16vec3) Load 177(f16c3) 510: 52(float) Load 215(compare) 511:6(float16_t) Load 137(f16bias) 512:6(float16_t) ImageSampleProjDrefImplicitLod 508 509 510 Bias 511 513: 208(ptr) AccessChain 413(texel) 207 514:6(float16_t) Load 513 515:6(float16_t) FAdd 514 512 516: 208(ptr) AccessChain 413(texel) 207 Store 516 515 517: 357 Load 359(s2DRect) 518: 167(fvec3) Load 169(c3) 519: 7(f16vec4) ImageSampleProjImplicitLod 517 518 520: 7(f16vec4) Load 413(texel) 521: 7(f16vec4) FAdd 520 519 Store 413(texel) 521 522: 357 Load 359(s2DRect) 523:175(f16vec3) Load 177(f16c3) 524: 7(f16vec4) ImageSampleProjImplicitLod 522 523 525: 7(f16vec4) Load 413(texel) 526: 7(f16vec4) FAdd 525 524 Store 413(texel) 526 527: 357 Load 359(s2DRect) 528: 249(fvec4) Load 251(c4) 529: 52(float) CompositeExtract 528 3 530: 249(fvec4) CompositeInsert 529 528 2 531: 7(f16vec4) ImageSampleProjImplicitLod 527 530 532: 7(f16vec4) Load 413(texel) 533: 7(f16vec4) FAdd 532 531 Store 413(texel) 533 534: 357 Load 359(s2DRect) 535: 7(f16vec4) Load 309(f16c4) 536:6(float16_t) CompositeExtract 535 3 537: 7(f16vec4) CompositeInsert 536 535 2 538: 7(f16vec4) ImageSampleProjImplicitLod 534 537 539: 7(f16vec4) Load 413(texel) 540: 7(f16vec4) FAdd 539 538 Store 413(texel) 540 541: 371 Load 373(s2DRectShadow) 542: 249(fvec4) Load 251(c4) 543: 52(float) CompositeExtract 542 2 544: 52(float) CompositeExtract 542 3 545: 249(fvec4) CompositeInsert 544 542 2 546:6(float16_t) ImageSampleProjDrefImplicitLod 541 545 543 547: 208(ptr) AccessChain 413(texel) 207 548:6(float16_t) Load 547 549:6(float16_t) FAdd 548 546 550: 208(ptr) AccessChain 413(texel) 207 Store 550 549 551: 371 Load 373(s2DRectShadow) 552:175(f16vec3) Load 177(f16c3) 553: 52(float) Load 215(compare) 554:6(float16_t) ImageSampleProjDrefImplicitLod 551 552 553 555: 208(ptr) AccessChain 413(texel) 207 556:6(float16_t) Load 555 557:6(float16_t) FAdd 556 554 558: 208(ptr) AccessChain 413(texel) 207 Store 558 557 559: 7(f16vec4) Load 413(texel) ReturnValue 559 FunctionEnd 13(testTextureLod(): 7(f16vec4) Function None 8 14: Label 562(texel): 64(ptr) Variable Function Store 562(texel) 121 563: 123 Load 125(s1D) 564: 52(float) Load 128(c1) 566: 52(float) Load 565(lod) 567: 7(f16vec4) ImageSampleExplicitLod 563 564 Lod 566 568: 7(f16vec4) Load 562(texel) 569: 7(f16vec4) FAdd 568 567 Store 562(texel) 569 570: 123 Load 125(s1D) 571:6(float16_t) Load 135(f16c1) 573:6(float16_t) Load 572(f16lod) 574: 7(f16vec4) ImageSampleExplicitLod 570 571 Lod 573 575: 7(f16vec4) Load 562(texel) 576: 7(f16vec4) FAdd 575 574 Store 562(texel) 576 577: 143 Load 145(s2D) 578: 53(fvec2) Load 148(c2) 579: 52(float) Load 565(lod) 580: 7(f16vec4) ImageSampleExplicitLod 577 578 Lod 579 581: 7(f16vec4) Load 562(texel) 582: 7(f16vec4) FAdd 581 580 Store 562(texel) 582 583: 143 Load 145(s2D) 584:154(f16vec2) Load 156(f16c2) 585:6(float16_t) Load 572(f16lod) 586: 7(f16vec4) ImageSampleExplicitLod 583 584 Lod 585 587: 7(f16vec4) Load 562(texel) 588: 7(f16vec4) FAdd 587 586 Store 562(texel) 588 589: 163 Load 165(s3D) 590: 167(fvec3) Load 169(c3) 591: 52(float) Load 565(lod) 592: 7(f16vec4) ImageSampleExplicitLod 589 590 Lod 591 593: 7(f16vec4) Load 562(texel) 594: 7(f16vec4) FAdd 593 592 Store 562(texel) 594 595: 163 Load 165(s3D) 596:175(f16vec3) Load 177(f16c3) 597:6(float16_t) Load 572(f16lod) 598: 7(f16vec4) ImageSampleExplicitLod 595 596 Lod 597 599: 7(f16vec4) Load 562(texel) 600: 7(f16vec4) FAdd 599 598 Store 562(texel) 600 601: 184 Load 186(sCube) 602: 167(fvec3) Load 169(c3) 603: 52(float) Load 565(lod) 604: 7(f16vec4) ImageSampleExplicitLod 601 602 Lod 603 605: 7(f16vec4) Load 562(texel) 606: 7(f16vec4) FAdd 605 604 Store 562(texel) 606 607: 184 Load 186(sCube) 608:175(f16vec3) Load 177(f16c3) 609:6(float16_t) Load 572(f16lod) 610: 7(f16vec4) ImageSampleExplicitLod 607 608 Lod 609 611: 7(f16vec4) Load 562(texel) 612: 7(f16vec4) FAdd 611 610 Store 562(texel) 612 613: 199 Load 201(s1DShadow) 614: 167(fvec3) Load 169(c3) 615: 52(float) Load 565(lod) 616: 52(float) CompositeExtract 614 2 617:6(float16_t) ImageSampleDrefExplicitLod 613 614 616 Lod 615 618: 208(ptr) AccessChain 562(texel) 207 619:6(float16_t) Load 618 620:6(float16_t) FAdd 619 617 621: 208(ptr) AccessChain 562(texel) 207 Store 621 620 622: 199 Load 201(s1DShadow) 623:154(f16vec2) Load 156(f16c2) 624: 52(float) Load 215(compare) 625:6(float16_t) Load 572(f16lod) 626:6(float16_t) ImageSampleDrefExplicitLod 622 623 624 Lod 625 627: 208(ptr) AccessChain 562(texel) 207 628:6(float16_t) Load 627 629:6(float16_t) FAdd 628 626 630: 208(ptr) AccessChain 562(texel) 207 Store 630 629 631: 224 Load 226(s2DShadow) 632: 167(fvec3) Load 169(c3) 633: 52(float) Load 565(lod) 634: 52(float) CompositeExtract 632 2 635:6(float16_t) ImageSampleDrefExplicitLod 631 632 634 Lod 633 636: 208(ptr) AccessChain 562(texel) 207 637:6(float16_t) Load 636 638:6(float16_t) FAdd 637 635 639: 208(ptr) AccessChain 562(texel) 207 Store 639 638 640: 224 Load 226(s2DShadow) 641:154(f16vec2) Load 156(f16c2) 642: 52(float) Load 215(compare) 643:6(float16_t) Load 572(f16lod) 644:6(float16_t) ImageSampleDrefExplicitLod 640 641 642 Lod 643 645: 208(ptr) AccessChain 562(texel) 207 646:6(float16_t) Load 645 647:6(float16_t) FAdd 646 644 648: 208(ptr) AccessChain 562(texel) 207 Store 648 647 649: 269 Load 271(s1DArray) 650: 53(fvec2) Load 148(c2) 651: 52(float) Load 565(lod) 652: 7(f16vec4) ImageSampleExplicitLod 649 650 Lod 651 653: 7(f16vec4) Load 562(texel) 654: 7(f16vec4) FAdd 653 652 Store 562(texel) 654 655: 269 Load 271(s1DArray) 656:154(f16vec2) Load 156(f16c2) 657:6(float16_t) Load 572(f16lod) 658: 7(f16vec4) ImageSampleExplicitLod 655 656 Lod 657 659: 7(f16vec4) Load 562(texel) 660: 7(f16vec4) FAdd 659 658 Store 562(texel) 660 661: 284 Load 286(s2DArray) 662: 167(fvec3) Load 169(c3) 663: 52(float) Load 565(lod) 664: 7(f16vec4) ImageSampleExplicitLod 661 662 Lod 663 665: 7(f16vec4) Load 562(texel) 666: 7(f16vec4) FAdd 665 664 Store 562(texel) 666 667: 284 Load 286(s2DArray) 668:175(f16vec3) Load 177(f16c3) 669:6(float16_t) Load 572(f16lod) 670: 7(f16vec4) ImageSampleExplicitLod 667 668 Lod 669 671: 7(f16vec4) Load 562(texel) 672: 7(f16vec4) FAdd 671 670 Store 562(texel) 672 673: 316 Load 318(s1DArrayShadow) 674: 167(fvec3) Load 169(c3) 675: 52(float) Load 565(lod) 676: 52(float) CompositeExtract 674 2 677:6(float16_t) ImageSampleDrefExplicitLod 673 674 676 Lod 675 678: 208(ptr) AccessChain 562(texel) 207 679:6(float16_t) Load 678 680:6(float16_t) FAdd 679 677 681: 208(ptr) AccessChain 562(texel) 207 Store 681 680 682: 316 Load 318(s1DArrayShadow) 683:154(f16vec2) Load 156(f16c2) 684: 52(float) Load 215(compare) 685:6(float16_t) Load 572(f16lod) 686:6(float16_t) ImageSampleDrefExplicitLod 682 683 684 Lod 685 687: 208(ptr) AccessChain 562(texel) 207 688:6(float16_t) Load 687 689:6(float16_t) FAdd 688 686 690: 208(ptr) AccessChain 562(texel) 207 Store 690 689 691: 299 Load 301(sCubeArray) 692: 249(fvec4) Load 251(c4) 693: 52(float) Load 565(lod) 694: 7(f16vec4) ImageSampleExplicitLod 691 692 Lod 693 695: 7(f16vec4) Load 562(texel) 696: 7(f16vec4) FAdd 695 694 Store 562(texel) 696 697: 299 Load 301(sCubeArray) 698: 7(f16vec4) Load 309(f16c4) 699:6(float16_t) Load 572(f16lod) 700: 7(f16vec4) ImageSampleExplicitLod 697 698 Lod 699 701: 7(f16vec4) Load 562(texel) 702: 7(f16vec4) FAdd 701 700 Store 562(texel) 702 703: 7(f16vec4) Load 562(texel) ReturnValue 703 FunctionEnd 15(testTextureOffset(): 7(f16vec4) Function None 8 16: Label 706(texel): 64(ptr) Variable Function Store 706(texel) 121 707: 123 Load 125(s1D) 708: 52(float) Load 128(c1) 710: 7(f16vec4) ImageSampleImplicitLod 707 708 ConstOffset 709 711: 7(f16vec4) Load 706(texel) 712: 7(f16vec4) FAdd 711 710 Store 706(texel) 712 713: 123 Load 125(s1D) 714:6(float16_t) Load 135(f16c1) 715:6(float16_t) Load 137(f16bias) 716: 7(f16vec4) ImageSampleImplicitLod 713 714 Bias ConstOffset 715 709 717: 7(f16vec4) Load 706(texel) 718: 7(f16vec4) FAdd 717 716 Store 706(texel) 718 719: 143 Load 145(s2D) 720: 53(fvec2) Load 148(c2) 723: 7(f16vec4) ImageSampleImplicitLod 719 720 ConstOffset 722 724: 7(f16vec4) Load 706(texel) 725: 7(f16vec4) FAdd 724 723 Store 706(texel) 725 726: 143 Load 145(s2D) 727:154(f16vec2) Load 156(f16c2) 728:6(float16_t) Load 137(f16bias) 729: 7(f16vec4) ImageSampleImplicitLod 726 727 Bias ConstOffset 728 722 730: 7(f16vec4) Load 706(texel) 731: 7(f16vec4) FAdd 730 729 Store 706(texel) 731 732: 163 Load 165(s3D) 733: 167(fvec3) Load 169(c3) 736: 7(f16vec4) ImageSampleImplicitLod 732 733 ConstOffset 735 737: 7(f16vec4) Load 706(texel) 738: 7(f16vec4) FAdd 737 736 Store 706(texel) 738 739: 163 Load 165(s3D) 740:175(f16vec3) Load 177(f16c3) 741:6(float16_t) Load 137(f16bias) 742: 7(f16vec4) ImageSampleImplicitLod 739 740 Bias ConstOffset 741 735 743: 7(f16vec4) Load 706(texel) 744: 7(f16vec4) FAdd 743 742 Store 706(texel) 744 745: 357 Load 359(s2DRect) 746: 53(fvec2) Load 148(c2) 747: 7(f16vec4) ImageSampleImplicitLod 745 746 ConstOffset 722 748: 7(f16vec4) Load 706(texel) 749: 7(f16vec4) FAdd 748 747 Store 706(texel) 749 750: 357 Load 359(s2DRect) 751:154(f16vec2) Load 156(f16c2) 752: 7(f16vec4) ImageSampleImplicitLod 750 751 ConstOffset 722 753: 7(f16vec4) Load 706(texel) 754: 7(f16vec4) FAdd 753 752 Store 706(texel) 754 755: 371 Load 373(s2DRectShadow) 756: 167(fvec3) Load 169(c3) 757: 52(float) CompositeExtract 756 2 758:6(float16_t) ImageSampleDrefImplicitLod 755 756 757 ConstOffset 722 759: 208(ptr) AccessChain 706(texel) 207 760:6(float16_t) Load 759 761:6(float16_t) FAdd 760 758 762: 208(ptr) AccessChain 706(texel) 207 Store 762 761 763: 371 Load 373(s2DRectShadow) 764:154(f16vec2) Load 156(f16c2) 765: 52(float) Load 215(compare) 766:6(float16_t) ImageSampleDrefImplicitLod 763 764 765 ConstOffset 722 767: 208(ptr) AccessChain 706(texel) 207 768:6(float16_t) Load 767 769:6(float16_t) FAdd 768 766 770: 208(ptr) AccessChain 706(texel) 207 Store 770 769 771: 199 Load 201(s1DShadow) 772: 167(fvec3) Load 169(c3) 773: 52(float) CompositeExtract 772 2 774:6(float16_t) ImageSampleDrefImplicitLod 771 772 773 ConstOffset 709 775: 208(ptr) AccessChain 706(texel) 207 776:6(float16_t) Load 775 777:6(float16_t) FAdd 776 774 778: 208(ptr) AccessChain 706(texel) 207 Store 778 777 779: 199 Load 201(s1DShadow) 780:154(f16vec2) Load 156(f16c2) 781: 52(float) Load 215(compare) 782:6(float16_t) Load 137(f16bias) 783:6(float16_t) ImageSampleDrefImplicitLod 779 780 781 Bias ConstOffset 782 709 784: 208(ptr) AccessChain 706(texel) 207 785:6(float16_t) Load 784 786:6(float16_t) FAdd 785 783 787: 208(ptr) AccessChain 706(texel) 207 Store 787 786 788: 224 Load 226(s2DShadow) 789: 167(fvec3) Load 169(c3) 790: 52(float) CompositeExtract 789 2 791:6(float16_t) ImageSampleDrefImplicitLod 788 789 790 ConstOffset 722 792: 208(ptr) AccessChain 706(texel) 207 793:6(float16_t) Load 792 794:6(float16_t) FAdd 793 791 795: 208(ptr) AccessChain 706(texel) 207 Store 795 794 796: 224 Load 226(s2DShadow) 797:154(f16vec2) Load 156(f16c2) 798: 52(float) Load 215(compare) 799:6(float16_t) Load 137(f16bias) 800:6(float16_t) ImageSampleDrefImplicitLod 796 797 798 Bias ConstOffset 799 722 801: 208(ptr) AccessChain 706(texel) 207 802:6(float16_t) Load 801 803:6(float16_t) FAdd 802 800 804: 208(ptr) AccessChain 706(texel) 207 Store 804 803 805: 269 Load 271(s1DArray) 806: 53(fvec2) Load 148(c2) 807: 7(f16vec4) ImageSampleImplicitLod 805 806 ConstOffset 709 808: 7(f16vec4) Load 706(texel) 809: 7(f16vec4) FAdd 808 807 Store 706(texel) 809 810: 269 Load 271(s1DArray) 811:154(f16vec2) Load 156(f16c2) 812:6(float16_t) Load 137(f16bias) 813: 7(f16vec4) ImageSampleImplicitLod 810 811 Bias ConstOffset 812 709 814: 7(f16vec4) Load 706(texel) 815: 7(f16vec4) FAdd 814 813 Store 706(texel) 815 816: 284 Load 286(s2DArray) 817: 167(fvec3) Load 169(c3) 818: 7(f16vec4) ImageSampleImplicitLod 816 817 ConstOffset 722 819: 7(f16vec4) Load 706(texel) 820: 7(f16vec4) FAdd 819 818 Store 706(texel) 820 821: 284 Load 286(s2DArray) 822:175(f16vec3) Load 177(f16c3) 823:6(float16_t) Load 137(f16bias) 824: 7(f16vec4) ImageSampleImplicitLod 821 822 Bias ConstOffset 823 722 825: 7(f16vec4) Load 706(texel) 826: 7(f16vec4) FAdd 825 824 Store 706(texel) 826 827: 316 Load 318(s1DArrayShadow) 828: 167(fvec3) Load 169(c3) 829: 52(float) CompositeExtract 828 2 830:6(float16_t) ImageSampleDrefImplicitLod 827 828 829 ConstOffset 709 831: 208(ptr) AccessChain 706(texel) 207 832:6(float16_t) Load 831 833:6(float16_t) FAdd 832 830 834: 208(ptr) AccessChain 706(texel) 207 Store 834 833 835: 316 Load 318(s1DArrayShadow) 836:154(f16vec2) Load 156(f16c2) 837: 52(float) Load 215(compare) 838:6(float16_t) Load 137(f16bias) 839:6(float16_t) ImageSampleDrefImplicitLod 835 836 837 Bias ConstOffset 838 709 840: 208(ptr) AccessChain 706(texel) 207 841:6(float16_t) Load 840 842:6(float16_t) FAdd 841 839 843: 208(ptr) AccessChain 706(texel) 207 Store 843 842 844: 337 Load 339(s2DArrayShadow) 845: 249(fvec4) Load 251(c4) 846: 52(float) CompositeExtract 845 3 847:6(float16_t) ImageSampleDrefImplicitLod 844 845 846 ConstOffset 722 848: 208(ptr) AccessChain 706(texel) 207 849:6(float16_t) Load 848 850:6(float16_t) FAdd 849 847 851: 208(ptr) AccessChain 706(texel) 207 Store 851 850 852: 337 Load 339(s2DArrayShadow) 853:175(f16vec3) Load 177(f16c3) 854: 52(float) Load 215(compare) 855:6(float16_t) ImageSampleDrefImplicitLod 852 853 854 ConstOffset 722 856: 208(ptr) AccessChain 706(texel) 207 857:6(float16_t) Load 856 858:6(float16_t) FAdd 857 855 859: 208(ptr) AccessChain 706(texel) 207 Store 859 858 860: 7(f16vec4) Load 706(texel) ReturnValue 860 FunctionEnd 17(testTextureProjOffset(): 7(f16vec4) Function None 8 18: Label 863(texel): 64(ptr) Variable Function Store 863(texel) 121 864: 123 Load 125(s1D) 865: 53(fvec2) Load 148(c2) 866: 7(f16vec4) ImageSampleProjImplicitLod 864 865 ConstOffset 709 867: 7(f16vec4) Load 863(texel) 868: 7(f16vec4) FAdd 867 866 Store 863(texel) 868 869: 123 Load 125(s1D) 870:154(f16vec2) Load 156(f16c2) 871:6(float16_t) Load 137(f16bias) 872: 7(f16vec4) ImageSampleProjImplicitLod 869 870 Bias ConstOffset 871 709 873: 7(f16vec4) Load 863(texel) 874: 7(f16vec4) FAdd 873 872 Store 863(texel) 874 875: 123 Load 125(s1D) 876: 249(fvec4) Load 251(c4) 877: 52(float) CompositeExtract 876 3 878: 249(fvec4) CompositeInsert 877 876 1 879: 7(f16vec4) ImageSampleProjImplicitLod 875 878 ConstOffset 709 880: 7(f16vec4) Load 863(texel) 881: 7(f16vec4) FAdd 880 879 Store 863(texel) 881 882: 123 Load 125(s1D) 883: 7(f16vec4) Load 309(f16c4) 884:6(float16_t) Load 137(f16bias) 885:6(float16_t) CompositeExtract 883 3 886: 7(f16vec4) CompositeInsert 885 883 1 887: 7(f16vec4) ImageSampleProjImplicitLod 882 886 Bias ConstOffset 884 709 888: 7(f16vec4) Load 863(texel) 889: 7(f16vec4) FAdd 888 887 Store 863(texel) 889 890: 143 Load 145(s2D) 891: 167(fvec3) Load 169(c3) 892: 7(f16vec4) ImageSampleProjImplicitLod 890 891 ConstOffset 722 893: 7(f16vec4) Load 863(texel) 894: 7(f16vec4) FAdd 893 892 Store 863(texel) 894 895: 143 Load 145(s2D) 896:175(f16vec3) Load 177(f16c3) 897:6(float16_t) Load 137(f16bias) 898: 7(f16vec4) ImageSampleProjImplicitLod 895 896 Bias ConstOffset 897 722 899: 7(f16vec4) Load 863(texel) 900: 7(f16vec4) FAdd 899 898 Store 863(texel) 900 901: 143 Load 145(s2D) 902: 249(fvec4) Load 251(c4) 903: 52(float) CompositeExtract 902 3 904: 249(fvec4) CompositeInsert 903 902 2 905: 7(f16vec4) ImageSampleProjImplicitLod 901 904 ConstOffset 722 906: 7(f16vec4) Load 863(texel) 907: 7(f16vec4) FAdd 906 905 Store 863(texel) 907 908: 143 Load 145(s2D) 909: 7(f16vec4) Load 309(f16c4) 910:6(float16_t) Load 137(f16bias) 911:6(float16_t) CompositeExtract 909 3 912: 7(f16vec4) CompositeInsert 911 909 2 913: 7(f16vec4) ImageSampleProjImplicitLod 908 912 Bias ConstOffset 910 722 914: 7(f16vec4) Load 863(texel) 915: 7(f16vec4) FAdd 914 913 Store 863(texel) 915 916: 163 Load 165(s3D) 917: 249(fvec4) Load 251(c4) 918: 7(f16vec4) ImageSampleProjImplicitLod 916 917 ConstOffset 735 919: 7(f16vec4) Load 863(texel) 920: 7(f16vec4) FAdd 919 918 Store 863(texel) 920 921: 163 Load 165(s3D) 922: 7(f16vec4) Load 309(f16c4) 923:6(float16_t) Load 137(f16bias) 924: 7(f16vec4) ImageSampleProjImplicitLod 921 922 Bias ConstOffset 923 735 925: 7(f16vec4) Load 863(texel) 926: 7(f16vec4) FAdd 925 924 Store 863(texel) 926 927: 357 Load 359(s2DRect) 928: 167(fvec3) Load 169(c3) 929: 7(f16vec4) ImageSampleProjImplicitLod 927 928 ConstOffset 722 930: 7(f16vec4) Load 863(texel) 931: 7(f16vec4) FAdd 930 929 Store 863(texel) 931 932: 357 Load 359(s2DRect) 933:175(f16vec3) Load 177(f16c3) 934: 7(f16vec4) ImageSampleProjImplicitLod 932 933 ConstOffset 722 935: 7(f16vec4) Load 863(texel) 936: 7(f16vec4) FAdd 935 934 Store 863(texel) 936 937: 357 Load 359(s2DRect) 938: 249(fvec4) Load 251(c4) 939: 52(float) CompositeExtract 938 3 940: 249(fvec4) CompositeInsert 939 938 2 941: 7(f16vec4) ImageSampleProjImplicitLod 937 940 ConstOffset 722 942: 7(f16vec4) Load 863(texel) 943: 7(f16vec4) FAdd 942 941 Store 863(texel) 943 944: 357 Load 359(s2DRect) 945: 7(f16vec4) Load 309(f16c4) 946:6(float16_t) CompositeExtract 945 3 947: 7(f16vec4) CompositeInsert 946 945 2 948: 7(f16vec4) ImageSampleProjImplicitLod 944 947 ConstOffset 722 949: 7(f16vec4) Load 863(texel) 950: 7(f16vec4) FAdd 949 948 Store 863(texel) 950 951: 371 Load 373(s2DRectShadow) 952: 249(fvec4) Load 251(c4) 953: 52(float) CompositeExtract 952 2 954: 52(float) CompositeExtract 952 3 955: 249(fvec4) CompositeInsert 954 952 2 956:6(float16_t) ImageSampleProjDrefImplicitLod 951 955 953 ConstOffset 722 957: 208(ptr) AccessChain 863(texel) 207 958:6(float16_t) Load 957 959:6(float16_t) FAdd 958 956 960: 208(ptr) AccessChain 863(texel) 207 Store 960 959 961: 371 Load 373(s2DRectShadow) 962:175(f16vec3) Load 177(f16c3) 963: 52(float) Load 215(compare) 964:6(float16_t) ImageSampleProjDrefImplicitLod 961 962 963 ConstOffset 722 965: 208(ptr) AccessChain 863(texel) 207 966:6(float16_t) Load 965 967:6(float16_t) FAdd 966 964 968: 208(ptr) AccessChain 863(texel) 207 Store 968 967 969: 199 Load 201(s1DShadow) 970: 249(fvec4) Load 251(c4) 971: 52(float) CompositeExtract 970 2 972: 52(float) CompositeExtract 970 3 973: 249(fvec4) CompositeInsert 972 970 1 974:6(float16_t) ImageSampleProjDrefImplicitLod 969 973 971 ConstOffset 709 975: 208(ptr) AccessChain 863(texel) 207 976:6(float16_t) Load 975 977:6(float16_t) FAdd 976 974 978: 208(ptr) AccessChain 863(texel) 207 Store 978 977 979: 199 Load 201(s1DShadow) 980:175(f16vec3) Load 177(f16c3) 981: 52(float) Load 215(compare) 982:6(float16_t) Load 137(f16bias) 983:6(float16_t) CompositeExtract 980 2 984:175(f16vec3) CompositeInsert 983 980 1 985:6(float16_t) ImageSampleProjDrefImplicitLod 979 984 981 Bias ConstOffset 982 709 986: 208(ptr) AccessChain 863(texel) 207 987:6(float16_t) Load 986 988:6(float16_t) FAdd 987 985 989: 208(ptr) AccessChain 863(texel) 207 Store 989 988 990: 224 Load 226(s2DShadow) 991: 249(fvec4) Load 251(c4) 992: 52(float) CompositeExtract 991 2 993: 52(float) CompositeExtract 991 3 994: 249(fvec4) CompositeInsert 993 991 2 995:6(float16_t) ImageSampleProjDrefImplicitLod 990 994 992 ConstOffset 722 996: 208(ptr) AccessChain 863(texel) 207 997:6(float16_t) Load 996 998:6(float16_t) FAdd 997 995 999: 208(ptr) AccessChain 863(texel) 207 Store 999 998 1000: 224 Load 226(s2DShadow) 1001:175(f16vec3) Load 177(f16c3) 1002: 52(float) Load 215(compare) 1003:6(float16_t) Load 137(f16bias) 1004:6(float16_t) ImageSampleProjDrefImplicitLod 1000 1001 1002 Bias ConstOffset 1003 722 1005: 208(ptr) AccessChain 863(texel) 207 1006:6(float16_t) Load 1005 1007:6(float16_t) FAdd 1006 1004 1008: 208(ptr) AccessChain 863(texel) 207 Store 1008 1007 1009: 7(f16vec4) Load 863(texel) ReturnValue 1009 FunctionEnd 19(testTextureLodOffset(): 7(f16vec4) Function None 8 20: Label 1012(texel): 64(ptr) Variable Function Store 1012(texel) 121 1013: 123 Load 125(s1D) 1014: 52(float) Load 128(c1) 1015: 52(float) Load 565(lod) 1016: 7(f16vec4) ImageSampleExplicitLod 1013 1014 Lod ConstOffset 1015 709 1017: 7(f16vec4) Load 1012(texel) 1018: 7(f16vec4) FAdd 1017 1016 Store 1012(texel) 1018 1019: 123 Load 125(s1D) 1020:6(float16_t) Load 135(f16c1) 1021:6(float16_t) Load 572(f16lod) 1022: 7(f16vec4) ImageSampleExplicitLod 1019 1020 Lod ConstOffset 1021 709 1023: 7(f16vec4) Load 1012(texel) 1024: 7(f16vec4) FAdd 1023 1022 Store 1012(texel) 1024 1025: 143 Load 145(s2D) 1026: 53(fvec2) Load 148(c2) 1027: 52(float) Load 565(lod) 1028: 7(f16vec4) ImageSampleExplicitLod 1025 1026 Lod ConstOffset 1027 722 1029: 7(f16vec4) Load 1012(texel) 1030: 7(f16vec4) FAdd 1029 1028 Store 1012(texel) 1030 1031: 143 Load 145(s2D) 1032:154(f16vec2) Load 156(f16c2) 1033:6(float16_t) Load 572(f16lod) 1034: 7(f16vec4) ImageSampleExplicitLod 1031 1032 Lod ConstOffset 1033 722 1035: 7(f16vec4) Load 1012(texel) 1036: 7(f16vec4) FAdd 1035 1034 Store 1012(texel) 1036 1037: 163 Load 165(s3D) 1038: 167(fvec3) Load 169(c3) 1039: 52(float) Load 565(lod) 1040: 7(f16vec4) ImageSampleExplicitLod 1037 1038 Lod ConstOffset 1039 735 1041: 7(f16vec4) Load 1012(texel) 1042: 7(f16vec4) FAdd 1041 1040 Store 1012(texel) 1042 1043: 163 Load 165(s3D) 1044:175(f16vec3) Load 177(f16c3) 1045:6(float16_t) Load 572(f16lod) 1046: 7(f16vec4) ImageSampleExplicitLod 1043 1044 Lod ConstOffset 1045 735 1047: 7(f16vec4) Load 1012(texel) 1048: 7(f16vec4) FAdd 1047 1046 Store 1012(texel) 1048 1049: 199 Load 201(s1DShadow) 1050: 167(fvec3) Load 169(c3) 1051: 52(float) Load 565(lod) 1052: 52(float) CompositeExtract 1050 2 1053:6(float16_t) ImageSampleDrefExplicitLod 1049 1050 1052 Lod ConstOffset 1051 709 1054: 208(ptr) AccessChain 1012(texel) 207 1055:6(float16_t) Load 1054 1056:6(float16_t) FAdd 1055 1053 1057: 208(ptr) AccessChain 1012(texel) 207 Store 1057 1056 1058: 199 Load 201(s1DShadow) 1059:154(f16vec2) Load 156(f16c2) 1060: 52(float) Load 215(compare) 1061:6(float16_t) Load 572(f16lod) 1062:6(float16_t) ImageSampleDrefExplicitLod 1058 1059 1060 Lod ConstOffset 1061 709 1063: 208(ptr) AccessChain 1012(texel) 207 1064:6(float16_t) Load 1063 1065:6(float16_t) FAdd 1064 1062 1066: 208(ptr) AccessChain 1012(texel) 207 Store 1066 1065 1067: 224 Load 226(s2DShadow) 1068: 167(fvec3) Load 169(c3) 1069: 52(float) Load 565(lod) 1070: 52(float) CompositeExtract 1068 2 1071:6(float16_t) ImageSampleDrefExplicitLod 1067 1068 1070 Lod ConstOffset 1069 722 1072: 208(ptr) AccessChain 1012(texel) 207 1073:6(float16_t) Load 1072 1074:6(float16_t) FAdd 1073 1071 1075: 208(ptr) AccessChain 1012(texel) 207 Store 1075 1074 1076: 224 Load 226(s2DShadow) 1077:154(f16vec2) Load 156(f16c2) 1078: 52(float) Load 215(compare) 1079:6(float16_t) Load 572(f16lod) 1080:6(float16_t) ImageSampleDrefExplicitLod 1076 1077 1078 Lod ConstOffset 1079 722 1081: 208(ptr) AccessChain 1012(texel) 207 1082:6(float16_t) Load 1081 1083:6(float16_t) FAdd 1082 1080 1084: 208(ptr) AccessChain 1012(texel) 207 Store 1084 1083 1085: 269 Load 271(s1DArray) 1086: 53(fvec2) Load 148(c2) 1087: 52(float) Load 565(lod) 1088: 7(f16vec4) ImageSampleExplicitLod 1085 1086 Lod ConstOffset 1087 709 1089: 7(f16vec4) Load 1012(texel) 1090: 7(f16vec4) FAdd 1089 1088 Store 1012(texel) 1090 1091: 269 Load 271(s1DArray) 1092:154(f16vec2) Load 156(f16c2) 1093:6(float16_t) Load 572(f16lod) 1094: 7(f16vec4) ImageSampleExplicitLod 1091 1092 Lod ConstOffset 1093 709 1095: 7(f16vec4) Load 1012(texel) 1096: 7(f16vec4) FAdd 1095 1094 Store 1012(texel) 1096 1097: 284 Load 286(s2DArray) 1098: 167(fvec3) Load 169(c3) 1099: 52(float) Load 565(lod) 1100: 7(f16vec4) ImageSampleExplicitLod 1097 1098 Lod ConstOffset 1099 722 1101: 7(f16vec4) Load 1012(texel) 1102: 7(f16vec4) FAdd 1101 1100 Store 1012(texel) 1102 1103: 284 Load 286(s2DArray) 1104:175(f16vec3) Load 177(f16c3) 1105:6(float16_t) Load 572(f16lod) 1106: 7(f16vec4) ImageSampleExplicitLod 1103 1104 Lod ConstOffset 1105 722 1107: 7(f16vec4) Load 1012(texel) 1108: 7(f16vec4) FAdd 1107 1106 Store 1012(texel) 1108 1109: 316 Load 318(s1DArrayShadow) 1110: 167(fvec3) Load 169(c3) 1111: 52(float) Load 565(lod) 1112: 52(float) CompositeExtract 1110 2 1113:6(float16_t) ImageSampleDrefExplicitLod 1109 1110 1112 Lod ConstOffset 1111 709 1114: 208(ptr) AccessChain 1012(texel) 207 1115:6(float16_t) Load 1114 1116:6(float16_t) FAdd 1115 1113 1117: 208(ptr) AccessChain 1012(texel) 207 Store 1117 1116 1118: 316 Load 318(s1DArrayShadow) 1119:154(f16vec2) Load 156(f16c2) 1120: 52(float) Load 215(compare) 1121:6(float16_t) Load 572(f16lod) 1122:6(float16_t) ImageSampleDrefExplicitLod 1118 1119 1120 Lod ConstOffset 1121 709 1123: 208(ptr) AccessChain 1012(texel) 207 1124:6(float16_t) Load 1123 1125:6(float16_t) FAdd 1124 1122 1126: 208(ptr) AccessChain 1012(texel) 207 Store 1126 1125 1127: 7(f16vec4) Load 1012(texel) ReturnValue 1127 FunctionEnd 21(testTextureProjLodOffset(): 7(f16vec4) Function None 8 22: Label 1130(texel): 64(ptr) Variable Function Store 1130(texel) 121 1131: 123 Load 125(s1D) 1132: 53(fvec2) Load 148(c2) 1133: 52(float) Load 565(lod) 1134: 7(f16vec4) ImageSampleProjExplicitLod 1131 1132 Lod ConstOffset 1133 709 1135: 7(f16vec4) Load 1130(texel) 1136: 7(f16vec4) FAdd 1135 1134 Store 1130(texel) 1136 1137: 123 Load 125(s1D) 1138:154(f16vec2) Load 156(f16c2) 1139:6(float16_t) Load 572(f16lod) 1140: 7(f16vec4) ImageSampleProjExplicitLod 1137 1138 Lod ConstOffset 1139 709 1141: 7(f16vec4) Load 1130(texel) 1142: 7(f16vec4) FAdd 1141 1140 Store 1130(texel) 1142 1143: 123 Load 125(s1D) 1144: 249(fvec4) Load 251(c4) 1145: 52(float) Load 565(lod) 1146: 52(float) CompositeExtract 1144 3 1147: 249(fvec4) CompositeInsert 1146 1144 1 1148: 7(f16vec4) ImageSampleProjExplicitLod 1143 1147 Lod ConstOffset 1145 709 1149: 7(f16vec4) Load 1130(texel) 1150: 7(f16vec4) FAdd 1149 1148 Store 1130(texel) 1150 1151: 123 Load 125(s1D) 1152: 7(f16vec4) Load 309(f16c4) 1153:6(float16_t) Load 572(f16lod) 1154:6(float16_t) CompositeExtract 1152 3 1155: 7(f16vec4) CompositeInsert 1154 1152 1 1156: 7(f16vec4) ImageSampleProjExplicitLod 1151 1155 Lod ConstOffset 1153 709 1157: 7(f16vec4) Load 1130(texel) 1158: 7(f16vec4) FAdd 1157 1156 Store 1130(texel) 1158 1159: 143 Load 145(s2D) 1160: 167(fvec3) Load 169(c3) 1161: 52(float) Load 565(lod) 1162: 7(f16vec4) ImageSampleProjExplicitLod 1159 1160 Lod ConstOffset 1161 722 1163: 7(f16vec4) Load 1130(texel) 1164: 7(f16vec4) FAdd 1163 1162 Store 1130(texel) 1164 1165: 143 Load 145(s2D) 1166:175(f16vec3) Load 177(f16c3) 1167:6(float16_t) Load 572(f16lod) 1168: 7(f16vec4) ImageSampleProjExplicitLod 1165 1166 Lod ConstOffset 1167 722 1169: 7(f16vec4) Load 1130(texel) 1170: 7(f16vec4) FAdd 1169 1168 Store 1130(texel) 1170 1171: 143 Load 145(s2D) 1172: 249(fvec4) Load 251(c4) 1173: 52(float) Load 565(lod) 1174: 52(float) CompositeExtract 1172 3 1175: 249(fvec4) CompositeInsert 1174 1172 2 1176: 7(f16vec4) ImageSampleProjExplicitLod 1171 1175 Lod ConstOffset 1173 722 1177: 7(f16vec4) Load 1130(texel) 1178: 7(f16vec4) FAdd 1177 1176 Store 1130(texel) 1178 1179: 143 Load 145(s2D) 1180: 7(f16vec4) Load 309(f16c4) 1181:6(float16_t) Load 572(f16lod) 1182:6(float16_t) CompositeExtract 1180 3 1183: 7(f16vec4) CompositeInsert 1182 1180 2 1184: 7(f16vec4) ImageSampleProjExplicitLod 1179 1183 Lod ConstOffset 1181 722 1185: 7(f16vec4) Load 1130(texel) 1186: 7(f16vec4) FAdd 1185 1184 Store 1130(texel) 1186 1187: 163 Load 165(s3D) 1188: 249(fvec4) Load 251(c4) 1189: 52(float) Load 565(lod) 1190: 7(f16vec4) ImageSampleProjExplicitLod 1187 1188 Lod ConstOffset 1189 735 1191: 7(f16vec4) Load 1130(texel) 1192: 7(f16vec4) FAdd 1191 1190 Store 1130(texel) 1192 1193: 163 Load 165(s3D) 1194: 7(f16vec4) Load 309(f16c4) 1195:6(float16_t) Load 572(f16lod) 1196: 7(f16vec4) ImageSampleProjExplicitLod 1193 1194 Lod ConstOffset 1195 735 1197: 7(f16vec4) Load 1130(texel) 1198: 7(f16vec4) FAdd 1197 1196 Store 1130(texel) 1198 1199: 199 Load 201(s1DShadow) 1200: 249(fvec4) Load 251(c4) 1201: 52(float) Load 565(lod) 1202: 52(float) CompositeExtract 1200 2 1203: 52(float) CompositeExtract 1200 3 1204: 249(fvec4) CompositeInsert 1203 1200 1 1205:6(float16_t) ImageSampleProjDrefExplicitLod 1199 1204 1202 Lod ConstOffset 1201 709 1206: 208(ptr) AccessChain 1130(texel) 207 1207:6(float16_t) Load 1206 1208:6(float16_t) FAdd 1207 1205 1209: 208(ptr) AccessChain 1130(texel) 207 Store 1209 1208 1210: 199 Load 201(s1DShadow) 1211:175(f16vec3) Load 177(f16c3) 1212: 52(float) Load 215(compare) 1213:6(float16_t) Load 572(f16lod) 1214:6(float16_t) CompositeExtract 1211 2 1215:175(f16vec3) CompositeInsert 1214 1211 1 1216:6(float16_t) ImageSampleProjDrefExplicitLod 1210 1215 1212 Lod ConstOffset 1213 709 1217: 208(ptr) AccessChain 1130(texel) 207 1218:6(float16_t) Load 1217 1219:6(float16_t) FAdd 1218 1216 1220: 208(ptr) AccessChain 1130(texel) 207 Store 1220 1219 1221: 224 Load 226(s2DShadow) 1222: 249(fvec4) Load 251(c4) 1223: 52(float) Load 565(lod) 1224: 52(float) CompositeExtract 1222 2 1225: 52(float) CompositeExtract 1222 3 1226: 249(fvec4) CompositeInsert 1225 1222 2 1227:6(float16_t) ImageSampleProjDrefExplicitLod 1221 1226 1224 Lod ConstOffset 1223 722 1228: 208(ptr) AccessChain 1130(texel) 207 1229:6(float16_t) Load 1228 1230:6(float16_t) FAdd 1229 1227 1231: 208(ptr) AccessChain 1130(texel) 207 Store 1231 1230 1232: 224 Load 226(s2DShadow) 1233:175(f16vec3) Load 177(f16c3) 1234: 52(float) Load 215(compare) 1235:6(float16_t) Load 572(f16lod) 1236:6(float16_t) ImageSampleProjDrefExplicitLod 1232 1233 1234 Lod ConstOffset 1235 722 1237: 208(ptr) AccessChain 1130(texel) 207 1238:6(float16_t) Load 1237 1239:6(float16_t) FAdd 1238 1236 1240: 208(ptr) AccessChain 1130(texel) 207 Store 1240 1239 1241: 7(f16vec4) Load 1130(texel) ReturnValue 1241 FunctionEnd 23(testTexelFetch(): 7(f16vec4) Function None 8 24: Label 1244(texel): 64(ptr) Variable Function Store 1244(texel) 121 1245: 123 Load 125(s1D) 1246: 52(float) Load 128(c1) 1247: 47(int) ConvertFToS 1246 1248: 52(float) Load 565(lod) 1249: 47(int) ConvertFToS 1248 1250: 122 Image 1245 1251: 7(f16vec4) ImageFetch 1250 1247 Lod 1249 1252: 7(f16vec4) Load 1244(texel) 1253: 7(f16vec4) FAdd 1252 1251 Store 1244(texel) 1253 1254: 143 Load 145(s2D) 1255: 53(fvec2) Load 148(c2) 1256: 721(ivec2) ConvertFToS 1255 1257: 52(float) Load 565(lod) 1258: 47(int) ConvertFToS 1257 1259: 142 Image 1254 1260: 7(f16vec4) ImageFetch 1259 1256 Lod 1258 1261: 7(f16vec4) Load 1244(texel) 1262: 7(f16vec4) FAdd 1261 1260 Store 1244(texel) 1262 1263: 163 Load 165(s3D) 1264: 167(fvec3) Load 169(c3) 1265: 734(ivec3) ConvertFToS 1264 1266: 52(float) Load 565(lod) 1267: 47(int) ConvertFToS 1266 1268: 162 Image 1263 1269: 7(f16vec4) ImageFetch 1268 1265 Lod 1267 1270: 7(f16vec4) Load 1244(texel) 1271: 7(f16vec4) FAdd 1270 1269 Store 1244(texel) 1271 1272: 357 Load 359(s2DRect) 1273: 53(fvec2) Load 148(c2) 1274: 721(ivec2) ConvertFToS 1273 1275: 356 Image 1272 1276: 7(f16vec4) ImageFetch 1275 1274 1277: 7(f16vec4) Load 1244(texel) 1278: 7(f16vec4) FAdd 1277 1276 Store 1244(texel) 1278 1279: 269 Load 271(s1DArray) 1280: 53(fvec2) Load 148(c2) 1281: 721(ivec2) ConvertFToS 1280 1282: 52(float) Load 565(lod) 1283: 47(int) ConvertFToS 1282 1284: 268 Image 1279 1285: 7(f16vec4) ImageFetch 1284 1281 Lod 1283 1286: 7(f16vec4) Load 1244(texel) 1287: 7(f16vec4) FAdd 1286 1285 Store 1244(texel) 1287 1288: 284 Load 286(s2DArray) 1289: 167(fvec3) Load 169(c3) 1290: 734(ivec3) ConvertFToS 1289 1291: 52(float) Load 565(lod) 1292: 47(int) ConvertFToS 1291 1293: 283 Image 1288 1294: 7(f16vec4) ImageFetch 1293 1290 Lod 1292 1295: 7(f16vec4) Load 1244(texel) 1296: 7(f16vec4) FAdd 1295 1294 Store 1244(texel) 1296 1301: 1298 Load 1300(sBuffer) 1302: 52(float) Load 128(c1) 1303: 47(int) ConvertFToS 1302 1304: 1297 Image 1301 1305: 7(f16vec4) ImageFetch 1304 1303 1306: 7(f16vec4) Load 1244(texel) 1307: 7(f16vec4) FAdd 1306 1305 Store 1244(texel) 1307 1312: 1309 Load 1311(s2DMS) 1313: 53(fvec2) Load 148(c2) 1314: 721(ivec2) ConvertFToS 1313 1315: 1308 Image 1312 1316: 7(f16vec4) ImageFetch 1315 1314 Sample 709 1317: 7(f16vec4) Load 1244(texel) 1318: 7(f16vec4) FAdd 1317 1316 Store 1244(texel) 1318 1323: 1320 Load 1322(s2DMSArray) 1324: 167(fvec3) Load 169(c3) 1325: 734(ivec3) ConvertFToS 1324 1327: 1319 Image 1323 1328: 7(f16vec4) ImageFetch 1327 1325 Sample 1326 1329: 7(f16vec4) Load 1244(texel) 1330: 7(f16vec4) FAdd 1329 1328 Store 1244(texel) 1330 1331: 7(f16vec4) Load 1244(texel) ReturnValue 1331 FunctionEnd 25(testTexelFetchOffset(): 7(f16vec4) Function None 8 26: Label 1334(texel): 64(ptr) Variable Function Store 1334(texel) 121 1335: 123 Load 125(s1D) 1336: 52(float) Load 128(c1) 1337: 47(int) ConvertFToS 1336 1338: 52(float) Load 565(lod) 1339: 47(int) ConvertFToS 1338 1340: 122 Image 1335 1341: 7(f16vec4) ImageFetch 1340 1337 Lod ConstOffset 1339 709 1342: 7(f16vec4) Load 1334(texel) 1343: 7(f16vec4) FAdd 1342 1341 Store 1334(texel) 1343 1344: 143 Load 145(s2D) 1345: 53(fvec2) Load 148(c2) 1346: 721(ivec2) ConvertFToS 1345 1347: 52(float) Load 565(lod) 1348: 47(int) ConvertFToS 1347 1349: 142 Image 1344 1350: 7(f16vec4) ImageFetch 1349 1346 Lod ConstOffset 1348 722 1351: 7(f16vec4) Load 1334(texel) 1352: 7(f16vec4) FAdd 1351 1350 Store 1334(texel) 1352 1353: 163 Load 165(s3D) 1354: 167(fvec3) Load 169(c3) 1355: 734(ivec3) ConvertFToS 1354 1356: 52(float) Load 565(lod) 1357: 47(int) ConvertFToS 1356 1358: 162 Image 1353 1359: 7(f16vec4) ImageFetch 1358 1355 Lod ConstOffset 1357 735 1360: 7(f16vec4) Load 1334(texel) 1361: 7(f16vec4) FAdd 1360 1359 Store 1334(texel) 1361 1362: 357 Load 359(s2DRect) 1363: 53(fvec2) Load 148(c2) 1364: 721(ivec2) ConvertFToS 1363 1365: 356 Image 1362 1366: 7(f16vec4) ImageFetch 1365 1364 ConstOffset 722 1367: 7(f16vec4) Load 1334(texel) 1368: 7(f16vec4) FAdd 1367 1366 Store 1334(texel) 1368 1369: 269 Load 271(s1DArray) 1370: 53(fvec2) Load 148(c2) 1371: 721(ivec2) ConvertFToS 1370 1372: 52(float) Load 565(lod) 1373: 47(int) ConvertFToS 1372 1374: 268 Image 1369 1375: 7(f16vec4) ImageFetch 1374 1371 Lod ConstOffset 1373 709 1376: 7(f16vec4) Load 1334(texel) 1377: 7(f16vec4) FAdd 1376 1375 Store 1334(texel) 1377 1378: 284 Load 286(s2DArray) 1379: 167(fvec3) Load 169(c3) 1380: 734(ivec3) ConvertFToS 1379 1381: 52(float) Load 565(lod) 1382: 47(int) ConvertFToS 1381 1383: 283 Image 1378 1384: 7(f16vec4) ImageFetch 1383 1380 Lod ConstOffset 1382 722 1385: 7(f16vec4) Load 1334(texel) 1386: 7(f16vec4) FAdd 1385 1384 Store 1334(texel) 1386 1387: 7(f16vec4) Load 1334(texel) ReturnValue 1387 FunctionEnd 27(testTextureGrad(): 7(f16vec4) Function None 8 28: Label 1390(texel): 64(ptr) Variable Function Store 1390(texel) 121 1391: 123 Load 125(s1D) 1392: 52(float) Load 128(c1) 1394: 52(float) Load 1393(dPdxy1) 1395: 7(f16vec4) ImageSampleExplicitLod 1391 1392 Grad 1394 1394 1396: 7(f16vec4) Load 1390(texel) 1397: 7(f16vec4) FAdd 1396 1395 Store 1390(texel) 1397 1398: 123 Load 125(s1D) 1399:6(float16_t) Load 135(f16c1) 1401:6(float16_t) Load 1400(f16dPdxy1) 1402: 7(f16vec4) ImageSampleExplicitLod 1398 1399 Grad 1401 1401 1403: 7(f16vec4) Load 1390(texel) 1404: 7(f16vec4) FAdd 1403 1402 Store 1390(texel) 1404 1405: 143 Load 145(s2D) 1406: 53(fvec2) Load 148(c2) 1408: 53(fvec2) Load 1407(dPdxy2) 1409: 7(f16vec4) ImageSampleExplicitLod 1405 1406 Grad 1408 1408 1410: 7(f16vec4) Load 1390(texel) 1411: 7(f16vec4) FAdd 1410 1409 Store 1390(texel) 1411 1412: 143 Load 145(s2D) 1413:154(f16vec2) Load 156(f16c2) 1415:154(f16vec2) Load 1414(f16dPdxy2) 1416: 7(f16vec4) ImageSampleExplicitLod 1412 1413 Grad 1415 1415 1417: 7(f16vec4) Load 1390(texel) 1418: 7(f16vec4) FAdd 1417 1416 Store 1390(texel) 1418 1419: 163 Load 165(s3D) 1420: 167(fvec3) Load 169(c3) 1422: 167(fvec3) Load 1421(dPdxy3) 1423: 7(f16vec4) ImageSampleExplicitLod 1419 1420 Grad 1422 1422 1424: 7(f16vec4) Load 1390(texel) 1425: 7(f16vec4) FAdd 1424 1423 Store 1390(texel) 1425 1426: 163 Load 165(s3D) 1427:175(f16vec3) Load 177(f16c3) 1429:175(f16vec3) Load 1428(f16dPdxy3) 1430: 7(f16vec4) ImageSampleExplicitLod 1426 1427 Grad 1429 1429 1431: 7(f16vec4) Load 1390(texel) 1432: 7(f16vec4) FAdd 1431 1430 Store 1390(texel) 1432 1433: 184 Load 186(sCube) 1434: 167(fvec3) Load 169(c3) 1435: 167(fvec3) Load 1421(dPdxy3) 1436: 7(f16vec4) ImageSampleExplicitLod 1433 1434 Grad 1435 1435 1437: 7(f16vec4) Load 1390(texel) 1438: 7(f16vec4) FAdd 1437 1436 Store 1390(texel) 1438 1439: 184 Load 186(sCube) 1440:175(f16vec3) Load 177(f16c3) 1441:175(f16vec3) Load 1428(f16dPdxy3) 1442: 7(f16vec4) ImageSampleExplicitLod 1439 1440 Grad 1441 1441 1443: 7(f16vec4) Load 1390(texel) 1444: 7(f16vec4) FAdd 1443 1442 Store 1390(texel) 1444 1445: 357 Load 359(s2DRect) 1446: 53(fvec2) Load 148(c2) 1447: 53(fvec2) Load 1407(dPdxy2) 1448: 7(f16vec4) ImageSampleExplicitLod 1445 1446 Grad 1447 1447 1449: 7(f16vec4) Load 1390(texel) 1450: 7(f16vec4) FAdd 1449 1448 Store 1390(texel) 1450 1451: 357 Load 359(s2DRect) 1452:154(f16vec2) Load 156(f16c2) 1453:154(f16vec2) Load 1414(f16dPdxy2) 1454: 7(f16vec4) ImageSampleExplicitLod 1451 1452 Grad 1453 1453 1455: 7(f16vec4) Load 1390(texel) 1456: 7(f16vec4) FAdd 1455 1454 Store 1390(texel) 1456 1457: 371 Load 373(s2DRectShadow) 1458: 167(fvec3) Load 169(c3) 1459: 53(fvec2) Load 1407(dPdxy2) 1460: 52(float) CompositeExtract 1458 2 1461:6(float16_t) ImageSampleDrefExplicitLod 1457 1458 1460 Grad 1459 1459 1462: 208(ptr) AccessChain 1390(texel) 207 1463:6(float16_t) Load 1462 1464:6(float16_t) FAdd 1463 1461 1465: 208(ptr) AccessChain 1390(texel) 207 Store 1465 1464 1466: 371 Load 373(s2DRectShadow) 1467:154(f16vec2) Load 156(f16c2) 1468: 52(float) Load 215(compare) 1469:154(f16vec2) Load 1414(f16dPdxy2) 1470:6(float16_t) ImageSampleDrefExplicitLod 1466 1467 1468 Grad 1469 1469 1471: 208(ptr) AccessChain 1390(texel) 207 1472:6(float16_t) Load 1471 1473:6(float16_t) FAdd 1472 1470 1474: 208(ptr) AccessChain 1390(texel) 207 Store 1474 1473 1475: 199 Load 201(s1DShadow) 1476: 167(fvec3) Load 169(c3) 1477: 52(float) Load 1393(dPdxy1) 1478: 52(float) CompositeExtract 1476 2 1479:6(float16_t) ImageSampleDrefExplicitLod 1475 1476 1478 Grad 1477 1477 1480: 208(ptr) AccessChain 1390(texel) 207 1481:6(float16_t) Load 1480 1482:6(float16_t) FAdd 1481 1479 1483: 208(ptr) AccessChain 1390(texel) 207 Store 1483 1482 1484: 199 Load 201(s1DShadow) 1485:154(f16vec2) Load 156(f16c2) 1486: 52(float) Load 215(compare) 1487:6(float16_t) Load 1400(f16dPdxy1) 1488:6(float16_t) ImageSampleDrefExplicitLod 1484 1485 1486 Grad 1487 1487 1489: 208(ptr) AccessChain 1390(texel) 207 1490:6(float16_t) Load 1489 1491:6(float16_t) FAdd 1490 1488 1492: 208(ptr) AccessChain 1390(texel) 207 Store 1492 1491 1493: 224 Load 226(s2DShadow) 1494: 167(fvec3) Load 169(c3) 1495: 53(fvec2) Load 1407(dPdxy2) 1496: 52(float) CompositeExtract 1494 2 1497:6(float16_t) ImageSampleDrefExplicitLod 1493 1494 1496 Grad 1495 1495 1498: 208(ptr) AccessChain 1390(texel) 207 1499:6(float16_t) Load 1498 1500:6(float16_t) FAdd 1499 1497 1501: 208(ptr) AccessChain 1390(texel) 207 Store 1501 1500 1502: 224 Load 226(s2DShadow) 1503:154(f16vec2) Load 156(f16c2) 1504: 52(float) Load 215(compare) 1505:154(f16vec2) Load 1414(f16dPdxy2) 1506:6(float16_t) ImageSampleDrefExplicitLod 1502 1503 1504 Grad 1505 1505 1507: 208(ptr) AccessChain 1390(texel) 207 1508:6(float16_t) Load 1507 1509:6(float16_t) FAdd 1508 1506 1510: 208(ptr) AccessChain 1390(texel) 207 Store 1510 1509 1511: 245 Load 247(sCubeShadow) 1512: 249(fvec4) Load 251(c4) 1513: 167(fvec3) Load 1421(dPdxy3) 1514: 52(float) CompositeExtract 1512 3 1515:6(float16_t) ImageSampleDrefExplicitLod 1511 1512 1514 Grad 1513 1513 1516: 208(ptr) AccessChain 1390(texel) 207 1517:6(float16_t) Load 1516 1518:6(float16_t) FAdd 1517 1515 1519: 208(ptr) AccessChain 1390(texel) 207 Store 1519 1518 1520: 245 Load 247(sCubeShadow) 1521:175(f16vec3) Load 177(f16c3) 1522: 52(float) Load 215(compare) 1523:175(f16vec3) Load 1428(f16dPdxy3) 1524:6(float16_t) ImageSampleDrefExplicitLod 1520 1521 1522 Grad 1523 1523 1525: 208(ptr) AccessChain 1390(texel) 207 1526:6(float16_t) Load 1525 1527:6(float16_t) FAdd 1526 1524 1528: 208(ptr) AccessChain 1390(texel) 207 Store 1528 1527 1529: 269 Load 271(s1DArray) 1530: 53(fvec2) Load 148(c2) 1531: 52(float) Load 1393(dPdxy1) 1532: 7(f16vec4) ImageSampleExplicitLod 1529 1530 Grad 1531 1531 1533: 7(f16vec4) Load 1390(texel) 1534: 7(f16vec4) FAdd 1533 1532 Store 1390(texel) 1534 1535: 269 Load 271(s1DArray) 1536:154(f16vec2) Load 156(f16c2) 1537:6(float16_t) Load 1400(f16dPdxy1) 1538: 7(f16vec4) ImageSampleExplicitLod 1535 1536 Grad 1537 1537 1539: 7(f16vec4) Load 1390(texel) 1540: 7(f16vec4) FAdd 1539 1538 Store 1390(texel) 1540 1541: 284 Load 286(s2DArray) 1542: 167(fvec3) Load 169(c3) 1543: 53(fvec2) Load 1407(dPdxy2) 1544: 7(f16vec4) ImageSampleExplicitLod 1541 1542 Grad 1543 1543 1545: 7(f16vec4) Load 1390(texel) 1546: 7(f16vec4) FAdd 1545 1544 Store 1390(texel) 1546 1547: 284 Load 286(s2DArray) 1548:175(f16vec3) Load 177(f16c3) 1549:154(f16vec2) Load 1414(f16dPdxy2) 1550: 7(f16vec4) ImageSampleExplicitLod 1547 1548 Grad 1549 1549 1551: 7(f16vec4) Load 1390(texel) 1552: 7(f16vec4) FAdd 1551 1550 Store 1390(texel) 1552 1553: 316 Load 318(s1DArrayShadow) 1554: 167(fvec3) Load 169(c3) 1555: 52(float) Load 1393(dPdxy1) 1556: 52(float) CompositeExtract 1554 2 1557:6(float16_t) ImageSampleDrefExplicitLod 1553 1554 1556 Grad 1555 1555 1558: 208(ptr) AccessChain 1390(texel) 207 1559:6(float16_t) Load 1558 1560:6(float16_t) FAdd 1559 1557 1561: 208(ptr) AccessChain 1390(texel) 207 Store 1561 1560 1562: 316 Load 318(s1DArrayShadow) 1563:154(f16vec2) Load 156(f16c2) 1564: 52(float) Load 215(compare) 1565:6(float16_t) Load 1400(f16dPdxy1) 1566:6(float16_t) ImageSampleDrefExplicitLod 1562 1563 1564 Grad 1565 1565 1567: 208(ptr) AccessChain 1390(texel) 207 1568:6(float16_t) Load 1567 1569:6(float16_t) FAdd 1568 1566 1570: 208(ptr) AccessChain 1390(texel) 207 Store 1570 1569 1571: 337 Load 339(s2DArrayShadow) 1572: 249(fvec4) Load 251(c4) 1573: 53(fvec2) Load 1407(dPdxy2) 1574: 52(float) CompositeExtract 1572 3 1575:6(float16_t) ImageSampleDrefExplicitLod 1571 1572 1574 Grad 1573 1573 1576: 208(ptr) AccessChain 1390(texel) 207 1577:6(float16_t) Load 1576 1578:6(float16_t) FAdd 1577 1575 1579: 208(ptr) AccessChain 1390(texel) 207 Store 1579 1578 1580: 337 Load 339(s2DArrayShadow) 1581:175(f16vec3) Load 177(f16c3) 1582: 52(float) Load 215(compare) 1583:154(f16vec2) Load 1414(f16dPdxy2) 1584:6(float16_t) ImageSampleDrefExplicitLod 1580 1581 1582 Grad 1583 1583 1585: 208(ptr) AccessChain 1390(texel) 207 1586:6(float16_t) Load 1585 1587:6(float16_t) FAdd 1586 1584 1588: 208(ptr) AccessChain 1390(texel) 207 Store 1588 1587 1589: 299 Load 301(sCubeArray) 1590: 249(fvec4) Load 251(c4) 1591: 167(fvec3) Load 1421(dPdxy3) 1592: 7(f16vec4) ImageSampleExplicitLod 1589 1590 Grad 1591 1591 1593: 7(f16vec4) Load 1390(texel) 1594: 7(f16vec4) FAdd 1593 1592 Store 1390(texel) 1594 1595: 299 Load 301(sCubeArray) 1596: 7(f16vec4) Load 309(f16c4) 1597:175(f16vec3) Load 1428(f16dPdxy3) 1598: 7(f16vec4) ImageSampleExplicitLod 1595 1596 Grad 1597 1597 1599: 7(f16vec4) Load 1390(texel) 1600: 7(f16vec4) FAdd 1599 1598 Store 1390(texel) 1600 1601: 7(f16vec4) Load 1390(texel) ReturnValue 1601 FunctionEnd 29(testTextureGradOffset(): 7(f16vec4) Function None 8 30: Label 1604(texel): 64(ptr) Variable Function Store 1604(texel) 121 1605: 123 Load 125(s1D) 1606: 52(float) Load 128(c1) 1607: 52(float) Load 1393(dPdxy1) 1608: 7(f16vec4) ImageSampleExplicitLod 1605 1606 Grad ConstOffset 1607 1607 709 1609: 7(f16vec4) Load 1604(texel) 1610: 7(f16vec4) FAdd 1609 1608 Store 1604(texel) 1610 1611: 123 Load 125(s1D) 1612:6(float16_t) Load 135(f16c1) 1613:6(float16_t) Load 1400(f16dPdxy1) 1614: 7(f16vec4) ImageSampleExplicitLod 1611 1612 Grad ConstOffset 1613 1613 709 1615: 7(f16vec4) Load 1604(texel) 1616: 7(f16vec4) FAdd 1615 1614 Store 1604(texel) 1616 1617: 143 Load 145(s2D) 1618: 53(fvec2) Load 148(c2) 1619: 53(fvec2) Load 1407(dPdxy2) 1620: 7(f16vec4) ImageSampleExplicitLod 1617 1618 Grad ConstOffset 1619 1619 722 1621: 7(f16vec4) Load 1604(texel) 1622: 7(f16vec4) FAdd 1621 1620 Store 1604(texel) 1622 1623: 143 Load 145(s2D) 1624:154(f16vec2) Load 156(f16c2) 1625:154(f16vec2) Load 1414(f16dPdxy2) 1626: 7(f16vec4) ImageSampleExplicitLod 1623 1624 Grad ConstOffset 1625 1625 722 1627: 7(f16vec4) Load 1604(texel) 1628: 7(f16vec4) FAdd 1627 1626 Store 1604(texel) 1628 1629: 163 Load 165(s3D) 1630: 167(fvec3) Load 169(c3) 1631: 167(fvec3) Load 1421(dPdxy3) 1632: 7(f16vec4) ImageSampleExplicitLod 1629 1630 Grad ConstOffset 1631 1631 735 1633: 7(f16vec4) Load 1604(texel) 1634: 7(f16vec4) FAdd 1633 1632 Store 1604(texel) 1634 1635: 163 Load 165(s3D) 1636:175(f16vec3) Load 177(f16c3) 1637:175(f16vec3) Load 1428(f16dPdxy3) 1638: 7(f16vec4) ImageSampleExplicitLod 1635 1636 Grad ConstOffset 1637 1637 735 1639: 7(f16vec4) Load 1604(texel) 1640: 7(f16vec4) FAdd 1639 1638 Store 1604(texel) 1640 1641: 357 Load 359(s2DRect) 1642: 53(fvec2) Load 148(c2) 1643: 53(fvec2) Load 1407(dPdxy2) 1644: 7(f16vec4) ImageSampleExplicitLod 1641 1642 Grad ConstOffset 1643 1643 722 1645: 7(f16vec4) Load 1604(texel) 1646: 7(f16vec4) FAdd 1645 1644 Store 1604(texel) 1646 1647: 357 Load 359(s2DRect) 1648:154(f16vec2) Load 156(f16c2) 1649:154(f16vec2) Load 1414(f16dPdxy2) 1650: 7(f16vec4) ImageSampleExplicitLod 1647 1648 Grad ConstOffset 1649 1649 722 1651: 7(f16vec4) Load 1604(texel) 1652: 7(f16vec4) FAdd 1651 1650 Store 1604(texel) 1652 1653: 371 Load 373(s2DRectShadow) 1654: 167(fvec3) Load 169(c3) 1655: 53(fvec2) Load 1407(dPdxy2) 1656: 52(float) CompositeExtract 1654 2 1657:6(float16_t) ImageSampleDrefExplicitLod 1653 1654 1656 Grad ConstOffset 1655 1655 722 1658: 208(ptr) AccessChain 1604(texel) 207 1659:6(float16_t) Load 1658 1660:6(float16_t) FAdd 1659 1657 1661: 208(ptr) AccessChain 1604(texel) 207 Store 1661 1660 1662: 371 Load 373(s2DRectShadow) 1663:154(f16vec2) Load 156(f16c2) 1664: 52(float) Load 215(compare) 1665:154(f16vec2) Load 1414(f16dPdxy2) 1666:6(float16_t) ImageSampleDrefExplicitLod 1662 1663 1664 Grad ConstOffset 1665 1665 722 1667: 208(ptr) AccessChain 1604(texel) 207 1668:6(float16_t) Load 1667 1669:6(float16_t) FAdd 1668 1666 1670: 208(ptr) AccessChain 1604(texel) 207 Store 1670 1669 1671: 199 Load 201(s1DShadow) 1672: 167(fvec3) Load 169(c3) 1673: 52(float) Load 1393(dPdxy1) 1674: 52(float) CompositeExtract 1672 2 1675:6(float16_t) ImageSampleDrefExplicitLod 1671 1672 1674 Grad ConstOffset 1673 1673 709 1676: 208(ptr) AccessChain 1604(texel) 207 1677:6(float16_t) Load 1676 1678:6(float16_t) FAdd 1677 1675 1679: 208(ptr) AccessChain 1604(texel) 207 Store 1679 1678 1680: 199 Load 201(s1DShadow) 1681:154(f16vec2) Load 156(f16c2) 1682: 52(float) Load 215(compare) 1683:6(float16_t) Load 1400(f16dPdxy1) 1684:6(float16_t) ImageSampleDrefExplicitLod 1680 1681 1682 Grad ConstOffset 1683 1683 709 1685: 208(ptr) AccessChain 1604(texel) 207 1686:6(float16_t) Load 1685 1687:6(float16_t) FAdd 1686 1684 1688: 208(ptr) AccessChain 1604(texel) 207 Store 1688 1687 1689: 224 Load 226(s2DShadow) 1690: 167(fvec3) Load 169(c3) 1691: 53(fvec2) Load 1407(dPdxy2) 1692: 52(float) CompositeExtract 1690 2 1693:6(float16_t) ImageSampleDrefExplicitLod 1689 1690 1692 Grad ConstOffset 1691 1691 722 1694: 208(ptr) AccessChain 1604(texel) 207 1695:6(float16_t) Load 1694 1696:6(float16_t) FAdd 1695 1693 1697: 208(ptr) AccessChain 1604(texel) 207 Store 1697 1696 1698: 224 Load 226(s2DShadow) 1699:154(f16vec2) Load 156(f16c2) 1700: 52(float) Load 215(compare) 1701:154(f16vec2) Load 1414(f16dPdxy2) 1702:6(float16_t) ImageSampleDrefExplicitLod 1698 1699 1700 Grad ConstOffset 1701 1701 722 1703: 208(ptr) AccessChain 1604(texel) 207 1704:6(float16_t) Load 1703 1705:6(float16_t) FAdd 1704 1702 1706: 208(ptr) AccessChain 1604(texel) 207 Store 1706 1705 1707: 269 Load 271(s1DArray) 1708: 53(fvec2) Load 148(c2) 1709: 52(float) Load 1393(dPdxy1) 1710: 7(f16vec4) ImageSampleExplicitLod 1707 1708 Grad ConstOffset 1709 1709 709 1711: 7(f16vec4) Load 1604(texel) 1712: 7(f16vec4) FAdd 1711 1710 Store 1604(texel) 1712 1713: 269 Load 271(s1DArray) 1714:154(f16vec2) Load 156(f16c2) 1715:6(float16_t) Load 1400(f16dPdxy1) 1716: 7(f16vec4) ImageSampleExplicitLod 1713 1714 Grad ConstOffset 1715 1715 709 1717: 7(f16vec4) Load 1604(texel) 1718: 7(f16vec4) FAdd 1717 1716 Store 1604(texel) 1718 1719: 284 Load 286(s2DArray) 1720: 167(fvec3) Load 169(c3) 1721: 53(fvec2) Load 1407(dPdxy2) 1722: 7(f16vec4) ImageSampleExplicitLod 1719 1720 Grad ConstOffset 1721 1721 722 1723: 7(f16vec4) Load 1604(texel) 1724: 7(f16vec4) FAdd 1723 1722 Store 1604(texel) 1724 1725: 284 Load 286(s2DArray) 1726:175(f16vec3) Load 177(f16c3) 1727:154(f16vec2) Load 1414(f16dPdxy2) 1728: 7(f16vec4) ImageSampleExplicitLod 1725 1726 Grad ConstOffset 1727 1727 722 1729: 7(f16vec4) Load 1604(texel) 1730: 7(f16vec4) FAdd 1729 1728 Store 1604(texel) 1730 1731: 316 Load 318(s1DArrayShadow) 1732: 167(fvec3) Load 169(c3) 1733: 52(float) Load 1393(dPdxy1) 1734: 52(float) CompositeExtract 1732 2 1735:6(float16_t) ImageSampleDrefExplicitLod 1731 1732 1734 Grad ConstOffset 1733 1733 709 1736: 208(ptr) AccessChain 1604(texel) 207 1737:6(float16_t) Load 1736 1738:6(float16_t) FAdd 1737 1735 1739: 208(ptr) AccessChain 1604(texel) 207 Store 1739 1738 1740: 316 Load 318(s1DArrayShadow) 1741:154(f16vec2) Load 156(f16c2) 1742: 52(float) Load 215(compare) 1743:6(float16_t) Load 1400(f16dPdxy1) 1744:6(float16_t) ImageSampleDrefExplicitLod 1740 1741 1742 Grad ConstOffset 1743 1743 709 1745: 208(ptr) AccessChain 1604(texel) 207 1746:6(float16_t) Load 1745 1747:6(float16_t) FAdd 1746 1744 1748: 208(ptr) AccessChain 1604(texel) 207 Store 1748 1747 1749: 337 Load 339(s2DArrayShadow) 1750: 249(fvec4) Load 251(c4) 1751: 53(fvec2) Load 1407(dPdxy2) 1752: 52(float) CompositeExtract 1750 3 1753:6(float16_t) ImageSampleDrefExplicitLod 1749 1750 1752 Grad ConstOffset 1751 1751 722 1754: 208(ptr) AccessChain 1604(texel) 207 1755:6(float16_t) Load 1754 1756:6(float16_t) FAdd 1755 1753 1757: 208(ptr) AccessChain 1604(texel) 207 Store 1757 1756 1758: 337 Load 339(s2DArrayShadow) 1759:175(f16vec3) Load 177(f16c3) 1760: 52(float) Load 215(compare) 1761:154(f16vec2) Load 1414(f16dPdxy2) 1762:6(float16_t) ImageSampleDrefExplicitLod 1758 1759 1760 Grad ConstOffset 1761 1761 722 1763: 208(ptr) AccessChain 1604(texel) 207 1764:6(float16_t) Load 1763 1765:6(float16_t) FAdd 1764 1762 1766: 208(ptr) AccessChain 1604(texel) 207 Store 1766 1765 1767: 7(f16vec4) Load 1604(texel) ReturnValue 1767 FunctionEnd 31(testTextureProjGrad(): 7(f16vec4) Function None 8 32: Label 1770(texel): 64(ptr) Variable Function Store 1770(texel) 121 1771: 123 Load 125(s1D) 1772: 53(fvec2) Load 148(c2) 1773: 52(float) Load 1393(dPdxy1) 1774: 7(f16vec4) ImageSampleProjExplicitLod 1771 1772 Grad 1773 1773 1775: 7(f16vec4) Load 1770(texel) 1776: 7(f16vec4) FAdd 1775 1774 Store 1770(texel) 1776 1777: 123 Load 125(s1D) 1778:154(f16vec2) Load 156(f16c2) 1779:6(float16_t) Load 1400(f16dPdxy1) 1780: 7(f16vec4) ImageSampleProjExplicitLod 1777 1778 Grad 1779 1779 1781: 7(f16vec4) Load 1770(texel) 1782: 7(f16vec4) FAdd 1781 1780 Store 1770(texel) 1782 1783: 123 Load 125(s1D) 1784: 249(fvec4) Load 251(c4) 1785: 52(float) Load 1393(dPdxy1) 1786: 52(float) CompositeExtract 1784 3 1787: 249(fvec4) CompositeInsert 1786 1784 1 1788: 7(f16vec4) ImageSampleProjExplicitLod 1783 1787 Grad 1785 1785 1789: 7(f16vec4) Load 1770(texel) 1790: 7(f16vec4) FAdd 1789 1788 Store 1770(texel) 1790 1791: 123 Load 125(s1D) 1792: 7(f16vec4) Load 309(f16c4) 1793:6(float16_t) Load 1400(f16dPdxy1) 1794:6(float16_t) CompositeExtract 1792 3 1795: 7(f16vec4) CompositeInsert 1794 1792 1 1796: 7(f16vec4) ImageSampleProjExplicitLod 1791 1795 Grad 1793 1793 1797: 7(f16vec4) Load 1770(texel) 1798: 7(f16vec4) FAdd 1797 1796 Store 1770(texel) 1798 1799: 143 Load 145(s2D) 1800: 167(fvec3) Load 169(c3) 1801: 53(fvec2) Load 1407(dPdxy2) 1802: 7(f16vec4) ImageSampleProjExplicitLod 1799 1800 Grad 1801 1801 1803: 7(f16vec4) Load 1770(texel) 1804: 7(f16vec4) FAdd 1803 1802 Store 1770(texel) 1804 1805: 143 Load 145(s2D) 1806:175(f16vec3) Load 177(f16c3) 1807:154(f16vec2) Load 1414(f16dPdxy2) 1808: 7(f16vec4) ImageSampleProjExplicitLod 1805 1806 Grad 1807 1807 1809: 7(f16vec4) Load 1770(texel) 1810: 7(f16vec4) FAdd 1809 1808 Store 1770(texel) 1810 1811: 143 Load 145(s2D) 1812: 249(fvec4) Load 251(c4) 1813: 53(fvec2) Load 1407(dPdxy2) 1814: 52(float) CompositeExtract 1812 3 1815: 249(fvec4) CompositeInsert 1814 1812 2 1816: 7(f16vec4) ImageSampleProjExplicitLod 1811 1815 Grad 1813 1813 1817: 7(f16vec4) Load 1770(texel) 1818: 7(f16vec4) FAdd 1817 1816 Store 1770(texel) 1818 1819: 143 Load 145(s2D) 1820: 7(f16vec4) Load 309(f16c4) 1821:154(f16vec2) Load 1414(f16dPdxy2) 1822:6(float16_t) CompositeExtract 1820 3 1823: 7(f16vec4) CompositeInsert 1822 1820 2 1824: 7(f16vec4) ImageSampleProjExplicitLod 1819 1823 Grad 1821 1821 1825: 7(f16vec4) Load 1770(texel) 1826: 7(f16vec4) FAdd 1825 1824 Store 1770(texel) 1826 1827: 163 Load 165(s3D) 1828: 249(fvec4) Load 251(c4) 1829: 167(fvec3) Load 1421(dPdxy3) 1830: 7(f16vec4) ImageSampleProjExplicitLod 1827 1828 Grad 1829 1829 1831: 7(f16vec4) Load 1770(texel) 1832: 7(f16vec4) FAdd 1831 1830 Store 1770(texel) 1832 1833: 163 Load 165(s3D) 1834: 7(f16vec4) Load 309(f16c4) 1835:175(f16vec3) Load 1428(f16dPdxy3) 1836: 7(f16vec4) ImageSampleProjExplicitLod 1833 1834 Grad 1835 1835 1837: 7(f16vec4) Load 1770(texel) 1838: 7(f16vec4) FAdd 1837 1836 Store 1770(texel) 1838 1839: 357 Load 359(s2DRect) 1840: 167(fvec3) Load 169(c3) 1841: 53(fvec2) Load 1407(dPdxy2) 1842: 7(f16vec4) ImageSampleProjExplicitLod 1839 1840 Grad 1841 1841 1843: 7(f16vec4) Load 1770(texel) 1844: 7(f16vec4) FAdd 1843 1842 Store 1770(texel) 1844 1845: 357 Load 359(s2DRect) 1846:175(f16vec3) Load 177(f16c3) 1847:154(f16vec2) Load 1414(f16dPdxy2) 1848: 7(f16vec4) ImageSampleProjExplicitLod 1845 1846 Grad 1847 1847 1849: 7(f16vec4) Load 1770(texel) 1850: 7(f16vec4) FAdd 1849 1848 Store 1770(texel) 1850 1851: 357 Load 359(s2DRect) 1852: 249(fvec4) Load 251(c4) 1853: 53(fvec2) Load 1407(dPdxy2) 1854: 52(float) CompositeExtract 1852 3 1855: 249(fvec4) CompositeInsert 1854 1852 2 1856: 7(f16vec4) ImageSampleProjExplicitLod 1851 1855 Grad 1853 1853 1857: 7(f16vec4) Load 1770(texel) 1858: 7(f16vec4) FAdd 1857 1856 Store 1770(texel) 1858 1859: 357 Load 359(s2DRect) 1860: 7(f16vec4) Load 309(f16c4) 1861:154(f16vec2) Load 1414(f16dPdxy2) 1862:6(float16_t) CompositeExtract 1860 3 1863: 7(f16vec4) CompositeInsert 1862 1860 2 1864: 7(f16vec4) ImageSampleProjExplicitLod 1859 1863 Grad 1861 1861 1865: 7(f16vec4) Load 1770(texel) 1866: 7(f16vec4) FAdd 1865 1864 Store 1770(texel) 1866 1867: 371 Load 373(s2DRectShadow) 1868: 249(fvec4) Load 251(c4) 1869: 53(fvec2) Load 1407(dPdxy2) 1870: 52(float) CompositeExtract 1868 2 1871: 52(float) CompositeExtract 1868 3 1872: 249(fvec4) CompositeInsert 1871 1868 2 1873:6(float16_t) ImageSampleProjDrefExplicitLod 1867 1872 1870 Grad 1869 1869 1874: 208(ptr) AccessChain 1770(texel) 207 1875:6(float16_t) Load 1874 1876:6(float16_t) FAdd 1875 1873 1877: 208(ptr) AccessChain 1770(texel) 207 Store 1877 1876 1878: 371 Load 373(s2DRectShadow) 1879:175(f16vec3) Load 177(f16c3) 1880: 52(float) Load 215(compare) 1881:154(f16vec2) Load 1414(f16dPdxy2) 1882:6(float16_t) ImageSampleProjDrefExplicitLod 1878 1879 1880 Grad 1881 1881 1883: 208(ptr) AccessChain 1770(texel) 207 1884:6(float16_t) Load 1883 1885:6(float16_t) FAdd 1884 1882 1886: 208(ptr) AccessChain 1770(texel) 207 Store 1886 1885 1887: 199 Load 201(s1DShadow) 1888: 249(fvec4) Load 251(c4) 1889: 52(float) Load 1393(dPdxy1) 1890: 52(float) CompositeExtract 1888 2 1891: 52(float) CompositeExtract 1888 3 1892: 249(fvec4) CompositeInsert 1891 1888 1 1893:6(float16_t) ImageSampleProjDrefExplicitLod 1887 1892 1890 Grad 1889 1889 1894: 208(ptr) AccessChain 1770(texel) 207 1895:6(float16_t) Load 1894 1896:6(float16_t) FAdd 1895 1893 1897: 208(ptr) AccessChain 1770(texel) 207 Store 1897 1896 1898: 199 Load 201(s1DShadow) 1899:175(f16vec3) Load 177(f16c3) 1900: 52(float) Load 215(compare) 1901:6(float16_t) Load 1400(f16dPdxy1) 1902:6(float16_t) CompositeExtract 1899 2 1903:175(f16vec3) CompositeInsert 1902 1899 1 1904:6(float16_t) ImageSampleProjDrefExplicitLod 1898 1903 1900 Grad 1901 1901 1905: 208(ptr) AccessChain 1770(texel) 207 1906:6(float16_t) Load 1905 1907:6(float16_t) FAdd 1906 1904 1908: 208(ptr) AccessChain 1770(texel) 207 Store 1908 1907 1909: 224 Load 226(s2DShadow) 1910: 249(fvec4) Load 251(c4) 1911: 53(fvec2) Load 1407(dPdxy2) 1912: 52(float) CompositeExtract 1910 2 1913: 52(float) CompositeExtract 1910 3 1914: 249(fvec4) CompositeInsert 1913 1910 2 1915:6(float16_t) ImageSampleProjDrefExplicitLod 1909 1914 1912 Grad 1911 1911 1916: 208(ptr) AccessChain 1770(texel) 207 1917:6(float16_t) Load 1916 1918:6(float16_t) FAdd 1917 1915 1919: 208(ptr) AccessChain 1770(texel) 207 Store 1919 1918 1920: 224 Load 226(s2DShadow) 1921:175(f16vec3) Load 177(f16c3) 1922: 52(float) Load 215(compare) 1923:154(f16vec2) Load 1414(f16dPdxy2) 1924:6(float16_t) ImageSampleProjDrefExplicitLod 1920 1921 1922 Grad 1923 1923 1925: 208(ptr) AccessChain 1770(texel) 207 1926:6(float16_t) Load 1925 1927:6(float16_t) FAdd 1926 1924 1928: 208(ptr) AccessChain 1770(texel) 207 Store 1928 1927 1929: 7(f16vec4) Load 1770(texel) ReturnValue 1929 FunctionEnd 33(testTextureProjGradoffset(): 7(f16vec4) Function None 8 34: Label 1932(texel): 64(ptr) Variable Function Store 1932(texel) 121 1933: 123 Load 125(s1D) 1934: 53(fvec2) Load 148(c2) 1935: 52(float) Load 1393(dPdxy1) 1936: 7(f16vec4) ImageSampleProjExplicitLod 1933 1934 Grad ConstOffset 1935 1935 709 1937: 7(f16vec4) Load 1932(texel) 1938: 7(f16vec4) FAdd 1937 1936 Store 1932(texel) 1938 1939: 123 Load 125(s1D) 1940:154(f16vec2) Load 156(f16c2) 1941:6(float16_t) Load 1400(f16dPdxy1) 1942: 7(f16vec4) ImageSampleProjExplicitLod 1939 1940 Grad ConstOffset 1941 1941 709 1943: 7(f16vec4) Load 1932(texel) 1944: 7(f16vec4) FAdd 1943 1942 Store 1932(texel) 1944 1945: 123 Load 125(s1D) 1946: 249(fvec4) Load 251(c4) 1947: 52(float) Load 1393(dPdxy1) 1948: 52(float) CompositeExtract 1946 3 1949: 249(fvec4) CompositeInsert 1948 1946 1 1950: 7(f16vec4) ImageSampleProjExplicitLod 1945 1949 Grad ConstOffset 1947 1947 709 1951: 7(f16vec4) Load 1932(texel) 1952: 7(f16vec4) FAdd 1951 1950 Store 1932(texel) 1952 1953: 123 Load 125(s1D) 1954: 7(f16vec4) Load 309(f16c4) 1955:6(float16_t) Load 1400(f16dPdxy1) 1956:6(float16_t) CompositeExtract 1954 3 1957: 7(f16vec4) CompositeInsert 1956 1954 1 1958: 7(f16vec4) ImageSampleProjExplicitLod 1953 1957 Grad ConstOffset 1955 1955 709 1959: 7(f16vec4) Load 1932(texel) 1960: 7(f16vec4) FAdd 1959 1958 Store 1932(texel) 1960 1961: 143 Load 145(s2D) 1962: 167(fvec3) Load 169(c3) 1963: 53(fvec2) Load 1407(dPdxy2) 1964: 7(f16vec4) ImageSampleProjExplicitLod 1961 1962 Grad ConstOffset 1963 1963 722 1965: 7(f16vec4) Load 1932(texel) 1966: 7(f16vec4) FAdd 1965 1964 Store 1932(texel) 1966 1967: 143 Load 145(s2D) 1968:175(f16vec3) Load 177(f16c3) 1969:154(f16vec2) Load 1414(f16dPdxy2) 1970: 7(f16vec4) ImageSampleProjExplicitLod 1967 1968 Grad ConstOffset 1969 1969 722 1971: 7(f16vec4) Load 1932(texel) 1972: 7(f16vec4) FAdd 1971 1970 Store 1932(texel) 1972 1973: 143 Load 145(s2D) 1974: 249(fvec4) Load 251(c4) 1975: 53(fvec2) Load 1407(dPdxy2) 1976: 52(float) CompositeExtract 1974 3 1977: 249(fvec4) CompositeInsert 1976 1974 2 1978: 7(f16vec4) ImageSampleProjExplicitLod 1973 1977 Grad ConstOffset 1975 1975 722 1979: 7(f16vec4) Load 1932(texel) 1980: 7(f16vec4) FAdd 1979 1978 Store 1932(texel) 1980 1981: 143 Load 145(s2D) 1982: 7(f16vec4) Load 309(f16c4) 1983:154(f16vec2) Load 1414(f16dPdxy2) 1984:6(float16_t) CompositeExtract 1982 3 1985: 7(f16vec4) CompositeInsert 1984 1982 2 1986: 7(f16vec4) ImageSampleProjExplicitLod 1981 1985 Grad ConstOffset 1983 1983 722 1987: 7(f16vec4) Load 1932(texel) 1988: 7(f16vec4) FAdd 1987 1986 Store 1932(texel) 1988 1989: 357 Load 359(s2DRect) 1990: 167(fvec3) Load 169(c3) 1991: 53(fvec2) Load 1407(dPdxy2) 1992: 7(f16vec4) ImageSampleProjExplicitLod 1989 1990 Grad ConstOffset 1991 1991 722 1993: 7(f16vec4) Load 1932(texel) 1994: 7(f16vec4) FAdd 1993 1992 Store 1932(texel) 1994 1995: 357 Load 359(s2DRect) 1996:175(f16vec3) Load 177(f16c3) 1997:154(f16vec2) Load 1414(f16dPdxy2) 1998: 7(f16vec4) ImageSampleProjExplicitLod 1995 1996 Grad ConstOffset 1997 1997 722 1999: 7(f16vec4) Load 1932(texel) 2000: 7(f16vec4) FAdd 1999 1998 Store 1932(texel) 2000 2001: 357 Load 359(s2DRect) 2002: 249(fvec4) Load 251(c4) 2003: 53(fvec2) Load 1407(dPdxy2) 2004: 52(float) CompositeExtract 2002 3 2005: 249(fvec4) CompositeInsert 2004 2002 2 2006: 7(f16vec4) ImageSampleProjExplicitLod 2001 2005 Grad ConstOffset 2003 2003 722 2007: 7(f16vec4) Load 1932(texel) 2008: 7(f16vec4) FAdd 2007 2006 Store 1932(texel) 2008 2009: 357 Load 359(s2DRect) 2010: 7(f16vec4) Load 309(f16c4) 2011:154(f16vec2) Load 1414(f16dPdxy2) 2012:6(float16_t) CompositeExtract 2010 3 2013: 7(f16vec4) CompositeInsert 2012 2010 2 2014: 7(f16vec4) ImageSampleProjExplicitLod 2009 2013 Grad ConstOffset 2011 2011 722 2015: 7(f16vec4) Load 1932(texel) 2016: 7(f16vec4) FAdd 2015 2014 Store 1932(texel) 2016 2017: 371 Load 373(s2DRectShadow) 2018: 249(fvec4) Load 251(c4) 2019: 53(fvec2) Load 1407(dPdxy2) 2020: 52(float) CompositeExtract 2018 2 2021: 52(float) CompositeExtract 2018 3 2022: 249(fvec4) CompositeInsert 2021 2018 2 2023:6(float16_t) ImageSampleProjDrefExplicitLod 2017 2022 2020 Grad ConstOffset 2019 2019 722 2024: 208(ptr) AccessChain 1932(texel) 207 2025:6(float16_t) Load 2024 2026:6(float16_t) FAdd 2025 2023 2027: 208(ptr) AccessChain 1932(texel) 207 Store 2027 2026 2028: 371 Load 373(s2DRectShadow) 2029:175(f16vec3) Load 177(f16c3) 2030: 52(float) Load 215(compare) 2031:154(f16vec2) Load 1414(f16dPdxy2) 2032:6(float16_t) ImageSampleProjDrefExplicitLod 2028 2029 2030 Grad ConstOffset 2031 2031 722 2033: 208(ptr) AccessChain 1932(texel) 207 2034:6(float16_t) Load 2033 2035:6(float16_t) FAdd 2034 2032 2036: 208(ptr) AccessChain 1932(texel) 207 Store 2036 2035 2037: 163 Load 165(s3D) 2038: 249(fvec4) Load 251(c4) 2039: 167(fvec3) Load 1421(dPdxy3) 2040: 7(f16vec4) ImageSampleProjExplicitLod 2037 2038 Grad ConstOffset 2039 2039 735 2041: 7(f16vec4) Load 1932(texel) 2042: 7(f16vec4) FAdd 2041 2040 Store 1932(texel) 2042 2043: 163 Load 165(s3D) 2044: 7(f16vec4) Load 309(f16c4) 2045:175(f16vec3) Load 1428(f16dPdxy3) 2046: 7(f16vec4) ImageSampleProjExplicitLod 2043 2044 Grad ConstOffset 2045 2045 735 2047: 7(f16vec4) Load 1932(texel) 2048: 7(f16vec4) FAdd 2047 2046 Store 1932(texel) 2048 2049: 199 Load 201(s1DShadow) 2050: 249(fvec4) Load 251(c4) 2051: 52(float) Load 1393(dPdxy1) 2052: 52(float) CompositeExtract 2050 2 2053: 52(float) CompositeExtract 2050 3 2054: 249(fvec4) CompositeInsert 2053 2050 1 2055:6(float16_t) ImageSampleProjDrefExplicitLod 2049 2054 2052 Grad ConstOffset 2051 2051 709 2056: 208(ptr) AccessChain 1932(texel) 207 2057:6(float16_t) Load 2056 2058:6(float16_t) FAdd 2057 2055 2059: 208(ptr) AccessChain 1932(texel) 207 Store 2059 2058 2060: 199 Load 201(s1DShadow) 2061:175(f16vec3) Load 177(f16c3) 2062: 52(float) Load 215(compare) 2063:6(float16_t) Load 1400(f16dPdxy1) 2064:6(float16_t) CompositeExtract 2061 2 2065:175(f16vec3) CompositeInsert 2064 2061 1 2066:6(float16_t) ImageSampleProjDrefExplicitLod 2060 2065 2062 Grad ConstOffset 2063 2063 709 2067: 208(ptr) AccessChain 1932(texel) 207 2068:6(float16_t) Load 2067 2069:6(float16_t) FAdd 2068 2066 2070: 208(ptr) AccessChain 1932(texel) 207 Store 2070 2069 2071: 224 Load 226(s2DShadow) 2072: 249(fvec4) Load 251(c4) 2073: 53(fvec2) Load 1407(dPdxy2) 2074: 52(float) CompositeExtract 2072 2 2075: 52(float) CompositeExtract 2072 3 2076: 249(fvec4) CompositeInsert 2075 2072 2 2077:6(float16_t) ImageSampleProjDrefExplicitLod 2071 2076 2074 Grad ConstOffset 2073 2073 722 2078: 208(ptr) AccessChain 1932(texel) 207 2079:6(float16_t) Load 2078 2080:6(float16_t) FAdd 2079 2077 2081: 208(ptr) AccessChain 1932(texel) 207 Store 2081 2080 2082: 224 Load 226(s2DShadow) 2083:175(f16vec3) Load 177(f16c3) 2084: 52(float) Load 215(compare) 2085:154(f16vec2) Load 1414(f16dPdxy2) 2086:6(float16_t) ImageSampleProjDrefExplicitLod 2082 2083 2084 Grad ConstOffset 2085 2085 722 2087: 208(ptr) AccessChain 1932(texel) 207 2088:6(float16_t) Load 2087 2089:6(float16_t) FAdd 2088 2086 2090: 208(ptr) AccessChain 1932(texel) 207 Store 2090 2089 2091: 7(f16vec4) Load 1932(texel) ReturnValue 2091 FunctionEnd 35(testTextureGather(): 7(f16vec4) Function None 8 36: Label 2094(texel): 64(ptr) Variable Function Store 2094(texel) 121 2095: 143 Load 145(s2D) 2096: 53(fvec2) Load 148(c2) 2098: 7(f16vec4) ImageGather 2095 2096 2097 2099: 7(f16vec4) Load 2094(texel) 2100: 7(f16vec4) FAdd 2099 2098 Store 2094(texel) 2100 2101: 143 Load 145(s2D) 2102:154(f16vec2) Load 156(f16c2) 2103:6(float16_t) Load 137(f16bias) 2104: 7(f16vec4) ImageGather 2101 2102 2097 Bias 2103 2105: 7(f16vec4) Load 2094(texel) 2106: 7(f16vec4) FAdd 2105 2104 Store 2094(texel) 2106 2107: 284 Load 286(s2DArray) 2108: 167(fvec3) Load 169(c3) 2109: 7(f16vec4) ImageGather 2107 2108 2097 2110: 7(f16vec4) Load 2094(texel) 2111: 7(f16vec4) FAdd 2110 2109 Store 2094(texel) 2111 2112: 284 Load 286(s2DArray) 2113:175(f16vec3) Load 177(f16c3) 2114:6(float16_t) Load 137(f16bias) 2115: 7(f16vec4) ImageGather 2112 2113 2097 Bias 2114 2116: 7(f16vec4) Load 2094(texel) 2117: 7(f16vec4) FAdd 2116 2115 Store 2094(texel) 2117 2118: 184 Load 186(sCube) 2119: 167(fvec3) Load 169(c3) 2120: 7(f16vec4) ImageGather 2118 2119 2097 2121: 7(f16vec4) Load 2094(texel) 2122: 7(f16vec4) FAdd 2121 2120 Store 2094(texel) 2122 2123: 184 Load 186(sCube) 2124:175(f16vec3) Load 177(f16c3) 2125:6(float16_t) Load 137(f16bias) 2126: 7(f16vec4) ImageGather 2123 2124 2097 Bias 2125 2127: 7(f16vec4) Load 2094(texel) 2128: 7(f16vec4) FAdd 2127 2126 Store 2094(texel) 2128 2129: 299 Load 301(sCubeArray) 2130: 249(fvec4) Load 251(c4) 2131: 7(f16vec4) ImageGather 2129 2130 2097 2132: 7(f16vec4) Load 2094(texel) 2133: 7(f16vec4) FAdd 2132 2131 Store 2094(texel) 2133 2134: 299 Load 301(sCubeArray) 2135: 7(f16vec4) Load 309(f16c4) 2136:6(float16_t) Load 137(f16bias) 2137: 7(f16vec4) ImageGather 2134 2135 2097 Bias 2136 2138: 7(f16vec4) Load 2094(texel) 2139: 7(f16vec4) FAdd 2138 2137 Store 2094(texel) 2139 2140: 357 Load 359(s2DRect) 2141: 53(fvec2) Load 148(c2) 2142: 7(f16vec4) ImageGather 2140 2141 2097 2143: 7(f16vec4) Load 2094(texel) 2144: 7(f16vec4) FAdd 2143 2142 Store 2094(texel) 2144 2145: 357 Load 359(s2DRect) 2146:154(f16vec2) Load 156(f16c2) 2147: 7(f16vec4) ImageGather 2145 2146 2097 2148: 7(f16vec4) Load 2094(texel) 2149: 7(f16vec4) FAdd 2148 2147 Store 2094(texel) 2149 2150: 224 Load 226(s2DShadow) 2151: 53(fvec2) Load 148(c2) 2152: 52(float) Load 215(compare) 2153: 7(f16vec4) ImageDrefGather 2150 2151 2152 2154: 7(f16vec4) Load 2094(texel) 2155: 7(f16vec4) FAdd 2154 2153 Store 2094(texel) 2155 2156: 224 Load 226(s2DShadow) 2157:154(f16vec2) Load 156(f16c2) 2158: 52(float) Load 215(compare) 2159: 7(f16vec4) ImageDrefGather 2156 2157 2158 2160: 7(f16vec4) Load 2094(texel) 2161: 7(f16vec4) FAdd 2160 2159 Store 2094(texel) 2161 2162: 337 Load 339(s2DArrayShadow) 2163: 167(fvec3) Load 169(c3) 2164: 52(float) Load 215(compare) 2165: 7(f16vec4) ImageDrefGather 2162 2163 2164 2166: 7(f16vec4) Load 2094(texel) 2167: 7(f16vec4) FAdd 2166 2165 Store 2094(texel) 2167 2168: 337 Load 339(s2DArrayShadow) 2169:175(f16vec3) Load 177(f16c3) 2170: 52(float) Load 215(compare) 2171: 7(f16vec4) ImageDrefGather 2168 2169 2170 2172: 7(f16vec4) Load 2094(texel) 2173: 7(f16vec4) FAdd 2172 2171 Store 2094(texel) 2173 2174: 245 Load 247(sCubeShadow) 2175: 167(fvec3) Load 169(c3) 2176: 52(float) Load 215(compare) 2177: 7(f16vec4) ImageDrefGather 2174 2175 2176 2178: 7(f16vec4) Load 2094(texel) 2179: 7(f16vec4) FAdd 2178 2177 Store 2094(texel) 2179 2180: 245 Load 247(sCubeShadow) 2181:175(f16vec3) Load 177(f16c3) 2182: 52(float) Load 215(compare) 2183: 7(f16vec4) ImageDrefGather 2180 2181 2182 2184: 7(f16vec4) Load 2094(texel) 2185: 7(f16vec4) FAdd 2184 2183 Store 2094(texel) 2185 2186: 391 Load 393(sCubeArrayShadow) 2187: 249(fvec4) Load 251(c4) 2188: 52(float) Load 215(compare) 2189: 7(f16vec4) ImageDrefGather 2186 2187 2188 2190: 7(f16vec4) Load 2094(texel) 2191: 7(f16vec4) FAdd 2190 2189 Store 2094(texel) 2191 2192: 391 Load 393(sCubeArrayShadow) 2193: 7(f16vec4) Load 309(f16c4) 2194: 52(float) Load 215(compare) 2195: 7(f16vec4) ImageDrefGather 2192 2193 2194 2196: 7(f16vec4) Load 2094(texel) 2197: 7(f16vec4) FAdd 2196 2195 Store 2094(texel) 2197 2198: 371 Load 373(s2DRectShadow) 2199: 53(fvec2) Load 148(c2) 2200: 52(float) Load 215(compare) 2201: 7(f16vec4) ImageDrefGather 2198 2199 2200 2202: 7(f16vec4) Load 2094(texel) 2203: 7(f16vec4) FAdd 2202 2201 Store 2094(texel) 2203 2204: 371 Load 373(s2DRectShadow) 2205:154(f16vec2) Load 156(f16c2) 2206: 52(float) Load 215(compare) 2207: 7(f16vec4) ImageDrefGather 2204 2205 2206 2208: 7(f16vec4) Load 2094(texel) 2209: 7(f16vec4) FAdd 2208 2207 Store 2094(texel) 2209 2210: 7(f16vec4) Load 2094(texel) ReturnValue 2210 FunctionEnd 37(testTextureGatherOffset(): 7(f16vec4) Function None 8 38: Label 2213(texel): 64(ptr) Variable Function Store 2213(texel) 121 2214: 143 Load 145(s2D) 2215: 53(fvec2) Load 148(c2) 2216: 7(f16vec4) ImageGather 2214 2215 2097 ConstOffset 722 2217: 7(f16vec4) Load 2213(texel) 2218: 7(f16vec4) FAdd 2217 2216 Store 2213(texel) 2218 2219: 143 Load 145(s2D) 2220:154(f16vec2) Load 156(f16c2) 2221:6(float16_t) Load 137(f16bias) 2222: 7(f16vec4) ImageGather 2219 2220 2097 Bias ConstOffset 2221 722 2223: 7(f16vec4) Load 2213(texel) 2224: 7(f16vec4) FAdd 2223 2222 Store 2213(texel) 2224 2225: 284 Load 286(s2DArray) 2226: 167(fvec3) Load 169(c3) 2227: 7(f16vec4) ImageGather 2225 2226 2097 ConstOffset 722 2228: 7(f16vec4) Load 2213(texel) 2229: 7(f16vec4) FAdd 2228 2227 Store 2213(texel) 2229 2230: 284 Load 286(s2DArray) 2231:175(f16vec3) Load 177(f16c3) 2232:6(float16_t) Load 137(f16bias) 2233: 7(f16vec4) ImageGather 2230 2231 2097 Bias ConstOffset 2232 722 2234: 7(f16vec4) Load 2213(texel) 2235: 7(f16vec4) FAdd 2234 2233 Store 2213(texel) 2235 2236: 357 Load 359(s2DRect) 2237: 53(fvec2) Load 148(c2) 2238: 7(f16vec4) ImageGather 2236 2237 2097 ConstOffset 722 2239: 7(f16vec4) Load 2213(texel) 2240: 7(f16vec4) FAdd 2239 2238 Store 2213(texel) 2240 2241: 357 Load 359(s2DRect) 2242:154(f16vec2) Load 156(f16c2) 2243: 7(f16vec4) ImageGather 2241 2242 2097 ConstOffset 722 2244: 7(f16vec4) Load 2213(texel) 2245: 7(f16vec4) FAdd 2244 2243 Store 2213(texel) 2245 2246: 224 Load 226(s2DShadow) 2247: 53(fvec2) Load 148(c2) 2248: 52(float) Load 215(compare) 2249: 7(f16vec4) ImageDrefGather 2246 2247 2248 ConstOffset 722 2250: 7(f16vec4) Load 2213(texel) 2251: 7(f16vec4) FAdd 2250 2249 Store 2213(texel) 2251 2252: 224 Load 226(s2DShadow) 2253:154(f16vec2) Load 156(f16c2) 2254: 52(float) Load 215(compare) 2255: 7(f16vec4) ImageDrefGather 2252 2253 2254 ConstOffset 722 2256: 7(f16vec4) Load 2213(texel) 2257: 7(f16vec4) FAdd 2256 2255 Store 2213(texel) 2257 2258: 337 Load 339(s2DArrayShadow) 2259: 167(fvec3) Load 169(c3) 2260: 52(float) Load 215(compare) 2261: 7(f16vec4) ImageDrefGather 2258 2259 2260 ConstOffset 722 2262: 7(f16vec4) Load 2213(texel) 2263: 7(f16vec4) FAdd 2262 2261 Store 2213(texel) 2263 2264: 337 Load 339(s2DArrayShadow) 2265:175(f16vec3) Load 177(f16c3) 2266: 52(float) Load 215(compare) 2267: 7(f16vec4) ImageDrefGather 2264 2265 2266 ConstOffset 722 2268: 7(f16vec4) Load 2213(texel) 2269: 7(f16vec4) FAdd 2268 2267 Store 2213(texel) 2269 2270: 371 Load 373(s2DRectShadow) 2271: 53(fvec2) Load 148(c2) 2272: 52(float) Load 215(compare) 2273: 7(f16vec4) ImageDrefGather 2270 2271 2272 ConstOffset 722 2274: 7(f16vec4) Load 2213(texel) 2275: 7(f16vec4) FAdd 2274 2273 Store 2213(texel) 2275 2276: 371 Load 373(s2DRectShadow) 2277:154(f16vec2) Load 156(f16c2) 2278: 52(float) Load 215(compare) 2279: 7(f16vec4) ImageDrefGather 2276 2277 2278 ConstOffset 722 2280: 7(f16vec4) Load 2213(texel) 2281: 7(f16vec4) FAdd 2280 2279 Store 2213(texel) 2281 2282: 7(f16vec4) Load 2213(texel) ReturnValue 2282 FunctionEnd 39(testTextureGatherOffsets(): 7(f16vec4) Function None 8 40: Label 2285(texel): 64(ptr) Variable Function Store 2285(texel) 121 2286: 143 Load 145(s2D) 2287: 53(fvec2) Load 148(c2) 2291: 7(f16vec4) ImageGather 2286 2287 2097 ConstOffsets 2290 2292: 7(f16vec4) Load 2285(texel) 2293: 7(f16vec4) FAdd 2292 2291 Store 2285(texel) 2293 2294: 143 Load 145(s2D) 2295:154(f16vec2) Load 156(f16c2) 2296:6(float16_t) Load 137(f16bias) 2297: 7(f16vec4) ImageGather 2294 2295 2097 Bias ConstOffsets 2296 2290 2298: 7(f16vec4) Load 2285(texel) 2299: 7(f16vec4) FAdd 2298 2297 Store 2285(texel) 2299 2300: 284 Load 286(s2DArray) 2301: 167(fvec3) Load 169(c3) 2302: 7(f16vec4) ImageGather 2300 2301 2097 ConstOffsets 2290 2303: 7(f16vec4) Load 2285(texel) 2304: 7(f16vec4) FAdd 2303 2302 Store 2285(texel) 2304 2305: 284 Load 286(s2DArray) 2306:175(f16vec3) Load 177(f16c3) 2307:6(float16_t) Load 137(f16bias) 2308: 7(f16vec4) ImageGather 2305 2306 2097 Bias ConstOffsets 2307 2290 2309: 7(f16vec4) Load 2285(texel) 2310: 7(f16vec4) FAdd 2309 2308 Store 2285(texel) 2310 2311: 357 Load 359(s2DRect) 2312: 53(fvec2) Load 148(c2) 2313: 7(f16vec4) ImageGather 2311 2312 2097 ConstOffsets 2290 2314: 7(f16vec4) Load 2285(texel) 2315: 7(f16vec4) FAdd 2314 2313 Store 2285(texel) 2315 2316: 357 Load 359(s2DRect) 2317:154(f16vec2) Load 156(f16c2) 2318: 7(f16vec4) ImageGather 2316 2317 2097 ConstOffsets 2290 2319: 7(f16vec4) Load 2285(texel) 2320: 7(f16vec4) FAdd 2319 2318 Store 2285(texel) 2320 2321: 224 Load 226(s2DShadow) 2322: 53(fvec2) Load 148(c2) 2323: 52(float) Load 215(compare) 2324: 7(f16vec4) ImageDrefGather 2321 2322 2323 ConstOffsets 2290 2325: 7(f16vec4) Load 2285(texel) 2326: 7(f16vec4) FAdd 2325 2324 Store 2285(texel) 2326 2327: 224 Load 226(s2DShadow) 2328:154(f16vec2) Load 156(f16c2) 2329: 52(float) Load 215(compare) 2330: 7(f16vec4) ImageDrefGather 2327 2328 2329 ConstOffsets 2290 2331: 7(f16vec4) Load 2285(texel) 2332: 7(f16vec4) FAdd 2331 2330 Store 2285(texel) 2332 2333: 337 Load 339(s2DArrayShadow) 2334: 167(fvec3) Load 169(c3) 2335: 52(float) Load 215(compare) 2336: 7(f16vec4) ImageDrefGather 2333 2334 2335 ConstOffsets 2290 2337: 7(f16vec4) Load 2285(texel) 2338: 7(f16vec4) FAdd 2337 2336 Store 2285(texel) 2338 2339: 337 Load 339(s2DArrayShadow) 2340:175(f16vec3) Load 177(f16c3) 2341: 52(float) Load 215(compare) 2342: 7(f16vec4) ImageDrefGather 2339 2340 2341 ConstOffsets 2290 2343: 7(f16vec4) Load 2285(texel) 2344: 7(f16vec4) FAdd 2343 2342 Store 2285(texel) 2344 2345: 371 Load 373(s2DRectShadow) 2346: 53(fvec2) Load 148(c2) 2347: 52(float) Load 215(compare) 2348: 7(f16vec4) ImageDrefGather 2345 2346 2347 ConstOffsets 2290 2349: 7(f16vec4) Load 2285(texel) 2350: 7(f16vec4) FAdd 2349 2348 Store 2285(texel) 2350 2351: 371 Load 373(s2DRectShadow) 2352:154(f16vec2) Load 156(f16c2) 2353: 52(float) Load 215(compare) 2354: 7(f16vec4) ImageDrefGather 2351 2352 2353 ConstOffsets 2290 2355: 7(f16vec4) Load 2285(texel) 2356: 7(f16vec4) FAdd 2355 2354 Store 2285(texel) 2356 2357: 7(f16vec4) Load 2285(texel) ReturnValue 2357 FunctionEnd 41(testTextureGatherLod(): 7(f16vec4) Function None 8 42: Label 2360(texel): 64(ptr) Variable Function Store 2360(texel) 121 2361: 143 Load 145(s2D) 2362: 53(fvec2) Load 148(c2) 2363: 52(float) Load 565(lod) 2364: 7(f16vec4) ImageGather 2361 2362 2097 Lod 2363 2365: 7(f16vec4) Load 2360(texel) 2366: 7(f16vec4) FAdd 2365 2364 Store 2360(texel) 2366 2367: 143 Load 145(s2D) 2368:154(f16vec2) Load 156(f16c2) 2369:6(float16_t) Load 572(f16lod) 2370: 7(f16vec4) ImageGather 2367 2368 2097 Lod 2369 2371: 7(f16vec4) Load 2360(texel) 2372: 7(f16vec4) FAdd 2371 2370 Store 2360(texel) 2372 2373: 284 Load 286(s2DArray) 2374: 167(fvec3) Load 169(c3) 2375: 52(float) Load 565(lod) 2376: 7(f16vec4) ImageGather 2373 2374 2097 Lod 2375 2377: 7(f16vec4) Load 2360(texel) 2378: 7(f16vec4) FAdd 2377 2376 Store 2360(texel) 2378 2379: 284 Load 286(s2DArray) 2380:175(f16vec3) Load 177(f16c3) 2381:6(float16_t) Load 572(f16lod) 2382: 7(f16vec4) ImageGather 2379 2380 2097 Lod 2381 2383: 7(f16vec4) Load 2360(texel) 2384: 7(f16vec4) FAdd 2383 2382 Store 2360(texel) 2384 2385: 184 Load 186(sCube) 2386: 167(fvec3) Load 169(c3) 2387: 52(float) Load 565(lod) 2388: 7(f16vec4) ImageGather 2385 2386 2097 Lod 2387 2389: 7(f16vec4) Load 2360(texel) 2390: 7(f16vec4) FAdd 2389 2388 Store 2360(texel) 2390 2391: 184 Load 186(sCube) 2392:175(f16vec3) Load 177(f16c3) 2393:6(float16_t) Load 572(f16lod) 2394: 7(f16vec4) ImageGather 2391 2392 2097 Lod 2393 2395: 7(f16vec4) Load 2360(texel) 2396: 7(f16vec4) FAdd 2395 2394 Store 2360(texel) 2396 2397: 299 Load 301(sCubeArray) 2398: 249(fvec4) Load 251(c4) 2399: 52(float) Load 565(lod) 2400: 7(f16vec4) ImageGather 2397 2398 2097 Lod 2399 2401: 7(f16vec4) Load 2360(texel) 2402: 7(f16vec4) FAdd 2401 2400 Store 2360(texel) 2402 2403: 299 Load 301(sCubeArray) 2404: 7(f16vec4) Load 309(f16c4) 2405:6(float16_t) Load 572(f16lod) 2406: 7(f16vec4) ImageGather 2403 2404 2097 Lod 2405 2407: 7(f16vec4) Load 2360(texel) 2408: 7(f16vec4) FAdd 2407 2406 Store 2360(texel) 2408 2409: 7(f16vec4) Load 2360(texel) ReturnValue 2409 FunctionEnd 43(testTextureGatherLodOffset(): 7(f16vec4) Function None 8 44: Label 2412(texel): 64(ptr) Variable Function Store 2412(texel) 121 2413: 143 Load 145(s2D) 2414: 53(fvec2) Load 148(c2) 2415: 52(float) Load 565(lod) 2416: 7(f16vec4) ImageGather 2413 2414 2097 Lod ConstOffset 2415 722 2417: 7(f16vec4) Load 2412(texel) 2418: 7(f16vec4) FAdd 2417 2416 Store 2412(texel) 2418 2419: 143 Load 145(s2D) 2420:154(f16vec2) Load 156(f16c2) 2421:6(float16_t) Load 572(f16lod) 2422: 7(f16vec4) ImageGather 2419 2420 2097 Lod ConstOffset 2421 722 2423: 7(f16vec4) Load 2412(texel) 2424: 7(f16vec4) FAdd 2423 2422 Store 2412(texel) 2424 2425: 284 Load 286(s2DArray) 2426: 167(fvec3) Load 169(c3) 2427: 52(float) Load 565(lod) 2428: 7(f16vec4) ImageGather 2425 2426 2097 Lod ConstOffset 2427 722 2429: 7(f16vec4) Load 2412(texel) 2430: 7(f16vec4) FAdd 2429 2428 Store 2412(texel) 2430 2431: 284 Load 286(s2DArray) 2432:175(f16vec3) Load 177(f16c3) 2433:6(float16_t) Load 572(f16lod) 2434: 7(f16vec4) ImageGather 2431 2432 2097 Lod ConstOffset 2433 722 2435: 7(f16vec4) Load 2412(texel) 2436: 7(f16vec4) FAdd 2435 2434 Store 2412(texel) 2436 2437: 7(f16vec4) Load 2412(texel) ReturnValue 2437 FunctionEnd 45(testTextureGatherLodOffsets(): 7(f16vec4) Function None 8 46: Label 2440(texel): 64(ptr) Variable Function Store 2440(texel) 121 2441: 143 Load 145(s2D) 2442: 53(fvec2) Load 148(c2) 2443: 52(float) Load 565(lod) 2444: 7(f16vec4) ImageGather 2441 2442 2097 Lod ConstOffsets 2443 2290 2445: 7(f16vec4) Load 2440(texel) 2446: 7(f16vec4) FAdd 2445 2444 Store 2440(texel) 2446 2447: 143 Load 145(s2D) 2448:154(f16vec2) Load 156(f16c2) 2449:6(float16_t) Load 572(f16lod) 2450: 7(f16vec4) ImageGather 2447 2448 2097 Lod ConstOffsets 2449 2290 2451: 7(f16vec4) Load 2440(texel) 2452: 7(f16vec4) FAdd 2451 2450 Store 2440(texel) 2452 2453: 284 Load 286(s2DArray) 2454: 167(fvec3) Load 169(c3) 2455: 52(float) Load 565(lod) 2456: 7(f16vec4) ImageGather 2453 2454 2097 Lod ConstOffsets 2455 2290 2457: 7(f16vec4) Load 2440(texel) 2458: 7(f16vec4) FAdd 2457 2456 Store 2440(texel) 2458 2459: 284 Load 286(s2DArray) 2460:175(f16vec3) Load 177(f16c3) 2461:6(float16_t) Load 572(f16lod) 2462: 7(f16vec4) ImageGather 2459 2460 2097 Lod ConstOffsets 2461 2290 2463: 7(f16vec4) Load 2440(texel) 2464: 7(f16vec4) FAdd 2463 2462 Store 2440(texel) 2464 2465: 7(f16vec4) Load 2440(texel) ReturnValue 2465 FunctionEnd 50(testTextureSize(): 48(ivec4) Function None 49 51: Label 2469(size): 2468(ptr) Variable Function Store 2469(size) 2470 2471: 123 Load 125(s1D) 2472: 52(float) Load 565(lod) 2473: 47(int) ConvertFToS 2472 2474: 122 Image 2471 2475: 47(int) ImageQuerySizeLod 2474 2473 2477: 2476(ptr) AccessChain 2469(size) 207 2478: 47(int) Load 2477 2479: 47(int) IAdd 2478 2475 2480: 2476(ptr) AccessChain 2469(size) 207 Store 2480 2479 2481: 143 Load 145(s2D) 2482: 52(float) Load 565(lod) 2483: 47(int) ConvertFToS 2482 2484: 142 Image 2481 2485: 721(ivec2) ImageQuerySizeLod 2484 2483 2486: 48(ivec4) Load 2469(size) 2487: 721(ivec2) VectorShuffle 2486 2486 0 1 2488: 721(ivec2) IAdd 2487 2485 2489: 2476(ptr) AccessChain 2469(size) 207 2490: 47(int) CompositeExtract 2488 0 Store 2489 2490 2492: 2476(ptr) AccessChain 2469(size) 2491 2493: 47(int) CompositeExtract 2488 1 Store 2492 2493 2494: 163 Load 165(s3D) 2495: 52(float) Load 565(lod) 2496: 47(int) ConvertFToS 2495 2497: 162 Image 2494 2498: 734(ivec3) ImageQuerySizeLod 2497 2496 2499: 48(ivec4) Load 2469(size) 2500: 734(ivec3) VectorShuffle 2499 2499 0 1 2 2501: 734(ivec3) IAdd 2500 2498 2502: 2476(ptr) AccessChain 2469(size) 207 2503: 47(int) CompositeExtract 2501 0 Store 2502 2503 2504: 2476(ptr) AccessChain 2469(size) 2491 2505: 47(int) CompositeExtract 2501 1 Store 2504 2505 2507: 2476(ptr) AccessChain 2469(size) 2506 2508: 47(int) CompositeExtract 2501 2 Store 2507 2508 2509: 184 Load 186(sCube) 2510: 52(float) Load 565(lod) 2511: 47(int) ConvertFToS 2510 2512: 183 Image 2509 2513: 721(ivec2) ImageQuerySizeLod 2512 2511 2514: 48(ivec4) Load 2469(size) 2515: 721(ivec2) VectorShuffle 2514 2514 0 1 2516: 721(ivec2) IAdd 2515 2513 2517: 2476(ptr) AccessChain 2469(size) 207 2518: 47(int) CompositeExtract 2516 0 Store 2517 2518 2519: 2476(ptr) AccessChain 2469(size) 2491 2520: 47(int) CompositeExtract 2516 1 Store 2519 2520 2521: 199 Load 201(s1DShadow) 2522: 52(float) Load 565(lod) 2523: 47(int) ConvertFToS 2522 2524: 198 Image 2521 2525: 47(int) ImageQuerySizeLod 2524 2523 2526: 2476(ptr) AccessChain 2469(size) 207 2527: 47(int) Load 2526 2528: 47(int) IAdd 2527 2525 2529: 2476(ptr) AccessChain 2469(size) 207 Store 2529 2528 2530: 224 Load 226(s2DShadow) 2531: 52(float) Load 565(lod) 2532: 47(int) ConvertFToS 2531 2533: 223 Image 2530 2534: 721(ivec2) ImageQuerySizeLod 2533 2532 2535: 48(ivec4) Load 2469(size) 2536: 721(ivec2) VectorShuffle 2535 2535 0 1 2537: 721(ivec2) IAdd 2536 2534 2538: 2476(ptr) AccessChain 2469(size) 207 2539: 47(int) CompositeExtract 2537 0 Store 2538 2539 2540: 2476(ptr) AccessChain 2469(size) 2491 2541: 47(int) CompositeExtract 2537 1 Store 2540 2541 2542: 245 Load 247(sCubeShadow) 2543: 52(float) Load 565(lod) 2544: 47(int) ConvertFToS 2543 2545: 244 Image 2542 2546: 721(ivec2) ImageQuerySizeLod 2545 2544 2547: 48(ivec4) Load 2469(size) 2548: 721(ivec2) VectorShuffle 2547 2547 0 1 2549: 721(ivec2) IAdd 2548 2546 2550: 2476(ptr) AccessChain 2469(size) 207 2551: 47(int) CompositeExtract 2549 0 Store 2550 2551 2552: 2476(ptr) AccessChain 2469(size) 2491 2553: 47(int) CompositeExtract 2549 1 Store 2552 2553 2554: 299 Load 301(sCubeArray) 2555: 52(float) Load 565(lod) 2556: 47(int) ConvertFToS 2555 2557: 298 Image 2554 2558: 734(ivec3) ImageQuerySizeLod 2557 2556 2559: 48(ivec4) Load 2469(size) 2560: 734(ivec3) VectorShuffle 2559 2559 0 1 2 2561: 734(ivec3) IAdd 2560 2558 2562: 2476(ptr) AccessChain 2469(size) 207 2563: 47(int) CompositeExtract 2561 0 Store 2562 2563 2564: 2476(ptr) AccessChain 2469(size) 2491 2565: 47(int) CompositeExtract 2561 1 Store 2564 2565 2566: 2476(ptr) AccessChain 2469(size) 2506 2567: 47(int) CompositeExtract 2561 2 Store 2566 2567 2568: 391 Load 393(sCubeArrayShadow) 2569: 52(float) Load 565(lod) 2570: 47(int) ConvertFToS 2569 2571: 390 Image 2568 2572: 734(ivec3) ImageQuerySizeLod 2571 2570 2573: 48(ivec4) Load 2469(size) 2574: 734(ivec3) VectorShuffle 2573 2573 0 1 2 2575: 734(ivec3) IAdd 2574 2572 2576: 2476(ptr) AccessChain 2469(size) 207 2577: 47(int) CompositeExtract 2575 0 Store 2576 2577 2578: 2476(ptr) AccessChain 2469(size) 2491 2579: 47(int) CompositeExtract 2575 1 Store 2578 2579 2580: 2476(ptr) AccessChain 2469(size) 2506 2581: 47(int) CompositeExtract 2575 2 Store 2580 2581 2582: 357 Load 359(s2DRect) 2583: 356 Image 2582 2584: 721(ivec2) ImageQuerySize 2583 2585: 48(ivec4) Load 2469(size) 2586: 721(ivec2) VectorShuffle 2585 2585 0 1 2587: 721(ivec2) IAdd 2586 2584 2588: 2476(ptr) AccessChain 2469(size) 207 2589: 47(int) CompositeExtract 2587 0 Store 2588 2589 2590: 2476(ptr) AccessChain 2469(size) 2491 2591: 47(int) CompositeExtract 2587 1 Store 2590 2591 2592: 371 Load 373(s2DRectShadow) 2593: 370 Image 2592 2594: 721(ivec2) ImageQuerySize 2593 2595: 48(ivec4) Load 2469(size) 2596: 721(ivec2) VectorShuffle 2595 2595 0 1 2597: 721(ivec2) IAdd 2596 2594 2598: 2476(ptr) AccessChain 2469(size) 207 2599: 47(int) CompositeExtract 2597 0 Store 2598 2599 2600: 2476(ptr) AccessChain 2469(size) 2491 2601: 47(int) CompositeExtract 2597 1 Store 2600 2601 2602: 269 Load 271(s1DArray) 2603: 52(float) Load 565(lod) 2604: 47(int) ConvertFToS 2603 2605: 268 Image 2602 2606: 721(ivec2) ImageQuerySizeLod 2605 2604 2607: 48(ivec4) Load 2469(size) 2608: 721(ivec2) VectorShuffle 2607 2607 0 1 2609: 721(ivec2) IAdd 2608 2606 2610: 2476(ptr) AccessChain 2469(size) 207 2611: 47(int) CompositeExtract 2609 0 Store 2610 2611 2612: 2476(ptr) AccessChain 2469(size) 2491 2613: 47(int) CompositeExtract 2609 1 Store 2612 2613 2614: 284 Load 286(s2DArray) 2615: 52(float) Load 565(lod) 2616: 47(int) ConvertFToS 2615 2617: 283 Image 2614 2618: 734(ivec3) ImageQuerySizeLod 2617 2616 2619: 48(ivec4) Load 2469(size) 2620: 734(ivec3) VectorShuffle 2619 2619 0 1 2 2621: 734(ivec3) IAdd 2620 2618 2622: 2476(ptr) AccessChain 2469(size) 207 2623: 47(int) CompositeExtract 2621 0 Store 2622 2623 2624: 2476(ptr) AccessChain 2469(size) 2491 2625: 47(int) CompositeExtract 2621 1 Store 2624 2625 2626: 2476(ptr) AccessChain 2469(size) 2506 2627: 47(int) CompositeExtract 2621 2 Store 2626 2627 2628: 316 Load 318(s1DArrayShadow) 2629: 52(float) Load 565(lod) 2630: 47(int) ConvertFToS 2629 2631: 315 Image 2628 2632: 721(ivec2) ImageQuerySizeLod 2631 2630 2633: 48(ivec4) Load 2469(size) 2634: 721(ivec2) VectorShuffle 2633 2633 0 1 2635: 721(ivec2) IAdd 2634 2632 2636: 2476(ptr) AccessChain 2469(size) 207 2637: 47(int) CompositeExtract 2635 0 Store 2636 2637 2638: 2476(ptr) AccessChain 2469(size) 2491 2639: 47(int) CompositeExtract 2635 1 Store 2638 2639 2640: 337 Load 339(s2DArrayShadow) 2641: 52(float) Load 565(lod) 2642: 47(int) ConvertFToS 2641 2643: 336 Image 2640 2644: 734(ivec3) ImageQuerySizeLod 2643 2642 2645: 48(ivec4) Load 2469(size) 2646: 734(ivec3) VectorShuffle 2645 2645 0 1 2 2647: 734(ivec3) IAdd 2646 2644 2648: 2476(ptr) AccessChain 2469(size) 207 2649: 47(int) CompositeExtract 2647 0 Store 2648 2649 2650: 2476(ptr) AccessChain 2469(size) 2491 2651: 47(int) CompositeExtract 2647 1 Store 2650 2651 2652: 2476(ptr) AccessChain 2469(size) 2506 2653: 47(int) CompositeExtract 2647 2 Store 2652 2653 2654: 1298 Load 1300(sBuffer) 2655: 1297 Image 2654 2656: 47(int) ImageQuerySize 2655 2657: 2476(ptr) AccessChain 2469(size) 207 2658: 47(int) Load 2657 2659: 47(int) IAdd 2658 2656 2660: 2476(ptr) AccessChain 2469(size) 207 Store 2660 2659 2661: 1309 Load 1311(s2DMS) 2662: 1308 Image 2661 2663: 721(ivec2) ImageQuerySize 2662 2664: 48(ivec4) Load 2469(size) 2665: 721(ivec2) VectorShuffle 2664 2664 0 1 2666: 721(ivec2) IAdd 2665 2663 2667: 2476(ptr) AccessChain 2469(size) 207 2668: 47(int) CompositeExtract 2666 0 Store 2667 2668 2669: 2476(ptr) AccessChain 2469(size) 2491 2670: 47(int) CompositeExtract 2666 1 Store 2669 2670 2671: 1320 Load 1322(s2DMSArray) 2672: 1319 Image 2671 2673: 734(ivec3) ImageQuerySize 2672 2674: 48(ivec4) Load 2469(size) 2675: 734(ivec3) VectorShuffle 2674 2674 0 1 2 2676: 734(ivec3) IAdd 2675 2673 2677: 2476(ptr) AccessChain 2469(size) 207 2678: 47(int) CompositeExtract 2676 0 Store 2677 2678 2679: 2476(ptr) AccessChain 2469(size) 2491 2680: 47(int) CompositeExtract 2676 1 Store 2679 2680 2681: 2476(ptr) AccessChain 2469(size) 2506 2682: 47(int) CompositeExtract 2676 2 Store 2681 2682 2683: 48(ivec4) Load 2469(size) ReturnValue 2683 FunctionEnd 55(testTextureQueryLod(): 53(fvec2) Function None 54 56: Label 2687(lod): 2686(ptr) Variable Function Store 2687(lod) 2689 2690: 123 Load 125(s1D) 2691: 52(float) Load 128(c1) 2692: 53(fvec2) ImageQueryLod 2690 2691 2693: 53(fvec2) Load 2687(lod) 2694: 53(fvec2) FAdd 2693 2692 Store 2687(lod) 2694 2695: 123 Load 125(s1D) 2696:6(float16_t) Load 135(f16c1) 2697:154(f16vec2) ImageQueryLod 2695 2696 2698: 53(fvec2) Load 2687(lod) 2699: 53(fvec2) FAdd 2698 2697 Store 2687(lod) 2699 2700: 143 Load 145(s2D) 2701: 53(fvec2) Load 148(c2) 2702: 53(fvec2) ImageQueryLod 2700 2701 2703: 53(fvec2) Load 2687(lod) 2704: 53(fvec2) FAdd 2703 2702 Store 2687(lod) 2704 2705: 143 Load 145(s2D) 2706:154(f16vec2) Load 156(f16c2) 2707:154(f16vec2) ImageQueryLod 2705 2706 2708: 53(fvec2) Load 2687(lod) 2709: 53(fvec2) FAdd 2708 2707 Store 2687(lod) 2709 2710: 163 Load 165(s3D) 2711: 167(fvec3) Load 169(c3) 2712: 53(fvec2) ImageQueryLod 2710 2711 2713: 53(fvec2) Load 2687(lod) 2714: 53(fvec2) FAdd 2713 2712 Store 2687(lod) 2714 2715: 163 Load 165(s3D) 2716:175(f16vec3) Load 177(f16c3) 2717:154(f16vec2) ImageQueryLod 2715 2716 2718: 53(fvec2) Load 2687(lod) 2719: 53(fvec2) FAdd 2718 2717 Store 2687(lod) 2719 2720: 184 Load 186(sCube) 2721: 167(fvec3) Load 169(c3) 2722: 53(fvec2) ImageQueryLod 2720 2721 2723: 53(fvec2) Load 2687(lod) 2724: 53(fvec2) FAdd 2723 2722 Store 2687(lod) 2724 2725: 184 Load 186(sCube) 2726:175(f16vec3) Load 177(f16c3) 2727:154(f16vec2) ImageQueryLod 2725 2726 2728: 53(fvec2) Load 2687(lod) 2729: 53(fvec2) FAdd 2728 2727 Store 2687(lod) 2729 2730: 269 Load 271(s1DArray) 2731: 52(float) Load 128(c1) 2732: 53(fvec2) ImageQueryLod 2730 2731 2733: 53(fvec2) Load 2687(lod) 2734: 53(fvec2) FAdd 2733 2732 Store 2687(lod) 2734 2735: 269 Load 271(s1DArray) 2736:6(float16_t) Load 135(f16c1) 2737:154(f16vec2) ImageQueryLod 2735 2736 2738: 53(fvec2) Load 2687(lod) 2739: 53(fvec2) FAdd 2738 2737 Store 2687(lod) 2739 2740: 284 Load 286(s2DArray) 2741: 53(fvec2) Load 148(c2) 2742: 53(fvec2) ImageQueryLod 2740 2741 2743: 53(fvec2) Load 2687(lod) 2744: 53(fvec2) FAdd 2743 2742 Store 2687(lod) 2744 2745: 284 Load 286(s2DArray) 2746:154(f16vec2) Load 156(f16c2) 2747:154(f16vec2) ImageQueryLod 2745 2746 2748: 53(fvec2) Load 2687(lod) 2749: 53(fvec2) FAdd 2748 2747 Store 2687(lod) 2749 2750: 299 Load 301(sCubeArray) 2751: 167(fvec3) Load 169(c3) 2752: 53(fvec2) ImageQueryLod 2750 2751 2753: 53(fvec2) Load 2687(lod) 2754: 53(fvec2) FAdd 2753 2752 Store 2687(lod) 2754 2755: 299 Load 301(sCubeArray) 2756:175(f16vec3) Load 177(f16c3) 2757:154(f16vec2) ImageQueryLod 2755 2756 2758: 53(fvec2) Load 2687(lod) 2759: 53(fvec2) FAdd 2758 2757 Store 2687(lod) 2759 2760: 199 Load 201(s1DShadow) 2761: 52(float) Load 128(c1) 2762: 53(fvec2) ImageQueryLod 2760 2761 2763: 53(fvec2) Load 2687(lod) 2764: 53(fvec2) FAdd 2763 2762 Store 2687(lod) 2764 2765: 199 Load 201(s1DShadow) 2766:6(float16_t) Load 135(f16c1) 2767:154(f16vec2) ImageQueryLod 2765 2766 2768: 53(fvec2) Load 2687(lod) 2769: 53(fvec2) FAdd 2768 2767 Store 2687(lod) 2769 2770: 224 Load 226(s2DShadow) 2771: 53(fvec2) Load 148(c2) 2772: 53(fvec2) ImageQueryLod 2770 2771 2773: 53(fvec2) Load 2687(lod) 2774: 53(fvec2) FAdd 2773 2772 Store 2687(lod) 2774 2775: 224 Load 226(s2DShadow) 2776:154(f16vec2) Load 156(f16c2) 2777:154(f16vec2) ImageQueryLod 2775 2776 2778: 53(fvec2) Load 2687(lod) 2779: 53(fvec2) FAdd 2778 2777 Store 2687(lod) 2779 2780: 391 Load 393(sCubeArrayShadow) 2781: 167(fvec3) Load 169(c3) 2782: 53(fvec2) ImageQueryLod 2780 2781 2783: 53(fvec2) Load 2687(lod) 2784: 53(fvec2) FAdd 2783 2782 Store 2687(lod) 2784 2785: 391 Load 393(sCubeArrayShadow) 2786:175(f16vec3) Load 177(f16c3) 2787:154(f16vec2) ImageQueryLod 2785 2786 2788: 53(fvec2) Load 2687(lod) 2789: 53(fvec2) FAdd 2788 2787 Store 2687(lod) 2789 2790: 316 Load 318(s1DArrayShadow) 2791: 52(float) Load 128(c1) 2792: 53(fvec2) ImageQueryLod 2790 2791 2793: 53(fvec2) Load 2687(lod) 2794: 53(fvec2) FAdd 2793 2792 Store 2687(lod) 2794 2795: 316 Load 318(s1DArrayShadow) 2796:6(float16_t) Load 135(f16c1) 2797:154(f16vec2) ImageQueryLod 2795 2796 2798: 53(fvec2) Load 2687(lod) 2799: 53(fvec2) FAdd 2798 2797 Store 2687(lod) 2799 2800: 337 Load 339(s2DArrayShadow) 2801: 53(fvec2) Load 148(c2) 2802: 53(fvec2) ImageQueryLod 2800 2801 2803: 53(fvec2) Load 2687(lod) 2804: 53(fvec2) FAdd 2803 2802 Store 2687(lod) 2804 2805: 337 Load 339(s2DArrayShadow) 2806:154(f16vec2) Load 156(f16c2) 2807:154(f16vec2) ImageQueryLod 2805 2806 2808: 53(fvec2) Load 2687(lod) 2809: 53(fvec2) FAdd 2808 2807 Store 2687(lod) 2809 2810: 391 Load 393(sCubeArrayShadow) 2811: 167(fvec3) Load 169(c3) 2812: 53(fvec2) ImageQueryLod 2810 2811 2813: 53(fvec2) Load 2687(lod) 2814: 53(fvec2) FAdd 2813 2812 Store 2687(lod) 2814 2815: 391 Load 393(sCubeArrayShadow) 2816:175(f16vec3) Load 177(f16c3) 2817:154(f16vec2) ImageQueryLod 2815 2816 2818: 53(fvec2) Load 2687(lod) 2819: 53(fvec2) FAdd 2818 2817 Store 2687(lod) 2819 2820: 53(fvec2) Load 2687(lod) ReturnValue 2820 FunctionEnd 58(testTextureQueryLevels(): 47(int) Function None 57 59: Label 2823(levels): 2476(ptr) Variable Function Store 2823(levels) 2097 2824: 123 Load 125(s1D) 2825: 122 Image 2824 2826: 47(int) ImageQueryLevels 2825 2827: 47(int) Load 2823(levels) 2828: 47(int) IAdd 2827 2826 Store 2823(levels) 2828 2829: 143 Load 145(s2D) 2830: 142 Image 2829 2831: 47(int) ImageQueryLevels 2830 2832: 47(int) Load 2823(levels) 2833: 47(int) IAdd 2832 2831 Store 2823(levels) 2833 2834: 163 Load 165(s3D) 2835: 162 Image 2834 2836: 47(int) ImageQueryLevels 2835 2837: 47(int) Load 2823(levels) 2838: 47(int) IAdd 2837 2836 Store 2823(levels) 2838 2839: 184 Load 186(sCube) 2840: 183 Image 2839 2841: 47(int) ImageQueryLevels 2840 2842: 47(int) Load 2823(levels) 2843: 47(int) IAdd 2842 2841 Store 2823(levels) 2843 2844: 199 Load 201(s1DShadow) 2845: 198 Image 2844 2846: 47(int) ImageQueryLevels 2845 2847: 47(int) Load 2823(levels) 2848: 47(int) IAdd 2847 2846 Store 2823(levels) 2848 2849: 224 Load 226(s2DShadow) 2850: 223 Image 2849 2851: 47(int) ImageQueryLevels 2850 2852: 47(int) Load 2823(levels) 2853: 47(int) IAdd 2852 2851 Store 2823(levels) 2853 2854: 245 Load 247(sCubeShadow) 2855: 244 Image 2854 2856: 47(int) ImageQueryLevels 2855 2857: 47(int) Load 2823(levels) 2858: 47(int) IAdd 2857 2856 Store 2823(levels) 2858 2859: 299 Load 301(sCubeArray) 2860: 298 Image 2859 2861: 47(int) ImageQueryLevels 2860 2862: 47(int) Load 2823(levels) 2863: 47(int) IAdd 2862 2861 Store 2823(levels) 2863 2864: 391 Load 393(sCubeArrayShadow) 2865: 390 Image 2864 2866: 47(int) ImageQueryLevels 2865 2867: 47(int) Load 2823(levels) 2868: 47(int) IAdd 2867 2866 Store 2823(levels) 2868 2869: 269 Load 271(s1DArray) 2870: 268 Image 2869 2871: 47(int) ImageQueryLevels 2870 2872: 47(int) Load 2823(levels) 2873: 47(int) IAdd 2872 2871 Store 2823(levels) 2873 2874: 284 Load 286(s2DArray) 2875: 283 Image 2874 2876: 47(int) ImageQueryLevels 2875 2877: 47(int) Load 2823(levels) 2878: 47(int) IAdd 2877 2876 Store 2823(levels) 2878 2879: 316 Load 318(s1DArrayShadow) 2880: 315 Image 2879 2881: 47(int) ImageQueryLevels 2880 2882: 47(int) Load 2823(levels) 2883: 47(int) IAdd 2882 2881 Store 2823(levels) 2883 2884: 337 Load 339(s2DArrayShadow) 2885: 336 Image 2884 2886: 47(int) ImageQueryLevels 2885 2887: 47(int) Load 2823(levels) 2888: 47(int) IAdd 2887 2886 Store 2823(levels) 2888 2889: 47(int) Load 2823(levels) ReturnValue 2889 FunctionEnd 60(testTextureSamples(): 47(int) Function None 57 61: Label 2892(samples): 2476(ptr) Variable Function Store 2892(samples) 2097 2893: 1309 Load 1311(s2DMS) 2894: 1308 Image 2893 2895: 47(int) ImageQuerySamples 2894 2896: 47(int) Load 2892(samples) 2897: 47(int) IAdd 2896 2895 Store 2892(samples) 2897 2898: 1320 Load 1322(s2DMSArray) 2899: 1319 Image 2898 2900: 47(int) ImageQuerySamples 2899 2901: 47(int) Load 2892(samples) 2902: 47(int) IAdd 2901 2900 Store 2892(samples) 2902 2903: 47(int) Load 2892(samples) ReturnValue 2903 FunctionEnd 62(testImageLoad(): 7(f16vec4) Function None 8 63: Label 2906(texel): 64(ptr) Variable Function Store 2906(texel) 121 2910: 2907 Load 2909(i1D) 2911: 52(float) Load 128(c1) 2912: 47(int) ConvertFToS 2911 2913: 7(f16vec4) ImageRead 2910 2912 2914: 7(f16vec4) Load 2906(texel) 2915: 7(f16vec4) FAdd 2914 2913 Store 2906(texel) 2915 2919: 2916 Load 2918(i2D) 2920: 53(fvec2) Load 148(c2) 2921: 721(ivec2) ConvertFToS 2920 2922: 7(f16vec4) ImageRead 2919 2921 2923: 7(f16vec4) Load 2906(texel) 2924: 7(f16vec4) FAdd 2923 2922 Store 2906(texel) 2924 2928: 2925 Load 2927(i3D) 2929: 167(fvec3) Load 169(c3) 2930: 734(ivec3) ConvertFToS 2929 2931: 7(f16vec4) ImageRead 2928 2930 2932: 7(f16vec4) Load 2906(texel) 2933: 7(f16vec4) FAdd 2932 2931 Store 2906(texel) 2933 2937: 2934 Load 2936(i2DRect) 2938: 53(fvec2) Load 148(c2) 2939: 721(ivec2) ConvertFToS 2938 2940: 7(f16vec4) ImageRead 2937 2939 2941: 7(f16vec4) Load 2906(texel) 2942: 7(f16vec4) FAdd 2941 2940 Store 2906(texel) 2942 2946: 2943 Load 2945(iCube) 2947: 167(fvec3) Load 169(c3) 2948: 734(ivec3) ConvertFToS 2947 2949: 7(f16vec4) ImageRead 2946 2948 2950: 7(f16vec4) Load 2906(texel) 2951: 7(f16vec4) FAdd 2950 2949 Store 2906(texel) 2951 2955: 2952 Load 2954(iBuffer) 2956: 52(float) Load 128(c1) 2957: 47(int) ConvertFToS 2956 2958: 7(f16vec4) ImageRead 2955 2957 2959: 7(f16vec4) Load 2906(texel) 2960: 7(f16vec4) FAdd 2959 2958 Store 2906(texel) 2960 2964: 2961 Load 2963(i1DArray) 2965: 53(fvec2) Load 148(c2) 2966: 721(ivec2) ConvertFToS 2965 2967: 7(f16vec4) ImageRead 2964 2966 2968: 7(f16vec4) Load 2906(texel) 2969: 7(f16vec4) FAdd 2968 2967 Store 2906(texel) 2969 2973: 2970 Load 2972(i2DArray) 2974: 167(fvec3) Load 169(c3) 2975: 734(ivec3) ConvertFToS 2974 2976: 7(f16vec4) ImageRead 2973 2975 2977: 7(f16vec4) Load 2906(texel) 2978: 7(f16vec4) FAdd 2977 2976 Store 2906(texel) 2978 2982: 2979 Load 2981(iCubeArray) 2983: 167(fvec3) Load 169(c3) 2984: 734(ivec3) ConvertFToS 2983 2985: 7(f16vec4) ImageRead 2982 2984 2986: 7(f16vec4) Load 2906(texel) 2987: 7(f16vec4) FAdd 2986 2985 Store 2906(texel) 2987 2991: 2988 Load 2990(i2DMS) 2992: 53(fvec2) Load 148(c2) 2993: 721(ivec2) ConvertFToS 2992 2994: 7(f16vec4) ImageRead 2991 2993 Sample 709 2995: 7(f16vec4) Load 2906(texel) 2996: 7(f16vec4) FAdd 2995 2994 Store 2906(texel) 2996 3000: 2997 Load 2999(i2DMSArray) 3001: 167(fvec3) Load 169(c3) 3002: 734(ivec3) ConvertFToS 3001 3003: 7(f16vec4) ImageRead 3000 3002 Sample 709 3004: 7(f16vec4) Load 2906(texel) 3005: 7(f16vec4) FAdd 3004 3003 Store 2906(texel) 3005 3006: 7(f16vec4) Load 2906(texel) ReturnValue 3006 FunctionEnd 67(testImageStore(vf164;): 2 Function None 65 66(data): 64(ptr) FunctionParameter 68: Label 3009: 2907 Load 2909(i1D) 3010: 52(float) Load 128(c1) 3011: 47(int) ConvertFToS 3010 3012: 7(f16vec4) Load 66(data) ImageWrite 3009 3011 3012 3013: 2916 Load 2918(i2D) 3014: 53(fvec2) Load 148(c2) 3015: 721(ivec2) ConvertFToS 3014 3016: 7(f16vec4) Load 66(data) ImageWrite 3013 3015 3016 3017: 2925 Load 2927(i3D) 3018: 167(fvec3) Load 169(c3) 3019: 734(ivec3) ConvertFToS 3018 3020: 7(f16vec4) Load 66(data) ImageWrite 3017 3019 3020 3021: 2934 Load 2936(i2DRect) 3022: 53(fvec2) Load 148(c2) 3023: 721(ivec2) ConvertFToS 3022 3024: 7(f16vec4) Load 66(data) ImageWrite 3021 3023 3024 3025: 2943 Load 2945(iCube) 3026: 167(fvec3) Load 169(c3) 3027: 734(ivec3) ConvertFToS 3026 3028: 7(f16vec4) Load 66(data) ImageWrite 3025 3027 3028 3029: 2952 Load 2954(iBuffer) 3030: 52(float) Load 128(c1) 3031: 47(int) ConvertFToS 3030 3032: 7(f16vec4) Load 66(data) ImageWrite 3029 3031 3032 3033: 2961 Load 2963(i1DArray) 3034: 53(fvec2) Load 148(c2) 3035: 721(ivec2) ConvertFToS 3034 3036: 7(f16vec4) Load 66(data) ImageWrite 3033 3035 3036 3037: 2970 Load 2972(i2DArray) 3038: 167(fvec3) Load 169(c3) 3039: 734(ivec3) ConvertFToS 3038 3040: 7(f16vec4) Load 66(data) ImageWrite 3037 3039 3040 3041: 2979 Load 2981(iCubeArray) 3042: 167(fvec3) Load 169(c3) 3043: 734(ivec3) ConvertFToS 3042 3044: 7(f16vec4) Load 66(data) ImageWrite 3041 3043 3044 3045: 2988 Load 2990(i2DMS) 3046: 53(fvec2) Load 148(c2) 3047: 721(ivec2) ConvertFToS 3046 3048: 7(f16vec4) Load 66(data) ImageWrite 3045 3047 3048 Sample 709 3049: 2997 Load 2999(i2DMSArray) 3050: 167(fvec3) Load 169(c3) 3051: 734(ivec3) ConvertFToS 3050 3052: 7(f16vec4) Load 66(data) ImageWrite 3049 3051 3052 Sample 709 Return FunctionEnd 69(testSparseTexture(): 7(f16vec4) Function None 8 70: Label 3053(texel): 64(ptr) Variable Function Store 3053(texel) 121 3054: 143 Load 145(s2D) 3055: 53(fvec2) Load 148(c2) 3057:3056(ResType) ImageSparseSampleImplicitLod 3054 3055 3058: 7(f16vec4) CompositeExtract 3057 1 Store 3053(texel) 3058 3059: 47(int) CompositeExtract 3057 0 3060: 143 Load 145(s2D) 3061:154(f16vec2) Load 156(f16c2) 3062:6(float16_t) Load 137(f16bias) 3063:3056(ResType) ImageSparseSampleImplicitLod 3060 3061 Bias 3062 3064: 7(f16vec4) CompositeExtract 3063 1 Store 3053(texel) 3064 3065: 47(int) CompositeExtract 3063 0 3066: 163 Load 165(s3D) 3067: 167(fvec3) Load 169(c3) 3068:3056(ResType) ImageSparseSampleImplicitLod 3066 3067 3069: 7(f16vec4) CompositeExtract 3068 1 Store 3053(texel) 3069 3070: 47(int) CompositeExtract 3068 0 3071: 163 Load 165(s3D) 3072:175(f16vec3) Load 177(f16c3) 3073:6(float16_t) Load 137(f16bias) 3074:3056(ResType) ImageSparseSampleImplicitLod 3071 3072 Bias 3073 3075: 7(f16vec4) CompositeExtract 3074 1 Store 3053(texel) 3075 3076: 47(int) CompositeExtract 3074 0 3077: 184 Load 186(sCube) 3078: 167(fvec3) Load 169(c3) 3079:3056(ResType) ImageSparseSampleImplicitLod 3077 3078 3080: 7(f16vec4) CompositeExtract 3079 1 Store 3053(texel) 3080 3081: 47(int) CompositeExtract 3079 0 3082: 184 Load 186(sCube) 3083:175(f16vec3) Load 177(f16c3) 3084:6(float16_t) Load 137(f16bias) 3085:3056(ResType) ImageSparseSampleImplicitLod 3082 3083 Bias 3084 3086: 7(f16vec4) CompositeExtract 3085 1 Store 3053(texel) 3086 3087: 47(int) CompositeExtract 3085 0 3088: 224 Load 226(s2DShadow) 3089: 167(fvec3) Load 169(c3) 3090: 208(ptr) AccessChain 3053(texel) 207 3091: 52(float) CompositeExtract 3089 2 3093:3092(ResType) ImageSparseSampleDrefImplicitLod 3088 3089 3091 3094:6(float16_t) CompositeExtract 3093 1 Store 3090 3094 3095: 47(int) CompositeExtract 3093 0 3096: 224 Load 226(s2DShadow) 3097:154(f16vec2) Load 156(f16c2) 3098: 52(float) Load 215(compare) 3099: 208(ptr) AccessChain 3053(texel) 207 3100:6(float16_t) Load 137(f16bias) 3101:3092(ResType) ImageSparseSampleDrefImplicitLod 3096 3097 3098 Bias 3100 3102:6(float16_t) CompositeExtract 3101 1 Store 3099 3102 3103: 47(int) CompositeExtract 3101 0 3104: 245 Load 247(sCubeShadow) 3105: 249(fvec4) Load 251(c4) 3106: 208(ptr) AccessChain 3053(texel) 207 3107: 52(float) CompositeExtract 3105 3 3108:3092(ResType) ImageSparseSampleDrefImplicitLod 3104 3105 3107 3109:6(float16_t) CompositeExtract 3108 1 Store 3106 3109 3110: 47(int) CompositeExtract 3108 0 3111: 245 Load 247(sCubeShadow) 3112:175(f16vec3) Load 177(f16c3) 3113: 52(float) Load 215(compare) 3114: 208(ptr) AccessChain 3053(texel) 207 3115:6(float16_t) Load 137(f16bias) 3116:3092(ResType) ImageSparseSampleDrefImplicitLod 3111 3112 3113 Bias 3115 3117:6(float16_t) CompositeExtract 3116 1 Store 3114 3117 3118: 47(int) CompositeExtract 3116 0 3119: 284 Load 286(s2DArray) 3120: 167(fvec3) Load 169(c3) 3121:3056(ResType) ImageSparseSampleImplicitLod 3119 3120 3122: 7(f16vec4) CompositeExtract 3121 1 Store 3053(texel) 3122 3123: 47(int) CompositeExtract 3121 0 3124: 284 Load 286(s2DArray) 3125:175(f16vec3) Load 177(f16c3) 3126:6(float16_t) Load 137(f16bias) 3127:3056(ResType) ImageSparseSampleImplicitLod 3124 3125 Bias 3126 3128: 7(f16vec4) CompositeExtract 3127 1 Store 3053(texel) 3128 3129: 47(int) CompositeExtract 3127 0 3130: 299 Load 301(sCubeArray) 3131: 249(fvec4) Load 251(c4) 3132:3056(ResType) ImageSparseSampleImplicitLod 3130 3131 3133: 7(f16vec4) CompositeExtract 3132 1 Store 3053(texel) 3133 3134: 47(int) CompositeExtract 3132 0 3135: 299 Load 301(sCubeArray) 3136: 7(f16vec4) Load 309(f16c4) 3137:6(float16_t) Load 137(f16bias) 3138:3056(ResType) ImageSparseSampleImplicitLod 3135 3136 Bias 3137 3139: 7(f16vec4) CompositeExtract 3138 1 Store 3053(texel) 3139 3140: 47(int) CompositeExtract 3138 0 3141: 337 Load 339(s2DArrayShadow) 3142: 249(fvec4) Load 251(c4) 3143: 208(ptr) AccessChain 3053(texel) 207 3144: 52(float) CompositeExtract 3142 3 3145:3092(ResType) ImageSparseSampleDrefImplicitLod 3141 3142 3144 3146:6(float16_t) CompositeExtract 3145 1 Store 3143 3146 3147: 47(int) CompositeExtract 3145 0 3148: 337 Load 339(s2DArrayShadow) 3149:175(f16vec3) Load 177(f16c3) 3150: 52(float) Load 215(compare) 3151: 208(ptr) AccessChain 3053(texel) 207 3152:3092(ResType) ImageSparseSampleDrefImplicitLod 3148 3149 3150 3153:6(float16_t) CompositeExtract 3152 1 Store 3151 3153 3154: 47(int) CompositeExtract 3152 0 3155: 357 Load 359(s2DRect) 3156: 53(fvec2) Load 148(c2) 3157:3056(ResType) ImageSparseSampleImplicitLod 3155 3156 3158: 7(f16vec4) CompositeExtract 3157 1 Store 3053(texel) 3158 3159: 47(int) CompositeExtract 3157 0 3160: 357 Load 359(s2DRect) 3161:154(f16vec2) Load 156(f16c2) 3162:3056(ResType) ImageSparseSampleImplicitLod 3160 3161 3163: 7(f16vec4) CompositeExtract 3162 1 Store 3053(texel) 3163 3164: 47(int) CompositeExtract 3162 0 3165: 371 Load 373(s2DRectShadow) 3166: 167(fvec3) Load 169(c3) 3167: 208(ptr) AccessChain 3053(texel) 207 3168: 52(float) CompositeExtract 3166 2 3169:3092(ResType) ImageSparseSampleDrefImplicitLod 3165 3166 3168 3170:6(float16_t) CompositeExtract 3169 1 Store 3167 3170 3171: 47(int) CompositeExtract 3169 0 3172: 371 Load 373(s2DRectShadow) 3173:154(f16vec2) Load 156(f16c2) 3174: 52(float) Load 215(compare) 3175: 208(ptr) AccessChain 3053(texel) 207 3176:3092(ResType) ImageSparseSampleDrefImplicitLod 3172 3173 3174 3177:6(float16_t) CompositeExtract 3176 1 Store 3175 3177 3178: 47(int) CompositeExtract 3176 0 3179: 391 Load 393(sCubeArrayShadow) 3180: 249(fvec4) Load 251(c4) 3181: 52(float) Load 215(compare) 3182: 208(ptr) AccessChain 3053(texel) 207 3183:3092(ResType) ImageSparseSampleDrefImplicitLod 3179 3180 3181 3184:6(float16_t) CompositeExtract 3183 1 Store 3182 3184 3185: 47(int) CompositeExtract 3183 0 3186: 391 Load 393(sCubeArrayShadow) 3187: 7(f16vec4) Load 309(f16c4) 3188: 52(float) Load 215(compare) 3189: 208(ptr) AccessChain 3053(texel) 207 3190:3092(ResType) ImageSparseSampleDrefImplicitLod 3186 3187 3188 3191:6(float16_t) CompositeExtract 3190 1 Store 3189 3191 3192: 47(int) CompositeExtract 3190 0 3193: 7(f16vec4) Load 3053(texel) ReturnValue 3193 FunctionEnd 71(testSparseTextureLod(): 7(f16vec4) Function None 8 72: Label 3196(texel): 64(ptr) Variable Function Store 3196(texel) 121 3197: 143 Load 145(s2D) 3198: 53(fvec2) Load 148(c2) 3199: 52(float) Load 565(lod) 3200:3056(ResType) ImageSparseSampleExplicitLod 3197 3198 Lod 3199 3201: 7(f16vec4) CompositeExtract 3200 1 Store 3196(texel) 3201 3202: 47(int) CompositeExtract 3200 0 3203: 143 Load 145(s2D) 3204:154(f16vec2) Load 156(f16c2) 3205:6(float16_t) Load 572(f16lod) 3206:3056(ResType) ImageSparseSampleExplicitLod 3203 3204 Lod 3205 3207: 7(f16vec4) CompositeExtract 3206 1 Store 3196(texel) 3207 3208: 47(int) CompositeExtract 3206 0 3209: 163 Load 165(s3D) 3210: 167(fvec3) Load 169(c3) 3211: 52(float) Load 565(lod) 3212:3056(ResType) ImageSparseSampleExplicitLod 3209 3210 Lod 3211 3213: 7(f16vec4) CompositeExtract 3212 1 Store 3196(texel) 3213 3214: 47(int) CompositeExtract 3212 0 3215: 163 Load 165(s3D) 3216:175(f16vec3) Load 177(f16c3) 3217:6(float16_t) Load 572(f16lod) 3218:3056(ResType) ImageSparseSampleExplicitLod 3215 3216 Lod 3217 3219: 7(f16vec4) CompositeExtract 3218 1 Store 3196(texel) 3219 3220: 47(int) CompositeExtract 3218 0 3221: 184 Load 186(sCube) 3222: 167(fvec3) Load 169(c3) 3223: 52(float) Load 565(lod) 3224:3056(ResType) ImageSparseSampleExplicitLod 3221 3222 Lod 3223 3225: 7(f16vec4) CompositeExtract 3224 1 Store 3196(texel) 3225 3226: 47(int) CompositeExtract 3224 0 3227: 184 Load 186(sCube) 3228:175(f16vec3) Load 177(f16c3) 3229:6(float16_t) Load 572(f16lod) 3230:3056(ResType) ImageSparseSampleExplicitLod 3227 3228 Lod 3229 3231: 7(f16vec4) CompositeExtract 3230 1 Store 3196(texel) 3231 3232: 47(int) CompositeExtract 3230 0 3233: 224 Load 226(s2DShadow) 3234: 167(fvec3) Load 169(c3) 3235: 52(float) Load 565(lod) 3236: 208(ptr) AccessChain 3196(texel) 207 3237: 52(float) CompositeExtract 3234 2 3238:3092(ResType) ImageSparseSampleDrefExplicitLod 3233 3234 3237 Lod 3235 3239:6(float16_t) CompositeExtract 3238 1 Store 3236 3239 3240: 47(int) CompositeExtract 3238 0 3241: 224 Load 226(s2DShadow) 3242:154(f16vec2) Load 156(f16c2) 3243: 52(float) Load 215(compare) 3244:6(float16_t) Load 572(f16lod) 3245: 208(ptr) AccessChain 3196(texel) 207 3246:3092(ResType) ImageSparseSampleDrefExplicitLod 3241 3242 3243 Lod 3244 3247:6(float16_t) CompositeExtract 3246 1 Store 3245 3247 3248: 47(int) CompositeExtract 3246 0 3249: 284 Load 286(s2DArray) 3250: 167(fvec3) Load 169(c3) 3251: 52(float) Load 565(lod) 3252:3056(ResType) ImageSparseSampleExplicitLod 3249 3250 Lod 3251 3253: 7(f16vec4) CompositeExtract 3252 1 Store 3196(texel) 3253 3254: 47(int) CompositeExtract 3252 0 3255: 284 Load 286(s2DArray) 3256:175(f16vec3) Load 177(f16c3) 3257:6(float16_t) Load 572(f16lod) 3258:3056(ResType) ImageSparseSampleExplicitLod 3255 3256 Lod 3257 3259: 7(f16vec4) CompositeExtract 3258 1 Store 3196(texel) 3259 3260: 47(int) CompositeExtract 3258 0 3261: 299 Load 301(sCubeArray) 3262: 249(fvec4) Load 251(c4) 3263: 52(float) Load 565(lod) 3264:3056(ResType) ImageSparseSampleExplicitLod 3261 3262 Lod 3263 3265: 7(f16vec4) CompositeExtract 3264 1 Store 3196(texel) 3265 3266: 47(int) CompositeExtract 3264 0 3267: 299 Load 301(sCubeArray) 3268: 7(f16vec4) Load 309(f16c4) 3269:6(float16_t) Load 572(f16lod) 3270:3056(ResType) ImageSparseSampleExplicitLod 3267 3268 Lod 3269 3271: 7(f16vec4) CompositeExtract 3270 1 Store 3196(texel) 3271 3272: 47(int) CompositeExtract 3270 0 3273: 7(f16vec4) Load 3196(texel) ReturnValue 3273 FunctionEnd 73(testSparseTextureOffset(): 7(f16vec4) Function None 8 74: Label 3276(texel): 64(ptr) Variable Function Store 3276(texel) 121 3277: 143 Load 145(s2D) 3278: 53(fvec2) Load 148(c2) 3279:3056(ResType) ImageSparseSampleImplicitLod 3277 3278 ConstOffset 722 3280: 7(f16vec4) CompositeExtract 3279 1 Store 3276(texel) 3280 3281: 47(int) CompositeExtract 3279 0 3282: 143 Load 145(s2D) 3283:154(f16vec2) Load 156(f16c2) 3284:6(float16_t) Load 137(f16bias) 3285:3056(ResType) ImageSparseSampleImplicitLod 3282 3283 Bias ConstOffset 3284 722 3286: 7(f16vec4) CompositeExtract 3285 1 Store 3276(texel) 3286 3287: 47(int) CompositeExtract 3285 0 3288: 163 Load 165(s3D) 3289: 167(fvec3) Load 169(c3) 3290:3056(ResType) ImageSparseSampleImplicitLod 3288 3289 ConstOffset 735 3291: 7(f16vec4) CompositeExtract 3290 1 Store 3276(texel) 3291 3292: 47(int) CompositeExtract 3290 0 3293: 163 Load 165(s3D) 3294:175(f16vec3) Load 177(f16c3) 3295:6(float16_t) Load 137(f16bias) 3296:3056(ResType) ImageSparseSampleImplicitLod 3293 3294 Bias ConstOffset 3295 735 3297: 7(f16vec4) CompositeExtract 3296 1 Store 3276(texel) 3297 3298: 47(int) CompositeExtract 3296 0 3299: 357 Load 359(s2DRect) 3300: 53(fvec2) Load 148(c2) 3301:3056(ResType) ImageSparseSampleImplicitLod 3299 3300 ConstOffset 722 3302: 7(f16vec4) CompositeExtract 3301 1 Store 3276(texel) 3302 3303: 47(int) CompositeExtract 3301 0 3304: 357 Load 359(s2DRect) 3305:154(f16vec2) Load 156(f16c2) 3306:3056(ResType) ImageSparseSampleImplicitLod 3304 3305 ConstOffset 722 3307: 7(f16vec4) CompositeExtract 3306 1 Store 3276(texel) 3307 3308: 47(int) CompositeExtract 3306 0 3309: 371 Load 373(s2DRectShadow) 3310: 167(fvec3) Load 169(c3) 3311: 208(ptr) AccessChain 3276(texel) 207 3312: 52(float) CompositeExtract 3310 2 3313:3092(ResType) ImageSparseSampleDrefImplicitLod 3309 3310 3312 ConstOffset 722 3314:6(float16_t) CompositeExtract 3313 1 Store 3311 3314 3315: 47(int) CompositeExtract 3313 0 3316: 371 Load 373(s2DRectShadow) 3317:154(f16vec2) Load 156(f16c2) 3318: 52(float) Load 215(compare) 3319: 208(ptr) AccessChain 3276(texel) 207 3320:3092(ResType) ImageSparseSampleDrefImplicitLod 3316 3317 3318 ConstOffset 722 3321:6(float16_t) CompositeExtract 3320 1 Store 3319 3321 3322: 47(int) CompositeExtract 3320 0 3323: 224 Load 226(s2DShadow) 3324: 167(fvec3) Load 169(c3) 3325: 208(ptr) AccessChain 3276(texel) 207 3326: 52(float) CompositeExtract 3324 2 3327:3092(ResType) ImageSparseSampleDrefImplicitLod 3323 3324 3326 ConstOffset 722 3328:6(float16_t) CompositeExtract 3327 1 Store 3325 3328 3329: 47(int) CompositeExtract 3327 0 3330: 224 Load 226(s2DShadow) 3331:154(f16vec2) Load 156(f16c2) 3332: 52(float) Load 215(compare) 3333: 208(ptr) AccessChain 3276(texel) 207 3334:6(float16_t) Load 137(f16bias) 3335:3092(ResType) ImageSparseSampleDrefImplicitLod 3330 3331 3332 Bias ConstOffset 3334 722 3336:6(float16_t) CompositeExtract 3335 1 Store 3333 3336 3337: 47(int) CompositeExtract 3335 0 3338: 284 Load 286(s2DArray) 3339: 167(fvec3) Load 169(c3) 3340:3056(ResType) ImageSparseSampleImplicitLod 3338 3339 ConstOffset 722 3341: 7(f16vec4) CompositeExtract 3340 1 Store 3276(texel) 3341 3342: 47(int) CompositeExtract 3340 0 3343: 284 Load 286(s2DArray) 3344:175(f16vec3) Load 177(f16c3) 3345:6(float16_t) Load 137(f16bias) 3346:3056(ResType) ImageSparseSampleImplicitLod 3343 3344 Bias ConstOffset 3345 722 3347: 7(f16vec4) CompositeExtract 3346 1 Store 3276(texel) 3347 3348: 47(int) CompositeExtract 3346 0 3349: 337 Load 339(s2DArrayShadow) 3350: 249(fvec4) Load 251(c4) 3351: 208(ptr) AccessChain 3276(texel) 207 3352: 52(float) CompositeExtract 3350 3 3353:3092(ResType) ImageSparseSampleDrefImplicitLod 3349 3350 3352 ConstOffset 722 3354:6(float16_t) CompositeExtract 3353 1 Store 3351 3354 3355: 47(int) CompositeExtract 3353 0 3356: 337 Load 339(s2DArrayShadow) 3357:175(f16vec3) Load 177(f16c3) 3358: 52(float) Load 215(compare) 3359: 208(ptr) AccessChain 3276(texel) 207 3360:3092(ResType) ImageSparseSampleDrefImplicitLod 3356 3357 3358 ConstOffset 722 3361:6(float16_t) CompositeExtract 3360 1 Store 3359 3361 3362: 47(int) CompositeExtract 3360 0 3363: 7(f16vec4) Load 3276(texel) ReturnValue 3363 FunctionEnd 75(testSparseTextureLodOffset(): 7(f16vec4) Function None 8 76: Label 3366(texel): 64(ptr) Variable Function Store 3366(texel) 121 3367: 143 Load 145(s2D) 3368: 53(fvec2) Load 148(c2) 3369: 52(float) Load 565(lod) 3370:3056(ResType) ImageSparseSampleExplicitLod 3367 3368 Lod ConstOffset 3369 722 3371: 7(f16vec4) CompositeExtract 3370 1 Store 3366(texel) 3371 3372: 47(int) CompositeExtract 3370 0 3373: 143 Load 145(s2D) 3374:154(f16vec2) Load 156(f16c2) 3375:6(float16_t) Load 572(f16lod) 3376:3056(ResType) ImageSparseSampleExplicitLod 3373 3374 Lod ConstOffset 3375 722 3377: 7(f16vec4) CompositeExtract 3376 1 Store 3366(texel) 3377 3378: 47(int) CompositeExtract 3376 0 3379: 163 Load 165(s3D) 3380: 167(fvec3) Load 169(c3) 3381: 52(float) Load 565(lod) 3382:3056(ResType) ImageSparseSampleExplicitLod 3379 3380 Lod ConstOffset 3381 735 3383: 7(f16vec4) CompositeExtract 3382 1 Store 3366(texel) 3383 3384: 47(int) CompositeExtract 3382 0 3385: 163 Load 165(s3D) 3386:175(f16vec3) Load 177(f16c3) 3387:6(float16_t) Load 572(f16lod) 3388:3056(ResType) ImageSparseSampleExplicitLod 3385 3386 Lod ConstOffset 3387 735 3389: 7(f16vec4) CompositeExtract 3388 1 Store 3366(texel) 3389 3390: 47(int) CompositeExtract 3388 0 3391: 224 Load 226(s2DShadow) 3392: 167(fvec3) Load 169(c3) 3393: 52(float) Load 565(lod) 3394: 208(ptr) AccessChain 3366(texel) 207 3395: 52(float) CompositeExtract 3392 2 3396:3092(ResType) ImageSparseSampleDrefExplicitLod 3391 3392 3395 Lod ConstOffset 3393 722 3397:6(float16_t) CompositeExtract 3396 1 Store 3394 3397 3398: 47(int) CompositeExtract 3396 0 3399: 224 Load 226(s2DShadow) 3400:154(f16vec2) Load 156(f16c2) 3401: 52(float) Load 215(compare) 3402:6(float16_t) Load 572(f16lod) 3403: 208(ptr) AccessChain 3366(texel) 207 3404:3092(ResType) ImageSparseSampleDrefExplicitLod 3399 3400 3401 Lod ConstOffset 3402 722 3405:6(float16_t) CompositeExtract 3404 1 Store 3403 3405 3406: 47(int) CompositeExtract 3404 0 3407: 284 Load 286(s2DArray) 3408: 167(fvec3) Load 169(c3) 3409: 52(float) Load 565(lod) 3410:3056(ResType) ImageSparseSampleExplicitLod 3407 3408 Lod ConstOffset 3409 722 3411: 7(f16vec4) CompositeExtract 3410 1 Store 3366(texel) 3411 3412: 47(int) CompositeExtract 3410 0 3413: 284 Load 286(s2DArray) 3414:175(f16vec3) Load 177(f16c3) 3415:6(float16_t) Load 572(f16lod) 3416:3056(ResType) ImageSparseSampleExplicitLod 3413 3414 Lod ConstOffset 3415 722 3417: 7(f16vec4) CompositeExtract 3416 1 Store 3366(texel) 3417 3418: 47(int) CompositeExtract 3416 0 3419: 7(f16vec4) Load 3366(texel) ReturnValue 3419 FunctionEnd 77(testSparseTextureGrad(): 7(f16vec4) Function None 8 78: Label 3422(texel): 64(ptr) Variable Function Store 3422(texel) 121 3423: 143 Load 145(s2D) 3424: 53(fvec2) Load 148(c2) 3425: 53(fvec2) Load 1407(dPdxy2) 3426:3056(ResType) ImageSparseSampleExplicitLod 3423 3424 Grad 3425 3425 3427: 7(f16vec4) CompositeExtract 3426 1 Store 3422(texel) 3427 3428: 47(int) CompositeExtract 3426 0 3429: 143 Load 145(s2D) 3430:154(f16vec2) Load 156(f16c2) 3431:154(f16vec2) Load 1414(f16dPdxy2) 3432:3056(ResType) ImageSparseSampleExplicitLod 3429 3430 Grad 3431 3431 3433: 7(f16vec4) CompositeExtract 3432 1 Store 3422(texel) 3433 3434: 47(int) CompositeExtract 3432 0 3435: 163 Load 165(s3D) 3436: 167(fvec3) Load 169(c3) 3437: 167(fvec3) Load 1421(dPdxy3) 3438:3056(ResType) ImageSparseSampleExplicitLod 3435 3436 Grad 3437 3437 3439: 7(f16vec4) CompositeExtract 3438 1 Store 3422(texel) 3439 3440: 47(int) CompositeExtract 3438 0 3441: 163 Load 165(s3D) 3442:175(f16vec3) Load 177(f16c3) 3443:175(f16vec3) Load 1428(f16dPdxy3) 3444:3056(ResType) ImageSparseSampleExplicitLod 3441 3442 Grad 3443 3443 3445: 7(f16vec4) CompositeExtract 3444 1 Store 3422(texel) 3445 3446: 47(int) CompositeExtract 3444 0 3447: 184 Load 186(sCube) 3448: 167(fvec3) Load 169(c3) 3449: 167(fvec3) Load 1421(dPdxy3) 3450:3056(ResType) ImageSparseSampleExplicitLod 3447 3448 Grad 3449 3449 3451: 7(f16vec4) CompositeExtract 3450 1 Store 3422(texel) 3451 3452: 47(int) CompositeExtract 3450 0 3453: 184 Load 186(sCube) 3454:175(f16vec3) Load 177(f16c3) 3455:175(f16vec3) Load 1428(f16dPdxy3) 3456:3056(ResType) ImageSparseSampleExplicitLod 3453 3454 Grad 3455 3455 3457: 7(f16vec4) CompositeExtract 3456 1 Store 3422(texel) 3457 3458: 47(int) CompositeExtract 3456 0 3459: 357 Load 359(s2DRect) 3460: 53(fvec2) Load 148(c2) 3461: 53(fvec2) Load 1407(dPdxy2) 3462:3056(ResType) ImageSparseSampleExplicitLod 3459 3460 Grad 3461 3461 3463: 7(f16vec4) CompositeExtract 3462 1 Store 3422(texel) 3463 3464: 47(int) CompositeExtract 3462 0 3465: 357 Load 359(s2DRect) 3466:154(f16vec2) Load 156(f16c2) 3467:154(f16vec2) Load 1414(f16dPdxy2) 3468:3056(ResType) ImageSparseSampleExplicitLod 3465 3466 Grad 3467 3467 3469: 7(f16vec4) CompositeExtract 3468 1 Store 3422(texel) 3469 3470: 47(int) CompositeExtract 3468 0 3471: 371 Load 373(s2DRectShadow) 3472: 167(fvec3) Load 169(c3) 3473: 53(fvec2) Load 1407(dPdxy2) 3474: 208(ptr) AccessChain 3422(texel) 207 3475: 52(float) CompositeExtract 3472 2 3476:3092(ResType) ImageSparseSampleDrefExplicitLod 3471 3472 3475 Grad 3473 3473 3477:6(float16_t) CompositeExtract 3476 1 Store 3474 3477 3478: 47(int) CompositeExtract 3476 0 3479: 371 Load 373(s2DRectShadow) 3480:154(f16vec2) Load 156(f16c2) 3481: 52(float) Load 215(compare) 3482:154(f16vec2) Load 1414(f16dPdxy2) 3483: 208(ptr) AccessChain 3422(texel) 207 3484:3092(ResType) ImageSparseSampleDrefExplicitLod 3479 3480 3481 Grad 3482 3482 3485:6(float16_t) CompositeExtract 3484 1 Store 3483 3485 3486: 47(int) CompositeExtract 3484 0 3487: 224 Load 226(s2DShadow) 3488: 167(fvec3) Load 169(c3) 3489: 53(fvec2) Load 1407(dPdxy2) 3490: 208(ptr) AccessChain 3422(texel) 207 3491: 52(float) CompositeExtract 3488 2 3492:3092(ResType) ImageSparseSampleDrefExplicitLod 3487 3488 3491 Grad 3489 3489 3493:6(float16_t) CompositeExtract 3492 1 Store 3490 3493 3494: 47(int) CompositeExtract 3492 0 3495: 224 Load 226(s2DShadow) 3496:154(f16vec2) Load 156(f16c2) 3497: 52(float) Load 215(compare) 3498:154(f16vec2) Load 1414(f16dPdxy2) 3499: 208(ptr) AccessChain 3422(texel) 207 3500:3092(ResType) ImageSparseSampleDrefExplicitLod 3495 3496 3497 Grad 3498 3498 3501:6(float16_t) CompositeExtract 3500 1 Store 3499 3501 3502: 47(int) CompositeExtract 3500 0 3503: 245 Load 247(sCubeShadow) 3504: 249(fvec4) Load 251(c4) 3505: 167(fvec3) Load 1421(dPdxy3) 3506: 208(ptr) AccessChain 3422(texel) 207 3507: 52(float) CompositeExtract 3504 3 3508:3092(ResType) ImageSparseSampleDrefExplicitLod 3503 3504 3507 Grad 3505 3505 3509:6(float16_t) CompositeExtract 3508 1 Store 3506 3509 3510: 47(int) CompositeExtract 3508 0 3511: 245 Load 247(sCubeShadow) 3512:175(f16vec3) Load 177(f16c3) 3513: 52(float) Load 215(compare) 3514:175(f16vec3) Load 1428(f16dPdxy3) 3515: 208(ptr) AccessChain 3422(texel) 207 3516:3092(ResType) ImageSparseSampleDrefExplicitLod 3511 3512 3513 Grad 3514 3514 3517:6(float16_t) CompositeExtract 3516 1 Store 3515 3517 3518: 47(int) CompositeExtract 3516 0 3519: 284 Load 286(s2DArray) 3520: 167(fvec3) Load 169(c3) 3521: 53(fvec2) Load 1407(dPdxy2) 3522:3056(ResType) ImageSparseSampleExplicitLod 3519 3520 Grad 3521 3521 3523: 7(f16vec4) CompositeExtract 3522 1 Store 3422(texel) 3523 3524: 47(int) CompositeExtract 3522 0 3525: 284 Load 286(s2DArray) 3526:175(f16vec3) Load 177(f16c3) 3527:154(f16vec2) Load 1414(f16dPdxy2) 3528:3056(ResType) ImageSparseSampleExplicitLod 3525 3526 Grad 3527 3527 3529: 7(f16vec4) CompositeExtract 3528 1 Store 3422(texel) 3529 3530: 47(int) CompositeExtract 3528 0 3531: 337 Load 339(s2DArrayShadow) 3532: 249(fvec4) Load 251(c4) 3533: 53(fvec2) Load 1407(dPdxy2) 3534: 208(ptr) AccessChain 3422(texel) 207 3535: 52(float) CompositeExtract 3532 3 3536:3092(ResType) ImageSparseSampleDrefExplicitLod 3531 3532 3535 Grad 3533 3533 3537:6(float16_t) CompositeExtract 3536 1 Store 3534 3537 3538: 47(int) CompositeExtract 3536 0 3539: 337 Load 339(s2DArrayShadow) 3540:175(f16vec3) Load 177(f16c3) 3541: 52(float) Load 215(compare) 3542:154(f16vec2) Load 1414(f16dPdxy2) 3543: 208(ptr) AccessChain 3422(texel) 207 3544:3092(ResType) ImageSparseSampleDrefExplicitLod 3539 3540 3541 Grad 3542 3542 3545:6(float16_t) CompositeExtract 3544 1 Store 3543 3545 3546: 47(int) CompositeExtract 3544 0 3547: 299 Load 301(sCubeArray) 3548: 249(fvec4) Load 251(c4) 3549: 167(fvec3) Load 1421(dPdxy3) 3550:3056(ResType) ImageSparseSampleExplicitLod 3547 3548 Grad 3549 3549 3551: 7(f16vec4) CompositeExtract 3550 1 Store 3422(texel) 3551 3552: 47(int) CompositeExtract 3550 0 3553: 299 Load 301(sCubeArray) 3554: 7(f16vec4) Load 309(f16c4) 3555:175(f16vec3) Load 1428(f16dPdxy3) 3556:3056(ResType) ImageSparseSampleExplicitLod 3553 3554 Grad 3555 3555 3557: 7(f16vec4) CompositeExtract 3556 1 Store 3422(texel) 3557 3558: 47(int) CompositeExtract 3556 0 3559: 7(f16vec4) Load 3422(texel) ReturnValue 3559 FunctionEnd 79(testSparseTextureGradOffset(): 7(f16vec4) Function None 8 80: Label 3562(texel): 64(ptr) Variable Function Store 3562(texel) 121 3563: 143 Load 145(s2D) 3564: 53(fvec2) Load 148(c2) 3565: 53(fvec2) Load 1407(dPdxy2) 3566:3056(ResType) ImageSparseSampleExplicitLod 3563 3564 Grad ConstOffset 3565 3565 722 3567: 7(f16vec4) CompositeExtract 3566 1 Store 3562(texel) 3567 3568: 47(int) CompositeExtract 3566 0 3569: 143 Load 145(s2D) 3570:154(f16vec2) Load 156(f16c2) 3571:154(f16vec2) Load 1414(f16dPdxy2) 3572:3056(ResType) ImageSparseSampleExplicitLod 3569 3570 Grad ConstOffset 3571 3571 722 3573: 7(f16vec4) CompositeExtract 3572 1 Store 3562(texel) 3573 3574: 47(int) CompositeExtract 3572 0 3575: 163 Load 165(s3D) 3576: 167(fvec3) Load 169(c3) 3577: 167(fvec3) Load 1421(dPdxy3) 3578:3056(ResType) ImageSparseSampleExplicitLod 3575 3576 Grad ConstOffset 3577 3577 735 3579: 7(f16vec4) CompositeExtract 3578 1 Store 3562(texel) 3579 3580: 47(int) CompositeExtract 3578 0 3581: 163 Load 165(s3D) 3582:175(f16vec3) Load 177(f16c3) 3583:175(f16vec3) Load 1428(f16dPdxy3) 3584:3056(ResType) ImageSparseSampleExplicitLod 3581 3582 Grad ConstOffset 3583 3583 735 3585: 7(f16vec4) CompositeExtract 3584 1 Store 3562(texel) 3585 3586: 47(int) CompositeExtract 3584 0 3587: 357 Load 359(s2DRect) 3588: 53(fvec2) Load 148(c2) 3589: 53(fvec2) Load 1407(dPdxy2) 3590:3056(ResType) ImageSparseSampleExplicitLod 3587 3588 Grad ConstOffset 3589 3589 722 3591: 7(f16vec4) CompositeExtract 3590 1 Store 3562(texel) 3591 3592: 47(int) CompositeExtract 3590 0 3593: 357 Load 359(s2DRect) 3594:154(f16vec2) Load 156(f16c2) 3595:154(f16vec2) Load 1414(f16dPdxy2) 3596:3056(ResType) ImageSparseSampleExplicitLod 3593 3594 Grad ConstOffset 3595 3595 722 3597: 7(f16vec4) CompositeExtract 3596 1 Store 3562(texel) 3597 3598: 47(int) CompositeExtract 3596 0 3599: 371 Load 373(s2DRectShadow) 3600: 167(fvec3) Load 169(c3) 3601: 53(fvec2) Load 1407(dPdxy2) 3602: 208(ptr) AccessChain 3562(texel) 207 3603: 52(float) CompositeExtract 3600 2 3604:3092(ResType) ImageSparseSampleDrefExplicitLod 3599 3600 3603 Grad ConstOffset 3601 3601 722 3605:6(float16_t) CompositeExtract 3604 1 Store 3602 3605 3606: 47(int) CompositeExtract 3604 0 3607: 371 Load 373(s2DRectShadow) 3608:154(f16vec2) Load 156(f16c2) 3609: 52(float) Load 215(compare) 3610:154(f16vec2) Load 1414(f16dPdxy2) 3611: 208(ptr) AccessChain 3562(texel) 207 3612:3092(ResType) ImageSparseSampleDrefExplicitLod 3607 3608 3609 Grad ConstOffset 3610 3610 722 3613:6(float16_t) CompositeExtract 3612 1 Store 3611 3613 3614: 47(int) CompositeExtract 3612 0 3615: 224 Load 226(s2DShadow) 3616: 167(fvec3) Load 169(c3) 3617: 53(fvec2) Load 1407(dPdxy2) 3618: 208(ptr) AccessChain 3562(texel) 207 3619: 52(float) CompositeExtract 3616 2 3620:3092(ResType) ImageSparseSampleDrefExplicitLod 3615 3616 3619 Grad ConstOffset 3617 3617 722 3621:6(float16_t) CompositeExtract 3620 1 Store 3618 3621 3622: 47(int) CompositeExtract 3620 0 3623: 224 Load 226(s2DShadow) 3624:154(f16vec2) Load 156(f16c2) 3625: 52(float) Load 215(compare) 3626:154(f16vec2) Load 1414(f16dPdxy2) 3627: 208(ptr) AccessChain 3562(texel) 207 3628:3092(ResType) ImageSparseSampleDrefExplicitLod 3623 3624 3625 Grad ConstOffset 3626 3626 722 3629:6(float16_t) CompositeExtract 3628 1 Store 3627 3629 3630: 47(int) CompositeExtract 3628 0 3631: 284 Load 286(s2DArray) 3632: 167(fvec3) Load 169(c3) 3633: 53(fvec2) Load 1407(dPdxy2) 3634:3056(ResType) ImageSparseSampleExplicitLod 3631 3632 Grad ConstOffset 3633 3633 722 3635: 7(f16vec4) CompositeExtract 3634 1 Store 3562(texel) 3635 3636: 47(int) CompositeExtract 3634 0 3637: 284 Load 286(s2DArray) 3638:175(f16vec3) Load 177(f16c3) 3639:154(f16vec2) Load 1414(f16dPdxy2) 3640:3056(ResType) ImageSparseSampleExplicitLod 3637 3638 Grad ConstOffset 3639 3639 722 3641: 7(f16vec4) CompositeExtract 3640 1 Store 3562(texel) 3641 3642: 47(int) CompositeExtract 3640 0 3643: 337 Load 339(s2DArrayShadow) 3644: 249(fvec4) Load 251(c4) 3645: 53(fvec2) Load 1407(dPdxy2) 3646: 208(ptr) AccessChain 3562(texel) 207 3647: 52(float) CompositeExtract 3644 3 3648:3092(ResType) ImageSparseSampleDrefExplicitLod 3643 3644 3647 Grad ConstOffset 3645 3645 722 3649:6(float16_t) CompositeExtract 3648 1 Store 3646 3649 3650: 47(int) CompositeExtract 3648 0 3651: 337 Load 339(s2DArrayShadow) 3652:175(f16vec3) Load 177(f16c3) 3653: 52(float) Load 215(compare) 3654:154(f16vec2) Load 1414(f16dPdxy2) 3655: 208(ptr) AccessChain 3562(texel) 207 3656:3092(ResType) ImageSparseSampleDrefExplicitLod 3651 3652 3653 Grad ConstOffset 3654 3654 722 3657:6(float16_t) CompositeExtract 3656 1 Store 3655 3657 3658: 47(int) CompositeExtract 3656 0 3659: 7(f16vec4) Load 3562(texel) ReturnValue 3659 FunctionEnd 81(testSparseTexelFetch(): 7(f16vec4) Function None 8 82: Label 3662(texel): 64(ptr) Variable Function Store 3662(texel) 121 3663: 143 Load 145(s2D) 3664: 53(fvec2) Load 148(c2) 3665: 721(ivec2) ConvertFToS 3664 3666: 52(float) Load 565(lod) 3667: 47(int) ConvertFToS 3666 3668: 142 Image 3663 3669:3056(ResType) ImageSparseFetch 3668 3665 Lod 3667 3670: 7(f16vec4) CompositeExtract 3669 1 Store 3662(texel) 3670 3671: 47(int) CompositeExtract 3669 0 3672: 163 Load 165(s3D) 3673: 167(fvec3) Load 169(c3) 3674: 734(ivec3) ConvertFToS 3673 3675: 52(float) Load 565(lod) 3676: 47(int) ConvertFToS 3675 3677: 162 Image 3672 3678:3056(ResType) ImageSparseFetch 3677 3674 Lod 3676 3679: 7(f16vec4) CompositeExtract 3678 1 Store 3662(texel) 3679 3680: 47(int) CompositeExtract 3678 0 3681: 357 Load 359(s2DRect) 3682: 53(fvec2) Load 148(c2) 3683: 721(ivec2) ConvertFToS 3682 3684: 356 Image 3681 3685:3056(ResType) ImageSparseFetch 3684 3683 3686: 7(f16vec4) CompositeExtract 3685 1 Store 3662(texel) 3686 3687: 47(int) CompositeExtract 3685 0 3688: 284 Load 286(s2DArray) 3689: 167(fvec3) Load 169(c3) 3690: 734(ivec3) ConvertFToS 3689 3691: 52(float) Load 565(lod) 3692: 47(int) ConvertFToS 3691 3693: 283 Image 3688 3694:3056(ResType) ImageSparseFetch 3693 3690 Lod 3692 3695: 7(f16vec4) CompositeExtract 3694 1 Store 3662(texel) 3695 3696: 47(int) CompositeExtract 3694 0 3697: 1309 Load 1311(s2DMS) 3698: 53(fvec2) Load 148(c2) 3699: 721(ivec2) ConvertFToS 3698 3700: 1308 Image 3697 3701:3056(ResType) ImageSparseFetch 3700 3699 Sample 709 3702: 7(f16vec4) CompositeExtract 3701 1 Store 3662(texel) 3702 3703: 47(int) CompositeExtract 3701 0 3704: 1320 Load 1322(s2DMSArray) 3705: 167(fvec3) Load 169(c3) 3706: 734(ivec3) ConvertFToS 3705 3707: 1319 Image 3704 3708:3056(ResType) ImageSparseFetch 3707 3706 Sample 1326 3709: 7(f16vec4) CompositeExtract 3708 1 Store 3662(texel) 3709 3710: 47(int) CompositeExtract 3708 0 3711: 7(f16vec4) Load 3662(texel) ReturnValue 3711 FunctionEnd 83(testSparseTexelFetchOffset(): 7(f16vec4) Function None 8 84: Label 3714(texel): 64(ptr) Variable Function Store 3714(texel) 121 3715: 143 Load 145(s2D) 3716: 53(fvec2) Load 148(c2) 3717: 721(ivec2) ConvertFToS 3716 3718: 52(float) Load 565(lod) 3719: 47(int) ConvertFToS 3718 3720: 142 Image 3715 3721:3056(ResType) ImageSparseFetch 3720 3717 Lod ConstOffset 3719 722 3722: 7(f16vec4) CompositeExtract 3721 1 Store 3714(texel) 3722 3723: 47(int) CompositeExtract 3721 0 3724: 163 Load 165(s3D) 3725: 167(fvec3) Load 169(c3) 3726: 734(ivec3) ConvertFToS 3725 3727: 52(float) Load 565(lod) 3728: 47(int) ConvertFToS 3727 3729: 162 Image 3724 3730:3056(ResType) ImageSparseFetch 3729 3726 Lod ConstOffset 3728 735 3731: 7(f16vec4) CompositeExtract 3730 1 Store 3714(texel) 3731 3732: 47(int) CompositeExtract 3730 0 3733: 357 Load 359(s2DRect) 3734: 53(fvec2) Load 148(c2) 3735: 721(ivec2) ConvertFToS 3734 3736: 356 Image 3733 3737:3056(ResType) ImageSparseFetch 3736 3735 ConstOffset 722 3738: 7(f16vec4) CompositeExtract 3737 1 Store 3714(texel) 3738 3739: 47(int) CompositeExtract 3737 0 3740: 284 Load 286(s2DArray) 3741: 167(fvec3) Load 169(c3) 3742: 734(ivec3) ConvertFToS 3741 3743: 52(float) Load 565(lod) 3744: 47(int) ConvertFToS 3743 3745: 283 Image 3740 3746:3056(ResType) ImageSparseFetch 3745 3742 Lod ConstOffset 3744 722 3747: 7(f16vec4) CompositeExtract 3746 1 Store 3714(texel) 3747 3748: 47(int) CompositeExtract 3746 0 3749: 7(f16vec4) Load 3714(texel) ReturnValue 3749 FunctionEnd 85(testSparseTextureGather(): 7(f16vec4) Function None 8 86: Label 3752(texel): 64(ptr) Variable Function Store 3752(texel) 121 3753: 143 Load 145(s2D) 3754: 53(fvec2) Load 148(c2) 3755:3056(ResType) ImageSparseGather 3753 3754 2097 3756: 7(f16vec4) CompositeExtract 3755 1 Store 3752(texel) 3756 3757: 47(int) CompositeExtract 3755 0 3758: 143 Load 145(s2D) 3759:154(f16vec2) Load 156(f16c2) 3760:6(float16_t) Load 137(f16bias) 3761:3056(ResType) ImageSparseGather 3758 3759 2097 Bias 3760 3762: 7(f16vec4) CompositeExtract 3761 1 Store 3752(texel) 3762 3763: 47(int) CompositeExtract 3761 0 3764: 284 Load 286(s2DArray) 3765: 167(fvec3) Load 169(c3) 3766:3056(ResType) ImageSparseGather 3764 3765 2097 3767: 7(f16vec4) CompositeExtract 3766 1 Store 3752(texel) 3767 3768: 47(int) CompositeExtract 3766 0 3769: 284 Load 286(s2DArray) 3770:175(f16vec3) Load 177(f16c3) 3771:6(float16_t) Load 137(f16bias) 3772:3056(ResType) ImageSparseGather 3769 3770 2097 Bias 3771 3773: 7(f16vec4) CompositeExtract 3772 1 Store 3752(texel) 3773 3774: 47(int) CompositeExtract 3772 0 3775: 184 Load 186(sCube) 3776: 167(fvec3) Load 169(c3) 3777:3056(ResType) ImageSparseGather 3775 3776 2097 3778: 7(f16vec4) CompositeExtract 3777 1 Store 3752(texel) 3778 3779: 47(int) CompositeExtract 3777 0 3780: 184 Load 186(sCube) 3781:175(f16vec3) Load 177(f16c3) 3782:6(float16_t) Load 137(f16bias) 3783:3056(ResType) ImageSparseGather 3780 3781 2097 Bias 3782 3784: 7(f16vec4) CompositeExtract 3783 1 Store 3752(texel) 3784 3785: 47(int) CompositeExtract 3783 0 3786: 299 Load 301(sCubeArray) 3787: 249(fvec4) Load 251(c4) 3788:3056(ResType) ImageSparseGather 3786 3787 2097 3789: 7(f16vec4) CompositeExtract 3788 1 Store 3752(texel) 3789 3790: 47(int) CompositeExtract 3788 0 3791: 299 Load 301(sCubeArray) 3792: 7(f16vec4) Load 309(f16c4) 3793:6(float16_t) Load 137(f16bias) 3794:3056(ResType) ImageSparseGather 3791 3792 2097 Bias 3793 3795: 7(f16vec4) CompositeExtract 3794 1 Store 3752(texel) 3795 3796: 47(int) CompositeExtract 3794 0 3797: 357 Load 359(s2DRect) 3798: 53(fvec2) Load 148(c2) 3799:3056(ResType) ImageSparseGather 3797 3798 2097 3800: 7(f16vec4) CompositeExtract 3799 1 Store 3752(texel) 3800 3801: 47(int) CompositeExtract 3799 0 3802: 357 Load 359(s2DRect) 3803:154(f16vec2) Load 156(f16c2) 3804:3056(ResType) ImageSparseGather 3802 3803 2097 3805: 7(f16vec4) CompositeExtract 3804 1 Store 3752(texel) 3805 3806: 47(int) CompositeExtract 3804 0 3807: 224 Load 226(s2DShadow) 3808: 53(fvec2) Load 148(c2) 3809: 52(float) Load 215(compare) 3810:3056(ResType) ImageSparseDrefGather 3807 3808 3809 3811: 7(f16vec4) CompositeExtract 3810 1 Store 3752(texel) 3811 3812: 47(int) CompositeExtract 3810 0 3813: 224 Load 226(s2DShadow) 3814:154(f16vec2) Load 156(f16c2) 3815: 52(float) Load 215(compare) 3816:3056(ResType) ImageSparseDrefGather 3813 3814 3815 3817: 7(f16vec4) CompositeExtract 3816 1 Store 3752(texel) 3817 3818: 47(int) CompositeExtract 3816 0 3819: 337 Load 339(s2DArrayShadow) 3820: 167(fvec3) Load 169(c3) 3821: 52(float) Load 215(compare) 3822:3056(ResType) ImageSparseDrefGather 3819 3820 3821 3823: 7(f16vec4) CompositeExtract 3822 1 Store 3752(texel) 3823 3824: 47(int) CompositeExtract 3822 0 3825: 337 Load 339(s2DArrayShadow) 3826:175(f16vec3) Load 177(f16c3) 3827: 52(float) Load 215(compare) 3828:3056(ResType) ImageSparseDrefGather 3825 3826 3827 3829: 7(f16vec4) CompositeExtract 3828 1 Store 3752(texel) 3829 3830: 47(int) CompositeExtract 3828 0 3831: 245 Load 247(sCubeShadow) 3832: 167(fvec3) Load 169(c3) 3833: 52(float) Load 215(compare) 3834:3056(ResType) ImageSparseDrefGather 3831 3832 3833 3835: 7(f16vec4) CompositeExtract 3834 1 Store 3752(texel) 3835 3836: 47(int) CompositeExtract 3834 0 3837: 245 Load 247(sCubeShadow) 3838:175(f16vec3) Load 177(f16c3) 3839: 52(float) Load 215(compare) 3840:3056(ResType) ImageSparseDrefGather 3837 3838 3839 3841: 7(f16vec4) CompositeExtract 3840 1 Store 3752(texel) 3841 3842: 47(int) CompositeExtract 3840 0 3843: 391 Load 393(sCubeArrayShadow) 3844: 249(fvec4) Load 251(c4) 3845: 52(float) Load 215(compare) 3846:3056(ResType) ImageSparseDrefGather 3843 3844 3845 3847: 7(f16vec4) CompositeExtract 3846 1 Store 3752(texel) 3847 3848: 47(int) CompositeExtract 3846 0 3849: 391 Load 393(sCubeArrayShadow) 3850: 7(f16vec4) Load 309(f16c4) 3851: 52(float) Load 215(compare) 3852:3056(ResType) ImageSparseDrefGather 3849 3850 3851 3853: 7(f16vec4) CompositeExtract 3852 1 Store 3752(texel) 3853 3854: 47(int) CompositeExtract 3852 0 3855: 371 Load 373(s2DRectShadow) 3856: 53(fvec2) Load 148(c2) 3857: 52(float) Load 215(compare) 3858:3056(ResType) ImageSparseDrefGather 3855 3856 3857 3859: 7(f16vec4) CompositeExtract 3858 1 Store 3752(texel) 3859 3860: 47(int) CompositeExtract 3858 0 3861: 371 Load 373(s2DRectShadow) 3862:154(f16vec2) Load 156(f16c2) 3863: 52(float) Load 215(compare) 3864:3056(ResType) ImageSparseDrefGather 3861 3862 3863 3865: 7(f16vec4) CompositeExtract 3864 1 Store 3752(texel) 3865 3866: 47(int) CompositeExtract 3864 0 3867: 7(f16vec4) Load 3752(texel) ReturnValue 3867 FunctionEnd 87(testSparseTextureGatherOffset(): 7(f16vec4) Function None 8 88: Label 3870(texel): 64(ptr) Variable Function Store 3870(texel) 121 3871: 143 Load 145(s2D) 3872: 53(fvec2) Load 148(c2) 3873:3056(ResType) ImageSparseGather 3871 3872 2097 ConstOffset 722 3874: 7(f16vec4) CompositeExtract 3873 1 Store 3870(texel) 3874 3875: 47(int) CompositeExtract 3873 0 3876: 143 Load 145(s2D) 3877:154(f16vec2) Load 156(f16c2) 3878:6(float16_t) Load 137(f16bias) 3879:3056(ResType) ImageSparseGather 3876 3877 2097 Bias ConstOffset 3878 722 3880: 7(f16vec4) CompositeExtract 3879 1 Store 3870(texel) 3880 3881: 47(int) CompositeExtract 3879 0 3882: 284 Load 286(s2DArray) 3883: 167(fvec3) Load 169(c3) 3884:3056(ResType) ImageSparseGather 3882 3883 2097 ConstOffset 722 3885: 7(f16vec4) CompositeExtract 3884 1 Store 3870(texel) 3885 3886: 47(int) CompositeExtract 3884 0 3887: 284 Load 286(s2DArray) 3888:175(f16vec3) Load 177(f16c3) 3889:6(float16_t) Load 137(f16bias) 3890:3056(ResType) ImageSparseGather 3887 3888 2097 Bias ConstOffset 3889 722 3891: 7(f16vec4) CompositeExtract 3890 1 Store 3870(texel) 3891 3892: 47(int) CompositeExtract 3890 0 3893: 357 Load 359(s2DRect) 3894: 53(fvec2) Load 148(c2) 3895:3056(ResType) ImageSparseGather 3893 3894 2097 ConstOffset 722 3896: 7(f16vec4) CompositeExtract 3895 1 Store 3870(texel) 3896 3897: 47(int) CompositeExtract 3895 0 3898: 357 Load 359(s2DRect) 3899:154(f16vec2) Load 156(f16c2) 3900:3056(ResType) ImageSparseGather 3898 3899 2097 ConstOffset 722 3901: 7(f16vec4) CompositeExtract 3900 1 Store 3870(texel) 3901 3902: 47(int) CompositeExtract 3900 0 3903: 224 Load 226(s2DShadow) 3904: 53(fvec2) Load 148(c2) 3905: 52(float) Load 215(compare) 3906:3056(ResType) ImageSparseDrefGather 3903 3904 3905 ConstOffset 722 3907: 7(f16vec4) CompositeExtract 3906 1 Store 3870(texel) 3907 3908: 47(int) CompositeExtract 3906 0 3909: 224 Load 226(s2DShadow) 3910:154(f16vec2) Load 156(f16c2) 3911: 52(float) Load 215(compare) 3912:3056(ResType) ImageSparseDrefGather 3909 3910 3911 ConstOffset 722 3913: 7(f16vec4) CompositeExtract 3912 1 Store 3870(texel) 3913 3914: 47(int) CompositeExtract 3912 0 3915: 337 Load 339(s2DArrayShadow) 3916: 167(fvec3) Load 169(c3) 3917: 52(float) Load 215(compare) 3918:3056(ResType) ImageSparseDrefGather 3915 3916 3917 ConstOffset 722 3919: 7(f16vec4) CompositeExtract 3918 1 Store 3870(texel) 3919 3920: 47(int) CompositeExtract 3918 0 3921: 337 Load 339(s2DArrayShadow) 3922:175(f16vec3) Load 177(f16c3) 3923: 52(float) Load 215(compare) 3924:3056(ResType) ImageSparseDrefGather 3921 3922 3923 ConstOffset 722 3925: 7(f16vec4) CompositeExtract 3924 1 Store 3870(texel) 3925 3926: 47(int) CompositeExtract 3924 0 3927: 371 Load 373(s2DRectShadow) 3928: 53(fvec2) Load 148(c2) 3929: 52(float) Load 215(compare) 3930:3056(ResType) ImageSparseDrefGather 3927 3928 3929 ConstOffset 722 3931: 7(f16vec4) CompositeExtract 3930 1 Store 3870(texel) 3931 3932: 47(int) CompositeExtract 3930 0 3933: 371 Load 373(s2DRectShadow) 3934:154(f16vec2) Load 156(f16c2) 3935: 52(float) Load 215(compare) 3936:3056(ResType) ImageSparseDrefGather 3933 3934 3935 ConstOffset 722 3937: 7(f16vec4) CompositeExtract 3936 1 Store 3870(texel) 3937 3938: 47(int) CompositeExtract 3936 0 3939: 7(f16vec4) Load 3870(texel) ReturnValue 3939 FunctionEnd 89(testSparseTextureGatherOffsets(): 7(f16vec4) Function None 8 90: Label 3942(texel): 64(ptr) Variable Function Store 3942(texel) 121 3943: 143 Load 145(s2D) 3944: 53(fvec2) Load 148(c2) 3955:3056(ResType) ImageSparseGather 3943 3944 2097 ConstOffsets 3954 3956: 7(f16vec4) CompositeExtract 3955 1 Store 3942(texel) 3956 3957: 47(int) CompositeExtract 3955 0 3958: 143 Load 145(s2D) 3959:154(f16vec2) Load 156(f16c2) 3960:6(float16_t) Load 137(f16bias) 3961:3056(ResType) ImageSparseGather 3958 3959 2097 Bias ConstOffsets 3960 3954 3962: 7(f16vec4) CompositeExtract 3961 1 Store 3942(texel) 3962 3963: 47(int) CompositeExtract 3961 0 3964: 284 Load 286(s2DArray) 3965: 167(fvec3) Load 169(c3) 3966:3056(ResType) ImageSparseGather 3964 3965 2097 ConstOffsets 3954 3967: 7(f16vec4) CompositeExtract 3966 1 Store 3942(texel) 3967 3968: 47(int) CompositeExtract 3966 0 3969: 284 Load 286(s2DArray) 3970:175(f16vec3) Load 177(f16c3) 3971:6(float16_t) Load 137(f16bias) 3972:3056(ResType) ImageSparseGather 3969 3970 2097 Bias ConstOffsets 3971 3954 3973: 7(f16vec4) CompositeExtract 3972 1 Store 3942(texel) 3973 3974: 47(int) CompositeExtract 3972 0 3975: 357 Load 359(s2DRect) 3976: 53(fvec2) Load 148(c2) 3977:3056(ResType) ImageSparseGather 3975 3976 2097 ConstOffsets 3954 3978: 7(f16vec4) CompositeExtract 3977 1 Store 3942(texel) 3978 3979: 47(int) CompositeExtract 3977 0 3980: 357 Load 359(s2DRect) 3981:154(f16vec2) Load 156(f16c2) 3982:3056(ResType) ImageSparseGather 3980 3981 2097 ConstOffsets 3954 3983: 7(f16vec4) CompositeExtract 3982 1 Store 3942(texel) 3983 3984: 47(int) CompositeExtract 3982 0 3985: 224 Load 226(s2DShadow) 3986: 53(fvec2) Load 148(c2) 3987: 52(float) Load 215(compare) 3988:3056(ResType) ImageSparseDrefGather 3985 3986 3987 ConstOffsets 3954 3989: 7(f16vec4) CompositeExtract 3988 1 Store 3942(texel) 3989 3990: 47(int) CompositeExtract 3988 0 3991: 224 Load 226(s2DShadow) 3992:154(f16vec2) Load 156(f16c2) 3993: 52(float) Load 215(compare) 3994:3056(ResType) ImageSparseDrefGather 3991 3992 3993 ConstOffsets 3954 3995: 7(f16vec4) CompositeExtract 3994 1 Store 3942(texel) 3995 3996: 47(int) CompositeExtract 3994 0 3997: 337 Load 339(s2DArrayShadow) 3998: 167(fvec3) Load 169(c3) 3999: 52(float) Load 215(compare) 4000:3056(ResType) ImageSparseDrefGather 3997 3998 3999 ConstOffsets 3954 4001: 7(f16vec4) CompositeExtract 4000 1 Store 3942(texel) 4001 4002: 47(int) CompositeExtract 4000 0 4003: 337 Load 339(s2DArrayShadow) 4004:175(f16vec3) Load 177(f16c3) 4005: 52(float) Load 215(compare) 4006:3056(ResType) ImageSparseDrefGather 4003 4004 4005 ConstOffsets 3954 4007: 7(f16vec4) CompositeExtract 4006 1 Store 3942(texel) 4007 4008: 47(int) CompositeExtract 4006 0 4009: 371 Load 373(s2DRectShadow) 4010: 53(fvec2) Load 148(c2) 4011: 52(float) Load 215(compare) 4012:3056(ResType) ImageSparseDrefGather 4009 4010 4011 ConstOffsets 3954 4013: 7(f16vec4) CompositeExtract 4012 1 Store 3942(texel) 4013 4014: 47(int) CompositeExtract 4012 0 4015: 371 Load 373(s2DRectShadow) 4016:154(f16vec2) Load 156(f16c2) 4017: 52(float) Load 215(compare) 4018:3056(ResType) ImageSparseDrefGather 4015 4016 4017 ConstOffsets 3954 4019: 7(f16vec4) CompositeExtract 4018 1 Store 3942(texel) 4019 4020: 47(int) CompositeExtract 4018 0 4021: 7(f16vec4) Load 3942(texel) ReturnValue 4021 FunctionEnd 91(testSparseTextureGatherLod(): 7(f16vec4) Function None 8 92: Label 4024(texel): 64(ptr) Variable Function Store 4024(texel) 121 4025: 143 Load 145(s2D) 4026: 53(fvec2) Load 148(c2) 4027: 52(float) Load 565(lod) 4028:3056(ResType) ImageSparseGather 4025 4026 2097 Lod 4027 4029: 7(f16vec4) CompositeExtract 4028 1 Store 4024(texel) 4029 4030: 47(int) CompositeExtract 4028 0 4031: 143 Load 145(s2D) 4032:154(f16vec2) Load 156(f16c2) 4033:6(float16_t) Load 572(f16lod) 4034:3056(ResType) ImageSparseGather 4031 4032 2097 Lod 4033 4035: 7(f16vec4) CompositeExtract 4034 1 Store 4024(texel) 4035 4036: 47(int) CompositeExtract 4034 0 4037: 284 Load 286(s2DArray) 4038: 167(fvec3) Load 169(c3) 4039: 52(float) Load 565(lod) 4040:3056(ResType) ImageSparseGather 4037 4038 2097 Lod 4039 4041: 7(f16vec4) CompositeExtract 4040 1 Store 4024(texel) 4041 4042: 47(int) CompositeExtract 4040 0 4043: 284 Load 286(s2DArray) 4044:175(f16vec3) Load 177(f16c3) 4045:6(float16_t) Load 572(f16lod) 4046:3056(ResType) ImageSparseGather 4043 4044 2097 Lod 4045 4047: 7(f16vec4) CompositeExtract 4046 1 Store 4024(texel) 4047 4048: 47(int) CompositeExtract 4046 0 4049: 184 Load 186(sCube) 4050: 167(fvec3) Load 169(c3) 4051: 52(float) Load 565(lod) 4052:3056(ResType) ImageSparseGather 4049 4050 2097 Lod 4051 4053: 7(f16vec4) CompositeExtract 4052 1 Store 4024(texel) 4053 4054: 47(int) CompositeExtract 4052 0 4055: 184 Load 186(sCube) 4056:175(f16vec3) Load 177(f16c3) 4057:6(float16_t) Load 572(f16lod) 4058:3056(ResType) ImageSparseGather 4055 4056 2097 Lod 4057 4059: 7(f16vec4) CompositeExtract 4058 1 Store 4024(texel) 4059 4060: 47(int) CompositeExtract 4058 0 4061: 299 Load 301(sCubeArray) 4062: 249(fvec4) Load 251(c4) 4063: 52(float) Load 565(lod) 4064:3056(ResType) ImageSparseGather 4061 4062 2097 Lod 4063 4065: 7(f16vec4) CompositeExtract 4064 1 Store 4024(texel) 4065 4066: 47(int) CompositeExtract 4064 0 4067: 299 Load 301(sCubeArray) 4068: 7(f16vec4) Load 309(f16c4) 4069:6(float16_t) Load 572(f16lod) 4070:3056(ResType) ImageSparseGather 4067 4068 2097 Lod 4069 4071: 7(f16vec4) CompositeExtract 4070 1 Store 4024(texel) 4071 4072: 47(int) CompositeExtract 4070 0 4073: 7(f16vec4) Load 4024(texel) ReturnValue 4073 FunctionEnd 93(testSparseTextureGatherLodOffset(): 7(f16vec4) Function None 8 94: Label 4076(texel): 64(ptr) Variable Function Store 4076(texel) 121 4077: 143 Load 145(s2D) 4078: 53(fvec2) Load 148(c2) 4079: 52(float) Load 565(lod) 4080:3056(ResType) ImageSparseGather 4077 4078 2097 Lod ConstOffset 4079 722 4081: 7(f16vec4) CompositeExtract 4080 1 Store 4076(texel) 4081 4082: 47(int) CompositeExtract 4080 0 4083: 143 Load 145(s2D) 4084:154(f16vec2) Load 156(f16c2) 4085:6(float16_t) Load 572(f16lod) 4086:3056(ResType) ImageSparseGather 4083 4084 2097 Lod ConstOffset 4085 722 4087: 7(f16vec4) CompositeExtract 4086 1 Store 4076(texel) 4087 4088: 47(int) CompositeExtract 4086 0 4089: 284 Load 286(s2DArray) 4090: 167(fvec3) Load 169(c3) 4091: 52(float) Load 565(lod) 4092:3056(ResType) ImageSparseGather 4089 4090 2097 Lod ConstOffset 4091 722 4093: 7(f16vec4) CompositeExtract 4092 1 Store 4076(texel) 4093 4094: 47(int) CompositeExtract 4092 0 4095: 284 Load 286(s2DArray) 4096:175(f16vec3) Load 177(f16c3) 4097:6(float16_t) Load 572(f16lod) 4098:3056(ResType) ImageSparseGather 4095 4096 2097 Lod ConstOffset 4097 722 4099: 7(f16vec4) CompositeExtract 4098 1 Store 4076(texel) 4099 4100: 47(int) CompositeExtract 4098 0 4101: 7(f16vec4) Load 4076(texel) ReturnValue 4101 FunctionEnd 95(testSparseTextureGatherLodOffsets(): 7(f16vec4) Function None 8 96: Label 4104(texel): 64(ptr) Variable Function Store 4104(texel) 121 4105: 143 Load 145(s2D) 4106: 53(fvec2) Load 148(c2) 4107: 52(float) Load 565(lod) 4108:3056(ResType) ImageSparseGather 4105 4106 2097 Lod ConstOffsets 4107 2290 4109: 7(f16vec4) CompositeExtract 4108 1 Store 4104(texel) 4109 4110: 47(int) CompositeExtract 4108 0 4111: 143 Load 145(s2D) 4112:154(f16vec2) Load 156(f16c2) 4113:6(float16_t) Load 572(f16lod) 4114:3056(ResType) ImageSparseGather 4111 4112 2097 Lod ConstOffsets 4113 2290 4115: 7(f16vec4) CompositeExtract 4114 1 Store 4104(texel) 4115 4116: 47(int) CompositeExtract 4114 0 4117: 284 Load 286(s2DArray) 4118: 167(fvec3) Load 169(c3) 4119: 52(float) Load 565(lod) 4120:3056(ResType) ImageSparseGather 4117 4118 2097 Lod ConstOffsets 4119 2290 4121: 7(f16vec4) CompositeExtract 4120 1 Store 4104(texel) 4121 4122: 47(int) CompositeExtract 4120 0 4123: 284 Load 286(s2DArray) 4124:175(f16vec3) Load 177(f16c3) 4125:6(float16_t) Load 572(f16lod) 4126:3056(ResType) ImageSparseGather 4123 4124 2097 Lod ConstOffsets 4125 2290 4127: 7(f16vec4) CompositeExtract 4126 1 Store 4104(texel) 4127 4128: 47(int) CompositeExtract 4126 0 4129: 7(f16vec4) Load 4104(texel) ReturnValue 4129 FunctionEnd 97(testSparseImageLoad(): 7(f16vec4) Function None 8 98: Label 4132(texel): 64(ptr) Variable Function Store 4132(texel) 121 4133: 2916 Load 2918(i2D) 4134: 53(fvec2) Load 148(c2) 4135: 721(ivec2) ConvertFToS 4134 4136:3056(ResType) ImageSparseRead 4133 4135 4137: 7(f16vec4) CompositeExtract 4136 1 Store 4132(texel) 4137 4138: 47(int) CompositeExtract 4136 0 4139: 2925 Load 2927(i3D) 4140: 167(fvec3) Load 169(c3) 4141: 734(ivec3) ConvertFToS 4140 4142:3056(ResType) ImageSparseRead 4139 4141 4143: 7(f16vec4) CompositeExtract 4142 1 Store 4132(texel) 4143 4144: 47(int) CompositeExtract 4142 0 4145: 2934 Load 2936(i2DRect) 4146: 53(fvec2) Load 148(c2) 4147: 721(ivec2) ConvertFToS 4146 4148:3056(ResType) ImageSparseRead 4145 4147 4149: 7(f16vec4) CompositeExtract 4148 1 Store 4132(texel) 4149 4150: 47(int) CompositeExtract 4148 0 4151: 2943 Load 2945(iCube) 4152: 167(fvec3) Load 169(c3) 4153: 734(ivec3) ConvertFToS 4152 4154:3056(ResType) ImageSparseRead 4151 4153 4155: 7(f16vec4) CompositeExtract 4154 1 Store 4132(texel) 4155 4156: 47(int) CompositeExtract 4154 0 4157: 2970 Load 2972(i2DArray) 4158: 167(fvec3) Load 169(c3) 4159: 734(ivec3) ConvertFToS 4158 4160:3056(ResType) ImageSparseRead 4157 4159 4161: 7(f16vec4) CompositeExtract 4160 1 Store 4132(texel) 4161 4162: 47(int) CompositeExtract 4160 0 4163: 2979 Load 2981(iCubeArray) 4164: 167(fvec3) Load 169(c3) 4165: 734(ivec3) ConvertFToS 4164 4166:3056(ResType) ImageSparseRead 4163 4165 4167: 7(f16vec4) CompositeExtract 4166 1 Store 4132(texel) 4167 4168: 47(int) CompositeExtract 4166 0 4169: 2988 Load 2990(i2DMS) 4170: 53(fvec2) Load 148(c2) 4171: 721(ivec2) ConvertFToS 4170 4172:3056(ResType) ImageSparseRead 4169 4171 Sample 709 4173: 7(f16vec4) CompositeExtract 4172 1 Store 4132(texel) 4173 4174: 47(int) CompositeExtract 4172 0 4175: 2997 Load 2999(i2DMSArray) 4176: 167(fvec3) Load 169(c3) 4177: 734(ivec3) ConvertFToS 4176 4178:3056(ResType) ImageSparseRead 4175 4177 Sample 1326 4179: 7(f16vec4) CompositeExtract 4178 1 Store 4132(texel) 4179 4180: 47(int) CompositeExtract 4178 0 4181: 7(f16vec4) Load 4132(texel) ReturnValue 4181 FunctionEnd 99(testSparseTextureClamp(): 7(f16vec4) Function None 8 100: Label 4184(texel): 64(ptr) Variable Function Store 4184(texel) 121 4185: 143 Load 145(s2D) 4186: 53(fvec2) Load 148(c2) 4188: 52(float) Load 4187(lodClamp) 4189:3056(ResType) ImageSparseSampleImplicitLod 4185 4186 MinLod 4188 4190: 7(f16vec4) CompositeExtract 4189 1 Store 4184(texel) 4190 4191: 47(int) CompositeExtract 4189 0 4192: 143 Load 145(s2D) 4193:154(f16vec2) Load 156(f16c2) 4195:6(float16_t) Load 4194(f16lodClamp) 4196:6(float16_t) Load 137(f16bias) 4197:3056(ResType) ImageSparseSampleImplicitLod 4192 4193 Bias MinLod 4196 4195 4198: 7(f16vec4) CompositeExtract 4197 1 Store 4184(texel) 4198 4199: 47(int) CompositeExtract 4197 0 4200: 163 Load 165(s3D) 4201: 167(fvec3) Load 169(c3) 4202: 52(float) Load 4187(lodClamp) 4203:3056(ResType) ImageSparseSampleImplicitLod 4200 4201 MinLod 4202 4204: 7(f16vec4) CompositeExtract 4203 1 Store 4184(texel) 4204 4205: 47(int) CompositeExtract 4203 0 4206: 163 Load 165(s3D) 4207:175(f16vec3) Load 177(f16c3) 4208:6(float16_t) Load 4194(f16lodClamp) 4209:6(float16_t) Load 137(f16bias) 4210:3056(ResType) ImageSparseSampleImplicitLod 4206 4207 Bias MinLod 4209 4208 4211: 7(f16vec4) CompositeExtract 4210 1 Store 4184(texel) 4211 4212: 47(int) CompositeExtract 4210 0 4213: 184 Load 186(sCube) 4214: 167(fvec3) Load 169(c3) 4215: 52(float) Load 4187(lodClamp) 4216:3056(ResType) ImageSparseSampleImplicitLod 4213 4214 MinLod 4215 4217: 7(f16vec4) CompositeExtract 4216 1 Store 4184(texel) 4217 4218: 47(int) CompositeExtract 4216 0 4219: 184 Load 186(sCube) 4220:175(f16vec3) Load 177(f16c3) 4221:6(float16_t) Load 4194(f16lodClamp) 4222:6(float16_t) Load 137(f16bias) 4223:3056(ResType) ImageSparseSampleImplicitLod 4219 4220 Bias MinLod 4222 4221 4224: 7(f16vec4) CompositeExtract 4223 1 Store 4184(texel) 4224 4225: 47(int) CompositeExtract 4223 0 4226: 224 Load 226(s2DShadow) 4227: 167(fvec3) Load 169(c3) 4228: 52(float) Load 4187(lodClamp) 4229: 208(ptr) AccessChain 4184(texel) 207 4230: 52(float) CompositeExtract 4227 2 4231:3092(ResType) ImageSparseSampleDrefImplicitLod 4226 4227 4230 MinLod 4228 4232:6(float16_t) CompositeExtract 4231 1 Store 4229 4232 4233: 47(int) CompositeExtract 4231 0 4234: 224 Load 226(s2DShadow) 4235:154(f16vec2) Load 156(f16c2) 4236: 52(float) Load 215(compare) 4237:6(float16_t) Load 4194(f16lodClamp) 4238: 208(ptr) AccessChain 4184(texel) 207 4239:6(float16_t) Load 137(f16bias) 4240:3092(ResType) ImageSparseSampleDrefImplicitLod 4234 4235 4236 Bias MinLod 4239 4237 4241:6(float16_t) CompositeExtract 4240 1 Store 4238 4241 4242: 47(int) CompositeExtract 4240 0 4243: 245 Load 247(sCubeShadow) 4244: 249(fvec4) Load 251(c4) 4245: 52(float) Load 4187(lodClamp) 4246: 208(ptr) AccessChain 4184(texel) 207 4247: 52(float) CompositeExtract 4244 3 4248:3092(ResType) ImageSparseSampleDrefImplicitLod 4243 4244 4247 MinLod 4245 4249:6(float16_t) CompositeExtract 4248 1 Store 4246 4249 4250: 47(int) CompositeExtract 4248 0 4251: 245 Load 247(sCubeShadow) 4252:175(f16vec3) Load 177(f16c3) 4253: 52(float) Load 215(compare) 4254:6(float16_t) Load 4194(f16lodClamp) 4255: 208(ptr) AccessChain 4184(texel) 207 4256:6(float16_t) Load 137(f16bias) 4257:3092(ResType) ImageSparseSampleDrefImplicitLod 4251 4252 4253 Bias MinLod 4256 4254 4258:6(float16_t) CompositeExtract 4257 1 Store 4255 4258 4259: 47(int) CompositeExtract 4257 0 4260: 284 Load 286(s2DArray) 4261: 167(fvec3) Load 169(c3) 4262: 52(float) Load 4187(lodClamp) 4263:3056(ResType) ImageSparseSampleImplicitLod 4260 4261 MinLod 4262 4264: 7(f16vec4) CompositeExtract 4263 1 Store 4184(texel) 4264 4265: 47(int) CompositeExtract 4263 0 4266: 284 Load 286(s2DArray) 4267:175(f16vec3) Load 177(f16c3) 4268:6(float16_t) Load 4194(f16lodClamp) 4269:6(float16_t) Load 137(f16bias) 4270:3056(ResType) ImageSparseSampleImplicitLod 4266 4267 Bias MinLod 4269 4268 4271: 7(f16vec4) CompositeExtract 4270 1 Store 4184(texel) 4271 4272: 47(int) CompositeExtract 4270 0 4273: 299 Load 301(sCubeArray) 4274: 249(fvec4) Load 251(c4) 4275: 52(float) Load 4187(lodClamp) 4276:3056(ResType) ImageSparseSampleImplicitLod 4273 4274 MinLod 4275 4277: 7(f16vec4) CompositeExtract 4276 1 Store 4184(texel) 4277 4278: 47(int) CompositeExtract 4276 0 4279: 299 Load 301(sCubeArray) 4280: 7(f16vec4) Load 309(f16c4) 4281:6(float16_t) Load 4194(f16lodClamp) 4282:6(float16_t) Load 137(f16bias) 4283:3056(ResType) ImageSparseSampleImplicitLod 4279 4280 Bias MinLod 4282 4281 4284: 7(f16vec4) CompositeExtract 4283 1 Store 4184(texel) 4284 4285: 47(int) CompositeExtract 4283 0 4286: 337 Load 339(s2DArrayShadow) 4287: 249(fvec4) Load 251(c4) 4288: 52(float) Load 4187(lodClamp) 4289: 208(ptr) AccessChain 4184(texel) 207 4290: 52(float) CompositeExtract 4287 3 4291:3092(ResType) ImageSparseSampleDrefImplicitLod 4286 4287 4290 MinLod 4288 4292:6(float16_t) CompositeExtract 4291 1 Store 4289 4292 4293: 47(int) CompositeExtract 4291 0 4294: 337 Load 339(s2DArrayShadow) 4295:175(f16vec3) Load 177(f16c3) 4296: 52(float) Load 215(compare) 4297:6(float16_t) Load 4194(f16lodClamp) 4298: 208(ptr) AccessChain 4184(texel) 207 4299:3092(ResType) ImageSparseSampleDrefImplicitLod 4294 4295 4296 MinLod 4297 4300:6(float16_t) CompositeExtract 4299 1 Store 4298 4300 4301: 47(int) CompositeExtract 4299 0 4302: 391 Load 393(sCubeArrayShadow) 4303: 249(fvec4) Load 251(c4) 4304: 52(float) Load 215(compare) 4305: 52(float) Load 4187(lodClamp) 4306: 208(ptr) AccessChain 4184(texel) 207 4307:3092(ResType) ImageSparseSampleDrefImplicitLod 4302 4303 4304 MinLod 4305 4308:6(float16_t) CompositeExtract 4307 1 Store 4306 4308 4309: 47(int) CompositeExtract 4307 0 4310: 391 Load 393(sCubeArrayShadow) 4311: 7(f16vec4) Load 309(f16c4) 4312: 52(float) Load 215(compare) 4313:6(float16_t) Load 4194(f16lodClamp) 4314: 208(ptr) AccessChain 4184(texel) 207 4315:3092(ResType) ImageSparseSampleDrefImplicitLod 4310 4311 4312 MinLod 4313 4316:6(float16_t) CompositeExtract 4315 1 Store 4314 4316 4317: 47(int) CompositeExtract 4315 0 4318: 7(f16vec4) Load 4184(texel) ReturnValue 4318 FunctionEnd 101(testTextureClamp(): 7(f16vec4) Function None 8 102: Label 4321(texel): 64(ptr) Variable Function Store 4321(texel) 121 4322: 123 Load 125(s1D) 4323: 52(float) Load 128(c1) 4324: 52(float) Load 4187(lodClamp) 4325: 7(f16vec4) ImageSampleImplicitLod 4322 4323 MinLod 4324 4326: 7(f16vec4) Load 4321(texel) 4327: 7(f16vec4) FAdd 4326 4325 Store 4321(texel) 4327 4328: 123 Load 125(s1D) 4329:6(float16_t) Load 135(f16c1) 4330:6(float16_t) Load 4194(f16lodClamp) 4331:6(float16_t) Load 137(f16bias) 4332: 7(f16vec4) ImageSampleImplicitLod 4328 4329 Bias MinLod 4331 4330 4333: 7(f16vec4) Load 4321(texel) 4334: 7(f16vec4) FAdd 4333 4332 Store 4321(texel) 4334 4335: 143 Load 145(s2D) 4336: 53(fvec2) Load 148(c2) 4337: 52(float) Load 4187(lodClamp) 4338: 7(f16vec4) ImageSampleImplicitLod 4335 4336 MinLod 4337 4339: 7(f16vec4) Load 4321(texel) 4340: 7(f16vec4) FAdd 4339 4338 Store 4321(texel) 4340 4341: 143 Load 145(s2D) 4342:154(f16vec2) Load 156(f16c2) 4343:6(float16_t) Load 4194(f16lodClamp) 4344:6(float16_t) Load 137(f16bias) 4345: 7(f16vec4) ImageSampleImplicitLod 4341 4342 Bias MinLod 4344 4343 4346: 7(f16vec4) Load 4321(texel) 4347: 7(f16vec4) FAdd 4346 4345 Store 4321(texel) 4347 4348: 163 Load 165(s3D) 4349: 167(fvec3) Load 169(c3) 4350: 52(float) Load 4187(lodClamp) 4351: 7(f16vec4) ImageSampleImplicitLod 4348 4349 MinLod 4350 4352: 7(f16vec4) Load 4321(texel) 4353: 7(f16vec4) FAdd 4352 4351 Store 4321(texel) 4353 4354: 163 Load 165(s3D) 4355:175(f16vec3) Load 177(f16c3) 4356:6(float16_t) Load 4194(f16lodClamp) 4357:6(float16_t) Load 137(f16bias) 4358: 7(f16vec4) ImageSampleImplicitLod 4354 4355 Bias MinLod 4357 4356 4359: 7(f16vec4) Load 4321(texel) 4360: 7(f16vec4) FAdd 4359 4358 Store 4321(texel) 4360 4361: 184 Load 186(sCube) 4362: 167(fvec3) Load 169(c3) 4363: 52(float) Load 4187(lodClamp) 4364: 7(f16vec4) ImageSampleImplicitLod 4361 4362 MinLod 4363 4365: 7(f16vec4) Load 4321(texel) 4366: 7(f16vec4) FAdd 4365 4364 Store 4321(texel) 4366 4367: 184 Load 186(sCube) 4368:175(f16vec3) Load 177(f16c3) 4369:6(float16_t) Load 4194(f16lodClamp) 4370:6(float16_t) Load 137(f16bias) 4371: 7(f16vec4) ImageSampleImplicitLod 4367 4368 Bias MinLod 4370 4369 4372: 7(f16vec4) Load 4321(texel) 4373: 7(f16vec4) FAdd 4372 4371 Store 4321(texel) 4373 4374: 199 Load 201(s1DShadow) 4375: 167(fvec3) Load 169(c3) 4376: 52(float) Load 4187(lodClamp) 4377: 52(float) CompositeExtract 4375 2 4378:6(float16_t) ImageSampleDrefImplicitLod 4374 4375 4377 MinLod 4376 4379: 208(ptr) AccessChain 4321(texel) 207 4380:6(float16_t) Load 4379 4381:6(float16_t) FAdd 4380 4378 4382: 208(ptr) AccessChain 4321(texel) 207 Store 4382 4381 4383: 199 Load 201(s1DShadow) 4384:154(f16vec2) Load 156(f16c2) 4385: 52(float) Load 215(compare) 4386:6(float16_t) Load 4194(f16lodClamp) 4387:6(float16_t) Load 137(f16bias) 4388:6(float16_t) ImageSampleDrefImplicitLod 4383 4384 4385 Bias MinLod 4387 4386 4389: 208(ptr) AccessChain 4321(texel) 207 4390:6(float16_t) Load 4389 4391:6(float16_t) FAdd 4390 4388 4392: 208(ptr) AccessChain 4321(texel) 207 Store 4392 4391 4393: 224 Load 226(s2DShadow) 4394: 167(fvec3) Load 169(c3) 4395: 52(float) Load 4187(lodClamp) 4396: 52(float) CompositeExtract 4394 2 4397:6(float16_t) ImageSampleDrefImplicitLod 4393 4394 4396 MinLod 4395 4398: 208(ptr) AccessChain 4321(texel) 207 4399:6(float16_t) Load 4398 4400:6(float16_t) FAdd 4399 4397 4401: 208(ptr) AccessChain 4321(texel) 207 Store 4401 4400 4402: 224 Load 226(s2DShadow) 4403:154(f16vec2) Load 156(f16c2) 4404: 52(float) Load 215(compare) 4405:6(float16_t) Load 4194(f16lodClamp) 4406:6(float16_t) Load 137(f16bias) 4407:6(float16_t) ImageSampleDrefImplicitLod 4402 4403 4404 Bias MinLod 4406 4405 4408: 208(ptr) AccessChain 4321(texel) 207 4409:6(float16_t) Load 4408 4410:6(float16_t) FAdd 4409 4407 4411: 208(ptr) AccessChain 4321(texel) 207 Store 4411 4410 4412: 245 Load 247(sCubeShadow) 4413: 249(fvec4) Load 251(c4) 4414: 52(float) Load 4187(lodClamp) 4415: 52(float) CompositeExtract 4413 3 4416:6(float16_t) ImageSampleDrefImplicitLod 4412 4413 4415 MinLod 4414 4417: 208(ptr) AccessChain 4321(texel) 207 4418:6(float16_t) Load 4417 4419:6(float16_t) FAdd 4418 4416 4420: 208(ptr) AccessChain 4321(texel) 207 Store 4420 4419 4421: 245 Load 247(sCubeShadow) 4422:175(f16vec3) Load 177(f16c3) 4423: 52(float) Load 215(compare) 4424:6(float16_t) Load 4194(f16lodClamp) 4425:6(float16_t) Load 137(f16bias) 4426:6(float16_t) ImageSampleDrefImplicitLod 4421 4422 4423 Bias MinLod 4425 4424 4427: 208(ptr) AccessChain 4321(texel) 207 4428:6(float16_t) Load 4427 4429:6(float16_t) FAdd 4428 4426 4430: 208(ptr) AccessChain 4321(texel) 207 Store 4430 4429 4431: 269 Load 271(s1DArray) 4432: 53(fvec2) Load 148(c2) 4433: 52(float) Load 4187(lodClamp) 4434: 7(f16vec4) ImageSampleImplicitLod 4431 4432 MinLod 4433 4435: 7(f16vec4) Load 4321(texel) 4436: 7(f16vec4) FAdd 4435 4434 Store 4321(texel) 4436 4437: 269 Load 271(s1DArray) 4438:154(f16vec2) Load 156(f16c2) 4439:6(float16_t) Load 4194(f16lodClamp) 4440:6(float16_t) Load 137(f16bias) 4441: 7(f16vec4) ImageSampleImplicitLod 4437 4438 Bias MinLod 4440 4439 4442: 7(f16vec4) Load 4321(texel) 4443: 7(f16vec4) FAdd 4442 4441 Store 4321(texel) 4443 4444: 284 Load 286(s2DArray) 4445: 167(fvec3) Load 169(c3) 4446: 52(float) Load 4187(lodClamp) 4447: 7(f16vec4) ImageSampleImplicitLod 4444 4445 MinLod 4446 4448: 7(f16vec4) Load 4321(texel) 4449: 7(f16vec4) FAdd 4448 4447 Store 4321(texel) 4449 4450: 284 Load 286(s2DArray) 4451:175(f16vec3) Load 177(f16c3) 4452:6(float16_t) Load 4194(f16lodClamp) 4453:6(float16_t) Load 137(f16bias) 4454: 7(f16vec4) ImageSampleImplicitLod 4450 4451 Bias MinLod 4453 4452 4455: 7(f16vec4) Load 4321(texel) 4456: 7(f16vec4) FAdd 4455 4454 Store 4321(texel) 4456 4457: 299 Load 301(sCubeArray) 4458: 249(fvec4) Load 251(c4) 4459: 52(float) Load 4187(lodClamp) 4460: 7(f16vec4) ImageSampleImplicitLod 4457 4458 MinLod 4459 4461: 7(f16vec4) Load 4321(texel) 4462: 7(f16vec4) FAdd 4461 4460 Store 4321(texel) 4462 4463: 299 Load 301(sCubeArray) 4464: 7(f16vec4) Load 309(f16c4) 4465:6(float16_t) Load 4194(f16lodClamp) 4466:6(float16_t) Load 137(f16bias) 4467: 7(f16vec4) ImageSampleImplicitLod 4463 4464 Bias MinLod 4466 4465 4468: 7(f16vec4) Load 4321(texel) 4469: 7(f16vec4) FAdd 4468 4467 Store 4321(texel) 4469 4470: 316 Load 318(s1DArrayShadow) 4471: 167(fvec3) Load 169(c3) 4472: 52(float) Load 4187(lodClamp) 4473: 52(float) CompositeExtract 4471 2 4474:6(float16_t) ImageSampleDrefImplicitLod 4470 4471 4473 MinLod 4472 4475: 208(ptr) AccessChain 4321(texel) 207 4476:6(float16_t) Load 4475 4477:6(float16_t) FAdd 4476 4474 4478: 208(ptr) AccessChain 4321(texel) 207 Store 4478 4477 4479: 316 Load 318(s1DArrayShadow) 4480:154(f16vec2) Load 156(f16c2) 4481: 52(float) Load 215(compare) 4482:6(float16_t) Load 4194(f16lodClamp) 4483:6(float16_t) Load 137(f16bias) 4484:6(float16_t) ImageSampleDrefImplicitLod 4479 4480 4481 Bias MinLod 4483 4482 4485: 208(ptr) AccessChain 4321(texel) 207 4486:6(float16_t) Load 4485 4487:6(float16_t) FAdd 4486 4484 4488: 208(ptr) AccessChain 4321(texel) 207 Store 4488 4487 4489: 337 Load 339(s2DArrayShadow) 4490: 249(fvec4) Load 251(c4) 4491: 52(float) Load 4187(lodClamp) 4492: 52(float) CompositeExtract 4490 3 4493:6(float16_t) ImageSampleDrefImplicitLod 4489 4490 4492 MinLod 4491 4494: 208(ptr) AccessChain 4321(texel) 207 4495:6(float16_t) Load 4494 4496:6(float16_t) FAdd 4495 4493 4497: 208(ptr) AccessChain 4321(texel) 207 Store 4497 4496 4498: 337 Load 339(s2DArrayShadow) 4499:175(f16vec3) Load 177(f16c3) 4500: 52(float) Load 215(compare) 4501:6(float16_t) Load 4194(f16lodClamp) 4502:6(float16_t) ImageSampleDrefImplicitLod 4498 4499 4500 MinLod 4501 4503: 208(ptr) AccessChain 4321(texel) 207 4504:6(float16_t) Load 4503 4505:6(float16_t) FAdd 4504 4502 4506: 208(ptr) AccessChain 4321(texel) 207 Store 4506 4505 4507: 391 Load 393(sCubeArrayShadow) 4508: 249(fvec4) Load 251(c4) 4509: 52(float) Load 215(compare) 4510: 52(float) Load 4187(lodClamp) 4511:6(float16_t) ImageSampleDrefImplicitLod 4507 4508 4509 MinLod 4510 4512: 208(ptr) AccessChain 4321(texel) 207 4513:6(float16_t) Load 4512 4514:6(float16_t) FAdd 4513 4511 4515: 208(ptr) AccessChain 4321(texel) 207 Store 4515 4514 4516: 391 Load 393(sCubeArrayShadow) 4517: 7(f16vec4) Load 309(f16c4) 4518: 52(float) Load 215(compare) 4519:6(float16_t) Load 4194(f16lodClamp) 4520:6(float16_t) ImageSampleDrefImplicitLod 4516 4517 4518 MinLod 4519 4521: 208(ptr) AccessChain 4321(texel) 207 4522:6(float16_t) Load 4521 4523:6(float16_t) FAdd 4522 4520 4524: 208(ptr) AccessChain 4321(texel) 207 Store 4524 4523 4525: 7(f16vec4) Load 4321(texel) ReturnValue 4525 FunctionEnd 103(testSparseTextureOffsetClamp(): 7(f16vec4) Function None 8 104: Label 4528(texel): 64(ptr) Variable Function Store 4528(texel) 121 4529: 143 Load 145(s2D) 4530: 53(fvec2) Load 148(c2) 4531: 52(float) Load 4187(lodClamp) 4532:3056(ResType) ImageSparseSampleImplicitLod 4529 4530 ConstOffset MinLod 722 4531 4533: 7(f16vec4) CompositeExtract 4532 1 Store 4528(texel) 4533 4534: 47(int) CompositeExtract 4532 0 4535: 143 Load 145(s2D) 4536:154(f16vec2) Load 156(f16c2) 4537:6(float16_t) Load 4194(f16lodClamp) 4538:6(float16_t) Load 137(f16bias) 4539:3056(ResType) ImageSparseSampleImplicitLod 4535 4536 Bias ConstOffset MinLod 4538 722 4537 4540: 7(f16vec4) CompositeExtract 4539 1 Store 4528(texel) 4540 4541: 47(int) CompositeExtract 4539 0 4542: 163 Load 165(s3D) 4543: 167(fvec3) Load 169(c3) 4544: 52(float) Load 4187(lodClamp) 4545:3056(ResType) ImageSparseSampleImplicitLod 4542 4543 ConstOffset MinLod 735 4544 4546: 7(f16vec4) CompositeExtract 4545 1 Store 4528(texel) 4546 4547: 47(int) CompositeExtract 4545 0 4548: 163 Load 165(s3D) 4549:175(f16vec3) Load 177(f16c3) 4550:6(float16_t) Load 4194(f16lodClamp) 4551:6(float16_t) Load 137(f16bias) 4552:3056(ResType) ImageSparseSampleImplicitLod 4548 4549 Bias ConstOffset MinLod 4551 735 4550 4553: 7(f16vec4) CompositeExtract 4552 1 Store 4528(texel) 4553 4554: 47(int) CompositeExtract 4552 0 4555: 224 Load 226(s2DShadow) 4556: 167(fvec3) Load 169(c3) 4557: 52(float) Load 4187(lodClamp) 4558: 208(ptr) AccessChain 4528(texel) 207 4559: 52(float) CompositeExtract 4556 2 4560:3092(ResType) ImageSparseSampleDrefImplicitLod 4555 4556 4559 ConstOffset MinLod 722 4557 4561:6(float16_t) CompositeExtract 4560 1 Store 4558 4561 4562: 47(int) CompositeExtract 4560 0 4563: 224 Load 226(s2DShadow) 4564:154(f16vec2) Load 156(f16c2) 4565: 52(float) Load 215(compare) 4566:6(float16_t) Load 4194(f16lodClamp) 4567: 208(ptr) AccessChain 4528(texel) 207 4568:6(float16_t) Load 137(f16bias) 4569:3092(ResType) ImageSparseSampleDrefImplicitLod 4563 4564 4565 Bias ConstOffset MinLod 4568 722 4566 4570:6(float16_t) CompositeExtract 4569 1 Store 4567 4570 4571: 47(int) CompositeExtract 4569 0 4572: 284 Load 286(s2DArray) 4573: 167(fvec3) Load 169(c3) 4574: 52(float) Load 4187(lodClamp) 4575:3056(ResType) ImageSparseSampleImplicitLod 4572 4573 ConstOffset MinLod 722 4574 4576: 7(f16vec4) CompositeExtract 4575 1 Store 4528(texel) 4576 4577: 47(int) CompositeExtract 4575 0 4578: 284 Load 286(s2DArray) 4579:175(f16vec3) Load 177(f16c3) 4580:6(float16_t) Load 4194(f16lodClamp) 4581:6(float16_t) Load 137(f16bias) 4582:3056(ResType) ImageSparseSampleImplicitLod 4578 4579 Bias ConstOffset MinLod 4581 722 4580 4583: 7(f16vec4) CompositeExtract 4582 1 Store 4528(texel) 4583 4584: 47(int) CompositeExtract 4582 0 4585: 337 Load 339(s2DArrayShadow) 4586: 249(fvec4) Load 251(c4) 4587: 52(float) Load 4187(lodClamp) 4588: 208(ptr) AccessChain 4528(texel) 207 4589: 52(float) CompositeExtract 4586 3 4590:3092(ResType) ImageSparseSampleDrefImplicitLod 4585 4586 4589 ConstOffset MinLod 722 4587 4591:6(float16_t) CompositeExtract 4590 1 Store 4588 4591 4592: 47(int) CompositeExtract 4590 0 4593: 337 Load 339(s2DArrayShadow) 4594:175(f16vec3) Load 177(f16c3) 4595: 52(float) Load 215(compare) 4596:6(float16_t) Load 4194(f16lodClamp) 4597: 208(ptr) AccessChain 4528(texel) 207 4598:3092(ResType) ImageSparseSampleDrefImplicitLod 4593 4594 4595 ConstOffset MinLod 722 4596 4599:6(float16_t) CompositeExtract 4598 1 Store 4597 4599 4600: 47(int) CompositeExtract 4598 0 4601: 7(f16vec4) Load 4528(texel) ReturnValue 4601 FunctionEnd 105(testTextureOffsetClamp(): 7(f16vec4) Function None 8 106: Label 4604(texel): 64(ptr) Variable Function Store 4604(texel) 121 4605: 123 Load 125(s1D) 4606: 52(float) Load 128(c1) 4607: 52(float) Load 4187(lodClamp) 4608: 7(f16vec4) ImageSampleImplicitLod 4605 4606 ConstOffset MinLod 709 4607 4609: 7(f16vec4) Load 4604(texel) 4610: 7(f16vec4) FAdd 4609 4608 Store 4604(texel) 4610 4611: 123 Load 125(s1D) 4612:6(float16_t) Load 135(f16c1) 4613:6(float16_t) Load 4194(f16lodClamp) 4614:6(float16_t) Load 137(f16bias) 4615: 7(f16vec4) ImageSampleImplicitLod 4611 4612 Bias ConstOffset MinLod 4614 709 4613 4616: 7(f16vec4) Load 4604(texel) 4617: 7(f16vec4) FAdd 4616 4615 Store 4604(texel) 4617 4618: 143 Load 145(s2D) 4619: 53(fvec2) Load 148(c2) 4620: 52(float) Load 4187(lodClamp) 4621: 7(f16vec4) ImageSampleImplicitLod 4618 4619 ConstOffset MinLod 722 4620 4622: 7(f16vec4) Load 4604(texel) 4623: 7(f16vec4) FAdd 4622 4621 Store 4604(texel) 4623 4624: 143 Load 145(s2D) 4625:154(f16vec2) Load 156(f16c2) 4626:6(float16_t) Load 4194(f16lodClamp) 4627:6(float16_t) Load 137(f16bias) 4628: 7(f16vec4) ImageSampleImplicitLod 4624 4625 Bias ConstOffset MinLod 4627 722 4626 4629: 7(f16vec4) Load 4604(texel) 4630: 7(f16vec4) FAdd 4629 4628 Store 4604(texel) 4630 4631: 163 Load 165(s3D) 4632: 167(fvec3) Load 169(c3) 4633: 52(float) Load 4187(lodClamp) 4634: 7(f16vec4) ImageSampleImplicitLod 4631 4632 ConstOffset MinLod 735 4633 4635: 7(f16vec4) Load 4604(texel) 4636: 7(f16vec4) FAdd 4635 4634 Store 4604(texel) 4636 4637: 163 Load 165(s3D) 4638:175(f16vec3) Load 177(f16c3) 4639:6(float16_t) Load 4194(f16lodClamp) 4640:6(float16_t) Load 137(f16bias) 4641: 7(f16vec4) ImageSampleImplicitLod 4637 4638 Bias ConstOffset MinLod 4640 735 4639 4642: 7(f16vec4) Load 4604(texel) 4643: 7(f16vec4) FAdd 4642 4641 Store 4604(texel) 4643 4644: 199 Load 201(s1DShadow) 4645: 167(fvec3) Load 169(c3) 4646: 52(float) Load 4187(lodClamp) 4647: 52(float) CompositeExtract 4645 2 4648:6(float16_t) ImageSampleDrefImplicitLod 4644 4645 4647 ConstOffset MinLod 709 4646 4649: 208(ptr) AccessChain 4604(texel) 207 4650:6(float16_t) Load 4649 4651:6(float16_t) FAdd 4650 4648 4652: 208(ptr) AccessChain 4604(texel) 207 Store 4652 4651 4653: 199 Load 201(s1DShadow) 4654:154(f16vec2) Load 156(f16c2) 4655: 52(float) Load 215(compare) 4656:6(float16_t) Load 4194(f16lodClamp) 4657:6(float16_t) Load 137(f16bias) 4658:6(float16_t) ImageSampleDrefImplicitLod 4653 4654 4655 Bias ConstOffset MinLod 4657 709 4656 4659: 208(ptr) AccessChain 4604(texel) 207 4660:6(float16_t) Load 4659 4661:6(float16_t) FAdd 4660 4658 4662: 208(ptr) AccessChain 4604(texel) 207 Store 4662 4661 4663: 224 Load 226(s2DShadow) 4664: 167(fvec3) Load 169(c3) 4665: 52(float) Load 4187(lodClamp) 4666: 52(float) CompositeExtract 4664 2 4667:6(float16_t) ImageSampleDrefImplicitLod 4663 4664 4666 ConstOffset MinLod 722 4665 4668: 208(ptr) AccessChain 4604(texel) 207 4669:6(float16_t) Load 4668 4670:6(float16_t) FAdd 4669 4667 4671: 208(ptr) AccessChain 4604(texel) 207 Store 4671 4670 4672: 224 Load 226(s2DShadow) 4673:154(f16vec2) Load 156(f16c2) 4674: 52(float) Load 215(compare) 4675:6(float16_t) Load 4194(f16lodClamp) 4676:6(float16_t) Load 137(f16bias) 4677:6(float16_t) ImageSampleDrefImplicitLod 4672 4673 4674 Bias ConstOffset MinLod 4676 722 4675 4678: 208(ptr) AccessChain 4604(texel) 207 4679:6(float16_t) Load 4678 4680:6(float16_t) FAdd 4679 4677 4681: 208(ptr) AccessChain 4604(texel) 207 Store 4681 4680 4682: 269 Load 271(s1DArray) 4683: 53(fvec2) Load 148(c2) 4684: 52(float) Load 4187(lodClamp) 4685: 7(f16vec4) ImageSampleImplicitLod 4682 4683 ConstOffset MinLod 709 4684 4686: 7(f16vec4) Load 4604(texel) 4687: 7(f16vec4) FAdd 4686 4685 Store 4604(texel) 4687 4688: 269 Load 271(s1DArray) 4689:154(f16vec2) Load 156(f16c2) 4690:6(float16_t) Load 4194(f16lodClamp) 4691:6(float16_t) Load 137(f16bias) 4692: 7(f16vec4) ImageSampleImplicitLod 4688 4689 Bias ConstOffset MinLod 4691 709 4690 4693: 7(f16vec4) Load 4604(texel) 4694: 7(f16vec4) FAdd 4693 4692 Store 4604(texel) 4694 4695: 284 Load 286(s2DArray) 4696: 167(fvec3) Load 169(c3) 4697: 52(float) Load 4187(lodClamp) 4698: 7(f16vec4) ImageSampleImplicitLod 4695 4696 ConstOffset MinLod 722 4697 4699: 7(f16vec4) Load 4604(texel) 4700: 7(f16vec4) FAdd 4699 4698 Store 4604(texel) 4700 4701: 284 Load 286(s2DArray) 4702:175(f16vec3) Load 177(f16c3) 4703:6(float16_t) Load 4194(f16lodClamp) 4704:6(float16_t) Load 137(f16bias) 4705: 7(f16vec4) ImageSampleImplicitLod 4701 4702 Bias ConstOffset MinLod 4704 722 4703 4706: 7(f16vec4) Load 4604(texel) 4707: 7(f16vec4) FAdd 4706 4705 Store 4604(texel) 4707 4708: 316 Load 318(s1DArrayShadow) 4709: 167(fvec3) Load 169(c3) 4710: 52(float) Load 4187(lodClamp) 4711: 52(float) CompositeExtract 4709 2 4712:6(float16_t) ImageSampleDrefImplicitLod 4708 4709 4711 ConstOffset MinLod 709 4710 4713: 208(ptr) AccessChain 4604(texel) 207 4714:6(float16_t) Load 4713 4715:6(float16_t) FAdd 4714 4712 4716: 208(ptr) AccessChain 4604(texel) 207 Store 4716 4715 4717: 316 Load 318(s1DArrayShadow) 4718:154(f16vec2) Load 156(f16c2) 4719: 52(float) Load 215(compare) 4720:6(float16_t) Load 4194(f16lodClamp) 4721:6(float16_t) Load 137(f16bias) 4722:6(float16_t) ImageSampleDrefImplicitLod 4717 4718 4719 Bias ConstOffset MinLod 4721 709 4720 4723: 208(ptr) AccessChain 4604(texel) 207 4724:6(float16_t) Load 4723 4725:6(float16_t) FAdd 4724 4722 4726: 208(ptr) AccessChain 4604(texel) 207 Store 4726 4725 4727: 337 Load 339(s2DArrayShadow) 4728: 249(fvec4) Load 251(c4) 4729: 52(float) Load 4187(lodClamp) 4730: 52(float) CompositeExtract 4728 3 4731:6(float16_t) ImageSampleDrefImplicitLod 4727 4728 4730 ConstOffset MinLod 722 4729 4732: 208(ptr) AccessChain 4604(texel) 207 4733:6(float16_t) Load 4732 4734:6(float16_t) FAdd 4733 4731 4735: 208(ptr) AccessChain 4604(texel) 207 Store 4735 4734 4736: 337 Load 339(s2DArrayShadow) 4737:175(f16vec3) Load 177(f16c3) 4738: 52(float) Load 215(compare) 4739:6(float16_t) Load 4194(f16lodClamp) 4740:6(float16_t) ImageSampleDrefImplicitLod 4736 4737 4738 ConstOffset MinLod 722 4739 4741: 208(ptr) AccessChain 4604(texel) 207 4742:6(float16_t) Load 4741 4743:6(float16_t) FAdd 4742 4740 4744: 208(ptr) AccessChain 4604(texel) 207 Store 4744 4743 4745: 7(f16vec4) Load 4604(texel) ReturnValue 4745 FunctionEnd 107(testSparseTextureGradClamp(): 7(f16vec4) Function None 8 108: Label 4748(texel): 64(ptr) Variable Function Store 4748(texel) 121 4749: 143 Load 145(s2D) 4750: 53(fvec2) Load 148(c2) 4751: 53(fvec2) Load 1407(dPdxy2) 4752: 52(float) Load 4187(lodClamp) 4753:3056(ResType) ImageSparseSampleExplicitLod 4749 4750 Grad MinLod 4751 4751 4752 4754: 7(f16vec4) CompositeExtract 4753 1 Store 4748(texel) 4754 4755: 47(int) CompositeExtract 4753 0 4756: 143 Load 145(s2D) 4757:154(f16vec2) Load 156(f16c2) 4758:154(f16vec2) Load 1414(f16dPdxy2) 4759:6(float16_t) Load 4194(f16lodClamp) 4760:3056(ResType) ImageSparseSampleExplicitLod 4756 4757 Grad MinLod 4758 4758 4759 4761: 7(f16vec4) CompositeExtract 4760 1 Store 4748(texel) 4761 4762: 47(int) CompositeExtract 4760 0 4763: 163 Load 165(s3D) 4764: 167(fvec3) Load 169(c3) 4765: 167(fvec3) Load 1421(dPdxy3) 4766: 52(float) Load 4187(lodClamp) 4767:3056(ResType) ImageSparseSampleExplicitLod 4763 4764 Grad MinLod 4765 4765 4766 4768: 7(f16vec4) CompositeExtract 4767 1 Store 4748(texel) 4768 4769: 47(int) CompositeExtract 4767 0 4770: 163 Load 165(s3D) 4771:175(f16vec3) Load 177(f16c3) 4772:175(f16vec3) Load 1428(f16dPdxy3) 4773:6(float16_t) Load 4194(f16lodClamp) 4774:3056(ResType) ImageSparseSampleExplicitLod 4770 4771 Grad MinLod 4772 4772 4773 4775: 7(f16vec4) CompositeExtract 4774 1 Store 4748(texel) 4775 4776: 47(int) CompositeExtract 4774 0 4777: 184 Load 186(sCube) 4778: 167(fvec3) Load 169(c3) 4779: 167(fvec3) Load 1421(dPdxy3) 4780: 52(float) Load 4187(lodClamp) 4781:3056(ResType) ImageSparseSampleExplicitLod 4777 4778 Grad MinLod 4779 4779 4780 4782: 7(f16vec4) CompositeExtract 4781 1 Store 4748(texel) 4782 4783: 47(int) CompositeExtract 4781 0 4784: 184 Load 186(sCube) 4785:175(f16vec3) Load 177(f16c3) 4786:175(f16vec3) Load 1428(f16dPdxy3) 4787:6(float16_t) Load 4194(f16lodClamp) 4788:3056(ResType) ImageSparseSampleExplicitLod 4784 4785 Grad MinLod 4786 4786 4787 4789: 7(f16vec4) CompositeExtract 4788 1 Store 4748(texel) 4789 4790: 47(int) CompositeExtract 4788 0 4791: 224 Load 226(s2DShadow) 4792: 167(fvec3) Load 169(c3) 4793: 53(fvec2) Load 1407(dPdxy2) 4794: 52(float) Load 4187(lodClamp) 4795: 208(ptr) AccessChain 4748(texel) 207 4796: 52(float) CompositeExtract 4792 2 4797:3092(ResType) ImageSparseSampleDrefExplicitLod 4791 4792 4796 Grad MinLod 4793 4793 4794 4798:6(float16_t) CompositeExtract 4797 1 Store 4795 4798 4799: 47(int) CompositeExtract 4797 0 4800: 224 Load 226(s2DShadow) 4801:154(f16vec2) Load 156(f16c2) 4802: 52(float) Load 215(compare) 4803:154(f16vec2) Load 1414(f16dPdxy2) 4804:6(float16_t) Load 4194(f16lodClamp) 4805: 208(ptr) AccessChain 4748(texel) 207 4806:3092(ResType) ImageSparseSampleDrefExplicitLod 4800 4801 4802 Grad MinLod 4803 4803 4804 4807:6(float16_t) CompositeExtract 4806 1 Store 4805 4807 4808: 47(int) CompositeExtract 4806 0 4809: 245 Load 247(sCubeShadow) 4810: 249(fvec4) Load 251(c4) 4811: 167(fvec3) Load 1421(dPdxy3) 4812: 52(float) Load 4187(lodClamp) 4813: 208(ptr) AccessChain 4748(texel) 207 4814: 52(float) CompositeExtract 4810 3 4815:3092(ResType) ImageSparseSampleDrefExplicitLod 4809 4810 4814 Grad MinLod 4811 4811 4812 4816:6(float16_t) CompositeExtract 4815 1 Store 4813 4816 4817: 47(int) CompositeExtract 4815 0 4818: 245 Load 247(sCubeShadow) 4819:175(f16vec3) Load 177(f16c3) 4820: 52(float) Load 215(compare) 4821:175(f16vec3) Load 1428(f16dPdxy3) 4822:6(float16_t) Load 4194(f16lodClamp) 4823: 208(ptr) AccessChain 4748(texel) 207 4824:3092(ResType) ImageSparseSampleDrefExplicitLod 4818 4819 4820 Grad MinLod 4821 4821 4822 4825:6(float16_t) CompositeExtract 4824 1 Store 4823 4825 4826: 47(int) CompositeExtract 4824 0 4827: 284 Load 286(s2DArray) 4828: 167(fvec3) Load 169(c3) 4829: 53(fvec2) Load 1407(dPdxy2) 4830: 52(float) Load 4187(lodClamp) 4831:3056(ResType) ImageSparseSampleExplicitLod 4827 4828 Grad MinLod 4829 4829 4830 4832: 7(f16vec4) CompositeExtract 4831 1 Store 4748(texel) 4832 4833: 47(int) CompositeExtract 4831 0 4834: 284 Load 286(s2DArray) 4835:175(f16vec3) Load 177(f16c3) 4836:154(f16vec2) Load 1414(f16dPdxy2) 4837:6(float16_t) Load 4194(f16lodClamp) 4838:3056(ResType) ImageSparseSampleExplicitLod 4834 4835 Grad MinLod 4836 4836 4837 4839: 7(f16vec4) CompositeExtract 4838 1 Store 4748(texel) 4839 4840: 47(int) CompositeExtract 4838 0 4841: 337 Load 339(s2DArrayShadow) 4842: 249(fvec4) Load 251(c4) 4843: 53(fvec2) Load 1407(dPdxy2) 4844: 52(float) Load 4187(lodClamp) 4845: 208(ptr) AccessChain 4748(texel) 207 4846: 52(float) CompositeExtract 4842 3 4847:3092(ResType) ImageSparseSampleDrefExplicitLod 4841 4842 4846 Grad MinLod 4843 4843 4844 4848:6(float16_t) CompositeExtract 4847 1 Store 4845 4848 4849: 47(int) CompositeExtract 4847 0 4850: 337 Load 339(s2DArrayShadow) 4851:175(f16vec3) Load 177(f16c3) 4852: 52(float) Load 215(compare) 4853:154(f16vec2) Load 1414(f16dPdxy2) 4854:6(float16_t) Load 4194(f16lodClamp) 4855: 208(ptr) AccessChain 4748(texel) 207 4856:3092(ResType) ImageSparseSampleDrefExplicitLod 4850 4851 4852 Grad MinLod 4853 4853 4854 4857:6(float16_t) CompositeExtract 4856 1 Store 4855 4857 4858: 47(int) CompositeExtract 4856 0 4859: 299 Load 301(sCubeArray) 4860: 249(fvec4) Load 251(c4) 4861: 167(fvec3) Load 1421(dPdxy3) 4862: 52(float) Load 4187(lodClamp) 4863:3056(ResType) ImageSparseSampleExplicitLod 4859 4860 Grad MinLod 4861 4861 4862 4864: 7(f16vec4) CompositeExtract 4863 1 Store 4748(texel) 4864 4865: 47(int) CompositeExtract 4863 0 4866: 299 Load 301(sCubeArray) 4867: 7(f16vec4) Load 309(f16c4) 4868:175(f16vec3) Load 1428(f16dPdxy3) 4869:6(float16_t) Load 4194(f16lodClamp) 4870:3056(ResType) ImageSparseSampleExplicitLod 4866 4867 Grad MinLod 4868 4868 4869 4871: 7(f16vec4) CompositeExtract 4870 1 Store 4748(texel) 4871 4872: 47(int) CompositeExtract 4870 0 4873: 7(f16vec4) Load 4748(texel) ReturnValue 4873 FunctionEnd 109(testTextureGradClamp(): 7(f16vec4) Function None 8 110: Label 4876(texel): 64(ptr) Variable Function Store 4876(texel) 121 4877: 123 Load 125(s1D) 4878: 52(float) Load 128(c1) 4879: 52(float) Load 1393(dPdxy1) 4880: 52(float) Load 4187(lodClamp) 4881: 7(f16vec4) ImageSampleExplicitLod 4877 4878 Grad MinLod 4879 4879 4880 4882: 7(f16vec4) Load 4876(texel) 4883: 7(f16vec4) FAdd 4882 4881 Store 4876(texel) 4883 4884: 123 Load 125(s1D) 4885:6(float16_t) Load 135(f16c1) 4886:6(float16_t) Load 1400(f16dPdxy1) 4887:6(float16_t) Load 4194(f16lodClamp) 4888: 7(f16vec4) ImageSampleExplicitLod 4884 4885 Grad MinLod 4886 4886 4887 4889: 7(f16vec4) Load 4876(texel) 4890: 7(f16vec4) FAdd 4889 4888 Store 4876(texel) 4890 4891: 143 Load 145(s2D) 4892: 53(fvec2) Load 148(c2) 4893: 53(fvec2) Load 1407(dPdxy2) 4894: 52(float) Load 4187(lodClamp) 4895: 7(f16vec4) ImageSampleExplicitLod 4891 4892 Grad MinLod 4893 4893 4894 4896: 7(f16vec4) Load 4876(texel) 4897: 7(f16vec4) FAdd 4896 4895 Store 4876(texel) 4897 4898: 143 Load 145(s2D) 4899:154(f16vec2) Load 156(f16c2) 4900:154(f16vec2) Load 1414(f16dPdxy2) 4901:6(float16_t) Load 4194(f16lodClamp) 4902: 7(f16vec4) ImageSampleExplicitLod 4898 4899 Grad MinLod 4900 4900 4901 4903: 7(f16vec4) Load 4876(texel) 4904: 7(f16vec4) FAdd 4903 4902 Store 4876(texel) 4904 4905: 163 Load 165(s3D) 4906: 167(fvec3) Load 169(c3) 4907: 167(fvec3) Load 1421(dPdxy3) 4908: 52(float) Load 4187(lodClamp) 4909: 7(f16vec4) ImageSampleExplicitLod 4905 4906 Grad MinLod 4907 4907 4908 4910: 7(f16vec4) Load 4876(texel) 4911: 7(f16vec4) FAdd 4910 4909 Store 4876(texel) 4911 4912: 163 Load 165(s3D) 4913:175(f16vec3) Load 177(f16c3) 4914:175(f16vec3) Load 1428(f16dPdxy3) 4915:6(float16_t) Load 4194(f16lodClamp) 4916: 7(f16vec4) ImageSampleExplicitLod 4912 4913 Grad MinLod 4914 4914 4915 4917: 7(f16vec4) Load 4876(texel) 4918: 7(f16vec4) FAdd 4917 4916 Store 4876(texel) 4918 4919: 184 Load 186(sCube) 4920: 167(fvec3) Load 169(c3) 4921: 167(fvec3) Load 1421(dPdxy3) 4922: 52(float) Load 4187(lodClamp) 4923: 7(f16vec4) ImageSampleExplicitLod 4919 4920 Grad MinLod 4921 4921 4922 4924: 7(f16vec4) Load 4876(texel) 4925: 7(f16vec4) FAdd 4924 4923 Store 4876(texel) 4925 4926: 184 Load 186(sCube) 4927:175(f16vec3) Load 177(f16c3) 4928:175(f16vec3) Load 1428(f16dPdxy3) 4929:6(float16_t) Load 4194(f16lodClamp) 4930: 7(f16vec4) ImageSampleExplicitLod 4926 4927 Grad MinLod 4928 4928 4929 4931: 7(f16vec4) Load 4876(texel) 4932: 7(f16vec4) FAdd 4931 4930 Store 4876(texel) 4932 4933: 199 Load 201(s1DShadow) 4934: 167(fvec3) Load 169(c3) 4935: 52(float) Load 1393(dPdxy1) 4936: 52(float) Load 4187(lodClamp) 4937: 52(float) CompositeExtract 4934 2 4938:6(float16_t) ImageSampleDrefExplicitLod 4933 4934 4937 Grad MinLod 4935 4935 4936 4939: 208(ptr) AccessChain 4876(texel) 207 4940:6(float16_t) Load 4939 4941:6(float16_t) FAdd 4940 4938 4942: 208(ptr) AccessChain 4876(texel) 207 Store 4942 4941 4943: 199 Load 201(s1DShadow) 4944:154(f16vec2) Load 156(f16c2) 4945: 52(float) Load 215(compare) 4946:6(float16_t) Load 1400(f16dPdxy1) 4947:6(float16_t) Load 4194(f16lodClamp) 4948:6(float16_t) ImageSampleDrefExplicitLod 4943 4944 4945 Grad MinLod 4946 4946 4947 4949: 208(ptr) AccessChain 4876(texel) 207 4950:6(float16_t) Load 4949 4951:6(float16_t) FAdd 4950 4948 4952: 208(ptr) AccessChain 4876(texel) 207 Store 4952 4951 4953: 224 Load 226(s2DShadow) 4954: 167(fvec3) Load 169(c3) 4955: 53(fvec2) Load 1407(dPdxy2) 4956: 52(float) Load 4187(lodClamp) 4957: 52(float) CompositeExtract 4954 2 4958:6(float16_t) ImageSampleDrefExplicitLod 4953 4954 4957 Grad MinLod 4955 4955 4956 4959: 208(ptr) AccessChain 4876(texel) 207 4960:6(float16_t) Load 4959 4961:6(float16_t) FAdd 4960 4958 4962: 208(ptr) AccessChain 4876(texel) 207 Store 4962 4961 4963: 224 Load 226(s2DShadow) 4964:154(f16vec2) Load 156(f16c2) 4965: 52(float) Load 215(compare) 4966:154(f16vec2) Load 1414(f16dPdxy2) 4967:6(float16_t) Load 4194(f16lodClamp) 4968:6(float16_t) ImageSampleDrefExplicitLod 4963 4964 4965 Grad MinLod 4966 4966 4967 4969: 208(ptr) AccessChain 4876(texel) 207 4970:6(float16_t) Load 4969 4971:6(float16_t) FAdd 4970 4968 4972: 208(ptr) AccessChain 4876(texel) 207 Store 4972 4971 4973: 245 Load 247(sCubeShadow) 4974: 249(fvec4) Load 251(c4) 4975: 167(fvec3) Load 1421(dPdxy3) 4976: 52(float) Load 4187(lodClamp) 4977: 52(float) CompositeExtract 4974 3 4978:6(float16_t) ImageSampleDrefExplicitLod 4973 4974 4977 Grad MinLod 4975 4975 4976 4979: 208(ptr) AccessChain 4876(texel) 207 4980:6(float16_t) Load 4979 4981:6(float16_t) FAdd 4980 4978 4982: 208(ptr) AccessChain 4876(texel) 207 Store 4982 4981 4983: 245 Load 247(sCubeShadow) 4984:175(f16vec3) Load 177(f16c3) 4985: 52(float) Load 215(compare) 4986:175(f16vec3) Load 1428(f16dPdxy3) 4987:6(float16_t) Load 4194(f16lodClamp) 4988:6(float16_t) ImageSampleDrefExplicitLod 4983 4984 4985 Grad MinLod 4986 4986 4987 4989: 208(ptr) AccessChain 4876(texel) 207 4990:6(float16_t) Load 4989 4991:6(float16_t) FAdd 4990 4988 4992: 208(ptr) AccessChain 4876(texel) 207 Store 4992 4991 4993: 269 Load 271(s1DArray) 4994: 53(fvec2) Load 148(c2) 4995: 52(float) Load 1393(dPdxy1) 4996: 52(float) Load 4187(lodClamp) 4997: 7(f16vec4) ImageSampleExplicitLod 4993 4994 Grad MinLod 4995 4995 4996 4998: 7(f16vec4) Load 4876(texel) 4999: 7(f16vec4) FAdd 4998 4997 Store 4876(texel) 4999 5000: 269 Load 271(s1DArray) 5001:154(f16vec2) Load 156(f16c2) 5002:6(float16_t) Load 1400(f16dPdxy1) 5003:6(float16_t) Load 4194(f16lodClamp) 5004: 7(f16vec4) ImageSampleExplicitLod 5000 5001 Grad MinLod 5002 5002 5003 5005: 7(f16vec4) Load 4876(texel) 5006: 7(f16vec4) FAdd 5005 5004 Store 4876(texel) 5006 5007: 284 Load 286(s2DArray) 5008: 167(fvec3) Load 169(c3) 5009: 53(fvec2) Load 1407(dPdxy2) 5010: 52(float) Load 4187(lodClamp) 5011: 7(f16vec4) ImageSampleExplicitLod 5007 5008 Grad MinLod 5009 5009 5010 5012: 7(f16vec4) Load 4876(texel) 5013: 7(f16vec4) FAdd 5012 5011 Store 4876(texel) 5013 5014: 284 Load 286(s2DArray) 5015:175(f16vec3) Load 177(f16c3) 5016:154(f16vec2) Load 1414(f16dPdxy2) 5017:6(float16_t) Load 4194(f16lodClamp) 5018: 7(f16vec4) ImageSampleExplicitLod 5014 5015 Grad MinLod 5016 5016 5017 5019: 7(f16vec4) Load 4876(texel) 5020: 7(f16vec4) FAdd 5019 5018 Store 4876(texel) 5020 5021: 316 Load 318(s1DArrayShadow) 5022: 167(fvec3) Load 169(c3) 5023: 52(float) Load 1393(dPdxy1) 5024: 52(float) Load 4187(lodClamp) 5025: 52(float) CompositeExtract 5022 2 5026:6(float16_t) ImageSampleDrefExplicitLod 5021 5022 5025 Grad MinLod 5023 5023 5024 5027: 208(ptr) AccessChain 4876(texel) 207 5028:6(float16_t) Load 5027 5029:6(float16_t) FAdd 5028 5026 5030: 208(ptr) AccessChain 4876(texel) 207 Store 5030 5029 5031: 316 Load 318(s1DArrayShadow) 5032:154(f16vec2) Load 156(f16c2) 5033: 52(float) Load 215(compare) 5034:6(float16_t) Load 1400(f16dPdxy1) 5035:6(float16_t) Load 4194(f16lodClamp) 5036:6(float16_t) ImageSampleDrefExplicitLod 5031 5032 5033 Grad MinLod 5034 5034 5035 5037: 208(ptr) AccessChain 4876(texel) 207 5038:6(float16_t) Load 5037 5039:6(float16_t) FAdd 5038 5036 5040: 208(ptr) AccessChain 4876(texel) 207 Store 5040 5039 5041: 337 Load 339(s2DArrayShadow) 5042: 249(fvec4) Load 251(c4) 5043: 53(fvec2) Load 1407(dPdxy2) 5044: 52(float) Load 4187(lodClamp) 5045: 52(float) CompositeExtract 5042 3 5046:6(float16_t) ImageSampleDrefExplicitLod 5041 5042 5045 Grad MinLod 5043 5043 5044 5047: 208(ptr) AccessChain 4876(texel) 207 5048:6(float16_t) Load 5047 5049:6(float16_t) FAdd 5048 5046 5050: 208(ptr) AccessChain 4876(texel) 207 Store 5050 5049 5051: 337 Load 339(s2DArrayShadow) 5052:175(f16vec3) Load 177(f16c3) 5053: 52(float) Load 215(compare) 5054:154(f16vec2) Load 1414(f16dPdxy2) 5055:6(float16_t) Load 4194(f16lodClamp) 5056:6(float16_t) ImageSampleDrefExplicitLod 5051 5052 5053 Grad MinLod 5054 5054 5055 5057: 208(ptr) AccessChain 4876(texel) 207 5058:6(float16_t) Load 5057 5059:6(float16_t) FAdd 5058 5056 5060: 208(ptr) AccessChain 4876(texel) 207 Store 5060 5059 5061: 299 Load 301(sCubeArray) 5062: 249(fvec4) Load 251(c4) 5063: 167(fvec3) Load 1421(dPdxy3) 5064: 52(float) Load 4187(lodClamp) 5065: 7(f16vec4) ImageSampleExplicitLod 5061 5062 Grad MinLod 5063 5063 5064 5066: 7(f16vec4) Load 4876(texel) 5067: 7(f16vec4) FAdd 5066 5065 Store 4876(texel) 5067 5068: 299 Load 301(sCubeArray) 5069: 7(f16vec4) Load 309(f16c4) 5070:175(f16vec3) Load 1428(f16dPdxy3) 5071:6(float16_t) Load 4194(f16lodClamp) 5072: 7(f16vec4) ImageSampleExplicitLod 5068 5069 Grad MinLod 5070 5070 5071 5073: 7(f16vec4) Load 4876(texel) 5074: 7(f16vec4) FAdd 5073 5072 Store 4876(texel) 5074 5075: 7(f16vec4) Load 4876(texel) ReturnValue 5075 FunctionEnd 111(testSparseTextureGradOffsetClamp(): 7(f16vec4) Function None 8 112: Label 5078(texel): 64(ptr) Variable Function Store 5078(texel) 121 5079: 143 Load 145(s2D) 5080: 53(fvec2) Load 148(c2) 5081: 53(fvec2) Load 1407(dPdxy2) 5082: 52(float) Load 4187(lodClamp) 5083:3056(ResType) ImageSparseSampleExplicitLod 5079 5080 Grad ConstOffset MinLod 5081 5081 722 5082 5084: 7(f16vec4) CompositeExtract 5083 1 Store 5078(texel) 5084 5085: 47(int) CompositeExtract 5083 0 5086: 143 Load 145(s2D) 5087:154(f16vec2) Load 156(f16c2) 5088:154(f16vec2) Load 1414(f16dPdxy2) 5089:6(float16_t) Load 4194(f16lodClamp) 5090:3056(ResType) ImageSparseSampleExplicitLod 5086 5087 Grad ConstOffset MinLod 5088 5088 722 5089 5091: 7(f16vec4) CompositeExtract 5090 1 Store 5078(texel) 5091 5092: 47(int) CompositeExtract 5090 0 5093: 163 Load 165(s3D) 5094: 167(fvec3) Load 169(c3) 5095: 167(fvec3) Load 1421(dPdxy3) 5096: 52(float) Load 4187(lodClamp) 5097:3056(ResType) ImageSparseSampleExplicitLod 5093 5094 Grad ConstOffset MinLod 5095 5095 735 5096 5098: 7(f16vec4) CompositeExtract 5097 1 Store 5078(texel) 5098 5099: 47(int) CompositeExtract 5097 0 5100: 163 Load 165(s3D) 5101:175(f16vec3) Load 177(f16c3) 5102:175(f16vec3) Load 1428(f16dPdxy3) 5103:6(float16_t) Load 4194(f16lodClamp) 5104:3056(ResType) ImageSparseSampleExplicitLod 5100 5101 Grad ConstOffset MinLod 5102 5102 735 5103 5105: 7(f16vec4) CompositeExtract 5104 1 Store 5078(texel) 5105 5106: 47(int) CompositeExtract 5104 0 5107: 224 Load 226(s2DShadow) 5108: 167(fvec3) Load 169(c3) 5109: 53(fvec2) Load 1407(dPdxy2) 5110: 52(float) Load 4187(lodClamp) 5111: 208(ptr) AccessChain 5078(texel) 207 5112: 52(float) CompositeExtract 5108 2 5113:3092(ResType) ImageSparseSampleDrefExplicitLod 5107 5108 5112 Grad ConstOffset MinLod 5109 5109 722 5110 5114:6(float16_t) CompositeExtract 5113 1 Store 5111 5114 5115: 47(int) CompositeExtract 5113 0 5116: 224 Load 226(s2DShadow) 5117:154(f16vec2) Load 156(f16c2) 5118: 52(float) Load 215(compare) 5119:154(f16vec2) Load 1414(f16dPdxy2) 5120:6(float16_t) Load 4194(f16lodClamp) 5121: 208(ptr) AccessChain 5078(texel) 207 5122:3092(ResType) ImageSparseSampleDrefExplicitLod 5116 5117 5118 Grad ConstOffset MinLod 5119 5119 722 5120 5123:6(float16_t) CompositeExtract 5122 1 Store 5121 5123 5124: 47(int) CompositeExtract 5122 0 5125: 284 Load 286(s2DArray) 5126: 167(fvec3) Load 169(c3) 5127: 53(fvec2) Load 1407(dPdxy2) 5128: 52(float) Load 4187(lodClamp) 5129:3056(ResType) ImageSparseSampleExplicitLod 5125 5126 Grad ConstOffset MinLod 5127 5127 722 5128 5130: 7(f16vec4) CompositeExtract 5129 1 Store 5078(texel) 5130 5131: 47(int) CompositeExtract 5129 0 5132: 284 Load 286(s2DArray) 5133:175(f16vec3) Load 177(f16c3) 5134:154(f16vec2) Load 1414(f16dPdxy2) 5135:6(float16_t) Load 4194(f16lodClamp) 5136:3056(ResType) ImageSparseSampleExplicitLod 5132 5133 Grad ConstOffset MinLod 5134 5134 722 5135 5137: 7(f16vec4) CompositeExtract 5136 1 Store 5078(texel) 5137 5138: 47(int) CompositeExtract 5136 0 5139: 337 Load 339(s2DArrayShadow) 5140: 249(fvec4) Load 251(c4) 5141: 53(fvec2) Load 1407(dPdxy2) 5142: 52(float) Load 4187(lodClamp) 5143: 208(ptr) AccessChain 5078(texel) 207 5144: 52(float) CompositeExtract 5140 3 5145:3092(ResType) ImageSparseSampleDrefExplicitLod 5139 5140 5144 Grad ConstOffset MinLod 5141 5141 722 5142 5146:6(float16_t) CompositeExtract 5145 1 Store 5143 5146 5147: 47(int) CompositeExtract 5145 0 5148: 337 Load 339(s2DArrayShadow) 5149:175(f16vec3) Load 177(f16c3) 5150: 52(float) Load 215(compare) 5151:154(f16vec2) Load 1414(f16dPdxy2) 5152:6(float16_t) Load 4194(f16lodClamp) 5153: 208(ptr) AccessChain 5078(texel) 207 5154:3092(ResType) ImageSparseSampleDrefExplicitLod 5148 5149 5150 Grad ConstOffset MinLod 5151 5151 722 5152 5155:6(float16_t) CompositeExtract 5154 1 Store 5153 5155 5156: 47(int) CompositeExtract 5154 0 5157: 7(f16vec4) Load 5078(texel) ReturnValue 5157 FunctionEnd 113(testTextureGradOffsetClamp(): 7(f16vec4) Function None 8 114: Label 5160(texel): 64(ptr) Variable Function Store 5160(texel) 121 5161: 123 Load 125(s1D) 5162: 52(float) Load 128(c1) 5163: 52(float) Load 1393(dPdxy1) 5164: 52(float) Load 4187(lodClamp) 5165: 7(f16vec4) ImageSampleExplicitLod 5161 5162 Grad ConstOffset MinLod 5163 5163 709 5164 5166: 7(f16vec4) Load 5160(texel) 5167: 7(f16vec4) FAdd 5166 5165 Store 5160(texel) 5167 5168: 123 Load 125(s1D) 5169:6(float16_t) Load 135(f16c1) 5170:6(float16_t) Load 1400(f16dPdxy1) 5171:6(float16_t) Load 4194(f16lodClamp) 5172: 7(f16vec4) ImageSampleExplicitLod 5168 5169 Grad ConstOffset MinLod 5170 5170 709 5171 5173: 7(f16vec4) Load 5160(texel) 5174: 7(f16vec4) FAdd 5173 5172 Store 5160(texel) 5174 5175: 143 Load 145(s2D) 5176: 53(fvec2) Load 148(c2) 5177: 53(fvec2) Load 1407(dPdxy2) 5178: 52(float) Load 4187(lodClamp) 5179: 7(f16vec4) ImageSampleExplicitLod 5175 5176 Grad ConstOffset MinLod 5177 5177 722 5178 5180: 7(f16vec4) Load 5160(texel) 5181: 7(f16vec4) FAdd 5180 5179 Store 5160(texel) 5181 5182: 143 Load 145(s2D) 5183:154(f16vec2) Load 156(f16c2) 5184:154(f16vec2) Load 1414(f16dPdxy2) 5185:6(float16_t) Load 4194(f16lodClamp) 5186: 7(f16vec4) ImageSampleExplicitLod 5182 5183 Grad ConstOffset MinLod 5184 5184 722 5185 5187: 7(f16vec4) Load 5160(texel) 5188: 7(f16vec4) FAdd 5187 5186 Store 5160(texel) 5188 5189: 163 Load 165(s3D) 5190: 167(fvec3) Load 169(c3) 5191: 167(fvec3) Load 1421(dPdxy3) 5192: 52(float) Load 4187(lodClamp) 5193: 7(f16vec4) ImageSampleExplicitLod 5189 5190 Grad ConstOffset MinLod 5191 5191 735 5192 5194: 7(f16vec4) Load 5160(texel) 5195: 7(f16vec4) FAdd 5194 5193 Store 5160(texel) 5195 5196: 163 Load 165(s3D) 5197:175(f16vec3) Load 177(f16c3) 5198:175(f16vec3) Load 1428(f16dPdxy3) 5199:6(float16_t) Load 4194(f16lodClamp) 5200: 7(f16vec4) ImageSampleExplicitLod 5196 5197 Grad ConstOffset MinLod 5198 5198 735 5199 5201: 7(f16vec4) Load 5160(texel) 5202: 7(f16vec4) FAdd 5201 5200 Store 5160(texel) 5202 5203: 199 Load 201(s1DShadow) 5204: 167(fvec3) Load 169(c3) 5205: 52(float) Load 1393(dPdxy1) 5206: 52(float) Load 4187(lodClamp) 5207: 52(float) CompositeExtract 5204 2 5208:6(float16_t) ImageSampleDrefExplicitLod 5203 5204 5207 Grad ConstOffset MinLod 5205 5205 709 5206 5209: 208(ptr) AccessChain 5160(texel) 207 5210:6(float16_t) Load 5209 5211:6(float16_t) FAdd 5210 5208 5212: 208(ptr) AccessChain 5160(texel) 207 Store 5212 5211 5213: 199 Load 201(s1DShadow) 5214:154(f16vec2) Load 156(f16c2) 5215: 52(float) Load 215(compare) 5216:6(float16_t) Load 1400(f16dPdxy1) 5217:6(float16_t) Load 4194(f16lodClamp) 5218:6(float16_t) ImageSampleDrefExplicitLod 5213 5214 5215 Grad ConstOffset MinLod 5216 5216 709 5217 5219: 208(ptr) AccessChain 5160(texel) 207 5220:6(float16_t) Load 5219 5221:6(float16_t) FAdd 5220 5218 5222: 208(ptr) AccessChain 5160(texel) 207 Store 5222 5221 5223: 224 Load 226(s2DShadow) 5224: 167(fvec3) Load 169(c3) 5225: 53(fvec2) Load 1407(dPdxy2) 5226: 52(float) Load 4187(lodClamp) 5227: 52(float) CompositeExtract 5224 2 5228:6(float16_t) ImageSampleDrefExplicitLod 5223 5224 5227 Grad ConstOffset MinLod 5225 5225 722 5226 5229: 208(ptr) AccessChain 5160(texel) 207 5230:6(float16_t) Load 5229 5231:6(float16_t) FAdd 5230 5228 5232: 208(ptr) AccessChain 5160(texel) 207 Store 5232 5231 5233: 224 Load 226(s2DShadow) 5234:154(f16vec2) Load 156(f16c2) 5235: 52(float) Load 215(compare) 5236:154(f16vec2) Load 1414(f16dPdxy2) 5237:6(float16_t) Load 4194(f16lodClamp) 5238:6(float16_t) ImageSampleDrefExplicitLod 5233 5234 5235 Grad ConstOffset MinLod 5236 5236 722 5237 5239: 208(ptr) AccessChain 5160(texel) 207 5240:6(float16_t) Load 5239 5241:6(float16_t) FAdd 5240 5238 5242: 208(ptr) AccessChain 5160(texel) 207 Store 5242 5241 5243: 269 Load 271(s1DArray) 5244: 53(fvec2) Load 148(c2) 5245: 52(float) Load 1393(dPdxy1) 5246: 52(float) Load 4187(lodClamp) 5247: 7(f16vec4) ImageSampleExplicitLod 5243 5244 Grad ConstOffset MinLod 5245 5245 709 5246 5248: 7(f16vec4) Load 5160(texel) 5249: 7(f16vec4) FAdd 5248 5247 Store 5160(texel) 5249 5250: 269 Load 271(s1DArray) 5251:154(f16vec2) Load 156(f16c2) 5252:6(float16_t) Load 1400(f16dPdxy1) 5253:6(float16_t) Load 4194(f16lodClamp) 5254: 7(f16vec4) ImageSampleExplicitLod 5250 5251 Grad ConstOffset MinLod 5252 5252 709 5253 5255: 7(f16vec4) Load 5160(texel) 5256: 7(f16vec4) FAdd 5255 5254 Store 5160(texel) 5256 5257: 284 Load 286(s2DArray) 5258: 167(fvec3) Load 169(c3) 5259: 53(fvec2) Load 1407(dPdxy2) 5260: 52(float) Load 4187(lodClamp) 5261: 7(f16vec4) ImageSampleExplicitLod 5257 5258 Grad ConstOffset MinLod 5259 5259 722 5260 5262: 7(f16vec4) Load 5160(texel) 5263: 7(f16vec4) FAdd 5262 5261 Store 5160(texel) 5263 5264: 284 Load 286(s2DArray) 5265:175(f16vec3) Load 177(f16c3) 5266:154(f16vec2) Load 1414(f16dPdxy2) 5267:6(float16_t) Load 4194(f16lodClamp) 5268: 7(f16vec4) ImageSampleExplicitLod 5264 5265 Grad ConstOffset MinLod 5266 5266 722 5267 5269: 7(f16vec4) Load 5160(texel) 5270: 7(f16vec4) FAdd 5269 5268 Store 5160(texel) 5270 5271: 316 Load 318(s1DArrayShadow) 5272: 167(fvec3) Load 169(c3) 5273: 52(float) Load 1393(dPdxy1) 5274: 52(float) Load 4187(lodClamp) 5275: 52(float) CompositeExtract 5272 2 5276:6(float16_t) ImageSampleDrefExplicitLod 5271 5272 5275 Grad ConstOffset MinLod 5273 5273 709 5274 5277: 208(ptr) AccessChain 5160(texel) 207 5278:6(float16_t) Load 5277 5279:6(float16_t) FAdd 5278 5276 5280: 208(ptr) AccessChain 5160(texel) 207 Store 5280 5279 5281: 316 Load 318(s1DArrayShadow) 5282:154(f16vec2) Load 156(f16c2) 5283: 52(float) Load 215(compare) 5284:6(float16_t) Load 1400(f16dPdxy1) 5285:6(float16_t) Load 4194(f16lodClamp) 5286:6(float16_t) ImageSampleDrefExplicitLod 5281 5282 5283 Grad ConstOffset MinLod 5284 5284 709 5285 5287: 208(ptr) AccessChain 5160(texel) 207 5288:6(float16_t) Load 5287 5289:6(float16_t) FAdd 5288 5286 5290: 208(ptr) AccessChain 5160(texel) 207 Store 5290 5289 5291: 337 Load 339(s2DArrayShadow) 5292: 249(fvec4) Load 251(c4) 5293: 53(fvec2) Load 1407(dPdxy2) 5294: 52(float) Load 4187(lodClamp) 5295: 52(float) CompositeExtract 5292 3 5296:6(float16_t) ImageSampleDrefExplicitLod 5291 5292 5295 Grad ConstOffset MinLod 5293 5293 722 5294 5297: 208(ptr) AccessChain 5160(texel) 207 5298:6(float16_t) Load 5297 5299:6(float16_t) FAdd 5298 5296 5300: 208(ptr) AccessChain 5160(texel) 207 Store 5300 5299 5301: 337 Load 339(s2DArrayShadow) 5302:175(f16vec3) Load 177(f16c3) 5303: 52(float) Load 215(compare) 5304:154(f16vec2) Load 1414(f16dPdxy2) 5305:6(float16_t) Load 4194(f16lodClamp) 5306:6(float16_t) ImageSampleDrefExplicitLod 5301 5302 5303 Grad ConstOffset MinLod 5304 5304 722 5305 5307: 208(ptr) AccessChain 5160(texel) 207 5308:6(float16_t) Load 5307 5309:6(float16_t) FAdd 5308 5306 5310: 208(ptr) AccessChain 5160(texel) 207 Store 5310 5309 5311: 7(f16vec4) Load 5160(texel) ReturnValue 5311 FunctionEnd 115(testCombinedTextureSampler(): 7(f16vec4) Function None 8 116: Label 5314(texel): 64(ptr) Variable Function Store 5314(texel) 121 5317: 122 Load 5316(t1D) 5321: 5318 Load 5320(s) 5322: 123 SampledImage 5317 5321 5323: 52(float) Load 128(c1) 5324: 7(f16vec4) ImageSampleImplicitLod 5322 5323 5325: 7(f16vec4) Load 5314(texel) 5326: 7(f16vec4) FAdd 5325 5324 Store 5314(texel) 5326 5327: 122 Load 5316(t1D) 5328: 5318 Load 5320(s) 5329: 123 SampledImage 5327 5328 5330:6(float16_t) Load 135(f16c1) 5331:6(float16_t) Load 137(f16bias) 5332: 7(f16vec4) ImageSampleImplicitLod 5329 5330 Bias 5331 5333: 7(f16vec4) Load 5314(texel) 5334: 7(f16vec4) FAdd 5333 5332 Store 5314(texel) 5334 5337: 142 Load 5336(t2D) 5338: 5318 Load 5320(s) 5339: 143 SampledImage 5337 5338 5340: 53(fvec2) Load 148(c2) 5341: 7(f16vec4) ImageSampleImplicitLod 5339 5340 5342: 7(f16vec4) Load 5314(texel) 5343: 7(f16vec4) FAdd 5342 5341 Store 5314(texel) 5343 5344: 142 Load 5336(t2D) 5345: 5318 Load 5320(s) 5346: 143 SampledImage 5344 5345 5347:154(f16vec2) Load 156(f16c2) 5348:6(float16_t) Load 137(f16bias) 5349: 7(f16vec4) ImageSampleImplicitLod 5346 5347 Bias 5348 5350: 7(f16vec4) Load 5314(texel) 5351: 7(f16vec4) FAdd 5350 5349 Store 5314(texel) 5351 5354: 162 Load 5353(t3D) 5355: 5318 Load 5320(s) 5356: 163 SampledImage 5354 5355 5357: 167(fvec3) Load 169(c3) 5358: 7(f16vec4) ImageSampleImplicitLod 5356 5357 5359: 7(f16vec4) Load 5314(texel) 5360: 7(f16vec4) FAdd 5359 5358 Store 5314(texel) 5360 5361: 162 Load 5353(t3D) 5362: 5318 Load 5320(s) 5363: 163 SampledImage 5361 5362 5364:175(f16vec3) Load 177(f16c3) 5365:6(float16_t) Load 137(f16bias) 5366: 7(f16vec4) ImageSampleImplicitLod 5363 5364 Bias 5365 5367: 7(f16vec4) Load 5314(texel) 5368: 7(f16vec4) FAdd 5367 5366 Store 5314(texel) 5368 5371: 183 Load 5370(tCube) 5372: 5318 Load 5320(s) 5373: 184 SampledImage 5371 5372 5374: 167(fvec3) Load 169(c3) 5375: 7(f16vec4) ImageSampleImplicitLod 5373 5374 5376: 7(f16vec4) Load 5314(texel) 5377: 7(f16vec4) FAdd 5376 5375 Store 5314(texel) 5377 5378: 183 Load 5370(tCube) 5379: 5318 Load 5320(s) 5380: 184 SampledImage 5378 5379 5381:175(f16vec3) Load 177(f16c3) 5382:6(float16_t) Load 137(f16bias) 5383: 7(f16vec4) ImageSampleImplicitLod 5380 5381 Bias 5382 5384: 7(f16vec4) Load 5314(texel) 5385: 7(f16vec4) FAdd 5384 5383 Store 5314(texel) 5385 5386: 122 Load 5316(t1D) 5388: 5318 Load 5387(sShadow) 5389: 199 SampledImage 5386 5388 5390: 167(fvec3) Load 169(c3) 5391: 52(float) CompositeExtract 5390 2 5392:6(float16_t) ImageSampleDrefImplicitLod 5389 5390 5391 5393: 208(ptr) AccessChain 5314(texel) 207 5394:6(float16_t) Load 5393 5395:6(float16_t) FAdd 5394 5392 5396: 208(ptr) AccessChain 5314(texel) 207 Store 5396 5395 5397: 122 Load 5316(t1D) 5398: 5318 Load 5387(sShadow) 5399: 199 SampledImage 5397 5398 5400:154(f16vec2) Load 156(f16c2) 5401: 52(float) Load 215(compare) 5402:6(float16_t) Load 137(f16bias) 5403:6(float16_t) ImageSampleDrefImplicitLod 5399 5400 5401 Bias 5402 5404: 208(ptr) AccessChain 5314(texel) 207 5405:6(float16_t) Load 5404 5406:6(float16_t) FAdd 5405 5403 5407: 208(ptr) AccessChain 5314(texel) 207 Store 5407 5406 5408: 142 Load 5336(t2D) 5409: 5318 Load 5387(sShadow) 5410: 224 SampledImage 5408 5409 5411: 167(fvec3) Load 169(c3) 5412: 52(float) CompositeExtract 5411 2 5413:6(float16_t) ImageSampleDrefImplicitLod 5410 5411 5412 5414: 208(ptr) AccessChain 5314(texel) 207 5415:6(float16_t) Load 5414 5416:6(float16_t) FAdd 5415 5413 5417: 208(ptr) AccessChain 5314(texel) 207 Store 5417 5416 5418: 142 Load 5336(t2D) 5419: 5318 Load 5387(sShadow) 5420: 224 SampledImage 5418 5419 5421:154(f16vec2) Load 156(f16c2) 5422: 52(float) Load 215(compare) 5423:6(float16_t) Load 137(f16bias) 5424:6(float16_t) ImageSampleDrefImplicitLod 5420 5421 5422 Bias 5423 5425: 208(ptr) AccessChain 5314(texel) 207 5426:6(float16_t) Load 5425 5427:6(float16_t) FAdd 5426 5424 5428: 208(ptr) AccessChain 5314(texel) 207 Store 5428 5427 5429: 183 Load 5370(tCube) 5430: 5318 Load 5387(sShadow) 5431: 245 SampledImage 5429 5430 5432: 249(fvec4) Load 251(c4) 5433: 52(float) CompositeExtract 5432 3 5434:6(float16_t) ImageSampleDrefImplicitLod 5431 5432 5433 5435: 208(ptr) AccessChain 5314(texel) 207 5436:6(float16_t) Load 5435 5437:6(float16_t) FAdd 5436 5434 5438: 208(ptr) AccessChain 5314(texel) 207 Store 5438 5437 5439: 183 Load 5370(tCube) 5440: 5318 Load 5387(sShadow) 5441: 245 SampledImage 5439 5440 5442:175(f16vec3) Load 177(f16c3) 5443: 52(float) Load 215(compare) 5444:6(float16_t) Load 137(f16bias) 5445:6(float16_t) ImageSampleDrefImplicitLod 5441 5442 5443 Bias 5444 5446: 208(ptr) AccessChain 5314(texel) 207 5447:6(float16_t) Load 5446 5448:6(float16_t) FAdd 5447 5445 5449: 208(ptr) AccessChain 5314(texel) 207 Store 5449 5448 5452: 268 Load 5451(t1DArray) 5453: 5318 Load 5320(s) 5454: 269 SampledImage 5452 5453 5455: 53(fvec2) Load 148(c2) 5456: 7(f16vec4) ImageSampleImplicitLod 5454 5455 5457: 7(f16vec4) Load 5314(texel) 5458: 7(f16vec4) FAdd 5457 5456 Store 5314(texel) 5458 5459: 268 Load 5451(t1DArray) 5460: 5318 Load 5320(s) 5461: 269 SampledImage 5459 5460 5462:154(f16vec2) Load 156(f16c2) 5463:6(float16_t) Load 137(f16bias) 5464: 7(f16vec4) ImageSampleImplicitLod 5461 5462 Bias 5463 5465: 7(f16vec4) Load 5314(texel) 5466: 7(f16vec4) FAdd 5465 5464 Store 5314(texel) 5466 5469: 283 Load 5468(t2DArray) 5470: 5318 Load 5320(s) 5471: 284 SampledImage 5469 5470 5472: 167(fvec3) Load 169(c3) 5473: 7(f16vec4) ImageSampleImplicitLod 5471 5472 5474: 7(f16vec4) Load 5314(texel) 5475: 7(f16vec4) FAdd 5474 5473 Store 5314(texel) 5475 5476: 283 Load 5468(t2DArray) 5477: 5318 Load 5320(s) 5478: 284 SampledImage 5476 5477 5479:175(f16vec3) Load 177(f16c3) 5480:6(float16_t) Load 137(f16bias) 5481: 7(f16vec4) ImageSampleImplicitLod 5478 5479 Bias 5480 5482: 7(f16vec4) Load 5314(texel) 5483: 7(f16vec4) FAdd 5482 5481 Store 5314(texel) 5483 5486: 298 Load 5485(tCubeArray) 5487: 5318 Load 5320(s) 5488: 299 SampledImage 5486 5487 5489: 249(fvec4) Load 251(c4) 5490: 7(f16vec4) ImageSampleImplicitLod 5488 5489 5491: 7(f16vec4) Load 5314(texel) 5492: 7(f16vec4) FAdd 5491 5490 Store 5314(texel) 5492 5493: 298 Load 5485(tCubeArray) 5494: 5318 Load 5320(s) 5495: 299 SampledImage 5493 5494 5496: 7(f16vec4) Load 309(f16c4) 5497:6(float16_t) Load 137(f16bias) 5498: 7(f16vec4) ImageSampleImplicitLod 5495 5496 Bias 5497 5499: 7(f16vec4) Load 5314(texel) 5500: 7(f16vec4) FAdd 5499 5498 Store 5314(texel) 5500 5501: 268 Load 5451(t1DArray) 5502: 5318 Load 5387(sShadow) 5503: 316 SampledImage 5501 5502 5504: 167(fvec3) Load 169(c3) 5505: 52(float) CompositeExtract 5504 2 5506:6(float16_t) ImageSampleDrefImplicitLod 5503 5504 5505 5507: 208(ptr) AccessChain 5314(texel) 207 5508:6(float16_t) Load 5507 5509:6(float16_t) FAdd 5508 5506 5510: 208(ptr) AccessChain 5314(texel) 207 Store 5510 5509 5511: 268 Load 5451(t1DArray) 5512: 5318 Load 5387(sShadow) 5513: 316 SampledImage 5511 5512 5514:154(f16vec2) Load 156(f16c2) 5515: 52(float) Load 215(compare) 5516:6(float16_t) Load 137(f16bias) 5517:6(float16_t) ImageSampleDrefImplicitLod 5513 5514 5515 Bias 5516 5518: 208(ptr) AccessChain 5314(texel) 207 5519:6(float16_t) Load 5518 5520:6(float16_t) FAdd 5519 5517 5521: 208(ptr) AccessChain 5314(texel) 207 Store 5521 5520 5522: 283 Load 5468(t2DArray) 5523: 5318 Load 5387(sShadow) 5524: 337 SampledImage 5522 5523 5525: 249(fvec4) Load 251(c4) 5526: 52(float) CompositeExtract 5525 3 5527:6(float16_t) ImageSampleDrefImplicitLod 5524 5525 5526 5528: 208(ptr) AccessChain 5314(texel) 207 5529:6(float16_t) Load 5528 5530:6(float16_t) FAdd 5529 5527 5531: 208(ptr) AccessChain 5314(texel) 207 Store 5531 5530 5532: 283 Load 5468(t2DArray) 5533: 5318 Load 5387(sShadow) 5534: 337 SampledImage 5532 5533 5535:175(f16vec3) Load 177(f16c3) 5536: 52(float) Load 215(compare) 5537:6(float16_t) ImageSampleDrefImplicitLod 5534 5535 5536 5538: 208(ptr) AccessChain 5314(texel) 207 5539:6(float16_t) Load 5538 5540:6(float16_t) FAdd 5539 5537 5541: 208(ptr) AccessChain 5314(texel) 207 Store 5541 5540 5544: 356 Load 5543(t2DRect) 5545: 5318 Load 5320(s) 5546: 357 SampledImage 5544 5545 5547: 53(fvec2) Load 148(c2) 5548: 7(f16vec4) ImageSampleImplicitLod 5546 5547 5549: 7(f16vec4) Load 5314(texel) 5550: 7(f16vec4) FAdd 5549 5548 Store 5314(texel) 5550 5551: 356 Load 5543(t2DRect) 5552: 5318 Load 5320(s) 5553: 357 SampledImage 5551 5552 5554:154(f16vec2) Load 156(f16c2) 5555: 7(f16vec4) ImageSampleImplicitLod 5553 5554 5556: 7(f16vec4) Load 5314(texel) 5557: 7(f16vec4) FAdd 5556 5555 Store 5314(texel) 5557 5558: 356 Load 5543(t2DRect) 5559: 5318 Load 5387(sShadow) 5560: 371 SampledImage 5558 5559 5561: 167(fvec3) Load 169(c3) 5562: 52(float) CompositeExtract 5561 2 5563:6(float16_t) ImageSampleDrefImplicitLod 5560 5561 5562 5564: 208(ptr) AccessChain 5314(texel) 207 5565:6(float16_t) Load 5564 5566:6(float16_t) FAdd 5565 5563 5567: 208(ptr) AccessChain 5314(texel) 207 Store 5567 5566 5568: 356 Load 5543(t2DRect) 5569: 5318 Load 5387(sShadow) 5570: 371 SampledImage 5568 5569 5571:154(f16vec2) Load 156(f16c2) 5572: 52(float) Load 215(compare) 5573:6(float16_t) ImageSampleDrefImplicitLod 5570 5571 5572 5574: 208(ptr) AccessChain 5314(texel) 207 5575:6(float16_t) Load 5574 5576:6(float16_t) FAdd 5575 5573 5577: 208(ptr) AccessChain 5314(texel) 207 Store 5577 5576 5578: 298 Load 5485(tCubeArray) 5579: 5318 Load 5387(sShadow) 5580: 391 SampledImage 5578 5579 5581: 249(fvec4) Load 251(c4) 5582: 52(float) Load 215(compare) 5583:6(float16_t) ImageSampleDrefImplicitLod 5580 5581 5582 5584: 208(ptr) AccessChain 5314(texel) 207 5585:6(float16_t) Load 5584 5586:6(float16_t) FAdd 5585 5583 5587: 208(ptr) AccessChain 5314(texel) 207 Store 5587 5586 5588: 298 Load 5485(tCubeArray) 5589: 5318 Load 5387(sShadow) 5590: 391 SampledImage 5588 5589 5591: 7(f16vec4) Load 309(f16c4) 5592: 52(float) Load 215(compare) 5593:6(float16_t) ImageSampleDrefImplicitLod 5590 5591 5592 5594: 208(ptr) AccessChain 5314(texel) 207 5595:6(float16_t) Load 5594 5596:6(float16_t) FAdd 5595 5593 5597: 208(ptr) AccessChain 5314(texel) 207 Store 5597 5596 5598: 7(f16vec4) Load 5314(texel) ReturnValue 5598 FunctionEnd 117(testSubpassLoad(): 7(f16vec4) Function None 8 118: Label 5604: 5601 Load 5603(subpass) 5606: 7(f16vec4) ImageRead 5604 5605 5610: 5607 Load 5609(subpassMS) 5611: 7(f16vec4) ImageRead 5610 5605 Sample 1326 5612: 7(f16vec4) FAdd 5606 5611 ReturnValue 5612 FunctionEnd glslang-16.0.0/Test/baseResults/spv.float16NoRelaxed.vert.out000066400000000000000000000073251506534232700240530ustar00rootroot00000000000000spv.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 Decorate 26(Buffer1) Block MemberDecorate 26(Buffer1) 0 Offset 0 Decorate 28 Binding 0 Decorate 28 DescriptorSet 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 glslang-16.0.0/Test/baseResults/spv.float16convertonlyarith.comp.out000066400000000000000000000034151506534232700255560ustar00rootroot00000000000000spv.float16convertonlyarith.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader Capability Float16 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 16 16 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" Name 4 "main" Name 9 "v" Decorate 21 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 13: TypeFloat 16 14: TypeVector 13(float16_t) 4 17: TypeInt 32 0 18: TypeVector 17(int) 3 19: 17(int) Constant 16 20: 17(int) Constant 1 21: 18(ivec3) ConstantComposite 19 19 20 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function Store 9(v) 11 12: 7(fvec4) Load 9(v) 15: 14(f16vec4) FConvert 12 16: 7(fvec4) FConvert 15 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.float16convertonlystorage.comp.out000066400000000000000000000033731506534232700261160ustar00rootroot00000000000000spv.float16convertonlystorage.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader Capability Float16 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 16 16 1 Source GLSL 450 SourceExtension "GL_EXT_shader_16bit_storage" Name 4 "main" Name 9 "v" Decorate 21 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 13: TypeFloat 16 14: TypeVector 13(float16_t) 4 17: TypeInt 32 0 18: TypeVector 17(int) 3 19: 17(int) Constant 16 20: 17(int) Constant 1 21: 18(ivec3) ConstantComposite 19 19 20 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function Store 9(v) 11 12: 7(fvec4) Load 9(v) 15: 14(f16vec4) FConvert 12 16: 7(fvec4) FConvert 15 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.float32.frag.out000066400000000000000000001220351506534232700222020ustar00rootroot00000000000000spv.float32.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 544 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability DerivativeControl Capability InterpolationFunction 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 474 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 6 "literal(" Name 8 "operators(" Name 10 "typeCast(" Name 12 "builtinAngleTrigFuncs(" Name 14 "builtinExpFuncs(" Name 16 "builtinCommonFuncs(" Name 18 "builtinGeometryFuncs(" Name 20 "builtinMatrixFuncs(" Name 22 "builtinVecRelFuncs(" Name 24 "builtinFragProcFuncs(" Name 29 "f32v" Name 40 "f32v" Name 62 "f32m" Name 85 "f32" Name 109 "b" Name 152 "f64v" Name 155 "f32v" Name 160 "bv" Name 175 "f16v" Name 183 "i8v" Name 189 "i16v" Name 195 "i32v" Name 201 "i64v" Name 207 "u8v" Name 213 "u16v" Name 218 "u32v" Name 224 "u64v" Name 229 "f32v2" Name 230 "f32v1" Name 262 "f32v2" Name 263 "f32v1" Name 279 "f32v2" Name 280 "f32v1" Name 301 "f32" Name 305 "f32v3" Name 307 "ResType" Name 348 "bv" Name 369 "b" Name 379 "iv" Name 380 "ResType" Name 387 "f32" Name 388 "f32v1" Name 392 "f32v2" Name 398 "f32v3" Name 417 "f32m3" Name 418 "f32m1" Name 420 "f32m2" Name 429 "f32v1" Name 431 "f32v2" Name 436 "f32m4" Name 439 "f32" Name 442 "f32m5" Name 447 "f32m6" Name 448 "f32m7" Name 451 "bv" Name 452 "f32v1" Name 454 "f32v2" Name 472 "f32v" Name 474 "if32v" Name 531 "S" MemberName 531(S) 0 "x" MemberName 531(S) 1 "y" MemberName 531(S) 2 "z" Name 533 "B1" MemberName 533(B1) 0 "a" MemberName 533(B1) 1 "b" MemberName 533(B1) 2 "c" MemberName 533(B1) 3 "d" MemberName 533(B1) 4 "e" MemberName 533(B1) 5 "f" MemberName 533(B1) 6 "g" MemberName 533(B1) 7 "h" Name 535 "" Name 536 "sf16" Name 537 "sf" Name 538 "sd" Name 539 "f16_to_f" Name 541 "f16_to_d" Name 542 "f_to_f16" Name 543 "d_to_f16" Decorate 474(if32v) Location 0 Decorate 529 ArrayStride 16 Decorate 530 ArrayStride 32 MemberDecorate 531(S) 0 Offset 0 MemberDecorate 531(S) 1 Offset 8 MemberDecorate 531(S) 2 Offset 16 Decorate 532 ArrayStride 32 Decorate 533(B1) Block MemberDecorate 533(B1) 0 Offset 0 MemberDecorate 533(B1) 1 Offset 8 MemberDecorate 533(B1) 2 Offset 16 MemberDecorate 533(B1) 3 Offset 32 MemberDecorate 533(B1) 4 ColMajor MemberDecorate 533(B1) 4 MatrixStride 16 MemberDecorate 533(B1) 4 Offset 64 MemberDecorate 533(B1) 5 ColMajor MemberDecorate 533(B1) 5 MatrixStride 16 MemberDecorate 533(B1) 5 Offset 96 MemberDecorate 533(B1) 6 Offset 160 MemberDecorate 533(B1) 7 Offset 192 Decorate 535 Binding 0 Decorate 535 DescriptorSet 0 Decorate 536(sf16) SpecId 100 Decorate 537(sf) SpecId 101 Decorate 538(sd) SpecId 102 2: TypeVoid 3: TypeFunction 2 26: TypeFloat 32 27: TypeVector 26(float) 2 28: TypePointer Function 27(fvec2) 30: 26(float) Constant 897988541 31: TypeInt 32 0 32: 31(int) Constant 0 33: TypePointer Function 26(float) 35: 26(float) Constant 3196059648 36: 26(float) Constant 1022739087 37: 27(fvec2) ConstantComposite 35 36 54: 26(float) Constant 1065353216 60: TypeMatrix 27(fvec2) 2 61: TypePointer Function 60 88: 31(int) Constant 1 107: TypeBool 108: TypePointer Function 107(bool) 149: TypeFloat 64 150: TypeVector 149(float64_t) 3 151: TypePointer Function 150(f64vec3) 153: TypeVector 26(float) 3 154: TypePointer Function 153(fvec3) 158: TypeVector 107(bool) 3 159: TypePointer Function 158(bvec3) 162: 26(float) Constant 0 163: 153(fvec3) ConstantComposite 162 162 162 164: 153(fvec3) ConstantComposite 54 54 54 172: TypeFloat 16 173: TypeVector 172(float16_t) 3 174: TypePointer Function 173(f16vec3) 180: TypeInt 8 1 181: TypeVector 180(int8_t) 3 182: TypePointer Function 181(i8vec3) 186: TypeInt 16 1 187: TypeVector 186(int16_t) 3 188: TypePointer Function 187(i16vec3) 192: TypeInt 32 1 193: TypeVector 192(int) 3 194: TypePointer Function 193(ivec3) 198: TypeInt 64 1 199: TypeVector 198(int64_t) 3 200: TypePointer Function 199(i64vec3) 204: TypeInt 8 0 205: TypeVector 204(int8_t) 3 206: TypePointer Function 205(i8vec3) 210: TypeInt 16 0 211: TypeVector 210(int16_t) 3 212: TypePointer Function 211(i16vec3) 216: TypeVector 31(int) 3 217: TypePointer Function 216(ivec3) 221: TypeInt 64 0 222: TypeVector 221(int64_t) 3 223: TypePointer Function 222(i64vec3) 227: TypeVector 26(float) 4 228: TypePointer Function 227(fvec4) 307(ResType): TypeStruct 153(fvec3) 153(fvec3) 380(ResType): TypeStruct 153(fvec3) 193(ivec3) 415: TypeMatrix 153(fvec3) 2 416: TypePointer Function 415 434: TypeMatrix 27(fvec2) 3 435: TypePointer Function 434 440: TypeMatrix 153(fvec3) 3 441: TypePointer Function 440 445: TypeMatrix 227(fvec4) 4 446: TypePointer Function 445 473: TypePointer Input 153(fvec3) 474(if32v): 473(ptr) Variable Input 475: TypePointer Input 26(float) 518: 192(int) Constant 1 525: 26(float) Constant 1056964608 526: 27(fvec2) ConstantComposite 525 525 528: 31(int) Constant 2 529: TypeArray 26(float) 528 530: TypeArray 415 528 531(S): TypeStruct 26(float) 27(fvec2) 153(fvec3) 532: TypeArray 531(S) 528 533(B1): TypeStruct 26(float) 27(fvec2) 153(fvec3) 529 415 530 531(S) 532 534: TypePointer Uniform 533(B1) 535: 534(ptr) Variable Uniform 536(sf16):172(float16_t) SpecConstant 12288 537(sf): 26(float) SpecConstant 1048576000 538(sd):149(float64_t) SpecConstant 0 1071644672 539(f16_to_f): 26(float) SpecConstantOp 115 536(sf16) 540: 26(float) SpecConstantOp 115 536(sf16) 541(f16_to_d):149(float64_t) SpecConstantOp 115 540 542(f_to_f16):172(float16_t) SpecConstantOp 115 537(sf) 543(d_to_f16):172(float16_t) SpecConstantOp 115 538(sd) 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 29(f32v): 28(ptr) Variable Function 34: 33(ptr) AccessChain 29(f32v) 32 Store 34 30 38: 27(fvec2) Load 29(f32v) 39: 27(fvec2) FAdd 38 37 Store 29(f32v) 39 Return FunctionEnd 8(operators(): 2 Function None 3 9: Label 40(f32v): 28(ptr) Variable Function 62(f32m): 61(ptr) Variable Function 85(f32): 33(ptr) Variable Function 109(b): 108(ptr) Variable Function 41: 27(fvec2) Load 40(f32v) 42: 27(fvec2) Load 40(f32v) 43: 27(fvec2) FAdd 42 41 Store 40(f32v) 43 44: 27(fvec2) Load 40(f32v) 45: 27(fvec2) Load 40(f32v) 46: 27(fvec2) FSub 45 44 Store 40(f32v) 46 47: 27(fvec2) Load 40(f32v) 48: 27(fvec2) Load 40(f32v) 49: 27(fvec2) FMul 48 47 Store 40(f32v) 49 50: 27(fvec2) Load 40(f32v) 51: 27(fvec2) Load 40(f32v) 52: 27(fvec2) FDiv 51 50 Store 40(f32v) 52 53: 27(fvec2) Load 40(f32v) 55: 27(fvec2) CompositeConstruct 54 54 56: 27(fvec2) FAdd 53 55 Store 40(f32v) 56 57: 27(fvec2) Load 40(f32v) 58: 27(fvec2) CompositeConstruct 54 54 59: 27(fvec2) FSub 57 58 Store 40(f32v) 59 63: 60 Load 62(f32m) 64: 27(fvec2) CompositeConstruct 54 54 65: 27(fvec2) CompositeExtract 63 0 66: 27(fvec2) FAdd 65 64 67: 27(fvec2) CompositeExtract 63 1 68: 27(fvec2) FAdd 67 64 69: 60 CompositeConstruct 66 68 Store 62(f32m) 69 70: 60 Load 62(f32m) 71: 27(fvec2) CompositeConstruct 54 54 72: 27(fvec2) CompositeExtract 70 0 73: 27(fvec2) FSub 72 71 74: 27(fvec2) CompositeExtract 70 1 75: 27(fvec2) FSub 74 71 76: 60 CompositeConstruct 73 75 Store 62(f32m) 76 77: 27(fvec2) Load 40(f32v) 78: 27(fvec2) FNegate 77 Store 40(f32v) 78 79: 60 Load 62(f32m) 80: 27(fvec2) CompositeExtract 79 0 81: 27(fvec2) FNegate 80 82: 27(fvec2) CompositeExtract 79 1 83: 27(fvec2) FNegate 82 84: 60 CompositeConstruct 81 83 Store 62(f32m) 84 86: 33(ptr) AccessChain 40(f32v) 32 87: 26(float) Load 86 89: 33(ptr) AccessChain 40(f32v) 88 90: 26(float) Load 89 91: 26(float) FAdd 87 90 Store 85(f32) 91 92: 33(ptr) AccessChain 40(f32v) 32 93: 26(float) Load 92 94: 33(ptr) AccessChain 40(f32v) 88 95: 26(float) Load 94 96: 26(float) FSub 93 95 Store 85(f32) 96 97: 33(ptr) AccessChain 40(f32v) 32 98: 26(float) Load 97 99: 33(ptr) AccessChain 40(f32v) 88 100: 26(float) Load 99 101: 26(float) FMul 98 100 Store 85(f32) 101 102: 33(ptr) AccessChain 40(f32v) 32 103: 26(float) Load 102 104: 33(ptr) AccessChain 40(f32v) 88 105: 26(float) Load 104 106: 26(float) FDiv 103 105 Store 85(f32) 106 110: 33(ptr) AccessChain 40(f32v) 32 111: 26(float) Load 110 112: 26(float) Load 85(f32) 113: 107(bool) FUnordNotEqual 111 112 Store 109(b) 113 114: 33(ptr) AccessChain 40(f32v) 88 115: 26(float) Load 114 116: 26(float) Load 85(f32) 117: 107(bool) FOrdEqual 115 116 Store 109(b) 117 118: 33(ptr) AccessChain 40(f32v) 32 119: 26(float) Load 118 120: 26(float) Load 85(f32) 121: 107(bool) FOrdGreaterThan 119 120 Store 109(b) 121 122: 33(ptr) AccessChain 40(f32v) 88 123: 26(float) Load 122 124: 26(float) Load 85(f32) 125: 107(bool) FOrdLessThan 123 124 Store 109(b) 125 126: 33(ptr) AccessChain 40(f32v) 32 127: 26(float) Load 126 128: 26(float) Load 85(f32) 129: 107(bool) FOrdGreaterThanEqual 127 128 Store 109(b) 129 130: 33(ptr) AccessChain 40(f32v) 88 131: 26(float) Load 130 132: 26(float) Load 85(f32) 133: 107(bool) FOrdLessThanEqual 131 132 Store 109(b) 133 134: 27(fvec2) Load 40(f32v) 135: 26(float) Load 85(f32) 136: 27(fvec2) VectorTimesScalar 134 135 Store 40(f32v) 136 137: 60 Load 62(f32m) 138: 26(float) Load 85(f32) 139: 60 MatrixTimesScalar 137 138 Store 62(f32m) 139 140: 60 Load 62(f32m) 141: 27(fvec2) Load 40(f32v) 142: 27(fvec2) MatrixTimesVector 140 141 Store 40(f32v) 142 143: 27(fvec2) Load 40(f32v) 144: 60 Load 62(f32m) 145: 27(fvec2) VectorTimesMatrix 143 144 Store 40(f32v) 145 146: 60 Load 62(f32m) 147: 60 Load 62(f32m) 148: 60 MatrixTimesMatrix 146 147 Store 62(f32m) 148 Return FunctionEnd 10(typeCast(): 2 Function None 3 11: Label 152(f64v): 151(ptr) Variable Function 155(f32v): 154(ptr) Variable Function 160(bv): 159(ptr) Variable Function 175(f16v): 174(ptr) Variable Function 183(i8v): 182(ptr) Variable Function 189(i16v): 188(ptr) Variable Function 195(i32v): 194(ptr) Variable Function 201(i64v): 200(ptr) Variable Function 207(u8v): 206(ptr) Variable Function 213(u16v): 212(ptr) Variable Function 218(u32v): 217(ptr) Variable Function 224(u64v): 223(ptr) Variable Function 156: 153(fvec3) Load 155(f32v) 157:150(f64vec3) FConvert 156 Store 152(f64v) 157 161: 158(bvec3) Load 160(bv) 165: 153(fvec3) Select 161 164 163 Store 155(f32v) 165 166: 153(fvec3) Load 155(f32v) 167: 158(bvec3) FUnordNotEqual 166 163 Store 160(bv) 167 168:150(f64vec3) Load 152(f64v) 169: 153(fvec3) FConvert 168 Store 155(f32v) 169 170: 153(fvec3) Load 155(f32v) 171:150(f64vec3) FConvert 170 Store 152(f64v) 171 176:173(f16vec3) Load 175(f16v) 177: 153(fvec3) FConvert 176 Store 155(f32v) 177 178: 153(fvec3) Load 155(f32v) 179:173(f16vec3) FConvert 178 Store 175(f16v) 179 184: 153(fvec3) Load 155(f32v) 185: 181(i8vec3) ConvertFToS 184 Store 183(i8v) 185 190: 153(fvec3) Load 155(f32v) 191:187(i16vec3) ConvertFToS 190 Store 189(i16v) 191 196: 153(fvec3) Load 155(f32v) 197: 193(ivec3) ConvertFToS 196 Store 195(i32v) 197 202: 153(fvec3) Load 155(f32v) 203:199(i64vec3) ConvertFToS 202 Store 201(i64v) 203 208: 153(fvec3) Load 155(f32v) 209: 205(i8vec3) ConvertFToU 208 Store 207(u8v) 209 214: 153(fvec3) Load 155(f32v) 215:211(i16vec3) ConvertFToU 214 Store 213(u16v) 215 219: 153(fvec3) Load 155(f32v) 220: 216(ivec3) ConvertFToU 219 Store 218(u32v) 220 225: 153(fvec3) Load 155(f32v) 226:222(i64vec3) ConvertFToU 225 Store 224(u64v) 226 Return FunctionEnd 12(builtinAngleTrigFuncs(): 2 Function None 3 13: Label 229(f32v2): 228(ptr) Variable Function 230(f32v1): 228(ptr) Variable Function 231: 227(fvec4) Load 230(f32v1) 232: 227(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 231 Store 229(f32v2) 232 233: 227(fvec4) Load 230(f32v1) 234: 227(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 233 Store 229(f32v2) 234 235: 227(fvec4) Load 230(f32v1) 236: 227(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 235 Store 229(f32v2) 236 237: 227(fvec4) Load 230(f32v1) 238: 227(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 237 Store 229(f32v2) 238 239: 227(fvec4) Load 230(f32v1) 240: 227(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 239 Store 229(f32v2) 240 241: 227(fvec4) Load 230(f32v1) 242: 227(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 241 Store 229(f32v2) 242 243: 227(fvec4) Load 230(f32v1) 244: 227(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 243 Store 229(f32v2) 244 245: 227(fvec4) Load 230(f32v1) 246: 227(fvec4) Load 229(f32v2) 247: 227(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 245 246 Store 229(f32v2) 247 248: 227(fvec4) Load 230(f32v1) 249: 227(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 248 Store 229(f32v2) 249 250: 227(fvec4) Load 230(f32v1) 251: 227(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 250 Store 229(f32v2) 251 252: 227(fvec4) Load 230(f32v1) 253: 227(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 252 Store 229(f32v2) 253 254: 227(fvec4) Load 230(f32v1) 255: 227(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 254 Store 229(f32v2) 255 256: 227(fvec4) Load 230(f32v1) 257: 227(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 256 Store 229(f32v2) 257 258: 227(fvec4) Load 230(f32v1) 259: 227(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 258 Store 229(f32v2) 259 260: 227(fvec4) Load 230(f32v1) 261: 227(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 260 Store 229(f32v2) 261 Return FunctionEnd 14(builtinExpFuncs(): 2 Function None 3 15: Label 262(f32v2): 28(ptr) Variable Function 263(f32v1): 28(ptr) Variable Function 264: 27(fvec2) Load 263(f32v1) 265: 27(fvec2) Load 262(f32v2) 266: 27(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 264 265 Store 262(f32v2) 266 267: 27(fvec2) Load 263(f32v1) 268: 27(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 267 Store 262(f32v2) 268 269: 27(fvec2) Load 263(f32v1) 270: 27(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 269 Store 262(f32v2) 270 271: 27(fvec2) Load 263(f32v1) 272: 27(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 271 Store 262(f32v2) 272 273: 27(fvec2) Load 263(f32v1) 274: 27(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 273 Store 262(f32v2) 274 275: 27(fvec2) Load 263(f32v1) 276: 27(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 275 Store 262(f32v2) 276 277: 27(fvec2) Load 263(f32v1) 278: 27(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 277 Store 262(f32v2) 278 Return FunctionEnd 16(builtinCommonFuncs(): 2 Function None 3 17: Label 279(f32v2): 154(ptr) Variable Function 280(f32v1): 154(ptr) Variable Function 301(f32): 33(ptr) Variable Function 305(f32v3): 154(ptr) Variable Function 348(bv): 159(ptr) Variable Function 369(b): 108(ptr) Variable Function 379(iv): 194(ptr) Variable Function 281: 153(fvec3) Load 280(f32v1) 282: 153(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 281 Store 279(f32v2) 282 283: 153(fvec3) Load 280(f32v1) 284: 153(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 283 Store 279(f32v2) 284 285: 153(fvec3) Load 280(f32v1) 286: 153(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 285 Store 279(f32v2) 286 287: 153(fvec3) Load 280(f32v1) 288: 153(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 287 Store 279(f32v2) 288 289: 153(fvec3) Load 280(f32v1) 290: 153(fvec3) ExtInst 1(GLSL.std.450) 1(Round) 289 Store 279(f32v2) 290 291: 153(fvec3) Load 280(f32v1) 292: 153(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 291 Store 279(f32v2) 292 293: 153(fvec3) Load 280(f32v1) 294: 153(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 293 Store 279(f32v2) 294 295: 153(fvec3) Load 280(f32v1) 296: 153(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 295 Store 279(f32v2) 296 297: 153(fvec3) Load 280(f32v1) 298: 153(fvec3) Load 279(f32v2) 299: 153(fvec3) FMod 297 298 Store 279(f32v2) 299 300: 153(fvec3) Load 280(f32v1) 302: 26(float) Load 301(f32) 303: 153(fvec3) CompositeConstruct 302 302 302 304: 153(fvec3) FMod 300 303 Store 279(f32v2) 304 306: 153(fvec3) Load 280(f32v1) 308:307(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 306 309: 153(fvec3) CompositeExtract 308 1 Store 279(f32v2) 309 310: 153(fvec3) CompositeExtract 308 0 Store 305(f32v3) 310 311: 153(fvec3) Load 280(f32v1) 312: 153(fvec3) Load 279(f32v2) 313: 153(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 311 312 Store 305(f32v3) 313 314: 153(fvec3) Load 280(f32v1) 315: 26(float) Load 301(f32) 316: 153(fvec3) CompositeConstruct 315 315 315 317: 153(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 314 316 Store 305(f32v3) 317 318: 153(fvec3) Load 280(f32v1) 319: 153(fvec3) Load 279(f32v2) 320: 153(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 318 319 Store 305(f32v3) 320 321: 153(fvec3) Load 280(f32v1) 322: 26(float) Load 301(f32) 323: 153(fvec3) CompositeConstruct 322 322 322 324: 153(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 321 323 Store 305(f32v3) 324 325: 153(fvec3) Load 280(f32v1) 326: 26(float) Load 301(f32) 327: 33(ptr) AccessChain 279(f32v2) 32 328: 26(float) Load 327 329: 153(fvec3) CompositeConstruct 326 326 326 330: 153(fvec3) CompositeConstruct 328 328 328 331: 153(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 325 329 330 Store 305(f32v3) 331 332: 153(fvec3) Load 280(f32v1) 333: 153(fvec3) Load 279(f32v2) 334: 26(float) Load 301(f32) 335: 153(fvec3) CompositeConstruct 334 334 334 336: 153(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 332 333 335 Store 305(f32v3) 336 337: 153(fvec3) Load 280(f32v1) 338: 153(fvec3) Load 279(f32v2) 339: 26(float) Load 301(f32) 340: 153(fvec3) CompositeConstruct 339 339 339 341: 153(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 337 338 340 Store 305(f32v3) 341 342: 153(fvec3) Load 280(f32v1) 343: 153(fvec3) Load 279(f32v2) 344: 153(fvec3) Load 305(f32v3) 345: 153(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 342 343 344 Store 305(f32v3) 345 346: 153(fvec3) Load 280(f32v1) 347: 153(fvec3) Load 279(f32v2) 349: 158(bvec3) Load 348(bv) 350: 153(fvec3) Select 349 347 346 Store 305(f32v3) 350 351: 153(fvec3) Load 280(f32v1) 352: 153(fvec3) Load 279(f32v2) 353: 153(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 351 352 Store 305(f32v3) 353 354: 26(float) Load 301(f32) 355: 153(fvec3) Load 305(f32v3) 356: 153(fvec3) CompositeConstruct 354 354 354 357: 153(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 356 355 Store 305(f32v3) 357 358: 153(fvec3) Load 280(f32v1) 359: 153(fvec3) Load 279(f32v2) 360: 153(fvec3) Load 305(f32v3) 361: 153(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 358 359 360 Store 305(f32v3) 361 362: 26(float) Load 301(f32) 363: 33(ptr) AccessChain 280(f32v1) 32 364: 26(float) Load 363 365: 153(fvec3) Load 279(f32v2) 366: 153(fvec3) CompositeConstruct 362 362 362 367: 153(fvec3) CompositeConstruct 364 364 364 368: 153(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 366 367 365 Store 305(f32v3) 368 370: 26(float) Load 301(f32) 371: 107(bool) IsNan 370 Store 369(b) 371 372: 153(fvec3) Load 280(f32v1) 373: 158(bvec3) IsInf 372 Store 348(bv) 373 374: 153(fvec3) Load 280(f32v1) 375: 153(fvec3) Load 279(f32v2) 376: 153(fvec3) Load 305(f32v3) 377: 153(fvec3) ExtInst 1(GLSL.std.450) 50(Fma) 374 375 376 Store 305(f32v3) 377 378: 153(fvec3) Load 280(f32v1) 381:380(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 378 382: 193(ivec3) CompositeExtract 381 1 Store 379(iv) 382 383: 153(fvec3) CompositeExtract 381 0 Store 279(f32v2) 383 384: 153(fvec3) Load 280(f32v1) 385: 193(ivec3) Load 379(iv) 386: 153(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 384 385 Store 279(f32v2) 386 Return FunctionEnd 18(builtinGeometryFuncs(): 2 Function None 3 19: Label 387(f32): 33(ptr) Variable Function 388(f32v1): 154(ptr) Variable Function 392(f32v2): 154(ptr) Variable Function 398(f32v3): 154(ptr) Variable Function 389: 153(fvec3) Load 388(f32v1) 390: 26(float) ExtInst 1(GLSL.std.450) 66(Length) 389 Store 387(f32) 390 391: 153(fvec3) Load 388(f32v1) 393: 153(fvec3) Load 392(f32v2) 394: 26(float) ExtInst 1(GLSL.std.450) 67(Distance) 391 393 Store 387(f32) 394 395: 153(fvec3) Load 388(f32v1) 396: 153(fvec3) Load 392(f32v2) 397: 26(float) Dot 395 396 Store 387(f32) 397 399: 153(fvec3) Load 388(f32v1) 400: 153(fvec3) Load 392(f32v2) 401: 153(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 399 400 Store 398(f32v3) 401 402: 153(fvec3) Load 388(f32v1) 403: 153(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 402 Store 392(f32v2) 403 404: 153(fvec3) Load 388(f32v1) 405: 153(fvec3) Load 392(f32v2) 406: 153(fvec3) Load 398(f32v3) 407: 153(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 404 405 406 Store 398(f32v3) 407 408: 153(fvec3) Load 388(f32v1) 409: 153(fvec3) Load 392(f32v2) 410: 153(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 408 409 Store 398(f32v3) 410 411: 153(fvec3) Load 388(f32v1) 412: 153(fvec3) Load 392(f32v2) 413: 26(float) Load 387(f32) 414: 153(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 411 412 413 Store 398(f32v3) 414 Return FunctionEnd 20(builtinMatrixFuncs(): 2 Function None 3 21: Label 417(f32m3): 416(ptr) Variable Function 418(f32m1): 416(ptr) Variable Function 420(f32m2): 416(ptr) Variable Function 429(f32v1): 154(ptr) Variable Function 431(f32v2): 28(ptr) Variable Function 436(f32m4): 435(ptr) Variable Function 439(f32): 33(ptr) Variable Function 442(f32m5): 441(ptr) Variable Function 447(f32m6): 446(ptr) Variable Function 448(f32m7): 446(ptr) Variable Function 419: 415 Load 418(f32m1) 421: 415 Load 420(f32m2) 422: 153(fvec3) CompositeExtract 419 0 423: 153(fvec3) CompositeExtract 421 0 424: 153(fvec3) FMul 422 423 425: 153(fvec3) CompositeExtract 419 1 426: 153(fvec3) CompositeExtract 421 1 427: 153(fvec3) FMul 425 426 428: 415 CompositeConstruct 424 427 Store 417(f32m3) 428 430: 153(fvec3) Load 429(f32v1) 432: 27(fvec2) Load 431(f32v2) 433: 415 OuterProduct 430 432 Store 418(f32m1) 433 437: 415 Load 418(f32m1) 438: 434 Transpose 437 Store 436(f32m4) 438 443: 440 Load 442(f32m5) 444: 26(float) ExtInst 1(GLSL.std.450) 33(Determinant) 443 Store 439(f32) 444 449: 445 Load 448(f32m7) 450: 445 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 449 Store 447(f32m6) 450 Return FunctionEnd 22(builtinVecRelFuncs(): 2 Function None 3 23: Label 451(bv): 159(ptr) Variable Function 452(f32v1): 154(ptr) Variable Function 454(f32v2): 154(ptr) Variable Function 453: 153(fvec3) Load 452(f32v1) 455: 153(fvec3) Load 454(f32v2) 456: 158(bvec3) FOrdLessThan 453 455 Store 451(bv) 456 457: 153(fvec3) Load 452(f32v1) 458: 153(fvec3) Load 454(f32v2) 459: 158(bvec3) FOrdLessThanEqual 457 458 Store 451(bv) 459 460: 153(fvec3) Load 452(f32v1) 461: 153(fvec3) Load 454(f32v2) 462: 158(bvec3) FOrdGreaterThan 460 461 Store 451(bv) 462 463: 153(fvec3) Load 452(f32v1) 464: 153(fvec3) Load 454(f32v2) 465: 158(bvec3) FOrdGreaterThanEqual 463 464 Store 451(bv) 465 466: 153(fvec3) Load 452(f32v1) 467: 153(fvec3) Load 454(f32v2) 468: 158(bvec3) FOrdEqual 466 467 Store 451(bv) 468 469: 153(fvec3) Load 452(f32v1) 470: 153(fvec3) Load 454(f32v2) 471: 158(bvec3) FUnordNotEqual 469 470 Store 451(bv) 471 Return FunctionEnd 24(builtinFragProcFuncs(): 2 Function None 3 25: Label 472(f32v): 154(ptr) Variable Function 476: 475(ptr) AccessChain 474(if32v) 32 477: 26(float) Load 476 478: 26(float) DPdx 477 479: 33(ptr) AccessChain 472(f32v) 32 Store 479 478 480: 475(ptr) AccessChain 474(if32v) 88 481: 26(float) Load 480 482: 26(float) DPdy 481 483: 33(ptr) AccessChain 472(f32v) 88 Store 483 482 484: 153(fvec3) Load 474(if32v) 485: 27(fvec2) VectorShuffle 484 484 0 1 486: 27(fvec2) DPdxFine 485 487: 33(ptr) AccessChain 472(f32v) 32 488: 26(float) CompositeExtract 486 0 Store 487 488 489: 33(ptr) AccessChain 472(f32v) 88 490: 26(float) CompositeExtract 486 1 Store 489 490 491: 153(fvec3) Load 474(if32v) 492: 27(fvec2) VectorShuffle 491 491 0 1 493: 27(fvec2) DPdyFine 492 494: 33(ptr) AccessChain 472(f32v) 32 495: 26(float) CompositeExtract 493 0 Store 494 495 496: 33(ptr) AccessChain 472(f32v) 88 497: 26(float) CompositeExtract 493 1 Store 496 497 498: 153(fvec3) Load 474(if32v) 499: 153(fvec3) DPdxCoarse 498 Store 472(f32v) 499 500: 153(fvec3) Load 474(if32v) 501: 153(fvec3) DPdxCoarse 500 Store 472(f32v) 501 502: 475(ptr) AccessChain 474(if32v) 32 503: 26(float) Load 502 504: 26(float) Fwidth 503 505: 33(ptr) AccessChain 472(f32v) 32 Store 505 504 506: 153(fvec3) Load 474(if32v) 507: 27(fvec2) VectorShuffle 506 506 0 1 508: 27(fvec2) FwidthFine 507 509: 33(ptr) AccessChain 472(f32v) 32 510: 26(float) CompositeExtract 508 0 Store 509 510 511: 33(ptr) AccessChain 472(f32v) 88 512: 26(float) CompositeExtract 508 1 Store 511 512 513: 153(fvec3) Load 474(if32v) 514: 153(fvec3) FwidthCoarse 513 Store 472(f32v) 514 515: 475(ptr) AccessChain 474(if32v) 32 516: 26(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 515 517: 33(ptr) AccessChain 472(f32v) 32 Store 517 516 519: 153(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 474(if32v) 518 520: 27(fvec2) VectorShuffle 519 519 0 1 521: 33(ptr) AccessChain 472(f32v) 32 522: 26(float) CompositeExtract 520 0 Store 521 522 523: 33(ptr) AccessChain 472(f32v) 88 524: 26(float) CompositeExtract 520 1 Store 523 524 527: 153(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 474(if32v) 526 Store 472(f32v) 527 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.float64.frag.out000066400000000000000000001115771506534232700222200ustar00rootroot00000000000000spv.float64.frag Validation failed // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 488 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability DerivativeControl Capability InterpolationFunction 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 417 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 6 "literal(" Name 8 "operators(" Name 10 "typeCast(" Name 12 "builtinTranscendentalFuncs(" Name 14 "builtinCommonFuncs(" Name 16 "builtinGeometryFuncs(" Name 18 "builtinMatrixFuncs(" Name 20 "builtinVecRelFuncs(" Name 22 "builtinFragProcFuncs(" Name 27 "f64v" Name 38 "f64v" Name 60 "f64m" Name 83 "f64" Name 107 "b" Name 149 "f64v" Name 152 "bv" Name 163 "f16v" Name 171 "i8v" Name 177 "i16v" Name 183 "i32v" Name 189 "i64v" Name 195 "u8v" Name 201 "u16v" Name 206 "u32v" Name 212 "u64v" Name 215 "f64v2" Name 216 "f64v1" Name 221 "f64v2" Name 222 "f64v1" Name 243 "f64" Name 247 "f64v3" Name 249 "ResType" Name 290 "bv" Name 311 "b" Name 321 "iv" Name 322 "ResType" Name 329 "f64" Name 330 "f64v1" Name 334 "f64v2" Name 340 "f64v3" Name 359 "f64m3" Name 360 "f64m1" Name 362 "f64m2" Name 371 "f64v1" Name 373 "f64v2" Name 378 "f64m4" Name 381 "f64" Name 384 "f64m5" Name 390 "f64m6" Name 391 "f64m7" Name 394 "bv" Name 395 "f64v1" Name 397 "f64v2" Name 415 "f64v" Name 417 "if64v" Name 474 "S" MemberName 474(S) 0 "x" MemberName 474(S) 1 "y" MemberName 474(S) 2 "z" Name 476 "B1" MemberName 476(B1) 0 "a" MemberName 476(B1) 1 "b" MemberName 476(B1) 2 "c" MemberName 476(B1) 3 "d" MemberName 476(B1) 4 "e" MemberName 476(B1) 5 "f" MemberName 476(B1) 6 "g" MemberName 476(B1) 7 "h" Name 478 "" Name 479 "sf16" Name 481 "sf" Name 482 "sd" Name 483 "f16_to_f" Name 485 "f16_to_d" Name 486 "f_to_f16" Name 487 "d_to_f16" Decorate 417(if64v) Flat Decorate 417(if64v) Location 0 Decorate 472 ArrayStride 16 Decorate 473 ArrayStride 64 MemberDecorate 474(S) 0 Offset 0 MemberDecorate 474(S) 1 Offset 16 MemberDecorate 474(S) 2 Offset 32 Decorate 475 ArrayStride 64 Decorate 476(B1) Block MemberDecorate 476(B1) 0 Offset 0 MemberDecorate 476(B1) 1 Offset 16 MemberDecorate 476(B1) 2 Offset 32 MemberDecorate 476(B1) 3 Offset 64 MemberDecorate 476(B1) 4 ColMajor MemberDecorate 476(B1) 4 MatrixStride 32 MemberDecorate 476(B1) 4 Offset 96 MemberDecorate 476(B1) 5 ColMajor MemberDecorate 476(B1) 5 MatrixStride 32 MemberDecorate 476(B1) 5 Offset 160 MemberDecorate 476(B1) 6 Offset 288 MemberDecorate 476(B1) 7 Offset 352 Decorate 478 Binding 0 Decorate 478 DescriptorSet 0 Decorate 479(sf16) SpecId 100 Decorate 481(sf) SpecId 101 Decorate 482(sd) SpecId 102 2: TypeVoid 3: TypeFunction 2 24: TypeFloat 64 25: TypeVector 24(float64_t) 2 26: TypePointer Function 25(f64vec2) 28:24(float64_t) Constant 2696277389 1051772663 29: TypeInt 32 0 30: 29(int) Constant 0 31: TypePointer Function 24(float64_t) 33:24(float64_t) Constant 0 3218079744 34:24(float64_t) Constant 3951369912 1067366481 35: 25(f64vec2) ConstantComposite 33 34 52:24(float64_t) Constant 0 1072693248 58: TypeMatrix 25(f64vec2) 2 59: TypePointer Function 58 86: 29(int) Constant 1 105: TypeBool 106: TypePointer Function 105(bool) 147: TypeVector 24(float64_t) 3 148: TypePointer Function 147(f64vec3) 150: TypeVector 105(bool) 3 151: TypePointer Function 150(bvec3) 154:24(float64_t) Constant 0 0 155:147(f64vec3) ConstantComposite 154 154 154 156:147(f64vec3) ConstantComposite 52 52 52 160: TypeFloat 16 161: TypeVector 160(float16_t) 3 162: TypePointer Function 161(f16vec3) 168: TypeInt 8 1 169: TypeVector 168(int8_t) 3 170: TypePointer Function 169(i8vec3) 174: TypeInt 16 1 175: TypeVector 174(int16_t) 3 176: TypePointer Function 175(i16vec3) 180: TypeInt 32 1 181: TypeVector 180(int) 3 182: TypePointer Function 181(ivec3) 186: TypeInt 64 1 187: TypeVector 186(int64_t) 3 188: TypePointer Function 187(i64vec3) 192: TypeInt 8 0 193: TypeVector 192(int8_t) 3 194: TypePointer Function 193(i8vec3) 198: TypeInt 16 0 199: TypeVector 198(int16_t) 3 200: TypePointer Function 199(i16vec3) 204: TypeVector 29(int) 3 205: TypePointer Function 204(ivec3) 209: TypeInt 64 0 210: TypeVector 209(int64_t) 3 211: TypePointer Function 210(i64vec3) 249(ResType): TypeStruct 147(f64vec3) 147(f64vec3) 322(ResType): TypeStruct 147(f64vec3) 181(ivec3) 357: TypeMatrix 147(f64vec3) 2 358: TypePointer Function 357 376: TypeMatrix 25(f64vec2) 3 377: TypePointer Function 376 382: TypeMatrix 147(f64vec3) 3 383: TypePointer Function 382 387: TypeVector 24(float64_t) 4 388: TypeMatrix 387(f64vec4) 4 389: TypePointer Function 388 416: TypePointer Input 147(f64vec3) 417(if64v): 416(ptr) Variable Input 418: TypePointer Input 24(float64_t) 461: 180(int) Constant 1 468:24(float64_t) Constant 0 1071644672 469: 25(f64vec2) ConstantComposite 468 468 471: 29(int) Constant 2 472: TypeArray 24(float64_t) 471 473: TypeArray 357 471 474(S): TypeStruct 24(float64_t) 25(f64vec2) 147(f64vec3) 475: TypeArray 474(S) 471 476(B1): TypeStruct 24(float64_t) 25(f64vec2) 147(f64vec3) 472 357 473 474(S) 475 477: TypePointer Uniform 476(B1) 478: 477(ptr) Variable Uniform 479(sf16):160(float16_t) SpecConstant 12288 480: TypeFloat 32 481(sf): 480(float) SpecConstant 1048576000 482(sd):24(float64_t) SpecConstant 0 1071644672 483(f16_to_f): 480(float) SpecConstantOp 115 479(sf16) 484: 480(float) SpecConstantOp 115 479(sf16) 485(f16_to_d):24(float64_t) SpecConstantOp 115 484 486(f_to_f16):160(float16_t) SpecConstantOp 115 481(sf) 487(d_to_f16):160(float16_t) SpecConstantOp 115 482(sd) 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 27(f64v): 26(ptr) Variable Function 32: 31(ptr) AccessChain 27(f64v) 30 Store 32 28 36: 25(f64vec2) Load 27(f64v) 37: 25(f64vec2) FAdd 36 35 Store 27(f64v) 37 Return FunctionEnd 8(operators(): 2 Function None 3 9: Label 38(f64v): 26(ptr) Variable Function 60(f64m): 59(ptr) Variable Function 83(f64): 31(ptr) Variable Function 107(b): 106(ptr) Variable Function 39: 25(f64vec2) Load 38(f64v) 40: 25(f64vec2) Load 38(f64v) 41: 25(f64vec2) FAdd 40 39 Store 38(f64v) 41 42: 25(f64vec2) Load 38(f64v) 43: 25(f64vec2) Load 38(f64v) 44: 25(f64vec2) FSub 43 42 Store 38(f64v) 44 45: 25(f64vec2) Load 38(f64v) 46: 25(f64vec2) Load 38(f64v) 47: 25(f64vec2) FMul 46 45 Store 38(f64v) 47 48: 25(f64vec2) Load 38(f64v) 49: 25(f64vec2) Load 38(f64v) 50: 25(f64vec2) FDiv 49 48 Store 38(f64v) 50 51: 25(f64vec2) Load 38(f64v) 53: 25(f64vec2) CompositeConstruct 52 52 54: 25(f64vec2) FAdd 51 53 Store 38(f64v) 54 55: 25(f64vec2) Load 38(f64v) 56: 25(f64vec2) CompositeConstruct 52 52 57: 25(f64vec2) FSub 55 56 Store 38(f64v) 57 61: 58 Load 60(f64m) 62: 25(f64vec2) CompositeConstruct 52 52 63: 25(f64vec2) CompositeExtract 61 0 64: 25(f64vec2) FAdd 63 62 65: 25(f64vec2) CompositeExtract 61 1 66: 25(f64vec2) FAdd 65 62 67: 58 CompositeConstruct 64 66 Store 60(f64m) 67 68: 58 Load 60(f64m) 69: 25(f64vec2) CompositeConstruct 52 52 70: 25(f64vec2) CompositeExtract 68 0 71: 25(f64vec2) FSub 70 69 72: 25(f64vec2) CompositeExtract 68 1 73: 25(f64vec2) FSub 72 69 74: 58 CompositeConstruct 71 73 Store 60(f64m) 74 75: 25(f64vec2) Load 38(f64v) 76: 25(f64vec2) FNegate 75 Store 38(f64v) 76 77: 58 Load 60(f64m) 78: 25(f64vec2) CompositeExtract 77 0 79: 25(f64vec2) FNegate 78 80: 25(f64vec2) CompositeExtract 77 1 81: 25(f64vec2) FNegate 80 82: 58 CompositeConstruct 79 81 Store 60(f64m) 82 84: 31(ptr) AccessChain 38(f64v) 30 85:24(float64_t) Load 84 87: 31(ptr) AccessChain 38(f64v) 86 88:24(float64_t) Load 87 89:24(float64_t) FAdd 85 88 Store 83(f64) 89 90: 31(ptr) AccessChain 38(f64v) 30 91:24(float64_t) Load 90 92: 31(ptr) AccessChain 38(f64v) 86 93:24(float64_t) Load 92 94:24(float64_t) FSub 91 93 Store 83(f64) 94 95: 31(ptr) AccessChain 38(f64v) 30 96:24(float64_t) Load 95 97: 31(ptr) AccessChain 38(f64v) 86 98:24(float64_t) Load 97 99:24(float64_t) FMul 96 98 Store 83(f64) 99 100: 31(ptr) AccessChain 38(f64v) 30 101:24(float64_t) Load 100 102: 31(ptr) AccessChain 38(f64v) 86 103:24(float64_t) Load 102 104:24(float64_t) FDiv 101 103 Store 83(f64) 104 108: 31(ptr) AccessChain 38(f64v) 30 109:24(float64_t) Load 108 110:24(float64_t) Load 83(f64) 111: 105(bool) FUnordNotEqual 109 110 Store 107(b) 111 112: 31(ptr) AccessChain 38(f64v) 86 113:24(float64_t) Load 112 114:24(float64_t) Load 83(f64) 115: 105(bool) FOrdEqual 113 114 Store 107(b) 115 116: 31(ptr) AccessChain 38(f64v) 30 117:24(float64_t) Load 116 118:24(float64_t) Load 83(f64) 119: 105(bool) FOrdGreaterThan 117 118 Store 107(b) 119 120: 31(ptr) AccessChain 38(f64v) 86 121:24(float64_t) Load 120 122:24(float64_t) Load 83(f64) 123: 105(bool) FOrdLessThan 121 122 Store 107(b) 123 124: 31(ptr) AccessChain 38(f64v) 30 125:24(float64_t) Load 124 126:24(float64_t) Load 83(f64) 127: 105(bool) FOrdGreaterThanEqual 125 126 Store 107(b) 127 128: 31(ptr) AccessChain 38(f64v) 86 129:24(float64_t) Load 128 130:24(float64_t) Load 83(f64) 131: 105(bool) FOrdLessThanEqual 129 130 Store 107(b) 131 132: 25(f64vec2) Load 38(f64v) 133:24(float64_t) Load 83(f64) 134: 25(f64vec2) VectorTimesScalar 132 133 Store 38(f64v) 134 135: 58 Load 60(f64m) 136:24(float64_t) Load 83(f64) 137: 58 MatrixTimesScalar 135 136 Store 60(f64m) 137 138: 58 Load 60(f64m) 139: 25(f64vec2) Load 38(f64v) 140: 25(f64vec2) MatrixTimesVector 138 139 Store 38(f64v) 140 141: 25(f64vec2) Load 38(f64v) 142: 58 Load 60(f64m) 143: 25(f64vec2) VectorTimesMatrix 141 142 Store 38(f64v) 143 144: 58 Load 60(f64m) 145: 58 Load 60(f64m) 146: 58 MatrixTimesMatrix 144 145 Store 60(f64m) 146 Return FunctionEnd 10(typeCast(): 2 Function None 3 11: Label 149(f64v): 148(ptr) Variable Function 152(bv): 151(ptr) Variable Function 163(f16v): 162(ptr) Variable Function 171(i8v): 170(ptr) Variable Function 177(i16v): 176(ptr) Variable Function 183(i32v): 182(ptr) Variable Function 189(i64v): 188(ptr) Variable Function 195(u8v): 194(ptr) Variable Function 201(u16v): 200(ptr) Variable Function 206(u32v): 205(ptr) Variable Function 212(u64v): 211(ptr) Variable Function 153: 150(bvec3) Load 152(bv) 157:147(f64vec3) Select 153 156 155 Store 149(f64v) 157 158:147(f64vec3) Load 149(f64v) 159: 150(bvec3) FUnordNotEqual 158 155 Store 152(bv) 159 164:161(f16vec3) Load 163(f16v) 165:147(f64vec3) FConvert 164 Store 149(f64v) 165 166:147(f64vec3) Load 149(f64v) 167:161(f16vec3) FConvert 166 Store 163(f16v) 167 172:147(f64vec3) Load 149(f64v) 173: 169(i8vec3) ConvertFToS 172 Store 171(i8v) 173 178:147(f64vec3) Load 149(f64v) 179:175(i16vec3) ConvertFToS 178 Store 177(i16v) 179 184:147(f64vec3) Load 149(f64v) 185: 181(ivec3) ConvertFToS 184 Store 183(i32v) 185 190:147(f64vec3) Load 149(f64v) 191:187(i64vec3) ConvertFToS 190 Store 189(i64v) 191 196:147(f64vec3) Load 149(f64v) 197: 193(i8vec3) ConvertFToU 196 Store 195(u8v) 197 202:147(f64vec3) Load 149(f64v) 203:199(i16vec3) ConvertFToU 202 Store 201(u16v) 203 207:147(f64vec3) Load 149(f64v) 208: 204(ivec3) ConvertFToU 207 Store 206(u32v) 208 213:147(f64vec3) Load 149(f64v) 214:210(i64vec3) ConvertFToU 213 Store 212(u64v) 214 Return FunctionEnd 12(builtinTranscendentalFuncs(): 2 Function None 3 13: Label 215(f64v2): 26(ptr) Variable Function 216(f64v1): 26(ptr) Variable Function 217: 25(f64vec2) Load 216(f64v1) 218: 25(f64vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 217 Store 215(f64v2) 218 219: 25(f64vec2) Load 216(f64v1) 220: 25(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 219 Store 215(f64v2) 220 Return FunctionEnd 14(builtinCommonFuncs(): 2 Function None 3 15: Label 221(f64v2): 148(ptr) Variable Function 222(f64v1): 148(ptr) Variable Function 243(f64): 31(ptr) Variable Function 247(f64v3): 148(ptr) Variable Function 290(bv): 151(ptr) Variable Function 311(b): 106(ptr) Variable Function 321(iv): 182(ptr) Variable Function 223:147(f64vec3) Load 222(f64v1) 224:147(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 223 Store 221(f64v2) 224 225:147(f64vec3) Load 222(f64v1) 226:147(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 225 Store 221(f64v2) 226 227:147(f64vec3) Load 222(f64v1) 228:147(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 227 Store 221(f64v2) 228 229:147(f64vec3) Load 222(f64v1) 230:147(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 229 Store 221(f64v2) 230 231:147(f64vec3) Load 222(f64v1) 232:147(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 231 Store 221(f64v2) 232 233:147(f64vec3) Load 222(f64v1) 234:147(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 233 Store 221(f64v2) 234 235:147(f64vec3) Load 222(f64v1) 236:147(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 235 Store 221(f64v2) 236 237:147(f64vec3) Load 222(f64v1) 238:147(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 237 Store 221(f64v2) 238 239:147(f64vec3) Load 222(f64v1) 240:147(f64vec3) Load 221(f64v2) 241:147(f64vec3) FMod 239 240 Store 221(f64v2) 241 242:147(f64vec3) Load 222(f64v1) 244:24(float64_t) Load 243(f64) 245:147(f64vec3) CompositeConstruct 244 244 244 246:147(f64vec3) FMod 242 245 Store 221(f64v2) 246 248:147(f64vec3) Load 222(f64v1) 250:249(ResType) ExtInst 1(GLSL.std.450) 36(ModfStruct) 248 251:147(f64vec3) CompositeExtract 250 1 Store 221(f64v2) 251 252:147(f64vec3) CompositeExtract 250 0 Store 247(f64v3) 252 253:147(f64vec3) Load 222(f64v1) 254:147(f64vec3) Load 221(f64v2) 255:147(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 253 254 Store 247(f64v3) 255 256:147(f64vec3) Load 222(f64v1) 257:24(float64_t) Load 243(f64) 258:147(f64vec3) CompositeConstruct 257 257 257 259:147(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 256 258 Store 247(f64v3) 259 260:147(f64vec3) Load 222(f64v1) 261:147(f64vec3) Load 221(f64v2) 262:147(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 260 261 Store 247(f64v3) 262 263:147(f64vec3) Load 222(f64v1) 264:24(float64_t) Load 243(f64) 265:147(f64vec3) CompositeConstruct 264 264 264 266:147(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 263 265 Store 247(f64v3) 266 267:147(f64vec3) Load 222(f64v1) 268:24(float64_t) Load 243(f64) 269: 31(ptr) AccessChain 221(f64v2) 30 270:24(float64_t) Load 269 271:147(f64vec3) CompositeConstruct 268 268 268 272:147(f64vec3) CompositeConstruct 270 270 270 273:147(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 267 271 272 Store 247(f64v3) 273 274:147(f64vec3) Load 222(f64v1) 275:147(f64vec3) Load 221(f64v2) 276:24(float64_t) Load 243(f64) 277:147(f64vec3) CompositeConstruct 276 276 276 278:147(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 274 275 277 Store 247(f64v3) 278 279:147(f64vec3) Load 222(f64v1) 280:147(f64vec3) Load 221(f64v2) 281:24(float64_t) Load 243(f64) 282:147(f64vec3) CompositeConstruct 281 281 281 283:147(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 279 280 282 Store 247(f64v3) 283 284:147(f64vec3) Load 222(f64v1) 285:147(f64vec3) Load 221(f64v2) 286:147(f64vec3) Load 247(f64v3) 287:147(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 284 285 286 Store 247(f64v3) 287 288:147(f64vec3) Load 222(f64v1) 289:147(f64vec3) Load 221(f64v2) 291: 150(bvec3) Load 290(bv) 292:147(f64vec3) Select 291 289 288 Store 247(f64v3) 292 293:147(f64vec3) Load 222(f64v1) 294:147(f64vec3) Load 221(f64v2) 295:147(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 293 294 Store 247(f64v3) 295 296:24(float64_t) Load 243(f64) 297:147(f64vec3) Load 247(f64v3) 298:147(f64vec3) CompositeConstruct 296 296 296 299:147(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 298 297 Store 247(f64v3) 299 300:147(f64vec3) Load 222(f64v1) 301:147(f64vec3) Load 221(f64v2) 302:147(f64vec3) Load 247(f64v3) 303:147(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 300 301 302 Store 247(f64v3) 303 304:24(float64_t) Load 243(f64) 305: 31(ptr) AccessChain 222(f64v1) 30 306:24(float64_t) Load 305 307:147(f64vec3) Load 221(f64v2) 308:147(f64vec3) CompositeConstruct 304 304 304 309:147(f64vec3) CompositeConstruct 306 306 306 310:147(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 308 309 307 Store 247(f64v3) 310 312:24(float64_t) Load 243(f64) 313: 105(bool) IsNan 312 Store 311(b) 313 314:147(f64vec3) Load 222(f64v1) 315: 150(bvec3) IsInf 314 Store 290(bv) 315 316:147(f64vec3) Load 222(f64v1) 317:147(f64vec3) Load 221(f64v2) 318:147(f64vec3) Load 247(f64v3) 319:147(f64vec3) ExtInst 1(GLSL.std.450) 50(Fma) 316 317 318 Store 247(f64v3) 319 320:147(f64vec3) Load 222(f64v1) 323:322(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 320 324: 181(ivec3) CompositeExtract 323 1 Store 321(iv) 324 325:147(f64vec3) CompositeExtract 323 0 Store 221(f64v2) 325 326:147(f64vec3) Load 222(f64v1) 327: 181(ivec3) Load 321(iv) 328:147(f64vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 326 327 Store 221(f64v2) 328 Return FunctionEnd 16(builtinGeometryFuncs(): 2 Function None 3 17: Label 329(f64): 31(ptr) Variable Function 330(f64v1): 148(ptr) Variable Function 334(f64v2): 148(ptr) Variable Function 340(f64v3): 148(ptr) Variable Function 331:147(f64vec3) Load 330(f64v1) 332:24(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 331 Store 329(f64) 332 333:147(f64vec3) Load 330(f64v1) 335:147(f64vec3) Load 334(f64v2) 336:24(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 333 335 Store 329(f64) 336 337:147(f64vec3) Load 330(f64v1) 338:147(f64vec3) Load 334(f64v2) 339:24(float64_t) Dot 337 338 Store 329(f64) 339 341:147(f64vec3) Load 330(f64v1) 342:147(f64vec3) Load 334(f64v2) 343:147(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 341 342 Store 340(f64v3) 343 344:147(f64vec3) Load 330(f64v1) 345:147(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 344 Store 334(f64v2) 345 346:147(f64vec3) Load 330(f64v1) 347:147(f64vec3) Load 334(f64v2) 348:147(f64vec3) Load 340(f64v3) 349:147(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 346 347 348 Store 340(f64v3) 349 350:147(f64vec3) Load 330(f64v1) 351:147(f64vec3) Load 334(f64v2) 352:147(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 350 351 Store 340(f64v3) 352 353:147(f64vec3) Load 330(f64v1) 354:147(f64vec3) Load 334(f64v2) 355:24(float64_t) Load 329(f64) 356:147(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 353 354 355 Store 340(f64v3) 356 Return FunctionEnd 18(builtinMatrixFuncs(): 2 Function None 3 19: Label 359(f64m3): 358(ptr) Variable Function 360(f64m1): 358(ptr) Variable Function 362(f64m2): 358(ptr) Variable Function 371(f64v1): 148(ptr) Variable Function 373(f64v2): 26(ptr) Variable Function 378(f64m4): 377(ptr) Variable Function 381(f64): 31(ptr) Variable Function 384(f64m5): 383(ptr) Variable Function 390(f64m6): 389(ptr) Variable Function 391(f64m7): 389(ptr) Variable Function 361: 357 Load 360(f64m1) 363: 357 Load 362(f64m2) 364:147(f64vec3) CompositeExtract 361 0 365:147(f64vec3) CompositeExtract 363 0 366:147(f64vec3) FMul 364 365 367:147(f64vec3) CompositeExtract 361 1 368:147(f64vec3) CompositeExtract 363 1 369:147(f64vec3) FMul 367 368 370: 357 CompositeConstruct 366 369 Store 359(f64m3) 370 372:147(f64vec3) Load 371(f64v1) 374: 25(f64vec2) Load 373(f64v2) 375: 357 OuterProduct 372 374 Store 360(f64m1) 375 379: 357 Load 360(f64m1) 380: 376 Transpose 379 Store 378(f64m4) 380 385: 382 Load 384(f64m5) 386:24(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 385 Store 381(f64) 386 392: 388 Load 391(f64m7) 393: 388 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 392 Store 390(f64m6) 393 Return FunctionEnd 20(builtinVecRelFuncs(): 2 Function None 3 21: Label 394(bv): 151(ptr) Variable Function 395(f64v1): 148(ptr) Variable Function 397(f64v2): 148(ptr) Variable Function 396:147(f64vec3) Load 395(f64v1) 398:147(f64vec3) Load 397(f64v2) 399: 150(bvec3) FOrdLessThan 396 398 Store 394(bv) 399 400:147(f64vec3) Load 395(f64v1) 401:147(f64vec3) Load 397(f64v2) 402: 150(bvec3) FOrdLessThanEqual 400 401 Store 394(bv) 402 403:147(f64vec3) Load 395(f64v1) 404:147(f64vec3) Load 397(f64v2) 405: 150(bvec3) FOrdGreaterThan 403 404 Store 394(bv) 405 406:147(f64vec3) Load 395(f64v1) 407:147(f64vec3) Load 397(f64v2) 408: 150(bvec3) FOrdGreaterThanEqual 406 407 Store 394(bv) 408 409:147(f64vec3) Load 395(f64v1) 410:147(f64vec3) Load 397(f64v2) 411: 150(bvec3) FOrdEqual 409 410 Store 394(bv) 411 412:147(f64vec3) Load 395(f64v1) 413:147(f64vec3) Load 397(f64v2) 414: 150(bvec3) FUnordNotEqual 412 413 Store 394(bv) 414 Return FunctionEnd 22(builtinFragProcFuncs(): 2 Function None 3 23: Label 415(f64v): 148(ptr) Variable Function 419: 418(ptr) AccessChain 417(if64v) 30 420:24(float64_t) Load 419 421:24(float64_t) DPdx 420 422: 31(ptr) AccessChain 415(f64v) 30 Store 422 421 423: 418(ptr) AccessChain 417(if64v) 86 424:24(float64_t) Load 423 425:24(float64_t) DPdy 424 426: 31(ptr) AccessChain 415(f64v) 86 Store 426 425 427:147(f64vec3) Load 417(if64v) 428: 25(f64vec2) VectorShuffle 427 427 0 1 429: 25(f64vec2) DPdxFine 428 430: 31(ptr) AccessChain 415(f64v) 30 431:24(float64_t) CompositeExtract 429 0 Store 430 431 432: 31(ptr) AccessChain 415(f64v) 86 433:24(float64_t) CompositeExtract 429 1 Store 432 433 434:147(f64vec3) Load 417(if64v) 435: 25(f64vec2) VectorShuffle 434 434 0 1 436: 25(f64vec2) DPdyFine 435 437: 31(ptr) AccessChain 415(f64v) 30 438:24(float64_t) CompositeExtract 436 0 Store 437 438 439: 31(ptr) AccessChain 415(f64v) 86 440:24(float64_t) CompositeExtract 436 1 Store 439 440 441:147(f64vec3) Load 417(if64v) 442:147(f64vec3) DPdxCoarse 441 Store 415(f64v) 442 443:147(f64vec3) Load 417(if64v) 444:147(f64vec3) DPdxCoarse 443 Store 415(f64v) 444 445: 418(ptr) AccessChain 417(if64v) 30 446:24(float64_t) Load 445 447:24(float64_t) Fwidth 446 448: 31(ptr) AccessChain 415(f64v) 30 Store 448 447 449:147(f64vec3) Load 417(if64v) 450: 25(f64vec2) VectorShuffle 449 449 0 1 451: 25(f64vec2) FwidthFine 450 452: 31(ptr) AccessChain 415(f64v) 30 453:24(float64_t) CompositeExtract 451 0 Store 452 453 454: 31(ptr) AccessChain 415(f64v) 86 455:24(float64_t) CompositeExtract 451 1 Store 454 455 456:147(f64vec3) Load 417(if64v) 457:147(f64vec3) FwidthCoarse 456 Store 415(f64v) 457 458: 418(ptr) AccessChain 417(if64v) 30 459:24(float64_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 458 460: 31(ptr) AccessChain 415(f64v) 30 Store 460 459 462:147(f64vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 417(if64v) 461 463: 25(f64vec2) VectorShuffle 462 462 0 1 464: 31(ptr) AccessChain 415(f64v) 30 465:24(float64_t) CompositeExtract 463 0 Store 464 465 466: 31(ptr) AccessChain 415(f64v) 86 467:24(float64_t) CompositeExtract 463 1 Store 466 467 470:147(f64vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 417(if64v) 469 Store 415(f64v) 470 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.floatFetch.frag.out000066400000000000000000006726431506534232700230260ustar00rootroot00000000000000spv.floatFetch.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 3500 Capability Shader Capability ImageGatherExtended Capability StorageImageMultisample Capability ImageCubeArray Capability ImageRect Capability SampledRect Capability InputAttachment Capability SparseResidency Capability MinLod Capability Sampled1D Capability Image1D Capability SampledCubeArray Capability SampledBuffer Capability ImageBuffer Capability ImageMSArray Capability ImageQuery Capability ImageGatherBiasLodAMD Extension "SPV_AMD_texture_gather_bias_lod" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 127 138 150 197 283 371 866 873 880 2603 3491 3499 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_texture_gather_bias_lod" SourceExtension "GL_ARB_sparse_texture2" SourceExtension "GL_ARB_sparse_texture_clamp" Name 4 "main" Name 9 "testTexture(" Name 11 "testTextureProj(" Name 13 "testTextureLod(" Name 15 "testTextureOffset(" Name 17 "testTextureProjOffset(" Name 19 "testTextureLodOffset(" Name 21 "testTextureProjLodOffset(" Name 23 "testTexelFetch(" Name 25 "testTexelFetchOffset(" Name 27 "testTextureGrad(" Name 29 "testTextureGradOffset(" Name 31 "testTextureProjGrad(" Name 33 "testTextureProjGradoffset(" Name 35 "testTextureGather(" Name 37 "testTextureGatherOffset(" Name 39 "testTextureGatherOffsets(" Name 41 "testTextureGatherLod(" Name 43 "testTextureGatherLodOffset(" Name 45 "testTextureGatherLodOffsets(" Name 50 "testTextureSize(" Name 54 "testTextureQueryLod(" Name 57 "testTextureQueryLevels(" Name 59 "testTextureSamples(" Name 61 "testImageLoad(" Name 66 "testImageStore(vf4;" Name 65 "data" Name 68 "testSparseTexture(" Name 70 "testSparseTextureLod(" Name 72 "testSparseTextureOffset(" Name 74 "testSparseTextureLodOffset(" Name 76 "testSparseTextureGrad(" Name 78 "testSparseTextureGradOffset(" Name 80 "testSparseTexelFetch(" Name 82 "testSparseTexelFetchOffset(" Name 84 "testSparseTextureGather(" Name 86 "testSparseTextureGatherOffset(" Name 88 "testSparseTextureGatherOffsets(" Name 90 "testSparseTextureGatherLod(" Name 92 "testSparseTextureGatherLodOffset(" Name 94 "testSparseTextureGatherLodOffsets(" Name 96 "testSparseImageLoad(" Name 98 "testSparseTextureClamp(" Name 100 "testTextureClamp(" Name 102 "testSparseTextureOffsetClamp(" Name 104 "testTextureOffsetClamp(" Name 106 "testSparseTextureGradClamp(" Name 108 "testTextureGradClamp(" Name 110 "testSparseTextureGradOffsetClamp(" Name 112 "testTextureGradOffsetClamp(" Name 114 "testCombinedTextureSampler(" Name 116 "testSubpassLoad(" Name 118 "texel" Name 124 "s1D" Name 127 "c1" Name 135 "s2D" Name 138 "c2" Name 146 "s3D" Name 150 "c3" Name 158 "sCube" Name 167 "s1DShadow" Name 182 "s2DShadow" Name 194 "sCubeShadow" Name 197 "c4" Name 208 "s1DArray" Name 217 "s2DArray" Name 226 "sCubeArray" Name 235 "s1DArrayShadow" Name 247 "s2DArrayShadow" Name 259 "s2DRect" Name 268 "s2DRectShadow" Name 280 "sCubeArrayShadow" Name 283 "compare" Name 293 "texel" Name 368 "texel" Name 371 "lod" Name 442 "texel" Name 521 "texel" Name 596 "texel" Name 657 "texel" Name 717 "texel" Name 773 "sBuffer" Name 784 "s2DMS" Name 795 "s2DMSArray" Name 807 "texel" Name 863 "texel" Name 866 "dPdxy1" Name 873 "dPdxy2" Name 880 "dPdxy3" Name 972 "texel" Name 1057 "texel" Name 1142 "texel" Name 1227 "texel" Name 1287 "texel" Name 1324 "texel" Name 1364 "texel" Name 1392 "texel" Name 1408 "texel" Name 1425 "size" Name 1643 "lod" Name 1713 "levels" Name 1782 "samples" Name 1796 "texel" Name 1799 "i1D" Name 1808 "i2D" Name 1817 "i3D" Name 1826 "i2DRect" Name 1835 "iCube" Name 1844 "iBuffer" Name 1853 "i1DArray" Name 1862 "i2DArray" Name 1871 "iCubeArray" Name 1880 "i2DMS" Name 1889 "i2DMSArray" Name 1943 "texel" Name 1946 "ResType" Name 1964 "ResType" Name 2014 "texel" Name 2056 "texel" Name 2101 "texel" Name 2131 "texel" Name 2203 "texel" Name 2255 "texel" Name 2307 "texel" Name 2345 "texel" Name 2404 "texel" Name 2441 "texel" Name 2488 "texel" Name 2516 "texel" Name 2532 "texel" Name 2548 "texel" Name 2600 "texel" Name 2603 "lodClamp" Name 2667 "texel" Name 2767 "texel" Name 2805 "texel" Name 2875 "texel" Name 2941 "texel" Name 3044 "texel" Name 3087 "texel" Name 3166 "texel" Name 3168 "t1D" Name 3172 "s" Name 3180 "t2D" Name 3189 "t3D" Name 3198 "tCube" Name 3207 "sShadow" Name 3238 "t1DArray" Name 3247 "t2DArray" Name 3256 "tCubeArray" Name 3285 "t2DRect" Name 3318 "subpass" Name 3324 "subpassMS" Name 3330 "result" Name 3412 "param" Name 3491 "fragColor" Name 3494 "tBuffer" Name 3496 "t2DMS" Name 3498 "t2DMSArray" Name 3499 "bias" Decorate 124(s1D) Binding 0 Decorate 124(s1D) DescriptorSet 0 Decorate 127(c1) Location 0 Decorate 135(s2D) Binding 1 Decorate 135(s2D) DescriptorSet 0 Decorate 138(c2) Location 1 Decorate 146(s3D) Binding 2 Decorate 146(s3D) DescriptorSet 0 Decorate 150(c3) Location 2 Decorate 158(sCube) Binding 4 Decorate 158(sCube) DescriptorSet 0 Decorate 167(s1DShadow) Binding 11 Decorate 167(s1DShadow) DescriptorSet 0 Decorate 182(s2DShadow) Binding 12 Decorate 182(s2DShadow) DescriptorSet 0 Decorate 194(sCubeShadow) Binding 14 Decorate 194(sCubeShadow) DescriptorSet 0 Decorate 197(c4) Location 3 Decorate 208(s1DArray) Binding 7 Decorate 208(s1DArray) DescriptorSet 0 Decorate 217(s2DArray) Binding 8 Decorate 217(s2DArray) DescriptorSet 0 Decorate 226(sCubeArray) Binding 9 Decorate 226(sCubeArray) DescriptorSet 0 Decorate 235(s1DArrayShadow) Binding 15 Decorate 235(s1DArrayShadow) DescriptorSet 0 Decorate 247(s2DArrayShadow) Binding 16 Decorate 247(s2DArrayShadow) DescriptorSet 0 Decorate 259(s2DRect) Binding 3 Decorate 259(s2DRect) DescriptorSet 0 Decorate 268(s2DRectShadow) Binding 13 Decorate 268(s2DRectShadow) DescriptorSet 0 Decorate 280(sCubeArrayShadow) Binding 17 Decorate 280(sCubeArrayShadow) DescriptorSet 0 Decorate 283(compare) Location 4 Decorate 371(lod) Location 5 Decorate 773(sBuffer) Binding 5 Decorate 773(sBuffer) DescriptorSet 0 Decorate 784(s2DMS) Binding 6 Decorate 784(s2DMS) DescriptorSet 0 Decorate 795(s2DMSArray) Binding 10 Decorate 795(s2DMSArray) DescriptorSet 0 Decorate 866(dPdxy1) Location 8 Decorate 873(dPdxy2) Location 9 Decorate 880(dPdxy3) Location 10 Decorate 1799(i1D) Binding 0 Decorate 1799(i1D) DescriptorSet 1 Decorate 1808(i2D) Binding 1 Decorate 1808(i2D) DescriptorSet 1 Decorate 1817(i3D) Binding 2 Decorate 1817(i3D) DescriptorSet 1 Decorate 1826(i2DRect) Binding 3 Decorate 1826(i2DRect) DescriptorSet 1 Decorate 1835(iCube) Binding 4 Decorate 1835(iCube) DescriptorSet 1 Decorate 1844(iBuffer) Binding 8 Decorate 1844(iBuffer) DescriptorSet 1 Decorate 1853(i1DArray) Binding 5 Decorate 1853(i1DArray) DescriptorSet 1 Decorate 1862(i2DArray) Binding 6 Decorate 1862(i2DArray) DescriptorSet 1 Decorate 1871(iCubeArray) Binding 7 Decorate 1871(iCubeArray) DescriptorSet 1 Decorate 1880(i2DMS) Binding 9 Decorate 1880(i2DMS) DescriptorSet 1 Decorate 1889(i2DMSArray) Binding 10 Decorate 1889(i2DMSArray) DescriptorSet 1 Decorate 2603(lodClamp) Location 7 Decorate 3168(t1D) Binding 0 Decorate 3168(t1D) DescriptorSet 2 Decorate 3172(s) Binding 11 Decorate 3172(s) DescriptorSet 2 Decorate 3180(t2D) Binding 1 Decorate 3180(t2D) DescriptorSet 2 Decorate 3189(t3D) Binding 2 Decorate 3189(t3D) DescriptorSet 2 Decorate 3198(tCube) Binding 4 Decorate 3198(tCube) DescriptorSet 2 Decorate 3207(sShadow) Binding 12 Decorate 3207(sShadow) DescriptorSet 2 Decorate 3238(t1DArray) Binding 5 Decorate 3238(t1DArray) DescriptorSet 2 Decorate 3247(t2DArray) Binding 6 Decorate 3247(t2DArray) DescriptorSet 2 Decorate 3256(tCubeArray) Binding 7 Decorate 3256(tCubeArray) DescriptorSet 2 Decorate 3285(t2DRect) Binding 3 Decorate 3285(t2DRect) DescriptorSet 2 Decorate 3318(subpass) Binding 0 Decorate 3318(subpass) DescriptorSet 3 Decorate 3318(subpass) InputAttachmentIndex 0 Decorate 3324(subpassMS) Binding 1 Decorate 3324(subpassMS) DescriptorSet 3 Decorate 3324(subpassMS) InputAttachmentIndex 0 Decorate 3491(fragColor) Location 0 Decorate 3494(tBuffer) Binding 8 Decorate 3494(tBuffer) DescriptorSet 2 Decorate 3496(t2DMS) Binding 9 Decorate 3496(t2DMS) DescriptorSet 2 Decorate 3498(t2DMSArray) Binding 10 Decorate 3498(t2DMSArray) DescriptorSet 2 Decorate 3499(bias) Location 6 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 47: TypeInt 32 1 48: TypeVector 47(int) 4 49: TypeFunction 48(ivec4) 52: TypeVector 6(float) 2 53: TypeFunction 52(fvec2) 56: TypeFunction 47(int) 63: TypePointer Function 7(fvec4) 64: TypeFunction 2 63(ptr) 119: 6(float) Constant 0 120: 7(fvec4) ConstantComposite 119 119 119 119 121: TypeImage 6(float) 1D sampled format:Unknown 122: TypeSampledImage 121 123: TypePointer UniformConstant 122 124(s1D): 123(ptr) Variable UniformConstant 126: TypePointer Input 6(float) 127(c1): 126(ptr) Variable Input 132: TypeImage 6(float) 2D sampled format:Unknown 133: TypeSampledImage 132 134: TypePointer UniformConstant 133 135(s2D): 134(ptr) Variable UniformConstant 137: TypePointer Input 52(fvec2) 138(c2): 137(ptr) Variable Input 143: TypeImage 6(float) 3D sampled format:Unknown 144: TypeSampledImage 143 145: TypePointer UniformConstant 144 146(s3D): 145(ptr) Variable UniformConstant 148: TypeVector 6(float) 3 149: TypePointer Input 148(fvec3) 150(c3): 149(ptr) Variable Input 155: TypeImage 6(float) Cube sampled format:Unknown 156: TypeSampledImage 155 157: TypePointer UniformConstant 156 158(sCube): 157(ptr) Variable UniformConstant 164: TypeImage 6(float) 1D depth sampled format:Unknown 165: TypeSampledImage 164 166: TypePointer UniformConstant 165 167(s1DShadow): 166(ptr) Variable UniformConstant 172: TypeInt 32 0 173: 172(int) Constant 0 174: TypePointer Function 6(float) 179: TypeImage 6(float) 2D depth sampled format:Unknown 180: TypeSampledImage 179 181: TypePointer UniformConstant 180 182(s2DShadow): 181(ptr) Variable UniformConstant 191: TypeImage 6(float) Cube depth sampled format:Unknown 192: TypeSampledImage 191 193: TypePointer UniformConstant 192 194(sCubeShadow): 193(ptr) Variable UniformConstant 196: TypePointer Input 7(fvec4) 197(c4): 196(ptr) Variable Input 205: TypeImage 6(float) 1D array sampled format:Unknown 206: TypeSampledImage 205 207: TypePointer UniformConstant 206 208(s1DArray): 207(ptr) Variable UniformConstant 214: TypeImage 6(float) 2D array sampled format:Unknown 215: TypeSampledImage 214 216: TypePointer UniformConstant 215 217(s2DArray): 216(ptr) Variable UniformConstant 223: TypeImage 6(float) Cube array sampled format:Unknown 224: TypeSampledImage 223 225: TypePointer UniformConstant 224 226(sCubeArray): 225(ptr) Variable UniformConstant 232: TypeImage 6(float) 1D depth array sampled format:Unknown 233: TypeSampledImage 232 234: TypePointer UniformConstant 233 235(s1DArrayShadow): 234(ptr) Variable UniformConstant 244: TypeImage 6(float) 2D depth array sampled format:Unknown 245: TypeSampledImage 244 246: TypePointer UniformConstant 245 247(s2DArrayShadow): 246(ptr) Variable UniformConstant 256: TypeImage 6(float) Rect sampled format:Unknown 257: TypeSampledImage 256 258: TypePointer UniformConstant 257 259(s2DRect): 258(ptr) Variable UniformConstant 265: TypeImage 6(float) Rect depth sampled format:Unknown 266: TypeSampledImage 265 267: TypePointer UniformConstant 266 268(s2DRectShadow): 267(ptr) Variable UniformConstant 277: TypeImage 6(float) Cube depth array sampled format:Unknown 278: TypeSampledImage 277 279: TypePointer UniformConstant 278 280(sCubeArrayShadow): 279(ptr) Variable UniformConstant 283(compare): 126(ptr) Variable Input 371(lod): 126(ptr) Variable Input 445: 47(int) Constant 1 451: TypeVector 47(int) 2 452: 451(ivec2) ConstantComposite 445 445 458: TypeVector 47(int) 3 459: 458(ivec3) ConstantComposite 445 445 445 770: TypeImage 6(float) Buffer sampled format:Unknown 771: TypeSampledImage 770 772: TypePointer UniformConstant 771 773(sBuffer): 772(ptr) Variable UniformConstant 781: TypeImage 6(float) 2D multi-sampled sampled format:Unknown 782: TypeSampledImage 781 783: TypePointer UniformConstant 782 784(s2DMS): 783(ptr) Variable UniformConstant 792: TypeImage 6(float) 2D array multi-sampled sampled format:Unknown 793: TypeSampledImage 792 794: TypePointer UniformConstant 793 795(s2DMSArray): 794(ptr) Variable UniformConstant 799: 47(int) Constant 2 866(dPdxy1): 126(ptr) Variable Input 873(dPdxy2): 137(ptr) Variable Input 880(dPdxy3): 149(ptr) Variable Input 1230: 47(int) Constant 0 1327: 172(int) Constant 4 1328: TypeArray 451(ivec2) 1327 1329: 1328 ConstantComposite 452 452 452 452 1424: TypePointer Function 48(ivec4) 1426: 48(ivec4) ConstantComposite 1230 1230 1230 1230 1432: TypePointer Function 47(int) 1447: 172(int) Constant 1 1462: 172(int) Constant 2 1642: TypePointer Function 52(fvec2) 1644: 52(fvec2) ConstantComposite 119 119 1797: TypeImage 6(float) 1D nonsampled format:Rgba16f 1798: TypePointer UniformConstant 1797 1799(i1D): 1798(ptr) Variable UniformConstant 1806: TypeImage 6(float) 2D nonsampled format:Rgba16f 1807: TypePointer UniformConstant 1806 1808(i2D): 1807(ptr) Variable UniformConstant 1815: TypeImage 6(float) 3D nonsampled format:Rgba16f 1816: TypePointer UniformConstant 1815 1817(i3D): 1816(ptr) Variable UniformConstant 1824: TypeImage 6(float) Rect nonsampled format:Rgba16f 1825: TypePointer UniformConstant 1824 1826(i2DRect): 1825(ptr) Variable UniformConstant 1833: TypeImage 6(float) Cube nonsampled format:Rgba16f 1834: TypePointer UniformConstant 1833 1835(iCube): 1834(ptr) Variable UniformConstant 1842: TypeImage 6(float) Buffer nonsampled format:Rgba16f 1843: TypePointer UniformConstant 1842 1844(iBuffer): 1843(ptr) Variable UniformConstant 1851: TypeImage 6(float) 1D array nonsampled format:Rgba16f 1852: TypePointer UniformConstant 1851 1853(i1DArray): 1852(ptr) Variable UniformConstant 1860: TypeImage 6(float) 2D array nonsampled format:Rgba16f 1861: TypePointer UniformConstant 1860 1862(i2DArray): 1861(ptr) Variable UniformConstant 1869: TypeImage 6(float) Cube array nonsampled format:Rgba16f 1870: TypePointer UniformConstant 1869 1871(iCubeArray): 1870(ptr) Variable UniformConstant 1878: TypeImage 6(float) 2D multi-sampled nonsampled format:Rgba16f 1879: TypePointer UniformConstant 1878 1880(i2DMS): 1879(ptr) Variable UniformConstant 1887: TypeImage 6(float) 2D array multi-sampled nonsampled format:Rgba16f 1888: TypePointer UniformConstant 1887 1889(i2DMSArray): 1888(ptr) Variable UniformConstant 1946(ResType): TypeStruct 47(int) 7(fvec4) 1964(ResType): TypeStruct 47(int) 6(float) 2444: 451(ivec2) ConstantComposite 445 799 2445: 47(int) Constant 3 2446: 47(int) Constant 4 2447: 451(ivec2) ConstantComposite 2445 2446 2448: 47(int) Constant 15 2449: 47(int) Constant 16 2450: 451(ivec2) ConstantComposite 2448 2449 2451: 47(int) Constant 4294967294 2452: 451(ivec2) ConstantComposite 2451 1230 2453: 1328 ConstantComposite 2444 2447 2450 2452 2603(lodClamp): 126(ptr) Variable Input 3167: TypePointer UniformConstant 121 3168(t1D): 3167(ptr) Variable UniformConstant 3170: TypeSampler 3171: TypePointer UniformConstant 3170 3172(s): 3171(ptr) Variable UniformConstant 3179: TypePointer UniformConstant 132 3180(t2D): 3179(ptr) Variable UniformConstant 3188: TypePointer UniformConstant 143 3189(t3D): 3188(ptr) Variable UniformConstant 3197: TypePointer UniformConstant 155 3198(tCube): 3197(ptr) Variable UniformConstant 3207(sShadow): 3171(ptr) Variable UniformConstant 3237: TypePointer UniformConstant 205 3238(t1DArray): 3237(ptr) Variable UniformConstant 3246: TypePointer UniformConstant 214 3247(t2DArray): 3246(ptr) Variable UniformConstant 3255: TypePointer UniformConstant 223 3256(tCubeArray): 3255(ptr) Variable UniformConstant 3284: TypePointer UniformConstant 256 3285(t2DRect): 3284(ptr) Variable UniformConstant 3316: TypeImage 6(float) SubpassData nonsampled format:Unknown 3317: TypePointer UniformConstant 3316 3318(subpass): 3317(ptr) Variable UniformConstant 3320: 451(ivec2) ConstantComposite 1230 1230 3322: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown 3323: TypePointer UniformConstant 3322 3324(subpassMS): 3323(ptr) Variable UniformConstant 3490: TypePointer Output 7(fvec4) 3491(fragColor): 3490(ptr) Variable Output 3493: TypePointer UniformConstant 770 3494(tBuffer): 3493(ptr) Variable UniformConstant 3495: TypePointer UniformConstant 781 3496(t2DMS): 3495(ptr) Variable UniformConstant 3497: TypePointer UniformConstant 792 3498(t2DMSArray): 3497(ptr) Variable UniformConstant 3499(bias): 126(ptr) Variable Input 4(main): 2 Function None 3 5: Label 3330(result): 63(ptr) Variable Function 3412(param): 63(ptr) Variable Function Store 3330(result) 120 3331: 7(fvec4) FunctionCall 9(testTexture() 3332: 7(fvec4) Load 3330(result) 3333: 7(fvec4) FAdd 3332 3331 Store 3330(result) 3333 3334: 7(fvec4) FunctionCall 11(testTextureProj() 3335: 7(fvec4) Load 3330(result) 3336: 7(fvec4) FAdd 3335 3334 Store 3330(result) 3336 3337: 7(fvec4) FunctionCall 13(testTextureLod() 3338: 7(fvec4) Load 3330(result) 3339: 7(fvec4) FAdd 3338 3337 Store 3330(result) 3339 3340: 7(fvec4) FunctionCall 15(testTextureOffset() 3341: 7(fvec4) Load 3330(result) 3342: 7(fvec4) FAdd 3341 3340 Store 3330(result) 3342 3343: 7(fvec4) FunctionCall 19(testTextureLodOffset() 3344: 7(fvec4) Load 3330(result) 3345: 7(fvec4) FAdd 3344 3343 Store 3330(result) 3345 3346: 7(fvec4) FunctionCall 21(testTextureProjLodOffset() 3347: 7(fvec4) Load 3330(result) 3348: 7(fvec4) FAdd 3347 3346 Store 3330(result) 3348 3349: 7(fvec4) FunctionCall 23(testTexelFetch() 3350: 7(fvec4) Load 3330(result) 3351: 7(fvec4) FAdd 3350 3349 Store 3330(result) 3351 3352: 7(fvec4) FunctionCall 25(testTexelFetchOffset() 3353: 7(fvec4) Load 3330(result) 3354: 7(fvec4) FAdd 3353 3352 Store 3330(result) 3354 3355: 7(fvec4) FunctionCall 27(testTextureGrad() 3356: 7(fvec4) Load 3330(result) 3357: 7(fvec4) FAdd 3356 3355 Store 3330(result) 3357 3358: 7(fvec4) FunctionCall 29(testTextureGradOffset() 3359: 7(fvec4) Load 3330(result) 3360: 7(fvec4) FAdd 3359 3358 Store 3330(result) 3360 3361: 7(fvec4) FunctionCall 31(testTextureProjGrad() 3362: 7(fvec4) Load 3330(result) 3363: 7(fvec4) FAdd 3362 3361 Store 3330(result) 3363 3364: 7(fvec4) FunctionCall 33(testTextureProjGradoffset() 3365: 7(fvec4) Load 3330(result) 3366: 7(fvec4) FAdd 3365 3364 Store 3330(result) 3366 3367: 7(fvec4) FunctionCall 35(testTextureGather() 3368: 7(fvec4) Load 3330(result) 3369: 7(fvec4) FAdd 3368 3367 Store 3330(result) 3369 3370: 7(fvec4) FunctionCall 37(testTextureGatherOffset() 3371: 7(fvec4) Load 3330(result) 3372: 7(fvec4) FAdd 3371 3370 Store 3330(result) 3372 3373: 7(fvec4) FunctionCall 39(testTextureGatherOffsets() 3374: 7(fvec4) Load 3330(result) 3375: 7(fvec4) FAdd 3374 3373 Store 3330(result) 3375 3376: 7(fvec4) FunctionCall 41(testTextureGatherLod() 3377: 7(fvec4) Load 3330(result) 3378: 7(fvec4) FAdd 3377 3376 Store 3330(result) 3378 3379: 7(fvec4) FunctionCall 43(testTextureGatherLodOffset() 3380: 7(fvec4) Load 3330(result) 3381: 7(fvec4) FAdd 3380 3379 Store 3330(result) 3381 3382: 7(fvec4) FunctionCall 45(testTextureGatherLodOffsets() 3383: 7(fvec4) Load 3330(result) 3384: 7(fvec4) FAdd 3383 3382 Store 3330(result) 3384 3385: 48(ivec4) FunctionCall 50(testTextureSize() 3386: 7(fvec4) ConvertSToF 3385 3387: 7(fvec4) Load 3330(result) 3388: 7(fvec4) FAdd 3387 3386 Store 3330(result) 3388 3389: 52(fvec2) FunctionCall 54(testTextureQueryLod() 3390: 7(fvec4) Load 3330(result) 3391: 52(fvec2) VectorShuffle 3390 3390 0 1 3392: 52(fvec2) FAdd 3391 3389 3393: 174(ptr) AccessChain 3330(result) 173 3394: 6(float) CompositeExtract 3392 0 Store 3393 3394 3395: 174(ptr) AccessChain 3330(result) 1447 3396: 6(float) CompositeExtract 3392 1 Store 3395 3396 3397: 47(int) FunctionCall 57(testTextureQueryLevels() 3398: 6(float) ConvertSToF 3397 3399: 174(ptr) AccessChain 3330(result) 173 3400: 6(float) Load 3399 3401: 6(float) FAdd 3400 3398 3402: 174(ptr) AccessChain 3330(result) 173 Store 3402 3401 3403: 47(int) FunctionCall 59(testTextureSamples() 3404: 6(float) ConvertSToF 3403 3405: 174(ptr) AccessChain 3330(result) 173 3406: 6(float) Load 3405 3407: 6(float) FAdd 3406 3404 3408: 174(ptr) AccessChain 3330(result) 173 Store 3408 3407 3409: 7(fvec4) FunctionCall 61(testImageLoad() 3410: 7(fvec4) Load 3330(result) 3411: 7(fvec4) FAdd 3410 3409 Store 3330(result) 3411 3413: 7(fvec4) Load 3330(result) Store 3412(param) 3413 3414: 2 FunctionCall 66(testImageStore(vf4;) 3412(param) 3415: 7(fvec4) FunctionCall 68(testSparseTexture() 3416: 7(fvec4) Load 3330(result) 3417: 7(fvec4) FAdd 3416 3415 Store 3330(result) 3417 3418: 7(fvec4) FunctionCall 70(testSparseTextureLod() 3419: 7(fvec4) Load 3330(result) 3420: 7(fvec4) FAdd 3419 3418 Store 3330(result) 3420 3421: 7(fvec4) FunctionCall 72(testSparseTextureOffset() 3422: 7(fvec4) Load 3330(result) 3423: 7(fvec4) FAdd 3422 3421 Store 3330(result) 3423 3424: 7(fvec4) FunctionCall 74(testSparseTextureLodOffset() 3425: 7(fvec4) Load 3330(result) 3426: 7(fvec4) FAdd 3425 3424 Store 3330(result) 3426 3427: 7(fvec4) FunctionCall 76(testSparseTextureGrad() 3428: 7(fvec4) Load 3330(result) 3429: 7(fvec4) FAdd 3428 3427 Store 3330(result) 3429 3430: 7(fvec4) FunctionCall 78(testSparseTextureGradOffset() 3431: 7(fvec4) Load 3330(result) 3432: 7(fvec4) FAdd 3431 3430 Store 3330(result) 3432 3433: 7(fvec4) FunctionCall 80(testSparseTexelFetch() 3434: 7(fvec4) Load 3330(result) 3435: 7(fvec4) FAdd 3434 3433 Store 3330(result) 3435 3436: 7(fvec4) FunctionCall 82(testSparseTexelFetchOffset() 3437: 7(fvec4) Load 3330(result) 3438: 7(fvec4) FAdd 3437 3436 Store 3330(result) 3438 3439: 7(fvec4) FunctionCall 84(testSparseTextureGather() 3440: 7(fvec4) Load 3330(result) 3441: 7(fvec4) FAdd 3440 3439 Store 3330(result) 3441 3442: 7(fvec4) FunctionCall 86(testSparseTextureGatherOffset() 3443: 7(fvec4) Load 3330(result) 3444: 7(fvec4) FAdd 3443 3442 Store 3330(result) 3444 3445: 7(fvec4) FunctionCall 88(testSparseTextureGatherOffsets() 3446: 7(fvec4) Load 3330(result) 3447: 7(fvec4) FAdd 3446 3445 Store 3330(result) 3447 3448: 7(fvec4) FunctionCall 90(testSparseTextureGatherLod() 3449: 7(fvec4) Load 3330(result) 3450: 7(fvec4) FAdd 3449 3448 Store 3330(result) 3450 3451: 7(fvec4) FunctionCall 92(testSparseTextureGatherLodOffset() 3452: 7(fvec4) Load 3330(result) 3453: 7(fvec4) FAdd 3452 3451 Store 3330(result) 3453 3454: 7(fvec4) FunctionCall 94(testSparseTextureGatherLodOffsets() 3455: 7(fvec4) Load 3330(result) 3456: 7(fvec4) FAdd 3455 3454 Store 3330(result) 3456 3457: 7(fvec4) FunctionCall 96(testSparseImageLoad() 3458: 7(fvec4) Load 3330(result) 3459: 7(fvec4) FAdd 3458 3457 Store 3330(result) 3459 3460: 7(fvec4) FunctionCall 98(testSparseTextureClamp() 3461: 7(fvec4) Load 3330(result) 3462: 7(fvec4) FAdd 3461 3460 Store 3330(result) 3462 3463: 7(fvec4) FunctionCall 100(testTextureClamp() 3464: 7(fvec4) Load 3330(result) 3465: 7(fvec4) FAdd 3464 3463 Store 3330(result) 3465 3466: 7(fvec4) FunctionCall 102(testSparseTextureOffsetClamp() 3467: 7(fvec4) Load 3330(result) 3468: 7(fvec4) FAdd 3467 3466 Store 3330(result) 3468 3469: 7(fvec4) FunctionCall 104(testTextureOffsetClamp() 3470: 7(fvec4) Load 3330(result) 3471: 7(fvec4) FAdd 3470 3469 Store 3330(result) 3471 3472: 7(fvec4) FunctionCall 76(testSparseTextureGrad() 3473: 7(fvec4) Load 3330(result) 3474: 7(fvec4) FAdd 3473 3472 Store 3330(result) 3474 3475: 7(fvec4) FunctionCall 27(testTextureGrad() 3476: 7(fvec4) Load 3330(result) 3477: 7(fvec4) FAdd 3476 3475 Store 3330(result) 3477 3478: 7(fvec4) FunctionCall 110(testSparseTextureGradOffsetClamp() 3479: 7(fvec4) Load 3330(result) 3480: 7(fvec4) FAdd 3479 3478 Store 3330(result) 3480 3481: 7(fvec4) FunctionCall 112(testTextureGradOffsetClamp() 3482: 7(fvec4) Load 3330(result) 3483: 7(fvec4) FAdd 3482 3481 Store 3330(result) 3483 3484: 7(fvec4) FunctionCall 114(testCombinedTextureSampler() 3485: 7(fvec4) Load 3330(result) 3486: 7(fvec4) FAdd 3485 3484 Store 3330(result) 3486 3487: 7(fvec4) FunctionCall 116(testSubpassLoad() 3488: 7(fvec4) Load 3330(result) 3489: 7(fvec4) FAdd 3488 3487 Store 3330(result) 3489 3492: 7(fvec4) Load 3330(result) Store 3491(fragColor) 3492 Return FunctionEnd 9(testTexture(): 7(fvec4) Function None 8 10: Label 118(texel): 63(ptr) Variable Function Store 118(texel) 120 125: 122 Load 124(s1D) 128: 6(float) Load 127(c1) 129: 7(fvec4) ImageSampleImplicitLod 125 128 130: 7(fvec4) Load 118(texel) 131: 7(fvec4) FAdd 130 129 Store 118(texel) 131 136: 133 Load 135(s2D) 139: 52(fvec2) Load 138(c2) 140: 7(fvec4) ImageSampleImplicitLod 136 139 141: 7(fvec4) Load 118(texel) 142: 7(fvec4) FAdd 141 140 Store 118(texel) 142 147: 144 Load 146(s3D) 151: 148(fvec3) Load 150(c3) 152: 7(fvec4) ImageSampleImplicitLod 147 151 153: 7(fvec4) Load 118(texel) 154: 7(fvec4) FAdd 153 152 Store 118(texel) 154 159: 156 Load 158(sCube) 160: 148(fvec3) Load 150(c3) 161: 7(fvec4) ImageSampleImplicitLod 159 160 162: 7(fvec4) Load 118(texel) 163: 7(fvec4) FAdd 162 161 Store 118(texel) 163 168: 165 Load 167(s1DShadow) 169: 148(fvec3) Load 150(c3) 170: 6(float) CompositeExtract 169 2 171: 6(float) ImageSampleDrefImplicitLod 168 169 170 175: 174(ptr) AccessChain 118(texel) 173 176: 6(float) Load 175 177: 6(float) FAdd 176 171 178: 174(ptr) AccessChain 118(texel) 173 Store 178 177 183: 180 Load 182(s2DShadow) 184: 148(fvec3) Load 150(c3) 185: 6(float) CompositeExtract 184 2 186: 6(float) ImageSampleDrefImplicitLod 183 184 185 187: 174(ptr) AccessChain 118(texel) 173 188: 6(float) Load 187 189: 6(float) FAdd 188 186 190: 174(ptr) AccessChain 118(texel) 173 Store 190 189 195: 192 Load 194(sCubeShadow) 198: 7(fvec4) Load 197(c4) 199: 6(float) CompositeExtract 198 3 200: 6(float) ImageSampleDrefImplicitLod 195 198 199 201: 174(ptr) AccessChain 118(texel) 173 202: 6(float) Load 201 203: 6(float) FAdd 202 200 204: 174(ptr) AccessChain 118(texel) 173 Store 204 203 209: 206 Load 208(s1DArray) 210: 52(fvec2) Load 138(c2) 211: 7(fvec4) ImageSampleImplicitLod 209 210 212: 7(fvec4) Load 118(texel) 213: 7(fvec4) FAdd 212 211 Store 118(texel) 213 218: 215 Load 217(s2DArray) 219: 148(fvec3) Load 150(c3) 220: 7(fvec4) ImageSampleImplicitLod 218 219 221: 7(fvec4) Load 118(texel) 222: 7(fvec4) FAdd 221 220 Store 118(texel) 222 227: 224 Load 226(sCubeArray) 228: 7(fvec4) Load 197(c4) 229: 7(fvec4) ImageSampleImplicitLod 227 228 230: 7(fvec4) Load 118(texel) 231: 7(fvec4) FAdd 230 229 Store 118(texel) 231 236: 233 Load 235(s1DArrayShadow) 237: 148(fvec3) Load 150(c3) 238: 6(float) CompositeExtract 237 2 239: 6(float) ImageSampleDrefImplicitLod 236 237 238 240: 174(ptr) AccessChain 118(texel) 173 241: 6(float) Load 240 242: 6(float) FAdd 241 239 243: 174(ptr) AccessChain 118(texel) 173 Store 243 242 248: 245 Load 247(s2DArrayShadow) 249: 7(fvec4) Load 197(c4) 250: 6(float) CompositeExtract 249 3 251: 6(float) ImageSampleDrefImplicitLod 248 249 250 252: 174(ptr) AccessChain 118(texel) 173 253: 6(float) Load 252 254: 6(float) FAdd 253 251 255: 174(ptr) AccessChain 118(texel) 173 Store 255 254 260: 257 Load 259(s2DRect) 261: 52(fvec2) Load 138(c2) 262: 7(fvec4) ImageSampleImplicitLod 260 261 263: 7(fvec4) Load 118(texel) 264: 7(fvec4) FAdd 263 262 Store 118(texel) 264 269: 266 Load 268(s2DRectShadow) 270: 148(fvec3) Load 150(c3) 271: 6(float) CompositeExtract 270 2 272: 6(float) ImageSampleDrefImplicitLod 269 270 271 273: 174(ptr) AccessChain 118(texel) 173 274: 6(float) Load 273 275: 6(float) FAdd 274 272 276: 174(ptr) AccessChain 118(texel) 173 Store 276 275 281: 278 Load 280(sCubeArrayShadow) 282: 7(fvec4) Load 197(c4) 284: 6(float) Load 283(compare) 285: 6(float) ImageSampleDrefImplicitLod 281 282 284 286: 174(ptr) AccessChain 118(texel) 173 287: 6(float) Load 286 288: 6(float) FAdd 287 285 289: 174(ptr) AccessChain 118(texel) 173 Store 289 288 290: 7(fvec4) Load 118(texel) ReturnValue 290 FunctionEnd 11(testTextureProj(): 7(fvec4) Function None 8 12: Label 293(texel): 63(ptr) Variable Function Store 293(texel) 120 294: 122 Load 124(s1D) 295: 52(fvec2) Load 138(c2) 296: 7(fvec4) ImageSampleProjImplicitLod 294 295 297: 7(fvec4) Load 293(texel) 298: 7(fvec4) FAdd 297 296 Store 293(texel) 298 299: 122 Load 124(s1D) 300: 7(fvec4) Load 197(c4) 301: 6(float) CompositeExtract 300 3 302: 7(fvec4) CompositeInsert 301 300 1 303: 7(fvec4) ImageSampleProjImplicitLod 299 302 304: 7(fvec4) Load 293(texel) 305: 7(fvec4) FAdd 304 303 Store 293(texel) 305 306: 133 Load 135(s2D) 307: 148(fvec3) Load 150(c3) 308: 7(fvec4) ImageSampleProjImplicitLod 306 307 309: 7(fvec4) Load 293(texel) 310: 7(fvec4) FAdd 309 308 Store 293(texel) 310 311: 133 Load 135(s2D) 312: 7(fvec4) Load 197(c4) 313: 6(float) CompositeExtract 312 3 314: 7(fvec4) CompositeInsert 313 312 2 315: 7(fvec4) ImageSampleProjImplicitLod 311 314 316: 7(fvec4) Load 293(texel) 317: 7(fvec4) FAdd 316 315 Store 293(texel) 317 318: 144 Load 146(s3D) 319: 7(fvec4) Load 197(c4) 320: 7(fvec4) ImageSampleProjImplicitLod 318 319 321: 7(fvec4) Load 293(texel) 322: 7(fvec4) FAdd 321 320 Store 293(texel) 322 323: 165 Load 167(s1DShadow) 324: 7(fvec4) Load 197(c4) 325: 6(float) CompositeExtract 324 2 326: 6(float) CompositeExtract 324 3 327: 7(fvec4) CompositeInsert 326 324 1 328: 6(float) ImageSampleProjDrefImplicitLod 323 327 325 329: 174(ptr) AccessChain 293(texel) 173 330: 6(float) Load 329 331: 6(float) FAdd 330 328 332: 174(ptr) AccessChain 293(texel) 173 Store 332 331 333: 180 Load 182(s2DShadow) 334: 7(fvec4) Load 197(c4) 335: 6(float) CompositeExtract 334 2 336: 6(float) CompositeExtract 334 3 337: 7(fvec4) CompositeInsert 336 334 2 338: 6(float) ImageSampleProjDrefImplicitLod 333 337 335 339: 174(ptr) AccessChain 293(texel) 173 340: 6(float) Load 339 341: 6(float) FAdd 340 338 342: 174(ptr) AccessChain 293(texel) 173 Store 342 341 343: 257 Load 259(s2DRect) 344: 148(fvec3) Load 150(c3) 345: 7(fvec4) ImageSampleProjImplicitLod 343 344 346: 7(fvec4) Load 293(texel) 347: 7(fvec4) FAdd 346 345 Store 293(texel) 347 348: 257 Load 259(s2DRect) 349: 7(fvec4) Load 197(c4) 350: 6(float) CompositeExtract 349 3 351: 7(fvec4) CompositeInsert 350 349 2 352: 7(fvec4) ImageSampleProjImplicitLod 348 351 353: 7(fvec4) Load 293(texel) 354: 7(fvec4) FAdd 353 352 Store 293(texel) 354 355: 266 Load 268(s2DRectShadow) 356: 7(fvec4) Load 197(c4) 357: 6(float) CompositeExtract 356 2 358: 6(float) CompositeExtract 356 3 359: 7(fvec4) CompositeInsert 358 356 2 360: 6(float) ImageSampleProjDrefImplicitLod 355 359 357 361: 174(ptr) AccessChain 293(texel) 173 362: 6(float) Load 361 363: 6(float) FAdd 362 360 364: 174(ptr) AccessChain 293(texel) 173 Store 364 363 365: 7(fvec4) Load 293(texel) ReturnValue 365 FunctionEnd 13(testTextureLod(): 7(fvec4) Function None 8 14: Label 368(texel): 63(ptr) Variable Function Store 368(texel) 120 369: 122 Load 124(s1D) 370: 6(float) Load 127(c1) 372: 6(float) Load 371(lod) 373: 7(fvec4) ImageSampleExplicitLod 369 370 Lod 372 374: 7(fvec4) Load 368(texel) 375: 7(fvec4) FAdd 374 373 Store 368(texel) 375 376: 133 Load 135(s2D) 377: 52(fvec2) Load 138(c2) 378: 6(float) Load 371(lod) 379: 7(fvec4) ImageSampleExplicitLod 376 377 Lod 378 380: 7(fvec4) Load 368(texel) 381: 7(fvec4) FAdd 380 379 Store 368(texel) 381 382: 144 Load 146(s3D) 383: 148(fvec3) Load 150(c3) 384: 6(float) Load 371(lod) 385: 7(fvec4) ImageSampleExplicitLod 382 383 Lod 384 386: 7(fvec4) Load 368(texel) 387: 7(fvec4) FAdd 386 385 Store 368(texel) 387 388: 156 Load 158(sCube) 389: 148(fvec3) Load 150(c3) 390: 6(float) Load 371(lod) 391: 7(fvec4) ImageSampleExplicitLod 388 389 Lod 390 392: 7(fvec4) Load 368(texel) 393: 7(fvec4) FAdd 392 391 Store 368(texel) 393 394: 165 Load 167(s1DShadow) 395: 148(fvec3) Load 150(c3) 396: 6(float) Load 371(lod) 397: 6(float) CompositeExtract 395 2 398: 6(float) ImageSampleDrefExplicitLod 394 395 397 Lod 396 399: 174(ptr) AccessChain 368(texel) 173 400: 6(float) Load 399 401: 6(float) FAdd 400 398 402: 174(ptr) AccessChain 368(texel) 173 Store 402 401 403: 180 Load 182(s2DShadow) 404: 148(fvec3) Load 150(c3) 405: 6(float) Load 371(lod) 406: 6(float) CompositeExtract 404 2 407: 6(float) ImageSampleDrefExplicitLod 403 404 406 Lod 405 408: 174(ptr) AccessChain 368(texel) 173 409: 6(float) Load 408 410: 6(float) FAdd 409 407 411: 174(ptr) AccessChain 368(texel) 173 Store 411 410 412: 206 Load 208(s1DArray) 413: 52(fvec2) Load 138(c2) 414: 6(float) Load 371(lod) 415: 7(fvec4) ImageSampleExplicitLod 412 413 Lod 414 416: 7(fvec4) Load 368(texel) 417: 7(fvec4) FAdd 416 415 Store 368(texel) 417 418: 215 Load 217(s2DArray) 419: 148(fvec3) Load 150(c3) 420: 6(float) Load 371(lod) 421: 7(fvec4) ImageSampleExplicitLod 418 419 Lod 420 422: 7(fvec4) Load 368(texel) 423: 7(fvec4) FAdd 422 421 Store 368(texel) 423 424: 233 Load 235(s1DArrayShadow) 425: 148(fvec3) Load 150(c3) 426: 6(float) Load 371(lod) 427: 6(float) CompositeExtract 425 2 428: 6(float) ImageSampleDrefExplicitLod 424 425 427 Lod 426 429: 174(ptr) AccessChain 368(texel) 173 430: 6(float) Load 429 431: 6(float) FAdd 430 428 432: 174(ptr) AccessChain 368(texel) 173 Store 432 431 433: 224 Load 226(sCubeArray) 434: 7(fvec4) Load 197(c4) 435: 6(float) Load 371(lod) 436: 7(fvec4) ImageSampleExplicitLod 433 434 Lod 435 437: 7(fvec4) Load 368(texel) 438: 7(fvec4) FAdd 437 436 Store 368(texel) 438 439: 7(fvec4) Load 368(texel) ReturnValue 439 FunctionEnd 15(testTextureOffset(): 7(fvec4) Function None 8 16: Label 442(texel): 63(ptr) Variable Function Store 442(texel) 120 443: 122 Load 124(s1D) 444: 6(float) Load 127(c1) 446: 7(fvec4) ImageSampleImplicitLod 443 444 ConstOffset 445 447: 7(fvec4) Load 442(texel) 448: 7(fvec4) FAdd 447 446 Store 442(texel) 448 449: 133 Load 135(s2D) 450: 52(fvec2) Load 138(c2) 453: 7(fvec4) ImageSampleImplicitLod 449 450 ConstOffset 452 454: 7(fvec4) Load 442(texel) 455: 7(fvec4) FAdd 454 453 Store 442(texel) 455 456: 144 Load 146(s3D) 457: 148(fvec3) Load 150(c3) 460: 7(fvec4) ImageSampleImplicitLod 456 457 ConstOffset 459 461: 7(fvec4) Load 442(texel) 462: 7(fvec4) FAdd 461 460 Store 442(texel) 462 463: 257 Load 259(s2DRect) 464: 52(fvec2) Load 138(c2) 465: 7(fvec4) ImageSampleImplicitLod 463 464 ConstOffset 452 466: 7(fvec4) Load 442(texel) 467: 7(fvec4) FAdd 466 465 Store 442(texel) 467 468: 266 Load 268(s2DRectShadow) 469: 148(fvec3) Load 150(c3) 470: 6(float) CompositeExtract 469 2 471: 6(float) ImageSampleDrefImplicitLod 468 469 470 ConstOffset 452 472: 174(ptr) AccessChain 442(texel) 173 473: 6(float) Load 472 474: 6(float) FAdd 473 471 475: 174(ptr) AccessChain 442(texel) 173 Store 475 474 476: 165 Load 167(s1DShadow) 477: 148(fvec3) Load 150(c3) 478: 6(float) CompositeExtract 477 2 479: 6(float) ImageSampleDrefImplicitLod 476 477 478 ConstOffset 445 480: 174(ptr) AccessChain 442(texel) 173 481: 6(float) Load 480 482: 6(float) FAdd 481 479 483: 174(ptr) AccessChain 442(texel) 173 Store 483 482 484: 180 Load 182(s2DShadow) 485: 148(fvec3) Load 150(c3) 486: 6(float) CompositeExtract 485 2 487: 6(float) ImageSampleDrefImplicitLod 484 485 486 ConstOffset 452 488: 174(ptr) AccessChain 442(texel) 173 489: 6(float) Load 488 490: 6(float) FAdd 489 487 491: 174(ptr) AccessChain 442(texel) 173 Store 491 490 492: 206 Load 208(s1DArray) 493: 52(fvec2) Load 138(c2) 494: 7(fvec4) ImageSampleImplicitLod 492 493 ConstOffset 445 495: 7(fvec4) Load 442(texel) 496: 7(fvec4) FAdd 495 494 Store 442(texel) 496 497: 215 Load 217(s2DArray) 498: 148(fvec3) Load 150(c3) 499: 7(fvec4) ImageSampleImplicitLod 497 498 ConstOffset 452 500: 7(fvec4) Load 442(texel) 501: 7(fvec4) FAdd 500 499 Store 442(texel) 501 502: 233 Load 235(s1DArrayShadow) 503: 148(fvec3) Load 150(c3) 504: 6(float) CompositeExtract 503 2 505: 6(float) ImageSampleDrefImplicitLod 502 503 504 ConstOffset 445 506: 174(ptr) AccessChain 442(texel) 173 507: 6(float) Load 506 508: 6(float) FAdd 507 505 509: 174(ptr) AccessChain 442(texel) 173 Store 509 508 510: 245 Load 247(s2DArrayShadow) 511: 7(fvec4) Load 197(c4) 512: 6(float) CompositeExtract 511 3 513: 6(float) ImageSampleDrefImplicitLod 510 511 512 ConstOffset 452 514: 174(ptr) AccessChain 442(texel) 173 515: 6(float) Load 514 516: 6(float) FAdd 515 513 517: 174(ptr) AccessChain 442(texel) 173 Store 517 516 518: 7(fvec4) Load 442(texel) ReturnValue 518 FunctionEnd 17(testTextureProjOffset(): 7(fvec4) Function None 8 18: Label 521(texel): 63(ptr) Variable Function Store 521(texel) 120 522: 122 Load 124(s1D) 523: 52(fvec2) Load 138(c2) 524: 7(fvec4) ImageSampleProjImplicitLod 522 523 ConstOffset 445 525: 7(fvec4) Load 521(texel) 526: 7(fvec4) FAdd 525 524 Store 521(texel) 526 527: 122 Load 124(s1D) 528: 7(fvec4) Load 197(c4) 529: 6(float) CompositeExtract 528 3 530: 7(fvec4) CompositeInsert 529 528 1 531: 7(fvec4) ImageSampleProjImplicitLod 527 530 ConstOffset 445 532: 7(fvec4) Load 521(texel) 533: 7(fvec4) FAdd 532 531 Store 521(texel) 533 534: 133 Load 135(s2D) 535: 148(fvec3) Load 150(c3) 536: 7(fvec4) ImageSampleProjImplicitLod 534 535 ConstOffset 452 537: 7(fvec4) Load 521(texel) 538: 7(fvec4) FAdd 537 536 Store 521(texel) 538 539: 133 Load 135(s2D) 540: 7(fvec4) Load 197(c4) 541: 6(float) CompositeExtract 540 3 542: 7(fvec4) CompositeInsert 541 540 2 543: 7(fvec4) ImageSampleProjImplicitLod 539 542 ConstOffset 452 544: 7(fvec4) Load 521(texel) 545: 7(fvec4) FAdd 544 543 Store 521(texel) 545 546: 144 Load 146(s3D) 547: 7(fvec4) Load 197(c4) 548: 7(fvec4) ImageSampleProjImplicitLod 546 547 ConstOffset 459 549: 7(fvec4) Load 521(texel) 550: 7(fvec4) FAdd 549 548 Store 521(texel) 550 551: 257 Load 259(s2DRect) 552: 148(fvec3) Load 150(c3) 553: 7(fvec4) ImageSampleProjImplicitLod 551 552 ConstOffset 452 554: 7(fvec4) Load 521(texel) 555: 7(fvec4) FAdd 554 553 Store 521(texel) 555 556: 257 Load 259(s2DRect) 557: 7(fvec4) Load 197(c4) 558: 6(float) CompositeExtract 557 3 559: 7(fvec4) CompositeInsert 558 557 2 560: 7(fvec4) ImageSampleProjImplicitLod 556 559 ConstOffset 452 561: 7(fvec4) Load 521(texel) 562: 7(fvec4) FAdd 561 560 Store 521(texel) 562 563: 266 Load 268(s2DRectShadow) 564: 7(fvec4) Load 197(c4) 565: 6(float) CompositeExtract 564 2 566: 6(float) CompositeExtract 564 3 567: 7(fvec4) CompositeInsert 566 564 2 568: 6(float) ImageSampleProjDrefImplicitLod 563 567 565 ConstOffset 452 569: 174(ptr) AccessChain 521(texel) 173 570: 6(float) Load 569 571: 6(float) FAdd 570 568 572: 174(ptr) AccessChain 521(texel) 173 Store 572 571 573: 165 Load 167(s1DShadow) 574: 7(fvec4) Load 197(c4) 575: 6(float) CompositeExtract 574 2 576: 6(float) CompositeExtract 574 3 577: 7(fvec4) CompositeInsert 576 574 1 578: 6(float) ImageSampleProjDrefImplicitLod 573 577 575 ConstOffset 445 579: 174(ptr) AccessChain 521(texel) 173 580: 6(float) Load 579 581: 6(float) FAdd 580 578 582: 174(ptr) AccessChain 521(texel) 173 Store 582 581 583: 180 Load 182(s2DShadow) 584: 7(fvec4) Load 197(c4) 585: 6(float) CompositeExtract 584 2 586: 6(float) CompositeExtract 584 3 587: 7(fvec4) CompositeInsert 586 584 2 588: 6(float) ImageSampleProjDrefImplicitLod 583 587 585 ConstOffset 452 589: 174(ptr) AccessChain 521(texel) 173 590: 6(float) Load 589 591: 6(float) FAdd 590 588 592: 174(ptr) AccessChain 521(texel) 173 Store 592 591 593: 7(fvec4) Load 521(texel) ReturnValue 593 FunctionEnd 19(testTextureLodOffset(): 7(fvec4) Function None 8 20: Label 596(texel): 63(ptr) Variable Function Store 596(texel) 120 597: 122 Load 124(s1D) 598: 6(float) Load 127(c1) 599: 6(float) Load 371(lod) 600: 7(fvec4) ImageSampleExplicitLod 597 598 Lod ConstOffset 599 445 601: 7(fvec4) Load 596(texel) 602: 7(fvec4) FAdd 601 600 Store 596(texel) 602 603: 133 Load 135(s2D) 604: 52(fvec2) Load 138(c2) 605: 6(float) Load 371(lod) 606: 7(fvec4) ImageSampleExplicitLod 603 604 Lod ConstOffset 605 452 607: 7(fvec4) Load 596(texel) 608: 7(fvec4) FAdd 607 606 Store 596(texel) 608 609: 144 Load 146(s3D) 610: 148(fvec3) Load 150(c3) 611: 6(float) Load 371(lod) 612: 7(fvec4) ImageSampleExplicitLod 609 610 Lod ConstOffset 611 459 613: 7(fvec4) Load 596(texel) 614: 7(fvec4) FAdd 613 612 Store 596(texel) 614 615: 165 Load 167(s1DShadow) 616: 148(fvec3) Load 150(c3) 617: 6(float) Load 371(lod) 618: 6(float) CompositeExtract 616 2 619: 6(float) ImageSampleDrefExplicitLod 615 616 618 Lod ConstOffset 617 445 620: 174(ptr) AccessChain 596(texel) 173 621: 6(float) Load 620 622: 6(float) FAdd 621 619 623: 174(ptr) AccessChain 596(texel) 173 Store 623 622 624: 180 Load 182(s2DShadow) 625: 148(fvec3) Load 150(c3) 626: 6(float) Load 371(lod) 627: 6(float) CompositeExtract 625 2 628: 6(float) ImageSampleDrefExplicitLod 624 625 627 Lod ConstOffset 626 452 629: 174(ptr) AccessChain 596(texel) 173 630: 6(float) Load 629 631: 6(float) FAdd 630 628 632: 174(ptr) AccessChain 596(texel) 173 Store 632 631 633: 206 Load 208(s1DArray) 634: 52(fvec2) Load 138(c2) 635: 6(float) Load 371(lod) 636: 7(fvec4) ImageSampleExplicitLod 633 634 Lod ConstOffset 635 445 637: 7(fvec4) Load 596(texel) 638: 7(fvec4) FAdd 637 636 Store 596(texel) 638 639: 215 Load 217(s2DArray) 640: 148(fvec3) Load 150(c3) 641: 6(float) Load 371(lod) 642: 7(fvec4) ImageSampleExplicitLod 639 640 Lod ConstOffset 641 452 643: 7(fvec4) Load 596(texel) 644: 7(fvec4) FAdd 643 642 Store 596(texel) 644 645: 233 Load 235(s1DArrayShadow) 646: 148(fvec3) Load 150(c3) 647: 6(float) Load 371(lod) 648: 6(float) CompositeExtract 646 2 649: 6(float) ImageSampleDrefExplicitLod 645 646 648 Lod ConstOffset 647 445 650: 174(ptr) AccessChain 596(texel) 173 651: 6(float) Load 650 652: 6(float) FAdd 651 649 653: 174(ptr) AccessChain 596(texel) 173 Store 653 652 654: 7(fvec4) Load 596(texel) ReturnValue 654 FunctionEnd 21(testTextureProjLodOffset(): 7(fvec4) Function None 8 22: Label 657(texel): 63(ptr) Variable Function Store 657(texel) 120 658: 122 Load 124(s1D) 659: 52(fvec2) Load 138(c2) 660: 6(float) Load 371(lod) 661: 7(fvec4) ImageSampleProjExplicitLod 658 659 Lod ConstOffset 660 445 662: 7(fvec4) Load 657(texel) 663: 7(fvec4) FAdd 662 661 Store 657(texel) 663 664: 122 Load 124(s1D) 665: 7(fvec4) Load 197(c4) 666: 6(float) Load 371(lod) 667: 6(float) CompositeExtract 665 3 668: 7(fvec4) CompositeInsert 667 665 1 669: 7(fvec4) ImageSampleProjExplicitLod 664 668 Lod ConstOffset 666 445 670: 7(fvec4) Load 657(texel) 671: 7(fvec4) FAdd 670 669 Store 657(texel) 671 672: 133 Load 135(s2D) 673: 148(fvec3) Load 150(c3) 674: 6(float) Load 371(lod) 675: 7(fvec4) ImageSampleProjExplicitLod 672 673 Lod ConstOffset 674 452 676: 7(fvec4) Load 657(texel) 677: 7(fvec4) FAdd 676 675 Store 657(texel) 677 678: 133 Load 135(s2D) 679: 7(fvec4) Load 197(c4) 680: 6(float) Load 371(lod) 681: 6(float) CompositeExtract 679 3 682: 7(fvec4) CompositeInsert 681 679 2 683: 7(fvec4) ImageSampleProjExplicitLod 678 682 Lod ConstOffset 680 452 684: 7(fvec4) Load 657(texel) 685: 7(fvec4) FAdd 684 683 Store 657(texel) 685 686: 144 Load 146(s3D) 687: 7(fvec4) Load 197(c4) 688: 6(float) Load 371(lod) 689: 7(fvec4) ImageSampleProjExplicitLod 686 687 Lod ConstOffset 688 459 690: 7(fvec4) Load 657(texel) 691: 7(fvec4) FAdd 690 689 Store 657(texel) 691 692: 165 Load 167(s1DShadow) 693: 7(fvec4) Load 197(c4) 694: 6(float) Load 371(lod) 695: 6(float) CompositeExtract 693 2 696: 6(float) CompositeExtract 693 3 697: 7(fvec4) CompositeInsert 696 693 1 698: 6(float) ImageSampleProjDrefExplicitLod 692 697 695 Lod ConstOffset 694 445 699: 174(ptr) AccessChain 657(texel) 173 700: 6(float) Load 699 701: 6(float) FAdd 700 698 702: 174(ptr) AccessChain 657(texel) 173 Store 702 701 703: 180 Load 182(s2DShadow) 704: 7(fvec4) Load 197(c4) 705: 6(float) Load 371(lod) 706: 6(float) CompositeExtract 704 2 707: 6(float) CompositeExtract 704 3 708: 7(fvec4) CompositeInsert 707 704 2 709: 6(float) ImageSampleProjDrefExplicitLod 703 708 706 Lod ConstOffset 705 452 710: 174(ptr) AccessChain 657(texel) 173 711: 6(float) Load 710 712: 6(float) FAdd 711 709 713: 174(ptr) AccessChain 657(texel) 173 Store 713 712 714: 7(fvec4) Load 657(texel) ReturnValue 714 FunctionEnd 23(testTexelFetch(): 7(fvec4) Function None 8 24: Label 717(texel): 63(ptr) Variable Function Store 717(texel) 120 718: 122 Load 124(s1D) 719: 6(float) Load 127(c1) 720: 47(int) ConvertFToS 719 721: 6(float) Load 371(lod) 722: 47(int) ConvertFToS 721 723: 121 Image 718 724: 7(fvec4) ImageFetch 723 720 Lod 722 725: 7(fvec4) Load 717(texel) 726: 7(fvec4) FAdd 725 724 Store 717(texel) 726 727: 133 Load 135(s2D) 728: 52(fvec2) Load 138(c2) 729: 451(ivec2) ConvertFToS 728 730: 6(float) Load 371(lod) 731: 47(int) ConvertFToS 730 732: 132 Image 727 733: 7(fvec4) ImageFetch 732 729 Lod 731 734: 7(fvec4) Load 717(texel) 735: 7(fvec4) FAdd 734 733 Store 717(texel) 735 736: 144 Load 146(s3D) 737: 148(fvec3) Load 150(c3) 738: 458(ivec3) ConvertFToS 737 739: 6(float) Load 371(lod) 740: 47(int) ConvertFToS 739 741: 143 Image 736 742: 7(fvec4) ImageFetch 741 738 Lod 740 743: 7(fvec4) Load 717(texel) 744: 7(fvec4) FAdd 743 742 Store 717(texel) 744 745: 257 Load 259(s2DRect) 746: 52(fvec2) Load 138(c2) 747: 451(ivec2) ConvertFToS 746 748: 256 Image 745 749: 7(fvec4) ImageFetch 748 747 750: 7(fvec4) Load 717(texel) 751: 7(fvec4) FAdd 750 749 Store 717(texel) 751 752: 206 Load 208(s1DArray) 753: 52(fvec2) Load 138(c2) 754: 451(ivec2) ConvertFToS 753 755: 6(float) Load 371(lod) 756: 47(int) ConvertFToS 755 757: 205 Image 752 758: 7(fvec4) ImageFetch 757 754 Lod 756 759: 7(fvec4) Load 717(texel) 760: 7(fvec4) FAdd 759 758 Store 717(texel) 760 761: 215 Load 217(s2DArray) 762: 148(fvec3) Load 150(c3) 763: 458(ivec3) ConvertFToS 762 764: 6(float) Load 371(lod) 765: 47(int) ConvertFToS 764 766: 214 Image 761 767: 7(fvec4) ImageFetch 766 763 Lod 765 768: 7(fvec4) Load 717(texel) 769: 7(fvec4) FAdd 768 767 Store 717(texel) 769 774: 771 Load 773(sBuffer) 775: 6(float) Load 127(c1) 776: 47(int) ConvertFToS 775 777: 770 Image 774 778: 7(fvec4) ImageFetch 777 776 779: 7(fvec4) Load 717(texel) 780: 7(fvec4) FAdd 779 778 Store 717(texel) 780 785: 782 Load 784(s2DMS) 786: 52(fvec2) Load 138(c2) 787: 451(ivec2) ConvertFToS 786 788: 781 Image 785 789: 7(fvec4) ImageFetch 788 787 Sample 445 790: 7(fvec4) Load 717(texel) 791: 7(fvec4) FAdd 790 789 Store 717(texel) 791 796: 793 Load 795(s2DMSArray) 797: 148(fvec3) Load 150(c3) 798: 458(ivec3) ConvertFToS 797 800: 792 Image 796 801: 7(fvec4) ImageFetch 800 798 Sample 799 802: 7(fvec4) Load 717(texel) 803: 7(fvec4) FAdd 802 801 Store 717(texel) 803 804: 7(fvec4) Load 717(texel) ReturnValue 804 FunctionEnd 25(testTexelFetchOffset(): 7(fvec4) Function None 8 26: Label 807(texel): 63(ptr) Variable Function Store 807(texel) 120 808: 122 Load 124(s1D) 809: 6(float) Load 127(c1) 810: 47(int) ConvertFToS 809 811: 6(float) Load 371(lod) 812: 47(int) ConvertFToS 811 813: 121 Image 808 814: 7(fvec4) ImageFetch 813 810 Lod ConstOffset 812 445 815: 7(fvec4) Load 807(texel) 816: 7(fvec4) FAdd 815 814 Store 807(texel) 816 817: 133 Load 135(s2D) 818: 52(fvec2) Load 138(c2) 819: 451(ivec2) ConvertFToS 818 820: 6(float) Load 371(lod) 821: 47(int) ConvertFToS 820 822: 132 Image 817 823: 7(fvec4) ImageFetch 822 819 Lod ConstOffset 821 452 824: 7(fvec4) Load 807(texel) 825: 7(fvec4) FAdd 824 823 Store 807(texel) 825 826: 144 Load 146(s3D) 827: 148(fvec3) Load 150(c3) 828: 458(ivec3) ConvertFToS 827 829: 6(float) Load 371(lod) 830: 47(int) ConvertFToS 829 831: 143 Image 826 832: 7(fvec4) ImageFetch 831 828 Lod ConstOffset 830 459 833: 7(fvec4) Load 807(texel) 834: 7(fvec4) FAdd 833 832 Store 807(texel) 834 835: 257 Load 259(s2DRect) 836: 52(fvec2) Load 138(c2) 837: 451(ivec2) ConvertFToS 836 838: 256 Image 835 839: 7(fvec4) ImageFetch 838 837 ConstOffset 452 840: 7(fvec4) Load 807(texel) 841: 7(fvec4) FAdd 840 839 Store 807(texel) 841 842: 206 Load 208(s1DArray) 843: 52(fvec2) Load 138(c2) 844: 451(ivec2) ConvertFToS 843 845: 6(float) Load 371(lod) 846: 47(int) ConvertFToS 845 847: 205 Image 842 848: 7(fvec4) ImageFetch 847 844 Lod ConstOffset 846 445 849: 7(fvec4) Load 807(texel) 850: 7(fvec4) FAdd 849 848 Store 807(texel) 850 851: 215 Load 217(s2DArray) 852: 148(fvec3) Load 150(c3) 853: 458(ivec3) ConvertFToS 852 854: 6(float) Load 371(lod) 855: 47(int) ConvertFToS 854 856: 214 Image 851 857: 7(fvec4) ImageFetch 856 853 Lod ConstOffset 855 452 858: 7(fvec4) Load 807(texel) 859: 7(fvec4) FAdd 858 857 Store 807(texel) 859 860: 7(fvec4) Load 807(texel) ReturnValue 860 FunctionEnd 27(testTextureGrad(): 7(fvec4) Function None 8 28: Label 863(texel): 63(ptr) Variable Function Store 863(texel) 120 864: 122 Load 124(s1D) 865: 6(float) Load 127(c1) 867: 6(float) Load 866(dPdxy1) 868: 7(fvec4) ImageSampleExplicitLod 864 865 Grad 867 867 869: 7(fvec4) Load 863(texel) 870: 7(fvec4) FAdd 869 868 Store 863(texel) 870 871: 133 Load 135(s2D) 872: 52(fvec2) Load 138(c2) 874: 52(fvec2) Load 873(dPdxy2) 875: 7(fvec4) ImageSampleExplicitLod 871 872 Grad 874 874 876: 7(fvec4) Load 863(texel) 877: 7(fvec4) FAdd 876 875 Store 863(texel) 877 878: 144 Load 146(s3D) 879: 148(fvec3) Load 150(c3) 881: 148(fvec3) Load 880(dPdxy3) 882: 7(fvec4) ImageSampleExplicitLod 878 879 Grad 881 881 883: 7(fvec4) Load 863(texel) 884: 7(fvec4) FAdd 883 882 Store 863(texel) 884 885: 156 Load 158(sCube) 886: 148(fvec3) Load 150(c3) 887: 148(fvec3) Load 880(dPdxy3) 888: 7(fvec4) ImageSampleExplicitLod 885 886 Grad 887 887 889: 7(fvec4) Load 863(texel) 890: 7(fvec4) FAdd 889 888 Store 863(texel) 890 891: 257 Load 259(s2DRect) 892: 52(fvec2) Load 138(c2) 893: 52(fvec2) Load 873(dPdxy2) 894: 7(fvec4) ImageSampleExplicitLod 891 892 Grad 893 893 895: 7(fvec4) Load 863(texel) 896: 7(fvec4) FAdd 895 894 Store 863(texel) 896 897: 266 Load 268(s2DRectShadow) 898: 148(fvec3) Load 150(c3) 899: 52(fvec2) Load 873(dPdxy2) 900: 6(float) CompositeExtract 898 2 901: 6(float) ImageSampleDrefExplicitLod 897 898 900 Grad 899 899 902: 174(ptr) AccessChain 863(texel) 173 903: 6(float) Load 902 904: 6(float) FAdd 903 901 905: 174(ptr) AccessChain 863(texel) 173 Store 905 904 906: 165 Load 167(s1DShadow) 907: 148(fvec3) Load 150(c3) 908: 6(float) Load 866(dPdxy1) 909: 6(float) CompositeExtract 907 2 910: 6(float) ImageSampleDrefExplicitLod 906 907 909 Grad 908 908 911: 174(ptr) AccessChain 863(texel) 173 912: 6(float) Load 911 913: 6(float) FAdd 912 910 914: 174(ptr) AccessChain 863(texel) 173 Store 914 913 915: 180 Load 182(s2DShadow) 916: 148(fvec3) Load 150(c3) 917: 52(fvec2) Load 873(dPdxy2) 918: 6(float) CompositeExtract 916 2 919: 6(float) ImageSampleDrefExplicitLod 915 916 918 Grad 917 917 920: 174(ptr) AccessChain 863(texel) 173 921: 6(float) Load 920 922: 6(float) FAdd 921 919 923: 174(ptr) AccessChain 863(texel) 173 Store 923 922 924: 192 Load 194(sCubeShadow) 925: 7(fvec4) Load 197(c4) 926: 148(fvec3) Load 880(dPdxy3) 927: 6(float) CompositeExtract 925 3 928: 6(float) ImageSampleDrefExplicitLod 924 925 927 Grad 926 926 929: 174(ptr) AccessChain 863(texel) 173 930: 6(float) Load 929 931: 6(float) FAdd 930 928 932: 174(ptr) AccessChain 863(texel) 173 Store 932 931 933: 206 Load 208(s1DArray) 934: 52(fvec2) Load 138(c2) 935: 6(float) Load 866(dPdxy1) 936: 7(fvec4) ImageSampleExplicitLod 933 934 Grad 935 935 937: 7(fvec4) Load 863(texel) 938: 7(fvec4) FAdd 937 936 Store 863(texel) 938 939: 215 Load 217(s2DArray) 940: 148(fvec3) Load 150(c3) 941: 52(fvec2) Load 873(dPdxy2) 942: 7(fvec4) ImageSampleExplicitLod 939 940 Grad 941 941 943: 7(fvec4) Load 863(texel) 944: 7(fvec4) FAdd 943 942 Store 863(texel) 944 945: 233 Load 235(s1DArrayShadow) 946: 148(fvec3) Load 150(c3) 947: 6(float) Load 866(dPdxy1) 948: 6(float) CompositeExtract 946 2 949: 6(float) ImageSampleDrefExplicitLod 945 946 948 Grad 947 947 950: 174(ptr) AccessChain 863(texel) 173 951: 6(float) Load 950 952: 6(float) FAdd 951 949 953: 174(ptr) AccessChain 863(texel) 173 Store 953 952 954: 245 Load 247(s2DArrayShadow) 955: 7(fvec4) Load 197(c4) 956: 52(fvec2) Load 873(dPdxy2) 957: 6(float) CompositeExtract 955 3 958: 6(float) ImageSampleDrefExplicitLod 954 955 957 Grad 956 956 959: 174(ptr) AccessChain 863(texel) 173 960: 6(float) Load 959 961: 6(float) FAdd 960 958 962: 174(ptr) AccessChain 863(texel) 173 Store 962 961 963: 224 Load 226(sCubeArray) 964: 7(fvec4) Load 197(c4) 965: 148(fvec3) Load 880(dPdxy3) 966: 7(fvec4) ImageSampleExplicitLod 963 964 Grad 965 965 967: 7(fvec4) Load 863(texel) 968: 7(fvec4) FAdd 967 966 Store 863(texel) 968 969: 7(fvec4) Load 863(texel) ReturnValue 969 FunctionEnd 29(testTextureGradOffset(): 7(fvec4) Function None 8 30: Label 972(texel): 63(ptr) Variable Function Store 972(texel) 120 973: 122 Load 124(s1D) 974: 6(float) Load 127(c1) 975: 6(float) Load 866(dPdxy1) 976: 7(fvec4) ImageSampleExplicitLod 973 974 Grad ConstOffset 975 975 445 977: 7(fvec4) Load 972(texel) 978: 7(fvec4) FAdd 977 976 Store 972(texel) 978 979: 133 Load 135(s2D) 980: 52(fvec2) Load 138(c2) 981: 52(fvec2) Load 873(dPdxy2) 982: 7(fvec4) ImageSampleExplicitLod 979 980 Grad ConstOffset 981 981 452 983: 7(fvec4) Load 972(texel) 984: 7(fvec4) FAdd 983 982 Store 972(texel) 984 985: 144 Load 146(s3D) 986: 148(fvec3) Load 150(c3) 987: 148(fvec3) Load 880(dPdxy3) 988: 7(fvec4) ImageSampleExplicitLod 985 986 Grad ConstOffset 987 987 459 989: 7(fvec4) Load 972(texel) 990: 7(fvec4) FAdd 989 988 Store 972(texel) 990 991: 257 Load 259(s2DRect) 992: 52(fvec2) Load 138(c2) 993: 52(fvec2) Load 873(dPdxy2) 994: 7(fvec4) ImageSampleExplicitLod 991 992 Grad ConstOffset 993 993 452 995: 7(fvec4) Load 972(texel) 996: 7(fvec4) FAdd 995 994 Store 972(texel) 996 997: 266 Load 268(s2DRectShadow) 998: 148(fvec3) Load 150(c3) 999: 52(fvec2) Load 873(dPdxy2) 1000: 6(float) CompositeExtract 998 2 1001: 6(float) ImageSampleDrefExplicitLod 997 998 1000 Grad ConstOffset 999 999 452 1002: 174(ptr) AccessChain 972(texel) 173 1003: 6(float) Load 1002 1004: 6(float) FAdd 1003 1001 1005: 174(ptr) AccessChain 972(texel) 173 Store 1005 1004 1006: 165 Load 167(s1DShadow) 1007: 148(fvec3) Load 150(c3) 1008: 6(float) Load 866(dPdxy1) 1009: 6(float) CompositeExtract 1007 2 1010: 6(float) ImageSampleDrefExplicitLod 1006 1007 1009 Grad ConstOffset 1008 1008 445 1011: 174(ptr) AccessChain 972(texel) 173 1012: 6(float) Load 1011 1013: 6(float) FAdd 1012 1010 1014: 174(ptr) AccessChain 972(texel) 173 Store 1014 1013 1015: 180 Load 182(s2DShadow) 1016: 148(fvec3) Load 150(c3) 1017: 52(fvec2) Load 873(dPdxy2) 1018: 6(float) CompositeExtract 1016 2 1019: 6(float) ImageSampleDrefExplicitLod 1015 1016 1018 Grad ConstOffset 1017 1017 452 1020: 174(ptr) AccessChain 972(texel) 173 1021: 6(float) Load 1020 1022: 6(float) FAdd 1021 1019 1023: 174(ptr) AccessChain 972(texel) 173 Store 1023 1022 1024: 206 Load 208(s1DArray) 1025: 52(fvec2) Load 138(c2) 1026: 6(float) Load 866(dPdxy1) 1027: 7(fvec4) ImageSampleExplicitLod 1024 1025 Grad ConstOffset 1026 1026 445 1028: 7(fvec4) Load 972(texel) 1029: 7(fvec4) FAdd 1028 1027 Store 972(texel) 1029 1030: 215 Load 217(s2DArray) 1031: 148(fvec3) Load 150(c3) 1032: 52(fvec2) Load 873(dPdxy2) 1033: 7(fvec4) ImageSampleExplicitLod 1030 1031 Grad ConstOffset 1032 1032 452 1034: 7(fvec4) Load 972(texel) 1035: 7(fvec4) FAdd 1034 1033 Store 972(texel) 1035 1036: 233 Load 235(s1DArrayShadow) 1037: 148(fvec3) Load 150(c3) 1038: 6(float) Load 866(dPdxy1) 1039: 6(float) CompositeExtract 1037 2 1040: 6(float) ImageSampleDrefExplicitLod 1036 1037 1039 Grad ConstOffset 1038 1038 445 1041: 174(ptr) AccessChain 972(texel) 173 1042: 6(float) Load 1041 1043: 6(float) FAdd 1042 1040 1044: 174(ptr) AccessChain 972(texel) 173 Store 1044 1043 1045: 245 Load 247(s2DArrayShadow) 1046: 7(fvec4) Load 197(c4) 1047: 52(fvec2) Load 873(dPdxy2) 1048: 6(float) CompositeExtract 1046 3 1049: 6(float) ImageSampleDrefExplicitLod 1045 1046 1048 Grad ConstOffset 1047 1047 452 1050: 174(ptr) AccessChain 972(texel) 173 1051: 6(float) Load 1050 1052: 6(float) FAdd 1051 1049 1053: 174(ptr) AccessChain 972(texel) 173 Store 1053 1052 1054: 7(fvec4) Load 972(texel) ReturnValue 1054 FunctionEnd 31(testTextureProjGrad(): 7(fvec4) Function None 8 32: Label 1057(texel): 63(ptr) Variable Function Store 1057(texel) 120 1058: 122 Load 124(s1D) 1059: 52(fvec2) Load 138(c2) 1060: 6(float) Load 866(dPdxy1) 1061: 7(fvec4) ImageSampleProjExplicitLod 1058 1059 Grad 1060 1060 1062: 7(fvec4) Load 1057(texel) 1063: 7(fvec4) FAdd 1062 1061 Store 1057(texel) 1063 1064: 122 Load 124(s1D) 1065: 7(fvec4) Load 197(c4) 1066: 6(float) Load 866(dPdxy1) 1067: 6(float) CompositeExtract 1065 3 1068: 7(fvec4) CompositeInsert 1067 1065 1 1069: 7(fvec4) ImageSampleProjExplicitLod 1064 1068 Grad 1066 1066 1070: 7(fvec4) Load 1057(texel) 1071: 7(fvec4) FAdd 1070 1069 Store 1057(texel) 1071 1072: 133 Load 135(s2D) 1073: 148(fvec3) Load 150(c3) 1074: 52(fvec2) Load 873(dPdxy2) 1075: 7(fvec4) ImageSampleProjExplicitLod 1072 1073 Grad 1074 1074 1076: 7(fvec4) Load 1057(texel) 1077: 7(fvec4) FAdd 1076 1075 Store 1057(texel) 1077 1078: 133 Load 135(s2D) 1079: 7(fvec4) Load 197(c4) 1080: 52(fvec2) Load 873(dPdxy2) 1081: 6(float) CompositeExtract 1079 3 1082: 7(fvec4) CompositeInsert 1081 1079 2 1083: 7(fvec4) ImageSampleProjExplicitLod 1078 1082 Grad 1080 1080 1084: 7(fvec4) Load 1057(texel) 1085: 7(fvec4) FAdd 1084 1083 Store 1057(texel) 1085 1086: 144 Load 146(s3D) 1087: 7(fvec4) Load 197(c4) 1088: 148(fvec3) Load 880(dPdxy3) 1089: 7(fvec4) ImageSampleProjExplicitLod 1086 1087 Grad 1088 1088 1090: 7(fvec4) Load 1057(texel) 1091: 7(fvec4) FAdd 1090 1089 Store 1057(texel) 1091 1092: 257 Load 259(s2DRect) 1093: 148(fvec3) Load 150(c3) 1094: 52(fvec2) Load 873(dPdxy2) 1095: 7(fvec4) ImageSampleProjExplicitLod 1092 1093 Grad 1094 1094 1096: 7(fvec4) Load 1057(texel) 1097: 7(fvec4) FAdd 1096 1095 Store 1057(texel) 1097 1098: 257 Load 259(s2DRect) 1099: 7(fvec4) Load 197(c4) 1100: 52(fvec2) Load 873(dPdxy2) 1101: 6(float) CompositeExtract 1099 3 1102: 7(fvec4) CompositeInsert 1101 1099 2 1103: 7(fvec4) ImageSampleProjExplicitLod 1098 1102 Grad 1100 1100 1104: 7(fvec4) Load 1057(texel) 1105: 7(fvec4) FAdd 1104 1103 Store 1057(texel) 1105 1106: 266 Load 268(s2DRectShadow) 1107: 7(fvec4) Load 197(c4) 1108: 52(fvec2) Load 873(dPdxy2) 1109: 6(float) CompositeExtract 1107 2 1110: 6(float) CompositeExtract 1107 3 1111: 7(fvec4) CompositeInsert 1110 1107 2 1112: 6(float) ImageSampleProjDrefExplicitLod 1106 1111 1109 Grad 1108 1108 1113: 174(ptr) AccessChain 1057(texel) 173 1114: 6(float) Load 1113 1115: 6(float) FAdd 1114 1112 1116: 174(ptr) AccessChain 1057(texel) 173 Store 1116 1115 1117: 165 Load 167(s1DShadow) 1118: 7(fvec4) Load 197(c4) 1119: 6(float) Load 866(dPdxy1) 1120: 6(float) CompositeExtract 1118 2 1121: 6(float) CompositeExtract 1118 3 1122: 7(fvec4) CompositeInsert 1121 1118 1 1123: 6(float) ImageSampleProjDrefExplicitLod 1117 1122 1120 Grad 1119 1119 1124: 174(ptr) AccessChain 1057(texel) 173 1125: 6(float) Load 1124 1126: 6(float) FAdd 1125 1123 1127: 174(ptr) AccessChain 1057(texel) 173 Store 1127 1126 1128: 180 Load 182(s2DShadow) 1129: 7(fvec4) Load 197(c4) 1130: 52(fvec2) Load 873(dPdxy2) 1131: 6(float) CompositeExtract 1129 2 1132: 6(float) CompositeExtract 1129 3 1133: 7(fvec4) CompositeInsert 1132 1129 2 1134: 6(float) ImageSampleProjDrefExplicitLod 1128 1133 1131 Grad 1130 1130 1135: 174(ptr) AccessChain 1057(texel) 173 1136: 6(float) Load 1135 1137: 6(float) FAdd 1136 1134 1138: 174(ptr) AccessChain 1057(texel) 173 Store 1138 1137 1139: 7(fvec4) Load 1057(texel) ReturnValue 1139 FunctionEnd 33(testTextureProjGradoffset(): 7(fvec4) Function None 8 34: Label 1142(texel): 63(ptr) Variable Function Store 1142(texel) 120 1143: 122 Load 124(s1D) 1144: 52(fvec2) Load 138(c2) 1145: 6(float) Load 866(dPdxy1) 1146: 7(fvec4) ImageSampleProjExplicitLod 1143 1144 Grad ConstOffset 1145 1145 445 1147: 7(fvec4) Load 1142(texel) 1148: 7(fvec4) FAdd 1147 1146 Store 1142(texel) 1148 1149: 122 Load 124(s1D) 1150: 7(fvec4) Load 197(c4) 1151: 6(float) Load 866(dPdxy1) 1152: 6(float) CompositeExtract 1150 3 1153: 7(fvec4) CompositeInsert 1152 1150 1 1154: 7(fvec4) ImageSampleProjExplicitLod 1149 1153 Grad ConstOffset 1151 1151 445 1155: 7(fvec4) Load 1142(texel) 1156: 7(fvec4) FAdd 1155 1154 Store 1142(texel) 1156 1157: 133 Load 135(s2D) 1158: 148(fvec3) Load 150(c3) 1159: 52(fvec2) Load 873(dPdxy2) 1160: 7(fvec4) ImageSampleProjExplicitLod 1157 1158 Grad ConstOffset 1159 1159 452 1161: 7(fvec4) Load 1142(texel) 1162: 7(fvec4) FAdd 1161 1160 Store 1142(texel) 1162 1163: 133 Load 135(s2D) 1164: 7(fvec4) Load 197(c4) 1165: 52(fvec2) Load 873(dPdxy2) 1166: 6(float) CompositeExtract 1164 3 1167: 7(fvec4) CompositeInsert 1166 1164 2 1168: 7(fvec4) ImageSampleProjExplicitLod 1163 1167 Grad ConstOffset 1165 1165 452 1169: 7(fvec4) Load 1142(texel) 1170: 7(fvec4) FAdd 1169 1168 Store 1142(texel) 1170 1171: 257 Load 259(s2DRect) 1172: 148(fvec3) Load 150(c3) 1173: 52(fvec2) Load 873(dPdxy2) 1174: 7(fvec4) ImageSampleProjExplicitLod 1171 1172 Grad ConstOffset 1173 1173 452 1175: 7(fvec4) Load 1142(texel) 1176: 7(fvec4) FAdd 1175 1174 Store 1142(texel) 1176 1177: 257 Load 259(s2DRect) 1178: 7(fvec4) Load 197(c4) 1179: 52(fvec2) Load 873(dPdxy2) 1180: 6(float) CompositeExtract 1178 3 1181: 7(fvec4) CompositeInsert 1180 1178 2 1182: 7(fvec4) ImageSampleProjExplicitLod 1177 1181 Grad ConstOffset 1179 1179 452 1183: 7(fvec4) Load 1142(texel) 1184: 7(fvec4) FAdd 1183 1182 Store 1142(texel) 1184 1185: 266 Load 268(s2DRectShadow) 1186: 7(fvec4) Load 197(c4) 1187: 52(fvec2) Load 873(dPdxy2) 1188: 6(float) CompositeExtract 1186 2 1189: 6(float) CompositeExtract 1186 3 1190: 7(fvec4) CompositeInsert 1189 1186 2 1191: 6(float) ImageSampleProjDrefExplicitLod 1185 1190 1188 Grad ConstOffset 1187 1187 452 1192: 174(ptr) AccessChain 1142(texel) 173 1193: 6(float) Load 1192 1194: 6(float) FAdd 1193 1191 1195: 174(ptr) AccessChain 1142(texel) 173 Store 1195 1194 1196: 144 Load 146(s3D) 1197: 7(fvec4) Load 197(c4) 1198: 148(fvec3) Load 880(dPdxy3) 1199: 7(fvec4) ImageSampleProjExplicitLod 1196 1197 Grad ConstOffset 1198 1198 459 1200: 7(fvec4) Load 1142(texel) 1201: 7(fvec4) FAdd 1200 1199 Store 1142(texel) 1201 1202: 165 Load 167(s1DShadow) 1203: 7(fvec4) Load 197(c4) 1204: 6(float) Load 866(dPdxy1) 1205: 6(float) CompositeExtract 1203 2 1206: 6(float) CompositeExtract 1203 3 1207: 7(fvec4) CompositeInsert 1206 1203 1 1208: 6(float) ImageSampleProjDrefExplicitLod 1202 1207 1205 Grad ConstOffset 1204 1204 445 1209: 174(ptr) AccessChain 1142(texel) 173 1210: 6(float) Load 1209 1211: 6(float) FAdd 1210 1208 1212: 174(ptr) AccessChain 1142(texel) 173 Store 1212 1211 1213: 180 Load 182(s2DShadow) 1214: 7(fvec4) Load 197(c4) 1215: 52(fvec2) Load 873(dPdxy2) 1216: 6(float) CompositeExtract 1214 2 1217: 6(float) CompositeExtract 1214 3 1218: 7(fvec4) CompositeInsert 1217 1214 2 1219: 6(float) ImageSampleProjDrefExplicitLod 1213 1218 1216 Grad ConstOffset 1215 1215 452 1220: 174(ptr) AccessChain 1142(texel) 173 1221: 6(float) Load 1220 1222: 6(float) FAdd 1221 1219 1223: 174(ptr) AccessChain 1142(texel) 173 Store 1223 1222 1224: 7(fvec4) Load 1142(texel) ReturnValue 1224 FunctionEnd 35(testTextureGather(): 7(fvec4) Function None 8 36: Label 1227(texel): 63(ptr) Variable Function Store 1227(texel) 120 1228: 133 Load 135(s2D) 1229: 52(fvec2) Load 138(c2) 1231: 7(fvec4) ImageGather 1228 1229 1230 1232: 7(fvec4) Load 1227(texel) 1233: 7(fvec4) FAdd 1232 1231 Store 1227(texel) 1233 1234: 215 Load 217(s2DArray) 1235: 148(fvec3) Load 150(c3) 1236: 7(fvec4) ImageGather 1234 1235 1230 1237: 7(fvec4) Load 1227(texel) 1238: 7(fvec4) FAdd 1237 1236 Store 1227(texel) 1238 1239: 156 Load 158(sCube) 1240: 148(fvec3) Load 150(c3) 1241: 7(fvec4) ImageGather 1239 1240 1230 1242: 7(fvec4) Load 1227(texel) 1243: 7(fvec4) FAdd 1242 1241 Store 1227(texel) 1243 1244: 224 Load 226(sCubeArray) 1245: 7(fvec4) Load 197(c4) 1246: 7(fvec4) ImageGather 1244 1245 1230 1247: 7(fvec4) Load 1227(texel) 1248: 7(fvec4) FAdd 1247 1246 Store 1227(texel) 1248 1249: 257 Load 259(s2DRect) 1250: 52(fvec2) Load 138(c2) 1251: 7(fvec4) ImageGather 1249 1250 1230 1252: 7(fvec4) Load 1227(texel) 1253: 7(fvec4) FAdd 1252 1251 Store 1227(texel) 1253 1254: 180 Load 182(s2DShadow) 1255: 52(fvec2) Load 138(c2) 1256: 6(float) Load 283(compare) 1257: 7(fvec4) ImageDrefGather 1254 1255 1256 1258: 7(fvec4) Load 1227(texel) 1259: 7(fvec4) FAdd 1258 1257 Store 1227(texel) 1259 1260: 245 Load 247(s2DArrayShadow) 1261: 148(fvec3) Load 150(c3) 1262: 6(float) Load 283(compare) 1263: 7(fvec4) ImageDrefGather 1260 1261 1262 1264: 7(fvec4) Load 1227(texel) 1265: 7(fvec4) FAdd 1264 1263 Store 1227(texel) 1265 1266: 192 Load 194(sCubeShadow) 1267: 148(fvec3) Load 150(c3) 1268: 6(float) Load 283(compare) 1269: 7(fvec4) ImageDrefGather 1266 1267 1268 1270: 7(fvec4) Load 1227(texel) 1271: 7(fvec4) FAdd 1270 1269 Store 1227(texel) 1271 1272: 278 Load 280(sCubeArrayShadow) 1273: 7(fvec4) Load 197(c4) 1274: 6(float) Load 283(compare) 1275: 7(fvec4) ImageDrefGather 1272 1273 1274 1276: 7(fvec4) Load 1227(texel) 1277: 7(fvec4) FAdd 1276 1275 Store 1227(texel) 1277 1278: 266 Load 268(s2DRectShadow) 1279: 52(fvec2) Load 138(c2) 1280: 6(float) Load 283(compare) 1281: 7(fvec4) ImageDrefGather 1278 1279 1280 1282: 7(fvec4) Load 1227(texel) 1283: 7(fvec4) FAdd 1282 1281 Store 1227(texel) 1283 1284: 7(fvec4) Load 1227(texel) ReturnValue 1284 FunctionEnd 37(testTextureGatherOffset(): 7(fvec4) Function None 8 38: Label 1287(texel): 63(ptr) Variable Function Store 1287(texel) 120 1288: 133 Load 135(s2D) 1289: 52(fvec2) Load 138(c2) 1290: 7(fvec4) ImageGather 1288 1289 1230 ConstOffset 452 1291: 7(fvec4) Load 1287(texel) 1292: 7(fvec4) FAdd 1291 1290 Store 1287(texel) 1292 1293: 215 Load 217(s2DArray) 1294: 148(fvec3) Load 150(c3) 1295: 7(fvec4) ImageGather 1293 1294 1230 ConstOffset 452 1296: 7(fvec4) Load 1287(texel) 1297: 7(fvec4) FAdd 1296 1295 Store 1287(texel) 1297 1298: 257 Load 259(s2DRect) 1299: 52(fvec2) Load 138(c2) 1300: 7(fvec4) ImageGather 1298 1299 1230 ConstOffset 452 1301: 7(fvec4) Load 1287(texel) 1302: 7(fvec4) FAdd 1301 1300 Store 1287(texel) 1302 1303: 180 Load 182(s2DShadow) 1304: 52(fvec2) Load 138(c2) 1305: 6(float) Load 283(compare) 1306: 7(fvec4) ImageDrefGather 1303 1304 1305 ConstOffset 452 1307: 7(fvec4) Load 1287(texel) 1308: 7(fvec4) FAdd 1307 1306 Store 1287(texel) 1308 1309: 245 Load 247(s2DArrayShadow) 1310: 148(fvec3) Load 150(c3) 1311: 6(float) Load 283(compare) 1312: 7(fvec4) ImageDrefGather 1309 1310 1311 ConstOffset 452 1313: 7(fvec4) Load 1287(texel) 1314: 7(fvec4) FAdd 1313 1312 Store 1287(texel) 1314 1315: 266 Load 268(s2DRectShadow) 1316: 52(fvec2) Load 138(c2) 1317: 6(float) Load 283(compare) 1318: 7(fvec4) ImageDrefGather 1315 1316 1317 ConstOffset 452 1319: 7(fvec4) Load 1287(texel) 1320: 7(fvec4) FAdd 1319 1318 Store 1287(texel) 1320 1321: 7(fvec4) Load 1287(texel) ReturnValue 1321 FunctionEnd 39(testTextureGatherOffsets(): 7(fvec4) Function None 8 40: Label 1324(texel): 63(ptr) Variable Function Store 1324(texel) 120 1325: 133 Load 135(s2D) 1326: 52(fvec2) Load 138(c2) 1330: 7(fvec4) ImageGather 1325 1326 1230 ConstOffsets 1329 1331: 7(fvec4) Load 1324(texel) 1332: 7(fvec4) FAdd 1331 1330 Store 1324(texel) 1332 1333: 215 Load 217(s2DArray) 1334: 148(fvec3) Load 150(c3) 1335: 7(fvec4) ImageGather 1333 1334 1230 ConstOffsets 1329 1336: 7(fvec4) Load 1324(texel) 1337: 7(fvec4) FAdd 1336 1335 Store 1324(texel) 1337 1338: 257 Load 259(s2DRect) 1339: 52(fvec2) Load 138(c2) 1340: 7(fvec4) ImageGather 1338 1339 1230 ConstOffsets 1329 1341: 7(fvec4) Load 1324(texel) 1342: 7(fvec4) FAdd 1341 1340 Store 1324(texel) 1342 1343: 180 Load 182(s2DShadow) 1344: 52(fvec2) Load 138(c2) 1345: 6(float) Load 283(compare) 1346: 7(fvec4) ImageDrefGather 1343 1344 1345 ConstOffsets 1329 1347: 7(fvec4) Load 1324(texel) 1348: 7(fvec4) FAdd 1347 1346 Store 1324(texel) 1348 1349: 245 Load 247(s2DArrayShadow) 1350: 148(fvec3) Load 150(c3) 1351: 6(float) Load 283(compare) 1352: 7(fvec4) ImageDrefGather 1349 1350 1351 ConstOffsets 1329 1353: 7(fvec4) Load 1324(texel) 1354: 7(fvec4) FAdd 1353 1352 Store 1324(texel) 1354 1355: 266 Load 268(s2DRectShadow) 1356: 52(fvec2) Load 138(c2) 1357: 6(float) Load 283(compare) 1358: 7(fvec4) ImageDrefGather 1355 1356 1357 ConstOffsets 1329 1359: 7(fvec4) Load 1324(texel) 1360: 7(fvec4) FAdd 1359 1358 Store 1324(texel) 1360 1361: 7(fvec4) Load 1324(texel) ReturnValue 1361 FunctionEnd 41(testTextureGatherLod(): 7(fvec4) Function None 8 42: Label 1364(texel): 63(ptr) Variable Function Store 1364(texel) 120 1365: 133 Load 135(s2D) 1366: 52(fvec2) Load 138(c2) 1367: 6(float) Load 371(lod) 1368: 7(fvec4) ImageGather 1365 1366 1230 Lod 1367 1369: 7(fvec4) Load 1364(texel) 1370: 7(fvec4) FAdd 1369 1368 Store 1364(texel) 1370 1371: 215 Load 217(s2DArray) 1372: 148(fvec3) Load 150(c3) 1373: 6(float) Load 371(lod) 1374: 7(fvec4) ImageGather 1371 1372 1230 Lod 1373 1375: 7(fvec4) Load 1364(texel) 1376: 7(fvec4) FAdd 1375 1374 Store 1364(texel) 1376 1377: 156 Load 158(sCube) 1378: 148(fvec3) Load 150(c3) 1379: 6(float) Load 371(lod) 1380: 7(fvec4) ImageGather 1377 1378 1230 Lod 1379 1381: 7(fvec4) Load 1364(texel) 1382: 7(fvec4) FAdd 1381 1380 Store 1364(texel) 1382 1383: 224 Load 226(sCubeArray) 1384: 7(fvec4) Load 197(c4) 1385: 6(float) Load 371(lod) 1386: 7(fvec4) ImageGather 1383 1384 1230 Lod 1385 1387: 7(fvec4) Load 1364(texel) 1388: 7(fvec4) FAdd 1387 1386 Store 1364(texel) 1388 1389: 7(fvec4) Load 1364(texel) ReturnValue 1389 FunctionEnd 43(testTextureGatherLodOffset(): 7(fvec4) Function None 8 44: Label 1392(texel): 63(ptr) Variable Function Store 1392(texel) 120 1393: 133 Load 135(s2D) 1394: 52(fvec2) Load 138(c2) 1395: 6(float) Load 371(lod) 1396: 7(fvec4) ImageGather 1393 1394 1230 Lod ConstOffset 1395 452 1397: 7(fvec4) Load 1392(texel) 1398: 7(fvec4) FAdd 1397 1396 Store 1392(texel) 1398 1399: 215 Load 217(s2DArray) 1400: 148(fvec3) Load 150(c3) 1401: 6(float) Load 371(lod) 1402: 7(fvec4) ImageGather 1399 1400 1230 Lod ConstOffset 1401 452 1403: 7(fvec4) Load 1392(texel) 1404: 7(fvec4) FAdd 1403 1402 Store 1392(texel) 1404 1405: 7(fvec4) Load 1392(texel) ReturnValue 1405 FunctionEnd 45(testTextureGatherLodOffsets(): 7(fvec4) Function None 8 46: Label 1408(texel): 63(ptr) Variable Function Store 1408(texel) 120 1409: 133 Load 135(s2D) 1410: 52(fvec2) Load 138(c2) 1411: 6(float) Load 371(lod) 1412: 7(fvec4) ImageGather 1409 1410 1230 Lod ConstOffsets 1411 1329 1413: 7(fvec4) Load 1408(texel) 1414: 7(fvec4) FAdd 1413 1412 Store 1408(texel) 1414 1415: 215 Load 217(s2DArray) 1416: 148(fvec3) Load 150(c3) 1417: 6(float) Load 371(lod) 1418: 7(fvec4) ImageGather 1415 1416 1230 Lod ConstOffsets 1417 1329 1419: 7(fvec4) Load 1408(texel) 1420: 7(fvec4) FAdd 1419 1418 Store 1408(texel) 1420 1421: 7(fvec4) Load 1408(texel) ReturnValue 1421 FunctionEnd 50(testTextureSize(): 48(ivec4) Function None 49 51: Label 1425(size): 1424(ptr) Variable Function Store 1425(size) 1426 1427: 122 Load 124(s1D) 1428: 6(float) Load 371(lod) 1429: 47(int) ConvertFToS 1428 1430: 121 Image 1427 1431: 47(int) ImageQuerySizeLod 1430 1429 1433: 1432(ptr) AccessChain 1425(size) 173 1434: 47(int) Load 1433 1435: 47(int) IAdd 1434 1431 1436: 1432(ptr) AccessChain 1425(size) 173 Store 1436 1435 1437: 133 Load 135(s2D) 1438: 6(float) Load 371(lod) 1439: 47(int) ConvertFToS 1438 1440: 132 Image 1437 1441: 451(ivec2) ImageQuerySizeLod 1440 1439 1442: 48(ivec4) Load 1425(size) 1443: 451(ivec2) VectorShuffle 1442 1442 0 1 1444: 451(ivec2) IAdd 1443 1441 1445: 1432(ptr) AccessChain 1425(size) 173 1446: 47(int) CompositeExtract 1444 0 Store 1445 1446 1448: 1432(ptr) AccessChain 1425(size) 1447 1449: 47(int) CompositeExtract 1444 1 Store 1448 1449 1450: 144 Load 146(s3D) 1451: 6(float) Load 371(lod) 1452: 47(int) ConvertFToS 1451 1453: 143 Image 1450 1454: 458(ivec3) ImageQuerySizeLod 1453 1452 1455: 48(ivec4) Load 1425(size) 1456: 458(ivec3) VectorShuffle 1455 1455 0 1 2 1457: 458(ivec3) IAdd 1456 1454 1458: 1432(ptr) AccessChain 1425(size) 173 1459: 47(int) CompositeExtract 1457 0 Store 1458 1459 1460: 1432(ptr) AccessChain 1425(size) 1447 1461: 47(int) CompositeExtract 1457 1 Store 1460 1461 1463: 1432(ptr) AccessChain 1425(size) 1462 1464: 47(int) CompositeExtract 1457 2 Store 1463 1464 1465: 156 Load 158(sCube) 1466: 6(float) Load 371(lod) 1467: 47(int) ConvertFToS 1466 1468: 155 Image 1465 1469: 451(ivec2) ImageQuerySizeLod 1468 1467 1470: 48(ivec4) Load 1425(size) 1471: 451(ivec2) VectorShuffle 1470 1470 0 1 1472: 451(ivec2) IAdd 1471 1469 1473: 1432(ptr) AccessChain 1425(size) 173 1474: 47(int) CompositeExtract 1472 0 Store 1473 1474 1475: 1432(ptr) AccessChain 1425(size) 1447 1476: 47(int) CompositeExtract 1472 1 Store 1475 1476 1477: 165 Load 167(s1DShadow) 1478: 6(float) Load 371(lod) 1479: 47(int) ConvertFToS 1478 1480: 164 Image 1477 1481: 47(int) ImageQuerySizeLod 1480 1479 1482: 1432(ptr) AccessChain 1425(size) 173 1483: 47(int) Load 1482 1484: 47(int) IAdd 1483 1481 1485: 1432(ptr) AccessChain 1425(size) 173 Store 1485 1484 1486: 180 Load 182(s2DShadow) 1487: 6(float) Load 371(lod) 1488: 47(int) ConvertFToS 1487 1489: 179 Image 1486 1490: 451(ivec2) ImageQuerySizeLod 1489 1488 1491: 48(ivec4) Load 1425(size) 1492: 451(ivec2) VectorShuffle 1491 1491 0 1 1493: 451(ivec2) IAdd 1492 1490 1494: 1432(ptr) AccessChain 1425(size) 173 1495: 47(int) CompositeExtract 1493 0 Store 1494 1495 1496: 1432(ptr) AccessChain 1425(size) 1447 1497: 47(int) CompositeExtract 1493 1 Store 1496 1497 1498: 192 Load 194(sCubeShadow) 1499: 6(float) Load 371(lod) 1500: 47(int) ConvertFToS 1499 1501: 191 Image 1498 1502: 451(ivec2) ImageQuerySizeLod 1501 1500 1503: 48(ivec4) Load 1425(size) 1504: 451(ivec2) VectorShuffle 1503 1503 0 1 1505: 451(ivec2) IAdd 1504 1502 1506: 1432(ptr) AccessChain 1425(size) 173 1507: 47(int) CompositeExtract 1505 0 Store 1506 1507 1508: 1432(ptr) AccessChain 1425(size) 1447 1509: 47(int) CompositeExtract 1505 1 Store 1508 1509 1510: 224 Load 226(sCubeArray) 1511: 6(float) Load 371(lod) 1512: 47(int) ConvertFToS 1511 1513: 223 Image 1510 1514: 458(ivec3) ImageQuerySizeLod 1513 1512 1515: 48(ivec4) Load 1425(size) 1516: 458(ivec3) VectorShuffle 1515 1515 0 1 2 1517: 458(ivec3) IAdd 1516 1514 1518: 1432(ptr) AccessChain 1425(size) 173 1519: 47(int) CompositeExtract 1517 0 Store 1518 1519 1520: 1432(ptr) AccessChain 1425(size) 1447 1521: 47(int) CompositeExtract 1517 1 Store 1520 1521 1522: 1432(ptr) AccessChain 1425(size) 1462 1523: 47(int) CompositeExtract 1517 2 Store 1522 1523 1524: 278 Load 280(sCubeArrayShadow) 1525: 6(float) Load 371(lod) 1526: 47(int) ConvertFToS 1525 1527: 277 Image 1524 1528: 458(ivec3) ImageQuerySizeLod 1527 1526 1529: 48(ivec4) Load 1425(size) 1530: 458(ivec3) VectorShuffle 1529 1529 0 1 2 1531: 458(ivec3) IAdd 1530 1528 1532: 1432(ptr) AccessChain 1425(size) 173 1533: 47(int) CompositeExtract 1531 0 Store 1532 1533 1534: 1432(ptr) AccessChain 1425(size) 1447 1535: 47(int) CompositeExtract 1531 1 Store 1534 1535 1536: 1432(ptr) AccessChain 1425(size) 1462 1537: 47(int) CompositeExtract 1531 2 Store 1536 1537 1538: 257 Load 259(s2DRect) 1539: 256 Image 1538 1540: 451(ivec2) ImageQuerySize 1539 1541: 48(ivec4) Load 1425(size) 1542: 451(ivec2) VectorShuffle 1541 1541 0 1 1543: 451(ivec2) IAdd 1542 1540 1544: 1432(ptr) AccessChain 1425(size) 173 1545: 47(int) CompositeExtract 1543 0 Store 1544 1545 1546: 1432(ptr) AccessChain 1425(size) 1447 1547: 47(int) CompositeExtract 1543 1 Store 1546 1547 1548: 266 Load 268(s2DRectShadow) 1549: 265 Image 1548 1550: 451(ivec2) ImageQuerySize 1549 1551: 48(ivec4) Load 1425(size) 1552: 451(ivec2) VectorShuffle 1551 1551 0 1 1553: 451(ivec2) IAdd 1552 1550 1554: 1432(ptr) AccessChain 1425(size) 173 1555: 47(int) CompositeExtract 1553 0 Store 1554 1555 1556: 1432(ptr) AccessChain 1425(size) 1447 1557: 47(int) CompositeExtract 1553 1 Store 1556 1557 1558: 206 Load 208(s1DArray) 1559: 6(float) Load 371(lod) 1560: 47(int) ConvertFToS 1559 1561: 205 Image 1558 1562: 451(ivec2) ImageQuerySizeLod 1561 1560 1563: 48(ivec4) Load 1425(size) 1564: 451(ivec2) VectorShuffle 1563 1563 0 1 1565: 451(ivec2) IAdd 1564 1562 1566: 1432(ptr) AccessChain 1425(size) 173 1567: 47(int) CompositeExtract 1565 0 Store 1566 1567 1568: 1432(ptr) AccessChain 1425(size) 1447 1569: 47(int) CompositeExtract 1565 1 Store 1568 1569 1570: 215 Load 217(s2DArray) 1571: 6(float) Load 371(lod) 1572: 47(int) ConvertFToS 1571 1573: 214 Image 1570 1574: 458(ivec3) ImageQuerySizeLod 1573 1572 1575: 48(ivec4) Load 1425(size) 1576: 458(ivec3) VectorShuffle 1575 1575 0 1 2 1577: 458(ivec3) IAdd 1576 1574 1578: 1432(ptr) AccessChain 1425(size) 173 1579: 47(int) CompositeExtract 1577 0 Store 1578 1579 1580: 1432(ptr) AccessChain 1425(size) 1447 1581: 47(int) CompositeExtract 1577 1 Store 1580 1581 1582: 1432(ptr) AccessChain 1425(size) 1462 1583: 47(int) CompositeExtract 1577 2 Store 1582 1583 1584: 233 Load 235(s1DArrayShadow) 1585: 6(float) Load 371(lod) 1586: 47(int) ConvertFToS 1585 1587: 232 Image 1584 1588: 451(ivec2) ImageQuerySizeLod 1587 1586 1589: 48(ivec4) Load 1425(size) 1590: 451(ivec2) VectorShuffle 1589 1589 0 1 1591: 451(ivec2) IAdd 1590 1588 1592: 1432(ptr) AccessChain 1425(size) 173 1593: 47(int) CompositeExtract 1591 0 Store 1592 1593 1594: 1432(ptr) AccessChain 1425(size) 1447 1595: 47(int) CompositeExtract 1591 1 Store 1594 1595 1596: 245 Load 247(s2DArrayShadow) 1597: 6(float) Load 371(lod) 1598: 47(int) ConvertFToS 1597 1599: 244 Image 1596 1600: 458(ivec3) ImageQuerySizeLod 1599 1598 1601: 48(ivec4) Load 1425(size) 1602: 458(ivec3) VectorShuffle 1601 1601 0 1 2 1603: 458(ivec3) IAdd 1602 1600 1604: 1432(ptr) AccessChain 1425(size) 173 1605: 47(int) CompositeExtract 1603 0 Store 1604 1605 1606: 1432(ptr) AccessChain 1425(size) 1447 1607: 47(int) CompositeExtract 1603 1 Store 1606 1607 1608: 1432(ptr) AccessChain 1425(size) 1462 1609: 47(int) CompositeExtract 1603 2 Store 1608 1609 1610: 771 Load 773(sBuffer) 1611: 770 Image 1610 1612: 47(int) ImageQuerySize 1611 1613: 1432(ptr) AccessChain 1425(size) 173 1614: 47(int) Load 1613 1615: 47(int) IAdd 1614 1612 1616: 1432(ptr) AccessChain 1425(size) 173 Store 1616 1615 1617: 782 Load 784(s2DMS) 1618: 781 Image 1617 1619: 451(ivec2) ImageQuerySize 1618 1620: 48(ivec4) Load 1425(size) 1621: 451(ivec2) VectorShuffle 1620 1620 0 1 1622: 451(ivec2) IAdd 1621 1619 1623: 1432(ptr) AccessChain 1425(size) 173 1624: 47(int) CompositeExtract 1622 0 Store 1623 1624 1625: 1432(ptr) AccessChain 1425(size) 1447 1626: 47(int) CompositeExtract 1622 1 Store 1625 1626 1627: 793 Load 795(s2DMSArray) 1628: 792 Image 1627 1629: 458(ivec3) ImageQuerySize 1628 1630: 48(ivec4) Load 1425(size) 1631: 458(ivec3) VectorShuffle 1630 1630 0 1 2 1632: 458(ivec3) IAdd 1631 1629 1633: 1432(ptr) AccessChain 1425(size) 173 1634: 47(int) CompositeExtract 1632 0 Store 1633 1634 1635: 1432(ptr) AccessChain 1425(size) 1447 1636: 47(int) CompositeExtract 1632 1 Store 1635 1636 1637: 1432(ptr) AccessChain 1425(size) 1462 1638: 47(int) CompositeExtract 1632 2 Store 1637 1638 1639: 48(ivec4) Load 1425(size) ReturnValue 1639 FunctionEnd 54(testTextureQueryLod(): 52(fvec2) Function None 53 55: Label 1643(lod): 1642(ptr) Variable Function Store 1643(lod) 1644 1645: 122 Load 124(s1D) 1646: 6(float) Load 127(c1) 1647: 52(fvec2) ImageQueryLod 1645 1646 1648: 52(fvec2) Load 1643(lod) 1649: 52(fvec2) FAdd 1648 1647 Store 1643(lod) 1649 1650: 133 Load 135(s2D) 1651: 52(fvec2) Load 138(c2) 1652: 52(fvec2) ImageQueryLod 1650 1651 1653: 52(fvec2) Load 1643(lod) 1654: 52(fvec2) FAdd 1653 1652 Store 1643(lod) 1654 1655: 144 Load 146(s3D) 1656: 148(fvec3) Load 150(c3) 1657: 52(fvec2) ImageQueryLod 1655 1656 1658: 52(fvec2) Load 1643(lod) 1659: 52(fvec2) FAdd 1658 1657 Store 1643(lod) 1659 1660: 156 Load 158(sCube) 1661: 148(fvec3) Load 150(c3) 1662: 52(fvec2) ImageQueryLod 1660 1661 1663: 52(fvec2) Load 1643(lod) 1664: 52(fvec2) FAdd 1663 1662 Store 1643(lod) 1664 1665: 206 Load 208(s1DArray) 1666: 6(float) Load 127(c1) 1667: 52(fvec2) ImageQueryLod 1665 1666 1668: 52(fvec2) Load 1643(lod) 1669: 52(fvec2) FAdd 1668 1667 Store 1643(lod) 1669 1670: 215 Load 217(s2DArray) 1671: 52(fvec2) Load 138(c2) 1672: 52(fvec2) ImageQueryLod 1670 1671 1673: 52(fvec2) Load 1643(lod) 1674: 52(fvec2) FAdd 1673 1672 Store 1643(lod) 1674 1675: 224 Load 226(sCubeArray) 1676: 148(fvec3) Load 150(c3) 1677: 52(fvec2) ImageQueryLod 1675 1676 1678: 52(fvec2) Load 1643(lod) 1679: 52(fvec2) FAdd 1678 1677 Store 1643(lod) 1679 1680: 165 Load 167(s1DShadow) 1681: 6(float) Load 127(c1) 1682: 52(fvec2) ImageQueryLod 1680 1681 1683: 52(fvec2) Load 1643(lod) 1684: 52(fvec2) FAdd 1683 1682 Store 1643(lod) 1684 1685: 180 Load 182(s2DShadow) 1686: 52(fvec2) Load 138(c2) 1687: 52(fvec2) ImageQueryLod 1685 1686 1688: 52(fvec2) Load 1643(lod) 1689: 52(fvec2) FAdd 1688 1687 Store 1643(lod) 1689 1690: 278 Load 280(sCubeArrayShadow) 1691: 148(fvec3) Load 150(c3) 1692: 52(fvec2) ImageQueryLod 1690 1691 1693: 52(fvec2) Load 1643(lod) 1694: 52(fvec2) FAdd 1693 1692 Store 1643(lod) 1694 1695: 233 Load 235(s1DArrayShadow) 1696: 6(float) Load 127(c1) 1697: 52(fvec2) ImageQueryLod 1695 1696 1698: 52(fvec2) Load 1643(lod) 1699: 52(fvec2) FAdd 1698 1697 Store 1643(lod) 1699 1700: 245 Load 247(s2DArrayShadow) 1701: 52(fvec2) Load 138(c2) 1702: 52(fvec2) ImageQueryLod 1700 1701 1703: 52(fvec2) Load 1643(lod) 1704: 52(fvec2) FAdd 1703 1702 Store 1643(lod) 1704 1705: 278 Load 280(sCubeArrayShadow) 1706: 148(fvec3) Load 150(c3) 1707: 52(fvec2) ImageQueryLod 1705 1706 1708: 52(fvec2) Load 1643(lod) 1709: 52(fvec2) FAdd 1708 1707 Store 1643(lod) 1709 1710: 52(fvec2) Load 1643(lod) ReturnValue 1710 FunctionEnd 57(testTextureQueryLevels(): 47(int) Function None 56 58: Label 1713(levels): 1432(ptr) Variable Function Store 1713(levels) 1230 1714: 122 Load 124(s1D) 1715: 121 Image 1714 1716: 47(int) ImageQueryLevels 1715 1717: 47(int) Load 1713(levels) 1718: 47(int) IAdd 1717 1716 Store 1713(levels) 1718 1719: 133 Load 135(s2D) 1720: 132 Image 1719 1721: 47(int) ImageQueryLevels 1720 1722: 47(int) Load 1713(levels) 1723: 47(int) IAdd 1722 1721 Store 1713(levels) 1723 1724: 144 Load 146(s3D) 1725: 143 Image 1724 1726: 47(int) ImageQueryLevels 1725 1727: 47(int) Load 1713(levels) 1728: 47(int) IAdd 1727 1726 Store 1713(levels) 1728 1729: 156 Load 158(sCube) 1730: 155 Image 1729 1731: 47(int) ImageQueryLevels 1730 1732: 47(int) Load 1713(levels) 1733: 47(int) IAdd 1732 1731 Store 1713(levels) 1733 1734: 165 Load 167(s1DShadow) 1735: 164 Image 1734 1736: 47(int) ImageQueryLevels 1735 1737: 47(int) Load 1713(levels) 1738: 47(int) IAdd 1737 1736 Store 1713(levels) 1738 1739: 180 Load 182(s2DShadow) 1740: 179 Image 1739 1741: 47(int) ImageQueryLevels 1740 1742: 47(int) Load 1713(levels) 1743: 47(int) IAdd 1742 1741 Store 1713(levels) 1743 1744: 192 Load 194(sCubeShadow) 1745: 191 Image 1744 1746: 47(int) ImageQueryLevels 1745 1747: 47(int) Load 1713(levels) 1748: 47(int) IAdd 1747 1746 Store 1713(levels) 1748 1749: 224 Load 226(sCubeArray) 1750: 223 Image 1749 1751: 47(int) ImageQueryLevels 1750 1752: 47(int) Load 1713(levels) 1753: 47(int) IAdd 1752 1751 Store 1713(levels) 1753 1754: 278 Load 280(sCubeArrayShadow) 1755: 277 Image 1754 1756: 47(int) ImageQueryLevels 1755 1757: 47(int) Load 1713(levels) 1758: 47(int) IAdd 1757 1756 Store 1713(levels) 1758 1759: 206 Load 208(s1DArray) 1760: 205 Image 1759 1761: 47(int) ImageQueryLevels 1760 1762: 47(int) Load 1713(levels) 1763: 47(int) IAdd 1762 1761 Store 1713(levels) 1763 1764: 215 Load 217(s2DArray) 1765: 214 Image 1764 1766: 47(int) ImageQueryLevels 1765 1767: 47(int) Load 1713(levels) 1768: 47(int) IAdd 1767 1766 Store 1713(levels) 1768 1769: 233 Load 235(s1DArrayShadow) 1770: 232 Image 1769 1771: 47(int) ImageQueryLevels 1770 1772: 47(int) Load 1713(levels) 1773: 47(int) IAdd 1772 1771 Store 1713(levels) 1773 1774: 245 Load 247(s2DArrayShadow) 1775: 244 Image 1774 1776: 47(int) ImageQueryLevels 1775 1777: 47(int) Load 1713(levels) 1778: 47(int) IAdd 1777 1776 Store 1713(levels) 1778 1779: 47(int) Load 1713(levels) ReturnValue 1779 FunctionEnd 59(testTextureSamples(): 47(int) Function None 56 60: Label 1782(samples): 1432(ptr) Variable Function Store 1782(samples) 1230 1783: 782 Load 784(s2DMS) 1784: 781 Image 1783 1785: 47(int) ImageQuerySamples 1784 1786: 47(int) Load 1782(samples) 1787: 47(int) IAdd 1786 1785 Store 1782(samples) 1787 1788: 793 Load 795(s2DMSArray) 1789: 792 Image 1788 1790: 47(int) ImageQuerySamples 1789 1791: 47(int) Load 1782(samples) 1792: 47(int) IAdd 1791 1790 Store 1782(samples) 1792 1793: 47(int) Load 1782(samples) ReturnValue 1793 FunctionEnd 61(testImageLoad(): 7(fvec4) Function None 8 62: Label 1796(texel): 63(ptr) Variable Function Store 1796(texel) 120 1800: 1797 Load 1799(i1D) 1801: 6(float) Load 127(c1) 1802: 47(int) ConvertFToS 1801 1803: 7(fvec4) ImageRead 1800 1802 1804: 7(fvec4) Load 1796(texel) 1805: 7(fvec4) FAdd 1804 1803 Store 1796(texel) 1805 1809: 1806 Load 1808(i2D) 1810: 52(fvec2) Load 138(c2) 1811: 451(ivec2) ConvertFToS 1810 1812: 7(fvec4) ImageRead 1809 1811 1813: 7(fvec4) Load 1796(texel) 1814: 7(fvec4) FAdd 1813 1812 Store 1796(texel) 1814 1818: 1815 Load 1817(i3D) 1819: 148(fvec3) Load 150(c3) 1820: 458(ivec3) ConvertFToS 1819 1821: 7(fvec4) ImageRead 1818 1820 1822: 7(fvec4) Load 1796(texel) 1823: 7(fvec4) FAdd 1822 1821 Store 1796(texel) 1823 1827: 1824 Load 1826(i2DRect) 1828: 52(fvec2) Load 138(c2) 1829: 451(ivec2) ConvertFToS 1828 1830: 7(fvec4) ImageRead 1827 1829 1831: 7(fvec4) Load 1796(texel) 1832: 7(fvec4) FAdd 1831 1830 Store 1796(texel) 1832 1836: 1833 Load 1835(iCube) 1837: 148(fvec3) Load 150(c3) 1838: 458(ivec3) ConvertFToS 1837 1839: 7(fvec4) ImageRead 1836 1838 1840: 7(fvec4) Load 1796(texel) 1841: 7(fvec4) FAdd 1840 1839 Store 1796(texel) 1841 1845: 1842 Load 1844(iBuffer) 1846: 6(float) Load 127(c1) 1847: 47(int) ConvertFToS 1846 1848: 7(fvec4) ImageRead 1845 1847 1849: 7(fvec4) Load 1796(texel) 1850: 7(fvec4) FAdd 1849 1848 Store 1796(texel) 1850 1854: 1851 Load 1853(i1DArray) 1855: 52(fvec2) Load 138(c2) 1856: 451(ivec2) ConvertFToS 1855 1857: 7(fvec4) ImageRead 1854 1856 1858: 7(fvec4) Load 1796(texel) 1859: 7(fvec4) FAdd 1858 1857 Store 1796(texel) 1859 1863: 1860 Load 1862(i2DArray) 1864: 148(fvec3) Load 150(c3) 1865: 458(ivec3) ConvertFToS 1864 1866: 7(fvec4) ImageRead 1863 1865 1867: 7(fvec4) Load 1796(texel) 1868: 7(fvec4) FAdd 1867 1866 Store 1796(texel) 1868 1872: 1869 Load 1871(iCubeArray) 1873: 148(fvec3) Load 150(c3) 1874: 458(ivec3) ConvertFToS 1873 1875: 7(fvec4) ImageRead 1872 1874 1876: 7(fvec4) Load 1796(texel) 1877: 7(fvec4) FAdd 1876 1875 Store 1796(texel) 1877 1881: 1878 Load 1880(i2DMS) 1882: 52(fvec2) Load 138(c2) 1883: 451(ivec2) ConvertFToS 1882 1884: 7(fvec4) ImageRead 1881 1883 Sample 445 1885: 7(fvec4) Load 1796(texel) 1886: 7(fvec4) FAdd 1885 1884 Store 1796(texel) 1886 1890: 1887 Load 1889(i2DMSArray) 1891: 148(fvec3) Load 150(c3) 1892: 458(ivec3) ConvertFToS 1891 1893: 7(fvec4) ImageRead 1890 1892 Sample 445 1894: 7(fvec4) Load 1796(texel) 1895: 7(fvec4) FAdd 1894 1893 Store 1796(texel) 1895 1896: 7(fvec4) Load 1796(texel) ReturnValue 1896 FunctionEnd 66(testImageStore(vf4;): 2 Function None 64 65(data): 63(ptr) FunctionParameter 67: Label 1899: 1797 Load 1799(i1D) 1900: 6(float) Load 127(c1) 1901: 47(int) ConvertFToS 1900 1902: 7(fvec4) Load 65(data) ImageWrite 1899 1901 1902 1903: 1806 Load 1808(i2D) 1904: 52(fvec2) Load 138(c2) 1905: 451(ivec2) ConvertFToS 1904 1906: 7(fvec4) Load 65(data) ImageWrite 1903 1905 1906 1907: 1815 Load 1817(i3D) 1908: 148(fvec3) Load 150(c3) 1909: 458(ivec3) ConvertFToS 1908 1910: 7(fvec4) Load 65(data) ImageWrite 1907 1909 1910 1911: 1824 Load 1826(i2DRect) 1912: 52(fvec2) Load 138(c2) 1913: 451(ivec2) ConvertFToS 1912 1914: 7(fvec4) Load 65(data) ImageWrite 1911 1913 1914 1915: 1833 Load 1835(iCube) 1916: 148(fvec3) Load 150(c3) 1917: 458(ivec3) ConvertFToS 1916 1918: 7(fvec4) Load 65(data) ImageWrite 1915 1917 1918 1919: 1842 Load 1844(iBuffer) 1920: 6(float) Load 127(c1) 1921: 47(int) ConvertFToS 1920 1922: 7(fvec4) Load 65(data) ImageWrite 1919 1921 1922 1923: 1851 Load 1853(i1DArray) 1924: 52(fvec2) Load 138(c2) 1925: 451(ivec2) ConvertFToS 1924 1926: 7(fvec4) Load 65(data) ImageWrite 1923 1925 1926 1927: 1860 Load 1862(i2DArray) 1928: 148(fvec3) Load 150(c3) 1929: 458(ivec3) ConvertFToS 1928 1930: 7(fvec4) Load 65(data) ImageWrite 1927 1929 1930 1931: 1869 Load 1871(iCubeArray) 1932: 148(fvec3) Load 150(c3) 1933: 458(ivec3) ConvertFToS 1932 1934: 7(fvec4) Load 65(data) ImageWrite 1931 1933 1934 1935: 1878 Load 1880(i2DMS) 1936: 52(fvec2) Load 138(c2) 1937: 451(ivec2) ConvertFToS 1936 1938: 7(fvec4) Load 65(data) ImageWrite 1935 1937 1938 Sample 445 1939: 1887 Load 1889(i2DMSArray) 1940: 148(fvec3) Load 150(c3) 1941: 458(ivec3) ConvertFToS 1940 1942: 7(fvec4) Load 65(data) ImageWrite 1939 1941 1942 Sample 445 Return FunctionEnd 68(testSparseTexture(): 7(fvec4) Function None 8 69: Label 1943(texel): 63(ptr) Variable Function Store 1943(texel) 120 1944: 133 Load 135(s2D) 1945: 52(fvec2) Load 138(c2) 1947:1946(ResType) ImageSparseSampleImplicitLod 1944 1945 1948: 7(fvec4) CompositeExtract 1947 1 Store 1943(texel) 1948 1949: 47(int) CompositeExtract 1947 0 1950: 144 Load 146(s3D) 1951: 148(fvec3) Load 150(c3) 1952:1946(ResType) ImageSparseSampleImplicitLod 1950 1951 1953: 7(fvec4) CompositeExtract 1952 1 Store 1943(texel) 1953 1954: 47(int) CompositeExtract 1952 0 1955: 156 Load 158(sCube) 1956: 148(fvec3) Load 150(c3) 1957:1946(ResType) ImageSparseSampleImplicitLod 1955 1956 1958: 7(fvec4) CompositeExtract 1957 1 Store 1943(texel) 1958 1959: 47(int) CompositeExtract 1957 0 1960: 180 Load 182(s2DShadow) 1961: 148(fvec3) Load 150(c3) 1962: 174(ptr) AccessChain 1943(texel) 173 1963: 6(float) CompositeExtract 1961 2 1965:1964(ResType) ImageSparseSampleDrefImplicitLod 1960 1961 1963 1966: 6(float) CompositeExtract 1965 1 Store 1962 1966 1967: 47(int) CompositeExtract 1965 0 1968: 192 Load 194(sCubeShadow) 1969: 7(fvec4) Load 197(c4) 1970: 174(ptr) AccessChain 1943(texel) 173 1971: 6(float) CompositeExtract 1969 3 1972:1964(ResType) ImageSparseSampleDrefImplicitLod 1968 1969 1971 1973: 6(float) CompositeExtract 1972 1 Store 1970 1973 1974: 47(int) CompositeExtract 1972 0 1975: 215 Load 217(s2DArray) 1976: 148(fvec3) Load 150(c3) 1977:1946(ResType) ImageSparseSampleImplicitLod 1975 1976 1978: 7(fvec4) CompositeExtract 1977 1 Store 1943(texel) 1978 1979: 47(int) CompositeExtract 1977 0 1980: 224 Load 226(sCubeArray) 1981: 7(fvec4) Load 197(c4) 1982:1946(ResType) ImageSparseSampleImplicitLod 1980 1981 1983: 7(fvec4) CompositeExtract 1982 1 Store 1943(texel) 1983 1984: 47(int) CompositeExtract 1982 0 1985: 245 Load 247(s2DArrayShadow) 1986: 7(fvec4) Load 197(c4) 1987: 174(ptr) AccessChain 1943(texel) 173 1988: 6(float) CompositeExtract 1986 3 1989:1964(ResType) ImageSparseSampleDrefImplicitLod 1985 1986 1988 1990: 6(float) CompositeExtract 1989 1 Store 1987 1990 1991: 47(int) CompositeExtract 1989 0 1992: 257 Load 259(s2DRect) 1993: 52(fvec2) Load 138(c2) 1994:1946(ResType) ImageSparseSampleImplicitLod 1992 1993 1995: 7(fvec4) CompositeExtract 1994 1 Store 1943(texel) 1995 1996: 47(int) CompositeExtract 1994 0 1997: 266 Load 268(s2DRectShadow) 1998: 148(fvec3) Load 150(c3) 1999: 174(ptr) AccessChain 1943(texel) 173 2000: 6(float) CompositeExtract 1998 2 2001:1964(ResType) ImageSparseSampleDrefImplicitLod 1997 1998 2000 2002: 6(float) CompositeExtract 2001 1 Store 1999 2002 2003: 47(int) CompositeExtract 2001 0 2004: 278 Load 280(sCubeArrayShadow) 2005: 7(fvec4) Load 197(c4) 2006: 6(float) Load 283(compare) 2007: 174(ptr) AccessChain 1943(texel) 173 2008:1964(ResType) ImageSparseSampleDrefImplicitLod 2004 2005 2006 2009: 6(float) CompositeExtract 2008 1 Store 2007 2009 2010: 47(int) CompositeExtract 2008 0 2011: 7(fvec4) Load 1943(texel) ReturnValue 2011 FunctionEnd 70(testSparseTextureLod(): 7(fvec4) Function None 8 71: Label 2014(texel): 63(ptr) Variable Function Store 2014(texel) 120 2015: 133 Load 135(s2D) 2016: 52(fvec2) Load 138(c2) 2017: 6(float) Load 371(lod) 2018:1946(ResType) ImageSparseSampleExplicitLod 2015 2016 Lod 2017 2019: 7(fvec4) CompositeExtract 2018 1 Store 2014(texel) 2019 2020: 47(int) CompositeExtract 2018 0 2021: 144 Load 146(s3D) 2022: 148(fvec3) Load 150(c3) 2023: 6(float) Load 371(lod) 2024:1946(ResType) ImageSparseSampleExplicitLod 2021 2022 Lod 2023 2025: 7(fvec4) CompositeExtract 2024 1 Store 2014(texel) 2025 2026: 47(int) CompositeExtract 2024 0 2027: 156 Load 158(sCube) 2028: 148(fvec3) Load 150(c3) 2029: 6(float) Load 371(lod) 2030:1946(ResType) ImageSparseSampleExplicitLod 2027 2028 Lod 2029 2031: 7(fvec4) CompositeExtract 2030 1 Store 2014(texel) 2031 2032: 47(int) CompositeExtract 2030 0 2033: 180 Load 182(s2DShadow) 2034: 148(fvec3) Load 150(c3) 2035: 6(float) Load 371(lod) 2036: 174(ptr) AccessChain 2014(texel) 173 2037: 6(float) CompositeExtract 2034 2 2038:1964(ResType) ImageSparseSampleDrefExplicitLod 2033 2034 2037 Lod 2035 2039: 6(float) CompositeExtract 2038 1 Store 2036 2039 2040: 47(int) CompositeExtract 2038 0 2041: 215 Load 217(s2DArray) 2042: 148(fvec3) Load 150(c3) 2043: 6(float) Load 371(lod) 2044:1946(ResType) ImageSparseSampleExplicitLod 2041 2042 Lod 2043 2045: 7(fvec4) CompositeExtract 2044 1 Store 2014(texel) 2045 2046: 47(int) CompositeExtract 2044 0 2047: 224 Load 226(sCubeArray) 2048: 7(fvec4) Load 197(c4) 2049: 6(float) Load 371(lod) 2050:1946(ResType) ImageSparseSampleExplicitLod 2047 2048 Lod 2049 2051: 7(fvec4) CompositeExtract 2050 1 Store 2014(texel) 2051 2052: 47(int) CompositeExtract 2050 0 2053: 7(fvec4) Load 2014(texel) ReturnValue 2053 FunctionEnd 72(testSparseTextureOffset(): 7(fvec4) Function None 8 73: Label 2056(texel): 63(ptr) Variable Function Store 2056(texel) 120 2057: 133 Load 135(s2D) 2058: 52(fvec2) Load 138(c2) 2059:1946(ResType) ImageSparseSampleImplicitLod 2057 2058 ConstOffset 452 2060: 7(fvec4) CompositeExtract 2059 1 Store 2056(texel) 2060 2061: 47(int) CompositeExtract 2059 0 2062: 144 Load 146(s3D) 2063: 148(fvec3) Load 150(c3) 2064:1946(ResType) ImageSparseSampleImplicitLod 2062 2063 ConstOffset 459 2065: 7(fvec4) CompositeExtract 2064 1 Store 2056(texel) 2065 2066: 47(int) CompositeExtract 2064 0 2067: 257 Load 259(s2DRect) 2068: 52(fvec2) Load 138(c2) 2069:1946(ResType) ImageSparseSampleImplicitLod 2067 2068 ConstOffset 452 2070: 7(fvec4) CompositeExtract 2069 1 Store 2056(texel) 2070 2071: 47(int) CompositeExtract 2069 0 2072: 266 Load 268(s2DRectShadow) 2073: 148(fvec3) Load 150(c3) 2074: 174(ptr) AccessChain 2056(texel) 173 2075: 6(float) CompositeExtract 2073 2 2076:1964(ResType) ImageSparseSampleDrefImplicitLod 2072 2073 2075 ConstOffset 452 2077: 6(float) CompositeExtract 2076 1 Store 2074 2077 2078: 47(int) CompositeExtract 2076 0 2079: 180 Load 182(s2DShadow) 2080: 148(fvec3) Load 150(c3) 2081: 174(ptr) AccessChain 2056(texel) 173 2082: 6(float) CompositeExtract 2080 2 2083:1964(ResType) ImageSparseSampleDrefImplicitLod 2079 2080 2082 ConstOffset 452 2084: 6(float) CompositeExtract 2083 1 Store 2081 2084 2085: 47(int) CompositeExtract 2083 0 2086: 215 Load 217(s2DArray) 2087: 148(fvec3) Load 150(c3) 2088:1946(ResType) ImageSparseSampleImplicitLod 2086 2087 ConstOffset 452 2089: 7(fvec4) CompositeExtract 2088 1 Store 2056(texel) 2089 2090: 47(int) CompositeExtract 2088 0 2091: 245 Load 247(s2DArrayShadow) 2092: 7(fvec4) Load 197(c4) 2093: 174(ptr) AccessChain 2056(texel) 173 2094: 6(float) CompositeExtract 2092 3 2095:1964(ResType) ImageSparseSampleDrefImplicitLod 2091 2092 2094 ConstOffset 452 2096: 6(float) CompositeExtract 2095 1 Store 2093 2096 2097: 47(int) CompositeExtract 2095 0 2098: 7(fvec4) Load 2056(texel) ReturnValue 2098 FunctionEnd 74(testSparseTextureLodOffset(): 7(fvec4) Function None 8 75: Label 2101(texel): 63(ptr) Variable Function Store 2101(texel) 120 2102: 133 Load 135(s2D) 2103: 52(fvec2) Load 138(c2) 2104: 6(float) Load 371(lod) 2105:1946(ResType) ImageSparseSampleExplicitLod 2102 2103 Lod ConstOffset 2104 452 2106: 7(fvec4) CompositeExtract 2105 1 Store 2101(texel) 2106 2107: 47(int) CompositeExtract 2105 0 2108: 144 Load 146(s3D) 2109: 148(fvec3) Load 150(c3) 2110: 6(float) Load 371(lod) 2111:1946(ResType) ImageSparseSampleExplicitLod 2108 2109 Lod ConstOffset 2110 459 2112: 7(fvec4) CompositeExtract 2111 1 Store 2101(texel) 2112 2113: 47(int) CompositeExtract 2111 0 2114: 180 Load 182(s2DShadow) 2115: 148(fvec3) Load 150(c3) 2116: 6(float) Load 371(lod) 2117: 174(ptr) AccessChain 2101(texel) 173 2118: 6(float) CompositeExtract 2115 2 2119:1964(ResType) ImageSparseSampleDrefExplicitLod 2114 2115 2118 Lod ConstOffset 2116 452 2120: 6(float) CompositeExtract 2119 1 Store 2117 2120 2121: 47(int) CompositeExtract 2119 0 2122: 215 Load 217(s2DArray) 2123: 148(fvec3) Load 150(c3) 2124: 6(float) Load 371(lod) 2125:1946(ResType) ImageSparseSampleExplicitLod 2122 2123 Lod ConstOffset 2124 452 2126: 7(fvec4) CompositeExtract 2125 1 Store 2101(texel) 2126 2127: 47(int) CompositeExtract 2125 0 2128: 7(fvec4) Load 2101(texel) ReturnValue 2128 FunctionEnd 76(testSparseTextureGrad(): 7(fvec4) Function None 8 77: Label 2131(texel): 63(ptr) Variable Function Store 2131(texel) 120 2132: 133 Load 135(s2D) 2133: 52(fvec2) Load 138(c2) 2134: 52(fvec2) Load 873(dPdxy2) 2135:1946(ResType) ImageSparseSampleExplicitLod 2132 2133 Grad 2134 2134 2136: 7(fvec4) CompositeExtract 2135 1 Store 2131(texel) 2136 2137: 47(int) CompositeExtract 2135 0 2138: 144 Load 146(s3D) 2139: 148(fvec3) Load 150(c3) 2140: 148(fvec3) Load 880(dPdxy3) 2141:1946(ResType) ImageSparseSampleExplicitLod 2138 2139 Grad 2140 2140 2142: 7(fvec4) CompositeExtract 2141 1 Store 2131(texel) 2142 2143: 47(int) CompositeExtract 2141 0 2144: 156 Load 158(sCube) 2145: 148(fvec3) Load 150(c3) 2146: 148(fvec3) Load 880(dPdxy3) 2147:1946(ResType) ImageSparseSampleExplicitLod 2144 2145 Grad 2146 2146 2148: 7(fvec4) CompositeExtract 2147 1 Store 2131(texel) 2148 2149: 47(int) CompositeExtract 2147 0 2150: 257 Load 259(s2DRect) 2151: 52(fvec2) Load 138(c2) 2152: 52(fvec2) Load 873(dPdxy2) 2153:1946(ResType) ImageSparseSampleExplicitLod 2150 2151 Grad 2152 2152 2154: 7(fvec4) CompositeExtract 2153 1 Store 2131(texel) 2154 2155: 47(int) CompositeExtract 2153 0 2156: 266 Load 268(s2DRectShadow) 2157: 148(fvec3) Load 150(c3) 2158: 52(fvec2) Load 873(dPdxy2) 2159: 174(ptr) AccessChain 2131(texel) 173 2160: 6(float) CompositeExtract 2157 2 2161:1964(ResType) ImageSparseSampleDrefExplicitLod 2156 2157 2160 Grad 2158 2158 2162: 6(float) CompositeExtract 2161 1 Store 2159 2162 2163: 47(int) CompositeExtract 2161 0 2164: 180 Load 182(s2DShadow) 2165: 148(fvec3) Load 150(c3) 2166: 52(fvec2) Load 873(dPdxy2) 2167: 174(ptr) AccessChain 2131(texel) 173 2168: 6(float) CompositeExtract 2165 2 2169:1964(ResType) ImageSparseSampleDrefExplicitLod 2164 2165 2168 Grad 2166 2166 2170: 6(float) CompositeExtract 2169 1 Store 2167 2170 2171: 47(int) CompositeExtract 2169 0 2172: 192 Load 194(sCubeShadow) 2173: 7(fvec4) Load 197(c4) 2174: 148(fvec3) Load 880(dPdxy3) 2175: 174(ptr) AccessChain 2131(texel) 173 2176: 6(float) CompositeExtract 2173 3 2177:1964(ResType) ImageSparseSampleDrefExplicitLod 2172 2173 2176 Grad 2174 2174 2178: 6(float) CompositeExtract 2177 1 Store 2175 2178 2179: 47(int) CompositeExtract 2177 0 2180: 215 Load 217(s2DArray) 2181: 148(fvec3) Load 150(c3) 2182: 52(fvec2) Load 873(dPdxy2) 2183:1946(ResType) ImageSparseSampleExplicitLod 2180 2181 Grad 2182 2182 2184: 7(fvec4) CompositeExtract 2183 1 Store 2131(texel) 2184 2185: 47(int) CompositeExtract 2183 0 2186: 245 Load 247(s2DArrayShadow) 2187: 7(fvec4) Load 197(c4) 2188: 52(fvec2) Load 873(dPdxy2) 2189: 174(ptr) AccessChain 2131(texel) 173 2190: 6(float) CompositeExtract 2187 3 2191:1964(ResType) ImageSparseSampleDrefExplicitLod 2186 2187 2190 Grad 2188 2188 2192: 6(float) CompositeExtract 2191 1 Store 2189 2192 2193: 47(int) CompositeExtract 2191 0 2194: 224 Load 226(sCubeArray) 2195: 7(fvec4) Load 197(c4) 2196: 148(fvec3) Load 880(dPdxy3) 2197:1946(ResType) ImageSparseSampleExplicitLod 2194 2195 Grad 2196 2196 2198: 7(fvec4) CompositeExtract 2197 1 Store 2131(texel) 2198 2199: 47(int) CompositeExtract 2197 0 2200: 7(fvec4) Load 2131(texel) ReturnValue 2200 FunctionEnd 78(testSparseTextureGradOffset(): 7(fvec4) Function None 8 79: Label 2203(texel): 63(ptr) Variable Function Store 2203(texel) 120 2204: 133 Load 135(s2D) 2205: 52(fvec2) Load 138(c2) 2206: 52(fvec2) Load 873(dPdxy2) 2207:1946(ResType) ImageSparseSampleExplicitLod 2204 2205 Grad ConstOffset 2206 2206 452 2208: 7(fvec4) CompositeExtract 2207 1 Store 2203(texel) 2208 2209: 47(int) CompositeExtract 2207 0 2210: 144 Load 146(s3D) 2211: 148(fvec3) Load 150(c3) 2212: 148(fvec3) Load 880(dPdxy3) 2213:1946(ResType) ImageSparseSampleExplicitLod 2210 2211 Grad ConstOffset 2212 2212 459 2214: 7(fvec4) CompositeExtract 2213 1 Store 2203(texel) 2214 2215: 47(int) CompositeExtract 2213 0 2216: 257 Load 259(s2DRect) 2217: 52(fvec2) Load 138(c2) 2218: 52(fvec2) Load 873(dPdxy2) 2219:1946(ResType) ImageSparseSampleExplicitLod 2216 2217 Grad ConstOffset 2218 2218 452 2220: 7(fvec4) CompositeExtract 2219 1 Store 2203(texel) 2220 2221: 47(int) CompositeExtract 2219 0 2222: 266 Load 268(s2DRectShadow) 2223: 148(fvec3) Load 150(c3) 2224: 52(fvec2) Load 873(dPdxy2) 2225: 174(ptr) AccessChain 2203(texel) 173 2226: 6(float) CompositeExtract 2223 2 2227:1964(ResType) ImageSparseSampleDrefExplicitLod 2222 2223 2226 Grad ConstOffset 2224 2224 452 2228: 6(float) CompositeExtract 2227 1 Store 2225 2228 2229: 47(int) CompositeExtract 2227 0 2230: 180 Load 182(s2DShadow) 2231: 148(fvec3) Load 150(c3) 2232: 52(fvec2) Load 873(dPdxy2) 2233: 174(ptr) AccessChain 2203(texel) 173 2234: 6(float) CompositeExtract 2231 2 2235:1964(ResType) ImageSparseSampleDrefExplicitLod 2230 2231 2234 Grad ConstOffset 2232 2232 452 2236: 6(float) CompositeExtract 2235 1 Store 2233 2236 2237: 47(int) CompositeExtract 2235 0 2238: 215 Load 217(s2DArray) 2239: 148(fvec3) Load 150(c3) 2240: 52(fvec2) Load 873(dPdxy2) 2241:1946(ResType) ImageSparseSampleExplicitLod 2238 2239 Grad ConstOffset 2240 2240 452 2242: 7(fvec4) CompositeExtract 2241 1 Store 2203(texel) 2242 2243: 47(int) CompositeExtract 2241 0 2244: 245 Load 247(s2DArrayShadow) 2245: 7(fvec4) Load 197(c4) 2246: 52(fvec2) Load 873(dPdxy2) 2247: 174(ptr) AccessChain 2203(texel) 173 2248: 6(float) CompositeExtract 2245 3 2249:1964(ResType) ImageSparseSampleDrefExplicitLod 2244 2245 2248 Grad ConstOffset 2246 2246 452 2250: 6(float) CompositeExtract 2249 1 Store 2247 2250 2251: 47(int) CompositeExtract 2249 0 2252: 7(fvec4) Load 2203(texel) ReturnValue 2252 FunctionEnd 80(testSparseTexelFetch(): 7(fvec4) Function None 8 81: Label 2255(texel): 63(ptr) Variable Function Store 2255(texel) 120 2256: 133 Load 135(s2D) 2257: 52(fvec2) Load 138(c2) 2258: 451(ivec2) ConvertFToS 2257 2259: 6(float) Load 371(lod) 2260: 47(int) ConvertFToS 2259 2261: 132 Image 2256 2262:1946(ResType) ImageSparseFetch 2261 2258 Lod 2260 2263: 7(fvec4) CompositeExtract 2262 1 Store 2255(texel) 2263 2264: 47(int) CompositeExtract 2262 0 2265: 144 Load 146(s3D) 2266: 148(fvec3) Load 150(c3) 2267: 458(ivec3) ConvertFToS 2266 2268: 6(float) Load 371(lod) 2269: 47(int) ConvertFToS 2268 2270: 143 Image 2265 2271:1946(ResType) ImageSparseFetch 2270 2267 Lod 2269 2272: 7(fvec4) CompositeExtract 2271 1 Store 2255(texel) 2272 2273: 47(int) CompositeExtract 2271 0 2274: 257 Load 259(s2DRect) 2275: 52(fvec2) Load 138(c2) 2276: 451(ivec2) ConvertFToS 2275 2277: 256 Image 2274 2278:1946(ResType) ImageSparseFetch 2277 2276 2279: 7(fvec4) CompositeExtract 2278 1 Store 2255(texel) 2279 2280: 47(int) CompositeExtract 2278 0 2281: 215 Load 217(s2DArray) 2282: 148(fvec3) Load 150(c3) 2283: 458(ivec3) ConvertFToS 2282 2284: 6(float) Load 371(lod) 2285: 47(int) ConvertFToS 2284 2286: 214 Image 2281 2287:1946(ResType) ImageSparseFetch 2286 2283 Lod 2285 2288: 7(fvec4) CompositeExtract 2287 1 Store 2255(texel) 2288 2289: 47(int) CompositeExtract 2287 0 2290: 782 Load 784(s2DMS) 2291: 52(fvec2) Load 138(c2) 2292: 451(ivec2) ConvertFToS 2291 2293: 781 Image 2290 2294:1946(ResType) ImageSparseFetch 2293 2292 Sample 445 2295: 7(fvec4) CompositeExtract 2294 1 Store 2255(texel) 2295 2296: 47(int) CompositeExtract 2294 0 2297: 793 Load 795(s2DMSArray) 2298: 148(fvec3) Load 150(c3) 2299: 458(ivec3) ConvertFToS 2298 2300: 792 Image 2297 2301:1946(ResType) ImageSparseFetch 2300 2299 Sample 799 2302: 7(fvec4) CompositeExtract 2301 1 Store 2255(texel) 2302 2303: 47(int) CompositeExtract 2301 0 2304: 7(fvec4) Load 2255(texel) ReturnValue 2304 FunctionEnd 82(testSparseTexelFetchOffset(): 7(fvec4) Function None 8 83: Label 2307(texel): 63(ptr) Variable Function Store 2307(texel) 120 2308: 133 Load 135(s2D) 2309: 52(fvec2) Load 138(c2) 2310: 451(ivec2) ConvertFToS 2309 2311: 6(float) Load 371(lod) 2312: 47(int) ConvertFToS 2311 2313: 132 Image 2308 2314:1946(ResType) ImageSparseFetch 2313 2310 Lod ConstOffset 2312 452 2315: 7(fvec4) CompositeExtract 2314 1 Store 2307(texel) 2315 2316: 47(int) CompositeExtract 2314 0 2317: 144 Load 146(s3D) 2318: 148(fvec3) Load 150(c3) 2319: 458(ivec3) ConvertFToS 2318 2320: 6(float) Load 371(lod) 2321: 47(int) ConvertFToS 2320 2322: 143 Image 2317 2323:1946(ResType) ImageSparseFetch 2322 2319 Lod ConstOffset 2321 459 2324: 7(fvec4) CompositeExtract 2323 1 Store 2307(texel) 2324 2325: 47(int) CompositeExtract 2323 0 2326: 257 Load 259(s2DRect) 2327: 52(fvec2) Load 138(c2) 2328: 451(ivec2) ConvertFToS 2327 2329: 256 Image 2326 2330:1946(ResType) ImageSparseFetch 2329 2328 ConstOffset 452 2331: 7(fvec4) CompositeExtract 2330 1 Store 2307(texel) 2331 2332: 47(int) CompositeExtract 2330 0 2333: 215 Load 217(s2DArray) 2334: 148(fvec3) Load 150(c3) 2335: 458(ivec3) ConvertFToS 2334 2336: 6(float) Load 371(lod) 2337: 47(int) ConvertFToS 2336 2338: 214 Image 2333 2339:1946(ResType) ImageSparseFetch 2338 2335 Lod ConstOffset 2337 452 2340: 7(fvec4) CompositeExtract 2339 1 Store 2307(texel) 2340 2341: 47(int) CompositeExtract 2339 0 2342: 7(fvec4) Load 2307(texel) ReturnValue 2342 FunctionEnd 84(testSparseTextureGather(): 7(fvec4) Function None 8 85: Label 2345(texel): 63(ptr) Variable Function Store 2345(texel) 120 2346: 133 Load 135(s2D) 2347: 52(fvec2) Load 138(c2) 2348:1946(ResType) ImageSparseGather 2346 2347 1230 2349: 7(fvec4) CompositeExtract 2348 1 Store 2345(texel) 2349 2350: 47(int) CompositeExtract 2348 0 2351: 215 Load 217(s2DArray) 2352: 148(fvec3) Load 150(c3) 2353:1946(ResType) ImageSparseGather 2351 2352 1230 2354: 7(fvec4) CompositeExtract 2353 1 Store 2345(texel) 2354 2355: 47(int) CompositeExtract 2353 0 2356: 156 Load 158(sCube) 2357: 148(fvec3) Load 150(c3) 2358:1946(ResType) ImageSparseGather 2356 2357 1230 2359: 7(fvec4) CompositeExtract 2358 1 Store 2345(texel) 2359 2360: 47(int) CompositeExtract 2358 0 2361: 224 Load 226(sCubeArray) 2362: 7(fvec4) Load 197(c4) 2363:1946(ResType) ImageSparseGather 2361 2362 1230 2364: 7(fvec4) CompositeExtract 2363 1 Store 2345(texel) 2364 2365: 47(int) CompositeExtract 2363 0 2366: 257 Load 259(s2DRect) 2367: 52(fvec2) Load 138(c2) 2368:1946(ResType) ImageSparseGather 2366 2367 1230 2369: 7(fvec4) CompositeExtract 2368 1 Store 2345(texel) 2369 2370: 47(int) CompositeExtract 2368 0 2371: 180 Load 182(s2DShadow) 2372: 52(fvec2) Load 138(c2) 2373: 6(float) Load 283(compare) 2374:1946(ResType) ImageSparseDrefGather 2371 2372 2373 2375: 7(fvec4) CompositeExtract 2374 1 Store 2345(texel) 2375 2376: 47(int) CompositeExtract 2374 0 2377: 245 Load 247(s2DArrayShadow) 2378: 148(fvec3) Load 150(c3) 2379: 6(float) Load 283(compare) 2380:1946(ResType) ImageSparseDrefGather 2377 2378 2379 2381: 7(fvec4) CompositeExtract 2380 1 Store 2345(texel) 2381 2382: 47(int) CompositeExtract 2380 0 2383: 192 Load 194(sCubeShadow) 2384: 148(fvec3) Load 150(c3) 2385: 6(float) Load 283(compare) 2386:1946(ResType) ImageSparseDrefGather 2383 2384 2385 2387: 7(fvec4) CompositeExtract 2386 1 Store 2345(texel) 2387 2388: 47(int) CompositeExtract 2386 0 2389: 278 Load 280(sCubeArrayShadow) 2390: 7(fvec4) Load 197(c4) 2391: 6(float) Load 283(compare) 2392:1946(ResType) ImageSparseDrefGather 2389 2390 2391 2393: 7(fvec4) CompositeExtract 2392 1 Store 2345(texel) 2393 2394: 47(int) CompositeExtract 2392 0 2395: 266 Load 268(s2DRectShadow) 2396: 52(fvec2) Load 138(c2) 2397: 6(float) Load 283(compare) 2398:1946(ResType) ImageSparseDrefGather 2395 2396 2397 2399: 7(fvec4) CompositeExtract 2398 1 Store 2345(texel) 2399 2400: 47(int) CompositeExtract 2398 0 2401: 7(fvec4) Load 2345(texel) ReturnValue 2401 FunctionEnd 86(testSparseTextureGatherOffset(): 7(fvec4) Function None 8 87: Label 2404(texel): 63(ptr) Variable Function Store 2404(texel) 120 2405: 133 Load 135(s2D) 2406: 52(fvec2) Load 138(c2) 2407:1946(ResType) ImageSparseGather 2405 2406 1230 ConstOffset 452 2408: 7(fvec4) CompositeExtract 2407 1 Store 2404(texel) 2408 2409: 47(int) CompositeExtract 2407 0 2410: 215 Load 217(s2DArray) 2411: 148(fvec3) Load 150(c3) 2412:1946(ResType) ImageSparseGather 2410 2411 1230 ConstOffset 452 2413: 7(fvec4) CompositeExtract 2412 1 Store 2404(texel) 2413 2414: 47(int) CompositeExtract 2412 0 2415: 257 Load 259(s2DRect) 2416: 52(fvec2) Load 138(c2) 2417:1946(ResType) ImageSparseGather 2415 2416 1230 ConstOffset 452 2418: 7(fvec4) CompositeExtract 2417 1 Store 2404(texel) 2418 2419: 47(int) CompositeExtract 2417 0 2420: 180 Load 182(s2DShadow) 2421: 52(fvec2) Load 138(c2) 2422: 6(float) Load 283(compare) 2423:1946(ResType) ImageSparseDrefGather 2420 2421 2422 ConstOffset 452 2424: 7(fvec4) CompositeExtract 2423 1 Store 2404(texel) 2424 2425: 47(int) CompositeExtract 2423 0 2426: 245 Load 247(s2DArrayShadow) 2427: 148(fvec3) Load 150(c3) 2428: 6(float) Load 283(compare) 2429:1946(ResType) ImageSparseDrefGather 2426 2427 2428 ConstOffset 452 2430: 7(fvec4) CompositeExtract 2429 1 Store 2404(texel) 2430 2431: 47(int) CompositeExtract 2429 0 2432: 266 Load 268(s2DRectShadow) 2433: 52(fvec2) Load 138(c2) 2434: 6(float) Load 283(compare) 2435:1946(ResType) ImageSparseDrefGather 2432 2433 2434 ConstOffset 452 2436: 7(fvec4) CompositeExtract 2435 1 Store 2404(texel) 2436 2437: 47(int) CompositeExtract 2435 0 2438: 7(fvec4) Load 2404(texel) ReturnValue 2438 FunctionEnd 88(testSparseTextureGatherOffsets(): 7(fvec4) Function None 8 89: Label 2441(texel): 63(ptr) Variable Function Store 2441(texel) 120 2442: 133 Load 135(s2D) 2443: 52(fvec2) Load 138(c2) 2454:1946(ResType) ImageSparseGather 2442 2443 1230 ConstOffsets 2453 2455: 7(fvec4) CompositeExtract 2454 1 Store 2441(texel) 2455 2456: 47(int) CompositeExtract 2454 0 2457: 215 Load 217(s2DArray) 2458: 148(fvec3) Load 150(c3) 2459:1946(ResType) ImageSparseGather 2457 2458 1230 ConstOffsets 2453 2460: 7(fvec4) CompositeExtract 2459 1 Store 2441(texel) 2460 2461: 47(int) CompositeExtract 2459 0 2462: 257 Load 259(s2DRect) 2463: 52(fvec2) Load 138(c2) 2464:1946(ResType) ImageSparseGather 2462 2463 1230 ConstOffsets 2453 2465: 7(fvec4) CompositeExtract 2464 1 Store 2441(texel) 2465 2466: 47(int) CompositeExtract 2464 0 2467: 180 Load 182(s2DShadow) 2468: 52(fvec2) Load 138(c2) 2469: 6(float) Load 283(compare) 2470:1946(ResType) ImageSparseDrefGather 2467 2468 2469 ConstOffsets 2453 2471: 7(fvec4) CompositeExtract 2470 1 Store 2441(texel) 2471 2472: 47(int) CompositeExtract 2470 0 2473: 245 Load 247(s2DArrayShadow) 2474: 148(fvec3) Load 150(c3) 2475: 6(float) Load 283(compare) 2476:1946(ResType) ImageSparseDrefGather 2473 2474 2475 ConstOffsets 2453 2477: 7(fvec4) CompositeExtract 2476 1 Store 2441(texel) 2477 2478: 47(int) CompositeExtract 2476 0 2479: 266 Load 268(s2DRectShadow) 2480: 52(fvec2) Load 138(c2) 2481: 6(float) Load 283(compare) 2482:1946(ResType) ImageSparseDrefGather 2479 2480 2481 ConstOffsets 2453 2483: 7(fvec4) CompositeExtract 2482 1 Store 2441(texel) 2483 2484: 47(int) CompositeExtract 2482 0 2485: 7(fvec4) Load 2441(texel) ReturnValue 2485 FunctionEnd 90(testSparseTextureGatherLod(): 7(fvec4) Function None 8 91: Label 2488(texel): 63(ptr) Variable Function Store 2488(texel) 120 2489: 133 Load 135(s2D) 2490: 52(fvec2) Load 138(c2) 2491: 6(float) Load 371(lod) 2492:1946(ResType) ImageSparseGather 2489 2490 1230 Lod 2491 2493: 7(fvec4) CompositeExtract 2492 1 Store 2488(texel) 2493 2494: 47(int) CompositeExtract 2492 0 2495: 215 Load 217(s2DArray) 2496: 148(fvec3) Load 150(c3) 2497: 6(float) Load 371(lod) 2498:1946(ResType) ImageSparseGather 2495 2496 1230 Lod 2497 2499: 7(fvec4) CompositeExtract 2498 1 Store 2488(texel) 2499 2500: 47(int) CompositeExtract 2498 0 2501: 156 Load 158(sCube) 2502: 148(fvec3) Load 150(c3) 2503: 6(float) Load 371(lod) 2504:1946(ResType) ImageSparseGather 2501 2502 1230 Lod 2503 2505: 7(fvec4) CompositeExtract 2504 1 Store 2488(texel) 2505 2506: 47(int) CompositeExtract 2504 0 2507: 224 Load 226(sCubeArray) 2508: 7(fvec4) Load 197(c4) 2509: 6(float) Load 371(lod) 2510:1946(ResType) ImageSparseGather 2507 2508 1230 Lod 2509 2511: 7(fvec4) CompositeExtract 2510 1 Store 2488(texel) 2511 2512: 47(int) CompositeExtract 2510 0 2513: 7(fvec4) Load 2488(texel) ReturnValue 2513 FunctionEnd 92(testSparseTextureGatherLodOffset(): 7(fvec4) Function None 8 93: Label 2516(texel): 63(ptr) Variable Function Store 2516(texel) 120 2517: 133 Load 135(s2D) 2518: 52(fvec2) Load 138(c2) 2519: 6(float) Load 371(lod) 2520:1946(ResType) ImageSparseGather 2517 2518 1230 Lod ConstOffset 2519 452 2521: 7(fvec4) CompositeExtract 2520 1 Store 2516(texel) 2521 2522: 47(int) CompositeExtract 2520 0 2523: 215 Load 217(s2DArray) 2524: 148(fvec3) Load 150(c3) 2525: 6(float) Load 371(lod) 2526:1946(ResType) ImageSparseGather 2523 2524 1230 Lod ConstOffset 2525 452 2527: 7(fvec4) CompositeExtract 2526 1 Store 2516(texel) 2527 2528: 47(int) CompositeExtract 2526 0 2529: 7(fvec4) Load 2516(texel) ReturnValue 2529 FunctionEnd 94(testSparseTextureGatherLodOffsets(): 7(fvec4) Function None 8 95: Label 2532(texel): 63(ptr) Variable Function Store 2532(texel) 120 2533: 133 Load 135(s2D) 2534: 52(fvec2) Load 138(c2) 2535: 6(float) Load 371(lod) 2536:1946(ResType) ImageSparseGather 2533 2534 1230 Lod ConstOffsets 2535 1329 2537: 7(fvec4) CompositeExtract 2536 1 Store 2532(texel) 2537 2538: 47(int) CompositeExtract 2536 0 2539: 215 Load 217(s2DArray) 2540: 148(fvec3) Load 150(c3) 2541: 6(float) Load 371(lod) 2542:1946(ResType) ImageSparseGather 2539 2540 1230 Lod ConstOffsets 2541 1329 2543: 7(fvec4) CompositeExtract 2542 1 Store 2532(texel) 2543 2544: 47(int) CompositeExtract 2542 0 2545: 7(fvec4) Load 2532(texel) ReturnValue 2545 FunctionEnd 96(testSparseImageLoad(): 7(fvec4) Function None 8 97: Label 2548(texel): 63(ptr) Variable Function Store 2548(texel) 120 2549: 1806 Load 1808(i2D) 2550: 52(fvec2) Load 138(c2) 2551: 451(ivec2) ConvertFToS 2550 2552:1946(ResType) ImageSparseRead 2549 2551 2553: 7(fvec4) CompositeExtract 2552 1 Store 2548(texel) 2553 2554: 47(int) CompositeExtract 2552 0 2555: 1815 Load 1817(i3D) 2556: 148(fvec3) Load 150(c3) 2557: 458(ivec3) ConvertFToS 2556 2558:1946(ResType) ImageSparseRead 2555 2557 2559: 7(fvec4) CompositeExtract 2558 1 Store 2548(texel) 2559 2560: 47(int) CompositeExtract 2558 0 2561: 1824 Load 1826(i2DRect) 2562: 52(fvec2) Load 138(c2) 2563: 451(ivec2) ConvertFToS 2562 2564:1946(ResType) ImageSparseRead 2561 2563 2565: 7(fvec4) CompositeExtract 2564 1 Store 2548(texel) 2565 2566: 47(int) CompositeExtract 2564 0 2567: 1833 Load 1835(iCube) 2568: 148(fvec3) Load 150(c3) 2569: 458(ivec3) ConvertFToS 2568 2570:1946(ResType) ImageSparseRead 2567 2569 2571: 7(fvec4) CompositeExtract 2570 1 Store 2548(texel) 2571 2572: 47(int) CompositeExtract 2570 0 2573: 1860 Load 1862(i2DArray) 2574: 148(fvec3) Load 150(c3) 2575: 458(ivec3) ConvertFToS 2574 2576:1946(ResType) ImageSparseRead 2573 2575 2577: 7(fvec4) CompositeExtract 2576 1 Store 2548(texel) 2577 2578: 47(int) CompositeExtract 2576 0 2579: 1869 Load 1871(iCubeArray) 2580: 148(fvec3) Load 150(c3) 2581: 458(ivec3) ConvertFToS 2580 2582:1946(ResType) ImageSparseRead 2579 2581 2583: 7(fvec4) CompositeExtract 2582 1 Store 2548(texel) 2583 2584: 47(int) CompositeExtract 2582 0 2585: 1878 Load 1880(i2DMS) 2586: 52(fvec2) Load 138(c2) 2587: 451(ivec2) ConvertFToS 2586 2588:1946(ResType) ImageSparseRead 2585 2587 Sample 445 2589: 7(fvec4) CompositeExtract 2588 1 Store 2548(texel) 2589 2590: 47(int) CompositeExtract 2588 0 2591: 1887 Load 1889(i2DMSArray) 2592: 148(fvec3) Load 150(c3) 2593: 458(ivec3) ConvertFToS 2592 2594:1946(ResType) ImageSparseRead 2591 2593 Sample 799 2595: 7(fvec4) CompositeExtract 2594 1 Store 2548(texel) 2595 2596: 47(int) CompositeExtract 2594 0 2597: 7(fvec4) Load 2548(texel) ReturnValue 2597 FunctionEnd 98(testSparseTextureClamp(): 7(fvec4) Function None 8 99: Label 2600(texel): 63(ptr) Variable Function Store 2600(texel) 120 2601: 133 Load 135(s2D) 2602: 52(fvec2) Load 138(c2) 2604: 6(float) Load 2603(lodClamp) 2605:1946(ResType) ImageSparseSampleImplicitLod 2601 2602 MinLod 2604 2606: 7(fvec4) CompositeExtract 2605 1 Store 2600(texel) 2606 2607: 47(int) CompositeExtract 2605 0 2608: 144 Load 146(s3D) 2609: 148(fvec3) Load 150(c3) 2610: 6(float) Load 2603(lodClamp) 2611:1946(ResType) ImageSparseSampleImplicitLod 2608 2609 MinLod 2610 2612: 7(fvec4) CompositeExtract 2611 1 Store 2600(texel) 2612 2613: 47(int) CompositeExtract 2611 0 2614: 156 Load 158(sCube) 2615: 148(fvec3) Load 150(c3) 2616: 6(float) Load 2603(lodClamp) 2617:1946(ResType) ImageSparseSampleImplicitLod 2614 2615 MinLod 2616 2618: 7(fvec4) CompositeExtract 2617 1 Store 2600(texel) 2618 2619: 47(int) CompositeExtract 2617 0 2620: 180 Load 182(s2DShadow) 2621: 148(fvec3) Load 150(c3) 2622: 6(float) Load 2603(lodClamp) 2623: 174(ptr) AccessChain 2600(texel) 173 2624: 6(float) CompositeExtract 2621 2 2625:1964(ResType) ImageSparseSampleDrefImplicitLod 2620 2621 2624 MinLod 2622 2626: 6(float) CompositeExtract 2625 1 Store 2623 2626 2627: 47(int) CompositeExtract 2625 0 2628: 192 Load 194(sCubeShadow) 2629: 7(fvec4) Load 197(c4) 2630: 6(float) Load 2603(lodClamp) 2631: 174(ptr) AccessChain 2600(texel) 173 2632: 6(float) CompositeExtract 2629 3 2633:1964(ResType) ImageSparseSampleDrefImplicitLod 2628 2629 2632 MinLod 2630 2634: 6(float) CompositeExtract 2633 1 Store 2631 2634 2635: 47(int) CompositeExtract 2633 0 2636: 215 Load 217(s2DArray) 2637: 148(fvec3) Load 150(c3) 2638: 6(float) Load 2603(lodClamp) 2639:1946(ResType) ImageSparseSampleImplicitLod 2636 2637 MinLod 2638 2640: 7(fvec4) CompositeExtract 2639 1 Store 2600(texel) 2640 2641: 47(int) CompositeExtract 2639 0 2642: 224 Load 226(sCubeArray) 2643: 7(fvec4) Load 197(c4) 2644: 6(float) Load 2603(lodClamp) 2645:1946(ResType) ImageSparseSampleImplicitLod 2642 2643 MinLod 2644 2646: 7(fvec4) CompositeExtract 2645 1 Store 2600(texel) 2646 2647: 47(int) CompositeExtract 2645 0 2648: 245 Load 247(s2DArrayShadow) 2649: 7(fvec4) Load 197(c4) 2650: 6(float) Load 2603(lodClamp) 2651: 174(ptr) AccessChain 2600(texel) 173 2652: 6(float) CompositeExtract 2649 3 2653:1964(ResType) ImageSparseSampleDrefImplicitLod 2648 2649 2652 MinLod 2650 2654: 6(float) CompositeExtract 2653 1 Store 2651 2654 2655: 47(int) CompositeExtract 2653 0 2656: 278 Load 280(sCubeArrayShadow) 2657: 7(fvec4) Load 197(c4) 2658: 6(float) Load 283(compare) 2659: 6(float) Load 2603(lodClamp) 2660: 174(ptr) AccessChain 2600(texel) 173 2661:1964(ResType) ImageSparseSampleDrefImplicitLod 2656 2657 2658 MinLod 2659 2662: 6(float) CompositeExtract 2661 1 Store 2660 2662 2663: 47(int) CompositeExtract 2661 0 2664: 7(fvec4) Load 2600(texel) ReturnValue 2664 FunctionEnd 100(testTextureClamp(): 7(fvec4) Function None 8 101: Label 2667(texel): 63(ptr) Variable Function Store 2667(texel) 120 2668: 122 Load 124(s1D) 2669: 6(float) Load 127(c1) 2670: 6(float) Load 2603(lodClamp) 2671: 7(fvec4) ImageSampleImplicitLod 2668 2669 MinLod 2670 2672: 7(fvec4) Load 2667(texel) 2673: 7(fvec4) FAdd 2672 2671 Store 2667(texel) 2673 2674: 133 Load 135(s2D) 2675: 52(fvec2) Load 138(c2) 2676: 6(float) Load 2603(lodClamp) 2677: 7(fvec4) ImageSampleImplicitLod 2674 2675 MinLod 2676 2678: 7(fvec4) Load 2667(texel) 2679: 7(fvec4) FAdd 2678 2677 Store 2667(texel) 2679 2680: 144 Load 146(s3D) 2681: 148(fvec3) Load 150(c3) 2682: 6(float) Load 2603(lodClamp) 2683: 7(fvec4) ImageSampleImplicitLod 2680 2681 MinLod 2682 2684: 7(fvec4) Load 2667(texel) 2685: 7(fvec4) FAdd 2684 2683 Store 2667(texel) 2685 2686: 156 Load 158(sCube) 2687: 148(fvec3) Load 150(c3) 2688: 6(float) Load 2603(lodClamp) 2689: 7(fvec4) ImageSampleImplicitLod 2686 2687 MinLod 2688 2690: 7(fvec4) Load 2667(texel) 2691: 7(fvec4) FAdd 2690 2689 Store 2667(texel) 2691 2692: 165 Load 167(s1DShadow) 2693: 148(fvec3) Load 150(c3) 2694: 6(float) Load 2603(lodClamp) 2695: 6(float) CompositeExtract 2693 2 2696: 6(float) ImageSampleDrefImplicitLod 2692 2693 2695 MinLod 2694 2697: 174(ptr) AccessChain 2667(texel) 173 2698: 6(float) Load 2697 2699: 6(float) FAdd 2698 2696 2700: 174(ptr) AccessChain 2667(texel) 173 Store 2700 2699 2701: 180 Load 182(s2DShadow) 2702: 148(fvec3) Load 150(c3) 2703: 6(float) Load 2603(lodClamp) 2704: 6(float) CompositeExtract 2702 2 2705: 6(float) ImageSampleDrefImplicitLod 2701 2702 2704 MinLod 2703 2706: 174(ptr) AccessChain 2667(texel) 173 2707: 6(float) Load 2706 2708: 6(float) FAdd 2707 2705 2709: 174(ptr) AccessChain 2667(texel) 173 Store 2709 2708 2710: 192 Load 194(sCubeShadow) 2711: 7(fvec4) Load 197(c4) 2712: 6(float) Load 2603(lodClamp) 2713: 6(float) CompositeExtract 2711 3 2714: 6(float) ImageSampleDrefImplicitLod 2710 2711 2713 MinLod 2712 2715: 174(ptr) AccessChain 2667(texel) 173 2716: 6(float) Load 2715 2717: 6(float) FAdd 2716 2714 2718: 174(ptr) AccessChain 2667(texel) 173 Store 2718 2717 2719: 206 Load 208(s1DArray) 2720: 52(fvec2) Load 138(c2) 2721: 6(float) Load 2603(lodClamp) 2722: 7(fvec4) ImageSampleImplicitLod 2719 2720 MinLod 2721 2723: 7(fvec4) Load 2667(texel) 2724: 7(fvec4) FAdd 2723 2722 Store 2667(texel) 2724 2725: 215 Load 217(s2DArray) 2726: 148(fvec3) Load 150(c3) 2727: 6(float) Load 2603(lodClamp) 2728: 7(fvec4) ImageSampleImplicitLod 2725 2726 MinLod 2727 2729: 7(fvec4) Load 2667(texel) 2730: 7(fvec4) FAdd 2729 2728 Store 2667(texel) 2730 2731: 224 Load 226(sCubeArray) 2732: 7(fvec4) Load 197(c4) 2733: 6(float) Load 2603(lodClamp) 2734: 7(fvec4) ImageSampleImplicitLod 2731 2732 MinLod 2733 2735: 7(fvec4) Load 2667(texel) 2736: 7(fvec4) FAdd 2735 2734 Store 2667(texel) 2736 2737: 233 Load 235(s1DArrayShadow) 2738: 148(fvec3) Load 150(c3) 2739: 6(float) Load 2603(lodClamp) 2740: 6(float) CompositeExtract 2738 2 2741: 6(float) ImageSampleDrefImplicitLod 2737 2738 2740 MinLod 2739 2742: 174(ptr) AccessChain 2667(texel) 173 2743: 6(float) Load 2742 2744: 6(float) FAdd 2743 2741 2745: 174(ptr) AccessChain 2667(texel) 173 Store 2745 2744 2746: 245 Load 247(s2DArrayShadow) 2747: 7(fvec4) Load 197(c4) 2748: 6(float) Load 2603(lodClamp) 2749: 6(float) CompositeExtract 2747 3 2750: 6(float) ImageSampleDrefImplicitLod 2746 2747 2749 MinLod 2748 2751: 174(ptr) AccessChain 2667(texel) 173 2752: 6(float) Load 2751 2753: 6(float) FAdd 2752 2750 2754: 174(ptr) AccessChain 2667(texel) 173 Store 2754 2753 2755: 278 Load 280(sCubeArrayShadow) 2756: 7(fvec4) Load 197(c4) 2757: 6(float) Load 283(compare) 2758: 6(float) Load 2603(lodClamp) 2759: 6(float) ImageSampleDrefImplicitLod 2755 2756 2757 MinLod 2758 2760: 174(ptr) AccessChain 2667(texel) 173 2761: 6(float) Load 2760 2762: 6(float) FAdd 2761 2759 2763: 174(ptr) AccessChain 2667(texel) 173 Store 2763 2762 2764: 7(fvec4) Load 2667(texel) ReturnValue 2764 FunctionEnd 102(testSparseTextureOffsetClamp(): 7(fvec4) Function None 8 103: Label 2767(texel): 63(ptr) Variable Function Store 2767(texel) 120 2768: 133 Load 135(s2D) 2769: 52(fvec2) Load 138(c2) 2770: 6(float) Load 2603(lodClamp) 2771:1946(ResType) ImageSparseSampleImplicitLod 2768 2769 ConstOffset MinLod 452 2770 2772: 7(fvec4) CompositeExtract 2771 1 Store 2767(texel) 2772 2773: 47(int) CompositeExtract 2771 0 2774: 144 Load 146(s3D) 2775: 148(fvec3) Load 150(c3) 2776: 6(float) Load 2603(lodClamp) 2777:1946(ResType) ImageSparseSampleImplicitLod 2774 2775 ConstOffset MinLod 459 2776 2778: 7(fvec4) CompositeExtract 2777 1 Store 2767(texel) 2778 2779: 47(int) CompositeExtract 2777 0 2780: 180 Load 182(s2DShadow) 2781: 148(fvec3) Load 150(c3) 2782: 6(float) Load 2603(lodClamp) 2783: 174(ptr) AccessChain 2767(texel) 173 2784: 6(float) CompositeExtract 2781 2 2785:1964(ResType) ImageSparseSampleDrefImplicitLod 2780 2781 2784 ConstOffset MinLod 452 2782 2786: 6(float) CompositeExtract 2785 1 Store 2783 2786 2787: 47(int) CompositeExtract 2785 0 2788: 215 Load 217(s2DArray) 2789: 148(fvec3) Load 150(c3) 2790: 6(float) Load 2603(lodClamp) 2791:1946(ResType) ImageSparseSampleImplicitLod 2788 2789 ConstOffset MinLod 452 2790 2792: 7(fvec4) CompositeExtract 2791 1 Store 2767(texel) 2792 2793: 47(int) CompositeExtract 2791 0 2794: 245 Load 247(s2DArrayShadow) 2795: 7(fvec4) Load 197(c4) 2796: 6(float) Load 2603(lodClamp) 2797: 174(ptr) AccessChain 2767(texel) 173 2798: 6(float) CompositeExtract 2795 3 2799:1964(ResType) ImageSparseSampleDrefImplicitLod 2794 2795 2798 ConstOffset MinLod 452 2796 2800: 6(float) CompositeExtract 2799 1 Store 2797 2800 2801: 47(int) CompositeExtract 2799 0 2802: 7(fvec4) Load 2767(texel) ReturnValue 2802 FunctionEnd 104(testTextureOffsetClamp(): 7(fvec4) Function None 8 105: Label 2805(texel): 63(ptr) Variable Function Store 2805(texel) 120 2806: 122 Load 124(s1D) 2807: 6(float) Load 127(c1) 2808: 6(float) Load 2603(lodClamp) 2809: 7(fvec4) ImageSampleImplicitLod 2806 2807 ConstOffset MinLod 445 2808 2810: 7(fvec4) Load 2805(texel) 2811: 7(fvec4) FAdd 2810 2809 Store 2805(texel) 2811 2812: 133 Load 135(s2D) 2813: 52(fvec2) Load 138(c2) 2814: 6(float) Load 2603(lodClamp) 2815: 7(fvec4) ImageSampleImplicitLod 2812 2813 ConstOffset MinLod 452 2814 2816: 7(fvec4) Load 2805(texel) 2817: 7(fvec4) FAdd 2816 2815 Store 2805(texel) 2817 2818: 144 Load 146(s3D) 2819: 148(fvec3) Load 150(c3) 2820: 6(float) Load 2603(lodClamp) 2821: 7(fvec4) ImageSampleImplicitLod 2818 2819 ConstOffset MinLod 459 2820 2822: 7(fvec4) Load 2805(texel) 2823: 7(fvec4) FAdd 2822 2821 Store 2805(texel) 2823 2824: 165 Load 167(s1DShadow) 2825: 148(fvec3) Load 150(c3) 2826: 6(float) Load 2603(lodClamp) 2827: 6(float) CompositeExtract 2825 2 2828: 6(float) ImageSampleDrefImplicitLod 2824 2825 2827 ConstOffset MinLod 445 2826 2829: 174(ptr) AccessChain 2805(texel) 173 2830: 6(float) Load 2829 2831: 6(float) FAdd 2830 2828 2832: 174(ptr) AccessChain 2805(texel) 173 Store 2832 2831 2833: 180 Load 182(s2DShadow) 2834: 148(fvec3) Load 150(c3) 2835: 6(float) Load 2603(lodClamp) 2836: 6(float) CompositeExtract 2834 2 2837: 6(float) ImageSampleDrefImplicitLod 2833 2834 2836 ConstOffset MinLod 452 2835 2838: 174(ptr) AccessChain 2805(texel) 173 2839: 6(float) Load 2838 2840: 6(float) FAdd 2839 2837 2841: 174(ptr) AccessChain 2805(texel) 173 Store 2841 2840 2842: 206 Load 208(s1DArray) 2843: 52(fvec2) Load 138(c2) 2844: 6(float) Load 2603(lodClamp) 2845: 7(fvec4) ImageSampleImplicitLod 2842 2843 ConstOffset MinLod 445 2844 2846: 7(fvec4) Load 2805(texel) 2847: 7(fvec4) FAdd 2846 2845 Store 2805(texel) 2847 2848: 215 Load 217(s2DArray) 2849: 148(fvec3) Load 150(c3) 2850: 6(float) Load 2603(lodClamp) 2851: 7(fvec4) ImageSampleImplicitLod 2848 2849 ConstOffset MinLod 452 2850 2852: 7(fvec4) Load 2805(texel) 2853: 7(fvec4) FAdd 2852 2851 Store 2805(texel) 2853 2854: 233 Load 235(s1DArrayShadow) 2855: 148(fvec3) Load 150(c3) 2856: 6(float) Load 2603(lodClamp) 2857: 6(float) CompositeExtract 2855 2 2858: 6(float) ImageSampleDrefImplicitLod 2854 2855 2857 ConstOffset MinLod 445 2856 2859: 174(ptr) AccessChain 2805(texel) 173 2860: 6(float) Load 2859 2861: 6(float) FAdd 2860 2858 2862: 174(ptr) AccessChain 2805(texel) 173 Store 2862 2861 2863: 245 Load 247(s2DArrayShadow) 2864: 7(fvec4) Load 197(c4) 2865: 6(float) Load 2603(lodClamp) 2866: 6(float) CompositeExtract 2864 3 2867: 6(float) ImageSampleDrefImplicitLod 2863 2864 2866 ConstOffset MinLod 452 2865 2868: 174(ptr) AccessChain 2805(texel) 173 2869: 6(float) Load 2868 2870: 6(float) FAdd 2869 2867 2871: 174(ptr) AccessChain 2805(texel) 173 Store 2871 2870 2872: 7(fvec4) Load 2805(texel) ReturnValue 2872 FunctionEnd 106(testSparseTextureGradClamp(): 7(fvec4) Function None 8 107: Label 2875(texel): 63(ptr) Variable Function Store 2875(texel) 120 2876: 133 Load 135(s2D) 2877: 52(fvec2) Load 138(c2) 2878: 52(fvec2) Load 873(dPdxy2) 2879: 6(float) Load 2603(lodClamp) 2880:1946(ResType) ImageSparseSampleExplicitLod 2876 2877 Grad MinLod 2878 2878 2879 2881: 7(fvec4) CompositeExtract 2880 1 Store 2875(texel) 2881 2882: 47(int) CompositeExtract 2880 0 2883: 144 Load 146(s3D) 2884: 148(fvec3) Load 150(c3) 2885: 148(fvec3) Load 880(dPdxy3) 2886: 6(float) Load 2603(lodClamp) 2887:1946(ResType) ImageSparseSampleExplicitLod 2883 2884 Grad MinLod 2885 2885 2886 2888: 7(fvec4) CompositeExtract 2887 1 Store 2875(texel) 2888 2889: 47(int) CompositeExtract 2887 0 2890: 156 Load 158(sCube) 2891: 148(fvec3) Load 150(c3) 2892: 148(fvec3) Load 880(dPdxy3) 2893: 6(float) Load 2603(lodClamp) 2894:1946(ResType) ImageSparseSampleExplicitLod 2890 2891 Grad MinLod 2892 2892 2893 2895: 7(fvec4) CompositeExtract 2894 1 Store 2875(texel) 2895 2896: 47(int) CompositeExtract 2894 0 2897: 180 Load 182(s2DShadow) 2898: 148(fvec3) Load 150(c3) 2899: 52(fvec2) Load 873(dPdxy2) 2900: 6(float) Load 2603(lodClamp) 2901: 174(ptr) AccessChain 2875(texel) 173 2902: 6(float) CompositeExtract 2898 2 2903:1964(ResType) ImageSparseSampleDrefExplicitLod 2897 2898 2902 Grad MinLod 2899 2899 2900 2904: 6(float) CompositeExtract 2903 1 Store 2901 2904 2905: 47(int) CompositeExtract 2903 0 2906: 192 Load 194(sCubeShadow) 2907: 7(fvec4) Load 197(c4) 2908: 148(fvec3) Load 880(dPdxy3) 2909: 6(float) Load 2603(lodClamp) 2910: 174(ptr) AccessChain 2875(texel) 173 2911: 6(float) CompositeExtract 2907 3 2912:1964(ResType) ImageSparseSampleDrefExplicitLod 2906 2907 2911 Grad MinLod 2908 2908 2909 2913: 6(float) CompositeExtract 2912 1 Store 2910 2913 2914: 47(int) CompositeExtract 2912 0 2915: 215 Load 217(s2DArray) 2916: 148(fvec3) Load 150(c3) 2917: 52(fvec2) Load 873(dPdxy2) 2918: 6(float) Load 2603(lodClamp) 2919:1946(ResType) ImageSparseSampleExplicitLod 2915 2916 Grad MinLod 2917 2917 2918 2920: 7(fvec4) CompositeExtract 2919 1 Store 2875(texel) 2920 2921: 47(int) CompositeExtract 2919 0 2922: 245 Load 247(s2DArrayShadow) 2923: 7(fvec4) Load 197(c4) 2924: 52(fvec2) Load 873(dPdxy2) 2925: 6(float) Load 2603(lodClamp) 2926: 174(ptr) AccessChain 2875(texel) 173 2927: 6(float) CompositeExtract 2923 3 2928:1964(ResType) ImageSparseSampleDrefExplicitLod 2922 2923 2927 Grad MinLod 2924 2924 2925 2929: 6(float) CompositeExtract 2928 1 Store 2926 2929 2930: 47(int) CompositeExtract 2928 0 2931: 224 Load 226(sCubeArray) 2932: 7(fvec4) Load 197(c4) 2933: 148(fvec3) Load 880(dPdxy3) 2934: 6(float) Load 2603(lodClamp) 2935:1946(ResType) ImageSparseSampleExplicitLod 2931 2932 Grad MinLod 2933 2933 2934 2936: 7(fvec4) CompositeExtract 2935 1 Store 2875(texel) 2936 2937: 47(int) CompositeExtract 2935 0 2938: 7(fvec4) Load 2875(texel) ReturnValue 2938 FunctionEnd 108(testTextureGradClamp(): 7(fvec4) Function None 8 109: Label 2941(texel): 63(ptr) Variable Function Store 2941(texel) 120 2942: 122 Load 124(s1D) 2943: 6(float) Load 127(c1) 2944: 6(float) Load 866(dPdxy1) 2945: 6(float) Load 2603(lodClamp) 2946: 7(fvec4) ImageSampleExplicitLod 2942 2943 Grad MinLod 2944 2944 2945 2947: 7(fvec4) Load 2941(texel) 2948: 7(fvec4) FAdd 2947 2946 Store 2941(texel) 2948 2949: 133 Load 135(s2D) 2950: 52(fvec2) Load 138(c2) 2951: 52(fvec2) Load 873(dPdxy2) 2952: 6(float) Load 2603(lodClamp) 2953: 7(fvec4) ImageSampleExplicitLod 2949 2950 Grad MinLod 2951 2951 2952 2954: 7(fvec4) Load 2941(texel) 2955: 7(fvec4) FAdd 2954 2953 Store 2941(texel) 2955 2956: 144 Load 146(s3D) 2957: 148(fvec3) Load 150(c3) 2958: 148(fvec3) Load 880(dPdxy3) 2959: 6(float) Load 2603(lodClamp) 2960: 7(fvec4) ImageSampleExplicitLod 2956 2957 Grad MinLod 2958 2958 2959 2961: 7(fvec4) Load 2941(texel) 2962: 7(fvec4) FAdd 2961 2960 Store 2941(texel) 2962 2963: 156 Load 158(sCube) 2964: 148(fvec3) Load 150(c3) 2965: 148(fvec3) Load 880(dPdxy3) 2966: 6(float) Load 2603(lodClamp) 2967: 7(fvec4) ImageSampleExplicitLod 2963 2964 Grad MinLod 2965 2965 2966 2968: 7(fvec4) Load 2941(texel) 2969: 7(fvec4) FAdd 2968 2967 Store 2941(texel) 2969 2970: 165 Load 167(s1DShadow) 2971: 148(fvec3) Load 150(c3) 2972: 6(float) Load 866(dPdxy1) 2973: 6(float) Load 2603(lodClamp) 2974: 6(float) CompositeExtract 2971 2 2975: 6(float) ImageSampleDrefExplicitLod 2970 2971 2974 Grad MinLod 2972 2972 2973 2976: 174(ptr) AccessChain 2941(texel) 173 2977: 6(float) Load 2976 2978: 6(float) FAdd 2977 2975 2979: 174(ptr) AccessChain 2941(texel) 173 Store 2979 2978 2980: 180 Load 182(s2DShadow) 2981: 148(fvec3) Load 150(c3) 2982: 52(fvec2) Load 873(dPdxy2) 2983: 6(float) Load 2603(lodClamp) 2984: 6(float) CompositeExtract 2981 2 2985: 6(float) ImageSampleDrefExplicitLod 2980 2981 2984 Grad MinLod 2982 2982 2983 2986: 174(ptr) AccessChain 2941(texel) 173 2987: 6(float) Load 2986 2988: 6(float) FAdd 2987 2985 2989: 174(ptr) AccessChain 2941(texel) 173 Store 2989 2988 2990: 192 Load 194(sCubeShadow) 2991: 7(fvec4) Load 197(c4) 2992: 148(fvec3) Load 880(dPdxy3) 2993: 6(float) Load 2603(lodClamp) 2994: 6(float) CompositeExtract 2991 3 2995: 6(float) ImageSampleDrefExplicitLod 2990 2991 2994 Grad MinLod 2992 2992 2993 2996: 174(ptr) AccessChain 2941(texel) 173 2997: 6(float) Load 2996 2998: 6(float) FAdd 2997 2995 2999: 174(ptr) AccessChain 2941(texel) 173 Store 2999 2998 3000: 206 Load 208(s1DArray) 3001: 52(fvec2) Load 138(c2) 3002: 6(float) Load 866(dPdxy1) 3003: 6(float) Load 2603(lodClamp) 3004: 7(fvec4) ImageSampleExplicitLod 3000 3001 Grad MinLod 3002 3002 3003 3005: 7(fvec4) Load 2941(texel) 3006: 7(fvec4) FAdd 3005 3004 Store 2941(texel) 3006 3007: 215 Load 217(s2DArray) 3008: 148(fvec3) Load 150(c3) 3009: 52(fvec2) Load 873(dPdxy2) 3010: 6(float) Load 2603(lodClamp) 3011: 7(fvec4) ImageSampleExplicitLod 3007 3008 Grad MinLod 3009 3009 3010 3012: 7(fvec4) Load 2941(texel) 3013: 7(fvec4) FAdd 3012 3011 Store 2941(texel) 3013 3014: 233 Load 235(s1DArrayShadow) 3015: 148(fvec3) Load 150(c3) 3016: 6(float) Load 866(dPdxy1) 3017: 6(float) Load 2603(lodClamp) 3018: 6(float) CompositeExtract 3015 2 3019: 6(float) ImageSampleDrefExplicitLod 3014 3015 3018 Grad MinLod 3016 3016 3017 3020: 174(ptr) AccessChain 2941(texel) 173 3021: 6(float) Load 3020 3022: 6(float) FAdd 3021 3019 3023: 174(ptr) AccessChain 2941(texel) 173 Store 3023 3022 3024: 245 Load 247(s2DArrayShadow) 3025: 7(fvec4) Load 197(c4) 3026: 52(fvec2) Load 873(dPdxy2) 3027: 6(float) Load 2603(lodClamp) 3028: 6(float) CompositeExtract 3025 3 3029: 6(float) ImageSampleDrefExplicitLod 3024 3025 3028 Grad MinLod 3026 3026 3027 3030: 174(ptr) AccessChain 2941(texel) 173 3031: 6(float) Load 3030 3032: 6(float) FAdd 3031 3029 3033: 174(ptr) AccessChain 2941(texel) 173 Store 3033 3032 3034: 224 Load 226(sCubeArray) 3035: 7(fvec4) Load 197(c4) 3036: 148(fvec3) Load 880(dPdxy3) 3037: 6(float) Load 2603(lodClamp) 3038: 7(fvec4) ImageSampleExplicitLod 3034 3035 Grad MinLod 3036 3036 3037 3039: 7(fvec4) Load 2941(texel) 3040: 7(fvec4) FAdd 3039 3038 Store 2941(texel) 3040 3041: 7(fvec4) Load 2941(texel) ReturnValue 3041 FunctionEnd 110(testSparseTextureGradOffsetClamp(): 7(fvec4) Function None 8 111: Label 3044(texel): 63(ptr) Variable Function Store 3044(texel) 120 3045: 133 Load 135(s2D) 3046: 52(fvec2) Load 138(c2) 3047: 52(fvec2) Load 873(dPdxy2) 3048: 6(float) Load 2603(lodClamp) 3049:1946(ResType) ImageSparseSampleExplicitLod 3045 3046 Grad ConstOffset MinLod 3047 3047 452 3048 3050: 7(fvec4) CompositeExtract 3049 1 Store 3044(texel) 3050 3051: 47(int) CompositeExtract 3049 0 3052: 144 Load 146(s3D) 3053: 148(fvec3) Load 150(c3) 3054: 148(fvec3) Load 880(dPdxy3) 3055: 6(float) Load 2603(lodClamp) 3056:1946(ResType) ImageSparseSampleExplicitLod 3052 3053 Grad ConstOffset MinLod 3054 3054 459 3055 3057: 7(fvec4) CompositeExtract 3056 1 Store 3044(texel) 3057 3058: 47(int) CompositeExtract 3056 0 3059: 180 Load 182(s2DShadow) 3060: 148(fvec3) Load 150(c3) 3061: 52(fvec2) Load 873(dPdxy2) 3062: 6(float) Load 2603(lodClamp) 3063: 174(ptr) AccessChain 3044(texel) 173 3064: 6(float) CompositeExtract 3060 2 3065:1964(ResType) ImageSparseSampleDrefExplicitLod 3059 3060 3064 Grad ConstOffset MinLod 3061 3061 452 3062 3066: 6(float) CompositeExtract 3065 1 Store 3063 3066 3067: 47(int) CompositeExtract 3065 0 3068: 215 Load 217(s2DArray) 3069: 148(fvec3) Load 150(c3) 3070: 52(fvec2) Load 873(dPdxy2) 3071: 6(float) Load 2603(lodClamp) 3072:1946(ResType) ImageSparseSampleExplicitLod 3068 3069 Grad ConstOffset MinLod 3070 3070 452 3071 3073: 7(fvec4) CompositeExtract 3072 1 Store 3044(texel) 3073 3074: 47(int) CompositeExtract 3072 0 3075: 245 Load 247(s2DArrayShadow) 3076: 7(fvec4) Load 197(c4) 3077: 52(fvec2) Load 873(dPdxy2) 3078: 6(float) Load 2603(lodClamp) 3079: 174(ptr) AccessChain 3044(texel) 173 3080: 6(float) CompositeExtract 3076 3 3081:1964(ResType) ImageSparseSampleDrefExplicitLod 3075 3076 3080 Grad ConstOffset MinLod 3077 3077 452 3078 3082: 6(float) CompositeExtract 3081 1 Store 3079 3082 3083: 47(int) CompositeExtract 3081 0 3084: 7(fvec4) Load 3044(texel) ReturnValue 3084 FunctionEnd 112(testTextureGradOffsetClamp(): 7(fvec4) Function None 8 113: Label 3087(texel): 63(ptr) Variable Function Store 3087(texel) 120 3088: 122 Load 124(s1D) 3089: 6(float) Load 127(c1) 3090: 6(float) Load 866(dPdxy1) 3091: 6(float) Load 2603(lodClamp) 3092: 7(fvec4) ImageSampleExplicitLod 3088 3089 Grad ConstOffset MinLod 3090 3090 445 3091 3093: 7(fvec4) Load 3087(texel) 3094: 7(fvec4) FAdd 3093 3092 Store 3087(texel) 3094 3095: 133 Load 135(s2D) 3096: 52(fvec2) Load 138(c2) 3097: 52(fvec2) Load 873(dPdxy2) 3098: 6(float) Load 2603(lodClamp) 3099: 7(fvec4) ImageSampleExplicitLod 3095 3096 Grad ConstOffset MinLod 3097 3097 452 3098 3100: 7(fvec4) Load 3087(texel) 3101: 7(fvec4) FAdd 3100 3099 Store 3087(texel) 3101 3102: 144 Load 146(s3D) 3103: 148(fvec3) Load 150(c3) 3104: 148(fvec3) Load 880(dPdxy3) 3105: 6(float) Load 2603(lodClamp) 3106: 7(fvec4) ImageSampleExplicitLod 3102 3103 Grad ConstOffset MinLod 3104 3104 459 3105 3107: 7(fvec4) Load 3087(texel) 3108: 7(fvec4) FAdd 3107 3106 Store 3087(texel) 3108 3109: 165 Load 167(s1DShadow) 3110: 148(fvec3) Load 150(c3) 3111: 6(float) Load 866(dPdxy1) 3112: 6(float) Load 2603(lodClamp) 3113: 6(float) CompositeExtract 3110 2 3114: 6(float) ImageSampleDrefExplicitLod 3109 3110 3113 Grad ConstOffset MinLod 3111 3111 445 3112 3115: 174(ptr) AccessChain 3087(texel) 173 3116: 6(float) Load 3115 3117: 6(float) FAdd 3116 3114 3118: 174(ptr) AccessChain 3087(texel) 173 Store 3118 3117 3119: 180 Load 182(s2DShadow) 3120: 148(fvec3) Load 150(c3) 3121: 52(fvec2) Load 873(dPdxy2) 3122: 6(float) Load 2603(lodClamp) 3123: 6(float) CompositeExtract 3120 2 3124: 6(float) ImageSampleDrefExplicitLod 3119 3120 3123 Grad ConstOffset MinLod 3121 3121 452 3122 3125: 174(ptr) AccessChain 3087(texel) 173 3126: 6(float) Load 3125 3127: 6(float) FAdd 3126 3124 3128: 174(ptr) AccessChain 3087(texel) 173 Store 3128 3127 3129: 206 Load 208(s1DArray) 3130: 52(fvec2) Load 138(c2) 3131: 6(float) Load 866(dPdxy1) 3132: 6(float) Load 2603(lodClamp) 3133: 7(fvec4) ImageSampleExplicitLod 3129 3130 Grad ConstOffset MinLod 3131 3131 445 3132 3134: 7(fvec4) Load 3087(texel) 3135: 7(fvec4) FAdd 3134 3133 Store 3087(texel) 3135 3136: 215 Load 217(s2DArray) 3137: 148(fvec3) Load 150(c3) 3138: 52(fvec2) Load 873(dPdxy2) 3139: 6(float) Load 2603(lodClamp) 3140: 7(fvec4) ImageSampleExplicitLod 3136 3137 Grad ConstOffset MinLod 3138 3138 452 3139 3141: 7(fvec4) Load 3087(texel) 3142: 7(fvec4) FAdd 3141 3140 Store 3087(texel) 3142 3143: 233 Load 235(s1DArrayShadow) 3144: 148(fvec3) Load 150(c3) 3145: 6(float) Load 866(dPdxy1) 3146: 6(float) Load 2603(lodClamp) 3147: 6(float) CompositeExtract 3144 2 3148: 6(float) ImageSampleDrefExplicitLod 3143 3144 3147 Grad ConstOffset MinLod 3145 3145 445 3146 3149: 174(ptr) AccessChain 3087(texel) 173 3150: 6(float) Load 3149 3151: 6(float) FAdd 3150 3148 3152: 174(ptr) AccessChain 3087(texel) 173 Store 3152 3151 3153: 245 Load 247(s2DArrayShadow) 3154: 7(fvec4) Load 197(c4) 3155: 52(fvec2) Load 873(dPdxy2) 3156: 6(float) Load 2603(lodClamp) 3157: 6(float) CompositeExtract 3154 3 3158: 6(float) ImageSampleDrefExplicitLod 3153 3154 3157 Grad ConstOffset MinLod 3155 3155 452 3156 3159: 174(ptr) AccessChain 3087(texel) 173 3160: 6(float) Load 3159 3161: 6(float) FAdd 3160 3158 3162: 174(ptr) AccessChain 3087(texel) 173 Store 3162 3161 3163: 7(fvec4) Load 3087(texel) ReturnValue 3163 FunctionEnd 114(testCombinedTextureSampler(): 7(fvec4) Function None 8 115: Label 3166(texel): 63(ptr) Variable Function Store 3166(texel) 120 3169: 121 Load 3168(t1D) 3173: 3170 Load 3172(s) 3174: 122 SampledImage 3169 3173 3175: 6(float) Load 127(c1) 3176: 7(fvec4) ImageSampleImplicitLod 3174 3175 3177: 7(fvec4) Load 3166(texel) 3178: 7(fvec4) FAdd 3177 3176 Store 3166(texel) 3178 3181: 132 Load 3180(t2D) 3182: 3170 Load 3172(s) 3183: 133 SampledImage 3181 3182 3184: 52(fvec2) Load 138(c2) 3185: 7(fvec4) ImageSampleImplicitLod 3183 3184 3186: 7(fvec4) Load 3166(texel) 3187: 7(fvec4) FAdd 3186 3185 Store 3166(texel) 3187 3190: 143 Load 3189(t3D) 3191: 3170 Load 3172(s) 3192: 144 SampledImage 3190 3191 3193: 148(fvec3) Load 150(c3) 3194: 7(fvec4) ImageSampleImplicitLod 3192 3193 3195: 7(fvec4) Load 3166(texel) 3196: 7(fvec4) FAdd 3195 3194 Store 3166(texel) 3196 3199: 155 Load 3198(tCube) 3200: 3170 Load 3172(s) 3201: 156 SampledImage 3199 3200 3202: 148(fvec3) Load 150(c3) 3203: 7(fvec4) ImageSampleImplicitLod 3201 3202 3204: 7(fvec4) Load 3166(texel) 3205: 7(fvec4) FAdd 3204 3203 Store 3166(texel) 3205 3206: 121 Load 3168(t1D) 3208: 3170 Load 3207(sShadow) 3209: 165 SampledImage 3206 3208 3210: 148(fvec3) Load 150(c3) 3211: 6(float) CompositeExtract 3210 2 3212: 6(float) ImageSampleDrefImplicitLod 3209 3210 3211 3213: 174(ptr) AccessChain 3166(texel) 173 3214: 6(float) Load 3213 3215: 6(float) FAdd 3214 3212 3216: 174(ptr) AccessChain 3166(texel) 173 Store 3216 3215 3217: 132 Load 3180(t2D) 3218: 3170 Load 3207(sShadow) 3219: 180 SampledImage 3217 3218 3220: 148(fvec3) Load 150(c3) 3221: 6(float) CompositeExtract 3220 2 3222: 6(float) ImageSampleDrefImplicitLod 3219 3220 3221 3223: 174(ptr) AccessChain 3166(texel) 173 3224: 6(float) Load 3223 3225: 6(float) FAdd 3224 3222 3226: 174(ptr) AccessChain 3166(texel) 173 Store 3226 3225 3227: 155 Load 3198(tCube) 3228: 3170 Load 3207(sShadow) 3229: 192 SampledImage 3227 3228 3230: 7(fvec4) Load 197(c4) 3231: 6(float) CompositeExtract 3230 3 3232: 6(float) ImageSampleDrefImplicitLod 3229 3230 3231 3233: 174(ptr) AccessChain 3166(texel) 173 3234: 6(float) Load 3233 3235: 6(float) FAdd 3234 3232 3236: 174(ptr) AccessChain 3166(texel) 173 Store 3236 3235 3239: 205 Load 3238(t1DArray) 3240: 3170 Load 3172(s) 3241: 206 SampledImage 3239 3240 3242: 52(fvec2) Load 138(c2) 3243: 7(fvec4) ImageSampleImplicitLod 3241 3242 3244: 7(fvec4) Load 3166(texel) 3245: 7(fvec4) FAdd 3244 3243 Store 3166(texel) 3245 3248: 214 Load 3247(t2DArray) 3249: 3170 Load 3172(s) 3250: 215 SampledImage 3248 3249 3251: 148(fvec3) Load 150(c3) 3252: 7(fvec4) ImageSampleImplicitLod 3250 3251 3253: 7(fvec4) Load 3166(texel) 3254: 7(fvec4) FAdd 3253 3252 Store 3166(texel) 3254 3257: 223 Load 3256(tCubeArray) 3258: 3170 Load 3172(s) 3259: 224 SampledImage 3257 3258 3260: 7(fvec4) Load 197(c4) 3261: 7(fvec4) ImageSampleImplicitLod 3259 3260 3262: 7(fvec4) Load 3166(texel) 3263: 7(fvec4) FAdd 3262 3261 Store 3166(texel) 3263 3264: 205 Load 3238(t1DArray) 3265: 3170 Load 3207(sShadow) 3266: 233 SampledImage 3264 3265 3267: 148(fvec3) Load 150(c3) 3268: 6(float) CompositeExtract 3267 2 3269: 6(float) ImageSampleDrefImplicitLod 3266 3267 3268 3270: 174(ptr) AccessChain 3166(texel) 173 3271: 6(float) Load 3270 3272: 6(float) FAdd 3271 3269 3273: 174(ptr) AccessChain 3166(texel) 173 Store 3273 3272 3274: 214 Load 3247(t2DArray) 3275: 3170 Load 3207(sShadow) 3276: 245 SampledImage 3274 3275 3277: 7(fvec4) Load 197(c4) 3278: 6(float) CompositeExtract 3277 3 3279: 6(float) ImageSampleDrefImplicitLod 3276 3277 3278 3280: 174(ptr) AccessChain 3166(texel) 173 3281: 6(float) Load 3280 3282: 6(float) FAdd 3281 3279 3283: 174(ptr) AccessChain 3166(texel) 173 Store 3283 3282 3286: 256 Load 3285(t2DRect) 3287: 3170 Load 3172(s) 3288: 257 SampledImage 3286 3287 3289: 52(fvec2) Load 138(c2) 3290: 7(fvec4) ImageSampleImplicitLod 3288 3289 3291: 7(fvec4) Load 3166(texel) 3292: 7(fvec4) FAdd 3291 3290 Store 3166(texel) 3292 3293: 256 Load 3285(t2DRect) 3294: 3170 Load 3207(sShadow) 3295: 266 SampledImage 3293 3294 3296: 148(fvec3) Load 150(c3) 3297: 6(float) CompositeExtract 3296 2 3298: 6(float) ImageSampleDrefImplicitLod 3295 3296 3297 3299: 174(ptr) AccessChain 3166(texel) 173 3300: 6(float) Load 3299 3301: 6(float) FAdd 3300 3298 3302: 174(ptr) AccessChain 3166(texel) 173 Store 3302 3301 3303: 223 Load 3256(tCubeArray) 3304: 3170 Load 3207(sShadow) 3305: 278 SampledImage 3303 3304 3306: 7(fvec4) Load 197(c4) 3307: 6(float) Load 283(compare) 3308: 6(float) ImageSampleDrefImplicitLod 3305 3306 3307 3309: 174(ptr) AccessChain 3166(texel) 173 3310: 6(float) Load 3309 3311: 6(float) FAdd 3310 3308 3312: 174(ptr) AccessChain 3166(texel) 173 Store 3312 3311 3313: 7(fvec4) Load 3166(texel) ReturnValue 3313 FunctionEnd 116(testSubpassLoad(): 7(fvec4) Function None 8 117: Label 3319: 3316 Load 3318(subpass) 3321: 7(fvec4) ImageRead 3319 3320 3325: 3322 Load 3324(subpassMS) 3326: 7(fvec4) ImageRead 3325 3320 Sample 799 3327: 7(fvec4) FAdd 3321 3326 ReturnValue 3327 FunctionEnd glslang-16.0.0/Test/baseResults/spv.floate4m3.comp.out000066400000000000000000000656631506534232700225620ustar00rootroot00000000000000spv.floate4m3.comp // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 360 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability Float8EXT Capability Float8CooperativeMatrixEXT Capability VulkanMemoryModelKHR Capability CooperativeMatrixConversionsNV Capability CooperativeMatrixKHR Extension "SPV_EXT_float8" Extension "SPV_KHR_cooperative_matrix" Extension "SPV_NV_cooperative_matrix2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" 155 359 ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_EXT_bfloat16" SourceExtension "GL_EXT_float_e4m3" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix2" Name 4 "main" Name 10 "funcfe4m3(fe4m31;" Name 9 "x" Name 16 "funcf32(f1;" Name 15 "x" Name 22 "funcf64(d1;" Name 21 "x" Name 34 "func2(vfe4m34[2];i1;" Name 32 "v" Name 33 "i" Name 36 "saturatedconverts(" Name 49 "f" Name 51 "b" Name 57 "b2" Name 63 "u8" Name 67 "u16" Name 70 "u32" Name 74 "u64" Name 78 "i8" Name 82 "i16" Name 84 "i32" Name 88 "i64" Name 90 "fe4m3" Name 94 "f16" Name 96 "f32" Name 98 "f64" Name 153 "B" MemberName 153(B) 0 "b3" MemberName 153(B) 1 "b2" MemberName 153(B) 2 "b1" Name 155 "buf" Name 165 "b3" Name 175 "cmA" Name 180 "cmAf" Name 183 "param" Name 188 "param" Name 192 "param" Name 194 "i8_1" Name 199 "i8_2" Name 204 "i8_3" Name 213 "i8_4" Name 221 "u8_1" Name 226 "u8_2" Name 231 "u8_3" Name 240 "u8_4" Name 248 "f8_1" Name 251 "f8_2" Name 254 "f8_3" Name 258 "f8_4" Name 269 "b" Name 290 "S" MemberName 290(S) 0 "b" Name 292 "s" Name 313 "f" Name 317 "f2" Name 320 "b" Name 323 "b2" Name 326 "u" Name 329 "i" Name 332 "mate4m3A" Name 335 "matf16A" Name 340 "matf16C" Name 352 "bsc10" Name 359 "bfs" Decorate 153(B) Block MemberDecorate 153(B) 0 Offset 0 MemberDecorate 153(B) 1 Offset 3 MemberDecorate 153(B) 2 Offset 5 Decorate 155(buf) Binding 0 Decorate 155(buf) DescriptorSet 0 Decorate 322 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 325 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 328 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 331 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 344 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 346 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 352(bsc10) SpecId 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 8 4214 7: TypePointer Function 6(floate4m3_t) 8: TypeFunction 6(floate4m3_t) 7(ptr) 12: TypeFloat 32 13: TypePointer Function 12(float) 14: TypeFunction 6(floate4m3_t) 13(ptr) 18: TypeFloat 64 19: TypePointer Function 18(float64_t) 20: TypeFunction 6(floate4m3_t) 19(ptr) 24: TypeVector 6(floate4m3_t) 4 25: TypeInt 32 0 26: 25(int) Constant 2 27: TypeArray 24(fvec4) 26 28: TypePointer Function 27 29: TypeInt 32 1 30: TypePointer Function 29(int) 31: TypeFunction 6(floate4m3_t) 28(ptr) 30(ptr) 50: 12(float) Constant 1073741824 52:6(floate4m3_t) Constant 56 55: TypeVector 6(floate4m3_t) 2 56: TypePointer Function 55(fvec2) 61: TypeInt 8 0 62: TypePointer Function 61(int8_t) 64: 61(int8_t) Constant 5 65: TypeInt 16 0 66: TypePointer Function 65(int16_t) 68: 65(int16_t) Constant 5 69: TypePointer Function 25(int) 71: 25(int) Constant 5 72: TypeInt 64 0 73: TypePointer Function 72(int64_t) 75: 72(int64_t) Constant 5 0 76: TypeInt 8 1 77: TypePointer Function 76(int8_t) 79: 76(int8_t) Constant 6 80: TypeInt 16 1 81: TypePointer Function 80(int16_t) 83: 80(int16_t) Constant 6 85: 29(int) Constant 6 86: TypeInt 64 1 87: TypePointer Function 86(int64_t) 89: 86(int64_t) Constant 6 0 91:6(floate4m3_t) Constant 78 92: TypeFloat 16 93: TypePointer Function 92(float16_t) 95:92(float16_t) Constant 18176 97: 12(float) Constant 1088421888 99:18(float64_t) Constant 0 1075576832 152: TypeVector 6(floate4m3_t) 3 153(B): TypeStruct 152(fvec3) 55(fvec2) 6(floate4m3_t) 154: TypePointer StorageBuffer 153(B) 155(buf): 154(ptr) Variable StorageBuffer 156: 29(int) Constant 2 157: TypePointer StorageBuffer 6(floate4m3_t) 160: 29(int) Constant 1 161: TypePointer StorageBuffer 55(fvec2) 164: TypePointer Function 152(fvec3) 166: 29(int) Constant 0 167: TypePointer StorageBuffer 152(fvec3) 170: 25(int) Constant 3 171: 25(int) Constant 16 172: 25(int) Constant 0 173: TypeCooperativeMatrixKHR 6(floate4m3_t) 170 171 171 172 174: TypePointer Function 173 176:6(floate4m3_t) Constant 68 177: 173 ConstantComposite 176 178: TypeCooperativeMatrixKHR 12(float) 170 171 171 172 179: TypePointer Function 178 197: TypeVector 76(int8_t) 2 198: TypePointer Function 197(i8vec2) 202: TypeVector 76(int8_t) 3 203: TypePointer Function 202(i8vec3) 211: TypeVector 76(int8_t) 4 212: TypePointer Function 211(i8vec4) 224: TypeVector 61(int8_t) 2 225: TypePointer Function 224(i8vec2) 229: TypeVector 61(int8_t) 3 230: TypePointer Function 229(i8vec3) 238: TypeVector 61(int8_t) 4 239: TypePointer Function 238(i8vec4) 257: TypePointer Function 24(fvec4) 282: 25(int) Constant 1 290(S): TypeStruct 6(floate4m3_t) 291: TypePointer Function 290(S) 296: TypeBool 299:6(floate4m3_t) Constant 64 314: 12(float) Constant 1065353216 315: TypeVector 12(float) 2 316: TypePointer Function 315(fvec2) 333: TypeCooperativeMatrixKHR 92(float16_t) 170 171 171 172 334: TypePointer Function 333 338: TypeCooperativeMatrixKHR 92(float16_t) 170 171 171 26 339: TypePointer Function 338 347: TypeVector 25(int) 3 348: 347(ivec3) ConstantComposite 282 282 282 349:6(floate4m3_t) Constant 82 350:6(floate4m3_t) Constant 90 351: 55(fvec2) ConstantComposite 350 350 352(bsc10):6(floate4m3_t) SpecConstant 82 353: 290(S) ConstantComposite 349 354: TypeArray 6(floate4m3_t) 26 355: 354 ConstantComposite 349 349 356: 25(int) Constant 10 357: TypeArray 6(floate4m3_t) 356 358: TypePointer Workgroup 357 359(bfs): 358(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label 49(f): 13(ptr) Variable Function 51(b): 7(ptr) Variable Function 57(b2): 56(ptr) Variable Function 63(u8): 62(ptr) Variable Function 67(u16): 66(ptr) Variable Function 70(u32): 69(ptr) Variable Function 74(u64): 73(ptr) Variable Function 78(i8): 77(ptr) Variable Function 82(i16): 81(ptr) Variable Function 84(i32): 30(ptr) Variable Function 88(i64): 87(ptr) Variable Function 90(fe4m3): 7(ptr) Variable Function 94(f16): 93(ptr) Variable Function 96(f32): 13(ptr) Variable Function 98(f64): 19(ptr) Variable Function 165(b3): 164(ptr) Variable Function 175(cmA): 174(ptr) Variable Function 180(cmAf): 179(ptr) Variable Function 183(param): 7(ptr) Variable Function 188(param): 13(ptr) Variable Function 192(param): 19(ptr) Variable Function 194(i8_1): 77(ptr) Variable Function 199(i8_2): 198(ptr) Variable Function 204(i8_3): 203(ptr) Variable Function 213(i8_4): 212(ptr) Variable Function 221(u8_1): 62(ptr) Variable Function 226(u8_2): 225(ptr) Variable Function 231(u8_3): 230(ptr) Variable Function 240(u8_4): 239(ptr) Variable Function 248(f8_1): 7(ptr) Variable Function 251(f8_2): 56(ptr) Variable Function 254(f8_3): 164(ptr) Variable Function 258(f8_4): 257(ptr) Variable Function Store 49(f) 50 Store 51(b) 52 53: 12(float) Load 49(f) 54:6(floate4m3_t) FConvert 53 58: 12(float) Load 49(f) 59:6(floate4m3_t) FConvert 58 60: 55(fvec2) CompositeConstruct 59 59 Store 57(b2) 60 Store 63(u8) 64 Store 67(u16) 68 Store 70(u32) 71 Store 74(u64) 75 Store 78(i8) 79 Store 82(i16) 83 Store 84(i32) 85 Store 88(i64) 89 Store 90(fe4m3) 91 Store 94(f16) 95 Store 96(f32) 97 Store 98(f64) 99 100: 61(int8_t) Load 63(u8) 101:6(floate4m3_t) ConvertUToF 100 Store 51(b) 101 102: 65(int16_t) Load 67(u16) 103:6(floate4m3_t) ConvertUToF 102 Store 51(b) 103 104: 25(int) Load 70(u32) 105:6(floate4m3_t) ConvertUToF 104 Store 51(b) 105 106: 72(int64_t) Load 74(u64) 107:6(floate4m3_t) ConvertUToF 106 Store 51(b) 107 108: 76(int8_t) Load 78(i8) 109:6(floate4m3_t) ConvertSToF 108 Store 51(b) 109 110: 80(int16_t) Load 82(i16) 111:6(floate4m3_t) ConvertSToF 110 Store 51(b) 111 112: 29(int) Load 84(i32) 113:6(floate4m3_t) ConvertSToF 112 Store 51(b) 113 114: 86(int64_t) Load 88(i64) 115:6(floate4m3_t) ConvertSToF 114 Store 51(b) 115 116:6(floate4m3_t) Load 90(fe4m3) Store 51(b) 116 117:92(float16_t) Load 94(f16) 118:6(floate4m3_t) FConvert 117 Store 51(b) 118 119: 12(float) Load 96(f32) 120:6(floate4m3_t) FConvert 119 Store 51(b) 120 121:18(float64_t) Load 98(f64) 122:6(floate4m3_t) FConvert 121 Store 51(b) 122 123:6(floate4m3_t) Load 51(b) 124: 61(int8_t) ConvertFToU 123 Store 63(u8) 124 125:6(floate4m3_t) Load 51(b) 126: 65(int16_t) ConvertFToU 125 Store 67(u16) 126 127:6(floate4m3_t) Load 51(b) 128: 25(int) ConvertFToU 127 Store 70(u32) 128 129:6(floate4m3_t) Load 51(b) 130: 72(int64_t) ConvertFToU 129 Store 74(u64) 130 131:6(floate4m3_t) Load 51(b) 132: 76(int8_t) ConvertFToS 131 Store 78(i8) 132 133:6(floate4m3_t) Load 51(b) 134: 80(int16_t) ConvertFToS 133 Store 82(i16) 134 135:6(floate4m3_t) Load 51(b) 136: 29(int) ConvertFToS 135 Store 84(i32) 136 137:6(floate4m3_t) Load 51(b) 138: 86(int64_t) ConvertFToS 137 Store 88(i64) 138 139:6(floate4m3_t) Load 51(b) Store 90(fe4m3) 139 140:6(floate4m3_t) Load 51(b) 141:92(float16_t) FConvert 140 Store 94(f16) 141 142:6(floate4m3_t) Load 51(b) 143: 12(float) FConvert 142 Store 96(f32) 143 144:6(floate4m3_t) Load 51(b) 145:18(float64_t) FConvert 144 Store 98(f64) 145 146:6(floate4m3_t) Load 51(b) 147:92(float16_t) FConvert 146 Store 94(f16) 147 148:6(floate4m3_t) Load 51(b) 149: 12(float) FConvert 148 Store 96(f32) 149 150:6(floate4m3_t) Load 51(b) 151:18(float64_t) FConvert 150 Store 98(f64) 151 158: 157(ptr) AccessChain 155(buf) 156 159:6(floate4m3_t) Load 158 Store 51(b) 159 162: 161(ptr) AccessChain 155(buf) 160 163: 55(fvec2) Load 162 Store 57(b2) 163 168: 167(ptr) AccessChain 155(buf) 166 169: 152(fvec3) Load 168 Store 165(b3) 169 Store 175(cmA) 177 181: 173 Load 175(cmA) 182: 178 FConvert 181 Store 180(cmAf) 182 184:6(floate4m3_t) Load 51(b) Store 183(param) 184 185:6(floate4m3_t) FunctionCall 10(funcfe4m3(fe4m31;) 183(param) 186:6(floate4m3_t) Load 51(b) 187: 12(float) FConvert 186 Store 188(param) 187 189:6(floate4m3_t) FunctionCall 16(funcf32(f1;) 188(param) 190:6(floate4m3_t) Load 51(b) 191:18(float64_t) FConvert 190 Store 192(param) 191 193:6(floate4m3_t) FunctionCall 22(funcf64(d1;) 192(param) 195:6(floate4m3_t) Load 51(b) 196: 76(int8_t) Bitcast 195 Store 194(i8_1) 196 200: 55(fvec2) Load 57(b2) 201: 197(i8vec2) Bitcast 200 Store 199(i8_2) 201 205: 55(fvec2) Load 57(b2) 206:6(floate4m3_t) Load 51(b) 207:6(floate4m3_t) CompositeExtract 205 0 208:6(floate4m3_t) CompositeExtract 205 1 209: 152(fvec3) CompositeConstruct 207 208 206 210: 202(i8vec3) Bitcast 209 Store 204(i8_3) 210 214: 55(fvec2) Load 57(b2) 215:6(floate4m3_t) CompositeExtract 214 0 216:6(floate4m3_t) CompositeExtract 214 1 217:6(floate4m3_t) CompositeExtract 214 0 218:6(floate4m3_t) CompositeExtract 214 1 219: 24(fvec4) CompositeConstruct 215 216 217 218 220: 211(i8vec4) Bitcast 219 Store 213(i8_4) 220 222:6(floate4m3_t) Load 51(b) 223: 61(int8_t) Bitcast 222 Store 221(u8_1) 223 227: 55(fvec2) Load 57(b2) 228: 224(i8vec2) Bitcast 227 Store 226(u8_2) 228 232: 55(fvec2) Load 57(b2) 233:6(floate4m3_t) Load 51(b) 234:6(floate4m3_t) CompositeExtract 232 0 235:6(floate4m3_t) CompositeExtract 232 1 236: 152(fvec3) CompositeConstruct 234 235 233 237: 229(i8vec3) Bitcast 236 Store 231(u8_3) 237 241: 55(fvec2) Load 57(b2) 242:6(floate4m3_t) CompositeExtract 241 0 243:6(floate4m3_t) CompositeExtract 241 1 244:6(floate4m3_t) CompositeExtract 241 0 245:6(floate4m3_t) CompositeExtract 241 1 246: 24(fvec4) CompositeConstruct 242 243 244 245 247: 238(i8vec4) Bitcast 246 Store 240(u8_4) 247 249: 76(int8_t) Load 194(i8_1) 250:6(floate4m3_t) Bitcast 249 Store 248(f8_1) 250 252: 197(i8vec2) Load 199(i8_2) 253: 55(fvec2) Bitcast 252 Store 251(f8_2) 253 255: 202(i8vec3) Load 204(i8_3) 256: 152(fvec3) Bitcast 255 Store 254(f8_3) 256 259: 211(i8vec4) Load 213(i8_4) 260: 24(fvec4) Bitcast 259 Store 258(f8_4) 260 261: 61(int8_t) Load 221(u8_1) 262:6(floate4m3_t) Bitcast 261 Store 248(f8_1) 262 263: 224(i8vec2) Load 226(u8_2) 264: 55(fvec2) Bitcast 263 Store 251(f8_2) 264 265: 229(i8vec3) Load 231(u8_3) 266: 152(fvec3) Bitcast 265 Store 254(f8_3) 266 267: 238(i8vec4) Load 240(u8_4) 268: 24(fvec4) Bitcast 267 Store 258(f8_4) 268 Return FunctionEnd 10(funcfe4m3(fe4m31;):6(floate4m3_t) Function None 8 9(x): 7(ptr) FunctionParameter 11: Label 38:6(floate4m3_t) Load 9(x) ReturnValue 38 FunctionEnd 16(funcf32(f1;):6(floate4m3_t) Function None 14 15(x): 13(ptr) FunctionParameter 17: Label 41: 12(float) Load 15(x) 42:6(floate4m3_t) FConvert 41 ReturnValue 42 FunctionEnd 22(funcf64(d1;):6(floate4m3_t) Function None 20 21(x): 19(ptr) FunctionParameter 23: Label 45:18(float64_t) Load 21(x) 46:6(floate4m3_t) FConvert 45 ReturnValue 46 FunctionEnd 34(func2(vfe4m34[2];i1;):6(floate4m3_t) Function None 31 32(v): 28(ptr) FunctionParameter 33(i): 30(ptr) FunctionParameter 35: Label 269(b): 7(ptr) Variable Function 292(s): 291(ptr) Variable Function 270: 257(ptr) AccessChain 32(v) 166 271: 24(fvec4) Load 270 272:6(floate4m3_t) CompositeExtract 271 0 273:6(floate4m3_t) CompositeExtract 271 1 274: 55(fvec2) CompositeConstruct 272 273 275: 29(int) Load 33(i) 276:6(floate4m3_t) VectorExtractDynamic 274 275 Store 269(b) 276 277: 257(ptr) AccessChain 32(v) 160 278: 24(fvec4) Load 277 279:6(floate4m3_t) CompositeExtract 278 0 280:6(floate4m3_t) CompositeExtract 278 1 281: 55(fvec2) CompositeConstruct 279 280 283:6(floate4m3_t) CompositeExtract 281 1 Store 269(b) 283 284: 29(int) Load 33(i) 285: 29(int) Load 33(i) 286: 29(int) Load 33(i) 287: 7(ptr) AccessChain 32(v) 285 286 288:6(floate4m3_t) Load 287 289: 7(ptr) AccessChain 32(v) 284 26 Store 289 288 293:6(floate4m3_t) Load 269(b) 294: 7(ptr) AccessChain 292(s) 166 Store 294 293 295: 29(int) Load 33(i) 297: 296(bool) INotEqual 295 166 298:6(floate4m3_t) Load 269(b) 300:6(floate4m3_t) Select 297 298 299 Store 269(b) 300 301: 29(int) Load 33(i) 302: 296(bool) IEqual 301 156 SelectionMerge 304 None BranchConditional 302 303 307 303: Label 305: 7(ptr) AccessChain 32(v) 166 172 306:6(floate4m3_t) Load 305 Store 269(b) 306 Branch 304 307: Label 308: 7(ptr) AccessChain 32(v) 160 282 309:6(floate4m3_t) Load 308 Store 269(b) 309 Branch 304 304: Label 310:6(floate4m3_t) Load 269(b) ReturnValue 310 FunctionEnd 36(saturatedconverts(): 2 Function None 3 37: Label 313(f): 13(ptr) Variable Function 317(f2): 316(ptr) Variable Function 320(b): 7(ptr) Variable Function 323(b2): 56(ptr) Variable Function 326(u): 69(ptr) Variable Function 329(i): 30(ptr) Variable Function 332(mate4m3A): 174(ptr) Variable Function 335(matf16A): 334(ptr) Variable Function 340(matf16C): 339(ptr) Variable Function Store 313(f) 314 318: 12(float) Load 313(f) 319: 315(fvec2) CompositeConstruct 318 318 Store 317(f2) 319 321: 12(float) Load 313(f) 322:6(floate4m3_t) FConvert 321 Store 320(b) 322 324: 315(fvec2) Load 317(f2) 325: 55(fvec2) FConvert 324 Store 323(b2) 325 327: 25(int) Load 326(u) 328:6(floate4m3_t) ConvertUToF 327 Store 320(b) 328 330: 29(int) Load 329(i) 331:6(floate4m3_t) ConvertSToF 330 Store 320(b) 331 336: 333 Load 335(matf16A) 337: 173 FConvert 336 Store 332(mate4m3A) 337 341: 338 Load 340(matf16C) 342: 173 FConvert 341 Store 332(mate4m3A) 342 343: 333 Load 335(matf16A) 344: 173 FConvert 343 Store 332(mate4m3A) 344 345: 338 Load 340(matf16C) 346: 173 FConvert 345 Store 332(mate4m3A) 346 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.floate4m3.const.comp.out000066400000000000000000000126401506534232700236720ustar00rootroot00000000000000spv.floate4m3.const.comp // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader Capability Int8 Capability Float8EXT Extension "SPV_EXT_float8" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_EXT_bfloat16" SourceExtension "GL_EXT_float_e4m3" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix2" Name 4 "main" Name 8 "c01111_000" Name 10 "c01111_001" Name 12 "c01111_010" Name 14 "c01111_011" Name 16 "c01111_100" Name 18 "c01111_101" Name 20 "c01111_110" Name 22 "c01111_110_2" Name 23 "c01111_111" Name 25 "c01111_111_2" Name 26 "c11111_000" Name 28 "c11111_001" Name 30 "c11111_010" Name 32 "c11111_011" Name 34 "c11111_100" Name 36 "c11111_101" Name 38 "c11111_110" Name 40 "c11111_110_2" Name 41 "c11111_111" Name 43 "c11111_111_2" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 8 4214 7: TypePointer Function 6(floate4m3_t) 9:6(floate4m3_t) Constant 120 11:6(floate4m3_t) Constant 121 13:6(floate4m3_t) Constant 122 15:6(floate4m3_t) Constant 123 17:6(floate4m3_t) Constant 124 19:6(floate4m3_t) Constant 125 21:6(floate4m3_t) Constant 126 24:6(floate4m3_t) Constant 127 27:6(floate4m3_t) Constant 248 29:6(floate4m3_t) Constant 249 31:6(floate4m3_t) Constant 250 33:6(floate4m3_t) Constant 251 35:6(floate4m3_t) Constant 252 37:6(floate4m3_t) Constant 253 39:6(floate4m3_t) Constant 254 42:6(floate4m3_t) Constant 255 44: TypeInt 32 0 45: TypeVector 44(int) 3 46: 44(int) Constant 1 47: 45(ivec3) ConstantComposite 46 46 46 4(main): 2 Function None 3 5: Label 8(c01111_000): 7(ptr) Variable Function 10(c01111_001): 7(ptr) Variable Function 12(c01111_010): 7(ptr) Variable Function 14(c01111_011): 7(ptr) Variable Function 16(c01111_100): 7(ptr) Variable Function 18(c01111_101): 7(ptr) Variable Function 20(c01111_110): 7(ptr) Variable Function 22(c01111_110_2): 7(ptr) Variable Function 23(c01111_111): 7(ptr) Variable Function 25(c01111_111_2): 7(ptr) Variable Function 26(c11111_000): 7(ptr) Variable Function 28(c11111_001): 7(ptr) Variable Function 30(c11111_010): 7(ptr) Variable Function 32(c11111_011): 7(ptr) Variable Function 34(c11111_100): 7(ptr) Variable Function 36(c11111_101): 7(ptr) Variable Function 38(c11111_110): 7(ptr) Variable Function 40(c11111_110_2): 7(ptr) Variable Function 41(c11111_111): 7(ptr) Variable Function 43(c11111_111_2): 7(ptr) Variable Function Store 8(c01111_000) 9 Store 10(c01111_001) 11 Store 12(c01111_010) 13 Store 14(c01111_011) 15 Store 16(c01111_100) 17 Store 18(c01111_101) 19 Store 20(c01111_110) 21 Store 22(c01111_110_2) 21 Store 23(c01111_111) 24 Store 25(c01111_111_2) 24 Store 26(c11111_000) 27 Store 28(c11111_001) 29 Store 30(c11111_010) 31 Store 32(c11111_011) 33 Store 34(c11111_100) 35 Store 36(c11111_101) 37 Store 38(c11111_110) 39 Store 40(c11111_110_2) 39 Store 41(c11111_111) 42 Store 43(c11111_111_2) 42 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.floate4m3_error.comp.out000066400000000000000000000072031506534232700237550ustar00rootroot00000000000000spv.floate4m3_error.comp ERROR: 0:32: 'assign' : cannot convert from ' temp uint8_t' to ' temp floate4m3_t' ERROR: 0:33: 'assign' : cannot convert from ' temp uint16_t' to ' temp floate4m3_t' ERROR: 0:34: 'assign' : cannot convert from ' temp highp uint' to ' temp floate4m3_t' ERROR: 0:35: 'assign' : cannot convert from ' temp uint64_t' to ' temp floate4m3_t' ERROR: 0:36: 'assign' : cannot convert from ' temp int8_t' to ' temp floate4m3_t' ERROR: 0:37: 'assign' : cannot convert from ' temp int16_t' to ' temp floate4m3_t' ERROR: 0:38: 'assign' : cannot convert from ' temp highp int' to ' temp floate4m3_t' ERROR: 0:39: 'assign' : cannot convert from ' temp int64_t' to ' temp floate4m3_t' ERROR: 0:41: 'assign' : cannot convert from ' temp float16_t' to ' temp floate4m3_t' ERROR: 0:42: 'assign' : cannot convert from ' temp highp float' to ' temp floate4m3_t' ERROR: 0:43: 'assign' : cannot convert from ' temp double' to ' temp floate4m3_t' ERROR: 0:44: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp uint8_t' ERROR: 0:45: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp uint16_t' ERROR: 0:46: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp highp uint' ERROR: 0:47: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp uint64_t' ERROR: 0:48: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp int8_t' ERROR: 0:49: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp int16_t' ERROR: 0:50: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp highp int' ERROR: 0:51: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp int64_t' ERROR: 0:57: 'b2' : undeclared identifier ERROR: 0:57: 'dot' : no matching overloaded function found ERROR: 0:59: 'funcfp8' : no matching overloaded function found ERROR: 0:60: 'funcfp8' : no matching overloaded function found ERROR: 0:61: 'funcfp8' : no matching overloaded function found ERROR: 0:63: 'constructor' : can't convert ERROR: 0:63: ' temp bool' : cannot construct with these arguments ERROR: 0:63: '=' : cannot convert from ' const float' to ' temp bool' ERROR: 0:64: 'constructor' : can't convert ERROR: 0:64: ' temp floate4m3_t' : cannot construct with these arguments ERROR: 0:64: 'assign' : cannot convert from ' const float' to ' temp floate4m3_t' ERROR: 0:66: '++' : wrong operand type no operation '++' exists that takes an operand of type temp floate4m3_t (or there is no acceptable conversion) ERROR: 0:67: '--' : wrong operand type no operation '--' exists that takes an operand of type temp floate4m3_t (or there is no acceptable conversion) ERROR: 0:68: '-' : wrong operand type no operation '-' exists that takes an operand of type temp floate4m3_t (or there is no acceptable conversion) ERROR: 0:71: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp floate4m3_t' ERROR: 0:74: '' : second parameter must not have floate5m2 or floate4m3 basic type ERROR: 0:75: '' : requires exactly two parameters ERROR: 0:76: '' : types must match other than scalar type and coopmat Use ERROR: 0:77: '' : first parameter must have floate5m2 or floate4m3 basic type ERROR: 0:79: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp floate4m3_t' and a right operand of type ' temp floate4m3_t' (or there is no acceptable conversion) ERROR: 0:81: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 16, 16, 0> floate4m3_t' and a right operand of type ' temp coopmat<3, 16, 16, 0> floate4m3_t' (or there is no acceptable conversion) ERROR: 40 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.floate5m2.comp.out000066400000000000000000000656631506534232700225620ustar00rootroot00000000000000spv.floate5m2.comp // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 360 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability Float8EXT Capability Float8CooperativeMatrixEXT Capability VulkanMemoryModelKHR Capability CooperativeMatrixConversionsNV Capability CooperativeMatrixKHR Extension "SPV_EXT_float8" Extension "SPV_KHR_cooperative_matrix" Extension "SPV_NV_cooperative_matrix2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" 155 359 ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_EXT_bfloat16" SourceExtension "GL_EXT_float_e5m2" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix2" Name 4 "main" Name 10 "funcfe5m2(fe5m21;" Name 9 "x" Name 16 "funcf32(f1;" Name 15 "x" Name 22 "funcf64(d1;" Name 21 "x" Name 34 "func2(vfe5m24[2];i1;" Name 32 "v" Name 33 "i" Name 36 "saturatedconverts(" Name 49 "f" Name 51 "b" Name 57 "b2" Name 63 "u8" Name 67 "u16" Name 70 "u32" Name 74 "u64" Name 78 "i8" Name 82 "i16" Name 84 "i32" Name 88 "i64" Name 90 "fe5m2" Name 94 "f16" Name 96 "f32" Name 98 "f64" Name 153 "B" MemberName 153(B) 0 "b3" MemberName 153(B) 1 "b2" MemberName 153(B) 2 "b1" Name 155 "buf" Name 165 "b3" Name 175 "cmA" Name 180 "cmAf" Name 183 "param" Name 188 "param" Name 192 "param" Name 194 "i8_1" Name 199 "i8_2" Name 204 "i8_3" Name 213 "i8_4" Name 221 "u8_1" Name 226 "u8_2" Name 231 "u8_3" Name 240 "u8_4" Name 248 "f8_1" Name 251 "f8_2" Name 254 "f8_3" Name 258 "f8_4" Name 269 "b" Name 290 "S" MemberName 290(S) 0 "b" Name 292 "s" Name 313 "f" Name 317 "f2" Name 320 "b" Name 323 "b2" Name 326 "u" Name 329 "i" Name 332 "mate5m2A" Name 335 "matf16A" Name 340 "matf16C" Name 352 "bsc10" Name 359 "bfs" Decorate 153(B) Block MemberDecorate 153(B) 0 Offset 0 MemberDecorate 153(B) 1 Offset 3 MemberDecorate 153(B) 2 Offset 5 Decorate 155(buf) Binding 0 Decorate 155(buf) DescriptorSet 0 Decorate 322 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 325 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 328 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 331 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 344 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 346 DecorationSaturatedToLargestFloat8NormalConversionEXT Decorate 352(bsc10) SpecId 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 8 4215 7: TypePointer Function 6(floate5m2_t) 8: TypeFunction 6(floate5m2_t) 7(ptr) 12: TypeFloat 32 13: TypePointer Function 12(float) 14: TypeFunction 6(floate5m2_t) 13(ptr) 18: TypeFloat 64 19: TypePointer Function 18(float64_t) 20: TypeFunction 6(floate5m2_t) 19(ptr) 24: TypeVector 6(floate5m2_t) 4 25: TypeInt 32 0 26: 25(int) Constant 2 27: TypeArray 24(fvec4) 26 28: TypePointer Function 27 29: TypeInt 32 1 30: TypePointer Function 29(int) 31: TypeFunction 6(floate5m2_t) 28(ptr) 30(ptr) 50: 12(float) Constant 1073741824 52:6(floate5m2_t) Constant 60 55: TypeVector 6(floate5m2_t) 2 56: TypePointer Function 55(fvec2) 61: TypeInt 8 0 62: TypePointer Function 61(int8_t) 64: 61(int8_t) Constant 5 65: TypeInt 16 0 66: TypePointer Function 65(int16_t) 68: 65(int16_t) Constant 5 69: TypePointer Function 25(int) 71: 25(int) Constant 5 72: TypeInt 64 0 73: TypePointer Function 72(int64_t) 75: 72(int64_t) Constant 5 0 76: TypeInt 8 1 77: TypePointer Function 76(int8_t) 79: 76(int8_t) Constant 6 80: TypeInt 16 1 81: TypePointer Function 80(int16_t) 83: 80(int16_t) Constant 6 85: 29(int) Constant 6 86: TypeInt 64 1 87: TypePointer Function 86(int64_t) 89: 86(int64_t) Constant 6 0 91:6(floate5m2_t) Constant 71 92: TypeFloat 16 93: TypePointer Function 92(float16_t) 95:92(float16_t) Constant 18176 97: 12(float) Constant 1088421888 99:18(float64_t) Constant 0 1075576832 152: TypeVector 6(floate5m2_t) 3 153(B): TypeStruct 152(fvec3) 55(fvec2) 6(floate5m2_t) 154: TypePointer StorageBuffer 153(B) 155(buf): 154(ptr) Variable StorageBuffer 156: 29(int) Constant 2 157: TypePointer StorageBuffer 6(floate5m2_t) 160: 29(int) Constant 1 161: TypePointer StorageBuffer 55(fvec2) 164: TypePointer Function 152(fvec3) 166: 29(int) Constant 0 167: TypePointer StorageBuffer 152(fvec3) 170: 25(int) Constant 3 171: 25(int) Constant 16 172: 25(int) Constant 0 173: TypeCooperativeMatrixKHR 6(floate5m2_t) 170 171 171 172 174: TypePointer Function 173 176:6(floate5m2_t) Constant 66 177: 173 ConstantComposite 176 178: TypeCooperativeMatrixKHR 12(float) 170 171 171 172 179: TypePointer Function 178 197: TypeVector 76(int8_t) 2 198: TypePointer Function 197(i8vec2) 202: TypeVector 76(int8_t) 3 203: TypePointer Function 202(i8vec3) 211: TypeVector 76(int8_t) 4 212: TypePointer Function 211(i8vec4) 224: TypeVector 61(int8_t) 2 225: TypePointer Function 224(i8vec2) 229: TypeVector 61(int8_t) 3 230: TypePointer Function 229(i8vec3) 238: TypeVector 61(int8_t) 4 239: TypePointer Function 238(i8vec4) 257: TypePointer Function 24(fvec4) 282: 25(int) Constant 1 290(S): TypeStruct 6(floate5m2_t) 291: TypePointer Function 290(S) 296: TypeBool 299:6(floate5m2_t) Constant 64 314: 12(float) Constant 1065353216 315: TypeVector 12(float) 2 316: TypePointer Function 315(fvec2) 333: TypeCooperativeMatrixKHR 92(float16_t) 170 171 171 172 334: TypePointer Function 333 338: TypeCooperativeMatrixKHR 92(float16_t) 170 171 171 26 339: TypePointer Function 338 347: TypeVector 25(int) 3 348: 347(ivec3) ConstantComposite 282 282 282 349:6(floate5m2_t) Constant 73 350:6(floate5m2_t) Constant 77 351: 55(fvec2) ConstantComposite 350 350 352(bsc10):6(floate5m2_t) SpecConstant 73 353: 290(S) ConstantComposite 349 354: TypeArray 6(floate5m2_t) 26 355: 354 ConstantComposite 349 349 356: 25(int) Constant 10 357: TypeArray 6(floate5m2_t) 356 358: TypePointer Workgroup 357 359(bfs): 358(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label 49(f): 13(ptr) Variable Function 51(b): 7(ptr) Variable Function 57(b2): 56(ptr) Variable Function 63(u8): 62(ptr) Variable Function 67(u16): 66(ptr) Variable Function 70(u32): 69(ptr) Variable Function 74(u64): 73(ptr) Variable Function 78(i8): 77(ptr) Variable Function 82(i16): 81(ptr) Variable Function 84(i32): 30(ptr) Variable Function 88(i64): 87(ptr) Variable Function 90(fe5m2): 7(ptr) Variable Function 94(f16): 93(ptr) Variable Function 96(f32): 13(ptr) Variable Function 98(f64): 19(ptr) Variable Function 165(b3): 164(ptr) Variable Function 175(cmA): 174(ptr) Variable Function 180(cmAf): 179(ptr) Variable Function 183(param): 7(ptr) Variable Function 188(param): 13(ptr) Variable Function 192(param): 19(ptr) Variable Function 194(i8_1): 77(ptr) Variable Function 199(i8_2): 198(ptr) Variable Function 204(i8_3): 203(ptr) Variable Function 213(i8_4): 212(ptr) Variable Function 221(u8_1): 62(ptr) Variable Function 226(u8_2): 225(ptr) Variable Function 231(u8_3): 230(ptr) Variable Function 240(u8_4): 239(ptr) Variable Function 248(f8_1): 7(ptr) Variable Function 251(f8_2): 56(ptr) Variable Function 254(f8_3): 164(ptr) Variable Function 258(f8_4): 257(ptr) Variable Function Store 49(f) 50 Store 51(b) 52 53: 12(float) Load 49(f) 54:6(floate5m2_t) FConvert 53 58: 12(float) Load 49(f) 59:6(floate5m2_t) FConvert 58 60: 55(fvec2) CompositeConstruct 59 59 Store 57(b2) 60 Store 63(u8) 64 Store 67(u16) 68 Store 70(u32) 71 Store 74(u64) 75 Store 78(i8) 79 Store 82(i16) 83 Store 84(i32) 85 Store 88(i64) 89 Store 90(fe5m2) 91 Store 94(f16) 95 Store 96(f32) 97 Store 98(f64) 99 100: 61(int8_t) Load 63(u8) 101:6(floate5m2_t) ConvertUToF 100 Store 51(b) 101 102: 65(int16_t) Load 67(u16) 103:6(floate5m2_t) ConvertUToF 102 Store 51(b) 103 104: 25(int) Load 70(u32) 105:6(floate5m2_t) ConvertUToF 104 Store 51(b) 105 106: 72(int64_t) Load 74(u64) 107:6(floate5m2_t) ConvertUToF 106 Store 51(b) 107 108: 76(int8_t) Load 78(i8) 109:6(floate5m2_t) ConvertSToF 108 Store 51(b) 109 110: 80(int16_t) Load 82(i16) 111:6(floate5m2_t) ConvertSToF 110 Store 51(b) 111 112: 29(int) Load 84(i32) 113:6(floate5m2_t) ConvertSToF 112 Store 51(b) 113 114: 86(int64_t) Load 88(i64) 115:6(floate5m2_t) ConvertSToF 114 Store 51(b) 115 116:6(floate5m2_t) Load 90(fe5m2) Store 51(b) 116 117:92(float16_t) Load 94(f16) 118:6(floate5m2_t) FConvert 117 Store 51(b) 118 119: 12(float) Load 96(f32) 120:6(floate5m2_t) FConvert 119 Store 51(b) 120 121:18(float64_t) Load 98(f64) 122:6(floate5m2_t) FConvert 121 Store 51(b) 122 123:6(floate5m2_t) Load 51(b) 124: 61(int8_t) ConvertFToU 123 Store 63(u8) 124 125:6(floate5m2_t) Load 51(b) 126: 65(int16_t) ConvertFToU 125 Store 67(u16) 126 127:6(floate5m2_t) Load 51(b) 128: 25(int) ConvertFToU 127 Store 70(u32) 128 129:6(floate5m2_t) Load 51(b) 130: 72(int64_t) ConvertFToU 129 Store 74(u64) 130 131:6(floate5m2_t) Load 51(b) 132: 76(int8_t) ConvertFToS 131 Store 78(i8) 132 133:6(floate5m2_t) Load 51(b) 134: 80(int16_t) ConvertFToS 133 Store 82(i16) 134 135:6(floate5m2_t) Load 51(b) 136: 29(int) ConvertFToS 135 Store 84(i32) 136 137:6(floate5m2_t) Load 51(b) 138: 86(int64_t) ConvertFToS 137 Store 88(i64) 138 139:6(floate5m2_t) Load 51(b) Store 90(fe5m2) 139 140:6(floate5m2_t) Load 51(b) 141:92(float16_t) FConvert 140 Store 94(f16) 141 142:6(floate5m2_t) Load 51(b) 143: 12(float) FConvert 142 Store 96(f32) 143 144:6(floate5m2_t) Load 51(b) 145:18(float64_t) FConvert 144 Store 98(f64) 145 146:6(floate5m2_t) Load 51(b) 147:92(float16_t) FConvert 146 Store 94(f16) 147 148:6(floate5m2_t) Load 51(b) 149: 12(float) FConvert 148 Store 96(f32) 149 150:6(floate5m2_t) Load 51(b) 151:18(float64_t) FConvert 150 Store 98(f64) 151 158: 157(ptr) AccessChain 155(buf) 156 159:6(floate5m2_t) Load 158 Store 51(b) 159 162: 161(ptr) AccessChain 155(buf) 160 163: 55(fvec2) Load 162 Store 57(b2) 163 168: 167(ptr) AccessChain 155(buf) 166 169: 152(fvec3) Load 168 Store 165(b3) 169 Store 175(cmA) 177 181: 173 Load 175(cmA) 182: 178 FConvert 181 Store 180(cmAf) 182 184:6(floate5m2_t) Load 51(b) Store 183(param) 184 185:6(floate5m2_t) FunctionCall 10(funcfe5m2(fe5m21;) 183(param) 186:6(floate5m2_t) Load 51(b) 187: 12(float) FConvert 186 Store 188(param) 187 189:6(floate5m2_t) FunctionCall 16(funcf32(f1;) 188(param) 190:6(floate5m2_t) Load 51(b) 191:18(float64_t) FConvert 190 Store 192(param) 191 193:6(floate5m2_t) FunctionCall 22(funcf64(d1;) 192(param) 195:6(floate5m2_t) Load 51(b) 196: 76(int8_t) Bitcast 195 Store 194(i8_1) 196 200: 55(fvec2) Load 57(b2) 201: 197(i8vec2) Bitcast 200 Store 199(i8_2) 201 205: 55(fvec2) Load 57(b2) 206:6(floate5m2_t) Load 51(b) 207:6(floate5m2_t) CompositeExtract 205 0 208:6(floate5m2_t) CompositeExtract 205 1 209: 152(fvec3) CompositeConstruct 207 208 206 210: 202(i8vec3) Bitcast 209 Store 204(i8_3) 210 214: 55(fvec2) Load 57(b2) 215:6(floate5m2_t) CompositeExtract 214 0 216:6(floate5m2_t) CompositeExtract 214 1 217:6(floate5m2_t) CompositeExtract 214 0 218:6(floate5m2_t) CompositeExtract 214 1 219: 24(fvec4) CompositeConstruct 215 216 217 218 220: 211(i8vec4) Bitcast 219 Store 213(i8_4) 220 222:6(floate5m2_t) Load 51(b) 223: 61(int8_t) Bitcast 222 Store 221(u8_1) 223 227: 55(fvec2) Load 57(b2) 228: 224(i8vec2) Bitcast 227 Store 226(u8_2) 228 232: 55(fvec2) Load 57(b2) 233:6(floate5m2_t) Load 51(b) 234:6(floate5m2_t) CompositeExtract 232 0 235:6(floate5m2_t) CompositeExtract 232 1 236: 152(fvec3) CompositeConstruct 234 235 233 237: 229(i8vec3) Bitcast 236 Store 231(u8_3) 237 241: 55(fvec2) Load 57(b2) 242:6(floate5m2_t) CompositeExtract 241 0 243:6(floate5m2_t) CompositeExtract 241 1 244:6(floate5m2_t) CompositeExtract 241 0 245:6(floate5m2_t) CompositeExtract 241 1 246: 24(fvec4) CompositeConstruct 242 243 244 245 247: 238(i8vec4) Bitcast 246 Store 240(u8_4) 247 249: 76(int8_t) Load 194(i8_1) 250:6(floate5m2_t) Bitcast 249 Store 248(f8_1) 250 252: 197(i8vec2) Load 199(i8_2) 253: 55(fvec2) Bitcast 252 Store 251(f8_2) 253 255: 202(i8vec3) Load 204(i8_3) 256: 152(fvec3) Bitcast 255 Store 254(f8_3) 256 259: 211(i8vec4) Load 213(i8_4) 260: 24(fvec4) Bitcast 259 Store 258(f8_4) 260 261: 61(int8_t) Load 221(u8_1) 262:6(floate5m2_t) Bitcast 261 Store 248(f8_1) 262 263: 224(i8vec2) Load 226(u8_2) 264: 55(fvec2) Bitcast 263 Store 251(f8_2) 264 265: 229(i8vec3) Load 231(u8_3) 266: 152(fvec3) Bitcast 265 Store 254(f8_3) 266 267: 238(i8vec4) Load 240(u8_4) 268: 24(fvec4) Bitcast 267 Store 258(f8_4) 268 Return FunctionEnd 10(funcfe5m2(fe5m21;):6(floate5m2_t) Function None 8 9(x): 7(ptr) FunctionParameter 11: Label 38:6(floate5m2_t) Load 9(x) ReturnValue 38 FunctionEnd 16(funcf32(f1;):6(floate5m2_t) Function None 14 15(x): 13(ptr) FunctionParameter 17: Label 41: 12(float) Load 15(x) 42:6(floate5m2_t) FConvert 41 ReturnValue 42 FunctionEnd 22(funcf64(d1;):6(floate5m2_t) Function None 20 21(x): 19(ptr) FunctionParameter 23: Label 45:18(float64_t) Load 21(x) 46:6(floate5m2_t) FConvert 45 ReturnValue 46 FunctionEnd 34(func2(vfe5m24[2];i1;):6(floate5m2_t) Function None 31 32(v): 28(ptr) FunctionParameter 33(i): 30(ptr) FunctionParameter 35: Label 269(b): 7(ptr) Variable Function 292(s): 291(ptr) Variable Function 270: 257(ptr) AccessChain 32(v) 166 271: 24(fvec4) Load 270 272:6(floate5m2_t) CompositeExtract 271 0 273:6(floate5m2_t) CompositeExtract 271 1 274: 55(fvec2) CompositeConstruct 272 273 275: 29(int) Load 33(i) 276:6(floate5m2_t) VectorExtractDynamic 274 275 Store 269(b) 276 277: 257(ptr) AccessChain 32(v) 160 278: 24(fvec4) Load 277 279:6(floate5m2_t) CompositeExtract 278 0 280:6(floate5m2_t) CompositeExtract 278 1 281: 55(fvec2) CompositeConstruct 279 280 283:6(floate5m2_t) CompositeExtract 281 1 Store 269(b) 283 284: 29(int) Load 33(i) 285: 29(int) Load 33(i) 286: 29(int) Load 33(i) 287: 7(ptr) AccessChain 32(v) 285 286 288:6(floate5m2_t) Load 287 289: 7(ptr) AccessChain 32(v) 284 26 Store 289 288 293:6(floate5m2_t) Load 269(b) 294: 7(ptr) AccessChain 292(s) 166 Store 294 293 295: 29(int) Load 33(i) 297: 296(bool) INotEqual 295 166 298:6(floate5m2_t) Load 269(b) 300:6(floate5m2_t) Select 297 298 299 Store 269(b) 300 301: 29(int) Load 33(i) 302: 296(bool) IEqual 301 156 SelectionMerge 304 None BranchConditional 302 303 307 303: Label 305: 7(ptr) AccessChain 32(v) 166 172 306:6(floate5m2_t) Load 305 Store 269(b) 306 Branch 304 307: Label 308: 7(ptr) AccessChain 32(v) 160 282 309:6(floate5m2_t) Load 308 Store 269(b) 309 Branch 304 304: Label 310:6(floate5m2_t) Load 269(b) ReturnValue 310 FunctionEnd 36(saturatedconverts(): 2 Function None 3 37: Label 313(f): 13(ptr) Variable Function 317(f2): 316(ptr) Variable Function 320(b): 7(ptr) Variable Function 323(b2): 56(ptr) Variable Function 326(u): 69(ptr) Variable Function 329(i): 30(ptr) Variable Function 332(mate5m2A): 174(ptr) Variable Function 335(matf16A): 334(ptr) Variable Function 340(matf16C): 339(ptr) Variable Function Store 313(f) 314 318: 12(float) Load 313(f) 319: 315(fvec2) CompositeConstruct 318 318 Store 317(f2) 319 321: 12(float) Load 313(f) 322:6(floate5m2_t) FConvert 321 Store 320(b) 322 324: 315(fvec2) Load 317(f2) 325: 55(fvec2) FConvert 324 Store 323(b2) 325 327: 25(int) Load 326(u) 328:6(floate5m2_t) ConvertUToF 327 Store 320(b) 328 330: 29(int) Load 329(i) 331:6(floate5m2_t) ConvertSToF 330 Store 320(b) 331 336: 333 Load 335(matf16A) 337: 173 FConvert 336 Store 332(mate5m2A) 337 341: 338 Load 340(matf16C) 342: 173 FConvert 341 Store 332(mate5m2A) 342 343: 333 Load 335(matf16A) 344: 173 FConvert 343 Store 332(mate5m2A) 344 345: 338 Load 340(matf16C) 346: 173 FConvert 345 Store 332(mate5m2A) 346 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.floate5m2.const.comp.out000066400000000000000000000076721506534232700237030ustar00rootroot00000000000000spv.floate5m2.const.comp // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader Capability Int8 Capability Float8EXT Extension "SPV_EXT_float8" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_EXT_bfloat16" SourceExtension "GL_EXT_float_e5m2" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix2" Name 4 "main" Name 8 "c011110_00" Name 10 "c011110_01" Name 12 "c011110_10" Name 14 "c011110_11" Name 16 "c011110_11_2" Name 17 "c011111_00" Name 19 "c111110_00" Name 21 "c111110_01" Name 23 "c111110_10" Name 25 "c111110_11" Name 27 "c111110_11_2" Name 28 "c111111_00" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 8 4215 7: TypePointer Function 6(floate5m2_t) 9:6(floate5m2_t) Constant 120 11:6(floate5m2_t) Constant 121 13:6(floate5m2_t) Constant 122 15:6(floate5m2_t) Constant 123 18:6(floate5m2_t) Constant 124 20:6(floate5m2_t) Constant 248 22:6(floate5m2_t) Constant 249 24:6(floate5m2_t) Constant 250 26:6(floate5m2_t) Constant 251 29:6(floate5m2_t) Constant 252 30: TypeInt 32 0 31: TypeVector 30(int) 3 32: 30(int) Constant 1 33: 31(ivec3) ConstantComposite 32 32 32 4(main): 2 Function None 3 5: Label 8(c011110_00): 7(ptr) Variable Function 10(c011110_01): 7(ptr) Variable Function 12(c011110_10): 7(ptr) Variable Function 14(c011110_11): 7(ptr) Variable Function 16(c011110_11_2): 7(ptr) Variable Function 17(c011111_00): 7(ptr) Variable Function 19(c111110_00): 7(ptr) Variable Function 21(c111110_01): 7(ptr) Variable Function 23(c111110_10): 7(ptr) Variable Function 25(c111110_11): 7(ptr) Variable Function 27(c111110_11_2): 7(ptr) Variable Function 28(c111111_00): 7(ptr) Variable Function Store 8(c011110_00) 9 Store 10(c011110_01) 11 Store 12(c011110_10) 13 Store 14(c011110_11) 15 Store 16(c011110_11_2) 15 Store 17(c011111_00) 18 Store 19(c111110_00) 20 Store 21(c111110_01) 22 Store 23(c111110_10) 24 Store 25(c111110_11) 26 Store 27(c111110_11_2) 26 Store 28(c111111_00) 29 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.floate5m2_error.comp.out000066400000000000000000000072031506534232700237550ustar00rootroot00000000000000spv.floate5m2_error.comp ERROR: 0:32: 'assign' : cannot convert from ' temp uint8_t' to ' temp floate5m2_t' ERROR: 0:33: 'assign' : cannot convert from ' temp uint16_t' to ' temp floate5m2_t' ERROR: 0:34: 'assign' : cannot convert from ' temp highp uint' to ' temp floate5m2_t' ERROR: 0:35: 'assign' : cannot convert from ' temp uint64_t' to ' temp floate5m2_t' ERROR: 0:36: 'assign' : cannot convert from ' temp int8_t' to ' temp floate5m2_t' ERROR: 0:37: 'assign' : cannot convert from ' temp int16_t' to ' temp floate5m2_t' ERROR: 0:38: 'assign' : cannot convert from ' temp highp int' to ' temp floate5m2_t' ERROR: 0:39: 'assign' : cannot convert from ' temp int64_t' to ' temp floate5m2_t' ERROR: 0:41: 'assign' : cannot convert from ' temp float16_t' to ' temp floate5m2_t' ERROR: 0:42: 'assign' : cannot convert from ' temp highp float' to ' temp floate5m2_t' ERROR: 0:43: 'assign' : cannot convert from ' temp double' to ' temp floate5m2_t' ERROR: 0:44: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp uint8_t' ERROR: 0:45: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp uint16_t' ERROR: 0:46: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp highp uint' ERROR: 0:47: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp uint64_t' ERROR: 0:48: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp int8_t' ERROR: 0:49: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp int16_t' ERROR: 0:50: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp highp int' ERROR: 0:51: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp int64_t' ERROR: 0:57: 'b2' : undeclared identifier ERROR: 0:57: 'dot' : no matching overloaded function found ERROR: 0:59: 'funcfp8' : no matching overloaded function found ERROR: 0:60: 'funcfp8' : no matching overloaded function found ERROR: 0:61: 'funcfp8' : no matching overloaded function found ERROR: 0:63: 'constructor' : can't convert ERROR: 0:63: ' temp bool' : cannot construct with these arguments ERROR: 0:63: '=' : cannot convert from ' const float' to ' temp bool' ERROR: 0:64: 'constructor' : can't convert ERROR: 0:64: ' temp floate5m2_t' : cannot construct with these arguments ERROR: 0:64: 'assign' : cannot convert from ' const float' to ' temp floate5m2_t' ERROR: 0:66: '++' : wrong operand type no operation '++' exists that takes an operand of type temp floate5m2_t (or there is no acceptable conversion) ERROR: 0:67: '--' : wrong operand type no operation '--' exists that takes an operand of type temp floate5m2_t (or there is no acceptable conversion) ERROR: 0:68: '-' : wrong operand type no operation '-' exists that takes an operand of type temp floate5m2_t (or there is no acceptable conversion) ERROR: 0:71: 'assign' : cannot convert from ' temp bfloat16_t' to ' temp floate5m2_t' ERROR: 0:74: '' : second parameter must not have floate5m2 or floate4m3 basic type ERROR: 0:75: '' : requires exactly two parameters ERROR: 0:76: '' : types must match other than scalar type and coopmat Use ERROR: 0:77: '' : first parameter must have floate5m2 or floate4m3 basic type ERROR: 0:79: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp floate5m2_t' and a right operand of type ' temp floate5m2_t' (or there is no acceptable conversion) ERROR: 0:81: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 16, 16, 0> floate5m2_t' and a right operand of type ' temp coopmat<3, 16, 16, 0> floate5m2_t' (or there is no acceptable conversion) ERROR: 40 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.flowControl.frag.out000066400000000000000000000070321506534232700232370ustar00rootroot00000000000000spv.flowControl.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 14 17 19 25 30 35 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "color" Name 11 "BaseColor" Name 13 "color2" Name 14 "otherColor" Name 17 "c" Name 19 "d" Name 25 "bigColor" Name 30 "smallColor" Name 35 "gl_FragColor" Decorate 11(BaseColor) Location 5 Decorate 14(otherColor) Location 3 Decorate 17(c) Location 4 Decorate 19(d) Location 0 Decorate 25(bigColor) Location 1 Decorate 30(smallColor) Location 2 Decorate 35(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input 14(otherColor): 10(ptr) Variable Input 16: TypePointer Input 6(float) 17(c): 16(ptr) Variable Input 19(d): 16(ptr) Variable Input 21: TypeBool 25(bigColor): 10(ptr) Variable Input 30(smallColor): 10(ptr) Variable Input 34: TypePointer Output 7(fvec4) 35(gl_FragColor): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 13(color2): 8(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 15: 7(fvec4) Load 14(otherColor) Store 13(color2) 15 18: 6(float) Load 17(c) 20: 6(float) Load 19(d) 22: 21(bool) FOrdGreaterThan 18 20 SelectionMerge 24 None BranchConditional 22 23 29 23: Label 26: 7(fvec4) Load 25(bigColor) 27: 7(fvec4) Load 9(color) 28: 7(fvec4) FAdd 27 26 Store 9(color) 28 Branch 24 29: Label 31: 7(fvec4) Load 30(smallColor) 32: 7(fvec4) Load 9(color) 33: 7(fvec4) FAdd 32 31 Store 9(color) 33 Branch 24 24: Label 36: 7(fvec4) Load 9(color) 37: 7(fvec4) Load 13(color2) 38: 7(fvec4) FMul 36 37 Store 35(gl_FragColor) 38 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.for-complex-condition.vert.out000066400000000000000000000047641506534232700252200ustar00rootroot00000000000000spv.for-complex-condition.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 17 27 Source GLSL 450 Name 4 "main" Name 8 "i" Name 17 "flag" Name 27 "r" Decorate 17(flag) RelaxedPrecision Decorate 17(flag) Location 0 Decorate 18 RelaxedPrecision Decorate 27(r) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: TypePointer Input 6(int) 17(flag): 16(ptr) Variable Input 19: 6(int) Constant 1 20: TypeBool 22: 6(int) Constant 10 23: 6(int) Constant 15 26: TypePointer Output 6(int) 27(r): 26(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 6(int) Load 17(flag) 21: 20(bool) IEqual 18 19 24: 6(int) Select 21 22 23 25: 20(bool) SLessThan 15 24 BranchConditional 25 11 12 11: Label 28: 6(int) Load 8(i) Store 27(r) 28 Branch 13 13: Label 29: 6(int) Load 8(i) 30: 6(int) IAdd 29 19 Store 8(i) 30 Branch 10 12: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.for-continue-break.vert.out000066400000000000000000000066731506534232700244740ustar00rootroot00000000000000spv.for-continue-break.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source ESSL 310 Name 4 "main" Name 8 "i" Name 19 "A" Name 27 "B" Name 29 "C" Name 36 "D" Name 38 "E" Name 39 "F" Name 43 "G" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 10 17: TypeBool 20: 6(int) Constant 1 22: 6(int) Constant 2 31: 6(int) Constant 3 40: 6(int) Constant 12 44: 6(int) Constant 99 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function 19(A): 7(ptr) Variable Function 27(B): 7(ptr) Variable Function 29(C): 7(ptr) Variable Function 36(D): 7(ptr) Variable Function 38(E): 7(ptr) Variable Function 39(F): 7(ptr) Variable Function 43(G): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label Store 19(A) 20 21: 6(int) Load 8(i) 23: 6(int) SMod 21 22 24: 17(bool) IEqual 23 9 SelectionMerge 26 None BranchConditional 24 25 26 25: Label Store 27(B) 20 Branch 13 26: Label 30: 6(int) Load 8(i) 32: 6(int) SMod 30 31 33: 17(bool) IEqual 32 9 SelectionMerge 35 None BranchConditional 33 34 35 34: Label Store 36(D) 20 Branch 12 35: Label Store 39(F) 40 Branch 13 13: Label 41: 6(int) Load 8(i) 42: 6(int) IAdd 41 20 Store 8(i) 42 Branch 10 12: Label Store 43(G) 44 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.for-nobody.vert.out000066400000000000000000000037521506534232700230530ustar00rootroot00000000000000spv.for-nobody.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 23 Source GLSL 450 Name 4 "main" Name 8 "i" Name 23 "r" Decorate 23(r) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 10 17: TypeBool 20: 6(int) Constant 1 22: TypePointer Output 6(int) 23(r): 22(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label Branch 13 13: Label 19: 6(int) Load 8(i) 21: 6(int) IAdd 19 20 Store 8(i) 21 Branch 10 12: Label 24: 6(int) Load 8(i) Store 23(r) 24 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.for-notest.vert.out000066400000000000000000000033351506534232700230720ustar00rootroot00000000000000spv.for-notest.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 15 Source GLSL 450 Name 4 "main" Name 8 "i" Name 15 "r" Decorate 15(r) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 14: TypePointer Output 6(int) 15(r): 14(ptr) Variable Output 18: 6(int) Constant 1 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 11 11: Label 16: 6(int) Load 8(i) Store 15(r) 16 Branch 13 13: Label 17: 6(int) Load 8(i) 19: 6(int) IAdd 17 18 Store 8(i) 19 Branch 10 12: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/spv.for-simple.vert.out000066400000000000000000000035751506534232700230550ustar00rootroot00000000000000spv.for-simple.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source ESSL 310 Name 4 "main" Name 8 "i" Name 19 "j" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 10 17: TypeBool 20: 6(int) Constant 12 22: 6(int) Constant 1 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function 19(j): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label Store 19(j) 20 Branch 13 13: Label 21: 6(int) Load 8(i) 23: 6(int) IAdd 21 22 Store 8(i) 23 Branch 10 12: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.forLoop.frag.out000066400000000000000000000247651506534232700223630ustar00rootroot00000000000000spv.forLoop.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 143 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 24 28 36 53 111 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "color" Name 11 "BaseColor" Name 15 "i" Name 24 "Count" Name 28 "bigColor" Name 36 "gl_FragColor" Name 39 "sum" Name 41 "i" Name 53 "v4" Name 63 "i" Name 71 "tv4" Name 88 "r" Name 101 "i" Name 111 "f" Name 129 "i" Decorate 11(BaseColor) Location 1 Decorate 24(Count) Flat Decorate 24(Count) Location 3 Decorate 28(bigColor) Location 0 Decorate 36(gl_FragColor) Location 0 Decorate 53(v4) Flat Decorate 53(v4) Location 4 Decorate 111(f) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input 13: TypeInt 32 1 14: TypePointer Function 13(int) 16: 13(int) Constant 0 23: TypePointer Input 13(int) 24(Count): 23(ptr) Variable Input 26: TypeBool 28(bigColor): 10(ptr) Variable Input 33: 13(int) Constant 1 35: TypePointer Output 7(fvec4) 36(gl_FragColor): 35(ptr) Variable Output 38: TypePointer Function 6(float) 40: 6(float) Constant 0 48: 13(int) Constant 4 50: TypeInt 32 0 51: TypeVector 50(int) 4 52: TypePointer Input 51(ivec4) 53(v4): 52(ptr) Variable Input 55: TypePointer Input 50(int) 76: 50(int) Constant 4 89: TypeVector 6(float) 3 92: 50(int) Constant 0 95: 50(int) Constant 1 98: 50(int) Constant 2 110: TypePointer Input 6(float) 111(f): 110(ptr) Variable Input 113: 50(int) Constant 3 122: TypePointer Output 6(float) 136: 13(int) Constant 16 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 15(i): 14(ptr) Variable Function 39(sum): 38(ptr) Variable Function 41(i): 14(ptr) Variable Function 63(i): 14(ptr) Variable Function 71(tv4): 8(ptr) Variable Function 88(r): 8(ptr) Variable Function 101(i): 14(ptr) Variable Function 129(i): 14(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 Store 15(i) 16 Branch 17 17: Label LoopMerge 19 20 None Branch 21 21: Label 22: 13(int) Load 15(i) 25: 13(int) Load 24(Count) 27: 26(bool) SLessThan 22 25 BranchConditional 27 18 19 18: Label 29: 7(fvec4) Load 28(bigColor) 30: 7(fvec4) Load 9(color) 31: 7(fvec4) FAdd 30 29 Store 9(color) 31 Branch 20 20: Label 32: 13(int) Load 15(i) 34: 13(int) IAdd 32 33 Store 15(i) 34 Branch 17 19: Label 37: 7(fvec4) Load 9(color) Store 36(gl_FragColor) 37 Store 39(sum) 40 Store 41(i) 16 Branch 42 42: Label LoopMerge 44 45 None Branch 46 46: Label 47: 13(int) Load 41(i) 49: 26(bool) SLessThan 47 48 BranchConditional 49 43 44 43: Label 54: 13(int) Load 41(i) 56: 55(ptr) AccessChain 53(v4) 54 57: 50(int) Load 56 58: 6(float) ConvertUToF 57 59: 6(float) Load 39(sum) 60: 6(float) FAdd 59 58 Store 39(sum) 60 Branch 45 45: Label 61: 13(int) Load 41(i) 62: 13(int) IAdd 61 33 Store 41(i) 62 Branch 42 44: Label Store 63(i) 16 Branch 64 64: Label LoopMerge 66 67 None Branch 68 68: Label 69: 13(int) Load 63(i) 70: 26(bool) SLessThan 69 48 BranchConditional 70 65 66 65: Label 72: 13(int) Load 63(i) 73: 13(int) Load 63(i) 74: 55(ptr) AccessChain 53(v4) 73 75: 50(int) Load 74 77: 50(int) IMul 75 76 78: 6(float) ConvertUToF 77 79: 38(ptr) AccessChain 71(tv4) 72 Store 79 78 Branch 67 67: Label 80: 13(int) Load 63(i) 81: 13(int) IAdd 80 33 Store 63(i) 81 Branch 64 66: Label 82: 6(float) Load 39(sum) 83: 7(fvec4) CompositeConstruct 82 82 82 82 84: 7(fvec4) Load 71(tv4) 85: 7(fvec4) FAdd 83 84 86: 7(fvec4) Load 36(gl_FragColor) 87: 7(fvec4) FAdd 86 85 Store 36(gl_FragColor) 87 90: 7(fvec4) Load 11(BaseColor) 91: 89(fvec3) VectorShuffle 90 90 0 1 2 93: 38(ptr) AccessChain 88(r) 92 94: 6(float) CompositeExtract 91 0 Store 93 94 96: 38(ptr) AccessChain 88(r) 95 97: 6(float) CompositeExtract 91 1 Store 96 97 99: 38(ptr) AccessChain 88(r) 98 100: 6(float) CompositeExtract 91 2 Store 99 100 Store 101(i) 16 Branch 102 102: Label LoopMerge 104 105 None Branch 106 106: Label 107: 13(int) Load 101(i) 108: 13(int) Load 24(Count) 109: 26(bool) SLessThan 107 108 BranchConditional 109 103 104 103: Label 112: 6(float) Load 111(f) 114: 38(ptr) AccessChain 88(r) 113 Store 114 112 Branch 105 105: Label 115: 13(int) Load 101(i) 116: 13(int) IAdd 115 33 Store 101(i) 116 Branch 102 104: Label 117: 7(fvec4) Load 88(r) 118: 89(fvec3) VectorShuffle 117 117 0 1 2 119: 7(fvec4) Load 36(gl_FragColor) 120: 89(fvec3) VectorShuffle 119 119 0 1 2 121: 89(fvec3) FAdd 120 118 123: 122(ptr) AccessChain 36(gl_FragColor) 92 124: 6(float) CompositeExtract 121 0 Store 123 124 125: 122(ptr) AccessChain 36(gl_FragColor) 95 126: 6(float) CompositeExtract 121 1 Store 125 126 127: 122(ptr) AccessChain 36(gl_FragColor) 98 128: 6(float) CompositeExtract 121 2 Store 127 128 Store 129(i) 16 Branch 130 130: Label LoopMerge 132 133 None Branch 134 134: Label 135: 13(int) Load 129(i) 137: 26(bool) SLessThan 135 136 BranchConditional 137 131 132 131: Label 138: 6(float) Load 111(f) 139: 7(fvec4) Load 36(gl_FragColor) 140: 7(fvec4) VectorTimesScalar 139 138 Store 36(gl_FragColor) 140 Branch 133 133: Label 141: 13(int) Load 129(i) 142: 13(int) IAdd 141 48 Store 129(i) 142 Branch 130 132: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.forwardFun.frag.out000066400000000000000000000133451506534232700230500ustar00rootroot00000000000000spv.forwardFun.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 20 30 36 59 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 6 "bar(" Name 10 "unreachableReturn(" Name 16 "foo(vf4;" Name 15 "bar" Name 18 "color" Name 20 "BaseColor" Name 21 "param" Name 27 "f" Name 30 "gl_FragColor" Name 36 "d" Name 59 "bigColor" Decorate 10(unreachableReturn() RelaxedPrecision Decorate 15(bar) RelaxedPrecision Decorate 16(foo(vf4;) RelaxedPrecision Decorate 18(color) RelaxedPrecision Decorate 20(BaseColor) RelaxedPrecision Decorate 20(BaseColor) Location 1 Decorate 21(param) RelaxedPrecision Decorate 22 RelaxedPrecision Decorate 23 RelaxedPrecision Decorate 24 RelaxedPrecision Decorate 27(f) RelaxedPrecision Decorate 28 RelaxedPrecision Decorate 30(gl_FragColor) RelaxedPrecision Decorate 30(gl_FragColor) Location 0 Decorate 31 RelaxedPrecision Decorate 32 RelaxedPrecision Decorate 33 RelaxedPrecision Decorate 36(d) RelaxedPrecision Decorate 36(d) Location 2 Decorate 37 RelaxedPrecision Decorate 52 RelaxedPrecision Decorate 55 RelaxedPrecision Decorate 56 RelaxedPrecision Decorate 59(bigColor) RelaxedPrecision Decorate 59(bigColor) Location 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeFunction 8(float) 12: TypeVector 8(float) 4 13: TypePointer Function 12(fvec4) 14: TypeFunction 8(float) 13(ptr) 19: TypePointer Input 12(fvec4) 20(BaseColor): 19(ptr) Variable Input 26: TypePointer Function 8(float) 29: TypePointer Output 12(fvec4) 30(gl_FragColor): 29(ptr) Variable Output 35: TypePointer Input 8(float) 36(d): 35(ptr) Variable Input 38: 8(float) Constant 1082549862 39: TypeBool 43: 8(float) Constant 1067030938 46: 8(float) Constant 1083179008 49: TypeInt 32 0 50: 49(int) Constant 0 53: 49(int) Constant 1 59(bigColor): 19(ptr) Variable Input 4(main): 2 Function None 3 5: Label 18(color): 13(ptr) Variable Function 21(param): 13(ptr) Variable Function 27(f): 26(ptr) Variable Function 22: 12(fvec4) Load 20(BaseColor) Store 21(param) 22 23: 8(float) FunctionCall 16(foo(vf4;) 21(param) 24: 12(fvec4) CompositeConstruct 23 23 23 23 Store 18(color) 24 25: 2 FunctionCall 6(bar() 28: 8(float) FunctionCall 10(unreachableReturn() Store 27(f) 28 31: 12(fvec4) Load 18(color) 32: 8(float) Load 27(f) 33: 12(fvec4) VectorTimesScalar 31 32 Store 30(gl_FragColor) 33 Return FunctionEnd 6(bar(): 2 Function None 3 7: Label Return FunctionEnd 10(unreachableReturn(): 8(float) Function None 9 11: Label 34: 2 FunctionCall 6(bar() 37: 8(float) Load 36(d) 40: 39(bool) FOrdLessThan 37 38 SelectionMerge 42 None BranchConditional 40 41 45 41: Label ReturnValue 43 45: Label ReturnValue 46 42: Label Unreachable FunctionEnd 16(foo(vf4;): 8(float) Function None 14 15(bar): 13(ptr) FunctionParameter 17: Label 51: 26(ptr) AccessChain 15(bar) 50 52: 8(float) Load 51 54: 26(ptr) AccessChain 15(bar) 53 55: 8(float) Load 54 56: 8(float) FAdd 52 55 ReturnValue 56 FunctionEnd glslang-16.0.0/Test/baseResults/spv.fp8_error.frag.out000066400000000000000000000010611506534232700226310ustar00rootroot00000000000000spv.fp8_error.frag ERROR: 0:10: 'fp8 types not allowed as input/output' : qualifier ERROR: 0:11: 'fp8 types not allowed as input/output' : qualifier ERROR: 0:12: 'fp8 types not allowed as input/output' : qualifier ERROR: 0:13: 'fp8 types not allowed as input/output' : qualifier ERROR: 0:19: 'assign' : cannot convert from ' temp floate4m3_t' to ' temp floate5m2_t' ERROR: 0:20: 'assign' : cannot convert from ' temp floate5m2_t' to ' temp floate4m3_t' ERROR: 6 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.fragmentDensity-es.frag.out000066400000000000000000000045551506534232700245060ustar00rootroot00000000000000spv.fragmentDensity-es.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader Capability FragmentDensityEXT Extension "SPV_EXT_fragment_invocation_density" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 11 14 16 ExecutionMode 4 OriginUpperLeft Source ESSL 310 SourceExtension "GL_EXT_fragment_invocation_density" Name 4 "main" Name 9 "FragSize" Name 11 "gl_FragSizeEXT" Name 14 "FragInvocationCount" Name 16 "gl_FragInvocationCountEXT" Decorate 9(FragSize) Location 0 Decorate 11(gl_FragSizeEXT) BuiltIn FragSizeEXT Decorate 11(gl_FragSizeEXT) Flat Decorate 14(FragInvocationCount) Location 2 Decorate 16(gl_FragInvocationCountEXT) BuiltIn FragInvocationCountEXT Decorate 16(gl_FragInvocationCountEXT) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 2 8: TypePointer Output 7(ivec2) 9(FragSize): 8(ptr) Variable Output 10: TypePointer Input 7(ivec2) 11(gl_FragSizeEXT): 10(ptr) Variable Input 13: TypePointer Output 6(int) 14(FragInvocationCount): 13(ptr) Variable Output 15: TypePointer Input 6(int) 16(gl_FragInvocationCountEXT): 15(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12: 7(ivec2) Load 11(gl_FragSizeEXT) Store 9(FragSize) 12 17: 6(int) Load 16(gl_FragInvocationCountEXT) Store 14(FragInvocationCount) 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.fragmentDensity-neg.frag.out000066400000000000000000000005301506534232700246350ustar00rootroot00000000000000spv.fragmentDensity-neg.frag ERROR: 0:10: 'gl_FragSizeEXT' : required extension not requested: GL_EXT_fragment_invocation_density ERROR: 0:11: 'gl_FragInvocationCountEXT' : required extension not requested: GL_EXT_fragment_invocation_density ERROR: 2 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.fragmentDensity.frag.out000066400000000000000000000047721506534232700241020ustar00rootroot00000000000000spv.fragmentDensity.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader Capability FragmentDensityEXT Extension "SPV_EXT_fragment_invocation_density" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 13 17 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_fragment_invocation_density" Name 4 "main" Name 9 "FragSize" Name 13 "gl_FragSizeEXT" Name 17 "FragInvocationCount" Name 19 "gl_FragInvocationCountEXT" Decorate 9(FragSize) Location 0 Decorate 13(gl_FragSizeEXT) BuiltIn FragSizeEXT Decorate 13(gl_FragSizeEXT) Flat Decorate 17(FragInvocationCount) Location 2 Decorate 19(gl_FragInvocationCountEXT) BuiltIn FragInvocationCountEXT Decorate 19(gl_FragInvocationCountEXT) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Output 7(fvec2) 9(FragSize): 8(ptr) Variable Output 10: TypeInt 32 1 11: TypeVector 10(int) 2 12: TypePointer Input 11(ivec2) 13(gl_FragSizeEXT): 12(ptr) Variable Input 16: TypePointer Output 10(int) 17(FragInvocationCount): 16(ptr) Variable Output 18: TypePointer Input 10(int) 19(gl_FragInvocationCountEXT): 18(ptr) Variable Input 4(main): 2 Function None 3 5: Label 14: 11(ivec2) Load 13(gl_FragSizeEXT) 15: 7(fvec2) ConvertSToF 14 Store 9(FragSize) 15 20: 10(int) Load 19(gl_FragInvocationCountEXT) Store 17(FragInvocationCount) 20 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.fragmentDensity.vert.out000066400000000000000000000007411506534232700241330ustar00rootroot00000000000000spv.fragmentDensity.vert ERROR: 0:10: 'gl_FragSizeEXT' : undeclared identifier ERROR: 0:10: 'assign' : cannot convert from ' temp float' to 'layout( location=0) smooth out highp 2-component vector of uint' ERROR: 0:11: 'gl_FragInvocationCountEXT' : undeclared identifier ERROR: 0:11: 'assign' : cannot convert from ' temp float' to 'layout( location=2) smooth out highp int' ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.fragmentShaderBarycentric.frag.out000066400000000000000000000063701506534232700260530ustar00rootroot00000000000000spv.fragmentShaderBarycentric.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader Capability FragmentBarycentricKHR Extension "SPV_NV_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_NV_fragment_shader_barycentric" Name 4 "main" Name 8 "value" Name 11 "gl_BaryCoordNV" Name 17 "vertices" MemberName 17(vertices) 0 "attrib" Name 21 "v" Decorate 8(value) Location 1 Decorate 11(gl_BaryCoordNV) 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_BaryCoordNV): 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_BaryCoordNV) 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_BaryCoordNV) 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_BaryCoordNV) 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 glslang-16.0.0/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out000066400000000000000000000104241506534232700261300ustar00rootroot00000000000000spv.fragmentShaderBarycentric2.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader Capability FragmentBarycentricKHR Extension "SPV_NV_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_NV_fragment_shader_barycentric" Name 4 "main" Name 8 "value" Name 11 "gl_BaryCoordNoPerspNV" Name 20 "vertexIDs" Name 44 "vertexIDs2" Decorate 8(value) Location 1 Decorate 11(gl_BaryCoordNoPerspNV) 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_BaryCoordNoPerspNV): 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_BaryCoordNoPerspNV) 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_BaryCoordNoPerspNV) 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_BaryCoordNoPerspNV) 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_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 glslang-16.0.0/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out000066400000000000000000000064011506534232700261310ustar00rootroot00000000000000spv.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 glslang-16.0.0/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out000066400000000000000000000104371506534232700261360ustar00rootroot00000000000000spv.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 glslang-16.0.0/Test/baseResults/spv.fsi.frag.out000066400000000000000000000054611506534232700215140ustar00rootroot00000000000000spv.fsi.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader Capability FragmentShaderSampleInterlockEXT Extension "SPV_EXT_fragment_shader_interlock" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft ExecutionMode 4 SampleInterlockOrderedEXT Source GLSL 450 SourceExtension "GL_ARB_fragment_shader_interlock" Name 4 "main" Name 7 "B1" MemberName 7(B1) 0 "x" Name 9 "b1" Name 17 "im" Decorate 7(B1) BufferBlock MemberDecorate 7(B1) 0 Coherent MemberDecorate 7(B1) 0 Offset 0 Decorate 9(b1) Coherent Decorate 9(b1) Binding 0 Decorate 9(b1) DescriptorSet 0 Decorate 17(im) Coherent Decorate 17(im) Binding 1 Decorate 17(im) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7(B1): TypeStruct 6(int) 8: TypePointer Uniform 7(B1) 9(b1): 8(ptr) Variable Uniform 10: 6(int) Constant 0 11: 6(int) Constant 1 12: TypePointer Uniform 6(int) 14: TypeFloat 32 15: TypeImage 14(float) 2D nonsampled format:Rgba32f 16: TypePointer UniformConstant 15 17(im): 16(ptr) Variable UniformConstant 19: TypeVector 6(int) 2 20: 19(ivec2) ConstantComposite 10 10 21: TypeVector 14(float) 4 22: 14(float) Constant 0 23: 21(fvec4) ConstantComposite 22 22 22 22 4(main): 2 Function None 3 5: Label BeginInvocationInterlockEXT 13: 12(ptr) AccessChain 9(b1) 10 Store 13 11 18: 15 Load 17(im) ImageWrite 18 20 23 EndInvocationInterlockEXT Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.fsi_Error.frag.out000066400000000000000000000015001506534232700226530ustar00rootroot00000000000000spv.fsi_Error.frag ERROR: 0:4: 'pixel_interlock_ordered' : can only apply to 'in' ERROR: 0:7: 'pixel_interlock_unordered' : cannot change previously set fragment shader interlock ordering ERROR: 0:11: '' : beginInvocationInterlockARB() must be in main() ERROR: 0:12: '' : endInvocationInterlockARB() must be in main() ERROR: 0:17: '' : endInvocationInterlockARB() must only be called once ERROR: 0:18: '' : beginInvocationInterlockARB() must only be called once ERROR: 0:18: '' : beginInvocationInterlockARB() must be called before endInvocationInterlockARB() ERROR: 0:22: '' : endInvocationInterlockARB() cannot be placed after a return from main() ERROR: 0:22: '' : endInvocationInterlockARB() must only be called once ERROR: 9 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.fullyCovered.frag.out000066400000000000000000000035311506534232700233720ustar00rootroot00000000000000spv.fullyCovered.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader Capability FragmentFullyCoveredEXT Extension "SPV_EXT_fragment_fully_covered" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 12 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_NV_conservative_raster_underestimation" Name 4 "main" Name 9 "color" Name 12 "gl_FragFullyCoveredNV" Decorate 9(color) Location 0 Decorate 12(gl_FragFullyCoveredNV) BuiltIn FullyCoveredEXT 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: TypeBool 11: TypePointer Input 10(bool) 12(gl_FragFullyCoveredNV): 11(ptr) Variable Input 14: 6(float) Constant 0 15: 6(float) Constant 1065353216 4(main): 2 Function None 3 5: Label 13: 10(bool) Load 12(gl_FragFullyCoveredNV) 16: 6(float) Select 13 15 14 17: 7(fvec4) CompositeConstruct 16 14 14 14 Store 9(color) 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.funcall.array.frag.out000066400000000000000000000116251506534232700234730ustar00rootroot00000000000000spv.funcall.array.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 27 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 16 "f(vf4[9];i1;" Name 14 "a" Name 15 "ix" Name 20 "indexable" Name 27 "color" Name 29 "ub" MemberName 29(ub) 0 "u" Name 31 "" Name 37 "arg" Name 64 "param" Decorate 27(color) Location 0 Decorate 28 ArrayStride 16 Decorate 29(ub) Block MemberDecorate 29(ub) 0 Offset 0 Decorate 31 Binding 0 Decorate 31 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 9 10: TypeArray 7(fvec4) 9 11: TypeInt 32 1 12: TypePointer Function 11(int) 13: TypeFunction 7(fvec4) 10 12(ptr) 19: TypePointer Function 10 21: TypePointer Function 7(fvec4) 26: TypePointer Output 7(fvec4) 27(color): 26(ptr) Variable Output 28: TypeArray 7(fvec4) 9 29(ub): TypeStruct 28 30: TypePointer Uniform 29(ub) 31: 30(ptr) Variable Uniform 32: 11(int) Constant 0 33: TypePointer Uniform 28 36: 11(int) Constant 2 41: 11(int) Constant 1 46: 11(int) Constant 3 49: 11(int) Constant 4 52: 11(int) Constant 5 55: 11(int) Constant 6 58: 11(int) Constant 7 61: 11(int) Constant 8 4(main): 2 Function None 3 5: Label 37(arg): 19(ptr) Variable Function 64(param): 12(ptr) Variable Function 34: 33(ptr) AccessChain 31 32 35: 28 Load 34 38: 7(fvec4) CompositeExtract 35 0 39: 21(ptr) AccessChain 37(arg) 32 Store 39 38 40: 7(fvec4) CompositeExtract 35 1 42: 21(ptr) AccessChain 37(arg) 41 Store 42 40 43: 7(fvec4) CompositeExtract 35 2 44: 21(ptr) AccessChain 37(arg) 36 Store 44 43 45: 7(fvec4) CompositeExtract 35 3 47: 21(ptr) AccessChain 37(arg) 46 Store 47 45 48: 7(fvec4) CompositeExtract 35 4 50: 21(ptr) AccessChain 37(arg) 49 Store 50 48 51: 7(fvec4) CompositeExtract 35 5 53: 21(ptr) AccessChain 37(arg) 52 Store 53 51 54: 7(fvec4) CompositeExtract 35 6 56: 21(ptr) AccessChain 37(arg) 55 Store 56 54 57: 7(fvec4) CompositeExtract 35 7 59: 21(ptr) AccessChain 37(arg) 58 Store 59 57 60: 7(fvec4) CompositeExtract 35 8 62: 21(ptr) AccessChain 37(arg) 61 Store 62 60 63: 10 Load 37(arg) Store 64(param) 36 65: 7(fvec4) FunctionCall 16(f(vf4[9];i1;) 63 64(param) Store 27(color) 65 Return FunctionEnd 16(f(vf4[9];i1;): 7(fvec4) Function None 13 14(a): 10 FunctionParameter 15(ix): 12(ptr) FunctionParameter 17: Label 20(indexable): 19(ptr) Variable Function 18: 11(int) Load 15(ix) Store 20(indexable) 14(a) 22: 21(ptr) AccessChain 20(indexable) 18 23: 7(fvec4) Load 22 ReturnValue 23 FunctionEnd glslang-16.0.0/Test/baseResults/spv.functionCall.frag.out000066400000000000000000000135351506534232700233550ustar00rootroot00000000000000spv.functionCall.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release WARNING: 0:4: varying deprecated in version 130; may be removed in future release WARNING: 0:5: varying deprecated in version 130; may be removed in future release // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 76 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 35 58 69 75 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 11 "foo(vf4;" Name 10 "bar" Name 13 "bar(" Name 16 "unreachableReturn(" Name 18 "missingReturn(" Name 21 "h" Name 35 "d" Name 56 "color" Name 58 "BaseColor" Name 59 "param" Name 64 "f" Name 66 "g" Name 69 "gl_FragColor" Name 75 "bigColor" Decorate 35(d) Location 2 Decorate 58(BaseColor) Location 1 Decorate 69(gl_FragColor) Location 0 Decorate 75(bigColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 6(float) 8(ptr) 15: TypeFunction 6(float) 20: TypePointer Private 6(float) 21(h): 20(ptr) Variable Private 22: 6(float) Constant 0 23: TypeInt 32 0 24: 23(int) Constant 0 25: TypePointer Function 6(float) 28: 23(int) Constant 1 34: TypePointer Input 6(float) 35(d): 34(ptr) Variable Input 37: 6(float) Constant 1082549862 38: TypeBool 42: 6(float) Constant 1067030938 45: 6(float) Constant 1083179008 53: 6(float) Constant 1081711002 57: TypePointer Input 7(fvec4) 58(BaseColor): 57(ptr) Variable Input 68: TypePointer Output 7(fvec4) 69(gl_FragColor): 68(ptr) Variable Output 75(bigColor): 57(ptr) Variable Input 4(main): 2 Function None 3 5: Label 56(color): 8(ptr) Variable Function 59(param): 8(ptr) Variable Function 64(f): 25(ptr) Variable Function 66(g): 25(ptr) Variable Function Store 21(h) 22 60: 7(fvec4) Load 58(BaseColor) Store 59(param) 60 61: 6(float) FunctionCall 11(foo(vf4;) 59(param) 62: 7(fvec4) CompositeConstruct 61 61 61 61 Store 56(color) 62 63: 2 FunctionCall 13(bar() 65: 6(float) FunctionCall 16(unreachableReturn() Store 64(f) 65 67: 6(float) FunctionCall 18(missingReturn() Store 66(g) 67 70: 7(fvec4) Load 56(color) 71: 6(float) Load 64(f) 72: 7(fvec4) VectorTimesScalar 70 71 73: 6(float) Load 21(h) 74: 7(fvec4) VectorTimesScalar 72 73 Store 69(gl_FragColor) 74 Return FunctionEnd 11(foo(vf4;): 6(float) Function None 9 10(bar): 8(ptr) FunctionParameter 12: Label 26: 25(ptr) AccessChain 10(bar) 24 27: 6(float) Load 26 29: 25(ptr) AccessChain 10(bar) 28 30: 6(float) Load 29 31: 6(float) FAdd 27 30 ReturnValue 31 FunctionEnd 13(bar(): 2 Function None 3 14: Label Return FunctionEnd 16(unreachableReturn(): 6(float) Function None 15 17: Label 36: 6(float) Load 35(d) 39: 38(bool) FOrdLessThan 36 37 SelectionMerge 41 None BranchConditional 39 40 44 40: Label ReturnValue 42 44: Label ReturnValue 45 41: Label Unreachable FunctionEnd 18(missingReturn(): 6(float) Function None 15 19: Label 48: 6(float) Load 35(d) 49: 38(bool) FOrdLessThan 48 45 SelectionMerge 51 None BranchConditional 49 50 51 50: Label 52: 6(float) Load 35(d) Store 21(h) 52 ReturnValue 53 51: Label 55: 6(float) Undef ReturnValue 55 FunctionEnd glslang-16.0.0/Test/baseResults/spv.functionNestedOpaque.vert.out000066400000000000000000000061761506534232700251430ustar00rootroot00000000000000spv.functionNestedOpaque.vert Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source GLSL 450 Name 4 "main" Name 12 "foo(s21;" Name 11 "t" Name 14 "S" MemberName 14(S) 0 "s" Name 18 "barc(struct-S-s211;" Name 17 "p" Name 21 "bar(struct-S-s211;" Name 20 "p" Name 36 "si" Decorate 36(si) Binding 0 Decorate 36(si) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) 2D sampled format:Unknown 8: TypeSampledImage 7 9: TypePointer UniformConstant 8 10: TypeFunction 2 9(ptr) 14(S): TypeStruct 8 15: TypePointer UniformConstant 14(S) 16: TypeFunction 2 15(ptr) 24: TypeVector 6(float) 2 25: 6(float) Constant 1056964608 26: 24(fvec2) ConstantComposite 25 25 27: TypeVector 6(float) 4 28: 6(float) Constant 0 30: TypeInt 32 1 31: 30(int) Constant 0 36(si): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 37: 2 FunctionCall 18(barc(struct-S-s211;) 36(si) 38: 2 FunctionCall 21(bar(struct-S-s211;) 36(si) Return FunctionEnd 12(foo(s21;): 2 Function None 10 11(t): 9(ptr) FunctionParameter 13: Label 23: 8 Load 11(t) 29: 27(fvec4) ImageSampleExplicitLod 23 26 Lod 28 Return FunctionEnd 18(barc(struct-S-s211;): 2 Function None 16 17(p): 15(ptr) FunctionParameter 19: Label 32: 9(ptr) AccessChain 17(p) 31 33: 2 FunctionCall 12(foo(s21;) 32 Return FunctionEnd 21(bar(struct-S-s211;): 2 Function None 16 20(p): 15(ptr) FunctionParameter 22: Label 34: 9(ptr) AccessChain 20(p) 31 35: 2 FunctionCall 12(foo(s21;) 34 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.functionParameterTypes.frag.out000066400000000000000000000061271506534232700254460ustar00rootroot00000000000000spv.functionParameterTypes.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 29 "f(i81;u81;i161;u161;i641;u641;f161;" Name 22 "i8" Name 23 "u8" Name 24 "i16" Name 25 "u16" Name 26 "i64" Name 27 "u64" Name 28 "f16" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 7: TypePointer Function 6(int8_t) 8: TypeInt 8 0 9: TypePointer Function 8(int8_t) 10: TypeInt 16 1 11: TypePointer Function 10(int16_t) 12: TypeInt 16 0 13: TypePointer Function 12(int16_t) 14: TypeInt 64 1 15: TypePointer Function 14(int64_t) 16: TypeInt 64 0 17: TypePointer Function 16(int64_t) 18: TypeFloat 16 19: TypePointer Function 18(float16_t) 20: TypeInt 32 1 21: TypeFunction 20(int) 7(ptr) 9(ptr) 11(ptr) 13(ptr) 15(ptr) 17(ptr) 19(ptr) 31: 20(int) Constant 0 4(main): 2 Function None 3 5: Label Return FunctionEnd 29(f(i81;u81;i161;u161;i641;u641;f161;): 20(int) Function None 21 22(i8): 7(ptr) FunctionParameter 23(u8): 9(ptr) FunctionParameter 24(i16): 11(ptr) FunctionParameter 25(u16): 13(ptr) FunctionParameter 26(i64): 15(ptr) FunctionParameter 27(u64): 17(ptr) FunctionParameter 28(f16): 19(ptr) FunctionParameter 30: Label ReturnValue 31 FunctionEnd glslang-16.0.0/Test/baseResults/spv.functionSemantics.frag.out000066400000000000000000000247261506534232700244340ustar00rootroot00000000000000spv.functionSemantics.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 156 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 76 152 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 15 "foo(i1;i1;i1;i1;i1;i1;" Name 9 "a" Name 10 "b" Name 11 "c" Name 12 "d" Name 13 "e" Name 14 "f" Name 25 "foo2(f1;vf3;i1;" Name 22 "a" Name 23 "b" Name 24 "r" Name 28 "foo3(" Name 30 "sum" Name 76 "u" Name 89 "t" Name 92 "s" MemberName 92(s) 0 "t" Name 94 "f" Name 98 "color" Name 104 "e" Name 105 "param" Name 106 "param" Name 107 "param" Name 108 "param" Name 123 "ret" Name 125 "tempReturn" Name 130 "tempArg" Name 131 "param" Name 132 "param" Name 133 "param" Name 136 "arg" Name 152 "gl_FragColor" Decorate 76(u) Location 0 Decorate 152(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFunction 6(int) 7(ptr) 6(int) 7(ptr) 6(int) 7(ptr) 7(ptr) 17: TypeFloat 32 18: TypePointer Function 17(float) 19: TypeVector 17(float) 3 20: TypePointer Function 19(fvec3) 21: TypeFunction 6(int) 18(ptr) 20(ptr) 7(ptr) 27: TypeFunction 6(int) 38: 6(int) Constant 64 43: 6(int) Constant 1024 62: 17(float) Constant 1077936128 66: 17(float) Constant 1084227584 67: TypeInt 32 0 68: 67(int) Constant 1 75: TypePointer Input 17(float) 76(u): 75(ptr) Variable Input 78: 17(float) Constant 1078774989 79: TypeBool 84: 6(int) Constant 1000000 86: 6(int) Constant 2000000 90: 6(int) Constant 2 91: TypeVector 6(int) 4 92(s): TypeStruct 91(ivec4) 93: TypePointer Function 92(s) 95: 6(int) Constant 0 96: 6(int) Constant 32 99: 6(int) Constant 1 103: 6(int) Constant 8 115: 6(int) Constant 128 124: TypePointer Private 6(int) 125(tempReturn): 124(ptr) Variable Private 126: 17(float) Constant 1082130432 127: 17(float) Constant 1065353216 128: 17(float) Constant 1073741824 129: 19(fvec3) ConstantComposite 127 128 62 150: TypeVector 17(float) 4 151: TypePointer Output 150(fvec4) 152(gl_FragColor): 151(ptr) Variable Output 4(main): 2 Function None 3 5: Label 89(t): 7(ptr) Variable Function 94(f): 93(ptr) Variable Function 98(color): 7(ptr) Variable Function 104(e): 7(ptr) Variable Function 105(param): 7(ptr) Variable Function 106(param): 7(ptr) Variable Function 107(param): 7(ptr) Variable Function 108(param): 7(ptr) Variable Function 123(ret): 18(ptr) Variable Function 130(tempArg): 7(ptr) Variable Function 131(param): 18(ptr) Variable Function 132(param): 20(ptr) Variable Function 133(param): 7(ptr) Variable Function 136(arg): 18(ptr) Variable Function Store 89(t) 90 97: 7(ptr) AccessChain 94(f) 95 68 Store 97 96 100: 6(int) Load 89(t) 101: 6(int) Load 89(t) 102: 6(int) IAdd 100 101 Store 105(param) 99 Store 106(param) 102 109: 7(ptr) AccessChain 94(f) 95 68 110: 6(int) Load 109 Store 108(param) 110 111: 6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 105(param) 90 106(param) 103 107(param) 108(param) 112: 6(int) Load 107(param) Store 104(e) 112 113: 6(int) Load 108(param) 114: 7(ptr) AccessChain 94(f) 95 68 Store 114 113 Store 98(color) 111 116: 6(int) Load 104(e) 117: 7(ptr) AccessChain 94(f) 95 68 118: 6(int) Load 117 119: 6(int) IAdd 116 118 120: 6(int) IMul 115 119 121: 6(int) Load 98(color) 122: 6(int) IAdd 121 120 Store 98(color) 122 Store 131(param) 126 Store 132(param) 129 134: 6(int) FunctionCall 25(foo2(f1;vf3;i1;) 131(param) 132(param) 133(param) 135: 6(int) Load 133(param) Store 130(tempArg) 135 Store 125(tempReturn) 134 137: 6(int) Load 130(tempArg) 138: 17(float) ConvertSToF 137 Store 136(arg) 138 139: 6(int) Load 125(tempReturn) 140: 17(float) ConvertSToF 139 Store 123(ret) 140 141: 17(float) Load 123(ret) 142: 17(float) Load 136(arg) 143: 17(float) FAdd 141 142 144: 6(int) ConvertFToS 143 145: 6(int) Load 98(color) 146: 6(int) IAdd 145 144 Store 98(color) 146 147: 6(int) FunctionCall 28(foo3() 148: 6(int) Load 98(color) 149: 6(int) IAdd 148 147 Store 98(color) 149 153: 6(int) Load 98(color) 154: 17(float) ConvertSToF 153 155: 150(fvec4) CompositeConstruct 154 154 154 154 Store 152(gl_FragColor) 155 Return FunctionEnd 15(foo(i1;i1;i1;i1;i1;i1;): 6(int) Function None 8 9(a): 7(ptr) FunctionParameter 10(b): 6(int) FunctionParameter 11(c): 7(ptr) FunctionParameter 12(d): 6(int) FunctionParameter 13(e): 7(ptr) FunctionParameter 14(f): 7(ptr) FunctionParameter 16: Label 30(sum): 7(ptr) Variable Function 31: 6(int) Load 9(a) 32: 6(int) IAdd 31 10(b) 33: 6(int) Load 11(c) 34: 6(int) IAdd 32 33 35: 6(int) IAdd 34 12(d) 36: 6(int) Load 14(f) 37: 6(int) IAdd 35 36 Store 30(sum) 37 39: 6(int) Load 9(a) 40: 6(int) IMul 39 38 Store 9(a) 40 41: 6(int) Load 11(c) 42: 6(int) IMul 41 38 Store 11(c) 42 Store 13(e) 43 44: 6(int) Load 14(f) 45: 6(int) IMul 44 38 Store 14(f) 45 46: 6(int) Load 9(a) 47: 6(int) IMul 38 10(b) 48: 6(int) IAdd 46 47 49: 6(int) Load 11(c) 50: 6(int) IAdd 48 49 51: 6(int) IMul 38 12(d) 52: 6(int) IAdd 50 51 53: 6(int) Load 13(e) 54: 6(int) IAdd 52 53 55: 6(int) Load 14(f) 56: 6(int) IAdd 54 55 57: 6(int) Load 30(sum) 58: 6(int) IAdd 57 56 Store 30(sum) 58 59: 6(int) Load 30(sum) ReturnValue 59 FunctionEnd 25(foo2(f1;vf3;i1;): 6(int) Function None 21 22(a): 18(ptr) FunctionParameter 23(b): 20(ptr) FunctionParameter 24(r): 7(ptr) FunctionParameter 26: Label 63: 17(float) Load 22(a) 64: 17(float) FMul 62 63 65: 6(int) ConvertFToS 64 Store 24(r) 65 69: 18(ptr) AccessChain 23(b) 68 70: 17(float) Load 69 71: 17(float) FMul 66 70 72: 6(int) ConvertFToS 71 ReturnValue 72 FunctionEnd 28(foo3(): 6(int) Function None 27 29: Label 77: 17(float) Load 76(u) 80: 79(bool) FOrdGreaterThan 77 78 SelectionMerge 82 None BranchConditional 80 81 82 81: Label Kill 82: Label ReturnValue 86 FunctionEnd glslang-16.0.0/Test/baseResults/spv.glFragColor.frag.out000066400000000000000000000023011506534232700231220ustar00rootroot00000000000000spv.glFragColor.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 ExecutionMode 4 OriginLowerLeft Source GLSL 330 Name 4 "main" Name 9 "gl_FragColor" Decorate 9(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(gl_FragColor): 8(ptr) Variable Output 10: 6(float) Constant 1065353216 11: 7(fvec4) ConstantComposite 10 10 10 10 4(main): 2 Function None 3 5: Label Store 9(gl_FragColor) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.glsl.register.autoassign.frag.out000066400000000000000000000274241506534232700256760ustar00rootroot00000000000000spv.glsl.register.autoassign.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 142 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 137 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "Func1(" Name 11 "Func2(" Name 13 "Func2_unused(" Name 17 "g_tTex1" Name 21 "g_sSamp1" Name 27 "g_tTex2" Name 29 "g_sSamp2" Name 39 "g_tTex3" Name 46 "g_sSamp3" Name 64 "g_tTex4" Name 69 "g_sSamp4" Name 84 "g_tTex5" Name 86 "g_sSamp5" Name 93 "MyStruct_t" MemberName 93(MyStruct_t) 0 "a" MemberName 93(MyStruct_t) 1 "b" MemberName 93(MyStruct_t) 2 "c" Name 95 "myblock" MemberName 95(myblock) 0 "mystruct" MemberName 95(myblock) 1 "myvec4_a" MemberName 95(myblock) 2 "myvec4_b" MemberName 95(myblock) 3 "myint4_a" Name 97 "" Name 119 "g_tTex_unused1" Name 121 "g_sSamp_unused1" Name 126 "g_tTex_unused2" Name 128 "g_sSamp_unused2" Name 137 "FragColor" Name 141 "g_tTex_unused3" Decorate 17(g_tTex1) Binding 11 Decorate 17(g_tTex1) DescriptorSet 0 Decorate 21(g_sSamp1) Binding 5 Decorate 21(g_sSamp1) DescriptorSet 0 Decorate 27(g_tTex2) Binding 14 Decorate 27(g_tTex2) DescriptorSet 0 Decorate 29(g_sSamp2) Binding 6 Decorate 29(g_sSamp2) DescriptorSet 0 Decorate 39(g_tTex3) Binding 13 Decorate 39(g_tTex3) DescriptorSet 0 Decorate 46(g_sSamp3) Binding 7 Decorate 46(g_sSamp3) DescriptorSet 0 Decorate 64(g_tTex4) Binding 15 Decorate 64(g_tTex4) DescriptorSet 0 Decorate 69(g_sSamp4) Binding 8 Decorate 69(g_sSamp4) DescriptorSet 0 Decorate 84(g_tTex5) Binding 16 Decorate 84(g_tTex5) DescriptorSet 0 Decorate 86(g_sSamp5) Binding 9 Decorate 86(g_sSamp5) DescriptorSet 0 MemberDecorate 93(MyStruct_t) 0 Offset 0 MemberDecorate 93(MyStruct_t) 1 Offset 4 MemberDecorate 93(MyStruct_t) 2 Offset 16 Decorate 95(myblock) Block MemberDecorate 95(myblock) 0 Offset 0 MemberDecorate 95(myblock) 1 Offset 32 MemberDecorate 95(myblock) 2 Offset 48 MemberDecorate 95(myblock) 3 Offset 64 Decorate 97 Binding 24 Decorate 97 DescriptorSet 0 Decorate 119(g_tTex_unused1) Binding 10 Decorate 119(g_tTex_unused1) DescriptorSet 0 Decorate 121(g_sSamp_unused1) Binding 0 Decorate 121(g_sSamp_unused1) DescriptorSet 0 Decorate 126(g_tTex_unused2) Binding 12 Decorate 126(g_tTex_unused2) DescriptorSet 0 Decorate 128(g_sSamp_unused2) Binding 0 Decorate 128(g_sSamp_unused2) DescriptorSet 0 Decorate 137(FragColor) Location 0 Decorate 141(g_tTex_unused3) Binding 0 Decorate 141(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 15: TypeImage 6(float) 1D sampled format:Unknown 16: TypePointer UniformConstant 15 17(g_tTex1): 16(ptr) Variable UniformConstant 19: TypeSampler 20: TypePointer UniformConstant 19 21(g_sSamp1): 20(ptr) Variable UniformConstant 23: TypeSampledImage 15 25: 6(float) Constant 1036831949 27(g_tTex2): 16(ptr) Variable UniformConstant 29(g_sSamp2): 20(ptr) Variable UniformConstant 32: 6(float) Constant 1045220557 35: TypeInt 32 0 36: 35(int) Constant 2 37: TypeArray 15 36 38: TypePointer UniformConstant 37 39(g_tTex3): 38(ptr) Variable UniformConstant 40: TypeInt 32 1 41: 40(int) Constant 0 44: TypeArray 19 36 45: TypePointer UniformConstant 44 46(g_sSamp3): 45(ptr) Variable UniformConstant 50: 6(float) Constant 1050253722 53: 40(int) Constant 1 61: 35(int) Constant 3 62: TypeArray 15 61 63: TypePointer UniformConstant 62 64(g_tTex4): 63(ptr) Variable UniformConstant 67: TypeArray 19 61 68: TypePointer UniformConstant 67 69(g_sSamp4): 68(ptr) Variable UniformConstant 73: 6(float) Constant 1053609165 76: 40(int) Constant 2 84(g_tTex5): 16(ptr) Variable UniformConstant 86(g_sSamp5): 20(ptr) Variable UniformConstant 89: 6(float) Constant 1056964608 92: TypeVector 6(float) 3 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) 94: TypeVector 40(int) 4 95(myblock): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) 96: TypePointer Uniform 95(myblock) 97: 96(ptr) Variable Uniform 98: 35(int) Constant 1 99: TypePointer Uniform 6(float) 119(g_tTex_unused1): 16(ptr) Variable UniformConstant 121(g_sSamp_unused1): 20(ptr) Variable UniformConstant 124: 6(float) Constant 1066192077 126(g_tTex_unused2): 16(ptr) Variable UniformConstant 128(g_sSamp_unused2): 20(ptr) Variable UniformConstant 131: 6(float) Constant 1067030938 136: TypePointer Output 7(fvec4) 137(FragColor): 136(ptr) Variable Output 141(g_tTex_unused3): 16(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 138: 7(fvec4) FunctionCall 9(Func1() 139: 7(fvec4) FunctionCall 11(Func2() 140: 7(fvec4) FAdd 138 139 Store 137(FragColor) 140 Return FunctionEnd 9(Func1(): 7(fvec4) Function None 8 10: Label 18: 15 Load 17(g_tTex1) 22: 19 Load 21(g_sSamp1) 24: 23 SampledImage 18 22 26: 7(fvec4) ImageSampleImplicitLod 24 25 28: 15 Load 27(g_tTex2) 30: 19 Load 29(g_sSamp2) 31: 23 SampledImage 28 30 33: 7(fvec4) ImageSampleImplicitLod 31 32 34: 7(fvec4) FAdd 26 33 42: 16(ptr) AccessChain 39(g_tTex3) 41 43: 15 Load 42 47: 20(ptr) AccessChain 46(g_sSamp3) 41 48: 19 Load 47 49: 23 SampledImage 43 48 51: 7(fvec4) ImageSampleImplicitLod 49 50 52: 7(fvec4) FAdd 34 51 54: 16(ptr) AccessChain 39(g_tTex3) 53 55: 15 Load 54 56: 20(ptr) AccessChain 46(g_sSamp3) 53 57: 19 Load 56 58: 23 SampledImage 55 57 59: 7(fvec4) ImageSampleImplicitLod 58 50 60: 7(fvec4) FAdd 52 59 65: 16(ptr) AccessChain 64(g_tTex4) 53 66: 15 Load 65 70: 20(ptr) AccessChain 69(g_sSamp4) 53 71: 19 Load 70 72: 23 SampledImage 66 71 74: 7(fvec4) ImageSampleImplicitLod 72 73 75: 7(fvec4) FAdd 60 74 77: 16(ptr) AccessChain 64(g_tTex4) 76 78: 15 Load 77 79: 20(ptr) AccessChain 69(g_sSamp4) 76 80: 19 Load 79 81: 23 SampledImage 78 80 82: 7(fvec4) ImageSampleImplicitLod 81 73 83: 7(fvec4) FAdd 75 82 85: 15 Load 84(g_tTex5) 87: 19 Load 86(g_sSamp5) 88: 23 SampledImage 85 87 90: 7(fvec4) ImageSampleImplicitLod 88 89 91: 7(fvec4) FAdd 83 90 100: 99(ptr) AccessChain 97 41 76 98 101: 6(float) Load 100 102: 7(fvec4) CompositeConstruct 101 101 101 101 103: 7(fvec4) FAdd 91 102 ReturnValue 103 FunctionEnd 11(Func2(): 7(fvec4) Function None 8 12: Label 106: 15 Load 17(g_tTex1) 107: 19 Load 21(g_sSamp1) 108: 23 SampledImage 106 107 109: 7(fvec4) ImageSampleImplicitLod 108 25 110: 16(ptr) AccessChain 39(g_tTex3) 53 111: 15 Load 110 112: 20(ptr) AccessChain 46(g_sSamp3) 53 113: 19 Load 112 114: 23 SampledImage 111 113 115: 7(fvec4) ImageSampleImplicitLod 114 50 116: 7(fvec4) FAdd 109 115 ReturnValue 116 FunctionEnd 13(Func2_unused(): 7(fvec4) Function None 8 14: Label 120: 15 Load 119(g_tTex_unused1) 122: 19 Load 121(g_sSamp_unused1) 123: 23 SampledImage 120 122 125: 7(fvec4) ImageSampleImplicitLod 123 124 127: 15 Load 126(g_tTex_unused2) 129: 19 Load 128(g_sSamp_unused2) 130: 23 SampledImage 127 129 132: 7(fvec4) ImageSampleImplicitLod 130 131 133: 7(fvec4) FAdd 125 132 ReturnValue 133 FunctionEnd glslang-16.0.0/Test/baseResults/spv.glsl.register.noautoassign.frag.out000066400000000000000000000274311506534232700262310ustar00rootroot00000000000000spv.glsl.register.noautoassign.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 142 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 137 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "Func1(" Name 11 "Func2(" Name 13 "Func2_unused(" Name 17 "g_tTex1" Name 21 "g_sSamp1" Name 27 "g_tTex2" Name 29 "g_sSamp2" Name 39 "g_tTex3" Name 46 "g_sSamp3" Name 64 "g_tTex4" Name 69 "g_sSamp4" Name 84 "g_tTex5" Name 86 "g_sSamp5" Name 93 "MyStruct_t" MemberName 93(MyStruct_t) 0 "a" MemberName 93(MyStruct_t) 1 "b" MemberName 93(MyStruct_t) 2 "c" Name 95 "myblock" MemberName 95(myblock) 0 "mystruct" MemberName 95(myblock) 1 "myvec4_a" MemberName 95(myblock) 2 "myvec4_b" MemberName 95(myblock) 3 "myint4_a" Name 97 "" Name 119 "g_tTex_unused1" Name 121 "g_sSamp_unused1" Name 126 "g_tTex_unused2" Name 128 "g_sSamp_unused2" Name 137 "FragColor" Name 141 "g_tTex_unused3" Decorate 17(g_tTex1) Binding 17 Decorate 17(g_tTex1) DescriptorSet 0 Decorate 21(g_sSamp1) Binding 5 Decorate 21(g_sSamp1) DescriptorSet 0 Decorate 27(g_tTex2) Binding 18 Decorate 27(g_tTex2) DescriptorSet 0 Decorate 29(g_sSamp2) Binding 6 Decorate 29(g_sSamp2) DescriptorSet 0 Decorate 39(g_tTex3) Binding 19 Decorate 39(g_tTex3) DescriptorSet 0 Decorate 46(g_sSamp3) Binding 7 Decorate 46(g_sSamp3) DescriptorSet 0 Decorate 64(g_tTex4) Binding 20 Decorate 64(g_tTex4) DescriptorSet 0 Decorate 69(g_sSamp4) Binding 8 Decorate 69(g_sSamp4) DescriptorSet 0 Decorate 84(g_tTex5) Binding 21 Decorate 84(g_tTex5) DescriptorSet 0 Decorate 86(g_sSamp5) Binding 9 Decorate 86(g_sSamp5) DescriptorSet 0 MemberDecorate 93(MyStruct_t) 0 Offset 0 MemberDecorate 93(MyStruct_t) 1 Offset 4 MemberDecorate 93(MyStruct_t) 2 Offset 16 Decorate 95(myblock) Block MemberDecorate 95(myblock) 0 Offset 0 MemberDecorate 95(myblock) 1 Offset 32 MemberDecorate 95(myblock) 2 Offset 48 MemberDecorate 95(myblock) 3 Offset 64 Decorate 97 Binding 19 Decorate 97 DescriptorSet 0 Decorate 119(g_tTex_unused1) Binding 22 Decorate 119(g_tTex_unused1) DescriptorSet 0 Decorate 121(g_sSamp_unused1) Binding 10 Decorate 121(g_sSamp_unused1) DescriptorSet 0 Decorate 126(g_tTex_unused2) Binding 23 Decorate 126(g_tTex_unused2) DescriptorSet 0 Decorate 128(g_sSamp_unused2) Binding 11 Decorate 128(g_sSamp_unused2) DescriptorSet 0 Decorate 137(FragColor) Location 0 Decorate 141(g_tTex_unused3) Binding 24 Decorate 141(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 15: TypeImage 6(float) 1D sampled format:Unknown 16: TypePointer UniformConstant 15 17(g_tTex1): 16(ptr) Variable UniformConstant 19: TypeSampler 20: TypePointer UniformConstant 19 21(g_sSamp1): 20(ptr) Variable UniformConstant 23: TypeSampledImage 15 25: 6(float) Constant 1036831949 27(g_tTex2): 16(ptr) Variable UniformConstant 29(g_sSamp2): 20(ptr) Variable UniformConstant 32: 6(float) Constant 1045220557 35: TypeInt 32 0 36: 35(int) Constant 2 37: TypeArray 15 36 38: TypePointer UniformConstant 37 39(g_tTex3): 38(ptr) Variable UniformConstant 40: TypeInt 32 1 41: 40(int) Constant 0 44: TypeArray 19 36 45: TypePointer UniformConstant 44 46(g_sSamp3): 45(ptr) Variable UniformConstant 50: 6(float) Constant 1050253722 53: 40(int) Constant 1 61: 35(int) Constant 3 62: TypeArray 15 61 63: TypePointer UniformConstant 62 64(g_tTex4): 63(ptr) Variable UniformConstant 67: TypeArray 19 61 68: TypePointer UniformConstant 67 69(g_sSamp4): 68(ptr) Variable UniformConstant 73: 6(float) Constant 1053609165 76: 40(int) Constant 2 84(g_tTex5): 16(ptr) Variable UniformConstant 86(g_sSamp5): 20(ptr) Variable UniformConstant 89: 6(float) Constant 1056964608 92: TypeVector 6(float) 3 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) 94: TypeVector 40(int) 4 95(myblock): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) 96: TypePointer Uniform 95(myblock) 97: 96(ptr) Variable Uniform 98: 35(int) Constant 1 99: TypePointer Uniform 6(float) 119(g_tTex_unused1): 16(ptr) Variable UniformConstant 121(g_sSamp_unused1): 20(ptr) Variable UniformConstant 124: 6(float) Constant 1066192077 126(g_tTex_unused2): 16(ptr) Variable UniformConstant 128(g_sSamp_unused2): 20(ptr) Variable UniformConstant 131: 6(float) Constant 1067030938 136: TypePointer Output 7(fvec4) 137(FragColor): 136(ptr) Variable Output 141(g_tTex_unused3): 16(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 138: 7(fvec4) FunctionCall 9(Func1() 139: 7(fvec4) FunctionCall 11(Func2() 140: 7(fvec4) FAdd 138 139 Store 137(FragColor) 140 Return FunctionEnd 9(Func1(): 7(fvec4) Function None 8 10: Label 18: 15 Load 17(g_tTex1) 22: 19 Load 21(g_sSamp1) 24: 23 SampledImage 18 22 26: 7(fvec4) ImageSampleImplicitLod 24 25 28: 15 Load 27(g_tTex2) 30: 19 Load 29(g_sSamp2) 31: 23 SampledImage 28 30 33: 7(fvec4) ImageSampleImplicitLod 31 32 34: 7(fvec4) FAdd 26 33 42: 16(ptr) AccessChain 39(g_tTex3) 41 43: 15 Load 42 47: 20(ptr) AccessChain 46(g_sSamp3) 41 48: 19 Load 47 49: 23 SampledImage 43 48 51: 7(fvec4) ImageSampleImplicitLod 49 50 52: 7(fvec4) FAdd 34 51 54: 16(ptr) AccessChain 39(g_tTex3) 53 55: 15 Load 54 56: 20(ptr) AccessChain 46(g_sSamp3) 53 57: 19 Load 56 58: 23 SampledImage 55 57 59: 7(fvec4) ImageSampleImplicitLod 58 50 60: 7(fvec4) FAdd 52 59 65: 16(ptr) AccessChain 64(g_tTex4) 53 66: 15 Load 65 70: 20(ptr) AccessChain 69(g_sSamp4) 53 71: 19 Load 70 72: 23 SampledImage 66 71 74: 7(fvec4) ImageSampleImplicitLod 72 73 75: 7(fvec4) FAdd 60 74 77: 16(ptr) AccessChain 64(g_tTex4) 76 78: 15 Load 77 79: 20(ptr) AccessChain 69(g_sSamp4) 76 80: 19 Load 79 81: 23 SampledImage 78 80 82: 7(fvec4) ImageSampleImplicitLod 81 73 83: 7(fvec4) FAdd 75 82 85: 15 Load 84(g_tTex5) 87: 19 Load 86(g_sSamp5) 88: 23 SampledImage 85 87 90: 7(fvec4) ImageSampleImplicitLod 88 89 91: 7(fvec4) FAdd 83 90 100: 99(ptr) AccessChain 97 41 76 98 101: 6(float) Load 100 102: 7(fvec4) CompositeConstruct 101 101 101 101 103: 7(fvec4) FAdd 91 102 ReturnValue 103 FunctionEnd 11(Func2(): 7(fvec4) Function None 8 12: Label 106: 15 Load 17(g_tTex1) 107: 19 Load 21(g_sSamp1) 108: 23 SampledImage 106 107 109: 7(fvec4) ImageSampleImplicitLod 108 25 110: 16(ptr) AccessChain 39(g_tTex3) 53 111: 15 Load 110 112: 20(ptr) AccessChain 46(g_sSamp3) 53 113: 19 Load 112 114: 23 SampledImage 111 113 115: 7(fvec4) ImageSampleImplicitLod 114 50 116: 7(fvec4) FAdd 109 115 ReturnValue 116 FunctionEnd 13(Func2_unused(): 7(fvec4) Function None 8 14: Label 120: 15 Load 119(g_tTex_unused1) 122: 19 Load 121(g_sSamp_unused1) 123: 23 SampledImage 120 122 125: 7(fvec4) ImageSampleImplicitLod 123 124 127: 15 Load 126(g_tTex_unused2) 129: 19 Load 128(g_sSamp_unused2) 130: 23 SampledImage 127 129 132: 7(fvec4) ImageSampleImplicitLod 130 131 133: 7(fvec4) FAdd 125 132 ReturnValue 133 FunctionEnd glslang-16.0.0/Test/baseResults/spv.hlslDebugInfo.frag.out000066400000000000000000000047211506534232700234560ustar00rootroot00000000000000spv.hlslDebugInfo.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 19 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 5 "newMain" 17 1: String "spv.hlslDebugInfo.vert" Source HLSL 500 1 "// OpModuleProcessed entry-point newMain // OpModuleProcessed shift-sampler-binding 2 // OpModuleProcessed shift-texture-binding 4 // OpModuleProcessed shift-image-binding 1 // OpModuleProcessed shift-UBO-binding 6 // OpModuleProcessed shift-ssbo-binding 3 // OpModuleProcessed shift-uav-binding 5 // OpModuleProcessed no-storage-format // OpModuleProcessed resource-set-binding t0 0 0 // OpModuleProcessed auto-map-bindings // OpModuleProcessed auto-map-locations // OpModuleProcessed flatten-uniform-arrays // OpModuleProcessed hlsl-iomap // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed source-entrypoint origMain // OpModuleProcessed hlsl-offsets #line 1 float4 origMain() : SV_Position { return (float4)0; } " Name 5 "newMain" Name 10 "@newMain(" Name 17 "@entryPointOutput" Decorate 17(@entryPointOutput) BuiltIn Position 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypeFunction 8(fvec4) 12: 7(float) Constant 0 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 18: 8(fvec4) FunctionCall 10(@newMain() Store 17(@entryPointOutput) 18 Return FunctionEnd Line 1 2 1 10(@newMain(): 8(fvec4) Function None 9 11: Label Line 1 3 0 ReturnValue 13 FunctionEnd glslang-16.0.0/Test/baseResults/spv.hlslOffsets.vert.out000066400000000000000000000127701506534232700232710ustar00rootroot00000000000000spv.hlslOffsets.vert Shader version: 450 0:? Sequence 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:? Linker Objects 0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer highp float m0, layout( column_major std430) buffer highp 3-component vector of float m4, layout( column_major std430) buffer highp float m16, layout( column_major std430 offset=20) buffer highp 3-component vector of float m20, layout( column_major std430) buffer highp 3-component vector of float m32, layout( column_major std430) buffer highp 2-component vector of float m48, layout( column_major std430) buffer highp 2-component vector of float m56, layout( column_major std430) buffer highp float m64, layout( column_major std430) buffer highp 2-component vector of float m68, layout( column_major std430) buffer highp float m76, layout( column_major std430) buffer highp float m80, layout( column_major std430 offset=88) buffer highp 2-component vector of float m88, layout( column_major std430) buffer highp 2-component vector of float m96, layout( column_major std430) buffer 2-component vector of double m112}) Linked vertex stage: Shader version: 450 0:? Sequence 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:? Linker Objects 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): 8000b // Id's are bound by 14 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source GLSL 450 Name 4 "main" Name 11 "block" MemberName 11(block) 0 "m0" MemberName 11(block) 1 "m4" MemberName 11(block) 2 "m16" MemberName 11(block) 3 "m20" MemberName 11(block) 4 "m32" MemberName 11(block) 5 "m48" MemberName 11(block) 6 "m56" MemberName 11(block) 7 "m64" MemberName 11(block) 8 "m68" MemberName 11(block) 9 "m76" MemberName 11(block) 10 "m80" MemberName 11(block) 11 "m88" MemberName 11(block) 12 "m96" MemberName 11(block) 13 "m112" Name 13 "" Decorate 11(block) BufferBlock MemberDecorate 11(block) 0 Offset 0 MemberDecorate 11(block) 1 Offset 4 MemberDecorate 11(block) 2 Offset 16 MemberDecorate 11(block) 3 Offset 20 MemberDecorate 11(block) 4 Offset 32 MemberDecorate 11(block) 5 Offset 48 MemberDecorate 11(block) 6 Offset 56 MemberDecorate 11(block) 7 Offset 64 MemberDecorate 11(block) 8 Offset 68 MemberDecorate 11(block) 9 Offset 76 MemberDecorate 11(block) 10 Offset 80 MemberDecorate 11(block) 11 Offset 88 MemberDecorate 11(block) 12 Offset 96 MemberDecorate 11(block) 13 Offset 112 Decorate 13 Binding 0 Decorate 13 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeVector 6(float) 2 9: TypeFloat 64 10: TypeVector 9(float64_t) 2 11(block): TypeStruct 6(float) 7(fvec3) 6(float) 7(fvec3) 7(fvec3) 8(fvec2) 8(fvec2) 6(float) 8(fvec2) 6(float) 6(float) 8(fvec2) 8(fvec2) 10(f64vec2) 12: TypePointer Uniform 11(block) 13: 12(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.image.frag.out000066400000000000000000000670341506534232700220210ustar00rootroot00000000000000spv.image.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 405 Capability Shader Capability StorageImageMultisample Capability ImageCubeArray Capability ImageRect Capability Image1D Capability ImageBuffer Capability ImageMSArray Capability StorageImageExtendedFormats Capability ImageQuery Capability StorageImageWriteWithoutFormat 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 143 153 163 258 391 404 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "iv" Name 15 "i1D" Name 27 "i2D" Name 41 "i3D" Name 48 "iCube" Name 60 "iCubeArray" Name 67 "i2DRect" Name 79 "i1DArray" Name 91 "i2DArray" Name 98 "iBuffer" Name 107 "i2DMS" Name 119 "i2DMSArray" Name 138 "v" Name 143 "ic1D" Name 153 "ic2D" Name 163 "ic3D" Name 240 "ui" Name 243 "ii1D" Name 255 "ui2D" Name 258 "value" Name 367 "ii2DMS" Name 377 "ui2DMSArray" Name 386 "wo2D" Name 391 "fragData" Name 404 "ic4D" Decorate 15(i1D) Binding 0 Decorate 15(i1D) DescriptorSet 0 Decorate 27(i2D) Binding 1 Decorate 27(i2D) DescriptorSet 0 Decorate 41(i3D) Binding 2 Decorate 41(i3D) DescriptorSet 0 Decorate 48(iCube) Binding 3 Decorate 48(iCube) DescriptorSet 0 Decorate 60(iCubeArray) Binding 4 Decorate 60(iCubeArray) DescriptorSet 0 Decorate 67(i2DRect) Binding 5 Decorate 67(i2DRect) DescriptorSet 0 Decorate 79(i1DArray) Binding 6 Decorate 79(i1DArray) DescriptorSet 0 Decorate 91(i2DArray) Binding 7 Decorate 91(i2DArray) DescriptorSet 0 Decorate 98(iBuffer) Binding 8 Decorate 98(iBuffer) DescriptorSet 0 Decorate 107(i2DMS) Binding 9 Decorate 107(i2DMS) DescriptorSet 0 Decorate 119(i2DMSArray) Binding 10 Decorate 119(i2DMSArray) DescriptorSet 0 Decorate 143(ic1D) Flat Decorate 143(ic1D) Location 0 Decorate 153(ic2D) Flat Decorate 153(ic2D) Location 1 Decorate 163(ic3D) Flat Decorate 163(ic3D) Location 2 Decorate 243(ii1D) Binding 11 Decorate 243(ii1D) DescriptorSet 0 Decorate 255(ui2D) Binding 12 Decorate 255(ui2D) DescriptorSet 0 Decorate 258(value) Flat Decorate 258(value) Location 4 Decorate 367(ii2DMS) Binding 13 Decorate 367(ii2DMS) DescriptorSet 0 Decorate 377(ui2DMSArray) Binding 14 Decorate 377(ui2DMSArray) DescriptorSet 0 Decorate 386(wo2D) NonReadable Decorate 386(wo2D) Binding 1 Decorate 386(wo2D) DescriptorSet 0 Decorate 391(fragData) Location 0 Decorate 404(ic4D) Flat Decorate 404(ic4D) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: 6(int) Constant 0 11: 7(ivec3) ConstantComposite 10 10 10 12: TypeFloat 32 13: TypeImage 12(float) 1D nonsampled format:Rgba32f 14: TypePointer UniformConstant 13 15(i1D): 14(ptr) Variable UniformConstant 18: TypeInt 32 0 19: 18(int) Constant 0 20: TypePointer Function 6(int) 25: TypeImage 12(float) 2D nonsampled format:Rgba32f 26: TypePointer UniformConstant 25 27(i2D): 26(ptr) Variable UniformConstant 29: TypeVector 6(int) 2 36: 18(int) Constant 1 39: TypeImage 12(float) 3D nonsampled format:Rgba32f 40: TypePointer UniformConstant 39 41(i3D): 40(ptr) Variable UniformConstant 46: TypeImage 12(float) Cube nonsampled format:Rgba32f 47: TypePointer UniformConstant 46 48(iCube): 47(ptr) Variable UniformConstant 58: TypeImage 12(float) Cube array nonsampled format:Rgba32f 59: TypePointer UniformConstant 58 60(iCubeArray): 59(ptr) Variable UniformConstant 65: TypeImage 12(float) Rect nonsampled format:Rgba32f 66: TypePointer UniformConstant 65 67(i2DRect): 66(ptr) Variable UniformConstant 77: TypeImage 12(float) 1D array nonsampled format:Rgba32f 78: TypePointer UniformConstant 77 79(i1DArray): 78(ptr) Variable UniformConstant 89: TypeImage 12(float) 2D array nonsampled format:Rg16 90: TypePointer UniformConstant 89 91(i2DArray): 90(ptr) Variable UniformConstant 96: TypeImage 12(float) Buffer nonsampled format:Rgba32f 97: TypePointer UniformConstant 96 98(iBuffer): 97(ptr) Variable UniformConstant 105: TypeImage 12(float) 2D multi-sampled nonsampled format:Rgba32f 106: TypePointer UniformConstant 105 107(i2DMS): 106(ptr) Variable UniformConstant 117: TypeImage 12(float) 2D array multi-sampled nonsampled format:Rgba32f 118: TypePointer UniformConstant 117 119(i2DMSArray): 118(ptr) Variable UniformConstant 136: TypeVector 12(float) 4 137: TypePointer Function 136(fvec4) 139: 12(float) Constant 0 140: 136(fvec4) ConstantComposite 139 139 139 139 142: TypePointer Input 6(int) 143(ic1D): 142(ptr) Variable Input 152: TypePointer Input 29(ivec2) 153(ic2D): 152(ptr) Variable Input 162: TypePointer Input 7(ivec3) 163(ic3D): 162(ptr) Variable Input 221: 6(int) Constant 1 227: 6(int) Constant 2 231: 6(int) Constant 3 237: 6(int) Constant 4 239: TypePointer Function 18(int) 241: TypeImage 6(int) 1D nonsampled format:R32i 242: TypePointer UniformConstant 241 243(ii1D): 242(ptr) Variable UniformConstant 245: 6(int) Constant 10 246: TypePointer Image 6(int) 253: TypeImage 18(int) 2D nonsampled format:R32ui 254: TypePointer UniformConstant 253 255(ui2D): 254(ptr) Variable UniformConstant 257: TypePointer Input 18(int) 258(value): 257(ptr) Variable Input 260: TypePointer Image 18(int) 266: 6(int) Constant 11 280: 6(int) Constant 12 294: 6(int) Constant 13 308: 6(int) Constant 14 322: 6(int) Constant 15 336: 6(int) Constant 16 350: 6(int) Constant 18 351: 6(int) Constant 17 359: 18(int) Constant 19 365: TypeImage 6(int) 2D multi-sampled nonsampled format:R32i 366: TypePointer UniformConstant 365 367(ii2DMS): 366(ptr) Variable UniformConstant 375: TypeImage 18(int) 2D array multi-sampled nonsampled format:R32ui 376: TypePointer UniformConstant 375 377(ui2DMSArray): 376(ptr) Variable UniformConstant 384: TypeImage 12(float) 2D nonsampled format:Unknown 385: TypePointer UniformConstant 384 386(wo2D): 385(ptr) Variable UniformConstant 390: TypePointer Output 136(fvec4) 391(fragData): 390(ptr) Variable Output 396: TypeBool 399: TypeVector 396(bool) 4 402: TypeVector 6(int) 4 403: TypePointer Input 402(ivec4) 404(ic4D): 403(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(iv): 8(ptr) Variable Function 138(v): 137(ptr) Variable Function 240(ui): 239(ptr) Variable Function Store 9(iv) 11 16: 13 Load 15(i1D) 17: 6(int) ImageQuerySize 16 21: 20(ptr) AccessChain 9(iv) 19 22: 6(int) Load 21 23: 6(int) IAdd 22 17 24: 20(ptr) AccessChain 9(iv) 19 Store 24 23 28: 25 Load 27(i2D) 30: 29(ivec2) ImageQuerySize 28 31: 7(ivec3) Load 9(iv) 32: 29(ivec2) VectorShuffle 31 31 0 1 33: 29(ivec2) IAdd 32 30 34: 20(ptr) AccessChain 9(iv) 19 35: 6(int) CompositeExtract 33 0 Store 34 35 37: 20(ptr) AccessChain 9(iv) 36 38: 6(int) CompositeExtract 33 1 Store 37 38 42: 39 Load 41(i3D) 43: 7(ivec3) ImageQuerySize 42 44: 7(ivec3) Load 9(iv) 45: 7(ivec3) IAdd 44 43 Store 9(iv) 45 49: 46 Load 48(iCube) 50: 29(ivec2) ImageQuerySize 49 51: 7(ivec3) Load 9(iv) 52: 29(ivec2) VectorShuffle 51 51 0 1 53: 29(ivec2) IAdd 52 50 54: 20(ptr) AccessChain 9(iv) 19 55: 6(int) CompositeExtract 53 0 Store 54 55 56: 20(ptr) AccessChain 9(iv) 36 57: 6(int) CompositeExtract 53 1 Store 56 57 61: 58 Load 60(iCubeArray) 62: 7(ivec3) ImageQuerySize 61 63: 7(ivec3) Load 9(iv) 64: 7(ivec3) IAdd 63 62 Store 9(iv) 64 68: 65 Load 67(i2DRect) 69: 29(ivec2) ImageQuerySize 68 70: 7(ivec3) Load 9(iv) 71: 29(ivec2) VectorShuffle 70 70 0 1 72: 29(ivec2) IAdd 71 69 73: 20(ptr) AccessChain 9(iv) 19 74: 6(int) CompositeExtract 72 0 Store 73 74 75: 20(ptr) AccessChain 9(iv) 36 76: 6(int) CompositeExtract 72 1 Store 75 76 80: 77 Load 79(i1DArray) 81: 29(ivec2) ImageQuerySize 80 82: 7(ivec3) Load 9(iv) 83: 29(ivec2) VectorShuffle 82 82 0 1 84: 29(ivec2) IAdd 83 81 85: 20(ptr) AccessChain 9(iv) 19 86: 6(int) CompositeExtract 84 0 Store 85 86 87: 20(ptr) AccessChain 9(iv) 36 88: 6(int) CompositeExtract 84 1 Store 87 88 92: 89 Load 91(i2DArray) 93: 7(ivec3) ImageQuerySize 92 94: 7(ivec3) Load 9(iv) 95: 7(ivec3) IAdd 94 93 Store 9(iv) 95 99: 96 Load 98(iBuffer) 100: 6(int) ImageQuerySize 99 101: 20(ptr) AccessChain 9(iv) 19 102: 6(int) Load 101 103: 6(int) IAdd 102 100 104: 20(ptr) AccessChain 9(iv) 19 Store 104 103 108: 105 Load 107(i2DMS) 109: 29(ivec2) ImageQuerySize 108 110: 7(ivec3) Load 9(iv) 111: 29(ivec2) VectorShuffle 110 110 0 1 112: 29(ivec2) IAdd 111 109 113: 20(ptr) AccessChain 9(iv) 19 114: 6(int) CompositeExtract 112 0 Store 113 114 115: 20(ptr) AccessChain 9(iv) 36 116: 6(int) CompositeExtract 112 1 Store 115 116 120: 117 Load 119(i2DMSArray) 121: 7(ivec3) ImageQuerySize 120 122: 7(ivec3) Load 9(iv) 123: 7(ivec3) IAdd 122 121 Store 9(iv) 123 124: 105 Load 107(i2DMS) 125: 6(int) ImageQuerySamples 124 126: 20(ptr) AccessChain 9(iv) 19 127: 6(int) Load 126 128: 6(int) IAdd 127 125 129: 20(ptr) AccessChain 9(iv) 19 Store 129 128 130: 117 Load 119(i2DMSArray) 131: 6(int) ImageQuerySamples 130 132: 20(ptr) AccessChain 9(iv) 19 133: 6(int) Load 132 134: 6(int) IAdd 133 131 135: 20(ptr) AccessChain 9(iv) 19 Store 135 134 Store 138(v) 140 141: 13 Load 15(i1D) 144: 6(int) Load 143(ic1D) 145: 136(fvec4) ImageRead 141 144 146: 136(fvec4) Load 138(v) 147: 136(fvec4) FAdd 146 145 Store 138(v) 147 148: 13 Load 15(i1D) 149: 6(int) Load 143(ic1D) 150: 136(fvec4) Load 138(v) ImageWrite 148 149 150 151: 25 Load 27(i2D) 154: 29(ivec2) Load 153(ic2D) 155: 136(fvec4) ImageRead 151 154 156: 136(fvec4) Load 138(v) 157: 136(fvec4) FAdd 156 155 Store 138(v) 157 158: 25 Load 27(i2D) 159: 29(ivec2) Load 153(ic2D) 160: 136(fvec4) Load 138(v) ImageWrite 158 159 160 161: 39 Load 41(i3D) 164: 7(ivec3) Load 163(ic3D) 165: 136(fvec4) ImageRead 161 164 166: 136(fvec4) Load 138(v) 167: 136(fvec4) FAdd 166 165 Store 138(v) 167 168: 39 Load 41(i3D) 169: 7(ivec3) Load 163(ic3D) 170: 136(fvec4) Load 138(v) ImageWrite 168 169 170 171: 46 Load 48(iCube) 172: 7(ivec3) Load 163(ic3D) 173: 136(fvec4) ImageRead 171 172 174: 136(fvec4) Load 138(v) 175: 136(fvec4) FAdd 174 173 Store 138(v) 175 176: 46 Load 48(iCube) 177: 7(ivec3) Load 163(ic3D) 178: 136(fvec4) Load 138(v) ImageWrite 176 177 178 179: 58 Load 60(iCubeArray) 180: 7(ivec3) Load 163(ic3D) 181: 136(fvec4) ImageRead 179 180 182: 136(fvec4) Load 138(v) 183: 136(fvec4) FAdd 182 181 Store 138(v) 183 184: 58 Load 60(iCubeArray) 185: 7(ivec3) Load 163(ic3D) 186: 136(fvec4) Load 138(v) ImageWrite 184 185 186 187: 65 Load 67(i2DRect) 188: 29(ivec2) Load 153(ic2D) 189: 136(fvec4) ImageRead 187 188 190: 136(fvec4) Load 138(v) 191: 136(fvec4) FAdd 190 189 Store 138(v) 191 192: 65 Load 67(i2DRect) 193: 29(ivec2) Load 153(ic2D) 194: 136(fvec4) Load 138(v) ImageWrite 192 193 194 195: 77 Load 79(i1DArray) 196: 29(ivec2) Load 153(ic2D) 197: 136(fvec4) ImageRead 195 196 198: 136(fvec4) Load 138(v) 199: 136(fvec4) FAdd 198 197 Store 138(v) 199 200: 77 Load 79(i1DArray) 201: 29(ivec2) Load 153(ic2D) 202: 136(fvec4) Load 138(v) ImageWrite 200 201 202 203: 89 Load 91(i2DArray) 204: 7(ivec3) Load 163(ic3D) 205: 136(fvec4) ImageRead 203 204 206: 136(fvec4) Load 138(v) 207: 136(fvec4) FAdd 206 205 Store 138(v) 207 208: 89 Load 91(i2DArray) 209: 7(ivec3) Load 163(ic3D) 210: 136(fvec4) Load 138(v) ImageWrite 208 209 210 211: 96 Load 98(iBuffer) 212: 6(int) Load 143(ic1D) 213: 136(fvec4) ImageRead 211 212 214: 136(fvec4) Load 138(v) 215: 136(fvec4) FAdd 214 213 Store 138(v) 215 216: 96 Load 98(iBuffer) 217: 6(int) Load 143(ic1D) 218: 136(fvec4) Load 138(v) ImageWrite 216 217 218 219: 105 Load 107(i2DMS) 220: 29(ivec2) Load 153(ic2D) 222: 136(fvec4) ImageRead 219 220 Sample 221 223: 136(fvec4) Load 138(v) 224: 136(fvec4) FAdd 223 222 Store 138(v) 224 225: 105 Load 107(i2DMS) 226: 29(ivec2) Load 153(ic2D) 228: 136(fvec4) Load 138(v) ImageWrite 225 226 228 Sample 227 229: 117 Load 119(i2DMSArray) 230: 7(ivec3) Load 163(ic3D) 232: 136(fvec4) ImageRead 229 230 Sample 231 233: 136(fvec4) Load 138(v) 234: 136(fvec4) FAdd 233 232 Store 138(v) 234 235: 117 Load 119(i2DMSArray) 236: 7(ivec3) Load 163(ic3D) 238: 136(fvec4) Load 138(v) ImageWrite 235 236 238 Sample 237 Store 240(ui) 19 244: 6(int) Load 143(ic1D) 247: 246(ptr) ImageTexelPointer 243(ii1D) 244 19 248: 6(int) AtomicIAdd 247 36 19 245 249: 20(ptr) AccessChain 9(iv) 19 250: 6(int) Load 249 251: 6(int) IAdd 250 248 252: 20(ptr) AccessChain 9(iv) 19 Store 252 251 256: 29(ivec2) Load 153(ic2D) 259: 18(int) Load 258(value) 261: 260(ptr) ImageTexelPointer 255(ui2D) 256 19 262: 18(int) AtomicIAdd 261 36 19 259 263: 18(int) Load 240(ui) 264: 18(int) IAdd 263 262 Store 240(ui) 264 265: 6(int) Load 143(ic1D) 267: 246(ptr) ImageTexelPointer 243(ii1D) 265 19 268: 6(int) AtomicSMin 267 36 19 266 269: 20(ptr) AccessChain 9(iv) 19 270: 6(int) Load 269 271: 6(int) IAdd 270 268 272: 20(ptr) AccessChain 9(iv) 19 Store 272 271 273: 29(ivec2) Load 153(ic2D) 274: 18(int) Load 258(value) 275: 260(ptr) ImageTexelPointer 255(ui2D) 273 19 276: 18(int) AtomicUMin 275 36 19 274 277: 18(int) Load 240(ui) 278: 18(int) IAdd 277 276 Store 240(ui) 278 279: 6(int) Load 143(ic1D) 281: 246(ptr) ImageTexelPointer 243(ii1D) 279 19 282: 6(int) AtomicSMax 281 36 19 280 283: 20(ptr) AccessChain 9(iv) 19 284: 6(int) Load 283 285: 6(int) IAdd 284 282 286: 20(ptr) AccessChain 9(iv) 19 Store 286 285 287: 29(ivec2) Load 153(ic2D) 288: 18(int) Load 258(value) 289: 260(ptr) ImageTexelPointer 255(ui2D) 287 19 290: 18(int) AtomicUMax 289 36 19 288 291: 18(int) Load 240(ui) 292: 18(int) IAdd 291 290 Store 240(ui) 292 293: 6(int) Load 143(ic1D) 295: 246(ptr) ImageTexelPointer 243(ii1D) 293 19 296: 6(int) AtomicAnd 295 36 19 294 297: 20(ptr) AccessChain 9(iv) 19 298: 6(int) Load 297 299: 6(int) IAdd 298 296 300: 20(ptr) AccessChain 9(iv) 19 Store 300 299 301: 29(ivec2) Load 153(ic2D) 302: 18(int) Load 258(value) 303: 260(ptr) ImageTexelPointer 255(ui2D) 301 19 304: 18(int) AtomicAnd 303 36 19 302 305: 18(int) Load 240(ui) 306: 18(int) IAdd 305 304 Store 240(ui) 306 307: 6(int) Load 143(ic1D) 309: 246(ptr) ImageTexelPointer 243(ii1D) 307 19 310: 6(int) AtomicOr 309 36 19 308 311: 20(ptr) AccessChain 9(iv) 19 312: 6(int) Load 311 313: 6(int) IAdd 312 310 314: 20(ptr) AccessChain 9(iv) 19 Store 314 313 315: 29(ivec2) Load 153(ic2D) 316: 18(int) Load 258(value) 317: 260(ptr) ImageTexelPointer 255(ui2D) 315 19 318: 18(int) AtomicOr 317 36 19 316 319: 18(int) Load 240(ui) 320: 18(int) IAdd 319 318 Store 240(ui) 320 321: 6(int) Load 143(ic1D) 323: 246(ptr) ImageTexelPointer 243(ii1D) 321 19 324: 6(int) AtomicXor 323 36 19 322 325: 20(ptr) AccessChain 9(iv) 19 326: 6(int) Load 325 327: 6(int) IAdd 326 324 328: 20(ptr) AccessChain 9(iv) 19 Store 328 327 329: 29(ivec2) Load 153(ic2D) 330: 18(int) Load 258(value) 331: 260(ptr) ImageTexelPointer 255(ui2D) 329 19 332: 18(int) AtomicXor 331 36 19 330 333: 18(int) Load 240(ui) 334: 18(int) IAdd 333 332 Store 240(ui) 334 335: 6(int) Load 143(ic1D) 337: 246(ptr) ImageTexelPointer 243(ii1D) 335 19 338: 6(int) AtomicExchange 337 36 19 336 339: 20(ptr) AccessChain 9(iv) 19 340: 6(int) Load 339 341: 6(int) IAdd 340 338 342: 20(ptr) AccessChain 9(iv) 19 Store 342 341 343: 29(ivec2) Load 153(ic2D) 344: 18(int) Load 258(value) 345: 260(ptr) ImageTexelPointer 255(ui2D) 343 19 346: 18(int) AtomicExchange 345 36 19 344 347: 18(int) Load 240(ui) 348: 18(int) IAdd 347 346 Store 240(ui) 348 349: 6(int) Load 143(ic1D) 352: 246(ptr) ImageTexelPointer 243(ii1D) 349 19 353: 6(int) AtomicCompareExchange 352 36 19 19 351 350 354: 20(ptr) AccessChain 9(iv) 19 355: 6(int) Load 354 356: 6(int) IAdd 355 353 357: 20(ptr) AccessChain 9(iv) 19 Store 357 356 358: 29(ivec2) Load 153(ic2D) 360: 18(int) Load 258(value) 361: 260(ptr) ImageTexelPointer 255(ui2D) 358 19 362: 18(int) AtomicCompareExchange 361 36 19 19 360 359 363: 18(int) Load 240(ui) 364: 18(int) IAdd 363 362 Store 240(ui) 364 368: 29(ivec2) Load 153(ic2D) 369: 246(ptr) ImageTexelPointer 367(ii2DMS) 368 227 370: 6(int) AtomicCompareExchange 369 36 19 19 351 350 371: 20(ptr) AccessChain 9(iv) 19 372: 6(int) Load 371 373: 6(int) IAdd 372 370 374: 20(ptr) AccessChain 9(iv) 19 Store 374 373 378: 7(ivec3) Load 163(ic3D) 379: 18(int) Load 258(value) 380: 260(ptr) ImageTexelPointer 377(ui2DMSArray) 378 231 381: 18(int) AtomicCompareExchange 380 36 19 19 379 359 382: 18(int) Load 240(ui) 383: 18(int) IAdd 382 381 Store 240(ui) 383 387: 384 Load 386(wo2D) 388: 29(ivec2) Load 153(ic2D) 389: 136(fvec4) Load 138(v) ImageWrite 387 388 389 392: 18(int) Load 240(ui) 393: 20(ptr) AccessChain 9(iv) 36 394: 6(int) Load 393 395: 18(int) Bitcast 394 397: 396(bool) INotEqual 392 395 398: 136(fvec4) Load 138(v) 400: 399(bvec4) CompositeConstruct 397 397 397 397 401: 136(fvec4) Select 400 398 140 Store 391(fragData) 401 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.image.load-formatted.frag.out000066400000000000000000000423311506534232700247130ustar00rootroot00000000000000spv.image.load-formatted.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 240 Capability Shader Capability SampledRect Capability Sampled1D Capability SampledCubeArray Capability SampledBuffer Capability ImageMSArray Capability ImageQuery Capability StorageImageReadWithoutFormat Capability StorageImageWriteWithoutFormat 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 132 142 152 233 237 239 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_image_load_formatted" Name 4 "main" Name 9 "iv" Name 15 "i1D" Name 27 "i2D" Name 38 "i3D" Name 45 "iCube" Name 55 "iCubeArray" Name 62 "i2DRect" Name 72 "i1DArray" Name 82 "i2DArray" Name 89 "iBuffer" Name 98 "i2DMS" Name 108 "i2DMSArray" Name 127 "v" Name 132 "ic1D" Name 142 "ic2D" Name 152 "ic3D" Name 228 "wo2D" Name 233 "fragData" Name 237 "ic4D" Name 239 "value" Decorate 15(i1D) DescriptorSet 0 Decorate 15(i1D) Binding 0 Decorate 27(i2D) DescriptorSet 0 Decorate 27(i2D) Binding 1 Decorate 38(i3D) DescriptorSet 0 Decorate 38(i3D) Binding 2 Decorate 45(iCube) DescriptorSet 0 Decorate 45(iCube) Binding 3 Decorate 55(iCubeArray) DescriptorSet 0 Decorate 55(iCubeArray) Binding 4 Decorate 62(i2DRect) DescriptorSet 0 Decorate 62(i2DRect) Binding 5 Decorate 72(i1DArray) DescriptorSet 0 Decorate 72(i1DArray) Binding 6 Decorate 82(i2DArray) DescriptorSet 0 Decorate 82(i2DArray) Binding 7 Decorate 89(iBuffer) DescriptorSet 0 Decorate 89(iBuffer) Binding 8 Decorate 98(i2DMS) DescriptorSet 0 Decorate 98(i2DMS) Binding 9 Decorate 108(i2DMSArray) DescriptorSet 0 Decorate 108(i2DMSArray) Binding 10 Decorate 132(ic1D) Flat Decorate 142(ic2D) Flat Decorate 152(ic3D) Flat Decorate 228(wo2D) DescriptorSet 0 Decorate 228(wo2D) Binding 1 Decorate 228(wo2D) NonReadable Decorate 237(ic4D) Flat Decorate 239(value) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 3 8: TypePointer Function 7(ivec3) 10: 6(int) Constant 0 11: 7(ivec3) ConstantComposite 10 10 10 12: TypeFloat 32 13: TypeImage 12(float) 1D nonsampled format:Unknown 14: TypePointer UniformConstant 13 15(i1D): 14(ptr) Variable UniformConstant 18: TypeInt 32 0 19: 18(int) Constant 0 20: TypePointer Function 6(int) 25: TypeImage 12(float) 2D nonsampled format:Unknown 26: TypePointer UniformConstant 25 27(i2D): 26(ptr) Variable UniformConstant 29: TypeVector 6(int) 2 36: TypeImage 12(float) 3D nonsampled format:Unknown 37: TypePointer UniformConstant 36 38(i3D): 37(ptr) Variable UniformConstant 43: TypeImage 12(float) Cube nonsampled format:Unknown 44: TypePointer UniformConstant 43 45(iCube): 44(ptr) Variable UniformConstant 53: TypeImage 12(float) Cube array nonsampled format:Unknown 54: TypePointer UniformConstant 53 55(iCubeArray): 54(ptr) Variable UniformConstant 60: TypeImage 12(float) Rect nonsampled format:Unknown 61: TypePointer UniformConstant 60 62(i2DRect): 61(ptr) Variable UniformConstant 70: TypeImage 12(float) 1D array nonsampled format:Unknown 71: TypePointer UniformConstant 70 72(i1DArray): 71(ptr) Variable UniformConstant 80: TypeImage 12(float) 2D array nonsampled format:Unknown 81: TypePointer UniformConstant 80 82(i2DArray): 81(ptr) Variable UniformConstant 87: TypeImage 12(float) Buffer nonsampled format:Unknown 88: TypePointer UniformConstant 87 89(iBuffer): 88(ptr) Variable UniformConstant 96: TypeImage 12(float) 2D multi-sampled nonsampled format:Unknown 97: TypePointer UniformConstant 96 98(i2DMS): 97(ptr) Variable UniformConstant 106: TypeImage 12(float) 2D array multi-sampled nonsampled format:Unknown 107: TypePointer UniformConstant 106 108(i2DMSArray): 107(ptr) Variable UniformConstant 125: TypeVector 12(float) 4 126: TypePointer Function 125(fvec4) 128: 12(float) Constant 0 129: 125(fvec4) ConstantComposite 128 128 128 128 131: TypePointer Input 6(int) 132(ic1D): 131(ptr) Variable Input 141: TypePointer Input 29(ivec2) 142(ic2D): 141(ptr) Variable Input 151: TypePointer Input 7(ivec3) 152(ic3D): 151(ptr) Variable Input 210: 6(int) Constant 1 216: 6(int) Constant 2 220: 6(int) Constant 3 226: 6(int) Constant 4 228(wo2D): 26(ptr) Variable UniformConstant 232: TypePointer Output 125(fvec4) 233(fragData): 232(ptr) Variable Output 235: TypeVector 6(int) 4 236: TypePointer Input 235(ivec4) 237(ic4D): 236(ptr) Variable Input 238: TypePointer Input 18(int) 239(value): 238(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(iv): 8(ptr) Variable Function 127(v): 126(ptr) Variable Function Store 9(iv) 11 16: 13 Load 15(i1D) 17: 6(int) ImageQuerySize 16 21: 20(ptr) AccessChain 9(iv) 19 22: 6(int) Load 21 23: 6(int) IAdd 22 17 24: 20(ptr) AccessChain 9(iv) 19 Store 24 23 28: 25 Load 27(i2D) 30: 29(ivec2) ImageQuerySize 28 31: 7(ivec3) Load 9(iv) 32: 29(ivec2) VectorShuffle 31 31 0 1 33: 29(ivec2) IAdd 32 30 34: 7(ivec3) Load 9(iv) 35: 7(ivec3) VectorShuffle 34 33 3 4 2 Store 9(iv) 35 39: 36 Load 38(i3D) 40: 7(ivec3) ImageQuerySize 39 41: 7(ivec3) Load 9(iv) 42: 7(ivec3) IAdd 41 40 Store 9(iv) 42 46: 43 Load 45(iCube) 47: 29(ivec2) ImageQuerySize 46 48: 7(ivec3) Load 9(iv) 49: 29(ivec2) VectorShuffle 48 48 0 1 50: 29(ivec2) IAdd 49 47 51: 7(ivec3) Load 9(iv) 52: 7(ivec3) VectorShuffle 51 50 3 4 2 Store 9(iv) 52 56: 53 Load 55(iCubeArray) 57: 7(ivec3) ImageQuerySize 56 58: 7(ivec3) Load 9(iv) 59: 7(ivec3) IAdd 58 57 Store 9(iv) 59 63: 60 Load 62(i2DRect) 64: 29(ivec2) ImageQuerySize 63 65: 7(ivec3) Load 9(iv) 66: 29(ivec2) VectorShuffle 65 65 0 1 67: 29(ivec2) IAdd 66 64 68: 7(ivec3) Load 9(iv) 69: 7(ivec3) VectorShuffle 68 67 3 4 2 Store 9(iv) 69 73: 70 Load 72(i1DArray) 74: 29(ivec2) ImageQuerySize 73 75: 7(ivec3) Load 9(iv) 76: 29(ivec2) VectorShuffle 75 75 0 1 77: 29(ivec2) IAdd 76 74 78: 7(ivec3) Load 9(iv) 79: 7(ivec3) VectorShuffle 78 77 3 4 2 Store 9(iv) 79 83: 80 Load 82(i2DArray) 84: 7(ivec3) ImageQuerySize 83 85: 7(ivec3) Load 9(iv) 86: 7(ivec3) IAdd 85 84 Store 9(iv) 86 90: 87 Load 89(iBuffer) 91: 6(int) ImageQuerySize 90 92: 20(ptr) AccessChain 9(iv) 19 93: 6(int) Load 92 94: 6(int) IAdd 93 91 95: 20(ptr) AccessChain 9(iv) 19 Store 95 94 99: 96 Load 98(i2DMS) 100: 29(ivec2) ImageQuerySize 99 101: 7(ivec3) Load 9(iv) 102: 29(ivec2) VectorShuffle 101 101 0 1 103: 29(ivec2) IAdd 102 100 104: 7(ivec3) Load 9(iv) 105: 7(ivec3) VectorShuffle 104 103 3 4 2 Store 9(iv) 105 109: 106 Load 108(i2DMSArray) 110: 7(ivec3) ImageQuerySize 109 111: 7(ivec3) Load 9(iv) 112: 7(ivec3) IAdd 111 110 Store 9(iv) 112 113: 96 Load 98(i2DMS) 114: 6(int) ImageQuerySamples 113 115: 20(ptr) AccessChain 9(iv) 19 116: 6(int) Load 115 117: 6(int) IAdd 116 114 118: 20(ptr) AccessChain 9(iv) 19 Store 118 117 119: 106 Load 108(i2DMSArray) 120: 6(int) ImageQuerySamples 119 121: 20(ptr) AccessChain 9(iv) 19 122: 6(int) Load 121 123: 6(int) IAdd 122 120 124: 20(ptr) AccessChain 9(iv) 19 Store 124 123 Store 127(v) 129 130: 13 Load 15(i1D) 133: 6(int) Load 132(ic1D) 134: 125(fvec4) ImageRead 130 133 135: 125(fvec4) Load 127(v) 136: 125(fvec4) FAdd 135 134 Store 127(v) 136 137: 13 Load 15(i1D) 138: 6(int) Load 132(ic1D) 139: 125(fvec4) Load 127(v) ImageWrite 137 138 139 140: 25 Load 27(i2D) 143: 29(ivec2) Load 142(ic2D) 144: 125(fvec4) ImageRead 140 143 145: 125(fvec4) Load 127(v) 146: 125(fvec4) FAdd 145 144 Store 127(v) 146 147: 25 Load 27(i2D) 148: 29(ivec2) Load 142(ic2D) 149: 125(fvec4) Load 127(v) ImageWrite 147 148 149 150: 36 Load 38(i3D) 153: 7(ivec3) Load 152(ic3D) 154: 125(fvec4) ImageRead 150 153 155: 125(fvec4) Load 127(v) 156: 125(fvec4) FAdd 155 154 Store 127(v) 156 157: 36 Load 38(i3D) 158: 7(ivec3) Load 152(ic3D) 159: 125(fvec4) Load 127(v) ImageWrite 157 158 159 160: 43 Load 45(iCube) 161: 7(ivec3) Load 152(ic3D) 162: 125(fvec4) ImageRead 160 161 163: 125(fvec4) Load 127(v) 164: 125(fvec4) FAdd 163 162 Store 127(v) 164 165: 43 Load 45(iCube) 166: 7(ivec3) Load 152(ic3D) 167: 125(fvec4) Load 127(v) ImageWrite 165 166 167 168: 53 Load 55(iCubeArray) 169: 7(ivec3) Load 152(ic3D) 170: 125(fvec4) ImageRead 168 169 171: 125(fvec4) Load 127(v) 172: 125(fvec4) FAdd 171 170 Store 127(v) 172 173: 53 Load 55(iCubeArray) 174: 7(ivec3) Load 152(ic3D) 175: 125(fvec4) Load 127(v) ImageWrite 173 174 175 176: 60 Load 62(i2DRect) 177: 29(ivec2) Load 142(ic2D) 178: 125(fvec4) ImageRead 176 177 179: 125(fvec4) Load 127(v) 180: 125(fvec4) FAdd 179 178 Store 127(v) 180 181: 60 Load 62(i2DRect) 182: 29(ivec2) Load 142(ic2D) 183: 125(fvec4) Load 127(v) ImageWrite 181 182 183 184: 70 Load 72(i1DArray) 185: 29(ivec2) Load 142(ic2D) 186: 125(fvec4) ImageRead 184 185 187: 125(fvec4) Load 127(v) 188: 125(fvec4) FAdd 187 186 Store 127(v) 188 189: 70 Load 72(i1DArray) 190: 29(ivec2) Load 142(ic2D) 191: 125(fvec4) Load 127(v) ImageWrite 189 190 191 192: 80 Load 82(i2DArray) 193: 7(ivec3) Load 152(ic3D) 194: 125(fvec4) ImageRead 192 193 195: 125(fvec4) Load 127(v) 196: 125(fvec4) FAdd 195 194 Store 127(v) 196 197: 80 Load 82(i2DArray) 198: 7(ivec3) Load 152(ic3D) 199: 125(fvec4) Load 127(v) ImageWrite 197 198 199 200: 87 Load 89(iBuffer) 201: 6(int) Load 132(ic1D) 202: 125(fvec4) ImageRead 200 201 203: 125(fvec4) Load 127(v) 204: 125(fvec4) FAdd 203 202 Store 127(v) 204 205: 87 Load 89(iBuffer) 206: 6(int) Load 132(ic1D) 207: 125(fvec4) Load 127(v) ImageWrite 205 206 207 208: 96 Load 98(i2DMS) 209: 29(ivec2) Load 142(ic2D) 211: 125(fvec4) ImageRead 208 209 Sample 210 212: 125(fvec4) Load 127(v) 213: 125(fvec4) FAdd 212 211 Store 127(v) 213 214: 96 Load 98(i2DMS) 215: 29(ivec2) Load 142(ic2D) 217: 125(fvec4) Load 127(v) ImageWrite 214 215 217 Sample 216 218: 106 Load 108(i2DMSArray) 219: 7(ivec3) Load 152(ic3D) 221: 125(fvec4) ImageRead 218 219 Sample 220 222: 125(fvec4) Load 127(v) 223: 125(fvec4) FAdd 222 221 Store 127(v) 223 224: 106 Load 108(i2DMSArray) 225: 7(ivec3) Load 152(ic3D) 227: 125(fvec4) Load 127(v) ImageWrite 224 225 227 Sample 226 229: 25 Load 228(wo2D) 230: 29(ivec2) Load 142(ic2D) 231: 125(fvec4) Load 127(v) ImageWrite 229 230 231 234: 125(fvec4) Load 127(v) Store 233(fragData) 234 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.imageAtomic64.comp.out000066400000000000000000000055771506534232700233530ustar00rootroot00000000000000spv.imageAtomic64.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 29 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) Binding 1 Decorate 9(z) DescriptorSet 0 Decorate 14(ssbo) BufferBlock MemberDecorate 14(ssbo) 0 Offset 0 Decorate 16 Binding 0 Decorate 16 DescriptorSet 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: 10(int) Constant 4 23: TypeInt 32 0 24: 23(int) Constant 0 25: TypePointer Image 6(int64_t) 27: 23(int) Constant 1 28: 23(int) Constant 2052 4(main): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 16 17 20: 6(int64_t) Load 19 26: 25(ptr) ImageTexelPointer 9(z) 13 24 AtomicStore 26 12 28 20 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.imageAtomic64.frag.out000066400000000000000000000766631506534232700233400ustar00rootroot00000000000000spv.imageAtomic64.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 506 Capability Shader Capability Int64 Capability Int64Atomics Capability StorageImageMultisample Capability ImageCubeArray Capability ImageRect Capability SparseResidency Capability Image1D Capability ImageBuffer Capability ImageMSArray Capability Int64ImageEXT Extension "SPV_EXT_shader_image_int64" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_ARB_sparse_texture2" SourceExtension "GL_EXT_shader_image_int64" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 12 "Buf" MemberName 12(Buf) 0 "i64" MemberName 12(Buf) 1 "u64" MemberName 12(Buf) 2 "i64v4" MemberName 12(Buf) 3 "u64v4" MemberName 12(Buf) 4 "i32v4" Name 14 "" Name 18 "i1D" Name 35 "i3D" Name 48 "iBuf" Name 58 "i2DArray" Name 69 "i2DRect" Name 81 "i2DMSArray" Name 198 "u2D" Name 211 "uCube" Name 222 "u1DArray" Name 233 "uCubeArray" Name 244 "u2DMS" Name 461 "ResType" Name 486 "ResType" Decorate 12(Buf) BufferBlock MemberDecorate 12(Buf) 0 Offset 0 MemberDecorate 12(Buf) 1 Offset 8 MemberDecorate 12(Buf) 2 Offset 32 MemberDecorate 12(Buf) 3 Offset 64 MemberDecorate 12(Buf) 4 Offset 96 Decorate 14 Binding 11 Decorate 14 DescriptorSet 0 Decorate 18(i1D) Binding 0 Decorate 18(i1D) DescriptorSet 0 Decorate 35(i3D) Binding 2 Decorate 35(i3D) DescriptorSet 0 Decorate 48(iBuf) Binding 4 Decorate 48(iBuf) DescriptorSet 0 Decorate 58(i2DArray) Binding 6 Decorate 58(i2DArray) DescriptorSet 0 Decorate 69(i2DRect) Binding 8 Decorate 69(i2DRect) DescriptorSet 0 Decorate 81(i2DMSArray) Binding 10 Decorate 81(i2DMSArray) DescriptorSet 0 Decorate 198(u2D) Binding 1 Decorate 198(u2D) DescriptorSet 0 Decorate 211(uCube) Binding 3 Decorate 211(uCube) DescriptorSet 0 Decorate 222(u1DArray) Binding 5 Decorate 222(u1DArray) DescriptorSet 0 Decorate 233(uCubeArray) Binding 7 Decorate 233(uCubeArray) DescriptorSet 0 Decorate 244(u2DMS) Binding 9 Decorate 244(u2DMS) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 64 1 7: TypeInt 64 0 8: TypeVector 6(int64_t) 4 9: TypeVector 7(int64_t) 4 10: TypeInt 32 1 11: TypeVector 10(int) 4 12(Buf): TypeStruct 6(int64_t) 7(int64_t) 8(i64vec4) 9(i64vec4) 11(ivec4) 13: TypePointer Uniform 12(Buf) 14: 13(ptr) Variable Uniform 15: 10(int) Constant 0 16: TypeImage 6(int64_t) 1D nonsampled format:R64i 17: TypePointer UniformConstant 16 18(i1D): 17(ptr) Variable UniformConstant 19: 10(int) Constant 4 20: TypeInt 32 0 21: 20(int) Constant 0 22: TypePointer Uniform 10(int) 25: TypePointer Uniform 6(int64_t) 28: TypePointer Image 6(int64_t) 30: 20(int) Constant 1 33: TypeImage 6(int64_t) 3D nonsampled format:R64i 34: TypePointer UniformConstant 33 35(i3D): 34(ptr) Variable UniformConstant 36: TypeVector 10(int) 3 37: TypePointer Uniform 11(ivec4) 46: TypeImage 6(int64_t) Buffer nonsampled format:R64i 47: TypePointer UniformConstant 46 48(iBuf): 47(ptr) Variable UniformConstant 56: TypeImage 6(int64_t) 2D array nonsampled format:R64i 57: TypePointer UniformConstant 56 58(i2DArray): 57(ptr) Variable UniformConstant 67: TypeImage 6(int64_t) Rect nonsampled format:R64i 68: TypePointer UniformConstant 67 69(i2DRect): 68(ptr) Variable UniformConstant 70: TypeVector 10(int) 2 79: TypeImage 6(int64_t) 2D array multi-sampled nonsampled format:R64i 80: TypePointer UniformConstant 79 81(i2DMSArray): 80(ptr) Variable UniformConstant 85: 20(int) Constant 3 107: 6(int64_t) Constant 1 0 116: 10(int) Constant 1 117: 10(int) Constant 2048 118: 10(int) Constant 8 120: 20(int) Constant 2056 179: 10(int) Constant 2 181: 20(int) Constant 2050 195: 20(int) Constant 2052 196: TypeImage 7(int64_t) 2D nonsampled format:R64ui 197: TypePointer UniformConstant 196 198(u2D): 197(ptr) Variable UniformConstant 202: TypePointer Uniform 7(int64_t) 205: TypePointer Image 7(int64_t) 209: TypeImage 7(int64_t) Cube nonsampled format:R64ui 210: TypePointer UniformConstant 209 211(uCube): 210(ptr) Variable UniformConstant 220: TypeImage 7(int64_t) 1D array nonsampled format:R64ui 221: TypePointer UniformConstant 220 222(u1DArray): 221(ptr) Variable UniformConstant 231: TypeImage 7(int64_t) Cube array nonsampled format:R64ui 232: TypePointer UniformConstant 231 233(uCubeArray): 232(ptr) Variable UniformConstant 242: TypeImage 7(int64_t) 2D multi-sampled nonsampled format:R64ui 243: TypePointer UniformConstant 242 244(u2DMS): 243(ptr) Variable UniformConstant 248: 20(int) Constant 2 279: 7(int64_t) Constant 1 0 371: TypePointer Uniform 8(i64vec4) 426: 10(int) Constant 3 427: TypePointer Uniform 9(i64vec4) 461(ResType): TypeStruct 10(int) 8(i64vec4) 486(ResType): TypeStruct 10(int) 9(i64vec4) 4(main): 2 Function None 3 5: Label 23: 22(ptr) AccessChain 14 19 21 24: 10(int) Load 23 26: 25(ptr) AccessChain 14 15 27: 6(int64_t) Load 26 29: 28(ptr) ImageTexelPointer 18(i1D) 24 21 31: 6(int64_t) AtomicIAdd 29 30 21 27 32: 25(ptr) AccessChain 14 15 Store 32 31 38: 37(ptr) AccessChain 14 19 39: 11(ivec4) Load 38 40: 36(ivec3) VectorShuffle 39 39 0 1 2 41: 25(ptr) AccessChain 14 15 42: 6(int64_t) Load 41 43: 28(ptr) ImageTexelPointer 35(i3D) 40 21 44: 6(int64_t) AtomicSMin 43 30 21 42 45: 25(ptr) AccessChain 14 15 Store 45 44 49: 22(ptr) AccessChain 14 19 21 50: 10(int) Load 49 51: 25(ptr) AccessChain 14 15 52: 6(int64_t) Load 51 53: 28(ptr) ImageTexelPointer 48(iBuf) 50 21 54: 6(int64_t) AtomicSMax 53 30 21 52 55: 25(ptr) AccessChain 14 15 Store 55 54 59: 37(ptr) AccessChain 14 19 60: 11(ivec4) Load 59 61: 36(ivec3) VectorShuffle 60 60 0 1 2 62: 25(ptr) AccessChain 14 15 63: 6(int64_t) Load 62 64: 28(ptr) ImageTexelPointer 58(i2DArray) 61 21 65: 6(int64_t) AtomicAnd 64 30 21 63 66: 25(ptr) AccessChain 14 15 Store 66 65 71: 37(ptr) AccessChain 14 19 72: 11(ivec4) Load 71 73: 70(ivec2) VectorShuffle 72 72 0 1 74: 25(ptr) AccessChain 14 15 75: 6(int64_t) Load 74 76: 28(ptr) ImageTexelPointer 69(i2DRect) 73 21 77: 6(int64_t) AtomicOr 76 30 21 75 78: 25(ptr) AccessChain 14 15 Store 78 77 82: 37(ptr) AccessChain 14 19 83: 11(ivec4) Load 82 84: 36(ivec3) VectorShuffle 83 83 0 1 2 86: 22(ptr) AccessChain 14 19 85 87: 10(int) Load 86 88: 25(ptr) AccessChain 14 15 89: 6(int64_t) Load 88 90: 28(ptr) ImageTexelPointer 81(i2DMSArray) 84 87 91: 6(int64_t) AtomicXor 90 30 21 89 92: 25(ptr) AccessChain 14 15 Store 92 91 93: 22(ptr) AccessChain 14 19 21 94: 10(int) Load 93 95: 25(ptr) AccessChain 14 15 96: 6(int64_t) Load 95 97: 28(ptr) ImageTexelPointer 18(i1D) 94 21 98: 6(int64_t) AtomicExchange 97 30 21 96 99: 25(ptr) AccessChain 14 15 Store 99 98 100: 37(ptr) AccessChain 14 19 101: 11(ivec4) Load 100 102: 36(ivec3) VectorShuffle 101 101 0 1 2 103: 25(ptr) AccessChain 14 15 104: 6(int64_t) Load 103 105: 25(ptr) AccessChain 14 15 106: 6(int64_t) Load 105 108: 6(int64_t) IAdd 106 107 109: 28(ptr) ImageTexelPointer 35(i3D) 102 21 110: 6(int64_t) AtomicCompareExchange 109 30 21 21 108 104 111: 25(ptr) AccessChain 14 15 Store 111 110 112: 22(ptr) AccessChain 14 19 21 113: 10(int) Load 112 114: 25(ptr) AccessChain 14 15 115: 6(int64_t) Load 114 119: 28(ptr) ImageTexelPointer 18(i1D) 113 21 121: 6(int64_t) AtomicIAdd 119 116 120 115 122: 25(ptr) AccessChain 14 15 Store 122 121 123: 37(ptr) AccessChain 14 19 124: 11(ivec4) Load 123 125: 36(ivec3) VectorShuffle 124 124 0 1 2 126: 25(ptr) AccessChain 14 15 127: 6(int64_t) Load 126 128: 28(ptr) ImageTexelPointer 35(i3D) 125 21 129: 6(int64_t) AtomicSMin 128 116 120 127 130: 25(ptr) AccessChain 14 15 Store 130 129 131: 22(ptr) AccessChain 14 19 21 132: 10(int) Load 131 133: 25(ptr) AccessChain 14 15 134: 6(int64_t) Load 133 135: 28(ptr) ImageTexelPointer 48(iBuf) 132 21 136: 6(int64_t) AtomicSMax 135 116 120 134 137: 25(ptr) AccessChain 14 15 Store 137 136 138: 37(ptr) AccessChain 14 19 139: 11(ivec4) Load 138 140: 36(ivec3) VectorShuffle 139 139 0 1 2 141: 25(ptr) AccessChain 14 15 142: 6(int64_t) Load 141 143: 28(ptr) ImageTexelPointer 58(i2DArray) 140 21 144: 6(int64_t) AtomicAnd 143 116 120 142 145: 25(ptr) AccessChain 14 15 Store 145 144 146: 37(ptr) AccessChain 14 19 147: 11(ivec4) Load 146 148: 70(ivec2) VectorShuffle 147 147 0 1 149: 25(ptr) AccessChain 14 15 150: 6(int64_t) Load 149 151: 28(ptr) ImageTexelPointer 69(i2DRect) 148 21 152: 6(int64_t) AtomicOr 151 116 120 150 153: 25(ptr) AccessChain 14 15 Store 153 152 154: 37(ptr) AccessChain 14 19 155: 11(ivec4) Load 154 156: 36(ivec3) VectorShuffle 155 155 0 1 2 157: 22(ptr) AccessChain 14 19 85 158: 10(int) Load 157 159: 25(ptr) AccessChain 14 15 160: 6(int64_t) Load 159 161: 28(ptr) ImageTexelPointer 81(i2DMSArray) 156 158 162: 6(int64_t) AtomicXor 161 116 120 160 163: 25(ptr) AccessChain 14 15 Store 163 162 164: 22(ptr) AccessChain 14 19 21 165: 10(int) Load 164 166: 25(ptr) AccessChain 14 15 167: 6(int64_t) Load 166 168: 28(ptr) ImageTexelPointer 18(i1D) 165 21 169: 6(int64_t) AtomicExchange 168 116 120 167 170: 25(ptr) AccessChain 14 15 Store 170 169 171: 37(ptr) AccessChain 14 19 172: 11(ivec4) Load 171 173: 36(ivec3) VectorShuffle 172 172 0 1 2 174: 25(ptr) AccessChain 14 15 175: 6(int64_t) Load 174 176: 25(ptr) AccessChain 14 15 177: 6(int64_t) Load 176 178: 6(int64_t) IAdd 177 107 180: 28(ptr) ImageTexelPointer 35(i3D) 173 21 182: 6(int64_t) AtomicCompareExchange 180 116 120 181 178 175 183: 25(ptr) AccessChain 14 15 Store 183 182 184: 22(ptr) AccessChain 14 19 21 185: 10(int) Load 184 186: 28(ptr) ImageTexelPointer 48(iBuf) 185 21 187: 6(int64_t) AtomicLoad 186 116 181 188: 25(ptr) AccessChain 14 15 Store 188 187 189: 37(ptr) AccessChain 14 19 190: 11(ivec4) Load 189 191: 36(ivec3) VectorShuffle 190 190 0 1 2 192: 25(ptr) AccessChain 14 15 193: 6(int64_t) Load 192 194: 28(ptr) ImageTexelPointer 58(i2DArray) 191 21 AtomicStore 194 116 195 193 199: 37(ptr) AccessChain 14 19 200: 11(ivec4) Load 199 201: 70(ivec2) VectorShuffle 200 200 0 1 203: 202(ptr) AccessChain 14 116 204: 7(int64_t) Load 203 206: 205(ptr) ImageTexelPointer 198(u2D) 201 21 207: 7(int64_t) AtomicIAdd 206 30 21 204 208: 202(ptr) AccessChain 14 116 Store 208 207 212: 37(ptr) AccessChain 14 19 213: 11(ivec4) Load 212 214: 36(ivec3) VectorShuffle 213 213 0 1 2 215: 202(ptr) AccessChain 14 116 216: 7(int64_t) Load 215 217: 205(ptr) ImageTexelPointer 211(uCube) 214 21 218: 7(int64_t) AtomicUMin 217 30 21 216 219: 202(ptr) AccessChain 14 116 Store 219 218 223: 37(ptr) AccessChain 14 19 224: 11(ivec4) Load 223 225: 70(ivec2) VectorShuffle 224 224 0 1 226: 202(ptr) AccessChain 14 116 227: 7(int64_t) Load 226 228: 205(ptr) ImageTexelPointer 222(u1DArray) 225 21 229: 7(int64_t) AtomicUMax 228 30 21 227 230: 202(ptr) AccessChain 14 116 Store 230 229 234: 37(ptr) AccessChain 14 19 235: 11(ivec4) Load 234 236: 36(ivec3) VectorShuffle 235 235 0 1 2 237: 202(ptr) AccessChain 14 116 238: 7(int64_t) Load 237 239: 205(ptr) ImageTexelPointer 233(uCubeArray) 236 21 240: 7(int64_t) AtomicAnd 239 30 21 238 241: 202(ptr) AccessChain 14 116 Store 241 240 245: 37(ptr) AccessChain 14 19 246: 11(ivec4) Load 245 247: 70(ivec2) VectorShuffle 246 246 0 1 249: 22(ptr) AccessChain 14 19 248 250: 10(int) Load 249 251: 202(ptr) AccessChain 14 116 252: 7(int64_t) Load 251 253: 205(ptr) ImageTexelPointer 244(u2DMS) 247 250 254: 7(int64_t) AtomicOr 253 30 21 252 255: 202(ptr) AccessChain 14 116 Store 255 254 256: 37(ptr) AccessChain 14 19 257: 11(ivec4) Load 256 258: 70(ivec2) VectorShuffle 257 257 0 1 259: 202(ptr) AccessChain 14 116 260: 7(int64_t) Load 259 261: 205(ptr) ImageTexelPointer 198(u2D) 258 21 262: 7(int64_t) AtomicXor 261 30 21 260 263: 202(ptr) AccessChain 14 116 Store 263 262 264: 37(ptr) AccessChain 14 19 265: 11(ivec4) Load 264 266: 36(ivec3) VectorShuffle 265 265 0 1 2 267: 202(ptr) AccessChain 14 116 268: 7(int64_t) Load 267 269: 205(ptr) ImageTexelPointer 211(uCube) 266 21 270: 7(int64_t) AtomicExchange 269 30 21 268 271: 202(ptr) AccessChain 14 116 Store 271 270 272: 37(ptr) AccessChain 14 19 273: 11(ivec4) Load 272 274: 70(ivec2) VectorShuffle 273 273 0 1 275: 202(ptr) AccessChain 14 116 276: 7(int64_t) Load 275 277: 202(ptr) AccessChain 14 116 278: 7(int64_t) Load 277 280: 7(int64_t) IAdd 278 279 281: 205(ptr) ImageTexelPointer 222(u1DArray) 274 21 282: 7(int64_t) AtomicCompareExchange 281 30 21 21 280 276 283: 202(ptr) AccessChain 14 116 Store 283 282 284: 37(ptr) AccessChain 14 19 285: 11(ivec4) Load 284 286: 70(ivec2) VectorShuffle 285 285 0 1 287: 202(ptr) AccessChain 14 116 288: 7(int64_t) Load 287 289: 205(ptr) ImageTexelPointer 198(u2D) 286 21 290: 7(int64_t) AtomicIAdd 289 116 120 288 291: 202(ptr) AccessChain 14 116 Store 291 290 292: 37(ptr) AccessChain 14 19 293: 11(ivec4) Load 292 294: 36(ivec3) VectorShuffle 293 293 0 1 2 295: 202(ptr) AccessChain 14 116 296: 7(int64_t) Load 295 297: 205(ptr) ImageTexelPointer 211(uCube) 294 21 298: 7(int64_t) AtomicUMin 297 116 120 296 299: 202(ptr) AccessChain 14 116 Store 299 298 300: 37(ptr) AccessChain 14 19 301: 11(ivec4) Load 300 302: 70(ivec2) VectorShuffle 301 301 0 1 303: 202(ptr) AccessChain 14 116 304: 7(int64_t) Load 303 305: 205(ptr) ImageTexelPointer 222(u1DArray) 302 21 306: 7(int64_t) AtomicUMax 305 116 120 304 307: 202(ptr) AccessChain 14 116 Store 307 306 308: 37(ptr) AccessChain 14 19 309: 11(ivec4) Load 308 310: 36(ivec3) VectorShuffle 309 309 0 1 2 311: 202(ptr) AccessChain 14 116 312: 7(int64_t) Load 311 313: 205(ptr) ImageTexelPointer 233(uCubeArray) 310 21 314: 7(int64_t) AtomicAnd 313 116 120 312 315: 202(ptr) AccessChain 14 116 Store 315 314 316: 37(ptr) AccessChain 14 19 317: 11(ivec4) Load 316 318: 70(ivec2) VectorShuffle 317 317 0 1 319: 22(ptr) AccessChain 14 19 248 320: 10(int) Load 319 321: 202(ptr) AccessChain 14 116 322: 7(int64_t) Load 321 323: 205(ptr) ImageTexelPointer 244(u2DMS) 318 320 324: 7(int64_t) AtomicOr 323 116 120 322 325: 202(ptr) AccessChain 14 116 Store 325 324 326: 37(ptr) AccessChain 14 19 327: 11(ivec4) Load 326 328: 70(ivec2) VectorShuffle 327 327 0 1 329: 202(ptr) AccessChain 14 116 330: 7(int64_t) Load 329 331: 205(ptr) ImageTexelPointer 198(u2D) 328 21 332: 7(int64_t) AtomicXor 331 116 120 330 333: 202(ptr) AccessChain 14 116 Store 333 332 334: 37(ptr) AccessChain 14 19 335: 11(ivec4) Load 334 336: 36(ivec3) VectorShuffle 335 335 0 1 2 337: 202(ptr) AccessChain 14 116 338: 7(int64_t) Load 337 339: 205(ptr) ImageTexelPointer 211(uCube) 336 21 340: 7(int64_t) AtomicExchange 339 116 120 338 341: 202(ptr) AccessChain 14 116 Store 341 340 342: 37(ptr) AccessChain 14 19 343: 11(ivec4) Load 342 344: 70(ivec2) VectorShuffle 343 343 0 1 345: 202(ptr) AccessChain 14 116 346: 7(int64_t) Load 345 347: 202(ptr) AccessChain 14 116 348: 7(int64_t) Load 347 349: 7(int64_t) IAdd 348 279 350: 205(ptr) ImageTexelPointer 222(u1DArray) 344 21 351: 7(int64_t) AtomicCompareExchange 350 116 120 181 349 346 352: 202(ptr) AccessChain 14 116 Store 352 351 353: 37(ptr) AccessChain 14 19 354: 11(ivec4) Load 353 355: 36(ivec3) VectorShuffle 354 354 0 1 2 356: 205(ptr) ImageTexelPointer 233(uCubeArray) 355 21 357: 7(int64_t) AtomicLoad 356 116 181 358: 202(ptr) AccessChain 14 116 Store 358 357 359: 37(ptr) AccessChain 14 19 360: 11(ivec4) Load 359 361: 70(ivec2) VectorShuffle 360 360 0 1 362: 22(ptr) AccessChain 14 19 248 363: 10(int) Load 362 364: 202(ptr) AccessChain 14 116 365: 7(int64_t) Load 364 366: 205(ptr) ImageTexelPointer 244(u2DMS) 361 363 AtomicStore 366 116 195 365 367: 16 Load 18(i1D) 368: 22(ptr) AccessChain 14 19 21 369: 10(int) Load 368 370: 8(i64vec4) ImageRead 367 369 372: 371(ptr) AccessChain 14 179 373: 8(i64vec4) Load 372 374: 8(i64vec4) IAdd 373 370 375: 371(ptr) AccessChain 14 179 Store 375 374 376: 33 Load 35(i3D) 377: 37(ptr) AccessChain 14 19 378: 11(ivec4) Load 377 379: 36(ivec3) VectorShuffle 378 378 0 1 2 380: 8(i64vec4) ImageRead 376 379 381: 371(ptr) AccessChain 14 179 382: 8(i64vec4) Load 381 383: 8(i64vec4) IAdd 382 380 384: 371(ptr) AccessChain 14 179 Store 384 383 385: 46 Load 48(iBuf) 386: 22(ptr) AccessChain 14 19 21 387: 10(int) Load 386 388: 8(i64vec4) ImageRead 385 387 389: 371(ptr) AccessChain 14 179 390: 8(i64vec4) Load 389 391: 8(i64vec4) IAdd 390 388 392: 371(ptr) AccessChain 14 179 Store 392 391 393: 56 Load 58(i2DArray) 394: 37(ptr) AccessChain 14 19 395: 11(ivec4) Load 394 396: 36(ivec3) VectorShuffle 395 395 0 1 2 397: 8(i64vec4) ImageRead 393 396 398: 371(ptr) AccessChain 14 179 399: 8(i64vec4) Load 398 400: 8(i64vec4) IAdd 399 397 401: 371(ptr) AccessChain 14 179 Store 401 400 402: 67 Load 69(i2DRect) 403: 37(ptr) AccessChain 14 19 404: 11(ivec4) Load 403 405: 70(ivec2) VectorShuffle 404 404 0 1 406: 8(i64vec4) ImageRead 402 405 407: 371(ptr) AccessChain 14 179 408: 8(i64vec4) Load 407 409: 8(i64vec4) IAdd 408 406 410: 371(ptr) AccessChain 14 179 Store 410 409 411: 79 Load 81(i2DMSArray) 412: 37(ptr) AccessChain 14 19 413: 11(ivec4) Load 412 414: 36(ivec3) VectorShuffle 413 413 0 1 2 415: 22(ptr) AccessChain 14 19 85 416: 10(int) Load 415 417: 8(i64vec4) ImageRead 411 414 Sample 416 418: 371(ptr) AccessChain 14 179 419: 8(i64vec4) Load 418 420: 8(i64vec4) IAdd 419 417 421: 371(ptr) AccessChain 14 179 Store 421 420 422: 196 Load 198(u2D) 423: 37(ptr) AccessChain 14 19 424: 11(ivec4) Load 423 425: 70(ivec2) VectorShuffle 424 424 0 1 428: 427(ptr) AccessChain 14 426 429: 9(i64vec4) Load 428 ImageWrite 422 425 429 430: 209 Load 211(uCube) 431: 37(ptr) AccessChain 14 19 432: 11(ivec4) Load 431 433: 36(ivec3) VectorShuffle 432 432 0 1 2 434: 427(ptr) AccessChain 14 426 435: 9(i64vec4) Load 434 ImageWrite 430 433 435 436: 220 Load 222(u1DArray) 437: 37(ptr) AccessChain 14 19 438: 11(ivec4) Load 437 439: 70(ivec2) VectorShuffle 438 438 0 1 440: 427(ptr) AccessChain 14 426 441: 9(i64vec4) Load 440 ImageWrite 436 439 441 442: 231 Load 233(uCubeArray) 443: 37(ptr) AccessChain 14 19 444: 11(ivec4) Load 443 445: 36(ivec3) VectorShuffle 444 444 0 1 2 446: 427(ptr) AccessChain 14 426 447: 9(i64vec4) Load 446 ImageWrite 442 445 447 448: 242 Load 244(u2DMS) 449: 37(ptr) AccessChain 14 19 450: 11(ivec4) Load 449 451: 70(ivec2) VectorShuffle 450 450 0 1 452: 22(ptr) AccessChain 14 19 248 453: 10(int) Load 452 454: 427(ptr) AccessChain 14 426 455: 9(i64vec4) Load 454 ImageWrite 448 451 455 Sample 453 456: 33 Load 35(i3D) 457: 37(ptr) AccessChain 14 19 458: 11(ivec4) Load 457 459: 36(ivec3) VectorShuffle 458 458 0 1 2 460: 371(ptr) AccessChain 14 179 462:461(ResType) ImageSparseRead 456 459 463: 8(i64vec4) CompositeExtract 462 1 Store 460 463 464: 10(int) CompositeExtract 462 0 465: 56 Load 58(i2DArray) 466: 37(ptr) AccessChain 14 19 467: 11(ivec4) Load 466 468: 36(ivec3) VectorShuffle 467 467 0 1 2 469: 371(ptr) AccessChain 14 179 470:461(ResType) ImageSparseRead 465 468 471: 8(i64vec4) CompositeExtract 470 1 Store 469 471 472: 10(int) CompositeExtract 470 0 473: 67 Load 69(i2DRect) 474: 37(ptr) AccessChain 14 19 475: 11(ivec4) Load 474 476: 70(ivec2) VectorShuffle 475 475 0 1 477: 371(ptr) AccessChain 14 179 478:461(ResType) ImageSparseRead 473 476 479: 8(i64vec4) CompositeExtract 478 1 Store 477 479 480: 10(int) CompositeExtract 478 0 481: 196 Load 198(u2D) 482: 37(ptr) AccessChain 14 19 483: 11(ivec4) Load 482 484: 70(ivec2) VectorShuffle 483 483 0 1 485: 427(ptr) AccessChain 14 426 487:486(ResType) ImageSparseRead 481 484 488: 9(i64vec4) CompositeExtract 487 1 Store 485 488 489: 10(int) CompositeExtract 487 0 490: 209 Load 211(uCube) 491: 37(ptr) AccessChain 14 19 492: 11(ivec4) Load 491 493: 36(ivec3) VectorShuffle 492 492 0 1 2 494: 427(ptr) AccessChain 14 426 495:486(ResType) ImageSparseRead 490 493 496: 9(i64vec4) CompositeExtract 495 1 Store 494 496 497: 10(int) CompositeExtract 495 0 498: 231 Load 233(uCubeArray) 499: 37(ptr) AccessChain 14 19 500: 11(ivec4) Load 499 501: 36(ivec3) VectorShuffle 500 500 0 1 2 502: 427(ptr) AccessChain 14 426 503:486(ResType) ImageSparseRead 498 501 504: 9(i64vec4) CompositeExtract 503 1 Store 502 504 505: 10(int) CompositeExtract 503 0 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.imageLoadStoreLod.frag.out000066400000000000000000000315661506534232700242760ustar00rootroot00000000000000spv.imageLoadStoreLod.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 148 Capability Shader Capability Int64 Capability ImageCubeArray Capability SparseResidency Capability Image1D Capability ImageReadWriteLodAMD Capability Int64ImageEXT Extension "SPV_AMD_shader_image_load_store_lod" Extension "SPV_EXT_shader_image_int64" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 77 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_shader_image_load_store_lod" SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_shader_image_int64" Name 4 "main" Name 9 "f4" Name 14 "i1D" Name 24 "i2D" Name 34 "i3D" Name 46 "iiCube" Name 53 "ii1DArray" Name 60 "ui2DArray" Name 64 "u4" Name 65 "ResType" Name 71 "uiCubeArray" Name 77 "fragColor" Name 86 "Buf" MemberName 86(Buf) 0 "i64v4" MemberName 86(Buf) 1 "u64v4" Name 88 "" Name 92 "i64i1D" Name 102 "i64i2D" Name 111 "i64i3D" Name 120 "u64iCube" Name 127 "u64i1DArray" Name 133 "u64i2DArray" Name 136 "ResType" Name 142 "u64iCubeArray" Decorate 14(i1D) Binding 0 Decorate 14(i1D) DescriptorSet 0 Decorate 24(i2D) Binding 1 Decorate 24(i2D) DescriptorSet 0 Decorate 34(i3D) Binding 2 Decorate 34(i3D) DescriptorSet 0 Decorate 46(iiCube) Binding 3 Decorate 46(iiCube) DescriptorSet 0 Decorate 53(ii1DArray) Binding 4 Decorate 53(ii1DArray) DescriptorSet 0 Decorate 60(ui2DArray) Binding 5 Decorate 60(ui2DArray) DescriptorSet 0 Decorate 71(uiCubeArray) Binding 6 Decorate 71(uiCubeArray) DescriptorSet 0 Decorate 77(fragColor) Location 0 Decorate 86(Buf) BufferBlock MemberDecorate 86(Buf) 0 Offset 0 MemberDecorate 86(Buf) 1 Offset 32 Decorate 88 Binding 14 Decorate 88 DescriptorSet 0 Decorate 92(i64i1D) Binding 7 Decorate 92(i64i1D) DescriptorSet 0 Decorate 102(i64i2D) Binding 8 Decorate 102(i64i2D) DescriptorSet 0 Decorate 111(i64i3D) Binding 9 Decorate 111(i64i3D) DescriptorSet 0 Decorate 120(u64iCube) Binding 10 Decorate 120(u64iCube) DescriptorSet 0 Decorate 127(u64i1DArray) Binding 11 Decorate 127(u64i1DArray) DescriptorSet 0 Decorate 133(u64i2DArray) Binding 12 Decorate 133(u64i2DArray) DescriptorSet 0 Decorate 142(u64iCubeArray) Binding 13 Decorate 142(u64iCubeArray) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeImage 6(float) 1D nonsampled format:Rgba32f 13: TypePointer UniformConstant 12 14(i1D): 13(ptr) Variable UniformConstant 16: TypeInt 32 1 17: 16(int) Constant 1 18: 16(int) Constant 3 22: TypeImage 6(float) 2D nonsampled format:Rgba32f 23: TypePointer UniformConstant 22 24(i2D): 23(ptr) Variable UniformConstant 26: TypeVector 16(int) 2 27: 16(int) Constant 2 28: 26(ivec2) ConstantComposite 27 18 32: TypeImage 6(float) 3D nonsampled format:Rgba32f 33: TypePointer UniformConstant 32 34(i3D): 33(ptr) Variable UniformConstant 36: TypeVector 16(int) 3 37: 16(int) Constant 4 38: 16(int) Constant 5 39: 16(int) Constant 6 40: 36(ivec3) ConstantComposite 37 38 39 44: TypeImage 16(int) Cube nonsampled format:Rgba32i 45: TypePointer UniformConstant 44 46(iiCube): 45(ptr) Variable UniformConstant 49: TypeVector 16(int) 4 51: TypeImage 16(int) 1D array nonsampled format:Rgba32i 52: TypePointer UniformConstant 51 53(ii1DArray): 52(ptr) Variable UniformConstant 57: TypeInt 32 0 58: TypeImage 57(int) 2D array nonsampled format:Rgba32ui 59: TypePointer UniformConstant 58 60(ui2DArray): 59(ptr) Variable UniformConstant 62: TypeVector 57(int) 4 63: TypePointer Function 62(ivec4) 65(ResType): TypeStruct 16(int) 62(ivec4) 69: TypeImage 57(int) Cube array nonsampled format:Rgba32ui 70: TypePointer UniformConstant 69 71(uiCubeArray): 70(ptr) Variable UniformConstant 76: TypePointer Output 7(fvec4) 77(fragColor): 76(ptr) Variable Output 82: TypeInt 64 1 83: TypeVector 82(int64_t) 4 84: TypeInt 64 0 85: TypeVector 84(int64_t) 4 86(Buf): TypeStruct 83(i64vec4) 85(i64vec4) 87: TypePointer Uniform 86(Buf) 88: 87(ptr) Variable Uniform 89: 16(int) Constant 0 90: TypeImage 82(int64_t) 1D nonsampled format:R64i 91: TypePointer UniformConstant 90 92(i64i1D): 91(ptr) Variable UniformConstant 95: TypePointer Uniform 83(i64vec4) 100: TypeImage 82(int64_t) 2D nonsampled format:R64i 101: TypePointer UniformConstant 100 102(i64i2D): 101(ptr) Variable UniformConstant 109: TypeImage 82(int64_t) 3D nonsampled format:R64i 110: TypePointer UniformConstant 109 111(i64i3D): 110(ptr) Variable UniformConstant 118: TypeImage 84(int64_t) Cube nonsampled format:R64ui 119: TypePointer UniformConstant 118 120(u64iCube): 119(ptr) Variable UniformConstant 122: TypePointer Uniform 85(i64vec4) 125: TypeImage 84(int64_t) 1D array nonsampled format:R64ui 126: TypePointer UniformConstant 125 127(u64i1DArray): 126(ptr) Variable UniformConstant 131: TypeImage 84(int64_t) 2D array nonsampled format:R64ui 132: TypePointer UniformConstant 131 133(u64i2DArray): 132(ptr) Variable UniformConstant 136(ResType): TypeStruct 16(int) 85(i64vec4) 140: TypeImage 84(int64_t) Cube array nonsampled format:R64ui 141: TypePointer UniformConstant 140 142(u64iCubeArray): 141(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(f4): 8(ptr) Variable Function 64(u4): 63(ptr) Variable Function Store 9(f4) 11 15: 12 Load 14(i1D) 19: 7(fvec4) ImageRead 15 17 Lod 18 20: 7(fvec4) Load 9(f4) 21: 7(fvec4) FAdd 20 19 Store 9(f4) 21 25: 22 Load 24(i2D) 29: 7(fvec4) ImageRead 25 28 Lod 18 30: 7(fvec4) Load 9(f4) 31: 7(fvec4) FAdd 30 29 Store 9(f4) 31 35: 32 Load 34(i3D) 41: 7(fvec4) ImageRead 35 40 Lod 18 42: 7(fvec4) Load 9(f4) 43: 7(fvec4) FAdd 42 41 Store 9(f4) 43 47: 44 Load 46(iiCube) 48: 7(fvec4) Load 9(f4) 50: 49(ivec4) ConvertFToS 48 ImageWrite 47 40 50 Lod 18 54: 51 Load 53(ii1DArray) 55: 7(fvec4) Load 9(f4) 56: 49(ivec4) ConvertFToS 55 ImageWrite 54 28 56 Lod 18 61: 58 Load 60(ui2DArray) 66: 65(ResType) ImageSparseRead 61 40 Lod 18 67: 62(ivec4) CompositeExtract 66 1 Store 64(u4) 67 68: 16(int) CompositeExtract 66 0 72: 69 Load 71(uiCubeArray) 73: 65(ResType) ImageSparseRead 72 40 Lod 18 74: 62(ivec4) CompositeExtract 73 1 Store 64(u4) 74 75: 16(int) CompositeExtract 73 0 78: 7(fvec4) Load 9(f4) 79: 62(ivec4) Load 64(u4) 80: 7(fvec4) ConvertUToF 79 81: 7(fvec4) FAdd 78 80 Store 77(fragColor) 81 93: 90 Load 92(i64i1D) 94: 83(i64vec4) ImageRead 93 17 Lod 18 96: 95(ptr) AccessChain 88 89 97: 83(i64vec4) Load 96 98: 83(i64vec4) IAdd 97 94 99: 95(ptr) AccessChain 88 89 Store 99 98 103: 100 Load 102(i64i2D) 104: 83(i64vec4) ImageRead 103 28 Lod 18 105: 95(ptr) AccessChain 88 89 106: 83(i64vec4) Load 105 107: 83(i64vec4) IAdd 106 104 108: 95(ptr) AccessChain 88 89 Store 108 107 112: 109 Load 111(i64i3D) 113: 83(i64vec4) ImageRead 112 40 Lod 18 114: 95(ptr) AccessChain 88 89 115: 83(i64vec4) Load 114 116: 83(i64vec4) IAdd 115 113 117: 95(ptr) AccessChain 88 89 Store 117 116 121: 118 Load 120(u64iCube) 123: 122(ptr) AccessChain 88 17 124: 85(i64vec4) Load 123 ImageWrite 121 40 124 Lod 18 128: 125 Load 127(u64i1DArray) 129: 122(ptr) AccessChain 88 17 130: 85(i64vec4) Load 129 ImageWrite 128 28 130 Lod 18 134: 131 Load 133(u64i2DArray) 135: 122(ptr) AccessChain 88 17 137:136(ResType) ImageSparseRead 134 40 Lod 18 138: 85(i64vec4) CompositeExtract 137 1 Store 135 138 139: 16(int) CompositeExtract 137 0 143: 140 Load 142(u64iCubeArray) 144: 122(ptr) AccessChain 88 17 145:136(ResType) ImageSparseRead 143 40 Lod 18 146: 85(i64vec4) CompositeExtract 145 1 Store 144 146 147: 16(int) CompositeExtract 145 0 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.int16.amd.frag.out000066400000000000000000001173351506534232700224400ustar00rootroot00000000000000spv.int16.amd.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 576 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability StorageUniform16 Capability StorageInputOutput16 Extension "SPV_AMD_gpu_shader_int16" Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 535 537 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_gpu_shader_half_float" SourceExtension "GL_AMD_gpu_shader_int16" SourceExtension "GL_ARB_gpu_shader_int64" Name 4 "main" Name 6 "literal(" Name 8 "operators(" Name 10 "typeCast(" Name 12 "builtinFuncs(" Name 16 "u16" Name 25 "Uniforms" MemberName 25(Uniforms) 0 "i" Name 27 "" Name 34 "indexable" Name 45 "indexable" Name 51 "u16v" Name 57 "i16" Name 70 "u16" Name 127 "b" Name 148 "u" Name 159 "i" Name 189 "i16v" Name 192 "bv" Name 200 "u16v" Name 213 "iv" Name 226 "uv" Name 240 "fv" Name 252 "dv" Name 264 "f16v" Name 276 "i64v" Name 290 "u64v" Name 305 "i16v" Name 311 "i16" Name 319 "u16v" Name 321 "u16" Name 393 "f16v" Name 396 "exp" Name 397 "ResType" Name 420 "packi" Name 425 "packu" Name 436 "packi64" Name 445 "packu64" Name 454 "bv" Name 531 "Block" MemberName 531(Block) 0 "i16v" MemberName 531(Block) 1 "u16" Name 533 "block" Name 535 "iu16v" Name 537 "ii16" Name 538 "si64" Name 539 "su64" Name 540 "si" Name 541 "su" Name 542 "sb" Name 543 "si16" Name 544 "su16" Name 545 "i16_to_b" Name 546 "u16_to_b" Name 547 "b_to_i16" Name 548 "b_to_u16" Name 549 "i16_to_i" Name 551 "u16_to_i" Name 552 "i_to_i16" Name 554 "i_to_u16" Name 556 "i16_to_u" Name 557 "u16_to_u" Name 559 "u_to_i16" Name 560 "u_to_u16" Name 561 "i16_to_i64" Name 564 "u16_to_i64" Name 565 "i64_to_i16" Name 567 "i64_to_u16" Name 569 "i16_to_u64" Name 570 "u16_to_u64" Name 572 "u64_to_i16" Name 573 "u64_to_u16" Name 574 "i16_to_u16" Name 575 "u16_to_i16" Decorate 25(Uniforms) Block MemberDecorate 25(Uniforms) 0 Offset 0 Decorate 27 Binding 0 Decorate 27 DescriptorSet 0 Decorate 531(Block) Block MemberDecorate 531(Block) 0 Offset 0 MemberDecorate 531(Block) 1 Offset 6 Decorate 533(block) Binding 1 Decorate 533(block) DescriptorSet 0 Decorate 535(iu16v) Flat Decorate 535(iu16v) Location 0 Decorate 537(ii16) Flat Decorate 537(ii16) Location 1 Decorate 538(si64) SpecId 100 Decorate 539(su64) SpecId 101 Decorate 540(si) SpecId 102 Decorate 541(su) SpecId 103 Decorate 542(sb) SpecId 104 Decorate 543(si16) SpecId 105 Decorate 544(su16) SpecId 106 2: TypeVoid 3: TypeFunction 2 14: TypeInt 16 0 15: TypePointer Function 14(int16_t) 17: TypeInt 16 1 18: TypeInt 32 0 19: 18(int) Constant 3 20: TypeArray 17(int16_t) 19 21: 17(int16_t) Constant 273 22: 17(int16_t) Constant 4294967294 23: 17(int16_t) Constant 256 24: 20 ConstantComposite 21 22 23 25(Uniforms): TypeStruct 18(int) 26: TypePointer Uniform 25(Uniforms) 27: 26(ptr) Variable Uniform 28: TypeInt 32 1 29: 28(int) Constant 0 30: TypePointer Uniform 18(int) 33: TypePointer Function 20 35: TypePointer Function 17(int16_t) 39: TypeArray 14(int16_t) 19 40: 14(int16_t) Constant 65535 41: 39 ConstantComposite 40 40 40 44: TypePointer Function 39 49: TypeVector 14(int16_t) 3 50: TypePointer Function 49(i16vec3) 53: 17(int16_t) Constant 1 54: TypeVector 17(int16_t) 3 111: 18(int) Constant 1 117: 18(int) Constant 2 125: TypeBool 126: TypePointer Function 125(bool) 128: 18(int) Constant 0 147: TypePointer Function 18(int) 158: TypePointer Function 28(int) 187: TypeVector 17(int16_t) 2 188: TypePointer Function 187(i16vec2) 190: TypeVector 125(bool) 2 191: TypePointer Function 190(bvec2) 194: 17(int16_t) Constant 0 195:187(i16vec2) ConstantComposite 194 194 196:187(i16vec2) ConstantComposite 53 53 198: TypeVector 14(int16_t) 2 199: TypePointer Function 198(i16vec2) 202: 14(int16_t) Constant 0 203: 14(int16_t) Constant 1 204:198(i16vec2) ConstantComposite 202 202 205:198(i16vec2) ConstantComposite 203 203 211: TypeVector 28(int) 2 212: TypePointer Function 211(ivec2) 222: TypeVector 18(int) 2 225: TypePointer Function 222(ivec2) 237: TypeFloat 32 238: TypeVector 237(float) 2 239: TypePointer Function 238(fvec2) 249: TypeFloat 64 250: TypeVector 249(float64_t) 2 251: TypePointer Function 250(f64vec2) 261: TypeFloat 16 262: TypeVector 261(float16_t) 2 263: TypePointer Function 262(f16vec2) 273: TypeInt 64 1 274: TypeVector 273(int64_t) 2 275: TypePointer Function 274(i64vec2) 285: TypeInt 64 0 286: TypeVector 285(int64_t) 2 289: TypePointer Function 286(i64vec2) 316: 17(int16_t) Constant 4294967295 317:187(i16vec2) ConstantComposite 316 316 326: 49(i16vec3) ConstantComposite 202 202 202 368: 125(bool) ConstantTrue 375: 125(bool) ConstantFalse 376: 190(bvec2) ConstantComposite 375 375 388: TypeVector 125(bool) 3 389: 388(bvec3) ConstantComposite 375 375 375 391: TypeVector 261(float16_t) 3 392: TypePointer Function 391(f16vec3) 395: TypePointer Function 54(i16vec3) 397(ResType): TypeStruct 391(f16vec3) 54(i16vec3) 407: TypePointer Function 261(float16_t) 435: TypePointer Function 273(int64_t) 438: TypeVector 17(int16_t) 4 444: TypePointer Function 285(int64_t) 447: TypeVector 14(int16_t) 4 453: TypePointer Function 388(bvec3) 531(Block): TypeStruct 54(i16vec3) 14(int16_t) 532: TypePointer Uniform 531(Block) 533(block): 532(ptr) Variable Uniform 534: TypePointer Input 49(i16vec3) 535(iu16v): 534(ptr) Variable Input 536: TypePointer Input 17(int16_t) 537(ii16): 536(ptr) Variable Input 538(si64):273(int64_t) SpecConstant 4294967286 4294967295 539(su64):285(int64_t) SpecConstant 20 0 540(si): 28(int) SpecConstant 4294967291 541(su): 18(int) SpecConstant 4 542(sb): 125(bool) SpecConstantTrue 543(si16): 17(int16_t) SpecConstant 4294967291 544(su16): 14(int16_t) SpecConstant 4 545(i16_to_b): 125(bool) SpecConstantOp 171 543(si16) 202 546(u16_to_b): 125(bool) SpecConstantOp 171 544(su16) 202 547(b_to_i16): 17(int16_t) SpecConstantOp 169 542(sb) 53 194 548(b_to_u16): 14(int16_t) SpecConstantOp 169 542(sb) 203 202 549(i16_to_i): 28(int) SpecConstantOp 114 543(si16) 550: 18(int) SpecConstantOp 113 544(su16) 551(u16_to_i): 28(int) SpecConstantOp 128 550 128 552(i_to_i16): 17(int16_t) SpecConstantOp 114 540(si) 553: 17(int16_t) SpecConstantOp 114 540(si) 554(i_to_u16): 14(int16_t) SpecConstantOp 128 553 202 555: 28(int) SpecConstantOp 114 543(si16) 556(i16_to_u): 18(int) SpecConstantOp 128 555 128 557(u16_to_u): 18(int) SpecConstantOp 113 544(su16) 558: 14(int16_t) SpecConstantOp 113 541(su) 559(u_to_i16): 17(int16_t) SpecConstantOp 128 558 202 560(u_to_u16): 14(int16_t) SpecConstantOp 113 541(su) 561(i16_to_i64):273(int64_t) SpecConstantOp 114 543(si16) 562:285(int64_t) SpecConstantOp 113 544(su16) 563:285(int64_t) Constant 0 0 564(u16_to_i64):273(int64_t) SpecConstantOp 128 562 563 565(i64_to_i16): 17(int16_t) SpecConstantOp 114 538(si64) 566: 17(int16_t) SpecConstantOp 114 538(si64) 567(i64_to_u16): 14(int16_t) SpecConstantOp 128 566 202 568:273(int64_t) SpecConstantOp 114 543(si16) 569(i16_to_u64):285(int64_t) SpecConstantOp 128 568 563 570(u16_to_u64):285(int64_t) SpecConstantOp 113 544(su16) 571: 14(int16_t) SpecConstantOp 113 539(su64) 572(u64_to_i16): 17(int16_t) SpecConstantOp 128 571 202 573(u64_to_u16): 14(int16_t) SpecConstantOp 113 539(su64) 574(i16_to_u16): 14(int16_t) SpecConstantOp 128 543(si16) 202 575(u16_to_i16): 17(int16_t) SpecConstantOp 128 544(su16) 202 4(main): 2 Function None 3 5: Label 527: 2 FunctionCall 6(literal() 528: 2 FunctionCall 8(operators() 529: 2 FunctionCall 10(typeCast() 530: 2 FunctionCall 12(builtinFuncs() Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 16(u16): 15(ptr) Variable Function 34(indexable): 33(ptr) Variable Function 45(indexable): 44(ptr) Variable Function 31: 30(ptr) AccessChain 27 29 32: 18(int) Load 31 Store 34(indexable) 24 36: 35(ptr) AccessChain 34(indexable) 32 37: 17(int16_t) Load 36 38: 14(int16_t) Bitcast 37 42: 30(ptr) AccessChain 27 29 43: 18(int) Load 42 Store 45(indexable) 41 46: 15(ptr) AccessChain 45(indexable) 43 47: 14(int16_t) Load 46 48: 14(int16_t) IAdd 38 47 Store 16(u16) 48 Return FunctionEnd 8(operators(): 2 Function None 3 9: Label 51(u16v): 50(ptr) Variable Function 57(i16): 35(ptr) Variable Function 70(u16): 15(ptr) Variable Function 127(b): 126(ptr) Variable Function 148(u): 147(ptr) Variable Function 159(i): 158(ptr) Variable Function 52: 49(i16vec3) Load 51(u16v) 55: 54(i16vec3) CompositeConstruct 53 53 53 56: 49(i16vec3) IAdd 52 55 Store 51(u16v) 56 58: 17(int16_t) Load 57(i16) 59: 17(int16_t) ISub 58 53 Store 57(i16) 59 60: 17(int16_t) Load 57(i16) 61: 17(int16_t) IAdd 60 53 Store 57(i16) 61 62: 49(i16vec3) Load 51(u16v) 63: 54(i16vec3) CompositeConstruct 53 53 53 64: 49(i16vec3) ISub 62 63 Store 51(u16v) 64 65: 49(i16vec3) Load 51(u16v) 66: 49(i16vec3) Not 65 Store 51(u16v) 66 67: 17(int16_t) Load 57(i16) Store 57(i16) 67 68: 49(i16vec3) Load 51(u16v) 69: 49(i16vec3) SNegate 68 Store 51(u16v) 69 71: 17(int16_t) Load 57(i16) 72: 14(int16_t) Bitcast 71 73: 14(int16_t) Load 70(u16) 74: 14(int16_t) IAdd 73 72 Store 70(u16) 74 75: 49(i16vec3) Load 51(u16v) 76: 49(i16vec3) Load 51(u16v) 77: 49(i16vec3) ISub 76 75 Store 51(u16v) 77 78: 17(int16_t) Load 57(i16) 79: 17(int16_t) Load 57(i16) 80: 17(int16_t) IMul 79 78 Store 57(i16) 80 81: 49(i16vec3) Load 51(u16v) 82: 49(i16vec3) Load 51(u16v) 83: 49(i16vec3) UDiv 82 81 Store 51(u16v) 83 84: 17(int16_t) Load 57(i16) 85: 14(int16_t) Bitcast 84 86: 49(i16vec3) Load 51(u16v) 87: 49(i16vec3) CompositeConstruct 85 85 85 88: 49(i16vec3) UMod 86 87 Store 51(u16v) 88 89: 49(i16vec3) Load 51(u16v) 90: 49(i16vec3) Load 51(u16v) 91: 49(i16vec3) IAdd 89 90 Store 51(u16v) 91 92: 17(int16_t) Load 57(i16) 93: 14(int16_t) Bitcast 92 94: 14(int16_t) Load 70(u16) 95: 14(int16_t) ISub 93 94 Store 70(u16) 95 96: 49(i16vec3) Load 51(u16v) 97: 17(int16_t) Load 57(i16) 98: 14(int16_t) Bitcast 97 99: 49(i16vec3) CompositeConstruct 98 98 98 100: 49(i16vec3) IMul 96 99 Store 51(u16v) 100 101: 17(int16_t) Load 57(i16) 102: 17(int16_t) Load 57(i16) 103: 17(int16_t) IMul 101 102 Store 57(i16) 103 104: 17(int16_t) Load 57(i16) 105: 17(int16_t) Load 57(i16) 106: 17(int16_t) SMod 104 105 Store 57(i16) 106 107: 17(int16_t) Load 57(i16) 108: 49(i16vec3) Load 51(u16v) 109: 54(i16vec3) CompositeConstruct 107 107 107 110: 49(i16vec3) ShiftLeftLogical 108 109 Store 51(u16v) 110 112: 15(ptr) AccessChain 51(u16v) 111 113: 14(int16_t) Load 112 114: 17(int16_t) Load 57(i16) 115: 17(int16_t) ShiftRightArithmetic 114 113 Store 57(i16) 115 116: 17(int16_t) Load 57(i16) 118: 15(ptr) AccessChain 51(u16v) 117 119: 14(int16_t) Load 118 120: 17(int16_t) ShiftLeftLogical 116 119 Store 57(i16) 120 121: 49(i16vec3) Load 51(u16v) 122: 17(int16_t) Load 57(i16) 123: 54(i16vec3) CompositeConstruct 122 122 122 124: 49(i16vec3) ShiftLeftLogical 121 123 Store 51(u16v) 124 129: 15(ptr) AccessChain 51(u16v) 128 130: 14(int16_t) Load 129 131: 17(int16_t) Load 57(i16) 132: 14(int16_t) Bitcast 131 133: 125(bool) INotEqual 130 132 Store 127(b) 133 134: 17(int16_t) Load 57(i16) 135: 14(int16_t) Bitcast 134 136: 15(ptr) AccessChain 51(u16v) 128 137: 14(int16_t) Load 136 138: 125(bool) IEqual 135 137 Store 127(b) 138 139: 15(ptr) AccessChain 51(u16v) 128 140: 14(int16_t) Load 139 141: 15(ptr) AccessChain 51(u16v) 111 142: 14(int16_t) Load 141 143: 125(bool) UGreaterThan 140 142 Store 127(b) 143 144: 17(int16_t) Load 57(i16) 145: 28(int) SConvert 144 146: 18(int) Bitcast 145 149: 18(int) Load 148(u) 150: 125(bool) ULessThan 146 149 Store 127(b) 150 151: 15(ptr) AccessChain 51(u16v) 111 152: 14(int16_t) Load 151 153: 15(ptr) AccessChain 51(u16v) 128 154: 14(int16_t) Load 153 155: 125(bool) UGreaterThanEqual 152 154 Store 127(b) 155 156: 17(int16_t) Load 57(i16) 157: 28(int) SConvert 156 160: 28(int) Load 159(i) 161: 125(bool) SLessThanEqual 157 160 Store 127(b) 161 162: 17(int16_t) Load 57(i16) 163: 14(int16_t) Bitcast 162 164: 49(i16vec3) Load 51(u16v) 165: 49(i16vec3) CompositeConstruct 163 163 163 166: 49(i16vec3) BitwiseOr 164 165 Store 51(u16v) 166 167: 17(int16_t) Load 57(i16) 168: 14(int16_t) Bitcast 167 169: 14(int16_t) Load 70(u16) 170: 14(int16_t) BitwiseOr 168 169 Store 70(u16) 170 171: 17(int16_t) Load 57(i16) 172: 17(int16_t) Load 57(i16) 173: 17(int16_t) BitwiseAnd 172 171 Store 57(i16) 173 174: 49(i16vec3) Load 51(u16v) 175: 49(i16vec3) Load 51(u16v) 176: 49(i16vec3) BitwiseAnd 174 175 Store 51(u16v) 176 177: 17(int16_t) Load 57(i16) 178: 14(int16_t) Bitcast 177 179: 49(i16vec3) Load 51(u16v) 180: 49(i16vec3) CompositeConstruct 178 178 178 181: 49(i16vec3) BitwiseXor 179 180 Store 51(u16v) 181 182: 49(i16vec3) Load 51(u16v) 183: 17(int16_t) Load 57(i16) 184: 14(int16_t) Bitcast 183 185: 49(i16vec3) CompositeConstruct 184 184 184 186: 49(i16vec3) BitwiseXor 182 185 Store 51(u16v) 186 Return FunctionEnd 10(typeCast(): 2 Function None 3 11: Label 189(i16v): 188(ptr) Variable Function 192(bv): 191(ptr) Variable Function 200(u16v): 199(ptr) Variable Function 213(iv): 212(ptr) Variable Function 226(uv): 225(ptr) Variable Function 240(fv): 239(ptr) Variable Function 252(dv): 251(ptr) Variable Function 264(f16v): 263(ptr) Variable Function 276(i64v): 275(ptr) Variable Function 290(u64v): 289(ptr) Variable Function 193: 190(bvec2) Load 192(bv) 197:187(i16vec2) Select 193 196 195 Store 189(i16v) 197 201: 190(bvec2) Load 192(bv) 206:198(i16vec2) Select 201 205 204 Store 200(u16v) 206 207:187(i16vec2) Load 189(i16v) 208: 190(bvec2) INotEqual 207 204 Store 192(bv) 208 209:198(i16vec2) Load 200(u16v) 210: 190(bvec2) INotEqual 209 204 Store 192(bv) 210 214: 211(ivec2) Load 213(iv) 215:187(i16vec2) SConvert 214 Store 189(i16v) 215 216: 211(ivec2) Load 213(iv) 217:187(i16vec2) SConvert 216 218:198(i16vec2) Bitcast 217 Store 200(u16v) 218 219:187(i16vec2) Load 189(i16v) 220: 211(ivec2) SConvert 219 Store 213(iv) 220 221:198(i16vec2) Load 200(u16v) 223: 222(ivec2) UConvert 221 224: 211(ivec2) Bitcast 223 Store 213(iv) 224 227: 222(ivec2) Load 226(uv) 228:198(i16vec2) UConvert 227 229:187(i16vec2) Bitcast 228 Store 189(i16v) 229 230: 222(ivec2) Load 226(uv) 231:198(i16vec2) UConvert 230 Store 200(u16v) 231 232:187(i16vec2) Load 189(i16v) 233: 211(ivec2) SConvert 232 234: 222(ivec2) Bitcast 233 Store 226(uv) 234 235:198(i16vec2) Load 200(u16v) 236: 222(ivec2) UConvert 235 Store 226(uv) 236 241: 238(fvec2) Load 240(fv) 242:187(i16vec2) ConvertFToS 241 Store 189(i16v) 242 243: 238(fvec2) Load 240(fv) 244:198(i16vec2) ConvertFToU 243 Store 200(u16v) 244 245:187(i16vec2) Load 189(i16v) 246: 238(fvec2) ConvertSToF 245 Store 240(fv) 246 247:198(i16vec2) Load 200(u16v) 248: 238(fvec2) ConvertUToF 247 Store 240(fv) 248 253:250(f64vec2) Load 252(dv) 254:187(i16vec2) ConvertFToS 253 Store 189(i16v) 254 255:250(f64vec2) Load 252(dv) 256:198(i16vec2) ConvertFToU 255 Store 200(u16v) 256 257:187(i16vec2) Load 189(i16v) 258:250(f64vec2) ConvertSToF 257 Store 252(dv) 258 259:198(i16vec2) Load 200(u16v) 260:250(f64vec2) ConvertUToF 259 Store 252(dv) 260 265:262(f16vec2) Load 264(f16v) 266:187(i16vec2) ConvertFToS 265 Store 189(i16v) 266 267:262(f16vec2) Load 264(f16v) 268:198(i16vec2) ConvertFToU 267 Store 200(u16v) 268 269:187(i16vec2) Load 189(i16v) 270:262(f16vec2) ConvertSToF 269 Store 264(f16v) 270 271:198(i16vec2) Load 200(u16v) 272:262(f16vec2) ConvertUToF 271 Store 264(f16v) 272 277:274(i64vec2) Load 276(i64v) 278:187(i16vec2) SConvert 277 Store 189(i16v) 278 279:274(i64vec2) Load 276(i64v) 280:187(i16vec2) SConvert 279 281:198(i16vec2) Bitcast 280 Store 200(u16v) 281 282:187(i16vec2) Load 189(i16v) 283:274(i64vec2) SConvert 282 Store 276(i64v) 283 284:198(i16vec2) Load 200(u16v) 287:286(i64vec2) UConvert 284 288:274(i64vec2) Bitcast 287 Store 276(i64v) 288 291:286(i64vec2) Load 290(u64v) 292:198(i16vec2) UConvert 291 293:187(i16vec2) Bitcast 292 Store 189(i16v) 293 294:286(i64vec2) Load 290(u64v) 295:198(i16vec2) UConvert 294 Store 200(u16v) 295 296:187(i16vec2) Load 189(i16v) 297:274(i64vec2) SConvert 296 298:286(i64vec2) Bitcast 297 Store 290(u64v) 298 299:198(i16vec2) Load 200(u16v) 300:286(i64vec2) UConvert 299 Store 290(u64v) 300 301:198(i16vec2) Load 200(u16v) 302:187(i16vec2) Bitcast 301 Store 189(i16v) 302 303:187(i16vec2) Load 189(i16v) 304:198(i16vec2) Bitcast 303 Store 200(u16v) 304 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label 305(i16v): 188(ptr) Variable Function 311(i16): 35(ptr) Variable Function 319(u16v): 50(ptr) Variable Function 321(u16): 15(ptr) Variable Function 393(f16v): 392(ptr) Variable Function 396(exp): 395(ptr) Variable Function 420(packi): 158(ptr) Variable Function 425(packu): 147(ptr) Variable Function 436(packi64): 435(ptr) Variable Function 445(packu64): 444(ptr) Variable Function 454(bv): 453(ptr) Variable Function 306:187(i16vec2) Load 305(i16v) 307:187(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 306 Store 305(i16v) 307 308:187(i16vec2) Load 305(i16v) 309:187(i16vec2) ExtInst 1(GLSL.std.450) 7(SSign) 308 Store 305(i16v) 309 310:187(i16vec2) Load 305(i16v) 312: 17(int16_t) Load 311(i16) 313:187(i16vec2) CompositeConstruct 312 312 314:187(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 310 313 Store 305(i16v) 314 315:187(i16vec2) Load 305(i16v) 318:187(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 315 317 Store 305(i16v) 318 320: 49(i16vec3) Load 319(u16v) 322: 14(int16_t) Load 321(u16) 323: 49(i16vec3) CompositeConstruct 322 322 322 324: 49(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 320 323 Store 319(u16v) 324 325: 49(i16vec3) Load 319(u16v) 327: 49(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 325 326 Store 319(u16v) 327 328:187(i16vec2) Load 305(i16v) 329: 17(int16_t) Load 311(i16) 330:187(i16vec2) CompositeConstruct 329 329 331:187(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 328 330 Store 305(i16v) 331 332:187(i16vec2) Load 305(i16v) 333:187(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 332 317 Store 305(i16v) 333 334: 49(i16vec3) Load 319(u16v) 335: 14(int16_t) Load 321(u16) 336: 49(i16vec3) CompositeConstruct 335 335 335 337: 49(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 334 336 Store 319(u16v) 337 338: 49(i16vec3) Load 319(u16v) 339: 49(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 338 326 Store 319(u16v) 339 340:187(i16vec2) Load 305(i16v) 341: 17(int16_t) Load 311(i16) 342: 17(int16_t) SNegate 341 343: 17(int16_t) Load 311(i16) 344:187(i16vec2) CompositeConstruct 342 342 345:187(i16vec2) CompositeConstruct 343 343 346:187(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 340 344 345 Store 305(i16v) 346 347:187(i16vec2) Load 305(i16v) 348:187(i16vec2) Load 305(i16v) 349:187(i16vec2) SNegate 348 350:187(i16vec2) Load 305(i16v) 351:187(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 347 349 350 Store 305(i16v) 351 352: 49(i16vec3) Load 319(u16v) 353: 14(int16_t) Load 321(u16) 354: 14(int16_t) SNegate 353 355: 14(int16_t) Load 321(u16) 356: 49(i16vec3) CompositeConstruct 354 354 354 357: 49(i16vec3) CompositeConstruct 355 355 355 358: 49(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 352 356 357 Store 319(u16v) 358 359: 49(i16vec3) Load 319(u16v) 360: 49(i16vec3) Load 319(u16v) 361: 49(i16vec3) SNegate 360 362: 49(i16vec3) Load 319(u16v) 363: 49(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 359 361 362 Store 319(u16v) 363 364: 35(ptr) AccessChain 305(i16v) 128 365: 17(int16_t) Load 364 366: 35(ptr) AccessChain 305(i16v) 111 367: 17(int16_t) Load 366 369: 17(int16_t) Select 368 367 365 Store 311(i16) 369 370: 17(int16_t) Load 311(i16) 371:187(i16vec2) CompositeConstruct 370 370 372: 17(int16_t) Load 311(i16) 373: 17(int16_t) SNegate 372 374:187(i16vec2) CompositeConstruct 373 373 377:187(i16vec2) Select 376 374 371 Store 305(i16v) 377 378: 15(ptr) AccessChain 319(u16v) 128 379: 14(int16_t) Load 378 380: 15(ptr) AccessChain 319(u16v) 111 381: 14(int16_t) Load 380 382: 14(int16_t) Select 368 381 379 Store 321(u16) 382 383: 14(int16_t) Load 321(u16) 384: 49(i16vec3) CompositeConstruct 383 383 383 385: 14(int16_t) Load 321(u16) 386: 14(int16_t) SNegate 385 387: 49(i16vec3) CompositeConstruct 386 386 386 390: 49(i16vec3) Select 389 387 384 Store 319(u16v) 390 394:391(f16vec3) Load 393(f16v) 398:397(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 394 399: 54(i16vec3) CompositeExtract 398 1 Store 396(exp) 399 400:391(f16vec3) CompositeExtract 398 0 Store 393(f16v) 400 401:391(f16vec3) Load 393(f16v) 402: 54(i16vec3) Load 396(exp) 403:391(f16vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 401 402 Store 393(f16v) 403 404:391(f16vec3) Load 393(f16v) 405:262(f16vec2) VectorShuffle 404 404 0 1 406:187(i16vec2) Bitcast 405 Store 305(i16v) 406 408: 407(ptr) AccessChain 393(f16v) 117 409:261(float16_t) Load 408 410: 14(int16_t) Bitcast 409 411: 15(ptr) AccessChain 319(u16v) 128 Store 411 410 412:187(i16vec2) Load 305(i16v) 413:262(f16vec2) Bitcast 412 414: 407(ptr) AccessChain 393(f16v) 128 415:261(float16_t) CompositeExtract 413 0 Store 414 415 416: 407(ptr) AccessChain 393(f16v) 111 417:261(float16_t) CompositeExtract 413 1 Store 416 417 418: 49(i16vec3) Load 319(u16v) 419:391(f16vec3) Bitcast 418 Store 393(f16v) 419 421:187(i16vec2) Load 305(i16v) 422: 28(int) Bitcast 421 Store 420(packi) 422 423: 28(int) Load 420(packi) 424:187(i16vec2) Bitcast 423 Store 305(i16v) 424 426: 49(i16vec3) Load 319(u16v) 427:198(i16vec2) VectorShuffle 426 426 0 1 428: 18(int) Bitcast 427 Store 425(packu) 428 429: 18(int) Load 425(packu) 430:198(i16vec2) Bitcast 429 431: 15(ptr) AccessChain 319(u16v) 128 432: 14(int16_t) CompositeExtract 430 0 Store 431 432 433: 15(ptr) AccessChain 319(u16v) 111 434: 14(int16_t) CompositeExtract 430 1 Store 433 434 437: 17(int16_t) Load 311(i16) 439:438(i16vec4) CompositeConstruct 437 437 437 437 440:273(int64_t) Bitcast 439 Store 436(packi64) 440 441:273(int64_t) Load 436(packi64) 442:438(i16vec4) Bitcast 441 443:187(i16vec2) VectorShuffle 442 442 0 1 Store 305(i16v) 443 446: 14(int16_t) Load 321(u16) 448:447(i16vec4) CompositeConstruct 446 446 446 446 449:285(int64_t) Bitcast 448 Store 445(packu64) 449 450:285(int64_t) Load 445(packu64) 451:447(i16vec4) Bitcast 450 452: 49(i16vec3) VectorShuffle 451 451 0 1 2 Store 319(u16v) 452 455: 49(i16vec3) Load 319(u16v) 456: 14(int16_t) Load 321(u16) 457: 49(i16vec3) CompositeConstruct 456 456 456 458: 388(bvec3) ULessThan 455 457 Store 454(bv) 458 459:187(i16vec2) Load 305(i16v) 460: 17(int16_t) Load 311(i16) 461:187(i16vec2) CompositeConstruct 460 460 462: 190(bvec2) SLessThan 459 461 463: 126(ptr) AccessChain 454(bv) 128 464: 125(bool) CompositeExtract 462 0 Store 463 464 465: 126(ptr) AccessChain 454(bv) 111 466: 125(bool) CompositeExtract 462 1 Store 465 466 467: 49(i16vec3) Load 319(u16v) 468: 14(int16_t) Load 321(u16) 469: 49(i16vec3) CompositeConstruct 468 468 468 470: 388(bvec3) ULessThanEqual 467 469 Store 454(bv) 470 471:187(i16vec2) Load 305(i16v) 472: 17(int16_t) Load 311(i16) 473:187(i16vec2) CompositeConstruct 472 472 474: 190(bvec2) SLessThanEqual 471 473 475: 126(ptr) AccessChain 454(bv) 128 476: 125(bool) CompositeExtract 474 0 Store 475 476 477: 126(ptr) AccessChain 454(bv) 111 478: 125(bool) CompositeExtract 474 1 Store 477 478 479: 49(i16vec3) Load 319(u16v) 480: 14(int16_t) Load 321(u16) 481: 49(i16vec3) CompositeConstruct 480 480 480 482: 388(bvec3) UGreaterThan 479 481 Store 454(bv) 482 483:187(i16vec2) Load 305(i16v) 484: 17(int16_t) Load 311(i16) 485:187(i16vec2) CompositeConstruct 484 484 486: 190(bvec2) SGreaterThan 483 485 487: 126(ptr) AccessChain 454(bv) 128 488: 125(bool) CompositeExtract 486 0 Store 487 488 489: 126(ptr) AccessChain 454(bv) 111 490: 125(bool) CompositeExtract 486 1 Store 489 490 491: 49(i16vec3) Load 319(u16v) 492: 14(int16_t) Load 321(u16) 493: 49(i16vec3) CompositeConstruct 492 492 492 494: 388(bvec3) UGreaterThanEqual 491 493 Store 454(bv) 494 495:187(i16vec2) Load 305(i16v) 496: 17(int16_t) Load 311(i16) 497:187(i16vec2) CompositeConstruct 496 496 498: 190(bvec2) SGreaterThanEqual 495 497 499: 126(ptr) AccessChain 454(bv) 128 500: 125(bool) CompositeExtract 498 0 Store 499 500 501: 126(ptr) AccessChain 454(bv) 111 502: 125(bool) CompositeExtract 498 1 Store 501 502 503: 49(i16vec3) Load 319(u16v) 504: 14(int16_t) Load 321(u16) 505: 49(i16vec3) CompositeConstruct 504 504 504 506: 388(bvec3) IEqual 503 505 Store 454(bv) 506 507:187(i16vec2) Load 305(i16v) 508: 17(int16_t) Load 311(i16) 509:187(i16vec2) CompositeConstruct 508 508 510: 190(bvec2) IEqual 507 509 511: 126(ptr) AccessChain 454(bv) 128 512: 125(bool) CompositeExtract 510 0 Store 511 512 513: 126(ptr) AccessChain 454(bv) 111 514: 125(bool) CompositeExtract 510 1 Store 513 514 515: 49(i16vec3) Load 319(u16v) 516: 14(int16_t) Load 321(u16) 517: 49(i16vec3) CompositeConstruct 516 516 516 518: 388(bvec3) INotEqual 515 517 Store 454(bv) 518 519:187(i16vec2) Load 305(i16v) 520: 17(int16_t) Load 311(i16) 521:187(i16vec2) CompositeConstruct 520 520 522: 190(bvec2) INotEqual 519 521 523: 126(ptr) AccessChain 454(bv) 128 524: 125(bool) CompositeExtract 522 0 Store 523 524 525: 126(ptr) AccessChain 454(bv) 111 526: 125(bool) CompositeExtract 522 1 Store 525 526 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.int16.frag.out000066400000000000000000001125631506534232700216760ustar00rootroot00000000000000spv.int16.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 549 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 6 "literal(" Name 8 "typeCast16(" Name 10 "operators(" Name 12 "builtinFuncs(" Name 16 "i16" Name 24 "Uniforms" MemberName 24(Uniforms) 0 "index" Name 26 "" Name 33 "indexable" Name 38 "u16" Name 46 "indexable" Name 51 "i32v" Name 54 "i16v" Name 59 "u16v" Name 67 "u32v" Name 74 "i64v" Name 80 "u64v" Name 94 "f16v" Name 100 "f32v" Name 106 "f64v" Name 154 "i8v" Name 163 "u8v" Name 176 "bv" Name 196 "arr" Name 204 "u16v" Name 209 "i16" Name 229 "i" Name 236 "uv" Name 252 "i64" Name 290 "b" Name 353 "f" Name 357 "i16v" Name 360 "i16" Name 370 "u16v" Name 372 "u16" Name 442 "i32" Name 445 "i64" Name 448 "i16v4" Name 451 "u32" Name 452 "u16v2" Name 456 "u64" Name 459 "u16v4" Name 471 "bv" Name 544 "Block" MemberName 544(Block) 0 "i16" MemberName 544(Block) 1 "i16v2" MemberName 544(Block) 2 "i16v3" MemberName 544(Block) 3 "i16v4" MemberName 544(Block) 4 "u16" MemberName 544(Block) 5 "u16v2" MemberName 544(Block) 6 "u16v3" MemberName 544(Block) 7 "u16v4" Name 546 "block" Name 547 "si16" Name 548 "su16" Decorate 24(Uniforms) Block MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 26 Binding 0 Decorate 26 DescriptorSet 0 Decorate 544(Block) Block MemberDecorate 544(Block) 0 Offset 0 MemberDecorate 544(Block) 1 Offset 4 MemberDecorate 544(Block) 2 Offset 8 MemberDecorate 544(Block) 3 Offset 16 MemberDecorate 544(Block) 4 Offset 24 MemberDecorate 544(Block) 5 Offset 28 MemberDecorate 544(Block) 6 Offset 32 MemberDecorate 544(Block) 7 Offset 40 Decorate 546(block) Binding 1 Decorate 546(block) DescriptorSet 0 Decorate 547(si16) SpecId 100 Decorate 548(su16) SpecId 101 2: TypeVoid 3: TypeFunction 2 14: TypeInt 16 1 15: TypePointer Function 14(int16_t) 17: TypeInt 32 0 18: 17(int) Constant 3 19: TypeArray 14(int16_t) 18 20: 14(int16_t) Constant 4294962927 21: 14(int16_t) Constant 4294967295 22: 14(int16_t) Constant 16384 23: 19 ConstantComposite 20 21 22 24(Uniforms): TypeStruct 17(int) 25: TypePointer Uniform 24(Uniforms) 26: 25(ptr) Variable Uniform 27: TypeInt 32 1 28: 27(int) Constant 0 29: TypePointer Uniform 17(int) 32: TypePointer Function 19 36: TypeInt 16 0 37: TypePointer Function 36(int16_t) 39: TypeArray 36(int16_t) 18 40: 36(int16_t) Constant 65535 41: 36(int16_t) Constant 32767 42: 39 ConstantComposite 40 40 41 45: TypePointer Function 39 49: TypeVector 27(int) 2 50: TypePointer Function 49(ivec2) 52: TypeVector 14(int16_t) 2 53: TypePointer Function 52(i16vec2) 57: TypeVector 36(int16_t) 2 58: TypePointer Function 57(i16vec2) 61: TypeVector 17(int) 2 66: TypePointer Function 61(ivec2) 71: TypeInt 64 1 72: TypeVector 71(int64_t) 2 73: TypePointer Function 72(i64vec2) 77: TypeInt 64 0 78: TypeVector 77(int64_t) 2 79: TypePointer Function 78(i64vec2) 91: TypeFloat 16 92: TypeVector 91(float16_t) 2 93: TypePointer Function 92(f16vec2) 97: TypeFloat 32 98: TypeVector 97(float) 2 99: TypePointer Function 98(fvec2) 103: TypeFloat 64 104: TypeVector 103(float64_t) 2 105: TypePointer Function 104(f64vec2) 151: TypeInt 8 1 152: TypeVector 151(int8_t) 2 153: TypePointer Function 152(i8vec2) 158: TypeInt 8 0 159: TypeVector 158(int8_t) 2 162: TypePointer Function 159(i8vec2) 173: TypeBool 174: TypeVector 173(bool) 2 175: TypePointer Function 174(bvec2) 178: 14(int16_t) Constant 0 179: 14(int16_t) Constant 1 180: 52(i16vec2) ConstantComposite 178 178 181: 52(i16vec2) ConstantComposite 179 179 184: 36(int16_t) Constant 0 185: 36(int16_t) Constant 1 186: 57(i16vec2) ConstantComposite 184 184 187: 57(i16vec2) ConstantComposite 185 185 193: 17(int) Constant 4 194: TypeArray 97(float) 193 195: TypePointer Function 194 197: 97(float) Constant 1065353216 198: 97(float) Constant 1073741824 199: 97(float) Constant 1077936128 200: 97(float) Constant 1082130432 201: 194 ConstantComposite 197 198 199 200 202: TypeVector 36(int16_t) 3 203: TypePointer Function 202(i16vec3) 206: TypeVector 14(int16_t) 3 228: TypePointer Function 27(int) 234: TypeVector 17(int) 3 235: TypePointer Function 234(ivec3) 251: TypePointer Function 71(int64_t) 273: 17(int) Constant 1 279: 17(int) Constant 2 285: TypeVector 27(int) 3 289: TypePointer Function 173(bool) 291: 17(int) Constant 0 305: TypePointer Function 17(int) 352: TypePointer Function 97(float) 368: 52(i16vec2) ConstantComposite 21 21 377:202(i16vec3) ConstantComposite 184 184 184 419: 173(bool) ConstantTrue 426: 173(bool) ConstantFalse 427: 174(bvec2) ConstantComposite 426 426 439: TypeVector 173(bool) 3 440: 439(bvec3) ConstantComposite 426 426 426 446: TypeVector 14(int16_t) 4 447: TypePointer Function 446(i16vec4) 455: TypePointer Function 77(int64_t) 457: TypeVector 36(int16_t) 4 458: TypePointer Function 457(i16vec4) 470: TypePointer Function 439(bvec3) 544(Block): TypeStruct 14(int16_t) 52(i16vec2) 206(i16vec3) 446(i16vec4) 36(int16_t) 57(i16vec2) 202(i16vec3) 457(i16vec4) 545: TypePointer Uniform 544(Block) 546(block): 545(ptr) Variable Uniform 547(si16): 14(int16_t) SpecConstant 4294967286 548(su16): 36(int16_t) SpecConstant 20 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 16(i16): 15(ptr) Variable Function 33(indexable): 32(ptr) Variable Function 38(u16): 37(ptr) Variable Function 46(indexable): 45(ptr) Variable Function 30: 29(ptr) AccessChain 26 28 31: 17(int) Load 30 Store 33(indexable) 23 34: 15(ptr) AccessChain 33(indexable) 31 35: 14(int16_t) Load 34 Store 16(i16) 35 43: 29(ptr) AccessChain 26 28 44: 17(int) Load 43 Store 46(indexable) 42 47: 37(ptr) AccessChain 46(indexable) 44 48: 36(int16_t) Load 47 Store 38(u16) 48 Return FunctionEnd 8(typeCast16(): 2 Function None 3 9: Label 51(i32v): 50(ptr) Variable Function 54(i16v): 53(ptr) Variable Function 59(u16v): 58(ptr) Variable Function 67(u32v): 66(ptr) Variable Function 74(i64v): 73(ptr) Variable Function 80(u64v): 79(ptr) Variable Function 94(f16v): 93(ptr) Variable Function 100(f32v): 99(ptr) Variable Function 106(f64v): 105(ptr) Variable Function 154(i8v): 153(ptr) Variable Function 163(u8v): 162(ptr) Variable Function 176(bv): 175(ptr) Variable Function 55: 52(i16vec2) Load 54(i16v) 56: 49(ivec2) SConvert 55 Store 51(i32v) 56 60: 57(i16vec2) Load 59(u16v) 62: 61(ivec2) UConvert 60 63: 49(ivec2) Bitcast 62 Store 51(i32v) 63 64: 52(i16vec2) Load 54(i16v) 65: 57(i16vec2) Bitcast 64 Store 59(u16v) 65 68: 52(i16vec2) Load 54(i16v) 69: 49(ivec2) SConvert 68 70: 61(ivec2) Bitcast 69 Store 67(u32v) 70 75: 52(i16vec2) Load 54(i16v) 76: 72(i64vec2) SConvert 75 Store 74(i64v) 76 81: 52(i16vec2) Load 54(i16v) 82: 72(i64vec2) SConvert 81 83: 78(i64vec2) Bitcast 82 Store 80(u64v) 83 84: 57(i16vec2) Load 59(u16v) 85: 61(ivec2) UConvert 84 Store 67(u32v) 85 86: 57(i16vec2) Load 59(u16v) 87: 78(i64vec2) UConvert 86 88: 72(i64vec2) Bitcast 87 Store 74(i64v) 88 89: 57(i16vec2) Load 59(u16v) 90: 78(i64vec2) UConvert 89 Store 80(u64v) 90 95: 52(i16vec2) Load 54(i16v) 96: 92(f16vec2) ConvertSToF 95 Store 94(f16v) 96 101: 52(i16vec2) Load 54(i16v) 102: 98(fvec2) ConvertSToF 101 Store 100(f32v) 102 107: 52(i16vec2) Load 54(i16v) 108:104(f64vec2) ConvertSToF 107 Store 106(f64v) 108 109: 57(i16vec2) Load 59(u16v) 110: 92(f16vec2) ConvertUToF 109 Store 94(f16v) 110 111: 57(i16vec2) Load 59(u16v) 112: 98(fvec2) ConvertUToF 111 Store 100(f32v) 112 113: 57(i16vec2) Load 59(u16v) 114:104(f64vec2) ConvertUToF 113 Store 106(f64v) 114 115: 52(i16vec2) Load 54(i16v) 116: 49(ivec2) SConvert 115 Store 51(i32v) 116 117: 57(i16vec2) Load 59(u16v) 118: 61(ivec2) UConvert 117 119: 49(ivec2) Bitcast 118 Store 51(i32v) 119 120: 52(i16vec2) Load 54(i16v) 121: 57(i16vec2) Bitcast 120 Store 59(u16v) 121 122: 52(i16vec2) Load 54(i16v) 123: 49(ivec2) SConvert 122 124: 61(ivec2) Bitcast 123 Store 67(u32v) 124 125: 52(i16vec2) Load 54(i16v) 126: 72(i64vec2) SConvert 125 Store 74(i64v) 126 127: 52(i16vec2) Load 54(i16v) 128: 72(i64vec2) SConvert 127 129: 78(i64vec2) Bitcast 128 Store 80(u64v) 129 130: 57(i16vec2) Load 59(u16v) 131: 61(ivec2) UConvert 130 Store 67(u32v) 131 132: 57(i16vec2) Load 59(u16v) 133: 78(i64vec2) UConvert 132 134: 72(i64vec2) Bitcast 133 Store 74(i64v) 134 135: 57(i16vec2) Load 59(u16v) 136: 78(i64vec2) UConvert 135 137: 72(i64vec2) Bitcast 136 138: 78(i64vec2) Bitcast 137 Store 80(u64v) 138 139: 52(i16vec2) Load 54(i16v) 140: 92(f16vec2) ConvertSToF 139 Store 94(f16v) 140 141: 52(i16vec2) Load 54(i16v) 142: 98(fvec2) ConvertSToF 141 Store 100(f32v) 142 143: 52(i16vec2) Load 54(i16v) 144:104(f64vec2) ConvertSToF 143 Store 106(f64v) 144 145: 57(i16vec2) Load 59(u16v) 146: 92(f16vec2) ConvertUToF 145 Store 94(f16v) 146 147: 57(i16vec2) Load 59(u16v) 148: 98(fvec2) ConvertUToF 147 Store 100(f32v) 148 149: 57(i16vec2) Load 59(u16v) 150:104(f64vec2) ConvertUToF 149 Store 106(f64v) 150 155: 52(i16vec2) Load 54(i16v) 156: 152(i8vec2) SConvert 155 Store 154(i8v) 156 157: 57(i16vec2) Load 59(u16v) 160: 159(i8vec2) UConvert 157 161: 152(i8vec2) Bitcast 160 Store 154(i8v) 161 164: 52(i16vec2) Load 54(i16v) 165: 152(i8vec2) SConvert 164 166: 159(i8vec2) Bitcast 165 Store 163(u8v) 166 167: 57(i16vec2) Load 59(u16v) 168: 159(i8vec2) UConvert 167 Store 163(u8v) 168 169: 57(i16vec2) Load 59(u16v) 170: 159(i8vec2) UConvert 169 171: 57(i16vec2) UConvert 170 172: 52(i16vec2) Bitcast 171 Store 54(i16v) 172 177: 174(bvec2) Load 176(bv) 182: 52(i16vec2) Select 177 181 180 Store 54(i16v) 182 183: 174(bvec2) Load 176(bv) 188: 57(i16vec2) Select 183 187 186 Store 59(u16v) 188 189: 52(i16vec2) Load 54(i16v) 190: 174(bvec2) INotEqual 189 186 Store 176(bv) 190 191: 57(i16vec2) Load 59(u16v) 192: 174(bvec2) INotEqual 191 186 Store 176(bv) 192 Return FunctionEnd 10(operators(): 2 Function None 3 11: Label 196(arr): 195(ptr) Variable Function 204(u16v): 203(ptr) Variable Function 209(i16): 15(ptr) Variable Function 229(i): 228(ptr) Variable Function 236(uv): 235(ptr) Variable Function 252(i64): 251(ptr) Variable Function 290(b): 289(ptr) Variable Function 353(f): 352(ptr) Variable Function Store 196(arr) 201 205:202(i16vec3) Load 204(u16v) 207:206(i16vec3) CompositeConstruct 179 179 179 208:202(i16vec3) IAdd 205 207 Store 204(u16v) 208 210: 14(int16_t) Load 209(i16) 211: 14(int16_t) ISub 210 179 Store 209(i16) 211 212: 14(int16_t) Load 209(i16) 213: 14(int16_t) IAdd 212 179 Store 209(i16) 213 214:202(i16vec3) Load 204(u16v) 215:206(i16vec3) CompositeConstruct 179 179 179 216:202(i16vec3) ISub 214 215 Store 204(u16v) 216 217:202(i16vec3) Load 204(u16v) 218:202(i16vec3) Not 217 Store 204(u16v) 218 219: 14(int16_t) Load 209(i16) Store 209(i16) 219 220:202(i16vec3) Load 204(u16v) 221:202(i16vec3) SNegate 220 Store 204(u16v) 221 222: 14(int16_t) Load 209(i16) 223: 14(int16_t) Load 209(i16) 224: 14(int16_t) IAdd 223 222 Store 209(i16) 224 225:202(i16vec3) Load 204(u16v) 226:202(i16vec3) Load 204(u16v) 227:202(i16vec3) ISub 226 225 Store 204(u16v) 227 230: 14(int16_t) Load 209(i16) 231: 27(int) SConvert 230 232: 27(int) Load 229(i) 233: 27(int) IMul 232 231 Store 229(i) 233 237:202(i16vec3) Load 204(u16v) 238: 234(ivec3) UConvert 237 239: 234(ivec3) Load 236(uv) 240: 234(ivec3) UDiv 239 238 Store 236(uv) 240 241: 14(int16_t) Load 209(i16) 242: 27(int) SConvert 241 243: 17(int) Bitcast 242 244: 234(ivec3) Load 236(uv) 245: 234(ivec3) CompositeConstruct 243 243 243 246: 234(ivec3) UMod 244 245 Store 236(uv) 246 247:202(i16vec3) Load 204(u16v) 248: 234(ivec3) UConvert 247 249: 234(ivec3) Load 236(uv) 250: 234(ivec3) IAdd 248 249 Store 236(uv) 250 253: 14(int16_t) Load 209(i16) 254: 71(int64_t) SConvert 253 255: 71(int64_t) Load 252(i64) 256: 71(int64_t) ISub 254 255 Store 252(i64) 256 257:202(i16vec3) Load 204(u16v) 258: 234(ivec3) UConvert 257 259: 234(ivec3) Load 236(uv) 260: 234(ivec3) IMul 258 259 Store 236(uv) 260 261: 14(int16_t) Load 209(i16) 262: 71(int64_t) SConvert 261 263: 71(int64_t) Load 252(i64) 264: 71(int64_t) IMul 262 263 Store 252(i64) 264 265: 14(int16_t) Load 209(i16) 266: 27(int) SConvert 265 267: 27(int) Load 229(i) 268: 27(int) SMod 266 267 Store 229(i) 268 269: 14(int16_t) Load 209(i16) 270:202(i16vec3) Load 204(u16v) 271:206(i16vec3) CompositeConstruct 269 269 269 272:202(i16vec3) ShiftLeftLogical 270 271 Store 204(u16v) 272 274: 37(ptr) AccessChain 204(u16v) 273 275: 36(int16_t) Load 274 276: 14(int16_t) Load 209(i16) 277: 14(int16_t) ShiftRightArithmetic 276 275 Store 209(i16) 277 278: 14(int16_t) Load 209(i16) 280: 37(ptr) AccessChain 204(u16v) 279 281: 36(int16_t) Load 280 282: 14(int16_t) ShiftLeftLogical 278 281 Store 209(i16) 282 283:202(i16vec3) Load 204(u16v) 284: 27(int) Load 229(i) 286: 285(ivec3) CompositeConstruct 284 284 284 287:202(i16vec3) ShiftLeftLogical 283 286 288: 234(ivec3) UConvert 287 Store 236(uv) 288 292: 37(ptr) AccessChain 204(u16v) 291 293: 36(int16_t) Load 292 294: 14(int16_t) Load 209(i16) 295: 36(int16_t) Bitcast 294 296: 173(bool) INotEqual 293 295 Store 290(b) 296 297: 14(int16_t) Load 209(i16) 298: 36(int16_t) Bitcast 297 299: 37(ptr) AccessChain 204(u16v) 291 300: 36(int16_t) Load 299 301: 173(bool) IEqual 298 300 Store 290(b) 301 302: 37(ptr) AccessChain 204(u16v) 291 303: 36(int16_t) Load 302 304: 17(int) UConvert 303 306: 305(ptr) AccessChain 236(uv) 273 307: 17(int) Load 306 308: 173(bool) UGreaterThan 304 307 Store 290(b) 308 309: 14(int16_t) Load 209(i16) 310: 27(int) SConvert 309 311: 27(int) Load 229(i) 312: 173(bool) SLessThan 310 311 Store 290(b) 312 313: 37(ptr) AccessChain 204(u16v) 273 314: 36(int16_t) Load 313 315: 17(int) UConvert 314 316: 305(ptr) AccessChain 236(uv) 291 317: 17(int) Load 316 318: 173(bool) UGreaterThanEqual 315 317 Store 290(b) 318 319: 14(int16_t) Load 209(i16) 320: 27(int) SConvert 319 321: 27(int) Load 229(i) 322: 173(bool) SLessThanEqual 320 321 Store 290(b) 322 323: 14(int16_t) Load 209(i16) 324: 27(int) SConvert 323 325: 17(int) Bitcast 324 326: 234(ivec3) Load 236(uv) 327: 234(ivec3) CompositeConstruct 325 325 325 328: 234(ivec3) BitwiseOr 326 327 Store 236(uv) 328 329: 14(int16_t) Load 209(i16) 330: 27(int) SConvert 329 331: 27(int) Load 229(i) 332: 27(int) BitwiseOr 330 331 Store 229(i) 332 333: 14(int16_t) Load 209(i16) 334: 71(int64_t) SConvert 333 335: 71(int64_t) Load 252(i64) 336: 71(int64_t) BitwiseAnd 335 334 Store 252(i64) 336 337:202(i16vec3) Load 204(u16v) 338: 234(ivec3) UConvert 337 339: 234(ivec3) Load 236(uv) 340: 234(ivec3) BitwiseAnd 338 339 Store 236(uv) 340 341: 14(int16_t) Load 209(i16) 342: 27(int) SConvert 341 343: 17(int) Bitcast 342 344: 234(ivec3) Load 236(uv) 345: 234(ivec3) CompositeConstruct 343 343 343 346: 234(ivec3) BitwiseXor 344 345 Store 236(uv) 346 347:202(i16vec3) Load 204(u16v) 348: 14(int16_t) Load 209(i16) 349: 36(int16_t) Bitcast 348 350:202(i16vec3) CompositeConstruct 349 349 349 351:202(i16vec3) BitwiseXor 347 350 Store 204(u16v) 351 354: 14(int16_t) Load 209(i16) 355: 352(ptr) AccessChain 196(arr) 354 356: 97(float) Load 355 Store 353(f) 356 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label 357(i16v): 53(ptr) Variable Function 360(i16): 15(ptr) Variable Function 370(u16v): 203(ptr) Variable Function 372(u16): 37(ptr) Variable Function 442(i32): 228(ptr) Variable Function 445(i64): 251(ptr) Variable Function 448(i16v4): 447(ptr) Variable Function 451(u32): 305(ptr) Variable Function 452(u16v2): 58(ptr) Variable Function 456(u64): 455(ptr) Variable Function 459(u16v4): 458(ptr) Variable Function 471(bv): 470(ptr) Variable Function 358: 52(i16vec2) Load 357(i16v) 359: 52(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 358 Store 357(i16v) 359 361: 14(int16_t) Load 360(i16) 362: 14(int16_t) ExtInst 1(GLSL.std.450) 7(SSign) 361 Store 360(i16) 362 363: 52(i16vec2) Load 357(i16v) 364: 14(int16_t) Load 360(i16) 365: 52(i16vec2) CompositeConstruct 364 364 366: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 363 365 Store 357(i16v) 366 367: 52(i16vec2) Load 357(i16v) 369: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 367 368 Store 357(i16v) 369 371:202(i16vec3) Load 370(u16v) 373: 36(int16_t) Load 372(u16) 374:202(i16vec3) CompositeConstruct 373 373 373 375:202(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 374 Store 370(u16v) 375 376:202(i16vec3) Load 370(u16v) 378:202(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 376 377 Store 370(u16v) 378 379: 52(i16vec2) Load 357(i16v) 380: 14(int16_t) Load 360(i16) 381: 52(i16vec2) CompositeConstruct 380 380 382: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 379 381 Store 357(i16v) 382 383: 52(i16vec2) Load 357(i16v) 384: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 383 368 Store 357(i16v) 384 385:202(i16vec3) Load 370(u16v) 386: 36(int16_t) Load 372(u16) 387:202(i16vec3) CompositeConstruct 386 386 386 388:202(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 385 387 Store 370(u16v) 388 389:202(i16vec3) Load 370(u16v) 390:202(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 389 377 Store 370(u16v) 390 391: 52(i16vec2) Load 357(i16v) 392: 14(int16_t) Load 360(i16) 393: 14(int16_t) SNegate 392 394: 14(int16_t) Load 360(i16) 395: 52(i16vec2) CompositeConstruct 393 393 396: 52(i16vec2) CompositeConstruct 394 394 397: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 391 395 396 Store 357(i16v) 397 398: 52(i16vec2) Load 357(i16v) 399: 52(i16vec2) Load 357(i16v) 400: 52(i16vec2) SNegate 399 401: 52(i16vec2) Load 357(i16v) 402: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 398 400 401 Store 357(i16v) 402 403:202(i16vec3) Load 370(u16v) 404: 36(int16_t) Load 372(u16) 405: 36(int16_t) SNegate 404 406: 36(int16_t) Load 372(u16) 407:202(i16vec3) CompositeConstruct 405 405 405 408:202(i16vec3) CompositeConstruct 406 406 406 409:202(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 403 407 408 Store 370(u16v) 409 410:202(i16vec3) Load 370(u16v) 411:202(i16vec3) Load 370(u16v) 412:202(i16vec3) SNegate 411 413:202(i16vec3) Load 370(u16v) 414:202(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 410 412 413 Store 370(u16v) 414 415: 15(ptr) AccessChain 357(i16v) 291 416: 14(int16_t) Load 415 417: 15(ptr) AccessChain 357(i16v) 273 418: 14(int16_t) Load 417 420: 14(int16_t) Select 419 418 416 Store 360(i16) 420 421: 14(int16_t) Load 360(i16) 422: 52(i16vec2) CompositeConstruct 421 421 423: 14(int16_t) Load 360(i16) 424: 14(int16_t) SNegate 423 425: 52(i16vec2) CompositeConstruct 424 424 428: 52(i16vec2) Select 427 425 422 Store 357(i16v) 428 429: 37(ptr) AccessChain 370(u16v) 291 430: 36(int16_t) Load 429 431: 37(ptr) AccessChain 370(u16v) 273 432: 36(int16_t) Load 431 433: 36(int16_t) Select 419 432 430 Store 372(u16) 433 434: 36(int16_t) Load 372(u16) 435:202(i16vec3) CompositeConstruct 434 434 434 436: 36(int16_t) Load 372(u16) 437: 36(int16_t) SNegate 436 438:202(i16vec3) CompositeConstruct 437 437 437 441:202(i16vec3) Select 440 438 435 Store 370(u16v) 441 443: 52(i16vec2) Load 357(i16v) 444: 27(int) Bitcast 443 Store 442(i32) 444 449:446(i16vec4) Load 448(i16v4) 450: 71(int64_t) Bitcast 449 Store 445(i64) 450 453: 57(i16vec2) Load 452(u16v2) 454: 17(int) Bitcast 453 Store 451(u32) 454 460:457(i16vec4) Load 459(u16v4) 461: 77(int64_t) Bitcast 460 Store 456(u64) 461 462: 27(int) Load 442(i32) 463: 52(i16vec2) Bitcast 462 Store 357(i16v) 463 464: 71(int64_t) Load 445(i64) 465:446(i16vec4) Bitcast 464 Store 448(i16v4) 465 466: 17(int) Load 451(u32) 467: 57(i16vec2) Bitcast 466 Store 452(u16v2) 467 468: 77(int64_t) Load 456(u64) 469:457(i16vec4) Bitcast 468 Store 459(u16v4) 469 472:202(i16vec3) Load 370(u16v) 473: 36(int16_t) Load 372(u16) 474:202(i16vec3) CompositeConstruct 473 473 473 475: 439(bvec3) ULessThan 472 474 Store 471(bv) 475 476: 52(i16vec2) Load 357(i16v) 477: 14(int16_t) Load 360(i16) 478: 52(i16vec2) CompositeConstruct 477 477 479: 174(bvec2) SLessThan 476 478 480: 289(ptr) AccessChain 471(bv) 291 481: 173(bool) CompositeExtract 479 0 Store 480 481 482: 289(ptr) AccessChain 471(bv) 273 483: 173(bool) CompositeExtract 479 1 Store 482 483 484:202(i16vec3) Load 370(u16v) 485: 36(int16_t) Load 372(u16) 486:202(i16vec3) CompositeConstruct 485 485 485 487: 439(bvec3) ULessThanEqual 484 486 Store 471(bv) 487 488: 52(i16vec2) Load 357(i16v) 489: 14(int16_t) Load 360(i16) 490: 52(i16vec2) CompositeConstruct 489 489 491: 174(bvec2) SLessThanEqual 488 490 492: 289(ptr) AccessChain 471(bv) 291 493: 173(bool) CompositeExtract 491 0 Store 492 493 494: 289(ptr) AccessChain 471(bv) 273 495: 173(bool) CompositeExtract 491 1 Store 494 495 496:202(i16vec3) Load 370(u16v) 497: 36(int16_t) Load 372(u16) 498:202(i16vec3) CompositeConstruct 497 497 497 499: 439(bvec3) UGreaterThan 496 498 Store 471(bv) 499 500: 52(i16vec2) Load 357(i16v) 501: 14(int16_t) Load 360(i16) 502: 52(i16vec2) CompositeConstruct 501 501 503: 174(bvec2) SGreaterThan 500 502 504: 289(ptr) AccessChain 471(bv) 291 505: 173(bool) CompositeExtract 503 0 Store 504 505 506: 289(ptr) AccessChain 471(bv) 273 507: 173(bool) CompositeExtract 503 1 Store 506 507 508:202(i16vec3) Load 370(u16v) 509: 36(int16_t) Load 372(u16) 510:202(i16vec3) CompositeConstruct 509 509 509 511: 439(bvec3) UGreaterThanEqual 508 510 Store 471(bv) 511 512: 52(i16vec2) Load 357(i16v) 513: 14(int16_t) Load 360(i16) 514: 52(i16vec2) CompositeConstruct 513 513 515: 174(bvec2) SGreaterThanEqual 512 514 516: 289(ptr) AccessChain 471(bv) 291 517: 173(bool) CompositeExtract 515 0 Store 516 517 518: 289(ptr) AccessChain 471(bv) 273 519: 173(bool) CompositeExtract 515 1 Store 518 519 520:202(i16vec3) Load 370(u16v) 521: 36(int16_t) Load 372(u16) 522:202(i16vec3) CompositeConstruct 521 521 521 523: 439(bvec3) IEqual 520 522 Store 471(bv) 523 524: 52(i16vec2) Load 357(i16v) 525: 14(int16_t) Load 360(i16) 526: 52(i16vec2) CompositeConstruct 525 525 527: 174(bvec2) IEqual 524 526 528: 289(ptr) AccessChain 471(bv) 291 529: 173(bool) CompositeExtract 527 0 Store 528 529 530: 289(ptr) AccessChain 471(bv) 273 531: 173(bool) CompositeExtract 527 1 Store 530 531 532:202(i16vec3) Load 370(u16v) 533: 36(int16_t) Load 372(u16) 534:202(i16vec3) CompositeConstruct 533 533 533 535: 439(bvec3) INotEqual 532 534 Store 471(bv) 535 536: 52(i16vec2) Load 357(i16v) 537: 14(int16_t) Load 360(i16) 538: 52(i16vec2) CompositeConstruct 537 537 539: 174(bvec2) INotEqual 536 538 540: 289(ptr) AccessChain 471(bv) 291 541: 173(bool) CompositeExtract 539 0 Store 540 541 542: 289(ptr) AccessChain 471(bv) 273 543: 173(bool) CompositeExtract 539 1 Store 542 543 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.int32.frag.out000066400000000000000000001056441506534232700216760ustar00rootroot00000000000000spv.int32.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 499 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 6 "literal(" Name 8 "typeCast32(" Name 10 "operators(" Name 12 "builtinFuncs(" Name 16 "u32Max" Name 20 "i32" Name 27 "Uniforms" MemberName 27(Uniforms) 0 "index" Name 29 "" Name 35 "indexable" Name 39 "u32" Name 46 "indexable" Name 51 "u32v" Name 54 "i32v" Name 60 "i64v" Name 66 "u64v" Name 78 "f32v" Name 84 "f64v" Name 94 "i8v" Name 105 "i16v" Name 122 "u8v" Name 129 "u16v" Name 146 "f16v" Name 162 "bv" Name 180 "u32v" Name 185 "i32" Name 204 "i" Name 208 "uv" Name 221 "i64" Name 254 "b" Name 306 "i32v" Name 309 "i32" Name 319 "u32v" Name 321 "u32" Name 393 "i8v4" Name 396 "i16v2" Name 401 "u8v4" Name 404 "u16v2" Name 407 "i64" Name 410 "u32v2" Name 412 "u64" Name 416 "bv" Name 491 "Block" MemberName 491(Block) 0 "i32" MemberName 491(Block) 1 "i32v2" MemberName 491(Block) 2 "i32v3" MemberName 491(Block) 3 "i32v4" MemberName 491(Block) 4 "u32" MemberName 491(Block) 5 "u32v2" MemberName 491(Block) 6 "u32v3" MemberName 491(Block) 7 "u32v4" Name 493 "block" Name 494 "si32" Name 495 "su32" Name 496 "si" Name 497 "su" Name 498 "sb" Decorate 27(Uniforms) Block MemberDecorate 27(Uniforms) 0 Offset 0 Decorate 29 Binding 0 Decorate 29 DescriptorSet 0 Decorate 491(Block) Block MemberDecorate 491(Block) 0 Offset 0 MemberDecorate 491(Block) 1 Offset 8 MemberDecorate 491(Block) 2 Offset 16 MemberDecorate 491(Block) 3 Offset 32 MemberDecorate 491(Block) 4 Offset 48 MemberDecorate 491(Block) 5 Offset 56 MemberDecorate 491(Block) 6 Offset 64 MemberDecorate 491(Block) 7 Offset 80 Decorate 493(block) Binding 1 Decorate 493(block) DescriptorSet 0 Decorate 494(si32) SpecId 100 Decorate 495(su32) SpecId 101 Decorate 496(si) SpecId 102 Decorate 497(su) SpecId 103 Decorate 498(sb) SpecId 104 2: TypeVoid 3: TypeFunction 2 14: TypeInt 32 0 15: TypePointer Private 14(int) 16(u32Max): 15(ptr) Variable Private 17: 14(int) Constant 4294967295 18: TypeInt 32 1 19: TypePointer Function 18(int) 21: 14(int) Constant 3 22: TypeArray 18(int) 21 23: 18(int) Constant 4008636143 24: 18(int) Constant 4294967295 25: 18(int) Constant 536870912 26: 22 ConstantComposite 23 24 25 27(Uniforms): TypeStruct 14(int) 28: TypePointer Uniform 27(Uniforms) 29: 28(ptr) Variable Uniform 30: 18(int) Constant 0 31: TypePointer Uniform 14(int) 34: TypePointer Function 22 38: TypePointer Function 14(int) 40: TypeArray 14(int) 21 41: 14(int) Constant 2147483647 42: 40 ConstantComposite 17 17 41 45: TypePointer Function 40 49: TypeVector 14(int) 2 50: TypePointer Function 49(ivec2) 52: TypeVector 18(int) 2 53: TypePointer Function 52(ivec2) 57: TypeInt 64 1 58: TypeVector 57(int64_t) 2 59: TypePointer Function 58(i64vec2) 63: TypeInt 64 0 64: TypeVector 63(int64_t) 2 65: TypePointer Function 64(i64vec2) 75: TypeFloat 32 76: TypeVector 75(float) 2 77: TypePointer Function 76(fvec2) 81: TypeFloat 64 82: TypeVector 81(float64_t) 2 83: TypePointer Function 82(f64vec2) 91: TypeInt 8 1 92: TypeVector 91(int8_t) 2 93: TypePointer Function 92(i8vec2) 98: TypeInt 8 0 99: TypeVector 98(int8_t) 2 102: TypeInt 16 1 103: TypeVector 102(int16_t) 2 104: TypePointer Function 103(i16vec2) 109: TypeInt 16 0 110: TypeVector 109(int16_t) 2 121: TypePointer Function 99(i8vec2) 128: TypePointer Function 110(i16vec2) 143: TypeFloat 16 144: TypeVector 143(float16_t) 2 145: TypePointer Function 144(f16vec2) 159: TypeBool 160: TypeVector 159(bool) 2 161: TypePointer Function 160(bvec2) 164: 18(int) Constant 1 165: 52(ivec2) ConstantComposite 30 30 166: 52(ivec2) ConstantComposite 164 164 169: 14(int) Constant 0 170: 14(int) Constant 1 171: 49(ivec2) ConstantComposite 169 169 172: 49(ivec2) ConstantComposite 170 170 178: TypeVector 14(int) 3 179: TypePointer Function 178(ivec3) 182: TypeVector 18(int) 3 220: TypePointer Function 57(int64_t) 245: 14(int) Constant 2 253: TypePointer Function 159(bool) 317: 52(ivec2) ConstantComposite 24 24 326: 178(ivec3) ConstantComposite 169 169 169 368: 159(bool) ConstantTrue 375: 159(bool) ConstantFalse 376: 160(bvec2) ConstantComposite 375 375 388: TypeVector 159(bool) 3 389: 388(bvec3) ConstantComposite 375 375 375 391: TypeVector 91(int8_t) 4 392: TypePointer Function 391(i8vec4) 399: TypeVector 98(int8_t) 4 400: TypePointer Function 399(i8vec4) 411: TypePointer Function 63(int64_t) 415: TypePointer Function 388(bvec3) 489: TypeVector 18(int) 4 490: TypeVector 14(int) 4 491(Block): TypeStruct 18(int) 52(ivec2) 182(ivec3) 489(ivec4) 14(int) 49(ivec2) 178(ivec3) 490(ivec4) 492: TypePointer Uniform 491(Block) 493(block): 492(ptr) Variable Uniform 494(si32): 18(int) SpecConstant 4294967286 495(su32): 14(int) SpecConstant 20 496(si): 18(int) SpecConstant 4294967291 497(su): 14(int) SpecConstant 4 498(sb): 159(bool) SpecConstantTrue 4(main): 2 Function None 3 5: Label Store 16(u32Max) 17 Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 20(i32): 19(ptr) Variable Function 35(indexable): 34(ptr) Variable Function 39(u32): 38(ptr) Variable Function 46(indexable): 45(ptr) Variable Function 32: 31(ptr) AccessChain 29 30 33: 14(int) Load 32 Store 35(indexable) 26 36: 19(ptr) AccessChain 35(indexable) 33 37: 18(int) Load 36 Store 20(i32) 37 43: 31(ptr) AccessChain 29 30 44: 14(int) Load 43 Store 46(indexable) 42 47: 38(ptr) AccessChain 46(indexable) 44 48: 14(int) Load 47 Store 39(u32) 48 Return FunctionEnd 8(typeCast32(): 2 Function None 3 9: Label 51(u32v): 50(ptr) Variable Function 54(i32v): 53(ptr) Variable Function 60(i64v): 59(ptr) Variable Function 66(u64v): 65(ptr) Variable Function 78(f32v): 77(ptr) Variable Function 84(f64v): 83(ptr) Variable Function 94(i8v): 93(ptr) Variable Function 105(i16v): 104(ptr) Variable Function 122(u8v): 121(ptr) Variable Function 129(u16v): 128(ptr) Variable Function 146(f16v): 145(ptr) Variable Function 162(bv): 161(ptr) Variable Function 55: 52(ivec2) Load 54(i32v) 56: 49(ivec2) Bitcast 55 Store 51(u32v) 56 61: 52(ivec2) Load 54(i32v) 62: 58(i64vec2) SConvert 61 Store 60(i64v) 62 67: 52(ivec2) Load 54(i32v) 68: 58(i64vec2) SConvert 67 69: 64(i64vec2) Bitcast 68 Store 66(u64v) 69 70: 49(ivec2) Load 51(u32v) 71: 64(i64vec2) UConvert 70 72: 58(i64vec2) Bitcast 71 Store 60(i64v) 72 73: 49(ivec2) Load 51(u32v) 74: 64(i64vec2) UConvert 73 Store 66(u64v) 74 79: 52(ivec2) Load 54(i32v) 80: 76(fvec2) ConvertSToF 79 Store 78(f32v) 80 85: 52(ivec2) Load 54(i32v) 86: 82(f64vec2) ConvertSToF 85 Store 84(f64v) 86 87: 49(ivec2) Load 51(u32v) 88: 76(fvec2) ConvertUToF 87 Store 78(f32v) 88 89: 49(ivec2) Load 51(u32v) 90: 82(f64vec2) ConvertUToF 89 Store 84(f64v) 90 95: 52(ivec2) Load 54(i32v) 96: 92(i8vec2) SConvert 95 Store 94(i8v) 96 97: 49(ivec2) Load 51(u32v) 100: 99(i8vec2) UConvert 97 101: 92(i8vec2) Bitcast 100 Store 94(i8v) 101 106: 52(ivec2) Load 54(i32v) 107:103(i16vec2) SConvert 106 Store 105(i16v) 107 108: 49(ivec2) Load 51(u32v) 111:110(i16vec2) UConvert 108 112:103(i16vec2) Bitcast 111 Store 105(i16v) 112 113: 52(ivec2) Load 54(i32v) Store 54(i32v) 113 114: 49(ivec2) Load 51(u32v) 115: 52(ivec2) Bitcast 114 Store 54(i32v) 115 116: 52(ivec2) Load 54(i32v) 117: 58(i64vec2) SConvert 116 Store 60(i64v) 117 118: 49(ivec2) Load 51(u32v) 119: 64(i64vec2) UConvert 118 120: 58(i64vec2) Bitcast 119 Store 60(i64v) 120 123: 52(ivec2) Load 54(i32v) 124: 92(i8vec2) SConvert 123 125: 99(i8vec2) Bitcast 124 Store 122(u8v) 125 126: 49(ivec2) Load 51(u32v) 127: 99(i8vec2) UConvert 126 Store 122(u8v) 127 130: 52(ivec2) Load 54(i32v) 131:103(i16vec2) SConvert 130 132:110(i16vec2) Bitcast 131 Store 129(u16v) 132 133: 49(ivec2) Load 51(u32v) 134:110(i16vec2) UConvert 133 Store 129(u16v) 134 135: 52(ivec2) Load 54(i32v) 136: 49(ivec2) Bitcast 135 Store 51(u32v) 136 137: 49(ivec2) Load 51(u32v) Store 51(u32v) 137 138: 52(ivec2) Load 54(i32v) 139: 58(i64vec2) SConvert 138 140: 64(i64vec2) Bitcast 139 Store 66(u64v) 140 141: 49(ivec2) Load 51(u32v) 142: 64(i64vec2) UConvert 141 Store 66(u64v) 142 147: 52(ivec2) Load 54(i32v) 148:144(f16vec2) ConvertSToF 147 Store 146(f16v) 148 149: 52(ivec2) Load 54(i32v) 150: 76(fvec2) ConvertSToF 149 Store 78(f32v) 150 151: 52(ivec2) Load 54(i32v) 152: 82(f64vec2) ConvertSToF 151 Store 84(f64v) 152 153: 49(ivec2) Load 51(u32v) 154:144(f16vec2) ConvertUToF 153 Store 146(f16v) 154 155: 49(ivec2) Load 51(u32v) 156: 76(fvec2) ConvertUToF 155 Store 78(f32v) 156 157: 49(ivec2) Load 51(u32v) 158: 82(f64vec2) ConvertUToF 157 Store 84(f64v) 158 163: 160(bvec2) Load 162(bv) 167: 52(ivec2) Select 163 166 165 Store 54(i32v) 167 168: 160(bvec2) Load 162(bv) 173: 49(ivec2) Select 168 172 171 Store 51(u32v) 173 174: 52(ivec2) Load 54(i32v) 175: 160(bvec2) INotEqual 174 171 Store 162(bv) 175 176: 49(ivec2) Load 51(u32v) 177: 160(bvec2) INotEqual 176 171 Store 162(bv) 177 Return FunctionEnd 10(operators(): 2 Function None 3 11: Label 180(u32v): 179(ptr) Variable Function 185(i32): 19(ptr) Variable Function 204(i): 19(ptr) Variable Function 208(uv): 179(ptr) Variable Function 221(i64): 220(ptr) Variable Function 254(b): 253(ptr) Variable Function 181: 178(ivec3) Load 180(u32v) 183: 182(ivec3) CompositeConstruct 164 164 164 184: 178(ivec3) IAdd 181 183 Store 180(u32v) 184 186: 18(int) Load 185(i32) 187: 18(int) ISub 186 164 Store 185(i32) 187 188: 18(int) Load 185(i32) 189: 18(int) IAdd 188 164 Store 185(i32) 189 190: 178(ivec3) Load 180(u32v) 191: 182(ivec3) CompositeConstruct 164 164 164 192: 178(ivec3) ISub 190 191 Store 180(u32v) 192 193: 178(ivec3) Load 180(u32v) 194: 178(ivec3) Not 193 Store 180(u32v) 194 195: 18(int) Load 185(i32) Store 185(i32) 195 196: 178(ivec3) Load 180(u32v) 197: 178(ivec3) SNegate 196 Store 180(u32v) 197 198: 18(int) Load 185(i32) 199: 18(int) Load 185(i32) 200: 18(int) IAdd 199 198 Store 185(i32) 200 201: 178(ivec3) Load 180(u32v) 202: 178(ivec3) Load 180(u32v) 203: 178(ivec3) ISub 202 201 Store 180(u32v) 203 205: 18(int) Load 185(i32) 206: 18(int) Load 204(i) 207: 18(int) IMul 206 205 Store 204(i) 207 209: 178(ivec3) Load 180(u32v) 210: 178(ivec3) Load 208(uv) 211: 178(ivec3) UDiv 210 209 Store 208(uv) 211 212: 18(int) Load 185(i32) 213: 14(int) Bitcast 212 214: 178(ivec3) Load 208(uv) 215: 178(ivec3) CompositeConstruct 213 213 213 216: 178(ivec3) UMod 214 215 Store 208(uv) 216 217: 178(ivec3) Load 180(u32v) 218: 178(ivec3) Load 208(uv) 219: 178(ivec3) IAdd 217 218 Store 208(uv) 219 222: 18(int) Load 185(i32) 223: 57(int64_t) SConvert 222 224: 57(int64_t) Load 221(i64) 225: 57(int64_t) ISub 223 224 Store 221(i64) 225 226: 178(ivec3) Load 180(u32v) 227: 178(ivec3) Load 208(uv) 228: 178(ivec3) IMul 226 227 Store 208(uv) 228 229: 18(int) Load 185(i32) 230: 57(int64_t) SConvert 229 231: 57(int64_t) Load 221(i64) 232: 57(int64_t) IMul 230 231 Store 221(i64) 232 233: 18(int) Load 185(i32) 234: 18(int) Load 204(i) 235: 18(int) SMod 233 234 Store 204(i) 235 236: 18(int) Load 185(i32) 237: 178(ivec3) Load 180(u32v) 238: 182(ivec3) CompositeConstruct 236 236 236 239: 178(ivec3) ShiftLeftLogical 237 238 Store 180(u32v) 239 240: 38(ptr) AccessChain 180(u32v) 170 241: 14(int) Load 240 242: 18(int) Load 185(i32) 243: 18(int) ShiftRightArithmetic 242 241 Store 185(i32) 243 244: 57(int64_t) Load 221(i64) 246: 38(ptr) AccessChain 180(u32v) 245 247: 14(int) Load 246 248: 57(int64_t) ShiftLeftLogical 244 247 Store 221(i64) 248 249: 178(ivec3) Load 180(u32v) 250: 18(int) Load 204(i) 251: 182(ivec3) CompositeConstruct 250 250 250 252: 178(ivec3) ShiftLeftLogical 249 251 Store 208(uv) 252 255: 38(ptr) AccessChain 180(u32v) 169 256: 14(int) Load 255 257: 18(int) Load 185(i32) 258: 14(int) Bitcast 257 259: 159(bool) INotEqual 256 258 Store 254(b) 259 260: 18(int) Load 185(i32) 261: 14(int) Bitcast 260 262: 38(ptr) AccessChain 180(u32v) 169 263: 14(int) Load 262 264: 159(bool) IEqual 261 263 Store 254(b) 264 265: 38(ptr) AccessChain 180(u32v) 169 266: 14(int) Load 265 267: 38(ptr) AccessChain 208(uv) 170 268: 14(int) Load 267 269: 159(bool) UGreaterThan 266 268 Store 254(b) 269 270: 18(int) Load 185(i32) 271: 18(int) Load 204(i) 272: 159(bool) SLessThan 270 271 Store 254(b) 272 273: 38(ptr) AccessChain 180(u32v) 170 274: 14(int) Load 273 275: 38(ptr) AccessChain 208(uv) 169 276: 14(int) Load 275 277: 159(bool) UGreaterThanEqual 274 276 Store 254(b) 277 278: 18(int) Load 185(i32) 279: 18(int) Load 204(i) 280: 159(bool) SLessThanEqual 278 279 Store 254(b) 280 281: 18(int) Load 185(i32) 282: 14(int) Bitcast 281 283: 178(ivec3) Load 208(uv) 284: 178(ivec3) CompositeConstruct 282 282 282 285: 178(ivec3) BitwiseOr 283 284 Store 208(uv) 285 286: 18(int) Load 185(i32) 287: 18(int) Load 204(i) 288: 18(int) BitwiseOr 286 287 Store 204(i) 288 289: 18(int) Load 185(i32) 290: 57(int64_t) SConvert 289 291: 57(int64_t) Load 221(i64) 292: 57(int64_t) BitwiseAnd 291 290 Store 221(i64) 292 293: 178(ivec3) Load 180(u32v) 294: 178(ivec3) Load 208(uv) 295: 178(ivec3) BitwiseAnd 293 294 Store 208(uv) 295 296: 18(int) Load 185(i32) 297: 14(int) Bitcast 296 298: 178(ivec3) Load 208(uv) 299: 178(ivec3) CompositeConstruct 297 297 297 300: 178(ivec3) BitwiseXor 298 299 Store 208(uv) 300 301: 178(ivec3) Load 180(u32v) 302: 18(int) Load 185(i32) 303: 14(int) Bitcast 302 304: 178(ivec3) CompositeConstruct 303 303 303 305: 178(ivec3) BitwiseXor 301 304 Store 180(u32v) 305 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label 306(i32v): 53(ptr) Variable Function 309(i32): 19(ptr) Variable Function 319(u32v): 179(ptr) Variable Function 321(u32): 38(ptr) Variable Function 393(i8v4): 392(ptr) Variable Function 396(i16v2): 104(ptr) Variable Function 401(u8v4): 400(ptr) Variable Function 404(u16v2): 128(ptr) Variable Function 407(i64): 220(ptr) Variable Function 410(u32v2): 50(ptr) Variable Function 412(u64): 411(ptr) Variable Function 416(bv): 415(ptr) Variable Function 307: 52(ivec2) Load 306(i32v) 308: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 307 Store 306(i32v) 308 310: 18(int) Load 309(i32) 311: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 310 Store 309(i32) 311 312: 52(ivec2) Load 306(i32v) 313: 18(int) Load 309(i32) 314: 52(ivec2) CompositeConstruct 313 313 315: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 312 314 Store 306(i32v) 315 316: 52(ivec2) Load 306(i32v) 318: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 316 317 Store 306(i32v) 318 320: 178(ivec3) Load 319(u32v) 322: 14(int) Load 321(u32) 323: 178(ivec3) CompositeConstruct 322 322 322 324: 178(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 320 323 Store 319(u32v) 324 325: 178(ivec3) Load 319(u32v) 327: 178(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 325 326 Store 319(u32v) 327 328: 52(ivec2) Load 306(i32v) 329: 18(int) Load 309(i32) 330: 52(ivec2) CompositeConstruct 329 329 331: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 328 330 Store 306(i32v) 331 332: 52(ivec2) Load 306(i32v) 333: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 332 317 Store 306(i32v) 333 334: 178(ivec3) Load 319(u32v) 335: 14(int) Load 321(u32) 336: 178(ivec3) CompositeConstruct 335 335 335 337: 178(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 334 336 Store 319(u32v) 337 338: 178(ivec3) Load 319(u32v) 339: 178(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 338 326 Store 319(u32v) 339 340: 52(ivec2) Load 306(i32v) 341: 18(int) Load 309(i32) 342: 18(int) SNegate 341 343: 18(int) Load 309(i32) 344: 52(ivec2) CompositeConstruct 342 342 345: 52(ivec2) CompositeConstruct 343 343 346: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 340 344 345 Store 306(i32v) 346 347: 52(ivec2) Load 306(i32v) 348: 52(ivec2) Load 306(i32v) 349: 52(ivec2) SNegate 348 350: 52(ivec2) Load 306(i32v) 351: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 347 349 350 Store 306(i32v) 351 352: 178(ivec3) Load 319(u32v) 353: 14(int) Load 321(u32) 354: 14(int) SNegate 353 355: 14(int) Load 321(u32) 356: 178(ivec3) CompositeConstruct 354 354 354 357: 178(ivec3) CompositeConstruct 355 355 355 358: 178(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 352 356 357 Store 319(u32v) 358 359: 178(ivec3) Load 319(u32v) 360: 178(ivec3) Load 319(u32v) 361: 178(ivec3) SNegate 360 362: 178(ivec3) Load 319(u32v) 363: 178(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 359 361 362 Store 319(u32v) 363 364: 19(ptr) AccessChain 306(i32v) 169 365: 18(int) Load 364 366: 19(ptr) AccessChain 306(i32v) 170 367: 18(int) Load 366 369: 18(int) Select 368 367 365 Store 309(i32) 369 370: 18(int) Load 309(i32) 371: 52(ivec2) CompositeConstruct 370 370 372: 18(int) Load 309(i32) 373: 18(int) SNegate 372 374: 52(ivec2) CompositeConstruct 373 373 377: 52(ivec2) Select 376 374 371 Store 306(i32v) 377 378: 38(ptr) AccessChain 319(u32v) 169 379: 14(int) Load 378 380: 38(ptr) AccessChain 319(u32v) 170 381: 14(int) Load 380 382: 14(int) Select 368 381 379 Store 321(u32) 382 383: 14(int) Load 321(u32) 384: 178(ivec3) CompositeConstruct 383 383 383 385: 14(int) Load 321(u32) 386: 14(int) SNegate 385 387: 178(ivec3) CompositeConstruct 386 386 386 390: 178(ivec3) Select 389 387 384 Store 319(u32v) 390 394: 391(i8vec4) Load 393(i8v4) 395: 18(int) Bitcast 394 Store 309(i32) 395 397:103(i16vec2) Load 396(i16v2) 398: 18(int) Bitcast 397 Store 309(i32) 398 402: 399(i8vec4) Load 401(u8v4) 403: 14(int) Bitcast 402 Store 321(u32) 403 405:110(i16vec2) Load 404(u16v2) 406: 14(int) Bitcast 405 Store 321(u32) 406 408: 57(int64_t) Load 407(i64) 409: 52(ivec2) Bitcast 408 Store 306(i32v) 409 413: 63(int64_t) Load 412(u64) 414: 49(ivec2) Bitcast 413 Store 410(u32v2) 414 417: 178(ivec3) Load 319(u32v) 418: 14(int) Load 321(u32) 419: 178(ivec3) CompositeConstruct 418 418 418 420: 388(bvec3) ULessThan 417 419 Store 416(bv) 420 421: 52(ivec2) Load 306(i32v) 422: 18(int) Load 309(i32) 423: 52(ivec2) CompositeConstruct 422 422 424: 160(bvec2) SLessThan 421 423 425: 253(ptr) AccessChain 416(bv) 169 426: 159(bool) CompositeExtract 424 0 Store 425 426 427: 253(ptr) AccessChain 416(bv) 170 428: 159(bool) CompositeExtract 424 1 Store 427 428 429: 178(ivec3) Load 319(u32v) 430: 14(int) Load 321(u32) 431: 178(ivec3) CompositeConstruct 430 430 430 432: 388(bvec3) ULessThanEqual 429 431 Store 416(bv) 432 433: 52(ivec2) Load 306(i32v) 434: 18(int) Load 309(i32) 435: 52(ivec2) CompositeConstruct 434 434 436: 160(bvec2) SLessThanEqual 433 435 437: 253(ptr) AccessChain 416(bv) 169 438: 159(bool) CompositeExtract 436 0 Store 437 438 439: 253(ptr) AccessChain 416(bv) 170 440: 159(bool) CompositeExtract 436 1 Store 439 440 441: 178(ivec3) Load 319(u32v) 442: 14(int) Load 321(u32) 443: 178(ivec3) CompositeConstruct 442 442 442 444: 388(bvec3) UGreaterThan 441 443 Store 416(bv) 444 445: 52(ivec2) Load 306(i32v) 446: 18(int) Load 309(i32) 447: 52(ivec2) CompositeConstruct 446 446 448: 160(bvec2) SGreaterThan 445 447 449: 253(ptr) AccessChain 416(bv) 169 450: 159(bool) CompositeExtract 448 0 Store 449 450 451: 253(ptr) AccessChain 416(bv) 170 452: 159(bool) CompositeExtract 448 1 Store 451 452 453: 178(ivec3) Load 319(u32v) 454: 14(int) Load 321(u32) 455: 178(ivec3) CompositeConstruct 454 454 454 456: 388(bvec3) UGreaterThanEqual 453 455 Store 416(bv) 456 457: 52(ivec2) Load 306(i32v) 458: 18(int) Load 309(i32) 459: 52(ivec2) CompositeConstruct 458 458 460: 160(bvec2) SGreaterThanEqual 457 459 461: 253(ptr) AccessChain 416(bv) 169 462: 159(bool) CompositeExtract 460 0 Store 461 462 463: 253(ptr) AccessChain 416(bv) 170 464: 159(bool) CompositeExtract 460 1 Store 463 464 465: 178(ivec3) Load 319(u32v) 466: 14(int) Load 321(u32) 467: 178(ivec3) CompositeConstruct 466 466 466 468: 388(bvec3) IEqual 465 467 Store 416(bv) 468 469: 52(ivec2) Load 306(i32v) 470: 18(int) Load 309(i32) 471: 52(ivec2) CompositeConstruct 470 470 472: 160(bvec2) IEqual 469 471 473: 253(ptr) AccessChain 416(bv) 169 474: 159(bool) CompositeExtract 472 0 Store 473 474 475: 253(ptr) AccessChain 416(bv) 170 476: 159(bool) CompositeExtract 472 1 Store 475 476 477: 178(ivec3) Load 319(u32v) 478: 14(int) Load 321(u32) 479: 178(ivec3) CompositeConstruct 478 478 478 480: 388(bvec3) INotEqual 477 479 Store 416(bv) 480 481: 52(ivec2) Load 306(i32v) 482: 18(int) Load 309(i32) 483: 52(ivec2) CompositeConstruct 482 482 484: 160(bvec2) INotEqual 481 483 485: 253(ptr) AccessChain 416(bv) 169 486: 159(bool) CompositeExtract 484 0 Store 485 486 487: 253(ptr) AccessChain 416(bv) 170 488: 159(bool) CompositeExtract 484 1 Store 487 488 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.int64.frag.out000066400000000000000000001047231506534232700217000ustar00rootroot00000000000000spv.int64.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 513 Capability Shader Capability Float64 Capability Int64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" Name 4 "main" Name 6 "literal(" Name 8 "typeCast(" Name 10 "operators(" Name 12 "builtinFuncs(" Name 16 "u64Max" Name 20 "i64" Name 28 "Uniforms" MemberName 28(Uniforms) 0 "index" Name 30 "" Name 37 "indexable" Name 41 "u64" Name 49 "indexable" Name 54 "i64v" Name 58 "bv" Name 67 "u64v" Name 76 "iv" Name 83 "uv" Name 91 "fv" Name 97 "dv" Name 134 "u64v" Name 139 "i64" Name 159 "i" Name 166 "uv" Name 226 "b" Name 286 "i64v" Name 289 "i64" Name 299 "u64v" Name 301 "u64" Name 373 "dv" Name 394 "iv" Name 399 "uv" Name 403 "bv" Name 486 "Block" MemberName 486(Block) 0 "i64v" MemberName 486(Block) 1 "u64" Name 488 "block" Name 489 "si64" Name 490 "su64" Name 491 "si" Name 492 "su" Name 493 "sb" Name 494 "su64inc" Name 495 "i64_to_b" Name 496 "u64_to_b" Name 497 "b_to_i64" Name 498 "b_to_u64" Name 499 "i64_to_i" Name 500 "i_to_i64" Name 501 "u64_to_u" Name 502 "u_to_u64" Name 503 "u64_to_i64" Name 504 "i64_to_u64" Name 506 "u64_to_i" Name 508 "i_to_u64" Name 510 "i64_to_u" Name 512 "u_to_i64" Decorate 28(Uniforms) Block MemberDecorate 28(Uniforms) 0 Offset 0 Decorate 30 Binding 0 Decorate 30 DescriptorSet 0 Decorate 486(Block) Block MemberDecorate 486(Block) 0 Offset 0 MemberDecorate 486(Block) 1 Offset 24 Decorate 488(block) Binding 1 Decorate 488(block) DescriptorSet 0 Decorate 489(si64) SpecId 100 Decorate 490(su64) SpecId 101 Decorate 491(si) SpecId 102 Decorate 492(su) SpecId 103 Decorate 493(sb) SpecId 104 Decorate 494(su64inc) SpecId 105 2: TypeVoid 3: TypeFunction 2 14: TypeInt 64 0 15: TypePointer Private 14(int64_t) 16(u64Max): 15(ptr) Variable Private 17: 14(int64_t) Constant 4294967295 4294967295 18: TypeInt 64 1 19: TypePointer Function 18(int64_t) 21: TypeInt 32 0 22: 21(int) Constant 3 23: TypeArray 18(int64_t) 22 24: 18(int64_t) Constant 4008636143 4008636142 25: 18(int64_t) Constant 4294967295 4294967295 26: 18(int64_t) Constant 0 1 27: 23 ConstantComposite 24 25 26 28(Uniforms): TypeStruct 21(int) 29: TypePointer Uniform 28(Uniforms) 30: 29(ptr) Variable Uniform 31: TypeInt 32 1 32: 31(int) Constant 0 33: TypePointer Uniform 21(int) 36: TypePointer Function 23 40: TypePointer Function 14(int64_t) 42: TypeArray 14(int64_t) 22 43: 14(int64_t) Constant 0 1 44: 14(int64_t) Constant 4294967295 1 45: 42 ConstantComposite 17 43 44 48: TypePointer Function 42 52: TypeVector 18(int64_t) 2 53: TypePointer Function 52(i64vec2) 55: TypeBool 56: TypeVector 55(bool) 2 57: TypePointer Function 56(bvec2) 60: 18(int64_t) Constant 0 0 61: 18(int64_t) Constant 1 0 62: 52(i64vec2) ConstantComposite 60 60 63: 52(i64vec2) ConstantComposite 61 61 65: TypeVector 14(int64_t) 2 66: TypePointer Function 65(i64vec2) 69: 14(int64_t) Constant 0 0 70: 14(int64_t) Constant 1 0 71: 65(i64vec2) ConstantComposite 69 69 72: 65(i64vec2) ConstantComposite 70 70 74: TypeVector 31(int) 2 75: TypePointer Function 74(ivec2) 81: TypeVector 21(int) 2 82: TypePointer Function 81(ivec2) 88: TypeFloat 32 89: TypeVector 88(float) 2 90: TypePointer Function 89(fvec2) 94: TypeFloat 64 95: TypeVector 94(float64_t) 2 96: TypePointer Function 95(f64vec2) 132: TypeVector 14(int64_t) 3 133: TypePointer Function 132(i64vec3) 136: TypeVector 18(int64_t) 3 158: TypePointer Function 31(int) 164: TypeVector 21(int) 3 165: TypePointer Function 164(ivec3) 199: TypeVector 31(int) 3 203: 21(int) Constant 1 204: TypePointer Function 21(int) 217: 21(int) Constant 2 225: TypePointer Function 55(bool) 227: 21(int) Constant 0 297: 52(i64vec2) ConstantComposite 25 25 306:132(i64vec3) ConstantComposite 69 69 69 348: 55(bool) ConstantTrue 355: 55(bool) ConstantFalse 356: 56(bvec2) ConstantComposite 355 355 368: TypeVector 55(bool) 3 369: 368(bvec3) ConstantComposite 355 355 355 371: TypeVector 94(float64_t) 3 372: TypePointer Function 371(f64vec3) 377: TypePointer Function 94(float64_t) 390: 31(int) Constant 1 391: 31(int) Constant 2 392: 74(ivec2) ConstantComposite 390 391 397: 81(ivec2) ConstantComposite 217 22 402: TypePointer Function 368(bvec3) 486(Block): TypeStruct 136(i64vec3) 14(int64_t) 487: TypePointer Uniform 486(Block) 488(block): 487(ptr) Variable Uniform 489(si64): 18(int64_t) SpecConstant 4294967286 4294967295 490(su64): 14(int64_t) SpecConstant 20 0 491(si): 31(int) SpecConstant 4294967291 492(su): 21(int) SpecConstant 4 493(sb): 55(bool) SpecConstantTrue 494(su64inc): 14(int64_t) SpecConstantOp 128 490(su64) 70 495(i64_to_b): 55(bool) SpecConstantOp 171 489(si64) 69 496(u64_to_b): 55(bool) SpecConstantOp 171 490(su64) 69 497(b_to_i64): 18(int64_t) SpecConstantOp 169 493(sb) 61 60 498(b_to_u64): 14(int64_t) SpecConstantOp 169 493(sb) 70 69 499(i64_to_i): 31(int) SpecConstantOp 114 489(si64) 500(i_to_i64): 18(int64_t) SpecConstantOp 114 491(si) 501(u64_to_u): 21(int) SpecConstantOp 113 490(su64) 502(u_to_u64): 14(int64_t) SpecConstantOp 113 492(su) 503(u64_to_i64): 18(int64_t) SpecConstantOp 128 490(su64) 69 504(i64_to_u64): 14(int64_t) SpecConstantOp 128 489(si64) 69 505: 21(int) SpecConstantOp 113 490(su64) 506(u64_to_i): 31(int) SpecConstantOp 128 505 227 507: 18(int64_t) SpecConstantOp 114 491(si) 508(i_to_u64): 14(int64_t) SpecConstantOp 128 507 69 509: 31(int) SpecConstantOp 114 489(si64) 510(i64_to_u): 21(int) SpecConstantOp 128 509 227 511: 14(int64_t) SpecConstantOp 113 492(su) 512(u_to_i64): 18(int64_t) SpecConstantOp 128 511 69 4(main): 2 Function None 3 5: Label Store 16(u64Max) 17 Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 20(i64): 19(ptr) Variable Function 37(indexable): 36(ptr) Variable Function 41(u64): 40(ptr) Variable Function 49(indexable): 48(ptr) Variable Function 34: 33(ptr) AccessChain 30 32 35: 21(int) Load 34 Store 37(indexable) 27 38: 19(ptr) AccessChain 37(indexable) 35 39: 18(int64_t) Load 38 Store 20(i64) 39 46: 33(ptr) AccessChain 30 32 47: 21(int) Load 46 Store 49(indexable) 45 50: 40(ptr) AccessChain 49(indexable) 47 51: 14(int64_t) Load 50 Store 41(u64) 51 Return FunctionEnd 8(typeCast(): 2 Function None 3 9: Label 54(i64v): 53(ptr) Variable Function 58(bv): 57(ptr) Variable Function 67(u64v): 66(ptr) Variable Function 76(iv): 75(ptr) Variable Function 83(uv): 82(ptr) Variable Function 91(fv): 90(ptr) Variable Function 97(dv): 96(ptr) Variable Function 59: 56(bvec2) Load 58(bv) 64: 52(i64vec2) Select 59 63 62 Store 54(i64v) 64 68: 56(bvec2) Load 58(bv) 73: 65(i64vec2) Select 68 72 71 Store 67(u64v) 73 77: 74(ivec2) Load 76(iv) 78: 52(i64vec2) SConvert 77 Store 54(i64v) 78 79: 52(i64vec2) Load 54(i64v) 80: 74(ivec2) SConvert 79 Store 76(iv) 80 84: 81(ivec2) Load 83(uv) 85: 65(i64vec2) UConvert 84 Store 67(u64v) 85 86: 65(i64vec2) Load 67(u64v) 87: 81(ivec2) UConvert 86 Store 83(uv) 87 92: 52(i64vec2) Load 54(i64v) 93: 89(fvec2) ConvertSToF 92 Store 91(fv) 93 98: 52(i64vec2) Load 54(i64v) 99: 95(f64vec2) ConvertSToF 98 Store 97(dv) 99 100: 65(i64vec2) Load 67(u64v) 101: 89(fvec2) ConvertUToF 100 Store 91(fv) 101 102: 65(i64vec2) Load 67(u64v) 103: 95(f64vec2) ConvertUToF 102 Store 97(dv) 103 104: 89(fvec2) Load 91(fv) 105: 52(i64vec2) ConvertFToS 104 Store 54(i64v) 105 106: 95(f64vec2) Load 97(dv) 107: 52(i64vec2) ConvertFToS 106 Store 54(i64v) 107 108: 89(fvec2) Load 91(fv) 109: 65(i64vec2) ConvertFToU 108 Store 67(u64v) 109 110: 95(f64vec2) Load 97(dv) 111: 65(i64vec2) ConvertFToU 110 Store 67(u64v) 111 112: 52(i64vec2) Load 54(i64v) 113: 56(bvec2) INotEqual 112 71 Store 58(bv) 113 114: 65(i64vec2) Load 67(u64v) 115: 56(bvec2) INotEqual 114 71 Store 58(bv) 115 116: 52(i64vec2) Load 54(i64v) 117: 65(i64vec2) Bitcast 116 Store 67(u64v) 117 118: 65(i64vec2) Load 67(u64v) 119: 52(i64vec2) Bitcast 118 Store 54(i64v) 119 120: 52(i64vec2) Load 54(i64v) 121: 74(ivec2) SConvert 120 122: 81(ivec2) Bitcast 121 Store 83(uv) 122 123: 81(ivec2) Load 83(uv) 124: 65(i64vec2) UConvert 123 125: 52(i64vec2) Bitcast 124 Store 54(i64v) 125 126: 65(i64vec2) Load 67(u64v) 127: 81(ivec2) UConvert 126 128: 74(ivec2) Bitcast 127 Store 76(iv) 128 129: 74(ivec2) Load 76(iv) 130: 52(i64vec2) SConvert 129 131: 65(i64vec2) Bitcast 130 Store 67(u64v) 131 Return FunctionEnd 10(operators(): 2 Function None 3 11: Label 134(u64v): 133(ptr) Variable Function 139(i64): 19(ptr) Variable Function 159(i): 158(ptr) Variable Function 166(uv): 165(ptr) Variable Function 226(b): 225(ptr) Variable Function 135:132(i64vec3) Load 134(u64v) 137:136(i64vec3) CompositeConstruct 61 61 61 138:132(i64vec3) IAdd 135 137 Store 134(u64v) 138 140: 18(int64_t) Load 139(i64) 141: 18(int64_t) ISub 140 61 Store 139(i64) 141 142: 18(int64_t) Load 139(i64) 143: 18(int64_t) IAdd 142 61 Store 139(i64) 143 144:132(i64vec3) Load 134(u64v) 145:136(i64vec3) CompositeConstruct 61 61 61 146:132(i64vec3) ISub 144 145 Store 134(u64v) 146 147:132(i64vec3) Load 134(u64v) 148:132(i64vec3) Not 147 Store 134(u64v) 148 149: 18(int64_t) Load 139(i64) Store 139(i64) 149 150:132(i64vec3) Load 134(u64v) 151:132(i64vec3) SNegate 150 Store 134(u64v) 151 152: 18(int64_t) Load 139(i64) 153: 18(int64_t) Load 139(i64) 154: 18(int64_t) IAdd 153 152 Store 139(i64) 154 155:132(i64vec3) Load 134(u64v) 156:132(i64vec3) Load 134(u64v) 157:132(i64vec3) ISub 156 155 Store 134(u64v) 157 160: 31(int) Load 159(i) 161: 18(int64_t) SConvert 160 162: 18(int64_t) Load 139(i64) 163: 18(int64_t) IMul 162 161 Store 139(i64) 163 167: 164(ivec3) Load 166(uv) 168:132(i64vec3) UConvert 167 169:132(i64vec3) Load 134(u64v) 170:132(i64vec3) UDiv 169 168 Store 134(u64v) 170 171: 31(int) Load 159(i) 172: 18(int64_t) SConvert 171 173: 14(int64_t) Bitcast 172 174:132(i64vec3) Load 134(u64v) 175:132(i64vec3) CompositeConstruct 173 173 173 176:132(i64vec3) UMod 174 175 Store 134(u64v) 176 177:132(i64vec3) Load 134(u64v) 178: 164(ivec3) Load 166(uv) 179:132(i64vec3) UConvert 178 180:132(i64vec3) IAdd 177 179 Store 134(u64v) 180 181: 18(int64_t) Load 139(i64) 182: 31(int) Load 159(i) 183: 18(int64_t) SConvert 182 184: 18(int64_t) ISub 181 183 Store 139(i64) 184 185:132(i64vec3) Load 134(u64v) 186: 164(ivec3) Load 166(uv) 187:132(i64vec3) UConvert 186 188:132(i64vec3) IMul 185 187 Store 134(u64v) 188 189: 18(int64_t) Load 139(i64) 190: 31(int) Load 159(i) 191: 18(int64_t) SConvert 190 192: 18(int64_t) IMul 189 191 Store 139(i64) 192 193: 18(int64_t) Load 139(i64) 194: 31(int) Load 159(i) 195: 18(int64_t) SConvert 194 196: 18(int64_t) SMod 193 195 Store 139(i64) 196 197:132(i64vec3) Load 134(u64v) 198: 31(int) Load 159(i) 200: 199(ivec3) CompositeConstruct 198 198 198 201:132(i64vec3) ShiftLeftLogical 197 200 Store 134(u64v) 201 202: 18(int64_t) Load 139(i64) 205: 204(ptr) AccessChain 166(uv) 203 206: 21(int) Load 205 207: 18(int64_t) ShiftRightArithmetic 202 206 Store 139(i64) 207 208: 31(int) Load 159(i) 209:132(i64vec3) Load 134(u64v) 210: 199(ivec3) CompositeConstruct 208 208 208 211:132(i64vec3) ShiftLeftLogical 209 210 Store 134(u64v) 211 212: 204(ptr) AccessChain 166(uv) 203 213: 21(int) Load 212 214: 18(int64_t) Load 139(i64) 215: 18(int64_t) ShiftRightArithmetic 214 213 Store 139(i64) 215 216: 18(int64_t) Load 139(i64) 218: 40(ptr) AccessChain 134(u64v) 217 219: 14(int64_t) Load 218 220: 18(int64_t) ShiftLeftLogical 216 219 Store 139(i64) 220 221:132(i64vec3) Load 134(u64v) 222: 18(int64_t) Load 139(i64) 223:136(i64vec3) CompositeConstruct 222 222 222 224:132(i64vec3) ShiftLeftLogical 221 223 Store 134(u64v) 224 228: 40(ptr) AccessChain 134(u64v) 227 229: 14(int64_t) Load 228 230: 18(int64_t) Load 139(i64) 231: 14(int64_t) Bitcast 230 232: 55(bool) INotEqual 229 231 Store 226(b) 232 233: 18(int64_t) Load 139(i64) 234: 14(int64_t) Bitcast 233 235: 40(ptr) AccessChain 134(u64v) 227 236: 14(int64_t) Load 235 237: 55(bool) IEqual 234 236 Store 226(b) 237 238: 40(ptr) AccessChain 134(u64v) 227 239: 14(int64_t) Load 238 240: 204(ptr) AccessChain 166(uv) 203 241: 21(int) Load 240 242: 14(int64_t) UConvert 241 243: 55(bool) UGreaterThan 239 242 Store 226(b) 243 244: 18(int64_t) Load 139(i64) 245: 31(int) Load 159(i) 246: 18(int64_t) SConvert 245 247: 55(bool) SLessThan 244 246 Store 226(b) 247 248: 40(ptr) AccessChain 134(u64v) 203 249: 14(int64_t) Load 248 250: 204(ptr) AccessChain 166(uv) 227 251: 21(int) Load 250 252: 14(int64_t) UConvert 251 253: 55(bool) UGreaterThanEqual 249 252 Store 226(b) 253 254: 18(int64_t) Load 139(i64) 255: 31(int) Load 159(i) 256: 18(int64_t) SConvert 255 257: 55(bool) SLessThanEqual 254 256 Store 226(b) 257 258: 31(int) Load 159(i) 259: 18(int64_t) SConvert 258 260: 14(int64_t) Bitcast 259 261:132(i64vec3) Load 134(u64v) 262:132(i64vec3) CompositeConstruct 260 260 260 263:132(i64vec3) BitwiseOr 261 262 Store 134(u64v) 263 264: 18(int64_t) Load 139(i64) 265: 31(int) Load 159(i) 266: 18(int64_t) SConvert 265 267: 18(int64_t) BitwiseOr 264 266 Store 139(i64) 267 268: 31(int) Load 159(i) 269: 18(int64_t) SConvert 268 270: 18(int64_t) Load 139(i64) 271: 18(int64_t) BitwiseAnd 270 269 Store 139(i64) 271 272:132(i64vec3) Load 134(u64v) 273: 164(ivec3) Load 166(uv) 274:132(i64vec3) UConvert 273 275:132(i64vec3) BitwiseAnd 272 274 Store 134(u64v) 275 276: 18(int64_t) Load 139(i64) 277: 14(int64_t) Bitcast 276 278:132(i64vec3) Load 134(u64v) 279:132(i64vec3) CompositeConstruct 277 277 277 280:132(i64vec3) BitwiseXor 278 279 Store 134(u64v) 280 281:132(i64vec3) Load 134(u64v) 282: 18(int64_t) Load 139(i64) 283: 14(int64_t) Bitcast 282 284:132(i64vec3) CompositeConstruct 283 283 283 285:132(i64vec3) BitwiseXor 281 284 Store 134(u64v) 285 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label 286(i64v): 53(ptr) Variable Function 289(i64): 19(ptr) Variable Function 299(u64v): 133(ptr) Variable Function 301(u64): 40(ptr) Variable Function 373(dv): 372(ptr) Variable Function 394(iv): 75(ptr) Variable Function 399(uv): 82(ptr) Variable Function 403(bv): 402(ptr) Variable Function 287: 52(i64vec2) Load 286(i64v) 288: 52(i64vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 287 Store 286(i64v) 288 290: 18(int64_t) Load 289(i64) 291: 18(int64_t) ExtInst 1(GLSL.std.450) 7(SSign) 290 Store 289(i64) 291 292: 52(i64vec2) Load 286(i64v) 293: 18(int64_t) Load 289(i64) 294: 52(i64vec2) CompositeConstruct 293 293 295: 52(i64vec2) ExtInst 1(GLSL.std.450) 39(SMin) 292 294 Store 286(i64v) 295 296: 52(i64vec2) Load 286(i64v) 298: 52(i64vec2) ExtInst 1(GLSL.std.450) 39(SMin) 296 297 Store 286(i64v) 298 300:132(i64vec3) Load 299(u64v) 302: 14(int64_t) Load 301(u64) 303:132(i64vec3) CompositeConstruct 302 302 302 304:132(i64vec3) ExtInst 1(GLSL.std.450) 38(UMin) 300 303 Store 299(u64v) 304 305:132(i64vec3) Load 299(u64v) 307:132(i64vec3) ExtInst 1(GLSL.std.450) 38(UMin) 305 306 Store 299(u64v) 307 308: 52(i64vec2) Load 286(i64v) 309: 18(int64_t) Load 289(i64) 310: 52(i64vec2) CompositeConstruct 309 309 311: 52(i64vec2) ExtInst 1(GLSL.std.450) 42(SMax) 308 310 Store 286(i64v) 311 312: 52(i64vec2) Load 286(i64v) 313: 52(i64vec2) ExtInst 1(GLSL.std.450) 42(SMax) 312 297 Store 286(i64v) 313 314:132(i64vec3) Load 299(u64v) 315: 14(int64_t) Load 301(u64) 316:132(i64vec3) CompositeConstruct 315 315 315 317:132(i64vec3) ExtInst 1(GLSL.std.450) 41(UMax) 314 316 Store 299(u64v) 317 318:132(i64vec3) Load 299(u64v) 319:132(i64vec3) ExtInst 1(GLSL.std.450) 41(UMax) 318 306 Store 299(u64v) 319 320: 52(i64vec2) Load 286(i64v) 321: 18(int64_t) Load 289(i64) 322: 18(int64_t) SNegate 321 323: 18(int64_t) Load 289(i64) 324: 52(i64vec2) CompositeConstruct 322 322 325: 52(i64vec2) CompositeConstruct 323 323 326: 52(i64vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 320 324 325 Store 286(i64v) 326 327: 52(i64vec2) Load 286(i64v) 328: 52(i64vec2) Load 286(i64v) 329: 52(i64vec2) SNegate 328 330: 52(i64vec2) Load 286(i64v) 331: 52(i64vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 327 329 330 Store 286(i64v) 331 332:132(i64vec3) Load 299(u64v) 333: 14(int64_t) Load 301(u64) 334: 14(int64_t) SNegate 333 335: 14(int64_t) Load 301(u64) 336:132(i64vec3) CompositeConstruct 334 334 334 337:132(i64vec3) CompositeConstruct 335 335 335 338:132(i64vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 332 336 337 Store 299(u64v) 338 339:132(i64vec3) Load 299(u64v) 340:132(i64vec3) Load 299(u64v) 341:132(i64vec3) SNegate 340 342:132(i64vec3) Load 299(u64v) 343:132(i64vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 339 341 342 Store 299(u64v) 343 344: 19(ptr) AccessChain 286(i64v) 227 345: 18(int64_t) Load 344 346: 19(ptr) AccessChain 286(i64v) 203 347: 18(int64_t) Load 346 349: 18(int64_t) Select 348 347 345 Store 289(i64) 349 350: 18(int64_t) Load 289(i64) 351: 52(i64vec2) CompositeConstruct 350 350 352: 18(int64_t) Load 289(i64) 353: 18(int64_t) SNegate 352 354: 52(i64vec2) CompositeConstruct 353 353 357: 52(i64vec2) Select 356 354 351 Store 286(i64v) 357 358: 40(ptr) AccessChain 299(u64v) 227 359: 14(int64_t) Load 358 360: 40(ptr) AccessChain 299(u64v) 203 361: 14(int64_t) Load 360 362: 14(int64_t) Select 348 361 359 Store 301(u64) 362 363: 14(int64_t) Load 301(u64) 364:132(i64vec3) CompositeConstruct 363 363 363 365: 14(int64_t) Load 301(u64) 366: 14(int64_t) SNegate 365 367:132(i64vec3) CompositeConstruct 366 366 366 370:132(i64vec3) Select 369 367 364 Store 299(u64v) 370 374:371(f64vec3) Load 373(dv) 375: 95(f64vec2) VectorShuffle 374 374 0 1 376: 52(i64vec2) Bitcast 375 Store 286(i64v) 376 378: 377(ptr) AccessChain 373(dv) 217 379:94(float64_t) Load 378 380: 14(int64_t) Bitcast 379 381: 40(ptr) AccessChain 299(u64v) 227 Store 381 380 382: 52(i64vec2) Load 286(i64v) 383: 95(f64vec2) Bitcast 382 384: 377(ptr) AccessChain 373(dv) 227 385:94(float64_t) CompositeExtract 383 0 Store 384 385 386: 377(ptr) AccessChain 373(dv) 203 387:94(float64_t) CompositeExtract 383 1 Store 386 387 388:132(i64vec3) Load 299(u64v) 389:371(f64vec3) Bitcast 388 Store 373(dv) 389 393: 18(int64_t) Bitcast 392 Store 289(i64) 393 395: 18(int64_t) Load 289(i64) 396: 74(ivec2) Bitcast 395 Store 394(iv) 396 398: 14(int64_t) Bitcast 397 Store 301(u64) 398 400: 14(int64_t) Load 301(u64) 401: 81(ivec2) Bitcast 400 Store 399(uv) 401 404:132(i64vec3) Load 299(u64v) 405: 14(int64_t) Load 301(u64) 406:132(i64vec3) CompositeConstruct 405 405 405 407: 368(bvec3) ULessThan 404 406 Store 403(bv) 407 408: 52(i64vec2) Load 286(i64v) 409: 18(int64_t) Load 289(i64) 410: 52(i64vec2) CompositeConstruct 409 409 411: 56(bvec2) SLessThan 408 410 412: 225(ptr) AccessChain 403(bv) 227 413: 55(bool) CompositeExtract 411 0 Store 412 413 414: 225(ptr) AccessChain 403(bv) 203 415: 55(bool) CompositeExtract 411 1 Store 414 415 416:132(i64vec3) Load 299(u64v) 417: 14(int64_t) Load 301(u64) 418:132(i64vec3) CompositeConstruct 417 417 417 419: 368(bvec3) ULessThanEqual 416 418 Store 403(bv) 419 420: 52(i64vec2) Load 286(i64v) 421: 18(int64_t) Load 289(i64) 422: 52(i64vec2) CompositeConstruct 421 421 423: 56(bvec2) SLessThanEqual 420 422 424: 225(ptr) AccessChain 403(bv) 227 425: 55(bool) CompositeExtract 423 0 Store 424 425 426: 225(ptr) AccessChain 403(bv) 203 427: 55(bool) CompositeExtract 423 1 Store 426 427 428:132(i64vec3) Load 299(u64v) 429: 14(int64_t) Load 301(u64) 430:132(i64vec3) CompositeConstruct 429 429 429 431: 368(bvec3) UGreaterThan 428 430 Store 403(bv) 431 432: 52(i64vec2) Load 286(i64v) 433: 18(int64_t) Load 289(i64) 434: 52(i64vec2) CompositeConstruct 433 433 435: 56(bvec2) SGreaterThan 432 434 436: 225(ptr) AccessChain 403(bv) 227 437: 55(bool) CompositeExtract 435 0 Store 436 437 438: 225(ptr) AccessChain 403(bv) 203 439: 55(bool) CompositeExtract 435 1 Store 438 439 440:132(i64vec3) Load 299(u64v) 441: 14(int64_t) Load 301(u64) 442:132(i64vec3) CompositeConstruct 441 441 441 443: 368(bvec3) UGreaterThanEqual 440 442 Store 403(bv) 443 444: 52(i64vec2) Load 286(i64v) 445: 18(int64_t) Load 289(i64) 446: 52(i64vec2) CompositeConstruct 445 445 447: 56(bvec2) SGreaterThanEqual 444 446 448: 225(ptr) AccessChain 403(bv) 227 449: 55(bool) CompositeExtract 447 0 Store 448 449 450: 225(ptr) AccessChain 403(bv) 203 451: 55(bool) CompositeExtract 447 1 Store 450 451 452:132(i64vec3) Load 299(u64v) 453: 14(int64_t) Load 301(u64) 454:132(i64vec3) CompositeConstruct 453 453 453 455: 368(bvec3) IEqual 452 454 Store 403(bv) 455 456: 52(i64vec2) Load 286(i64v) 457: 18(int64_t) Load 289(i64) 458: 52(i64vec2) CompositeConstruct 457 457 459: 56(bvec2) IEqual 456 458 460: 225(ptr) AccessChain 403(bv) 227 461: 55(bool) CompositeExtract 459 0 Store 460 461 462: 225(ptr) AccessChain 403(bv) 203 463: 55(bool) CompositeExtract 459 1 Store 462 463 464:132(i64vec3) Load 299(u64v) 465: 14(int64_t) Load 301(u64) 466:132(i64vec3) CompositeConstruct 465 465 465 467: 368(bvec3) INotEqual 464 466 Store 403(bv) 467 468: 52(i64vec2) Load 286(i64v) 469: 18(int64_t) Load 289(i64) 470: 52(i64vec2) CompositeConstruct 469 469 471: 56(bvec2) INotEqual 468 470 472: 225(ptr) AccessChain 403(bv) 227 473: 55(bool) CompositeExtract 471 0 Store 472 473 474: 225(ptr) AccessChain 403(bv) 203 475: 55(bool) CompositeExtract 471 1 Store 474 475 476: 14(int64_t) Load 301(u64) 477: 18(int64_t) ExtInst 1(GLSL.std.450) 73(FindILsb) 476 Store 289(i64) 477 478: 14(int64_t) Load 301(u64) 479: 65(i64vec2) CompositeConstruct 478 478 480: 52(i64vec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 479 Store 286(i64v) 480 481: 14(int64_t) Load 301(u64) 482: 18(int64_t) BitCount 481 Store 289(i64) 482 483: 14(int64_t) Load 301(u64) 484: 65(i64vec2) CompositeConstruct 483 483 485: 52(i64vec2) BitCount 484 Store 286(i64v) 485 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.int8.frag.out000066400000000000000000001117031506534232700216120ustar00rootroot00000000000000spv.int8.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 544 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 6 "literal(" Name 8 "typeCast8(" Name 10 "operators(" Name 12 "builtinFuncs(" Name 16 "i8" Name 24 "Uniforms" MemberName 24(Uniforms) 0 "index" Name 26 "" Name 33 "indexable" Name 38 "u8" Name 46 "indexable" Name 51 "u8v" Name 54 "i8v" Name 60 "i16v" Name 70 "i32v" Name 78 "u32v" Name 85 "i64v" Name 91 "u64v" Name 105 "f16v" Name 111 "f32v" Name 117 "f64v" Name 144 "u16v" Name 174 "bv" Name 193 "arr" Name 201 "u8v" Name 206 "i8" Name 226 "i" Name 233 "uv" Name 249 "i16" Name 285 "b" Name 348 "f" Name 352 "i8v" Name 355 "i8" Name 365 "u8v" Name 367 "u8" Name 437 "i16" Name 440 "i32" Name 443 "i8v4" Name 447 "u16" Name 448 "u8v2" Name 451 "u32" Name 454 "u8v4" Name 466 "bv" Name 539 "Block" MemberName 539(Block) 0 "i8" MemberName 539(Block) 1 "i8v2" MemberName 539(Block) 2 "i8v3" MemberName 539(Block) 3 "i8v4" MemberName 539(Block) 4 "u8" MemberName 539(Block) 5 "u8v2" MemberName 539(Block) 6 "u8v3" MemberName 539(Block) 7 "u8v4" Name 541 "block" Name 542 "si8" Name 543 "su8" Decorate 24(Uniforms) Block MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 26 Binding 0 Decorate 26 DescriptorSet 0 Decorate 539(Block) Block MemberDecorate 539(Block) 0 Offset 0 MemberDecorate 539(Block) 1 Offset 2 MemberDecorate 539(Block) 2 Offset 4 MemberDecorate 539(Block) 3 Offset 8 MemberDecorate 539(Block) 4 Offset 12 MemberDecorate 539(Block) 5 Offset 14 MemberDecorate 539(Block) 6 Offset 16 MemberDecorate 539(Block) 7 Offset 20 Decorate 541(block) Binding 1 Decorate 541(block) DescriptorSet 0 Decorate 542(si8) SpecId 100 Decorate 543(su8) SpecId 101 2: TypeVoid 3: TypeFunction 2 14: TypeInt 8 1 15: TypePointer Function 14(int8_t) 17: TypeInt 32 0 18: 17(int) Constant 3 19: TypeArray 14(int8_t) 18 20: 14(int8_t) Constant 4294967279 21: 14(int8_t) Constant 4294967295 22: 14(int8_t) Constant 0 23: 19 ConstantComposite 20 21 22 24(Uniforms): TypeStruct 17(int) 25: TypePointer Uniform 24(Uniforms) 26: 25(ptr) Variable Uniform 27: TypeInt 32 1 28: 27(int) Constant 0 29: TypePointer Uniform 17(int) 32: TypePointer Function 19 36: TypeInt 8 0 37: TypePointer Function 36(int8_t) 39: TypeArray 36(int8_t) 18 40: 36(int8_t) Constant 255 41: 36(int8_t) Constant 127 42: 39 ConstantComposite 40 40 41 45: TypePointer Function 39 49: TypeVector 36(int8_t) 2 50: TypePointer Function 49(i8vec2) 52: TypeVector 14(int8_t) 2 53: TypePointer Function 52(i8vec2) 57: TypeInt 16 1 58: TypeVector 57(int16_t) 2 59: TypePointer Function 58(i16vec2) 64: TypeInt 16 0 65: TypeVector 64(int16_t) 2 68: TypeVector 27(int) 2 69: TypePointer Function 68(ivec2) 74: TypeVector 17(int) 2 77: TypePointer Function 74(ivec2) 82: TypeInt 64 1 83: TypeVector 82(int64_t) 2 84: TypePointer Function 83(i64vec2) 88: TypeInt 64 0 89: TypeVector 88(int64_t) 2 90: TypePointer Function 89(i64vec2) 102: TypeFloat 16 103: TypeVector 102(float16_t) 2 104: TypePointer Function 103(f16vec2) 108: TypeFloat 32 109: TypeVector 108(float) 2 110: TypePointer Function 109(fvec2) 114: TypeFloat 64 115: TypeVector 114(float64_t) 2 116: TypePointer Function 115(f64vec2) 143: TypePointer Function 65(i16vec2) 171: TypeBool 172: TypeVector 171(bool) 2 173: TypePointer Function 172(bvec2) 176: 14(int8_t) Constant 1 177: 52(i8vec2) ConstantComposite 22 22 178: 52(i8vec2) ConstantComposite 176 176 181: 36(int8_t) Constant 0 182: 36(int8_t) Constant 1 183: 49(i8vec2) ConstantComposite 181 181 184: 49(i8vec2) ConstantComposite 182 182 190: 17(int) Constant 4 191: TypeArray 108(float) 190 192: TypePointer Function 191 194: 108(float) Constant 1065353216 195: 108(float) Constant 1073741824 196: 108(float) Constant 1077936128 197: 108(float) Constant 1082130432 198: 191 ConstantComposite 194 195 196 197 199: TypeVector 36(int8_t) 3 200: TypePointer Function 199(i8vec3) 203: TypeVector 14(int8_t) 3 225: TypePointer Function 27(int) 231: TypeVector 17(int) 3 232: TypePointer Function 231(ivec3) 248: TypePointer Function 57(int16_t) 270: 17(int) Constant 1 276: 17(int) Constant 2 284: TypePointer Function 171(bool) 286: 17(int) Constant 0 300: TypePointer Function 17(int) 347: TypePointer Function 108(float) 363: 52(i8vec2) ConstantComposite 21 21 372: 199(i8vec3) ConstantComposite 181 181 181 414: 171(bool) ConstantTrue 421: 171(bool) ConstantFalse 422: 172(bvec2) ConstantComposite 421 421 434: TypeVector 171(bool) 3 435: 434(bvec3) ConstantComposite 421 421 421 441: TypeVector 14(int8_t) 4 442: TypePointer Function 441(i8vec4) 446: TypePointer Function 64(int16_t) 452: TypeVector 36(int8_t) 4 453: TypePointer Function 452(i8vec4) 465: TypePointer Function 434(bvec3) 539(Block): TypeStruct 14(int8_t) 52(i8vec2) 203(i8vec3) 441(i8vec4) 36(int8_t) 49(i8vec2) 199(i8vec3) 452(i8vec4) 540: TypePointer Uniform 539(Block) 541(block): 540(ptr) Variable Uniform 542(si8): 14(int8_t) SpecConstant 4294967286 543(su8): 36(int8_t) SpecConstant 20 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 16(i8): 15(ptr) Variable Function 33(indexable): 32(ptr) Variable Function 38(u8): 37(ptr) Variable Function 46(indexable): 45(ptr) Variable Function 30: 29(ptr) AccessChain 26 28 31: 17(int) Load 30 Store 33(indexable) 23 34: 15(ptr) AccessChain 33(indexable) 31 35: 14(int8_t) Load 34 Store 16(i8) 35 43: 29(ptr) AccessChain 26 28 44: 17(int) Load 43 Store 46(indexable) 42 47: 37(ptr) AccessChain 46(indexable) 44 48: 36(int8_t) Load 47 Store 38(u8) 48 Return FunctionEnd 8(typeCast8(): 2 Function None 3 9: Label 51(u8v): 50(ptr) Variable Function 54(i8v): 53(ptr) Variable Function 60(i16v): 59(ptr) Variable Function 70(i32v): 69(ptr) Variable Function 78(u32v): 77(ptr) Variable Function 85(i64v): 84(ptr) Variable Function 91(u64v): 90(ptr) Variable Function 105(f16v): 104(ptr) Variable Function 111(f32v): 110(ptr) Variable Function 117(f64v): 116(ptr) Variable Function 144(u16v): 143(ptr) Variable Function 174(bv): 173(ptr) Variable Function 55: 52(i8vec2) Load 54(i8v) 56: 49(i8vec2) Bitcast 55 Store 51(u8v) 56 61: 52(i8vec2) Load 54(i8v) 62: 58(i16vec2) SConvert 61 Store 60(i16v) 62 63: 49(i8vec2) Load 51(u8v) 66: 65(i16vec2) UConvert 63 67: 58(i16vec2) Bitcast 66 Store 60(i16v) 67 71: 52(i8vec2) Load 54(i8v) 72: 68(ivec2) SConvert 71 Store 70(i32v) 72 73: 49(i8vec2) Load 51(u8v) 75: 74(ivec2) UConvert 73 76: 68(ivec2) Bitcast 75 Store 70(i32v) 76 79: 52(i8vec2) Load 54(i8v) 80: 68(ivec2) SConvert 79 81: 74(ivec2) Bitcast 80 Store 78(u32v) 81 86: 52(i8vec2) Load 54(i8v) 87: 83(i64vec2) SConvert 86 Store 85(i64v) 87 92: 52(i8vec2) Load 54(i8v) 93: 83(i64vec2) SConvert 92 94: 89(i64vec2) Bitcast 93 Store 91(u64v) 94 95: 49(i8vec2) Load 51(u8v) 96: 74(ivec2) UConvert 95 Store 78(u32v) 96 97: 49(i8vec2) Load 51(u8v) 98: 89(i64vec2) UConvert 97 99: 83(i64vec2) Bitcast 98 Store 85(i64v) 99 100: 49(i8vec2) Load 51(u8v) 101: 89(i64vec2) UConvert 100 Store 91(u64v) 101 106: 52(i8vec2) Load 54(i8v) 107:103(f16vec2) ConvertSToF 106 Store 105(f16v) 107 112: 52(i8vec2) Load 54(i8v) 113: 109(fvec2) ConvertSToF 112 Store 111(f32v) 113 118: 52(i8vec2) Load 54(i8v) 119:115(f64vec2) ConvertSToF 118 Store 117(f64v) 119 120: 49(i8vec2) Load 51(u8v) 121:103(f16vec2) ConvertUToF 120 Store 105(f16v) 121 122: 49(i8vec2) Load 51(u8v) 123: 109(fvec2) ConvertUToF 122 Store 111(f32v) 123 124: 49(i8vec2) Load 51(u8v) 125:115(f64vec2) ConvertUToF 124 Store 117(f64v) 125 126: 49(i8vec2) Load 51(u8v) 127: 52(i8vec2) Bitcast 126 Store 54(i8v) 127 128: 52(i8vec2) Load 54(i8v) 129: 58(i16vec2) SConvert 128 Store 60(i16v) 129 130: 49(i8vec2) Load 51(u8v) 131: 65(i16vec2) UConvert 130 132: 58(i16vec2) Bitcast 131 Store 60(i16v) 132 133: 52(i8vec2) Load 54(i8v) 134: 68(ivec2) SConvert 133 Store 70(i32v) 134 135: 49(i8vec2) Load 51(u8v) 136: 74(ivec2) UConvert 135 137: 68(ivec2) Bitcast 136 Store 70(i32v) 137 138: 52(i8vec2) Load 54(i8v) 139: 83(i64vec2) SConvert 138 Store 85(i64v) 139 140: 52(i8vec2) Load 54(i8v) 141: 83(i64vec2) SConvert 140 142: 89(i64vec2) Bitcast 141 Store 91(u64v) 142 145: 52(i8vec2) Load 54(i8v) 146: 58(i16vec2) SConvert 145 147: 65(i16vec2) Bitcast 146 Store 144(u16v) 147 148: 49(i8vec2) Load 51(u8v) 149: 65(i16vec2) UConvert 148 Store 144(u16v) 149 150: 49(i8vec2) Load 51(u8v) 151: 74(ivec2) UConvert 150 Store 78(u32v) 151 152: 49(i8vec2) Load 51(u8v) 153: 89(i64vec2) UConvert 152 154: 83(i64vec2) Bitcast 153 Store 85(i64v) 154 155: 49(i8vec2) Load 51(u8v) 156: 89(i64vec2) UConvert 155 157: 83(i64vec2) Bitcast 156 158: 89(i64vec2) Bitcast 157 Store 91(u64v) 158 159: 52(i8vec2) Load 54(i8v) 160:103(f16vec2) ConvertSToF 159 Store 105(f16v) 160 161: 52(i8vec2) Load 54(i8v) 162: 109(fvec2) ConvertSToF 161 Store 111(f32v) 162 163: 52(i8vec2) Load 54(i8v) 164:115(f64vec2) ConvertSToF 163 Store 117(f64v) 164 165: 49(i8vec2) Load 51(u8v) 166:103(f16vec2) ConvertUToF 165 Store 105(f16v) 166 167: 49(i8vec2) Load 51(u8v) 168: 109(fvec2) ConvertUToF 167 Store 111(f32v) 168 169: 49(i8vec2) Load 51(u8v) 170:115(f64vec2) ConvertUToF 169 Store 117(f64v) 170 175: 172(bvec2) Load 174(bv) 179: 52(i8vec2) Select 175 178 177 Store 54(i8v) 179 180: 172(bvec2) Load 174(bv) 185: 49(i8vec2) Select 180 184 183 Store 51(u8v) 185 186: 52(i8vec2) Load 54(i8v) 187: 172(bvec2) INotEqual 186 183 Store 174(bv) 187 188: 49(i8vec2) Load 51(u8v) 189: 172(bvec2) INotEqual 188 183 Store 174(bv) 189 Return FunctionEnd 10(operators(): 2 Function None 3 11: Label 193(arr): 192(ptr) Variable Function 201(u8v): 200(ptr) Variable Function 206(i8): 15(ptr) Variable Function 226(i): 225(ptr) Variable Function 233(uv): 232(ptr) Variable Function 249(i16): 248(ptr) Variable Function 285(b): 284(ptr) Variable Function 348(f): 347(ptr) Variable Function Store 193(arr) 198 202: 199(i8vec3) Load 201(u8v) 204: 203(i8vec3) CompositeConstruct 176 176 176 205: 199(i8vec3) IAdd 202 204 Store 201(u8v) 205 207: 14(int8_t) Load 206(i8) 208: 14(int8_t) ISub 207 176 Store 206(i8) 208 209: 14(int8_t) Load 206(i8) 210: 14(int8_t) IAdd 209 176 Store 206(i8) 210 211: 199(i8vec3) Load 201(u8v) 212: 203(i8vec3) CompositeConstruct 176 176 176 213: 199(i8vec3) ISub 211 212 Store 201(u8v) 213 214: 199(i8vec3) Load 201(u8v) 215: 199(i8vec3) Not 214 Store 201(u8v) 215 216: 14(int8_t) Load 206(i8) Store 206(i8) 216 217: 199(i8vec3) Load 201(u8v) 218: 199(i8vec3) SNegate 217 Store 201(u8v) 218 219: 14(int8_t) Load 206(i8) 220: 14(int8_t) Load 206(i8) 221: 14(int8_t) IAdd 220 219 Store 206(i8) 221 222: 199(i8vec3) Load 201(u8v) 223: 199(i8vec3) Load 201(u8v) 224: 199(i8vec3) ISub 223 222 Store 201(u8v) 224 227: 14(int8_t) Load 206(i8) 228: 27(int) SConvert 227 229: 27(int) Load 226(i) 230: 27(int) IMul 229 228 Store 226(i) 230 234: 199(i8vec3) Load 201(u8v) 235: 231(ivec3) UConvert 234 236: 231(ivec3) Load 233(uv) 237: 231(ivec3) UDiv 236 235 Store 233(uv) 237 238: 14(int8_t) Load 206(i8) 239: 27(int) SConvert 238 240: 17(int) Bitcast 239 241: 231(ivec3) Load 233(uv) 242: 231(ivec3) CompositeConstruct 240 240 240 243: 231(ivec3) UMod 241 242 Store 233(uv) 243 244: 199(i8vec3) Load 201(u8v) 245: 231(ivec3) UConvert 244 246: 231(ivec3) Load 233(uv) 247: 231(ivec3) IAdd 245 246 Store 233(uv) 247 250: 14(int8_t) Load 206(i8) 251: 57(int16_t) SConvert 250 252: 57(int16_t) Load 249(i16) 253: 57(int16_t) ISub 251 252 Store 249(i16) 253 254: 199(i8vec3) Load 201(u8v) 255: 231(ivec3) UConvert 254 256: 231(ivec3) Load 233(uv) 257: 231(ivec3) IMul 255 256 Store 233(uv) 257 258: 14(int8_t) Load 206(i8) 259: 57(int16_t) SConvert 258 260: 57(int16_t) Load 249(i16) 261: 57(int16_t) IMul 259 260 Store 249(i16) 261 262: 14(int8_t) Load 206(i8) 263: 27(int) SConvert 262 264: 27(int) Load 226(i) 265: 27(int) SMod 263 264 Store 226(i) 265 266: 14(int8_t) Load 206(i8) 267: 199(i8vec3) Load 201(u8v) 268: 203(i8vec3) CompositeConstruct 266 266 266 269: 199(i8vec3) ShiftLeftLogical 267 268 Store 201(u8v) 269 271: 37(ptr) AccessChain 201(u8v) 270 272: 36(int8_t) Load 271 273: 14(int8_t) Load 206(i8) 274: 14(int8_t) ShiftRightArithmetic 273 272 Store 206(i8) 274 275: 14(int8_t) Load 206(i8) 277: 37(ptr) AccessChain 201(u8v) 276 278: 36(int8_t) Load 277 279: 14(int8_t) ShiftLeftLogical 275 278 Store 206(i8) 279 280: 199(i8vec3) Load 201(u8v) 281: 14(int8_t) Load 206(i8) 282: 203(i8vec3) CompositeConstruct 281 281 281 283: 199(i8vec3) ShiftLeftLogical 280 282 Store 201(u8v) 283 287: 37(ptr) AccessChain 201(u8v) 286 288: 36(int8_t) Load 287 289: 14(int8_t) Load 206(i8) 290: 36(int8_t) Bitcast 289 291: 171(bool) INotEqual 288 290 Store 285(b) 291 292: 14(int8_t) Load 206(i8) 293: 36(int8_t) Bitcast 292 294: 37(ptr) AccessChain 201(u8v) 286 295: 36(int8_t) Load 294 296: 171(bool) IEqual 293 295 Store 285(b) 296 297: 37(ptr) AccessChain 201(u8v) 286 298: 36(int8_t) Load 297 299: 17(int) UConvert 298 301: 300(ptr) AccessChain 233(uv) 270 302: 17(int) Load 301 303: 171(bool) UGreaterThan 299 302 Store 285(b) 303 304: 14(int8_t) Load 206(i8) 305: 27(int) SConvert 304 306: 27(int) Load 226(i) 307: 171(bool) SLessThan 305 306 Store 285(b) 307 308: 37(ptr) AccessChain 201(u8v) 270 309: 36(int8_t) Load 308 310: 17(int) UConvert 309 311: 300(ptr) AccessChain 233(uv) 286 312: 17(int) Load 311 313: 171(bool) UGreaterThanEqual 310 312 Store 285(b) 313 314: 14(int8_t) Load 206(i8) 315: 27(int) SConvert 314 316: 27(int) Load 226(i) 317: 171(bool) SLessThanEqual 315 316 Store 285(b) 317 318: 14(int8_t) Load 206(i8) 319: 27(int) SConvert 318 320: 17(int) Bitcast 319 321: 231(ivec3) Load 233(uv) 322: 231(ivec3) CompositeConstruct 320 320 320 323: 231(ivec3) BitwiseOr 321 322 Store 233(uv) 323 324: 14(int8_t) Load 206(i8) 325: 27(int) SConvert 324 326: 27(int) Load 226(i) 327: 27(int) BitwiseOr 325 326 Store 226(i) 327 328: 14(int8_t) Load 206(i8) 329: 57(int16_t) SConvert 328 330: 57(int16_t) Load 249(i16) 331: 57(int16_t) BitwiseAnd 330 329 Store 249(i16) 331 332: 199(i8vec3) Load 201(u8v) 333: 231(ivec3) UConvert 332 334: 231(ivec3) Load 233(uv) 335: 231(ivec3) BitwiseAnd 333 334 Store 233(uv) 335 336: 14(int8_t) Load 206(i8) 337: 27(int) SConvert 336 338: 17(int) Bitcast 337 339: 231(ivec3) Load 233(uv) 340: 231(ivec3) CompositeConstruct 338 338 338 341: 231(ivec3) BitwiseXor 339 340 Store 233(uv) 341 342: 199(i8vec3) Load 201(u8v) 343: 14(int8_t) Load 206(i8) 344: 36(int8_t) Bitcast 343 345: 199(i8vec3) CompositeConstruct 344 344 344 346: 199(i8vec3) BitwiseXor 342 345 Store 201(u8v) 346 349: 14(int8_t) Load 206(i8) 350: 347(ptr) AccessChain 193(arr) 349 351: 108(float) Load 350 Store 348(f) 351 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label 352(i8v): 53(ptr) Variable Function 355(i8): 15(ptr) Variable Function 365(u8v): 200(ptr) Variable Function 367(u8): 37(ptr) Variable Function 437(i16): 248(ptr) Variable Function 440(i32): 225(ptr) Variable Function 443(i8v4): 442(ptr) Variable Function 447(u16): 446(ptr) Variable Function 448(u8v2): 50(ptr) Variable Function 451(u32): 300(ptr) Variable Function 454(u8v4): 453(ptr) Variable Function 466(bv): 465(ptr) Variable Function 353: 52(i8vec2) Load 352(i8v) 354: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 353 Store 352(i8v) 354 356: 14(int8_t) Load 355(i8) 357: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 356 Store 355(i8) 357 358: 52(i8vec2) Load 352(i8v) 359: 14(int8_t) Load 355(i8) 360: 52(i8vec2) CompositeConstruct 359 359 361: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 358 360 Store 352(i8v) 361 362: 52(i8vec2) Load 352(i8v) 364: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 362 363 Store 352(i8v) 364 366: 199(i8vec3) Load 365(u8v) 368: 36(int8_t) Load 367(u8) 369: 199(i8vec3) CompositeConstruct 368 368 368 370: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 366 369 Store 365(u8v) 370 371: 199(i8vec3) Load 365(u8v) 373: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 372 Store 365(u8v) 373 374: 52(i8vec2) Load 352(i8v) 375: 14(int8_t) Load 355(i8) 376: 52(i8vec2) CompositeConstruct 375 375 377: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 374 376 Store 352(i8v) 377 378: 52(i8vec2) Load 352(i8v) 379: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 378 363 Store 352(i8v) 379 380: 199(i8vec3) Load 365(u8v) 381: 36(int8_t) Load 367(u8) 382: 199(i8vec3) CompositeConstruct 381 381 381 383: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 380 382 Store 365(u8v) 383 384: 199(i8vec3) Load 365(u8v) 385: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 384 372 Store 365(u8v) 385 386: 52(i8vec2) Load 352(i8v) 387: 14(int8_t) Load 355(i8) 388: 14(int8_t) SNegate 387 389: 14(int8_t) Load 355(i8) 390: 52(i8vec2) CompositeConstruct 388 388 391: 52(i8vec2) CompositeConstruct 389 389 392: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 390 391 Store 352(i8v) 392 393: 52(i8vec2) Load 352(i8v) 394: 52(i8vec2) Load 352(i8v) 395: 52(i8vec2) SNegate 394 396: 52(i8vec2) Load 352(i8v) 397: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 393 395 396 Store 352(i8v) 397 398: 199(i8vec3) Load 365(u8v) 399: 36(int8_t) Load 367(u8) 400: 36(int8_t) SNegate 399 401: 36(int8_t) Load 367(u8) 402: 199(i8vec3) CompositeConstruct 400 400 400 403: 199(i8vec3) CompositeConstruct 401 401 401 404: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 402 403 Store 365(u8v) 404 405: 199(i8vec3) Load 365(u8v) 406: 199(i8vec3) Load 365(u8v) 407: 199(i8vec3) SNegate 406 408: 199(i8vec3) Load 365(u8v) 409: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 405 407 408 Store 365(u8v) 409 410: 15(ptr) AccessChain 352(i8v) 286 411: 14(int8_t) Load 410 412: 15(ptr) AccessChain 352(i8v) 270 413: 14(int8_t) Load 412 415: 14(int8_t) Select 414 413 411 Store 355(i8) 415 416: 14(int8_t) Load 355(i8) 417: 52(i8vec2) CompositeConstruct 416 416 418: 14(int8_t) Load 355(i8) 419: 14(int8_t) SNegate 418 420: 52(i8vec2) CompositeConstruct 419 419 423: 52(i8vec2) Select 422 420 417 Store 352(i8v) 423 424: 37(ptr) AccessChain 365(u8v) 286 425: 36(int8_t) Load 424 426: 37(ptr) AccessChain 365(u8v) 270 427: 36(int8_t) Load 426 428: 36(int8_t) Select 414 427 425 Store 367(u8) 428 429: 36(int8_t) Load 367(u8) 430: 199(i8vec3) CompositeConstruct 429 429 429 431: 36(int8_t) Load 367(u8) 432: 36(int8_t) SNegate 431 433: 199(i8vec3) CompositeConstruct 432 432 432 436: 199(i8vec3) Select 435 433 430 Store 365(u8v) 436 438: 52(i8vec2) Load 352(i8v) 439: 57(int16_t) Bitcast 438 Store 437(i16) 439 444: 441(i8vec4) Load 443(i8v4) 445: 27(int) Bitcast 444 Store 440(i32) 445 449: 49(i8vec2) Load 448(u8v2) 450: 64(int16_t) Bitcast 449 Store 447(u16) 450 455: 452(i8vec4) Load 454(u8v4) 456: 17(int) Bitcast 455 Store 451(u32) 456 457: 57(int16_t) Load 437(i16) 458: 52(i8vec2) Bitcast 457 Store 352(i8v) 458 459: 27(int) Load 440(i32) 460: 441(i8vec4) Bitcast 459 Store 443(i8v4) 460 461: 64(int16_t) Load 447(u16) 462: 49(i8vec2) Bitcast 461 Store 448(u8v2) 462 463: 17(int) Load 451(u32) 464: 452(i8vec4) Bitcast 463 Store 454(u8v4) 464 467: 199(i8vec3) Load 365(u8v) 468: 36(int8_t) Load 367(u8) 469: 199(i8vec3) CompositeConstruct 468 468 468 470: 434(bvec3) ULessThan 467 469 Store 466(bv) 470 471: 52(i8vec2) Load 352(i8v) 472: 14(int8_t) Load 355(i8) 473: 52(i8vec2) CompositeConstruct 472 472 474: 172(bvec2) SLessThan 471 473 475: 284(ptr) AccessChain 466(bv) 286 476: 171(bool) CompositeExtract 474 0 Store 475 476 477: 284(ptr) AccessChain 466(bv) 270 478: 171(bool) CompositeExtract 474 1 Store 477 478 479: 199(i8vec3) Load 365(u8v) 480: 36(int8_t) Load 367(u8) 481: 199(i8vec3) CompositeConstruct 480 480 480 482: 434(bvec3) ULessThanEqual 479 481 Store 466(bv) 482 483: 52(i8vec2) Load 352(i8v) 484: 14(int8_t) Load 355(i8) 485: 52(i8vec2) CompositeConstruct 484 484 486: 172(bvec2) SLessThanEqual 483 485 487: 284(ptr) AccessChain 466(bv) 286 488: 171(bool) CompositeExtract 486 0 Store 487 488 489: 284(ptr) AccessChain 466(bv) 270 490: 171(bool) CompositeExtract 486 1 Store 489 490 491: 199(i8vec3) Load 365(u8v) 492: 36(int8_t) Load 367(u8) 493: 199(i8vec3) CompositeConstruct 492 492 492 494: 434(bvec3) UGreaterThan 491 493 Store 466(bv) 494 495: 52(i8vec2) Load 352(i8v) 496: 14(int8_t) Load 355(i8) 497: 52(i8vec2) CompositeConstruct 496 496 498: 172(bvec2) SGreaterThan 495 497 499: 284(ptr) AccessChain 466(bv) 286 500: 171(bool) CompositeExtract 498 0 Store 499 500 501: 284(ptr) AccessChain 466(bv) 270 502: 171(bool) CompositeExtract 498 1 Store 501 502 503: 199(i8vec3) Load 365(u8v) 504: 36(int8_t) Load 367(u8) 505: 199(i8vec3) CompositeConstruct 504 504 504 506: 434(bvec3) UGreaterThanEqual 503 505 Store 466(bv) 506 507: 52(i8vec2) Load 352(i8v) 508: 14(int8_t) Load 355(i8) 509: 52(i8vec2) CompositeConstruct 508 508 510: 172(bvec2) SGreaterThanEqual 507 509 511: 284(ptr) AccessChain 466(bv) 286 512: 171(bool) CompositeExtract 510 0 Store 511 512 513: 284(ptr) AccessChain 466(bv) 270 514: 171(bool) CompositeExtract 510 1 Store 513 514 515: 199(i8vec3) Load 365(u8v) 516: 36(int8_t) Load 367(u8) 517: 199(i8vec3) CompositeConstruct 516 516 516 518: 434(bvec3) IEqual 515 517 Store 466(bv) 518 519: 52(i8vec2) Load 352(i8v) 520: 14(int8_t) Load 355(i8) 521: 52(i8vec2) CompositeConstruct 520 520 522: 172(bvec2) IEqual 519 521 523: 284(ptr) AccessChain 466(bv) 286 524: 171(bool) CompositeExtract 522 0 Store 523 524 525: 284(ptr) AccessChain 466(bv) 270 526: 171(bool) CompositeExtract 522 1 Store 525 526 527: 199(i8vec3) Load 365(u8v) 528: 36(int8_t) Load 367(u8) 529: 199(i8vec3) CompositeConstruct 528 528 528 530: 434(bvec3) INotEqual 527 529 Store 466(bv) 530 531: 52(i8vec2) Load 352(i8v) 532: 14(int8_t) Load 355(i8) 533: 52(i8vec2) CompositeConstruct 532 532 534: 172(bvec2) INotEqual 531 533 535: 284(ptr) AccessChain 466(bv) 286 536: 171(bool) CompositeExtract 534 0 Store 535 536 537: 284(ptr) AccessChain 466(bv) 270 538: 171(bool) CompositeExtract 534 1 Store 537 538 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intOps.vert.out000066400000000000000000000475061506534232700222560ustar00rootroot00000000000000spv.intOps.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 302 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 15 21 26 53 72 88 105 137 156 160 172 189 202 281 Source ESSL 310 Name 4 "main" Name 9 "iout" Name 15 "uout" Name 21 "fout" Name 26 "u2" Name 30 "u2out" Name 31 "ResType" Name 53 "u1" Name 57 "u1out" Name 58 "ResType" Name 72 "u4" Name 76 "u4outHi" Name 77 "u4outLow" Name 78 "ResType" Name 88 "i4" Name 92 "i4outHi" Name 93 "i4outLow" Name 94 "ResType" Name 105 "v3" Name 109 "i3out" Name 110 "ResType" Name 137 "v1" Name 140 "i1out" Name 141 "ResType" Name 156 "v2" Name 160 "i2" Name 172 "i1" Name 189 "u3" Name 202 "i3" Name 281 "v4" Decorate 9(iout) Location 1 Decorate 15(uout) Location 0 Decorate 21(fout) Location 2 Decorate 26(u2) Location 1 Decorate 53(u1) Location 0 Decorate 72(u4) Location 3 Decorate 88(i4) Location 11 Decorate 105(v3) Location 6 Decorate 137(v1) Location 4 Decorate 156(v2) Location 5 Decorate 160(i2) Location 9 Decorate 172(i1) Location 8 Decorate 189(u3) Location 2 Decorate 202(i3) Location 10 Decorate 281(v4) Location 7 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 4 8: TypePointer Output 7(ivec4) 9(iout): 8(ptr) Variable Output 10: 6(int) Constant 0 11: 7(ivec4) ConstantComposite 10 10 10 10 12: TypeInt 32 0 13: TypeVector 12(int) 4 14: TypePointer Output 13(ivec4) 15(uout): 14(ptr) Variable Output 16: 12(int) Constant 0 17: 13(ivec4) ConstantComposite 16 16 16 16 18: TypeFloat 32 19: TypeVector 18(float) 4 20: TypePointer Output 19(fvec4) 21(fout): 20(ptr) Variable Output 22: 18(float) Constant 0 23: 19(fvec4) ConstantComposite 22 22 22 22 24: TypeVector 12(int) 2 25: TypePointer Input 24(ivec2) 26(u2): 25(ptr) Variable Input 29: TypePointer Function 24(ivec2) 31(ResType): TypeStruct 24(ivec2) 24(ivec2) 38: TypePointer Output 12(int) 41: 12(int) Constant 1 52: TypePointer Input 12(int) 53(u1): 52(ptr) Variable Input 56: TypePointer Function 12(int) 58(ResType): TypeStruct 12(int) 12(int) 71: TypePointer Input 13(ivec4) 72(u4): 71(ptr) Variable Input 75: TypePointer Function 13(ivec4) 78(ResType): TypeStruct 13(ivec4) 13(ivec4) 87: TypePointer Input 7(ivec4) 88(i4): 87(ptr) Variable Input 91: TypePointer Function 7(ivec4) 94(ResType): TypeStruct 7(ivec4) 7(ivec4) 103: TypeVector 18(float) 3 104: TypePointer Input 103(fvec3) 105(v3): 104(ptr) Variable Input 107: TypeVector 6(int) 3 108: TypePointer Function 107(ivec3) 110(ResType): TypeStruct 103(fvec3) 107(ivec3) 117: TypePointer Output 18(float) 122: 12(int) Constant 2 129: TypePointer Output 6(int) 136: TypePointer Input 18(float) 137(v1): 136(ptr) Variable Input 139: TypePointer Function 6(int) 141(ResType): TypeStruct 18(float) 6(int) 154: TypeVector 18(float) 2 155: TypePointer Input 154(fvec2) 156(v2): 155(ptr) Variable Input 158: TypeVector 6(int) 2 159: TypePointer Input 158(ivec2) 160(i2): 159(ptr) Variable Input 171: TypePointer Input 6(int) 172(i1): 171(ptr) Variable Input 180: 6(int) Constant 4 181: 6(int) Constant 5 187: TypeVector 12(int) 3 188: TypePointer Input 187(ivec3) 189(u3): 188(ptr) Variable Input 201: TypePointer Input 107(ivec3) 202(i3): 201(ptr) Variable Input 280: TypePointer Input 19(fvec4) 281(v4): 280(ptr) Variable Input 4(main): 2 Function None 3 5: Label 30(u2out): 29(ptr) Variable Function 57(u1out): 56(ptr) Variable Function 76(u4outHi): 75(ptr) Variable Function 77(u4outLow): 75(ptr) Variable Function 92(i4outHi): 91(ptr) Variable Function 93(i4outLow): 91(ptr) Variable Function 109(i3out): 108(ptr) Variable Function 140(i1out): 139(ptr) Variable Function Store 9(iout) 11 Store 15(uout) 17 Store 21(fout) 23 27: 24(ivec2) Load 26(u2) 28: 24(ivec2) Load 26(u2) 32: 31(ResType) IAddCarry 27 28 33: 24(ivec2) CompositeExtract 32 1 Store 30(u2out) 33 34: 24(ivec2) CompositeExtract 32 0 35: 13(ivec4) Load 15(uout) 36: 24(ivec2) VectorShuffle 35 35 0 1 37: 24(ivec2) IAdd 36 34 39: 38(ptr) AccessChain 15(uout) 16 40: 12(int) CompositeExtract 37 0 Store 39 40 42: 38(ptr) AccessChain 15(uout) 41 43: 12(int) CompositeExtract 37 1 Store 42 43 44: 24(ivec2) Load 30(u2out) 45: 13(ivec4) Load 15(uout) 46: 24(ivec2) VectorShuffle 45 45 0 1 47: 24(ivec2) IAdd 46 44 48: 38(ptr) AccessChain 15(uout) 16 49: 12(int) CompositeExtract 47 0 Store 48 49 50: 38(ptr) AccessChain 15(uout) 41 51: 12(int) CompositeExtract 47 1 Store 50 51 54: 12(int) Load 53(u1) 55: 12(int) Load 53(u1) 59: 58(ResType) ISubBorrow 54 55 60: 12(int) CompositeExtract 59 1 Store 57(u1out) 60 61: 12(int) CompositeExtract 59 0 62: 38(ptr) AccessChain 15(uout) 16 63: 12(int) Load 62 64: 12(int) IAdd 63 61 65: 38(ptr) AccessChain 15(uout) 16 Store 65 64 66: 12(int) Load 57(u1out) 67: 38(ptr) AccessChain 15(uout) 16 68: 12(int) Load 67 69: 12(int) IAdd 68 66 70: 38(ptr) AccessChain 15(uout) 16 Store 70 69 73: 13(ivec4) Load 72(u4) 74: 13(ivec4) Load 72(u4) 79: 78(ResType) UMulExtended 73 74 80: 13(ivec4) CompositeExtract 79 0 Store 77(u4outLow) 80 81: 13(ivec4) CompositeExtract 79 1 Store 76(u4outHi) 81 82: 13(ivec4) Load 76(u4outHi) 83: 13(ivec4) Load 77(u4outLow) 84: 13(ivec4) IAdd 82 83 85: 13(ivec4) Load 15(uout) 86: 13(ivec4) IAdd 85 84 Store 15(uout) 86 89: 7(ivec4) Load 88(i4) 90: 7(ivec4) Load 88(i4) 95: 94(ResType) SMulExtended 89 90 96: 7(ivec4) CompositeExtract 95 0 Store 93(i4outLow) 96 97: 7(ivec4) CompositeExtract 95 1 Store 92(i4outHi) 97 98: 7(ivec4) Load 93(i4outLow) 99: 7(ivec4) Load 92(i4outHi) 100: 7(ivec4) IAdd 98 99 101: 7(ivec4) Load 9(iout) 102: 7(ivec4) IAdd 101 100 Store 9(iout) 102 106: 103(fvec3) Load 105(v3) 111:110(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 106 112: 107(ivec3) CompositeExtract 111 1 Store 109(i3out) 112 113: 103(fvec3) CompositeExtract 111 0 114: 19(fvec4) Load 21(fout) 115: 103(fvec3) VectorShuffle 114 114 0 1 2 116: 103(fvec3) FAdd 115 113 118: 117(ptr) AccessChain 21(fout) 16 119: 18(float) CompositeExtract 116 0 Store 118 119 120: 117(ptr) AccessChain 21(fout) 41 121: 18(float) CompositeExtract 116 1 Store 120 121 123: 117(ptr) AccessChain 21(fout) 122 124: 18(float) CompositeExtract 116 2 Store 123 124 125: 107(ivec3) Load 109(i3out) 126: 7(ivec4) Load 9(iout) 127: 107(ivec3) VectorShuffle 126 126 0 1 2 128: 107(ivec3) IAdd 127 125 130: 129(ptr) AccessChain 9(iout) 16 131: 6(int) CompositeExtract 128 0 Store 130 131 132: 129(ptr) AccessChain 9(iout) 41 133: 6(int) CompositeExtract 128 1 Store 132 133 134: 129(ptr) AccessChain 9(iout) 122 135: 6(int) CompositeExtract 128 2 Store 134 135 138: 18(float) Load 137(v1) 142:141(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 138 143: 6(int) CompositeExtract 142 1 Store 140(i1out) 143 144: 18(float) CompositeExtract 142 0 145: 117(ptr) AccessChain 21(fout) 16 146: 18(float) Load 145 147: 18(float) FAdd 146 144 148: 117(ptr) AccessChain 21(fout) 16 Store 148 147 149: 6(int) Load 140(i1out) 150: 129(ptr) AccessChain 9(iout) 16 151: 6(int) Load 150 152: 6(int) IAdd 151 149 153: 129(ptr) AccessChain 9(iout) 16 Store 153 152 157: 154(fvec2) Load 156(v2) 161: 158(ivec2) Load 160(i2) 162: 154(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 157 161 163: 19(fvec4) Load 21(fout) 164: 154(fvec2) VectorShuffle 163 163 0 1 165: 154(fvec2) FAdd 164 162 166: 117(ptr) AccessChain 21(fout) 16 167: 18(float) CompositeExtract 165 0 Store 166 167 168: 117(ptr) AccessChain 21(fout) 41 169: 18(float) CompositeExtract 165 1 Store 168 169 170: 18(float) Load 137(v1) 173: 6(int) Load 172(i1) 174: 18(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 170 173 175: 117(ptr) AccessChain 21(fout) 16 176: 18(float) Load 175 177: 18(float) FAdd 176 174 178: 117(ptr) AccessChain 21(fout) 16 Store 178 177 179: 6(int) Load 172(i1) 182: 6(int) BitFieldSExtract 179 180 181 183: 129(ptr) AccessChain 9(iout) 16 184: 6(int) Load 183 185: 6(int) IAdd 184 182 186: 129(ptr) AccessChain 9(iout) 16 Store 186 185 190: 187(ivec3) Load 189(u3) 191: 187(ivec3) BitFieldUExtract 190 180 181 192: 13(ivec4) Load 15(uout) 193: 187(ivec3) VectorShuffle 192 192 0 1 2 194: 187(ivec3) IAdd 193 191 195: 38(ptr) AccessChain 15(uout) 16 196: 12(int) CompositeExtract 194 0 Store 195 196 197: 38(ptr) AccessChain 15(uout) 41 198: 12(int) CompositeExtract 194 1 Store 197 198 199: 38(ptr) AccessChain 15(uout) 122 200: 12(int) CompositeExtract 194 2 Store 199 200 203: 107(ivec3) Load 202(i3) 204: 107(ivec3) Load 202(i3) 205: 107(ivec3) BitFieldInsert 203 204 180 181 206: 7(ivec4) Load 9(iout) 207: 107(ivec3) VectorShuffle 206 206 0 1 2 208: 107(ivec3) IAdd 207 205 209: 129(ptr) AccessChain 9(iout) 16 210: 6(int) CompositeExtract 208 0 Store 209 210 211: 129(ptr) AccessChain 9(iout) 41 212: 6(int) CompositeExtract 208 1 Store 211 212 213: 129(ptr) AccessChain 9(iout) 122 214: 6(int) CompositeExtract 208 2 Store 213 214 215: 12(int) Load 53(u1) 216: 12(int) Load 53(u1) 217: 12(int) BitFieldInsert 215 216 180 181 218: 38(ptr) AccessChain 15(uout) 16 219: 12(int) Load 218 220: 12(int) IAdd 219 217 221: 38(ptr) AccessChain 15(uout) 16 Store 221 220 222: 158(ivec2) Load 160(i2) 223: 158(ivec2) BitReverse 222 224: 7(ivec4) Load 9(iout) 225: 158(ivec2) VectorShuffle 224 224 0 1 226: 158(ivec2) IAdd 225 223 227: 129(ptr) AccessChain 9(iout) 16 228: 6(int) CompositeExtract 226 0 Store 227 228 229: 129(ptr) AccessChain 9(iout) 41 230: 6(int) CompositeExtract 226 1 Store 229 230 231: 13(ivec4) Load 72(u4) 232: 13(ivec4) BitReverse 231 233: 13(ivec4) Load 15(uout) 234: 13(ivec4) IAdd 233 232 Store 15(uout) 234 235: 6(int) Load 172(i1) 236: 6(int) BitCount 235 237: 129(ptr) AccessChain 9(iout) 16 238: 6(int) Load 237 239: 6(int) IAdd 238 236 240: 129(ptr) AccessChain 9(iout) 16 Store 240 239 241: 187(ivec3) Load 189(u3) 242: 107(ivec3) BitCount 241 243: 7(ivec4) Load 9(iout) 244: 107(ivec3) VectorShuffle 243 243 0 1 2 245: 107(ivec3) IAdd 244 242 246: 129(ptr) AccessChain 9(iout) 16 247: 6(int) CompositeExtract 245 0 Store 246 247 248: 129(ptr) AccessChain 9(iout) 41 249: 6(int) CompositeExtract 245 1 Store 248 249 250: 129(ptr) AccessChain 9(iout) 122 251: 6(int) CompositeExtract 245 2 Store 250 251 252: 158(ivec2) Load 160(i2) 253: 158(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 252 254: 7(ivec4) Load 9(iout) 255: 158(ivec2) VectorShuffle 254 254 0 1 256: 158(ivec2) IAdd 255 253 257: 129(ptr) AccessChain 9(iout) 16 258: 6(int) CompositeExtract 256 0 Store 257 258 259: 129(ptr) AccessChain 9(iout) 41 260: 6(int) CompositeExtract 256 1 Store 259 260 261: 13(ivec4) Load 72(u4) 262: 7(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 261 263: 7(ivec4) Load 9(iout) 264: 7(ivec4) IAdd 263 262 Store 9(iout) 264 265: 6(int) Load 172(i1) 266: 6(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 265 267: 129(ptr) AccessChain 9(iout) 16 268: 6(int) Load 267 269: 6(int) IAdd 268 266 270: 129(ptr) AccessChain 9(iout) 16 Store 270 269 271: 24(ivec2) Load 26(u2) 272: 158(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 271 273: 7(ivec4) Load 9(iout) 274: 158(ivec2) VectorShuffle 273 273 0 1 275: 158(ivec2) IAdd 274 272 276: 129(ptr) AccessChain 9(iout) 16 277: 6(int) CompositeExtract 275 0 Store 276 277 278: 129(ptr) AccessChain 9(iout) 41 279: 6(int) CompositeExtract 275 1 Store 278 279 282: 19(fvec4) Load 281(v4) 283: 12(int) ExtInst 1(GLSL.std.450) 55(PackUnorm4x8) 282 284: 38(ptr) AccessChain 15(uout) 16 285: 12(int) Load 284 286: 12(int) IAdd 285 283 287: 38(ptr) AccessChain 15(uout) 16 Store 287 286 288: 19(fvec4) Load 281(v4) 289: 12(int) ExtInst 1(GLSL.std.450) 54(PackSnorm4x8) 288 290: 38(ptr) AccessChain 15(uout) 16 291: 12(int) Load 290 292: 12(int) IAdd 291 289 293: 38(ptr) AccessChain 15(uout) 16 Store 293 292 294: 12(int) Load 53(u1) 295: 19(fvec4) ExtInst 1(GLSL.std.450) 64(UnpackUnorm4x8) 294 296: 19(fvec4) Load 21(fout) 297: 19(fvec4) FAdd 296 295 Store 21(fout) 297 298: 12(int) Load 53(u1) 299: 19(fvec4) ExtInst 1(GLSL.std.450) 63(UnpackSnorm4x8) 298 300: 19(fvec4) Load 21(fout) 301: 19(fvec4) FAdd 300 299 Store 21(fout) 301 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.int_dot.frag.out000066400000000000000000000334041506534232700223710ustar00rootroot00000000000000spv.int_dot.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 254 Capability Shader Capability Int64 Capability Int16 Capability Int8 Capability DotProductInputAllKHR Capability DotProductInput4x8BitKHR Capability DotProductInput4x8BitPackedKHR Capability DotProductKHR Extension "SPV_KHR_integer_dot_product" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_integer_dot_product" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 4 "main" Name 8 "i32" Name 12 "i16" Name 16 "ui32" Name 20 "ui16" Name 24 "i64" Name 28 "ui64" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Private 6(int) 8(i32): 7(ptr) Variable Private 9: 6(int) Constant 0 10: TypeInt 16 1 11: TypePointer Private 10(int16_t) 12(i16): 11(ptr) Variable Private 13: 10(int16_t) Constant 0 14: TypeInt 32 0 15: TypePointer Private 14(int) 16(ui32): 15(ptr) Variable Private 17: 14(int) Constant 0 18: TypeInt 16 0 19: TypePointer Private 18(int16_t) 20(ui16): 19(ptr) Variable Private 21: 18(int16_t) Constant 0 22: TypeInt 64 1 23: TypePointer Private 22(int64_t) 24(i64): 23(ptr) Variable Private 25: 22(int64_t) Constant 0 0 26: TypeInt 64 0 27: TypePointer Private 26(int64_t) 28(ui64): 27(ptr) Variable Private 29: 26(int64_t) Constant 0 0 58: TypeInt 8 1 59: TypeVector 58(int8_t) 4 60: 58(int8_t) Constant 0 61: 59(i8vec4) ConstantComposite 60 60 60 60 63: TypeInt 8 0 64: TypeVector 63(int8_t) 4 65: 63(int8_t) Constant 0 66: 64(i8vec4) ConstantComposite 65 65 65 65 78: TypeVector 58(int8_t) 3 79: 78(i8vec3) ConstantComposite 60 60 60 81: TypeVector 63(int8_t) 3 82: 81(i8vec3) ConstantComposite 65 65 65 94: TypeVector 58(int8_t) 2 95: 94(i8vec2) ConstantComposite 60 60 97: TypeVector 63(int8_t) 2 98: 97(i8vec2) ConstantComposite 65 65 110: TypeVector 10(int16_t) 4 111:110(i16vec4) ConstantComposite 13 13 13 13 113: TypeVector 18(int16_t) 4 114:113(i16vec4) ConstantComposite 21 21 21 21 126: TypeVector 10(int16_t) 3 127:126(i16vec3) ConstantComposite 13 13 13 129: TypeVector 18(int16_t) 3 130:129(i16vec3) ConstantComposite 21 21 21 142: TypeVector 10(int16_t) 2 143:142(i16vec2) ConstantComposite 13 13 145: TypeVector 18(int16_t) 2 146:145(i16vec2) ConstantComposite 21 21 158: TypeVector 6(int) 4 159: 158(ivec4) ConstantComposite 9 9 9 9 161: TypeVector 14(int) 4 162: 161(ivec4) ConstantComposite 17 17 17 17 174: TypeVector 6(int) 3 175: 174(ivec3) ConstantComposite 9 9 9 177: TypeVector 14(int) 3 178: 177(ivec3) ConstantComposite 17 17 17 190: TypeVector 6(int) 2 191: 190(ivec2) ConstantComposite 9 9 193: TypeVector 14(int) 2 194: 193(ivec2) ConstantComposite 17 17 206: TypeVector 22(int64_t) 4 207:206(i64vec4) ConstantComposite 25 25 25 25 209: TypeVector 26(int64_t) 4 210:209(i64vec4) ConstantComposite 29 29 29 29 222: TypeVector 22(int64_t) 3 223:222(i64vec3) ConstantComposite 25 25 25 225: TypeVector 26(int64_t) 3 226:225(i64vec3) ConstantComposite 29 29 29 238: TypeVector 22(int64_t) 2 239:238(i64vec2) ConstantComposite 25 25 241: TypeVector 26(int64_t) 2 242:241(i64vec2) ConstantComposite 29 29 4(main): 2 Function None 3 5: Label Store 8(i32) 9 Store 12(i16) 13 Store 16(ui32) 17 Store 20(ui16) 21 Store 24(i64) 25 Store 28(ui64) 29 30: 6(int) Load 8(i32) 31: 6(int) Load 8(i32) 32: 6(int) SDotKHR 30 31 0 33: 14(int) Load 16(ui32) 34: 14(int) Load 16(ui32) 35: 14(int) UDotKHR 33 34 0 36: 14(int) Load 16(ui32) 37: 6(int) Load 8(i32) 38: 6(int) SUDotKHR 37 36 0 39: 6(int) Load 8(i32) 40: 14(int) Load 16(ui32) 41: 6(int) SUDotKHR 39 40 0 42: 6(int) Load 8(i32) 43: 6(int) Load 8(i32) 44: 6(int) Load 8(i32) 45: 6(int) SDotAccSatKHR 42 43 44 0 46: 14(int) Load 16(ui32) 47: 14(int) Load 16(ui32) 48: 14(int) Load 16(ui32) 49: 14(int) UDotAccSatKHR 46 47 48 0 50: 14(int) Load 16(ui32) 51: 6(int) Load 8(i32) 52: 6(int) Load 8(i32) 53: 6(int) SUDotAccSatKHR 51 50 52 0 54: 6(int) Load 8(i32) 55: 14(int) Load 16(ui32) 56: 6(int) Load 8(i32) 57: 6(int) SUDotAccSatKHR 54 55 56 0 62: 6(int) SDotKHR 61 61 67: 14(int) UDotKHR 66 66 68: 6(int) SUDotKHR 61 66 69: 6(int) SUDotKHR 61 66 70: 6(int) Load 8(i32) 71: 6(int) SDotAccSatKHR 61 61 70 72: 14(int) Load 16(ui32) 73: 14(int) UDotAccSatKHR 66 66 72 74: 6(int) Load 8(i32) 75: 6(int) SUDotAccSatKHR 61 66 74 76: 6(int) Load 8(i32) 77: 6(int) SUDotAccSatKHR 61 66 76 80: 6(int) SDotKHR 79 79 83: 14(int) UDotKHR 82 82 84: 6(int) SUDotKHR 79 82 85: 6(int) SUDotKHR 79 82 86: 6(int) Load 8(i32) 87: 6(int) SDotAccSatKHR 79 79 86 88: 14(int) Load 16(ui32) 89: 14(int) UDotAccSatKHR 82 82 88 90: 6(int) Load 8(i32) 91: 6(int) SUDotAccSatKHR 79 82 90 92: 6(int) Load 8(i32) 93: 6(int) SUDotAccSatKHR 79 82 92 96: 6(int) SDotKHR 95 95 99: 14(int) UDotKHR 98 98 100: 6(int) SUDotKHR 95 98 101: 6(int) SUDotKHR 95 98 102: 6(int) Load 8(i32) 103: 6(int) SDotAccSatKHR 95 95 102 104: 14(int) Load 16(ui32) 105: 14(int) UDotAccSatKHR 98 98 104 106: 6(int) Load 8(i32) 107: 6(int) SUDotAccSatKHR 95 98 106 108: 6(int) Load 8(i32) 109: 6(int) SUDotAccSatKHR 95 98 108 112: 6(int) SDotKHR 111 111 115: 14(int) UDotKHR 114 114 116: 6(int) SUDotKHR 111 114 117: 6(int) SUDotKHR 111 114 118: 6(int) Load 8(i32) 119: 6(int) SDotAccSatKHR 111 111 118 120: 14(int) Load 16(ui32) 121: 14(int) UDotAccSatKHR 114 114 120 122: 6(int) Load 8(i32) 123: 6(int) SUDotAccSatKHR 111 114 122 124: 6(int) Load 8(i32) 125: 6(int) SUDotAccSatKHR 111 114 124 128: 6(int) SDotKHR 127 127 131: 14(int) UDotKHR 130 130 132: 6(int) SUDotKHR 127 130 133: 6(int) SUDotKHR 127 130 134: 6(int) Load 8(i32) 135: 6(int) SDotAccSatKHR 127 127 134 136: 14(int) Load 16(ui32) 137: 14(int) UDotAccSatKHR 130 130 136 138: 6(int) Load 8(i32) 139: 6(int) SUDotAccSatKHR 127 130 138 140: 6(int) Load 8(i32) 141: 6(int) SUDotAccSatKHR 127 130 140 144: 6(int) SDotKHR 143 143 147: 14(int) UDotKHR 146 146 148: 6(int) SUDotKHR 143 146 149: 6(int) SUDotKHR 143 146 150: 6(int) Load 8(i32) 151: 6(int) SDotAccSatKHR 143 143 150 152: 14(int) Load 16(ui32) 153: 14(int) UDotAccSatKHR 146 146 152 154: 6(int) Load 8(i32) 155: 6(int) SUDotAccSatKHR 143 146 154 156: 6(int) Load 8(i32) 157: 6(int) SUDotAccSatKHR 143 146 156 160: 6(int) SDotKHR 159 159 163: 14(int) UDotKHR 162 162 164: 6(int) SUDotKHR 159 162 165: 6(int) SUDotKHR 159 162 166: 6(int) Load 8(i32) 167: 6(int) SDotAccSatKHR 159 159 166 168: 14(int) Load 16(ui32) 169: 14(int) UDotAccSatKHR 162 162 168 170: 6(int) Load 8(i32) 171: 6(int) SUDotAccSatKHR 159 162 170 172: 6(int) Load 8(i32) 173: 6(int) SUDotAccSatKHR 159 162 172 176: 6(int) SDotKHR 175 175 179: 14(int) UDotKHR 178 178 180: 6(int) SUDotKHR 175 178 181: 6(int) SUDotKHR 175 178 182: 6(int) Load 8(i32) 183: 6(int) SDotAccSatKHR 175 175 182 184: 14(int) Load 16(ui32) 185: 14(int) UDotAccSatKHR 178 178 184 186: 6(int) Load 8(i32) 187: 6(int) SUDotAccSatKHR 175 178 186 188: 6(int) Load 8(i32) 189: 6(int) SUDotAccSatKHR 175 178 188 192: 6(int) SDotKHR 191 191 195: 14(int) UDotKHR 194 194 196: 6(int) SUDotKHR 191 194 197: 6(int) SUDotKHR 191 194 198: 6(int) Load 8(i32) 199: 6(int) SDotAccSatKHR 191 191 198 200: 14(int) Load 16(ui32) 201: 14(int) UDotAccSatKHR 194 194 200 202: 6(int) Load 8(i32) 203: 6(int) SUDotAccSatKHR 191 194 202 204: 6(int) Load 8(i32) 205: 6(int) SUDotAccSatKHR 191 194 204 208: 22(int64_t) SDotKHR 207 207 211: 26(int64_t) UDotKHR 210 210 212: 22(int64_t) SUDotKHR 207 210 213: 22(int64_t) SUDotKHR 207 210 214: 22(int64_t) Load 24(i64) 215: 22(int64_t) SDotAccSatKHR 207 207 214 216: 26(int64_t) Load 28(ui64) 217: 26(int64_t) UDotAccSatKHR 210 210 216 218: 22(int64_t) Load 24(i64) 219: 22(int64_t) SUDotAccSatKHR 207 210 218 220: 22(int64_t) Load 24(i64) 221: 22(int64_t) SUDotAccSatKHR 207 210 220 224: 22(int64_t) SDotKHR 223 223 227: 26(int64_t) UDotKHR 226 226 228: 22(int64_t) SUDotKHR 223 226 229: 22(int64_t) SUDotKHR 223 226 230: 22(int64_t) Load 24(i64) 231: 22(int64_t) SDotAccSatKHR 223 223 230 232: 26(int64_t) Load 28(ui64) 233: 26(int64_t) UDotAccSatKHR 226 226 232 234: 22(int64_t) Load 24(i64) 235: 22(int64_t) SUDotAccSatKHR 223 226 234 236: 22(int64_t) Load 24(i64) 237: 22(int64_t) SUDotAccSatKHR 223 226 236 240: 22(int64_t) SDotKHR 239 239 243: 26(int64_t) UDotKHR 242 242 244: 22(int64_t) SUDotKHR 239 242 245: 22(int64_t) SUDotKHR 239 242 246: 22(int64_t) Load 24(i64) 247: 22(int64_t) SDotAccSatKHR 239 239 246 248: 26(int64_t) Load 28(ui64) 249: 26(int64_t) UDotAccSatKHR 242 242 248 250: 22(int64_t) Load 24(i64) 251: 22(int64_t) SUDotAccSatKHR 239 242 250 252: 22(int64_t) Load 24(i64) 253: 22(int64_t) SUDotAccSatKHR 239 242 252 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.int_dot_Error.frag.out000066400000000000000000000011651506534232700235410ustar00rootroot00000000000000spv.int_dot_Error.frag ERROR: 0:16: 'dotPacked4x8EXT' : no matching overloaded function found ERROR: 0:17: 'dotPacked4x8EXT' : no matching overloaded function found ERROR: 0:18: 'dotPacked4x8EXT' : no matching overloaded function found ERROR: 0:19: 'dotPacked4x8AccSatEXT' : no matching overloaded function found ERROR: 0:20: 'dotPacked4x8AccSatEXT' : no matching overloaded function found ERROR: 0:21: 'dotEXT' : no matching overloaded function found ERROR: 0:22: 'dotAccSatEXT' : no matching overloaded function found ERROR: 7 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.intcoopmat.comp.out000066400000000000000000000541721506534232700231320ustar00rootroot00000000000000spv.intcoopmat.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 270 Capability Shader Capability Float16 Capability Int16 Capability Int8 Capability StorageBuffer8BitAccess Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixNV Extension "SPV_KHR_8bit_storage" Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_NV_cooperative_matrix" SourceExtension "GL_NV_integer_cooperative_matrix" Name 4 "main" Name 14 "ineg(i81<8><3><8><8>;" Name 13 "m" Name 21 "umul(u81<8><3><8><8>;" Name 20 "m" Name 35 "mu" Name 39 "mi" Name 55 "mf16_0" Name 61 "mf32_0" Name 64 "mf16_1" Name 67 "mf32_1" Name 71 "x" Name 84 "Block" MemberName 84(Block) 0 "y" MemberName 84(Block) 1 "x" Name 86 "block" Name 100 "Block16" MemberName 100(Block16) 0 "y" MemberName 100(Block16) 1 "x" MemberName 100(Block16) 2 "b" Name 103 "Block" MemberName 103(Block) 0 "y" MemberName 103(Block) 1 "x" Name 105 "block8" Name 122 "D" Name 123 "A" Name 125 "B" Name 127 "C" Name 131 "l" Name 136 "a" Name 140 "md1" Name 150 "Y" Name 151 "Z" Name 155 "muC2" Name 163 "miC2" Name 178 "p1" Name 179 "param" Name 182 "p2" Name 183 "param" Name 197 "ms" Name 202 "shmatrix" Name 212 "i16" Name 218 "u16" Name 233 "miC" Name 234 "muC" Name 239 "iarr" Name 244 "iarr2" Name 249 "uarr" Name 254 "uarr2" Name 259 "S" MemberName 259(S) 0 "a" MemberName 259(S) 1 "b" MemberName 259(S) 2 "c" Name 264 "SC" Name 269 "scm" Decorate 82 ArrayStride 4 Decorate 83 ArrayStride 4 Decorate 84(Block) Block MemberDecorate 84(Block) 0 Offset 0 MemberDecorate 84(Block) 1 Offset 4194304 Decorate 86(block) Binding 0 Decorate 86(block) DescriptorSet 0 Decorate 96 ArrayStride 1 Decorate 98 ArrayStride 1 Decorate 100(Block16) Block MemberDecorate 100(Block16) 0 Offset 0 MemberDecorate 100(Block16) 1 Offset 1048576 MemberDecorate 100(Block16) 2 Offset 1048584 Decorate 101 ArrayStride 4 Decorate 102 ArrayStride 4 Decorate 103(Block) Block MemberDecorate 103(Block) 0 Offset 0 MemberDecorate 103(Block) 1 Offset 4194304 Decorate 105(block8) Binding 0 Decorate 105(block8) DescriptorSet 0 Decorate 150(Y) SpecId 0 Decorate 231 BuiltIn WorkgroupSize Decorate 264(SC) SpecId 2 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 8 10: TypeCooperativeMatrixNV 6(int8_t) 8 9 9 11: TypePointer Function 10 12: TypeFunction 10 11(ptr) 16: TypeInt 8 0 17: TypeCooperativeMatrixNV 16(int8_t) 8 9 9 18: TypePointer Function 17 19: TypeFunction 17 18(ptr) 28: 16(int8_t) Constant 2 32: 7(int) Constant 16 33: TypeCooperativeMatrixNV 16(int8_t) 8 32 9 34: TypePointer Function 33 36: 33 ConstantComposite 28 37: TypeCooperativeMatrixNV 6(int8_t) 8 32 9 38: TypePointer Function 37 40: 6(int8_t) Constant 2 41: 37 ConstantComposite 40 52: TypeFloat 16 53: TypeCooperativeMatrixNV 52(float16_t) 8 32 9 54: TypePointer Function 53 58: TypeFloat 32 59: TypeCooperativeMatrixNV 58(float) 8 32 9 60: TypePointer Function 59 70: TypePointer Function 16(int8_t) 72: TypeInt 32 1 73: 72(int) Constant 1 76: 72(int) Constant 0 79: TypePointer Function 6(int8_t) 81: 7(int) Constant 1048576 82: TypeArray 7(int) 81 83: TypeRuntimeArray 7(int) 84(Block): TypeStruct 82 83 85: TypePointer StorageBuffer 84(Block) 86(block): 85(ptr) Variable StorageBuffer 87: 7(int) Constant 5 88: TypePointer StorageBuffer 7(int) 90: 7(int) Constant 128 91: TypeBool 92: 91(bool) ConstantFalse 96: TypeArray 6(int8_t) 81 97: 7(int) Constant 1 98: TypeArray 6(int8_t) 97 TypeForwardPointer 99 PhysicalStorageBufferEXT 100(Block16): TypeStruct 96 98 99 101: TypeArray 7(int) 81 102: TypeRuntimeArray 7(int) 103(Block): TypeStruct 101 102 99: TypePointer PhysicalStorageBufferEXT 103(Block) 104: TypePointer StorageBuffer 100(Block16) 105(block8): 104(ptr) Variable StorageBuffer 106: TypePointer StorageBuffer 6(int8_t) 111: 72(int) Constant 2 112: TypePointer StorageBuffer 99(ptr) 115: TypePointer PhysicalStorageBufferEXT 7(int) 130: TypePointer Function 72(int) 132: 7(int) SpecConstantOp 5362 33 133: 72(int) SpecConstantOp 128 132 76 134: TypeArray 37 87 135: TypePointer Function 134 137: 72(int) Constant 3 138: 6(int8_t) Constant 1 144: 72(int) Constant 1234 149: 72(int) Constant 8 150(Y): 72(int) SpecConstant 2 151(Z): 72(int) SpecConstantOp 132 149 150(Y) 152: TypeCooperativeMatrixNV 16(int8_t) 8 151(Z) 9 153: TypeArray 152 8 154: TypePointer Private 153 155(muC2): 154(ptr) Variable Private 156: TypePointer Private 152 160: TypeCooperativeMatrixNV 6(int8_t) 8 151(Z) 9 161: TypeArray 160 8 162: TypePointer Private 161 163(miC2): 162(ptr) Variable Private 164: TypePointer Private 6(int8_t) 168: TypePointer Private 16(int8_t) 194: 16(int8_t) Constant 4 198: TypeVector 7(int) 4 199: 7(int) Constant 32 200: TypeArray 198(ivec4) 199 201: TypePointer Workgroup 200 202(shmatrix): 201(ptr) Variable Workgroup 203: 7(int) Constant 2 204: TypePointer Workgroup 198(ivec4) 209: TypeInt 16 1 210: TypeCooperativeMatrixNV 209(int16_t) 8 32 9 211: TypePointer Function 210 213:209(int16_t) Constant 0 214: 210 ConstantComposite 213 215: TypeInt 16 0 216: TypeCooperativeMatrixNV 215(int16_t) 8 32 9 217: TypePointer Function 216 219:215(int16_t) Constant 0 220: 216 ConstantComposite 219 229: TypeVector 7(int) 3 230: 7(int) Constant 64 231: 229(ivec3) ConstantComposite 230 97 97 232: TypePointer Private 160 233(miC): 232(ptr) Variable Private 234(muC): 156(ptr) Variable Private 235: 7(int) SpecConstantOp 5362 160 236: 72(int) SpecConstantOp 128 235 76 237: TypeArray 72(int) 236 238: TypePointer Private 237 239(iarr): 238(ptr) Variable Private 240: 7(int) SpecConstantOp 5362 160 241: 72(int) SpecConstantOp 128 240 76 242: TypeArray 72(int) 241 243: TypePointer Private 242 244(iarr2): 243(ptr) Variable Private 245: 7(int) SpecConstantOp 5362 152 246: 72(int) SpecConstantOp 128 245 76 247: TypeArray 72(int) 246 248: TypePointer Private 247 249(uarr): 248(ptr) Variable Private 250: 7(int) SpecConstantOp 5362 152 251: 72(int) SpecConstantOp 128 250 76 252: TypeArray 72(int) 251 253: TypePointer Private 252 254(uarr2): 253(ptr) Variable Private 255: TypeCooperativeMatrixNV 72(int) 8 151(Z) 9 256: 255 ConstantComposite 73 257: 16(int8_t) Constant 1 258: 17 ConstantComposite 257 259(S): TypeStruct 72(int) 72(int) 72(int) 260: 72(int) Constant 12 261: 72(int) Constant 23 262: 72(int) Constant 34 263: 259(S) ConstantComposite 260 261 262 264(SC): 72(int) SpecConstant 1 265: TypeCooperativeMatrixNV 7(int) 8 264(SC) 264(SC) 266: TypeArray 265 264(SC) 267: TypeArray 266 264(SC) 268: TypePointer Private 267 269(scm): 268(ptr) Variable Private 4(main): 2 Function None 3 5: Label 35(mu): 34(ptr) Variable Function 39(mi): 38(ptr) Variable Function 55(mf16_0): 54(ptr) Variable Function 61(mf32_0): 60(ptr) Variable Function 64(mf16_1): 54(ptr) Variable Function 67(mf32_1): 60(ptr) Variable Function 71(x): 70(ptr) Variable Function 122(D): 34(ptr) Variable Function 123(A): 34(ptr) Variable Function 125(B): 18(ptr) Variable Function 127(C): 34(ptr) Variable Function 131(l): 130(ptr) Variable Function 136(a): 135(ptr) Variable Function 140(md1): 130(ptr) Variable Function 178(p1): 11(ptr) Variable Function 179(param): 11(ptr) Variable Function 182(p2): 18(ptr) Variable Function 183(param): 18(ptr) Variable Function 197(ms): 38(ptr) Variable Function 212(i16): 211(ptr) Variable Function 218(u16): 217(ptr) Variable Function Store 35(mu) 36 Store 39(mi) 41 42: 33 Load 35(mu) 43: 33 Load 35(mu) 44: 33 IAdd 42 43 Store 35(mu) 44 45: 33 Load 35(mu) 46: 33 Load 35(mu) 47: 33 ISub 45 46 Store 35(mu) 47 48: 37 Load 39(mi) 49: 37 SNegate 48 Store 39(mi) 49 50: 37 Load 39(mi) 51: 37 MatrixTimesScalar 50 40 Store 39(mi) 51 56: 33 Load 35(mu) 57: 53 ConvertUToF 56 Store 55(mf16_0) 57 62: 33 Load 35(mu) 63: 59 ConvertUToF 62 Store 61(mf32_0) 63 65: 37 Load 39(mi) 66: 53 ConvertSToF 65 Store 64(mf16_1) 66 68: 37 Load 39(mi) 69: 59 ConvertSToF 68 Store 67(mf32_1) 69 74: 70(ptr) AccessChain 35(mu) 73 75: 16(int8_t) Load 74 Store 71(x) 75 77: 16(int8_t) Load 71(x) 78: 6(int8_t) Bitcast 77 80: 79(ptr) AccessChain 39(mi) 76 Store 80 78 89: 88(ptr) AccessChain 86(block) 73 32 93: 37 CooperativeMatrixLoadNV 89 90 92 MakePointerVisibleKHR NonPrivatePointerKHR 87 Store 39(mi) 93 94: 37 Load 39(mi) 95: 88(ptr) AccessChain 86(block) 73 32 CooperativeMatrixStoreNV 95 94 90 92 MakePointerAvailableKHR NonPrivatePointerKHR 87 107: 106(ptr) AccessChain 105(block8) 73 32 108: 33 CooperativeMatrixLoadNV 107 90 92 MakePointerVisibleKHR NonPrivatePointerKHR 87 Store 35(mu) 108 109: 33 Load 35(mu) 110: 106(ptr) AccessChain 105(block8) 73 32 CooperativeMatrixStoreNV 110 109 90 92 MakePointerAvailableKHR NonPrivatePointerKHR 87 113: 112(ptr) AccessChain 105(block8) 111 114: 99(ptr) Load 113 MakePointerVisibleKHR NonPrivatePointerKHR 87 116: 115(ptr) AccessChain 114 73 32 117: 37 CooperativeMatrixLoadNV 116 90 92 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 87 Store 39(mi) 117 118: 37 Load 39(mi) 119: 112(ptr) AccessChain 105(block8) 111 120: 99(ptr) Load 119 MakePointerVisibleKHR NonPrivatePointerKHR 87 121: 115(ptr) AccessChain 120 73 32 CooperativeMatrixStoreNV 121 118 90 92 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 87 124: 33 Load 123(A) 126: 17 Load 125(B) 128: 33 Load 127(C) 129: 33 CooperativeMatrixMulAddNV 124 126 128 Store 122(D) 129 Store 131(l) 133 139: 79(ptr) AccessChain 136(a) 137 76 Store 139 138 Store 140(md1) 73 141: 37 Load 39(mi) 142: 37 Load 39(mi) 143: 37 IAdd 142 141 Store 39(mi) 143 145: 6(int8_t) CompositeExtract 143 1234 146: 72(int) SConvert 145 147: 72(int) Load 140(md1) 148: 72(int) IAdd 147 146 Store 140(md1) 148 157: 156(ptr) AccessChain 155(muC2) 73 158: 152 Load 157 159: 156(ptr) AccessChain 155(muC2) 76 Store 159 158 165: 164(ptr) AccessChain 163(miC2) 111 76 166: 6(int8_t) Load 165 167: 16(int8_t) Bitcast 166 169: 168(ptr) AccessChain 155(muC2) 73 76 Store 169 167 170: 88(ptr) AccessChain 86(block) 76 32 171: 37 CooperativeMatrixLoadNV 170 90 92 MakePointerVisibleKHR NonPrivatePointerKHR 87 Store 39(mi) 171 172: 37 Load 39(mi) 173: 88(ptr) AccessChain 86(block) 76 32 CooperativeMatrixStoreNV 173 172 90 92 MakePointerAvailableKHR NonPrivatePointerKHR 87 174: 106(ptr) AccessChain 105(block8) 76 32 175: 33 CooperativeMatrixLoadNV 174 90 92 MakePointerVisibleKHR NonPrivatePointerKHR 87 Store 35(mu) 175 176: 33 Load 35(mu) 177: 106(ptr) AccessChain 105(block8) 76 32 CooperativeMatrixStoreNV 177 176 90 92 MakePointerAvailableKHR NonPrivatePointerKHR 87 180: 10 Load 178(p1) Store 179(param) 180 181: 10 FunctionCall 14(ineg(i81<8><3><8><8>;) 179(param) Store 178(p1) 181 184: 17 Load 182(p2) Store 183(param) 184 185: 17 FunctionCall 21(umul(u81<8><3><8><8>;) 183(param) Store 182(p2) 185 186: 10 Load 178(p1) 187: 10 Load 178(p1) 188: 10 SDiv 187 186 Store 178(p1) 188 189: 17 Load 182(p2) 190: 17 Load 182(p2) 191: 17 UDiv 190 189 Store 182(p2) 191 192: 10 Load 178(p1) 193: 10 MatrixTimesScalar 192 40 Store 178(p1) 193 195: 17 Load 182(p2) 196: 17 MatrixTimesScalar 195 194 Store 182(p2) 196 205: 204(ptr) AccessChain 202(shmatrix) 97 206: 37 CooperativeMatrixLoadNV 205 203 92 MakePointerVisibleKHR NonPrivatePointerKHR 203 Store 197(ms) 206 207: 37 Load 197(ms) 208: 204(ptr) AccessChain 202(shmatrix) 97 CooperativeMatrixStoreNV 208 207 203 92 MakePointerAvailableKHR NonPrivatePointerKHR 203 Store 212(i16) 214 Store 218(u16) 220 221: 204(ptr) AccessChain 202(shmatrix) 97 222: 210 CooperativeMatrixLoadNV 221 203 92 MakePointerVisibleKHR NonPrivatePointerKHR 203 Store 212(i16) 222 223: 210 Load 212(i16) 224: 204(ptr) AccessChain 202(shmatrix) 97 CooperativeMatrixStoreNV 224 223 203 92 MakePointerAvailableKHR NonPrivatePointerKHR 203 225: 204(ptr) AccessChain 202(shmatrix) 97 226: 216 CooperativeMatrixLoadNV 225 203 92 MakePointerVisibleKHR NonPrivatePointerKHR 203 Store 218(u16) 226 227: 216 Load 218(u16) 228: 204(ptr) AccessChain 202(shmatrix) 97 CooperativeMatrixStoreNV 228 227 203 92 MakePointerAvailableKHR NonPrivatePointerKHR 203 Return FunctionEnd 14(ineg(i81<8><3><8><8>;): 10 Function None 12 13(m): 11(ptr) FunctionParameter 15: Label 23: 10 Load 13(m) 24: 10 SNegate 23 ReturnValue 24 FunctionEnd 21(umul(u81<8><3><8><8>;): 17 Function None 19 20(m): 18(ptr) FunctionParameter 22: Label 27: 17 Load 20(m) 29: 17 MatrixTimesScalar 27 28 ReturnValue 29 FunctionEnd glslang-16.0.0/Test/baseResults/spv.interpOps.frag.out000066400000000000000000000207471506534232700227220ustar00rootroot00000000000000spv.interpOps.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 120 Capability Shader Capability InterpolationFunction 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 24 36 49 55 86 118 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "f4" Name 13 "if1" Name 24 "if2" Name 36 "if3" Name 49 "if4" Name 55 "samp" Name 86 "offset" Name 118 "fragColor" Decorate 13(if1) Location 0 Decorate 24(if2) Location 1 Decorate 36(if3) Location 2 Decorate 49(if4) Location 3 Decorate 55(samp) Flat Decorate 55(samp) Location 4 Decorate 86(offset) Flat Decorate 86(offset) Location 5 Decorate 118(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypePointer Input 6(float) 13(if1): 12(ptr) Variable Input 15: TypeInt 32 0 16: 15(int) Constant 0 17: TypePointer Function 6(float) 22: TypeVector 6(float) 2 23: TypePointer Input 22(fvec2) 24(if2): 23(ptr) Variable Input 31: 15(int) Constant 1 34: TypeVector 6(float) 3 35: TypePointer Input 34(fvec3) 36(if3): 35(ptr) Variable Input 45: 15(int) Constant 2 48: TypePointer Input 7(fvec4) 49(if4): 48(ptr) Variable Input 53: TypeInt 32 1 54: TypePointer Input 53(int) 55(samp): 54(ptr) Variable Input 86(offset): 23(ptr) Variable Input 117: TypePointer Output 7(fvec4) 118(fragColor): 117(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(f4): 8(ptr) Variable Function Store 9(f4) 11 14: 6(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 13(if1) 18: 17(ptr) AccessChain 9(f4) 16 19: 6(float) Load 18 20: 6(float) FAdd 19 14 21: 17(ptr) AccessChain 9(f4) 16 Store 21 20 25: 22(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 24(if2) 26: 7(fvec4) Load 9(f4) 27: 22(fvec2) VectorShuffle 26 26 0 1 28: 22(fvec2) FAdd 27 25 29: 17(ptr) AccessChain 9(f4) 16 30: 6(float) CompositeExtract 28 0 Store 29 30 32: 17(ptr) AccessChain 9(f4) 31 33: 6(float) CompositeExtract 28 1 Store 32 33 37: 34(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 36(if3) 38: 7(fvec4) Load 9(f4) 39: 34(fvec3) VectorShuffle 38 38 0 1 2 40: 34(fvec3) FAdd 39 37 41: 17(ptr) AccessChain 9(f4) 16 42: 6(float) CompositeExtract 40 0 Store 41 42 43: 17(ptr) AccessChain 9(f4) 31 44: 6(float) CompositeExtract 40 1 Store 43 44 46: 17(ptr) AccessChain 9(f4) 45 47: 6(float) CompositeExtract 40 2 Store 46 47 50: 7(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 49(if4) 51: 7(fvec4) Load 9(f4) 52: 7(fvec4) FAdd 51 50 Store 9(f4) 52 56: 53(int) Load 55(samp) 57: 6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 13(if1) 56 58: 17(ptr) AccessChain 9(f4) 16 59: 6(float) Load 58 60: 6(float) FAdd 59 57 61: 17(ptr) AccessChain 9(f4) 16 Store 61 60 62: 53(int) Load 55(samp) 63: 22(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 24(if2) 62 64: 7(fvec4) Load 9(f4) 65: 22(fvec2) VectorShuffle 64 64 0 1 66: 22(fvec2) FAdd 65 63 67: 17(ptr) AccessChain 9(f4) 16 68: 6(float) CompositeExtract 66 0 Store 67 68 69: 17(ptr) AccessChain 9(f4) 31 70: 6(float) CompositeExtract 66 1 Store 69 70 71: 53(int) Load 55(samp) 72: 34(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 36(if3) 71 73: 7(fvec4) Load 9(f4) 74: 34(fvec3) VectorShuffle 73 73 0 1 2 75: 34(fvec3) FAdd 74 72 76: 17(ptr) AccessChain 9(f4) 16 77: 6(float) CompositeExtract 75 0 Store 76 77 78: 17(ptr) AccessChain 9(f4) 31 79: 6(float) CompositeExtract 75 1 Store 78 79 80: 17(ptr) AccessChain 9(f4) 45 81: 6(float) CompositeExtract 75 2 Store 80 81 82: 53(int) Load 55(samp) 83: 7(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 49(if4) 82 84: 7(fvec4) Load 9(f4) 85: 7(fvec4) FAdd 84 83 Store 9(f4) 85 87: 22(fvec2) Load 86(offset) 88: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 13(if1) 87 89: 17(ptr) AccessChain 9(f4) 16 90: 6(float) Load 89 91: 6(float) FAdd 90 88 92: 17(ptr) AccessChain 9(f4) 16 Store 92 91 93: 22(fvec2) Load 86(offset) 94: 22(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 24(if2) 93 95: 7(fvec4) Load 9(f4) 96: 22(fvec2) VectorShuffle 95 95 0 1 97: 22(fvec2) FAdd 96 94 98: 17(ptr) AccessChain 9(f4) 16 99: 6(float) CompositeExtract 97 0 Store 98 99 100: 17(ptr) AccessChain 9(f4) 31 101: 6(float) CompositeExtract 97 1 Store 100 101 102: 22(fvec2) Load 86(offset) 103: 34(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 36(if3) 102 104: 7(fvec4) Load 9(f4) 105: 34(fvec3) VectorShuffle 104 104 0 1 2 106: 34(fvec3) FAdd 105 103 107: 17(ptr) AccessChain 9(f4) 16 108: 6(float) CompositeExtract 106 0 Store 107 108 109: 17(ptr) AccessChain 9(f4) 31 110: 6(float) CompositeExtract 106 1 Store 109 110 111: 17(ptr) AccessChain 9(f4) 45 112: 6(float) CompositeExtract 106 2 Store 111 112 113: 22(fvec2) Load 86(offset) 114: 7(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 49(if4) 113 115: 7(fvec4) Load 9(f4) 116: 7(fvec4) FAdd 115 114 Store 9(f4) 116 119: 7(fvec4) Load 9(f4) Store 118(fragColor) 119 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsDebugBreak.frag.out000066400000000000000000000020061506534232700250240ustar00rootroot00000000000000spv.intrinsicsDebugBreak.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 8 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "GLSL.std.450" 6: ExtInstImport "NonSemantic.DebugBreak" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" 2: TypeVoid 3: TypeFunction 2 4(main): 2 Function None 3 5: Label 7: 2 ExtInst 6(NonSemantic.DebugBreak) 1(DebugBreak) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsFakeEnable.vert.out000066400000000000000000000002731506534232700250530ustar00rootroot00000000000000spv.intrinsicsFakeEnable.vert ERROR: 0:7: 'location' : overlapping use of location 0 ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out000066400000000000000000000063451506534232700267520ustar00rootroot00000000000000spv.intrinsicsInteractWithCoopMat.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader Capability Float16 Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 32 1 1 Source GLSL 450 SourceExtension "GL_EXT_spirv_intrinsics" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 13 "A" Name 16 "Buf" MemberName 16(Buf) 0 "x" Name 18 "buf" Decorate 15 ArrayStride 16 Decorate 16(Buf) Block MemberDecorate 16(Buf) 0 Offset 0 Decorate 18(buf) Binding 0 Decorate 18(buf) DescriptorSet 0 Decorate 32 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 16 10: 7(int) Constant 0 11: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 10 12: TypePointer Private 11 13(A): 12(ptr) Variable Private 14: TypeVector 7(int) 4 15: TypeRuntimeArray 14(ivec4) 16(Buf): TypeStruct 15 17: TypePointer StorageBuffer 16(Buf) 18(buf): 17(ptr) Variable StorageBuffer 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypePointer StorageBuffer 14(ivec4) 23: 7(int) Constant 2 26: 7(int) Constant 64 28: 7(int) Constant 4 29: TypeVector 7(int) 3 30: 7(int) Constant 32 31: 7(int) Constant 1 32: 29(ivec3) ConstantComposite 30 31 31 4(main): 2 Function None 3 5: Label 22: 21(ptr) AccessChain 18(buf) 20 10 24: 11 CooperativeMatrixLoadKHR 22 20 23 None Store 13(A) 24 25: 11 Load 13(A) 27: 21(ptr) AccessChain 18(buf) 20 26 CooperativeMatrixStoreKHR 27 25 20 28 None Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out000066400000000000000000000051541506534232700263160ustar00rootroot00000000000000spv.intrinsicsSpirvByReference.vert // 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 Vertex 4 "main" 15 17 26 Source GLSL 450 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 10 "func(f1;" Name 9 "f" Name 15 "vec2Out" Name 17 "floatIn" Name 26 "floatOut" Name 27 "param" Decorate 15(vec2Out) Location 0 Decorate 17(floatIn) Location 0 Decorate 26(floatOut) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 2 7(ptr) 12: 6(float) Constant 1056964608 13: TypeVector 6(float) 2 14: TypePointer Output 13(fvec2) 15(vec2Out): 14(ptr) Variable Output 16: TypePointer Input 6(float) 17(floatIn): 16(ptr) Variable Input 19: TypeInt 32 0 20: 19(int) Constant 1 21: TypePointer Output 6(float) 24: 19(int) Constant 0 26(floatOut): 21(ptr) Variable Output 4(main): 2 Function None 3 5: Label 27(param): 7(ptr) Variable Function 18: 6(float) Load 17(floatIn) 22: 21(ptr) AccessChain 15(vec2Out) 20 23: 6(float) ExtInst 1(GLSL.std.450) 35(Modf) 18 22 25: 21(ptr) AccessChain 15(vec2Out) 24 Store 25 23 28: 6(float) Load 26(floatOut) Store 27(param) 28 29: 2 FunctionCall 10(func(f1;) 27(param) Return FunctionEnd 10(func(f1;): 2 Function None 8 9(f): 7(ptr) FunctionParameter 11: Label Store 9(f) 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out000066400000000000000000000111361506534232700256070ustar00rootroot00000000000000spv.intrinsicsSpirvDecorate.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader Extension "SPV_AMD_shader_explicit_vertex_parameter" 1: ExtInstImport "GLSL.std.450" 14: ExtInstImport "SPV_AMD_shader_explicit_vertex_parameter" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 10 18 20 22 25 28 31 34 39 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 8 "floatOut" Name 10 "floatIn" Name 18 "vec2Out" Name 20 "gl_BaryCoordNoPerspAMD" Name 22 "gl_BaryCoordNoPerspCentroidAMD" Name 25 "gl_BaryCoordNoPerspSampleAMD" Name 28 "gl_BaryCoordSmoothAMD" Name 31 "gl_BaryCoordSmoothCentroidAMD" Name 34 "gl_BaryCoordSmoothSampleAMD" Name 39 "gl_BaryCoordPullModelAMD" Decorate 8(floatOut) Location 0 Decorate 10(floatIn) Location 0 Decorate 10(floatIn) ExplicitInterpAMD Decorate 18(vec2Out) Location 1 Decorate 20(gl_BaryCoordNoPerspAMD) BuiltIn BaryCoordNoPerspAMD Decorate 22(gl_BaryCoordNoPerspCentroidAMD) BuiltIn BaryCoordNoPerspCentroidAMD Decorate 25(gl_BaryCoordNoPerspSampleAMD) BuiltIn BaryCoordNoPerspSampleAMD Decorate 28(gl_BaryCoordSmoothAMD) BuiltIn BaryCoordSmoothAMD Decorate 31(gl_BaryCoordSmoothCentroidAMD) BuiltIn BaryCoordSmoothCentroidAMD Decorate 34(gl_BaryCoordSmoothSampleAMD) BuiltIn BaryCoordSmoothSampleAMD Decorate 39(gl_BaryCoordPullModelAMD) BuiltIn BaryCoordPullModelAMD 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Output 6(float) 8(floatOut): 7(ptr) Variable Output 9: TypePointer Input 6(float) 10(floatIn): 9(ptr) Variable Input 12: TypeInt 32 0 13: 12(int) Constant 1 16: TypeVector 6(float) 2 17: TypePointer Output 16(fvec2) 18(vec2Out): 17(ptr) Variable Output 19: TypePointer Input 16(fvec2) 20(gl_BaryCoordNoPerspAMD): 19(ptr) Variable Input 22(gl_BaryCoordNoPerspCentroidAMD): 19(ptr) Variable Input 25(gl_BaryCoordNoPerspSampleAMD): 19(ptr) Variable Input 28(gl_BaryCoordSmoothAMD): 19(ptr) Variable Input 31(gl_BaryCoordSmoothCentroidAMD): 19(ptr) Variable Input 34(gl_BaryCoordSmoothSampleAMD): 19(ptr) Variable Input 37: TypeVector 6(float) 3 38: TypePointer Input 37(fvec3) 39(gl_BaryCoordPullModelAMD): 38(ptr) Variable Input 4(main): 2 Function None 3 5: Label 11: 6(float) Load 10(floatIn) 15: 6(float) ExtInst 14(SPV_AMD_shader_explicit_vertex_parameter) 1(InterpolateAtVertexAMD) 11 13 Store 8(floatOut) 15 21: 16(fvec2) Load 20(gl_BaryCoordNoPerspAMD) 23: 16(fvec2) Load 22(gl_BaryCoordNoPerspCentroidAMD) 24: 16(fvec2) FAdd 21 23 26: 16(fvec2) Load 25(gl_BaryCoordNoPerspSampleAMD) 27: 16(fvec2) FAdd 24 26 29: 16(fvec2) Load 28(gl_BaryCoordSmoothAMD) 30: 16(fvec2) FAdd 27 29 32: 16(fvec2) Load 31(gl_BaryCoordSmoothCentroidAMD) 33: 16(fvec2) FAdd 30 32 35: 16(fvec2) Load 34(gl_BaryCoordSmoothSampleAMD) 36: 16(fvec2) FAdd 33 35 40: 37(fvec3) Load 39(gl_BaryCoordPullModelAMD) 41: 16(fvec2) VectorShuffle 40 40 0 1 42: 16(fvec2) FAdd 36 41 Store 18(vec2Out) 42 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out000066400000000000000000000044671506534232700261140ustar00rootroot00000000000000spv.intrinsicsSpirvDecorateId.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader Extension "SPV_GOOGLE_hlsl_functionality1" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 10 "CounterBuffer" MemberName 10(CounterBuffer) 0 "counter" Name 12 "x" Name 13 "Uniform" MemberName 13(Uniform) 0 "y" Name 15 "" Decorate 9 BuiltIn WorkgroupSize Decorate 10(CounterBuffer) Block MemberDecorate 10(CounterBuffer) 0 Offset 0 Decorate 12(x) Binding 1 Decorate 12(x) DescriptorSet 0 Decorate 13(Uniform) Block MemberDecorate 13(Uniform) 0 Offset 0 Decorate 15 Binding 0 Decorate 15 DescriptorSet 0 DecorateId 15 DecorationHlslCounterBufferGOOGLE 12(x) 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 3 8: 6(int) Constant 1 9: 7(ivec3) ConstantComposite 8 8 8 10(CounterBuffer): TypeStruct 6(int) 11: TypePointer Uniform 10(CounterBuffer) 12(x): 11(ptr) Variable Uniform 13(Uniform): TypeStruct 6(int) 14: TypePointer Uniform 13(Uniform) 15: 14(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvDecorateString.comp.out000066400000000000000000000036241506534232700270200ustar00rootroot00000000000000spv.intrinsicsSpirvDecorateString.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader Extension "SPV_GOOGLE_hlsl_functionality1" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 8 "x" Name 10 "y" Decorate 8(x) RelaxedPrecision DecorateStringGOOGLE 8(x) DecorationHlslSemanticGOOGLE "foobar" Decorate 10(y) RelaxedPrecision DecorateStringGOOGLE 10(y) DecorationHlslSemanticGOOGLE "foobar" Decorate 15 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: 6(float) Constant 1056964608 11: 6(float) Constant 1065353216 12: TypeInt 32 0 13: TypeVector 12(int) 3 14: 12(int) Constant 1 15: 13(ivec3) ConstantComposite 14 14 14 4(main): 2 Function None 3 5: Label 8(x): 7(ptr) Variable Function 10(y): 7(ptr) Variable Function Store 8(x) 9 Store 10(y) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out000066400000000000000000000032261506534232700266320ustar00rootroot00000000000000spv.intrinsicsSpirvExecutionMode.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader Capability StencilExportEXT Extension "SPV_EXT_shader_stencil_export" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 10 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 StencilRefReplacingEXT Source GLSL 450 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 8 "gl_FragStencilRef" Name 10 "color" Decorate 8(gl_FragStencilRef) BuiltIn FragStencilRefEXT Decorate 10(color) Flat Decorate 10(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(gl_FragStencilRef): 7(ptr) Variable Output 9: TypePointer Input 6(int) 10(color): 9(ptr) Variable Input 4(main): 2 Function None 3 5: Label 11: 6(int) Load 10(color) Store 8(gl_FragStencilRef) 11 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out000066400000000000000000000057161506534232700264520ustar00rootroot00000000000000spv.intrinsicsSpirvInstruction.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader Capability Int64 Capability ShaderClockKHR Extension "SPV_AMD_shader_trinary_minmax" Extension "SPV_KHR_shader_clock" 1: ExtInstImport "GLSL.std.450" 30: ExtInstImport "SPV_AMD_shader_trinary_minmax" MemoryModel Logical GLSL450 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 15 "u64Out" Name 20 "vec2Out" Name 23 "vec3In" Decorate 9(uvec2Out) 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 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 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 glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out000066400000000000000000000025531506534232700255210ustar00rootroot00000000000000spv.intrinsicsSpirvLiteral.vert // Module Version 10000 // 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" 9 11 Source GLSL 450 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 9 "vec4Out" Name 11 "vec4In" Decorate 9(vec4Out) Location 1 Decorate 11(vec4In) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 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 12: 7(fvec4) Load 11(vec4In) None Store 9(vec4Out) 12 Volatile Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out000066400000000000000000000026201506534232700266430ustar00rootroot00000000000000spv.intrinsicsSpirvStorageClass.rchit // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 13 Capability RayTracingKHR Capability RayTracingProvisionalKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint ClosestHitKHR 4 "main" Source GLSL 460 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 9 "payload" Decorate 9(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer RayPayloadKHR 7(fvec4) 9(payload): 8(ptr) Variable RayPayloadKHR 10: 6(float) Constant 0 11: 6(float) Constant 1065353216 12: 7(fvec4) ConstantComposite 10 11 10 11 4(main): 2 Function None 3 5: Label Store 9(payload) 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvType.rgen.out000066400000000000000000000040711506534232700250160ustar00rootroot00000000000000spv.intrinsicsSpirvType.rgen // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 21 Capability RayQueryKHR Capability RayTraversalPrimitiveCullingKHR Capability RayTracingKHR Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" Source GLSL 460 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 8 "rq" Name 11 "as" Decorate 11(as) Binding 0 Decorate 11(as) DescriptorSet 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 14: 13(int) Constant 0 15: TypeFloat 32 16: TypeVector 15(float) 3 17: 15(float) Constant 0 18: 16(fvec3) ConstantComposite 17 17 17 19: 15(float) Constant 1065353216 20: 16(fvec3) ConstantComposite 19 19 19 4(main): 2 Function None 3 5: Label 8(rq): 7(ptr) Variable Function 12: 9 Load 11(as) RayQueryInitializeKHR 8(rq) 12 14 14 18 17 20 19 RayQueryTerminateKHR 8(rq) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out000066400000000000000000000036651506534232700264770ustar00rootroot00000000000000spv.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 glslang-16.0.0/Test/baseResults/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert.out000066400000000000000000000033531506534232700303750ustar00rootroot00000000000000spv.intrinsicsSpirvTypeWithTypeSpecifier.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 14 Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_variable_pointers" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Vertex 4 "main" Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 8 "value" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeInt 64 0 10: 9(int64_t) Constant 1 0 11: TypePointer PhysicalStorageBufferEXT 6(int) 4(main): 2 Function None 3 5: Label 8(value): 7(ptr) Variable Function 12: 11(ptr) ConvertUToPtr 10 13: 6(int) Load 12 Aligned 32 Store 8(value) 13 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.invariantAll.vert.out000066400000000000000000000054551506534232700234230ustar00rootroot00000000000000spv.invariantAll.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 13 17 Source GLSL 450 Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" Name 17 "v" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 0 Invariant MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 1 Invariant MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 2 Invariant MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 11(gl_PerVertex) 3 Invariant Decorate 17(v) Invariant Decorate 17(v) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Output 6(float) 17(v): 16(ptr) Variable Output 19: 6(float) Constant 0 20: 6(float) Constant 1065353216 22: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 18: 6(float) Load 17(v) 21: 7(fvec4) CompositeConstruct 18 18 19 20 23: 22(ptr) AccessChain 13 15 Store 23 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.layer.tese.out000066400000000000000000000026431506534232700220670ustar00rootroot00000000000000spv.layer.tese // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 10 Capability Tessellation Capability ShaderViewportIndexLayerNV Extension "SPV_EXT_shader_viewport_index_layer" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 4 "main" 8 ExecutionMode 4 Triangles ExecutionMode 4 SpacingEqual ExecutionMode 4 VertexOrderCcw Source GLSL 450 SourceExtension "GL_ARB_shader_viewport_layer_array" Name 4 "main" Name 8 "gl_Layer" Decorate 8(gl_Layer) BuiltIn Layer 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(gl_Layer): 7(ptr) Variable Output 9: 6(int) Constant 1 4(main): 2 Function None 3 5: Label Store 8(gl_Layer) 9 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.layoutNested.vert.out000066400000000000000000000323751506534232700234600ustar00rootroot00000000000000spv.layoutNested.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 67 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 63 66 Source GLSL 450 Name 4 "main" Name 14 "S" MemberName 14(S) 0 "a" MemberName 14(S) 1 "b" MemberName 14(S) 2 "c" Name 19 "Block140" MemberName 19(Block140) 0 "u" MemberName 19(Block140) 1 "s" MemberName 19(Block140) 2 "v" Name 21 "inst140" Name 23 "S" MemberName 23(S) 0 "a" MemberName 23(S) 1 "b" MemberName 23(S) 2 "c" Name 26 "Block430" MemberName 26(Block430) 0 "u" MemberName 26(Block430) 1 "s" MemberName 26(Block430) 2 "v" Name 28 "inst430" Name 30 "S" MemberName 30(S) 0 "a" MemberName 30(S) 1 "b" MemberName 30(S) 2 "c" Name 32 "s" Name 33 "T" MemberName 33(T) 0 "m" MemberName 33(T) 1 "a" Name 35 "t" Name 36 "T" MemberName 36(T) 0 "m" MemberName 36(T) 1 "a" Name 37 "Nestor" MemberName 37(Nestor) 0 "nestorT" Name 38 "Bt1" MemberName 38(Bt1) 0 "nt" Name 40 "Btn1" Name 41 "T" MemberName 41(T) 0 "m" MemberName 41(T) 1 "a" Name 42 "Nestor" MemberName 42(Nestor) 0 "nestorT" Name 43 "Bt2" MemberName 43(Bt2) 0 "nt" Name 45 "Btn2" Name 46 "Bt3" MemberName 46(Bt3) 0 "ntcol" MemberName 46(Bt3) 1 "ntrow" Name 48 "Btn3" Name 49 "T" MemberName 49(T) 0 "m" MemberName 49(T) 1 "a" Name 50 "Nestor" MemberName 50(Nestor) 0 "nestorT" Name 51 "bBt1" MemberName 51(bBt1) 0 "nt" Name 53 "bBtn1" Name 54 "T" MemberName 54(T) 0 "m" MemberName 54(T) 1 "a" Name 55 "Nestor" MemberName 55(Nestor) 0 "nestorT" Name 56 "bBt2" MemberName 56(bBt2) 0 "nt" Name 58 "bBtn2" Name 59 "bBt3" MemberName 59(bBt3) 0 "ntcol" MemberName 59(bBt3) 1 "ntrow" Name 61 "bBtn3" Name 63 "sout" Name 64 "S" MemberName 64(S) 0 "a" MemberName 64(S) 1 "b" MemberName 64(S) 2 "c" Name 66 "soutinv" Decorate 13 ArrayStride 32 MemberDecorate 14(S) 0 Offset 0 MemberDecorate 14(S) 1 RelaxedPrecision MemberDecorate 14(S) 1 ColMajor MemberDecorate 14(S) 1 MatrixStride 16 MemberDecorate 14(S) 1 Offset 16 MemberDecorate 14(S) 2 RelaxedPrecision MemberDecorate 14(S) 2 Offset 144 Decorate 16 ArrayStride 160 Decorate 18 ArrayStride 480 Decorate 19(Block140) Block MemberDecorate 19(Block140) 0 RelaxedPrecision MemberDecorate 19(Block140) 0 Offset 0 MemberDecorate 19(Block140) 1 Offset 16 MemberDecorate 19(Block140) 2 RelaxedPrecision MemberDecorate 19(Block140) 2 Offset 976 Decorate 21(inst140) Binding 0 Decorate 21(inst140) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 RelaxedPrecision MemberDecorate 23(S) 1 ColMajor MemberDecorate 23(S) 1 MatrixStride 8 MemberDecorate 23(S) 1 Offset 16 MemberDecorate 23(S) 2 RelaxedPrecision MemberDecorate 23(S) 2 Offset 80 Decorate 24 ArrayStride 96 Decorate 25 ArrayStride 288 Decorate 26(Block430) BufferBlock MemberDecorate 26(Block430) 0 RelaxedPrecision MemberDecorate 26(Block430) 0 Offset 0 MemberDecorate 26(Block430) 1 Offset 16 MemberDecorate 26(Block430) 2 RelaxedPrecision MemberDecorate 26(Block430) 2 Offset 592 Decorate 28(inst430) Binding 1 Decorate 28(inst430) DescriptorSet 0 MemberDecorate 30(S) 1 RelaxedPrecision MemberDecorate 30(S) 2 RelaxedPrecision MemberDecorate 36(T) 0 RowMajor MemberDecorate 36(T) 0 MatrixStride 16 MemberDecorate 36(T) 0 Offset 0 MemberDecorate 36(T) 1 Offset 32 MemberDecorate 37(Nestor) 0 Offset 0 Decorate 38(Bt1) Block MemberDecorate 38(Bt1) 0 Offset 0 Decorate 40(Btn1) Binding 0 Decorate 40(Btn1) DescriptorSet 1 MemberDecorate 41(T) 0 ColMajor MemberDecorate 41(T) 0 MatrixStride 16 MemberDecorate 41(T) 0 Offset 0 MemberDecorate 41(T) 1 Offset 32 MemberDecorate 42(Nestor) 0 Offset 0 Decorate 43(Bt2) Block MemberDecorate 43(Bt2) 0 Offset 0 Decorate 45(Btn2) Binding 0 Decorate 45(Btn2) DescriptorSet 1 Decorate 46(Bt3) Block MemberDecorate 46(Bt3) 0 Offset 0 MemberDecorate 46(Bt3) 1 Offset 48 Decorate 48(Btn3) Binding 0 Decorate 48(Btn3) DescriptorSet 1 MemberDecorate 49(T) 0 RowMajor MemberDecorate 49(T) 0 MatrixStride 8 MemberDecorate 49(T) 0 Offset 0 MemberDecorate 49(T) 1 Offset 16 MemberDecorate 50(Nestor) 0 Offset 0 Decorate 51(bBt1) BufferBlock MemberDecorate 51(bBt1) 0 Offset 0 Decorate 53(bBtn1) Binding 0 Decorate 53(bBtn1) DescriptorSet 1 MemberDecorate 54(T) 0 ColMajor MemberDecorate 54(T) 0 MatrixStride 8 MemberDecorate 54(T) 0 Offset 0 MemberDecorate 54(T) 1 Offset 16 MemberDecorate 55(Nestor) 0 Offset 0 Decorate 56(bBt2) BufferBlock MemberDecorate 56(bBt2) 0 Offset 0 Decorate 58(bBtn2) Binding 0 Decorate 58(bBtn2) DescriptorSet 1 Decorate 59(bBt3) BufferBlock MemberDecorate 59(bBt3) 0 Offset 0 MemberDecorate 59(bBt3) 1 Offset 24 Decorate 61(bBtn3) Binding 0 Decorate 61(bBtn3) DescriptorSet 1 Decorate 63(sout) Flat Decorate 63(sout) Location 0 MemberDecorate 64(S) 0 Invariant MemberDecorate 64(S) 1 RelaxedPrecision MemberDecorate 64(S) 1 Invariant MemberDecorate 64(S) 2 RelaxedPrecision MemberDecorate 64(S) 2 Invariant Decorate 66(soutinv) Invariant Decorate 66(soutinv) Location 10 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: TypeVector 7(int) 3 9: TypeFloat 32 10: TypeVector 9(float) 2 11: TypeMatrix 10(fvec2) 2 12: 7(int) Constant 4 13: TypeArray 11 12 14(S): TypeStruct 8(ivec3) 13 7(int) 15: 7(int) Constant 3 16: TypeArray 14(S) 15 17: 7(int) Constant 2 18: TypeArray 16 17 19(Block140): TypeStruct 6(int) 18 10(fvec2) 20: TypePointer Uniform 19(Block140) 21(inst140): 20(ptr) Variable Uniform 22: TypeArray 11 12 23(S): TypeStruct 8(ivec3) 22 7(int) 24: TypeArray 23(S) 15 25: TypeArray 24 17 26(Block430): TypeStruct 6(int) 25 10(fvec2) 27: TypePointer Uniform 26(Block430) 28(inst430): 27(ptr) Variable Uniform 29: TypeArray 11 12 30(S): TypeStruct 8(ivec3) 29 7(int) 31: TypePointer Private 30(S) 32(s): 31(ptr) Variable Private 33(T): TypeStruct 11 6(int) 34: TypePointer Private 33(T) 35(t): 34(ptr) Variable Private 36(T): TypeStruct 11 6(int) 37(Nestor): TypeStruct 36(T) 38(Bt1): TypeStruct 37(Nestor) 39: TypePointer Uniform 38(Bt1) 40(Btn1): 39(ptr) Variable Uniform 41(T): TypeStruct 11 6(int) 42(Nestor): TypeStruct 41(T) 43(Bt2): TypeStruct 42(Nestor) 44: TypePointer Uniform 43(Bt2) 45(Btn2): 44(ptr) Variable Uniform 46(Bt3): TypeStruct 42(Nestor) 37(Nestor) 47: TypePointer Uniform 46(Bt3) 48(Btn3): 47(ptr) Variable Uniform 49(T): TypeStruct 11 6(int) 50(Nestor): TypeStruct 49(T) 51(bBt1): TypeStruct 50(Nestor) 52: TypePointer Uniform 51(bBt1) 53(bBtn1): 52(ptr) Variable Uniform 54(T): TypeStruct 11 6(int) 55(Nestor): TypeStruct 54(T) 56(bBt2): TypeStruct 55(Nestor) 57: TypePointer Uniform 56(bBt2) 58(bBtn2): 57(ptr) Variable Uniform 59(bBt3): TypeStruct 50(Nestor) 55(Nestor) 60: TypePointer Uniform 59(bBt3) 61(bBtn3): 60(ptr) Variable Uniform 62: TypePointer Output 30(S) 63(sout): 62(ptr) Variable Output 64(S): TypeStruct 8(ivec3) 29 7(int) 65: TypePointer Output 64(S) 66(soutinv): 65(ptr) Variable Output 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.length.frag.out000066400000000000000000000046031506534232700222110ustar00rootroot00000000000000spv.length.frag // 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 Fragment 4 "main" 14 26 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "t" Name 14 "v" Name 26 "gl_FragColor" Name 32 "u" Decorate 14(v) Location 0 Decorate 26(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Function 7(fvec2) 10: TypeInt 32 0 11: 10(int) Constant 2 12: TypeArray 7(fvec2) 11 13: TypePointer Input 12 14(v): 13(ptr) Variable Input 15: TypeInt 32 1 16: 15(int) Constant 0 17: TypePointer Input 7(fvec2) 20: 15(int) Constant 1 24: TypeVector 6(float) 4 25: TypePointer Output 24(fvec4) 26(gl_FragColor): 25(ptr) Variable Output 27: 6(float) Constant 1106247680 28: 24(fvec4) ConstantComposite 27 27 27 27 29: 10(int) Constant 3 30: TypeArray 24(fvec4) 29 31: TypePointer Private 30 32(u): 31(ptr) Variable Private 4(main): 2 Function None 3 5: Label 9(t): 8(ptr) Variable Function 18: 17(ptr) AccessChain 14(v) 16 19: 7(fvec2) Load 18 21: 17(ptr) AccessChain 14(v) 20 22: 7(fvec2) Load 21 23: 7(fvec2) FAdd 19 22 Store 9(t) 23 Store 26(gl_FragColor) 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.load.bool.array.interface.block.frag.out000066400000000000000000000131301506534232700267410ustar00rootroot00000000000000spv.load.bool.array.interface.block.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 77 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 11 "ssbo" MemberName 11(ssbo) 0 "bo" Name 13 "" Name 18 "ub" MemberName 18(ub) 0 "bi" Name 20 "" Name 77 "color" Decorate 8 ArrayStride 4 Decorate 10 ArrayStride 12 Decorate 11(ssbo) BufferBlock MemberDecorate 11(ssbo) 0 Offset 0 Decorate 13 Binding 1 Decorate 13 DescriptorSet 0 Decorate 16 ArrayStride 16 Decorate 17 ArrayStride 48 Decorate 18(ub) Block MemberDecorate 18(ub) 0 Offset 0 Decorate 20 Binding 0 Decorate 20 DescriptorSet 0 Decorate 77(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 3 8: TypeArray 6(int) 7 9: 6(int) Constant 2 10: TypeArray 8 9 11(ssbo): TypeStruct 10 12: TypePointer Uniform 11(ssbo) 13: 12(ptr) Variable Uniform 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypeArray 6(int) 7 17: TypeArray 16 9 18(ub): TypeStruct 17 19: TypePointer Uniform 18(ub) 20: 19(ptr) Variable Uniform 21: TypePointer Uniform 17 24: TypeBool 25: TypeArray 24(bool) 7 26: TypeArray 25 9 29: 6(int) Constant 0 45: TypePointer Uniform 10 48: TypePointer Uniform 8 51: 6(int) Constant 1 53: TypePointer Uniform 6(int) 56: 14(int) Constant 1 60: 14(int) Constant 2 74: TypeFloat 32 75: TypeVector 74(float) 4 76: TypePointer Output 75(fvec4) 77(color): 76(ptr) Variable Output 78: 74(float) Constant 0 79: 75(fvec4) ConstantComposite 78 78 78 78 4(main): 2 Function None 3 5: Label 22: 21(ptr) AccessChain 20 15 23: 17 Load 22 27: 16 CompositeExtract 23 0 28: 6(int) CompositeExtract 27 0 30: 24(bool) INotEqual 28 29 31: 6(int) CompositeExtract 27 1 32: 24(bool) INotEqual 31 29 33: 6(int) CompositeExtract 27 2 34: 24(bool) INotEqual 33 29 35: 25 CompositeConstruct 30 32 34 36: 16 CompositeExtract 23 1 37: 6(int) CompositeExtract 36 0 38: 24(bool) INotEqual 37 29 39: 6(int) CompositeExtract 36 1 40: 24(bool) INotEqual 39 29 41: 6(int) CompositeExtract 36 2 42: 24(bool) INotEqual 41 29 43: 25 CompositeConstruct 38 40 42 44: 26 CompositeConstruct 35 43 46: 45(ptr) AccessChain 13 15 47: 25 CompositeExtract 44 0 49: 48(ptr) AccessChain 46 15 50: 24(bool) CompositeExtract 47 0 52: 6(int) Select 50 51 29 54: 53(ptr) AccessChain 49 15 Store 54 52 55: 24(bool) CompositeExtract 47 1 57: 6(int) Select 55 51 29 58: 53(ptr) AccessChain 49 56 Store 58 57 59: 24(bool) CompositeExtract 47 2 61: 6(int) Select 59 51 29 62: 53(ptr) AccessChain 49 60 Store 62 61 63: 25 CompositeExtract 44 1 64: 48(ptr) AccessChain 46 56 65: 24(bool) CompositeExtract 63 0 66: 6(int) Select 65 51 29 67: 53(ptr) AccessChain 64 15 Store 67 66 68: 24(bool) CompositeExtract 63 1 69: 6(int) Select 68 51 29 70: 53(ptr) AccessChain 64 56 Store 70 69 71: 24(bool) CompositeExtract 63 2 72: 6(int) Select 71 51 29 73: 53(ptr) AccessChain 64 60 Store 73 72 Store 77(color) 79 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.localAggregates.frag.out000066400000000000000000000250531506534232700240160ustar00rootroot00000000000000spv.localAggregates.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 136 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 15 40 90 98 108 134 135 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 8 "s1" MemberName 8(s1) 0 "i" MemberName 8(s1) 1 "f" Name 10 "s2" MemberName 10(s2) 0 "i" MemberName 10(s2) 1 "f" MemberName 10(s2) 2 "s1_1" MemberName 10(s2) 3 "bleh" Name 12 "locals2" Name 13 "s3" MemberName 13(s3) 0 "s2_1" MemberName 13(s3) 1 "i" MemberName 13(s3) 2 "f" MemberName 13(s3) 3 "s1_1" Name 15 "foo3" Name 36 "localFArray" Name 40 "coord" Name 49 "localIArray" Name 68 "x" Name 70 "localArray" Name 75 "i" Name 84 "a" Name 90 "condition" Name 98 "color" Name 108 "gl_FragColor" Name 128 "samp2D" Name 134 "foo" Name 135 "foo2" Decorate 15(foo3) Flat Decorate 15(foo3) Location 9 Decorate 40(coord) Location 0 Decorate 90(condition) Flat Decorate 90(condition) Location 18 Decorate 98(color) Location 1 Decorate 108(gl_FragColor) Location 0 Decorate 128(samp2D) Binding 0 Decorate 128(samp2D) DescriptorSet 0 Decorate 134(foo) Flat Decorate 134(foo) Location 2 Decorate 135(foo2) Flat Decorate 135(foo2) Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFloat 32 8(s1): TypeStruct 6(int) 7(float) 9: TypeVector 7(float) 4 10(s2): TypeStruct 6(int) 7(float) 8(s1) 9(fvec4) 11: TypePointer Function 10(s2) 13(s3): TypeStruct 10(s2) 6(int) 7(float) 8(s1) 14: TypePointer Input 13(s3) 15(foo3): 14(ptr) Variable Input 16: 6(int) Constant 0 17: TypePointer Input 10(s2) 20: TypePointer Input 6(int) 23: TypeBool 27: 6(int) Constant 2 28: 6(int) Constant 1 29: 7(float) Constant 1065353216 30: TypePointer Function 7(float) 32: TypeInt 32 0 33: 32(int) Constant 16 34: TypeArray 7(float) 33 35: TypePointer Function 34 37: 6(int) Constant 4 38: TypeVector 7(float) 2 39: TypePointer Input 38(fvec2) 40(coord): 39(ptr) Variable Input 41: 32(int) Constant 0 42: TypePointer Input 7(float) 46: 32(int) Constant 8 47: TypeArray 6(int) 46 48: TypePointer Function 47 52: TypePointer Function 6(int) 69: 6(int) Constant 5 82: 6(int) Constant 16 86: 7(float) Constant 0 90(condition): 20(ptr) Variable Input 96: 6(int) Constant 3 97: TypePointer Input 9(fvec4) 98(color): 97(ptr) Variable Input 100: TypePointer Function 9(fvec4) 102: 32(int) Constant 1 105: 32(int) Constant 2 107: TypePointer Output 9(fvec4) 108(gl_FragColor): 107(ptr) Variable Output 125: TypeImage 7(float) 2D sampled format:Unknown 126: TypeSampledImage 125 127: TypePointer UniformConstant 126 128(samp2D): 127(ptr) Variable UniformConstant 133: TypePointer Input 8(s1) 134(foo): 133(ptr) Variable Input 135(foo2): 17(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12(locals2): 11(ptr) Variable Function 36(localFArray): 35(ptr) Variable Function 49(localIArray): 48(ptr) Variable Function 68(x): 52(ptr) Variable Function 70(localArray): 35(ptr) Variable Function 75(i): 52(ptr) Variable Function 84(a): 35(ptr) Variable Function 18: 17(ptr) AccessChain 15(foo3) 16 19: 10(s2) Load 18 Store 12(locals2) 19 21: 20(ptr) AccessChain 15(foo3) 16 16 22: 6(int) Load 21 24: 23(bool) SGreaterThan 22 16 SelectionMerge 26 None BranchConditional 24 25 54 25: Label 31: 30(ptr) AccessChain 12(locals2) 27 28 Store 31 29 43: 42(ptr) AccessChain 40(coord) 41 44: 7(float) Load 43 45: 30(ptr) AccessChain 36(localFArray) 37 Store 45 44 50: 20(ptr) AccessChain 15(foo3) 16 16 51: 6(int) Load 50 53: 52(ptr) AccessChain 49(localIArray) 27 Store 53 51 Branch 26 54: Label 55: 42(ptr) AccessChain 40(coord) 41 56: 7(float) Load 55 57: 30(ptr) AccessChain 12(locals2) 27 28 Store 57 56 58: 30(ptr) AccessChain 36(localFArray) 37 Store 58 29 59: 52(ptr) AccessChain 49(localIArray) 27 Store 59 16 Branch 26 26: Label 60: 52(ptr) AccessChain 49(localIArray) 27 61: 6(int) Load 60 62: 23(bool) IEqual 61 16 SelectionMerge 64 None BranchConditional 62 63 64 63: Label 65: 30(ptr) AccessChain 36(localFArray) 37 66: 7(float) Load 65 67: 7(float) FAdd 66 29 Store 65 67 Branch 64 64: Label Store 68(x) 69 71: 6(int) Load 68(x) 72: 42(ptr) AccessChain 40(coord) 41 73: 7(float) Load 72 74: 30(ptr) AccessChain 70(localArray) 71 Store 74 73 Store 75(i) 16 Branch 76 76: Label LoopMerge 78 79 None Branch 80 80: Label 81: 6(int) Load 75(i) 83: 23(bool) SLessThan 81 82 BranchConditional 83 77 78 77: Label 85: 6(int) Load 75(i) 87: 30(ptr) AccessChain 84(a) 85 Store 87 86 Branch 79 79: Label 88: 6(int) Load 75(i) 89: 6(int) IAdd 88 28 Store 75(i) 89 Branch 76 78: Label 91: 6(int) Load 90(condition) 92: 23(bool) IEqual 91 28 SelectionMerge 94 None BranchConditional 92 93 94 93: Label 95: 34 Load 70(localArray) Store 84(a) 95 Branch 94 94: Label 99: 9(fvec4) Load 98(color) 101: 100(ptr) AccessChain 12(locals2) 96 Store 101 99 103: 42(ptr) AccessChain 40(coord) 102 104: 7(float) Load 103 106: 30(ptr) AccessChain 12(locals2) 96 105 Store 106 104 109: 100(ptr) AccessChain 12(locals2) 96 110: 9(fvec4) Load 109 111: 30(ptr) AccessChain 36(localFArray) 37 112: 7(float) Load 111 113: 30(ptr) AccessChain 12(locals2) 27 28 114: 7(float) Load 113 115: 7(float) FAdd 112 114 116: 6(int) Load 68(x) 117: 30(ptr) AccessChain 70(localArray) 116 118: 7(float) Load 117 119: 7(float) FAdd 115 118 120: 6(int) Load 68(x) 121: 30(ptr) AccessChain 84(a) 120 122: 7(float) Load 121 123: 7(float) FAdd 119 122 124: 9(fvec4) VectorTimesScalar 110 123 129: 126 Load 128(samp2D) 130: 38(fvec2) Load 40(coord) 131: 9(fvec4) ImageSampleImplicitLod 129 130 132: 9(fvec4) FMul 124 131 Store 108(gl_FragColor) 132 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.loops.frag.out000066400000000000000000001475071506534232700220770ustar00rootroot00000000000000spv.loops.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 725 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 54 57 71 106 114 118 131 137 157 160 171 308 344 350 366 380 418 450 469 512 544 552 562 588 615 624 629 649 687 698 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "color" Name 11 "BaseColor" Name 54 "d" Name 57 "bigColor" Name 71 "bigColor1_1" Name 106 "d2" Name 114 "d3" Name 118 "bigColor1_2" Name 131 "bigColor1_3" Name 137 "d4" Name 148 "i" Name 157 "Count" Name 160 "bigColor2" Name 171 "bigColor3" Name 179 "i" Name 195 "i" Name 231 "i" Name 254 "i" Name 279 "i" Name 308 "bigColor4" Name 344 "bigColor5" Name 350 "d5" Name 366 "d6" Name 380 "bigColor6" Name 418 "d7" Name 450 "bigColor7" Name 469 "d8" Name 512 "d9" Name 544 "d10" Name 552 "d11" Name 562 "d12" Name 588 "bigColor8" Name 615 "gl_FragColor" Name 624 "d14" Name 629 "d15" Name 649 "d16" Name 687 "d18" Name 698 "d17" Decorate 11(BaseColor) Location 11 Decorate 54(d) Location 12 Decorate 57(bigColor) Location 0 Decorate 71(bigColor1_1) Location 1 Decorate 106(d2) Location 13 Decorate 114(d3) Location 14 Decorate 118(bigColor1_2) Location 2 Decorate 131(bigColor1_3) Location 3 Decorate 137(d4) Location 15 Decorate 157(Count) Flat Decorate 157(Count) Location 29 Decorate 160(bigColor2) Location 4 Decorate 171(bigColor3) Location 5 Decorate 308(bigColor4) Location 6 Decorate 344(bigColor5) Location 7 Decorate 350(d5) Location 16 Decorate 366(d6) Location 17 Decorate 380(bigColor6) Location 8 Decorate 418(d7) Location 18 Decorate 450(bigColor7) Location 9 Decorate 469(d8) Location 19 Decorate 512(d9) Location 20 Decorate 544(d10) Location 21 Decorate 552(d11) Location 22 Decorate 562(d12) Location 23 Decorate 588(bigColor8) Location 10 Decorate 615(gl_FragColor) Location 0 Decorate 624(d14) Location 24 Decorate 629(d15) Location 25 Decorate 649(d16) Location 26 Decorate 687(d18) Location 28 Decorate 698(d17) Location 27 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input 18: TypeBool 19: 18(bool) ConstantTrue 20: TypeInt 32 0 21: 20(int) Constant 0 22: TypePointer Function 6(float) 25: 6(float) Constant 1051260355 29: 7(fvec4) ConstantComposite 25 25 25 25 35: 6(float) Constant 1059648963 39: 7(fvec4) ConstantComposite 35 35 35 35 53: TypePointer Input 6(float) 54(d): 53(ptr) Variable Input 57(bigColor): 10(ptr) Variable Input 66: 20(int) Constant 2 71(bigColor1_1): 10(ptr) Variable Input 75: 20(int) Constant 3 93: 6(float) Constant 1109917696 96: 6(float) Constant 1065353216 106(d2): 53(ptr) Variable Input 111: 20(int) Constant 1 114(d3): 53(ptr) Variable Input 118(bigColor1_2): 10(ptr) Variable Input 131(bigColor1_3): 10(ptr) Variable Input 137(d4): 53(ptr) Variable Input 146: TypeInt 32 1 147: TypePointer Function 146(int) 149: 146(int) Constant 0 156: TypePointer Input 146(int) 157(Count): 156(ptr) Variable Input 160(bigColor2): 10(ptr) Variable Input 165: 146(int) Constant 1 171(bigColor3): 10(ptr) Variable Input 186: 146(int) Constant 42 202: 146(int) Constant 100 206: 6(float) Constant 1101004800 238: 146(int) Constant 120 308(bigColor4): 10(ptr) Variable Input 344(bigColor5): 10(ptr) Variable Input 350(d5): 53(ptr) Variable Input 366(d6): 53(ptr) Variable Input 380(bigColor6): 10(ptr) Variable Input 418(d7): 53(ptr) Variable Input 445: 6(float) Constant 0 450(bigColor7): 10(ptr) Variable Input 469(d8): 53(ptr) Variable Input 486: 6(float) Constant 1073741824 512(d9): 53(ptr) Variable Input 528: 6(float) Constant 1084227584 544(d10): 53(ptr) Variable Input 552(d11): 53(ptr) Variable Input 562(d12): 53(ptr) Variable Input 586: 6(float) Constant 1092616192 588(bigColor8): 10(ptr) Variable Input 614: TypePointer Output 7(fvec4) 615(gl_FragColor): 614(ptr) Variable Output 624(d14): 53(ptr) Variable Input 629(d15): 53(ptr) Variable Input 649(d16): 53(ptr) Variable Input 687(d18): 53(ptr) Variable Input 698(d17): 53(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 148(i): 147(ptr) Variable Function 179(i): 147(ptr) Variable Function 195(i): 147(ptr) Variable Function 231(i): 147(ptr) Variable Function 254(i): 147(ptr) Variable Function 279(i): 147(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 Branch 13 13: Label LoopMerge 15 16 None Branch 17 17: Label BranchConditional 19 14 15 14: Label 23: 22(ptr) AccessChain 9(color) 21 24: 6(float) Load 23 26: 18(bool) FOrdLessThan 24 25 SelectionMerge 28 None BranchConditional 26 27 28 27: Label 30: 7(fvec4) Load 9(color) 31: 7(fvec4) FAdd 30 29 Store 9(color) 31 Branch 15 28: Label 33: 22(ptr) AccessChain 9(color) 21 34: 6(float) Load 33 36: 18(bool) FOrdLessThan 34 35 SelectionMerge 38 None BranchConditional 36 37 38 37: Label 40: 7(fvec4) Load 9(color) 41: 7(fvec4) FAdd 40 39 Store 9(color) 41 Branch 15 38: Label 43: 7(fvec4) Load 9(color) 44: 7(fvec4) FAdd 43 29 Store 9(color) 44 Branch 15 16: Label Branch 13 15: Label Branch 46 46: Label LoopMerge 48 49 None Branch 50 50: Label 51: 22(ptr) AccessChain 9(color) 21 52: 6(float) Load 51 55: 6(float) Load 54(d) 56: 18(bool) FOrdLessThan 52 55 BranchConditional 56 47 48 47: Label 58: 7(fvec4) Load 57(bigColor) 59: 7(fvec4) Load 9(color) 60: 7(fvec4) FAdd 59 58 Store 9(color) 60 Branch 49 49: Label Branch 46 48: Label Branch 61 61: Label LoopMerge 63 64 None Branch 65 65: Label 67: 22(ptr) AccessChain 9(color) 66 68: 6(float) Load 67 69: 6(float) Load 54(d) 70: 18(bool) FOrdLessThan 68 69 BranchConditional 70 62 63 62: Label 72: 7(fvec4) Load 71(bigColor1_1) 73: 7(fvec4) Load 9(color) 74: 7(fvec4) FAdd 73 72 Store 9(color) 74 76: 22(ptr) AccessChain 9(color) 75 77: 6(float) Load 76 78: 6(float) Load 54(d) 79: 18(bool) FOrdLessThan 77 78 SelectionMerge 81 None BranchConditional 79 80 81 80: Label Branch 64 81: Label 83: 7(fvec4) Load 71(bigColor1_1) 84: 7(fvec4) Load 9(color) 85: 7(fvec4) FAdd 84 83 Store 9(color) 85 Branch 64 64: Label Branch 61 63: Label Branch 86 86: Label LoopMerge 88 89 None Branch 90 90: Label 91: 22(ptr) AccessChain 9(color) 21 92: 6(float) Load 91 94: 18(bool) FOrdLessThan 92 93 BranchConditional 94 87 88 87: Label 95: 7(fvec4) Load 9(color) 97: 7(fvec4) CompositeConstruct 96 96 96 96 98: 7(fvec4) FAdd 95 97 Store 9(color) 98 Branch 89 89: Label Branch 86 88: Label Branch 99 99: Label LoopMerge 101 102 None Branch 103 103: Label 104: 22(ptr) AccessChain 9(color) 75 105: 6(float) Load 104 107: 6(float) Load 106(d2) 108: 18(bool) FOrdLessThan 105 107 SelectionMerge 110 None BranchConditional 108 109 110 109: Label 112: 22(ptr) AccessChain 9(color) 111 113: 6(float) Load 112 115: 6(float) Load 114(d3) 116: 18(bool) FOrdLessThan 113 115 Branch 110 110: Label 117: 18(bool) Phi 108 103 116 109 BranchConditional 117 100 101 100: Label 119: 7(fvec4) Load 118(bigColor1_2) 120: 7(fvec4) Load 9(color) 121: 7(fvec4) FAdd 120 119 Store 9(color) 121 Branch 102 102: Label Branch 99 101: Label Branch 122 122: Label LoopMerge 124 125 None Branch 126 126: Label 127: 22(ptr) AccessChain 9(color) 66 128: 6(float) Load 127 129: 6(float) Load 114(d3) 130: 18(bool) FOrdLessThan 128 129 BranchConditional 130 123 124 123: Label 132: 7(fvec4) Load 131(bigColor1_3) 133: 7(fvec4) Load 9(color) 134: 7(fvec4) FAdd 133 132 Store 9(color) 134 135: 22(ptr) AccessChain 9(color) 111 136: 6(float) Load 135 138: 6(float) Load 137(d4) 139: 18(bool) FOrdLessThan 136 138 SelectionMerge 141 None BranchConditional 139 140 141 140: Label Branch 124 141: Label 143: 7(fvec4) Load 131(bigColor1_3) 144: 7(fvec4) Load 9(color) 145: 7(fvec4) FAdd 144 143 Store 9(color) 145 Branch 125 125: Label Branch 122 124: Label Store 148(i) 149 Branch 150 150: Label LoopMerge 152 153 None Branch 154 154: Label 155: 146(int) Load 148(i) 158: 146(int) Load 157(Count) 159: 18(bool) SLessThan 155 158 BranchConditional 159 151 152 151: Label 161: 7(fvec4) Load 160(bigColor2) 162: 7(fvec4) Load 9(color) 163: 7(fvec4) FAdd 162 161 Store 9(color) 163 Branch 153 153: Label 164: 146(int) Load 148(i) 166: 146(int) IAdd 164 165 Store 148(i) 166 Branch 150 152: Label Branch 167 167: Label LoopMerge 169 170 None Branch 168 168: Label 172: 7(fvec4) Load 171(bigColor3) 173: 7(fvec4) Load 9(color) 174: 7(fvec4) FAdd 173 172 Store 9(color) 174 Branch 170 170: Label 175: 22(ptr) AccessChain 9(color) 21 176: 6(float) Load 175 177: 6(float) Load 106(d2) 178: 18(bool) FOrdLessThan 176 177 BranchConditional 178 167 169 169: Label Store 179(i) 149 Branch 180 180: Label LoopMerge 182 183 None Branch 184 184: Label 185: 146(int) Load 179(i) 187: 18(bool) SLessThan 185 186 BranchConditional 187 181 182 181: Label 188: 6(float) Load 114(d3) 189: 22(ptr) AccessChain 9(color) 66 190: 6(float) Load 189 191: 6(float) FAdd 190 188 192: 22(ptr) AccessChain 9(color) 66 Store 192 191 Branch 183 183: Label 193: 146(int) Load 179(i) 194: 146(int) IAdd 193 165 Store 179(i) 194 Branch 180 182: Label Store 195(i) 149 Branch 196 196: Label LoopMerge 198 199 None Branch 200 200: Label 201: 146(int) Load 195(i) 203: 18(bool) SLessThan 201 202 BranchConditional 203 197 198 197: Label 204: 22(ptr) AccessChain 9(color) 66 205: 6(float) Load 204 207: 18(bool) FOrdLessThan 205 206 SelectionMerge 209 None BranchConditional 207 208 213 208: Label 210: 22(ptr) AccessChain 9(color) 21 211: 6(float) Load 210 212: 6(float) FAdd 211 96 Store 210 212 Branch 209 213: Label 214: 22(ptr) AccessChain 9(color) 111 215: 6(float) Load 214 216: 6(float) FAdd 215 96 Store 214 216 Branch 209 209: Label 217: 22(ptr) AccessChain 9(color) 75 218: 6(float) Load 217 219: 18(bool) FOrdLessThan 218 206 SelectionMerge 221 None BranchConditional 219 220 221 220: Label 222: 22(ptr) AccessChain 9(color) 66 223: 6(float) Load 222 224: 22(ptr) AccessChain 9(color) 111 225: 6(float) Load 224 226: 18(bool) FOrdGreaterThan 223 225 SelectionMerge 228 None BranchConditional 226 227 228 227: Label Branch 228 228: Label Branch 221 221: Label Branch 199 199: Label 229: 146(int) Load 195(i) 230: 146(int) IAdd 229 165 Store 195(i) 230 Branch 196 198: Label Store 231(i) 149 Branch 232 232: Label LoopMerge 234 235 None Branch 236 236: Label 237: 146(int) Load 231(i) 239: 18(bool) SLessThan 237 238 BranchConditional 239 233 234 233: Label 240: 22(ptr) AccessChain 9(color) 66 241: 6(float) Load 240 242: 18(bool) FOrdLessThan 241 206 SelectionMerge 244 None BranchConditional 242 243 248 243: Label 245: 22(ptr) AccessChain 9(color) 21 246: 6(float) Load 245 247: 6(float) FAdd 246 96 Store 245 247 Branch 244 248: Label 249: 22(ptr) AccessChain 9(color) 111 250: 6(float) Load 249 251: 6(float) FAdd 250 96 Store 249 251 Branch 244 244: Label Branch 235 235: Label 252: 146(int) Load 231(i) 253: 146(int) IAdd 252 165 Store 231(i) 253 Branch 232 234: Label Store 254(i) 149 Branch 255 255: Label LoopMerge 257 258 None Branch 259 259: Label 260: 146(int) Load 254(i) 261: 18(bool) SLessThan 260 186 BranchConditional 261 256 257 256: Label 262: 6(float) Load 114(d3) 263: 22(ptr) AccessChain 9(color) 66 264: 6(float) Load 263 265: 6(float) FAdd 264 262 266: 22(ptr) AccessChain 9(color) 66 Store 266 265 267: 22(ptr) AccessChain 9(color) 21 268: 6(float) Load 267 269: 6(float) Load 137(d4) 270: 18(bool) FOrdLessThan 268 269 SelectionMerge 272 None BranchConditional 270 271 272 271: Label Branch 258 272: Label 274: 22(ptr) AccessChain 9(color) 75 275: 6(float) Load 274 276: 6(float) FAdd 275 96 Store 274 276 Branch 258 258: Label 277: 146(int) Load 254(i) 278: 146(int) IAdd 277 165 Store 254(i) 278 Branch 255 257: Label Store 279(i) 149 Branch 280 280: Label LoopMerge 282 283 None Branch 284 284: Label 285: 146(int) Load 279(i) 286: 18(bool) SLessThan 285 186 BranchConditional 286 281 282 281: Label 287: 6(float) Load 114(d3) 288: 22(ptr) AccessChain 9(color) 66 289: 6(float) Load 288 290: 6(float) FAdd 289 287 291: 22(ptr) AccessChain 9(color) 66 Store 291 290 292: 22(ptr) AccessChain 9(color) 21 293: 6(float) Load 292 294: 6(float) Load 137(d4) 295: 18(bool) FOrdLessThan 293 294 SelectionMerge 297 None BranchConditional 295 296 297 296: Label Branch 282 297: Label 299: 22(ptr) AccessChain 9(color) 75 300: 6(float) Load 299 301: 6(float) FAdd 300 96 Store 299 301 Branch 283 283: Label 302: 146(int) Load 279(i) 303: 146(int) IAdd 302 165 Store 279(i) 303 Branch 280 282: Label Branch 304 304: Label LoopMerge 306 307 None Branch 305 305: Label 309: 7(fvec4) Load 308(bigColor4) 310: 7(fvec4) Load 9(color) 311: 7(fvec4) FAdd 310 309 Store 9(color) 311 312: 22(ptr) AccessChain 9(color) 21 313: 6(float) Load 312 314: 6(float) Load 137(d4) 315: 18(bool) FOrdLessThan 313 314 SelectionMerge 317 None BranchConditional 315 316 317 316: Label Branch 307 317: Label 319: 22(ptr) AccessChain 9(color) 111 320: 6(float) Load 319 321: 6(float) Load 137(d4) 322: 18(bool) FOrdLessThan 320 321 SelectionMerge 324 None BranchConditional 322 323 330 323: Label 325: 6(float) Load 137(d4) 326: 22(ptr) AccessChain 9(color) 111 327: 6(float) Load 326 328: 6(float) FAdd 327 325 329: 22(ptr) AccessChain 9(color) 111 Store 329 328 Branch 324 330: Label 331: 6(float) Load 137(d4) 332: 22(ptr) AccessChain 9(color) 21 333: 6(float) Load 332 334: 6(float) FAdd 333 331 335: 22(ptr) AccessChain 9(color) 21 Store 335 334 Branch 324 324: Label Branch 307 307: Label 336: 22(ptr) AccessChain 9(color) 66 337: 6(float) Load 336 338: 6(float) Load 137(d4) 339: 18(bool) FOrdLessThan 337 338 BranchConditional 339 304 306 306: Label Branch 340 340: Label LoopMerge 342 343 None Branch 341 341: Label 345: 7(fvec4) Load 344(bigColor5) 346: 7(fvec4) Load 9(color) 347: 7(fvec4) FAdd 346 345 Store 9(color) 347 348: 22(ptr) AccessChain 9(color) 111 349: 6(float) Load 348 351: 6(float) Load 350(d5) 352: 18(bool) FOrdLessThan 349 351 SelectionMerge 354 None BranchConditional 352 353 354 353: Label 355: 6(float) Load 350(d5) 356: 22(ptr) AccessChain 9(color) 111 357: 6(float) Load 356 358: 6(float) FAdd 357 355 359: 22(ptr) AccessChain 9(color) 111 Store 359 358 Branch 354 354: Label Branch 343 343: Label 360: 22(ptr) AccessChain 9(color) 21 361: 6(float) Load 360 362: 6(float) Load 350(d5) 363: 18(bool) FOrdLessThan 361 362 BranchConditional 363 340 342 342: Label 364: 22(ptr) AccessChain 9(color) 21 365: 6(float) Load 364 367: 6(float) Load 366(d6) 368: 18(bool) FOrdLessThan 365 367 SelectionMerge 370 None BranchConditional 368 369 384 369: Label Branch 371 371: Label LoopMerge 373 374 None Branch 375 375: Label 376: 22(ptr) AccessChain 9(color) 111 377: 6(float) Load 376 378: 6(float) Load 366(d6) 379: 18(bool) FOrdLessThan 377 378 BranchConditional 379 372 373 372: Label 381: 7(fvec4) Load 380(bigColor6) 382: 7(fvec4) Load 9(color) 383: 7(fvec4) FAdd 382 381 Store 9(color) 383 Branch 374 374: Label Branch 371 373: Label Branch 370 384: Label Branch 385 385: Label LoopMerge 387 388 None Branch 389 389: Label 390: 22(ptr) AccessChain 9(color) 66 391: 6(float) Load 390 392: 6(float) Load 366(d6) 393: 18(bool) FOrdLessThan 391 392 BranchConditional 393 386 387 386: Label 394: 53(ptr) AccessChain 380(bigColor6) 66 395: 6(float) Load 394 396: 22(ptr) AccessChain 9(color) 66 397: 6(float) Load 396 398: 6(float) FAdd 397 395 399: 22(ptr) AccessChain 9(color) 66 Store 399 398 Branch 388 388: Label Branch 385 387: Label Branch 370 370: Label 400: 22(ptr) AccessChain 9(color) 21 401: 6(float) Load 400 402: 6(float) Load 366(d6) 403: 18(bool) FOrdLessThan 401 402 SelectionMerge 405 None BranchConditional 403 404 424 404: Label Branch 406 406: Label LoopMerge 408 409 None Branch 410 410: Label 411: 22(ptr) AccessChain 9(color) 111 412: 6(float) Load 411 413: 6(float) Load 366(d6) 414: 18(bool) FOrdLessThan 412 413 BranchConditional 414 407 408 407: Label 415: 7(fvec4) Load 380(bigColor6) 416: 7(fvec4) Load 9(color) 417: 7(fvec4) FAdd 416 415 Store 9(color) 417 419: 6(float) Load 418(d7) 420: 18(bool) FOrdLessThan 419 96 SelectionMerge 422 None BranchConditional 420 421 422 421: Label Branch 408 422: Label Branch 409 409: Label Branch 406 408: Label Branch 405 424: Label Branch 425 425: Label LoopMerge 427 428 None Branch 429 429: Label 430: 22(ptr) AccessChain 9(color) 66 431: 6(float) Load 430 432: 6(float) Load 366(d6) 433: 18(bool) FOrdLessThan 431 432 BranchConditional 433 426 427 426: Label 434: 53(ptr) AccessChain 380(bigColor6) 66 435: 6(float) Load 434 436: 22(ptr) AccessChain 9(color) 66 437: 6(float) Load 436 438: 6(float) FAdd 437 435 439: 22(ptr) AccessChain 9(color) 66 Store 439 438 Branch 428 428: Label Branch 425 427: Label Branch 405 405: Label Branch 440 440: Label LoopMerge 442 443 None Branch 441 441: Label 444: 6(float) Load 418(d7) 446: 18(bool) FOrdLessThan 444 445 SelectionMerge 448 None BranchConditional 446 447 448 447: Label Branch 442 448: Label 451: 7(fvec4) Load 450(bigColor7) 452: 7(fvec4) Load 9(color) 453: 7(fvec4) FAdd 452 451 Store 9(color) 453 454: 6(float) Load 418(d7) 455: 18(bool) FOrdLessThan 454 96 SelectionMerge 457 None BranchConditional 455 456 457 456: Label 458: 22(ptr) AccessChain 9(color) 66 459: 6(float) Load 458 460: 6(float) FAdd 459 96 Store 458 460 Branch 442 457: Label 462: 7(fvec4) Load 11(BaseColor) 463: 7(fvec4) Load 9(color) 464: 7(fvec4) FAdd 463 462 Store 9(color) 464 Branch 443 443: Label BranchConditional 19 440 442 442: Label Branch 465 465: Label LoopMerge 467 468 None Branch 466 466: Label 470: 6(float) Load 469(d8) 471: 18(bool) FOrdLessThan 470 445 SelectionMerge 473 None BranchConditional 471 472 473 472: Label Branch 467 473: Label 475: 7(fvec4) Load 450(bigColor7) 476: 7(fvec4) Load 9(color) 477: 7(fvec4) FAdd 476 475 Store 9(color) 477 478: 6(float) Load 469(d8) 479: 18(bool) FOrdLessThan 478 96 SelectionMerge 481 None BranchConditional 479 480 481 480: Label 482: 22(ptr) AccessChain 9(color) 66 483: 6(float) Load 482 484: 6(float) FAdd 483 96 Store 482 484 485: 6(float) Load 469(d8) 487: 18(bool) FOrdLessThan 485 486 SelectionMerge 489 None BranchConditional 487 488 493 488: Label 490: 22(ptr) AccessChain 9(color) 111 491: 6(float) Load 490 492: 6(float) FAdd 491 96 Store 490 492 Branch 489 493: Label 494: 22(ptr) AccessChain 9(color) 21 495: 6(float) Load 494 496: 6(float) FAdd 495 96 Store 494 496 Branch 489 489: Label Branch 467 481: Label 498: 7(fvec4) Load 11(BaseColor) 499: 7(fvec4) Load 9(color) 500: 7(fvec4) FAdd 499 498 Store 9(color) 500 Branch 468 468: Label 501: 22(ptr) AccessChain 9(color) 66 502: 6(float) Load 501 503: 6(float) Load 469(d8) 504: 18(bool) FOrdLessThan 502 503 BranchConditional 504 465 467 467: Label Branch 505 505: Label LoopMerge 507 508 None Branch 509 509: Label 510: 22(ptr) AccessChain 9(color) 75 511: 6(float) Load 510 513: 6(float) Load 512(d9) 514: 18(bool) FOrdLessThan 511 513 BranchConditional 514 506 507 506: Label 515: 6(float) Load 512(d9) 516: 6(float) Load 469(d8) 517: 18(bool) FOrdGreaterThan 515 516 SelectionMerge 519 None BranchConditional 517 518 519 518: Label 520: 22(ptr) AccessChain 9(color) 21 521: 6(float) Load 520 522: 6(float) Load 418(d7) 523: 18(bool) FOrdLessThanEqual 521 522 SelectionMerge 525 None BranchConditional 523 524 525 524: Label 526: 22(ptr) AccessChain 9(color) 66 527: 6(float) Load 526 529: 18(bool) FOrdEqual 527 528 SelectionMerge 531 None BranchConditional 529 530 535 530: Label 532: 22(ptr) AccessChain 9(color) 75 533: 6(float) Load 532 534: 6(float) FAdd 533 96 Store 532 534 Branch 531 535: Label Branch 507 531: Label Branch 525 525: Label Branch 519 519: Label Branch 508 508: Label Branch 505 507: Label Branch 537 537: Label LoopMerge 539 540 None Branch 541 541: Label 542: 22(ptr) AccessChain 9(color) 66 543: 6(float) Load 542 545: 6(float) Load 544(d10) 546: 18(bool) FOrdLessThan 543 545 BranchConditional 546 538 539 538: Label 547: 22(ptr) AccessChain 9(color) 111 548: 6(float) Load 547 549: 6(float) FAdd 548 96 Store 547 549 550: 22(ptr) AccessChain 9(color) 111 551: 6(float) Load 550 553: 6(float) Load 552(d11) 554: 18(bool) FOrdLessThan 551 553 SelectionMerge 556 None BranchConditional 554 555 556 555: Label 557: 22(ptr) AccessChain 9(color) 66 558: 6(float) Load 557 559: 6(float) FAdd 558 96 Store 557 559 560: 22(ptr) AccessChain 9(color) 75 561: 6(float) Load 560 563: 6(float) Load 562(d12) 564: 18(bool) FOrdLessThan 561 563 SelectionMerge 566 None BranchConditional 564 565 570 565: Label 567: 22(ptr) AccessChain 9(color) 75 568: 6(float) Load 567 569: 6(float) FAdd 568 96 Store 567 569 Branch 566 570: Label 571: 22(ptr) AccessChain 9(color) 21 572: 6(float) Load 571 573: 6(float) FAdd 572 96 Store 571 573 Branch 566 566: Label Branch 540 556: Label 575: 7(fvec4) Load 9(color) 576: 7(fvec4) CompositeConstruct 96 96 96 96 577: 7(fvec4) FAdd 575 576 Store 9(color) 577 Branch 539 540: Label Branch 537 539: Label Branch 579 579: Label LoopMerge 581 582 None Branch 583 583: Label 584: 22(ptr) AccessChain 9(color) 21 585: 6(float) Load 584 587: 18(bool) FOrdLessThan 585 586 BranchConditional 587 580 581 580: Label 589: 7(fvec4) Load 588(bigColor8) 590: 7(fvec4) Load 9(color) 591: 7(fvec4) FAdd 590 589 Store 9(color) 591 592: 22(ptr) AccessChain 9(color) 66 593: 6(float) Load 592 594: 6(float) Load 469(d8) 595: 18(bool) FOrdLessThan 593 594 SelectionMerge 597 None BranchConditional 595 596 597 596: Label 598: 22(ptr) AccessChain 9(color) 75 599: 6(float) Load 598 600: 6(float) Load 366(d6) 601: 18(bool) FOrdLessThan 599 600 SelectionMerge 603 None BranchConditional 601 602 603 602: Label Branch 582 603: Label Branch 597 597: Label 605: 53(ptr) AccessChain 588(bigColor8) 21 606: 6(float) Load 605 607: 22(ptr) AccessChain 9(color) 111 608: 6(float) Load 607 609: 6(float) FAdd 608 606 610: 22(ptr) AccessChain 9(color) 111 Store 610 609 Branch 582 582: Label Branch 579 581: Label 611: 7(fvec4) Load 9(color) 612: 7(fvec4) CompositeConstruct 96 96 96 96 613: 7(fvec4) FAdd 611 612 Store 9(color) 613 616: 7(fvec4) Load 9(color) Store 615(gl_FragColor) 616 Branch 617 617: Label LoopMerge 619 620 None Branch 621 621: Label 622: 22(ptr) AccessChain 9(color) 21 623: 6(float) Load 622 625: 6(float) Load 624(d14) 626: 18(bool) FOrdLessThan 623 625 BranchConditional 626 618 619 618: Label 627: 22(ptr) AccessChain 9(color) 111 628: 6(float) Load 627 630: 6(float) Load 629(d15) 631: 18(bool) FOrdLessThan 628 630 SelectionMerge 633 None BranchConditional 631 632 635 632: Label Return 635: Label 636: 7(fvec4) Load 9(color) 637: 7(fvec4) CompositeConstruct 96 96 96 96 638: 7(fvec4) FAdd 636 637 Store 9(color) 638 Branch 633 633: Label Branch 620 620: Label Branch 617 619: Label 639: 7(fvec4) Load 9(color) 640: 7(fvec4) CompositeConstruct 96 96 96 96 641: 7(fvec4) FAdd 639 640 Store 9(color) 641 Branch 642 642: Label LoopMerge 644 645 None Branch 646 646: Label 647: 22(ptr) AccessChain 9(color) 75 648: 6(float) Load 647 650: 6(float) Load 649(d16) 651: 18(bool) FOrdLessThan 648 650 BranchConditional 651 643 644 643: Label 652: 22(ptr) AccessChain 9(color) 75 653: 6(float) Load 652 654: 6(float) FAdd 653 96 Store 652 654 Branch 645 645: Label Branch 642 644: Label Branch 655 655: Label LoopMerge 657 658 None Branch 659 659: Label 660: 22(ptr) AccessChain 9(color) 75 661: 6(float) Load 660 662: 6(float) Load 106(d2) 663: 18(bool) FOrdLessThan 661 662 SelectionMerge 665 None BranchConditional 663 664 665 664: Label 666: 22(ptr) AccessChain 9(color) 111 667: 6(float) Load 666 668: 6(float) Load 114(d3) 669: 18(bool) FOrdLessThan 667 668 Branch 665 665: Label 670: 18(bool) Phi 663 659 669 664 BranchConditional 670 656 657 656: Label 671: 7(fvec4) Load 118(bigColor1_2) 672: 7(fvec4) Load 9(color) 673: 7(fvec4) FAdd 672 671 Store 9(color) 673 674: 22(ptr) AccessChain 9(color) 66 675: 6(float) Load 674 676: 6(float) Load 114(d3) 677: 18(bool) FOrdLessThan 675 676 SelectionMerge 679 None BranchConditional 677 678 679 678: Label Return 679: Label Branch 658 658: Label Branch 655 657: Label Branch 681 681: Label LoopMerge 683 684 None Branch 682 682: Label 685: 22(ptr) AccessChain 9(color) 111 686: 6(float) Load 685 688: 6(float) Load 687(d18) 689: 18(bool) FOrdLessThan 686 688 SelectionMerge 691 None BranchConditional 689 690 691 690: Label Return 691: Label 693: 7(fvec4) Load 9(color) 694: 7(fvec4) CompositeConstruct 96 96 96 96 695: 7(fvec4) FAdd 693 694 Store 9(color) 695 Branch 684 684: Label 696: 22(ptr) AccessChain 9(color) 21 697: 6(float) Load 696 699: 6(float) Load 698(d17) 700: 18(bool) FOrdLessThan 697 699 BranchConditional 700 681 683 683: Label Branch 701 701: Label LoopMerge 703 704 None Branch 705 705: Label 706: 22(ptr) AccessChain 9(color) 111 707: 6(float) Load 706 708: 6(float) Load 649(d16) 709: 18(bool) FOrdLessThan 707 708 BranchConditional 709 702 703 702: Label 710: 22(ptr) AccessChain 9(color) 75 711: 6(float) Load 710 712: 6(float) Load 649(d16) 713: 18(bool) FOrdLessThan 711 712 SelectionMerge 715 None BranchConditional 713 714 717 714: Label Kill 717: Label 718: 7(fvec4) Load 9(color) 719: 7(fvec4) CompositeConstruct 96 96 96 96 720: 7(fvec4) FAdd 718 719 Store 9(color) 720 Branch 715 715: Label Branch 704 704: Label Branch 701 703: Label 721: 7(fvec4) Load 9(color) 722: 7(fvec4) CompositeConstruct 96 96 96 96 723: 7(fvec4) FAdd 721 722 Store 9(color) 723 724: 7(fvec4) Load 9(color) Store 615(gl_FragColor) 724 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.loopsArtificial.frag.out000066400000000000000000000303071506534232700240540ustar00rootroot00000000000000spv.loopsArtificial.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 158 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 17 27 80 140 142 143 144 145 146 147 148 149 150 151 152 153 154 157 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "color" Name 11 "BaseColor" Name 17 "bigColor4" Name 27 "d4" Name 80 "d13" Name 140 "gl_FragColor" Name 142 "bigColor" Name 143 "bigColor1_1" Name 144 "bigColor1_2" Name 145 "bigColor1_3" Name 146 "bigColor2" Name 147 "bigColor3" Name 148 "bigColor5" Name 149 "bigColor6" Name 150 "bigColor7" Name 151 "bigColor8" Name 152 "d" Name 153 "d2" Name 154 "d3" Name 157 "Count" Decorate 11(BaseColor) Location 11 Decorate 17(bigColor4) Location 6 Decorate 27(d4) Location 15 Decorate 80(d13) Location 16 Decorate 140(gl_FragColor) Location 0 Decorate 142(bigColor) Location 0 Decorate 143(bigColor1_1) Location 1 Decorate 144(bigColor1_2) Location 2 Decorate 145(bigColor1_3) Location 3 Decorate 146(bigColor2) Location 4 Decorate 147(bigColor3) Location 5 Decorate 148(bigColor5) Location 7 Decorate 149(bigColor6) Location 8 Decorate 150(bigColor7) Location 9 Decorate 151(bigColor8) Location 10 Decorate 152(d) Location 12 Decorate 153(d2) Location 13 Decorate 154(d3) Location 14 Decorate 157(Count) Flat Decorate 157(Count) Location 17 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input 17(bigColor4): 10(ptr) Variable Input 21: TypeInt 32 0 22: 21(int) Constant 0 23: TypePointer Function 6(float) 26: TypePointer Input 6(float) 27(d4): 26(ptr) Variable Input 29: TypeBool 33: 6(float) Constant 1073741824 34: 21(int) Constant 2 47: 6(float) Constant 1065353216 50: 21(int) Constant 1 77: 21(int) Constant 3 80(d13): 26(ptr) Variable Input 139: TypePointer Output 7(fvec4) 140(gl_FragColor): 139(ptr) Variable Output 142(bigColor): 10(ptr) Variable Input 143(bigColor1_1): 10(ptr) Variable Input 144(bigColor1_2): 10(ptr) Variable Input 145(bigColor1_3): 10(ptr) Variable Input 146(bigColor2): 10(ptr) Variable Input 147(bigColor3): 10(ptr) Variable Input 148(bigColor5): 10(ptr) Variable Input 149(bigColor6): 10(ptr) Variable Input 150(bigColor7): 10(ptr) Variable Input 151(bigColor8): 10(ptr) Variable Input 152(d): 26(ptr) Variable Input 153(d2): 26(ptr) Variable Input 154(d3): 26(ptr) Variable Input 155: TypeInt 32 1 156: TypePointer Input 155(int) 157(Count): 156(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 Branch 13 13: Label LoopMerge 15 16 None Branch 14 14: Label 18: 7(fvec4) Load 17(bigColor4) 19: 7(fvec4) Load 9(color) 20: 7(fvec4) FAdd 19 18 Store 9(color) 20 24: 23(ptr) AccessChain 9(color) 22 25: 6(float) Load 24 28: 6(float) Load 27(d4) 30: 29(bool) FOrdLessThan 25 28 SelectionMerge 32 None BranchConditional 30 31 32 31: Label 35: 23(ptr) AccessChain 9(color) 34 36: 6(float) Load 35 37: 6(float) FAdd 36 33 38: 23(ptr) AccessChain 9(color) 34 Store 38 37 39: 23(ptr) AccessChain 9(color) 34 40: 6(float) Load 39 41: 6(float) Load 27(d4) 42: 29(bool) FOrdLessThan 40 41 SelectionMerge 44 None BranchConditional 42 43 44 43: Label 45: 23(ptr) AccessChain 9(color) 22 46: 6(float) Load 45 48: 6(float) FAdd 46 47 Store 45 48 Branch 16 44: Label Branch 32 32: Label 51: 23(ptr) AccessChain 9(color) 50 52: 6(float) Load 51 53: 6(float) Load 27(d4) 54: 29(bool) FOrdLessThan 52 53 SelectionMerge 56 None BranchConditional 54 55 62 55: Label 57: 6(float) Load 27(d4) 58: 23(ptr) AccessChain 9(color) 50 59: 6(float) Load 58 60: 6(float) FAdd 59 57 61: 23(ptr) AccessChain 9(color) 50 Store 61 60 Branch 56 62: Label 63: 6(float) Load 27(d4) 64: 23(ptr) AccessChain 9(color) 22 65: 6(float) Load 64 66: 6(float) FAdd 65 63 67: 23(ptr) AccessChain 9(color) 22 Store 67 66 Branch 56 56: Label Branch 16 16: Label 68: 23(ptr) AccessChain 9(color) 34 69: 6(float) Load 68 70: 6(float) Load 27(d4) 71: 29(bool) FOrdLessThan 69 70 BranchConditional 71 13 15 15: Label Branch 72 72: Label LoopMerge 74 75 None Branch 76 76: Label 78: 23(ptr) AccessChain 9(color) 77 79: 6(float) Load 78 81: 6(float) Load 80(d13) 82: 29(bool) FOrdLessThan 79 81 BranchConditional 82 73 74 73: Label 83: 23(ptr) AccessChain 9(color) 34 84: 6(float) Load 83 85: 6(float) Load 80(d13) 86: 29(bool) FOrdLessThan 84 85 SelectionMerge 88 None BranchConditional 86 87 92 87: Label 89: 7(fvec4) Load 9(color) 90: 7(fvec4) CompositeConstruct 47 47 47 47 91: 7(fvec4) FAdd 89 90 Store 9(color) 91 Branch 88 92: Label 93: 7(fvec4) Load 9(color) 94: 7(fvec4) CompositeConstruct 47 47 47 47 95: 7(fvec4) FSub 93 94 Store 9(color) 95 Branch 88 88: Label 96: 7(fvec4) Load 17(bigColor4) 97: 7(fvec4) Load 9(color) 98: 7(fvec4) FAdd 97 96 Store 9(color) 98 99: 23(ptr) AccessChain 9(color) 22 100: 6(float) Load 99 101: 6(float) Load 27(d4) 102: 29(bool) FOrdLessThan 100 101 SelectionMerge 104 None BranchConditional 102 103 104 103: Label 105: 23(ptr) AccessChain 9(color) 34 106: 6(float) Load 105 107: 6(float) FAdd 106 33 108: 23(ptr) AccessChain 9(color) 34 Store 108 107 109: 23(ptr) AccessChain 9(color) 34 110: 6(float) Load 109 111: 6(float) Load 27(d4) 112: 29(bool) FOrdLessThan 110 111 SelectionMerge 114 None BranchConditional 112 113 114 113: Label 115: 23(ptr) AccessChain 9(color) 22 116: 6(float) Load 115 117: 6(float) FAdd 116 47 Store 115 117 Branch 75 114: Label Branch 104 104: Label 119: 23(ptr) AccessChain 9(color) 50 120: 6(float) Load 119 121: 6(float) Load 27(d4) 122: 29(bool) FOrdLessThan 120 121 SelectionMerge 124 None BranchConditional 122 123 130 123: Label 125: 6(float) Load 27(d4) 126: 23(ptr) AccessChain 9(color) 50 127: 6(float) Load 126 128: 6(float) FAdd 127 125 129: 23(ptr) AccessChain 9(color) 50 Store 129 128 Branch 124 130: Label 131: 6(float) Load 27(d4) 132: 23(ptr) AccessChain 9(color) 22 133: 6(float) Load 132 134: 6(float) FAdd 133 131 135: 23(ptr) AccessChain 9(color) 22 Store 135 134 Branch 124 124: Label Branch 75 75: Label Branch 72 74: Label 136: 7(fvec4) Load 9(color) 137: 7(fvec4) CompositeConstruct 47 47 47 47 138: 7(fvec4) FAdd 136 137 Store 9(color) 138 141: 7(fvec4) Load 9(color) Store 140(gl_FragColor) 141 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.looseUniformNoLoc.vert.out000066400000000000000000000004741506534232700244070ustar00rootroot00000000000000spv.looseUniformNoLoc.vert ERROR: spv.looseUniformNoLoc.vert:9: 'uv' : non-opaque uniform variables need a layout(location=L) ERROR: 1 compilation errors. No code generated. ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.matFun.vert.out000066400000000000000000000174001506534232700222220ustar00rootroot00000000000000spv.matFun.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 103 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 76 81 Source GLSL 400 Name 4 "main" Name 14 "xf(mf33;vf3;" Name 12 "m" Name 13 "v" Name 21 "Mat3(mf44;" Name 20 "m" Name 26 "mxv(mf44;vf3;" Name 24 "m4" Name 25 "v" Name 65 "param" Name 74 "gl_PerVertex" MemberName 74(gl_PerVertex) 0 "gl_Position" MemberName 74(gl_PerVertex) 1 "gl_PointSize" MemberName 74(gl_PerVertex) 2 "gl_ClipDistance" Name 76 "" Name 77 "bl" MemberName 77(bl) 0 "m4" MemberName 77(bl) 1 "m3" Name 79 "bName" Name 81 "v3" Name 82 "param" Name 86 "param" Name 89 "param" Name 93 "param" Decorate 74(gl_PerVertex) Block MemberDecorate 74(gl_PerVertex) 0 BuiltIn Position MemberDecorate 74(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 74(gl_PerVertex) 2 BuiltIn ClipDistance Decorate 77(bl) Block MemberDecorate 77(bl) 0 ColMajor MemberDecorate 77(bl) 0 MatrixStride 16 MemberDecorate 77(bl) 0 Offset 0 MemberDecorate 77(bl) 1 ColMajor MemberDecorate 77(bl) 1 MatrixStride 16 MemberDecorate 77(bl) 1 Offset 64 Decorate 79(bName) Binding 0 Decorate 79(bName) DescriptorSet 0 Decorate 81(v3) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeMatrix 7(fvec3) 3 9: TypePointer Function 8 10: TypePointer Function 7(fvec3) 11: TypeFunction 7(fvec3) 9(ptr) 10(ptr) 16: TypeVector 6(float) 4 17: TypeMatrix 16(fvec4) 4 18: TypePointer Function 17 19: TypeFunction 8 18(ptr) 23: TypeFunction 7(fvec3) 18(ptr) 10(ptr) 33: TypeInt 32 1 34: 33(int) Constant 0 35: TypePointer Function 16(fvec4) 39: 33(int) Constant 1 43: 33(int) Constant 2 47: 6(float) Constant 1065353216 48: 6(float) Constant 0 71: TypeInt 32 0 72: 71(int) Constant 1 73: TypeArray 6(float) 72 74(gl_PerVertex): TypeStruct 16(fvec4) 6(float) 73 75: TypePointer Output 74(gl_PerVertex) 76: 75(ptr) Variable Output 77(bl): TypeStruct 17 8 78: TypePointer Uniform 77(bl) 79(bName): 78(ptr) Variable Uniform 80: TypePointer Input 7(fvec3) 81(v3): 80(ptr) Variable Input 83: TypePointer Uniform 17 90: TypePointer Uniform 8 101: TypePointer Output 16(fvec4) 4(main): 2 Function None 3 5: Label 82(param): 18(ptr) Variable Function 86(param): 10(ptr) Variable Function 89(param): 9(ptr) Variable Function 93(param): 10(ptr) Variable Function 84: 83(ptr) AccessChain 79(bName) 34 85: 17 Load 84 Store 82(param) 85 87: 7(fvec3) Load 81(v3) Store 86(param) 87 88: 7(fvec3) FunctionCall 26(mxv(mf44;vf3;) 82(param) 86(param) 91: 90(ptr) AccessChain 79(bName) 39 92: 8 Load 91 Store 89(param) 92 94: 7(fvec3) Load 81(v3) Store 93(param) 94 95: 7(fvec3) FunctionCall 14(xf(mf33;vf3;) 89(param) 93(param) 96: 7(fvec3) FAdd 88 95 97: 6(float) CompositeExtract 96 0 98: 6(float) CompositeExtract 96 1 99: 6(float) CompositeExtract 96 2 100: 16(fvec4) CompositeConstruct 97 98 99 47 102: 101(ptr) AccessChain 76 34 Store 102 100 Return FunctionEnd 14(xf(mf33;vf3;): 7(fvec3) Function None 11 12(m): 9(ptr) FunctionParameter 13(v): 10(ptr) FunctionParameter 15: Label 28: 7(fvec3) Load 13(v) 29: 8 Load 12(m) 30: 7(fvec3) VectorTimesMatrix 28 29 ReturnValue 30 FunctionEnd 21(Mat3(mf44;): 8 Function None 19 20(m): 18(ptr) FunctionParameter 22: Label 36: 35(ptr) AccessChain 20(m) 34 37: 16(fvec4) Load 36 38: 7(fvec3) VectorShuffle 37 37 0 1 2 40: 35(ptr) AccessChain 20(m) 39 41: 16(fvec4) Load 40 42: 7(fvec3) VectorShuffle 41 41 0 1 2 44: 35(ptr) AccessChain 20(m) 43 45: 16(fvec4) Load 44 46: 7(fvec3) VectorShuffle 45 45 0 1 2 49: 6(float) CompositeExtract 38 0 50: 6(float) CompositeExtract 38 1 51: 6(float) CompositeExtract 38 2 52: 6(float) CompositeExtract 42 0 53: 6(float) CompositeExtract 42 1 54: 6(float) CompositeExtract 42 2 55: 6(float) CompositeExtract 46 0 56: 6(float) CompositeExtract 46 1 57: 6(float) CompositeExtract 46 2 58: 7(fvec3) CompositeConstruct 49 50 51 59: 7(fvec3) CompositeConstruct 52 53 54 60: 7(fvec3) CompositeConstruct 55 56 57 61: 8 CompositeConstruct 58 59 60 ReturnValue 61 FunctionEnd 26(mxv(mf44;vf3;): 7(fvec3) Function None 23 24(m4): 18(ptr) FunctionParameter 25(v): 10(ptr) FunctionParameter 27: Label 65(param): 18(ptr) Variable Function 64: 7(fvec3) Load 25(v) 66: 17 Load 24(m4) Store 65(param) 66 67: 8 FunctionCall 21(Mat3(mf44;) 65(param) 68: 7(fvec3) VectorTimesMatrix 64 67 ReturnValue 68 FunctionEnd glslang-16.0.0/Test/baseResults/spv.matrix.frag.out000066400000000000000000000406331506534232700222370ustar00rootroot00000000000000spv.matrix.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 286 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 12 14 28 161 169 187 ExecutionMode 4 OriginUpperLeft Source GLSL 420 Name 4 "main" Name 10 "sum34" Name 12 "m1" Name 14 "m2" Name 28 "f" Name 140 "dm" Name 159 "sum3" Name 161 "v4" Name 166 "sum4" Name 169 "v3" Name 174 "m43" Name 179 "m4" Name 187 "color" Decorate 12(m1) Location 0 Decorate 14(m2) Location 3 Decorate 28(f) Location 6 Decorate 161(v4) Location 8 Decorate 169(v3) Location 7 Decorate 187(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeMatrix 7(fvec4) 3 9: TypePointer Function 8 11: TypePointer Input 8 12(m1): 11(ptr) Variable Input 14(m2): 11(ptr) Variable Input 27: TypePointer Input 6(float) 28(f): 27(ptr) Variable Input 81: 6(float) Constant 1065353216 136: TypeFloat 64 137: TypeVector 136(float64_t) 4 138: TypeMatrix 137(f64vec4) 3 139: TypePointer Function 138 157: TypeVector 6(float) 3 158: TypePointer Function 157(fvec3) 160: TypePointer Input 7(fvec4) 161(v4): 160(ptr) Variable Input 165: TypePointer Function 7(fvec4) 168: TypePointer Input 157(fvec3) 169(v3): 168(ptr) Variable Input 172: TypeMatrix 157(fvec3) 4 173: TypePointer Function 172 177: TypeMatrix 7(fvec4) 4 178: TypePointer Function 177 186: TypePointer Output 7(fvec4) 187(color): 186(ptr) Variable Output 208: 6(float) Constant 0 270: TypeVector 6(float) 2 271: TypeMatrix 270(fvec2) 2 279: 6(float) Constant 1088841318 4(main): 2 Function None 3 5: Label 10(sum34): 9(ptr) Variable Function 140(dm): 139(ptr) Variable Function 159(sum3): 158(ptr) Variable Function 166(sum4): 165(ptr) Variable Function 174(m43): 173(ptr) Variable Function 179(m4): 178(ptr) Variable Function 13: 8 Load 12(m1) 15: 8 Load 14(m2) 16: 7(fvec4) CompositeExtract 13 0 17: 7(fvec4) CompositeExtract 15 0 18: 7(fvec4) FSub 16 17 19: 7(fvec4) CompositeExtract 13 1 20: 7(fvec4) CompositeExtract 15 1 21: 7(fvec4) FSub 19 20 22: 7(fvec4) CompositeExtract 13 2 23: 7(fvec4) CompositeExtract 15 2 24: 7(fvec4) FSub 22 23 25: 8 CompositeConstruct 18 21 24 Store 10(sum34) 25 26: 8 Load 12(m1) 29: 6(float) Load 28(f) 30: 8 MatrixTimesScalar 26 29 31: 8 Load 10(sum34) 32: 7(fvec4) CompositeExtract 31 0 33: 7(fvec4) CompositeExtract 30 0 34: 7(fvec4) FAdd 32 33 35: 7(fvec4) CompositeExtract 31 1 36: 7(fvec4) CompositeExtract 30 1 37: 7(fvec4) FAdd 35 36 38: 7(fvec4) CompositeExtract 31 2 39: 7(fvec4) CompositeExtract 30 2 40: 7(fvec4) FAdd 38 39 41: 8 CompositeConstruct 34 37 40 Store 10(sum34) 41 42: 6(float) Load 28(f) 43: 8 Load 12(m1) 44: 8 MatrixTimesScalar 43 42 45: 8 Load 10(sum34) 46: 7(fvec4) CompositeExtract 45 0 47: 7(fvec4) CompositeExtract 44 0 48: 7(fvec4) FAdd 46 47 49: 7(fvec4) CompositeExtract 45 1 50: 7(fvec4) CompositeExtract 44 1 51: 7(fvec4) FAdd 49 50 52: 7(fvec4) CompositeExtract 45 2 53: 7(fvec4) CompositeExtract 44 2 54: 7(fvec4) FAdd 52 53 55: 8 CompositeConstruct 48 51 54 Store 10(sum34) 55 56: 8 Load 12(m1) 57: 8 Load 14(m2) 58: 7(fvec4) CompositeExtract 56 0 59: 7(fvec4) CompositeExtract 57 0 60: 7(fvec4) FMul 58 59 61: 7(fvec4) CompositeExtract 56 1 62: 7(fvec4) CompositeExtract 57 1 63: 7(fvec4) FMul 61 62 64: 7(fvec4) CompositeExtract 56 2 65: 7(fvec4) CompositeExtract 57 2 66: 7(fvec4) FMul 64 65 67: 8 CompositeConstruct 60 63 66 68: 8 Load 10(sum34) 69: 7(fvec4) CompositeExtract 68 0 70: 7(fvec4) CompositeExtract 67 0 71: 7(fvec4) FDiv 69 70 72: 7(fvec4) CompositeExtract 68 1 73: 7(fvec4) CompositeExtract 67 1 74: 7(fvec4) FDiv 72 73 75: 7(fvec4) CompositeExtract 68 2 76: 7(fvec4) CompositeExtract 67 2 77: 7(fvec4) FDiv 75 76 78: 8 CompositeConstruct 71 74 77 Store 10(sum34) 78 79: 8 Load 12(m1) 80: 6(float) Load 28(f) 82: 6(float) FDiv 81 80 83: 8 MatrixTimesScalar 79 82 84: 8 Load 10(sum34) 85: 7(fvec4) CompositeExtract 84 0 86: 7(fvec4) CompositeExtract 83 0 87: 7(fvec4) FAdd 85 86 88: 7(fvec4) CompositeExtract 84 1 89: 7(fvec4) CompositeExtract 83 1 90: 7(fvec4) FAdd 88 89 91: 7(fvec4) CompositeExtract 84 2 92: 7(fvec4) CompositeExtract 83 2 93: 7(fvec4) FAdd 91 92 94: 8 CompositeConstruct 87 90 93 Store 10(sum34) 94 95: 6(float) Load 28(f) 96: 8 Load 12(m1) 97: 7(fvec4) CompositeConstruct 95 95 95 95 98: 7(fvec4) CompositeExtract 96 0 99: 7(fvec4) FDiv 97 98 100: 7(fvec4) CompositeExtract 96 1 101: 7(fvec4) FDiv 97 100 102: 7(fvec4) CompositeExtract 96 2 103: 7(fvec4) FDiv 97 102 104: 8 CompositeConstruct 99 101 103 105: 8 Load 10(sum34) 106: 7(fvec4) CompositeExtract 105 0 107: 7(fvec4) CompositeExtract 104 0 108: 7(fvec4) FAdd 106 107 109: 7(fvec4) CompositeExtract 105 1 110: 7(fvec4) CompositeExtract 104 1 111: 7(fvec4) FAdd 109 110 112: 7(fvec4) CompositeExtract 105 2 113: 7(fvec4) CompositeExtract 104 2 114: 7(fvec4) FAdd 112 113 115: 8 CompositeConstruct 108 111 114 Store 10(sum34) 115 116: 6(float) Load 28(f) 117: 8 Load 10(sum34) 118: 7(fvec4) CompositeConstruct 116 116 116 116 119: 7(fvec4) CompositeExtract 117 0 120: 7(fvec4) FAdd 119 118 121: 7(fvec4) CompositeExtract 117 1 122: 7(fvec4) FAdd 121 118 123: 7(fvec4) CompositeExtract 117 2 124: 7(fvec4) FAdd 123 118 125: 8 CompositeConstruct 120 122 124 Store 10(sum34) 125 126: 6(float) Load 28(f) 127: 8 Load 10(sum34) 128: 7(fvec4) CompositeConstruct 126 126 126 126 129: 7(fvec4) CompositeExtract 127 0 130: 7(fvec4) FSub 129 128 131: 7(fvec4) CompositeExtract 127 1 132: 7(fvec4) FSub 131 128 133: 7(fvec4) CompositeExtract 127 2 134: 7(fvec4) FSub 133 128 135: 8 CompositeConstruct 130 132 134 Store 10(sum34) 135 141: 8 Load 10(sum34) 142: 7(fvec4) CompositeExtract 141 0 143:137(f64vec4) FConvert 142 144: 7(fvec4) CompositeExtract 141 1 145:137(f64vec4) FConvert 144 146: 7(fvec4) CompositeExtract 141 2 147:137(f64vec4) FConvert 146 148: 138 CompositeConstruct 143 145 147 Store 140(dm) 148 149: 138 Load 140(dm) 150:137(f64vec4) CompositeExtract 149 0 151: 7(fvec4) FConvert 150 152:137(f64vec4) CompositeExtract 149 1 153: 7(fvec4) FConvert 152 154:137(f64vec4) CompositeExtract 149 2 155: 7(fvec4) FConvert 154 156: 8 CompositeConstruct 151 153 155 Store 10(sum34) 156 162: 7(fvec4) Load 161(v4) 163: 8 Load 14(m2) 164: 157(fvec3) VectorTimesMatrix 162 163 Store 159(sum3) 164 167: 8 Load 14(m2) 170: 157(fvec3) Load 169(v3) 171: 7(fvec4) MatrixTimesVector 167 170 Store 166(sum4) 171 175: 8 Load 10(sum34) 176: 172 Transpose 175 Store 174(m43) 176 180: 8 Load 12(m1) 181: 172 Load 174(m43) 182: 177 MatrixTimesMatrix 180 181 Store 179(m4) 182 183: 7(fvec4) Load 161(v4) 184: 177 Load 179(m4) 185: 7(fvec4) VectorTimesMatrix 183 184 Store 166(sum4) 185 188: 7(fvec4) Load 166(sum4) Store 187(color) 188 189: 8 Load 10(sum34) 190: 7(fvec4) CompositeConstruct 81 81 81 81 191: 7(fvec4) CompositeExtract 189 0 192: 7(fvec4) FAdd 191 190 193: 7(fvec4) CompositeExtract 189 1 194: 7(fvec4) FAdd 193 190 195: 7(fvec4) CompositeExtract 189 2 196: 7(fvec4) FAdd 195 190 197: 8 CompositeConstruct 192 194 196 Store 10(sum34) 197 198: 8 Load 10(sum34) 199: 7(fvec4) CompositeConstruct 81 81 81 81 200: 7(fvec4) CompositeExtract 198 0 201: 7(fvec4) FSub 200 199 202: 7(fvec4) CompositeExtract 198 1 203: 7(fvec4) FSub 202 199 204: 7(fvec4) CompositeExtract 198 2 205: 7(fvec4) FSub 204 199 206: 8 CompositeConstruct 201 203 205 Store 10(sum34) 206 207: 6(float) Load 28(f) 209: 7(fvec4) CompositeConstruct 207 208 208 208 210: 7(fvec4) CompositeConstruct 208 207 208 208 211: 7(fvec4) CompositeConstruct 208 208 207 208 212: 8 CompositeConstruct 209 210 211 213: 8 Load 10(sum34) 214: 7(fvec4) CompositeExtract 213 0 215: 7(fvec4) CompositeExtract 212 0 216: 7(fvec4) FAdd 214 215 217: 7(fvec4) CompositeExtract 213 1 218: 7(fvec4) CompositeExtract 212 1 219: 7(fvec4) FAdd 217 218 220: 7(fvec4) CompositeExtract 213 2 221: 7(fvec4) CompositeExtract 212 2 222: 7(fvec4) FAdd 220 221 223: 8 CompositeConstruct 216 219 222 Store 10(sum34) 223 224: 157(fvec3) Load 169(v3) 225: 6(float) Load 28(f) 226: 157(fvec3) Load 169(v3) 227: 6(float) Load 28(f) 228: 157(fvec3) Load 169(v3) 229: 6(float) Load 28(f) 230: 6(float) CompositeExtract 224 0 231: 6(float) CompositeExtract 224 1 232: 6(float) CompositeExtract 224 2 233: 6(float) CompositeExtract 226 0 234: 6(float) CompositeExtract 226 1 235: 6(float) CompositeExtract 226 2 236: 6(float) CompositeExtract 228 0 237: 6(float) CompositeExtract 228 1 238: 6(float) CompositeExtract 228 2 239: 7(fvec4) CompositeConstruct 230 231 232 225 240: 7(fvec4) CompositeConstruct 233 234 235 227 241: 7(fvec4) CompositeConstruct 236 237 238 229 242: 8 CompositeConstruct 239 240 241 243: 8 Load 10(sum34) 244: 7(fvec4) CompositeExtract 243 0 245: 7(fvec4) CompositeExtract 242 0 246: 7(fvec4) FAdd 244 245 247: 7(fvec4) CompositeExtract 243 1 248: 7(fvec4) CompositeExtract 242 1 249: 7(fvec4) FAdd 247 248 250: 7(fvec4) CompositeExtract 243 2 251: 7(fvec4) CompositeExtract 242 2 252: 7(fvec4) FAdd 250 251 253: 8 CompositeConstruct 246 249 252 Store 10(sum34) 253 254: 157(fvec3) Load 159(sum3) 255: 172 Load 174(m43) 256: 7(fvec4) VectorTimesMatrix 254 255 257: 7(fvec4) Load 166(sum4) 258: 7(fvec4) FAdd 256 257 259: 7(fvec4) Load 187(color) 260: 7(fvec4) FAdd 259 258 Store 187(color) 260 261: 172 Load 174(m43) 262: 6(float) CompositeExtract 261 0 0 263: 6(float) CompositeExtract 261 0 1 264: 6(float) CompositeExtract 261 0 2 265: 6(float) CompositeExtract 261 1 0 266: 7(fvec4) CompositeConstruct 262 263 264 265 267: 7(fvec4) Load 187(color) 268: 7(fvec4) FAdd 267 266 Store 187(color) 268 269: 6(float) Load 28(f) 272: 270(fvec2) CompositeConstruct 269 208 273: 270(fvec2) CompositeConstruct 208 269 274: 271 CompositeConstruct 272 273 275: 6(float) CompositeExtract 274 0 0 276: 6(float) CompositeExtract 274 0 1 277: 6(float) CompositeExtract 274 1 0 278: 157(fvec3) CompositeConstruct 275 276 277 280: 6(float) CompositeExtract 278 0 281: 6(float) CompositeExtract 278 1 282: 6(float) CompositeExtract 278 2 283: 7(fvec4) CompositeConstruct 280 281 282 279 284: 7(fvec4) Load 187(color) 285: 7(fvec4) FAdd 284 283 Store 187(color) 285 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.matrix2.frag.out000066400000000000000000000334441506534232700223230ustar00rootroot00000000000000spv.matrix2.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 221 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 12 16 37 38 65 87 147 158 181 218 219 220 ExecutionMode 4 OriginUpperLeft Source GLSL 150 Name 4 "main" Name 10 "m34" Name 12 "v" Name 16 "u" Name 37 "FragColor" Name 38 "Color" Name 63 "m44" Name 65 "un34" Name 87 "um43" Name 147 "um4" Name 156 "inv" Name 158 "um2" Name 179 "inv3" Name 181 "um3" Name 190 "inv4" Name 218 "colorTransform" Name 219 "m" Name 220 "n" Decorate 12(v) Location 28 Decorate 16(u) Location 29 Decorate 37(FragColor) Location 0 Decorate 38(Color) Location 3 Decorate 65(un34) Location 16 Decorate 87(um43) Location 12 Decorate 147(um4) Location 24 Decorate 158(um2) Location 19 Decorate 181(um3) Location 21 Decorate 218(colorTransform) Location 0 Decorate 219(m) Location 4 Decorate 220(n) Location 8 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeMatrix 7(fvec4) 3 9: TypePointer Function 8 11: TypePointer Input 7(fvec4) 12(v): 11(ptr) Variable Input 14: TypeVector 6(float) 3 15: TypePointer Input 14(fvec3) 16(u): 15(ptr) Variable Input 19: 6(float) Constant 1082759578 20: 6(float) Constant 0 21: 7(fvec4) ConstantComposite 19 20 20 20 22: 7(fvec4) ConstantComposite 20 19 20 20 23: 7(fvec4) ConstantComposite 20 20 19 20 24: 8 ConstantComposite 21 22 23 36: TypePointer Output 7(fvec4) 37(FragColor): 36(ptr) Variable Output 38(Color): 15(ptr) Variable Input 40: 6(float) Constant 1065353216 54: TypeInt 32 0 55: 54(int) Constant 0 56: TypePointer Input 6(float) 61: TypeMatrix 7(fvec4) 4 62: TypePointer Function 61 64: TypePointer Input 8 65(un34): 64(ptr) Variable Input 85: TypeMatrix 14(fvec3) 4 86: TypePointer Input 85 87(um43): 86(ptr) Variable Input 146: TypePointer Input 61 147(um4): 146(ptr) Variable Input 153: TypeVector 6(float) 2 154: TypeMatrix 153(fvec2) 2 155: TypePointer Function 154 157: TypePointer Input 154 158(um2): 157(ptr) Variable Input 161: TypeInt 32 1 162: 161(int) Constant 0 163: TypePointer Function 6(float) 166: 161(int) Constant 1 169: 54(int) Constant 1 177: TypeMatrix 14(fvec3) 3 178: TypePointer Function 177 180: TypePointer Input 177 181(um3): 180(ptr) Variable Input 184: 161(int) Constant 2 210: 54(int) Constant 3 211: TypePointer Output 6(float) 218(colorTransform): 180(ptr) Variable Input 219(m): 146(ptr) Variable Input 220(n): 146(ptr) Variable Input 4(main): 2 Function None 3 5: Label 10(m34): 9(ptr) Variable Function 63(m44): 62(ptr) Variable Function 156(inv): 155(ptr) Variable Function 179(inv3): 178(ptr) Variable Function 190(inv4): 62(ptr) Variable Function 13: 7(fvec4) Load 12(v) 17: 14(fvec3) Load 16(u) 18: 8 OuterProduct 13 17 Store 10(m34) 18 25: 8 Load 10(m34) 26: 7(fvec4) CompositeExtract 25 0 27: 7(fvec4) CompositeExtract 24 0 28: 7(fvec4) FAdd 26 27 29: 7(fvec4) CompositeExtract 25 1 30: 7(fvec4) CompositeExtract 24 1 31: 7(fvec4) FAdd 29 30 32: 7(fvec4) CompositeExtract 25 2 33: 7(fvec4) CompositeExtract 24 2 34: 7(fvec4) FAdd 32 33 35: 8 CompositeConstruct 28 31 34 Store 10(m34) 35 39: 14(fvec3) Load 38(Color) 41: 6(float) CompositeExtract 39 0 42: 6(float) CompositeExtract 39 1 43: 6(float) CompositeExtract 39 2 44: 7(fvec4) CompositeConstruct 41 42 43 40 Store 37(FragColor) 44 45: 7(fvec4) Load 37(FragColor) 46: 8 Load 10(m34) 47: 14(fvec3) VectorTimesMatrix 45 46 48: 6(float) CompositeExtract 47 0 49: 6(float) CompositeExtract 47 1 50: 6(float) CompositeExtract 47 2 51: 7(fvec4) CompositeConstruct 48 49 50 40 52: 7(fvec4) Load 37(FragColor) 53: 7(fvec4) FMul 52 51 Store 37(FragColor) 53 57: 56(ptr) AccessChain 12(v) 55 58: 6(float) Load 57 59: 8 Load 10(m34) 60: 8 MatrixTimesScalar 59 58 Store 10(m34) 60 66: 8 Load 65(un34) 67: 6(float) CompositeExtract 66 0 0 68: 6(float) CompositeExtract 66 0 1 69: 6(float) CompositeExtract 66 0 2 70: 6(float) CompositeExtract 66 0 3 71: 6(float) CompositeExtract 66 1 0 72: 6(float) CompositeExtract 66 1 1 73: 6(float) CompositeExtract 66 1 2 74: 6(float) CompositeExtract 66 1 3 75: 6(float) CompositeExtract 66 2 0 76: 6(float) CompositeExtract 66 2 1 77: 6(float) CompositeExtract 66 2 2 78: 6(float) CompositeExtract 66 2 3 79: 7(fvec4) CompositeConstruct 67 68 69 70 80: 7(fvec4) CompositeConstruct 71 72 73 74 81: 7(fvec4) CompositeConstruct 75 76 77 78 82: 7(fvec4) CompositeConstruct 20 20 20 40 83: 61 CompositeConstruct 79 80 81 82 Store 63(m44) 83 84: 8 Load 10(m34) 88: 85 Load 87(um43) 89: 61 MatrixTimesMatrix 84 88 90: 61 Load 63(m44) 91: 7(fvec4) CompositeExtract 90 0 92: 7(fvec4) CompositeExtract 89 0 93: 7(fvec4) FAdd 91 92 94: 7(fvec4) CompositeExtract 90 1 95: 7(fvec4) CompositeExtract 89 1 96: 7(fvec4) FAdd 94 95 97: 7(fvec4) CompositeExtract 90 2 98: 7(fvec4) CompositeExtract 89 2 99: 7(fvec4) FAdd 97 98 100: 7(fvec4) CompositeExtract 90 3 101: 7(fvec4) CompositeExtract 89 3 102: 7(fvec4) FAdd 100 101 103: 61 CompositeConstruct 93 96 99 102 Store 63(m44) 103 104: 61 Load 63(m44) 105: 7(fvec4) CompositeExtract 104 0 106: 7(fvec4) FNegate 105 107: 7(fvec4) CompositeExtract 104 1 108: 7(fvec4) FNegate 107 109: 7(fvec4) CompositeExtract 104 2 110: 7(fvec4) FNegate 109 111: 7(fvec4) CompositeExtract 104 3 112: 7(fvec4) FNegate 111 113: 61 CompositeConstruct 106 108 110 112 114: 7(fvec4) Load 12(v) 115: 7(fvec4) MatrixTimesVector 113 114 116: 7(fvec4) Load 37(FragColor) 117: 7(fvec4) FAdd 116 115 Store 37(FragColor) 117 118: 61 Load 63(m44) 119: 61 Load 63(m44) 120: 7(fvec4) CompositeExtract 118 0 121: 7(fvec4) CompositeExtract 119 0 122: 7(fvec4) FMul 120 121 123: 7(fvec4) CompositeExtract 118 1 124: 7(fvec4) CompositeExtract 119 1 125: 7(fvec4) FMul 123 124 126: 7(fvec4) CompositeExtract 118 2 127: 7(fvec4) CompositeExtract 119 2 128: 7(fvec4) FMul 126 127 129: 7(fvec4) CompositeExtract 118 3 130: 7(fvec4) CompositeExtract 119 3 131: 7(fvec4) FMul 129 130 132: 61 CompositeConstruct 122 125 128 131 133: 7(fvec4) Load 37(FragColor) 134: 7(fvec4) VectorTimesMatrix 133 132 Store 37(FragColor) 134 135: 85 Load 87(um43) 136: 8 Transpose 135 Store 10(m34) 136 137: 7(fvec4) Load 37(FragColor) 138: 8 Load 10(m34) 139: 14(fvec3) VectorTimesMatrix 137 138 140: 6(float) CompositeExtract 139 0 141: 6(float) CompositeExtract 139 1 142: 6(float) CompositeExtract 139 2 143: 7(fvec4) CompositeConstruct 140 141 142 40 144: 7(fvec4) Load 37(FragColor) 145: 7(fvec4) FMul 144 143 Store 37(FragColor) 145 148: 61 Load 147(um4) 149: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 148 150: 7(fvec4) CompositeConstruct 149 149 149 149 151: 7(fvec4) Load 37(FragColor) 152: 7(fvec4) FMul 151 150 Store 37(FragColor) 152 159: 154 Load 158(um2) 160: 154 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 159 Store 156(inv) 160 164: 163(ptr) AccessChain 156(inv) 162 55 165: 6(float) Load 164 167: 163(ptr) AccessChain 156(inv) 166 55 168: 6(float) Load 167 170: 163(ptr) AccessChain 156(inv) 162 169 171: 6(float) Load 170 172: 163(ptr) AccessChain 156(inv) 166 169 173: 6(float) Load 172 174: 7(fvec4) CompositeConstruct 165 168 171 173 175: 7(fvec4) Load 37(FragColor) 176: 7(fvec4) FMul 175 174 Store 37(FragColor) 176 182: 177 Load 181(um3) 183: 177 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 182 Store 179(inv3) 183 185: 163(ptr) AccessChain 179(inv3) 184 169 186: 6(float) Load 185 187: 7(fvec4) CompositeConstruct 186 186 186 186 188: 7(fvec4) Load 37(FragColor) 189: 7(fvec4) FMul 188 187 Store 37(FragColor) 189 191: 61 Load 147(um4) 192: 61 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 191 Store 190(inv4) 192 193: 61 Load 190(inv4) 194: 7(fvec4) Load 37(FragColor) 195: 7(fvec4) VectorTimesMatrix 194 193 Store 37(FragColor) 195 196: 7(fvec4) Load 37(FragColor) 197: 8 Load 65(un34) 198: 8 Load 65(un34) 199: 7(fvec4) CompositeExtract 197 0 200: 7(fvec4) CompositeExtract 198 0 201: 7(fvec4) FMul 199 200 202: 7(fvec4) CompositeExtract 197 1 203: 7(fvec4) CompositeExtract 198 1 204: 7(fvec4) FMul 202 203 205: 7(fvec4) CompositeExtract 197 2 206: 7(fvec4) CompositeExtract 198 2 207: 7(fvec4) FMul 205 206 208: 8 CompositeConstruct 201 204 207 209: 14(fvec3) VectorTimesMatrix 196 208 212: 211(ptr) AccessChain 37(FragColor) 210 213: 6(float) Load 212 214: 6(float) CompositeExtract 209 0 215: 6(float) CompositeExtract 209 1 216: 6(float) CompositeExtract 209 2 217: 7(fvec4) CompositeConstruct 214 215 216 213 Store 37(FragColor) 217 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.maximalReconvergence.vert.out000066400000000000000000000017051506534232700251270ustar00rootroot00000000000000spv.maximalReconvergence.vert WARNING: 0:5: '' : attribute with arguments not recognized, skipping // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 6 Capability Shader Extension "SPV_KHR_maximal_reconvergence" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" ExecutionMode 4 MaximallyReconverges Source GLSL 460 SourceExtension "GL_EXT_maximal_reconvergence" Name 4 "main" 2: TypeVoid 3: TypeFunction 2 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.memoryQualifier.frag.out000066400000000000000000000230031506534232700240750ustar00rootroot00000000000000spv.memoryQualifier.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 105 Capability Shader Capability ImageRect Capability Image1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "texel" Name 12 "i1D" Name 19 "i2D" Name 28 "i2DRect" Name 35 "i3D" Name 44 "iCube" Name 49 "Data" MemberName 49(Data) 0 "f1" MemberName 49(Data) 1 "f2" Name 50 "Buffer" MemberName 50(Buffer) 0 "f1" MemberName 50(Buffer) 1 "f2" MemberName 50(Buffer) 2 "f3" MemberName 50(Buffer) 3 "f4" MemberName 50(Buffer) 4 "i1" MemberName 50(Buffer) 5 "data" Name 52 "" Decorate 12(i1D) Coherent Decorate 12(i1D) Binding 0 Decorate 12(i1D) DescriptorSet 0 Decorate 19(i2D) Volatile Decorate 19(i2D) Coherent Decorate 19(i2D) Binding 1 Decorate 19(i2D) DescriptorSet 0 Decorate 28(i2DRect) Restrict Decorate 28(i2DRect) Binding 2 Decorate 28(i2DRect) DescriptorSet 0 Decorate 35(i3D) NonWritable Decorate 35(i3D) Binding 3 Decorate 35(i3D) DescriptorSet 0 Decorate 44(iCube) NonReadable Decorate 44(iCube) Binding 3 Decorate 44(iCube) DescriptorSet 0 MemberDecorate 49(Data) 0 Offset 0 MemberDecorate 49(Data) 1 Offset 8 Decorate 50(Buffer) BufferBlock MemberDecorate 50(Buffer) 0 Volatile MemberDecorate 50(Buffer) 0 Coherent MemberDecorate 50(Buffer) 0 Offset 0 MemberDecorate 50(Buffer) 1 Restrict MemberDecorate 50(Buffer) 1 Coherent MemberDecorate 50(Buffer) 1 Offset 8 MemberDecorate 50(Buffer) 2 Coherent MemberDecorate 50(Buffer) 2 NonWritable MemberDecorate 50(Buffer) 2 Offset 16 MemberDecorate 50(Buffer) 3 Coherent MemberDecorate 50(Buffer) 3 NonReadable MemberDecorate 50(Buffer) 3 Offset 32 MemberDecorate 50(Buffer) 4 Coherent MemberDecorate 50(Buffer) 4 Offset 48 MemberDecorate 50(Buffer) 5 Coherent MemberDecorate 50(Buffer) 5 Offset 56 Decorate 52 Coherent Decorate 52 Binding 4 Decorate 52 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypeImage 6(float) 1D nonsampled format:R32f 11: TypePointer UniformConstant 10 12(i1D): 11(ptr) Variable UniformConstant 14: TypeInt 32 1 15: 14(int) Constant 1 17: TypeImage 6(float) 2D nonsampled format:R32f 18: TypePointer UniformConstant 17 19(i2D): 18(ptr) Variable UniformConstant 21: TypeVector 14(int) 2 22: 21(ivec2) ConstantComposite 15 15 26: TypeImage 6(float) Rect nonsampled format:R32f 27: TypePointer UniformConstant 26 28(i2DRect): 27(ptr) Variable UniformConstant 33: TypeImage 6(float) 3D nonsampled format:R32f 34: TypePointer UniformConstant 33 35(i3D): 34(ptr) Variable UniformConstant 37: TypeVector 14(int) 3 38: 37(ivec3) ConstantComposite 15 15 15 42: TypeImage 6(float) Cube nonsampled format:R32f 43: TypePointer UniformConstant 42 44(iCube): 43(ptr) Variable UniformConstant 47: TypeVector 6(float) 2 48: TypeVector 6(float) 3 49(Data): TypeStruct 6(float) 47(fvec2) 50(Buffer): TypeStruct 6(float) 47(fvec2) 48(fvec3) 7(fvec4) 14(int) 49(Data) 51: TypePointer Uniform 50(Buffer) 52: 51(ptr) Variable Uniform 53: 14(int) Constant 4 54: TypePointer Uniform 14(int) 57: 14(int) Constant 0 58: TypePointer Uniform 6(float) 61: TypePointer Function 6(float) 63: TypePointer Uniform 47(fvec2) 69: TypeInt 32 0 70: 69(int) Constant 0 73: 69(int) Constant 1 76: 14(int) Constant 2 77: TypePointer Uniform 48(fvec3) 87: 69(int) Constant 2 90: 14(int) Constant 5 96: 69(int) Constant 3 101: 14(int) Constant 3 103: TypePointer Uniform 7(fvec4) 4(main): 2 Function None 3 5: Label 9(texel): 8(ptr) Variable Function 13: 10 Load 12(i1D) 16: 7(fvec4) ImageRead 13 15 Store 9(texel) 16 20: 17 Load 19(i2D) 23: 7(fvec4) ImageRead 20 22 24: 7(fvec4) Load 9(texel) 25: 7(fvec4) FAdd 24 23 Store 9(texel) 25 29: 26 Load 28(i2DRect) 30: 7(fvec4) ImageRead 29 22 31: 7(fvec4) Load 9(texel) 32: 7(fvec4) FAdd 31 30 Store 9(texel) 32 36: 33 Load 35(i3D) 39: 7(fvec4) ImageRead 36 38 40: 7(fvec4) Load 9(texel) 41: 7(fvec4) FAdd 40 39 Store 9(texel) 41 45: 42 Load 44(iCube) 46: 7(fvec4) Load 9(texel) ImageWrite 45 38 46 55: 54(ptr) AccessChain 52 53 56: 14(int) Load 55 59: 58(ptr) AccessChain 52 57 60: 6(float) Load 59 62: 61(ptr) AccessChain 9(texel) 56 Store 62 60 64: 63(ptr) AccessChain 52 15 65: 47(fvec2) Load 64 66: 7(fvec4) Load 9(texel) 67: 47(fvec2) VectorShuffle 66 66 0 1 68: 47(fvec2) FAdd 67 65 71: 61(ptr) AccessChain 9(texel) 70 72: 6(float) CompositeExtract 68 0 Store 71 72 74: 61(ptr) AccessChain 9(texel) 73 75: 6(float) CompositeExtract 68 1 Store 74 75 78: 77(ptr) AccessChain 52 76 79: 48(fvec3) Load 78 80: 7(fvec4) Load 9(texel) 81: 48(fvec3) VectorShuffle 80 80 0 1 2 82: 48(fvec3) FSub 81 79 83: 61(ptr) AccessChain 9(texel) 70 84: 6(float) CompositeExtract 82 0 Store 83 84 85: 61(ptr) AccessChain 9(texel) 73 86: 6(float) CompositeExtract 82 1 Store 85 86 88: 61(ptr) AccessChain 9(texel) 87 89: 6(float) CompositeExtract 82 2 Store 88 89 91: 58(ptr) AccessChain 52 90 57 92: 6(float) Load 91 93: 58(ptr) AccessChain 52 90 15 73 94: 6(float) Load 93 95: 6(float) FAdd 92 94 97: 61(ptr) AccessChain 9(texel) 96 98: 6(float) Load 97 99: 6(float) FAdd 98 95 100: 61(ptr) AccessChain 9(texel) 96 Store 100 99 102: 7(fvec4) Load 9(texel) 104: 103(ptr) AccessChain 52 101 Store 104 102 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.memoryScopeSemantics.comp.out000066400000000000000000000545771506534232700251370ustar00rootroot00000000000000spv.memoryScopeSemantics.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 245 Capability Shader Capability Int64 Capability Int64Atomics Capability StorageImageMultisample Capability VulkanMemoryModelKHR Capability VulkanMemoryModelDeviceScopeKHR Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 8 "origi" Name 10 "atomi" Name 21 "origu" Name 23 "atomu" Name 24 "value" Name 36 "imagei" Name 46 "imageu" Name 66 "BufferU" MemberName 66(BufferU) 0 "x" Name 68 "bufferu" Name 73 "y" Name 78 "BufferI" MemberName 78(BufferI) 0 "x" Name 80 "bufferi" Name 84 "A" MemberName 84(A) 0 "x" Name 85 "BufferJ" MemberName 85(BufferJ) 0 "a" Name 88 "bufferj" Name 99 "BufferK" MemberName 99(BufferK) 0 "x" Name 101 "bufferk" Name 111 "imagej" Name 123 "samp" Name 134 "atomu64" Name 139 "atomi64" Name 144 "BufferL" MemberName 144(BufferL) 0 "x" Name 146 "bufferl" Name 151 "BufferM" MemberName 151(BufferM) 0 "x" Name 153 "bufferm" Name 165 "imageMS" Decorate 36(imagei) Binding 1 Decorate 36(imagei) DescriptorSet 0 Decorate 46(imageu) Binding 0 Decorate 46(imageu) DescriptorSet 0 Decorate 66(BufferU) Block MemberDecorate 66(BufferU) 0 Offset 0 Decorate 68(bufferu) Binding 2 Decorate 68(bufferu) DescriptorSet 0 Decorate 78(BufferI) Block MemberDecorate 78(BufferI) 0 Offset 0 Decorate 80(bufferi) Binding 3 Decorate 80(bufferi) DescriptorSet 0 Decorate 83 ArrayStride 4 MemberDecorate 84(A) 0 Offset 0 Decorate 85(BufferJ) Block MemberDecorate 85(BufferJ) 0 Offset 0 Decorate 88(bufferj) Binding 4 Decorate 88(bufferj) DescriptorSet 0 Decorate 99(BufferK) Block MemberDecorate 99(BufferK) 0 Offset 0 Decorate 101(bufferk) Binding 7 Decorate 101(bufferk) DescriptorSet 0 Decorate 111(imagej) Binding 5 Decorate 111(imagej) DescriptorSet 0 Decorate 123(samp) Binding 6 Decorate 123(samp) DescriptorSet 0 Decorate 144(BufferL) Block MemberDecorate 144(BufferL) 0 Offset 0 Decorate 146(bufferl) Binding 8 Decorate 146(bufferl) DescriptorSet 0 Decorate 151(BufferM) Block MemberDecorate 151(BufferM) 0 Offset 0 Decorate 153(bufferm) Binding 9 Decorate 153(bufferm) DescriptorSet 0 Decorate 165(imageMS) Binding 10 Decorate 165(imageMS) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypePointer Workgroup 6(int) 10(atomi): 9(ptr) Variable Workgroup 11: 6(int) Constant 3 12: 6(int) Constant 1 13: 6(int) Constant 320 14: 6(int) Constant 4 15: TypeInt 32 0 16: 15(int) Constant 5 17: 15(int) Constant 0 18: 15(int) Constant 324 20: TypePointer Function 15(int) 22: TypePointer Workgroup 15(int) 23(atomu): 22(ptr) Variable Workgroup 24(value): 22(ptr) Variable Workgroup 26: 15(int) Constant 2 28: 6(int) Constant 64 29: 6(int) Constant 2 30: 15(int) Constant 66 33: 15(int) Constant 68 34: TypeImage 6(int) 2D nonsampled format:R32i 35: TypePointer UniformConstant 34 36(imagei): 35(ptr) Variable UniformConstant 37: TypeVector 6(int) 2 38: 6(int) Constant 0 39: 37(ivec2) ConstantComposite 38 38 40: TypePointer Image 6(int) 42: 15(int) Constant 32768 44: TypeImage 15(int) 2D nonsampled format:R32ui 45: TypePointer UniformConstant 44 46(imageu): 45(ptr) Variable UniformConstant 47: 15(int) Constant 3 48: TypePointer Image 15(int) 51: 15(int) Constant 4 53: 15(int) Constant 7 58: 6(int) Constant 7 62: 15(int) Constant 10 64: 15(int) Constant 322 66(BufferU): TypeStruct 15(int) 67: TypePointer StorageBuffer 66(BufferU) 68(bufferu): 67(ptr) Variable StorageBuffer 69: TypePointer StorageBuffer 15(int) 71: 15(int) Constant 1 78(BufferI): TypeStruct 15(int) 79: TypePointer StorageBuffer 78(BufferI) 80(bufferi): 79(ptr) Variable StorageBuffer 83: TypeArray 15(int) 26 84(A): TypeStruct 83 85(BufferJ): TypeStruct 84(A) 86: TypeArray 85(BufferJ) 26 87: TypePointer StorageBuffer 86 88(bufferj): 87(ptr) Variable StorageBuffer 95: TypePointer StorageBuffer 84(A) 99(BufferK): TypeStruct 15(int) 100: TypePointer Uniform 99(BufferK) 101(bufferk): 100(ptr) Variable Uniform 102: TypePointer Uniform 15(int) 107: TypeVector 6(int) 4 109: TypeArray 34 26 110: TypePointer UniformConstant 109 111(imagej): 110(ptr) Variable UniformConstant 117: 107(ivec4) ConstantComposite 38 38 38 38 118: TypeFloat 32 119: TypeImage 118(float) 2D sampled format:Unknown 120: TypeSampledImage 119 121: TypeArray 120 26 122: TypePointer UniformConstant 121 123(samp): 122(ptr) Variable UniformConstant 124: TypePointer UniformConstant 120 127: TypeVector 118(float) 2 128: 118(float) Constant 0 129: 127(fvec2) ConstantComposite 128 128 130: TypeVector 118(float) 4 132: TypeInt 64 0 133: TypePointer Workgroup 132(int64_t) 134(atomu64): 133(ptr) Variable Workgroup 135:132(int64_t) Constant 7 0 137: TypeInt 64 1 138: TypePointer Workgroup 137(int64_t) 139(atomi64): 138(ptr) Variable Workgroup 140:137(int64_t) Constant 10 0 144(BufferL): TypeStruct 15(int) 145: TypePointer StorageBuffer 144(BufferL) 146(bufferl): 145(ptr) Variable StorageBuffer 151(BufferM): TypeStruct 15(int) 152: TypePointer StorageBuffer 151(BufferM) 153(bufferm): 152(ptr) Variable StorageBuffer 161: 6(int) Constant 32768 163: TypeImage 6(int) 2D multi-sampled nonsampled format:R32i 164: TypePointer UniformConstant 163 165(imageMS): 164(ptr) Variable UniformConstant 167: 6(int) Constant 4294967289 169: 6(int) Constant 8 170: 15(int) Constant 72 171: 15(int) Constant 328 172: 6(int) Constant 16386 173: 15(int) Constant 16450 174: 6(int) Constant 8196 175: 15(int) Constant 8260 176: 6(int) Constant 24584 177: 15(int) Constant 24904 182: 6(int) Constant 32770 183: 15(int) Constant 32834 186: 6(int) Constant 49154 187: 15(int) Constant 49474 189: 6(int) Constant 32772 190: 15(int) Constant 32836 191: 6(int) Constant 40964 192: 15(int) Constant 41284 200: 6(int) Constant 32776 201: 15(int) Constant 32840 205: 15(int) Constant 24648 208: 6(int) Constant 57352 209: 15(int) Constant 57672 211: 15(int) Constant 20 235: 6(int) Constant 16392 236: 15(int) Constant 16456 238: 6(int) Constant 8200 239: 15(int) Constant 8264 4(main): 2 Function None 3 5: Label 8(origi): 7(ptr) Variable Function 21(origu): 20(ptr) Variable Function 73(y): 20(ptr) Variable Function 19: 6(int) AtomicIAdd 10(atomi) 12 18 11 Store 8(origi) 19 25: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 27: 15(int) AtomicAnd 23(atomu) 16 17 25 Store 21(origu) 27 31: 6(int) AtomicLoad 10(atomi) 12 30 Store 8(origi) 31 32: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 AtomicStore 23(atomu) 12 33 32 41: 40(ptr) ImageTexelPointer 36(imagei) 39 17 43: 6(int) AtomicLoad 41 12 30 Store 8(origi) 43 49: 48(ptr) ImageTexelPointer 46(imageu) 39 17 50: 15(int) AtomicIAdd 49 12 30 47 Store 21(origu) 50 52: 48(ptr) ImageTexelPointer 46(imageu) 39 17 AtomicStore 52 12 33 51 54: 15(int) AtomicOr 23(atomu) 12 17 53 Store 21(origu) 54 55: 15(int) AtomicXor 23(atomu) 12 17 53 Store 21(origu) 55 56: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 57: 15(int) AtomicUMin 23(atomu) 12 17 56 Store 21(origu) 57 59: 6(int) AtomicSMax 10(atomi) 12 17 58 Store 8(origi) 59 60: 6(int) Load 8(origi) 61: 6(int) AtomicExchange 10(atomi) 12 17 60 Store 8(origi) 61 63: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 65: 15(int) AtomicCompareExchange 23(atomu) 12 64 64 63 62 Store 21(origu) 65 70: 69(ptr) AccessChain 68(bufferu) 38 72: 15(int) AtomicIAdd 70 12 18 71 74: 69(ptr) AccessChain 68(bufferu) 38 75: 15(int) Load 74 MakePointerVisibleKHR NonPrivatePointerKHR 26 Store 73(y) 75 76: 15(int) Load 73(y) 77: 69(ptr) AccessChain 68(bufferu) 38 Store 77 76 MakePointerAvailableKHR NonPrivatePointerKHR 26 81: 69(ptr) AccessChain 80(bufferi) 38 82: 15(int) Load 81 MakePointerVisibleKHR NonPrivatePointerKHR 16 Store 73(y) 82 89: 69(ptr) AccessChain 88(bufferj) 38 38 38 12 90: 15(int) Load 89 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 Store 73(y) 90 91: 15(int) Load 73(y) 92: 69(ptr) AccessChain 80(bufferi) 38 Store 92 91 MakePointerAvailableKHR NonPrivatePointerKHR 16 93: 15(int) Load 73(y) 94: 69(ptr) AccessChain 88(bufferj) 38 38 38 12 Store 94 93 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16 96: 95(ptr) AccessChain 88(bufferj) 12 38 97: 84(A) Load 96 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 98: 95(ptr) AccessChain 88(bufferj) 38 38 Store 98 97 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16 103: 102(ptr) AccessChain 101(bufferk) 38 104: 15(int) Load 103 NonPrivatePointerKHR 105: 69(ptr) AccessChain 80(bufferi) 38 Store 105 104 MakePointerAvailableKHR NonPrivatePointerKHR 16 106: 34 Load 36(imagei) 108: 107(ivec4) ImageRead 106 39 MakeTexelVisibleKHR NonPrivateTexelKHR VolatileTexelKHR 16 112: 35(ptr) AccessChain 111(imagej) 38 113: 34 Load 112 114: 107(ivec4) ImageRead 113 39 NonPrivateTexelKHR 115: 35(ptr) AccessChain 111(imagej) 12 116: 34 Load 115 ImageWrite 116 39 117 NonPrivateTexelKHR 125: 124(ptr) AccessChain 123(samp) 38 126: 120 Load 125 131: 130(fvec4) ImageSampleExplicitLod 126 129 Lod NonPrivateTexelKHR 128 136:132(int64_t) AtomicUMax 134(atomu64) 12 17 135 Store 134(atomu64) 136 MakePointerAvailableKHR NonPrivatePointerKHR 26 141:132(int64_t) Load 134(atomu64) MakePointerVisibleKHR NonPrivatePointerKHR 26 142:137(int64_t) Bitcast 141 143:137(int64_t) AtomicCompareExchange 139(atomi64) 12 64 64 142 140 147: 69(ptr) AccessChain 146(bufferl) 38 148: 15(int) Load 147 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 Store 73(y) 148 149: 69(ptr) AccessChain 146(bufferl) 38 150: 15(int) AtomicIAdd 149 16 42 71 154: 69(ptr) AccessChain 153(bufferm) 38 155: 15(int) AtomicOr 154 16 42 26 156: 40(ptr) ImageTexelPointer 36(imagei) 39 17 157: 6(int) AtomicIAdd 156 16 42 11 158: 69(ptr) AccessChain 68(bufferu) 38 159: 15(int) AtomicIAdd 158 12 17 51 160: 69(ptr) AccessChain 68(bufferu) 38 162: 15(int) AtomicIAdd 160 12 42 16 166: 40(ptr) ImageTexelPointer 165(imageMS) 39 12 AtomicStore 166 12 33 14 168: 40(ptr) ImageTexelPointer 36(imagei) 39 17 AtomicStore 168 12 33 167 ControlBarrier 26 26 17 ControlBarrier 26 26 30 ControlBarrier 26 26 33 ControlBarrier 26 26 170 ControlBarrier 26 26 171 ControlBarrier 26 26 173 ControlBarrier 26 26 175 ControlBarrier 26 26 177 MemoryBarrier 26 30 MemoryBarrier 26 33 MemoryBarrier 26 170 MemoryBarrier 26 171 MemoryBarrier 26 173 MemoryBarrier 26 175 MemoryBarrier 26 177 178: 15(int) AtomicLoad 23(atomu) 12 17 Store 21(origu) 178 179: 15(int) AtomicLoad 23(atomu) 12 42 Store 21(origu) 179 180: 15(int) AtomicLoad 23(atomu) 12 30 Store 21(origu) 180 181: 15(int) AtomicLoad 23(atomu) 12 64 Store 21(origu) 181 184: 15(int) AtomicLoad 23(atomu) 12 183 Store 21(origu) 184 185: 15(int) AtomicLoad 23(atomu) 12 173 Store 21(origu) 185 188: 15(int) AtomicLoad 23(atomu) 12 187 Store 21(origu) 188 AtomicStore 23(atomu) 12 17 62 AtomicStore 23(atomu) 12 42 62 AtomicStore 23(atomu) 12 33 62 AtomicStore 23(atomu) 12 18 62 AtomicStore 23(atomu) 12 190 62 AtomicStore 23(atomu) 12 175 62 AtomicStore 23(atomu) 12 192 62 193: 15(int) AtomicAnd 23(atomu) 12 17 62 Store 21(origu) 193 194: 15(int) AtomicAnd 23(atomu) 12 42 62 Store 21(origu) 194 195: 15(int) AtomicAnd 23(atomu) 12 30 62 Store 21(origu) 195 196: 15(int) AtomicAnd 23(atomu) 12 33 62 Store 21(origu) 196 197: 15(int) AtomicAnd 23(atomu) 12 170 62 Store 21(origu) 197 198: 15(int) AtomicAnd 23(atomu) 12 183 62 Store 21(origu) 198 199: 15(int) AtomicAnd 23(atomu) 12 190 62 Store 21(origu) 199 202: 15(int) AtomicAnd 23(atomu) 12 201 62 Store 21(origu) 202 203: 15(int) AtomicAnd 23(atomu) 12 173 62 Store 21(origu) 203 204: 15(int) AtomicAnd 23(atomu) 12 175 62 Store 21(origu) 204 206: 15(int) AtomicAnd 23(atomu) 12 205 62 Store 21(origu) 206 207: 15(int) AtomicAnd 23(atomu) 12 177 62 Store 21(origu) 207 210: 15(int) AtomicAnd 23(atomu) 12 209 62 Store 21(origu) 210 212: 15(int) AtomicCompareExchange 23(atomu) 12 17 17 211 62 213: 15(int) AtomicCompareExchange 23(atomu) 12 42 42 211 62 214: 15(int) AtomicCompareExchange 23(atomu) 12 30 17 211 62 215: 15(int) AtomicCompareExchange 23(atomu) 12 33 17 211 62 216: 15(int) AtomicCompareExchange 23(atomu) 12 170 17 211 62 217: 15(int) AtomicCompareExchange 23(atomu) 12 183 42 211 62 218: 15(int) AtomicCompareExchange 23(atomu) 12 190 42 211 62 219: 15(int) AtomicCompareExchange 23(atomu) 12 201 42 211 62 220: 15(int) AtomicCompareExchange 23(atomu) 12 173 17 211 62 221: 15(int) AtomicCompareExchange 23(atomu) 12 175 17 211 62 222: 15(int) AtomicCompareExchange 23(atomu) 12 177 17 211 62 223: 15(int) AtomicCompareExchange 23(atomu) 12 209 42 211 62 224: 15(int) AtomicCompareExchange 23(atomu) 12 30 30 211 62 225: 15(int) AtomicCompareExchange 23(atomu) 12 183 183 211 62 226: 15(int) AtomicCompareExchange 23(atomu) 12 64 30 211 62 227: 15(int) AtomicCompareExchange 23(atomu) 12 64 64 211 62 228: 15(int) AtomicCompareExchange 23(atomu) 12 173 30 211 62 229: 15(int) AtomicCompareExchange 23(atomu) 12 173 173 211 62 230: 15(int) AtomicCompareExchange 23(atomu) 12 187 187 211 62 231: 15(int) AtomicCompareExchange 23(atomu) 12 170 30 211 62 232: 15(int) AtomicCompareExchange 23(atomu) 12 201 183 211 62 233: 15(int) AtomicCompareExchange 23(atomu) 12 171 30 211 62 234: 15(int) AtomicCompareExchange 23(atomu) 12 171 64 211 62 237: 15(int) AtomicCompareExchange 23(atomu) 12 236 30 211 62 240: 15(int) AtomicCompareExchange 23(atomu) 12 239 30 211 62 241: 15(int) AtomicCompareExchange 23(atomu) 12 205 30 211 62 242: 15(int) AtomicCompareExchange 23(atomu) 12 236 173 211 62 243: 15(int) AtomicCompareExchange 23(atomu) 12 205 173 211 62 244: 15(int) AtomicCompareExchange 23(atomu) 12 209 187 211 62 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.memoryScopeSemantics_Error.comp.out000066400000000000000000000135251506534232700262740ustar00rootroot00000000000000spv.memoryScopeSemantics_Error.comp ERROR: 0:13: 'atomicStore' : gl_SemanticsAcquire must not be used with (image) atomic store ERROR: 0:14: 'imageAtomicStore' : gl_SemanticsAcquire must not be used with (image) atomic store ERROR: 0:17: 'atomicLoad' : gl_SemanticsRelease must not be used with (image) atomic load ERROR: 0:18: 'imageAtomicLoad' : gl_SemanticsRelease must not be used with (image) atomic load ERROR: 0:21: 'atomicStore' : gl_SemanticsAcquireRelease must not be used with (image) atomic load/store ERROR: 0:22: 'imageAtomicStore' : gl_SemanticsAcquireRelease must not be used with (image) atomic load/store ERROR: 0:23: 'atomicLoad' : gl_SemanticsAcquireRelease must not be used with (image) atomic load/store ERROR: 0:24: 'imageAtomicLoad' : gl_SemanticsAcquireRelease must not be used with (image) atomic load/store ERROR: 0:27: 'memoryBarrier' : Semantics must include exactly one of gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used with memoryBarrier ERROR: 0:30: 'atomicCompSwap' : Invalid semantics value ERROR: 0:31: 'atomicCompSwap' : Invalid semantics value ERROR: 0:32: 'atomicCompSwap' : Invalid semantics value ERROR: 0:33: 'atomicCompSwap' : Invalid semantics value ERROR: 0:36: 'atomicCompSwap' : Invalid storage class semantics value ERROR: 0:37: 'atomicCompSwap' : Invalid storage class semantics value ERROR: 0:40: 'atomicCompSwap' : Semantics must not include multiple of gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease ERROR: 0:41: 'atomicCompSwap' : Semantics must not include multiple of gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease ERROR: 0:44: 'atomicCompSwap' : Storage class semantics must not be zero when used with gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease ERROR: 0:45: 'atomicCompSwap' : Storage class semantics must not be zero when used with gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease ERROR: 0:48: 'atomicCompSwap' : Semantics must be gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used with non-zero storage class semantics ERROR: 0:49: 'atomicCompSwap' : Semantics must be gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used with non-zero storage class semantics ERROR: 0:50: 'atomicCompSwap' : Semantics must be gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used with non-zero storage class semantics ERROR: 0:51: 'atomicCompSwap' : Semantics must be gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used with non-zero storage class semantics ERROR: 0:52: 'imageAtomicAdd' : Semantics must be gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used with non-zero storage class semantics ERROR: 0:53: 'imageAtomicAdd' : Semantics must be gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used with non-zero storage class semantics ERROR: 0:56: 'atomicCompSwap' : gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:57: 'atomicCompSwap' : gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:58: 'atomicCompSwap' : gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:59: 'atomicCompSwap' : gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:62: 'atomicCompSwap' : gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease ERROR: 0:63: 'atomicCompSwap' : gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease ERROR: 0:64: 'atomicCompSwap' : gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease ERROR: 0:67: 'memoryBarrier' : gl_SemanticsVolatile must not be used with memoryBarrier or controlBarrier ERROR: 0:68: 'controlBarrier' : gl_SemanticsVolatile must not be used with memoryBarrier or controlBarrier ERROR: 0:69: 'controlBarrier' : gl_SemanticsVolatile must not be used with memoryBarrier or controlBarrier ERROR: 0:72: 'atomicCompSwap' : semUnequal must not be gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:73: 'atomicCompSwap' : semUnequal must not be gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:76: 'atomicCompSwap' : semUnequal must not be gl_SemanticsAcquire unless semEqual is gl_SemanticsAcquire or gl_SemanticsAcquireRelease ERROR: 0:76: 'atomicCompSwap' : semStorageUnequal must not include any option that is not present in semStorageEqual ERROR: 0:77: 'atomicCompSwap' : semUnequal must not be gl_SemanticsAcquire unless semEqual is gl_SemanticsAcquire or gl_SemanticsAcquireRelease ERROR: 0:80: 'atomicCompSwap' : semUnequal must not include gl_SemanticsMakeVisible unless semEqual also includes gl_SemanticsMakeVisible ERROR: 0:81: 'atomicCompSwap' : semUnequal must not include gl_SemanticsMakeVisible unless semEqual also includes gl_SemanticsMakeVisible ERROR: 0:84: 'atomicCompSwap' : semStorageUnequal must not include any option that is not present in semStorageEqual ERROR: 0:85: 'atomicCompSwap' : semStorageUnequal must not include any option that is not present in semStorageEqual ERROR: 0:86: 'atomicCompSwap' : semStorageUnequal must not include any option that is not present in semStorageEqual ERROR: 0:89: 'atomicCompSwap' : semEqual and semUnequal must either both include gl_SemanticsVolatile or neither ERROR: 0:90: 'atomicCompSwap' : semEqual and semUnequal must either both include gl_SemanticsVolatile or neither ERROR: 0:91: 'atomicCompSwap' : semEqual and semUnequal must either both include gl_SemanticsVolatile or neither ERROR: 0:92: 'atomicCompSwap' : semEqual and semUnequal must either both include gl_SemanticsVolatile or neither ERROR: 49 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.merge-unreachable.frag.out000066400000000000000000000034231506534232700242750ustar00rootroot00000000000000spv.merge-unreachable.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "v" Decorate 9(v) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Input 7(fvec4) 9(v): 8(ptr) Variable Input 11: 6(float) Constant 1036831949 12: 6(float) Constant 1045220557 13: 6(float) Constant 1050253722 14: 6(float) Constant 1053609165 15: 7(fvec4) ConstantComposite 11 12 13 14 16: TypeBool 17: TypeVector 16(bool) 4 4(main): 2 Function None 3 5: Label 10: 7(fvec4) Load 9(v) 18: 17(bvec4) FOrdEqual 10 15 19: 16(bool) All 18 SelectionMerge 21 None BranchConditional 19 20 23 20: Label Kill 23: Label Return 21: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/spv.meshShaderBuiltins.mesh.out000066400000000000000000000351161506534232700245450ustar00rootroot00000000000000spv.meshShaderBuiltins.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 148 Capability ClipDistance Capability CullDistance Capability DrawParameters Capability ShaderViewportMaskNV Capability MeshShadingNV Extension "SPV_KHR_shader_draw_parameters" Extension "SPV_NV_mesh_shader" Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 11 17 34 88 129 142 146 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source GLSL 460 SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 8 "iid" Name 11 "gl_LocalInvocationID" Name 16 "gid" Name 17 "gl_WorkGroupID" Name 30 "gl_MeshPerVertexNV" MemberName 30(gl_MeshPerVertexNV) 0 "gl_Position" MemberName 30(gl_MeshPerVertexNV) 1 "gl_PointSize" MemberName 30(gl_MeshPerVertexNV) 2 "gl_ClipDistance" MemberName 30(gl_MeshPerVertexNV) 3 "gl_CullDistance" MemberName 30(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV" MemberName 30(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV" MemberName 30(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV" Name 34 "gl_MeshVerticesNV" Name 84 "gl_MeshPerPrimitiveNV" MemberName 84(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID" MemberName 84(gl_MeshPerPrimitiveNV) 1 "gl_Layer" MemberName 84(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex" MemberName 84(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask" MemberName 84(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV" MemberName 84(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV" Name 88 "gl_MeshPrimitivesNV" Name 129 "gl_PrimitiveIndicesNV" Name 142 "gl_DrawID" Name 146 "gl_PrimitiveCountNV" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 30(gl_MeshPerVertexNV) Block MemberDecorate 30(gl_MeshPerVertexNV) 0 BuiltIn Position MemberDecorate 30(gl_MeshPerVertexNV) 1 BuiltIn PointSize MemberDecorate 30(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance MemberDecorate 30(gl_MeshPerVertexNV) 3 BuiltIn CullDistance MemberDecorate 30(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV MemberDecorate 30(gl_MeshPerVertexNV) 4 PerViewNV MemberDecorate 30(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV MemberDecorate 30(gl_MeshPerVertexNV) 5 PerViewNV MemberDecorate 30(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV MemberDecorate 30(gl_MeshPerVertexNV) 6 PerViewNV Decorate 84(gl_MeshPerPrimitiveNV) Block MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 PerViewNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 PerViewNV Decorate 129(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV Decorate 142(gl_DrawID) BuiltIn DrawIndex Decorate 146(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV Decorate 147 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: TypeVector 20(float) 4 22: 6(int) Constant 4 23: TypeArray 20(float) 22 24: 6(int) Constant 3 25: TypeArray 20(float) 24 26: TypeArray 21(fvec4) 22 27: 6(int) Constant 1 28: TypeArray 20(float) 27 29: TypeArray 28 22 30(gl_MeshPerVertexNV): TypeStruct 21(fvec4) 20(float) 23 25 26 29 29 31: 6(int) Constant 81 32: TypeArray 30(gl_MeshPerVertexNV) 31 33: TypePointer Output 32 34(gl_MeshVerticesNV): 33(ptr) Variable Output 36: TypeInt 32 1 37: 36(int) Constant 0 38: 20(float) Constant 1065353216 39: 21(fvec4) ConstantComposite 38 38 38 38 40: TypePointer Output 21(fvec4) 43: 36(int) Constant 1 44: 20(float) Constant 1073741824 45: TypePointer Output 20(float) 48: 36(int) Constant 2 49: 36(int) Constant 3 50: 20(float) Constant 1077936128 53: 20(float) Constant 1082130432 55: 6(int) Constant 264 56: 6(int) Constant 2 81: TypeArray 36(int) 27 82: TypeArray 36(int) 22 83: TypeArray 81 22 84(gl_MeshPerPrimitiveNV): TypeStruct 36(int) 36(int) 36(int) 81 82 83 85: 6(int) Constant 32 86: TypeArray 84(gl_MeshPerPrimitiveNV) 85 87: TypePointer Output 86 88(gl_MeshPrimitivesNV): 87(ptr) Variable Output 90: 36(int) Constant 6 91: TypePointer Output 36(int) 94: 36(int) Constant 7 97: 36(int) Constant 8 100: 36(int) Constant 9 126: 6(int) Constant 96 127: TypeArray 6(int) 126 128: TypePointer Output 127 129(gl_PrimitiveIndicesNV): 128(ptr) Variable Output 130: 6(int) Constant 257 131: TypePointer Output 6(int) 133: 36(int) Constant 95 141: TypePointer Input 36(int) 142(gl_DrawID): 141(ptr) Variable Input 145: 6(int) Constant 16909060 146(gl_PrimitiveCountNV): 131(ptr) Variable Output 147: 9(ivec3) ConstantComposite 85 27 27 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) 41: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 35 37 Store 41 39 42: 6(int) Load 8(iid) 46: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 42 43 Store 46 44 47: 6(int) Load 8(iid) 51: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 47 48 49 Store 51 50 52: 6(int) Load 8(iid) 54: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 52 49 48 Store 54 53 MemoryBarrier 27 55 ControlBarrier 56 56 55 57: 6(int) Load 8(iid) 58: 6(int) IAdd 57 27 59: 6(int) Load 8(iid) 60: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 59 37 61: 21(fvec4) Load 60 62: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 58 37 Store 62 61 63: 6(int) Load 8(iid) 64: 6(int) IAdd 63 27 65: 6(int) Load 8(iid) 66: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 65 43 67: 20(float) Load 66 68: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 64 43 Store 68 67 69: 6(int) Load 8(iid) 70: 6(int) IAdd 69 27 71: 6(int) Load 8(iid) 72: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 71 48 49 73: 20(float) Load 72 74: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 70 48 49 Store 74 73 75: 6(int) Load 8(iid) 76: 6(int) IAdd 75 27 77: 6(int) Load 8(iid) 78: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 77 49 48 79: 20(float) Load 78 80: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 76 49 48 Store 80 79 MemoryBarrier 27 55 ControlBarrier 56 56 55 89: 6(int) Load 8(iid) 92: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 89 37 Store 92 90 93: 6(int) Load 8(iid) 95: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 93 43 Store 95 94 96: 6(int) Load 8(iid) 98: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 96 48 Store 98 97 99: 6(int) Load 8(iid) 101: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 99 49 37 Store 101 100 MemoryBarrier 27 55 ControlBarrier 56 56 55 102: 6(int) Load 8(iid) 103: 6(int) IAdd 102 27 104: 6(int) Load 8(iid) 105: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 104 37 106: 36(int) Load 105 107: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 103 37 Store 107 106 108: 6(int) Load 8(iid) 109: 6(int) IAdd 108 27 110: 6(int) Load 8(iid) 111: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 110 43 112: 36(int) Load 111 113: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 109 43 Store 113 112 114: 6(int) Load 8(iid) 115: 6(int) IAdd 114 27 116: 6(int) Load 8(iid) 117: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 116 48 118: 36(int) Load 117 119: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 115 48 Store 119 118 120: 6(int) Load 8(iid) 121: 6(int) IAdd 120 27 122: 6(int) Load 8(iid) 123: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 122 49 37 124: 36(int) Load 123 125: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 121 49 37 Store 125 124 MemoryBarrier 27 55 ControlBarrier 56 56 55 132: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 37 Store 132 130 134: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 133 Store 134 56 135: 6(int) Load 16(gid) 136: 6(int) Load 16(gid) 137: 6(int) ISub 136 27 138: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 137 139: 6(int) Load 138 140: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 135 Store 140 139 143: 36(int) Load 142(gl_DrawID) 144: 6(int) Bitcast 143 145: 144 WritePackedPrimitiveIndices4x8NV Store 146(gl_PrimitiveCountNV) 126 MemoryBarrier 27 55 ControlBarrier 56 56 55 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out000066400000000000000000000301651506534232700260460ustar00rootroot00000000000000spv.meshShaderPerViewBuiltins.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 126 Capability PerViewAttributesNV Capability MeshShadingNV Extension "SPV_NVX_multiview_per_view_attributes" Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 11 20 21 40 72 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source GLSL 450 SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 8 "iid" Name 11 "gl_LocalInvocationID" Name 16 "viewID" Name 20 "gl_MeshViewIndicesNV" Name 21 "gl_MeshViewCountNV" Name 36 "gl_MeshPerVertexNV" MemberName 36(gl_MeshPerVertexNV) 0 "gl_Position" MemberName 36(gl_MeshPerVertexNV) 1 "gl_PointSize" MemberName 36(gl_MeshPerVertexNV) 2 "gl_ClipDistance" MemberName 36(gl_MeshPerVertexNV) 3 "gl_CullDistance" MemberName 36(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV" MemberName 36(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV" MemberName 36(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV" Name 40 "gl_MeshVerticesNV" Name 68 "gl_MeshPerPrimitiveNV" MemberName 68(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID" MemberName 68(gl_MeshPerPrimitiveNV) 1 "gl_Layer" MemberName 68(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex" MemberName 68(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask" MemberName 68(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV" MemberName 68(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV" Name 72 "gl_MeshPrimitivesNV" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV Decorate 36(gl_MeshPerVertexNV) Block MemberDecorate 36(gl_MeshPerVertexNV) 0 BuiltIn Position MemberDecorate 36(gl_MeshPerVertexNV) 1 BuiltIn PointSize MemberDecorate 36(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance MemberDecorate 36(gl_MeshPerVertexNV) 3 BuiltIn CullDistance MemberDecorate 36(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV MemberDecorate 36(gl_MeshPerVertexNV) 4 PerViewNV MemberDecorate 36(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV MemberDecorate 36(gl_MeshPerVertexNV) 5 PerViewNV MemberDecorate 36(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV MemberDecorate 36(gl_MeshPerVertexNV) 6 PerViewNV Decorate 68(gl_MeshPerPrimitiveNV) Block MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerViewNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerViewNV Decorate 125 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: 6(int) Constant 4 18: TypeArray 6(int) 17 19: TypePointer Input 18 20(gl_MeshViewIndicesNV): 19(ptr) Variable Input 21(gl_MeshViewCountNV): 13(ptr) Variable Input 26: TypeFloat 32 27: TypeVector 26(float) 4 28: 6(int) Constant 1 29: TypeArray 26(float) 28 30: TypeArray 27(fvec4) 17 31: 6(int) Constant 3 32: TypeArray 26(float) 31 33: TypeArray 32 17 34: TypeArray 26(float) 17 35: TypeArray 34 17 36(gl_MeshPerVertexNV): TypeStruct 27(fvec4) 26(float) 29 29 30 33 35 37: 6(int) Constant 81 38: TypeArray 36(gl_MeshPerVertexNV) 37 39: TypePointer Output 38 40(gl_MeshVerticesNV): 39(ptr) Variable Output 42: TypeInt 32 1 43: 42(int) Constant 4 45: 26(float) Constant 1065353216 46: 26(float) Constant 1073741824 47: 26(float) Constant 1077936128 48: 26(float) Constant 1082130432 49: 27(fvec4) ConstantComposite 45 46 47 48 50: TypePointer Output 27(fvec4) 53: 42(int) Constant 5 55: 42(int) Constant 2 56: 26(float) Constant 1084227584 57: TypePointer Output 26(float) 60: 42(int) Constant 6 62: 42(int) Constant 3 63: 26(float) Constant 1086324736 65: TypeArray 42(int) 28 66: TypeArray 42(int) 17 67: TypeArray 65 17 68(gl_MeshPerPrimitiveNV): TypeStruct 42(int) 42(int) 42(int) 65 66 67 69: 6(int) Constant 32 70: TypeArray 68(gl_MeshPerPrimitiveNV) 69 71: TypePointer Output 70 72(gl_MeshPrimitivesNV): 71(ptr) Variable Output 75: 42(int) Constant 7 76: TypePointer Output 42(int) 80: 42(int) Constant 0 81: 42(int) Constant 8 83: 6(int) Constant 264 84: 6(int) Constant 2 125: 9(ivec3) ConstantComposite 69 28 28 4(main): 2 Function None 3 5: Label 8(iid): 7(ptr) Variable Function 16(viewID): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 15: 6(int) Load 14 Store 8(iid) 15 22: 6(int) Load 21(gl_MeshViewCountNV) 23: 6(int) UMod 22 17 24: 13(ptr) AccessChain 20(gl_MeshViewIndicesNV) 23 25: 6(int) Load 24 Store 16(viewID) 25 41: 6(int) Load 8(iid) 44: 6(int) Load 16(viewID) 51: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 41 43 44 Store 51 49 52: 6(int) Load 8(iid) 54: 6(int) Load 16(viewID) 58: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 52 53 54 55 Store 58 56 59: 6(int) Load 8(iid) 61: 6(int) Load 16(viewID) 64: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 59 60 61 62 Store 64 63 73: 6(int) Load 8(iid) 74: 6(int) Load 16(viewID) 77: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 73 43 74 Store 77 75 78: 6(int) Load 8(iid) 79: 6(int) Load 16(viewID) 82: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 78 53 79 80 Store 82 81 MemoryBarrier 28 83 ControlBarrier 84 84 83 85: 6(int) Load 8(iid) 86: 6(int) IAdd 85 28 87: 6(int) Load 16(viewID) 88: 6(int) Load 8(iid) 89: 6(int) Load 16(viewID) 90: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 88 43 89 91: 27(fvec4) Load 90 92: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 86 43 87 Store 92 91 93: 6(int) Load 8(iid) 94: 6(int) IAdd 93 28 95: 6(int) Load 16(viewID) 96: 6(int) Load 8(iid) 97: 6(int) Load 16(viewID) 98: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 96 53 97 55 99: 26(float) Load 98 100: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 94 53 95 55 Store 100 99 101: 6(int) Load 8(iid) 102: 6(int) IAdd 101 28 103: 6(int) Load 16(viewID) 104: 6(int) Load 8(iid) 105: 6(int) Load 16(viewID) 106: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 104 60 105 62 107: 26(float) Load 106 108: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 102 60 103 62 Store 108 107 109: 6(int) Load 8(iid) 110: 6(int) IAdd 109 28 111: 6(int) Load 16(viewID) 112: 6(int) Load 8(iid) 113: 6(int) Load 16(viewID) 114: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 112 43 113 115: 42(int) Load 114 116: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 110 43 111 Store 116 115 117: 6(int) Load 8(iid) 118: 6(int) IAdd 117 28 119: 6(int) Load 16(viewID) 120: 6(int) Load 8(iid) 121: 6(int) Load 16(viewID) 122: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 120 53 121 80 123: 42(int) Load 122 124: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 118 53 119 80 Store 124 123 MemoryBarrier 28 83 ControlBarrier 84 84 83 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out000066400000000000000000000251241506534232700264510ustar00rootroot00000000000000spv.meshShaderPerViewUserDefined.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 108 Capability MeshShadingNV Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 11 20 21 35 67 92 95 96 97 102 105 106 107 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source GLSL 450 SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 8 "iid" Name 11 "gl_LocalInvocationID" Name 16 "viewID" Name 20 "gl_MeshViewIndicesNV" Name 21 "gl_MeshViewCountNV" Name 31 "block" MemberName 31(block) 0 "color1" MemberName 31(block) 1 "color2" MemberName 31(block) 2 "color3" MemberName 31(block) 3 "color4" Name 35 "b" Name 64 "perviewBlock" MemberName 64(perviewBlock) 0 "color5" MemberName 64(perviewBlock) 1 "color6" MemberName 64(perviewBlock) 2 "color7" MemberName 64(perviewBlock) 3 "color8" Name 67 "b2" Name 92 "nonBlk1" Name 95 "nonBlk2" Name 96 "nonBlk3" Name 97 "nonBlk4" Name 102 "nonBlkArr1" Name 105 "nonBlkArr2" Name 106 "nonBlkArr3" Name 107 "nonBlkArr4" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV Decorate 31(block) Block MemberDecorate 31(block) 0 PerPrimitiveNV MemberDecorate 31(block) 0 PerViewNV MemberDecorate 31(block) 1 PerPrimitiveNV MemberDecorate 31(block) 2 PerViewNV Decorate 35(b) Location 0 Decorate 64(perviewBlock) Block MemberDecorate 64(perviewBlock) 0 PerPrimitiveNV MemberDecorate 64(perviewBlock) 0 PerViewNV MemberDecorate 64(perviewBlock) 1 PerPrimitiveNV MemberDecorate 64(perviewBlock) 1 PerViewNV MemberDecorate 64(perviewBlock) 2 PerViewNV MemberDecorate 64(perviewBlock) 3 PerViewNV Decorate 67(b2) Location 10 Decorate 89 BuiltIn WorkgroupSize Decorate 92(nonBlk1) Location 18 Decorate 92(nonBlk1) PerViewNV Decorate 95(nonBlk2) Location 19 Decorate 95(nonBlk2) PerPrimitiveNV Decorate 95(nonBlk2) PerViewNV Decorate 96(nonBlk3) Location 20 Decorate 96(nonBlk3) PerViewNV Decorate 97(nonBlk4) Location 21 Decorate 97(nonBlk4) PerPrimitiveNV Decorate 97(nonBlk4) PerViewNV Decorate 102(nonBlkArr1) Location 22 Decorate 102(nonBlkArr1) PerViewNV Decorate 105(nonBlkArr2) Location 24 Decorate 105(nonBlkArr2) PerPrimitiveNV Decorate 105(nonBlkArr2) PerViewNV Decorate 106(nonBlkArr3) Location 26 Decorate 106(nonBlkArr3) PerViewNV Decorate 107(nonBlkArr4) Location 28 Decorate 107(nonBlkArr4) PerPrimitiveNV Decorate 107(nonBlkArr4) PerViewNV 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: 6(int) Constant 4 18: TypeArray 6(int) 17 19: TypePointer Input 18 20(gl_MeshViewIndicesNV): 19(ptr) Variable Input 21(gl_MeshViewCountNV): 13(ptr) Variable Input 26: TypeFloat 32 27: TypeVector 26(float) 4 28: 6(int) Constant 3 29: TypeArray 27(fvec4) 28 30: TypeArray 29 17 31(block): TypeStruct 30 29 30 27(fvec4) 32: 6(int) Constant 81 33: TypeArray 31(block) 32 34: TypePointer Output 33 35(b): 34(ptr) Variable Output 37: TypeInt 32 1 38: 37(int) Constant 0 40: 37(int) Constant 2 41: 26(float) Constant 1065353216 42: 27(fvec4) ConstantComposite 41 41 41 41 43: TypePointer Output 27(fvec4) 46: 37(int) Constant 1 47: 26(float) Constant 1073741824 48: 27(fvec4) ConstantComposite 47 47 47 47 52: 26(float) Constant 1077936128 53: 27(fvec4) ConstantComposite 52 52 52 52 56: 37(int) Constant 3 57: 26(float) Constant 1082130432 58: 27(fvec4) ConstantComposite 57 57 57 57 60: 6(int) Constant 1 61: 6(int) Constant 264 62: 6(int) Constant 2 63: TypeArray 27(fvec4) 17 64(perviewBlock): TypeStruct 63 30 30 63 65: TypeArray 64(perviewBlock) 32 66: TypePointer Output 65 67(b2): 66(ptr) Variable Output 70: 26(float) Constant 1084227584 71: 27(fvec4) ConstantComposite 70 70 70 70 75: 26(float) Constant 1086324736 76: 27(fvec4) ConstantComposite 75 75 75 75 80: 26(float) Constant 1088421888 81: 27(fvec4) ConstantComposite 80 80 80 80 85: 26(float) Constant 1090519040 86: 27(fvec4) ConstantComposite 85 85 85 85 88: 6(int) Constant 32 89: 9(ivec3) ConstantComposite 88 60 60 90: TypeArray 63 32 91: TypePointer Output 90 92(nonBlk1): 91(ptr) Variable Output 93: TypeArray 63 88 94: TypePointer Output 93 95(nonBlk2): 94(ptr) Variable Output 96(nonBlk3): 91(ptr) Variable Output 97(nonBlk4): 94(ptr) Variable Output 98: TypeArray 27(fvec4) 62 99: TypeArray 98 17 100: TypeArray 99 32 101: TypePointer Output 100 102(nonBlkArr1): 101(ptr) Variable Output 103: TypeArray 99 88 104: TypePointer Output 103 105(nonBlkArr2): 104(ptr) Variable Output 106(nonBlkArr3): 101(ptr) Variable Output 107(nonBlkArr4): 104(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(iid): 7(ptr) Variable Function 16(viewID): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 15: 6(int) Load 14 Store 8(iid) 15 22: 6(int) Load 21(gl_MeshViewCountNV) 23: 6(int) UMod 22 17 24: 13(ptr) AccessChain 20(gl_MeshViewIndicesNV) 23 25: 6(int) Load 24 Store 16(viewID) 25 36: 6(int) Load 8(iid) 39: 6(int) Load 16(viewID) 44: 43(ptr) AccessChain 35(b) 36 38 39 40 Store 44 42 45: 6(int) Load 8(iid) 49: 43(ptr) AccessChain 35(b) 45 46 46 Store 49 48 50: 6(int) Load 8(iid) 51: 6(int) Load 16(viewID) 54: 43(ptr) AccessChain 35(b) 50 40 51 40 Store 54 53 55: 6(int) Load 8(iid) 59: 43(ptr) AccessChain 35(b) 55 56 Store 59 58 MemoryBarrier 60 61 ControlBarrier 62 62 61 68: 6(int) Load 8(iid) 69: 6(int) Load 16(viewID) 72: 43(ptr) AccessChain 67(b2) 68 38 69 Store 72 71 73: 6(int) Load 8(iid) 74: 6(int) Load 16(viewID) 77: 43(ptr) AccessChain 67(b2) 73 46 74 46 Store 77 76 78: 6(int) Load 8(iid) 79: 6(int) Load 16(viewID) 82: 43(ptr) AccessChain 67(b2) 78 40 79 40 Store 82 81 83: 6(int) Load 8(iid) 84: 6(int) Load 16(viewID) 87: 43(ptr) AccessChain 67(b2) 83 56 84 Store 87 86 MemoryBarrier 60 61 ControlBarrier 62 62 61 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.meshShaderPerView_Errors.mesh.out000066400000000000000000000011761506534232700256700ustar00rootroot00000000000000spv.meshShaderPerView_Errors.mesh ERROR: 0:19: '[]' : only outermost dimension of an array of arrays can be implicitly sized ERROR: 0:20: '[]' : mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized ERROR: 0:21: 'perviewNV' : requires a view array dimension ERROR: 0:25: '[]' : only outermost dimension of an array of arrays can be implicitly sized ERROR: 0:26: '[]' : mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized ERROR: 0:27: 'perviewNV' : requires a view array dimension ERROR: 6 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out000066400000000000000000000272661506534232700256730ustar00rootroot00000000000000spv.meshShaderRedeclBuiltins.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 129 Capability ClipDistance Capability CullDistance Capability ShaderViewportMaskNV Capability MeshShadingNV Extension "SPV_NV_mesh_shader" Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 11 17 28 81 122 127 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source GLSL 460 SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 8 "iid" Name 11 "gl_LocalInvocationID" Name 16 "gid" Name 17 "gl_WorkGroupID" Name 24 "gl_MeshPerVertexNV" MemberName 24(gl_MeshPerVertexNV) 0 "gl_Position" MemberName 24(gl_MeshPerVertexNV) 1 "gl_PointSize" MemberName 24(gl_MeshPerVertexNV) 2 "gl_ClipDistance" MemberName 24(gl_MeshPerVertexNV) 3 "gl_CullDistance" Name 28 "gl_MeshVerticesNV" Name 77 "gl_MeshPerPrimitiveNV" MemberName 77(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID" MemberName 77(gl_MeshPerPrimitiveNV) 1 "gl_Layer" MemberName 77(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex" MemberName 77(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask" Name 81 "gl_MeshPrimitivesNV" Name 122 "gl_PrimitiveIndicesNV" Name 127 "gl_PrimitiveCountNV" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 24(gl_MeshPerVertexNV) Block MemberDecorate 24(gl_MeshPerVertexNV) 0 BuiltIn Position MemberDecorate 24(gl_MeshPerVertexNV) 1 BuiltIn PointSize MemberDecorate 24(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance MemberDecorate 24(gl_MeshPerVertexNV) 3 BuiltIn CullDistance Decorate 77(gl_MeshPerPrimitiveNV) Block MemberDecorate 77(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId MemberDecorate 77(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV MemberDecorate 77(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer MemberDecorate 77(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV MemberDecorate 77(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex MemberDecorate 77(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV MemberDecorate 77(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV MemberDecorate 77(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV Decorate 122(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV Decorate 127(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV Decorate 128 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: TypeVector 20(float) 4 22: 6(int) Constant 4 23: TypeArray 20(float) 22 24(gl_MeshPerVertexNV): TypeStruct 21(fvec4) 20(float) 23 23 25: 6(int) Constant 81 26: TypeArray 24(gl_MeshPerVertexNV) 25 27: TypePointer Output 26 28(gl_MeshVerticesNV): 27(ptr) Variable Output 30: TypeInt 32 1 31: 30(int) Constant 0 32: 20(float) Constant 1065353216 33: 21(fvec4) ConstantComposite 32 32 32 32 34: TypePointer Output 21(fvec4) 37: 30(int) Constant 1 38: 20(float) Constant 1073741824 39: TypePointer Output 20(float) 42: 30(int) Constant 2 43: 30(int) Constant 3 44: 20(float) Constant 1077936128 47: 20(float) Constant 1082130432 49: 6(int) Constant 1 50: 6(int) Constant 264 51: 6(int) Constant 2 76: TypeArray 30(int) 49 77(gl_MeshPerPrimitiveNV): TypeStruct 30(int) 30(int) 30(int) 76 78: 6(int) Constant 32 79: TypeArray 77(gl_MeshPerPrimitiveNV) 78 80: TypePointer Output 79 81(gl_MeshPrimitivesNV): 80(ptr) Variable Output 83: 30(int) Constant 6 84: TypePointer Output 30(int) 87: 30(int) Constant 7 90: 30(int) Constant 8 93: 30(int) Constant 9 119: 6(int) Constant 96 120: TypeArray 6(int) 119 121: TypePointer Output 120 122(gl_PrimitiveIndicesNV): 121(ptr) Variable Output 123: TypePointer Output 6(int) 125: 30(int) Constant 95 127(gl_PrimitiveCountNV): 123(ptr) Variable Output 128: 9(ivec3) ConstantComposite 78 49 49 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 29: 6(int) Load 8(iid) 35: 34(ptr) AccessChain 28(gl_MeshVerticesNV) 29 31 Store 35 33 36: 6(int) Load 8(iid) 40: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 36 37 Store 40 38 41: 6(int) Load 8(iid) 45: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 41 42 43 Store 45 44 46: 6(int) Load 8(iid) 48: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 46 43 42 Store 48 47 MemoryBarrier 49 50 ControlBarrier 51 51 50 52: 6(int) Load 8(iid) 53: 6(int) IAdd 52 49 54: 6(int) Load 8(iid) 55: 34(ptr) AccessChain 28(gl_MeshVerticesNV) 54 31 56: 21(fvec4) Load 55 57: 34(ptr) AccessChain 28(gl_MeshVerticesNV) 53 31 Store 57 56 58: 6(int) Load 8(iid) 59: 6(int) IAdd 58 49 60: 6(int) Load 8(iid) 61: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 60 37 62: 20(float) Load 61 63: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 59 37 Store 63 62 64: 6(int) Load 8(iid) 65: 6(int) IAdd 64 49 66: 6(int) Load 8(iid) 67: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 66 42 43 68: 20(float) Load 67 69: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 65 42 43 Store 69 68 70: 6(int) Load 8(iid) 71: 6(int) IAdd 70 49 72: 6(int) Load 8(iid) 73: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 72 43 42 74: 20(float) Load 73 75: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 71 43 42 Store 75 74 MemoryBarrier 49 50 ControlBarrier 51 51 50 82: 6(int) Load 8(iid) 85: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 82 31 Store 85 83 86: 6(int) Load 8(iid) 88: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 86 37 Store 88 87 89: 6(int) Load 8(iid) 91: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 89 42 Store 91 90 92: 6(int) Load 8(iid) 94: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 92 43 31 Store 94 93 MemoryBarrier 49 50 ControlBarrier 51 51 50 95: 6(int) Load 8(iid) 96: 6(int) IAdd 95 49 97: 6(int) Load 8(iid) 98: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 97 31 99: 30(int) Load 98 100: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 96 31 Store 100 99 101: 6(int) Load 8(iid) 102: 6(int) IAdd 101 49 103: 6(int) Load 8(iid) 104: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 103 37 105: 30(int) Load 104 106: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 102 37 Store 106 105 107: 6(int) Load 8(iid) 108: 6(int) IAdd 107 49 109: 6(int) Load 8(iid) 110: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 109 42 111: 30(int) Load 110 112: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 108 42 Store 112 111 113: 6(int) Load 8(iid) 114: 6(int) IAdd 113 49 115: 6(int) Load 8(iid) 116: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 115 43 31 117: 30(int) Load 116 118: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 114 43 31 Store 118 117 MemoryBarrier 49 50 ControlBarrier 51 51 50 124: 123(ptr) AccessChain 122(gl_PrimitiveIndicesNV) 31 Store 124 49 126: 123(ptr) AccessChain 122(gl_PrimitiveIndicesNV) 125 Store 126 51 Store 127(gl_PrimitiveCountNV) 119 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out000066400000000000000000000241171506534232700271650ustar00rootroot00000000000000spv.meshShaderRedeclPerViewBuiltins.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 120 Capability PerViewAttributesNV Capability MeshShadingNV Extension "SPV_NVX_multiview_per_view_attributes" Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 11 20 21 35 67 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source GLSL 450 SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 8 "iid" Name 11 "gl_LocalInvocationID" Name 16 "viewID" Name 20 "gl_MeshViewIndicesNV" Name 21 "gl_MeshViewCountNV" Name 31 "gl_MeshPerVertexNV" MemberName 31(gl_MeshPerVertexNV) 0 "gl_PositionPerViewNV" MemberName 31(gl_MeshPerVertexNV) 1 "gl_ClipDistancePerViewNV" MemberName 31(gl_MeshPerVertexNV) 2 "gl_CullDistancePerViewNV" Name 35 "gl_MeshVerticesNV" Name 63 "gl_MeshPerPrimitiveNV" MemberName 63(gl_MeshPerPrimitiveNV) 0 "gl_LayerPerViewNV" MemberName 63(gl_MeshPerPrimitiveNV) 1 "gl_ViewportMaskPerViewNV" Name 67 "gl_MeshPrimitivesNV" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV Decorate 31(gl_MeshPerVertexNV) Block MemberDecorate 31(gl_MeshPerVertexNV) 0 BuiltIn PositionPerViewNV MemberDecorate 31(gl_MeshPerVertexNV) 0 PerViewNV MemberDecorate 31(gl_MeshPerVertexNV) 1 BuiltIn ClipDistancePerViewNV MemberDecorate 31(gl_MeshPerVertexNV) 1 PerViewNV MemberDecorate 31(gl_MeshPerVertexNV) 2 BuiltIn CullDistancePerViewNV MemberDecorate 31(gl_MeshPerVertexNV) 2 PerViewNV Decorate 63(gl_MeshPerPrimitiveNV) Block MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 BuiltIn LayerPerViewNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 PerViewNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 BuiltIn ViewportMaskPerViewNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 PerViewNV Decorate 119 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: 6(int) Constant 4 18: TypeArray 6(int) 17 19: TypePointer Input 18 20(gl_MeshViewIndicesNV): 19(ptr) Variable Input 21(gl_MeshViewCountNV): 13(ptr) Variable Input 26: TypeFloat 32 27: TypeVector 26(float) 4 28: TypeArray 27(fvec4) 17 29: TypeArray 26(float) 17 30: TypeArray 29 17 31(gl_MeshPerVertexNV): TypeStruct 28 30 30 32: 6(int) Constant 81 33: TypeArray 31(gl_MeshPerVertexNV) 32 34: TypePointer Output 33 35(gl_MeshVerticesNV): 34(ptr) Variable Output 37: TypeInt 32 1 38: 37(int) Constant 0 40: 26(float) Constant 1065353216 41: 26(float) Constant 1073741824 42: 26(float) Constant 1077936128 43: 26(float) Constant 1082130432 44: 27(fvec4) ConstantComposite 40 41 42 43 45: TypePointer Output 27(fvec4) 48: 37(int) Constant 1 50: 37(int) Constant 2 51: 26(float) Constant 1084227584 52: TypePointer Output 26(float) 56: 37(int) Constant 3 57: 26(float) Constant 1086324736 59: TypeArray 37(int) 17 60: 6(int) Constant 1 61: TypeArray 37(int) 60 62: TypeArray 61 17 63(gl_MeshPerPrimitiveNV): TypeStruct 59 62 64: 6(int) Constant 32 65: TypeArray 63(gl_MeshPerPrimitiveNV) 64 66: TypePointer Output 65 67(gl_MeshPrimitivesNV): 66(ptr) Variable Output 70: 37(int) Constant 7 71: TypePointer Output 37(int) 75: 37(int) Constant 8 77: 6(int) Constant 264 78: 6(int) Constant 2 119: 9(ivec3) ConstantComposite 64 60 60 4(main): 2 Function None 3 5: Label 8(iid): 7(ptr) Variable Function 16(viewID): 7(ptr) Variable Function 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 15: 6(int) Load 14 Store 8(iid) 15 22: 6(int) Load 21(gl_MeshViewCountNV) 23: 6(int) UMod 22 17 24: 13(ptr) AccessChain 20(gl_MeshViewIndicesNV) 23 25: 6(int) Load 24 Store 16(viewID) 25 36: 6(int) Load 8(iid) 39: 6(int) Load 16(viewID) 46: 45(ptr) AccessChain 35(gl_MeshVerticesNV) 36 38 39 Store 46 44 47: 6(int) Load 8(iid) 49: 6(int) Load 16(viewID) 53: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 47 48 49 50 Store 53 51 54: 6(int) Load 8(iid) 55: 6(int) Load 16(viewID) 58: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 54 50 55 56 Store 58 57 68: 6(int) Load 8(iid) 69: 6(int) Load 16(viewID) 72: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 68 38 69 Store 72 70 73: 6(int) Load 8(iid) 74: 6(int) Load 16(viewID) 76: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 73 48 74 38 Store 76 75 MemoryBarrier 60 77 ControlBarrier 78 78 77 79: 6(int) Load 8(iid) 80: 6(int) IAdd 79 60 81: 6(int) Load 16(viewID) 82: 6(int) Load 8(iid) 83: 6(int) Load 16(viewID) 84: 45(ptr) AccessChain 35(gl_MeshVerticesNV) 82 38 83 85: 27(fvec4) Load 84 86: 45(ptr) AccessChain 35(gl_MeshVerticesNV) 80 38 81 Store 86 85 87: 6(int) Load 8(iid) 88: 6(int) IAdd 87 60 89: 6(int) Load 16(viewID) 90: 6(int) Load 8(iid) 91: 6(int) Load 16(viewID) 92: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 90 48 91 50 93: 26(float) Load 92 94: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 88 48 89 50 Store 94 93 95: 6(int) Load 8(iid) 96: 6(int) IAdd 95 60 97: 6(int) Load 16(viewID) 98: 6(int) Load 8(iid) 99: 6(int) Load 16(viewID) 100: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 98 50 99 56 101: 26(float) Load 100 102: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 96 50 97 56 Store 102 101 103: 6(int) Load 8(iid) 104: 6(int) IAdd 103 60 105: 6(int) Load 16(viewID) 106: 6(int) Load 8(iid) 107: 6(int) Load 16(viewID) 108: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 106 38 107 109: 37(int) Load 108 110: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 104 38 105 Store 110 109 111: 6(int) Load 8(iid) 112: 6(int) IAdd 111 60 113: 6(int) Load 16(viewID) 114: 6(int) Load 8(iid) 115: 6(int) Load 16(viewID) 116: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 114 48 115 38 117: 37(int) Load 116 118: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 112 48 113 38 Store 118 117 MemoryBarrier 60 77 ControlBarrier 78 78 77 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.meshShaderSharedMem.mesh.out000066400000000000000000000144051506534232700246170ustar00rootroot00000000000000spv.meshShaderSharedMem.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 77 Capability StorageImageWriteWithoutFormat Capability MeshShadingNV Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 11 17 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source GLSL 450 SourceExtension "GL_NV_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" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 37(block0) Block MemberDecorate 37(block0) 0 Offset 0 Decorate 39 Binding 1 Decorate 39 DescriptorSet 0 Decorate 55(uni_image) NonReadable Decorate 55(uni_image) Binding 0 Decorate 55(uni_image) DescriptorSet 0 Decorate 76 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: 6(int) Constant 32 76: 9(ivec3) ConstantComposite 75 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 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.meshShaderTaskMem.mesh.out000066400000000000000000000131631506534232700243130ustar00rootroot00000000000000spv.meshShaderTaskMem.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 58 Capability MeshShadingNV Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 11 22 30 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source GLSL 450 SourceExtension "GL_NV_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 27 ArrayStride 4 Decorate 28(taskBlock) Block MemberDecorate 28(taskBlock) 0 Offset 0 MemberDecorate 28(taskBlock) 0 PerTaskNV MemberDecorate 28(taskBlock) 1 Offset 16 MemberDecorate 28(taskBlock) 1 PerTaskNV Decorate 30(mytask) Location 0 Decorate 35 ArrayStride 4 Decorate 36(bufferBlock) BufferBlock MemberDecorate 36(bufferBlock) 0 Offset 0 MemberDecorate 36(bufferBlock) 1 Offset 16 Decorate 38(mybuf) Binding 0 Decorate 38(mybuf) DescriptorSet 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 Input 28(taskBlock) 30(mytask): 29(ptr) Variable Input 31: 24(int) Constant 1 32: TypePointer Input 16(float) 35: TypeArray 16(float) 26 36(bufferBlock): TypeStruct 35 17(fvec4) 37: TypePointer Uniform 36(bufferBlock) 38(mybuf): 37(ptr) Variable Uniform 39: TypePointer Uniform 16(float) 43: TypePointer Output 16(float) 46: TypePointer Input 17(fvec4) 49: TypePointer Uniform 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 glslang-16.0.0/Test/baseResults/spv.meshShaderUserDefined.mesh.out000066400000000000000000000243451506534232700251530ustar00rootroot00000000000000spv.meshShaderUserDefined.mesh // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 141 Capability MeshShadingNV Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 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_NV_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 Decorate 30(myblock) Block 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 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 glslang-16.0.0/Test/baseResults/spv.meshTaskShader.task.out000066400000000000000000000233731506534232700236660ustar00rootroot00000000000000spv.meshTaskShader.task // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 116 Capability StorageImageWriteWithoutFormat Capability MeshShadingNV Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TaskNV 4 "main" 11 17 24 25 90 113 ExecutionMode 4 LocalSize 32 1 1 Source GLSL 450 SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 8 "iid" Name 11 "gl_LocalInvocationID" Name 16 "gid" Name 17 "gl_WorkGroupID" Name 20 "viewID" Name 24 "gl_MeshViewIndicesNV" Name 25 "gl_MeshViewCountNV" Name 30 "i" Name 44 "mem" Name 47 "block0" MemberName 47(block0) 0 "uni_value" Name 49 "" Name 65 "uni_image" Name 88 "Task" MemberName 88(Task) 0 "dummy" MemberName 88(Task) 1 "submesh" MemberName 88(Task) 2 "viewID" Name 90 "mytask" Name 113 "gl_TaskCountNV" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 24(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 25(gl_MeshViewCountNV) BuiltIn MeshViewCountNV Decorate 47(block0) Block MemberDecorate 47(block0) 0 Offset 0 Decorate 49 Binding 1 Decorate 49 DescriptorSet 0 Decorate 65(uni_image) NonReadable Decorate 65(uni_image) Binding 0 Decorate 65(uni_image) DescriptorSet 0 Decorate 87 ArrayStride 8 Decorate 88(Task) Block MemberDecorate 88(Task) 0 Offset 0 MemberDecorate 88(Task) 0 PerTaskNV MemberDecorate 88(Task) 1 Offset 8 MemberDecorate 88(Task) 1 PerTaskNV MemberDecorate 88(Task) 2 Offset 32 MemberDecorate 88(Task) 2 PerTaskNV Decorate 90(mytask) Location 0 Decorate 113(gl_TaskCountNV) BuiltIn TaskCountNV Decorate 115 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 21: 6(int) Constant 4 22: TypeArray 6(int) 21 23: TypePointer Input 22 24(gl_MeshViewIndicesNV): 23(ptr) Variable Input 25(gl_MeshViewCountNV): 13(ptr) Variable Input 37: 6(int) Constant 10 38: TypeBool 40: TypeFloat 32 41: TypeVector 40(float) 4 42: TypeArray 41(fvec4) 37 43: TypePointer Workgroup 42 44(mem): 43(ptr) Variable Workgroup 47(block0): TypeStruct 6(int) 48: TypePointer Uniform 47(block0) 49: 48(ptr) Variable Uniform 50: TypeInt 32 1 51: 50(int) Constant 0 52: TypePointer Uniform 6(int) 58: TypePointer Workgroup 41(fvec4) 61: 50(int) Constant 1 63: TypeImage 40(float) 2D nonsampled format:Unknown 64: TypePointer UniformConstant 63 65(uni_image): 64(ptr) Variable UniformConstant 69: TypeVector 50(int) 2 79: 6(int) Constant 1 83: 6(int) Constant 264 84: 6(int) Constant 2 85: TypeVector 40(float) 2 86: 6(int) Constant 3 87: TypeArray 85(fvec2) 86 88(Task): TypeStruct 85(fvec2) 87 6(int) 89: TypePointer Output 88(Task) 90(mytask): 89(ptr) Variable Output 91: 40(float) Constant 1106247680 92: 40(float) Constant 1106771968 93: 85(fvec2) ConstantComposite 91 92 94: TypePointer Output 85(fvec2) 96: 40(float) Constant 1107296256 97: 40(float) Constant 1107558400 98: 85(fvec2) ConstantComposite 96 97 100: 40(float) Constant 1107820544 101: 40(float) Constant 1108082688 102: 85(fvec2) ConstantComposite 100 101 104: 50(int) Constant 2 111: TypePointer Output 6(int) 113(gl_TaskCountNV): 111(ptr) Variable Output 114: 6(int) Constant 32 115: 9(ivec3) ConstantComposite 114 79 79 4(main): 2 Function None 3 5: Label 8(iid): 7(ptr) Variable Function 16(gid): 7(ptr) Variable Function 20(viewID): 7(ptr) Variable Function 30(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 26: 6(int) Load 25(gl_MeshViewCountNV) 27: 6(int) UMod 26 21 28: 13(ptr) AccessChain 24(gl_MeshViewIndicesNV) 27 29: 6(int) Load 28 Store 20(viewID) 29 Store 30(i) 12 Branch 31 31: Label LoopMerge 33 34 None Branch 35 35: Label 36: 6(int) Load 30(i) 39: 38(bool) ULessThan 36 37 BranchConditional 39 32 33 32: Label 45: 6(int) Load 30(i) 46: 6(int) Load 30(i) 53: 52(ptr) AccessChain 49 51 54: 6(int) Load 53 55: 6(int) IAdd 46 54 56: 40(float) ConvertUToF 55 57: 41(fvec4) CompositeConstruct 56 56 56 56 59: 58(ptr) AccessChain 44(mem) 45 Store 59 57 Branch 34 34: Label 60: 6(int) Load 30(i) 62: 6(int) IAdd 60 61 Store 30(i) 62 Branch 31 33: Label 66: 63 Load 65(uni_image) 67: 6(int) Load 8(iid) 68: 50(int) Bitcast 67 70: 69(ivec2) CompositeConstruct 68 68 71: 6(int) Load 16(gid) 72: 58(ptr) AccessChain 44(mem) 71 73: 41(fvec4) Load 72 ImageWrite 66 70 73 74: 63 Load 65(uni_image) 75: 6(int) Load 8(iid) 76: 50(int) Bitcast 75 77: 69(ivec2) CompositeConstruct 76 76 78: 6(int) Load 16(gid) 80: 6(int) IAdd 78 79 81: 58(ptr) AccessChain 44(mem) 80 82: 41(fvec4) Load 81 ImageWrite 74 77 82 MemoryBarrier 79 83 ControlBarrier 84 84 83 95: 94(ptr) AccessChain 90(mytask) 51 Store 95 93 99: 94(ptr) AccessChain 90(mytask) 61 51 Store 99 98 103: 94(ptr) AccessChain 90(mytask) 61 61 Store 103 102 105: 6(int) Load 16(gid) 106: 6(int) UMod 105 84 107: 94(ptr) AccessChain 90(mytask) 61 106 108: 85(fvec2) Load 107 109: 94(ptr) AccessChain 90(mytask) 61 104 Store 109 108 110: 6(int) Load 20(viewID) 112: 111(ptr) AccessChain 90(mytask) 104 Store 112 110 MemoryBarrier 79 83 ControlBarrier 84 84 83 Store 113(gl_TaskCountNV) 86 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.multiStruct.comp.out000066400000000000000000000325301506534232700233060ustar00rootroot00000000000000spv.multiStruct.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 161 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 Name 4 "main" Name 12 "MyStruct" MemberName 12(MyStruct) 0 "foo" MemberName 12(MyStruct) 1 "sb" Name 14 "t" Name 16 "MyStruct" MemberName 16(MyStruct) 0 "foo" MemberName 16(MyStruct) 1 "sb" Name 17 "SSBO0" MemberName 17(SSBO0) 0 "a" Name 19 "inBuf" Name 39 "SSBO1" MemberName 39(SSBO1) 0 "b" Name 41 "outBuf" Name 58 "MyStruct" MemberName 58(MyStruct) 0 "foo" MemberName 58(MyStruct) 1 "sb" Name 59 "UBO" MemberName 59(UBO) 0 "c" Name 61 "uBuf" Name 86 "Nested" MemberName 86(Nested) 0 "f" MemberName 86(Nested) 1 "S" Name 88 "n" Name 90 "Nested" MemberName 90(Nested) 0 "f" MemberName 90(Nested) 1 "S" Name 91 "UBON" MemberName 91(UBON) 0 "N1" Name 93 "uBufN" Name 126 "Nested" MemberName 126(Nested) 0 "f" MemberName 126(Nested) 1 "S" Name 127 "SSBO1N" MemberName 127(SSBO1N) 0 "N2" Name 129 "outBufN" Decorate 15 ArrayStride 8 MemberDecorate 16(MyStruct) 0 Offset 0 MemberDecorate 16(MyStruct) 1 Offset 16 Decorate 17(SSBO0) BufferBlock MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 19(inBuf) Binding 0 Decorate 19(inBuf) DescriptorSet 0 Decorate 39(SSBO1) BufferBlock MemberDecorate 39(SSBO1) 0 Offset 0 Decorate 41(outBuf) Binding 1 Decorate 41(outBuf) DescriptorSet 0 Decorate 57 ArrayStride 16 MemberDecorate 58(MyStruct) 0 Offset 0 MemberDecorate 58(MyStruct) 1 Offset 32 Decorate 59(UBO) Block MemberDecorate 59(UBO) 0 Offset 0 Decorate 61(uBuf) Binding 2 Decorate 61(uBuf) DescriptorSet 0 Decorate 89 ArrayStride 48 MemberDecorate 90(Nested) 0 Offset 0 MemberDecorate 90(Nested) 1 Offset 16 Decorate 91(UBON) Block MemberDecorate 91(UBON) 0 Offset 0 Decorate 93(uBufN) Binding 2 Decorate 93(uBufN) DescriptorSet 0 Decorate 125 ArrayStride 24 MemberDecorate 126(Nested) 0 Offset 0 MemberDecorate 126(Nested) 1 Offset 8 Decorate 127(SSBO1N) BufferBlock MemberDecorate 127(SSBO1N) 0 Offset 0 Decorate 129(outBufN) Binding 1 Decorate 129(outBufN) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeInt 32 0 9: 8(int) Constant 2 10: TypeArray 7(fvec2) 9 11: TypeBool 12(MyStruct): TypeStruct 10 11(bool) 13: TypePointer Function 12(MyStruct) 15: TypeArray 7(fvec2) 9 16(MyStruct): TypeStruct 15 8(int) 17(SSBO0): TypeStruct 16(MyStruct) 18: TypePointer Uniform 17(SSBO0) 19(inBuf): 18(ptr) Variable Uniform 20: TypeInt 32 1 21: 20(int) Constant 0 22: TypePointer Uniform 16(MyStruct) 26: TypePointer Function 10 29: TypePointer Function 7(fvec2) 32: 20(int) Constant 1 35: 8(int) Constant 0 37: TypePointer Function 11(bool) 39(SSBO1): TypeStruct 16(MyStruct) 40: TypePointer Uniform 39(SSBO1) 41(outBuf): 40(ptr) Variable Uniform 45: TypePointer Uniform 15 48: TypePointer Uniform 7(fvec2) 53: 8(int) Constant 1 55: TypePointer Uniform 8(int) 57: TypeArray 7(fvec2) 9 58(MyStruct): TypeStruct 57 8(int) 59(UBO): TypeStruct 58(MyStruct) 60: TypePointer Uniform 59(UBO) 61(uBuf): 60(ptr) Variable Uniform 62: TypePointer Uniform 58(MyStruct) 85: TypeArray 12(MyStruct) 9 86(Nested): TypeStruct 6(float) 85 87: TypePointer Function 86(Nested) 89: TypeArray 58(MyStruct) 9 90(Nested): TypeStruct 6(float) 89 91(UBON): TypeStruct 90(Nested) 92: TypePointer Uniform 91(UBON) 93(uBufN): 92(ptr) Variable Uniform 94: TypePointer Uniform 90(Nested) 98: TypePointer Function 6(float) 101: TypePointer Function 85 125: TypeArray 16(MyStruct) 9 126(Nested): TypeStruct 6(float) 125 127(SSBO1N): TypeStruct 126(Nested) 128: TypePointer Uniform 127(SSBO1N) 129(outBufN): 128(ptr) Variable Uniform 131: TypePointer Uniform 126(Nested) 134: TypePointer Uniform 6(float) 137: TypePointer Uniform 125 4(main): 2 Function None 3 5: Label 14(t): 13(ptr) Variable Function 88(n): 87(ptr) Variable Function 23: 22(ptr) AccessChain 19(inBuf) 21 24:16(MyStruct) Load 23 25: 15 CompositeExtract 24 0 27: 26(ptr) AccessChain 14(t) 21 28: 7(fvec2) CompositeExtract 25 0 30: 29(ptr) AccessChain 27 21 Store 30 28 31: 7(fvec2) CompositeExtract 25 1 33: 29(ptr) AccessChain 27 32 Store 33 31 34: 8(int) CompositeExtract 24 1 36: 11(bool) INotEqual 34 35 38: 37(ptr) AccessChain 14(t) 32 Store 38 36 42:12(MyStruct) Load 14(t) 43: 22(ptr) AccessChain 41(outBuf) 21 44: 10 CompositeExtract 42 0 46: 45(ptr) AccessChain 43 21 47: 7(fvec2) CompositeExtract 44 0 49: 48(ptr) AccessChain 46 21 Store 49 47 50: 7(fvec2) CompositeExtract 44 1 51: 48(ptr) AccessChain 46 32 Store 51 50 52: 11(bool) CompositeExtract 42 1 54: 8(int) Select 52 53 35 56: 55(ptr) AccessChain 43 32 Store 56 54 63: 62(ptr) AccessChain 61(uBuf) 21 64:58(MyStruct) Load 63 65: 57 CompositeExtract 64 0 66: 26(ptr) AccessChain 14(t) 21 67: 7(fvec2) CompositeExtract 65 0 68: 29(ptr) AccessChain 66 21 Store 68 67 69: 7(fvec2) CompositeExtract 65 1 70: 29(ptr) AccessChain 66 32 Store 70 69 71: 8(int) CompositeExtract 64 1 72: 11(bool) INotEqual 71 35 73: 37(ptr) AccessChain 14(t) 32 Store 73 72 74:12(MyStruct) Load 14(t) 75: 22(ptr) AccessChain 41(outBuf) 21 76: 10 CompositeExtract 74 0 77: 45(ptr) AccessChain 75 21 78: 7(fvec2) CompositeExtract 76 0 79: 48(ptr) AccessChain 77 21 Store 79 78 80: 7(fvec2) CompositeExtract 76 1 81: 48(ptr) AccessChain 77 32 Store 81 80 82: 11(bool) CompositeExtract 74 1 83: 8(int) Select 82 53 35 84: 55(ptr) AccessChain 75 32 Store 84 83 95: 94(ptr) AccessChain 93(uBufN) 21 96: 90(Nested) Load 95 97: 6(float) CompositeExtract 96 0 99: 98(ptr) AccessChain 88(n) 21 Store 99 97 100: 89 CompositeExtract 96 1 102: 101(ptr) AccessChain 88(n) 32 103:58(MyStruct) CompositeExtract 100 0 104: 13(ptr) AccessChain 102 21 105: 57 CompositeExtract 103 0 106: 26(ptr) AccessChain 104 21 107: 7(fvec2) CompositeExtract 105 0 108: 29(ptr) AccessChain 106 21 Store 108 107 109: 7(fvec2) CompositeExtract 105 1 110: 29(ptr) AccessChain 106 32 Store 110 109 111: 8(int) CompositeExtract 103 1 112: 11(bool) INotEqual 111 35 113: 37(ptr) AccessChain 104 32 Store 113 112 114:58(MyStruct) CompositeExtract 100 1 115: 13(ptr) AccessChain 102 32 116: 57 CompositeExtract 114 0 117: 26(ptr) AccessChain 115 21 118: 7(fvec2) CompositeExtract 116 0 119: 29(ptr) AccessChain 117 21 Store 119 118 120: 7(fvec2) CompositeExtract 116 1 121: 29(ptr) AccessChain 117 32 Store 121 120 122: 8(int) CompositeExtract 114 1 123: 11(bool) INotEqual 122 35 124: 37(ptr) AccessChain 115 32 Store 124 123 130: 86(Nested) Load 88(n) 132: 131(ptr) AccessChain 129(outBufN) 21 133: 6(float) CompositeExtract 130 0 135: 134(ptr) AccessChain 132 21 Store 135 133 136: 85 CompositeExtract 130 1 138: 137(ptr) AccessChain 132 32 139:12(MyStruct) CompositeExtract 136 0 140: 22(ptr) AccessChain 138 21 141: 10 CompositeExtract 139 0 142: 45(ptr) AccessChain 140 21 143: 7(fvec2) CompositeExtract 141 0 144: 48(ptr) AccessChain 142 21 Store 144 143 145: 7(fvec2) CompositeExtract 141 1 146: 48(ptr) AccessChain 142 32 Store 146 145 147: 11(bool) CompositeExtract 139 1 148: 8(int) Select 147 53 35 149: 55(ptr) AccessChain 140 32 Store 149 148 150:12(MyStruct) CompositeExtract 136 1 151: 22(ptr) AccessChain 138 32 152: 10 CompositeExtract 150 0 153: 45(ptr) AccessChain 151 21 154: 7(fvec2) CompositeExtract 152 0 155: 48(ptr) AccessChain 153 21 Store 155 154 156: 7(fvec2) CompositeExtract 152 1 157: 48(ptr) AccessChain 153 32 Store 157 156 158: 11(bool) CompositeExtract 150 1 159: 8(int) Select 158 53 35 160: 55(ptr) AccessChain 151 32 Store 160 159 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.multiStructFuncall.frag.out000066400000000000000000000130561506534232700245760ustar00rootroot00000000000000spv.multiStructFuncall.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "S" MemberName 9(S) 0 "m" Name 12 "fooConst(struct-S-mf441;" Name 11 "s" Name 17 "foo(struct-S-mf441;" Name 16 "s" Name 20 "fooOut(struct-S-mf441;" Name 19 "s" Name 22 "S" MemberName 22(S) 0 "m" Name 23 "blockName" MemberName 23(blockName) 0 "s1" Name 25 "" Name 31 "arg" Name 38 "s2" Name 41 "param" Name 47 "param" Name 50 "param" Name 61 "param" MemberDecorate 22(S) 0 ColMajor MemberDecorate 22(S) 0 MatrixStride 16 MemberDecorate 22(S) 0 Offset 0 Decorate 23(blockName) BufferBlock MemberDecorate 23(blockName) 0 Offset 0 Decorate 25 Binding 0 Decorate 25 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeMatrix 7(fvec4) 4 9(S): TypeStruct 8 10: TypeFunction 2 9(S) 14: TypePointer Function 9(S) 15: TypeFunction 2 14(ptr) 22(S): TypeStruct 8 23(blockName): TypeStruct 22(S) 24: TypePointer Uniform 23(blockName) 25: 24(ptr) Variable Uniform 26: TypeInt 32 1 27: 26(int) Constant 0 28: TypePointer Uniform 22(S) 33: TypePointer Function 8 37: TypePointer Private 9(S) 38(s2): 37(ptr) Variable Private 59: TypePointer Uniform 8 4(main): 2 Function None 3 5: Label 31(arg): 14(ptr) Variable Function 41(param): 14(ptr) Variable Function 47(param): 14(ptr) Variable Function 50(param): 14(ptr) Variable Function 61(param): 14(ptr) Variable Function 29: 28(ptr) AccessChain 25 27 30: 22(S) Load 29 32: 8 CompositeExtract 30 0 34: 33(ptr) AccessChain 31(arg) 27 Store 34 32 35: 9(S) Load 31(arg) 36: 2 FunctionCall 12(fooConst(struct-S-mf441;) 35 39: 9(S) Load 38(s2) 40: 2 FunctionCall 12(fooConst(struct-S-mf441;) 39 42: 28(ptr) AccessChain 25 27 43: 22(S) Load 42 44: 8 CompositeExtract 43 0 45: 33(ptr) AccessChain 41(param) 27 Store 45 44 46: 2 FunctionCall 17(foo(struct-S-mf441;) 41(param) 48: 9(S) Load 38(s2) Store 47(param) 48 49: 2 FunctionCall 17(foo(struct-S-mf441;) 47(param) 51: 28(ptr) AccessChain 25 27 52: 22(S) Load 51 53: 8 CompositeExtract 52 0 54: 33(ptr) AccessChain 50(param) 27 Store 54 53 55: 2 FunctionCall 20(fooOut(struct-S-mf441;) 50(param) 56: 9(S) Load 50(param) 57: 28(ptr) AccessChain 25 27 58: 8 CompositeExtract 56 0 60: 59(ptr) AccessChain 57 27 Store 60 58 62: 9(S) Load 38(s2) Store 61(param) 62 63: 2 FunctionCall 20(fooOut(struct-S-mf441;) 61(param) 64: 9(S) Load 61(param) Store 38(s2) 64 Return FunctionEnd 12(fooConst(struct-S-mf441;): 2 Function None 10 11(s): 9(S) FunctionParameter 13: Label Return FunctionEnd 17(foo(struct-S-mf441;): 2 Function None 15 16(s): 14(ptr) FunctionParameter 18: Label Return FunctionEnd 20(fooOut(struct-S-mf441;): 2 Function None 15 19(s): 14(ptr) FunctionParameter 21: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.multiView.frag.out000066400000000000000000000033101506534232700227070ustar00rootroot00000000000000spv.multiView.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader Capability MultiView 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 12 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_multiview" Name 4 "main" Name 9 "color" Name 12 "gl_ViewIndex" Decorate 9(color) Location 0 Decorate 12(gl_ViewIndex) BuiltIn ViewIndex Decorate 12(gl_ViewIndex) Flat 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: TypeInt 32 1 11: TypePointer Input 10(int) 12(gl_ViewIndex): 11(ptr) Variable Input 15: 6(float) Constant 0 4(main): 2 Function None 3 5: Label 13: 10(int) Load 12(gl_ViewIndex) 14: 6(float) ConvertSToF 13 16: 7(fvec4) CompositeConstruct 14 15 15 15 Store 9(color) 16 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.multiple.var.same.const.frag.out000066400000000000000000000015751506534232700254300ustar00rootroot00000000000000spv.multiple.var.same.const.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 8 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source ESSL 320 Name 4 "main" Decorate 7 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: 6(float) Constant 897988541 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out000066400000000000000000000105751506534232700263520ustar00rootroot00000000000000spv.multiviewPerViewAttributes.tesc // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 41 Capability Tessellation Capability PerViewAttributesNV Extension "SPV_NVX_multiview_per_view_attributes" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 17 19 31 ExecutionMode 4 OutputVertices 4 Source GLSL 450 SourceExtension "GL_NVX_multiview_per_view_attributes" Name 4 "main" Name 13 "gl_PerVertex" MemberName 13(gl_PerVertex) 0 "gl_PositionPerViewNV" MemberName 13(gl_PerVertex) 1 "gl_ViewportMaskPerViewNV" Name 17 "gl_out" Name 19 "gl_InvocationID" Name 27 "gl_PerVertex" MemberName 27(gl_PerVertex) 0 "gl_Position" MemberName 27(gl_PerVertex) 1 "gl_PointSize" MemberName 27(gl_PerVertex) 2 "gl_ClipDistance" MemberName 27(gl_PerVertex) 3 "gl_CullDistance" MemberName 27(gl_PerVertex) 4 "gl_PositionPerViewNV" Name 31 "gl_in" Decorate 13(gl_PerVertex) Block MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV MemberDecorate 13(gl_PerVertex) 1 BuiltIn ViewportMaskPerViewNV Decorate 19(gl_InvocationID) BuiltIn InvocationId Decorate 27(gl_PerVertex) Block MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 27(gl_PerVertex) 4 BuiltIn PositionPerViewNV 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 7(fvec4) 9 11: TypeInt 32 1 12: TypeArray 11(int) 9 13(gl_PerVertex): TypeStruct 10 12 14: 8(int) Constant 4 15: TypeArray 13(gl_PerVertex) 14 16: TypePointer Output 15 17(gl_out): 16(ptr) Variable Output 18: TypePointer Input 11(int) 19(gl_InvocationID): 18(ptr) Variable Input 21: 11(int) Constant 1 22: 11(int) Constant 0 23: TypePointer Output 11(int) 26: TypeArray 6(float) 9 27(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 26 26 10 28: 8(int) Constant 32 29: TypeArray 27(gl_PerVertex) 28 30: TypePointer Input 29 31(gl_in): 30(ptr) Variable Input 32: TypePointer Input 7(fvec4) 35: 11(int) Constant 4 39: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 20: 11(int) Load 19(gl_InvocationID) 24: 23(ptr) AccessChain 17(gl_out) 20 21 22 Store 24 21 25: 11(int) Load 19(gl_InvocationID) 33: 32(ptr) AccessChain 31(gl_in) 21 22 34: 7(fvec4) Load 33 36: 32(ptr) AccessChain 31(gl_in) 21 35 22 37: 7(fvec4) Load 36 38: 7(fvec4) FAdd 34 37 40: 39(ptr) AccessChain 17(gl_out) 25 22 22 Store 40 38 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.multiviewPerViewAttributes.vert.out000066400000000000000000000063651506534232700263760ustar00rootroot00000000000000spv.multiviewPerViewAttributes.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability PerViewAttributesNV Extension "SPV_NVX_multiview_per_view_attributes" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 11 20 24 Source GLSL 450 SourceExtension "GL_NVX_multiview_per_view_attributes" Name 4 "main" Name 11 "gl_ViewportMaskPerViewNV" Name 20 "gl_PositionPerViewNV" Name 22 "gl_PerVertex" MemberName 22(gl_PerVertex) 0 "gl_Position" MemberName 22(gl_PerVertex) 1 "gl_PointSize" MemberName 22(gl_PerVertex) 2 "gl_ClipDistance" MemberName 22(gl_PerVertex) 3 "gl_CullDistance" Name 24 "" Decorate 11(gl_ViewportMaskPerViewNV) BuiltIn ViewportMaskPerViewNV Decorate 20(gl_PositionPerViewNV) BuiltIn PositionPerViewNV Decorate 22(gl_PerVertex) Block MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 1 9: TypeArray 6(int) 8 10: TypePointer Output 9 11(gl_ViewportMaskPerViewNV): 10(ptr) Variable Output 12: 6(int) Constant 0 13: 6(int) Constant 1 14: TypePointer Output 6(int) 16: TypeFloat 32 17: TypeVector 16(float) 4 18: TypeArray 17(fvec4) 8 19: TypePointer Output 18 20(gl_PositionPerViewNV): 19(ptr) Variable Output 21: TypeArray 16(float) 8 22(gl_PerVertex): TypeStruct 17(fvec4) 16(float) 21 21 23: TypePointer Output 22(gl_PerVertex) 24: 23(ptr) Variable Output 25: TypePointer Output 17(fvec4) 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 11(gl_ViewportMaskPerViewNV) 12 Store 15 13 26: 25(ptr) AccessChain 24 12 27: 17(fvec4) Load 26 28: 25(ptr) AccessChain 20(gl_PositionPerViewNV) 12 Store 28 27 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.newTexture.frag.out000066400000000000000000000507771506534232700231170ustar00rootroot00000000000000spv.newTexture.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 278 Capability Shader Capability SampledRect Capability SampledCubeArray Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 17 26 29 55 81 84 92 247 277 ExecutionMode 4 OriginUpperLeft Source GLSL 430 Name 4 "main" Name 9 "v" Name 13 "s2D" Name 17 "c2D" Name 23 "sCubeArrayShadow" Name 26 "c4D" Name 29 "c1D" Name 42 "s3D" Name 51 "s2DArray" Name 55 "c3D" Name 64 "s2DShadow" Name 81 "ic3D" Name 84 "ic1D" Name 92 "ic2D" Name 102 "sr" Name 128 "sCube" Name 137 "s2DArrayShadow" Name 162 "iv" Name 166 "is2D" Name 202 "is3D" Name 214 "isCube" Name 226 "is2DArray" Name 237 "iv2" Name 241 "sCubeShadow" Name 247 "FragData" Name 259 "is2Dms" Name 263 "us2D" Name 267 "us3D" Name 271 "usCube" Name 275 "us2DArray" Name 277 "ic4D" Decorate 13(s2D) Binding 0 Decorate 13(s2D) DescriptorSet 0 Decorate 17(c2D) Location 1 Decorate 23(sCubeArrayShadow) Binding 5 Decorate 23(sCubeArrayShadow) DescriptorSet 0 Decorate 26(c4D) Location 3 Decorate 29(c1D) Location 0 Decorate 42(s3D) Binding 2 Decorate 42(s3D) DescriptorSet 0 Decorate 51(s2DArray) Binding 7 Decorate 51(s2DArray) DescriptorSet 0 Decorate 55(c3D) Location 2 Decorate 64(s2DShadow) Binding 6 Decorate 64(s2DShadow) DescriptorSet 0 Decorate 81(ic3D) Flat Decorate 81(ic3D) Location 6 Decorate 84(ic1D) Flat Decorate 84(ic1D) Location 4 Decorate 92(ic2D) Flat Decorate 92(ic2D) Location 5 Decorate 102(sr) Binding 1 Decorate 102(sr) DescriptorSet 0 Decorate 128(sCube) Binding 3 Decorate 128(sCube) DescriptorSet 0 Decorate 137(s2DArrayShadow) Binding 8 Decorate 137(s2DArrayShadow) DescriptorSet 0 Decorate 166(is2D) Binding 9 Decorate 166(is2D) DescriptorSet 0 Decorate 202(is3D) Binding 10 Decorate 202(is3D) DescriptorSet 0 Decorate 214(isCube) Binding 11 Decorate 214(isCube) DescriptorSet 0 Decorate 226(is2DArray) Binding 12 Decorate 226(is2DArray) DescriptorSet 0 Decorate 241(sCubeShadow) Binding 4 Decorate 241(sCubeShadow) DescriptorSet 0 Decorate 247(FragData) Location 0 Decorate 259(is2Dms) Binding 0 Decorate 259(is2Dms) DescriptorSet 0 Decorate 263(us2D) Binding 0 Decorate 263(us2D) DescriptorSet 0 Decorate 267(us3D) Binding 0 Decorate 267(us3D) DescriptorSet 0 Decorate 271(usCube) Binding 0 Decorate 271(usCube) DescriptorSet 0 Decorate 275(us2DArray) Binding 0 Decorate 275(us2DArray) DescriptorSet 0 Decorate 277(ic4D) Flat Decorate 277(ic4D) Location 7 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(s2D): 12(ptr) Variable UniformConstant 15: TypeVector 6(float) 2 16: TypePointer Input 15(fvec2) 17(c2D): 16(ptr) Variable Input 20: TypeImage 6(float) Cube depth array sampled format:Unknown 21: TypeSampledImage 20 22: TypePointer UniformConstant 21 23(sCubeArrayShadow): 22(ptr) Variable UniformConstant 25: TypePointer Input 7(fvec4) 26(c4D): 25(ptr) Variable Input 28: TypePointer Input 6(float) 29(c1D): 28(ptr) Variable Input 32: TypeInt 32 0 33: 32(int) Constant 1 34: TypePointer Function 6(float) 39: TypeImage 6(float) 3D sampled format:Unknown 40: TypeSampledImage 39 41: TypePointer UniformConstant 40 42(s3D): 41(ptr) Variable UniformConstant 48: TypeImage 6(float) 2D array sampled format:Unknown 49: TypeSampledImage 48 50: TypePointer UniformConstant 49 51(s2DArray): 50(ptr) Variable UniformConstant 53: TypeVector 6(float) 3 54: TypePointer Input 53(fvec3) 55(c3D): 54(ptr) Variable Input 57: 6(float) Constant 1067030938 61: TypeImage 6(float) 2D depth sampled format:Unknown 62: TypeSampledImage 61 63: TypePointer UniformConstant 62 64(s2DShadow): 63(ptr) Variable UniformConstant 67: TypeInt 32 1 68: TypeVector 67(int) 2 69: 67(int) Constant 3 70: 68(ivec2) ConstantComposite 69 69 79: TypeVector 67(int) 3 80: TypePointer Input 79(ivec3) 81(ic3D): 80(ptr) Variable Input 83: TypePointer Input 67(int) 84(ic1D): 83(ptr) Variable Input 91: TypePointer Input 68(ivec2) 92(ic2D): 91(ptr) Variable Input 94: 67(int) Constant 4 99: TypeImage 6(float) Rect sampled format:Unknown 100: TypeSampledImage 99 101: TypePointer UniformConstant 100 102(sr): 101(ptr) Variable UniformConstant 105: 68(ivec2) ConstantComposite 94 94 125: TypeImage 6(float) Cube sampled format:Unknown 126: TypeSampledImage 125 127: TypePointer UniformConstant 126 128(sCube): 127(ptr) Variable UniformConstant 134: TypeImage 6(float) 2D depth array sampled format:Unknown 135: TypeSampledImage 134 136: TypePointer UniformConstant 135 137(s2DArrayShadow): 136(ptr) Variable UniformConstant 143: 32(int) Constant 0 160: TypeVector 67(int) 4 161: TypePointer Function 160(ivec4) 163: TypeImage 67(int) 2D sampled format:Unknown 164: TypeSampledImage 163 165: TypePointer UniformConstant 164 166(is2D): 165(ptr) Variable UniformConstant 199: TypeImage 67(int) 3D sampled format:Unknown 200: TypeSampledImage 199 201: TypePointer UniformConstant 200 202(is3D): 201(ptr) Variable UniformConstant 205: 6(float) Constant 1082549862 211: TypeImage 67(int) Cube sampled format:Unknown 212: TypeSampledImage 211 213: TypePointer UniformConstant 212 214(isCube): 213(ptr) Variable UniformConstant 223: TypeImage 67(int) 2D array sampled format:Unknown 224: TypeSampledImage 223 225: TypePointer UniformConstant 224 226(is2DArray): 225(ptr) Variable UniformConstant 236: TypePointer Function 68(ivec2) 238: TypeImage 6(float) Cube depth sampled format:Unknown 239: TypeSampledImage 238 240: TypePointer UniformConstant 239 241(sCubeShadow): 240(ptr) Variable UniformConstant 243: 67(int) Constant 2 246: TypePointer Output 7(fvec4) 247(FragData): 246(ptr) Variable Output 251: 6(float) Constant 0 256: TypeImage 67(int) 2D multi-sampled sampled format:Unknown 257: TypeSampledImage 256 258: TypePointer UniformConstant 257 259(is2Dms): 258(ptr) Variable UniformConstant 260: TypeImage 32(int) 2D sampled format:Unknown 261: TypeSampledImage 260 262: TypePointer UniformConstant 261 263(us2D): 262(ptr) Variable UniformConstant 264: TypeImage 32(int) 3D sampled format:Unknown 265: TypeSampledImage 264 266: TypePointer UniformConstant 265 267(us3D): 266(ptr) Variable UniformConstant 268: TypeImage 32(int) Cube sampled format:Unknown 269: TypeSampledImage 268 270: TypePointer UniformConstant 269 271(usCube): 270(ptr) Variable UniformConstant 272: TypeImage 32(int) 2D array sampled format:Unknown 273: TypeSampledImage 272 274: TypePointer UniformConstant 273 275(us2DArray): 274(ptr) Variable UniformConstant 276: TypePointer Input 160(ivec4) 277(ic4D): 276(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function 162(iv): 161(ptr) Variable Function 237(iv2): 236(ptr) Variable Function 14: 11 Load 13(s2D) 18: 15(fvec2) Load 17(c2D) 19: 7(fvec4) ImageSampleImplicitLod 14 18 Store 9(v) 19 24: 21 Load 23(sCubeArrayShadow) 27: 7(fvec4) Load 26(c4D) 30: 6(float) Load 29(c1D) 31: 6(float) ImageSampleDrefImplicitLod 24 27 30 35: 34(ptr) AccessChain 9(v) 33 36: 6(float) Load 35 37: 6(float) FAdd 36 31 38: 34(ptr) AccessChain 9(v) 33 Store 38 37 43: 40 Load 42(s3D) 44: 7(fvec4) Load 26(c4D) 45: 7(fvec4) ImageSampleProjImplicitLod 43 44 46: 7(fvec4) Load 9(v) 47: 7(fvec4) FAdd 46 45 Store 9(v) 47 52: 49 Load 51(s2DArray) 56: 53(fvec3) Load 55(c3D) 58: 7(fvec4) ImageSampleExplicitLod 52 56 Lod 57 59: 7(fvec4) Load 9(v) 60: 7(fvec4) FAdd 59 58 Store 9(v) 60 65: 62 Load 64(s2DShadow) 66: 53(fvec3) Load 55(c3D) 71: 6(float) Load 29(c1D) 72: 6(float) CompositeExtract 66 2 73: 6(float) ImageSampleDrefImplicitLod 65 66 72 Bias ConstOffset 71 70 74: 34(ptr) AccessChain 9(v) 33 75: 6(float) Load 74 76: 6(float) FAdd 75 73 77: 34(ptr) AccessChain 9(v) 33 Store 77 76 78: 40 Load 42(s3D) 82: 79(ivec3) Load 81(ic3D) 85: 67(int) Load 84(ic1D) 86: 39 Image 78 87: 7(fvec4) ImageFetch 86 82 Lod 85 88: 7(fvec4) Load 9(v) 89: 7(fvec4) FAdd 88 87 Store 9(v) 89 90: 11 Load 13(s2D) 93: 68(ivec2) Load 92(ic2D) 95: 10 Image 90 96: 7(fvec4) ImageFetch 95 93 Lod ConstOffset 94 70 97: 7(fvec4) Load 9(v) 98: 7(fvec4) FAdd 97 96 Store 9(v) 98 103: 100 Load 102(sr) 104: 68(ivec2) Load 92(ic2D) 106: 99 Image 103 107: 7(fvec4) ImageFetch 106 104 ConstOffset 105 108: 7(fvec4) Load 9(v) 109: 7(fvec4) FAdd 108 107 Store 9(v) 109 110: 62 Load 64(s2DShadow) 111: 53(fvec3) Load 55(c3D) 112: 6(float) Load 29(c1D) 113: 6(float) CompositeExtract 111 2 114: 6(float) ImageSampleDrefExplicitLod 110 111 113 Lod ConstOffset 112 70 115: 34(ptr) AccessChain 9(v) 33 116: 6(float) Load 115 117: 6(float) FAdd 116 114 118: 34(ptr) AccessChain 9(v) 33 Store 118 117 119: 11 Load 13(s2D) 120: 53(fvec3) Load 55(c3D) 121: 6(float) Load 29(c1D) 122: 7(fvec4) ImageSampleProjExplicitLod 119 120 Lod ConstOffset 121 70 123: 7(fvec4) Load 9(v) 124: 7(fvec4) FAdd 123 122 Store 9(v) 124 129: 126 Load 128(sCube) 130: 53(fvec3) Load 55(c3D) 131: 7(fvec4) ImageSampleExplicitLod 129 130 Grad 130 130 132: 7(fvec4) Load 9(v) 133: 7(fvec4) FAdd 132 131 Store 9(v) 133 138: 135 Load 137(s2DArrayShadow) 139: 7(fvec4) Load 26(c4D) 140: 15(fvec2) Load 17(c2D) 141: 6(float) CompositeExtract 139 3 142: 6(float) ImageSampleDrefExplicitLod 138 139 141 Grad ConstOffset 140 140 70 144: 34(ptr) AccessChain 9(v) 143 145: 6(float) Load 144 146: 6(float) FAdd 145 142 147: 34(ptr) AccessChain 9(v) 143 Store 147 146 148: 40 Load 42(s3D) 149: 7(fvec4) Load 26(c4D) 150: 53(fvec3) Load 55(c3D) 151: 7(fvec4) ImageSampleProjExplicitLod 148 149 Grad 150 150 152: 7(fvec4) Load 9(v) 153: 7(fvec4) FAdd 152 151 Store 9(v) 153 154: 11 Load 13(s2D) 155: 53(fvec3) Load 55(c3D) 156: 15(fvec2) Load 17(c2D) 157: 7(fvec4) ImageSampleProjExplicitLod 154 155 Grad ConstOffset 156 156 70 158: 7(fvec4) Load 9(v) 159: 7(fvec4) FAdd 158 157 Store 9(v) 159 167: 164 Load 166(is2D) 168: 15(fvec2) Load 17(c2D) 169: 160(ivec4) ImageSampleImplicitLod 167 168 Store 162(iv) 169 170: 160(ivec4) Load 162(iv) 171: 7(fvec4) ConvertSToF 170 172: 7(fvec4) Load 9(v) 173: 7(fvec4) FAdd 172 171 Store 9(v) 173 174: 164 Load 166(is2D) 175: 7(fvec4) Load 26(c4D) 176: 6(float) CompositeExtract 175 3 177: 7(fvec4) CompositeInsert 176 175 2 178: 160(ivec4) ImageSampleProjImplicitLod 174 177 ConstOffset 70 Store 162(iv) 178 179: 160(ivec4) Load 162(iv) 180: 7(fvec4) ConvertSToF 179 181: 7(fvec4) Load 9(v) 182: 7(fvec4) FAdd 181 180 Store 9(v) 182 183: 164 Load 166(is2D) 184: 53(fvec3) Load 55(c3D) 185: 6(float) Load 29(c1D) 186: 160(ivec4) ImageSampleProjExplicitLod 183 184 Lod 185 Store 162(iv) 186 187: 160(ivec4) Load 162(iv) 188: 7(fvec4) ConvertSToF 187 189: 7(fvec4) Load 9(v) 190: 7(fvec4) FAdd 189 188 Store 9(v) 190 191: 164 Load 166(is2D) 192: 53(fvec3) Load 55(c3D) 193: 15(fvec2) Load 17(c2D) 194: 160(ivec4) ImageSampleProjExplicitLod 191 192 Grad 193 193 Store 162(iv) 194 195: 160(ivec4) Load 162(iv) 196: 7(fvec4) ConvertSToF 195 197: 7(fvec4) Load 9(v) 198: 7(fvec4) FAdd 197 196 Store 9(v) 198 203: 200 Load 202(is3D) 204: 53(fvec3) Load 55(c3D) 206: 160(ivec4) ImageSampleImplicitLod 203 204 Bias 205 Store 162(iv) 206 207: 160(ivec4) Load 162(iv) 208: 7(fvec4) ConvertSToF 207 209: 7(fvec4) Load 9(v) 210: 7(fvec4) FAdd 209 208 Store 9(v) 210 215: 212 Load 214(isCube) 216: 53(fvec3) Load 55(c3D) 217: 6(float) Load 29(c1D) 218: 160(ivec4) ImageSampleExplicitLod 215 216 Lod 217 Store 162(iv) 218 219: 160(ivec4) Load 162(iv) 220: 7(fvec4) ConvertSToF 219 221: 7(fvec4) Load 9(v) 222: 7(fvec4) FAdd 221 220 Store 9(v) 222 227: 224 Load 226(is2DArray) 228: 79(ivec3) Load 81(ic3D) 229: 67(int) Load 84(ic1D) 230: 223 Image 227 231: 160(ivec4) ImageFetch 230 228 Lod 229 Store 162(iv) 231 232: 160(ivec4) Load 162(iv) 233: 7(fvec4) ConvertSToF 232 234: 7(fvec4) Load 9(v) 235: 7(fvec4) FAdd 234 233 Store 9(v) 235 242: 239 Load 241(sCubeShadow) 244: 238 Image 242 245: 68(ivec2) ImageQuerySizeLod 244 243 Store 237(iv2) 245 248: 7(fvec4) Load 9(v) 249: 68(ivec2) Load 237(iv2) 250: 15(fvec2) ConvertSToF 249 252: 6(float) CompositeExtract 250 0 253: 6(float) CompositeExtract 250 1 254: 7(fvec4) CompositeConstruct 252 253 251 251 255: 7(fvec4) FAdd 248 254 Store 247(FragData) 255 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.noBuiltInLoc.vert.out000066400000000000000000000103541506534232700233320ustar00rootroot00000000000000spv.noBuiltInLoc.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader Capability AtomicStorage 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 11 18 33 34 Source GLSL 450 Name 4 "main" Name 9 "bar" Name 11 "foo" Name 16 "gl_PerVertex" MemberName 16(gl_PerVertex) 0 "gl_Position" MemberName 16(gl_PerVertex) 1 "gl_PointSize" MemberName 16(gl_PerVertex) 2 "gl_ClipDistance" MemberName 16(gl_PerVertex) 3 "gl_CullDistance" Name 18 "" Name 24 "uv1" Name 26 "uv2" Name 29 "uv3" Name 31 "a_uint" Name 33 "gl_VertexID" Name 34 "gl_InstanceID" Decorate 9(bar) Location 0 Decorate 11(foo) Location 0 Decorate 16(gl_PerVertex) Block MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position MemberDecorate 16(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance Decorate 24(uv1) Location 0 Decorate 24(uv1) DescriptorSet 0 Decorate 26(uv2) Location 1 Decorate 26(uv2) DescriptorSet 0 Decorate 29(uv3) Location 2 Decorate 29(uv3) DescriptorSet 0 Decorate 31(a_uint) Binding 0 Decorate 31(a_uint) DescriptorSet 0 Decorate 31(a_uint) Offset 0 Decorate 33(gl_VertexID) BuiltIn VertexId Decorate 34(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(bar): 8(ptr) Variable Output 10: TypePointer Input 7(fvec4) 11(foo): 10(ptr) Variable Input 13: TypeInt 32 0 14: 13(int) Constant 1 15: TypeArray 6(float) 14 16(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 15 15 17: TypePointer Output 16(gl_PerVertex) 18: 17(ptr) Variable Output 19: TypeInt 32 1 20: 19(int) Constant 0 23: TypePointer UniformConstant 7(fvec4) 24(uv1): 23(ptr) Variable UniformConstant 25: TypePointer UniformConstant 6(float) 26(uv2): 25(ptr) Variable UniformConstant 27: TypeVector 6(float) 3 28: TypePointer UniformConstant 27(fvec3) 29(uv3): 28(ptr) Variable UniformConstant 30: TypePointer AtomicCounter 13(int) 31(a_uint): 30(ptr) Variable AtomicCounter 32: TypePointer Input 19(int) 33(gl_VertexID): 32(ptr) Variable Input 34(gl_InstanceID): 32(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(foo) Store 9(bar) 12 21: 7(fvec4) Load 11(foo) 22: 8(ptr) AccessChain 18 20 Store 22 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.noDeadDecorations.vert.out000066400000000000000000000055461506534232700243650ustar00rootroot00000000000000spv.noDeadDecorations.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 22 Source ESSL 310 Name 4 "main" Name 10 "func(f1;" Name 9 "a" Name 20 "gl_PerVertex" MemberName 20(gl_PerVertex) 0 "gl_Position" MemberName 20(gl_PerVertex) 1 "gl_PointSize" Name 22 "" Name 26 "param" Decorate 9(a) RelaxedPrecision Decorate 10(func(f1;) RelaxedPrecision Decorate 12 RelaxedPrecision Decorate 13 RelaxedPrecision Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize Decorate 26(param) RelaxedPrecision Decorate 27 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 16: 6(float) Constant 3212836864 19: TypeVector 6(float) 4 20(gl_PerVertex): TypeStruct 19(fvec4) 6(float) 21: TypePointer Output 20(gl_PerVertex) 22: 21(ptr) Variable Output 23: TypeInt 32 1 24: 23(int) Constant 0 25: 6(float) Constant 0 28: TypeInt 32 0 29: 28(int) Constant 0 30: TypePointer Output 6(float) 4(main): 2 Function None 3 5: Label 26(param): 7(ptr) Variable Function Store 26(param) 25 27: 6(float) FunctionCall 10(func(f1;) 26(param) 31: 30(ptr) AccessChain 22 24 29 Store 31 27 Return FunctionEnd 10(func(f1;): 6(float) Function None 8 9(a): 7(ptr) FunctionParameter 11: Label 12: 6(float) Load 9(a) 13: 6(float) FNegate 12 ReturnValue 13 FunctionEnd glslang-16.0.0/Test/baseResults/spv.noLocation.vert.out000066400000000000000000000011041506534232700230670ustar00rootroot00000000000000spv.noLocation.vert ERROR: spv.noLocation.vert:4: 'location' : SPIR-V requires location for user input/output ERROR: spv.noLocation.vert:8: 'location' : SPIR-V requires location for user input/output ERROR: spv.noLocation.vert:19: 'location' : SPIR-V requires location for user input/output ERROR: spv.noLocation.vert:25: 'location' : SPIR-V requires location for user input/output ERROR: spv.noLocation.vert:29: 'location' : SPIR-V requires location for user input/output ERROR: 5 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.noWorkgroup.comp.out000066400000000000000000000034511506534232700233030ustar00rootroot00000000000000spv.noWorkgroup.comp // 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 GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 Name 4 "main" Name 22 "keys" Decorate 7 SpecId 18 Decorate 8 SpecId 10 Decorate 9 SpecId 19 Decorate 11 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) SpecConstant 1 8: 6(int) SpecConstant 1 9: 6(int) SpecConstant 1 10: TypeVector 6(int) 3 11: 10(ivec3) SpecConstantComposite 7 8 9 12: 6(int) Constant 0 13: 6(int) SpecConstantOp 81 11 0 14: 6(int) Constant 1 15: 6(int) SpecConstantOp 81 11 1(GLSL.std.450) 16: 6(int) SpecConstantOp 132 13 15 17: TypeArray 6(int) 16 18: 6(int) Constant 2 19: 6(int) SpecConstantOp 81 11 2 20: TypeArray 17 19 21: TypePointer Workgroup 20 22(keys): 21(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.noexplicitlayout.comp.out000066400000000000000000000102571506534232700243650ustar00rootroot00000000000000spv.noexplicitlayout.comp // Module Version 10600 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 12 24 ExecutionMode 4 LocalSize 64 1 1 Source GLSL 450 Name 4 "main" Name 10 "foo" MemberName 10(foo) 0 "x" Name 12 "f" Name 16 "x" Name 21 "Bar" MemberName 21(Bar) 0 "x" MemberName 21(Bar) 1 "y" MemberName 21(Bar) 2 "z" Name 22 "foo2" MemberName 22(foo2) 0 "a" MemberName 22(foo2) 1 "b" MemberName 22(foo2) 2 "c" Name 24 "" Name 27 "Bar" MemberName 27(Bar) 0 "x" MemberName 27(Bar) 1 "y" MemberName 27(Bar) 2 "z" Name 29 "new_bar" Decorate 9 ArrayStride 4 Decorate 10(foo) Block MemberDecorate 10(foo) 0 Offset 0 Decorate 12(f) Binding 0 Decorate 12(f) DescriptorSet 0 Decorate 20 ArrayStride 4 MemberDecorate 21(Bar) 0 Offset 0 MemberDecorate 21(Bar) 1 Offset 4 MemberDecorate 21(Bar) 2 Offset 8 Decorate 22(foo2) Block MemberDecorate 22(foo2) 0 Offset 0 MemberDecorate 22(foo2) 1 Offset 16 MemberDecorate 22(foo2) 2 Offset 32 Decorate 24 Binding 1 Decorate 24 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 4 9: TypeArray 6(int) 8 10(foo): TypeStruct 9 11: TypePointer StorageBuffer 10(foo) 12(f): 11(ptr) Variable StorageBuffer 13: 6(int) Constant 0 14: TypeArray 6(int) 8 15: TypePointer Function 14 17: 14 ConstantComposite 13 13 13 13 18: TypeVector 7(int) 4 19: 7(int) Constant 2 20: TypeArray 7(int) 19 21(Bar): TypeStruct 7(int) 7(int) 20 22(foo2): TypeStruct 18(ivec4) 21(Bar) 7(int) 23: TypePointer StorageBuffer 22(foo2) 24: 23(ptr) Variable StorageBuffer 25: 6(int) Constant 1 26: TypeArray 7(int) 19 27(Bar): TypeStruct 7(int) 7(int) 26 28: TypePointer Function 27(Bar) 31: TypePointer StorageBuffer 21(Bar) 34: TypeVector 7(int) 3 35: 7(int) Constant 64 36: 7(int) Constant 1 37: 34(ivec3) ConstantComposite 35 36 36 4(main): 2 Function None 3 5: Label 16(x): 15(ptr) Variable Function 29(new_bar): 28(ptr) Variable Function Store 16(x) 17 30: 27(Bar) Load 29(new_bar) 32: 31(ptr) AccessChain 24 25 33: 21(Bar) CopyLogical 30 Store 32 33 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nonSquare.vert.out000066400000000000000000000130601506534232700227410ustar00rootroot00000000000000spv.nonSquare.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 90 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 12 22 28 55 Source GLSL 140 Name 4 "main" Name 9 "a" Name 12 "v3" Name 16 "m23" Name 19 "b" Name 22 "m32" Name 28 "gl_Position" Name 55 "v4" Decorate 12(v3) Location 0 Decorate 22(m32) Location 0 Decorate 28(gl_Position) BuiltIn Position Decorate 55(v4) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Function 7(fvec2) 10: TypeVector 6(float) 3 11: TypePointer Input 10(fvec3) 12(v3): 11(ptr) Variable Input 14: TypeMatrix 10(fvec3) 2 15: TypePointer Function 14 20: TypeMatrix 7(fvec2) 3 21: TypePointer Output 20 22(m32): 21(ptr) Variable Output 26: TypeVector 6(float) 4 27: TypePointer Output 26(fvec4) 28(gl_Position): 27(ptr) Variable Output 31: TypeMatrix 10(fvec3) 3 35: 6(float) Constant 0 40: TypeMatrix 26(fvec4) 4 41: 6(float) Constant 1077936128 42: 6(float) Constant 1086324736 43: 26(fvec4) ConstantComposite 41 42 35 35 44: 6(float) Constant 1091567616 45: 6(float) Constant 1094713344 46: 26(fvec4) ConstantComposite 44 45 35 35 47: 6(float) Constant 1097859072 48: 6(float) Constant 1099956224 49: 26(fvec4) ConstantComposite 47 48 35 35 50: 6(float) Constant 1101529088 51: 6(float) Constant 1103101952 52: 26(fvec4) ConstantComposite 50 51 35 35 53: 40 ConstantComposite 43 46 49 52 54: TypePointer Input 26(fvec4) 55(v4): 54(ptr) Variable Input 59: 6(float) Constant 1112014848 60: 6(float) Constant 1121714176 61: 6(float) Constant 1126825984 62: 6(float) Constant 1130758144 63: 26(fvec4) ConstantComposite 59 60 61 62 65: 6(float) Constant 1106247680 66: 6(float) Constant 1114636288 67: 26(fvec4) ConstantComposite 65 66 35 35 69: 6(float) Constant 1101004800 70: 6(float) Constant 1092616192 71: 6(float) Constant 1084227584 72: 26(fvec4) ConstantComposite 69 70 42 71 74: 7(fvec2) ConstantComposite 70 69 75: TypeMatrix 26(fvec4) 2 76: 26(fvec4) ConstantComposite 41 35 35 35 77: 26(fvec4) ConstantComposite 35 41 35 35 78: 75 ConstantComposite 76 77 79: TypeMatrix 7(fvec2) 4 80: 6(float) Constant 1065353216 81: 6(float) Constant 1073741824 82: 7(fvec2) ConstantComposite 80 81 83: 6(float) Constant 1082130432 84: 7(fvec2) ConstantComposite 41 83 85: 7(fvec2) ConstantComposite 71 42 86: 6(float) Constant 1088421888 87: 6(float) Constant 1090519040 88: 7(fvec2) ConstantComposite 86 87 89: 79 ConstantComposite 82 84 85 88 4(main): 2 Function None 3 5: Label 9(a): 8(ptr) Variable Function 16(m23): 15(ptr) Variable Function 19(b): 8(ptr) Variable Function 13: 10(fvec3) Load 12(v3) 17: 14 Load 16(m23) 18: 7(fvec2) VectorTimesMatrix 13 17 Store 9(a) 18 23: 20 Load 22(m32) 24: 10(fvec3) Load 12(v3) 25: 7(fvec2) MatrixTimesVector 23 24 Store 19(b) 25 29: 14 Load 16(m23) 30: 20 Load 22(m32) 32: 31 MatrixTimesMatrix 29 30 33: 10(fvec3) Load 12(v3) 34: 10(fvec3) MatrixTimesVector 32 33 36: 6(float) CompositeExtract 34 0 37: 6(float) CompositeExtract 34 1 38: 6(float) CompositeExtract 34 2 39: 26(fvec4) CompositeConstruct 36 37 38 35 56: 26(fvec4) Load 55(v4) 57: 26(fvec4) MatrixTimesVector 53 56 58: 26(fvec4) FAdd 39 57 64: 26(fvec4) FAdd 58 63 68: 26(fvec4) FAdd 64 67 73: 26(fvec4) FAdd 68 72 Store 28(gl_Position) 73 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nontemporalbuffer.frag.out000066400000000000000000000143161506534232700244620ustar00rootroot00000000000000spv.nontemporalbuffer.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader Capability VulkanMemoryModelKHR Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint Fragment 4 "main" 47 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_nontemporal_keyword" Name 4 "main" Name 7 "NONTEMPORAL_BUFFER" MemberName 7(NONTEMPORAL_BUFFER) 0 "b_i" MemberName 7(NONTEMPORAL_BUFFER) 1 "b_o" Name 9 "" Name 16 "BUFFER_NONTEMPORAL" MemberName 16(BUFFER_NONTEMPORAL) 0 "bntemp_i" MemberName 16(BUFFER_NONTEMPORAL) 1 "bntemp_o" Name 18 "" Name 22 "NONTEMPORAL_ATOMIC" MemberName 22(NONTEMPORAL_ATOMIC) 0 "bn_atom" Name 24 "" Name 30 "ATOMIC_NONTEMPORAL" MemberName 30(ATOMIC_NONTEMPORAL) 0 "b_natom" MemberName 30(ATOMIC_NONTEMPORAL) 1 "b_atom" Name 32 "" Name 38 "NONTEMPORAL_UNIFORMS" MemberName 38(NONTEMPORAL_UNIFORMS) 0 "u_uv" Name 40 "" Name 44 "u_image" Name 47 "out_color" Decorate 7(NONTEMPORAL_BUFFER) Block MemberDecorate 7(NONTEMPORAL_BUFFER) 0 Offset 0 MemberDecorate 7(NONTEMPORAL_BUFFER) 1 Offset 4 Decorate 9 Binding 0 Decorate 9 DescriptorSet 0 Decorate 16(BUFFER_NONTEMPORAL) Block MemberDecorate 16(BUFFER_NONTEMPORAL) 0 Offset 0 MemberDecorate 16(BUFFER_NONTEMPORAL) 1 Offset 4 Decorate 18 Binding 1 Decorate 18 DescriptorSet 0 Decorate 22(NONTEMPORAL_ATOMIC) Block MemberDecorate 22(NONTEMPORAL_ATOMIC) 0 Offset 0 Decorate 24 Binding 3 Decorate 24 DescriptorSet 0 Decorate 30(ATOMIC_NONTEMPORAL) Block MemberDecorate 30(ATOMIC_NONTEMPORAL) 0 Offset 0 MemberDecorate 30(ATOMIC_NONTEMPORAL) 1 Offset 4 Decorate 32 Binding 4 Decorate 32 DescriptorSet 0 Decorate 38(NONTEMPORAL_UNIFORMS) Block MemberDecorate 38(NONTEMPORAL_UNIFORMS) 0 Offset 0 Decorate 40 Binding 2 Decorate 40 DescriptorSet 0 Decorate 44(u_image) NonWritable Decorate 44(u_image) Binding 5 Decorate 44(u_image) DescriptorSet 0 Decorate 47(out_color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7(NONTEMPORAL_BUFFER): TypeStruct 6(int) 6(int) 8: TypePointer StorageBuffer 7(NONTEMPORAL_BUFFER) 9: 8(ptr) Variable StorageBuffer 10: 6(int) Constant 1 11: 6(int) Constant 0 12: TypePointer StorageBuffer 6(int) 16(BUFFER_NONTEMPORAL): TypeStruct 6(int) 6(int) 17: TypePointer StorageBuffer 16(BUFFER_NONTEMPORAL) 18: 17(ptr) Variable StorageBuffer 22(NONTEMPORAL_ATOMIC): TypeStruct 6(int) 23: TypePointer StorageBuffer 22(NONTEMPORAL_ATOMIC) 24: 23(ptr) Variable StorageBuffer 26: TypeInt 32 0 27: 26(int) Constant 5 28: 26(int) Constant 0 30(ATOMIC_NONTEMPORAL): TypeStruct 6(int) 6(int) 31: TypePointer StorageBuffer 30(ATOMIC_NONTEMPORAL) 32: 31(ptr) Variable StorageBuffer 37: TypeVector 6(int) 2 38(NONTEMPORAL_UNIFORMS): TypeStruct 37(ivec2) 39: TypePointer Uniform 38(NONTEMPORAL_UNIFORMS) 40: 39(ptr) Variable Uniform 41: TypeFloat 32 42: TypeImage 41(float) 2D nonsampled format:Rgba8 43: TypePointer UniformConstant 42 44(u_image): 43(ptr) Variable UniformConstant 45: TypeVector 41(float) 4 46: TypePointer Output 45(fvec4) 47(out_color): 46(ptr) Variable Output 4(main): 2 Function None 3 5: Label 13: 12(ptr) AccessChain 9 11 14: 6(int) Load 13 Nontemporal 15: 12(ptr) AccessChain 9 10 Store 15 14 Nontemporal 19: 12(ptr) AccessChain 18 10 20: 6(int) Load 19 Nontemporal 21: 12(ptr) AccessChain 18 11 Store 21 20 Nontemporal 25: 12(ptr) AccessChain 24 11 29: 6(int) AtomicIAdd 25 27 28 10 33: 12(ptr) AccessChain 32 11 34: 6(int) AtomicIAdd 33 27 28 10 35: 12(ptr) AccessChain 32 10 36: 6(int) AtomicIAdd 35 27 28 10 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nonuniform.frag.out000066400000000000000000000656111506534232700231300ustar00rootroot00000000000000spv.nonuniform.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 289 Capability Shader Capability InputAttachment Capability SampledBuffer Capability ImageBuffer Capability ShaderNonUniformEXT Capability RuntimeDescriptorArrayEXT Capability InputAttachmentArrayDynamicIndexingEXT Capability UniformTexelBufferArrayDynamicIndexingEXT Capability StorageTexelBufferArrayDynamicIndexingEXT Capability UniformBufferArrayNonUniformIndexingEXT Capability SampledImageArrayNonUniformIndexingEXT Capability StorageBufferArrayNonUniformIndexingEXT Capability StorageImageArrayNonUniformIndexingEXT Capability InputAttachmentArrayNonUniformIndexingEXT Capability UniformTexelBufferArrayNonUniformIndexingEXT Capability StorageTexelBufferArrayNonUniformIndexingEXT Extension "SPV_EXT_descriptor_indexing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 41 98 188 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_nonuniform_qualifier" Name 4 "main" Name 11 "foo(i1;i1;" Name 9 "nupi" Name 10 "f" Name 16 "a" Name 17 "nu_li" Name 18 "param" Name 20 "param" Name 30 "nu_li2" Name 38 "b" Name 41 "nu_inv4" Name 47 "nu_gf" Name 53 "inputAttachmentDyn" Name 54 "dyn_i" Name 70 "uniformTexelBufferDyn" Name 84 "storageTexelBufferDyn" Name 93 "uname" MemberName 93(uname) 0 "a" Name 96 "uniformBuffer" Name 98 "nu_ii" Name 105 "bname" MemberName 105(bname) 0 "b" Name 108 "storageBuffer" Name 118 "sampledImage" Name 133 "storageImage" Name 145 "inputAttachment" Name 155 "uniformTexelBuffer" Name 166 "storageTexelBuffer" Name 177 "uniformTexArr" Name 184 "uniformSampler" Name 188 "inTexcoord" Name 207 "v" Name 222 "uv" Name 232 "m" Name 240 "S" MemberName 240(S) 0 "a" Name 242 "s" Name 252 "arr" Name 259 "um" Name 268 "US" MemberName 268(US) 0 "a" Name 270 "us" Name 278 "uarr" Decorate 13 DecorationNonUniformEXT Decorate 19 DecorationNonUniformEXT Decorate 21 DecorationNonUniformEXT Decorate 22 DecorationNonUniformEXT Decorate 24 DecorationNonUniformEXT Decorate 28 DecorationNonUniformEXT Decorate 29 DecorationNonUniformEXT Decorate 34 DecorationNonUniformEXT Decorate 35 DecorationNonUniformEXT Decorate 41(nu_inv4) Location 0 Decorate 46 DecorationNonUniformEXT Decorate 48 DecorationNonUniformEXT Decorate 49 DecorationNonUniformEXT Decorate 53(inputAttachmentDyn) Binding 0 Decorate 53(inputAttachmentDyn) DescriptorSet 0 Decorate 53(inputAttachmentDyn) InputAttachmentIndex 0 Decorate 70(uniformTexelBufferDyn) Binding 1 Decorate 70(uniformTexelBufferDyn) DescriptorSet 0 Decorate 84(storageTexelBufferDyn) Binding 2 Decorate 84(storageTexelBufferDyn) DescriptorSet 0 Decorate 93(uname) Block MemberDecorate 93(uname) 0 Offset 0 Decorate 96(uniformBuffer) Binding 3 Decorate 96(uniformBuffer) DescriptorSet 0 Decorate 98(nu_ii) Flat Decorate 98(nu_ii) Location 1 Decorate 99 DecorationNonUniformEXT Decorate 101 DecorationNonUniformEXT Decorate 102 DecorationNonUniformEXT Decorate 104 DecorationNonUniformEXT Decorate 105(bname) BufferBlock MemberDecorate 105(bname) 0 Offset 0 Decorate 108(storageBuffer) Binding 4 Decorate 108(storageBuffer) DescriptorSet 0 Decorate 109 DecorationNonUniformEXT Decorate 110 DecorationNonUniformEXT Decorate 111 DecorationNonUniformEXT Decorate 113 DecorationNonUniformEXT Decorate 118(sampledImage) Binding 5 Decorate 118(sampledImage) DescriptorSet 0 Decorate 119 DecorationNonUniformEXT Decorate 121 DecorationNonUniformEXT Decorate 122 DecorationNonUniformEXT Decorate 133(storageImage) Binding 6 Decorate 133(storageImage) DescriptorSet 0 Decorate 134 DecorationNonUniformEXT Decorate 136 DecorationNonUniformEXT Decorate 137 DecorationNonUniformEXT Decorate 145(inputAttachment) Binding 7 Decorate 145(inputAttachment) DescriptorSet 0 Decorate 145(inputAttachment) InputAttachmentIndex 1 Decorate 146 DecorationNonUniformEXT Decorate 147 DecorationNonUniformEXT Decorate 148 DecorationNonUniformEXT Decorate 155(uniformTexelBuffer) Binding 8 Decorate 155(uniformTexelBuffer) DescriptorSet 0 Decorate 156 DecorationNonUniformEXT Decorate 157 DecorationNonUniformEXT Decorate 158 DecorationNonUniformEXT Decorate 159 DecorationNonUniformEXT Decorate 166(storageTexelBuffer) Binding 9 Decorate 166(storageTexelBuffer) DescriptorSet 0 Decorate 167 DecorationNonUniformEXT Decorate 168 DecorationNonUniformEXT Decorate 169 DecorationNonUniformEXT Decorate 177(uniformTexArr) Binding 10 Decorate 177(uniformTexArr) DescriptorSet 0 Decorate 178 DecorationNonUniformEXT Decorate 180 DecorationNonUniformEXT Decorate 181 DecorationNonUniformEXT Decorate 184(uniformSampler) Binding 11 Decorate 184(uniformSampler) DescriptorSet 0 Decorate 188(inTexcoord) Location 2 Decorate 194 DecorationNonUniformEXT Decorate 195 DecorationNonUniformEXT Decorate 196 DecorationNonUniformEXT Decorate 199 DecorationNonUniformEXT Decorate 210 DecorationNonUniformEXT Decorate 211 DecorationNonUniformEXT Decorate 212 DecorationNonUniformEXT Decorate 214 DecorationNonUniformEXT Decorate 217 DecorationNonUniformEXT Decorate 218 DecorationNonUniformEXT Decorate 219 DecorationNonUniformEXT Decorate 221 DecorationNonUniformEXT Decorate 223 DecorationNonUniformEXT Decorate 224 DecorationNonUniformEXT Decorate 225 DecorationNonUniformEXT Decorate 226 DecorationNonUniformEXT Decorate 227 DecorationNonUniformEXT Decorate 229 DecorationNonUniformEXT Decorate 234 DecorationNonUniformEXT Decorate 244 DecorationNonUniformEXT Decorate 245 DecorationNonUniformEXT Decorate 246 DecorationNonUniformEXT Decorate 248 DecorationNonUniformEXT Decorate 254 DecorationNonUniformEXT Decorate 255 DecorationNonUniformEXT Decorate 256 DecorationNonUniformEXT Decorate 258 DecorationNonUniformEXT Decorate 260 DecorationNonUniformEXT Decorate 261 DecorationNonUniformEXT Decorate 262 DecorationNonUniformEXT Decorate 271 DecorationNonUniformEXT Decorate 272 DecorationNonUniformEXT Decorate 273 DecorationNonUniformEXT Decorate 274 DecorationNonUniformEXT Decorate 275 DecorationNonUniformEXT Decorate 277 DecorationNonUniformEXT Decorate 279 DecorationNonUniformEXT Decorate 280 DecorationNonUniformEXT Decorate 281 DecorationNonUniformEXT Decorate 282 DecorationNonUniformEXT Decorate 283 DecorationNonUniformEXT Decorate 285 DecorationNonUniformEXT Decorate 286 DecorationNonUniformEXT Decorate 288 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFunction 6(int) 7(ptr) 7(ptr) 26: 6(int) Constant 2 36: TypeFloat 32 37: TypePointer Function 36(float) 39: TypeVector 36(float) 4 40: TypePointer Input 39(fvec4) 41(nu_inv4): 40(ptr) Variable Input 42: TypeInt 32 0 43: 42(int) Constant 0 44: TypePointer Input 36(float) 50: TypeImage 36(float) SubpassData nonsampled format:Unknown 51: TypeRuntimeArray 50 52: TypePointer UniformConstant 51 53(inputAttachmentDyn): 52(ptr) Variable UniformConstant 56: TypePointer UniformConstant 50 59: 6(int) Constant 0 60: TypeVector 6(int) 2 61: 60(ivec2) ConstantComposite 59 59 66: TypeImage 36(float) Buffer sampled format:Unknown 67: TypeSampledImage 66 68: TypeRuntimeArray 67 69: TypePointer UniformConstant 68 70(uniformTexelBufferDyn): 69(ptr) Variable UniformConstant 72: TypePointer UniformConstant 67 75: 6(int) Constant 1 81: TypeImage 36(float) Buffer nonsampled format:R32f 82: TypeRuntimeArray 81 83: TypePointer UniformConstant 82 84(storageTexelBufferDyn): 83(ptr) Variable UniformConstant 86: TypePointer UniformConstant 81 93(uname): TypeStruct 36(float) 94: TypeRuntimeArray 93(uname) 95: TypePointer Uniform 94 96(uniformBuffer): 95(ptr) Variable Uniform 97: TypePointer Input 6(int) 98(nu_ii): 97(ptr) Variable Input 100: TypePointer Uniform 36(float) 105(bname): TypeStruct 36(float) 106: TypeRuntimeArray 105(bname) 107: TypePointer Uniform 106 108(storageBuffer): 107(ptr) Variable Uniform 114: TypeImage 36(float) 2D sampled format:Unknown 115: TypeSampledImage 114 116: TypeRuntimeArray 115 117: TypePointer UniformConstant 116 118(sampledImage): 117(ptr) Variable UniformConstant 120: TypePointer UniformConstant 115 123: TypeVector 36(float) 2 124: 36(float) Constant 1056964608 125: 123(fvec2) ConstantComposite 124 124 130: TypeImage 36(float) 2D nonsampled format:R32f 131: TypeRuntimeArray 130 132: TypePointer UniformConstant 131 133(storageImage): 132(ptr) Variable UniformConstant 135: TypePointer UniformConstant 130 138: 60(ivec2) ConstantComposite 75 75 143: TypeRuntimeArray 50 144: TypePointer UniformConstant 143 145(inputAttachment): 144(ptr) Variable UniformConstant 153: TypeRuntimeArray 67 154: TypePointer UniformConstant 153 155(uniformTexelBuffer): 154(ptr) Variable UniformConstant 164: TypeRuntimeArray 81 165: TypePointer UniformConstant 164 166(storageTexelBuffer): 165(ptr) Variable UniformConstant 174: 42(int) Constant 8 175: TypeArray 114 174 176: TypePointer UniformConstant 175 177(uniformTexArr): 176(ptr) Variable UniformConstant 179: TypePointer UniformConstant 114 182: TypeSampler 183: TypePointer UniformConstant 182 184(uniformSampler): 183(ptr) Variable UniformConstant 187: TypePointer Input 123(fvec2) 188(inTexcoord): 187(ptr) Variable Input 205: TypeVector 6(int) 4 206: TypePointer Function 205(ivec4) 208: 42(int) Constant 1 215: 42(int) Constant 2 230: TypeMatrix 39(fvec4) 4 231: TypePointer Function 230 240(S): TypeStruct 6(int) 241: TypePointer Function 240(S) 249: 42(int) Constant 10 250: TypeArray 6(int) 249 251: TypePointer Function 250 268(US): TypeStruct 250 269: TypePointer Function 268(US) 4(main): 2 Function None 3 5: Label 16(a): 7(ptr) Variable Function 17(nu_li): 7(ptr) Variable Function 18(param): 7(ptr) Variable Function 20(param): 7(ptr) Variable Function 30(nu_li2): 7(ptr) Variable Function 38(b): 37(ptr) Variable Function 47(nu_gf): 37(ptr) Variable Function 54(dyn_i): 7(ptr) Variable Function 207(v): 206(ptr) Variable Function 222(uv): 206(ptr) Variable Function 232(m): 231(ptr) Variable Function 242(s): 241(ptr) Variable Function 252(arr): 251(ptr) Variable Function 259(um): 231(ptr) Variable Function 270(us): 269(ptr) Variable Function 278(uarr): 251(ptr) Variable Function 19: 6(int) Load 17(nu_li) Store 18(param) 19 21: 6(int) FunctionCall 11(foo(i1;i1;) 18(param) 20(param) 22: 6(int) Load 20(param) Store 17(nu_li) 22 Store 16(a) 21 23: 6(int) Load 16(a) 24: 6(int) CopyObject 23 25: 6(int) Load 16(a) 27: 6(int) IMul 25 26 28: 6(int) CopyObject 27 29: 6(int) IAdd 24 28 Store 17(nu_li) 29 31: 6(int) Load 16(a) 32: 6(int) Load 16(a) 33: 6(int) IMul 32 26 34: 6(int) CopyObject 33 35: 6(int) IAdd 31 34 Store 30(nu_li2) 35 45: 44(ptr) AccessChain 41(nu_inv4) 43 46: 36(float) Load 45 48: 36(float) Load 47(nu_gf) 49: 36(float) FMul 46 48 Store 38(b) 49 55: 6(int) Load 54(dyn_i) 57: 56(ptr) AccessChain 53(inputAttachmentDyn) 55 58: 50 Load 57 62: 39(fvec4) ImageRead 58 61 63: 36(float) CompositeExtract 62 0 64: 36(float) Load 38(b) 65: 36(float) FAdd 64 63 Store 38(b) 65 71: 6(int) Load 54(dyn_i) 73: 72(ptr) AccessChain 70(uniformTexelBufferDyn) 71 74: 67 Load 73 76: 66 Image 74 77: 39(fvec4) ImageFetch 76 75 78: 36(float) CompositeExtract 77 0 79: 36(float) Load 38(b) 80: 36(float) FAdd 79 78 Store 38(b) 80 85: 6(int) Load 54(dyn_i) 87: 86(ptr) AccessChain 84(storageTexelBufferDyn) 85 88: 81 Load 87 89: 39(fvec4) ImageRead 88 75 90: 36(float) CompositeExtract 89 0 91: 36(float) Load 38(b) 92: 36(float) FAdd 91 90 Store 38(b) 92 99: 6(int) Load 98(nu_ii) 101: 100(ptr) AccessChain 96(uniformBuffer) 99 59 102: 36(float) Load 101 103: 36(float) Load 38(b) 104: 36(float) FAdd 103 102 Store 38(b) 104 109: 6(int) Load 98(nu_ii) 110: 100(ptr) AccessChain 108(storageBuffer) 109 59 111: 36(float) Load 110 112: 36(float) Load 38(b) 113: 36(float) FAdd 112 111 Store 38(b) 113 119: 6(int) Load 98(nu_ii) 121: 120(ptr) AccessChain 118(sampledImage) 119 122: 115 Load 121 126: 39(fvec4) ImageSampleImplicitLod 122 125 127: 36(float) CompositeExtract 126 0 128: 36(float) Load 38(b) 129: 36(float) FAdd 128 127 Store 38(b) 129 134: 6(int) Load 98(nu_ii) 136: 135(ptr) AccessChain 133(storageImage) 134 137: 130 Load 136 139: 39(fvec4) ImageRead 137 138 140: 36(float) CompositeExtract 139 0 141: 36(float) Load 38(b) 142: 36(float) FAdd 141 140 Store 38(b) 142 146: 6(int) Load 98(nu_ii) 147: 56(ptr) AccessChain 145(inputAttachment) 146 148: 50 Load 147 149: 39(fvec4) ImageRead 148 61 150: 36(float) CompositeExtract 149 0 151: 36(float) Load 38(b) 152: 36(float) FAdd 151 150 Store 38(b) 152 156: 6(int) Load 98(nu_ii) 157: 72(ptr) AccessChain 155(uniformTexelBuffer) 156 158: 67 Load 157 159: 66 Image 158 160: 39(fvec4) ImageFetch 159 75 161: 36(float) CompositeExtract 160 0 162: 36(float) Load 38(b) 163: 36(float) FAdd 162 161 Store 38(b) 163 167: 6(int) Load 98(nu_ii) 168: 86(ptr) AccessChain 166(storageTexelBuffer) 167 169: 81 Load 168 170: 39(fvec4) ImageRead 169 75 171: 36(float) CompositeExtract 170 0 172: 36(float) Load 38(b) 173: 36(float) FAdd 172 171 Store 38(b) 173 178: 6(int) Load 98(nu_ii) 180: 179(ptr) AccessChain 177(uniformTexArr) 178 181: 114 Load 180 185: 182 Load 184(uniformSampler) 186: 115 SampledImage 181 185 189: 123(fvec2) Load 188(inTexcoord) 190: 39(fvec4) ImageSampleImplicitLod 186 189 191: 36(float) CompositeExtract 190 0 192: 36(float) Load 38(b) 193: 36(float) FAdd 192 191 Store 38(b) 193 194: 6(int) Load 98(nu_ii) 195: 179(ptr) AccessChain 177(uniformTexArr) 194 196: 114 Load 195 197: 182 Load 184(uniformSampler) 198: 115 SampledImage 196 197 199: 115 CopyObject 198 200: 123(fvec2) Load 188(inTexcoord) 201: 39(fvec4) ImageSampleImplicitLod 199 200 202: 36(float) CompositeExtract 201 0 203: 36(float) Load 38(b) 204: 36(float) FAdd 203 202 Store 38(b) 204 209: 7(ptr) AccessChain 207(v) 208 210: 6(int) Load 209 211: 100(ptr) AccessChain 96(uniformBuffer) 210 59 212: 36(float) Load 211 213: 36(float) Load 38(b) 214: 36(float) FAdd 213 212 Store 38(b) 214 216: 7(ptr) AccessChain 207(v) 215 217: 6(int) Load 216 218: 100(ptr) AccessChain 96(uniformBuffer) 217 59 219: 36(float) Load 218 220: 36(float) Load 38(b) 221: 36(float) FAdd 220 219 Store 38(b) 221 223: 6(int) Load 98(nu_ii) 224: 7(ptr) AccessChain 222(uv) 223 225: 6(int) Load 224 226: 100(ptr) AccessChain 96(uniformBuffer) 225 59 227: 36(float) Load 226 228: 36(float) Load 38(b) 229: 36(float) FAdd 228 227 Store 38(b) 229 233: 37(ptr) AccessChain 232(m) 26 215 234: 36(float) Load 233 235: 6(int) ConvertFToS 234 236: 100(ptr) AccessChain 96(uniformBuffer) 235 59 237: 36(float) Load 236 238: 36(float) Load 38(b) 239: 36(float) FAdd 238 237 Store 38(b) 239 243: 7(ptr) AccessChain 242(s) 59 244: 6(int) Load 243 245: 100(ptr) AccessChain 96(uniformBuffer) 244 59 246: 36(float) Load 245 247: 36(float) Load 38(b) 248: 36(float) FAdd 247 246 Store 38(b) 248 253: 7(ptr) AccessChain 252(arr) 26 254: 6(int) Load 253 255: 100(ptr) AccessChain 96(uniformBuffer) 254 59 256: 36(float) Load 255 257: 36(float) Load 38(b) 258: 36(float) FAdd 257 256 Store 38(b) 258 260: 6(int) Load 98(nu_ii) 261: 37(ptr) AccessChain 259(um) 260 215 262: 36(float) Load 261 263: 6(int) ConvertFToS 262 264: 100(ptr) AccessChain 96(uniformBuffer) 263 59 265: 36(float) Load 264 266: 36(float) Load 38(b) 267: 36(float) FAdd 266 265 Store 38(b) 267 271: 6(int) Load 98(nu_ii) 272: 7(ptr) AccessChain 270(us) 59 271 273: 6(int) Load 272 274: 100(ptr) AccessChain 96(uniformBuffer) 273 59 275: 36(float) Load 274 276: 36(float) Load 38(b) 277: 36(float) FAdd 276 275 Store 38(b) 277 279: 6(int) Load 98(nu_ii) 280: 7(ptr) AccessChain 278(uarr) 279 281: 6(int) Load 280 282: 100(ptr) AccessChain 96(uniformBuffer) 281 59 283: 36(float) Load 282 284: 36(float) Load 38(b) 285: 36(float) FAdd 284 283 Store 38(b) 285 286: 6(int) Load 98(nu_ii) 287: 36(float) Load 38(b) 288: 100(ptr) AccessChain 108(storageBuffer) 286 59 Store 288 287 Return FunctionEnd 11(foo(i1;i1;): 6(int) Function None 8 9(nupi): 7(ptr) FunctionParameter 10(f): 7(ptr) FunctionParameter 12: Label 13: 6(int) Load 9(nupi) ReturnValue 13 FunctionEnd glslang-16.0.0/Test/baseResults/spv.nonuniform2.frag.out000066400000000000000000000053201506534232700232010ustar00rootroot00000000000000spv.nonuniform2.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader Capability ImageBuffer Capability ShaderNonUniformEXT Capability RuntimeDescriptorArrayEXT Capability StorageTexelBufferArrayNonUniformIndexingEXT Extension "SPV_EXT_descriptor_indexing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 16 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_nonuniform_qualifier" Name 4 "main" Name 9 "FragColor" Name 13 "data" Name 16 "rIndex" Decorate 9(FragColor) Location 0 Decorate 13(data) Binding 4 Decorate 13(data) DescriptorSet 0 Decorate 16(rIndex) Flat Decorate 16(rIndex) Location 3 Decorate 18 DecorationNonUniformEXT Decorate 20 DecorationNonUniformEXT Decorate 21 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(FragColor): 8(ptr) Variable Output 10: TypeImage 6(float) Buffer nonsampled format:Rgba32f 11: TypeRuntimeArray 10 12: TypePointer UniformConstant 11 13(data): 12(ptr) Variable UniformConstant 14: TypeInt 32 1 15: TypePointer Input 14(int) 16(rIndex): 15(ptr) Variable Input 19: TypePointer UniformConstant 10 22: 14(int) Constant 0 4(main): 2 Function None 3 5: Label 17: 14(int) Load 16(rIndex) 18: 14(int) CopyObject 17 20: 19(ptr) AccessChain 13(data) 18 21: 10 Load 20 23: 7(fvec4) ImageRead 21 22 Store 9(FragColor) 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nonuniform3.frag.out000066400000000000000000000060171506534232700232060ustar00rootroot00000000000000spv.nonuniform3.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader Capability ShaderNonUniformEXT Capability RuntimeDescriptorArrayEXT Extension "SPV_EXT_descriptor_indexing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 16 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_nonuniform_qualifier" Name 4 "main" Name 9 "FragColor" Name 13 "uTex" Name 16 "Index" Name 23 "uSamp" Decorate 9(FragColor) Location 0 Decorate 13(uTex) Binding 0 Decorate 13(uTex) DescriptorSet 0 Decorate 16(Index) Flat Decorate 16(Index) Location 0 Decorate 23(uSamp) Binding 0 Decorate 23(uSamp) DescriptorSet 1 Decorate 27 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(FragColor): 8(ptr) Variable Output 10: TypeImage 6(float) 2D sampled format:Unknown 11: TypeRuntimeArray 10 12: TypePointer UniformConstant 11 13(uTex): 12(ptr) Variable UniformConstant 14: TypeInt 32 1 15: TypePointer Input 14(int) 16(Index): 15(ptr) Variable Input 18: TypePointer UniformConstant 10 21: TypeSampler 22: TypePointer UniformConstant 21 23(uSamp): 22(ptr) Variable UniformConstant 25: TypeSampledImage 10 28: TypeVector 6(float) 2 29: 6(float) Constant 1056964608 30: 28(fvec2) ConstantComposite 29 29 4(main): 2 Function None 3 5: Label 17: 14(int) Load 16(Index) 19: 18(ptr) AccessChain 13(uTex) 17 20: 10 Load 19 24: 21 Load 23(uSamp) 26: 25 SampledImage 20 24 27: 25 CopyObject 26 31: 7(fvec4) ImageSampleImplicitLod 27 30 Store 9(FragColor) 31 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nonuniform4.frag.out000066400000000000000000000050511506534232700232040ustar00rootroot00000000000000spv.nonuniform4.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader Capability ImageBuffer Capability ShaderNonUniformEXT Capability RuntimeDescriptorArrayEXT Capability StorageTexelBufferArrayNonUniformIndexingEXT Extension "SPV_EXT_descriptor_indexing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_nonuniform_qualifier" Name 4 "main" Name 10 "data" Name 13 "rIndex" Decorate 10(data) Binding 4 Decorate 10(data) DescriptorSet 0 Decorate 13(rIndex) Flat Decorate 13(rIndex) Location 3 Decorate 15 DecorationNonUniformEXT Decorate 17 DecorationNonUniformEXT Decorate 21 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeImage 6(int) Buffer nonsampled format:R32ui 8: TypeRuntimeArray 7 9: TypePointer UniformConstant 8 10(data): 9(ptr) Variable UniformConstant 11: TypeInt 32 1 12: TypePointer Input 11(int) 13(rIndex): 12(ptr) Variable Input 16: TypePointer UniformConstant 7 18: 11(int) Constant 0 19: 6(int) Constant 0 20: TypePointer Image 6(int) 22: 6(int) Constant 1 4(main): 2 Function None 3 5: Label 14: 11(int) Load 13(rIndex) 15: 11(int) CopyObject 14 17: 16(ptr) AccessChain 10(data) 15 21: 20(ptr) ImageTexelPointer 17 18 19 23: 6(int) AtomicIAdd 21 22 19 19 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nonuniform5.frag.out000066400000000000000000000054241506534232700232110ustar00rootroot00000000000000spv.nonuniform5.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader Capability ShaderNonUniformEXT Capability RuntimeDescriptorArrayEXT Capability UniformBufferArrayNonUniformIndexingEXT Extension "SPV_EXT_descriptor_indexing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 16 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_nonuniform_qualifier" Name 4 "main" Name 9 "FragColor" Name 10 "UBO" MemberName 10(UBO) 0 "v" Name 13 "ubos" Name 16 "Index" Decorate 9(FragColor) Location 0 Decorate 10(UBO) Block MemberDecorate 10(UBO) 0 Offset 0 Decorate 13(ubos) Binding 0 Decorate 13(ubos) DescriptorSet 0 Decorate 16(Index) Flat Decorate 16(Index) Location 0 Decorate 18 DecorationNonUniformEXT Decorate 21 DecorationNonUniformEXT Decorate 22 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(FragColor): 8(ptr) Variable Output 10(UBO): TypeStruct 7(fvec4) 11: TypeRuntimeArray 10(UBO) 12: TypePointer Uniform 11 13(ubos): 12(ptr) Variable Uniform 14: TypeInt 32 1 15: TypePointer Input 14(int) 16(Index): 15(ptr) Variable Input 19: 14(int) Constant 0 20: TypePointer Uniform 7(fvec4) 4(main): 2 Function None 3 5: Label 17: 14(int) Load 16(Index) 18: 14(int) CopyObject 17 21: 20(ptr) AccessChain 13(ubos) 18 19 22: 7(fvec4) Load 21 Store 9(FragColor) 22 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nullInit.comp.out000066400000000000000000000057531506534232700225540ustar00rootroot00000000000000spv.nullInit.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_EXT_null_initializer" Name 4 "main" Name 12 "S" MemberName 12(S) 0 "v" MemberName 12(S) 1 "a" Name 15 "local" Name 23 "f" Name 24 "T" MemberName 24(T) 0 "b" MemberName 24(T) 1 "s" Name 27 "t1" Name 28 "t2" Name 30 "s" Name 31 "g" Name 34 "i" Name 36 "global" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeInt 32 0 9: 8(int) Constant 4 10: TypeArray 7(fvec3) 9 11: TypeInt 32 1 12(S): TypeStruct 10 11(int) 13: 12(S) ConstantNull 14: TypePointer Function 12(S) 16: 11(int) Constant 1 17: TypePointer Function 11(int) 21: 6(float) ConstantNull 22: TypePointer Workgroup 6(float) 23(f): 22(ptr) Variable Workgroup 21 24(T): TypeStruct 11(int) 12(S) 25: 24(T) ConstantNull 26: TypePointer Workgroup 24(T) 27(t1): 26(ptr) Variable Workgroup 25 28(t2): 26(ptr) Variable Workgroup 25 29: TypePointer Workgroup 12(S) 30(s): 29(ptr) Variable Workgroup 13 31(g): 22(ptr) Variable Workgroup 21 32: 11(int) ConstantNull 33: TypePointer Workgroup 11(int) 34(i): 33(ptr) Variable Workgroup 32 35: TypePointer Private 12(S) 36(global): 35(ptr) Variable Private 13 4(main): 2 Function None 3 5: Label 15(local): 14(ptr) Variable Function 13 18: 17(ptr) AccessChain 15(local) 16 19: 11(int) Load 18 20: 11(int) IAdd 19 16 Store 18 20 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.cluster-allops.frag.out000066400000000000000000000056201506534232700243230ustar00rootroot00000000000000spv.nv.cluster-allops.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader Capability RayQueryKHR Capability RayTracingClusterAccelerationStructureNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_cluster_acceleration_structure" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 30 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_cluster_acceleration_structure" Name 4 "main" Name 8 "id_candidate" Name 11 "rq" Name 16 "id_committed" Name 21 "test" Name 30 "as" Decorate 30(as) Binding 1 Decorate 30(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypeRayQueryKHR 10: TypePointer Private 9 11(rq): 10(ptr) Variable Private 12: TypeBool 13: 12(bool) ConstantFalse 14: 6(int) Constant 0 17: 12(bool) ConstantTrue 18: 6(int) Constant 1 20: TypePointer Function 12(bool) 23: 6(int) Constant 4294967295 28: TypeAccelerationStructureKHR 29: TypePointer UniformConstant 28 30(as): 29(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(id_candidate): 7(ptr) Variable Function 16(id_committed): 7(ptr) Variable Function 21(test): 20(ptr) Variable Function 15: 6(int) RayQueryGetIntersectionClusterIdNV 11(rq) 14 Store 8(id_candidate) 15 19: 6(int) RayQueryGetIntersectionClusterIdNV 11(rq) 18 Store 16(id_committed) 19 22: 6(int) Load 8(id_candidate) 24: 12(bool) IEqual 22 23 25: 6(int) Load 16(id_committed) 26: 12(bool) IEqual 25 23 27: 12(bool) LogicalAnd 24 26 Store 21(test) 27 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.cluster-allops.rahit.out000066400000000000000000000066351506534232700245220ustar00rootroot00000000000000spv.nv.cluster-allops.rahit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 35 Capability RayQueryKHR Capability RayTracingKHR Capability RayTracingClusterAccelerationStructureNV Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_cluster_acceleration_structure" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint AnyHitKHR 4 "main" 10 15 34 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_cluster_acceleration_structure" Name 4 "main" Name 8 "clusterid" Name 10 "gl_ClusterIDNV" Name 12 "id_candidate" Name 15 "rq" Name 20 "id_committed" Name 25 "test" Name 34 "as" Decorate 10(gl_ClusterIDNV) BuiltIn ClusterIDNV Decorate 34(as) Binding 1 Decorate 34(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_ClusterIDNV): 9(ptr) Variable Input 13: TypeRayQueryKHR 14: TypePointer Private 13 15(rq): 14(ptr) Variable Private 16: TypeBool 17: 16(bool) ConstantFalse 18: 6(int) Constant 0 21: 16(bool) ConstantTrue 22: 6(int) Constant 1 24: TypePointer Function 16(bool) 27: 6(int) Constant 4294967295 32: TypeAccelerationStructureKHR 33: TypePointer UniformConstant 32 34(as): 33(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(clusterid): 7(ptr) Variable Function 12(id_candidate): 7(ptr) Variable Function 20(id_committed): 7(ptr) Variable Function 25(test): 24(ptr) Variable Function 11: 6(int) Load 10(gl_ClusterIDNV) Store 8(clusterid) 11 19: 6(int) RayQueryGetIntersectionClusterIdNV 15(rq) 18 Store 12(id_candidate) 19 23: 6(int) RayQueryGetIntersectionClusterIdNV 15(rq) 22 Store 20(id_committed) 23 26: 6(int) Load 12(id_candidate) 28: 16(bool) IEqual 26 27 29: 6(int) Load 20(id_committed) 30: 16(bool) IEqual 29 27 31: 16(bool) LogicalAnd 28 30 Store 25(test) 31 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.cluster-allops.rchit.out000066400000000000000000000100341506534232700245100ustar00rootroot00000000000000spv.nv.cluster-allops.rchit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 40 Capability RayQueryKHR Capability RayTracingKHR Capability ShaderInvocationReorderNV Capability RayTracingClusterAccelerationStructureNV Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_cluster_acceleration_structure" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint ClosestHitKHR 4 "main" 11 15 20 39 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_cluster_acceleration_structure" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 8 "hitObjId" Name 11 "hitObj" Name 13 "clusterid" Name 15 "gl_ClusterIDNV" Name 17 "id_candidate" Name 20 "rq" Name 25 "id_committed" Name 30 "test" Name 39 "as" Decorate 15(gl_ClusterIDNV) BuiltIn ClusterIDNV Decorate 39(as) Binding 1 Decorate 39(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypeHitObjectNV 10: TypePointer Private 9 11(hitObj): 10(ptr) Variable Private 14: TypePointer Input 6(int) 15(gl_ClusterIDNV): 14(ptr) Variable Input 18: TypeRayQueryKHR 19: TypePointer Private 18 20(rq): 19(ptr) Variable Private 21: TypeBool 22: 21(bool) ConstantFalse 23: 6(int) Constant 0 26: 21(bool) ConstantTrue 27: 6(int) Constant 1 29: TypePointer Function 21(bool) 32: 6(int) Constant 4294967295 37: TypeAccelerationStructureKHR 38: TypePointer UniformConstant 37 39(as): 38(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(hitObjId): 7(ptr) Variable Function 13(clusterid): 7(ptr) Variable Function 17(id_candidate): 7(ptr) Variable Function 25(id_committed): 7(ptr) Variable Function 30(test): 29(ptr) Variable Function 12: 6(int) HitObjectGetClusterIdNV 11(hitObj) Store 8(hitObjId) 12 16: 6(int) Load 15(gl_ClusterIDNV) Store 13(clusterid) 16 24: 6(int) RayQueryGetIntersectionClusterIdNV 20(rq) 23 Store 17(id_candidate) 24 28: 6(int) RayQueryGetIntersectionClusterIdNV 20(rq) 27 Store 25(id_committed) 28 31: 6(int) Load 17(id_candidate) 33: 21(bool) IEqual 31 32 34: 6(int) Load 25(id_committed) 35: 21(bool) IEqual 34 32 36: 21(bool) LogicalAnd 33 35 Store 30(test) 36 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.cluster-allops.rgen.out000066400000000000000000000071411506534232700243370ustar00rootroot00000000000000spv.nv.cluster-allops.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 36 Capability RayQueryKHR Capability RayTracingKHR Capability ShaderInvocationReorderNV Capability RayTracingClusterAccelerationStructureNV Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_cluster_acceleration_structure" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 16 35 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_cluster_acceleration_structure" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 8 "hitObjId" Name 11 "hitObj" Name 13 "id_candidate" Name 16 "rq" Name 21 "id_committed" Name 26 "test" Name 35 "as" Decorate 35(as) Binding 1 Decorate 35(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypeHitObjectNV 10: TypePointer Private 9 11(hitObj): 10(ptr) Variable Private 14: TypeRayQueryKHR 15: TypePointer Private 14 16(rq): 15(ptr) Variable Private 17: TypeBool 18: 17(bool) ConstantFalse 19: 6(int) Constant 0 22: 17(bool) ConstantTrue 23: 6(int) Constant 1 25: TypePointer Function 17(bool) 28: 6(int) Constant 4294967295 33: TypeAccelerationStructureKHR 34: TypePointer UniformConstant 33 35(as): 34(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(hitObjId): 7(ptr) Variable Function 13(id_candidate): 7(ptr) Variable Function 21(id_committed): 7(ptr) Variable Function 26(test): 25(ptr) Variable Function 12: 6(int) HitObjectGetClusterIdNV 11(hitObj) Store 8(hitObjId) 12 20: 6(int) RayQueryGetIntersectionClusterIdNV 16(rq) 19 Store 13(id_candidate) 20 24: 6(int) RayQueryGetIntersectionClusterIdNV 16(rq) 23 Store 21(id_committed) 24 27: 6(int) Load 13(id_candidate) 29: 17(bool) IEqual 27 28 30: 6(int) Load 21(id_committed) 31: 17(bool) IEqual 30 28 32: 17(bool) LogicalAnd 29 31 Store 26(test) 32 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.cluster-allops.rmiss.out000066400000000000000000000071311506534232700245400ustar00rootroot00000000000000spv.nv.cluster-allops.rmiss // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 36 Capability RayQueryKHR Capability RayTracingKHR Capability ShaderInvocationReorderNV Capability RayTracingClusterAccelerationStructureNV Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_cluster_acceleration_structure" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MissKHR 4 "main" 11 16 35 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_cluster_acceleration_structure" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 8 "hitObjId" Name 11 "hitObj" Name 13 "id_candidate" Name 16 "rq" Name 21 "id_committed" Name 26 "test" Name 35 "as" Decorate 35(as) Binding 1 Decorate 35(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypeHitObjectNV 10: TypePointer Private 9 11(hitObj): 10(ptr) Variable Private 14: TypeRayQueryKHR 15: TypePointer Private 14 16(rq): 15(ptr) Variable Private 17: TypeBool 18: 17(bool) ConstantFalse 19: 6(int) Constant 0 22: 17(bool) ConstantTrue 23: 6(int) Constant 1 25: TypePointer Function 17(bool) 28: 6(int) Constant 4294967295 33: TypeAccelerationStructureKHR 34: TypePointer UniformConstant 33 35(as): 34(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(hitObjId): 7(ptr) Variable Function 13(id_candidate): 7(ptr) Variable Function 21(id_committed): 7(ptr) Variable Function 26(test): 25(ptr) Variable Function 12: 6(int) HitObjectGetClusterIdNV 11(hitObj) Store 8(hitObjId) 12 20: 6(int) RayQueryGetIntersectionClusterIdNV 16(rq) 19 Store 13(id_candidate) 20 24: 6(int) RayQueryGetIntersectionClusterIdNV 16(rq) 23 Store 21(id_committed) 24 27: 6(int) Load 13(id_candidate) 29: 17(bool) IEqual 27 28 30: 6(int) Load 21(id_committed) 31: 17(bool) IEqual 30 28 32: 17(bool) LogicalAnd 29 31 Store 26(test) 32 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.dmm-allops.comp.out000066400000000000000000000113731506534232700234400ustar00rootroot00000000000000spv.nv.dmm-allops.comp // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 59 Capability Shader Capability RayQueryKHR Capability DisplacementMicromapNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_displacement_micromap" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 11 16 ExecutionMode 4 LocalSize 16 1 1 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_displacement_micromap" Name 4 "main" Name 9 "block" MemberName 9(block) 0 "op_pos" MemberName 9(block) 1 "op_bary" Name 11 "" Name 16 "as" Decorate 9(block) Block MemberDecorate 9(block) 0 Offset 0 MemberDecorate 9(block) 1 Offset 16 Decorate 11 Binding 0 Decorate 11 DescriptorSet 0 Decorate 16(as) Binding 1 Decorate 16(as) DescriptorSet 0 Decorate 58 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeVector 6(float) 2 9(block): TypeStruct 7(fvec3) 8(fvec2) 10: TypePointer StorageBuffer 9(block) 11: 10(ptr) Variable StorageBuffer 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypeAccelerationStructureKHR 15: TypePointer UniformConstant 14 16(as): 15(ptr) Variable UniformConstant 18: 12(int) Constant 1 19: TypeVector 12(int) 2 20: 19(ivec2) ConstantComposite 13 13 22: TypePointer StorageBuffer 7(fvec3) 25: 19(ivec2) ConstantComposite 13 18 32: 19(ivec2) ConstantComposite 18 13 40: TypePointer StorageBuffer 8(fvec2) 54: TypeInt 32 0 55: TypeVector 54(int) 3 56: 54(int) Constant 16 57: 54(int) Constant 1 58: 55(ivec3) ConstantComposite 56 57 57 4(main): 2 Function None 3 5: Label 17: 14 Load 16(as) 21: 7(fvec3) FetchMicroTriangleVertexPositionNV 17 18 18 18 20 23: 22(ptr) AccessChain 11 13 Store 23 21 24: 14 Load 16(as) 26: 7(fvec3) FetchMicroTriangleVertexPositionNV 24 18 18 18 25 27: 22(ptr) AccessChain 11 13 28: 7(fvec3) Load 27 29: 7(fvec3) FAdd 28 26 30: 22(ptr) AccessChain 11 13 Store 30 29 31: 14 Load 16(as) 33: 7(fvec3) FetchMicroTriangleVertexPositionNV 31 18 18 18 32 34: 22(ptr) AccessChain 11 13 35: 7(fvec3) Load 34 36: 7(fvec3) FAdd 35 33 37: 22(ptr) AccessChain 11 13 Store 37 36 38: 14 Load 16(as) 39: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 38 18 18 18 20 41: 40(ptr) AccessChain 11 18 Store 41 39 42: 14 Load 16(as) 43: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 42 18 18 18 25 44: 40(ptr) AccessChain 11 18 45: 8(fvec2) Load 44 46: 8(fvec2) FAdd 45 43 47: 40(ptr) AccessChain 11 18 Store 47 46 48: 14 Load 16(as) 49: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 48 18 18 18 32 50: 40(ptr) AccessChain 11 18 51: 8(fvec2) Load 50 52: 8(fvec2) FAdd 51 49 53: 40(ptr) AccessChain 11 18 Store 53 52 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.dmm-allops.mesh.out000066400000000000000000000114301506534232700234300ustar00rootroot00000000000000spv.nv.dmm-allops.mesh // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 54 Capability RayQueryKHR Capability MeshShadingNV Capability DisplacementMicromapNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_displacement_micromap" Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshNV 4 "main" 11 16 ExecutionMode 4 LocalSize 1 1 1 ExecutionMode 4 OutputVertices 8 ExecutionMode 4 OutputPrimitivesNV 16 ExecutionMode 4 OutputTrianglesNV Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_displacement_micromap" SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 9 "block" MemberName 9(block) 0 "op_pos" MemberName 9(block) 1 "op_bary" Name 11 "" Name 16 "as" Decorate 9(block) Block MemberDecorate 9(block) 0 Offset 0 MemberDecorate 9(block) 1 Offset 16 Decorate 11 Binding 0 Decorate 11 DescriptorSet 0 Decorate 16(as) Binding 1 Decorate 16(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeVector 6(float) 2 9(block): TypeStruct 7(fvec3) 8(fvec2) 10: TypePointer StorageBuffer 9(block) 11: 10(ptr) Variable StorageBuffer 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypeAccelerationStructureKHR 15: TypePointer UniformConstant 14 16(as): 15(ptr) Variable UniformConstant 18: 12(int) Constant 1 19: TypeVector 12(int) 2 20: 19(ivec2) ConstantComposite 13 13 22: TypePointer StorageBuffer 7(fvec3) 25: 19(ivec2) ConstantComposite 13 18 32: 19(ivec2) ConstantComposite 18 13 40: TypePointer StorageBuffer 8(fvec2) 4(main): 2 Function None 3 5: Label 17: 14 Load 16(as) 21: 7(fvec3) FetchMicroTriangleVertexPositionNV 17 18 18 18 20 23: 22(ptr) AccessChain 11 13 Store 23 21 24: 14 Load 16(as) 26: 7(fvec3) FetchMicroTriangleVertexPositionNV 24 18 18 18 25 27: 22(ptr) AccessChain 11 13 28: 7(fvec3) Load 27 29: 7(fvec3) FAdd 28 26 30: 22(ptr) AccessChain 11 13 Store 30 29 31: 14 Load 16(as) 33: 7(fvec3) FetchMicroTriangleVertexPositionNV 31 18 18 18 32 34: 22(ptr) AccessChain 11 13 35: 7(fvec3) Load 34 36: 7(fvec3) FAdd 35 33 37: 22(ptr) AccessChain 11 13 Store 37 36 38: 14 Load 16(as) 39: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 38 18 18 18 20 41: 40(ptr) AccessChain 11 18 Store 41 39 42: 14 Load 16(as) 43: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 42 18 18 18 25 44: 40(ptr) AccessChain 11 18 45: 8(fvec2) Load 44 46: 8(fvec2) FAdd 45 43 47: 40(ptr) AccessChain 11 18 Store 47 46 48: 14 Load 16(as) 49: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 48 18 18 18 32 50: 40(ptr) AccessChain 11 18 51: 8(fvec2) Load 50 52: 8(fvec2) FAdd 51 49 53: 40(ptr) AccessChain 11 18 Store 53 52 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.dmm-allops.rahit.out000066400000000000000000000154671506534232700236210ustar00rootroot00000000000000spv.nv.dmm-allops.rahit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 77 Capability RayTracingKHR Capability RayTracingDisplacementMicromapNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_displacement_micromap" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint AnyHitKHR 4 "main" 12 18 40 59 64 67 76 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_displacement_micromap" Name 4 "main" Name 10 "block" MemberName 10(block) 0 "op_pos" MemberName 10(block) 1 "op_bary" MemberName 10(block) 2 "op_hit" Name 12 "" Name 18 "gl_HitMicroTriangleVertexPositionsNV" Name 40 "gl_HitMicroTriangleVertexBarycentricsNV" Name 59 "gl_HitKindEXT" Name 64 "gl_HitKindFrontFacingMicroTriangleNV" Name 67 "gl_HitKindBackFacingMicroTriangleNV" Name 76 "as" Decorate 10(block) Block MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 16 MemberDecorate 10(block) 2 Offset 24 Decorate 12 Binding 0 Decorate 12 DescriptorSet 0 Decorate 18(gl_HitMicroTriangleVertexPositionsNV) BuiltIn HitMicroTriangleVertexPositionsNV Decorate 40(gl_HitMicroTriangleVertexBarycentricsNV) BuiltIn HitMicroTriangleVertexBarycentricsNV Decorate 59(gl_HitKindEXT) BuiltIn HitKindKHR Decorate 64(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV Decorate 67(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV Decorate 76(as) Binding 1 Decorate 76(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeVector 6(float) 2 9: TypeInt 32 0 10(block): TypeStruct 7(fvec3) 8(fvec2) 9(int) 11: TypePointer StorageBuffer 10(block) 12: 11(ptr) Variable StorageBuffer 13: TypeInt 32 1 14: 13(int) Constant 0 15: 9(int) Constant 3 16: TypeArray 7(fvec3) 15 17: TypePointer Input 16 18(gl_HitMicroTriangleVertexPositionsNV): 17(ptr) Variable Input 19: TypePointer Input 7(fvec3) 22: TypePointer StorageBuffer 7(fvec3) 24: 13(int) Constant 1 31: 13(int) Constant 2 38: TypeArray 8(fvec2) 15 39: TypePointer Input 38 40(gl_HitMicroTriangleVertexBarycentricsNV): 39(ptr) Variable Input 41: TypePointer Input 8(fvec2) 44: TypePointer StorageBuffer 8(fvec2) 58: TypePointer Input 9(int) 59(gl_HitKindEXT): 58(ptr) Variable Input 61: TypePointer StorageBuffer 9(int) 63: 9(int) Constant 255 64(gl_HitKindFrontFacingMicroTriangleNV): 58(ptr) Variable Input 67(gl_HitKindBackFacingMicroTriangleNV): 58(ptr) Variable Input 74: TypeAccelerationStructureKHR 75: TypePointer UniformConstant 74 76(as): 75(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 20: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 14 21: 7(fvec3) Load 20 23: 22(ptr) AccessChain 12 14 Store 23 21 25: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 24 26: 7(fvec3) Load 25 27: 22(ptr) AccessChain 12 14 28: 7(fvec3) Load 27 29: 7(fvec3) FAdd 28 26 30: 22(ptr) AccessChain 12 14 Store 30 29 32: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 31 33: 7(fvec3) Load 32 34: 22(ptr) AccessChain 12 14 35: 7(fvec3) Load 34 36: 7(fvec3) FAdd 35 33 37: 22(ptr) AccessChain 12 14 Store 37 36 42: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 14 43: 8(fvec2) Load 42 45: 44(ptr) AccessChain 12 24 Store 45 43 46: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 24 47: 8(fvec2) Load 46 48: 44(ptr) AccessChain 12 24 49: 8(fvec2) Load 48 50: 8(fvec2) FAdd 49 47 51: 44(ptr) AccessChain 12 24 Store 51 50 52: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 31 53: 8(fvec2) Load 52 54: 44(ptr) AccessChain 12 24 55: 8(fvec2) Load 54 56: 8(fvec2) FAdd 55 53 57: 44(ptr) AccessChain 12 24 Store 57 56 60: 9(int) Load 59(gl_HitKindEXT) 62: 61(ptr) AccessChain 12 31 Store 62 60 65: 9(int) Load 64(gl_HitKindFrontFacingMicroTriangleNV) 66: 9(int) BitwiseOr 63 65 68: 9(int) Load 67(gl_HitKindBackFacingMicroTriangleNV) 69: 9(int) BitwiseOr 66 68 70: 61(ptr) AccessChain 12 31 71: 9(int) Load 70 72: 9(int) BitwiseAnd 71 69 73: 61(ptr) AccessChain 12 31 Store 73 72 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.dmm-allops.rchit.out000066400000000000000000000154731506534232700236200ustar00rootroot00000000000000spv.nv.dmm-allops.rchit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 77 Capability RayTracingKHR Capability RayTracingDisplacementMicromapNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_displacement_micromap" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint ClosestHitKHR 4 "main" 12 18 40 59 64 67 76 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_displacement_micromap" Name 4 "main" Name 10 "block" MemberName 10(block) 0 "op_pos" MemberName 10(block) 1 "op_bary" MemberName 10(block) 2 "op_hit" Name 12 "" Name 18 "gl_HitMicroTriangleVertexPositionsNV" Name 40 "gl_HitMicroTriangleVertexBarycentricsNV" Name 59 "gl_HitKindEXT" Name 64 "gl_HitKindFrontFacingMicroTriangleNV" Name 67 "gl_HitKindBackFacingMicroTriangleNV" Name 76 "as" Decorate 10(block) Block MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 16 MemberDecorate 10(block) 2 Offset 24 Decorate 12 Binding 0 Decorate 12 DescriptorSet 0 Decorate 18(gl_HitMicroTriangleVertexPositionsNV) BuiltIn HitMicroTriangleVertexPositionsNV Decorate 40(gl_HitMicroTriangleVertexBarycentricsNV) BuiltIn HitMicroTriangleVertexBarycentricsNV Decorate 59(gl_HitKindEXT) BuiltIn HitKindKHR Decorate 64(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV Decorate 67(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV Decorate 76(as) Binding 1 Decorate 76(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeVector 6(float) 2 9: TypeInt 32 0 10(block): TypeStruct 7(fvec3) 8(fvec2) 9(int) 11: TypePointer StorageBuffer 10(block) 12: 11(ptr) Variable StorageBuffer 13: TypeInt 32 1 14: 13(int) Constant 0 15: 9(int) Constant 3 16: TypeArray 7(fvec3) 15 17: TypePointer Input 16 18(gl_HitMicroTriangleVertexPositionsNV): 17(ptr) Variable Input 19: TypePointer Input 7(fvec3) 22: TypePointer StorageBuffer 7(fvec3) 24: 13(int) Constant 1 31: 13(int) Constant 2 38: TypeArray 8(fvec2) 15 39: TypePointer Input 38 40(gl_HitMicroTriangleVertexBarycentricsNV): 39(ptr) Variable Input 41: TypePointer Input 8(fvec2) 44: TypePointer StorageBuffer 8(fvec2) 58: TypePointer Input 9(int) 59(gl_HitKindEXT): 58(ptr) Variable Input 61: TypePointer StorageBuffer 9(int) 63: 9(int) Constant 255 64(gl_HitKindFrontFacingMicroTriangleNV): 58(ptr) Variable Input 67(gl_HitKindBackFacingMicroTriangleNV): 58(ptr) Variable Input 74: TypeAccelerationStructureKHR 75: TypePointer UniformConstant 74 76(as): 75(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 20: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 14 21: 7(fvec3) Load 20 23: 22(ptr) AccessChain 12 14 Store 23 21 25: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 24 26: 7(fvec3) Load 25 27: 22(ptr) AccessChain 12 14 28: 7(fvec3) Load 27 29: 7(fvec3) FAdd 28 26 30: 22(ptr) AccessChain 12 14 Store 30 29 32: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 31 33: 7(fvec3) Load 32 34: 22(ptr) AccessChain 12 14 35: 7(fvec3) Load 34 36: 7(fvec3) FAdd 35 33 37: 22(ptr) AccessChain 12 14 Store 37 36 42: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 14 43: 8(fvec2) Load 42 45: 44(ptr) AccessChain 12 24 Store 45 43 46: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 24 47: 8(fvec2) Load 46 48: 44(ptr) AccessChain 12 24 49: 8(fvec2) Load 48 50: 8(fvec2) FAdd 49 47 51: 44(ptr) AccessChain 12 24 Store 51 50 52: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 31 53: 8(fvec2) Load 52 54: 44(ptr) AccessChain 12 24 55: 8(fvec2) Load 54 56: 8(fvec2) FAdd 55 53 57: 44(ptr) AccessChain 12 24 Store 57 56 60: 9(int) Load 59(gl_HitKindEXT) 62: 61(ptr) AccessChain 12 31 Store 62 60 65: 9(int) Load 64(gl_HitKindFrontFacingMicroTriangleNV) 66: 9(int) BitwiseOr 63 65 68: 9(int) Load 67(gl_HitKindBackFacingMicroTriangleNV) 69: 9(int) BitwiseOr 66 68 70: 61(ptr) AccessChain 12 31 71: 9(int) Load 70 72: 9(int) BitwiseAnd 71 69 73: 61(ptr) AccessChain 12 31 Store 73 72 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.dmm-allops.rgen.out000066400000000000000000000132511506534232700234320ustar00rootroot00000000000000spv.nv.dmm-allops.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 66 Capability RayTracingKHR Capability DisplacementMicromapNV Capability RayTracingDisplacementMicromapNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_displacement_micromap" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 12 17 58 61 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_displacement_micromap" Name 4 "main" Name 10 "block" MemberName 10(block) 0 "op_pos" MemberName 10(block) 1 "op_bary" MemberName 10(block) 2 "op_hitmask" Name 12 "" Name 17 "as" Name 58 "gl_HitKindFrontFacingMicroTriangleNV" Name 61 "gl_HitKindBackFacingMicroTriangleNV" Decorate 10(block) Block MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 16 MemberDecorate 10(block) 2 Offset 24 Decorate 12 Binding 0 Decorate 12 DescriptorSet 0 Decorate 17(as) Binding 1 Decorate 17(as) DescriptorSet 0 Decorate 58(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV Decorate 61(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeVector 6(float) 2 9: TypeInt 32 0 10(block): TypeStruct 7(fvec3) 8(fvec2) 9(int) 11: TypePointer StorageBuffer 10(block) 12: 11(ptr) Variable StorageBuffer 13: TypeInt 32 1 14: 13(int) Constant 0 15: TypeAccelerationStructureKHR 16: TypePointer UniformConstant 15 17(as): 16(ptr) Variable UniformConstant 19: 13(int) Constant 1 20: TypeVector 13(int) 2 21: 20(ivec2) ConstantComposite 14 14 23: TypePointer StorageBuffer 7(fvec3) 26: 20(ivec2) ConstantComposite 14 19 33: 20(ivec2) ConstantComposite 19 14 41: TypePointer StorageBuffer 8(fvec2) 55: 13(int) Constant 2 56: 9(int) Constant 255 57: TypePointer Input 9(int) 58(gl_HitKindFrontFacingMicroTriangleNV): 57(ptr) Variable Input 61(gl_HitKindBackFacingMicroTriangleNV): 57(ptr) Variable Input 64: TypePointer StorageBuffer 9(int) 4(main): 2 Function None 3 5: Label 18: 15 Load 17(as) 22: 7(fvec3) FetchMicroTriangleVertexPositionNV 18 19 19 19 21 24: 23(ptr) AccessChain 12 14 Store 24 22 25: 15 Load 17(as) 27: 7(fvec3) FetchMicroTriangleVertexPositionNV 25 19 19 19 26 28: 23(ptr) AccessChain 12 14 29: 7(fvec3) Load 28 30: 7(fvec3) FAdd 29 27 31: 23(ptr) AccessChain 12 14 Store 31 30 32: 15 Load 17(as) 34: 7(fvec3) FetchMicroTriangleVertexPositionNV 32 19 19 19 33 35: 23(ptr) AccessChain 12 14 36: 7(fvec3) Load 35 37: 7(fvec3) FAdd 36 34 38: 23(ptr) AccessChain 12 14 Store 38 37 39: 15 Load 17(as) 40: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 39 19 19 19 21 42: 41(ptr) AccessChain 12 19 Store 42 40 43: 15 Load 17(as) 44: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 43 19 19 19 26 45: 41(ptr) AccessChain 12 19 46: 8(fvec2) Load 45 47: 8(fvec2) FAdd 46 44 48: 41(ptr) AccessChain 12 19 Store 48 47 49: 15 Load 17(as) 50: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 49 19 19 19 33 51: 41(ptr) AccessChain 12 19 52: 8(fvec2) Load 51 53: 8(fvec2) FAdd 52 50 54: 41(ptr) AccessChain 12 19 Store 54 53 59: 9(int) Load 58(gl_HitKindFrontFacingMicroTriangleNV) 60: 9(int) BitwiseOr 56 59 62: 9(int) Load 61(gl_HitKindBackFacingMicroTriangleNV) 63: 9(int) BitwiseOr 60 62 65: 64(ptr) AccessChain 12 55 Store 65 63 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.hitobject-allops.rchit.out000066400000000000000000000264401506534232700250120ustar00rootroot00000000000000spv.nv.hitobject-allops.rchit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 116 Capability RayTracingKHR Capability ShaderInvocationReorderNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint ClosestHitKHR 4 "main" 9 14 22 25 36 42 48 52 53 64 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_ray_tracing_motion_blur" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 9 "attr" Name 12 "hBlock" MemberName 12(hBlock) 0 "attrval" Name 14 "" Name 22 "hObj" Name 25 "as" Name 36 "payload" Name 40 "pBlock" MemberName 40(pBlock) 0 "val1" MemberName 40(pBlock) 1 "val2" Name 42 "" Name 48 "hObjHit" Name 52 "hObjNop" Name 53 "hObjMiss" Name 62 "block" MemberName 62(block) 0 "op" Name 64 "" Name 79 "tmin" Name 81 "tmax" Name 84 "orig" Name 86 "dir" Name 88 "oorig" Name 90 "odir" Name 94 "otw" Name 96 "wto" Name 99 "cid" Name 101 "iid" Name 103 "pid" Name 105 "gid" Name 108 "hkind" Name 112 "handle" Name 114 "rid" Decorate 12(hBlock) Block Decorate 25(as) Binding 0 Decorate 25(as) DescriptorSet 0 Decorate 40(pBlock) Block Decorate 62(block) Block MemberDecorate 62(block) 0 Offset 0 Decorate 64 Binding 1 Decorate 64 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer HitObjectAttributeNV 7(fvec2) 9(attr): 8(ptr) Variable HitObjectAttributeNV 10: 6(float) Constant 1065353216 11: 7(fvec2) ConstantComposite 10 10 12(hBlock): TypeStruct 6(float) 13: TypePointer HitObjectAttributeNV 12(hBlock) 14: 13(ptr) Variable HitObjectAttributeNV 15: TypeInt 32 1 16: 15(int) Constant 0 17: 6(float) Constant 1073741824 18: TypePointer HitObjectAttributeNV 6(float) 20: TypeHitObjectNV 21: TypePointer Private 20 22(hObj): 21(ptr) Variable Private 23: TypeAccelerationStructureKHR 24: TypePointer UniformConstant 23 25(as): 24(ptr) Variable UniformConstant 27: TypeInt 32 0 28: 27(int) Constant 1 29: TypeVector 6(float) 3 30: 6(float) Constant 1056964608 31: 29(fvec3) ConstantComposite 30 30 30 32: 29(fvec3) ConstantComposite 10 10 10 33: 15(int) Constant 1 34: TypeVector 6(float) 4 35: TypePointer RayPayloadKHR 34(fvec4) 36(payload): 35(ptr) Variable RayPayloadKHR 38: 6(float) Constant 1092616192 39: 15(int) Constant 2 40(pBlock): TypeStruct 7(fvec2) 7(fvec2) 41: TypePointer RayPayloadKHR 40(pBlock) 42: 41(ptr) Variable RayPayloadKHR 44: 27(int) Constant 2 45: 29(fvec3) ConstantComposite 17 17 17 47: 6(float) Constant 1082130432 48(hObjHit): 21(ptr) Variable Private 50: 15(int) Constant 3 52(hObjNop): 21(ptr) Variable Private 53(hObjMiss): 21(ptr) Variable Private 54: 6(float) Constant 1069547520 55: 29(fvec3) ConstantComposite 54 54 54 56: 6(float) Constant 1084227584 57: 6(float) Constant 1090519040 58: TypeBool 62(block): TypeStruct 6(float) 63: TypePointer StorageBuffer 62(block) 64: 63(ptr) Variable StorageBuffer 65: TypePointer StorageBuffer 6(float) 76: 6(float) Constant 1077936128 78: TypePointer Function 6(float) 83: TypePointer Function 29(fvec3) 92: TypeMatrix 29(fvec3) 4 93: TypePointer Function 92 98: TypePointer Function 15(int) 107: TypePointer Function 27(int) 110: TypeVector 27(int) 2 111: TypePointer Function 110(ivec2) 4(main): 2 Function None 3 5: Label 79(tmin): 78(ptr) Variable Function 81(tmax): 78(ptr) Variable Function 84(orig): 83(ptr) Variable Function 86(dir): 83(ptr) Variable Function 88(oorig): 83(ptr) Variable Function 90(odir): 83(ptr) Variable Function 94(otw): 93(ptr) Variable Function 96(wto): 93(ptr) Variable Function 99(cid): 98(ptr) Variable Function 101(iid): 98(ptr) Variable Function 103(pid): 98(ptr) Variable Function 105(gid): 98(ptr) Variable Function 108(hkind): 107(ptr) Variable Function 112(handle): 111(ptr) Variable Function 114(rid): 107(ptr) Variable Function Store 9(attr) 11 19: 18(ptr) AccessChain 14 16 Store 19 17 26: 23 Load 25(as) HitObjectTraceRayNV 22(hObj) 26 28 28 28 28 28 31 30 32 10 36(payload) 37: 23 Load 25(as) HitObjectTraceRayMotionNV 22(hObj) 37 28 28 28 28 28 31 30 32 10 38 42 43: 23 Load 25(as) HitObjectRecordHitNV 22(hObj) 43 33 33 33 44 44 44 32 10 45 17 9(attr) 46: 23 Load 25(as) HitObjectRecordHitMotionNV 22(hObj) 46 33 33 33 44 44 44 32 10 45 17 47 9(attr) 49: 23 Load 25(as) HitObjectRecordHitWithIndexNV 48(hObjHit) 49 33 33 33 44 44 32 10 45 17 14 51: 23 Load 25(as) HitObjectRecordHitWithIndexMotionNV 48(hObjHit) 51 33 33 33 44 44 32 10 45 17 47 14 HitObjectRecordEmptyNV 52(hObjNop) HitObjectRecordMissNV 53(hObjMiss) 28 31 17 55 56 HitObjectRecordMissMotionNV 53(hObjMiss) 28 31 17 55 56 57 HitObjectExecuteShaderNV 48(hObjHit) 42 59: 58(bool) HitObjectIsHitNV 22(hObj) SelectionMerge 61 None BranchConditional 59 60 67 60: Label 66: 65(ptr) AccessChain 64 16 Store 66 10 Branch 61 67: Label 68: 58(bool) HitObjectIsMissNV 22(hObj) SelectionMerge 70 None BranchConditional 68 69 72 69: Label 71: 65(ptr) AccessChain 64 16 Store 71 17 Branch 70 72: Label 73: 58(bool) HitObjectIsEmptyNV 22(hObj) SelectionMerge 75 None BranchConditional 73 74 75 74: Label 77: 65(ptr) AccessChain 64 16 Store 77 76 Branch 75 75: Label Branch 70 70: Label Branch 61 61: Label 80: 6(float) HitObjectGetRayTMinNV 48(hObjHit) Store 79(tmin) 80 82: 6(float) HitObjectGetRayTMaxNV 48(hObjHit) Store 81(tmax) 82 85: 29(fvec3) HitObjectGetWorldRayOriginNV 48(hObjHit) Store 84(orig) 85 87: 29(fvec3) HitObjectGetWorldRayDirectionNV 48(hObjHit) Store 86(dir) 87 89: 29(fvec3) HitObjectGetObjectRayOriginNV 48(hObjHit) Store 88(oorig) 89 91: 29(fvec3) HitObjectGetObjectRayDirectionNV 48(hObjHit) Store 90(odir) 91 95: 92 HitObjectGetObjectToWorldNV 48(hObjHit) Store 94(otw) 95 97: 92 HitObjectGetWorldToObjectNV 48(hObjHit) Store 96(wto) 97 100: 15(int) HitObjectGetInstanceCustomIndexNV 53(hObjMiss) Store 99(cid) 100 102: 15(int) HitObjectGetInstanceIdNV 52(hObjNop) Store 101(iid) 102 104: 15(int) HitObjectGetPrimitiveIndexNV 22(hObj) Store 103(pid) 104 106: 15(int) HitObjectGetGeometryIndexNV 22(hObj) Store 105(gid) 106 109: 27(int) HitObjectGetFrontFaceNV 22(hObj) Store 108(hkind) 109 HitObjectGetAttributesNV 22(hObj) 9(attr) 113: 110(ivec2) HitObjectGetShaderRecordBufferHandleNV 22(hObj) Store 112(handle) 113 115: 27(int) HitObjectGetShaderBindingTableRecordIndexNV 22(hObj) Store 114(rid) 115 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.hitobject-allops.rgen.out000066400000000000000000000270471506534232700246400ustar00rootroot00000000000000spv.nv.hitobject-allops.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 117 Capability RayTracingKHR Capability ShaderInvocationReorderNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 9 14 22 25 36 42 48 52 53 64 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_ray_tracing_motion_blur" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 9 "attr" Name 12 "hBlock" MemberName 12(hBlock) 0 "attrval" Name 14 "" Name 22 "hObj" Name 25 "as" Name 36 "payload" Name 40 "pBlock" MemberName 40(pBlock) 0 "val1" MemberName 40(pBlock) 1 "val2" Name 42 "" Name 48 "hObjHit" Name 52 "hObjNop" Name 53 "hObjMiss" Name 62 "block" MemberName 62(block) 0 "op" Name 64 "" Name 79 "tmin" Name 81 "tmax" Name 84 "orig" Name 86 "dir" Name 88 "oorig" Name 90 "odir" Name 94 "otw" Name 96 "wto" Name 99 "cid" Name 101 "iid" Name 103 "pid" Name 105 "gid" Name 108 "hkind" Name 112 "handle" Name 114 "rid" Decorate 12(hBlock) Block Decorate 25(as) Binding 0 Decorate 25(as) DescriptorSet 0 Decorate 40(pBlock) Block Decorate 62(block) Block MemberDecorate 62(block) 0 Offset 0 Decorate 64 Binding 1 Decorate 64 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer HitObjectAttributeNV 7(fvec2) 9(attr): 8(ptr) Variable HitObjectAttributeNV 10: 6(float) Constant 1065353216 11: 7(fvec2) ConstantComposite 10 10 12(hBlock): TypeStruct 6(float) 13: TypePointer HitObjectAttributeNV 12(hBlock) 14: 13(ptr) Variable HitObjectAttributeNV 15: TypeInt 32 1 16: 15(int) Constant 0 17: 6(float) Constant 1073741824 18: TypePointer HitObjectAttributeNV 6(float) 20: TypeHitObjectNV 21: TypePointer Private 20 22(hObj): 21(ptr) Variable Private 23: TypeAccelerationStructureKHR 24: TypePointer UniformConstant 23 25(as): 24(ptr) Variable UniformConstant 27: TypeInt 32 0 28: 27(int) Constant 1 29: TypeVector 6(float) 3 30: 6(float) Constant 1056964608 31: 29(fvec3) ConstantComposite 30 30 30 32: 29(fvec3) ConstantComposite 10 10 10 33: 15(int) Constant 1 34: TypeVector 6(float) 4 35: TypePointer RayPayloadKHR 34(fvec4) 36(payload): 35(ptr) Variable RayPayloadKHR 38: 6(float) Constant 1092616192 39: 15(int) Constant 2 40(pBlock): TypeStruct 7(fvec2) 7(fvec2) 41: TypePointer RayPayloadKHR 40(pBlock) 42: 41(ptr) Variable RayPayloadKHR 44: 27(int) Constant 2 45: 29(fvec3) ConstantComposite 17 17 17 47: 6(float) Constant 1082130432 48(hObjHit): 21(ptr) Variable Private 50: 15(int) Constant 3 52(hObjNop): 21(ptr) Variable Private 53(hObjMiss): 21(ptr) Variable Private 54: 6(float) Constant 1069547520 55: 29(fvec3) ConstantComposite 54 54 54 56: 6(float) Constant 1084227584 57: 6(float) Constant 1090519040 58: TypeBool 62(block): TypeStruct 6(float) 63: TypePointer StorageBuffer 62(block) 64: 63(ptr) Variable StorageBuffer 65: TypePointer StorageBuffer 6(float) 76: 6(float) Constant 1077936128 78: TypePointer Function 6(float) 83: TypePointer Function 29(fvec3) 92: TypeMatrix 29(fvec3) 4 93: TypePointer Function 92 98: TypePointer Function 15(int) 107: TypePointer Function 27(int) 110: TypeVector 27(int) 2 111: TypePointer Function 110(ivec2) 116: 27(int) Constant 4 4(main): 2 Function None 3 5: Label 79(tmin): 78(ptr) Variable Function 81(tmax): 78(ptr) Variable Function 84(orig): 83(ptr) Variable Function 86(dir): 83(ptr) Variable Function 88(oorig): 83(ptr) Variable Function 90(odir): 83(ptr) Variable Function 94(otw): 93(ptr) Variable Function 96(wto): 93(ptr) Variable Function 99(cid): 98(ptr) Variable Function 101(iid): 98(ptr) Variable Function 103(pid): 98(ptr) Variable Function 105(gid): 98(ptr) Variable Function 108(hkind): 107(ptr) Variable Function 112(handle): 111(ptr) Variable Function 114(rid): 107(ptr) Variable Function Store 9(attr) 11 19: 18(ptr) AccessChain 14 16 Store 19 17 26: 23 Load 25(as) HitObjectTraceRayNV 22(hObj) 26 28 28 28 28 28 31 30 32 10 36(payload) 37: 23 Load 25(as) HitObjectTraceRayMotionNV 22(hObj) 37 28 28 28 28 28 31 30 32 10 38 42 43: 23 Load 25(as) HitObjectRecordHitNV 22(hObj) 43 33 33 33 44 44 44 32 10 45 17 9(attr) 46: 23 Load 25(as) HitObjectRecordHitMotionNV 22(hObj) 46 33 33 33 44 44 44 32 10 45 17 47 9(attr) 49: 23 Load 25(as) HitObjectRecordHitWithIndexNV 48(hObjHit) 49 33 33 33 44 44 32 10 45 17 14 51: 23 Load 25(as) HitObjectRecordHitWithIndexMotionNV 48(hObjHit) 51 33 33 33 44 44 32 10 45 17 47 14 HitObjectRecordEmptyNV 52(hObjNop) HitObjectRecordMissNV 53(hObjMiss) 28 31 17 55 56 HitObjectRecordMissMotionNV 53(hObjMiss) 28 31 17 55 56 57 HitObjectExecuteShaderNV 48(hObjHit) 36(payload) 59: 58(bool) HitObjectIsHitNV 22(hObj) SelectionMerge 61 None BranchConditional 59 60 67 60: Label 66: 65(ptr) AccessChain 64 16 Store 66 10 Branch 61 67: Label 68: 58(bool) HitObjectIsMissNV 22(hObj) SelectionMerge 70 None BranchConditional 68 69 72 69: Label 71: 65(ptr) AccessChain 64 16 Store 71 17 Branch 70 72: Label 73: 58(bool) HitObjectIsEmptyNV 22(hObj) SelectionMerge 75 None BranchConditional 73 74 75 74: Label 77: 65(ptr) AccessChain 64 16 Store 77 76 Branch 75 75: Label Branch 70 70: Label Branch 61 61: Label 80: 6(float) HitObjectGetRayTMinNV 48(hObjHit) Store 79(tmin) 80 82: 6(float) HitObjectGetRayTMaxNV 48(hObjHit) Store 81(tmax) 82 85: 29(fvec3) HitObjectGetWorldRayOriginNV 48(hObjHit) Store 84(orig) 85 87: 29(fvec3) HitObjectGetWorldRayDirectionNV 48(hObjHit) Store 86(dir) 87 89: 29(fvec3) HitObjectGetObjectRayOriginNV 48(hObjHit) Store 88(oorig) 89 91: 29(fvec3) HitObjectGetObjectRayDirectionNV 48(hObjHit) Store 90(odir) 91 95: 92 HitObjectGetObjectToWorldNV 48(hObjHit) Store 94(otw) 95 97: 92 HitObjectGetWorldToObjectNV 48(hObjHit) Store 96(wto) 97 100: 15(int) HitObjectGetInstanceCustomIndexNV 53(hObjMiss) Store 99(cid) 100 102: 15(int) HitObjectGetInstanceIdNV 52(hObjNop) Store 101(iid) 102 104: 15(int) HitObjectGetPrimitiveIndexNV 22(hObj) Store 103(pid) 104 106: 15(int) HitObjectGetGeometryIndexNV 22(hObj) Store 105(gid) 106 109: 27(int) HitObjectGetFrontFaceNV 22(hObj) Store 108(hkind) 109 HitObjectGetAttributesNV 22(hObj) 9(attr) 113: 110(ivec2) HitObjectGetShaderRecordBufferHandleNV 22(hObj) Store 112(handle) 113 115: 27(int) HitObjectGetShaderBindingTableRecordIndexNV 22(hObj) Store 114(rid) 115 ReorderThreadWithHintNV 116 116 ReorderThreadWithHitObjectNV 48(hObjHit) ReorderThreadWithHitObjectNV 48(hObjHit) 116 44 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.hitobject-allops.rmiss.out000066400000000000000000000264321506534232700250370ustar00rootroot00000000000000spv.nv.hitobject-allops.rmiss // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 116 Capability RayTracingKHR Capability ShaderInvocationReorderNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MissKHR 4 "main" 9 14 22 25 36 42 48 52 53 64 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_ray_tracing_motion_blur" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 9 "attr" Name 12 "hBlock" MemberName 12(hBlock) 0 "attrval" Name 14 "" Name 22 "hObj" Name 25 "as" Name 36 "payload" Name 40 "pBlock" MemberName 40(pBlock) 0 "val1" MemberName 40(pBlock) 1 "val2" Name 42 "" Name 48 "hObjHit" Name 52 "hObjNop" Name 53 "hObjMiss" Name 62 "block" MemberName 62(block) 0 "op" Name 64 "" Name 79 "tmin" Name 81 "tmax" Name 84 "orig" Name 86 "dir" Name 88 "oorig" Name 90 "odir" Name 94 "otw" Name 96 "wto" Name 99 "cid" Name 101 "iid" Name 103 "pid" Name 105 "gid" Name 108 "hkind" Name 112 "handle" Name 114 "rid" Decorate 12(hBlock) Block Decorate 25(as) Binding 0 Decorate 25(as) DescriptorSet 0 Decorate 40(pBlock) Block Decorate 62(block) Block MemberDecorate 62(block) 0 Offset 0 Decorate 64 Binding 1 Decorate 64 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer HitObjectAttributeNV 7(fvec2) 9(attr): 8(ptr) Variable HitObjectAttributeNV 10: 6(float) Constant 1065353216 11: 7(fvec2) ConstantComposite 10 10 12(hBlock): TypeStruct 6(float) 13: TypePointer HitObjectAttributeNV 12(hBlock) 14: 13(ptr) Variable HitObjectAttributeNV 15: TypeInt 32 1 16: 15(int) Constant 0 17: 6(float) Constant 1073741824 18: TypePointer HitObjectAttributeNV 6(float) 20: TypeHitObjectNV 21: TypePointer Private 20 22(hObj): 21(ptr) Variable Private 23: TypeAccelerationStructureKHR 24: TypePointer UniformConstant 23 25(as): 24(ptr) Variable UniformConstant 27: TypeInt 32 0 28: 27(int) Constant 1 29: TypeVector 6(float) 3 30: 6(float) Constant 1056964608 31: 29(fvec3) ConstantComposite 30 30 30 32: 29(fvec3) ConstantComposite 10 10 10 33: 15(int) Constant 1 34: TypeVector 6(float) 4 35: TypePointer RayPayloadKHR 34(fvec4) 36(payload): 35(ptr) Variable RayPayloadKHR 38: 6(float) Constant 1092616192 39: 15(int) Constant 2 40(pBlock): TypeStruct 7(fvec2) 7(fvec2) 41: TypePointer RayPayloadKHR 40(pBlock) 42: 41(ptr) Variable RayPayloadKHR 44: 27(int) Constant 2 45: 29(fvec3) ConstantComposite 17 17 17 47: 6(float) Constant 1082130432 48(hObjHit): 21(ptr) Variable Private 50: 15(int) Constant 3 52(hObjNop): 21(ptr) Variable Private 53(hObjMiss): 21(ptr) Variable Private 54: 6(float) Constant 1069547520 55: 29(fvec3) ConstantComposite 54 54 54 56: 6(float) Constant 1084227584 57: 6(float) Constant 1090519040 58: TypeBool 62(block): TypeStruct 6(float) 63: TypePointer StorageBuffer 62(block) 64: 63(ptr) Variable StorageBuffer 65: TypePointer StorageBuffer 6(float) 76: 6(float) Constant 1077936128 78: TypePointer Function 6(float) 83: TypePointer Function 29(fvec3) 92: TypeMatrix 29(fvec3) 4 93: TypePointer Function 92 98: TypePointer Function 15(int) 107: TypePointer Function 27(int) 110: TypeVector 27(int) 2 111: TypePointer Function 110(ivec2) 4(main): 2 Function None 3 5: Label 79(tmin): 78(ptr) Variable Function 81(tmax): 78(ptr) Variable Function 84(orig): 83(ptr) Variable Function 86(dir): 83(ptr) Variable Function 88(oorig): 83(ptr) Variable Function 90(odir): 83(ptr) Variable Function 94(otw): 93(ptr) Variable Function 96(wto): 93(ptr) Variable Function 99(cid): 98(ptr) Variable Function 101(iid): 98(ptr) Variable Function 103(pid): 98(ptr) Variable Function 105(gid): 98(ptr) Variable Function 108(hkind): 107(ptr) Variable Function 112(handle): 111(ptr) Variable Function 114(rid): 107(ptr) Variable Function Store 9(attr) 11 19: 18(ptr) AccessChain 14 16 Store 19 17 26: 23 Load 25(as) HitObjectTraceRayNV 22(hObj) 26 28 28 28 28 28 31 30 32 10 36(payload) 37: 23 Load 25(as) HitObjectTraceRayMotionNV 22(hObj) 37 28 28 28 28 28 31 30 32 10 38 42 43: 23 Load 25(as) HitObjectRecordHitNV 22(hObj) 43 33 33 33 44 44 44 32 10 45 17 9(attr) 46: 23 Load 25(as) HitObjectRecordHitMotionNV 22(hObj) 46 33 33 33 44 44 44 32 10 45 17 47 9(attr) 49: 23 Load 25(as) HitObjectRecordHitWithIndexNV 48(hObjHit) 49 33 33 33 44 44 32 10 45 17 14 51: 23 Load 25(as) HitObjectRecordHitWithIndexMotionNV 48(hObjHit) 51 33 33 33 44 44 32 10 45 17 47 14 HitObjectRecordEmptyNV 52(hObjNop) HitObjectRecordMissNV 53(hObjMiss) 28 31 17 55 56 HitObjectRecordMissMotionNV 53(hObjMiss) 28 31 17 55 56 57 HitObjectExecuteShaderNV 48(hObjHit) 42 59: 58(bool) HitObjectIsHitNV 22(hObj) SelectionMerge 61 None BranchConditional 59 60 67 60: Label 66: 65(ptr) AccessChain 64 16 Store 66 10 Branch 61 67: Label 68: 58(bool) HitObjectIsMissNV 22(hObj) SelectionMerge 70 None BranchConditional 68 69 72 69: Label 71: 65(ptr) AccessChain 64 16 Store 71 17 Branch 70 72: Label 73: 58(bool) HitObjectIsEmptyNV 22(hObj) SelectionMerge 75 None BranchConditional 73 74 75 74: Label 77: 65(ptr) AccessChain 64 16 Store 77 76 Branch 75 75: Label Branch 70 70: Label Branch 61 61: Label 80: 6(float) HitObjectGetRayTMinNV 48(hObjHit) Store 79(tmin) 80 82: 6(float) HitObjectGetRayTMaxNV 48(hObjHit) Store 81(tmax) 82 85: 29(fvec3) HitObjectGetWorldRayOriginNV 48(hObjHit) Store 84(orig) 85 87: 29(fvec3) HitObjectGetWorldRayDirectionNV 48(hObjHit) Store 86(dir) 87 89: 29(fvec3) HitObjectGetObjectRayOriginNV 48(hObjHit) Store 88(oorig) 89 91: 29(fvec3) HitObjectGetObjectRayDirectionNV 48(hObjHit) Store 90(odir) 91 95: 92 HitObjectGetObjectToWorldNV 48(hObjHit) Store 94(otw) 95 97: 92 HitObjectGetWorldToObjectNV 48(hObjHit) Store 96(wto) 97 100: 15(int) HitObjectGetInstanceCustomIndexNV 53(hObjMiss) Store 99(cid) 100 102: 15(int) HitObjectGetInstanceIdNV 52(hObjNop) Store 101(iid) 102 104: 15(int) HitObjectGetPrimitiveIndexNV 22(hObj) Store 103(pid) 104 106: 15(int) HitObjectGetGeometryIndexNV 22(hObj) Store 105(gid) 106 109: 27(int) HitObjectGetFrontFaceNV 22(hObj) Store 108(hkind) 109 HitObjectGetAttributesNV 22(hObj) 9(attr) 113: 110(ivec2) HitObjectGetShaderRecordBufferHandleNV 22(hObj) Store 112(handle) 113 115: 27(int) HitObjectGetShaderBindingTableRecordIndexNV 22(hObj) Store 114(rid) 115 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.hitobject-errors.rgen.out000066400000000000000000000011121506534232700246430ustar00rootroot00000000000000spv.nv.hitobject-errors.rgen ERROR: 0:7: 'hitObjectNV' : hitObjectNV can only be declared in global or function scope with no storage qualifier: uHitObj ERROR: 0:9: 'hitObjectNV' : hitObjectNV can only be declared in global or function scope with no storage qualifier: hobjIn ERROR: 0:10: 'hitObjectNV' : hitObjectNV can only be declared in global or function scope with no storage qualifier: hobjOut ERROR: 0:21: 'hObjWrapper' : struct is not allowed to contain hitObjectNV: wrapper ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.nv.lss-allops.frag.out000066400000000000000000000112401506534232700234360ustar00rootroot00000000000000spv.nv.lss-allops.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 47 Capability Shader Capability RayQueryKHR Capability RayTracingSpheresGeometryNV Capability RayTracingLinearSweptSpheresGeometryNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_linear_swept_spheres" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 12 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_linear_swept_spheres" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 9 "pos" Name 12 "rq" Name 22 "rad" Name 29 "lss_pos" Name 34 "lss_rad" Name 37 "hitVal" Name 41 "isSphereHit" Name 44 "isLSSHit" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) 10: TypeRayQueryKHR 11: TypePointer Private 10 12(rq): 11(ptr) Variable Private 13: TypeBool 14: 13(bool) ConstantTrue 15: TypeInt 32 1 16: 15(int) Constant 1 18: 13(bool) ConstantFalse 19: 15(int) Constant 0 21: TypePointer Function 6(float) 25: TypeInt 32 0 26: 25(int) Constant 2 27: TypeArray 7(fvec3) 26 28: TypePointer Function 27 32: TypeArray 6(float) 26 33: TypePointer Function 32 40: TypePointer Function 13(bool) 4(main): 2 Function None 3 5: Label 9(pos): 8(ptr) Variable Function 22(rad): 21(ptr) Variable Function 29(lss_pos): 28(ptr) Variable Function 34(lss_rad): 33(ptr) Variable Function 37(hitVal): 21(ptr) Variable Function 41(isSphereHit): 40(ptr) Variable Function 44(isLSSHit): 40(ptr) Variable Function 17: 7(fvec3) RayQueryGetIntersectionSpherePositionNV 12(rq) 16 Store 9(pos) 17 20: 7(fvec3) RayQueryGetIntersectionSpherePositionNV 12(rq) 19 Store 9(pos) 20 23: 6(float) RayQueryGetIntersectionSphereRadiusNV 12(rq) 16 Store 22(rad) 23 24: 6(float) RayQueryGetIntersectionSphereRadiusNV 12(rq) 19 Store 22(rad) 24 30: 27 RayQueryGetIntersectionLSSPositionsNV 12(rq) 16 Store 29(lss_pos) 30 31: 27 RayQueryGetIntersectionLSSPositionsNV 12(rq) 19 Store 29(lss_pos) 31 35: 32 RayQueryGetIntersectionLSSRadiiNV 12(rq) 16 Store 34(lss_rad) 35 36: 32 RayQueryGetIntersectionLSSRadiiNV 12(rq) 19 Store 34(lss_rad) 36 38: 6(float) RayQueryGetIntersectionLSSHitValueNV 12(rq) 16 Store 37(hitVal) 38 39: 6(float) RayQueryGetIntersectionLSSHitValueNV 12(rq) 19 Store 37(hitVal) 39 42: 13(bool) RayQueryIsSphereHitNV 12(rq) 16 Store 41(isSphereHit) 42 43: 13(bool) RayQueryIsSphereHitNV 12(rq) 19 Store 41(isSphereHit) 43 45: 13(bool) RayQueryIsLSSHitNV 12(rq) 16 Store 44(isLSSHit) 45 46: 13(bool) RayQueryIsLSSHitNV 12(rq) 19 Store 44(isLSSHit) 46 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.lss-allops.rchit.out000066400000000000000000000173641506534232700236450ustar00rootroot00000000000000spv.nv.lss-allops.rchit // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 73 Capability RayQueryKHR Capability RayTracingKHR Capability ShaderInvocationReorderNV Capability RayTracingSpheresGeometryNV Capability RayTracingLinearSweptSpheresGeometryNV Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_linear_swept_spheres" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint ClosestHitKHR 4 "main" 12 35 57 60 63 66 69 71 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_linear_swept_spheres" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 9 "pos" Name 12 "hObj" Name 15 "rad" Name 21 "lss_pos" Name 25 "lss_rad" Name 29 "isSphereHit" Name 31 "isLSSHit" Name 35 "rq" Name 49 "hitVal" Name 57 "gl_HitSpherePositionNV" Name 60 "gl_HitSphereRadiusNV" Name 63 "gl_HitLSSPositionsNV" Name 66 "gl_HitLSSRadiiNV" Name 69 "gl_HitIsSphereNV" Name 71 "gl_HitIsLSSNV" Decorate 57(gl_HitSpherePositionNV) BuiltIn HitSpherePositionNV Decorate 60(gl_HitSphereRadiusNV) BuiltIn HitSphereRadiusNV Decorate 63(gl_HitLSSPositionsNV) BuiltIn HitLSSPositionsNV Decorate 66(gl_HitLSSRadiiNV) BuiltIn HitLLSSRadiiNV Decorate 69(gl_HitIsSphereNV) BuiltIn HitIsSphereNV Decorate 71(gl_HitIsLSSNV) BuiltIn HitIsLSSNV 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) 10: TypeHitObjectNV 11: TypePointer Private 10 12(hObj): 11(ptr) Variable Private 14: TypePointer Function 6(float) 17: TypeInt 32 0 18: 17(int) Constant 2 19: TypeArray 7(fvec3) 18 20: TypePointer Function 19 23: TypeArray 6(float) 18 24: TypePointer Function 23 27: TypeBool 28: TypePointer Function 27(bool) 33: TypeRayQueryKHR 34: TypePointer Private 33 35(rq): 34(ptr) Variable Private 36: 27(bool) ConstantTrue 37: TypeInt 32 1 38: 37(int) Constant 1 40: 27(bool) ConstantFalse 41: 37(int) Constant 0 56: TypePointer Input 7(fvec3) 57(gl_HitSpherePositionNV): 56(ptr) Variable Input 59: TypePointer Input 6(float) 60(gl_HitSphereRadiusNV): 59(ptr) Variable Input 62: TypePointer Input 19 63(gl_HitLSSPositionsNV): 62(ptr) Variable Input 65: TypePointer Input 23 66(gl_HitLSSRadiiNV): 65(ptr) Variable Input 68: TypePointer Input 27(bool) 69(gl_HitIsSphereNV): 68(ptr) Variable Input 71(gl_HitIsLSSNV): 68(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(pos): 8(ptr) Variable Function 15(rad): 14(ptr) Variable Function 21(lss_pos): 20(ptr) Variable Function 25(lss_rad): 24(ptr) Variable Function 29(isSphereHit): 28(ptr) Variable Function 31(isLSSHit): 28(ptr) Variable Function 49(hitVal): 14(ptr) Variable Function 13: 7(fvec3) HitObjectGetSpherePositionNV 12(hObj) Store 9(pos) 13 16: 6(float) HitObjectGetSphereRadiusNV 12(hObj) Store 15(rad) 16 22: 19 HitObjectGetLSSPositionsNV 12(hObj) Store 21(lss_pos) 22 26: 23 HitObjectGetLSSRadiiNV 12(hObj) Store 25(lss_rad) 26 30: 27(bool) HitObjectIsSphereHitNV 12(hObj) Store 29(isSphereHit) 30 32: 27(bool) HitObjectIsLSSHitNV 12(hObj) Store 31(isLSSHit) 32 39: 7(fvec3) RayQueryGetIntersectionSpherePositionNV 35(rq) 38 Store 9(pos) 39 42: 7(fvec3) RayQueryGetIntersectionSpherePositionNV 35(rq) 41 Store 9(pos) 42 43: 6(float) RayQueryGetIntersectionSphereRadiusNV 35(rq) 38 Store 15(rad) 43 44: 6(float) RayQueryGetIntersectionSphereRadiusNV 35(rq) 41 Store 15(rad) 44 45: 19 RayQueryGetIntersectionLSSPositionsNV 35(rq) 38 Store 21(lss_pos) 45 46: 19 RayQueryGetIntersectionLSSPositionsNV 35(rq) 41 Store 21(lss_pos) 46 47: 23 RayQueryGetIntersectionLSSRadiiNV 35(rq) 38 Store 25(lss_rad) 47 48: 23 RayQueryGetIntersectionLSSRadiiNV 35(rq) 41 Store 25(lss_rad) 48 50: 6(float) RayQueryGetIntersectionLSSHitValueNV 35(rq) 38 Store 49(hitVal) 50 51: 6(float) RayQueryGetIntersectionLSSHitValueNV 35(rq) 41 Store 49(hitVal) 51 52: 27(bool) RayQueryIsSphereHitNV 35(rq) 38 Store 29(isSphereHit) 52 53: 27(bool) RayQueryIsSphereHitNV 35(rq) 41 Store 29(isSphereHit) 53 54: 27(bool) RayQueryIsLSSHitNV 35(rq) 38 Store 31(isLSSHit) 54 55: 27(bool) RayQueryIsLSSHitNV 35(rq) 41 Store 31(isLSSHit) 55 58: 7(fvec3) Load 57(gl_HitSpherePositionNV) Store 9(pos) 58 61: 6(float) Load 60(gl_HitSphereRadiusNV) Store 15(rad) 61 64: 19 Load 63(gl_HitLSSPositionsNV) Store 21(lss_pos) 64 67: 23 Load 66(gl_HitLSSRadiiNV) Store 25(lss_rad) 67 70: 27(bool) Load 69(gl_HitIsSphereNV) Store 29(isSphereHit) 70 72: 27(bool) Load 71(gl_HitIsLSSNV) Store 31(isLSSHit) 72 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.lss-allops.rgen.out000066400000000000000000000132571506534232700234640ustar00rootroot00000000000000spv.nv.lss-allops.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 56 Capability RayQueryKHR Capability RayTracingKHR Capability ShaderInvocationReorderNV Capability RayTracingSpheresGeometryNV Capability RayTracingLinearSweptSpheresGeometryNV Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_linear_swept_spheres" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 12 35 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_linear_swept_spheres" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 9 "pos" Name 12 "hObj" Name 15 "rad" Name 21 "lss_pos" Name 25 "lss_rad" Name 29 "isSphereHit" Name 31 "isLSSHit" Name 35 "rq" Name 49 "hitVal" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) 10: TypeHitObjectNV 11: TypePointer Private 10 12(hObj): 11(ptr) Variable Private 14: TypePointer Function 6(float) 17: TypeInt 32 0 18: 17(int) Constant 2 19: TypeArray 7(fvec3) 18 20: TypePointer Function 19 23: TypeArray 6(float) 18 24: TypePointer Function 23 27: TypeBool 28: TypePointer Function 27(bool) 33: TypeRayQueryKHR 34: TypePointer Private 33 35(rq): 34(ptr) Variable Private 36: 27(bool) ConstantTrue 37: TypeInt 32 1 38: 37(int) Constant 1 40: 27(bool) ConstantFalse 41: 37(int) Constant 0 4(main): 2 Function None 3 5: Label 9(pos): 8(ptr) Variable Function 15(rad): 14(ptr) Variable Function 21(lss_pos): 20(ptr) Variable Function 25(lss_rad): 24(ptr) Variable Function 29(isSphereHit): 28(ptr) Variable Function 31(isLSSHit): 28(ptr) Variable Function 49(hitVal): 14(ptr) Variable Function 13: 7(fvec3) HitObjectGetSpherePositionNV 12(hObj) Store 9(pos) 13 16: 6(float) HitObjectGetSphereRadiusNV 12(hObj) Store 15(rad) 16 22: 19 HitObjectGetLSSPositionsNV 12(hObj) Store 21(lss_pos) 22 26: 23 HitObjectGetLSSRadiiNV 12(hObj) Store 25(lss_rad) 26 30: 27(bool) HitObjectIsSphereHitNV 12(hObj) Store 29(isSphereHit) 30 32: 27(bool) HitObjectIsLSSHitNV 12(hObj) Store 31(isLSSHit) 32 39: 7(fvec3) RayQueryGetIntersectionSpherePositionNV 35(rq) 38 Store 9(pos) 39 42: 7(fvec3) RayQueryGetIntersectionSpherePositionNV 35(rq) 41 Store 9(pos) 42 43: 6(float) RayQueryGetIntersectionSphereRadiusNV 35(rq) 38 Store 15(rad) 43 44: 6(float) RayQueryGetIntersectionSphereRadiusNV 35(rq) 41 Store 15(rad) 44 45: 19 RayQueryGetIntersectionLSSPositionsNV 35(rq) 38 Store 21(lss_pos) 45 46: 19 RayQueryGetIntersectionLSSPositionsNV 35(rq) 41 Store 21(lss_pos) 46 47: 23 RayQueryGetIntersectionLSSRadiiNV 35(rq) 38 Store 25(lss_rad) 47 48: 23 RayQueryGetIntersectionLSSRadiiNV 35(rq) 41 Store 25(lss_rad) 48 50: 6(float) RayQueryGetIntersectionLSSHitValueNV 35(rq) 38 Store 49(hitVal) 50 51: 6(float) RayQueryGetIntersectionLSSHitValueNV 35(rq) 41 Store 49(hitVal) 51 52: 27(bool) RayQueryIsSphereHitNV 35(rq) 38 Store 29(isSphereHit) 52 53: 27(bool) RayQueryIsSphereHitNV 35(rq) 41 Store 29(isSphereHit) 53 54: 27(bool) RayQueryIsLSSHitNV 35(rq) 38 Store 31(isLSSHit) 54 55: 27(bool) RayQueryIsLSSHitNV 35(rq) 41 Store 31(isLSSHit) 55 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.lss-allops.rmiss.out000066400000000000000000000132471506534232700236650ustar00rootroot00000000000000spv.nv.lss-allops.rmiss // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 56 Capability RayQueryKHR Capability RayTracingKHR Capability ShaderInvocationReorderNV Capability RayTracingSpheresGeometryNV Capability RayTracingLinearSweptSpheresGeometryNV Extension "SPV_KHR_ray_query" Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_linear_swept_spheres" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MissKHR 4 "main" 12 35 Source GLSL 460 SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_NV_linear_swept_spheres" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 9 "pos" Name 12 "hObj" Name 15 "rad" Name 21 "lss_pos" Name 25 "lss_rad" Name 29 "isSphereHit" Name 31 "isLSSHit" Name 35 "rq" Name 49 "hitVal" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) 10: TypeHitObjectNV 11: TypePointer Private 10 12(hObj): 11(ptr) Variable Private 14: TypePointer Function 6(float) 17: TypeInt 32 0 18: 17(int) Constant 2 19: TypeArray 7(fvec3) 18 20: TypePointer Function 19 23: TypeArray 6(float) 18 24: TypePointer Function 23 27: TypeBool 28: TypePointer Function 27(bool) 33: TypeRayQueryKHR 34: TypePointer Private 33 35(rq): 34(ptr) Variable Private 36: 27(bool) ConstantTrue 37: TypeInt 32 1 38: 37(int) Constant 1 40: 27(bool) ConstantFalse 41: 37(int) Constant 0 4(main): 2 Function None 3 5: Label 9(pos): 8(ptr) Variable Function 15(rad): 14(ptr) Variable Function 21(lss_pos): 20(ptr) Variable Function 25(lss_rad): 24(ptr) Variable Function 29(isSphereHit): 28(ptr) Variable Function 31(isLSSHit): 28(ptr) Variable Function 49(hitVal): 14(ptr) Variable Function 13: 7(fvec3) HitObjectGetSpherePositionNV 12(hObj) Store 9(pos) 13 16: 6(float) HitObjectGetSphereRadiusNV 12(hObj) Store 15(rad) 16 22: 19 HitObjectGetLSSPositionsNV 12(hObj) Store 21(lss_pos) 22 26: 23 HitObjectGetLSSRadiiNV 12(hObj) Store 25(lss_rad) 26 30: 27(bool) HitObjectIsSphereHitNV 12(hObj) Store 29(isSphereHit) 30 32: 27(bool) HitObjectIsLSSHitNV 12(hObj) Store 31(isLSSHit) 32 39: 7(fvec3) RayQueryGetIntersectionSpherePositionNV 35(rq) 38 Store 9(pos) 39 42: 7(fvec3) RayQueryGetIntersectionSpherePositionNV 35(rq) 41 Store 9(pos) 42 43: 6(float) RayQueryGetIntersectionSphereRadiusNV 35(rq) 38 Store 15(rad) 43 44: 6(float) RayQueryGetIntersectionSphereRadiusNV 35(rq) 41 Store 15(rad) 44 45: 19 RayQueryGetIntersectionLSSPositionsNV 35(rq) 38 Store 21(lss_pos) 45 46: 19 RayQueryGetIntersectionLSSPositionsNV 35(rq) 41 Store 21(lss_pos) 46 47: 23 RayQueryGetIntersectionLSSRadiiNV 35(rq) 38 Store 25(lss_rad) 47 48: 23 RayQueryGetIntersectionLSSRadiiNV 35(rq) 41 Store 25(lss_rad) 48 50: 6(float) RayQueryGetIntersectionLSSHitValueNV 35(rq) 38 Store 49(hitVal) 50 51: 6(float) RayQueryGetIntersectionLSSHitValueNV 35(rq) 41 Store 49(hitVal) 51 52: 27(bool) RayQueryIsSphereHitNV 35(rq) 38 Store 29(isSphereHit) 52 53: 27(bool) RayQueryIsSphereHitNV 35(rq) 41 Store 29(isSphereHit) 53 54: 27(bool) RayQueryIsLSSHitNV 35(rq) 38 Store 31(isLSSHit) 54 55: 27(bool) RayQueryIsLSSHitNV 35(rq) 41 Store 31(isLSSHit) 55 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.lss-lssgeomcap.rgen.out000066400000000000000000000032401506534232700243160ustar00rootroot00000000000000spv.nv.lss-lssgeomcap.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 13 Capability RayTracingKHR Capability ShaderInvocationReorderNV Capability RayTracingLinearSweptSpheresGeometryNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_linear_swept_spheres" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 Source GLSL 460 SourceExtension "GL_NV_linear_swept_spheres" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 8 "temp" Name 11 "hObj" 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 9: TypeHitObjectNV 10: TypePointer Private 9 11(hObj): 10(ptr) Variable Private 4(main): 2 Function None 3 5: Label 8(temp): 7(ptr) Variable Function 12: 6(bool) HitObjectIsLSSHitNV 11(hObj) Store 8(temp) 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nv.lss-spheregeomcap.rgen.out000066400000000000000000000044231506534232700250070ustar00rootroot00000000000000spv.nv.lss-spheregeomcap.rgen // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 21 Capability RayTracingKHR Capability ShaderInvocationReorderNV Capability RayTracingSpheresGeometryNV Extension "SPV_KHR_ray_tracing" Extension "SPV_NV_linear_swept_spheres" Extension "SPV_NV_shader_invocation_reorder" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 Source GLSL 460 SourceExtension "GL_NV_linear_swept_spheres" SourceExtension "GL_NV_shader_invocation_reorder" Name 4 "main" Name 8 "temp" Name 11 "hObj" Name 16 "pos" Name 19 "rad" 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 9: TypeHitObjectNV 10: TypePointer Private 9 11(hObj): 10(ptr) Variable Private 13: TypeFloat 32 14: TypeVector 13(float) 3 15: TypePointer Function 14(fvec3) 18: TypePointer Function 13(float) 4(main): 2 Function None 3 5: Label 8(temp): 7(ptr) Variable Function 16(pos): 15(ptr) Variable Function 19(rad): 18(ptr) Variable Function 12: 6(bool) HitObjectIsSphereHitNV 11(hObj) Store 8(temp) 12 17: 14(fvec3) HitObjectGetSpherePositionNV 11(hObj) Store 16(pos) 17 20: 13(float) HitObjectGetSphereRadiusNV 11(hObj) Store 19(rad) 20 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nvAtomicFp16Vec.frag.out000066400000000000000000001101271506534232700236020ustar00rootroot00000000000000spv.nvAtomicFp16Vec.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 515 Capability Shader Capability Float16 Capability ImageCubeArray Capability Image1D Capability StorageImageExtendedFormats Capability StorageUniformBufferBlock16 Capability AtomicFloat16VectorNV Extension "SPV_KHR_16bit_storage" Extension "SPV_NV_shader_atomic_fp16_vector" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 430 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_NV_shader_atomic_fp16_vector" Name 4 "main" Name 9 "Buffer" MemberName 9(Buffer) 0 "dataf16v2" MemberName 9(Buffer) 1 "dataf16v4" MemberName 9(Buffer) 2 "resf16v2" MemberName 9(Buffer) 3 "resf16v4" Name 11 "buf" Name 68 "constVec2" Name 74 "fimage1D" Name 85 "fimage1DArray" Name 97 "fimage2D" Name 107 "fimage2DArray" Name 119 "fimageCube" Name 129 "fimageCubeArray" Name 139 "fimage3D" Name 295 "constVec4" Name 299 "fimage1Dv4" Name 310 "fimage1DArrayv4" Name 320 "fimage2Dv4" Name 330 "fimage2DArrayv4" Name 340 "fimageCubev4" Name 350 "fimageCubeArrayv4" Name 360 "fimage3Dv4" Decorate 9(Buffer) BufferBlock MemberDecorate 9(Buffer) 0 Offset 0 MemberDecorate 9(Buffer) 1 Offset 8 MemberDecorate 9(Buffer) 2 Offset 16 MemberDecorate 9(Buffer) 3 Offset 24 Decorate 11(buf) Binding 0 Decorate 11(buf) DescriptorSet 0 Decorate 74(fimage1D) Volatile Decorate 74(fimage1D) Coherent Decorate 74(fimage1D) Binding 0 Decorate 74(fimage1D) DescriptorSet 0 Decorate 85(fimage1DArray) Volatile Decorate 85(fimage1DArray) Coherent Decorate 85(fimage1DArray) Binding 1 Decorate 85(fimage1DArray) DescriptorSet 0 Decorate 97(fimage2D) Volatile Decorate 97(fimage2D) Coherent Decorate 97(fimage2D) Binding 2 Decorate 97(fimage2D) DescriptorSet 0 Decorate 107(fimage2DArray) Volatile Decorate 107(fimage2DArray) Coherent Decorate 107(fimage2DArray) Binding 3 Decorate 107(fimage2DArray) DescriptorSet 0 Decorate 119(fimageCube) Volatile Decorate 119(fimageCube) Coherent Decorate 119(fimageCube) Binding 5 Decorate 119(fimageCube) DescriptorSet 0 Decorate 129(fimageCubeArray) Volatile Decorate 129(fimageCubeArray) Coherent Decorate 129(fimageCubeArray) Binding 6 Decorate 129(fimageCubeArray) DescriptorSet 0 Decorate 139(fimage3D) Volatile Decorate 139(fimage3D) Coherent Decorate 139(fimage3D) Binding 9 Decorate 139(fimage3D) DescriptorSet 0 Decorate 299(fimage1Dv4) Volatile Decorate 299(fimage1Dv4) Coherent Decorate 299(fimage1Dv4) Binding 10 Decorate 299(fimage1Dv4) DescriptorSet 0 Decorate 310(fimage1DArrayv4) Volatile Decorate 310(fimage1DArrayv4) Coherent Decorate 310(fimage1DArrayv4) Binding 11 Decorate 310(fimage1DArrayv4) DescriptorSet 0 Decorate 320(fimage2Dv4) Volatile Decorate 320(fimage2Dv4) Coherent Decorate 320(fimage2Dv4) Binding 12 Decorate 320(fimage2Dv4) DescriptorSet 0 Decorate 330(fimage2DArrayv4) Volatile Decorate 330(fimage2DArrayv4) Coherent Decorate 330(fimage2DArrayv4) Binding 13 Decorate 330(fimage2DArrayv4) DescriptorSet 0 Decorate 340(fimageCubev4) Volatile Decorate 340(fimageCubev4) Coherent Decorate 340(fimageCubev4) Binding 15 Decorate 340(fimageCubev4) DescriptorSet 0 Decorate 350(fimageCubeArrayv4) Volatile Decorate 350(fimageCubeArrayv4) Coherent Decorate 350(fimageCubeArrayv4) Binding 16 Decorate 350(fimageCubeArrayv4) DescriptorSet 0 Decorate 360(fimage3Dv4) Volatile Decorate 360(fimage3Dv4) Coherent Decorate 360(fimage3Dv4) Binding 19 Decorate 360(fimage3Dv4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeVector 6(float16_t) 2 8: TypeVector 6(float16_t) 4 9(Buffer): TypeStruct 7(f16vec2) 8(f16vec4) 7(f16vec2) 8(f16vec4) 10: TypePointer Uniform 9(Buffer) 11(buf): 10(ptr) Variable Uniform 12: TypeInt 32 1 13: 12(int) Constant 2 14: 12(int) Constant 0 15: TypePointer Uniform 7(f16vec2) 17:6(float16_t) Constant 16896 18: 7(f16vec2) ConstantComposite 17 17 19: TypeInt 32 0 20: 19(int) Constant 1 21: 19(int) Constant 0 42: 12(int) Constant 3 43: 12(int) Constant 1 44: TypePointer Uniform 8(f16vec4) 46: 8(f16vec4) ConstantComposite 17 17 17 17 67: TypePointer Function 7(f16vec2) 69:6(float16_t) Constant 16384 70: 7(f16vec2) ConstantComposite 69 69 71: TypeFloat 32 72: TypeImage 71(float) 1D nonsampled format:Rg16f 73: TypePointer UniformConstant 72 74(fimage1D): 73(ptr) Variable UniformConstant 76: TypePointer Image 7(f16vec2) 83: TypeImage 71(float) 1D array nonsampled format:Rg16f 84: TypePointer UniformConstant 83 85(fimage1DArray): 84(ptr) Variable UniformConstant 86: TypeVector 12(int) 2 87: 86(ivec2) ConstantComposite 14 14 95: TypeImage 71(float) 2D nonsampled format:Rg16f 96: TypePointer UniformConstant 95 97(fimage2D): 96(ptr) Variable UniformConstant 105: TypeImage 71(float) 2D array nonsampled format:Rg16f 106: TypePointer UniformConstant 105 107(fimage2DArray): 106(ptr) Variable UniformConstant 108: TypeVector 12(int) 3 109: 108(ivec3) ConstantComposite 14 14 14 117: TypeImage 71(float) Cube nonsampled format:Rg16f 118: TypePointer UniformConstant 117 119(fimageCube): 118(ptr) Variable UniformConstant 127: TypeImage 71(float) Cube array nonsampled format:Rg16f 128: TypePointer UniformConstant 127 129(fimageCubeArray): 128(ptr) Variable UniformConstant 137: TypeImage 71(float) 3D nonsampled format:Rg16f 138: TypePointer UniformConstant 137 139(fimage3D): 138(ptr) Variable UniformConstant 294: TypePointer Function 8(f16vec4) 296: 8(f16vec4) ConstantComposite 69 69 69 69 297: TypeImage 71(float) 1D nonsampled format:Rgba16f 298: TypePointer UniformConstant 297 299(fimage1Dv4): 298(ptr) Variable UniformConstant 301: TypePointer Image 8(f16vec4) 308: TypeImage 71(float) 1D array nonsampled format:Rgba16f 309: TypePointer UniformConstant 308 310(fimage1DArrayv4): 309(ptr) Variable UniformConstant 318: TypeImage 71(float) 2D nonsampled format:Rgba16f 319: TypePointer UniformConstant 318 320(fimage2Dv4): 319(ptr) Variable UniformConstant 328: TypeImage 71(float) 2D array nonsampled format:Rgba16f 329: TypePointer UniformConstant 328 330(fimage2DArrayv4): 329(ptr) Variable UniformConstant 338: TypeImage 71(float) Cube nonsampled format:Rgba16f 339: TypePointer UniformConstant 338 340(fimageCubev4): 339(ptr) Variable UniformConstant 348: TypeImage 71(float) Cube array nonsampled format:Rgba16f 349: TypePointer UniformConstant 348 350(fimageCubeArrayv4): 349(ptr) Variable UniformConstant 358: TypeImage 71(float) 3D nonsampled format:Rgba16f 359: TypePointer UniformConstant 358 360(fimage3Dv4): 359(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 68(constVec2): 67(ptr) Variable Function 295(constVec4): 294(ptr) Variable Function 16: 15(ptr) AccessChain 11(buf) 14 22: 7(f16vec2) AtomicFAddEXT 16 20 21 18 23: 15(ptr) AccessChain 11(buf) 13 Store 23 22 24: 15(ptr) AccessChain 11(buf) 14 25: 7(f16vec2) AtomicFMinEXT 24 20 21 18 26: 15(ptr) AccessChain 11(buf) 13 27: 7(f16vec2) Load 26 28: 7(f16vec2) FAdd 27 25 29: 15(ptr) AccessChain 11(buf) 13 Store 29 28 30: 15(ptr) AccessChain 11(buf) 14 31: 7(f16vec2) AtomicFMaxEXT 30 20 21 18 32: 15(ptr) AccessChain 11(buf) 13 33: 7(f16vec2) Load 32 34: 7(f16vec2) FAdd 33 31 35: 15(ptr) AccessChain 11(buf) 13 Store 35 34 36: 15(ptr) AccessChain 11(buf) 14 37: 7(f16vec2) AtomicExchange 36 20 21 18 38: 15(ptr) AccessChain 11(buf) 13 39: 7(f16vec2) Load 38 40: 7(f16vec2) FAdd 39 37 41: 15(ptr) AccessChain 11(buf) 13 Store 41 40 45: 44(ptr) AccessChain 11(buf) 43 47: 8(f16vec4) AtomicFAddEXT 45 20 21 46 48: 44(ptr) AccessChain 11(buf) 42 Store 48 47 49: 44(ptr) AccessChain 11(buf) 43 50: 8(f16vec4) AtomicFMinEXT 49 20 21 46 51: 44(ptr) AccessChain 11(buf) 42 52: 8(f16vec4) Load 51 53: 8(f16vec4) FAdd 52 50 54: 44(ptr) AccessChain 11(buf) 42 Store 54 53 55: 44(ptr) AccessChain 11(buf) 43 56: 8(f16vec4) AtomicFMaxEXT 55 20 21 46 57: 44(ptr) AccessChain 11(buf) 42 58: 8(f16vec4) Load 57 59: 8(f16vec4) FAdd 58 56 60: 44(ptr) AccessChain 11(buf) 42 Store 60 59 61: 44(ptr) AccessChain 11(buf) 43 62: 8(f16vec4) AtomicExchange 61 20 21 46 63: 44(ptr) AccessChain 11(buf) 42 64: 8(f16vec4) Load 63 65: 8(f16vec4) FAdd 64 62 66: 44(ptr) AccessChain 11(buf) 42 Store 66 65 Store 68(constVec2) 70 75: 7(f16vec2) Load 68(constVec2) 77: 76(ptr) ImageTexelPointer 74(fimage1D) 14 21 78: 7(f16vec2) AtomicFAddEXT 77 20 21 75 79: 15(ptr) AccessChain 11(buf) 13 80: 7(f16vec2) Load 79 81: 7(f16vec2) FAdd 80 78 82: 15(ptr) AccessChain 11(buf) 13 Store 82 81 88: 7(f16vec2) Load 68(constVec2) 89: 76(ptr) ImageTexelPointer 85(fimage1DArray) 87 21 90: 7(f16vec2) AtomicFAddEXT 89 20 21 88 91: 15(ptr) AccessChain 11(buf) 13 92: 7(f16vec2) Load 91 93: 7(f16vec2) FAdd 92 90 94: 15(ptr) AccessChain 11(buf) 13 Store 94 93 98: 7(f16vec2) Load 68(constVec2) 99: 76(ptr) ImageTexelPointer 97(fimage2D) 87 21 100: 7(f16vec2) AtomicFAddEXT 99 20 21 98 101: 15(ptr) AccessChain 11(buf) 13 102: 7(f16vec2) Load 101 103: 7(f16vec2) FAdd 102 100 104: 15(ptr) AccessChain 11(buf) 13 Store 104 103 110: 7(f16vec2) Load 68(constVec2) 111: 76(ptr) ImageTexelPointer 107(fimage2DArray) 109 21 112: 7(f16vec2) AtomicFAddEXT 111 20 21 110 113: 15(ptr) AccessChain 11(buf) 13 114: 7(f16vec2) Load 113 115: 7(f16vec2) FAdd 114 112 116: 15(ptr) AccessChain 11(buf) 13 Store 116 115 120: 7(f16vec2) Load 68(constVec2) 121: 76(ptr) ImageTexelPointer 119(fimageCube) 109 21 122: 7(f16vec2) AtomicFAddEXT 121 20 21 120 123: 15(ptr) AccessChain 11(buf) 13 124: 7(f16vec2) Load 123 125: 7(f16vec2) FAdd 124 122 126: 15(ptr) AccessChain 11(buf) 13 Store 126 125 130: 7(f16vec2) Load 68(constVec2) 131: 76(ptr) ImageTexelPointer 129(fimageCubeArray) 109 21 132: 7(f16vec2) AtomicFAddEXT 131 20 21 130 133: 15(ptr) AccessChain 11(buf) 13 134: 7(f16vec2) Load 133 135: 7(f16vec2) FAdd 134 132 136: 15(ptr) AccessChain 11(buf) 13 Store 136 135 140: 7(f16vec2) Load 68(constVec2) 141: 76(ptr) ImageTexelPointer 139(fimage3D) 109 21 142: 7(f16vec2) AtomicFAddEXT 141 20 21 140 143: 15(ptr) AccessChain 11(buf) 13 144: 7(f16vec2) Load 143 145: 7(f16vec2) FAdd 144 142 146: 15(ptr) AccessChain 11(buf) 13 Store 146 145 147: 7(f16vec2) Load 68(constVec2) 148: 76(ptr) ImageTexelPointer 74(fimage1D) 14 21 149: 7(f16vec2) AtomicFMinEXT 148 20 21 147 150: 15(ptr) AccessChain 11(buf) 13 151: 7(f16vec2) Load 150 152: 7(f16vec2) FAdd 151 149 153: 15(ptr) AccessChain 11(buf) 13 Store 153 152 154: 7(f16vec2) Load 68(constVec2) 155: 76(ptr) ImageTexelPointer 85(fimage1DArray) 87 21 156: 7(f16vec2) AtomicFMinEXT 155 20 21 154 157: 15(ptr) AccessChain 11(buf) 13 158: 7(f16vec2) Load 157 159: 7(f16vec2) FAdd 158 156 160: 15(ptr) AccessChain 11(buf) 13 Store 160 159 161: 7(f16vec2) Load 68(constVec2) 162: 76(ptr) ImageTexelPointer 97(fimage2D) 87 21 163: 7(f16vec2) AtomicFMinEXT 162 20 21 161 164: 15(ptr) AccessChain 11(buf) 13 165: 7(f16vec2) Load 164 166: 7(f16vec2) FAdd 165 163 167: 15(ptr) AccessChain 11(buf) 13 Store 167 166 168: 7(f16vec2) Load 68(constVec2) 169: 76(ptr) ImageTexelPointer 107(fimage2DArray) 109 21 170: 7(f16vec2) AtomicFMinEXT 169 20 21 168 171: 15(ptr) AccessChain 11(buf) 13 172: 7(f16vec2) Load 171 173: 7(f16vec2) FAdd 172 170 174: 15(ptr) AccessChain 11(buf) 13 Store 174 173 175: 7(f16vec2) Load 68(constVec2) 176: 76(ptr) ImageTexelPointer 119(fimageCube) 109 21 177: 7(f16vec2) AtomicFMinEXT 176 20 21 175 178: 15(ptr) AccessChain 11(buf) 13 179: 7(f16vec2) Load 178 180: 7(f16vec2) FAdd 179 177 181: 15(ptr) AccessChain 11(buf) 13 Store 181 180 182: 7(f16vec2) Load 68(constVec2) 183: 76(ptr) ImageTexelPointer 129(fimageCubeArray) 109 21 184: 7(f16vec2) AtomicFMinEXT 183 20 21 182 185: 15(ptr) AccessChain 11(buf) 13 186: 7(f16vec2) Load 185 187: 7(f16vec2) FAdd 186 184 188: 15(ptr) AccessChain 11(buf) 13 Store 188 187 189: 7(f16vec2) Load 68(constVec2) 190: 76(ptr) ImageTexelPointer 139(fimage3D) 109 21 191: 7(f16vec2) AtomicFMinEXT 190 20 21 189 192: 15(ptr) AccessChain 11(buf) 13 193: 7(f16vec2) Load 192 194: 7(f16vec2) FAdd 193 191 195: 15(ptr) AccessChain 11(buf) 13 Store 195 194 196: 7(f16vec2) Load 68(constVec2) 197: 76(ptr) ImageTexelPointer 74(fimage1D) 14 21 198: 7(f16vec2) AtomicFMaxEXT 197 20 21 196 199: 15(ptr) AccessChain 11(buf) 13 200: 7(f16vec2) Load 199 201: 7(f16vec2) FAdd 200 198 202: 15(ptr) AccessChain 11(buf) 13 Store 202 201 203: 7(f16vec2) Load 68(constVec2) 204: 76(ptr) ImageTexelPointer 85(fimage1DArray) 87 21 205: 7(f16vec2) AtomicFMaxEXT 204 20 21 203 206: 15(ptr) AccessChain 11(buf) 13 207: 7(f16vec2) Load 206 208: 7(f16vec2) FAdd 207 205 209: 15(ptr) AccessChain 11(buf) 13 Store 209 208 210: 7(f16vec2) Load 68(constVec2) 211: 76(ptr) ImageTexelPointer 97(fimage2D) 87 21 212: 7(f16vec2) AtomicFMaxEXT 211 20 21 210 213: 15(ptr) AccessChain 11(buf) 13 214: 7(f16vec2) Load 213 215: 7(f16vec2) FAdd 214 212 216: 15(ptr) AccessChain 11(buf) 13 Store 216 215 217: 7(f16vec2) Load 68(constVec2) 218: 76(ptr) ImageTexelPointer 107(fimage2DArray) 109 21 219: 7(f16vec2) AtomicFMaxEXT 218 20 21 217 220: 15(ptr) AccessChain 11(buf) 13 221: 7(f16vec2) Load 220 222: 7(f16vec2) FAdd 221 219 223: 15(ptr) AccessChain 11(buf) 13 Store 223 222 224: 7(f16vec2) Load 68(constVec2) 225: 76(ptr) ImageTexelPointer 119(fimageCube) 109 21 226: 7(f16vec2) AtomicFMaxEXT 225 20 21 224 227: 15(ptr) AccessChain 11(buf) 13 228: 7(f16vec2) Load 227 229: 7(f16vec2) FAdd 228 226 230: 15(ptr) AccessChain 11(buf) 13 Store 230 229 231: 7(f16vec2) Load 68(constVec2) 232: 76(ptr) ImageTexelPointer 129(fimageCubeArray) 109 21 233: 7(f16vec2) AtomicFMaxEXT 232 20 21 231 234: 15(ptr) AccessChain 11(buf) 13 235: 7(f16vec2) Load 234 236: 7(f16vec2) FAdd 235 233 237: 15(ptr) AccessChain 11(buf) 13 Store 237 236 238: 7(f16vec2) Load 68(constVec2) 239: 76(ptr) ImageTexelPointer 139(fimage3D) 109 21 240: 7(f16vec2) AtomicFMaxEXT 239 20 21 238 241: 15(ptr) AccessChain 11(buf) 13 242: 7(f16vec2) Load 241 243: 7(f16vec2) FAdd 242 240 244: 15(ptr) AccessChain 11(buf) 13 Store 244 243 245: 7(f16vec2) Load 68(constVec2) 246: 76(ptr) ImageTexelPointer 74(fimage1D) 14 21 247: 7(f16vec2) AtomicExchange 246 20 21 245 248: 15(ptr) AccessChain 11(buf) 13 249: 7(f16vec2) Load 248 250: 7(f16vec2) FAdd 249 247 251: 15(ptr) AccessChain 11(buf) 13 Store 251 250 252: 7(f16vec2) Load 68(constVec2) 253: 76(ptr) ImageTexelPointer 85(fimage1DArray) 87 21 254: 7(f16vec2) AtomicExchange 253 20 21 252 255: 15(ptr) AccessChain 11(buf) 13 256: 7(f16vec2) Load 255 257: 7(f16vec2) FAdd 256 254 258: 15(ptr) AccessChain 11(buf) 13 Store 258 257 259: 7(f16vec2) Load 68(constVec2) 260: 76(ptr) ImageTexelPointer 97(fimage2D) 87 21 261: 7(f16vec2) AtomicExchange 260 20 21 259 262: 15(ptr) AccessChain 11(buf) 13 263: 7(f16vec2) Load 262 264: 7(f16vec2) FAdd 263 261 265: 15(ptr) AccessChain 11(buf) 13 Store 265 264 266: 7(f16vec2) Load 68(constVec2) 267: 76(ptr) ImageTexelPointer 107(fimage2DArray) 109 21 268: 7(f16vec2) AtomicExchange 267 20 21 266 269: 15(ptr) AccessChain 11(buf) 13 270: 7(f16vec2) Load 269 271: 7(f16vec2) FAdd 270 268 272: 15(ptr) AccessChain 11(buf) 13 Store 272 271 273: 7(f16vec2) Load 68(constVec2) 274: 76(ptr) ImageTexelPointer 119(fimageCube) 109 21 275: 7(f16vec2) AtomicExchange 274 20 21 273 276: 15(ptr) AccessChain 11(buf) 13 277: 7(f16vec2) Load 276 278: 7(f16vec2) FAdd 277 275 279: 15(ptr) AccessChain 11(buf) 13 Store 279 278 280: 7(f16vec2) Load 68(constVec2) 281: 76(ptr) ImageTexelPointer 129(fimageCubeArray) 109 21 282: 7(f16vec2) AtomicExchange 281 20 21 280 283: 15(ptr) AccessChain 11(buf) 13 284: 7(f16vec2) Load 283 285: 7(f16vec2) FAdd 284 282 286: 15(ptr) AccessChain 11(buf) 13 Store 286 285 287: 7(f16vec2) Load 68(constVec2) 288: 76(ptr) ImageTexelPointer 139(fimage3D) 109 21 289: 7(f16vec2) AtomicExchange 288 20 21 287 290: 15(ptr) AccessChain 11(buf) 13 291: 7(f16vec2) Load 290 292: 7(f16vec2) FAdd 291 289 293: 15(ptr) AccessChain 11(buf) 13 Store 293 292 Store 295(constVec4) 296 300: 8(f16vec4) Load 295(constVec4) 302: 301(ptr) ImageTexelPointer 299(fimage1Dv4) 14 21 303: 8(f16vec4) AtomicFAddEXT 302 20 21 300 304: 44(ptr) AccessChain 11(buf) 42 305: 8(f16vec4) Load 304 306: 8(f16vec4) FAdd 305 303 307: 44(ptr) AccessChain 11(buf) 42 Store 307 306 311: 8(f16vec4) Load 295(constVec4) 312: 301(ptr) ImageTexelPointer 310(fimage1DArrayv4) 87 21 313: 8(f16vec4) AtomicFAddEXT 312 20 21 311 314: 44(ptr) AccessChain 11(buf) 42 315: 8(f16vec4) Load 314 316: 8(f16vec4) FAdd 315 313 317: 44(ptr) AccessChain 11(buf) 42 Store 317 316 321: 8(f16vec4) Load 295(constVec4) 322: 301(ptr) ImageTexelPointer 320(fimage2Dv4) 87 21 323: 8(f16vec4) AtomicFAddEXT 322 20 21 321 324: 44(ptr) AccessChain 11(buf) 42 325: 8(f16vec4) Load 324 326: 8(f16vec4) FAdd 325 323 327: 44(ptr) AccessChain 11(buf) 42 Store 327 326 331: 8(f16vec4) Load 295(constVec4) 332: 301(ptr) ImageTexelPointer 330(fimage2DArrayv4) 109 21 333: 8(f16vec4) AtomicFAddEXT 332 20 21 331 334: 44(ptr) AccessChain 11(buf) 42 335: 8(f16vec4) Load 334 336: 8(f16vec4) FAdd 335 333 337: 44(ptr) AccessChain 11(buf) 42 Store 337 336 341: 8(f16vec4) Load 295(constVec4) 342: 301(ptr) ImageTexelPointer 340(fimageCubev4) 109 21 343: 8(f16vec4) AtomicFAddEXT 342 20 21 341 344: 44(ptr) AccessChain 11(buf) 42 345: 8(f16vec4) Load 344 346: 8(f16vec4) FAdd 345 343 347: 44(ptr) AccessChain 11(buf) 42 Store 347 346 351: 8(f16vec4) Load 295(constVec4) 352: 301(ptr) ImageTexelPointer 350(fimageCubeArrayv4) 109 21 353: 8(f16vec4) AtomicFAddEXT 352 20 21 351 354: 44(ptr) AccessChain 11(buf) 42 355: 8(f16vec4) Load 354 356: 8(f16vec4) FAdd 355 353 357: 44(ptr) AccessChain 11(buf) 42 Store 357 356 361: 8(f16vec4) Load 295(constVec4) 362: 301(ptr) ImageTexelPointer 360(fimage3Dv4) 109 21 363: 8(f16vec4) AtomicFAddEXT 362 20 21 361 364: 44(ptr) AccessChain 11(buf) 42 365: 8(f16vec4) Load 364 366: 8(f16vec4) FAdd 365 363 367: 44(ptr) AccessChain 11(buf) 42 Store 367 366 368: 8(f16vec4) Load 295(constVec4) 369: 301(ptr) ImageTexelPointer 299(fimage1Dv4) 14 21 370: 8(f16vec4) AtomicFMinEXT 369 20 21 368 371: 44(ptr) AccessChain 11(buf) 42 372: 8(f16vec4) Load 371 373: 8(f16vec4) FAdd 372 370 374: 44(ptr) AccessChain 11(buf) 42 Store 374 373 375: 8(f16vec4) Load 295(constVec4) 376: 301(ptr) ImageTexelPointer 310(fimage1DArrayv4) 87 21 377: 8(f16vec4) AtomicFMinEXT 376 20 21 375 378: 44(ptr) AccessChain 11(buf) 42 379: 8(f16vec4) Load 378 380: 8(f16vec4) FAdd 379 377 381: 44(ptr) AccessChain 11(buf) 42 Store 381 380 382: 8(f16vec4) Load 295(constVec4) 383: 301(ptr) ImageTexelPointer 320(fimage2Dv4) 87 21 384: 8(f16vec4) AtomicFMinEXT 383 20 21 382 385: 44(ptr) AccessChain 11(buf) 42 386: 8(f16vec4) Load 385 387: 8(f16vec4) FAdd 386 384 388: 44(ptr) AccessChain 11(buf) 42 Store 388 387 389: 8(f16vec4) Load 295(constVec4) 390: 301(ptr) ImageTexelPointer 330(fimage2DArrayv4) 109 21 391: 8(f16vec4) AtomicFMinEXT 390 20 21 389 392: 44(ptr) AccessChain 11(buf) 42 393: 8(f16vec4) Load 392 394: 8(f16vec4) FAdd 393 391 395: 44(ptr) AccessChain 11(buf) 42 Store 395 394 396: 8(f16vec4) Load 295(constVec4) 397: 301(ptr) ImageTexelPointer 340(fimageCubev4) 109 21 398: 8(f16vec4) AtomicFMinEXT 397 20 21 396 399: 44(ptr) AccessChain 11(buf) 42 400: 8(f16vec4) Load 399 401: 8(f16vec4) FAdd 400 398 402: 44(ptr) AccessChain 11(buf) 42 Store 402 401 403: 8(f16vec4) Load 295(constVec4) 404: 301(ptr) ImageTexelPointer 350(fimageCubeArrayv4) 109 21 405: 8(f16vec4) AtomicFMinEXT 404 20 21 403 406: 44(ptr) AccessChain 11(buf) 42 407: 8(f16vec4) Load 406 408: 8(f16vec4) FAdd 407 405 409: 44(ptr) AccessChain 11(buf) 42 Store 409 408 410: 8(f16vec4) Load 295(constVec4) 411: 301(ptr) ImageTexelPointer 360(fimage3Dv4) 109 21 412: 8(f16vec4) AtomicFMinEXT 411 20 21 410 413: 44(ptr) AccessChain 11(buf) 42 414: 8(f16vec4) Load 413 415: 8(f16vec4) FAdd 414 412 416: 44(ptr) AccessChain 11(buf) 42 Store 416 415 417: 8(f16vec4) Load 295(constVec4) 418: 301(ptr) ImageTexelPointer 299(fimage1Dv4) 14 21 419: 8(f16vec4) AtomicFMaxEXT 418 20 21 417 420: 44(ptr) AccessChain 11(buf) 42 421: 8(f16vec4) Load 420 422: 8(f16vec4) FAdd 421 419 423: 44(ptr) AccessChain 11(buf) 42 Store 423 422 424: 8(f16vec4) Load 295(constVec4) 425: 301(ptr) ImageTexelPointer 310(fimage1DArrayv4) 87 21 426: 8(f16vec4) AtomicFMaxEXT 425 20 21 424 427: 44(ptr) AccessChain 11(buf) 42 428: 8(f16vec4) Load 427 429: 8(f16vec4) FAdd 428 426 430: 44(ptr) AccessChain 11(buf) 42 Store 430 429 431: 8(f16vec4) Load 295(constVec4) 432: 301(ptr) ImageTexelPointer 320(fimage2Dv4) 87 21 433: 8(f16vec4) AtomicFMaxEXT 432 20 21 431 434: 44(ptr) AccessChain 11(buf) 42 435: 8(f16vec4) Load 434 436: 8(f16vec4) FAdd 435 433 437: 44(ptr) AccessChain 11(buf) 42 Store 437 436 438: 8(f16vec4) Load 295(constVec4) 439: 301(ptr) ImageTexelPointer 330(fimage2DArrayv4) 109 21 440: 8(f16vec4) AtomicFMaxEXT 439 20 21 438 441: 44(ptr) AccessChain 11(buf) 42 442: 8(f16vec4) Load 441 443: 8(f16vec4) FAdd 442 440 444: 44(ptr) AccessChain 11(buf) 42 Store 444 443 445: 8(f16vec4) Load 295(constVec4) 446: 301(ptr) ImageTexelPointer 340(fimageCubev4) 109 21 447: 8(f16vec4) AtomicFMaxEXT 446 20 21 445 448: 44(ptr) AccessChain 11(buf) 42 449: 8(f16vec4) Load 448 450: 8(f16vec4) FAdd 449 447 451: 44(ptr) AccessChain 11(buf) 42 Store 451 450 452: 8(f16vec4) Load 295(constVec4) 453: 301(ptr) ImageTexelPointer 350(fimageCubeArrayv4) 109 21 454: 8(f16vec4) AtomicFMaxEXT 453 20 21 452 455: 44(ptr) AccessChain 11(buf) 42 456: 8(f16vec4) Load 455 457: 8(f16vec4) FAdd 456 454 458: 44(ptr) AccessChain 11(buf) 42 Store 458 457 459: 8(f16vec4) Load 295(constVec4) 460: 301(ptr) ImageTexelPointer 360(fimage3Dv4) 109 21 461: 8(f16vec4) AtomicFMaxEXT 460 20 21 459 462: 44(ptr) AccessChain 11(buf) 42 463: 8(f16vec4) Load 462 464: 8(f16vec4) FAdd 463 461 465: 44(ptr) AccessChain 11(buf) 42 Store 465 464 466: 8(f16vec4) Load 295(constVec4) 467: 301(ptr) ImageTexelPointer 299(fimage1Dv4) 14 21 468: 8(f16vec4) AtomicExchange 467 20 21 466 469: 44(ptr) AccessChain 11(buf) 42 470: 8(f16vec4) Load 469 471: 8(f16vec4) FAdd 470 468 472: 44(ptr) AccessChain 11(buf) 42 Store 472 471 473: 8(f16vec4) Load 295(constVec4) 474: 301(ptr) ImageTexelPointer 310(fimage1DArrayv4) 87 21 475: 8(f16vec4) AtomicExchange 474 20 21 473 476: 44(ptr) AccessChain 11(buf) 42 477: 8(f16vec4) Load 476 478: 8(f16vec4) FAdd 477 475 479: 44(ptr) AccessChain 11(buf) 42 Store 479 478 480: 8(f16vec4) Load 295(constVec4) 481: 301(ptr) ImageTexelPointer 320(fimage2Dv4) 87 21 482: 8(f16vec4) AtomicExchange 481 20 21 480 483: 44(ptr) AccessChain 11(buf) 42 484: 8(f16vec4) Load 483 485: 8(f16vec4) FAdd 484 482 486: 44(ptr) AccessChain 11(buf) 42 Store 486 485 487: 8(f16vec4) Load 295(constVec4) 488: 301(ptr) ImageTexelPointer 330(fimage2DArrayv4) 109 21 489: 8(f16vec4) AtomicExchange 488 20 21 487 490: 44(ptr) AccessChain 11(buf) 42 491: 8(f16vec4) Load 490 492: 8(f16vec4) FAdd 491 489 493: 44(ptr) AccessChain 11(buf) 42 Store 493 492 494: 8(f16vec4) Load 295(constVec4) 495: 301(ptr) ImageTexelPointer 340(fimageCubev4) 109 21 496: 8(f16vec4) AtomicExchange 495 20 21 494 497: 44(ptr) AccessChain 11(buf) 42 498: 8(f16vec4) Load 497 499: 8(f16vec4) FAdd 498 496 500: 44(ptr) AccessChain 11(buf) 42 Store 500 499 501: 8(f16vec4) Load 295(constVec4) 502: 301(ptr) ImageTexelPointer 350(fimageCubeArrayv4) 109 21 503: 8(f16vec4) AtomicExchange 502 20 21 501 504: 44(ptr) AccessChain 11(buf) 42 505: 8(f16vec4) Load 504 506: 8(f16vec4) FAdd 505 503 507: 44(ptr) AccessChain 11(buf) 42 Store 507 506 508: 8(f16vec4) Load 295(constVec4) 509: 301(ptr) ImageTexelPointer 360(fimage3Dv4) 109 21 510: 8(f16vec4) AtomicExchange 509 20 21 508 511: 44(ptr) AccessChain 11(buf) 42 512: 8(f16vec4) Load 511 513: 8(f16vec4) FAdd 512 510 514: 44(ptr) AccessChain 11(buf) 42 Store 514 513 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nvgpushader5.frag.out000066400000000000000000015567731506534232700233700ustar00rootroot00000000000000spv.nvgpushader5.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 5668 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability ImageGatherExtended Capability SampledRect Capability Int8 Capability Sampled1D Capability SampledCubeArray Capability InterpolationFunction Capability SubgroupVoteKHR Capability StorageInputOutput16 Extension "SPV_KHR_16bit_storage" Extension "SPV_KHR_subgroup_vote" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 618 621 624 627 842 4843 4946 4948 4975 4978 5002 5005 5266 5640 5642 5643 5645 5647 5649 5650 5652 5654 5656 5658 ExecutionMode 4 OriginUpperLeft Source GLSL 150 SourceExtension "GL_ARB_gpu_shader_fp64" SourceExtension "GL_NV_gpu_shader5" Name 4 "main" Name 6 "testIndexing(" Name 8 "testImplictConversion(" Name 10 "testbuiltinARB(" Name 12 "testDataTypes(" Name 14 "testConstructors(" Name 16 "testBinaryOps(" Name 18 "testModuloOps(" Name 20 "testUnaryOps(" Name 22 "testConditionExpressions(" Name 28 "func(i641;" Name 27 "a" Name 34 "func(i1;" Name 33 "a" Name 40 "func(u1;" Name 39 "a" Name 46 "func(u641;" Name 45 "a" Name 52 "func(f1;" Name 51 "a" Name 58 "func64(d1;" Name 57 "a" Name 61 "func64(i641;" Name 60 "a" Name 64 "func64(u641;" Name 63 "a" Name 66 "testFunctionDefinition(" Name 68 "testBuiltinNVOnly(" Name 70 "testVectorRelationBuiltins(" Name 72 "i" Name 79 "tex" Name 86 "coord" Name 90 "ubName" MemberName 90(ubName) 0 "i" Name 94 "ubInst" Name 96 "var0" Name 98 "var1" Name 100 "var2" Name 102 "var3" Name 104 "var4" Name 108 "var5" Name 112 "var6" Name 116 "var7" Name 119 "var8" Name 123 "var9" Name 127 "var10" Name 131 "var11" Name 135 "var12" Name 139 "var13" Name 143 "var14" Name 147 "var15" Name 151 "var16" Name 155 "var17" Name 158 "var18" Name 162 "var19" Name 164 "var20" Name 165 "var21" Name 166 "var22" Name 167 "var23" Name 168 "var24" Name 169 "var25" Name 170 "var26" Name 171 "var27" Name 172 "var28" Name 173 "var29" Name 174 "var30" Name 175 "var31" Name 178 "var32" Name 180 "var33" Name 181 "var34" Name 182 "var35" Name 183 "var36" Name 184 "var37" Name 185 "var38" Name 186 "var39" Name 187 "var40" Name 188 "var41" Name 189 "var42" Name 190 "var43" Name 193 "var44" Name 195 "var45" Name 196 "var46" Name 197 "var47" Name 198 "var48" Name 199 "var49" Name 200 "var50" Name 201 "var51" Name 202 "var52" Name 203 "var53" Name 206 "var54" Name 208 "var55" Name 209 "var56" Name 210 "var57" Name 211 "var58" Name 212 "var59" Name 213 "var60" Name 214 "var61" Name 215 "var62" Name 216 "var63" Name 217 "var64" Name 218 "var65" Name 219 "var66" Name 220 "var67" Name 221 "var68" Name 222 "var69" Name 223 "var70" Name 224 "var71" Name 225 "var72" Name 226 "var73" Name 227 "var74" Name 228 "var75" Name 229 "var76" Name 230 "var77" Name 231 "var78" Name 232 "var79" Name 233 "var80" Name 234 "var81" Name 235 "var82" Name 236 "var83" Name 237 "var84" Name 238 "var85" Name 239 "var86" Name 240 "var87" Name 241 "var88" Name 242 "var89" Name 243 "var90" Name 244 "var91" Name 245 "var92" Name 246 "var93" Name 247 "var94" Name 248 "var95" Name 249 "var96" Name 250 "var97" Name 251 "var98" Name 252 "var99" Name 253 "var100" Name 254 "var101" Name 255 "var102" Name 256 "var103" Name 257 "var104" Name 258 "var105" Name 259 "var106" Name 260 "var107" Name 261 "var108" Name 262 "var109" Name 263 "var110" Name 264 "var111" Name 265 "var112" Name 266 "var113" Name 267 "var114" Name 268 "var115" Name 269 "var116" Name 270 "var117" Name 271 "var118" Name 272 "var119" Name 273 "var120" Name 274 "var121" Name 275 "var122" Name 276 "var123" Name 277 "var0" Name 282 "var1" Name 287 "var2" Name 292 "var3" Name 298 "var4" Name 299 "ResType" Name 304 "var5" Name 305 "ResType" Name 310 "var6" Name 311 "ResType" Name 316 "var7" Name 317 "ResType" Name 349 "var8" Name 354 "var9" Name 359 "var10" Name 364 "var11" Name 519 "ResType" Name 525 "ResType" Name 531 "ResType" Name 537 "ResType" Name 583 "ResType" Name 589 "ResType" Name 595 "ResType" Name 601 "ResType" Name 618 "fvar0" Name 621 "fvar1" Name 624 "fvar2" Name 627 "fvar3" Name 645 "svar24" Name 653 "svar25" Name 661 "svar26" Name 669 "svar33" Name 677 "svar34" Name 685 "svar35" Name 693 "svar27" Name 701 "svar28" Name 709 "svar29" Name 717 "var16" Name 726 "var18" Name 735 "var20" Name 762 "svar30" Name 769 "svar31" Name 776 "svar32" Name 783 "svar21" Name 790 "svar22" Name 797 "svar23" Name 821 "var17" Name 829 "var19" Name 842 "Offsets" Name 894 "uiv" Name 896 "dv" Name 900 "iv" Name 904 "bv" Name 917 "var0" Name 918 "var1" Name 920 "var2" Name 922 "var3" Name 924 "var4" Name 926 "var5" Name 928 "var6" Name 931 "var7" Name 934 "var8" Name 937 "var9" Name 940 "var10" Name 943 "var11" Name 946 "var12" Name 949 "var13" Name 952 "var14" Name 955 "var15" Name 958 "var16" Name 961 "var17" Name 964 "var18" Name 967 "var19" Name 970 "var20" Name 973 "var21" Name 976 "var22" Name 979 "var23" Name 984 "var24" Name 986 "var25" Name 990 "var26" Name 995 "var27" Name 1000 "var28" Name 1005 "var29" Name 1010 "var30" Name 1015 "var31" Name 1018 "var32" Name 1021 "var33" Name 1025 "var34" Name 1030 "var35" Name 1035 "var36" Name 1040 "var37" Name 1045 "var38" Name 1049 "var39" Name 1054 "var40" Name 1059 "var41" Name 1062 "var42" Name 1067 "var43" Name 1072 "var44" Name 1078 "var45" Name 1083 "var46" Name 1088 "var47" Name 1093 "var48" Name 1098 "var49" Name 1104 "var50" Name 1109 "var51" Name 1114 "var52" Name 1119 "var53" Name 1124 "var54" Name 1130 "var55" Name 1135 "var56" Name 1140 "var57" Name 1145 "var58" Name 1150 "var59" Name 1156 "var60" Name 1161 "var61" Name 1166 "var62" Name 1171 "var63" Name 1176 "var64" Name 1182 "var65" Name 1188 "var66" Name 1193 "var67" Name 1198 "var68" Name 1203 "var69" Name 1208 "var70" Name 1214 "var71" Name 1220 "var72" Name 1225 "var73" Name 1230 "var74" Name 1235 "var75" Name 1240 "var76" Name 1246 "var77" Name 1252 "var78" Name 1257 "var79" Name 1262 "var80" Name 1267 "var81" Name 1272 "var82" Name 1278 "var83" Name 1284 "var84" Name 1289 "var85" Name 1294 "var86" Name 1299 "var87" Name 1304 "var88" Name 1310 "var89" Name 1316 "var90" Name 1321 "var91" Name 1326 "var92" Name 1332 "var93" Name 1338 "var94" Name 1343 "var95" Name 1348 "var96" Name 1353 "var97" Name 1358 "var98" Name 1364 "var99" Name 1370 "var100" Name 1375 "var101" Name 1380 "var102" Name 1386 "var103" Name 1392 "var104" Name 1397 "var105" Name 1402 "var106" Name 1407 "var107" Name 1412 "var108" Name 1417 "var109" Name 1422 "var110" Name 1427 "var111" Name 1432 "var112" Name 1437 "var113" Name 1442 "var114" Name 1447 "var115" Name 1452 "var116" Name 1457 "var117" Name 1462 "var118" Name 1467 "var119" Name 1472 "var120" Name 1477 "var121" Name 1482 "var122" Name 1487 "var123" Name 1492 "var124" Name 1497 "var125" Name 1502 "var126" Name 1507 "var127" Name 1512 "var128" Name 1517 "var129" Name 1522 "var130" Name 1527 "var131" Name 1532 "var132" Name 1537 "var133" Name 1542 "var134" Name 1547 "var135" Name 1552 "var136" Name 1557 "var137" Name 1562 "var138" Name 1567 "var139" Name 1572 "var140" Name 1577 "var141" Name 1582 "var142" Name 1587 "var143" Name 1592 "var144" Name 1597 "var145" Name 1602 "var146" Name 1607 "var147" Name 1612 "var148" Name 1617 "var149" Name 1622 "var150" Name 1627 "var151" Name 1632 "var152" Name 1637 "var153" Name 1642 "var154" Name 1647 "var155" Name 1652 "var156" Name 1657 "var157" Name 1662 "var158" Name 1667 "var159" Name 1672 "var160" Name 1677 "var161" Name 1682 "var162" Name 1687 "var163" Name 1692 "var164" Name 1697 "var165" Name 1702 "var166" Name 1707 "var167" Name 1712 "var168" Name 1718 "var169" Name 1723 "var170" Name 1728 "var171" Name 1733 "var172" Name 1738 "var173" Name 1744 "var174" Name 1749 "var175" Name 1754 "var176" Name 1759 "var177" Name 1764 "var178" Name 1770 "var179" Name 1775 "var180" Name 1780 "var181" Name 1785 "var182" Name 1790 "var183" Name 1796 "var184" Name 1801 "var185" Name 1806 "var186" Name 1811 "var187" Name 1816 "var188" Name 1822 "var189" Name 1828 "var190" Name 1833 "var191" Name 1838 "var192" Name 1843 "var193" Name 1848 "var194" Name 1854 "var195" Name 1860 "var196" Name 1865 "var197" Name 1870 "var198" Name 1875 "var199" Name 1880 "var200" Name 1886 "var201" Name 1892 "var202" Name 1897 "var203" Name 1902 "var204" Name 1907 "var205" Name 1912 "var206" Name 1918 "var207" Name 1924 "var208" Name 1929 "var209" Name 1934 "var210" Name 1939 "var211" Name 1944 "var212" Name 1950 "var213" Name 1956 "var214" Name 1961 "var215" Name 1966 "var216" Name 1972 "var217" Name 1978 "var218" Name 1983 "var219" Name 1988 "var220" Name 1993 "var221" Name 1998 "var222" Name 2004 "var223" Name 2010 "var224" Name 2015 "var225" Name 2020 "var226" Name 2026 "var227" Name 2032 "var228" Name 2037 "var229" Name 2042 "var230" Name 2047 "var231" Name 2052 "var232" Name 2057 "var233" Name 2062 "var234" Name 2067 "var235" Name 2072 "var236" Name 2077 "var237" Name 2082 "var238" Name 2087 "var239" Name 2092 "var240" Name 2097 "var241" Name 2102 "var242" Name 2107 "var243" Name 2112 "var244" Name 2117 "var245" Name 2122 "var246" Name 2127 "var247" Name 2132 "var248" Name 2137 "var249" Name 2142 "var250" Name 2147 "var251" Name 2152 "var252" Name 2157 "var253" Name 2162 "var254" Name 2167 "var255" Name 2172 "var256" Name 2177 "var257" Name 2182 "var258" Name 2187 "var259" Name 2192 "var260" Name 2197 "var261" Name 2202 "var262" Name 2207 "var263" Name 2212 "var264" Name 2217 "var265" Name 2222 "var266" Name 2227 "var267" Name 2232 "var268" Name 2237 "var269" Name 2242 "var270" Name 2247 "var271" Name 2252 "var272" Name 2257 "var273" Name 2262 "var274" Name 2267 "var275" Name 2272 "var276" Name 2277 "var277" Name 2282 "var278" Name 2287 "var279" Name 2292 "var280" Name 2297 "var281" Name 2302 "var282" Name 2307 "var283" Name 2312 "var284" Name 2317 "var285" Name 2322 "var286" Name 2327 "var287" Name 2332 "var288" Name 2337 "var289" Name 2342 "var290" Name 2347 "var291" Name 2352 "var292" Name 2358 "var293" Name 2363 "var294" Name 2368 "var295" Name 2373 "var296" Name 2378 "var297" Name 2384 "var298" Name 2389 "var299" Name 2394 "var300" Name 2399 "var301" Name 2404 "var302" Name 2410 "var303" Name 2415 "var304" Name 2420 "var305" Name 2425 "var306" Name 2430 "var307" Name 2436 "var308" Name 2441 "var309" Name 2446 "var310" Name 2451 "var311" Name 2456 "var312" Name 2462 "var313" Name 2468 "var314" Name 2473 "var315" Name 2478 "var316" Name 2483 "var317" Name 2488 "var318" Name 2494 "var319" Name 2500 "var320" Name 2505 "var321" Name 2510 "var322" Name 2515 "var323" Name 2520 "var324" Name 2526 "var325" Name 2532 "var326" Name 2537 "var327" Name 2542 "var328" Name 2547 "var329" Name 2552 "var330" Name 2558 "var331" Name 2564 "var332" Name 2569 "var333" Name 2574 "var334" Name 2579 "var335" Name 2584 "var336" Name 2590 "var337" Name 2596 "var338" Name 2601 "var339" Name 2606 "var340" Name 2612 "var341" Name 2618 "var342" Name 2623 "var343" Name 2628 "var344" Name 2633 "var345" Name 2638 "var346" Name 2644 "var347" Name 2650 "var348" Name 2655 "var349" Name 2660 "var350" Name 2666 "var351" Name 2672 "var352" Name 2677 "var353" Name 2682 "var354" Name 2687 "var355" Name 2692 "var356" Name 2697 "var357" Name 2702 "var358" Name 2707 "var359" Name 2712 "var360" Name 2717 "var361" Name 2722 "var362" Name 2727 "var363" Name 2732 "var364" Name 2737 "var365" Name 2742 "var366" Name 2747 "var367" Name 2752 "var368" Name 2757 "var369" Name 2762 "var370" Name 2767 "var371" Name 2772 "var372" Name 2777 "var373" Name 2782 "var374" Name 2787 "var375" Name 2792 "var376" Name 2797 "var377" Name 2802 "var378" Name 2807 "var379" Name 2812 "var380" Name 2817 "var381" Name 2822 "var382" Name 2827 "var383" Name 2832 "var384" Name 2837 "var385" Name 2842 "var386" Name 2847 "var387" Name 2852 "var388" Name 2857 "var389" Name 2862 "var390" Name 2867 "var391" Name 2872 "var392" Name 2877 "var393" Name 2882 "var394" Name 2887 "var395" Name 2892 "var396" Name 2897 "var397" Name 2902 "var398" Name 2907 "var399" Name 2912 "var400" Name 2917 "var401" Name 2922 "var402" Name 2927 "var403" Name 2932 "var404" Name 2937 "var405" Name 2942 "var406" Name 2947 "var407" Name 2952 "var408" Name 2957 "var409" Name 2962 "var410" Name 2967 "var411" Name 2972 "var412" Name 2977 "var413" Name 2982 "var0" Name 2983 "var1" Name 2984 "var2" Name 2985 "var3" Name 2986 "var4" Name 2987 "var5" Name 2988 "var6" Name 2989 "var7" Name 2990 "var8" Name 2991 "var9" Name 2992 "var10" Name 2993 "var11" Name 2994 "var12" Name 2995 "var13" Name 2996 "var14" Name 2997 "var15" Name 2998 "var16" Name 2999 "var17" Name 3000 "var18" Name 3001 "var19" Name 3002 "var20" Name 3003 "var21" Name 3004 "var22" Name 3005 "var23" Name 3006 "var24" Name 3007 "var25" Name 3008 "var26" Name 3009 "var27" Name 3010 "var28" Name 3011 "var29" Name 3012 "var30" Name 3013 "var31" Name 3014 "var32" Name 3015 "var33" Name 3016 "var34" Name 3017 "var35" Name 3018 "var36" Name 3019 "var37" Name 3020 "var38" Name 3021 "var39" Name 3022 "var40" Name 3023 "var41" Name 3024 "var42" Name 3029 "var43" Name 3034 "var44" Name 3040 "var45" Name 3045 "var46" Name 3050 "var47" Name 3056 "var48" Name 3061 "var49" Name 3066 "var50" Name 3072 "var51" Name 3077 "var52" Name 3082 "var53" Name 3088 "var54" Name 3093 "var55" Name 3098 "var56" Name 3104 "var57" Name 3110 "var58" Name 3115 "var59" Name 3120 "var60" Name 3126 "var61" Name 3132 "var62" Name 3137 "var63" Name 3142 "var64" Name 3148 "var65" Name 3154 "var66" Name 3159 "var67" Name 3164 "var68" Name 3170 "var69" Name 3176 "var70" Name 3181 "var71" Name 3186 "var72" Name 3192 "var73" Name 3198 "var74" Name 3204 "var75" Name 3210 "var76" Name 3215 "var77" Name 3220 "var78" Name 3226 "var79" Name 3232 "var80" Name 3238 "var81" Name 3244 "var82" Name 3249 "var83" Name 3254 "var84" Name 3259 "var85" Name 3264 "var86" Name 3269 "var87" Name 3274 "var88" Name 3279 "var89" Name 3284 "var90" Name 3289 "var91" Name 3294 "var92" Name 3299 "var93" Name 3304 "var94" Name 3309 "var95" Name 3314 "var96" Name 3319 "var97" Name 3324 "var98" Name 3329 "var99" Name 3334 "var100" Name 3339 "var101" Name 3344 "var0" Name 3345 "var1" Name 3346 "var2" Name 3347 "var3" Name 3348 "var4" Name 3349 "var5" Name 3350 "var6" Name 3351 "var7" Name 3352 "var8" Name 3353 "var9" Name 3354 "var10" Name 3355 "var11" Name 3356 "var12" Name 3357 "var13" Name 3358 "var14" Name 3359 "var15" Name 3360 "var16" Name 3361 "var17" Name 3362 "var18" Name 3363 "var19" Name 3364 "var20" Name 3365 "var21" Name 3366 "var22" Name 3367 "var23" Name 3368 "var24" Name 3369 "var25" Name 3370 "var26" Name 3371 "var27" Name 3372 "var28" Name 3373 "var29" Name 3374 "var30" Name 3375 "var31" Name 3376 "var32" Name 3377 "var33" Name 3378 "var34" Name 3379 "var35" Name 3380 "var36" Name 3381 "var37" Name 3382 "var38" Name 3383 "var39" Name 3384 "var40" Name 3385 "var41" Name 3386 "var42" Name 3389 "var43" Name 3392 "var44" Name 3395 "var45" Name 3398 "var46" Name 3401 "var47" Name 3404 "var48" Name 3407 "var49" Name 3410 "var50" Name 3413 "var51" Name 3416 "var52" Name 3419 "var53" Name 3422 "var54" Name 3425 "var55" Name 3428 "var56" Name 3431 "var57" Name 3434 "var58" Name 3437 "var59" Name 3440 "var60" Name 3443 "var61" Name 3446 "var62" Name 3449 "var63" Name 3452 "var64" Name 3455 "var65" Name 3458 "var66" Name 3461 "var67" Name 3464 "var68" Name 3467 "var69" Name 3470 "var70" Name 3473 "var71" Name 3476 "var72" Name 3479 "var73" Name 3482 "var74" Name 3485 "var75" Name 3488 "var76" Name 3491 "var77" Name 3494 "var78" Name 3497 "var79" Name 3500 "var80" Name 3503 "var81" Name 3506 "var82" Name 3509 "var83" Name 3512 "var84" Name 3515 "var85" Name 3518 "var86" Name 3521 "var87" Name 3524 "var88" Name 3527 "var89" Name 3530 "var90" Name 3533 "var91" Name 3536 "var92" Name 3539 "var93" Name 3542 "var94" Name 3545 "var95" Name 3548 "var96" Name 3551 "var97" Name 3554 "var98" Name 3557 "var99" Name 3560 "var100" Name 3563 "var101" Name 3566 "var102" Name 3569 "var103" Name 3572 "var104" Name 3575 "var105" Name 3578 "var106" Name 3581 "var107" Name 3584 "var108" Name 3587 "var109" Name 3590 "var110" Name 3593 "var111" Name 3596 "var112" Name 3599 "var113" Name 3602 "var114" Name 3605 "var115" Name 3608 "var116" Name 3611 "var117" Name 3614 "var118" Name 3617 "var119" Name 3620 "var120" Name 3623 "var121" Name 3626 "var122" Name 3629 "var123" Name 3632 "var124" Name 3635 "var125" Name 3638 "var126" Name 3641 "var127" Name 3644 "var128" Name 3647 "var129" Name 3650 "var130" Name 3653 "var131" Name 3656 "var132" Name 3659 "var133" Name 3662 "var134" Name 3665 "var135" Name 3668 "var136" Name 3671 "var137" Name 3674 "var138" Name 3677 "var139" Name 3680 "var140" Name 3683 "var141" Name 3686 "var142" Name 3689 "var143" Name 3692 "var144" Name 3695 "var145" Name 3698 "var146" Name 3701 "var147" Name 3704 "var148" Name 3707 "var149" Name 3710 "var150" Name 3713 "var151" Name 3716 "var152" Name 3719 "var153" Name 3722 "var154" Name 3725 "var155" Name 3728 "var156" Name 3731 "var157" Name 3734 "var158" Name 3737 "var159" Name 3740 "var160" Name 3743 "var161" Name 3746 "var162" Name 3749 "var163" Name 3752 "var164" Name 3755 "var165" Name 3758 "var166" Name 3762 "var167" Name 3766 "var168" Name 3769 "var169" Name 3773 "var170" Name 3776 "var171" Name 3780 "var172" Name 3784 "var173" Name 3788 "var174" Name 3792 "var175" Name 3796 "var176" Name 3800 "var177" Name 3804 "var178" Name 3808 "var179" Name 3812 "var180" Name 3816 "var181" Name 3820 "var182" Name 3824 "var183" Name 3828 "var184" Name 3832 "var185" Name 3836 "var186" Name 3839 "var187" Name 3842 "var188" Name 3845 "var189" Name 3848 "var190" Name 3851 "var191" Name 3854 "var192" Name 3857 "var193" Name 3860 "var194" Name 3863 "var195" Name 3866 "var196" Name 3869 "var197" Name 3872 "var198" Name 3876 "var199" Name 3880 "var200" Name 3884 "var201" Name 3888 "var202" Name 3892 "var203" Name 3896 "var204" Name 3900 "var205" Name 3904 "var206" Name 3908 "var207" Name 3912 "var208" Name 3916 "var209" Name 3920 "var210" Name 3924 "var211" Name 3928 "var212" Name 3932 "var213" Name 3936 "var214" Name 3940 "var215" Name 3944 "var216" Name 3948 "var217" Name 3952 "var218" Name 3956 "var219" Name 3960 "var220" Name 3964 "var221" Name 3968 "var222" Name 3972 "var223" Name 3976 "var224" Name 3980 "var225" Name 3984 "var226" Name 3988 "var227" Name 3992 "var228" Name 3996 "var229" Name 4000 "var230" Name 4003 "var231" Name 4006 "var232" Name 4010 "var233" Name 4014 "var234" Name 4018 "var235" Name 4022 "var236" Name 4026 "var237" Name 4030 "var238" Name 4033 "var239" Name 4036 "var240" Name 4039 "var241" Name 4043 "var242" Name 4047 "var243" Name 4051 "var244" Name 4055 "var245" Name 4059 "var246" Name 4063 "var247" Name 4067 "var248" Name 4071 "var249" Name 4075 "var250" Name 4078 "var251" Name 4081 "var252" Name 4084 "var253" Name 4087 "var254" Name 4090 "var255" Name 4093 "var256" Name 4096 "var257" Name 4099 "var258" Name 4103 "var259" Name 4107 "var260" Name 4111 "var261" Name 4115 "var262" Name 4119 "var263" Name 4123 "var264" Name 4127 "var265" Name 4131 "var266" Name 4135 "var267" Name 4139 "var268" Name 4143 "var269" Name 4147 "var270" Name 4151 "var271" Name 4155 "var272" Name 4159 "var273" Name 4163 "var274" Name 4166 "var275" Name 4170 "var276" Name 4174 "var277" Name 4178 "var278" Name 4181 "var279" Name 4185 "var280" Name 4189 "var281" Name 4193 "var282" Name 4196 "var283" Name 4199 "var284" Name 4203 "var285" Name 4207 "var286" Name 4211 "var287" Name 4215 "var288" Name 4219 "var289" Name 4223 "var290" Name 4226 "var291" Name 4229 "var292" Name 4232 "var293" Name 4235 "var294" Name 4238 "var295" Name 4242 "var296" Name 4246 "var297" Name 4250 "var298" Name 4254 "var299" Name 4258 "var300" Name 4262 "var301" Name 4266 "var302" Name 4270 "var303" Name 4274 "var304" Name 4278 "var305" Name 4282 "var306" Name 4286 "var307" Name 4290 "var308" Name 4294 "var309" Name 4298 "var310" Name 4301 "var311" Name 4304 "var312" Name 4307 "var313" Name 4310 "var314" Name 4313 "var315" Name 4316 "var316" Name 4319 "var317" Name 4322 "var318" Name 4325 "var319" Name 4328 "var320" Name 4331 "var321" Name 4334 "var322" Name 4338 "var323" Name 4342 "var324" Name 4346 "var325" Name 4350 "var326" Name 4354 "var327" Name 4358 "var328" Name 4362 "var329" Name 4366 "var330" Name 4370 "var331" Name 4374 "var332" Name 4378 "var333" Name 4382 "var334" Name 4386 "var335" Name 4390 "var336" Name 4394 "var337" Name 4398 "var338" Name 4402 "var339" Name 4406 "var340" Name 4410 "var341" Name 4414 "var342" Name 4418 "var343" Name 4422 "var344" Name 4426 "var345" Name 4430 "var346" Name 4434 "var347" Name 4438 "var348" Name 4442 "var349" Name 4446 "var350" Name 4450 "var351" Name 4454 "var352" Name 4458 "var353" Name 4462 "var354" Name 4465 "var355" Name 4468 "var356" Name 4472 "var357" Name 4476 "var358" Name 4480 "var359" Name 4484 "var360" Name 4488 "var361" Name 4492 "var362" Name 4495 "var363" Name 4498 "var364" Name 4501 "var365" Name 4505 "var366" Name 4509 "var367" Name 4513 "var368" Name 4517 "var369" Name 4521 "var370" Name 4525 "var371" Name 4529 "var372" Name 4533 "var373" Name 4537 "var374" Name 4540 "var375" Name 4543 "var376" Name 4546 "var377" Name 4549 "var378" Name 4552 "var379" Name 4555 "var380" Name 4558 "var381" Name 4561 "var382" Name 4565 "var383" Name 4569 "var384" Name 4573 "var385" Name 4577 "var386" Name 4581 "var387" Name 4585 "var388" Name 4589 "var389" Name 4593 "var390" Name 4597 "var391" Name 4601 "var392" Name 4605 "var393" Name 4609 "var394" Name 4613 "var395" Name 4617 "var396" Name 4621 "var397" Name 4625 "var398" Name 4628 "var399" Name 4632 "var400" Name 4636 "var401" Name 4640 "var402" Name 4643 "var403" Name 4647 "var404" Name 4651 "var405" Name 4655 "var406" Name 4658 "var407" Name 4661 "var408" Name 4665 "var409" Name 4669 "var410" Name 4673 "var411" Name 4677 "var412" Name 4681 "var413" Name 4685 "var1" Name 4687 "var5" Name 4689 "var9" Name 4690 "var13" Name 4691 "var33" Name 4693 "var41" Name 4694 "var42" Name 4695 "b" Name 4734 "var1" Name 4735 "var5" Name 4736 "var2" Name 4738 "var3" Name 4739 "var9" Name 4740 "var10" Name 4741 "var11" Name 4742 "var13" Name 4743 "var33" Name 4744 "var34" Name 4747 "param" Name 4751 "param" Name 4753 "param" Name 4758 "param" Name 4762 "param" Name 4766 "param" Name 4770 "param" Name 4774 "param" Name 4778 "param" Name 4782 "param" Name 4786 "param" Name 4790 "param" Name 4794 "param" Name 4796 "v1" Name 4798 "v2" Name 4800 "v3" Name 4802 "v4" Name 4804 "v5" Name 4807 "v6" Name 4809 "v7" Name 4811 "v8" Name 4813 "v9" Name 4815 "v10" Name 4817 "v11" Name 4819 "v12" Name 4821 "v13" Name 4823 "v14" Name 4825 "v15" Name 4827 "v16" Name 4829 "v17" Name 4831 "v18" Name 4833 "v19" Name 4835 "v20" Name 4837 "v21" Name 4839 "v22" Name 4841 "b1" Name 4843 "var" Name 4847 "b2" Name 4851 "b3" Name 4857 "b1" Name 4862 "b2" Name 4866 "b3" Name 4868 "b4" Name 4869 "b5" Name 4870 "b6" Name 4871 "b7" Name 4872 "b8" Name 4873 "b9" Name 4874 "b10" Name 4875 "b11" Name 4876 "b12" Name 4877 "b13" Name 4879 "b14" Name 4881 "b15" Name 4883 "b16" Name 4884 "b17" Name 4885 "b18" Name 4886 "b19" Name 4887 "b20" Name 4888 "b21" Name 4889 "b22" Name 4890 "b23" Name 4891 "b24" Name 4892 "b25" Name 4893 "b26" Name 4894 "b27" Name 4895 "b28" Name 4896 "b29" Name 4897 "b30" Name 4898 "b31" Name 4899 "b32" Name 4900 "b33" Name 4901 "b34" Name 4902 "b35" Name 4903 "b36" Name 4904 "b37" Name 4905 "b38" Name 4906 "b39" Name 4907 "b40" Name 4908 "b41" Name 4909 "b42" Name 4910 "b43" Name 4911 "b44" Name 4912 "b45" Name 4913 "b46" Name 4914 "b47" Name 4915 "b48" Name 4916 "b49" Name 4917 "b50" Name 4918 "b51" Name 4919 "b52" Name 4920 "b53" Name 4921 "b54" Name 4922 "b55" Name 4923 "b56" Name 4924 "b57" Name 4925 "b58" Name 4926 "b59" Name 4927 "b60" Name 4928 "b61" Name 4929 "b62" Name 4930 "b63" Name 4931 "b64" Name 4932 "b65" Name 4933 "b66" Name 4934 "b67" Name 4935 "b68" Name 4936 "b69" Name 4937 "b70" Name 4938 "b71" Name 4939 "b72" Name 4940 "tvar31" Name 4944 "tvar22" Name 4946 "tvar32" Name 4948 "tvar33" Name 4952 "tvar34" Name 4956 "tvar24" Name 4962 "tvar35" Name 4966 "tvar23" Name 4972 "tvar36" Name 4973 "tvar11" Name 4975 "tvar37" Name 4978 "tvar38" Name 4982 "tvar39" Name 4983 "tvar12" Name 4989 "tvar40" Name 4990 "tvar10" Name 4996 "tvar41" Name 5000 "tvar20" Name 5002 "tvar42" Name 5005 "tvar43" Name 5009 "tvar44" Name 5013 "tvar21" Name 5019 "tvar45" Name 5023 "tvar19" Name 5029 "tvar46" Name 5030 "tvar14" Name 5035 "tvar47" Name 5036 "tvar13" Name 5041 "tvar48" Name 5042 "tvar15" Name 5047 "tvar49" Name 5048 "tvar0" Name 5054 "tvar50" Name 5058 "tvar3" Name 5065 "tvar51" Name 5066 "tvar4" Name 5073 "tvar52" Name 5077 "tvar30" Name 5083 "tvar53" Name 5087 "tvar28" Name 5093 "tvar54" Name 5097 "tvar29" Name 5103 "tvar55" Name 5104 "tvar9" Name 5110 "tvar56" Name 5111 "tvar7" Name 5117 "tvar57" Name 5118 "tvar8" Name 5124 "tvar58" Name 5128 "tvar2" Name 5135 "tvar59" Name 5140 "tvar60" Name 5145 "tvar61" Name 5150 "tvar62" Name 5157 "tvar63" Name 5164 "tvar64" Name 5171 "tvar65" Name 5178 "tvar66" Name 5185 "tvar67" Name 5192 "tvar68" Name 5197 "tvar69" Name 5202 "tvar70" Name 5207 "tvar71" Name 5213 "tvar72" Name 5219 "tvar73" Name 5225 "tvar74" Name 5232 "tvar75" Name 5239 "tvar76" Name 5246 "tvar77" Name 5252 "tvar78" Name 5258 "tvar79" Name 5264 "tvar80" Name 5266 "tvar81" Name 5273 "tvar82" Name 5281 "tvar83" Name 5289 "tvar84" Name 5295 "tvar85" Name 5301 "tvar86" Name 5307 "tvar87" Name 5315 "tvar88" Name 5323 "tvar89" Name 5331 "tvar90" Name 5337 "tvar91" Name 5343 "tvar92" Name 5349 "tvar93" Name 5354 "tvar94" Name 5359 "tvar95" Name 5364 "tvar96" Name 5371 "tvar97" Name 5378 "tvar98" Name 5385 "tvar99" Name 5393 "tvar100" Name 5402 "tvar101" Name 5411 "tvar102" Name 5416 "tvar103" Name 5421 "tvar104" Name 5426 "tvar105" Name 5432 "tvar106" Name 5438 "tvar107" Name 5444 "tvar108" Name 5450 "tvar109" Name 5456 "tvar110" Name 5462 "tvar111" Name 5469 "tvar112" Name 5476 "tvar113" Name 5482 "tvar114" Name 5488 "tvar115" Name 5494 "tvar116" Name 5500 "tvar117" Name 5506 "tvar118" Name 5512 "tvar119" Name 5519 "tvar120" Name 5525 "tvar121" Name 5531 "tvar122" Name 5537 "tvar123" Name 5545 "tvar124" Name 5553 "tvar125" Name 5561 "tvar126" Name 5567 "tvar127" Name 5573 "tvar128" Name 5579 "tvar129" Name 5587 "tvar130" Name 5595 "tvar131" Name 5603 "tvar132" Name 5609 "tvar133" Name 5615 "tvar134" Name 5621 "tvar135" Name 5630 "tvar136" Name 5640 "var1_in" Name 5642 "var5_in" Name 5643 "var9_in" Name 5645 "var13_in" Name 5647 "var33_in" Name 5649 "var41_in" Name 5650 "var42_in" Name 5652 "var11_out" Name 5654 "var51_out" Name 5656 "var91_out" Name 5658 "var331_out" Name 5659 "tvar1" Name 5660 "tvar5" Name 5661 "tvar6" Name 5662 "tvar16" Name 5663 "tvar17" Name 5664 "tvar18" Name 5665 "tvar25" Name 5666 "tvar26" Name 5667 "tvar27" Decorate 79(tex) Binding 0 Decorate 79(tex) DescriptorSet 0 Decorate 90(ubName) Block MemberDecorate 90(ubName) 0 Offset 0 Decorate 94(ubInst) Binding 0 Decorate 94(ubInst) DescriptorSet 0 Decorate 618(fvar0) Location 0 Decorate 621(fvar1) Location 1 Decorate 624(fvar2) Location 2 Decorate 627(fvar3) Location 3 Decorate 645(svar24) Binding 0 Decorate 645(svar24) DescriptorSet 0 Decorate 653(svar25) Binding 0 Decorate 653(svar25) DescriptorSet 0 Decorate 661(svar26) Binding 0 Decorate 661(svar26) DescriptorSet 0 Decorate 669(svar33) Binding 0 Decorate 669(svar33) DescriptorSet 0 Decorate 677(svar34) Binding 0 Decorate 677(svar34) DescriptorSet 0 Decorate 685(svar35) Binding 0 Decorate 685(svar35) DescriptorSet 0 Decorate 693(svar27) Binding 0 Decorate 693(svar27) DescriptorSet 0 Decorate 701(svar28) Binding 0 Decorate 701(svar28) DescriptorSet 0 Decorate 709(svar29) Binding 0 Decorate 709(svar29) DescriptorSet 0 Decorate 717(var16) Binding 0 Decorate 717(var16) DescriptorSet 0 Decorate 726(var18) Binding 0 Decorate 726(var18) DescriptorSet 0 Decorate 735(var20) Binding 0 Decorate 735(var20) DescriptorSet 0 Decorate 762(svar30) Binding 0 Decorate 762(svar30) DescriptorSet 0 Decorate 769(svar31) Binding 0 Decorate 769(svar31) DescriptorSet 0 Decorate 776(svar32) Binding 0 Decorate 776(svar32) DescriptorSet 0 Decorate 783(svar21) Binding 0 Decorate 783(svar21) DescriptorSet 0 Decorate 790(svar22) Binding 0 Decorate 790(svar22) DescriptorSet 0 Decorate 797(svar23) Binding 0 Decorate 797(svar23) DescriptorSet 0 Decorate 821(var17) Binding 0 Decorate 821(var17) DescriptorSet 0 Decorate 829(var19) Binding 0 Decorate 829(var19) DescriptorSet 0 Decorate 842(Offsets) Flat Decorate 842(Offsets) Location 4 Decorate 4843(var) Flat Decorate 4843(var) Location 15 Decorate 4944(tvar22) Binding 16 Decorate 4944(tvar22) DescriptorSet 0 Decorate 4946(tvar32) Location 16 Decorate 4948(tvar33) Flat Decorate 4948(tvar33) Location 17 Decorate 4956(tvar24) Binding 18 Decorate 4956(tvar24) DescriptorSet 0 Decorate 4966(tvar23) Binding 17 Decorate 4966(tvar23) DescriptorSet 0 Decorate 4973(tvar11) Binding 8 Decorate 4973(tvar11) DescriptorSet 0 Decorate 4975(tvar37) Location 18 Decorate 4978(tvar38) Flat Decorate 4978(tvar38) Location 19 Decorate 4983(tvar12) Binding 9 Decorate 4983(tvar12) DescriptorSet 0 Decorate 4990(tvar10) Binding 7 Decorate 4990(tvar10) DescriptorSet 0 Decorate 5000(tvar20) Binding 14 Decorate 5000(tvar20) DescriptorSet 0 Decorate 5002(tvar42) Location 20 Decorate 5005(tvar43) Flat Decorate 5005(tvar43) Location 21 Decorate 5013(tvar21) Binding 15 Decorate 5013(tvar21) DescriptorSet 0 Decorate 5023(tvar19) Binding 13 Decorate 5023(tvar19) DescriptorSet 0 Decorate 5030(tvar14) Binding 11 Decorate 5030(tvar14) DescriptorSet 0 Decorate 5036(tvar13) Binding 10 Decorate 5036(tvar13) DescriptorSet 0 Decorate 5042(tvar15) Binding 12 Decorate 5042(tvar15) DescriptorSet 0 Decorate 5048(tvar0) Binding 0 Decorate 5048(tvar0) DescriptorSet 0 Decorate 5058(tvar3) Binding 2 Decorate 5058(tvar3) DescriptorSet 0 Decorate 5066(tvar4) Binding 3 Decorate 5066(tvar4) DescriptorSet 0 Decorate 5077(tvar30) Binding 21 Decorate 5077(tvar30) DescriptorSet 0 Decorate 5087(tvar28) Binding 19 Decorate 5087(tvar28) DescriptorSet 0 Decorate 5097(tvar29) Binding 20 Decorate 5097(tvar29) DescriptorSet 0 Decorate 5104(tvar9) Binding 6 Decorate 5104(tvar9) DescriptorSet 0 Decorate 5111(tvar7) Binding 4 Decorate 5111(tvar7) DescriptorSet 0 Decorate 5118(tvar8) Binding 5 Decorate 5118(tvar8) DescriptorSet 0 Decorate 5128(tvar2) Binding 1 Decorate 5128(tvar2) DescriptorSet 0 Decorate 5266(tvar81) Location 22 Decorate 5640(var1_in) Flat Decorate 5640(var1_in) Location 8 Decorate 5642(var5_in) Flat Decorate 5642(var5_in) Location 9 Decorate 5643(var9_in) Flat Decorate 5643(var9_in) Location 10 Decorate 5645(var13_in) Flat Decorate 5645(var13_in) Location 11 Decorate 5647(var33_in) Flat Decorate 5647(var33_in) Location 12 Decorate 5649(var41_in) Flat Decorate 5649(var41_in) Location 13 Decorate 5650(var42_in) Flat Decorate 5650(var42_in) Location 14 Decorate 5652(var11_out) Location 0 Decorate 5654(var51_out) Location 1 Decorate 5656(var91_out) Location 2 Decorate 5658(var331_out) Location 3 Decorate 5659(tvar1) Binding 0 Decorate 5659(tvar1) DescriptorSet 0 Decorate 5660(tvar5) Binding 0 Decorate 5660(tvar5) DescriptorSet 0 Decorate 5661(tvar6) Binding 0 Decorate 5661(tvar6) DescriptorSet 0 Decorate 5662(tvar16) Binding 0 Decorate 5662(tvar16) DescriptorSet 0 Decorate 5663(tvar17) Binding 0 Decorate 5663(tvar17) DescriptorSet 0 Decorate 5664(tvar18) Binding 0 Decorate 5664(tvar18) DescriptorSet 0 Decorate 5665(tvar25) Binding 0 Decorate 5665(tvar25) DescriptorSet 0 Decorate 5666(tvar26) Binding 0 Decorate 5666(tvar26) DescriptorSet 0 Decorate 5667(tvar27) Binding 0 Decorate 5667(tvar27) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 24: TypeInt 64 1 25: TypePointer Function 24(int64_t) 26: TypeFunction 2 25(ptr) 30: TypeInt 32 1 31: TypePointer Function 30(int) 32: TypeFunction 2 31(ptr) 36: TypeInt 32 0 37: TypePointer Function 36(int) 38: TypeFunction 2 37(ptr) 42: TypeInt 64 0 43: TypePointer Function 42(int64_t) 44: TypeFunction 2 43(ptr) 48: TypeFloat 32 49: TypePointer Function 48(float) 50: TypeFunction 2 49(ptr) 54: TypeFloat 64 55: TypePointer Function 54(float64_t) 56: TypeFunction 2 55(ptr) 73: 30(int) Constant 0 74: TypeImage 48(float) 2D sampled format:Unknown 75: TypeSampledImage 74 76: 36(int) Constant 10 77: TypeArray 75 76 78: TypePointer UniformConstant 77 79(tex): 78(ptr) Variable UniformConstant 81: TypePointer UniformConstant 75 84: TypeVector 48(float) 2 85: TypePointer Private 84(fvec2) 86(coord): 85(ptr) Variable Private 88: TypeVector 48(float) 4 90(ubName): TypeStruct 30(int) 91: 36(int) Constant 4 92: TypeArray 90(ubName) 91 93: TypePointer Uniform 92 94(ubInst): 93(ptr) Variable Uniform 97: 36(int) Constant 0 99: 24(int64_t) Constant 0 0 101: 42(int64_t) Constant 0 0 103: 48(float) Constant 0 105:54(float64_t) Constant 0 0 106: TypeVector 36(int) 2 107: TypePointer Function 106(ivec2) 109: 106(ivec2) ConstantComposite 97 97 110: TypeVector 24(int64_t) 2 111: TypePointer Function 110(i64vec2) 113:110(i64vec2) ConstantComposite 99 99 114: TypeVector 42(int64_t) 2 115: TypePointer Function 114(i64vec2) 117:114(i64vec2) ConstantComposite 101 101 118: TypePointer Function 84(fvec2) 120: 84(fvec2) ConstantComposite 103 103 121: TypeVector 54(float64_t) 2 122: TypePointer Function 121(f64vec2) 124:121(f64vec2) ConstantComposite 105 105 125: TypeVector 36(int) 3 126: TypePointer Function 125(ivec3) 128: 125(ivec3) ConstantComposite 97 97 97 129: TypeVector 24(int64_t) 3 130: TypePointer Function 129(i64vec3) 132:129(i64vec3) ConstantComposite 99 99 99 133: TypeVector 42(int64_t) 3 134: TypePointer Function 133(i64vec3) 136:133(i64vec3) ConstantComposite 101 101 101 137: TypeVector 48(float) 3 138: TypePointer Function 137(fvec3) 140: 137(fvec3) ConstantComposite 103 103 103 141: TypeVector 54(float64_t) 3 142: TypePointer Function 141(f64vec3) 144:141(f64vec3) ConstantComposite 105 105 105 145: TypeVector 36(int) 4 146: TypePointer Function 145(ivec4) 148: 145(ivec4) ConstantComposite 97 97 97 97 149: TypeVector 24(int64_t) 4 150: TypePointer Function 149(i64vec4) 152:149(i64vec4) ConstantComposite 99 99 99 99 153: TypeVector 42(int64_t) 4 154: TypePointer Function 153(i64vec4) 156:153(i64vec4) ConstantComposite 101 101 101 101 157: TypePointer Function 88(fvec4) 159: 88(fvec4) ConstantComposite 103 103 103 103 160: TypeVector 54(float64_t) 4 161: TypePointer Function 160(f64vec4) 163:160(f64vec4) ConstantComposite 105 105 105 105 176: TypeVector 30(int) 2 177: TypePointer Function 176(ivec2) 179: 176(ivec2) ConstantComposite 73 73 191: TypeVector 30(int) 3 192: TypePointer Function 191(ivec3) 194: 191(ivec3) ConstantComposite 73 73 73 204: TypeVector 30(int) 4 205: TypePointer Function 204(ivec4) 207: 204(ivec4) ConstantComposite 73 73 73 73 299(ResType): TypeStruct 48(float) 30(int) 305(ResType): TypeStruct 84(fvec2) 176(ivec2) 311(ResType): TypeStruct 137(fvec3) 191(ivec3) 317(ResType): TypeStruct 88(fvec4) 204(ivec4) 519(ResType): TypeStruct 36(int) 36(int) 525(ResType): TypeStruct 106(ivec2) 106(ivec2) 531(ResType): TypeStruct 125(ivec3) 125(ivec3) 537(ResType): TypeStruct 145(ivec4) 145(ivec4) 583(ResType): TypeStruct 30(int) 30(int) 589(ResType): TypeStruct 176(ivec2) 176(ivec2) 595(ResType): TypeStruct 191(ivec3) 191(ivec3) 601(ResType): TypeStruct 204(ivec4) 204(ivec4) 617: TypePointer Input 48(float) 618(fvar0): 617(ptr) Variable Input 620: TypePointer Input 84(fvec2) 621(fvar1): 620(ptr) Variable Input 623: TypePointer Input 137(fvec3) 624(fvar2): 623(ptr) Variable Input 626: TypePointer Input 88(fvec4) 627(fvar3): 626(ptr) Variable Input 645(svar24): 81(ptr) Variable UniformConstant 650: TypeImage 36(int) 2D sampled format:Unknown 651: TypeSampledImage 650 652: TypePointer UniformConstant 651 653(svar25): 652(ptr) Variable UniformConstant 658: TypeImage 30(int) 2D sampled format:Unknown 659: TypeSampledImage 658 660: TypePointer UniformConstant 659 661(svar26): 660(ptr) Variable UniformConstant 666: TypeImage 48(float) 2D array sampled format:Unknown 667: TypeSampledImage 666 668: TypePointer UniformConstant 667 669(svar33): 668(ptr) Variable UniformConstant 674: TypeImage 36(int) 2D array sampled format:Unknown 675: TypeSampledImage 674 676: TypePointer UniformConstant 675 677(svar34): 676(ptr) Variable UniformConstant 682: TypeImage 30(int) 2D array sampled format:Unknown 683: TypeSampledImage 682 684: TypePointer UniformConstant 683 685(svar35): 684(ptr) Variable UniformConstant 690: TypeImage 48(float) Rect sampled format:Unknown 691: TypeSampledImage 690 692: TypePointer UniformConstant 691 693(svar27): 692(ptr) Variable UniformConstant 698: TypeImage 36(int) Rect sampled format:Unknown 699: TypeSampledImage 698 700: TypePointer UniformConstant 699 701(svar28): 700(ptr) Variable UniformConstant 706: TypeImage 30(int) Rect sampled format:Unknown 707: TypeSampledImage 706 708: TypePointer UniformConstant 707 709(svar29): 708(ptr) Variable UniformConstant 714: TypeImage 48(float) 2D depth sampled format:Unknown 715: TypeSampledImage 714 716: TypePointer UniformConstant 715 717(var16): 716(ptr) Variable UniformConstant 723: TypeImage 48(float) 2D depth array sampled format:Unknown 724: TypeSampledImage 723 725: TypePointer UniformConstant 724 726(var18): 725(ptr) Variable UniformConstant 732: TypeImage 48(float) Rect depth sampled format:Unknown 733: TypeSampledImage 732 734: TypePointer UniformConstant 733 735(var20): 734(ptr) Variable UniformConstant 759: TypeImage 48(float) Cube sampled format:Unknown 760: TypeSampledImage 759 761: TypePointer UniformConstant 760 762(svar30): 761(ptr) Variable UniformConstant 766: TypeImage 36(int) Cube sampled format:Unknown 767: TypeSampledImage 766 768: TypePointer UniformConstant 767 769(svar31): 768(ptr) Variable UniformConstant 773: TypeImage 30(int) Cube sampled format:Unknown 774: TypeSampledImage 773 775: TypePointer UniformConstant 774 776(svar32): 775(ptr) Variable UniformConstant 780: TypeImage 48(float) Cube array sampled format:Unknown 781: TypeSampledImage 780 782: TypePointer UniformConstant 781 783(svar21): 782(ptr) Variable UniformConstant 787: TypeImage 36(int) Cube array sampled format:Unknown 788: TypeSampledImage 787 789: TypePointer UniformConstant 788 790(svar22): 789(ptr) Variable UniformConstant 794: TypeImage 30(int) Cube array sampled format:Unknown 795: TypeSampledImage 794 796: TypePointer UniformConstant 795 797(svar23): 796(ptr) Variable UniformConstant 818: TypeImage 48(float) Cube depth sampled format:Unknown 819: TypeSampledImage 818 820: TypePointer UniformConstant 819 821(var17): 820(ptr) Variable UniformConstant 826: TypeImage 48(float) Cube depth array sampled format:Unknown 827: TypeSampledImage 826 828: TypePointer UniformConstant 827 829(var19): 828(ptr) Variable UniformConstant 840: TypeArray 176(ivec2) 91 841: TypePointer Input 840 842(Offsets): 841(ptr) Variable Input 892: TypeInt 8 0 893: TypePointer Function 892(int8_t) 895: 892(int8_t) Constant 1 897:54(float64_t) Constant 0 1072693248 898: TypeInt 16 1 899: TypePointer Function 898(int16_t) 901:898(int16_t) Constant 1 902: TypeBool 903: TypePointer Function 902(bool) 905: 902(bool) ConstantFalse 913: TypeInt 16 0 914:913(int16_t) Constant 0 915:913(int16_t) Constant 1 919: 36(int) Constant 1 921: 24(int64_t) Constant 2 0 923: 42(int64_t) Constant 3 0 925: 48(float) Constant 1082130432 927:54(float64_t) Constant 0 1075052544 929: 30(int) Constant 6 930: 176(ivec2) ConstantComposite 929 929 932: 36(int) Constant 7 933: 106(ivec2) ConstantComposite 932 932 935: 24(int64_t) Constant 8 0 936:110(i64vec2) ConstantComposite 935 935 938: 42(int64_t) Constant 9 0 939:114(i64vec2) ConstantComposite 938 938 941: 48(float) Constant 1092616192 942: 84(fvec2) ConstantComposite 941 941 944:54(float64_t) Constant 0 1076232192 945:121(f64vec2) ConstantComposite 944 944 947: 30(int) Constant 12 948: 191(ivec3) ConstantComposite 947 947 947 950: 36(int) Constant 13 951: 125(ivec3) ConstantComposite 950 950 950 953: 24(int64_t) Constant 14 0 954:129(i64vec3) ConstantComposite 953 953 953 956: 42(int64_t) Constant 15 0 957:133(i64vec3) ConstantComposite 956 956 956 959: 48(float) Constant 1098907648 960: 137(fvec3) ConstantComposite 959 959 959 962:54(float64_t) Constant 0 1076953088 963:141(f64vec3) ConstantComposite 962 962 962 965: 30(int) Constant 18 966: 204(ivec4) ConstantComposite 965 965 965 965 968: 36(int) Constant 19 969: 145(ivec4) ConstantComposite 968 968 968 968 971: 24(int64_t) Constant 20 0 972:149(i64vec4) ConstantComposite 971 971 971 971 974: 42(int64_t) Constant 21 0 975:153(i64vec4) ConstantComposite 974 974 974 974 977: 48(float) Constant 1102053376 978: 88(fvec4) ConstantComposite 977 977 977 977 980:54(float64_t) Constant 0 1077346304 981:160(f64vec4) ConstantComposite 980 980 980 980 982: TypeInt 8 1 983: TypePointer Function 982(int8_t) 985: 982(int8_t) Constant 24 987:898(int16_t) Constant 25 988: TypeVector 982(int8_t) 2 989: TypePointer Function 988(i8vec2) 991: 982(int8_t) Constant 26 992: 988(i8vec2) ConstantComposite 991 991 993: TypeVector 898(int16_t) 2 994: TypePointer Function 993(i16vec2) 996:898(int16_t) Constant 27 997:993(i16vec2) ConstantComposite 996 996 998: TypeVector 982(int8_t) 3 999: TypePointer Function 998(i8vec3) 1001: 982(int8_t) Constant 28 1002: 998(i8vec3) ConstantComposite 1001 1001 1001 1003: TypeVector 898(int16_t) 3 1004: TypePointer Function 1003(i16vec3) 1006:898(int16_t) Constant 29 1007:1003(i16vec3) ConstantComposite 1006 1006 1006 1008: TypeVector 982(int8_t) 4 1009: TypePointer Function 1008(i8vec4) 1011: 982(int8_t) Constant 30 1012:1008(i8vec4) ConstantComposite 1011 1011 1011 1011 1013: TypeVector 898(int16_t) 4 1014: TypePointer Function 1013(i16vec4) 1016:898(int16_t) Constant 31 1017:1013(i16vec4) ConstantComposite 1016 1016 1016 1016 1019: 892(int8_t) Constant 32 1020: TypePointer Function 913(int16_t) 1022:913(int16_t) Constant 33 1023: TypeVector 892(int8_t) 2 1024: TypePointer Function 1023(i8vec2) 1026: 892(int8_t) Constant 34 1027:1023(i8vec2) ConstantComposite 1026 1026 1028: TypeVector 913(int16_t) 2 1029: TypePointer Function 1028(i16vec2) 1031:913(int16_t) Constant 35 1032:1028(i16vec2) ConstantComposite 1031 1031 1033: TypeVector 892(int8_t) 3 1034: TypePointer Function 1033(i8vec3) 1036: 892(int8_t) Constant 36 1037:1033(i8vec3) ConstantComposite 1036 1036 1036 1038: TypeVector 892(int8_t) 4 1039: TypePointer Function 1038(i8vec4) 1041: 892(int8_t) Constant 37 1042:1038(i8vec4) ConstantComposite 1041 1041 1041 1041 1043: TypeFloat 16 1044: TypePointer Function 1043(float16_t) 1046:1043(float16_t) Constant 20672 1047: TypeVector 1043(float16_t) 2 1048: TypePointer Function 1047(f16vec2) 1050:1043(float16_t) Constant 20704 1051:1047(f16vec2) ConstantComposite 1050 1050 1052: TypeVector 1043(float16_t) 3 1053: TypePointer Function 1052(f16vec3) 1055:1043(float16_t) Constant 20736 1056:1052(f16vec3) ConstantComposite 1055 1055 1055 1057: TypeVector 1043(float16_t) 4 1058: TypePointer Function 1057(f16vec4) 1060:1043(float16_t) Constant 20768 1061:1057(f16vec4) ConstantComposite 1060 1060 1060 1060 3760: 30(int) Constant 1 3764: 24(int64_t) Constant 1 0 3771: 48(float) Constant 1065353216 4686: 982(int8_t) Constant 0 4688:898(int16_t) Constant 0 4692:1043(float16_t) Constant 0 4737: 892(int8_t) Constant 0 4805:1047(f16vec2) ConstantComposite 4692 4692 4842: TypePointer Input 30(int) 4843(var): 4842(ptr) Variable Input 4855: TypeVector 902(bool) 2 4856: TypePointer Function 4855(bvec2) 4858: 902(bool) ConstantTrue 4859: 4855(bvec2) ConstantComposite 4858 4858 4860: TypeVector 902(bool) 3 4861: TypePointer Function 4860(bvec3) 4863: 4860(bvec3) ConstantComposite 4858 4858 4858 4864: TypeVector 902(bool) 4 4865: TypePointer Function 4864(bvec4) 4867: 4864(bvec4) ConstantComposite 4858 4858 4858 4858 4878: 4855(bvec2) ConstantComposite 905 905 4880: 4860(bvec3) ConstantComposite 905 905 905 4882: 4864(bvec4) ConstantComposite 905 905 905 905 4941: TypeImage 48(float) 1D sampled format:Unknown 4942: TypeSampledImage 4941 4943: TypePointer UniformConstant 4942 4944(tvar22): 4943(ptr) Variable UniformConstant 4946(tvar32): 617(ptr) Variable Input 4948(tvar33): 4842(ptr) Variable Input 4953: TypeImage 30(int) 1D sampled format:Unknown 4954: TypeSampledImage 4953 4955: TypePointer UniformConstant 4954 4956(tvar24): 4955(ptr) Variable UniformConstant 4963: TypeImage 36(int) 1D sampled format:Unknown 4964: TypeSampledImage 4963 4965: TypePointer UniformConstant 4964 4966(tvar23): 4965(ptr) Variable UniformConstant 4973(tvar11): 81(ptr) Variable UniformConstant 4975(tvar37): 620(ptr) Variable Input 4977: TypePointer Input 176(ivec2) 4978(tvar38): 4977(ptr) Variable Input 4983(tvar12): 660(ptr) Variable UniformConstant 4990(tvar10): 652(ptr) Variable UniformConstant 4997: TypeImage 48(float) 3D sampled format:Unknown 4998: TypeSampledImage 4997 4999: TypePointer UniformConstant 4998 5000(tvar20): 4999(ptr) Variable UniformConstant 5002(tvar42): 623(ptr) Variable Input 5004: TypePointer Input 191(ivec3) 5005(tvar43): 5004(ptr) Variable Input 5010: TypeImage 30(int) 3D sampled format:Unknown 5011: TypeSampledImage 5010 5012: TypePointer UniformConstant 5011 5013(tvar21): 5012(ptr) Variable UniformConstant 5020: TypeImage 36(int) 3D sampled format:Unknown 5021: TypeSampledImage 5020 5022: TypePointer UniformConstant 5021 5023(tvar19): 5022(ptr) Variable UniformConstant 5030(tvar14): 692(ptr) Variable UniformConstant 5036(tvar13): 708(ptr) Variable UniformConstant 5042(tvar15): 700(ptr) Variable UniformConstant 5048(tvar0): 734(ptr) Variable UniformConstant 5055: TypeImage 48(float) 1D depth sampled format:Unknown 5056: TypeSampledImage 5055 5057: TypePointer UniformConstant 5056 5058(tvar3): 5057(ptr) Variable UniformConstant 5066(tvar4): 716(ptr) Variable UniformConstant 5074: TypeImage 48(float) 1D array sampled format:Unknown 5075: TypeSampledImage 5074 5076: TypePointer UniformConstant 5075 5077(tvar30): 5076(ptr) Variable UniformConstant 5084: TypeImage 30(int) 1D array sampled format:Unknown 5085: TypeSampledImage 5084 5086: TypePointer UniformConstant 5085 5087(tvar28): 5086(ptr) Variable UniformConstant 5094: TypeImage 36(int) 1D array sampled format:Unknown 5095: TypeSampledImage 5094 5096: TypePointer UniformConstant 5095 5097(tvar29): 5096(ptr) Variable UniformConstant 5104(tvar9): 668(ptr) Variable UniformConstant 5111(tvar7): 684(ptr) Variable UniformConstant 5118(tvar8): 676(ptr) Variable UniformConstant 5125: TypeImage 48(float) 1D depth array sampled format:Unknown 5126: TypeSampledImage 5125 5127: TypePointer UniformConstant 5126 5128(tvar2): 5127(ptr) Variable UniformConstant 5266(tvar81): 626(ptr) Variable Input 5639: TypePointer Input 982(int8_t) 5640(var1_in): 5639(ptr) Variable Input 5641: TypePointer Input 898(int16_t) 5642(var5_in): 5641(ptr) Variable Input 5643(var9_in): 4842(ptr) Variable Input 5644: TypePointer Input 24(int64_t) 5645(var13_in): 5644(ptr) Variable Input 5646: TypePointer Input 1043(float16_t) 5647(var33_in): 5646(ptr) Variable Input 5648: TypePointer Input 54(float64_t) 5649(var41_in): 5648(ptr) Variable Input 5650(var42_in): 5648(ptr) Variable Input 5651: TypePointer Output 982(int8_t) 5652(var11_out): 5651(ptr) Variable Output 5653: TypePointer Output 898(int16_t) 5654(var51_out): 5653(ptr) Variable Output 5655: TypePointer Output 30(int) 5656(var91_out): 5655(ptr) Variable Output 5657: TypePointer Output 1043(float16_t) 5658(var331_out): 5657(ptr) Variable Output 5659(tvar1): 820(ptr) Variable UniformConstant 5660(tvar5): 725(ptr) Variable UniformConstant 5661(tvar6): 828(ptr) Variable UniformConstant 5662(tvar16): 789(ptr) Variable UniformConstant 5663(tvar17): 796(ptr) Variable UniformConstant 5664(tvar18): 782(ptr) Variable UniformConstant 5665(tvar25): 775(ptr) Variable UniformConstant 5666(tvar26): 761(ptr) Variable UniformConstant 5667(tvar27): 768(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 4940(tvar31): 157(ptr) Variable Function 4952(tvar34): 205(ptr) Variable Function 4962(tvar35): 146(ptr) Variable Function 4972(tvar36): 157(ptr) Variable Function 4982(tvar39): 205(ptr) Variable Function 4989(tvar40): 146(ptr) Variable Function 4996(tvar41): 157(ptr) Variable Function 5009(tvar44): 205(ptr) Variable Function 5019(tvar45): 146(ptr) Variable Function 5029(tvar46): 157(ptr) Variable Function 5035(tvar47): 205(ptr) Variable Function 5041(tvar48): 146(ptr) Variable Function 5047(tvar49): 49(ptr) Variable Function 5054(tvar50): 49(ptr) Variable Function 5065(tvar51): 49(ptr) Variable Function 5073(tvar52): 157(ptr) Variable Function 5083(tvar53): 205(ptr) Variable Function 5093(tvar54): 146(ptr) Variable Function 5103(tvar55): 157(ptr) Variable Function 5110(tvar56): 205(ptr) Variable Function 5117(tvar57): 146(ptr) Variable Function 5124(tvar58): 49(ptr) Variable Function 5135(tvar59): 157(ptr) Variable Function 5140(tvar60): 205(ptr) Variable Function 5145(tvar61): 146(ptr) Variable Function 5150(tvar62): 157(ptr) Variable Function 5157(tvar63): 205(ptr) Variable Function 5164(tvar64): 146(ptr) Variable Function 5171(tvar65): 157(ptr) Variable Function 5178(tvar66): 205(ptr) Variable Function 5185(tvar67): 146(ptr) Variable Function 5192(tvar68): 157(ptr) Variable Function 5197(tvar69): 205(ptr) Variable Function 5202(tvar70): 146(ptr) Variable Function 5207(tvar71): 157(ptr) Variable Function 5213(tvar72): 205(ptr) Variable Function 5219(tvar73): 146(ptr) Variable Function 5225(tvar74): 157(ptr) Variable Function 5232(tvar75): 205(ptr) Variable Function 5239(tvar76): 146(ptr) Variable Function 5246(tvar77): 157(ptr) Variable Function 5252(tvar78): 205(ptr) Variable Function 5258(tvar79): 146(ptr) Variable Function 5264(tvar80): 157(ptr) Variable Function 5273(tvar82): 205(ptr) Variable Function 5281(tvar83): 146(ptr) Variable Function 5289(tvar84): 157(ptr) Variable Function 5295(tvar85): 205(ptr) Variable Function 5301(tvar86): 146(ptr) Variable Function 5307(tvar87): 157(ptr) Variable Function 5315(tvar88): 205(ptr) Variable Function 5323(tvar89): 146(ptr) Variable Function 5331(tvar90): 157(ptr) Variable Function 5337(tvar91): 205(ptr) Variable Function 5343(tvar92): 146(ptr) Variable Function 5349(tvar93): 157(ptr) Variable Function 5354(tvar94): 205(ptr) Variable Function 5359(tvar95): 146(ptr) Variable Function 5364(tvar96): 157(ptr) Variable Function 5371(tvar97): 205(ptr) Variable Function 5378(tvar98): 146(ptr) Variable Function 5385(tvar99): 49(ptr) Variable Function 5393(tvar100): 49(ptr) Variable Function 5402(tvar101): 49(ptr) Variable Function 5411(tvar102): 157(ptr) Variable Function 5416(tvar103): 205(ptr) Variable Function 5421(tvar104): 146(ptr) Variable Function 5426(tvar105): 157(ptr) Variable Function 5432(tvar106): 205(ptr) Variable Function 5438(tvar107): 146(ptr) Variable Function 5444(tvar108): 157(ptr) Variable Function 5450(tvar109): 205(ptr) Variable Function 5456(tvar110): 146(ptr) Variable Function 5462(tvar111): 49(ptr) Variable Function 5469(tvar112): 49(ptr) Variable Function 5476(tvar113): 157(ptr) Variable Function 5482(tvar114): 205(ptr) Variable Function 5488(tvar115): 146(ptr) Variable Function 5494(tvar116): 157(ptr) Variable Function 5500(tvar117): 205(ptr) Variable Function 5506(tvar118): 146(ptr) Variable Function 5512(tvar119): 49(ptr) Variable Function 5519(tvar120): 157(ptr) Variable Function 5525(tvar121): 205(ptr) Variable Function 5531(tvar122): 146(ptr) Variable Function 5537(tvar123): 157(ptr) Variable Function 5545(tvar124): 205(ptr) Variable Function 5553(tvar125): 146(ptr) Variable Function 5561(tvar126): 157(ptr) Variable Function 5567(tvar127): 205(ptr) Variable Function 5573(tvar128): 146(ptr) Variable Function 5579(tvar129): 157(ptr) Variable Function 5587(tvar130): 205(ptr) Variable Function 5595(tvar131): 146(ptr) Variable Function 5603(tvar132): 157(ptr) Variable Function 5609(tvar133): 205(ptr) Variable Function 5615(tvar134): 146(ptr) Variable Function 5621(tvar135): 49(ptr) Variable Function 5630(tvar136): 49(ptr) Variable Function 4945: 4942 Load 4944(tvar22) 4947: 48(float) Load 4946(tvar32) 4949: 30(int) Load 4948(tvar33) 4950: 48(float) Load 4946(tvar32) 4951: 88(fvec4) ImageSampleImplicitLod 4945 4947 Bias Offset 4950 4949 Store 4940(tvar31) 4951 4957: 4954 Load 4956(tvar24) 4958: 48(float) Load 4946(tvar32) 4959: 30(int) Load 4948(tvar33) 4960: 48(float) Load 4946(tvar32) 4961: 204(ivec4) ImageSampleImplicitLod 4957 4958 Bias Offset 4960 4959 Store 4952(tvar34) 4961 4967: 4964 Load 4966(tvar23) 4968: 48(float) Load 4946(tvar32) 4969: 30(int) Load 4948(tvar33) 4970: 48(float) Load 4946(tvar32) 4971: 145(ivec4) ImageSampleImplicitLod 4967 4968 Bias Offset 4970 4969 Store 4962(tvar35) 4971 4974: 75 Load 4973(tvar11) 4976: 84(fvec2) Load 4975(tvar37) 4979: 176(ivec2) Load 4978(tvar38) 4980: 48(float) Load 4946(tvar32) 4981: 88(fvec4) ImageSampleImplicitLod 4974 4976 Bias Offset 4980 4979 Store 4972(tvar36) 4981 4984: 659 Load 4983(tvar12) 4985: 84(fvec2) Load 4975(tvar37) 4986: 176(ivec2) Load 4978(tvar38) 4987: 48(float) Load 4946(tvar32) 4988: 204(ivec4) ImageSampleImplicitLod 4984 4985 Bias Offset 4987 4986 Store 4982(tvar39) 4988 4991: 651 Load 4990(tvar10) 4992: 84(fvec2) Load 4975(tvar37) 4993: 176(ivec2) Load 4978(tvar38) 4994: 48(float) Load 4946(tvar32) 4995: 145(ivec4) ImageSampleImplicitLod 4991 4992 Bias Offset 4994 4993 Store 4989(tvar40) 4995 5001: 4998 Load 5000(tvar20) 5003: 137(fvec3) Load 5002(tvar42) 5006: 191(ivec3) Load 5005(tvar43) 5007: 48(float) Load 4946(tvar32) 5008: 88(fvec4) ImageSampleImplicitLod 5001 5003 Bias Offset 5007 5006 Store 4996(tvar41) 5008 5014: 5011 Load 5013(tvar21) 5015: 137(fvec3) Load 5002(tvar42) 5016: 191(ivec3) Load 5005(tvar43) 5017: 48(float) Load 4946(tvar32) 5018: 204(ivec4) ImageSampleImplicitLod 5014 5015 Bias Offset 5017 5016 Store 5009(tvar44) 5018 5024: 5021 Load 5023(tvar19) 5025: 137(fvec3) Load 5002(tvar42) 5026: 191(ivec3) Load 5005(tvar43) 5027: 48(float) Load 4946(tvar32) 5028: 145(ivec4) ImageSampleImplicitLod 5024 5025 Bias Offset 5027 5026 Store 5019(tvar45) 5028 5031: 691 Load 5030(tvar14) 5032: 84(fvec2) Load 4975(tvar37) 5033: 176(ivec2) Load 4978(tvar38) 5034: 88(fvec4) ImageSampleImplicitLod 5031 5032 Offset 5033 Store 5029(tvar46) 5034 5037: 707 Load 5036(tvar13) 5038: 84(fvec2) Load 4975(tvar37) 5039: 176(ivec2) Load 4978(tvar38) 5040: 204(ivec4) ImageSampleImplicitLod 5037 5038 Offset 5039 Store 5035(tvar47) 5040 5043: 699 Load 5042(tvar15) 5044: 84(fvec2) Load 4975(tvar37) 5045: 176(ivec2) Load 4978(tvar38) 5046: 145(ivec4) ImageSampleImplicitLod 5043 5044 Offset 5045 Store 5041(tvar48) 5046 5049: 733 Load 5048(tvar0) 5050: 137(fvec3) Load 5002(tvar42) 5051: 176(ivec2) Load 4978(tvar38) 5052: 48(float) CompositeExtract 5050 2 5053: 48(float) ImageSampleDrefImplicitLod 5049 5050 5052 Offset 5051 Store 5047(tvar49) 5053 5059: 5056 Load 5058(tvar3) 5060: 137(fvec3) Load 5002(tvar42) 5061: 30(int) Load 4948(tvar33) 5062: 48(float) Load 4946(tvar32) 5063: 48(float) CompositeExtract 5060 2 5064: 48(float) ImageSampleDrefImplicitLod 5059 5060 5063 Bias Offset 5062 5061 Store 5054(tvar50) 5064 5067: 715 Load 5066(tvar4) 5068: 137(fvec3) Load 5002(tvar42) 5069: 176(ivec2) Load 4978(tvar38) 5070: 48(float) Load 4946(tvar32) 5071: 48(float) CompositeExtract 5068 2 5072: 48(float) ImageSampleDrefImplicitLod 5067 5068 5071 Bias Offset 5070 5069 Store 5065(tvar51) 5072 5078: 5075 Load 5077(tvar30) 5079: 84(fvec2) Load 4975(tvar37) 5080: 30(int) Load 4948(tvar33) 5081: 48(float) Load 4946(tvar32) 5082: 88(fvec4) ImageSampleImplicitLod 5078 5079 Bias Offset 5081 5080 Store 5073(tvar52) 5082 5088: 5085 Load 5087(tvar28) 5089: 84(fvec2) Load 4975(tvar37) 5090: 30(int) Load 4948(tvar33) 5091: 48(float) Load 4946(tvar32) 5092: 204(ivec4) ImageSampleImplicitLod 5088 5089 Bias Offset 5091 5090 Store 5083(tvar53) 5092 5098: 5095 Load 5097(tvar29) 5099: 84(fvec2) Load 4975(tvar37) 5100: 30(int) Load 4948(tvar33) 5101: 48(float) Load 4946(tvar32) 5102: 145(ivec4) ImageSampleImplicitLod 5098 5099 Bias Offset 5101 5100 Store 5093(tvar54) 5102 5105: 667 Load 5104(tvar9) 5106: 137(fvec3) Load 5002(tvar42) 5107: 176(ivec2) Load 4978(tvar38) 5108: 48(float) Load 4946(tvar32) 5109: 88(fvec4) ImageSampleImplicitLod 5105 5106 Bias Offset 5108 5107 Store 5103(tvar55) 5109 5112: 683 Load 5111(tvar7) 5113: 137(fvec3) Load 5002(tvar42) 5114: 176(ivec2) Load 4978(tvar38) 5115: 48(float) Load 4946(tvar32) 5116: 204(ivec4) ImageSampleImplicitLod 5112 5113 Bias Offset 5115 5114 Store 5110(tvar56) 5116 5119: 675 Load 5118(tvar8) 5120: 137(fvec3) Load 5002(tvar42) 5121: 176(ivec2) Load 4978(tvar38) 5122: 48(float) Load 4946(tvar32) 5123: 145(ivec4) ImageSampleImplicitLod 5119 5120 Bias Offset 5122 5121 Store 5117(tvar57) 5123 5129: 5126 Load 5128(tvar2) 5130: 137(fvec3) Load 5002(tvar42) 5131: 30(int) Load 4948(tvar33) 5132: 48(float) Load 4946(tvar32) 5133: 48(float) CompositeExtract 5130 2 5134: 48(float) ImageSampleDrefImplicitLod 5129 5130 5133 Bias Offset 5132 5131 Store 5124(tvar58) 5134 5136: 4942 Load 4944(tvar22) 5137: 30(int) Load 4948(tvar33) 5138: 4941 Image 5136 5139: 88(fvec4) ImageFetch 5138 5137 Lod Offset 5137 5137 Store 5135(tvar59) 5139 5141: 4954 Load 4956(tvar24) 5142: 30(int) Load 4948(tvar33) 5143: 4953 Image 5141 5144: 204(ivec4) ImageFetch 5143 5142 Lod Offset 5142 5142 Store 5140(tvar60) 5144 5146: 4964 Load 4966(tvar23) 5147: 30(int) Load 4948(tvar33) 5148: 4963 Image 5146 5149: 145(ivec4) ImageFetch 5148 5147 Lod Offset 5147 5147 Store 5145(tvar61) 5149 5151: 75 Load 4973(tvar11) 5152: 176(ivec2) Load 4978(tvar38) 5153: 30(int) Load 4948(tvar33) 5154: 176(ivec2) Load 4978(tvar38) 5155: 74 Image 5151 5156: 88(fvec4) ImageFetch 5155 5152 Lod Offset 5153 5154 Store 5150(tvar62) 5156 5158: 659 Load 4983(tvar12) 5159: 176(ivec2) Load 4978(tvar38) 5160: 30(int) Load 4948(tvar33) 5161: 176(ivec2) Load 4978(tvar38) 5162: 658 Image 5158 5163: 204(ivec4) ImageFetch 5162 5159 Lod Offset 5160 5161 Store 5157(tvar63) 5163 5165: 651 Load 4990(tvar10) 5166: 176(ivec2) Load 4978(tvar38) 5167: 30(int) Load 4948(tvar33) 5168: 176(ivec2) Load 4978(tvar38) 5169: 650 Image 5165 5170: 145(ivec4) ImageFetch 5169 5166 Lod Offset 5167 5168 Store 5164(tvar64) 5170 5172: 4998 Load 5000(tvar20) 5173: 191(ivec3) Load 5005(tvar43) 5174: 30(int) Load 4948(tvar33) 5175: 191(ivec3) Load 5005(tvar43) 5176: 4997 Image 5172 5177: 88(fvec4) ImageFetch 5176 5173 Lod Offset 5174 5175 Store 5171(tvar65) 5177 5179: 5011 Load 5013(tvar21) 5180: 191(ivec3) Load 5005(tvar43) 5181: 30(int) Load 4948(tvar33) 5182: 191(ivec3) Load 5005(tvar43) 5183: 5010 Image 5179 5184: 204(ivec4) ImageFetch 5183 5180 Lod Offset 5181 5182 Store 5178(tvar66) 5184 5186: 5021 Load 5023(tvar19) 5187: 191(ivec3) Load 5005(tvar43) 5188: 30(int) Load 4948(tvar33) 5189: 191(ivec3) Load 5005(tvar43) 5190: 5020 Image 5186 5191: 145(ivec4) ImageFetch 5190 5187 Lod Offset 5188 5189 Store 5185(tvar67) 5191 5193: 691 Load 5030(tvar14) 5194: 176(ivec2) Load 4978(tvar38) 5195: 690 Image 5193 5196: 88(fvec4) ImageFetch 5195 5194 Offset 5194 Store 5192(tvar68) 5196 5198: 707 Load 5036(tvar13) 5199: 176(ivec2) Load 4978(tvar38) 5200: 706 Image 5198 5201: 204(ivec4) ImageFetch 5200 5199 Offset 5199 Store 5197(tvar69) 5201 5203: 699 Load 5042(tvar15) 5204: 176(ivec2) Load 4978(tvar38) 5205: 698 Image 5203 5206: 145(ivec4) ImageFetch 5205 5204 Offset 5204 Store 5202(tvar70) 5206 5208: 5075 Load 5077(tvar30) 5209: 176(ivec2) Load 4978(tvar38) 5210: 30(int) Load 4948(tvar33) 5211: 5074 Image 5208 5212: 88(fvec4) ImageFetch 5211 5209 Lod Offset 5210 5210 Store 5207(tvar71) 5212 5214: 5085 Load 5087(tvar28) 5215: 176(ivec2) Load 4978(tvar38) 5216: 30(int) Load 4948(tvar33) 5217: 5084 Image 5214 5218: 204(ivec4) ImageFetch 5217 5215 Lod Offset 5216 5216 Store 5213(tvar72) 5218 5220: 5095 Load 5097(tvar29) 5221: 176(ivec2) Load 4978(tvar38) 5222: 30(int) Load 4948(tvar33) 5223: 5094 Image 5220 5224: 145(ivec4) ImageFetch 5223 5221 Lod Offset 5222 5222 Store 5219(tvar73) 5224 5226: 667 Load 5104(tvar9) 5227: 191(ivec3) Load 5005(tvar43) 5228: 30(int) Load 4948(tvar33) 5229: 176(ivec2) Load 4978(tvar38) 5230: 666 Image 5226 5231: 88(fvec4) ImageFetch 5230 5227 Lod Offset 5228 5229 Store 5225(tvar74) 5231 5233: 683 Load 5111(tvar7) 5234: 191(ivec3) Load 5005(tvar43) 5235: 30(int) Load 4948(tvar33) 5236: 176(ivec2) Load 4978(tvar38) 5237: 682 Image 5233 5238: 204(ivec4) ImageFetch 5237 5234 Lod Offset 5235 5236 Store 5232(tvar75) 5238 5240: 675 Load 5118(tvar8) 5241: 191(ivec3) Load 5005(tvar43) 5242: 30(int) Load 4948(tvar33) 5243: 176(ivec2) Load 4978(tvar38) 5244: 674 Image 5240 5245: 145(ivec4) ImageFetch 5244 5241 Lod Offset 5242 5243 Store 5239(tvar76) 5245 5247: 4942 Load 4944(tvar22) 5248: 84(fvec2) Load 4975(tvar37) 5249: 30(int) Load 4948(tvar33) 5250: 48(float) Load 4946(tvar32) 5251: 88(fvec4) ImageSampleProjImplicitLod 5247 5248 Bias Offset 5250 5249 Store 5246(tvar77) 5251 5253: 4954 Load 4956(tvar24) 5254: 84(fvec2) Load 4975(tvar37) 5255: 30(int) Load 4948(tvar33) 5256: 48(float) Load 4946(tvar32) 5257: 204(ivec4) ImageSampleProjImplicitLod 5253 5254 Bias Offset 5256 5255 Store 5252(tvar78) 5257 5259: 4964 Load 4966(tvar23) 5260: 84(fvec2) Load 4975(tvar37) 5261: 30(int) Load 4948(tvar33) 5262: 48(float) Load 4946(tvar32) 5263: 145(ivec4) ImageSampleProjImplicitLod 5259 5260 Bias Offset 5262 5261 Store 5258(tvar79) 5263 5265: 4942 Load 4944(tvar22) 5267: 88(fvec4) Load 5266(tvar81) 5268: 30(int) Load 4948(tvar33) 5269: 48(float) Load 4946(tvar32) 5270: 48(float) CompositeExtract 5267 3 5271: 88(fvec4) CompositeInsert 5270 5267 1 5272: 88(fvec4) ImageSampleProjImplicitLod 5265 5271 Bias Offset 5269 5268 Store 5264(tvar80) 5272 5274: 4954 Load 4956(tvar24) 5275: 88(fvec4) Load 5266(tvar81) 5276: 30(int) Load 4948(tvar33) 5277: 48(float) Load 4946(tvar32) 5278: 48(float) CompositeExtract 5275 3 5279: 88(fvec4) CompositeInsert 5278 5275 1 5280: 204(ivec4) ImageSampleProjImplicitLod 5274 5279 Bias Offset 5277 5276 Store 5273(tvar82) 5280 5282: 4964 Load 4966(tvar23) 5283: 88(fvec4) Load 5266(tvar81) 5284: 30(int) Load 4948(tvar33) 5285: 48(float) Load 4946(tvar32) 5286: 48(float) CompositeExtract 5283 3 5287: 88(fvec4) CompositeInsert 5286 5283 1 5288: 145(ivec4) ImageSampleProjImplicitLod 5282 5287 Bias Offset 5285 5284 Store 5281(tvar83) 5288 5290: 75 Load 4973(tvar11) 5291: 137(fvec3) Load 5002(tvar42) 5292: 176(ivec2) Load 4978(tvar38) 5293: 48(float) Load 4946(tvar32) 5294: 88(fvec4) ImageSampleProjImplicitLod 5290 5291 Bias Offset 5293 5292 Store 5289(tvar84) 5294 5296: 659 Load 4983(tvar12) 5297: 137(fvec3) Load 5002(tvar42) 5298: 176(ivec2) Load 4978(tvar38) 5299: 48(float) Load 4946(tvar32) 5300: 204(ivec4) ImageSampleProjImplicitLod 5296 5297 Bias Offset 5299 5298 Store 5295(tvar85) 5300 5302: 651 Load 4990(tvar10) 5303: 137(fvec3) Load 5002(tvar42) 5304: 176(ivec2) Load 4978(tvar38) 5305: 48(float) Load 4946(tvar32) 5306: 145(ivec4) ImageSampleProjImplicitLod 5302 5303 Bias Offset 5305 5304 Store 5301(tvar86) 5306 5308: 75 Load 4973(tvar11) 5309: 88(fvec4) Load 5266(tvar81) 5310: 176(ivec2) Load 4978(tvar38) 5311: 48(float) Load 4946(tvar32) 5312: 48(float) CompositeExtract 5309 3 5313: 88(fvec4) CompositeInsert 5312 5309 2 5314: 88(fvec4) ImageSampleProjImplicitLod 5308 5313 Bias Offset 5311 5310 Store 5307(tvar87) 5314 5316: 659 Load 4983(tvar12) 5317: 88(fvec4) Load 5266(tvar81) 5318: 176(ivec2) Load 4978(tvar38) 5319: 48(float) Load 4946(tvar32) 5320: 48(float) CompositeExtract 5317 3 5321: 88(fvec4) CompositeInsert 5320 5317 2 5322: 204(ivec4) ImageSampleProjImplicitLod 5316 5321 Bias Offset 5319 5318 Store 5315(tvar88) 5322 5324: 651 Load 4990(tvar10) 5325: 88(fvec4) Load 5266(tvar81) 5326: 176(ivec2) Load 4978(tvar38) 5327: 48(float) Load 4946(tvar32) 5328: 48(float) CompositeExtract 5325 3 5329: 88(fvec4) CompositeInsert 5328 5325 2 5330: 145(ivec4) ImageSampleProjImplicitLod 5324 5329 Bias Offset 5327 5326 Store 5323(tvar89) 5330 5332: 4998 Load 5000(tvar20) 5333: 88(fvec4) Load 5266(tvar81) 5334: 191(ivec3) Load 5005(tvar43) 5335: 48(float) Load 4946(tvar32) 5336: 88(fvec4) ImageSampleProjImplicitLod 5332 5333 Bias Offset 5335 5334 Store 5331(tvar90) 5336 5338: 5011 Load 5013(tvar21) 5339: 88(fvec4) Load 5266(tvar81) 5340: 191(ivec3) Load 5005(tvar43) 5341: 48(float) Load 4946(tvar32) 5342: 204(ivec4) ImageSampleProjImplicitLod 5338 5339 Bias Offset 5341 5340 Store 5337(tvar91) 5342 5344: 5021 Load 5023(tvar19) 5345: 88(fvec4) Load 5266(tvar81) 5346: 191(ivec3) Load 5005(tvar43) 5347: 48(float) Load 4946(tvar32) 5348: 145(ivec4) ImageSampleProjImplicitLod 5344 5345 Bias Offset 5347 5346 Store 5343(tvar92) 5348 5350: 691 Load 5030(tvar14) 5351: 137(fvec3) Load 5002(tvar42) 5352: 176(ivec2) Load 4978(tvar38) 5353: 88(fvec4) ImageSampleProjImplicitLod 5350 5351 Offset 5352 Store 5349(tvar93) 5353 5355: 707 Load 5036(tvar13) 5356: 137(fvec3) Load 5002(tvar42) 5357: 176(ivec2) Load 4978(tvar38) 5358: 204(ivec4) ImageSampleProjImplicitLod 5355 5356 Offset 5357 Store 5354(tvar94) 5358 5360: 699 Load 5042(tvar15) 5361: 137(fvec3) Load 5002(tvar42) 5362: 176(ivec2) Load 4978(tvar38) 5363: 145(ivec4) ImageSampleProjImplicitLod 5360 5361 Offset 5362 Store 5359(tvar95) 5363 5365: 691 Load 5030(tvar14) 5366: 88(fvec4) Load 5266(tvar81) 5367: 176(ivec2) Load 4978(tvar38) 5368: 48(float) CompositeExtract 5366 3 5369: 88(fvec4) CompositeInsert 5368 5366 2 5370: 88(fvec4) ImageSampleProjImplicitLod 5365 5369 Offset 5367 Store 5364(tvar96) 5370 5372: 707 Load 5036(tvar13) 5373: 88(fvec4) Load 5266(tvar81) 5374: 176(ivec2) Load 4978(tvar38) 5375: 48(float) CompositeExtract 5373 3 5376: 88(fvec4) CompositeInsert 5375 5373 2 5377: 204(ivec4) ImageSampleProjImplicitLod 5372 5376 Offset 5374 Store 5371(tvar97) 5377 5379: 699 Load 5042(tvar15) 5380: 88(fvec4) Load 5266(tvar81) 5381: 176(ivec2) Load 4978(tvar38) 5382: 48(float) CompositeExtract 5380 3 5383: 88(fvec4) CompositeInsert 5382 5380 2 5384: 145(ivec4) ImageSampleProjImplicitLod 5379 5383 Offset 5381 Store 5378(tvar98) 5384 5386: 733 Load 5048(tvar0) 5387: 88(fvec4) Load 5266(tvar81) 5388: 176(ivec2) Load 4978(tvar38) 5389: 48(float) CompositeExtract 5387 2 5390: 48(float) CompositeExtract 5387 3 5391: 88(fvec4) CompositeInsert 5390 5387 2 5392: 48(float) ImageSampleProjDrefImplicitLod 5386 5391 5389 Offset 5388 Store 5385(tvar99) 5392 5394: 5056 Load 5058(tvar3) 5395: 88(fvec4) Load 5266(tvar81) 5396: 30(int) Load 4948(tvar33) 5397: 48(float) Load 4946(tvar32) 5398: 48(float) CompositeExtract 5395 2 5399: 48(float) CompositeExtract 5395 3 5400: 88(fvec4) CompositeInsert 5399 5395 1 5401: 48(float) ImageSampleProjDrefImplicitLod 5394 5400 5398 Bias Offset 5397 5396 Store 5393(tvar100) 5401 5403: 715 Load 5066(tvar4) 5404: 88(fvec4) Load 5266(tvar81) 5405: 176(ivec2) Load 4978(tvar38) 5406: 48(float) Load 4946(tvar32) 5407: 48(float) CompositeExtract 5404 2 5408: 48(float) CompositeExtract 5404 3 5409: 88(fvec4) CompositeInsert 5408 5404 2 5410: 48(float) ImageSampleProjDrefImplicitLod 5403 5409 5407 Bias Offset 5406 5405 Store 5402(tvar101) 5410 5412: 4942 Load 4944(tvar22) 5413: 48(float) Load 4946(tvar32) 5414: 30(int) Load 4948(tvar33) 5415: 88(fvec4) ImageSampleExplicitLod 5412 5413 Lod Offset 5413 5414 Store 5411(tvar102) 5415 5417: 4954 Load 4956(tvar24) 5418: 48(float) Load 4946(tvar32) 5419: 30(int) Load 4948(tvar33) 5420: 204(ivec4) ImageSampleExplicitLod 5417 5418 Lod Offset 5418 5419 Store 5416(tvar103) 5420 5422: 4964 Load 4966(tvar23) 5423: 48(float) Load 4946(tvar32) 5424: 30(int) Load 4948(tvar33) 5425: 145(ivec4) ImageSampleExplicitLod 5422 5423 Lod Offset 5423 5424 Store 5421(tvar104) 5425 5427: 75 Load 4973(tvar11) 5428: 84(fvec2) Load 4975(tvar37) 5429: 48(float) Load 4946(tvar32) 5430: 176(ivec2) Load 4978(tvar38) 5431: 88(fvec4) ImageSampleExplicitLod 5427 5428 Lod Offset 5429 5430 Store 5426(tvar105) 5431 5433: 659 Load 4983(tvar12) 5434: 84(fvec2) Load 4975(tvar37) 5435: 48(float) Load 4946(tvar32) 5436: 176(ivec2) Load 4978(tvar38) 5437: 204(ivec4) ImageSampleExplicitLod 5433 5434 Lod Offset 5435 5436 Store 5432(tvar106) 5437 5439: 651 Load 4990(tvar10) 5440: 84(fvec2) Load 4975(tvar37) 5441: 48(float) Load 4946(tvar32) 5442: 176(ivec2) Load 4978(tvar38) 5443: 145(ivec4) ImageSampleExplicitLod 5439 5440 Lod Offset 5441 5442 Store 5438(tvar107) 5443 5445: 4998 Load 5000(tvar20) 5446: 137(fvec3) Load 5002(tvar42) 5447: 48(float) Load 4946(tvar32) 5448: 191(ivec3) Load 5005(tvar43) 5449: 88(fvec4) ImageSampleExplicitLod 5445 5446 Lod Offset 5447 5448 Store 5444(tvar108) 5449 5451: 5011 Load 5013(tvar21) 5452: 137(fvec3) Load 5002(tvar42) 5453: 48(float) Load 4946(tvar32) 5454: 191(ivec3) Load 5005(tvar43) 5455: 204(ivec4) ImageSampleExplicitLod 5451 5452 Lod Offset 5453 5454 Store 5450(tvar109) 5455 5457: 5021 Load 5023(tvar19) 5458: 137(fvec3) Load 5002(tvar42) 5459: 48(float) Load 4946(tvar32) 5460: 191(ivec3) Load 5005(tvar43) 5461: 145(ivec4) ImageSampleExplicitLod 5457 5458 Lod Offset 5459 5460 Store 5456(tvar110) 5461 5463: 5056 Load 5058(tvar3) 5464: 137(fvec3) Load 5002(tvar42) 5465: 48(float) Load 4946(tvar32) 5466: 30(int) Load 4948(tvar33) 5467: 48(float) CompositeExtract 5464 2 5468: 48(float) ImageSampleDrefExplicitLod 5463 5464 5467 Lod Offset 5465 5466 Store 5462(tvar111) 5468 5470: 715 Load 5066(tvar4) 5471: 137(fvec3) Load 5002(tvar42) 5472: 48(float) Load 4946(tvar32) 5473: 176(ivec2) Load 4978(tvar38) 5474: 48(float) CompositeExtract 5471 2 5475: 48(float) ImageSampleDrefExplicitLod 5470 5471 5474 Lod Offset 5472 5473 Store 5469(tvar112) 5475 5477: 5075 Load 5077(tvar30) 5478: 84(fvec2) Load 4975(tvar37) 5479: 48(float) Load 4946(tvar32) 5480: 30(int) Load 4948(tvar33) 5481: 88(fvec4) ImageSampleExplicitLod 5477 5478 Lod Offset 5479 5480 Store 5476(tvar113) 5481 5483: 5085 Load 5087(tvar28) 5484: 84(fvec2) Load 4975(tvar37) 5485: 48(float) Load 4946(tvar32) 5486: 30(int) Load 4948(tvar33) 5487: 204(ivec4) ImageSampleExplicitLod 5483 5484 Lod Offset 5485 5486 Store 5482(tvar114) 5487 5489: 5095 Load 5097(tvar29) 5490: 84(fvec2) Load 4975(tvar37) 5491: 48(float) Load 4946(tvar32) 5492: 30(int) Load 4948(tvar33) 5493: 145(ivec4) ImageSampleExplicitLod 5489 5490 Lod Offset 5491 5492 Store 5488(tvar115) 5493 5495: 667 Load 5104(tvar9) 5496: 137(fvec3) Load 5002(tvar42) 5497: 48(float) Load 4946(tvar32) 5498: 176(ivec2) Load 4978(tvar38) 5499: 88(fvec4) ImageSampleExplicitLod 5495 5496 Lod Offset 5497 5498 Store 5494(tvar116) 5499 5501: 683 Load 5111(tvar7) 5502: 137(fvec3) Load 5002(tvar42) 5503: 48(float) Load 4946(tvar32) 5504: 176(ivec2) Load 4978(tvar38) 5505: 204(ivec4) ImageSampleExplicitLod 5501 5502 Lod Offset 5503 5504 Store 5500(tvar117) 5505 5507: 675 Load 5118(tvar8) 5508: 137(fvec3) Load 5002(tvar42) 5509: 48(float) Load 4946(tvar32) 5510: 176(ivec2) Load 4978(tvar38) 5511: 145(ivec4) ImageSampleExplicitLod 5507 5508 Lod Offset 5509 5510 Store 5506(tvar118) 5511 5513: 5126 Load 5128(tvar2) 5514: 137(fvec3) Load 5002(tvar42) 5515: 48(float) Load 4946(tvar32) 5516: 30(int) Load 4948(tvar33) 5517: 48(float) CompositeExtract 5514 2 5518: 48(float) ImageSampleDrefExplicitLod 5513 5514 5517 Lod Offset 5515 5516 Store 5512(tvar119) 5518 5520: 4942 Load 4944(tvar22) 5521: 84(fvec2) Load 4975(tvar37) 5522: 48(float) Load 4946(tvar32) 5523: 30(int) Load 4948(tvar33) 5524: 88(fvec4) ImageSampleProjExplicitLod 5520 5521 Lod Offset 5522 5523 Store 5519(tvar120) 5524 5526: 4954 Load 4956(tvar24) 5527: 84(fvec2) Load 4975(tvar37) 5528: 48(float) Load 4946(tvar32) 5529: 30(int) Load 4948(tvar33) 5530: 204(ivec4) ImageSampleProjExplicitLod 5526 5527 Lod Offset 5528 5529 Store 5525(tvar121) 5530 5532: 4964 Load 4966(tvar23) 5533: 84(fvec2) Load 4975(tvar37) 5534: 48(float) Load 4946(tvar32) 5535: 30(int) Load 4948(tvar33) 5536: 145(ivec4) ImageSampleProjExplicitLod 5532 5533 Lod Offset 5534 5535 Store 5531(tvar122) 5536 5538: 4942 Load 4944(tvar22) 5539: 88(fvec4) Load 5266(tvar81) 5540: 48(float) Load 4946(tvar32) 5541: 30(int) Load 4948(tvar33) 5542: 48(float) CompositeExtract 5539 3 5543: 88(fvec4) CompositeInsert 5542 5539 1 5544: 88(fvec4) ImageSampleProjExplicitLod 5538 5543 Lod Offset 5540 5541 Store 5537(tvar123) 5544 5546: 4954 Load 4956(tvar24) 5547: 88(fvec4) Load 5266(tvar81) 5548: 48(float) Load 4946(tvar32) 5549: 30(int) Load 4948(tvar33) 5550: 48(float) CompositeExtract 5547 3 5551: 88(fvec4) CompositeInsert 5550 5547 1 5552: 204(ivec4) ImageSampleProjExplicitLod 5546 5551 Lod Offset 5548 5549 Store 5545(tvar124) 5552 5554: 4964 Load 4966(tvar23) 5555: 88(fvec4) Load 5266(tvar81) 5556: 48(float) Load 4946(tvar32) 5557: 30(int) Load 4948(tvar33) 5558: 48(float) CompositeExtract 5555 3 5559: 88(fvec4) CompositeInsert 5558 5555 1 5560: 145(ivec4) ImageSampleProjExplicitLod 5554 5559 Lod Offset 5556 5557 Store 5553(tvar125) 5560 5562: 75 Load 4973(tvar11) 5563: 137(fvec3) Load 5002(tvar42) 5564: 48(float) Load 4946(tvar32) 5565: 176(ivec2) Load 4978(tvar38) 5566: 88(fvec4) ImageSampleProjExplicitLod 5562 5563 Lod Offset 5564 5565 Store 5561(tvar126) 5566 5568: 659 Load 4983(tvar12) 5569: 137(fvec3) Load 5002(tvar42) 5570: 48(float) Load 4946(tvar32) 5571: 176(ivec2) Load 4978(tvar38) 5572: 204(ivec4) ImageSampleProjExplicitLod 5568 5569 Lod Offset 5570 5571 Store 5567(tvar127) 5572 5574: 651 Load 4990(tvar10) 5575: 137(fvec3) Load 5002(tvar42) 5576: 48(float) Load 4946(tvar32) 5577: 176(ivec2) Load 4978(tvar38) 5578: 145(ivec4) ImageSampleProjExplicitLod 5574 5575 Lod Offset 5576 5577 Store 5573(tvar128) 5578 5580: 75 Load 4973(tvar11) 5581: 88(fvec4) Load 5266(tvar81) 5582: 48(float) Load 4946(tvar32) 5583: 176(ivec2) Load 4978(tvar38) 5584: 48(float) CompositeExtract 5581 3 5585: 88(fvec4) CompositeInsert 5584 5581 2 5586: 88(fvec4) ImageSampleProjExplicitLod 5580 5585 Lod Offset 5582 5583 Store 5579(tvar129) 5586 5588: 659 Load 4983(tvar12) 5589: 88(fvec4) Load 5266(tvar81) 5590: 48(float) Load 4946(tvar32) 5591: 176(ivec2) Load 4978(tvar38) 5592: 48(float) CompositeExtract 5589 3 5593: 88(fvec4) CompositeInsert 5592 5589 2 5594: 204(ivec4) ImageSampleProjExplicitLod 5588 5593 Lod Offset 5590 5591 Store 5587(tvar130) 5594 5596: 651 Load 4990(tvar10) 5597: 88(fvec4) Load 5266(tvar81) 5598: 48(float) Load 4946(tvar32) 5599: 176(ivec2) Load 4978(tvar38) 5600: 48(float) CompositeExtract 5597 3 5601: 88(fvec4) CompositeInsert 5600 5597 2 5602: 145(ivec4) ImageSampleProjExplicitLod 5596 5601 Lod Offset 5598 5599 Store 5595(tvar131) 5602 5604: 4998 Load 5000(tvar20) 5605: 88(fvec4) Load 5266(tvar81) 5606: 48(float) Load 4946(tvar32) 5607: 191(ivec3) Load 5005(tvar43) 5608: 88(fvec4) ImageSampleProjExplicitLod 5604 5605 Lod Offset 5606 5607 Store 5603(tvar132) 5608 5610: 5011 Load 5013(tvar21) 5611: 88(fvec4) Load 5266(tvar81) 5612: 48(float) Load 4946(tvar32) 5613: 191(ivec3) Load 5005(tvar43) 5614: 204(ivec4) ImageSampleProjExplicitLod 5610 5611 Lod Offset 5612 5613 Store 5609(tvar133) 5614 5616: 5021 Load 5023(tvar19) 5617: 88(fvec4) Load 5266(tvar81) 5618: 48(float) Load 4946(tvar32) 5619: 191(ivec3) Load 5005(tvar43) 5620: 145(ivec4) ImageSampleProjExplicitLod 5616 5617 Lod Offset 5618 5619 Store 5615(tvar134) 5620 5622: 5056 Load 5058(tvar3) 5623: 88(fvec4) Load 5266(tvar81) 5624: 48(float) Load 4946(tvar32) 5625: 30(int) Load 4948(tvar33) 5626: 48(float) CompositeExtract 5623 2 5627: 48(float) CompositeExtract 5623 3 5628: 88(fvec4) CompositeInsert 5627 5623 1 5629: 48(float) ImageSampleProjDrefExplicitLod 5622 5628 5626 Lod Offset 5624 5625 Store 5621(tvar135) 5629 5631: 715 Load 5066(tvar4) 5632: 88(fvec4) Load 5266(tvar81) 5633: 48(float) Load 4946(tvar32) 5634: 176(ivec2) Load 4978(tvar38) 5635: 48(float) CompositeExtract 5632 2 5636: 48(float) CompositeExtract 5632 3 5637: 88(fvec4) CompositeInsert 5636 5632 2 5638: 48(float) ImageSampleProjDrefExplicitLod 5631 5637 5635 Lod Offset 5633 5634 Store 5630(tvar136) 5638 Return FunctionEnd 6(testIndexing(): 2 Function None 3 7: Label 72(i): 31(ptr) Variable Function Store 72(i) 73 80: 30(int) Load 72(i) 82: 81(ptr) AccessChain 79(tex) 80 83: 75 Load 82 87: 84(fvec2) Load 86(coord) 89: 88(fvec4) ImageSampleImplicitLod 83 87 95: 30(int) Load 72(i) Return FunctionEnd 8(testImplictConversion(): 2 Function None 3 9: Label 96(var0): 37(ptr) Variable Function 98(var1): 25(ptr) Variable Function 100(var2): 43(ptr) Variable Function 102(var3): 49(ptr) Variable Function 104(var4): 55(ptr) Variable Function 108(var5): 107(ptr) Variable Function 112(var6): 111(ptr) Variable Function 116(var7): 115(ptr) Variable Function 119(var8): 118(ptr) Variable Function 123(var9): 122(ptr) Variable Function 127(var10): 126(ptr) Variable Function 131(var11): 130(ptr) Variable Function 135(var12): 134(ptr) Variable Function 139(var13): 138(ptr) Variable Function 143(var14): 142(ptr) Variable Function 147(var15): 146(ptr) Variable Function 151(var16): 150(ptr) Variable Function 155(var17): 154(ptr) Variable Function 158(var18): 157(ptr) Variable Function 162(var19): 161(ptr) Variable Function 164(var20): 31(ptr) Variable Function 165(var21): 25(ptr) Variable Function 166(var22): 37(ptr) Variable Function 167(var23): 43(ptr) Variable Function 168(var24): 49(ptr) Variable Function 169(var25): 55(ptr) Variable Function 170(var26): 31(ptr) Variable Function 171(var27): 25(ptr) Variable Function 172(var28): 37(ptr) Variable Function 173(var29): 43(ptr) Variable Function 174(var30): 49(ptr) Variable Function 175(var31): 55(ptr) Variable Function 178(var32): 177(ptr) Variable Function 180(var33): 111(ptr) Variable Function 181(var34): 107(ptr) Variable Function 182(var35): 115(ptr) Variable Function 183(var36): 118(ptr) Variable Function 184(var37): 122(ptr) Variable Function 185(var38): 177(ptr) Variable Function 186(var39): 111(ptr) Variable Function 187(var40): 107(ptr) Variable Function 188(var41): 115(ptr) Variable Function 189(var42): 118(ptr) Variable Function 190(var43): 122(ptr) Variable Function 193(var44): 192(ptr) Variable Function 195(var45): 130(ptr) Variable Function 196(var46): 126(ptr) Variable Function 197(var47): 134(ptr) Variable Function 198(var48): 138(ptr) Variable Function 199(var49): 142(ptr) Variable Function 200(var50): 126(ptr) Variable Function 201(var51): 134(ptr) Variable Function 202(var52): 138(ptr) Variable Function 203(var53): 142(ptr) Variable Function 206(var54): 205(ptr) Variable Function 208(var55): 150(ptr) Variable Function 209(var56): 146(ptr) Variable Function 210(var57): 154(ptr) Variable Function 211(var58): 157(ptr) Variable Function 212(var59): 161(ptr) Variable Function 213(var60): 146(ptr) Variable Function 214(var61): 154(ptr) Variable Function 215(var62): 157(ptr) Variable Function 216(var63): 161(ptr) Variable Function 217(var64): 43(ptr) Variable Function 218(var65): 55(ptr) Variable Function 219(var66): 115(ptr) Variable Function 220(var67): 122(ptr) Variable Function 221(var68): 134(ptr) Variable Function 222(var69): 142(ptr) Variable Function 223(var70): 154(ptr) Variable Function 224(var71): 161(ptr) Variable Function 225(var72): 43(ptr) Variable Function 226(var73): 49(ptr) Variable Function 227(var74): 55(ptr) Variable Function 228(var75): 115(ptr) Variable Function 229(var76): 118(ptr) Variable Function 230(var77): 122(ptr) Variable Function 231(var78): 134(ptr) Variable Function 232(var79): 138(ptr) Variable Function 233(var80): 142(ptr) Variable Function 234(var81): 154(ptr) Variable Function 235(var82): 157(ptr) Variable Function 236(var83): 161(ptr) Variable Function 237(var84): 37(ptr) Variable Function 238(var85): 43(ptr) Variable Function 239(var86): 49(ptr) Variable Function 240(var87): 55(ptr) Variable Function 241(var88): 37(ptr) Variable Function 242(var89): 43(ptr) Variable Function 243(var90): 49(ptr) Variable Function 244(var91): 55(ptr) Variable Function 245(var92): 107(ptr) Variable Function 246(var93): 115(ptr) Variable Function 247(var94): 118(ptr) Variable Function 248(var95): 122(ptr) Variable Function 249(var96): 107(ptr) Variable Function 250(var97): 115(ptr) Variable Function 251(var98): 118(ptr) Variable Function 252(var99): 122(ptr) Variable Function 253(var100): 126(ptr) Variable Function 254(var101): 134(ptr) Variable Function 255(var102): 138(ptr) Variable Function 256(var103): 142(ptr) Variable Function 257(var104): 146(ptr) Variable Function 258(var105): 154(ptr) Variable Function 259(var106): 157(ptr) Variable Function 260(var107): 161(ptr) Variable Function 261(var108): 55(ptr) Variable Function 262(var109): 122(ptr) Variable Function 263(var110): 142(ptr) Variable Function 264(var111): 161(ptr) Variable Function 265(var112): 55(ptr) Variable Function 266(var113): 122(ptr) Variable Function 267(var114): 142(ptr) Variable Function 268(var115): 161(ptr) Variable Function 269(var116): 49(ptr) Variable Function 270(var117): 55(ptr) Variable Function 271(var118): 118(ptr) Variable Function 272(var119): 122(ptr) Variable Function 273(var120): 138(ptr) Variable Function 274(var121): 142(ptr) Variable Function 275(var122): 157(ptr) Variable Function 276(var123): 161(ptr) Variable Function Store 96(var0) 97 Store 98(var1) 99 Store 100(var2) 101 Store 102(var3) 103 Store 104(var4) 105 Store 108(var5) 109 Store 112(var6) 113 Store 116(var7) 117 Store 119(var8) 120 Store 123(var9) 124 Store 127(var10) 128 Store 131(var11) 132 Store 135(var12) 136 Store 139(var13) 140 Store 143(var14) 144 Store 147(var15) 148 Store 151(var16) 152 Store 155(var17) 156 Store 158(var18) 159 Store 162(var19) 163 Store 164(var20) 73 Store 165(var21) 99 Store 166(var22) 97 Store 167(var23) 101 Store 168(var24) 103 Store 169(var25) 105 Store 170(var26) 73 Store 171(var27) 99 Store 172(var28) 97 Store 173(var29) 101 Store 174(var30) 103 Store 175(var31) 105 Store 178(var32) 179 Store 180(var33) 113 Store 181(var34) 109 Store 182(var35) 117 Store 183(var36) 120 Store 184(var37) 124 Store 185(var38) 179 Store 186(var39) 113 Store 187(var40) 109 Store 188(var41) 117 Store 189(var42) 120 Store 190(var43) 124 Store 193(var44) 194 Store 195(var45) 132 Store 196(var46) 128 Store 197(var47) 136 Store 198(var48) 140 Store 199(var49) 144 Store 200(var50) 128 Store 201(var51) 136 Store 202(var52) 140 Store 203(var53) 144 Store 206(var54) 207 Store 208(var55) 152 Store 209(var56) 148 Store 210(var57) 156 Store 211(var58) 159 Store 212(var59) 163 Store 213(var60) 148 Store 214(var61) 156 Store 215(var62) 159 Store 216(var63) 163 Store 217(var64) 101 Store 218(var65) 105 Store 219(var66) 117 Store 220(var67) 124 Store 221(var68) 136 Store 222(var69) 144 Store 223(var70) 156 Store 224(var71) 163 Store 225(var72) 101 Store 226(var73) 103 Store 227(var74) 105 Store 228(var75) 117 Store 229(var76) 120 Store 230(var77) 124 Store 231(var78) 136 Store 232(var79) 140 Store 233(var80) 144 Store 234(var81) 156 Store 235(var82) 159 Store 236(var83) 163 Store 237(var84) 97 Store 238(var85) 101 Store 239(var86) 103 Store 240(var87) 105 Store 241(var88) 97 Store 242(var89) 101 Store 243(var90) 103 Store 244(var91) 105 Store 245(var92) 109 Store 246(var93) 117 Store 247(var94) 120 Store 248(var95) 124 Store 249(var96) 109 Store 250(var97) 117 Store 251(var98) 120 Store 252(var99) 124 Store 253(var100) 128 Store 254(var101) 136 Store 255(var102) 140 Store 256(var103) 144 Store 257(var104) 148 Store 258(var105) 156 Store 259(var106) 159 Store 260(var107) 163 Store 261(var108) 105 Store 262(var109) 124 Store 263(var110) 144 Store 264(var111) 163 Store 265(var112) 105 Store 266(var113) 124 Store 267(var114) 144 Store 268(var115) 163 Store 269(var116) 103 Store 270(var117) 105 Store 271(var118) 120 Store 272(var119) 124 Store 273(var120) 140 Store 274(var121) 144 Store 275(var122) 159 Store 276(var123) 163 Return FunctionEnd 10(testbuiltinARB(): 2 Function None 3 11: Label 277(var0): 49(ptr) Variable Function 282(var1): 118(ptr) Variable Function 287(var2): 138(ptr) Variable Function 292(var3): 157(ptr) Variable Function 298(var4): 31(ptr) Variable Function 304(var5): 177(ptr) Variable Function 310(var6): 192(ptr) Variable Function 316(var7): 205(ptr) Variable Function 349(var8): 37(ptr) Variable Function 354(var9): 107(ptr) Variable Function 359(var10): 126(ptr) Variable Function 364(var11): 146(ptr) Variable Function 278: 48(float) Load 277(var0) 279: 48(float) Load 277(var0) 280: 48(float) Load 277(var0) 281: 48(float) ExtInst 1(GLSL.std.450) 50(Fma) 278 279 280 Store 277(var0) 281 283: 84(fvec2) Load 282(var1) 284: 84(fvec2) Load 282(var1) 285: 84(fvec2) Load 282(var1) 286: 84(fvec2) ExtInst 1(GLSL.std.450) 50(Fma) 283 284 285 Store 282(var1) 286 288: 137(fvec3) Load 287(var2) 289: 137(fvec3) Load 287(var2) 290: 137(fvec3) Load 287(var2) 291: 137(fvec3) ExtInst 1(GLSL.std.450) 50(Fma) 288 289 290 Store 287(var2) 291 293: 88(fvec4) Load 292(var3) 294: 88(fvec4) Load 292(var3) 295: 88(fvec4) Load 292(var3) 296: 88(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 293 294 295 Store 292(var3) 296 297: 48(float) Load 277(var0) 300:299(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 297 301: 30(int) CompositeExtract 300 1 Store 298(var4) 301 302: 48(float) CompositeExtract 300 0 Store 277(var0) 302 303: 84(fvec2) Load 282(var1) 306:305(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 303 307: 176(ivec2) CompositeExtract 306 1 Store 304(var5) 307 308: 84(fvec2) CompositeExtract 306 0 Store 282(var1) 308 309: 137(fvec3) Load 287(var2) 312:311(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 309 313: 191(ivec3) CompositeExtract 312 1 Store 310(var6) 313 314: 137(fvec3) CompositeExtract 312 0 Store 287(var2) 314 315: 88(fvec4) Load 292(var3) 318:317(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 315 319: 204(ivec4) CompositeExtract 318 1 Store 316(var7) 319 320: 88(fvec4) CompositeExtract 318 0 Store 292(var3) 320 321: 48(float) Load 277(var0) 322: 30(int) Load 298(var4) 323: 48(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 321 322 Store 277(var0) 323 324: 84(fvec2) Load 282(var1) 325: 176(ivec2) Load 304(var5) 326: 84(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 324 325 Store 282(var1) 326 327: 137(fvec3) Load 287(var2) 328: 191(ivec3) Load 310(var6) 329: 137(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 327 328 Store 287(var2) 329 330: 88(fvec4) Load 292(var3) 331: 204(ivec4) Load 316(var7) 332: 88(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 330 331 Store 292(var3) 332 333: 30(int) Load 298(var4) 334: 30(int) Load 298(var4) 335: 30(int) Load 298(var4) 336: 30(int) BitFieldSExtract 333 334 335 Store 298(var4) 336 337: 176(ivec2) Load 304(var5) 338: 30(int) Load 298(var4) 339: 30(int) Load 298(var4) 340: 176(ivec2) BitFieldSExtract 337 338 339 Store 304(var5) 340 341: 191(ivec3) Load 310(var6) 342: 30(int) Load 298(var4) 343: 30(int) Load 298(var4) 344: 191(ivec3) BitFieldSExtract 341 342 343 Store 310(var6) 344 345: 204(ivec4) Load 316(var7) 346: 30(int) Load 298(var4) 347: 30(int) Load 298(var4) 348: 204(ivec4) BitFieldSExtract 345 346 347 Store 316(var7) 348 350: 36(int) Load 349(var8) 351: 30(int) Load 298(var4) 352: 30(int) Load 298(var4) 353: 36(int) BitFieldUExtract 350 351 352 Store 349(var8) 353 355: 106(ivec2) Load 354(var9) 356: 30(int) Load 298(var4) 357: 30(int) Load 298(var4) 358: 106(ivec2) BitFieldUExtract 355 356 357 Store 354(var9) 358 360: 125(ivec3) Load 359(var10) 361: 30(int) Load 298(var4) 362: 30(int) Load 298(var4) 363: 125(ivec3) BitFieldUExtract 360 361 362 Store 359(var10) 363 365: 145(ivec4) Load 364(var11) 366: 30(int) Load 298(var4) 367: 30(int) Load 298(var4) 368: 145(ivec4) BitFieldUExtract 365 366 367 Store 364(var11) 368 369: 30(int) Load 298(var4) 370: 30(int) Load 298(var4) 371: 30(int) Load 298(var4) 372: 30(int) Load 298(var4) 373: 30(int) BitFieldInsert 369 370 371 372 Store 298(var4) 373 374: 176(ivec2) Load 304(var5) 375: 176(ivec2) Load 304(var5) 376: 30(int) Load 298(var4) 377: 30(int) Load 298(var4) 378: 176(ivec2) BitFieldInsert 374 375 376 377 Store 304(var5) 378 379: 191(ivec3) Load 310(var6) 380: 191(ivec3) Load 310(var6) 381: 30(int) Load 298(var4) 382: 30(int) Load 298(var4) 383: 191(ivec3) BitFieldInsert 379 380 381 382 Store 310(var6) 383 384: 204(ivec4) Load 316(var7) 385: 204(ivec4) Load 316(var7) 386: 30(int) Load 298(var4) 387: 30(int) Load 298(var4) 388: 204(ivec4) BitFieldInsert 384 385 386 387 Store 316(var7) 388 389: 36(int) Load 349(var8) 390: 36(int) Load 349(var8) 391: 30(int) Load 298(var4) 392: 30(int) Load 298(var4) 393: 36(int) BitFieldInsert 389 390 391 392 Store 349(var8) 393 394: 106(ivec2) Load 354(var9) 395: 106(ivec2) Load 354(var9) 396: 30(int) Load 298(var4) 397: 30(int) Load 298(var4) 398: 106(ivec2) BitFieldInsert 394 395 396 397 Store 354(var9) 398 399: 125(ivec3) Load 359(var10) 400: 125(ivec3) Load 359(var10) 401: 30(int) Load 298(var4) 402: 30(int) Load 298(var4) 403: 125(ivec3) BitFieldInsert 399 400 401 402 Store 359(var10) 403 404: 145(ivec4) Load 364(var11) 405: 145(ivec4) Load 364(var11) 406: 30(int) Load 298(var4) 407: 30(int) Load 298(var4) 408: 145(ivec4) BitFieldInsert 404 405 406 407 Store 364(var11) 408 409: 30(int) Load 298(var4) 410: 30(int) BitReverse 409 Store 298(var4) 410 411: 176(ivec2) Load 304(var5) 412: 176(ivec2) BitReverse 411 Store 304(var5) 412 413: 191(ivec3) Load 310(var6) 414: 191(ivec3) BitReverse 413 Store 310(var6) 414 415: 204(ivec4) Load 316(var7) 416: 204(ivec4) BitReverse 415 Store 316(var7) 416 417: 36(int) Load 349(var8) 418: 36(int) BitReverse 417 Store 349(var8) 418 419: 106(ivec2) Load 354(var9) 420: 106(ivec2) BitReverse 419 Store 354(var9) 420 421: 125(ivec3) Load 359(var10) 422: 125(ivec3) BitReverse 421 Store 359(var10) 422 423: 145(ivec4) Load 364(var11) 424: 145(ivec4) BitReverse 423 Store 364(var11) 424 425: 30(int) Load 298(var4) 426: 30(int) BitCount 425 Store 298(var4) 426 427: 176(ivec2) Load 304(var5) 428: 176(ivec2) BitCount 427 Store 304(var5) 428 429: 191(ivec3) Load 310(var6) 430: 191(ivec3) BitCount 429 Store 310(var6) 430 431: 204(ivec4) Load 316(var7) 432: 204(ivec4) BitCount 431 Store 316(var7) 432 433: 36(int) Load 349(var8) 434: 30(int) BitCount 433 435: 36(int) Bitcast 434 Store 349(var8) 435 436: 106(ivec2) Load 354(var9) 437: 176(ivec2) BitCount 436 438: 106(ivec2) Bitcast 437 Store 354(var9) 438 439: 125(ivec3) Load 359(var10) 440: 191(ivec3) BitCount 439 441: 125(ivec3) Bitcast 440 Store 359(var10) 441 442: 145(ivec4) Load 364(var11) 443: 204(ivec4) BitCount 442 444: 145(ivec4) Bitcast 443 Store 364(var11) 444 445: 36(int) Load 349(var8) 446: 30(int) ExtInst 1(GLSL.std.450) 75(FindUMsb) 445 447: 36(int) Bitcast 446 Store 349(var8) 447 448: 106(ivec2) Load 354(var9) 449: 176(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 448 450: 106(ivec2) Bitcast 449 Store 354(var9) 450 451: 125(ivec3) Load 359(var10) 452: 191(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 451 453: 125(ivec3) Bitcast 452 Store 359(var10) 453 454: 145(ivec4) Load 364(var11) 455: 204(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 454 456: 145(ivec4) Bitcast 455 Store 364(var11) 456 457: 30(int) Load 298(var4) 458: 30(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 457 Store 298(var4) 458 459: 176(ivec2) Load 304(var5) 460: 176(ivec2) ExtInst 1(GLSL.std.450) 74(FindSMsb) 459 Store 304(var5) 460 461: 191(ivec3) Load 310(var6) 462: 191(ivec3) ExtInst 1(GLSL.std.450) 74(FindSMsb) 461 Store 310(var6) 462 463: 204(ivec4) Load 316(var7) 464: 204(ivec4) ExtInst 1(GLSL.std.450) 74(FindSMsb) 463 Store 316(var7) 464 465: 30(int) Load 298(var4) 466: 30(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 465 Store 298(var4) 466 467: 176(ivec2) Load 304(var5) 468: 176(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 467 Store 304(var5) 468 469: 191(ivec3) Load 310(var6) 470: 191(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 469 Store 310(var6) 470 471: 204(ivec4) Load 316(var7) 472: 204(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 471 Store 316(var7) 472 473: 36(int) Load 349(var8) 474: 30(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 473 475: 36(int) Bitcast 474 Store 349(var8) 475 476: 106(ivec2) Load 354(var9) 477: 176(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 476 478: 106(ivec2) Bitcast 477 Store 354(var9) 478 479: 125(ivec3) Load 359(var10) 480: 191(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 479 481: 125(ivec3) Bitcast 480 Store 359(var10) 481 482: 145(ivec4) Load 364(var11) 483: 204(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 482 484: 145(ivec4) Bitcast 483 Store 364(var11) 484 485: 48(float) Load 277(var0) 486: 30(int) Bitcast 485 Store 298(var4) 486 487: 84(fvec2) Load 282(var1) 488: 176(ivec2) Bitcast 487 Store 304(var5) 488 489: 137(fvec3) Load 287(var2) 490: 191(ivec3) Bitcast 489 Store 310(var6) 490 491: 88(fvec4) Load 292(var3) 492: 204(ivec4) Bitcast 491 Store 316(var7) 492 493: 48(float) Load 277(var0) 494: 36(int) Bitcast 493 Store 349(var8) 494 495: 84(fvec2) Load 282(var1) 496: 106(ivec2) Bitcast 495 Store 354(var9) 496 497: 137(fvec3) Load 287(var2) 498: 125(ivec3) Bitcast 497 Store 359(var10) 498 499: 88(fvec4) Load 292(var3) 500: 145(ivec4) Bitcast 499 Store 364(var11) 500 501: 30(int) Load 298(var4) 502: 48(float) Bitcast 501 Store 277(var0) 502 503: 176(ivec2) Load 304(var5) 504: 84(fvec2) Bitcast 503 Store 282(var1) 504 505: 191(ivec3) Load 310(var6) 506: 137(fvec3) Bitcast 505 Store 287(var2) 506 507: 204(ivec4) Load 316(var7) 508: 88(fvec4) Bitcast 507 Store 292(var3) 508 509: 36(int) Load 349(var8) 510: 48(float) Bitcast 509 Store 277(var0) 510 511: 106(ivec2) Load 354(var9) 512: 84(fvec2) Bitcast 511 Store 282(var1) 512 513: 125(ivec3) Load 359(var10) 514: 137(fvec3) Bitcast 513 Store 287(var2) 514 515: 145(ivec4) Load 364(var11) 516: 88(fvec4) Bitcast 515 Store 292(var3) 516 517: 36(int) Load 349(var8) 518: 36(int) Load 349(var8) 520:519(ResType) IAddCarry 517 518 521: 36(int) CompositeExtract 520 1 Store 349(var8) 521 522: 36(int) CompositeExtract 520 0 Store 349(var8) 522 523: 106(ivec2) Load 354(var9) 524: 106(ivec2) Load 354(var9) 526:525(ResType) IAddCarry 523 524 527: 106(ivec2) CompositeExtract 526 1 Store 354(var9) 527 528: 106(ivec2) CompositeExtract 526 0 Store 354(var9) 528 529: 125(ivec3) Load 359(var10) 530: 125(ivec3) Load 359(var10) 532:531(ResType) IAddCarry 529 530 533: 125(ivec3) CompositeExtract 532 1 Store 359(var10) 533 534: 125(ivec3) CompositeExtract 532 0 Store 359(var10) 534 535: 145(ivec4) Load 364(var11) 536: 145(ivec4) Load 364(var11) 538:537(ResType) IAddCarry 535 536 539: 145(ivec4) CompositeExtract 538 1 Store 364(var11) 539 540: 145(ivec4) CompositeExtract 538 0 Store 364(var11) 540 541: 36(int) Load 349(var8) 542: 36(int) Load 349(var8) 543:519(ResType) ISubBorrow 541 542 544: 36(int) CompositeExtract 543 1 Store 349(var8) 544 545: 36(int) CompositeExtract 543 0 Store 349(var8) 545 546: 106(ivec2) Load 354(var9) 547: 106(ivec2) Load 354(var9) 548:525(ResType) ISubBorrow 546 547 549: 106(ivec2) CompositeExtract 548 1 Store 354(var9) 549 550: 106(ivec2) CompositeExtract 548 0 Store 354(var9) 550 551: 125(ivec3) Load 359(var10) 552: 125(ivec3) Load 359(var10) 553:531(ResType) ISubBorrow 551 552 554: 125(ivec3) CompositeExtract 553 1 Store 359(var10) 554 555: 125(ivec3) CompositeExtract 553 0 Store 359(var10) 555 556: 145(ivec4) Load 364(var11) 557: 145(ivec4) Load 364(var11) 558:537(ResType) ISubBorrow 556 557 559: 145(ivec4) CompositeExtract 558 1 Store 364(var11) 559 560: 145(ivec4) CompositeExtract 558 0 Store 364(var11) 560 561: 36(int) Load 349(var8) 562: 36(int) Load 349(var8) 563:519(ResType) UMulExtended 561 562 564: 36(int) CompositeExtract 563 0 Store 349(var8) 564 565: 36(int) CompositeExtract 563 1 Store 349(var8) 565 566: 106(ivec2) Load 354(var9) 567: 106(ivec2) Load 354(var9) 568:525(ResType) UMulExtended 566 567 569: 106(ivec2) CompositeExtract 568 0 Store 354(var9) 569 570: 106(ivec2) CompositeExtract 568 1 Store 354(var9) 570 571: 125(ivec3) Load 359(var10) 572: 125(ivec3) Load 359(var10) 573:531(ResType) UMulExtended 571 572 574: 125(ivec3) CompositeExtract 573 0 Store 359(var10) 574 575: 125(ivec3) CompositeExtract 573 1 Store 359(var10) 575 576: 145(ivec4) Load 364(var11) 577: 145(ivec4) Load 364(var11) 578:537(ResType) UMulExtended 576 577 579: 145(ivec4) CompositeExtract 578 0 Store 364(var11) 579 580: 145(ivec4) CompositeExtract 578 1 Store 364(var11) 580 581: 30(int) Load 298(var4) 582: 30(int) Load 298(var4) 584:583(ResType) SMulExtended 581 582 585: 30(int) CompositeExtract 584 0 Store 298(var4) 585 586: 30(int) CompositeExtract 584 1 Store 298(var4) 586 587: 176(ivec2) Load 304(var5) 588: 176(ivec2) Load 304(var5) 590:589(ResType) SMulExtended 587 588 591: 176(ivec2) CompositeExtract 590 0 Store 304(var5) 591 592: 176(ivec2) CompositeExtract 590 1 Store 304(var5) 592 593: 191(ivec3) Load 310(var6) 594: 191(ivec3) Load 310(var6) 596:595(ResType) SMulExtended 593 594 597: 191(ivec3) CompositeExtract 596 0 Store 310(var6) 597 598: 191(ivec3) CompositeExtract 596 1 Store 310(var6) 598 599: 204(ivec4) Load 316(var7) 600: 204(ivec4) Load 316(var7) 602:601(ResType) SMulExtended 599 600 603: 204(ivec4) CompositeExtract 602 0 Store 316(var7) 603 604: 204(ivec4) CompositeExtract 602 1 Store 316(var7) 604 605: 84(fvec2) Load 282(var1) 606: 36(int) ExtInst 1(GLSL.std.450) 57(PackUnorm2x16) 605 Store 349(var8) 606 607: 88(fvec4) Load 292(var3) 608: 36(int) ExtInst 1(GLSL.std.450) 55(PackUnorm4x8) 607 Store 349(var8) 608 609: 88(fvec4) Load 292(var3) 610: 36(int) ExtInst 1(GLSL.std.450) 54(PackSnorm4x8) 609 Store 349(var8) 610 611: 36(int) Load 349(var8) 612: 84(fvec2) ExtInst 1(GLSL.std.450) 61(UnpackUnorm2x16) 611 Store 282(var1) 612 613: 36(int) Load 349(var8) 614: 88(fvec4) ExtInst 1(GLSL.std.450) 64(UnpackUnorm4x8) 613 Store 292(var3) 614 615: 36(int) Load 349(var8) 616: 88(fvec4) ExtInst 1(GLSL.std.450) 63(UnpackSnorm4x8) 615 Store 292(var3) 616 619: 48(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 618(fvar0) Store 277(var0) 619 622: 84(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 621(fvar1) Store 282(var1) 622 625: 137(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 624(fvar2) Store 287(var2) 625 628: 88(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 627(fvar3) Store 292(var3) 628 629: 30(int) Load 298(var4) 630: 48(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 618(fvar0) 629 Store 277(var0) 630 631: 30(int) Load 298(var4) 632: 84(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 621(fvar1) 631 Store 282(var1) 632 633: 30(int) Load 298(var4) 634: 137(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 624(fvar2) 633 Store 287(var2) 634 635: 30(int) Load 298(var4) 636: 88(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 627(fvar3) 635 Store 292(var3) 636 637: 84(fvec2) Load 282(var1) 638: 48(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 618(fvar0) 637 Store 277(var0) 638 639: 84(fvec2) Load 282(var1) 640: 84(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 621(fvar1) 639 Store 282(var1) 640 641: 84(fvec2) Load 282(var1) 642: 137(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 624(fvar2) 641 Store 287(var2) 642 643: 84(fvec2) Load 282(var1) 644: 88(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 627(fvar3) 643 Store 292(var3) 644 646: 75 Load 645(svar24) 647: 84(fvec2) Load 282(var1) 648: 176(ivec2) Load 304(var5) 649: 88(fvec4) ImageGather 646 647 73 Offset 648 Store 292(var3) 649 654: 651 Load 653(svar25) 655: 84(fvec2) Load 282(var1) 656: 176(ivec2) Load 304(var5) 657: 145(ivec4) ImageGather 654 655 73 Offset 656 Store 364(var11) 657 662: 659 Load 661(svar26) 663: 84(fvec2) Load 282(var1) 664: 176(ivec2) Load 304(var5) 665: 204(ivec4) ImageGather 662 663 73 Offset 664 Store 316(var7) 665 670: 667 Load 669(svar33) 671: 137(fvec3) Load 287(var2) 672: 176(ivec2) Load 304(var5) 673: 88(fvec4) ImageGather 670 671 73 Offset 672 Store 292(var3) 673 678: 675 Load 677(svar34) 679: 137(fvec3) Load 287(var2) 680: 176(ivec2) Load 304(var5) 681: 145(ivec4) ImageGather 678 679 73 Offset 680 Store 364(var11) 681 686: 683 Load 685(svar35) 687: 137(fvec3) Load 287(var2) 688: 176(ivec2) Load 304(var5) 689: 204(ivec4) ImageGather 686 687 73 Offset 688 Store 316(var7) 689 694: 691 Load 693(svar27) 695: 84(fvec2) Load 282(var1) 696: 176(ivec2) Load 304(var5) 697: 88(fvec4) ImageGather 694 695 73 Offset 696 Store 292(var3) 697 702: 699 Load 701(svar28) 703: 84(fvec2) Load 282(var1) 704: 176(ivec2) Load 304(var5) 705: 145(ivec4) ImageGather 702 703 73 Offset 704 Store 364(var11) 705 710: 707 Load 709(svar29) 711: 84(fvec2) Load 282(var1) 712: 176(ivec2) Load 304(var5) 713: 204(ivec4) ImageGather 710 711 73 Offset 712 Store 316(var7) 713 718: 715 Load 717(var16) 719: 84(fvec2) Load 282(var1) 720: 48(float) Load 277(var0) 721: 176(ivec2) Load 304(var5) 722: 88(fvec4) ImageDrefGather 718 719 720 Offset 721 Store 292(var3) 722 727: 724 Load 726(var18) 728: 137(fvec3) Load 287(var2) 729: 48(float) Load 277(var0) 730: 176(ivec2) Load 304(var5) 731: 88(fvec4) ImageDrefGather 727 728 729 Offset 730 Store 292(var3) 731 736: 733 Load 735(var20) 737: 84(fvec2) Load 282(var1) 738: 48(float) Load 277(var0) 739: 176(ivec2) Load 304(var5) 740: 88(fvec4) ImageDrefGather 736 737 738 Offset 739 Store 292(var3) 740 741: 75 Load 645(svar24) 742: 84(fvec2) Load 282(var1) 743: 88(fvec4) ImageGather 741 742 73 Store 292(var3) 743 744: 651 Load 653(svar25) 745: 84(fvec2) Load 282(var1) 746: 145(ivec4) ImageGather 744 745 73 Store 364(var11) 746 747: 659 Load 661(svar26) 748: 84(fvec2) Load 282(var1) 749: 204(ivec4) ImageGather 747 748 73 Store 316(var7) 749 750: 667 Load 669(svar33) 751: 137(fvec3) Load 287(var2) 752: 88(fvec4) ImageGather 750 751 73 Store 292(var3) 752 753: 675 Load 677(svar34) 754: 137(fvec3) Load 287(var2) 755: 145(ivec4) ImageGather 753 754 73 Store 364(var11) 755 756: 683 Load 685(svar35) 757: 137(fvec3) Load 287(var2) 758: 204(ivec4) ImageGather 756 757 73 Store 316(var7) 758 763: 760 Load 762(svar30) 764: 137(fvec3) Load 287(var2) 765: 88(fvec4) ImageGather 763 764 73 Store 292(var3) 765 770: 767 Load 769(svar31) 771: 137(fvec3) Load 287(var2) 772: 145(ivec4) ImageGather 770 771 73 Store 364(var11) 772 777: 774 Load 776(svar32) 778: 137(fvec3) Load 287(var2) 779: 204(ivec4) ImageGather 777 778 73 Store 316(var7) 779 784: 781 Load 783(svar21) 785: 88(fvec4) Load 292(var3) 786: 88(fvec4) ImageGather 784 785 73 Store 292(var3) 786 791: 788 Load 790(svar22) 792: 88(fvec4) Load 292(var3) 793: 145(ivec4) ImageGather 791 792 73 Store 364(var11) 793 798: 795 Load 797(svar23) 799: 88(fvec4) Load 292(var3) 800: 204(ivec4) ImageGather 798 799 73 Store 316(var7) 800 801: 691 Load 693(svar27) 802: 84(fvec2) Load 282(var1) 803: 88(fvec4) ImageGather 801 802 73 Store 292(var3) 803 804: 699 Load 701(svar28) 805: 84(fvec2) Load 282(var1) 806: 145(ivec4) ImageGather 804 805 73 Store 364(var11) 806 807: 707 Load 709(svar29) 808: 84(fvec2) Load 282(var1) 809: 204(ivec4) ImageGather 807 808 73 Store 316(var7) 809 810: 715 Load 717(var16) 811: 84(fvec2) Load 282(var1) 812: 48(float) Load 277(var0) 813: 88(fvec4) ImageDrefGather 810 811 812 Store 292(var3) 813 814: 724 Load 726(var18) 815: 137(fvec3) Load 287(var2) 816: 48(float) Load 277(var0) 817: 88(fvec4) ImageDrefGather 814 815 816 Store 292(var3) 817 822: 819 Load 821(var17) 823: 137(fvec3) Load 287(var2) 824: 48(float) Load 277(var0) 825: 88(fvec4) ImageDrefGather 822 823 824 Store 292(var3) 825 830: 827 Load 829(var19) 831: 88(fvec4) Load 292(var3) 832: 48(float) Load 277(var0) 833: 88(fvec4) ImageDrefGather 830 831 832 Store 292(var3) 833 834: 733 Load 735(var20) 835: 84(fvec2) Load 282(var1) 836: 48(float) Load 277(var0) 837: 88(fvec4) ImageDrefGather 834 835 836 Store 292(var3) 837 838: 75 Load 645(svar24) 839: 84(fvec2) Load 282(var1) 843: 840 Load 842(Offsets) 844: 88(fvec4) ImageGather 838 839 73 Offsets 843 Store 292(var3) 844 845: 651 Load 653(svar25) 846: 84(fvec2) Load 282(var1) 847: 840 Load 842(Offsets) 848: 145(ivec4) ImageGather 845 846 73 Offsets 847 Store 364(var11) 848 849: 659 Load 661(svar26) 850: 84(fvec2) Load 282(var1) 851: 840 Load 842(Offsets) 852: 204(ivec4) ImageGather 849 850 73 Offsets 851 Store 316(var7) 852 853: 667 Load 669(svar33) 854: 137(fvec3) Load 287(var2) 855: 840 Load 842(Offsets) 856: 88(fvec4) ImageGather 853 854 73 Offsets 855 Store 292(var3) 856 857: 675 Load 677(svar34) 858: 137(fvec3) Load 287(var2) 859: 840 Load 842(Offsets) 860: 145(ivec4) ImageGather 857 858 73 Offsets 859 Store 364(var11) 860 861: 683 Load 685(svar35) 862: 137(fvec3) Load 287(var2) 863: 840 Load 842(Offsets) 864: 204(ivec4) ImageGather 861 862 73 Offsets 863 Store 316(var7) 864 865: 691 Load 693(svar27) 866: 84(fvec2) Load 282(var1) 867: 840 Load 842(Offsets) 868: 88(fvec4) ImageGather 865 866 73 Offsets 867 Store 292(var3) 868 869: 699 Load 701(svar28) 870: 84(fvec2) Load 282(var1) 871: 840 Load 842(Offsets) 872: 145(ivec4) ImageGather 869 870 73 Offsets 871 Store 364(var11) 872 873: 707 Load 709(svar29) 874: 84(fvec2) Load 282(var1) 875: 840 Load 842(Offsets) 876: 204(ivec4) ImageGather 873 874 73 Offsets 875 Store 316(var7) 876 877: 715 Load 717(var16) 878: 84(fvec2) Load 282(var1) 879: 48(float) Load 277(var0) 880: 840 Load 842(Offsets) 881: 88(fvec4) ImageDrefGather 877 878 879 Offsets 880 Store 292(var3) 881 882: 724 Load 726(var18) 883: 137(fvec3) Load 287(var2) 884: 48(float) Load 277(var0) 885: 840 Load 842(Offsets) 886: 88(fvec4) ImageDrefGather 882 883 884 Offsets 885 Store 292(var3) 886 887: 733 Load 735(var20) 888: 84(fvec2) Load 282(var1) 889: 48(float) Load 277(var0) 890: 840 Load 842(Offsets) 891: 88(fvec4) ImageDrefGather 887 888 889 Offsets 890 Store 292(var3) 891 Return FunctionEnd 12(testDataTypes(): 2 Function None 3 13: Label Return FunctionEnd 14(testConstructors(): 2 Function None 3 15: Label 894(uiv): 893(ptr) Variable Function 896(dv): 55(ptr) Variable Function 900(iv): 899(ptr) Variable Function 904(bv): 903(ptr) Variable Function Store 894(uiv) 895 Store 896(dv) 897 Store 900(iv) 901 Store 904(bv) 905 906: 892(int8_t) Load 894(uiv) 907: 48(float) ConvertUToF 906 908:54(float64_t) Load 896(dv) 909: 24(int64_t) ConvertFToS 908 910:898(int16_t) Load 900(iv) 911:54(float64_t) ConvertSToF 910 912: 902(bool) Load 904(bv) 916:913(int16_t) Select 912 915 914 Return FunctionEnd 16(testBinaryOps(): 2 Function None 3 17: Label 917(var0): 31(ptr) Variable Function 918(var1): 37(ptr) Variable Function 920(var2): 25(ptr) Variable Function 922(var3): 43(ptr) Variable Function 924(var4): 49(ptr) Variable Function 926(var5): 55(ptr) Variable Function 928(var6): 177(ptr) Variable Function 931(var7): 107(ptr) Variable Function 934(var8): 111(ptr) Variable Function 937(var9): 115(ptr) Variable Function 940(var10): 118(ptr) Variable Function 943(var11): 122(ptr) Variable Function 946(var12): 192(ptr) Variable Function 949(var13): 126(ptr) Variable Function 952(var14): 130(ptr) Variable Function 955(var15): 134(ptr) Variable Function 958(var16): 138(ptr) Variable Function 961(var17): 142(ptr) Variable Function 964(var18): 205(ptr) Variable Function 967(var19): 146(ptr) Variable Function 970(var20): 150(ptr) Variable Function 973(var21): 154(ptr) Variable Function 976(var22): 157(ptr) Variable Function 979(var23): 161(ptr) Variable Function 984(var24): 983(ptr) Variable Function 986(var25): 899(ptr) Variable Function 990(var26): 989(ptr) Variable Function 995(var27): 994(ptr) Variable Function 1000(var28): 999(ptr) Variable Function 1005(var29): 1004(ptr) Variable Function 1010(var30): 1009(ptr) Variable Function 1015(var31): 1014(ptr) Variable Function 1018(var32): 893(ptr) Variable Function 1021(var33): 1020(ptr) Variable Function 1025(var34): 1024(ptr) Variable Function 1030(var35): 1029(ptr) Variable Function 1035(var36): 1034(ptr) Variable Function 1040(var37): 1039(ptr) Variable Function 1045(var38): 1044(ptr) Variable Function 1049(var39): 1048(ptr) Variable Function 1054(var40): 1053(ptr) Variable Function 1059(var41): 1058(ptr) Variable Function 1062(var42): 37(ptr) Variable Function 1067(var43): 25(ptr) Variable Function 1072(var44): 43(ptr) Variable Function 1078(var45): 49(ptr) Variable Function 1083(var46): 55(ptr) Variable Function 1088(var47): 107(ptr) Variable Function 1093(var48): 111(ptr) Variable Function 1098(var49): 115(ptr) Variable Function 1104(var50): 118(ptr) Variable Function 1109(var51): 122(ptr) Variable Function 1114(var52): 126(ptr) Variable Function 1119(var53): 130(ptr) Variable Function 1124(var54): 134(ptr) Variable Function 1130(var55): 138(ptr) Variable Function 1135(var56): 142(ptr) Variable Function 1140(var57): 146(ptr) Variable Function 1145(var58): 150(ptr) Variable Function 1150(var59): 154(ptr) Variable Function 1156(var60): 157(ptr) Variable Function 1161(var61): 161(ptr) Variable Function 1166(var62): 31(ptr) Variable Function 1171(var63): 25(ptr) Variable Function 1176(var64): 37(ptr) Variable Function 1182(var65): 43(ptr) Variable Function 1188(var66): 49(ptr) Variable Function 1193(var67): 55(ptr) Variable Function 1198(var68): 31(ptr) Variable Function 1203(var69): 25(ptr) Variable Function 1208(var70): 37(ptr) Variable Function 1214(var71): 43(ptr) Variable Function 1220(var72): 49(ptr) Variable Function 1225(var73): 55(ptr) Variable Function 1230(var74): 177(ptr) Variable Function 1235(var75): 111(ptr) Variable Function 1240(var76): 107(ptr) Variable Function 1246(var77): 115(ptr) Variable Function 1252(var78): 118(ptr) Variable Function 1257(var79): 122(ptr) Variable Function 1262(var80): 177(ptr) Variable Function 1267(var81): 111(ptr) Variable Function 1272(var82): 107(ptr) Variable Function 1278(var83): 115(ptr) Variable Function 1284(var84): 118(ptr) Variable Function 1289(var85): 122(ptr) Variable Function 1294(var86): 192(ptr) Variable Function 1299(var87): 130(ptr) Variable Function 1304(var88): 126(ptr) Variable Function 1310(var89): 134(ptr) Variable Function 1316(var90): 138(ptr) Variable Function 1321(var91): 142(ptr) Variable Function 1326(var92): 126(ptr) Variable Function 1332(var93): 134(ptr) Variable Function 1338(var94): 138(ptr) Variable Function 1343(var95): 142(ptr) Variable Function 1348(var96): 205(ptr) Variable Function 1353(var97): 150(ptr) Variable Function 1358(var98): 146(ptr) Variable Function 1364(var99): 154(ptr) Variable Function 1370(var100): 157(ptr) Variable Function 1375(var101): 161(ptr) Variable Function 1380(var102): 146(ptr) Variable Function 1386(var103): 154(ptr) Variable Function 1392(var104): 157(ptr) Variable Function 1397(var105): 161(ptr) Variable Function 1402(var106): 43(ptr) Variable Function 1407(var107): 55(ptr) Variable Function 1412(var108): 115(ptr) Variable Function 1417(var109): 122(ptr) Variable Function 1422(var110): 134(ptr) Variable Function 1427(var111): 142(ptr) Variable Function 1432(var112): 154(ptr) Variable Function 1437(var113): 161(ptr) Variable Function 1442(var114): 43(ptr) Variable Function 1447(var115): 49(ptr) Variable Function 1452(var116): 55(ptr) Variable Function 1457(var117): 115(ptr) Variable Function 1462(var118): 118(ptr) Variable Function 1467(var119): 122(ptr) Variable Function 1472(var120): 134(ptr) Variable Function 1477(var121): 138(ptr) Variable Function 1482(var122): 142(ptr) Variable Function 1487(var123): 154(ptr) Variable Function 1492(var124): 157(ptr) Variable Function 1497(var125): 161(ptr) Variable Function 1502(var126): 37(ptr) Variable Function 1507(var127): 43(ptr) Variable Function 1512(var128): 49(ptr) Variable Function 1517(var129): 55(ptr) Variable Function 1522(var130): 37(ptr) Variable Function 1527(var131): 43(ptr) Variable Function 1532(var132): 49(ptr) Variable Function 1537(var133): 55(ptr) Variable Function 1542(var134): 107(ptr) Variable Function 1547(var135): 115(ptr) Variable Function 1552(var136): 118(ptr) Variable Function 1557(var137): 122(ptr) Variable Function 1562(var138): 107(ptr) Variable Function 1567(var139): 115(ptr) Variable Function 1572(var140): 118(ptr) Variable Function 1577(var141): 122(ptr) Variable Function 1582(var142): 126(ptr) Variable Function 1587(var143): 134(ptr) Variable Function 1592(var144): 138(ptr) Variable Function 1597(var145): 142(ptr) Variable Function 1602(var146): 146(ptr) Variable Function 1607(var147): 154(ptr) Variable Function 1612(var148): 157(ptr) Variable Function 1617(var149): 161(ptr) Variable Function 1622(var150): 55(ptr) Variable Function 1627(var151): 122(ptr) Variable Function 1632(var152): 142(ptr) Variable Function 1637(var153): 161(ptr) Variable Function 1642(var154): 55(ptr) Variable Function 1647(var155): 122(ptr) Variable Function 1652(var156): 142(ptr) Variable Function 1657(var157): 161(ptr) Variable Function 1662(var158): 49(ptr) Variable Function 1667(var159): 55(ptr) Variable Function 1672(var160): 118(ptr) Variable Function 1677(var161): 122(ptr) Variable Function 1682(var162): 138(ptr) Variable Function 1687(var163): 142(ptr) Variable Function 1692(var164): 157(ptr) Variable Function 1697(var165): 161(ptr) Variable Function 1702(var166): 37(ptr) Variable Function 1707(var167): 25(ptr) Variable Function 1712(var168): 43(ptr) Variable Function 1718(var169): 49(ptr) Variable Function 1723(var170): 55(ptr) Variable Function 1728(var171): 107(ptr) Variable Function 1733(var172): 111(ptr) Variable Function 1738(var173): 115(ptr) Variable Function 1744(var174): 118(ptr) Variable Function 1749(var175): 122(ptr) Variable Function 1754(var176): 126(ptr) Variable Function 1759(var177): 130(ptr) Variable Function 1764(var178): 134(ptr) Variable Function 1770(var179): 138(ptr) Variable Function 1775(var180): 142(ptr) Variable Function 1780(var181): 146(ptr) Variable Function 1785(var182): 150(ptr) Variable Function 1790(var183): 154(ptr) Variable Function 1796(var184): 157(ptr) Variable Function 1801(var185): 161(ptr) Variable Function 1806(var186): 31(ptr) Variable Function 1811(var187): 25(ptr) Variable Function 1816(var188): 37(ptr) Variable Function 1822(var189): 43(ptr) Variable Function 1828(var190): 49(ptr) Variable Function 1833(var191): 55(ptr) Variable Function 1838(var192): 31(ptr) Variable Function 1843(var193): 25(ptr) Variable Function 1848(var194): 37(ptr) Variable Function 1854(var195): 43(ptr) Variable Function 1860(var196): 49(ptr) Variable Function 1865(var197): 55(ptr) Variable Function 1870(var198): 177(ptr) Variable Function 1875(var199): 111(ptr) Variable Function 1880(var200): 107(ptr) Variable Function 1886(var201): 115(ptr) Variable Function 1892(var202): 118(ptr) Variable Function 1897(var203): 122(ptr) Variable Function 1902(var204): 177(ptr) Variable Function 1907(var205): 111(ptr) Variable Function 1912(var206): 107(ptr) Variable Function 1918(var207): 115(ptr) Variable Function 1924(var208): 118(ptr) Variable Function 1929(var209): 122(ptr) Variable Function 1934(var210): 192(ptr) Variable Function 1939(var211): 130(ptr) Variable Function 1944(var212): 126(ptr) Variable Function 1950(var213): 134(ptr) Variable Function 1956(var214): 138(ptr) Variable Function 1961(var215): 142(ptr) Variable Function 1966(var216): 126(ptr) Variable Function 1972(var217): 134(ptr) Variable Function 1978(var218): 138(ptr) Variable Function 1983(var219): 142(ptr) Variable Function 1988(var220): 205(ptr) Variable Function 1993(var221): 150(ptr) Variable Function 1998(var222): 146(ptr) Variable Function 2004(var223): 154(ptr) Variable Function 2010(var224): 157(ptr) Variable Function 2015(var225): 161(ptr) Variable Function 2020(var226): 146(ptr) Variable Function 2026(var227): 154(ptr) Variable Function 2032(var228): 157(ptr) Variable Function 2037(var229): 161(ptr) Variable Function 2042(var230): 43(ptr) Variable Function 2047(var231): 55(ptr) Variable Function 2052(var232): 115(ptr) Variable Function 2057(var233): 122(ptr) Variable Function 2062(var234): 134(ptr) Variable Function 2067(var235): 142(ptr) Variable Function 2072(var236): 154(ptr) Variable Function 2077(var237): 161(ptr) Variable Function 2082(var238): 43(ptr) Variable Function 2087(var239): 49(ptr) Variable Function 2092(var240): 55(ptr) Variable Function 2097(var241): 115(ptr) Variable Function 2102(var242): 118(ptr) Variable Function 2107(var243): 122(ptr) Variable Function 2112(var244): 134(ptr) Variable Function 2117(var245): 138(ptr) Variable Function 2122(var246): 142(ptr) Variable Function 2127(var247): 154(ptr) Variable Function 2132(var248): 157(ptr) Variable Function 2137(var249): 161(ptr) Variable Function 2142(var250): 37(ptr) Variable Function 2147(var251): 43(ptr) Variable Function 2152(var252): 49(ptr) Variable Function 2157(var253): 55(ptr) Variable Function 2162(var254): 37(ptr) Variable Function 2167(var255): 43(ptr) Variable Function 2172(var256): 49(ptr) Variable Function 2177(var257): 55(ptr) Variable Function 2182(var258): 107(ptr) Variable Function 2187(var259): 115(ptr) Variable Function 2192(var260): 118(ptr) Variable Function 2197(var261): 122(ptr) Variable Function 2202(var262): 107(ptr) Variable Function 2207(var263): 115(ptr) Variable Function 2212(var264): 118(ptr) Variable Function 2217(var265): 122(ptr) Variable Function 2222(var266): 126(ptr) Variable Function 2227(var267): 134(ptr) Variable Function 2232(var268): 138(ptr) Variable Function 2237(var269): 142(ptr) Variable Function 2242(var270): 146(ptr) Variable Function 2247(var271): 154(ptr) Variable Function 2252(var272): 157(ptr) Variable Function 2257(var273): 161(ptr) Variable Function 2262(var274): 55(ptr) Variable Function 2267(var275): 122(ptr) Variable Function 2272(var276): 142(ptr) Variable Function 2277(var277): 161(ptr) Variable Function 2282(var278): 55(ptr) Variable Function 2287(var279): 122(ptr) Variable Function 2292(var280): 142(ptr) Variable Function 2297(var281): 161(ptr) Variable Function 2302(var282): 49(ptr) Variable Function 2307(var283): 55(ptr) Variable Function 2312(var284): 118(ptr) Variable Function 2317(var285): 122(ptr) Variable Function 2322(var286): 138(ptr) Variable Function 2327(var287): 142(ptr) Variable Function 2332(var288): 157(ptr) Variable Function 2337(var289): 161(ptr) Variable Function 2342(var290): 37(ptr) Variable Function 2347(var291): 25(ptr) Variable Function 2352(var292): 43(ptr) Variable Function 2358(var293): 49(ptr) Variable Function 2363(var294): 55(ptr) Variable Function 2368(var295): 107(ptr) Variable Function 2373(var296): 111(ptr) Variable Function 2378(var297): 115(ptr) Variable Function 2384(var298): 118(ptr) Variable Function 2389(var299): 122(ptr) Variable Function 2394(var300): 126(ptr) Variable Function 2399(var301): 130(ptr) Variable Function 2404(var302): 134(ptr) Variable Function 2410(var303): 138(ptr) Variable Function 2415(var304): 142(ptr) Variable Function 2420(var305): 146(ptr) Variable Function 2425(var306): 150(ptr) Variable Function 2430(var307): 154(ptr) Variable Function 2436(var308): 157(ptr) Variable Function 2441(var309): 161(ptr) Variable Function 2446(var310): 31(ptr) Variable Function 2451(var311): 25(ptr) Variable Function 2456(var312): 37(ptr) Variable Function 2462(var313): 43(ptr) Variable Function 2468(var314): 49(ptr) Variable Function 2473(var315): 55(ptr) Variable Function 2478(var316): 31(ptr) Variable Function 2483(var317): 25(ptr) Variable Function 2488(var318): 37(ptr) Variable Function 2494(var319): 43(ptr) Variable Function 2500(var320): 49(ptr) Variable Function 2505(var321): 55(ptr) Variable Function 2510(var322): 177(ptr) Variable Function 2515(var323): 111(ptr) Variable Function 2520(var324): 107(ptr) Variable Function 2526(var325): 115(ptr) Variable Function 2532(var326): 118(ptr) Variable Function 2537(var327): 122(ptr) Variable Function 2542(var328): 177(ptr) Variable Function 2547(var329): 111(ptr) Variable Function 2552(var330): 107(ptr) Variable Function 2558(var331): 115(ptr) Variable Function 2564(var332): 118(ptr) Variable Function 2569(var333): 122(ptr) Variable Function 2574(var334): 192(ptr) Variable Function 2579(var335): 130(ptr) Variable Function 2584(var336): 126(ptr) Variable Function 2590(var337): 134(ptr) Variable Function 2596(var338): 138(ptr) Variable Function 2601(var339): 142(ptr) Variable Function 2606(var340): 126(ptr) Variable Function 2612(var341): 134(ptr) Variable Function 2618(var342): 138(ptr) Variable Function 2623(var343): 142(ptr) Variable Function 2628(var344): 205(ptr) Variable Function 2633(var345): 150(ptr) Variable Function 2638(var346): 146(ptr) Variable Function 2644(var347): 154(ptr) Variable Function 2650(var348): 157(ptr) Variable Function 2655(var349): 161(ptr) Variable Function 2660(var350): 146(ptr) Variable Function 2666(var351): 154(ptr) Variable Function 2672(var352): 157(ptr) Variable Function 2677(var353): 161(ptr) Variable Function 2682(var354): 43(ptr) Variable Function 2687(var355): 55(ptr) Variable Function 2692(var356): 115(ptr) Variable Function 2697(var357): 122(ptr) Variable Function 2702(var358): 134(ptr) Variable Function 2707(var359): 142(ptr) Variable Function 2712(var360): 154(ptr) Variable Function 2717(var361): 161(ptr) Variable Function 2722(var362): 43(ptr) Variable Function 2727(var363): 49(ptr) Variable Function 2732(var364): 55(ptr) Variable Function 2737(var365): 115(ptr) Variable Function 2742(var366): 118(ptr) Variable Function 2747(var367): 122(ptr) Variable Function 2752(var368): 134(ptr) Variable Function 2757(var369): 138(ptr) Variable Function 2762(var370): 142(ptr) Variable Function 2767(var371): 154(ptr) Variable Function 2772(var372): 157(ptr) Variable Function 2777(var373): 161(ptr) Variable Function 2782(var374): 37(ptr) Variable Function 2787(var375): 43(ptr) Variable Function 2792(var376): 49(ptr) Variable Function 2797(var377): 55(ptr) Variable Function 2802(var378): 37(ptr) Variable Function 2807(var379): 43(ptr) Variable Function 2812(var380): 49(ptr) Variable Function 2817(var381): 55(ptr) Variable Function 2822(var382): 107(ptr) Variable Function 2827(var383): 115(ptr) Variable Function 2832(var384): 118(ptr) Variable Function 2837(var385): 122(ptr) Variable Function 2842(var386): 107(ptr) Variable Function 2847(var387): 115(ptr) Variable Function 2852(var388): 118(ptr) Variable Function 2857(var389): 122(ptr) Variable Function 2862(var390): 126(ptr) Variable Function 2867(var391): 134(ptr) Variable Function 2872(var392): 138(ptr) Variable Function 2877(var393): 142(ptr) Variable Function 2882(var394): 146(ptr) Variable Function 2887(var395): 154(ptr) Variable Function 2892(var396): 157(ptr) Variable Function 2897(var397): 161(ptr) Variable Function 2902(var398): 55(ptr) Variable Function 2907(var399): 122(ptr) Variable Function 2912(var400): 142(ptr) Variable Function 2917(var401): 161(ptr) Variable Function 2922(var402): 55(ptr) Variable Function 2927(var403): 122(ptr) Variable Function 2932(var404): 142(ptr) Variable Function 2937(var405): 161(ptr) Variable Function 2942(var406): 49(ptr) Variable Function 2947(var407): 55(ptr) Variable Function 2952(var408): 118(ptr) Variable Function 2957(var409): 122(ptr) Variable Function 2962(var410): 138(ptr) Variable Function 2967(var411): 142(ptr) Variable Function 2972(var412): 157(ptr) Variable Function 2977(var413): 161(ptr) Variable Function Store 917(var0) 73 Store 918(var1) 919 Store 920(var2) 921 Store 922(var3) 923 Store 924(var4) 925 Store 926(var5) 927 Store 928(var6) 930 Store 931(var7) 933 Store 934(var8) 936 Store 937(var9) 939 Store 940(var10) 942 Store 943(var11) 945 Store 946(var12) 948 Store 949(var13) 951 Store 952(var14) 954 Store 955(var15) 957 Store 958(var16) 960 Store 961(var17) 963 Store 964(var18) 966 Store 967(var19) 969 Store 970(var20) 972 Store 973(var21) 975 Store 976(var22) 978 Store 979(var23) 981 Store 984(var24) 985 Store 986(var25) 987 Store 990(var26) 992 Store 995(var27) 997 Store 1000(var28) 1002 Store 1005(var29) 1007 Store 1010(var30) 1012 Store 1015(var31) 1017 Store 1018(var32) 1019 Store 1021(var33) 1022 Store 1025(var34) 1027 Store 1030(var35) 1032 Store 1035(var36) 1037 Store 1040(var37) 1042 Store 1045(var38) 1046 Store 1049(var39) 1051 Store 1054(var40) 1056 Store 1059(var41) 1061 1063: 36(int) Load 918(var1) 1064: 30(int) Load 917(var0) 1065: 36(int) Bitcast 1064 1066: 36(int) IAdd 1063 1065 Store 1062(var42) 1066 1068: 24(int64_t) Load 920(var2) 1069: 30(int) Load 917(var0) 1070: 24(int64_t) SConvert 1069 1071: 24(int64_t) IAdd 1068 1070 Store 1067(var43) 1071 1073: 42(int64_t) Load 922(var3) 1074: 30(int) Load 917(var0) 1075: 24(int64_t) SConvert 1074 1076: 42(int64_t) Bitcast 1075 1077: 42(int64_t) IAdd 1073 1076 Store 1072(var44) 1077 1079: 48(float) Load 924(var4) 1080: 30(int) Load 917(var0) 1081: 48(float) ConvertSToF 1080 1082: 48(float) FAdd 1079 1081 Store 1078(var45) 1082 1084:54(float64_t) Load 926(var5) 1085: 30(int) Load 917(var0) 1086:54(float64_t) ConvertSToF 1085 1087:54(float64_t) FAdd 1084 1086 Store 1083(var46) 1087 1089: 106(ivec2) Load 931(var7) 1090: 176(ivec2) Load 928(var6) 1091: 106(ivec2) Bitcast 1090 1092: 106(ivec2) IAdd 1089 1091 Store 1088(var47) 1092 1094:110(i64vec2) Load 934(var8) 1095: 176(ivec2) Load 928(var6) 1096:110(i64vec2) SConvert 1095 1097:110(i64vec2) IAdd 1094 1096 Store 1093(var48) 1097 1099:114(i64vec2) Load 937(var9) 1100: 176(ivec2) Load 928(var6) 1101:110(i64vec2) SConvert 1100 1102:114(i64vec2) Bitcast 1101 1103:114(i64vec2) IAdd 1099 1102 Store 1098(var49) 1103 1105: 84(fvec2) Load 940(var10) 1106: 176(ivec2) Load 928(var6) 1107: 84(fvec2) ConvertSToF 1106 1108: 84(fvec2) FAdd 1105 1107 Store 1104(var50) 1108 1110:121(f64vec2) Load 943(var11) 1111: 176(ivec2) Load 928(var6) 1112:121(f64vec2) ConvertSToF 1111 1113:121(f64vec2) FAdd 1110 1112 Store 1109(var51) 1113 1115: 125(ivec3) Load 949(var13) 1116: 191(ivec3) Load 946(var12) 1117: 125(ivec3) Bitcast 1116 1118: 125(ivec3) IAdd 1115 1117 Store 1114(var52) 1118 1120:129(i64vec3) Load 952(var14) 1121: 191(ivec3) Load 946(var12) 1122:129(i64vec3) SConvert 1121 1123:129(i64vec3) IAdd 1120 1122 Store 1119(var53) 1123 1125:133(i64vec3) Load 955(var15) 1126: 191(ivec3) Load 946(var12) 1127:129(i64vec3) SConvert 1126 1128:133(i64vec3) Bitcast 1127 1129:133(i64vec3) IAdd 1125 1128 Store 1124(var54) 1129 1131: 137(fvec3) Load 958(var16) 1132: 191(ivec3) Load 946(var12) 1133: 137(fvec3) ConvertSToF 1132 1134: 137(fvec3) FAdd 1131 1133 Store 1130(var55) 1134 1136:141(f64vec3) Load 961(var17) 1137: 191(ivec3) Load 946(var12) 1138:141(f64vec3) ConvertSToF 1137 1139:141(f64vec3) FAdd 1136 1138 Store 1135(var56) 1139 1141: 145(ivec4) Load 967(var19) 1142: 204(ivec4) Load 964(var18) 1143: 145(ivec4) Bitcast 1142 1144: 145(ivec4) IAdd 1141 1143 Store 1140(var57) 1144 1146:149(i64vec4) Load 970(var20) 1147: 204(ivec4) Load 964(var18) 1148:149(i64vec4) SConvert 1147 1149:149(i64vec4) IAdd 1146 1148 Store 1145(var58) 1149 1151:153(i64vec4) Load 973(var21) 1152: 204(ivec4) Load 964(var18) 1153:149(i64vec4) SConvert 1152 1154:153(i64vec4) Bitcast 1153 1155:153(i64vec4) IAdd 1151 1154 Store 1150(var59) 1155 1157: 88(fvec4) Load 976(var22) 1158: 204(ivec4) Load 964(var18) 1159: 88(fvec4) ConvertSToF 1158 1160: 88(fvec4) FAdd 1157 1159 Store 1156(var60) 1160 1162:160(f64vec4) Load 979(var23) 1163: 204(ivec4) Load 964(var18) 1164:160(f64vec4) ConvertSToF 1163 1165:160(f64vec4) FAdd 1162 1164 Store 1161(var61) 1165 1167: 30(int) Load 917(var0) 1168: 982(int8_t) Load 984(var24) 1169: 30(int) SConvert 1168 1170: 30(int) IAdd 1167 1169 Store 1166(var62) 1170 1172: 24(int64_t) Load 920(var2) 1173: 982(int8_t) Load 984(var24) 1174: 24(int64_t) SConvert 1173 1175: 24(int64_t) IAdd 1172 1174 Store 1171(var63) 1175 1177: 36(int) Load 918(var1) 1178: 982(int8_t) Load 984(var24) 1179: 30(int) SConvert 1178 1180: 36(int) Bitcast 1179 1181: 36(int) IAdd 1177 1180 Store 1176(var64) 1181 1183: 42(int64_t) Load 922(var3) 1184: 982(int8_t) Load 984(var24) 1185: 24(int64_t) SConvert 1184 1186: 42(int64_t) Bitcast 1185 1187: 42(int64_t) IAdd 1183 1186 Store 1182(var65) 1187 1189: 48(float) Load 924(var4) 1190: 982(int8_t) Load 984(var24) 1191: 48(float) ConvertSToF 1190 1192: 48(float) FAdd 1189 1191 Store 1188(var66) 1192 1194:54(float64_t) Load 926(var5) 1195: 982(int8_t) Load 984(var24) 1196:54(float64_t) ConvertSToF 1195 1197:54(float64_t) FAdd 1194 1196 Store 1193(var67) 1197 1199: 30(int) Load 917(var0) 1200:898(int16_t) Load 986(var25) 1201: 30(int) SConvert 1200 1202: 30(int) IAdd 1199 1201 Store 1198(var68) 1202 1204: 24(int64_t) Load 920(var2) 1205:898(int16_t) Load 986(var25) 1206: 24(int64_t) SConvert 1205 1207: 24(int64_t) IAdd 1204 1206 Store 1203(var69) 1207 1209: 36(int) Load 918(var1) 1210:898(int16_t) Load 986(var25) 1211: 30(int) SConvert 1210 1212: 36(int) Bitcast 1211 1213: 36(int) IAdd 1209 1212 Store 1208(var70) 1213 1215: 42(int64_t) Load 922(var3) 1216:898(int16_t) Load 986(var25) 1217: 24(int64_t) SConvert 1216 1218: 42(int64_t) Bitcast 1217 1219: 42(int64_t) IAdd 1215 1218 Store 1214(var71) 1219 1221: 48(float) Load 924(var4) 1222:898(int16_t) Load 986(var25) 1223: 48(float) ConvertSToF 1222 1224: 48(float) FAdd 1221 1223 Store 1220(var72) 1224 1226:54(float64_t) Load 926(var5) 1227:898(int16_t) Load 986(var25) 1228:54(float64_t) ConvertSToF 1227 1229:54(float64_t) FAdd 1226 1228 Store 1225(var73) 1229 1231: 176(ivec2) Load 928(var6) 1232: 988(i8vec2) Load 990(var26) 1233: 176(ivec2) SConvert 1232 1234: 176(ivec2) IAdd 1231 1233 Store 1230(var74) 1234 1236:110(i64vec2) Load 934(var8) 1237: 988(i8vec2) Load 990(var26) 1238:110(i64vec2) SConvert 1237 1239:110(i64vec2) IAdd 1236 1238 Store 1235(var75) 1239 1241: 106(ivec2) Load 931(var7) 1242: 988(i8vec2) Load 990(var26) 1243: 176(ivec2) SConvert 1242 1244: 106(ivec2) Bitcast 1243 1245: 106(ivec2) IAdd 1241 1244 Store 1240(var76) 1245 1247:114(i64vec2) Load 937(var9) 1248: 988(i8vec2) Load 990(var26) 1249:110(i64vec2) SConvert 1248 1250:114(i64vec2) Bitcast 1249 1251:114(i64vec2) IAdd 1247 1250 Store 1246(var77) 1251 1253: 84(fvec2) Load 940(var10) 1254: 988(i8vec2) Load 990(var26) 1255: 84(fvec2) ConvertSToF 1254 1256: 84(fvec2) FAdd 1253 1255 Store 1252(var78) 1256 1258:121(f64vec2) Load 943(var11) 1259: 988(i8vec2) Load 990(var26) 1260:121(f64vec2) ConvertSToF 1259 1261:121(f64vec2) FAdd 1258 1260 Store 1257(var79) 1261 1263: 176(ivec2) Load 928(var6) 1264:993(i16vec2) Load 995(var27) 1265: 176(ivec2) SConvert 1264 1266: 176(ivec2) IAdd 1263 1265 Store 1262(var80) 1266 1268:110(i64vec2) Load 934(var8) 1269:993(i16vec2) Load 995(var27) 1270:110(i64vec2) SConvert 1269 1271:110(i64vec2) IAdd 1268 1270 Store 1267(var81) 1271 1273: 106(ivec2) Load 931(var7) 1274:993(i16vec2) Load 995(var27) 1275: 176(ivec2) SConvert 1274 1276: 106(ivec2) Bitcast 1275 1277: 106(ivec2) IAdd 1273 1276 Store 1272(var82) 1277 1279:114(i64vec2) Load 937(var9) 1280:993(i16vec2) Load 995(var27) 1281:110(i64vec2) SConvert 1280 1282:114(i64vec2) Bitcast 1281 1283:114(i64vec2) IAdd 1279 1282 Store 1278(var83) 1283 1285: 84(fvec2) Load 940(var10) 1286:993(i16vec2) Load 995(var27) 1287: 84(fvec2) ConvertSToF 1286 1288: 84(fvec2) FAdd 1285 1287 Store 1284(var84) 1288 1290:121(f64vec2) Load 943(var11) 1291:993(i16vec2) Load 995(var27) 1292:121(f64vec2) ConvertSToF 1291 1293:121(f64vec2) FAdd 1290 1292 Store 1289(var85) 1293 1295: 191(ivec3) Load 946(var12) 1296: 998(i8vec3) Load 1000(var28) 1297: 191(ivec3) SConvert 1296 1298: 191(ivec3) IAdd 1295 1297 Store 1294(var86) 1298 1300:129(i64vec3) Load 952(var14) 1301: 998(i8vec3) Load 1000(var28) 1302:129(i64vec3) SConvert 1301 1303:129(i64vec3) IAdd 1300 1302 Store 1299(var87) 1303 1305: 125(ivec3) Load 949(var13) 1306: 998(i8vec3) Load 1000(var28) 1307: 191(ivec3) SConvert 1306 1308: 125(ivec3) Bitcast 1307 1309: 125(ivec3) IAdd 1305 1308 Store 1304(var88) 1309 1311:133(i64vec3) Load 955(var15) 1312: 998(i8vec3) Load 1000(var28) 1313:129(i64vec3) SConvert 1312 1314:133(i64vec3) Bitcast 1313 1315:133(i64vec3) IAdd 1311 1314 Store 1310(var89) 1315 1317: 137(fvec3) Load 958(var16) 1318: 998(i8vec3) Load 1000(var28) 1319: 137(fvec3) ConvertSToF 1318 1320: 137(fvec3) FAdd 1317 1319 Store 1316(var90) 1320 1322:141(f64vec3) Load 961(var17) 1323: 998(i8vec3) Load 1000(var28) 1324:141(f64vec3) ConvertSToF 1323 1325:141(f64vec3) FAdd 1322 1324 Store 1321(var91) 1325 1327: 125(ivec3) Load 949(var13) 1328:1003(i16vec3) Load 1005(var29) 1329: 191(ivec3) SConvert 1328 1330: 125(ivec3) Bitcast 1329 1331: 125(ivec3) IAdd 1327 1330 Store 1326(var92) 1331 1333:133(i64vec3) Load 955(var15) 1334:1003(i16vec3) Load 1005(var29) 1335:129(i64vec3) SConvert 1334 1336:133(i64vec3) Bitcast 1335 1337:133(i64vec3) IAdd 1333 1336 Store 1332(var93) 1337 1339: 137(fvec3) Load 958(var16) 1340:1003(i16vec3) Load 1005(var29) 1341: 137(fvec3) ConvertSToF 1340 1342: 137(fvec3) FAdd 1339 1341 Store 1338(var94) 1342 1344:141(f64vec3) Load 961(var17) 1345:1003(i16vec3) Load 1005(var29) 1346:141(f64vec3) ConvertSToF 1345 1347:141(f64vec3) FAdd 1344 1346 Store 1343(var95) 1347 1349: 204(ivec4) Load 964(var18) 1350:1008(i8vec4) Load 1010(var30) 1351: 204(ivec4) SConvert 1350 1352: 204(ivec4) IAdd 1349 1351 Store 1348(var96) 1352 1354:149(i64vec4) Load 970(var20) 1355:1008(i8vec4) Load 1010(var30) 1356:149(i64vec4) SConvert 1355 1357:149(i64vec4) IAdd 1354 1356 Store 1353(var97) 1357 1359: 145(ivec4) Load 967(var19) 1360:1008(i8vec4) Load 1010(var30) 1361: 204(ivec4) SConvert 1360 1362: 145(ivec4) Bitcast 1361 1363: 145(ivec4) IAdd 1359 1362 Store 1358(var98) 1363 1365:153(i64vec4) Load 973(var21) 1366:1008(i8vec4) Load 1010(var30) 1367:149(i64vec4) SConvert 1366 1368:153(i64vec4) Bitcast 1367 1369:153(i64vec4) IAdd 1365 1368 Store 1364(var99) 1369 1371: 88(fvec4) Load 976(var22) 1372:1008(i8vec4) Load 1010(var30) 1373: 88(fvec4) ConvertSToF 1372 1374: 88(fvec4) FAdd 1371 1373 Store 1370(var100) 1374 1376:160(f64vec4) Load 979(var23) 1377:1008(i8vec4) Load 1010(var30) 1378:160(f64vec4) ConvertSToF 1377 1379:160(f64vec4) FAdd 1376 1378 Store 1375(var101) 1379 1381: 145(ivec4) Load 967(var19) 1382:1013(i16vec4) Load 1015(var31) 1383: 204(ivec4) SConvert 1382 1384: 145(ivec4) Bitcast 1383 1385: 145(ivec4) IAdd 1381 1384 Store 1380(var102) 1385 1387:153(i64vec4) Load 973(var21) 1388:1013(i16vec4) Load 1015(var31) 1389:149(i64vec4) SConvert 1388 1390:153(i64vec4) Bitcast 1389 1391:153(i64vec4) IAdd 1387 1390 Store 1386(var103) 1391 1393: 88(fvec4) Load 976(var22) 1394:1013(i16vec4) Load 1015(var31) 1395: 88(fvec4) ConvertSToF 1394 1396: 88(fvec4) FAdd 1393 1395 Store 1392(var104) 1396 1398:160(f64vec4) Load 979(var23) 1399:1013(i16vec4) Load 1015(var31) 1400:160(f64vec4) ConvertSToF 1399 1401:160(f64vec4) FAdd 1398 1400 Store 1397(var105) 1401 1403: 42(int64_t) Load 922(var3) 1404: 24(int64_t) Load 920(var2) 1405: 42(int64_t) Bitcast 1404 1406: 42(int64_t) IAdd 1403 1405 Store 1402(var106) 1406 1408:54(float64_t) Load 926(var5) 1409: 24(int64_t) Load 920(var2) 1410:54(float64_t) ConvertSToF 1409 1411:54(float64_t) FAdd 1408 1410 Store 1407(var107) 1411 1413:114(i64vec2) Load 937(var9) 1414:110(i64vec2) Load 934(var8) 1415:114(i64vec2) Bitcast 1414 1416:114(i64vec2) IAdd 1413 1415 Store 1412(var108) 1416 1418:121(f64vec2) Load 943(var11) 1419:110(i64vec2) Load 934(var8) 1420:121(f64vec2) ConvertSToF 1419 1421:121(f64vec2) FAdd 1418 1420 Store 1417(var109) 1421 1423:133(i64vec3) Load 955(var15) 1424:129(i64vec3) Load 952(var14) 1425:133(i64vec3) Bitcast 1424 1426:133(i64vec3) IAdd 1423 1425 Store 1422(var110) 1426 1428:141(f64vec3) Load 961(var17) 1429:129(i64vec3) Load 952(var14) 1430:141(f64vec3) ConvertSToF 1429 1431:141(f64vec3) FAdd 1428 1430 Store 1427(var111) 1431 1433:153(i64vec4) Load 973(var21) 1434:149(i64vec4) Load 970(var20) 1435:153(i64vec4) Bitcast 1434 1436:153(i64vec4) IAdd 1433 1435 Store 1432(var112) 1436 1438:160(f64vec4) Load 979(var23) 1439:149(i64vec4) Load 970(var20) 1440:160(f64vec4) ConvertSToF 1439 1441:160(f64vec4) FAdd 1438 1440 Store 1437(var113) 1441 1443: 42(int64_t) Load 922(var3) 1444: 36(int) Load 918(var1) 1445: 42(int64_t) UConvert 1444 1446: 42(int64_t) IAdd 1443 1445 Store 1442(var114) 1446 1448: 48(float) Load 924(var4) 1449: 36(int) Load 918(var1) 1450: 48(float) ConvertUToF 1449 1451: 48(float) FAdd 1448 1450 Store 1447(var115) 1451 1453:54(float64_t) Load 926(var5) 1454: 36(int) Load 918(var1) 1455:54(float64_t) ConvertUToF 1454 1456:54(float64_t) FAdd 1453 1455 Store 1452(var116) 1456 1458:114(i64vec2) Load 937(var9) 1459: 106(ivec2) Load 931(var7) 1460:114(i64vec2) UConvert 1459 1461:114(i64vec2) IAdd 1458 1460 Store 1457(var117) 1461 1463: 84(fvec2) Load 940(var10) 1464: 106(ivec2) Load 931(var7) 1465: 84(fvec2) ConvertUToF 1464 1466: 84(fvec2) FAdd 1463 1465 Store 1462(var118) 1466 1468:121(f64vec2) Load 943(var11) 1469: 106(ivec2) Load 931(var7) 1470:121(f64vec2) ConvertUToF 1469 1471:121(f64vec2) FAdd 1468 1470 Store 1467(var119) 1471 1473:133(i64vec3) Load 955(var15) 1474: 125(ivec3) Load 949(var13) 1475:133(i64vec3) UConvert 1474 1476:133(i64vec3) IAdd 1473 1475 Store 1472(var120) 1476 1478: 137(fvec3) Load 958(var16) 1479: 125(ivec3) Load 949(var13) 1480: 137(fvec3) ConvertUToF 1479 1481: 137(fvec3) FAdd 1478 1480 Store 1477(var121) 1481 1483:141(f64vec3) Load 961(var17) 1484: 125(ivec3) Load 949(var13) 1485:141(f64vec3) ConvertUToF 1484 1486:141(f64vec3) FAdd 1483 1485 Store 1482(var122) 1486 1488:153(i64vec4) Load 973(var21) 1489: 145(ivec4) Load 967(var19) 1490:153(i64vec4) UConvert 1489 1491:153(i64vec4) IAdd 1488 1490 Store 1487(var123) 1491 1493: 88(fvec4) Load 976(var22) 1494: 145(ivec4) Load 967(var19) 1495: 88(fvec4) ConvertUToF 1494 1496: 88(fvec4) FAdd 1493 1495 Store 1492(var124) 1496 1498:160(f64vec4) Load 979(var23) 1499: 145(ivec4) Load 967(var19) 1500:160(f64vec4) ConvertUToF 1499 1501:160(f64vec4) FAdd 1498 1500 Store 1497(var125) 1501 1503: 36(int) Load 918(var1) 1504: 892(int8_t) Load 1018(var32) 1505: 36(int) UConvert 1504 1506: 36(int) IAdd 1503 1505 Store 1502(var126) 1506 1508: 42(int64_t) Load 922(var3) 1509: 892(int8_t) Load 1018(var32) 1510: 42(int64_t) UConvert 1509 1511: 42(int64_t) IAdd 1508 1510 Store 1507(var127) 1511 1513: 48(float) Load 924(var4) 1514: 892(int8_t) Load 1018(var32) 1515: 48(float) ConvertUToF 1514 1516: 48(float) FAdd 1513 1515 Store 1512(var128) 1516 1518:54(float64_t) Load 926(var5) 1519: 892(int8_t) Load 1018(var32) 1520:54(float64_t) ConvertUToF 1519 1521:54(float64_t) FAdd 1518 1520 Store 1517(var129) 1521 1523: 36(int) Load 918(var1) 1524:913(int16_t) Load 1021(var33) 1525: 36(int) UConvert 1524 1526: 36(int) IAdd 1523 1525 Store 1522(var130) 1526 1528: 42(int64_t) Load 922(var3) 1529:913(int16_t) Load 1021(var33) 1530: 42(int64_t) UConvert 1529 1531: 42(int64_t) IAdd 1528 1530 Store 1527(var131) 1531 1533: 48(float) Load 924(var4) 1534:913(int16_t) Load 1021(var33) 1535: 48(float) ConvertUToF 1534 1536: 48(float) FAdd 1533 1535 Store 1532(var132) 1536 1538:54(float64_t) Load 926(var5) 1539:913(int16_t) Load 1021(var33) 1540:54(float64_t) ConvertUToF 1539 1541:54(float64_t) FAdd 1538 1540 Store 1537(var133) 1541 1543: 106(ivec2) Load 931(var7) 1544:1023(i8vec2) Load 1025(var34) 1545: 106(ivec2) UConvert 1544 1546: 106(ivec2) IAdd 1543 1545 Store 1542(var134) 1546 1548:114(i64vec2) Load 937(var9) 1549:1023(i8vec2) Load 1025(var34) 1550:114(i64vec2) UConvert 1549 1551:114(i64vec2) IAdd 1548 1550 Store 1547(var135) 1551 1553: 84(fvec2) Load 940(var10) 1554:1023(i8vec2) Load 1025(var34) 1555: 84(fvec2) ConvertUToF 1554 1556: 84(fvec2) FAdd 1553 1555 Store 1552(var136) 1556 1558:121(f64vec2) Load 943(var11) 1559:1023(i8vec2) Load 1025(var34) 1560:121(f64vec2) ConvertUToF 1559 1561:121(f64vec2) FAdd 1558 1560 Store 1557(var137) 1561 1563: 106(ivec2) Load 931(var7) 1564:1028(i16vec2) Load 1030(var35) 1565: 106(ivec2) UConvert 1564 1566: 106(ivec2) IAdd 1563 1565 Store 1562(var138) 1566 1568:114(i64vec2) Load 937(var9) 1569:1028(i16vec2) Load 1030(var35) 1570:114(i64vec2) UConvert 1569 1571:114(i64vec2) IAdd 1568 1570 Store 1567(var139) 1571 1573: 84(fvec2) Load 940(var10) 1574:1028(i16vec2) Load 1030(var35) 1575: 84(fvec2) ConvertUToF 1574 1576: 84(fvec2) FAdd 1573 1575 Store 1572(var140) 1576 1578:121(f64vec2) Load 943(var11) 1579:1028(i16vec2) Load 1030(var35) 1580:121(f64vec2) ConvertUToF 1579 1581:121(f64vec2) FAdd 1578 1580 Store 1577(var141) 1581 1583: 125(ivec3) Load 949(var13) 1584:1033(i8vec3) Load 1035(var36) 1585: 125(ivec3) UConvert 1584 1586: 125(ivec3) IAdd 1583 1585 Store 1582(var142) 1586 1588:133(i64vec3) Load 955(var15) 1589:1033(i8vec3) Load 1035(var36) 1590:133(i64vec3) UConvert 1589 1591:133(i64vec3) IAdd 1588 1590 Store 1587(var143) 1591 1593: 137(fvec3) Load 958(var16) 1594:1033(i8vec3) Load 1035(var36) 1595: 137(fvec3) ConvertUToF 1594 1596: 137(fvec3) FAdd 1593 1595 Store 1592(var144) 1596 1598:141(f64vec3) Load 961(var17) 1599:1033(i8vec3) Load 1035(var36) 1600:141(f64vec3) ConvertUToF 1599 1601:141(f64vec3) FAdd 1598 1600 Store 1597(var145) 1601 1603: 145(ivec4) Load 967(var19) 1604:1038(i8vec4) Load 1040(var37) 1605: 145(ivec4) UConvert 1604 1606: 145(ivec4) IAdd 1603 1605 Store 1602(var146) 1606 1608:153(i64vec4) Load 973(var21) 1609:1038(i8vec4) Load 1040(var37) 1610:153(i64vec4) UConvert 1609 1611:153(i64vec4) IAdd 1608 1610 Store 1607(var147) 1611 1613: 88(fvec4) Load 976(var22) 1614:1038(i8vec4) Load 1040(var37) 1615: 88(fvec4) ConvertUToF 1614 1616: 88(fvec4) FAdd 1613 1615 Store 1612(var148) 1616 1618:160(f64vec4) Load 979(var23) 1619:1038(i8vec4) Load 1040(var37) 1620:160(f64vec4) ConvertUToF 1619 1621:160(f64vec4) FAdd 1618 1620 Store 1617(var149) 1621 1623:54(float64_t) Load 926(var5) 1624: 42(int64_t) Load 922(var3) 1625:54(float64_t) ConvertUToF 1624 1626:54(float64_t) FAdd 1623 1625 Store 1622(var150) 1626 1628:121(f64vec2) Load 943(var11) 1629:114(i64vec2) Load 937(var9) 1630:121(f64vec2) ConvertUToF 1629 1631:121(f64vec2) FAdd 1628 1630 Store 1627(var151) 1631 1633:141(f64vec3) Load 961(var17) 1634:133(i64vec3) Load 955(var15) 1635:141(f64vec3) ConvertUToF 1634 1636:141(f64vec3) FAdd 1633 1635 Store 1632(var152) 1636 1638:160(f64vec4) Load 979(var23) 1639:153(i64vec4) Load 973(var21) 1640:160(f64vec4) ConvertUToF 1639 1641:160(f64vec4) FAdd 1638 1640 Store 1637(var153) 1641 1643:54(float64_t) Load 926(var5) 1644: 48(float) Load 924(var4) 1645:54(float64_t) FConvert 1644 1646:54(float64_t) FAdd 1643 1645 Store 1642(var154) 1646 1648:121(f64vec2) Load 943(var11) 1649: 84(fvec2) Load 940(var10) 1650:121(f64vec2) FConvert 1649 1651:121(f64vec2) FAdd 1648 1650 Store 1647(var155) 1651 1653:141(f64vec3) Load 961(var17) 1654: 137(fvec3) Load 958(var16) 1655:141(f64vec3) FConvert 1654 1656:141(f64vec3) FAdd 1653 1655 Store 1652(var156) 1656 1658:160(f64vec4) Load 979(var23) 1659: 88(fvec4) Load 976(var22) 1660:160(f64vec4) FConvert 1659 1661:160(f64vec4) FAdd 1658 1660 Store 1657(var157) 1661 1663: 48(float) Load 924(var4) 1664:1043(float16_t) Load 1045(var38) 1665: 48(float) FConvert 1664 1666: 48(float) FAdd 1663 1665 Store 1662(var158) 1666 1668:54(float64_t) Load 926(var5) 1669:1043(float16_t) Load 1045(var38) 1670:54(float64_t) FConvert 1669 1671:54(float64_t) FAdd 1668 1670 Store 1667(var159) 1671 1673: 84(fvec2) Load 940(var10) 1674:1047(f16vec2) Load 1049(var39) 1675: 84(fvec2) FConvert 1674 1676: 84(fvec2) FAdd 1673 1675 Store 1672(var160) 1676 1678:121(f64vec2) Load 943(var11) 1679:1047(f16vec2) Load 1049(var39) 1680:121(f64vec2) FConvert 1679 1681:121(f64vec2) FAdd 1678 1680 Store 1677(var161) 1681 1683: 137(fvec3) Load 958(var16) 1684:1052(f16vec3) Load 1054(var40) 1685: 137(fvec3) FConvert 1684 1686: 137(fvec3) FAdd 1683 1685 Store 1682(var162) 1686 1688:141(f64vec3) Load 961(var17) 1689:1052(f16vec3) Load 1054(var40) 1690:141(f64vec3) FConvert 1689 1691:141(f64vec3) FAdd 1688 1690 Store 1687(var163) 1691 1693: 88(fvec4) Load 976(var22) 1694:1057(f16vec4) Load 1059(var41) 1695: 88(fvec4) FConvert 1694 1696: 88(fvec4) FAdd 1693 1695 Store 1692(var164) 1696 1698:160(f64vec4) Load 979(var23) 1699:1057(f16vec4) Load 1059(var41) 1700:160(f64vec4) FConvert 1699 1701:160(f64vec4) FAdd 1698 1700 Store 1697(var165) 1701 1703: 36(int) Load 918(var1) 1704: 30(int) Load 917(var0) 1705: 36(int) Bitcast 1704 1706: 36(int) ISub 1703 1705 Store 1702(var166) 1706 1708: 24(int64_t) Load 920(var2) 1709: 30(int) Load 917(var0) 1710: 24(int64_t) SConvert 1709 1711: 24(int64_t) ISub 1708 1710 Store 1707(var167) 1711 1713: 42(int64_t) Load 922(var3) 1714: 30(int) Load 917(var0) 1715: 24(int64_t) SConvert 1714 1716: 42(int64_t) Bitcast 1715 1717: 42(int64_t) ISub 1713 1716 Store 1712(var168) 1717 1719: 48(float) Load 924(var4) 1720: 30(int) Load 917(var0) 1721: 48(float) ConvertSToF 1720 1722: 48(float) FSub 1719 1721 Store 1718(var169) 1722 1724:54(float64_t) Load 926(var5) 1725: 30(int) Load 917(var0) 1726:54(float64_t) ConvertSToF 1725 1727:54(float64_t) FSub 1724 1726 Store 1723(var170) 1727 1729: 106(ivec2) Load 931(var7) 1730: 176(ivec2) Load 928(var6) 1731: 106(ivec2) Bitcast 1730 1732: 106(ivec2) ISub 1729 1731 Store 1728(var171) 1732 1734:110(i64vec2) Load 934(var8) 1735: 176(ivec2) Load 928(var6) 1736:110(i64vec2) SConvert 1735 1737:110(i64vec2) ISub 1734 1736 Store 1733(var172) 1737 1739:114(i64vec2) Load 937(var9) 1740: 176(ivec2) Load 928(var6) 1741:110(i64vec2) SConvert 1740 1742:114(i64vec2) Bitcast 1741 1743:114(i64vec2) ISub 1739 1742 Store 1738(var173) 1743 1745: 84(fvec2) Load 940(var10) 1746: 176(ivec2) Load 928(var6) 1747: 84(fvec2) ConvertSToF 1746 1748: 84(fvec2) FSub 1745 1747 Store 1744(var174) 1748 1750:121(f64vec2) Load 943(var11) 1751: 176(ivec2) Load 928(var6) 1752:121(f64vec2) ConvertSToF 1751 1753:121(f64vec2) FSub 1750 1752 Store 1749(var175) 1753 1755: 125(ivec3) Load 949(var13) 1756: 191(ivec3) Load 946(var12) 1757: 125(ivec3) Bitcast 1756 1758: 125(ivec3) ISub 1755 1757 Store 1754(var176) 1758 1760:129(i64vec3) Load 952(var14) 1761: 191(ivec3) Load 946(var12) 1762:129(i64vec3) SConvert 1761 1763:129(i64vec3) ISub 1760 1762 Store 1759(var177) 1763 1765:133(i64vec3) Load 955(var15) 1766: 191(ivec3) Load 946(var12) 1767:129(i64vec3) SConvert 1766 1768:133(i64vec3) Bitcast 1767 1769:133(i64vec3) ISub 1765 1768 Store 1764(var178) 1769 1771: 137(fvec3) Load 958(var16) 1772: 191(ivec3) Load 946(var12) 1773: 137(fvec3) ConvertSToF 1772 1774: 137(fvec3) FSub 1771 1773 Store 1770(var179) 1774 1776:141(f64vec3) Load 961(var17) 1777: 191(ivec3) Load 946(var12) 1778:141(f64vec3) ConvertSToF 1777 1779:141(f64vec3) FSub 1776 1778 Store 1775(var180) 1779 1781: 145(ivec4) Load 967(var19) 1782: 204(ivec4) Load 964(var18) 1783: 145(ivec4) Bitcast 1782 1784: 145(ivec4) ISub 1781 1783 Store 1780(var181) 1784 1786:149(i64vec4) Load 970(var20) 1787: 204(ivec4) Load 964(var18) 1788:149(i64vec4) SConvert 1787 1789:149(i64vec4) ISub 1786 1788 Store 1785(var182) 1789 1791:153(i64vec4) Load 973(var21) 1792: 204(ivec4) Load 964(var18) 1793:149(i64vec4) SConvert 1792 1794:153(i64vec4) Bitcast 1793 1795:153(i64vec4) ISub 1791 1794 Store 1790(var183) 1795 1797: 88(fvec4) Load 976(var22) 1798: 204(ivec4) Load 964(var18) 1799: 88(fvec4) ConvertSToF 1798 1800: 88(fvec4) FSub 1797 1799 Store 1796(var184) 1800 1802:160(f64vec4) Load 979(var23) 1803: 204(ivec4) Load 964(var18) 1804:160(f64vec4) ConvertSToF 1803 1805:160(f64vec4) FSub 1802 1804 Store 1801(var185) 1805 1807: 30(int) Load 917(var0) 1808: 982(int8_t) Load 984(var24) 1809: 30(int) SConvert 1808 1810: 30(int) ISub 1807 1809 Store 1806(var186) 1810 1812: 24(int64_t) Load 920(var2) 1813: 982(int8_t) Load 984(var24) 1814: 24(int64_t) SConvert 1813 1815: 24(int64_t) ISub 1812 1814 Store 1811(var187) 1815 1817: 36(int) Load 918(var1) 1818: 982(int8_t) Load 984(var24) 1819: 30(int) SConvert 1818 1820: 36(int) Bitcast 1819 1821: 36(int) ISub 1817 1820 Store 1816(var188) 1821 1823: 42(int64_t) Load 922(var3) 1824: 982(int8_t) Load 984(var24) 1825: 24(int64_t) SConvert 1824 1826: 42(int64_t) Bitcast 1825 1827: 42(int64_t) ISub 1823 1826 Store 1822(var189) 1827 1829: 48(float) Load 924(var4) 1830: 982(int8_t) Load 984(var24) 1831: 48(float) ConvertSToF 1830 1832: 48(float) FSub 1829 1831 Store 1828(var190) 1832 1834:54(float64_t) Load 926(var5) 1835: 982(int8_t) Load 984(var24) 1836:54(float64_t) ConvertSToF 1835 1837:54(float64_t) FSub 1834 1836 Store 1833(var191) 1837 1839: 30(int) Load 917(var0) 1840:898(int16_t) Load 986(var25) 1841: 30(int) SConvert 1840 1842: 30(int) ISub 1839 1841 Store 1838(var192) 1842 1844: 24(int64_t) Load 920(var2) 1845:898(int16_t) Load 986(var25) 1846: 24(int64_t) SConvert 1845 1847: 24(int64_t) ISub 1844 1846 Store 1843(var193) 1847 1849: 36(int) Load 918(var1) 1850:898(int16_t) Load 986(var25) 1851: 30(int) SConvert 1850 1852: 36(int) Bitcast 1851 1853: 36(int) ISub 1849 1852 Store 1848(var194) 1853 1855: 42(int64_t) Load 922(var3) 1856:898(int16_t) Load 986(var25) 1857: 24(int64_t) SConvert 1856 1858: 42(int64_t) Bitcast 1857 1859: 42(int64_t) ISub 1855 1858 Store 1854(var195) 1859 1861: 48(float) Load 924(var4) 1862:898(int16_t) Load 986(var25) 1863: 48(float) ConvertSToF 1862 1864: 48(float) FSub 1861 1863 Store 1860(var196) 1864 1866:54(float64_t) Load 926(var5) 1867:898(int16_t) Load 986(var25) 1868:54(float64_t) ConvertSToF 1867 1869:54(float64_t) FSub 1866 1868 Store 1865(var197) 1869 1871: 176(ivec2) Load 928(var6) 1872: 988(i8vec2) Load 990(var26) 1873: 176(ivec2) SConvert 1872 1874: 176(ivec2) ISub 1871 1873 Store 1870(var198) 1874 1876:110(i64vec2) Load 934(var8) 1877: 988(i8vec2) Load 990(var26) 1878:110(i64vec2) SConvert 1877 1879:110(i64vec2) ISub 1876 1878 Store 1875(var199) 1879 1881: 106(ivec2) Load 931(var7) 1882: 988(i8vec2) Load 990(var26) 1883: 176(ivec2) SConvert 1882 1884: 106(ivec2) Bitcast 1883 1885: 106(ivec2) ISub 1881 1884 Store 1880(var200) 1885 1887:114(i64vec2) Load 937(var9) 1888: 988(i8vec2) Load 990(var26) 1889:110(i64vec2) SConvert 1888 1890:114(i64vec2) Bitcast 1889 1891:114(i64vec2) ISub 1887 1890 Store 1886(var201) 1891 1893: 84(fvec2) Load 940(var10) 1894: 988(i8vec2) Load 990(var26) 1895: 84(fvec2) ConvertSToF 1894 1896: 84(fvec2) FSub 1893 1895 Store 1892(var202) 1896 1898:121(f64vec2) Load 943(var11) 1899: 988(i8vec2) Load 990(var26) 1900:121(f64vec2) ConvertSToF 1899 1901:121(f64vec2) FSub 1898 1900 Store 1897(var203) 1901 1903: 176(ivec2) Load 928(var6) 1904:993(i16vec2) Load 995(var27) 1905: 176(ivec2) SConvert 1904 1906: 176(ivec2) ISub 1903 1905 Store 1902(var204) 1906 1908:110(i64vec2) Load 934(var8) 1909:993(i16vec2) Load 995(var27) 1910:110(i64vec2) SConvert 1909 1911:110(i64vec2) ISub 1908 1910 Store 1907(var205) 1911 1913: 106(ivec2) Load 931(var7) 1914:993(i16vec2) Load 995(var27) 1915: 176(ivec2) SConvert 1914 1916: 106(ivec2) Bitcast 1915 1917: 106(ivec2) ISub 1913 1916 Store 1912(var206) 1917 1919:114(i64vec2) Load 937(var9) 1920:993(i16vec2) Load 995(var27) 1921:110(i64vec2) SConvert 1920 1922:114(i64vec2) Bitcast 1921 1923:114(i64vec2) ISub 1919 1922 Store 1918(var207) 1923 1925: 84(fvec2) Load 940(var10) 1926:993(i16vec2) Load 995(var27) 1927: 84(fvec2) ConvertSToF 1926 1928: 84(fvec2) FSub 1925 1927 Store 1924(var208) 1928 1930:121(f64vec2) Load 943(var11) 1931:993(i16vec2) Load 995(var27) 1932:121(f64vec2) ConvertSToF 1931 1933:121(f64vec2) FSub 1930 1932 Store 1929(var209) 1933 1935: 191(ivec3) Load 946(var12) 1936: 998(i8vec3) Load 1000(var28) 1937: 191(ivec3) SConvert 1936 1938: 191(ivec3) ISub 1935 1937 Store 1934(var210) 1938 1940:129(i64vec3) Load 952(var14) 1941: 998(i8vec3) Load 1000(var28) 1942:129(i64vec3) SConvert 1941 1943:129(i64vec3) ISub 1940 1942 Store 1939(var211) 1943 1945: 125(ivec3) Load 949(var13) 1946: 998(i8vec3) Load 1000(var28) 1947: 191(ivec3) SConvert 1946 1948: 125(ivec3) Bitcast 1947 1949: 125(ivec3) ISub 1945 1948 Store 1944(var212) 1949 1951:133(i64vec3) Load 955(var15) 1952: 998(i8vec3) Load 1000(var28) 1953:129(i64vec3) SConvert 1952 1954:133(i64vec3) Bitcast 1953 1955:133(i64vec3) ISub 1951 1954 Store 1950(var213) 1955 1957: 137(fvec3) Load 958(var16) 1958: 998(i8vec3) Load 1000(var28) 1959: 137(fvec3) ConvertSToF 1958 1960: 137(fvec3) FSub 1957 1959 Store 1956(var214) 1960 1962:141(f64vec3) Load 961(var17) 1963: 998(i8vec3) Load 1000(var28) 1964:141(f64vec3) ConvertSToF 1963 1965:141(f64vec3) FSub 1962 1964 Store 1961(var215) 1965 1967: 125(ivec3) Load 949(var13) 1968:1003(i16vec3) Load 1005(var29) 1969: 191(ivec3) SConvert 1968 1970: 125(ivec3) Bitcast 1969 1971: 125(ivec3) ISub 1967 1970 Store 1966(var216) 1971 1973:133(i64vec3) Load 955(var15) 1974:1003(i16vec3) Load 1005(var29) 1975:129(i64vec3) SConvert 1974 1976:133(i64vec3) Bitcast 1975 1977:133(i64vec3) ISub 1973 1976 Store 1972(var217) 1977 1979: 137(fvec3) Load 958(var16) 1980:1003(i16vec3) Load 1005(var29) 1981: 137(fvec3) ConvertSToF 1980 1982: 137(fvec3) FSub 1979 1981 Store 1978(var218) 1982 1984:141(f64vec3) Load 961(var17) 1985:1003(i16vec3) Load 1005(var29) 1986:141(f64vec3) ConvertSToF 1985 1987:141(f64vec3) FSub 1984 1986 Store 1983(var219) 1987 1989: 204(ivec4) Load 964(var18) 1990:1008(i8vec4) Load 1010(var30) 1991: 204(ivec4) SConvert 1990 1992: 204(ivec4) ISub 1989 1991 Store 1988(var220) 1992 1994:149(i64vec4) Load 970(var20) 1995:1008(i8vec4) Load 1010(var30) 1996:149(i64vec4) SConvert 1995 1997:149(i64vec4) ISub 1994 1996 Store 1993(var221) 1997 1999: 145(ivec4) Load 967(var19) 2000:1008(i8vec4) Load 1010(var30) 2001: 204(ivec4) SConvert 2000 2002: 145(ivec4) Bitcast 2001 2003: 145(ivec4) ISub 1999 2002 Store 1998(var222) 2003 2005:153(i64vec4) Load 973(var21) 2006:1008(i8vec4) Load 1010(var30) 2007:149(i64vec4) SConvert 2006 2008:153(i64vec4) Bitcast 2007 2009:153(i64vec4) ISub 2005 2008 Store 2004(var223) 2009 2011: 88(fvec4) Load 976(var22) 2012:1008(i8vec4) Load 1010(var30) 2013: 88(fvec4) ConvertSToF 2012 2014: 88(fvec4) FSub 2011 2013 Store 2010(var224) 2014 2016:160(f64vec4) Load 979(var23) 2017:1008(i8vec4) Load 1010(var30) 2018:160(f64vec4) ConvertSToF 2017 2019:160(f64vec4) FSub 2016 2018 Store 2015(var225) 2019 2021: 145(ivec4) Load 967(var19) 2022:1013(i16vec4) Load 1015(var31) 2023: 204(ivec4) SConvert 2022 2024: 145(ivec4) Bitcast 2023 2025: 145(ivec4) ISub 2021 2024 Store 2020(var226) 2025 2027:153(i64vec4) Load 973(var21) 2028:1013(i16vec4) Load 1015(var31) 2029:149(i64vec4) SConvert 2028 2030:153(i64vec4) Bitcast 2029 2031:153(i64vec4) ISub 2027 2030 Store 2026(var227) 2031 2033: 88(fvec4) Load 976(var22) 2034:1013(i16vec4) Load 1015(var31) 2035: 88(fvec4) ConvertSToF 2034 2036: 88(fvec4) FSub 2033 2035 Store 2032(var228) 2036 2038:160(f64vec4) Load 979(var23) 2039:1013(i16vec4) Load 1015(var31) 2040:160(f64vec4) ConvertSToF 2039 2041:160(f64vec4) FSub 2038 2040 Store 2037(var229) 2041 2043: 42(int64_t) Load 922(var3) 2044: 24(int64_t) Load 920(var2) 2045: 42(int64_t) Bitcast 2044 2046: 42(int64_t) ISub 2043 2045 Store 2042(var230) 2046 2048:54(float64_t) Load 926(var5) 2049: 24(int64_t) Load 920(var2) 2050:54(float64_t) ConvertSToF 2049 2051:54(float64_t) FSub 2048 2050 Store 2047(var231) 2051 2053:114(i64vec2) Load 937(var9) 2054:110(i64vec2) Load 934(var8) 2055:114(i64vec2) Bitcast 2054 2056:114(i64vec2) ISub 2053 2055 Store 2052(var232) 2056 2058:121(f64vec2) Load 943(var11) 2059:110(i64vec2) Load 934(var8) 2060:121(f64vec2) ConvertSToF 2059 2061:121(f64vec2) FSub 2058 2060 Store 2057(var233) 2061 2063:133(i64vec3) Load 955(var15) 2064:129(i64vec3) Load 952(var14) 2065:133(i64vec3) Bitcast 2064 2066:133(i64vec3) ISub 2063 2065 Store 2062(var234) 2066 2068:141(f64vec3) Load 961(var17) 2069:129(i64vec3) Load 952(var14) 2070:141(f64vec3) ConvertSToF 2069 2071:141(f64vec3) FSub 2068 2070 Store 2067(var235) 2071 2073:153(i64vec4) Load 973(var21) 2074:149(i64vec4) Load 970(var20) 2075:153(i64vec4) Bitcast 2074 2076:153(i64vec4) ISub 2073 2075 Store 2072(var236) 2076 2078:160(f64vec4) Load 979(var23) 2079:149(i64vec4) Load 970(var20) 2080:160(f64vec4) ConvertSToF 2079 2081:160(f64vec4) FSub 2078 2080 Store 2077(var237) 2081 2083: 42(int64_t) Load 922(var3) 2084: 36(int) Load 918(var1) 2085: 42(int64_t) UConvert 2084 2086: 42(int64_t) ISub 2083 2085 Store 2082(var238) 2086 2088: 48(float) Load 924(var4) 2089: 36(int) Load 918(var1) 2090: 48(float) ConvertUToF 2089 2091: 48(float) FSub 2088 2090 Store 2087(var239) 2091 2093:54(float64_t) Load 926(var5) 2094: 36(int) Load 918(var1) 2095:54(float64_t) ConvertUToF 2094 2096:54(float64_t) FSub 2093 2095 Store 2092(var240) 2096 2098:114(i64vec2) Load 937(var9) 2099: 106(ivec2) Load 931(var7) 2100:114(i64vec2) UConvert 2099 2101:114(i64vec2) ISub 2098 2100 Store 2097(var241) 2101 2103: 84(fvec2) Load 940(var10) 2104: 106(ivec2) Load 931(var7) 2105: 84(fvec2) ConvertUToF 2104 2106: 84(fvec2) FSub 2103 2105 Store 2102(var242) 2106 2108:121(f64vec2) Load 943(var11) 2109: 106(ivec2) Load 931(var7) 2110:121(f64vec2) ConvertUToF 2109 2111:121(f64vec2) FSub 2108 2110 Store 2107(var243) 2111 2113:133(i64vec3) Load 955(var15) 2114: 125(ivec3) Load 949(var13) 2115:133(i64vec3) UConvert 2114 2116:133(i64vec3) ISub 2113 2115 Store 2112(var244) 2116 2118: 137(fvec3) Load 958(var16) 2119: 125(ivec3) Load 949(var13) 2120: 137(fvec3) ConvertUToF 2119 2121: 137(fvec3) FSub 2118 2120 Store 2117(var245) 2121 2123:141(f64vec3) Load 961(var17) 2124: 125(ivec3) Load 949(var13) 2125:141(f64vec3) ConvertUToF 2124 2126:141(f64vec3) FSub 2123 2125 Store 2122(var246) 2126 2128:153(i64vec4) Load 973(var21) 2129: 145(ivec4) Load 967(var19) 2130:153(i64vec4) UConvert 2129 2131:153(i64vec4) ISub 2128 2130 Store 2127(var247) 2131 2133: 88(fvec4) Load 976(var22) 2134: 145(ivec4) Load 967(var19) 2135: 88(fvec4) ConvertUToF 2134 2136: 88(fvec4) FSub 2133 2135 Store 2132(var248) 2136 2138:160(f64vec4) Load 979(var23) 2139: 145(ivec4) Load 967(var19) 2140:160(f64vec4) ConvertUToF 2139 2141:160(f64vec4) FSub 2138 2140 Store 2137(var249) 2141 2143: 36(int) Load 918(var1) 2144: 892(int8_t) Load 1018(var32) 2145: 36(int) UConvert 2144 2146: 36(int) ISub 2143 2145 Store 2142(var250) 2146 2148: 42(int64_t) Load 922(var3) 2149: 892(int8_t) Load 1018(var32) 2150: 42(int64_t) UConvert 2149 2151: 42(int64_t) ISub 2148 2150 Store 2147(var251) 2151 2153: 48(float) Load 924(var4) 2154: 892(int8_t) Load 1018(var32) 2155: 48(float) ConvertUToF 2154 2156: 48(float) FSub 2153 2155 Store 2152(var252) 2156 2158:54(float64_t) Load 926(var5) 2159: 892(int8_t) Load 1018(var32) 2160:54(float64_t) ConvertUToF 2159 2161:54(float64_t) FSub 2158 2160 Store 2157(var253) 2161 2163: 36(int) Load 918(var1) 2164:913(int16_t) Load 1021(var33) 2165: 36(int) UConvert 2164 2166: 36(int) ISub 2163 2165 Store 2162(var254) 2166 2168: 42(int64_t) Load 922(var3) 2169:913(int16_t) Load 1021(var33) 2170: 42(int64_t) UConvert 2169 2171: 42(int64_t) ISub 2168 2170 Store 2167(var255) 2171 2173: 48(float) Load 924(var4) 2174:913(int16_t) Load 1021(var33) 2175: 48(float) ConvertUToF 2174 2176: 48(float) FSub 2173 2175 Store 2172(var256) 2176 2178:54(float64_t) Load 926(var5) 2179:913(int16_t) Load 1021(var33) 2180:54(float64_t) ConvertUToF 2179 2181:54(float64_t) FSub 2178 2180 Store 2177(var257) 2181 2183: 106(ivec2) Load 931(var7) 2184:1023(i8vec2) Load 1025(var34) 2185: 106(ivec2) UConvert 2184 2186: 106(ivec2) ISub 2183 2185 Store 2182(var258) 2186 2188:114(i64vec2) Load 937(var9) 2189:1023(i8vec2) Load 1025(var34) 2190:114(i64vec2) UConvert 2189 2191:114(i64vec2) ISub 2188 2190 Store 2187(var259) 2191 2193: 84(fvec2) Load 940(var10) 2194:1023(i8vec2) Load 1025(var34) 2195: 84(fvec2) ConvertUToF 2194 2196: 84(fvec2) FSub 2193 2195 Store 2192(var260) 2196 2198:121(f64vec2) Load 943(var11) 2199:1023(i8vec2) Load 1025(var34) 2200:121(f64vec2) ConvertUToF 2199 2201:121(f64vec2) FSub 2198 2200 Store 2197(var261) 2201 2203: 106(ivec2) Load 931(var7) 2204:1028(i16vec2) Load 1030(var35) 2205: 106(ivec2) UConvert 2204 2206: 106(ivec2) ISub 2203 2205 Store 2202(var262) 2206 2208:114(i64vec2) Load 937(var9) 2209:1028(i16vec2) Load 1030(var35) 2210:114(i64vec2) UConvert 2209 2211:114(i64vec2) ISub 2208 2210 Store 2207(var263) 2211 2213: 84(fvec2) Load 940(var10) 2214:1028(i16vec2) Load 1030(var35) 2215: 84(fvec2) ConvertUToF 2214 2216: 84(fvec2) FSub 2213 2215 Store 2212(var264) 2216 2218:121(f64vec2) Load 943(var11) 2219:1028(i16vec2) Load 1030(var35) 2220:121(f64vec2) ConvertUToF 2219 2221:121(f64vec2) FSub 2218 2220 Store 2217(var265) 2221 2223: 125(ivec3) Load 949(var13) 2224:1033(i8vec3) Load 1035(var36) 2225: 125(ivec3) UConvert 2224 2226: 125(ivec3) ISub 2223 2225 Store 2222(var266) 2226 2228:133(i64vec3) Load 955(var15) 2229:1033(i8vec3) Load 1035(var36) 2230:133(i64vec3) UConvert 2229 2231:133(i64vec3) ISub 2228 2230 Store 2227(var267) 2231 2233: 137(fvec3) Load 958(var16) 2234:1033(i8vec3) Load 1035(var36) 2235: 137(fvec3) ConvertUToF 2234 2236: 137(fvec3) FSub 2233 2235 Store 2232(var268) 2236 2238:141(f64vec3) Load 961(var17) 2239:1033(i8vec3) Load 1035(var36) 2240:141(f64vec3) ConvertUToF 2239 2241:141(f64vec3) FSub 2238 2240 Store 2237(var269) 2241 2243: 145(ivec4) Load 967(var19) 2244:1038(i8vec4) Load 1040(var37) 2245: 145(ivec4) UConvert 2244 2246: 145(ivec4) ISub 2243 2245 Store 2242(var270) 2246 2248:153(i64vec4) Load 973(var21) 2249:1038(i8vec4) Load 1040(var37) 2250:153(i64vec4) UConvert 2249 2251:153(i64vec4) ISub 2248 2250 Store 2247(var271) 2251 2253: 88(fvec4) Load 976(var22) 2254:1038(i8vec4) Load 1040(var37) 2255: 88(fvec4) ConvertUToF 2254 2256: 88(fvec4) FSub 2253 2255 Store 2252(var272) 2256 2258:160(f64vec4) Load 979(var23) 2259:1038(i8vec4) Load 1040(var37) 2260:160(f64vec4) ConvertUToF 2259 2261:160(f64vec4) FSub 2258 2260 Store 2257(var273) 2261 2263:54(float64_t) Load 926(var5) 2264: 42(int64_t) Load 922(var3) 2265:54(float64_t) ConvertUToF 2264 2266:54(float64_t) FSub 2263 2265 Store 2262(var274) 2266 2268:121(f64vec2) Load 943(var11) 2269:114(i64vec2) Load 937(var9) 2270:121(f64vec2) ConvertUToF 2269 2271:121(f64vec2) FSub 2268 2270 Store 2267(var275) 2271 2273:141(f64vec3) Load 961(var17) 2274:133(i64vec3) Load 955(var15) 2275:141(f64vec3) ConvertUToF 2274 2276:141(f64vec3) FSub 2273 2275 Store 2272(var276) 2276 2278:160(f64vec4) Load 979(var23) 2279:153(i64vec4) Load 973(var21) 2280:160(f64vec4) ConvertUToF 2279 2281:160(f64vec4) FSub 2278 2280 Store 2277(var277) 2281 2283:54(float64_t) Load 926(var5) 2284: 48(float) Load 924(var4) 2285:54(float64_t) FConvert 2284 2286:54(float64_t) FSub 2283 2285 Store 2282(var278) 2286 2288:121(f64vec2) Load 943(var11) 2289: 84(fvec2) Load 940(var10) 2290:121(f64vec2) FConvert 2289 2291:121(f64vec2) FSub 2288 2290 Store 2287(var279) 2291 2293:141(f64vec3) Load 961(var17) 2294: 137(fvec3) Load 958(var16) 2295:141(f64vec3) FConvert 2294 2296:141(f64vec3) FSub 2293 2295 Store 2292(var280) 2296 2298:160(f64vec4) Load 979(var23) 2299: 88(fvec4) Load 976(var22) 2300:160(f64vec4) FConvert 2299 2301:160(f64vec4) FSub 2298 2300 Store 2297(var281) 2301 2303: 48(float) Load 924(var4) 2304:1043(float16_t) Load 1045(var38) 2305: 48(float) FConvert 2304 2306: 48(float) FSub 2303 2305 Store 2302(var282) 2306 2308:54(float64_t) Load 926(var5) 2309:1043(float16_t) Load 1045(var38) 2310:54(float64_t) FConvert 2309 2311:54(float64_t) FSub 2308 2310 Store 2307(var283) 2311 2313: 84(fvec2) Load 940(var10) 2314:1047(f16vec2) Load 1049(var39) 2315: 84(fvec2) FConvert 2314 2316: 84(fvec2) FSub 2313 2315 Store 2312(var284) 2316 2318:121(f64vec2) Load 943(var11) 2319:1047(f16vec2) Load 1049(var39) 2320:121(f64vec2) FConvert 2319 2321:121(f64vec2) FSub 2318 2320 Store 2317(var285) 2321 2323: 137(fvec3) Load 958(var16) 2324:1052(f16vec3) Load 1054(var40) 2325: 137(fvec3) FConvert 2324 2326: 137(fvec3) FSub 2323 2325 Store 2322(var286) 2326 2328:141(f64vec3) Load 961(var17) 2329:1052(f16vec3) Load 1054(var40) 2330:141(f64vec3) FConvert 2329 2331:141(f64vec3) FSub 2328 2330 Store 2327(var287) 2331 2333: 88(fvec4) Load 976(var22) 2334:1057(f16vec4) Load 1059(var41) 2335: 88(fvec4) FConvert 2334 2336: 88(fvec4) FSub 2333 2335 Store 2332(var288) 2336 2338:160(f64vec4) Load 979(var23) 2339:1057(f16vec4) Load 1059(var41) 2340:160(f64vec4) FConvert 2339 2341:160(f64vec4) FSub 2338 2340 Store 2337(var289) 2341 2343: 36(int) Load 918(var1) 2344: 30(int) Load 917(var0) 2345: 36(int) Bitcast 2344 2346: 36(int) IMul 2343 2345 Store 2342(var290) 2346 2348: 24(int64_t) Load 920(var2) 2349: 30(int) Load 917(var0) 2350: 24(int64_t) SConvert 2349 2351: 24(int64_t) IMul 2348 2350 Store 2347(var291) 2351 2353: 42(int64_t) Load 922(var3) 2354: 30(int) Load 917(var0) 2355: 24(int64_t) SConvert 2354 2356: 42(int64_t) Bitcast 2355 2357: 42(int64_t) IMul 2353 2356 Store 2352(var292) 2357 2359: 48(float) Load 924(var4) 2360: 30(int) Load 917(var0) 2361: 48(float) ConvertSToF 2360 2362: 48(float) FMul 2359 2361 Store 2358(var293) 2362 2364:54(float64_t) Load 926(var5) 2365: 30(int) Load 917(var0) 2366:54(float64_t) ConvertSToF 2365 2367:54(float64_t) FMul 2364 2366 Store 2363(var294) 2367 2369: 106(ivec2) Load 931(var7) 2370: 176(ivec2) Load 928(var6) 2371: 106(ivec2) Bitcast 2370 2372: 106(ivec2) IMul 2369 2371 Store 2368(var295) 2372 2374:110(i64vec2) Load 934(var8) 2375: 176(ivec2) Load 928(var6) 2376:110(i64vec2) SConvert 2375 2377:110(i64vec2) IMul 2374 2376 Store 2373(var296) 2377 2379:114(i64vec2) Load 937(var9) 2380: 176(ivec2) Load 928(var6) 2381:110(i64vec2) SConvert 2380 2382:114(i64vec2) Bitcast 2381 2383:114(i64vec2) IMul 2379 2382 Store 2378(var297) 2383 2385: 84(fvec2) Load 940(var10) 2386: 176(ivec2) Load 928(var6) 2387: 84(fvec2) ConvertSToF 2386 2388: 84(fvec2) FMul 2385 2387 Store 2384(var298) 2388 2390:121(f64vec2) Load 943(var11) 2391: 176(ivec2) Load 928(var6) 2392:121(f64vec2) ConvertSToF 2391 2393:121(f64vec2) FMul 2390 2392 Store 2389(var299) 2393 2395: 125(ivec3) Load 949(var13) 2396: 191(ivec3) Load 946(var12) 2397: 125(ivec3) Bitcast 2396 2398: 125(ivec3) IMul 2395 2397 Store 2394(var300) 2398 2400:129(i64vec3) Load 952(var14) 2401: 191(ivec3) Load 946(var12) 2402:129(i64vec3) SConvert 2401 2403:129(i64vec3) IMul 2400 2402 Store 2399(var301) 2403 2405:133(i64vec3) Load 955(var15) 2406: 191(ivec3) Load 946(var12) 2407:129(i64vec3) SConvert 2406 2408:133(i64vec3) Bitcast 2407 2409:133(i64vec3) IMul 2405 2408 Store 2404(var302) 2409 2411: 137(fvec3) Load 958(var16) 2412: 191(ivec3) Load 946(var12) 2413: 137(fvec3) ConvertSToF 2412 2414: 137(fvec3) FMul 2411 2413 Store 2410(var303) 2414 2416:141(f64vec3) Load 961(var17) 2417: 191(ivec3) Load 946(var12) 2418:141(f64vec3) ConvertSToF 2417 2419:141(f64vec3) FMul 2416 2418 Store 2415(var304) 2419 2421: 145(ivec4) Load 967(var19) 2422: 204(ivec4) Load 964(var18) 2423: 145(ivec4) Bitcast 2422 2424: 145(ivec4) IMul 2421 2423 Store 2420(var305) 2424 2426:149(i64vec4) Load 970(var20) 2427: 204(ivec4) Load 964(var18) 2428:149(i64vec4) SConvert 2427 2429:149(i64vec4) IMul 2426 2428 Store 2425(var306) 2429 2431:153(i64vec4) Load 973(var21) 2432: 204(ivec4) Load 964(var18) 2433:149(i64vec4) SConvert 2432 2434:153(i64vec4) Bitcast 2433 2435:153(i64vec4) IMul 2431 2434 Store 2430(var307) 2435 2437: 88(fvec4) Load 976(var22) 2438: 204(ivec4) Load 964(var18) 2439: 88(fvec4) ConvertSToF 2438 2440: 88(fvec4) FMul 2437 2439 Store 2436(var308) 2440 2442:160(f64vec4) Load 979(var23) 2443: 204(ivec4) Load 964(var18) 2444:160(f64vec4) ConvertSToF 2443 2445:160(f64vec4) FMul 2442 2444 Store 2441(var309) 2445 2447: 30(int) Load 917(var0) 2448: 982(int8_t) Load 984(var24) 2449: 30(int) SConvert 2448 2450: 30(int) IMul 2447 2449 Store 2446(var310) 2450 2452: 24(int64_t) Load 920(var2) 2453: 982(int8_t) Load 984(var24) 2454: 24(int64_t) SConvert 2453 2455: 24(int64_t) IMul 2452 2454 Store 2451(var311) 2455 2457: 36(int) Load 918(var1) 2458: 982(int8_t) Load 984(var24) 2459: 30(int) SConvert 2458 2460: 36(int) Bitcast 2459 2461: 36(int) IMul 2457 2460 Store 2456(var312) 2461 2463: 42(int64_t) Load 922(var3) 2464: 982(int8_t) Load 984(var24) 2465: 24(int64_t) SConvert 2464 2466: 42(int64_t) Bitcast 2465 2467: 42(int64_t) IMul 2463 2466 Store 2462(var313) 2467 2469: 48(float) Load 924(var4) 2470: 982(int8_t) Load 984(var24) 2471: 48(float) ConvertSToF 2470 2472: 48(float) FMul 2469 2471 Store 2468(var314) 2472 2474:54(float64_t) Load 926(var5) 2475: 982(int8_t) Load 984(var24) 2476:54(float64_t) ConvertSToF 2475 2477:54(float64_t) FMul 2474 2476 Store 2473(var315) 2477 2479: 30(int) Load 917(var0) 2480:898(int16_t) Load 986(var25) 2481: 30(int) SConvert 2480 2482: 30(int) IMul 2479 2481 Store 2478(var316) 2482 2484: 24(int64_t) Load 920(var2) 2485:898(int16_t) Load 986(var25) 2486: 24(int64_t) SConvert 2485 2487: 24(int64_t) IMul 2484 2486 Store 2483(var317) 2487 2489: 36(int) Load 918(var1) 2490:898(int16_t) Load 986(var25) 2491: 30(int) SConvert 2490 2492: 36(int) Bitcast 2491 2493: 36(int) IMul 2489 2492 Store 2488(var318) 2493 2495: 42(int64_t) Load 922(var3) 2496:898(int16_t) Load 986(var25) 2497: 24(int64_t) SConvert 2496 2498: 42(int64_t) Bitcast 2497 2499: 42(int64_t) IMul 2495 2498 Store 2494(var319) 2499 2501: 48(float) Load 924(var4) 2502:898(int16_t) Load 986(var25) 2503: 48(float) ConvertSToF 2502 2504: 48(float) FMul 2501 2503 Store 2500(var320) 2504 2506:54(float64_t) Load 926(var5) 2507:898(int16_t) Load 986(var25) 2508:54(float64_t) ConvertSToF 2507 2509:54(float64_t) FMul 2506 2508 Store 2505(var321) 2509 2511: 176(ivec2) Load 928(var6) 2512: 988(i8vec2) Load 990(var26) 2513: 176(ivec2) SConvert 2512 2514: 176(ivec2) IMul 2511 2513 Store 2510(var322) 2514 2516:110(i64vec2) Load 934(var8) 2517: 988(i8vec2) Load 990(var26) 2518:110(i64vec2) SConvert 2517 2519:110(i64vec2) IMul 2516 2518 Store 2515(var323) 2519 2521: 106(ivec2) Load 931(var7) 2522: 988(i8vec2) Load 990(var26) 2523: 176(ivec2) SConvert 2522 2524: 106(ivec2) Bitcast 2523 2525: 106(ivec2) IMul 2521 2524 Store 2520(var324) 2525 2527:114(i64vec2) Load 937(var9) 2528: 988(i8vec2) Load 990(var26) 2529:110(i64vec2) SConvert 2528 2530:114(i64vec2) Bitcast 2529 2531:114(i64vec2) IMul 2527 2530 Store 2526(var325) 2531 2533: 84(fvec2) Load 940(var10) 2534: 988(i8vec2) Load 990(var26) 2535: 84(fvec2) ConvertSToF 2534 2536: 84(fvec2) FMul 2533 2535 Store 2532(var326) 2536 2538:121(f64vec2) Load 943(var11) 2539: 988(i8vec2) Load 990(var26) 2540:121(f64vec2) ConvertSToF 2539 2541:121(f64vec2) FMul 2538 2540 Store 2537(var327) 2541 2543: 176(ivec2) Load 928(var6) 2544:993(i16vec2) Load 995(var27) 2545: 176(ivec2) SConvert 2544 2546: 176(ivec2) IMul 2543 2545 Store 2542(var328) 2546 2548:110(i64vec2) Load 934(var8) 2549:993(i16vec2) Load 995(var27) 2550:110(i64vec2) SConvert 2549 2551:110(i64vec2) IMul 2548 2550 Store 2547(var329) 2551 2553: 106(ivec2) Load 931(var7) 2554:993(i16vec2) Load 995(var27) 2555: 176(ivec2) SConvert 2554 2556: 106(ivec2) Bitcast 2555 2557: 106(ivec2) IMul 2553 2556 Store 2552(var330) 2557 2559:114(i64vec2) Load 937(var9) 2560:993(i16vec2) Load 995(var27) 2561:110(i64vec2) SConvert 2560 2562:114(i64vec2) Bitcast 2561 2563:114(i64vec2) IMul 2559 2562 Store 2558(var331) 2563 2565: 84(fvec2) Load 940(var10) 2566:993(i16vec2) Load 995(var27) 2567: 84(fvec2) ConvertSToF 2566 2568: 84(fvec2) FMul 2565 2567 Store 2564(var332) 2568 2570:121(f64vec2) Load 943(var11) 2571:993(i16vec2) Load 995(var27) 2572:121(f64vec2) ConvertSToF 2571 2573:121(f64vec2) FMul 2570 2572 Store 2569(var333) 2573 2575: 191(ivec3) Load 946(var12) 2576: 998(i8vec3) Load 1000(var28) 2577: 191(ivec3) SConvert 2576 2578: 191(ivec3) IMul 2575 2577 Store 2574(var334) 2578 2580:129(i64vec3) Load 952(var14) 2581: 998(i8vec3) Load 1000(var28) 2582:129(i64vec3) SConvert 2581 2583:129(i64vec3) IMul 2580 2582 Store 2579(var335) 2583 2585: 125(ivec3) Load 949(var13) 2586: 998(i8vec3) Load 1000(var28) 2587: 191(ivec3) SConvert 2586 2588: 125(ivec3) Bitcast 2587 2589: 125(ivec3) IMul 2585 2588 Store 2584(var336) 2589 2591:133(i64vec3) Load 955(var15) 2592: 998(i8vec3) Load 1000(var28) 2593:129(i64vec3) SConvert 2592 2594:133(i64vec3) Bitcast 2593 2595:133(i64vec3) IMul 2591 2594 Store 2590(var337) 2595 2597: 137(fvec3) Load 958(var16) 2598: 998(i8vec3) Load 1000(var28) 2599: 137(fvec3) ConvertSToF 2598 2600: 137(fvec3) FMul 2597 2599 Store 2596(var338) 2600 2602:141(f64vec3) Load 961(var17) 2603: 998(i8vec3) Load 1000(var28) 2604:141(f64vec3) ConvertSToF 2603 2605:141(f64vec3) FMul 2602 2604 Store 2601(var339) 2605 2607: 125(ivec3) Load 949(var13) 2608:1003(i16vec3) Load 1005(var29) 2609: 191(ivec3) SConvert 2608 2610: 125(ivec3) Bitcast 2609 2611: 125(ivec3) IMul 2607 2610 Store 2606(var340) 2611 2613:133(i64vec3) Load 955(var15) 2614:1003(i16vec3) Load 1005(var29) 2615:129(i64vec3) SConvert 2614 2616:133(i64vec3) Bitcast 2615 2617:133(i64vec3) IMul 2613 2616 Store 2612(var341) 2617 2619: 137(fvec3) Load 958(var16) 2620:1003(i16vec3) Load 1005(var29) 2621: 137(fvec3) ConvertSToF 2620 2622: 137(fvec3) FMul 2619 2621 Store 2618(var342) 2622 2624:141(f64vec3) Load 961(var17) 2625:1003(i16vec3) Load 1005(var29) 2626:141(f64vec3) ConvertSToF 2625 2627:141(f64vec3) FMul 2624 2626 Store 2623(var343) 2627 2629: 204(ivec4) Load 964(var18) 2630:1008(i8vec4) Load 1010(var30) 2631: 204(ivec4) SConvert 2630 2632: 204(ivec4) IMul 2629 2631 Store 2628(var344) 2632 2634:149(i64vec4) Load 970(var20) 2635:1008(i8vec4) Load 1010(var30) 2636:149(i64vec4) SConvert 2635 2637:149(i64vec4) IMul 2634 2636 Store 2633(var345) 2637 2639: 145(ivec4) Load 967(var19) 2640:1008(i8vec4) Load 1010(var30) 2641: 204(ivec4) SConvert 2640 2642: 145(ivec4) Bitcast 2641 2643: 145(ivec4) IMul 2639 2642 Store 2638(var346) 2643 2645:153(i64vec4) Load 973(var21) 2646:1008(i8vec4) Load 1010(var30) 2647:149(i64vec4) SConvert 2646 2648:153(i64vec4) Bitcast 2647 2649:153(i64vec4) IMul 2645 2648 Store 2644(var347) 2649 2651: 88(fvec4) Load 976(var22) 2652:1008(i8vec4) Load 1010(var30) 2653: 88(fvec4) ConvertSToF 2652 2654: 88(fvec4) FMul 2651 2653 Store 2650(var348) 2654 2656:160(f64vec4) Load 979(var23) 2657:1008(i8vec4) Load 1010(var30) 2658:160(f64vec4) ConvertSToF 2657 2659:160(f64vec4) FMul 2656 2658 Store 2655(var349) 2659 2661: 145(ivec4) Load 967(var19) 2662:1013(i16vec4) Load 1015(var31) 2663: 204(ivec4) SConvert 2662 2664: 145(ivec4) Bitcast 2663 2665: 145(ivec4) IMul 2661 2664 Store 2660(var350) 2665 2667:153(i64vec4) Load 973(var21) 2668:1013(i16vec4) Load 1015(var31) 2669:149(i64vec4) SConvert 2668 2670:153(i64vec4) Bitcast 2669 2671:153(i64vec4) IMul 2667 2670 Store 2666(var351) 2671 2673: 88(fvec4) Load 976(var22) 2674:1013(i16vec4) Load 1015(var31) 2675: 88(fvec4) ConvertSToF 2674 2676: 88(fvec4) FMul 2673 2675 Store 2672(var352) 2676 2678:160(f64vec4) Load 979(var23) 2679:1013(i16vec4) Load 1015(var31) 2680:160(f64vec4) ConvertSToF 2679 2681:160(f64vec4) FMul 2678 2680 Store 2677(var353) 2681 2683: 42(int64_t) Load 922(var3) 2684: 24(int64_t) Load 920(var2) 2685: 42(int64_t) Bitcast 2684 2686: 42(int64_t) IMul 2683 2685 Store 2682(var354) 2686 2688:54(float64_t) Load 926(var5) 2689: 24(int64_t) Load 920(var2) 2690:54(float64_t) ConvertSToF 2689 2691:54(float64_t) FMul 2688 2690 Store 2687(var355) 2691 2693:114(i64vec2) Load 937(var9) 2694:110(i64vec2) Load 934(var8) 2695:114(i64vec2) Bitcast 2694 2696:114(i64vec2) IMul 2693 2695 Store 2692(var356) 2696 2698:121(f64vec2) Load 943(var11) 2699:110(i64vec2) Load 934(var8) 2700:121(f64vec2) ConvertSToF 2699 2701:121(f64vec2) FMul 2698 2700 Store 2697(var357) 2701 2703:133(i64vec3) Load 955(var15) 2704:129(i64vec3) Load 952(var14) 2705:133(i64vec3) Bitcast 2704 2706:133(i64vec3) IMul 2703 2705 Store 2702(var358) 2706 2708:141(f64vec3) Load 961(var17) 2709:129(i64vec3) Load 952(var14) 2710:141(f64vec3) ConvertSToF 2709 2711:141(f64vec3) FMul 2708 2710 Store 2707(var359) 2711 2713:153(i64vec4) Load 973(var21) 2714:149(i64vec4) Load 970(var20) 2715:153(i64vec4) Bitcast 2714 2716:153(i64vec4) IMul 2713 2715 Store 2712(var360) 2716 2718:160(f64vec4) Load 979(var23) 2719:149(i64vec4) Load 970(var20) 2720:160(f64vec4) ConvertSToF 2719 2721:160(f64vec4) FMul 2718 2720 Store 2717(var361) 2721 2723: 42(int64_t) Load 922(var3) 2724: 36(int) Load 918(var1) 2725: 42(int64_t) UConvert 2724 2726: 42(int64_t) IMul 2723 2725 Store 2722(var362) 2726 2728: 48(float) Load 924(var4) 2729: 36(int) Load 918(var1) 2730: 48(float) ConvertUToF 2729 2731: 48(float) FMul 2728 2730 Store 2727(var363) 2731 2733:54(float64_t) Load 926(var5) 2734: 36(int) Load 918(var1) 2735:54(float64_t) ConvertUToF 2734 2736:54(float64_t) FMul 2733 2735 Store 2732(var364) 2736 2738:114(i64vec2) Load 937(var9) 2739: 106(ivec2) Load 931(var7) 2740:114(i64vec2) UConvert 2739 2741:114(i64vec2) IMul 2738 2740 Store 2737(var365) 2741 2743: 84(fvec2) Load 940(var10) 2744: 106(ivec2) Load 931(var7) 2745: 84(fvec2) ConvertUToF 2744 2746: 84(fvec2) FMul 2743 2745 Store 2742(var366) 2746 2748:121(f64vec2) Load 943(var11) 2749: 106(ivec2) Load 931(var7) 2750:121(f64vec2) ConvertUToF 2749 2751:121(f64vec2) FMul 2748 2750 Store 2747(var367) 2751 2753:133(i64vec3) Load 955(var15) 2754: 125(ivec3) Load 949(var13) 2755:133(i64vec3) UConvert 2754 2756:133(i64vec3) IMul 2753 2755 Store 2752(var368) 2756 2758: 137(fvec3) Load 958(var16) 2759: 125(ivec3) Load 949(var13) 2760: 137(fvec3) ConvertUToF 2759 2761: 137(fvec3) FMul 2758 2760 Store 2757(var369) 2761 2763:141(f64vec3) Load 961(var17) 2764: 125(ivec3) Load 949(var13) 2765:141(f64vec3) ConvertUToF 2764 2766:141(f64vec3) FMul 2763 2765 Store 2762(var370) 2766 2768:153(i64vec4) Load 973(var21) 2769: 145(ivec4) Load 967(var19) 2770:153(i64vec4) UConvert 2769 2771:153(i64vec4) IMul 2768 2770 Store 2767(var371) 2771 2773: 88(fvec4) Load 976(var22) 2774: 145(ivec4) Load 967(var19) 2775: 88(fvec4) ConvertUToF 2774 2776: 88(fvec4) FMul 2773 2775 Store 2772(var372) 2776 2778:160(f64vec4) Load 979(var23) 2779: 145(ivec4) Load 967(var19) 2780:160(f64vec4) ConvertUToF 2779 2781:160(f64vec4) FMul 2778 2780 Store 2777(var373) 2781 2783: 36(int) Load 918(var1) 2784: 892(int8_t) Load 1018(var32) 2785: 36(int) UConvert 2784 2786: 36(int) IMul 2783 2785 Store 2782(var374) 2786 2788: 42(int64_t) Load 922(var3) 2789: 892(int8_t) Load 1018(var32) 2790: 42(int64_t) UConvert 2789 2791: 42(int64_t) IMul 2788 2790 Store 2787(var375) 2791 2793: 48(float) Load 924(var4) 2794: 892(int8_t) Load 1018(var32) 2795: 48(float) ConvertUToF 2794 2796: 48(float) FMul 2793 2795 Store 2792(var376) 2796 2798:54(float64_t) Load 926(var5) 2799: 892(int8_t) Load 1018(var32) 2800:54(float64_t) ConvertUToF 2799 2801:54(float64_t) FMul 2798 2800 Store 2797(var377) 2801 2803: 36(int) Load 918(var1) 2804:913(int16_t) Load 1021(var33) 2805: 36(int) UConvert 2804 2806: 36(int) IMul 2803 2805 Store 2802(var378) 2806 2808: 42(int64_t) Load 922(var3) 2809:913(int16_t) Load 1021(var33) 2810: 42(int64_t) UConvert 2809 2811: 42(int64_t) IMul 2808 2810 Store 2807(var379) 2811 2813: 48(float) Load 924(var4) 2814:913(int16_t) Load 1021(var33) 2815: 48(float) ConvertUToF 2814 2816: 48(float) FMul 2813 2815 Store 2812(var380) 2816 2818:54(float64_t) Load 926(var5) 2819:913(int16_t) Load 1021(var33) 2820:54(float64_t) ConvertUToF 2819 2821:54(float64_t) FMul 2818 2820 Store 2817(var381) 2821 2823: 106(ivec2) Load 931(var7) 2824:1023(i8vec2) Load 1025(var34) 2825: 106(ivec2) UConvert 2824 2826: 106(ivec2) IMul 2823 2825 Store 2822(var382) 2826 2828:114(i64vec2) Load 937(var9) 2829:1023(i8vec2) Load 1025(var34) 2830:114(i64vec2) UConvert 2829 2831:114(i64vec2) IMul 2828 2830 Store 2827(var383) 2831 2833: 84(fvec2) Load 940(var10) 2834:1023(i8vec2) Load 1025(var34) 2835: 84(fvec2) ConvertUToF 2834 2836: 84(fvec2) FMul 2833 2835 Store 2832(var384) 2836 2838:121(f64vec2) Load 943(var11) 2839:1023(i8vec2) Load 1025(var34) 2840:121(f64vec2) ConvertUToF 2839 2841:121(f64vec2) FMul 2838 2840 Store 2837(var385) 2841 2843: 106(ivec2) Load 931(var7) 2844:1028(i16vec2) Load 1030(var35) 2845: 106(ivec2) UConvert 2844 2846: 106(ivec2) IMul 2843 2845 Store 2842(var386) 2846 2848:114(i64vec2) Load 937(var9) 2849:1028(i16vec2) Load 1030(var35) 2850:114(i64vec2) UConvert 2849 2851:114(i64vec2) IMul 2848 2850 Store 2847(var387) 2851 2853: 84(fvec2) Load 940(var10) 2854:1028(i16vec2) Load 1030(var35) 2855: 84(fvec2) ConvertUToF 2854 2856: 84(fvec2) FMul 2853 2855 Store 2852(var388) 2856 2858:121(f64vec2) Load 943(var11) 2859:1028(i16vec2) Load 1030(var35) 2860:121(f64vec2) ConvertUToF 2859 2861:121(f64vec2) FMul 2858 2860 Store 2857(var389) 2861 2863: 125(ivec3) Load 949(var13) 2864:1033(i8vec3) Load 1035(var36) 2865: 125(ivec3) UConvert 2864 2866: 125(ivec3) IMul 2863 2865 Store 2862(var390) 2866 2868:133(i64vec3) Load 955(var15) 2869:1033(i8vec3) Load 1035(var36) 2870:133(i64vec3) UConvert 2869 2871:133(i64vec3) IMul 2868 2870 Store 2867(var391) 2871 2873: 137(fvec3) Load 958(var16) 2874:1033(i8vec3) Load 1035(var36) 2875: 137(fvec3) ConvertUToF 2874 2876: 137(fvec3) FMul 2873 2875 Store 2872(var392) 2876 2878:141(f64vec3) Load 961(var17) 2879:1033(i8vec3) Load 1035(var36) 2880:141(f64vec3) ConvertUToF 2879 2881:141(f64vec3) FMul 2878 2880 Store 2877(var393) 2881 2883: 145(ivec4) Load 967(var19) 2884:1038(i8vec4) Load 1040(var37) 2885: 145(ivec4) UConvert 2884 2886: 145(ivec4) IMul 2883 2885 Store 2882(var394) 2886 2888:153(i64vec4) Load 973(var21) 2889:1038(i8vec4) Load 1040(var37) 2890:153(i64vec4) UConvert 2889 2891:153(i64vec4) IMul 2888 2890 Store 2887(var395) 2891 2893: 88(fvec4) Load 976(var22) 2894:1038(i8vec4) Load 1040(var37) 2895: 88(fvec4) ConvertUToF 2894 2896: 88(fvec4) FMul 2893 2895 Store 2892(var396) 2896 2898:160(f64vec4) Load 979(var23) 2899:1038(i8vec4) Load 1040(var37) 2900:160(f64vec4) ConvertUToF 2899 2901:160(f64vec4) FMul 2898 2900 Store 2897(var397) 2901 2903:54(float64_t) Load 926(var5) 2904: 42(int64_t) Load 922(var3) 2905:54(float64_t) ConvertUToF 2904 2906:54(float64_t) FMul 2903 2905 Store 2902(var398) 2906 2908:121(f64vec2) Load 943(var11) 2909:114(i64vec2) Load 937(var9) 2910:121(f64vec2) ConvertUToF 2909 2911:121(f64vec2) FMul 2908 2910 Store 2907(var399) 2911 2913:141(f64vec3) Load 961(var17) 2914:133(i64vec3) Load 955(var15) 2915:141(f64vec3) ConvertUToF 2914 2916:141(f64vec3) FMul 2913 2915 Store 2912(var400) 2916 2918:160(f64vec4) Load 979(var23) 2919:153(i64vec4) Load 973(var21) 2920:160(f64vec4) ConvertUToF 2919 2921:160(f64vec4) FMul 2918 2920 Store 2917(var401) 2921 2923:54(float64_t) Load 926(var5) 2924: 48(float) Load 924(var4) 2925:54(float64_t) FConvert 2924 2926:54(float64_t) FMul 2923 2925 Store 2922(var402) 2926 2928:121(f64vec2) Load 943(var11) 2929: 84(fvec2) Load 940(var10) 2930:121(f64vec2) FConvert 2929 2931:121(f64vec2) FMul 2928 2930 Store 2927(var403) 2931 2933:141(f64vec3) Load 961(var17) 2934: 137(fvec3) Load 958(var16) 2935:141(f64vec3) FConvert 2934 2936:141(f64vec3) FMul 2933 2935 Store 2932(var404) 2936 2938:160(f64vec4) Load 979(var23) 2939: 88(fvec4) Load 976(var22) 2940:160(f64vec4) FConvert 2939 2941:160(f64vec4) FMul 2938 2940 Store 2937(var405) 2941 2943: 48(float) Load 924(var4) 2944:1043(float16_t) Load 1045(var38) 2945: 48(float) FConvert 2944 2946: 48(float) FMul 2943 2945 Store 2942(var406) 2946 2948:54(float64_t) Load 926(var5) 2949:1043(float16_t) Load 1045(var38) 2950:54(float64_t) FConvert 2949 2951:54(float64_t) FMul 2948 2950 Store 2947(var407) 2951 2953: 84(fvec2) Load 940(var10) 2954:1047(f16vec2) Load 1049(var39) 2955: 84(fvec2) FConvert 2954 2956: 84(fvec2) FMul 2953 2955 Store 2952(var408) 2956 2958:121(f64vec2) Load 943(var11) 2959:1047(f16vec2) Load 1049(var39) 2960:121(f64vec2) FConvert 2959 2961:121(f64vec2) FMul 2958 2960 Store 2957(var409) 2961 2963: 137(fvec3) Load 958(var16) 2964:1052(f16vec3) Load 1054(var40) 2965: 137(fvec3) FConvert 2964 2966: 137(fvec3) FMul 2963 2965 Store 2962(var410) 2966 2968:141(f64vec3) Load 961(var17) 2969:1052(f16vec3) Load 1054(var40) 2970:141(f64vec3) FConvert 2969 2971:141(f64vec3) FMul 2968 2970 Store 2967(var411) 2971 2973: 88(fvec4) Load 976(var22) 2974:1057(f16vec4) Load 1059(var41) 2975: 88(fvec4) FConvert 2974 2976: 88(fvec4) FMul 2973 2975 Store 2972(var412) 2976 2978:160(f64vec4) Load 979(var23) 2979:1057(f16vec4) Load 1059(var41) 2980:160(f64vec4) FConvert 2979 2981:160(f64vec4) FMul 2978 2980 Store 2977(var413) 2981 Return FunctionEnd 18(testModuloOps(): 2 Function None 3 19: Label 2982(var0): 31(ptr) Variable Function 2983(var1): 37(ptr) Variable Function 2984(var2): 25(ptr) Variable Function 2985(var3): 43(ptr) Variable Function 2986(var4): 49(ptr) Variable Function 2987(var5): 55(ptr) Variable Function 2988(var6): 177(ptr) Variable Function 2989(var7): 107(ptr) Variable Function 2990(var8): 111(ptr) Variable Function 2991(var9): 115(ptr) Variable Function 2992(var10): 118(ptr) Variable Function 2993(var11): 122(ptr) Variable Function 2994(var12): 192(ptr) Variable Function 2995(var13): 126(ptr) Variable Function 2996(var14): 130(ptr) Variable Function 2997(var15): 134(ptr) Variable Function 2998(var16): 138(ptr) Variable Function 2999(var17): 142(ptr) Variable Function 3000(var18): 205(ptr) Variable Function 3001(var19): 146(ptr) Variable Function 3002(var20): 150(ptr) Variable Function 3003(var21): 154(ptr) Variable Function 3004(var22): 157(ptr) Variable Function 3005(var23): 161(ptr) Variable Function 3006(var24): 983(ptr) Variable Function 3007(var25): 899(ptr) Variable Function 3008(var26): 989(ptr) Variable Function 3009(var27): 994(ptr) Variable Function 3010(var28): 999(ptr) Variable Function 3011(var29): 1004(ptr) Variable Function 3012(var30): 1009(ptr) Variable Function 3013(var31): 1014(ptr) Variable Function 3014(var32): 893(ptr) Variable Function 3015(var33): 1020(ptr) Variable Function 3016(var34): 1024(ptr) Variable Function 3017(var35): 1029(ptr) Variable Function 3018(var36): 1034(ptr) Variable Function 3019(var37): 1039(ptr) Variable Function 3020(var38): 1044(ptr) Variable Function 3021(var39): 1048(ptr) Variable Function 3022(var40): 1053(ptr) Variable Function 3023(var41): 1058(ptr) Variable Function 3024(var42): 37(ptr) Variable Function 3029(var43): 25(ptr) Variable Function 3034(var44): 43(ptr) Variable Function 3040(var45): 107(ptr) Variable Function 3045(var46): 111(ptr) Variable Function 3050(var47): 115(ptr) Variable Function 3056(var48): 126(ptr) Variable Function 3061(var49): 130(ptr) Variable Function 3066(var50): 134(ptr) Variable Function 3072(var51): 146(ptr) Variable Function 3077(var52): 150(ptr) Variable Function 3082(var53): 154(ptr) Variable Function 3088(var54): 31(ptr) Variable Function 3093(var55): 25(ptr) Variable Function 3098(var56): 37(ptr) Variable Function 3104(var57): 43(ptr) Variable Function 3110(var58): 31(ptr) Variable Function 3115(var59): 25(ptr) Variable Function 3120(var60): 37(ptr) Variable Function 3126(var61): 43(ptr) Variable Function 3132(var62): 177(ptr) Variable Function 3137(var63): 111(ptr) Variable Function 3142(var64): 107(ptr) Variable Function 3148(var65): 115(ptr) Variable Function 3154(var66): 177(ptr) Variable Function 3159(var67): 111(ptr) Variable Function 3164(var68): 107(ptr) Variable Function 3170(var69): 115(ptr) Variable Function 3176(var70): 192(ptr) Variable Function 3181(var71): 130(ptr) Variable Function 3186(var72): 126(ptr) Variable Function 3192(var73): 134(ptr) Variable Function 3198(var74): 126(ptr) Variable Function 3204(var75): 134(ptr) Variable Function 3210(var76): 205(ptr) Variable Function 3215(var77): 150(ptr) Variable Function 3220(var78): 146(ptr) Variable Function 3226(var79): 154(ptr) Variable Function 3232(var80): 146(ptr) Variable Function 3238(var81): 154(ptr) Variable Function 3244(var82): 43(ptr) Variable Function 3249(var83): 115(ptr) Variable Function 3254(var84): 134(ptr) Variable Function 3259(var85): 154(ptr) Variable Function 3264(var86): 43(ptr) Variable Function 3269(var87): 115(ptr) Variable Function 3274(var88): 134(ptr) Variable Function 3279(var89): 154(ptr) Variable Function 3284(var90): 37(ptr) Variable Function 3289(var91): 43(ptr) Variable Function 3294(var92): 37(ptr) Variable Function 3299(var93): 43(ptr) Variable Function 3304(var94): 107(ptr) Variable Function 3309(var95): 115(ptr) Variable Function 3314(var96): 107(ptr) Variable Function 3319(var97): 115(ptr) Variable Function 3324(var98): 126(ptr) Variable Function 3329(var99): 134(ptr) Variable Function 3334(var100): 146(ptr) Variable Function 3339(var101): 154(ptr) Variable Function Store 2982(var0) 73 Store 2983(var1) 919 Store 2984(var2) 921 Store 2985(var3) 923 Store 2986(var4) 925 Store 2987(var5) 927 Store 2988(var6) 930 Store 2989(var7) 933 Store 2990(var8) 936 Store 2991(var9) 939 Store 2992(var10) 942 Store 2993(var11) 945 Store 2994(var12) 948 Store 2995(var13) 951 Store 2996(var14) 954 Store 2997(var15) 957 Store 2998(var16) 960 Store 2999(var17) 963 Store 3000(var18) 966 Store 3001(var19) 969 Store 3002(var20) 972 Store 3003(var21) 975 Store 3004(var22) 978 Store 3005(var23) 981 Store 3006(var24) 985 Store 3007(var25) 987 Store 3008(var26) 992 Store 3009(var27) 997 Store 3010(var28) 1002 Store 3011(var29) 1007 Store 3012(var30) 1012 Store 3013(var31) 1017 Store 3014(var32) 1019 Store 3015(var33) 1022 Store 3016(var34) 1027 Store 3017(var35) 1032 Store 3018(var36) 1037 Store 3019(var37) 1042 Store 3020(var38) 1046 Store 3021(var39) 1051 Store 3022(var40) 1056 Store 3023(var41) 1061 3025: 36(int) Load 2983(var1) 3026: 30(int) Load 2982(var0) 3027: 36(int) Bitcast 3026 3028: 36(int) UMod 3025 3027 Store 3024(var42) 3028 3030: 24(int64_t) Load 2984(var2) 3031: 30(int) Load 2982(var0) 3032: 24(int64_t) SConvert 3031 3033: 24(int64_t) SMod 3030 3032 Store 3029(var43) 3033 3035: 42(int64_t) Load 2985(var3) 3036: 30(int) Load 2982(var0) 3037: 24(int64_t) SConvert 3036 3038: 42(int64_t) Bitcast 3037 3039: 42(int64_t) UMod 3035 3038 Store 3034(var44) 3039 3041: 106(ivec2) Load 2989(var7) 3042: 176(ivec2) Load 2988(var6) 3043: 106(ivec2) Bitcast 3042 3044: 106(ivec2) UMod 3041 3043 Store 3040(var45) 3044 3046:110(i64vec2) Load 2990(var8) 3047: 176(ivec2) Load 2988(var6) 3048:110(i64vec2) SConvert 3047 3049:110(i64vec2) SMod 3046 3048 Store 3045(var46) 3049 3051:114(i64vec2) Load 2991(var9) 3052: 176(ivec2) Load 2988(var6) 3053:110(i64vec2) SConvert 3052 3054:114(i64vec2) Bitcast 3053 3055:114(i64vec2) UMod 3051 3054 Store 3050(var47) 3055 3057: 125(ivec3) Load 2995(var13) 3058: 191(ivec3) Load 2994(var12) 3059: 125(ivec3) Bitcast 3058 3060: 125(ivec3) UMod 3057 3059 Store 3056(var48) 3060 3062:129(i64vec3) Load 2996(var14) 3063: 191(ivec3) Load 2994(var12) 3064:129(i64vec3) SConvert 3063 3065:129(i64vec3) SMod 3062 3064 Store 3061(var49) 3065 3067:133(i64vec3) Load 2997(var15) 3068: 191(ivec3) Load 2994(var12) 3069:129(i64vec3) SConvert 3068 3070:133(i64vec3) Bitcast 3069 3071:133(i64vec3) UMod 3067 3070 Store 3066(var50) 3071 3073: 145(ivec4) Load 3001(var19) 3074: 204(ivec4) Load 3000(var18) 3075: 145(ivec4) Bitcast 3074 3076: 145(ivec4) UMod 3073 3075 Store 3072(var51) 3076 3078:149(i64vec4) Load 3002(var20) 3079: 204(ivec4) Load 3000(var18) 3080:149(i64vec4) SConvert 3079 3081:149(i64vec4) SMod 3078 3080 Store 3077(var52) 3081 3083:153(i64vec4) Load 3003(var21) 3084: 204(ivec4) Load 3000(var18) 3085:149(i64vec4) SConvert 3084 3086:153(i64vec4) Bitcast 3085 3087:153(i64vec4) UMod 3083 3086 Store 3082(var53) 3087 3089: 30(int) Load 2982(var0) 3090: 982(int8_t) Load 3006(var24) 3091: 30(int) SConvert 3090 3092: 30(int) SMod 3089 3091 Store 3088(var54) 3092 3094: 24(int64_t) Load 2984(var2) 3095: 982(int8_t) Load 3006(var24) 3096: 24(int64_t) SConvert 3095 3097: 24(int64_t) SMod 3094 3096 Store 3093(var55) 3097 3099: 36(int) Load 2983(var1) 3100: 982(int8_t) Load 3006(var24) 3101: 30(int) SConvert 3100 3102: 36(int) Bitcast 3101 3103: 36(int) UMod 3099 3102 Store 3098(var56) 3103 3105: 42(int64_t) Load 2985(var3) 3106: 982(int8_t) Load 3006(var24) 3107: 24(int64_t) SConvert 3106 3108: 42(int64_t) Bitcast 3107 3109: 42(int64_t) UMod 3105 3108 Store 3104(var57) 3109 3111: 30(int) Load 2982(var0) 3112:898(int16_t) Load 3007(var25) 3113: 30(int) SConvert 3112 3114: 30(int) SMod 3111 3113 Store 3110(var58) 3114 3116: 24(int64_t) Load 2984(var2) 3117:898(int16_t) Load 3007(var25) 3118: 24(int64_t) SConvert 3117 3119: 24(int64_t) SMod 3116 3118 Store 3115(var59) 3119 3121: 36(int) Load 2983(var1) 3122:898(int16_t) Load 3007(var25) 3123: 30(int) SConvert 3122 3124: 36(int) Bitcast 3123 3125: 36(int) UMod 3121 3124 Store 3120(var60) 3125 3127: 42(int64_t) Load 2985(var3) 3128:898(int16_t) Load 3007(var25) 3129: 24(int64_t) SConvert 3128 3130: 42(int64_t) Bitcast 3129 3131: 42(int64_t) UMod 3127 3130 Store 3126(var61) 3131 3133: 176(ivec2) Load 2988(var6) 3134: 988(i8vec2) Load 3008(var26) 3135: 176(ivec2) SConvert 3134 3136: 176(ivec2) SMod 3133 3135 Store 3132(var62) 3136 3138:110(i64vec2) Load 2990(var8) 3139: 988(i8vec2) Load 3008(var26) 3140:110(i64vec2) SConvert 3139 3141:110(i64vec2) SMod 3138 3140 Store 3137(var63) 3141 3143: 106(ivec2) Load 2989(var7) 3144: 988(i8vec2) Load 3008(var26) 3145: 176(ivec2) SConvert 3144 3146: 106(ivec2) Bitcast 3145 3147: 106(ivec2) UMod 3143 3146 Store 3142(var64) 3147 3149:114(i64vec2) Load 2991(var9) 3150: 988(i8vec2) Load 3008(var26) 3151:110(i64vec2) SConvert 3150 3152:114(i64vec2) Bitcast 3151 3153:114(i64vec2) UMod 3149 3152 Store 3148(var65) 3153 3155: 176(ivec2) Load 2988(var6) 3156:993(i16vec2) Load 3009(var27) 3157: 176(ivec2) SConvert 3156 3158: 176(ivec2) SMod 3155 3157 Store 3154(var66) 3158 3160:110(i64vec2) Load 2990(var8) 3161:993(i16vec2) Load 3009(var27) 3162:110(i64vec2) SConvert 3161 3163:110(i64vec2) SMod 3160 3162 Store 3159(var67) 3163 3165: 106(ivec2) Load 2989(var7) 3166:993(i16vec2) Load 3009(var27) 3167: 176(ivec2) SConvert 3166 3168: 106(ivec2) Bitcast 3167 3169: 106(ivec2) UMod 3165 3168 Store 3164(var68) 3169 3171:114(i64vec2) Load 2991(var9) 3172:993(i16vec2) Load 3009(var27) 3173:110(i64vec2) SConvert 3172 3174:114(i64vec2) Bitcast 3173 3175:114(i64vec2) UMod 3171 3174 Store 3170(var69) 3175 3177: 191(ivec3) Load 2994(var12) 3178: 998(i8vec3) Load 3010(var28) 3179: 191(ivec3) SConvert 3178 3180: 191(ivec3) SMod 3177 3179 Store 3176(var70) 3180 3182:129(i64vec3) Load 2996(var14) 3183: 998(i8vec3) Load 3010(var28) 3184:129(i64vec3) SConvert 3183 3185:129(i64vec3) SMod 3182 3184 Store 3181(var71) 3185 3187: 125(ivec3) Load 2995(var13) 3188: 998(i8vec3) Load 3010(var28) 3189: 191(ivec3) SConvert 3188 3190: 125(ivec3) Bitcast 3189 3191: 125(ivec3) UMod 3187 3190 Store 3186(var72) 3191 3193:133(i64vec3) Load 2997(var15) 3194: 998(i8vec3) Load 3010(var28) 3195:129(i64vec3) SConvert 3194 3196:133(i64vec3) Bitcast 3195 3197:133(i64vec3) UMod 3193 3196 Store 3192(var73) 3197 3199: 125(ivec3) Load 2995(var13) 3200:1003(i16vec3) Load 3011(var29) 3201: 191(ivec3) SConvert 3200 3202: 125(ivec3) Bitcast 3201 3203: 125(ivec3) UMod 3199 3202 Store 3198(var74) 3203 3205:133(i64vec3) Load 2997(var15) 3206:1003(i16vec3) Load 3011(var29) 3207:129(i64vec3) SConvert 3206 3208:133(i64vec3) Bitcast 3207 3209:133(i64vec3) UMod 3205 3208 Store 3204(var75) 3209 3211: 204(ivec4) Load 3000(var18) 3212:1008(i8vec4) Load 3012(var30) 3213: 204(ivec4) SConvert 3212 3214: 204(ivec4) SMod 3211 3213 Store 3210(var76) 3214 3216:149(i64vec4) Load 3002(var20) 3217:1008(i8vec4) Load 3012(var30) 3218:149(i64vec4) SConvert 3217 3219:149(i64vec4) SMod 3216 3218 Store 3215(var77) 3219 3221: 145(ivec4) Load 3001(var19) 3222:1008(i8vec4) Load 3012(var30) 3223: 204(ivec4) SConvert 3222 3224: 145(ivec4) Bitcast 3223 3225: 145(ivec4) UMod 3221 3224 Store 3220(var78) 3225 3227:153(i64vec4) Load 3003(var21) 3228:1008(i8vec4) Load 3012(var30) 3229:149(i64vec4) SConvert 3228 3230:153(i64vec4) Bitcast 3229 3231:153(i64vec4) UMod 3227 3230 Store 3226(var79) 3231 3233: 145(ivec4) Load 3001(var19) 3234:1013(i16vec4) Load 3013(var31) 3235: 204(ivec4) SConvert 3234 3236: 145(ivec4) Bitcast 3235 3237: 145(ivec4) UMod 3233 3236 Store 3232(var80) 3237 3239:153(i64vec4) Load 3003(var21) 3240:1013(i16vec4) Load 3013(var31) 3241:149(i64vec4) SConvert 3240 3242:153(i64vec4) Bitcast 3241 3243:153(i64vec4) UMod 3239 3242 Store 3238(var81) 3243 3245: 42(int64_t) Load 2985(var3) 3246: 24(int64_t) Load 2984(var2) 3247: 42(int64_t) Bitcast 3246 3248: 42(int64_t) UMod 3245 3247 Store 3244(var82) 3248 3250:114(i64vec2) Load 2991(var9) 3251:110(i64vec2) Load 2990(var8) 3252:114(i64vec2) Bitcast 3251 3253:114(i64vec2) UMod 3250 3252 Store 3249(var83) 3253 3255:133(i64vec3) Load 2997(var15) 3256:129(i64vec3) Load 2996(var14) 3257:133(i64vec3) Bitcast 3256 3258:133(i64vec3) UMod 3255 3257 Store 3254(var84) 3258 3260:153(i64vec4) Load 3003(var21) 3261:149(i64vec4) Load 3002(var20) 3262:153(i64vec4) Bitcast 3261 3263:153(i64vec4) UMod 3260 3262 Store 3259(var85) 3263 3265: 42(int64_t) Load 2985(var3) 3266: 36(int) Load 2983(var1) 3267: 42(int64_t) UConvert 3266 3268: 42(int64_t) UMod 3265 3267 Store 3264(var86) 3268 3270:114(i64vec2) Load 2991(var9) 3271: 106(ivec2) Load 2989(var7) 3272:114(i64vec2) UConvert 3271 3273:114(i64vec2) UMod 3270 3272 Store 3269(var87) 3273 3275:133(i64vec3) Load 2997(var15) 3276: 125(ivec3) Load 2995(var13) 3277:133(i64vec3) UConvert 3276 3278:133(i64vec3) UMod 3275 3277 Store 3274(var88) 3278 3280:153(i64vec4) Load 3003(var21) 3281: 145(ivec4) Load 3001(var19) 3282:153(i64vec4) UConvert 3281 3283:153(i64vec4) UMod 3280 3282 Store 3279(var89) 3283 3285: 36(int) Load 2983(var1) 3286: 892(int8_t) Load 3014(var32) 3287: 36(int) UConvert 3286 3288: 36(int) UMod 3285 3287 Store 3284(var90) 3288 3290: 42(int64_t) Load 2985(var3) 3291: 892(int8_t) Load 3014(var32) 3292: 42(int64_t) UConvert 3291 3293: 42(int64_t) UMod 3290 3292 Store 3289(var91) 3293 3295: 36(int) Load 2983(var1) 3296:913(int16_t) Load 3015(var33) 3297: 36(int) UConvert 3296 3298: 36(int) UMod 3295 3297 Store 3294(var92) 3298 3300: 42(int64_t) Load 2985(var3) 3301:913(int16_t) Load 3015(var33) 3302: 42(int64_t) UConvert 3301 3303: 42(int64_t) UMod 3300 3302 Store 3299(var93) 3303 3305: 106(ivec2) Load 2989(var7) 3306:1023(i8vec2) Load 3016(var34) 3307: 106(ivec2) UConvert 3306 3308: 106(ivec2) UMod 3305 3307 Store 3304(var94) 3308 3310:114(i64vec2) Load 2991(var9) 3311:1023(i8vec2) Load 3016(var34) 3312:114(i64vec2) UConvert 3311 3313:114(i64vec2) UMod 3310 3312 Store 3309(var95) 3313 3315: 106(ivec2) Load 2989(var7) 3316:1028(i16vec2) Load 3017(var35) 3317: 106(ivec2) UConvert 3316 3318: 106(ivec2) UMod 3315 3317 Store 3314(var96) 3318 3320:114(i64vec2) Load 2991(var9) 3321:1028(i16vec2) Load 3017(var35) 3322:114(i64vec2) UConvert 3321 3323:114(i64vec2) UMod 3320 3322 Store 3319(var97) 3323 3325: 125(ivec3) Load 2995(var13) 3326:1033(i8vec3) Load 3018(var36) 3327: 125(ivec3) UConvert 3326 3328: 125(ivec3) UMod 3325 3327 Store 3324(var98) 3328 3330:133(i64vec3) Load 2997(var15) 3331:1033(i8vec3) Load 3018(var36) 3332:133(i64vec3) UConvert 3331 3333:133(i64vec3) UMod 3330 3332 Store 3329(var99) 3333 3335: 145(ivec4) Load 3001(var19) 3336:1038(i8vec4) Load 3019(var37) 3337: 145(ivec4) UConvert 3336 3338: 145(ivec4) UMod 3335 3337 Store 3334(var100) 3338 3340:153(i64vec4) Load 3003(var21) 3341:1038(i8vec4) Load 3019(var37) 3342:153(i64vec4) UConvert 3341 3343:153(i64vec4) UMod 3340 3342 Store 3339(var101) 3343 Return FunctionEnd 20(testUnaryOps(): 2 Function None 3 21: Label 3344(var0): 31(ptr) Variable Function 3345(var1): 37(ptr) Variable Function 3346(var2): 25(ptr) Variable Function 3347(var3): 43(ptr) Variable Function 3348(var4): 49(ptr) Variable Function 3349(var5): 55(ptr) Variable Function 3350(var6): 177(ptr) Variable Function 3351(var7): 107(ptr) Variable Function 3352(var8): 111(ptr) Variable Function 3353(var9): 115(ptr) Variable Function 3354(var10): 118(ptr) Variable Function 3355(var11): 122(ptr) Variable Function 3356(var12): 192(ptr) Variable Function 3357(var13): 126(ptr) Variable Function 3358(var14): 130(ptr) Variable Function 3359(var15): 134(ptr) Variable Function 3360(var16): 138(ptr) Variable Function 3361(var17): 142(ptr) Variable Function 3362(var18): 205(ptr) Variable Function 3363(var19): 146(ptr) Variable Function 3364(var20): 150(ptr) Variable Function 3365(var21): 154(ptr) Variable Function 3366(var22): 157(ptr) Variable Function 3367(var23): 161(ptr) Variable Function 3368(var24): 983(ptr) Variable Function 3369(var25): 899(ptr) Variable Function 3370(var26): 989(ptr) Variable Function 3371(var27): 994(ptr) Variable Function 3372(var28): 999(ptr) Variable Function 3373(var29): 1004(ptr) Variable Function 3374(var30): 1009(ptr) Variable Function 3375(var31): 1014(ptr) Variable Function 3376(var32): 893(ptr) Variable Function 3377(var33): 1020(ptr) Variable Function 3378(var34): 1024(ptr) Variable Function 3379(var35): 1029(ptr) Variable Function 3380(var36): 1034(ptr) Variable Function 3381(var37): 1039(ptr) Variable Function 3382(var38): 1044(ptr) Variable Function 3383(var39): 1048(ptr) Variable Function 3384(var40): 1053(ptr) Variable Function 3385(var41): 1058(ptr) Variable Function 3386(var42): 37(ptr) Variable Function 3389(var43): 25(ptr) Variable Function 3392(var44): 43(ptr) Variable Function 3395(var45): 49(ptr) Variable Function 3398(var46): 55(ptr) Variable Function 3401(var47): 107(ptr) Variable Function 3404(var48): 111(ptr) Variable Function 3407(var49): 115(ptr) Variable Function 3410(var50): 118(ptr) Variable Function 3413(var51): 122(ptr) Variable Function 3416(var52): 126(ptr) Variable Function 3419(var53): 130(ptr) Variable Function 3422(var54): 134(ptr) Variable Function 3425(var55): 138(ptr) Variable Function 3428(var56): 142(ptr) Variable Function 3431(var57): 146(ptr) Variable Function 3434(var58): 150(ptr) Variable Function 3437(var59): 154(ptr) Variable Function 3440(var60): 157(ptr) Variable Function 3443(var61): 161(ptr) Variable Function 3446(var62): 31(ptr) Variable Function 3449(var63): 25(ptr) Variable Function 3452(var64): 37(ptr) Variable Function 3455(var65): 43(ptr) Variable Function 3458(var66): 49(ptr) Variable Function 3461(var67): 55(ptr) Variable Function 3464(var68): 31(ptr) Variable Function 3467(var69): 25(ptr) Variable Function 3470(var70): 37(ptr) Variable Function 3473(var71): 43(ptr) Variable Function 3476(var72): 49(ptr) Variable Function 3479(var73): 55(ptr) Variable Function 3482(var74): 177(ptr) Variable Function 3485(var75): 111(ptr) Variable Function 3488(var76): 107(ptr) Variable Function 3491(var77): 115(ptr) Variable Function 3494(var78): 118(ptr) Variable Function 3497(var79): 122(ptr) Variable Function 3500(var80): 177(ptr) Variable Function 3503(var81): 111(ptr) Variable Function 3506(var82): 107(ptr) Variable Function 3509(var83): 115(ptr) Variable Function 3512(var84): 118(ptr) Variable Function 3515(var85): 122(ptr) Variable Function 3518(var86): 192(ptr) Variable Function 3521(var87): 130(ptr) Variable Function 3524(var88): 126(ptr) Variable Function 3527(var89): 134(ptr) Variable Function 3530(var90): 138(ptr) Variable Function 3533(var91): 142(ptr) Variable Function 3536(var92): 126(ptr) Variable Function 3539(var93): 134(ptr) Variable Function 3542(var94): 138(ptr) Variable Function 3545(var95): 142(ptr) Variable Function 3548(var96): 205(ptr) Variable Function 3551(var97): 150(ptr) Variable Function 3554(var98): 146(ptr) Variable Function 3557(var99): 154(ptr) Variable Function 3560(var100): 157(ptr) Variable Function 3563(var101): 161(ptr) Variable Function 3566(var102): 146(ptr) Variable Function 3569(var103): 154(ptr) Variable Function 3572(var104): 157(ptr) Variable Function 3575(var105): 161(ptr) Variable Function 3578(var106): 43(ptr) Variable Function 3581(var107): 55(ptr) Variable Function 3584(var108): 115(ptr) Variable Function 3587(var109): 122(ptr) Variable Function 3590(var110): 134(ptr) Variable Function 3593(var111): 142(ptr) Variable Function 3596(var112): 154(ptr) Variable Function 3599(var113): 161(ptr) Variable Function 3602(var114): 43(ptr) Variable Function 3605(var115): 49(ptr) Variable Function 3608(var116): 55(ptr) Variable Function 3611(var117): 115(ptr) Variable Function 3614(var118): 118(ptr) Variable Function 3617(var119): 122(ptr) Variable Function 3620(var120): 134(ptr) Variable Function 3623(var121): 138(ptr) Variable Function 3626(var122): 142(ptr) Variable Function 3629(var123): 154(ptr) Variable Function 3632(var124): 157(ptr) Variable Function 3635(var125): 161(ptr) Variable Function 3638(var126): 37(ptr) Variable Function 3641(var127): 43(ptr) Variable Function 3644(var128): 49(ptr) Variable Function 3647(var129): 55(ptr) Variable Function 3650(var130): 37(ptr) Variable Function 3653(var131): 43(ptr) Variable Function 3656(var132): 49(ptr) Variable Function 3659(var133): 55(ptr) Variable Function 3662(var134): 107(ptr) Variable Function 3665(var135): 115(ptr) Variable Function 3668(var136): 118(ptr) Variable Function 3671(var137): 122(ptr) Variable Function 3674(var138): 107(ptr) Variable Function 3677(var139): 115(ptr) Variable Function 3680(var140): 118(ptr) Variable Function 3683(var141): 122(ptr) Variable Function 3686(var142): 126(ptr) Variable Function 3689(var143): 134(ptr) Variable Function 3692(var144): 138(ptr) Variable Function 3695(var145): 142(ptr) Variable Function 3698(var146): 146(ptr) Variable Function 3701(var147): 154(ptr) Variable Function 3704(var148): 157(ptr) Variable Function 3707(var149): 161(ptr) Variable Function 3710(var150): 55(ptr) Variable Function 3713(var151): 122(ptr) Variable Function 3716(var152): 142(ptr) Variable Function 3719(var153): 161(ptr) Variable Function 3722(var154): 55(ptr) Variable Function 3725(var155): 122(ptr) Variable Function 3728(var156): 142(ptr) Variable Function 3731(var157): 161(ptr) Variable Function 3734(var158): 49(ptr) Variable Function 3737(var159): 55(ptr) Variable Function 3740(var160): 118(ptr) Variable Function 3743(var161): 122(ptr) Variable Function 3746(var162): 138(ptr) Variable Function 3749(var163): 142(ptr) Variable Function 3752(var164): 157(ptr) Variable Function 3755(var165): 161(ptr) Variable Function 3758(var166): 37(ptr) Variable Function 3762(var167): 25(ptr) Variable Function 3766(var168): 43(ptr) Variable Function 3769(var169): 49(ptr) Variable Function 3773(var170): 55(ptr) Variable Function 3776(var171): 107(ptr) Variable Function 3780(var172): 111(ptr) Variable Function 3784(var173): 115(ptr) Variable Function 3788(var174): 118(ptr) Variable Function 3792(var175): 122(ptr) Variable Function 3796(var176): 126(ptr) Variable Function 3800(var177): 130(ptr) Variable Function 3804(var178): 134(ptr) Variable Function 3808(var179): 138(ptr) Variable Function 3812(var180): 142(ptr) Variable Function 3816(var181): 146(ptr) Variable Function 3820(var182): 150(ptr) Variable Function 3824(var183): 154(ptr) Variable Function 3828(var184): 157(ptr) Variable Function 3832(var185): 161(ptr) Variable Function 3836(var186): 31(ptr) Variable Function 3839(var187): 25(ptr) Variable Function 3842(var188): 37(ptr) Variable Function 3845(var189): 43(ptr) Variable Function 3848(var190): 49(ptr) Variable Function 3851(var191): 55(ptr) Variable Function 3854(var192): 31(ptr) Variable Function 3857(var193): 25(ptr) Variable Function 3860(var194): 37(ptr) Variable Function 3863(var195): 43(ptr) Variable Function 3866(var196): 49(ptr) Variable Function 3869(var197): 55(ptr) Variable Function 3872(var198): 177(ptr) Variable Function 3876(var199): 111(ptr) Variable Function 3880(var200): 107(ptr) Variable Function 3884(var201): 115(ptr) Variable Function 3888(var202): 118(ptr) Variable Function 3892(var203): 122(ptr) Variable Function 3896(var204): 177(ptr) Variable Function 3900(var205): 111(ptr) Variable Function 3904(var206): 107(ptr) Variable Function 3908(var207): 115(ptr) Variable Function 3912(var208): 118(ptr) Variable Function 3916(var209): 122(ptr) Variable Function 3920(var210): 192(ptr) Variable Function 3924(var211): 130(ptr) Variable Function 3928(var212): 126(ptr) Variable Function 3932(var213): 134(ptr) Variable Function 3936(var214): 138(ptr) Variable Function 3940(var215): 142(ptr) Variable Function 3944(var216): 126(ptr) Variable Function 3948(var217): 134(ptr) Variable Function 3952(var218): 138(ptr) Variable Function 3956(var219): 142(ptr) Variable Function 3960(var220): 205(ptr) Variable Function 3964(var221): 150(ptr) Variable Function 3968(var222): 146(ptr) Variable Function 3972(var223): 154(ptr) Variable Function 3976(var224): 157(ptr) Variable Function 3980(var225): 161(ptr) Variable Function 3984(var226): 146(ptr) Variable Function 3988(var227): 154(ptr) Variable Function 3992(var228): 157(ptr) Variable Function 3996(var229): 161(ptr) Variable Function 4000(var230): 43(ptr) Variable Function 4003(var231): 55(ptr) Variable Function 4006(var232): 115(ptr) Variable Function 4010(var233): 122(ptr) Variable Function 4014(var234): 134(ptr) Variable Function 4018(var235): 142(ptr) Variable Function 4022(var236): 154(ptr) Variable Function 4026(var237): 161(ptr) Variable Function 4030(var238): 43(ptr) Variable Function 4033(var239): 49(ptr) Variable Function 4036(var240): 55(ptr) Variable Function 4039(var241): 115(ptr) Variable Function 4043(var242): 118(ptr) Variable Function 4047(var243): 122(ptr) Variable Function 4051(var244): 134(ptr) Variable Function 4055(var245): 138(ptr) Variable Function 4059(var246): 142(ptr) Variable Function 4063(var247): 154(ptr) Variable Function 4067(var248): 157(ptr) Variable Function 4071(var249): 161(ptr) Variable Function 4075(var250): 37(ptr) Variable Function 4078(var251): 43(ptr) Variable Function 4081(var252): 49(ptr) Variable Function 4084(var253): 55(ptr) Variable Function 4087(var254): 37(ptr) Variable Function 4090(var255): 43(ptr) Variable Function 4093(var256): 49(ptr) Variable Function 4096(var257): 55(ptr) Variable Function 4099(var258): 107(ptr) Variable Function 4103(var259): 115(ptr) Variable Function 4107(var260): 118(ptr) Variable Function 4111(var261): 122(ptr) Variable Function 4115(var262): 107(ptr) Variable Function 4119(var263): 115(ptr) Variable Function 4123(var264): 118(ptr) Variable Function 4127(var265): 122(ptr) Variable Function 4131(var266): 126(ptr) Variable Function 4135(var267): 134(ptr) Variable Function 4139(var268): 138(ptr) Variable Function 4143(var269): 142(ptr) Variable Function 4147(var270): 146(ptr) Variable Function 4151(var271): 154(ptr) Variable Function 4155(var272): 157(ptr) Variable Function 4159(var273): 161(ptr) Variable Function 4163(var274): 55(ptr) Variable Function 4166(var275): 122(ptr) Variable Function 4170(var276): 142(ptr) Variable Function 4174(var277): 161(ptr) Variable Function 4178(var278): 55(ptr) Variable Function 4181(var279): 122(ptr) Variable Function 4185(var280): 142(ptr) Variable Function 4189(var281): 161(ptr) Variable Function 4193(var282): 49(ptr) Variable Function 4196(var283): 55(ptr) Variable Function 4199(var284): 118(ptr) Variable Function 4203(var285): 122(ptr) Variable Function 4207(var286): 138(ptr) Variable Function 4211(var287): 142(ptr) Variable Function 4215(var288): 157(ptr) Variable Function 4219(var289): 161(ptr) Variable Function 4223(var290): 37(ptr) Variable Function 4226(var291): 25(ptr) Variable Function 4229(var292): 43(ptr) Variable Function 4232(var293): 49(ptr) Variable Function 4235(var294): 55(ptr) Variable Function 4238(var295): 107(ptr) Variable Function 4242(var296): 111(ptr) Variable Function 4246(var297): 115(ptr) Variable Function 4250(var298): 118(ptr) Variable Function 4254(var299): 122(ptr) Variable Function 4258(var300): 126(ptr) Variable Function 4262(var301): 130(ptr) Variable Function 4266(var302): 134(ptr) Variable Function 4270(var303): 138(ptr) Variable Function 4274(var304): 142(ptr) Variable Function 4278(var305): 146(ptr) Variable Function 4282(var306): 150(ptr) Variable Function 4286(var307): 154(ptr) Variable Function 4290(var308): 157(ptr) Variable Function 4294(var309): 161(ptr) Variable Function 4298(var310): 31(ptr) Variable Function 4301(var311): 25(ptr) Variable Function 4304(var312): 37(ptr) Variable Function 4307(var313): 43(ptr) Variable Function 4310(var314): 49(ptr) Variable Function 4313(var315): 55(ptr) Variable Function 4316(var316): 31(ptr) Variable Function 4319(var317): 25(ptr) Variable Function 4322(var318): 37(ptr) Variable Function 4325(var319): 43(ptr) Variable Function 4328(var320): 49(ptr) Variable Function 4331(var321): 55(ptr) Variable Function 4334(var322): 177(ptr) Variable Function 4338(var323): 111(ptr) Variable Function 4342(var324): 107(ptr) Variable Function 4346(var325): 115(ptr) Variable Function 4350(var326): 118(ptr) Variable Function 4354(var327): 122(ptr) Variable Function 4358(var328): 177(ptr) Variable Function 4362(var329): 111(ptr) Variable Function 4366(var330): 107(ptr) Variable Function 4370(var331): 115(ptr) Variable Function 4374(var332): 118(ptr) Variable Function 4378(var333): 122(ptr) Variable Function 4382(var334): 192(ptr) Variable Function 4386(var335): 130(ptr) Variable Function 4390(var336): 126(ptr) Variable Function 4394(var337): 134(ptr) Variable Function 4398(var338): 138(ptr) Variable Function 4402(var339): 142(ptr) Variable Function 4406(var340): 126(ptr) Variable Function 4410(var341): 134(ptr) Variable Function 4414(var342): 138(ptr) Variable Function 4418(var343): 142(ptr) Variable Function 4422(var344): 205(ptr) Variable Function 4426(var345): 150(ptr) Variable Function 4430(var346): 146(ptr) Variable Function 4434(var347): 154(ptr) Variable Function 4438(var348): 157(ptr) Variable Function 4442(var349): 161(ptr) Variable Function 4446(var350): 146(ptr) Variable Function 4450(var351): 154(ptr) Variable Function 4454(var352): 157(ptr) Variable Function 4458(var353): 161(ptr) Variable Function 4462(var354): 43(ptr) Variable Function 4465(var355): 55(ptr) Variable Function 4468(var356): 115(ptr) Variable Function 4472(var357): 122(ptr) Variable Function 4476(var358): 134(ptr) Variable Function 4480(var359): 142(ptr) Variable Function 4484(var360): 154(ptr) Variable Function 4488(var361): 161(ptr) Variable Function 4492(var362): 43(ptr) Variable Function 4495(var363): 49(ptr) Variable Function 4498(var364): 55(ptr) Variable Function 4501(var365): 115(ptr) Variable Function 4505(var366): 118(ptr) Variable Function 4509(var367): 122(ptr) Variable Function 4513(var368): 134(ptr) Variable Function 4517(var369): 138(ptr) Variable Function 4521(var370): 142(ptr) Variable Function 4525(var371): 154(ptr) Variable Function 4529(var372): 157(ptr) Variable Function 4533(var373): 161(ptr) Variable Function 4537(var374): 37(ptr) Variable Function 4540(var375): 43(ptr) Variable Function 4543(var376): 49(ptr) Variable Function 4546(var377): 55(ptr) Variable Function 4549(var378): 37(ptr) Variable Function 4552(var379): 43(ptr) Variable Function 4555(var380): 49(ptr) Variable Function 4558(var381): 55(ptr) Variable Function 4561(var382): 107(ptr) Variable Function 4565(var383): 115(ptr) Variable Function 4569(var384): 118(ptr) Variable Function 4573(var385): 122(ptr) Variable Function 4577(var386): 107(ptr) Variable Function 4581(var387): 115(ptr) Variable Function 4585(var388): 118(ptr) Variable Function 4589(var389): 122(ptr) Variable Function 4593(var390): 126(ptr) Variable Function 4597(var391): 134(ptr) Variable Function 4601(var392): 138(ptr) Variable Function 4605(var393): 142(ptr) Variable Function 4609(var394): 146(ptr) Variable Function 4613(var395): 154(ptr) Variable Function 4617(var396): 157(ptr) Variable Function 4621(var397): 161(ptr) Variable Function 4625(var398): 55(ptr) Variable Function 4628(var399): 122(ptr) Variable Function 4632(var400): 142(ptr) Variable Function 4636(var401): 161(ptr) Variable Function 4640(var402): 55(ptr) Variable Function 4643(var403): 122(ptr) Variable Function 4647(var404): 142(ptr) Variable Function 4651(var405): 161(ptr) Variable Function 4655(var406): 49(ptr) Variable Function 4658(var407): 55(ptr) Variable Function 4661(var408): 118(ptr) Variable Function 4665(var409): 122(ptr) Variable Function 4669(var410): 138(ptr) Variable Function 4673(var411): 142(ptr) Variable Function 4677(var412): 157(ptr) Variable Function 4681(var413): 161(ptr) Variable Function Store 3344(var0) 73 Store 3345(var1) 919 Store 3346(var2) 921 Store 3347(var3) 923 Store 3348(var4) 925 Store 3349(var5) 927 Store 3350(var6) 930 Store 3351(var7) 933 Store 3352(var8) 936 Store 3353(var9) 939 Store 3354(var10) 942 Store 3355(var11) 945 Store 3356(var12) 948 Store 3357(var13) 951 Store 3358(var14) 954 Store 3359(var15) 957 Store 3360(var16) 960 Store 3361(var17) 963 Store 3362(var18) 966 Store 3363(var19) 969 Store 3364(var20) 972 Store 3365(var21) 975 Store 3366(var22) 978 Store 3367(var23) 981 Store 3368(var24) 985 Store 3369(var25) 987 Store 3370(var26) 992 Store 3371(var27) 997 Store 3372(var28) 1002 Store 3373(var29) 1007 Store 3374(var30) 1012 Store 3375(var31) 1017 Store 3376(var32) 1019 Store 3377(var33) 1022 Store 3378(var34) 1027 Store 3379(var35) 1032 Store 3380(var36) 1037 Store 3381(var37) 1042 Store 3382(var38) 1046 Store 3383(var39) 1051 Store 3384(var40) 1056 Store 3385(var41) 1061 3387: 36(int) Load 3345(var1) 3388: 36(int) SNegate 3387 Store 3386(var42) 3388 3390: 24(int64_t) Load 3346(var2) 3391: 24(int64_t) SNegate 3390 Store 3389(var43) 3391 3393: 42(int64_t) Load 3347(var3) 3394: 42(int64_t) SNegate 3393 Store 3392(var44) 3394 3396: 48(float) Load 3348(var4) 3397: 48(float) FNegate 3396 Store 3395(var45) 3397 3399:54(float64_t) Load 3349(var5) 3400:54(float64_t) FNegate 3399 Store 3398(var46) 3400 3402: 106(ivec2) Load 3351(var7) 3403: 106(ivec2) SNegate 3402 Store 3401(var47) 3403 3405:110(i64vec2) Load 3352(var8) 3406:110(i64vec2) SNegate 3405 Store 3404(var48) 3406 3408:114(i64vec2) Load 3353(var9) 3409:114(i64vec2) SNegate 3408 Store 3407(var49) 3409 3411: 84(fvec2) Load 3354(var10) 3412: 84(fvec2) FNegate 3411 Store 3410(var50) 3412 3414:121(f64vec2) Load 3355(var11) 3415:121(f64vec2) FNegate 3414 Store 3413(var51) 3415 3417: 125(ivec3) Load 3357(var13) 3418: 125(ivec3) SNegate 3417 Store 3416(var52) 3418 3420:129(i64vec3) Load 3358(var14) 3421:129(i64vec3) SNegate 3420 Store 3419(var53) 3421 3423:133(i64vec3) Load 3359(var15) 3424:133(i64vec3) SNegate 3423 Store 3422(var54) 3424 3426: 137(fvec3) Load 3360(var16) 3427: 137(fvec3) FNegate 3426 Store 3425(var55) 3427 3429:141(f64vec3) Load 3361(var17) 3430:141(f64vec3) FNegate 3429 Store 3428(var56) 3430 3432: 145(ivec4) Load 3363(var19) 3433: 145(ivec4) SNegate 3432 Store 3431(var57) 3433 3435:149(i64vec4) Load 3364(var20) 3436:149(i64vec4) SNegate 3435 Store 3434(var58) 3436 3438:153(i64vec4) Load 3365(var21) 3439:153(i64vec4) SNegate 3438 Store 3437(var59) 3439 3441: 88(fvec4) Load 3366(var22) 3442: 88(fvec4) FNegate 3441 Store 3440(var60) 3442 3444:160(f64vec4) Load 3367(var23) 3445:160(f64vec4) FNegate 3444 Store 3443(var61) 3445 3447: 30(int) Load 3344(var0) 3448: 30(int) SNegate 3447 Store 3446(var62) 3448 3450: 24(int64_t) Load 3346(var2) 3451: 24(int64_t) SNegate 3450 Store 3449(var63) 3451 3453: 36(int) Load 3345(var1) 3454: 36(int) SNegate 3453 Store 3452(var64) 3454 3456: 42(int64_t) Load 3347(var3) 3457: 42(int64_t) SNegate 3456 Store 3455(var65) 3457 3459: 48(float) Load 3348(var4) 3460: 48(float) FNegate 3459 Store 3458(var66) 3460 3462:54(float64_t) Load 3349(var5) 3463:54(float64_t) FNegate 3462 Store 3461(var67) 3463 3465: 30(int) Load 3344(var0) 3466: 30(int) SNegate 3465 Store 3464(var68) 3466 3468: 24(int64_t) Load 3346(var2) 3469: 24(int64_t) SNegate 3468 Store 3467(var69) 3469 3471: 36(int) Load 3345(var1) 3472: 36(int) SNegate 3471 Store 3470(var70) 3472 3474: 42(int64_t) Load 3347(var3) 3475: 42(int64_t) SNegate 3474 Store 3473(var71) 3475 3477: 48(float) Load 3348(var4) 3478: 48(float) FNegate 3477 Store 3476(var72) 3478 3480:54(float64_t) Load 3349(var5) 3481:54(float64_t) FNegate 3480 Store 3479(var73) 3481 3483: 176(ivec2) Load 3350(var6) 3484: 176(ivec2) SNegate 3483 Store 3482(var74) 3484 3486:110(i64vec2) Load 3352(var8) 3487:110(i64vec2) SNegate 3486 Store 3485(var75) 3487 3489: 106(ivec2) Load 3351(var7) 3490: 106(ivec2) SNegate 3489 Store 3488(var76) 3490 3492:114(i64vec2) Load 3353(var9) 3493:114(i64vec2) SNegate 3492 Store 3491(var77) 3493 3495: 84(fvec2) Load 3354(var10) 3496: 84(fvec2) FNegate 3495 Store 3494(var78) 3496 3498:121(f64vec2) Load 3355(var11) 3499:121(f64vec2) FNegate 3498 Store 3497(var79) 3499 3501: 176(ivec2) Load 3350(var6) 3502: 176(ivec2) SNegate 3501 Store 3500(var80) 3502 3504:110(i64vec2) Load 3352(var8) 3505:110(i64vec2) SNegate 3504 Store 3503(var81) 3505 3507: 106(ivec2) Load 3351(var7) 3508: 106(ivec2) SNegate 3507 Store 3506(var82) 3508 3510:114(i64vec2) Load 3353(var9) 3511:114(i64vec2) SNegate 3510 Store 3509(var83) 3511 3513: 84(fvec2) Load 3354(var10) 3514: 84(fvec2) FNegate 3513 Store 3512(var84) 3514 3516:121(f64vec2) Load 3355(var11) 3517:121(f64vec2) FNegate 3516 Store 3515(var85) 3517 3519: 191(ivec3) Load 3356(var12) 3520: 191(ivec3) SNegate 3519 Store 3518(var86) 3520 3522:129(i64vec3) Load 3358(var14) 3523:129(i64vec3) SNegate 3522 Store 3521(var87) 3523 3525: 125(ivec3) Load 3357(var13) 3526: 125(ivec3) SNegate 3525 Store 3524(var88) 3526 3528:133(i64vec3) Load 3359(var15) 3529:133(i64vec3) SNegate 3528 Store 3527(var89) 3529 3531: 137(fvec3) Load 3360(var16) 3532: 137(fvec3) FNegate 3531 Store 3530(var90) 3532 3534:141(f64vec3) Load 3361(var17) 3535:141(f64vec3) FNegate 3534 Store 3533(var91) 3535 3537: 125(ivec3) Load 3357(var13) 3538: 125(ivec3) SNegate 3537 Store 3536(var92) 3538 3540:133(i64vec3) Load 3359(var15) 3541:133(i64vec3) SNegate 3540 Store 3539(var93) 3541 3543: 137(fvec3) Load 3360(var16) 3544: 137(fvec3) FNegate 3543 Store 3542(var94) 3544 3546:141(f64vec3) Load 3361(var17) 3547:141(f64vec3) FNegate 3546 Store 3545(var95) 3547 3549: 204(ivec4) Load 3362(var18) 3550: 204(ivec4) SNegate 3549 Store 3548(var96) 3550 3552:149(i64vec4) Load 3364(var20) 3553:149(i64vec4) SNegate 3552 Store 3551(var97) 3553 3555: 145(ivec4) Load 3363(var19) 3556: 145(ivec4) SNegate 3555 Store 3554(var98) 3556 3558:153(i64vec4) Load 3365(var21) 3559:153(i64vec4) SNegate 3558 Store 3557(var99) 3559 3561: 88(fvec4) Load 3366(var22) 3562: 88(fvec4) FNegate 3561 Store 3560(var100) 3562 3564:160(f64vec4) Load 3367(var23) 3565:160(f64vec4) FNegate 3564 Store 3563(var101) 3565 3567: 145(ivec4) Load 3363(var19) 3568: 145(ivec4) SNegate 3567 Store 3566(var102) 3568 3570:153(i64vec4) Load 3365(var21) 3571:153(i64vec4) SNegate 3570 Store 3569(var103) 3571 3573: 88(fvec4) Load 3366(var22) 3574: 88(fvec4) FNegate 3573 Store 3572(var104) 3574 3576:160(f64vec4) Load 3367(var23) 3577:160(f64vec4) FNegate 3576 Store 3575(var105) 3577 3579: 42(int64_t) Load 3347(var3) 3580: 42(int64_t) SNegate 3579 Store 3578(var106) 3580 3582:54(float64_t) Load 3349(var5) 3583:54(float64_t) FNegate 3582 Store 3581(var107) 3583 3585:114(i64vec2) Load 3353(var9) 3586:114(i64vec2) SNegate 3585 Store 3584(var108) 3586 3588:121(f64vec2) Load 3355(var11) 3589:121(f64vec2) FNegate 3588 Store 3587(var109) 3589 3591:133(i64vec3) Load 3359(var15) 3592:133(i64vec3) SNegate 3591 Store 3590(var110) 3592 3594:141(f64vec3) Load 3361(var17) 3595:141(f64vec3) FNegate 3594 Store 3593(var111) 3595 3597:153(i64vec4) Load 3365(var21) 3598:153(i64vec4) SNegate 3597 Store 3596(var112) 3598 3600:160(f64vec4) Load 3367(var23) 3601:160(f64vec4) FNegate 3600 Store 3599(var113) 3601 3603: 42(int64_t) Load 3347(var3) 3604: 42(int64_t) SNegate 3603 Store 3602(var114) 3604 3606: 48(float) Load 3348(var4) 3607: 48(float) FNegate 3606 Store 3605(var115) 3607 3609:54(float64_t) Load 3349(var5) 3610:54(float64_t) FNegate 3609 Store 3608(var116) 3610 3612:114(i64vec2) Load 3353(var9) 3613:114(i64vec2) SNegate 3612 Store 3611(var117) 3613 3615: 84(fvec2) Load 3354(var10) 3616: 84(fvec2) FNegate 3615 Store 3614(var118) 3616 3618:121(f64vec2) Load 3355(var11) 3619:121(f64vec2) FNegate 3618 Store 3617(var119) 3619 3621:133(i64vec3) Load 3359(var15) 3622:133(i64vec3) SNegate 3621 Store 3620(var120) 3622 3624: 137(fvec3) Load 3360(var16) 3625: 137(fvec3) FNegate 3624 Store 3623(var121) 3625 3627:141(f64vec3) Load 3361(var17) 3628:141(f64vec3) FNegate 3627 Store 3626(var122) 3628 3630:153(i64vec4) Load 3365(var21) 3631:153(i64vec4) SNegate 3630 Store 3629(var123) 3631 3633: 88(fvec4) Load 3366(var22) 3634: 88(fvec4) FNegate 3633 Store 3632(var124) 3634 3636:160(f64vec4) Load 3367(var23) 3637:160(f64vec4) FNegate 3636 Store 3635(var125) 3637 3639: 36(int) Load 3345(var1) 3640: 36(int) SNegate 3639 Store 3638(var126) 3640 3642: 42(int64_t) Load 3347(var3) 3643: 42(int64_t) SNegate 3642 Store 3641(var127) 3643 3645: 48(float) Load 3348(var4) 3646: 48(float) FNegate 3645 Store 3644(var128) 3646 3648:54(float64_t) Load 3349(var5) 3649:54(float64_t) FNegate 3648 Store 3647(var129) 3649 3651: 36(int) Load 3345(var1) 3652: 36(int) SNegate 3651 Store 3650(var130) 3652 3654: 42(int64_t) Load 3347(var3) 3655: 42(int64_t) SNegate 3654 Store 3653(var131) 3655 3657: 48(float) Load 3348(var4) 3658: 48(float) FNegate 3657 Store 3656(var132) 3658 3660:54(float64_t) Load 3349(var5) 3661:54(float64_t) FNegate 3660 Store 3659(var133) 3661 3663: 106(ivec2) Load 3351(var7) 3664: 106(ivec2) SNegate 3663 Store 3662(var134) 3664 3666:114(i64vec2) Load 3353(var9) 3667:114(i64vec2) SNegate 3666 Store 3665(var135) 3667 3669: 84(fvec2) Load 3354(var10) 3670: 84(fvec2) FNegate 3669 Store 3668(var136) 3670 3672:121(f64vec2) Load 3355(var11) 3673:121(f64vec2) FNegate 3672 Store 3671(var137) 3673 3675: 106(ivec2) Load 3351(var7) 3676: 106(ivec2) SNegate 3675 Store 3674(var138) 3676 3678:114(i64vec2) Load 3353(var9) 3679:114(i64vec2) SNegate 3678 Store 3677(var139) 3679 3681: 84(fvec2) Load 3354(var10) 3682: 84(fvec2) FNegate 3681 Store 3680(var140) 3682 3684:121(f64vec2) Load 3355(var11) 3685:121(f64vec2) FNegate 3684 Store 3683(var141) 3685 3687: 125(ivec3) Load 3357(var13) 3688: 125(ivec3) SNegate 3687 Store 3686(var142) 3688 3690:133(i64vec3) Load 3359(var15) 3691:133(i64vec3) SNegate 3690 Store 3689(var143) 3691 3693: 137(fvec3) Load 3360(var16) 3694: 137(fvec3) FNegate 3693 Store 3692(var144) 3694 3696:141(f64vec3) Load 3361(var17) 3697:141(f64vec3) FNegate 3696 Store 3695(var145) 3697 3699: 145(ivec4) Load 3363(var19) 3700: 145(ivec4) SNegate 3699 Store 3698(var146) 3700 3702:153(i64vec4) Load 3365(var21) 3703:153(i64vec4) SNegate 3702 Store 3701(var147) 3703 3705: 88(fvec4) Load 3366(var22) 3706: 88(fvec4) FNegate 3705 Store 3704(var148) 3706 3708:160(f64vec4) Load 3367(var23) 3709:160(f64vec4) FNegate 3708 Store 3707(var149) 3709 3711:54(float64_t) Load 3349(var5) 3712:54(float64_t) FNegate 3711 Store 3710(var150) 3712 3714:121(f64vec2) Load 3355(var11) 3715:121(f64vec2) FNegate 3714 Store 3713(var151) 3715 3717:141(f64vec3) Load 3361(var17) 3718:141(f64vec3) FNegate 3717 Store 3716(var152) 3718 3720:160(f64vec4) Load 3367(var23) 3721:160(f64vec4) FNegate 3720 Store 3719(var153) 3721 3723:54(float64_t) Load 3349(var5) 3724:54(float64_t) FNegate 3723 Store 3722(var154) 3724 3726:121(f64vec2) Load 3355(var11) 3727:121(f64vec2) FNegate 3726 Store 3725(var155) 3727 3729:141(f64vec3) Load 3361(var17) 3730:141(f64vec3) FNegate 3729 Store 3728(var156) 3730 3732:160(f64vec4) Load 3367(var23) 3733:160(f64vec4) FNegate 3732 Store 3731(var157) 3733 3735: 48(float) Load 3348(var4) 3736: 48(float) FNegate 3735 Store 3734(var158) 3736 3738:54(float64_t) Load 3349(var5) 3739:54(float64_t) FNegate 3738 Store 3737(var159) 3739 3741: 84(fvec2) Load 3354(var10) 3742: 84(fvec2) FNegate 3741 Store 3740(var160) 3742 3744:121(f64vec2) Load 3355(var11) 3745:121(f64vec2) FNegate 3744 Store 3743(var161) 3745 3747: 137(fvec3) Load 3360(var16) 3748: 137(fvec3) FNegate 3747 Store 3746(var162) 3748 3750:141(f64vec3) Load 3361(var17) 3751:141(f64vec3) FNegate 3750 Store 3749(var163) 3751 3753: 88(fvec4) Load 3366(var22) 3754: 88(fvec4) FNegate 3753 Store 3752(var164) 3754 3756:160(f64vec4) Load 3367(var23) 3757:160(f64vec4) FNegate 3756 Store 3755(var165) 3757 3759: 36(int) Load 3345(var1) 3761: 36(int) IAdd 3759 3760 Store 3345(var1) 3761 Store 3758(var166) 3761 3763: 24(int64_t) Load 3346(var2) 3765: 24(int64_t) IAdd 3763 3764 Store 3346(var2) 3765 Store 3762(var167) 3765 3767: 42(int64_t) Load 3347(var3) 3768: 42(int64_t) IAdd 3767 3764 Store 3347(var3) 3768 Store 3766(var168) 3768 3770: 48(float) Load 3348(var4) 3772: 48(float) FAdd 3770 3771 Store 3348(var4) 3772 Store 3769(var169) 3772 3774:54(float64_t) Load 3349(var5) 3775:54(float64_t) FAdd 3774 897 Store 3349(var5) 3775 Store 3773(var170) 3775 3777: 106(ivec2) Load 3351(var7) 3778: 176(ivec2) CompositeConstruct 3760 3760 3779: 106(ivec2) IAdd 3777 3778 Store 3351(var7) 3779 Store 3776(var171) 3779 3781:110(i64vec2) Load 3352(var8) 3782:110(i64vec2) CompositeConstruct 3764 3764 3783:110(i64vec2) IAdd 3781 3782 Store 3352(var8) 3783 Store 3780(var172) 3783 3785:114(i64vec2) Load 3353(var9) 3786:110(i64vec2) CompositeConstruct 3764 3764 3787:114(i64vec2) IAdd 3785 3786 Store 3353(var9) 3787 Store 3784(var173) 3787 3789: 84(fvec2) Load 3354(var10) 3790: 84(fvec2) CompositeConstruct 3771 3771 3791: 84(fvec2) FAdd 3789 3790 Store 3354(var10) 3791 Store 3788(var174) 3791 3793:121(f64vec2) Load 3355(var11) 3794:121(f64vec2) CompositeConstruct 897 897 3795:121(f64vec2) FAdd 3793 3794 Store 3355(var11) 3795 Store 3792(var175) 3795 3797: 125(ivec3) Load 3357(var13) 3798: 191(ivec3) CompositeConstruct 3760 3760 3760 3799: 125(ivec3) IAdd 3797 3798 Store 3357(var13) 3799 Store 3796(var176) 3799 3801:129(i64vec3) Load 3358(var14) 3802:129(i64vec3) CompositeConstruct 3764 3764 3764 3803:129(i64vec3) IAdd 3801 3802 Store 3358(var14) 3803 Store 3800(var177) 3803 3805:133(i64vec3) Load 3359(var15) 3806:129(i64vec3) CompositeConstruct 3764 3764 3764 3807:133(i64vec3) IAdd 3805 3806 Store 3359(var15) 3807 Store 3804(var178) 3807 3809: 137(fvec3) Load 3360(var16) 3810: 137(fvec3) CompositeConstruct 3771 3771 3771 3811: 137(fvec3) FAdd 3809 3810 Store 3360(var16) 3811 Store 3808(var179) 3811 3813:141(f64vec3) Load 3361(var17) 3814:141(f64vec3) CompositeConstruct 897 897 897 3815:141(f64vec3) FAdd 3813 3814 Store 3361(var17) 3815 Store 3812(var180) 3815 3817: 145(ivec4) Load 3363(var19) 3818: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 3819: 145(ivec4) IAdd 3817 3818 Store 3363(var19) 3819 Store 3816(var181) 3819 3821:149(i64vec4) Load 3364(var20) 3822:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 3823:149(i64vec4) IAdd 3821 3822 Store 3364(var20) 3823 Store 3820(var182) 3823 3825:153(i64vec4) Load 3365(var21) 3826:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 3827:153(i64vec4) IAdd 3825 3826 Store 3365(var21) 3827 Store 3824(var183) 3827 3829: 88(fvec4) Load 3366(var22) 3830: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 3831: 88(fvec4) FAdd 3829 3830 Store 3366(var22) 3831 Store 3828(var184) 3831 3833:160(f64vec4) Load 3367(var23) 3834:160(f64vec4) CompositeConstruct 897 897 897 897 3835:160(f64vec4) FAdd 3833 3834 Store 3367(var23) 3835 Store 3832(var185) 3835 3837: 30(int) Load 3344(var0) 3838: 30(int) IAdd 3837 3760 Store 3344(var0) 3838 Store 3836(var186) 3838 3840: 24(int64_t) Load 3346(var2) 3841: 24(int64_t) IAdd 3840 3764 Store 3346(var2) 3841 Store 3839(var187) 3841 3843: 36(int) Load 3345(var1) 3844: 36(int) IAdd 3843 3760 Store 3345(var1) 3844 Store 3842(var188) 3844 3846: 42(int64_t) Load 3347(var3) 3847: 42(int64_t) IAdd 3846 3764 Store 3347(var3) 3847 Store 3845(var189) 3847 3849: 48(float) Load 3348(var4) 3850: 48(float) FAdd 3849 3771 Store 3348(var4) 3850 Store 3848(var190) 3850 3852:54(float64_t) Load 3349(var5) 3853:54(float64_t) FAdd 3852 897 Store 3349(var5) 3853 Store 3851(var191) 3853 3855: 30(int) Load 3344(var0) 3856: 30(int) IAdd 3855 3760 Store 3344(var0) 3856 Store 3854(var192) 3856 3858: 24(int64_t) Load 3346(var2) 3859: 24(int64_t) IAdd 3858 3764 Store 3346(var2) 3859 Store 3857(var193) 3859 3861: 36(int) Load 3345(var1) 3862: 36(int) IAdd 3861 3760 Store 3345(var1) 3862 Store 3860(var194) 3862 3864: 42(int64_t) Load 3347(var3) 3865: 42(int64_t) IAdd 3864 3764 Store 3347(var3) 3865 Store 3863(var195) 3865 3867: 48(float) Load 3348(var4) 3868: 48(float) FAdd 3867 3771 Store 3348(var4) 3868 Store 3866(var196) 3868 3870:54(float64_t) Load 3349(var5) 3871:54(float64_t) FAdd 3870 897 Store 3349(var5) 3871 Store 3869(var197) 3871 3873: 176(ivec2) Load 3350(var6) 3874: 176(ivec2) CompositeConstruct 3760 3760 3875: 176(ivec2) IAdd 3873 3874 Store 3350(var6) 3875 Store 3872(var198) 3875 3877:110(i64vec2) Load 3352(var8) 3878:110(i64vec2) CompositeConstruct 3764 3764 3879:110(i64vec2) IAdd 3877 3878 Store 3352(var8) 3879 Store 3876(var199) 3879 3881: 106(ivec2) Load 3351(var7) 3882: 176(ivec2) CompositeConstruct 3760 3760 3883: 106(ivec2) IAdd 3881 3882 Store 3351(var7) 3883 Store 3880(var200) 3883 3885:114(i64vec2) Load 3353(var9) 3886:110(i64vec2) CompositeConstruct 3764 3764 3887:114(i64vec2) IAdd 3885 3886 Store 3353(var9) 3887 Store 3884(var201) 3887 3889: 84(fvec2) Load 3354(var10) 3890: 84(fvec2) CompositeConstruct 3771 3771 3891: 84(fvec2) FAdd 3889 3890 Store 3354(var10) 3891 Store 3888(var202) 3891 3893:121(f64vec2) Load 3355(var11) 3894:121(f64vec2) CompositeConstruct 897 897 3895:121(f64vec2) FAdd 3893 3894 Store 3355(var11) 3895 Store 3892(var203) 3895 3897: 176(ivec2) Load 3350(var6) 3898: 176(ivec2) CompositeConstruct 3760 3760 3899: 176(ivec2) IAdd 3897 3898 Store 3350(var6) 3899 Store 3896(var204) 3899 3901:110(i64vec2) Load 3352(var8) 3902:110(i64vec2) CompositeConstruct 3764 3764 3903:110(i64vec2) IAdd 3901 3902 Store 3352(var8) 3903 Store 3900(var205) 3903 3905: 106(ivec2) Load 3351(var7) 3906: 176(ivec2) CompositeConstruct 3760 3760 3907: 106(ivec2) IAdd 3905 3906 Store 3351(var7) 3907 Store 3904(var206) 3907 3909:114(i64vec2) Load 3353(var9) 3910:110(i64vec2) CompositeConstruct 3764 3764 3911:114(i64vec2) IAdd 3909 3910 Store 3353(var9) 3911 Store 3908(var207) 3911 3913: 84(fvec2) Load 3354(var10) 3914: 84(fvec2) CompositeConstruct 3771 3771 3915: 84(fvec2) FAdd 3913 3914 Store 3354(var10) 3915 Store 3912(var208) 3915 3917:121(f64vec2) Load 3355(var11) 3918:121(f64vec2) CompositeConstruct 897 897 3919:121(f64vec2) FAdd 3917 3918 Store 3355(var11) 3919 Store 3916(var209) 3919 3921: 191(ivec3) Load 3356(var12) 3922: 191(ivec3) CompositeConstruct 3760 3760 3760 3923: 191(ivec3) IAdd 3921 3922 Store 3356(var12) 3923 Store 3920(var210) 3923 3925:129(i64vec3) Load 3358(var14) 3926:129(i64vec3) CompositeConstruct 3764 3764 3764 3927:129(i64vec3) IAdd 3925 3926 Store 3358(var14) 3927 Store 3924(var211) 3927 3929: 125(ivec3) Load 3357(var13) 3930: 191(ivec3) CompositeConstruct 3760 3760 3760 3931: 125(ivec3) IAdd 3929 3930 Store 3357(var13) 3931 Store 3928(var212) 3931 3933:133(i64vec3) Load 3359(var15) 3934:129(i64vec3) CompositeConstruct 3764 3764 3764 3935:133(i64vec3) IAdd 3933 3934 Store 3359(var15) 3935 Store 3932(var213) 3935 3937: 137(fvec3) Load 3360(var16) 3938: 137(fvec3) CompositeConstruct 3771 3771 3771 3939: 137(fvec3) FAdd 3937 3938 Store 3360(var16) 3939 Store 3936(var214) 3939 3941:141(f64vec3) Load 3361(var17) 3942:141(f64vec3) CompositeConstruct 897 897 897 3943:141(f64vec3) FAdd 3941 3942 Store 3361(var17) 3943 Store 3940(var215) 3943 3945: 125(ivec3) Load 3357(var13) 3946: 191(ivec3) CompositeConstruct 3760 3760 3760 3947: 125(ivec3) IAdd 3945 3946 Store 3357(var13) 3947 Store 3944(var216) 3947 3949:133(i64vec3) Load 3359(var15) 3950:129(i64vec3) CompositeConstruct 3764 3764 3764 3951:133(i64vec3) IAdd 3949 3950 Store 3359(var15) 3951 Store 3948(var217) 3951 3953: 137(fvec3) Load 3360(var16) 3954: 137(fvec3) CompositeConstruct 3771 3771 3771 3955: 137(fvec3) FAdd 3953 3954 Store 3360(var16) 3955 Store 3952(var218) 3955 3957:141(f64vec3) Load 3361(var17) 3958:141(f64vec3) CompositeConstruct 897 897 897 3959:141(f64vec3) FAdd 3957 3958 Store 3361(var17) 3959 Store 3956(var219) 3959 3961: 204(ivec4) Load 3362(var18) 3962: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 3963: 204(ivec4) IAdd 3961 3962 Store 3362(var18) 3963 Store 3960(var220) 3963 3965:149(i64vec4) Load 3364(var20) 3966:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 3967:149(i64vec4) IAdd 3965 3966 Store 3364(var20) 3967 Store 3964(var221) 3967 3969: 145(ivec4) Load 3363(var19) 3970: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 3971: 145(ivec4) IAdd 3969 3970 Store 3363(var19) 3971 Store 3968(var222) 3971 3973:153(i64vec4) Load 3365(var21) 3974:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 3975:153(i64vec4) IAdd 3973 3974 Store 3365(var21) 3975 Store 3972(var223) 3975 3977: 88(fvec4) Load 3366(var22) 3978: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 3979: 88(fvec4) FAdd 3977 3978 Store 3366(var22) 3979 Store 3976(var224) 3979 3981:160(f64vec4) Load 3367(var23) 3982:160(f64vec4) CompositeConstruct 897 897 897 897 3983:160(f64vec4) FAdd 3981 3982 Store 3367(var23) 3983 Store 3980(var225) 3983 3985: 145(ivec4) Load 3363(var19) 3986: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 3987: 145(ivec4) IAdd 3985 3986 Store 3363(var19) 3987 Store 3984(var226) 3987 3989:153(i64vec4) Load 3365(var21) 3990:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 3991:153(i64vec4) IAdd 3989 3990 Store 3365(var21) 3991 Store 3988(var227) 3991 3993: 88(fvec4) Load 3366(var22) 3994: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 3995: 88(fvec4) FAdd 3993 3994 Store 3366(var22) 3995 Store 3992(var228) 3995 3997:160(f64vec4) Load 3367(var23) 3998:160(f64vec4) CompositeConstruct 897 897 897 897 3999:160(f64vec4) FAdd 3997 3998 Store 3367(var23) 3999 Store 3996(var229) 3999 4001: 42(int64_t) Load 3347(var3) 4002: 42(int64_t) IAdd 4001 3764 Store 3347(var3) 4002 Store 4000(var230) 4002 4004:54(float64_t) Load 3349(var5) 4005:54(float64_t) FAdd 4004 897 Store 3349(var5) 4005 Store 4003(var231) 4005 4007:114(i64vec2) Load 3353(var9) 4008:110(i64vec2) CompositeConstruct 3764 3764 4009:114(i64vec2) IAdd 4007 4008 Store 3353(var9) 4009 Store 4006(var232) 4009 4011:121(f64vec2) Load 3355(var11) 4012:121(f64vec2) CompositeConstruct 897 897 4013:121(f64vec2) FAdd 4011 4012 Store 3355(var11) 4013 Store 4010(var233) 4013 4015:133(i64vec3) Load 3359(var15) 4016:129(i64vec3) CompositeConstruct 3764 3764 3764 4017:133(i64vec3) IAdd 4015 4016 Store 3359(var15) 4017 Store 4014(var234) 4017 4019:141(f64vec3) Load 3361(var17) 4020:141(f64vec3) CompositeConstruct 897 897 897 4021:141(f64vec3) FAdd 4019 4020 Store 3361(var17) 4021 Store 4018(var235) 4021 4023:153(i64vec4) Load 3365(var21) 4024:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4025:153(i64vec4) IAdd 4023 4024 Store 3365(var21) 4025 Store 4022(var236) 4025 4027:160(f64vec4) Load 3367(var23) 4028:160(f64vec4) CompositeConstruct 897 897 897 897 4029:160(f64vec4) FAdd 4027 4028 Store 3367(var23) 4029 Store 4026(var237) 4029 4031: 42(int64_t) Load 3347(var3) 4032: 42(int64_t) IAdd 4031 3764 Store 3347(var3) 4032 Store 4030(var238) 4032 4034: 48(float) Load 3348(var4) 4035: 48(float) FAdd 4034 3771 Store 3348(var4) 4035 Store 4033(var239) 4035 4037:54(float64_t) Load 3349(var5) 4038:54(float64_t) FAdd 4037 897 Store 3349(var5) 4038 Store 4036(var240) 4038 4040:114(i64vec2) Load 3353(var9) 4041:110(i64vec2) CompositeConstruct 3764 3764 4042:114(i64vec2) IAdd 4040 4041 Store 3353(var9) 4042 Store 4039(var241) 4042 4044: 84(fvec2) Load 3354(var10) 4045: 84(fvec2) CompositeConstruct 3771 3771 4046: 84(fvec2) FAdd 4044 4045 Store 3354(var10) 4046 Store 4043(var242) 4046 4048:121(f64vec2) Load 3355(var11) 4049:121(f64vec2) CompositeConstruct 897 897 4050:121(f64vec2) FAdd 4048 4049 Store 3355(var11) 4050 Store 4047(var243) 4050 4052:133(i64vec3) Load 3359(var15) 4053:129(i64vec3) CompositeConstruct 3764 3764 3764 4054:133(i64vec3) IAdd 4052 4053 Store 3359(var15) 4054 Store 4051(var244) 4054 4056: 137(fvec3) Load 3360(var16) 4057: 137(fvec3) CompositeConstruct 3771 3771 3771 4058: 137(fvec3) FAdd 4056 4057 Store 3360(var16) 4058 Store 4055(var245) 4058 4060:141(f64vec3) Load 3361(var17) 4061:141(f64vec3) CompositeConstruct 897 897 897 4062:141(f64vec3) FAdd 4060 4061 Store 3361(var17) 4062 Store 4059(var246) 4062 4064:153(i64vec4) Load 3365(var21) 4065:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4066:153(i64vec4) IAdd 4064 4065 Store 3365(var21) 4066 Store 4063(var247) 4066 4068: 88(fvec4) Load 3366(var22) 4069: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4070: 88(fvec4) FAdd 4068 4069 Store 3366(var22) 4070 Store 4067(var248) 4070 4072:160(f64vec4) Load 3367(var23) 4073:160(f64vec4) CompositeConstruct 897 897 897 897 4074:160(f64vec4) FAdd 4072 4073 Store 3367(var23) 4074 Store 4071(var249) 4074 4076: 36(int) Load 3345(var1) 4077: 36(int) IAdd 4076 3760 Store 3345(var1) 4077 Store 4075(var250) 4077 4079: 42(int64_t) Load 3347(var3) 4080: 42(int64_t) IAdd 4079 3764 Store 3347(var3) 4080 Store 4078(var251) 4080 4082: 48(float) Load 3348(var4) 4083: 48(float) FAdd 4082 3771 Store 3348(var4) 4083 Store 4081(var252) 4083 4085:54(float64_t) Load 3349(var5) 4086:54(float64_t) FAdd 4085 897 Store 3349(var5) 4086 Store 4084(var253) 4086 4088: 36(int) Load 3345(var1) 4089: 36(int) IAdd 4088 3760 Store 3345(var1) 4089 Store 4087(var254) 4089 4091: 42(int64_t) Load 3347(var3) 4092: 42(int64_t) IAdd 4091 3764 Store 3347(var3) 4092 Store 4090(var255) 4092 4094: 48(float) Load 3348(var4) 4095: 48(float) FAdd 4094 3771 Store 3348(var4) 4095 Store 4093(var256) 4095 4097:54(float64_t) Load 3349(var5) 4098:54(float64_t) FAdd 4097 897 Store 3349(var5) 4098 Store 4096(var257) 4098 4100: 106(ivec2) Load 3351(var7) 4101: 176(ivec2) CompositeConstruct 3760 3760 4102: 106(ivec2) IAdd 4100 4101 Store 3351(var7) 4102 Store 4099(var258) 4102 4104:114(i64vec2) Load 3353(var9) 4105:110(i64vec2) CompositeConstruct 3764 3764 4106:114(i64vec2) IAdd 4104 4105 Store 3353(var9) 4106 Store 4103(var259) 4106 4108: 84(fvec2) Load 3354(var10) 4109: 84(fvec2) CompositeConstruct 3771 3771 4110: 84(fvec2) FAdd 4108 4109 Store 3354(var10) 4110 Store 4107(var260) 4110 4112:121(f64vec2) Load 3355(var11) 4113:121(f64vec2) CompositeConstruct 897 897 4114:121(f64vec2) FAdd 4112 4113 Store 3355(var11) 4114 Store 4111(var261) 4114 4116: 106(ivec2) Load 3351(var7) 4117: 176(ivec2) CompositeConstruct 3760 3760 4118: 106(ivec2) IAdd 4116 4117 Store 3351(var7) 4118 Store 4115(var262) 4118 4120:114(i64vec2) Load 3353(var9) 4121:110(i64vec2) CompositeConstruct 3764 3764 4122:114(i64vec2) IAdd 4120 4121 Store 3353(var9) 4122 Store 4119(var263) 4122 4124: 84(fvec2) Load 3354(var10) 4125: 84(fvec2) CompositeConstruct 3771 3771 4126: 84(fvec2) FAdd 4124 4125 Store 3354(var10) 4126 Store 4123(var264) 4126 4128:121(f64vec2) Load 3355(var11) 4129:121(f64vec2) CompositeConstruct 897 897 4130:121(f64vec2) FAdd 4128 4129 Store 3355(var11) 4130 Store 4127(var265) 4130 4132: 125(ivec3) Load 3357(var13) 4133: 191(ivec3) CompositeConstruct 3760 3760 3760 4134: 125(ivec3) IAdd 4132 4133 Store 3357(var13) 4134 Store 4131(var266) 4134 4136:133(i64vec3) Load 3359(var15) 4137:129(i64vec3) CompositeConstruct 3764 3764 3764 4138:133(i64vec3) IAdd 4136 4137 Store 3359(var15) 4138 Store 4135(var267) 4138 4140: 137(fvec3) Load 3360(var16) 4141: 137(fvec3) CompositeConstruct 3771 3771 3771 4142: 137(fvec3) FAdd 4140 4141 Store 3360(var16) 4142 Store 4139(var268) 4142 4144:141(f64vec3) Load 3361(var17) 4145:141(f64vec3) CompositeConstruct 897 897 897 4146:141(f64vec3) FAdd 4144 4145 Store 3361(var17) 4146 Store 4143(var269) 4146 4148: 145(ivec4) Load 3363(var19) 4149: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 4150: 145(ivec4) IAdd 4148 4149 Store 3363(var19) 4150 Store 4147(var270) 4150 4152:153(i64vec4) Load 3365(var21) 4153:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4154:153(i64vec4) IAdd 4152 4153 Store 3365(var21) 4154 Store 4151(var271) 4154 4156: 88(fvec4) Load 3366(var22) 4157: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4158: 88(fvec4) FAdd 4156 4157 Store 3366(var22) 4158 Store 4155(var272) 4158 4160:160(f64vec4) Load 3367(var23) 4161:160(f64vec4) CompositeConstruct 897 897 897 897 4162:160(f64vec4) FAdd 4160 4161 Store 3367(var23) 4162 Store 4159(var273) 4162 4164:54(float64_t) Load 3349(var5) 4165:54(float64_t) FAdd 4164 897 Store 3349(var5) 4165 Store 4163(var274) 4165 4167:121(f64vec2) Load 3355(var11) 4168:121(f64vec2) CompositeConstruct 897 897 4169:121(f64vec2) FAdd 4167 4168 Store 3355(var11) 4169 Store 4166(var275) 4169 4171:141(f64vec3) Load 3361(var17) 4172:141(f64vec3) CompositeConstruct 897 897 897 4173:141(f64vec3) FAdd 4171 4172 Store 3361(var17) 4173 Store 4170(var276) 4173 4175:160(f64vec4) Load 3367(var23) 4176:160(f64vec4) CompositeConstruct 897 897 897 897 4177:160(f64vec4) FAdd 4175 4176 Store 3367(var23) 4177 Store 4174(var277) 4177 4179:54(float64_t) Load 3349(var5) 4180:54(float64_t) FAdd 4179 897 Store 3349(var5) 4180 Store 4178(var278) 4180 4182:121(f64vec2) Load 3355(var11) 4183:121(f64vec2) CompositeConstruct 897 897 4184:121(f64vec2) FAdd 4182 4183 Store 3355(var11) 4184 Store 4181(var279) 4184 4186:141(f64vec3) Load 3361(var17) 4187:141(f64vec3) CompositeConstruct 897 897 897 4188:141(f64vec3) FAdd 4186 4187 Store 3361(var17) 4188 Store 4185(var280) 4188 4190:160(f64vec4) Load 3367(var23) 4191:160(f64vec4) CompositeConstruct 897 897 897 897 4192:160(f64vec4) FAdd 4190 4191 Store 3367(var23) 4192 Store 4189(var281) 4192 4194: 48(float) Load 3348(var4) 4195: 48(float) FAdd 4194 3771 Store 3348(var4) 4195 Store 4193(var282) 4195 4197:54(float64_t) Load 3349(var5) 4198:54(float64_t) FAdd 4197 897 Store 3349(var5) 4198 Store 4196(var283) 4198 4200: 84(fvec2) Load 3354(var10) 4201: 84(fvec2) CompositeConstruct 3771 3771 4202: 84(fvec2) FAdd 4200 4201 Store 3354(var10) 4202 Store 4199(var284) 4202 4204:121(f64vec2) Load 3355(var11) 4205:121(f64vec2) CompositeConstruct 897 897 4206:121(f64vec2) FAdd 4204 4205 Store 3355(var11) 4206 Store 4203(var285) 4206 4208: 137(fvec3) Load 3360(var16) 4209: 137(fvec3) CompositeConstruct 3771 3771 3771 4210: 137(fvec3) FAdd 4208 4209 Store 3360(var16) 4210 Store 4207(var286) 4210 4212:141(f64vec3) Load 3361(var17) 4213:141(f64vec3) CompositeConstruct 897 897 897 4214:141(f64vec3) FAdd 4212 4213 Store 3361(var17) 4214 Store 4211(var287) 4214 4216: 88(fvec4) Load 3366(var22) 4217: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4218: 88(fvec4) FAdd 4216 4217 Store 3366(var22) 4218 Store 4215(var288) 4218 4220:160(f64vec4) Load 3367(var23) 4221:160(f64vec4) CompositeConstruct 897 897 897 897 4222:160(f64vec4) FAdd 4220 4221 Store 3367(var23) 4222 Store 4219(var289) 4222 4224: 36(int) Load 3345(var1) 4225: 36(int) ISub 4224 3760 Store 3345(var1) 4225 Store 4223(var290) 4225 4227: 24(int64_t) Load 3346(var2) 4228: 24(int64_t) ISub 4227 3764 Store 3346(var2) 4228 Store 4226(var291) 4228 4230: 42(int64_t) Load 3347(var3) 4231: 42(int64_t) ISub 4230 3764 Store 3347(var3) 4231 Store 4229(var292) 4231 4233: 48(float) Load 3348(var4) 4234: 48(float) FSub 4233 3771 Store 3348(var4) 4234 Store 4232(var293) 4234 4236:54(float64_t) Load 3349(var5) 4237:54(float64_t) FSub 4236 897 Store 3349(var5) 4237 Store 4235(var294) 4237 4239: 106(ivec2) Load 3351(var7) 4240: 176(ivec2) CompositeConstruct 3760 3760 4241: 106(ivec2) ISub 4239 4240 Store 3351(var7) 4241 Store 4238(var295) 4241 4243:110(i64vec2) Load 3352(var8) 4244:110(i64vec2) CompositeConstruct 3764 3764 4245:110(i64vec2) ISub 4243 4244 Store 3352(var8) 4245 Store 4242(var296) 4245 4247:114(i64vec2) Load 3353(var9) 4248:110(i64vec2) CompositeConstruct 3764 3764 4249:114(i64vec2) ISub 4247 4248 Store 3353(var9) 4249 Store 4246(var297) 4249 4251: 84(fvec2) Load 3354(var10) 4252: 84(fvec2) CompositeConstruct 3771 3771 4253: 84(fvec2) FSub 4251 4252 Store 3354(var10) 4253 Store 4250(var298) 4253 4255:121(f64vec2) Load 3355(var11) 4256:121(f64vec2) CompositeConstruct 897 897 4257:121(f64vec2) FSub 4255 4256 Store 3355(var11) 4257 Store 4254(var299) 4257 4259: 125(ivec3) Load 3357(var13) 4260: 191(ivec3) CompositeConstruct 3760 3760 3760 4261: 125(ivec3) ISub 4259 4260 Store 3357(var13) 4261 Store 4258(var300) 4261 4263:129(i64vec3) Load 3358(var14) 4264:129(i64vec3) CompositeConstruct 3764 3764 3764 4265:129(i64vec3) ISub 4263 4264 Store 3358(var14) 4265 Store 4262(var301) 4265 4267:133(i64vec3) Load 3359(var15) 4268:129(i64vec3) CompositeConstruct 3764 3764 3764 4269:133(i64vec3) ISub 4267 4268 Store 3359(var15) 4269 Store 4266(var302) 4269 4271: 137(fvec3) Load 3360(var16) 4272: 137(fvec3) CompositeConstruct 3771 3771 3771 4273: 137(fvec3) FSub 4271 4272 Store 3360(var16) 4273 Store 4270(var303) 4273 4275:141(f64vec3) Load 3361(var17) 4276:141(f64vec3) CompositeConstruct 897 897 897 4277:141(f64vec3) FSub 4275 4276 Store 3361(var17) 4277 Store 4274(var304) 4277 4279: 145(ivec4) Load 3363(var19) 4280: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 4281: 145(ivec4) ISub 4279 4280 Store 3363(var19) 4281 Store 4278(var305) 4281 4283:149(i64vec4) Load 3364(var20) 4284:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4285:149(i64vec4) ISub 4283 4284 Store 3364(var20) 4285 Store 4282(var306) 4285 4287:153(i64vec4) Load 3365(var21) 4288:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4289:153(i64vec4) ISub 4287 4288 Store 3365(var21) 4289 Store 4286(var307) 4289 4291: 88(fvec4) Load 3366(var22) 4292: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4293: 88(fvec4) FSub 4291 4292 Store 3366(var22) 4293 Store 4290(var308) 4293 4295:160(f64vec4) Load 3367(var23) 4296:160(f64vec4) CompositeConstruct 897 897 897 897 4297:160(f64vec4) FSub 4295 4296 Store 3367(var23) 4297 Store 4294(var309) 4297 4299: 30(int) Load 3344(var0) 4300: 30(int) ISub 4299 3760 Store 3344(var0) 4300 Store 4298(var310) 4300 4302: 24(int64_t) Load 3346(var2) 4303: 24(int64_t) ISub 4302 3764 Store 3346(var2) 4303 Store 4301(var311) 4303 4305: 36(int) Load 3345(var1) 4306: 36(int) ISub 4305 3760 Store 3345(var1) 4306 Store 4304(var312) 4306 4308: 42(int64_t) Load 3347(var3) 4309: 42(int64_t) ISub 4308 3764 Store 3347(var3) 4309 Store 4307(var313) 4309 4311: 48(float) Load 3348(var4) 4312: 48(float) FSub 4311 3771 Store 3348(var4) 4312 Store 4310(var314) 4312 4314:54(float64_t) Load 3349(var5) 4315:54(float64_t) FSub 4314 897 Store 3349(var5) 4315 Store 4313(var315) 4315 4317: 30(int) Load 3344(var0) 4318: 30(int) ISub 4317 3760 Store 3344(var0) 4318 Store 4316(var316) 4318 4320: 24(int64_t) Load 3346(var2) 4321: 24(int64_t) ISub 4320 3764 Store 3346(var2) 4321 Store 4319(var317) 4321 4323: 36(int) Load 3345(var1) 4324: 36(int) ISub 4323 3760 Store 3345(var1) 4324 Store 4322(var318) 4324 4326: 42(int64_t) Load 3347(var3) 4327: 42(int64_t) ISub 4326 3764 Store 3347(var3) 4327 Store 4325(var319) 4327 4329: 48(float) Load 3348(var4) 4330: 48(float) FSub 4329 3771 Store 3348(var4) 4330 Store 4328(var320) 4330 4332:54(float64_t) Load 3349(var5) 4333:54(float64_t) FSub 4332 897 Store 3349(var5) 4333 Store 4331(var321) 4333 4335: 176(ivec2) Load 3350(var6) 4336: 176(ivec2) CompositeConstruct 3760 3760 4337: 176(ivec2) ISub 4335 4336 Store 3350(var6) 4337 Store 4334(var322) 4337 4339:110(i64vec2) Load 3352(var8) 4340:110(i64vec2) CompositeConstruct 3764 3764 4341:110(i64vec2) ISub 4339 4340 Store 3352(var8) 4341 Store 4338(var323) 4341 4343: 106(ivec2) Load 3351(var7) 4344: 176(ivec2) CompositeConstruct 3760 3760 4345: 106(ivec2) ISub 4343 4344 Store 3351(var7) 4345 Store 4342(var324) 4345 4347:114(i64vec2) Load 3353(var9) 4348:110(i64vec2) CompositeConstruct 3764 3764 4349:114(i64vec2) ISub 4347 4348 Store 3353(var9) 4349 Store 4346(var325) 4349 4351: 84(fvec2) Load 3354(var10) 4352: 84(fvec2) CompositeConstruct 3771 3771 4353: 84(fvec2) FSub 4351 4352 Store 3354(var10) 4353 Store 4350(var326) 4353 4355:121(f64vec2) Load 3355(var11) 4356:121(f64vec2) CompositeConstruct 897 897 4357:121(f64vec2) FSub 4355 4356 Store 3355(var11) 4357 Store 4354(var327) 4357 4359: 176(ivec2) Load 3350(var6) 4360: 176(ivec2) CompositeConstruct 3760 3760 4361: 176(ivec2) ISub 4359 4360 Store 3350(var6) 4361 Store 4358(var328) 4361 4363:110(i64vec2) Load 3352(var8) 4364:110(i64vec2) CompositeConstruct 3764 3764 4365:110(i64vec2) ISub 4363 4364 Store 3352(var8) 4365 Store 4362(var329) 4365 4367: 106(ivec2) Load 3351(var7) 4368: 176(ivec2) CompositeConstruct 3760 3760 4369: 106(ivec2) ISub 4367 4368 Store 3351(var7) 4369 Store 4366(var330) 4369 4371:114(i64vec2) Load 3353(var9) 4372:110(i64vec2) CompositeConstruct 3764 3764 4373:114(i64vec2) ISub 4371 4372 Store 3353(var9) 4373 Store 4370(var331) 4373 4375: 84(fvec2) Load 3354(var10) 4376: 84(fvec2) CompositeConstruct 3771 3771 4377: 84(fvec2) FSub 4375 4376 Store 3354(var10) 4377 Store 4374(var332) 4377 4379:121(f64vec2) Load 3355(var11) 4380:121(f64vec2) CompositeConstruct 897 897 4381:121(f64vec2) FSub 4379 4380 Store 3355(var11) 4381 Store 4378(var333) 4381 4383: 191(ivec3) Load 3356(var12) 4384: 191(ivec3) CompositeConstruct 3760 3760 3760 4385: 191(ivec3) ISub 4383 4384 Store 3356(var12) 4385 Store 4382(var334) 4385 4387:129(i64vec3) Load 3358(var14) 4388:129(i64vec3) CompositeConstruct 3764 3764 3764 4389:129(i64vec3) ISub 4387 4388 Store 3358(var14) 4389 Store 4386(var335) 4389 4391: 125(ivec3) Load 3357(var13) 4392: 191(ivec3) CompositeConstruct 3760 3760 3760 4393: 125(ivec3) ISub 4391 4392 Store 3357(var13) 4393 Store 4390(var336) 4393 4395:133(i64vec3) Load 3359(var15) 4396:129(i64vec3) CompositeConstruct 3764 3764 3764 4397:133(i64vec3) ISub 4395 4396 Store 3359(var15) 4397 Store 4394(var337) 4397 4399: 137(fvec3) Load 3360(var16) 4400: 137(fvec3) CompositeConstruct 3771 3771 3771 4401: 137(fvec3) FSub 4399 4400 Store 3360(var16) 4401 Store 4398(var338) 4401 4403:141(f64vec3) Load 3361(var17) 4404:141(f64vec3) CompositeConstruct 897 897 897 4405:141(f64vec3) FSub 4403 4404 Store 3361(var17) 4405 Store 4402(var339) 4405 4407: 125(ivec3) Load 3357(var13) 4408: 191(ivec3) CompositeConstruct 3760 3760 3760 4409: 125(ivec3) ISub 4407 4408 Store 3357(var13) 4409 Store 4406(var340) 4409 4411:133(i64vec3) Load 3359(var15) 4412:129(i64vec3) CompositeConstruct 3764 3764 3764 4413:133(i64vec3) ISub 4411 4412 Store 3359(var15) 4413 Store 4410(var341) 4413 4415: 137(fvec3) Load 3360(var16) 4416: 137(fvec3) CompositeConstruct 3771 3771 3771 4417: 137(fvec3) FSub 4415 4416 Store 3360(var16) 4417 Store 4414(var342) 4417 4419:141(f64vec3) Load 3361(var17) 4420:141(f64vec3) CompositeConstruct 897 897 897 4421:141(f64vec3) FSub 4419 4420 Store 3361(var17) 4421 Store 4418(var343) 4421 4423: 204(ivec4) Load 3362(var18) 4424: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 4425: 204(ivec4) ISub 4423 4424 Store 3362(var18) 4425 Store 4422(var344) 4425 4427:149(i64vec4) Load 3364(var20) 4428:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4429:149(i64vec4) ISub 4427 4428 Store 3364(var20) 4429 Store 4426(var345) 4429 4431: 145(ivec4) Load 3363(var19) 4432: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 4433: 145(ivec4) ISub 4431 4432 Store 3363(var19) 4433 Store 4430(var346) 4433 4435:153(i64vec4) Load 3365(var21) 4436:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4437:153(i64vec4) ISub 4435 4436 Store 3365(var21) 4437 Store 4434(var347) 4437 4439: 88(fvec4) Load 3366(var22) 4440: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4441: 88(fvec4) FSub 4439 4440 Store 3366(var22) 4441 Store 4438(var348) 4441 4443:160(f64vec4) Load 3367(var23) 4444:160(f64vec4) CompositeConstruct 897 897 897 897 4445:160(f64vec4) FSub 4443 4444 Store 3367(var23) 4445 Store 4442(var349) 4445 4447: 145(ivec4) Load 3363(var19) 4448: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 4449: 145(ivec4) ISub 4447 4448 Store 3363(var19) 4449 Store 4446(var350) 4449 4451:153(i64vec4) Load 3365(var21) 4452:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4453:153(i64vec4) ISub 4451 4452 Store 3365(var21) 4453 Store 4450(var351) 4453 4455: 88(fvec4) Load 3366(var22) 4456: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4457: 88(fvec4) FSub 4455 4456 Store 3366(var22) 4457 Store 4454(var352) 4457 4459:160(f64vec4) Load 3367(var23) 4460:160(f64vec4) CompositeConstruct 897 897 897 897 4461:160(f64vec4) FSub 4459 4460 Store 3367(var23) 4461 Store 4458(var353) 4461 4463: 42(int64_t) Load 3347(var3) 4464: 42(int64_t) ISub 4463 3764 Store 3347(var3) 4464 Store 4462(var354) 4464 4466:54(float64_t) Load 3349(var5) 4467:54(float64_t) FSub 4466 897 Store 3349(var5) 4467 Store 4465(var355) 4467 4469:114(i64vec2) Load 3353(var9) 4470:110(i64vec2) CompositeConstruct 3764 3764 4471:114(i64vec2) ISub 4469 4470 Store 3353(var9) 4471 Store 4468(var356) 4471 4473:121(f64vec2) Load 3355(var11) 4474:121(f64vec2) CompositeConstruct 897 897 4475:121(f64vec2) FSub 4473 4474 Store 3355(var11) 4475 Store 4472(var357) 4475 4477:133(i64vec3) Load 3359(var15) 4478:129(i64vec3) CompositeConstruct 3764 3764 3764 4479:133(i64vec3) ISub 4477 4478 Store 3359(var15) 4479 Store 4476(var358) 4479 4481:141(f64vec3) Load 3361(var17) 4482:141(f64vec3) CompositeConstruct 897 897 897 4483:141(f64vec3) FSub 4481 4482 Store 3361(var17) 4483 Store 4480(var359) 4483 4485:153(i64vec4) Load 3365(var21) 4486:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4487:153(i64vec4) ISub 4485 4486 Store 3365(var21) 4487 Store 4484(var360) 4487 4489:160(f64vec4) Load 3367(var23) 4490:160(f64vec4) CompositeConstruct 897 897 897 897 4491:160(f64vec4) FSub 4489 4490 Store 3367(var23) 4491 Store 4488(var361) 4491 4493: 42(int64_t) Load 3347(var3) 4494: 42(int64_t) ISub 4493 3764 Store 3347(var3) 4494 Store 4492(var362) 4494 4496: 48(float) Load 3348(var4) 4497: 48(float) FSub 4496 3771 Store 3348(var4) 4497 Store 4495(var363) 4497 4499:54(float64_t) Load 3349(var5) 4500:54(float64_t) FSub 4499 897 Store 3349(var5) 4500 Store 4498(var364) 4500 4502:114(i64vec2) Load 3353(var9) 4503:110(i64vec2) CompositeConstruct 3764 3764 4504:114(i64vec2) ISub 4502 4503 Store 3353(var9) 4504 Store 4501(var365) 4504 4506: 84(fvec2) Load 3354(var10) 4507: 84(fvec2) CompositeConstruct 3771 3771 4508: 84(fvec2) FSub 4506 4507 Store 3354(var10) 4508 Store 4505(var366) 4508 4510:121(f64vec2) Load 3355(var11) 4511:121(f64vec2) CompositeConstruct 897 897 4512:121(f64vec2) FSub 4510 4511 Store 3355(var11) 4512 Store 4509(var367) 4512 4514:133(i64vec3) Load 3359(var15) 4515:129(i64vec3) CompositeConstruct 3764 3764 3764 4516:133(i64vec3) ISub 4514 4515 Store 3359(var15) 4516 Store 4513(var368) 4516 4518: 137(fvec3) Load 3360(var16) 4519: 137(fvec3) CompositeConstruct 3771 3771 3771 4520: 137(fvec3) FSub 4518 4519 Store 3360(var16) 4520 Store 4517(var369) 4520 4522:141(f64vec3) Load 3361(var17) 4523:141(f64vec3) CompositeConstruct 897 897 897 4524:141(f64vec3) FSub 4522 4523 Store 3361(var17) 4524 Store 4521(var370) 4524 4526:153(i64vec4) Load 3365(var21) 4527:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4528:153(i64vec4) ISub 4526 4527 Store 3365(var21) 4528 Store 4525(var371) 4528 4530: 88(fvec4) Load 3366(var22) 4531: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4532: 88(fvec4) FSub 4530 4531 Store 3366(var22) 4532 Store 4529(var372) 4532 4534:160(f64vec4) Load 3367(var23) 4535:160(f64vec4) CompositeConstruct 897 897 897 897 4536:160(f64vec4) FSub 4534 4535 Store 3367(var23) 4536 Store 4533(var373) 4536 4538: 36(int) Load 3345(var1) 4539: 36(int) ISub 4538 3760 Store 3345(var1) 4539 Store 4537(var374) 4539 4541: 42(int64_t) Load 3347(var3) 4542: 42(int64_t) ISub 4541 3764 Store 3347(var3) 4542 Store 4540(var375) 4542 4544: 48(float) Load 3348(var4) 4545: 48(float) FSub 4544 3771 Store 3348(var4) 4545 Store 4543(var376) 4545 4547:54(float64_t) Load 3349(var5) 4548:54(float64_t) FSub 4547 897 Store 3349(var5) 4548 Store 4546(var377) 4548 4550: 36(int) Load 3345(var1) 4551: 36(int) ISub 4550 3760 Store 3345(var1) 4551 Store 4549(var378) 4551 4553: 42(int64_t) Load 3347(var3) 4554: 42(int64_t) ISub 4553 3764 Store 3347(var3) 4554 Store 4552(var379) 4554 4556: 48(float) Load 3348(var4) 4557: 48(float) FSub 4556 3771 Store 3348(var4) 4557 Store 4555(var380) 4557 4559:54(float64_t) Load 3349(var5) 4560:54(float64_t) FSub 4559 897 Store 3349(var5) 4560 Store 4558(var381) 4560 4562: 106(ivec2) Load 3351(var7) 4563: 176(ivec2) CompositeConstruct 3760 3760 4564: 106(ivec2) ISub 4562 4563 Store 3351(var7) 4564 Store 4561(var382) 4564 4566:114(i64vec2) Load 3353(var9) 4567:110(i64vec2) CompositeConstruct 3764 3764 4568:114(i64vec2) ISub 4566 4567 Store 3353(var9) 4568 Store 4565(var383) 4568 4570: 84(fvec2) Load 3354(var10) 4571: 84(fvec2) CompositeConstruct 3771 3771 4572: 84(fvec2) FSub 4570 4571 Store 3354(var10) 4572 Store 4569(var384) 4572 4574:121(f64vec2) Load 3355(var11) 4575:121(f64vec2) CompositeConstruct 897 897 4576:121(f64vec2) FSub 4574 4575 Store 3355(var11) 4576 Store 4573(var385) 4576 4578: 106(ivec2) Load 3351(var7) 4579: 176(ivec2) CompositeConstruct 3760 3760 4580: 106(ivec2) ISub 4578 4579 Store 3351(var7) 4580 Store 4577(var386) 4580 4582:114(i64vec2) Load 3353(var9) 4583:110(i64vec2) CompositeConstruct 3764 3764 4584:114(i64vec2) ISub 4582 4583 Store 3353(var9) 4584 Store 4581(var387) 4584 4586: 84(fvec2) Load 3354(var10) 4587: 84(fvec2) CompositeConstruct 3771 3771 4588: 84(fvec2) FSub 4586 4587 Store 3354(var10) 4588 Store 4585(var388) 4588 4590:121(f64vec2) Load 3355(var11) 4591:121(f64vec2) CompositeConstruct 897 897 4592:121(f64vec2) FSub 4590 4591 Store 3355(var11) 4592 Store 4589(var389) 4592 4594: 125(ivec3) Load 3357(var13) 4595: 191(ivec3) CompositeConstruct 3760 3760 3760 4596: 125(ivec3) ISub 4594 4595 Store 3357(var13) 4596 Store 4593(var390) 4596 4598:133(i64vec3) Load 3359(var15) 4599:129(i64vec3) CompositeConstruct 3764 3764 3764 4600:133(i64vec3) ISub 4598 4599 Store 3359(var15) 4600 Store 4597(var391) 4600 4602: 137(fvec3) Load 3360(var16) 4603: 137(fvec3) CompositeConstruct 3771 3771 3771 4604: 137(fvec3) FSub 4602 4603 Store 3360(var16) 4604 Store 4601(var392) 4604 4606:141(f64vec3) Load 3361(var17) 4607:141(f64vec3) CompositeConstruct 897 897 897 4608:141(f64vec3) FSub 4606 4607 Store 3361(var17) 4608 Store 4605(var393) 4608 4610: 145(ivec4) Load 3363(var19) 4611: 204(ivec4) CompositeConstruct 3760 3760 3760 3760 4612: 145(ivec4) ISub 4610 4611 Store 3363(var19) 4612 Store 4609(var394) 4612 4614:153(i64vec4) Load 3365(var21) 4615:149(i64vec4) CompositeConstruct 3764 3764 3764 3764 4616:153(i64vec4) ISub 4614 4615 Store 3365(var21) 4616 Store 4613(var395) 4616 4618: 88(fvec4) Load 3366(var22) 4619: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4620: 88(fvec4) FSub 4618 4619 Store 3366(var22) 4620 Store 4617(var396) 4620 4622:160(f64vec4) Load 3367(var23) 4623:160(f64vec4) CompositeConstruct 897 897 897 897 4624:160(f64vec4) FSub 4622 4623 Store 3367(var23) 4624 Store 4621(var397) 4624 4626:54(float64_t) Load 3349(var5) 4627:54(float64_t) FSub 4626 897 Store 3349(var5) 4627 Store 4625(var398) 4627 4629:121(f64vec2) Load 3355(var11) 4630:121(f64vec2) CompositeConstruct 897 897 4631:121(f64vec2) FSub 4629 4630 Store 3355(var11) 4631 Store 4628(var399) 4631 4633:141(f64vec3) Load 3361(var17) 4634:141(f64vec3) CompositeConstruct 897 897 897 4635:141(f64vec3) FSub 4633 4634 Store 3361(var17) 4635 Store 4632(var400) 4635 4637:160(f64vec4) Load 3367(var23) 4638:160(f64vec4) CompositeConstruct 897 897 897 897 4639:160(f64vec4) FSub 4637 4638 Store 3367(var23) 4639 Store 4636(var401) 4639 4641:54(float64_t) Load 3349(var5) 4642:54(float64_t) FSub 4641 897 Store 3349(var5) 4642 Store 4640(var402) 4642 4644:121(f64vec2) Load 3355(var11) 4645:121(f64vec2) CompositeConstruct 897 897 4646:121(f64vec2) FSub 4644 4645 Store 3355(var11) 4646 Store 4643(var403) 4646 4648:141(f64vec3) Load 3361(var17) 4649:141(f64vec3) CompositeConstruct 897 897 897 4650:141(f64vec3) FSub 4648 4649 Store 3361(var17) 4650 Store 4647(var404) 4650 4652:160(f64vec4) Load 3367(var23) 4653:160(f64vec4) CompositeConstruct 897 897 897 897 4654:160(f64vec4) FSub 4652 4653 Store 3367(var23) 4654 Store 4651(var405) 4654 4656: 48(float) Load 3348(var4) 4657: 48(float) FSub 4656 3771 Store 3348(var4) 4657 Store 4655(var406) 4657 4659:54(float64_t) Load 3349(var5) 4660:54(float64_t) FSub 4659 897 Store 3349(var5) 4660 Store 4658(var407) 4660 4662: 84(fvec2) Load 3354(var10) 4663: 84(fvec2) CompositeConstruct 3771 3771 4664: 84(fvec2) FSub 4662 4663 Store 3354(var10) 4664 Store 4661(var408) 4664 4666:121(f64vec2) Load 3355(var11) 4667:121(f64vec2) CompositeConstruct 897 897 4668:121(f64vec2) FSub 4666 4667 Store 3355(var11) 4668 Store 4665(var409) 4668 4670: 137(fvec3) Load 3360(var16) 4671: 137(fvec3) CompositeConstruct 3771 3771 3771 4672: 137(fvec3) FSub 4670 4671 Store 3360(var16) 4672 Store 4669(var410) 4672 4674:141(f64vec3) Load 3361(var17) 4675:141(f64vec3) CompositeConstruct 897 897 897 4676:141(f64vec3) FSub 4674 4675 Store 3361(var17) 4676 Store 4673(var411) 4676 4678: 88(fvec4) Load 3366(var22) 4679: 88(fvec4) CompositeConstruct 3771 3771 3771 3771 4680: 88(fvec4) FSub 4678 4679 Store 3366(var22) 4680 Store 4677(var412) 4680 4682:160(f64vec4) Load 3367(var23) 4683:160(f64vec4) CompositeConstruct 897 897 897 897 4684:160(f64vec4) FSub 4682 4683 Store 3367(var23) 4684 Store 4681(var413) 4684 Return FunctionEnd 22(testConditionExpressions(): 2 Function None 3 23: Label 4685(var1): 983(ptr) Variable Function 4687(var5): 899(ptr) Variable Function 4689(var9): 31(ptr) Variable Function 4690(var13): 25(ptr) Variable Function 4691(var33): 1044(ptr) Variable Function 4693(var41): 55(ptr) Variable Function 4694(var42): 55(ptr) Variable Function 4695(b): 903(ptr) Variable Function Store 4685(var1) 4686 Store 4687(var5) 4688 Store 4689(var9) 73 Store 4690(var13) 99 Store 4691(var33) 4692 Store 4693(var41) 105 Store 4694(var42) 105 4696: 982(int8_t) Load 4685(var1) 4697: 902(bool) IEqual 4696 4686 Store 4695(b) 4697 4698:898(int16_t) Load 4687(var5) 4699: 902(bool) IEqual 4698 4688 Store 4695(b) 4699 4700: 30(int) Load 4689(var9) 4701: 902(bool) IEqual 4700 73 Store 4695(b) 4701 4702: 24(int64_t) Load 4690(var13) 4703: 902(bool) IEqual 4702 99 Store 4695(b) 4703 4704:1043(float16_t) Load 4691(var33) 4705: 902(bool) FOrdEqual 4704 4692 Store 4695(b) 4705 4706:54(float64_t) Load 4693(var41) 4707: 902(bool) FOrdEqual 4706 105 Store 4695(b) 4707 4708:54(float64_t) Load 4694(var42) 4709: 902(bool) FOrdEqual 4708 105 Store 4695(b) 4709 4710:898(int16_t) Load 4687(var5) 4711: 902(bool) INotEqual 4710 4688 Store 4695(b) 4711 4712: 30(int) Load 4689(var9) 4713: 902(bool) INotEqual 4712 73 Store 4695(b) 4713 4714: 24(int64_t) Load 4690(var13) 4715: 902(bool) INotEqual 4714 99 Store 4695(b) 4715 4716:1043(float16_t) Load 4691(var33) 4717: 902(bool) FUnordNotEqual 4716 4692 Store 4695(b) 4717 4718:54(float64_t) Load 4693(var41) 4719: 902(bool) FUnordNotEqual 4718 105 Store 4695(b) 4719 4720:54(float64_t) Load 4694(var42) 4721: 902(bool) FUnordNotEqual 4720 105 Store 4695(b) 4721 4722:898(int16_t) Load 4687(var5) 4723: 902(bool) SGreaterThan 4722 4688 Store 4695(b) 4723 4724: 30(int) Load 4689(var9) 4725: 902(bool) SGreaterThan 4724 73 Store 4695(b) 4725 4726: 24(int64_t) Load 4690(var13) 4727: 902(bool) SGreaterThan 4726 99 Store 4695(b) 4727 4728:1043(float16_t) Load 4691(var33) 4729: 902(bool) FOrdGreaterThan 4728 4692 Store 4695(b) 4729 4730:54(float64_t) Load 4693(var41) 4731: 902(bool) FOrdGreaterThan 4730 105 Store 4695(b) 4731 4732:54(float64_t) Load 4694(var42) 4733: 902(bool) FOrdGreaterThan 4732 105 Store 4695(b) 4733 Return FunctionEnd 28(func(i641;): 2 Function None 26 27(a): 25(ptr) FunctionParameter 29: Label Return FunctionEnd 34(func(i1;): 2 Function None 32 33(a): 31(ptr) FunctionParameter 35: Label Return FunctionEnd 40(func(u1;): 2 Function None 38 39(a): 37(ptr) FunctionParameter 41: Label Return FunctionEnd 46(func(u641;): 2 Function None 44 45(a): 43(ptr) FunctionParameter 47: Label Return FunctionEnd 52(func(f1;): 2 Function None 50 51(a): 49(ptr) FunctionParameter 53: Label Return FunctionEnd 58(func64(d1;): 2 Function None 56 57(a): 55(ptr) FunctionParameter 59: Label Return FunctionEnd 61(func64(i641;): 2 Function None 26 60(a): 25(ptr) FunctionParameter 62: Label Return FunctionEnd 64(func64(u641;): 2 Function None 44 63(a): 43(ptr) FunctionParameter 65: Label Return FunctionEnd 66(testFunctionDefinition(): 2 Function None 3 67: Label 4734(var1): 983(ptr) Variable Function 4735(var5): 899(ptr) Variable Function 4736(var2): 893(ptr) Variable Function 4738(var3): 1020(ptr) Variable Function 4739(var9): 31(ptr) Variable Function 4740(var10): 31(ptr) Variable Function 4741(var11): 37(ptr) Variable Function 4742(var13): 25(ptr) Variable Function 4743(var33): 1044(ptr) Variable Function 4744(var34): 49(ptr) Variable Function 4747(param): 31(ptr) Variable Function 4751(param): 31(ptr) Variable Function 4753(param): 31(ptr) Variable Function 4758(param): 37(ptr) Variable Function 4762(param): 37(ptr) Variable Function 4766(param): 49(ptr) Variable Function 4770(param): 25(ptr) Variable Function 4774(param): 25(ptr) Variable Function 4778(param): 25(ptr) Variable Function 4782(param): 43(ptr) Variable Function 4786(param): 43(ptr) Variable Function 4790(param): 43(ptr) Variable Function 4794(param): 55(ptr) Variable Function Store 4734(var1) 4686 Store 4735(var5) 4688 Store 4736(var2) 4737 Store 4738(var3) 914 Store 4739(var9) 73 Store 4740(var10) 73 Store 4741(var11) 97 Store 4742(var13) 99 Store 4743(var33) 4692 Store 4744(var34) 103 4745: 982(int8_t) Load 4734(var1) 4746: 30(int) SConvert 4745 Store 4747(param) 4746 4748: 2 FunctionCall 34(func(i1;) 4747(param) 4749:898(int16_t) Load 4735(var5) 4750: 30(int) SConvert 4749 Store 4751(param) 4750 4752: 2 FunctionCall 34(func(i1;) 4751(param) 4754: 30(int) Load 4740(var10) Store 4753(param) 4754 4755: 2 FunctionCall 34(func(i1;) 4753(param) 4756: 892(int8_t) Load 4736(var2) 4757: 36(int) UConvert 4756 Store 4758(param) 4757 4759: 2 FunctionCall 40(func(u1;) 4758(param) 4760:913(int16_t) Load 4738(var3) 4761: 36(int) UConvert 4760 Store 4762(param) 4761 4763: 2 FunctionCall 40(func(u1;) 4762(param) 4764:1043(float16_t) Load 4743(var33) 4765: 48(float) FConvert 4764 Store 4766(param) 4765 4767: 2 FunctionCall 52(func(f1;) 4766(param) 4768: 982(int8_t) Load 4734(var1) 4769: 24(int64_t) SConvert 4768 Store 4770(param) 4769 4771: 2 FunctionCall 61(func64(i641;) 4770(param) 4772:898(int16_t) Load 4735(var5) 4773: 24(int64_t) SConvert 4772 Store 4774(param) 4773 4775: 2 FunctionCall 61(func64(i641;) 4774(param) 4776: 30(int) Load 4739(var9) 4777: 24(int64_t) SConvert 4776 Store 4778(param) 4777 4779: 2 FunctionCall 61(func64(i641;) 4778(param) 4780: 892(int8_t) Load 4736(var2) 4781: 42(int64_t) UConvert 4780 Store 4782(param) 4781 4783: 2 FunctionCall 64(func64(u641;) 4782(param) 4784:913(int16_t) Load 4738(var3) 4785: 42(int64_t) UConvert 4784 Store 4786(param) 4785 4787: 2 FunctionCall 64(func64(u641;) 4786(param) 4788: 36(int) Load 4741(var11) 4789: 42(int64_t) UConvert 4788 Store 4790(param) 4789 4791: 2 FunctionCall 64(func64(u641;) 4790(param) 4792: 48(float) Load 4744(var34) 4793:54(float64_t) FConvert 4792 Store 4794(param) 4793 4795: 2 FunctionCall 58(func64(d1;) 4794(param) Return FunctionEnd 68(testBuiltinNVOnly(): 2 Function None 3 69: Label 4796(v1): 25(ptr) Variable Function 4798(v2): 43(ptr) Variable Function 4800(v3): 177(ptr) Variable Function 4802(v4): 107(ptr) Variable Function 4804(v5): 37(ptr) Variable Function 4807(v6): 1048(ptr) Variable Function 4809(v7): 25(ptr) Variable Function 4811(v8): 111(ptr) Variable Function 4813(v9): 130(ptr) Variable Function 4815(v10): 150(ptr) Variable Function 4817(v11): 43(ptr) Variable Function 4819(v12): 115(ptr) Variable Function 4821(v13): 134(ptr) Variable Function 4823(v14): 154(ptr) Variable Function 4825(v15): 55(ptr) Variable Function 4827(v16): 122(ptr) Variable Function 4829(v17): 142(ptr) Variable Function 4831(v18): 161(ptr) Variable Function 4833(v19): 55(ptr) Variable Function 4835(v20): 122(ptr) Variable Function 4837(v21): 142(ptr) Variable Function 4839(v22): 161(ptr) Variable Function 4841(b1): 903(ptr) Variable Function 4847(b2): 903(ptr) Variable Function 4851(b3): 903(ptr) Variable Function 4797: 24(int64_t) Bitcast 179 Store 4796(v1) 4797 4799: 42(int64_t) Bitcast 109 Store 4798(v2) 4799 4801: 176(ivec2) Bitcast 99 Store 4800(v3) 4801 4803: 106(ivec2) Bitcast 101 Store 4802(v4) 4803 4806: 36(int) Bitcast 4805 Store 4804(v5) 4806 4808:1047(f16vec2) Bitcast 97 Store 4807(v6) 4808 4810: 24(int64_t) Bitcast 105 Store 4809(v7) 4810 4812:110(i64vec2) Bitcast 124 Store 4811(v8) 4812 4814:129(i64vec3) Bitcast 144 Store 4813(v9) 4814 4816:149(i64vec4) Bitcast 163 Store 4815(v10) 4816 4818: 42(int64_t) Bitcast 105 Store 4817(v11) 4818 4820:114(i64vec2) Bitcast 124 Store 4819(v12) 4820 4822:133(i64vec3) Bitcast 144 Store 4821(v13) 4822 4824:153(i64vec4) Bitcast 163 Store 4823(v14) 4824 4826:54(float64_t) Bitcast 99 Store 4825(v15) 4826 4828:121(f64vec2) Bitcast 113 Store 4827(v16) 4828 4830:141(f64vec3) Bitcast 132 Store 4829(v17) 4830 4832:160(f64vec4) Bitcast 152 Store 4831(v18) 4832 4834:54(float64_t) Bitcast 101 Store 4833(v19) 4834 4836:121(f64vec2) Bitcast 117 Store 4835(v20) 4836 4838:141(f64vec3) Bitcast 136 Store 4837(v21) 4838 4840:160(f64vec4) Bitcast 156 Store 4839(v22) 4840 4844: 30(int) Load 4843(var) 4845: 902(bool) IEqual 4844 3760 4846: 902(bool) SubgroupAnyKHR 4845 Store 4841(b1) 4846 4848: 30(int) Load 4843(var) 4849: 902(bool) IEqual 4848 3760 4850: 902(bool) SubgroupAllKHR 4849 Store 4847(b2) 4850 4852: 30(int) Load 4843(var) 4853: 902(bool) IEqual 4852 3760 4854: 902(bool) SubgroupAllEqualKHR 4853 Store 4851(b3) 4854 Return FunctionEnd 70(testVectorRelationBuiltins(): 2 Function None 3 71: Label 4857(b1): 4856(ptr) Variable Function 4862(b2): 4861(ptr) Variable Function 4866(b3): 4865(ptr) Variable Function 4868(b4): 4856(ptr) Variable Function 4869(b5): 4861(ptr) Variable Function 4870(b6): 4865(ptr) Variable Function 4871(b7): 4856(ptr) Variable Function 4872(b8): 4861(ptr) Variable Function 4873(b9): 4865(ptr) Variable Function 4874(b10): 4856(ptr) Variable Function 4875(b11): 4861(ptr) Variable Function 4876(b12): 4865(ptr) Variable Function 4877(b13): 4856(ptr) Variable Function 4879(b14): 4861(ptr) Variable Function 4881(b15): 4865(ptr) Variable Function 4883(b16): 4856(ptr) Variable Function 4884(b17): 4861(ptr) Variable Function 4885(b18): 4865(ptr) Variable Function 4886(b19): 4856(ptr) Variable Function 4887(b20): 4861(ptr) Variable Function 4888(b21): 4865(ptr) Variable Function 4889(b22): 4856(ptr) Variable Function 4890(b23): 4861(ptr) Variable Function 4891(b24): 4865(ptr) Variable Function 4892(b25): 4856(ptr) Variable Function 4893(b26): 4861(ptr) Variable Function 4894(b27): 4865(ptr) Variable Function 4895(b28): 4856(ptr) Variable Function 4896(b29): 4861(ptr) Variable Function 4897(b30): 4865(ptr) Variable Function 4898(b31): 4856(ptr) Variable Function 4899(b32): 4861(ptr) Variable Function 4900(b33): 4865(ptr) Variable Function 4901(b34): 4856(ptr) Variable Function 4902(b35): 4861(ptr) Variable Function 4903(b36): 4865(ptr) Variable Function 4904(b37): 4856(ptr) Variable Function 4905(b38): 4861(ptr) Variable Function 4906(b39): 4865(ptr) Variable Function 4907(b40): 4856(ptr) Variable Function 4908(b41): 4861(ptr) Variable Function 4909(b42): 4865(ptr) Variable Function 4910(b43): 4856(ptr) Variable Function 4911(b44): 4861(ptr) Variable Function 4912(b45): 4865(ptr) Variable Function 4913(b46): 4856(ptr) Variable Function 4914(b47): 4861(ptr) Variable Function 4915(b48): 4865(ptr) Variable Function 4916(b49): 4856(ptr) Variable Function 4917(b50): 4861(ptr) Variable Function 4918(b51): 4865(ptr) Variable Function 4919(b52): 4856(ptr) Variable Function 4920(b53): 4861(ptr) Variable Function 4921(b54): 4865(ptr) Variable Function 4922(b55): 4856(ptr) Variable Function 4923(b56): 4861(ptr) Variable Function 4924(b57): 4865(ptr) Variable Function 4925(b58): 4856(ptr) Variable Function 4926(b59): 4861(ptr) Variable Function 4927(b60): 4865(ptr) Variable Function 4928(b61): 4856(ptr) Variable Function 4929(b62): 4861(ptr) Variable Function 4930(b63): 4865(ptr) Variable Function 4931(b64): 4856(ptr) Variable Function 4932(b65): 4861(ptr) Variable Function 4933(b66): 4865(ptr) Variable Function 4934(b67): 4856(ptr) Variable Function 4935(b68): 4861(ptr) Variable Function 4936(b69): 4865(ptr) Variable Function 4937(b70): 4856(ptr) Variable Function 4938(b71): 4861(ptr) Variable Function 4939(b72): 4865(ptr) Variable Function Store 4857(b1) 4859 Store 4862(b2) 4863 Store 4866(b3) 4867 Store 4868(b4) 4859 Store 4869(b5) 4863 Store 4870(b6) 4867 Store 4871(b7) 4859 Store 4872(b8) 4863 Store 4873(b9) 4867 Store 4874(b10) 4859 Store 4875(b11) 4863 Store 4876(b12) 4867 Store 4877(b13) 4878 Store 4879(b14) 4880 Store 4881(b15) 4882 Store 4883(b16) 4878 Store 4884(b17) 4880 Store 4885(b18) 4882 Store 4886(b19) 4878 Store 4887(b20) 4880 Store 4888(b21) 4882 Store 4889(b22) 4878 Store 4890(b23) 4880 Store 4891(b24) 4882 Store 4892(b25) 4878 Store 4893(b26) 4880 Store 4894(b27) 4882 Store 4895(b28) 4878 Store 4896(b29) 4880 Store 4897(b30) 4882 Store 4898(b31) 4859 Store 4899(b32) 4863 Store 4900(b33) 4867 Store 4901(b34) 4859 Store 4902(b35) 4863 Store 4903(b36) 4867 Store 4904(b37) 4859 Store 4905(b38) 4863 Store 4906(b39) 4867 Store 4907(b40) 4859 Store 4908(b41) 4863 Store 4909(b42) 4867 Store 4910(b43) 4878 Store 4911(b44) 4880 Store 4912(b45) 4882 Store 4913(b46) 4878 Store 4914(b47) 4880 Store 4915(b48) 4882 Store 4916(b49) 4878 Store 4917(b50) 4880 Store 4918(b51) 4882 Store 4919(b52) 4859 Store 4920(b53) 4863 Store 4921(b54) 4867 Store 4922(b55) 4859 Store 4923(b56) 4863 Store 4924(b57) 4867 Store 4925(b58) 4859 Store 4926(b59) 4863 Store 4927(b60) 4867 Store 4928(b61) 4878 Store 4929(b62) 4880 Store 4930(b63) 4882 Store 4931(b64) 4878 Store 4932(b65) 4880 Store 4933(b66) 4882 Store 4934(b67) 4878 Store 4935(b68) 4880 Store 4936(b69) 4882 Store 4937(b70) 4859 Store 4938(b71) 4863 Store 4939(b72) 4867 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nvgpushader5.geom.out000066400000000000000000000166771506534232700233710ustar00rootroot00000000000000spv.nvgpushader5.geom // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Geometry Capability Float64 Capability Int64 Capability SampleRateShading Capability Int8 Capability GeometryStreams Capability StorageInputOutput16 Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 14 22 24 25 28 32 36 39 43 47 51 52 54 56 58 60 62 64 65 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 6 ExecutionMode 4 OutputPoints ExecutionMode 4 OutputVertices 3 Source GLSL 150 SourceExtension "GL_ARB_gpu_shader_fp64" SourceExtension "GL_NV_gpu_shader5" Name 4 "main" Name 6 "testGeomBuiltins(" Name 12 "i" Name 14 "gl_InvocationID" Name 22 "colorSampIn" Name 24 "colorSampOut" Name 25 "color" Name 28 "Ocolor" Name 32 "var1" Name 36 "var5" Name 39 "var9" Name 43 "var13" Name 47 "var33" Name 51 "var41" Name 52 "var42" Name 54 "var11" Name 56 "var51" Name 58 "var91" Name 60 "var131" Name 62 "var331" Name 64 "var411" Name 65 "var421" Decorate 14(gl_InvocationID) BuiltIn InvocationId Decorate 22(colorSampIn) Sample Decorate 22(colorSampIn) Location 0 Decorate 24(colorSampOut) Sample Decorate 24(colorSampOut) Stream 0 Decorate 24(colorSampOut) Location 0 Decorate 25(color) Location 1 Decorate 28(Ocolor) Stream 0 Decorate 28(Ocolor) Location 1 Decorate 32(var1) Location 2 Decorate 36(var5) Location 3 Decorate 39(var9) Location 4 Decorate 43(var13) Location 5 Decorate 47(var33) Location 6 Decorate 51(var41) Location 7 Decorate 52(var42) Location 8 Decorate 54(var11) Stream 1 Decorate 54(var11) Location 2 Decorate 56(var51) Stream 1 Decorate 56(var51) Location 3 Decorate 58(var91) Stream 1 Decorate 58(var91) Location 4 Decorate 60(var131) Stream 1 Decorate 60(var131) Location 5 Decorate 62(var331) Stream 1 Decorate 62(var331) Location 6 Decorate 64(var411) Stream 1 Decorate 64(var411) Location 7 Decorate 65(var421) Stream 1 Decorate 65(var421) Location 8 2: TypeVoid 3: TypeFunction 2 8: TypeInt 32 1 9: 8(int) Constant 1 10: 8(int) Constant 0 11: TypePointer Function 8(int) 13: TypePointer Input 8(int) 14(gl_InvocationID): 13(ptr) Variable Input 16: TypeFloat 32 17: TypeVector 16(float) 4 18: TypeInt 32 0 19: 18(int) Constant 3 20: TypeArray 17(fvec4) 19 21: TypePointer Input 20 22(colorSampIn): 21(ptr) Variable Input 23: TypePointer Output 17(fvec4) 24(colorSampOut): 23(ptr) Variable Output 25(color): 21(ptr) Variable Input 26: TypeVector 16(float) 3 27: TypePointer Output 26(fvec3) 28(Ocolor): 27(ptr) Variable Output 29: TypeInt 8 1 30: TypeArray 29(int8_t) 19 31: TypePointer Input 30 32(var1): 31(ptr) Variable Input 33: TypeInt 16 1 34: TypeArray 33(int16_t) 19 35: TypePointer Input 34 36(var5): 35(ptr) Variable Input 37: TypeArray 8(int) 19 38: TypePointer Input 37 39(var9): 38(ptr) Variable Input 40: TypeInt 64 1 41: TypeArray 40(int64_t) 19 42: TypePointer Input 41 43(var13): 42(ptr) Variable Input 44: TypeFloat 16 45: TypeArray 44(float16_t) 19 46: TypePointer Input 45 47(var33): 46(ptr) Variable Input 48: TypeFloat 64 49: TypeArray 48(float64_t) 19 50: TypePointer Input 49 51(var41): 50(ptr) Variable Input 52(var42): 50(ptr) Variable Input 53: TypePointer Output 29(int8_t) 54(var11): 53(ptr) Variable Output 55: TypePointer Output 33(int16_t) 56(var51): 55(ptr) Variable Output 57: TypePointer Output 8(int) 58(var91): 57(ptr) Variable Output 59: TypePointer Output 40(int64_t) 60(var131): 59(ptr) Variable Output 61: TypePointer Output 44(float16_t) 62(var331): 61(ptr) Variable Output 63: TypePointer Output 48(float64_t) 64(var411): 63(ptr) Variable Output 65(var421): 63(ptr) Variable Output 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(testGeomBuiltins(): 2 Function None 3 7: Label 12(i): 11(ptr) Variable Function EmitStreamVertex 9 EndStreamPrimitive 10 EmitVertex EndPrimitive 15: 8(int) Load 14(gl_InvocationID) Store 12(i) 15 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.nvgpushader5.vert.out000066400000000000000000000114471506534232700234100ustar00rootroot00000000000000spv.nvgpushader5.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader Capability Float64 Capability Int64 Capability SampleRateShading Capability Int8 Capability StorageInputOutput16 Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 11 14 17 20 23 26 29 30 32 34 36 38 40 42 43 Source GLSL 150 SourceExtension "GL_ARB_gpu_shader_fp64" SourceExtension "GL_NV_gpu_shader5" Name 4 "main" Name 9 "colorSampIn" Name 11 "colorSampOut" Name 14 "var1" Name 17 "var5" Name 20 "var9" Name 23 "var13" Name 26 "var33" Name 29 "var41" Name 30 "var42" Name 32 "var11" Name 34 "var51" Name 36 "var91" Name 38 "var131" Name 40 "var331" Name 42 "var411" Name 43 "var421" Decorate 9(colorSampIn) Location 0 Decorate 11(colorSampOut) Sample Decorate 11(colorSampOut) Location 0 Decorate 14(var1) Location 1 Decorate 17(var5) Location 2 Decorate 20(var9) Location 3 Decorate 23(var13) Location 4 Decorate 26(var33) Location 5 Decorate 29(var41) Location 6 Decorate 30(var42) Location 7 Decorate 32(var11) Location 1 Decorate 34(var51) Location 2 Decorate 36(var91) Location 3 Decorate 38(var131) Location 4 Decorate 40(var331) Location 5 Decorate 42(var411) Location 6 Decorate 43(var421) Location 7 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Input 7(fvec4) 9(colorSampIn): 8(ptr) Variable Input 10: TypePointer Output 7(fvec4) 11(colorSampOut): 10(ptr) Variable Output 12: TypeInt 8 1 13: TypePointer Input 12(int8_t) 14(var1): 13(ptr) Variable Input 15: TypeInt 16 1 16: TypePointer Input 15(int16_t) 17(var5): 16(ptr) Variable Input 18: TypeInt 32 1 19: TypePointer Input 18(int) 20(var9): 19(ptr) Variable Input 21: TypeInt 64 1 22: TypePointer Input 21(int64_t) 23(var13): 22(ptr) Variable Input 24: TypeFloat 16 25: TypePointer Input 24(float16_t) 26(var33): 25(ptr) Variable Input 27: TypeFloat 64 28: TypePointer Input 27(float64_t) 29(var41): 28(ptr) Variable Input 30(var42): 28(ptr) Variable Input 31: TypePointer Output 12(int8_t) 32(var11): 31(ptr) Variable Output 33: TypePointer Output 15(int16_t) 34(var51): 33(ptr) Variable Output 35: TypePointer Output 18(int) 36(var91): 35(ptr) Variable Output 37: TypePointer Output 21(int64_t) 38(var131): 37(ptr) Variable Output 39: TypePointer Output 24(float16_t) 40(var331): 39(ptr) Variable Output 41: TypePointer Output 27(float64_t) 42(var411): 41(ptr) Variable Output 43(var421): 41(ptr) Variable Output 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.offsets.frag.out000066400000000000000000000051711506534232700224020ustar00rootroot00000000000000spv.offsets.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 7 "n1" MemberName 7(n1) 0 "a" MemberName 7(n1) 1 "b" MemberName 7(n1) 2 "c" MemberName 7(n1) 3 "d" Name 9 "i1" Name 12 "n2" MemberName 12(n2) 0 "e" MemberName 12(n2) 1 "f" MemberName 12(n2) 2 "g" MemberName 12(n2) 3 "h" Name 14 "i2" Decorate 7(n1) Block MemberDecorate 7(n1) 0 Offset 8 MemberDecorate 7(n1) 1 Offset 4 MemberDecorate 7(n1) 2 Offset 0 MemberDecorate 7(n1) 3 Offset 12 Decorate 9(i1) Binding 0 Decorate 9(i1) DescriptorSet 0 Decorate 12(n2) BufferBlock MemberDecorate 12(n2) 0 Offset 32 MemberDecorate 12(n2) 1 Offset 48 MemberDecorate 12(n2) 2 Offset 16 MemberDecorate 12(n2) 3 Offset 0 Decorate 14(i2) Binding 1 Decorate 14(i2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7(n1): TypeStruct 6(int) 6(int) 6(int) 6(int) 8: TypePointer Uniform 7(n1) 9(i1): 8(ptr) Variable Uniform 10: TypeFloat 32 11: TypeVector 10(float) 3 12(n2): TypeStruct 11(fvec3) 11(fvec3) 11(fvec3) 11(fvec3) 13: TypePointer Uniform 12(n2) 14(i2): 13(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.paramMemory.420.frag.out000066400000000000000000000162411506534232700235260ustar00rootroot00000000000000spv.paramMemory.420.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 69 Capability Shader Capability StorageImageReadWithoutFormat Capability StorageImageWriteWithoutFormat 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 27 66 ExecutionMode 4 OriginUpperLeft Source GLSL 420 SourceExtension "GL_EXT_shader_image_load_formatted" Name 4 "main" Name 16 "image_load(I21;vi2;" Name 14 "image" Name 15 "coords" Name 23 "image_store(I21;vi2;vf4;" Name 20 "image" Name 21 "coords" Name 22 "data" Name 27 "in_coords" Name 35 "read1" Name 36 "image1" Name 37 "param" Name 40 "read2" Name 41 "image2" Name 42 "param" Name 47 "image3" Name 51 "param" Name 53 "param" Name 57 "image4" Name 61 "param" Name 63 "param" Name 66 "out_color" Decorate 14(image) Coherent Decorate 14(image) NonWritable Decorate 20(image) Coherent Decorate 20(image) NonReadable Decorate 27(in_coords) Flat Decorate 27(in_coords) Location 0 Decorate 36(image1) Coherent Decorate 36(image1) NonWritable Decorate 36(image1) Binding 0 Decorate 36(image1) DescriptorSet 0 Decorate 41(image2) NonWritable Decorate 41(image2) Binding 2 Decorate 41(image2) DescriptorSet 0 Decorate 47(image3) Coherent Decorate 47(image3) NonReadable Decorate 47(image3) Binding 1 Decorate 47(image3) DescriptorSet 0 Decorate 57(image4) NonReadable Decorate 57(image4) Binding 3 Decorate 57(image4) DescriptorSet 0 Decorate 66(out_color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) 2D nonsampled format:Unknown 8: TypePointer UniformConstant 7 9: TypeInt 32 1 10: TypeVector 9(int) 2 11: TypePointer Function 10(ivec2) 12: TypeVector 6(float) 4 13: TypeFunction 12(fvec4) 8(ptr) 11(ptr) 18: TypePointer Function 12(fvec4) 19: TypeFunction 2 8(ptr) 11(ptr) 18(ptr) 26: TypePointer Input 10(ivec2) 27(in_coords): 26(ptr) Variable Input 36(image1): 8(ptr) Variable UniformConstant 41(image2): 8(ptr) Variable UniformConstant 45: TypeImage 6(float) 2D nonsampled format:Rgba32f 46: TypePointer UniformConstant 45 47(image3): 46(ptr) Variable UniformConstant 49: 6(float) Constant 1056964608 55: TypeImage 6(float) 2D nonsampled format:Rgba16f 56: TypePointer UniformConstant 55 57(image4): 56(ptr) Variable UniformConstant 59: 6(float) Constant 1073741824 65: TypePointer Output 12(fvec4) 66(out_color): 65(ptr) Variable Output 67: 6(float) Constant 0 68: 12(fvec4) ConstantComposite 67 67 67 67 4(main): 2 Function None 3 5: Label 35(read1): 18(ptr) Variable Function 37(param): 11(ptr) Variable Function 40(read2): 18(ptr) Variable Function 42(param): 11(ptr) Variable Function 51(param): 11(ptr) Variable Function 53(param): 18(ptr) Variable Function 61(param): 11(ptr) Variable Function 63(param): 18(ptr) Variable Function 38: 10(ivec2) Load 27(in_coords) Store 37(param) 38 39: 12(fvec4) FunctionCall 16(image_load(I21;vi2;) 36(image1) 37(param) Store 35(read1) 39 43: 10(ivec2) Load 27(in_coords) Store 42(param) 43 44: 12(fvec4) FunctionCall 16(image_load(I21;vi2;) 41(image2) 42(param) Store 40(read2) 44 48: 12(fvec4) Load 35(read1) 50: 12(fvec4) VectorTimesScalar 48 49 52: 10(ivec2) Load 27(in_coords) Store 51(param) 52 Store 53(param) 50 54: 2 FunctionCall 23(image_store(I21;vi2;vf4;) 47(image3) 51(param) 53(param) 58: 12(fvec4) Load 40(read2) 60: 12(fvec4) VectorTimesScalar 58 59 62: 10(ivec2) Load 27(in_coords) Store 61(param) 62 Store 63(param) 60 64: 2 FunctionCall 23(image_store(I21;vi2;vf4;) 57(image4) 61(param) 63(param) Store 66(out_color) 68 Return FunctionEnd 16(image_load(I21;vi2;): 12(fvec4) Function None 13 14(image): 8(ptr) FunctionParameter 15(coords): 11(ptr) FunctionParameter 17: Label 25: 7 Load 14(image) 28: 10(ivec2) Load 27(in_coords) 29: 12(fvec4) ImageRead 25 28 ReturnValue 29 FunctionEnd 23(image_store(I21;vi2;vf4;): 2 Function None 19 20(image): 8(ptr) FunctionParameter 21(coords): 11(ptr) FunctionParameter 22(data): 18(ptr) FunctionParameter 24: Label 32: 7 Load 20(image) 33: 10(ivec2) Load 27(in_coords) 34: 12(fvec4) Load 22(data) ImageWrite 32 33 34 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.paramMemory.frag.out000066400000000000000000000141001506534232700232120ustar00rootroot00000000000000spv.paramMemory.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader Capability StorageImageReadWithoutFormat Capability StorageImageWriteWithoutFormat 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 27 61 ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 16 "image_load(I21;vi2;" Name 14 "image" Name 15 "coords" Name 23 "image_store(I21;vi2;vf4;" Name 20 "image" Name 21 "coords" Name 22 "data" Name 27 "in_coords" Name 35 "read1" Name 38 "read2" Name 43 "image3" Name 46 "param" Name 48 "param" Name 52 "image4" Name 56 "param" Name 58 "param" Name 61 "out_color" Decorate 14(image) Coherent Decorate 14(image) NonWritable Decorate 20(image) Coherent Decorate 20(image) NonReadable Decorate 27(in_coords) Flat Decorate 27(in_coords) Location 0 Decorate 43(image3) Coherent Decorate 43(image3) NonReadable Decorate 43(image3) Binding 1 Decorate 43(image3) DescriptorSet 0 Decorate 52(image4) NonReadable Decorate 52(image4) Binding 3 Decorate 52(image4) DescriptorSet 0 Decorate 61(out_color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) 2D nonsampled format:Unknown 8: TypePointer UniformConstant 7 9: TypeInt 32 1 10: TypeVector 9(int) 2 11: TypePointer Function 10(ivec2) 12: TypeVector 6(float) 4 13: TypeFunction 12(fvec4) 8(ptr) 11(ptr) 18: TypePointer Function 12(fvec4) 19: TypeFunction 2 8(ptr) 11(ptr) 18(ptr) 26: TypePointer Input 10(ivec2) 27(in_coords): 26(ptr) Variable Input 36: 6(float) Constant 1053609165 37: 12(fvec4) ConstantComposite 36 36 36 36 39: 6(float) Constant 1056964608 40: 12(fvec4) ConstantComposite 39 39 39 39 41: TypeImage 6(float) 2D nonsampled format:Rgba32f 42: TypePointer UniformConstant 41 43(image3): 42(ptr) Variable UniformConstant 50: TypeImage 6(float) 2D nonsampled format:Rgba16f 51: TypePointer UniformConstant 50 52(image4): 51(ptr) Variable UniformConstant 54: 6(float) Constant 1073741824 60: TypePointer Output 12(fvec4) 61(out_color): 60(ptr) Variable Output 62: 6(float) Constant 0 63: 12(fvec4) ConstantComposite 62 62 62 62 4(main): 2 Function None 3 5: Label 35(read1): 18(ptr) Variable Function 38(read2): 18(ptr) Variable Function 46(param): 11(ptr) Variable Function 48(param): 18(ptr) Variable Function 56(param): 11(ptr) Variable Function 58(param): 18(ptr) Variable Function Store 35(read1) 37 Store 38(read2) 40 44: 12(fvec4) Load 35(read1) 45: 12(fvec4) VectorTimesScalar 44 39 47: 10(ivec2) Load 27(in_coords) Store 46(param) 47 Store 48(param) 45 49: 2 FunctionCall 23(image_store(I21;vi2;vf4;) 43(image3) 46(param) 48(param) 53: 12(fvec4) Load 38(read2) 55: 12(fvec4) VectorTimesScalar 53 54 57: 10(ivec2) Load 27(in_coords) Store 56(param) 57 Store 58(param) 55 59: 2 FunctionCall 23(image_store(I21;vi2;vf4;) 52(image4) 56(param) 58(param) Store 61(out_color) 63 Return FunctionEnd 16(image_load(I21;vi2;): 12(fvec4) Function None 13 14(image): 8(ptr) FunctionParameter 15(coords): 11(ptr) FunctionParameter 17: Label 25: 7 Load 14(image) 28: 10(ivec2) Load 27(in_coords) 29: 12(fvec4) ImageRead 25 28 ReturnValue 29 FunctionEnd 23(image_store(I21;vi2;vf4;): 2 Function None 19 20(image): 8(ptr) FunctionParameter 21(coords): 11(ptr) FunctionParameter 22(data): 18(ptr) FunctionParameter 24: Label 32: 7 Load 20(image) 33: 10(ivec2) Load 27(in_coords) 34: 12(fvec4) Load 22(data) ImageWrite 32 33 34 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.perprimitiveNV.frag.out000066400000000000000000000047501506534232700237160ustar00rootroot00000000000000spv.perprimitiveNV.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader Capability MeshShadingNV Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 11 19 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_NV_mesh_shader" Name 4 "main" Name 8 "g" Name 9 "B" MemberName 9(B) 0 "f" Name 11 "" Name 17 "C" MemberName 17(C) 0 "h" Name 19 "" Decorate 8(g) Location 8 Decorate 9(B) Block MemberDecorate 9(B) 0 PerPrimitiveNV Decorate 11 Location 0 Decorate 17(C) Block MemberDecorate 17(C) 0 Flat MemberDecorate 17(C) 0 Centroid Decorate 19 Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Output 6(float) 8(g): 7(ptr) Variable Output 9(B): TypeStruct 6(float) 10: TypePointer Input 9(B) 11: 10(ptr) Variable Input 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypePointer Input 6(float) 17(C): TypeStruct 6(float) 18: TypePointer Input 17(C) 19: 18(ptr) Variable Input 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 11 13 16: 6(float) Load 15 20: 14(ptr) AccessChain 19 13 21: 6(float) Load 20 22: 6(float) FAdd 16 21 Store 8(g) 22 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.pp.line.frag.out000066400000000000000000000204541506534232700222770ustar00rootroot00000000000000spv.pp.line.frag 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): 8000b // Id's are bound by 84 Capability Shader Capability Sampled1D 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "main" 60 72 75 78 ExecutionMode 5 OriginUpperLeft 1: String "spv.pp.line.frag" 7: String "header.h" Source GLSL 140 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 140 #extension GL_GOOGLE_cpp_style_line_directive : require uniform sampler1D texSampler1D; uniform sampler2D texSampler2D; varying float blend; varying vec4 u; 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 = myAbs(1.789); float bias = 2.0; float coords1D = 1.789; vec4 color = vec4(0.0, 0.0, 0.0, 0.0); #line 53 color += texture (texSampler1D, coords1D); color += texture (texSampler1D, coords1D, bias); #line 102 color += texture (texSampler2D, coords2D); color += texture (texSampler2D, coords2D, bias); gl_FragColor = mix(color, u, blend * blendscale); } " SourceExtension "GL_GOOGLE_cpp_style_line_directive" Name 5 "main" Name 12 "myAbs(f1;" Name 11 "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) Binding 0 Decorate 41(texSampler1D) DescriptorSet 0 Decorate 56(texSampler2D) Binding 1 Decorate 56(texSampler2D) DescriptorSet 0 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 8: TypeFloat 32 9: TypePointer Function 8(float) 10: TypeFunction 8(float) 9(ptr) 15: 8(float) Constant 0 16: TypeBool 28: 8(float) Constant 1071971828 32: 8(float) Constant 1073741824 34: TypeVector 8(float) 4 35: TypePointer Function 34(fvec4) 37: 34(fvec4) ConstantComposite 15 15 15 15 38: TypeImage 8(float) 1D sampled format:Unknown 39: TypeSampledImage 38 40: TypePointer UniformConstant 39 41(texSampler1D): 40(ptr) Variable UniformConstant 53: TypeImage 8(float) 2D sampled format:Unknown 54: TypeSampledImage 53 55: TypePointer UniformConstant 54 56(texSampler2D): 55(ptr) Variable UniformConstant 58: TypeVector 8(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 8(float) 78(blend): 77(ptr) Variable Input Line 1 23 11 5(main): 3 Function None 4 6: Label 27(blendscale): 9(ptr) Variable Function 29(param): 9(ptr) Variable Function 31(bias): 9(ptr) Variable Function 33(coords1D): 9(ptr) Variable Function 36(color): 35(ptr) Variable Function Line 1 25 0 Store 29(param) 28 30: 8(float) FunctionCall 12(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 42: 39 Load 41(texSampler1D) 43: 8(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 47: 39 Load 41(texSampler1D) 48: 8(float) Load 33(coords1D) 49: 8(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 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 65: 54 Load 56(texSampler2D) 66: 58(fvec2) Load 60(coords2D) 67: 8(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 73: 34(fvec4) Load 36(color) 76: 34(fvec4) Load 75(u) 79: 8(float) Load 78(blend) 80: 8(float) Load 27(blendscale) 81: 8(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 Line 1 107 0 Return FunctionEnd Line 7 1 20 12(myAbs(f1;): 8(float) Function None 10 11(x): 9(ptr) FunctionParameter 13: Label Line 7 2 0 14: 8(float) Load 11(x) 17: 16(bool) FOrdGreaterThan 14 15 SelectionMerge 19 None BranchConditional 17 18 22 18: Label Line 7 3 0 20: 8(float) Load 11(x) ReturnValue 20 22: Label Line 7 6 0 23: 8(float) Load 11(x) 24: 8(float) FNegate 23 ReturnValue 24 19: Label Unreachable FunctionEnd glslang-16.0.0/Test/baseResults/spv.precise.tesc.out000066400000000000000000000135401506534232700224010ustar00rootroot00000000000000spv.precise.tesc // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 12 15 20 30 40 45 ExecutionMode 4 OutputVertices 3 Source ESSL 310 SourceExtension "GL_EXT_gpu_shader5" SourceExtension "GL_EXT_shader_io_blocks" SourceExtension "GL_EXT_tessellation_shader" Name 4 "main" Name 12 "in_te_position" Name 15 "gl_InvocationID" Name 20 "in_tc_position" Name 30 "gl_TessLevelInner" Name 40 "gl_TessLevelOuter" Name 45 "in_tc_tessParam" Decorate 12(in_te_position) Location 0 Decorate 15(gl_InvocationID) BuiltIn InvocationId Decorate 20(in_tc_position) Location 0 Decorate 30(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 30(gl_TessLevelInner) Patch Decorate 40(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 40(gl_TessLevelOuter) Patch Decorate 45(in_tc_tessParam) Location 1 Decorate 52 NoContraction Decorate 53 NoContraction Decorate 54 NoContraction Decorate 60 NoContraction Decorate 61 NoContraction Decorate 62 NoContraction Decorate 68 NoContraction Decorate 69 NoContraction Decorate 70 NoContraction 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeInt 32 0 9: 8(int) Constant 3 10: TypeArray 7(fvec2) 9 11: TypePointer Output 10 12(in_te_position): 11(ptr) Variable Output 13: TypeInt 32 1 14: TypePointer Input 13(int) 15(gl_InvocationID): 14(ptr) Variable Input 17: 8(int) Constant 32 18: TypeArray 7(fvec2) 17 19: TypePointer Input 18 20(in_tc_position): 19(ptr) Variable Input 22: TypePointer Input 7(fvec2) 25: TypePointer Output 7(fvec2) 27: 8(int) Constant 2 28: TypeArray 6(float) 27 29: TypePointer Output 28 30(gl_TessLevelInner): 29(ptr) Variable Output 31: 13(int) Constant 0 32: 6(float) Constant 1084227584 33: TypePointer Output 6(float) 35: 13(int) Constant 1 37: 8(int) Constant 4 38: TypeArray 6(float) 37 39: TypePointer Output 38 40(gl_TessLevelOuter): 39(ptr) Variable Output 41: 6(float) Constant 1065353216 42: 6(float) Constant 1105985536 43: TypeArray 6(float) 17 44: TypePointer Input 43 45(in_tc_tessParam): 44(ptr) Variable Input 46: TypePointer Input 6(float) 49: 13(int) Constant 2 4(main): 2 Function None 3 5: Label 16: 13(int) Load 15(gl_InvocationID) 21: 13(int) Load 15(gl_InvocationID) 23: 22(ptr) AccessChain 20(in_tc_position) 21 24: 7(fvec2) Load 23 26: 25(ptr) AccessChain 12(in_te_position) 16 Store 26 24 34: 33(ptr) AccessChain 30(gl_TessLevelInner) 31 Store 34 32 36: 33(ptr) AccessChain 30(gl_TessLevelInner) 35 Store 36 32 47: 46(ptr) AccessChain 45(in_tc_tessParam) 35 48: 6(float) Load 47 50: 46(ptr) AccessChain 45(in_tc_tessParam) 49 51: 6(float) Load 50 52: 6(float) FAdd 48 51 53: 6(float) FMul 42 52 54: 6(float) FAdd 41 53 55: 33(ptr) AccessChain 40(gl_TessLevelOuter) 31 Store 55 54 56: 46(ptr) AccessChain 45(in_tc_tessParam) 49 57: 6(float) Load 56 58: 46(ptr) AccessChain 45(in_tc_tessParam) 31 59: 6(float) Load 58 60: 6(float) FAdd 57 59 61: 6(float) FMul 42 60 62: 6(float) FAdd 41 61 63: 33(ptr) AccessChain 40(gl_TessLevelOuter) 35 Store 63 62 64: 46(ptr) AccessChain 45(in_tc_tessParam) 31 65: 6(float) Load 64 66: 46(ptr) AccessChain 45(in_tc_tessParam) 35 67: 6(float) Load 66 68: 6(float) FAdd 65 67 69: 6(float) FMul 42 68 70: 6(float) FAdd 41 69 71: 33(ptr) AccessChain 40(gl_TessLevelOuter) 49 Store 71 70 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.precise.tese.out000066400000000000000000000215621506534232700224060ustar00rootroot00000000000000spv.precise.tese // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 119 Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 4 "main" 12 21 62 112 ExecutionMode 4 Triangles ExecutionMode 4 SpacingEqual ExecutionMode 4 VertexOrderCcw Source ESSL 310 SourceExtension "GL_EXT_gpu_shader5" SourceExtension "GL_EXT_shader_io_blocks" SourceExtension "GL_EXT_tessellation_shader" Name 4 "main" Name 9 "pos" Name 12 "gl_TessCoord" Name 21 "in_te_position" Name 45 "f" Name 62 "in_f_color" Name 73 "bits" Name 77 "numBits" Name 78 "i" Name 110 "gl_PerVertex" MemberName 110(gl_PerVertex) 0 "gl_Position" MemberName 110(gl_PerVertex) 1 "gl_PointSize" Name 112 "" Decorate 12(gl_TessCoord) BuiltIn TessCoord Decorate 21(in_te_position) Location 0 Decorate 27 NoContraction Decorate 34 NoContraction Decorate 35 NoContraction Decorate 42 NoContraction Decorate 43 NoContraction Decorate 62(in_f_color) RelaxedPrecision Decorate 62(in_f_color) Location 0 Decorate 97 NoContraction Decorate 99 NoContraction Decorate 101 NoContraction Decorate 106 NoContraction Decorate 109 NoContraction Decorate 110(gl_PerVertex) Block MemberDecorate 110(gl_PerVertex) 0 BuiltIn Position MemberDecorate 110(gl_PerVertex) 1 BuiltIn PointSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Function 7(fvec2) 10: TypeVector 6(float) 3 11: TypePointer Input 10(fvec3) 12(gl_TessCoord): 11(ptr) Variable Input 13: TypeInt 32 0 14: 13(int) Constant 0 15: TypePointer Input 6(float) 18: 13(int) Constant 32 19: TypeArray 7(fvec2) 18 20: TypePointer Input 19 21(in_te_position): 20(ptr) Variable Input 22: TypeInt 32 1 23: 22(int) Constant 0 24: TypePointer Input 7(fvec2) 28: 13(int) Constant 1 31: 22(int) Constant 1 36: 13(int) Constant 2 39: 22(int) Constant 2 44: TypePointer Function 6(float) 46: 6(float) Constant 1077936128 57: 6(float) Constant 1056964608 60: TypeVector 6(float) 4 61: TypePointer Output 60(fvec4) 62(in_f_color): 61(ptr) Variable Output 66: 6(float) Constant 1065353216 71: TypeVector 13(int) 2 72: TypePointer Function 71(ivec2) 76: TypePointer Function 13(int) 85: TypeBool 105: 6(float) Constant 1025758986 110(gl_PerVertex): TypeStruct 60(fvec4) 6(float) 111: TypePointer Output 110(gl_PerVertex) 112: 111(ptr) Variable Output 114: 6(float) Constant 0 4(main): 2 Function None 3 5: Label 9(pos): 8(ptr) Variable Function 45(f): 44(ptr) Variable Function 73(bits): 72(ptr) Variable Function 77(numBits): 76(ptr) Variable Function 78(i): 76(ptr) Variable Function 16: 15(ptr) AccessChain 12(gl_TessCoord) 14 17: 6(float) Load 16 25: 24(ptr) AccessChain 21(in_te_position) 23 26: 7(fvec2) Load 25 27: 7(fvec2) VectorTimesScalar 26 17 29: 15(ptr) AccessChain 12(gl_TessCoord) 28 30: 6(float) Load 29 32: 24(ptr) AccessChain 21(in_te_position) 31 33: 7(fvec2) Load 32 34: 7(fvec2) VectorTimesScalar 33 30 35: 7(fvec2) FAdd 27 34 37: 15(ptr) AccessChain 12(gl_TessCoord) 36 38: 6(float) Load 37 40: 24(ptr) AccessChain 21(in_te_position) 39 41: 7(fvec2) Load 40 42: 7(fvec2) VectorTimesScalar 41 38 43: 7(fvec2) FAdd 35 42 Store 9(pos) 43 47: 15(ptr) AccessChain 12(gl_TessCoord) 14 48: 6(float) Load 47 49: 15(ptr) AccessChain 12(gl_TessCoord) 28 50: 6(float) Load 49 51: 15(ptr) AccessChain 12(gl_TessCoord) 36 52: 6(float) Load 51 53: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 50 52 54: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 48 53 55: 6(float) FMul 46 54 56: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 55 58: 6(float) FMul 56 57 59: 6(float) FAdd 58 57 Store 45(f) 59 63: 10(fvec3) Load 12(gl_TessCoord) 64: 6(float) Load 45(f) 65: 10(fvec3) VectorTimesScalar 63 64 67: 6(float) CompositeExtract 65 0 68: 6(float) CompositeExtract 65 1 69: 6(float) CompositeExtract 65 2 70: 60(fvec4) CompositeConstruct 67 68 69 66 Store 62(in_f_color) 70 74: 7(fvec2) Load 9(pos) 75: 71(ivec2) Bitcast 74 Store 73(bits) 75 Store 77(numBits) 14 Store 78(i) 14 Branch 79 79: Label LoopMerge 81 82 None Branch 83 83: Label 84: 13(int) Load 78(i) 86: 85(bool) ULessThan 84 18 BranchConditional 86 80 81 80: Label 87: 76(ptr) AccessChain 73(bits) 14 88: 13(int) Load 87 89: 13(int) Load 78(i) 90: 13(int) ShiftLeftLogical 88 89 91: 13(int) BitwiseAnd 90 28 92: 76(ptr) AccessChain 73(bits) 28 93: 13(int) Load 92 94: 13(int) Load 78(i) 95: 13(int) ShiftLeftLogical 93 94 96: 13(int) BitwiseAnd 95 28 97: 13(int) IAdd 91 96 98: 13(int) Load 77(numBits) 99: 13(int) IAdd 98 97 Store 77(numBits) 99 Branch 82 82: Label 100: 13(int) Load 78(i) 101: 13(int) IAdd 100 31 Store 78(i) 101 Branch 79 81: Label 102: 13(int) Load 77(numBits) 103: 13(int) BitwiseAnd 102 28 104: 6(float) ConvertUToF 103 106: 6(float) FMul 104 105 107: 7(fvec2) Load 9(pos) 108: 7(fvec2) CompositeConstruct 106 106 109: 7(fvec2) FAdd 107 108 Store 9(pos) 109 113: 7(fvec2) Load 9(pos) 115: 6(float) CompositeExtract 113 0 116: 6(float) CompositeExtract 113 1 117: 60(fvec4) CompositeConstruct 115 116 114 66 118: 61(ptr) AccessChain 112 23 Store 118 117 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.precision.frag.out000066400000000000000000000371651506534232700227340ustar00rootroot00000000000000spv.precision.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 165 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 23 62 64 76 119 149 ExecutionMode 4 OriginUpperLeft Source ESSL 310 SourceExtension "GL_OES_sample_variables" Name 4 "main" Name 12 "foo(vf3;" Name 11 "mv3" Name 19 "boolfun(vb2;" Name 18 "bv2" Name 23 "highfin" Name 41 "sum" Name 43 "uniform_medium" Name 45 "uniform_high" Name 51 "uniform_low" Name 56 "arg1" Name 58 "arg2" Name 60 "d" Name 62 "lowfin" Name 64 "mediumfin" Name 68 "global_highp" Name 72 "local_highp" Name 76 "mediumfout" Name 107 "ub2" Name 108 "param" Name 117 "S" MemberName 117(S) 0 "a" MemberName 117(S) 1 "b" Name 119 "s" Name 149 "gl_SampleMaskIn" Decorate 11(mv3) RelaxedPrecision Decorate 12(foo(vf3;) RelaxedPrecision Decorate 23(highfin) Location 2 Decorate 27 RelaxedPrecision Decorate 28 RelaxedPrecision Decorate 41(sum) RelaxedPrecision Decorate 43(uniform_medium) RelaxedPrecision Decorate 44 RelaxedPrecision Decorate 49 RelaxedPrecision Decorate 51(uniform_low) RelaxedPrecision Decorate 52 RelaxedPrecision Decorate 53 RelaxedPrecision Decorate 54 RelaxedPrecision Decorate 56(arg1) RelaxedPrecision Decorate 58(arg2) RelaxedPrecision Decorate 60(d) RelaxedPrecision Decorate 62(lowfin) RelaxedPrecision Decorate 62(lowfin) Location 0 Decorate 63 RelaxedPrecision Decorate 64(mediumfin) RelaxedPrecision Decorate 64(mediumfin) Location 1 Decorate 65 RelaxedPrecision Decorate 66 RelaxedPrecision Decorate 76(mediumfout) RelaxedPrecision Decorate 76(mediumfout) Location 0 Decorate 77 RelaxedPrecision Decorate 78 RelaxedPrecision Decorate 79 RelaxedPrecision Decorate 80 RelaxedPrecision Decorate 81 RelaxedPrecision Decorate 82 RelaxedPrecision Decorate 86 RelaxedPrecision Decorate 88 RelaxedPrecision Decorate 90 RelaxedPrecision Decorate 91 RelaxedPrecision Decorate 93 RelaxedPrecision Decorate 94 RelaxedPrecision Decorate 97 RelaxedPrecision Decorate 98 RelaxedPrecision Decorate 99 RelaxedPrecision Decorate 100 RelaxedPrecision Decorate 101 RelaxedPrecision Decorate 102 RelaxedPrecision Decorate 103 RelaxedPrecision Decorate 104 RelaxedPrecision Decorate 105 RelaxedPrecision Decorate 113 RelaxedPrecision Decorate 115 RelaxedPrecision Decorate 116 RelaxedPrecision MemberDecorate 117(S) 1 RelaxedPrecision Decorate 119(s) Location 3 Decorate 123 RelaxedPrecision Decorate 127 RelaxedPrecision Decorate 128 RelaxedPrecision Decorate 129 RelaxedPrecision Decorate 130 RelaxedPrecision Decorate 131 RelaxedPrecision Decorate 132 RelaxedPrecision Decorate 135 RelaxedPrecision Decorate 139 RelaxedPrecision Decorate 140 RelaxedPrecision Decorate 143 RelaxedPrecision Decorate 144 RelaxedPrecision Decorate 145 RelaxedPrecision Decorate 149(gl_SampleMaskIn) BuiltIn SampleMask Decorate 149(gl_SampleMaskIn) Flat Decorate 153 RelaxedPrecision Decorate 156 RelaxedPrecision Decorate 159 RelaxedPrecision Decorate 160 RelaxedPrecision Decorate 162 RelaxedPrecision Decorate 163 RelaxedPrecision Decorate 164 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) 9: TypeVector 6(float) 2 10: TypeFunction 9(fvec2) 8(ptr) 14: TypeBool 15: TypeVector 14(bool) 2 16: TypePointer Function 15(bvec2) 17: TypeFunction 14(bool) 16(ptr) 21: TypeVector 6(float) 4 22: TypePointer Input 21(fvec4) 23(highfin): 22(ptr) Variable Input 26: TypePointer Function 9(fvec2) 32: 14(bool) ConstantFalse 33: 14(bool) ConstantTrue 34: 15(bvec2) ConstantComposite 32 33 39: TypeInt 32 1 40: TypePointer Function 39(int) 42: TypePointer Private 39(int) 43(uniform_medium): 42(ptr) Variable Private 45(uniform_high): 42(ptr) Variable Private 51(uniform_low): 42(ptr) Variable Private 55: TypePointer Function 6(float) 57: 6(float) Constant 1078774989 59: 6(float) Constant 1232730691 61: TypePointer Input 6(float) 62(lowfin): 61(ptr) Variable Input 64(mediumfin): 61(ptr) Variable Input 67: TypePointer Private 6(float) 68(global_highp): 67(ptr) Variable Private 71: TypePointer Function 21(fvec4) 75: TypePointer Output 21(fvec4) 76(mediumfout): 75(ptr) Variable Output 85: 39(int) Constant 4 87: TypeVector 39(int) 2 95: TypeInt 32 0 96: 95(int) Constant 0 106: TypePointer Private 15(bvec2) 107(ub2): 106(ptr) Variable Private 114: 6(float) Constant 1065353216 117(S): TypeStruct 6(float) 6(float) 118: TypePointer Input 117(S) 119(s): 118(ptr) Variable Input 120: 39(int) Constant 0 125: 39(int) Constant 1 133: 6(float) Constant 1082549862 138: 6(float) Constant 1073741824 142: 6(float) Constant 1077936128 146: 95(int) Constant 1 147: TypeArray 39(int) 146 148: TypePointer Input 147 149(gl_SampleMaskIn): 148(ptr) Variable Input 150: TypePointer Input 39(int) 4(main): 2 Function None 3 5: Label 41(sum): 40(ptr) Variable Function 56(arg1): 55(ptr) Variable Function 58(arg2): 55(ptr) Variable Function 60(d): 55(ptr) Variable Function 72(local_highp): 71(ptr) Variable Function 108(param): 16(ptr) Variable Function 135: 71(ptr) Variable Function 156: 71(ptr) Variable Function 44: 39(int) Load 43(uniform_medium) 46: 39(int) Load 45(uniform_high) 47: 39(int) IAdd 44 46 Store 41(sum) 47 48: 39(int) Load 45(uniform_high) 49: 39(int) Load 41(sum) 50: 39(int) IAdd 49 48 Store 41(sum) 50 52: 39(int) Load 51(uniform_low) 53: 39(int) Load 41(sum) 54: 39(int) IAdd 53 52 Store 41(sum) 54 Store 56(arg1) 57 Store 58(arg2) 59 63: 6(float) Load 62(lowfin) 65: 6(float) Load 64(mediumfin) 66: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 63 65 Store 60(d) 66 69: 21(fvec4) Load 23(highfin) 70: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 69 Store 68(global_highp) 70 73: 6(float) Load 68(global_highp) 74: 21(fvec4) CompositeConstruct 73 73 73 73 Store 72(local_highp) 74 77: 6(float) Load 60(d) 78: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 77 79: 21(fvec4) CompositeConstruct 78 78 78 78 80: 6(float) Load 58(arg2) 81: 21(fvec4) CompositeConstruct 80 80 80 80 82: 21(fvec4) FAdd 79 81 83: 21(fvec4) Load 72(local_highp) 84: 21(fvec4) FAdd 82 83 Store 76(mediumfout) 84 86: 39(int) Load 51(uniform_low) 88: 87(ivec2) CompositeConstruct 86 86 89: 39(int) Load 45(uniform_high) 90: 87(ivec2) CompositeConstruct 89 89 91: 87(ivec2) IMul 88 90 92: 39(int) Load 45(uniform_high) 93: 87(ivec2) CompositeConstruct 92 92 94: 87(ivec2) IAdd 91 93 97: 39(int) CompositeExtract 94 0 98: 39(int) IAdd 85 97 99: 39(int) Load 41(sum) 100: 39(int) IAdd 99 98 Store 41(sum) 100 101: 39(int) Load 41(sum) 102: 6(float) ConvertSToF 101 103: 21(fvec4) CompositeConstruct 102 102 102 102 104: 21(fvec4) Load 76(mediumfout) 105: 21(fvec4) FAdd 104 103 Store 76(mediumfout) 105 109: 15(bvec2) Load 107(ub2) Store 108(param) 109 110: 14(bool) FunctionCall 19(boolfun(vb2;) 108(param) SelectionMerge 112 None BranchConditional 110 111 112 111: Label 113: 21(fvec4) Load 76(mediumfout) 115: 21(fvec4) CompositeConstruct 114 114 114 114 116: 21(fvec4) FAdd 113 115 Store 76(mediumfout) 116 Branch 112 112: Label 121: 61(ptr) AccessChain 119(s) 120 122: 6(float) Load 121 123: 21(fvec4) Load 76(mediumfout) 124: 21(fvec4) VectorTimesScalar 123 122 Store 76(mediumfout) 124 126: 61(ptr) AccessChain 119(s) 125 127: 6(float) Load 126 128: 21(fvec4) Load 76(mediumfout) 129: 21(fvec4) VectorTimesScalar 128 127 Store 76(mediumfout) 129 130: 6(float) Load 64(mediumfin) 131: 6(float) Load 64(mediumfin) 132: 6(float) FMul 130 131 134: 14(bool) FOrdGreaterThan 132 133 SelectionMerge 137 None BranchConditional 134 136 141 136: Label 139: 21(fvec4) Load 76(mediumfout) 140: 21(fvec4) VectorTimesScalar 139 138 Store 135 140 Branch 137 141: Label 143: 21(fvec4) Load 76(mediumfout) 144: 21(fvec4) VectorTimesScalar 143 142 Store 135 144 Branch 137 137: Label 145: 21(fvec4) Load 135 Store 76(mediumfout) 145 151: 150(ptr) AccessChain 149(gl_SampleMaskIn) 120 152: 39(int) Load 151 153: 39(int) Load 43(uniform_medium) 154: 39(int) ShiftRightArithmetic 152 153 155: 14(bool) SGreaterThan 154 120 SelectionMerge 158 None BranchConditional 155 157 161 157: Label 159: 21(fvec4) Load 76(mediumfout) 160: 21(fvec4) VectorTimesScalar 159 138 Store 156 160 Branch 158 161: Label 162: 21(fvec4) Load 76(mediumfout) 163: 21(fvec4) VectorTimesScalar 162 142 Store 156 163 Branch 158 158: Label 164: 21(fvec4) Load 156 Store 76(mediumfout) 164 Return FunctionEnd 12(foo(vf3;): 9(fvec2) Function None 10 11(mv3): 8(ptr) FunctionParameter 13: Label 27: 26(ptr) Variable Function 24: 21(fvec4) Load 23(highfin) 25: 9(fvec2) VectorShuffle 24 24 0 1 Store 27 25 28: 9(fvec2) Load 27 ReturnValue 28 FunctionEnd 19(boolfun(vb2;): 14(bool) Function None 17 18(bv2): 16(ptr) FunctionParameter 20: Label 31: 15(bvec2) Load 18(bv2) 35: 15(bvec2) LogicalEqual 31 34 36: 14(bool) All 35 ReturnValue 36 FunctionEnd glslang-16.0.0/Test/baseResults/spv.precisionArgs.frag.out000066400000000000000000000175511506534232700235460ustar00rootroot00000000000000spv.precisionArgs.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 83 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 10 "fooConst(f1;f1;" Name 8 "f" Name 9 "g" Name 16 "foo(f1;f1;" Name 14 "f" Name 15 "g" Name 20 "retM(f1;" Name 19 "x" Name 23 "retH(f1;" Name 22 "x" Name 26 "retHM(f1;" Name 25 "x" Name 29 "retMH(f1;" Name 28 "x" Name 47 "aM" Name 49 "bM" Name 51 "arg" Name 54 "aH" Name 56 "bH" Name 58 "arg" Name 61 "param" Name 63 "param" Name 66 "param" Name 68 "param" Name 71 "param" Name 74 "param" Name 77 "param" Name 80 "param" Decorate 8(f) RelaxedPrecision Decorate 14(f) RelaxedPrecision Decorate 19(x) RelaxedPrecision Decorate 20(retM(f1;) RelaxedPrecision Decorate 26(retHM(f1;) RelaxedPrecision Decorate 28(x) RelaxedPrecision Decorate 31 RelaxedPrecision Decorate 38 RelaxedPrecision Decorate 39 RelaxedPrecision Decorate 42 RelaxedPrecision Decorate 47(aM) RelaxedPrecision Decorate 48 RelaxedPrecision Decorate 49(bM) RelaxedPrecision Decorate 50 RelaxedPrecision Decorate 58(arg) RelaxedPrecision Decorate 59 RelaxedPrecision Decorate 61(param) RelaxedPrecision Decorate 62 RelaxedPrecision Decorate 64 RelaxedPrecision Decorate 66(param) RelaxedPrecision Decorate 71(param) RelaxedPrecision Decorate 72 RelaxedPrecision Decorate 73 RelaxedPrecision Decorate 79 RelaxedPrecision Decorate 80(param) RelaxedPrecision Decorate 81 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 2 6(float) 6(float) 12: TypePointer Function 6(float) 13: TypeFunction 2 12(ptr) 12(ptr) 18: TypeFunction 6(float) 12(ptr) 4(main): 2 Function None 3 5: Label 47(aM): 12(ptr) Variable Function 49(bM): 12(ptr) Variable Function 51(arg): 12(ptr) Variable Function 54(aH): 12(ptr) Variable Function 56(bH): 12(ptr) Variable Function 58(arg): 12(ptr) Variable Function 61(param): 12(ptr) Variable Function 63(param): 12(ptr) Variable Function 66(param): 12(ptr) Variable Function 68(param): 12(ptr) Variable Function 71(param): 12(ptr) Variable Function 74(param): 12(ptr) Variable Function 77(param): 12(ptr) Variable Function 80(param): 12(ptr) Variable Function 48: 6(float) Load 47(aM) 50: 6(float) Load 49(bM) Store 51(arg) 50 52: 6(float) Load 51(arg) 53: 2 FunctionCall 10(fooConst(f1;f1;) 48 52 55: 6(float) Load 54(aH) 57: 6(float) Load 56(bH) Store 58(arg) 55 59: 6(float) Load 58(arg) 60: 2 FunctionCall 10(fooConst(f1;f1;) 59 57 62: 6(float) Load 47(aM) Store 61(param) 62 64: 6(float) Load 49(bM) Store 63(param) 64 65: 2 FunctionCall 16(foo(f1;f1;) 61(param) 63(param) 67: 6(float) Load 54(aH) Store 66(param) 67 69: 6(float) Load 56(bH) Store 68(param) 69 70: 2 FunctionCall 16(foo(f1;f1;) 66(param) 68(param) 72: 6(float) Load 47(aM) Store 71(param) 72 73: 6(float) FunctionCall 20(retM(f1;) 71(param) 75: 6(float) Load 54(aH) Store 74(param) 75 76: 6(float) FunctionCall 23(retH(f1;) 74(param) 78: 6(float) Load 54(aH) Store 77(param) 78 79: 6(float) FunctionCall 26(retHM(f1;) 77(param) 81: 6(float) Load 47(aM) Store 80(param) 81 82: 6(float) FunctionCall 29(retMH(f1;) 80(param) Return FunctionEnd 10(fooConst(f1;f1;): 2 Function None 7 8(f): 6(float) FunctionParameter 9(g): 6(float) FunctionParameter 11: Label Return FunctionEnd 16(foo(f1;f1;): 2 Function None 13 14(f): 12(ptr) FunctionParameter 15(g): 12(ptr) FunctionParameter 17: Label Return FunctionEnd 20(retM(f1;): 6(float) Function None 18 19(x): 12(ptr) FunctionParameter 21: Label 31: 6(float) Load 19(x) ReturnValue 31 FunctionEnd 23(retH(f1;): 6(float) Function None 18 22(x): 12(ptr) FunctionParameter 24: Label 34: 6(float) Load 22(x) ReturnValue 34 FunctionEnd 26(retHM(f1;): 6(float) Function None 18 25(x): 12(ptr) FunctionParameter 27: Label 38: 12(ptr) Variable Function 37: 6(float) Load 25(x) Store 38 37 39: 6(float) Load 38 ReturnValue 39 FunctionEnd 29(retMH(f1;): 6(float) Function None 18 28(x): 12(ptr) FunctionParameter 30: Label 43: 12(ptr) Variable Function 42: 6(float) Load 28(x) Store 43 42 44: 6(float) Load 43 ReturnValue 44 FunctionEnd glslang-16.0.0/Test/baseResults/spv.precisionNonESSamp.frag.out000066400000000000000000000122051506534232700244440ustar00rootroot00000000000000spv.precisionNonESSamp.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 47 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 17 27 39 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "color" Name 13 "s" Name 17 "v2" Name 23 "t" Name 27 "v3" Name 31 "vi1" Name 34 "i1" Name 39 "iv2" Name 42 "vi2" Name 43 "i2" Decorate 9(color) RelaxedPrecision Decorate 9(color) Location 0 Decorate 13(s) RelaxedPrecision Decorate 13(s) Binding 0 Decorate 13(s) DescriptorSet 0 Decorate 14 RelaxedPrecision Decorate 17(v2) RelaxedPrecision Decorate 17(v2) Location 0 Decorate 18 RelaxedPrecision Decorate 19 RelaxedPrecision Decorate 23(t) Binding 1 Decorate 23(t) DescriptorSet 0 Decorate 27(v3) RelaxedPrecision Decorate 27(v3) Location 1 Decorate 28 RelaxedPrecision Decorate 31(vi1) RelaxedPrecision Decorate 34(i1) RelaxedPrecision Decorate 34(i1) Binding 2 Decorate 34(i1) DescriptorSet 0 Decorate 35 RelaxedPrecision Decorate 39(iv2) RelaxedPrecision Decorate 39(iv2) Flat Decorate 39(iv2) Location 3 Decorate 40 RelaxedPrecision Decorate 41 RelaxedPrecision Decorate 42(vi2) RelaxedPrecision Decorate 43(i2) Binding 3 Decorate 43(i2) DescriptorSet 0 Decorate 45 RelaxedPrecision 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: TypeImage 6(float) 2D sampled format:Unknown 11: TypeSampledImage 10 12: TypePointer UniformConstant 11 13(s): 12(ptr) Variable UniformConstant 15: TypeVector 6(float) 2 16: TypePointer Input 15(fvec2) 17(v2): 16(ptr) Variable Input 20: TypeImage 6(float) 3D sampled format:Unknown 21: TypeSampledImage 20 22: TypePointer UniformConstant 21 23(t): 22(ptr) Variable UniformConstant 25: TypeVector 6(float) 3 26: TypePointer Input 25(fvec3) 27(v3): 26(ptr) Variable Input 30: TypePointer Function 7(fvec4) 32: TypeImage 6(float) 2D nonsampled format:Rgba32f 33: TypePointer UniformConstant 32 34(i1): 33(ptr) Variable UniformConstant 36: TypeInt 32 1 37: TypeVector 36(int) 2 38: TypePointer Input 37(ivec2) 39(iv2): 38(ptr) Variable Input 43(i2): 33(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 31(vi1): 30(ptr) Variable Function 42(vi2): 30(ptr) Variable Function 14: 11 Load 13(s) 18: 15(fvec2) Load 17(v2) 19: 7(fvec4) ImageSampleImplicitLod 14 18 Store 9(color) 19 24: 21 Load 23(t) 28: 25(fvec3) Load 27(v3) 29: 7(fvec4) ImageSampleImplicitLod 24 28 Store 9(color) 29 35: 32 Load 34(i1) 40: 37(ivec2) Load 39(iv2) 41: 7(fvec4) ImageRead 35 40 Store 31(vi1) 41 44: 32 Load 43(i2) 45: 37(ivec2) Load 39(iv2) 46: 7(fvec4) ImageRead 44 45 Store 42(vi2) 46 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.precisionTexture.frag.out000066400000000000000000000140321506534232700243010ustar00rootroot00000000000000spv.precisionTexture.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 16 57 65 ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 9 "v" Name 13 "texM" Name 16 "vertex" Name 21 "texH" Name 52 "imageM" Name 57 "coord" Name 60 "imageH" Name 65 "fragColor" Decorate 9(v) RelaxedPrecision Decorate 13(texM) RelaxedPrecision Decorate 13(texM) Binding 0 Decorate 13(texM) DescriptorSet 0 Decorate 14 RelaxedPrecision Decorate 16(vertex) Location 0 Decorate 20 RelaxedPrecision Decorate 21(texH) Binding 1 Decorate 21(texH) DescriptorSet 0 Decorate 26 RelaxedPrecision Decorate 34 RelaxedPrecision Decorate 41 RelaxedPrecision Decorate 45 RelaxedPrecision Decorate 52(imageM) RelaxedPrecision Decorate 52(imageM) NonWritable Decorate 52(imageM) Binding 0 Decorate 52(imageM) DescriptorSet 0 Decorate 53 RelaxedPrecision Decorate 57(coord) Flat Decorate 57(coord) Location 1 Decorate 59 RelaxedPrecision Decorate 60(imageH) NonWritable Decorate 60(imageH) Binding 1 Decorate 60(imageH) DescriptorSet 0 Decorate 65(fragColor) RelaxedPrecision Decorate 65(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(texM): 12(ptr) Variable UniformConstant 15: TypePointer Input 7(fvec4) 16(vertex): 15(ptr) Variable Input 17: TypeVector 6(float) 2 21(texH): 12(ptr) Variable UniformConstant 29: TypeInt 32 0 30: 29(int) Constant 2 31: TypePointer Input 6(float) 42: TypeVector 6(float) 3 50: TypeImage 6(float) 2D nonsampled format:Rgba32f 51: TypePointer UniformConstant 50 52(imageM): 51(ptr) Variable UniformConstant 54: TypeInt 32 1 55: TypeVector 54(int) 2 56: TypePointer Input 55(ivec2) 57(coord): 56(ptr) Variable Input 60(imageH): 51(ptr) Variable UniformConstant 64: TypePointer Output 7(fvec4) 65(fragColor): 64(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function 14: 11 Load 13(texM) 18: 7(fvec4) Load 16(vertex) 19: 17(fvec2) VectorShuffle 18 18 0 1 20: 7(fvec4) ImageSampleImplicitLod 14 19 Store 9(v) 20 22: 11 Load 21(texH) 23: 7(fvec4) Load 16(vertex) 24: 17(fvec2) VectorShuffle 23 23 0 1 25: 7(fvec4) ImageSampleImplicitLod 22 24 Store 9(v) 25 26: 11 Load 13(texM) 27: 7(fvec4) Load 16(vertex) 28: 17(fvec2) VectorShuffle 27 27 0 1 32: 31(ptr) AccessChain 16(vertex) 30 33: 6(float) Load 32 34: 7(fvec4) ImageSampleExplicitLod 26 28 Lod 33 Store 9(v) 34 35: 11 Load 21(texH) 36: 7(fvec4) Load 16(vertex) 37: 17(fvec2) VectorShuffle 36 36 0 1 38: 31(ptr) AccessChain 16(vertex) 30 39: 6(float) Load 38 40: 7(fvec4) ImageSampleExplicitLod 35 37 Lod 39 Store 9(v) 40 41: 11 Load 13(texM) 43: 7(fvec4) Load 16(vertex) 44: 42(fvec3) VectorShuffle 43 43 0 1 2 45: 7(fvec4) ImageSampleProjImplicitLod 41 44 Store 9(v) 45 46: 11 Load 21(texH) 47: 7(fvec4) Load 16(vertex) 48: 42(fvec3) VectorShuffle 47 47 0 1 2 49: 7(fvec4) ImageSampleProjImplicitLod 46 48 Store 9(v) 49 53: 50 Load 52(imageM) 58: 55(ivec2) Load 57(coord) 59: 7(fvec4) ImageRead 53 58 Store 9(v) 59 61: 50 Load 60(imageH) 62: 55(ivec2) Load 57(coord) 63: 7(fvec4) ImageRead 61 62 Store 9(v) 63 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.prepost.frag.out000066400000000000000000000145141506534232700224260ustar00rootroot00000000000000spv.prepost.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 94 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 90 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 8 "index" Name 14 "s" MemberName 14(s) 0 "y" Name 16 "str" Name 22 "t" Name 50 "x" Name 61 "y" Name 66 "z" Name 73 "v" Name 90 "gl_FragColor" Decorate 90(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 5 10: TypeFloat 32 11: TypeInt 32 0 12: 11(int) Constant 5 13: TypeArray 10(float) 12 14(s): TypeStruct 13 15: TypePointer Function 14(s) 17: 6(int) Constant 0 18: 6(int) Constant 4 19: 10(float) Constant 1073741824 20: TypePointer Function 10(float) 24: 6(int) Constant 1 28: 10(float) Constant 1065353216 71: TypeVector 10(float) 4 72: TypePointer Function 71(fvec4) 74: 10(float) Constant 1077936128 75: 10(float) Constant 1082130432 76: 71(fvec4) ConstantComposite 28 19 74 75 77: 11(int) Constant 2 81: 11(int) Constant 1 83: 11(int) Constant 3 87: 11(int) Constant 0 89: TypePointer Output 71(fvec4) 90(gl_FragColor): 89(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(index): 7(ptr) Variable Function 16(str): 15(ptr) Variable Function 22(t): 20(ptr) Variable Function 50(x): 20(ptr) Variable Function 61(y): 20(ptr) Variable Function 66(z): 20(ptr) Variable Function 73(v): 72(ptr) Variable Function Store 8(index) 9 21: 20(ptr) AccessChain 16(str) 17 18 Store 21 19 23: 6(int) Load 8(index) 25: 6(int) ISub 23 24 Store 8(index) 25 26: 20(ptr) AccessChain 16(str) 17 25 27: 10(float) Load 26 29: 10(float) FAdd 27 28 Store 26 29 Store 22(t) 29 30: 10(float) Load 22(t) 31: 20(ptr) AccessChain 16(str) 17 18 32: 10(float) Load 31 33: 10(float) FAdd 32 30 34: 20(ptr) AccessChain 16(str) 17 18 Store 34 33 35: 20(ptr) AccessChain 16(str) 17 18 36: 10(float) Load 35 37: 10(float) FSub 36 28 Store 35 37 Store 22(t) 36 38: 6(int) Load 8(index) 39: 6(int) IAdd 38 24 Store 8(index) 39 40: 10(float) Load 22(t) 41: 20(ptr) AccessChain 16(str) 17 38 42: 10(float) Load 41 43: 10(float) FAdd 42 40 44: 20(ptr) AccessChain 16(str) 17 38 Store 44 43 45: 6(int) Load 8(index) 46: 6(int) ISub 45 24 Store 8(index) 46 47: 20(ptr) AccessChain 16(str) 17 46 48: 10(float) Load 47 49: 10(float) FSub 48 28 Store 47 49 51: 20(ptr) AccessChain 16(str) 17 18 52: 10(float) Load 51 Store 50(x) 52 53: 10(float) Load 50(x) 54: 10(float) FAdd 53 28 Store 50(x) 54 55: 10(float) Load 50(x) 56: 10(float) FSub 55 28 Store 50(x) 56 57: 10(float) Load 50(x) 58: 10(float) FAdd 57 28 Store 50(x) 58 59: 10(float) Load 50(x) 60: 10(float) FSub 59 28 Store 50(x) 60 62: 10(float) Load 50(x) 63: 10(float) Load 50(x) 64: 10(float) FAdd 63 28 Store 50(x) 64 65: 10(float) FMul 62 64 Store 61(y) 65 67: 10(float) Load 61(y) 68: 10(float) Load 50(x) 69: 10(float) FSub 68 28 Store 50(x) 69 70: 10(float) FMul 67 68 Store 66(z) 70 Store 73(v) 76 78: 20(ptr) AccessChain 73(v) 77 79: 10(float) Load 78 80: 10(float) FSub 79 28 Store 78 80 82: 20(ptr) AccessChain 73(v) 81 Store 82 79 84: 20(ptr) AccessChain 73(v) 83 85: 10(float) Load 84 86: 10(float) FSub 85 28 Store 84 86 88: 20(ptr) AccessChain 73(v) 87 Store 88 86 91: 10(float) Load 66(z) 92: 71(fvec4) Load 73(v) 93: 71(fvec4) VectorTimesScalar 92 91 Store 90(gl_FragColor) 93 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.privateVariableTypes.frag.out000066400000000000000000000051731506534232700251000ustar00rootroot00000000000000spv.privateVariableTypes.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 8 "i8" Name 11 "u8" Name 14 "i16" Name 17 "u16" Name 20 "i64" Name 23 "u64" Name 26 "f16" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 7: TypePointer Private 6(int8_t) 8(i8): 7(ptr) Variable Private 9: TypeInt 8 0 10: TypePointer Private 9(int8_t) 11(u8): 10(ptr) Variable Private 12: TypeInt 16 1 13: TypePointer Private 12(int16_t) 14(i16): 13(ptr) Variable Private 15: TypeInt 16 0 16: TypePointer Private 15(int16_t) 17(u16): 16(ptr) Variable Private 18: TypeInt 64 1 19: TypePointer Private 18(int64_t) 20(i64): 19(ptr) Variable Private 21: TypeInt 64 0 22: TypePointer Private 21(int64_t) 23(u64): 22(ptr) Variable Private 24: TypeFloat 16 25: TypePointer Private 24(float16_t) 26(f16): 25(ptr) Variable Private 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.pushConstant.vert.out000066400000000000000000000056021506534232700234620ustar00rootroot00000000000000spv.pushConstant.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 24 Source GLSL 400 Name 4 "main" Name 11 "Material" MemberName 11(Material) 0 "kind" MemberName 11(Material) 1 "fa" Name 13 "matInst" Name 24 "color" Decorate 10 ArrayStride 4 Decorate 11(Material) Block MemberDecorate 11(Material) 0 Offset 0 MemberDecorate 11(Material) 1 Offset 4 Decorate 24(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFloat 32 8: TypeInt 32 0 9: 8(int) Constant 3 10: TypeArray 7(float) 9 11(Material): TypeStruct 6(int) 10 12: TypePointer PushConstant 11(Material) 13(matInst): 12(ptr) Variable PushConstant 14: 6(int) Constant 0 15: TypePointer PushConstant 6(int) 22: TypeVector 7(float) 4 23: TypePointer Output 22(fvec4) 24(color): 23(ptr) Variable Output 25: 7(float) Constant 1045220557 26: 22(fvec4) ConstantComposite 25 25 25 25 28: 7(float) Constant 1056964608 29: 22(fvec4) ConstantComposite 28 28 28 28 31: 7(float) Constant 0 32: 22(fvec4) ConstantComposite 31 31 31 31 4(main): 2 Function None 3 5: Label 16: 15(ptr) AccessChain 13(matInst) 14 17: 6(int) Load 16 SelectionMerge 21 None Switch 17 20 case 1: 18 case 2: 19 20: Label Store 24(color) 32 Branch 21 18: Label Store 24(color) 26 Branch 21 19: Label Store 24(color) 29 Branch 21 21: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.pushConstantAnon.vert.out000066400000000000000000000060261506534232700242770ustar00rootroot00000000000000spv.pushConstantAnon.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 24 Source GLSL 400 Name 4 "main" Name 11 "Material" MemberName 11(Material) 0 "kind" MemberName 11(Material) 1 "fa" Name 13 "" Name 24 "color" Decorate 10 ArrayStride 4 Decorate 11(Material) Block MemberDecorate 11(Material) 0 Offset 0 MemberDecorate 11(Material) 1 Offset 4 Decorate 24(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFloat 32 8: TypeInt 32 0 9: 8(int) Constant 3 10: TypeArray 7(float) 9 11(Material): TypeStruct 6(int) 10 12: TypePointer PushConstant 11(Material) 13: 12(ptr) Variable PushConstant 14: 6(int) Constant 0 15: TypePointer PushConstant 6(int) 22: TypeVector 7(float) 4 23: TypePointer Output 22(fvec4) 24(color): 23(ptr) Variable Output 25: 7(float) Constant 1045220557 26: 22(fvec4) ConstantComposite 25 25 25 25 28: 7(float) Constant 1056964608 29: 22(fvec4) ConstantComposite 28 28 28 28 31: 6(int) Constant 1 32: TypePointer PushConstant 7(float) 4(main): 2 Function None 3 5: Label 16: 15(ptr) AccessChain 13 14 17: 6(int) Load 16 SelectionMerge 21 None Switch 17 20 case 1: 18 case 2: 19 20: Label 33: 32(ptr) AccessChain 13 31 31 34: 7(float) Load 33 35: 22(fvec4) CompositeConstruct 34 34 34 34 Store 24(color) 35 Branch 21 18: Label Store 24(color) 26 Branch 21 19: Label Store 24(color) 29 Branch 21 21: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.coopmatConversion.1.comp.out000066400000000000000000000614511506534232700255600ustar00rootroot00000000000000spv.qcom.coopmatConversion.1.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 279 Capability Shader Capability Float16 Capability Int8 Capability CooperativeMatrixConversionQCOM Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_QCOM_cooperative_matrix_conversion" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 2 2 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_control_flow_attributes" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_QCOM_cooperative_matrix_conversion" Name 4 "main" Name 10 "uvec8A" Name 15 "hvec8A" Name 23 "vec8A" Name 27 "ivec8A" Name 35 "ivec32B" Name 39 "hvec32B" Name 46 "vec32B" Name 49 "uvec32B" Name 56 "ivec64Acc" Name 59 "uvec64Acc" Name 66 "vec64Acc" Name 89 "hvec8A_4" Name 95 "matA_f32_64_8" Name 102 "matA_f16_64_16" Name 110 "matA_i8_64_32" Name 113 "i8vec8A" Name 121 "matA_u8_64_32" Name 124 "u8vec8A" Name 132 "matB_f32_8_64" Name 139 "matB_f16_16_64" Name 146 "matB_i8_32_64" Name 147 "i8vec8B" Name 154 "matB_u8_32_64" Name 155 "u8vec8B" Name 162 "matB_f16_16_32" Name 169 "matB_i8_32_16" Name 177 "matAcc_f32_64_64" Name 184 "matAcc_f16_64_64" Name 185 "hvec64Acc" Name 192 "matAcc_i32_64_64" Name 199 "matAcc_u32_64_64" Name 210 "i8vec8A" Name 215 "u8vec8A" Name 228 "i8vec8B" Name 233 "u8vec8B" Name 250 "hvec64Acc" Name 262 "InputA" MemberName 262(InputA) 0 "x" Name 264 "inputA" Name 266 "InputB" MemberName 266(InputB) 0 "x" Name 268 "inputB" Name 270 "InputC" MemberName 270(InputC) 0 "x" Name 272 "inputC" Name 274 "Output" MemberName 274(Output) 0 "x" Name 276 "outputO" Decorate 261 ArrayStride 4 Decorate 262(InputA) Block MemberDecorate 262(InputA) 0 NonWritable MemberDecorate 262(InputA) 0 Offset 0 Decorate 264(inputA) NonWritable Decorate 264(inputA) Binding 0 Decorate 264(inputA) DescriptorSet 0 Decorate 265 ArrayStride 4 Decorate 266(InputB) Block MemberDecorate 266(InputB) 0 NonWritable MemberDecorate 266(InputB) 0 Offset 0 Decorate 268(inputB) NonWritable Decorate 268(inputB) Binding 1 Decorate 268(inputB) DescriptorSet 0 Decorate 269 ArrayStride 4 Decorate 270(InputC) Block MemberDecorate 270(InputC) 0 NonWritable MemberDecorate 270(InputC) 0 Offset 0 Decorate 272(inputC) NonWritable Decorate 272(inputC) Binding 2 Decorate 272(inputC) DescriptorSet 0 Decorate 273 ArrayStride 4 Decorate 274(Output) Block MemberDecorate 274(Output) 0 Offset 0 Decorate 276(outputO) Binding 3 Decorate 276(outputO) DescriptorSet 0 Decorate 278 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 8 8: TypeArray 6(int) 7 9: TypePointer Function 8 11: TypeFloat 16 12: 6(int) Constant 16 13: TypeArray 11(float16_t) 12 14: TypePointer Function 13 20: TypeFloat 32 21: TypeArray 20(float) 7 22: TypePointer Function 21 24: TypeInt 32 1 25: TypeArray 24(int) 7 26: TypePointer Function 25 32: 6(int) Constant 32 33: TypeArray 24(int) 32 34: TypePointer Function 33 36: 6(int) Constant 64 37: TypeArray 11(float16_t) 36 38: TypePointer Function 37 44: TypeArray 20(float) 32 45: TypePointer Function 44 47: TypeArray 6(int) 32 48: TypePointer Function 47 54: TypeArray 24(int) 36 55: TypePointer Function 54 57: TypeArray 6(int) 36 58: TypePointer Function 57 64: TypeArray 20(float) 36 65: TypePointer Function 64 72: 6(int) Constant 0 83: 6(int) Constant 4 87: TypeArray 11(float16_t) 83 88: TypePointer Function 87 92: 6(int) Constant 3 93: TypeCooperativeMatrixKHR 20(float) 92 36 7 72 94: TypePointer Function 93 100: TypeCooperativeMatrixKHR 11(float16_t) 92 36 12 72 101: TypePointer Function 100 107: TypeInt 8 1 108: TypeCooperativeMatrixKHR 107(int8_t) 92 36 32 72 109: TypePointer Function 108 111: TypeArray 107(int8_t) 32 112: TypePointer Function 111 118: TypeInt 8 0 119: TypeCooperativeMatrixKHR 118(int8_t) 92 36 32 72 120: TypePointer Function 119 122: TypeArray 118(int8_t) 32 123: TypePointer Function 122 129: 6(int) Constant 1 130: TypeCooperativeMatrixKHR 20(float) 92 7 36 129 131: TypePointer Function 130 137: TypeCooperativeMatrixKHR 11(float16_t) 92 12 36 129 138: TypePointer Function 137 144: TypeCooperativeMatrixKHR 107(int8_t) 92 32 36 129 145: TypePointer Function 144 152: TypeCooperativeMatrixKHR 118(int8_t) 92 32 36 129 153: TypePointer Function 152 160: TypeCooperativeMatrixKHR 11(float16_t) 92 12 32 129 161: TypePointer Function 160 167: TypeCooperativeMatrixKHR 107(int8_t) 92 32 12 129 168: TypePointer Function 167 174: 6(int) Constant 2 175: TypeCooperativeMatrixKHR 20(float) 92 36 36 174 176: TypePointer Function 175 182: TypeCooperativeMatrixKHR 11(float16_t) 92 36 36 174 183: TypePointer Function 182 190: TypeCooperativeMatrixKHR 24(int) 92 36 36 174 191: TypePointer Function 190 197: TypeCooperativeMatrixKHR 6(int) 92 36 36 174 198: TypePointer Function 197 261: TypeRuntimeArray 20(float) 262(InputA): TypeStruct 261 263: TypePointer StorageBuffer 262(InputA) 264(inputA): 263(ptr) Variable StorageBuffer 265: TypeRuntimeArray 20(float) 266(InputB): TypeStruct 265 267: TypePointer StorageBuffer 266(InputB) 268(inputB): 267(ptr) Variable StorageBuffer 269: TypeRuntimeArray 20(float) 270(InputC): TypeStruct 269 271: TypePointer StorageBuffer 270(InputC) 272(inputC): 271(ptr) Variable StorageBuffer 273: TypeRuntimeArray 20(float) 274(Output): TypeStruct 273 275: TypePointer StorageBuffer 274(Output) 276(outputO): 275(ptr) Variable StorageBuffer 277: TypeVector 6(int) 3 278: 277(ivec3) ConstantComposite 36 174 174 4(main): 2 Function None 3 5: Label 10(uvec8A): 9(ptr) Variable Function 15(hvec8A): 14(ptr) Variable Function 23(vec8A): 22(ptr) Variable Function 27(ivec8A): 26(ptr) Variable Function 35(ivec32B): 34(ptr) Variable Function 39(hvec32B): 38(ptr) Variable Function 46(vec32B): 45(ptr) Variable Function 49(uvec32B): 48(ptr) Variable Function 56(ivec64Acc): 55(ptr) Variable Function 59(uvec64Acc): 58(ptr) Variable Function 66(vec64Acc): 65(ptr) Variable Function 89(hvec8A_4): 88(ptr) Variable Function 95(matA_f32_64_8): 94(ptr) Variable Function 102(matA_f16_64_16): 101(ptr) Variable Function 110(matA_i8_64_32): 109(ptr) Variable Function 113(i8vec8A): 112(ptr) Variable Function 121(matA_u8_64_32): 120(ptr) Variable Function 124(u8vec8A): 123(ptr) Variable Function 132(matB_f32_8_64): 131(ptr) Variable Function 139(matB_f16_16_64): 138(ptr) Variable Function 146(matB_i8_32_64): 145(ptr) Variable Function 147(i8vec8B): 112(ptr) Variable Function 154(matB_u8_32_64): 153(ptr) Variable Function 155(u8vec8B): 123(ptr) Variable Function 162(matB_f16_16_32): 161(ptr) Variable Function 169(matB_i8_32_16): 168(ptr) Variable Function 177(matAcc_f32_64_64): 176(ptr) Variable Function 184(matAcc_f16_64_64): 183(ptr) Variable Function 185(hvec64Acc): 38(ptr) Variable Function 192(matAcc_i32_64_64): 191(ptr) Variable Function 199(matAcc_u32_64_64): 198(ptr) Variable Function 210(i8vec8A): 112(ptr) Variable Function 215(u8vec8A): 123(ptr) Variable Function 228(i8vec8B): 112(ptr) Variable Function 233(u8vec8B): 123(ptr) Variable Function 250(hvec64Acc): 38(ptr) Variable Function 16: 13 Load 15(hvec8A) 17: 8 BitCastArrayQCOM 16 Store 10(uvec8A) 17 18: 8 Load 10(uvec8A) 19: 13 BitCastArrayQCOM 18 Store 15(hvec8A) 19 28: 25 Load 27(ivec8A) 29: 21 BitCastArrayQCOM 28 Store 23(vec8A) 29 30: 21 Load 23(vec8A) 31: 25 BitCastArrayQCOM 30 Store 27(ivec8A) 31 40: 37 Load 39(hvec32B) 41: 33 BitCastArrayQCOM 40 Store 35(ivec32B) 41 42: 33 Load 35(ivec32B) 43: 37 BitCastArrayQCOM 42 Store 39(hvec32B) 43 50: 47 Load 49(uvec32B) 51: 44 BitCastArrayQCOM 50 Store 46(vec32B) 51 52: 44 Load 46(vec32B) 53: 47 BitCastArrayQCOM 52 Store 49(uvec32B) 53 60: 57 Load 59(uvec64Acc) 61: 54 BitCastArrayQCOM 60 Store 56(ivec64Acc) 61 62: 54 Load 56(ivec64Acc) 63: 57 BitCastArrayQCOM 62 Store 59(uvec64Acc) 63 67: 57 Load 59(uvec64Acc) 68: 64 BitCastArrayQCOM 67 Store 66(vec64Acc) 68 69: 64 Load 66(vec64Acc) 70: 57 BitCastArrayQCOM 69 Store 59(uvec64Acc) 70 71: 54 Load 56(ivec64Acc) 73: 25 ExtractSubArrayQCOM 71 72 Store 27(ivec8A) 73 74: 54 Load 56(ivec64Acc) 75: 33 ExtractSubArrayQCOM 74 7 Store 35(ivec32B) 75 76: 57 Load 59(uvec64Acc) 77: 8 ExtractSubArrayQCOM 76 72 Store 10(uvec8A) 77 78: 57 Load 59(uvec64Acc) 79: 47 ExtractSubArrayQCOM 78 7 Store 49(uvec32B) 79 80: 64 Load 66(vec64Acc) 81: 21 ExtractSubArrayQCOM 80 72 Store 23(vec8A) 81 82: 64 Load 66(vec64Acc) 84: 44 ExtractSubArrayQCOM 82 83 Store 46(vec32B) 84 85: 37 Load 39(hvec32B) 86: 13 ExtractSubArrayQCOM 85 72 Store 15(hvec8A) 86 90: 37 Load 39(hvec32B) 91: 87 ExtractSubArrayQCOM 90 83 Store 89(hvec8A_4) 91 96: 21 Load 23(vec8A) 97: 93 CompositeConstructCoopMatQCOM 96 Store 95(matA_f32_64_8) 97 98: 8 Load 10(uvec8A) 99: 93 CompositeConstructCoopMatQCOM 98 Store 95(matA_f32_64_8) 99 103: 13 Load 15(hvec8A) 104: 100 CompositeConstructCoopMatQCOM 103 Store 102(matA_f16_64_16) 104 105: 8 Load 10(uvec8A) 106: 100 CompositeConstructCoopMatQCOM 105 Store 102(matA_f16_64_16) 106 114: 111 Load 113(i8vec8A) 115: 108 CompositeConstructCoopMatQCOM 114 Store 110(matA_i8_64_32) 115 116: 8 Load 10(uvec8A) 117: 108 CompositeConstructCoopMatQCOM 116 Store 110(matA_i8_64_32) 117 125: 122 Load 124(u8vec8A) 126: 119 CompositeConstructCoopMatQCOM 125 Store 121(matA_u8_64_32) 126 127: 8 Load 10(uvec8A) 128: 119 CompositeConstructCoopMatQCOM 127 Store 121(matA_u8_64_32) 128 133: 21 Load 23(vec8A) 134: 130 CompositeConstructCoopMatQCOM 133 Store 132(matB_f32_8_64) 134 135: 8 Load 10(uvec8A) 136: 130 CompositeConstructCoopMatQCOM 135 Store 132(matB_f32_8_64) 136 140: 13 Load 15(hvec8A) 141: 137 CompositeConstructCoopMatQCOM 140 Store 139(matB_f16_16_64) 141 142: 8 Load 10(uvec8A) 143: 137 CompositeConstructCoopMatQCOM 142 Store 139(matB_f16_16_64) 143 148: 111 Load 147(i8vec8B) 149: 144 CompositeConstructCoopMatQCOM 148 Store 146(matB_i8_32_64) 149 150: 8 Load 10(uvec8A) 151: 144 CompositeConstructCoopMatQCOM 150 Store 146(matB_i8_32_64) 151 156: 122 Load 155(u8vec8B) 157: 152 CompositeConstructCoopMatQCOM 156 Store 154(matB_u8_32_64) 157 158: 8 Load 10(uvec8A) 159: 152 CompositeConstructCoopMatQCOM 158 Store 154(matB_u8_32_64) 159 163: 13 Load 15(hvec8A) 164: 160 CompositeConstructCoopMatQCOM 163 Store 162(matB_f16_16_32) 164 165: 8 Load 10(uvec8A) 166: 160 CompositeConstructCoopMatQCOM 165 Store 162(matB_f16_16_32) 166 170: 111 Load 147(i8vec8B) 171: 167 CompositeConstructCoopMatQCOM 170 Store 169(matB_i8_32_16) 171 172: 8 Load 10(uvec8A) 173: 167 CompositeConstructCoopMatQCOM 172 Store 169(matB_i8_32_16) 173 178: 64 Load 66(vec64Acc) 179: 175 CompositeConstructCoopMatQCOM 178 Store 177(matAcc_f32_64_64) 179 180: 57 Load 59(uvec64Acc) 181: 175 CompositeConstructCoopMatQCOM 180 Store 177(matAcc_f32_64_64) 181 186: 37 Load 185(hvec64Acc) 187: 182 CompositeConstructCoopMatQCOM 186 Store 184(matAcc_f16_64_64) 187 188: 47 Load 49(uvec32B) 189: 182 CompositeConstructCoopMatQCOM 188 Store 184(matAcc_f16_64_64) 189 193: 54 Load 56(ivec64Acc) 194: 190 CompositeConstructCoopMatQCOM 193 Store 192(matAcc_i32_64_64) 194 195: 57 Load 59(uvec64Acc) 196: 190 CompositeConstructCoopMatQCOM 195 Store 192(matAcc_i32_64_64) 196 200: 57 Load 59(uvec64Acc) 201: 197 CompositeConstructCoopMatQCOM 200 Store 199(matAcc_u32_64_64) 201 202: 93 Load 95(matA_f32_64_8) 203: 21 CompositeExtractCoopMatQCOM 202 Store 23(vec8A) 203 204: 93 Load 95(matA_f32_64_8) 205: 8 CompositeExtractCoopMatQCOM 204 Store 10(uvec8A) 205 206: 100 Load 102(matA_f16_64_16) 207: 13 CompositeExtractCoopMatQCOM 206 Store 15(hvec8A) 207 208: 100 Load 102(matA_f16_64_16) 209: 8 CompositeExtractCoopMatQCOM 208 Store 10(uvec8A) 209 211: 108 Load 110(matA_i8_64_32) 212: 111 CompositeExtractCoopMatQCOM 211 Store 210(i8vec8A) 212 213: 108 Load 110(matA_i8_64_32) 214: 8 CompositeExtractCoopMatQCOM 213 Store 10(uvec8A) 214 216: 119 Load 121(matA_u8_64_32) 217: 122 CompositeExtractCoopMatQCOM 216 Store 215(u8vec8A) 217 218: 119 Load 121(matA_u8_64_32) 219: 8 CompositeExtractCoopMatQCOM 218 Store 10(uvec8A) 219 220: 130 Load 132(matB_f32_8_64) 221: 21 CompositeExtractCoopMatQCOM 220 Store 23(vec8A) 221 222: 130 Load 132(matB_f32_8_64) 223: 8 CompositeExtractCoopMatQCOM 222 Store 10(uvec8A) 223 224: 137 Load 139(matB_f16_16_64) 225: 13 CompositeExtractCoopMatQCOM 224 Store 15(hvec8A) 225 226: 137 Load 139(matB_f16_16_64) 227: 8 CompositeExtractCoopMatQCOM 226 Store 10(uvec8A) 227 229: 144 Load 146(matB_i8_32_64) 230: 111 CompositeExtractCoopMatQCOM 229 Store 228(i8vec8B) 230 231: 144 Load 146(matB_i8_32_64) 232: 8 CompositeExtractCoopMatQCOM 231 Store 10(uvec8A) 232 234: 152 Load 154(matB_u8_32_64) 235: 122 CompositeExtractCoopMatQCOM 234 Store 233(u8vec8B) 235 236: 152 Load 154(matB_u8_32_64) 237: 8 CompositeExtractCoopMatQCOM 236 Store 10(uvec8A) 237 238: 160 Load 162(matB_f16_16_32) 239: 13 CompositeExtractCoopMatQCOM 238 Store 15(hvec8A) 239 240: 160 Load 162(matB_f16_16_32) 241: 8 CompositeExtractCoopMatQCOM 240 Store 10(uvec8A) 241 242: 167 Load 169(matB_i8_32_16) 243: 111 CompositeExtractCoopMatQCOM 242 Store 228(i8vec8B) 243 244: 167 Load 169(matB_i8_32_16) 245: 8 CompositeExtractCoopMatQCOM 244 Store 10(uvec8A) 245 246: 175 Load 177(matAcc_f32_64_64) 247: 64 CompositeExtractCoopMatQCOM 246 Store 66(vec64Acc) 247 248: 175 Load 177(matAcc_f32_64_64) 249: 57 CompositeExtractCoopMatQCOM 248 Store 59(uvec64Acc) 249 251: 182 Load 184(matAcc_f16_64_64) 252: 37 CompositeExtractCoopMatQCOM 251 Store 250(hvec64Acc) 252 253: 182 Load 184(matAcc_f16_64_64) 254: 47 CompositeExtractCoopMatQCOM 253 Store 49(uvec32B) 254 255: 190 Load 192(matAcc_i32_64_64) 256: 54 CompositeExtractCoopMatQCOM 255 Store 56(ivec64Acc) 256 257: 190 Load 192(matAcc_i32_64_64) 258: 57 CompositeExtractCoopMatQCOM 257 Store 59(uvec64Acc) 258 259: 197 Load 199(matAcc_u32_64_64) 260: 57 CompositeExtractCoopMatQCOM 259 Store 59(uvec64Acc) 260 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.coopmatConversion.2.comp.out000066400000000000000000000634511506534232700255630ustar00rootroot00000000000000spv.qcom.coopmatConversion.2.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 268 Capability Shader Capability Float16 Capability Int8 Capability CooperativeMatrixConversionQCOM Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_QCOM_cooperative_matrix_conversion" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 64 2 2 Source GLSL 450 SourceExtension "GL_EXT_buffer_reference" SourceExtension "GL_EXT_control_flow_attributes" SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_QCOM_cooperative_matrix_conversion" Name 4 "main" Name 8 "TILE_K" Name 11 "f32vecSC" Name 15 "uvec8" Name 20 "vec8" Name 23 "uvecSC" Name 32 "uvecSC2" Name 37 "uvecSC" Name 41 "uvec64Acc" Name 45 "TILE_N" Name 48 "uvec64AccSC" Name 61 "uvec64AccSC2" Name 65 "TILE_M" Name 68 "V2C_matA_f32_SC_M8" Name 73 "V2C_matA_f32_SC_MK" Name 74 "uvecSC_K11" Name 79 "V2C_matA_f32_SC_64_8" Name 80 "TILE_K2" Name 83 "uvecSC_K12" Name 89 "V2C_matA_f16_SC_MK" Name 93 "TILE_K4" Name 96 "V2C_matA_i8_SC_64K" Name 102 "V2C_matA_u8_SC_64K" Name 108 "V2C_matB_f32_SC_8N" Name 113 "V2C_matB_f32_SC_KN" Name 114 "uvecSC_K21" Name 119 "V2C_matB_f32_SC_8_64" Name 120 "uvecSC_K22" Name 125 "V2C_matB_f16_SC_KN" Name 130 "V2C_matB_i8_SC_K64" Name 135 "V2C_matB_u8_SC_K64" Name 141 "V2C_matB_f32_SC_K32" Name 147 "V2C_matB_f32_SC_K16" Name 152 "V2C_matAcc_f32_SC_MN" Name 153 "uvecSC_N31" Name 158 "V2C_matAcc_f32_SC_64_64" Name 159 "TILE_N2" Name 162 "uvecSC_N32" Name 167 "V2C_matAcc_f16_SC_MN" Name 171 "TILE_N4" Name 174 "V2C_matAcc_i32_SC_64N" Name 179 "V2C_matAcc_u32_SC_64N" Name 182 "C2V_matA_f32_SC_M8" Name 185 "uvecSC_K11" Name 186 "C2V_matA_f32_SC_MK" Name 189 "uvecSC_K12" Name 190 "C2V_matA_f32_SC_64_8" Name 193 "C2V_matA_f16_SC_MK" Name 196 "C2V_matA_i8_SC_64K" Name 199 "C2V_matA_u8_SC_64K" Name 202 "C2V_matB_f32_SC_8N" Name 205 "uvecSC_K21" Name 206 "C2V_matB_f32_SC_KN" Name 209 "uvecSC_K22" Name 210 "C2V_matB_f32_SC_8_64" Name 213 "C2V_matB_f16_SC_KN" Name 216 "C2V_matB_i8_SC_K64" Name 219 "C2V_matB_u8_SC_K64" Name 222 "C2V_matB_f32_SC_K32" Name 225 "C2V_matB_f32_SC_K16" Name 228 "uvecSC_N31" Name 229 "C2V_matAcc_f32_SC_MN" Name 234 "C2V_matAcc_f32_SC_64N" Name 237 "uvecSC_N32" Name 238 "C2V_matAcc_f32_SC_64_64" Name 241 "C2V_matAcc_f16_SC_MN" Name 244 "C2V_matAcc_i32_SC_64N" Name 247 "C2V_matAcc_u32_SC_64N" Name 251 "InputA" MemberName 251(InputA) 0 "x" Name 253 "inputA" Name 255 "InputB" MemberName 255(InputB) 0 "x" Name 257 "inputB" Name 259 "InputC" MemberName 259(InputC) 0 "x" Name 261 "inputC" Name 263 "Output" MemberName 263(Output) 0 "x" Name 265 "outputO" Decorate 8(TILE_K) SpecId 7 Decorate 45(TILE_N) SpecId 4 Decorate 65(TILE_M) SpecId 3 Decorate 80(TILE_K2) SpecId 8 Decorate 93(TILE_K4) SpecId 9 Decorate 159(TILE_N2) SpecId 5 Decorate 171(TILE_N4) SpecId 6 Decorate 250 ArrayStride 4 Decorate 251(InputA) Block MemberDecorate 251(InputA) 0 NonWritable MemberDecorate 251(InputA) 0 Offset 0 Decorate 253(inputA) NonWritable Decorate 253(inputA) Binding 0 Decorate 253(inputA) DescriptorSet 0 Decorate 254 ArrayStride 4 Decorate 255(InputB) Block MemberDecorate 255(InputB) 0 NonWritable MemberDecorate 255(InputB) 0 Offset 0 Decorate 257(inputB) NonWritable Decorate 257(inputB) Binding 1 Decorate 257(inputB) DescriptorSet 0 Decorate 258 ArrayStride 4 Decorate 259(InputC) Block MemberDecorate 259(InputC) 0 NonWritable MemberDecorate 259(InputC) 0 Offset 0 Decorate 261(inputC) NonWritable Decorate 261(inputC) Binding 2 Decorate 261(inputC) DescriptorSet 0 Decorate 262 ArrayStride 4 Decorate 263(Output) Block MemberDecorate 263(Output) 0 Offset 0 Decorate 265(outputO) Binding 3 Decorate 265(outputO) DescriptorSet 0 Decorate 267 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8(TILE_K): 7(int) SpecConstant 1 9: TypeArray 6(float) 8(TILE_K) 10: TypePointer Function 9 12: 7(int) Constant 8 13: TypeArray 7(int) 12 14: TypePointer Function 13 18: TypeArray 6(float) 12 19: TypePointer Function 18 21: TypeArray 7(int) 8(TILE_K) 22: TypePointer Function 21 28: 7(int) Constant 2 29: 7(int) SpecConstantOp 134 8(TILE_K) 28 30: TypeArray 7(int) 29 31: TypePointer Function 30 34: 7(int) SpecConstantOp 134 8(TILE_K) 28 35: TypeArray 6(float) 34 38: 7(int) Constant 64 39: TypeArray 7(int) 38 40: TypePointer Function 39 43: 7(int) Constant 0 45(TILE_N): 7(int) SpecConstant 1 46: TypeArray 7(int) 45(TILE_N) 47: TypePointer Function 46 50: 7(int) Constant 4 55: 7(int) SpecConstantOp 134 8(TILE_K) 28 56: TypeArray 7(int) 55 58: 7(int) SpecConstantOp 134 45(TILE_N) 28 59: TypeArray 7(int) 58 60: TypePointer Function 59 64: 7(int) Constant 3 65(TILE_M): 7(int) SpecConstant 1 66: TypeCooperativeMatrixKHR 6(float) 64 65(TILE_M) 12 43 67: TypePointer Function 66 71: TypeCooperativeMatrixKHR 6(float) 64 65(TILE_M) 8(TILE_K) 43 72: TypePointer Function 71 77: TypeCooperativeMatrixKHR 6(float) 64 38 12 43 78: TypePointer Function 77 80(TILE_K2): 7(int) SpecConstant 2 81: TypeArray 7(int) 80(TILE_K2) 82: TypePointer Function 81 86: TypeFloat 16 87: TypeCooperativeMatrixKHR 86(float16_t) 64 65(TILE_M) 80(TILE_K2) 43 88: TypePointer Function 87 92: TypeInt 8 1 93(TILE_K4): 7(int) SpecConstant 4 94: TypeCooperativeMatrixKHR 92(int8_t) 64 38 93(TILE_K4) 43 95: TypePointer Function 94 99: TypeInt 8 0 100: TypeCooperativeMatrixKHR 99(int8_t) 64 38 93(TILE_K4) 43 101: TypePointer Function 100 105: 7(int) Constant 1 106: TypeCooperativeMatrixKHR 6(float) 64 12 45(TILE_N) 105 107: TypePointer Function 106 111: TypeCooperativeMatrixKHR 6(float) 64 8(TILE_K) 45(TILE_N) 105 112: TypePointer Function 111 117: TypeCooperativeMatrixKHR 6(float) 64 12 38 105 118: TypePointer Function 117 123: TypeCooperativeMatrixKHR 86(float16_t) 64 80(TILE_K2) 45(TILE_N) 105 124: TypePointer Function 123 128: TypeCooperativeMatrixKHR 92(int8_t) 64 93(TILE_K4) 38 105 129: TypePointer Function 128 133: TypeCooperativeMatrixKHR 99(int8_t) 64 93(TILE_K4) 38 105 134: TypePointer Function 133 138: 7(int) Constant 32 139: TypeCooperativeMatrixKHR 6(float) 64 8(TILE_K) 138 105 140: TypePointer Function 139 144: 7(int) Constant 16 145: TypeCooperativeMatrixKHR 6(float) 64 8(TILE_K) 144 105 146: TypePointer Function 145 150: TypeCooperativeMatrixKHR 6(float) 64 65(TILE_M) 45(TILE_N) 28 151: TypePointer Function 150 156: TypeCooperativeMatrixKHR 6(float) 64 38 38 28 157: TypePointer Function 156 159(TILE_N2): 7(int) SpecConstant 2 160: TypeArray 7(int) 159(TILE_N2) 161: TypePointer Function 160 165: TypeCooperativeMatrixKHR 86(float16_t) 64 65(TILE_M) 159(TILE_N2) 28 166: TypePointer Function 165 170: TypeInt 32 1 171(TILE_N4): 7(int) SpecConstant 4 172: TypeCooperativeMatrixKHR 170(int) 64 38 171(TILE_N4) 28 173: TypePointer Function 172 177: TypeCooperativeMatrixKHR 7(int) 64 38 171(TILE_N4) 28 178: TypePointer Function 177 232: TypeCooperativeMatrixKHR 6(float) 64 38 45(TILE_N) 28 233: TypePointer Function 232 250: TypeRuntimeArray 6(float) 251(InputA): TypeStruct 250 252: TypePointer StorageBuffer 251(InputA) 253(inputA): 252(ptr) Variable StorageBuffer 254: TypeRuntimeArray 6(float) 255(InputB): TypeStruct 254 256: TypePointer StorageBuffer 255(InputB) 257(inputB): 256(ptr) Variable StorageBuffer 258: TypeRuntimeArray 6(float) 259(InputC): TypeStruct 258 260: TypePointer StorageBuffer 259(InputC) 261(inputC): 260(ptr) Variable StorageBuffer 262: TypeRuntimeArray 6(float) 263(Output): TypeStruct 262 264: TypePointer StorageBuffer 263(Output) 265(outputO): 264(ptr) Variable StorageBuffer 266: TypeVector 7(int) 3 267: 266(ivec3) ConstantComposite 38 28 28 4(main): 2 Function None 3 5: Label 11(f32vecSC): 10(ptr) Variable Function 15(uvec8): 14(ptr) Variable Function 20(vec8): 19(ptr) Variable Function 23(uvecSC): 22(ptr) Variable Function 32(uvecSC2): 31(ptr) Variable Function 37(uvecSC): 22(ptr) Variable Function 41(uvec64Acc): 40(ptr) Variable Function 48(uvec64AccSC): 47(ptr) Variable Function 61(uvec64AccSC2): 60(ptr) Variable Function 68(V2C_matA_f32_SC_M8): 67(ptr) Variable Function 73(V2C_matA_f32_SC_MK): 72(ptr) Variable Function 74(uvecSC_K11): 22(ptr) Variable Function 79(V2C_matA_f32_SC_64_8): 78(ptr) Variable Function 83(uvecSC_K12): 82(ptr) Variable Function 89(V2C_matA_f16_SC_MK): 88(ptr) Variable Function 96(V2C_matA_i8_SC_64K): 95(ptr) Variable Function 102(V2C_matA_u8_SC_64K): 101(ptr) Variable Function 108(V2C_matB_f32_SC_8N): 107(ptr) Variable Function 113(V2C_matB_f32_SC_KN): 112(ptr) Variable Function 114(uvecSC_K21): 22(ptr) Variable Function 119(V2C_matB_f32_SC_8_64): 118(ptr) Variable Function 120(uvecSC_K22): 82(ptr) Variable Function 125(V2C_matB_f16_SC_KN): 124(ptr) Variable Function 130(V2C_matB_i8_SC_K64): 129(ptr) Variable Function 135(V2C_matB_u8_SC_K64): 134(ptr) Variable Function 141(V2C_matB_f32_SC_K32): 140(ptr) Variable Function 147(V2C_matB_f32_SC_K16): 146(ptr) Variable Function 152(V2C_matAcc_f32_SC_MN): 151(ptr) Variable Function 153(uvecSC_N31): 47(ptr) Variable Function 158(V2C_matAcc_f32_SC_64_64): 157(ptr) Variable Function 162(uvecSC_N32): 161(ptr) Variable Function 167(V2C_matAcc_f16_SC_MN): 166(ptr) Variable Function 174(V2C_matAcc_i32_SC_64N): 173(ptr) Variable Function 179(V2C_matAcc_u32_SC_64N): 178(ptr) Variable Function 182(C2V_matA_f32_SC_M8): 67(ptr) Variable Function 185(uvecSC_K11): 22(ptr) Variable Function 186(C2V_matA_f32_SC_MK): 72(ptr) Variable Function 189(uvecSC_K12): 82(ptr) Variable Function 190(C2V_matA_f32_SC_64_8): 78(ptr) Variable Function 193(C2V_matA_f16_SC_MK): 88(ptr) Variable Function 196(C2V_matA_i8_SC_64K): 95(ptr) Variable Function 199(C2V_matA_u8_SC_64K): 101(ptr) Variable Function 202(C2V_matB_f32_SC_8N): 107(ptr) Variable Function 205(uvecSC_K21): 22(ptr) Variable Function 206(C2V_matB_f32_SC_KN): 112(ptr) Variable Function 209(uvecSC_K22): 82(ptr) Variable Function 210(C2V_matB_f32_SC_8_64): 118(ptr) Variable Function 213(C2V_matB_f16_SC_KN): 124(ptr) Variable Function 216(C2V_matB_i8_SC_K64): 129(ptr) Variable Function 219(C2V_matB_u8_SC_K64): 134(ptr) Variable Function 222(C2V_matB_f32_SC_K32): 140(ptr) Variable Function 225(C2V_matB_f32_SC_K16): 146(ptr) Variable Function 228(uvecSC_N31): 47(ptr) Variable Function 229(C2V_matAcc_f32_SC_MN): 151(ptr) Variable Function 234(C2V_matAcc_f32_SC_64N): 233(ptr) Variable Function 237(uvecSC_N32): 161(ptr) Variable Function 238(C2V_matAcc_f32_SC_64_64): 157(ptr) Variable Function 241(C2V_matAcc_f16_SC_MN): 166(ptr) Variable Function 244(C2V_matAcc_i32_SC_64N): 173(ptr) Variable Function 247(C2V_matAcc_u32_SC_64N): 178(ptr) Variable Function 16: 13 Load 15(uvec8) 17: 9 BitCastArrayQCOM 16 Store 11(f32vecSC) 17 24: 21 Load 23(uvecSC) 25: 18 BitCastArrayQCOM 24 Store 20(vec8) 25 26: 21 Load 23(uvecSC) 27: 9 BitCastArrayQCOM 26 Store 11(f32vecSC) 27 33: 30 Load 32(uvecSC2) 36: 35 BitCastArrayQCOM 33 42: 39 Load 41(uvec64Acc) 44: 21 ExtractSubArrayQCOM 42 43 Store 37(uvecSC) 44 49: 46 Load 48(uvec64AccSC) 51: 13 ExtractSubArrayQCOM 49 50 Store 15(uvec8) 51 52: 46 Load 48(uvec64AccSC) 53: 21 ExtractSubArrayQCOM 52 12 Store 37(uvecSC) 53 54: 39 Load 41(uvec64Acc) 57: 56 ExtractSubArrayQCOM 54 28 62: 59 Load 61(uvec64AccSC2) 63: 13 ExtractSubArrayQCOM 62 28 Store 15(uvec8) 63 69: 13 Load 15(uvec8) 70: 66 CompositeConstructCoopMatQCOM 69 Store 68(V2C_matA_f32_SC_M8) 70 75: 21 Load 74(uvecSC_K11) 76: 71 CompositeConstructCoopMatQCOM 75 Store 73(V2C_matA_f32_SC_MK) 76 84: 81 Load 83(uvecSC_K12) 85: 77 CompositeConstructCoopMatQCOM 84 Store 79(V2C_matA_f32_SC_64_8) 85 90: 21 Load 74(uvecSC_K11) 91: 87 CompositeConstructCoopMatQCOM 90 Store 89(V2C_matA_f16_SC_MK) 91 97: 21 Load 74(uvecSC_K11) 98: 94 CompositeConstructCoopMatQCOM 97 Store 96(V2C_matA_i8_SC_64K) 98 103: 21 Load 74(uvecSC_K11) 104: 100 CompositeConstructCoopMatQCOM 103 Store 102(V2C_matA_u8_SC_64K) 104 109: 13 Load 15(uvec8) 110: 106 CompositeConstructCoopMatQCOM 109 Store 108(V2C_matB_f32_SC_8N) 110 115: 21 Load 114(uvecSC_K21) 116: 111 CompositeConstructCoopMatQCOM 115 Store 113(V2C_matB_f32_SC_KN) 116 121: 81 Load 120(uvecSC_K22) 122: 117 CompositeConstructCoopMatQCOM 121 Store 119(V2C_matB_f32_SC_8_64) 122 126: 21 Load 114(uvecSC_K21) 127: 123 CompositeConstructCoopMatQCOM 126 Store 125(V2C_matB_f16_SC_KN) 127 131: 21 Load 114(uvecSC_K21) 132: 128 CompositeConstructCoopMatQCOM 131 Store 130(V2C_matB_i8_SC_K64) 132 136: 21 Load 114(uvecSC_K21) 137: 133 CompositeConstructCoopMatQCOM 136 Store 135(V2C_matB_u8_SC_K64) 137 142: 21 Load 114(uvecSC_K21) 143: 139 CompositeConstructCoopMatQCOM 142 Store 141(V2C_matB_f32_SC_K32) 143 148: 21 Load 114(uvecSC_K21) 149: 145 CompositeConstructCoopMatQCOM 148 Store 147(V2C_matB_f32_SC_K16) 149 154: 46 Load 153(uvecSC_N31) 155: 150 CompositeConstructCoopMatQCOM 154 Store 152(V2C_matAcc_f32_SC_MN) 155 163: 160 Load 162(uvecSC_N32) 164: 156 CompositeConstructCoopMatQCOM 163 Store 158(V2C_matAcc_f32_SC_64_64) 164 168: 46 Load 153(uvecSC_N31) 169: 165 CompositeConstructCoopMatQCOM 168 Store 167(V2C_matAcc_f16_SC_MN) 169 175: 46 Load 153(uvecSC_N31) 176: 172 CompositeConstructCoopMatQCOM 175 Store 174(V2C_matAcc_i32_SC_64N) 176 180: 46 Load 153(uvecSC_N31) 181: 177 CompositeConstructCoopMatQCOM 180 Store 179(V2C_matAcc_u32_SC_64N) 181 183: 66 Load 182(C2V_matA_f32_SC_M8) 184: 13 CompositeExtractCoopMatQCOM 183 Store 15(uvec8) 184 187: 71 Load 186(C2V_matA_f32_SC_MK) 188: 21 CompositeExtractCoopMatQCOM 187 Store 185(uvecSC_K11) 188 191: 77 Load 190(C2V_matA_f32_SC_64_8) 192: 81 CompositeExtractCoopMatQCOM 191 Store 189(uvecSC_K12) 192 194: 87 Load 193(C2V_matA_f16_SC_MK) 195: 21 CompositeExtractCoopMatQCOM 194 Store 185(uvecSC_K11) 195 197: 94 Load 196(C2V_matA_i8_SC_64K) 198: 21 CompositeExtractCoopMatQCOM 197 Store 185(uvecSC_K11) 198 200: 100 Load 199(C2V_matA_u8_SC_64K) 201: 21 CompositeExtractCoopMatQCOM 200 Store 185(uvecSC_K11) 201 203: 106 Load 202(C2V_matB_f32_SC_8N) 204: 13 CompositeExtractCoopMatQCOM 203 Store 15(uvec8) 204 207: 111 Load 206(C2V_matB_f32_SC_KN) 208: 21 CompositeExtractCoopMatQCOM 207 Store 205(uvecSC_K21) 208 211: 117 Load 210(C2V_matB_f32_SC_8_64) 212: 81 CompositeExtractCoopMatQCOM 211 Store 209(uvecSC_K22) 212 214: 123 Load 213(C2V_matB_f16_SC_KN) 215: 21 CompositeExtractCoopMatQCOM 214 Store 205(uvecSC_K21) 215 217: 128 Load 216(C2V_matB_i8_SC_K64) 218: 21 CompositeExtractCoopMatQCOM 217 Store 205(uvecSC_K21) 218 220: 133 Load 219(C2V_matB_u8_SC_K64) 221: 21 CompositeExtractCoopMatQCOM 220 Store 205(uvecSC_K21) 221 223: 139 Load 222(C2V_matB_f32_SC_K32) 224: 21 CompositeExtractCoopMatQCOM 223 Store 205(uvecSC_K21) 224 226: 145 Load 225(C2V_matB_f32_SC_K16) 227: 21 CompositeExtractCoopMatQCOM 226 Store 205(uvecSC_K21) 227 230: 150 Load 229(C2V_matAcc_f32_SC_MN) 231: 46 CompositeExtractCoopMatQCOM 230 Store 228(uvecSC_N31) 231 235: 232 Load 234(C2V_matAcc_f32_SC_64N) 236: 46 CompositeExtractCoopMatQCOM 235 Store 228(uvecSC_N31) 236 239: 156 Load 238(C2V_matAcc_f32_SC_64_64) 240: 160 CompositeExtractCoopMatQCOM 239 Store 237(uvecSC_N32) 240 242: 165 Load 241(C2V_matAcc_f16_SC_MN) 243: 46 CompositeExtractCoopMatQCOM 242 Store 228(uvecSC_N31) 243 245: 172 Load 244(C2V_matAcc_i32_SC_64N) 246: 46 CompositeExtractCoopMatQCOM 245 Store 228(uvecSC_N31) 246 248: 177 Load 247(C2V_matAcc_u32_SC_64N) 249: 46 CompositeExtractCoopMatQCOM 248 Store 228(uvecSC_N31) 249 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.es.tileShading.0.comp.out000066400000000000000000000176321506534232700247120ustar00rootroot00000000000000spv.qcom.es.tileShading.0.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 12 16 19 ExecutionMode 4 LocalSize 16 16 1 Source ESSL 310 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "uoffset" Name 12 "gl_GlobalInvocationID" Name 16 "gl_TileOffsetQCOM" Name 19 "gl_TileDimensionQCOM" Name 30 "offset" Name 36 "colorA" Name 39 "color0" Name 43 "colorC" Name 44 "input0" Name 49 "d" Name 50 "depth" Name 57 "s" Name 59 "outColor" Name 68 "outDepth" Name 72 "outStencil" Name 77 "color1" Name 85 "stencil" Decorate 12(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 16(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 19(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 39(color0) NonWritable Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 44(input0) NonWritable Decorate 44(input0) Binding 0 Decorate 44(input0) DescriptorSet 0 Decorate 50(depth) NonWritable Decorate 50(depth) Binding 3 Decorate 50(depth) DescriptorSet 0 Decorate 77(color1) NonReadable Decorate 77(color1) Binding 2 Decorate 77(color1) DescriptorSet 0 Decorate 85(stencil) NonReadable Decorate 85(stencil) Binding 4 Decorate 85(stencil) DescriptorSet 0 Decorate 92 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeVector 6(int) 3 11: TypePointer Input 10(ivec3) 12(gl_GlobalInvocationID): 11(ptr) Variable Input 15: TypePointer Input 7(ivec2) 16(gl_TileOffsetQCOM): 15(ptr) Variable Input 19(gl_TileDimensionQCOM): 11(ptr) Variable Input 23: 6(int) Constant 1 24: 7(ivec2) ConstantComposite 23 23 27: TypeInt 32 1 28: TypeVector 27(int) 2 29: TypePointer Function 28(ivec2) 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 44(input0): 38(ptr) Variable TileAttachmentQCOM 48: TypePointer Function 33(float) 50(depth): 38(ptr) Variable TileAttachmentQCOM 54: 6(int) Constant 0 56: TypePointer Function 6(int) 58: 6(int) Constant 2 61: 33(float) Constant 1065353216 62: 34(fvec4) ConstantComposite 61 61 61 61 66: 33(float) Constant 1051260355 70: 33(float) Constant 1073741824 75: TypeImage 27(int) 2D nonsampled format:Rgba32i 76: TypePointer TileAttachmentQCOM 75 77(color1): 76(ptr) Variable TileAttachmentQCOM 81: TypeVector 27(int) 4 83: TypeImage 6(int) 2D nonsampled format:Rgba32ui 84: TypePointer TileAttachmentQCOM 83 85(stencil): 84(ptr) Variable TileAttachmentQCOM 89: TypeVector 6(int) 4 91: 6(int) Constant 16 92: 10(ivec3) ConstantComposite 91 91 23 4(main): 2 Function None 3 5: Label 9(uoffset): 8(ptr) Variable Function 30(offset): 29(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 43(colorC): 35(ptr) Variable Function 49(d): 48(ptr) Variable Function 57(s): 56(ptr) Variable Function 59(outColor): 35(ptr) Variable Function 68(outDepth): 48(ptr) Variable Function 72(outStencil): 56(ptr) Variable Function 13: 10(ivec3) Load 12(gl_GlobalInvocationID) 14: 7(ivec2) VectorShuffle 13 13 0 1 17: 7(ivec2) Load 16(gl_TileOffsetQCOM) 18: 7(ivec2) Load 16(gl_TileOffsetQCOM) 20: 10(ivec3) Load 19(gl_TileDimensionQCOM) 21: 7(ivec2) VectorShuffle 20 20 0 1 22: 7(ivec2) IAdd 18 21 25: 7(ivec2) ISub 22 24 26: 7(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 14 17 25 Store 9(uoffset) 26 31: 7(ivec2) Load 9(uoffset) 32: 28(ivec2) Bitcast 31 Store 30(offset) 32 40: 37 Load 39(color0) 41: 28(ivec2) Load 30(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 45: 37 Load 44(input0) 46: 28(ivec2) Load 30(offset) 47: 34(fvec4) ImageRead 45 46 Store 43(colorC) 47 51: 37 Load 50(depth) 52: 28(ivec2) Load 30(offset) 53: 34(fvec4) ImageRead 51 52 55: 33(float) CompositeExtract 53 0 Store 49(d) 55 Store 57(s) 58 60: 34(fvec4) Load 36(colorA) 63: 34(fvec4) FAdd 60 62 64: 34(fvec4) Load 43(colorC) 65: 34(fvec4) FAdd 63 64 67: 34(fvec4) VectorTimesScalar 65 66 Store 59(outColor) 67 69: 33(float) Load 49(d) 71: 33(float) FMul 69 70 Store 68(outDepth) 71 73: 6(int) Load 57(s) 74: 6(int) IAdd 73 23 Store 72(outStencil) 74 78: 75 Load 77(color1) 79: 28(ivec2) Load 30(offset) 80: 34(fvec4) Load 59(outColor) 82: 81(ivec4) ConvertFToS 80 ImageWrite 78 79 82 86: 83 Load 85(stencil) 87: 28(ivec2) Load 30(offset) 88: 6(int) Load 72(outStencil) 90: 89(ivec4) CompositeConstruct 88 88 88 88 ImageWrite 86 87 90 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.es.tileShading.0.frag.out000066400000000000000000000202341506534232700246630ustar00rootroot00000000000000spv.qcom.es.tileShading.0.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 100 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 22 26 93 ExecutionMode 4 OriginUpperLeft Source ESSL 310 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "o2" Name 20 "offset" Name 22 "gl_TileOffsetQCOM" Name 26 "gl_TileDimensionQCOM" Name 36 "colorA" Name 39 "color0" Name 43 "colorB" Name 45 "colorC" Name 46 "input0" Name 51 "d" Name 52 "depth" Name 59 "s" Name 64 "outColor" Name 80 "color1" Name 86 "stencil" Name 93 "fragColor" Decorate 22(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 22(gl_TileOffsetQCOM) Flat Decorate 26(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 26(gl_TileDimensionQCOM) Flat Decorate 39(color0) NonWritable Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 46(input0) NonWritable Decorate 46(input0) Binding 0 Decorate 46(input0) DescriptorSet 0 Decorate 52(depth) NonWritable Decorate 52(depth) Binding 3 Decorate 52(depth) DescriptorSet 0 Decorate 80(color1) NonReadable Decorate 80(color1) Binding 2 Decorate 80(color1) DescriptorSet 0 Decorate 86(stencil) NonReadable Decorate 86(stencil) Binding 4 Decorate 86(stencil) DescriptorSet 0 Decorate 93(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: 6(int) Constant 8 11: 6(int) Constant 4 12: 7(ivec2) ConstantComposite 10 11 14: 6(int) Constant 2 15: 7(ivec2) ConstantComposite 14 14 17: TypeInt 32 1 18: TypeVector 17(int) 2 19: TypePointer Function 18(ivec2) 21: TypePointer Input 7(ivec2) 22(gl_TileOffsetQCOM): 21(ptr) Variable Input 24: TypeVector 6(int) 3 25: TypePointer Input 24(ivec3) 26(gl_TileDimensionQCOM): 25(ptr) Variable Input 28: 24(ivec3) ConstantComposite 14 14 14 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 46(input0): 38(ptr) Variable TileAttachmentQCOM 50: TypePointer Function 33(float) 52(depth): 38(ptr) Variable TileAttachmentQCOM 56: 6(int) Constant 0 58: TypePointer Function 6(int) 62: TypeVector 17(int) 4 63: TypePointer Function 62(ivec4) 78: TypeImage 17(int) 2D nonsampled format:Rgba32i 79: TypePointer TileAttachmentQCOM 78 80(color1): 79(ptr) Variable TileAttachmentQCOM 84: TypeImage 6(int) 2D nonsampled format:Rgba32ui 85: TypePointer TileAttachmentQCOM 84 86(stencil): 85(ptr) Variable TileAttachmentQCOM 90: TypeVector 6(int) 4 92: TypePointer Output 34(fvec4) 93(fragColor): 92(ptr) Variable Output 96: 33(float) Constant 1065353216 97: 33(float) Constant 0 98: 34(fvec4) ConstantComposite 96 97 97 96 4(main): 2 Function None 3 5: Label 9(o2): 8(ptr) Variable Function 20(offset): 19(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 43(colorB): 35(ptr) Variable Function 45(colorC): 35(ptr) Variable Function 51(d): 50(ptr) Variable Function 59(s): 58(ptr) Variable Function 64(outColor): 63(ptr) Variable Function Store 9(o2) 12 13: 7(ivec2) Load 9(o2) 16: 7(ivec2) UDiv 13 15 Store 9(o2) 16 23: 7(ivec2) Load 22(gl_TileOffsetQCOM) 27: 24(ivec3) Load 26(gl_TileDimensionQCOM) 29: 24(ivec3) UDiv 27 28 30: 7(ivec2) VectorShuffle 29 29 0 1 31: 7(ivec2) IAdd 23 30 32: 18(ivec2) Bitcast 31 Store 20(offset) 32 40: 37 Load 39(color0) 41: 18(ivec2) Load 20(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 44: 34(fvec4) Load 36(colorA) Store 43(colorB) 44 47: 37 Load 46(input0) 48: 18(ivec2) Load 20(offset) 49: 34(fvec4) ImageRead 47 48 Store 45(colorC) 49 53: 37 Load 52(depth) 54: 18(ivec2) Load 20(offset) 55: 34(fvec4) ImageRead 53 54 57: 33(float) CompositeExtract 55 0 Store 51(d) 57 60: 33(float) Load 51(d) 61: 6(int) ConvertFToU 60 Store 59(s) 61 65: 34(fvec4) Load 43(colorB) 66: 34(fvec4) Load 43(colorB) 67: 34(fvec4) FAdd 65 66 68: 34(fvec4) Load 45(colorC) 69: 34(fvec4) FAdd 67 68 70: 33(float) Load 51(d) 71: 34(fvec4) CompositeConstruct 70 70 70 70 72: 34(fvec4) FAdd 69 71 73: 6(int) Load 59(s) 74: 33(float) ConvertUToF 73 75: 34(fvec4) CompositeConstruct 74 74 74 74 76: 34(fvec4) FAdd 72 75 77: 62(ivec4) ConvertFToS 76 Store 64(outColor) 77 81: 78 Load 80(color1) 82: 18(ivec2) Load 20(offset) 83: 62(ivec4) Load 64(outColor) ImageWrite 81 82 83 87: 84 Load 86(stencil) 88: 18(ivec2) Load 20(offset) 89: 62(ivec4) Load 64(outColor) 91: 90(ivec4) Bitcast 89 ImageWrite 87 88 91 94: 62(ivec4) Load 64(outColor) 95: 34(fvec4) ConvertSToF 94 99: 34(fvec4) FAdd 95 98 Store 93(fragColor) 99 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.es.tileShading.1.comp.out000066400000000000000000000176421506534232700247140ustar00rootroot00000000000000spv.qcom.es.tileShading.1.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 12 16 19 ExecutionMode 4 TileShadingRateQCOM 2 2 1 Source ESSL 310 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "uoffset" Name 12 "gl_GlobalInvocationID" Name 16 "gl_TileOffsetQCOM" Name 19 "gl_TileDimensionQCOM" Name 30 "offset" Name 36 "colorA" Name 39 "color0" Name 43 "colorC" Name 44 "input0" Name 49 "d" Name 50 "depth" Name 57 "s" Name 59 "outColor" Name 68 "outDepth" Name 72 "outStencil" Name 77 "color1" Name 85 "stencil" Decorate 12(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 16(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 19(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 39(color0) NonWritable Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 44(input0) NonWritable Decorate 44(input0) Binding 0 Decorate 44(input0) DescriptorSet 0 Decorate 50(depth) NonWritable Decorate 50(depth) Binding 3 Decorate 50(depth) DescriptorSet 0 Decorate 77(color1) NonReadable Decorate 77(color1) Binding 2 Decorate 77(color1) DescriptorSet 0 Decorate 85(stencil) NonReadable Decorate 85(stencil) Binding 4 Decorate 85(stencil) DescriptorSet 0 Decorate 92 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeVector 6(int) 3 11: TypePointer Input 10(ivec3) 12(gl_GlobalInvocationID): 11(ptr) Variable Input 15: TypePointer Input 7(ivec2) 16(gl_TileOffsetQCOM): 15(ptr) Variable Input 19(gl_TileDimensionQCOM): 11(ptr) Variable Input 23: 6(int) Constant 1 24: 7(ivec2) ConstantComposite 23 23 27: TypeInt 32 1 28: TypeVector 27(int) 2 29: TypePointer Function 28(ivec2) 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 44(input0): 38(ptr) Variable TileAttachmentQCOM 48: TypePointer Function 33(float) 50(depth): 38(ptr) Variable TileAttachmentQCOM 54: 6(int) Constant 0 56: TypePointer Function 6(int) 58: 6(int) Constant 2 61: 33(float) Constant 1065353216 62: 34(fvec4) ConstantComposite 61 61 61 61 66: 33(float) Constant 1051260355 70: 33(float) Constant 1073741824 75: TypeImage 27(int) 2D nonsampled format:Rgba32i 76: TypePointer TileAttachmentQCOM 75 77(color1): 76(ptr) Variable TileAttachmentQCOM 81: TypeVector 27(int) 4 83: TypeImage 6(int) 2D nonsampled format:Rgba32ui 84: TypePointer TileAttachmentQCOM 83 85(stencil): 84(ptr) Variable TileAttachmentQCOM 89: TypeVector 6(int) 4 91: 6(int) Constant 16 92: 10(ivec3) ConstantComposite 91 91 23 4(main): 2 Function None 3 5: Label 9(uoffset): 8(ptr) Variable Function 30(offset): 29(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 43(colorC): 35(ptr) Variable Function 49(d): 48(ptr) Variable Function 57(s): 56(ptr) Variable Function 59(outColor): 35(ptr) Variable Function 68(outDepth): 48(ptr) Variable Function 72(outStencil): 56(ptr) Variable Function 13: 10(ivec3) Load 12(gl_GlobalInvocationID) 14: 7(ivec2) VectorShuffle 13 13 0 1 17: 7(ivec2) Load 16(gl_TileOffsetQCOM) 18: 7(ivec2) Load 16(gl_TileOffsetQCOM) 20: 10(ivec3) Load 19(gl_TileDimensionQCOM) 21: 7(ivec2) VectorShuffle 20 20 0 1 22: 7(ivec2) IAdd 18 21 25: 7(ivec2) ISub 22 24 26: 7(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 14 17 25 Store 9(uoffset) 26 31: 7(ivec2) Load 9(uoffset) 32: 28(ivec2) Bitcast 31 Store 30(offset) 32 40: 37 Load 39(color0) 41: 28(ivec2) Load 30(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 45: 37 Load 44(input0) 46: 28(ivec2) Load 30(offset) 47: 34(fvec4) ImageRead 45 46 Store 43(colorC) 47 51: 37 Load 50(depth) 52: 28(ivec2) Load 30(offset) 53: 34(fvec4) ImageRead 51 52 55: 33(float) CompositeExtract 53 0 Store 49(d) 55 Store 57(s) 58 60: 34(fvec4) Load 36(colorA) 63: 34(fvec4) FAdd 60 62 64: 34(fvec4) Load 43(colorC) 65: 34(fvec4) FAdd 63 64 67: 34(fvec4) VectorTimesScalar 65 66 Store 59(outColor) 67 69: 33(float) Load 49(d) 71: 33(float) FMul 69 70 Store 68(outDepth) 71 73: 6(int) Load 57(s) 74: 6(int) IAdd 73 23 Store 72(outStencil) 74 78: 75 Load 77(color1) 79: 28(ivec2) Load 30(offset) 80: 34(fvec4) Load 59(outColor) 82: 81(ivec4) ConvertFToS 80 ImageWrite 78 79 82 86: 83 Load 85(stencil) 87: 28(ivec2) Load 30(offset) 88: 6(int) Load 72(outStencil) 90: 89(ivec4) CompositeConstruct 88 88 88 88 ImageWrite 86 87 90 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.es.tileShading.1.frag.out000066400000000000000000000203541506534232700246670ustar00rootroot00000000000000spv.qcom.es.tileShading.1.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 100 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 22 26 93 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 NonCoherentTileAttachmentReadQCOM Source ESSL 310 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "o2" Name 20 "offset" Name 22 "gl_TileOffsetQCOM" Name 26 "gl_TileDimensionQCOM" Name 36 "colorA" Name 39 "color0" Name 43 "colorB" Name 45 "colorC" Name 46 "input0" Name 51 "d" Name 52 "depth" Name 59 "s" Name 64 "outColor" Name 80 "color1" Name 86 "stencil" Name 93 "fragColor" Decorate 22(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 22(gl_TileOffsetQCOM) Flat Decorate 26(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 26(gl_TileDimensionQCOM) Flat Decorate 39(color0) NonWritable Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 46(input0) NonWritable Decorate 46(input0) Binding 0 Decorate 46(input0) DescriptorSet 0 Decorate 52(depth) NonWritable Decorate 52(depth) Binding 3 Decorate 52(depth) DescriptorSet 0 Decorate 80(color1) NonReadable Decorate 80(color1) Binding 2 Decorate 80(color1) DescriptorSet 0 Decorate 86(stencil) NonReadable Decorate 86(stencil) Binding 4 Decorate 86(stencil) DescriptorSet 0 Decorate 93(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: 6(int) Constant 8 11: 6(int) Constant 4 12: 7(ivec2) ConstantComposite 10 11 14: 6(int) Constant 2 15: 7(ivec2) ConstantComposite 14 14 17: TypeInt 32 1 18: TypeVector 17(int) 2 19: TypePointer Function 18(ivec2) 21: TypePointer Input 7(ivec2) 22(gl_TileOffsetQCOM): 21(ptr) Variable Input 24: TypeVector 6(int) 3 25: TypePointer Input 24(ivec3) 26(gl_TileDimensionQCOM): 25(ptr) Variable Input 28: 24(ivec3) ConstantComposite 14 14 14 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 46(input0): 38(ptr) Variable TileAttachmentQCOM 50: TypePointer Function 33(float) 52(depth): 38(ptr) Variable TileAttachmentQCOM 56: 6(int) Constant 0 58: TypePointer Function 6(int) 62: TypeVector 17(int) 4 63: TypePointer Function 62(ivec4) 78: TypeImage 17(int) 2D nonsampled format:Rgba32i 79: TypePointer TileAttachmentQCOM 78 80(color1): 79(ptr) Variable TileAttachmentQCOM 84: TypeImage 6(int) 2D nonsampled format:Rgba32ui 85: TypePointer TileAttachmentQCOM 84 86(stencil): 85(ptr) Variable TileAttachmentQCOM 90: TypeVector 6(int) 4 92: TypePointer Output 34(fvec4) 93(fragColor): 92(ptr) Variable Output 96: 33(float) Constant 1065353216 97: 33(float) Constant 0 98: 34(fvec4) ConstantComposite 96 97 97 96 4(main): 2 Function None 3 5: Label 9(o2): 8(ptr) Variable Function 20(offset): 19(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 43(colorB): 35(ptr) Variable Function 45(colorC): 35(ptr) Variable Function 51(d): 50(ptr) Variable Function 59(s): 58(ptr) Variable Function 64(outColor): 63(ptr) Variable Function Store 9(o2) 12 13: 7(ivec2) Load 9(o2) 16: 7(ivec2) UDiv 13 15 Store 9(o2) 16 23: 7(ivec2) Load 22(gl_TileOffsetQCOM) 27: 24(ivec3) Load 26(gl_TileDimensionQCOM) 29: 24(ivec3) UDiv 27 28 30: 7(ivec2) VectorShuffle 29 29 0 1 31: 7(ivec2) IAdd 23 30 32: 18(ivec2) Bitcast 31 Store 20(offset) 32 40: 37 Load 39(color0) 41: 18(ivec2) Load 20(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 44: 34(fvec4) Load 36(colorA) Store 43(colorB) 44 47: 37 Load 46(input0) 48: 18(ivec2) Load 20(offset) 49: 34(fvec4) ImageRead 47 48 Store 45(colorC) 49 53: 37 Load 52(depth) 54: 18(ivec2) Load 20(offset) 55: 34(fvec4) ImageRead 53 54 57: 33(float) CompositeExtract 55 0 Store 51(d) 57 60: 33(float) Load 51(d) 61: 6(int) ConvertFToU 60 Store 59(s) 61 65: 34(fvec4) Load 43(colorB) 66: 34(fvec4) Load 43(colorB) 67: 34(fvec4) FAdd 65 66 68: 34(fvec4) Load 45(colorC) 69: 34(fvec4) FAdd 67 68 70: 33(float) Load 51(d) 71: 34(fvec4) CompositeConstruct 70 70 70 70 72: 34(fvec4) FAdd 69 71 73: 6(int) Load 59(s) 74: 33(float) ConvertUToF 73 75: 34(fvec4) CompositeConstruct 74 74 74 74 76: 34(fvec4) FAdd 72 75 77: 62(ivec4) ConvertFToS 76 Store 64(outColor) 77 81: 78 Load 80(color1) 82: 18(ivec2) Load 20(offset) 83: 62(ivec4) Load 64(outColor) ImageWrite 81 82 83 87: 84 Load 86(stencil) 88: 18(ivec2) Load 20(offset) 89: 62(ivec4) Load 64(outColor) 91: 90(ivec4) Bitcast 89 ImageWrite 87 88 91 94: 62(ivec4) Load 64(outColor) 95: 34(fvec4) ConvertSToF 94 99: 34(fvec4) FAdd 95 98 Store 93(fragColor) 99 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.es.tileShading.2.comp.out000066400000000000000000000176421506534232700247150ustar00rootroot00000000000000spv.qcom.es.tileShading.2.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 12 16 19 ExecutionMode 4 TileShadingRateQCOM 2 2 3 Source ESSL 310 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "uoffset" Name 12 "gl_GlobalInvocationID" Name 16 "gl_TileOffsetQCOM" Name 19 "gl_TileDimensionQCOM" Name 30 "offset" Name 36 "colorA" Name 39 "color0" Name 43 "colorC" Name 44 "input0" Name 49 "d" Name 50 "depth" Name 57 "s" Name 59 "outColor" Name 68 "outDepth" Name 72 "outStencil" Name 77 "color1" Name 85 "stencil" Decorate 12(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 16(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 19(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 39(color0) NonWritable Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 44(input0) NonWritable Decorate 44(input0) Binding 0 Decorate 44(input0) DescriptorSet 0 Decorate 50(depth) NonWritable Decorate 50(depth) Binding 3 Decorate 50(depth) DescriptorSet 0 Decorate 77(color1) NonReadable Decorate 77(color1) Binding 2 Decorate 77(color1) DescriptorSet 0 Decorate 85(stencil) NonReadable Decorate 85(stencil) Binding 4 Decorate 85(stencil) DescriptorSet 0 Decorate 92 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeVector 6(int) 3 11: TypePointer Input 10(ivec3) 12(gl_GlobalInvocationID): 11(ptr) Variable Input 15: TypePointer Input 7(ivec2) 16(gl_TileOffsetQCOM): 15(ptr) Variable Input 19(gl_TileDimensionQCOM): 11(ptr) Variable Input 23: 6(int) Constant 1 24: 7(ivec2) ConstantComposite 23 23 27: TypeInt 32 1 28: TypeVector 27(int) 2 29: TypePointer Function 28(ivec2) 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 44(input0): 38(ptr) Variable TileAttachmentQCOM 48: TypePointer Function 33(float) 50(depth): 38(ptr) Variable TileAttachmentQCOM 54: 6(int) Constant 0 56: TypePointer Function 6(int) 58: 6(int) Constant 2 61: 33(float) Constant 1065353216 62: 34(fvec4) ConstantComposite 61 61 61 61 66: 33(float) Constant 1051260355 70: 33(float) Constant 1073741824 75: TypeImage 27(int) 2D nonsampled format:Rgba32i 76: TypePointer TileAttachmentQCOM 75 77(color1): 76(ptr) Variable TileAttachmentQCOM 81: TypeVector 27(int) 4 83: TypeImage 6(int) 2D nonsampled format:Rgba32ui 84: TypePointer TileAttachmentQCOM 83 85(stencil): 84(ptr) Variable TileAttachmentQCOM 89: TypeVector 6(int) 4 91: 6(int) Constant 16 92: 10(ivec3) ConstantComposite 91 91 23 4(main): 2 Function None 3 5: Label 9(uoffset): 8(ptr) Variable Function 30(offset): 29(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 43(colorC): 35(ptr) Variable Function 49(d): 48(ptr) Variable Function 57(s): 56(ptr) Variable Function 59(outColor): 35(ptr) Variable Function 68(outDepth): 48(ptr) Variable Function 72(outStencil): 56(ptr) Variable Function 13: 10(ivec3) Load 12(gl_GlobalInvocationID) 14: 7(ivec2) VectorShuffle 13 13 0 1 17: 7(ivec2) Load 16(gl_TileOffsetQCOM) 18: 7(ivec2) Load 16(gl_TileOffsetQCOM) 20: 10(ivec3) Load 19(gl_TileDimensionQCOM) 21: 7(ivec2) VectorShuffle 20 20 0 1 22: 7(ivec2) IAdd 18 21 25: 7(ivec2) ISub 22 24 26: 7(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 14 17 25 Store 9(uoffset) 26 31: 7(ivec2) Load 9(uoffset) 32: 28(ivec2) Bitcast 31 Store 30(offset) 32 40: 37 Load 39(color0) 41: 28(ivec2) Load 30(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 45: 37 Load 44(input0) 46: 28(ivec2) Load 30(offset) 47: 34(fvec4) ImageRead 45 46 Store 43(colorC) 47 51: 37 Load 50(depth) 52: 28(ivec2) Load 30(offset) 53: 34(fvec4) ImageRead 51 52 55: 33(float) CompositeExtract 53 0 Store 49(d) 55 Store 57(s) 58 60: 34(fvec4) Load 36(colorA) 63: 34(fvec4) FAdd 60 62 64: 34(fvec4) Load 43(colorC) 65: 34(fvec4) FAdd 63 64 67: 34(fvec4) VectorTimesScalar 65 66 Store 59(outColor) 67 69: 33(float) Load 49(d) 71: 33(float) FMul 69 70 Store 68(outDepth) 71 73: 6(int) Load 57(s) 74: 6(int) IAdd 73 23 Store 72(outStencil) 74 78: 75 Load 77(color1) 79: 28(ivec2) Load 30(offset) 80: 34(fvec4) Load 59(outColor) 82: 81(ivec4) ConvertFToS 80 ImageWrite 78 79 82 86: 83 Load 85(stencil) 87: 28(ivec2) Load 30(offset) 88: 6(int) Load 72(outStencil) 90: 89(ivec4) CompositeConstruct 88 88 88 88 ImageWrite 86 87 90 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.tileShading.0.comp.out000066400000000000000000000204261506534232700242770ustar00rootroot00000000000000spv.qcom.tileShading.0.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 104 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 12 16 19 ExecutionMode 4 LocalSize 16 16 1 Source GLSL 460 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "uoffset" Name 12 "gl_GlobalInvocationID" Name 16 "gl_TileOffsetQCOM" Name 19 "gl_TileDimensionQCOM" Name 30 "offset" Name 36 "colorA" Name 39 "color0" Name 45 "icolorB" Name 48 "color1" Name 52 "colorC" Name 53 "input0" Name 58 "d" Name 59 "depth" Name 66 "s" Name 69 "stencil" Name 75 "outColor" Name 84 "outDepth" Name 88 "outStencil" Decorate 12(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 16(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 19(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 48(color1) Binding 2 Decorate 48(color1) DescriptorSet 0 Decorate 53(input0) Binding 0 Decorate 53(input0) DescriptorSet 0 Decorate 59(depth) Binding 3 Decorate 59(depth) DescriptorSet 0 Decorate 69(stencil) Binding 4 Decorate 69(stencil) DescriptorSet 0 Decorate 103 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeVector 6(int) 3 11: TypePointer Input 10(ivec3) 12(gl_GlobalInvocationID): 11(ptr) Variable Input 15: TypePointer Input 7(ivec2) 16(gl_TileOffsetQCOM): 15(ptr) Variable Input 19(gl_TileDimensionQCOM): 11(ptr) Variable Input 23: 6(int) Constant 1 24: 7(ivec2) ConstantComposite 23 23 27: TypeInt 32 1 28: TypeVector 27(int) 2 29: TypePointer Function 28(ivec2) 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 43: TypeVector 27(int) 4 44: TypePointer Function 43(ivec4) 46: TypeImage 27(int) 2D nonsampled format:Rgba32i 47: TypePointer TileAttachmentQCOM 46 48(color1): 47(ptr) Variable TileAttachmentQCOM 53(input0): 38(ptr) Variable TileAttachmentQCOM 57: TypePointer Function 33(float) 59(depth): 38(ptr) Variable TileAttachmentQCOM 63: 6(int) Constant 0 65: TypePointer Function 6(int) 67: TypeImage 6(int) 2D nonsampled format:Rgba32ui 68: TypePointer TileAttachmentQCOM 67 69(stencil): 68(ptr) Variable TileAttachmentQCOM 72: TypeVector 6(int) 4 82: 33(float) Constant 1051260355 86: 33(float) Constant 1073741824 102: 6(int) Constant 16 103: 10(ivec3) ConstantComposite 102 102 23 4(main): 2 Function None 3 5: Label 9(uoffset): 8(ptr) Variable Function 30(offset): 29(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 45(icolorB): 44(ptr) Variable Function 52(colorC): 35(ptr) Variable Function 58(d): 57(ptr) Variable Function 66(s): 65(ptr) Variable Function 75(outColor): 35(ptr) Variable Function 84(outDepth): 57(ptr) Variable Function 88(outStencil): 65(ptr) Variable Function 13: 10(ivec3) Load 12(gl_GlobalInvocationID) 14: 7(ivec2) VectorShuffle 13 13 0 1 17: 7(ivec2) Load 16(gl_TileOffsetQCOM) 18: 7(ivec2) Load 16(gl_TileOffsetQCOM) 20: 10(ivec3) Load 19(gl_TileDimensionQCOM) 21: 7(ivec2) VectorShuffle 20 20 0 1 22: 7(ivec2) IAdd 18 21 25: 7(ivec2) ISub 22 24 26: 7(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 14 17 25 Store 9(uoffset) 26 31: 7(ivec2) Load 9(uoffset) 32: 28(ivec2) Bitcast 31 Store 30(offset) 32 40: 37 Load 39(color0) 41: 28(ivec2) Load 30(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 49: 46 Load 48(color1) 50: 28(ivec2) Load 30(offset) 51: 43(ivec4) ImageRead 49 50 Store 45(icolorB) 51 54: 37 Load 53(input0) 55: 28(ivec2) Load 30(offset) 56: 34(fvec4) ImageRead 54 55 Store 52(colorC) 56 60: 37 Load 59(depth) 61: 28(ivec2) Load 30(offset) 62: 34(fvec4) ImageRead 60 61 64: 33(float) CompositeExtract 62 0 Store 58(d) 64 70: 67 Load 69(stencil) 71: 28(ivec2) Load 30(offset) 73: 72(ivec4) ImageRead 70 71 74: 6(int) CompositeExtract 73 0 Store 66(s) 74 76: 34(fvec4) Load 36(colorA) 77: 43(ivec4) Load 45(icolorB) 78: 34(fvec4) ConvertSToF 77 79: 34(fvec4) FAdd 76 78 80: 34(fvec4) Load 52(colorC) 81: 34(fvec4) FAdd 79 80 83: 34(fvec4) VectorTimesScalar 81 82 Store 75(outColor) 83 85: 33(float) Load 58(d) 87: 33(float) FMul 85 86 Store 84(outDepth) 87 89: 6(int) Load 66(s) 90: 6(int) IAdd 89 23 Store 88(outStencil) 90 91: 37 Load 39(color0) 92: 28(ivec2) Load 30(offset) 93: 34(fvec4) Load 75(outColor) ImageWrite 91 92 93 94: 37 Load 59(depth) 95: 28(ivec2) Load 30(offset) 96: 33(float) Load 84(outDepth) 97: 34(fvec4) CompositeConstruct 96 96 96 96 ImageWrite 94 95 97 98: 67 Load 69(stencil) 99: 28(ivec2) Load 30(offset) 100: 6(int) Load 88(outStencil) 101: 72(ivec4) CompositeConstruct 100 100 100 100 ImageWrite 98 99 101 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.tileShading.0.frag.out000066400000000000000000000206131506534232700242560ustar00rootroot00000000000000spv.qcom.tileShading.0.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 108 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 22 26 102 ExecutionMode 4 OriginUpperLeft Source GLSL 460 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "o2" Name 20 "offset" Name 22 "gl_TileOffsetQCOM" Name 26 "gl_TileDimensionQCOM" Name 36 "colorA" Name 39 "color0" Name 45 "icolorB" Name 48 "color1" Name 52 "colorB" Name 55 "colorC" Name 56 "input0" Name 61 "d" Name 62 "depth" Name 69 "s" Name 72 "stencil" Name 78 "outColor" Name 102 "fragColor" Decorate 22(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 22(gl_TileOffsetQCOM) Flat Decorate 26(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 26(gl_TileDimensionQCOM) Flat Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 48(color1) Binding 2 Decorate 48(color1) DescriptorSet 0 Decorate 56(input0) Binding 0 Decorate 56(input0) DescriptorSet 0 Decorate 62(depth) Binding 3 Decorate 62(depth) DescriptorSet 0 Decorate 72(stencil) Binding 4 Decorate 72(stencil) DescriptorSet 0 Decorate 102(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: 6(int) Constant 8 11: 6(int) Constant 4 12: 7(ivec2) ConstantComposite 10 11 14: 6(int) Constant 2 15: 7(ivec2) ConstantComposite 14 14 17: TypeInt 32 1 18: TypeVector 17(int) 2 19: TypePointer Function 18(ivec2) 21: TypePointer Input 7(ivec2) 22(gl_TileOffsetQCOM): 21(ptr) Variable Input 24: TypeVector 6(int) 3 25: TypePointer Input 24(ivec3) 26(gl_TileDimensionQCOM): 25(ptr) Variable Input 28: 24(ivec3) ConstantComposite 14 14 14 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 43: TypeVector 17(int) 4 44: TypePointer Function 43(ivec4) 46: TypeImage 17(int) 2D nonsampled format:Rgba32i 47: TypePointer TileAttachmentQCOM 46 48(color1): 47(ptr) Variable TileAttachmentQCOM 56(input0): 38(ptr) Variable TileAttachmentQCOM 60: TypePointer Function 33(float) 62(depth): 38(ptr) Variable TileAttachmentQCOM 66: 6(int) Constant 0 68: TypePointer Function 6(int) 70: TypeImage 6(int) 2D nonsampled format:Rgba32ui 71: TypePointer TileAttachmentQCOM 70 72(stencil): 71(ptr) Variable TileAttachmentQCOM 75: TypeVector 6(int) 4 101: TypePointer Output 34(fvec4) 102(fragColor): 101(ptr) Variable Output 104: 33(float) Constant 1065353216 105: 33(float) Constant 0 106: 34(fvec4) ConstantComposite 104 105 105 104 4(main): 2 Function None 3 5: Label 9(o2): 8(ptr) Variable Function 20(offset): 19(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 45(icolorB): 44(ptr) Variable Function 52(colorB): 35(ptr) Variable Function 55(colorC): 35(ptr) Variable Function 61(d): 60(ptr) Variable Function 69(s): 68(ptr) Variable Function 78(outColor): 35(ptr) Variable Function Store 9(o2) 12 13: 7(ivec2) Load 9(o2) 16: 7(ivec2) UDiv 13 15 Store 9(o2) 16 23: 7(ivec2) Load 22(gl_TileOffsetQCOM) 27: 24(ivec3) Load 26(gl_TileDimensionQCOM) 29: 24(ivec3) UDiv 27 28 30: 7(ivec2) VectorShuffle 29 29 0 1 31: 7(ivec2) IAdd 23 30 32: 18(ivec2) Bitcast 31 Store 20(offset) 32 40: 37 Load 39(color0) 41: 18(ivec2) Load 20(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 49: 46 Load 48(color1) 50: 18(ivec2) Load 20(offset) 51: 43(ivec4) ImageRead 49 50 Store 45(icolorB) 51 53: 43(ivec4) Load 45(icolorB) 54: 34(fvec4) ConvertSToF 53 Store 52(colorB) 54 57: 37 Load 56(input0) 58: 18(ivec2) Load 20(offset) 59: 34(fvec4) ImageRead 57 58 Store 55(colorC) 59 63: 37 Load 62(depth) 64: 18(ivec2) Load 20(offset) 65: 34(fvec4) ImageRead 63 64 67: 33(float) CompositeExtract 65 0 Store 61(d) 67 73: 70 Load 72(stencil) 74: 18(ivec2) Load 20(offset) 76: 75(ivec4) ImageRead 73 74 77: 6(int) CompositeExtract 76 0 Store 69(s) 77 79: 34(fvec4) Load 52(colorB) 80: 34(fvec4) Load 52(colorB) 81: 34(fvec4) FAdd 79 80 82: 34(fvec4) Load 55(colorC) 83: 34(fvec4) FAdd 81 82 84: 33(float) Load 61(d) 85: 34(fvec4) CompositeConstruct 84 84 84 84 86: 34(fvec4) FAdd 83 85 87: 6(int) Load 69(s) 88: 33(float) ConvertUToF 87 89: 34(fvec4) CompositeConstruct 88 88 88 88 90: 34(fvec4) FAdd 86 89 Store 78(outColor) 90 91: 37 Load 39(color0) 92: 18(ivec2) Load 20(offset) 93: 34(fvec4) Load 78(outColor) ImageWrite 91 92 93 94: 37 Load 62(depth) 95: 18(ivec2) Load 20(offset) 96: 34(fvec4) Load 78(outColor) ImageWrite 94 95 96 97: 70 Load 72(stencil) 98: 18(ivec2) Load 20(offset) 99: 34(fvec4) Load 78(outColor) 100: 75(ivec4) ConvertFToU 99 ImageWrite 97 98 100 103: 34(fvec4) Load 78(outColor) 107: 34(fvec4) FAdd 103 106 Store 102(fragColor) 107 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.tileShading.1.comp.out000066400000000000000000000204361506534232700243010ustar00rootroot00000000000000spv.qcom.tileShading.1.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 104 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 12 16 19 ExecutionMode 4 TileShadingRateQCOM 2 2 3 Source GLSL 460 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "uoffset" Name 12 "gl_GlobalInvocationID" Name 16 "gl_TileOffsetQCOM" Name 19 "gl_TileDimensionQCOM" Name 30 "offset" Name 36 "colorA" Name 39 "color0" Name 45 "icolorB" Name 48 "color1" Name 52 "colorC" Name 53 "input0" Name 58 "d" Name 59 "depth" Name 66 "s" Name 69 "stencil" Name 75 "outColor" Name 84 "outDepth" Name 88 "outStencil" Decorate 12(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 16(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 19(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 48(color1) Binding 2 Decorate 48(color1) DescriptorSet 0 Decorate 53(input0) Binding 0 Decorate 53(input0) DescriptorSet 0 Decorate 59(depth) Binding 3 Decorate 59(depth) DescriptorSet 0 Decorate 69(stencil) Binding 4 Decorate 69(stencil) DescriptorSet 0 Decorate 103 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeVector 6(int) 3 11: TypePointer Input 10(ivec3) 12(gl_GlobalInvocationID): 11(ptr) Variable Input 15: TypePointer Input 7(ivec2) 16(gl_TileOffsetQCOM): 15(ptr) Variable Input 19(gl_TileDimensionQCOM): 11(ptr) Variable Input 23: 6(int) Constant 1 24: 7(ivec2) ConstantComposite 23 23 27: TypeInt 32 1 28: TypeVector 27(int) 2 29: TypePointer Function 28(ivec2) 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 43: TypeVector 27(int) 4 44: TypePointer Function 43(ivec4) 46: TypeImage 27(int) 2D nonsampled format:Rgba32i 47: TypePointer TileAttachmentQCOM 46 48(color1): 47(ptr) Variable TileAttachmentQCOM 53(input0): 38(ptr) Variable TileAttachmentQCOM 57: TypePointer Function 33(float) 59(depth): 38(ptr) Variable TileAttachmentQCOM 63: 6(int) Constant 0 65: TypePointer Function 6(int) 67: TypeImage 6(int) 2D nonsampled format:Rgba32ui 68: TypePointer TileAttachmentQCOM 67 69(stencil): 68(ptr) Variable TileAttachmentQCOM 72: TypeVector 6(int) 4 82: 33(float) Constant 1051260355 86: 33(float) Constant 1073741824 102: 6(int) Constant 16 103: 10(ivec3) ConstantComposite 102 102 23 4(main): 2 Function None 3 5: Label 9(uoffset): 8(ptr) Variable Function 30(offset): 29(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 45(icolorB): 44(ptr) Variable Function 52(colorC): 35(ptr) Variable Function 58(d): 57(ptr) Variable Function 66(s): 65(ptr) Variable Function 75(outColor): 35(ptr) Variable Function 84(outDepth): 57(ptr) Variable Function 88(outStencil): 65(ptr) Variable Function 13: 10(ivec3) Load 12(gl_GlobalInvocationID) 14: 7(ivec2) VectorShuffle 13 13 0 1 17: 7(ivec2) Load 16(gl_TileOffsetQCOM) 18: 7(ivec2) Load 16(gl_TileOffsetQCOM) 20: 10(ivec3) Load 19(gl_TileDimensionQCOM) 21: 7(ivec2) VectorShuffle 20 20 0 1 22: 7(ivec2) IAdd 18 21 25: 7(ivec2) ISub 22 24 26: 7(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 14 17 25 Store 9(uoffset) 26 31: 7(ivec2) Load 9(uoffset) 32: 28(ivec2) Bitcast 31 Store 30(offset) 32 40: 37 Load 39(color0) 41: 28(ivec2) Load 30(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 49: 46 Load 48(color1) 50: 28(ivec2) Load 30(offset) 51: 43(ivec4) ImageRead 49 50 Store 45(icolorB) 51 54: 37 Load 53(input0) 55: 28(ivec2) Load 30(offset) 56: 34(fvec4) ImageRead 54 55 Store 52(colorC) 56 60: 37 Load 59(depth) 61: 28(ivec2) Load 30(offset) 62: 34(fvec4) ImageRead 60 61 64: 33(float) CompositeExtract 62 0 Store 58(d) 64 70: 67 Load 69(stencil) 71: 28(ivec2) Load 30(offset) 73: 72(ivec4) ImageRead 70 71 74: 6(int) CompositeExtract 73 0 Store 66(s) 74 76: 34(fvec4) Load 36(colorA) 77: 43(ivec4) Load 45(icolorB) 78: 34(fvec4) ConvertSToF 77 79: 34(fvec4) FAdd 76 78 80: 34(fvec4) Load 52(colorC) 81: 34(fvec4) FAdd 79 80 83: 34(fvec4) VectorTimesScalar 81 82 Store 75(outColor) 83 85: 33(float) Load 58(d) 87: 33(float) FMul 85 86 Store 84(outDepth) 87 89: 6(int) Load 66(s) 90: 6(int) IAdd 89 23 Store 88(outStencil) 90 91: 37 Load 39(color0) 92: 28(ivec2) Load 30(offset) 93: 34(fvec4) Load 75(outColor) ImageWrite 91 92 93 94: 37 Load 59(depth) 95: 28(ivec2) Load 30(offset) 96: 33(float) Load 84(outDepth) 97: 34(fvec4) CompositeConstruct 96 96 96 96 ImageWrite 94 95 97 98: 67 Load 69(stencil) 99: 28(ivec2) Load 30(offset) 100: 6(int) Load 88(outStencil) 101: 72(ivec4) CompositeConstruct 100 100 100 100 ImageWrite 98 99 101 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qcom.tileShading.1.frag.out000066400000000000000000000207331506534232700242620ustar00rootroot00000000000000spv.qcom.tileShading.1.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 108 Capability Shader Capability TileShadingQCOM Extension "SPV_QCOM_tile_shading" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 22 26 102 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 NonCoherentTileAttachmentReadQCOM Source GLSL 460 SourceExtension "GL_QCOM_tile_shading" Name 4 "main" Name 9 "o2" Name 20 "offset" Name 22 "gl_TileOffsetQCOM" Name 26 "gl_TileDimensionQCOM" Name 36 "colorA" Name 39 "color0" Name 45 "icolorB" Name 48 "color1" Name 52 "colorB" Name 55 "colorC" Name 56 "input0" Name 61 "d" Name 62 "depth" Name 69 "s" Name 72 "stencil" Name 78 "outColor" Name 102 "fragColor" Decorate 22(gl_TileOffsetQCOM) BuiltIn TileOffsetQCOM Decorate 22(gl_TileOffsetQCOM) Flat Decorate 26(gl_TileDimensionQCOM) BuiltIn TileDimensionQCOM Decorate 26(gl_TileDimensionQCOM) Flat Decorate 39(color0) Binding 1 Decorate 39(color0) DescriptorSet 0 Decorate 48(color1) Binding 2 Decorate 48(color1) DescriptorSet 0 Decorate 56(input0) Binding 0 Decorate 56(input0) DescriptorSet 0 Decorate 62(depth) Binding 3 Decorate 62(depth) DescriptorSet 0 Decorate 72(stencil) Binding 4 Decorate 72(stencil) DescriptorSet 0 Decorate 102(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: 6(int) Constant 8 11: 6(int) Constant 4 12: 7(ivec2) ConstantComposite 10 11 14: 6(int) Constant 2 15: 7(ivec2) ConstantComposite 14 14 17: TypeInt 32 1 18: TypeVector 17(int) 2 19: TypePointer Function 18(ivec2) 21: TypePointer Input 7(ivec2) 22(gl_TileOffsetQCOM): 21(ptr) Variable Input 24: TypeVector 6(int) 3 25: TypePointer Input 24(ivec3) 26(gl_TileDimensionQCOM): 25(ptr) Variable Input 28: 24(ivec3) ConstantComposite 14 14 14 33: TypeFloat 32 34: TypeVector 33(float) 4 35: TypePointer Function 34(fvec4) 37: TypeImage 33(float) 2D nonsampled format:Rgba32f 38: TypePointer TileAttachmentQCOM 37 39(color0): 38(ptr) Variable TileAttachmentQCOM 43: TypeVector 17(int) 4 44: TypePointer Function 43(ivec4) 46: TypeImage 17(int) 2D nonsampled format:Rgba32i 47: TypePointer TileAttachmentQCOM 46 48(color1): 47(ptr) Variable TileAttachmentQCOM 56(input0): 38(ptr) Variable TileAttachmentQCOM 60: TypePointer Function 33(float) 62(depth): 38(ptr) Variable TileAttachmentQCOM 66: 6(int) Constant 0 68: TypePointer Function 6(int) 70: TypeImage 6(int) 2D nonsampled format:Rgba32ui 71: TypePointer TileAttachmentQCOM 70 72(stencil): 71(ptr) Variable TileAttachmentQCOM 75: TypeVector 6(int) 4 101: TypePointer Output 34(fvec4) 102(fragColor): 101(ptr) Variable Output 104: 33(float) Constant 1065353216 105: 33(float) Constant 0 106: 34(fvec4) ConstantComposite 104 105 105 104 4(main): 2 Function None 3 5: Label 9(o2): 8(ptr) Variable Function 20(offset): 19(ptr) Variable Function 36(colorA): 35(ptr) Variable Function 45(icolorB): 44(ptr) Variable Function 52(colorB): 35(ptr) Variable Function 55(colorC): 35(ptr) Variable Function 61(d): 60(ptr) Variable Function 69(s): 68(ptr) Variable Function 78(outColor): 35(ptr) Variable Function Store 9(o2) 12 13: 7(ivec2) Load 9(o2) 16: 7(ivec2) UDiv 13 15 Store 9(o2) 16 23: 7(ivec2) Load 22(gl_TileOffsetQCOM) 27: 24(ivec3) Load 26(gl_TileDimensionQCOM) 29: 24(ivec3) UDiv 27 28 30: 7(ivec2) VectorShuffle 29 29 0 1 31: 7(ivec2) IAdd 23 30 32: 18(ivec2) Bitcast 31 Store 20(offset) 32 40: 37 Load 39(color0) 41: 18(ivec2) Load 20(offset) 42: 34(fvec4) ImageRead 40 41 Store 36(colorA) 42 49: 46 Load 48(color1) 50: 18(ivec2) Load 20(offset) 51: 43(ivec4) ImageRead 49 50 Store 45(icolorB) 51 53: 43(ivec4) Load 45(icolorB) 54: 34(fvec4) ConvertSToF 53 Store 52(colorB) 54 57: 37 Load 56(input0) 58: 18(ivec2) Load 20(offset) 59: 34(fvec4) ImageRead 57 58 Store 55(colorC) 59 63: 37 Load 62(depth) 64: 18(ivec2) Load 20(offset) 65: 34(fvec4) ImageRead 63 64 67: 33(float) CompositeExtract 65 0 Store 61(d) 67 73: 70 Load 72(stencil) 74: 18(ivec2) Load 20(offset) 76: 75(ivec4) ImageRead 73 74 77: 6(int) CompositeExtract 76 0 Store 69(s) 77 79: 34(fvec4) Load 52(colorB) 80: 34(fvec4) Load 52(colorB) 81: 34(fvec4) FAdd 79 80 82: 34(fvec4) Load 55(colorC) 83: 34(fvec4) FAdd 81 82 84: 33(float) Load 61(d) 85: 34(fvec4) CompositeConstruct 84 84 84 84 86: 34(fvec4) FAdd 83 85 87: 6(int) Load 69(s) 88: 33(float) ConvertUToF 87 89: 34(fvec4) CompositeConstruct 88 88 88 88 90: 34(fvec4) FAdd 86 89 Store 78(outColor) 90 91: 37 Load 39(color0) 92: 18(ivec2) Load 20(offset) 93: 34(fvec4) Load 78(outColor) ImageWrite 91 92 93 94: 37 Load 62(depth) 95: 18(ivec2) Load 20(offset) 96: 34(fvec4) Load 78(outColor) ImageWrite 94 95 96 97: 70 Load 72(stencil) 98: 18(ivec2) Load 20(offset) 99: 34(fvec4) Load 78(outColor) 100: 75(ivec4) ConvertFToU 99 ImageWrite 97 98 100 103: 34(fvec4) Load 78(outColor) 107: 34(fvec4) FAdd 103 106 Store 102(fragColor) 107 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.qualifiers.vert.out000066400000000000000000000050041506534232700231310ustar00rootroot00000000000000spv.qualifiers.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 11 13 15 17 19 Source GLSL 430 Name 4 "main" Name 9 "outVc" Name 11 "inV" Name 13 "outVs" Name 15 "outVf" Name 17 "outVn" Name 19 "outVcn" Decorate 9(outVc) Centroid Decorate 9(outVc) Location 0 Decorate 11(inV) Location 0 Decorate 13(outVs) Location 1 Decorate 15(outVf) Flat Decorate 15(outVf) Location 2 Decorate 17(outVn) NoPerspective Decorate 17(outVn) Location 3 Decorate 19(outVcn) NoPerspective Decorate 19(outVcn) Centroid Decorate 19(outVcn) Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(outVc): 8(ptr) Variable Output 10: TypePointer Input 7(fvec4) 11(inV): 10(ptr) Variable Input 13(outVs): 8(ptr) Variable Output 15(outVf): 8(ptr) Variable Output 17(outVn): 8(ptr) Variable Output 19(outVcn): 8(ptr) Variable Output 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(inV) Store 9(outVc) 12 14: 7(fvec4) Load 11(inV) Store 13(outVs) 14 16: 7(fvec4) Load 11(inV) Store 15(outVf) 16 18: 7(fvec4) Load 11(inV) Store 17(outVn) 18 20: 7(fvec4) Load 11(inV) Store 19(outVcn) 20 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.queryL.frag.out000066400000000000000000000420521506534232700222110ustar00rootroot00000000000000spv.queryL.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 224 Capability Shader Capability SampledRect Capability Sampled1D Capability SampledCubeArray Capability SampledBuffer Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 430 Name 4 "main" Name 9 "lod" Name 13 "samp1D" Name 16 "pf" Name 23 "isamp2D" Name 25 "pf2" Name 34 "usamp3D" Name 38 "pf3" Name 46 "sampCube" Name 55 "isamp1DA" Name 64 "usamp2DA" Name 73 "isampCubeA" Name 82 "samp1Ds" Name 91 "samp2Ds" Name 100 "sampCubes" Name 109 "samp1DAs" Name 118 "samp2DAs" Name 127 "sampCubeAs" Name 134 "levels" Name 141 "usamp2D" Name 150 "isamp3D" Name 159 "isampCube" Name 173 "samp2DA" Name 182 "usampCubeA" Name 219 "sampBuf" Name 223 "sampRect" Decorate 13(samp1D) Binding 0 Decorate 13(samp1D) DescriptorSet 0 Decorate 23(isamp2D) Binding 1 Decorate 23(isamp2D) DescriptorSet 0 Decorate 34(usamp3D) Binding 4 Decorate 34(usamp3D) DescriptorSet 0 Decorate 46(sampCube) Binding 5 Decorate 46(sampCube) DescriptorSet 0 Decorate 55(isamp1DA) Binding 7 Decorate 55(isamp1DA) DescriptorSet 0 Decorate 64(usamp2DA) Binding 9 Decorate 64(usamp2DA) DescriptorSet 0 Decorate 73(isampCubeA) Binding 10 Decorate 73(isampCubeA) DescriptorSet 0 Decorate 82(samp1Ds) Binding 12 Decorate 82(samp1Ds) DescriptorSet 0 Decorate 91(samp2Ds) Binding 13 Decorate 91(samp2Ds) DescriptorSet 0 Decorate 100(sampCubes) Binding 14 Decorate 100(sampCubes) DescriptorSet 0 Decorate 109(samp1DAs) Binding 15 Decorate 109(samp1DAs) DescriptorSet 0 Decorate 118(samp2DAs) Binding 16 Decorate 118(samp2DAs) DescriptorSet 0 Decorate 127(sampCubeAs) Binding 17 Decorate 127(sampCubeAs) DescriptorSet 0 Decorate 141(usamp2D) Binding 2 Decorate 141(usamp2D) DescriptorSet 0 Decorate 150(isamp3D) Binding 3 Decorate 150(isamp3D) DescriptorSet 0 Decorate 159(isampCube) Binding 6 Decorate 159(isampCube) DescriptorSet 0 Decorate 173(samp2DA) Binding 8 Decorate 173(samp2DA) DescriptorSet 0 Decorate 182(usampCubeA) Binding 11 Decorate 182(usampCubeA) DescriptorSet 0 Decorate 219(sampBuf) Binding 0 Decorate 219(sampBuf) DescriptorSet 0 Decorate 223(sampRect) Binding 0 Decorate 223(sampRect) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Function 7(fvec2) 10: TypeImage 6(float) 1D sampled format:Unknown 11: TypeSampledImage 10 12: TypePointer UniformConstant 11 13(samp1D): 12(ptr) Variable UniformConstant 15: TypePointer Function 6(float) 19: TypeInt 32 1 20: TypeImage 19(int) 2D sampled format:Unknown 21: TypeSampledImage 20 22: TypePointer UniformConstant 21 23(isamp2D): 22(ptr) Variable UniformConstant 30: TypeInt 32 0 31: TypeImage 30(int) 3D sampled format:Unknown 32: TypeSampledImage 31 33: TypePointer UniformConstant 32 34(usamp3D): 33(ptr) Variable UniformConstant 36: TypeVector 6(float) 3 37: TypePointer Function 36(fvec3) 43: TypeImage 6(float) Cube sampled format:Unknown 44: TypeSampledImage 43 45: TypePointer UniformConstant 44 46(sampCube): 45(ptr) Variable UniformConstant 52: TypeImage 19(int) 1D array sampled format:Unknown 53: TypeSampledImage 52 54: TypePointer UniformConstant 53 55(isamp1DA): 54(ptr) Variable UniformConstant 61: TypeImage 30(int) 2D array sampled format:Unknown 62: TypeSampledImage 61 63: TypePointer UniformConstant 62 64(usamp2DA): 63(ptr) Variable UniformConstant 70: TypeImage 19(int) Cube array sampled format:Unknown 71: TypeSampledImage 70 72: TypePointer UniformConstant 71 73(isampCubeA): 72(ptr) Variable UniformConstant 79: TypeImage 6(float) 1D depth sampled format:Unknown 80: TypeSampledImage 79 81: TypePointer UniformConstant 80 82(samp1Ds): 81(ptr) Variable UniformConstant 88: TypeImage 6(float) 2D depth sampled format:Unknown 89: TypeSampledImage 88 90: TypePointer UniformConstant 89 91(samp2Ds): 90(ptr) Variable UniformConstant 97: TypeImage 6(float) Cube depth sampled format:Unknown 98: TypeSampledImage 97 99: TypePointer UniformConstant 98 100(sampCubes): 99(ptr) Variable UniformConstant 106: TypeImage 6(float) 1D depth array sampled format:Unknown 107: TypeSampledImage 106 108: TypePointer UniformConstant 107 109(samp1DAs): 108(ptr) Variable UniformConstant 115: TypeImage 6(float) 2D depth array sampled format:Unknown 116: TypeSampledImage 115 117: TypePointer UniformConstant 116 118(samp2DAs): 117(ptr) Variable UniformConstant 124: TypeImage 6(float) Cube depth array sampled format:Unknown 125: TypeSampledImage 124 126: TypePointer UniformConstant 125 127(sampCubeAs): 126(ptr) Variable UniformConstant 133: TypePointer Function 19(int) 138: TypeImage 30(int) 2D sampled format:Unknown 139: TypeSampledImage 138 140: TypePointer UniformConstant 139 141(usamp2D): 140(ptr) Variable UniformConstant 147: TypeImage 19(int) 3D sampled format:Unknown 148: TypeSampledImage 147 149: TypePointer UniformConstant 148 150(isamp3D): 149(ptr) Variable UniformConstant 156: TypeImage 19(int) Cube sampled format:Unknown 157: TypeSampledImage 156 158: TypePointer UniformConstant 157 159(isampCube): 158(ptr) Variable UniformConstant 170: TypeImage 6(float) 2D array sampled format:Unknown 171: TypeSampledImage 170 172: TypePointer UniformConstant 171 173(samp2DA): 172(ptr) Variable UniformConstant 179: TypeImage 30(int) Cube array sampled format:Unknown 180: TypeSampledImage 179 181: TypePointer UniformConstant 180 182(usampCubeA): 181(ptr) Variable UniformConstant 216: TypeImage 6(float) Buffer sampled format:Unknown 217: TypeSampledImage 216 218: TypePointer UniformConstant 217 219(sampBuf): 218(ptr) Variable UniformConstant 220: TypeImage 6(float) Rect sampled format:Unknown 221: TypeSampledImage 220 222: TypePointer UniformConstant 221 223(sampRect): 222(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(lod): 8(ptr) Variable Function 16(pf): 15(ptr) Variable Function 25(pf2): 8(ptr) Variable Function 38(pf3): 37(ptr) Variable Function 134(levels): 133(ptr) Variable Function 14: 11 Load 13(samp1D) 17: 6(float) Load 16(pf) 18: 7(fvec2) ImageQueryLod 14 17 Store 9(lod) 18 24: 21 Load 23(isamp2D) 26: 7(fvec2) Load 25(pf2) 27: 7(fvec2) ImageQueryLod 24 26 28: 7(fvec2) Load 9(lod) 29: 7(fvec2) FAdd 28 27 Store 9(lod) 29 35: 32 Load 34(usamp3D) 39: 36(fvec3) Load 38(pf3) 40: 7(fvec2) ImageQueryLod 35 39 41: 7(fvec2) Load 9(lod) 42: 7(fvec2) FAdd 41 40 Store 9(lod) 42 47: 44 Load 46(sampCube) 48: 36(fvec3) Load 38(pf3) 49: 7(fvec2) ImageQueryLod 47 48 50: 7(fvec2) Load 9(lod) 51: 7(fvec2) FAdd 50 49 Store 9(lod) 51 56: 53 Load 55(isamp1DA) 57: 6(float) Load 16(pf) 58: 7(fvec2) ImageQueryLod 56 57 59: 7(fvec2) Load 9(lod) 60: 7(fvec2) FAdd 59 58 Store 9(lod) 60 65: 62 Load 64(usamp2DA) 66: 7(fvec2) Load 25(pf2) 67: 7(fvec2) ImageQueryLod 65 66 68: 7(fvec2) Load 9(lod) 69: 7(fvec2) FAdd 68 67 Store 9(lod) 69 74: 71 Load 73(isampCubeA) 75: 36(fvec3) Load 38(pf3) 76: 7(fvec2) ImageQueryLod 74 75 77: 7(fvec2) Load 9(lod) 78: 7(fvec2) FAdd 77 76 Store 9(lod) 78 83: 80 Load 82(samp1Ds) 84: 6(float) Load 16(pf) 85: 7(fvec2) ImageQueryLod 83 84 86: 7(fvec2) Load 9(lod) 87: 7(fvec2) FAdd 86 85 Store 9(lod) 87 92: 89 Load 91(samp2Ds) 93: 7(fvec2) Load 25(pf2) 94: 7(fvec2) ImageQueryLod 92 93 95: 7(fvec2) Load 9(lod) 96: 7(fvec2) FAdd 95 94 Store 9(lod) 96 101: 98 Load 100(sampCubes) 102: 36(fvec3) Load 38(pf3) 103: 7(fvec2) ImageQueryLod 101 102 104: 7(fvec2) Load 9(lod) 105: 7(fvec2) FAdd 104 103 Store 9(lod) 105 110: 107 Load 109(samp1DAs) 111: 6(float) Load 16(pf) 112: 7(fvec2) ImageQueryLod 110 111 113: 7(fvec2) Load 9(lod) 114: 7(fvec2) FAdd 113 112 Store 9(lod) 114 119: 116 Load 118(samp2DAs) 120: 7(fvec2) Load 25(pf2) 121: 7(fvec2) ImageQueryLod 119 120 122: 7(fvec2) Load 9(lod) 123: 7(fvec2) FAdd 122 121 Store 9(lod) 123 128: 125 Load 127(sampCubeAs) 129: 36(fvec3) Load 38(pf3) 130: 7(fvec2) ImageQueryLod 128 129 131: 7(fvec2) Load 9(lod) 132: 7(fvec2) FAdd 131 130 Store 9(lod) 132 135: 11 Load 13(samp1D) 136: 10 Image 135 137: 19(int) ImageQueryLevels 136 Store 134(levels) 137 142: 139 Load 141(usamp2D) 143: 138 Image 142 144: 19(int) ImageQueryLevels 143 145: 19(int) Load 134(levels) 146: 19(int) IAdd 145 144 Store 134(levels) 146 151: 148 Load 150(isamp3D) 152: 147 Image 151 153: 19(int) ImageQueryLevels 152 154: 19(int) Load 134(levels) 155: 19(int) IAdd 154 153 Store 134(levels) 155 160: 157 Load 159(isampCube) 161: 156 Image 160 162: 19(int) ImageQueryLevels 161 163: 19(int) Load 134(levels) 164: 19(int) IAdd 163 162 Store 134(levels) 164 165: 53 Load 55(isamp1DA) 166: 52 Image 165 167: 19(int) ImageQueryLevels 166 168: 19(int) Load 134(levels) 169: 19(int) IAdd 168 167 Store 134(levels) 169 174: 171 Load 173(samp2DA) 175: 170 Image 174 176: 19(int) ImageQueryLevels 175 177: 19(int) Load 134(levels) 178: 19(int) IAdd 177 176 Store 134(levels) 178 183: 180 Load 182(usampCubeA) 184: 179 Image 183 185: 19(int) ImageQueryLevels 184 186: 19(int) Load 134(levels) 187: 19(int) IAdd 186 185 Store 134(levels) 187 188: 80 Load 82(samp1Ds) 189: 79 Image 188 190: 19(int) ImageQueryLevels 189 Store 134(levels) 190 191: 89 Load 91(samp2Ds) 192: 88 Image 191 193: 19(int) ImageQueryLevels 192 194: 19(int) Load 134(levels) 195: 19(int) IAdd 194 193 Store 134(levels) 195 196: 98 Load 100(sampCubes) 197: 97 Image 196 198: 19(int) ImageQueryLevels 197 199: 19(int) Load 134(levels) 200: 19(int) IAdd 199 198 Store 134(levels) 200 201: 107 Load 109(samp1DAs) 202: 106 Image 201 203: 19(int) ImageQueryLevels 202 204: 19(int) Load 134(levels) 205: 19(int) IAdd 204 203 Store 134(levels) 205 206: 116 Load 118(samp2DAs) 207: 115 Image 206 208: 19(int) ImageQueryLevels 207 209: 19(int) Load 134(levels) 210: 19(int) IAdd 209 208 Store 134(levels) 210 211: 125 Load 127(sampCubeAs) 212: 124 Image 211 213: 19(int) ImageQueryLevels 212 214: 19(int) Load 134(levels) 215: 19(int) IAdd 214 213 Store 134(levels) 215 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.queueFamilyScope.comp.out000066400000000000000000000037671506534232700242410ustar00rootroot00000000000000spv.queueFamilyScope.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader Capability VulkanMemoryModelKHR Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 7 "Buffer" MemberName 7(Buffer) 0 "a" Name 9 "A" Decorate 7(Buffer) Block MemberDecorate 7(Buffer) 0 Offset 0 Decorate 9(A) Binding 0 Decorate 9(A) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7(Buffer): TypeStruct 6(int) 8: TypePointer StorageBuffer 7(Buffer) 9(A): 8(ptr) Variable StorageBuffer 10: TypeInt 32 1 11: 10(int) Constant 0 12: TypePointer StorageBuffer 6(int) 14: 10(int) Constant 5 15: 10(int) Constant 64 16: 10(int) Constant 2 17: 6(int) Constant 1 18: 6(int) Constant 0 19: 6(int) Constant 66 4(main): 2 Function None 3 5: Label 13: 12(ptr) AccessChain 9(A) 11 20: 6(int) AtomicLoad 13 14 19 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.rankShift.comp.out000066400000000000000000000055751506534232700227110ustar00rootroot00000000000000spv.rankShift.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader Capability Int64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 54 1 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" Name 4 "main" Name 8 "result" Name 11 "arg0" Name 15 "arg1" Decorate 11(arg0) Location 4 Decorate 11(arg0) Binding 0 Decorate 11(arg0) DescriptorSet 0 Decorate 15(arg1) Location 5 Decorate 15(arg1) Binding 1 Decorate 15(arg1) DescriptorSet 0 Decorate 32 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 64 0 7: TypePointer Function 6(int64_t) 9: TypeInt 64 1 10: TypePointer UniformConstant 9(int64_t) 11(arg0): 10(ptr) Variable UniformConstant 13: TypeInt 32 0 14: TypePointer UniformConstant 13(int) 15(arg1): 14(ptr) Variable UniformConstant 29: TypeVector 13(int) 3 30: 13(int) Constant 54 31: 13(int) Constant 1 32: 29(ivec3) ConstantComposite 30 31 31 4(main): 2 Function None 3 5: Label 8(result): 7(ptr) Variable Function 12: 9(int64_t) Load 11(arg0) 16: 13(int) Load 15(arg1) 17: 9(int64_t) ShiftLeftLogical 12 16 18: 6(int64_t) Bitcast 17 Store 8(result) 18 19: 9(int64_t) Load 11(arg0) 20: 13(int) Load 15(arg1) 21: 9(int64_t) ShiftRightArithmetic 19 20 22: 6(int64_t) Bitcast 21 Store 8(result) 22 23: 13(int) Load 15(arg1) 24: 6(int64_t) Load 8(result) 25: 6(int64_t) ShiftLeftLogical 24 23 Store 8(result) 25 26: 13(int) Load 15(arg1) 27: 6(int64_t) Load 8(result) 28: 6(int64_t) ShiftRightLogical 27 26 Store 8(result) 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.register.autoassign-2.frag.out000066400000000000000000000100241506534232700250610ustar00rootroot00000000000000spv.register.autoassign-2.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 47 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 44 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 12 "@main(struct-PS_OUTPUT-vf41;" Name 11 "psout" Name 18 "g_tScene[0]" Name 22 "g_tSamp" Name 31 "g_tScene[1]" Name 39 "psout" Name 40 "param" Name 44 "psout.Color" Decorate 18(g_tScene[0]) Binding 10 Decorate 18(g_tScene[0]) DescriptorSet 0 Decorate 22(g_tSamp) Binding 5 Decorate 22(g_tSamp) DescriptorSet 0 Decorate 31(g_tScene[1]) Binding 11 Decorate 31(g_tScene[1]) DescriptorSet 0 Decorate 44(psout.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypePointer Function 8(PS_OUTPUT) 10: TypeFunction 2 9(ptr) 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypeImage 6(float) 2D sampled format:Unknown 17: TypePointer UniformConstant 16 18(g_tScene[0]): 17(ptr) Variable UniformConstant 20: TypeSampler 21: TypePointer UniformConstant 20 22(g_tSamp): 21(ptr) Variable UniformConstant 24: TypeSampledImage 16 26: TypeVector 6(float) 2 27: 6(float) Constant 1050253722 28: 6(float) Constant 1053609165 29: 26(fvec2) ConstantComposite 27 28 31(g_tScene[1]): 17(ptr) Variable UniformConstant 37: TypePointer Function 7(fvec4) 43: TypePointer Output 7(fvec4) 44(psout.Color): 43(ptr) Variable Output 4(main): 2 Function None 3 5: Label 39(psout): 9(ptr) Variable Function 40(param): 9(ptr) Variable Function 41: 2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 40(param) 42:8(PS_OUTPUT) Load 40(param) Store 39(psout) 42 45: 37(ptr) AccessChain 39(psout) 15 46: 7(fvec4) Load 45 Store 44(psout.Color) 46 Return FunctionEnd 12(@main(struct-PS_OUTPUT-vf41;): 2 Function None 10 11(psout): 9(ptr) FunctionParameter 13: Label 19: 16 Load 18(g_tScene[0]) 23: 20 Load 22(g_tSamp) 25: 24 SampledImage 19 23 30: 7(fvec4) ImageSampleImplicitLod 25 29 32: 16 Load 31(g_tScene[1]) 33: 20 Load 22(g_tSamp) 34: 24 SampledImage 32 33 35: 7(fvec4) ImageSampleImplicitLod 34 29 36: 7(fvec4) FAdd 30 35 38: 37(ptr) AccessChain 11(psout) 15 Store 38 36 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.register.autoassign.frag.out000066400000000000000000000313621506534232700247320ustar00rootroot00000000000000spv.register.autoassign.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 155 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main_ep" 151 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main_ep" Name 9 "Func1(" Name 11 "Func2(" Name 13 "Func2_unused(" Name 15 "PS_OUTPUT" MemberName 15(PS_OUTPUT) 0 "Color" Name 17 "@main_ep(" Name 21 "g_tTex1" Name 25 "g_sSamp1" Name 31 "g_tTex2" Name 33 "g_sSamp2" Name 43 "g_tTex3" Name 50 "g_sSamp3" Name 68 "g_tTex4" Name 73 "g_sSamp4" Name 88 "g_tTex5" Name 90 "g_sSamp5" Name 97 "MyStruct_t" MemberName 97(MyStruct_t) 0 "a" MemberName 97(MyStruct_t) 1 "b" MemberName 97(MyStruct_t) 2 "c" Name 99 "$Global" MemberName 99($Global) 0 "mystruct" MemberName 99($Global) 1 "myfloat4_a" MemberName 99($Global) 2 "myfloat4_b" MemberName 99($Global) 3 "myint4_a" Name 101 "" Name 123 "g_tTex_unused1" Name 125 "g_sSamp_unused1" Name 130 "g_tTex_unused2" Name 132 "g_sSamp_unused2" Name 141 "psout" Name 151 "@entryPointOutput.Color" Name 154 "g_tTex_unused3" Decorate 21(g_tTex1) Binding 11 Decorate 21(g_tTex1) DescriptorSet 0 Decorate 25(g_sSamp1) Binding 5 Decorate 25(g_sSamp1) DescriptorSet 0 Decorate 31(g_tTex2) Binding 14 Decorate 31(g_tTex2) DescriptorSet 0 Decorate 33(g_sSamp2) Binding 6 Decorate 33(g_sSamp2) DescriptorSet 0 Decorate 43(g_tTex3) Binding 13 Decorate 43(g_tTex3) DescriptorSet 0 Decorate 50(g_sSamp3) Binding 7 Decorate 50(g_sSamp3) DescriptorSet 0 Decorate 68(g_tTex4) Binding 15 Decorate 68(g_tTex4) DescriptorSet 0 Decorate 73(g_sSamp4) Binding 8 Decorate 73(g_sSamp4) DescriptorSet 0 Decorate 88(g_tTex5) Binding 16 Decorate 88(g_tTex5) DescriptorSet 0 Decorate 90(g_sSamp5) Binding 9 Decorate 90(g_sSamp5) DescriptorSet 0 MemberDecorate 97(MyStruct_t) 0 Offset 0 MemberDecorate 97(MyStruct_t) 1 Offset 4 MemberDecorate 97(MyStruct_t) 2 Offset 16 Decorate 99($Global) Block MemberDecorate 99($Global) 0 Offset 0 MemberDecorate 99($Global) 1 Offset 32 MemberDecorate 99($Global) 2 Offset 48 MemberDecorate 99($Global) 3 Offset 64 Decorate 101 Binding 20 Decorate 101 DescriptorSet 0 Decorate 123(g_tTex_unused1) Binding 10 Decorate 123(g_tTex_unused1) DescriptorSet 0 Decorate 125(g_sSamp_unused1) Binding 0 Decorate 125(g_sSamp_unused1) DescriptorSet 0 Decorate 130(g_tTex_unused2) Binding 12 Decorate 130(g_tTex_unused2) DescriptorSet 0 Decorate 132(g_sSamp_unused2) Binding 0 Decorate 132(g_sSamp_unused2) DescriptorSet 0 Decorate 151(@entryPointOutput.Color) Location 0 Decorate 154(g_tTex_unused3) Binding 0 Decorate 154(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 15(PS_OUTPUT): TypeStruct 7(fvec4) 16: TypeFunction 15(PS_OUTPUT) 19: TypeImage 6(float) 1D sampled format:Unknown 20: TypePointer UniformConstant 19 21(g_tTex1): 20(ptr) Variable UniformConstant 23: TypeSampler 24: TypePointer UniformConstant 23 25(g_sSamp1): 24(ptr) Variable UniformConstant 27: TypeSampledImage 19 29: 6(float) Constant 1036831949 31(g_tTex2): 20(ptr) Variable UniformConstant 33(g_sSamp2): 24(ptr) Variable UniformConstant 36: 6(float) Constant 1045220557 39: TypeInt 32 0 40: 39(int) Constant 2 41: TypeArray 19 40 42: TypePointer UniformConstant 41 43(g_tTex3): 42(ptr) Variable UniformConstant 44: TypeInt 32 1 45: 44(int) Constant 0 48: TypeArray 23 40 49: TypePointer UniformConstant 48 50(g_sSamp3): 49(ptr) Variable UniformConstant 54: 6(float) Constant 1050253722 57: 44(int) Constant 1 65: 39(int) Constant 3 66: TypeArray 19 65 67: TypePointer UniformConstant 66 68(g_tTex4): 67(ptr) Variable UniformConstant 71: TypeArray 23 65 72: TypePointer UniformConstant 71 73(g_sSamp4): 72(ptr) Variable UniformConstant 77: 6(float) Constant 1053609165 80: 44(int) Constant 2 88(g_tTex5): 20(ptr) Variable UniformConstant 90(g_sSamp5): 24(ptr) Variable UniformConstant 93: 6(float) Constant 1056964608 96: TypeVector 6(float) 3 97(MyStruct_t): TypeStruct 44(int) 6(float) 96(fvec3) 98: TypeVector 44(int) 4 99($Global): TypeStruct 97(MyStruct_t) 7(fvec4) 7(fvec4) 98(ivec4) 100: TypePointer Uniform 99($Global) 101: 100(ptr) Variable Uniform 102: 39(int) Constant 1 103: TypePointer Uniform 6(float) 123(g_tTex_unused1): 20(ptr) Variable UniformConstant 125(g_sSamp_unused1): 24(ptr) Variable UniformConstant 128: 6(float) Constant 1066192077 130(g_tTex_unused2): 20(ptr) Variable UniformConstant 132(g_sSamp_unused2): 24(ptr) Variable UniformConstant 135: 6(float) Constant 1067030938 140: TypePointer Function 15(PS_OUTPUT) 145: TypePointer Function 7(fvec4) 150: TypePointer Output 7(fvec4) 151(@entryPointOutput.Color): 150(ptr) Variable Output 154(g_tTex_unused3): 20(ptr) Variable UniformConstant 4(main_ep): 2 Function None 3 5: Label 152:15(PS_OUTPUT) FunctionCall 17(@main_ep() 153: 7(fvec4) CompositeExtract 152 0 Store 151(@entryPointOutput.Color) 153 Return FunctionEnd 9(Func1(): 7(fvec4) Function None 8 10: Label 22: 19 Load 21(g_tTex1) 26: 23 Load 25(g_sSamp1) 28: 27 SampledImage 22 26 30: 7(fvec4) ImageSampleImplicitLod 28 29 32: 19 Load 31(g_tTex2) 34: 23 Load 33(g_sSamp2) 35: 27 SampledImage 32 34 37: 7(fvec4) ImageSampleImplicitLod 35 36 38: 7(fvec4) FAdd 30 37 46: 20(ptr) AccessChain 43(g_tTex3) 45 47: 19 Load 46 51: 24(ptr) AccessChain 50(g_sSamp3) 45 52: 23 Load 51 53: 27 SampledImage 47 52 55: 7(fvec4) ImageSampleImplicitLod 53 54 56: 7(fvec4) FAdd 38 55 58: 20(ptr) AccessChain 43(g_tTex3) 57 59: 19 Load 58 60: 24(ptr) AccessChain 50(g_sSamp3) 57 61: 23 Load 60 62: 27 SampledImage 59 61 63: 7(fvec4) ImageSampleImplicitLod 62 54 64: 7(fvec4) FAdd 56 63 69: 20(ptr) AccessChain 68(g_tTex4) 57 70: 19 Load 69 74: 24(ptr) AccessChain 73(g_sSamp4) 57 75: 23 Load 74 76: 27 SampledImage 70 75 78: 7(fvec4) ImageSampleImplicitLod 76 77 79: 7(fvec4) FAdd 64 78 81: 20(ptr) AccessChain 68(g_tTex4) 80 82: 19 Load 81 83: 24(ptr) AccessChain 73(g_sSamp4) 80 84: 23 Load 83 85: 27 SampledImage 82 84 86: 7(fvec4) ImageSampleImplicitLod 85 77 87: 7(fvec4) FAdd 79 86 89: 19 Load 88(g_tTex5) 91: 23 Load 90(g_sSamp5) 92: 27 SampledImage 89 91 94: 7(fvec4) ImageSampleImplicitLod 92 93 95: 7(fvec4) FAdd 87 94 104: 103(ptr) AccessChain 101 45 80 102 105: 6(float) Load 104 106: 7(fvec4) CompositeConstruct 105 105 105 105 107: 7(fvec4) FAdd 95 106 ReturnValue 107 FunctionEnd 11(Func2(): 7(fvec4) Function None 8 12: Label 110: 19 Load 21(g_tTex1) 111: 23 Load 25(g_sSamp1) 112: 27 SampledImage 110 111 113: 7(fvec4) ImageSampleImplicitLod 112 29 114: 20(ptr) AccessChain 43(g_tTex3) 57 115: 19 Load 114 116: 24(ptr) AccessChain 50(g_sSamp3) 57 117: 23 Load 116 118: 27 SampledImage 115 117 119: 7(fvec4) ImageSampleImplicitLod 118 54 120: 7(fvec4) FAdd 113 119 ReturnValue 120 FunctionEnd 13(Func2_unused(): 7(fvec4) Function None 8 14: Label 124: 19 Load 123(g_tTex_unused1) 126: 23 Load 125(g_sSamp_unused1) 127: 27 SampledImage 124 126 129: 7(fvec4) ImageSampleImplicitLod 127 128 131: 19 Load 130(g_tTex_unused2) 133: 23 Load 132(g_sSamp_unused2) 134: 27 SampledImage 131 133 136: 7(fvec4) ImageSampleImplicitLod 134 135 137: 7(fvec4) FAdd 129 136 ReturnValue 137 FunctionEnd 17(@main_ep():15(PS_OUTPUT) Function None 16 18: Label 141(psout): 140(ptr) Variable Function 142: 7(fvec4) FunctionCall 9(Func1() 143: 7(fvec4) FunctionCall 11(Func2() 144: 7(fvec4) FAdd 142 143 146: 145(ptr) AccessChain 141(psout) 45 Store 146 144 147:15(PS_OUTPUT) Load 141(psout) ReturnValue 147 FunctionEnd glslang-16.0.0/Test/baseResults/spv.register.autoassign.rangetest.frag.out000066400000000000000000000102311506534232700267150ustar00rootroot00000000000000spv.register.autoassign.rangetest.frag INTERNAL ERROR: mapped binding out of range: g_tSamp INTERNAL ERROR: mapped binding out of range: g_tScene // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 49 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 12 "@main(struct-PS_OUTPUT-vf41;" Name 11 "psout" Name 21 "g_tScene" Name 27 "g_tSamp" Name 44 "psout" Name 45 "param" Name 49 "psout.Color" Decorate 21(g_tScene) Binding 5 Decorate 21(g_tScene) DescriptorSet 0 Decorate 27(g_tSamp) Binding 5 Decorate 27(g_tSamp) DescriptorSet 0 Decorate 49(psout.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypePointer Function 8(PS_OUTPUT) 10: TypeFunction 2 9(ptr) 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypeImage 6(float) 2D sampled format:Unknown 17: TypeInt 32 0 18: 17(int) Constant 2 19: TypeArray 16 18 20: TypePointer UniformConstant 19 21(g_tScene): 20(ptr) Variable UniformConstant 22: TypePointer UniformConstant 16 25: TypeSampler 26: TypePointer UniformConstant 25 27(g_tSamp): 26(ptr) Variable UniformConstant 29: TypeSampledImage 16 31: TypeVector 6(float) 2 32: 6(float) Constant 1050253722 33: 31(fvec2) ConstantComposite 32 32 35: 14(int) Constant 1 42: TypePointer Function 7(fvec4) 48: TypePointer Output 7(fvec4) 49(psout.Color): 48(ptr) Variable Output 4(main): 2 Function None 3 5: Label 44(psout): 9(ptr) Variable Function 45(param): 9(ptr) Variable Function 46: 2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 45(param) 47:8(PS_OUTPUT) Load 45(param) Store 44(psout) 47 50: 42(ptr) AccessChain 44(psout) 15 51: 7(fvec4) Load 50 Store 49(psout.Color) 51 Return FunctionEnd 12(@main(struct-PS_OUTPUT-vf41;): 2 Function None 10 11(psout): 9(ptr) FunctionParameter 13: Label 23: 22(ptr) AccessChain 21(g_tScene) 15 24: 16 Load 23 28: 25 Load 27(g_tSamp) 30: 29 SampledImage 24 28 34: 7(fvec4) ImageSampleImplicitLod 30 33 36: 22(ptr) AccessChain 21(g_tScene) 35 37: 16 Load 36 38: 25 Load 27(g_tSamp) 39: 29 SampledImage 37 38 40: 7(fvec4) ImageSampleImplicitLod 39 33 41: 7(fvec4) FAdd 34 40 43: 42(ptr) AccessChain 11(psout) 15 Store 43 41 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.register.noautoassign.frag.out000066400000000000000000000313601506534232700252650ustar00rootroot00000000000000spv.register.noautoassign.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 155 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main_ep" 151 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main_ep" Name 9 "Func1(" Name 11 "Func2(" Name 13 "Func2_unused(" Name 15 "PS_OUTPUT" MemberName 15(PS_OUTPUT) 0 "Color" Name 17 "@main_ep(" Name 21 "g_tTex1" Name 25 "g_sSamp1" Name 31 "g_tTex2" Name 33 "g_sSamp2" Name 43 "g_tTex3" Name 50 "g_sSamp3" Name 68 "g_tTex4" Name 73 "g_sSamp4" Name 88 "g_tTex5" Name 90 "g_sSamp5" Name 97 "MyStruct_t" MemberName 97(MyStruct_t) 0 "a" MemberName 97(MyStruct_t) 1 "b" MemberName 97(MyStruct_t) 2 "c" Name 99 "$Global" MemberName 99($Global) 0 "mystruct" MemberName 99($Global) 1 "myfloat4_a" MemberName 99($Global) 2 "myfloat4_b" MemberName 99($Global) 3 "myint4_a" Name 101 "" Name 123 "g_tTex_unused1" Name 125 "g_sSamp_unused1" Name 130 "g_tTex_unused2" Name 132 "g_sSamp_unused2" Name 141 "psout" Name 151 "@entryPointOutput.Color" Name 154 "g_tTex_unused3" Decorate 21(g_tTex1) Binding 11 Decorate 21(g_tTex1) DescriptorSet 0 Decorate 25(g_sSamp1) Binding 5 Decorate 25(g_sSamp1) DescriptorSet 0 Decorate 31(g_tTex2) Binding 0 Decorate 31(g_tTex2) DescriptorSet 0 Decorate 33(g_sSamp2) Binding 0 Decorate 33(g_sSamp2) DescriptorSet 0 Decorate 43(g_tTex3) Binding 13 Decorate 43(g_tTex3) DescriptorSet 0 Decorate 50(g_sSamp3) Binding 7 Decorate 50(g_sSamp3) DescriptorSet 0 Decorate 68(g_tTex4) Binding 0 Decorate 68(g_tTex4) DescriptorSet 0 Decorate 73(g_sSamp4) Binding 0 Decorate 73(g_sSamp4) DescriptorSet 0 Decorate 88(g_tTex5) Binding 0 Decorate 88(g_tTex5) DescriptorSet 0 Decorate 90(g_sSamp5) Binding 0 Decorate 90(g_sSamp5) DescriptorSet 0 MemberDecorate 97(MyStruct_t) 0 Offset 0 MemberDecorate 97(MyStruct_t) 1 Offset 4 MemberDecorate 97(MyStruct_t) 2 Offset 16 Decorate 99($Global) Block MemberDecorate 99($Global) 0 Offset 0 MemberDecorate 99($Global) 1 Offset 32 MemberDecorate 99($Global) 2 Offset 48 MemberDecorate 99($Global) 3 Offset 64 Decorate 101 Binding 0 Decorate 101 DescriptorSet 0 Decorate 123(g_tTex_unused1) Binding 10 Decorate 123(g_tTex_unused1) DescriptorSet 0 Decorate 125(g_sSamp_unused1) Binding 0 Decorate 125(g_sSamp_unused1) DescriptorSet 0 Decorate 130(g_tTex_unused2) Binding 12 Decorate 130(g_tTex_unused2) DescriptorSet 0 Decorate 132(g_sSamp_unused2) Binding 0 Decorate 132(g_sSamp_unused2) DescriptorSet 0 Decorate 151(@entryPointOutput.Color) Location 0 Decorate 154(g_tTex_unused3) Binding 0 Decorate 154(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 15(PS_OUTPUT): TypeStruct 7(fvec4) 16: TypeFunction 15(PS_OUTPUT) 19: TypeImage 6(float) 1D sampled format:Unknown 20: TypePointer UniformConstant 19 21(g_tTex1): 20(ptr) Variable UniformConstant 23: TypeSampler 24: TypePointer UniformConstant 23 25(g_sSamp1): 24(ptr) Variable UniformConstant 27: TypeSampledImage 19 29: 6(float) Constant 1036831949 31(g_tTex2): 20(ptr) Variable UniformConstant 33(g_sSamp2): 24(ptr) Variable UniformConstant 36: 6(float) Constant 1045220557 39: TypeInt 32 0 40: 39(int) Constant 2 41: TypeArray 19 40 42: TypePointer UniformConstant 41 43(g_tTex3): 42(ptr) Variable UniformConstant 44: TypeInt 32 1 45: 44(int) Constant 0 48: TypeArray 23 40 49: TypePointer UniformConstant 48 50(g_sSamp3): 49(ptr) Variable UniformConstant 54: 6(float) Constant 1050253722 57: 44(int) Constant 1 65: 39(int) Constant 3 66: TypeArray 19 65 67: TypePointer UniformConstant 66 68(g_tTex4): 67(ptr) Variable UniformConstant 71: TypeArray 23 65 72: TypePointer UniformConstant 71 73(g_sSamp4): 72(ptr) Variable UniformConstant 77: 6(float) Constant 1053609165 80: 44(int) Constant 2 88(g_tTex5): 20(ptr) Variable UniformConstant 90(g_sSamp5): 24(ptr) Variable UniformConstant 93: 6(float) Constant 1056964608 96: TypeVector 6(float) 3 97(MyStruct_t): TypeStruct 44(int) 6(float) 96(fvec3) 98: TypeVector 44(int) 4 99($Global): TypeStruct 97(MyStruct_t) 7(fvec4) 7(fvec4) 98(ivec4) 100: TypePointer Uniform 99($Global) 101: 100(ptr) Variable Uniform 102: 39(int) Constant 1 103: TypePointer Uniform 6(float) 123(g_tTex_unused1): 20(ptr) Variable UniformConstant 125(g_sSamp_unused1): 24(ptr) Variable UniformConstant 128: 6(float) Constant 1066192077 130(g_tTex_unused2): 20(ptr) Variable UniformConstant 132(g_sSamp_unused2): 24(ptr) Variable UniformConstant 135: 6(float) Constant 1067030938 140: TypePointer Function 15(PS_OUTPUT) 145: TypePointer Function 7(fvec4) 150: TypePointer Output 7(fvec4) 151(@entryPointOutput.Color): 150(ptr) Variable Output 154(g_tTex_unused3): 20(ptr) Variable UniformConstant 4(main_ep): 2 Function None 3 5: Label 152:15(PS_OUTPUT) FunctionCall 17(@main_ep() 153: 7(fvec4) CompositeExtract 152 0 Store 151(@entryPointOutput.Color) 153 Return FunctionEnd 9(Func1(): 7(fvec4) Function None 8 10: Label 22: 19 Load 21(g_tTex1) 26: 23 Load 25(g_sSamp1) 28: 27 SampledImage 22 26 30: 7(fvec4) ImageSampleImplicitLod 28 29 32: 19 Load 31(g_tTex2) 34: 23 Load 33(g_sSamp2) 35: 27 SampledImage 32 34 37: 7(fvec4) ImageSampleImplicitLod 35 36 38: 7(fvec4) FAdd 30 37 46: 20(ptr) AccessChain 43(g_tTex3) 45 47: 19 Load 46 51: 24(ptr) AccessChain 50(g_sSamp3) 45 52: 23 Load 51 53: 27 SampledImage 47 52 55: 7(fvec4) ImageSampleImplicitLod 53 54 56: 7(fvec4) FAdd 38 55 58: 20(ptr) AccessChain 43(g_tTex3) 57 59: 19 Load 58 60: 24(ptr) AccessChain 50(g_sSamp3) 57 61: 23 Load 60 62: 27 SampledImage 59 61 63: 7(fvec4) ImageSampleImplicitLod 62 54 64: 7(fvec4) FAdd 56 63 69: 20(ptr) AccessChain 68(g_tTex4) 57 70: 19 Load 69 74: 24(ptr) AccessChain 73(g_sSamp4) 57 75: 23 Load 74 76: 27 SampledImage 70 75 78: 7(fvec4) ImageSampleImplicitLod 76 77 79: 7(fvec4) FAdd 64 78 81: 20(ptr) AccessChain 68(g_tTex4) 80 82: 19 Load 81 83: 24(ptr) AccessChain 73(g_sSamp4) 80 84: 23 Load 83 85: 27 SampledImage 82 84 86: 7(fvec4) ImageSampleImplicitLod 85 77 87: 7(fvec4) FAdd 79 86 89: 19 Load 88(g_tTex5) 91: 23 Load 90(g_sSamp5) 92: 27 SampledImage 89 91 94: 7(fvec4) ImageSampleImplicitLod 92 93 95: 7(fvec4) FAdd 87 94 104: 103(ptr) AccessChain 101 45 80 102 105: 6(float) Load 104 106: 7(fvec4) CompositeConstruct 105 105 105 105 107: 7(fvec4) FAdd 95 106 ReturnValue 107 FunctionEnd 11(Func2(): 7(fvec4) Function None 8 12: Label 110: 19 Load 21(g_tTex1) 111: 23 Load 25(g_sSamp1) 112: 27 SampledImage 110 111 113: 7(fvec4) ImageSampleImplicitLod 112 29 114: 20(ptr) AccessChain 43(g_tTex3) 57 115: 19 Load 114 116: 24(ptr) AccessChain 50(g_sSamp3) 57 117: 23 Load 116 118: 27 SampledImage 115 117 119: 7(fvec4) ImageSampleImplicitLod 118 54 120: 7(fvec4) FAdd 113 119 ReturnValue 120 FunctionEnd 13(Func2_unused(): 7(fvec4) Function None 8 14: Label 124: 19 Load 123(g_tTex_unused1) 126: 23 Load 125(g_sSamp_unused1) 127: 27 SampledImage 124 126 129: 7(fvec4) ImageSampleImplicitLod 127 128 131: 19 Load 130(g_tTex_unused2) 133: 23 Load 132(g_sSamp_unused2) 134: 27 SampledImage 131 133 136: 7(fvec4) ImageSampleImplicitLod 134 135 137: 7(fvec4) FAdd 129 136 ReturnValue 137 FunctionEnd 17(@main_ep():15(PS_OUTPUT) Function None 16 18: Label 141(psout): 140(ptr) Variable Function 142: 7(fvec4) FunctionCall 9(Func1() 143: 7(fvec4) FunctionCall 11(Func2() 144: 7(fvec4) FAdd 142 143 146: 145(ptr) AccessChain 141(psout) 45 Store 146 144 147:15(PS_OUTPUT) Load 141(psout) ReturnValue 147 FunctionEnd glslang-16.0.0/Test/baseResults/spv.register.subpass.frag.out000066400000000000000000000075331506534232700242400ustar00rootroot00000000000000spv.register.subpass.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader Capability InputAttachment 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 38 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 12 "result00" Name 15 "subpass_f4" Name 22 "result10" Name 25 "subpass_ms_f4" Name 29 "result73" Name 30 "subpass_2" Name 38 "@entryPointOutput" Decorate 15(subpass_f4) Binding 21 Decorate 15(subpass_f4) DescriptorSet 0 Decorate 15(subpass_f4) InputAttachmentIndex 1 Decorate 25(subpass_ms_f4) Binding 20 Decorate 25(subpass_ms_f4) DescriptorSet 0 Decorate 25(subpass_ms_f4) InputAttachmentIndex 4 Decorate 30(subpass_2) Binding 22 Decorate 30(subpass_2) DescriptorSet 0 Decorate 30(subpass_2) InputAttachmentIndex 7 Decorate 38(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Function 7(fvec4) 13: TypeImage 6(float) SubpassData nonsampled format:Unknown 14: TypePointer UniformConstant 13 15(subpass_f4): 14(ptr) Variable UniformConstant 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypeVector 17(int) 2 20: 19(ivec2) ConstantComposite 18 18 23: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown 24: TypePointer UniformConstant 23 25(subpass_ms_f4): 24(ptr) Variable UniformConstant 27: 17(int) Constant 3 30(subpass_2): 14(ptr) Variable UniformConstant 33: 6(float) Constant 0 34: 7(fvec4) ConstantComposite 33 33 33 33 37: TypePointer Output 7(fvec4) 38(@entryPointOutput): 37(ptr) Variable Output 4(main): 2 Function None 3 5: Label 39: 7(fvec4) FunctionCall 9(@main() Store 38(@entryPointOutput) 39 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 12(result00): 11(ptr) Variable Function 22(result10): 11(ptr) Variable Function 29(result73): 11(ptr) Variable Function 16: 13 Load 15(subpass_f4) 21: 7(fvec4) ImageRead 16 20 Store 12(result00) 21 26: 23 Load 25(subpass_ms_f4) 28: 7(fvec4) ImageRead 26 20 Sample 27 Store 22(result10) 28 31: 13 Load 30(subpass_2) 32: 7(fvec4) ImageRead 31 20 Store 29(result73) 32 ReturnValue 34 FunctionEnd glslang-16.0.0/Test/baseResults/spv.replicate.comp.out000066400000000000000000000135121506534232700227160ustar00rootroot00000000000000spv.replicate.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Capability ReplicatedCompositesEXT Extension "SPV_EXT_replicated_composites" Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_EXT_spec_constant_composites" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 13 "coop" Name 17 "a" Name 21 "v" Name 28 "m" Name 33 "five" Name 35 "six" Name 39 "arr" Name 44 "arr2" Name 49 "S" MemberName 49(S) 0 "a" MemberName 49(S) 1 "b" MemberName 49(S) 2 "c" Name 51 "s2" Name 54 "SS" MemberName 54(SS) 0 "s1" MemberName 54(SS) 1 "s2" Name 56 "ss" Decorate 61 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 16 10: 7(int) Constant 0 11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10 12: TypePointer Function 11 14: 6(float) Constant 1065353216 15: 11 ConstantCompositeReplicateEXT 14 16: TypePointer Function 6(float) 18: 6(float) Constant 1073741824 19: TypeVector 6(float) 4 20: TypePointer Function 19(fvec4) 24: 6(float) Constant 1077936128 25: 19(fvec4) ConstantCompositeReplicateEXT 24 26: TypeMatrix 19(fvec4) 4 27: TypePointer Function 26 31: TypeInt 32 1 32: TypePointer Function 31(int) 34: 31(int) Constant 5 36: 31(int) Constant 6 37: TypeArray 31(int) 8 38: TypePointer Function 37 42: TypeArray 37 8 43: TypePointer Function 42 47: 37 ConstantCompositeReplicateEXT 34 48: 42 ConstantCompositeReplicateEXT 47 49(S): TypeStruct 31(int) 31(int) 31(int) 50: TypePointer Function 49(S) 54(SS): TypeStruct 49(S) 49(S) 55: TypePointer Function 54(SS) 59: TypeVector 7(int) 3 60: 7(int) Constant 1 61: 59(ivec3) ConstantCompositeReplicateEXT 60 62: 49(S) ConstantCompositeReplicateEXT 36 63: 54(SS) ConstantCompositeReplicateEXT 62 64: 26 ConstantCompositeReplicateEXT 25 65: 11 ConstantCompositeReplicateEXT 24 4(main): 2 Function None 3 5: Label 13(coop): 12(ptr) Variable Function 17(a): 16(ptr) Variable Function 21(v): 20(ptr) Variable Function 28(m): 27(ptr) Variable Function 33(five): 32(ptr) Variable Function 35(six): 32(ptr) Variable Function 39(arr): 38(ptr) Variable Function 44(arr2): 43(ptr) Variable Function 51(s2): 50(ptr) Variable Function 56(ss): 55(ptr) Variable Function Store 13(coop) 15 Store 17(a) 18 22: 6(float) Load 17(a) 23: 19(fvec4) CompositeConstructReplicateEXT 22 Store 21(v) 23 Store 21(v) 25 29: 19(fvec4) Load 21(v) 30: 26 CompositeConstructReplicateEXT 29 Store 28(m) 30 Store 33(five) 34 Store 35(six) 36 40: 31(int) Load 33(five) 41: 37 CompositeConstructReplicateEXT 40 Store 39(arr) 41 45: 37 Load 39(arr) 46: 42 CompositeConstructReplicateEXT 45 Store 44(arr2) 46 Store 44(arr2) 48 52: 31(int) Load 35(six) 53: 49(S) CompositeConstructReplicateEXT 52 Store 51(s2) 53 57: 49(S) Load 51(s2) 58: 54(SS) CompositeConstructReplicateEXT 57 Store 56(ss) 58 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.replicatespec.comp.out000066400000000000000000000152061506534232700235730ustar00rootroot00000000000000spv.replicatespec.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 68 Capability Shader Capability VulkanMemoryModelKHR Capability CooperativeMatrixKHR Capability ReplicatedCompositesEXT Extension "SPV_EXT_replicated_composites" Extension "SPV_KHR_cooperative_matrix" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical VulkanKHR EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 SourceExtension "GL_EXT_spec_constant_composites" SourceExtension "GL_KHR_cooperative_matrix" SourceExtension "GL_KHR_memory_scope_semantics" Name 4 "main" Name 13 "coop" Name 17 "a" Name 21 "v" Name 24 "spec_float" Name 25 "cv" Name 28 "m" Name 33 "five" Name 35 "six" Name 39 "arr" Name 44 "arr2" Name 47 "cfive" Name 48 "carr" Name 49 "carr2" Name 50 "S" MemberName 50(S) 0 "a" MemberName 50(S) 1 "b" MemberName 50(S) 2 "c" Name 52 "s2" Name 55 "SS" MemberName 55(SS) 0 "s1" MemberName 55(SS) 1 "s2" Name 57 "ss" Name 63 "csix" Name 64 "cs" Name 65 "css" Name 66 "cm" Name 67 "ccoop" Decorate 24(spec_float) SpecId 2 Decorate 47(cfive) SpecId 0 Decorate 62 BuiltIn WorkgroupSize Decorate 63(csix) SpecId 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeInt 32 0 8: 7(int) Constant 3 9: 7(int) Constant 16 10: 7(int) Constant 0 11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10 12: TypePointer Function 11 14: 6(float) Constant 1065353216 15: 11 ConstantCompositeReplicateEXT 14 16: TypePointer Function 6(float) 18: 6(float) Constant 1073741824 19: TypeVector 6(float) 4 20: TypePointer Function 19(fvec4) 24(spec_float): 6(float) SpecConstant 1077936128 25(cv): 19(fvec4) SpecConstantCompositeReplicateEXT 24(spec_float) 26: TypeMatrix 19(fvec4) 4 27: TypePointer Function 26 31: TypeInt 32 1 32: TypePointer Function 31(int) 34: 31(int) Constant 5 36: 31(int) Constant 6 37: TypeArray 31(int) 8 38: TypePointer Function 37 42: TypeArray 37 8 43: TypePointer Function 42 47(cfive): 31(int) SpecConstant 5 48(carr): 37 SpecConstantCompositeReplicateEXT 47(cfive) 49(carr2): 42 SpecConstantCompositeReplicateEXT 48(carr) 50(S): TypeStruct 31(int) 31(int) 31(int) 51: TypePointer Function 50(S) 55(SS): TypeStruct 50(S) 50(S) 56: TypePointer Function 55(SS) 60: TypeVector 7(int) 3 61: 7(int) Constant 1 62: 60(ivec3) ConstantCompositeReplicateEXT 61 63(csix): 31(int) SpecConstant 6 64(cs): 50(S) SpecConstantCompositeReplicateEXT 63(csix) 65(css): 55(SS) SpecConstantCompositeReplicateEXT 64(cs) 66(cm): 26 SpecConstantCompositeReplicateEXT 25(cv) 67(ccoop): 11 SpecConstantCompositeReplicateEXT 24(spec_float) 4(main): 2 Function None 3 5: Label 13(coop): 12(ptr) Variable Function 17(a): 16(ptr) Variable Function 21(v): 20(ptr) Variable Function 28(m): 27(ptr) Variable Function 33(five): 32(ptr) Variable Function 35(six): 32(ptr) Variable Function 39(arr): 38(ptr) Variable Function 44(arr2): 43(ptr) Variable Function 52(s2): 51(ptr) Variable Function 57(ss): 56(ptr) Variable Function Store 13(coop) 15 Store 17(a) 18 22: 6(float) Load 17(a) 23: 19(fvec4) CompositeConstructReplicateEXT 22 Store 21(v) 23 Store 21(v) 25(cv) 29: 19(fvec4) Load 21(v) 30: 26 CompositeConstructReplicateEXT 29 Store 28(m) 30 Store 33(five) 34 Store 35(six) 36 40: 31(int) Load 33(five) 41: 37 CompositeConstructReplicateEXT 40 Store 39(arr) 41 45: 37 Load 39(arr) 46: 42 CompositeConstructReplicateEXT 45 Store 44(arr2) 46 Store 44(arr2) 49(carr2) 53: 31(int) Load 35(six) 54: 50(S) CompositeConstructReplicateEXT 53 Store 52(s2) 54 58: 50(S) Load 52(s2) 59: 55(SS) CompositeConstructReplicateEXT 58 Store 57(ss) 59 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.rw.autoassign.frag.out000066400000000000000000000074721506534232700235430ustar00rootroot00000000000000spv.rw.autoassign.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader Capability Image1D Capability ImageBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 42 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "@main(" Name 13 "r00" Name 16 "g_tTex1df1" Name 24 "r01" Name 27 "g_tBuf1du1" Name 33 "psout" Name 42 "@entryPointOutput.Color" Decorate 16(g_tTex1df1) Binding 20 Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 27(g_tBuf1du1) Binding 21 Decorate 27(g_tBuf1du1) DescriptorSet 0 Decorate 42(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(PS_OUTPUT): TypeStruct 7(fvec4) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) 14: TypeImage 6(float) 1D nonsampled format:R32f 15: TypePointer UniformConstant 14 16(g_tTex1df1): 15(ptr) Variable UniformConstant 18: TypeInt 32 1 19: 18(int) Constant 0 22: TypeInt 32 0 23: TypePointer Function 22(int) 25: TypeImage 22(int) Buffer nonsampled format:R32ui 26: TypePointer UniformConstant 25 27(g_tBuf1du1): 26(ptr) Variable UniformConstant 29: TypeVector 22(int) 4 32: TypePointer Function 8(PS_OUTPUT) 34: 6(float) Constant 0 35: 7(fvec4) ConstantComposite 34 34 34 34 36: TypePointer Function 7(fvec4) 41: TypePointer Output 7(fvec4) 42(@entryPointOutput.Color): 41(ptr) Variable Output 4(main): 2 Function None 3 5: Label 43:8(PS_OUTPUT) FunctionCall 10(@main() 44: 7(fvec4) CompositeExtract 43 0 Store 42(@entryPointOutput.Color) 44 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function 24(r01): 23(ptr) Variable Function 33(psout): 32(ptr) Variable Function 17: 14 Load 16(g_tTex1df1) 20: 7(fvec4) ImageRead 17 19 21: 6(float) CompositeExtract 20 0 Store 13(r00) 21 28: 25 Load 27(g_tBuf1du1) 30: 29(ivec4) ImageRead 28 19 31: 22(int) CompositeExtract 30 0 Store 24(r01) 31 37: 36(ptr) AccessChain 33(psout) 19 Store 37 35 38:8(PS_OUTPUT) Load 33(psout) ReturnValue 38 FunctionEnd glslang-16.0.0/Test/baseResults/spv.sample.frag.out000066400000000000000000000026511506534232700222120ustar00rootroot00000000000000spv.sample.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 13 Capability Shader Capability SampleRateShading 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 11 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "color" Name 11 "samp" Decorate 9(color) Location 0 Decorate 11(samp) Sample Decorate 11(samp) 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: TypePointer Input 7(fvec4) 11(samp): 10(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(samp) Store 9(color) 12 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.sampleId.frag.out000066400000000000000000000045621506534232700224720ustar00rootroot00000000000000spv.sampleId.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader Capability SampleRateShading 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 18 20 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 8 "gl_SampleID" Name 18 "color" Name 20 "samp" Decorate 8(gl_SampleID) BuiltIn SampleId Decorate 8(gl_SampleID) Flat Decorate 18(color) Location 0 Decorate 20(samp) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Input 6(int) 8(gl_SampleID): 7(ptr) Variable Input 10: 6(int) Constant 3 11: TypeBool 15: TypeFloat 32 16: TypeVector 15(float) 4 17: TypePointer Output 16(fvec4) 18(color): 17(ptr) Variable Output 19: TypePointer Input 16(fvec4) 20(samp): 19(ptr) Variable Input 23: 15(float) Constant 1073741824 4(main): 2 Function None 3 5: Label 9: 6(int) Load 8(gl_SampleID) 12: 11(bool) SLessThan 9 10 SelectionMerge 14 None BranchConditional 12 13 22 13: Label 21: 16(fvec4) Load 20(samp) Store 18(color) 21 Branch 14 22: Label 24: 16(fvec4) Load 20(samp) 25: 16(fvec4) VectorTimesScalar 24 23 Store 18(color) 25 Branch 14 14: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out000066400000000000000000000037531506534232700262060ustar00rootroot00000000000000spv.sampleMaskOverrideCoverage.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader Capability SampleMaskOverrideCoverageNV Extension "SPV_NV_sample_mask_override_coverage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_NV_sample_mask_override_coverage" Name 4 "main" Name 11 "gl_SampleMask" Name 19 "color" Decorate 11(gl_SampleMask) BuiltIn SampleMask Decorate 11(gl_SampleMask) OverrideCoverageNV Decorate 19(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 1 9: TypeArray 6(int) 8 10: TypePointer Output 9 11(gl_SampleMask): 10(ptr) Variable Output 12: 6(int) Constant 0 13: 6(int) Constant 4294967295 14: TypePointer Output 6(int) 16: TypeFloat 32 17: TypeVector 16(float) 4 18: TypePointer Input 17(fvec4) 19(color): 18(ptr) Variable Input 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 11(gl_SampleMask) 12 Store 15 13 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.samplePosition.frag.out000066400000000000000000000050551506534232700237400ustar00rootroot00000000000000spv.samplePosition.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader Capability SampleRateShading 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 22 24 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "gl_SamplePosition" Name 22 "color" Name 24 "samp" Decorate 9(gl_SamplePosition) BuiltIn SamplePosition Decorate 22(color) Location 0 Decorate 24(samp) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Input 7(fvec2) 9(gl_SamplePosition): 8(ptr) Variable Input 10: TypeInt 32 0 11: 10(int) Constant 1 12: TypePointer Input 6(float) 15: 6(float) Constant 1056964608 16: TypeBool 20: TypeVector 6(float) 4 21: TypePointer Output 20(fvec4) 22(color): 21(ptr) Variable Output 23: TypePointer Input 20(fvec4) 24(samp): 23(ptr) Variable Input 27: 6(float) Constant 1073741824 4(main): 2 Function None 3 5: Label 13: 12(ptr) AccessChain 9(gl_SamplePosition) 11 14: 6(float) Load 13 17: 16(bool) FOrdLessThan 14 15 SelectionMerge 19 None BranchConditional 17 18 26 18: Label 25: 20(fvec4) Load 24(samp) Store 22(color) 25 Branch 19 26: Label 28: 20(fvec4) Load 24(samp) 29: 20(fvec4) VectorTimesScalar 28 27 Store 22(color) 29 Branch 19 19: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.sampledImageBlock.frag.out000066400000000000000000000111321506534232700242660ustar00rootroot00000000000000spv.sampledImageBlock.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 55 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 36 45 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "texel" Name 12 "tex0" Name 16 "samp0" Name 21 "ParamBuffer" MemberName 21(ParamBuffer) 0 "cond" Name 23 "paramBuffer" Name 36 "texCoord" Name 45 "fragColor" Decorate 12(tex0) Binding 0 Decorate 12(tex0) DescriptorSet 0 Decorate 16(samp0) Binding 1 Decorate 16(samp0) DescriptorSet 0 Decorate 21(ParamBuffer) Block MemberDecorate 21(ParamBuffer) 0 Offset 0 Decorate 23(paramBuffer) Binding 2 Decorate 23(paramBuffer) DescriptorSet 0 Decorate 36(texCoord) Flat Decorate 36(texCoord) Location 0 Decorate 45(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: TypePointer UniformConstant 10 12(tex0): 11(ptr) Variable UniformConstant 14: TypeSampler 15: TypePointer UniformConstant 14 16(samp0): 15(ptr) Variable UniformConstant 18: TypeSampledImage 10 20: TypeInt 32 1 21(ParamBuffer): TypeStruct 20(int) 22: TypePointer Uniform 21(ParamBuffer) 23(paramBuffer): 22(ptr) Variable Uniform 24: 20(int) Constant 0 25: TypePointer Uniform 20(int) 28: TypeBool 30: TypeVector 20(int) 2 31: TypePointer Function 30(ivec2) 35: TypePointer Input 30(ivec2) 36(texCoord): 35(ptr) Variable Input 44: TypePointer Output 7(fvec4) 45(fragColor): 44(ptr) Variable Output 46: TypeVector 6(float) 3 49: 6(float) Constant 1065353216 4(main): 2 Function None 3 5: Label 9(texel): 8(ptr) Variable Function 32: 31(ptr) Variable Function 13: 10 Load 12(tex0) 17: 14 Load 16(samp0) 19: 18 SampledImage 13 17 26: 25(ptr) AccessChain 23(paramBuffer) 24 27: 20(int) Load 26 29: 28(bool) IEqual 27 24 SelectionMerge 34 None BranchConditional 29 33 38 33: Label 37: 30(ivec2) Load 36(texCoord) Store 32 37 Branch 34 38: Label 39: 30(ivec2) Load 36(texCoord) 40: 30(ivec2) VectorShuffle 39 39 1 0 Store 32 40 Branch 34 34: Label 41: 30(ivec2) Load 32 54: 18 SampledImage 13 17 42: 10 Image 54 43: 7(fvec4) ImageFetch 42 41 Lod 24 Store 9(texel) 43 47: 7(fvec4) Load 9(texel) 48: 46(fvec3) VectorShuffle 47 47 0 1 2 50: 6(float) CompositeExtract 48 0 51: 6(float) CompositeExtract 48 1 52: 6(float) CompositeExtract 48 2 53: 7(fvec4) CompositeConstruct 50 51 52 49 Store 45(fragColor) 53 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.samplerlessTextureFunctions.frag.out000066400000000000000000000112461506534232700265350ustar00rootroot00000000000000spv.samplerlessTextureFunctions.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 51 Capability Shader Capability SampledBuffer Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_samplerless_texture_functions" Name 4 "main" Name 9 "tex2DFetch" Name 12 "tex2D" Name 19 "texMSFetch" Name 22 "texMS" Name 25 "bufFetch" Name 28 "buf" Name 31 "tex2DFetchOffset" Name 35 "tex2DSize" Name 38 "texMSSize" Name 42 "bufSize" Name 45 "tex2DLevels" Name 48 "texMSSamples" Decorate 12(tex2D) Binding 1 Decorate 12(tex2D) DescriptorSet 0 Decorate 22(texMS) Binding 1 Decorate 22(texMS) DescriptorSet 0 Decorate 28(buf) Binding 0 Decorate 28(buf) DescriptorSet 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: TypePointer UniformConstant 10 12(tex2D): 11(ptr) Variable UniformConstant 14: TypeInt 32 1 15: TypeVector 14(int) 2 16: 14(int) Constant 0 17: 15(ivec2) ConstantComposite 16 16 20: TypeImage 6(float) 2D multi-sampled sampled format:Unknown 21: TypePointer UniformConstant 20 22(texMS): 21(ptr) Variable UniformConstant 26: TypeImage 6(float) Buffer sampled format:Unknown 27: TypePointer UniformConstant 26 28(buf): 27(ptr) Variable UniformConstant 34: TypePointer Function 15(ivec2) 41: TypePointer Function 14(int) 4(main): 2 Function None 3 5: Label 9(tex2DFetch): 8(ptr) Variable Function 19(texMSFetch): 8(ptr) Variable Function 25(bufFetch): 8(ptr) Variable Function 31(tex2DFetchOffset): 8(ptr) Variable Function 35(tex2DSize): 34(ptr) Variable Function 38(texMSSize): 34(ptr) Variable Function 42(bufSize): 41(ptr) Variable Function 45(tex2DLevels): 41(ptr) Variable Function 48(texMSSamples): 41(ptr) Variable Function 13: 10 Load 12(tex2D) 18: 7(fvec4) ImageFetch 13 17 Lod 16 Store 9(tex2DFetch) 18 23: 20 Load 22(texMS) 24: 7(fvec4) ImageFetch 23 17 Sample 16 Store 19(texMSFetch) 24 29: 26 Load 28(buf) 30: 7(fvec4) ImageFetch 29 16 Store 25(bufFetch) 30 32: 10 Load 12(tex2D) 33: 7(fvec4) ImageFetch 32 17 Lod ConstOffset 16 17 Store 31(tex2DFetchOffset) 33 36: 10 Load 12(tex2D) 37: 15(ivec2) ImageQuerySizeLod 36 16 Store 35(tex2DSize) 37 39: 20 Load 22(texMS) 40: 15(ivec2) ImageQuerySize 39 Store 38(texMSSize) 40 43: 26 Load 28(buf) 44: 14(int) ImageQuerySize 43 Store 42(bufSize) 44 46: 10 Load 12(tex2D) 47: 14(int) ImageQueryLevels 46 Store 45(tex2DLevels) 47 49: 20 Load 22(texMS) 50: 14(int) ImageQuerySamples 49 Store 48(texMSSamples) 50 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.scalarlayout.frag.out000066400000000000000000000100411506534232700234240ustar00rootroot00000000000000spv.scalarlayout.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_scalar_block_layout" Name 4 "main" Name 15 "S" MemberName 15(S) 0 "a" MemberName 15(S) 1 "b" MemberName 15(S) 2 "c" MemberName 15(S) 3 "d" MemberName 15(S) 4 "e" MemberName 15(S) 5 "f" Name 17 "B1" MemberName 17(B1) 0 "a" MemberName 17(B1) 1 "b" MemberName 17(B1) 2 "c" MemberName 17(B1) 3 "d" MemberName 17(B1) 4 "e" MemberName 17(B1) 5 "f" MemberName 17(B1) 6 "g" MemberName 17(B1) 7 "h" MemberName 17(B1) 8 "i" Name 19 "" Decorate 11 ArrayStride 4 Decorate 13 ArrayStride 24 MemberDecorate 15(S) 0 Offset 0 MemberDecorate 15(S) 1 Offset 4 MemberDecorate 15(S) 2 Offset 16 MemberDecorate 15(S) 3 Offset 24 MemberDecorate 15(S) 4 Offset 28 MemberDecorate 15(S) 5 Offset 40 Decorate 16 ArrayStride 48 Decorate 17(B1) Block MemberDecorate 17(B1) 0 Offset 0 MemberDecorate 17(B1) 1 Offset 4 MemberDecorate 17(B1) 2 Offset 12 MemberDecorate 17(B1) 3 Offset 24 MemberDecorate 17(B1) 4 ColMajor MemberDecorate 17(B1) 4 MatrixStride 12 MemberDecorate 17(B1) 4 Offset 32 MemberDecorate 17(B1) 5 ColMajor MemberDecorate 17(B1) 5 MatrixStride 12 MemberDecorate 17(B1) 5 Offset 56 MemberDecorate 17(B1) 6 Offset 104 MemberDecorate 17(B1) 7 Offset 112 MemberDecorate 17(B1) 8 Offset 160 Decorate 19 Binding 0 Decorate 19 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypeVector 6(float) 3 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(float) 10 12: TypeMatrix 8(fvec3) 2 13: TypeArray 12 10 14: TypeFloat 64 15(S): TypeStruct 6(float) 7(fvec2) 14(float64_t) 6(float) 8(fvec3) 6(float) 16: TypeArray 15(S) 10 17(B1): TypeStruct 6(float) 7(fvec2) 8(fvec3) 11 12 13 6(float) 15(S) 16 18: TypePointer Uniform 17(B1) 19: 18(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.scalarlayoutfloat16.frag.out000066400000000000000000000071721506534232700246340ustar00rootroot00000000000000spv.scalarlayoutfloat16.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader Capability Float64 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_scalar_block_layout" SourceExtension "GL_EXT_shader_16bit_storage" Name 4 "main" Name 13 "S" MemberName 13(S) 0 "a" MemberName 13(S) 1 "b" MemberName 13(S) 2 "c" MemberName 13(S) 3 "d" MemberName 13(S) 4 "e" MemberName 13(S) 5 "f" Name 15 "B1" MemberName 15(B1) 0 "a" MemberName 15(B1) 1 "b" MemberName 15(B1) 2 "c" MemberName 15(B1) 3 "d" MemberName 15(B1) 4 "g" MemberName 15(B1) 5 "h" MemberName 15(B1) 6 "i" Name 17 "" Decorate 11 ArrayStride 2 MemberDecorate 13(S) 0 Offset 0 MemberDecorate 13(S) 1 Offset 2 MemberDecorate 13(S) 2 Offset 8 MemberDecorate 13(S) 3 Offset 16 MemberDecorate 13(S) 4 Offset 18 MemberDecorate 13(S) 5 Offset 24 Decorate 14 ArrayStride 32 Decorate 15(B1) Block MemberDecorate 15(B1) 0 Offset 0 MemberDecorate 15(B1) 1 Offset 2 MemberDecorate 15(B1) 2 Offset 6 MemberDecorate 15(B1) 3 Offset 12 MemberDecorate 15(B1) 4 Offset 16 MemberDecorate 15(B1) 5 Offset 24 MemberDecorate 15(B1) 6 Offset 56 Decorate 17 Binding 0 Decorate 17 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeVector 6(float16_t) 2 8: TypeVector 6(float16_t) 3 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 6(float16_t) 10 12: TypeFloat 64 13(S): TypeStruct 6(float16_t) 7(f16vec2) 12(float64_t) 6(float16_t) 8(f16vec3) 6(float16_t) 14: TypeArray 13(S) 10 15(B1): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 11 6(float16_t) 13(S) 14 16: TypePointer Uniform 15(B1) 17: 16(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.separate.frag.out000066400000000000000000000617141506534232700225420ustar00rootroot00000000000000spv.separate.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 319 Capability Shader Capability SampledRect Capability Sampled1D Capability SampledCubeArray Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 34 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 6 "foo(" Name 11 "color" Name 14 "t2d" Name 18 "s" Name 31 "t3d" Name 34 "i" Name 41 "sA" Name 58 "tex2D" Name 64 "texCube" Name 71 "texCubeArray" Name 77 "sShadow" Name 84 "itexCubeArray" Name 91 "utexCubeArray" Name 98 "tex1DArray" Name 105 "itex1DArray" Name 112 "utex1D" Name 119 "itex1D" Name 126 "utex1DArray" Name 133 "texBuffer" Name 145 "tex2DArray" Name 157 "itex2D" Name 164 "itex3D" Name 171 "itexCube" Name 178 "itex2DArray" Name 185 "utex2D" Name 192 "utex3D" Name 199 "utexCube" Name 206 "utex2DArray" Name 213 "itex2DRect" Name 220 "utex2DRect" Name 227 "itexBuffer" Name 234 "utexBuffer" Name 241 "tex2DMS" Name 248 "itex2DMS" Name 255 "utex2DMS" Name 262 "tex2DMSArray" Name 269 "itex2DMSArray" Name 276 "utex2DMSArray" Name 283 "tex1D" Name 293 "tex3D" Name 304 "tex2DRect" Decorate 11(color) Location 0 Decorate 14(t2d) Binding 2 Decorate 14(t2d) DescriptorSet 0 Decorate 18(s) Binding 0 Decorate 18(s) DescriptorSet 0 Decorate 31(t3d) Binding 3 Decorate 31(t3d) DescriptorSet 0 Decorate 34(i) Flat Decorate 34(i) Location 0 Decorate 41(sA) Binding 1 Decorate 41(sA) DescriptorSet 0 Decorate 58(tex2D) Binding 0 Decorate 58(tex2D) DescriptorSet 0 Decorate 64(texCube) Binding 0 Decorate 64(texCube) DescriptorSet 0 Decorate 71(texCubeArray) Binding 0 Decorate 71(texCubeArray) DescriptorSet 0 Decorate 77(sShadow) Binding 0 Decorate 77(sShadow) DescriptorSet 0 Decorate 84(itexCubeArray) Binding 0 Decorate 84(itexCubeArray) DescriptorSet 0 Decorate 91(utexCubeArray) Binding 0 Decorate 91(utexCubeArray) DescriptorSet 0 Decorate 98(tex1DArray) Binding 0 Decorate 98(tex1DArray) DescriptorSet 0 Decorate 105(itex1DArray) Binding 0 Decorate 105(itex1DArray) DescriptorSet 0 Decorate 112(utex1D) Binding 0 Decorate 112(utex1D) DescriptorSet 0 Decorate 119(itex1D) Binding 0 Decorate 119(itex1D) DescriptorSet 0 Decorate 126(utex1DArray) Binding 0 Decorate 126(utex1DArray) DescriptorSet 0 Decorate 133(texBuffer) Binding 0 Decorate 133(texBuffer) DescriptorSet 0 Decorate 145(tex2DArray) Binding 0 Decorate 145(tex2DArray) DescriptorSet 0 Decorate 157(itex2D) Binding 0 Decorate 157(itex2D) DescriptorSet 0 Decorate 164(itex3D) Binding 0 Decorate 164(itex3D) DescriptorSet 0 Decorate 171(itexCube) Binding 0 Decorate 171(itexCube) DescriptorSet 0 Decorate 178(itex2DArray) Binding 0 Decorate 178(itex2DArray) DescriptorSet 0 Decorate 185(utex2D) Binding 0 Decorate 185(utex2D) DescriptorSet 0 Decorate 192(utex3D) Binding 0 Decorate 192(utex3D) DescriptorSet 0 Decorate 199(utexCube) Binding 0 Decorate 199(utexCube) DescriptorSet 0 Decorate 206(utex2DArray) Binding 0 Decorate 206(utex2DArray) DescriptorSet 0 Decorate 213(itex2DRect) Binding 0 Decorate 213(itex2DRect) DescriptorSet 0 Decorate 220(utex2DRect) Binding 0 Decorate 220(utex2DRect) DescriptorSet 0 Decorate 227(itexBuffer) Binding 0 Decorate 227(itexBuffer) DescriptorSet 0 Decorate 234(utexBuffer) Binding 0 Decorate 234(utexBuffer) DescriptorSet 0 Decorate 241(tex2DMS) Binding 0 Decorate 241(tex2DMS) DescriptorSet 0 Decorate 248(itex2DMS) Binding 0 Decorate 248(itex2DMS) DescriptorSet 0 Decorate 255(utex2DMS) Binding 0 Decorate 255(utex2DMS) DescriptorSet 0 Decorate 262(tex2DMSArray) Binding 0 Decorate 262(tex2DMSArray) DescriptorSet 0 Decorate 269(itex2DMSArray) Binding 0 Decorate 269(itex2DMSArray) DescriptorSet 0 Decorate 276(utex2DMSArray) Binding 0 Decorate 276(utex2DMSArray) DescriptorSet 0 Decorate 283(tex1D) Binding 0 Decorate 283(tex1D) DescriptorSet 0 Decorate 293(tex3D) Binding 0 Decorate 293(tex3D) DescriptorSet 0 Decorate 304(tex2DRect) Binding 0 Decorate 304(tex2DRect) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypePointer Output 9(fvec4) 11(color): 10(ptr) Variable Output 12: TypeImage 8(float) 2D sampled format:Unknown 13: TypePointer UniformConstant 12 14(t2d): 13(ptr) Variable UniformConstant 16: TypeSampler 17: TypePointer UniformConstant 16 18(s): 17(ptr) Variable UniformConstant 20: TypeSampledImage 12 22: TypeVector 8(float) 2 23: 8(float) Constant 1056964608 24: 22(fvec2) ConstantComposite 23 23 26: TypeImage 8(float) 3D sampled format:Unknown 27: TypeInt 32 0 28: 27(int) Constant 4 29: TypeArray 26 28 30: TypePointer UniformConstant 29 31(t3d): 30(ptr) Variable UniformConstant 32: TypeInt 32 1 33: TypePointer Input 32(int) 34(i): 33(ptr) Variable Input 36: TypePointer UniformConstant 26 39: TypeArray 16 28 40: TypePointer UniformConstant 39 41(sA): 40(ptr) Variable UniformConstant 42: 32(int) Constant 2 45: TypeSampledImage 26 47: TypeVector 8(float) 3 48: 47(fvec3) ConstantComposite 23 23 23 58(tex2D): 13(ptr) Variable UniformConstant 62: TypeImage 8(float) Cube sampled format:Unknown 63: TypePointer UniformConstant 62 64(texCube): 63(ptr) Variable UniformConstant 67: TypeSampledImage 62 69: TypeImage 8(float) Cube array sampled format:Unknown 70: TypePointer UniformConstant 69 71(texCubeArray): 70(ptr) Variable UniformConstant 74: TypeSampledImage 69 77(sShadow): 17(ptr) Variable UniformConstant 79: TypeImage 8(float) Cube depth array sampled format:Unknown 80: TypeSampledImage 79 82: TypeImage 32(int) Cube array sampled format:Unknown 83: TypePointer UniformConstant 82 84(itexCubeArray): 83(ptr) Variable UniformConstant 87: TypeSampledImage 82 89: TypeImage 27(int) Cube array sampled format:Unknown 90: TypePointer UniformConstant 89 91(utexCubeArray): 90(ptr) Variable UniformConstant 94: TypeSampledImage 89 96: TypeImage 8(float) 1D depth array sampled format:Unknown 97: TypePointer UniformConstant 96 98(tex1DArray): 97(ptr) Variable UniformConstant 101: TypeSampledImage 96 103: TypeImage 32(int) 1D array sampled format:Unknown 104: TypePointer UniformConstant 103 105(itex1DArray): 104(ptr) Variable UniformConstant 108: TypeSampledImage 103 110: TypeImage 27(int) 1D sampled format:Unknown 111: TypePointer UniformConstant 110 112(utex1D): 111(ptr) Variable UniformConstant 115: TypeSampledImage 110 117: TypeImage 32(int) 1D sampled format:Unknown 118: TypePointer UniformConstant 117 119(itex1D): 118(ptr) Variable UniformConstant 122: TypeSampledImage 117 124: TypeImage 27(int) 1D array sampled format:Unknown 125: TypePointer UniformConstant 124 126(utex1DArray): 125(ptr) Variable UniformConstant 129: TypeSampledImage 124 131: TypeImage 8(float) Buffer sampled format:Unknown 132: TypePointer UniformConstant 131 133(texBuffer): 132(ptr) Variable UniformConstant 136: TypeSampledImage 131 140: TypeImage 8(float) Cube depth sampled format:Unknown 141: TypeSampledImage 140 143: TypeImage 8(float) 2D array sampled format:Unknown 144: TypePointer UniformConstant 143 145(tex2DArray): 144(ptr) Variable UniformConstant 148: TypeSampledImage 143 152: TypeImage 8(float) 2D depth array sampled format:Unknown 153: TypeSampledImage 152 155: TypeImage 32(int) 2D sampled format:Unknown 156: TypePointer UniformConstant 155 157(itex2D): 156(ptr) Variable UniformConstant 160: TypeSampledImage 155 162: TypeImage 32(int) 3D sampled format:Unknown 163: TypePointer UniformConstant 162 164(itex3D): 163(ptr) Variable UniformConstant 167: TypeSampledImage 162 169: TypeImage 32(int) Cube sampled format:Unknown 170: TypePointer UniformConstant 169 171(itexCube): 170(ptr) Variable UniformConstant 174: TypeSampledImage 169 176: TypeImage 32(int) 2D array sampled format:Unknown 177: TypePointer UniformConstant 176 178(itex2DArray): 177(ptr) Variable UniformConstant 181: TypeSampledImage 176 183: TypeImage 27(int) 2D sampled format:Unknown 184: TypePointer UniformConstant 183 185(utex2D): 184(ptr) Variable UniformConstant 188: TypeSampledImage 183 190: TypeImage 27(int) 3D sampled format:Unknown 191: TypePointer UniformConstant 190 192(utex3D): 191(ptr) Variable UniformConstant 195: TypeSampledImage 190 197: TypeImage 27(int) Cube sampled format:Unknown 198: TypePointer UniformConstant 197 199(utexCube): 198(ptr) Variable UniformConstant 202: TypeSampledImage 197 204: TypeImage 27(int) 2D array sampled format:Unknown 205: TypePointer UniformConstant 204 206(utex2DArray): 205(ptr) Variable UniformConstant 209: TypeSampledImage 204 211: TypeImage 32(int) Rect sampled format:Unknown 212: TypePointer UniformConstant 211 213(itex2DRect): 212(ptr) Variable UniformConstant 216: TypeSampledImage 211 218: TypeImage 27(int) Rect sampled format:Unknown 219: TypePointer UniformConstant 218 220(utex2DRect): 219(ptr) Variable UniformConstant 223: TypeSampledImage 218 225: TypeImage 32(int) Buffer sampled format:Unknown 226: TypePointer UniformConstant 225 227(itexBuffer): 226(ptr) Variable UniformConstant 230: TypeSampledImage 225 232: TypeImage 27(int) Buffer sampled format:Unknown 233: TypePointer UniformConstant 232 234(utexBuffer): 233(ptr) Variable UniformConstant 237: TypeSampledImage 232 239: TypeImage 8(float) 2D multi-sampled sampled format:Unknown 240: TypePointer UniformConstant 239 241(tex2DMS): 240(ptr) Variable UniformConstant 244: TypeSampledImage 239 246: TypeImage 32(int) 2D multi-sampled sampled format:Unknown 247: TypePointer UniformConstant 246 248(itex2DMS): 247(ptr) Variable UniformConstant 251: TypeSampledImage 246 253: TypeImage 27(int) 2D multi-sampled sampled format:Unknown 254: TypePointer UniformConstant 253 255(utex2DMS): 254(ptr) Variable UniformConstant 258: TypeSampledImage 253 260: TypeImage 8(float) 2D array multi-sampled sampled format:Unknown 261: TypePointer UniformConstant 260 262(tex2DMSArray): 261(ptr) Variable UniformConstant 265: TypeSampledImage 260 267: TypeImage 32(int) 2D array multi-sampled sampled format:Unknown 268: TypePointer UniformConstant 267 269(itex2DMSArray): 268(ptr) Variable UniformConstant 272: TypeSampledImage 267 274: TypeImage 27(int) 2D array multi-sampled sampled format:Unknown 275: TypePointer UniformConstant 274 276(utex2DMSArray): 275(ptr) Variable UniformConstant 279: TypeSampledImage 274 281: TypeImage 8(float) 1D sampled format:Unknown 282: TypePointer UniformConstant 281 283(tex1D): 282(ptr) Variable UniformConstant 286: TypeSampledImage 281 290: TypeImage 8(float) 1D depth sampled format:Unknown 291: TypeSampledImage 290 293(tex3D): 36(ptr) Variable UniformConstant 299: TypeImage 8(float) 2D depth sampled format:Unknown 300: TypeSampledImage 299 302: TypeImage 8(float) Rect sampled format:Unknown 303: TypePointer UniformConstant 302 304(tex2DRect): 303(ptr) Variable UniformConstant 307: TypeSampledImage 302 311: TypeImage 8(float) Rect depth sampled format:Unknown 312: TypeSampledImage 311 316: TypeImage 8(float) 1D array sampled format:Unknown 317: TypeSampledImage 316 4(main): 2 Function None 3 5: Label 15: 12 Load 14(t2d) 19: 16 Load 18(s) 21: 20 SampledImage 15 19 25: 9(fvec4) ImageSampleImplicitLod 21 24 Store 11(color) 25 35: 32(int) Load 34(i) 37: 36(ptr) AccessChain 31(t3d) 35 38: 26 Load 37 43: 17(ptr) AccessChain 41(sA) 42 44: 16 Load 43 46: 45 SampledImage 38 44 49: 9(fvec4) ImageSampleImplicitLod 46 48 50: 9(fvec4) Load 11(color) 51: 9(fvec4) FAdd 50 49 Store 11(color) 51 52: 12 Load 14(t2d) 53: 16 Load 18(s) 54: 20 SampledImage 52 53 55: 9(fvec4) ImageSampleImplicitLod 54 24 56: 9(fvec4) Load 11(color) 57: 9(fvec4) FAdd 56 55 Store 11(color) 57 Return FunctionEnd 6(foo(): 2 Function None 3 7: Label 59: 12 Load 58(tex2D) 60: 16 Load 18(s) 61: 20 SampledImage 59 60 65: 62 Load 64(texCube) 66: 16 Load 18(s) 68: 67 SampledImage 65 66 72: 69 Load 71(texCubeArray) 73: 16 Load 18(s) 75: 74 SampledImage 72 73 76: 69 Load 71(texCubeArray) 78: 16 Load 77(sShadow) 81: 80 SampledImage 76 78 85: 82 Load 84(itexCubeArray) 86: 16 Load 18(s) 88: 87 SampledImage 85 86 92: 89 Load 91(utexCubeArray) 93: 16 Load 18(s) 95: 94 SampledImage 92 93 99: 96 Load 98(tex1DArray) 100: 16 Load 77(sShadow) 102: 101 SampledImage 99 100 106: 103 Load 105(itex1DArray) 107: 16 Load 18(s) 109: 108 SampledImage 106 107 113: 110 Load 112(utex1D) 114: 16 Load 18(s) 116: 115 SampledImage 113 114 120: 117 Load 119(itex1D) 121: 16 Load 18(s) 123: 122 SampledImage 120 121 127: 124 Load 126(utex1DArray) 128: 16 Load 18(s) 130: 129 SampledImage 127 128 134: 131 Load 133(texBuffer) 135: 16 Load 18(s) 137: 136 SampledImage 134 135 138: 62 Load 64(texCube) 139: 16 Load 77(sShadow) 142: 141 SampledImage 138 139 146: 143 Load 145(tex2DArray) 147: 16 Load 18(s) 149: 148 SampledImage 146 147 150: 143 Load 145(tex2DArray) 151: 16 Load 77(sShadow) 154: 153 SampledImage 150 151 158: 155 Load 157(itex2D) 159: 16 Load 18(s) 161: 160 SampledImage 158 159 165: 162 Load 164(itex3D) 166: 16 Load 18(s) 168: 167 SampledImage 165 166 172: 169 Load 171(itexCube) 173: 16 Load 18(s) 175: 174 SampledImage 172 173 179: 176 Load 178(itex2DArray) 180: 16 Load 18(s) 182: 181 SampledImage 179 180 186: 183 Load 185(utex2D) 187: 16 Load 18(s) 189: 188 SampledImage 186 187 193: 190 Load 192(utex3D) 194: 16 Load 18(s) 196: 195 SampledImage 193 194 200: 197 Load 199(utexCube) 201: 16 Load 18(s) 203: 202 SampledImage 200 201 207: 204 Load 206(utex2DArray) 208: 16 Load 18(s) 210: 209 SampledImage 207 208 214: 211 Load 213(itex2DRect) 215: 16 Load 18(s) 217: 216 SampledImage 214 215 221: 218 Load 220(utex2DRect) 222: 16 Load 18(s) 224: 223 SampledImage 221 222 228: 225 Load 227(itexBuffer) 229: 16 Load 18(s) 231: 230 SampledImage 228 229 235: 232 Load 234(utexBuffer) 236: 16 Load 18(s) 238: 237 SampledImage 235 236 242: 239 Load 241(tex2DMS) 243: 16 Load 18(s) 245: 244 SampledImage 242 243 249: 246 Load 248(itex2DMS) 250: 16 Load 18(s) 252: 251 SampledImage 249 250 256: 253 Load 255(utex2DMS) 257: 16 Load 18(s) 259: 258 SampledImage 256 257 263: 260 Load 262(tex2DMSArray) 264: 16 Load 18(s) 266: 265 SampledImage 263 264 270: 267 Load 269(itex2DMSArray) 271: 16 Load 18(s) 273: 272 SampledImage 270 271 277: 274 Load 276(utex2DMSArray) 278: 16 Load 18(s) 280: 279 SampledImage 277 278 284: 281 Load 283(tex1D) 285: 16 Load 18(s) 287: 286 SampledImage 284 285 288: 281 Load 283(tex1D) 289: 16 Load 77(sShadow) 292: 291 SampledImage 288 289 294: 26 Load 293(tex3D) 295: 16 Load 18(s) 296: 45 SampledImage 294 295 297: 12 Load 58(tex2D) 298: 16 Load 77(sShadow) 301: 300 SampledImage 297 298 305: 302 Load 304(tex2DRect) 306: 16 Load 18(s) 308: 307 SampledImage 305 306 309: 302 Load 304(tex2DRect) 310: 16 Load 77(sShadow) 313: 312 SampledImage 309 310 314: 96 Load 98(tex1DArray) 315: 16 Load 18(s) 318: 317 SampledImage 314 315 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.set.vert.out000066400000000000000000000043161506534232700215650ustar00rootroot00000000000000spv.set.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" 9 Source GLSL 450 Name 4 "main" Name 9 "color" Name 10 "setBuf" MemberName 10(setBuf) 0 "color" Name 12 "setBufInst" Name 21 "samp2D" Decorate 9(color) Location 0 Decorate 10(setBuf) BufferBlock MemberDecorate 10(setBuf) 0 Offset 0 Decorate 12(setBufInst) Binding 8 Decorate 12(setBufInst) DescriptorSet 0 Decorate 21(samp2D) Binding 7 Decorate 21(samp2D) DescriptorSet 4 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(setBuf): TypeStruct 7(fvec4) 11: TypePointer Uniform 10(setBuf) 12(setBufInst): 11(ptr) Variable Uniform 13: TypeInt 32 1 14: 13(int) Constant 0 15: TypePointer Uniform 7(fvec4) 18: TypeImage 6(float) 2D sampled format:Unknown 19: TypeSampledImage 18 20: TypePointer UniformConstant 19 21(samp2D): 20(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 16: 15(ptr) AccessChain 12(setBufInst) 14 17: 7(fvec4) Load 16 Store 9(color) 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shaderBallot.comp.out000066400000000000000000000645671506534232700233720ustar00rootroot00000000000000spv.shaderBallot.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 397 Capability Shader Capability Int64 Capability SubgroupBallotKHR Extension "SPV_KHR_shader_ballot" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 22 29 36 43 50 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_ARB_shader_ballot" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubGroupInvocationARB" Name 12 "gl_SubGroupSizeARB" Name 19 "relMask" Name 22 "gl_SubGroupEqMaskARB" Name 29 "gl_SubGroupGeMaskARB" Name 36 "gl_SubGroupGtMaskARB" Name 43 "gl_SubGroupLeMaskARB" Name 50 "gl_SubGroupLtMaskARB" Name 72 "Buffers" MemberName 72(Buffers) 0 "f4" MemberName 72(Buffers) 1 "i4" MemberName 72(Buffers) 2 "u4" Name 75 "data" Decorate 10(gl_SubGroupInvocationARB) BuiltIn SubgroupLocalInvocationId Decorate 12(gl_SubGroupSizeARB) BuiltIn SubgroupSize Decorate 22(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR Decorate 29(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR Decorate 36(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR Decorate 43(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR Decorate 50(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR Decorate 72(Buffers) BufferBlock MemberDecorate 72(Buffers) 0 Offset 0 MemberDecorate 72(Buffers) 1 Offset 16 MemberDecorate 72(Buffers) 2 Offset 32 Decorate 75(data) Binding 0 Decorate 75(data) DescriptorSet 0 Decorate 396 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubGroupInvocationARB): 9(ptr) Variable Input 12(gl_SubGroupSizeARB): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeInt 64 0 18: TypePointer Function 17(int64_t) 20: TypeVector 6(int) 4 21: TypePointer Input 20(ivec4) 22(gl_SubGroupEqMaskARB): 21(ptr) Variable Input 26: TypeVector 6(int) 2 29(gl_SubGroupGeMaskARB): 21(ptr) Variable Input 36(gl_SubGroupGtMaskARB): 21(ptr) Variable Input 43(gl_SubGroupLeMaskARB): 21(ptr) Variable Input 50(gl_SubGroupLtMaskARB): 21(ptr) Variable Input 58: TypeBool 59: 58(bool) ConstantTrue 68: TypeFloat 32 69: TypeVector 68(float) 4 70: TypeInt 32 1 71: TypeVector 70(int) 4 72(Buffers): TypeStruct 69(fvec4) 71(ivec4) 20(ivec4) 73: TypeArray 72(Buffers) 15 74: TypePointer Uniform 73 75(data): 74(ptr) Variable Uniform 77: 70(int) Constant 0 78: 6(int) Constant 0 79: TypePointer Uniform 68(float) 86: 70(int) Constant 1 87: TypeVector 68(float) 2 88: TypePointer Uniform 69(fvec4) 100: 6(int) Constant 1 104: 70(int) Constant 2 105: TypeVector 68(float) 3 121: 6(int) Constant 2 125: 70(int) Constant 3 140: TypePointer Uniform 70(int) 147: TypeVector 70(int) 2 148: TypePointer Uniform 71(ivec4) 163: TypeVector 70(int) 3 196: TypePointer Uniform 6(int) 203: TypePointer Uniform 20(ivec4) 218: TypeVector 6(int) 3 395: 6(int) Constant 8 396: 218(ivec3) ConstantComposite 395 395 100 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 19(relMask): 18(ptr) Variable Function 11: 6(int) Load 10(gl_SubGroupInvocationARB) 13: 6(int) Load 12(gl_SubGroupSizeARB) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 23: 20(ivec4) Load 22(gl_SubGroupEqMaskARB) 24: 6(int) CompositeExtract 23 0 25: 6(int) CompositeExtract 23 1 27: 26(ivec2) CompositeConstruct 24 25 28: 17(int64_t) Bitcast 27 30: 20(ivec4) Load 29(gl_SubGroupGeMaskARB) 31: 6(int) CompositeExtract 30 0 32: 6(int) CompositeExtract 30 1 33: 26(ivec2) CompositeConstruct 31 32 34: 17(int64_t) Bitcast 33 35: 17(int64_t) IAdd 28 34 37: 20(ivec4) Load 36(gl_SubGroupGtMaskARB) 38: 6(int) CompositeExtract 37 0 39: 6(int) CompositeExtract 37 1 40: 26(ivec2) CompositeConstruct 38 39 41: 17(int64_t) Bitcast 40 42: 17(int64_t) IAdd 35 41 44: 20(ivec4) Load 43(gl_SubGroupLeMaskARB) 45: 6(int) CompositeExtract 44 0 46: 6(int) CompositeExtract 44 1 47: 26(ivec2) CompositeConstruct 45 46 48: 17(int64_t) Bitcast 47 49: 17(int64_t) IAdd 42 48 51: 20(ivec4) Load 50(gl_SubGroupLtMaskARB) 52: 6(int) CompositeExtract 51 0 53: 6(int) CompositeExtract 51 1 54: 26(ivec2) CompositeConstruct 52 53 55: 17(int64_t) Bitcast 54 56: 17(int64_t) IAdd 49 55 Store 19(relMask) 56 57: 17(int64_t) Load 19(relMask) 60: 20(ivec4) SubgroupBallotKHR 59 61: 6(int) CompositeExtract 60 0 62: 6(int) CompositeExtract 60 1 63: 26(ivec2) CompositeConstruct 61 62 64: 17(int64_t) Bitcast 63 65: 58(bool) IEqual 57 64 SelectionMerge 67 None BranchConditional 65 66 250 66: Label 76: 6(int) Load 8(invocation) 80: 79(ptr) AccessChain 75(data) 77 77 78 81: 68(float) Load 80 82: 6(int) Load 8(invocation) 83: 68(float) SubgroupReadInvocationKHR 81 82 84: 79(ptr) AccessChain 75(data) 76 77 78 Store 84 83 85: 6(int) Load 8(invocation) 89: 88(ptr) AccessChain 75(data) 86 77 90: 69(fvec4) Load 89 91: 87(fvec2) VectorShuffle 90 90 0 1 92: 6(int) Load 8(invocation) 93: 68(float) CompositeExtract 91 0 94: 68(float) SubgroupReadInvocationKHR 93 92 95: 68(float) CompositeExtract 91 1 96: 68(float) SubgroupReadInvocationKHR 95 92 97: 87(fvec2) CompositeConstruct 94 96 98: 79(ptr) AccessChain 75(data) 85 77 78 99: 68(float) CompositeExtract 97 0 Store 98 99 101: 79(ptr) AccessChain 75(data) 85 77 100 102: 68(float) CompositeExtract 97 1 Store 101 102 103: 6(int) Load 8(invocation) 106: 88(ptr) AccessChain 75(data) 104 77 107: 69(fvec4) Load 106 108: 105(fvec3) VectorShuffle 107 107 0 1 2 109: 6(int) Load 8(invocation) 110: 68(float) CompositeExtract 108 0 111: 68(float) SubgroupReadInvocationKHR 110 109 112: 68(float) CompositeExtract 108 1 113: 68(float) SubgroupReadInvocationKHR 112 109 114: 68(float) CompositeExtract 108 2 115: 68(float) SubgroupReadInvocationKHR 114 109 116: 105(fvec3) CompositeConstruct 111 113 115 117: 79(ptr) AccessChain 75(data) 103 77 78 118: 68(float) CompositeExtract 116 0 Store 117 118 119: 79(ptr) AccessChain 75(data) 103 77 100 120: 68(float) CompositeExtract 116 1 Store 119 120 122: 79(ptr) AccessChain 75(data) 103 77 121 123: 68(float) CompositeExtract 116 2 Store 122 123 124: 6(int) Load 8(invocation) 126: 88(ptr) AccessChain 75(data) 125 77 127: 69(fvec4) Load 126 128: 6(int) Load 8(invocation) 129: 68(float) CompositeExtract 127 0 130: 68(float) SubgroupReadInvocationKHR 129 128 131: 68(float) CompositeExtract 127 1 132: 68(float) SubgroupReadInvocationKHR 131 128 133: 68(float) CompositeExtract 127 2 134: 68(float) SubgroupReadInvocationKHR 133 128 135: 68(float) CompositeExtract 127 3 136: 68(float) SubgroupReadInvocationKHR 135 128 137: 69(fvec4) CompositeConstruct 130 132 134 136 138: 88(ptr) AccessChain 75(data) 124 77 Store 138 137 139: 6(int) Load 8(invocation) 141: 140(ptr) AccessChain 75(data) 77 86 78 142: 70(int) Load 141 143: 6(int) Load 8(invocation) 144: 70(int) SubgroupReadInvocationKHR 142 143 145: 140(ptr) AccessChain 75(data) 139 86 78 Store 145 144 146: 6(int) Load 8(invocation) 149: 148(ptr) AccessChain 75(data) 86 86 150: 71(ivec4) Load 149 151: 147(ivec2) VectorShuffle 150 150 0 1 152: 6(int) Load 8(invocation) 153: 70(int) CompositeExtract 151 0 154: 70(int) SubgroupReadInvocationKHR 153 152 155: 70(int) CompositeExtract 151 1 156: 70(int) SubgroupReadInvocationKHR 155 152 157: 147(ivec2) CompositeConstruct 154 156 158: 140(ptr) AccessChain 75(data) 146 86 78 159: 70(int) CompositeExtract 157 0 Store 158 159 160: 140(ptr) AccessChain 75(data) 146 86 100 161: 70(int) CompositeExtract 157 1 Store 160 161 162: 6(int) Load 8(invocation) 164: 148(ptr) AccessChain 75(data) 104 86 165: 71(ivec4) Load 164 166: 163(ivec3) VectorShuffle 165 165 0 1 2 167: 6(int) Load 8(invocation) 168: 70(int) CompositeExtract 166 0 169: 70(int) SubgroupReadInvocationKHR 168 167 170: 70(int) CompositeExtract 166 1 171: 70(int) SubgroupReadInvocationKHR 170 167 172: 70(int) CompositeExtract 166 2 173: 70(int) SubgroupReadInvocationKHR 172 167 174: 163(ivec3) CompositeConstruct 169 171 173 175: 140(ptr) AccessChain 75(data) 162 86 78 176: 70(int) CompositeExtract 174 0 Store 175 176 177: 140(ptr) AccessChain 75(data) 162 86 100 178: 70(int) CompositeExtract 174 1 Store 177 178 179: 140(ptr) AccessChain 75(data) 162 86 121 180: 70(int) CompositeExtract 174 2 Store 179 180 181: 6(int) Load 8(invocation) 182: 148(ptr) AccessChain 75(data) 125 86 183: 71(ivec4) Load 182 184: 6(int) Load 8(invocation) 185: 70(int) CompositeExtract 183 0 186: 70(int) SubgroupReadInvocationKHR 185 184 187: 70(int) CompositeExtract 183 1 188: 70(int) SubgroupReadInvocationKHR 187 184 189: 70(int) CompositeExtract 183 2 190: 70(int) SubgroupReadInvocationKHR 189 184 191: 70(int) CompositeExtract 183 3 192: 70(int) SubgroupReadInvocationKHR 191 184 193: 71(ivec4) CompositeConstruct 186 188 190 192 194: 148(ptr) AccessChain 75(data) 181 86 Store 194 193 195: 6(int) Load 8(invocation) 197: 196(ptr) AccessChain 75(data) 77 104 78 198: 6(int) Load 197 199: 6(int) Load 8(invocation) 200: 6(int) SubgroupReadInvocationKHR 198 199 201: 196(ptr) AccessChain 75(data) 195 104 78 Store 201 200 202: 6(int) Load 8(invocation) 204: 203(ptr) AccessChain 75(data) 86 104 205: 20(ivec4) Load 204 206: 26(ivec2) VectorShuffle 205 205 0 1 207: 6(int) Load 8(invocation) 208: 6(int) CompositeExtract 206 0 209: 6(int) SubgroupReadInvocationKHR 208 207 210: 6(int) CompositeExtract 206 1 211: 6(int) SubgroupReadInvocationKHR 210 207 212: 26(ivec2) CompositeConstruct 209 211 213: 196(ptr) AccessChain 75(data) 202 104 78 214: 6(int) CompositeExtract 212 0 Store 213 214 215: 196(ptr) AccessChain 75(data) 202 104 100 216: 6(int) CompositeExtract 212 1 Store 215 216 217: 6(int) Load 8(invocation) 219: 203(ptr) AccessChain 75(data) 104 104 220: 20(ivec4) Load 219 221: 218(ivec3) VectorShuffle 220 220 0 1 2 222: 6(int) Load 8(invocation) 223: 6(int) CompositeExtract 221 0 224: 6(int) SubgroupReadInvocationKHR 223 222 225: 6(int) CompositeExtract 221 1 226: 6(int) SubgroupReadInvocationKHR 225 222 227: 6(int) CompositeExtract 221 2 228: 6(int) SubgroupReadInvocationKHR 227 222 229: 218(ivec3) CompositeConstruct 224 226 228 230: 196(ptr) AccessChain 75(data) 217 104 78 231: 6(int) CompositeExtract 229 0 Store 230 231 232: 196(ptr) AccessChain 75(data) 217 104 100 233: 6(int) CompositeExtract 229 1 Store 232 233 234: 196(ptr) AccessChain 75(data) 217 104 121 235: 6(int) CompositeExtract 229 2 Store 234 235 236: 6(int) Load 8(invocation) 237: 203(ptr) AccessChain 75(data) 125 104 238: 20(ivec4) Load 237 239: 6(int) Load 8(invocation) 240: 6(int) CompositeExtract 238 0 241: 6(int) SubgroupReadInvocationKHR 240 239 242: 6(int) CompositeExtract 238 1 243: 6(int) SubgroupReadInvocationKHR 242 239 244: 6(int) CompositeExtract 238 2 245: 6(int) SubgroupReadInvocationKHR 244 239 246: 6(int) CompositeExtract 238 3 247: 6(int) SubgroupReadInvocationKHR 246 239 248: 20(ivec4) CompositeConstruct 241 243 245 247 249: 203(ptr) AccessChain 75(data) 236 104 Store 249 248 Branch 67 250: Label 251: 6(int) Load 8(invocation) 252: 79(ptr) AccessChain 75(data) 77 77 78 253: 68(float) Load 252 254: 68(float) SubgroupFirstInvocationKHR 253 255: 79(ptr) AccessChain 75(data) 251 77 78 Store 255 254 256: 6(int) Load 8(invocation) 257: 88(ptr) AccessChain 75(data) 86 77 258: 69(fvec4) Load 257 259: 87(fvec2) VectorShuffle 258 258 0 1 260: 68(float) CompositeExtract 259 0 261: 68(float) SubgroupFirstInvocationKHR 260 262: 68(float) CompositeExtract 259 1 263: 68(float) SubgroupFirstInvocationKHR 262 264: 87(fvec2) CompositeConstruct 261 263 265: 79(ptr) AccessChain 75(data) 256 77 78 266: 68(float) CompositeExtract 264 0 Store 265 266 267: 79(ptr) AccessChain 75(data) 256 77 100 268: 68(float) CompositeExtract 264 1 Store 267 268 269: 6(int) Load 8(invocation) 270: 88(ptr) AccessChain 75(data) 104 77 271: 69(fvec4) Load 270 272: 105(fvec3) VectorShuffle 271 271 0 1 2 273: 68(float) CompositeExtract 272 0 274: 68(float) SubgroupFirstInvocationKHR 273 275: 68(float) CompositeExtract 272 1 276: 68(float) SubgroupFirstInvocationKHR 275 277: 68(float) CompositeExtract 272 2 278: 68(float) SubgroupFirstInvocationKHR 277 279: 105(fvec3) CompositeConstruct 274 276 278 280: 79(ptr) AccessChain 75(data) 269 77 78 281: 68(float) CompositeExtract 279 0 Store 280 281 282: 79(ptr) AccessChain 75(data) 269 77 100 283: 68(float) CompositeExtract 279 1 Store 282 283 284: 79(ptr) AccessChain 75(data) 269 77 121 285: 68(float) CompositeExtract 279 2 Store 284 285 286: 6(int) Load 8(invocation) 287: 88(ptr) AccessChain 75(data) 125 77 288: 69(fvec4) Load 287 289: 68(float) CompositeExtract 288 0 290: 68(float) SubgroupFirstInvocationKHR 289 291: 68(float) CompositeExtract 288 1 292: 68(float) SubgroupFirstInvocationKHR 291 293: 68(float) CompositeExtract 288 2 294: 68(float) SubgroupFirstInvocationKHR 293 295: 68(float) CompositeExtract 288 3 296: 68(float) SubgroupFirstInvocationKHR 295 297: 69(fvec4) CompositeConstruct 290 292 294 296 298: 88(ptr) AccessChain 75(data) 286 77 Store 298 297 299: 6(int) Load 8(invocation) 300: 140(ptr) AccessChain 75(data) 77 86 78 301: 70(int) Load 300 302: 70(int) SubgroupFirstInvocationKHR 301 303: 140(ptr) AccessChain 75(data) 299 86 78 Store 303 302 304: 6(int) Load 8(invocation) 305: 148(ptr) AccessChain 75(data) 86 86 306: 71(ivec4) Load 305 307: 147(ivec2) VectorShuffle 306 306 0 1 308: 70(int) CompositeExtract 307 0 309: 70(int) SubgroupFirstInvocationKHR 308 310: 70(int) CompositeExtract 307 1 311: 70(int) SubgroupFirstInvocationKHR 310 312: 147(ivec2) CompositeConstruct 309 311 313: 140(ptr) AccessChain 75(data) 304 86 78 314: 70(int) CompositeExtract 312 0 Store 313 314 315: 140(ptr) AccessChain 75(data) 304 86 100 316: 70(int) CompositeExtract 312 1 Store 315 316 317: 6(int) Load 8(invocation) 318: 148(ptr) AccessChain 75(data) 104 86 319: 71(ivec4) Load 318 320: 163(ivec3) VectorShuffle 319 319 0 1 2 321: 70(int) CompositeExtract 320 0 322: 70(int) SubgroupFirstInvocationKHR 321 323: 70(int) CompositeExtract 320 1 324: 70(int) SubgroupFirstInvocationKHR 323 325: 70(int) CompositeExtract 320 2 326: 70(int) SubgroupFirstInvocationKHR 325 327: 163(ivec3) CompositeConstruct 322 324 326 328: 140(ptr) AccessChain 75(data) 317 86 78 329: 70(int) CompositeExtract 327 0 Store 328 329 330: 140(ptr) AccessChain 75(data) 317 86 100 331: 70(int) CompositeExtract 327 1 Store 330 331 332: 140(ptr) AccessChain 75(data) 317 86 121 333: 70(int) CompositeExtract 327 2 Store 332 333 334: 6(int) Load 8(invocation) 335: 148(ptr) AccessChain 75(data) 125 86 336: 71(ivec4) Load 335 337: 70(int) CompositeExtract 336 0 338: 70(int) SubgroupFirstInvocationKHR 337 339: 70(int) CompositeExtract 336 1 340: 70(int) SubgroupFirstInvocationKHR 339 341: 70(int) CompositeExtract 336 2 342: 70(int) SubgroupFirstInvocationKHR 341 343: 70(int) CompositeExtract 336 3 344: 70(int) SubgroupFirstInvocationKHR 343 345: 71(ivec4) CompositeConstruct 338 340 342 344 346: 148(ptr) AccessChain 75(data) 334 86 Store 346 345 347: 6(int) Load 8(invocation) 348: 196(ptr) AccessChain 75(data) 77 104 78 349: 6(int) Load 348 350: 6(int) SubgroupFirstInvocationKHR 349 351: 196(ptr) AccessChain 75(data) 347 104 78 Store 351 350 352: 6(int) Load 8(invocation) 353: 203(ptr) AccessChain 75(data) 86 104 354: 20(ivec4) Load 353 355: 26(ivec2) VectorShuffle 354 354 0 1 356: 6(int) CompositeExtract 355 0 357: 6(int) SubgroupFirstInvocationKHR 356 358: 6(int) CompositeExtract 355 1 359: 6(int) SubgroupFirstInvocationKHR 358 360: 26(ivec2) CompositeConstruct 357 359 361: 196(ptr) AccessChain 75(data) 352 104 78 362: 6(int) CompositeExtract 360 0 Store 361 362 363: 196(ptr) AccessChain 75(data) 352 104 100 364: 6(int) CompositeExtract 360 1 Store 363 364 365: 6(int) Load 8(invocation) 366: 203(ptr) AccessChain 75(data) 104 104 367: 20(ivec4) Load 366 368: 218(ivec3) VectorShuffle 367 367 0 1 2 369: 6(int) CompositeExtract 368 0 370: 6(int) SubgroupFirstInvocationKHR 369 371: 6(int) CompositeExtract 368 1 372: 6(int) SubgroupFirstInvocationKHR 371 373: 6(int) CompositeExtract 368 2 374: 6(int) SubgroupFirstInvocationKHR 373 375: 218(ivec3) CompositeConstruct 370 372 374 376: 196(ptr) AccessChain 75(data) 365 104 78 377: 6(int) CompositeExtract 375 0 Store 376 377 378: 196(ptr) AccessChain 75(data) 365 104 100 379: 6(int) CompositeExtract 375 1 Store 378 379 380: 196(ptr) AccessChain 75(data) 365 104 121 381: 6(int) CompositeExtract 375 2 Store 380 381 382: 6(int) Load 8(invocation) 383: 203(ptr) AccessChain 75(data) 125 104 384: 20(ivec4) Load 383 385: 6(int) CompositeExtract 384 0 386: 6(int) SubgroupFirstInvocationKHR 385 387: 6(int) CompositeExtract 384 1 388: 6(int) SubgroupFirstInvocationKHR 387 389: 6(int) CompositeExtract 384 2 390: 6(int) SubgroupFirstInvocationKHR 389 391: 6(int) CompositeExtract 384 3 392: 6(int) SubgroupFirstInvocationKHR 391 393: 20(ivec4) CompositeConstruct 386 388 390 392 394: 203(ptr) AccessChain 75(data) 382 104 Store 394 393 Branch 67 67: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shaderBallotAMD.comp.out000066400000000000000000002422311506534232700236760ustar00rootroot00000000000000spv.shaderBallotAMD.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 1343 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Groups Capability Int16 Capability StorageUniformBufferBlock16 Extension "SPV_AMD_shader_ballot" Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_AMD_gpu_shader_half_float" SourceExtension "GL_AMD_gpu_shader_int16" SourceExtension "GL_AMD_shader_ballot" SourceExtension "GL_ARB_gpu_shader_int64" Name 4 "main" Name 21 "Buffers" MemberName 21(Buffers) 0 "i" MemberName 21(Buffers) 1 "uv" MemberName 21(Buffers) 2 "fv" MemberName 21(Buffers) 3 "dv" MemberName 21(Buffers) 4 "i64" MemberName 21(Buffers) 5 "u64v" MemberName 21(Buffers) 6 "f16v" MemberName 21(Buffers) 7 "i16v" MemberName 21(Buffers) 8 "u16" Name 23 "" Decorate 21(Buffers) BufferBlock MemberDecorate 21(Buffers) 0 Offset 0 MemberDecorate 21(Buffers) 1 Offset 8 MemberDecorate 21(Buffers) 2 Offset 16 MemberDecorate 21(Buffers) 3 Offset 32 MemberDecorate 21(Buffers) 4 Offset 64 MemberDecorate 21(Buffers) 5 Offset 80 MemberDecorate 21(Buffers) 6 Offset 96 MemberDecorate 21(Buffers) 7 Offset 104 MemberDecorate 21(Buffers) 8 Offset 112 Decorate 23 Binding 0 Decorate 23 DescriptorSet 0 Decorate 1342 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: TypeVector 7(int) 2 9: TypeFloat 32 10: TypeVector 9(float) 3 11: TypeFloat 64 12: TypeVector 11(float64_t) 4 13: TypeInt 64 1 14: TypeInt 64 0 15: TypeVector 14(int64_t) 2 16: TypeFloat 16 17: TypeVector 16(float16_t) 3 18: TypeInt 16 1 19: TypeVector 18(int16_t) 4 20: TypeInt 16 0 21(Buffers): TypeStruct 6(int) 8(ivec2) 10(fvec3) 12(f64vec4) 13(int64_t) 15(i64vec2) 17(f16vec3) 19(i16vec4) 20(int16_t) 22: TypePointer Uniform 21(Buffers) 23: 22(ptr) Variable Uniform 24: 6(int) Constant 0 25: TypePointer Uniform 6(int) 28: 7(int) Constant 3 31: 6(int) Constant 1 32: TypePointer Uniform 8(ivec2) 41: 6(int) Constant 2 42: TypePointer Uniform 10(fvec3) 53: 6(int) Constant 3 54: TypePointer Uniform 12(f64vec4) 67: 6(int) Constant 4 68: TypePointer Uniform 13(int64_t) 73: 6(int) Constant 5 74: TypePointer Uniform 15(i64vec2) 83: 6(int) Constant 6 84: TypePointer Uniform 17(f16vec3) 95: 6(int) Constant 7 96: TypePointer Uniform 19(i16vec4) 109: 6(int) Constant 8 110: TypePointer Uniform 20(int16_t) 1339: TypeVector 7(int) 3 1340: 7(int) Constant 8 1341: 7(int) Constant 1 1342: 1339(ivec3) ConstantComposite 1340 1340 1341 4(main): 2 Function None 3 5: Label 26: 25(ptr) AccessChain 23 24 27: 6(int) Load 26 29: 6(int) GroupSMin 28 Reduce 27 30: 25(ptr) AccessChain 23 24 Store 30 29 33: 32(ptr) AccessChain 23 31 34: 8(ivec2) Load 33 35: 7(int) CompositeExtract 34 0 36: 7(int) GroupUMin 28 Reduce 35 37: 7(int) CompositeExtract 34 1 38: 7(int) GroupUMin 28 Reduce 37 39: 8(ivec2) CompositeConstruct 36 38 40: 32(ptr) AccessChain 23 31 Store 40 39 43: 42(ptr) AccessChain 23 41 44: 10(fvec3) Load 43 45: 9(float) CompositeExtract 44 0 46: 9(float) GroupFMin 28 Reduce 45 47: 9(float) CompositeExtract 44 1 48: 9(float) GroupFMin 28 Reduce 47 49: 9(float) CompositeExtract 44 2 50: 9(float) GroupFMin 28 Reduce 49 51: 10(fvec3) CompositeConstruct 46 48 50 52: 42(ptr) AccessChain 23 41 Store 52 51 55: 54(ptr) AccessChain 23 53 56: 12(f64vec4) Load 55 57:11(float64_t) CompositeExtract 56 0 58:11(float64_t) GroupFMin 28 Reduce 57 59:11(float64_t) CompositeExtract 56 1 60:11(float64_t) GroupFMin 28 Reduce 59 61:11(float64_t) CompositeExtract 56 2 62:11(float64_t) GroupFMin 28 Reduce 61 63:11(float64_t) CompositeExtract 56 3 64:11(float64_t) GroupFMin 28 Reduce 63 65: 12(f64vec4) CompositeConstruct 58 60 62 64 66: 54(ptr) AccessChain 23 53 Store 66 65 69: 68(ptr) AccessChain 23 67 70: 13(int64_t) Load 69 71: 13(int64_t) GroupSMin 28 Reduce 70 72: 68(ptr) AccessChain 23 67 Store 72 71 75: 74(ptr) AccessChain 23 73 76: 15(i64vec2) Load 75 77: 14(int64_t) CompositeExtract 76 0 78: 14(int64_t) GroupUMin 28 Reduce 77 79: 14(int64_t) CompositeExtract 76 1 80: 14(int64_t) GroupUMin 28 Reduce 79 81: 15(i64vec2) CompositeConstruct 78 80 82: 74(ptr) AccessChain 23 73 Store 82 81 85: 84(ptr) AccessChain 23 83 86: 17(f16vec3) Load 85 87:16(float16_t) CompositeExtract 86 0 88:16(float16_t) GroupFMin 28 Reduce 87 89:16(float16_t) CompositeExtract 86 1 90:16(float16_t) GroupFMin 28 Reduce 89 91:16(float16_t) CompositeExtract 86 2 92:16(float16_t) GroupFMin 28 Reduce 91 93: 17(f16vec3) CompositeConstruct 88 90 92 94: 84(ptr) AccessChain 23 83 Store 94 93 97: 96(ptr) AccessChain 23 95 98: 19(i16vec4) Load 97 99: 18(int16_t) CompositeExtract 98 0 100: 18(int16_t) GroupSMin 28 Reduce 99 101: 18(int16_t) CompositeExtract 98 1 102: 18(int16_t) GroupSMin 28 Reduce 101 103: 18(int16_t) CompositeExtract 98 2 104: 18(int16_t) GroupSMin 28 Reduce 103 105: 18(int16_t) CompositeExtract 98 3 106: 18(int16_t) GroupSMin 28 Reduce 105 107: 19(i16vec4) CompositeConstruct 100 102 104 106 108: 96(ptr) AccessChain 23 95 Store 108 107 111: 110(ptr) AccessChain 23 109 112: 20(int16_t) Load 111 113: 20(int16_t) GroupUMin 28 Reduce 112 114: 110(ptr) AccessChain 23 109 Store 114 113 115: 25(ptr) AccessChain 23 24 116: 6(int) Load 115 117: 6(int) GroupSMax 28 Reduce 116 118: 25(ptr) AccessChain 23 24 Store 118 117 119: 32(ptr) AccessChain 23 31 120: 8(ivec2) Load 119 121: 7(int) CompositeExtract 120 0 122: 7(int) GroupUMax 28 Reduce 121 123: 7(int) CompositeExtract 120 1 124: 7(int) GroupUMax 28 Reduce 123 125: 8(ivec2) CompositeConstruct 122 124 126: 32(ptr) AccessChain 23 31 Store 126 125 127: 42(ptr) AccessChain 23 41 128: 10(fvec3) Load 127 129: 9(float) CompositeExtract 128 0 130: 9(float) GroupFMax 28 Reduce 129 131: 9(float) CompositeExtract 128 1 132: 9(float) GroupFMax 28 Reduce 131 133: 9(float) CompositeExtract 128 2 134: 9(float) GroupFMax 28 Reduce 133 135: 10(fvec3) CompositeConstruct 130 132 134 136: 42(ptr) AccessChain 23 41 Store 136 135 137: 54(ptr) AccessChain 23 53 138: 12(f64vec4) Load 137 139:11(float64_t) CompositeExtract 138 0 140:11(float64_t) GroupFMax 28 Reduce 139 141:11(float64_t) CompositeExtract 138 1 142:11(float64_t) GroupFMax 28 Reduce 141 143:11(float64_t) CompositeExtract 138 2 144:11(float64_t) GroupFMax 28 Reduce 143 145:11(float64_t) CompositeExtract 138 3 146:11(float64_t) GroupFMax 28 Reduce 145 147: 12(f64vec4) CompositeConstruct 140 142 144 146 148: 54(ptr) AccessChain 23 53 Store 148 147 149: 68(ptr) AccessChain 23 67 150: 13(int64_t) Load 149 151: 13(int64_t) GroupSMax 28 Reduce 150 152: 68(ptr) AccessChain 23 67 Store 152 151 153: 74(ptr) AccessChain 23 73 154: 15(i64vec2) Load 153 155: 14(int64_t) CompositeExtract 154 0 156: 14(int64_t) GroupUMax 28 Reduce 155 157: 14(int64_t) CompositeExtract 154 1 158: 14(int64_t) GroupUMax 28 Reduce 157 159: 15(i64vec2) CompositeConstruct 156 158 160: 74(ptr) AccessChain 23 73 Store 160 159 161: 84(ptr) AccessChain 23 83 162: 17(f16vec3) Load 161 163:16(float16_t) CompositeExtract 162 0 164:16(float16_t) GroupFMax 28 Reduce 163 165:16(float16_t) CompositeExtract 162 1 166:16(float16_t) GroupFMax 28 Reduce 165 167:16(float16_t) CompositeExtract 162 2 168:16(float16_t) GroupFMax 28 Reduce 167 169: 17(f16vec3) CompositeConstruct 164 166 168 170: 84(ptr) AccessChain 23 83 Store 170 169 171: 96(ptr) AccessChain 23 95 172: 19(i16vec4) Load 171 173: 18(int16_t) CompositeExtract 172 0 174: 18(int16_t) GroupSMax 28 Reduce 173 175: 18(int16_t) CompositeExtract 172 1 176: 18(int16_t) GroupSMax 28 Reduce 175 177: 18(int16_t) CompositeExtract 172 2 178: 18(int16_t) GroupSMax 28 Reduce 177 179: 18(int16_t) CompositeExtract 172 3 180: 18(int16_t) GroupSMax 28 Reduce 179 181: 19(i16vec4) CompositeConstruct 174 176 178 180 182: 96(ptr) AccessChain 23 95 Store 182 181 183: 110(ptr) AccessChain 23 109 184: 20(int16_t) Load 183 185: 20(int16_t) GroupUMax 28 Reduce 184 186: 110(ptr) AccessChain 23 109 Store 186 185 187: 25(ptr) AccessChain 23 24 188: 6(int) Load 187 189: 6(int) GroupIAdd 28 Reduce 188 190: 25(ptr) AccessChain 23 24 Store 190 189 191: 32(ptr) AccessChain 23 31 192: 8(ivec2) Load 191 193: 7(int) CompositeExtract 192 0 194: 7(int) GroupIAdd 28 Reduce 193 195: 7(int) CompositeExtract 192 1 196: 7(int) GroupIAdd 28 Reduce 195 197: 8(ivec2) CompositeConstruct 194 196 198: 32(ptr) AccessChain 23 31 Store 198 197 199: 42(ptr) AccessChain 23 41 200: 10(fvec3) Load 199 201: 9(float) CompositeExtract 200 0 202: 9(float) GroupFAdd 28 Reduce 201 203: 9(float) CompositeExtract 200 1 204: 9(float) GroupFAdd 28 Reduce 203 205: 9(float) CompositeExtract 200 2 206: 9(float) GroupFAdd 28 Reduce 205 207: 10(fvec3) CompositeConstruct 202 204 206 208: 42(ptr) AccessChain 23 41 Store 208 207 209: 54(ptr) AccessChain 23 53 210: 12(f64vec4) Load 209 211:11(float64_t) CompositeExtract 210 0 212:11(float64_t) GroupFAdd 28 Reduce 211 213:11(float64_t) CompositeExtract 210 1 214:11(float64_t) GroupFAdd 28 Reduce 213 215:11(float64_t) CompositeExtract 210 2 216:11(float64_t) GroupFAdd 28 Reduce 215 217:11(float64_t) CompositeExtract 210 3 218:11(float64_t) GroupFAdd 28 Reduce 217 219: 12(f64vec4) CompositeConstruct 212 214 216 218 220: 54(ptr) AccessChain 23 53 Store 220 219 221: 68(ptr) AccessChain 23 67 222: 13(int64_t) Load 221 223: 13(int64_t) GroupIAdd 28 Reduce 222 224: 68(ptr) AccessChain 23 67 Store 224 223 225: 74(ptr) AccessChain 23 73 226: 15(i64vec2) Load 225 227: 14(int64_t) CompositeExtract 226 0 228: 14(int64_t) GroupIAdd 28 Reduce 227 229: 14(int64_t) CompositeExtract 226 1 230: 14(int64_t) GroupIAdd 28 Reduce 229 231: 15(i64vec2) CompositeConstruct 228 230 232: 74(ptr) AccessChain 23 73 Store 232 231 233: 84(ptr) AccessChain 23 83 234: 17(f16vec3) Load 233 235:16(float16_t) CompositeExtract 234 0 236:16(float16_t) GroupFAdd 28 Reduce 235 237:16(float16_t) CompositeExtract 234 1 238:16(float16_t) GroupFAdd 28 Reduce 237 239:16(float16_t) CompositeExtract 234 2 240:16(float16_t) GroupFAdd 28 Reduce 239 241: 17(f16vec3) CompositeConstruct 236 238 240 242: 84(ptr) AccessChain 23 83 Store 242 241 243: 96(ptr) AccessChain 23 95 244: 19(i16vec4) Load 243 245: 18(int16_t) CompositeExtract 244 0 246: 18(int16_t) GroupIAdd 28 Reduce 245 247: 18(int16_t) CompositeExtract 244 1 248: 18(int16_t) GroupIAdd 28 Reduce 247 249: 18(int16_t) CompositeExtract 244 2 250: 18(int16_t) GroupIAdd 28 Reduce 249 251: 18(int16_t) CompositeExtract 244 3 252: 18(int16_t) GroupIAdd 28 Reduce 251 253: 19(i16vec4) CompositeConstruct 246 248 250 252 254: 96(ptr) AccessChain 23 95 Store 254 253 255: 110(ptr) AccessChain 23 109 256: 20(int16_t) Load 255 257: 20(int16_t) GroupIAdd 28 Reduce 256 258: 110(ptr) AccessChain 23 109 Store 258 257 259: 25(ptr) AccessChain 23 24 260: 6(int) Load 259 261: 6(int) GroupSMinNonUniformAMD 28 Reduce 260 262: 25(ptr) AccessChain 23 24 Store 262 261 263: 32(ptr) AccessChain 23 31 264: 8(ivec2) Load 263 265: 7(int) CompositeExtract 264 0 266: 7(int) GroupUMinNonUniformAMD 28 Reduce 265 267: 7(int) CompositeExtract 264 1 268: 7(int) GroupUMinNonUniformAMD 28 Reduce 267 269: 8(ivec2) CompositeConstruct 266 268 270: 32(ptr) AccessChain 23 31 Store 270 269 271: 42(ptr) AccessChain 23 41 272: 10(fvec3) Load 271 273: 9(float) CompositeExtract 272 0 274: 9(float) GroupFMinNonUniformAMD 28 Reduce 273 275: 9(float) CompositeExtract 272 1 276: 9(float) GroupFMinNonUniformAMD 28 Reduce 275 277: 9(float) CompositeExtract 272 2 278: 9(float) GroupFMinNonUniformAMD 28 Reduce 277 279: 10(fvec3) CompositeConstruct 274 276 278 280: 42(ptr) AccessChain 23 41 Store 280 279 281: 54(ptr) AccessChain 23 53 282: 12(f64vec4) Load 281 283:11(float64_t) CompositeExtract 282 0 284:11(float64_t) GroupFMinNonUniformAMD 28 Reduce 283 285:11(float64_t) CompositeExtract 282 1 286:11(float64_t) GroupFMinNonUniformAMD 28 Reduce 285 287:11(float64_t) CompositeExtract 282 2 288:11(float64_t) GroupFMinNonUniformAMD 28 Reduce 287 289:11(float64_t) CompositeExtract 282 3 290:11(float64_t) GroupFMinNonUniformAMD 28 Reduce 289 291: 12(f64vec4) CompositeConstruct 284 286 288 290 292: 54(ptr) AccessChain 23 53 Store 292 291 293: 68(ptr) AccessChain 23 67 294: 13(int64_t) Load 293 295: 13(int64_t) GroupSMinNonUniformAMD 28 Reduce 294 296: 68(ptr) AccessChain 23 67 Store 296 295 297: 74(ptr) AccessChain 23 73 298: 15(i64vec2) Load 297 299: 14(int64_t) CompositeExtract 298 0 300: 14(int64_t) GroupUMinNonUniformAMD 28 Reduce 299 301: 14(int64_t) CompositeExtract 298 1 302: 14(int64_t) GroupUMinNonUniformAMD 28 Reduce 301 303: 15(i64vec2) CompositeConstruct 300 302 304: 74(ptr) AccessChain 23 73 Store 304 303 305: 84(ptr) AccessChain 23 83 306: 17(f16vec3) Load 305 307:16(float16_t) CompositeExtract 306 0 308:16(float16_t) GroupFMinNonUniformAMD 28 Reduce 307 309:16(float16_t) CompositeExtract 306 1 310:16(float16_t) GroupFMinNonUniformAMD 28 Reduce 309 311:16(float16_t) CompositeExtract 306 2 312:16(float16_t) GroupFMinNonUniformAMD 28 Reduce 311 313: 17(f16vec3) CompositeConstruct 308 310 312 314: 84(ptr) AccessChain 23 83 Store 314 313 315: 96(ptr) AccessChain 23 95 316: 19(i16vec4) Load 315 317: 18(int16_t) CompositeExtract 316 0 318: 18(int16_t) GroupSMinNonUniformAMD 28 Reduce 317 319: 18(int16_t) CompositeExtract 316 1 320: 18(int16_t) GroupSMinNonUniformAMD 28 Reduce 319 321: 18(int16_t) CompositeExtract 316 2 322: 18(int16_t) GroupSMinNonUniformAMD 28 Reduce 321 323: 18(int16_t) CompositeExtract 316 3 324: 18(int16_t) GroupSMinNonUniformAMD 28 Reduce 323 325: 19(i16vec4) CompositeConstruct 318 320 322 324 326: 96(ptr) AccessChain 23 95 Store 326 325 327: 110(ptr) AccessChain 23 109 328: 20(int16_t) Load 327 329: 20(int16_t) GroupUMinNonUniformAMD 28 Reduce 328 330: 110(ptr) AccessChain 23 109 Store 330 329 331: 25(ptr) AccessChain 23 24 332: 6(int) Load 331 333: 6(int) GroupSMaxNonUniformAMD 28 Reduce 332 334: 25(ptr) AccessChain 23 24 Store 334 333 335: 32(ptr) AccessChain 23 31 336: 8(ivec2) Load 335 337: 7(int) CompositeExtract 336 0 338: 7(int) GroupUMaxNonUniformAMD 28 Reduce 337 339: 7(int) CompositeExtract 336 1 340: 7(int) GroupUMaxNonUniformAMD 28 Reduce 339 341: 8(ivec2) CompositeConstruct 338 340 342: 32(ptr) AccessChain 23 31 Store 342 341 343: 42(ptr) AccessChain 23 41 344: 10(fvec3) Load 343 345: 9(float) CompositeExtract 344 0 346: 9(float) GroupFMaxNonUniformAMD 28 Reduce 345 347: 9(float) CompositeExtract 344 1 348: 9(float) GroupFMaxNonUniformAMD 28 Reduce 347 349: 9(float) CompositeExtract 344 2 350: 9(float) GroupFMaxNonUniformAMD 28 Reduce 349 351: 10(fvec3) CompositeConstruct 346 348 350 352: 42(ptr) AccessChain 23 41 Store 352 351 353: 54(ptr) AccessChain 23 53 354: 12(f64vec4) Load 353 355:11(float64_t) CompositeExtract 354 0 356:11(float64_t) GroupFMaxNonUniformAMD 28 Reduce 355 357:11(float64_t) CompositeExtract 354 1 358:11(float64_t) GroupFMaxNonUniformAMD 28 Reduce 357 359:11(float64_t) CompositeExtract 354 2 360:11(float64_t) GroupFMaxNonUniformAMD 28 Reduce 359 361:11(float64_t) CompositeExtract 354 3 362:11(float64_t) GroupFMaxNonUniformAMD 28 Reduce 361 363: 12(f64vec4) CompositeConstruct 356 358 360 362 364: 54(ptr) AccessChain 23 53 Store 364 363 365: 68(ptr) AccessChain 23 67 366: 13(int64_t) Load 365 367: 13(int64_t) GroupSMaxNonUniformAMD 28 Reduce 366 368: 68(ptr) AccessChain 23 67 Store 368 367 369: 74(ptr) AccessChain 23 73 370: 15(i64vec2) Load 369 371: 14(int64_t) CompositeExtract 370 0 372: 14(int64_t) GroupUMaxNonUniformAMD 28 Reduce 371 373: 14(int64_t) CompositeExtract 370 1 374: 14(int64_t) GroupUMaxNonUniformAMD 28 Reduce 373 375: 15(i64vec2) CompositeConstruct 372 374 376: 74(ptr) AccessChain 23 73 Store 376 375 377: 84(ptr) AccessChain 23 83 378: 17(f16vec3) Load 377 379:16(float16_t) CompositeExtract 378 0 380:16(float16_t) GroupFMaxNonUniformAMD 28 Reduce 379 381:16(float16_t) CompositeExtract 378 1 382:16(float16_t) GroupFMaxNonUniformAMD 28 Reduce 381 383:16(float16_t) CompositeExtract 378 2 384:16(float16_t) GroupFMaxNonUniformAMD 28 Reduce 383 385: 17(f16vec3) CompositeConstruct 380 382 384 386: 84(ptr) AccessChain 23 83 Store 386 385 387: 96(ptr) AccessChain 23 95 388: 19(i16vec4) Load 387 389: 18(int16_t) CompositeExtract 388 0 390: 18(int16_t) GroupSMaxNonUniformAMD 28 Reduce 389 391: 18(int16_t) CompositeExtract 388 1 392: 18(int16_t) GroupSMaxNonUniformAMD 28 Reduce 391 393: 18(int16_t) CompositeExtract 388 2 394: 18(int16_t) GroupSMaxNonUniformAMD 28 Reduce 393 395: 18(int16_t) CompositeExtract 388 3 396: 18(int16_t) GroupSMaxNonUniformAMD 28 Reduce 395 397: 19(i16vec4) CompositeConstruct 390 392 394 396 398: 96(ptr) AccessChain 23 95 Store 398 397 399: 110(ptr) AccessChain 23 109 400: 20(int16_t) Load 399 401: 20(int16_t) GroupUMaxNonUniformAMD 28 Reduce 400 402: 110(ptr) AccessChain 23 109 Store 402 401 403: 25(ptr) AccessChain 23 24 404: 6(int) Load 403 405: 6(int) GroupIAddNonUniformAMD 28 Reduce 404 406: 25(ptr) AccessChain 23 24 Store 406 405 407: 32(ptr) AccessChain 23 31 408: 8(ivec2) Load 407 409: 7(int) CompositeExtract 408 0 410: 7(int) GroupIAddNonUniformAMD 28 Reduce 409 411: 7(int) CompositeExtract 408 1 412: 7(int) GroupIAddNonUniformAMD 28 Reduce 411 413: 8(ivec2) CompositeConstruct 410 412 414: 32(ptr) AccessChain 23 31 Store 414 413 415: 42(ptr) AccessChain 23 41 416: 10(fvec3) Load 415 417: 9(float) CompositeExtract 416 0 418: 9(float) GroupFAddNonUniformAMD 28 Reduce 417 419: 9(float) CompositeExtract 416 1 420: 9(float) GroupFAddNonUniformAMD 28 Reduce 419 421: 9(float) CompositeExtract 416 2 422: 9(float) GroupFAddNonUniformAMD 28 Reduce 421 423: 10(fvec3) CompositeConstruct 418 420 422 424: 42(ptr) AccessChain 23 41 Store 424 423 425: 54(ptr) AccessChain 23 53 426: 12(f64vec4) Load 425 427:11(float64_t) CompositeExtract 426 0 428:11(float64_t) GroupFAddNonUniformAMD 28 Reduce 427 429:11(float64_t) CompositeExtract 426 1 430:11(float64_t) GroupFAddNonUniformAMD 28 Reduce 429 431:11(float64_t) CompositeExtract 426 2 432:11(float64_t) GroupFAddNonUniformAMD 28 Reduce 431 433:11(float64_t) CompositeExtract 426 3 434:11(float64_t) GroupFAddNonUniformAMD 28 Reduce 433 435: 12(f64vec4) CompositeConstruct 428 430 432 434 436: 54(ptr) AccessChain 23 53 Store 436 435 437: 68(ptr) AccessChain 23 67 438: 13(int64_t) Load 437 439: 13(int64_t) GroupIAddNonUniformAMD 28 Reduce 438 440: 68(ptr) AccessChain 23 67 Store 440 439 441: 74(ptr) AccessChain 23 73 442: 15(i64vec2) Load 441 443: 14(int64_t) CompositeExtract 442 0 444: 14(int64_t) GroupIAddNonUniformAMD 28 Reduce 443 445: 14(int64_t) CompositeExtract 442 1 446: 14(int64_t) GroupIAddNonUniformAMD 28 Reduce 445 447: 15(i64vec2) CompositeConstruct 444 446 448: 74(ptr) AccessChain 23 73 Store 448 447 449: 84(ptr) AccessChain 23 83 450: 17(f16vec3) Load 449 451:16(float16_t) CompositeExtract 450 0 452:16(float16_t) GroupFAddNonUniformAMD 28 Reduce 451 453:16(float16_t) CompositeExtract 450 1 454:16(float16_t) GroupFAddNonUniformAMD 28 Reduce 453 455:16(float16_t) CompositeExtract 450 2 456:16(float16_t) GroupFAddNonUniformAMD 28 Reduce 455 457: 17(f16vec3) CompositeConstruct 452 454 456 458: 84(ptr) AccessChain 23 83 Store 458 457 459: 96(ptr) AccessChain 23 95 460: 19(i16vec4) Load 459 461: 18(int16_t) CompositeExtract 460 0 462: 18(int16_t) GroupIAddNonUniformAMD 28 Reduce 461 463: 18(int16_t) CompositeExtract 460 1 464: 18(int16_t) GroupIAddNonUniformAMD 28 Reduce 463 465: 18(int16_t) CompositeExtract 460 2 466: 18(int16_t) GroupIAddNonUniformAMD 28 Reduce 465 467: 18(int16_t) CompositeExtract 460 3 468: 18(int16_t) GroupIAddNonUniformAMD 28 Reduce 467 469: 19(i16vec4) CompositeConstruct 462 464 466 468 470: 96(ptr) AccessChain 23 95 Store 470 469 471: 110(ptr) AccessChain 23 109 472: 20(int16_t) Load 471 473: 20(int16_t) GroupIAddNonUniformAMD 28 Reduce 472 474: 110(ptr) AccessChain 23 109 Store 474 473 475: 25(ptr) AccessChain 23 24 476: 6(int) Load 475 477: 6(int) GroupSMin 28 InclusiveScan 476 478: 25(ptr) AccessChain 23 24 Store 478 477 479: 32(ptr) AccessChain 23 31 480: 8(ivec2) Load 479 481: 7(int) CompositeExtract 480 0 482: 7(int) GroupUMin 28 InclusiveScan 481 483: 7(int) CompositeExtract 480 1 484: 7(int) GroupUMin 28 InclusiveScan 483 485: 8(ivec2) CompositeConstruct 482 484 486: 32(ptr) AccessChain 23 31 Store 486 485 487: 42(ptr) AccessChain 23 41 488: 10(fvec3) Load 487 489: 9(float) CompositeExtract 488 0 490: 9(float) GroupFMin 28 InclusiveScan 489 491: 9(float) CompositeExtract 488 1 492: 9(float) GroupFMin 28 InclusiveScan 491 493: 9(float) CompositeExtract 488 2 494: 9(float) GroupFMin 28 InclusiveScan 493 495: 10(fvec3) CompositeConstruct 490 492 494 496: 42(ptr) AccessChain 23 41 Store 496 495 497: 54(ptr) AccessChain 23 53 498: 12(f64vec4) Load 497 499:11(float64_t) CompositeExtract 498 0 500:11(float64_t) GroupFMin 28 InclusiveScan 499 501:11(float64_t) CompositeExtract 498 1 502:11(float64_t) GroupFMin 28 InclusiveScan 501 503:11(float64_t) CompositeExtract 498 2 504:11(float64_t) GroupFMin 28 InclusiveScan 503 505:11(float64_t) CompositeExtract 498 3 506:11(float64_t) GroupFMin 28 InclusiveScan 505 507: 12(f64vec4) CompositeConstruct 500 502 504 506 508: 54(ptr) AccessChain 23 53 Store 508 507 509: 68(ptr) AccessChain 23 67 510: 13(int64_t) Load 509 511: 13(int64_t) GroupSMin 28 InclusiveScan 510 512: 68(ptr) AccessChain 23 67 Store 512 511 513: 74(ptr) AccessChain 23 73 514: 15(i64vec2) Load 513 515: 14(int64_t) CompositeExtract 514 0 516: 14(int64_t) GroupUMin 28 InclusiveScan 515 517: 14(int64_t) CompositeExtract 514 1 518: 14(int64_t) GroupUMin 28 InclusiveScan 517 519: 15(i64vec2) CompositeConstruct 516 518 520: 74(ptr) AccessChain 23 73 Store 520 519 521: 84(ptr) AccessChain 23 83 522: 17(f16vec3) Load 521 523:16(float16_t) CompositeExtract 522 0 524:16(float16_t) GroupFMin 28 InclusiveScan 523 525:16(float16_t) CompositeExtract 522 1 526:16(float16_t) GroupFMin 28 InclusiveScan 525 527:16(float16_t) CompositeExtract 522 2 528:16(float16_t) GroupFMin 28 InclusiveScan 527 529: 17(f16vec3) CompositeConstruct 524 526 528 530: 84(ptr) AccessChain 23 83 Store 530 529 531: 96(ptr) AccessChain 23 95 532: 19(i16vec4) Load 531 533: 18(int16_t) CompositeExtract 532 0 534: 18(int16_t) GroupSMin 28 InclusiveScan 533 535: 18(int16_t) CompositeExtract 532 1 536: 18(int16_t) GroupSMin 28 InclusiveScan 535 537: 18(int16_t) CompositeExtract 532 2 538: 18(int16_t) GroupSMin 28 InclusiveScan 537 539: 18(int16_t) CompositeExtract 532 3 540: 18(int16_t) GroupSMin 28 InclusiveScan 539 541: 19(i16vec4) CompositeConstruct 534 536 538 540 542: 96(ptr) AccessChain 23 95 Store 542 541 543: 110(ptr) AccessChain 23 109 544: 20(int16_t) Load 543 545: 20(int16_t) GroupUMin 28 InclusiveScan 544 546: 110(ptr) AccessChain 23 109 Store 546 545 547: 25(ptr) AccessChain 23 24 548: 6(int) Load 547 549: 6(int) GroupSMax 28 InclusiveScan 548 550: 25(ptr) AccessChain 23 24 Store 550 549 551: 32(ptr) AccessChain 23 31 552: 8(ivec2) Load 551 553: 7(int) CompositeExtract 552 0 554: 7(int) GroupUMax 28 InclusiveScan 553 555: 7(int) CompositeExtract 552 1 556: 7(int) GroupUMax 28 InclusiveScan 555 557: 8(ivec2) CompositeConstruct 554 556 558: 32(ptr) AccessChain 23 31 Store 558 557 559: 42(ptr) AccessChain 23 41 560: 10(fvec3) Load 559 561: 9(float) CompositeExtract 560 0 562: 9(float) GroupFMax 28 InclusiveScan 561 563: 9(float) CompositeExtract 560 1 564: 9(float) GroupFMax 28 InclusiveScan 563 565: 9(float) CompositeExtract 560 2 566: 9(float) GroupFMax 28 InclusiveScan 565 567: 10(fvec3) CompositeConstruct 562 564 566 568: 42(ptr) AccessChain 23 41 Store 568 567 569: 54(ptr) AccessChain 23 53 570: 12(f64vec4) Load 569 571:11(float64_t) CompositeExtract 570 0 572:11(float64_t) GroupFMax 28 InclusiveScan 571 573:11(float64_t) CompositeExtract 570 1 574:11(float64_t) GroupFMax 28 InclusiveScan 573 575:11(float64_t) CompositeExtract 570 2 576:11(float64_t) GroupFMax 28 InclusiveScan 575 577:11(float64_t) CompositeExtract 570 3 578:11(float64_t) GroupFMax 28 InclusiveScan 577 579: 12(f64vec4) CompositeConstruct 572 574 576 578 580: 54(ptr) AccessChain 23 53 Store 580 579 581: 68(ptr) AccessChain 23 67 582: 13(int64_t) Load 581 583: 13(int64_t) GroupSMax 28 InclusiveScan 582 584: 68(ptr) AccessChain 23 67 Store 584 583 585: 74(ptr) AccessChain 23 73 586: 15(i64vec2) Load 585 587: 14(int64_t) CompositeExtract 586 0 588: 14(int64_t) GroupUMax 28 InclusiveScan 587 589: 14(int64_t) CompositeExtract 586 1 590: 14(int64_t) GroupUMax 28 InclusiveScan 589 591: 15(i64vec2) CompositeConstruct 588 590 592: 74(ptr) AccessChain 23 73 Store 592 591 593: 84(ptr) AccessChain 23 83 594: 17(f16vec3) Load 593 595:16(float16_t) CompositeExtract 594 0 596:16(float16_t) GroupFMax 28 InclusiveScan 595 597:16(float16_t) CompositeExtract 594 1 598:16(float16_t) GroupFMax 28 InclusiveScan 597 599:16(float16_t) CompositeExtract 594 2 600:16(float16_t) GroupFMax 28 InclusiveScan 599 601: 17(f16vec3) CompositeConstruct 596 598 600 602: 84(ptr) AccessChain 23 83 Store 602 601 603: 96(ptr) AccessChain 23 95 604: 19(i16vec4) Load 603 605: 18(int16_t) CompositeExtract 604 0 606: 18(int16_t) GroupSMax 28 InclusiveScan 605 607: 18(int16_t) CompositeExtract 604 1 608: 18(int16_t) GroupSMax 28 InclusiveScan 607 609: 18(int16_t) CompositeExtract 604 2 610: 18(int16_t) GroupSMax 28 InclusiveScan 609 611: 18(int16_t) CompositeExtract 604 3 612: 18(int16_t) GroupSMax 28 InclusiveScan 611 613: 19(i16vec4) CompositeConstruct 606 608 610 612 614: 96(ptr) AccessChain 23 95 Store 614 613 615: 110(ptr) AccessChain 23 109 616: 20(int16_t) Load 615 617: 20(int16_t) GroupUMax 28 InclusiveScan 616 618: 110(ptr) AccessChain 23 109 Store 618 617 619: 25(ptr) AccessChain 23 24 620: 6(int) Load 619 621: 6(int) GroupIAdd 28 InclusiveScan 620 622: 25(ptr) AccessChain 23 24 Store 622 621 623: 32(ptr) AccessChain 23 31 624: 8(ivec2) Load 623 625: 7(int) CompositeExtract 624 0 626: 7(int) GroupIAdd 28 InclusiveScan 625 627: 7(int) CompositeExtract 624 1 628: 7(int) GroupIAdd 28 InclusiveScan 627 629: 8(ivec2) CompositeConstruct 626 628 630: 32(ptr) AccessChain 23 31 Store 630 629 631: 42(ptr) AccessChain 23 41 632: 10(fvec3) Load 631 633: 9(float) CompositeExtract 632 0 634: 9(float) GroupFAdd 28 InclusiveScan 633 635: 9(float) CompositeExtract 632 1 636: 9(float) GroupFAdd 28 InclusiveScan 635 637: 9(float) CompositeExtract 632 2 638: 9(float) GroupFAdd 28 InclusiveScan 637 639: 10(fvec3) CompositeConstruct 634 636 638 640: 42(ptr) AccessChain 23 41 Store 640 639 641: 54(ptr) AccessChain 23 53 642: 12(f64vec4) Load 641 643:11(float64_t) CompositeExtract 642 0 644:11(float64_t) GroupFAdd 28 InclusiveScan 643 645:11(float64_t) CompositeExtract 642 1 646:11(float64_t) GroupFAdd 28 InclusiveScan 645 647:11(float64_t) CompositeExtract 642 2 648:11(float64_t) GroupFAdd 28 InclusiveScan 647 649:11(float64_t) CompositeExtract 642 3 650:11(float64_t) GroupFAdd 28 InclusiveScan 649 651: 12(f64vec4) CompositeConstruct 644 646 648 650 652: 54(ptr) AccessChain 23 53 Store 652 651 653: 68(ptr) AccessChain 23 67 654: 13(int64_t) Load 653 655: 13(int64_t) GroupIAdd 28 InclusiveScan 654 656: 68(ptr) AccessChain 23 67 Store 656 655 657: 74(ptr) AccessChain 23 73 658: 15(i64vec2) Load 657 659: 14(int64_t) CompositeExtract 658 0 660: 14(int64_t) GroupIAdd 28 InclusiveScan 659 661: 14(int64_t) CompositeExtract 658 1 662: 14(int64_t) GroupIAdd 28 InclusiveScan 661 663: 15(i64vec2) CompositeConstruct 660 662 664: 74(ptr) AccessChain 23 73 Store 664 663 665: 84(ptr) AccessChain 23 83 666: 17(f16vec3) Load 665 667:16(float16_t) CompositeExtract 666 0 668:16(float16_t) GroupFAdd 28 InclusiveScan 667 669:16(float16_t) CompositeExtract 666 1 670:16(float16_t) GroupFAdd 28 InclusiveScan 669 671:16(float16_t) CompositeExtract 666 2 672:16(float16_t) GroupFAdd 28 InclusiveScan 671 673: 17(f16vec3) CompositeConstruct 668 670 672 674: 84(ptr) AccessChain 23 83 Store 674 673 675: 96(ptr) AccessChain 23 95 676: 19(i16vec4) Load 675 677: 18(int16_t) CompositeExtract 676 0 678: 18(int16_t) GroupIAdd 28 InclusiveScan 677 679: 18(int16_t) CompositeExtract 676 1 680: 18(int16_t) GroupIAdd 28 InclusiveScan 679 681: 18(int16_t) CompositeExtract 676 2 682: 18(int16_t) GroupIAdd 28 InclusiveScan 681 683: 18(int16_t) CompositeExtract 676 3 684: 18(int16_t) GroupIAdd 28 InclusiveScan 683 685: 19(i16vec4) CompositeConstruct 678 680 682 684 686: 96(ptr) AccessChain 23 95 Store 686 685 687: 110(ptr) AccessChain 23 109 688: 20(int16_t) Load 687 689: 20(int16_t) GroupIAdd 28 InclusiveScan 688 690: 110(ptr) AccessChain 23 109 Store 690 689 691: 25(ptr) AccessChain 23 24 692: 6(int) Load 691 693: 6(int) GroupSMin 28 ExclusiveScan 692 694: 25(ptr) AccessChain 23 24 Store 694 693 695: 32(ptr) AccessChain 23 31 696: 8(ivec2) Load 695 697: 7(int) CompositeExtract 696 0 698: 7(int) GroupUMin 28 ExclusiveScan 697 699: 7(int) CompositeExtract 696 1 700: 7(int) GroupUMin 28 ExclusiveScan 699 701: 8(ivec2) CompositeConstruct 698 700 702: 32(ptr) AccessChain 23 31 Store 702 701 703: 42(ptr) AccessChain 23 41 704: 10(fvec3) Load 703 705: 9(float) CompositeExtract 704 0 706: 9(float) GroupFMin 28 ExclusiveScan 705 707: 9(float) CompositeExtract 704 1 708: 9(float) GroupFMin 28 ExclusiveScan 707 709: 9(float) CompositeExtract 704 2 710: 9(float) GroupFMin 28 ExclusiveScan 709 711: 10(fvec3) CompositeConstruct 706 708 710 712: 42(ptr) AccessChain 23 41 Store 712 711 713: 54(ptr) AccessChain 23 53 714: 12(f64vec4) Load 713 715:11(float64_t) CompositeExtract 714 0 716:11(float64_t) GroupFMin 28 ExclusiveScan 715 717:11(float64_t) CompositeExtract 714 1 718:11(float64_t) GroupFMin 28 ExclusiveScan 717 719:11(float64_t) CompositeExtract 714 2 720:11(float64_t) GroupFMin 28 ExclusiveScan 719 721:11(float64_t) CompositeExtract 714 3 722:11(float64_t) GroupFMin 28 ExclusiveScan 721 723: 12(f64vec4) CompositeConstruct 716 718 720 722 724: 54(ptr) AccessChain 23 53 Store 724 723 725: 68(ptr) AccessChain 23 67 726: 13(int64_t) Load 725 727: 13(int64_t) GroupSMin 28 ExclusiveScan 726 728: 68(ptr) AccessChain 23 67 Store 728 727 729: 74(ptr) AccessChain 23 73 730: 15(i64vec2) Load 729 731: 14(int64_t) CompositeExtract 730 0 732: 14(int64_t) GroupUMin 28 ExclusiveScan 731 733: 14(int64_t) CompositeExtract 730 1 734: 14(int64_t) GroupUMin 28 ExclusiveScan 733 735: 15(i64vec2) CompositeConstruct 732 734 736: 74(ptr) AccessChain 23 73 Store 736 735 737: 84(ptr) AccessChain 23 83 738: 17(f16vec3) Load 737 739:16(float16_t) CompositeExtract 738 0 740:16(float16_t) GroupFMin 28 ExclusiveScan 739 741:16(float16_t) CompositeExtract 738 1 742:16(float16_t) GroupFMin 28 ExclusiveScan 741 743:16(float16_t) CompositeExtract 738 2 744:16(float16_t) GroupFMin 28 ExclusiveScan 743 745: 17(f16vec3) CompositeConstruct 740 742 744 746: 84(ptr) AccessChain 23 83 Store 746 745 747: 96(ptr) AccessChain 23 95 748: 19(i16vec4) Load 747 749: 18(int16_t) CompositeExtract 748 0 750: 18(int16_t) GroupSMin 28 ExclusiveScan 749 751: 18(int16_t) CompositeExtract 748 1 752: 18(int16_t) GroupSMin 28 ExclusiveScan 751 753: 18(int16_t) CompositeExtract 748 2 754: 18(int16_t) GroupSMin 28 ExclusiveScan 753 755: 18(int16_t) CompositeExtract 748 3 756: 18(int16_t) GroupSMin 28 ExclusiveScan 755 757: 19(i16vec4) CompositeConstruct 750 752 754 756 758: 96(ptr) AccessChain 23 95 Store 758 757 759: 110(ptr) AccessChain 23 109 760: 20(int16_t) Load 759 761: 20(int16_t) GroupUMin 28 ExclusiveScan 760 762: 110(ptr) AccessChain 23 109 Store 762 761 763: 25(ptr) AccessChain 23 24 764: 6(int) Load 763 765: 6(int) GroupSMax 28 ExclusiveScan 764 766: 25(ptr) AccessChain 23 24 Store 766 765 767: 32(ptr) AccessChain 23 31 768: 8(ivec2) Load 767 769: 7(int) CompositeExtract 768 0 770: 7(int) GroupUMax 28 ExclusiveScan 769 771: 7(int) CompositeExtract 768 1 772: 7(int) GroupUMax 28 ExclusiveScan 771 773: 8(ivec2) CompositeConstruct 770 772 774: 32(ptr) AccessChain 23 31 Store 774 773 775: 42(ptr) AccessChain 23 41 776: 10(fvec3) Load 775 777: 9(float) CompositeExtract 776 0 778: 9(float) GroupFMax 28 ExclusiveScan 777 779: 9(float) CompositeExtract 776 1 780: 9(float) GroupFMax 28 ExclusiveScan 779 781: 9(float) CompositeExtract 776 2 782: 9(float) GroupFMax 28 ExclusiveScan 781 783: 10(fvec3) CompositeConstruct 778 780 782 784: 42(ptr) AccessChain 23 41 Store 784 783 785: 54(ptr) AccessChain 23 53 786: 12(f64vec4) Load 785 787:11(float64_t) CompositeExtract 786 0 788:11(float64_t) GroupFMax 28 ExclusiveScan 787 789:11(float64_t) CompositeExtract 786 1 790:11(float64_t) GroupFMax 28 ExclusiveScan 789 791:11(float64_t) CompositeExtract 786 2 792:11(float64_t) GroupFMax 28 ExclusiveScan 791 793:11(float64_t) CompositeExtract 786 3 794:11(float64_t) GroupFMax 28 ExclusiveScan 793 795: 12(f64vec4) CompositeConstruct 788 790 792 794 796: 54(ptr) AccessChain 23 53 Store 796 795 797: 68(ptr) AccessChain 23 67 798: 13(int64_t) Load 797 799: 13(int64_t) GroupSMax 28 ExclusiveScan 798 800: 68(ptr) AccessChain 23 67 Store 800 799 801: 74(ptr) AccessChain 23 73 802: 15(i64vec2) Load 801 803: 14(int64_t) CompositeExtract 802 0 804: 14(int64_t) GroupUMax 28 ExclusiveScan 803 805: 14(int64_t) CompositeExtract 802 1 806: 14(int64_t) GroupUMax 28 ExclusiveScan 805 807: 15(i64vec2) CompositeConstruct 804 806 808: 74(ptr) AccessChain 23 73 Store 808 807 809: 84(ptr) AccessChain 23 83 810: 17(f16vec3) Load 809 811:16(float16_t) CompositeExtract 810 0 812:16(float16_t) GroupFMax 28 ExclusiveScan 811 813:16(float16_t) CompositeExtract 810 1 814:16(float16_t) GroupFMax 28 ExclusiveScan 813 815:16(float16_t) CompositeExtract 810 2 816:16(float16_t) GroupFMax 28 ExclusiveScan 815 817: 17(f16vec3) CompositeConstruct 812 814 816 818: 84(ptr) AccessChain 23 83 Store 818 817 819: 96(ptr) AccessChain 23 95 820: 19(i16vec4) Load 819 821: 18(int16_t) CompositeExtract 820 0 822: 18(int16_t) GroupSMax 28 ExclusiveScan 821 823: 18(int16_t) CompositeExtract 820 1 824: 18(int16_t) GroupSMax 28 ExclusiveScan 823 825: 18(int16_t) CompositeExtract 820 2 826: 18(int16_t) GroupSMax 28 ExclusiveScan 825 827: 18(int16_t) CompositeExtract 820 3 828: 18(int16_t) GroupSMax 28 ExclusiveScan 827 829: 19(i16vec4) CompositeConstruct 822 824 826 828 830: 96(ptr) AccessChain 23 95 Store 830 829 831: 110(ptr) AccessChain 23 109 832: 20(int16_t) Load 831 833: 20(int16_t) GroupUMax 28 ExclusiveScan 832 834: 110(ptr) AccessChain 23 109 Store 834 833 835: 25(ptr) AccessChain 23 24 836: 6(int) Load 835 837: 6(int) GroupIAdd 28 ExclusiveScan 836 838: 25(ptr) AccessChain 23 24 Store 838 837 839: 32(ptr) AccessChain 23 31 840: 8(ivec2) Load 839 841: 7(int) CompositeExtract 840 0 842: 7(int) GroupIAdd 28 ExclusiveScan 841 843: 7(int) CompositeExtract 840 1 844: 7(int) GroupIAdd 28 ExclusiveScan 843 845: 8(ivec2) CompositeConstruct 842 844 846: 32(ptr) AccessChain 23 31 Store 846 845 847: 42(ptr) AccessChain 23 41 848: 10(fvec3) Load 847 849: 9(float) CompositeExtract 848 0 850: 9(float) GroupFAdd 28 ExclusiveScan 849 851: 9(float) CompositeExtract 848 1 852: 9(float) GroupFAdd 28 ExclusiveScan 851 853: 9(float) CompositeExtract 848 2 854: 9(float) GroupFAdd 28 ExclusiveScan 853 855: 10(fvec3) CompositeConstruct 850 852 854 856: 42(ptr) AccessChain 23 41 Store 856 855 857: 54(ptr) AccessChain 23 53 858: 12(f64vec4) Load 857 859:11(float64_t) CompositeExtract 858 0 860:11(float64_t) GroupFAdd 28 ExclusiveScan 859 861:11(float64_t) CompositeExtract 858 1 862:11(float64_t) GroupFAdd 28 ExclusiveScan 861 863:11(float64_t) CompositeExtract 858 2 864:11(float64_t) GroupFAdd 28 ExclusiveScan 863 865:11(float64_t) CompositeExtract 858 3 866:11(float64_t) GroupFAdd 28 ExclusiveScan 865 867: 12(f64vec4) CompositeConstruct 860 862 864 866 868: 54(ptr) AccessChain 23 53 Store 868 867 869: 68(ptr) AccessChain 23 67 870: 13(int64_t) Load 869 871: 13(int64_t) GroupIAdd 28 ExclusiveScan 870 872: 68(ptr) AccessChain 23 67 Store 872 871 873: 74(ptr) AccessChain 23 73 874: 15(i64vec2) Load 873 875: 14(int64_t) CompositeExtract 874 0 876: 14(int64_t) GroupIAdd 28 ExclusiveScan 875 877: 14(int64_t) CompositeExtract 874 1 878: 14(int64_t) GroupIAdd 28 ExclusiveScan 877 879: 15(i64vec2) CompositeConstruct 876 878 880: 74(ptr) AccessChain 23 73 Store 880 879 881: 84(ptr) AccessChain 23 83 882: 17(f16vec3) Load 881 883:16(float16_t) CompositeExtract 882 0 884:16(float16_t) GroupFAdd 28 ExclusiveScan 883 885:16(float16_t) CompositeExtract 882 1 886:16(float16_t) GroupFAdd 28 ExclusiveScan 885 887:16(float16_t) CompositeExtract 882 2 888:16(float16_t) GroupFAdd 28 ExclusiveScan 887 889: 17(f16vec3) CompositeConstruct 884 886 888 890: 84(ptr) AccessChain 23 83 Store 890 889 891: 96(ptr) AccessChain 23 95 892: 19(i16vec4) Load 891 893: 18(int16_t) CompositeExtract 892 0 894: 18(int16_t) GroupIAdd 28 ExclusiveScan 893 895: 18(int16_t) CompositeExtract 892 1 896: 18(int16_t) GroupIAdd 28 ExclusiveScan 895 897: 18(int16_t) CompositeExtract 892 2 898: 18(int16_t) GroupIAdd 28 ExclusiveScan 897 899: 18(int16_t) CompositeExtract 892 3 900: 18(int16_t) GroupIAdd 28 ExclusiveScan 899 901: 19(i16vec4) CompositeConstruct 894 896 898 900 902: 96(ptr) AccessChain 23 95 Store 902 901 903: 110(ptr) AccessChain 23 109 904: 20(int16_t) Load 903 905: 20(int16_t) GroupIAdd 28 ExclusiveScan 904 906: 110(ptr) AccessChain 23 109 Store 906 905 907: 25(ptr) AccessChain 23 24 908: 6(int) Load 907 909: 6(int) GroupSMinNonUniformAMD 28 InclusiveScan 908 910: 25(ptr) AccessChain 23 24 Store 910 909 911: 32(ptr) AccessChain 23 31 912: 8(ivec2) Load 911 913: 7(int) CompositeExtract 912 0 914: 7(int) GroupUMinNonUniformAMD 28 InclusiveScan 913 915: 7(int) CompositeExtract 912 1 916: 7(int) GroupUMinNonUniformAMD 28 InclusiveScan 915 917: 8(ivec2) CompositeConstruct 914 916 918: 32(ptr) AccessChain 23 31 Store 918 917 919: 42(ptr) AccessChain 23 41 920: 10(fvec3) Load 919 921: 9(float) CompositeExtract 920 0 922: 9(float) GroupFMinNonUniformAMD 28 InclusiveScan 921 923: 9(float) CompositeExtract 920 1 924: 9(float) GroupFMinNonUniformAMD 28 InclusiveScan 923 925: 9(float) CompositeExtract 920 2 926: 9(float) GroupFMinNonUniformAMD 28 InclusiveScan 925 927: 10(fvec3) CompositeConstruct 922 924 926 928: 42(ptr) AccessChain 23 41 Store 928 927 929: 54(ptr) AccessChain 23 53 930: 12(f64vec4) Load 929 931:11(float64_t) CompositeExtract 930 0 932:11(float64_t) GroupFMinNonUniformAMD 28 InclusiveScan 931 933:11(float64_t) CompositeExtract 930 1 934:11(float64_t) GroupFMinNonUniformAMD 28 InclusiveScan 933 935:11(float64_t) CompositeExtract 930 2 936:11(float64_t) GroupFMinNonUniformAMD 28 InclusiveScan 935 937:11(float64_t) CompositeExtract 930 3 938:11(float64_t) GroupFMinNonUniformAMD 28 InclusiveScan 937 939: 12(f64vec4) CompositeConstruct 932 934 936 938 940: 54(ptr) AccessChain 23 53 Store 940 939 941: 68(ptr) AccessChain 23 67 942: 13(int64_t) Load 941 943: 13(int64_t) GroupSMinNonUniformAMD 28 InclusiveScan 942 944: 68(ptr) AccessChain 23 67 Store 944 943 945: 74(ptr) AccessChain 23 73 946: 15(i64vec2) Load 945 947: 14(int64_t) CompositeExtract 946 0 948: 14(int64_t) GroupUMinNonUniformAMD 28 InclusiveScan 947 949: 14(int64_t) CompositeExtract 946 1 950: 14(int64_t) GroupUMinNonUniformAMD 28 InclusiveScan 949 951: 15(i64vec2) CompositeConstruct 948 950 952: 74(ptr) AccessChain 23 73 Store 952 951 953: 84(ptr) AccessChain 23 83 954: 17(f16vec3) Load 953 955:16(float16_t) CompositeExtract 954 0 956:16(float16_t) GroupFMinNonUniformAMD 28 InclusiveScan 955 957:16(float16_t) CompositeExtract 954 1 958:16(float16_t) GroupFMinNonUniformAMD 28 InclusiveScan 957 959:16(float16_t) CompositeExtract 954 2 960:16(float16_t) GroupFMinNonUniformAMD 28 InclusiveScan 959 961: 17(f16vec3) CompositeConstruct 956 958 960 962: 84(ptr) AccessChain 23 83 Store 962 961 963: 96(ptr) AccessChain 23 95 964: 19(i16vec4) Load 963 965: 18(int16_t) CompositeExtract 964 0 966: 18(int16_t) GroupSMinNonUniformAMD 28 InclusiveScan 965 967: 18(int16_t) CompositeExtract 964 1 968: 18(int16_t) GroupSMinNonUniformAMD 28 InclusiveScan 967 969: 18(int16_t) CompositeExtract 964 2 970: 18(int16_t) GroupSMinNonUniformAMD 28 InclusiveScan 969 971: 18(int16_t) CompositeExtract 964 3 972: 18(int16_t) GroupSMinNonUniformAMD 28 InclusiveScan 971 973: 19(i16vec4) CompositeConstruct 966 968 970 972 974: 96(ptr) AccessChain 23 95 Store 974 973 975: 110(ptr) AccessChain 23 109 976: 20(int16_t) Load 975 977: 20(int16_t) GroupUMinNonUniformAMD 28 InclusiveScan 976 978: 110(ptr) AccessChain 23 109 Store 978 977 979: 25(ptr) AccessChain 23 24 980: 6(int) Load 979 981: 6(int) GroupSMaxNonUniformAMD 28 InclusiveScan 980 982: 25(ptr) AccessChain 23 24 Store 982 981 983: 32(ptr) AccessChain 23 31 984: 8(ivec2) Load 983 985: 7(int) CompositeExtract 984 0 986: 7(int) GroupUMaxNonUniformAMD 28 InclusiveScan 985 987: 7(int) CompositeExtract 984 1 988: 7(int) GroupUMaxNonUniformAMD 28 InclusiveScan 987 989: 8(ivec2) CompositeConstruct 986 988 990: 32(ptr) AccessChain 23 31 Store 990 989 991: 42(ptr) AccessChain 23 41 992: 10(fvec3) Load 991 993: 9(float) CompositeExtract 992 0 994: 9(float) GroupFMaxNonUniformAMD 28 InclusiveScan 993 995: 9(float) CompositeExtract 992 1 996: 9(float) GroupFMaxNonUniformAMD 28 InclusiveScan 995 997: 9(float) CompositeExtract 992 2 998: 9(float) GroupFMaxNonUniformAMD 28 InclusiveScan 997 999: 10(fvec3) CompositeConstruct 994 996 998 1000: 42(ptr) AccessChain 23 41 Store 1000 999 1001: 54(ptr) AccessChain 23 53 1002: 12(f64vec4) Load 1001 1003:11(float64_t) CompositeExtract 1002 0 1004:11(float64_t) GroupFMaxNonUniformAMD 28 InclusiveScan 1003 1005:11(float64_t) CompositeExtract 1002 1 1006:11(float64_t) GroupFMaxNonUniformAMD 28 InclusiveScan 1005 1007:11(float64_t) CompositeExtract 1002 2 1008:11(float64_t) GroupFMaxNonUniformAMD 28 InclusiveScan 1007 1009:11(float64_t) CompositeExtract 1002 3 1010:11(float64_t) GroupFMaxNonUniformAMD 28 InclusiveScan 1009 1011: 12(f64vec4) CompositeConstruct 1004 1006 1008 1010 1012: 54(ptr) AccessChain 23 53 Store 1012 1011 1013: 68(ptr) AccessChain 23 67 1014: 13(int64_t) Load 1013 1015: 13(int64_t) GroupSMaxNonUniformAMD 28 InclusiveScan 1014 1016: 68(ptr) AccessChain 23 67 Store 1016 1015 1017: 74(ptr) AccessChain 23 73 1018: 15(i64vec2) Load 1017 1019: 14(int64_t) CompositeExtract 1018 0 1020: 14(int64_t) GroupUMaxNonUniformAMD 28 InclusiveScan 1019 1021: 14(int64_t) CompositeExtract 1018 1 1022: 14(int64_t) GroupUMaxNonUniformAMD 28 InclusiveScan 1021 1023: 15(i64vec2) CompositeConstruct 1020 1022 1024: 74(ptr) AccessChain 23 73 Store 1024 1023 1025: 84(ptr) AccessChain 23 83 1026: 17(f16vec3) Load 1025 1027:16(float16_t) CompositeExtract 1026 0 1028:16(float16_t) GroupFMaxNonUniformAMD 28 InclusiveScan 1027 1029:16(float16_t) CompositeExtract 1026 1 1030:16(float16_t) GroupFMaxNonUniformAMD 28 InclusiveScan 1029 1031:16(float16_t) CompositeExtract 1026 2 1032:16(float16_t) GroupFMaxNonUniformAMD 28 InclusiveScan 1031 1033: 17(f16vec3) CompositeConstruct 1028 1030 1032 1034: 84(ptr) AccessChain 23 83 Store 1034 1033 1035: 96(ptr) AccessChain 23 95 1036: 19(i16vec4) Load 1035 1037: 18(int16_t) CompositeExtract 1036 0 1038: 18(int16_t) GroupSMaxNonUniformAMD 28 InclusiveScan 1037 1039: 18(int16_t) CompositeExtract 1036 1 1040: 18(int16_t) GroupSMaxNonUniformAMD 28 InclusiveScan 1039 1041: 18(int16_t) CompositeExtract 1036 2 1042: 18(int16_t) GroupSMaxNonUniformAMD 28 InclusiveScan 1041 1043: 18(int16_t) CompositeExtract 1036 3 1044: 18(int16_t) GroupSMaxNonUniformAMD 28 InclusiveScan 1043 1045: 19(i16vec4) CompositeConstruct 1038 1040 1042 1044 1046: 96(ptr) AccessChain 23 95 Store 1046 1045 1047: 110(ptr) AccessChain 23 109 1048: 20(int16_t) Load 1047 1049: 20(int16_t) GroupUMaxNonUniformAMD 28 InclusiveScan 1048 1050: 110(ptr) AccessChain 23 109 Store 1050 1049 1051: 25(ptr) AccessChain 23 24 1052: 6(int) Load 1051 1053: 6(int) GroupIAddNonUniformAMD 28 InclusiveScan 1052 1054: 25(ptr) AccessChain 23 24 Store 1054 1053 1055: 32(ptr) AccessChain 23 31 1056: 8(ivec2) Load 1055 1057: 7(int) CompositeExtract 1056 0 1058: 7(int) GroupIAddNonUniformAMD 28 InclusiveScan 1057 1059: 7(int) CompositeExtract 1056 1 1060: 7(int) GroupIAddNonUniformAMD 28 InclusiveScan 1059 1061: 8(ivec2) CompositeConstruct 1058 1060 1062: 32(ptr) AccessChain 23 31 Store 1062 1061 1063: 42(ptr) AccessChain 23 41 1064: 10(fvec3) Load 1063 1065: 9(float) CompositeExtract 1064 0 1066: 9(float) GroupFAddNonUniformAMD 28 InclusiveScan 1065 1067: 9(float) CompositeExtract 1064 1 1068: 9(float) GroupFAddNonUniformAMD 28 InclusiveScan 1067 1069: 9(float) CompositeExtract 1064 2 1070: 9(float) GroupFAddNonUniformAMD 28 InclusiveScan 1069 1071: 10(fvec3) CompositeConstruct 1066 1068 1070 1072: 42(ptr) AccessChain 23 41 Store 1072 1071 1073: 54(ptr) AccessChain 23 53 1074: 12(f64vec4) Load 1073 1075:11(float64_t) CompositeExtract 1074 0 1076:11(float64_t) GroupFAddNonUniformAMD 28 InclusiveScan 1075 1077:11(float64_t) CompositeExtract 1074 1 1078:11(float64_t) GroupFAddNonUniformAMD 28 InclusiveScan 1077 1079:11(float64_t) CompositeExtract 1074 2 1080:11(float64_t) GroupFAddNonUniformAMD 28 InclusiveScan 1079 1081:11(float64_t) CompositeExtract 1074 3 1082:11(float64_t) GroupFAddNonUniformAMD 28 InclusiveScan 1081 1083: 12(f64vec4) CompositeConstruct 1076 1078 1080 1082 1084: 54(ptr) AccessChain 23 53 Store 1084 1083 1085: 68(ptr) AccessChain 23 67 1086: 13(int64_t) Load 1085 1087: 13(int64_t) GroupIAddNonUniformAMD 28 InclusiveScan 1086 1088: 68(ptr) AccessChain 23 67 Store 1088 1087 1089: 74(ptr) AccessChain 23 73 1090: 15(i64vec2) Load 1089 1091: 14(int64_t) CompositeExtract 1090 0 1092: 14(int64_t) GroupIAddNonUniformAMD 28 InclusiveScan 1091 1093: 14(int64_t) CompositeExtract 1090 1 1094: 14(int64_t) GroupIAddNonUniformAMD 28 InclusiveScan 1093 1095: 15(i64vec2) CompositeConstruct 1092 1094 1096: 74(ptr) AccessChain 23 73 Store 1096 1095 1097: 84(ptr) AccessChain 23 83 1098: 17(f16vec3) Load 1097 1099:16(float16_t) CompositeExtract 1098 0 1100:16(float16_t) GroupFAddNonUniformAMD 28 InclusiveScan 1099 1101:16(float16_t) CompositeExtract 1098 1 1102:16(float16_t) GroupFAddNonUniformAMD 28 InclusiveScan 1101 1103:16(float16_t) CompositeExtract 1098 2 1104:16(float16_t) GroupFAddNonUniformAMD 28 InclusiveScan 1103 1105: 17(f16vec3) CompositeConstruct 1100 1102 1104 1106: 84(ptr) AccessChain 23 83 Store 1106 1105 1107: 96(ptr) AccessChain 23 95 1108: 19(i16vec4) Load 1107 1109: 18(int16_t) CompositeExtract 1108 0 1110: 18(int16_t) GroupIAddNonUniformAMD 28 InclusiveScan 1109 1111: 18(int16_t) CompositeExtract 1108 1 1112: 18(int16_t) GroupIAddNonUniformAMD 28 InclusiveScan 1111 1113: 18(int16_t) CompositeExtract 1108 2 1114: 18(int16_t) GroupIAddNonUniformAMD 28 InclusiveScan 1113 1115: 18(int16_t) CompositeExtract 1108 3 1116: 18(int16_t) GroupIAddNonUniformAMD 28 InclusiveScan 1115 1117: 19(i16vec4) CompositeConstruct 1110 1112 1114 1116 1118: 96(ptr) AccessChain 23 95 Store 1118 1117 1119: 110(ptr) AccessChain 23 109 1120: 20(int16_t) Load 1119 1121: 20(int16_t) GroupIAddNonUniformAMD 28 InclusiveScan 1120 1122: 110(ptr) AccessChain 23 109 Store 1122 1121 1123: 25(ptr) AccessChain 23 24 1124: 6(int) Load 1123 1125: 6(int) GroupSMinNonUniformAMD 28 ExclusiveScan 1124 1126: 25(ptr) AccessChain 23 24 Store 1126 1125 1127: 32(ptr) AccessChain 23 31 1128: 8(ivec2) Load 1127 1129: 7(int) CompositeExtract 1128 0 1130: 7(int) GroupUMinNonUniformAMD 28 ExclusiveScan 1129 1131: 7(int) CompositeExtract 1128 1 1132: 7(int) GroupUMinNonUniformAMD 28 ExclusiveScan 1131 1133: 8(ivec2) CompositeConstruct 1130 1132 1134: 32(ptr) AccessChain 23 31 Store 1134 1133 1135: 42(ptr) AccessChain 23 41 1136: 10(fvec3) Load 1135 1137: 9(float) CompositeExtract 1136 0 1138: 9(float) GroupFMinNonUniformAMD 28 ExclusiveScan 1137 1139: 9(float) CompositeExtract 1136 1 1140: 9(float) GroupFMinNonUniformAMD 28 ExclusiveScan 1139 1141: 9(float) CompositeExtract 1136 2 1142: 9(float) GroupFMinNonUniformAMD 28 ExclusiveScan 1141 1143: 10(fvec3) CompositeConstruct 1138 1140 1142 1144: 42(ptr) AccessChain 23 41 Store 1144 1143 1145: 54(ptr) AccessChain 23 53 1146: 12(f64vec4) Load 1145 1147:11(float64_t) CompositeExtract 1146 0 1148:11(float64_t) GroupFMinNonUniformAMD 28 ExclusiveScan 1147 1149:11(float64_t) CompositeExtract 1146 1 1150:11(float64_t) GroupFMinNonUniformAMD 28 ExclusiveScan 1149 1151:11(float64_t) CompositeExtract 1146 2 1152:11(float64_t) GroupFMinNonUniformAMD 28 ExclusiveScan 1151 1153:11(float64_t) CompositeExtract 1146 3 1154:11(float64_t) GroupFMinNonUniformAMD 28 ExclusiveScan 1153 1155: 12(f64vec4) CompositeConstruct 1148 1150 1152 1154 1156: 54(ptr) AccessChain 23 53 Store 1156 1155 1157: 68(ptr) AccessChain 23 67 1158: 13(int64_t) Load 1157 1159: 13(int64_t) GroupSMinNonUniformAMD 28 ExclusiveScan 1158 1160: 68(ptr) AccessChain 23 67 Store 1160 1159 1161: 74(ptr) AccessChain 23 73 1162: 15(i64vec2) Load 1161 1163: 14(int64_t) CompositeExtract 1162 0 1164: 14(int64_t) GroupUMinNonUniformAMD 28 ExclusiveScan 1163 1165: 14(int64_t) CompositeExtract 1162 1 1166: 14(int64_t) GroupUMinNonUniformAMD 28 ExclusiveScan 1165 1167: 15(i64vec2) CompositeConstruct 1164 1166 1168: 74(ptr) AccessChain 23 73 Store 1168 1167 1169: 84(ptr) AccessChain 23 83 1170: 17(f16vec3) Load 1169 1171:16(float16_t) CompositeExtract 1170 0 1172:16(float16_t) GroupFMinNonUniformAMD 28 ExclusiveScan 1171 1173:16(float16_t) CompositeExtract 1170 1 1174:16(float16_t) GroupFMinNonUniformAMD 28 ExclusiveScan 1173 1175:16(float16_t) CompositeExtract 1170 2 1176:16(float16_t) GroupFMinNonUniformAMD 28 ExclusiveScan 1175 1177: 17(f16vec3) CompositeConstruct 1172 1174 1176 1178: 84(ptr) AccessChain 23 83 Store 1178 1177 1179: 96(ptr) AccessChain 23 95 1180: 19(i16vec4) Load 1179 1181: 18(int16_t) CompositeExtract 1180 0 1182: 18(int16_t) GroupSMinNonUniformAMD 28 ExclusiveScan 1181 1183: 18(int16_t) CompositeExtract 1180 1 1184: 18(int16_t) GroupSMinNonUniformAMD 28 ExclusiveScan 1183 1185: 18(int16_t) CompositeExtract 1180 2 1186: 18(int16_t) GroupSMinNonUniformAMD 28 ExclusiveScan 1185 1187: 18(int16_t) CompositeExtract 1180 3 1188: 18(int16_t) GroupSMinNonUniformAMD 28 ExclusiveScan 1187 1189: 19(i16vec4) CompositeConstruct 1182 1184 1186 1188 1190: 96(ptr) AccessChain 23 95 Store 1190 1189 1191: 110(ptr) AccessChain 23 109 1192: 20(int16_t) Load 1191 1193: 20(int16_t) GroupUMinNonUniformAMD 28 ExclusiveScan 1192 1194: 110(ptr) AccessChain 23 109 Store 1194 1193 1195: 25(ptr) AccessChain 23 24 1196: 6(int) Load 1195 1197: 6(int) GroupSMaxNonUniformAMD 28 ExclusiveScan 1196 1198: 25(ptr) AccessChain 23 24 Store 1198 1197 1199: 32(ptr) AccessChain 23 31 1200: 8(ivec2) Load 1199 1201: 7(int) CompositeExtract 1200 0 1202: 7(int) GroupUMaxNonUniformAMD 28 ExclusiveScan 1201 1203: 7(int) CompositeExtract 1200 1 1204: 7(int) GroupUMaxNonUniformAMD 28 ExclusiveScan 1203 1205: 8(ivec2) CompositeConstruct 1202 1204 1206: 32(ptr) AccessChain 23 31 Store 1206 1205 1207: 42(ptr) AccessChain 23 41 1208: 10(fvec3) Load 1207 1209: 9(float) CompositeExtract 1208 0 1210: 9(float) GroupFMaxNonUniformAMD 28 ExclusiveScan 1209 1211: 9(float) CompositeExtract 1208 1 1212: 9(float) GroupFMaxNonUniformAMD 28 ExclusiveScan 1211 1213: 9(float) CompositeExtract 1208 2 1214: 9(float) GroupFMaxNonUniformAMD 28 ExclusiveScan 1213 1215: 10(fvec3) CompositeConstruct 1210 1212 1214 1216: 42(ptr) AccessChain 23 41 Store 1216 1215 1217: 54(ptr) AccessChain 23 53 1218: 12(f64vec4) Load 1217 1219:11(float64_t) CompositeExtract 1218 0 1220:11(float64_t) GroupFMaxNonUniformAMD 28 ExclusiveScan 1219 1221:11(float64_t) CompositeExtract 1218 1 1222:11(float64_t) GroupFMaxNonUniformAMD 28 ExclusiveScan 1221 1223:11(float64_t) CompositeExtract 1218 2 1224:11(float64_t) GroupFMaxNonUniformAMD 28 ExclusiveScan 1223 1225:11(float64_t) CompositeExtract 1218 3 1226:11(float64_t) GroupFMaxNonUniformAMD 28 ExclusiveScan 1225 1227: 12(f64vec4) CompositeConstruct 1220 1222 1224 1226 1228: 54(ptr) AccessChain 23 53 Store 1228 1227 1229: 68(ptr) AccessChain 23 67 1230: 13(int64_t) Load 1229 1231: 13(int64_t) GroupSMaxNonUniformAMD 28 ExclusiveScan 1230 1232: 68(ptr) AccessChain 23 67 Store 1232 1231 1233: 74(ptr) AccessChain 23 73 1234: 15(i64vec2) Load 1233 1235: 14(int64_t) CompositeExtract 1234 0 1236: 14(int64_t) GroupUMaxNonUniformAMD 28 ExclusiveScan 1235 1237: 14(int64_t) CompositeExtract 1234 1 1238: 14(int64_t) GroupUMaxNonUniformAMD 28 ExclusiveScan 1237 1239: 15(i64vec2) CompositeConstruct 1236 1238 1240: 74(ptr) AccessChain 23 73 Store 1240 1239 1241: 84(ptr) AccessChain 23 83 1242: 17(f16vec3) Load 1241 1243:16(float16_t) CompositeExtract 1242 0 1244:16(float16_t) GroupFMaxNonUniformAMD 28 ExclusiveScan 1243 1245:16(float16_t) CompositeExtract 1242 1 1246:16(float16_t) GroupFMaxNonUniformAMD 28 ExclusiveScan 1245 1247:16(float16_t) CompositeExtract 1242 2 1248:16(float16_t) GroupFMaxNonUniformAMD 28 ExclusiveScan 1247 1249: 17(f16vec3) CompositeConstruct 1244 1246 1248 1250: 84(ptr) AccessChain 23 83 Store 1250 1249 1251: 96(ptr) AccessChain 23 95 1252: 19(i16vec4) Load 1251 1253: 18(int16_t) CompositeExtract 1252 0 1254: 18(int16_t) GroupSMaxNonUniformAMD 28 ExclusiveScan 1253 1255: 18(int16_t) CompositeExtract 1252 1 1256: 18(int16_t) GroupSMaxNonUniformAMD 28 ExclusiveScan 1255 1257: 18(int16_t) CompositeExtract 1252 2 1258: 18(int16_t) GroupSMaxNonUniformAMD 28 ExclusiveScan 1257 1259: 18(int16_t) CompositeExtract 1252 3 1260: 18(int16_t) GroupSMaxNonUniformAMD 28 ExclusiveScan 1259 1261: 19(i16vec4) CompositeConstruct 1254 1256 1258 1260 1262: 96(ptr) AccessChain 23 95 Store 1262 1261 1263: 110(ptr) AccessChain 23 109 1264: 20(int16_t) Load 1263 1265: 20(int16_t) GroupUMaxNonUniformAMD 28 ExclusiveScan 1264 1266: 110(ptr) AccessChain 23 109 Store 1266 1265 1267: 25(ptr) AccessChain 23 24 1268: 6(int) Load 1267 1269: 6(int) GroupIAddNonUniformAMD 28 ExclusiveScan 1268 1270: 25(ptr) AccessChain 23 24 Store 1270 1269 1271: 32(ptr) AccessChain 23 31 1272: 8(ivec2) Load 1271 1273: 7(int) CompositeExtract 1272 0 1274: 7(int) GroupIAddNonUniformAMD 28 ExclusiveScan 1273 1275: 7(int) CompositeExtract 1272 1 1276: 7(int) GroupIAddNonUniformAMD 28 ExclusiveScan 1275 1277: 8(ivec2) CompositeConstruct 1274 1276 1278: 32(ptr) AccessChain 23 31 Store 1278 1277 1279: 42(ptr) AccessChain 23 41 1280: 10(fvec3) Load 1279 1281: 9(float) CompositeExtract 1280 0 1282: 9(float) GroupFAddNonUniformAMD 28 ExclusiveScan 1281 1283: 9(float) CompositeExtract 1280 1 1284: 9(float) GroupFAddNonUniformAMD 28 ExclusiveScan 1283 1285: 9(float) CompositeExtract 1280 2 1286: 9(float) GroupFAddNonUniformAMD 28 ExclusiveScan 1285 1287: 10(fvec3) CompositeConstruct 1282 1284 1286 1288: 42(ptr) AccessChain 23 41 Store 1288 1287 1289: 54(ptr) AccessChain 23 53 1290: 12(f64vec4) Load 1289 1291:11(float64_t) CompositeExtract 1290 0 1292:11(float64_t) GroupFAddNonUniformAMD 28 ExclusiveScan 1291 1293:11(float64_t) CompositeExtract 1290 1 1294:11(float64_t) GroupFAddNonUniformAMD 28 ExclusiveScan 1293 1295:11(float64_t) CompositeExtract 1290 2 1296:11(float64_t) GroupFAddNonUniformAMD 28 ExclusiveScan 1295 1297:11(float64_t) CompositeExtract 1290 3 1298:11(float64_t) GroupFAddNonUniformAMD 28 ExclusiveScan 1297 1299: 12(f64vec4) CompositeConstruct 1292 1294 1296 1298 1300: 54(ptr) AccessChain 23 53 Store 1300 1299 1301: 68(ptr) AccessChain 23 67 1302: 13(int64_t) Load 1301 1303: 13(int64_t) GroupIAddNonUniformAMD 28 ExclusiveScan 1302 1304: 68(ptr) AccessChain 23 67 Store 1304 1303 1305: 74(ptr) AccessChain 23 73 1306: 15(i64vec2) Load 1305 1307: 14(int64_t) CompositeExtract 1306 0 1308: 14(int64_t) GroupIAddNonUniformAMD 28 ExclusiveScan 1307 1309: 14(int64_t) CompositeExtract 1306 1 1310: 14(int64_t) GroupIAddNonUniformAMD 28 ExclusiveScan 1309 1311: 15(i64vec2) CompositeConstruct 1308 1310 1312: 74(ptr) AccessChain 23 73 Store 1312 1311 1313: 84(ptr) AccessChain 23 83 1314: 17(f16vec3) Load 1313 1315:16(float16_t) CompositeExtract 1314 0 1316:16(float16_t) GroupFAddNonUniformAMD 28 ExclusiveScan 1315 1317:16(float16_t) CompositeExtract 1314 1 1318:16(float16_t) GroupFAddNonUniformAMD 28 ExclusiveScan 1317 1319:16(float16_t) CompositeExtract 1314 2 1320:16(float16_t) GroupFAddNonUniformAMD 28 ExclusiveScan 1319 1321: 17(f16vec3) CompositeConstruct 1316 1318 1320 1322: 84(ptr) AccessChain 23 83 Store 1322 1321 1323: 96(ptr) AccessChain 23 95 1324: 19(i16vec4) Load 1323 1325: 18(int16_t) CompositeExtract 1324 0 1326: 18(int16_t) GroupIAddNonUniformAMD 28 ExclusiveScan 1325 1327: 18(int16_t) CompositeExtract 1324 1 1328: 18(int16_t) GroupIAddNonUniformAMD 28 ExclusiveScan 1327 1329: 18(int16_t) CompositeExtract 1324 2 1330: 18(int16_t) GroupIAddNonUniformAMD 28 ExclusiveScan 1329 1331: 18(int16_t) CompositeExtract 1324 3 1332: 18(int16_t) GroupIAddNonUniformAMD 28 ExclusiveScan 1331 1333: 19(i16vec4) CompositeConstruct 1326 1328 1330 1332 1334: 96(ptr) AccessChain 23 95 Store 1334 1333 1335: 110(ptr) AccessChain 23 109 1336: 20(int16_t) Load 1335 1337: 20(int16_t) GroupIAddNonUniformAMD 28 ExclusiveScan 1336 1338: 110(ptr) AccessChain 23 109 Store 1338 1337 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shaderDrawParams.vert.out000066400000000000000000000122671506534232700242260ustar00rootroot00000000000000spv.shaderDrawParams.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader Capability DrawParameters Extension "SPV_KHR_shader_draw_parameters" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 16 29 37 Source GLSL 450 SourceExtension "GL_ARB_shader_draw_parameters" Name 4 "main" Name 9 "gl_BaseVertexARB" Name 16 "gl_BaseInstanceARB" Name 27 "gl_PerVertex" MemberName 27(gl_PerVertex) 0 "gl_Position" MemberName 27(gl_PerVertex) 1 "gl_PointSize" MemberName 27(gl_PerVertex) 2 "gl_ClipDistance" MemberName 27(gl_PerVertex) 3 "gl_CullDistance" Name 29 "" Name 34 "Block" MemberName 34(Block) 0 "pos" Name 36 "block" Name 37 "gl_DrawIDARB" Decorate 9(gl_BaseVertexARB) BuiltIn BaseVertex Decorate 16(gl_BaseInstanceARB) BuiltIn BaseInstance Decorate 27(gl_PerVertex) Block MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance Decorate 31 ArrayStride 16 Decorate 33 ArrayStride 64 Decorate 34(Block) Block MemberDecorate 34(Block) 0 Offset 0 Decorate 36(block) Binding 0 Decorate 36(block) DescriptorSet 0 Decorate 37(gl_DrawIDARB) BuiltIn DrawIndex 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypeInt 32 1 8: TypePointer Input 7(int) 9(gl_BaseVertexARB): 8(ptr) Variable Input 11: 7(int) Constant 0 16(gl_BaseInstanceARB): 8(ptr) Variable Input 22: TypeFloat 32 23: TypeVector 22(float) 4 24: TypeInt 32 0 25: 24(int) Constant 1 26: TypeArray 22(float) 25 27(gl_PerVertex): TypeStruct 23(fvec4) 22(float) 26 26 28: TypePointer Output 27(gl_PerVertex) 29: 28(ptr) Variable Output 30: 24(int) Constant 4 31: TypeArray 23(fvec4) 30 32: 24(int) Constant 2 33: TypeArray 31 32 34(Block): TypeStruct 33 35: TypePointer Uniform 34(Block) 36(block): 35(ptr) Variable Uniform 37(gl_DrawIDARB): 8(ptr) Variable Input 39: 7(int) Constant 4 41: TypePointer Uniform 23(fvec4) 44: TypePointer Output 23(fvec4) 47: 7(int) Constant 1 4(main): 2 Function None 3 5: Label 10: 7(int) Load 9(gl_BaseVertexARB) 12: 6(bool) SGreaterThan 10 11 13: 6(bool) LogicalNot 12 SelectionMerge 15 None BranchConditional 13 14 15 14: Label 17: 7(int) Load 16(gl_BaseInstanceARB) 18: 6(bool) SGreaterThan 17 11 Branch 15 15: Label 19: 6(bool) Phi 12 5 18 14 SelectionMerge 21 None BranchConditional 19 20 46 20: Label 38: 7(int) Load 37(gl_DrawIDARB) 40: 7(int) SMod 38 39 42: 41(ptr) AccessChain 36(block) 11 11 40 43: 23(fvec4) Load 42 45: 44(ptr) AccessChain 29 11 Store 45 43 Branch 21 46: Label 48: 7(int) Load 37(gl_DrawIDARB) 49: 7(int) SMod 48 39 50: 41(ptr) AccessChain 36(block) 11 47 49 51: 23(fvec4) Load 50 52: 44(ptr) AccessChain 29 11 Store 52 51 Branch 21 21: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shaderFragMaskAMD.frag.out000066400000000000000000000140451506534232700241350ustar00rootroot00000000000000spv.shaderFragMaskAMD.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader Capability InputAttachment Capability FragmentMaskAMD Extension "SPV_AMD_shader_fragment_mask" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 78 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_shader_fragment_mask" Name 4 "main" Name 9 "f4" Name 14 "fragMask" Name 18 "s2DMS" Name 27 "fragIndex" Name 42 "is2DMSArray" Name 62 "usubpassMS" Name 78 "fragColor" Decorate 18(s2DMS) Binding 0 Decorate 18(s2DMS) DescriptorSet 0 Decorate 42(is2DMSArray) Binding 1 Decorate 42(is2DMSArray) DescriptorSet 0 Decorate 62(usubpassMS) Binding 2 Decorate 62(usubpassMS) DescriptorSet 0 Decorate 62(usubpassMS) InputAttachmentIndex 0 Decorate 78(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 12: TypeInt 32 0 13: TypePointer Function 12(int) 15: TypeImage 6(float) 2D multi-sampled sampled format:Unknown 16: TypeSampledImage 15 17: TypePointer UniformConstant 16 18(s2DMS): 17(ptr) Variable UniformConstant 20: TypeInt 32 1 21: TypeVector 20(int) 2 22: 20(int) Constant 2 23: 20(int) Constant 3 24: 21(ivec2) ConstantComposite 22 23 29: 12(int) Constant 240 31: 20(int) Constant 4 34: 12(int) Constant 1 39: TypeImage 20(int) 2D array multi-sampled sampled format:Unknown 40: TypeSampledImage 39 41: TypePointer UniformConstant 40 42(is2DMSArray): 41(ptr) Variable UniformConstant 44: TypeVector 20(int) 3 45: 20(int) Constant 1 46: 44(ivec3) ConstantComposite 22 23 45 55: TypeVector 20(int) 4 60: TypeImage 12(int) SubpassData multi-sampled nonsampled format:Unknown 61: TypePointer UniformConstant 60 62(usubpassMS): 61(ptr) Variable UniformConstant 64: 20(int) Constant 0 65: 21(ivec2) ConstantComposite 64 64 72: TypeVector 12(int) 4 77: TypePointer Output 7(fvec4) 78(fragColor): 77(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(f4): 8(ptr) Variable Function 14(fragMask): 13(ptr) Variable Function 27(fragIndex): 13(ptr) Variable Function Store 9(f4) 11 19: 16 Load 18(s2DMS) 25: 15 Image 19 26: 12(int) FragmentMaskFetchAMD 25 24 Store 14(fragMask) 26 28: 12(int) Load 14(fragMask) 30: 12(int) BitwiseAnd 28 29 32: 12(int) ShiftRightLogical 30 31 Store 27(fragIndex) 32 33: 16 Load 18(s2DMS) 35: 15 Image 33 36: 7(fvec4) FragmentFetchAMD 35 24 34 37: 7(fvec4) Load 9(f4) 38: 7(fvec4) FAdd 37 36 Store 9(f4) 38 43: 40 Load 42(is2DMSArray) 47: 39 Image 43 48: 12(int) FragmentMaskFetchAMD 47 46 Store 14(fragMask) 48 49: 12(int) Load 14(fragMask) 50: 12(int) BitwiseAnd 49 29 51: 12(int) ShiftRightLogical 50 31 Store 27(fragIndex) 51 52: 40 Load 42(is2DMSArray) 53: 12(int) Load 27(fragIndex) 54: 39 Image 52 56: 55(ivec4) FragmentFetchAMD 54 46 53 57: 7(fvec4) ConvertSToF 56 58: 7(fvec4) Load 9(f4) 59: 7(fvec4) FAdd 58 57 Store 9(f4) 59 63: 60 Load 62(usubpassMS) 66: 12(int) FragmentMaskFetchAMD 63 65 Store 14(fragMask) 66 67: 12(int) Load 14(fragMask) 68: 12(int) BitwiseAnd 67 29 69: 12(int) ShiftRightLogical 68 31 Store 27(fragIndex) 69 70: 60 Load 62(usubpassMS) 71: 12(int) Load 27(fragIndex) 73: 72(ivec4) FragmentFetchAMD 70 65 71 74: 7(fvec4) ConvertUToF 73 75: 7(fvec4) Load 9(f4) 76: 7(fvec4) FAdd 75 74 Store 9(f4) 76 79: 7(fvec4) Load 9(f4) Store 78(fragColor) 79 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shaderGroupVote.comp.out000066400000000000000000000055361506534232700240760ustar00rootroot00000000000000spv.shaderGroupVote.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader Capability SubgroupVoteKHR Extension "SPV_KHR_subgroup_vote" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 4 4 1 Source GLSL 450 SourceExtension "GL_ARB_shader_group_vote" Name 4 "main" Name 8 "b1" Name 10 "Buffers" MemberName 10(Buffers) 0 "b" Name 12 "" Decorate 10(Buffers) BufferBlock MemberDecorate 10(Buffers) 0 Offset 0 Decorate 12 Binding 0 Decorate 12 DescriptorSet 0 Decorate 32 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 9: TypeInt 32 0 10(Buffers): TypeStruct 9(int) 11: TypePointer Uniform 10(Buffers) 12: 11(ptr) Variable Uniform 13: TypeInt 32 1 14: 13(int) Constant 0 15: TypePointer Uniform 9(int) 18: 9(int) Constant 0 27: 9(int) Constant 1 30: TypeVector 9(int) 3 31: 9(int) Constant 4 32: 30(ivec3) ConstantComposite 31 31 27 4(main): 2 Function None 3 5: Label 8(b1): 7(ptr) Variable Function 16: 15(ptr) AccessChain 12 14 17: 9(int) Load 16 19: 6(bool) INotEqual 17 18 Store 8(b1) 19 20: 6(bool) Load 8(b1) 21: 6(bool) SubgroupAnyKHR 20 Store 8(b1) 21 22: 6(bool) Load 8(b1) 23: 6(bool) SubgroupAllKHR 22 Store 8(b1) 23 24: 6(bool) Load 8(b1) 25: 6(bool) SubgroupAllEqualKHR 24 Store 8(b1) 25 26: 6(bool) Load 8(b1) 28: 9(int) Select 26 27 18 29: 15(ptr) AccessChain 12 14 Store 29 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shaderImageFootprint.frag.out000066400000000000000000001231421506534232700250460ustar00rootroot00000000000000spv.shaderImageFootprint.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 622 Capability Shader Capability MinLod Capability ImageFootprintNV Extension "SPV_NV_shader_image_footprint" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 21 24 76 125 225 275 277 387 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_NV_shader_texture_footprint" Name 4 "main" Name 8 "result2D" MemberName 8(result2D) 0 "ret2D" MemberName 8(result2D) 1 "anchor2D" MemberName 8(result2D) 2 "offset2D" MemberName 8(result2D) 3 "mask2D" MemberName 8(result2D) 4 "lod2D" MemberName 8(result2D) 5 "granularity2D" Name 10 "" Name 17 "sample2D" Name 21 "P2" Name 24 "granularity" Name 28 "gl_TextureFootprint2DNV" MemberName 28(gl_TextureFootprint2DNV) 0 "anchor" MemberName 28(gl_TextureFootprint2DNV) 1 "offset" MemberName 28(gl_TextureFootprint2DNV) 2 "mask" MemberName 28(gl_TextureFootprint2DNV) 3 "lod" MemberName 28(gl_TextureFootprint2DNV) 4 "granularity" Name 30 "fp2D" Name 31 "ResType" Name 76 "bias" Name 78 "ResType" Name 125 "lodClamp" Name 128 "ResType" Name 178 "ResType" Name 225 "lod" Name 228 "ResType" Name 275 "dx" Name 277 "dy" Name 280 "ResType" Name 331 "ResType" Name 377 "result3D" MemberName 377(result3D) 0 "ret3D" MemberName 377(result3D) 1 "anchor3D" MemberName 377(result3D) 2 "offset3D" MemberName 377(result3D) 3 "mask3D" MemberName 377(result3D) 4 "lod3D" MemberName 377(result3D) 5 "granularity3D" Name 379 "" Name 383 "sample3D" Name 387 "P3" Name 390 "gl_TextureFootprint3DNV" MemberName 390(gl_TextureFootprint3DNV) 0 "anchor" MemberName 390(gl_TextureFootprint3DNV) 1 "offset" MemberName 390(gl_TextureFootprint3DNV) 2 "mask" MemberName 390(gl_TextureFootprint3DNV) 3 "lod" MemberName 390(gl_TextureFootprint3DNV) 4 "granularity" Name 392 "fp3D" Name 393 "ResType" Name 429 "ResType" Name 478 "ResType" Name 528 "ResType" Name 577 "ResType" Decorate 8(result2D) BufferBlock MemberDecorate 8(result2D) 0 Offset 0 MemberDecorate 8(result2D) 1 Offset 8 MemberDecorate 8(result2D) 2 Offset 16 MemberDecorate 8(result2D) 3 Offset 24 MemberDecorate 8(result2D) 4 Offset 32 MemberDecorate 8(result2D) 5 Offset 36 Decorate 10 Binding 2 Decorate 10 DescriptorSet 0 Decorate 17(sample2D) Binding 0 Decorate 17(sample2D) DescriptorSet 0 Decorate 21(P2) Location 0 Decorate 24(granularity) Flat Decorate 24(granularity) Location 3 Decorate 76(bias) Location 9 Decorate 125(lodClamp) Location 4 Decorate 225(lod) Location 5 Decorate 275(dx) Location 6 Decorate 277(dy) Location 8 Decorate 377(result3D) BufferBlock MemberDecorate 377(result3D) 0 Offset 0 MemberDecorate 377(result3D) 1 Offset 16 MemberDecorate 377(result3D) 2 Offset 32 MemberDecorate 377(result3D) 3 Offset 48 MemberDecorate 377(result3D) 4 Offset 56 MemberDecorate 377(result3D) 5 Offset 60 Decorate 379 Binding 3 Decorate 379 DescriptorSet 0 Decorate 383(sample3D) Binding 1 Decorate 383(sample3D) DescriptorSet 0 Decorate 387(P3) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8(result2D): TypeStruct 6(int) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 9: TypePointer Uniform 8(result2D) 10: 9(ptr) Variable Uniform 11: TypeInt 32 1 12: 11(int) Constant 0 13: TypeFloat 32 14: TypeImage 13(float) 2D sampled format:Unknown 15: TypeSampledImage 14 16: TypePointer UniformConstant 15 17(sample2D): 16(ptr) Variable UniformConstant 19: TypeVector 13(float) 2 20: TypePointer Input 19(fvec2) 21(P2): 20(ptr) Variable Input 23: TypePointer Input 11(int) 24(granularity): 23(ptr) Variable Input 26: TypeBool 27: 26(bool) ConstantTrue 28(gl_TextureFootprint2DNV): TypeStruct 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 29: TypePointer Function 28(gl_TextureFootprint2DNV) 31(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 34: TypePointer Function 7(ivec2) 36: 11(int) Constant 1 39: 11(int) Constant 2 42: 11(int) Constant 3 44: TypePointer Function 6(int) 46: 11(int) Constant 4 50: 6(int) Constant 1 51: 6(int) Constant 0 53: TypePointer Uniform 6(int) 57: TypePointer Uniform 7(ivec2) 68: 11(int) Constant 5 75: TypePointer Input 13(float) 76(bias): 75(ptr) Variable Input 78(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 125(lodClamp): 75(ptr) Variable Input 128(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 178(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 225(lod): 75(ptr) Variable Input 228(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 275(dx): 20(ptr) Variable Input 277(dy): 20(ptr) Variable Input 280(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 331(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) 376: TypeVector 6(int) 3 377(result3D): TypeStruct 6(int) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) 378: TypePointer Uniform 377(result3D) 379: 378(ptr) Variable Uniform 380: TypeImage 13(float) 3D sampled format:Unknown 381: TypeSampledImage 380 382: TypePointer UniformConstant 381 383(sample3D): 382(ptr) Variable UniformConstant 385: TypeVector 13(float) 3 386: TypePointer Input 385(fvec3) 387(P3): 386(ptr) Variable Input 390(gl_TextureFootprint3DNV): TypeStruct 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) 391: TypePointer Function 390(gl_TextureFootprint3DNV) 393(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) 396: TypePointer Function 376(ivec3) 411: TypePointer Uniform 376(ivec3) 429(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) 478(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) 528(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) 577(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) 4(main): 2 Function None 3 5: Label 30(fp2D): 29(ptr) Variable Function 392(fp3D): 391(ptr) Variable Function 18: 15 Load 17(sample2D) 22: 19(fvec2) Load 21(P2) 25: 11(int) Load 24(granularity) 32: 31(ResType) ImageSampleFootprintNV 18 22 25 27 33: 7(ivec2) CompositeExtract 32 1 35: 34(ptr) AccessChain 30(fp2D) 12 Store 35 33 37: 7(ivec2) CompositeExtract 32 2 38: 34(ptr) AccessChain 30(fp2D) 36 Store 38 37 40: 7(ivec2) CompositeExtract 32 3 41: 34(ptr) AccessChain 30(fp2D) 39 Store 41 40 43: 6(int) CompositeExtract 32 4 45: 44(ptr) AccessChain 30(fp2D) 42 Store 45 43 47: 6(int) CompositeExtract 32 5 48: 44(ptr) AccessChain 30(fp2D) 46 Store 48 47 49: 26(bool) CompositeExtract 32 0 52: 6(int) Select 49 50 51 54: 53(ptr) AccessChain 10 12 Store 54 52 55: 34(ptr) AccessChain 30(fp2D) 12 56: 7(ivec2) Load 55 58: 57(ptr) AccessChain 10 36 Store 58 56 59: 34(ptr) AccessChain 30(fp2D) 36 60: 7(ivec2) Load 59 61: 57(ptr) AccessChain 10 39 Store 61 60 62: 34(ptr) AccessChain 30(fp2D) 39 63: 7(ivec2) Load 62 64: 57(ptr) AccessChain 10 42 Store 64 63 65: 44(ptr) AccessChain 30(fp2D) 42 66: 6(int) Load 65 67: 53(ptr) AccessChain 10 46 Store 67 66 69: 44(ptr) AccessChain 30(fp2D) 46 70: 6(int) Load 69 71: 53(ptr) AccessChain 10 68 Store 71 70 72: 15 Load 17(sample2D) 73: 19(fvec2) Load 21(P2) 74: 11(int) Load 24(granularity) 77: 13(float) Load 76(bias) 79: 78(ResType) ImageSampleFootprintNV 72 73 74 27 Bias 77 80: 7(ivec2) CompositeExtract 79 1 81: 34(ptr) AccessChain 30(fp2D) 12 Store 81 80 82: 7(ivec2) CompositeExtract 79 2 83: 34(ptr) AccessChain 30(fp2D) 36 Store 83 82 84: 7(ivec2) CompositeExtract 79 3 85: 34(ptr) AccessChain 30(fp2D) 39 Store 85 84 86: 6(int) CompositeExtract 79 4 87: 44(ptr) AccessChain 30(fp2D) 42 Store 87 86 88: 6(int) CompositeExtract 79 5 89: 44(ptr) AccessChain 30(fp2D) 46 Store 89 88 90: 26(bool) CompositeExtract 79 0 91: 6(int) Select 90 50 51 92: 53(ptr) AccessChain 10 12 Store 92 91 93: 34(ptr) AccessChain 30(fp2D) 12 94: 7(ivec2) Load 93 95: 57(ptr) AccessChain 10 36 96: 7(ivec2) Load 95 97: 7(ivec2) IAdd 96 94 98: 57(ptr) AccessChain 10 36 Store 98 97 99: 34(ptr) AccessChain 30(fp2D) 36 100: 7(ivec2) Load 99 101: 57(ptr) AccessChain 10 39 102: 7(ivec2) Load 101 103: 7(ivec2) IAdd 102 100 104: 57(ptr) AccessChain 10 39 Store 104 103 105: 34(ptr) AccessChain 30(fp2D) 39 106: 7(ivec2) Load 105 107: 57(ptr) AccessChain 10 42 108: 7(ivec2) Load 107 109: 7(ivec2) IAdd 108 106 110: 57(ptr) AccessChain 10 42 Store 110 109 111: 44(ptr) AccessChain 30(fp2D) 42 112: 6(int) Load 111 113: 53(ptr) AccessChain 10 46 114: 6(int) Load 113 115: 6(int) IAdd 114 112 116: 53(ptr) AccessChain 10 46 Store 116 115 117: 44(ptr) AccessChain 30(fp2D) 46 118: 6(int) Load 117 119: 53(ptr) AccessChain 10 68 120: 6(int) Load 119 121: 6(int) IAdd 120 118 122: 53(ptr) AccessChain 10 68 Store 122 121 123: 15 Load 17(sample2D) 124: 19(fvec2) Load 21(P2) 126: 13(float) Load 125(lodClamp) 127: 11(int) Load 24(granularity) 129:128(ResType) ImageSampleFootprintNV 123 124 127 27 MinLod 126 130: 7(ivec2) CompositeExtract 129 1 131: 34(ptr) AccessChain 30(fp2D) 12 Store 131 130 132: 7(ivec2) CompositeExtract 129 2 133: 34(ptr) AccessChain 30(fp2D) 36 Store 133 132 134: 7(ivec2) CompositeExtract 129 3 135: 34(ptr) AccessChain 30(fp2D) 39 Store 135 134 136: 6(int) CompositeExtract 129 4 137: 44(ptr) AccessChain 30(fp2D) 42 Store 137 136 138: 6(int) CompositeExtract 129 5 139: 44(ptr) AccessChain 30(fp2D) 46 Store 139 138 140: 26(bool) CompositeExtract 129 0 141: 6(int) Select 140 50 51 142: 53(ptr) AccessChain 10 12 Store 142 141 143: 34(ptr) AccessChain 30(fp2D) 12 144: 7(ivec2) Load 143 145: 57(ptr) AccessChain 10 36 146: 7(ivec2) Load 145 147: 7(ivec2) IAdd 146 144 148: 57(ptr) AccessChain 10 36 Store 148 147 149: 34(ptr) AccessChain 30(fp2D) 36 150: 7(ivec2) Load 149 151: 57(ptr) AccessChain 10 39 152: 7(ivec2) Load 151 153: 7(ivec2) IAdd 152 150 154: 57(ptr) AccessChain 10 39 Store 154 153 155: 34(ptr) AccessChain 30(fp2D) 39 156: 7(ivec2) Load 155 157: 57(ptr) AccessChain 10 42 158: 7(ivec2) Load 157 159: 7(ivec2) IAdd 158 156 160: 57(ptr) AccessChain 10 42 Store 160 159 161: 44(ptr) AccessChain 30(fp2D) 42 162: 6(int) Load 161 163: 53(ptr) AccessChain 10 46 164: 6(int) Load 163 165: 6(int) IAdd 164 162 166: 53(ptr) AccessChain 10 46 Store 166 165 167: 44(ptr) AccessChain 30(fp2D) 46 168: 6(int) Load 167 169: 53(ptr) AccessChain 10 68 170: 6(int) Load 169 171: 6(int) IAdd 170 168 172: 53(ptr) AccessChain 10 68 Store 172 171 173: 15 Load 17(sample2D) 174: 19(fvec2) Load 21(P2) 175: 13(float) Load 125(lodClamp) 176: 11(int) Load 24(granularity) 177: 13(float) Load 76(bias) 179:178(ResType) ImageSampleFootprintNV 173 174 176 27 Bias MinLod 177 175 180: 7(ivec2) CompositeExtract 179 1 181: 34(ptr) AccessChain 30(fp2D) 12 Store 181 180 182: 7(ivec2) CompositeExtract 179 2 183: 34(ptr) AccessChain 30(fp2D) 36 Store 183 182 184: 7(ivec2) CompositeExtract 179 3 185: 34(ptr) AccessChain 30(fp2D) 39 Store 185 184 186: 6(int) CompositeExtract 179 4 187: 44(ptr) AccessChain 30(fp2D) 42 Store 187 186 188: 6(int) CompositeExtract 179 5 189: 44(ptr) AccessChain 30(fp2D) 46 Store 189 188 190: 26(bool) CompositeExtract 179 0 191: 6(int) Select 190 50 51 192: 53(ptr) AccessChain 10 12 Store 192 191 193: 34(ptr) AccessChain 30(fp2D) 12 194: 7(ivec2) Load 193 195: 57(ptr) AccessChain 10 36 196: 7(ivec2) Load 195 197: 7(ivec2) IAdd 196 194 198: 57(ptr) AccessChain 10 36 Store 198 197 199: 34(ptr) AccessChain 30(fp2D) 36 200: 7(ivec2) Load 199 201: 57(ptr) AccessChain 10 39 202: 7(ivec2) Load 201 203: 7(ivec2) IAdd 202 200 204: 57(ptr) AccessChain 10 39 Store 204 203 205: 34(ptr) AccessChain 30(fp2D) 39 206: 7(ivec2) Load 205 207: 57(ptr) AccessChain 10 42 208: 7(ivec2) Load 207 209: 7(ivec2) IAdd 208 206 210: 57(ptr) AccessChain 10 42 Store 210 209 211: 44(ptr) AccessChain 30(fp2D) 42 212: 6(int) Load 211 213: 53(ptr) AccessChain 10 46 214: 6(int) Load 213 215: 6(int) IAdd 214 212 216: 53(ptr) AccessChain 10 46 Store 216 215 217: 44(ptr) AccessChain 30(fp2D) 46 218: 6(int) Load 217 219: 53(ptr) AccessChain 10 68 220: 6(int) Load 219 221: 6(int) IAdd 220 218 222: 53(ptr) AccessChain 10 68 Store 222 221 223: 15 Load 17(sample2D) 224: 19(fvec2) Load 21(P2) 226: 13(float) Load 225(lod) 227: 11(int) Load 24(granularity) 229:228(ResType) ImageSampleFootprintNV 223 224 227 27 Lod 226 230: 7(ivec2) CompositeExtract 229 1 231: 34(ptr) AccessChain 30(fp2D) 12 Store 231 230 232: 7(ivec2) CompositeExtract 229 2 233: 34(ptr) AccessChain 30(fp2D) 36 Store 233 232 234: 7(ivec2) CompositeExtract 229 3 235: 34(ptr) AccessChain 30(fp2D) 39 Store 235 234 236: 6(int) CompositeExtract 229 4 237: 44(ptr) AccessChain 30(fp2D) 42 Store 237 236 238: 6(int) CompositeExtract 229 5 239: 44(ptr) AccessChain 30(fp2D) 46 Store 239 238 240: 26(bool) CompositeExtract 229 0 241: 6(int) Select 240 50 51 242: 53(ptr) AccessChain 10 12 Store 242 241 243: 34(ptr) AccessChain 30(fp2D) 12 244: 7(ivec2) Load 243 245: 57(ptr) AccessChain 10 36 246: 7(ivec2) Load 245 247: 7(ivec2) IAdd 246 244 248: 57(ptr) AccessChain 10 36 Store 248 247 249: 34(ptr) AccessChain 30(fp2D) 36 250: 7(ivec2) Load 249 251: 57(ptr) AccessChain 10 39 252: 7(ivec2) Load 251 253: 7(ivec2) IAdd 252 250 254: 57(ptr) AccessChain 10 39 Store 254 253 255: 34(ptr) AccessChain 30(fp2D) 39 256: 7(ivec2) Load 255 257: 57(ptr) AccessChain 10 42 258: 7(ivec2) Load 257 259: 7(ivec2) IAdd 258 256 260: 57(ptr) AccessChain 10 42 Store 260 259 261: 44(ptr) AccessChain 30(fp2D) 42 262: 6(int) Load 261 263: 53(ptr) AccessChain 10 46 264: 6(int) Load 263 265: 6(int) IAdd 264 262 266: 53(ptr) AccessChain 10 46 Store 266 265 267: 44(ptr) AccessChain 30(fp2D) 46 268: 6(int) Load 267 269: 53(ptr) AccessChain 10 68 270: 6(int) Load 269 271: 6(int) IAdd 270 268 272: 53(ptr) AccessChain 10 68 Store 272 271 273: 15 Load 17(sample2D) 274: 19(fvec2) Load 21(P2) 276: 19(fvec2) Load 275(dx) 278: 19(fvec2) Load 277(dy) 279: 11(int) Load 24(granularity) 281:280(ResType) ImageSampleFootprintNV 273 274 279 27 Grad 276 278 282: 7(ivec2) CompositeExtract 281 1 283: 34(ptr) AccessChain 30(fp2D) 12 Store 283 282 284: 7(ivec2) CompositeExtract 281 2 285: 34(ptr) AccessChain 30(fp2D) 36 Store 285 284 286: 7(ivec2) CompositeExtract 281 3 287: 34(ptr) AccessChain 30(fp2D) 39 Store 287 286 288: 6(int) CompositeExtract 281 4 289: 44(ptr) AccessChain 30(fp2D) 42 Store 289 288 290: 6(int) CompositeExtract 281 5 291: 44(ptr) AccessChain 30(fp2D) 46 Store 291 290 292: 26(bool) CompositeExtract 281 0 293: 6(int) Select 292 50 51 294: 53(ptr) AccessChain 10 12 Store 294 293 295: 34(ptr) AccessChain 30(fp2D) 12 296: 7(ivec2) Load 295 297: 57(ptr) AccessChain 10 36 298: 7(ivec2) Load 297 299: 7(ivec2) IAdd 298 296 300: 57(ptr) AccessChain 10 36 Store 300 299 301: 34(ptr) AccessChain 30(fp2D) 36 302: 7(ivec2) Load 301 303: 57(ptr) AccessChain 10 39 304: 7(ivec2) Load 303 305: 7(ivec2) IAdd 304 302 306: 57(ptr) AccessChain 10 39 Store 306 305 307: 34(ptr) AccessChain 30(fp2D) 39 308: 7(ivec2) Load 307 309: 57(ptr) AccessChain 10 42 310: 7(ivec2) Load 309 311: 7(ivec2) IAdd 310 308 312: 57(ptr) AccessChain 10 42 Store 312 311 313: 44(ptr) AccessChain 30(fp2D) 42 314: 6(int) Load 313 315: 53(ptr) AccessChain 10 46 316: 6(int) Load 315 317: 6(int) IAdd 316 314 318: 53(ptr) AccessChain 10 46 Store 318 317 319: 44(ptr) AccessChain 30(fp2D) 46 320: 6(int) Load 319 321: 53(ptr) AccessChain 10 68 322: 6(int) Load 321 323: 6(int) IAdd 322 320 324: 53(ptr) AccessChain 10 68 Store 324 323 325: 15 Load 17(sample2D) 326: 19(fvec2) Load 21(P2) 327: 19(fvec2) Load 275(dx) 328: 19(fvec2) Load 277(dy) 329: 13(float) Load 125(lodClamp) 330: 11(int) Load 24(granularity) 332:331(ResType) ImageSampleFootprintNV 325 326 330 27 Grad MinLod 327 328 329 333: 7(ivec2) CompositeExtract 332 1 334: 34(ptr) AccessChain 30(fp2D) 12 Store 334 333 335: 7(ivec2) CompositeExtract 332 2 336: 34(ptr) AccessChain 30(fp2D) 36 Store 336 335 337: 7(ivec2) CompositeExtract 332 3 338: 34(ptr) AccessChain 30(fp2D) 39 Store 338 337 339: 6(int) CompositeExtract 332 4 340: 44(ptr) AccessChain 30(fp2D) 42 Store 340 339 341: 6(int) CompositeExtract 332 5 342: 44(ptr) AccessChain 30(fp2D) 46 Store 342 341 343: 26(bool) CompositeExtract 332 0 344: 6(int) Select 343 50 51 345: 53(ptr) AccessChain 10 12 Store 345 344 346: 34(ptr) AccessChain 30(fp2D) 12 347: 7(ivec2) Load 346 348: 57(ptr) AccessChain 10 36 349: 7(ivec2) Load 348 350: 7(ivec2) IAdd 349 347 351: 57(ptr) AccessChain 10 36 Store 351 350 352: 34(ptr) AccessChain 30(fp2D) 36 353: 7(ivec2) Load 352 354: 57(ptr) AccessChain 10 39 355: 7(ivec2) Load 354 356: 7(ivec2) IAdd 355 353 357: 57(ptr) AccessChain 10 39 Store 357 356 358: 34(ptr) AccessChain 30(fp2D) 39 359: 7(ivec2) Load 358 360: 57(ptr) AccessChain 10 42 361: 7(ivec2) Load 360 362: 7(ivec2) IAdd 361 359 363: 57(ptr) AccessChain 10 42 Store 363 362 364: 44(ptr) AccessChain 30(fp2D) 42 365: 6(int) Load 364 366: 53(ptr) AccessChain 10 46 367: 6(int) Load 366 368: 6(int) IAdd 367 365 369: 53(ptr) AccessChain 10 46 Store 369 368 370: 44(ptr) AccessChain 30(fp2D) 46 371: 6(int) Load 370 372: 53(ptr) AccessChain 10 68 373: 6(int) Load 372 374: 6(int) IAdd 373 371 375: 53(ptr) AccessChain 10 68 Store 375 374 384: 381 Load 383(sample3D) 388: 385(fvec3) Load 387(P3) 389: 11(int) Load 24(granularity) 394:393(ResType) ImageSampleFootprintNV 384 388 389 27 395: 376(ivec3) CompositeExtract 394 1 397: 396(ptr) AccessChain 392(fp3D) 12 Store 397 395 398: 376(ivec3) CompositeExtract 394 2 399: 396(ptr) AccessChain 392(fp3D) 36 Store 399 398 400: 7(ivec2) CompositeExtract 394 3 401: 34(ptr) AccessChain 392(fp3D) 39 Store 401 400 402: 6(int) CompositeExtract 394 4 403: 44(ptr) AccessChain 392(fp3D) 42 Store 403 402 404: 6(int) CompositeExtract 394 5 405: 44(ptr) AccessChain 392(fp3D) 46 Store 405 404 406: 26(bool) CompositeExtract 394 0 407: 6(int) Select 406 50 51 408: 53(ptr) AccessChain 379 12 Store 408 407 409: 396(ptr) AccessChain 392(fp3D) 12 410: 376(ivec3) Load 409 412: 411(ptr) AccessChain 379 36 Store 412 410 413: 396(ptr) AccessChain 392(fp3D) 36 414: 376(ivec3) Load 413 415: 411(ptr) AccessChain 379 39 Store 415 414 416: 34(ptr) AccessChain 392(fp3D) 39 417: 7(ivec2) Load 416 418: 57(ptr) AccessChain 379 42 Store 418 417 419: 44(ptr) AccessChain 392(fp3D) 42 420: 6(int) Load 419 421: 53(ptr) AccessChain 379 46 Store 421 420 422: 44(ptr) AccessChain 392(fp3D) 46 423: 6(int) Load 422 424: 53(ptr) AccessChain 379 68 Store 424 423 425: 381 Load 383(sample3D) 426: 385(fvec3) Load 387(P3) 427: 11(int) Load 24(granularity) 428: 13(float) Load 76(bias) 430:429(ResType) ImageSampleFootprintNV 425 426 427 27 Bias 428 431: 376(ivec3) CompositeExtract 430 1 432: 396(ptr) AccessChain 392(fp3D) 12 Store 432 431 433: 376(ivec3) CompositeExtract 430 2 434: 396(ptr) AccessChain 392(fp3D) 36 Store 434 433 435: 7(ivec2) CompositeExtract 430 3 436: 34(ptr) AccessChain 392(fp3D) 39 Store 436 435 437: 6(int) CompositeExtract 430 4 438: 44(ptr) AccessChain 392(fp3D) 42 Store 438 437 439: 6(int) CompositeExtract 430 5 440: 44(ptr) AccessChain 392(fp3D) 46 Store 440 439 441: 26(bool) CompositeExtract 430 0 442: 6(int) Select 441 50 51 443: 53(ptr) AccessChain 379 12 Store 443 442 444: 396(ptr) AccessChain 392(fp3D) 12 445: 376(ivec3) Load 444 446: 411(ptr) AccessChain 379 36 447: 376(ivec3) Load 446 448: 376(ivec3) IAdd 447 445 449: 411(ptr) AccessChain 379 36 Store 449 448 450: 396(ptr) AccessChain 392(fp3D) 36 451: 376(ivec3) Load 450 452: 411(ptr) AccessChain 379 39 453: 376(ivec3) Load 452 454: 376(ivec3) IAdd 453 451 455: 411(ptr) AccessChain 379 39 Store 455 454 456: 34(ptr) AccessChain 392(fp3D) 39 457: 7(ivec2) Load 456 458: 57(ptr) AccessChain 379 42 459: 7(ivec2) Load 458 460: 7(ivec2) IAdd 459 457 461: 57(ptr) AccessChain 379 42 Store 461 460 462: 44(ptr) AccessChain 392(fp3D) 42 463: 6(int) Load 462 464: 53(ptr) AccessChain 379 46 465: 6(int) Load 464 466: 6(int) IAdd 465 463 467: 53(ptr) AccessChain 379 46 Store 467 466 468: 44(ptr) AccessChain 392(fp3D) 46 469: 6(int) Load 468 470: 53(ptr) AccessChain 379 68 471: 6(int) Load 470 472: 6(int) IAdd 471 469 473: 53(ptr) AccessChain 379 68 Store 473 472 474: 381 Load 383(sample3D) 475: 385(fvec3) Load 387(P3) 476: 13(float) Load 125(lodClamp) 477: 11(int) Load 24(granularity) 479:478(ResType) ImageSampleFootprintNV 474 475 477 27 MinLod 476 480: 376(ivec3) CompositeExtract 479 1 481: 396(ptr) AccessChain 392(fp3D) 12 Store 481 480 482: 376(ivec3) CompositeExtract 479 2 483: 396(ptr) AccessChain 392(fp3D) 36 Store 483 482 484: 7(ivec2) CompositeExtract 479 3 485: 34(ptr) AccessChain 392(fp3D) 39 Store 485 484 486: 6(int) CompositeExtract 479 4 487: 44(ptr) AccessChain 392(fp3D) 42 Store 487 486 488: 6(int) CompositeExtract 479 5 489: 44(ptr) AccessChain 392(fp3D) 46 Store 489 488 490: 26(bool) CompositeExtract 479 0 491: 6(int) Select 490 50 51 492: 53(ptr) AccessChain 379 12 Store 492 491 493: 396(ptr) AccessChain 392(fp3D) 12 494: 376(ivec3) Load 493 495: 411(ptr) AccessChain 379 36 496: 376(ivec3) Load 495 497: 376(ivec3) IAdd 496 494 498: 411(ptr) AccessChain 379 36 Store 498 497 499: 396(ptr) AccessChain 392(fp3D) 36 500: 376(ivec3) Load 499 501: 411(ptr) AccessChain 379 39 502: 376(ivec3) Load 501 503: 376(ivec3) IAdd 502 500 504: 411(ptr) AccessChain 379 39 Store 504 503 505: 34(ptr) AccessChain 392(fp3D) 39 506: 7(ivec2) Load 505 507: 57(ptr) AccessChain 379 42 508: 7(ivec2) Load 507 509: 7(ivec2) IAdd 508 506 510: 57(ptr) AccessChain 379 42 Store 510 509 511: 44(ptr) AccessChain 392(fp3D) 42 512: 6(int) Load 511 513: 53(ptr) AccessChain 379 46 514: 6(int) Load 513 515: 6(int) IAdd 514 512 516: 53(ptr) AccessChain 379 46 Store 516 515 517: 44(ptr) AccessChain 392(fp3D) 46 518: 6(int) Load 517 519: 53(ptr) AccessChain 379 68 520: 6(int) Load 519 521: 6(int) IAdd 520 518 522: 53(ptr) AccessChain 379 68 Store 522 521 523: 381 Load 383(sample3D) 524: 385(fvec3) Load 387(P3) 525: 13(float) Load 125(lodClamp) 526: 11(int) Load 24(granularity) 527: 13(float) Load 76(bias) 529:528(ResType) ImageSampleFootprintNV 523 524 526 27 Bias MinLod 527 525 530: 376(ivec3) CompositeExtract 529 1 531: 396(ptr) AccessChain 392(fp3D) 12 Store 531 530 532: 376(ivec3) CompositeExtract 529 2 533: 396(ptr) AccessChain 392(fp3D) 36 Store 533 532 534: 7(ivec2) CompositeExtract 529 3 535: 34(ptr) AccessChain 392(fp3D) 39 Store 535 534 536: 6(int) CompositeExtract 529 4 537: 44(ptr) AccessChain 392(fp3D) 42 Store 537 536 538: 6(int) CompositeExtract 529 5 539: 44(ptr) AccessChain 392(fp3D) 46 Store 539 538 540: 26(bool) CompositeExtract 529 0 541: 6(int) Select 540 50 51 542: 53(ptr) AccessChain 379 12 Store 542 541 543: 396(ptr) AccessChain 392(fp3D) 12 544: 376(ivec3) Load 543 545: 411(ptr) AccessChain 379 36 546: 376(ivec3) Load 545 547: 376(ivec3) IAdd 546 544 548: 411(ptr) AccessChain 379 36 Store 548 547 549: 396(ptr) AccessChain 392(fp3D) 36 550: 376(ivec3) Load 549 551: 411(ptr) AccessChain 379 39 552: 376(ivec3) Load 551 553: 376(ivec3) IAdd 552 550 554: 411(ptr) AccessChain 379 39 Store 554 553 555: 34(ptr) AccessChain 392(fp3D) 39 556: 7(ivec2) Load 555 557: 57(ptr) AccessChain 379 42 558: 7(ivec2) Load 557 559: 7(ivec2) IAdd 558 556 560: 57(ptr) AccessChain 379 42 Store 560 559 561: 44(ptr) AccessChain 392(fp3D) 42 562: 6(int) Load 561 563: 53(ptr) AccessChain 379 46 564: 6(int) Load 563 565: 6(int) IAdd 564 562 566: 53(ptr) AccessChain 379 46 Store 566 565 567: 44(ptr) AccessChain 392(fp3D) 46 568: 6(int) Load 567 569: 53(ptr) AccessChain 379 68 570: 6(int) Load 569 571: 6(int) IAdd 570 568 572: 53(ptr) AccessChain 379 68 Store 572 571 573: 381 Load 383(sample3D) 574: 385(fvec3) Load 387(P3) 575: 13(float) Load 225(lod) 576: 11(int) Load 24(granularity) 578:577(ResType) ImageSampleFootprintNV 573 574 576 27 Lod 575 579: 376(ivec3) CompositeExtract 578 1 580: 396(ptr) AccessChain 392(fp3D) 12 Store 580 579 581: 376(ivec3) CompositeExtract 578 2 582: 396(ptr) AccessChain 392(fp3D) 36 Store 582 581 583: 7(ivec2) CompositeExtract 578 3 584: 34(ptr) AccessChain 392(fp3D) 39 Store 584 583 585: 6(int) CompositeExtract 578 4 586: 44(ptr) AccessChain 392(fp3D) 42 Store 586 585 587: 6(int) CompositeExtract 578 5 588: 44(ptr) AccessChain 392(fp3D) 46 Store 588 587 589: 26(bool) CompositeExtract 578 0 590: 6(int) Select 589 50 51 591: 53(ptr) AccessChain 379 12 Store 591 590 592: 396(ptr) AccessChain 392(fp3D) 12 593: 376(ivec3) Load 592 594: 411(ptr) AccessChain 379 36 595: 376(ivec3) Load 594 596: 376(ivec3) IAdd 595 593 597: 411(ptr) AccessChain 379 36 Store 597 596 598: 396(ptr) AccessChain 392(fp3D) 36 599: 376(ivec3) Load 598 600: 411(ptr) AccessChain 379 39 601: 376(ivec3) Load 600 602: 376(ivec3) IAdd 601 599 603: 411(ptr) AccessChain 379 39 Store 603 602 604: 34(ptr) AccessChain 392(fp3D) 39 605: 7(ivec2) Load 604 606: 57(ptr) AccessChain 379 42 607: 7(ivec2) Load 606 608: 7(ivec2) IAdd 607 605 609: 57(ptr) AccessChain 379 42 Store 609 608 610: 44(ptr) AccessChain 392(fp3D) 42 611: 6(int) Load 610 612: 53(ptr) AccessChain 379 46 613: 6(int) Load 612 614: 6(int) IAdd 613 611 615: 53(ptr) AccessChain 379 46 Store 615 614 616: 44(ptr) AccessChain 392(fp3D) 46 617: 6(int) Load 616 618: 53(ptr) AccessChain 379 68 619: 6(int) Load 618 620: 6(int) IAdd 619 617 621: 53(ptr) AccessChain 379 68 Store 621 620 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shaderStencilExport.frag.out000066400000000000000000000026231506534232700247220ustar00rootroot00000000000000spv.shaderStencilExport.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 10 Capability Shader Capability StencilExportEXT Extension "SPV_EXT_shader_stencil_export" 1: ExtInstImport "GLSL.std.450" 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" Name 8 "gl_FragStencilRefARB" Decorate 8(gl_FragStencilRefARB) BuiltIn FragStencilRefEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(gl_FragStencilRefARB): 7(ptr) Variable Output 9: 6(int) Constant 100 4(main): 2 Function None 3 5: Label Store 8(gl_FragStencilRefARB) 9 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shadingRate.frag.out000066400000000000000000000047621506534232700231670ustar00rootroot00000000000000spv.shadingRate.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader Capability FragmentDensityEXT Extension "SPV_NV_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 13 17 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_NV_shading_rate_image" Name 4 "main" Name 9 "FragmentSize" Name 13 "gl_FragmentSizeNV" Name 17 "InvocationsPerPixel" Name 19 "gl_InvocationsPerPixelNV" Decorate 9(FragmentSize) Location 0 Decorate 13(gl_FragmentSizeNV) BuiltIn FragSizeEXT Decorate 13(gl_FragmentSizeNV) Flat Decorate 17(InvocationsPerPixel) Location 2 Decorate 19(gl_InvocationsPerPixelNV) BuiltIn FragInvocationCountEXT Decorate 19(gl_InvocationsPerPixelNV) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Output 7(fvec2) 9(FragmentSize): 8(ptr) Variable Output 10: TypeInt 32 1 11: TypeVector 10(int) 2 12: TypePointer Input 11(ivec2) 13(gl_FragmentSizeNV): 12(ptr) Variable Input 16: TypePointer Output 10(int) 17(InvocationsPerPixel): 16(ptr) Variable Output 18: TypePointer Input 10(int) 19(gl_InvocationsPerPixelNV): 18(ptr) Variable Input 4(main): 2 Function None 3 5: Label 14: 11(ivec2) Load 13(gl_FragmentSizeNV) 15: 7(fvec2) ConvertSToF 14 Store 9(FragmentSize) 15 20: 10(int) Load 19(gl_InvocationsPerPixelNV) Store 17(InvocationsPerPixel) 20 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shiftOps.frag.out000066400000000000000000000064351506534232700225340ustar00rootroot00000000000000spv.shiftOps.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 11 15 25 27 30 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "icolor" Name 11 "i3" Name 15 "u1" Name 25 "ucolor" Name 27 "u3" Name 30 "i1" Decorate 9(icolor) Location 0 Decorate 11(i3) Flat Decorate 11(i3) Location 2 Decorate 15(u1) Flat Decorate 15(u1) Location 1 Decorate 25(ucolor) Location 1 Decorate 27(u3) Flat Decorate 27(u3) Location 3 Decorate 30(i1) Flat Decorate 30(i1) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeVector 6(int) 3 8: TypePointer Output 7(ivec3) 9(icolor): 8(ptr) Variable Output 10: TypePointer Input 7(ivec3) 11(i3): 10(ptr) Variable Input 13: TypeInt 32 0 14: TypePointer Input 13(int) 15(u1): 14(ptr) Variable Input 17: TypeVector 13(int) 3 20: 13(int) Constant 4 24: TypePointer Output 17(ivec3) 25(ucolor): 24(ptr) Variable Output 26: TypePointer Input 17(ivec3) 27(u3): 26(ptr) Variable Input 29: TypePointer Input 6(int) 30(i1): 29(ptr) Variable Input 34: 6(int) Constant 5 4(main): 2 Function None 3 5: Label 12: 7(ivec3) Load 11(i3) 16: 13(int) Load 15(u1) 18: 17(ivec3) CompositeConstruct 16 16 16 19: 7(ivec3) ShiftLeftLogical 12 18 Store 9(icolor) 19 21: 7(ivec3) Load 9(icolor) 22: 17(ivec3) CompositeConstruct 20 20 20 23: 7(ivec3) ShiftLeftLogical 21 22 Store 9(icolor) 23 28: 17(ivec3) Load 27(u3) 31: 6(int) Load 30(i1) 32: 7(ivec3) CompositeConstruct 31 31 31 33: 17(ivec3) ShiftRightLogical 28 32 Store 25(ucolor) 33 35: 17(ivec3) Load 25(ucolor) 36: 7(ivec3) CompositeConstruct 34 34 34 37: 17(ivec3) ShiftRightLogical 35 36 Store 25(ucolor) 37 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.shortCircuit.frag.out000066400000000000000000000257541506534232700234240ustar00rootroot00000000000000spv.shortCircuit.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 147 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 12 24 34 113 140 142 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 8 "foo(" Name 12 "of1" Name 24 "of4" Name 27 "ub" Name 34 "ui" Name 44 "uba" Name 113 "uf" Name 140 "uiv4" Name 142 "uv4" Name 145 "ub41" Name 146 "ub42" Decorate 12(of1) Location 0 Decorate 24(of4) Location 1 Decorate 34(ui) Flat Decorate 34(ui) Location 3 Decorate 113(uf) Location 2 Decorate 140(uiv4) Flat Decorate 140(uiv4) Location 0 Decorate 142(uv4) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypeFunction 6(bool) 10: TypeFloat 32 11: TypePointer Output 10(float) 12(of1): 11(ptr) Variable Output 14: 10(float) Constant 1065353216 17: 10(float) Constant 1092616192 21: 10(float) Constant 0 22: TypeVector 10(float) 4 23: TypePointer Output 22(fvec4) 24(of4): 23(ptr) Variable Output 25: 22(fvec4) ConstantComposite 21 21 21 21 26: TypePointer Private 6(bool) 27(ub): 26(ptr) Variable Private 32: TypeInt 32 1 33: TypePointer Input 32(int) 34(ui): 33(ptr) Variable Input 36: 32(int) Constant 2 44(uba): 26(ptr) Variable Private 112: TypePointer Input 10(float) 113(uf): 112(ptr) Variable Input 116: 10(float) Constant 1082130432 138: TypeVector 32(int) 4 139: TypePointer Input 138(ivec4) 140(uiv4): 139(ptr) Variable Input 141: TypePointer Input 22(fvec4) 142(uv4): 141(ptr) Variable Input 143: TypeVector 6(bool) 4 144: TypePointer Private 143(bvec4) 145(ub41): 144(ptr) Variable Private 146(ub42): 144(ptr) Variable Private 4(main): 2 Function None 3 5: Label Store 12(of1) 21 Store 24(of4) 25 28: 6(bool) Load 27(ub) 29: 6(bool) LogicalNot 28 SelectionMerge 31 None BranchConditional 29 30 31 30: Label 35: 32(int) Load 34(ui) 37: 6(bool) SGreaterThan 35 36 Branch 31 31: Label 38: 6(bool) Phi 28 5 37 30 SelectionMerge 40 None BranchConditional 38 39 40 39: Label 41: 10(float) Load 12(of1) 42: 10(float) FAdd 41 14 Store 12(of1) 42 Branch 40 40: Label 43: 6(bool) Load 27(ub) 45: 6(bool) Load 44(uba) 46: 6(bool) LogicalNot 45 47: 6(bool) LogicalAnd 43 46 SelectionMerge 49 None BranchConditional 47 48 49 48: Label 50: 10(float) Load 12(of1) 51: 10(float) FAdd 50 14 Store 12(of1) 51 Branch 49 49: Label 52: 6(bool) Load 27(ub) 53: 6(bool) LogicalNot 52 SelectionMerge 55 None BranchConditional 53 54 55 54: Label 56: 6(bool) FunctionCall 8(foo() Branch 55 55: Label 57: 6(bool) Phi 52 49 56 54 SelectionMerge 59 None BranchConditional 57 58 59 58: Label 60: 10(float) Load 12(of1) 61: 10(float) FAdd 60 14 Store 12(of1) 61 Branch 59 59: Label 62: 6(bool) Load 27(ub) SelectionMerge 64 None BranchConditional 62 63 64 63: Label 65: 6(bool) FunctionCall 8(foo() Branch 64 64: Label 66: 6(bool) Phi 62 59 65 63 SelectionMerge 68 None BranchConditional 66 67 68 67: Label 69: 10(float) Load 12(of1) 70: 10(float) FAdd 69 14 Store 12(of1) 70 Branch 68 68: Label 71: 6(bool) FunctionCall 8(foo() 72: 6(bool) Load 27(ub) 73: 6(bool) LogicalOr 71 72 SelectionMerge 75 None BranchConditional 73 74 75 74: Label 76: 10(float) Load 12(of1) 77: 10(float) FAdd 76 14 Store 12(of1) 77 Branch 75 75: Label 78: 6(bool) FunctionCall 8(foo() 79: 6(bool) Load 27(ub) 80: 6(bool) LogicalAnd 78 79 SelectionMerge 82 None BranchConditional 80 81 82 81: Label 83: 10(float) Load 12(of1) 84: 10(float) FAdd 83 14 Store 12(of1) 84 Branch 82 82: Label 85: 6(bool) Load 27(ub) 86: 6(bool) LogicalNot 85 SelectionMerge 88 None BranchConditional 86 87 88 87: Label 89: 10(float) Load 12(of1) 90: 10(float) FAdd 89 14 Store 12(of1) 90 91: 6(bool) FOrdGreaterThan 90 14 Branch 88 88: Label 92: 6(bool) Phi 85 82 91 87 SelectionMerge 94 None BranchConditional 92 93 94 93: Label 95: 22(fvec4) Load 24(of4) 96: 22(fvec4) CompositeConstruct 14 14 14 14 97: 22(fvec4) FAdd 95 96 Store 24(of4) 97 Branch 94 94: Label 98: 10(float) Load 12(of1) 99: 10(float) FAdd 98 14 Store 12(of1) 99 100: 6(bool) FOrdGreaterThan 99 14 101: 6(bool) Load 27(ub) 102: 6(bool) LogicalOr 100 101 SelectionMerge 104 None BranchConditional 102 103 104 103: Label 105: 22(fvec4) Load 24(of4) 106: 22(fvec4) CompositeConstruct 14 14 14 14 107: 22(fvec4) FAdd 105 106 Store 24(of4) 107 Branch 104 104: Label 108: 6(bool) Load 27(ub) 109: 6(bool) LogicalNot 108 SelectionMerge 111 None BranchConditional 109 110 111 110: Label 114: 10(float) Load 113(uf) 115: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 114 117: 10(float) FMul 115 116 118: 10(float) Load 12(of1) 119: 6(bool) FOrdGreaterThan 117 118 Branch 111 111: Label 120: 6(bool) Phi 108 104 119 110 SelectionMerge 122 None BranchConditional 120 121 122 121: Label 123: 10(float) Load 12(of1) 124: 10(float) FAdd 123 14 Store 12(of1) 124 Branch 122 122: Label 125: 6(bool) Load 27(ub) SelectionMerge 127 None BranchConditional 125 126 127 126: Label 128: 10(float) Load 113(uf) 129: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 128 130: 10(float) FMul 129 116 131: 10(float) Load 12(of1) 132: 6(bool) FOrdGreaterThan 130 131 Branch 127 127: Label 133: 6(bool) Phi 125 122 132 126 SelectionMerge 135 None BranchConditional 133 134 135 134: Label 136: 10(float) Load 12(of1) 137: 10(float) FAdd 136 14 Store 12(of1) 137 Branch 135 135: Label Return FunctionEnd 8(foo(): 6(bool) Function None 7 9: Label 13: 10(float) Load 12(of1) 15: 10(float) FAdd 13 14 Store 12(of1) 15 16: 10(float) Load 12(of1) 18: 6(bool) FOrdGreaterThan 16 17 ReturnValue 18 FunctionEnd glslang-16.0.0/Test/baseResults/spv.simpleFunctionCall.frag.out000066400000000000000000000032501506534232700245200ustar00rootroot00000000000000spv.simpleFunctionCall.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 19 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 12 17 ExecutionMode 4 OriginUpperLeft Source GLSL 150 Name 4 "main" Name 9 "foo(" Name 12 "BaseColor" Name 17 "gl_FragColor" Decorate 12(BaseColor) Location 0 Decorate 17(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypePointer Input 7(fvec4) 12(BaseColor): 11(ptr) Variable Input 16: TypePointer Output 7(fvec4) 17(gl_FragColor): 16(ptr) Variable Output 4(main): 2 Function None 3 5: Label 18: 7(fvec4) FunctionCall 9(foo() Store 17(gl_FragColor) 18 Return FunctionEnd 9(foo(): 7(fvec4) Function None 8 10: Label 13: 7(fvec4) Load 12(BaseColor) ReturnValue 13 FunctionEnd glslang-16.0.0/Test/baseResults/spv.simpleMat.vert.out000066400000000000000000000057571506534232700227370ustar00rootroot00000000000000spv.simpleMat.vert WARNING: 0:3: varying deprecated in version 130; may be removed in future release // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 12 15 19 23 34 Source GLSL 330 Name 4 "main" Name 9 "glPos" Name 12 "mvp" Name 15 "v" Name 19 "f" Name 23 "am3" Name 34 "arraym" Decorate 9(glPos) Location 5 Decorate 12(mvp) Location 0 Decorate 15(v) Location 0 Decorate 19(f) Location 4 Decorate 23(am3) Location 1 Decorate 34(arraym) Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(glPos): 8(ptr) Variable Output 10: TypeMatrix 7(fvec4) 4 11: TypePointer Output 10 12(mvp): 11(ptr) Variable Output 14: TypePointer Input 7(fvec4) 15(v): 14(ptr) Variable Input 18: TypePointer Output 6(float) 19(f): 18(ptr) Variable Output 20: TypeVector 6(float) 3 21: TypeMatrix 20(fvec3) 3 22: TypePointer Input 21 23(am3): 22(ptr) Variable Input 24: TypeInt 32 1 25: 24(int) Constant 2 26: TypeInt 32 0 27: 26(int) Constant 1 28: TypePointer Input 6(float) 31: 26(int) Constant 3 32: TypeArray 10 31 33: TypePointer Input 32 34(arraym): 33(ptr) Variable Input 35: 24(int) Constant 1 4(main): 2 Function None 3 5: Label 13: 10 Load 12(mvp) 16: 7(fvec4) Load 15(v) 17: 7(fvec4) MatrixTimesVector 13 16 Store 9(glPos) 17 29: 28(ptr) AccessChain 23(am3) 25 27 30: 6(float) Load 29 36: 28(ptr) AccessChain 34(arraym) 35 25 31 37: 6(float) Load 36 38: 6(float) FAdd 30 37 Store 19(f) 38 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.smBuiltins.frag.out000066400000000000000000000047711506534232700230670ustar00rootroot00000000000000spv.smBuiltins.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader Capability ShaderSMBuiltinsNV Extension "SPV_NV_shader_sm_builtins" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 11 13 15 17 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_NV_shader_sm_builtins" Name 4 "main" Name 9 "data" Name 11 "gl_WarpsPerSMNV" Name 13 "gl_SMCountNV" Name 15 "gl_WarpIDNV" Name 17 "gl_SMIDNV" Decorate 9(data) Location 0 Decorate 11(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV Decorate 11(gl_WarpsPerSMNV) Flat Decorate 13(gl_SMCountNV) BuiltIn SMCountNV Decorate 13(gl_SMCountNV) Flat Decorate 15(gl_WarpIDNV) BuiltIn WarpIDNV Decorate 15(gl_WarpIDNV) Flat Decorate 17(gl_SMIDNV) BuiltIn SMIDNV Decorate 17(gl_SMIDNV) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 4 8: TypePointer Output 7(ivec4) 9(data): 8(ptr) Variable Output 10: TypePointer Input 6(int) 11(gl_WarpsPerSMNV): 10(ptr) Variable Input 13(gl_SMCountNV): 10(ptr) Variable Input 15(gl_WarpIDNV): 10(ptr) Variable Input 17(gl_SMIDNV): 10(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12: 6(int) Load 11(gl_WarpsPerSMNV) 14: 6(int) Load 13(gl_SMCountNV) 16: 6(int) Load 15(gl_WarpIDNV) 18: 6(int) Load 17(gl_SMIDNV) 19: 7(ivec4) CompositeConstruct 12 14 16 18 Store 9(data) 19 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.smBuiltins.vert.out000066400000000000000000000061431506534232700231230ustar00rootroot00000000000000spv.smBuiltins.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader Capability ShaderSMBuiltinsNV Extension "SPV_NV_shader_sm_builtins" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 15 18 20 22 24 Source GLSL 450 SourceExtension "GL_NV_shader_sm_builtins" Name 4 "main" Name 9 "Output" MemberName 9(Output) 0 "result" Name 11 "" Name 15 "gl_VertexIndex" Name 18 "gl_WarpsPerSMNV" Name 20 "gl_SMCountNV" Name 22 "gl_WarpIDNV" Name 24 "gl_SMIDNV" Decorate 8 ArrayStride 16 Decorate 9(Output) BufferBlock MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 Decorate 11 DescriptorSet 0 Decorate 15(gl_VertexIndex) BuiltIn VertexIndex Decorate 18(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV Decorate 20(gl_SMCountNV) BuiltIn SMCountNV Decorate 22(gl_WarpIDNV) BuiltIn WarpIDNV Decorate 24(gl_SMIDNV) BuiltIn SMIDNV 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 4 8: TypeRuntimeArray 7(ivec4) 9(Output): TypeStruct 8 10: TypePointer Uniform 9(Output) 11: 10(ptr) Variable Uniform 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypePointer Input 12(int) 15(gl_VertexIndex): 14(ptr) Variable Input 17: TypePointer Input 6(int) 18(gl_WarpsPerSMNV): 17(ptr) Variable Input 20(gl_SMCountNV): 17(ptr) Variable Input 22(gl_WarpIDNV): 17(ptr) Variable Input 24(gl_SMIDNV): 17(ptr) Variable Input 27: TypePointer Uniform 7(ivec4) 4(main): 2 Function None 3 5: Label 16: 12(int) Load 15(gl_VertexIndex) 19: 6(int) Load 18(gl_WarpsPerSMNV) 21: 6(int) Load 20(gl_SMCountNV) 23: 6(int) Load 22(gl_WarpIDNV) 25: 6(int) Load 24(gl_SMIDNV) 26: 7(ivec4) CompositeConstruct 19 21 23 25 28: 27(ptr) AccessChain 11 13 16 Store 28 26 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.sparseTexture.frag.out000066400000000000000000000763561506534232700236240ustar00rootroot00000000000000spv.sparseTexture.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 434 Capability Shader Capability ImageGatherExtended Capability StorageImageMultisample Capability SampledRect Capability SparseResidency Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 33 48 89 389 401 419 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_sparse_texture2" Name 4 "main" Name 8 "resident" Name 13 "texel" Name 18 "itexel" Name 23 "utexel" Name 29 "s2D" Name 33 "c2" Name 35 "ResType" Name 44 "s3D" Name 48 "c3" Name 59 "isCube" Name 62 "ResType" Name 71 "s2DShadow" Name 77 "ResType" Name 86 "sCubeArrayShadow" Name 89 "c4" Name 108 "usCubeArray" Name 111 "ResType" Name 140 "us2DRect" Name 154 "s2DArrayShadow" Name 188 "s2DMS" Name 228 "is2DArray" Name 259 "sCubeShadow" Name 288 "s2DRectShadow" Name 386 "i2D" Name 389 "ic2" Name 398 "ii3D" Name 401 "ic3" Name 410 "i2DMS" Name 419 "outColor" Decorate 29(s2D) Binding 0 Decorate 29(s2D) DescriptorSet 0 Decorate 33(c2) Location 0 Decorate 44(s3D) Binding 1 Decorate 44(s3D) DescriptorSet 0 Decorate 48(c3) Location 1 Decorate 59(isCube) Binding 8 Decorate 59(isCube) DescriptorSet 0 Decorate 71(s2DShadow) Binding 2 Decorate 71(s2DShadow) DescriptorSet 0 Decorate 86(sCubeArrayShadow) Binding 6 Decorate 86(sCubeArrayShadow) DescriptorSet 0 Decorate 89(c4) Location 2 Decorate 108(usCubeArray) Binding 10 Decorate 108(usCubeArray) DescriptorSet 0 Decorate 140(us2DRect) Binding 11 Decorate 140(us2DRect) DescriptorSet 0 Decorate 154(s2DArrayShadow) Binding 4 Decorate 154(s2DArrayShadow) DescriptorSet 0 Decorate 188(s2DMS) Binding 7 Decorate 188(s2DMS) DescriptorSet 0 Decorate 228(is2DArray) Binding 9 Decorate 228(is2DArray) DescriptorSet 0 Decorate 259(sCubeShadow) Binding 3 Decorate 259(sCubeShadow) DescriptorSet 0 Decorate 288(s2DRectShadow) Binding 5 Decorate 288(s2DRectShadow) DescriptorSet 0 Decorate 386(i2D) Binding 12 Decorate 386(i2D) DescriptorSet 0 Decorate 389(ic2) Flat Decorate 389(ic2) Location 3 Decorate 398(ii3D) Binding 13 Decorate 398(ii3D) DescriptorSet 0 Decorate 401(ic3) Flat Decorate 401(ic3) Location 4 Decorate 410(i2DMS) Binding 14 Decorate 410(i2DMS) DescriptorSet 0 Decorate 419(outColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Function 11(fvec4) 14: 10(float) Constant 0 15: 11(fvec4) ConstantComposite 14 14 14 14 16: TypeVector 6(int) 4 17: TypePointer Function 16(ivec4) 19: 16(ivec4) ConstantComposite 9 9 9 9 20: TypeInt 32 0 21: TypeVector 20(int) 4 22: TypePointer Function 21(ivec4) 24: 20(int) Constant 0 25: 21(ivec4) ConstantComposite 24 24 24 24 26: TypeImage 10(float) 2D sampled format:Unknown 27: TypeSampledImage 26 28: TypePointer UniformConstant 27 29(s2D): 28(ptr) Variable UniformConstant 31: TypeVector 10(float) 2 32: TypePointer Input 31(fvec2) 33(c2): 32(ptr) Variable Input 35(ResType): TypeStruct 6(int) 11(fvec4) 41: TypeImage 10(float) 3D sampled format:Unknown 42: TypeSampledImage 41 43: TypePointer UniformConstant 42 44(s3D): 43(ptr) Variable UniformConstant 46: TypeVector 10(float) 3 47: TypePointer Input 46(fvec3) 48(c3): 47(ptr) Variable Input 50: 10(float) Constant 1073741824 56: TypeImage 6(int) Cube sampled format:Unknown 57: TypeSampledImage 56 58: TypePointer UniformConstant 57 59(isCube): 58(ptr) Variable UniformConstant 62(ResType): TypeStruct 6(int) 16(ivec4) 68: TypeImage 10(float) 2D depth sampled format:Unknown 69: TypeSampledImage 68 70: TypePointer UniformConstant 69 71(s2DShadow): 70(ptr) Variable UniformConstant 74: TypePointer Function 10(float) 77(ResType): TypeStruct 6(int) 10(float) 83: TypeImage 10(float) Cube depth array sampled format:Unknown 84: TypeSampledImage 83 85: TypePointer UniformConstant 84 86(sCubeArrayShadow): 85(ptr) Variable UniformConstant 88: TypePointer Input 11(fvec4) 89(c4): 88(ptr) Variable Input 91: 10(float) Constant 1065353216 105: TypeImage 20(int) Cube array sampled format:Unknown 106: TypeSampledImage 105 107: TypePointer UniformConstant 106 108(usCubeArray): 107(ptr) Variable UniformConstant 111(ResType): TypeStruct 6(int) 21(ivec4) 119: 20(int) Constant 1 129: TypeVector 6(int) 3 130: 6(int) Constant 2 131: 129(ivec3) ConstantComposite 130 130 130 137: TypeImage 20(int) Rect sampled format:Unknown 138: TypeSampledImage 137 139: TypePointer UniformConstant 138 140(us2DRect): 139(ptr) Variable UniformConstant 143: TypeVector 6(int) 2 144: 6(int) Constant 3 145: 143(ivec2) ConstantComposite 144 144 151: TypeImage 10(float) 2D depth array sampled format:Unknown 152: TypeSampledImage 151 153: TypePointer UniformConstant 152 154(s2DArrayShadow): 153(ptr) Variable UniformConstant 157: 6(int) Constant 5 158: 143(ivec2) ConstantComposite 157 157 159: 20(int) Constant 2 185: TypeImage 10(float) 2D multi-sampled sampled format:Unknown 186: TypeSampledImage 185 187: TypePointer UniformConstant 186 188(s2DMS): 187(ptr) Variable UniformConstant 192: 6(int) Constant 4 202: 129(ivec3) ConstantComposite 192 192 192 225: TypeImage 6(int) 2D array sampled format:Unknown 226: TypeSampledImage 225 227: TypePointer UniformConstant 226 228(is2DArray): 227(ptr) Variable UniformConstant 231: 6(int) Constant 6 232: 143(ivec2) ConstantComposite 231 231 240: 6(int) Constant 7 241: 143(ivec2) ConstantComposite 240 240 256: TypeImage 10(float) Cube depth sampled format:Unknown 257: TypeSampledImage 256 258: TypePointer UniformConstant 257 259(sCubeShadow): 258(ptr) Variable UniformConstant 285: TypeImage 10(float) Rect depth sampled format:Unknown 286: TypeSampledImage 285 287: TypePointer UniformConstant 286 288(s2DRectShadow): 287(ptr) Variable UniformConstant 292: 20(int) Constant 3 303: 143(ivec2) ConstantComposite 130 130 332: 143(ivec2) ConstantComposite 192 192 354: 20(int) Constant 4 355: TypeArray 143(ivec2) 354 356: 6(int) Constant 1 357: 143(ivec2) ConstantComposite 356 130 358: 143(ivec2) ConstantComposite 144 192 359: 6(int) Constant 15 360: 6(int) Constant 16 361: 143(ivec2) ConstantComposite 359 360 362: 6(int) Constant 4294967294 363: 143(ivec2) ConstantComposite 362 9 364: 355 ConstantComposite 357 358 361 363 384: TypeImage 10(float) 2D nonsampled format:Rgba32f 385: TypePointer UniformConstant 384 386(i2D): 385(ptr) Variable UniformConstant 388: TypePointer Input 143(ivec2) 389(ic2): 388(ptr) Variable Input 396: TypeImage 6(int) 3D nonsampled format:Rgba32i 397: TypePointer UniformConstant 396 398(ii3D): 397(ptr) Variable UniformConstant 400: TypePointer Input 129(ivec3) 401(ic3): 400(ptr) Variable Input 408: TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f 409: TypePointer UniformConstant 408 410(i2DMS): 409(ptr) Variable UniformConstant 418: TypePointer Output 11(fvec4) 419(outColor): 418(ptr) Variable Output 421: TypeBool 4(main): 2 Function None 3 5: Label 8(resident): 7(ptr) Variable Function 13(texel): 12(ptr) Variable Function 18(itexel): 17(ptr) Variable Function 23(utexel): 22(ptr) Variable Function 423: 12(ptr) Variable Function Store 8(resident) 9 Store 13(texel) 15 Store 18(itexel) 19 Store 23(utexel) 25 30: 27 Load 29(s2D) 34: 31(fvec2) Load 33(c2) 36: 35(ResType) ImageSparseSampleImplicitLod 30 34 37: 11(fvec4) CompositeExtract 36 1 Store 13(texel) 37 38: 6(int) CompositeExtract 36 0 39: 6(int) Load 8(resident) 40: 6(int) BitwiseOr 39 38 Store 8(resident) 40 45: 42 Load 44(s3D) 49: 46(fvec3) Load 48(c3) 51: 35(ResType) ImageSparseSampleImplicitLod 45 49 Bias 50 52: 11(fvec4) CompositeExtract 51 1 Store 13(texel) 52 53: 6(int) CompositeExtract 51 0 54: 6(int) Load 8(resident) 55: 6(int) BitwiseOr 54 53 Store 8(resident) 55 60: 57 Load 59(isCube) 61: 46(fvec3) Load 48(c3) 63: 62(ResType) ImageSparseSampleImplicitLod 60 61 64: 16(ivec4) CompositeExtract 63 1 Store 18(itexel) 64 65: 6(int) CompositeExtract 63 0 66: 6(int) Load 8(resident) 67: 6(int) BitwiseOr 66 65 Store 8(resident) 67 72: 69 Load 71(s2DShadow) 73: 46(fvec3) Load 48(c3) 75: 74(ptr) AccessChain 13(texel) 24 76: 10(float) CompositeExtract 73 2 78: 77(ResType) ImageSparseSampleDrefImplicitLod 72 73 76 79: 10(float) CompositeExtract 78 1 Store 75 79 80: 6(int) CompositeExtract 78 0 81: 6(int) Load 8(resident) 82: 6(int) BitwiseOr 81 80 Store 8(resident) 82 87: 84 Load 86(sCubeArrayShadow) 90: 11(fvec4) Load 89(c4) 92: 74(ptr) AccessChain 13(texel) 24 93: 77(ResType) ImageSparseSampleDrefImplicitLod 87 90 91 94: 10(float) CompositeExtract 93 1 Store 92 94 95: 6(int) CompositeExtract 93 0 96: 6(int) Load 8(resident) 97: 6(int) BitwiseOr 96 95 Store 8(resident) 97 98: 27 Load 29(s2D) 99: 31(fvec2) Load 33(c2) 100: 35(ResType) ImageSparseSampleExplicitLod 98 99 Lod 50 101: 11(fvec4) CompositeExtract 100 1 Store 13(texel) 101 102: 6(int) CompositeExtract 100 0 103: 6(int) Load 8(resident) 104: 6(int) BitwiseOr 103 102 Store 8(resident) 104 109: 106 Load 108(usCubeArray) 110: 11(fvec4) Load 89(c4) 112:111(ResType) ImageSparseSampleExplicitLod 109 110 Lod 91 113: 21(ivec4) CompositeExtract 112 1 Store 23(utexel) 113 114: 6(int) CompositeExtract 112 0 115: 6(int) Load 8(resident) 116: 6(int) BitwiseOr 115 114 Store 8(resident) 116 117: 69 Load 71(s2DShadow) 118: 46(fvec3) Load 48(c3) 120: 74(ptr) AccessChain 13(texel) 119 121: 10(float) CompositeExtract 118 2 122: 77(ResType) ImageSparseSampleDrefExplicitLod 117 118 121 Lod 50 123: 10(float) CompositeExtract 122 1 Store 120 123 124: 6(int) CompositeExtract 122 0 125: 6(int) Load 8(resident) 126: 6(int) BitwiseOr 125 124 Store 8(resident) 126 127: 42 Load 44(s3D) 128: 46(fvec3) Load 48(c3) 132: 35(ResType) ImageSparseSampleImplicitLod 127 128 Bias ConstOffset 50 131 133: 11(fvec4) CompositeExtract 132 1 Store 13(texel) 133 134: 6(int) CompositeExtract 132 0 135: 6(int) Load 8(resident) 136: 6(int) BitwiseOr 135 134 Store 8(resident) 136 141: 138 Load 140(us2DRect) 142: 31(fvec2) Load 33(c2) 146:111(ResType) ImageSparseSampleImplicitLod 141 142 ConstOffset 145 147: 21(ivec4) CompositeExtract 146 1 Store 23(utexel) 147 148: 6(int) CompositeExtract 146 0 149: 6(int) Load 8(resident) 150: 6(int) BitwiseOr 149 148 Store 8(resident) 150 155: 152 Load 154(s2DArrayShadow) 156: 11(fvec4) Load 89(c4) 160: 74(ptr) AccessChain 13(texel) 159 161: 10(float) CompositeExtract 156 3 162: 77(ResType) ImageSparseSampleDrefImplicitLod 155 156 161 ConstOffset 158 163: 10(float) CompositeExtract 162 1 Store 160 163 164: 6(int) CompositeExtract 162 0 165: 6(int) Load 8(resident) 166: 6(int) BitwiseOr 165 164 Store 8(resident) 166 167: 27 Load 29(s2D) 168: 31(fvec2) Load 33(c2) 169: 143(ivec2) ConvertFToS 168 170: 26 Image 167 171: 35(ResType) ImageSparseFetch 170 169 Lod 130 172: 11(fvec4) CompositeExtract 171 1 Store 13(texel) 172 173: 6(int) CompositeExtract 171 0 174: 6(int) Load 8(resident) 175: 6(int) BitwiseOr 174 173 Store 8(resident) 175 176: 138 Load 140(us2DRect) 177: 31(fvec2) Load 33(c2) 178: 143(ivec2) ConvertFToS 177 179: 137 Image 176 180:111(ResType) ImageSparseFetch 179 178 181: 21(ivec4) CompositeExtract 180 1 Store 23(utexel) 181 182: 6(int) CompositeExtract 180 0 183: 6(int) Load 8(resident) 184: 6(int) BitwiseOr 183 182 Store 8(resident) 184 189: 186 Load 188(s2DMS) 190: 31(fvec2) Load 33(c2) 191: 143(ivec2) ConvertFToS 190 193: 185 Image 189 194: 35(ResType) ImageSparseFetch 193 191 Sample 192 195: 11(fvec4) CompositeExtract 194 1 Store 13(texel) 195 196: 6(int) CompositeExtract 194 0 197: 6(int) Load 8(resident) 198: 6(int) BitwiseOr 197 196 Store 8(resident) 198 199: 42 Load 44(s3D) 200: 46(fvec3) Load 48(c3) 201: 129(ivec3) ConvertFToS 200 203: 41 Image 199 204: 35(ResType) ImageSparseFetch 203 201 Lod ConstOffset 130 202 205: 11(fvec4) CompositeExtract 204 1 Store 13(texel) 205 206: 6(int) CompositeExtract 204 0 207: 6(int) Load 8(resident) 208: 6(int) BitwiseOr 207 206 Store 8(resident) 208 209: 138 Load 140(us2DRect) 210: 31(fvec2) Load 33(c2) 211: 143(ivec2) ConvertFToS 210 212: 137 Image 209 213:111(ResType) ImageSparseFetch 212 211 ConstOffset 145 214: 21(ivec4) CompositeExtract 213 1 Store 23(utexel) 214 215: 6(int) CompositeExtract 213 0 216: 6(int) Load 8(resident) 217: 6(int) BitwiseOr 216 215 Store 8(resident) 217 218: 27 Load 29(s2D) 219: 31(fvec2) Load 33(c2) 220: 35(ResType) ImageSparseSampleExplicitLod 218 219 Lod ConstOffset 50 158 221: 11(fvec4) CompositeExtract 220 1 Store 13(texel) 221 222: 6(int) CompositeExtract 220 0 223: 6(int) Load 8(resident) 224: 6(int) BitwiseOr 223 222 Store 8(resident) 224 229: 226 Load 228(is2DArray) 230: 46(fvec3) Load 48(c3) 233: 62(ResType) ImageSparseSampleExplicitLod 229 230 Lod ConstOffset 50 232 234: 16(ivec4) CompositeExtract 233 1 Store 18(itexel) 234 235: 6(int) CompositeExtract 233 0 236: 6(int) Load 8(resident) 237: 6(int) BitwiseOr 236 235 Store 8(resident) 237 238: 69 Load 71(s2DShadow) 239: 46(fvec3) Load 48(c3) 242: 74(ptr) AccessChain 13(texel) 159 243: 10(float) CompositeExtract 239 2 244: 77(ResType) ImageSparseSampleDrefExplicitLod 238 239 243 Lod ConstOffset 50 241 245: 10(float) CompositeExtract 244 1 Store 242 245 246: 6(int) CompositeExtract 244 0 247: 6(int) Load 8(resident) 248: 6(int) BitwiseOr 247 246 Store 8(resident) 248 249: 42 Load 44(s3D) 250: 46(fvec3) Load 48(c3) 251: 35(ResType) ImageSparseSampleExplicitLod 249 250 Grad 250 250 252: 11(fvec4) CompositeExtract 251 1 Store 13(texel) 252 253: 6(int) CompositeExtract 251 0 254: 6(int) Load 8(resident) 255: 6(int) BitwiseOr 254 253 Store 8(resident) 255 260: 257 Load 259(sCubeShadow) 261: 11(fvec4) Load 89(c4) 262: 46(fvec3) Load 48(c3) 263: 74(ptr) AccessChain 13(texel) 119 264: 10(float) CompositeExtract 261 3 265: 77(ResType) ImageSparseSampleDrefExplicitLod 260 261 264 Grad 262 262 266: 10(float) CompositeExtract 265 1 Store 263 266 267: 6(int) CompositeExtract 265 0 268: 6(int) Load 8(resident) 269: 6(int) BitwiseOr 268 267 Store 8(resident) 269 270: 106 Load 108(usCubeArray) 271: 11(fvec4) Load 89(c4) 272: 46(fvec3) Load 48(c3) 273:111(ResType) ImageSparseSampleExplicitLod 270 271 Grad 272 272 274: 21(ivec4) CompositeExtract 273 1 Store 23(utexel) 274 275: 6(int) CompositeExtract 273 0 276: 6(int) Load 8(resident) 277: 6(int) BitwiseOr 276 275 Store 8(resident) 277 278: 27 Load 29(s2D) 279: 31(fvec2) Load 33(c2) 280: 35(ResType) ImageSparseSampleExplicitLod 278 279 Grad ConstOffset 279 279 158 281: 11(fvec4) CompositeExtract 280 1 Store 13(texel) 281 282: 6(int) CompositeExtract 280 0 283: 6(int) Load 8(resident) 284: 6(int) BitwiseOr 283 282 Store 8(resident) 284 289: 286 Load 288(s2DRectShadow) 290: 46(fvec3) Load 48(c3) 291: 31(fvec2) Load 33(c2) 293: 74(ptr) AccessChain 13(texel) 292 294: 10(float) CompositeExtract 290 2 295: 77(ResType) ImageSparseSampleDrefExplicitLod 289 290 294 Grad ConstOffset 291 291 232 296: 10(float) CompositeExtract 295 1 Store 293 296 297: 6(int) CompositeExtract 295 0 298: 6(int) Load 8(resident) 299: 6(int) BitwiseOr 298 297 Store 8(resident) 299 300: 226 Load 228(is2DArray) 301: 46(fvec3) Load 48(c3) 302: 31(fvec2) Load 33(c2) 304: 62(ResType) ImageSparseSampleExplicitLod 300 301 Grad ConstOffset 302 302 303 305: 16(ivec4) CompositeExtract 304 1 Store 18(itexel) 305 306: 6(int) CompositeExtract 304 0 307: 6(int) Load 8(resident) 308: 6(int) BitwiseOr 307 306 Store 8(resident) 308 309: 27 Load 29(s2D) 310: 31(fvec2) Load 33(c2) 311: 35(ResType) ImageSparseGather 309 310 9 312: 11(fvec4) CompositeExtract 311 1 Store 13(texel) 312 313: 6(int) CompositeExtract 311 0 314: 6(int) Load 8(resident) 315: 6(int) BitwiseOr 314 313 Store 8(resident) 315 316: 226 Load 228(is2DArray) 317: 46(fvec3) Load 48(c3) 318: 62(ResType) ImageSparseGather 316 317 130 319: 16(ivec4) CompositeExtract 318 1 Store 18(itexel) 319 320: 6(int) CompositeExtract 318 0 321: 6(int) Load 8(resident) 322: 6(int) BitwiseOr 321 320 Store 8(resident) 322 323: 152 Load 154(s2DArrayShadow) 324: 46(fvec3) Load 48(c3) 325: 35(ResType) ImageSparseDrefGather 323 324 50 326: 11(fvec4) CompositeExtract 325 1 Store 13(texel) 326 327: 6(int) CompositeExtract 325 0 328: 6(int) Load 8(resident) 329: 6(int) BitwiseOr 328 327 Store 8(resident) 329 330: 27 Load 29(s2D) 331: 31(fvec2) Load 33(c2) 333: 35(ResType) ImageSparseGather 330 331 9 ConstOffset 332 334: 11(fvec4) CompositeExtract 333 1 Store 13(texel) 334 335: 6(int) CompositeExtract 333 0 336: 6(int) Load 8(resident) 337: 6(int) BitwiseOr 336 335 Store 8(resident) 337 338: 226 Load 228(is2DArray) 339: 46(fvec3) Load 48(c3) 340: 62(ResType) ImageSparseGather 338 339 130 ConstOffset 158 341: 16(ivec4) CompositeExtract 340 1 Store 18(itexel) 341 342: 6(int) CompositeExtract 340 0 343: 6(int) Load 8(resident) 344: 6(int) BitwiseOr 343 342 Store 8(resident) 344 345: 286 Load 288(s2DRectShadow) 346: 31(fvec2) Load 33(c2) 347: 35(ResType) ImageSparseDrefGather 345 346 50 ConstOffset 241 348: 11(fvec4) CompositeExtract 347 1 Store 13(texel) 348 349: 6(int) CompositeExtract 347 0 350: 6(int) Load 8(resident) 351: 6(int) BitwiseOr 350 349 Store 8(resident) 351 352: 27 Load 29(s2D) 353: 31(fvec2) Load 33(c2) 365: 35(ResType) ImageSparseGather 352 353 9 ConstOffsets 364 366: 11(fvec4) CompositeExtract 365 1 Store 13(texel) 366 367: 6(int) CompositeExtract 365 0 368: 6(int) Load 8(resident) 369: 6(int) BitwiseOr 368 367 Store 8(resident) 369 370: 226 Load 228(is2DArray) 371: 46(fvec3) Load 48(c3) 372: 62(ResType) ImageSparseGather 370 371 130 ConstOffsets 364 373: 16(ivec4) CompositeExtract 372 1 Store 18(itexel) 373 374: 6(int) CompositeExtract 372 0 375: 6(int) Load 8(resident) 376: 6(int) BitwiseOr 375 374 Store 8(resident) 376 377: 286 Load 288(s2DRectShadow) 378: 31(fvec2) Load 33(c2) 379: 35(ResType) ImageSparseDrefGather 377 378 50 ConstOffsets 364 380: 11(fvec4) CompositeExtract 379 1 Store 13(texel) 380 381: 6(int) CompositeExtract 379 0 382: 6(int) Load 8(resident) 383: 6(int) BitwiseOr 382 381 Store 8(resident) 383 387: 384 Load 386(i2D) 390: 143(ivec2) Load 389(ic2) 391: 35(ResType) ImageSparseRead 387 390 392: 11(fvec4) CompositeExtract 391 1 Store 13(texel) 392 393: 6(int) CompositeExtract 391 0 394: 6(int) Load 8(resident) 395: 6(int) BitwiseOr 394 393 Store 8(resident) 395 399: 396 Load 398(ii3D) 402: 129(ivec3) Load 401(ic3) 403: 62(ResType) ImageSparseRead 399 402 404: 16(ivec4) CompositeExtract 403 1 Store 18(itexel) 404 405: 6(int) CompositeExtract 403 0 406: 6(int) Load 8(resident) 407: 6(int) BitwiseOr 406 405 Store 8(resident) 407 411: 408 Load 410(i2DMS) 412: 143(ivec2) Load 389(ic2) 413: 35(ResType) ImageSparseRead 411 412 Sample 144 414: 11(fvec4) CompositeExtract 413 1 Store 13(texel) 414 415: 6(int) CompositeExtract 413 0 416: 6(int) Load 8(resident) 417: 6(int) BitwiseOr 416 415 Store 8(resident) 417 420: 6(int) Load 8(resident) 422: 421(bool) ImageSparseTexelsResident 420 SelectionMerge 425 None BranchConditional 422 424 427 424: Label 426: 11(fvec4) Load 13(texel) Store 423 426 Branch 425 427: Label 428: 16(ivec4) Load 18(itexel) 429: 11(fvec4) ConvertSToF 428 430: 21(ivec4) Load 23(utexel) 431: 11(fvec4) ConvertUToF 430 432: 11(fvec4) FAdd 429 431 Store 423 432 Branch 425 425: Label 433: 11(fvec4) Load 423 Store 419(outColor) 433 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.sparseTextureClamp.frag.out000066400000000000000000000602271506534232700245670ustar00rootroot00000000000000spv.sparseTextureClamp.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 344 Capability Shader Capability SampledRect Capability SparseResidency Capability MinLod Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 33 36 51 95 329 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_sparse_texture_clamp" Name 4 "main" Name 8 "resident" Name 13 "texel" Name 18 "itexel" Name 23 "utexel" Name 29 "s2D" Name 33 "c2" Name 36 "lodClamp" Name 38 "ResType" Name 47 "s3D" Name 51 "c3" Name 63 "isCube" Name 67 "ResType" Name 76 "s2DShadow" Name 83 "ResType" Name 92 "sCubeArrayShadow" Name 95 "c4" Name 154 "us2DRect" Name 161 "ResType" Name 170 "s2DArrayShadow" Name 216 "sCubeShadow" Name 232 "usCubeArray" Name 276 "s2DRectShadow" Name 294 "is2DArray" Name 329 "outColor" Decorate 29(s2D) Binding 0 Decorate 29(s2D) DescriptorSet 0 Decorate 33(c2) Location 0 Decorate 36(lodClamp) Location 3 Decorate 47(s3D) Binding 1 Decorate 47(s3D) DescriptorSet 0 Decorate 51(c3) Location 1 Decorate 63(isCube) Binding 7 Decorate 63(isCube) DescriptorSet 0 Decorate 76(s2DShadow) Binding 2 Decorate 76(s2DShadow) DescriptorSet 0 Decorate 92(sCubeArrayShadow) Binding 6 Decorate 92(sCubeArrayShadow) DescriptorSet 0 Decorate 95(c4) Location 2 Decorate 154(us2DRect) Binding 10 Decorate 154(us2DRect) DescriptorSet 0 Decorate 170(s2DArrayShadow) Binding 4 Decorate 170(s2DArrayShadow) DescriptorSet 0 Decorate 216(sCubeShadow) Binding 3 Decorate 216(sCubeShadow) DescriptorSet 0 Decorate 232(usCubeArray) Binding 9 Decorate 232(usCubeArray) DescriptorSet 0 Decorate 276(s2DRectShadow) Binding 5 Decorate 276(s2DRectShadow) DescriptorSet 0 Decorate 294(is2DArray) Binding 8 Decorate 294(is2DArray) DescriptorSet 0 Decorate 329(outColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Function 11(fvec4) 14: 10(float) Constant 0 15: 11(fvec4) ConstantComposite 14 14 14 14 16: TypeVector 6(int) 4 17: TypePointer Function 16(ivec4) 19: 16(ivec4) ConstantComposite 9 9 9 9 20: TypeInt 32 0 21: TypeVector 20(int) 4 22: TypePointer Function 21(ivec4) 24: 20(int) Constant 0 25: 21(ivec4) ConstantComposite 24 24 24 24 26: TypeImage 10(float) 2D sampled format:Unknown 27: TypeSampledImage 26 28: TypePointer UniformConstant 27 29(s2D): 28(ptr) Variable UniformConstant 31: TypeVector 10(float) 2 32: TypePointer Input 31(fvec2) 33(c2): 32(ptr) Variable Input 35: TypePointer Input 10(float) 36(lodClamp): 35(ptr) Variable Input 38(ResType): TypeStruct 6(int) 11(fvec4) 44: TypeImage 10(float) 3D sampled format:Unknown 45: TypeSampledImage 44 46: TypePointer UniformConstant 45 47(s3D): 46(ptr) Variable UniformConstant 49: TypeVector 10(float) 3 50: TypePointer Input 49(fvec3) 51(c3): 50(ptr) Variable Input 54: 10(float) Constant 1073741824 60: TypeImage 6(int) Cube sampled format:Unknown 61: TypeSampledImage 60 62: TypePointer UniformConstant 61 63(isCube): 62(ptr) Variable UniformConstant 67(ResType): TypeStruct 6(int) 16(ivec4) 73: TypeImage 10(float) 2D depth sampled format:Unknown 74: TypeSampledImage 73 75: TypePointer UniformConstant 74 76(s2DShadow): 75(ptr) Variable UniformConstant 80: TypePointer Function 10(float) 83(ResType): TypeStruct 6(int) 10(float) 89: TypeImage 10(float) Cube depth array sampled format:Unknown 90: TypeSampledImage 89 91: TypePointer UniformConstant 90 92(sCubeArrayShadow): 91(ptr) Variable UniformConstant 94: TypePointer Input 11(fvec4) 95(c4): 94(ptr) Variable Input 97: 10(float) Constant 1065353216 142: TypeVector 6(int) 3 143: 6(int) Constant 2 144: 142(ivec3) ConstantComposite 143 143 143 151: TypeImage 20(int) Rect sampled format:Unknown 152: TypeSampledImage 151 153: TypePointer UniformConstant 152 154(us2DRect): 153(ptr) Variable UniformConstant 157: TypeVector 6(int) 2 158: 6(int) Constant 3 159: 157(ivec2) ConstantComposite 158 158 161(ResType): TypeStruct 6(int) 21(ivec4) 167: TypeImage 10(float) 2D depth array sampled format:Unknown 168: TypeSampledImage 167 169: TypePointer UniformConstant 168 170(s2DArrayShadow): 169(ptr) Variable UniformConstant 173: 6(int) Constant 5 174: 157(ivec2) ConstantComposite 173 173 176: 20(int) Constant 2 213: TypeImage 10(float) Cube depth sampled format:Unknown 214: TypeSampledImage 213 215: TypePointer UniformConstant 214 216(sCubeShadow): 215(ptr) Variable UniformConstant 221: 20(int) Constant 1 229: TypeImage 20(int) Cube array sampled format:Unknown 230: TypeSampledImage 229 231: TypePointer UniformConstant 230 232(usCubeArray): 231(ptr) Variable UniformConstant 273: TypeImage 10(float) Rect depth sampled format:Unknown 274: TypeSampledImage 273 275: TypePointer UniformConstant 274 276(s2DRectShadow): 275(ptr) Variable UniformConstant 280: 6(int) Constant 6 281: 157(ivec2) ConstantComposite 280 280 283: 20(int) Constant 3 291: TypeImage 6(int) 2D array sampled format:Unknown 292: TypeSampledImage 291 293: TypePointer UniformConstant 292 294(is2DArray): 293(ptr) Variable UniformConstant 298: 157(ivec2) ConstantComposite 143 143 328: TypePointer Output 11(fvec4) 329(outColor): 328(ptr) Variable Output 331: TypeBool 4(main): 2 Function None 3 5: Label 8(resident): 7(ptr) Variable Function 13(texel): 12(ptr) Variable Function 18(itexel): 17(ptr) Variable Function 23(utexel): 22(ptr) Variable Function 333: 12(ptr) Variable Function Store 8(resident) 9 Store 13(texel) 15 Store 18(itexel) 19 Store 23(utexel) 25 30: 27 Load 29(s2D) 34: 31(fvec2) Load 33(c2) 37: 10(float) Load 36(lodClamp) 39: 38(ResType) ImageSparseSampleImplicitLod 30 34 MinLod 37 40: 11(fvec4) CompositeExtract 39 1 Store 13(texel) 40 41: 6(int) CompositeExtract 39 0 42: 6(int) Load 8(resident) 43: 6(int) BitwiseOr 42 41 Store 8(resident) 43 48: 45 Load 47(s3D) 52: 49(fvec3) Load 51(c3) 53: 10(float) Load 36(lodClamp) 55: 38(ResType) ImageSparseSampleImplicitLod 48 52 Bias MinLod 54 53 56: 11(fvec4) CompositeExtract 55 1 Store 13(texel) 56 57: 6(int) CompositeExtract 55 0 58: 6(int) Load 8(resident) 59: 6(int) BitwiseOr 58 57 Store 8(resident) 59 64: 61 Load 63(isCube) 65: 49(fvec3) Load 51(c3) 66: 10(float) Load 36(lodClamp) 68: 67(ResType) ImageSparseSampleImplicitLod 64 65 MinLod 66 69: 16(ivec4) CompositeExtract 68 1 Store 18(itexel) 69 70: 6(int) CompositeExtract 68 0 71: 6(int) Load 8(resident) 72: 6(int) BitwiseOr 71 70 Store 8(resident) 72 77: 74 Load 76(s2DShadow) 78: 49(fvec3) Load 51(c3) 79: 10(float) Load 36(lodClamp) 81: 80(ptr) AccessChain 13(texel) 24 82: 10(float) CompositeExtract 78 2 84: 83(ResType) ImageSparseSampleDrefImplicitLod 77 78 82 MinLod 79 85: 10(float) CompositeExtract 84 1 Store 81 85 86: 6(int) CompositeExtract 84 0 87: 6(int) Load 8(resident) 88: 6(int) BitwiseOr 87 86 Store 8(resident) 88 93: 90 Load 92(sCubeArrayShadow) 96: 11(fvec4) Load 95(c4) 98: 10(float) Load 36(lodClamp) 99: 80(ptr) AccessChain 13(texel) 24 100: 83(ResType) ImageSparseSampleDrefImplicitLod 93 96 97 MinLod 98 101: 10(float) CompositeExtract 100 1 Store 99 101 102: 6(int) CompositeExtract 100 0 103: 6(int) Load 8(resident) 104: 6(int) BitwiseOr 103 102 Store 8(resident) 104 105: 27 Load 29(s2D) 106: 31(fvec2) Load 33(c2) 107: 10(float) Load 36(lodClamp) 108: 11(fvec4) ImageSampleImplicitLod 105 106 MinLod 107 109: 11(fvec4) Load 13(texel) 110: 11(fvec4) FAdd 109 108 Store 13(texel) 110 111: 45 Load 47(s3D) 112: 49(fvec3) Load 51(c3) 113: 10(float) Load 36(lodClamp) 114: 11(fvec4) ImageSampleImplicitLod 111 112 Bias MinLod 54 113 115: 11(fvec4) Load 13(texel) 116: 11(fvec4) FAdd 115 114 Store 13(texel) 116 117: 61 Load 63(isCube) 118: 49(fvec3) Load 51(c3) 119: 10(float) Load 36(lodClamp) 120: 16(ivec4) ImageSampleImplicitLod 117 118 MinLod 119 121: 16(ivec4) Load 18(itexel) 122: 16(ivec4) IAdd 121 120 Store 18(itexel) 122 123: 74 Load 76(s2DShadow) 124: 49(fvec3) Load 51(c3) 125: 10(float) Load 36(lodClamp) 126: 10(float) CompositeExtract 124 2 127: 10(float) ImageSampleDrefImplicitLod 123 124 126 MinLod 125 128: 80(ptr) AccessChain 13(texel) 24 129: 10(float) Load 128 130: 10(float) FAdd 129 127 131: 80(ptr) AccessChain 13(texel) 24 Store 131 130 132: 90 Load 92(sCubeArrayShadow) 133: 11(fvec4) Load 95(c4) 134: 10(float) Load 36(lodClamp) 135: 10(float) ImageSampleDrefImplicitLod 132 133 97 MinLod 134 136: 80(ptr) AccessChain 13(texel) 24 137: 10(float) Load 136 138: 10(float) FAdd 137 135 139: 80(ptr) AccessChain 13(texel) 24 Store 139 138 140: 45 Load 47(s3D) 141: 49(fvec3) Load 51(c3) 145: 10(float) Load 36(lodClamp) 146: 38(ResType) ImageSparseSampleImplicitLod 140 141 Bias ConstOffset MinLod 54 144 145 147: 11(fvec4) CompositeExtract 146 1 Store 13(texel) 147 148: 6(int) CompositeExtract 146 0 149: 6(int) Load 8(resident) 150: 6(int) BitwiseOr 149 148 Store 8(resident) 150 155: 152 Load 154(us2DRect) 156: 31(fvec2) Load 33(c2) 160: 10(float) Load 36(lodClamp) 162:161(ResType) ImageSparseSampleImplicitLod 155 156 ConstOffset MinLod 159 160 163: 21(ivec4) CompositeExtract 162 1 Store 23(utexel) 163 164: 6(int) CompositeExtract 162 0 165: 6(int) Load 8(resident) 166: 6(int) BitwiseOr 165 164 Store 8(resident) 166 171: 168 Load 170(s2DArrayShadow) 172: 11(fvec4) Load 95(c4) 175: 10(float) Load 36(lodClamp) 177: 80(ptr) AccessChain 13(texel) 176 178: 10(float) CompositeExtract 172 3 179: 83(ResType) ImageSparseSampleDrefImplicitLod 171 172 178 ConstOffset MinLod 174 175 180: 10(float) CompositeExtract 179 1 Store 177 180 181: 6(int) CompositeExtract 179 0 182: 6(int) Load 8(resident) 183: 6(int) BitwiseOr 182 181 Store 8(resident) 183 184: 45 Load 47(s3D) 185: 49(fvec3) Load 51(c3) 186: 10(float) Load 36(lodClamp) 187: 11(fvec4) ImageSampleImplicitLod 184 185 Bias ConstOffset MinLod 54 144 186 188: 11(fvec4) Load 13(texel) 189: 11(fvec4) FAdd 188 187 Store 13(texel) 189 190: 152 Load 154(us2DRect) 191: 31(fvec2) Load 33(c2) 192: 10(float) Load 36(lodClamp) 193: 21(ivec4) ImageSampleImplicitLod 190 191 ConstOffset MinLod 159 192 194: 21(ivec4) Load 23(utexel) 195: 21(ivec4) IAdd 194 193 Store 23(utexel) 195 196: 168 Load 170(s2DArrayShadow) 197: 11(fvec4) Load 95(c4) 198: 10(float) Load 36(lodClamp) 199: 10(float) CompositeExtract 197 3 200: 10(float) ImageSampleDrefImplicitLod 196 197 199 ConstOffset MinLod 174 198 201: 80(ptr) AccessChain 13(texel) 176 202: 10(float) Load 201 203: 10(float) FAdd 202 200 204: 80(ptr) AccessChain 13(texel) 176 Store 204 203 205: 45 Load 47(s3D) 206: 49(fvec3) Load 51(c3) 207: 10(float) Load 36(lodClamp) 208: 38(ResType) ImageSparseSampleExplicitLod 205 206 Grad MinLod 206 206 207 209: 11(fvec4) CompositeExtract 208 1 Store 13(texel) 209 210: 6(int) CompositeExtract 208 0 211: 6(int) Load 8(resident) 212: 6(int) BitwiseOr 211 210 Store 8(resident) 212 217: 214 Load 216(sCubeShadow) 218: 11(fvec4) Load 95(c4) 219: 49(fvec3) Load 51(c3) 220: 10(float) Load 36(lodClamp) 222: 80(ptr) AccessChain 13(texel) 221 223: 10(float) CompositeExtract 218 3 224: 83(ResType) ImageSparseSampleDrefExplicitLod 217 218 223 Grad MinLod 219 219 220 225: 10(float) CompositeExtract 224 1 Store 222 225 226: 6(int) CompositeExtract 224 0 227: 6(int) Load 8(resident) 228: 6(int) BitwiseOr 227 226 Store 8(resident) 228 233: 230 Load 232(usCubeArray) 234: 11(fvec4) Load 95(c4) 235: 49(fvec3) Load 51(c3) 236: 10(float) Load 36(lodClamp) 237:161(ResType) ImageSparseSampleExplicitLod 233 234 Grad MinLod 235 235 236 238: 21(ivec4) CompositeExtract 237 1 Store 23(utexel) 238 239: 6(int) CompositeExtract 237 0 240: 6(int) Load 8(resident) 241: 6(int) BitwiseOr 240 239 Store 8(resident) 241 242: 45 Load 47(s3D) 243: 49(fvec3) Load 51(c3) 244: 10(float) Load 36(lodClamp) 245: 11(fvec4) ImageSampleExplicitLod 242 243 Grad MinLod 243 243 244 246: 11(fvec4) Load 13(texel) 247: 11(fvec4) FAdd 246 245 Store 13(texel) 247 248: 214 Load 216(sCubeShadow) 249: 11(fvec4) Load 95(c4) 250: 49(fvec3) Load 51(c3) 251: 10(float) Load 36(lodClamp) 252: 10(float) CompositeExtract 249 3 253: 10(float) ImageSampleDrefExplicitLod 248 249 252 Grad MinLod 250 250 251 254: 80(ptr) AccessChain 13(texel) 221 255: 10(float) Load 254 256: 10(float) FAdd 255 253 257: 80(ptr) AccessChain 13(texel) 221 Store 257 256 258: 230 Load 232(usCubeArray) 259: 11(fvec4) Load 95(c4) 260: 49(fvec3) Load 51(c3) 261: 10(float) Load 36(lodClamp) 262: 21(ivec4) ImageSampleExplicitLod 258 259 Grad MinLod 260 260 261 263: 21(ivec4) Load 23(utexel) 264: 21(ivec4) IAdd 263 262 Store 23(utexel) 264 265: 27 Load 29(s2D) 266: 31(fvec2) Load 33(c2) 267: 10(float) Load 36(lodClamp) 268: 38(ResType) ImageSparseSampleExplicitLod 265 266 Grad ConstOffset MinLod 266 266 174 267 269: 11(fvec4) CompositeExtract 268 1 Store 13(texel) 269 270: 6(int) CompositeExtract 268 0 271: 6(int) Load 8(resident) 272: 6(int) BitwiseOr 271 270 Store 8(resident) 272 277: 274 Load 276(s2DRectShadow) 278: 49(fvec3) Load 51(c3) 279: 31(fvec2) Load 33(c2) 282: 10(float) Load 36(lodClamp) 284: 80(ptr) AccessChain 13(texel) 283 285: 10(float) CompositeExtract 278 2 286: 83(ResType) ImageSparseSampleDrefExplicitLod 277 278 285 Grad ConstOffset MinLod 279 279 281 282 287: 10(float) CompositeExtract 286 1 Store 284 287 288: 6(int) CompositeExtract 286 0 289: 6(int) Load 8(resident) 290: 6(int) BitwiseOr 289 288 Store 8(resident) 290 295: 292 Load 294(is2DArray) 296: 49(fvec3) Load 51(c3) 297: 31(fvec2) Load 33(c2) 299: 10(float) Load 36(lodClamp) 300: 67(ResType) ImageSparseSampleExplicitLod 295 296 Grad ConstOffset MinLod 297 297 298 299 301: 16(ivec4) CompositeExtract 300 1 Store 18(itexel) 301 302: 6(int) CompositeExtract 300 0 303: 6(int) Load 8(resident) 304: 6(int) BitwiseOr 303 302 Store 8(resident) 304 305: 27 Load 29(s2D) 306: 31(fvec2) Load 33(c2) 307: 10(float) Load 36(lodClamp) 308: 11(fvec4) ImageSampleExplicitLod 305 306 Grad ConstOffset MinLod 306 306 174 307 309: 11(fvec4) Load 13(texel) 310: 11(fvec4) FAdd 309 308 Store 13(texel) 310 311: 274 Load 276(s2DRectShadow) 312: 49(fvec3) Load 51(c3) 313: 31(fvec2) Load 33(c2) 314: 10(float) Load 36(lodClamp) 315: 10(float) CompositeExtract 312 2 316: 10(float) ImageSampleDrefExplicitLod 311 312 315 Grad ConstOffset MinLod 313 313 281 314 317: 80(ptr) AccessChain 13(texel) 283 318: 10(float) Load 317 319: 10(float) FAdd 318 316 320: 80(ptr) AccessChain 13(texel) 283 Store 320 319 321: 292 Load 294(is2DArray) 322: 49(fvec3) Load 51(c3) 323: 31(fvec2) Load 33(c2) 324: 10(float) Load 36(lodClamp) 325: 16(ivec4) ImageSampleExplicitLod 321 322 Grad ConstOffset MinLod 323 323 298 324 326: 16(ivec4) Load 18(itexel) 327: 16(ivec4) IAdd 326 325 Store 18(itexel) 327 330: 6(int) Load 8(resident) 332: 331(bool) ImageSparseTexelsResident 330 SelectionMerge 335 None BranchConditional 332 334 337 334: Label 336: 11(fvec4) Load 13(texel) Store 333 336 Branch 335 337: Label 338: 16(ivec4) Load 18(itexel) 339: 11(fvec4) ConvertSToF 338 340: 21(ivec4) Load 23(utexel) 341: 11(fvec4) ConvertUToF 340 342: 11(fvec4) FAdd 339 341 Store 333 342 Branch 335 335: Label 343: 11(fvec4) Load 333 Store 329(outColor) 343 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.sparsetextureoffset_non_const.vert.out000066400000000000000000000231331506534232700271750ustar00rootroot00000000000000spv.sparsetextureoffset_non_const.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 114 Capability Shader Capability ImageGatherExtended Capability SparseResidency 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 14 27 31 45 75 90 98 106 Source GLSL 450 SourceExtension "GL_ARB_sparse_texture2" SourceExtension "GL_EXT_texture_offset_non_const" Name 4 "main" Name 8 "gl_PerVertex" MemberName 8(gl_PerVertex) 0 "gl_Position" Name 10 "" Name 14 "a_position" Name 19 "ret0" Name 23 "u_sampler" Name 27 "a_in0" Name 31 "offsetValue" Name 34 "aux0" Name 36 "ResType" Name 40 "ret1" Name 45 "a_in1" Name 49 "aux1" Name 54 "ret2" Name 59 "aux2" Name 63 "ret3" Name 71 "aux3" Name 75 "v_color0" Name 77 "buf0" MemberName 77(buf0) 0 "u_scale" Name 79 "" Name 84 "buf1" MemberName 84(buf1) 0 "u_bias" Name 86 "" Name 90 "v_color1" Name 98 "v_color2" Name 106 "v_color3" Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position Decorate 14(a_position) Location 0 Decorate 23(u_sampler) Binding 0 Decorate 23(u_sampler) DescriptorSet 0 Decorate 27(a_in0) Location 4 Decorate 31(offsetValue) Location 10 Decorate 45(a_in1) Location 5 Decorate 75(v_color0) RelaxedPrecision Decorate 75(v_color0) Location 0 Decorate 77(buf0) Block MemberDecorate 77(buf0) 0 Offset 0 Decorate 79 Binding 1 Decorate 79 DescriptorSet 0 Decorate 84(buf1) Block MemberDecorate 84(buf1) 0 Offset 0 Decorate 86 Binding 2 Decorate 86 DescriptorSet 0 Decorate 90(v_color1) RelaxedPrecision Decorate 90(v_color1) Location 1 Decorate 98(v_color2) RelaxedPrecision Decorate 98(v_color2) Location 2 Decorate 106(v_color3) RelaxedPrecision Decorate 106(v_color3) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(gl_PerVertex): TypeStruct 7(fvec4) 9: TypePointer Output 8(gl_PerVertex) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: TypePointer Input 7(fvec4) 14(a_position): 13(ptr) Variable Input 16: TypePointer Output 7(fvec4) 18: TypePointer Function 11(int) 20: TypeImage 6(float) 2D sampled format:Unknown 21: TypeSampledImage 20 22: TypePointer UniformConstant 21 23(u_sampler): 22(ptr) Variable UniformConstant 25: TypeVector 6(float) 2 26: TypePointer Input 25(fvec2) 27(a_in0): 26(ptr) Variable Input 29: TypeVector 11(int) 2 30: TypePointer Input 29(ivec2) 31(offsetValue): 30(ptr) Variable Input 33: TypePointer Function 7(fvec4) 35: 6(float) Constant 0 36(ResType): TypeStruct 11(int) 7(fvec4) 44: TypePointer Input 6(float) 45(a_in1): 44(ptr) Variable Input 75(v_color0): 16(ptr) Variable Output 77(buf0): TypeStruct 7(fvec4) 78: TypePointer Uniform 77(buf0) 79: 78(ptr) Variable Uniform 80: TypePointer Uniform 7(fvec4) 84(buf1): TypeStruct 7(fvec4) 85: TypePointer Uniform 84(buf1) 86: 85(ptr) Variable Uniform 90(v_color1): 16(ptr) Variable Output 98(v_color2): 16(ptr) Variable Output 106(v_color3): 16(ptr) Variable Output 4(main): 2 Function None 3 5: Label 19(ret0): 18(ptr) Variable Function 34(aux0): 33(ptr) Variable Function 40(ret1): 18(ptr) Variable Function 49(aux1): 33(ptr) Variable Function 54(ret2): 18(ptr) Variable Function 59(aux2): 33(ptr) Variable Function 63(ret3): 18(ptr) Variable Function 71(aux3): 33(ptr) Variable Function 15: 7(fvec4) Load 14(a_position) 17: 16(ptr) AccessChain 10 12 Store 17 15 24: 21 Load 23(u_sampler) 28: 25(fvec2) Load 27(a_in0) 32: 29(ivec2) Load 31(offsetValue) 37: 36(ResType) ImageSparseSampleExplicitLod 24 28 Lod Offset 35 32 38: 7(fvec4) CompositeExtract 37 1 Store 34(aux0) 38 39: 11(int) CompositeExtract 37 0 Store 19(ret0) 39 41: 21 Load 23(u_sampler) 42: 25(fvec2) Load 27(a_in0) 43: 29(ivec2) ConvertFToS 42 46: 6(float) Load 45(a_in1) 47: 11(int) ConvertFToS 46 48: 29(ivec2) Load 31(offsetValue) 50: 20 Image 41 51: 36(ResType) ImageSparseFetch 50 43 Lod Offset 47 48 52: 7(fvec4) CompositeExtract 51 1 Store 49(aux1) 52 53: 11(int) CompositeExtract 51 0 Store 40(ret1) 53 55: 21 Load 23(u_sampler) 56: 25(fvec2) Load 27(a_in0) 57: 6(float) Load 45(a_in1) 58: 29(ivec2) Load 31(offsetValue) 60: 36(ResType) ImageSparseSampleExplicitLod 55 56 Lod Offset 57 58 61: 7(fvec4) CompositeExtract 60 1 Store 59(aux2) 61 62: 11(int) CompositeExtract 60 0 Store 54(ret2) 62 64: 21 Load 23(u_sampler) 65: 25(fvec2) Load 27(a_in0) 66: 6(float) Load 45(a_in1) 67: 25(fvec2) CompositeConstruct 66 66 68: 6(float) Load 45(a_in1) 69: 25(fvec2) CompositeConstruct 68 68 70: 29(ivec2) Load 31(offsetValue) 72: 36(ResType) ImageSparseSampleExplicitLod 64 65 Grad Offset 67 69 70 73: 7(fvec4) CompositeExtract 72 1 Store 71(aux3) 73 74: 11(int) CompositeExtract 72 0 Store 63(ret3) 74 76: 7(fvec4) Load 34(aux0) 81: 80(ptr) AccessChain 79 12 82: 7(fvec4) Load 81 83: 7(fvec4) FMul 76 82 87: 80(ptr) AccessChain 86 12 88: 7(fvec4) Load 87 89: 7(fvec4) FAdd 83 88 Store 75(v_color0) 89 91: 7(fvec4) Load 49(aux1) 92: 80(ptr) AccessChain 79 12 93: 7(fvec4) Load 92 94: 7(fvec4) FMul 91 93 95: 80(ptr) AccessChain 86 12 96: 7(fvec4) Load 95 97: 7(fvec4) FAdd 94 96 Store 90(v_color1) 97 99: 7(fvec4) Load 59(aux2) 100: 80(ptr) AccessChain 79 12 101: 7(fvec4) Load 100 102: 7(fvec4) FMul 99 101 103: 80(ptr) AccessChain 86 12 104: 7(fvec4) Load 103 105: 7(fvec4) FAdd 102 104 Store 98(v_color2) 105 107: 7(fvec4) Load 71(aux3) 108: 80(ptr) AccessChain 79 12 109: 7(fvec4) Load 108 110: 7(fvec4) FMul 107 109 111: 80(ptr) AccessChain 86 12 112: 7(fvec4) Load 111 113: 7(fvec4) FAdd 110 112 Store 106(v_color3) 113 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.sparsetextureoffset_non_const_fail.vert.out000066400000000000000000000006521506534232700301710ustar00rootroot00000000000000spv.sparsetextureoffset_non_const_fail.vert ERROR: 0:26: 'texel offset' : argument must be compile-time constant ERROR: 0:27: 'texel offset' : argument must be compile-time constant ERROR: 0:28: 'texel offset' : argument must be compile-time constant ERROR: 0:29: 'texel offset' : argument must be compile-time constant ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.specConst.vert.out000066400000000000000000000055501506534232700227340ustar00rootroot00000000000000spv.specConst.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 13 25 26 Source GLSL 450 Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" Name 18 "a" Name 25 "gl_VertexID" Name 26 "gl_InstanceID" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance Decorate 18(a) SpecId 11 Decorate 25(gl_VertexID) BuiltIn VertexId Decorate 26(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16: 6(float) Constant 1065353216 17: 7(fvec4) ConstantComposite 16 16 16 16 18(a): 14(int) SpecConstant 8 22: TypePointer Output 7(fvec4) 24: TypePointer Input 14(int) 25(gl_VertexID): 24(ptr) Variable Input 26(gl_InstanceID): 24(ptr) Variable Input 4(main): 2 Function None 3 5: Label 19: 6(float) ConvertSToF 18(a) 20: 7(fvec4) CompositeConstruct 19 19 19 19 21: 7(fvec4) FDiv 17 20 23: 22(ptr) AccessChain 13 15 Store 23 21 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstArrayCheck.vert.out000066400000000000000000000002641506534232700246660ustar00rootroot00000000000000spv.specConstArrayCheck.vert ERROR: 0:13: '[' : array index out of range '6' ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.specConstant.comp.out000066400000000000000000000044651506534232700234210ustar00rootroot00000000000000spv.specConstant.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 32 32 1 Source GLSL 450 Name 4 "main" Name 7 "bn" MemberName 7(bn) 0 "a" Name 9 "bi" Decorate 7(bn) BufferBlock MemberDecorate 7(bn) 0 Offset 0 Decorate 9(bi) Binding 0 Decorate 9(bi) DescriptorSet 0 Decorate 12 SpecId 18 Decorate 14 SpecId 19 Decorate 16 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7(bn): TypeStruct 6(int) 8: TypePointer Uniform 7(bn) 9(bi): 8(ptr) Variable Uniform 10: TypeInt 32 1 11: 10(int) Constant 0 12: 6(int) SpecConstant 32 13: 6(int) Constant 32 14: 6(int) SpecConstant 1 15: TypeVector 6(int) 3 16: 15(ivec3) SpecConstantComposite 12 13 14 17: 6(int) Constant 0 18: 6(int) SpecConstantOp 81 16 0 19: 6(int) Constant 1 20: 6(int) SpecConstantOp 81 16 1(GLSL.std.450) 21: 6(int) SpecConstantOp 132 18 20 22: 6(int) Constant 2 23: 6(int) SpecConstantOp 81 16 2 24: 6(int) SpecConstantOp 132 21 23 25: TypePointer Uniform 6(int) 4(main): 2 Function None 3 5: Label 26: 25(ptr) AccessChain 9(bi) 11 Store 26 24 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstant.float16.comp.out000066400000000000000000000051431506534232700246660ustar00rootroot00000000000000spv.specConstant.float16.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader Capability Float16 Capability StorageUniformBufferBlock16 Extension "SPV_KHR_16bit_storage" 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_float16" Name 4 "main" Name 7 "Output" MemberName 7(Output) 0 "r0" MemberName 7(Output) 1 "r1" Name 9 "sb_out" Name 12 "sc0" Name 16 "sc1" Decorate 7(Output) BufferBlock MemberDecorate 7(Output) 0 NonReadable MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 2 Decorate 9(sb_out) NonReadable Decorate 9(sb_out) Binding 0 Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 Decorate 16(sc1) SpecId 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7(Output): TypeStruct 6(float16_t) 6(float16_t) 8: TypePointer Uniform 7(Output) 9(sb_out): 8(ptr) Variable Uniform 10: TypeInt 32 1 11: 10(int) Constant 0 12(sc0):6(float16_t) SpecConstant 18624 13: TypePointer Uniform 6(float16_t) 15: 10(int) Constant 1 16(sc1):6(float16_t) SpecConstant 52000 4(main): 2 Function None 3 5: Label 14: 13(ptr) AccessChain 9(sb_out) 11 Store 14 12(sc0) 17: 13(ptr) AccessChain 9(sb_out) 15 Store 17 16(sc1) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstant.int16.comp.out000066400000000000000000000051341506534232700243530ustar00rootroot00000000000000spv.specConstant.int16.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader Capability Int16 Capability StorageUniformBufferBlock16 Extension "SPV_KHR_16bit_storage" 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_int16" Name 4 "main" Name 7 "Output" MemberName 7(Output) 0 "r0" MemberName 7(Output) 1 "r1" Name 9 "sb_out" Name 12 "sc0" Name 16 "sc1" Decorate 7(Output) BufferBlock MemberDecorate 7(Output) 0 NonReadable MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 2 Decorate 9(sb_out) NonReadable Decorate 9(sb_out) Binding 0 Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 Decorate 16(sc1) SpecId 2 2: TypeVoid 3: TypeFunction 2 6: TypeInt 16 1 7(Output): TypeStruct 6(int16_t) 6(int16_t) 8: TypePointer Uniform 7(Output) 9(sb_out): 8(ptr) Variable Uniform 10: TypeInt 32 1 11: 10(int) Constant 0 12(sc0): 6(int16_t) SpecConstant 20000 13: TypePointer Uniform 6(int16_t) 15: 10(int) Constant 1 16(sc1): 6(int16_t) SpecConstant 4294947296 4(main): 2 Function None 3 5: Label 14: 13(ptr) AccessChain 9(sb_out) 11 Store 14 12(sc0) 17: 13(ptr) AccessChain 9(sb_out) 15 Store 17 16(sc1) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstant.int8.comp.out000066400000000000000000000051301506534232700242700ustar00rootroot00000000000000spv.specConstant.int8.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader Capability Int8 Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 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_int8" Name 4 "main" Name 7 "Output" MemberName 7(Output) 0 "r0" MemberName 7(Output) 1 "r1" Name 9 "sb_out" Name 12 "sc0" Name 16 "sc1" Decorate 7(Output) BufferBlock MemberDecorate 7(Output) 0 NonReadable MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 1 Decorate 9(sb_out) NonReadable Decorate 9(sb_out) Binding 0 Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 Decorate 16(sc1) SpecId 2 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 7(Output): TypeStruct 6(int8_t) 6(int8_t) 8: TypePointer Uniform 7(Output) 9(sb_out): 8(ptr) Variable Uniform 10: TypeInt 32 1 11: 10(int) Constant 0 12(sc0): 6(int8_t) SpecConstant 127 13: TypePointer Uniform 6(int8_t) 15: 10(int) Constant 1 16(sc1): 6(int8_t) SpecConstant 4294967169 4(main): 2 Function None 3 5: Label 14: 13(ptr) AccessChain 9(sb_out) 11 Store 14 12(sc0) 17: 13(ptr) AccessChain 9(sb_out) 15 Store 17 16(sc1) Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstant.vert.out000066400000000000000000000162101506534232700234320ustar00rootroot00000000000000spv.specConstant.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 81 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 20 22 28 53 Source GLSL 400 Name 4 "main" Name 9 "arraySize" Name 14 "foo(vf4[s216172782];" Name 13 "p" Name 17 "builtin_spec_constant(" Name 20 "color" Name 22 "ucol" Name 28 "size" Name 30 "spBool" Name 34 "scale" Name 39 "spDouble" Name 40 "spFloat" Name 47 "param" Name 50 "dupArraySize" Name 53 "dupUcol" Name 60 "spDupBool" Name 63 "dupScale" Name 67 "spDupDouble" Name 68 "spDupFloat" Name 76 "result" Name 77 "gl_MaxImageUnits" Decorate 9(arraySize) SpecId 16 Decorate 20(color) Location 0 Decorate 22(ucol) Location 0 Decorate 28(size) Location 1 Decorate 30(spBool) SpecId 17 Decorate 34(scale) SpecId 22 Decorate 39(spDouble) SpecId 19 Decorate 40(spFloat) SpecId 18 Decorate 50(dupArraySize) SpecId 116 Decorate 53(dupUcol) Location 5 Decorate 60(spDupBool) SpecId 117 Decorate 63(dupScale) SpecId 122 Decorate 67(spDupDouble) SpecId 119 Decorate 68(spDupFloat) SpecId 118 Decorate 77(gl_MaxImageUnits) SpecId 24 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 1 9(arraySize): 8(int) SpecConstant 5 10: TypeArray 7(fvec4) 9(arraySize) 11: TypePointer Function 10 12: TypeFunction 2 11(ptr) 16: TypeFunction 8(int) 19: TypePointer Output 7(fvec4) 20(color): 19(ptr) Variable Output 21: TypePointer Input 10 22(ucol): 21(ptr) Variable Input 23: 8(int) Constant 2 24: TypePointer Input 7(fvec4) 27: TypePointer Output 8(int) 28(size): 27(ptr) Variable Output 29: TypeBool 30(spBool): 29(bool) SpecConstantTrue 33: TypeInt 32 0 34(scale): 33(int) SpecConstant 2 38: TypeFloat 64 39(spDouble):38(float64_t) SpecConstant 1413754136 1074340347 40(spFloat): 6(float) SpecConstant 1078523331 41:38(float64_t) SpecConstantOp 115 40(spFloat) 50(dupArraySize): 8(int) SpecConstant 12 51: TypeArray 7(fvec4) 50(dupArraySize) 52: TypePointer Input 51 53(dupUcol): 52(ptr) Variable Input 60(spDupBool): 29(bool) SpecConstantTrue 63(dupScale): 33(int) SpecConstant 2 67(spDupDouble):38(float64_t) SpecConstant 1413754136 1074340347 68(spDupFloat): 6(float) SpecConstant 1078523331 69:38(float64_t) SpecConstantOp 115 68(spDupFloat) 75: TypePointer Function 8(int) 77(gl_MaxImageUnits): 8(int) SpecConstant 8 4(main): 2 Function None 3 5: Label 47(param): 11(ptr) Variable Function 25: 24(ptr) AccessChain 22(ucol) 23 26: 7(fvec4) Load 25 Store 20(color) 26 Store 28(size) 9(arraySize) SelectionMerge 32 None BranchConditional 30(spBool) 31 32 31: Label 35: 6(float) ConvertUToF 34(scale) 36: 7(fvec4) Load 20(color) 37: 7(fvec4) VectorTimesScalar 36 35 Store 20(color) 37 Branch 32 32: Label 42:38(float64_t) FDiv 39(spDouble) 41 43: 6(float) FConvert 42 44: 7(fvec4) Load 20(color) 45: 7(fvec4) CompositeConstruct 43 43 43 43 46: 7(fvec4) FAdd 44 45 Store 20(color) 46 48: 10 Load 22(ucol) Store 47(param) 48 49: 2 FunctionCall 14(foo(vf4[s216172782];) 47(param) Return FunctionEnd 14(foo(vf4[s216172782];): 2 Function None 12 13(p): 11(ptr) FunctionParameter 15: Label 54: 24(ptr) AccessChain 53(dupUcol) 23 55: 7(fvec4) Load 54 56: 7(fvec4) Load 20(color) 57: 7(fvec4) FAdd 56 55 Store 20(color) 57 58: 8(int) Load 28(size) 59: 8(int) IAdd 58 50(dupArraySize) Store 28(size) 59 SelectionMerge 62 None BranchConditional 60(spDupBool) 61 62 61: Label 64: 6(float) ConvertUToF 63(dupScale) 65: 7(fvec4) Load 20(color) 66: 7(fvec4) VectorTimesScalar 65 64 Store 20(color) 66 Branch 62 62: Label 70:38(float64_t) FDiv 67(spDupDouble) 69 71: 6(float) FConvert 70 72: 7(fvec4) Load 20(color) 73: 7(fvec4) CompositeConstruct 71 71 71 71 74: 7(fvec4) FAdd 72 73 Store 20(color) 74 Return FunctionEnd 17(builtin_spec_constant(): 8(int) Function None 16 18: Label 76(result): 75(ptr) Variable Function Store 76(result) 77(gl_MaxImageUnits) 78: 8(int) Load 76(result) ReturnValue 78 FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstantComposite.vert.out000066400000000000000000000105341506534232700253200ustar00rootroot00000000000000spv.specConstantComposite.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 27 42 Source GLSL 450 Name 4 "main" Name 6 "refer_primary_spec_const(" Name 8 "refer_composite_spec_const(" Name 10 "refer_copmosite_dot_dereference(" Name 12 "refer_composite_bracket_dereference(" Name 16 "refer_spec_const_array_length(" Name 18 "declare_spec_const_in_func(" Name 21 "spec_bool" Name 27 "color" Name 28 "spec_int" Name 33 "len" Name 37 "spec_float" Name 39 "spec_double" Name 42 "global_vec4_array_with_spec_length" Decorate 21(spec_bool) SpecId 203 Decorate 27(color) Location 0 Decorate 28(spec_int) SpecId 200 Decorate 37(spec_float) SpecId 201 Decorate 39(spec_double) SpecId 202 Decorate 42(global_vec4_array_with_spec_length) Location 0 2: TypeVoid 3: TypeFunction 2 14: TypeInt 32 1 15: TypeFunction 14(int) 20: TypeBool 21(spec_bool): 20(bool) SpecConstantTrue 24: TypeFloat 32 25: TypeVector 24(float) 4 26: TypePointer Output 25(fvec4) 27(color): 26(ptr) Variable Output 28(spec_int): 14(int) SpecConstant 3 32: TypePointer Function 14(int) 37(spec_float): 24(float) SpecConstant 1078523331 38: TypeFloat 64 39(spec_double):38(float64_t) SpecConstant 1413754136 1074340347 40: TypeArray 25(fvec4) 28(spec_int) 41: TypePointer Input 40 42(global_vec4_array_with_spec_length): 41(ptr) Variable Input 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(refer_primary_spec_const(): 2 Function None 3 7: Label SelectionMerge 23 None BranchConditional 21(spec_bool) 22 23 22: Label 29: 24(float) ConvertSToF 28(spec_int) 30: 25(fvec4) Load 27(color) 31: 25(fvec4) VectorTimesScalar 30 29 Store 27(color) 31 Branch 23 23: Label Return FunctionEnd 8(refer_composite_spec_const(): 2 Function None 3 9: Label Return FunctionEnd 10(refer_copmosite_dot_dereference(): 2 Function None 3 11: Label Return FunctionEnd 12(refer_composite_bracket_dereference(): 2 Function None 3 13: Label Return FunctionEnd 16(refer_spec_const_array_length(): 14(int) Function None 15 17: Label 33(len): 32(ptr) Variable Function Store 33(len) 28(spec_int) 34: 14(int) Load 33(len) ReturnValue 34 FunctionEnd 18(declare_spec_const_in_func(): 2 Function None 3 19: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstantComposite2.vert.out000066400000000000000000000105351506534232700254030ustar00rootroot00000000000000spv.specConstantComposite2.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 27 42 Source GLSL 450 Name 4 "main" Name 6 "refer_primary_spec_const(" Name 8 "refer_composite_spec_const(" Name 10 "refer_copmosite_dot_dereference(" Name 12 "refer_composite_bracket_dereference(" Name 16 "refer_spec_const_array_length(" Name 18 "declare_spec_const_in_func(" Name 21 "spec_bool" Name 27 "color" Name 28 "spec_int" Name 33 "len" Name 37 "spec_float" Name 39 "spec_double" Name 42 "global_vec4_array_with_spec_length" Decorate 21(spec_bool) SpecId 203 Decorate 27(color) Location 0 Decorate 28(spec_int) SpecId 200 Decorate 37(spec_float) SpecId 201 Decorate 39(spec_double) SpecId 202 Decorate 42(global_vec4_array_with_spec_length) Location 0 2: TypeVoid 3: TypeFunction 2 14: TypeInt 32 1 15: TypeFunction 14(int) 20: TypeBool 21(spec_bool): 20(bool) SpecConstantTrue 24: TypeFloat 32 25: TypeVector 24(float) 4 26: TypePointer Output 25(fvec4) 27(color): 26(ptr) Variable Output 28(spec_int): 14(int) SpecConstant 3 32: TypePointer Function 14(int) 37(spec_float): 24(float) SpecConstant 1078523331 38: TypeFloat 64 39(spec_double):38(float64_t) SpecConstant 1413754136 1074340347 40: TypeArray 25(fvec4) 28(spec_int) 41: TypePointer Input 40 42(global_vec4_array_with_spec_length): 41(ptr) Variable Input 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(refer_primary_spec_const(): 2 Function None 3 7: Label SelectionMerge 23 None BranchConditional 21(spec_bool) 22 23 22: Label 29: 24(float) ConvertSToF 28(spec_int) 30: 25(fvec4) Load 27(color) 31: 25(fvec4) VectorTimesScalar 30 29 Store 27(color) 31 Branch 23 23: Label Return FunctionEnd 8(refer_composite_spec_const(): 2 Function None 3 9: Label Return FunctionEnd 10(refer_copmosite_dot_dereference(): 2 Function None 3 11: Label Return FunctionEnd 12(refer_composite_bracket_dereference(): 2 Function None 3 13: Label Return FunctionEnd 16(refer_spec_const_array_length(): 14(int) Function None 15 17: Label 33(len): 32(ptr) Variable Function Store 33(len) 28(spec_int) 34: 14(int) Load 33(len) ReturnValue 34 FunctionEnd 18(declare_spec_const_in_func(): 2 Function None 3 19: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstantOp.float16.comp.out000066400000000000000000000045561506534232700251740ustar00rootroot00000000000000spv.specConstantOp.float16.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader Capability Float16 Capability StorageUniformBufferBlock16 Extension "SPV_KHR_16bit_storage" 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_float16" Name 4 "main" Name 8 "S" MemberName 8(S) 0 "p_out" Name 10 "" Name 14 "c" Decorate 7 ArrayStride 2 Decorate 8(S) BufferBlock MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 Decorate 10 Restrict Decorate 10 NonReadable Decorate 10 Binding 0 Decorate 10 DescriptorSet 0 Decorate 14(c) SpecId 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 7: TypeRuntimeArray 6(float16_t) 8(S): TypeStruct 7 9: TypePointer Uniform 8(S) 10: 9(ptr) Variable Uniform 11: TypeInt 32 1 12: 11(int) Constant 0 13: TypeFloat 32 14(c): 13(float) SpecConstant 1090519040 15:6(float16_t) SpecConstantOp 115 14(c) 16: TypePointer Uniform 6(float16_t) 4(main): 2 Function None 3 5: Label 17: 16(ptr) AccessChain 10 12 12 Store 17 15 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstantOp.int16.comp.out000066400000000000000000000046731506534232700246610ustar00rootroot00000000000000spv.specConstantOp.int16.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader Capability Int16 Capability StorageUniformBufferBlock16 Extension "SPV_KHR_16bit_storage" 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_int16" Name 4 "main" Name 8 "S" MemberName 8(S) 0 "p_out" Name 10 "" Name 13 "c" Decorate 7 ArrayStride 2 Decorate 8(S) BufferBlock MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 Decorate 10 Restrict Decorate 10 NonReadable Decorate 10 Binding 0 Decorate 10 DescriptorSet 0 Decorate 13(c) SpecId 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 16 0 7: TypeRuntimeArray 6(int16_t) 8(S): TypeStruct 7 9: TypePointer Uniform 8(S) 10: 9(ptr) Variable Uniform 11: TypeInt 32 1 12: 11(int) Constant 0 13(c): 11(int) SpecConstant 8 14: TypeInt 16 1 15: 14(int16_t) SpecConstantOp 114 13(c) 16: 6(int16_t) Constant 0 17: 6(int16_t) SpecConstantOp 128 15 16 18: TypePointer Uniform 6(int16_t) 4(main): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 10 12 12 Store 19 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstantOp.int8.comp.out000066400000000000000000000046711506534232700246000ustar00rootroot00000000000000spv.specConstantOp.int8.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader Capability Int8 Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 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_int8" Name 4 "main" Name 8 "S" MemberName 8(S) 0 "p_out" Name 10 "" Name 13 "c" Decorate 7 ArrayStride 1 Decorate 8(S) BufferBlock MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 Decorate 10 Restrict Decorate 10 NonReadable Decorate 10 Binding 0 Decorate 10 DescriptorSet 0 Decorate 13(c) SpecId 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 0 7: TypeRuntimeArray 6(int8_t) 8(S): TypeStruct 7 9: TypePointer Uniform 8(S) 10: 9(ptr) Variable Uniform 11: TypeInt 32 1 12: 11(int) Constant 0 13(c): 11(int) SpecConstant 8 14: TypeInt 8 1 15: 14(int8_t) SpecConstantOp 114 13(c) 16: 6(int8_t) Constant 0 17: 6(int8_t) SpecConstantOp 128 15 16 18: TypePointer Uniform 6(int8_t) 4(main): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 10 12 12 Store 19 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.specConstantOperations.vert.out000066400000000000000000000340141506534232700255000ustar00rootroot00000000000000spv.specConstantOperations.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 162 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source GLSL 450 Name 4 "main" Name 8 "non_const_array_size_from_spec_const(" Name 11 "i" Name 19 "sp_int" Name 27 "array" Name 40 "sp_float" Name 42 "sp_uint" Name 43 "sp_sint" Name 45 "sp_double" Name 46 "float_from_double" Name 47 "double_from_float" Name 49 "bool_from_int" Name 50 "bool_from_uint" Name 51 "int_from_bool" Name 53 "uint_from_bool" Name 54 "sp_uint_from_sint" Name 55 "sp_sint_from_uint" Name 56 "negate_int" Name 57 "not_int" Name 58 "sp_int_add_two" Name 61 "sp_int_add_two_sub_three" Name 63 "sp_int_add_two_sub_four" Name 64 "sp_sint_mul_two" Name 66 "sp_uint_mul_two" Name 68 "sp_sint_mul_two_div_five" Name 70 "sp_uint_mul_two_div_five" Name 71 "sp_sint_rem_four" Name 73 "sp_uint_rem_four" Name 75 "sp_sint_mul_three_div_five" Name 77 "sp_sint_shift_right_arithmetic" Name 79 "sp_uint_shift_right_arithmetic" Name 80 "sp_sint_shift_left" Name 81 "sp_uint_shift_left" Name 83 "sp_sint_or_256" Name 85 "sp_uint_xor_512" Name 86 "sp_int_lt_sp_sint" Name 87 "sp_uint_equal_sp_uint" Name 88 "sp_int_gt_sp_sint" Name 91 "iv" Name 95 "uv" Name 98 "bv_from_iv" Name 99 "bv_from_uv" Name 102 "iv_from_bv" Name 104 "uv_from_bv" Name 105 "uv_from_iv" Name 106 "iv_from_uv" Name 107 "not_iv" Name 108 "negate_iv" Name 110 "iv_add_two" Name 113 "iv_add_two_sub_three" Name 115 "iv_add_two_sub_four" Name 116 "iv_mul_two" Name 118 "iv_mul_two_div_five" Name 119 "iv_rem_four" Name 121 "iv_shift_right_arithmetic" Name 122 "iv_shift_left" Name 125 "iv_or_1024" Name 128 "uv_xor_2048" Name 129 "iv_x" Name 131 "iv_yx" Name 133 "iv_zyx" Name 134 "iv_yzxw" Name 135 "a" Name 136 "b" Name 137 "c" Name 142 "ternayArray1" Name 145 "t1" Name 146 "t2" Name 148 "t3" Name 152 "t4" Name 161 "v2" Decorate 19(sp_int) SpecId 201 Decorate 40(sp_float) SpecId 200 Decorate 42(sp_uint) SpecId 202 Decorate 43(sp_sint) SpecId 203 Decorate 45(sp_double) SpecId 204 Decorate 135(a) SpecId 210 Decorate 136(b) SpecId 211 Decorate 137(c) SpecId 212 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFunction 6(int) 10: TypePointer Function 6(int) 12: 6(int) Constant 0 19(sp_int): 6(int) SpecConstant 10 20: 6(int) Constant 2 21: 6(int) SpecConstantOp 128 19(sp_int) 20 22: TypeBool 24: 6(int) SpecConstantOp 128 19(sp_int) 20 25: TypeArray 6(int) 24 26: TypePointer Function 25 29: 6(int) Constant 1023 32: 6(int) Constant 1 34: 6(int) SpecConstantOp 128 19(sp_int) 32 39: TypeFloat 32 40(sp_float): 39(float) SpecConstant 1078530010 41: TypeInt 32 0 42(sp_uint): 41(int) SpecConstant 100 43(sp_sint): 6(int) SpecConstant 4294967286 44: TypeFloat 64 45(sp_double):44(float64_t) SpecConstant 2333366019 1074118410 46(float_from_double): 39(float) SpecConstantOp 115 45(sp_double) 47(double_from_float):44(float64_t) SpecConstantOp 115 40(sp_float) 48: 41(int) Constant 0 49(bool_from_int): 22(bool) SpecConstantOp 171 19(sp_int) 48 50(bool_from_uint): 22(bool) SpecConstantOp 171 42(sp_uint) 48 51(int_from_bool): 6(int) SpecConstantOp 169 49(bool_from_int) 32 12 52: 41(int) Constant 1 53(uint_from_bool): 41(int) SpecConstantOp 169 49(bool_from_int) 52 48 54(sp_uint_from_sint): 41(int) SpecConstantOp 128 43(sp_sint) 48 55(sp_sint_from_uint): 6(int) SpecConstantOp 128 42(sp_uint) 48 56(negate_int): 6(int) SpecConstantOp 126 19(sp_int) 57(not_int): 6(int) SpecConstantOp 200 19(sp_int) 58(sp_int_add_two): 6(int) SpecConstantOp 128 19(sp_int) 20 59: 6(int) SpecConstantOp 128 19(sp_int) 20 60: 6(int) Constant 3 61(sp_int_add_two_sub_three): 6(int) SpecConstantOp 130 59 60 62: 6(int) Constant 4 63(sp_int_add_two_sub_four): 6(int) SpecConstantOp 130 58(sp_int_add_two) 62 64(sp_sint_mul_two): 6(int) SpecConstantOp 132 43(sp_sint) 20 65: 41(int) Constant 2 66(sp_uint_mul_two): 41(int) SpecConstantOp 132 42(sp_uint) 65 67: 6(int) Constant 5 68(sp_sint_mul_two_div_five): 6(int) SpecConstantOp 135 64(sp_sint_mul_two) 67 69: 41(int) Constant 5 70(sp_uint_mul_two_div_five): 41(int) SpecConstantOp 134 66(sp_uint_mul_two) 69 71(sp_sint_rem_four): 6(int) SpecConstantOp 139 43(sp_sint) 62 72: 41(int) Constant 4 73(sp_uint_rem_four): 41(int) SpecConstantOp 137 42(sp_uint) 72 74: 6(int) SpecConstantOp 132 43(sp_sint) 60 75(sp_sint_mul_three_div_five): 6(int) SpecConstantOp 135 74 67 76: 6(int) Constant 10 77(sp_sint_shift_right_arithmetic): 6(int) SpecConstantOp 195 43(sp_sint) 76 78: 6(int) Constant 20 79(sp_uint_shift_right_arithmetic): 41(int) SpecConstantOp 194 42(sp_uint) 78 80(sp_sint_shift_left): 6(int) SpecConstantOp 196 43(sp_sint) 32 81(sp_uint_shift_left): 41(int) SpecConstantOp 196 42(sp_uint) 20 82: 6(int) Constant 256 83(sp_sint_or_256): 6(int) SpecConstantOp 197 43(sp_sint) 82 84: 41(int) Constant 512 85(sp_uint_xor_512): 41(int) SpecConstantOp 198 42(sp_uint) 84 86(sp_int_lt_sp_sint): 22(bool) SpecConstantOp 177 19(sp_int) 43(sp_sint) 87(sp_uint_equal_sp_uint): 22(bool) SpecConstantOp 170 42(sp_uint) 42(sp_uint) 88(sp_int_gt_sp_sint): 22(bool) SpecConstantOp 173 19(sp_int) 43(sp_sint) 89: 6(int) Constant 30 90: TypeVector 6(int) 4 91(iv): 90(ivec4) SpecConstantComposite 78 89 19(sp_int) 19(sp_int) 92: 41(int) Constant 4294967295 93: 41(int) Constant 4294967294 94: TypeVector 41(int) 4 95(uv): 94(ivec4) SpecConstantComposite 42(sp_uint) 42(sp_uint) 92 93 96: TypeVector 22(bool) 4 97: 94(ivec4) ConstantComposite 48 48 48 48 98(bv_from_iv): 96(bvec4) SpecConstantOp 171 91(iv) 97 99(bv_from_uv): 96(bvec4) SpecConstantOp 171 95(uv) 97 100: 90(ivec4) ConstantComposite 12 12 12 12 101: 90(ivec4) ConstantComposite 32 32 32 32 102(iv_from_bv): 90(ivec4) SpecConstantOp 169 98(bv_from_iv) 101 100 103: 94(ivec4) ConstantComposite 52 52 52 52 104(uv_from_bv): 94(ivec4) SpecConstantOp 169 98(bv_from_iv) 103 97 105(uv_from_iv): 94(ivec4) SpecConstantOp 128 91(iv) 97 106(iv_from_uv): 90(ivec4) SpecConstantOp 128 95(uv) 97 107(not_iv): 90(ivec4) SpecConstantOp 200 91(iv) 108(negate_iv): 90(ivec4) SpecConstantOp 126 91(iv) 109: 90(ivec4) ConstantComposite 20 20 20 20 110(iv_add_two): 90(ivec4) SpecConstantOp 128 91(iv) 109 111: 90(ivec4) SpecConstantOp 128 91(iv) 109 112: 90(ivec4) ConstantComposite 60 60 60 60 113(iv_add_two_sub_three): 90(ivec4) SpecConstantOp 130 111 112 114: 90(ivec4) ConstantComposite 62 62 62 62 115(iv_add_two_sub_four): 90(ivec4) SpecConstantOp 130 113(iv_add_two_sub_three) 114 116(iv_mul_two): 90(ivec4) SpecConstantOp 132 91(iv) 109 117: 90(ivec4) ConstantComposite 67 67 67 67 118(iv_mul_two_div_five): 90(ivec4) SpecConstantOp 135 116(iv_mul_two) 117 119(iv_rem_four): 90(ivec4) SpecConstantOp 139 91(iv) 114 120: 90(ivec4) ConstantComposite 76 76 76 76 121(iv_shift_right_arithmetic): 90(ivec4) SpecConstantOp 195 91(iv) 120 122(iv_shift_left): 90(ivec4) SpecConstantOp 196 91(iv) 109 123: 6(int) Constant 1024 124: 90(ivec4) ConstantComposite 123 123 123 123 125(iv_or_1024): 90(ivec4) SpecConstantOp 197 91(iv) 124 126: 41(int) Constant 2048 127: 94(ivec4) ConstantComposite 126 126 126 126 128(uv_xor_2048): 94(ivec4) SpecConstantOp 198 95(uv) 127 129(iv_x): 6(int) SpecConstantOp 81 91(iv) 0 130: TypeVector 6(int) 2 131(iv_yx): 130(ivec2) SpecConstantOp 79 91(iv) 91(iv) 1(GLSL.std.450) 0 132: TypeVector 6(int) 3 133(iv_zyx): 132(ivec3) SpecConstantOp 79 91(iv) 91(iv) 2 1(GLSL.std.450) 0 134(iv_yzxw): 90(ivec4) SpecConstantOp 79 91(iv) 91(iv) 1(GLSL.std.450) 2 0 3 135(a): 6(int) SpecConstant 4 136(b): 6(int) SpecConstant 6 137(c): 22(bool) SpecConstantTrue 138: 22(bool) SpecConstantOp 173 135(a) 136(b) 139: 6(int) SpecConstantOp 169 138 135(a) 136(b) 140: TypeArray 6(int) 139 141: TypePointer Private 140 142(ternayArray1): 141(ptr) Variable Private 143: 6(int) Constant 13 144: 6(int) Constant 17 145(t1): 6(int) SpecConstantOp 169 137(c) 143 144 146(t2): 6(int) SpecConstantOp 169 137(c) 135(a) 144 147: 22(bool) ConstantTrue 148(t3): 6(int) SpecConstantOp 169 147 135(a) 144 149: 22(bool) SpecConstantOp 173 135(a) 136(b) 150: 6(int) SpecConstantOp 128 143 135(a) 151: 6(int) SpecConstantOp 132 144 136(b) 152(t4): 6(int) SpecConstantOp 169 149 150 151 153: 22(bool) SpecConstantOp 168 137(c) 154: TypeVector 39(float) 2 155: 39(float) Constant 1065353216 156: 154(fvec2) ConstantComposite 155 155 157: 39(float) Constant 1073741824 158: 154(fvec2) ConstantComposite 157 157 159: TypeVector 22(bool) 2 160: 159(bvec2) SpecConstantComposite 153 153 161(v2): 154(fvec2) SpecConstantOp 169 160 156 158 4(main): 2 Function None 3 5: Label Return FunctionEnd 8(non_const_array_size_from_spec_const(): 6(int) Function None 7 9: Label 11(i): 10(ptr) Variable Function 27(array): 26(ptr) Variable Function Store 11(i) 12 Branch 13 13: Label LoopMerge 15 16 None Branch 17 17: Label 18: 6(int) Load 11(i) 23: 22(bool) SLessThan 18 21 BranchConditional 23 14 15 14: Label 28: 6(int) Load 11(i) 30: 10(ptr) AccessChain 27(array) 28 Store 30 29 Branch 16 16: Label 31: 6(int) Load 11(i) 33: 6(int) IAdd 31 32 Store 11(i) 33 Branch 13 15: Label 35: 10(ptr) AccessChain 27(array) 34 36: 6(int) Load 35 ReturnValue 36 FunctionEnd glslang-16.0.0/Test/baseResults/spv.specTexture.frag.out000066400000000000000000000041411506534232700232400ustar00rootroot00000000000000spv.specTexture.frag // 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 ExecutionMode 4 OriginLowerLeft Source GLSL 450 Name 4 "main" Name 9 "color_out" Name 13 "tex" Name 19 "offs" Decorate 9(color_out) Location 0 Decorate 13(tex) Location 0 Decorate 13(tex) Binding 0 Decorate 13(tex) DescriptorSet 0 Decorate 19(offs) SpecId 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(color_out): 8(ptr) Variable Output 10: TypeImage 6(float) 2D sampled format:Unknown 11: TypeSampledImage 10 12: TypePointer UniformConstant 11 13(tex): 12(ptr) Variable UniformConstant 15: TypeVector 6(float) 2 16: 6(float) Constant 0 17: 15(fvec2) ConstantComposite 16 16 18: TypeInt 32 1 19(offs): 18(int) SpecConstant 0 20: TypeVector 18(int) 2 21: 20(ivec2) SpecConstantComposite 19(offs) 19(offs) 4(main): 2 Function None 3 5: Label 14: 11 Load 13(tex) 22: 7(fvec4) ImageSampleExplicitLod 14 17 Lod ConstOffset 16 21 Store 9(color_out) 22 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.ssbo.autoassign.frag.out000066400000000000000000000167731506534232700240650ustar00rootroot00000000000000spv.ssbo.autoassign.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 99 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 92 95 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 11 "@main(vf4;" Name 10 "pos" Name 13 "vTmp" Name 14 "BufType" MemberName 14(BufType) 0 "va" MemberName 14(BufType) 1 "vb" Name 16 "SB0" MemberName 16(SB0) 0 "@data" Name 18 "SB0" Name 26 "TestCB" MemberName 26(TestCB) 0 "W" MemberName 26(TestCB) 1 "H" Name 28 "" Name 57 "SB1" MemberName 57(SB1) 0 "@data" Name 59 "SB1" Name 90 "pos" Name 92 "pos" Name 95 "@entryPointOutput" Name 96 "param" MemberDecorate 14(BufType) 0 Offset 0 MemberDecorate 14(BufType) 1 Offset 16 Decorate 15 ArrayStride 32 Decorate 16(SB0) BufferBlock MemberDecorate 16(SB0) 0 NonWritable MemberDecorate 16(SB0) 0 Offset 0 Decorate 18(SB0) NonWritable Decorate 18(SB0) Binding 30 Decorate 18(SB0) DescriptorSet 0 Decorate 26(TestCB) Block MemberDecorate 26(TestCB) 0 Offset 0 MemberDecorate 26(TestCB) 1 Offset 4 Decorate 28 Binding 15 Decorate 28 DescriptorSet 0 Decorate 56 ArrayStride 32 Decorate 57(SB1) BufferBlock MemberDecorate 57(SB1) 0 Offset 0 Decorate 59(SB1) Binding 31 Decorate 59(SB1) DescriptorSet 0 Decorate 92(pos) Location 0 Decorate 95(@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(BufType): TypeStruct 7(fvec4) 7(fvec4) 15: TypeRuntimeArray 14(BufType) 16(SB0): TypeStruct 15 17: TypePointer Uniform 16(SB0) 18(SB0): 17(ptr) Variable Uniform 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypeInt 32 0 22: 21(int) Constant 1 23: TypePointer Function 6(float) 26(TestCB): TypeStruct 21(int) 21(int) 27: TypePointer Uniform 26(TestCB) 28: 27(ptr) Variable Uniform 29: TypePointer Uniform 21(int) 34: 21(int) Constant 0 39: TypePointer Uniform 7(fvec4) 52: 19(int) Constant 1 56: TypeRuntimeArray 14(BufType) 57(SB1): TypeStruct 56 58: TypePointer Uniform 57(SB1) 59(SB1): 58(ptr) Variable Uniform 91: TypePointer Input 7(fvec4) 92(pos): 91(ptr) Variable Input 94: TypePointer Output 7(fvec4) 95(@entryPointOutput): 94(ptr) Variable Output 4(main): 2 Function None 3 5: Label 90(pos): 8(ptr) Variable Function 96(param): 8(ptr) Variable Function 93: 7(fvec4) Load 92(pos) Store 90(pos) 93 97: 7(fvec4) Load 90(pos) Store 96(param) 97 98: 7(fvec4) FunctionCall 11(@main(vf4;) 96(param) Store 95(@entryPointOutput) 98 Return FunctionEnd 11(@main(vf4;): 7(fvec4) Function None 9 10(pos): 8(ptr) FunctionParameter 12: Label 13(vTmp): 8(ptr) Variable Function 24: 23(ptr) AccessChain 10(pos) 22 25: 6(float) Load 24 30: 29(ptr) AccessChain 28 20 31: 21(int) Load 30 32: 6(float) ConvertUToF 31 33: 6(float) FMul 25 32 35: 23(ptr) AccessChain 10(pos) 34 36: 6(float) Load 35 37: 6(float) FAdd 33 36 38: 21(int) ConvertFToU 37 40: 39(ptr) AccessChain 18(SB0) 20 38 20 41: 7(fvec4) Load 40 42: 23(ptr) AccessChain 10(pos) 22 43: 6(float) Load 42 44: 29(ptr) AccessChain 28 20 45: 21(int) Load 44 46: 6(float) ConvertUToF 45 47: 6(float) FMul 43 46 48: 23(ptr) AccessChain 10(pos) 34 49: 6(float) Load 48 50: 6(float) FAdd 47 49 51: 21(int) ConvertFToU 50 53: 39(ptr) AccessChain 18(SB0) 20 51 52 54: 7(fvec4) Load 53 55: 7(fvec4) FAdd 41 54 Store 13(vTmp) 55 60: 23(ptr) AccessChain 10(pos) 22 61: 6(float) Load 60 62: 29(ptr) AccessChain 28 20 63: 21(int) Load 62 64: 6(float) ConvertUToF 63 65: 6(float) FMul 61 64 66: 23(ptr) AccessChain 10(pos) 34 67: 6(float) Load 66 68: 6(float) FAdd 65 67 69: 21(int) ConvertFToU 68 70: 39(ptr) AccessChain 59(SB1) 20 69 20 71: 7(fvec4) Load 70 72: 23(ptr) AccessChain 10(pos) 22 73: 6(float) Load 72 74: 29(ptr) AccessChain 28 20 75: 21(int) Load 74 76: 6(float) ConvertUToF 75 77: 6(float) FMul 73 76 78: 23(ptr) AccessChain 10(pos) 34 79: 6(float) Load 78 80: 6(float) FAdd 77 79 81: 21(int) ConvertFToU 80 82: 39(ptr) AccessChain 59(SB1) 20 81 52 83: 7(fvec4) Load 82 84: 7(fvec4) FAdd 71 83 85: 7(fvec4) Load 13(vTmp) 86: 7(fvec4) FAdd 85 84 Store 13(vTmp) 86 87: 7(fvec4) Load 13(vTmp) ReturnValue 87 FunctionEnd glslang-16.0.0/Test/baseResults/spv.ssboAlias.frag.out000066400000000000000000000104201506534232700226420ustar00rootroot00000000000000spv.ssboAlias.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 41 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "@main(" Name 13 "Buf1" MemberName 13(Buf1) 0 "@data" Name 15 "Buf1" Name 18 "Buf1@count" MemberName 18(Buf1@count) 0 "@count" Name 20 "Buf1@count" Name 28 "Buf2" Name 29 "Buf2@count" Name 41 "@entryPointOutput" Name 43 "Buf3" Decorate 12 ArrayStride 4 Decorate 13(Buf1) BufferBlock MemberDecorate 13(Buf1) 0 Offset 0 Decorate 15(Buf1) Binding 84 Decorate 15(Buf1) DescriptorSet 0 Decorate 18(Buf1@count) BufferBlock MemberDecorate 18(Buf1@count) 0 Offset 0 Decorate 20(Buf1@count) Binding 83 Decorate 20(Buf1@count) DescriptorSet 0 Decorate 28(Buf2) Binding 85 Decorate 28(Buf2) DescriptorSet 0 Decorate 29(Buf2@count) Binding 86 Decorate 29(Buf2@count) DescriptorSet 0 Decorate 41(@entryPointOutput) Location 0 Decorate 43(Buf3) Binding 84 Decorate 43(Buf3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 0 12: TypeRuntimeArray 11(int) 13(Buf1): TypeStruct 12 14: TypePointer Uniform 13(Buf1) 15(Buf1): 14(ptr) Variable Uniform 16: TypeInt 32 1 17: 16(int) Constant 0 18(Buf1@count): TypeStruct 11(int) 19: TypePointer Uniform 18(Buf1@count) 20(Buf1@count): 19(ptr) Variable Uniform 21: TypePointer Uniform 11(int) 23: 11(int) Constant 1 24: 11(int) Constant 0 26: 11(int) Constant 10 28(Buf2): 14(ptr) Variable Uniform 29(Buf2@count): 19(ptr) Variable Uniform 32: 11(int) Constant 20 34: 6(float) Constant 1065353216 35: 6(float) Constant 1077936128 36: 6(float) Constant 1084227584 37: 7(fvec4) ConstantComposite 34 35 36 34 40: TypePointer Output 7(fvec4) 41(@entryPointOutput): 40(ptr) Variable Output 43(Buf3): 14(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 42: 7(fvec4) FunctionCall 9(@main() Store 41(@entryPointOutput) 42 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 10: Label 22: 21(ptr) AccessChain 20(Buf1@count) 17 25: 11(int) AtomicIAdd 22 23 24 23 27: 21(ptr) AccessChain 15(Buf1) 17 25 Store 27 26 30: 21(ptr) AccessChain 29(Buf2@count) 17 31: 11(int) AtomicIAdd 30 23 24 23 33: 21(ptr) AccessChain 28(Buf2) 17 31 Store 33 32 ReturnValue 37 FunctionEnd glslang-16.0.0/Test/baseResults/spv.stereoViewRendering.tesc.out000066400000000000000000000120021506534232700247310ustar00rootroot00000000000000spv.stereoViewRendering.tesc // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 42 Capability Tessellation Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV Capability ShaderStereoViewNV Extension "SPV_EXT_shader_viewport_index_layer" Extension "SPV_NV_stereo_view_rendering" Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 16 18 31 41 ExecutionMode 4 OutputVertices 4 Source GLSL 450 SourceExtension "GL_NV_stereo_view_rendering" SourceExtension "GL_NV_viewport_array2" Name 4 "main" Name 12 "gl_PerVertex" MemberName 12(gl_PerVertex) 0 "gl_SecondaryPositionNV" MemberName 12(gl_PerVertex) 1 "gl_SecondaryViewportMaskNV" Name 16 "gl_out" Name 18 "gl_InvocationID" Name 27 "gl_PerVertex" MemberName 27(gl_PerVertex) 0 "gl_Position" MemberName 27(gl_PerVertex) 1 "gl_PointSize" MemberName 27(gl_PerVertex) 2 "gl_ClipDistance" MemberName 27(gl_PerVertex) 3 "gl_CullDistance" MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV" Name 31 "gl_in" Name 41 "gl_Layer" Decorate 12(gl_PerVertex) Block MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV Decorate 18(gl_InvocationID) BuiltIn InvocationId Decorate 27(gl_PerVertex) Block MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 27(gl_PerVertex) 4 BuiltIn SecondaryPositionNV Decorate 41(gl_Layer) BuiltIn Layer Decorate 41(gl_Layer) ViewportRelativeNV Decorate 41(gl_Layer) SecondaryViewportRelativeNV 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 1 9: TypeInt 32 0 10: 9(int) Constant 2 11: TypeArray 8(int) 10 12(gl_PerVertex): TypeStruct 7(fvec4) 11 13: 9(int) Constant 4 14: TypeArray 12(gl_PerVertex) 13 15: TypePointer Output 14 16(gl_out): 15(ptr) Variable Output 17: TypePointer Input 8(int) 18(gl_InvocationID): 17(ptr) Variable Input 20: 8(int) Constant 1 21: 8(int) Constant 0 22: TypePointer Output 8(int) 25: 9(int) Constant 1 26: TypeArray 6(float) 25 27(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 26 26 7(fvec4) 28: 9(int) Constant 32 29: TypeArray 27(gl_PerVertex) 28 30: TypePointer Input 29 31(gl_in): 30(ptr) Variable Input 32: TypePointer Input 7(fvec4) 35: 8(int) Constant 4 39: TypePointer Output 7(fvec4) 41(gl_Layer): 22(ptr) Variable Output 4(main): 2 Function None 3 5: Label 19: 8(int) Load 18(gl_InvocationID) 23: 22(ptr) AccessChain 16(gl_out) 19 20 21 Store 23 20 24: 8(int) Load 18(gl_InvocationID) 33: 32(ptr) AccessChain 31(gl_in) 20 21 34: 7(fvec4) Load 33 36: 32(ptr) AccessChain 31(gl_in) 20 35 37: 7(fvec4) Load 36 38: 7(fvec4) FAdd 34 37 40: 39(ptr) AccessChain 16(gl_out) 24 21 Store 40 38 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.stereoViewRendering.vert.out000066400000000000000000000073571506534232700247740ustar00rootroot00000000000000spv.stereoViewRendering.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV Capability ShaderStereoViewNV Extension "SPV_EXT_shader_viewport_index_layer" Extension "SPV_NV_stereo_view_rendering" Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 11 19 23 26 Source GLSL 450 SourceExtension "GL_NV_stereo_view_rendering" SourceExtension "GL_NV_viewport_array2" Name 4 "main" Name 11 "gl_SecondaryViewportMaskNV" Name 19 "gl_SecondaryPositionNV" Name 21 "gl_PerVertex" MemberName 21(gl_PerVertex) 0 "gl_Position" MemberName 21(gl_PerVertex) 1 "gl_PointSize" MemberName 21(gl_PerVertex) 2 "gl_ClipDistance" MemberName 21(gl_PerVertex) 3 "gl_CullDistance" Name 23 "" Name 26 "gl_Layer" Decorate 11(gl_SecondaryViewportMaskNV) BuiltIn SecondaryViewportMaskNV Decorate 19(gl_SecondaryPositionNV) BuiltIn SecondaryPositionNV Decorate 21(gl_PerVertex) Block MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance Decorate 26(gl_Layer) BuiltIn Layer Decorate 26(gl_Layer) ViewportRelativeNV Decorate 26(gl_Layer) SecondaryViewportRelativeNV 2 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 1 9: TypeArray 6(int) 8 10: TypePointer Output 9 11(gl_SecondaryViewportMaskNV): 10(ptr) Variable Output 12: 6(int) Constant 0 13: 6(int) Constant 1 14: TypePointer Output 6(int) 16: TypeFloat 32 17: TypeVector 16(float) 4 18: TypePointer Output 17(fvec4) 19(gl_SecondaryPositionNV): 18(ptr) Variable Output 20: TypeArray 16(float) 8 21(gl_PerVertex): TypeStruct 17(fvec4) 16(float) 20 20 22: TypePointer Output 21(gl_PerVertex) 23: 22(ptr) Variable Output 26(gl_Layer): 14(ptr) Variable Output 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 11(gl_SecondaryViewportMaskNV) 12 Store 15 13 24: 18(ptr) AccessChain 23 12 25: 17(fvec4) Load 24 Store 19(gl_SecondaryPositionNV) 25 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.storageBuffer.vert.out000066400000000000000000000070411506534232700235660ustar00rootroot00000000000000spv.storageBuffer.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 13 Source GLSL 450 Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" Name 16 "ub" MemberName 16(ub) 0 "a" Name 18 "ubi" Name 22 "bb" MemberName 22(bb) 0 "b" Name 24 "bbi" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance Decorate 16(ub) Block MemberDecorate 16(ub) 0 Offset 0 Decorate 18(ubi) Binding 0 Decorate 18(ubi) DescriptorSet 0 Decorate 22(bb) Block MemberDecorate 22(bb) 0 Offset 0 Decorate 24(bbi) Binding 1 Decorate 24(bbi) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16(ub): TypeStruct 7(fvec4) 17: TypePointer Uniform 16(ub) 18(ubi): 17(ptr) Variable Uniform 19: TypePointer Uniform 7(fvec4) 22(bb): TypeStruct 7(fvec4) 23: TypePointer StorageBuffer 22(bb) 24(bbi): 23(ptr) Variable StorageBuffer 25: TypePointer StorageBuffer 7(fvec4) 29: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 20: 19(ptr) AccessChain 18(ubi) 15 21: 7(fvec4) Load 20 26: 25(ptr) AccessChain 24(bbi) 15 27: 7(fvec4) Load 26 28: 7(fvec4) FAdd 21 27 30: 29(ptr) AccessChain 13 15 Store 30 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.structAssignment.frag.out000066400000000000000000000123101506534232700242770ustar00rootroot00000000000000spv.structAssignment.frag WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" // Module Version 10000 // 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" 31 44 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 8 "lunarStruct1" MemberName 8(lunarStruct1) 0 "i" MemberName 8(lunarStruct1) 1 "f" Name 9 "lunarStruct2" MemberName 9(lunarStruct2) 0 "i" MemberName 9(lunarStruct2) 1 "f" MemberName 9(lunarStruct2) 2 "s1_1" Name 10 "lunarStruct3" MemberName 10(lunarStruct3) 0 "s2_1" MemberName 10(lunarStruct3) 1 "i" MemberName 10(lunarStruct3) 2 "f" MemberName 10(lunarStruct3) 3 "s1_1" Name 12 "foo3" Name 22 "locals2" Name 27 "foo2" Name 31 "gl_FragColor" Name 40 "samp2D" Name 44 "coord" Name 49 "foo" MemberDecorate 8(lunarStruct1) 0 RelaxedPrecision MemberDecorate 9(lunarStruct2) 0 RelaxedPrecision MemberDecorate 10(lunarStruct3) 1 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 31(gl_FragColor) Location 0 Decorate 40(samp2D) Binding 0 Decorate 40(samp2D) DescriptorSet 0 Decorate 44(coord) RelaxedPrecision Decorate 44(coord) Location 0 Decorate 45 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFloat 32 8(lunarStruct1): TypeStruct 6(int) 7(float) 9(lunarStruct2): TypeStruct 6(int) 7(float) 8(lunarStruct1) 10(lunarStruct3): TypeStruct 9(lunarStruct2) 6(int) 7(float) 8(lunarStruct1) 11: TypePointer Private 10(lunarStruct3) 12(foo3): 11(ptr) Variable Private 13: 6(int) Constant 0 14: TypePointer Private 6(int) 17: TypeBool 21: TypePointer Function 9(lunarStruct2) 23: TypePointer Private 9(lunarStruct2) 27(foo2): 23(ptr) Variable Private 29: TypeVector 7(float) 4 30: TypePointer Output 29(fvec4) 31(gl_FragColor): 30(ptr) Variable Output 32: 6(int) Constant 2 33: 6(int) Constant 1 34: TypePointer Function 7(float) 37: TypeImage 7(float) 2D sampled format:Unknown 38: TypeSampledImage 37 39: TypePointer UniformConstant 38 40(samp2D): 39(ptr) Variable UniformConstant 42: TypeVector 7(float) 2 43: TypePointer Input 42(fvec2) 44(coord): 43(ptr) Variable Input 48: TypePointer Private 8(lunarStruct1) 49(foo): 48(ptr) Variable Private 4(main): 2 Function None 3 5: Label 22(locals2): 21(ptr) Variable Function 15: 14(ptr) AccessChain 12(foo3) 13 13 16: 6(int) Load 15 18: 17(bool) SGreaterThan 16 13 SelectionMerge 20 None BranchConditional 18 19 26 19: Label 24: 23(ptr) AccessChain 12(foo3) 13 25:9(lunarStruct2) Load 24 Store 22(locals2) 25 Branch 20 26: Label 28:9(lunarStruct2) Load 27(foo2) Store 22(locals2) 28 Branch 20 20: Label 35: 34(ptr) AccessChain 22(locals2) 32 33 36: 7(float) Load 35 41: 38 Load 40(samp2D) 45: 42(fvec2) Load 44(coord) 46: 29(fvec4) ImageSampleImplicitLod 41 45 47: 29(fvec4) VectorTimesScalar 46 36 Store 31(gl_FragColor) 47 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.structCopy.comp.out000066400000000000000000000161441506534232700231310ustar00rootroot00000000000000spv.structCopy.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 81 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 24 ExecutionMode 4 LocalSize 512 1 1 Source GLSL 460 Name 4 "main" Name 7 "MyStruct" MemberName 7(MyStruct) 0 "a" MemberName 7(MyStruct) 1 "b" MemberName 7(MyStruct) 2 "c" Name 11 "s" Name 21 "id" Name 24 "gl_GlobalInvocationID" Name 30 "ms" Name 32 "MyStruct" MemberName 32(MyStruct) 0 "a" MemberName 32(MyStruct) 1 "b" MemberName 32(MyStruct) 2 "c" Name 34 "MyStructs" MemberName 34(MyStructs) 0 "count" MemberName 34(MyStructs) 1 "data" Name 36 "my_structs" Name 65 "Output" MemberName 65(Output) 0 "a" MemberName 65(Output) 1 "b" MemberName 65(Output) 2 "c" Name 67 "o" Decorate 24(gl_GlobalInvocationID) BuiltIn GlobalInvocationId MemberDecorate 32(MyStruct) 0 Offset 0 MemberDecorate 32(MyStruct) 1 Offset 4 MemberDecorate 32(MyStruct) 2 Offset 8 Decorate 33 ArrayStride 12 Decorate 34(MyStructs) BufferBlock MemberDecorate 34(MyStructs) 0 Offset 0 MemberDecorate 34(MyStructs) 1 Offset 4 Decorate 36(my_structs) Binding 0 Decorate 36(my_structs) DescriptorSet 0 Decorate 65(Output) BufferBlock MemberDecorate 65(Output) 0 Offset 0 MemberDecorate 65(Output) 1 Offset 4 MemberDecorate 65(Output) 2 Offset 8 Decorate 67(o) Binding 1 Decorate 67(o) DescriptorSet 0 Decorate 80 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7(MyStruct): TypeStruct 6(int) 6(int) 6(int) 8: 6(int) Constant 512 9: TypeArray 7(MyStruct) 8 10: TypePointer Workgroup 9 11(s): 10(ptr) Variable Workgroup 12: TypeInt 32 1 13: 12(int) Constant 0 14: 6(int) Constant 1 15: 6(int) Constant 2 16: 6(int) Constant 3 17: 7(MyStruct) ConstantComposite 14 15 16 18: TypePointer Workgroup 7(MyStruct) 20: TypePointer Function 6(int) 22: TypeVector 6(int) 3 23: TypePointer Input 22(ivec3) 24(gl_GlobalInvocationID): 23(ptr) Variable Input 25: 6(int) Constant 0 26: TypePointer Input 6(int) 29: TypePointer Function 7(MyStruct) 32(MyStruct): TypeStruct 6(int) 6(int) 6(int) 33: TypeRuntimeArray 32(MyStruct) 34(MyStructs): TypeStruct 6(int) 33 35: TypePointer Uniform 34(MyStructs) 36(my_structs): 35(ptr) Variable Uniform 37: TypePointer Uniform 6(int) 40: TypeBool 52: 12(int) Constant 1 54: TypePointer Uniform 32(MyStruct) 62: 12(int) Constant 2 65(Output): TypeStruct 6(int) 6(int) 6(int) 66: TypePointer Uniform 65(Output) 67(o): 66(ptr) Variable Uniform 80: 22(ivec3) ConstantComposite 8 14 14 4(main): 2 Function None 3 5: Label 21(id): 20(ptr) Variable Function 30(ms): 29(ptr) Variable Function 42: 29(ptr) Variable Function 19: 18(ptr) AccessChain 11(s) 13 Store 19 17 27: 26(ptr) AccessChain 24(gl_GlobalInvocationID) 25 28: 6(int) Load 27 Store 21(id) 28 31: 6(int) Load 21(id) 38: 37(ptr) AccessChain 36(my_structs) 13 39: 6(int) Load 38 41: 40(bool) UGreaterThan 31 39 SelectionMerge 44 None BranchConditional 41 43 51 43: Label 45: 6(int) Load 21(id) 46: 37(ptr) AccessChain 36(my_structs) 13 47: 6(int) Load 46 48: 6(int) ISub 45 47 49: 18(ptr) AccessChain 11(s) 48 50: 7(MyStruct) Load 49 Store 42 50 Branch 44 51: Label 53: 6(int) Load 21(id) 55: 54(ptr) AccessChain 36(my_structs) 52 53 56:32(MyStruct) Load 55 57: 6(int) CompositeExtract 56 0 58: 20(ptr) AccessChain 42 13 Store 58 57 59: 6(int) CompositeExtract 56 1 60: 20(ptr) AccessChain 42 52 Store 60 59 61: 6(int) CompositeExtract 56 2 63: 20(ptr) AccessChain 42 62 Store 63 61 Branch 44 44: Label 64: 7(MyStruct) Load 42 Store 30(ms) 64 68: 37(ptr) AccessChain 67(o) 13 69: 20(ptr) AccessChain 30(ms) 13 70: 6(int) Load 69 71: 6(int) AtomicIAdd 68 14 25 70 72: 37(ptr) AccessChain 67(o) 52 73: 20(ptr) AccessChain 30(ms) 52 74: 6(int) Load 73 75: 6(int) AtomicIAdd 72 14 25 74 76: 37(ptr) AccessChain 67(o) 62 77: 20(ptr) AccessChain 30(ms) 62 78: 6(int) Load 77 79: 6(int) AtomicIAdd 76 14 25 78 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.structDeref.frag.out000066400000000000000000000223261506534232700232240ustar00rootroot00000000000000spv.structDeref.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 123 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 61 99 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 8 "s0" MemberName 8(s0) 0 "i" Name 9 "s1" MemberName 9(s1) 0 "i" MemberName 9(s1) 1 "f" MemberName 9(s1) 2 "s0_1" Name 10 "s2" MemberName 10(s2) 0 "i" MemberName 10(s2) 1 "f" MemberName 10(s2) 2 "s1_1" Name 14 "s3" MemberName 14(s3) 0 "s2_1" MemberName 14(s3) 1 "i" MemberName 14(s3) 2 "f" MemberName 14(s3) 3 "s1_1" Name 16 "foo3" Name 27 "locals2" Name 40 "fArray" Name 46 "locals1Array" Name 49 "foo1" Name 53 "locals0" Name 54 "s00" MemberName 54(s00) 0 "s0_0" Name 56 "locals00" Name 61 "coord" Name 71 "foo0" Name 86 "foo00" Name 99 "gl_FragColor" Name 116 "samp2D" Name 122 "foo2" Decorate 61(coord) Location 0 Decorate 99(gl_FragColor) Location 0 Decorate 116(samp2D) Binding 0 Decorate 116(samp2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeFloat 32 8(s0): TypeStruct 6(int) 9(s1): TypeStruct 6(int) 7(float) 8(s0) 10(s2): TypeStruct 6(int) 7(float) 9(s1) 11: TypeInt 32 0 12: 11(int) Constant 12 13: TypeArray 10(s2) 12 14(s3): TypeStruct 13 6(int) 7(float) 9(s1) 15: TypePointer Private 14(s3) 16(foo3): 15(ptr) Variable Private 17: 6(int) Constant 0 18: 6(int) Constant 9 19: TypePointer Private 6(int) 22: TypeBool 26: TypePointer Function 10(s2) 28: 6(int) Constant 1 29: 7(float) Constant 1065353216 30: TypePointer Function 7(float) 32: 6(int) Constant 2 33: 8(s0) ConstantComposite 17 34: 9(s1) ConstantComposite 17 29 33 35: TypePointer Function 9(s1) 37: 11(int) Constant 6 38: TypeArray 7(float) 37 39: TypePointer Function 38 41: 7(float) Constant 0 42: 38 ConstantComposite 41 41 41 41 41 41 43: 11(int) Constant 10 44: TypeArray 9(s1) 43 45: TypePointer Function 44 47: 6(int) Constant 6 48: TypePointer Private 9(s1) 49(foo1): 48(ptr) Variable Private 52: TypePointer Function 8(s0) 54(s00): TypeStruct 8(s0) 55: TypePointer Function 54(s00) 57: 54(s00) ConstantComposite 33 59: TypeVector 7(float) 2 60: TypePointer Input 59(fvec2) 61(coord): 60(ptr) Variable Input 62: 11(int) Constant 0 63: TypePointer Input 7(float) 67: 11(int) Constant 1 70: TypePointer Private 8(s0) 71(foo0): 70(ptr) Variable Private 75: 7(float) Constant 1073741824 76: 7(float) Constant 1077936128 77: 7(float) Constant 1082130432 78: 7(float) Constant 1084227584 79: 38 ConstantComposite 41 29 75 76 77 78 85: TypePointer Private 54(s00) 86(foo00): 85(ptr) Variable Private 88: TypePointer Function 6(int) 91: 6(int) Constant 5 97: TypeVector 7(float) 4 98: TypePointer Output 97(fvec4) 99(gl_FragColor): 98(ptr) Variable Output 106: 6(int) Constant 3 113: TypeImage 7(float) 2D sampled format:Unknown 114: TypeSampledImage 113 115: TypePointer UniformConstant 114 116(samp2D): 115(ptr) Variable UniformConstant 121: TypePointer Private 10(s2) 122(foo2): 121(ptr) Variable Private 4(main): 2 Function None 3 5: Label 27(locals2): 26(ptr) Variable Function 40(fArray): 39(ptr) Variable Function 46(locals1Array): 45(ptr) Variable Function 53(locals0): 52(ptr) Variable Function 56(locals00): 55(ptr) Variable Function 20: 19(ptr) AccessChain 16(foo3) 17 18 17 21: 6(int) Load 20 23: 22(bool) SGreaterThan 21 17 SelectionMerge 25 None BranchConditional 23 24 58 24: Label 31: 30(ptr) AccessChain 27(locals2) 28 Store 31 29 36: 35(ptr) AccessChain 27(locals2) 32 Store 36 34 Store 40(fArray) 42 50: 9(s1) Load 49(foo1) 51: 35(ptr) AccessChain 46(locals1Array) 47 Store 51 50 Store 53(locals0) 33 Store 56(locals00) 57 Branch 25 58: Label 64: 63(ptr) AccessChain 61(coord) 62 65: 7(float) Load 64 66: 30(ptr) AccessChain 27(locals2) 28 Store 66 65 68: 63(ptr) AccessChain 61(coord) 67 69: 7(float) Load 68 72: 8(s0) Load 71(foo0) 73: 9(s1) CompositeConstruct 28 69 72 74: 35(ptr) AccessChain 27(locals2) 32 Store 74 73 Store 40(fArray) 79 80: 35(ptr) AccessChain 27(locals2) 32 81: 9(s1) Load 80 82: 35(ptr) AccessChain 46(locals1Array) 47 Store 82 81 83: 70(ptr) AccessChain 49(foo1) 32 84: 8(s0) Load 83 Store 53(locals0) 84 87: 54(s00) Load 86(foo00) Store 56(locals00) 87 Branch 25 25: Label 89: 88(ptr) AccessChain 53(locals0) 17 90: 6(int) Load 89 92: 22(bool) SGreaterThan 90 91 SelectionMerge 94 None BranchConditional 92 93 94 93: Label 95: 52(ptr) AccessChain 56(locals00) 17 96: 8(s0) Load 95 Store 53(locals0) 96 Branch 94 94: Label 100: 88(ptr) AccessChain 53(locals0) 17 101: 6(int) Load 100 102: 7(float) ConvertSToF 101 103: 30(ptr) AccessChain 46(locals1Array) 47 28 104: 7(float) Load 103 105: 7(float) FAdd 102 104 107: 30(ptr) AccessChain 40(fArray) 106 108: 7(float) Load 107 109: 7(float) FAdd 105 108 110: 30(ptr) AccessChain 27(locals2) 32 28 111: 7(float) Load 110 112: 7(float) FAdd 109 111 117: 114 Load 116(samp2D) 118: 59(fvec2) Load 61(coord) 119: 97(fvec4) ImageSampleImplicitLod 117 118 120: 97(fvec4) VectorTimesScalar 119 112 Store 99(gl_FragColor) 120 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.structure.frag.out000066400000000000000000000113741506534232700227730ustar00rootroot00000000000000spv.structure.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 45 54 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 8 "scale" Name 18 "lunarStruct1" MemberName 18(lunarStruct1) 0 "i" MemberName 18(lunarStruct1) 1 "f" MemberName 18(lunarStruct1) 2 "color" Name 21 "lunarStruct2" MemberName 21(lunarStruct2) 0 "i" MemberName 21(lunarStruct2) 1 "f" MemberName 21(lunarStruct2) 2 "s1_1" Name 24 "foo2" Name 45 "gl_FragColor" Name 50 "samp2D" Name 54 "coord" Name 59 "foo" Decorate 45(gl_FragColor) Location 0 Decorate 50(samp2D) Binding 0 Decorate 50(samp2D) DescriptorSet 0 Decorate 54(coord) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: 6(float) Constant 0 10: TypeInt 32 1 11: TypeInt 32 0 12: 11(int) Constant 5 13: TypeArray 10(int) 12 14: 11(int) Constant 4 15: TypeArray 6(float) 14 16: TypeVector 6(float) 4 17: TypeArray 16(fvec4) 12 18(lunarStruct1): TypeStruct 10(int) 15 17 19: 11(int) Constant 7 20: TypeArray 18(lunarStruct1) 19 21(lunarStruct2): TypeStruct 13 6(float) 20 22: TypeArray 21(lunarStruct2) 12 23: TypePointer Private 22 24(foo2): 23(ptr) Variable Private 25: 10(int) Constant 3 26: 10(int) Constant 0 27: 10(int) Constant 4 28: TypePointer Private 10(int) 31: TypeBool 35: 10(int) Constant 2 36: 11(int) Constant 0 37: TypePointer Private 6(float) 41: 10(int) Constant 1 44: TypePointer Output 16(fvec4) 45(gl_FragColor): 44(ptr) Variable Output 47: TypeImage 6(float) 2D sampled format:Unknown 48: TypeSampledImage 47 49: TypePointer UniformConstant 48 50(samp2D): 49(ptr) Variable UniformConstant 52: TypeVector 6(float) 2 53: TypePointer Input 52(fvec2) 54(coord): 53(ptr) Variable Input 58: TypePointer Private 18(lunarStruct1) 59(foo): 58(ptr) Variable Private 4(main): 2 Function None 3 5: Label 8(scale): 7(ptr) Variable Function Store 8(scale) 9 29: 28(ptr) AccessChain 24(foo2) 25 26 27 30: 10(int) Load 29 32: 31(bool) SGreaterThan 30 26 SelectionMerge 34 None BranchConditional 32 33 40 33: Label 38: 37(ptr) AccessChain 24(foo2) 25 35 35 35 25 36 39: 6(float) Load 38 Store 8(scale) 39 Branch 34 40: Label 42: 37(ptr) AccessChain 24(foo2) 25 35 35 41 25 43: 6(float) Load 42 Store 8(scale) 43 Branch 34 34: Label 46: 6(float) Load 8(scale) 51: 48 Load 50(samp2D) 55: 52(fvec2) Load 54(coord) 56: 16(fvec4) ImageSampleImplicitLod 51 55 57: 16(fvec4) VectorTimesScalar 56 46 Store 45(gl_FragColor) 57 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroup.frag.out000066400000000000000000000045061506534232700226000ustar00rootroot00000000000000spv.subgroup.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader Capability GroupNonUniform 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 11 13 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 9 "data" Name 11 "gl_SubgroupSize" Name 13 "gl_SubgroupInvocationID" Decorate 9(data) Location 0 Decorate 11(gl_SubgroupSize) RelaxedPrecision Decorate 11(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 11(gl_SubgroupSize) Flat Decorate 12 RelaxedPrecision Decorate 13(gl_SubgroupInvocationID) RelaxedPrecision Decorate 13(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 13(gl_SubgroupInvocationID) Flat Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 4 8: TypePointer Output 7(ivec4) 9(data): 8(ptr) Variable Output 10: TypePointer Input 6(int) 11(gl_SubgroupSize): 10(ptr) Variable Input 13(gl_SubgroupInvocationID): 10(ptr) Variable Input 15: 6(int) Constant 0 4(main): 2 Function None 3 5: Label 12: 6(int) Load 11(gl_SubgroupSize) 14: 6(int) Load 13(gl_SubgroupInvocationID) 16: 7(ivec4) CompositeConstruct 12 14 15 15 Store 9(data) 16 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroup.geom.out000066400000000000000000000064431506534232700226120ustar00rootroot00000000000000spv.subgroup.geom // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Geometry Capability GroupNonUniform 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Geometry 4 "main" 15 18 20 ExecutionMode 4 InputPoints ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputPoints ExecutionMode 4 OutputVertices 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 9 "Output" MemberName 9(Output) 0 "result" Name 11 "" Name 15 "gl_PrimitiveIDIn" Name 18 "gl_SubgroupSize" Name 20 "gl_SubgroupInvocationID" Decorate 8 ArrayStride 16 Decorate 9(Output) Block MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 Decorate 11 DescriptorSet 0 Decorate 15(gl_PrimitiveIDIn) BuiltIn PrimitiveId Decorate 18(gl_SubgroupSize) RelaxedPrecision Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 19 RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21 RelaxedPrecision Decorate 23 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 4 8: TypeRuntimeArray 7(ivec4) 9(Output): TypeStruct 8 10: TypePointer StorageBuffer 9(Output) 11: 10(ptr) Variable StorageBuffer 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypePointer Input 12(int) 15(gl_PrimitiveIDIn): 14(ptr) Variable Input 17: TypePointer Input 6(int) 18(gl_SubgroupSize): 17(ptr) Variable Input 20(gl_SubgroupInvocationID): 17(ptr) Variable Input 22: 6(int) Constant 0 24: TypePointer StorageBuffer 7(ivec4) 4(main): 2 Function None 3 5: Label 16: 12(int) Load 15(gl_PrimitiveIDIn) 19: 6(int) Load 18(gl_SubgroupSize) 21: 6(int) Load 20(gl_SubgroupInvocationID) 23: 7(ivec4) CompositeConstruct 19 21 22 22 25: 24(ptr) AccessChain 11 13 16 Store 25 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroup.tesc.out000066400000000000000000000061711506534232700226170ustar00rootroot00000000000000spv.subgroup.tesc // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Tessellation Capability GroupNonUniform 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 15 18 20 ExecutionMode 4 OutputVertices 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 9 "Output" MemberName 9(Output) 0 "result" Name 11 "" Name 15 "gl_PrimitiveID" Name 18 "gl_SubgroupSize" Name 20 "gl_SubgroupInvocationID" Decorate 8 ArrayStride 16 Decorate 9(Output) Block MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 Decorate 11 DescriptorSet 0 Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 18(gl_SubgroupSize) RelaxedPrecision Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 19 RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21 RelaxedPrecision Decorate 23 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 4 8: TypeRuntimeArray 7(ivec4) 9(Output): TypeStruct 8 10: TypePointer StorageBuffer 9(Output) 11: 10(ptr) Variable StorageBuffer 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypePointer Input 12(int) 15(gl_PrimitiveID): 14(ptr) Variable Input 17: TypePointer Input 6(int) 18(gl_SubgroupSize): 17(ptr) Variable Input 20(gl_SubgroupInvocationID): 17(ptr) Variable Input 22: 6(int) Constant 0 24: TypePointer StorageBuffer 7(ivec4) 4(main): 2 Function None 3 5: Label 16: 12(int) Load 15(gl_PrimitiveID) 19: 6(int) Load 18(gl_SubgroupSize) 21: 6(int) Load 20(gl_SubgroupInvocationID) 23: 7(ivec4) CompositeConstruct 19 21 22 22 25: 24(ptr) AccessChain 11 13 16 Store 25 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroup.tese.out000066400000000000000000000063541506534232700226240ustar00rootroot00000000000000spv.subgroup.tese // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Tessellation Capability GroupNonUniform 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 4 "main" 15 18 20 ExecutionMode 4 Isolines ExecutionMode 4 SpacingEqual ExecutionMode 4 VertexOrderCcw Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 9 "Output" MemberName 9(Output) 0 "result" Name 11 "" Name 15 "gl_PrimitiveID" Name 18 "gl_SubgroupSize" Name 20 "gl_SubgroupInvocationID" Decorate 8 ArrayStride 16 Decorate 9(Output) Block MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 Decorate 11 DescriptorSet 0 Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 18(gl_SubgroupSize) RelaxedPrecision Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 19 RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21 RelaxedPrecision Decorate 23 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 4 8: TypeRuntimeArray 7(ivec4) 9(Output): TypeStruct 8 10: TypePointer StorageBuffer 9(Output) 11: 10(ptr) Variable StorageBuffer 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypePointer Input 12(int) 15(gl_PrimitiveID): 14(ptr) Variable Input 17: TypePointer Input 6(int) 18(gl_SubgroupSize): 17(ptr) Variable Input 20(gl_SubgroupInvocationID): 17(ptr) Variable Input 22: 6(int) Constant 0 24: TypePointer StorageBuffer 7(ivec4) 4(main): 2 Function None 3 5: Label 16: 12(int) Load 15(gl_PrimitiveID) 19: 6(int) Load 18(gl_SubgroupSize) 21: 6(int) Load 20(gl_SubgroupInvocationID) 23: 7(ivec4) CompositeConstruct 19 21 22 22 25: 24(ptr) AccessChain 11 13 16 Store 25 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroup.vert.out000066400000000000000000000060471506534232700226430ustar00rootroot00000000000000spv.subgroup.vert // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader Capability GroupNonUniform 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 15 18 20 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 9 "Output" MemberName 9(Output) 0 "result" Name 11 "" Name 15 "gl_VertexIndex" Name 18 "gl_SubgroupSize" Name 20 "gl_SubgroupInvocationID" Decorate 8 ArrayStride 16 Decorate 9(Output) Block MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 Decorate 11 DescriptorSet 0 Decorate 15(gl_VertexIndex) BuiltIn VertexIndex Decorate 18(gl_SubgroupSize) RelaxedPrecision Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 19 RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21 RelaxedPrecision Decorate 23 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 4 8: TypeRuntimeArray 7(ivec4) 9(Output): TypeStruct 8 10: TypePointer StorageBuffer 9(Output) 11: 10(ptr) Variable StorageBuffer 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypePointer Input 12(int) 15(gl_VertexIndex): 14(ptr) Variable Input 17: TypePointer Input 6(int) 18(gl_SubgroupSize): 17(ptr) Variable Input 20(gl_SubgroupInvocationID): 17(ptr) Variable Input 22: 6(int) Constant 0 24: TypePointer StorageBuffer 7(ivec4) 4(main): 2 Function None 3 5: Label 16: 12(int) Load 15(gl_VertexIndex) 19: 6(int) Load 18(gl_SubgroupSize) 21: 6(int) Load 20(gl_SubgroupInvocationID) 23: 7(ivec4) CompositeConstruct 19 21 22 22 25: 24(ptr) AccessChain 11 13 16 Store 25 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupArithmetic.comp.out000066400000000000000000004670621506534232700246430ustar00rootroot00000000000000spv.subgroupArithmetic.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 2386 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformArithmetic 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_arithmetic" SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 24 "Buffers" MemberName 24(Buffers) 0 "f4" MemberName 24(Buffers) 1 "i4" MemberName 24(Buffers) 2 "u4" MemberName 24(Buffers) 3 "d4" Name 27 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 Decorate 27(data) Binding 0 Decorate 27(data) DescriptorSet 0 Decorate 2385 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeFloat 32 18: TypeVector 17(float) 4 19: TypeInt 32 1 20: TypeVector 19(int) 4 21: TypeVector 6(int) 4 22: TypeFloat 64 23: TypeVector 22(float64_t) 4 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 25: TypeArray 24(Buffers) 15 26: TypePointer StorageBuffer 25 27(data): 26(ptr) Variable StorageBuffer 29: 19(int) Constant 0 30: 6(int) Constant 0 31: TypePointer StorageBuffer 17(float) 34: 6(int) Constant 3 38: 19(int) Constant 1 39: TypeVector 17(float) 2 40: TypePointer StorageBuffer 18(fvec4) 47: 6(int) Constant 1 51: 19(int) Constant 2 52: TypeVector 17(float) 3 61: 6(int) Constant 2 65: 19(int) Constant 3 71: TypePointer StorageBuffer 19(int) 77: TypeVector 19(int) 2 78: TypePointer StorageBuffer 20(ivec4) 88: TypeVector 19(int) 3 105: TypePointer StorageBuffer 6(int) 111: TypeVector 6(int) 2 112: TypePointer StorageBuffer 21(ivec4) 122: TypeVector 6(int) 3 139: TypePointer StorageBuffer 22(float64_t) 145: TypeVector 22(float64_t) 2 146: TypePointer StorageBuffer 23(f64vec4) 156: TypeVector 22(float64_t) 3 595: TypeBool 604: 77(ivec2) ConstantComposite 29 29 605: TypeVector 595(bool) 2 608: 77(ivec2) ConstantComposite 38 38 618: 88(ivec3) ConstantComposite 29 29 29 619: TypeVector 595(bool) 3 622: 88(ivec3) ConstantComposite 38 38 38 633: 20(ivec4) ConstantComposite 29 29 29 29 634: TypeVector 595(bool) 4 637: 20(ivec4) ConstantComposite 38 38 38 38 2384: 6(int) Constant 8 2385: 122(ivec3) ConstantComposite 2384 47 47 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 28: 6(int) Load 8(invocation) 32: 31(ptr) AccessChain 27(data) 29 29 30 33: 17(float) Load 32 35: 17(float) GroupNonUniformFAdd 34 Reduce 33 36: 31(ptr) AccessChain 27(data) 28 29 30 Store 36 35 37: 6(int) Load 8(invocation) 41: 40(ptr) AccessChain 27(data) 38 29 42: 18(fvec4) Load 41 43: 39(fvec2) VectorShuffle 42 42 0 1 44: 39(fvec2) GroupNonUniformFAdd 34 Reduce 43 45: 31(ptr) AccessChain 27(data) 37 29 30 46: 17(float) CompositeExtract 44 0 Store 45 46 48: 31(ptr) AccessChain 27(data) 37 29 47 49: 17(float) CompositeExtract 44 1 Store 48 49 50: 6(int) Load 8(invocation) 53: 40(ptr) AccessChain 27(data) 51 29 54: 18(fvec4) Load 53 55: 52(fvec3) VectorShuffle 54 54 0 1 2 56: 52(fvec3) GroupNonUniformFAdd 34 Reduce 55 57: 31(ptr) AccessChain 27(data) 50 29 30 58: 17(float) CompositeExtract 56 0 Store 57 58 59: 31(ptr) AccessChain 27(data) 50 29 47 60: 17(float) CompositeExtract 56 1 Store 59 60 62: 31(ptr) AccessChain 27(data) 50 29 61 63: 17(float) CompositeExtract 56 2 Store 62 63 64: 6(int) Load 8(invocation) 66: 40(ptr) AccessChain 27(data) 65 29 67: 18(fvec4) Load 66 68: 18(fvec4) GroupNonUniformFAdd 34 Reduce 67 69: 40(ptr) AccessChain 27(data) 64 29 Store 69 68 70: 6(int) Load 8(invocation) 72: 71(ptr) AccessChain 27(data) 29 38 30 73: 19(int) Load 72 74: 19(int) GroupNonUniformIAdd 34 Reduce 73 75: 71(ptr) AccessChain 27(data) 70 38 30 Store 75 74 76: 6(int) Load 8(invocation) 79: 78(ptr) AccessChain 27(data) 38 38 80: 20(ivec4) Load 79 81: 77(ivec2) VectorShuffle 80 80 0 1 82: 77(ivec2) GroupNonUniformIAdd 34 Reduce 81 83: 71(ptr) AccessChain 27(data) 76 38 30 84: 19(int) CompositeExtract 82 0 Store 83 84 85: 71(ptr) AccessChain 27(data) 76 38 47 86: 19(int) CompositeExtract 82 1 Store 85 86 87: 6(int) Load 8(invocation) 89: 78(ptr) AccessChain 27(data) 51 38 90: 20(ivec4) Load 89 91: 88(ivec3) VectorShuffle 90 90 0 1 2 92: 88(ivec3) GroupNonUniformIAdd 34 Reduce 91 93: 71(ptr) AccessChain 27(data) 87 38 30 94: 19(int) CompositeExtract 92 0 Store 93 94 95: 71(ptr) AccessChain 27(data) 87 38 47 96: 19(int) CompositeExtract 92 1 Store 95 96 97: 71(ptr) AccessChain 27(data) 87 38 61 98: 19(int) CompositeExtract 92 2 Store 97 98 99: 6(int) Load 8(invocation) 100: 78(ptr) AccessChain 27(data) 65 38 101: 20(ivec4) Load 100 102: 20(ivec4) GroupNonUniformIAdd 34 Reduce 101 103: 78(ptr) AccessChain 27(data) 99 38 Store 103 102 104: 6(int) Load 8(invocation) 106: 105(ptr) AccessChain 27(data) 29 51 30 107: 6(int) Load 106 108: 6(int) GroupNonUniformIAdd 34 Reduce 107 109: 105(ptr) AccessChain 27(data) 104 51 30 Store 109 108 110: 6(int) Load 8(invocation) 113: 112(ptr) AccessChain 27(data) 38 51 114: 21(ivec4) Load 113 115: 111(ivec2) VectorShuffle 114 114 0 1 116: 111(ivec2) GroupNonUniformIAdd 34 Reduce 115 117: 105(ptr) AccessChain 27(data) 110 51 30 118: 6(int) CompositeExtract 116 0 Store 117 118 119: 105(ptr) AccessChain 27(data) 110 51 47 120: 6(int) CompositeExtract 116 1 Store 119 120 121: 6(int) Load 8(invocation) 123: 112(ptr) AccessChain 27(data) 51 51 124: 21(ivec4) Load 123 125: 122(ivec3) VectorShuffle 124 124 0 1 2 126: 122(ivec3) GroupNonUniformIAdd 34 Reduce 125 127: 105(ptr) AccessChain 27(data) 121 51 30 128: 6(int) CompositeExtract 126 0 Store 127 128 129: 105(ptr) AccessChain 27(data) 121 51 47 130: 6(int) CompositeExtract 126 1 Store 129 130 131: 105(ptr) AccessChain 27(data) 121 51 61 132: 6(int) CompositeExtract 126 2 Store 131 132 133: 6(int) Load 8(invocation) 134: 112(ptr) AccessChain 27(data) 65 51 135: 21(ivec4) Load 134 136: 21(ivec4) GroupNonUniformIAdd 34 Reduce 135 137: 112(ptr) AccessChain 27(data) 133 51 Store 137 136 138: 6(int) Load 8(invocation) 140: 139(ptr) AccessChain 27(data) 29 65 30 141:22(float64_t) Load 140 142:22(float64_t) GroupNonUniformFAdd 34 Reduce 141 143: 139(ptr) AccessChain 27(data) 138 65 30 Store 143 142 144: 6(int) Load 8(invocation) 147: 146(ptr) AccessChain 27(data) 38 65 148: 23(f64vec4) Load 147 149:145(f64vec2) VectorShuffle 148 148 0 1 150:145(f64vec2) GroupNonUniformFAdd 34 Reduce 149 151: 139(ptr) AccessChain 27(data) 144 65 30 152:22(float64_t) CompositeExtract 150 0 Store 151 152 153: 139(ptr) AccessChain 27(data) 144 65 47 154:22(float64_t) CompositeExtract 150 1 Store 153 154 155: 6(int) Load 8(invocation) 157: 146(ptr) AccessChain 27(data) 51 65 158: 23(f64vec4) Load 157 159:156(f64vec3) VectorShuffle 158 158 0 1 2 160:156(f64vec3) GroupNonUniformFAdd 34 Reduce 159 161: 139(ptr) AccessChain 27(data) 155 65 30 162:22(float64_t) CompositeExtract 160 0 Store 161 162 163: 139(ptr) AccessChain 27(data) 155 65 47 164:22(float64_t) CompositeExtract 160 1 Store 163 164 165: 139(ptr) AccessChain 27(data) 155 65 61 166:22(float64_t) CompositeExtract 160 2 Store 165 166 167: 6(int) Load 8(invocation) 168: 146(ptr) AccessChain 27(data) 65 65 169: 23(f64vec4) Load 168 170: 23(f64vec4) GroupNonUniformFAdd 34 Reduce 169 171: 146(ptr) AccessChain 27(data) 167 65 Store 171 170 172: 6(int) Load 8(invocation) 173: 31(ptr) AccessChain 27(data) 29 29 30 174: 17(float) Load 173 175: 17(float) GroupNonUniformFMul 34 Reduce 174 176: 31(ptr) AccessChain 27(data) 172 29 30 Store 176 175 177: 6(int) Load 8(invocation) 178: 40(ptr) AccessChain 27(data) 38 29 179: 18(fvec4) Load 178 180: 39(fvec2) VectorShuffle 179 179 0 1 181: 39(fvec2) GroupNonUniformFMul 34 Reduce 180 182: 31(ptr) AccessChain 27(data) 177 29 30 183: 17(float) CompositeExtract 181 0 Store 182 183 184: 31(ptr) AccessChain 27(data) 177 29 47 185: 17(float) CompositeExtract 181 1 Store 184 185 186: 6(int) Load 8(invocation) 187: 40(ptr) AccessChain 27(data) 51 29 188: 18(fvec4) Load 187 189: 52(fvec3) VectorShuffle 188 188 0 1 2 190: 52(fvec3) GroupNonUniformFMul 34 Reduce 189 191: 31(ptr) AccessChain 27(data) 186 29 30 192: 17(float) CompositeExtract 190 0 Store 191 192 193: 31(ptr) AccessChain 27(data) 186 29 47 194: 17(float) CompositeExtract 190 1 Store 193 194 195: 31(ptr) AccessChain 27(data) 186 29 61 196: 17(float) CompositeExtract 190 2 Store 195 196 197: 6(int) Load 8(invocation) 198: 40(ptr) AccessChain 27(data) 65 29 199: 18(fvec4) Load 198 200: 18(fvec4) GroupNonUniformFMul 34 Reduce 199 201: 40(ptr) AccessChain 27(data) 197 29 Store 201 200 202: 6(int) Load 8(invocation) 203: 71(ptr) AccessChain 27(data) 29 38 30 204: 19(int) Load 203 205: 19(int) GroupNonUniformIMul 34 Reduce 204 206: 71(ptr) AccessChain 27(data) 202 38 30 Store 206 205 207: 6(int) Load 8(invocation) 208: 78(ptr) AccessChain 27(data) 38 38 209: 20(ivec4) Load 208 210: 77(ivec2) VectorShuffle 209 209 0 1 211: 77(ivec2) GroupNonUniformIMul 34 Reduce 210 212: 71(ptr) AccessChain 27(data) 207 38 30 213: 19(int) CompositeExtract 211 0 Store 212 213 214: 71(ptr) AccessChain 27(data) 207 38 47 215: 19(int) CompositeExtract 211 1 Store 214 215 216: 6(int) Load 8(invocation) 217: 78(ptr) AccessChain 27(data) 51 38 218: 20(ivec4) Load 217 219: 88(ivec3) VectorShuffle 218 218 0 1 2 220: 88(ivec3) GroupNonUniformIMul 34 Reduce 219 221: 71(ptr) AccessChain 27(data) 216 38 30 222: 19(int) CompositeExtract 220 0 Store 221 222 223: 71(ptr) AccessChain 27(data) 216 38 47 224: 19(int) CompositeExtract 220 1 Store 223 224 225: 71(ptr) AccessChain 27(data) 216 38 61 226: 19(int) CompositeExtract 220 2 Store 225 226 227: 6(int) Load 8(invocation) 228: 78(ptr) AccessChain 27(data) 65 38 229: 20(ivec4) Load 228 230: 20(ivec4) GroupNonUniformIMul 34 Reduce 229 231: 78(ptr) AccessChain 27(data) 227 38 Store 231 230 232: 6(int) Load 8(invocation) 233: 105(ptr) AccessChain 27(data) 29 51 30 234: 6(int) Load 233 235: 6(int) GroupNonUniformIMul 34 Reduce 234 236: 105(ptr) AccessChain 27(data) 232 51 30 Store 236 235 237: 6(int) Load 8(invocation) 238: 112(ptr) AccessChain 27(data) 38 51 239: 21(ivec4) Load 238 240: 111(ivec2) VectorShuffle 239 239 0 1 241: 111(ivec2) GroupNonUniformIMul 34 Reduce 240 242: 105(ptr) AccessChain 27(data) 237 51 30 243: 6(int) CompositeExtract 241 0 Store 242 243 244: 105(ptr) AccessChain 27(data) 237 51 47 245: 6(int) CompositeExtract 241 1 Store 244 245 246: 6(int) Load 8(invocation) 247: 112(ptr) AccessChain 27(data) 51 51 248: 21(ivec4) Load 247 249: 122(ivec3) VectorShuffle 248 248 0 1 2 250: 122(ivec3) GroupNonUniformIMul 34 Reduce 249 251: 105(ptr) AccessChain 27(data) 246 51 30 252: 6(int) CompositeExtract 250 0 Store 251 252 253: 105(ptr) AccessChain 27(data) 246 51 47 254: 6(int) CompositeExtract 250 1 Store 253 254 255: 105(ptr) AccessChain 27(data) 246 51 61 256: 6(int) CompositeExtract 250 2 Store 255 256 257: 6(int) Load 8(invocation) 258: 112(ptr) AccessChain 27(data) 65 51 259: 21(ivec4) Load 258 260: 21(ivec4) GroupNonUniformIMul 34 Reduce 259 261: 112(ptr) AccessChain 27(data) 257 51 Store 261 260 262: 6(int) Load 8(invocation) 263: 139(ptr) AccessChain 27(data) 29 65 30 264:22(float64_t) Load 263 265:22(float64_t) GroupNonUniformFMul 34 Reduce 264 266: 139(ptr) AccessChain 27(data) 262 65 30 Store 266 265 267: 6(int) Load 8(invocation) 268: 146(ptr) AccessChain 27(data) 38 65 269: 23(f64vec4) Load 268 270:145(f64vec2) VectorShuffle 269 269 0 1 271:145(f64vec2) GroupNonUniformFMul 34 Reduce 270 272: 139(ptr) AccessChain 27(data) 267 65 30 273:22(float64_t) CompositeExtract 271 0 Store 272 273 274: 139(ptr) AccessChain 27(data) 267 65 47 275:22(float64_t) CompositeExtract 271 1 Store 274 275 276: 6(int) Load 8(invocation) 277: 146(ptr) AccessChain 27(data) 51 65 278: 23(f64vec4) Load 277 279:156(f64vec3) VectorShuffle 278 278 0 1 2 280:156(f64vec3) GroupNonUniformFMul 34 Reduce 279 281: 139(ptr) AccessChain 27(data) 276 65 30 282:22(float64_t) CompositeExtract 280 0 Store 281 282 283: 139(ptr) AccessChain 27(data) 276 65 47 284:22(float64_t) CompositeExtract 280 1 Store 283 284 285: 139(ptr) AccessChain 27(data) 276 65 61 286:22(float64_t) CompositeExtract 280 2 Store 285 286 287: 6(int) Load 8(invocation) 288: 146(ptr) AccessChain 27(data) 65 65 289: 23(f64vec4) Load 288 290: 23(f64vec4) GroupNonUniformFMul 34 Reduce 289 291: 146(ptr) AccessChain 27(data) 287 65 Store 291 290 292: 6(int) Load 8(invocation) 293: 31(ptr) AccessChain 27(data) 29 29 30 294: 17(float) Load 293 295: 17(float) GroupNonUniformFMin 34 Reduce 294 296: 31(ptr) AccessChain 27(data) 292 29 30 Store 296 295 297: 6(int) Load 8(invocation) 298: 40(ptr) AccessChain 27(data) 38 29 299: 18(fvec4) Load 298 300: 39(fvec2) VectorShuffle 299 299 0 1 301: 39(fvec2) GroupNonUniformFMin 34 Reduce 300 302: 31(ptr) AccessChain 27(data) 297 29 30 303: 17(float) CompositeExtract 301 0 Store 302 303 304: 31(ptr) AccessChain 27(data) 297 29 47 305: 17(float) CompositeExtract 301 1 Store 304 305 306: 6(int) Load 8(invocation) 307: 40(ptr) AccessChain 27(data) 51 29 308: 18(fvec4) Load 307 309: 52(fvec3) VectorShuffle 308 308 0 1 2 310: 52(fvec3) GroupNonUniformFMin 34 Reduce 309 311: 31(ptr) AccessChain 27(data) 306 29 30 312: 17(float) CompositeExtract 310 0 Store 311 312 313: 31(ptr) AccessChain 27(data) 306 29 47 314: 17(float) CompositeExtract 310 1 Store 313 314 315: 31(ptr) AccessChain 27(data) 306 29 61 316: 17(float) CompositeExtract 310 2 Store 315 316 317: 6(int) Load 8(invocation) 318: 40(ptr) AccessChain 27(data) 65 29 319: 18(fvec4) Load 318 320: 18(fvec4) GroupNonUniformFMin 34 Reduce 319 321: 40(ptr) AccessChain 27(data) 317 29 Store 321 320 322: 6(int) Load 8(invocation) 323: 71(ptr) AccessChain 27(data) 29 38 30 324: 19(int) Load 323 325: 19(int) GroupNonUniformSMin 34 Reduce 324 326: 71(ptr) AccessChain 27(data) 322 38 30 Store 326 325 327: 6(int) Load 8(invocation) 328: 78(ptr) AccessChain 27(data) 38 38 329: 20(ivec4) Load 328 330: 77(ivec2) VectorShuffle 329 329 0 1 331: 77(ivec2) GroupNonUniformSMin 34 Reduce 330 332: 71(ptr) AccessChain 27(data) 327 38 30 333: 19(int) CompositeExtract 331 0 Store 332 333 334: 71(ptr) AccessChain 27(data) 327 38 47 335: 19(int) CompositeExtract 331 1 Store 334 335 336: 6(int) Load 8(invocation) 337: 78(ptr) AccessChain 27(data) 51 38 338: 20(ivec4) Load 337 339: 88(ivec3) VectorShuffle 338 338 0 1 2 340: 88(ivec3) GroupNonUniformSMin 34 Reduce 339 341: 71(ptr) AccessChain 27(data) 336 38 30 342: 19(int) CompositeExtract 340 0 Store 341 342 343: 71(ptr) AccessChain 27(data) 336 38 47 344: 19(int) CompositeExtract 340 1 Store 343 344 345: 71(ptr) AccessChain 27(data) 336 38 61 346: 19(int) CompositeExtract 340 2 Store 345 346 347: 6(int) Load 8(invocation) 348: 78(ptr) AccessChain 27(data) 65 38 349: 20(ivec4) Load 348 350: 20(ivec4) GroupNonUniformSMin 34 Reduce 349 351: 78(ptr) AccessChain 27(data) 347 38 Store 351 350 352: 6(int) Load 8(invocation) 353: 105(ptr) AccessChain 27(data) 29 51 30 354: 6(int) Load 353 355: 6(int) GroupNonUniformUMin 34 Reduce 354 356: 105(ptr) AccessChain 27(data) 352 51 30 Store 356 355 357: 6(int) Load 8(invocation) 358: 112(ptr) AccessChain 27(data) 38 51 359: 21(ivec4) Load 358 360: 111(ivec2) VectorShuffle 359 359 0 1 361: 111(ivec2) GroupNonUniformUMin 34 Reduce 360 362: 105(ptr) AccessChain 27(data) 357 51 30 363: 6(int) CompositeExtract 361 0 Store 362 363 364: 105(ptr) AccessChain 27(data) 357 51 47 365: 6(int) CompositeExtract 361 1 Store 364 365 366: 6(int) Load 8(invocation) 367: 112(ptr) AccessChain 27(data) 51 51 368: 21(ivec4) Load 367 369: 122(ivec3) VectorShuffle 368 368 0 1 2 370: 122(ivec3) GroupNonUniformUMin 34 Reduce 369 371: 105(ptr) AccessChain 27(data) 366 51 30 372: 6(int) CompositeExtract 370 0 Store 371 372 373: 105(ptr) AccessChain 27(data) 366 51 47 374: 6(int) CompositeExtract 370 1 Store 373 374 375: 105(ptr) AccessChain 27(data) 366 51 61 376: 6(int) CompositeExtract 370 2 Store 375 376 377: 6(int) Load 8(invocation) 378: 112(ptr) AccessChain 27(data) 65 51 379: 21(ivec4) Load 378 380: 21(ivec4) GroupNonUniformUMin 34 Reduce 379 381: 112(ptr) AccessChain 27(data) 377 51 Store 381 380 382: 6(int) Load 8(invocation) 383: 139(ptr) AccessChain 27(data) 29 65 30 384:22(float64_t) Load 383 385:22(float64_t) GroupNonUniformFMin 34 Reduce 384 386: 139(ptr) AccessChain 27(data) 382 65 30 Store 386 385 387: 6(int) Load 8(invocation) 388: 146(ptr) AccessChain 27(data) 38 65 389: 23(f64vec4) Load 388 390:145(f64vec2) VectorShuffle 389 389 0 1 391:145(f64vec2) GroupNonUniformFMin 34 Reduce 390 392: 139(ptr) AccessChain 27(data) 387 65 30 393:22(float64_t) CompositeExtract 391 0 Store 392 393 394: 139(ptr) AccessChain 27(data) 387 65 47 395:22(float64_t) CompositeExtract 391 1 Store 394 395 396: 6(int) Load 8(invocation) 397: 146(ptr) AccessChain 27(data) 51 65 398: 23(f64vec4) Load 397 399:156(f64vec3) VectorShuffle 398 398 0 1 2 400:156(f64vec3) GroupNonUniformFMin 34 Reduce 399 401: 139(ptr) AccessChain 27(data) 396 65 30 402:22(float64_t) CompositeExtract 400 0 Store 401 402 403: 139(ptr) AccessChain 27(data) 396 65 47 404:22(float64_t) CompositeExtract 400 1 Store 403 404 405: 139(ptr) AccessChain 27(data) 396 65 61 406:22(float64_t) CompositeExtract 400 2 Store 405 406 407: 6(int) Load 8(invocation) 408: 146(ptr) AccessChain 27(data) 65 65 409: 23(f64vec4) Load 408 410: 23(f64vec4) GroupNonUniformFMin 34 Reduce 409 411: 146(ptr) AccessChain 27(data) 407 65 Store 411 410 412: 6(int) Load 8(invocation) 413: 31(ptr) AccessChain 27(data) 29 29 30 414: 17(float) Load 413 415: 17(float) GroupNonUniformFMax 34 Reduce 414 416: 31(ptr) AccessChain 27(data) 412 29 30 Store 416 415 417: 6(int) Load 8(invocation) 418: 40(ptr) AccessChain 27(data) 38 29 419: 18(fvec4) Load 418 420: 39(fvec2) VectorShuffle 419 419 0 1 421: 39(fvec2) GroupNonUniformFMax 34 Reduce 420 422: 31(ptr) AccessChain 27(data) 417 29 30 423: 17(float) CompositeExtract 421 0 Store 422 423 424: 31(ptr) AccessChain 27(data) 417 29 47 425: 17(float) CompositeExtract 421 1 Store 424 425 426: 6(int) Load 8(invocation) 427: 40(ptr) AccessChain 27(data) 51 29 428: 18(fvec4) Load 427 429: 52(fvec3) VectorShuffle 428 428 0 1 2 430: 52(fvec3) GroupNonUniformFMax 34 Reduce 429 431: 31(ptr) AccessChain 27(data) 426 29 30 432: 17(float) CompositeExtract 430 0 Store 431 432 433: 31(ptr) AccessChain 27(data) 426 29 47 434: 17(float) CompositeExtract 430 1 Store 433 434 435: 31(ptr) AccessChain 27(data) 426 29 61 436: 17(float) CompositeExtract 430 2 Store 435 436 437: 6(int) Load 8(invocation) 438: 40(ptr) AccessChain 27(data) 65 29 439: 18(fvec4) Load 438 440: 18(fvec4) GroupNonUniformFMax 34 Reduce 439 441: 40(ptr) AccessChain 27(data) 437 29 Store 441 440 442: 6(int) Load 8(invocation) 443: 71(ptr) AccessChain 27(data) 29 38 30 444: 19(int) Load 443 445: 19(int) GroupNonUniformSMax 34 Reduce 444 446: 71(ptr) AccessChain 27(data) 442 38 30 Store 446 445 447: 6(int) Load 8(invocation) 448: 78(ptr) AccessChain 27(data) 38 38 449: 20(ivec4) Load 448 450: 77(ivec2) VectorShuffle 449 449 0 1 451: 77(ivec2) GroupNonUniformSMax 34 Reduce 450 452: 71(ptr) AccessChain 27(data) 447 38 30 453: 19(int) CompositeExtract 451 0 Store 452 453 454: 71(ptr) AccessChain 27(data) 447 38 47 455: 19(int) CompositeExtract 451 1 Store 454 455 456: 6(int) Load 8(invocation) 457: 78(ptr) AccessChain 27(data) 51 38 458: 20(ivec4) Load 457 459: 88(ivec3) VectorShuffle 458 458 0 1 2 460: 88(ivec3) GroupNonUniformSMax 34 Reduce 459 461: 71(ptr) AccessChain 27(data) 456 38 30 462: 19(int) CompositeExtract 460 0 Store 461 462 463: 71(ptr) AccessChain 27(data) 456 38 47 464: 19(int) CompositeExtract 460 1 Store 463 464 465: 71(ptr) AccessChain 27(data) 456 38 61 466: 19(int) CompositeExtract 460 2 Store 465 466 467: 6(int) Load 8(invocation) 468: 78(ptr) AccessChain 27(data) 65 38 469: 20(ivec4) Load 468 470: 20(ivec4) GroupNonUniformSMax 34 Reduce 469 471: 78(ptr) AccessChain 27(data) 467 38 Store 471 470 472: 6(int) Load 8(invocation) 473: 105(ptr) AccessChain 27(data) 29 51 30 474: 6(int) Load 473 475: 6(int) GroupNonUniformUMax 34 Reduce 474 476: 105(ptr) AccessChain 27(data) 472 51 30 Store 476 475 477: 6(int) Load 8(invocation) 478: 112(ptr) AccessChain 27(data) 38 51 479: 21(ivec4) Load 478 480: 111(ivec2) VectorShuffle 479 479 0 1 481: 111(ivec2) GroupNonUniformUMax 34 Reduce 480 482: 105(ptr) AccessChain 27(data) 477 51 30 483: 6(int) CompositeExtract 481 0 Store 482 483 484: 105(ptr) AccessChain 27(data) 477 51 47 485: 6(int) CompositeExtract 481 1 Store 484 485 486: 6(int) Load 8(invocation) 487: 112(ptr) AccessChain 27(data) 51 51 488: 21(ivec4) Load 487 489: 122(ivec3) VectorShuffle 488 488 0 1 2 490: 122(ivec3) GroupNonUniformUMax 34 Reduce 489 491: 105(ptr) AccessChain 27(data) 486 51 30 492: 6(int) CompositeExtract 490 0 Store 491 492 493: 105(ptr) AccessChain 27(data) 486 51 47 494: 6(int) CompositeExtract 490 1 Store 493 494 495: 105(ptr) AccessChain 27(data) 486 51 61 496: 6(int) CompositeExtract 490 2 Store 495 496 497: 6(int) Load 8(invocation) 498: 112(ptr) AccessChain 27(data) 65 51 499: 21(ivec4) Load 498 500: 21(ivec4) GroupNonUniformUMax 34 Reduce 499 501: 112(ptr) AccessChain 27(data) 497 51 Store 501 500 502: 6(int) Load 8(invocation) 503: 139(ptr) AccessChain 27(data) 29 65 30 504:22(float64_t) Load 503 505:22(float64_t) GroupNonUniformFMax 34 Reduce 504 506: 139(ptr) AccessChain 27(data) 502 65 30 Store 506 505 507: 6(int) Load 8(invocation) 508: 146(ptr) AccessChain 27(data) 38 65 509: 23(f64vec4) Load 508 510:145(f64vec2) VectorShuffle 509 509 0 1 511:145(f64vec2) GroupNonUniformFMax 34 Reduce 510 512: 139(ptr) AccessChain 27(data) 507 65 30 513:22(float64_t) CompositeExtract 511 0 Store 512 513 514: 139(ptr) AccessChain 27(data) 507 65 47 515:22(float64_t) CompositeExtract 511 1 Store 514 515 516: 6(int) Load 8(invocation) 517: 146(ptr) AccessChain 27(data) 51 65 518: 23(f64vec4) Load 517 519:156(f64vec3) VectorShuffle 518 518 0 1 2 520:156(f64vec3) GroupNonUniformFMax 34 Reduce 519 521: 139(ptr) AccessChain 27(data) 516 65 30 522:22(float64_t) CompositeExtract 520 0 Store 521 522 523: 139(ptr) AccessChain 27(data) 516 65 47 524:22(float64_t) CompositeExtract 520 1 Store 523 524 525: 139(ptr) AccessChain 27(data) 516 65 61 526:22(float64_t) CompositeExtract 520 2 Store 525 526 527: 6(int) Load 8(invocation) 528: 146(ptr) AccessChain 27(data) 65 65 529: 23(f64vec4) Load 528 530: 23(f64vec4) GroupNonUniformFMax 34 Reduce 529 531: 146(ptr) AccessChain 27(data) 527 65 Store 531 530 532: 6(int) Load 8(invocation) 533: 71(ptr) AccessChain 27(data) 29 38 30 534: 19(int) Load 533 535: 19(int) GroupNonUniformBitwiseAnd 34 Reduce 534 536: 71(ptr) AccessChain 27(data) 532 38 30 Store 536 535 537: 6(int) Load 8(invocation) 538: 78(ptr) AccessChain 27(data) 38 38 539: 20(ivec4) Load 538 540: 77(ivec2) VectorShuffle 539 539 0 1 541: 77(ivec2) GroupNonUniformBitwiseAnd 34 Reduce 540 542: 71(ptr) AccessChain 27(data) 537 38 30 543: 19(int) CompositeExtract 541 0 Store 542 543 544: 71(ptr) AccessChain 27(data) 537 38 47 545: 19(int) CompositeExtract 541 1 Store 544 545 546: 6(int) Load 8(invocation) 547: 78(ptr) AccessChain 27(data) 51 38 548: 20(ivec4) Load 547 549: 88(ivec3) VectorShuffle 548 548 0 1 2 550: 88(ivec3) GroupNonUniformBitwiseAnd 34 Reduce 549 551: 71(ptr) AccessChain 27(data) 546 38 30 552: 19(int) CompositeExtract 550 0 Store 551 552 553: 71(ptr) AccessChain 27(data) 546 38 47 554: 19(int) CompositeExtract 550 1 Store 553 554 555: 71(ptr) AccessChain 27(data) 546 38 61 556: 19(int) CompositeExtract 550 2 Store 555 556 557: 6(int) Load 8(invocation) 558: 78(ptr) AccessChain 27(data) 65 38 559: 20(ivec4) Load 558 560: 20(ivec4) GroupNonUniformBitwiseAnd 34 Reduce 559 561: 78(ptr) AccessChain 27(data) 557 38 Store 561 560 562: 6(int) Load 8(invocation) 563: 105(ptr) AccessChain 27(data) 29 51 30 564: 6(int) Load 563 565: 6(int) GroupNonUniformBitwiseAnd 34 Reduce 564 566: 105(ptr) AccessChain 27(data) 562 51 30 Store 566 565 567: 6(int) Load 8(invocation) 568: 112(ptr) AccessChain 27(data) 38 51 569: 21(ivec4) Load 568 570: 111(ivec2) VectorShuffle 569 569 0 1 571: 111(ivec2) GroupNonUniformBitwiseAnd 34 Reduce 570 572: 105(ptr) AccessChain 27(data) 567 51 30 573: 6(int) CompositeExtract 571 0 Store 572 573 574: 105(ptr) AccessChain 27(data) 567 51 47 575: 6(int) CompositeExtract 571 1 Store 574 575 576: 6(int) Load 8(invocation) 577: 112(ptr) AccessChain 27(data) 51 51 578: 21(ivec4) Load 577 579: 122(ivec3) VectorShuffle 578 578 0 1 2 580: 122(ivec3) GroupNonUniformBitwiseAnd 34 Reduce 579 581: 105(ptr) AccessChain 27(data) 576 51 30 582: 6(int) CompositeExtract 580 0 Store 581 582 583: 105(ptr) AccessChain 27(data) 576 51 47 584: 6(int) CompositeExtract 580 1 Store 583 584 585: 105(ptr) AccessChain 27(data) 576 51 61 586: 6(int) CompositeExtract 580 2 Store 585 586 587: 6(int) Load 8(invocation) 588: 112(ptr) AccessChain 27(data) 65 51 589: 21(ivec4) Load 588 590: 21(ivec4) GroupNonUniformBitwiseAnd 34 Reduce 589 591: 112(ptr) AccessChain 27(data) 587 51 Store 591 590 592: 6(int) Load 8(invocation) 593: 71(ptr) AccessChain 27(data) 29 38 30 594: 19(int) Load 593 596: 595(bool) SLessThan 594 29 597: 595(bool) GroupNonUniformLogicalAnd 34 Reduce 596 598: 19(int) Select 597 38 29 599: 71(ptr) AccessChain 27(data) 592 38 30 Store 599 598 600: 6(int) Load 8(invocation) 601: 78(ptr) AccessChain 27(data) 38 38 602: 20(ivec4) Load 601 603: 77(ivec2) VectorShuffle 602 602 0 1 606: 605(bvec2) SLessThan 603 604 607: 605(bvec2) GroupNonUniformLogicalAnd 34 Reduce 606 609: 77(ivec2) Select 607 608 604 610: 71(ptr) AccessChain 27(data) 600 38 30 611: 19(int) CompositeExtract 609 0 Store 610 611 612: 71(ptr) AccessChain 27(data) 600 38 47 613: 19(int) CompositeExtract 609 1 Store 612 613 614: 6(int) Load 8(invocation) 615: 78(ptr) AccessChain 27(data) 38 38 616: 20(ivec4) Load 615 617: 88(ivec3) VectorShuffle 616 616 0 1 2 620: 619(bvec3) SLessThan 617 618 621: 619(bvec3) GroupNonUniformLogicalAnd 34 Reduce 620 623: 88(ivec3) Select 621 622 618 624: 71(ptr) AccessChain 27(data) 614 38 30 625: 19(int) CompositeExtract 623 0 Store 624 625 626: 71(ptr) AccessChain 27(data) 614 38 47 627: 19(int) CompositeExtract 623 1 Store 626 627 628: 71(ptr) AccessChain 27(data) 614 38 61 629: 19(int) CompositeExtract 623 2 Store 628 629 630: 6(int) Load 8(invocation) 631: 78(ptr) AccessChain 27(data) 38 38 632: 20(ivec4) Load 631 635: 634(bvec4) SLessThan 632 633 636: 634(bvec4) GroupNonUniformLogicalAnd 34 Reduce 635 638: 20(ivec4) Select 636 637 633 639: 78(ptr) AccessChain 27(data) 630 38 Store 639 638 640: 6(int) Load 8(invocation) 641: 71(ptr) AccessChain 27(data) 29 38 30 642: 19(int) Load 641 643: 19(int) GroupNonUniformBitwiseOr 34 Reduce 642 644: 71(ptr) AccessChain 27(data) 640 38 30 Store 644 643 645: 6(int) Load 8(invocation) 646: 78(ptr) AccessChain 27(data) 38 38 647: 20(ivec4) Load 646 648: 77(ivec2) VectorShuffle 647 647 0 1 649: 77(ivec2) GroupNonUniformBitwiseOr 34 Reduce 648 650: 71(ptr) AccessChain 27(data) 645 38 30 651: 19(int) CompositeExtract 649 0 Store 650 651 652: 71(ptr) AccessChain 27(data) 645 38 47 653: 19(int) CompositeExtract 649 1 Store 652 653 654: 6(int) Load 8(invocation) 655: 78(ptr) AccessChain 27(data) 51 38 656: 20(ivec4) Load 655 657: 88(ivec3) VectorShuffle 656 656 0 1 2 658: 88(ivec3) GroupNonUniformBitwiseOr 34 Reduce 657 659: 71(ptr) AccessChain 27(data) 654 38 30 660: 19(int) CompositeExtract 658 0 Store 659 660 661: 71(ptr) AccessChain 27(data) 654 38 47 662: 19(int) CompositeExtract 658 1 Store 661 662 663: 71(ptr) AccessChain 27(data) 654 38 61 664: 19(int) CompositeExtract 658 2 Store 663 664 665: 6(int) Load 8(invocation) 666: 78(ptr) AccessChain 27(data) 65 38 667: 20(ivec4) Load 666 668: 20(ivec4) GroupNonUniformBitwiseOr 34 Reduce 667 669: 78(ptr) AccessChain 27(data) 665 38 Store 669 668 670: 6(int) Load 8(invocation) 671: 105(ptr) AccessChain 27(data) 29 51 30 672: 6(int) Load 671 673: 6(int) GroupNonUniformBitwiseOr 34 Reduce 672 674: 105(ptr) AccessChain 27(data) 670 51 30 Store 674 673 675: 6(int) Load 8(invocation) 676: 112(ptr) AccessChain 27(data) 38 51 677: 21(ivec4) Load 676 678: 111(ivec2) VectorShuffle 677 677 0 1 679: 111(ivec2) GroupNonUniformBitwiseOr 34 Reduce 678 680: 105(ptr) AccessChain 27(data) 675 51 30 681: 6(int) CompositeExtract 679 0 Store 680 681 682: 105(ptr) AccessChain 27(data) 675 51 47 683: 6(int) CompositeExtract 679 1 Store 682 683 684: 6(int) Load 8(invocation) 685: 112(ptr) AccessChain 27(data) 51 51 686: 21(ivec4) Load 685 687: 122(ivec3) VectorShuffle 686 686 0 1 2 688: 122(ivec3) GroupNonUniformBitwiseOr 34 Reduce 687 689: 105(ptr) AccessChain 27(data) 684 51 30 690: 6(int) CompositeExtract 688 0 Store 689 690 691: 105(ptr) AccessChain 27(data) 684 51 47 692: 6(int) CompositeExtract 688 1 Store 691 692 693: 105(ptr) AccessChain 27(data) 684 51 61 694: 6(int) CompositeExtract 688 2 Store 693 694 695: 6(int) Load 8(invocation) 696: 112(ptr) AccessChain 27(data) 65 51 697: 21(ivec4) Load 696 698: 21(ivec4) GroupNonUniformBitwiseOr 34 Reduce 697 699: 112(ptr) AccessChain 27(data) 695 51 Store 699 698 700: 6(int) Load 8(invocation) 701: 71(ptr) AccessChain 27(data) 29 38 30 702: 19(int) Load 701 703: 595(bool) SLessThan 702 29 704: 595(bool) GroupNonUniformLogicalOr 34 Reduce 703 705: 19(int) Select 704 38 29 706: 71(ptr) AccessChain 27(data) 700 38 30 Store 706 705 707: 6(int) Load 8(invocation) 708: 78(ptr) AccessChain 27(data) 38 38 709: 20(ivec4) Load 708 710: 77(ivec2) VectorShuffle 709 709 0 1 711: 605(bvec2) SLessThan 710 604 712: 605(bvec2) GroupNonUniformLogicalOr 34 Reduce 711 713: 77(ivec2) Select 712 608 604 714: 71(ptr) AccessChain 27(data) 707 38 30 715: 19(int) CompositeExtract 713 0 Store 714 715 716: 71(ptr) AccessChain 27(data) 707 38 47 717: 19(int) CompositeExtract 713 1 Store 716 717 718: 6(int) Load 8(invocation) 719: 78(ptr) AccessChain 27(data) 38 38 720: 20(ivec4) Load 719 721: 88(ivec3) VectorShuffle 720 720 0 1 2 722: 619(bvec3) SLessThan 721 618 723: 619(bvec3) GroupNonUniformLogicalOr 34 Reduce 722 724: 88(ivec3) Select 723 622 618 725: 71(ptr) AccessChain 27(data) 718 38 30 726: 19(int) CompositeExtract 724 0 Store 725 726 727: 71(ptr) AccessChain 27(data) 718 38 47 728: 19(int) CompositeExtract 724 1 Store 727 728 729: 71(ptr) AccessChain 27(data) 718 38 61 730: 19(int) CompositeExtract 724 2 Store 729 730 731: 6(int) Load 8(invocation) 732: 78(ptr) AccessChain 27(data) 38 38 733: 20(ivec4) Load 732 734: 634(bvec4) SLessThan 733 633 735: 634(bvec4) GroupNonUniformLogicalOr 34 Reduce 734 736: 20(ivec4) Select 735 637 633 737: 78(ptr) AccessChain 27(data) 731 38 Store 737 736 738: 6(int) Load 8(invocation) 739: 71(ptr) AccessChain 27(data) 29 38 30 740: 19(int) Load 739 741: 19(int) GroupNonUniformBitwiseXor 34 Reduce 740 742: 71(ptr) AccessChain 27(data) 738 38 30 Store 742 741 743: 6(int) Load 8(invocation) 744: 78(ptr) AccessChain 27(data) 38 38 745: 20(ivec4) Load 744 746: 77(ivec2) VectorShuffle 745 745 0 1 747: 77(ivec2) GroupNonUniformBitwiseXor 34 Reduce 746 748: 71(ptr) AccessChain 27(data) 743 38 30 749: 19(int) CompositeExtract 747 0 Store 748 749 750: 71(ptr) AccessChain 27(data) 743 38 47 751: 19(int) CompositeExtract 747 1 Store 750 751 752: 6(int) Load 8(invocation) 753: 78(ptr) AccessChain 27(data) 51 38 754: 20(ivec4) Load 753 755: 88(ivec3) VectorShuffle 754 754 0 1 2 756: 88(ivec3) GroupNonUniformBitwiseXor 34 Reduce 755 757: 71(ptr) AccessChain 27(data) 752 38 30 758: 19(int) CompositeExtract 756 0 Store 757 758 759: 71(ptr) AccessChain 27(data) 752 38 47 760: 19(int) CompositeExtract 756 1 Store 759 760 761: 71(ptr) AccessChain 27(data) 752 38 61 762: 19(int) CompositeExtract 756 2 Store 761 762 763: 6(int) Load 8(invocation) 764: 78(ptr) AccessChain 27(data) 65 38 765: 20(ivec4) Load 764 766: 20(ivec4) GroupNonUniformBitwiseXor 34 Reduce 765 767: 78(ptr) AccessChain 27(data) 763 38 Store 767 766 768: 6(int) Load 8(invocation) 769: 105(ptr) AccessChain 27(data) 29 51 30 770: 6(int) Load 769 771: 6(int) GroupNonUniformBitwiseXor 34 Reduce 770 772: 105(ptr) AccessChain 27(data) 768 51 30 Store 772 771 773: 6(int) Load 8(invocation) 774: 112(ptr) AccessChain 27(data) 38 51 775: 21(ivec4) Load 774 776: 111(ivec2) VectorShuffle 775 775 0 1 777: 111(ivec2) GroupNonUniformBitwiseXor 34 Reduce 776 778: 105(ptr) AccessChain 27(data) 773 51 30 779: 6(int) CompositeExtract 777 0 Store 778 779 780: 105(ptr) AccessChain 27(data) 773 51 47 781: 6(int) CompositeExtract 777 1 Store 780 781 782: 6(int) Load 8(invocation) 783: 112(ptr) AccessChain 27(data) 51 51 784: 21(ivec4) Load 783 785: 122(ivec3) VectorShuffle 784 784 0 1 2 786: 122(ivec3) GroupNonUniformBitwiseXor 34 Reduce 785 787: 105(ptr) AccessChain 27(data) 782 51 30 788: 6(int) CompositeExtract 786 0 Store 787 788 789: 105(ptr) AccessChain 27(data) 782 51 47 790: 6(int) CompositeExtract 786 1 Store 789 790 791: 105(ptr) AccessChain 27(data) 782 51 61 792: 6(int) CompositeExtract 786 2 Store 791 792 793: 6(int) Load 8(invocation) 794: 112(ptr) AccessChain 27(data) 65 51 795: 21(ivec4) Load 794 796: 21(ivec4) GroupNonUniformBitwiseXor 34 Reduce 795 797: 112(ptr) AccessChain 27(data) 793 51 Store 797 796 798: 6(int) Load 8(invocation) 799: 71(ptr) AccessChain 27(data) 29 38 30 800: 19(int) Load 799 801: 595(bool) SLessThan 800 29 802: 595(bool) GroupNonUniformLogicalXor 34 Reduce 801 803: 19(int) Select 802 38 29 804: 71(ptr) AccessChain 27(data) 798 38 30 Store 804 803 805: 6(int) Load 8(invocation) 806: 78(ptr) AccessChain 27(data) 38 38 807: 20(ivec4) Load 806 808: 77(ivec2) VectorShuffle 807 807 0 1 809: 605(bvec2) SLessThan 808 604 810: 605(bvec2) GroupNonUniformLogicalXor 34 Reduce 809 811: 77(ivec2) Select 810 608 604 812: 71(ptr) AccessChain 27(data) 805 38 30 813: 19(int) CompositeExtract 811 0 Store 812 813 814: 71(ptr) AccessChain 27(data) 805 38 47 815: 19(int) CompositeExtract 811 1 Store 814 815 816: 6(int) Load 8(invocation) 817: 78(ptr) AccessChain 27(data) 38 38 818: 20(ivec4) Load 817 819: 88(ivec3) VectorShuffle 818 818 0 1 2 820: 619(bvec3) SLessThan 819 618 821: 619(bvec3) GroupNonUniformLogicalXor 34 Reduce 820 822: 88(ivec3) Select 821 622 618 823: 71(ptr) AccessChain 27(data) 816 38 30 824: 19(int) CompositeExtract 822 0 Store 823 824 825: 71(ptr) AccessChain 27(data) 816 38 47 826: 19(int) CompositeExtract 822 1 Store 825 826 827: 71(ptr) AccessChain 27(data) 816 38 61 828: 19(int) CompositeExtract 822 2 Store 827 828 829: 6(int) Load 8(invocation) 830: 78(ptr) AccessChain 27(data) 38 38 831: 20(ivec4) Load 830 832: 634(bvec4) SLessThan 831 633 833: 634(bvec4) GroupNonUniformLogicalXor 34 Reduce 832 834: 20(ivec4) Select 833 637 633 835: 78(ptr) AccessChain 27(data) 829 38 Store 835 834 836: 6(int) Load 8(invocation) 837: 31(ptr) AccessChain 27(data) 29 29 30 838: 17(float) Load 837 839: 17(float) GroupNonUniformFAdd 34 InclusiveScan 838 840: 31(ptr) AccessChain 27(data) 836 29 30 Store 840 839 841: 6(int) Load 8(invocation) 842: 40(ptr) AccessChain 27(data) 38 29 843: 18(fvec4) Load 842 844: 39(fvec2) VectorShuffle 843 843 0 1 845: 39(fvec2) GroupNonUniformFAdd 34 InclusiveScan 844 846: 31(ptr) AccessChain 27(data) 841 29 30 847: 17(float) CompositeExtract 845 0 Store 846 847 848: 31(ptr) AccessChain 27(data) 841 29 47 849: 17(float) CompositeExtract 845 1 Store 848 849 850: 6(int) Load 8(invocation) 851: 40(ptr) AccessChain 27(data) 51 29 852: 18(fvec4) Load 851 853: 52(fvec3) VectorShuffle 852 852 0 1 2 854: 52(fvec3) GroupNonUniformFAdd 34 InclusiveScan 853 855: 31(ptr) AccessChain 27(data) 850 29 30 856: 17(float) CompositeExtract 854 0 Store 855 856 857: 31(ptr) AccessChain 27(data) 850 29 47 858: 17(float) CompositeExtract 854 1 Store 857 858 859: 31(ptr) AccessChain 27(data) 850 29 61 860: 17(float) CompositeExtract 854 2 Store 859 860 861: 6(int) Load 8(invocation) 862: 40(ptr) AccessChain 27(data) 65 29 863: 18(fvec4) Load 862 864: 18(fvec4) GroupNonUniformFAdd 34 InclusiveScan 863 865: 40(ptr) AccessChain 27(data) 861 29 Store 865 864 866: 6(int) Load 8(invocation) 867: 71(ptr) AccessChain 27(data) 29 38 30 868: 19(int) Load 867 869: 19(int) GroupNonUniformIAdd 34 InclusiveScan 868 870: 71(ptr) AccessChain 27(data) 866 38 30 Store 870 869 871: 6(int) Load 8(invocation) 872: 78(ptr) AccessChain 27(data) 38 38 873: 20(ivec4) Load 872 874: 77(ivec2) VectorShuffle 873 873 0 1 875: 77(ivec2) GroupNonUniformIAdd 34 InclusiveScan 874 876: 71(ptr) AccessChain 27(data) 871 38 30 877: 19(int) CompositeExtract 875 0 Store 876 877 878: 71(ptr) AccessChain 27(data) 871 38 47 879: 19(int) CompositeExtract 875 1 Store 878 879 880: 6(int) Load 8(invocation) 881: 78(ptr) AccessChain 27(data) 51 38 882: 20(ivec4) Load 881 883: 88(ivec3) VectorShuffle 882 882 0 1 2 884: 88(ivec3) GroupNonUniformIAdd 34 InclusiveScan 883 885: 71(ptr) AccessChain 27(data) 880 38 30 886: 19(int) CompositeExtract 884 0 Store 885 886 887: 71(ptr) AccessChain 27(data) 880 38 47 888: 19(int) CompositeExtract 884 1 Store 887 888 889: 71(ptr) AccessChain 27(data) 880 38 61 890: 19(int) CompositeExtract 884 2 Store 889 890 891: 6(int) Load 8(invocation) 892: 78(ptr) AccessChain 27(data) 65 38 893: 20(ivec4) Load 892 894: 20(ivec4) GroupNonUniformIAdd 34 InclusiveScan 893 895: 78(ptr) AccessChain 27(data) 891 38 Store 895 894 896: 6(int) Load 8(invocation) 897: 105(ptr) AccessChain 27(data) 29 51 30 898: 6(int) Load 897 899: 6(int) GroupNonUniformIAdd 34 InclusiveScan 898 900: 105(ptr) AccessChain 27(data) 896 51 30 Store 900 899 901: 6(int) Load 8(invocation) 902: 112(ptr) AccessChain 27(data) 38 51 903: 21(ivec4) Load 902 904: 111(ivec2) VectorShuffle 903 903 0 1 905: 111(ivec2) GroupNonUniformIAdd 34 InclusiveScan 904 906: 105(ptr) AccessChain 27(data) 901 51 30 907: 6(int) CompositeExtract 905 0 Store 906 907 908: 105(ptr) AccessChain 27(data) 901 51 47 909: 6(int) CompositeExtract 905 1 Store 908 909 910: 6(int) Load 8(invocation) 911: 112(ptr) AccessChain 27(data) 51 51 912: 21(ivec4) Load 911 913: 122(ivec3) VectorShuffle 912 912 0 1 2 914: 122(ivec3) GroupNonUniformIAdd 34 InclusiveScan 913 915: 105(ptr) AccessChain 27(data) 910 51 30 916: 6(int) CompositeExtract 914 0 Store 915 916 917: 105(ptr) AccessChain 27(data) 910 51 47 918: 6(int) CompositeExtract 914 1 Store 917 918 919: 105(ptr) AccessChain 27(data) 910 51 61 920: 6(int) CompositeExtract 914 2 Store 919 920 921: 6(int) Load 8(invocation) 922: 112(ptr) AccessChain 27(data) 65 51 923: 21(ivec4) Load 922 924: 21(ivec4) GroupNonUniformIAdd 34 InclusiveScan 923 925: 112(ptr) AccessChain 27(data) 921 51 Store 925 924 926: 6(int) Load 8(invocation) 927: 139(ptr) AccessChain 27(data) 29 65 30 928:22(float64_t) Load 927 929:22(float64_t) GroupNonUniformFAdd 34 InclusiveScan 928 930: 139(ptr) AccessChain 27(data) 926 65 30 Store 930 929 931: 6(int) Load 8(invocation) 932: 146(ptr) AccessChain 27(data) 38 65 933: 23(f64vec4) Load 932 934:145(f64vec2) VectorShuffle 933 933 0 1 935:145(f64vec2) GroupNonUniformFAdd 34 InclusiveScan 934 936: 139(ptr) AccessChain 27(data) 931 65 30 937:22(float64_t) CompositeExtract 935 0 Store 936 937 938: 139(ptr) AccessChain 27(data) 931 65 47 939:22(float64_t) CompositeExtract 935 1 Store 938 939 940: 6(int) Load 8(invocation) 941: 146(ptr) AccessChain 27(data) 51 65 942: 23(f64vec4) Load 941 943:156(f64vec3) VectorShuffle 942 942 0 1 2 944:156(f64vec3) GroupNonUniformFAdd 34 InclusiveScan 943 945: 139(ptr) AccessChain 27(data) 940 65 30 946:22(float64_t) CompositeExtract 944 0 Store 945 946 947: 139(ptr) AccessChain 27(data) 940 65 47 948:22(float64_t) CompositeExtract 944 1 Store 947 948 949: 139(ptr) AccessChain 27(data) 940 65 61 950:22(float64_t) CompositeExtract 944 2 Store 949 950 951: 6(int) Load 8(invocation) 952: 146(ptr) AccessChain 27(data) 65 65 953: 23(f64vec4) Load 952 954: 23(f64vec4) GroupNonUniformFAdd 34 InclusiveScan 953 955: 146(ptr) AccessChain 27(data) 951 65 Store 955 954 956: 6(int) Load 8(invocation) 957: 31(ptr) AccessChain 27(data) 29 29 30 958: 17(float) Load 957 959: 17(float) GroupNonUniformFMul 34 InclusiveScan 958 960: 31(ptr) AccessChain 27(data) 956 29 30 Store 960 959 961: 6(int) Load 8(invocation) 962: 40(ptr) AccessChain 27(data) 38 29 963: 18(fvec4) Load 962 964: 39(fvec2) VectorShuffle 963 963 0 1 965: 39(fvec2) GroupNonUniformFMul 34 InclusiveScan 964 966: 31(ptr) AccessChain 27(data) 961 29 30 967: 17(float) CompositeExtract 965 0 Store 966 967 968: 31(ptr) AccessChain 27(data) 961 29 47 969: 17(float) CompositeExtract 965 1 Store 968 969 970: 6(int) Load 8(invocation) 971: 40(ptr) AccessChain 27(data) 51 29 972: 18(fvec4) Load 971 973: 52(fvec3) VectorShuffle 972 972 0 1 2 974: 52(fvec3) GroupNonUniformFMul 34 InclusiveScan 973 975: 31(ptr) AccessChain 27(data) 970 29 30 976: 17(float) CompositeExtract 974 0 Store 975 976 977: 31(ptr) AccessChain 27(data) 970 29 47 978: 17(float) CompositeExtract 974 1 Store 977 978 979: 31(ptr) AccessChain 27(data) 970 29 61 980: 17(float) CompositeExtract 974 2 Store 979 980 981: 6(int) Load 8(invocation) 982: 40(ptr) AccessChain 27(data) 65 29 983: 18(fvec4) Load 982 984: 18(fvec4) GroupNonUniformFMul 34 InclusiveScan 983 985: 40(ptr) AccessChain 27(data) 981 29 Store 985 984 986: 6(int) Load 8(invocation) 987: 71(ptr) AccessChain 27(data) 29 38 30 988: 19(int) Load 987 989: 19(int) GroupNonUniformIMul 34 InclusiveScan 988 990: 71(ptr) AccessChain 27(data) 986 38 30 Store 990 989 991: 6(int) Load 8(invocation) 992: 78(ptr) AccessChain 27(data) 38 38 993: 20(ivec4) Load 992 994: 77(ivec2) VectorShuffle 993 993 0 1 995: 77(ivec2) GroupNonUniformIMul 34 InclusiveScan 994 996: 71(ptr) AccessChain 27(data) 991 38 30 997: 19(int) CompositeExtract 995 0 Store 996 997 998: 71(ptr) AccessChain 27(data) 991 38 47 999: 19(int) CompositeExtract 995 1 Store 998 999 1000: 6(int) Load 8(invocation) 1001: 78(ptr) AccessChain 27(data) 51 38 1002: 20(ivec4) Load 1001 1003: 88(ivec3) VectorShuffle 1002 1002 0 1 2 1004: 88(ivec3) GroupNonUniformIMul 34 InclusiveScan 1003 1005: 71(ptr) AccessChain 27(data) 1000 38 30 1006: 19(int) CompositeExtract 1004 0 Store 1005 1006 1007: 71(ptr) AccessChain 27(data) 1000 38 47 1008: 19(int) CompositeExtract 1004 1 Store 1007 1008 1009: 71(ptr) AccessChain 27(data) 1000 38 61 1010: 19(int) CompositeExtract 1004 2 Store 1009 1010 1011: 6(int) Load 8(invocation) 1012: 78(ptr) AccessChain 27(data) 65 38 1013: 20(ivec4) Load 1012 1014: 20(ivec4) GroupNonUniformIMul 34 InclusiveScan 1013 1015: 78(ptr) AccessChain 27(data) 1011 38 Store 1015 1014 1016: 6(int) Load 8(invocation) 1017: 105(ptr) AccessChain 27(data) 29 51 30 1018: 6(int) Load 1017 1019: 6(int) GroupNonUniformIMul 34 InclusiveScan 1018 1020: 105(ptr) AccessChain 27(data) 1016 51 30 Store 1020 1019 1021: 6(int) Load 8(invocation) 1022: 112(ptr) AccessChain 27(data) 38 51 1023: 21(ivec4) Load 1022 1024: 111(ivec2) VectorShuffle 1023 1023 0 1 1025: 111(ivec2) GroupNonUniformIMul 34 InclusiveScan 1024 1026: 105(ptr) AccessChain 27(data) 1021 51 30 1027: 6(int) CompositeExtract 1025 0 Store 1026 1027 1028: 105(ptr) AccessChain 27(data) 1021 51 47 1029: 6(int) CompositeExtract 1025 1 Store 1028 1029 1030: 6(int) Load 8(invocation) 1031: 112(ptr) AccessChain 27(data) 51 51 1032: 21(ivec4) Load 1031 1033: 122(ivec3) VectorShuffle 1032 1032 0 1 2 1034: 122(ivec3) GroupNonUniformIMul 34 InclusiveScan 1033 1035: 105(ptr) AccessChain 27(data) 1030 51 30 1036: 6(int) CompositeExtract 1034 0 Store 1035 1036 1037: 105(ptr) AccessChain 27(data) 1030 51 47 1038: 6(int) CompositeExtract 1034 1 Store 1037 1038 1039: 105(ptr) AccessChain 27(data) 1030 51 61 1040: 6(int) CompositeExtract 1034 2 Store 1039 1040 1041: 6(int) Load 8(invocation) 1042: 112(ptr) AccessChain 27(data) 65 51 1043: 21(ivec4) Load 1042 1044: 21(ivec4) GroupNonUniformIMul 34 InclusiveScan 1043 1045: 112(ptr) AccessChain 27(data) 1041 51 Store 1045 1044 1046: 6(int) Load 8(invocation) 1047: 139(ptr) AccessChain 27(data) 29 65 30 1048:22(float64_t) Load 1047 1049:22(float64_t) GroupNonUniformFMul 34 InclusiveScan 1048 1050: 139(ptr) AccessChain 27(data) 1046 65 30 Store 1050 1049 1051: 6(int) Load 8(invocation) 1052: 146(ptr) AccessChain 27(data) 38 65 1053: 23(f64vec4) Load 1052 1054:145(f64vec2) VectorShuffle 1053 1053 0 1 1055:145(f64vec2) GroupNonUniformFMul 34 InclusiveScan 1054 1056: 139(ptr) AccessChain 27(data) 1051 65 30 1057:22(float64_t) CompositeExtract 1055 0 Store 1056 1057 1058: 139(ptr) AccessChain 27(data) 1051 65 47 1059:22(float64_t) CompositeExtract 1055 1 Store 1058 1059 1060: 6(int) Load 8(invocation) 1061: 146(ptr) AccessChain 27(data) 51 65 1062: 23(f64vec4) Load 1061 1063:156(f64vec3) VectorShuffle 1062 1062 0 1 2 1064:156(f64vec3) GroupNonUniformFMul 34 InclusiveScan 1063 1065: 139(ptr) AccessChain 27(data) 1060 65 30 1066:22(float64_t) CompositeExtract 1064 0 Store 1065 1066 1067: 139(ptr) AccessChain 27(data) 1060 65 47 1068:22(float64_t) CompositeExtract 1064 1 Store 1067 1068 1069: 139(ptr) AccessChain 27(data) 1060 65 61 1070:22(float64_t) CompositeExtract 1064 2 Store 1069 1070 1071: 6(int) Load 8(invocation) 1072: 146(ptr) AccessChain 27(data) 65 65 1073: 23(f64vec4) Load 1072 1074: 23(f64vec4) GroupNonUniformFMul 34 InclusiveScan 1073 1075: 146(ptr) AccessChain 27(data) 1071 65 Store 1075 1074 1076: 6(int) Load 8(invocation) 1077: 31(ptr) AccessChain 27(data) 29 29 30 1078: 17(float) Load 1077 1079: 17(float) GroupNonUniformFMin 34 InclusiveScan 1078 1080: 31(ptr) AccessChain 27(data) 1076 29 30 Store 1080 1079 1081: 6(int) Load 8(invocation) 1082: 40(ptr) AccessChain 27(data) 38 29 1083: 18(fvec4) Load 1082 1084: 39(fvec2) VectorShuffle 1083 1083 0 1 1085: 39(fvec2) GroupNonUniformFMin 34 InclusiveScan 1084 1086: 31(ptr) AccessChain 27(data) 1081 29 30 1087: 17(float) CompositeExtract 1085 0 Store 1086 1087 1088: 31(ptr) AccessChain 27(data) 1081 29 47 1089: 17(float) CompositeExtract 1085 1 Store 1088 1089 1090: 6(int) Load 8(invocation) 1091: 40(ptr) AccessChain 27(data) 51 29 1092: 18(fvec4) Load 1091 1093: 52(fvec3) VectorShuffle 1092 1092 0 1 2 1094: 52(fvec3) GroupNonUniformFMin 34 InclusiveScan 1093 1095: 31(ptr) AccessChain 27(data) 1090 29 30 1096: 17(float) CompositeExtract 1094 0 Store 1095 1096 1097: 31(ptr) AccessChain 27(data) 1090 29 47 1098: 17(float) CompositeExtract 1094 1 Store 1097 1098 1099: 31(ptr) AccessChain 27(data) 1090 29 61 1100: 17(float) CompositeExtract 1094 2 Store 1099 1100 1101: 6(int) Load 8(invocation) 1102: 40(ptr) AccessChain 27(data) 65 29 1103: 18(fvec4) Load 1102 1104: 18(fvec4) GroupNonUniformFMin 34 InclusiveScan 1103 1105: 40(ptr) AccessChain 27(data) 1101 29 Store 1105 1104 1106: 6(int) Load 8(invocation) 1107: 71(ptr) AccessChain 27(data) 29 38 30 1108: 19(int) Load 1107 1109: 19(int) GroupNonUniformSMin 34 InclusiveScan 1108 1110: 71(ptr) AccessChain 27(data) 1106 38 30 Store 1110 1109 1111: 6(int) Load 8(invocation) 1112: 78(ptr) AccessChain 27(data) 38 38 1113: 20(ivec4) Load 1112 1114: 77(ivec2) VectorShuffle 1113 1113 0 1 1115: 77(ivec2) GroupNonUniformSMin 34 InclusiveScan 1114 1116: 71(ptr) AccessChain 27(data) 1111 38 30 1117: 19(int) CompositeExtract 1115 0 Store 1116 1117 1118: 71(ptr) AccessChain 27(data) 1111 38 47 1119: 19(int) CompositeExtract 1115 1 Store 1118 1119 1120: 6(int) Load 8(invocation) 1121: 78(ptr) AccessChain 27(data) 51 38 1122: 20(ivec4) Load 1121 1123: 88(ivec3) VectorShuffle 1122 1122 0 1 2 1124: 88(ivec3) GroupNonUniformSMin 34 InclusiveScan 1123 1125: 71(ptr) AccessChain 27(data) 1120 38 30 1126: 19(int) CompositeExtract 1124 0 Store 1125 1126 1127: 71(ptr) AccessChain 27(data) 1120 38 47 1128: 19(int) CompositeExtract 1124 1 Store 1127 1128 1129: 71(ptr) AccessChain 27(data) 1120 38 61 1130: 19(int) CompositeExtract 1124 2 Store 1129 1130 1131: 6(int) Load 8(invocation) 1132: 78(ptr) AccessChain 27(data) 65 38 1133: 20(ivec4) Load 1132 1134: 20(ivec4) GroupNonUniformSMin 34 InclusiveScan 1133 1135: 78(ptr) AccessChain 27(data) 1131 38 Store 1135 1134 1136: 6(int) Load 8(invocation) 1137: 105(ptr) AccessChain 27(data) 29 51 30 1138: 6(int) Load 1137 1139: 6(int) GroupNonUniformUMin 34 InclusiveScan 1138 1140: 105(ptr) AccessChain 27(data) 1136 51 30 Store 1140 1139 1141: 6(int) Load 8(invocation) 1142: 112(ptr) AccessChain 27(data) 38 51 1143: 21(ivec4) Load 1142 1144: 111(ivec2) VectorShuffle 1143 1143 0 1 1145: 111(ivec2) GroupNonUniformUMin 34 InclusiveScan 1144 1146: 105(ptr) AccessChain 27(data) 1141 51 30 1147: 6(int) CompositeExtract 1145 0 Store 1146 1147 1148: 105(ptr) AccessChain 27(data) 1141 51 47 1149: 6(int) CompositeExtract 1145 1 Store 1148 1149 1150: 6(int) Load 8(invocation) 1151: 112(ptr) AccessChain 27(data) 51 51 1152: 21(ivec4) Load 1151 1153: 122(ivec3) VectorShuffle 1152 1152 0 1 2 1154: 122(ivec3) GroupNonUniformUMin 34 InclusiveScan 1153 1155: 105(ptr) AccessChain 27(data) 1150 51 30 1156: 6(int) CompositeExtract 1154 0 Store 1155 1156 1157: 105(ptr) AccessChain 27(data) 1150 51 47 1158: 6(int) CompositeExtract 1154 1 Store 1157 1158 1159: 105(ptr) AccessChain 27(data) 1150 51 61 1160: 6(int) CompositeExtract 1154 2 Store 1159 1160 1161: 6(int) Load 8(invocation) 1162: 112(ptr) AccessChain 27(data) 65 51 1163: 21(ivec4) Load 1162 1164: 21(ivec4) GroupNonUniformUMin 34 InclusiveScan 1163 1165: 112(ptr) AccessChain 27(data) 1161 51 Store 1165 1164 1166: 6(int) Load 8(invocation) 1167: 139(ptr) AccessChain 27(data) 29 65 30 1168:22(float64_t) Load 1167 1169:22(float64_t) GroupNonUniformFMin 34 InclusiveScan 1168 1170: 139(ptr) AccessChain 27(data) 1166 65 30 Store 1170 1169 1171: 6(int) Load 8(invocation) 1172: 146(ptr) AccessChain 27(data) 38 65 1173: 23(f64vec4) Load 1172 1174:145(f64vec2) VectorShuffle 1173 1173 0 1 1175:145(f64vec2) GroupNonUniformFMin 34 InclusiveScan 1174 1176: 139(ptr) AccessChain 27(data) 1171 65 30 1177:22(float64_t) CompositeExtract 1175 0 Store 1176 1177 1178: 139(ptr) AccessChain 27(data) 1171 65 47 1179:22(float64_t) CompositeExtract 1175 1 Store 1178 1179 1180: 6(int) Load 8(invocation) 1181: 146(ptr) AccessChain 27(data) 51 65 1182: 23(f64vec4) Load 1181 1183:156(f64vec3) VectorShuffle 1182 1182 0 1 2 1184:156(f64vec3) GroupNonUniformFMin 34 InclusiveScan 1183 1185: 139(ptr) AccessChain 27(data) 1180 65 30 1186:22(float64_t) CompositeExtract 1184 0 Store 1185 1186 1187: 139(ptr) AccessChain 27(data) 1180 65 47 1188:22(float64_t) CompositeExtract 1184 1 Store 1187 1188 1189: 139(ptr) AccessChain 27(data) 1180 65 61 1190:22(float64_t) CompositeExtract 1184 2 Store 1189 1190 1191: 6(int) Load 8(invocation) 1192: 146(ptr) AccessChain 27(data) 65 65 1193: 23(f64vec4) Load 1192 1194: 23(f64vec4) GroupNonUniformFMin 34 InclusiveScan 1193 1195: 146(ptr) AccessChain 27(data) 1191 65 Store 1195 1194 1196: 6(int) Load 8(invocation) 1197: 31(ptr) AccessChain 27(data) 29 29 30 1198: 17(float) Load 1197 1199: 17(float) GroupNonUniformFMax 34 InclusiveScan 1198 1200: 31(ptr) AccessChain 27(data) 1196 29 30 Store 1200 1199 1201: 6(int) Load 8(invocation) 1202: 40(ptr) AccessChain 27(data) 38 29 1203: 18(fvec4) Load 1202 1204: 39(fvec2) VectorShuffle 1203 1203 0 1 1205: 39(fvec2) GroupNonUniformFMax 34 InclusiveScan 1204 1206: 31(ptr) AccessChain 27(data) 1201 29 30 1207: 17(float) CompositeExtract 1205 0 Store 1206 1207 1208: 31(ptr) AccessChain 27(data) 1201 29 47 1209: 17(float) CompositeExtract 1205 1 Store 1208 1209 1210: 6(int) Load 8(invocation) 1211: 40(ptr) AccessChain 27(data) 51 29 1212: 18(fvec4) Load 1211 1213: 52(fvec3) VectorShuffle 1212 1212 0 1 2 1214: 52(fvec3) GroupNonUniformFMax 34 InclusiveScan 1213 1215: 31(ptr) AccessChain 27(data) 1210 29 30 1216: 17(float) CompositeExtract 1214 0 Store 1215 1216 1217: 31(ptr) AccessChain 27(data) 1210 29 47 1218: 17(float) CompositeExtract 1214 1 Store 1217 1218 1219: 31(ptr) AccessChain 27(data) 1210 29 61 1220: 17(float) CompositeExtract 1214 2 Store 1219 1220 1221: 6(int) Load 8(invocation) 1222: 40(ptr) AccessChain 27(data) 65 29 1223: 18(fvec4) Load 1222 1224: 18(fvec4) GroupNonUniformFMax 34 InclusiveScan 1223 1225: 40(ptr) AccessChain 27(data) 1221 29 Store 1225 1224 1226: 6(int) Load 8(invocation) 1227: 71(ptr) AccessChain 27(data) 29 38 30 1228: 19(int) Load 1227 1229: 19(int) GroupNonUniformSMax 34 InclusiveScan 1228 1230: 71(ptr) AccessChain 27(data) 1226 38 30 Store 1230 1229 1231: 6(int) Load 8(invocation) 1232: 78(ptr) AccessChain 27(data) 38 38 1233: 20(ivec4) Load 1232 1234: 77(ivec2) VectorShuffle 1233 1233 0 1 1235: 77(ivec2) GroupNonUniformSMax 34 InclusiveScan 1234 1236: 71(ptr) AccessChain 27(data) 1231 38 30 1237: 19(int) CompositeExtract 1235 0 Store 1236 1237 1238: 71(ptr) AccessChain 27(data) 1231 38 47 1239: 19(int) CompositeExtract 1235 1 Store 1238 1239 1240: 6(int) Load 8(invocation) 1241: 78(ptr) AccessChain 27(data) 51 38 1242: 20(ivec4) Load 1241 1243: 88(ivec3) VectorShuffle 1242 1242 0 1 2 1244: 88(ivec3) GroupNonUniformSMax 34 InclusiveScan 1243 1245: 71(ptr) AccessChain 27(data) 1240 38 30 1246: 19(int) CompositeExtract 1244 0 Store 1245 1246 1247: 71(ptr) AccessChain 27(data) 1240 38 47 1248: 19(int) CompositeExtract 1244 1 Store 1247 1248 1249: 71(ptr) AccessChain 27(data) 1240 38 61 1250: 19(int) CompositeExtract 1244 2 Store 1249 1250 1251: 6(int) Load 8(invocation) 1252: 78(ptr) AccessChain 27(data) 65 38 1253: 20(ivec4) Load 1252 1254: 20(ivec4) GroupNonUniformSMax 34 InclusiveScan 1253 1255: 78(ptr) AccessChain 27(data) 1251 38 Store 1255 1254 1256: 6(int) Load 8(invocation) 1257: 105(ptr) AccessChain 27(data) 29 51 30 1258: 6(int) Load 1257 1259: 6(int) GroupNonUniformUMax 34 InclusiveScan 1258 1260: 105(ptr) AccessChain 27(data) 1256 51 30 Store 1260 1259 1261: 6(int) Load 8(invocation) 1262: 112(ptr) AccessChain 27(data) 38 51 1263: 21(ivec4) Load 1262 1264: 111(ivec2) VectorShuffle 1263 1263 0 1 1265: 111(ivec2) GroupNonUniformUMax 34 InclusiveScan 1264 1266: 105(ptr) AccessChain 27(data) 1261 51 30 1267: 6(int) CompositeExtract 1265 0 Store 1266 1267 1268: 105(ptr) AccessChain 27(data) 1261 51 47 1269: 6(int) CompositeExtract 1265 1 Store 1268 1269 1270: 6(int) Load 8(invocation) 1271: 112(ptr) AccessChain 27(data) 51 51 1272: 21(ivec4) Load 1271 1273: 122(ivec3) VectorShuffle 1272 1272 0 1 2 1274: 122(ivec3) GroupNonUniformUMax 34 InclusiveScan 1273 1275: 105(ptr) AccessChain 27(data) 1270 51 30 1276: 6(int) CompositeExtract 1274 0 Store 1275 1276 1277: 105(ptr) AccessChain 27(data) 1270 51 47 1278: 6(int) CompositeExtract 1274 1 Store 1277 1278 1279: 105(ptr) AccessChain 27(data) 1270 51 61 1280: 6(int) CompositeExtract 1274 2 Store 1279 1280 1281: 6(int) Load 8(invocation) 1282: 112(ptr) AccessChain 27(data) 65 51 1283: 21(ivec4) Load 1282 1284: 21(ivec4) GroupNonUniformUMax 34 InclusiveScan 1283 1285: 112(ptr) AccessChain 27(data) 1281 51 Store 1285 1284 1286: 6(int) Load 8(invocation) 1287: 139(ptr) AccessChain 27(data) 29 65 30 1288:22(float64_t) Load 1287 1289:22(float64_t) GroupNonUniformFMax 34 InclusiveScan 1288 1290: 139(ptr) AccessChain 27(data) 1286 65 30 Store 1290 1289 1291: 6(int) Load 8(invocation) 1292: 146(ptr) AccessChain 27(data) 38 65 1293: 23(f64vec4) Load 1292 1294:145(f64vec2) VectorShuffle 1293 1293 0 1 1295:145(f64vec2) GroupNonUniformFMax 34 InclusiveScan 1294 1296: 139(ptr) AccessChain 27(data) 1291 65 30 1297:22(float64_t) CompositeExtract 1295 0 Store 1296 1297 1298: 139(ptr) AccessChain 27(data) 1291 65 47 1299:22(float64_t) CompositeExtract 1295 1 Store 1298 1299 1300: 6(int) Load 8(invocation) 1301: 146(ptr) AccessChain 27(data) 51 65 1302: 23(f64vec4) Load 1301 1303:156(f64vec3) VectorShuffle 1302 1302 0 1 2 1304:156(f64vec3) GroupNonUniformFMax 34 InclusiveScan 1303 1305: 139(ptr) AccessChain 27(data) 1300 65 30 1306:22(float64_t) CompositeExtract 1304 0 Store 1305 1306 1307: 139(ptr) AccessChain 27(data) 1300 65 47 1308:22(float64_t) CompositeExtract 1304 1 Store 1307 1308 1309: 139(ptr) AccessChain 27(data) 1300 65 61 1310:22(float64_t) CompositeExtract 1304 2 Store 1309 1310 1311: 6(int) Load 8(invocation) 1312: 146(ptr) AccessChain 27(data) 65 65 1313: 23(f64vec4) Load 1312 1314: 23(f64vec4) GroupNonUniformFMax 34 InclusiveScan 1313 1315: 146(ptr) AccessChain 27(data) 1311 65 Store 1315 1314 1316: 6(int) Load 8(invocation) 1317: 71(ptr) AccessChain 27(data) 29 38 30 1318: 19(int) Load 1317 1319: 19(int) GroupNonUniformBitwiseAnd 34 InclusiveScan 1318 1320: 71(ptr) AccessChain 27(data) 1316 38 30 Store 1320 1319 1321: 6(int) Load 8(invocation) 1322: 78(ptr) AccessChain 27(data) 38 38 1323: 20(ivec4) Load 1322 1324: 77(ivec2) VectorShuffle 1323 1323 0 1 1325: 77(ivec2) GroupNonUniformBitwiseAnd 34 InclusiveScan 1324 1326: 71(ptr) AccessChain 27(data) 1321 38 30 1327: 19(int) CompositeExtract 1325 0 Store 1326 1327 1328: 71(ptr) AccessChain 27(data) 1321 38 47 1329: 19(int) CompositeExtract 1325 1 Store 1328 1329 1330: 6(int) Load 8(invocation) 1331: 78(ptr) AccessChain 27(data) 51 38 1332: 20(ivec4) Load 1331 1333: 88(ivec3) VectorShuffle 1332 1332 0 1 2 1334: 88(ivec3) GroupNonUniformBitwiseAnd 34 InclusiveScan 1333 1335: 71(ptr) AccessChain 27(data) 1330 38 30 1336: 19(int) CompositeExtract 1334 0 Store 1335 1336 1337: 71(ptr) AccessChain 27(data) 1330 38 47 1338: 19(int) CompositeExtract 1334 1 Store 1337 1338 1339: 71(ptr) AccessChain 27(data) 1330 38 61 1340: 19(int) CompositeExtract 1334 2 Store 1339 1340 1341: 6(int) Load 8(invocation) 1342: 78(ptr) AccessChain 27(data) 65 38 1343: 20(ivec4) Load 1342 1344: 20(ivec4) GroupNonUniformBitwiseAnd 34 InclusiveScan 1343 1345: 78(ptr) AccessChain 27(data) 1341 38 Store 1345 1344 1346: 6(int) Load 8(invocation) 1347: 105(ptr) AccessChain 27(data) 29 51 30 1348: 6(int) Load 1347 1349: 6(int) GroupNonUniformBitwiseAnd 34 InclusiveScan 1348 1350: 105(ptr) AccessChain 27(data) 1346 51 30 Store 1350 1349 1351: 6(int) Load 8(invocation) 1352: 112(ptr) AccessChain 27(data) 38 51 1353: 21(ivec4) Load 1352 1354: 111(ivec2) VectorShuffle 1353 1353 0 1 1355: 111(ivec2) GroupNonUniformBitwiseAnd 34 InclusiveScan 1354 1356: 105(ptr) AccessChain 27(data) 1351 51 30 1357: 6(int) CompositeExtract 1355 0 Store 1356 1357 1358: 105(ptr) AccessChain 27(data) 1351 51 47 1359: 6(int) CompositeExtract 1355 1 Store 1358 1359 1360: 6(int) Load 8(invocation) 1361: 112(ptr) AccessChain 27(data) 51 51 1362: 21(ivec4) Load 1361 1363: 122(ivec3) VectorShuffle 1362 1362 0 1 2 1364: 122(ivec3) GroupNonUniformBitwiseAnd 34 InclusiveScan 1363 1365: 105(ptr) AccessChain 27(data) 1360 51 30 1366: 6(int) CompositeExtract 1364 0 Store 1365 1366 1367: 105(ptr) AccessChain 27(data) 1360 51 47 1368: 6(int) CompositeExtract 1364 1 Store 1367 1368 1369: 105(ptr) AccessChain 27(data) 1360 51 61 1370: 6(int) CompositeExtract 1364 2 Store 1369 1370 1371: 6(int) Load 8(invocation) 1372: 112(ptr) AccessChain 27(data) 65 51 1373: 21(ivec4) Load 1372 1374: 21(ivec4) GroupNonUniformBitwiseAnd 34 InclusiveScan 1373 1375: 112(ptr) AccessChain 27(data) 1371 51 Store 1375 1374 1376: 6(int) Load 8(invocation) 1377: 71(ptr) AccessChain 27(data) 29 38 30 1378: 19(int) Load 1377 1379: 595(bool) SLessThan 1378 29 1380: 595(bool) GroupNonUniformLogicalAnd 34 InclusiveScan 1379 1381: 19(int) Select 1380 38 29 1382: 71(ptr) AccessChain 27(data) 1376 38 30 Store 1382 1381 1383: 6(int) Load 8(invocation) 1384: 78(ptr) AccessChain 27(data) 38 38 1385: 20(ivec4) Load 1384 1386: 77(ivec2) VectorShuffle 1385 1385 0 1 1387: 605(bvec2) SLessThan 1386 604 1388: 605(bvec2) GroupNonUniformLogicalAnd 34 InclusiveScan 1387 1389: 77(ivec2) Select 1388 608 604 1390: 71(ptr) AccessChain 27(data) 1383 38 30 1391: 19(int) CompositeExtract 1389 0 Store 1390 1391 1392: 71(ptr) AccessChain 27(data) 1383 38 47 1393: 19(int) CompositeExtract 1389 1 Store 1392 1393 1394: 6(int) Load 8(invocation) 1395: 78(ptr) AccessChain 27(data) 38 38 1396: 20(ivec4) Load 1395 1397: 88(ivec3) VectorShuffle 1396 1396 0 1 2 1398: 619(bvec3) SLessThan 1397 618 1399: 619(bvec3) GroupNonUniformLogicalAnd 34 InclusiveScan 1398 1400: 88(ivec3) Select 1399 622 618 1401: 71(ptr) AccessChain 27(data) 1394 38 30 1402: 19(int) CompositeExtract 1400 0 Store 1401 1402 1403: 71(ptr) AccessChain 27(data) 1394 38 47 1404: 19(int) CompositeExtract 1400 1 Store 1403 1404 1405: 71(ptr) AccessChain 27(data) 1394 38 61 1406: 19(int) CompositeExtract 1400 2 Store 1405 1406 1407: 6(int) Load 8(invocation) 1408: 78(ptr) AccessChain 27(data) 38 38 1409: 20(ivec4) Load 1408 1410: 634(bvec4) SLessThan 1409 633 1411: 634(bvec4) GroupNonUniformLogicalAnd 34 InclusiveScan 1410 1412: 20(ivec4) Select 1411 637 633 1413: 78(ptr) AccessChain 27(data) 1407 38 Store 1413 1412 1414: 6(int) Load 8(invocation) 1415: 71(ptr) AccessChain 27(data) 29 38 30 1416: 19(int) Load 1415 1417: 19(int) GroupNonUniformBitwiseOr 34 InclusiveScan 1416 1418: 71(ptr) AccessChain 27(data) 1414 38 30 Store 1418 1417 1419: 6(int) Load 8(invocation) 1420: 78(ptr) AccessChain 27(data) 38 38 1421: 20(ivec4) Load 1420 1422: 77(ivec2) VectorShuffle 1421 1421 0 1 1423: 77(ivec2) GroupNonUniformBitwiseOr 34 InclusiveScan 1422 1424: 71(ptr) AccessChain 27(data) 1419 38 30 1425: 19(int) CompositeExtract 1423 0 Store 1424 1425 1426: 71(ptr) AccessChain 27(data) 1419 38 47 1427: 19(int) CompositeExtract 1423 1 Store 1426 1427 1428: 6(int) Load 8(invocation) 1429: 78(ptr) AccessChain 27(data) 51 38 1430: 20(ivec4) Load 1429 1431: 88(ivec3) VectorShuffle 1430 1430 0 1 2 1432: 88(ivec3) GroupNonUniformBitwiseOr 34 InclusiveScan 1431 1433: 71(ptr) AccessChain 27(data) 1428 38 30 1434: 19(int) CompositeExtract 1432 0 Store 1433 1434 1435: 71(ptr) AccessChain 27(data) 1428 38 47 1436: 19(int) CompositeExtract 1432 1 Store 1435 1436 1437: 71(ptr) AccessChain 27(data) 1428 38 61 1438: 19(int) CompositeExtract 1432 2 Store 1437 1438 1439: 6(int) Load 8(invocation) 1440: 78(ptr) AccessChain 27(data) 65 38 1441: 20(ivec4) Load 1440 1442: 20(ivec4) GroupNonUniformBitwiseOr 34 InclusiveScan 1441 1443: 78(ptr) AccessChain 27(data) 1439 38 Store 1443 1442 1444: 6(int) Load 8(invocation) 1445: 105(ptr) AccessChain 27(data) 29 51 30 1446: 6(int) Load 1445 1447: 6(int) GroupNonUniformBitwiseOr 34 InclusiveScan 1446 1448: 105(ptr) AccessChain 27(data) 1444 51 30 Store 1448 1447 1449: 6(int) Load 8(invocation) 1450: 112(ptr) AccessChain 27(data) 38 51 1451: 21(ivec4) Load 1450 1452: 111(ivec2) VectorShuffle 1451 1451 0 1 1453: 111(ivec2) GroupNonUniformBitwiseOr 34 InclusiveScan 1452 1454: 105(ptr) AccessChain 27(data) 1449 51 30 1455: 6(int) CompositeExtract 1453 0 Store 1454 1455 1456: 105(ptr) AccessChain 27(data) 1449 51 47 1457: 6(int) CompositeExtract 1453 1 Store 1456 1457 1458: 6(int) Load 8(invocation) 1459: 112(ptr) AccessChain 27(data) 51 51 1460: 21(ivec4) Load 1459 1461: 122(ivec3) VectorShuffle 1460 1460 0 1 2 1462: 122(ivec3) GroupNonUniformBitwiseOr 34 InclusiveScan 1461 1463: 105(ptr) AccessChain 27(data) 1458 51 30 1464: 6(int) CompositeExtract 1462 0 Store 1463 1464 1465: 105(ptr) AccessChain 27(data) 1458 51 47 1466: 6(int) CompositeExtract 1462 1 Store 1465 1466 1467: 105(ptr) AccessChain 27(data) 1458 51 61 1468: 6(int) CompositeExtract 1462 2 Store 1467 1468 1469: 6(int) Load 8(invocation) 1470: 112(ptr) AccessChain 27(data) 65 51 1471: 21(ivec4) Load 1470 1472: 21(ivec4) GroupNonUniformBitwiseOr 34 InclusiveScan 1471 1473: 112(ptr) AccessChain 27(data) 1469 51 Store 1473 1472 1474: 6(int) Load 8(invocation) 1475: 71(ptr) AccessChain 27(data) 29 38 30 1476: 19(int) Load 1475 1477: 595(bool) SLessThan 1476 29 1478: 595(bool) GroupNonUniformLogicalOr 34 InclusiveScan 1477 1479: 19(int) Select 1478 38 29 1480: 71(ptr) AccessChain 27(data) 1474 38 30 Store 1480 1479 1481: 6(int) Load 8(invocation) 1482: 78(ptr) AccessChain 27(data) 38 38 1483: 20(ivec4) Load 1482 1484: 77(ivec2) VectorShuffle 1483 1483 0 1 1485: 605(bvec2) SLessThan 1484 604 1486: 605(bvec2) GroupNonUniformLogicalOr 34 InclusiveScan 1485 1487: 77(ivec2) Select 1486 608 604 1488: 71(ptr) AccessChain 27(data) 1481 38 30 1489: 19(int) CompositeExtract 1487 0 Store 1488 1489 1490: 71(ptr) AccessChain 27(data) 1481 38 47 1491: 19(int) CompositeExtract 1487 1 Store 1490 1491 1492: 6(int) Load 8(invocation) 1493: 78(ptr) AccessChain 27(data) 38 38 1494: 20(ivec4) Load 1493 1495: 88(ivec3) VectorShuffle 1494 1494 0 1 2 1496: 619(bvec3) SLessThan 1495 618 1497: 619(bvec3) GroupNonUniformLogicalOr 34 InclusiveScan 1496 1498: 88(ivec3) Select 1497 622 618 1499: 71(ptr) AccessChain 27(data) 1492 38 30 1500: 19(int) CompositeExtract 1498 0 Store 1499 1500 1501: 71(ptr) AccessChain 27(data) 1492 38 47 1502: 19(int) CompositeExtract 1498 1 Store 1501 1502 1503: 71(ptr) AccessChain 27(data) 1492 38 61 1504: 19(int) CompositeExtract 1498 2 Store 1503 1504 1505: 6(int) Load 8(invocation) 1506: 78(ptr) AccessChain 27(data) 38 38 1507: 20(ivec4) Load 1506 1508: 634(bvec4) SLessThan 1507 633 1509: 634(bvec4) GroupNonUniformLogicalOr 34 InclusiveScan 1508 1510: 20(ivec4) Select 1509 637 633 1511: 78(ptr) AccessChain 27(data) 1505 38 Store 1511 1510 1512: 6(int) Load 8(invocation) 1513: 71(ptr) AccessChain 27(data) 29 38 30 1514: 19(int) Load 1513 1515: 19(int) GroupNonUniformBitwiseXor 34 InclusiveScan 1514 1516: 71(ptr) AccessChain 27(data) 1512 38 30 Store 1516 1515 1517: 6(int) Load 8(invocation) 1518: 78(ptr) AccessChain 27(data) 38 38 1519: 20(ivec4) Load 1518 1520: 77(ivec2) VectorShuffle 1519 1519 0 1 1521: 77(ivec2) GroupNonUniformBitwiseXor 34 InclusiveScan 1520 1522: 71(ptr) AccessChain 27(data) 1517 38 30 1523: 19(int) CompositeExtract 1521 0 Store 1522 1523 1524: 71(ptr) AccessChain 27(data) 1517 38 47 1525: 19(int) CompositeExtract 1521 1 Store 1524 1525 1526: 6(int) Load 8(invocation) 1527: 78(ptr) AccessChain 27(data) 51 38 1528: 20(ivec4) Load 1527 1529: 88(ivec3) VectorShuffle 1528 1528 0 1 2 1530: 88(ivec3) GroupNonUniformBitwiseXor 34 InclusiveScan 1529 1531: 71(ptr) AccessChain 27(data) 1526 38 30 1532: 19(int) CompositeExtract 1530 0 Store 1531 1532 1533: 71(ptr) AccessChain 27(data) 1526 38 47 1534: 19(int) CompositeExtract 1530 1 Store 1533 1534 1535: 71(ptr) AccessChain 27(data) 1526 38 61 1536: 19(int) CompositeExtract 1530 2 Store 1535 1536 1537: 6(int) Load 8(invocation) 1538: 78(ptr) AccessChain 27(data) 65 38 1539: 20(ivec4) Load 1538 1540: 20(ivec4) GroupNonUniformBitwiseXor 34 InclusiveScan 1539 1541: 78(ptr) AccessChain 27(data) 1537 38 Store 1541 1540 1542: 6(int) Load 8(invocation) 1543: 105(ptr) AccessChain 27(data) 29 51 30 1544: 6(int) Load 1543 1545: 6(int) GroupNonUniformBitwiseXor 34 InclusiveScan 1544 1546: 105(ptr) AccessChain 27(data) 1542 51 30 Store 1546 1545 1547: 6(int) Load 8(invocation) 1548: 112(ptr) AccessChain 27(data) 38 51 1549: 21(ivec4) Load 1548 1550: 111(ivec2) VectorShuffle 1549 1549 0 1 1551: 111(ivec2) GroupNonUniformBitwiseXor 34 InclusiveScan 1550 1552: 105(ptr) AccessChain 27(data) 1547 51 30 1553: 6(int) CompositeExtract 1551 0 Store 1552 1553 1554: 105(ptr) AccessChain 27(data) 1547 51 47 1555: 6(int) CompositeExtract 1551 1 Store 1554 1555 1556: 6(int) Load 8(invocation) 1557: 112(ptr) AccessChain 27(data) 51 51 1558: 21(ivec4) Load 1557 1559: 122(ivec3) VectorShuffle 1558 1558 0 1 2 1560: 122(ivec3) GroupNonUniformBitwiseXor 34 InclusiveScan 1559 1561: 105(ptr) AccessChain 27(data) 1556 51 30 1562: 6(int) CompositeExtract 1560 0 Store 1561 1562 1563: 105(ptr) AccessChain 27(data) 1556 51 47 1564: 6(int) CompositeExtract 1560 1 Store 1563 1564 1565: 105(ptr) AccessChain 27(data) 1556 51 61 1566: 6(int) CompositeExtract 1560 2 Store 1565 1566 1567: 6(int) Load 8(invocation) 1568: 112(ptr) AccessChain 27(data) 65 51 1569: 21(ivec4) Load 1568 1570: 21(ivec4) GroupNonUniformBitwiseXor 34 InclusiveScan 1569 1571: 112(ptr) AccessChain 27(data) 1567 51 Store 1571 1570 1572: 6(int) Load 8(invocation) 1573: 71(ptr) AccessChain 27(data) 29 38 30 1574: 19(int) Load 1573 1575: 595(bool) SLessThan 1574 29 1576: 595(bool) GroupNonUniformLogicalXor 34 InclusiveScan 1575 1577: 19(int) Select 1576 38 29 1578: 71(ptr) AccessChain 27(data) 1572 38 30 Store 1578 1577 1579: 6(int) Load 8(invocation) 1580: 78(ptr) AccessChain 27(data) 38 38 1581: 20(ivec4) Load 1580 1582: 77(ivec2) VectorShuffle 1581 1581 0 1 1583: 605(bvec2) SLessThan 1582 604 1584: 605(bvec2) GroupNonUniformLogicalXor 34 InclusiveScan 1583 1585: 77(ivec2) Select 1584 608 604 1586: 71(ptr) AccessChain 27(data) 1579 38 30 1587: 19(int) CompositeExtract 1585 0 Store 1586 1587 1588: 71(ptr) AccessChain 27(data) 1579 38 47 1589: 19(int) CompositeExtract 1585 1 Store 1588 1589 1590: 6(int) Load 8(invocation) 1591: 78(ptr) AccessChain 27(data) 38 38 1592: 20(ivec4) Load 1591 1593: 88(ivec3) VectorShuffle 1592 1592 0 1 2 1594: 619(bvec3) SLessThan 1593 618 1595: 619(bvec3) GroupNonUniformLogicalXor 34 InclusiveScan 1594 1596: 88(ivec3) Select 1595 622 618 1597: 71(ptr) AccessChain 27(data) 1590 38 30 1598: 19(int) CompositeExtract 1596 0 Store 1597 1598 1599: 71(ptr) AccessChain 27(data) 1590 38 47 1600: 19(int) CompositeExtract 1596 1 Store 1599 1600 1601: 71(ptr) AccessChain 27(data) 1590 38 61 1602: 19(int) CompositeExtract 1596 2 Store 1601 1602 1603: 6(int) Load 8(invocation) 1604: 78(ptr) AccessChain 27(data) 38 38 1605: 20(ivec4) Load 1604 1606: 634(bvec4) SLessThan 1605 633 1607: 634(bvec4) GroupNonUniformLogicalXor 34 InclusiveScan 1606 1608: 20(ivec4) Select 1607 637 633 1609: 78(ptr) AccessChain 27(data) 1603 38 Store 1609 1608 1610: 6(int) Load 8(invocation) 1611: 31(ptr) AccessChain 27(data) 29 29 30 1612: 17(float) Load 1611 1613: 17(float) GroupNonUniformFAdd 34 ExclusiveScan 1612 1614: 31(ptr) AccessChain 27(data) 1610 29 30 Store 1614 1613 1615: 6(int) Load 8(invocation) 1616: 40(ptr) AccessChain 27(data) 38 29 1617: 18(fvec4) Load 1616 1618: 39(fvec2) VectorShuffle 1617 1617 0 1 1619: 39(fvec2) GroupNonUniformFAdd 34 ExclusiveScan 1618 1620: 31(ptr) AccessChain 27(data) 1615 29 30 1621: 17(float) CompositeExtract 1619 0 Store 1620 1621 1622: 31(ptr) AccessChain 27(data) 1615 29 47 1623: 17(float) CompositeExtract 1619 1 Store 1622 1623 1624: 6(int) Load 8(invocation) 1625: 40(ptr) AccessChain 27(data) 51 29 1626: 18(fvec4) Load 1625 1627: 52(fvec3) VectorShuffle 1626 1626 0 1 2 1628: 52(fvec3) GroupNonUniformFAdd 34 ExclusiveScan 1627 1629: 31(ptr) AccessChain 27(data) 1624 29 30 1630: 17(float) CompositeExtract 1628 0 Store 1629 1630 1631: 31(ptr) AccessChain 27(data) 1624 29 47 1632: 17(float) CompositeExtract 1628 1 Store 1631 1632 1633: 31(ptr) AccessChain 27(data) 1624 29 61 1634: 17(float) CompositeExtract 1628 2 Store 1633 1634 1635: 6(int) Load 8(invocation) 1636: 40(ptr) AccessChain 27(data) 65 29 1637: 18(fvec4) Load 1636 1638: 18(fvec4) GroupNonUniformFAdd 34 ExclusiveScan 1637 1639: 40(ptr) AccessChain 27(data) 1635 29 Store 1639 1638 1640: 6(int) Load 8(invocation) 1641: 71(ptr) AccessChain 27(data) 29 38 30 1642: 19(int) Load 1641 1643: 19(int) GroupNonUniformIAdd 34 ExclusiveScan 1642 1644: 71(ptr) AccessChain 27(data) 1640 38 30 Store 1644 1643 1645: 6(int) Load 8(invocation) 1646: 78(ptr) AccessChain 27(data) 38 38 1647: 20(ivec4) Load 1646 1648: 77(ivec2) VectorShuffle 1647 1647 0 1 1649: 77(ivec2) GroupNonUniformIAdd 34 ExclusiveScan 1648 1650: 71(ptr) AccessChain 27(data) 1645 38 30 1651: 19(int) CompositeExtract 1649 0 Store 1650 1651 1652: 71(ptr) AccessChain 27(data) 1645 38 47 1653: 19(int) CompositeExtract 1649 1 Store 1652 1653 1654: 6(int) Load 8(invocation) 1655: 78(ptr) AccessChain 27(data) 51 38 1656: 20(ivec4) Load 1655 1657: 88(ivec3) VectorShuffle 1656 1656 0 1 2 1658: 88(ivec3) GroupNonUniformIAdd 34 ExclusiveScan 1657 1659: 71(ptr) AccessChain 27(data) 1654 38 30 1660: 19(int) CompositeExtract 1658 0 Store 1659 1660 1661: 71(ptr) AccessChain 27(data) 1654 38 47 1662: 19(int) CompositeExtract 1658 1 Store 1661 1662 1663: 71(ptr) AccessChain 27(data) 1654 38 61 1664: 19(int) CompositeExtract 1658 2 Store 1663 1664 1665: 6(int) Load 8(invocation) 1666: 78(ptr) AccessChain 27(data) 65 38 1667: 20(ivec4) Load 1666 1668: 20(ivec4) GroupNonUniformIAdd 34 ExclusiveScan 1667 1669: 78(ptr) AccessChain 27(data) 1665 38 Store 1669 1668 1670: 6(int) Load 8(invocation) 1671: 105(ptr) AccessChain 27(data) 29 51 30 1672: 6(int) Load 1671 1673: 6(int) GroupNonUniformIAdd 34 ExclusiveScan 1672 1674: 105(ptr) AccessChain 27(data) 1670 51 30 Store 1674 1673 1675: 6(int) Load 8(invocation) 1676: 112(ptr) AccessChain 27(data) 38 51 1677: 21(ivec4) Load 1676 1678: 111(ivec2) VectorShuffle 1677 1677 0 1 1679: 111(ivec2) GroupNonUniformIAdd 34 ExclusiveScan 1678 1680: 105(ptr) AccessChain 27(data) 1675 51 30 1681: 6(int) CompositeExtract 1679 0 Store 1680 1681 1682: 105(ptr) AccessChain 27(data) 1675 51 47 1683: 6(int) CompositeExtract 1679 1 Store 1682 1683 1684: 6(int) Load 8(invocation) 1685: 112(ptr) AccessChain 27(data) 51 51 1686: 21(ivec4) Load 1685 1687: 122(ivec3) VectorShuffle 1686 1686 0 1 2 1688: 122(ivec3) GroupNonUniformIAdd 34 ExclusiveScan 1687 1689: 105(ptr) AccessChain 27(data) 1684 51 30 1690: 6(int) CompositeExtract 1688 0 Store 1689 1690 1691: 105(ptr) AccessChain 27(data) 1684 51 47 1692: 6(int) CompositeExtract 1688 1 Store 1691 1692 1693: 105(ptr) AccessChain 27(data) 1684 51 61 1694: 6(int) CompositeExtract 1688 2 Store 1693 1694 1695: 6(int) Load 8(invocation) 1696: 112(ptr) AccessChain 27(data) 65 51 1697: 21(ivec4) Load 1696 1698: 21(ivec4) GroupNonUniformIAdd 34 ExclusiveScan 1697 1699: 112(ptr) AccessChain 27(data) 1695 51 Store 1699 1698 1700: 6(int) Load 8(invocation) 1701: 139(ptr) AccessChain 27(data) 29 65 30 1702:22(float64_t) Load 1701 1703:22(float64_t) GroupNonUniformFAdd 34 ExclusiveScan 1702 1704: 139(ptr) AccessChain 27(data) 1700 65 30 Store 1704 1703 1705: 6(int) Load 8(invocation) 1706: 146(ptr) AccessChain 27(data) 38 65 1707: 23(f64vec4) Load 1706 1708:145(f64vec2) VectorShuffle 1707 1707 0 1 1709:145(f64vec2) GroupNonUniformFAdd 34 ExclusiveScan 1708 1710: 139(ptr) AccessChain 27(data) 1705 65 30 1711:22(float64_t) CompositeExtract 1709 0 Store 1710 1711 1712: 139(ptr) AccessChain 27(data) 1705 65 47 1713:22(float64_t) CompositeExtract 1709 1 Store 1712 1713 1714: 6(int) Load 8(invocation) 1715: 146(ptr) AccessChain 27(data) 51 65 1716: 23(f64vec4) Load 1715 1717:156(f64vec3) VectorShuffle 1716 1716 0 1 2 1718:156(f64vec3) GroupNonUniformFAdd 34 ExclusiveScan 1717 1719: 139(ptr) AccessChain 27(data) 1714 65 30 1720:22(float64_t) CompositeExtract 1718 0 Store 1719 1720 1721: 139(ptr) AccessChain 27(data) 1714 65 47 1722:22(float64_t) CompositeExtract 1718 1 Store 1721 1722 1723: 139(ptr) AccessChain 27(data) 1714 65 61 1724:22(float64_t) CompositeExtract 1718 2 Store 1723 1724 1725: 6(int) Load 8(invocation) 1726: 146(ptr) AccessChain 27(data) 65 65 1727: 23(f64vec4) Load 1726 1728: 23(f64vec4) GroupNonUniformFAdd 34 ExclusiveScan 1727 1729: 146(ptr) AccessChain 27(data) 1725 65 Store 1729 1728 1730: 6(int) Load 8(invocation) 1731: 31(ptr) AccessChain 27(data) 29 29 30 1732: 17(float) Load 1731 1733: 17(float) GroupNonUniformFMul 34 ExclusiveScan 1732 1734: 31(ptr) AccessChain 27(data) 1730 29 30 Store 1734 1733 1735: 6(int) Load 8(invocation) 1736: 40(ptr) AccessChain 27(data) 38 29 1737: 18(fvec4) Load 1736 1738: 39(fvec2) VectorShuffle 1737 1737 0 1 1739: 39(fvec2) GroupNonUniformFMul 34 ExclusiveScan 1738 1740: 31(ptr) AccessChain 27(data) 1735 29 30 1741: 17(float) CompositeExtract 1739 0 Store 1740 1741 1742: 31(ptr) AccessChain 27(data) 1735 29 47 1743: 17(float) CompositeExtract 1739 1 Store 1742 1743 1744: 6(int) Load 8(invocation) 1745: 40(ptr) AccessChain 27(data) 51 29 1746: 18(fvec4) Load 1745 1747: 52(fvec3) VectorShuffle 1746 1746 0 1 2 1748: 52(fvec3) GroupNonUniformFMul 34 ExclusiveScan 1747 1749: 31(ptr) AccessChain 27(data) 1744 29 30 1750: 17(float) CompositeExtract 1748 0 Store 1749 1750 1751: 31(ptr) AccessChain 27(data) 1744 29 47 1752: 17(float) CompositeExtract 1748 1 Store 1751 1752 1753: 31(ptr) AccessChain 27(data) 1744 29 61 1754: 17(float) CompositeExtract 1748 2 Store 1753 1754 1755: 6(int) Load 8(invocation) 1756: 40(ptr) AccessChain 27(data) 65 29 1757: 18(fvec4) Load 1756 1758: 18(fvec4) GroupNonUniformFMul 34 ExclusiveScan 1757 1759: 40(ptr) AccessChain 27(data) 1755 29 Store 1759 1758 1760: 6(int) Load 8(invocation) 1761: 71(ptr) AccessChain 27(data) 29 38 30 1762: 19(int) Load 1761 1763: 19(int) GroupNonUniformIMul 34 ExclusiveScan 1762 1764: 71(ptr) AccessChain 27(data) 1760 38 30 Store 1764 1763 1765: 6(int) Load 8(invocation) 1766: 78(ptr) AccessChain 27(data) 38 38 1767: 20(ivec4) Load 1766 1768: 77(ivec2) VectorShuffle 1767 1767 0 1 1769: 77(ivec2) GroupNonUniformIMul 34 ExclusiveScan 1768 1770: 71(ptr) AccessChain 27(data) 1765 38 30 1771: 19(int) CompositeExtract 1769 0 Store 1770 1771 1772: 71(ptr) AccessChain 27(data) 1765 38 47 1773: 19(int) CompositeExtract 1769 1 Store 1772 1773 1774: 6(int) Load 8(invocation) 1775: 78(ptr) AccessChain 27(data) 51 38 1776: 20(ivec4) Load 1775 1777: 88(ivec3) VectorShuffle 1776 1776 0 1 2 1778: 88(ivec3) GroupNonUniformIMul 34 ExclusiveScan 1777 1779: 71(ptr) AccessChain 27(data) 1774 38 30 1780: 19(int) CompositeExtract 1778 0 Store 1779 1780 1781: 71(ptr) AccessChain 27(data) 1774 38 47 1782: 19(int) CompositeExtract 1778 1 Store 1781 1782 1783: 71(ptr) AccessChain 27(data) 1774 38 61 1784: 19(int) CompositeExtract 1778 2 Store 1783 1784 1785: 6(int) Load 8(invocation) 1786: 78(ptr) AccessChain 27(data) 65 38 1787: 20(ivec4) Load 1786 1788: 20(ivec4) GroupNonUniformIMul 34 ExclusiveScan 1787 1789: 78(ptr) AccessChain 27(data) 1785 38 Store 1789 1788 1790: 6(int) Load 8(invocation) 1791: 105(ptr) AccessChain 27(data) 29 51 30 1792: 6(int) Load 1791 1793: 6(int) GroupNonUniformIMul 34 ExclusiveScan 1792 1794: 105(ptr) AccessChain 27(data) 1790 51 30 Store 1794 1793 1795: 6(int) Load 8(invocation) 1796: 112(ptr) AccessChain 27(data) 38 51 1797: 21(ivec4) Load 1796 1798: 111(ivec2) VectorShuffle 1797 1797 0 1 1799: 111(ivec2) GroupNonUniformIMul 34 ExclusiveScan 1798 1800: 105(ptr) AccessChain 27(data) 1795 51 30 1801: 6(int) CompositeExtract 1799 0 Store 1800 1801 1802: 105(ptr) AccessChain 27(data) 1795 51 47 1803: 6(int) CompositeExtract 1799 1 Store 1802 1803 1804: 6(int) Load 8(invocation) 1805: 112(ptr) AccessChain 27(data) 51 51 1806: 21(ivec4) Load 1805 1807: 122(ivec3) VectorShuffle 1806 1806 0 1 2 1808: 122(ivec3) GroupNonUniformIMul 34 ExclusiveScan 1807 1809: 105(ptr) AccessChain 27(data) 1804 51 30 1810: 6(int) CompositeExtract 1808 0 Store 1809 1810 1811: 105(ptr) AccessChain 27(data) 1804 51 47 1812: 6(int) CompositeExtract 1808 1 Store 1811 1812 1813: 105(ptr) AccessChain 27(data) 1804 51 61 1814: 6(int) CompositeExtract 1808 2 Store 1813 1814 1815: 6(int) Load 8(invocation) 1816: 112(ptr) AccessChain 27(data) 65 51 1817: 21(ivec4) Load 1816 1818: 21(ivec4) GroupNonUniformIMul 34 ExclusiveScan 1817 1819: 112(ptr) AccessChain 27(data) 1815 51 Store 1819 1818 1820: 6(int) Load 8(invocation) 1821: 139(ptr) AccessChain 27(data) 29 65 30 1822:22(float64_t) Load 1821 1823:22(float64_t) GroupNonUniformFMul 34 ExclusiveScan 1822 1824: 139(ptr) AccessChain 27(data) 1820 65 30 Store 1824 1823 1825: 6(int) Load 8(invocation) 1826: 146(ptr) AccessChain 27(data) 38 65 1827: 23(f64vec4) Load 1826 1828:145(f64vec2) VectorShuffle 1827 1827 0 1 1829:145(f64vec2) GroupNonUniformFMul 34 ExclusiveScan 1828 1830: 139(ptr) AccessChain 27(data) 1825 65 30 1831:22(float64_t) CompositeExtract 1829 0 Store 1830 1831 1832: 139(ptr) AccessChain 27(data) 1825 65 47 1833:22(float64_t) CompositeExtract 1829 1 Store 1832 1833 1834: 6(int) Load 8(invocation) 1835: 146(ptr) AccessChain 27(data) 51 65 1836: 23(f64vec4) Load 1835 1837:156(f64vec3) VectorShuffle 1836 1836 0 1 2 1838:156(f64vec3) GroupNonUniformFMul 34 ExclusiveScan 1837 1839: 139(ptr) AccessChain 27(data) 1834 65 30 1840:22(float64_t) CompositeExtract 1838 0 Store 1839 1840 1841: 139(ptr) AccessChain 27(data) 1834 65 47 1842:22(float64_t) CompositeExtract 1838 1 Store 1841 1842 1843: 139(ptr) AccessChain 27(data) 1834 65 61 1844:22(float64_t) CompositeExtract 1838 2 Store 1843 1844 1845: 6(int) Load 8(invocation) 1846: 146(ptr) AccessChain 27(data) 65 65 1847: 23(f64vec4) Load 1846 1848: 23(f64vec4) GroupNonUniformFMul 34 ExclusiveScan 1847 1849: 146(ptr) AccessChain 27(data) 1845 65 Store 1849 1848 1850: 6(int) Load 8(invocation) 1851: 31(ptr) AccessChain 27(data) 29 29 30 1852: 17(float) Load 1851 1853: 17(float) GroupNonUniformFMin 34 ExclusiveScan 1852 1854: 31(ptr) AccessChain 27(data) 1850 29 30 Store 1854 1853 1855: 6(int) Load 8(invocation) 1856: 40(ptr) AccessChain 27(data) 38 29 1857: 18(fvec4) Load 1856 1858: 39(fvec2) VectorShuffle 1857 1857 0 1 1859: 39(fvec2) GroupNonUniformFMin 34 ExclusiveScan 1858 1860: 31(ptr) AccessChain 27(data) 1855 29 30 1861: 17(float) CompositeExtract 1859 0 Store 1860 1861 1862: 31(ptr) AccessChain 27(data) 1855 29 47 1863: 17(float) CompositeExtract 1859 1 Store 1862 1863 1864: 6(int) Load 8(invocation) 1865: 40(ptr) AccessChain 27(data) 51 29 1866: 18(fvec4) Load 1865 1867: 52(fvec3) VectorShuffle 1866 1866 0 1 2 1868: 52(fvec3) GroupNonUniformFMin 34 ExclusiveScan 1867 1869: 31(ptr) AccessChain 27(data) 1864 29 30 1870: 17(float) CompositeExtract 1868 0 Store 1869 1870 1871: 31(ptr) AccessChain 27(data) 1864 29 47 1872: 17(float) CompositeExtract 1868 1 Store 1871 1872 1873: 31(ptr) AccessChain 27(data) 1864 29 61 1874: 17(float) CompositeExtract 1868 2 Store 1873 1874 1875: 6(int) Load 8(invocation) 1876: 40(ptr) AccessChain 27(data) 65 29 1877: 18(fvec4) Load 1876 1878: 18(fvec4) GroupNonUniformFMin 34 ExclusiveScan 1877 1879: 40(ptr) AccessChain 27(data) 1875 29 Store 1879 1878 1880: 6(int) Load 8(invocation) 1881: 71(ptr) AccessChain 27(data) 29 38 30 1882: 19(int) Load 1881 1883: 19(int) GroupNonUniformSMin 34 ExclusiveScan 1882 1884: 71(ptr) AccessChain 27(data) 1880 38 30 Store 1884 1883 1885: 6(int) Load 8(invocation) 1886: 78(ptr) AccessChain 27(data) 38 38 1887: 20(ivec4) Load 1886 1888: 77(ivec2) VectorShuffle 1887 1887 0 1 1889: 77(ivec2) GroupNonUniformSMin 34 ExclusiveScan 1888 1890: 71(ptr) AccessChain 27(data) 1885 38 30 1891: 19(int) CompositeExtract 1889 0 Store 1890 1891 1892: 71(ptr) AccessChain 27(data) 1885 38 47 1893: 19(int) CompositeExtract 1889 1 Store 1892 1893 1894: 6(int) Load 8(invocation) 1895: 78(ptr) AccessChain 27(data) 51 38 1896: 20(ivec4) Load 1895 1897: 88(ivec3) VectorShuffle 1896 1896 0 1 2 1898: 88(ivec3) GroupNonUniformSMin 34 ExclusiveScan 1897 1899: 71(ptr) AccessChain 27(data) 1894 38 30 1900: 19(int) CompositeExtract 1898 0 Store 1899 1900 1901: 71(ptr) AccessChain 27(data) 1894 38 47 1902: 19(int) CompositeExtract 1898 1 Store 1901 1902 1903: 71(ptr) AccessChain 27(data) 1894 38 61 1904: 19(int) CompositeExtract 1898 2 Store 1903 1904 1905: 6(int) Load 8(invocation) 1906: 78(ptr) AccessChain 27(data) 65 38 1907: 20(ivec4) Load 1906 1908: 20(ivec4) GroupNonUniformSMin 34 ExclusiveScan 1907 1909: 78(ptr) AccessChain 27(data) 1905 38 Store 1909 1908 1910: 6(int) Load 8(invocation) 1911: 105(ptr) AccessChain 27(data) 29 51 30 1912: 6(int) Load 1911 1913: 6(int) GroupNonUniformUMin 34 ExclusiveScan 1912 1914: 105(ptr) AccessChain 27(data) 1910 51 30 Store 1914 1913 1915: 6(int) Load 8(invocation) 1916: 112(ptr) AccessChain 27(data) 38 51 1917: 21(ivec4) Load 1916 1918: 111(ivec2) VectorShuffle 1917 1917 0 1 1919: 111(ivec2) GroupNonUniformUMin 34 ExclusiveScan 1918 1920: 105(ptr) AccessChain 27(data) 1915 51 30 1921: 6(int) CompositeExtract 1919 0 Store 1920 1921 1922: 105(ptr) AccessChain 27(data) 1915 51 47 1923: 6(int) CompositeExtract 1919 1 Store 1922 1923 1924: 6(int) Load 8(invocation) 1925: 112(ptr) AccessChain 27(data) 51 51 1926: 21(ivec4) Load 1925 1927: 122(ivec3) VectorShuffle 1926 1926 0 1 2 1928: 122(ivec3) GroupNonUniformUMin 34 ExclusiveScan 1927 1929: 105(ptr) AccessChain 27(data) 1924 51 30 1930: 6(int) CompositeExtract 1928 0 Store 1929 1930 1931: 105(ptr) AccessChain 27(data) 1924 51 47 1932: 6(int) CompositeExtract 1928 1 Store 1931 1932 1933: 105(ptr) AccessChain 27(data) 1924 51 61 1934: 6(int) CompositeExtract 1928 2 Store 1933 1934 1935: 6(int) Load 8(invocation) 1936: 112(ptr) AccessChain 27(data) 65 51 1937: 21(ivec4) Load 1936 1938: 21(ivec4) GroupNonUniformUMin 34 ExclusiveScan 1937 1939: 112(ptr) AccessChain 27(data) 1935 51 Store 1939 1938 1940: 6(int) Load 8(invocation) 1941: 139(ptr) AccessChain 27(data) 29 65 30 1942:22(float64_t) Load 1941 1943:22(float64_t) GroupNonUniformFMin 34 ExclusiveScan 1942 1944: 139(ptr) AccessChain 27(data) 1940 65 30 Store 1944 1943 1945: 6(int) Load 8(invocation) 1946: 146(ptr) AccessChain 27(data) 38 65 1947: 23(f64vec4) Load 1946 1948:145(f64vec2) VectorShuffle 1947 1947 0 1 1949:145(f64vec2) GroupNonUniformFMin 34 ExclusiveScan 1948 1950: 139(ptr) AccessChain 27(data) 1945 65 30 1951:22(float64_t) CompositeExtract 1949 0 Store 1950 1951 1952: 139(ptr) AccessChain 27(data) 1945 65 47 1953:22(float64_t) CompositeExtract 1949 1 Store 1952 1953 1954: 6(int) Load 8(invocation) 1955: 146(ptr) AccessChain 27(data) 51 65 1956: 23(f64vec4) Load 1955 1957:156(f64vec3) VectorShuffle 1956 1956 0 1 2 1958:156(f64vec3) GroupNonUniformFMin 34 ExclusiveScan 1957 1959: 139(ptr) AccessChain 27(data) 1954 65 30 1960:22(float64_t) CompositeExtract 1958 0 Store 1959 1960 1961: 139(ptr) AccessChain 27(data) 1954 65 47 1962:22(float64_t) CompositeExtract 1958 1 Store 1961 1962 1963: 139(ptr) AccessChain 27(data) 1954 65 61 1964:22(float64_t) CompositeExtract 1958 2 Store 1963 1964 1965: 6(int) Load 8(invocation) 1966: 146(ptr) AccessChain 27(data) 65 65 1967: 23(f64vec4) Load 1966 1968: 23(f64vec4) GroupNonUniformFMin 34 ExclusiveScan 1967 1969: 146(ptr) AccessChain 27(data) 1965 65 Store 1969 1968 1970: 6(int) Load 8(invocation) 1971: 31(ptr) AccessChain 27(data) 29 29 30 1972: 17(float) Load 1971 1973: 17(float) GroupNonUniformFMax 34 ExclusiveScan 1972 1974: 31(ptr) AccessChain 27(data) 1970 29 30 Store 1974 1973 1975: 6(int) Load 8(invocation) 1976: 40(ptr) AccessChain 27(data) 38 29 1977: 18(fvec4) Load 1976 1978: 39(fvec2) VectorShuffle 1977 1977 0 1 1979: 39(fvec2) GroupNonUniformFMax 34 ExclusiveScan 1978 1980: 31(ptr) AccessChain 27(data) 1975 29 30 1981: 17(float) CompositeExtract 1979 0 Store 1980 1981 1982: 31(ptr) AccessChain 27(data) 1975 29 47 1983: 17(float) CompositeExtract 1979 1 Store 1982 1983 1984: 6(int) Load 8(invocation) 1985: 40(ptr) AccessChain 27(data) 51 29 1986: 18(fvec4) Load 1985 1987: 52(fvec3) VectorShuffle 1986 1986 0 1 2 1988: 52(fvec3) GroupNonUniformFMax 34 ExclusiveScan 1987 1989: 31(ptr) AccessChain 27(data) 1984 29 30 1990: 17(float) CompositeExtract 1988 0 Store 1989 1990 1991: 31(ptr) AccessChain 27(data) 1984 29 47 1992: 17(float) CompositeExtract 1988 1 Store 1991 1992 1993: 31(ptr) AccessChain 27(data) 1984 29 61 1994: 17(float) CompositeExtract 1988 2 Store 1993 1994 1995: 6(int) Load 8(invocation) 1996: 40(ptr) AccessChain 27(data) 65 29 1997: 18(fvec4) Load 1996 1998: 18(fvec4) GroupNonUniformFMax 34 ExclusiveScan 1997 1999: 40(ptr) AccessChain 27(data) 1995 29 Store 1999 1998 2000: 6(int) Load 8(invocation) 2001: 71(ptr) AccessChain 27(data) 29 38 30 2002: 19(int) Load 2001 2003: 19(int) GroupNonUniformSMax 34 ExclusiveScan 2002 2004: 71(ptr) AccessChain 27(data) 2000 38 30 Store 2004 2003 2005: 6(int) Load 8(invocation) 2006: 78(ptr) AccessChain 27(data) 38 38 2007: 20(ivec4) Load 2006 2008: 77(ivec2) VectorShuffle 2007 2007 0 1 2009: 77(ivec2) GroupNonUniformSMax 34 ExclusiveScan 2008 2010: 71(ptr) AccessChain 27(data) 2005 38 30 2011: 19(int) CompositeExtract 2009 0 Store 2010 2011 2012: 71(ptr) AccessChain 27(data) 2005 38 47 2013: 19(int) CompositeExtract 2009 1 Store 2012 2013 2014: 6(int) Load 8(invocation) 2015: 78(ptr) AccessChain 27(data) 51 38 2016: 20(ivec4) Load 2015 2017: 88(ivec3) VectorShuffle 2016 2016 0 1 2 2018: 88(ivec3) GroupNonUniformSMax 34 ExclusiveScan 2017 2019: 71(ptr) AccessChain 27(data) 2014 38 30 2020: 19(int) CompositeExtract 2018 0 Store 2019 2020 2021: 71(ptr) AccessChain 27(data) 2014 38 47 2022: 19(int) CompositeExtract 2018 1 Store 2021 2022 2023: 71(ptr) AccessChain 27(data) 2014 38 61 2024: 19(int) CompositeExtract 2018 2 Store 2023 2024 2025: 6(int) Load 8(invocation) 2026: 78(ptr) AccessChain 27(data) 65 38 2027: 20(ivec4) Load 2026 2028: 20(ivec4) GroupNonUniformSMax 34 ExclusiveScan 2027 2029: 78(ptr) AccessChain 27(data) 2025 38 Store 2029 2028 2030: 6(int) Load 8(invocation) 2031: 105(ptr) AccessChain 27(data) 29 51 30 2032: 6(int) Load 2031 2033: 6(int) GroupNonUniformUMax 34 ExclusiveScan 2032 2034: 105(ptr) AccessChain 27(data) 2030 51 30 Store 2034 2033 2035: 6(int) Load 8(invocation) 2036: 112(ptr) AccessChain 27(data) 38 51 2037: 21(ivec4) Load 2036 2038: 111(ivec2) VectorShuffle 2037 2037 0 1 2039: 111(ivec2) GroupNonUniformUMax 34 ExclusiveScan 2038 2040: 105(ptr) AccessChain 27(data) 2035 51 30 2041: 6(int) CompositeExtract 2039 0 Store 2040 2041 2042: 105(ptr) AccessChain 27(data) 2035 51 47 2043: 6(int) CompositeExtract 2039 1 Store 2042 2043 2044: 6(int) Load 8(invocation) 2045: 112(ptr) AccessChain 27(data) 51 51 2046: 21(ivec4) Load 2045 2047: 122(ivec3) VectorShuffle 2046 2046 0 1 2 2048: 122(ivec3) GroupNonUniformUMax 34 ExclusiveScan 2047 2049: 105(ptr) AccessChain 27(data) 2044 51 30 2050: 6(int) CompositeExtract 2048 0 Store 2049 2050 2051: 105(ptr) AccessChain 27(data) 2044 51 47 2052: 6(int) CompositeExtract 2048 1 Store 2051 2052 2053: 105(ptr) AccessChain 27(data) 2044 51 61 2054: 6(int) CompositeExtract 2048 2 Store 2053 2054 2055: 6(int) Load 8(invocation) 2056: 112(ptr) AccessChain 27(data) 65 51 2057: 21(ivec4) Load 2056 2058: 21(ivec4) GroupNonUniformUMax 34 ExclusiveScan 2057 2059: 112(ptr) AccessChain 27(data) 2055 51 Store 2059 2058 2060: 6(int) Load 8(invocation) 2061: 139(ptr) AccessChain 27(data) 29 65 30 2062:22(float64_t) Load 2061 2063:22(float64_t) GroupNonUniformFMax 34 ExclusiveScan 2062 2064: 139(ptr) AccessChain 27(data) 2060 65 30 Store 2064 2063 2065: 6(int) Load 8(invocation) 2066: 146(ptr) AccessChain 27(data) 38 65 2067: 23(f64vec4) Load 2066 2068:145(f64vec2) VectorShuffle 2067 2067 0 1 2069:145(f64vec2) GroupNonUniformFMax 34 ExclusiveScan 2068 2070: 139(ptr) AccessChain 27(data) 2065 65 30 2071:22(float64_t) CompositeExtract 2069 0 Store 2070 2071 2072: 139(ptr) AccessChain 27(data) 2065 65 47 2073:22(float64_t) CompositeExtract 2069 1 Store 2072 2073 2074: 6(int) Load 8(invocation) 2075: 146(ptr) AccessChain 27(data) 51 65 2076: 23(f64vec4) Load 2075 2077:156(f64vec3) VectorShuffle 2076 2076 0 1 2 2078:156(f64vec3) GroupNonUniformFMax 34 ExclusiveScan 2077 2079: 139(ptr) AccessChain 27(data) 2074 65 30 2080:22(float64_t) CompositeExtract 2078 0 Store 2079 2080 2081: 139(ptr) AccessChain 27(data) 2074 65 47 2082:22(float64_t) CompositeExtract 2078 1 Store 2081 2082 2083: 139(ptr) AccessChain 27(data) 2074 65 61 2084:22(float64_t) CompositeExtract 2078 2 Store 2083 2084 2085: 6(int) Load 8(invocation) 2086: 146(ptr) AccessChain 27(data) 65 65 2087: 23(f64vec4) Load 2086 2088: 23(f64vec4) GroupNonUniformFMax 34 ExclusiveScan 2087 2089: 146(ptr) AccessChain 27(data) 2085 65 Store 2089 2088 2090: 6(int) Load 8(invocation) 2091: 71(ptr) AccessChain 27(data) 29 38 30 2092: 19(int) Load 2091 2093: 19(int) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2092 2094: 71(ptr) AccessChain 27(data) 2090 38 30 Store 2094 2093 2095: 6(int) Load 8(invocation) 2096: 78(ptr) AccessChain 27(data) 38 38 2097: 20(ivec4) Load 2096 2098: 77(ivec2) VectorShuffle 2097 2097 0 1 2099: 77(ivec2) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2098 2100: 71(ptr) AccessChain 27(data) 2095 38 30 2101: 19(int) CompositeExtract 2099 0 Store 2100 2101 2102: 71(ptr) AccessChain 27(data) 2095 38 47 2103: 19(int) CompositeExtract 2099 1 Store 2102 2103 2104: 6(int) Load 8(invocation) 2105: 78(ptr) AccessChain 27(data) 51 38 2106: 20(ivec4) Load 2105 2107: 88(ivec3) VectorShuffle 2106 2106 0 1 2 2108: 88(ivec3) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2107 2109: 71(ptr) AccessChain 27(data) 2104 38 30 2110: 19(int) CompositeExtract 2108 0 Store 2109 2110 2111: 71(ptr) AccessChain 27(data) 2104 38 47 2112: 19(int) CompositeExtract 2108 1 Store 2111 2112 2113: 71(ptr) AccessChain 27(data) 2104 38 61 2114: 19(int) CompositeExtract 2108 2 Store 2113 2114 2115: 6(int) Load 8(invocation) 2116: 78(ptr) AccessChain 27(data) 65 38 2117: 20(ivec4) Load 2116 2118: 20(ivec4) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2117 2119: 78(ptr) AccessChain 27(data) 2115 38 Store 2119 2118 2120: 6(int) Load 8(invocation) 2121: 105(ptr) AccessChain 27(data) 29 51 30 2122: 6(int) Load 2121 2123: 6(int) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2122 2124: 105(ptr) AccessChain 27(data) 2120 51 30 Store 2124 2123 2125: 6(int) Load 8(invocation) 2126: 112(ptr) AccessChain 27(data) 38 51 2127: 21(ivec4) Load 2126 2128: 111(ivec2) VectorShuffle 2127 2127 0 1 2129: 111(ivec2) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2128 2130: 105(ptr) AccessChain 27(data) 2125 51 30 2131: 6(int) CompositeExtract 2129 0 Store 2130 2131 2132: 105(ptr) AccessChain 27(data) 2125 51 47 2133: 6(int) CompositeExtract 2129 1 Store 2132 2133 2134: 6(int) Load 8(invocation) 2135: 112(ptr) AccessChain 27(data) 51 51 2136: 21(ivec4) Load 2135 2137: 122(ivec3) VectorShuffle 2136 2136 0 1 2 2138: 122(ivec3) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2137 2139: 105(ptr) AccessChain 27(data) 2134 51 30 2140: 6(int) CompositeExtract 2138 0 Store 2139 2140 2141: 105(ptr) AccessChain 27(data) 2134 51 47 2142: 6(int) CompositeExtract 2138 1 Store 2141 2142 2143: 105(ptr) AccessChain 27(data) 2134 51 61 2144: 6(int) CompositeExtract 2138 2 Store 2143 2144 2145: 6(int) Load 8(invocation) 2146: 112(ptr) AccessChain 27(data) 65 51 2147: 21(ivec4) Load 2146 2148: 21(ivec4) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2147 2149: 112(ptr) AccessChain 27(data) 2145 51 Store 2149 2148 2150: 6(int) Load 8(invocation) 2151: 71(ptr) AccessChain 27(data) 29 38 30 2152: 19(int) Load 2151 2153: 595(bool) SLessThan 2152 29 2154: 595(bool) GroupNonUniformLogicalAnd 34 ExclusiveScan 2153 2155: 19(int) Select 2154 38 29 2156: 71(ptr) AccessChain 27(data) 2150 38 30 Store 2156 2155 2157: 6(int) Load 8(invocation) 2158: 78(ptr) AccessChain 27(data) 38 38 2159: 20(ivec4) Load 2158 2160: 77(ivec2) VectorShuffle 2159 2159 0 1 2161: 605(bvec2) SLessThan 2160 604 2162: 605(bvec2) GroupNonUniformLogicalAnd 34 ExclusiveScan 2161 2163: 77(ivec2) Select 2162 608 604 2164: 71(ptr) AccessChain 27(data) 2157 38 30 2165: 19(int) CompositeExtract 2163 0 Store 2164 2165 2166: 71(ptr) AccessChain 27(data) 2157 38 47 2167: 19(int) CompositeExtract 2163 1 Store 2166 2167 2168: 6(int) Load 8(invocation) 2169: 78(ptr) AccessChain 27(data) 38 38 2170: 20(ivec4) Load 2169 2171: 88(ivec3) VectorShuffle 2170 2170 0 1 2 2172: 619(bvec3) SLessThan 2171 618 2173: 619(bvec3) GroupNonUniformLogicalAnd 34 ExclusiveScan 2172 2174: 88(ivec3) Select 2173 622 618 2175: 71(ptr) AccessChain 27(data) 2168 38 30 2176: 19(int) CompositeExtract 2174 0 Store 2175 2176 2177: 71(ptr) AccessChain 27(data) 2168 38 47 2178: 19(int) CompositeExtract 2174 1 Store 2177 2178 2179: 71(ptr) AccessChain 27(data) 2168 38 61 2180: 19(int) CompositeExtract 2174 2 Store 2179 2180 2181: 6(int) Load 8(invocation) 2182: 78(ptr) AccessChain 27(data) 38 38 2183: 20(ivec4) Load 2182 2184: 634(bvec4) SLessThan 2183 633 2185: 634(bvec4) GroupNonUniformLogicalAnd 34 ExclusiveScan 2184 2186: 20(ivec4) Select 2185 637 633 2187: 78(ptr) AccessChain 27(data) 2181 38 Store 2187 2186 2188: 6(int) Load 8(invocation) 2189: 71(ptr) AccessChain 27(data) 29 38 30 2190: 19(int) Load 2189 2191: 19(int) GroupNonUniformBitwiseOr 34 ExclusiveScan 2190 2192: 71(ptr) AccessChain 27(data) 2188 38 30 Store 2192 2191 2193: 6(int) Load 8(invocation) 2194: 78(ptr) AccessChain 27(data) 38 38 2195: 20(ivec4) Load 2194 2196: 77(ivec2) VectorShuffle 2195 2195 0 1 2197: 77(ivec2) GroupNonUniformBitwiseOr 34 ExclusiveScan 2196 2198: 71(ptr) AccessChain 27(data) 2193 38 30 2199: 19(int) CompositeExtract 2197 0 Store 2198 2199 2200: 71(ptr) AccessChain 27(data) 2193 38 47 2201: 19(int) CompositeExtract 2197 1 Store 2200 2201 2202: 6(int) Load 8(invocation) 2203: 78(ptr) AccessChain 27(data) 51 38 2204: 20(ivec4) Load 2203 2205: 88(ivec3) VectorShuffle 2204 2204 0 1 2 2206: 88(ivec3) GroupNonUniformBitwiseOr 34 ExclusiveScan 2205 2207: 71(ptr) AccessChain 27(data) 2202 38 30 2208: 19(int) CompositeExtract 2206 0 Store 2207 2208 2209: 71(ptr) AccessChain 27(data) 2202 38 47 2210: 19(int) CompositeExtract 2206 1 Store 2209 2210 2211: 71(ptr) AccessChain 27(data) 2202 38 61 2212: 19(int) CompositeExtract 2206 2 Store 2211 2212 2213: 6(int) Load 8(invocation) 2214: 78(ptr) AccessChain 27(data) 65 38 2215: 20(ivec4) Load 2214 2216: 20(ivec4) GroupNonUniformBitwiseOr 34 ExclusiveScan 2215 2217: 78(ptr) AccessChain 27(data) 2213 38 Store 2217 2216 2218: 6(int) Load 8(invocation) 2219: 105(ptr) AccessChain 27(data) 29 51 30 2220: 6(int) Load 2219 2221: 6(int) GroupNonUniformBitwiseOr 34 ExclusiveScan 2220 2222: 105(ptr) AccessChain 27(data) 2218 51 30 Store 2222 2221 2223: 6(int) Load 8(invocation) 2224: 112(ptr) AccessChain 27(data) 38 51 2225: 21(ivec4) Load 2224 2226: 111(ivec2) VectorShuffle 2225 2225 0 1 2227: 111(ivec2) GroupNonUniformBitwiseOr 34 ExclusiveScan 2226 2228: 105(ptr) AccessChain 27(data) 2223 51 30 2229: 6(int) CompositeExtract 2227 0 Store 2228 2229 2230: 105(ptr) AccessChain 27(data) 2223 51 47 2231: 6(int) CompositeExtract 2227 1 Store 2230 2231 2232: 6(int) Load 8(invocation) 2233: 112(ptr) AccessChain 27(data) 51 51 2234: 21(ivec4) Load 2233 2235: 122(ivec3) VectorShuffle 2234 2234 0 1 2 2236: 122(ivec3) GroupNonUniformBitwiseOr 34 ExclusiveScan 2235 2237: 105(ptr) AccessChain 27(data) 2232 51 30 2238: 6(int) CompositeExtract 2236 0 Store 2237 2238 2239: 105(ptr) AccessChain 27(data) 2232 51 47 2240: 6(int) CompositeExtract 2236 1 Store 2239 2240 2241: 105(ptr) AccessChain 27(data) 2232 51 61 2242: 6(int) CompositeExtract 2236 2 Store 2241 2242 2243: 6(int) Load 8(invocation) 2244: 112(ptr) AccessChain 27(data) 65 51 2245: 21(ivec4) Load 2244 2246: 21(ivec4) GroupNonUniformBitwiseOr 34 ExclusiveScan 2245 2247: 112(ptr) AccessChain 27(data) 2243 51 Store 2247 2246 2248: 6(int) Load 8(invocation) 2249: 71(ptr) AccessChain 27(data) 29 38 30 2250: 19(int) Load 2249 2251: 595(bool) SLessThan 2250 29 2252: 595(bool) GroupNonUniformLogicalOr 34 ExclusiveScan 2251 2253: 19(int) Select 2252 38 29 2254: 71(ptr) AccessChain 27(data) 2248 38 30 Store 2254 2253 2255: 6(int) Load 8(invocation) 2256: 78(ptr) AccessChain 27(data) 38 38 2257: 20(ivec4) Load 2256 2258: 77(ivec2) VectorShuffle 2257 2257 0 1 2259: 605(bvec2) SLessThan 2258 604 2260: 605(bvec2) GroupNonUniformLogicalOr 34 ExclusiveScan 2259 2261: 77(ivec2) Select 2260 608 604 2262: 71(ptr) AccessChain 27(data) 2255 38 30 2263: 19(int) CompositeExtract 2261 0 Store 2262 2263 2264: 71(ptr) AccessChain 27(data) 2255 38 47 2265: 19(int) CompositeExtract 2261 1 Store 2264 2265 2266: 6(int) Load 8(invocation) 2267: 78(ptr) AccessChain 27(data) 38 38 2268: 20(ivec4) Load 2267 2269: 88(ivec3) VectorShuffle 2268 2268 0 1 2 2270: 619(bvec3) SLessThan 2269 618 2271: 619(bvec3) GroupNonUniformLogicalOr 34 ExclusiveScan 2270 2272: 88(ivec3) Select 2271 622 618 2273: 71(ptr) AccessChain 27(data) 2266 38 30 2274: 19(int) CompositeExtract 2272 0 Store 2273 2274 2275: 71(ptr) AccessChain 27(data) 2266 38 47 2276: 19(int) CompositeExtract 2272 1 Store 2275 2276 2277: 71(ptr) AccessChain 27(data) 2266 38 61 2278: 19(int) CompositeExtract 2272 2 Store 2277 2278 2279: 6(int) Load 8(invocation) 2280: 78(ptr) AccessChain 27(data) 38 38 2281: 20(ivec4) Load 2280 2282: 634(bvec4) SLessThan 2281 633 2283: 634(bvec4) GroupNonUniformLogicalOr 34 ExclusiveScan 2282 2284: 20(ivec4) Select 2283 637 633 2285: 78(ptr) AccessChain 27(data) 2279 38 Store 2285 2284 2286: 6(int) Load 8(invocation) 2287: 71(ptr) AccessChain 27(data) 29 38 30 2288: 19(int) Load 2287 2289: 19(int) GroupNonUniformBitwiseXor 34 ExclusiveScan 2288 2290: 71(ptr) AccessChain 27(data) 2286 38 30 Store 2290 2289 2291: 6(int) Load 8(invocation) 2292: 78(ptr) AccessChain 27(data) 38 38 2293: 20(ivec4) Load 2292 2294: 77(ivec2) VectorShuffle 2293 2293 0 1 2295: 77(ivec2) GroupNonUniformBitwiseXor 34 ExclusiveScan 2294 2296: 71(ptr) AccessChain 27(data) 2291 38 30 2297: 19(int) CompositeExtract 2295 0 Store 2296 2297 2298: 71(ptr) AccessChain 27(data) 2291 38 47 2299: 19(int) CompositeExtract 2295 1 Store 2298 2299 2300: 6(int) Load 8(invocation) 2301: 78(ptr) AccessChain 27(data) 51 38 2302: 20(ivec4) Load 2301 2303: 88(ivec3) VectorShuffle 2302 2302 0 1 2 2304: 88(ivec3) GroupNonUniformBitwiseXor 34 ExclusiveScan 2303 2305: 71(ptr) AccessChain 27(data) 2300 38 30 2306: 19(int) CompositeExtract 2304 0 Store 2305 2306 2307: 71(ptr) AccessChain 27(data) 2300 38 47 2308: 19(int) CompositeExtract 2304 1 Store 2307 2308 2309: 71(ptr) AccessChain 27(data) 2300 38 61 2310: 19(int) CompositeExtract 2304 2 Store 2309 2310 2311: 6(int) Load 8(invocation) 2312: 78(ptr) AccessChain 27(data) 65 38 2313: 20(ivec4) Load 2312 2314: 20(ivec4) GroupNonUniformBitwiseXor 34 ExclusiveScan 2313 2315: 78(ptr) AccessChain 27(data) 2311 38 Store 2315 2314 2316: 6(int) Load 8(invocation) 2317: 105(ptr) AccessChain 27(data) 29 51 30 2318: 6(int) Load 2317 2319: 6(int) GroupNonUniformBitwiseXor 34 ExclusiveScan 2318 2320: 105(ptr) AccessChain 27(data) 2316 51 30 Store 2320 2319 2321: 6(int) Load 8(invocation) 2322: 112(ptr) AccessChain 27(data) 38 51 2323: 21(ivec4) Load 2322 2324: 111(ivec2) VectorShuffle 2323 2323 0 1 2325: 111(ivec2) GroupNonUniformBitwiseXor 34 ExclusiveScan 2324 2326: 105(ptr) AccessChain 27(data) 2321 51 30 2327: 6(int) CompositeExtract 2325 0 Store 2326 2327 2328: 105(ptr) AccessChain 27(data) 2321 51 47 2329: 6(int) CompositeExtract 2325 1 Store 2328 2329 2330: 6(int) Load 8(invocation) 2331: 112(ptr) AccessChain 27(data) 51 51 2332: 21(ivec4) Load 2331 2333: 122(ivec3) VectorShuffle 2332 2332 0 1 2 2334: 122(ivec3) GroupNonUniformBitwiseXor 34 ExclusiveScan 2333 2335: 105(ptr) AccessChain 27(data) 2330 51 30 2336: 6(int) CompositeExtract 2334 0 Store 2335 2336 2337: 105(ptr) AccessChain 27(data) 2330 51 47 2338: 6(int) CompositeExtract 2334 1 Store 2337 2338 2339: 105(ptr) AccessChain 27(data) 2330 51 61 2340: 6(int) CompositeExtract 2334 2 Store 2339 2340 2341: 6(int) Load 8(invocation) 2342: 112(ptr) AccessChain 27(data) 65 51 2343: 21(ivec4) Load 2342 2344: 21(ivec4) GroupNonUniformBitwiseXor 34 ExclusiveScan 2343 2345: 112(ptr) AccessChain 27(data) 2341 51 Store 2345 2344 2346: 6(int) Load 8(invocation) 2347: 71(ptr) AccessChain 27(data) 29 38 30 2348: 19(int) Load 2347 2349: 595(bool) SLessThan 2348 29 2350: 595(bool) GroupNonUniformLogicalXor 34 ExclusiveScan 2349 2351: 19(int) Select 2350 38 29 2352: 71(ptr) AccessChain 27(data) 2346 38 30 Store 2352 2351 2353: 6(int) Load 8(invocation) 2354: 78(ptr) AccessChain 27(data) 38 38 2355: 20(ivec4) Load 2354 2356: 77(ivec2) VectorShuffle 2355 2355 0 1 2357: 605(bvec2) SLessThan 2356 604 2358: 605(bvec2) GroupNonUniformLogicalXor 34 ExclusiveScan 2357 2359: 77(ivec2) Select 2358 608 604 2360: 71(ptr) AccessChain 27(data) 2353 38 30 2361: 19(int) CompositeExtract 2359 0 Store 2360 2361 2362: 71(ptr) AccessChain 27(data) 2353 38 47 2363: 19(int) CompositeExtract 2359 1 Store 2362 2363 2364: 6(int) Load 8(invocation) 2365: 78(ptr) AccessChain 27(data) 38 38 2366: 20(ivec4) Load 2365 2367: 88(ivec3) VectorShuffle 2366 2366 0 1 2 2368: 619(bvec3) SLessThan 2367 618 2369: 619(bvec3) GroupNonUniformLogicalXor 34 ExclusiveScan 2368 2370: 88(ivec3) Select 2369 622 618 2371: 71(ptr) AccessChain 27(data) 2364 38 30 2372: 19(int) CompositeExtract 2370 0 Store 2371 2372 2373: 71(ptr) AccessChain 27(data) 2364 38 47 2374: 19(int) CompositeExtract 2370 1 Store 2373 2374 2375: 71(ptr) AccessChain 27(data) 2364 38 61 2376: 19(int) CompositeExtract 2370 2 Store 2375 2376 2377: 6(int) Load 8(invocation) 2378: 78(ptr) AccessChain 27(data) 38 38 2379: 20(ivec4) Load 2378 2380: 634(bvec4) SLessThan 2379 633 2381: 634(bvec4) GroupNonUniformLogicalXor 34 ExclusiveScan 2380 2382: 20(ivec4) Select 2381 637 633 2383: 78(ptr) AccessChain 27(data) 2377 38 Store 2383 2382 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupBallot.comp.out000066400000000000000000000751111506534232700237550ustar00rootroot00000000000000spv.subgroupBallot.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 437 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformBallot 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 21 23 26 29 32 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_ballot" SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 19 "relMask" Name 21 "gl_SubgroupEqMask" Name 23 "gl_SubgroupGeMask" Name 26 "gl_SubgroupGtMask" Name 29 "gl_SubgroupLeMask" Name 32 "gl_SubgroupLtMask" Name 35 "result" Name 46 "Buffers" MemberName 46(Buffers) 0 "f4" MemberName 46(Buffers) 1 "i4" MemberName 46(Buffers) 2 "u4" MemberName 46(Buffers) 3 "d4" Name 49 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 21(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR Decorate 23(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR Decorate 26(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 29(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 32(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR Decorate 46(Buffers) Block MemberDecorate 46(Buffers) 0 Offset 0 MemberDecorate 46(Buffers) 1 Offset 16 MemberDecorate 46(Buffers) 2 Offset 32 MemberDecorate 46(Buffers) 3 Offset 64 Decorate 49(data) Binding 0 Decorate 49(data) DescriptorSet 0 Decorate 436 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeVector 6(int) 4 18: TypePointer Function 17(ivec4) 20: TypePointer Input 17(ivec4) 21(gl_SubgroupEqMask): 20(ptr) Variable Input 23(gl_SubgroupGeMask): 20(ptr) Variable Input 26(gl_SubgroupGtMask): 20(ptr) Variable Input 29(gl_SubgroupLeMask): 20(ptr) Variable Input 32(gl_SubgroupLtMask): 20(ptr) Variable Input 36: TypeBool 37: 36(bool) ConstantTrue 38: 6(int) Constant 3 40: TypeFloat 32 41: TypeVector 40(float) 4 42: TypeInt 32 1 43: TypeVector 42(int) 4 44: TypeFloat 64 45: TypeVector 44(float64_t) 4 46(Buffers): TypeStruct 41(fvec4) 43(ivec4) 17(ivec4) 45(f64vec4) 47: TypeArray 46(Buffers) 15 48: TypePointer StorageBuffer 47 49(data): 48(ptr) Variable StorageBuffer 51: 42(int) Constant 2 54: 6(int) Constant 0 55: TypePointer StorageBuffer 6(int) 60: 42(int) Constant 1 61: 42(int) Constant 0 64: 6(int) Constant 1 72: 6(int) Constant 2 83: TypeVector 36(bool) 4 88: TypePointer StorageBuffer 17(ivec4) 96: TypePointer StorageBuffer 40(float) 102: TypeVector 40(float) 2 103: TypePointer StorageBuffer 41(fvec4) 113: TypeVector 40(float) 3 125: 42(int) Constant 3 131: TypePointer StorageBuffer 42(int) 137: TypeVector 42(int) 2 138: TypePointer StorageBuffer 43(ivec4) 148: TypeVector 42(int) 3 170: TypeVector 6(int) 2 180: TypeVector 6(int) 3 197: TypePointer StorageBuffer 44(float64_t) 203: TypeVector 44(float64_t) 2 204: TypePointer StorageBuffer 45(f64vec4) 214: TypeVector 44(float64_t) 3 241: 137(ivec2) ConstantComposite 61 61 242: TypeVector 36(bool) 2 245: 137(ivec2) ConstantComposite 60 60 255: 148(ivec3) ConstantComposite 61 61 61 256: TypeVector 36(bool) 3 259: 148(ivec3) ConstantComposite 60 60 60 270: 43(ivec4) ConstantComposite 61 61 61 61 273: 43(ivec4) ConstantComposite 60 60 60 60 435: 6(int) Constant 8 436: 180(ivec3) ConstantComposite 435 435 64 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 19(relMask): 18(ptr) Variable Function 35(result): 18(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 22: 17(ivec4) Load 21(gl_SubgroupEqMask) 24: 17(ivec4) Load 23(gl_SubgroupGeMask) 25: 17(ivec4) IAdd 22 24 27: 17(ivec4) Load 26(gl_SubgroupGtMask) 28: 17(ivec4) IAdd 25 27 30: 17(ivec4) Load 29(gl_SubgroupLeMask) 31: 17(ivec4) IAdd 28 30 33: 17(ivec4) Load 32(gl_SubgroupLtMask) 34: 17(ivec4) IAdd 31 33 Store 19(relMask) 34 39: 17(ivec4) GroupNonUniformBallot 38 37 Store 35(result) 39 50: 6(int) Load 8(invocation) 52: 17(ivec4) Load 35(result) 53: 6(int) GroupNonUniformBallotBitCount 38 Reduce 52 56: 55(ptr) AccessChain 49(data) 50 51 54 Store 56 53 57: 6(int) Load 8(invocation) 58: 17(ivec4) Load 35(result) 59: 36(bool) GroupNonUniformBallotBitExtract 38 58 54 62: 42(int) Select 59 60 61 63: 6(int) Bitcast 62 65: 55(ptr) AccessChain 49(data) 57 51 64 Store 65 63 66: 6(int) Load 8(invocation) 67: 17(ivec4) Load 35(result) 68: 6(int) GroupNonUniformBallotBitCount 38 InclusiveScan 67 69: 17(ivec4) Load 35(result) 70: 6(int) GroupNonUniformBallotBitCount 38 ExclusiveScan 69 71: 6(int) IAdd 68 70 73: 55(ptr) AccessChain 49(data) 66 51 72 Store 73 71 74: 6(int) Load 8(invocation) 75: 17(ivec4) Load 35(result) 76: 6(int) GroupNonUniformBallotFindLSB 38 75 77: 17(ivec4) Load 35(result) 78: 6(int) GroupNonUniformBallotFindMSB 38 77 79: 6(int) IAdd 76 78 80: 55(ptr) AccessChain 49(data) 74 51 38 Store 80 79 81: 17(ivec4) Load 19(relMask) 82: 17(ivec4) Load 35(result) 84: 83(bvec4) IEqual 81 82 85: 36(bool) All 84 SelectionMerge 87 None BranchConditional 85 86 87 86: Label 89: 88(ptr) AccessChain 49(data) 61 51 90: 17(ivec4) Load 89 91: 36(bool) GroupNonUniformInverseBallot 38 90 Branch 87 87: Label 92: 36(bool) Phi 85 5 91 86 SelectionMerge 94 None BranchConditional 92 93 276 93: Label 95: 6(int) Load 8(invocation) 97: 96(ptr) AccessChain 49(data) 61 61 54 98: 40(float) Load 97 99: 40(float) GroupNonUniformBroadcast 38 98 38 100: 96(ptr) AccessChain 49(data) 95 61 54 Store 100 99 101: 6(int) Load 8(invocation) 104: 103(ptr) AccessChain 49(data) 60 61 105: 41(fvec4) Load 104 106: 102(fvec2) VectorShuffle 105 105 0 1 107: 102(fvec2) GroupNonUniformBroadcast 38 106 38 108: 96(ptr) AccessChain 49(data) 101 61 54 109: 40(float) CompositeExtract 107 0 Store 108 109 110: 96(ptr) AccessChain 49(data) 101 61 64 111: 40(float) CompositeExtract 107 1 Store 110 111 112: 6(int) Load 8(invocation) 114: 103(ptr) AccessChain 49(data) 51 61 115: 41(fvec4) Load 114 116: 113(fvec3) VectorShuffle 115 115 0 1 2 117: 113(fvec3) GroupNonUniformBroadcast 38 116 38 118: 96(ptr) AccessChain 49(data) 112 61 54 119: 40(float) CompositeExtract 117 0 Store 118 119 120: 96(ptr) AccessChain 49(data) 112 61 64 121: 40(float) CompositeExtract 117 1 Store 120 121 122: 96(ptr) AccessChain 49(data) 112 61 72 123: 40(float) CompositeExtract 117 2 Store 122 123 124: 6(int) Load 8(invocation) 126: 103(ptr) AccessChain 49(data) 125 61 127: 41(fvec4) Load 126 128: 41(fvec4) GroupNonUniformBroadcast 38 127 38 129: 103(ptr) AccessChain 49(data) 124 61 Store 129 128 130: 6(int) Load 8(invocation) 132: 131(ptr) AccessChain 49(data) 61 60 54 133: 42(int) Load 132 134: 42(int) GroupNonUniformBroadcast 38 133 72 135: 131(ptr) AccessChain 49(data) 130 60 54 Store 135 134 136: 6(int) Load 8(invocation) 139: 138(ptr) AccessChain 49(data) 60 60 140: 43(ivec4) Load 139 141: 137(ivec2) VectorShuffle 140 140 0 1 142: 137(ivec2) GroupNonUniformBroadcast 38 141 72 143: 131(ptr) AccessChain 49(data) 136 60 54 144: 42(int) CompositeExtract 142 0 Store 143 144 145: 131(ptr) AccessChain 49(data) 136 60 64 146: 42(int) CompositeExtract 142 1 Store 145 146 147: 6(int) Load 8(invocation) 149: 138(ptr) AccessChain 49(data) 51 60 150: 43(ivec4) Load 149 151: 148(ivec3) VectorShuffle 150 150 0 1 2 152: 148(ivec3) GroupNonUniformBroadcast 38 151 72 153: 131(ptr) AccessChain 49(data) 147 60 54 154: 42(int) CompositeExtract 152 0 Store 153 154 155: 131(ptr) AccessChain 49(data) 147 60 64 156: 42(int) CompositeExtract 152 1 Store 155 156 157: 131(ptr) AccessChain 49(data) 147 60 72 158: 42(int) CompositeExtract 152 2 Store 157 158 159: 6(int) Load 8(invocation) 160: 138(ptr) AccessChain 49(data) 125 60 161: 43(ivec4) Load 160 162: 43(ivec4) GroupNonUniformBroadcast 38 161 72 163: 138(ptr) AccessChain 49(data) 159 60 Store 163 162 164: 6(int) Load 8(invocation) 165: 55(ptr) AccessChain 49(data) 61 51 54 166: 6(int) Load 165 167: 6(int) GroupNonUniformBroadcast 38 166 64 168: 55(ptr) AccessChain 49(data) 164 51 54 Store 168 167 169: 6(int) Load 8(invocation) 171: 88(ptr) AccessChain 49(data) 60 51 172: 17(ivec4) Load 171 173: 170(ivec2) VectorShuffle 172 172 0 1 174: 170(ivec2) GroupNonUniformBroadcast 38 173 64 175: 55(ptr) AccessChain 49(data) 169 51 54 176: 6(int) CompositeExtract 174 0 Store 175 176 177: 55(ptr) AccessChain 49(data) 169 51 64 178: 6(int) CompositeExtract 174 1 Store 177 178 179: 6(int) Load 8(invocation) 181: 88(ptr) AccessChain 49(data) 51 51 182: 17(ivec4) Load 181 183: 180(ivec3) VectorShuffle 182 182 0 1 2 184: 180(ivec3) GroupNonUniformBroadcast 38 183 64 185: 55(ptr) AccessChain 49(data) 179 51 54 186: 6(int) CompositeExtract 184 0 Store 185 186 187: 55(ptr) AccessChain 49(data) 179 51 64 188: 6(int) CompositeExtract 184 1 Store 187 188 189: 55(ptr) AccessChain 49(data) 179 51 72 190: 6(int) CompositeExtract 184 2 Store 189 190 191: 6(int) Load 8(invocation) 192: 88(ptr) AccessChain 49(data) 125 51 193: 17(ivec4) Load 192 194: 17(ivec4) GroupNonUniformBroadcast 38 193 64 195: 88(ptr) AccessChain 49(data) 191 51 Store 195 194 196: 6(int) Load 8(invocation) 198: 197(ptr) AccessChain 49(data) 61 125 54 199:44(float64_t) Load 198 200:44(float64_t) GroupNonUniformBroadcast 38 199 54 201: 197(ptr) AccessChain 49(data) 196 125 54 Store 201 200 202: 6(int) Load 8(invocation) 205: 204(ptr) AccessChain 49(data) 60 125 206: 45(f64vec4) Load 205 207:203(f64vec2) VectorShuffle 206 206 0 1 208:203(f64vec2) GroupNonUniformBroadcast 38 207 54 209: 197(ptr) AccessChain 49(data) 202 125 54 210:44(float64_t) CompositeExtract 208 0 Store 209 210 211: 197(ptr) AccessChain 49(data) 202 125 64 212:44(float64_t) CompositeExtract 208 1 Store 211 212 213: 6(int) Load 8(invocation) 215: 204(ptr) AccessChain 49(data) 51 125 216: 45(f64vec4) Load 215 217:214(f64vec3) VectorShuffle 216 216 0 1 2 218:214(f64vec3) GroupNonUniformBroadcast 38 217 54 219: 197(ptr) AccessChain 49(data) 213 125 54 220:44(float64_t) CompositeExtract 218 0 Store 219 220 221: 197(ptr) AccessChain 49(data) 213 125 64 222:44(float64_t) CompositeExtract 218 1 Store 221 222 223: 197(ptr) AccessChain 49(data) 213 125 72 224:44(float64_t) CompositeExtract 218 2 Store 223 224 225: 6(int) Load 8(invocation) 226: 204(ptr) AccessChain 49(data) 125 125 227: 45(f64vec4) Load 226 228: 45(f64vec4) GroupNonUniformBroadcast 38 227 54 229: 204(ptr) AccessChain 49(data) 225 125 Store 229 228 230: 6(int) Load 8(invocation) 231: 131(ptr) AccessChain 49(data) 61 60 54 232: 42(int) Load 231 233: 36(bool) SLessThan 232 61 234: 36(bool) GroupNonUniformBroadcast 38 233 64 235: 42(int) Select 234 60 61 236: 131(ptr) AccessChain 49(data) 230 60 54 Store 236 235 237: 6(int) Load 8(invocation) 238: 138(ptr) AccessChain 49(data) 60 60 239: 43(ivec4) Load 238 240: 137(ivec2) VectorShuffle 239 239 0 1 243: 242(bvec2) SLessThan 240 241 244: 242(bvec2) GroupNonUniformBroadcast 38 243 64 246: 137(ivec2) Select 244 245 241 247: 131(ptr) AccessChain 49(data) 237 60 54 248: 42(int) CompositeExtract 246 0 Store 247 248 249: 131(ptr) AccessChain 49(data) 237 60 64 250: 42(int) CompositeExtract 246 1 Store 249 250 251: 6(int) Load 8(invocation) 252: 138(ptr) AccessChain 49(data) 60 60 253: 43(ivec4) Load 252 254: 148(ivec3) VectorShuffle 253 253 0 1 2 257: 256(bvec3) SLessThan 254 255 258: 256(bvec3) GroupNonUniformBroadcast 38 257 64 260: 148(ivec3) Select 258 259 255 261: 131(ptr) AccessChain 49(data) 251 60 54 262: 42(int) CompositeExtract 260 0 Store 261 262 263: 131(ptr) AccessChain 49(data) 251 60 64 264: 42(int) CompositeExtract 260 1 Store 263 264 265: 131(ptr) AccessChain 49(data) 251 60 72 266: 42(int) CompositeExtract 260 2 Store 265 266 267: 6(int) Load 8(invocation) 268: 138(ptr) AccessChain 49(data) 60 60 269: 43(ivec4) Load 268 271: 83(bvec4) SLessThan 269 270 272: 83(bvec4) GroupNonUniformBroadcast 38 271 64 274: 43(ivec4) Select 272 273 270 275: 138(ptr) AccessChain 49(data) 267 60 Store 275 274 Branch 94 276: Label 277: 6(int) Load 8(invocation) 278: 96(ptr) AccessChain 49(data) 61 61 54 279: 40(float) Load 278 280: 40(float) GroupNonUniformBroadcastFirst 38 279 281: 96(ptr) AccessChain 49(data) 277 61 54 Store 281 280 282: 6(int) Load 8(invocation) 283: 103(ptr) AccessChain 49(data) 60 61 284: 41(fvec4) Load 283 285: 102(fvec2) VectorShuffle 284 284 0 1 286: 102(fvec2) GroupNonUniformBroadcastFirst 38 285 287: 96(ptr) AccessChain 49(data) 282 61 54 288: 40(float) CompositeExtract 286 0 Store 287 288 289: 96(ptr) AccessChain 49(data) 282 61 64 290: 40(float) CompositeExtract 286 1 Store 289 290 291: 6(int) Load 8(invocation) 292: 103(ptr) AccessChain 49(data) 51 61 293: 41(fvec4) Load 292 294: 113(fvec3) VectorShuffle 293 293 0 1 2 295: 113(fvec3) GroupNonUniformBroadcastFirst 38 294 296: 96(ptr) AccessChain 49(data) 291 61 54 297: 40(float) CompositeExtract 295 0 Store 296 297 298: 96(ptr) AccessChain 49(data) 291 61 64 299: 40(float) CompositeExtract 295 1 Store 298 299 300: 96(ptr) AccessChain 49(data) 291 61 72 301: 40(float) CompositeExtract 295 2 Store 300 301 302: 6(int) Load 8(invocation) 303: 103(ptr) AccessChain 49(data) 125 61 304: 41(fvec4) Load 303 305: 41(fvec4) GroupNonUniformBroadcastFirst 38 304 306: 103(ptr) AccessChain 49(data) 302 61 Store 306 305 307: 6(int) Load 8(invocation) 308: 131(ptr) AccessChain 49(data) 61 60 54 309: 42(int) Load 308 310: 42(int) GroupNonUniformBroadcastFirst 38 309 311: 131(ptr) AccessChain 49(data) 307 60 54 Store 311 310 312: 6(int) Load 8(invocation) 313: 138(ptr) AccessChain 49(data) 60 60 314: 43(ivec4) Load 313 315: 137(ivec2) VectorShuffle 314 314 0 1 316: 137(ivec2) GroupNonUniformBroadcastFirst 38 315 317: 131(ptr) AccessChain 49(data) 312 60 54 318: 42(int) CompositeExtract 316 0 Store 317 318 319: 131(ptr) AccessChain 49(data) 312 60 64 320: 42(int) CompositeExtract 316 1 Store 319 320 321: 6(int) Load 8(invocation) 322: 138(ptr) AccessChain 49(data) 51 60 323: 43(ivec4) Load 322 324: 148(ivec3) VectorShuffle 323 323 0 1 2 325: 148(ivec3) GroupNonUniformBroadcastFirst 38 324 326: 131(ptr) AccessChain 49(data) 321 60 54 327: 42(int) CompositeExtract 325 0 Store 326 327 328: 131(ptr) AccessChain 49(data) 321 60 64 329: 42(int) CompositeExtract 325 1 Store 328 329 330: 131(ptr) AccessChain 49(data) 321 60 72 331: 42(int) CompositeExtract 325 2 Store 330 331 332: 6(int) Load 8(invocation) 333: 138(ptr) AccessChain 49(data) 125 60 334: 43(ivec4) Load 333 335: 43(ivec4) GroupNonUniformBroadcastFirst 38 334 336: 138(ptr) AccessChain 49(data) 332 60 Store 336 335 337: 6(int) Load 8(invocation) 338: 55(ptr) AccessChain 49(data) 61 51 54 339: 6(int) Load 338 340: 6(int) GroupNonUniformBroadcastFirst 38 339 341: 55(ptr) AccessChain 49(data) 337 51 54 Store 341 340 342: 6(int) Load 8(invocation) 343: 88(ptr) AccessChain 49(data) 60 51 344: 17(ivec4) Load 343 345: 170(ivec2) VectorShuffle 344 344 0 1 346: 170(ivec2) GroupNonUniformBroadcastFirst 38 345 347: 55(ptr) AccessChain 49(data) 342 51 54 348: 6(int) CompositeExtract 346 0 Store 347 348 349: 55(ptr) AccessChain 49(data) 342 51 64 350: 6(int) CompositeExtract 346 1 Store 349 350 351: 6(int) Load 8(invocation) 352: 88(ptr) AccessChain 49(data) 51 51 353: 17(ivec4) Load 352 354: 180(ivec3) VectorShuffle 353 353 0 1 2 355: 180(ivec3) GroupNonUniformBroadcastFirst 38 354 356: 55(ptr) AccessChain 49(data) 351 51 54 357: 6(int) CompositeExtract 355 0 Store 356 357 358: 55(ptr) AccessChain 49(data) 351 51 64 359: 6(int) CompositeExtract 355 1 Store 358 359 360: 55(ptr) AccessChain 49(data) 351 51 72 361: 6(int) CompositeExtract 355 2 Store 360 361 362: 6(int) Load 8(invocation) 363: 88(ptr) AccessChain 49(data) 125 51 364: 17(ivec4) Load 363 365: 17(ivec4) GroupNonUniformBroadcastFirst 38 364 366: 88(ptr) AccessChain 49(data) 362 51 Store 366 365 367: 6(int) Load 8(invocation) 368: 197(ptr) AccessChain 49(data) 61 125 54 369:44(float64_t) Load 368 370:44(float64_t) GroupNonUniformBroadcastFirst 38 369 371: 197(ptr) AccessChain 49(data) 367 125 54 Store 371 370 372: 6(int) Load 8(invocation) 373: 204(ptr) AccessChain 49(data) 60 125 374: 45(f64vec4) Load 373 375:203(f64vec2) VectorShuffle 374 374 0 1 376:203(f64vec2) GroupNonUniformBroadcastFirst 38 375 377: 197(ptr) AccessChain 49(data) 372 125 54 378:44(float64_t) CompositeExtract 376 0 Store 377 378 379: 197(ptr) AccessChain 49(data) 372 125 64 380:44(float64_t) CompositeExtract 376 1 Store 379 380 381: 6(int) Load 8(invocation) 382: 204(ptr) AccessChain 49(data) 51 125 383: 45(f64vec4) Load 382 384:214(f64vec3) VectorShuffle 383 383 0 1 2 385:214(f64vec3) GroupNonUniformBroadcastFirst 38 384 386: 197(ptr) AccessChain 49(data) 381 125 54 387:44(float64_t) CompositeExtract 385 0 Store 386 387 388: 197(ptr) AccessChain 49(data) 381 125 64 389:44(float64_t) CompositeExtract 385 1 Store 388 389 390: 197(ptr) AccessChain 49(data) 381 125 72 391:44(float64_t) CompositeExtract 385 2 Store 390 391 392: 6(int) Load 8(invocation) 393: 204(ptr) AccessChain 49(data) 125 125 394: 45(f64vec4) Load 393 395: 45(f64vec4) GroupNonUniformBroadcastFirst 38 394 396: 204(ptr) AccessChain 49(data) 392 125 Store 396 395 397: 6(int) Load 8(invocation) 398: 131(ptr) AccessChain 49(data) 61 60 54 399: 42(int) Load 398 400: 36(bool) SLessThan 399 61 401: 36(bool) GroupNonUniformBroadcastFirst 38 400 402: 42(int) Select 401 60 61 403: 131(ptr) AccessChain 49(data) 397 60 54 Store 403 402 404: 6(int) Load 8(invocation) 405: 138(ptr) AccessChain 49(data) 60 60 406: 43(ivec4) Load 405 407: 137(ivec2) VectorShuffle 406 406 0 1 408: 242(bvec2) SLessThan 407 241 409: 242(bvec2) GroupNonUniformBroadcastFirst 38 408 410: 137(ivec2) Select 409 245 241 411: 131(ptr) AccessChain 49(data) 404 60 54 412: 42(int) CompositeExtract 410 0 Store 411 412 413: 131(ptr) AccessChain 49(data) 404 60 64 414: 42(int) CompositeExtract 410 1 Store 413 414 415: 6(int) Load 8(invocation) 416: 138(ptr) AccessChain 49(data) 60 60 417: 43(ivec4) Load 416 418: 148(ivec3) VectorShuffle 417 417 0 1 2 419: 256(bvec3) SLessThan 418 255 420: 256(bvec3) GroupNonUniformBroadcastFirst 38 419 421: 148(ivec3) Select 420 259 255 422: 131(ptr) AccessChain 49(data) 415 60 54 423: 42(int) CompositeExtract 421 0 Store 422 423 424: 131(ptr) AccessChain 49(data) 415 60 64 425: 42(int) CompositeExtract 421 1 Store 424 425 426: 131(ptr) AccessChain 49(data) 415 60 72 427: 42(int) CompositeExtract 421 2 Store 426 427 428: 6(int) Load 8(invocation) 429: 138(ptr) AccessChain 49(data) 60 60 430: 43(ivec4) Load 429 431: 83(bvec4) SLessThan 430 270 432: 83(bvec4) GroupNonUniformBroadcastFirst 38 431 433: 43(ivec4) Select 432 273 270 434: 138(ptr) AccessChain 49(data) 428 60 Store 434 433 Branch 94 94: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupBallotNeg.comp.out000066400000000000000000000002751506534232700244060ustar00rootroot00000000000000spv.subgroupBallotNeg.comp ERROR: 0:32: 'id' : argument must be compile-time constant ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupBasic.comp.out000066400000000000000000000104141506534232700235540ustar00rootroot00000000000000spv.subgroupBasic.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader Capability GroupNonUniform 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 14 19 22 25 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 8 "Buffer" MemberName 8(Buffer) 0 "a" Name 10 "data" Name 14 "gl_SubgroupSize" Name 19 "gl_SubgroupInvocationID" Name 22 "gl_NumSubgroups" Name 25 "gl_SubgroupID" Decorate 7 ArrayStride 4 Decorate 8(Buffer) Block MemberDecorate 8(Buffer) 0 Offset 0 Decorate 10(data) Binding 0 Decorate 10(data) DescriptorSet 0 Decorate 14(gl_SubgroupSize) RelaxedPrecision Decorate 14(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 15 RelaxedPrecision Decorate 19(gl_SubgroupInvocationID) RelaxedPrecision Decorate 19(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 20 RelaxedPrecision Decorate 22(gl_NumSubgroups) BuiltIn NumSubgroups Decorate 25(gl_SubgroupID) BuiltIn SubgroupId Decorate 39 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeRuntimeArray 6(int) 8(Buffer): TypeStruct 7 9: TypePointer StorageBuffer 8(Buffer) 10(data): 9(ptr) Variable StorageBuffer 11: 6(int) Constant 0 12: TypeInt 32 0 13: TypePointer Input 12(int) 14(gl_SubgroupSize): 13(ptr) Variable Input 16: 6(int) Constant 1 17: TypePointer StorageBuffer 6(int) 19(gl_SubgroupInvocationID): 13(ptr) Variable Input 22(gl_NumSubgroups): 13(ptr) Variable Input 25(gl_SubgroupID): 13(ptr) Variable Input 27: TypeBool 28: 12(int) Constant 3 32: 12(int) Constant 3400 33: 12(int) Constant 72 34: 12(int) Constant 264 35: 12(int) Constant 2056 36: TypeVector 12(int) 3 37: 12(int) Constant 8 38: 12(int) Constant 1 39: 36(ivec3) ConstantComposite 37 37 38 4(main): 2 Function None 3 5: Label 15: 12(int) Load 14(gl_SubgroupSize) 18: 17(ptr) AccessChain 10(data) 11 15 Store 18 16 20: 12(int) Load 19(gl_SubgroupInvocationID) 21: 17(ptr) AccessChain 10(data) 11 20 Store 21 16 23: 12(int) Load 22(gl_NumSubgroups) 24: 17(ptr) AccessChain 10(data) 11 23 Store 24 16 26: 12(int) Load 25(gl_SubgroupID) 29: 27(bool) GroupNonUniformElect 28 30: 6(int) Select 29 16 11 31: 17(ptr) AccessChain 10(data) 11 26 Store 31 30 ControlBarrier 28 28 32 MemoryBarrier 28 32 MemoryBarrier 28 33 MemoryBarrier 28 34 MemoryBarrier 28 35 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupClustered.comp.out000066400000000000000000001573451506534232700245040ustar00rootroot00000000000000spv.subgroupClustered.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 838 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformClustered 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_clustered" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 24 "Buffers" MemberName 24(Buffers) 0 "f4" MemberName 24(Buffers) 1 "i4" MemberName 24(Buffers) 2 "u4" MemberName 24(Buffers) 3 "d4" Name 27 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 Decorate 27(data) Binding 0 Decorate 27(data) DescriptorSet 0 Decorate 837 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeFloat 32 18: TypeVector 17(float) 4 19: TypeInt 32 1 20: TypeVector 19(int) 4 21: TypeVector 6(int) 4 22: TypeFloat 64 23: TypeVector 22(float64_t) 4 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 25: TypeArray 24(Buffers) 15 26: TypePointer StorageBuffer 25 27(data): 26(ptr) Variable StorageBuffer 29: 19(int) Constant 0 30: 6(int) Constant 0 31: TypePointer StorageBuffer 17(float) 34: 6(int) Constant 1 35: 6(int) Constant 3 39: 19(int) Constant 1 40: TypeVector 17(float) 2 41: TypePointer StorageBuffer 18(fvec4) 51: 19(int) Constant 2 52: TypeVector 17(float) 3 61: 6(int) Constant 2 65: 19(int) Constant 3 71: TypePointer StorageBuffer 19(int) 77: TypeVector 19(int) 2 78: TypePointer StorageBuffer 20(ivec4) 88: TypeVector 19(int) 3 105: TypePointer StorageBuffer 6(int) 111: TypeVector 6(int) 2 112: TypePointer StorageBuffer 21(ivec4) 122: TypeVector 6(int) 3 139: TypePointer StorageBuffer 22(float64_t) 145: TypeVector 22(float64_t) 2 146: TypePointer StorageBuffer 23(f64vec4) 156: TypeVector 22(float64_t) 3 595: TypeBool 604: 77(ivec2) ConstantComposite 29 29 605: TypeVector 595(bool) 2 608: 77(ivec2) ConstantComposite 39 39 618: 88(ivec3) ConstantComposite 29 29 29 619: TypeVector 595(bool) 3 622: 88(ivec3) ConstantComposite 39 39 39 633: 20(ivec4) ConstantComposite 29 29 29 29 634: TypeVector 595(bool) 4 637: 20(ivec4) ConstantComposite 39 39 39 39 836: 6(int) Constant 8 837: 122(ivec3) ConstantComposite 836 34 34 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 28: 6(int) Load 8(invocation) 32: 31(ptr) AccessChain 27(data) 29 29 30 33: 17(float) Load 32 36: 17(float) GroupNonUniformFAdd 35 ClusteredReduce 33 34 37: 31(ptr) AccessChain 27(data) 28 29 30 Store 37 36 38: 6(int) Load 8(invocation) 42: 41(ptr) AccessChain 27(data) 39 29 43: 18(fvec4) Load 42 44: 40(fvec2) VectorShuffle 43 43 0 1 45: 40(fvec2) GroupNonUniformFAdd 35 ClusteredReduce 44 34 46: 31(ptr) AccessChain 27(data) 38 29 30 47: 17(float) CompositeExtract 45 0 Store 46 47 48: 31(ptr) AccessChain 27(data) 38 29 34 49: 17(float) CompositeExtract 45 1 Store 48 49 50: 6(int) Load 8(invocation) 53: 41(ptr) AccessChain 27(data) 51 29 54: 18(fvec4) Load 53 55: 52(fvec3) VectorShuffle 54 54 0 1 2 56: 52(fvec3) GroupNonUniformFAdd 35 ClusteredReduce 55 34 57: 31(ptr) AccessChain 27(data) 50 29 30 58: 17(float) CompositeExtract 56 0 Store 57 58 59: 31(ptr) AccessChain 27(data) 50 29 34 60: 17(float) CompositeExtract 56 1 Store 59 60 62: 31(ptr) AccessChain 27(data) 50 29 61 63: 17(float) CompositeExtract 56 2 Store 62 63 64: 6(int) Load 8(invocation) 66: 41(ptr) AccessChain 27(data) 65 29 67: 18(fvec4) Load 66 68: 18(fvec4) GroupNonUniformFAdd 35 ClusteredReduce 67 34 69: 41(ptr) AccessChain 27(data) 64 29 Store 69 68 70: 6(int) Load 8(invocation) 72: 71(ptr) AccessChain 27(data) 29 39 30 73: 19(int) Load 72 74: 19(int) GroupNonUniformIAdd 35 ClusteredReduce 73 34 75: 71(ptr) AccessChain 27(data) 70 39 30 Store 75 74 76: 6(int) Load 8(invocation) 79: 78(ptr) AccessChain 27(data) 39 39 80: 20(ivec4) Load 79 81: 77(ivec2) VectorShuffle 80 80 0 1 82: 77(ivec2) GroupNonUniformIAdd 35 ClusteredReduce 81 34 83: 71(ptr) AccessChain 27(data) 76 39 30 84: 19(int) CompositeExtract 82 0 Store 83 84 85: 71(ptr) AccessChain 27(data) 76 39 34 86: 19(int) CompositeExtract 82 1 Store 85 86 87: 6(int) Load 8(invocation) 89: 78(ptr) AccessChain 27(data) 51 39 90: 20(ivec4) Load 89 91: 88(ivec3) VectorShuffle 90 90 0 1 2 92: 88(ivec3) GroupNonUniformIAdd 35 ClusteredReduce 91 34 93: 71(ptr) AccessChain 27(data) 87 39 30 94: 19(int) CompositeExtract 92 0 Store 93 94 95: 71(ptr) AccessChain 27(data) 87 39 34 96: 19(int) CompositeExtract 92 1 Store 95 96 97: 71(ptr) AccessChain 27(data) 87 39 61 98: 19(int) CompositeExtract 92 2 Store 97 98 99: 6(int) Load 8(invocation) 100: 78(ptr) AccessChain 27(data) 65 39 101: 20(ivec4) Load 100 102: 20(ivec4) GroupNonUniformIAdd 35 ClusteredReduce 101 34 103: 78(ptr) AccessChain 27(data) 99 39 Store 103 102 104: 6(int) Load 8(invocation) 106: 105(ptr) AccessChain 27(data) 29 51 30 107: 6(int) Load 106 108: 6(int) GroupNonUniformIAdd 35 ClusteredReduce 107 34 109: 105(ptr) AccessChain 27(data) 104 51 30 Store 109 108 110: 6(int) Load 8(invocation) 113: 112(ptr) AccessChain 27(data) 39 51 114: 21(ivec4) Load 113 115: 111(ivec2) VectorShuffle 114 114 0 1 116: 111(ivec2) GroupNonUniformIAdd 35 ClusteredReduce 115 34 117: 105(ptr) AccessChain 27(data) 110 51 30 118: 6(int) CompositeExtract 116 0 Store 117 118 119: 105(ptr) AccessChain 27(data) 110 51 34 120: 6(int) CompositeExtract 116 1 Store 119 120 121: 6(int) Load 8(invocation) 123: 112(ptr) AccessChain 27(data) 51 51 124: 21(ivec4) Load 123 125: 122(ivec3) VectorShuffle 124 124 0 1 2 126: 122(ivec3) GroupNonUniformIAdd 35 ClusteredReduce 125 34 127: 105(ptr) AccessChain 27(data) 121 51 30 128: 6(int) CompositeExtract 126 0 Store 127 128 129: 105(ptr) AccessChain 27(data) 121 51 34 130: 6(int) CompositeExtract 126 1 Store 129 130 131: 105(ptr) AccessChain 27(data) 121 51 61 132: 6(int) CompositeExtract 126 2 Store 131 132 133: 6(int) Load 8(invocation) 134: 112(ptr) AccessChain 27(data) 65 51 135: 21(ivec4) Load 134 136: 21(ivec4) GroupNonUniformIAdd 35 ClusteredReduce 135 34 137: 112(ptr) AccessChain 27(data) 133 51 Store 137 136 138: 6(int) Load 8(invocation) 140: 139(ptr) AccessChain 27(data) 29 65 30 141:22(float64_t) Load 140 142:22(float64_t) GroupNonUniformFAdd 35 ClusteredReduce 141 34 143: 139(ptr) AccessChain 27(data) 138 65 30 Store 143 142 144: 6(int) Load 8(invocation) 147: 146(ptr) AccessChain 27(data) 39 65 148: 23(f64vec4) Load 147 149:145(f64vec2) VectorShuffle 148 148 0 1 150:145(f64vec2) GroupNonUniformFAdd 35 ClusteredReduce 149 34 151: 139(ptr) AccessChain 27(data) 144 65 30 152:22(float64_t) CompositeExtract 150 0 Store 151 152 153: 139(ptr) AccessChain 27(data) 144 65 34 154:22(float64_t) CompositeExtract 150 1 Store 153 154 155: 6(int) Load 8(invocation) 157: 146(ptr) AccessChain 27(data) 51 65 158: 23(f64vec4) Load 157 159:156(f64vec3) VectorShuffle 158 158 0 1 2 160:156(f64vec3) GroupNonUniformFAdd 35 ClusteredReduce 159 34 161: 139(ptr) AccessChain 27(data) 155 65 30 162:22(float64_t) CompositeExtract 160 0 Store 161 162 163: 139(ptr) AccessChain 27(data) 155 65 34 164:22(float64_t) CompositeExtract 160 1 Store 163 164 165: 139(ptr) AccessChain 27(data) 155 65 61 166:22(float64_t) CompositeExtract 160 2 Store 165 166 167: 6(int) Load 8(invocation) 168: 146(ptr) AccessChain 27(data) 65 65 169: 23(f64vec4) Load 168 170: 23(f64vec4) GroupNonUniformFAdd 35 ClusteredReduce 169 34 171: 146(ptr) AccessChain 27(data) 167 65 Store 171 170 172: 6(int) Load 8(invocation) 173: 31(ptr) AccessChain 27(data) 29 29 30 174: 17(float) Load 173 175: 17(float) GroupNonUniformFMul 35 ClusteredReduce 174 34 176: 31(ptr) AccessChain 27(data) 172 29 30 Store 176 175 177: 6(int) Load 8(invocation) 178: 41(ptr) AccessChain 27(data) 39 29 179: 18(fvec4) Load 178 180: 40(fvec2) VectorShuffle 179 179 0 1 181: 40(fvec2) GroupNonUniformFMul 35 ClusteredReduce 180 34 182: 31(ptr) AccessChain 27(data) 177 29 30 183: 17(float) CompositeExtract 181 0 Store 182 183 184: 31(ptr) AccessChain 27(data) 177 29 34 185: 17(float) CompositeExtract 181 1 Store 184 185 186: 6(int) Load 8(invocation) 187: 41(ptr) AccessChain 27(data) 51 29 188: 18(fvec4) Load 187 189: 52(fvec3) VectorShuffle 188 188 0 1 2 190: 52(fvec3) GroupNonUniformFMul 35 ClusteredReduce 189 34 191: 31(ptr) AccessChain 27(data) 186 29 30 192: 17(float) CompositeExtract 190 0 Store 191 192 193: 31(ptr) AccessChain 27(data) 186 29 34 194: 17(float) CompositeExtract 190 1 Store 193 194 195: 31(ptr) AccessChain 27(data) 186 29 61 196: 17(float) CompositeExtract 190 2 Store 195 196 197: 6(int) Load 8(invocation) 198: 41(ptr) AccessChain 27(data) 65 29 199: 18(fvec4) Load 198 200: 18(fvec4) GroupNonUniformFMul 35 ClusteredReduce 199 34 201: 41(ptr) AccessChain 27(data) 197 29 Store 201 200 202: 6(int) Load 8(invocation) 203: 71(ptr) AccessChain 27(data) 29 39 30 204: 19(int) Load 203 205: 19(int) GroupNonUniformIMul 35 ClusteredReduce 204 34 206: 71(ptr) AccessChain 27(data) 202 39 30 Store 206 205 207: 6(int) Load 8(invocation) 208: 78(ptr) AccessChain 27(data) 39 39 209: 20(ivec4) Load 208 210: 77(ivec2) VectorShuffle 209 209 0 1 211: 77(ivec2) GroupNonUniformIMul 35 ClusteredReduce 210 34 212: 71(ptr) AccessChain 27(data) 207 39 30 213: 19(int) CompositeExtract 211 0 Store 212 213 214: 71(ptr) AccessChain 27(data) 207 39 34 215: 19(int) CompositeExtract 211 1 Store 214 215 216: 6(int) Load 8(invocation) 217: 78(ptr) AccessChain 27(data) 51 39 218: 20(ivec4) Load 217 219: 88(ivec3) VectorShuffle 218 218 0 1 2 220: 88(ivec3) GroupNonUniformIMul 35 ClusteredReduce 219 34 221: 71(ptr) AccessChain 27(data) 216 39 30 222: 19(int) CompositeExtract 220 0 Store 221 222 223: 71(ptr) AccessChain 27(data) 216 39 34 224: 19(int) CompositeExtract 220 1 Store 223 224 225: 71(ptr) AccessChain 27(data) 216 39 61 226: 19(int) CompositeExtract 220 2 Store 225 226 227: 6(int) Load 8(invocation) 228: 78(ptr) AccessChain 27(data) 65 39 229: 20(ivec4) Load 228 230: 20(ivec4) GroupNonUniformIMul 35 ClusteredReduce 229 34 231: 78(ptr) AccessChain 27(data) 227 39 Store 231 230 232: 6(int) Load 8(invocation) 233: 105(ptr) AccessChain 27(data) 29 51 30 234: 6(int) Load 233 235: 6(int) GroupNonUniformIMul 35 ClusteredReduce 234 34 236: 105(ptr) AccessChain 27(data) 232 51 30 Store 236 235 237: 6(int) Load 8(invocation) 238: 112(ptr) AccessChain 27(data) 39 51 239: 21(ivec4) Load 238 240: 111(ivec2) VectorShuffle 239 239 0 1 241: 111(ivec2) GroupNonUniformIMul 35 ClusteredReduce 240 34 242: 105(ptr) AccessChain 27(data) 237 51 30 243: 6(int) CompositeExtract 241 0 Store 242 243 244: 105(ptr) AccessChain 27(data) 237 51 34 245: 6(int) CompositeExtract 241 1 Store 244 245 246: 6(int) Load 8(invocation) 247: 112(ptr) AccessChain 27(data) 51 51 248: 21(ivec4) Load 247 249: 122(ivec3) VectorShuffle 248 248 0 1 2 250: 122(ivec3) GroupNonUniformIMul 35 ClusteredReduce 249 34 251: 105(ptr) AccessChain 27(data) 246 51 30 252: 6(int) CompositeExtract 250 0 Store 251 252 253: 105(ptr) AccessChain 27(data) 246 51 34 254: 6(int) CompositeExtract 250 1 Store 253 254 255: 105(ptr) AccessChain 27(data) 246 51 61 256: 6(int) CompositeExtract 250 2 Store 255 256 257: 6(int) Load 8(invocation) 258: 112(ptr) AccessChain 27(data) 65 51 259: 21(ivec4) Load 258 260: 21(ivec4) GroupNonUniformIMul 35 ClusteredReduce 259 34 261: 112(ptr) AccessChain 27(data) 257 51 Store 261 260 262: 6(int) Load 8(invocation) 263: 139(ptr) AccessChain 27(data) 29 65 30 264:22(float64_t) Load 263 265:22(float64_t) GroupNonUniformFMul 35 ClusteredReduce 264 34 266: 139(ptr) AccessChain 27(data) 262 65 30 Store 266 265 267: 6(int) Load 8(invocation) 268: 146(ptr) AccessChain 27(data) 39 65 269: 23(f64vec4) Load 268 270:145(f64vec2) VectorShuffle 269 269 0 1 271:145(f64vec2) GroupNonUniformFMul 35 ClusteredReduce 270 34 272: 139(ptr) AccessChain 27(data) 267 65 30 273:22(float64_t) CompositeExtract 271 0 Store 272 273 274: 139(ptr) AccessChain 27(data) 267 65 34 275:22(float64_t) CompositeExtract 271 1 Store 274 275 276: 6(int) Load 8(invocation) 277: 146(ptr) AccessChain 27(data) 51 65 278: 23(f64vec4) Load 277 279:156(f64vec3) VectorShuffle 278 278 0 1 2 280:156(f64vec3) GroupNonUniformFMul 35 ClusteredReduce 279 34 281: 139(ptr) AccessChain 27(data) 276 65 30 282:22(float64_t) CompositeExtract 280 0 Store 281 282 283: 139(ptr) AccessChain 27(data) 276 65 34 284:22(float64_t) CompositeExtract 280 1 Store 283 284 285: 139(ptr) AccessChain 27(data) 276 65 61 286:22(float64_t) CompositeExtract 280 2 Store 285 286 287: 6(int) Load 8(invocation) 288: 146(ptr) AccessChain 27(data) 65 65 289: 23(f64vec4) Load 288 290: 23(f64vec4) GroupNonUniformFMul 35 ClusteredReduce 289 34 291: 146(ptr) AccessChain 27(data) 287 65 Store 291 290 292: 6(int) Load 8(invocation) 293: 31(ptr) AccessChain 27(data) 29 29 30 294: 17(float) Load 293 295: 17(float) GroupNonUniformFMin 35 ClusteredReduce 294 34 296: 31(ptr) AccessChain 27(data) 292 29 30 Store 296 295 297: 6(int) Load 8(invocation) 298: 41(ptr) AccessChain 27(data) 39 29 299: 18(fvec4) Load 298 300: 40(fvec2) VectorShuffle 299 299 0 1 301: 40(fvec2) GroupNonUniformFMin 35 ClusteredReduce 300 34 302: 31(ptr) AccessChain 27(data) 297 29 30 303: 17(float) CompositeExtract 301 0 Store 302 303 304: 31(ptr) AccessChain 27(data) 297 29 34 305: 17(float) CompositeExtract 301 1 Store 304 305 306: 6(int) Load 8(invocation) 307: 41(ptr) AccessChain 27(data) 51 29 308: 18(fvec4) Load 307 309: 52(fvec3) VectorShuffle 308 308 0 1 2 310: 52(fvec3) GroupNonUniformFMin 35 ClusteredReduce 309 34 311: 31(ptr) AccessChain 27(data) 306 29 30 312: 17(float) CompositeExtract 310 0 Store 311 312 313: 31(ptr) AccessChain 27(data) 306 29 34 314: 17(float) CompositeExtract 310 1 Store 313 314 315: 31(ptr) AccessChain 27(data) 306 29 61 316: 17(float) CompositeExtract 310 2 Store 315 316 317: 6(int) Load 8(invocation) 318: 41(ptr) AccessChain 27(data) 65 29 319: 18(fvec4) Load 318 320: 18(fvec4) GroupNonUniformFMin 35 ClusteredReduce 319 34 321: 41(ptr) AccessChain 27(data) 317 29 Store 321 320 322: 6(int) Load 8(invocation) 323: 71(ptr) AccessChain 27(data) 29 39 30 324: 19(int) Load 323 325: 19(int) GroupNonUniformSMin 35 ClusteredReduce 324 34 326: 71(ptr) AccessChain 27(data) 322 39 30 Store 326 325 327: 6(int) Load 8(invocation) 328: 78(ptr) AccessChain 27(data) 39 39 329: 20(ivec4) Load 328 330: 77(ivec2) VectorShuffle 329 329 0 1 331: 77(ivec2) GroupNonUniformSMin 35 ClusteredReduce 330 34 332: 71(ptr) AccessChain 27(data) 327 39 30 333: 19(int) CompositeExtract 331 0 Store 332 333 334: 71(ptr) AccessChain 27(data) 327 39 34 335: 19(int) CompositeExtract 331 1 Store 334 335 336: 6(int) Load 8(invocation) 337: 78(ptr) AccessChain 27(data) 51 39 338: 20(ivec4) Load 337 339: 88(ivec3) VectorShuffle 338 338 0 1 2 340: 88(ivec3) GroupNonUniformSMin 35 ClusteredReduce 339 34 341: 71(ptr) AccessChain 27(data) 336 39 30 342: 19(int) CompositeExtract 340 0 Store 341 342 343: 71(ptr) AccessChain 27(data) 336 39 34 344: 19(int) CompositeExtract 340 1 Store 343 344 345: 71(ptr) AccessChain 27(data) 336 39 61 346: 19(int) CompositeExtract 340 2 Store 345 346 347: 6(int) Load 8(invocation) 348: 78(ptr) AccessChain 27(data) 65 39 349: 20(ivec4) Load 348 350: 20(ivec4) GroupNonUniformSMin 35 ClusteredReduce 349 34 351: 78(ptr) AccessChain 27(data) 347 39 Store 351 350 352: 6(int) Load 8(invocation) 353: 105(ptr) AccessChain 27(data) 29 51 30 354: 6(int) Load 353 355: 6(int) GroupNonUniformUMin 35 ClusteredReduce 354 34 356: 105(ptr) AccessChain 27(data) 352 51 30 Store 356 355 357: 6(int) Load 8(invocation) 358: 112(ptr) AccessChain 27(data) 39 51 359: 21(ivec4) Load 358 360: 111(ivec2) VectorShuffle 359 359 0 1 361: 111(ivec2) GroupNonUniformUMin 35 ClusteredReduce 360 34 362: 105(ptr) AccessChain 27(data) 357 51 30 363: 6(int) CompositeExtract 361 0 Store 362 363 364: 105(ptr) AccessChain 27(data) 357 51 34 365: 6(int) CompositeExtract 361 1 Store 364 365 366: 6(int) Load 8(invocation) 367: 112(ptr) AccessChain 27(data) 51 51 368: 21(ivec4) Load 367 369: 122(ivec3) VectorShuffle 368 368 0 1 2 370: 122(ivec3) GroupNonUniformUMin 35 ClusteredReduce 369 34 371: 105(ptr) AccessChain 27(data) 366 51 30 372: 6(int) CompositeExtract 370 0 Store 371 372 373: 105(ptr) AccessChain 27(data) 366 51 34 374: 6(int) CompositeExtract 370 1 Store 373 374 375: 105(ptr) AccessChain 27(data) 366 51 61 376: 6(int) CompositeExtract 370 2 Store 375 376 377: 6(int) Load 8(invocation) 378: 112(ptr) AccessChain 27(data) 65 51 379: 21(ivec4) Load 378 380: 21(ivec4) GroupNonUniformUMin 35 ClusteredReduce 379 34 381: 112(ptr) AccessChain 27(data) 377 51 Store 381 380 382: 6(int) Load 8(invocation) 383: 139(ptr) AccessChain 27(data) 29 65 30 384:22(float64_t) Load 383 385:22(float64_t) GroupNonUniformFMin 35 ClusteredReduce 384 34 386: 139(ptr) AccessChain 27(data) 382 65 30 Store 386 385 387: 6(int) Load 8(invocation) 388: 146(ptr) AccessChain 27(data) 39 65 389: 23(f64vec4) Load 388 390:145(f64vec2) VectorShuffle 389 389 0 1 391:145(f64vec2) GroupNonUniformFMin 35 ClusteredReduce 390 34 392: 139(ptr) AccessChain 27(data) 387 65 30 393:22(float64_t) CompositeExtract 391 0 Store 392 393 394: 139(ptr) AccessChain 27(data) 387 65 34 395:22(float64_t) CompositeExtract 391 1 Store 394 395 396: 6(int) Load 8(invocation) 397: 146(ptr) AccessChain 27(data) 51 65 398: 23(f64vec4) Load 397 399:156(f64vec3) VectorShuffle 398 398 0 1 2 400:156(f64vec3) GroupNonUniformFMin 35 ClusteredReduce 399 34 401: 139(ptr) AccessChain 27(data) 396 65 30 402:22(float64_t) CompositeExtract 400 0 Store 401 402 403: 139(ptr) AccessChain 27(data) 396 65 34 404:22(float64_t) CompositeExtract 400 1 Store 403 404 405: 139(ptr) AccessChain 27(data) 396 65 61 406:22(float64_t) CompositeExtract 400 2 Store 405 406 407: 6(int) Load 8(invocation) 408: 146(ptr) AccessChain 27(data) 65 65 409: 23(f64vec4) Load 408 410: 23(f64vec4) GroupNonUniformFMin 35 ClusteredReduce 409 34 411: 146(ptr) AccessChain 27(data) 407 65 Store 411 410 412: 6(int) Load 8(invocation) 413: 31(ptr) AccessChain 27(data) 29 29 30 414: 17(float) Load 413 415: 17(float) GroupNonUniformFMax 35 ClusteredReduce 414 34 416: 31(ptr) AccessChain 27(data) 412 29 30 Store 416 415 417: 6(int) Load 8(invocation) 418: 41(ptr) AccessChain 27(data) 39 29 419: 18(fvec4) Load 418 420: 40(fvec2) VectorShuffle 419 419 0 1 421: 40(fvec2) GroupNonUniformFMax 35 ClusteredReduce 420 34 422: 31(ptr) AccessChain 27(data) 417 29 30 423: 17(float) CompositeExtract 421 0 Store 422 423 424: 31(ptr) AccessChain 27(data) 417 29 34 425: 17(float) CompositeExtract 421 1 Store 424 425 426: 6(int) Load 8(invocation) 427: 41(ptr) AccessChain 27(data) 51 29 428: 18(fvec4) Load 427 429: 52(fvec3) VectorShuffle 428 428 0 1 2 430: 52(fvec3) GroupNonUniformFMax 35 ClusteredReduce 429 34 431: 31(ptr) AccessChain 27(data) 426 29 30 432: 17(float) CompositeExtract 430 0 Store 431 432 433: 31(ptr) AccessChain 27(data) 426 29 34 434: 17(float) CompositeExtract 430 1 Store 433 434 435: 31(ptr) AccessChain 27(data) 426 29 61 436: 17(float) CompositeExtract 430 2 Store 435 436 437: 6(int) Load 8(invocation) 438: 41(ptr) AccessChain 27(data) 65 29 439: 18(fvec4) Load 438 440: 18(fvec4) GroupNonUniformFMax 35 ClusteredReduce 439 34 441: 41(ptr) AccessChain 27(data) 437 29 Store 441 440 442: 6(int) Load 8(invocation) 443: 71(ptr) AccessChain 27(data) 29 39 30 444: 19(int) Load 443 445: 19(int) GroupNonUniformSMax 35 ClusteredReduce 444 34 446: 71(ptr) AccessChain 27(data) 442 39 30 Store 446 445 447: 6(int) Load 8(invocation) 448: 78(ptr) AccessChain 27(data) 39 39 449: 20(ivec4) Load 448 450: 77(ivec2) VectorShuffle 449 449 0 1 451: 77(ivec2) GroupNonUniformSMax 35 ClusteredReduce 450 34 452: 71(ptr) AccessChain 27(data) 447 39 30 453: 19(int) CompositeExtract 451 0 Store 452 453 454: 71(ptr) AccessChain 27(data) 447 39 34 455: 19(int) CompositeExtract 451 1 Store 454 455 456: 6(int) Load 8(invocation) 457: 78(ptr) AccessChain 27(data) 51 39 458: 20(ivec4) Load 457 459: 88(ivec3) VectorShuffle 458 458 0 1 2 460: 88(ivec3) GroupNonUniformSMax 35 ClusteredReduce 459 34 461: 71(ptr) AccessChain 27(data) 456 39 30 462: 19(int) CompositeExtract 460 0 Store 461 462 463: 71(ptr) AccessChain 27(data) 456 39 34 464: 19(int) CompositeExtract 460 1 Store 463 464 465: 71(ptr) AccessChain 27(data) 456 39 61 466: 19(int) CompositeExtract 460 2 Store 465 466 467: 6(int) Load 8(invocation) 468: 78(ptr) AccessChain 27(data) 65 39 469: 20(ivec4) Load 468 470: 20(ivec4) GroupNonUniformSMax 35 ClusteredReduce 469 34 471: 78(ptr) AccessChain 27(data) 467 39 Store 471 470 472: 6(int) Load 8(invocation) 473: 105(ptr) AccessChain 27(data) 29 51 30 474: 6(int) Load 473 475: 6(int) GroupNonUniformUMax 35 ClusteredReduce 474 34 476: 105(ptr) AccessChain 27(data) 472 51 30 Store 476 475 477: 6(int) Load 8(invocation) 478: 112(ptr) AccessChain 27(data) 39 51 479: 21(ivec4) Load 478 480: 111(ivec2) VectorShuffle 479 479 0 1 481: 111(ivec2) GroupNonUniformUMax 35 ClusteredReduce 480 34 482: 105(ptr) AccessChain 27(data) 477 51 30 483: 6(int) CompositeExtract 481 0 Store 482 483 484: 105(ptr) AccessChain 27(data) 477 51 34 485: 6(int) CompositeExtract 481 1 Store 484 485 486: 6(int) Load 8(invocation) 487: 112(ptr) AccessChain 27(data) 51 51 488: 21(ivec4) Load 487 489: 122(ivec3) VectorShuffle 488 488 0 1 2 490: 122(ivec3) GroupNonUniformUMax 35 ClusteredReduce 489 34 491: 105(ptr) AccessChain 27(data) 486 51 30 492: 6(int) CompositeExtract 490 0 Store 491 492 493: 105(ptr) AccessChain 27(data) 486 51 34 494: 6(int) CompositeExtract 490 1 Store 493 494 495: 105(ptr) AccessChain 27(data) 486 51 61 496: 6(int) CompositeExtract 490 2 Store 495 496 497: 6(int) Load 8(invocation) 498: 112(ptr) AccessChain 27(data) 65 51 499: 21(ivec4) Load 498 500: 21(ivec4) GroupNonUniformUMax 35 ClusteredReduce 499 34 501: 112(ptr) AccessChain 27(data) 497 51 Store 501 500 502: 6(int) Load 8(invocation) 503: 139(ptr) AccessChain 27(data) 29 65 30 504:22(float64_t) Load 503 505:22(float64_t) GroupNonUniformFMax 35 ClusteredReduce 504 34 506: 139(ptr) AccessChain 27(data) 502 65 30 Store 506 505 507: 6(int) Load 8(invocation) 508: 146(ptr) AccessChain 27(data) 39 65 509: 23(f64vec4) Load 508 510:145(f64vec2) VectorShuffle 509 509 0 1 511:145(f64vec2) GroupNonUniformFMax 35 ClusteredReduce 510 34 512: 139(ptr) AccessChain 27(data) 507 65 30 513:22(float64_t) CompositeExtract 511 0 Store 512 513 514: 139(ptr) AccessChain 27(data) 507 65 34 515:22(float64_t) CompositeExtract 511 1 Store 514 515 516: 6(int) Load 8(invocation) 517: 146(ptr) AccessChain 27(data) 51 65 518: 23(f64vec4) Load 517 519:156(f64vec3) VectorShuffle 518 518 0 1 2 520:156(f64vec3) GroupNonUniformFMax 35 ClusteredReduce 519 34 521: 139(ptr) AccessChain 27(data) 516 65 30 522:22(float64_t) CompositeExtract 520 0 Store 521 522 523: 139(ptr) AccessChain 27(data) 516 65 34 524:22(float64_t) CompositeExtract 520 1 Store 523 524 525: 139(ptr) AccessChain 27(data) 516 65 61 526:22(float64_t) CompositeExtract 520 2 Store 525 526 527: 6(int) Load 8(invocation) 528: 146(ptr) AccessChain 27(data) 65 65 529: 23(f64vec4) Load 528 530: 23(f64vec4) GroupNonUniformFMax 35 ClusteredReduce 529 34 531: 146(ptr) AccessChain 27(data) 527 65 Store 531 530 532: 6(int) Load 8(invocation) 533: 71(ptr) AccessChain 27(data) 29 39 30 534: 19(int) Load 533 535: 19(int) GroupNonUniformBitwiseAnd 35 ClusteredReduce 534 34 536: 71(ptr) AccessChain 27(data) 532 39 30 Store 536 535 537: 6(int) Load 8(invocation) 538: 78(ptr) AccessChain 27(data) 39 39 539: 20(ivec4) Load 538 540: 77(ivec2) VectorShuffle 539 539 0 1 541: 77(ivec2) GroupNonUniformBitwiseAnd 35 ClusteredReduce 540 34 542: 71(ptr) AccessChain 27(data) 537 39 30 543: 19(int) CompositeExtract 541 0 Store 542 543 544: 71(ptr) AccessChain 27(data) 537 39 34 545: 19(int) CompositeExtract 541 1 Store 544 545 546: 6(int) Load 8(invocation) 547: 78(ptr) AccessChain 27(data) 51 39 548: 20(ivec4) Load 547 549: 88(ivec3) VectorShuffle 548 548 0 1 2 550: 88(ivec3) GroupNonUniformBitwiseAnd 35 ClusteredReduce 549 34 551: 71(ptr) AccessChain 27(data) 546 39 30 552: 19(int) CompositeExtract 550 0 Store 551 552 553: 71(ptr) AccessChain 27(data) 546 39 34 554: 19(int) CompositeExtract 550 1 Store 553 554 555: 71(ptr) AccessChain 27(data) 546 39 61 556: 19(int) CompositeExtract 550 2 Store 555 556 557: 6(int) Load 8(invocation) 558: 78(ptr) AccessChain 27(data) 65 39 559: 20(ivec4) Load 558 560: 20(ivec4) GroupNonUniformBitwiseAnd 35 ClusteredReduce 559 34 561: 78(ptr) AccessChain 27(data) 557 39 Store 561 560 562: 6(int) Load 8(invocation) 563: 105(ptr) AccessChain 27(data) 29 51 30 564: 6(int) Load 563 565: 6(int) GroupNonUniformBitwiseAnd 35 ClusteredReduce 564 34 566: 105(ptr) AccessChain 27(data) 562 51 30 Store 566 565 567: 6(int) Load 8(invocation) 568: 112(ptr) AccessChain 27(data) 39 51 569: 21(ivec4) Load 568 570: 111(ivec2) VectorShuffle 569 569 0 1 571: 111(ivec2) GroupNonUniformBitwiseAnd 35 ClusteredReduce 570 34 572: 105(ptr) AccessChain 27(data) 567 51 30 573: 6(int) CompositeExtract 571 0 Store 572 573 574: 105(ptr) AccessChain 27(data) 567 51 34 575: 6(int) CompositeExtract 571 1 Store 574 575 576: 6(int) Load 8(invocation) 577: 112(ptr) AccessChain 27(data) 51 51 578: 21(ivec4) Load 577 579: 122(ivec3) VectorShuffle 578 578 0 1 2 580: 122(ivec3) GroupNonUniformBitwiseAnd 35 ClusteredReduce 579 34 581: 105(ptr) AccessChain 27(data) 576 51 30 582: 6(int) CompositeExtract 580 0 Store 581 582 583: 105(ptr) AccessChain 27(data) 576 51 34 584: 6(int) CompositeExtract 580 1 Store 583 584 585: 105(ptr) AccessChain 27(data) 576 51 61 586: 6(int) CompositeExtract 580 2 Store 585 586 587: 6(int) Load 8(invocation) 588: 112(ptr) AccessChain 27(data) 65 51 589: 21(ivec4) Load 588 590: 21(ivec4) GroupNonUniformBitwiseAnd 35 ClusteredReduce 589 34 591: 112(ptr) AccessChain 27(data) 587 51 Store 591 590 592: 6(int) Load 8(invocation) 593: 71(ptr) AccessChain 27(data) 29 39 30 594: 19(int) Load 593 596: 595(bool) SLessThan 594 29 597: 595(bool) GroupNonUniformLogicalAnd 35 ClusteredReduce 596 34 598: 19(int) Select 597 39 29 599: 71(ptr) AccessChain 27(data) 592 39 30 Store 599 598 600: 6(int) Load 8(invocation) 601: 78(ptr) AccessChain 27(data) 39 39 602: 20(ivec4) Load 601 603: 77(ivec2) VectorShuffle 602 602 0 1 606: 605(bvec2) SLessThan 603 604 607: 605(bvec2) GroupNonUniformLogicalAnd 35 ClusteredReduce 606 34 609: 77(ivec2) Select 607 608 604 610: 71(ptr) AccessChain 27(data) 600 39 30 611: 19(int) CompositeExtract 609 0 Store 610 611 612: 71(ptr) AccessChain 27(data) 600 39 34 613: 19(int) CompositeExtract 609 1 Store 612 613 614: 6(int) Load 8(invocation) 615: 78(ptr) AccessChain 27(data) 39 39 616: 20(ivec4) Load 615 617: 88(ivec3) VectorShuffle 616 616 0 1 2 620: 619(bvec3) SLessThan 617 618 621: 619(bvec3) GroupNonUniformLogicalAnd 35 ClusteredReduce 620 34 623: 88(ivec3) Select 621 622 618 624: 71(ptr) AccessChain 27(data) 614 39 30 625: 19(int) CompositeExtract 623 0 Store 624 625 626: 71(ptr) AccessChain 27(data) 614 39 34 627: 19(int) CompositeExtract 623 1 Store 626 627 628: 71(ptr) AccessChain 27(data) 614 39 61 629: 19(int) CompositeExtract 623 2 Store 628 629 630: 6(int) Load 8(invocation) 631: 78(ptr) AccessChain 27(data) 39 39 632: 20(ivec4) Load 631 635: 634(bvec4) SLessThan 632 633 636: 634(bvec4) GroupNonUniformLogicalAnd 35 ClusteredReduce 635 34 638: 20(ivec4) Select 636 637 633 639: 78(ptr) AccessChain 27(data) 630 39 Store 639 638 640: 6(int) Load 8(invocation) 641: 71(ptr) AccessChain 27(data) 29 39 30 642: 19(int) Load 641 643: 19(int) GroupNonUniformBitwiseOr 35 ClusteredReduce 642 34 644: 71(ptr) AccessChain 27(data) 640 39 30 Store 644 643 645: 6(int) Load 8(invocation) 646: 78(ptr) AccessChain 27(data) 39 39 647: 20(ivec4) Load 646 648: 77(ivec2) VectorShuffle 647 647 0 1 649: 77(ivec2) GroupNonUniformBitwiseOr 35 ClusteredReduce 648 34 650: 71(ptr) AccessChain 27(data) 645 39 30 651: 19(int) CompositeExtract 649 0 Store 650 651 652: 71(ptr) AccessChain 27(data) 645 39 34 653: 19(int) CompositeExtract 649 1 Store 652 653 654: 6(int) Load 8(invocation) 655: 78(ptr) AccessChain 27(data) 51 39 656: 20(ivec4) Load 655 657: 88(ivec3) VectorShuffle 656 656 0 1 2 658: 88(ivec3) GroupNonUniformBitwiseOr 35 ClusteredReduce 657 34 659: 71(ptr) AccessChain 27(data) 654 39 30 660: 19(int) CompositeExtract 658 0 Store 659 660 661: 71(ptr) AccessChain 27(data) 654 39 34 662: 19(int) CompositeExtract 658 1 Store 661 662 663: 71(ptr) AccessChain 27(data) 654 39 61 664: 19(int) CompositeExtract 658 2 Store 663 664 665: 6(int) Load 8(invocation) 666: 78(ptr) AccessChain 27(data) 65 39 667: 20(ivec4) Load 666 668: 20(ivec4) GroupNonUniformBitwiseOr 35 ClusteredReduce 667 34 669: 78(ptr) AccessChain 27(data) 665 39 Store 669 668 670: 6(int) Load 8(invocation) 671: 105(ptr) AccessChain 27(data) 29 51 30 672: 6(int) Load 671 673: 6(int) GroupNonUniformBitwiseOr 35 ClusteredReduce 672 34 674: 105(ptr) AccessChain 27(data) 670 51 30 Store 674 673 675: 6(int) Load 8(invocation) 676: 112(ptr) AccessChain 27(data) 39 51 677: 21(ivec4) Load 676 678: 111(ivec2) VectorShuffle 677 677 0 1 679: 111(ivec2) GroupNonUniformBitwiseOr 35 ClusteredReduce 678 34 680: 105(ptr) AccessChain 27(data) 675 51 30 681: 6(int) CompositeExtract 679 0 Store 680 681 682: 105(ptr) AccessChain 27(data) 675 51 34 683: 6(int) CompositeExtract 679 1 Store 682 683 684: 6(int) Load 8(invocation) 685: 112(ptr) AccessChain 27(data) 51 51 686: 21(ivec4) Load 685 687: 122(ivec3) VectorShuffle 686 686 0 1 2 688: 122(ivec3) GroupNonUniformBitwiseOr 35 ClusteredReduce 687 34 689: 105(ptr) AccessChain 27(data) 684 51 30 690: 6(int) CompositeExtract 688 0 Store 689 690 691: 105(ptr) AccessChain 27(data) 684 51 34 692: 6(int) CompositeExtract 688 1 Store 691 692 693: 105(ptr) AccessChain 27(data) 684 51 61 694: 6(int) CompositeExtract 688 2 Store 693 694 695: 6(int) Load 8(invocation) 696: 112(ptr) AccessChain 27(data) 65 51 697: 21(ivec4) Load 696 698: 21(ivec4) GroupNonUniformBitwiseOr 35 ClusteredReduce 697 34 699: 112(ptr) AccessChain 27(data) 695 51 Store 699 698 700: 6(int) Load 8(invocation) 701: 71(ptr) AccessChain 27(data) 29 39 30 702: 19(int) Load 701 703: 595(bool) SLessThan 702 29 704: 595(bool) GroupNonUniformLogicalOr 35 ClusteredReduce 703 34 705: 19(int) Select 704 39 29 706: 71(ptr) AccessChain 27(data) 700 39 30 Store 706 705 707: 6(int) Load 8(invocation) 708: 78(ptr) AccessChain 27(data) 39 39 709: 20(ivec4) Load 708 710: 77(ivec2) VectorShuffle 709 709 0 1 711: 605(bvec2) SLessThan 710 604 712: 605(bvec2) GroupNonUniformLogicalOr 35 ClusteredReduce 711 34 713: 77(ivec2) Select 712 608 604 714: 71(ptr) AccessChain 27(data) 707 39 30 715: 19(int) CompositeExtract 713 0 Store 714 715 716: 71(ptr) AccessChain 27(data) 707 39 34 717: 19(int) CompositeExtract 713 1 Store 716 717 718: 6(int) Load 8(invocation) 719: 78(ptr) AccessChain 27(data) 39 39 720: 20(ivec4) Load 719 721: 88(ivec3) VectorShuffle 720 720 0 1 2 722: 619(bvec3) SLessThan 721 618 723: 619(bvec3) GroupNonUniformLogicalOr 35 ClusteredReduce 722 34 724: 88(ivec3) Select 723 622 618 725: 71(ptr) AccessChain 27(data) 718 39 30 726: 19(int) CompositeExtract 724 0 Store 725 726 727: 71(ptr) AccessChain 27(data) 718 39 34 728: 19(int) CompositeExtract 724 1 Store 727 728 729: 71(ptr) AccessChain 27(data) 718 39 61 730: 19(int) CompositeExtract 724 2 Store 729 730 731: 6(int) Load 8(invocation) 732: 78(ptr) AccessChain 27(data) 39 39 733: 20(ivec4) Load 732 734: 634(bvec4) SLessThan 733 633 735: 634(bvec4) GroupNonUniformLogicalOr 35 ClusteredReduce 734 34 736: 20(ivec4) Select 735 637 633 737: 78(ptr) AccessChain 27(data) 731 39 Store 737 736 738: 6(int) Load 8(invocation) 739: 71(ptr) AccessChain 27(data) 29 39 30 740: 19(int) Load 739 741: 19(int) GroupNonUniformBitwiseXor 35 ClusteredReduce 740 34 742: 71(ptr) AccessChain 27(data) 738 39 30 Store 742 741 743: 6(int) Load 8(invocation) 744: 78(ptr) AccessChain 27(data) 39 39 745: 20(ivec4) Load 744 746: 77(ivec2) VectorShuffle 745 745 0 1 747: 77(ivec2) GroupNonUniformBitwiseXor 35 ClusteredReduce 746 34 748: 71(ptr) AccessChain 27(data) 743 39 30 749: 19(int) CompositeExtract 747 0 Store 748 749 750: 71(ptr) AccessChain 27(data) 743 39 34 751: 19(int) CompositeExtract 747 1 Store 750 751 752: 6(int) Load 8(invocation) 753: 78(ptr) AccessChain 27(data) 51 39 754: 20(ivec4) Load 753 755: 88(ivec3) VectorShuffle 754 754 0 1 2 756: 88(ivec3) GroupNonUniformBitwiseXor 35 ClusteredReduce 755 34 757: 71(ptr) AccessChain 27(data) 752 39 30 758: 19(int) CompositeExtract 756 0 Store 757 758 759: 71(ptr) AccessChain 27(data) 752 39 34 760: 19(int) CompositeExtract 756 1 Store 759 760 761: 71(ptr) AccessChain 27(data) 752 39 61 762: 19(int) CompositeExtract 756 2 Store 761 762 763: 6(int) Load 8(invocation) 764: 78(ptr) AccessChain 27(data) 65 39 765: 20(ivec4) Load 764 766: 20(ivec4) GroupNonUniformBitwiseXor 35 ClusteredReduce 765 34 767: 78(ptr) AccessChain 27(data) 763 39 Store 767 766 768: 6(int) Load 8(invocation) 769: 105(ptr) AccessChain 27(data) 29 51 30 770: 6(int) Load 769 771: 6(int) GroupNonUniformBitwiseXor 35 ClusteredReduce 770 34 772: 105(ptr) AccessChain 27(data) 768 51 30 Store 772 771 773: 6(int) Load 8(invocation) 774: 112(ptr) AccessChain 27(data) 39 51 775: 21(ivec4) Load 774 776: 111(ivec2) VectorShuffle 775 775 0 1 777: 111(ivec2) GroupNonUniformBitwiseXor 35 ClusteredReduce 776 34 778: 105(ptr) AccessChain 27(data) 773 51 30 779: 6(int) CompositeExtract 777 0 Store 778 779 780: 105(ptr) AccessChain 27(data) 773 51 34 781: 6(int) CompositeExtract 777 1 Store 780 781 782: 6(int) Load 8(invocation) 783: 112(ptr) AccessChain 27(data) 51 51 784: 21(ivec4) Load 783 785: 122(ivec3) VectorShuffle 784 784 0 1 2 786: 122(ivec3) GroupNonUniformBitwiseXor 35 ClusteredReduce 785 34 787: 105(ptr) AccessChain 27(data) 782 51 30 788: 6(int) CompositeExtract 786 0 Store 787 788 789: 105(ptr) AccessChain 27(data) 782 51 34 790: 6(int) CompositeExtract 786 1 Store 789 790 791: 105(ptr) AccessChain 27(data) 782 51 61 792: 6(int) CompositeExtract 786 2 Store 791 792 793: 6(int) Load 8(invocation) 794: 112(ptr) AccessChain 27(data) 65 51 795: 21(ivec4) Load 794 796: 21(ivec4) GroupNonUniformBitwiseXor 35 ClusteredReduce 795 34 797: 112(ptr) AccessChain 27(data) 793 51 Store 797 796 798: 6(int) Load 8(invocation) 799: 71(ptr) AccessChain 27(data) 29 39 30 800: 19(int) Load 799 801: 595(bool) SLessThan 800 29 802: 595(bool) GroupNonUniformLogicalXor 35 ClusteredReduce 801 34 803: 19(int) Select 802 39 29 804: 71(ptr) AccessChain 27(data) 798 39 30 Store 804 803 805: 6(int) Load 8(invocation) 806: 78(ptr) AccessChain 27(data) 39 39 807: 20(ivec4) Load 806 808: 77(ivec2) VectorShuffle 807 807 0 1 809: 605(bvec2) SLessThan 808 604 810: 605(bvec2) GroupNonUniformLogicalXor 35 ClusteredReduce 809 34 811: 77(ivec2) Select 810 608 604 812: 71(ptr) AccessChain 27(data) 805 39 30 813: 19(int) CompositeExtract 811 0 Store 812 813 814: 71(ptr) AccessChain 27(data) 805 39 34 815: 19(int) CompositeExtract 811 1 Store 814 815 816: 6(int) Load 8(invocation) 817: 78(ptr) AccessChain 27(data) 39 39 818: 20(ivec4) Load 817 819: 88(ivec3) VectorShuffle 818 818 0 1 2 820: 619(bvec3) SLessThan 819 618 821: 619(bvec3) GroupNonUniformLogicalXor 35 ClusteredReduce 820 34 822: 88(ivec3) Select 821 622 618 823: 71(ptr) AccessChain 27(data) 816 39 30 824: 19(int) CompositeExtract 822 0 Store 823 824 825: 71(ptr) AccessChain 27(data) 816 39 34 826: 19(int) CompositeExtract 822 1 Store 825 826 827: 71(ptr) AccessChain 27(data) 816 39 61 828: 19(int) CompositeExtract 822 2 Store 827 828 829: 6(int) Load 8(invocation) 830: 78(ptr) AccessChain 27(data) 39 39 831: 20(ivec4) Load 830 832: 634(bvec4) SLessThan 831 633 833: 634(bvec4) GroupNonUniformLogicalXor 35 ClusteredReduce 832 34 834: 20(ivec4) Select 833 637 633 835: 78(ptr) AccessChain 27(data) 829 39 Store 835 834 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupClusteredNeg.comp.out000066400000000000000000000012011506534232700251110ustar00rootroot00000000000000spv.subgroupClusteredNeg.comp ERROR: 0:22: 'cluster size' : argument must be at least 1 ERROR: 0:24: 'cluster size' : argument must be a power of 2 ERROR: 0:27: 'cluster size' : argument must be a power of 2 ERROR: 0:29: 'cluster size' : argument must be at least 1 ERROR: 0:31: 'cluster size' : argument must be at least 1 ERROR: 0:33: 'cluster size' : argument must be compile-time constant ERROR: 0:36: 'cluster size' : argument must be compile-time constant ERROR: 0:37: 'cluster size' : argument must be compile-time constant ERROR: 8 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out000066400000000000000000010577031506534232700273470ustar00rootroot00000000000000spv.subgroupExtendedTypesArithmetic.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 4218 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability GroupNonUniform Capability GroupNonUniformArithmetic Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_arithmetic" SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 31 "Buffers" MemberName 31(Buffers) 0 "i8" MemberName 31(Buffers) 1 "u8" MemberName 31(Buffers) 2 "i16" MemberName 31(Buffers) 3 "u16" MemberName 31(Buffers) 4 "i64" MemberName 31(Buffers) 5 "u64" MemberName 31(Buffers) 6 "f16" Name 34 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 MemberDecorate 31(Buffers) 3 Offset 16 MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 Decorate 34(data) Binding 0 Decorate 34(data) DescriptorSet 0 Decorate 4217 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeInt 8 1 18: TypeVector 17(int8_t) 4 19: TypeInt 8 0 20: TypeVector 19(int8_t) 4 21: TypeInt 16 1 22: TypeVector 21(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 4 25: TypeInt 64 1 26: TypeVector 25(int64_t) 4 27: TypeInt 64 0 28: TypeVector 27(int64_t) 4 29: TypeFloat 16 30: TypeVector 29(float16_t) 4 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 32: TypeArray 31(Buffers) 15 33: TypePointer StorageBuffer 32 34(data): 33(ptr) Variable StorageBuffer 36: TypeInt 32 1 37: 36(int) Constant 0 38: 6(int) Constant 0 39: TypePointer StorageBuffer 17(int8_t) 42: 6(int) Constant 3 46: 36(int) Constant 1 47: TypeVector 17(int8_t) 2 48: TypePointer StorageBuffer 18(i8vec4) 55: 6(int) Constant 1 59: 36(int) Constant 2 60: TypeVector 17(int8_t) 3 69: 6(int) Constant 2 73: 36(int) Constant 3 679: TypePointer StorageBuffer 19(int8_t) 685: TypeVector 19(int8_t) 2 686: TypePointer StorageBuffer 20(i8vec4) 696: TypeVector 19(int8_t) 3 1313: TypePointer StorageBuffer 21(int16_t) 1319: TypeVector 21(int16_t) 2 1320: TypePointer StorageBuffer 22(i16vec4) 1330: TypeVector 21(int16_t) 3 1947: TypePointer StorageBuffer 23(int16_t) 1953: TypeVector 23(int16_t) 2 1954: TypePointer StorageBuffer 24(i16vec4) 1964: TypeVector 23(int16_t) 3 2581: 36(int) Constant 4 2582: TypePointer StorageBuffer 25(int64_t) 2588: TypeVector 25(int64_t) 2 2589: TypePointer StorageBuffer 26(i64vec4) 2599: TypeVector 25(int64_t) 3 3216: 36(int) Constant 5 3217: TypePointer StorageBuffer 27(int64_t) 3223: TypeVector 27(int64_t) 2 3224: TypePointer StorageBuffer 28(i64vec4) 3234: TypeVector 27(int64_t) 3 3851: 36(int) Constant 6 3852: TypePointer StorageBuffer 29(float16_t) 3858: TypeVector 29(float16_t) 2 3859: TypePointer StorageBuffer 30(f16vec4) 3869: TypeVector 29(float16_t) 3 4215: TypeVector 6(int) 3 4216: 6(int) Constant 8 4217: 4215(ivec3) ConstantComposite 4216 55 55 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 35: 6(int) Load 8(invocation) 40: 39(ptr) AccessChain 34(data) 37 37 38 41: 17(int8_t) Load 40 43: 17(int8_t) GroupNonUniformIAdd 42 Reduce 41 44: 39(ptr) AccessChain 34(data) 35 37 38 Store 44 43 45: 6(int) Load 8(invocation) 49: 48(ptr) AccessChain 34(data) 46 37 50: 18(i8vec4) Load 49 51: 47(i8vec2) VectorShuffle 50 50 0 1 52: 47(i8vec2) GroupNonUniformIAdd 42 Reduce 51 53: 39(ptr) AccessChain 34(data) 45 37 38 54: 17(int8_t) CompositeExtract 52 0 Store 53 54 56: 39(ptr) AccessChain 34(data) 45 37 55 57: 17(int8_t) CompositeExtract 52 1 Store 56 57 58: 6(int) Load 8(invocation) 61: 48(ptr) AccessChain 34(data) 59 37 62: 18(i8vec4) Load 61 63: 60(i8vec3) VectorShuffle 62 62 0 1 2 64: 60(i8vec3) GroupNonUniformIAdd 42 Reduce 63 65: 39(ptr) AccessChain 34(data) 58 37 38 66: 17(int8_t) CompositeExtract 64 0 Store 65 66 67: 39(ptr) AccessChain 34(data) 58 37 55 68: 17(int8_t) CompositeExtract 64 1 Store 67 68 70: 39(ptr) AccessChain 34(data) 58 37 69 71: 17(int8_t) CompositeExtract 64 2 Store 70 71 72: 6(int) Load 8(invocation) 74: 48(ptr) AccessChain 34(data) 73 37 75: 18(i8vec4) Load 74 76: 18(i8vec4) GroupNonUniformIAdd 42 Reduce 75 77: 48(ptr) AccessChain 34(data) 72 37 Store 77 76 78: 6(int) Load 8(invocation) 79: 39(ptr) AccessChain 34(data) 37 37 38 80: 17(int8_t) Load 79 81: 17(int8_t) GroupNonUniformIMul 42 Reduce 80 82: 39(ptr) AccessChain 34(data) 78 37 38 Store 82 81 83: 6(int) Load 8(invocation) 84: 48(ptr) AccessChain 34(data) 46 37 85: 18(i8vec4) Load 84 86: 47(i8vec2) VectorShuffle 85 85 0 1 87: 47(i8vec2) GroupNonUniformIMul 42 Reduce 86 88: 39(ptr) AccessChain 34(data) 83 37 38 89: 17(int8_t) CompositeExtract 87 0 Store 88 89 90: 39(ptr) AccessChain 34(data) 83 37 55 91: 17(int8_t) CompositeExtract 87 1 Store 90 91 92: 6(int) Load 8(invocation) 93: 48(ptr) AccessChain 34(data) 59 37 94: 18(i8vec4) Load 93 95: 60(i8vec3) VectorShuffle 94 94 0 1 2 96: 60(i8vec3) GroupNonUniformIMul 42 Reduce 95 97: 39(ptr) AccessChain 34(data) 92 37 38 98: 17(int8_t) CompositeExtract 96 0 Store 97 98 99: 39(ptr) AccessChain 34(data) 92 37 55 100: 17(int8_t) CompositeExtract 96 1 Store 99 100 101: 39(ptr) AccessChain 34(data) 92 37 69 102: 17(int8_t) CompositeExtract 96 2 Store 101 102 103: 6(int) Load 8(invocation) 104: 48(ptr) AccessChain 34(data) 73 37 105: 18(i8vec4) Load 104 106: 18(i8vec4) GroupNonUniformIMul 42 Reduce 105 107: 48(ptr) AccessChain 34(data) 103 37 Store 107 106 108: 6(int) Load 8(invocation) 109: 39(ptr) AccessChain 34(data) 37 37 38 110: 17(int8_t) Load 109 111: 17(int8_t) GroupNonUniformSMin 42 Reduce 110 112: 39(ptr) AccessChain 34(data) 108 37 38 Store 112 111 113: 6(int) Load 8(invocation) 114: 48(ptr) AccessChain 34(data) 46 37 115: 18(i8vec4) Load 114 116: 47(i8vec2) VectorShuffle 115 115 0 1 117: 47(i8vec2) GroupNonUniformSMin 42 Reduce 116 118: 39(ptr) AccessChain 34(data) 113 37 38 119: 17(int8_t) CompositeExtract 117 0 Store 118 119 120: 39(ptr) AccessChain 34(data) 113 37 55 121: 17(int8_t) CompositeExtract 117 1 Store 120 121 122: 6(int) Load 8(invocation) 123: 48(ptr) AccessChain 34(data) 59 37 124: 18(i8vec4) Load 123 125: 60(i8vec3) VectorShuffle 124 124 0 1 2 126: 60(i8vec3) GroupNonUniformSMin 42 Reduce 125 127: 39(ptr) AccessChain 34(data) 122 37 38 128: 17(int8_t) CompositeExtract 126 0 Store 127 128 129: 39(ptr) AccessChain 34(data) 122 37 55 130: 17(int8_t) CompositeExtract 126 1 Store 129 130 131: 39(ptr) AccessChain 34(data) 122 37 69 132: 17(int8_t) CompositeExtract 126 2 Store 131 132 133: 6(int) Load 8(invocation) 134: 48(ptr) AccessChain 34(data) 73 37 135: 18(i8vec4) Load 134 136: 18(i8vec4) GroupNonUniformSMin 42 Reduce 135 137: 48(ptr) AccessChain 34(data) 133 37 Store 137 136 138: 6(int) Load 8(invocation) 139: 39(ptr) AccessChain 34(data) 37 37 38 140: 17(int8_t) Load 139 141: 17(int8_t) GroupNonUniformSMax 42 Reduce 140 142: 39(ptr) AccessChain 34(data) 138 37 38 Store 142 141 143: 6(int) Load 8(invocation) 144: 48(ptr) AccessChain 34(data) 46 37 145: 18(i8vec4) Load 144 146: 47(i8vec2) VectorShuffle 145 145 0 1 147: 47(i8vec2) GroupNonUniformSMax 42 Reduce 146 148: 39(ptr) AccessChain 34(data) 143 37 38 149: 17(int8_t) CompositeExtract 147 0 Store 148 149 150: 39(ptr) AccessChain 34(data) 143 37 55 151: 17(int8_t) CompositeExtract 147 1 Store 150 151 152: 6(int) Load 8(invocation) 153: 48(ptr) AccessChain 34(data) 59 37 154: 18(i8vec4) Load 153 155: 60(i8vec3) VectorShuffle 154 154 0 1 2 156: 60(i8vec3) GroupNonUniformSMax 42 Reduce 155 157: 39(ptr) AccessChain 34(data) 152 37 38 158: 17(int8_t) CompositeExtract 156 0 Store 157 158 159: 39(ptr) AccessChain 34(data) 152 37 55 160: 17(int8_t) CompositeExtract 156 1 Store 159 160 161: 39(ptr) AccessChain 34(data) 152 37 69 162: 17(int8_t) CompositeExtract 156 2 Store 161 162 163: 6(int) Load 8(invocation) 164: 48(ptr) AccessChain 34(data) 73 37 165: 18(i8vec4) Load 164 166: 18(i8vec4) GroupNonUniformSMax 42 Reduce 165 167: 48(ptr) AccessChain 34(data) 163 37 Store 167 166 168: 6(int) Load 8(invocation) 169: 39(ptr) AccessChain 34(data) 37 37 38 170: 17(int8_t) Load 169 171: 17(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 170 172: 39(ptr) AccessChain 34(data) 168 37 38 Store 172 171 173: 6(int) Load 8(invocation) 174: 48(ptr) AccessChain 34(data) 46 37 175: 18(i8vec4) Load 174 176: 47(i8vec2) VectorShuffle 175 175 0 1 177: 47(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 176 178: 39(ptr) AccessChain 34(data) 173 37 38 179: 17(int8_t) CompositeExtract 177 0 Store 178 179 180: 39(ptr) AccessChain 34(data) 173 37 55 181: 17(int8_t) CompositeExtract 177 1 Store 180 181 182: 6(int) Load 8(invocation) 183: 48(ptr) AccessChain 34(data) 59 37 184: 18(i8vec4) Load 183 185: 60(i8vec3) VectorShuffle 184 184 0 1 2 186: 60(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 185 187: 39(ptr) AccessChain 34(data) 182 37 38 188: 17(int8_t) CompositeExtract 186 0 Store 187 188 189: 39(ptr) AccessChain 34(data) 182 37 55 190: 17(int8_t) CompositeExtract 186 1 Store 189 190 191: 39(ptr) AccessChain 34(data) 182 37 69 192: 17(int8_t) CompositeExtract 186 2 Store 191 192 193: 6(int) Load 8(invocation) 194: 48(ptr) AccessChain 34(data) 73 37 195: 18(i8vec4) Load 194 196: 18(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 195 197: 48(ptr) AccessChain 34(data) 193 37 Store 197 196 198: 6(int) Load 8(invocation) 199: 39(ptr) AccessChain 34(data) 37 37 38 200: 17(int8_t) Load 199 201: 17(int8_t) GroupNonUniformBitwiseOr 42 Reduce 200 202: 39(ptr) AccessChain 34(data) 198 37 38 Store 202 201 203: 6(int) Load 8(invocation) 204: 48(ptr) AccessChain 34(data) 46 37 205: 18(i8vec4) Load 204 206: 47(i8vec2) VectorShuffle 205 205 0 1 207: 47(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 206 208: 39(ptr) AccessChain 34(data) 203 37 38 209: 17(int8_t) CompositeExtract 207 0 Store 208 209 210: 39(ptr) AccessChain 34(data) 203 37 55 211: 17(int8_t) CompositeExtract 207 1 Store 210 211 212: 6(int) Load 8(invocation) 213: 48(ptr) AccessChain 34(data) 59 37 214: 18(i8vec4) Load 213 215: 60(i8vec3) VectorShuffle 214 214 0 1 2 216: 60(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 215 217: 39(ptr) AccessChain 34(data) 212 37 38 218: 17(int8_t) CompositeExtract 216 0 Store 217 218 219: 39(ptr) AccessChain 34(data) 212 37 55 220: 17(int8_t) CompositeExtract 216 1 Store 219 220 221: 39(ptr) AccessChain 34(data) 212 37 69 222: 17(int8_t) CompositeExtract 216 2 Store 221 222 223: 6(int) Load 8(invocation) 224: 48(ptr) AccessChain 34(data) 73 37 225: 18(i8vec4) Load 224 226: 18(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 225 227: 48(ptr) AccessChain 34(data) 223 37 Store 227 226 228: 6(int) Load 8(invocation) 229: 39(ptr) AccessChain 34(data) 37 37 38 230: 17(int8_t) Load 229 231: 17(int8_t) GroupNonUniformBitwiseXor 42 Reduce 230 232: 39(ptr) AccessChain 34(data) 228 37 38 Store 232 231 233: 6(int) Load 8(invocation) 234: 48(ptr) AccessChain 34(data) 46 37 235: 18(i8vec4) Load 234 236: 47(i8vec2) VectorShuffle 235 235 0 1 237: 47(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 236 238: 39(ptr) AccessChain 34(data) 233 37 38 239: 17(int8_t) CompositeExtract 237 0 Store 238 239 240: 39(ptr) AccessChain 34(data) 233 37 55 241: 17(int8_t) CompositeExtract 237 1 Store 240 241 242: 6(int) Load 8(invocation) 243: 48(ptr) AccessChain 34(data) 59 37 244: 18(i8vec4) Load 243 245: 60(i8vec3) VectorShuffle 244 244 0 1 2 246: 60(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 245 247: 39(ptr) AccessChain 34(data) 242 37 38 248: 17(int8_t) CompositeExtract 246 0 Store 247 248 249: 39(ptr) AccessChain 34(data) 242 37 55 250: 17(int8_t) CompositeExtract 246 1 Store 249 250 251: 39(ptr) AccessChain 34(data) 242 37 69 252: 17(int8_t) CompositeExtract 246 2 Store 251 252 253: 6(int) Load 8(invocation) 254: 48(ptr) AccessChain 34(data) 73 37 255: 18(i8vec4) Load 254 256: 18(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 255 257: 48(ptr) AccessChain 34(data) 253 37 Store 257 256 258: 6(int) Load 8(invocation) 259: 39(ptr) AccessChain 34(data) 37 37 38 260: 17(int8_t) Load 259 261: 17(int8_t) GroupNonUniformIAdd 42 InclusiveScan 260 262: 39(ptr) AccessChain 34(data) 258 37 38 Store 262 261 263: 6(int) Load 8(invocation) 264: 48(ptr) AccessChain 34(data) 46 37 265: 18(i8vec4) Load 264 266: 47(i8vec2) VectorShuffle 265 265 0 1 267: 47(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 266 268: 39(ptr) AccessChain 34(data) 263 37 38 269: 17(int8_t) CompositeExtract 267 0 Store 268 269 270: 39(ptr) AccessChain 34(data) 263 37 55 271: 17(int8_t) CompositeExtract 267 1 Store 270 271 272: 6(int) Load 8(invocation) 273: 48(ptr) AccessChain 34(data) 59 37 274: 18(i8vec4) Load 273 275: 60(i8vec3) VectorShuffle 274 274 0 1 2 276: 60(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 275 277: 39(ptr) AccessChain 34(data) 272 37 38 278: 17(int8_t) CompositeExtract 276 0 Store 277 278 279: 39(ptr) AccessChain 34(data) 272 37 55 280: 17(int8_t) CompositeExtract 276 1 Store 279 280 281: 39(ptr) AccessChain 34(data) 272 37 69 282: 17(int8_t) CompositeExtract 276 2 Store 281 282 283: 6(int) Load 8(invocation) 284: 48(ptr) AccessChain 34(data) 73 37 285: 18(i8vec4) Load 284 286: 18(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 285 287: 48(ptr) AccessChain 34(data) 283 37 Store 287 286 288: 6(int) Load 8(invocation) 289: 39(ptr) AccessChain 34(data) 37 37 38 290: 17(int8_t) Load 289 291: 17(int8_t) GroupNonUniformIMul 42 InclusiveScan 290 292: 39(ptr) AccessChain 34(data) 288 37 38 Store 292 291 293: 6(int) Load 8(invocation) 294: 48(ptr) AccessChain 34(data) 46 37 295: 18(i8vec4) Load 294 296: 47(i8vec2) VectorShuffle 295 295 0 1 297: 47(i8vec2) GroupNonUniformIMul 42 InclusiveScan 296 298: 39(ptr) AccessChain 34(data) 293 37 38 299: 17(int8_t) CompositeExtract 297 0 Store 298 299 300: 39(ptr) AccessChain 34(data) 293 37 55 301: 17(int8_t) CompositeExtract 297 1 Store 300 301 302: 6(int) Load 8(invocation) 303: 48(ptr) AccessChain 34(data) 59 37 304: 18(i8vec4) Load 303 305: 60(i8vec3) VectorShuffle 304 304 0 1 2 306: 60(i8vec3) GroupNonUniformIMul 42 InclusiveScan 305 307: 39(ptr) AccessChain 34(data) 302 37 38 308: 17(int8_t) CompositeExtract 306 0 Store 307 308 309: 39(ptr) AccessChain 34(data) 302 37 55 310: 17(int8_t) CompositeExtract 306 1 Store 309 310 311: 39(ptr) AccessChain 34(data) 302 37 69 312: 17(int8_t) CompositeExtract 306 2 Store 311 312 313: 6(int) Load 8(invocation) 314: 48(ptr) AccessChain 34(data) 73 37 315: 18(i8vec4) Load 314 316: 18(i8vec4) GroupNonUniformIMul 42 InclusiveScan 315 317: 48(ptr) AccessChain 34(data) 313 37 Store 317 316 318: 6(int) Load 8(invocation) 319: 39(ptr) AccessChain 34(data) 37 37 38 320: 17(int8_t) Load 319 321: 17(int8_t) GroupNonUniformSMin 42 InclusiveScan 320 322: 39(ptr) AccessChain 34(data) 318 37 38 Store 322 321 323: 6(int) Load 8(invocation) 324: 48(ptr) AccessChain 34(data) 46 37 325: 18(i8vec4) Load 324 326: 47(i8vec2) VectorShuffle 325 325 0 1 327: 47(i8vec2) GroupNonUniformSMin 42 InclusiveScan 326 328: 39(ptr) AccessChain 34(data) 323 37 38 329: 17(int8_t) CompositeExtract 327 0 Store 328 329 330: 39(ptr) AccessChain 34(data) 323 37 55 331: 17(int8_t) CompositeExtract 327 1 Store 330 331 332: 6(int) Load 8(invocation) 333: 48(ptr) AccessChain 34(data) 59 37 334: 18(i8vec4) Load 333 335: 60(i8vec3) VectorShuffle 334 334 0 1 2 336: 60(i8vec3) GroupNonUniformSMin 42 InclusiveScan 335 337: 39(ptr) AccessChain 34(data) 332 37 38 338: 17(int8_t) CompositeExtract 336 0 Store 337 338 339: 39(ptr) AccessChain 34(data) 332 37 55 340: 17(int8_t) CompositeExtract 336 1 Store 339 340 341: 39(ptr) AccessChain 34(data) 332 37 69 342: 17(int8_t) CompositeExtract 336 2 Store 341 342 343: 6(int) Load 8(invocation) 344: 48(ptr) AccessChain 34(data) 73 37 345: 18(i8vec4) Load 344 346: 18(i8vec4) GroupNonUniformSMin 42 InclusiveScan 345 347: 48(ptr) AccessChain 34(data) 343 37 Store 347 346 348: 6(int) Load 8(invocation) 349: 39(ptr) AccessChain 34(data) 37 37 38 350: 17(int8_t) Load 349 351: 17(int8_t) GroupNonUniformSMax 42 InclusiveScan 350 352: 39(ptr) AccessChain 34(data) 348 37 38 Store 352 351 353: 6(int) Load 8(invocation) 354: 48(ptr) AccessChain 34(data) 46 37 355: 18(i8vec4) Load 354 356: 47(i8vec2) VectorShuffle 355 355 0 1 357: 47(i8vec2) GroupNonUniformSMax 42 InclusiveScan 356 358: 39(ptr) AccessChain 34(data) 353 37 38 359: 17(int8_t) CompositeExtract 357 0 Store 358 359 360: 39(ptr) AccessChain 34(data) 353 37 55 361: 17(int8_t) CompositeExtract 357 1 Store 360 361 362: 6(int) Load 8(invocation) 363: 48(ptr) AccessChain 34(data) 59 37 364: 18(i8vec4) Load 363 365: 60(i8vec3) VectorShuffle 364 364 0 1 2 366: 60(i8vec3) GroupNonUniformSMax 42 InclusiveScan 365 367: 39(ptr) AccessChain 34(data) 362 37 38 368: 17(int8_t) CompositeExtract 366 0 Store 367 368 369: 39(ptr) AccessChain 34(data) 362 37 55 370: 17(int8_t) CompositeExtract 366 1 Store 369 370 371: 39(ptr) AccessChain 34(data) 362 37 69 372: 17(int8_t) CompositeExtract 366 2 Store 371 372 373: 6(int) Load 8(invocation) 374: 48(ptr) AccessChain 34(data) 73 37 375: 18(i8vec4) Load 374 376: 18(i8vec4) GroupNonUniformSMax 42 InclusiveScan 375 377: 48(ptr) AccessChain 34(data) 373 37 Store 377 376 378: 6(int) Load 8(invocation) 379: 39(ptr) AccessChain 34(data) 37 37 38 380: 17(int8_t) Load 379 381: 17(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 380 382: 39(ptr) AccessChain 34(data) 378 37 38 Store 382 381 383: 6(int) Load 8(invocation) 384: 48(ptr) AccessChain 34(data) 46 37 385: 18(i8vec4) Load 384 386: 47(i8vec2) VectorShuffle 385 385 0 1 387: 47(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 386 388: 39(ptr) AccessChain 34(data) 383 37 38 389: 17(int8_t) CompositeExtract 387 0 Store 388 389 390: 39(ptr) AccessChain 34(data) 383 37 55 391: 17(int8_t) CompositeExtract 387 1 Store 390 391 392: 6(int) Load 8(invocation) 393: 48(ptr) AccessChain 34(data) 59 37 394: 18(i8vec4) Load 393 395: 60(i8vec3) VectorShuffle 394 394 0 1 2 396: 60(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 395 397: 39(ptr) AccessChain 34(data) 392 37 38 398: 17(int8_t) CompositeExtract 396 0 Store 397 398 399: 39(ptr) AccessChain 34(data) 392 37 55 400: 17(int8_t) CompositeExtract 396 1 Store 399 400 401: 39(ptr) AccessChain 34(data) 392 37 69 402: 17(int8_t) CompositeExtract 396 2 Store 401 402 403: 6(int) Load 8(invocation) 404: 48(ptr) AccessChain 34(data) 73 37 405: 18(i8vec4) Load 404 406: 18(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 405 407: 48(ptr) AccessChain 34(data) 403 37 Store 407 406 408: 6(int) Load 8(invocation) 409: 39(ptr) AccessChain 34(data) 37 37 38 410: 17(int8_t) Load 409 411: 17(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 410 412: 39(ptr) AccessChain 34(data) 408 37 38 Store 412 411 413: 6(int) Load 8(invocation) 414: 48(ptr) AccessChain 34(data) 46 37 415: 18(i8vec4) Load 414 416: 47(i8vec2) VectorShuffle 415 415 0 1 417: 47(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 416 418: 39(ptr) AccessChain 34(data) 413 37 38 419: 17(int8_t) CompositeExtract 417 0 Store 418 419 420: 39(ptr) AccessChain 34(data) 413 37 55 421: 17(int8_t) CompositeExtract 417 1 Store 420 421 422: 6(int) Load 8(invocation) 423: 48(ptr) AccessChain 34(data) 59 37 424: 18(i8vec4) Load 423 425: 60(i8vec3) VectorShuffle 424 424 0 1 2 426: 60(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 425 427: 39(ptr) AccessChain 34(data) 422 37 38 428: 17(int8_t) CompositeExtract 426 0 Store 427 428 429: 39(ptr) AccessChain 34(data) 422 37 55 430: 17(int8_t) CompositeExtract 426 1 Store 429 430 431: 39(ptr) AccessChain 34(data) 422 37 69 432: 17(int8_t) CompositeExtract 426 2 Store 431 432 433: 6(int) Load 8(invocation) 434: 48(ptr) AccessChain 34(data) 73 37 435: 18(i8vec4) Load 434 436: 18(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 435 437: 48(ptr) AccessChain 34(data) 433 37 Store 437 436 438: 6(int) Load 8(invocation) 439: 39(ptr) AccessChain 34(data) 37 37 38 440: 17(int8_t) Load 439 441: 17(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 440 442: 39(ptr) AccessChain 34(data) 438 37 38 Store 442 441 443: 6(int) Load 8(invocation) 444: 48(ptr) AccessChain 34(data) 46 37 445: 18(i8vec4) Load 444 446: 47(i8vec2) VectorShuffle 445 445 0 1 447: 47(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 446 448: 39(ptr) AccessChain 34(data) 443 37 38 449: 17(int8_t) CompositeExtract 447 0 Store 448 449 450: 39(ptr) AccessChain 34(data) 443 37 55 451: 17(int8_t) CompositeExtract 447 1 Store 450 451 452: 6(int) Load 8(invocation) 453: 48(ptr) AccessChain 34(data) 59 37 454: 18(i8vec4) Load 453 455: 60(i8vec3) VectorShuffle 454 454 0 1 2 456: 60(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 455 457: 39(ptr) AccessChain 34(data) 452 37 38 458: 17(int8_t) CompositeExtract 456 0 Store 457 458 459: 39(ptr) AccessChain 34(data) 452 37 55 460: 17(int8_t) CompositeExtract 456 1 Store 459 460 461: 39(ptr) AccessChain 34(data) 452 37 69 462: 17(int8_t) CompositeExtract 456 2 Store 461 462 463: 6(int) Load 8(invocation) 464: 48(ptr) AccessChain 34(data) 73 37 465: 18(i8vec4) Load 464 466: 18(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 465 467: 48(ptr) AccessChain 34(data) 463 37 Store 467 466 468: 6(int) Load 8(invocation) 469: 39(ptr) AccessChain 34(data) 37 37 38 470: 17(int8_t) Load 469 471: 17(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 470 472: 39(ptr) AccessChain 34(data) 468 37 38 Store 472 471 473: 6(int) Load 8(invocation) 474: 48(ptr) AccessChain 34(data) 46 37 475: 18(i8vec4) Load 474 476: 47(i8vec2) VectorShuffle 475 475 0 1 477: 47(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 476 478: 39(ptr) AccessChain 34(data) 473 37 38 479: 17(int8_t) CompositeExtract 477 0 Store 478 479 480: 39(ptr) AccessChain 34(data) 473 37 55 481: 17(int8_t) CompositeExtract 477 1 Store 480 481 482: 6(int) Load 8(invocation) 483: 48(ptr) AccessChain 34(data) 59 37 484: 18(i8vec4) Load 483 485: 60(i8vec3) VectorShuffle 484 484 0 1 2 486: 60(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 485 487: 39(ptr) AccessChain 34(data) 482 37 38 488: 17(int8_t) CompositeExtract 486 0 Store 487 488 489: 39(ptr) AccessChain 34(data) 482 37 55 490: 17(int8_t) CompositeExtract 486 1 Store 489 490 491: 39(ptr) AccessChain 34(data) 482 37 69 492: 17(int8_t) CompositeExtract 486 2 Store 491 492 493: 6(int) Load 8(invocation) 494: 48(ptr) AccessChain 34(data) 73 37 495: 18(i8vec4) Load 494 496: 18(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 495 497: 48(ptr) AccessChain 34(data) 493 37 Store 497 496 498: 6(int) Load 8(invocation) 499: 39(ptr) AccessChain 34(data) 37 37 38 500: 17(int8_t) Load 499 501: 17(int8_t) GroupNonUniformIMul 42 ExclusiveScan 500 502: 39(ptr) AccessChain 34(data) 498 37 38 Store 502 501 503: 6(int) Load 8(invocation) 504: 48(ptr) AccessChain 34(data) 46 37 505: 18(i8vec4) Load 504 506: 47(i8vec2) VectorShuffle 505 505 0 1 507: 47(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 506 508: 39(ptr) AccessChain 34(data) 503 37 38 509: 17(int8_t) CompositeExtract 507 0 Store 508 509 510: 39(ptr) AccessChain 34(data) 503 37 55 511: 17(int8_t) CompositeExtract 507 1 Store 510 511 512: 6(int) Load 8(invocation) 513: 48(ptr) AccessChain 34(data) 59 37 514: 18(i8vec4) Load 513 515: 60(i8vec3) VectorShuffle 514 514 0 1 2 516: 60(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 515 517: 39(ptr) AccessChain 34(data) 512 37 38 518: 17(int8_t) CompositeExtract 516 0 Store 517 518 519: 39(ptr) AccessChain 34(data) 512 37 55 520: 17(int8_t) CompositeExtract 516 1 Store 519 520 521: 39(ptr) AccessChain 34(data) 512 37 69 522: 17(int8_t) CompositeExtract 516 2 Store 521 522 523: 6(int) Load 8(invocation) 524: 48(ptr) AccessChain 34(data) 73 37 525: 18(i8vec4) Load 524 526: 18(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 525 527: 48(ptr) AccessChain 34(data) 523 37 Store 527 526 528: 6(int) Load 8(invocation) 529: 39(ptr) AccessChain 34(data) 37 37 38 530: 17(int8_t) Load 529 531: 17(int8_t) GroupNonUniformSMin 42 ExclusiveScan 530 532: 39(ptr) AccessChain 34(data) 528 37 38 Store 532 531 533: 6(int) Load 8(invocation) 534: 48(ptr) AccessChain 34(data) 46 37 535: 18(i8vec4) Load 534 536: 47(i8vec2) VectorShuffle 535 535 0 1 537: 47(i8vec2) GroupNonUniformSMin 42 ExclusiveScan 536 538: 39(ptr) AccessChain 34(data) 533 37 38 539: 17(int8_t) CompositeExtract 537 0 Store 538 539 540: 39(ptr) AccessChain 34(data) 533 37 55 541: 17(int8_t) CompositeExtract 537 1 Store 540 541 542: 6(int) Load 8(invocation) 543: 48(ptr) AccessChain 34(data) 59 37 544: 18(i8vec4) Load 543 545: 60(i8vec3) VectorShuffle 544 544 0 1 2 546: 60(i8vec3) GroupNonUniformSMin 42 ExclusiveScan 545 547: 39(ptr) AccessChain 34(data) 542 37 38 548: 17(int8_t) CompositeExtract 546 0 Store 547 548 549: 39(ptr) AccessChain 34(data) 542 37 55 550: 17(int8_t) CompositeExtract 546 1 Store 549 550 551: 39(ptr) AccessChain 34(data) 542 37 69 552: 17(int8_t) CompositeExtract 546 2 Store 551 552 553: 6(int) Load 8(invocation) 554: 48(ptr) AccessChain 34(data) 73 37 555: 18(i8vec4) Load 554 556: 18(i8vec4) GroupNonUniformSMin 42 ExclusiveScan 555 557: 48(ptr) AccessChain 34(data) 553 37 Store 557 556 558: 6(int) Load 8(invocation) 559: 39(ptr) AccessChain 34(data) 37 37 38 560: 17(int8_t) Load 559 561: 17(int8_t) GroupNonUniformSMax 42 ExclusiveScan 560 562: 39(ptr) AccessChain 34(data) 558 37 38 Store 562 561 563: 6(int) Load 8(invocation) 564: 48(ptr) AccessChain 34(data) 46 37 565: 18(i8vec4) Load 564 566: 47(i8vec2) VectorShuffle 565 565 0 1 567: 47(i8vec2) GroupNonUniformSMax 42 ExclusiveScan 566 568: 39(ptr) AccessChain 34(data) 563 37 38 569: 17(int8_t) CompositeExtract 567 0 Store 568 569 570: 39(ptr) AccessChain 34(data) 563 37 55 571: 17(int8_t) CompositeExtract 567 1 Store 570 571 572: 6(int) Load 8(invocation) 573: 48(ptr) AccessChain 34(data) 59 37 574: 18(i8vec4) Load 573 575: 60(i8vec3) VectorShuffle 574 574 0 1 2 576: 60(i8vec3) GroupNonUniformSMax 42 ExclusiveScan 575 577: 39(ptr) AccessChain 34(data) 572 37 38 578: 17(int8_t) CompositeExtract 576 0 Store 577 578 579: 39(ptr) AccessChain 34(data) 572 37 55 580: 17(int8_t) CompositeExtract 576 1 Store 579 580 581: 39(ptr) AccessChain 34(data) 572 37 69 582: 17(int8_t) CompositeExtract 576 2 Store 581 582 583: 6(int) Load 8(invocation) 584: 48(ptr) AccessChain 34(data) 73 37 585: 18(i8vec4) Load 584 586: 18(i8vec4) GroupNonUniformSMax 42 ExclusiveScan 585 587: 48(ptr) AccessChain 34(data) 583 37 Store 587 586 588: 6(int) Load 8(invocation) 589: 39(ptr) AccessChain 34(data) 37 37 38 590: 17(int8_t) Load 589 591: 17(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 590 592: 39(ptr) AccessChain 34(data) 588 37 38 Store 592 591 593: 6(int) Load 8(invocation) 594: 48(ptr) AccessChain 34(data) 46 37 595: 18(i8vec4) Load 594 596: 47(i8vec2) VectorShuffle 595 595 0 1 597: 47(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 596 598: 39(ptr) AccessChain 34(data) 593 37 38 599: 17(int8_t) CompositeExtract 597 0 Store 598 599 600: 39(ptr) AccessChain 34(data) 593 37 55 601: 17(int8_t) CompositeExtract 597 1 Store 600 601 602: 6(int) Load 8(invocation) 603: 48(ptr) AccessChain 34(data) 59 37 604: 18(i8vec4) Load 603 605: 60(i8vec3) VectorShuffle 604 604 0 1 2 606: 60(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 605 607: 39(ptr) AccessChain 34(data) 602 37 38 608: 17(int8_t) CompositeExtract 606 0 Store 607 608 609: 39(ptr) AccessChain 34(data) 602 37 55 610: 17(int8_t) CompositeExtract 606 1 Store 609 610 611: 39(ptr) AccessChain 34(data) 602 37 69 612: 17(int8_t) CompositeExtract 606 2 Store 611 612 613: 6(int) Load 8(invocation) 614: 48(ptr) AccessChain 34(data) 73 37 615: 18(i8vec4) Load 614 616: 18(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 615 617: 48(ptr) AccessChain 34(data) 613 37 Store 617 616 618: 6(int) Load 8(invocation) 619: 39(ptr) AccessChain 34(data) 37 37 38 620: 17(int8_t) Load 619 621: 17(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 620 622: 39(ptr) AccessChain 34(data) 618 37 38 Store 622 621 623: 6(int) Load 8(invocation) 624: 48(ptr) AccessChain 34(data) 46 37 625: 18(i8vec4) Load 624 626: 47(i8vec2) VectorShuffle 625 625 0 1 627: 47(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 626 628: 39(ptr) AccessChain 34(data) 623 37 38 629: 17(int8_t) CompositeExtract 627 0 Store 628 629 630: 39(ptr) AccessChain 34(data) 623 37 55 631: 17(int8_t) CompositeExtract 627 1 Store 630 631 632: 6(int) Load 8(invocation) 633: 48(ptr) AccessChain 34(data) 59 37 634: 18(i8vec4) Load 633 635: 60(i8vec3) VectorShuffle 634 634 0 1 2 636: 60(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 635 637: 39(ptr) AccessChain 34(data) 632 37 38 638: 17(int8_t) CompositeExtract 636 0 Store 637 638 639: 39(ptr) AccessChain 34(data) 632 37 55 640: 17(int8_t) CompositeExtract 636 1 Store 639 640 641: 39(ptr) AccessChain 34(data) 632 37 69 642: 17(int8_t) CompositeExtract 636 2 Store 641 642 643: 6(int) Load 8(invocation) 644: 48(ptr) AccessChain 34(data) 73 37 645: 18(i8vec4) Load 644 646: 18(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 645 647: 48(ptr) AccessChain 34(data) 643 37 Store 647 646 648: 6(int) Load 8(invocation) 649: 39(ptr) AccessChain 34(data) 37 37 38 650: 17(int8_t) Load 649 651: 17(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 650 652: 39(ptr) AccessChain 34(data) 648 37 38 Store 652 651 653: 6(int) Load 8(invocation) 654: 48(ptr) AccessChain 34(data) 46 37 655: 18(i8vec4) Load 654 656: 47(i8vec2) VectorShuffle 655 655 0 1 657: 47(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 656 658: 39(ptr) AccessChain 34(data) 653 37 38 659: 17(int8_t) CompositeExtract 657 0 Store 658 659 660: 39(ptr) AccessChain 34(data) 653 37 55 661: 17(int8_t) CompositeExtract 657 1 Store 660 661 662: 6(int) Load 8(invocation) 663: 48(ptr) AccessChain 34(data) 59 37 664: 18(i8vec4) Load 663 665: 60(i8vec3) VectorShuffle 664 664 0 1 2 666: 60(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 665 667: 39(ptr) AccessChain 34(data) 662 37 38 668: 17(int8_t) CompositeExtract 666 0 Store 667 668 669: 39(ptr) AccessChain 34(data) 662 37 55 670: 17(int8_t) CompositeExtract 666 1 Store 669 670 671: 39(ptr) AccessChain 34(data) 662 37 69 672: 17(int8_t) CompositeExtract 666 2 Store 671 672 673: 6(int) Load 8(invocation) 674: 48(ptr) AccessChain 34(data) 73 37 675: 18(i8vec4) Load 674 676: 18(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 675 677: 48(ptr) AccessChain 34(data) 673 37 Store 677 676 678: 6(int) Load 8(invocation) 680: 679(ptr) AccessChain 34(data) 37 46 38 681: 19(int8_t) Load 680 682: 19(int8_t) GroupNonUniformIAdd 42 Reduce 681 683: 679(ptr) AccessChain 34(data) 678 46 38 Store 683 682 684: 6(int) Load 8(invocation) 687: 686(ptr) AccessChain 34(data) 46 46 688: 20(i8vec4) Load 687 689: 685(i8vec2) VectorShuffle 688 688 0 1 690: 685(i8vec2) GroupNonUniformIAdd 42 Reduce 689 691: 679(ptr) AccessChain 34(data) 684 46 38 692: 19(int8_t) CompositeExtract 690 0 Store 691 692 693: 679(ptr) AccessChain 34(data) 684 46 55 694: 19(int8_t) CompositeExtract 690 1 Store 693 694 695: 6(int) Load 8(invocation) 697: 686(ptr) AccessChain 34(data) 59 46 698: 20(i8vec4) Load 697 699: 696(i8vec3) VectorShuffle 698 698 0 1 2 700: 696(i8vec3) GroupNonUniformIAdd 42 Reduce 699 701: 679(ptr) AccessChain 34(data) 695 46 38 702: 19(int8_t) CompositeExtract 700 0 Store 701 702 703: 679(ptr) AccessChain 34(data) 695 46 55 704: 19(int8_t) CompositeExtract 700 1 Store 703 704 705: 679(ptr) AccessChain 34(data) 695 46 69 706: 19(int8_t) CompositeExtract 700 2 Store 705 706 707: 6(int) Load 8(invocation) 708: 686(ptr) AccessChain 34(data) 73 46 709: 20(i8vec4) Load 708 710: 20(i8vec4) GroupNonUniformIAdd 42 Reduce 709 711: 686(ptr) AccessChain 34(data) 707 46 Store 711 710 712: 6(int) Load 8(invocation) 713: 679(ptr) AccessChain 34(data) 37 46 38 714: 19(int8_t) Load 713 715: 19(int8_t) GroupNonUniformIMul 42 Reduce 714 716: 679(ptr) AccessChain 34(data) 712 46 38 Store 716 715 717: 6(int) Load 8(invocation) 718: 686(ptr) AccessChain 34(data) 46 46 719: 20(i8vec4) Load 718 720: 685(i8vec2) VectorShuffle 719 719 0 1 721: 685(i8vec2) GroupNonUniformIMul 42 Reduce 720 722: 679(ptr) AccessChain 34(data) 717 46 38 723: 19(int8_t) CompositeExtract 721 0 Store 722 723 724: 679(ptr) AccessChain 34(data) 717 46 55 725: 19(int8_t) CompositeExtract 721 1 Store 724 725 726: 6(int) Load 8(invocation) 727: 686(ptr) AccessChain 34(data) 59 46 728: 20(i8vec4) Load 727 729: 696(i8vec3) VectorShuffle 728 728 0 1 2 730: 696(i8vec3) GroupNonUniformIMul 42 Reduce 729 731: 679(ptr) AccessChain 34(data) 726 46 38 732: 19(int8_t) CompositeExtract 730 0 Store 731 732 733: 679(ptr) AccessChain 34(data) 726 46 55 734: 19(int8_t) CompositeExtract 730 1 Store 733 734 735: 679(ptr) AccessChain 34(data) 726 46 69 736: 19(int8_t) CompositeExtract 730 2 Store 735 736 737: 6(int) Load 8(invocation) 738: 686(ptr) AccessChain 34(data) 73 46 739: 20(i8vec4) Load 738 740: 20(i8vec4) GroupNonUniformIMul 42 Reduce 739 741: 686(ptr) AccessChain 34(data) 737 46 Store 741 740 742: 6(int) Load 8(invocation) 743: 679(ptr) AccessChain 34(data) 37 46 38 744: 19(int8_t) Load 743 745: 19(int8_t) GroupNonUniformUMin 42 Reduce 744 746: 679(ptr) AccessChain 34(data) 742 46 38 Store 746 745 747: 6(int) Load 8(invocation) 748: 686(ptr) AccessChain 34(data) 46 46 749: 20(i8vec4) Load 748 750: 685(i8vec2) VectorShuffle 749 749 0 1 751: 685(i8vec2) GroupNonUniformUMin 42 Reduce 750 752: 679(ptr) AccessChain 34(data) 747 46 38 753: 19(int8_t) CompositeExtract 751 0 Store 752 753 754: 679(ptr) AccessChain 34(data) 747 46 55 755: 19(int8_t) CompositeExtract 751 1 Store 754 755 756: 6(int) Load 8(invocation) 757: 686(ptr) AccessChain 34(data) 59 46 758: 20(i8vec4) Load 757 759: 696(i8vec3) VectorShuffle 758 758 0 1 2 760: 696(i8vec3) GroupNonUniformUMin 42 Reduce 759 761: 679(ptr) AccessChain 34(data) 756 46 38 762: 19(int8_t) CompositeExtract 760 0 Store 761 762 763: 679(ptr) AccessChain 34(data) 756 46 55 764: 19(int8_t) CompositeExtract 760 1 Store 763 764 765: 679(ptr) AccessChain 34(data) 756 46 69 766: 19(int8_t) CompositeExtract 760 2 Store 765 766 767: 6(int) Load 8(invocation) 768: 686(ptr) AccessChain 34(data) 73 46 769: 20(i8vec4) Load 768 770: 20(i8vec4) GroupNonUniformUMin 42 Reduce 769 771: 686(ptr) AccessChain 34(data) 767 46 Store 771 770 772: 6(int) Load 8(invocation) 773: 679(ptr) AccessChain 34(data) 37 46 38 774: 19(int8_t) Load 773 775: 19(int8_t) GroupNonUniformUMax 42 Reduce 774 776: 679(ptr) AccessChain 34(data) 772 46 38 Store 776 775 777: 6(int) Load 8(invocation) 778: 686(ptr) AccessChain 34(data) 46 46 779: 20(i8vec4) Load 778 780: 685(i8vec2) VectorShuffle 779 779 0 1 781: 685(i8vec2) GroupNonUniformUMax 42 Reduce 780 782: 679(ptr) AccessChain 34(data) 777 46 38 783: 19(int8_t) CompositeExtract 781 0 Store 782 783 784: 679(ptr) AccessChain 34(data) 777 46 55 785: 19(int8_t) CompositeExtract 781 1 Store 784 785 786: 6(int) Load 8(invocation) 787: 686(ptr) AccessChain 34(data) 59 46 788: 20(i8vec4) Load 787 789: 696(i8vec3) VectorShuffle 788 788 0 1 2 790: 696(i8vec3) GroupNonUniformUMax 42 Reduce 789 791: 679(ptr) AccessChain 34(data) 786 46 38 792: 19(int8_t) CompositeExtract 790 0 Store 791 792 793: 679(ptr) AccessChain 34(data) 786 46 55 794: 19(int8_t) CompositeExtract 790 1 Store 793 794 795: 679(ptr) AccessChain 34(data) 786 46 69 796: 19(int8_t) CompositeExtract 790 2 Store 795 796 797: 6(int) Load 8(invocation) 798: 686(ptr) AccessChain 34(data) 73 46 799: 20(i8vec4) Load 798 800: 20(i8vec4) GroupNonUniformUMax 42 Reduce 799 801: 686(ptr) AccessChain 34(data) 797 46 Store 801 800 802: 6(int) Load 8(invocation) 803: 679(ptr) AccessChain 34(data) 37 46 38 804: 19(int8_t) Load 803 805: 19(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 804 806: 679(ptr) AccessChain 34(data) 802 46 38 Store 806 805 807: 6(int) Load 8(invocation) 808: 686(ptr) AccessChain 34(data) 46 46 809: 20(i8vec4) Load 808 810: 685(i8vec2) VectorShuffle 809 809 0 1 811: 685(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 810 812: 679(ptr) AccessChain 34(data) 807 46 38 813: 19(int8_t) CompositeExtract 811 0 Store 812 813 814: 679(ptr) AccessChain 34(data) 807 46 55 815: 19(int8_t) CompositeExtract 811 1 Store 814 815 816: 6(int) Load 8(invocation) 817: 686(ptr) AccessChain 34(data) 59 46 818: 20(i8vec4) Load 817 819: 696(i8vec3) VectorShuffle 818 818 0 1 2 820: 696(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 819 821: 679(ptr) AccessChain 34(data) 816 46 38 822: 19(int8_t) CompositeExtract 820 0 Store 821 822 823: 679(ptr) AccessChain 34(data) 816 46 55 824: 19(int8_t) CompositeExtract 820 1 Store 823 824 825: 679(ptr) AccessChain 34(data) 816 46 69 826: 19(int8_t) CompositeExtract 820 2 Store 825 826 827: 6(int) Load 8(invocation) 828: 686(ptr) AccessChain 34(data) 73 46 829: 20(i8vec4) Load 828 830: 20(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 829 831: 686(ptr) AccessChain 34(data) 827 46 Store 831 830 832: 6(int) Load 8(invocation) 833: 679(ptr) AccessChain 34(data) 37 46 38 834: 19(int8_t) Load 833 835: 19(int8_t) GroupNonUniformBitwiseOr 42 Reduce 834 836: 679(ptr) AccessChain 34(data) 832 46 38 Store 836 835 837: 6(int) Load 8(invocation) 838: 686(ptr) AccessChain 34(data) 46 46 839: 20(i8vec4) Load 838 840: 685(i8vec2) VectorShuffle 839 839 0 1 841: 685(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 840 842: 679(ptr) AccessChain 34(data) 837 46 38 843: 19(int8_t) CompositeExtract 841 0 Store 842 843 844: 679(ptr) AccessChain 34(data) 837 46 55 845: 19(int8_t) CompositeExtract 841 1 Store 844 845 846: 6(int) Load 8(invocation) 847: 686(ptr) AccessChain 34(data) 59 46 848: 20(i8vec4) Load 847 849: 696(i8vec3) VectorShuffle 848 848 0 1 2 850: 696(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 849 851: 679(ptr) AccessChain 34(data) 846 46 38 852: 19(int8_t) CompositeExtract 850 0 Store 851 852 853: 679(ptr) AccessChain 34(data) 846 46 55 854: 19(int8_t) CompositeExtract 850 1 Store 853 854 855: 679(ptr) AccessChain 34(data) 846 46 69 856: 19(int8_t) CompositeExtract 850 2 Store 855 856 857: 6(int) Load 8(invocation) 858: 686(ptr) AccessChain 34(data) 73 46 859: 20(i8vec4) Load 858 860: 20(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 859 861: 686(ptr) AccessChain 34(data) 857 46 Store 861 860 862: 6(int) Load 8(invocation) 863: 679(ptr) AccessChain 34(data) 37 46 38 864: 19(int8_t) Load 863 865: 19(int8_t) GroupNonUniformBitwiseXor 42 Reduce 864 866: 679(ptr) AccessChain 34(data) 862 46 38 Store 866 865 867: 6(int) Load 8(invocation) 868: 686(ptr) AccessChain 34(data) 46 46 869: 20(i8vec4) Load 868 870: 685(i8vec2) VectorShuffle 869 869 0 1 871: 685(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 870 872: 679(ptr) AccessChain 34(data) 867 46 38 873: 19(int8_t) CompositeExtract 871 0 Store 872 873 874: 679(ptr) AccessChain 34(data) 867 46 55 875: 19(int8_t) CompositeExtract 871 1 Store 874 875 876: 6(int) Load 8(invocation) 877: 686(ptr) AccessChain 34(data) 59 46 878: 20(i8vec4) Load 877 879: 696(i8vec3) VectorShuffle 878 878 0 1 2 880: 696(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 879 881: 679(ptr) AccessChain 34(data) 876 46 38 882: 19(int8_t) CompositeExtract 880 0 Store 881 882 883: 679(ptr) AccessChain 34(data) 876 46 55 884: 19(int8_t) CompositeExtract 880 1 Store 883 884 885: 679(ptr) AccessChain 34(data) 876 46 69 886: 19(int8_t) CompositeExtract 880 2 Store 885 886 887: 6(int) Load 8(invocation) 888: 686(ptr) AccessChain 34(data) 73 46 889: 20(i8vec4) Load 888 890: 20(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 889 891: 686(ptr) AccessChain 34(data) 887 46 Store 891 890 892: 6(int) Load 8(invocation) 893: 679(ptr) AccessChain 34(data) 37 46 38 894: 19(int8_t) Load 893 895: 19(int8_t) GroupNonUniformIAdd 42 InclusiveScan 894 896: 679(ptr) AccessChain 34(data) 892 46 38 Store 896 895 897: 6(int) Load 8(invocation) 898: 686(ptr) AccessChain 34(data) 46 46 899: 20(i8vec4) Load 898 900: 685(i8vec2) VectorShuffle 899 899 0 1 901: 685(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 900 902: 679(ptr) AccessChain 34(data) 897 46 38 903: 19(int8_t) CompositeExtract 901 0 Store 902 903 904: 679(ptr) AccessChain 34(data) 897 46 55 905: 19(int8_t) CompositeExtract 901 1 Store 904 905 906: 6(int) Load 8(invocation) 907: 686(ptr) AccessChain 34(data) 59 46 908: 20(i8vec4) Load 907 909: 696(i8vec3) VectorShuffle 908 908 0 1 2 910: 696(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 909 911: 679(ptr) AccessChain 34(data) 906 46 38 912: 19(int8_t) CompositeExtract 910 0 Store 911 912 913: 679(ptr) AccessChain 34(data) 906 46 55 914: 19(int8_t) CompositeExtract 910 1 Store 913 914 915: 679(ptr) AccessChain 34(data) 906 46 69 916: 19(int8_t) CompositeExtract 910 2 Store 915 916 917: 6(int) Load 8(invocation) 918: 686(ptr) AccessChain 34(data) 73 46 919: 20(i8vec4) Load 918 920: 20(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 919 921: 686(ptr) AccessChain 34(data) 917 46 Store 921 920 922: 6(int) Load 8(invocation) 923: 679(ptr) AccessChain 34(data) 37 46 38 924: 19(int8_t) Load 923 925: 19(int8_t) GroupNonUniformIMul 42 InclusiveScan 924 926: 679(ptr) AccessChain 34(data) 922 46 38 Store 926 925 927: 6(int) Load 8(invocation) 928: 686(ptr) AccessChain 34(data) 46 46 929: 20(i8vec4) Load 928 930: 685(i8vec2) VectorShuffle 929 929 0 1 931: 685(i8vec2) GroupNonUniformIMul 42 InclusiveScan 930 932: 679(ptr) AccessChain 34(data) 927 46 38 933: 19(int8_t) CompositeExtract 931 0 Store 932 933 934: 679(ptr) AccessChain 34(data) 927 46 55 935: 19(int8_t) CompositeExtract 931 1 Store 934 935 936: 6(int) Load 8(invocation) 937: 686(ptr) AccessChain 34(data) 59 46 938: 20(i8vec4) Load 937 939: 696(i8vec3) VectorShuffle 938 938 0 1 2 940: 696(i8vec3) GroupNonUniformIMul 42 InclusiveScan 939 941: 679(ptr) AccessChain 34(data) 936 46 38 942: 19(int8_t) CompositeExtract 940 0 Store 941 942 943: 679(ptr) AccessChain 34(data) 936 46 55 944: 19(int8_t) CompositeExtract 940 1 Store 943 944 945: 679(ptr) AccessChain 34(data) 936 46 69 946: 19(int8_t) CompositeExtract 940 2 Store 945 946 947: 6(int) Load 8(invocation) 948: 686(ptr) AccessChain 34(data) 73 46 949: 20(i8vec4) Load 948 950: 20(i8vec4) GroupNonUniformIMul 42 InclusiveScan 949 951: 686(ptr) AccessChain 34(data) 947 46 Store 951 950 952: 6(int) Load 8(invocation) 953: 679(ptr) AccessChain 34(data) 37 46 38 954: 19(int8_t) Load 953 955: 19(int8_t) GroupNonUniformUMin 42 InclusiveScan 954 956: 679(ptr) AccessChain 34(data) 952 46 38 Store 956 955 957: 6(int) Load 8(invocation) 958: 686(ptr) AccessChain 34(data) 46 46 959: 20(i8vec4) Load 958 960: 685(i8vec2) VectorShuffle 959 959 0 1 961: 685(i8vec2) GroupNonUniformUMin 42 InclusiveScan 960 962: 679(ptr) AccessChain 34(data) 957 46 38 963: 19(int8_t) CompositeExtract 961 0 Store 962 963 964: 679(ptr) AccessChain 34(data) 957 46 55 965: 19(int8_t) CompositeExtract 961 1 Store 964 965 966: 6(int) Load 8(invocation) 967: 686(ptr) AccessChain 34(data) 59 46 968: 20(i8vec4) Load 967 969: 696(i8vec3) VectorShuffle 968 968 0 1 2 970: 696(i8vec3) GroupNonUniformUMin 42 InclusiveScan 969 971: 679(ptr) AccessChain 34(data) 966 46 38 972: 19(int8_t) CompositeExtract 970 0 Store 971 972 973: 679(ptr) AccessChain 34(data) 966 46 55 974: 19(int8_t) CompositeExtract 970 1 Store 973 974 975: 679(ptr) AccessChain 34(data) 966 46 69 976: 19(int8_t) CompositeExtract 970 2 Store 975 976 977: 6(int) Load 8(invocation) 978: 686(ptr) AccessChain 34(data) 73 46 979: 20(i8vec4) Load 978 980: 20(i8vec4) GroupNonUniformUMin 42 InclusiveScan 979 981: 686(ptr) AccessChain 34(data) 977 46 Store 981 980 982: 6(int) Load 8(invocation) 983: 679(ptr) AccessChain 34(data) 37 46 38 984: 19(int8_t) Load 983 985: 19(int8_t) GroupNonUniformUMax 42 InclusiveScan 984 986: 679(ptr) AccessChain 34(data) 982 46 38 Store 986 985 987: 6(int) Load 8(invocation) 988: 686(ptr) AccessChain 34(data) 46 46 989: 20(i8vec4) Load 988 990: 685(i8vec2) VectorShuffle 989 989 0 1 991: 685(i8vec2) GroupNonUniformUMax 42 InclusiveScan 990 992: 679(ptr) AccessChain 34(data) 987 46 38 993: 19(int8_t) CompositeExtract 991 0 Store 992 993 994: 679(ptr) AccessChain 34(data) 987 46 55 995: 19(int8_t) CompositeExtract 991 1 Store 994 995 996: 6(int) Load 8(invocation) 997: 686(ptr) AccessChain 34(data) 59 46 998: 20(i8vec4) Load 997 999: 696(i8vec3) VectorShuffle 998 998 0 1 2 1000: 696(i8vec3) GroupNonUniformUMax 42 InclusiveScan 999 1001: 679(ptr) AccessChain 34(data) 996 46 38 1002: 19(int8_t) CompositeExtract 1000 0 Store 1001 1002 1003: 679(ptr) AccessChain 34(data) 996 46 55 1004: 19(int8_t) CompositeExtract 1000 1 Store 1003 1004 1005: 679(ptr) AccessChain 34(data) 996 46 69 1006: 19(int8_t) CompositeExtract 1000 2 Store 1005 1006 1007: 6(int) Load 8(invocation) 1008: 686(ptr) AccessChain 34(data) 73 46 1009: 20(i8vec4) Load 1008 1010: 20(i8vec4) GroupNonUniformUMax 42 InclusiveScan 1009 1011: 686(ptr) AccessChain 34(data) 1007 46 Store 1011 1010 1012: 6(int) Load 8(invocation) 1013: 679(ptr) AccessChain 34(data) 37 46 38 1014: 19(int8_t) Load 1013 1015: 19(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1014 1016: 679(ptr) AccessChain 34(data) 1012 46 38 Store 1016 1015 1017: 6(int) Load 8(invocation) 1018: 686(ptr) AccessChain 34(data) 46 46 1019: 20(i8vec4) Load 1018 1020: 685(i8vec2) VectorShuffle 1019 1019 0 1 1021: 685(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1020 1022: 679(ptr) AccessChain 34(data) 1017 46 38 1023: 19(int8_t) CompositeExtract 1021 0 Store 1022 1023 1024: 679(ptr) AccessChain 34(data) 1017 46 55 1025: 19(int8_t) CompositeExtract 1021 1 Store 1024 1025 1026: 6(int) Load 8(invocation) 1027: 686(ptr) AccessChain 34(data) 59 46 1028: 20(i8vec4) Load 1027 1029: 696(i8vec3) VectorShuffle 1028 1028 0 1 2 1030: 696(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1029 1031: 679(ptr) AccessChain 34(data) 1026 46 38 1032: 19(int8_t) CompositeExtract 1030 0 Store 1031 1032 1033: 679(ptr) AccessChain 34(data) 1026 46 55 1034: 19(int8_t) CompositeExtract 1030 1 Store 1033 1034 1035: 679(ptr) AccessChain 34(data) 1026 46 69 1036: 19(int8_t) CompositeExtract 1030 2 Store 1035 1036 1037: 6(int) Load 8(invocation) 1038: 686(ptr) AccessChain 34(data) 73 46 1039: 20(i8vec4) Load 1038 1040: 20(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 1039 1041: 686(ptr) AccessChain 34(data) 1037 46 Store 1041 1040 1042: 6(int) Load 8(invocation) 1043: 679(ptr) AccessChain 34(data) 37 46 38 1044: 19(int8_t) Load 1043 1045: 19(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 1044 1046: 679(ptr) AccessChain 34(data) 1042 46 38 Store 1046 1045 1047: 6(int) Load 8(invocation) 1048: 686(ptr) AccessChain 34(data) 46 46 1049: 20(i8vec4) Load 1048 1050: 685(i8vec2) VectorShuffle 1049 1049 0 1 1051: 685(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 1050 1052: 679(ptr) AccessChain 34(data) 1047 46 38 1053: 19(int8_t) CompositeExtract 1051 0 Store 1052 1053 1054: 679(ptr) AccessChain 34(data) 1047 46 55 1055: 19(int8_t) CompositeExtract 1051 1 Store 1054 1055 1056: 6(int) Load 8(invocation) 1057: 686(ptr) AccessChain 34(data) 59 46 1058: 20(i8vec4) Load 1057 1059: 696(i8vec3) VectorShuffle 1058 1058 0 1 2 1060: 696(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 1059 1061: 679(ptr) AccessChain 34(data) 1056 46 38 1062: 19(int8_t) CompositeExtract 1060 0 Store 1061 1062 1063: 679(ptr) AccessChain 34(data) 1056 46 55 1064: 19(int8_t) CompositeExtract 1060 1 Store 1063 1064 1065: 679(ptr) AccessChain 34(data) 1056 46 69 1066: 19(int8_t) CompositeExtract 1060 2 Store 1065 1066 1067: 6(int) Load 8(invocation) 1068: 686(ptr) AccessChain 34(data) 73 46 1069: 20(i8vec4) Load 1068 1070: 20(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 1069 1071: 686(ptr) AccessChain 34(data) 1067 46 Store 1071 1070 1072: 6(int) Load 8(invocation) 1073: 679(ptr) AccessChain 34(data) 37 46 38 1074: 19(int8_t) Load 1073 1075: 19(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 1074 1076: 679(ptr) AccessChain 34(data) 1072 46 38 Store 1076 1075 1077: 6(int) Load 8(invocation) 1078: 686(ptr) AccessChain 34(data) 46 46 1079: 20(i8vec4) Load 1078 1080: 685(i8vec2) VectorShuffle 1079 1079 0 1 1081: 685(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 1080 1082: 679(ptr) AccessChain 34(data) 1077 46 38 1083: 19(int8_t) CompositeExtract 1081 0 Store 1082 1083 1084: 679(ptr) AccessChain 34(data) 1077 46 55 1085: 19(int8_t) CompositeExtract 1081 1 Store 1084 1085 1086: 6(int) Load 8(invocation) 1087: 686(ptr) AccessChain 34(data) 59 46 1088: 20(i8vec4) Load 1087 1089: 696(i8vec3) VectorShuffle 1088 1088 0 1 2 1090: 696(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 1089 1091: 679(ptr) AccessChain 34(data) 1086 46 38 1092: 19(int8_t) CompositeExtract 1090 0 Store 1091 1092 1093: 679(ptr) AccessChain 34(data) 1086 46 55 1094: 19(int8_t) CompositeExtract 1090 1 Store 1093 1094 1095: 679(ptr) AccessChain 34(data) 1086 46 69 1096: 19(int8_t) CompositeExtract 1090 2 Store 1095 1096 1097: 6(int) Load 8(invocation) 1098: 686(ptr) AccessChain 34(data) 73 46 1099: 20(i8vec4) Load 1098 1100: 20(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 1099 1101: 686(ptr) AccessChain 34(data) 1097 46 Store 1101 1100 1102: 6(int) Load 8(invocation) 1103: 679(ptr) AccessChain 34(data) 37 46 38 1104: 19(int8_t) Load 1103 1105: 19(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 1104 1106: 679(ptr) AccessChain 34(data) 1102 46 38 Store 1106 1105 1107: 6(int) Load 8(invocation) 1108: 686(ptr) AccessChain 34(data) 46 46 1109: 20(i8vec4) Load 1108 1110: 685(i8vec2) VectorShuffle 1109 1109 0 1 1111: 685(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 1110 1112: 679(ptr) AccessChain 34(data) 1107 46 38 1113: 19(int8_t) CompositeExtract 1111 0 Store 1112 1113 1114: 679(ptr) AccessChain 34(data) 1107 46 55 1115: 19(int8_t) CompositeExtract 1111 1 Store 1114 1115 1116: 6(int) Load 8(invocation) 1117: 686(ptr) AccessChain 34(data) 59 46 1118: 20(i8vec4) Load 1117 1119: 696(i8vec3) VectorShuffle 1118 1118 0 1 2 1120: 696(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 1119 1121: 679(ptr) AccessChain 34(data) 1116 46 38 1122: 19(int8_t) CompositeExtract 1120 0 Store 1121 1122 1123: 679(ptr) AccessChain 34(data) 1116 46 55 1124: 19(int8_t) CompositeExtract 1120 1 Store 1123 1124 1125: 679(ptr) AccessChain 34(data) 1116 46 69 1126: 19(int8_t) CompositeExtract 1120 2 Store 1125 1126 1127: 6(int) Load 8(invocation) 1128: 686(ptr) AccessChain 34(data) 73 46 1129: 20(i8vec4) Load 1128 1130: 20(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 1129 1131: 686(ptr) AccessChain 34(data) 1127 46 Store 1131 1130 1132: 6(int) Load 8(invocation) 1133: 679(ptr) AccessChain 34(data) 37 46 38 1134: 19(int8_t) Load 1133 1135: 19(int8_t) GroupNonUniformIMul 42 ExclusiveScan 1134 1136: 679(ptr) AccessChain 34(data) 1132 46 38 Store 1136 1135 1137: 6(int) Load 8(invocation) 1138: 686(ptr) AccessChain 34(data) 46 46 1139: 20(i8vec4) Load 1138 1140: 685(i8vec2) VectorShuffle 1139 1139 0 1 1141: 685(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 1140 1142: 679(ptr) AccessChain 34(data) 1137 46 38 1143: 19(int8_t) CompositeExtract 1141 0 Store 1142 1143 1144: 679(ptr) AccessChain 34(data) 1137 46 55 1145: 19(int8_t) CompositeExtract 1141 1 Store 1144 1145 1146: 6(int) Load 8(invocation) 1147: 686(ptr) AccessChain 34(data) 59 46 1148: 20(i8vec4) Load 1147 1149: 696(i8vec3) VectorShuffle 1148 1148 0 1 2 1150: 696(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 1149 1151: 679(ptr) AccessChain 34(data) 1146 46 38 1152: 19(int8_t) CompositeExtract 1150 0 Store 1151 1152 1153: 679(ptr) AccessChain 34(data) 1146 46 55 1154: 19(int8_t) CompositeExtract 1150 1 Store 1153 1154 1155: 679(ptr) AccessChain 34(data) 1146 46 69 1156: 19(int8_t) CompositeExtract 1150 2 Store 1155 1156 1157: 6(int) Load 8(invocation) 1158: 686(ptr) AccessChain 34(data) 73 46 1159: 20(i8vec4) Load 1158 1160: 20(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 1159 1161: 686(ptr) AccessChain 34(data) 1157 46 Store 1161 1160 1162: 6(int) Load 8(invocation) 1163: 679(ptr) AccessChain 34(data) 37 46 38 1164: 19(int8_t) Load 1163 1165: 19(int8_t) GroupNonUniformUMin 42 ExclusiveScan 1164 1166: 679(ptr) AccessChain 34(data) 1162 46 38 Store 1166 1165 1167: 6(int) Load 8(invocation) 1168: 686(ptr) AccessChain 34(data) 46 46 1169: 20(i8vec4) Load 1168 1170: 685(i8vec2) VectorShuffle 1169 1169 0 1 1171: 685(i8vec2) GroupNonUniformUMin 42 ExclusiveScan 1170 1172: 679(ptr) AccessChain 34(data) 1167 46 38 1173: 19(int8_t) CompositeExtract 1171 0 Store 1172 1173 1174: 679(ptr) AccessChain 34(data) 1167 46 55 1175: 19(int8_t) CompositeExtract 1171 1 Store 1174 1175 1176: 6(int) Load 8(invocation) 1177: 686(ptr) AccessChain 34(data) 59 46 1178: 20(i8vec4) Load 1177 1179: 696(i8vec3) VectorShuffle 1178 1178 0 1 2 1180: 696(i8vec3) GroupNonUniformUMin 42 ExclusiveScan 1179 1181: 679(ptr) AccessChain 34(data) 1176 46 38 1182: 19(int8_t) CompositeExtract 1180 0 Store 1181 1182 1183: 679(ptr) AccessChain 34(data) 1176 46 55 1184: 19(int8_t) CompositeExtract 1180 1 Store 1183 1184 1185: 679(ptr) AccessChain 34(data) 1176 46 69 1186: 19(int8_t) CompositeExtract 1180 2 Store 1185 1186 1187: 6(int) Load 8(invocation) 1188: 686(ptr) AccessChain 34(data) 73 46 1189: 20(i8vec4) Load 1188 1190: 20(i8vec4) GroupNonUniformUMin 42 ExclusiveScan 1189 1191: 686(ptr) AccessChain 34(data) 1187 46 Store 1191 1190 1192: 6(int) Load 8(invocation) 1193: 679(ptr) AccessChain 34(data) 37 46 38 1194: 19(int8_t) Load 1193 1195: 19(int8_t) GroupNonUniformUMax 42 ExclusiveScan 1194 1196: 679(ptr) AccessChain 34(data) 1192 46 38 Store 1196 1195 1197: 6(int) Load 8(invocation) 1198: 686(ptr) AccessChain 34(data) 46 46 1199: 20(i8vec4) Load 1198 1200: 685(i8vec2) VectorShuffle 1199 1199 0 1 1201: 685(i8vec2) GroupNonUniformUMax 42 ExclusiveScan 1200 1202: 679(ptr) AccessChain 34(data) 1197 46 38 1203: 19(int8_t) CompositeExtract 1201 0 Store 1202 1203 1204: 679(ptr) AccessChain 34(data) 1197 46 55 1205: 19(int8_t) CompositeExtract 1201 1 Store 1204 1205 1206: 6(int) Load 8(invocation) 1207: 686(ptr) AccessChain 34(data) 59 46 1208: 20(i8vec4) Load 1207 1209: 696(i8vec3) VectorShuffle 1208 1208 0 1 2 1210: 696(i8vec3) GroupNonUniformUMax 42 ExclusiveScan 1209 1211: 679(ptr) AccessChain 34(data) 1206 46 38 1212: 19(int8_t) CompositeExtract 1210 0 Store 1211 1212 1213: 679(ptr) AccessChain 34(data) 1206 46 55 1214: 19(int8_t) CompositeExtract 1210 1 Store 1213 1214 1215: 679(ptr) AccessChain 34(data) 1206 46 69 1216: 19(int8_t) CompositeExtract 1210 2 Store 1215 1216 1217: 6(int) Load 8(invocation) 1218: 686(ptr) AccessChain 34(data) 73 46 1219: 20(i8vec4) Load 1218 1220: 20(i8vec4) GroupNonUniformUMax 42 ExclusiveScan 1219 1221: 686(ptr) AccessChain 34(data) 1217 46 Store 1221 1220 1222: 6(int) Load 8(invocation) 1223: 679(ptr) AccessChain 34(data) 37 46 38 1224: 19(int8_t) Load 1223 1225: 19(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1224 1226: 679(ptr) AccessChain 34(data) 1222 46 38 Store 1226 1225 1227: 6(int) Load 8(invocation) 1228: 686(ptr) AccessChain 34(data) 46 46 1229: 20(i8vec4) Load 1228 1230: 685(i8vec2) VectorShuffle 1229 1229 0 1 1231: 685(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1230 1232: 679(ptr) AccessChain 34(data) 1227 46 38 1233: 19(int8_t) CompositeExtract 1231 0 Store 1232 1233 1234: 679(ptr) AccessChain 34(data) 1227 46 55 1235: 19(int8_t) CompositeExtract 1231 1 Store 1234 1235 1236: 6(int) Load 8(invocation) 1237: 686(ptr) AccessChain 34(data) 59 46 1238: 20(i8vec4) Load 1237 1239: 696(i8vec3) VectorShuffle 1238 1238 0 1 2 1240: 696(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1239 1241: 679(ptr) AccessChain 34(data) 1236 46 38 1242: 19(int8_t) CompositeExtract 1240 0 Store 1241 1242 1243: 679(ptr) AccessChain 34(data) 1236 46 55 1244: 19(int8_t) CompositeExtract 1240 1 Store 1243 1244 1245: 679(ptr) AccessChain 34(data) 1236 46 69 1246: 19(int8_t) CompositeExtract 1240 2 Store 1245 1246 1247: 6(int) Load 8(invocation) 1248: 686(ptr) AccessChain 34(data) 73 46 1249: 20(i8vec4) Load 1248 1250: 20(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1249 1251: 686(ptr) AccessChain 34(data) 1247 46 Store 1251 1250 1252: 6(int) Load 8(invocation) 1253: 679(ptr) AccessChain 34(data) 37 46 38 1254: 19(int8_t) Load 1253 1255: 19(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1254 1256: 679(ptr) AccessChain 34(data) 1252 46 38 Store 1256 1255 1257: 6(int) Load 8(invocation) 1258: 686(ptr) AccessChain 34(data) 46 46 1259: 20(i8vec4) Load 1258 1260: 685(i8vec2) VectorShuffle 1259 1259 0 1 1261: 685(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1260 1262: 679(ptr) AccessChain 34(data) 1257 46 38 1263: 19(int8_t) CompositeExtract 1261 0 Store 1262 1263 1264: 679(ptr) AccessChain 34(data) 1257 46 55 1265: 19(int8_t) CompositeExtract 1261 1 Store 1264 1265 1266: 6(int) Load 8(invocation) 1267: 686(ptr) AccessChain 34(data) 59 46 1268: 20(i8vec4) Load 1267 1269: 696(i8vec3) VectorShuffle 1268 1268 0 1 2 1270: 696(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1269 1271: 679(ptr) AccessChain 34(data) 1266 46 38 1272: 19(int8_t) CompositeExtract 1270 0 Store 1271 1272 1273: 679(ptr) AccessChain 34(data) 1266 46 55 1274: 19(int8_t) CompositeExtract 1270 1 Store 1273 1274 1275: 679(ptr) AccessChain 34(data) 1266 46 69 1276: 19(int8_t) CompositeExtract 1270 2 Store 1275 1276 1277: 6(int) Load 8(invocation) 1278: 686(ptr) AccessChain 34(data) 73 46 1279: 20(i8vec4) Load 1278 1280: 20(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1279 1281: 686(ptr) AccessChain 34(data) 1277 46 Store 1281 1280 1282: 6(int) Load 8(invocation) 1283: 679(ptr) AccessChain 34(data) 37 46 38 1284: 19(int8_t) Load 1283 1285: 19(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1284 1286: 679(ptr) AccessChain 34(data) 1282 46 38 Store 1286 1285 1287: 6(int) Load 8(invocation) 1288: 686(ptr) AccessChain 34(data) 46 46 1289: 20(i8vec4) Load 1288 1290: 685(i8vec2) VectorShuffle 1289 1289 0 1 1291: 685(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1290 1292: 679(ptr) AccessChain 34(data) 1287 46 38 1293: 19(int8_t) CompositeExtract 1291 0 Store 1292 1293 1294: 679(ptr) AccessChain 34(data) 1287 46 55 1295: 19(int8_t) CompositeExtract 1291 1 Store 1294 1295 1296: 6(int) Load 8(invocation) 1297: 686(ptr) AccessChain 34(data) 59 46 1298: 20(i8vec4) Load 1297 1299: 696(i8vec3) VectorShuffle 1298 1298 0 1 2 1300: 696(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1299 1301: 679(ptr) AccessChain 34(data) 1296 46 38 1302: 19(int8_t) CompositeExtract 1300 0 Store 1301 1302 1303: 679(ptr) AccessChain 34(data) 1296 46 55 1304: 19(int8_t) CompositeExtract 1300 1 Store 1303 1304 1305: 679(ptr) AccessChain 34(data) 1296 46 69 1306: 19(int8_t) CompositeExtract 1300 2 Store 1305 1306 1307: 6(int) Load 8(invocation) 1308: 686(ptr) AccessChain 34(data) 73 46 1309: 20(i8vec4) Load 1308 1310: 20(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1309 1311: 686(ptr) AccessChain 34(data) 1307 46 Store 1311 1310 1312: 6(int) Load 8(invocation) 1314: 1313(ptr) AccessChain 34(data) 37 59 38 1315: 21(int16_t) Load 1314 1316: 21(int16_t) GroupNonUniformIAdd 42 Reduce 1315 1317: 1313(ptr) AccessChain 34(data) 1312 59 38 Store 1317 1316 1318: 6(int) Load 8(invocation) 1321: 1320(ptr) AccessChain 34(data) 46 59 1322: 22(i16vec4) Load 1321 1323:1319(i16vec2) VectorShuffle 1322 1322 0 1 1324:1319(i16vec2) GroupNonUniformIAdd 42 Reduce 1323 1325: 1313(ptr) AccessChain 34(data) 1318 59 38 1326: 21(int16_t) CompositeExtract 1324 0 Store 1325 1326 1327: 1313(ptr) AccessChain 34(data) 1318 59 55 1328: 21(int16_t) CompositeExtract 1324 1 Store 1327 1328 1329: 6(int) Load 8(invocation) 1331: 1320(ptr) AccessChain 34(data) 59 59 1332: 22(i16vec4) Load 1331 1333:1330(i16vec3) VectorShuffle 1332 1332 0 1 2 1334:1330(i16vec3) GroupNonUniformIAdd 42 Reduce 1333 1335: 1313(ptr) AccessChain 34(data) 1329 59 38 1336: 21(int16_t) CompositeExtract 1334 0 Store 1335 1336 1337: 1313(ptr) AccessChain 34(data) 1329 59 55 1338: 21(int16_t) CompositeExtract 1334 1 Store 1337 1338 1339: 1313(ptr) AccessChain 34(data) 1329 59 69 1340: 21(int16_t) CompositeExtract 1334 2 Store 1339 1340 1341: 6(int) Load 8(invocation) 1342: 1320(ptr) AccessChain 34(data) 73 59 1343: 22(i16vec4) Load 1342 1344: 22(i16vec4) GroupNonUniformIAdd 42 Reduce 1343 1345: 1320(ptr) AccessChain 34(data) 1341 59 Store 1345 1344 1346: 6(int) Load 8(invocation) 1347: 1313(ptr) AccessChain 34(data) 37 59 38 1348: 21(int16_t) Load 1347 1349: 21(int16_t) GroupNonUniformIMul 42 Reduce 1348 1350: 1313(ptr) AccessChain 34(data) 1346 59 38 Store 1350 1349 1351: 6(int) Load 8(invocation) 1352: 1320(ptr) AccessChain 34(data) 46 59 1353: 22(i16vec4) Load 1352 1354:1319(i16vec2) VectorShuffle 1353 1353 0 1 1355:1319(i16vec2) GroupNonUniformIMul 42 Reduce 1354 1356: 1313(ptr) AccessChain 34(data) 1351 59 38 1357: 21(int16_t) CompositeExtract 1355 0 Store 1356 1357 1358: 1313(ptr) AccessChain 34(data) 1351 59 55 1359: 21(int16_t) CompositeExtract 1355 1 Store 1358 1359 1360: 6(int) Load 8(invocation) 1361: 1320(ptr) AccessChain 34(data) 59 59 1362: 22(i16vec4) Load 1361 1363:1330(i16vec3) VectorShuffle 1362 1362 0 1 2 1364:1330(i16vec3) GroupNonUniformIMul 42 Reduce 1363 1365: 1313(ptr) AccessChain 34(data) 1360 59 38 1366: 21(int16_t) CompositeExtract 1364 0 Store 1365 1366 1367: 1313(ptr) AccessChain 34(data) 1360 59 55 1368: 21(int16_t) CompositeExtract 1364 1 Store 1367 1368 1369: 1313(ptr) AccessChain 34(data) 1360 59 69 1370: 21(int16_t) CompositeExtract 1364 2 Store 1369 1370 1371: 6(int) Load 8(invocation) 1372: 1320(ptr) AccessChain 34(data) 73 59 1373: 22(i16vec4) Load 1372 1374: 22(i16vec4) GroupNonUniformIMul 42 Reduce 1373 1375: 1320(ptr) AccessChain 34(data) 1371 59 Store 1375 1374 1376: 6(int) Load 8(invocation) 1377: 1313(ptr) AccessChain 34(data) 37 59 38 1378: 21(int16_t) Load 1377 1379: 21(int16_t) GroupNonUniformSMin 42 Reduce 1378 1380: 1313(ptr) AccessChain 34(data) 1376 59 38 Store 1380 1379 1381: 6(int) Load 8(invocation) 1382: 1320(ptr) AccessChain 34(data) 46 59 1383: 22(i16vec4) Load 1382 1384:1319(i16vec2) VectorShuffle 1383 1383 0 1 1385:1319(i16vec2) GroupNonUniformSMin 42 Reduce 1384 1386: 1313(ptr) AccessChain 34(data) 1381 59 38 1387: 21(int16_t) CompositeExtract 1385 0 Store 1386 1387 1388: 1313(ptr) AccessChain 34(data) 1381 59 55 1389: 21(int16_t) CompositeExtract 1385 1 Store 1388 1389 1390: 6(int) Load 8(invocation) 1391: 1320(ptr) AccessChain 34(data) 59 59 1392: 22(i16vec4) Load 1391 1393:1330(i16vec3) VectorShuffle 1392 1392 0 1 2 1394:1330(i16vec3) GroupNonUniformSMin 42 Reduce 1393 1395: 1313(ptr) AccessChain 34(data) 1390 59 38 1396: 21(int16_t) CompositeExtract 1394 0 Store 1395 1396 1397: 1313(ptr) AccessChain 34(data) 1390 59 55 1398: 21(int16_t) CompositeExtract 1394 1 Store 1397 1398 1399: 1313(ptr) AccessChain 34(data) 1390 59 69 1400: 21(int16_t) CompositeExtract 1394 2 Store 1399 1400 1401: 6(int) Load 8(invocation) 1402: 1320(ptr) AccessChain 34(data) 73 59 1403: 22(i16vec4) Load 1402 1404: 22(i16vec4) GroupNonUniformSMin 42 Reduce 1403 1405: 1320(ptr) AccessChain 34(data) 1401 59 Store 1405 1404 1406: 6(int) Load 8(invocation) 1407: 1313(ptr) AccessChain 34(data) 37 59 38 1408: 21(int16_t) Load 1407 1409: 21(int16_t) GroupNonUniformSMax 42 Reduce 1408 1410: 1313(ptr) AccessChain 34(data) 1406 59 38 Store 1410 1409 1411: 6(int) Load 8(invocation) 1412: 1320(ptr) AccessChain 34(data) 46 59 1413: 22(i16vec4) Load 1412 1414:1319(i16vec2) VectorShuffle 1413 1413 0 1 1415:1319(i16vec2) GroupNonUniformSMax 42 Reduce 1414 1416: 1313(ptr) AccessChain 34(data) 1411 59 38 1417: 21(int16_t) CompositeExtract 1415 0 Store 1416 1417 1418: 1313(ptr) AccessChain 34(data) 1411 59 55 1419: 21(int16_t) CompositeExtract 1415 1 Store 1418 1419 1420: 6(int) Load 8(invocation) 1421: 1320(ptr) AccessChain 34(data) 59 59 1422: 22(i16vec4) Load 1421 1423:1330(i16vec3) VectorShuffle 1422 1422 0 1 2 1424:1330(i16vec3) GroupNonUniformSMax 42 Reduce 1423 1425: 1313(ptr) AccessChain 34(data) 1420 59 38 1426: 21(int16_t) CompositeExtract 1424 0 Store 1425 1426 1427: 1313(ptr) AccessChain 34(data) 1420 59 55 1428: 21(int16_t) CompositeExtract 1424 1 Store 1427 1428 1429: 1313(ptr) AccessChain 34(data) 1420 59 69 1430: 21(int16_t) CompositeExtract 1424 2 Store 1429 1430 1431: 6(int) Load 8(invocation) 1432: 1320(ptr) AccessChain 34(data) 73 59 1433: 22(i16vec4) Load 1432 1434: 22(i16vec4) GroupNonUniformSMax 42 Reduce 1433 1435: 1320(ptr) AccessChain 34(data) 1431 59 Store 1435 1434 1436: 6(int) Load 8(invocation) 1437: 1313(ptr) AccessChain 34(data) 37 59 38 1438: 21(int16_t) Load 1437 1439: 21(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1438 1440: 1313(ptr) AccessChain 34(data) 1436 59 38 Store 1440 1439 1441: 6(int) Load 8(invocation) 1442: 1320(ptr) AccessChain 34(data) 46 59 1443: 22(i16vec4) Load 1442 1444:1319(i16vec2) VectorShuffle 1443 1443 0 1 1445:1319(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1444 1446: 1313(ptr) AccessChain 34(data) 1441 59 38 1447: 21(int16_t) CompositeExtract 1445 0 Store 1446 1447 1448: 1313(ptr) AccessChain 34(data) 1441 59 55 1449: 21(int16_t) CompositeExtract 1445 1 Store 1448 1449 1450: 6(int) Load 8(invocation) 1451: 1320(ptr) AccessChain 34(data) 59 59 1452: 22(i16vec4) Load 1451 1453:1330(i16vec3) VectorShuffle 1452 1452 0 1 2 1454:1330(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1453 1455: 1313(ptr) AccessChain 34(data) 1450 59 38 1456: 21(int16_t) CompositeExtract 1454 0 Store 1455 1456 1457: 1313(ptr) AccessChain 34(data) 1450 59 55 1458: 21(int16_t) CompositeExtract 1454 1 Store 1457 1458 1459: 1313(ptr) AccessChain 34(data) 1450 59 69 1460: 21(int16_t) CompositeExtract 1454 2 Store 1459 1460 1461: 6(int) Load 8(invocation) 1462: 1320(ptr) AccessChain 34(data) 73 59 1463: 22(i16vec4) Load 1462 1464: 22(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1463 1465: 1320(ptr) AccessChain 34(data) 1461 59 Store 1465 1464 1466: 6(int) Load 8(invocation) 1467: 1313(ptr) AccessChain 34(data) 37 59 38 1468: 21(int16_t) Load 1467 1469: 21(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1468 1470: 1313(ptr) AccessChain 34(data) 1466 59 38 Store 1470 1469 1471: 6(int) Load 8(invocation) 1472: 1320(ptr) AccessChain 34(data) 46 59 1473: 22(i16vec4) Load 1472 1474:1319(i16vec2) VectorShuffle 1473 1473 0 1 1475:1319(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1474 1476: 1313(ptr) AccessChain 34(data) 1471 59 38 1477: 21(int16_t) CompositeExtract 1475 0 Store 1476 1477 1478: 1313(ptr) AccessChain 34(data) 1471 59 55 1479: 21(int16_t) CompositeExtract 1475 1 Store 1478 1479 1480: 6(int) Load 8(invocation) 1481: 1320(ptr) AccessChain 34(data) 59 59 1482: 22(i16vec4) Load 1481 1483:1330(i16vec3) VectorShuffle 1482 1482 0 1 2 1484:1330(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1483 1485: 1313(ptr) AccessChain 34(data) 1480 59 38 1486: 21(int16_t) CompositeExtract 1484 0 Store 1485 1486 1487: 1313(ptr) AccessChain 34(data) 1480 59 55 1488: 21(int16_t) CompositeExtract 1484 1 Store 1487 1488 1489: 1313(ptr) AccessChain 34(data) 1480 59 69 1490: 21(int16_t) CompositeExtract 1484 2 Store 1489 1490 1491: 6(int) Load 8(invocation) 1492: 1320(ptr) AccessChain 34(data) 73 59 1493: 22(i16vec4) Load 1492 1494: 22(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1493 1495: 1320(ptr) AccessChain 34(data) 1491 59 Store 1495 1494 1496: 6(int) Load 8(invocation) 1497: 1313(ptr) AccessChain 34(data) 37 59 38 1498: 21(int16_t) Load 1497 1499: 21(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1498 1500: 1313(ptr) AccessChain 34(data) 1496 59 38 Store 1500 1499 1501: 6(int) Load 8(invocation) 1502: 1320(ptr) AccessChain 34(data) 46 59 1503: 22(i16vec4) Load 1502 1504:1319(i16vec2) VectorShuffle 1503 1503 0 1 1505:1319(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1504 1506: 1313(ptr) AccessChain 34(data) 1501 59 38 1507: 21(int16_t) CompositeExtract 1505 0 Store 1506 1507 1508: 1313(ptr) AccessChain 34(data) 1501 59 55 1509: 21(int16_t) CompositeExtract 1505 1 Store 1508 1509 1510: 6(int) Load 8(invocation) 1511: 1320(ptr) AccessChain 34(data) 59 59 1512: 22(i16vec4) Load 1511 1513:1330(i16vec3) VectorShuffle 1512 1512 0 1 2 1514:1330(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1513 1515: 1313(ptr) AccessChain 34(data) 1510 59 38 1516: 21(int16_t) CompositeExtract 1514 0 Store 1515 1516 1517: 1313(ptr) AccessChain 34(data) 1510 59 55 1518: 21(int16_t) CompositeExtract 1514 1 Store 1517 1518 1519: 1313(ptr) AccessChain 34(data) 1510 59 69 1520: 21(int16_t) CompositeExtract 1514 2 Store 1519 1520 1521: 6(int) Load 8(invocation) 1522: 1320(ptr) AccessChain 34(data) 73 59 1523: 22(i16vec4) Load 1522 1524: 22(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1523 1525: 1320(ptr) AccessChain 34(data) 1521 59 Store 1525 1524 1526: 6(int) Load 8(invocation) 1527: 1313(ptr) AccessChain 34(data) 37 59 38 1528: 21(int16_t) Load 1527 1529: 21(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1528 1530: 1313(ptr) AccessChain 34(data) 1526 59 38 Store 1530 1529 1531: 6(int) Load 8(invocation) 1532: 1320(ptr) AccessChain 34(data) 46 59 1533: 22(i16vec4) Load 1532 1534:1319(i16vec2) VectorShuffle 1533 1533 0 1 1535:1319(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1534 1536: 1313(ptr) AccessChain 34(data) 1531 59 38 1537: 21(int16_t) CompositeExtract 1535 0 Store 1536 1537 1538: 1313(ptr) AccessChain 34(data) 1531 59 55 1539: 21(int16_t) CompositeExtract 1535 1 Store 1538 1539 1540: 6(int) Load 8(invocation) 1541: 1320(ptr) AccessChain 34(data) 59 59 1542: 22(i16vec4) Load 1541 1543:1330(i16vec3) VectorShuffle 1542 1542 0 1 2 1544:1330(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1543 1545: 1313(ptr) AccessChain 34(data) 1540 59 38 1546: 21(int16_t) CompositeExtract 1544 0 Store 1545 1546 1547: 1313(ptr) AccessChain 34(data) 1540 59 55 1548: 21(int16_t) CompositeExtract 1544 1 Store 1547 1548 1549: 1313(ptr) AccessChain 34(data) 1540 59 69 1550: 21(int16_t) CompositeExtract 1544 2 Store 1549 1550 1551: 6(int) Load 8(invocation) 1552: 1320(ptr) AccessChain 34(data) 73 59 1553: 22(i16vec4) Load 1552 1554: 22(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1553 1555: 1320(ptr) AccessChain 34(data) 1551 59 Store 1555 1554 1556: 6(int) Load 8(invocation) 1557: 1313(ptr) AccessChain 34(data) 37 59 38 1558: 21(int16_t) Load 1557 1559: 21(int16_t) GroupNonUniformIMul 42 InclusiveScan 1558 1560: 1313(ptr) AccessChain 34(data) 1556 59 38 Store 1560 1559 1561: 6(int) Load 8(invocation) 1562: 1320(ptr) AccessChain 34(data) 46 59 1563: 22(i16vec4) Load 1562 1564:1319(i16vec2) VectorShuffle 1563 1563 0 1 1565:1319(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1564 1566: 1313(ptr) AccessChain 34(data) 1561 59 38 1567: 21(int16_t) CompositeExtract 1565 0 Store 1566 1567 1568: 1313(ptr) AccessChain 34(data) 1561 59 55 1569: 21(int16_t) CompositeExtract 1565 1 Store 1568 1569 1570: 6(int) Load 8(invocation) 1571: 1320(ptr) AccessChain 34(data) 59 59 1572: 22(i16vec4) Load 1571 1573:1330(i16vec3) VectorShuffle 1572 1572 0 1 2 1574:1330(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1573 1575: 1313(ptr) AccessChain 34(data) 1570 59 38 1576: 21(int16_t) CompositeExtract 1574 0 Store 1575 1576 1577: 1313(ptr) AccessChain 34(data) 1570 59 55 1578: 21(int16_t) CompositeExtract 1574 1 Store 1577 1578 1579: 1313(ptr) AccessChain 34(data) 1570 59 69 1580: 21(int16_t) CompositeExtract 1574 2 Store 1579 1580 1581: 6(int) Load 8(invocation) 1582: 1320(ptr) AccessChain 34(data) 73 59 1583: 22(i16vec4) Load 1582 1584: 22(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1583 1585: 1320(ptr) AccessChain 34(data) 1581 59 Store 1585 1584 1586: 6(int) Load 8(invocation) 1587: 1313(ptr) AccessChain 34(data) 37 59 38 1588: 21(int16_t) Load 1587 1589: 21(int16_t) GroupNonUniformSMin 42 InclusiveScan 1588 1590: 1313(ptr) AccessChain 34(data) 1586 59 38 Store 1590 1589 1591: 6(int) Load 8(invocation) 1592: 1320(ptr) AccessChain 34(data) 46 59 1593: 22(i16vec4) Load 1592 1594:1319(i16vec2) VectorShuffle 1593 1593 0 1 1595:1319(i16vec2) GroupNonUniformSMin 42 InclusiveScan 1594 1596: 1313(ptr) AccessChain 34(data) 1591 59 38 1597: 21(int16_t) CompositeExtract 1595 0 Store 1596 1597 1598: 1313(ptr) AccessChain 34(data) 1591 59 55 1599: 21(int16_t) CompositeExtract 1595 1 Store 1598 1599 1600: 6(int) Load 8(invocation) 1601: 1320(ptr) AccessChain 34(data) 59 59 1602: 22(i16vec4) Load 1601 1603:1330(i16vec3) VectorShuffle 1602 1602 0 1 2 1604:1330(i16vec3) GroupNonUniformSMin 42 InclusiveScan 1603 1605: 1313(ptr) AccessChain 34(data) 1600 59 38 1606: 21(int16_t) CompositeExtract 1604 0 Store 1605 1606 1607: 1313(ptr) AccessChain 34(data) 1600 59 55 1608: 21(int16_t) CompositeExtract 1604 1 Store 1607 1608 1609: 1313(ptr) AccessChain 34(data) 1600 59 69 1610: 21(int16_t) CompositeExtract 1604 2 Store 1609 1610 1611: 6(int) Load 8(invocation) 1612: 1320(ptr) AccessChain 34(data) 73 59 1613: 22(i16vec4) Load 1612 1614: 22(i16vec4) GroupNonUniformSMin 42 InclusiveScan 1613 1615: 1320(ptr) AccessChain 34(data) 1611 59 Store 1615 1614 1616: 6(int) Load 8(invocation) 1617: 1313(ptr) AccessChain 34(data) 37 59 38 1618: 21(int16_t) Load 1617 1619: 21(int16_t) GroupNonUniformSMax 42 InclusiveScan 1618 1620: 1313(ptr) AccessChain 34(data) 1616 59 38 Store 1620 1619 1621: 6(int) Load 8(invocation) 1622: 1320(ptr) AccessChain 34(data) 46 59 1623: 22(i16vec4) Load 1622 1624:1319(i16vec2) VectorShuffle 1623 1623 0 1 1625:1319(i16vec2) GroupNonUniformSMax 42 InclusiveScan 1624 1626: 1313(ptr) AccessChain 34(data) 1621 59 38 1627: 21(int16_t) CompositeExtract 1625 0 Store 1626 1627 1628: 1313(ptr) AccessChain 34(data) 1621 59 55 1629: 21(int16_t) CompositeExtract 1625 1 Store 1628 1629 1630: 6(int) Load 8(invocation) 1631: 1320(ptr) AccessChain 34(data) 59 59 1632: 22(i16vec4) Load 1631 1633:1330(i16vec3) VectorShuffle 1632 1632 0 1 2 1634:1330(i16vec3) GroupNonUniformSMax 42 InclusiveScan 1633 1635: 1313(ptr) AccessChain 34(data) 1630 59 38 1636: 21(int16_t) CompositeExtract 1634 0 Store 1635 1636 1637: 1313(ptr) AccessChain 34(data) 1630 59 55 1638: 21(int16_t) CompositeExtract 1634 1 Store 1637 1638 1639: 1313(ptr) AccessChain 34(data) 1630 59 69 1640: 21(int16_t) CompositeExtract 1634 2 Store 1639 1640 1641: 6(int) Load 8(invocation) 1642: 1320(ptr) AccessChain 34(data) 73 59 1643: 22(i16vec4) Load 1642 1644: 22(i16vec4) GroupNonUniformSMax 42 InclusiveScan 1643 1645: 1320(ptr) AccessChain 34(data) 1641 59 Store 1645 1644 1646: 6(int) Load 8(invocation) 1647: 1313(ptr) AccessChain 34(data) 37 59 38 1648: 21(int16_t) Load 1647 1649: 21(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1648 1650: 1313(ptr) AccessChain 34(data) 1646 59 38 Store 1650 1649 1651: 6(int) Load 8(invocation) 1652: 1320(ptr) AccessChain 34(data) 46 59 1653: 22(i16vec4) Load 1652 1654:1319(i16vec2) VectorShuffle 1653 1653 0 1 1655:1319(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1654 1656: 1313(ptr) AccessChain 34(data) 1651 59 38 1657: 21(int16_t) CompositeExtract 1655 0 Store 1656 1657 1658: 1313(ptr) AccessChain 34(data) 1651 59 55 1659: 21(int16_t) CompositeExtract 1655 1 Store 1658 1659 1660: 6(int) Load 8(invocation) 1661: 1320(ptr) AccessChain 34(data) 59 59 1662: 22(i16vec4) Load 1661 1663:1330(i16vec3) VectorShuffle 1662 1662 0 1 2 1664:1330(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1663 1665: 1313(ptr) AccessChain 34(data) 1660 59 38 1666: 21(int16_t) CompositeExtract 1664 0 Store 1665 1666 1667: 1313(ptr) AccessChain 34(data) 1660 59 55 1668: 21(int16_t) CompositeExtract 1664 1 Store 1667 1668 1669: 1313(ptr) AccessChain 34(data) 1660 59 69 1670: 21(int16_t) CompositeExtract 1664 2 Store 1669 1670 1671: 6(int) Load 8(invocation) 1672: 1320(ptr) AccessChain 34(data) 73 59 1673: 22(i16vec4) Load 1672 1674: 22(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 1673 1675: 1320(ptr) AccessChain 34(data) 1671 59 Store 1675 1674 1676: 6(int) Load 8(invocation) 1677: 1313(ptr) AccessChain 34(data) 37 59 38 1678: 21(int16_t) Load 1677 1679: 21(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 1678 1680: 1313(ptr) AccessChain 34(data) 1676 59 38 Store 1680 1679 1681: 6(int) Load 8(invocation) 1682: 1320(ptr) AccessChain 34(data) 46 59 1683: 22(i16vec4) Load 1682 1684:1319(i16vec2) VectorShuffle 1683 1683 0 1 1685:1319(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 1684 1686: 1313(ptr) AccessChain 34(data) 1681 59 38 1687: 21(int16_t) CompositeExtract 1685 0 Store 1686 1687 1688: 1313(ptr) AccessChain 34(data) 1681 59 55 1689: 21(int16_t) CompositeExtract 1685 1 Store 1688 1689 1690: 6(int) Load 8(invocation) 1691: 1320(ptr) AccessChain 34(data) 59 59 1692: 22(i16vec4) Load 1691 1693:1330(i16vec3) VectorShuffle 1692 1692 0 1 2 1694:1330(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 1693 1695: 1313(ptr) AccessChain 34(data) 1690 59 38 1696: 21(int16_t) CompositeExtract 1694 0 Store 1695 1696 1697: 1313(ptr) AccessChain 34(data) 1690 59 55 1698: 21(int16_t) CompositeExtract 1694 1 Store 1697 1698 1699: 1313(ptr) AccessChain 34(data) 1690 59 69 1700: 21(int16_t) CompositeExtract 1694 2 Store 1699 1700 1701: 6(int) Load 8(invocation) 1702: 1320(ptr) AccessChain 34(data) 73 59 1703: 22(i16vec4) Load 1702 1704: 22(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 1703 1705: 1320(ptr) AccessChain 34(data) 1701 59 Store 1705 1704 1706: 6(int) Load 8(invocation) 1707: 1313(ptr) AccessChain 34(data) 37 59 38 1708: 21(int16_t) Load 1707 1709: 21(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 1708 1710: 1313(ptr) AccessChain 34(data) 1706 59 38 Store 1710 1709 1711: 6(int) Load 8(invocation) 1712: 1320(ptr) AccessChain 34(data) 46 59 1713: 22(i16vec4) Load 1712 1714:1319(i16vec2) VectorShuffle 1713 1713 0 1 1715:1319(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 1714 1716: 1313(ptr) AccessChain 34(data) 1711 59 38 1717: 21(int16_t) CompositeExtract 1715 0 Store 1716 1717 1718: 1313(ptr) AccessChain 34(data) 1711 59 55 1719: 21(int16_t) CompositeExtract 1715 1 Store 1718 1719 1720: 6(int) Load 8(invocation) 1721: 1320(ptr) AccessChain 34(data) 59 59 1722: 22(i16vec4) Load 1721 1723:1330(i16vec3) VectorShuffle 1722 1722 0 1 2 1724:1330(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 1723 1725: 1313(ptr) AccessChain 34(data) 1720 59 38 1726: 21(int16_t) CompositeExtract 1724 0 Store 1725 1726 1727: 1313(ptr) AccessChain 34(data) 1720 59 55 1728: 21(int16_t) CompositeExtract 1724 1 Store 1727 1728 1729: 1313(ptr) AccessChain 34(data) 1720 59 69 1730: 21(int16_t) CompositeExtract 1724 2 Store 1729 1730 1731: 6(int) Load 8(invocation) 1732: 1320(ptr) AccessChain 34(data) 73 59 1733: 22(i16vec4) Load 1732 1734: 22(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 1733 1735: 1320(ptr) AccessChain 34(data) 1731 59 Store 1735 1734 1736: 6(int) Load 8(invocation) 1737: 1313(ptr) AccessChain 34(data) 37 59 38 1738: 21(int16_t) Load 1737 1739: 21(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 1738 1740: 1313(ptr) AccessChain 34(data) 1736 59 38 Store 1740 1739 1741: 6(int) Load 8(invocation) 1742: 1320(ptr) AccessChain 34(data) 46 59 1743: 22(i16vec4) Load 1742 1744:1319(i16vec2) VectorShuffle 1743 1743 0 1 1745:1319(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 1744 1746: 1313(ptr) AccessChain 34(data) 1741 59 38 1747: 21(int16_t) CompositeExtract 1745 0 Store 1746 1747 1748: 1313(ptr) AccessChain 34(data) 1741 59 55 1749: 21(int16_t) CompositeExtract 1745 1 Store 1748 1749 1750: 6(int) Load 8(invocation) 1751: 1320(ptr) AccessChain 34(data) 59 59 1752: 22(i16vec4) Load 1751 1753:1330(i16vec3) VectorShuffle 1752 1752 0 1 2 1754:1330(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 1753 1755: 1313(ptr) AccessChain 34(data) 1750 59 38 1756: 21(int16_t) CompositeExtract 1754 0 Store 1755 1756 1757: 1313(ptr) AccessChain 34(data) 1750 59 55 1758: 21(int16_t) CompositeExtract 1754 1 Store 1757 1758 1759: 1313(ptr) AccessChain 34(data) 1750 59 69 1760: 21(int16_t) CompositeExtract 1754 2 Store 1759 1760 1761: 6(int) Load 8(invocation) 1762: 1320(ptr) AccessChain 34(data) 73 59 1763: 22(i16vec4) Load 1762 1764: 22(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 1763 1765: 1320(ptr) AccessChain 34(data) 1761 59 Store 1765 1764 1766: 6(int) Load 8(invocation) 1767: 1313(ptr) AccessChain 34(data) 37 59 38 1768: 21(int16_t) Load 1767 1769: 21(int16_t) GroupNonUniformIMul 42 ExclusiveScan 1768 1770: 1313(ptr) AccessChain 34(data) 1766 59 38 Store 1770 1769 1771: 6(int) Load 8(invocation) 1772: 1320(ptr) AccessChain 34(data) 46 59 1773: 22(i16vec4) Load 1772 1774:1319(i16vec2) VectorShuffle 1773 1773 0 1 1775:1319(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 1774 1776: 1313(ptr) AccessChain 34(data) 1771 59 38 1777: 21(int16_t) CompositeExtract 1775 0 Store 1776 1777 1778: 1313(ptr) AccessChain 34(data) 1771 59 55 1779: 21(int16_t) CompositeExtract 1775 1 Store 1778 1779 1780: 6(int) Load 8(invocation) 1781: 1320(ptr) AccessChain 34(data) 59 59 1782: 22(i16vec4) Load 1781 1783:1330(i16vec3) VectorShuffle 1782 1782 0 1 2 1784:1330(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 1783 1785: 1313(ptr) AccessChain 34(data) 1780 59 38 1786: 21(int16_t) CompositeExtract 1784 0 Store 1785 1786 1787: 1313(ptr) AccessChain 34(data) 1780 59 55 1788: 21(int16_t) CompositeExtract 1784 1 Store 1787 1788 1789: 1313(ptr) AccessChain 34(data) 1780 59 69 1790: 21(int16_t) CompositeExtract 1784 2 Store 1789 1790 1791: 6(int) Load 8(invocation) 1792: 1320(ptr) AccessChain 34(data) 73 59 1793: 22(i16vec4) Load 1792 1794: 22(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 1793 1795: 1320(ptr) AccessChain 34(data) 1791 59 Store 1795 1794 1796: 6(int) Load 8(invocation) 1797: 1313(ptr) AccessChain 34(data) 37 59 38 1798: 21(int16_t) Load 1797 1799: 21(int16_t) GroupNonUniformSMin 42 ExclusiveScan 1798 1800: 1313(ptr) AccessChain 34(data) 1796 59 38 Store 1800 1799 1801: 6(int) Load 8(invocation) 1802: 1320(ptr) AccessChain 34(data) 46 59 1803: 22(i16vec4) Load 1802 1804:1319(i16vec2) VectorShuffle 1803 1803 0 1 1805:1319(i16vec2) GroupNonUniformSMin 42 ExclusiveScan 1804 1806: 1313(ptr) AccessChain 34(data) 1801 59 38 1807: 21(int16_t) CompositeExtract 1805 0 Store 1806 1807 1808: 1313(ptr) AccessChain 34(data) 1801 59 55 1809: 21(int16_t) CompositeExtract 1805 1 Store 1808 1809 1810: 6(int) Load 8(invocation) 1811: 1320(ptr) AccessChain 34(data) 59 59 1812: 22(i16vec4) Load 1811 1813:1330(i16vec3) VectorShuffle 1812 1812 0 1 2 1814:1330(i16vec3) GroupNonUniformSMin 42 ExclusiveScan 1813 1815: 1313(ptr) AccessChain 34(data) 1810 59 38 1816: 21(int16_t) CompositeExtract 1814 0 Store 1815 1816 1817: 1313(ptr) AccessChain 34(data) 1810 59 55 1818: 21(int16_t) CompositeExtract 1814 1 Store 1817 1818 1819: 1313(ptr) AccessChain 34(data) 1810 59 69 1820: 21(int16_t) CompositeExtract 1814 2 Store 1819 1820 1821: 6(int) Load 8(invocation) 1822: 1320(ptr) AccessChain 34(data) 73 59 1823: 22(i16vec4) Load 1822 1824: 22(i16vec4) GroupNonUniformSMin 42 ExclusiveScan 1823 1825: 1320(ptr) AccessChain 34(data) 1821 59 Store 1825 1824 1826: 6(int) Load 8(invocation) 1827: 1313(ptr) AccessChain 34(data) 37 59 38 1828: 21(int16_t) Load 1827 1829: 21(int16_t) GroupNonUniformSMax 42 ExclusiveScan 1828 1830: 1313(ptr) AccessChain 34(data) 1826 59 38 Store 1830 1829 1831: 6(int) Load 8(invocation) 1832: 1320(ptr) AccessChain 34(data) 46 59 1833: 22(i16vec4) Load 1832 1834:1319(i16vec2) VectorShuffle 1833 1833 0 1 1835:1319(i16vec2) GroupNonUniformSMax 42 ExclusiveScan 1834 1836: 1313(ptr) AccessChain 34(data) 1831 59 38 1837: 21(int16_t) CompositeExtract 1835 0 Store 1836 1837 1838: 1313(ptr) AccessChain 34(data) 1831 59 55 1839: 21(int16_t) CompositeExtract 1835 1 Store 1838 1839 1840: 6(int) Load 8(invocation) 1841: 1320(ptr) AccessChain 34(data) 59 59 1842: 22(i16vec4) Load 1841 1843:1330(i16vec3) VectorShuffle 1842 1842 0 1 2 1844:1330(i16vec3) GroupNonUniformSMax 42 ExclusiveScan 1843 1845: 1313(ptr) AccessChain 34(data) 1840 59 38 1846: 21(int16_t) CompositeExtract 1844 0 Store 1845 1846 1847: 1313(ptr) AccessChain 34(data) 1840 59 55 1848: 21(int16_t) CompositeExtract 1844 1 Store 1847 1848 1849: 1313(ptr) AccessChain 34(data) 1840 59 69 1850: 21(int16_t) CompositeExtract 1844 2 Store 1849 1850 1851: 6(int) Load 8(invocation) 1852: 1320(ptr) AccessChain 34(data) 73 59 1853: 22(i16vec4) Load 1852 1854: 22(i16vec4) GroupNonUniformSMax 42 ExclusiveScan 1853 1855: 1320(ptr) AccessChain 34(data) 1851 59 Store 1855 1854 1856: 6(int) Load 8(invocation) 1857: 1313(ptr) AccessChain 34(data) 37 59 38 1858: 21(int16_t) Load 1857 1859: 21(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1858 1860: 1313(ptr) AccessChain 34(data) 1856 59 38 Store 1860 1859 1861: 6(int) Load 8(invocation) 1862: 1320(ptr) AccessChain 34(data) 46 59 1863: 22(i16vec4) Load 1862 1864:1319(i16vec2) VectorShuffle 1863 1863 0 1 1865:1319(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1864 1866: 1313(ptr) AccessChain 34(data) 1861 59 38 1867: 21(int16_t) CompositeExtract 1865 0 Store 1866 1867 1868: 1313(ptr) AccessChain 34(data) 1861 59 55 1869: 21(int16_t) CompositeExtract 1865 1 Store 1868 1869 1870: 6(int) Load 8(invocation) 1871: 1320(ptr) AccessChain 34(data) 59 59 1872: 22(i16vec4) Load 1871 1873:1330(i16vec3) VectorShuffle 1872 1872 0 1 2 1874:1330(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1873 1875: 1313(ptr) AccessChain 34(data) 1870 59 38 1876: 21(int16_t) CompositeExtract 1874 0 Store 1875 1876 1877: 1313(ptr) AccessChain 34(data) 1870 59 55 1878: 21(int16_t) CompositeExtract 1874 1 Store 1877 1878 1879: 1313(ptr) AccessChain 34(data) 1870 59 69 1880: 21(int16_t) CompositeExtract 1874 2 Store 1879 1880 1881: 6(int) Load 8(invocation) 1882: 1320(ptr) AccessChain 34(data) 73 59 1883: 22(i16vec4) Load 1882 1884: 22(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1883 1885: 1320(ptr) AccessChain 34(data) 1881 59 Store 1885 1884 1886: 6(int) Load 8(invocation) 1887: 1313(ptr) AccessChain 34(data) 37 59 38 1888: 21(int16_t) Load 1887 1889: 21(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1888 1890: 1313(ptr) AccessChain 34(data) 1886 59 38 Store 1890 1889 1891: 6(int) Load 8(invocation) 1892: 1320(ptr) AccessChain 34(data) 46 59 1893: 22(i16vec4) Load 1892 1894:1319(i16vec2) VectorShuffle 1893 1893 0 1 1895:1319(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1894 1896: 1313(ptr) AccessChain 34(data) 1891 59 38 1897: 21(int16_t) CompositeExtract 1895 0 Store 1896 1897 1898: 1313(ptr) AccessChain 34(data) 1891 59 55 1899: 21(int16_t) CompositeExtract 1895 1 Store 1898 1899 1900: 6(int) Load 8(invocation) 1901: 1320(ptr) AccessChain 34(data) 59 59 1902: 22(i16vec4) Load 1901 1903:1330(i16vec3) VectorShuffle 1902 1902 0 1 2 1904:1330(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1903 1905: 1313(ptr) AccessChain 34(data) 1900 59 38 1906: 21(int16_t) CompositeExtract 1904 0 Store 1905 1906 1907: 1313(ptr) AccessChain 34(data) 1900 59 55 1908: 21(int16_t) CompositeExtract 1904 1 Store 1907 1908 1909: 1313(ptr) AccessChain 34(data) 1900 59 69 1910: 21(int16_t) CompositeExtract 1904 2 Store 1909 1910 1911: 6(int) Load 8(invocation) 1912: 1320(ptr) AccessChain 34(data) 73 59 1913: 22(i16vec4) Load 1912 1914: 22(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1913 1915: 1320(ptr) AccessChain 34(data) 1911 59 Store 1915 1914 1916: 6(int) Load 8(invocation) 1917: 1313(ptr) AccessChain 34(data) 37 59 38 1918: 21(int16_t) Load 1917 1919: 21(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1918 1920: 1313(ptr) AccessChain 34(data) 1916 59 38 Store 1920 1919 1921: 6(int) Load 8(invocation) 1922: 1320(ptr) AccessChain 34(data) 46 59 1923: 22(i16vec4) Load 1922 1924:1319(i16vec2) VectorShuffle 1923 1923 0 1 1925:1319(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1924 1926: 1313(ptr) AccessChain 34(data) 1921 59 38 1927: 21(int16_t) CompositeExtract 1925 0 Store 1926 1927 1928: 1313(ptr) AccessChain 34(data) 1921 59 55 1929: 21(int16_t) CompositeExtract 1925 1 Store 1928 1929 1930: 6(int) Load 8(invocation) 1931: 1320(ptr) AccessChain 34(data) 59 59 1932: 22(i16vec4) Load 1931 1933:1330(i16vec3) VectorShuffle 1932 1932 0 1 2 1934:1330(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1933 1935: 1313(ptr) AccessChain 34(data) 1930 59 38 1936: 21(int16_t) CompositeExtract 1934 0 Store 1935 1936 1937: 1313(ptr) AccessChain 34(data) 1930 59 55 1938: 21(int16_t) CompositeExtract 1934 1 Store 1937 1938 1939: 1313(ptr) AccessChain 34(data) 1930 59 69 1940: 21(int16_t) CompositeExtract 1934 2 Store 1939 1940 1941: 6(int) Load 8(invocation) 1942: 1320(ptr) AccessChain 34(data) 73 59 1943: 22(i16vec4) Load 1942 1944: 22(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1943 1945: 1320(ptr) AccessChain 34(data) 1941 59 Store 1945 1944 1946: 6(int) Load 8(invocation) 1948: 1947(ptr) AccessChain 34(data) 37 73 38 1949: 23(int16_t) Load 1948 1950: 23(int16_t) GroupNonUniformIAdd 42 Reduce 1949 1951: 1947(ptr) AccessChain 34(data) 1946 73 38 Store 1951 1950 1952: 6(int) Load 8(invocation) 1955: 1954(ptr) AccessChain 34(data) 46 73 1956: 24(i16vec4) Load 1955 1957:1953(i16vec2) VectorShuffle 1956 1956 0 1 1958:1953(i16vec2) GroupNonUniformIAdd 42 Reduce 1957 1959: 1947(ptr) AccessChain 34(data) 1952 73 38 1960: 23(int16_t) CompositeExtract 1958 0 Store 1959 1960 1961: 1947(ptr) AccessChain 34(data) 1952 73 55 1962: 23(int16_t) CompositeExtract 1958 1 Store 1961 1962 1963: 6(int) Load 8(invocation) 1965: 1954(ptr) AccessChain 34(data) 59 73 1966: 24(i16vec4) Load 1965 1967:1964(i16vec3) VectorShuffle 1966 1966 0 1 2 1968:1964(i16vec3) GroupNonUniformIAdd 42 Reduce 1967 1969: 1947(ptr) AccessChain 34(data) 1963 73 38 1970: 23(int16_t) CompositeExtract 1968 0 Store 1969 1970 1971: 1947(ptr) AccessChain 34(data) 1963 73 55 1972: 23(int16_t) CompositeExtract 1968 1 Store 1971 1972 1973: 1947(ptr) AccessChain 34(data) 1963 73 69 1974: 23(int16_t) CompositeExtract 1968 2 Store 1973 1974 1975: 6(int) Load 8(invocation) 1976: 1954(ptr) AccessChain 34(data) 73 73 1977: 24(i16vec4) Load 1976 1978: 24(i16vec4) GroupNonUniformIAdd 42 Reduce 1977 1979: 1954(ptr) AccessChain 34(data) 1975 73 Store 1979 1978 1980: 6(int) Load 8(invocation) 1981: 1947(ptr) AccessChain 34(data) 37 73 38 1982: 23(int16_t) Load 1981 1983: 23(int16_t) GroupNonUniformIMul 42 Reduce 1982 1984: 1947(ptr) AccessChain 34(data) 1980 73 38 Store 1984 1983 1985: 6(int) Load 8(invocation) 1986: 1954(ptr) AccessChain 34(data) 46 73 1987: 24(i16vec4) Load 1986 1988:1953(i16vec2) VectorShuffle 1987 1987 0 1 1989:1953(i16vec2) GroupNonUniformIMul 42 Reduce 1988 1990: 1947(ptr) AccessChain 34(data) 1985 73 38 1991: 23(int16_t) CompositeExtract 1989 0 Store 1990 1991 1992: 1947(ptr) AccessChain 34(data) 1985 73 55 1993: 23(int16_t) CompositeExtract 1989 1 Store 1992 1993 1994: 6(int) Load 8(invocation) 1995: 1954(ptr) AccessChain 34(data) 59 73 1996: 24(i16vec4) Load 1995 1997:1964(i16vec3) VectorShuffle 1996 1996 0 1 2 1998:1964(i16vec3) GroupNonUniformIMul 42 Reduce 1997 1999: 1947(ptr) AccessChain 34(data) 1994 73 38 2000: 23(int16_t) CompositeExtract 1998 0 Store 1999 2000 2001: 1947(ptr) AccessChain 34(data) 1994 73 55 2002: 23(int16_t) CompositeExtract 1998 1 Store 2001 2002 2003: 1947(ptr) AccessChain 34(data) 1994 73 69 2004: 23(int16_t) CompositeExtract 1998 2 Store 2003 2004 2005: 6(int) Load 8(invocation) 2006: 1954(ptr) AccessChain 34(data) 73 73 2007: 24(i16vec4) Load 2006 2008: 24(i16vec4) GroupNonUniformIMul 42 Reduce 2007 2009: 1954(ptr) AccessChain 34(data) 2005 73 Store 2009 2008 2010: 6(int) Load 8(invocation) 2011: 1947(ptr) AccessChain 34(data) 37 73 38 2012: 23(int16_t) Load 2011 2013: 23(int16_t) GroupNonUniformUMin 42 Reduce 2012 2014: 1947(ptr) AccessChain 34(data) 2010 73 38 Store 2014 2013 2015: 6(int) Load 8(invocation) 2016: 1954(ptr) AccessChain 34(data) 46 73 2017: 24(i16vec4) Load 2016 2018:1953(i16vec2) VectorShuffle 2017 2017 0 1 2019:1953(i16vec2) GroupNonUniformUMin 42 Reduce 2018 2020: 1947(ptr) AccessChain 34(data) 2015 73 38 2021: 23(int16_t) CompositeExtract 2019 0 Store 2020 2021 2022: 1947(ptr) AccessChain 34(data) 2015 73 55 2023: 23(int16_t) CompositeExtract 2019 1 Store 2022 2023 2024: 6(int) Load 8(invocation) 2025: 1954(ptr) AccessChain 34(data) 59 73 2026: 24(i16vec4) Load 2025 2027:1964(i16vec3) VectorShuffle 2026 2026 0 1 2 2028:1964(i16vec3) GroupNonUniformUMin 42 Reduce 2027 2029: 1947(ptr) AccessChain 34(data) 2024 73 38 2030: 23(int16_t) CompositeExtract 2028 0 Store 2029 2030 2031: 1947(ptr) AccessChain 34(data) 2024 73 55 2032: 23(int16_t) CompositeExtract 2028 1 Store 2031 2032 2033: 1947(ptr) AccessChain 34(data) 2024 73 69 2034: 23(int16_t) CompositeExtract 2028 2 Store 2033 2034 2035: 6(int) Load 8(invocation) 2036: 1954(ptr) AccessChain 34(data) 73 73 2037: 24(i16vec4) Load 2036 2038: 24(i16vec4) GroupNonUniformUMin 42 Reduce 2037 2039: 1954(ptr) AccessChain 34(data) 2035 73 Store 2039 2038 2040: 6(int) Load 8(invocation) 2041: 1947(ptr) AccessChain 34(data) 37 73 38 2042: 23(int16_t) Load 2041 2043: 23(int16_t) GroupNonUniformUMax 42 Reduce 2042 2044: 1947(ptr) AccessChain 34(data) 2040 73 38 Store 2044 2043 2045: 6(int) Load 8(invocation) 2046: 1954(ptr) AccessChain 34(data) 46 73 2047: 24(i16vec4) Load 2046 2048:1953(i16vec2) VectorShuffle 2047 2047 0 1 2049:1953(i16vec2) GroupNonUniformUMax 42 Reduce 2048 2050: 1947(ptr) AccessChain 34(data) 2045 73 38 2051: 23(int16_t) CompositeExtract 2049 0 Store 2050 2051 2052: 1947(ptr) AccessChain 34(data) 2045 73 55 2053: 23(int16_t) CompositeExtract 2049 1 Store 2052 2053 2054: 6(int) Load 8(invocation) 2055: 1954(ptr) AccessChain 34(data) 59 73 2056: 24(i16vec4) Load 2055 2057:1964(i16vec3) VectorShuffle 2056 2056 0 1 2 2058:1964(i16vec3) GroupNonUniformUMax 42 Reduce 2057 2059: 1947(ptr) AccessChain 34(data) 2054 73 38 2060: 23(int16_t) CompositeExtract 2058 0 Store 2059 2060 2061: 1947(ptr) AccessChain 34(data) 2054 73 55 2062: 23(int16_t) CompositeExtract 2058 1 Store 2061 2062 2063: 1947(ptr) AccessChain 34(data) 2054 73 69 2064: 23(int16_t) CompositeExtract 2058 2 Store 2063 2064 2065: 6(int) Load 8(invocation) 2066: 1954(ptr) AccessChain 34(data) 73 73 2067: 24(i16vec4) Load 2066 2068: 24(i16vec4) GroupNonUniformUMax 42 Reduce 2067 2069: 1954(ptr) AccessChain 34(data) 2065 73 Store 2069 2068 2070: 6(int) Load 8(invocation) 2071: 1947(ptr) AccessChain 34(data) 37 73 38 2072: 23(int16_t) Load 2071 2073: 23(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 2072 2074: 1947(ptr) AccessChain 34(data) 2070 73 38 Store 2074 2073 2075: 6(int) Load 8(invocation) 2076: 1954(ptr) AccessChain 34(data) 46 73 2077: 24(i16vec4) Load 2076 2078:1953(i16vec2) VectorShuffle 2077 2077 0 1 2079:1953(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 2078 2080: 1947(ptr) AccessChain 34(data) 2075 73 38 2081: 23(int16_t) CompositeExtract 2079 0 Store 2080 2081 2082: 1947(ptr) AccessChain 34(data) 2075 73 55 2083: 23(int16_t) CompositeExtract 2079 1 Store 2082 2083 2084: 6(int) Load 8(invocation) 2085: 1954(ptr) AccessChain 34(data) 59 73 2086: 24(i16vec4) Load 2085 2087:1964(i16vec3) VectorShuffle 2086 2086 0 1 2 2088:1964(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 2087 2089: 1947(ptr) AccessChain 34(data) 2084 73 38 2090: 23(int16_t) CompositeExtract 2088 0 Store 2089 2090 2091: 1947(ptr) AccessChain 34(data) 2084 73 55 2092: 23(int16_t) CompositeExtract 2088 1 Store 2091 2092 2093: 1947(ptr) AccessChain 34(data) 2084 73 69 2094: 23(int16_t) CompositeExtract 2088 2 Store 2093 2094 2095: 6(int) Load 8(invocation) 2096: 1954(ptr) AccessChain 34(data) 73 73 2097: 24(i16vec4) Load 2096 2098: 24(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 2097 2099: 1954(ptr) AccessChain 34(data) 2095 73 Store 2099 2098 2100: 6(int) Load 8(invocation) 2101: 1947(ptr) AccessChain 34(data) 37 73 38 2102: 23(int16_t) Load 2101 2103: 23(int16_t) GroupNonUniformBitwiseOr 42 Reduce 2102 2104: 1947(ptr) AccessChain 34(data) 2100 73 38 Store 2104 2103 2105: 6(int) Load 8(invocation) 2106: 1954(ptr) AccessChain 34(data) 46 73 2107: 24(i16vec4) Load 2106 2108:1953(i16vec2) VectorShuffle 2107 2107 0 1 2109:1953(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 2108 2110: 1947(ptr) AccessChain 34(data) 2105 73 38 2111: 23(int16_t) CompositeExtract 2109 0 Store 2110 2111 2112: 1947(ptr) AccessChain 34(data) 2105 73 55 2113: 23(int16_t) CompositeExtract 2109 1 Store 2112 2113 2114: 6(int) Load 8(invocation) 2115: 1954(ptr) AccessChain 34(data) 59 73 2116: 24(i16vec4) Load 2115 2117:1964(i16vec3) VectorShuffle 2116 2116 0 1 2 2118:1964(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 2117 2119: 1947(ptr) AccessChain 34(data) 2114 73 38 2120: 23(int16_t) CompositeExtract 2118 0 Store 2119 2120 2121: 1947(ptr) AccessChain 34(data) 2114 73 55 2122: 23(int16_t) CompositeExtract 2118 1 Store 2121 2122 2123: 1947(ptr) AccessChain 34(data) 2114 73 69 2124: 23(int16_t) CompositeExtract 2118 2 Store 2123 2124 2125: 6(int) Load 8(invocation) 2126: 1954(ptr) AccessChain 34(data) 73 73 2127: 24(i16vec4) Load 2126 2128: 24(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 2127 2129: 1954(ptr) AccessChain 34(data) 2125 73 Store 2129 2128 2130: 6(int) Load 8(invocation) 2131: 1947(ptr) AccessChain 34(data) 37 73 38 2132: 23(int16_t) Load 2131 2133: 23(int16_t) GroupNonUniformBitwiseXor 42 Reduce 2132 2134: 1947(ptr) AccessChain 34(data) 2130 73 38 Store 2134 2133 2135: 6(int) Load 8(invocation) 2136: 1954(ptr) AccessChain 34(data) 46 73 2137: 24(i16vec4) Load 2136 2138:1953(i16vec2) VectorShuffle 2137 2137 0 1 2139:1953(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 2138 2140: 1947(ptr) AccessChain 34(data) 2135 73 38 2141: 23(int16_t) CompositeExtract 2139 0 Store 2140 2141 2142: 1947(ptr) AccessChain 34(data) 2135 73 55 2143: 23(int16_t) CompositeExtract 2139 1 Store 2142 2143 2144: 6(int) Load 8(invocation) 2145: 1954(ptr) AccessChain 34(data) 59 73 2146: 24(i16vec4) Load 2145 2147:1964(i16vec3) VectorShuffle 2146 2146 0 1 2 2148:1964(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 2147 2149: 1947(ptr) AccessChain 34(data) 2144 73 38 2150: 23(int16_t) CompositeExtract 2148 0 Store 2149 2150 2151: 1947(ptr) AccessChain 34(data) 2144 73 55 2152: 23(int16_t) CompositeExtract 2148 1 Store 2151 2152 2153: 1947(ptr) AccessChain 34(data) 2144 73 69 2154: 23(int16_t) CompositeExtract 2148 2 Store 2153 2154 2155: 6(int) Load 8(invocation) 2156: 1954(ptr) AccessChain 34(data) 73 73 2157: 24(i16vec4) Load 2156 2158: 24(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 2157 2159: 1954(ptr) AccessChain 34(data) 2155 73 Store 2159 2158 2160: 6(int) Load 8(invocation) 2161: 1947(ptr) AccessChain 34(data) 37 73 38 2162: 23(int16_t) Load 2161 2163: 23(int16_t) GroupNonUniformIAdd 42 InclusiveScan 2162 2164: 1947(ptr) AccessChain 34(data) 2160 73 38 Store 2164 2163 2165: 6(int) Load 8(invocation) 2166: 1954(ptr) AccessChain 34(data) 46 73 2167: 24(i16vec4) Load 2166 2168:1953(i16vec2) VectorShuffle 2167 2167 0 1 2169:1953(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 2168 2170: 1947(ptr) AccessChain 34(data) 2165 73 38 2171: 23(int16_t) CompositeExtract 2169 0 Store 2170 2171 2172: 1947(ptr) AccessChain 34(data) 2165 73 55 2173: 23(int16_t) CompositeExtract 2169 1 Store 2172 2173 2174: 6(int) Load 8(invocation) 2175: 1954(ptr) AccessChain 34(data) 59 73 2176: 24(i16vec4) Load 2175 2177:1964(i16vec3) VectorShuffle 2176 2176 0 1 2 2178:1964(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 2177 2179: 1947(ptr) AccessChain 34(data) 2174 73 38 2180: 23(int16_t) CompositeExtract 2178 0 Store 2179 2180 2181: 1947(ptr) AccessChain 34(data) 2174 73 55 2182: 23(int16_t) CompositeExtract 2178 1 Store 2181 2182 2183: 1947(ptr) AccessChain 34(data) 2174 73 69 2184: 23(int16_t) CompositeExtract 2178 2 Store 2183 2184 2185: 6(int) Load 8(invocation) 2186: 1954(ptr) AccessChain 34(data) 73 73 2187: 24(i16vec4) Load 2186 2188: 24(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 2187 2189: 1954(ptr) AccessChain 34(data) 2185 73 Store 2189 2188 2190: 6(int) Load 8(invocation) 2191: 1947(ptr) AccessChain 34(data) 37 73 38 2192: 23(int16_t) Load 2191 2193: 23(int16_t) GroupNonUniformIMul 42 InclusiveScan 2192 2194: 1947(ptr) AccessChain 34(data) 2190 73 38 Store 2194 2193 2195: 6(int) Load 8(invocation) 2196: 1954(ptr) AccessChain 34(data) 46 73 2197: 24(i16vec4) Load 2196 2198:1953(i16vec2) VectorShuffle 2197 2197 0 1 2199:1953(i16vec2) GroupNonUniformIMul 42 InclusiveScan 2198 2200: 1947(ptr) AccessChain 34(data) 2195 73 38 2201: 23(int16_t) CompositeExtract 2199 0 Store 2200 2201 2202: 1947(ptr) AccessChain 34(data) 2195 73 55 2203: 23(int16_t) CompositeExtract 2199 1 Store 2202 2203 2204: 6(int) Load 8(invocation) 2205: 1954(ptr) AccessChain 34(data) 59 73 2206: 24(i16vec4) Load 2205 2207:1964(i16vec3) VectorShuffle 2206 2206 0 1 2 2208:1964(i16vec3) GroupNonUniformIMul 42 InclusiveScan 2207 2209: 1947(ptr) AccessChain 34(data) 2204 73 38 2210: 23(int16_t) CompositeExtract 2208 0 Store 2209 2210 2211: 1947(ptr) AccessChain 34(data) 2204 73 55 2212: 23(int16_t) CompositeExtract 2208 1 Store 2211 2212 2213: 1947(ptr) AccessChain 34(data) 2204 73 69 2214: 23(int16_t) CompositeExtract 2208 2 Store 2213 2214 2215: 6(int) Load 8(invocation) 2216: 1954(ptr) AccessChain 34(data) 73 73 2217: 24(i16vec4) Load 2216 2218: 24(i16vec4) GroupNonUniformIMul 42 InclusiveScan 2217 2219: 1954(ptr) AccessChain 34(data) 2215 73 Store 2219 2218 2220: 6(int) Load 8(invocation) 2221: 1947(ptr) AccessChain 34(data) 37 73 38 2222: 23(int16_t) Load 2221 2223: 23(int16_t) GroupNonUniformUMin 42 InclusiveScan 2222 2224: 1947(ptr) AccessChain 34(data) 2220 73 38 Store 2224 2223 2225: 6(int) Load 8(invocation) 2226: 1954(ptr) AccessChain 34(data) 46 73 2227: 24(i16vec4) Load 2226 2228:1953(i16vec2) VectorShuffle 2227 2227 0 1 2229:1953(i16vec2) GroupNonUniformUMin 42 InclusiveScan 2228 2230: 1947(ptr) AccessChain 34(data) 2225 73 38 2231: 23(int16_t) CompositeExtract 2229 0 Store 2230 2231 2232: 1947(ptr) AccessChain 34(data) 2225 73 55 2233: 23(int16_t) CompositeExtract 2229 1 Store 2232 2233 2234: 6(int) Load 8(invocation) 2235: 1954(ptr) AccessChain 34(data) 59 73 2236: 24(i16vec4) Load 2235 2237:1964(i16vec3) VectorShuffle 2236 2236 0 1 2 2238:1964(i16vec3) GroupNonUniformUMin 42 InclusiveScan 2237 2239: 1947(ptr) AccessChain 34(data) 2234 73 38 2240: 23(int16_t) CompositeExtract 2238 0 Store 2239 2240 2241: 1947(ptr) AccessChain 34(data) 2234 73 55 2242: 23(int16_t) CompositeExtract 2238 1 Store 2241 2242 2243: 1947(ptr) AccessChain 34(data) 2234 73 69 2244: 23(int16_t) CompositeExtract 2238 2 Store 2243 2244 2245: 6(int) Load 8(invocation) 2246: 1954(ptr) AccessChain 34(data) 73 73 2247: 24(i16vec4) Load 2246 2248: 24(i16vec4) GroupNonUniformUMin 42 InclusiveScan 2247 2249: 1954(ptr) AccessChain 34(data) 2245 73 Store 2249 2248 2250: 6(int) Load 8(invocation) 2251: 1947(ptr) AccessChain 34(data) 37 73 38 2252: 23(int16_t) Load 2251 2253: 23(int16_t) GroupNonUniformUMax 42 InclusiveScan 2252 2254: 1947(ptr) AccessChain 34(data) 2250 73 38 Store 2254 2253 2255: 6(int) Load 8(invocation) 2256: 1954(ptr) AccessChain 34(data) 46 73 2257: 24(i16vec4) Load 2256 2258:1953(i16vec2) VectorShuffle 2257 2257 0 1 2259:1953(i16vec2) GroupNonUniformUMax 42 InclusiveScan 2258 2260: 1947(ptr) AccessChain 34(data) 2255 73 38 2261: 23(int16_t) CompositeExtract 2259 0 Store 2260 2261 2262: 1947(ptr) AccessChain 34(data) 2255 73 55 2263: 23(int16_t) CompositeExtract 2259 1 Store 2262 2263 2264: 6(int) Load 8(invocation) 2265: 1954(ptr) AccessChain 34(data) 59 73 2266: 24(i16vec4) Load 2265 2267:1964(i16vec3) VectorShuffle 2266 2266 0 1 2 2268:1964(i16vec3) GroupNonUniformUMax 42 InclusiveScan 2267 2269: 1947(ptr) AccessChain 34(data) 2264 73 38 2270: 23(int16_t) CompositeExtract 2268 0 Store 2269 2270 2271: 1947(ptr) AccessChain 34(data) 2264 73 55 2272: 23(int16_t) CompositeExtract 2268 1 Store 2271 2272 2273: 1947(ptr) AccessChain 34(data) 2264 73 69 2274: 23(int16_t) CompositeExtract 2268 2 Store 2273 2274 2275: 6(int) Load 8(invocation) 2276: 1954(ptr) AccessChain 34(data) 73 73 2277: 24(i16vec4) Load 2276 2278: 24(i16vec4) GroupNonUniformUMax 42 InclusiveScan 2277 2279: 1954(ptr) AccessChain 34(data) 2275 73 Store 2279 2278 2280: 6(int) Load 8(invocation) 2281: 1947(ptr) AccessChain 34(data) 37 73 38 2282: 23(int16_t) Load 2281 2283: 23(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 2282 2284: 1947(ptr) AccessChain 34(data) 2280 73 38 Store 2284 2283 2285: 6(int) Load 8(invocation) 2286: 1954(ptr) AccessChain 34(data) 46 73 2287: 24(i16vec4) Load 2286 2288:1953(i16vec2) VectorShuffle 2287 2287 0 1 2289:1953(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 2288 2290: 1947(ptr) AccessChain 34(data) 2285 73 38 2291: 23(int16_t) CompositeExtract 2289 0 Store 2290 2291 2292: 1947(ptr) AccessChain 34(data) 2285 73 55 2293: 23(int16_t) CompositeExtract 2289 1 Store 2292 2293 2294: 6(int) Load 8(invocation) 2295: 1954(ptr) AccessChain 34(data) 59 73 2296: 24(i16vec4) Load 2295 2297:1964(i16vec3) VectorShuffle 2296 2296 0 1 2 2298:1964(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 2297 2299: 1947(ptr) AccessChain 34(data) 2294 73 38 2300: 23(int16_t) CompositeExtract 2298 0 Store 2299 2300 2301: 1947(ptr) AccessChain 34(data) 2294 73 55 2302: 23(int16_t) CompositeExtract 2298 1 Store 2301 2302 2303: 1947(ptr) AccessChain 34(data) 2294 73 69 2304: 23(int16_t) CompositeExtract 2298 2 Store 2303 2304 2305: 6(int) Load 8(invocation) 2306: 1954(ptr) AccessChain 34(data) 73 73 2307: 24(i16vec4) Load 2306 2308: 24(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2307 2309: 1954(ptr) AccessChain 34(data) 2305 73 Store 2309 2308 2310: 6(int) Load 8(invocation) 2311: 1947(ptr) AccessChain 34(data) 37 73 38 2312: 23(int16_t) Load 2311 2313: 23(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2312 2314: 1947(ptr) AccessChain 34(data) 2310 73 38 Store 2314 2313 2315: 6(int) Load 8(invocation) 2316: 1954(ptr) AccessChain 34(data) 46 73 2317: 24(i16vec4) Load 2316 2318:1953(i16vec2) VectorShuffle 2317 2317 0 1 2319:1953(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2318 2320: 1947(ptr) AccessChain 34(data) 2315 73 38 2321: 23(int16_t) CompositeExtract 2319 0 Store 2320 2321 2322: 1947(ptr) AccessChain 34(data) 2315 73 55 2323: 23(int16_t) CompositeExtract 2319 1 Store 2322 2323 2324: 6(int) Load 8(invocation) 2325: 1954(ptr) AccessChain 34(data) 59 73 2326: 24(i16vec4) Load 2325 2327:1964(i16vec3) VectorShuffle 2326 2326 0 1 2 2328:1964(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2327 2329: 1947(ptr) AccessChain 34(data) 2324 73 38 2330: 23(int16_t) CompositeExtract 2328 0 Store 2329 2330 2331: 1947(ptr) AccessChain 34(data) 2324 73 55 2332: 23(int16_t) CompositeExtract 2328 1 Store 2331 2332 2333: 1947(ptr) AccessChain 34(data) 2324 73 69 2334: 23(int16_t) CompositeExtract 2328 2 Store 2333 2334 2335: 6(int) Load 8(invocation) 2336: 1954(ptr) AccessChain 34(data) 73 73 2337: 24(i16vec4) Load 2336 2338: 24(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2337 2339: 1954(ptr) AccessChain 34(data) 2335 73 Store 2339 2338 2340: 6(int) Load 8(invocation) 2341: 1947(ptr) AccessChain 34(data) 37 73 38 2342: 23(int16_t) Load 2341 2343: 23(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2342 2344: 1947(ptr) AccessChain 34(data) 2340 73 38 Store 2344 2343 2345: 6(int) Load 8(invocation) 2346: 1954(ptr) AccessChain 34(data) 46 73 2347: 24(i16vec4) Load 2346 2348:1953(i16vec2) VectorShuffle 2347 2347 0 1 2349:1953(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2348 2350: 1947(ptr) AccessChain 34(data) 2345 73 38 2351: 23(int16_t) CompositeExtract 2349 0 Store 2350 2351 2352: 1947(ptr) AccessChain 34(data) 2345 73 55 2353: 23(int16_t) CompositeExtract 2349 1 Store 2352 2353 2354: 6(int) Load 8(invocation) 2355: 1954(ptr) AccessChain 34(data) 59 73 2356: 24(i16vec4) Load 2355 2357:1964(i16vec3) VectorShuffle 2356 2356 0 1 2 2358:1964(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2357 2359: 1947(ptr) AccessChain 34(data) 2354 73 38 2360: 23(int16_t) CompositeExtract 2358 0 Store 2359 2360 2361: 1947(ptr) AccessChain 34(data) 2354 73 55 2362: 23(int16_t) CompositeExtract 2358 1 Store 2361 2362 2363: 1947(ptr) AccessChain 34(data) 2354 73 69 2364: 23(int16_t) CompositeExtract 2358 2 Store 2363 2364 2365: 6(int) Load 8(invocation) 2366: 1954(ptr) AccessChain 34(data) 73 73 2367: 24(i16vec4) Load 2366 2368: 24(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2367 2369: 1954(ptr) AccessChain 34(data) 2365 73 Store 2369 2368 2370: 6(int) Load 8(invocation) 2371: 1947(ptr) AccessChain 34(data) 37 73 38 2372: 23(int16_t) Load 2371 2373: 23(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 2372 2374: 1947(ptr) AccessChain 34(data) 2370 73 38 Store 2374 2373 2375: 6(int) Load 8(invocation) 2376: 1954(ptr) AccessChain 34(data) 46 73 2377: 24(i16vec4) Load 2376 2378:1953(i16vec2) VectorShuffle 2377 2377 0 1 2379:1953(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 2378 2380: 1947(ptr) AccessChain 34(data) 2375 73 38 2381: 23(int16_t) CompositeExtract 2379 0 Store 2380 2381 2382: 1947(ptr) AccessChain 34(data) 2375 73 55 2383: 23(int16_t) CompositeExtract 2379 1 Store 2382 2383 2384: 6(int) Load 8(invocation) 2385: 1954(ptr) AccessChain 34(data) 59 73 2386: 24(i16vec4) Load 2385 2387:1964(i16vec3) VectorShuffle 2386 2386 0 1 2 2388:1964(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 2387 2389: 1947(ptr) AccessChain 34(data) 2384 73 38 2390: 23(int16_t) CompositeExtract 2388 0 Store 2389 2390 2391: 1947(ptr) AccessChain 34(data) 2384 73 55 2392: 23(int16_t) CompositeExtract 2388 1 Store 2391 2392 2393: 1947(ptr) AccessChain 34(data) 2384 73 69 2394: 23(int16_t) CompositeExtract 2388 2 Store 2393 2394 2395: 6(int) Load 8(invocation) 2396: 1954(ptr) AccessChain 34(data) 73 73 2397: 24(i16vec4) Load 2396 2398: 24(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 2397 2399: 1954(ptr) AccessChain 34(data) 2395 73 Store 2399 2398 2400: 6(int) Load 8(invocation) 2401: 1947(ptr) AccessChain 34(data) 37 73 38 2402: 23(int16_t) Load 2401 2403: 23(int16_t) GroupNonUniformIMul 42 ExclusiveScan 2402 2404: 1947(ptr) AccessChain 34(data) 2400 73 38 Store 2404 2403 2405: 6(int) Load 8(invocation) 2406: 1954(ptr) AccessChain 34(data) 46 73 2407: 24(i16vec4) Load 2406 2408:1953(i16vec2) VectorShuffle 2407 2407 0 1 2409:1953(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 2408 2410: 1947(ptr) AccessChain 34(data) 2405 73 38 2411: 23(int16_t) CompositeExtract 2409 0 Store 2410 2411 2412: 1947(ptr) AccessChain 34(data) 2405 73 55 2413: 23(int16_t) CompositeExtract 2409 1 Store 2412 2413 2414: 6(int) Load 8(invocation) 2415: 1954(ptr) AccessChain 34(data) 59 73 2416: 24(i16vec4) Load 2415 2417:1964(i16vec3) VectorShuffle 2416 2416 0 1 2 2418:1964(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 2417 2419: 1947(ptr) AccessChain 34(data) 2414 73 38 2420: 23(int16_t) CompositeExtract 2418 0 Store 2419 2420 2421: 1947(ptr) AccessChain 34(data) 2414 73 55 2422: 23(int16_t) CompositeExtract 2418 1 Store 2421 2422 2423: 1947(ptr) AccessChain 34(data) 2414 73 69 2424: 23(int16_t) CompositeExtract 2418 2 Store 2423 2424 2425: 6(int) Load 8(invocation) 2426: 1954(ptr) AccessChain 34(data) 73 73 2427: 24(i16vec4) Load 2426 2428: 24(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 2427 2429: 1954(ptr) AccessChain 34(data) 2425 73 Store 2429 2428 2430: 6(int) Load 8(invocation) 2431: 1947(ptr) AccessChain 34(data) 37 73 38 2432: 23(int16_t) Load 2431 2433: 23(int16_t) GroupNonUniformUMin 42 ExclusiveScan 2432 2434: 1947(ptr) AccessChain 34(data) 2430 73 38 Store 2434 2433 2435: 6(int) Load 8(invocation) 2436: 1954(ptr) AccessChain 34(data) 46 73 2437: 24(i16vec4) Load 2436 2438:1953(i16vec2) VectorShuffle 2437 2437 0 1 2439:1953(i16vec2) GroupNonUniformUMin 42 ExclusiveScan 2438 2440: 1947(ptr) AccessChain 34(data) 2435 73 38 2441: 23(int16_t) CompositeExtract 2439 0 Store 2440 2441 2442: 1947(ptr) AccessChain 34(data) 2435 73 55 2443: 23(int16_t) CompositeExtract 2439 1 Store 2442 2443 2444: 6(int) Load 8(invocation) 2445: 1954(ptr) AccessChain 34(data) 59 73 2446: 24(i16vec4) Load 2445 2447:1964(i16vec3) VectorShuffle 2446 2446 0 1 2 2448:1964(i16vec3) GroupNonUniformUMin 42 ExclusiveScan 2447 2449: 1947(ptr) AccessChain 34(data) 2444 73 38 2450: 23(int16_t) CompositeExtract 2448 0 Store 2449 2450 2451: 1947(ptr) AccessChain 34(data) 2444 73 55 2452: 23(int16_t) CompositeExtract 2448 1 Store 2451 2452 2453: 1947(ptr) AccessChain 34(data) 2444 73 69 2454: 23(int16_t) CompositeExtract 2448 2 Store 2453 2454 2455: 6(int) Load 8(invocation) 2456: 1954(ptr) AccessChain 34(data) 73 73 2457: 24(i16vec4) Load 2456 2458: 24(i16vec4) GroupNonUniformUMin 42 ExclusiveScan 2457 2459: 1954(ptr) AccessChain 34(data) 2455 73 Store 2459 2458 2460: 6(int) Load 8(invocation) 2461: 1947(ptr) AccessChain 34(data) 37 73 38 2462: 23(int16_t) Load 2461 2463: 23(int16_t) GroupNonUniformUMax 42 ExclusiveScan 2462 2464: 1947(ptr) AccessChain 34(data) 2460 73 38 Store 2464 2463 2465: 6(int) Load 8(invocation) 2466: 1954(ptr) AccessChain 34(data) 46 73 2467: 24(i16vec4) Load 2466 2468:1953(i16vec2) VectorShuffle 2467 2467 0 1 2469:1953(i16vec2) GroupNonUniformUMax 42 ExclusiveScan 2468 2470: 1947(ptr) AccessChain 34(data) 2465 73 38 2471: 23(int16_t) CompositeExtract 2469 0 Store 2470 2471 2472: 1947(ptr) AccessChain 34(data) 2465 73 55 2473: 23(int16_t) CompositeExtract 2469 1 Store 2472 2473 2474: 6(int) Load 8(invocation) 2475: 1954(ptr) AccessChain 34(data) 59 73 2476: 24(i16vec4) Load 2475 2477:1964(i16vec3) VectorShuffle 2476 2476 0 1 2 2478:1964(i16vec3) GroupNonUniformUMax 42 ExclusiveScan 2477 2479: 1947(ptr) AccessChain 34(data) 2474 73 38 2480: 23(int16_t) CompositeExtract 2478 0 Store 2479 2480 2481: 1947(ptr) AccessChain 34(data) 2474 73 55 2482: 23(int16_t) CompositeExtract 2478 1 Store 2481 2482 2483: 1947(ptr) AccessChain 34(data) 2474 73 69 2484: 23(int16_t) CompositeExtract 2478 2 Store 2483 2484 2485: 6(int) Load 8(invocation) 2486: 1954(ptr) AccessChain 34(data) 73 73 2487: 24(i16vec4) Load 2486 2488: 24(i16vec4) GroupNonUniformUMax 42 ExclusiveScan 2487 2489: 1954(ptr) AccessChain 34(data) 2485 73 Store 2489 2488 2490: 6(int) Load 8(invocation) 2491: 1947(ptr) AccessChain 34(data) 37 73 38 2492: 23(int16_t) Load 2491 2493: 23(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2492 2494: 1947(ptr) AccessChain 34(data) 2490 73 38 Store 2494 2493 2495: 6(int) Load 8(invocation) 2496: 1954(ptr) AccessChain 34(data) 46 73 2497: 24(i16vec4) Load 2496 2498:1953(i16vec2) VectorShuffle 2497 2497 0 1 2499:1953(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2498 2500: 1947(ptr) AccessChain 34(data) 2495 73 38 2501: 23(int16_t) CompositeExtract 2499 0 Store 2500 2501 2502: 1947(ptr) AccessChain 34(data) 2495 73 55 2503: 23(int16_t) CompositeExtract 2499 1 Store 2502 2503 2504: 6(int) Load 8(invocation) 2505: 1954(ptr) AccessChain 34(data) 59 73 2506: 24(i16vec4) Load 2505 2507:1964(i16vec3) VectorShuffle 2506 2506 0 1 2 2508:1964(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2507 2509: 1947(ptr) AccessChain 34(data) 2504 73 38 2510: 23(int16_t) CompositeExtract 2508 0 Store 2509 2510 2511: 1947(ptr) AccessChain 34(data) 2504 73 55 2512: 23(int16_t) CompositeExtract 2508 1 Store 2511 2512 2513: 1947(ptr) AccessChain 34(data) 2504 73 69 2514: 23(int16_t) CompositeExtract 2508 2 Store 2513 2514 2515: 6(int) Load 8(invocation) 2516: 1954(ptr) AccessChain 34(data) 73 73 2517: 24(i16vec4) Load 2516 2518: 24(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2517 2519: 1954(ptr) AccessChain 34(data) 2515 73 Store 2519 2518 2520: 6(int) Load 8(invocation) 2521: 1947(ptr) AccessChain 34(data) 37 73 38 2522: 23(int16_t) Load 2521 2523: 23(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2522 2524: 1947(ptr) AccessChain 34(data) 2520 73 38 Store 2524 2523 2525: 6(int) Load 8(invocation) 2526: 1954(ptr) AccessChain 34(data) 46 73 2527: 24(i16vec4) Load 2526 2528:1953(i16vec2) VectorShuffle 2527 2527 0 1 2529:1953(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2528 2530: 1947(ptr) AccessChain 34(data) 2525 73 38 2531: 23(int16_t) CompositeExtract 2529 0 Store 2530 2531 2532: 1947(ptr) AccessChain 34(data) 2525 73 55 2533: 23(int16_t) CompositeExtract 2529 1 Store 2532 2533 2534: 6(int) Load 8(invocation) 2535: 1954(ptr) AccessChain 34(data) 59 73 2536: 24(i16vec4) Load 2535 2537:1964(i16vec3) VectorShuffle 2536 2536 0 1 2 2538:1964(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2537 2539: 1947(ptr) AccessChain 34(data) 2534 73 38 2540: 23(int16_t) CompositeExtract 2538 0 Store 2539 2540 2541: 1947(ptr) AccessChain 34(data) 2534 73 55 2542: 23(int16_t) CompositeExtract 2538 1 Store 2541 2542 2543: 1947(ptr) AccessChain 34(data) 2534 73 69 2544: 23(int16_t) CompositeExtract 2538 2 Store 2543 2544 2545: 6(int) Load 8(invocation) 2546: 1954(ptr) AccessChain 34(data) 73 73 2547: 24(i16vec4) Load 2546 2548: 24(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2547 2549: 1954(ptr) AccessChain 34(data) 2545 73 Store 2549 2548 2550: 6(int) Load 8(invocation) 2551: 1947(ptr) AccessChain 34(data) 37 73 38 2552: 23(int16_t) Load 2551 2553: 23(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2552 2554: 1947(ptr) AccessChain 34(data) 2550 73 38 Store 2554 2553 2555: 6(int) Load 8(invocation) 2556: 1954(ptr) AccessChain 34(data) 46 73 2557: 24(i16vec4) Load 2556 2558:1953(i16vec2) VectorShuffle 2557 2557 0 1 2559:1953(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2558 2560: 1947(ptr) AccessChain 34(data) 2555 73 38 2561: 23(int16_t) CompositeExtract 2559 0 Store 2560 2561 2562: 1947(ptr) AccessChain 34(data) 2555 73 55 2563: 23(int16_t) CompositeExtract 2559 1 Store 2562 2563 2564: 6(int) Load 8(invocation) 2565: 1954(ptr) AccessChain 34(data) 59 73 2566: 24(i16vec4) Load 2565 2567:1964(i16vec3) VectorShuffle 2566 2566 0 1 2 2568:1964(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2567 2569: 1947(ptr) AccessChain 34(data) 2564 73 38 2570: 23(int16_t) CompositeExtract 2568 0 Store 2569 2570 2571: 1947(ptr) AccessChain 34(data) 2564 73 55 2572: 23(int16_t) CompositeExtract 2568 1 Store 2571 2572 2573: 1947(ptr) AccessChain 34(data) 2564 73 69 2574: 23(int16_t) CompositeExtract 2568 2 Store 2573 2574 2575: 6(int) Load 8(invocation) 2576: 1954(ptr) AccessChain 34(data) 73 73 2577: 24(i16vec4) Load 2576 2578: 24(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2577 2579: 1954(ptr) AccessChain 34(data) 2575 73 Store 2579 2578 2580: 6(int) Load 8(invocation) 2583: 2582(ptr) AccessChain 34(data) 37 2581 38 2584: 25(int64_t) Load 2583 2585: 25(int64_t) GroupNonUniformIAdd 42 Reduce 2584 2586: 2582(ptr) AccessChain 34(data) 2580 2581 38 Store 2586 2585 2587: 6(int) Load 8(invocation) 2590: 2589(ptr) AccessChain 34(data) 46 2581 2591: 26(i64vec4) Load 2590 2592:2588(i64vec2) VectorShuffle 2591 2591 0 1 2593:2588(i64vec2) GroupNonUniformIAdd 42 Reduce 2592 2594: 2582(ptr) AccessChain 34(data) 2587 2581 38 2595: 25(int64_t) CompositeExtract 2593 0 Store 2594 2595 2596: 2582(ptr) AccessChain 34(data) 2587 2581 55 2597: 25(int64_t) CompositeExtract 2593 1 Store 2596 2597 2598: 6(int) Load 8(invocation) 2600: 2589(ptr) AccessChain 34(data) 59 2581 2601: 26(i64vec4) Load 2600 2602:2599(i64vec3) VectorShuffle 2601 2601 0 1 2 2603:2599(i64vec3) GroupNonUniformIAdd 42 Reduce 2602 2604: 2582(ptr) AccessChain 34(data) 2598 2581 38 2605: 25(int64_t) CompositeExtract 2603 0 Store 2604 2605 2606: 2582(ptr) AccessChain 34(data) 2598 2581 55 2607: 25(int64_t) CompositeExtract 2603 1 Store 2606 2607 2608: 2582(ptr) AccessChain 34(data) 2598 2581 69 2609: 25(int64_t) CompositeExtract 2603 2 Store 2608 2609 2610: 6(int) Load 8(invocation) 2611: 2589(ptr) AccessChain 34(data) 73 2581 2612: 26(i64vec4) Load 2611 2613: 26(i64vec4) GroupNonUniformIAdd 42 Reduce 2612 2614: 2589(ptr) AccessChain 34(data) 2610 2581 Store 2614 2613 2615: 6(int) Load 8(invocation) 2616: 2582(ptr) AccessChain 34(data) 37 2581 38 2617: 25(int64_t) Load 2616 2618: 25(int64_t) GroupNonUniformIMul 42 Reduce 2617 2619: 2582(ptr) AccessChain 34(data) 2615 2581 38 Store 2619 2618 2620: 6(int) Load 8(invocation) 2621: 2589(ptr) AccessChain 34(data) 46 2581 2622: 26(i64vec4) Load 2621 2623:2588(i64vec2) VectorShuffle 2622 2622 0 1 2624:2588(i64vec2) GroupNonUniformIMul 42 Reduce 2623 2625: 2582(ptr) AccessChain 34(data) 2620 2581 38 2626: 25(int64_t) CompositeExtract 2624 0 Store 2625 2626 2627: 2582(ptr) AccessChain 34(data) 2620 2581 55 2628: 25(int64_t) CompositeExtract 2624 1 Store 2627 2628 2629: 6(int) Load 8(invocation) 2630: 2589(ptr) AccessChain 34(data) 59 2581 2631: 26(i64vec4) Load 2630 2632:2599(i64vec3) VectorShuffle 2631 2631 0 1 2 2633:2599(i64vec3) GroupNonUniformIMul 42 Reduce 2632 2634: 2582(ptr) AccessChain 34(data) 2629 2581 38 2635: 25(int64_t) CompositeExtract 2633 0 Store 2634 2635 2636: 2582(ptr) AccessChain 34(data) 2629 2581 55 2637: 25(int64_t) CompositeExtract 2633 1 Store 2636 2637 2638: 2582(ptr) AccessChain 34(data) 2629 2581 69 2639: 25(int64_t) CompositeExtract 2633 2 Store 2638 2639 2640: 6(int) Load 8(invocation) 2641: 2589(ptr) AccessChain 34(data) 73 2581 2642: 26(i64vec4) Load 2641 2643: 26(i64vec4) GroupNonUniformIMul 42 Reduce 2642 2644: 2589(ptr) AccessChain 34(data) 2640 2581 Store 2644 2643 2645: 6(int) Load 8(invocation) 2646: 2582(ptr) AccessChain 34(data) 37 2581 38 2647: 25(int64_t) Load 2646 2648: 25(int64_t) GroupNonUniformSMin 42 Reduce 2647 2649: 2582(ptr) AccessChain 34(data) 2645 2581 38 Store 2649 2648 2650: 6(int) Load 8(invocation) 2651: 2589(ptr) AccessChain 34(data) 46 2581 2652: 26(i64vec4) Load 2651 2653:2588(i64vec2) VectorShuffle 2652 2652 0 1 2654:2588(i64vec2) GroupNonUniformSMin 42 Reduce 2653 2655: 2582(ptr) AccessChain 34(data) 2650 2581 38 2656: 25(int64_t) CompositeExtract 2654 0 Store 2655 2656 2657: 2582(ptr) AccessChain 34(data) 2650 2581 55 2658: 25(int64_t) CompositeExtract 2654 1 Store 2657 2658 2659: 6(int) Load 8(invocation) 2660: 2589(ptr) AccessChain 34(data) 59 2581 2661: 26(i64vec4) Load 2660 2662:2599(i64vec3) VectorShuffle 2661 2661 0 1 2 2663:2599(i64vec3) GroupNonUniformSMin 42 Reduce 2662 2664: 2582(ptr) AccessChain 34(data) 2659 2581 38 2665: 25(int64_t) CompositeExtract 2663 0 Store 2664 2665 2666: 2582(ptr) AccessChain 34(data) 2659 2581 55 2667: 25(int64_t) CompositeExtract 2663 1 Store 2666 2667 2668: 2582(ptr) AccessChain 34(data) 2659 2581 69 2669: 25(int64_t) CompositeExtract 2663 2 Store 2668 2669 2670: 6(int) Load 8(invocation) 2671: 2589(ptr) AccessChain 34(data) 73 2581 2672: 26(i64vec4) Load 2671 2673: 26(i64vec4) GroupNonUniformSMin 42 Reduce 2672 2674: 2589(ptr) AccessChain 34(data) 2670 2581 Store 2674 2673 2675: 6(int) Load 8(invocation) 2676: 2582(ptr) AccessChain 34(data) 37 2581 38 2677: 25(int64_t) Load 2676 2678: 25(int64_t) GroupNonUniformSMax 42 Reduce 2677 2679: 2582(ptr) AccessChain 34(data) 2675 2581 38 Store 2679 2678 2680: 6(int) Load 8(invocation) 2681: 2589(ptr) AccessChain 34(data) 46 2581 2682: 26(i64vec4) Load 2681 2683:2588(i64vec2) VectorShuffle 2682 2682 0 1 2684:2588(i64vec2) GroupNonUniformSMax 42 Reduce 2683 2685: 2582(ptr) AccessChain 34(data) 2680 2581 38 2686: 25(int64_t) CompositeExtract 2684 0 Store 2685 2686 2687: 2582(ptr) AccessChain 34(data) 2680 2581 55 2688: 25(int64_t) CompositeExtract 2684 1 Store 2687 2688 2689: 6(int) Load 8(invocation) 2690: 2589(ptr) AccessChain 34(data) 59 2581 2691: 26(i64vec4) Load 2690 2692:2599(i64vec3) VectorShuffle 2691 2691 0 1 2 2693:2599(i64vec3) GroupNonUniformSMax 42 Reduce 2692 2694: 2582(ptr) AccessChain 34(data) 2689 2581 38 2695: 25(int64_t) CompositeExtract 2693 0 Store 2694 2695 2696: 2582(ptr) AccessChain 34(data) 2689 2581 55 2697: 25(int64_t) CompositeExtract 2693 1 Store 2696 2697 2698: 2582(ptr) AccessChain 34(data) 2689 2581 69 2699: 25(int64_t) CompositeExtract 2693 2 Store 2698 2699 2700: 6(int) Load 8(invocation) 2701: 2589(ptr) AccessChain 34(data) 73 2581 2702: 26(i64vec4) Load 2701 2703: 26(i64vec4) GroupNonUniformSMax 42 Reduce 2702 2704: 2589(ptr) AccessChain 34(data) 2700 2581 Store 2704 2703 2705: 6(int) Load 8(invocation) 2706: 2582(ptr) AccessChain 34(data) 37 2581 38 2707: 25(int64_t) Load 2706 2708: 25(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2707 2709: 2582(ptr) AccessChain 34(data) 2705 2581 38 Store 2709 2708 2710: 6(int) Load 8(invocation) 2711: 2589(ptr) AccessChain 34(data) 46 2581 2712: 26(i64vec4) Load 2711 2713:2588(i64vec2) VectorShuffle 2712 2712 0 1 2714:2588(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2713 2715: 2582(ptr) AccessChain 34(data) 2710 2581 38 2716: 25(int64_t) CompositeExtract 2714 0 Store 2715 2716 2717: 2582(ptr) AccessChain 34(data) 2710 2581 55 2718: 25(int64_t) CompositeExtract 2714 1 Store 2717 2718 2719: 6(int) Load 8(invocation) 2720: 2589(ptr) AccessChain 34(data) 59 2581 2721: 26(i64vec4) Load 2720 2722:2599(i64vec3) VectorShuffle 2721 2721 0 1 2 2723:2599(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2722 2724: 2582(ptr) AccessChain 34(data) 2719 2581 38 2725: 25(int64_t) CompositeExtract 2723 0 Store 2724 2725 2726: 2582(ptr) AccessChain 34(data) 2719 2581 55 2727: 25(int64_t) CompositeExtract 2723 1 Store 2726 2727 2728: 2582(ptr) AccessChain 34(data) 2719 2581 69 2729: 25(int64_t) CompositeExtract 2723 2 Store 2728 2729 2730: 6(int) Load 8(invocation) 2731: 2589(ptr) AccessChain 34(data) 73 2581 2732: 26(i64vec4) Load 2731 2733: 26(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2732 2734: 2589(ptr) AccessChain 34(data) 2730 2581 Store 2734 2733 2735: 6(int) Load 8(invocation) 2736: 2582(ptr) AccessChain 34(data) 37 2581 38 2737: 25(int64_t) Load 2736 2738: 25(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2737 2739: 2582(ptr) AccessChain 34(data) 2735 2581 38 Store 2739 2738 2740: 6(int) Load 8(invocation) 2741: 2589(ptr) AccessChain 34(data) 46 2581 2742: 26(i64vec4) Load 2741 2743:2588(i64vec2) VectorShuffle 2742 2742 0 1 2744:2588(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2743 2745: 2582(ptr) AccessChain 34(data) 2740 2581 38 2746: 25(int64_t) CompositeExtract 2744 0 Store 2745 2746 2747: 2582(ptr) AccessChain 34(data) 2740 2581 55 2748: 25(int64_t) CompositeExtract 2744 1 Store 2747 2748 2749: 6(int) Load 8(invocation) 2750: 2589(ptr) AccessChain 34(data) 59 2581 2751: 26(i64vec4) Load 2750 2752:2599(i64vec3) VectorShuffle 2751 2751 0 1 2 2753:2599(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2752 2754: 2582(ptr) AccessChain 34(data) 2749 2581 38 2755: 25(int64_t) CompositeExtract 2753 0 Store 2754 2755 2756: 2582(ptr) AccessChain 34(data) 2749 2581 55 2757: 25(int64_t) CompositeExtract 2753 1 Store 2756 2757 2758: 2582(ptr) AccessChain 34(data) 2749 2581 69 2759: 25(int64_t) CompositeExtract 2753 2 Store 2758 2759 2760: 6(int) Load 8(invocation) 2761: 2589(ptr) AccessChain 34(data) 73 2581 2762: 26(i64vec4) Load 2761 2763: 26(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2762 2764: 2589(ptr) AccessChain 34(data) 2760 2581 Store 2764 2763 2765: 6(int) Load 8(invocation) 2766: 2582(ptr) AccessChain 34(data) 37 2581 38 2767: 25(int64_t) Load 2766 2768: 25(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2767 2769: 2582(ptr) AccessChain 34(data) 2765 2581 38 Store 2769 2768 2770: 6(int) Load 8(invocation) 2771: 2589(ptr) AccessChain 34(data) 46 2581 2772: 26(i64vec4) Load 2771 2773:2588(i64vec2) VectorShuffle 2772 2772 0 1 2774:2588(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2773 2775: 2582(ptr) AccessChain 34(data) 2770 2581 38 2776: 25(int64_t) CompositeExtract 2774 0 Store 2775 2776 2777: 2582(ptr) AccessChain 34(data) 2770 2581 55 2778: 25(int64_t) CompositeExtract 2774 1 Store 2777 2778 2779: 6(int) Load 8(invocation) 2780: 2589(ptr) AccessChain 34(data) 59 2581 2781: 26(i64vec4) Load 2780 2782:2599(i64vec3) VectorShuffle 2781 2781 0 1 2 2783:2599(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2782 2784: 2582(ptr) AccessChain 34(data) 2779 2581 38 2785: 25(int64_t) CompositeExtract 2783 0 Store 2784 2785 2786: 2582(ptr) AccessChain 34(data) 2779 2581 55 2787: 25(int64_t) CompositeExtract 2783 1 Store 2786 2787 2788: 2582(ptr) AccessChain 34(data) 2779 2581 69 2789: 25(int64_t) CompositeExtract 2783 2 Store 2788 2789 2790: 6(int) Load 8(invocation) 2791: 2589(ptr) AccessChain 34(data) 73 2581 2792: 26(i64vec4) Load 2791 2793: 26(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2792 2794: 2589(ptr) AccessChain 34(data) 2790 2581 Store 2794 2793 2795: 6(int) Load 8(invocation) 2796: 2582(ptr) AccessChain 34(data) 37 2581 38 2797: 25(int64_t) Load 2796 2798: 25(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2797 2799: 2582(ptr) AccessChain 34(data) 2795 2581 38 Store 2799 2798 2800: 6(int) Load 8(invocation) 2801: 2589(ptr) AccessChain 34(data) 46 2581 2802: 26(i64vec4) Load 2801 2803:2588(i64vec2) VectorShuffle 2802 2802 0 1 2804:2588(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2803 2805: 2582(ptr) AccessChain 34(data) 2800 2581 38 2806: 25(int64_t) CompositeExtract 2804 0 Store 2805 2806 2807: 2582(ptr) AccessChain 34(data) 2800 2581 55 2808: 25(int64_t) CompositeExtract 2804 1 Store 2807 2808 2809: 6(int) Load 8(invocation) 2810: 2589(ptr) AccessChain 34(data) 59 2581 2811: 26(i64vec4) Load 2810 2812:2599(i64vec3) VectorShuffle 2811 2811 0 1 2 2813:2599(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2812 2814: 2582(ptr) AccessChain 34(data) 2809 2581 38 2815: 25(int64_t) CompositeExtract 2813 0 Store 2814 2815 2816: 2582(ptr) AccessChain 34(data) 2809 2581 55 2817: 25(int64_t) CompositeExtract 2813 1 Store 2816 2817 2818: 2582(ptr) AccessChain 34(data) 2809 2581 69 2819: 25(int64_t) CompositeExtract 2813 2 Store 2818 2819 2820: 6(int) Load 8(invocation) 2821: 2589(ptr) AccessChain 34(data) 73 2581 2822: 26(i64vec4) Load 2821 2823: 26(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 2822 2824: 2589(ptr) AccessChain 34(data) 2820 2581 Store 2824 2823 2825: 6(int) Load 8(invocation) 2826: 2582(ptr) AccessChain 34(data) 37 2581 38 2827: 25(int64_t) Load 2826 2828: 25(int64_t) GroupNonUniformIMul 42 InclusiveScan 2827 2829: 2582(ptr) AccessChain 34(data) 2825 2581 38 Store 2829 2828 2830: 6(int) Load 8(invocation) 2831: 2589(ptr) AccessChain 34(data) 46 2581 2832: 26(i64vec4) Load 2831 2833:2588(i64vec2) VectorShuffle 2832 2832 0 1 2834:2588(i64vec2) GroupNonUniformIMul 42 InclusiveScan 2833 2835: 2582(ptr) AccessChain 34(data) 2830 2581 38 2836: 25(int64_t) CompositeExtract 2834 0 Store 2835 2836 2837: 2582(ptr) AccessChain 34(data) 2830 2581 55 2838: 25(int64_t) CompositeExtract 2834 1 Store 2837 2838 2839: 6(int) Load 8(invocation) 2840: 2589(ptr) AccessChain 34(data) 59 2581 2841: 26(i64vec4) Load 2840 2842:2599(i64vec3) VectorShuffle 2841 2841 0 1 2 2843:2599(i64vec3) GroupNonUniformIMul 42 InclusiveScan 2842 2844: 2582(ptr) AccessChain 34(data) 2839 2581 38 2845: 25(int64_t) CompositeExtract 2843 0 Store 2844 2845 2846: 2582(ptr) AccessChain 34(data) 2839 2581 55 2847: 25(int64_t) CompositeExtract 2843 1 Store 2846 2847 2848: 2582(ptr) AccessChain 34(data) 2839 2581 69 2849: 25(int64_t) CompositeExtract 2843 2 Store 2848 2849 2850: 6(int) Load 8(invocation) 2851: 2589(ptr) AccessChain 34(data) 73 2581 2852: 26(i64vec4) Load 2851 2853: 26(i64vec4) GroupNonUniformIMul 42 InclusiveScan 2852 2854: 2589(ptr) AccessChain 34(data) 2850 2581 Store 2854 2853 2855: 6(int) Load 8(invocation) 2856: 2582(ptr) AccessChain 34(data) 37 2581 38 2857: 25(int64_t) Load 2856 2858: 25(int64_t) GroupNonUniformSMin 42 InclusiveScan 2857 2859: 2582(ptr) AccessChain 34(data) 2855 2581 38 Store 2859 2858 2860: 6(int) Load 8(invocation) 2861: 2589(ptr) AccessChain 34(data) 46 2581 2862: 26(i64vec4) Load 2861 2863:2588(i64vec2) VectorShuffle 2862 2862 0 1 2864:2588(i64vec2) GroupNonUniformSMin 42 InclusiveScan 2863 2865: 2582(ptr) AccessChain 34(data) 2860 2581 38 2866: 25(int64_t) CompositeExtract 2864 0 Store 2865 2866 2867: 2582(ptr) AccessChain 34(data) 2860 2581 55 2868: 25(int64_t) CompositeExtract 2864 1 Store 2867 2868 2869: 6(int) Load 8(invocation) 2870: 2589(ptr) AccessChain 34(data) 59 2581 2871: 26(i64vec4) Load 2870 2872:2599(i64vec3) VectorShuffle 2871 2871 0 1 2 2873:2599(i64vec3) GroupNonUniformSMin 42 InclusiveScan 2872 2874: 2582(ptr) AccessChain 34(data) 2869 2581 38 2875: 25(int64_t) CompositeExtract 2873 0 Store 2874 2875 2876: 2582(ptr) AccessChain 34(data) 2869 2581 55 2877: 25(int64_t) CompositeExtract 2873 1 Store 2876 2877 2878: 2582(ptr) AccessChain 34(data) 2869 2581 69 2879: 25(int64_t) CompositeExtract 2873 2 Store 2878 2879 2880: 6(int) Load 8(invocation) 2881: 2589(ptr) AccessChain 34(data) 73 2581 2882: 26(i64vec4) Load 2881 2883: 26(i64vec4) GroupNonUniformSMin 42 InclusiveScan 2882 2884: 2589(ptr) AccessChain 34(data) 2880 2581 Store 2884 2883 2885: 6(int) Load 8(invocation) 2886: 2582(ptr) AccessChain 34(data) 37 2581 38 2887: 25(int64_t) Load 2886 2888: 25(int64_t) GroupNonUniformSMax 42 InclusiveScan 2887 2889: 2582(ptr) AccessChain 34(data) 2885 2581 38 Store 2889 2888 2890: 6(int) Load 8(invocation) 2891: 2589(ptr) AccessChain 34(data) 46 2581 2892: 26(i64vec4) Load 2891 2893:2588(i64vec2) VectorShuffle 2892 2892 0 1 2894:2588(i64vec2) GroupNonUniformSMax 42 InclusiveScan 2893 2895: 2582(ptr) AccessChain 34(data) 2890 2581 38 2896: 25(int64_t) CompositeExtract 2894 0 Store 2895 2896 2897: 2582(ptr) AccessChain 34(data) 2890 2581 55 2898: 25(int64_t) CompositeExtract 2894 1 Store 2897 2898 2899: 6(int) Load 8(invocation) 2900: 2589(ptr) AccessChain 34(data) 59 2581 2901: 26(i64vec4) Load 2900 2902:2599(i64vec3) VectorShuffle 2901 2901 0 1 2 2903:2599(i64vec3) GroupNonUniformSMax 42 InclusiveScan 2902 2904: 2582(ptr) AccessChain 34(data) 2899 2581 38 2905: 25(int64_t) CompositeExtract 2903 0 Store 2904 2905 2906: 2582(ptr) AccessChain 34(data) 2899 2581 55 2907: 25(int64_t) CompositeExtract 2903 1 Store 2906 2907 2908: 2582(ptr) AccessChain 34(data) 2899 2581 69 2909: 25(int64_t) CompositeExtract 2903 2 Store 2908 2909 2910: 6(int) Load 8(invocation) 2911: 2589(ptr) AccessChain 34(data) 73 2581 2912: 26(i64vec4) Load 2911 2913: 26(i64vec4) GroupNonUniformSMax 42 InclusiveScan 2912 2914: 2589(ptr) AccessChain 34(data) 2910 2581 Store 2914 2913 2915: 6(int) Load 8(invocation) 2916: 2582(ptr) AccessChain 34(data) 37 2581 38 2917: 25(int64_t) Load 2916 2918: 25(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 2917 2919: 2582(ptr) AccessChain 34(data) 2915 2581 38 Store 2919 2918 2920: 6(int) Load 8(invocation) 2921: 2589(ptr) AccessChain 34(data) 46 2581 2922: 26(i64vec4) Load 2921 2923:2588(i64vec2) VectorShuffle 2922 2922 0 1 2924:2588(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 2923 2925: 2582(ptr) AccessChain 34(data) 2920 2581 38 2926: 25(int64_t) CompositeExtract 2924 0 Store 2925 2926 2927: 2582(ptr) AccessChain 34(data) 2920 2581 55 2928: 25(int64_t) CompositeExtract 2924 1 Store 2927 2928 2929: 6(int) Load 8(invocation) 2930: 2589(ptr) AccessChain 34(data) 59 2581 2931: 26(i64vec4) Load 2930 2932:2599(i64vec3) VectorShuffle 2931 2931 0 1 2 2933:2599(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 2932 2934: 2582(ptr) AccessChain 34(data) 2929 2581 38 2935: 25(int64_t) CompositeExtract 2933 0 Store 2934 2935 2936: 2582(ptr) AccessChain 34(data) 2929 2581 55 2937: 25(int64_t) CompositeExtract 2933 1 Store 2936 2937 2938: 2582(ptr) AccessChain 34(data) 2929 2581 69 2939: 25(int64_t) CompositeExtract 2933 2 Store 2938 2939 2940: 6(int) Load 8(invocation) 2941: 2589(ptr) AccessChain 34(data) 73 2581 2942: 26(i64vec4) Load 2941 2943: 26(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2942 2944: 2589(ptr) AccessChain 34(data) 2940 2581 Store 2944 2943 2945: 6(int) Load 8(invocation) 2946: 2582(ptr) AccessChain 34(data) 37 2581 38 2947: 25(int64_t) Load 2946 2948: 25(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2947 2949: 2582(ptr) AccessChain 34(data) 2945 2581 38 Store 2949 2948 2950: 6(int) Load 8(invocation) 2951: 2589(ptr) AccessChain 34(data) 46 2581 2952: 26(i64vec4) Load 2951 2953:2588(i64vec2) VectorShuffle 2952 2952 0 1 2954:2588(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2953 2955: 2582(ptr) AccessChain 34(data) 2950 2581 38 2956: 25(int64_t) CompositeExtract 2954 0 Store 2955 2956 2957: 2582(ptr) AccessChain 34(data) 2950 2581 55 2958: 25(int64_t) CompositeExtract 2954 1 Store 2957 2958 2959: 6(int) Load 8(invocation) 2960: 2589(ptr) AccessChain 34(data) 59 2581 2961: 26(i64vec4) Load 2960 2962:2599(i64vec3) VectorShuffle 2961 2961 0 1 2 2963:2599(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2962 2964: 2582(ptr) AccessChain 34(data) 2959 2581 38 2965: 25(int64_t) CompositeExtract 2963 0 Store 2964 2965 2966: 2582(ptr) AccessChain 34(data) 2959 2581 55 2967: 25(int64_t) CompositeExtract 2963 1 Store 2966 2967 2968: 2582(ptr) AccessChain 34(data) 2959 2581 69 2969: 25(int64_t) CompositeExtract 2963 2 Store 2968 2969 2970: 6(int) Load 8(invocation) 2971: 2589(ptr) AccessChain 34(data) 73 2581 2972: 26(i64vec4) Load 2971 2973: 26(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2972 2974: 2589(ptr) AccessChain 34(data) 2970 2581 Store 2974 2973 2975: 6(int) Load 8(invocation) 2976: 2582(ptr) AccessChain 34(data) 37 2581 38 2977: 25(int64_t) Load 2976 2978: 25(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2977 2979: 2582(ptr) AccessChain 34(data) 2975 2581 38 Store 2979 2978 2980: 6(int) Load 8(invocation) 2981: 2589(ptr) AccessChain 34(data) 46 2581 2982: 26(i64vec4) Load 2981 2983:2588(i64vec2) VectorShuffle 2982 2982 0 1 2984:2588(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2983 2985: 2582(ptr) AccessChain 34(data) 2980 2581 38 2986: 25(int64_t) CompositeExtract 2984 0 Store 2985 2986 2987: 2582(ptr) AccessChain 34(data) 2980 2581 55 2988: 25(int64_t) CompositeExtract 2984 1 Store 2987 2988 2989: 6(int) Load 8(invocation) 2990: 2589(ptr) AccessChain 34(data) 59 2581 2991: 26(i64vec4) Load 2990 2992:2599(i64vec3) VectorShuffle 2991 2991 0 1 2 2993:2599(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2992 2994: 2582(ptr) AccessChain 34(data) 2989 2581 38 2995: 25(int64_t) CompositeExtract 2993 0 Store 2994 2995 2996: 2582(ptr) AccessChain 34(data) 2989 2581 55 2997: 25(int64_t) CompositeExtract 2993 1 Store 2996 2997 2998: 2582(ptr) AccessChain 34(data) 2989 2581 69 2999: 25(int64_t) CompositeExtract 2993 2 Store 2998 2999 3000: 6(int) Load 8(invocation) 3001: 2589(ptr) AccessChain 34(data) 73 2581 3002: 26(i64vec4) Load 3001 3003: 26(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 3002 3004: 2589(ptr) AccessChain 34(data) 3000 2581 Store 3004 3003 3005: 6(int) Load 8(invocation) 3006: 2582(ptr) AccessChain 34(data) 37 2581 38 3007: 25(int64_t) Load 3006 3008: 25(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 3007 3009: 2582(ptr) AccessChain 34(data) 3005 2581 38 Store 3009 3008 3010: 6(int) Load 8(invocation) 3011: 2589(ptr) AccessChain 34(data) 46 2581 3012: 26(i64vec4) Load 3011 3013:2588(i64vec2) VectorShuffle 3012 3012 0 1 3014:2588(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 3013 3015: 2582(ptr) AccessChain 34(data) 3010 2581 38 3016: 25(int64_t) CompositeExtract 3014 0 Store 3015 3016 3017: 2582(ptr) AccessChain 34(data) 3010 2581 55 3018: 25(int64_t) CompositeExtract 3014 1 Store 3017 3018 3019: 6(int) Load 8(invocation) 3020: 2589(ptr) AccessChain 34(data) 59 2581 3021: 26(i64vec4) Load 3020 3022:2599(i64vec3) VectorShuffle 3021 3021 0 1 2 3023:2599(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 3022 3024: 2582(ptr) AccessChain 34(data) 3019 2581 38 3025: 25(int64_t) CompositeExtract 3023 0 Store 3024 3025 3026: 2582(ptr) AccessChain 34(data) 3019 2581 55 3027: 25(int64_t) CompositeExtract 3023 1 Store 3026 3027 3028: 2582(ptr) AccessChain 34(data) 3019 2581 69 3029: 25(int64_t) CompositeExtract 3023 2 Store 3028 3029 3030: 6(int) Load 8(invocation) 3031: 2589(ptr) AccessChain 34(data) 73 2581 3032: 26(i64vec4) Load 3031 3033: 26(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 3032 3034: 2589(ptr) AccessChain 34(data) 3030 2581 Store 3034 3033 3035: 6(int) Load 8(invocation) 3036: 2582(ptr) AccessChain 34(data) 37 2581 38 3037: 25(int64_t) Load 3036 3038: 25(int64_t) GroupNonUniformIMul 42 ExclusiveScan 3037 3039: 2582(ptr) AccessChain 34(data) 3035 2581 38 Store 3039 3038 3040: 6(int) Load 8(invocation) 3041: 2589(ptr) AccessChain 34(data) 46 2581 3042: 26(i64vec4) Load 3041 3043:2588(i64vec2) VectorShuffle 3042 3042 0 1 3044:2588(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 3043 3045: 2582(ptr) AccessChain 34(data) 3040 2581 38 3046: 25(int64_t) CompositeExtract 3044 0 Store 3045 3046 3047: 2582(ptr) AccessChain 34(data) 3040 2581 55 3048: 25(int64_t) CompositeExtract 3044 1 Store 3047 3048 3049: 6(int) Load 8(invocation) 3050: 2589(ptr) AccessChain 34(data) 59 2581 3051: 26(i64vec4) Load 3050 3052:2599(i64vec3) VectorShuffle 3051 3051 0 1 2 3053:2599(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 3052 3054: 2582(ptr) AccessChain 34(data) 3049 2581 38 3055: 25(int64_t) CompositeExtract 3053 0 Store 3054 3055 3056: 2582(ptr) AccessChain 34(data) 3049 2581 55 3057: 25(int64_t) CompositeExtract 3053 1 Store 3056 3057 3058: 2582(ptr) AccessChain 34(data) 3049 2581 69 3059: 25(int64_t) CompositeExtract 3053 2 Store 3058 3059 3060: 6(int) Load 8(invocation) 3061: 2589(ptr) AccessChain 34(data) 73 2581 3062: 26(i64vec4) Load 3061 3063: 26(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 3062 3064: 2589(ptr) AccessChain 34(data) 3060 2581 Store 3064 3063 3065: 6(int) Load 8(invocation) 3066: 2582(ptr) AccessChain 34(data) 37 2581 38 3067: 25(int64_t) Load 3066 3068: 25(int64_t) GroupNonUniformSMin 42 ExclusiveScan 3067 3069: 2582(ptr) AccessChain 34(data) 3065 2581 38 Store 3069 3068 3070: 6(int) Load 8(invocation) 3071: 2589(ptr) AccessChain 34(data) 46 2581 3072: 26(i64vec4) Load 3071 3073:2588(i64vec2) VectorShuffle 3072 3072 0 1 3074:2588(i64vec2) GroupNonUniformSMin 42 ExclusiveScan 3073 3075: 2582(ptr) AccessChain 34(data) 3070 2581 38 3076: 25(int64_t) CompositeExtract 3074 0 Store 3075 3076 3077: 2582(ptr) AccessChain 34(data) 3070 2581 55 3078: 25(int64_t) CompositeExtract 3074 1 Store 3077 3078 3079: 6(int) Load 8(invocation) 3080: 2589(ptr) AccessChain 34(data) 59 2581 3081: 26(i64vec4) Load 3080 3082:2599(i64vec3) VectorShuffle 3081 3081 0 1 2 3083:2599(i64vec3) GroupNonUniformSMin 42 ExclusiveScan 3082 3084: 2582(ptr) AccessChain 34(data) 3079 2581 38 3085: 25(int64_t) CompositeExtract 3083 0 Store 3084 3085 3086: 2582(ptr) AccessChain 34(data) 3079 2581 55 3087: 25(int64_t) CompositeExtract 3083 1 Store 3086 3087 3088: 2582(ptr) AccessChain 34(data) 3079 2581 69 3089: 25(int64_t) CompositeExtract 3083 2 Store 3088 3089 3090: 6(int) Load 8(invocation) 3091: 2589(ptr) AccessChain 34(data) 73 2581 3092: 26(i64vec4) Load 3091 3093: 26(i64vec4) GroupNonUniformSMin 42 ExclusiveScan 3092 3094: 2589(ptr) AccessChain 34(data) 3090 2581 Store 3094 3093 3095: 6(int) Load 8(invocation) 3096: 2582(ptr) AccessChain 34(data) 37 2581 38 3097: 25(int64_t) Load 3096 3098: 25(int64_t) GroupNonUniformSMax 42 ExclusiveScan 3097 3099: 2582(ptr) AccessChain 34(data) 3095 2581 38 Store 3099 3098 3100: 6(int) Load 8(invocation) 3101: 2589(ptr) AccessChain 34(data) 46 2581 3102: 26(i64vec4) Load 3101 3103:2588(i64vec2) VectorShuffle 3102 3102 0 1 3104:2588(i64vec2) GroupNonUniformSMax 42 ExclusiveScan 3103 3105: 2582(ptr) AccessChain 34(data) 3100 2581 38 3106: 25(int64_t) CompositeExtract 3104 0 Store 3105 3106 3107: 2582(ptr) AccessChain 34(data) 3100 2581 55 3108: 25(int64_t) CompositeExtract 3104 1 Store 3107 3108 3109: 6(int) Load 8(invocation) 3110: 2589(ptr) AccessChain 34(data) 59 2581 3111: 26(i64vec4) Load 3110 3112:2599(i64vec3) VectorShuffle 3111 3111 0 1 2 3113:2599(i64vec3) GroupNonUniformSMax 42 ExclusiveScan 3112 3114: 2582(ptr) AccessChain 34(data) 3109 2581 38 3115: 25(int64_t) CompositeExtract 3113 0 Store 3114 3115 3116: 2582(ptr) AccessChain 34(data) 3109 2581 55 3117: 25(int64_t) CompositeExtract 3113 1 Store 3116 3117 3118: 2582(ptr) AccessChain 34(data) 3109 2581 69 3119: 25(int64_t) CompositeExtract 3113 2 Store 3118 3119 3120: 6(int) Load 8(invocation) 3121: 2589(ptr) AccessChain 34(data) 73 2581 3122: 26(i64vec4) Load 3121 3123: 26(i64vec4) GroupNonUniformSMax 42 ExclusiveScan 3122 3124: 2589(ptr) AccessChain 34(data) 3120 2581 Store 3124 3123 3125: 6(int) Load 8(invocation) 3126: 2582(ptr) AccessChain 34(data) 37 2581 38 3127: 25(int64_t) Load 3126 3128: 25(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3127 3129: 2582(ptr) AccessChain 34(data) 3125 2581 38 Store 3129 3128 3130: 6(int) Load 8(invocation) 3131: 2589(ptr) AccessChain 34(data) 46 2581 3132: 26(i64vec4) Load 3131 3133:2588(i64vec2) VectorShuffle 3132 3132 0 1 3134:2588(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3133 3135: 2582(ptr) AccessChain 34(data) 3130 2581 38 3136: 25(int64_t) CompositeExtract 3134 0 Store 3135 3136 3137: 2582(ptr) AccessChain 34(data) 3130 2581 55 3138: 25(int64_t) CompositeExtract 3134 1 Store 3137 3138 3139: 6(int) Load 8(invocation) 3140: 2589(ptr) AccessChain 34(data) 59 2581 3141: 26(i64vec4) Load 3140 3142:2599(i64vec3) VectorShuffle 3141 3141 0 1 2 3143:2599(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3142 3144: 2582(ptr) AccessChain 34(data) 3139 2581 38 3145: 25(int64_t) CompositeExtract 3143 0 Store 3144 3145 3146: 2582(ptr) AccessChain 34(data) 3139 2581 55 3147: 25(int64_t) CompositeExtract 3143 1 Store 3146 3147 3148: 2582(ptr) AccessChain 34(data) 3139 2581 69 3149: 25(int64_t) CompositeExtract 3143 2 Store 3148 3149 3150: 6(int) Load 8(invocation) 3151: 2589(ptr) AccessChain 34(data) 73 2581 3152: 26(i64vec4) Load 3151 3153: 26(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3152 3154: 2589(ptr) AccessChain 34(data) 3150 2581 Store 3154 3153 3155: 6(int) Load 8(invocation) 3156: 2582(ptr) AccessChain 34(data) 37 2581 38 3157: 25(int64_t) Load 3156 3158: 25(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 3157 3159: 2582(ptr) AccessChain 34(data) 3155 2581 38 Store 3159 3158 3160: 6(int) Load 8(invocation) 3161: 2589(ptr) AccessChain 34(data) 46 2581 3162: 26(i64vec4) Load 3161 3163:2588(i64vec2) VectorShuffle 3162 3162 0 1 3164:2588(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 3163 3165: 2582(ptr) AccessChain 34(data) 3160 2581 38 3166: 25(int64_t) CompositeExtract 3164 0 Store 3165 3166 3167: 2582(ptr) AccessChain 34(data) 3160 2581 55 3168: 25(int64_t) CompositeExtract 3164 1 Store 3167 3168 3169: 6(int) Load 8(invocation) 3170: 2589(ptr) AccessChain 34(data) 59 2581 3171: 26(i64vec4) Load 3170 3172:2599(i64vec3) VectorShuffle 3171 3171 0 1 2 3173:2599(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 3172 3174: 2582(ptr) AccessChain 34(data) 3169 2581 38 3175: 25(int64_t) CompositeExtract 3173 0 Store 3174 3175 3176: 2582(ptr) AccessChain 34(data) 3169 2581 55 3177: 25(int64_t) CompositeExtract 3173 1 Store 3176 3177 3178: 2582(ptr) AccessChain 34(data) 3169 2581 69 3179: 25(int64_t) CompositeExtract 3173 2 Store 3178 3179 3180: 6(int) Load 8(invocation) 3181: 2589(ptr) AccessChain 34(data) 73 2581 3182: 26(i64vec4) Load 3181 3183: 26(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 3182 3184: 2589(ptr) AccessChain 34(data) 3180 2581 Store 3184 3183 3185: 6(int) Load 8(invocation) 3186: 2582(ptr) AccessChain 34(data) 37 2581 38 3187: 25(int64_t) Load 3186 3188: 25(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 3187 3189: 2582(ptr) AccessChain 34(data) 3185 2581 38 Store 3189 3188 3190: 6(int) Load 8(invocation) 3191: 2589(ptr) AccessChain 34(data) 46 2581 3192: 26(i64vec4) Load 3191 3193:2588(i64vec2) VectorShuffle 3192 3192 0 1 3194:2588(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 3193 3195: 2582(ptr) AccessChain 34(data) 3190 2581 38 3196: 25(int64_t) CompositeExtract 3194 0 Store 3195 3196 3197: 2582(ptr) AccessChain 34(data) 3190 2581 55 3198: 25(int64_t) CompositeExtract 3194 1 Store 3197 3198 3199: 6(int) Load 8(invocation) 3200: 2589(ptr) AccessChain 34(data) 59 2581 3201: 26(i64vec4) Load 3200 3202:2599(i64vec3) VectorShuffle 3201 3201 0 1 2 3203:2599(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 3202 3204: 2582(ptr) AccessChain 34(data) 3199 2581 38 3205: 25(int64_t) CompositeExtract 3203 0 Store 3204 3205 3206: 2582(ptr) AccessChain 34(data) 3199 2581 55 3207: 25(int64_t) CompositeExtract 3203 1 Store 3206 3207 3208: 2582(ptr) AccessChain 34(data) 3199 2581 69 3209: 25(int64_t) CompositeExtract 3203 2 Store 3208 3209 3210: 6(int) Load 8(invocation) 3211: 2589(ptr) AccessChain 34(data) 73 2581 3212: 26(i64vec4) Load 3211 3213: 26(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 3212 3214: 2589(ptr) AccessChain 34(data) 3210 2581 Store 3214 3213 3215: 6(int) Load 8(invocation) 3218: 3217(ptr) AccessChain 34(data) 37 3216 38 3219: 27(int64_t) Load 3218 3220: 27(int64_t) GroupNonUniformIAdd 42 Reduce 3219 3221: 3217(ptr) AccessChain 34(data) 3215 3216 38 Store 3221 3220 3222: 6(int) Load 8(invocation) 3225: 3224(ptr) AccessChain 34(data) 46 3216 3226: 28(i64vec4) Load 3225 3227:3223(i64vec2) VectorShuffle 3226 3226 0 1 3228:3223(i64vec2) GroupNonUniformIAdd 42 Reduce 3227 3229: 3217(ptr) AccessChain 34(data) 3222 3216 38 3230: 27(int64_t) CompositeExtract 3228 0 Store 3229 3230 3231: 3217(ptr) AccessChain 34(data) 3222 3216 55 3232: 27(int64_t) CompositeExtract 3228 1 Store 3231 3232 3233: 6(int) Load 8(invocation) 3235: 3224(ptr) AccessChain 34(data) 59 3216 3236: 28(i64vec4) Load 3235 3237:3234(i64vec3) VectorShuffle 3236 3236 0 1 2 3238:3234(i64vec3) GroupNonUniformIAdd 42 Reduce 3237 3239: 3217(ptr) AccessChain 34(data) 3233 3216 38 3240: 27(int64_t) CompositeExtract 3238 0 Store 3239 3240 3241: 3217(ptr) AccessChain 34(data) 3233 3216 55 3242: 27(int64_t) CompositeExtract 3238 1 Store 3241 3242 3243: 3217(ptr) AccessChain 34(data) 3233 3216 69 3244: 27(int64_t) CompositeExtract 3238 2 Store 3243 3244 3245: 6(int) Load 8(invocation) 3246: 3224(ptr) AccessChain 34(data) 73 3216 3247: 28(i64vec4) Load 3246 3248: 28(i64vec4) GroupNonUniformIAdd 42 Reduce 3247 3249: 3224(ptr) AccessChain 34(data) 3245 3216 Store 3249 3248 3250: 6(int) Load 8(invocation) 3251: 3217(ptr) AccessChain 34(data) 37 3216 38 3252: 27(int64_t) Load 3251 3253: 27(int64_t) GroupNonUniformIMul 42 Reduce 3252 3254: 3217(ptr) AccessChain 34(data) 3250 3216 38 Store 3254 3253 3255: 6(int) Load 8(invocation) 3256: 3224(ptr) AccessChain 34(data) 46 3216 3257: 28(i64vec4) Load 3256 3258:3223(i64vec2) VectorShuffle 3257 3257 0 1 3259:3223(i64vec2) GroupNonUniformIMul 42 Reduce 3258 3260: 3217(ptr) AccessChain 34(data) 3255 3216 38 3261: 27(int64_t) CompositeExtract 3259 0 Store 3260 3261 3262: 3217(ptr) AccessChain 34(data) 3255 3216 55 3263: 27(int64_t) CompositeExtract 3259 1 Store 3262 3263 3264: 6(int) Load 8(invocation) 3265: 3224(ptr) AccessChain 34(data) 59 3216 3266: 28(i64vec4) Load 3265 3267:3234(i64vec3) VectorShuffle 3266 3266 0 1 2 3268:3234(i64vec3) GroupNonUniformIMul 42 Reduce 3267 3269: 3217(ptr) AccessChain 34(data) 3264 3216 38 3270: 27(int64_t) CompositeExtract 3268 0 Store 3269 3270 3271: 3217(ptr) AccessChain 34(data) 3264 3216 55 3272: 27(int64_t) CompositeExtract 3268 1 Store 3271 3272 3273: 3217(ptr) AccessChain 34(data) 3264 3216 69 3274: 27(int64_t) CompositeExtract 3268 2 Store 3273 3274 3275: 6(int) Load 8(invocation) 3276: 3224(ptr) AccessChain 34(data) 73 3216 3277: 28(i64vec4) Load 3276 3278: 28(i64vec4) GroupNonUniformIMul 42 Reduce 3277 3279: 3224(ptr) AccessChain 34(data) 3275 3216 Store 3279 3278 3280: 6(int) Load 8(invocation) 3281: 3217(ptr) AccessChain 34(data) 37 3216 38 3282: 27(int64_t) Load 3281 3283: 27(int64_t) GroupNonUniformUMin 42 Reduce 3282 3284: 3217(ptr) AccessChain 34(data) 3280 3216 38 Store 3284 3283 3285: 6(int) Load 8(invocation) 3286: 3224(ptr) AccessChain 34(data) 46 3216 3287: 28(i64vec4) Load 3286 3288:3223(i64vec2) VectorShuffle 3287 3287 0 1 3289:3223(i64vec2) GroupNonUniformUMin 42 Reduce 3288 3290: 3217(ptr) AccessChain 34(data) 3285 3216 38 3291: 27(int64_t) CompositeExtract 3289 0 Store 3290 3291 3292: 3217(ptr) AccessChain 34(data) 3285 3216 55 3293: 27(int64_t) CompositeExtract 3289 1 Store 3292 3293 3294: 6(int) Load 8(invocation) 3295: 3224(ptr) AccessChain 34(data) 59 3216 3296: 28(i64vec4) Load 3295 3297:3234(i64vec3) VectorShuffle 3296 3296 0 1 2 3298:3234(i64vec3) GroupNonUniformUMin 42 Reduce 3297 3299: 3217(ptr) AccessChain 34(data) 3294 3216 38 3300: 27(int64_t) CompositeExtract 3298 0 Store 3299 3300 3301: 3217(ptr) AccessChain 34(data) 3294 3216 55 3302: 27(int64_t) CompositeExtract 3298 1 Store 3301 3302 3303: 3217(ptr) AccessChain 34(data) 3294 3216 69 3304: 27(int64_t) CompositeExtract 3298 2 Store 3303 3304 3305: 6(int) Load 8(invocation) 3306: 3224(ptr) AccessChain 34(data) 73 3216 3307: 28(i64vec4) Load 3306 3308: 28(i64vec4) GroupNonUniformUMin 42 Reduce 3307 3309: 3224(ptr) AccessChain 34(data) 3305 3216 Store 3309 3308 3310: 6(int) Load 8(invocation) 3311: 3217(ptr) AccessChain 34(data) 37 3216 38 3312: 27(int64_t) Load 3311 3313: 27(int64_t) GroupNonUniformUMax 42 Reduce 3312 3314: 3217(ptr) AccessChain 34(data) 3310 3216 38 Store 3314 3313 3315: 6(int) Load 8(invocation) 3316: 3224(ptr) AccessChain 34(data) 46 3216 3317: 28(i64vec4) Load 3316 3318:3223(i64vec2) VectorShuffle 3317 3317 0 1 3319:3223(i64vec2) GroupNonUniformUMax 42 Reduce 3318 3320: 3217(ptr) AccessChain 34(data) 3315 3216 38 3321: 27(int64_t) CompositeExtract 3319 0 Store 3320 3321 3322: 3217(ptr) AccessChain 34(data) 3315 3216 55 3323: 27(int64_t) CompositeExtract 3319 1 Store 3322 3323 3324: 6(int) Load 8(invocation) 3325: 3224(ptr) AccessChain 34(data) 59 3216 3326: 28(i64vec4) Load 3325 3327:3234(i64vec3) VectorShuffle 3326 3326 0 1 2 3328:3234(i64vec3) GroupNonUniformUMax 42 Reduce 3327 3329: 3217(ptr) AccessChain 34(data) 3324 3216 38 3330: 27(int64_t) CompositeExtract 3328 0 Store 3329 3330 3331: 3217(ptr) AccessChain 34(data) 3324 3216 55 3332: 27(int64_t) CompositeExtract 3328 1 Store 3331 3332 3333: 3217(ptr) AccessChain 34(data) 3324 3216 69 3334: 27(int64_t) CompositeExtract 3328 2 Store 3333 3334 3335: 6(int) Load 8(invocation) 3336: 3224(ptr) AccessChain 34(data) 73 3216 3337: 28(i64vec4) Load 3336 3338: 28(i64vec4) GroupNonUniformUMax 42 Reduce 3337 3339: 3224(ptr) AccessChain 34(data) 3335 3216 Store 3339 3338 3340: 6(int) Load 8(invocation) 3341: 3217(ptr) AccessChain 34(data) 37 3216 38 3342: 27(int64_t) Load 3341 3343: 27(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 3342 3344: 3217(ptr) AccessChain 34(data) 3340 3216 38 Store 3344 3343 3345: 6(int) Load 8(invocation) 3346: 3224(ptr) AccessChain 34(data) 46 3216 3347: 28(i64vec4) Load 3346 3348:3223(i64vec2) VectorShuffle 3347 3347 0 1 3349:3223(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 3348 3350: 3217(ptr) AccessChain 34(data) 3345 3216 38 3351: 27(int64_t) CompositeExtract 3349 0 Store 3350 3351 3352: 3217(ptr) AccessChain 34(data) 3345 3216 55 3353: 27(int64_t) CompositeExtract 3349 1 Store 3352 3353 3354: 6(int) Load 8(invocation) 3355: 3224(ptr) AccessChain 34(data) 59 3216 3356: 28(i64vec4) Load 3355 3357:3234(i64vec3) VectorShuffle 3356 3356 0 1 2 3358:3234(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 3357 3359: 3217(ptr) AccessChain 34(data) 3354 3216 38 3360: 27(int64_t) CompositeExtract 3358 0 Store 3359 3360 3361: 3217(ptr) AccessChain 34(data) 3354 3216 55 3362: 27(int64_t) CompositeExtract 3358 1 Store 3361 3362 3363: 3217(ptr) AccessChain 34(data) 3354 3216 69 3364: 27(int64_t) CompositeExtract 3358 2 Store 3363 3364 3365: 6(int) Load 8(invocation) 3366: 3224(ptr) AccessChain 34(data) 73 3216 3367: 28(i64vec4) Load 3366 3368: 28(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 3367 3369: 3224(ptr) AccessChain 34(data) 3365 3216 Store 3369 3368 3370: 6(int) Load 8(invocation) 3371: 3217(ptr) AccessChain 34(data) 37 3216 38 3372: 27(int64_t) Load 3371 3373: 27(int64_t) GroupNonUniformBitwiseOr 42 Reduce 3372 3374: 3217(ptr) AccessChain 34(data) 3370 3216 38 Store 3374 3373 3375: 6(int) Load 8(invocation) 3376: 3224(ptr) AccessChain 34(data) 46 3216 3377: 28(i64vec4) Load 3376 3378:3223(i64vec2) VectorShuffle 3377 3377 0 1 3379:3223(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 3378 3380: 3217(ptr) AccessChain 34(data) 3375 3216 38 3381: 27(int64_t) CompositeExtract 3379 0 Store 3380 3381 3382: 3217(ptr) AccessChain 34(data) 3375 3216 55 3383: 27(int64_t) CompositeExtract 3379 1 Store 3382 3383 3384: 6(int) Load 8(invocation) 3385: 3224(ptr) AccessChain 34(data) 59 3216 3386: 28(i64vec4) Load 3385 3387:3234(i64vec3) VectorShuffle 3386 3386 0 1 2 3388:3234(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 3387 3389: 3217(ptr) AccessChain 34(data) 3384 3216 38 3390: 27(int64_t) CompositeExtract 3388 0 Store 3389 3390 3391: 3217(ptr) AccessChain 34(data) 3384 3216 55 3392: 27(int64_t) CompositeExtract 3388 1 Store 3391 3392 3393: 3217(ptr) AccessChain 34(data) 3384 3216 69 3394: 27(int64_t) CompositeExtract 3388 2 Store 3393 3394 3395: 6(int) Load 8(invocation) 3396: 3224(ptr) AccessChain 34(data) 73 3216 3397: 28(i64vec4) Load 3396 3398: 28(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 3397 3399: 3224(ptr) AccessChain 34(data) 3395 3216 Store 3399 3398 3400: 6(int) Load 8(invocation) 3401: 3217(ptr) AccessChain 34(data) 37 3216 38 3402: 27(int64_t) Load 3401 3403: 27(int64_t) GroupNonUniformBitwiseXor 42 Reduce 3402 3404: 3217(ptr) AccessChain 34(data) 3400 3216 38 Store 3404 3403 3405: 6(int) Load 8(invocation) 3406: 3224(ptr) AccessChain 34(data) 46 3216 3407: 28(i64vec4) Load 3406 3408:3223(i64vec2) VectorShuffle 3407 3407 0 1 3409:3223(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 3408 3410: 3217(ptr) AccessChain 34(data) 3405 3216 38 3411: 27(int64_t) CompositeExtract 3409 0 Store 3410 3411 3412: 3217(ptr) AccessChain 34(data) 3405 3216 55 3413: 27(int64_t) CompositeExtract 3409 1 Store 3412 3413 3414: 6(int) Load 8(invocation) 3415: 3224(ptr) AccessChain 34(data) 59 3216 3416: 28(i64vec4) Load 3415 3417:3234(i64vec3) VectorShuffle 3416 3416 0 1 2 3418:3234(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 3417 3419: 3217(ptr) AccessChain 34(data) 3414 3216 38 3420: 27(int64_t) CompositeExtract 3418 0 Store 3419 3420 3421: 3217(ptr) AccessChain 34(data) 3414 3216 55 3422: 27(int64_t) CompositeExtract 3418 1 Store 3421 3422 3423: 3217(ptr) AccessChain 34(data) 3414 3216 69 3424: 27(int64_t) CompositeExtract 3418 2 Store 3423 3424 3425: 6(int) Load 8(invocation) 3426: 3224(ptr) AccessChain 34(data) 73 3216 3427: 28(i64vec4) Load 3426 3428: 28(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 3427 3429: 3224(ptr) AccessChain 34(data) 3425 3216 Store 3429 3428 3430: 6(int) Load 8(invocation) 3431: 3217(ptr) AccessChain 34(data) 37 3216 38 3432: 27(int64_t) Load 3431 3433: 27(int64_t) GroupNonUniformIAdd 42 InclusiveScan 3432 3434: 3217(ptr) AccessChain 34(data) 3430 3216 38 Store 3434 3433 3435: 6(int) Load 8(invocation) 3436: 3224(ptr) AccessChain 34(data) 46 3216 3437: 28(i64vec4) Load 3436 3438:3223(i64vec2) VectorShuffle 3437 3437 0 1 3439:3223(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 3438 3440: 3217(ptr) AccessChain 34(data) 3435 3216 38 3441: 27(int64_t) CompositeExtract 3439 0 Store 3440 3441 3442: 3217(ptr) AccessChain 34(data) 3435 3216 55 3443: 27(int64_t) CompositeExtract 3439 1 Store 3442 3443 3444: 6(int) Load 8(invocation) 3445: 3224(ptr) AccessChain 34(data) 59 3216 3446: 28(i64vec4) Load 3445 3447:3234(i64vec3) VectorShuffle 3446 3446 0 1 2 3448:3234(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 3447 3449: 3217(ptr) AccessChain 34(data) 3444 3216 38 3450: 27(int64_t) CompositeExtract 3448 0 Store 3449 3450 3451: 3217(ptr) AccessChain 34(data) 3444 3216 55 3452: 27(int64_t) CompositeExtract 3448 1 Store 3451 3452 3453: 3217(ptr) AccessChain 34(data) 3444 3216 69 3454: 27(int64_t) CompositeExtract 3448 2 Store 3453 3454 3455: 6(int) Load 8(invocation) 3456: 3224(ptr) AccessChain 34(data) 73 3216 3457: 28(i64vec4) Load 3456 3458: 28(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 3457 3459: 3224(ptr) AccessChain 34(data) 3455 3216 Store 3459 3458 3460: 6(int) Load 8(invocation) 3461: 3217(ptr) AccessChain 34(data) 37 3216 38 3462: 27(int64_t) Load 3461 3463: 27(int64_t) GroupNonUniformIMul 42 InclusiveScan 3462 3464: 3217(ptr) AccessChain 34(data) 3460 3216 38 Store 3464 3463 3465: 6(int) Load 8(invocation) 3466: 3224(ptr) AccessChain 34(data) 46 3216 3467: 28(i64vec4) Load 3466 3468:3223(i64vec2) VectorShuffle 3467 3467 0 1 3469:3223(i64vec2) GroupNonUniformIMul 42 InclusiveScan 3468 3470: 3217(ptr) AccessChain 34(data) 3465 3216 38 3471: 27(int64_t) CompositeExtract 3469 0 Store 3470 3471 3472: 3217(ptr) AccessChain 34(data) 3465 3216 55 3473: 27(int64_t) CompositeExtract 3469 1 Store 3472 3473 3474: 6(int) Load 8(invocation) 3475: 3224(ptr) AccessChain 34(data) 59 3216 3476: 28(i64vec4) Load 3475 3477:3234(i64vec3) VectorShuffle 3476 3476 0 1 2 3478:3234(i64vec3) GroupNonUniformIMul 42 InclusiveScan 3477 3479: 3217(ptr) AccessChain 34(data) 3474 3216 38 3480: 27(int64_t) CompositeExtract 3478 0 Store 3479 3480 3481: 3217(ptr) AccessChain 34(data) 3474 3216 55 3482: 27(int64_t) CompositeExtract 3478 1 Store 3481 3482 3483: 3217(ptr) AccessChain 34(data) 3474 3216 69 3484: 27(int64_t) CompositeExtract 3478 2 Store 3483 3484 3485: 6(int) Load 8(invocation) 3486: 3224(ptr) AccessChain 34(data) 73 3216 3487: 28(i64vec4) Load 3486 3488: 28(i64vec4) GroupNonUniformIMul 42 InclusiveScan 3487 3489: 3224(ptr) AccessChain 34(data) 3485 3216 Store 3489 3488 3490: 6(int) Load 8(invocation) 3491: 3217(ptr) AccessChain 34(data) 37 3216 38 3492: 27(int64_t) Load 3491 3493: 27(int64_t) GroupNonUniformUMin 42 InclusiveScan 3492 3494: 3217(ptr) AccessChain 34(data) 3490 3216 38 Store 3494 3493 3495: 6(int) Load 8(invocation) 3496: 3224(ptr) AccessChain 34(data) 46 3216 3497: 28(i64vec4) Load 3496 3498:3223(i64vec2) VectorShuffle 3497 3497 0 1 3499:3223(i64vec2) GroupNonUniformUMin 42 InclusiveScan 3498 3500: 3217(ptr) AccessChain 34(data) 3495 3216 38 3501: 27(int64_t) CompositeExtract 3499 0 Store 3500 3501 3502: 3217(ptr) AccessChain 34(data) 3495 3216 55 3503: 27(int64_t) CompositeExtract 3499 1 Store 3502 3503 3504: 6(int) Load 8(invocation) 3505: 3224(ptr) AccessChain 34(data) 59 3216 3506: 28(i64vec4) Load 3505 3507:3234(i64vec3) VectorShuffle 3506 3506 0 1 2 3508:3234(i64vec3) GroupNonUniformUMin 42 InclusiveScan 3507 3509: 3217(ptr) AccessChain 34(data) 3504 3216 38 3510: 27(int64_t) CompositeExtract 3508 0 Store 3509 3510 3511: 3217(ptr) AccessChain 34(data) 3504 3216 55 3512: 27(int64_t) CompositeExtract 3508 1 Store 3511 3512 3513: 3217(ptr) AccessChain 34(data) 3504 3216 69 3514: 27(int64_t) CompositeExtract 3508 2 Store 3513 3514 3515: 6(int) Load 8(invocation) 3516: 3224(ptr) AccessChain 34(data) 73 3216 3517: 28(i64vec4) Load 3516 3518: 28(i64vec4) GroupNonUniformUMin 42 InclusiveScan 3517 3519: 3224(ptr) AccessChain 34(data) 3515 3216 Store 3519 3518 3520: 6(int) Load 8(invocation) 3521: 3217(ptr) AccessChain 34(data) 37 3216 38 3522: 27(int64_t) Load 3521 3523: 27(int64_t) GroupNonUniformUMax 42 InclusiveScan 3522 3524: 3217(ptr) AccessChain 34(data) 3520 3216 38 Store 3524 3523 3525: 6(int) Load 8(invocation) 3526: 3224(ptr) AccessChain 34(data) 46 3216 3527: 28(i64vec4) Load 3526 3528:3223(i64vec2) VectorShuffle 3527 3527 0 1 3529:3223(i64vec2) GroupNonUniformUMax 42 InclusiveScan 3528 3530: 3217(ptr) AccessChain 34(data) 3525 3216 38 3531: 27(int64_t) CompositeExtract 3529 0 Store 3530 3531 3532: 3217(ptr) AccessChain 34(data) 3525 3216 55 3533: 27(int64_t) CompositeExtract 3529 1 Store 3532 3533 3534: 6(int) Load 8(invocation) 3535: 3224(ptr) AccessChain 34(data) 59 3216 3536: 28(i64vec4) Load 3535 3537:3234(i64vec3) VectorShuffle 3536 3536 0 1 2 3538:3234(i64vec3) GroupNonUniformUMax 42 InclusiveScan 3537 3539: 3217(ptr) AccessChain 34(data) 3534 3216 38 3540: 27(int64_t) CompositeExtract 3538 0 Store 3539 3540 3541: 3217(ptr) AccessChain 34(data) 3534 3216 55 3542: 27(int64_t) CompositeExtract 3538 1 Store 3541 3542 3543: 3217(ptr) AccessChain 34(data) 3534 3216 69 3544: 27(int64_t) CompositeExtract 3538 2 Store 3543 3544 3545: 6(int) Load 8(invocation) 3546: 3224(ptr) AccessChain 34(data) 73 3216 3547: 28(i64vec4) Load 3546 3548: 28(i64vec4) GroupNonUniformUMax 42 InclusiveScan 3547 3549: 3224(ptr) AccessChain 34(data) 3545 3216 Store 3549 3548 3550: 6(int) Load 8(invocation) 3551: 3217(ptr) AccessChain 34(data) 37 3216 38 3552: 27(int64_t) Load 3551 3553: 27(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 3552 3554: 3217(ptr) AccessChain 34(data) 3550 3216 38 Store 3554 3553 3555: 6(int) Load 8(invocation) 3556: 3224(ptr) AccessChain 34(data) 46 3216 3557: 28(i64vec4) Load 3556 3558:3223(i64vec2) VectorShuffle 3557 3557 0 1 3559:3223(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 3558 3560: 3217(ptr) AccessChain 34(data) 3555 3216 38 3561: 27(int64_t) CompositeExtract 3559 0 Store 3560 3561 3562: 3217(ptr) AccessChain 34(data) 3555 3216 55 3563: 27(int64_t) CompositeExtract 3559 1 Store 3562 3563 3564: 6(int) Load 8(invocation) 3565: 3224(ptr) AccessChain 34(data) 59 3216 3566: 28(i64vec4) Load 3565 3567:3234(i64vec3) VectorShuffle 3566 3566 0 1 2 3568:3234(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 3567 3569: 3217(ptr) AccessChain 34(data) 3564 3216 38 3570: 27(int64_t) CompositeExtract 3568 0 Store 3569 3570 3571: 3217(ptr) AccessChain 34(data) 3564 3216 55 3572: 27(int64_t) CompositeExtract 3568 1 Store 3571 3572 3573: 3217(ptr) AccessChain 34(data) 3564 3216 69 3574: 27(int64_t) CompositeExtract 3568 2 Store 3573 3574 3575: 6(int) Load 8(invocation) 3576: 3224(ptr) AccessChain 34(data) 73 3216 3577: 28(i64vec4) Load 3576 3578: 28(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 3577 3579: 3224(ptr) AccessChain 34(data) 3575 3216 Store 3579 3578 3580: 6(int) Load 8(invocation) 3581: 3217(ptr) AccessChain 34(data) 37 3216 38 3582: 27(int64_t) Load 3581 3583: 27(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 3582 3584: 3217(ptr) AccessChain 34(data) 3580 3216 38 Store 3584 3583 3585: 6(int) Load 8(invocation) 3586: 3224(ptr) AccessChain 34(data) 46 3216 3587: 28(i64vec4) Load 3586 3588:3223(i64vec2) VectorShuffle 3587 3587 0 1 3589:3223(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 3588 3590: 3217(ptr) AccessChain 34(data) 3585 3216 38 3591: 27(int64_t) CompositeExtract 3589 0 Store 3590 3591 3592: 3217(ptr) AccessChain 34(data) 3585 3216 55 3593: 27(int64_t) CompositeExtract 3589 1 Store 3592 3593 3594: 6(int) Load 8(invocation) 3595: 3224(ptr) AccessChain 34(data) 59 3216 3596: 28(i64vec4) Load 3595 3597:3234(i64vec3) VectorShuffle 3596 3596 0 1 2 3598:3234(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 3597 3599: 3217(ptr) AccessChain 34(data) 3594 3216 38 3600: 27(int64_t) CompositeExtract 3598 0 Store 3599 3600 3601: 3217(ptr) AccessChain 34(data) 3594 3216 55 3602: 27(int64_t) CompositeExtract 3598 1 Store 3601 3602 3603: 3217(ptr) AccessChain 34(data) 3594 3216 69 3604: 27(int64_t) CompositeExtract 3598 2 Store 3603 3604 3605: 6(int) Load 8(invocation) 3606: 3224(ptr) AccessChain 34(data) 73 3216 3607: 28(i64vec4) Load 3606 3608: 28(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 3607 3609: 3224(ptr) AccessChain 34(data) 3605 3216 Store 3609 3608 3610: 6(int) Load 8(invocation) 3611: 3217(ptr) AccessChain 34(data) 37 3216 38 3612: 27(int64_t) Load 3611 3613: 27(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 3612 3614: 3217(ptr) AccessChain 34(data) 3610 3216 38 Store 3614 3613 3615: 6(int) Load 8(invocation) 3616: 3224(ptr) AccessChain 34(data) 46 3216 3617: 28(i64vec4) Load 3616 3618:3223(i64vec2) VectorShuffle 3617 3617 0 1 3619:3223(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 3618 3620: 3217(ptr) AccessChain 34(data) 3615 3216 38 3621: 27(int64_t) CompositeExtract 3619 0 Store 3620 3621 3622: 3217(ptr) AccessChain 34(data) 3615 3216 55 3623: 27(int64_t) CompositeExtract 3619 1 Store 3622 3623 3624: 6(int) Load 8(invocation) 3625: 3224(ptr) AccessChain 34(data) 59 3216 3626: 28(i64vec4) Load 3625 3627:3234(i64vec3) VectorShuffle 3626 3626 0 1 2 3628:3234(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 3627 3629: 3217(ptr) AccessChain 34(data) 3624 3216 38 3630: 27(int64_t) CompositeExtract 3628 0 Store 3629 3630 3631: 3217(ptr) AccessChain 34(data) 3624 3216 55 3632: 27(int64_t) CompositeExtract 3628 1 Store 3631 3632 3633: 3217(ptr) AccessChain 34(data) 3624 3216 69 3634: 27(int64_t) CompositeExtract 3628 2 Store 3633 3634 3635: 6(int) Load 8(invocation) 3636: 3224(ptr) AccessChain 34(data) 73 3216 3637: 28(i64vec4) Load 3636 3638: 28(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 3637 3639: 3224(ptr) AccessChain 34(data) 3635 3216 Store 3639 3638 3640: 6(int) Load 8(invocation) 3641: 3217(ptr) AccessChain 34(data) 37 3216 38 3642: 27(int64_t) Load 3641 3643: 27(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 3642 3644: 3217(ptr) AccessChain 34(data) 3640 3216 38 Store 3644 3643 3645: 6(int) Load 8(invocation) 3646: 3224(ptr) AccessChain 34(data) 46 3216 3647: 28(i64vec4) Load 3646 3648:3223(i64vec2) VectorShuffle 3647 3647 0 1 3649:3223(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 3648 3650: 3217(ptr) AccessChain 34(data) 3645 3216 38 3651: 27(int64_t) CompositeExtract 3649 0 Store 3650 3651 3652: 3217(ptr) AccessChain 34(data) 3645 3216 55 3653: 27(int64_t) CompositeExtract 3649 1 Store 3652 3653 3654: 6(int) Load 8(invocation) 3655: 3224(ptr) AccessChain 34(data) 59 3216 3656: 28(i64vec4) Load 3655 3657:3234(i64vec3) VectorShuffle 3656 3656 0 1 2 3658:3234(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 3657 3659: 3217(ptr) AccessChain 34(data) 3654 3216 38 3660: 27(int64_t) CompositeExtract 3658 0 Store 3659 3660 3661: 3217(ptr) AccessChain 34(data) 3654 3216 55 3662: 27(int64_t) CompositeExtract 3658 1 Store 3661 3662 3663: 3217(ptr) AccessChain 34(data) 3654 3216 69 3664: 27(int64_t) CompositeExtract 3658 2 Store 3663 3664 3665: 6(int) Load 8(invocation) 3666: 3224(ptr) AccessChain 34(data) 73 3216 3667: 28(i64vec4) Load 3666 3668: 28(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 3667 3669: 3224(ptr) AccessChain 34(data) 3665 3216 Store 3669 3668 3670: 6(int) Load 8(invocation) 3671: 3217(ptr) AccessChain 34(data) 37 3216 38 3672: 27(int64_t) Load 3671 3673: 27(int64_t) GroupNonUniformIMul 42 ExclusiveScan 3672 3674: 3217(ptr) AccessChain 34(data) 3670 3216 38 Store 3674 3673 3675: 6(int) Load 8(invocation) 3676: 3224(ptr) AccessChain 34(data) 46 3216 3677: 28(i64vec4) Load 3676 3678:3223(i64vec2) VectorShuffle 3677 3677 0 1 3679:3223(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 3678 3680: 3217(ptr) AccessChain 34(data) 3675 3216 38 3681: 27(int64_t) CompositeExtract 3679 0 Store 3680 3681 3682: 3217(ptr) AccessChain 34(data) 3675 3216 55 3683: 27(int64_t) CompositeExtract 3679 1 Store 3682 3683 3684: 6(int) Load 8(invocation) 3685: 3224(ptr) AccessChain 34(data) 59 3216 3686: 28(i64vec4) Load 3685 3687:3234(i64vec3) VectorShuffle 3686 3686 0 1 2 3688:3234(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 3687 3689: 3217(ptr) AccessChain 34(data) 3684 3216 38 3690: 27(int64_t) CompositeExtract 3688 0 Store 3689 3690 3691: 3217(ptr) AccessChain 34(data) 3684 3216 55 3692: 27(int64_t) CompositeExtract 3688 1 Store 3691 3692 3693: 3217(ptr) AccessChain 34(data) 3684 3216 69 3694: 27(int64_t) CompositeExtract 3688 2 Store 3693 3694 3695: 6(int) Load 8(invocation) 3696: 3224(ptr) AccessChain 34(data) 73 3216 3697: 28(i64vec4) Load 3696 3698: 28(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 3697 3699: 3224(ptr) AccessChain 34(data) 3695 3216 Store 3699 3698 3700: 6(int) Load 8(invocation) 3701: 3217(ptr) AccessChain 34(data) 37 3216 38 3702: 27(int64_t) Load 3701 3703: 27(int64_t) GroupNonUniformUMin 42 ExclusiveScan 3702 3704: 3217(ptr) AccessChain 34(data) 3700 3216 38 Store 3704 3703 3705: 6(int) Load 8(invocation) 3706: 3224(ptr) AccessChain 34(data) 46 3216 3707: 28(i64vec4) Load 3706 3708:3223(i64vec2) VectorShuffle 3707 3707 0 1 3709:3223(i64vec2) GroupNonUniformUMin 42 ExclusiveScan 3708 3710: 3217(ptr) AccessChain 34(data) 3705 3216 38 3711: 27(int64_t) CompositeExtract 3709 0 Store 3710 3711 3712: 3217(ptr) AccessChain 34(data) 3705 3216 55 3713: 27(int64_t) CompositeExtract 3709 1 Store 3712 3713 3714: 6(int) Load 8(invocation) 3715: 3224(ptr) AccessChain 34(data) 59 3216 3716: 28(i64vec4) Load 3715 3717:3234(i64vec3) VectorShuffle 3716 3716 0 1 2 3718:3234(i64vec3) GroupNonUniformUMin 42 ExclusiveScan 3717 3719: 3217(ptr) AccessChain 34(data) 3714 3216 38 3720: 27(int64_t) CompositeExtract 3718 0 Store 3719 3720 3721: 3217(ptr) AccessChain 34(data) 3714 3216 55 3722: 27(int64_t) CompositeExtract 3718 1 Store 3721 3722 3723: 3217(ptr) AccessChain 34(data) 3714 3216 69 3724: 27(int64_t) CompositeExtract 3718 2 Store 3723 3724 3725: 6(int) Load 8(invocation) 3726: 3224(ptr) AccessChain 34(data) 73 3216 3727: 28(i64vec4) Load 3726 3728: 28(i64vec4) GroupNonUniformUMin 42 ExclusiveScan 3727 3729: 3224(ptr) AccessChain 34(data) 3725 3216 Store 3729 3728 3730: 6(int) Load 8(invocation) 3731: 3217(ptr) AccessChain 34(data) 37 3216 38 3732: 27(int64_t) Load 3731 3733: 27(int64_t) GroupNonUniformUMax 42 ExclusiveScan 3732 3734: 3217(ptr) AccessChain 34(data) 3730 3216 38 Store 3734 3733 3735: 6(int) Load 8(invocation) 3736: 3224(ptr) AccessChain 34(data) 46 3216 3737: 28(i64vec4) Load 3736 3738:3223(i64vec2) VectorShuffle 3737 3737 0 1 3739:3223(i64vec2) GroupNonUniformUMax 42 ExclusiveScan 3738 3740: 3217(ptr) AccessChain 34(data) 3735 3216 38 3741: 27(int64_t) CompositeExtract 3739 0 Store 3740 3741 3742: 3217(ptr) AccessChain 34(data) 3735 3216 55 3743: 27(int64_t) CompositeExtract 3739 1 Store 3742 3743 3744: 6(int) Load 8(invocation) 3745: 3224(ptr) AccessChain 34(data) 59 3216 3746: 28(i64vec4) Load 3745 3747:3234(i64vec3) VectorShuffle 3746 3746 0 1 2 3748:3234(i64vec3) GroupNonUniformUMax 42 ExclusiveScan 3747 3749: 3217(ptr) AccessChain 34(data) 3744 3216 38 3750: 27(int64_t) CompositeExtract 3748 0 Store 3749 3750 3751: 3217(ptr) AccessChain 34(data) 3744 3216 55 3752: 27(int64_t) CompositeExtract 3748 1 Store 3751 3752 3753: 3217(ptr) AccessChain 34(data) 3744 3216 69 3754: 27(int64_t) CompositeExtract 3748 2 Store 3753 3754 3755: 6(int) Load 8(invocation) 3756: 3224(ptr) AccessChain 34(data) 73 3216 3757: 28(i64vec4) Load 3756 3758: 28(i64vec4) GroupNonUniformUMax 42 ExclusiveScan 3757 3759: 3224(ptr) AccessChain 34(data) 3755 3216 Store 3759 3758 3760: 6(int) Load 8(invocation) 3761: 3217(ptr) AccessChain 34(data) 37 3216 38 3762: 27(int64_t) Load 3761 3763: 27(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3762 3764: 3217(ptr) AccessChain 34(data) 3760 3216 38 Store 3764 3763 3765: 6(int) Load 8(invocation) 3766: 3224(ptr) AccessChain 34(data) 46 3216 3767: 28(i64vec4) Load 3766 3768:3223(i64vec2) VectorShuffle 3767 3767 0 1 3769:3223(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3768 3770: 3217(ptr) AccessChain 34(data) 3765 3216 38 3771: 27(int64_t) CompositeExtract 3769 0 Store 3770 3771 3772: 3217(ptr) AccessChain 34(data) 3765 3216 55 3773: 27(int64_t) CompositeExtract 3769 1 Store 3772 3773 3774: 6(int) Load 8(invocation) 3775: 3224(ptr) AccessChain 34(data) 59 3216 3776: 28(i64vec4) Load 3775 3777:3234(i64vec3) VectorShuffle 3776 3776 0 1 2 3778:3234(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3777 3779: 3217(ptr) AccessChain 34(data) 3774 3216 38 3780: 27(int64_t) CompositeExtract 3778 0 Store 3779 3780 3781: 3217(ptr) AccessChain 34(data) 3774 3216 55 3782: 27(int64_t) CompositeExtract 3778 1 Store 3781 3782 3783: 3217(ptr) AccessChain 34(data) 3774 3216 69 3784: 27(int64_t) CompositeExtract 3778 2 Store 3783 3784 3785: 6(int) Load 8(invocation) 3786: 3224(ptr) AccessChain 34(data) 73 3216 3787: 28(i64vec4) Load 3786 3788: 28(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3787 3789: 3224(ptr) AccessChain 34(data) 3785 3216 Store 3789 3788 3790: 6(int) Load 8(invocation) 3791: 3217(ptr) AccessChain 34(data) 37 3216 38 3792: 27(int64_t) Load 3791 3793: 27(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 3792 3794: 3217(ptr) AccessChain 34(data) 3790 3216 38 Store 3794 3793 3795: 6(int) Load 8(invocation) 3796: 3224(ptr) AccessChain 34(data) 46 3216 3797: 28(i64vec4) Load 3796 3798:3223(i64vec2) VectorShuffle 3797 3797 0 1 3799:3223(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 3798 3800: 3217(ptr) AccessChain 34(data) 3795 3216 38 3801: 27(int64_t) CompositeExtract 3799 0 Store 3800 3801 3802: 3217(ptr) AccessChain 34(data) 3795 3216 55 3803: 27(int64_t) CompositeExtract 3799 1 Store 3802 3803 3804: 6(int) Load 8(invocation) 3805: 3224(ptr) AccessChain 34(data) 59 3216 3806: 28(i64vec4) Load 3805 3807:3234(i64vec3) VectorShuffle 3806 3806 0 1 2 3808:3234(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 3807 3809: 3217(ptr) AccessChain 34(data) 3804 3216 38 3810: 27(int64_t) CompositeExtract 3808 0 Store 3809 3810 3811: 3217(ptr) AccessChain 34(data) 3804 3216 55 3812: 27(int64_t) CompositeExtract 3808 1 Store 3811 3812 3813: 3217(ptr) AccessChain 34(data) 3804 3216 69 3814: 27(int64_t) CompositeExtract 3808 2 Store 3813 3814 3815: 6(int) Load 8(invocation) 3816: 3224(ptr) AccessChain 34(data) 73 3216 3817: 28(i64vec4) Load 3816 3818: 28(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 3817 3819: 3224(ptr) AccessChain 34(data) 3815 3216 Store 3819 3818 3820: 6(int) Load 8(invocation) 3821: 3217(ptr) AccessChain 34(data) 37 3216 38 3822: 27(int64_t) Load 3821 3823: 27(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 3822 3824: 3217(ptr) AccessChain 34(data) 3820 3216 38 Store 3824 3823 3825: 6(int) Load 8(invocation) 3826: 3224(ptr) AccessChain 34(data) 46 3216 3827: 28(i64vec4) Load 3826 3828:3223(i64vec2) VectorShuffle 3827 3827 0 1 3829:3223(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 3828 3830: 3217(ptr) AccessChain 34(data) 3825 3216 38 3831: 27(int64_t) CompositeExtract 3829 0 Store 3830 3831 3832: 3217(ptr) AccessChain 34(data) 3825 3216 55 3833: 27(int64_t) CompositeExtract 3829 1 Store 3832 3833 3834: 6(int) Load 8(invocation) 3835: 3224(ptr) AccessChain 34(data) 59 3216 3836: 28(i64vec4) Load 3835 3837:3234(i64vec3) VectorShuffle 3836 3836 0 1 2 3838:3234(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 3837 3839: 3217(ptr) AccessChain 34(data) 3834 3216 38 3840: 27(int64_t) CompositeExtract 3838 0 Store 3839 3840 3841: 3217(ptr) AccessChain 34(data) 3834 3216 55 3842: 27(int64_t) CompositeExtract 3838 1 Store 3841 3842 3843: 3217(ptr) AccessChain 34(data) 3834 3216 69 3844: 27(int64_t) CompositeExtract 3838 2 Store 3843 3844 3845: 6(int) Load 8(invocation) 3846: 3224(ptr) AccessChain 34(data) 73 3216 3847: 28(i64vec4) Load 3846 3848: 28(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 3847 3849: 3224(ptr) AccessChain 34(data) 3845 3216 Store 3849 3848 3850: 6(int) Load 8(invocation) 3853: 3852(ptr) AccessChain 34(data) 37 3851 38 3854:29(float16_t) Load 3853 3855:29(float16_t) GroupNonUniformFAdd 42 Reduce 3854 3856: 3852(ptr) AccessChain 34(data) 3850 3851 38 Store 3856 3855 3857: 6(int) Load 8(invocation) 3860: 3859(ptr) AccessChain 34(data) 46 3851 3861: 30(f16vec4) Load 3860 3862:3858(f16vec2) VectorShuffle 3861 3861 0 1 3863:3858(f16vec2) GroupNonUniformFAdd 42 Reduce 3862 3864: 3852(ptr) AccessChain 34(data) 3857 3851 38 3865:29(float16_t) CompositeExtract 3863 0 Store 3864 3865 3866: 3852(ptr) AccessChain 34(data) 3857 3851 55 3867:29(float16_t) CompositeExtract 3863 1 Store 3866 3867 3868: 6(int) Load 8(invocation) 3870: 3859(ptr) AccessChain 34(data) 59 3851 3871: 30(f16vec4) Load 3870 3872:3869(f16vec3) VectorShuffle 3871 3871 0 1 2 3873:3869(f16vec3) GroupNonUniformFAdd 42 Reduce 3872 3874: 3852(ptr) AccessChain 34(data) 3868 3851 38 3875:29(float16_t) CompositeExtract 3873 0 Store 3874 3875 3876: 3852(ptr) AccessChain 34(data) 3868 3851 55 3877:29(float16_t) CompositeExtract 3873 1 Store 3876 3877 3878: 3852(ptr) AccessChain 34(data) 3868 3851 69 3879:29(float16_t) CompositeExtract 3873 2 Store 3878 3879 3880: 6(int) Load 8(invocation) 3881: 3859(ptr) AccessChain 34(data) 73 3851 3882: 30(f16vec4) Load 3881 3883: 30(f16vec4) GroupNonUniformFAdd 42 Reduce 3882 3884: 3859(ptr) AccessChain 34(data) 3880 3851 Store 3884 3883 3885: 6(int) Load 8(invocation) 3886: 3852(ptr) AccessChain 34(data) 37 3851 38 3887:29(float16_t) Load 3886 3888:29(float16_t) GroupNonUniformFMul 42 Reduce 3887 3889: 3852(ptr) AccessChain 34(data) 3885 3851 38 Store 3889 3888 3890: 6(int) Load 8(invocation) 3891: 3859(ptr) AccessChain 34(data) 46 3851 3892: 30(f16vec4) Load 3891 3893:3858(f16vec2) VectorShuffle 3892 3892 0 1 3894:3858(f16vec2) GroupNonUniformFMul 42 Reduce 3893 3895: 3852(ptr) AccessChain 34(data) 3890 3851 38 3896:29(float16_t) CompositeExtract 3894 0 Store 3895 3896 3897: 3852(ptr) AccessChain 34(data) 3890 3851 55 3898:29(float16_t) CompositeExtract 3894 1 Store 3897 3898 3899: 6(int) Load 8(invocation) 3900: 3859(ptr) AccessChain 34(data) 59 3851 3901: 30(f16vec4) Load 3900 3902:3869(f16vec3) VectorShuffle 3901 3901 0 1 2 3903:3869(f16vec3) GroupNonUniformFMul 42 Reduce 3902 3904: 3852(ptr) AccessChain 34(data) 3899 3851 38 3905:29(float16_t) CompositeExtract 3903 0 Store 3904 3905 3906: 3852(ptr) AccessChain 34(data) 3899 3851 55 3907:29(float16_t) CompositeExtract 3903 1 Store 3906 3907 3908: 3852(ptr) AccessChain 34(data) 3899 3851 69 3909:29(float16_t) CompositeExtract 3903 2 Store 3908 3909 3910: 6(int) Load 8(invocation) 3911: 3859(ptr) AccessChain 34(data) 73 3851 3912: 30(f16vec4) Load 3911 3913: 30(f16vec4) GroupNonUniformFMul 42 Reduce 3912 3914: 3859(ptr) AccessChain 34(data) 3910 3851 Store 3914 3913 3915: 6(int) Load 8(invocation) 3916: 3852(ptr) AccessChain 34(data) 37 3851 38 3917:29(float16_t) Load 3916 3918:29(float16_t) GroupNonUniformFMin 42 Reduce 3917 3919: 3852(ptr) AccessChain 34(data) 3915 3851 38 Store 3919 3918 3920: 6(int) Load 8(invocation) 3921: 3859(ptr) AccessChain 34(data) 46 3851 3922: 30(f16vec4) Load 3921 3923:3858(f16vec2) VectorShuffle 3922 3922 0 1 3924:3858(f16vec2) GroupNonUniformFMin 42 Reduce 3923 3925: 3852(ptr) AccessChain 34(data) 3920 3851 38 3926:29(float16_t) CompositeExtract 3924 0 Store 3925 3926 3927: 3852(ptr) AccessChain 34(data) 3920 3851 55 3928:29(float16_t) CompositeExtract 3924 1 Store 3927 3928 3929: 6(int) Load 8(invocation) 3930: 3859(ptr) AccessChain 34(data) 59 3851 3931: 30(f16vec4) Load 3930 3932:3869(f16vec3) VectorShuffle 3931 3931 0 1 2 3933:3869(f16vec3) GroupNonUniformFMin 42 Reduce 3932 3934: 3852(ptr) AccessChain 34(data) 3929 3851 38 3935:29(float16_t) CompositeExtract 3933 0 Store 3934 3935 3936: 3852(ptr) AccessChain 34(data) 3929 3851 55 3937:29(float16_t) CompositeExtract 3933 1 Store 3936 3937 3938: 3852(ptr) AccessChain 34(data) 3929 3851 69 3939:29(float16_t) CompositeExtract 3933 2 Store 3938 3939 3940: 6(int) Load 8(invocation) 3941: 3859(ptr) AccessChain 34(data) 73 3851 3942: 30(f16vec4) Load 3941 3943: 30(f16vec4) GroupNonUniformFMin 42 Reduce 3942 3944: 3859(ptr) AccessChain 34(data) 3940 3851 Store 3944 3943 3945: 6(int) Load 8(invocation) 3946: 3852(ptr) AccessChain 34(data) 37 3851 38 3947:29(float16_t) Load 3946 3948:29(float16_t) GroupNonUniformFMax 42 Reduce 3947 3949: 3852(ptr) AccessChain 34(data) 3945 3851 38 Store 3949 3948 3950: 6(int) Load 8(invocation) 3951: 3859(ptr) AccessChain 34(data) 46 3851 3952: 30(f16vec4) Load 3951 3953:3858(f16vec2) VectorShuffle 3952 3952 0 1 3954:3858(f16vec2) GroupNonUniformFMax 42 Reduce 3953 3955: 3852(ptr) AccessChain 34(data) 3950 3851 38 3956:29(float16_t) CompositeExtract 3954 0 Store 3955 3956 3957: 3852(ptr) AccessChain 34(data) 3950 3851 55 3958:29(float16_t) CompositeExtract 3954 1 Store 3957 3958 3959: 6(int) Load 8(invocation) 3960: 3859(ptr) AccessChain 34(data) 59 3851 3961: 30(f16vec4) Load 3960 3962:3869(f16vec3) VectorShuffle 3961 3961 0 1 2 3963:3869(f16vec3) GroupNonUniformFMax 42 Reduce 3962 3964: 3852(ptr) AccessChain 34(data) 3959 3851 38 3965:29(float16_t) CompositeExtract 3963 0 Store 3964 3965 3966: 3852(ptr) AccessChain 34(data) 3959 3851 55 3967:29(float16_t) CompositeExtract 3963 1 Store 3966 3967 3968: 3852(ptr) AccessChain 34(data) 3959 3851 69 3969:29(float16_t) CompositeExtract 3963 2 Store 3968 3969 3970: 6(int) Load 8(invocation) 3971: 3859(ptr) AccessChain 34(data) 73 3851 3972: 30(f16vec4) Load 3971 3973: 30(f16vec4) GroupNonUniformFMax 42 Reduce 3972 3974: 3859(ptr) AccessChain 34(data) 3970 3851 Store 3974 3973 3975: 6(int) Load 8(invocation) 3976: 3852(ptr) AccessChain 34(data) 37 3851 38 3977:29(float16_t) Load 3976 3978:29(float16_t) GroupNonUniformFAdd 42 InclusiveScan 3977 3979: 3852(ptr) AccessChain 34(data) 3975 3851 38 Store 3979 3978 3980: 6(int) Load 8(invocation) 3981: 3859(ptr) AccessChain 34(data) 46 3851 3982: 30(f16vec4) Load 3981 3983:3858(f16vec2) VectorShuffle 3982 3982 0 1 3984:3858(f16vec2) GroupNonUniformFAdd 42 InclusiveScan 3983 3985: 3852(ptr) AccessChain 34(data) 3980 3851 38 3986:29(float16_t) CompositeExtract 3984 0 Store 3985 3986 3987: 3852(ptr) AccessChain 34(data) 3980 3851 55 3988:29(float16_t) CompositeExtract 3984 1 Store 3987 3988 3989: 6(int) Load 8(invocation) 3990: 3859(ptr) AccessChain 34(data) 59 3851 3991: 30(f16vec4) Load 3990 3992:3869(f16vec3) VectorShuffle 3991 3991 0 1 2 3993:3869(f16vec3) GroupNonUniformFAdd 42 InclusiveScan 3992 3994: 3852(ptr) AccessChain 34(data) 3989 3851 38 3995:29(float16_t) CompositeExtract 3993 0 Store 3994 3995 3996: 3852(ptr) AccessChain 34(data) 3989 3851 55 3997:29(float16_t) CompositeExtract 3993 1 Store 3996 3997 3998: 3852(ptr) AccessChain 34(data) 3989 3851 69 3999:29(float16_t) CompositeExtract 3993 2 Store 3998 3999 4000: 6(int) Load 8(invocation) 4001: 3859(ptr) AccessChain 34(data) 73 3851 4002: 30(f16vec4) Load 4001 4003: 30(f16vec4) GroupNonUniformFAdd 42 InclusiveScan 4002 4004: 3859(ptr) AccessChain 34(data) 4000 3851 Store 4004 4003 4005: 6(int) Load 8(invocation) 4006: 3852(ptr) AccessChain 34(data) 37 3851 38 4007:29(float16_t) Load 4006 4008:29(float16_t) GroupNonUniformFMul 42 InclusiveScan 4007 4009: 3852(ptr) AccessChain 34(data) 4005 3851 38 Store 4009 4008 4010: 6(int) Load 8(invocation) 4011: 3859(ptr) AccessChain 34(data) 46 3851 4012: 30(f16vec4) Load 4011 4013:3858(f16vec2) VectorShuffle 4012 4012 0 1 4014:3858(f16vec2) GroupNonUniformFMul 42 InclusiveScan 4013 4015: 3852(ptr) AccessChain 34(data) 4010 3851 38 4016:29(float16_t) CompositeExtract 4014 0 Store 4015 4016 4017: 3852(ptr) AccessChain 34(data) 4010 3851 55 4018:29(float16_t) CompositeExtract 4014 1 Store 4017 4018 4019: 6(int) Load 8(invocation) 4020: 3859(ptr) AccessChain 34(data) 59 3851 4021: 30(f16vec4) Load 4020 4022:3869(f16vec3) VectorShuffle 4021 4021 0 1 2 4023:3869(f16vec3) GroupNonUniformFMul 42 InclusiveScan 4022 4024: 3852(ptr) AccessChain 34(data) 4019 3851 38 4025:29(float16_t) CompositeExtract 4023 0 Store 4024 4025 4026: 3852(ptr) AccessChain 34(data) 4019 3851 55 4027:29(float16_t) CompositeExtract 4023 1 Store 4026 4027 4028: 3852(ptr) AccessChain 34(data) 4019 3851 69 4029:29(float16_t) CompositeExtract 4023 2 Store 4028 4029 4030: 6(int) Load 8(invocation) 4031: 3859(ptr) AccessChain 34(data) 73 3851 4032: 30(f16vec4) Load 4031 4033: 30(f16vec4) GroupNonUniformFMul 42 InclusiveScan 4032 4034: 3859(ptr) AccessChain 34(data) 4030 3851 Store 4034 4033 4035: 6(int) Load 8(invocation) 4036: 3852(ptr) AccessChain 34(data) 37 3851 38 4037:29(float16_t) Load 4036 4038:29(float16_t) GroupNonUniformFMin 42 InclusiveScan 4037 4039: 3852(ptr) AccessChain 34(data) 4035 3851 38 Store 4039 4038 4040: 6(int) Load 8(invocation) 4041: 3859(ptr) AccessChain 34(data) 46 3851 4042: 30(f16vec4) Load 4041 4043:3858(f16vec2) VectorShuffle 4042 4042 0 1 4044:3858(f16vec2) GroupNonUniformFMin 42 InclusiveScan 4043 4045: 3852(ptr) AccessChain 34(data) 4040 3851 38 4046:29(float16_t) CompositeExtract 4044 0 Store 4045 4046 4047: 3852(ptr) AccessChain 34(data) 4040 3851 55 4048:29(float16_t) CompositeExtract 4044 1 Store 4047 4048 4049: 6(int) Load 8(invocation) 4050: 3859(ptr) AccessChain 34(data) 59 3851 4051: 30(f16vec4) Load 4050 4052:3869(f16vec3) VectorShuffle 4051 4051 0 1 2 4053:3869(f16vec3) GroupNonUniformFMin 42 InclusiveScan 4052 4054: 3852(ptr) AccessChain 34(data) 4049 3851 38 4055:29(float16_t) CompositeExtract 4053 0 Store 4054 4055 4056: 3852(ptr) AccessChain 34(data) 4049 3851 55 4057:29(float16_t) CompositeExtract 4053 1 Store 4056 4057 4058: 3852(ptr) AccessChain 34(data) 4049 3851 69 4059:29(float16_t) CompositeExtract 4053 2 Store 4058 4059 4060: 6(int) Load 8(invocation) 4061: 3859(ptr) AccessChain 34(data) 73 3851 4062: 30(f16vec4) Load 4061 4063: 30(f16vec4) GroupNonUniformFMin 42 InclusiveScan 4062 4064: 3859(ptr) AccessChain 34(data) 4060 3851 Store 4064 4063 4065: 6(int) Load 8(invocation) 4066: 3852(ptr) AccessChain 34(data) 37 3851 38 4067:29(float16_t) Load 4066 4068:29(float16_t) GroupNonUniformFMax 42 InclusiveScan 4067 4069: 3852(ptr) AccessChain 34(data) 4065 3851 38 Store 4069 4068 4070: 6(int) Load 8(invocation) 4071: 3859(ptr) AccessChain 34(data) 46 3851 4072: 30(f16vec4) Load 4071 4073:3858(f16vec2) VectorShuffle 4072 4072 0 1 4074:3858(f16vec2) GroupNonUniformFMax 42 InclusiveScan 4073 4075: 3852(ptr) AccessChain 34(data) 4070 3851 38 4076:29(float16_t) CompositeExtract 4074 0 Store 4075 4076 4077: 3852(ptr) AccessChain 34(data) 4070 3851 55 4078:29(float16_t) CompositeExtract 4074 1 Store 4077 4078 4079: 6(int) Load 8(invocation) 4080: 3859(ptr) AccessChain 34(data) 59 3851 4081: 30(f16vec4) Load 4080 4082:3869(f16vec3) VectorShuffle 4081 4081 0 1 2 4083:3869(f16vec3) GroupNonUniformFMax 42 InclusiveScan 4082 4084: 3852(ptr) AccessChain 34(data) 4079 3851 38 4085:29(float16_t) CompositeExtract 4083 0 Store 4084 4085 4086: 3852(ptr) AccessChain 34(data) 4079 3851 55 4087:29(float16_t) CompositeExtract 4083 1 Store 4086 4087 4088: 3852(ptr) AccessChain 34(data) 4079 3851 69 4089:29(float16_t) CompositeExtract 4083 2 Store 4088 4089 4090: 6(int) Load 8(invocation) 4091: 3859(ptr) AccessChain 34(data) 73 3851 4092: 30(f16vec4) Load 4091 4093: 30(f16vec4) GroupNonUniformFMax 42 InclusiveScan 4092 4094: 3859(ptr) AccessChain 34(data) 4090 3851 Store 4094 4093 4095: 6(int) Load 8(invocation) 4096: 3852(ptr) AccessChain 34(data) 37 3851 38 4097:29(float16_t) Load 4096 4098:29(float16_t) GroupNonUniformFAdd 42 ExclusiveScan 4097 4099: 3852(ptr) AccessChain 34(data) 4095 3851 38 Store 4099 4098 4100: 6(int) Load 8(invocation) 4101: 3859(ptr) AccessChain 34(data) 46 3851 4102: 30(f16vec4) Load 4101 4103:3858(f16vec2) VectorShuffle 4102 4102 0 1 4104:3858(f16vec2) GroupNonUniformFAdd 42 ExclusiveScan 4103 4105: 3852(ptr) AccessChain 34(data) 4100 3851 38 4106:29(float16_t) CompositeExtract 4104 0 Store 4105 4106 4107: 3852(ptr) AccessChain 34(data) 4100 3851 55 4108:29(float16_t) CompositeExtract 4104 1 Store 4107 4108 4109: 6(int) Load 8(invocation) 4110: 3859(ptr) AccessChain 34(data) 59 3851 4111: 30(f16vec4) Load 4110 4112:3869(f16vec3) VectorShuffle 4111 4111 0 1 2 4113:3869(f16vec3) GroupNonUniformFAdd 42 ExclusiveScan 4112 4114: 3852(ptr) AccessChain 34(data) 4109 3851 38 4115:29(float16_t) CompositeExtract 4113 0 Store 4114 4115 4116: 3852(ptr) AccessChain 34(data) 4109 3851 55 4117:29(float16_t) CompositeExtract 4113 1 Store 4116 4117 4118: 3852(ptr) AccessChain 34(data) 4109 3851 69 4119:29(float16_t) CompositeExtract 4113 2 Store 4118 4119 4120: 6(int) Load 8(invocation) 4121: 3859(ptr) AccessChain 34(data) 73 3851 4122: 30(f16vec4) Load 4121 4123: 30(f16vec4) GroupNonUniformFAdd 42 ExclusiveScan 4122 4124: 3859(ptr) AccessChain 34(data) 4120 3851 Store 4124 4123 4125: 6(int) Load 8(invocation) 4126: 3852(ptr) AccessChain 34(data) 37 3851 38 4127:29(float16_t) Load 4126 4128:29(float16_t) GroupNonUniformFMul 42 ExclusiveScan 4127 4129: 3852(ptr) AccessChain 34(data) 4125 3851 38 Store 4129 4128 4130: 6(int) Load 8(invocation) 4131: 3859(ptr) AccessChain 34(data) 46 3851 4132: 30(f16vec4) Load 4131 4133:3858(f16vec2) VectorShuffle 4132 4132 0 1 4134:3858(f16vec2) GroupNonUniformFMul 42 ExclusiveScan 4133 4135: 3852(ptr) AccessChain 34(data) 4130 3851 38 4136:29(float16_t) CompositeExtract 4134 0 Store 4135 4136 4137: 3852(ptr) AccessChain 34(data) 4130 3851 55 4138:29(float16_t) CompositeExtract 4134 1 Store 4137 4138 4139: 6(int) Load 8(invocation) 4140: 3859(ptr) AccessChain 34(data) 59 3851 4141: 30(f16vec4) Load 4140 4142:3869(f16vec3) VectorShuffle 4141 4141 0 1 2 4143:3869(f16vec3) GroupNonUniformFMul 42 ExclusiveScan 4142 4144: 3852(ptr) AccessChain 34(data) 4139 3851 38 4145:29(float16_t) CompositeExtract 4143 0 Store 4144 4145 4146: 3852(ptr) AccessChain 34(data) 4139 3851 55 4147:29(float16_t) CompositeExtract 4143 1 Store 4146 4147 4148: 3852(ptr) AccessChain 34(data) 4139 3851 69 4149:29(float16_t) CompositeExtract 4143 2 Store 4148 4149 4150: 6(int) Load 8(invocation) 4151: 3859(ptr) AccessChain 34(data) 73 3851 4152: 30(f16vec4) Load 4151 4153: 30(f16vec4) GroupNonUniformFMul 42 ExclusiveScan 4152 4154: 3859(ptr) AccessChain 34(data) 4150 3851 Store 4154 4153 4155: 6(int) Load 8(invocation) 4156: 3852(ptr) AccessChain 34(data) 37 3851 38 4157:29(float16_t) Load 4156 4158:29(float16_t) GroupNonUniformFMin 42 ExclusiveScan 4157 4159: 3852(ptr) AccessChain 34(data) 4155 3851 38 Store 4159 4158 4160: 6(int) Load 8(invocation) 4161: 3859(ptr) AccessChain 34(data) 46 3851 4162: 30(f16vec4) Load 4161 4163:3858(f16vec2) VectorShuffle 4162 4162 0 1 4164:3858(f16vec2) GroupNonUniformFMin 42 ExclusiveScan 4163 4165: 3852(ptr) AccessChain 34(data) 4160 3851 38 4166:29(float16_t) CompositeExtract 4164 0 Store 4165 4166 4167: 3852(ptr) AccessChain 34(data) 4160 3851 55 4168:29(float16_t) CompositeExtract 4164 1 Store 4167 4168 4169: 6(int) Load 8(invocation) 4170: 3859(ptr) AccessChain 34(data) 59 3851 4171: 30(f16vec4) Load 4170 4172:3869(f16vec3) VectorShuffle 4171 4171 0 1 2 4173:3869(f16vec3) GroupNonUniformFMin 42 ExclusiveScan 4172 4174: 3852(ptr) AccessChain 34(data) 4169 3851 38 4175:29(float16_t) CompositeExtract 4173 0 Store 4174 4175 4176: 3852(ptr) AccessChain 34(data) 4169 3851 55 4177:29(float16_t) CompositeExtract 4173 1 Store 4176 4177 4178: 3852(ptr) AccessChain 34(data) 4169 3851 69 4179:29(float16_t) CompositeExtract 4173 2 Store 4178 4179 4180: 6(int) Load 8(invocation) 4181: 3859(ptr) AccessChain 34(data) 73 3851 4182: 30(f16vec4) Load 4181 4183: 30(f16vec4) GroupNonUniformFMin 42 ExclusiveScan 4182 4184: 3859(ptr) AccessChain 34(data) 4180 3851 Store 4184 4183 4185: 6(int) Load 8(invocation) 4186: 3852(ptr) AccessChain 34(data) 37 3851 38 4187:29(float16_t) Load 4186 4188:29(float16_t) GroupNonUniformFMax 42 ExclusiveScan 4187 4189: 3852(ptr) AccessChain 34(data) 4185 3851 38 Store 4189 4188 4190: 6(int) Load 8(invocation) 4191: 3859(ptr) AccessChain 34(data) 46 3851 4192: 30(f16vec4) Load 4191 4193:3858(f16vec2) VectorShuffle 4192 4192 0 1 4194:3858(f16vec2) GroupNonUniformFMax 42 ExclusiveScan 4193 4195: 3852(ptr) AccessChain 34(data) 4190 3851 38 4196:29(float16_t) CompositeExtract 4194 0 Store 4195 4196 4197: 3852(ptr) AccessChain 34(data) 4190 3851 55 4198:29(float16_t) CompositeExtract 4194 1 Store 4197 4198 4199: 6(int) Load 8(invocation) 4200: 3859(ptr) AccessChain 34(data) 59 3851 4201: 30(f16vec4) Load 4200 4202:3869(f16vec3) VectorShuffle 4201 4201 0 1 2 4203:3869(f16vec3) GroupNonUniformFMax 42 ExclusiveScan 4202 4204: 3852(ptr) AccessChain 34(data) 4199 3851 38 4205:29(float16_t) CompositeExtract 4203 0 Store 4204 4205 4206: 3852(ptr) AccessChain 34(data) 4199 3851 55 4207:29(float16_t) CompositeExtract 4203 1 Store 4206 4207 4208: 3852(ptr) AccessChain 34(data) 4199 3851 69 4209:29(float16_t) CompositeExtract 4203 2 Store 4208 4209 4210: 6(int) Load 8(invocation) 4211: 3859(ptr) AccessChain 34(data) 73 3851 4212: 30(f16vec4) Load 4211 4213: 30(f16vec4) GroupNonUniformFMax 42 ExclusiveScan 4212 4214: 3859(ptr) AccessChain 34(data) 4210 3851 Store 4214 4213 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out000066400000000000000000002206641506534232700277760ustar00rootroot00000000000000spv.subgroupExtendedTypesArithmeticNeg.comp ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:46: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:47: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:48: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:51: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:52: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:53: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:56: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:57: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:58: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:61: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:62: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:63: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:66: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:67: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:68: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:71: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:72: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:73: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:76: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:77: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:78: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:81: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:82: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:83: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:86: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:87: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:88: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:91: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:92: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:93: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:96: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:97: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:98: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:101: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:102: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:103: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:106: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:107: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:108: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:111: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:112: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:113: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:116: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:117: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:118: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:121: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:122: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:123: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:126: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:127: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:128: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:131: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:132: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:133: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:136: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:137: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:138: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:141: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:142: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:143: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:146: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:147: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:148: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:151: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:152: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:153: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:156: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:157: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:158: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:161: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:162: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:163: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:166: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:167: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:168: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:169: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:171: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:172: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:173: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:174: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:176: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:177: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:178: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:179: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:181: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:182: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:183: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:184: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:186: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:187: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:188: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:189: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:191: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:192: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:193: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:194: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:196: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:197: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:198: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:199: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:201: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:202: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:203: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:204: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:206: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:207: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:208: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:209: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:211: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:212: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:213: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:214: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:216: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:217: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:218: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:219: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:221: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:222: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:223: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:224: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:226: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:227: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:228: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:229: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:231: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:232: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:233: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:234: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:236: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:237: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:238: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:239: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:241: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:242: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:243: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:244: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:246: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:247: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:248: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:249: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:251: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:252: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:253: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:254: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:256: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:257: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:258: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:259: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:261: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:262: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:263: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:264: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:266: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:267: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:268: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:269: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:271: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:272: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:273: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:274: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:276: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:277: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:278: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:279: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:281: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:282: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:283: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:284: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:286: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:287: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:288: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:289: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:291: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:292: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:293: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:294: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:296: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:297: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:298: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:299: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:301: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:302: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:303: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:304: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:306: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:307: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:308: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:309: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:311: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:312: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:313: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:314: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:316: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:317: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:318: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:319: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:321: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:322: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:323: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:324: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:326: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:327: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:328: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:329: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:331: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:332: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:333: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:334: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:336: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:337: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:338: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:339: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:341: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:342: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:343: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:344: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:346: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:347: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:348: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:349: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:351: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:352: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:353: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:354: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:356: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:357: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:358: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:359: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:361: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:362: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:363: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:364: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:366: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:367: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:368: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:369: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:371: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:372: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:373: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:374: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:376: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:377: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:378: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:379: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:381: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:382: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:383: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:384: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:386: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:387: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:388: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:389: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:391: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:392: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:393: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:394: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:396: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:397: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:398: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:399: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:401: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:402: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:403: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:404: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:406: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:407: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:408: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:409: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:411: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:412: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:413: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:414: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:416: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:417: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:418: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:419: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:421: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:422: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:423: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:424: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:426: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:427: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:428: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:429: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:431: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:432: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:433: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:434: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:436: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:437: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:438: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:439: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:441: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:442: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:443: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:444: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:446: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:447: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:448: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:449: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:451: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:452: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:453: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:454: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:456: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:457: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:458: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:459: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:461: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:462: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:463: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:464: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:466: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:467: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:468: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:469: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:471: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:472: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:473: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:474: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:476: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:477: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:478: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:479: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:481: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:482: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:483: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:484: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:486: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:487: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:488: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:489: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:491: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:492: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:493: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:494: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:496: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:497: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:498: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:499: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:501: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:502: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:503: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:504: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:506: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:507: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:508: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:509: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:511: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:512: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:513: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:514: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:516: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:517: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:518: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:519: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:521: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:522: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:523: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:524: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:526: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:527: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:528: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:529: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:531: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:532: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:533: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:534: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:536: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:537: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:538: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:539: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:541: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:542: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:543: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:544: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:546: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:547: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:548: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:549: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:551: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:552: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:553: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:554: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:556: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:557: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:558: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:559: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:561: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:562: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:563: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:564: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:566: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:567: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:568: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:569: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:571: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:572: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:573: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:574: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:576: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:577: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:578: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:579: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:581: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:582: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:583: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:584: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:586: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:587: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:588: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:589: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:591: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:592: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:593: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:594: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:596: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:597: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:598: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:599: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:601: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:602: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:603: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:604: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:606: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:607: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:608: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:609: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:611: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:612: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:613: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:614: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:616: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:617: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:618: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:619: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:621: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:622: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:623: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:624: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:626: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:627: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:628: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:629: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:631: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:632: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:633: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:634: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:636: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:637: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:638: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:639: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:641: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:642: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:643: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:644: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:646: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:647: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:648: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:649: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:651: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:652: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:653: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:654: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:656: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:657: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:658: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:659: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:661: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:662: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:663: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:664: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:666: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:667: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:668: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:669: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:671: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:672: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:673: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:674: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:676: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:677: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:678: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:679: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:681: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:682: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:683: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:684: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:686: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:687: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:688: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:689: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:691: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:692: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:693: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:694: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:696: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:697: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:698: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:699: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:701: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:702: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:703: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:704: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:706: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:707: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:708: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:709: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:711: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:712: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:713: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:714: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 552 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out000066400000000000000000001053221506534232700264610ustar00rootroot00000000000000spv.subgroupExtendedTypesBallot.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 498 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability GroupNonUniform Capability GroupNonUniformBallot Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_ballot" SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 31 "Buffers" MemberName 31(Buffers) 0 "i8" MemberName 31(Buffers) 1 "u8" MemberName 31(Buffers) 2 "i16" MemberName 31(Buffers) 3 "u16" MemberName 31(Buffers) 4 "i64" MemberName 31(Buffers) 5 "u64" MemberName 31(Buffers) 6 "f16" Name 34 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 MemberDecorate 31(Buffers) 3 Offset 16 MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 Decorate 34(data) Binding 0 Decorate 34(data) DescriptorSet 0 Decorate 497 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeInt 8 1 18: TypeVector 17(int8_t) 4 19: TypeInt 8 0 20: TypeVector 19(int8_t) 4 21: TypeInt 16 1 22: TypeVector 21(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 4 25: TypeInt 64 1 26: TypeVector 25(int64_t) 4 27: TypeInt 64 0 28: TypeVector 27(int64_t) 4 29: TypeFloat 16 30: TypeVector 29(float16_t) 4 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 32: TypeArray 31(Buffers) 15 33: TypePointer StorageBuffer 32 34(data): 33(ptr) Variable StorageBuffer 36: TypeInt 32 1 37: 36(int) Constant 0 38: 6(int) Constant 0 39: TypePointer StorageBuffer 17(int8_t) 42: 6(int) Constant 3 46: 36(int) Constant 1 47: TypeVector 17(int8_t) 2 48: TypePointer StorageBuffer 18(i8vec4) 55: 6(int) Constant 1 59: 36(int) Constant 2 60: TypeVector 17(int8_t) 3 69: 6(int) Constant 2 73: 36(int) Constant 3 109: TypePointer StorageBuffer 19(int8_t) 115: TypeVector 19(int8_t) 2 116: TypePointer StorageBuffer 20(i8vec4) 126: TypeVector 19(int8_t) 3 173: TypePointer StorageBuffer 21(int16_t) 179: TypeVector 21(int16_t) 2 180: TypePointer StorageBuffer 22(i16vec4) 190: TypeVector 21(int16_t) 3 237: TypePointer StorageBuffer 23(int16_t) 243: TypeVector 23(int16_t) 2 244: TypePointer StorageBuffer 24(i16vec4) 254: TypeVector 23(int16_t) 3 301: 36(int) Constant 4 302: TypePointer StorageBuffer 25(int64_t) 308: TypeVector 25(int64_t) 2 309: TypePointer StorageBuffer 26(i64vec4) 319: TypeVector 25(int64_t) 3 366: 36(int) Constant 5 367: TypePointer StorageBuffer 27(int64_t) 373: TypeVector 27(int64_t) 2 374: TypePointer StorageBuffer 28(i64vec4) 384: TypeVector 27(int64_t) 3 431: 36(int) Constant 6 432: TypePointer StorageBuffer 29(float16_t) 438: TypeVector 29(float16_t) 2 439: TypePointer StorageBuffer 30(f16vec4) 449: TypeVector 29(float16_t) 3 495: TypeVector 6(int) 3 496: 6(int) Constant 8 497: 495(ivec3) ConstantComposite 496 55 55 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 35: 6(int) Load 8(invocation) 40: 39(ptr) AccessChain 34(data) 37 37 38 41: 17(int8_t) Load 40 43: 17(int8_t) GroupNonUniformBroadcast 42 41 42 44: 39(ptr) AccessChain 34(data) 35 37 38 Store 44 43 45: 6(int) Load 8(invocation) 49: 48(ptr) AccessChain 34(data) 46 37 50: 18(i8vec4) Load 49 51: 47(i8vec2) VectorShuffle 50 50 0 1 52: 47(i8vec2) GroupNonUniformBroadcast 42 51 42 53: 39(ptr) AccessChain 34(data) 45 37 38 54: 17(int8_t) CompositeExtract 52 0 Store 53 54 56: 39(ptr) AccessChain 34(data) 45 37 55 57: 17(int8_t) CompositeExtract 52 1 Store 56 57 58: 6(int) Load 8(invocation) 61: 48(ptr) AccessChain 34(data) 59 37 62: 18(i8vec4) Load 61 63: 60(i8vec3) VectorShuffle 62 62 0 1 2 64: 60(i8vec3) GroupNonUniformBroadcast 42 63 42 65: 39(ptr) AccessChain 34(data) 58 37 38 66: 17(int8_t) CompositeExtract 64 0 Store 65 66 67: 39(ptr) AccessChain 34(data) 58 37 55 68: 17(int8_t) CompositeExtract 64 1 Store 67 68 70: 39(ptr) AccessChain 34(data) 58 37 69 71: 17(int8_t) CompositeExtract 64 2 Store 70 71 72: 6(int) Load 8(invocation) 74: 48(ptr) AccessChain 34(data) 73 37 75: 18(i8vec4) Load 74 76: 18(i8vec4) GroupNonUniformBroadcast 42 75 42 77: 48(ptr) AccessChain 34(data) 72 37 Store 77 76 78: 6(int) Load 8(invocation) 79: 39(ptr) AccessChain 34(data) 37 37 38 80: 17(int8_t) Load 79 81: 17(int8_t) GroupNonUniformBroadcastFirst 42 80 82: 39(ptr) AccessChain 34(data) 78 37 38 Store 82 81 83: 6(int) Load 8(invocation) 84: 48(ptr) AccessChain 34(data) 46 37 85: 18(i8vec4) Load 84 86: 47(i8vec2) VectorShuffle 85 85 0 1 87: 47(i8vec2) GroupNonUniformBroadcastFirst 42 86 88: 39(ptr) AccessChain 34(data) 83 37 38 89: 17(int8_t) CompositeExtract 87 0 Store 88 89 90: 39(ptr) AccessChain 34(data) 83 37 55 91: 17(int8_t) CompositeExtract 87 1 Store 90 91 92: 6(int) Load 8(invocation) 93: 48(ptr) AccessChain 34(data) 59 37 94: 18(i8vec4) Load 93 95: 60(i8vec3) VectorShuffle 94 94 0 1 2 96: 60(i8vec3) GroupNonUniformBroadcastFirst 42 95 97: 39(ptr) AccessChain 34(data) 92 37 38 98: 17(int8_t) CompositeExtract 96 0 Store 97 98 99: 39(ptr) AccessChain 34(data) 92 37 55 100: 17(int8_t) CompositeExtract 96 1 Store 99 100 101: 39(ptr) AccessChain 34(data) 92 37 69 102: 17(int8_t) CompositeExtract 96 2 Store 101 102 103: 6(int) Load 8(invocation) 104: 48(ptr) AccessChain 34(data) 73 37 105: 18(i8vec4) Load 104 106: 18(i8vec4) GroupNonUniformBroadcastFirst 42 105 107: 48(ptr) AccessChain 34(data) 103 37 Store 107 106 108: 6(int) Load 8(invocation) 110: 109(ptr) AccessChain 34(data) 37 46 38 111: 19(int8_t) Load 110 112: 19(int8_t) GroupNonUniformBroadcast 42 111 42 113: 109(ptr) AccessChain 34(data) 108 46 38 Store 113 112 114: 6(int) Load 8(invocation) 117: 116(ptr) AccessChain 34(data) 46 46 118: 20(i8vec4) Load 117 119: 115(i8vec2) VectorShuffle 118 118 0 1 120: 115(i8vec2) GroupNonUniformBroadcast 42 119 42 121: 109(ptr) AccessChain 34(data) 114 46 38 122: 19(int8_t) CompositeExtract 120 0 Store 121 122 123: 109(ptr) AccessChain 34(data) 114 46 55 124: 19(int8_t) CompositeExtract 120 1 Store 123 124 125: 6(int) Load 8(invocation) 127: 116(ptr) AccessChain 34(data) 59 46 128: 20(i8vec4) Load 127 129: 126(i8vec3) VectorShuffle 128 128 0 1 2 130: 126(i8vec3) GroupNonUniformBroadcast 42 129 42 131: 109(ptr) AccessChain 34(data) 125 46 38 132: 19(int8_t) CompositeExtract 130 0 Store 131 132 133: 109(ptr) AccessChain 34(data) 125 46 55 134: 19(int8_t) CompositeExtract 130 1 Store 133 134 135: 109(ptr) AccessChain 34(data) 125 46 69 136: 19(int8_t) CompositeExtract 130 2 Store 135 136 137: 6(int) Load 8(invocation) 138: 116(ptr) AccessChain 34(data) 73 46 139: 20(i8vec4) Load 138 140: 20(i8vec4) GroupNonUniformBroadcast 42 139 42 141: 116(ptr) AccessChain 34(data) 137 46 Store 141 140 142: 6(int) Load 8(invocation) 143: 109(ptr) AccessChain 34(data) 37 46 38 144: 19(int8_t) Load 143 145: 19(int8_t) GroupNonUniformBroadcastFirst 42 144 146: 109(ptr) AccessChain 34(data) 142 46 38 Store 146 145 147: 6(int) Load 8(invocation) 148: 116(ptr) AccessChain 34(data) 46 46 149: 20(i8vec4) Load 148 150: 115(i8vec2) VectorShuffle 149 149 0 1 151: 115(i8vec2) GroupNonUniformBroadcastFirst 42 150 152: 109(ptr) AccessChain 34(data) 147 46 38 153: 19(int8_t) CompositeExtract 151 0 Store 152 153 154: 109(ptr) AccessChain 34(data) 147 46 55 155: 19(int8_t) CompositeExtract 151 1 Store 154 155 156: 6(int) Load 8(invocation) 157: 116(ptr) AccessChain 34(data) 59 46 158: 20(i8vec4) Load 157 159: 126(i8vec3) VectorShuffle 158 158 0 1 2 160: 126(i8vec3) GroupNonUniformBroadcastFirst 42 159 161: 109(ptr) AccessChain 34(data) 156 46 38 162: 19(int8_t) CompositeExtract 160 0 Store 161 162 163: 109(ptr) AccessChain 34(data) 156 46 55 164: 19(int8_t) CompositeExtract 160 1 Store 163 164 165: 109(ptr) AccessChain 34(data) 156 46 69 166: 19(int8_t) CompositeExtract 160 2 Store 165 166 167: 6(int) Load 8(invocation) 168: 116(ptr) AccessChain 34(data) 73 46 169: 20(i8vec4) Load 168 170: 20(i8vec4) GroupNonUniformBroadcastFirst 42 169 171: 116(ptr) AccessChain 34(data) 167 46 Store 171 170 172: 6(int) Load 8(invocation) 174: 173(ptr) AccessChain 34(data) 37 59 38 175: 21(int16_t) Load 174 176: 21(int16_t) GroupNonUniformBroadcast 42 175 42 177: 173(ptr) AccessChain 34(data) 172 59 38 Store 177 176 178: 6(int) Load 8(invocation) 181: 180(ptr) AccessChain 34(data) 46 59 182: 22(i16vec4) Load 181 183:179(i16vec2) VectorShuffle 182 182 0 1 184:179(i16vec2) GroupNonUniformBroadcast 42 183 42 185: 173(ptr) AccessChain 34(data) 178 59 38 186: 21(int16_t) CompositeExtract 184 0 Store 185 186 187: 173(ptr) AccessChain 34(data) 178 59 55 188: 21(int16_t) CompositeExtract 184 1 Store 187 188 189: 6(int) Load 8(invocation) 191: 180(ptr) AccessChain 34(data) 59 59 192: 22(i16vec4) Load 191 193:190(i16vec3) VectorShuffle 192 192 0 1 2 194:190(i16vec3) GroupNonUniformBroadcast 42 193 42 195: 173(ptr) AccessChain 34(data) 189 59 38 196: 21(int16_t) CompositeExtract 194 0 Store 195 196 197: 173(ptr) AccessChain 34(data) 189 59 55 198: 21(int16_t) CompositeExtract 194 1 Store 197 198 199: 173(ptr) AccessChain 34(data) 189 59 69 200: 21(int16_t) CompositeExtract 194 2 Store 199 200 201: 6(int) Load 8(invocation) 202: 180(ptr) AccessChain 34(data) 73 59 203: 22(i16vec4) Load 202 204: 22(i16vec4) GroupNonUniformBroadcast 42 203 42 205: 180(ptr) AccessChain 34(data) 201 59 Store 205 204 206: 6(int) Load 8(invocation) 207: 173(ptr) AccessChain 34(data) 37 59 38 208: 21(int16_t) Load 207 209: 21(int16_t) GroupNonUniformBroadcastFirst 42 208 210: 173(ptr) AccessChain 34(data) 206 59 38 Store 210 209 211: 6(int) Load 8(invocation) 212: 180(ptr) AccessChain 34(data) 46 59 213: 22(i16vec4) Load 212 214:179(i16vec2) VectorShuffle 213 213 0 1 215:179(i16vec2) GroupNonUniformBroadcastFirst 42 214 216: 173(ptr) AccessChain 34(data) 211 59 38 217: 21(int16_t) CompositeExtract 215 0 Store 216 217 218: 173(ptr) AccessChain 34(data) 211 59 55 219: 21(int16_t) CompositeExtract 215 1 Store 218 219 220: 6(int) Load 8(invocation) 221: 180(ptr) AccessChain 34(data) 59 59 222: 22(i16vec4) Load 221 223:190(i16vec3) VectorShuffle 222 222 0 1 2 224:190(i16vec3) GroupNonUniformBroadcastFirst 42 223 225: 173(ptr) AccessChain 34(data) 220 59 38 226: 21(int16_t) CompositeExtract 224 0 Store 225 226 227: 173(ptr) AccessChain 34(data) 220 59 55 228: 21(int16_t) CompositeExtract 224 1 Store 227 228 229: 173(ptr) AccessChain 34(data) 220 59 69 230: 21(int16_t) CompositeExtract 224 2 Store 229 230 231: 6(int) Load 8(invocation) 232: 180(ptr) AccessChain 34(data) 73 59 233: 22(i16vec4) Load 232 234: 22(i16vec4) GroupNonUniformBroadcastFirst 42 233 235: 180(ptr) AccessChain 34(data) 231 59 Store 235 234 236: 6(int) Load 8(invocation) 238: 237(ptr) AccessChain 34(data) 37 73 38 239: 23(int16_t) Load 238 240: 23(int16_t) GroupNonUniformBroadcast 42 239 42 241: 237(ptr) AccessChain 34(data) 236 73 38 Store 241 240 242: 6(int) Load 8(invocation) 245: 244(ptr) AccessChain 34(data) 46 73 246: 24(i16vec4) Load 245 247:243(i16vec2) VectorShuffle 246 246 0 1 248:243(i16vec2) GroupNonUniformBroadcast 42 247 42 249: 237(ptr) AccessChain 34(data) 242 73 38 250: 23(int16_t) CompositeExtract 248 0 Store 249 250 251: 237(ptr) AccessChain 34(data) 242 73 55 252: 23(int16_t) CompositeExtract 248 1 Store 251 252 253: 6(int) Load 8(invocation) 255: 244(ptr) AccessChain 34(data) 59 73 256: 24(i16vec4) Load 255 257:254(i16vec3) VectorShuffle 256 256 0 1 2 258:254(i16vec3) GroupNonUniformBroadcast 42 257 42 259: 237(ptr) AccessChain 34(data) 253 73 38 260: 23(int16_t) CompositeExtract 258 0 Store 259 260 261: 237(ptr) AccessChain 34(data) 253 73 55 262: 23(int16_t) CompositeExtract 258 1 Store 261 262 263: 237(ptr) AccessChain 34(data) 253 73 69 264: 23(int16_t) CompositeExtract 258 2 Store 263 264 265: 6(int) Load 8(invocation) 266: 244(ptr) AccessChain 34(data) 73 73 267: 24(i16vec4) Load 266 268: 24(i16vec4) GroupNonUniformBroadcast 42 267 42 269: 244(ptr) AccessChain 34(data) 265 73 Store 269 268 270: 6(int) Load 8(invocation) 271: 237(ptr) AccessChain 34(data) 37 73 38 272: 23(int16_t) Load 271 273: 23(int16_t) GroupNonUniformBroadcastFirst 42 272 274: 237(ptr) AccessChain 34(data) 270 73 38 Store 274 273 275: 6(int) Load 8(invocation) 276: 244(ptr) AccessChain 34(data) 46 73 277: 24(i16vec4) Load 276 278:243(i16vec2) VectorShuffle 277 277 0 1 279:243(i16vec2) GroupNonUniformBroadcastFirst 42 278 280: 237(ptr) AccessChain 34(data) 275 73 38 281: 23(int16_t) CompositeExtract 279 0 Store 280 281 282: 237(ptr) AccessChain 34(data) 275 73 55 283: 23(int16_t) CompositeExtract 279 1 Store 282 283 284: 6(int) Load 8(invocation) 285: 244(ptr) AccessChain 34(data) 59 73 286: 24(i16vec4) Load 285 287:254(i16vec3) VectorShuffle 286 286 0 1 2 288:254(i16vec3) GroupNonUniformBroadcastFirst 42 287 289: 237(ptr) AccessChain 34(data) 284 73 38 290: 23(int16_t) CompositeExtract 288 0 Store 289 290 291: 237(ptr) AccessChain 34(data) 284 73 55 292: 23(int16_t) CompositeExtract 288 1 Store 291 292 293: 237(ptr) AccessChain 34(data) 284 73 69 294: 23(int16_t) CompositeExtract 288 2 Store 293 294 295: 6(int) Load 8(invocation) 296: 244(ptr) AccessChain 34(data) 73 73 297: 24(i16vec4) Load 296 298: 24(i16vec4) GroupNonUniformBroadcastFirst 42 297 299: 244(ptr) AccessChain 34(data) 295 73 Store 299 298 300: 6(int) Load 8(invocation) 303: 302(ptr) AccessChain 34(data) 37 301 38 304: 25(int64_t) Load 303 305: 25(int64_t) GroupNonUniformBroadcast 42 304 42 306: 302(ptr) AccessChain 34(data) 300 301 38 Store 306 305 307: 6(int) Load 8(invocation) 310: 309(ptr) AccessChain 34(data) 46 301 311: 26(i64vec4) Load 310 312:308(i64vec2) VectorShuffle 311 311 0 1 313:308(i64vec2) GroupNonUniformBroadcast 42 312 42 314: 302(ptr) AccessChain 34(data) 307 301 38 315: 25(int64_t) CompositeExtract 313 0 Store 314 315 316: 302(ptr) AccessChain 34(data) 307 301 55 317: 25(int64_t) CompositeExtract 313 1 Store 316 317 318: 6(int) Load 8(invocation) 320: 309(ptr) AccessChain 34(data) 59 301 321: 26(i64vec4) Load 320 322:319(i64vec3) VectorShuffle 321 321 0 1 2 323:319(i64vec3) GroupNonUniformBroadcast 42 322 42 324: 302(ptr) AccessChain 34(data) 318 301 38 325: 25(int64_t) CompositeExtract 323 0 Store 324 325 326: 302(ptr) AccessChain 34(data) 318 301 55 327: 25(int64_t) CompositeExtract 323 1 Store 326 327 328: 302(ptr) AccessChain 34(data) 318 301 69 329: 25(int64_t) CompositeExtract 323 2 Store 328 329 330: 6(int) Load 8(invocation) 331: 309(ptr) AccessChain 34(data) 73 301 332: 26(i64vec4) Load 331 333: 26(i64vec4) GroupNonUniformBroadcast 42 332 42 334: 309(ptr) AccessChain 34(data) 330 301 Store 334 333 335: 6(int) Load 8(invocation) 336: 302(ptr) AccessChain 34(data) 37 301 38 337: 25(int64_t) Load 336 338: 25(int64_t) GroupNonUniformBroadcastFirst 42 337 339: 302(ptr) AccessChain 34(data) 335 301 38 Store 339 338 340: 6(int) Load 8(invocation) 341: 309(ptr) AccessChain 34(data) 46 301 342: 26(i64vec4) Load 341 343:308(i64vec2) VectorShuffle 342 342 0 1 344:308(i64vec2) GroupNonUniformBroadcastFirst 42 343 345: 302(ptr) AccessChain 34(data) 340 301 38 346: 25(int64_t) CompositeExtract 344 0 Store 345 346 347: 302(ptr) AccessChain 34(data) 340 301 55 348: 25(int64_t) CompositeExtract 344 1 Store 347 348 349: 6(int) Load 8(invocation) 350: 309(ptr) AccessChain 34(data) 59 301 351: 26(i64vec4) Load 350 352:319(i64vec3) VectorShuffle 351 351 0 1 2 353:319(i64vec3) GroupNonUniformBroadcastFirst 42 352 354: 302(ptr) AccessChain 34(data) 349 301 38 355: 25(int64_t) CompositeExtract 353 0 Store 354 355 356: 302(ptr) AccessChain 34(data) 349 301 55 357: 25(int64_t) CompositeExtract 353 1 Store 356 357 358: 302(ptr) AccessChain 34(data) 349 301 69 359: 25(int64_t) CompositeExtract 353 2 Store 358 359 360: 6(int) Load 8(invocation) 361: 309(ptr) AccessChain 34(data) 73 301 362: 26(i64vec4) Load 361 363: 26(i64vec4) GroupNonUniformBroadcastFirst 42 362 364: 309(ptr) AccessChain 34(data) 360 301 Store 364 363 365: 6(int) Load 8(invocation) 368: 367(ptr) AccessChain 34(data) 37 366 38 369: 27(int64_t) Load 368 370: 27(int64_t) GroupNonUniformBroadcast 42 369 42 371: 367(ptr) AccessChain 34(data) 365 366 38 Store 371 370 372: 6(int) Load 8(invocation) 375: 374(ptr) AccessChain 34(data) 46 366 376: 28(i64vec4) Load 375 377:373(i64vec2) VectorShuffle 376 376 0 1 378:373(i64vec2) GroupNonUniformBroadcast 42 377 42 379: 367(ptr) AccessChain 34(data) 372 366 38 380: 27(int64_t) CompositeExtract 378 0 Store 379 380 381: 367(ptr) AccessChain 34(data) 372 366 55 382: 27(int64_t) CompositeExtract 378 1 Store 381 382 383: 6(int) Load 8(invocation) 385: 374(ptr) AccessChain 34(data) 59 366 386: 28(i64vec4) Load 385 387:384(i64vec3) VectorShuffle 386 386 0 1 2 388:384(i64vec3) GroupNonUniformBroadcast 42 387 42 389: 367(ptr) AccessChain 34(data) 383 366 38 390: 27(int64_t) CompositeExtract 388 0 Store 389 390 391: 367(ptr) AccessChain 34(data) 383 366 55 392: 27(int64_t) CompositeExtract 388 1 Store 391 392 393: 367(ptr) AccessChain 34(data) 383 366 69 394: 27(int64_t) CompositeExtract 388 2 Store 393 394 395: 6(int) Load 8(invocation) 396: 374(ptr) AccessChain 34(data) 73 366 397: 28(i64vec4) Load 396 398: 28(i64vec4) GroupNonUniformBroadcast 42 397 42 399: 374(ptr) AccessChain 34(data) 395 366 Store 399 398 400: 6(int) Load 8(invocation) 401: 367(ptr) AccessChain 34(data) 37 366 38 402: 27(int64_t) Load 401 403: 27(int64_t) GroupNonUniformBroadcastFirst 42 402 404: 367(ptr) AccessChain 34(data) 400 366 38 Store 404 403 405: 6(int) Load 8(invocation) 406: 374(ptr) AccessChain 34(data) 46 366 407: 28(i64vec4) Load 406 408:373(i64vec2) VectorShuffle 407 407 0 1 409:373(i64vec2) GroupNonUniformBroadcastFirst 42 408 410: 367(ptr) AccessChain 34(data) 405 366 38 411: 27(int64_t) CompositeExtract 409 0 Store 410 411 412: 367(ptr) AccessChain 34(data) 405 366 55 413: 27(int64_t) CompositeExtract 409 1 Store 412 413 414: 6(int) Load 8(invocation) 415: 374(ptr) AccessChain 34(data) 59 366 416: 28(i64vec4) Load 415 417:384(i64vec3) VectorShuffle 416 416 0 1 2 418:384(i64vec3) GroupNonUniformBroadcastFirst 42 417 419: 367(ptr) AccessChain 34(data) 414 366 38 420: 27(int64_t) CompositeExtract 418 0 Store 419 420 421: 367(ptr) AccessChain 34(data) 414 366 55 422: 27(int64_t) CompositeExtract 418 1 Store 421 422 423: 367(ptr) AccessChain 34(data) 414 366 69 424: 27(int64_t) CompositeExtract 418 2 Store 423 424 425: 6(int) Load 8(invocation) 426: 374(ptr) AccessChain 34(data) 73 366 427: 28(i64vec4) Load 426 428: 28(i64vec4) GroupNonUniformBroadcastFirst 42 427 429: 374(ptr) AccessChain 34(data) 425 366 Store 429 428 430: 6(int) Load 8(invocation) 433: 432(ptr) AccessChain 34(data) 37 431 38 434:29(float16_t) Load 433 435:29(float16_t) GroupNonUniformBroadcast 42 434 42 436: 432(ptr) AccessChain 34(data) 430 431 38 Store 436 435 437: 6(int) Load 8(invocation) 440: 439(ptr) AccessChain 34(data) 46 431 441: 30(f16vec4) Load 440 442:438(f16vec2) VectorShuffle 441 441 0 1 443:438(f16vec2) GroupNonUniformBroadcast 42 442 42 444: 432(ptr) AccessChain 34(data) 437 431 38 445:29(float16_t) CompositeExtract 443 0 Store 444 445 446: 432(ptr) AccessChain 34(data) 437 431 55 447:29(float16_t) CompositeExtract 443 1 Store 446 447 448: 6(int) Load 8(invocation) 450: 439(ptr) AccessChain 34(data) 59 431 451: 30(f16vec4) Load 450 452:449(f16vec3) VectorShuffle 451 451 0 1 2 453:449(f16vec3) GroupNonUniformBroadcast 42 452 42 454: 432(ptr) AccessChain 34(data) 448 431 38 455:29(float16_t) CompositeExtract 453 0 Store 454 455 456: 432(ptr) AccessChain 34(data) 448 431 55 457:29(float16_t) CompositeExtract 453 1 Store 456 457 458: 432(ptr) AccessChain 34(data) 448 431 69 459:29(float16_t) CompositeExtract 453 2 Store 458 459 460: 6(int) Load 8(invocation) 461: 439(ptr) AccessChain 34(data) 73 431 462: 30(f16vec4) Load 461 463: 30(f16vec4) GroupNonUniformBroadcast 42 462 42 464: 439(ptr) AccessChain 34(data) 460 431 Store 464 463 465: 6(int) Load 8(invocation) 466: 432(ptr) AccessChain 34(data) 37 431 38 467:29(float16_t) Load 466 468:29(float16_t) GroupNonUniformBroadcastFirst 42 467 469: 432(ptr) AccessChain 34(data) 465 431 38 Store 469 468 470: 6(int) Load 8(invocation) 471: 439(ptr) AccessChain 34(data) 46 431 472: 30(f16vec4) Load 471 473:438(f16vec2) VectorShuffle 472 472 0 1 474:438(f16vec2) GroupNonUniformBroadcastFirst 42 473 475: 432(ptr) AccessChain 34(data) 470 431 38 476:29(float16_t) CompositeExtract 474 0 Store 475 476 477: 432(ptr) AccessChain 34(data) 470 431 55 478:29(float16_t) CompositeExtract 474 1 Store 477 478 479: 6(int) Load 8(invocation) 480: 439(ptr) AccessChain 34(data) 59 431 481: 30(f16vec4) Load 480 482:449(f16vec3) VectorShuffle 481 481 0 1 2 483:449(f16vec3) GroupNonUniformBroadcastFirst 42 482 484: 432(ptr) AccessChain 34(data) 479 431 38 485:29(float16_t) CompositeExtract 483 0 Store 484 485 486: 432(ptr) AccessChain 34(data) 479 431 55 487:29(float16_t) CompositeExtract 483 1 Store 486 487 488: 432(ptr) AccessChain 34(data) 479 431 69 489:29(float16_t) CompositeExtract 483 2 Store 488 489 490: 6(int) Load 8(invocation) 491: 439(ptr) AccessChain 34(data) 73 431 492: 30(f16vec4) Load 491 493: 30(f16vec4) GroupNonUniformBroadcastFirst 42 492 494: 439(ptr) AccessChain 34(data) 490 431 Store 494 493 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out000066400000000000000000000166771506534232700271310ustar00rootroot00000000000000spv.subgroupExtendedTypesBallotNeg.comp ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:30: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:31: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:33: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:35: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:36: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:38: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:39: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:40: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:41: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:42: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:44: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:45: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:46: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:47: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:48: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:49: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:50: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:51: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:53: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:54: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:55: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:56: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:57: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:58: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:59: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:60: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:62: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:63: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:64: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:65: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:71: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:72: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:73: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:75: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:76: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:77: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:78: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:80: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:81: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:82: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:83: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:84: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:85: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:86: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:87: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 56 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out000066400000000000000000000006741506534232700262710ustar00rootroot00000000000000spv.subgroupExtendedTypesBasic.comp ERROR: #version: compute shaders require es profile with version 310 or above, or non-es profile with version 420 or above ERROR: #version: statement must appear first in es-profile shader; before comments or newlines ERROR: 1 compilation errors. No code generated. ERROR: Linking compute stage: Missing entry point: Each stage requires one entry point SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out000066400000000000000000003057221506534232700272040ustar00rootroot00000000000000spv.subgroupExtendedTypesClustered.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 1458 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability GroupNonUniform Capability GroupNonUniformClustered Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_clustered" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 31 "Buffers" MemberName 31(Buffers) 0 "i8" MemberName 31(Buffers) 1 "u8" MemberName 31(Buffers) 2 "i16" MemberName 31(Buffers) 3 "u16" MemberName 31(Buffers) 4 "i64" MemberName 31(Buffers) 5 "u64" MemberName 31(Buffers) 6 "f16" Name 34 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 MemberDecorate 31(Buffers) 3 Offset 16 MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 Decorate 34(data) Binding 0 Decorate 34(data) DescriptorSet 0 Decorate 1457 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeInt 8 1 18: TypeVector 17(int8_t) 4 19: TypeInt 8 0 20: TypeVector 19(int8_t) 4 21: TypeInt 16 1 22: TypeVector 21(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 4 25: TypeInt 64 1 26: TypeVector 25(int64_t) 4 27: TypeInt 64 0 28: TypeVector 27(int64_t) 4 29: TypeFloat 16 30: TypeVector 29(float16_t) 4 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 32: TypeArray 31(Buffers) 15 33: TypePointer StorageBuffer 32 34(data): 33(ptr) Variable StorageBuffer 36: TypeInt 32 1 37: 36(int) Constant 0 38: 6(int) Constant 0 39: TypePointer StorageBuffer 17(int8_t) 42: 6(int) Constant 1 43: 6(int) Constant 3 47: 36(int) Constant 1 48: TypeVector 17(int8_t) 2 49: TypePointer StorageBuffer 18(i8vec4) 59: 36(int) Constant 2 60: TypeVector 17(int8_t) 3 69: 6(int) Constant 2 73: 36(int) Constant 3 259: TypePointer StorageBuffer 19(int8_t) 265: TypeVector 19(int8_t) 2 266: TypePointer StorageBuffer 20(i8vec4) 276: TypeVector 19(int8_t) 3 473: TypePointer StorageBuffer 21(int16_t) 479: TypeVector 21(int16_t) 2 480: TypePointer StorageBuffer 22(i16vec4) 490: TypeVector 21(int16_t) 3 687: TypePointer StorageBuffer 23(int16_t) 693: TypeVector 23(int16_t) 2 694: TypePointer StorageBuffer 24(i16vec4) 704: TypeVector 23(int16_t) 3 901: 36(int) Constant 4 902: TypePointer StorageBuffer 25(int64_t) 908: TypeVector 25(int64_t) 2 909: TypePointer StorageBuffer 26(i64vec4) 919: TypeVector 25(int64_t) 3 1116: 36(int) Constant 5 1117: TypePointer StorageBuffer 27(int64_t) 1123: TypeVector 27(int64_t) 2 1124: TypePointer StorageBuffer 28(i64vec4) 1134: TypeVector 27(int64_t) 3 1331: 36(int) Constant 6 1332: TypePointer StorageBuffer 29(float16_t) 1338: TypeVector 29(float16_t) 2 1339: TypePointer StorageBuffer 30(f16vec4) 1349: TypeVector 29(float16_t) 3 1455: TypeVector 6(int) 3 1456: 6(int) Constant 8 1457: 1455(ivec3) ConstantComposite 1456 42 42 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 35: 6(int) Load 8(invocation) 40: 39(ptr) AccessChain 34(data) 37 37 38 41: 17(int8_t) Load 40 44: 17(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 41 42 45: 39(ptr) AccessChain 34(data) 35 37 38 Store 45 44 46: 6(int) Load 8(invocation) 50: 49(ptr) AccessChain 34(data) 47 37 51: 18(i8vec4) Load 50 52: 48(i8vec2) VectorShuffle 51 51 0 1 53: 48(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 52 42 54: 39(ptr) AccessChain 34(data) 46 37 38 55: 17(int8_t) CompositeExtract 53 0 Store 54 55 56: 39(ptr) AccessChain 34(data) 46 37 42 57: 17(int8_t) CompositeExtract 53 1 Store 56 57 58: 6(int) Load 8(invocation) 61: 49(ptr) AccessChain 34(data) 59 37 62: 18(i8vec4) Load 61 63: 60(i8vec3) VectorShuffle 62 62 0 1 2 64: 60(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 63 42 65: 39(ptr) AccessChain 34(data) 58 37 38 66: 17(int8_t) CompositeExtract 64 0 Store 65 66 67: 39(ptr) AccessChain 34(data) 58 37 42 68: 17(int8_t) CompositeExtract 64 1 Store 67 68 70: 39(ptr) AccessChain 34(data) 58 37 69 71: 17(int8_t) CompositeExtract 64 2 Store 70 71 72: 6(int) Load 8(invocation) 74: 49(ptr) AccessChain 34(data) 73 37 75: 18(i8vec4) Load 74 76: 18(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 75 42 77: 49(ptr) AccessChain 34(data) 72 37 Store 77 76 78: 6(int) Load 8(invocation) 79: 39(ptr) AccessChain 34(data) 37 37 38 80: 17(int8_t) Load 79 81: 17(int8_t) GroupNonUniformIMul 43 ClusteredReduce 80 42 82: 39(ptr) AccessChain 34(data) 78 37 38 Store 82 81 83: 6(int) Load 8(invocation) 84: 49(ptr) AccessChain 34(data) 47 37 85: 18(i8vec4) Load 84 86: 48(i8vec2) VectorShuffle 85 85 0 1 87: 48(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 86 42 88: 39(ptr) AccessChain 34(data) 83 37 38 89: 17(int8_t) CompositeExtract 87 0 Store 88 89 90: 39(ptr) AccessChain 34(data) 83 37 42 91: 17(int8_t) CompositeExtract 87 1 Store 90 91 92: 6(int) Load 8(invocation) 93: 49(ptr) AccessChain 34(data) 59 37 94: 18(i8vec4) Load 93 95: 60(i8vec3) VectorShuffle 94 94 0 1 2 96: 60(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 95 42 97: 39(ptr) AccessChain 34(data) 92 37 38 98: 17(int8_t) CompositeExtract 96 0 Store 97 98 99: 39(ptr) AccessChain 34(data) 92 37 42 100: 17(int8_t) CompositeExtract 96 1 Store 99 100 101: 39(ptr) AccessChain 34(data) 92 37 69 102: 17(int8_t) CompositeExtract 96 2 Store 101 102 103: 6(int) Load 8(invocation) 104: 49(ptr) AccessChain 34(data) 73 37 105: 18(i8vec4) Load 104 106: 18(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 105 42 107: 49(ptr) AccessChain 34(data) 103 37 Store 107 106 108: 6(int) Load 8(invocation) 109: 39(ptr) AccessChain 34(data) 37 37 38 110: 17(int8_t) Load 109 111: 17(int8_t) GroupNonUniformSMin 43 ClusteredReduce 110 42 112: 39(ptr) AccessChain 34(data) 108 37 38 Store 112 111 113: 6(int) Load 8(invocation) 114: 49(ptr) AccessChain 34(data) 47 37 115: 18(i8vec4) Load 114 116: 48(i8vec2) VectorShuffle 115 115 0 1 117: 48(i8vec2) GroupNonUniformSMin 43 ClusteredReduce 116 42 118: 39(ptr) AccessChain 34(data) 113 37 38 119: 17(int8_t) CompositeExtract 117 0 Store 118 119 120: 39(ptr) AccessChain 34(data) 113 37 42 121: 17(int8_t) CompositeExtract 117 1 Store 120 121 122: 6(int) Load 8(invocation) 123: 49(ptr) AccessChain 34(data) 59 37 124: 18(i8vec4) Load 123 125: 60(i8vec3) VectorShuffle 124 124 0 1 2 126: 60(i8vec3) GroupNonUniformSMin 43 ClusteredReduce 125 42 127: 39(ptr) AccessChain 34(data) 122 37 38 128: 17(int8_t) CompositeExtract 126 0 Store 127 128 129: 39(ptr) AccessChain 34(data) 122 37 42 130: 17(int8_t) CompositeExtract 126 1 Store 129 130 131: 39(ptr) AccessChain 34(data) 122 37 69 132: 17(int8_t) CompositeExtract 126 2 Store 131 132 133: 6(int) Load 8(invocation) 134: 49(ptr) AccessChain 34(data) 73 37 135: 18(i8vec4) Load 134 136: 18(i8vec4) GroupNonUniformSMin 43 ClusteredReduce 135 42 137: 49(ptr) AccessChain 34(data) 133 37 Store 137 136 138: 6(int) Load 8(invocation) 139: 39(ptr) AccessChain 34(data) 37 37 38 140: 17(int8_t) Load 139 141: 17(int8_t) GroupNonUniformSMax 43 ClusteredReduce 140 42 142: 39(ptr) AccessChain 34(data) 138 37 38 Store 142 141 143: 6(int) Load 8(invocation) 144: 49(ptr) AccessChain 34(data) 47 37 145: 18(i8vec4) Load 144 146: 48(i8vec2) VectorShuffle 145 145 0 1 147: 48(i8vec2) GroupNonUniformSMax 43 ClusteredReduce 146 42 148: 39(ptr) AccessChain 34(data) 143 37 38 149: 17(int8_t) CompositeExtract 147 0 Store 148 149 150: 39(ptr) AccessChain 34(data) 143 37 42 151: 17(int8_t) CompositeExtract 147 1 Store 150 151 152: 6(int) Load 8(invocation) 153: 49(ptr) AccessChain 34(data) 59 37 154: 18(i8vec4) Load 153 155: 60(i8vec3) VectorShuffle 154 154 0 1 2 156: 60(i8vec3) GroupNonUniformSMax 43 ClusteredReduce 155 42 157: 39(ptr) AccessChain 34(data) 152 37 38 158: 17(int8_t) CompositeExtract 156 0 Store 157 158 159: 39(ptr) AccessChain 34(data) 152 37 42 160: 17(int8_t) CompositeExtract 156 1 Store 159 160 161: 39(ptr) AccessChain 34(data) 152 37 69 162: 17(int8_t) CompositeExtract 156 2 Store 161 162 163: 6(int) Load 8(invocation) 164: 49(ptr) AccessChain 34(data) 73 37 165: 18(i8vec4) Load 164 166: 18(i8vec4) GroupNonUniformSMax 43 ClusteredReduce 165 42 167: 49(ptr) AccessChain 34(data) 163 37 Store 167 166 168: 6(int) Load 8(invocation) 169: 39(ptr) AccessChain 34(data) 37 37 38 170: 17(int8_t) Load 169 171: 17(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 170 42 172: 39(ptr) AccessChain 34(data) 168 37 38 Store 172 171 173: 6(int) Load 8(invocation) 174: 49(ptr) AccessChain 34(data) 47 37 175: 18(i8vec4) Load 174 176: 48(i8vec2) VectorShuffle 175 175 0 1 177: 48(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 176 42 178: 39(ptr) AccessChain 34(data) 173 37 38 179: 17(int8_t) CompositeExtract 177 0 Store 178 179 180: 39(ptr) AccessChain 34(data) 173 37 42 181: 17(int8_t) CompositeExtract 177 1 Store 180 181 182: 6(int) Load 8(invocation) 183: 49(ptr) AccessChain 34(data) 59 37 184: 18(i8vec4) Load 183 185: 60(i8vec3) VectorShuffle 184 184 0 1 2 186: 60(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 185 42 187: 39(ptr) AccessChain 34(data) 182 37 38 188: 17(int8_t) CompositeExtract 186 0 Store 187 188 189: 39(ptr) AccessChain 34(data) 182 37 42 190: 17(int8_t) CompositeExtract 186 1 Store 189 190 191: 39(ptr) AccessChain 34(data) 182 37 69 192: 17(int8_t) CompositeExtract 186 2 Store 191 192 193: 6(int) Load 8(invocation) 194: 49(ptr) AccessChain 34(data) 73 37 195: 18(i8vec4) Load 194 196: 18(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 195 42 197: 49(ptr) AccessChain 34(data) 193 37 Store 197 196 198: 6(int) Load 8(invocation) 199: 39(ptr) AccessChain 34(data) 37 37 38 200: 17(int8_t) Load 199 201: 17(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 200 42 202: 39(ptr) AccessChain 34(data) 198 37 38 Store 202 201 203: 6(int) Load 8(invocation) 204: 49(ptr) AccessChain 34(data) 47 37 205: 18(i8vec4) Load 204 206: 48(i8vec2) VectorShuffle 205 205 0 1 207: 48(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 206 42 208: 39(ptr) AccessChain 34(data) 203 37 38 209: 17(int8_t) CompositeExtract 207 0 Store 208 209 210: 39(ptr) AccessChain 34(data) 203 37 42 211: 17(int8_t) CompositeExtract 207 1 Store 210 211 212: 6(int) Load 8(invocation) 213: 49(ptr) AccessChain 34(data) 59 37 214: 18(i8vec4) Load 213 215: 60(i8vec3) VectorShuffle 214 214 0 1 2 216: 60(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 215 42 217: 39(ptr) AccessChain 34(data) 212 37 38 218: 17(int8_t) CompositeExtract 216 0 Store 217 218 219: 39(ptr) AccessChain 34(data) 212 37 42 220: 17(int8_t) CompositeExtract 216 1 Store 219 220 221: 39(ptr) AccessChain 34(data) 212 37 69 222: 17(int8_t) CompositeExtract 216 2 Store 221 222 223: 6(int) Load 8(invocation) 224: 49(ptr) AccessChain 34(data) 73 37 225: 18(i8vec4) Load 224 226: 18(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 225 42 227: 49(ptr) AccessChain 34(data) 223 37 Store 227 226 228: 6(int) Load 8(invocation) 229: 39(ptr) AccessChain 34(data) 37 37 38 230: 17(int8_t) Load 229 231: 17(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 230 42 232: 39(ptr) AccessChain 34(data) 228 37 38 Store 232 231 233: 6(int) Load 8(invocation) 234: 49(ptr) AccessChain 34(data) 47 37 235: 18(i8vec4) Load 234 236: 48(i8vec2) VectorShuffle 235 235 0 1 237: 48(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 236 42 238: 39(ptr) AccessChain 34(data) 233 37 38 239: 17(int8_t) CompositeExtract 237 0 Store 238 239 240: 39(ptr) AccessChain 34(data) 233 37 42 241: 17(int8_t) CompositeExtract 237 1 Store 240 241 242: 6(int) Load 8(invocation) 243: 49(ptr) AccessChain 34(data) 59 37 244: 18(i8vec4) Load 243 245: 60(i8vec3) VectorShuffle 244 244 0 1 2 246: 60(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 245 42 247: 39(ptr) AccessChain 34(data) 242 37 38 248: 17(int8_t) CompositeExtract 246 0 Store 247 248 249: 39(ptr) AccessChain 34(data) 242 37 42 250: 17(int8_t) CompositeExtract 246 1 Store 249 250 251: 39(ptr) AccessChain 34(data) 242 37 69 252: 17(int8_t) CompositeExtract 246 2 Store 251 252 253: 6(int) Load 8(invocation) 254: 49(ptr) AccessChain 34(data) 73 37 255: 18(i8vec4) Load 254 256: 18(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 255 42 257: 49(ptr) AccessChain 34(data) 253 37 Store 257 256 258: 6(int) Load 8(invocation) 260: 259(ptr) AccessChain 34(data) 37 47 38 261: 19(int8_t) Load 260 262: 19(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 261 42 263: 259(ptr) AccessChain 34(data) 258 47 38 Store 263 262 264: 6(int) Load 8(invocation) 267: 266(ptr) AccessChain 34(data) 47 47 268: 20(i8vec4) Load 267 269: 265(i8vec2) VectorShuffle 268 268 0 1 270: 265(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 269 42 271: 259(ptr) AccessChain 34(data) 264 47 38 272: 19(int8_t) CompositeExtract 270 0 Store 271 272 273: 259(ptr) AccessChain 34(data) 264 47 42 274: 19(int8_t) CompositeExtract 270 1 Store 273 274 275: 6(int) Load 8(invocation) 277: 266(ptr) AccessChain 34(data) 59 47 278: 20(i8vec4) Load 277 279: 276(i8vec3) VectorShuffle 278 278 0 1 2 280: 276(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 279 42 281: 259(ptr) AccessChain 34(data) 275 47 38 282: 19(int8_t) CompositeExtract 280 0 Store 281 282 283: 259(ptr) AccessChain 34(data) 275 47 42 284: 19(int8_t) CompositeExtract 280 1 Store 283 284 285: 259(ptr) AccessChain 34(data) 275 47 69 286: 19(int8_t) CompositeExtract 280 2 Store 285 286 287: 6(int) Load 8(invocation) 288: 266(ptr) AccessChain 34(data) 73 47 289: 20(i8vec4) Load 288 290: 20(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 289 42 291: 266(ptr) AccessChain 34(data) 287 47 Store 291 290 292: 6(int) Load 8(invocation) 293: 259(ptr) AccessChain 34(data) 37 47 38 294: 19(int8_t) Load 293 295: 19(int8_t) GroupNonUniformIMul 43 ClusteredReduce 294 42 296: 259(ptr) AccessChain 34(data) 292 47 38 Store 296 295 297: 6(int) Load 8(invocation) 298: 266(ptr) AccessChain 34(data) 47 47 299: 20(i8vec4) Load 298 300: 265(i8vec2) VectorShuffle 299 299 0 1 301: 265(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 300 42 302: 259(ptr) AccessChain 34(data) 297 47 38 303: 19(int8_t) CompositeExtract 301 0 Store 302 303 304: 259(ptr) AccessChain 34(data) 297 47 42 305: 19(int8_t) CompositeExtract 301 1 Store 304 305 306: 6(int) Load 8(invocation) 307: 266(ptr) AccessChain 34(data) 59 47 308: 20(i8vec4) Load 307 309: 276(i8vec3) VectorShuffle 308 308 0 1 2 310: 276(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 309 42 311: 259(ptr) AccessChain 34(data) 306 47 38 312: 19(int8_t) CompositeExtract 310 0 Store 311 312 313: 259(ptr) AccessChain 34(data) 306 47 42 314: 19(int8_t) CompositeExtract 310 1 Store 313 314 315: 259(ptr) AccessChain 34(data) 306 47 69 316: 19(int8_t) CompositeExtract 310 2 Store 315 316 317: 6(int) Load 8(invocation) 318: 266(ptr) AccessChain 34(data) 73 47 319: 20(i8vec4) Load 318 320: 20(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 319 42 321: 266(ptr) AccessChain 34(data) 317 47 Store 321 320 322: 6(int) Load 8(invocation) 323: 259(ptr) AccessChain 34(data) 37 47 38 324: 19(int8_t) Load 323 325: 19(int8_t) GroupNonUniformUMin 43 ClusteredReduce 324 42 326: 259(ptr) AccessChain 34(data) 322 47 38 Store 326 325 327: 6(int) Load 8(invocation) 328: 266(ptr) AccessChain 34(data) 47 47 329: 20(i8vec4) Load 328 330: 265(i8vec2) VectorShuffle 329 329 0 1 331: 265(i8vec2) GroupNonUniformUMin 43 ClusteredReduce 330 42 332: 259(ptr) AccessChain 34(data) 327 47 38 333: 19(int8_t) CompositeExtract 331 0 Store 332 333 334: 259(ptr) AccessChain 34(data) 327 47 42 335: 19(int8_t) CompositeExtract 331 1 Store 334 335 336: 6(int) Load 8(invocation) 337: 266(ptr) AccessChain 34(data) 59 47 338: 20(i8vec4) Load 337 339: 276(i8vec3) VectorShuffle 338 338 0 1 2 340: 276(i8vec3) GroupNonUniformUMin 43 ClusteredReduce 339 42 341: 259(ptr) AccessChain 34(data) 336 47 38 342: 19(int8_t) CompositeExtract 340 0 Store 341 342 343: 259(ptr) AccessChain 34(data) 336 47 42 344: 19(int8_t) CompositeExtract 340 1 Store 343 344 345: 259(ptr) AccessChain 34(data) 336 47 69 346: 19(int8_t) CompositeExtract 340 2 Store 345 346 347: 6(int) Load 8(invocation) 348: 266(ptr) AccessChain 34(data) 73 47 349: 20(i8vec4) Load 348 350: 20(i8vec4) GroupNonUniformUMin 43 ClusteredReduce 349 42 351: 266(ptr) AccessChain 34(data) 347 47 Store 351 350 352: 6(int) Load 8(invocation) 353: 259(ptr) AccessChain 34(data) 37 47 38 354: 19(int8_t) Load 353 355: 19(int8_t) GroupNonUniformUMax 43 ClusteredReduce 354 42 356: 259(ptr) AccessChain 34(data) 352 47 38 Store 356 355 357: 6(int) Load 8(invocation) 358: 266(ptr) AccessChain 34(data) 47 47 359: 20(i8vec4) Load 358 360: 265(i8vec2) VectorShuffle 359 359 0 1 361: 265(i8vec2) GroupNonUniformUMax 43 ClusteredReduce 360 42 362: 259(ptr) AccessChain 34(data) 357 47 38 363: 19(int8_t) CompositeExtract 361 0 Store 362 363 364: 259(ptr) AccessChain 34(data) 357 47 42 365: 19(int8_t) CompositeExtract 361 1 Store 364 365 366: 6(int) Load 8(invocation) 367: 266(ptr) AccessChain 34(data) 59 47 368: 20(i8vec4) Load 367 369: 276(i8vec3) VectorShuffle 368 368 0 1 2 370: 276(i8vec3) GroupNonUniformUMax 43 ClusteredReduce 369 42 371: 259(ptr) AccessChain 34(data) 366 47 38 372: 19(int8_t) CompositeExtract 370 0 Store 371 372 373: 259(ptr) AccessChain 34(data) 366 47 42 374: 19(int8_t) CompositeExtract 370 1 Store 373 374 375: 259(ptr) AccessChain 34(data) 366 47 69 376: 19(int8_t) CompositeExtract 370 2 Store 375 376 377: 6(int) Load 8(invocation) 378: 266(ptr) AccessChain 34(data) 73 47 379: 20(i8vec4) Load 378 380: 20(i8vec4) GroupNonUniformUMax 43 ClusteredReduce 379 42 381: 266(ptr) AccessChain 34(data) 377 47 Store 381 380 382: 6(int) Load 8(invocation) 383: 259(ptr) AccessChain 34(data) 37 47 38 384: 19(int8_t) Load 383 385: 19(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 384 42 386: 259(ptr) AccessChain 34(data) 382 47 38 Store 386 385 387: 6(int) Load 8(invocation) 388: 266(ptr) AccessChain 34(data) 47 47 389: 20(i8vec4) Load 388 390: 265(i8vec2) VectorShuffle 389 389 0 1 391: 265(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 390 42 392: 259(ptr) AccessChain 34(data) 387 47 38 393: 19(int8_t) CompositeExtract 391 0 Store 392 393 394: 259(ptr) AccessChain 34(data) 387 47 42 395: 19(int8_t) CompositeExtract 391 1 Store 394 395 396: 6(int) Load 8(invocation) 397: 266(ptr) AccessChain 34(data) 59 47 398: 20(i8vec4) Load 397 399: 276(i8vec3) VectorShuffle 398 398 0 1 2 400: 276(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 399 42 401: 259(ptr) AccessChain 34(data) 396 47 38 402: 19(int8_t) CompositeExtract 400 0 Store 401 402 403: 259(ptr) AccessChain 34(data) 396 47 42 404: 19(int8_t) CompositeExtract 400 1 Store 403 404 405: 259(ptr) AccessChain 34(data) 396 47 69 406: 19(int8_t) CompositeExtract 400 2 Store 405 406 407: 6(int) Load 8(invocation) 408: 266(ptr) AccessChain 34(data) 73 47 409: 20(i8vec4) Load 408 410: 20(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 409 42 411: 266(ptr) AccessChain 34(data) 407 47 Store 411 410 412: 6(int) Load 8(invocation) 413: 259(ptr) AccessChain 34(data) 37 47 38 414: 19(int8_t) Load 413 415: 19(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 414 42 416: 259(ptr) AccessChain 34(data) 412 47 38 Store 416 415 417: 6(int) Load 8(invocation) 418: 266(ptr) AccessChain 34(data) 47 47 419: 20(i8vec4) Load 418 420: 265(i8vec2) VectorShuffle 419 419 0 1 421: 265(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 420 42 422: 259(ptr) AccessChain 34(data) 417 47 38 423: 19(int8_t) CompositeExtract 421 0 Store 422 423 424: 259(ptr) AccessChain 34(data) 417 47 42 425: 19(int8_t) CompositeExtract 421 1 Store 424 425 426: 6(int) Load 8(invocation) 427: 266(ptr) AccessChain 34(data) 59 47 428: 20(i8vec4) Load 427 429: 276(i8vec3) VectorShuffle 428 428 0 1 2 430: 276(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 429 42 431: 259(ptr) AccessChain 34(data) 426 47 38 432: 19(int8_t) CompositeExtract 430 0 Store 431 432 433: 259(ptr) AccessChain 34(data) 426 47 42 434: 19(int8_t) CompositeExtract 430 1 Store 433 434 435: 259(ptr) AccessChain 34(data) 426 47 69 436: 19(int8_t) CompositeExtract 430 2 Store 435 436 437: 6(int) Load 8(invocation) 438: 266(ptr) AccessChain 34(data) 73 47 439: 20(i8vec4) Load 438 440: 20(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 439 42 441: 266(ptr) AccessChain 34(data) 437 47 Store 441 440 442: 6(int) Load 8(invocation) 443: 259(ptr) AccessChain 34(data) 37 47 38 444: 19(int8_t) Load 443 445: 19(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 444 42 446: 259(ptr) AccessChain 34(data) 442 47 38 Store 446 445 447: 6(int) Load 8(invocation) 448: 266(ptr) AccessChain 34(data) 47 47 449: 20(i8vec4) Load 448 450: 265(i8vec2) VectorShuffle 449 449 0 1 451: 265(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 450 42 452: 259(ptr) AccessChain 34(data) 447 47 38 453: 19(int8_t) CompositeExtract 451 0 Store 452 453 454: 259(ptr) AccessChain 34(data) 447 47 42 455: 19(int8_t) CompositeExtract 451 1 Store 454 455 456: 6(int) Load 8(invocation) 457: 266(ptr) AccessChain 34(data) 59 47 458: 20(i8vec4) Load 457 459: 276(i8vec3) VectorShuffle 458 458 0 1 2 460: 276(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 459 42 461: 259(ptr) AccessChain 34(data) 456 47 38 462: 19(int8_t) CompositeExtract 460 0 Store 461 462 463: 259(ptr) AccessChain 34(data) 456 47 42 464: 19(int8_t) CompositeExtract 460 1 Store 463 464 465: 259(ptr) AccessChain 34(data) 456 47 69 466: 19(int8_t) CompositeExtract 460 2 Store 465 466 467: 6(int) Load 8(invocation) 468: 266(ptr) AccessChain 34(data) 73 47 469: 20(i8vec4) Load 468 470: 20(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 469 42 471: 266(ptr) AccessChain 34(data) 467 47 Store 471 470 472: 6(int) Load 8(invocation) 474: 473(ptr) AccessChain 34(data) 37 59 38 475: 21(int16_t) Load 474 476: 21(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 475 42 477: 473(ptr) AccessChain 34(data) 472 59 38 Store 477 476 478: 6(int) Load 8(invocation) 481: 480(ptr) AccessChain 34(data) 47 59 482: 22(i16vec4) Load 481 483:479(i16vec2) VectorShuffle 482 482 0 1 484:479(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 483 42 485: 473(ptr) AccessChain 34(data) 478 59 38 486: 21(int16_t) CompositeExtract 484 0 Store 485 486 487: 473(ptr) AccessChain 34(data) 478 59 42 488: 21(int16_t) CompositeExtract 484 1 Store 487 488 489: 6(int) Load 8(invocation) 491: 480(ptr) AccessChain 34(data) 59 59 492: 22(i16vec4) Load 491 493:490(i16vec3) VectorShuffle 492 492 0 1 2 494:490(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 493 42 495: 473(ptr) AccessChain 34(data) 489 59 38 496: 21(int16_t) CompositeExtract 494 0 Store 495 496 497: 473(ptr) AccessChain 34(data) 489 59 42 498: 21(int16_t) CompositeExtract 494 1 Store 497 498 499: 473(ptr) AccessChain 34(data) 489 59 69 500: 21(int16_t) CompositeExtract 494 2 Store 499 500 501: 6(int) Load 8(invocation) 502: 480(ptr) AccessChain 34(data) 73 59 503: 22(i16vec4) Load 502 504: 22(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 503 42 505: 480(ptr) AccessChain 34(data) 501 59 Store 505 504 506: 6(int) Load 8(invocation) 507: 473(ptr) AccessChain 34(data) 37 59 38 508: 21(int16_t) Load 507 509: 21(int16_t) GroupNonUniformIMul 43 ClusteredReduce 508 42 510: 473(ptr) AccessChain 34(data) 506 59 38 Store 510 509 511: 6(int) Load 8(invocation) 512: 480(ptr) AccessChain 34(data) 47 59 513: 22(i16vec4) Load 512 514:479(i16vec2) VectorShuffle 513 513 0 1 515:479(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 514 42 516: 473(ptr) AccessChain 34(data) 511 59 38 517: 21(int16_t) CompositeExtract 515 0 Store 516 517 518: 473(ptr) AccessChain 34(data) 511 59 42 519: 21(int16_t) CompositeExtract 515 1 Store 518 519 520: 6(int) Load 8(invocation) 521: 480(ptr) AccessChain 34(data) 59 59 522: 22(i16vec4) Load 521 523:490(i16vec3) VectorShuffle 522 522 0 1 2 524:490(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 523 42 525: 473(ptr) AccessChain 34(data) 520 59 38 526: 21(int16_t) CompositeExtract 524 0 Store 525 526 527: 473(ptr) AccessChain 34(data) 520 59 42 528: 21(int16_t) CompositeExtract 524 1 Store 527 528 529: 473(ptr) AccessChain 34(data) 520 59 69 530: 21(int16_t) CompositeExtract 524 2 Store 529 530 531: 6(int) Load 8(invocation) 532: 480(ptr) AccessChain 34(data) 73 59 533: 22(i16vec4) Load 532 534: 22(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 533 42 535: 480(ptr) AccessChain 34(data) 531 59 Store 535 534 536: 6(int) Load 8(invocation) 537: 473(ptr) AccessChain 34(data) 37 59 38 538: 21(int16_t) Load 537 539: 21(int16_t) GroupNonUniformSMin 43 ClusteredReduce 538 42 540: 473(ptr) AccessChain 34(data) 536 59 38 Store 540 539 541: 6(int) Load 8(invocation) 542: 480(ptr) AccessChain 34(data) 47 59 543: 22(i16vec4) Load 542 544:479(i16vec2) VectorShuffle 543 543 0 1 545:479(i16vec2) GroupNonUniformSMin 43 ClusteredReduce 544 42 546: 473(ptr) AccessChain 34(data) 541 59 38 547: 21(int16_t) CompositeExtract 545 0 Store 546 547 548: 473(ptr) AccessChain 34(data) 541 59 42 549: 21(int16_t) CompositeExtract 545 1 Store 548 549 550: 6(int) Load 8(invocation) 551: 480(ptr) AccessChain 34(data) 59 59 552: 22(i16vec4) Load 551 553:490(i16vec3) VectorShuffle 552 552 0 1 2 554:490(i16vec3) GroupNonUniformSMin 43 ClusteredReduce 553 42 555: 473(ptr) AccessChain 34(data) 550 59 38 556: 21(int16_t) CompositeExtract 554 0 Store 555 556 557: 473(ptr) AccessChain 34(data) 550 59 42 558: 21(int16_t) CompositeExtract 554 1 Store 557 558 559: 473(ptr) AccessChain 34(data) 550 59 69 560: 21(int16_t) CompositeExtract 554 2 Store 559 560 561: 6(int) Load 8(invocation) 562: 480(ptr) AccessChain 34(data) 73 59 563: 22(i16vec4) Load 562 564: 22(i16vec4) GroupNonUniformSMin 43 ClusteredReduce 563 42 565: 480(ptr) AccessChain 34(data) 561 59 Store 565 564 566: 6(int) Load 8(invocation) 567: 473(ptr) AccessChain 34(data) 37 59 38 568: 21(int16_t) Load 567 569: 21(int16_t) GroupNonUniformSMax 43 ClusteredReduce 568 42 570: 473(ptr) AccessChain 34(data) 566 59 38 Store 570 569 571: 6(int) Load 8(invocation) 572: 480(ptr) AccessChain 34(data) 47 59 573: 22(i16vec4) Load 572 574:479(i16vec2) VectorShuffle 573 573 0 1 575:479(i16vec2) GroupNonUniformSMax 43 ClusteredReduce 574 42 576: 473(ptr) AccessChain 34(data) 571 59 38 577: 21(int16_t) CompositeExtract 575 0 Store 576 577 578: 473(ptr) AccessChain 34(data) 571 59 42 579: 21(int16_t) CompositeExtract 575 1 Store 578 579 580: 6(int) Load 8(invocation) 581: 480(ptr) AccessChain 34(data) 59 59 582: 22(i16vec4) Load 581 583:490(i16vec3) VectorShuffle 582 582 0 1 2 584:490(i16vec3) GroupNonUniformSMax 43 ClusteredReduce 583 42 585: 473(ptr) AccessChain 34(data) 580 59 38 586: 21(int16_t) CompositeExtract 584 0 Store 585 586 587: 473(ptr) AccessChain 34(data) 580 59 42 588: 21(int16_t) CompositeExtract 584 1 Store 587 588 589: 473(ptr) AccessChain 34(data) 580 59 69 590: 21(int16_t) CompositeExtract 584 2 Store 589 590 591: 6(int) Load 8(invocation) 592: 480(ptr) AccessChain 34(data) 73 59 593: 22(i16vec4) Load 592 594: 22(i16vec4) GroupNonUniformSMax 43 ClusteredReduce 593 42 595: 480(ptr) AccessChain 34(data) 591 59 Store 595 594 596: 6(int) Load 8(invocation) 597: 473(ptr) AccessChain 34(data) 37 59 38 598: 21(int16_t) Load 597 599: 21(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 598 42 600: 473(ptr) AccessChain 34(data) 596 59 38 Store 600 599 601: 6(int) Load 8(invocation) 602: 480(ptr) AccessChain 34(data) 47 59 603: 22(i16vec4) Load 602 604:479(i16vec2) VectorShuffle 603 603 0 1 605:479(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 604 42 606: 473(ptr) AccessChain 34(data) 601 59 38 607: 21(int16_t) CompositeExtract 605 0 Store 606 607 608: 473(ptr) AccessChain 34(data) 601 59 42 609: 21(int16_t) CompositeExtract 605 1 Store 608 609 610: 6(int) Load 8(invocation) 611: 480(ptr) AccessChain 34(data) 59 59 612: 22(i16vec4) Load 611 613:490(i16vec3) VectorShuffle 612 612 0 1 2 614:490(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 613 42 615: 473(ptr) AccessChain 34(data) 610 59 38 616: 21(int16_t) CompositeExtract 614 0 Store 615 616 617: 473(ptr) AccessChain 34(data) 610 59 42 618: 21(int16_t) CompositeExtract 614 1 Store 617 618 619: 473(ptr) AccessChain 34(data) 610 59 69 620: 21(int16_t) CompositeExtract 614 2 Store 619 620 621: 6(int) Load 8(invocation) 622: 480(ptr) AccessChain 34(data) 73 59 623: 22(i16vec4) Load 622 624: 22(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 623 42 625: 480(ptr) AccessChain 34(data) 621 59 Store 625 624 626: 6(int) Load 8(invocation) 627: 473(ptr) AccessChain 34(data) 37 59 38 628: 21(int16_t) Load 627 629: 21(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 628 42 630: 473(ptr) AccessChain 34(data) 626 59 38 Store 630 629 631: 6(int) Load 8(invocation) 632: 480(ptr) AccessChain 34(data) 47 59 633: 22(i16vec4) Load 632 634:479(i16vec2) VectorShuffle 633 633 0 1 635:479(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 634 42 636: 473(ptr) AccessChain 34(data) 631 59 38 637: 21(int16_t) CompositeExtract 635 0 Store 636 637 638: 473(ptr) AccessChain 34(data) 631 59 42 639: 21(int16_t) CompositeExtract 635 1 Store 638 639 640: 6(int) Load 8(invocation) 641: 480(ptr) AccessChain 34(data) 59 59 642: 22(i16vec4) Load 641 643:490(i16vec3) VectorShuffle 642 642 0 1 2 644:490(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 643 42 645: 473(ptr) AccessChain 34(data) 640 59 38 646: 21(int16_t) CompositeExtract 644 0 Store 645 646 647: 473(ptr) AccessChain 34(data) 640 59 42 648: 21(int16_t) CompositeExtract 644 1 Store 647 648 649: 473(ptr) AccessChain 34(data) 640 59 69 650: 21(int16_t) CompositeExtract 644 2 Store 649 650 651: 6(int) Load 8(invocation) 652: 480(ptr) AccessChain 34(data) 73 59 653: 22(i16vec4) Load 652 654: 22(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 653 42 655: 480(ptr) AccessChain 34(data) 651 59 Store 655 654 656: 6(int) Load 8(invocation) 657: 473(ptr) AccessChain 34(data) 37 59 38 658: 21(int16_t) Load 657 659: 21(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 658 42 660: 473(ptr) AccessChain 34(data) 656 59 38 Store 660 659 661: 6(int) Load 8(invocation) 662: 480(ptr) AccessChain 34(data) 47 59 663: 22(i16vec4) Load 662 664:479(i16vec2) VectorShuffle 663 663 0 1 665:479(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 664 42 666: 473(ptr) AccessChain 34(data) 661 59 38 667: 21(int16_t) CompositeExtract 665 0 Store 666 667 668: 473(ptr) AccessChain 34(data) 661 59 42 669: 21(int16_t) CompositeExtract 665 1 Store 668 669 670: 6(int) Load 8(invocation) 671: 480(ptr) AccessChain 34(data) 59 59 672: 22(i16vec4) Load 671 673:490(i16vec3) VectorShuffle 672 672 0 1 2 674:490(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 673 42 675: 473(ptr) AccessChain 34(data) 670 59 38 676: 21(int16_t) CompositeExtract 674 0 Store 675 676 677: 473(ptr) AccessChain 34(data) 670 59 42 678: 21(int16_t) CompositeExtract 674 1 Store 677 678 679: 473(ptr) AccessChain 34(data) 670 59 69 680: 21(int16_t) CompositeExtract 674 2 Store 679 680 681: 6(int) Load 8(invocation) 682: 480(ptr) AccessChain 34(data) 73 59 683: 22(i16vec4) Load 682 684: 22(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 683 42 685: 480(ptr) AccessChain 34(data) 681 59 Store 685 684 686: 6(int) Load 8(invocation) 688: 687(ptr) AccessChain 34(data) 37 73 38 689: 23(int16_t) Load 688 690: 23(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 689 42 691: 687(ptr) AccessChain 34(data) 686 73 38 Store 691 690 692: 6(int) Load 8(invocation) 695: 694(ptr) AccessChain 34(data) 47 73 696: 24(i16vec4) Load 695 697:693(i16vec2) VectorShuffle 696 696 0 1 698:693(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 697 42 699: 687(ptr) AccessChain 34(data) 692 73 38 700: 23(int16_t) CompositeExtract 698 0 Store 699 700 701: 687(ptr) AccessChain 34(data) 692 73 42 702: 23(int16_t) CompositeExtract 698 1 Store 701 702 703: 6(int) Load 8(invocation) 705: 694(ptr) AccessChain 34(data) 59 73 706: 24(i16vec4) Load 705 707:704(i16vec3) VectorShuffle 706 706 0 1 2 708:704(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 707 42 709: 687(ptr) AccessChain 34(data) 703 73 38 710: 23(int16_t) CompositeExtract 708 0 Store 709 710 711: 687(ptr) AccessChain 34(data) 703 73 42 712: 23(int16_t) CompositeExtract 708 1 Store 711 712 713: 687(ptr) AccessChain 34(data) 703 73 69 714: 23(int16_t) CompositeExtract 708 2 Store 713 714 715: 6(int) Load 8(invocation) 716: 694(ptr) AccessChain 34(data) 73 73 717: 24(i16vec4) Load 716 718: 24(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 717 42 719: 694(ptr) AccessChain 34(data) 715 73 Store 719 718 720: 6(int) Load 8(invocation) 721: 687(ptr) AccessChain 34(data) 37 73 38 722: 23(int16_t) Load 721 723: 23(int16_t) GroupNonUniformIMul 43 ClusteredReduce 722 42 724: 687(ptr) AccessChain 34(data) 720 73 38 Store 724 723 725: 6(int) Load 8(invocation) 726: 694(ptr) AccessChain 34(data) 47 73 727: 24(i16vec4) Load 726 728:693(i16vec2) VectorShuffle 727 727 0 1 729:693(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 728 42 730: 687(ptr) AccessChain 34(data) 725 73 38 731: 23(int16_t) CompositeExtract 729 0 Store 730 731 732: 687(ptr) AccessChain 34(data) 725 73 42 733: 23(int16_t) CompositeExtract 729 1 Store 732 733 734: 6(int) Load 8(invocation) 735: 694(ptr) AccessChain 34(data) 59 73 736: 24(i16vec4) Load 735 737:704(i16vec3) VectorShuffle 736 736 0 1 2 738:704(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 737 42 739: 687(ptr) AccessChain 34(data) 734 73 38 740: 23(int16_t) CompositeExtract 738 0 Store 739 740 741: 687(ptr) AccessChain 34(data) 734 73 42 742: 23(int16_t) CompositeExtract 738 1 Store 741 742 743: 687(ptr) AccessChain 34(data) 734 73 69 744: 23(int16_t) CompositeExtract 738 2 Store 743 744 745: 6(int) Load 8(invocation) 746: 694(ptr) AccessChain 34(data) 73 73 747: 24(i16vec4) Load 746 748: 24(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 747 42 749: 694(ptr) AccessChain 34(data) 745 73 Store 749 748 750: 6(int) Load 8(invocation) 751: 687(ptr) AccessChain 34(data) 37 73 38 752: 23(int16_t) Load 751 753: 23(int16_t) GroupNonUniformUMin 43 ClusteredReduce 752 42 754: 687(ptr) AccessChain 34(data) 750 73 38 Store 754 753 755: 6(int) Load 8(invocation) 756: 694(ptr) AccessChain 34(data) 47 73 757: 24(i16vec4) Load 756 758:693(i16vec2) VectorShuffle 757 757 0 1 759:693(i16vec2) GroupNonUniformUMin 43 ClusteredReduce 758 42 760: 687(ptr) AccessChain 34(data) 755 73 38 761: 23(int16_t) CompositeExtract 759 0 Store 760 761 762: 687(ptr) AccessChain 34(data) 755 73 42 763: 23(int16_t) CompositeExtract 759 1 Store 762 763 764: 6(int) Load 8(invocation) 765: 694(ptr) AccessChain 34(data) 59 73 766: 24(i16vec4) Load 765 767:704(i16vec3) VectorShuffle 766 766 0 1 2 768:704(i16vec3) GroupNonUniformUMin 43 ClusteredReduce 767 42 769: 687(ptr) AccessChain 34(data) 764 73 38 770: 23(int16_t) CompositeExtract 768 0 Store 769 770 771: 687(ptr) AccessChain 34(data) 764 73 42 772: 23(int16_t) CompositeExtract 768 1 Store 771 772 773: 687(ptr) AccessChain 34(data) 764 73 69 774: 23(int16_t) CompositeExtract 768 2 Store 773 774 775: 6(int) Load 8(invocation) 776: 694(ptr) AccessChain 34(data) 73 73 777: 24(i16vec4) Load 776 778: 24(i16vec4) GroupNonUniformUMin 43 ClusteredReduce 777 42 779: 694(ptr) AccessChain 34(data) 775 73 Store 779 778 780: 6(int) Load 8(invocation) 781: 687(ptr) AccessChain 34(data) 37 73 38 782: 23(int16_t) Load 781 783: 23(int16_t) GroupNonUniformUMax 43 ClusteredReduce 782 42 784: 687(ptr) AccessChain 34(data) 780 73 38 Store 784 783 785: 6(int) Load 8(invocation) 786: 694(ptr) AccessChain 34(data) 47 73 787: 24(i16vec4) Load 786 788:693(i16vec2) VectorShuffle 787 787 0 1 789:693(i16vec2) GroupNonUniformUMax 43 ClusteredReduce 788 42 790: 687(ptr) AccessChain 34(data) 785 73 38 791: 23(int16_t) CompositeExtract 789 0 Store 790 791 792: 687(ptr) AccessChain 34(data) 785 73 42 793: 23(int16_t) CompositeExtract 789 1 Store 792 793 794: 6(int) Load 8(invocation) 795: 694(ptr) AccessChain 34(data) 59 73 796: 24(i16vec4) Load 795 797:704(i16vec3) VectorShuffle 796 796 0 1 2 798:704(i16vec3) GroupNonUniformUMax 43 ClusteredReduce 797 42 799: 687(ptr) AccessChain 34(data) 794 73 38 800: 23(int16_t) CompositeExtract 798 0 Store 799 800 801: 687(ptr) AccessChain 34(data) 794 73 42 802: 23(int16_t) CompositeExtract 798 1 Store 801 802 803: 687(ptr) AccessChain 34(data) 794 73 69 804: 23(int16_t) CompositeExtract 798 2 Store 803 804 805: 6(int) Load 8(invocation) 806: 694(ptr) AccessChain 34(data) 73 73 807: 24(i16vec4) Load 806 808: 24(i16vec4) GroupNonUniformUMax 43 ClusteredReduce 807 42 809: 694(ptr) AccessChain 34(data) 805 73 Store 809 808 810: 6(int) Load 8(invocation) 811: 687(ptr) AccessChain 34(data) 37 73 38 812: 23(int16_t) Load 811 813: 23(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 812 42 814: 687(ptr) AccessChain 34(data) 810 73 38 Store 814 813 815: 6(int) Load 8(invocation) 816: 694(ptr) AccessChain 34(data) 47 73 817: 24(i16vec4) Load 816 818:693(i16vec2) VectorShuffle 817 817 0 1 819:693(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 818 42 820: 687(ptr) AccessChain 34(data) 815 73 38 821: 23(int16_t) CompositeExtract 819 0 Store 820 821 822: 687(ptr) AccessChain 34(data) 815 73 42 823: 23(int16_t) CompositeExtract 819 1 Store 822 823 824: 6(int) Load 8(invocation) 825: 694(ptr) AccessChain 34(data) 59 73 826: 24(i16vec4) Load 825 827:704(i16vec3) VectorShuffle 826 826 0 1 2 828:704(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 827 42 829: 687(ptr) AccessChain 34(data) 824 73 38 830: 23(int16_t) CompositeExtract 828 0 Store 829 830 831: 687(ptr) AccessChain 34(data) 824 73 42 832: 23(int16_t) CompositeExtract 828 1 Store 831 832 833: 687(ptr) AccessChain 34(data) 824 73 69 834: 23(int16_t) CompositeExtract 828 2 Store 833 834 835: 6(int) Load 8(invocation) 836: 694(ptr) AccessChain 34(data) 73 73 837: 24(i16vec4) Load 836 838: 24(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 837 42 839: 694(ptr) AccessChain 34(data) 835 73 Store 839 838 840: 6(int) Load 8(invocation) 841: 687(ptr) AccessChain 34(data) 37 73 38 842: 23(int16_t) Load 841 843: 23(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 842 42 844: 687(ptr) AccessChain 34(data) 840 73 38 Store 844 843 845: 6(int) Load 8(invocation) 846: 694(ptr) AccessChain 34(data) 47 73 847: 24(i16vec4) Load 846 848:693(i16vec2) VectorShuffle 847 847 0 1 849:693(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 848 42 850: 687(ptr) AccessChain 34(data) 845 73 38 851: 23(int16_t) CompositeExtract 849 0 Store 850 851 852: 687(ptr) AccessChain 34(data) 845 73 42 853: 23(int16_t) CompositeExtract 849 1 Store 852 853 854: 6(int) Load 8(invocation) 855: 694(ptr) AccessChain 34(data) 59 73 856: 24(i16vec4) Load 855 857:704(i16vec3) VectorShuffle 856 856 0 1 2 858:704(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 857 42 859: 687(ptr) AccessChain 34(data) 854 73 38 860: 23(int16_t) CompositeExtract 858 0 Store 859 860 861: 687(ptr) AccessChain 34(data) 854 73 42 862: 23(int16_t) CompositeExtract 858 1 Store 861 862 863: 687(ptr) AccessChain 34(data) 854 73 69 864: 23(int16_t) CompositeExtract 858 2 Store 863 864 865: 6(int) Load 8(invocation) 866: 694(ptr) AccessChain 34(data) 73 73 867: 24(i16vec4) Load 866 868: 24(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 867 42 869: 694(ptr) AccessChain 34(data) 865 73 Store 869 868 870: 6(int) Load 8(invocation) 871: 687(ptr) AccessChain 34(data) 37 73 38 872: 23(int16_t) Load 871 873: 23(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 872 42 874: 687(ptr) AccessChain 34(data) 870 73 38 Store 874 873 875: 6(int) Load 8(invocation) 876: 694(ptr) AccessChain 34(data) 47 73 877: 24(i16vec4) Load 876 878:693(i16vec2) VectorShuffle 877 877 0 1 879:693(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 878 42 880: 687(ptr) AccessChain 34(data) 875 73 38 881: 23(int16_t) CompositeExtract 879 0 Store 880 881 882: 687(ptr) AccessChain 34(data) 875 73 42 883: 23(int16_t) CompositeExtract 879 1 Store 882 883 884: 6(int) Load 8(invocation) 885: 694(ptr) AccessChain 34(data) 59 73 886: 24(i16vec4) Load 885 887:704(i16vec3) VectorShuffle 886 886 0 1 2 888:704(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 887 42 889: 687(ptr) AccessChain 34(data) 884 73 38 890: 23(int16_t) CompositeExtract 888 0 Store 889 890 891: 687(ptr) AccessChain 34(data) 884 73 42 892: 23(int16_t) CompositeExtract 888 1 Store 891 892 893: 687(ptr) AccessChain 34(data) 884 73 69 894: 23(int16_t) CompositeExtract 888 2 Store 893 894 895: 6(int) Load 8(invocation) 896: 694(ptr) AccessChain 34(data) 73 73 897: 24(i16vec4) Load 896 898: 24(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 897 42 899: 694(ptr) AccessChain 34(data) 895 73 Store 899 898 900: 6(int) Load 8(invocation) 903: 902(ptr) AccessChain 34(data) 37 901 38 904: 25(int64_t) Load 903 905: 25(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 904 42 906: 902(ptr) AccessChain 34(data) 900 901 38 Store 906 905 907: 6(int) Load 8(invocation) 910: 909(ptr) AccessChain 34(data) 47 901 911: 26(i64vec4) Load 910 912:908(i64vec2) VectorShuffle 911 911 0 1 913:908(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 912 42 914: 902(ptr) AccessChain 34(data) 907 901 38 915: 25(int64_t) CompositeExtract 913 0 Store 914 915 916: 902(ptr) AccessChain 34(data) 907 901 42 917: 25(int64_t) CompositeExtract 913 1 Store 916 917 918: 6(int) Load 8(invocation) 920: 909(ptr) AccessChain 34(data) 59 901 921: 26(i64vec4) Load 920 922:919(i64vec3) VectorShuffle 921 921 0 1 2 923:919(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 922 42 924: 902(ptr) AccessChain 34(data) 918 901 38 925: 25(int64_t) CompositeExtract 923 0 Store 924 925 926: 902(ptr) AccessChain 34(data) 918 901 42 927: 25(int64_t) CompositeExtract 923 1 Store 926 927 928: 902(ptr) AccessChain 34(data) 918 901 69 929: 25(int64_t) CompositeExtract 923 2 Store 928 929 930: 6(int) Load 8(invocation) 931: 909(ptr) AccessChain 34(data) 73 901 932: 26(i64vec4) Load 931 933: 26(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 932 42 934: 909(ptr) AccessChain 34(data) 930 901 Store 934 933 935: 6(int) Load 8(invocation) 936: 902(ptr) AccessChain 34(data) 37 901 38 937: 25(int64_t) Load 936 938: 25(int64_t) GroupNonUniformIMul 43 ClusteredReduce 937 42 939: 902(ptr) AccessChain 34(data) 935 901 38 Store 939 938 940: 6(int) Load 8(invocation) 941: 909(ptr) AccessChain 34(data) 47 901 942: 26(i64vec4) Load 941 943:908(i64vec2) VectorShuffle 942 942 0 1 944:908(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 943 42 945: 902(ptr) AccessChain 34(data) 940 901 38 946: 25(int64_t) CompositeExtract 944 0 Store 945 946 947: 902(ptr) AccessChain 34(data) 940 901 42 948: 25(int64_t) CompositeExtract 944 1 Store 947 948 949: 6(int) Load 8(invocation) 950: 909(ptr) AccessChain 34(data) 59 901 951: 26(i64vec4) Load 950 952:919(i64vec3) VectorShuffle 951 951 0 1 2 953:919(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 952 42 954: 902(ptr) AccessChain 34(data) 949 901 38 955: 25(int64_t) CompositeExtract 953 0 Store 954 955 956: 902(ptr) AccessChain 34(data) 949 901 42 957: 25(int64_t) CompositeExtract 953 1 Store 956 957 958: 902(ptr) AccessChain 34(data) 949 901 69 959: 25(int64_t) CompositeExtract 953 2 Store 958 959 960: 6(int) Load 8(invocation) 961: 909(ptr) AccessChain 34(data) 73 901 962: 26(i64vec4) Load 961 963: 26(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 962 42 964: 909(ptr) AccessChain 34(data) 960 901 Store 964 963 965: 6(int) Load 8(invocation) 966: 902(ptr) AccessChain 34(data) 37 901 38 967: 25(int64_t) Load 966 968: 25(int64_t) GroupNonUniformSMin 43 ClusteredReduce 967 42 969: 902(ptr) AccessChain 34(data) 965 901 38 Store 969 968 970: 6(int) Load 8(invocation) 971: 909(ptr) AccessChain 34(data) 47 901 972: 26(i64vec4) Load 971 973:908(i64vec2) VectorShuffle 972 972 0 1 974:908(i64vec2) GroupNonUniformSMin 43 ClusteredReduce 973 42 975: 902(ptr) AccessChain 34(data) 970 901 38 976: 25(int64_t) CompositeExtract 974 0 Store 975 976 977: 902(ptr) AccessChain 34(data) 970 901 42 978: 25(int64_t) CompositeExtract 974 1 Store 977 978 979: 6(int) Load 8(invocation) 980: 909(ptr) AccessChain 34(data) 59 901 981: 26(i64vec4) Load 980 982:919(i64vec3) VectorShuffle 981 981 0 1 2 983:919(i64vec3) GroupNonUniformSMin 43 ClusteredReduce 982 42 984: 902(ptr) AccessChain 34(data) 979 901 38 985: 25(int64_t) CompositeExtract 983 0 Store 984 985 986: 902(ptr) AccessChain 34(data) 979 901 42 987: 25(int64_t) CompositeExtract 983 1 Store 986 987 988: 902(ptr) AccessChain 34(data) 979 901 69 989: 25(int64_t) CompositeExtract 983 2 Store 988 989 990: 6(int) Load 8(invocation) 991: 909(ptr) AccessChain 34(data) 73 901 992: 26(i64vec4) Load 991 993: 26(i64vec4) GroupNonUniformSMin 43 ClusteredReduce 992 42 994: 909(ptr) AccessChain 34(data) 990 901 Store 994 993 995: 6(int) Load 8(invocation) 996: 902(ptr) AccessChain 34(data) 37 901 38 997: 25(int64_t) Load 996 998: 25(int64_t) GroupNonUniformSMax 43 ClusteredReduce 997 42 999: 902(ptr) AccessChain 34(data) 995 901 38 Store 999 998 1000: 6(int) Load 8(invocation) 1001: 909(ptr) AccessChain 34(data) 47 901 1002: 26(i64vec4) Load 1001 1003:908(i64vec2) VectorShuffle 1002 1002 0 1 1004:908(i64vec2) GroupNonUniformSMax 43 ClusteredReduce 1003 42 1005: 902(ptr) AccessChain 34(data) 1000 901 38 1006: 25(int64_t) CompositeExtract 1004 0 Store 1005 1006 1007: 902(ptr) AccessChain 34(data) 1000 901 42 1008: 25(int64_t) CompositeExtract 1004 1 Store 1007 1008 1009: 6(int) Load 8(invocation) 1010: 909(ptr) AccessChain 34(data) 59 901 1011: 26(i64vec4) Load 1010 1012:919(i64vec3) VectorShuffle 1011 1011 0 1 2 1013:919(i64vec3) GroupNonUniformSMax 43 ClusteredReduce 1012 42 1014: 902(ptr) AccessChain 34(data) 1009 901 38 1015: 25(int64_t) CompositeExtract 1013 0 Store 1014 1015 1016: 902(ptr) AccessChain 34(data) 1009 901 42 1017: 25(int64_t) CompositeExtract 1013 1 Store 1016 1017 1018: 902(ptr) AccessChain 34(data) 1009 901 69 1019: 25(int64_t) CompositeExtract 1013 2 Store 1018 1019 1020: 6(int) Load 8(invocation) 1021: 909(ptr) AccessChain 34(data) 73 901 1022: 26(i64vec4) Load 1021 1023: 26(i64vec4) GroupNonUniformSMax 43 ClusteredReduce 1022 42 1024: 909(ptr) AccessChain 34(data) 1020 901 Store 1024 1023 1025: 6(int) Load 8(invocation) 1026: 902(ptr) AccessChain 34(data) 37 901 38 1027: 25(int64_t) Load 1026 1028: 25(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1027 42 1029: 902(ptr) AccessChain 34(data) 1025 901 38 Store 1029 1028 1030: 6(int) Load 8(invocation) 1031: 909(ptr) AccessChain 34(data) 47 901 1032: 26(i64vec4) Load 1031 1033:908(i64vec2) VectorShuffle 1032 1032 0 1 1034:908(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1033 42 1035: 902(ptr) AccessChain 34(data) 1030 901 38 1036: 25(int64_t) CompositeExtract 1034 0 Store 1035 1036 1037: 902(ptr) AccessChain 34(data) 1030 901 42 1038: 25(int64_t) CompositeExtract 1034 1 Store 1037 1038 1039: 6(int) Load 8(invocation) 1040: 909(ptr) AccessChain 34(data) 59 901 1041: 26(i64vec4) Load 1040 1042:919(i64vec3) VectorShuffle 1041 1041 0 1 2 1043:919(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1042 42 1044: 902(ptr) AccessChain 34(data) 1039 901 38 1045: 25(int64_t) CompositeExtract 1043 0 Store 1044 1045 1046: 902(ptr) AccessChain 34(data) 1039 901 42 1047: 25(int64_t) CompositeExtract 1043 1 Store 1046 1047 1048: 902(ptr) AccessChain 34(data) 1039 901 69 1049: 25(int64_t) CompositeExtract 1043 2 Store 1048 1049 1050: 6(int) Load 8(invocation) 1051: 909(ptr) AccessChain 34(data) 73 901 1052: 26(i64vec4) Load 1051 1053: 26(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1052 42 1054: 909(ptr) AccessChain 34(data) 1050 901 Store 1054 1053 1055: 6(int) Load 8(invocation) 1056: 902(ptr) AccessChain 34(data) 37 901 38 1057: 25(int64_t) Load 1056 1058: 25(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 1057 42 1059: 902(ptr) AccessChain 34(data) 1055 901 38 Store 1059 1058 1060: 6(int) Load 8(invocation) 1061: 909(ptr) AccessChain 34(data) 47 901 1062: 26(i64vec4) Load 1061 1063:908(i64vec2) VectorShuffle 1062 1062 0 1 1064:908(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 1063 42 1065: 902(ptr) AccessChain 34(data) 1060 901 38 1066: 25(int64_t) CompositeExtract 1064 0 Store 1065 1066 1067: 902(ptr) AccessChain 34(data) 1060 901 42 1068: 25(int64_t) CompositeExtract 1064 1 Store 1067 1068 1069: 6(int) Load 8(invocation) 1070: 909(ptr) AccessChain 34(data) 59 901 1071: 26(i64vec4) Load 1070 1072:919(i64vec3) VectorShuffle 1071 1071 0 1 2 1073:919(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 1072 42 1074: 902(ptr) AccessChain 34(data) 1069 901 38 1075: 25(int64_t) CompositeExtract 1073 0 Store 1074 1075 1076: 902(ptr) AccessChain 34(data) 1069 901 42 1077: 25(int64_t) CompositeExtract 1073 1 Store 1076 1077 1078: 902(ptr) AccessChain 34(data) 1069 901 69 1079: 25(int64_t) CompositeExtract 1073 2 Store 1078 1079 1080: 6(int) Load 8(invocation) 1081: 909(ptr) AccessChain 34(data) 73 901 1082: 26(i64vec4) Load 1081 1083: 26(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 1082 42 1084: 909(ptr) AccessChain 34(data) 1080 901 Store 1084 1083 1085: 6(int) Load 8(invocation) 1086: 902(ptr) AccessChain 34(data) 37 901 38 1087: 25(int64_t) Load 1086 1088: 25(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 1087 42 1089: 902(ptr) AccessChain 34(data) 1085 901 38 Store 1089 1088 1090: 6(int) Load 8(invocation) 1091: 909(ptr) AccessChain 34(data) 47 901 1092: 26(i64vec4) Load 1091 1093:908(i64vec2) VectorShuffle 1092 1092 0 1 1094:908(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 1093 42 1095: 902(ptr) AccessChain 34(data) 1090 901 38 1096: 25(int64_t) CompositeExtract 1094 0 Store 1095 1096 1097: 902(ptr) AccessChain 34(data) 1090 901 42 1098: 25(int64_t) CompositeExtract 1094 1 Store 1097 1098 1099: 6(int) Load 8(invocation) 1100: 909(ptr) AccessChain 34(data) 59 901 1101: 26(i64vec4) Load 1100 1102:919(i64vec3) VectorShuffle 1101 1101 0 1 2 1103:919(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 1102 42 1104: 902(ptr) AccessChain 34(data) 1099 901 38 1105: 25(int64_t) CompositeExtract 1103 0 Store 1104 1105 1106: 902(ptr) AccessChain 34(data) 1099 901 42 1107: 25(int64_t) CompositeExtract 1103 1 Store 1106 1107 1108: 902(ptr) AccessChain 34(data) 1099 901 69 1109: 25(int64_t) CompositeExtract 1103 2 Store 1108 1109 1110: 6(int) Load 8(invocation) 1111: 909(ptr) AccessChain 34(data) 73 901 1112: 26(i64vec4) Load 1111 1113: 26(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 1112 42 1114: 909(ptr) AccessChain 34(data) 1110 901 Store 1114 1113 1115: 6(int) Load 8(invocation) 1118: 1117(ptr) AccessChain 34(data) 37 1116 38 1119: 27(int64_t) Load 1118 1120: 27(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 1119 42 1121: 1117(ptr) AccessChain 34(data) 1115 1116 38 Store 1121 1120 1122: 6(int) Load 8(invocation) 1125: 1124(ptr) AccessChain 34(data) 47 1116 1126: 28(i64vec4) Load 1125 1127:1123(i64vec2) VectorShuffle 1126 1126 0 1 1128:1123(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 1127 42 1129: 1117(ptr) AccessChain 34(data) 1122 1116 38 1130: 27(int64_t) CompositeExtract 1128 0 Store 1129 1130 1131: 1117(ptr) AccessChain 34(data) 1122 1116 42 1132: 27(int64_t) CompositeExtract 1128 1 Store 1131 1132 1133: 6(int) Load 8(invocation) 1135: 1124(ptr) AccessChain 34(data) 59 1116 1136: 28(i64vec4) Load 1135 1137:1134(i64vec3) VectorShuffle 1136 1136 0 1 2 1138:1134(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 1137 42 1139: 1117(ptr) AccessChain 34(data) 1133 1116 38 1140: 27(int64_t) CompositeExtract 1138 0 Store 1139 1140 1141: 1117(ptr) AccessChain 34(data) 1133 1116 42 1142: 27(int64_t) CompositeExtract 1138 1 Store 1141 1142 1143: 1117(ptr) AccessChain 34(data) 1133 1116 69 1144: 27(int64_t) CompositeExtract 1138 2 Store 1143 1144 1145: 6(int) Load 8(invocation) 1146: 1124(ptr) AccessChain 34(data) 73 1116 1147: 28(i64vec4) Load 1146 1148: 28(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 1147 42 1149: 1124(ptr) AccessChain 34(data) 1145 1116 Store 1149 1148 1150: 6(int) Load 8(invocation) 1151: 1117(ptr) AccessChain 34(data) 37 1116 38 1152: 27(int64_t) Load 1151 1153: 27(int64_t) GroupNonUniformIMul 43 ClusteredReduce 1152 42 1154: 1117(ptr) AccessChain 34(data) 1150 1116 38 Store 1154 1153 1155: 6(int) Load 8(invocation) 1156: 1124(ptr) AccessChain 34(data) 47 1116 1157: 28(i64vec4) Load 1156 1158:1123(i64vec2) VectorShuffle 1157 1157 0 1 1159:1123(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 1158 42 1160: 1117(ptr) AccessChain 34(data) 1155 1116 38 1161: 27(int64_t) CompositeExtract 1159 0 Store 1160 1161 1162: 1117(ptr) AccessChain 34(data) 1155 1116 42 1163: 27(int64_t) CompositeExtract 1159 1 Store 1162 1163 1164: 6(int) Load 8(invocation) 1165: 1124(ptr) AccessChain 34(data) 59 1116 1166: 28(i64vec4) Load 1165 1167:1134(i64vec3) VectorShuffle 1166 1166 0 1 2 1168:1134(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 1167 42 1169: 1117(ptr) AccessChain 34(data) 1164 1116 38 1170: 27(int64_t) CompositeExtract 1168 0 Store 1169 1170 1171: 1117(ptr) AccessChain 34(data) 1164 1116 42 1172: 27(int64_t) CompositeExtract 1168 1 Store 1171 1172 1173: 1117(ptr) AccessChain 34(data) 1164 1116 69 1174: 27(int64_t) CompositeExtract 1168 2 Store 1173 1174 1175: 6(int) Load 8(invocation) 1176: 1124(ptr) AccessChain 34(data) 73 1116 1177: 28(i64vec4) Load 1176 1178: 28(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 1177 42 1179: 1124(ptr) AccessChain 34(data) 1175 1116 Store 1179 1178 1180: 6(int) Load 8(invocation) 1181: 1117(ptr) AccessChain 34(data) 37 1116 38 1182: 27(int64_t) Load 1181 1183: 27(int64_t) GroupNonUniformUMin 43 ClusteredReduce 1182 42 1184: 1117(ptr) AccessChain 34(data) 1180 1116 38 Store 1184 1183 1185: 6(int) Load 8(invocation) 1186: 1124(ptr) AccessChain 34(data) 47 1116 1187: 28(i64vec4) Load 1186 1188:1123(i64vec2) VectorShuffle 1187 1187 0 1 1189:1123(i64vec2) GroupNonUniformUMin 43 ClusteredReduce 1188 42 1190: 1117(ptr) AccessChain 34(data) 1185 1116 38 1191: 27(int64_t) CompositeExtract 1189 0 Store 1190 1191 1192: 1117(ptr) AccessChain 34(data) 1185 1116 42 1193: 27(int64_t) CompositeExtract 1189 1 Store 1192 1193 1194: 6(int) Load 8(invocation) 1195: 1124(ptr) AccessChain 34(data) 59 1116 1196: 28(i64vec4) Load 1195 1197:1134(i64vec3) VectorShuffle 1196 1196 0 1 2 1198:1134(i64vec3) GroupNonUniformUMin 43 ClusteredReduce 1197 42 1199: 1117(ptr) AccessChain 34(data) 1194 1116 38 1200: 27(int64_t) CompositeExtract 1198 0 Store 1199 1200 1201: 1117(ptr) AccessChain 34(data) 1194 1116 42 1202: 27(int64_t) CompositeExtract 1198 1 Store 1201 1202 1203: 1117(ptr) AccessChain 34(data) 1194 1116 69 1204: 27(int64_t) CompositeExtract 1198 2 Store 1203 1204 1205: 6(int) Load 8(invocation) 1206: 1124(ptr) AccessChain 34(data) 73 1116 1207: 28(i64vec4) Load 1206 1208: 28(i64vec4) GroupNonUniformUMin 43 ClusteredReduce 1207 42 1209: 1124(ptr) AccessChain 34(data) 1205 1116 Store 1209 1208 1210: 6(int) Load 8(invocation) 1211: 1117(ptr) AccessChain 34(data) 37 1116 38 1212: 27(int64_t) Load 1211 1213: 27(int64_t) GroupNonUniformUMax 43 ClusteredReduce 1212 42 1214: 1117(ptr) AccessChain 34(data) 1210 1116 38 Store 1214 1213 1215: 6(int) Load 8(invocation) 1216: 1124(ptr) AccessChain 34(data) 47 1116 1217: 28(i64vec4) Load 1216 1218:1123(i64vec2) VectorShuffle 1217 1217 0 1 1219:1123(i64vec2) GroupNonUniformUMax 43 ClusteredReduce 1218 42 1220: 1117(ptr) AccessChain 34(data) 1215 1116 38 1221: 27(int64_t) CompositeExtract 1219 0 Store 1220 1221 1222: 1117(ptr) AccessChain 34(data) 1215 1116 42 1223: 27(int64_t) CompositeExtract 1219 1 Store 1222 1223 1224: 6(int) Load 8(invocation) 1225: 1124(ptr) AccessChain 34(data) 59 1116 1226: 28(i64vec4) Load 1225 1227:1134(i64vec3) VectorShuffle 1226 1226 0 1 2 1228:1134(i64vec3) GroupNonUniformUMax 43 ClusteredReduce 1227 42 1229: 1117(ptr) AccessChain 34(data) 1224 1116 38 1230: 27(int64_t) CompositeExtract 1228 0 Store 1229 1230 1231: 1117(ptr) AccessChain 34(data) 1224 1116 42 1232: 27(int64_t) CompositeExtract 1228 1 Store 1231 1232 1233: 1117(ptr) AccessChain 34(data) 1224 1116 69 1234: 27(int64_t) CompositeExtract 1228 2 Store 1233 1234 1235: 6(int) Load 8(invocation) 1236: 1124(ptr) AccessChain 34(data) 73 1116 1237: 28(i64vec4) Load 1236 1238: 28(i64vec4) GroupNonUniformUMax 43 ClusteredReduce 1237 42 1239: 1124(ptr) AccessChain 34(data) 1235 1116 Store 1239 1238 1240: 6(int) Load 8(invocation) 1241: 1117(ptr) AccessChain 34(data) 37 1116 38 1242: 27(int64_t) Load 1241 1243: 27(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1242 42 1244: 1117(ptr) AccessChain 34(data) 1240 1116 38 Store 1244 1243 1245: 6(int) Load 8(invocation) 1246: 1124(ptr) AccessChain 34(data) 47 1116 1247: 28(i64vec4) Load 1246 1248:1123(i64vec2) VectorShuffle 1247 1247 0 1 1249:1123(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1248 42 1250: 1117(ptr) AccessChain 34(data) 1245 1116 38 1251: 27(int64_t) CompositeExtract 1249 0 Store 1250 1251 1252: 1117(ptr) AccessChain 34(data) 1245 1116 42 1253: 27(int64_t) CompositeExtract 1249 1 Store 1252 1253 1254: 6(int) Load 8(invocation) 1255: 1124(ptr) AccessChain 34(data) 59 1116 1256: 28(i64vec4) Load 1255 1257:1134(i64vec3) VectorShuffle 1256 1256 0 1 2 1258:1134(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1257 42 1259: 1117(ptr) AccessChain 34(data) 1254 1116 38 1260: 27(int64_t) CompositeExtract 1258 0 Store 1259 1260 1261: 1117(ptr) AccessChain 34(data) 1254 1116 42 1262: 27(int64_t) CompositeExtract 1258 1 Store 1261 1262 1263: 1117(ptr) AccessChain 34(data) 1254 1116 69 1264: 27(int64_t) CompositeExtract 1258 2 Store 1263 1264 1265: 6(int) Load 8(invocation) 1266: 1124(ptr) AccessChain 34(data) 73 1116 1267: 28(i64vec4) Load 1266 1268: 28(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1267 42 1269: 1124(ptr) AccessChain 34(data) 1265 1116 Store 1269 1268 1270: 6(int) Load 8(invocation) 1271: 1117(ptr) AccessChain 34(data) 37 1116 38 1272: 27(int64_t) Load 1271 1273: 27(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 1272 42 1274: 1117(ptr) AccessChain 34(data) 1270 1116 38 Store 1274 1273 1275: 6(int) Load 8(invocation) 1276: 1124(ptr) AccessChain 34(data) 47 1116 1277: 28(i64vec4) Load 1276 1278:1123(i64vec2) VectorShuffle 1277 1277 0 1 1279:1123(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 1278 42 1280: 1117(ptr) AccessChain 34(data) 1275 1116 38 1281: 27(int64_t) CompositeExtract 1279 0 Store 1280 1281 1282: 1117(ptr) AccessChain 34(data) 1275 1116 42 1283: 27(int64_t) CompositeExtract 1279 1 Store 1282 1283 1284: 6(int) Load 8(invocation) 1285: 1124(ptr) AccessChain 34(data) 59 1116 1286: 28(i64vec4) Load 1285 1287:1134(i64vec3) VectorShuffle 1286 1286 0 1 2 1288:1134(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 1287 42 1289: 1117(ptr) AccessChain 34(data) 1284 1116 38 1290: 27(int64_t) CompositeExtract 1288 0 Store 1289 1290 1291: 1117(ptr) AccessChain 34(data) 1284 1116 42 1292: 27(int64_t) CompositeExtract 1288 1 Store 1291 1292 1293: 1117(ptr) AccessChain 34(data) 1284 1116 69 1294: 27(int64_t) CompositeExtract 1288 2 Store 1293 1294 1295: 6(int) Load 8(invocation) 1296: 1124(ptr) AccessChain 34(data) 73 1116 1297: 28(i64vec4) Load 1296 1298: 28(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 1297 42 1299: 1124(ptr) AccessChain 34(data) 1295 1116 Store 1299 1298 1300: 6(int) Load 8(invocation) 1301: 1117(ptr) AccessChain 34(data) 37 1116 38 1302: 27(int64_t) Load 1301 1303: 27(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 1302 42 1304: 1117(ptr) AccessChain 34(data) 1300 1116 38 Store 1304 1303 1305: 6(int) Load 8(invocation) 1306: 1124(ptr) AccessChain 34(data) 47 1116 1307: 28(i64vec4) Load 1306 1308:1123(i64vec2) VectorShuffle 1307 1307 0 1 1309:1123(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 1308 42 1310: 1117(ptr) AccessChain 34(data) 1305 1116 38 1311: 27(int64_t) CompositeExtract 1309 0 Store 1310 1311 1312: 1117(ptr) AccessChain 34(data) 1305 1116 42 1313: 27(int64_t) CompositeExtract 1309 1 Store 1312 1313 1314: 6(int) Load 8(invocation) 1315: 1124(ptr) AccessChain 34(data) 59 1116 1316: 28(i64vec4) Load 1315 1317:1134(i64vec3) VectorShuffle 1316 1316 0 1 2 1318:1134(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 1317 42 1319: 1117(ptr) AccessChain 34(data) 1314 1116 38 1320: 27(int64_t) CompositeExtract 1318 0 Store 1319 1320 1321: 1117(ptr) AccessChain 34(data) 1314 1116 42 1322: 27(int64_t) CompositeExtract 1318 1 Store 1321 1322 1323: 1117(ptr) AccessChain 34(data) 1314 1116 69 1324: 27(int64_t) CompositeExtract 1318 2 Store 1323 1324 1325: 6(int) Load 8(invocation) 1326: 1124(ptr) AccessChain 34(data) 73 1116 1327: 28(i64vec4) Load 1326 1328: 28(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 1327 42 1329: 1124(ptr) AccessChain 34(data) 1325 1116 Store 1329 1328 1330: 6(int) Load 8(invocation) 1333: 1332(ptr) AccessChain 34(data) 37 1331 38 1334:29(float16_t) Load 1333 1335:29(float16_t) GroupNonUniformFAdd 43 ClusteredReduce 1334 42 1336: 1332(ptr) AccessChain 34(data) 1330 1331 38 Store 1336 1335 1337: 6(int) Load 8(invocation) 1340: 1339(ptr) AccessChain 34(data) 47 1331 1341: 30(f16vec4) Load 1340 1342:1338(f16vec2) VectorShuffle 1341 1341 0 1 1343:1338(f16vec2) GroupNonUniformFAdd 43 ClusteredReduce 1342 42 1344: 1332(ptr) AccessChain 34(data) 1337 1331 38 1345:29(float16_t) CompositeExtract 1343 0 Store 1344 1345 1346: 1332(ptr) AccessChain 34(data) 1337 1331 42 1347:29(float16_t) CompositeExtract 1343 1 Store 1346 1347 1348: 6(int) Load 8(invocation) 1350: 1339(ptr) AccessChain 34(data) 59 1331 1351: 30(f16vec4) Load 1350 1352:1349(f16vec3) VectorShuffle 1351 1351 0 1 2 1353:1349(f16vec3) GroupNonUniformFAdd 43 ClusteredReduce 1352 42 1354: 1332(ptr) AccessChain 34(data) 1348 1331 38 1355:29(float16_t) CompositeExtract 1353 0 Store 1354 1355 1356: 1332(ptr) AccessChain 34(data) 1348 1331 42 1357:29(float16_t) CompositeExtract 1353 1 Store 1356 1357 1358: 1332(ptr) AccessChain 34(data) 1348 1331 69 1359:29(float16_t) CompositeExtract 1353 2 Store 1358 1359 1360: 6(int) Load 8(invocation) 1361: 1339(ptr) AccessChain 34(data) 73 1331 1362: 30(f16vec4) Load 1361 1363: 30(f16vec4) GroupNonUniformFAdd 43 ClusteredReduce 1362 42 1364: 1339(ptr) AccessChain 34(data) 1360 1331 Store 1364 1363 1365: 6(int) Load 8(invocation) 1366: 1332(ptr) AccessChain 34(data) 37 1331 38 1367:29(float16_t) Load 1366 1368:29(float16_t) GroupNonUniformFMul 43 ClusteredReduce 1367 42 1369: 1332(ptr) AccessChain 34(data) 1365 1331 38 Store 1369 1368 1370: 6(int) Load 8(invocation) 1371: 1339(ptr) AccessChain 34(data) 47 1331 1372: 30(f16vec4) Load 1371 1373:1338(f16vec2) VectorShuffle 1372 1372 0 1 1374:1338(f16vec2) GroupNonUniformFMul 43 ClusteredReduce 1373 42 1375: 1332(ptr) AccessChain 34(data) 1370 1331 38 1376:29(float16_t) CompositeExtract 1374 0 Store 1375 1376 1377: 1332(ptr) AccessChain 34(data) 1370 1331 42 1378:29(float16_t) CompositeExtract 1374 1 Store 1377 1378 1379: 6(int) Load 8(invocation) 1380: 1339(ptr) AccessChain 34(data) 59 1331 1381: 30(f16vec4) Load 1380 1382:1349(f16vec3) VectorShuffle 1381 1381 0 1 2 1383:1349(f16vec3) GroupNonUniformFMul 43 ClusteredReduce 1382 42 1384: 1332(ptr) AccessChain 34(data) 1379 1331 38 1385:29(float16_t) CompositeExtract 1383 0 Store 1384 1385 1386: 1332(ptr) AccessChain 34(data) 1379 1331 42 1387:29(float16_t) CompositeExtract 1383 1 Store 1386 1387 1388: 1332(ptr) AccessChain 34(data) 1379 1331 69 1389:29(float16_t) CompositeExtract 1383 2 Store 1388 1389 1390: 6(int) Load 8(invocation) 1391: 1339(ptr) AccessChain 34(data) 73 1331 1392: 30(f16vec4) Load 1391 1393: 30(f16vec4) GroupNonUniformFMul 43 ClusteredReduce 1392 42 1394: 1339(ptr) AccessChain 34(data) 1390 1331 Store 1394 1393 1395: 6(int) Load 8(invocation) 1396: 1332(ptr) AccessChain 34(data) 37 1331 38 1397:29(float16_t) Load 1396 1398:29(float16_t) GroupNonUniformFMin 43 ClusteredReduce 1397 42 1399: 1332(ptr) AccessChain 34(data) 1395 1331 38 Store 1399 1398 1400: 6(int) Load 8(invocation) 1401: 1339(ptr) AccessChain 34(data) 47 1331 1402: 30(f16vec4) Load 1401 1403:1338(f16vec2) VectorShuffle 1402 1402 0 1 1404:1338(f16vec2) GroupNonUniformFMin 43 ClusteredReduce 1403 42 1405: 1332(ptr) AccessChain 34(data) 1400 1331 38 1406:29(float16_t) CompositeExtract 1404 0 Store 1405 1406 1407: 1332(ptr) AccessChain 34(data) 1400 1331 42 1408:29(float16_t) CompositeExtract 1404 1 Store 1407 1408 1409: 6(int) Load 8(invocation) 1410: 1339(ptr) AccessChain 34(data) 59 1331 1411: 30(f16vec4) Load 1410 1412:1349(f16vec3) VectorShuffle 1411 1411 0 1 2 1413:1349(f16vec3) GroupNonUniformFMin 43 ClusteredReduce 1412 42 1414: 1332(ptr) AccessChain 34(data) 1409 1331 38 1415:29(float16_t) CompositeExtract 1413 0 Store 1414 1415 1416: 1332(ptr) AccessChain 34(data) 1409 1331 42 1417:29(float16_t) CompositeExtract 1413 1 Store 1416 1417 1418: 1332(ptr) AccessChain 34(data) 1409 1331 69 1419:29(float16_t) CompositeExtract 1413 2 Store 1418 1419 1420: 6(int) Load 8(invocation) 1421: 1339(ptr) AccessChain 34(data) 73 1331 1422: 30(f16vec4) Load 1421 1423: 30(f16vec4) GroupNonUniformFMin 43 ClusteredReduce 1422 42 1424: 1339(ptr) AccessChain 34(data) 1420 1331 Store 1424 1423 1425: 6(int) Load 8(invocation) 1426: 1332(ptr) AccessChain 34(data) 37 1331 38 1427:29(float16_t) Load 1426 1428:29(float16_t) GroupNonUniformFMax 43 ClusteredReduce 1427 42 1429: 1332(ptr) AccessChain 34(data) 1425 1331 38 Store 1429 1428 1430: 6(int) Load 8(invocation) 1431: 1339(ptr) AccessChain 34(data) 47 1331 1432: 30(f16vec4) Load 1431 1433:1338(f16vec2) VectorShuffle 1432 1432 0 1 1434:1338(f16vec2) GroupNonUniformFMax 43 ClusteredReduce 1433 42 1435: 1332(ptr) AccessChain 34(data) 1430 1331 38 1436:29(float16_t) CompositeExtract 1434 0 Store 1435 1436 1437: 1332(ptr) AccessChain 34(data) 1430 1331 42 1438:29(float16_t) CompositeExtract 1434 1 Store 1437 1438 1439: 6(int) Load 8(invocation) 1440: 1339(ptr) AccessChain 34(data) 59 1331 1441: 30(f16vec4) Load 1440 1442:1349(f16vec3) VectorShuffle 1441 1441 0 1 2 1443:1349(f16vec3) GroupNonUniformFMax 43 ClusteredReduce 1442 42 1444: 1332(ptr) AccessChain 34(data) 1439 1331 38 1445:29(float16_t) CompositeExtract 1443 0 Store 1444 1445 1446: 1332(ptr) AccessChain 34(data) 1439 1331 42 1447:29(float16_t) CompositeExtract 1443 1 Store 1446 1447 1448: 1332(ptr) AccessChain 34(data) 1439 1331 69 1449:29(float16_t) CompositeExtract 1443 2 Store 1448 1449 1450: 6(int) Load 8(invocation) 1451: 1339(ptr) AccessChain 34(data) 73 1331 1452: 30(f16vec4) Load 1451 1453: 30(f16vec4) GroupNonUniformFMax 43 ClusteredReduce 1452 42 1454: 1339(ptr) AccessChain 34(data) 1450 1331 Store 1454 1453 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out000066400000000000000000000603131506534232700276300ustar00rootroot00000000000000spv.subgroupExtendedTypesClusteredNeg.comp ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:46: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:47: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:48: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:51: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:52: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:53: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:56: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:57: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:58: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:61: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:62: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:63: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:66: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:67: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:68: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:71: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:72: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:73: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:76: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:77: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:78: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:81: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:82: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:83: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:86: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:87: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:88: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:91: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:92: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:93: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:96: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:97: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:98: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:101: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:102: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:103: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:106: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:107: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:108: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:111: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:112: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:113: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:116: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:117: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:118: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:121: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:122: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:123: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:126: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:127: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:128: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:131: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:132: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:133: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:136: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:137: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:138: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:141: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:142: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:143: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:146: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:147: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:148: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:151: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:152: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:153: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:156: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:157: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:158: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:161: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:162: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:163: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:166: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:167: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:168: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:169: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:171: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:172: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:173: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:174: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:176: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:177: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:178: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:179: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:181: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:182: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:183: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:184: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:186: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:187: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:188: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:189: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:191: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:192: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:193: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:194: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:196: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:197: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:198: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:199: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:201: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:202: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:203: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:204: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:206: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:207: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:208: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:209: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:211: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:212: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:213: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:214: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:216: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:217: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:218: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:219: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:221: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:222: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:223: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:224: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:226: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:227: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:228: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:229: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:231: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:232: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:233: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:234: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:236: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:237: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:238: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:239: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:241: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:242: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:243: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:244: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:246: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:247: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:248: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:249: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:251: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:252: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:253: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:254: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 184 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out000066400000000000000000003466561506534232700275470ustar00rootroot00000000000000spv.subgroupExtendedTypesPartitioned.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 1743 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability GroupNonUniform Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Capability GroupNonUniformPartitionedNV Extension "SPV_KHR_8bit_storage" Extension "SPV_NV_shader_subgroup_partitioned" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_NV_shader_subgroup_partitioned" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 19 "ballot" Name 34 "Buffers" MemberName 34(Buffers) 0 "i8" MemberName 34(Buffers) 1 "u8" MemberName 34(Buffers) 2 "i16" MemberName 34(Buffers) 3 "u16" MemberName 34(Buffers) 4 "i64" MemberName 34(Buffers) 5 "u64" MemberName 34(Buffers) 6 "f16" Name 37 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 34(Buffers) Block MemberDecorate 34(Buffers) 0 Offset 0 MemberDecorate 34(Buffers) 1 Offset 4 MemberDecorate 34(Buffers) 2 Offset 8 MemberDecorate 34(Buffers) 3 Offset 16 MemberDecorate 34(Buffers) 4 Offset 32 MemberDecorate 34(Buffers) 5 Offset 64 MemberDecorate 34(Buffers) 6 Offset 96 Decorate 37(data) Binding 0 Decorate 37(data) DescriptorSet 0 Decorate 1742 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeVector 6(int) 4 18: TypePointer Function 17(ivec4) 20: TypeInt 8 1 21: TypeVector 20(int8_t) 4 22: TypeInt 8 0 23: TypeVector 22(int8_t) 4 24: TypeInt 16 1 25: TypeVector 24(int16_t) 4 26: TypeInt 16 0 27: TypeVector 26(int16_t) 4 28: TypeInt 64 1 29: TypeVector 28(int64_t) 4 30: TypeInt 64 0 31: TypeVector 30(int64_t) 4 32: TypeFloat 16 33: TypeVector 32(float16_t) 4 34(Buffers): TypeStruct 21(i8vec4) 23(i8vec4) 25(i16vec4) 27(i16vec4) 29(i64vec4) 31(i64vec4) 33(f16vec4) 35: TypeArray 34(Buffers) 15 36: TypePointer StorageBuffer 35 37(data): 36(ptr) Variable StorageBuffer 38: TypeInt 32 1 39: 38(int) Constant 0 40: 6(int) Constant 0 41: TypePointer StorageBuffer 20(int8_t) 45: 38(int) Constant 1 46: TypeVector 20(int8_t) 2 47: TypePointer StorageBuffer 21(i8vec4) 52: 38(int) Constant 2 53: TypeVector 20(int8_t) 3 58: 38(int) Constant 3 62: TypePointer StorageBuffer 22(int8_t) 66: TypeVector 22(int8_t) 2 67: TypePointer StorageBuffer 23(i8vec4) 72: TypeVector 22(int8_t) 3 80: TypePointer StorageBuffer 24(int16_t) 84: TypeVector 24(int16_t) 2 85: TypePointer StorageBuffer 25(i16vec4) 90: TypeVector 24(int16_t) 3 98: TypePointer StorageBuffer 26(int16_t) 102: TypeVector 26(int16_t) 2 103: TypePointer StorageBuffer 27(i16vec4) 108: TypeVector 26(int16_t) 3 116: 38(int) Constant 4 117: TypePointer StorageBuffer 28(int64_t) 121: TypeVector 28(int64_t) 2 122: TypePointer StorageBuffer 29(i64vec4) 127: TypeVector 28(int64_t) 3 135: 38(int) Constant 5 136: TypePointer StorageBuffer 30(int64_t) 140: TypeVector 30(int64_t) 2 141: TypePointer StorageBuffer 31(i64vec4) 146: TypeVector 30(int64_t) 3 154: 38(int) Constant 6 155: TypePointer StorageBuffer 32(float16_t) 159: TypeVector 32(float16_t) 2 160: TypePointer StorageBuffer 33(f16vec4) 165: TypeVector 32(float16_t) 3 177: 6(int) Constant 3 188: 6(int) Constant 1 201: 6(int) Constant 2 1740: TypeVector 6(int) 3 1741: 6(int) Constant 8 1742: 1740(ivec3) ConstantComposite 1741 188 188 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 19(ballot): 18(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 42: 41(ptr) AccessChain 37(data) 39 39 40 43: 20(int8_t) Load 42 44: 17(ivec4) GroupNonUniformPartitionNV 43 Store 19(ballot) 44 48: 47(ptr) AccessChain 37(data) 45 39 49: 21(i8vec4) Load 48 50: 46(i8vec2) VectorShuffle 49 49 0 1 51: 17(ivec4) GroupNonUniformPartitionNV 50 Store 19(ballot) 51 54: 47(ptr) AccessChain 37(data) 52 39 55: 21(i8vec4) Load 54 56: 53(i8vec3) VectorShuffle 55 55 0 1 2 57: 17(ivec4) GroupNonUniformPartitionNV 56 Store 19(ballot) 57 59: 47(ptr) AccessChain 37(data) 58 39 60: 21(i8vec4) Load 59 61: 17(ivec4) GroupNonUniformPartitionNV 60 Store 19(ballot) 61 63: 62(ptr) AccessChain 37(data) 39 45 40 64: 22(int8_t) Load 63 65: 17(ivec4) GroupNonUniformPartitionNV 64 Store 19(ballot) 65 68: 67(ptr) AccessChain 37(data) 45 45 69: 23(i8vec4) Load 68 70: 66(i8vec2) VectorShuffle 69 69 0 1 71: 17(ivec4) GroupNonUniformPartitionNV 70 Store 19(ballot) 71 73: 67(ptr) AccessChain 37(data) 52 45 74: 23(i8vec4) Load 73 75: 72(i8vec3) VectorShuffle 74 74 0 1 2 76: 17(ivec4) GroupNonUniformPartitionNV 75 Store 19(ballot) 76 77: 67(ptr) AccessChain 37(data) 58 45 78: 23(i8vec4) Load 77 79: 17(ivec4) GroupNonUniformPartitionNV 78 Store 19(ballot) 79 81: 80(ptr) AccessChain 37(data) 39 52 40 82: 24(int16_t) Load 81 83: 17(ivec4) GroupNonUniformPartitionNV 82 Store 19(ballot) 83 86: 85(ptr) AccessChain 37(data) 45 52 87: 25(i16vec4) Load 86 88: 84(i16vec2) VectorShuffle 87 87 0 1 89: 17(ivec4) GroupNonUniformPartitionNV 88 Store 19(ballot) 89 91: 85(ptr) AccessChain 37(data) 52 52 92: 25(i16vec4) Load 91 93: 90(i16vec3) VectorShuffle 92 92 0 1 2 94: 17(ivec4) GroupNonUniformPartitionNV 93 Store 19(ballot) 94 95: 85(ptr) AccessChain 37(data) 58 52 96: 25(i16vec4) Load 95 97: 17(ivec4) GroupNonUniformPartitionNV 96 Store 19(ballot) 97 99: 98(ptr) AccessChain 37(data) 39 58 40 100: 26(int16_t) Load 99 101: 17(ivec4) GroupNonUniformPartitionNV 100 Store 19(ballot) 101 104: 103(ptr) AccessChain 37(data) 45 58 105: 27(i16vec4) Load 104 106:102(i16vec2) VectorShuffle 105 105 0 1 107: 17(ivec4) GroupNonUniformPartitionNV 106 Store 19(ballot) 107 109: 103(ptr) AccessChain 37(data) 52 58 110: 27(i16vec4) Load 109 111:108(i16vec3) VectorShuffle 110 110 0 1 2 112: 17(ivec4) GroupNonUniformPartitionNV 111 Store 19(ballot) 112 113: 103(ptr) AccessChain 37(data) 58 58 114: 27(i16vec4) Load 113 115: 17(ivec4) GroupNonUniformPartitionNV 114 Store 19(ballot) 115 118: 117(ptr) AccessChain 37(data) 39 116 40 119: 28(int64_t) Load 118 120: 17(ivec4) GroupNonUniformPartitionNV 119 Store 19(ballot) 120 123: 122(ptr) AccessChain 37(data) 45 116 124: 29(i64vec4) Load 123 125:121(i64vec2) VectorShuffle 124 124 0 1 126: 17(ivec4) GroupNonUniformPartitionNV 125 Store 19(ballot) 126 128: 122(ptr) AccessChain 37(data) 52 116 129: 29(i64vec4) Load 128 130:127(i64vec3) VectorShuffle 129 129 0 1 2 131: 17(ivec4) GroupNonUniformPartitionNV 130 Store 19(ballot) 131 132: 122(ptr) AccessChain 37(data) 58 116 133: 29(i64vec4) Load 132 134: 17(ivec4) GroupNonUniformPartitionNV 133 Store 19(ballot) 134 137: 136(ptr) AccessChain 37(data) 39 135 40 138: 30(int64_t) Load 137 139: 17(ivec4) GroupNonUniformPartitionNV 138 Store 19(ballot) 139 142: 141(ptr) AccessChain 37(data) 45 135 143: 31(i64vec4) Load 142 144:140(i64vec2) VectorShuffle 143 143 0 1 145: 17(ivec4) GroupNonUniformPartitionNV 144 Store 19(ballot) 145 147: 141(ptr) AccessChain 37(data) 52 135 148: 31(i64vec4) Load 147 149:146(i64vec3) VectorShuffle 148 148 0 1 2 150: 17(ivec4) GroupNonUniformPartitionNV 149 Store 19(ballot) 150 151: 141(ptr) AccessChain 37(data) 58 135 152: 31(i64vec4) Load 151 153: 17(ivec4) GroupNonUniformPartitionNV 152 Store 19(ballot) 153 156: 155(ptr) AccessChain 37(data) 39 154 40 157:32(float16_t) Load 156 158: 17(ivec4) GroupNonUniformPartitionNV 157 Store 19(ballot) 158 161: 160(ptr) AccessChain 37(data) 45 154 162: 33(f16vec4) Load 161 163:159(f16vec2) VectorShuffle 162 162 0 1 164: 17(ivec4) GroupNonUniformPartitionNV 163 Store 19(ballot) 164 166: 160(ptr) AccessChain 37(data) 52 154 167: 33(f16vec4) Load 166 168:165(f16vec3) VectorShuffle 167 167 0 1 2 169: 17(ivec4) GroupNonUniformPartitionNV 168 Store 19(ballot) 169 170: 160(ptr) AccessChain 37(data) 58 154 171: 33(f16vec4) Load 170 172: 17(ivec4) GroupNonUniformPartitionNV 171 Store 19(ballot) 172 173: 6(int) Load 8(invocation) 174: 41(ptr) AccessChain 37(data) 39 39 40 175: 20(int8_t) Load 174 176: 17(ivec4) Load 19(ballot) 178: 20(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 175 176 179: 41(ptr) AccessChain 37(data) 173 39 40 Store 179 178 180: 6(int) Load 8(invocation) 181: 47(ptr) AccessChain 37(data) 45 39 182: 21(i8vec4) Load 181 183: 46(i8vec2) VectorShuffle 182 182 0 1 184: 17(ivec4) Load 19(ballot) 185: 46(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 183 184 186: 41(ptr) AccessChain 37(data) 180 39 40 187: 20(int8_t) CompositeExtract 185 0 Store 186 187 189: 41(ptr) AccessChain 37(data) 180 39 188 190: 20(int8_t) CompositeExtract 185 1 Store 189 190 191: 6(int) Load 8(invocation) 192: 47(ptr) AccessChain 37(data) 52 39 193: 21(i8vec4) Load 192 194: 53(i8vec3) VectorShuffle 193 193 0 1 2 195: 17(ivec4) Load 19(ballot) 196: 53(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 194 195 197: 41(ptr) AccessChain 37(data) 191 39 40 198: 20(int8_t) CompositeExtract 196 0 Store 197 198 199: 41(ptr) AccessChain 37(data) 191 39 188 200: 20(int8_t) CompositeExtract 196 1 Store 199 200 202: 41(ptr) AccessChain 37(data) 191 39 201 203: 20(int8_t) CompositeExtract 196 2 Store 202 203 204: 6(int) Load 8(invocation) 205: 47(ptr) AccessChain 37(data) 58 39 206: 21(i8vec4) Load 205 207: 17(ivec4) Load 19(ballot) 208: 21(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 206 207 209: 47(ptr) AccessChain 37(data) 204 39 Store 209 208 210: 6(int) Load 8(invocation) 211: 41(ptr) AccessChain 37(data) 39 39 40 212: 20(int8_t) Load 211 213: 17(ivec4) Load 19(ballot) 214: 20(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 212 213 215: 41(ptr) AccessChain 37(data) 210 39 40 Store 215 214 216: 6(int) Load 8(invocation) 217: 47(ptr) AccessChain 37(data) 45 39 218: 21(i8vec4) Load 217 219: 46(i8vec2) VectorShuffle 218 218 0 1 220: 17(ivec4) Load 19(ballot) 221: 46(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 219 220 222: 41(ptr) AccessChain 37(data) 216 39 40 223: 20(int8_t) CompositeExtract 221 0 Store 222 223 224: 41(ptr) AccessChain 37(data) 216 39 188 225: 20(int8_t) CompositeExtract 221 1 Store 224 225 226: 6(int) Load 8(invocation) 227: 47(ptr) AccessChain 37(data) 52 39 228: 21(i8vec4) Load 227 229: 53(i8vec3) VectorShuffle 228 228 0 1 2 230: 17(ivec4) Load 19(ballot) 231: 53(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 229 230 232: 41(ptr) AccessChain 37(data) 226 39 40 233: 20(int8_t) CompositeExtract 231 0 Store 232 233 234: 41(ptr) AccessChain 37(data) 226 39 188 235: 20(int8_t) CompositeExtract 231 1 Store 234 235 236: 41(ptr) AccessChain 37(data) 226 39 201 237: 20(int8_t) CompositeExtract 231 2 Store 236 237 238: 6(int) Load 8(invocation) 239: 47(ptr) AccessChain 37(data) 58 39 240: 21(i8vec4) Load 239 241: 17(ivec4) Load 19(ballot) 242: 21(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 240 241 243: 47(ptr) AccessChain 37(data) 238 39 Store 243 242 244: 6(int) Load 8(invocation) 245: 41(ptr) AccessChain 37(data) 39 39 40 246: 20(int8_t) Load 245 247: 17(ivec4) Load 19(ballot) 248: 20(int8_t) GroupNonUniformSMin 177 PartitionedReduceNV 246 247 249: 41(ptr) AccessChain 37(data) 244 39 40 Store 249 248 250: 6(int) Load 8(invocation) 251: 47(ptr) AccessChain 37(data) 45 39 252: 21(i8vec4) Load 251 253: 46(i8vec2) VectorShuffle 252 252 0 1 254: 17(ivec4) Load 19(ballot) 255: 46(i8vec2) GroupNonUniformSMin 177 PartitionedReduceNV 253 254 256: 41(ptr) AccessChain 37(data) 250 39 40 257: 20(int8_t) CompositeExtract 255 0 Store 256 257 258: 41(ptr) AccessChain 37(data) 250 39 188 259: 20(int8_t) CompositeExtract 255 1 Store 258 259 260: 6(int) Load 8(invocation) 261: 47(ptr) AccessChain 37(data) 52 39 262: 21(i8vec4) Load 261 263: 53(i8vec3) VectorShuffle 262 262 0 1 2 264: 17(ivec4) Load 19(ballot) 265: 53(i8vec3) GroupNonUniformSMin 177 PartitionedReduceNV 263 264 266: 41(ptr) AccessChain 37(data) 260 39 40 267: 20(int8_t) CompositeExtract 265 0 Store 266 267 268: 41(ptr) AccessChain 37(data) 260 39 188 269: 20(int8_t) CompositeExtract 265 1 Store 268 269 270: 41(ptr) AccessChain 37(data) 260 39 201 271: 20(int8_t) CompositeExtract 265 2 Store 270 271 272: 6(int) Load 8(invocation) 273: 47(ptr) AccessChain 37(data) 58 39 274: 21(i8vec4) Load 273 275: 17(ivec4) Load 19(ballot) 276: 21(i8vec4) GroupNonUniformSMin 177 PartitionedReduceNV 274 275 277: 47(ptr) AccessChain 37(data) 272 39 Store 277 276 278: 6(int) Load 8(invocation) 279: 41(ptr) AccessChain 37(data) 39 39 40 280: 20(int8_t) Load 279 281: 17(ivec4) Load 19(ballot) 282: 20(int8_t) GroupNonUniformSMax 177 PartitionedReduceNV 280 281 283: 41(ptr) AccessChain 37(data) 278 39 40 Store 283 282 284: 6(int) Load 8(invocation) 285: 47(ptr) AccessChain 37(data) 45 39 286: 21(i8vec4) Load 285 287: 46(i8vec2) VectorShuffle 286 286 0 1 288: 17(ivec4) Load 19(ballot) 289: 46(i8vec2) GroupNonUniformSMax 177 PartitionedReduceNV 287 288 290: 41(ptr) AccessChain 37(data) 284 39 40 291: 20(int8_t) CompositeExtract 289 0 Store 290 291 292: 41(ptr) AccessChain 37(data) 284 39 188 293: 20(int8_t) CompositeExtract 289 1 Store 292 293 294: 6(int) Load 8(invocation) 295: 47(ptr) AccessChain 37(data) 52 39 296: 21(i8vec4) Load 295 297: 53(i8vec3) VectorShuffle 296 296 0 1 2 298: 17(ivec4) Load 19(ballot) 299: 53(i8vec3) GroupNonUniformSMax 177 PartitionedReduceNV 297 298 300: 41(ptr) AccessChain 37(data) 294 39 40 301: 20(int8_t) CompositeExtract 299 0 Store 300 301 302: 41(ptr) AccessChain 37(data) 294 39 188 303: 20(int8_t) CompositeExtract 299 1 Store 302 303 304: 41(ptr) AccessChain 37(data) 294 39 201 305: 20(int8_t) CompositeExtract 299 2 Store 304 305 306: 6(int) Load 8(invocation) 307: 47(ptr) AccessChain 37(data) 58 39 308: 21(i8vec4) Load 307 309: 17(ivec4) Load 19(ballot) 310: 21(i8vec4) GroupNonUniformSMax 177 PartitionedReduceNV 308 309 311: 47(ptr) AccessChain 37(data) 306 39 Store 311 310 312: 6(int) Load 8(invocation) 313: 41(ptr) AccessChain 37(data) 39 39 40 314: 20(int8_t) Load 313 315: 17(ivec4) Load 19(ballot) 316: 20(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 314 315 317: 41(ptr) AccessChain 37(data) 312 39 40 Store 317 316 318: 6(int) Load 8(invocation) 319: 47(ptr) AccessChain 37(data) 45 39 320: 21(i8vec4) Load 319 321: 46(i8vec2) VectorShuffle 320 320 0 1 322: 17(ivec4) Load 19(ballot) 323: 46(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 321 322 324: 41(ptr) AccessChain 37(data) 318 39 40 325: 20(int8_t) CompositeExtract 323 0 Store 324 325 326: 41(ptr) AccessChain 37(data) 318 39 188 327: 20(int8_t) CompositeExtract 323 1 Store 326 327 328: 6(int) Load 8(invocation) 329: 47(ptr) AccessChain 37(data) 52 39 330: 21(i8vec4) Load 329 331: 53(i8vec3) VectorShuffle 330 330 0 1 2 332: 17(ivec4) Load 19(ballot) 333: 53(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 331 332 334: 41(ptr) AccessChain 37(data) 328 39 40 335: 20(int8_t) CompositeExtract 333 0 Store 334 335 336: 41(ptr) AccessChain 37(data) 328 39 188 337: 20(int8_t) CompositeExtract 333 1 Store 336 337 338: 41(ptr) AccessChain 37(data) 328 39 201 339: 20(int8_t) CompositeExtract 333 2 Store 338 339 340: 6(int) Load 8(invocation) 341: 47(ptr) AccessChain 37(data) 58 39 342: 21(i8vec4) Load 341 343: 17(ivec4) Load 19(ballot) 344: 21(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 342 343 345: 47(ptr) AccessChain 37(data) 340 39 Store 345 344 346: 6(int) Load 8(invocation) 347: 41(ptr) AccessChain 37(data) 39 39 40 348: 20(int8_t) Load 347 349: 17(ivec4) Load 19(ballot) 350: 20(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 348 349 351: 41(ptr) AccessChain 37(data) 346 39 40 Store 351 350 352: 6(int) Load 8(invocation) 353: 47(ptr) AccessChain 37(data) 45 39 354: 21(i8vec4) Load 353 355: 46(i8vec2) VectorShuffle 354 354 0 1 356: 17(ivec4) Load 19(ballot) 357: 46(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 355 356 358: 41(ptr) AccessChain 37(data) 352 39 40 359: 20(int8_t) CompositeExtract 357 0 Store 358 359 360: 41(ptr) AccessChain 37(data) 352 39 188 361: 20(int8_t) CompositeExtract 357 1 Store 360 361 362: 6(int) Load 8(invocation) 363: 47(ptr) AccessChain 37(data) 52 39 364: 21(i8vec4) Load 363 365: 53(i8vec3) VectorShuffle 364 364 0 1 2 366: 17(ivec4) Load 19(ballot) 367: 53(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 365 366 368: 41(ptr) AccessChain 37(data) 362 39 40 369: 20(int8_t) CompositeExtract 367 0 Store 368 369 370: 41(ptr) AccessChain 37(data) 362 39 188 371: 20(int8_t) CompositeExtract 367 1 Store 370 371 372: 41(ptr) AccessChain 37(data) 362 39 201 373: 20(int8_t) CompositeExtract 367 2 Store 372 373 374: 6(int) Load 8(invocation) 375: 47(ptr) AccessChain 37(data) 58 39 376: 21(i8vec4) Load 375 377: 17(ivec4) Load 19(ballot) 378: 21(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 376 377 379: 47(ptr) AccessChain 37(data) 374 39 Store 379 378 380: 6(int) Load 8(invocation) 381: 41(ptr) AccessChain 37(data) 39 39 40 382: 20(int8_t) Load 381 383: 17(ivec4) Load 19(ballot) 384: 20(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 382 383 385: 41(ptr) AccessChain 37(data) 380 39 40 Store 385 384 386: 6(int) Load 8(invocation) 387: 47(ptr) AccessChain 37(data) 45 39 388: 21(i8vec4) Load 387 389: 46(i8vec2) VectorShuffle 388 388 0 1 390: 17(ivec4) Load 19(ballot) 391: 46(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 389 390 392: 41(ptr) AccessChain 37(data) 386 39 40 393: 20(int8_t) CompositeExtract 391 0 Store 392 393 394: 41(ptr) AccessChain 37(data) 386 39 188 395: 20(int8_t) CompositeExtract 391 1 Store 394 395 396: 6(int) Load 8(invocation) 397: 47(ptr) AccessChain 37(data) 52 39 398: 21(i8vec4) Load 397 399: 53(i8vec3) VectorShuffle 398 398 0 1 2 400: 17(ivec4) Load 19(ballot) 401: 53(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 399 400 402: 41(ptr) AccessChain 37(data) 396 39 40 403: 20(int8_t) CompositeExtract 401 0 Store 402 403 404: 41(ptr) AccessChain 37(data) 396 39 188 405: 20(int8_t) CompositeExtract 401 1 Store 404 405 406: 41(ptr) AccessChain 37(data) 396 39 201 407: 20(int8_t) CompositeExtract 401 2 Store 406 407 408: 6(int) Load 8(invocation) 409: 47(ptr) AccessChain 37(data) 58 39 410: 21(i8vec4) Load 409 411: 17(ivec4) Load 19(ballot) 412: 21(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 410 411 413: 47(ptr) AccessChain 37(data) 408 39 Store 413 412 414: 6(int) Load 8(invocation) 415: 62(ptr) AccessChain 37(data) 39 45 40 416: 22(int8_t) Load 415 417: 17(ivec4) Load 19(ballot) 418: 22(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 416 417 419: 62(ptr) AccessChain 37(data) 414 45 40 Store 419 418 420: 6(int) Load 8(invocation) 421: 67(ptr) AccessChain 37(data) 45 45 422: 23(i8vec4) Load 421 423: 66(i8vec2) VectorShuffle 422 422 0 1 424: 17(ivec4) Load 19(ballot) 425: 66(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 423 424 426: 62(ptr) AccessChain 37(data) 420 45 40 427: 22(int8_t) CompositeExtract 425 0 Store 426 427 428: 62(ptr) AccessChain 37(data) 420 45 188 429: 22(int8_t) CompositeExtract 425 1 Store 428 429 430: 6(int) Load 8(invocation) 431: 67(ptr) AccessChain 37(data) 52 45 432: 23(i8vec4) Load 431 433: 72(i8vec3) VectorShuffle 432 432 0 1 2 434: 17(ivec4) Load 19(ballot) 435: 72(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 433 434 436: 62(ptr) AccessChain 37(data) 430 45 40 437: 22(int8_t) CompositeExtract 435 0 Store 436 437 438: 62(ptr) AccessChain 37(data) 430 45 188 439: 22(int8_t) CompositeExtract 435 1 Store 438 439 440: 62(ptr) AccessChain 37(data) 430 45 201 441: 22(int8_t) CompositeExtract 435 2 Store 440 441 442: 6(int) Load 8(invocation) 443: 67(ptr) AccessChain 37(data) 58 45 444: 23(i8vec4) Load 443 445: 17(ivec4) Load 19(ballot) 446: 23(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 444 445 447: 67(ptr) AccessChain 37(data) 442 45 Store 447 446 448: 6(int) Load 8(invocation) 449: 62(ptr) AccessChain 37(data) 39 45 40 450: 22(int8_t) Load 449 451: 17(ivec4) Load 19(ballot) 452: 22(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 450 451 453: 62(ptr) AccessChain 37(data) 448 45 40 Store 453 452 454: 6(int) Load 8(invocation) 455: 67(ptr) AccessChain 37(data) 45 45 456: 23(i8vec4) Load 455 457: 66(i8vec2) VectorShuffle 456 456 0 1 458: 17(ivec4) Load 19(ballot) 459: 66(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 457 458 460: 62(ptr) AccessChain 37(data) 454 45 40 461: 22(int8_t) CompositeExtract 459 0 Store 460 461 462: 62(ptr) AccessChain 37(data) 454 45 188 463: 22(int8_t) CompositeExtract 459 1 Store 462 463 464: 6(int) Load 8(invocation) 465: 67(ptr) AccessChain 37(data) 52 45 466: 23(i8vec4) Load 465 467: 72(i8vec3) VectorShuffle 466 466 0 1 2 468: 17(ivec4) Load 19(ballot) 469: 72(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 467 468 470: 62(ptr) AccessChain 37(data) 464 45 40 471: 22(int8_t) CompositeExtract 469 0 Store 470 471 472: 62(ptr) AccessChain 37(data) 464 45 188 473: 22(int8_t) CompositeExtract 469 1 Store 472 473 474: 62(ptr) AccessChain 37(data) 464 45 201 475: 22(int8_t) CompositeExtract 469 2 Store 474 475 476: 6(int) Load 8(invocation) 477: 67(ptr) AccessChain 37(data) 58 45 478: 23(i8vec4) Load 477 479: 17(ivec4) Load 19(ballot) 480: 23(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 478 479 481: 67(ptr) AccessChain 37(data) 476 45 Store 481 480 482: 6(int) Load 8(invocation) 483: 62(ptr) AccessChain 37(data) 39 45 40 484: 22(int8_t) Load 483 485: 17(ivec4) Load 19(ballot) 486: 22(int8_t) GroupNonUniformUMin 177 PartitionedReduceNV 484 485 487: 62(ptr) AccessChain 37(data) 482 45 40 Store 487 486 488: 6(int) Load 8(invocation) 489: 67(ptr) AccessChain 37(data) 45 45 490: 23(i8vec4) Load 489 491: 66(i8vec2) VectorShuffle 490 490 0 1 492: 17(ivec4) Load 19(ballot) 493: 66(i8vec2) GroupNonUniformUMin 177 PartitionedReduceNV 491 492 494: 62(ptr) AccessChain 37(data) 488 45 40 495: 22(int8_t) CompositeExtract 493 0 Store 494 495 496: 62(ptr) AccessChain 37(data) 488 45 188 497: 22(int8_t) CompositeExtract 493 1 Store 496 497 498: 6(int) Load 8(invocation) 499: 67(ptr) AccessChain 37(data) 52 45 500: 23(i8vec4) Load 499 501: 72(i8vec3) VectorShuffle 500 500 0 1 2 502: 17(ivec4) Load 19(ballot) 503: 72(i8vec3) GroupNonUniformUMin 177 PartitionedReduceNV 501 502 504: 62(ptr) AccessChain 37(data) 498 45 40 505: 22(int8_t) CompositeExtract 503 0 Store 504 505 506: 62(ptr) AccessChain 37(data) 498 45 188 507: 22(int8_t) CompositeExtract 503 1 Store 506 507 508: 62(ptr) AccessChain 37(data) 498 45 201 509: 22(int8_t) CompositeExtract 503 2 Store 508 509 510: 6(int) Load 8(invocation) 511: 67(ptr) AccessChain 37(data) 58 45 512: 23(i8vec4) Load 511 513: 17(ivec4) Load 19(ballot) 514: 23(i8vec4) GroupNonUniformUMin 177 PartitionedReduceNV 512 513 515: 67(ptr) AccessChain 37(data) 510 45 Store 515 514 516: 6(int) Load 8(invocation) 517: 62(ptr) AccessChain 37(data) 39 45 40 518: 22(int8_t) Load 517 519: 17(ivec4) Load 19(ballot) 520: 22(int8_t) GroupNonUniformUMax 177 PartitionedReduceNV 518 519 521: 62(ptr) AccessChain 37(data) 516 45 40 Store 521 520 522: 6(int) Load 8(invocation) 523: 67(ptr) AccessChain 37(data) 45 45 524: 23(i8vec4) Load 523 525: 66(i8vec2) VectorShuffle 524 524 0 1 526: 17(ivec4) Load 19(ballot) 527: 66(i8vec2) GroupNonUniformUMax 177 PartitionedReduceNV 525 526 528: 62(ptr) AccessChain 37(data) 522 45 40 529: 22(int8_t) CompositeExtract 527 0 Store 528 529 530: 62(ptr) AccessChain 37(data) 522 45 188 531: 22(int8_t) CompositeExtract 527 1 Store 530 531 532: 6(int) Load 8(invocation) 533: 67(ptr) AccessChain 37(data) 52 45 534: 23(i8vec4) Load 533 535: 72(i8vec3) VectorShuffle 534 534 0 1 2 536: 17(ivec4) Load 19(ballot) 537: 72(i8vec3) GroupNonUniformUMax 177 PartitionedReduceNV 535 536 538: 62(ptr) AccessChain 37(data) 532 45 40 539: 22(int8_t) CompositeExtract 537 0 Store 538 539 540: 62(ptr) AccessChain 37(data) 532 45 188 541: 22(int8_t) CompositeExtract 537 1 Store 540 541 542: 62(ptr) AccessChain 37(data) 532 45 201 543: 22(int8_t) CompositeExtract 537 2 Store 542 543 544: 6(int) Load 8(invocation) 545: 67(ptr) AccessChain 37(data) 58 45 546: 23(i8vec4) Load 545 547: 17(ivec4) Load 19(ballot) 548: 23(i8vec4) GroupNonUniformUMax 177 PartitionedReduceNV 546 547 549: 67(ptr) AccessChain 37(data) 544 45 Store 549 548 550: 6(int) Load 8(invocation) 551: 62(ptr) AccessChain 37(data) 39 45 40 552: 22(int8_t) Load 551 553: 17(ivec4) Load 19(ballot) 554: 22(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 552 553 555: 62(ptr) AccessChain 37(data) 550 45 40 Store 555 554 556: 6(int) Load 8(invocation) 557: 67(ptr) AccessChain 37(data) 45 45 558: 23(i8vec4) Load 557 559: 66(i8vec2) VectorShuffle 558 558 0 1 560: 17(ivec4) Load 19(ballot) 561: 66(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 559 560 562: 62(ptr) AccessChain 37(data) 556 45 40 563: 22(int8_t) CompositeExtract 561 0 Store 562 563 564: 62(ptr) AccessChain 37(data) 556 45 188 565: 22(int8_t) CompositeExtract 561 1 Store 564 565 566: 6(int) Load 8(invocation) 567: 67(ptr) AccessChain 37(data) 52 45 568: 23(i8vec4) Load 567 569: 72(i8vec3) VectorShuffle 568 568 0 1 2 570: 17(ivec4) Load 19(ballot) 571: 72(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 569 570 572: 62(ptr) AccessChain 37(data) 566 45 40 573: 22(int8_t) CompositeExtract 571 0 Store 572 573 574: 62(ptr) AccessChain 37(data) 566 45 188 575: 22(int8_t) CompositeExtract 571 1 Store 574 575 576: 62(ptr) AccessChain 37(data) 566 45 201 577: 22(int8_t) CompositeExtract 571 2 Store 576 577 578: 6(int) Load 8(invocation) 579: 67(ptr) AccessChain 37(data) 58 45 580: 23(i8vec4) Load 579 581: 17(ivec4) Load 19(ballot) 582: 23(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 580 581 583: 67(ptr) AccessChain 37(data) 578 45 Store 583 582 584: 6(int) Load 8(invocation) 585: 62(ptr) AccessChain 37(data) 39 45 40 586: 22(int8_t) Load 585 587: 17(ivec4) Load 19(ballot) 588: 22(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 586 587 589: 62(ptr) AccessChain 37(data) 584 45 40 Store 589 588 590: 6(int) Load 8(invocation) 591: 67(ptr) AccessChain 37(data) 45 45 592: 23(i8vec4) Load 591 593: 66(i8vec2) VectorShuffle 592 592 0 1 594: 17(ivec4) Load 19(ballot) 595: 66(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 593 594 596: 62(ptr) AccessChain 37(data) 590 45 40 597: 22(int8_t) CompositeExtract 595 0 Store 596 597 598: 62(ptr) AccessChain 37(data) 590 45 188 599: 22(int8_t) CompositeExtract 595 1 Store 598 599 600: 6(int) Load 8(invocation) 601: 67(ptr) AccessChain 37(data) 52 45 602: 23(i8vec4) Load 601 603: 72(i8vec3) VectorShuffle 602 602 0 1 2 604: 17(ivec4) Load 19(ballot) 605: 72(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 603 604 606: 62(ptr) AccessChain 37(data) 600 45 40 607: 22(int8_t) CompositeExtract 605 0 Store 606 607 608: 62(ptr) AccessChain 37(data) 600 45 188 609: 22(int8_t) CompositeExtract 605 1 Store 608 609 610: 62(ptr) AccessChain 37(data) 600 45 201 611: 22(int8_t) CompositeExtract 605 2 Store 610 611 612: 6(int) Load 8(invocation) 613: 67(ptr) AccessChain 37(data) 58 45 614: 23(i8vec4) Load 613 615: 17(ivec4) Load 19(ballot) 616: 23(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 614 615 617: 67(ptr) AccessChain 37(data) 612 45 Store 617 616 618: 6(int) Load 8(invocation) 619: 62(ptr) AccessChain 37(data) 39 45 40 620: 22(int8_t) Load 619 621: 17(ivec4) Load 19(ballot) 622: 22(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 620 621 623: 62(ptr) AccessChain 37(data) 618 45 40 Store 623 622 624: 6(int) Load 8(invocation) 625: 67(ptr) AccessChain 37(data) 45 45 626: 23(i8vec4) Load 625 627: 66(i8vec2) VectorShuffle 626 626 0 1 628: 17(ivec4) Load 19(ballot) 629: 66(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 627 628 630: 62(ptr) AccessChain 37(data) 624 45 40 631: 22(int8_t) CompositeExtract 629 0 Store 630 631 632: 62(ptr) AccessChain 37(data) 624 45 188 633: 22(int8_t) CompositeExtract 629 1 Store 632 633 634: 6(int) Load 8(invocation) 635: 67(ptr) AccessChain 37(data) 52 45 636: 23(i8vec4) Load 635 637: 72(i8vec3) VectorShuffle 636 636 0 1 2 638: 17(ivec4) Load 19(ballot) 639: 72(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 637 638 640: 62(ptr) AccessChain 37(data) 634 45 40 641: 22(int8_t) CompositeExtract 639 0 Store 640 641 642: 62(ptr) AccessChain 37(data) 634 45 188 643: 22(int8_t) CompositeExtract 639 1 Store 642 643 644: 62(ptr) AccessChain 37(data) 634 45 201 645: 22(int8_t) CompositeExtract 639 2 Store 644 645 646: 6(int) Load 8(invocation) 647: 67(ptr) AccessChain 37(data) 58 45 648: 23(i8vec4) Load 647 649: 17(ivec4) Load 19(ballot) 650: 23(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 648 649 651: 67(ptr) AccessChain 37(data) 646 45 Store 651 650 652: 6(int) Load 8(invocation) 653: 80(ptr) AccessChain 37(data) 39 52 40 654: 24(int16_t) Load 653 655: 17(ivec4) Load 19(ballot) 656: 24(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 654 655 657: 80(ptr) AccessChain 37(data) 652 52 40 Store 657 656 658: 6(int) Load 8(invocation) 659: 85(ptr) AccessChain 37(data) 45 52 660: 25(i16vec4) Load 659 661: 84(i16vec2) VectorShuffle 660 660 0 1 662: 17(ivec4) Load 19(ballot) 663: 84(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 661 662 664: 80(ptr) AccessChain 37(data) 658 52 40 665: 24(int16_t) CompositeExtract 663 0 Store 664 665 666: 80(ptr) AccessChain 37(data) 658 52 188 667: 24(int16_t) CompositeExtract 663 1 Store 666 667 668: 6(int) Load 8(invocation) 669: 85(ptr) AccessChain 37(data) 52 52 670: 25(i16vec4) Load 669 671: 90(i16vec3) VectorShuffle 670 670 0 1 2 672: 17(ivec4) Load 19(ballot) 673: 90(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 671 672 674: 80(ptr) AccessChain 37(data) 668 52 40 675: 24(int16_t) CompositeExtract 673 0 Store 674 675 676: 80(ptr) AccessChain 37(data) 668 52 188 677: 24(int16_t) CompositeExtract 673 1 Store 676 677 678: 80(ptr) AccessChain 37(data) 668 52 201 679: 24(int16_t) CompositeExtract 673 2 Store 678 679 680: 6(int) Load 8(invocation) 681: 85(ptr) AccessChain 37(data) 58 52 682: 25(i16vec4) Load 681 683: 17(ivec4) Load 19(ballot) 684: 25(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 682 683 685: 85(ptr) AccessChain 37(data) 680 52 Store 685 684 686: 6(int) Load 8(invocation) 687: 80(ptr) AccessChain 37(data) 39 52 40 688: 24(int16_t) Load 687 689: 17(ivec4) Load 19(ballot) 690: 24(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 688 689 691: 80(ptr) AccessChain 37(data) 686 52 40 Store 691 690 692: 6(int) Load 8(invocation) 693: 85(ptr) AccessChain 37(data) 45 52 694: 25(i16vec4) Load 693 695: 84(i16vec2) VectorShuffle 694 694 0 1 696: 17(ivec4) Load 19(ballot) 697: 84(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 695 696 698: 80(ptr) AccessChain 37(data) 692 52 40 699: 24(int16_t) CompositeExtract 697 0 Store 698 699 700: 80(ptr) AccessChain 37(data) 692 52 188 701: 24(int16_t) CompositeExtract 697 1 Store 700 701 702: 6(int) Load 8(invocation) 703: 85(ptr) AccessChain 37(data) 52 52 704: 25(i16vec4) Load 703 705: 90(i16vec3) VectorShuffle 704 704 0 1 2 706: 17(ivec4) Load 19(ballot) 707: 90(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 705 706 708: 80(ptr) AccessChain 37(data) 702 52 40 709: 24(int16_t) CompositeExtract 707 0 Store 708 709 710: 80(ptr) AccessChain 37(data) 702 52 188 711: 24(int16_t) CompositeExtract 707 1 Store 710 711 712: 80(ptr) AccessChain 37(data) 702 52 201 713: 24(int16_t) CompositeExtract 707 2 Store 712 713 714: 6(int) Load 8(invocation) 715: 85(ptr) AccessChain 37(data) 58 52 716: 25(i16vec4) Load 715 717: 17(ivec4) Load 19(ballot) 718: 25(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 716 717 719: 85(ptr) AccessChain 37(data) 714 52 Store 719 718 720: 6(int) Load 8(invocation) 721: 80(ptr) AccessChain 37(data) 39 52 40 722: 24(int16_t) Load 721 723: 17(ivec4) Load 19(ballot) 724: 24(int16_t) GroupNonUniformSMin 177 PartitionedReduceNV 722 723 725: 80(ptr) AccessChain 37(data) 720 52 40 Store 725 724 726: 6(int) Load 8(invocation) 727: 85(ptr) AccessChain 37(data) 45 52 728: 25(i16vec4) Load 727 729: 84(i16vec2) VectorShuffle 728 728 0 1 730: 17(ivec4) Load 19(ballot) 731: 84(i16vec2) GroupNonUniformSMin 177 PartitionedReduceNV 729 730 732: 80(ptr) AccessChain 37(data) 726 52 40 733: 24(int16_t) CompositeExtract 731 0 Store 732 733 734: 80(ptr) AccessChain 37(data) 726 52 188 735: 24(int16_t) CompositeExtract 731 1 Store 734 735 736: 6(int) Load 8(invocation) 737: 85(ptr) AccessChain 37(data) 52 52 738: 25(i16vec4) Load 737 739: 90(i16vec3) VectorShuffle 738 738 0 1 2 740: 17(ivec4) Load 19(ballot) 741: 90(i16vec3) GroupNonUniformSMin 177 PartitionedReduceNV 739 740 742: 80(ptr) AccessChain 37(data) 736 52 40 743: 24(int16_t) CompositeExtract 741 0 Store 742 743 744: 80(ptr) AccessChain 37(data) 736 52 188 745: 24(int16_t) CompositeExtract 741 1 Store 744 745 746: 80(ptr) AccessChain 37(data) 736 52 201 747: 24(int16_t) CompositeExtract 741 2 Store 746 747 748: 6(int) Load 8(invocation) 749: 85(ptr) AccessChain 37(data) 58 52 750: 25(i16vec4) Load 749 751: 17(ivec4) Load 19(ballot) 752: 25(i16vec4) GroupNonUniformSMin 177 PartitionedReduceNV 750 751 753: 85(ptr) AccessChain 37(data) 748 52 Store 753 752 754: 6(int) Load 8(invocation) 755: 80(ptr) AccessChain 37(data) 39 52 40 756: 24(int16_t) Load 755 757: 17(ivec4) Load 19(ballot) 758: 24(int16_t) GroupNonUniformSMax 177 PartitionedReduceNV 756 757 759: 80(ptr) AccessChain 37(data) 754 52 40 Store 759 758 760: 6(int) Load 8(invocation) 761: 85(ptr) AccessChain 37(data) 45 52 762: 25(i16vec4) Load 761 763: 84(i16vec2) VectorShuffle 762 762 0 1 764: 17(ivec4) Load 19(ballot) 765: 84(i16vec2) GroupNonUniformSMax 177 PartitionedReduceNV 763 764 766: 80(ptr) AccessChain 37(data) 760 52 40 767: 24(int16_t) CompositeExtract 765 0 Store 766 767 768: 80(ptr) AccessChain 37(data) 760 52 188 769: 24(int16_t) CompositeExtract 765 1 Store 768 769 770: 6(int) Load 8(invocation) 771: 85(ptr) AccessChain 37(data) 52 52 772: 25(i16vec4) Load 771 773: 90(i16vec3) VectorShuffle 772 772 0 1 2 774: 17(ivec4) Load 19(ballot) 775: 90(i16vec3) GroupNonUniformSMax 177 PartitionedReduceNV 773 774 776: 80(ptr) AccessChain 37(data) 770 52 40 777: 24(int16_t) CompositeExtract 775 0 Store 776 777 778: 80(ptr) AccessChain 37(data) 770 52 188 779: 24(int16_t) CompositeExtract 775 1 Store 778 779 780: 80(ptr) AccessChain 37(data) 770 52 201 781: 24(int16_t) CompositeExtract 775 2 Store 780 781 782: 6(int) Load 8(invocation) 783: 85(ptr) AccessChain 37(data) 58 52 784: 25(i16vec4) Load 783 785: 17(ivec4) Load 19(ballot) 786: 25(i16vec4) GroupNonUniformSMax 177 PartitionedReduceNV 784 785 787: 85(ptr) AccessChain 37(data) 782 52 Store 787 786 788: 6(int) Load 8(invocation) 789: 80(ptr) AccessChain 37(data) 39 52 40 790: 24(int16_t) Load 789 791: 17(ivec4) Load 19(ballot) 792: 24(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 790 791 793: 80(ptr) AccessChain 37(data) 788 52 40 Store 793 792 794: 6(int) Load 8(invocation) 795: 85(ptr) AccessChain 37(data) 45 52 796: 25(i16vec4) Load 795 797: 84(i16vec2) VectorShuffle 796 796 0 1 798: 17(ivec4) Load 19(ballot) 799: 84(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 797 798 800: 80(ptr) AccessChain 37(data) 794 52 40 801: 24(int16_t) CompositeExtract 799 0 Store 800 801 802: 80(ptr) AccessChain 37(data) 794 52 188 803: 24(int16_t) CompositeExtract 799 1 Store 802 803 804: 6(int) Load 8(invocation) 805: 85(ptr) AccessChain 37(data) 52 52 806: 25(i16vec4) Load 805 807: 90(i16vec3) VectorShuffle 806 806 0 1 2 808: 17(ivec4) Load 19(ballot) 809: 90(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 807 808 810: 80(ptr) AccessChain 37(data) 804 52 40 811: 24(int16_t) CompositeExtract 809 0 Store 810 811 812: 80(ptr) AccessChain 37(data) 804 52 188 813: 24(int16_t) CompositeExtract 809 1 Store 812 813 814: 80(ptr) AccessChain 37(data) 804 52 201 815: 24(int16_t) CompositeExtract 809 2 Store 814 815 816: 6(int) Load 8(invocation) 817: 85(ptr) AccessChain 37(data) 58 52 818: 25(i16vec4) Load 817 819: 17(ivec4) Load 19(ballot) 820: 25(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 818 819 821: 85(ptr) AccessChain 37(data) 816 52 Store 821 820 822: 6(int) Load 8(invocation) 823: 80(ptr) AccessChain 37(data) 39 52 40 824: 24(int16_t) Load 823 825: 17(ivec4) Load 19(ballot) 826: 24(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 824 825 827: 80(ptr) AccessChain 37(data) 822 52 40 Store 827 826 828: 6(int) Load 8(invocation) 829: 85(ptr) AccessChain 37(data) 45 52 830: 25(i16vec4) Load 829 831: 84(i16vec2) VectorShuffle 830 830 0 1 832: 17(ivec4) Load 19(ballot) 833: 84(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 831 832 834: 80(ptr) AccessChain 37(data) 828 52 40 835: 24(int16_t) CompositeExtract 833 0 Store 834 835 836: 80(ptr) AccessChain 37(data) 828 52 188 837: 24(int16_t) CompositeExtract 833 1 Store 836 837 838: 6(int) Load 8(invocation) 839: 85(ptr) AccessChain 37(data) 52 52 840: 25(i16vec4) Load 839 841: 90(i16vec3) VectorShuffle 840 840 0 1 2 842: 17(ivec4) Load 19(ballot) 843: 90(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 841 842 844: 80(ptr) AccessChain 37(data) 838 52 40 845: 24(int16_t) CompositeExtract 843 0 Store 844 845 846: 80(ptr) AccessChain 37(data) 838 52 188 847: 24(int16_t) CompositeExtract 843 1 Store 846 847 848: 80(ptr) AccessChain 37(data) 838 52 201 849: 24(int16_t) CompositeExtract 843 2 Store 848 849 850: 6(int) Load 8(invocation) 851: 85(ptr) AccessChain 37(data) 58 52 852: 25(i16vec4) Load 851 853: 17(ivec4) Load 19(ballot) 854: 25(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 852 853 855: 85(ptr) AccessChain 37(data) 850 52 Store 855 854 856: 6(int) Load 8(invocation) 857: 80(ptr) AccessChain 37(data) 39 52 40 858: 24(int16_t) Load 857 859: 17(ivec4) Load 19(ballot) 860: 24(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 858 859 861: 80(ptr) AccessChain 37(data) 856 52 40 Store 861 860 862: 6(int) Load 8(invocation) 863: 85(ptr) AccessChain 37(data) 45 52 864: 25(i16vec4) Load 863 865: 84(i16vec2) VectorShuffle 864 864 0 1 866: 17(ivec4) Load 19(ballot) 867: 84(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 865 866 868: 80(ptr) AccessChain 37(data) 862 52 40 869: 24(int16_t) CompositeExtract 867 0 Store 868 869 870: 80(ptr) AccessChain 37(data) 862 52 188 871: 24(int16_t) CompositeExtract 867 1 Store 870 871 872: 6(int) Load 8(invocation) 873: 85(ptr) AccessChain 37(data) 52 52 874: 25(i16vec4) Load 873 875: 90(i16vec3) VectorShuffle 874 874 0 1 2 876: 17(ivec4) Load 19(ballot) 877: 90(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 875 876 878: 80(ptr) AccessChain 37(data) 872 52 40 879: 24(int16_t) CompositeExtract 877 0 Store 878 879 880: 80(ptr) AccessChain 37(data) 872 52 188 881: 24(int16_t) CompositeExtract 877 1 Store 880 881 882: 80(ptr) AccessChain 37(data) 872 52 201 883: 24(int16_t) CompositeExtract 877 2 Store 882 883 884: 6(int) Load 8(invocation) 885: 85(ptr) AccessChain 37(data) 58 52 886: 25(i16vec4) Load 885 887: 17(ivec4) Load 19(ballot) 888: 25(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 886 887 889: 85(ptr) AccessChain 37(data) 884 52 Store 889 888 890: 6(int) Load 8(invocation) 891: 98(ptr) AccessChain 37(data) 39 58 40 892: 26(int16_t) Load 891 893: 17(ivec4) Load 19(ballot) 894: 26(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 892 893 895: 98(ptr) AccessChain 37(data) 890 58 40 Store 895 894 896: 6(int) Load 8(invocation) 897: 103(ptr) AccessChain 37(data) 45 58 898: 27(i16vec4) Load 897 899:102(i16vec2) VectorShuffle 898 898 0 1 900: 17(ivec4) Load 19(ballot) 901:102(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 899 900 902: 98(ptr) AccessChain 37(data) 896 58 40 903: 26(int16_t) CompositeExtract 901 0 Store 902 903 904: 98(ptr) AccessChain 37(data) 896 58 188 905: 26(int16_t) CompositeExtract 901 1 Store 904 905 906: 6(int) Load 8(invocation) 907: 103(ptr) AccessChain 37(data) 52 58 908: 27(i16vec4) Load 907 909:108(i16vec3) VectorShuffle 908 908 0 1 2 910: 17(ivec4) Load 19(ballot) 911:108(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 909 910 912: 98(ptr) AccessChain 37(data) 906 58 40 913: 26(int16_t) CompositeExtract 911 0 Store 912 913 914: 98(ptr) AccessChain 37(data) 906 58 188 915: 26(int16_t) CompositeExtract 911 1 Store 914 915 916: 98(ptr) AccessChain 37(data) 906 58 201 917: 26(int16_t) CompositeExtract 911 2 Store 916 917 918: 6(int) Load 8(invocation) 919: 103(ptr) AccessChain 37(data) 58 58 920: 27(i16vec4) Load 919 921: 17(ivec4) Load 19(ballot) 922: 27(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 920 921 923: 103(ptr) AccessChain 37(data) 918 58 Store 923 922 924: 6(int) Load 8(invocation) 925: 98(ptr) AccessChain 37(data) 39 58 40 926: 26(int16_t) Load 925 927: 17(ivec4) Load 19(ballot) 928: 26(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 926 927 929: 98(ptr) AccessChain 37(data) 924 58 40 Store 929 928 930: 6(int) Load 8(invocation) 931: 103(ptr) AccessChain 37(data) 45 58 932: 27(i16vec4) Load 931 933:102(i16vec2) VectorShuffle 932 932 0 1 934: 17(ivec4) Load 19(ballot) 935:102(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 933 934 936: 98(ptr) AccessChain 37(data) 930 58 40 937: 26(int16_t) CompositeExtract 935 0 Store 936 937 938: 98(ptr) AccessChain 37(data) 930 58 188 939: 26(int16_t) CompositeExtract 935 1 Store 938 939 940: 6(int) Load 8(invocation) 941: 103(ptr) AccessChain 37(data) 52 58 942: 27(i16vec4) Load 941 943:108(i16vec3) VectorShuffle 942 942 0 1 2 944: 17(ivec4) Load 19(ballot) 945:108(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 943 944 946: 98(ptr) AccessChain 37(data) 940 58 40 947: 26(int16_t) CompositeExtract 945 0 Store 946 947 948: 98(ptr) AccessChain 37(data) 940 58 188 949: 26(int16_t) CompositeExtract 945 1 Store 948 949 950: 98(ptr) AccessChain 37(data) 940 58 201 951: 26(int16_t) CompositeExtract 945 2 Store 950 951 952: 6(int) Load 8(invocation) 953: 103(ptr) AccessChain 37(data) 58 58 954: 27(i16vec4) Load 953 955: 17(ivec4) Load 19(ballot) 956: 27(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 954 955 957: 103(ptr) AccessChain 37(data) 952 58 Store 957 956 958: 6(int) Load 8(invocation) 959: 98(ptr) AccessChain 37(data) 39 58 40 960: 26(int16_t) Load 959 961: 17(ivec4) Load 19(ballot) 962: 26(int16_t) GroupNonUniformUMin 177 PartitionedReduceNV 960 961 963: 98(ptr) AccessChain 37(data) 958 58 40 Store 963 962 964: 6(int) Load 8(invocation) 965: 103(ptr) AccessChain 37(data) 45 58 966: 27(i16vec4) Load 965 967:102(i16vec2) VectorShuffle 966 966 0 1 968: 17(ivec4) Load 19(ballot) 969:102(i16vec2) GroupNonUniformUMin 177 PartitionedReduceNV 967 968 970: 98(ptr) AccessChain 37(data) 964 58 40 971: 26(int16_t) CompositeExtract 969 0 Store 970 971 972: 98(ptr) AccessChain 37(data) 964 58 188 973: 26(int16_t) CompositeExtract 969 1 Store 972 973 974: 6(int) Load 8(invocation) 975: 103(ptr) AccessChain 37(data) 52 58 976: 27(i16vec4) Load 975 977:108(i16vec3) VectorShuffle 976 976 0 1 2 978: 17(ivec4) Load 19(ballot) 979:108(i16vec3) GroupNonUniformUMin 177 PartitionedReduceNV 977 978 980: 98(ptr) AccessChain 37(data) 974 58 40 981: 26(int16_t) CompositeExtract 979 0 Store 980 981 982: 98(ptr) AccessChain 37(data) 974 58 188 983: 26(int16_t) CompositeExtract 979 1 Store 982 983 984: 98(ptr) AccessChain 37(data) 974 58 201 985: 26(int16_t) CompositeExtract 979 2 Store 984 985 986: 6(int) Load 8(invocation) 987: 103(ptr) AccessChain 37(data) 58 58 988: 27(i16vec4) Load 987 989: 17(ivec4) Load 19(ballot) 990: 27(i16vec4) GroupNonUniformUMin 177 PartitionedReduceNV 988 989 991: 103(ptr) AccessChain 37(data) 986 58 Store 991 990 992: 6(int) Load 8(invocation) 993: 98(ptr) AccessChain 37(data) 39 58 40 994: 26(int16_t) Load 993 995: 17(ivec4) Load 19(ballot) 996: 26(int16_t) GroupNonUniformUMax 177 PartitionedReduceNV 994 995 997: 98(ptr) AccessChain 37(data) 992 58 40 Store 997 996 998: 6(int) Load 8(invocation) 999: 103(ptr) AccessChain 37(data) 45 58 1000: 27(i16vec4) Load 999 1001:102(i16vec2) VectorShuffle 1000 1000 0 1 1002: 17(ivec4) Load 19(ballot) 1003:102(i16vec2) GroupNonUniformUMax 177 PartitionedReduceNV 1001 1002 1004: 98(ptr) AccessChain 37(data) 998 58 40 1005: 26(int16_t) CompositeExtract 1003 0 Store 1004 1005 1006: 98(ptr) AccessChain 37(data) 998 58 188 1007: 26(int16_t) CompositeExtract 1003 1 Store 1006 1007 1008: 6(int) Load 8(invocation) 1009: 103(ptr) AccessChain 37(data) 52 58 1010: 27(i16vec4) Load 1009 1011:108(i16vec3) VectorShuffle 1010 1010 0 1 2 1012: 17(ivec4) Load 19(ballot) 1013:108(i16vec3) GroupNonUniformUMax 177 PartitionedReduceNV 1011 1012 1014: 98(ptr) AccessChain 37(data) 1008 58 40 1015: 26(int16_t) CompositeExtract 1013 0 Store 1014 1015 1016: 98(ptr) AccessChain 37(data) 1008 58 188 1017: 26(int16_t) CompositeExtract 1013 1 Store 1016 1017 1018: 98(ptr) AccessChain 37(data) 1008 58 201 1019: 26(int16_t) CompositeExtract 1013 2 Store 1018 1019 1020: 6(int) Load 8(invocation) 1021: 103(ptr) AccessChain 37(data) 58 58 1022: 27(i16vec4) Load 1021 1023: 17(ivec4) Load 19(ballot) 1024: 27(i16vec4) GroupNonUniformUMax 177 PartitionedReduceNV 1022 1023 1025: 103(ptr) AccessChain 37(data) 1020 58 Store 1025 1024 1026: 6(int) Load 8(invocation) 1027: 98(ptr) AccessChain 37(data) 39 58 40 1028: 26(int16_t) Load 1027 1029: 17(ivec4) Load 19(ballot) 1030: 26(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1028 1029 1031: 98(ptr) AccessChain 37(data) 1026 58 40 Store 1031 1030 1032: 6(int) Load 8(invocation) 1033: 103(ptr) AccessChain 37(data) 45 58 1034: 27(i16vec4) Load 1033 1035:102(i16vec2) VectorShuffle 1034 1034 0 1 1036: 17(ivec4) Load 19(ballot) 1037:102(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1035 1036 1038: 98(ptr) AccessChain 37(data) 1032 58 40 1039: 26(int16_t) CompositeExtract 1037 0 Store 1038 1039 1040: 98(ptr) AccessChain 37(data) 1032 58 188 1041: 26(int16_t) CompositeExtract 1037 1 Store 1040 1041 1042: 6(int) Load 8(invocation) 1043: 103(ptr) AccessChain 37(data) 52 58 1044: 27(i16vec4) Load 1043 1045:108(i16vec3) VectorShuffle 1044 1044 0 1 2 1046: 17(ivec4) Load 19(ballot) 1047:108(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1045 1046 1048: 98(ptr) AccessChain 37(data) 1042 58 40 1049: 26(int16_t) CompositeExtract 1047 0 Store 1048 1049 1050: 98(ptr) AccessChain 37(data) 1042 58 188 1051: 26(int16_t) CompositeExtract 1047 1 Store 1050 1051 1052: 98(ptr) AccessChain 37(data) 1042 58 201 1053: 26(int16_t) CompositeExtract 1047 2 Store 1052 1053 1054: 6(int) Load 8(invocation) 1055: 103(ptr) AccessChain 37(data) 58 58 1056: 27(i16vec4) Load 1055 1057: 17(ivec4) Load 19(ballot) 1058: 27(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1056 1057 1059: 103(ptr) AccessChain 37(data) 1054 58 Store 1059 1058 1060: 6(int) Load 8(invocation) 1061: 98(ptr) AccessChain 37(data) 39 58 40 1062: 26(int16_t) Load 1061 1063: 17(ivec4) Load 19(ballot) 1064: 26(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1062 1063 1065: 98(ptr) AccessChain 37(data) 1060 58 40 Store 1065 1064 1066: 6(int) Load 8(invocation) 1067: 103(ptr) AccessChain 37(data) 45 58 1068: 27(i16vec4) Load 1067 1069:102(i16vec2) VectorShuffle 1068 1068 0 1 1070: 17(ivec4) Load 19(ballot) 1071:102(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1069 1070 1072: 98(ptr) AccessChain 37(data) 1066 58 40 1073: 26(int16_t) CompositeExtract 1071 0 Store 1072 1073 1074: 98(ptr) AccessChain 37(data) 1066 58 188 1075: 26(int16_t) CompositeExtract 1071 1 Store 1074 1075 1076: 6(int) Load 8(invocation) 1077: 103(ptr) AccessChain 37(data) 52 58 1078: 27(i16vec4) Load 1077 1079:108(i16vec3) VectorShuffle 1078 1078 0 1 2 1080: 17(ivec4) Load 19(ballot) 1081:108(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1079 1080 1082: 98(ptr) AccessChain 37(data) 1076 58 40 1083: 26(int16_t) CompositeExtract 1081 0 Store 1082 1083 1084: 98(ptr) AccessChain 37(data) 1076 58 188 1085: 26(int16_t) CompositeExtract 1081 1 Store 1084 1085 1086: 98(ptr) AccessChain 37(data) 1076 58 201 1087: 26(int16_t) CompositeExtract 1081 2 Store 1086 1087 1088: 6(int) Load 8(invocation) 1089: 103(ptr) AccessChain 37(data) 58 58 1090: 27(i16vec4) Load 1089 1091: 17(ivec4) Load 19(ballot) 1092: 27(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1090 1091 1093: 103(ptr) AccessChain 37(data) 1088 58 Store 1093 1092 1094: 6(int) Load 8(invocation) 1095: 98(ptr) AccessChain 37(data) 39 58 40 1096: 26(int16_t) Load 1095 1097: 17(ivec4) Load 19(ballot) 1098: 26(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1096 1097 1099: 98(ptr) AccessChain 37(data) 1094 58 40 Store 1099 1098 1100: 6(int) Load 8(invocation) 1101: 103(ptr) AccessChain 37(data) 45 58 1102: 27(i16vec4) Load 1101 1103:102(i16vec2) VectorShuffle 1102 1102 0 1 1104: 17(ivec4) Load 19(ballot) 1105:102(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1103 1104 1106: 98(ptr) AccessChain 37(data) 1100 58 40 1107: 26(int16_t) CompositeExtract 1105 0 Store 1106 1107 1108: 98(ptr) AccessChain 37(data) 1100 58 188 1109: 26(int16_t) CompositeExtract 1105 1 Store 1108 1109 1110: 6(int) Load 8(invocation) 1111: 103(ptr) AccessChain 37(data) 52 58 1112: 27(i16vec4) Load 1111 1113:108(i16vec3) VectorShuffle 1112 1112 0 1 2 1114: 17(ivec4) Load 19(ballot) 1115:108(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1113 1114 1116: 98(ptr) AccessChain 37(data) 1110 58 40 1117: 26(int16_t) CompositeExtract 1115 0 Store 1116 1117 1118: 98(ptr) AccessChain 37(data) 1110 58 188 1119: 26(int16_t) CompositeExtract 1115 1 Store 1118 1119 1120: 98(ptr) AccessChain 37(data) 1110 58 201 1121: 26(int16_t) CompositeExtract 1115 2 Store 1120 1121 1122: 6(int) Load 8(invocation) 1123: 103(ptr) AccessChain 37(data) 58 58 1124: 27(i16vec4) Load 1123 1125: 17(ivec4) Load 19(ballot) 1126: 27(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1124 1125 1127: 103(ptr) AccessChain 37(data) 1122 58 Store 1127 1126 1128: 6(int) Load 8(invocation) 1129: 117(ptr) AccessChain 37(data) 39 116 40 1130: 28(int64_t) Load 1129 1131: 17(ivec4) Load 19(ballot) 1132: 28(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1130 1131 1133: 117(ptr) AccessChain 37(data) 1128 116 40 Store 1133 1132 1134: 6(int) Load 8(invocation) 1135: 122(ptr) AccessChain 37(data) 45 116 1136: 29(i64vec4) Load 1135 1137:121(i64vec2) VectorShuffle 1136 1136 0 1 1138: 17(ivec4) Load 19(ballot) 1139:121(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1137 1138 1140: 117(ptr) AccessChain 37(data) 1134 116 40 1141: 28(int64_t) CompositeExtract 1139 0 Store 1140 1141 1142: 117(ptr) AccessChain 37(data) 1134 116 188 1143: 28(int64_t) CompositeExtract 1139 1 Store 1142 1143 1144: 6(int) Load 8(invocation) 1145: 122(ptr) AccessChain 37(data) 52 116 1146: 29(i64vec4) Load 1145 1147:127(i64vec3) VectorShuffle 1146 1146 0 1 2 1148: 17(ivec4) Load 19(ballot) 1149:127(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1147 1148 1150: 117(ptr) AccessChain 37(data) 1144 116 40 1151: 28(int64_t) CompositeExtract 1149 0 Store 1150 1151 1152: 117(ptr) AccessChain 37(data) 1144 116 188 1153: 28(int64_t) CompositeExtract 1149 1 Store 1152 1153 1154: 117(ptr) AccessChain 37(data) 1144 116 201 1155: 28(int64_t) CompositeExtract 1149 2 Store 1154 1155 1156: 6(int) Load 8(invocation) 1157: 122(ptr) AccessChain 37(data) 58 116 1158: 29(i64vec4) Load 1157 1159: 17(ivec4) Load 19(ballot) 1160: 29(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1158 1159 1161: 122(ptr) AccessChain 37(data) 1156 116 Store 1161 1160 1162: 6(int) Load 8(invocation) 1163: 117(ptr) AccessChain 37(data) 39 116 40 1164: 28(int64_t) Load 1163 1165: 17(ivec4) Load 19(ballot) 1166: 28(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1164 1165 1167: 117(ptr) AccessChain 37(data) 1162 116 40 Store 1167 1166 1168: 6(int) Load 8(invocation) 1169: 122(ptr) AccessChain 37(data) 45 116 1170: 29(i64vec4) Load 1169 1171:121(i64vec2) VectorShuffle 1170 1170 0 1 1172: 17(ivec4) Load 19(ballot) 1173:121(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1171 1172 1174: 117(ptr) AccessChain 37(data) 1168 116 40 1175: 28(int64_t) CompositeExtract 1173 0 Store 1174 1175 1176: 117(ptr) AccessChain 37(data) 1168 116 188 1177: 28(int64_t) CompositeExtract 1173 1 Store 1176 1177 1178: 6(int) Load 8(invocation) 1179: 122(ptr) AccessChain 37(data) 52 116 1180: 29(i64vec4) Load 1179 1181:127(i64vec3) VectorShuffle 1180 1180 0 1 2 1182: 17(ivec4) Load 19(ballot) 1183:127(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1181 1182 1184: 117(ptr) AccessChain 37(data) 1178 116 40 1185: 28(int64_t) CompositeExtract 1183 0 Store 1184 1185 1186: 117(ptr) AccessChain 37(data) 1178 116 188 1187: 28(int64_t) CompositeExtract 1183 1 Store 1186 1187 1188: 117(ptr) AccessChain 37(data) 1178 116 201 1189: 28(int64_t) CompositeExtract 1183 2 Store 1188 1189 1190: 6(int) Load 8(invocation) 1191: 122(ptr) AccessChain 37(data) 58 116 1192: 29(i64vec4) Load 1191 1193: 17(ivec4) Load 19(ballot) 1194: 29(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1192 1193 1195: 122(ptr) AccessChain 37(data) 1190 116 Store 1195 1194 1196: 6(int) Load 8(invocation) 1197: 117(ptr) AccessChain 37(data) 39 116 40 1198: 28(int64_t) Load 1197 1199: 17(ivec4) Load 19(ballot) 1200: 28(int64_t) GroupNonUniformSMin 177 PartitionedReduceNV 1198 1199 1201: 117(ptr) AccessChain 37(data) 1196 116 40 Store 1201 1200 1202: 6(int) Load 8(invocation) 1203: 122(ptr) AccessChain 37(data) 45 116 1204: 29(i64vec4) Load 1203 1205:121(i64vec2) VectorShuffle 1204 1204 0 1 1206: 17(ivec4) Load 19(ballot) 1207:121(i64vec2) GroupNonUniformSMin 177 PartitionedReduceNV 1205 1206 1208: 117(ptr) AccessChain 37(data) 1202 116 40 1209: 28(int64_t) CompositeExtract 1207 0 Store 1208 1209 1210: 117(ptr) AccessChain 37(data) 1202 116 188 1211: 28(int64_t) CompositeExtract 1207 1 Store 1210 1211 1212: 6(int) Load 8(invocation) 1213: 122(ptr) AccessChain 37(data) 52 116 1214: 29(i64vec4) Load 1213 1215:127(i64vec3) VectorShuffle 1214 1214 0 1 2 1216: 17(ivec4) Load 19(ballot) 1217:127(i64vec3) GroupNonUniformSMin 177 PartitionedReduceNV 1215 1216 1218: 117(ptr) AccessChain 37(data) 1212 116 40 1219: 28(int64_t) CompositeExtract 1217 0 Store 1218 1219 1220: 117(ptr) AccessChain 37(data) 1212 116 188 1221: 28(int64_t) CompositeExtract 1217 1 Store 1220 1221 1222: 117(ptr) AccessChain 37(data) 1212 116 201 1223: 28(int64_t) CompositeExtract 1217 2 Store 1222 1223 1224: 6(int) Load 8(invocation) 1225: 122(ptr) AccessChain 37(data) 58 116 1226: 29(i64vec4) Load 1225 1227: 17(ivec4) Load 19(ballot) 1228: 29(i64vec4) GroupNonUniformSMin 177 PartitionedReduceNV 1226 1227 1229: 122(ptr) AccessChain 37(data) 1224 116 Store 1229 1228 1230: 6(int) Load 8(invocation) 1231: 117(ptr) AccessChain 37(data) 39 116 40 1232: 28(int64_t) Load 1231 1233: 17(ivec4) Load 19(ballot) 1234: 28(int64_t) GroupNonUniformSMax 177 PartitionedReduceNV 1232 1233 1235: 117(ptr) AccessChain 37(data) 1230 116 40 Store 1235 1234 1236: 6(int) Load 8(invocation) 1237: 122(ptr) AccessChain 37(data) 45 116 1238: 29(i64vec4) Load 1237 1239:121(i64vec2) VectorShuffle 1238 1238 0 1 1240: 17(ivec4) Load 19(ballot) 1241:121(i64vec2) GroupNonUniformSMax 177 PartitionedReduceNV 1239 1240 1242: 117(ptr) AccessChain 37(data) 1236 116 40 1243: 28(int64_t) CompositeExtract 1241 0 Store 1242 1243 1244: 117(ptr) AccessChain 37(data) 1236 116 188 1245: 28(int64_t) CompositeExtract 1241 1 Store 1244 1245 1246: 6(int) Load 8(invocation) 1247: 122(ptr) AccessChain 37(data) 52 116 1248: 29(i64vec4) Load 1247 1249:127(i64vec3) VectorShuffle 1248 1248 0 1 2 1250: 17(ivec4) Load 19(ballot) 1251:127(i64vec3) GroupNonUniformSMax 177 PartitionedReduceNV 1249 1250 1252: 117(ptr) AccessChain 37(data) 1246 116 40 1253: 28(int64_t) CompositeExtract 1251 0 Store 1252 1253 1254: 117(ptr) AccessChain 37(data) 1246 116 188 1255: 28(int64_t) CompositeExtract 1251 1 Store 1254 1255 1256: 117(ptr) AccessChain 37(data) 1246 116 201 1257: 28(int64_t) CompositeExtract 1251 2 Store 1256 1257 1258: 6(int) Load 8(invocation) 1259: 122(ptr) AccessChain 37(data) 58 116 1260: 29(i64vec4) Load 1259 1261: 17(ivec4) Load 19(ballot) 1262: 29(i64vec4) GroupNonUniformSMax 177 PartitionedReduceNV 1260 1261 1263: 122(ptr) AccessChain 37(data) 1258 116 Store 1263 1262 1264: 6(int) Load 8(invocation) 1265: 117(ptr) AccessChain 37(data) 39 116 40 1266: 28(int64_t) Load 1265 1267: 17(ivec4) Load 19(ballot) 1268: 28(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1266 1267 1269: 117(ptr) AccessChain 37(data) 1264 116 40 Store 1269 1268 1270: 6(int) Load 8(invocation) 1271: 122(ptr) AccessChain 37(data) 45 116 1272: 29(i64vec4) Load 1271 1273:121(i64vec2) VectorShuffle 1272 1272 0 1 1274: 17(ivec4) Load 19(ballot) 1275:121(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1273 1274 1276: 117(ptr) AccessChain 37(data) 1270 116 40 1277: 28(int64_t) CompositeExtract 1275 0 Store 1276 1277 1278: 117(ptr) AccessChain 37(data) 1270 116 188 1279: 28(int64_t) CompositeExtract 1275 1 Store 1278 1279 1280: 6(int) Load 8(invocation) 1281: 122(ptr) AccessChain 37(data) 52 116 1282: 29(i64vec4) Load 1281 1283:127(i64vec3) VectorShuffle 1282 1282 0 1 2 1284: 17(ivec4) Load 19(ballot) 1285:127(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1283 1284 1286: 117(ptr) AccessChain 37(data) 1280 116 40 1287: 28(int64_t) CompositeExtract 1285 0 Store 1286 1287 1288: 117(ptr) AccessChain 37(data) 1280 116 188 1289: 28(int64_t) CompositeExtract 1285 1 Store 1288 1289 1290: 117(ptr) AccessChain 37(data) 1280 116 201 1291: 28(int64_t) CompositeExtract 1285 2 Store 1290 1291 1292: 6(int) Load 8(invocation) 1293: 122(ptr) AccessChain 37(data) 58 116 1294: 29(i64vec4) Load 1293 1295: 17(ivec4) Load 19(ballot) 1296: 29(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1294 1295 1297: 122(ptr) AccessChain 37(data) 1292 116 Store 1297 1296 1298: 6(int) Load 8(invocation) 1299: 117(ptr) AccessChain 37(data) 39 116 40 1300: 28(int64_t) Load 1299 1301: 17(ivec4) Load 19(ballot) 1302: 28(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1300 1301 1303: 117(ptr) AccessChain 37(data) 1298 116 40 Store 1303 1302 1304: 6(int) Load 8(invocation) 1305: 122(ptr) AccessChain 37(data) 45 116 1306: 29(i64vec4) Load 1305 1307:121(i64vec2) VectorShuffle 1306 1306 0 1 1308: 17(ivec4) Load 19(ballot) 1309:121(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1307 1308 1310: 117(ptr) AccessChain 37(data) 1304 116 40 1311: 28(int64_t) CompositeExtract 1309 0 Store 1310 1311 1312: 117(ptr) AccessChain 37(data) 1304 116 188 1313: 28(int64_t) CompositeExtract 1309 1 Store 1312 1313 1314: 6(int) Load 8(invocation) 1315: 122(ptr) AccessChain 37(data) 52 116 1316: 29(i64vec4) Load 1315 1317:127(i64vec3) VectorShuffle 1316 1316 0 1 2 1318: 17(ivec4) Load 19(ballot) 1319:127(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1317 1318 1320: 117(ptr) AccessChain 37(data) 1314 116 40 1321: 28(int64_t) CompositeExtract 1319 0 Store 1320 1321 1322: 117(ptr) AccessChain 37(data) 1314 116 188 1323: 28(int64_t) CompositeExtract 1319 1 Store 1322 1323 1324: 117(ptr) AccessChain 37(data) 1314 116 201 1325: 28(int64_t) CompositeExtract 1319 2 Store 1324 1325 1326: 6(int) Load 8(invocation) 1327: 122(ptr) AccessChain 37(data) 58 116 1328: 29(i64vec4) Load 1327 1329: 17(ivec4) Load 19(ballot) 1330: 29(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1328 1329 1331: 122(ptr) AccessChain 37(data) 1326 116 Store 1331 1330 1332: 6(int) Load 8(invocation) 1333: 117(ptr) AccessChain 37(data) 39 116 40 1334: 28(int64_t) Load 1333 1335: 17(ivec4) Load 19(ballot) 1336: 28(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1334 1335 1337: 117(ptr) AccessChain 37(data) 1332 116 40 Store 1337 1336 1338: 6(int) Load 8(invocation) 1339: 122(ptr) AccessChain 37(data) 45 116 1340: 29(i64vec4) Load 1339 1341:121(i64vec2) VectorShuffle 1340 1340 0 1 1342: 17(ivec4) Load 19(ballot) 1343:121(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1341 1342 1344: 117(ptr) AccessChain 37(data) 1338 116 40 1345: 28(int64_t) CompositeExtract 1343 0 Store 1344 1345 1346: 117(ptr) AccessChain 37(data) 1338 116 188 1347: 28(int64_t) CompositeExtract 1343 1 Store 1346 1347 1348: 6(int) Load 8(invocation) 1349: 122(ptr) AccessChain 37(data) 52 116 1350: 29(i64vec4) Load 1349 1351:127(i64vec3) VectorShuffle 1350 1350 0 1 2 1352: 17(ivec4) Load 19(ballot) 1353:127(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1351 1352 1354: 117(ptr) AccessChain 37(data) 1348 116 40 1355: 28(int64_t) CompositeExtract 1353 0 Store 1354 1355 1356: 117(ptr) AccessChain 37(data) 1348 116 188 1357: 28(int64_t) CompositeExtract 1353 1 Store 1356 1357 1358: 117(ptr) AccessChain 37(data) 1348 116 201 1359: 28(int64_t) CompositeExtract 1353 2 Store 1358 1359 1360: 6(int) Load 8(invocation) 1361: 122(ptr) AccessChain 37(data) 58 116 1362: 29(i64vec4) Load 1361 1363: 17(ivec4) Load 19(ballot) 1364: 29(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1362 1363 1365: 122(ptr) AccessChain 37(data) 1360 116 Store 1365 1364 1366: 6(int) Load 8(invocation) 1367: 136(ptr) AccessChain 37(data) 39 135 40 1368: 30(int64_t) Load 1367 1369: 17(ivec4) Load 19(ballot) 1370: 30(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1368 1369 1371: 136(ptr) AccessChain 37(data) 1366 135 40 Store 1371 1370 1372: 6(int) Load 8(invocation) 1373: 141(ptr) AccessChain 37(data) 45 135 1374: 31(i64vec4) Load 1373 1375:140(i64vec2) VectorShuffle 1374 1374 0 1 1376: 17(ivec4) Load 19(ballot) 1377:140(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1375 1376 1378: 136(ptr) AccessChain 37(data) 1372 135 40 1379: 30(int64_t) CompositeExtract 1377 0 Store 1378 1379 1380: 136(ptr) AccessChain 37(data) 1372 135 188 1381: 30(int64_t) CompositeExtract 1377 1 Store 1380 1381 1382: 6(int) Load 8(invocation) 1383: 141(ptr) AccessChain 37(data) 52 135 1384: 31(i64vec4) Load 1383 1385:146(i64vec3) VectorShuffle 1384 1384 0 1 2 1386: 17(ivec4) Load 19(ballot) 1387:146(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1385 1386 1388: 136(ptr) AccessChain 37(data) 1382 135 40 1389: 30(int64_t) CompositeExtract 1387 0 Store 1388 1389 1390: 136(ptr) AccessChain 37(data) 1382 135 188 1391: 30(int64_t) CompositeExtract 1387 1 Store 1390 1391 1392: 136(ptr) AccessChain 37(data) 1382 135 201 1393: 30(int64_t) CompositeExtract 1387 2 Store 1392 1393 1394: 6(int) Load 8(invocation) 1395: 141(ptr) AccessChain 37(data) 58 135 1396: 31(i64vec4) Load 1395 1397: 17(ivec4) Load 19(ballot) 1398: 31(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1396 1397 1399: 141(ptr) AccessChain 37(data) 1394 135 Store 1399 1398 1400: 6(int) Load 8(invocation) 1401: 136(ptr) AccessChain 37(data) 39 135 40 1402: 30(int64_t) Load 1401 1403: 17(ivec4) Load 19(ballot) 1404: 30(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1402 1403 1405: 136(ptr) AccessChain 37(data) 1400 135 40 Store 1405 1404 1406: 6(int) Load 8(invocation) 1407: 141(ptr) AccessChain 37(data) 45 135 1408: 31(i64vec4) Load 1407 1409:140(i64vec2) VectorShuffle 1408 1408 0 1 1410: 17(ivec4) Load 19(ballot) 1411:140(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1409 1410 1412: 136(ptr) AccessChain 37(data) 1406 135 40 1413: 30(int64_t) CompositeExtract 1411 0 Store 1412 1413 1414: 136(ptr) AccessChain 37(data) 1406 135 188 1415: 30(int64_t) CompositeExtract 1411 1 Store 1414 1415 1416: 6(int) Load 8(invocation) 1417: 141(ptr) AccessChain 37(data) 52 135 1418: 31(i64vec4) Load 1417 1419:146(i64vec3) VectorShuffle 1418 1418 0 1 2 1420: 17(ivec4) Load 19(ballot) 1421:146(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1419 1420 1422: 136(ptr) AccessChain 37(data) 1416 135 40 1423: 30(int64_t) CompositeExtract 1421 0 Store 1422 1423 1424: 136(ptr) AccessChain 37(data) 1416 135 188 1425: 30(int64_t) CompositeExtract 1421 1 Store 1424 1425 1426: 136(ptr) AccessChain 37(data) 1416 135 201 1427: 30(int64_t) CompositeExtract 1421 2 Store 1426 1427 1428: 6(int) Load 8(invocation) 1429: 141(ptr) AccessChain 37(data) 58 135 1430: 31(i64vec4) Load 1429 1431: 17(ivec4) Load 19(ballot) 1432: 31(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1430 1431 1433: 141(ptr) AccessChain 37(data) 1428 135 Store 1433 1432 1434: 6(int) Load 8(invocation) 1435: 136(ptr) AccessChain 37(data) 39 135 40 1436: 30(int64_t) Load 1435 1437: 17(ivec4) Load 19(ballot) 1438: 30(int64_t) GroupNonUniformUMin 177 PartitionedReduceNV 1436 1437 1439: 136(ptr) AccessChain 37(data) 1434 135 40 Store 1439 1438 1440: 6(int) Load 8(invocation) 1441: 141(ptr) AccessChain 37(data) 45 135 1442: 31(i64vec4) Load 1441 1443:140(i64vec2) VectorShuffle 1442 1442 0 1 1444: 17(ivec4) Load 19(ballot) 1445:140(i64vec2) GroupNonUniformUMin 177 PartitionedReduceNV 1443 1444 1446: 136(ptr) AccessChain 37(data) 1440 135 40 1447: 30(int64_t) CompositeExtract 1445 0 Store 1446 1447 1448: 136(ptr) AccessChain 37(data) 1440 135 188 1449: 30(int64_t) CompositeExtract 1445 1 Store 1448 1449 1450: 6(int) Load 8(invocation) 1451: 141(ptr) AccessChain 37(data) 52 135 1452: 31(i64vec4) Load 1451 1453:146(i64vec3) VectorShuffle 1452 1452 0 1 2 1454: 17(ivec4) Load 19(ballot) 1455:146(i64vec3) GroupNonUniformUMin 177 PartitionedReduceNV 1453 1454 1456: 136(ptr) AccessChain 37(data) 1450 135 40 1457: 30(int64_t) CompositeExtract 1455 0 Store 1456 1457 1458: 136(ptr) AccessChain 37(data) 1450 135 188 1459: 30(int64_t) CompositeExtract 1455 1 Store 1458 1459 1460: 136(ptr) AccessChain 37(data) 1450 135 201 1461: 30(int64_t) CompositeExtract 1455 2 Store 1460 1461 1462: 6(int) Load 8(invocation) 1463: 141(ptr) AccessChain 37(data) 58 135 1464: 31(i64vec4) Load 1463 1465: 17(ivec4) Load 19(ballot) 1466: 31(i64vec4) GroupNonUniformUMin 177 PartitionedReduceNV 1464 1465 1467: 141(ptr) AccessChain 37(data) 1462 135 Store 1467 1466 1468: 6(int) Load 8(invocation) 1469: 136(ptr) AccessChain 37(data) 39 135 40 1470: 30(int64_t) Load 1469 1471: 17(ivec4) Load 19(ballot) 1472: 30(int64_t) GroupNonUniformUMax 177 PartitionedReduceNV 1470 1471 1473: 136(ptr) AccessChain 37(data) 1468 135 40 Store 1473 1472 1474: 6(int) Load 8(invocation) 1475: 141(ptr) AccessChain 37(data) 45 135 1476: 31(i64vec4) Load 1475 1477:140(i64vec2) VectorShuffle 1476 1476 0 1 1478: 17(ivec4) Load 19(ballot) 1479:140(i64vec2) GroupNonUniformUMax 177 PartitionedReduceNV 1477 1478 1480: 136(ptr) AccessChain 37(data) 1474 135 40 1481: 30(int64_t) CompositeExtract 1479 0 Store 1480 1481 1482: 136(ptr) AccessChain 37(data) 1474 135 188 1483: 30(int64_t) CompositeExtract 1479 1 Store 1482 1483 1484: 6(int) Load 8(invocation) 1485: 141(ptr) AccessChain 37(data) 52 135 1486: 31(i64vec4) Load 1485 1487:146(i64vec3) VectorShuffle 1486 1486 0 1 2 1488: 17(ivec4) Load 19(ballot) 1489:146(i64vec3) GroupNonUniformUMax 177 PartitionedReduceNV 1487 1488 1490: 136(ptr) AccessChain 37(data) 1484 135 40 1491: 30(int64_t) CompositeExtract 1489 0 Store 1490 1491 1492: 136(ptr) AccessChain 37(data) 1484 135 188 1493: 30(int64_t) CompositeExtract 1489 1 Store 1492 1493 1494: 136(ptr) AccessChain 37(data) 1484 135 201 1495: 30(int64_t) CompositeExtract 1489 2 Store 1494 1495 1496: 6(int) Load 8(invocation) 1497: 141(ptr) AccessChain 37(data) 58 135 1498: 31(i64vec4) Load 1497 1499: 17(ivec4) Load 19(ballot) 1500: 31(i64vec4) GroupNonUniformUMax 177 PartitionedReduceNV 1498 1499 1501: 141(ptr) AccessChain 37(data) 1496 135 Store 1501 1500 1502: 6(int) Load 8(invocation) 1503: 136(ptr) AccessChain 37(data) 39 135 40 1504: 30(int64_t) Load 1503 1505: 17(ivec4) Load 19(ballot) 1506: 30(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1504 1505 1507: 136(ptr) AccessChain 37(data) 1502 135 40 Store 1507 1506 1508: 6(int) Load 8(invocation) 1509: 141(ptr) AccessChain 37(data) 45 135 1510: 31(i64vec4) Load 1509 1511:140(i64vec2) VectorShuffle 1510 1510 0 1 1512: 17(ivec4) Load 19(ballot) 1513:140(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1511 1512 1514: 136(ptr) AccessChain 37(data) 1508 135 40 1515: 30(int64_t) CompositeExtract 1513 0 Store 1514 1515 1516: 136(ptr) AccessChain 37(data) 1508 135 188 1517: 30(int64_t) CompositeExtract 1513 1 Store 1516 1517 1518: 6(int) Load 8(invocation) 1519: 141(ptr) AccessChain 37(data) 52 135 1520: 31(i64vec4) Load 1519 1521:146(i64vec3) VectorShuffle 1520 1520 0 1 2 1522: 17(ivec4) Load 19(ballot) 1523:146(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1521 1522 1524: 136(ptr) AccessChain 37(data) 1518 135 40 1525: 30(int64_t) CompositeExtract 1523 0 Store 1524 1525 1526: 136(ptr) AccessChain 37(data) 1518 135 188 1527: 30(int64_t) CompositeExtract 1523 1 Store 1526 1527 1528: 136(ptr) AccessChain 37(data) 1518 135 201 1529: 30(int64_t) CompositeExtract 1523 2 Store 1528 1529 1530: 6(int) Load 8(invocation) 1531: 141(ptr) AccessChain 37(data) 58 135 1532: 31(i64vec4) Load 1531 1533: 17(ivec4) Load 19(ballot) 1534: 31(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1532 1533 1535: 141(ptr) AccessChain 37(data) 1530 135 Store 1535 1534 1536: 6(int) Load 8(invocation) 1537: 136(ptr) AccessChain 37(data) 39 135 40 1538: 30(int64_t) Load 1537 1539: 17(ivec4) Load 19(ballot) 1540: 30(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1538 1539 1541: 136(ptr) AccessChain 37(data) 1536 135 40 Store 1541 1540 1542: 6(int) Load 8(invocation) 1543: 141(ptr) AccessChain 37(data) 45 135 1544: 31(i64vec4) Load 1543 1545:140(i64vec2) VectorShuffle 1544 1544 0 1 1546: 17(ivec4) Load 19(ballot) 1547:140(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1545 1546 1548: 136(ptr) AccessChain 37(data) 1542 135 40 1549: 30(int64_t) CompositeExtract 1547 0 Store 1548 1549 1550: 136(ptr) AccessChain 37(data) 1542 135 188 1551: 30(int64_t) CompositeExtract 1547 1 Store 1550 1551 1552: 6(int) Load 8(invocation) 1553: 141(ptr) AccessChain 37(data) 52 135 1554: 31(i64vec4) Load 1553 1555:146(i64vec3) VectorShuffle 1554 1554 0 1 2 1556: 17(ivec4) Load 19(ballot) 1557:146(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1555 1556 1558: 136(ptr) AccessChain 37(data) 1552 135 40 1559: 30(int64_t) CompositeExtract 1557 0 Store 1558 1559 1560: 136(ptr) AccessChain 37(data) 1552 135 188 1561: 30(int64_t) CompositeExtract 1557 1 Store 1560 1561 1562: 136(ptr) AccessChain 37(data) 1552 135 201 1563: 30(int64_t) CompositeExtract 1557 2 Store 1562 1563 1564: 6(int) Load 8(invocation) 1565: 141(ptr) AccessChain 37(data) 58 135 1566: 31(i64vec4) Load 1565 1567: 17(ivec4) Load 19(ballot) 1568: 31(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1566 1567 1569: 141(ptr) AccessChain 37(data) 1564 135 Store 1569 1568 1570: 6(int) Load 8(invocation) 1571: 136(ptr) AccessChain 37(data) 39 135 40 1572: 30(int64_t) Load 1571 1573: 17(ivec4) Load 19(ballot) 1574: 30(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1572 1573 1575: 136(ptr) AccessChain 37(data) 1570 135 40 Store 1575 1574 1576: 6(int) Load 8(invocation) 1577: 141(ptr) AccessChain 37(data) 45 135 1578: 31(i64vec4) Load 1577 1579:140(i64vec2) VectorShuffle 1578 1578 0 1 1580: 17(ivec4) Load 19(ballot) 1581:140(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1579 1580 1582: 136(ptr) AccessChain 37(data) 1576 135 40 1583: 30(int64_t) CompositeExtract 1581 0 Store 1582 1583 1584: 136(ptr) AccessChain 37(data) 1576 135 188 1585: 30(int64_t) CompositeExtract 1581 1 Store 1584 1585 1586: 6(int) Load 8(invocation) 1587: 141(ptr) AccessChain 37(data) 52 135 1588: 31(i64vec4) Load 1587 1589:146(i64vec3) VectorShuffle 1588 1588 0 1 2 1590: 17(ivec4) Load 19(ballot) 1591:146(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1589 1590 1592: 136(ptr) AccessChain 37(data) 1586 135 40 1593: 30(int64_t) CompositeExtract 1591 0 Store 1592 1593 1594: 136(ptr) AccessChain 37(data) 1586 135 188 1595: 30(int64_t) CompositeExtract 1591 1 Store 1594 1595 1596: 136(ptr) AccessChain 37(data) 1586 135 201 1597: 30(int64_t) CompositeExtract 1591 2 Store 1596 1597 1598: 6(int) Load 8(invocation) 1599: 141(ptr) AccessChain 37(data) 58 135 1600: 31(i64vec4) Load 1599 1601: 17(ivec4) Load 19(ballot) 1602: 31(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1600 1601 1603: 141(ptr) AccessChain 37(data) 1598 135 Store 1603 1602 1604: 6(int) Load 8(invocation) 1605: 155(ptr) AccessChain 37(data) 39 154 40 1606:32(float16_t) Load 1605 1607: 17(ivec4) Load 19(ballot) 1608:32(float16_t) GroupNonUniformFAdd 177 PartitionedReduceNV 1606 1607 1609: 155(ptr) AccessChain 37(data) 1604 154 40 Store 1609 1608 1610: 6(int) Load 8(invocation) 1611: 160(ptr) AccessChain 37(data) 45 154 1612: 33(f16vec4) Load 1611 1613:159(f16vec2) VectorShuffle 1612 1612 0 1 1614: 17(ivec4) Load 19(ballot) 1615:159(f16vec2) GroupNonUniformFAdd 177 PartitionedReduceNV 1613 1614 1616: 155(ptr) AccessChain 37(data) 1610 154 40 1617:32(float16_t) CompositeExtract 1615 0 Store 1616 1617 1618: 155(ptr) AccessChain 37(data) 1610 154 188 1619:32(float16_t) CompositeExtract 1615 1 Store 1618 1619 1620: 6(int) Load 8(invocation) 1621: 160(ptr) AccessChain 37(data) 52 154 1622: 33(f16vec4) Load 1621 1623:165(f16vec3) VectorShuffle 1622 1622 0 1 2 1624: 17(ivec4) Load 19(ballot) 1625:165(f16vec3) GroupNonUniformFAdd 177 PartitionedReduceNV 1623 1624 1626: 155(ptr) AccessChain 37(data) 1620 154 40 1627:32(float16_t) CompositeExtract 1625 0 Store 1626 1627 1628: 155(ptr) AccessChain 37(data) 1620 154 188 1629:32(float16_t) CompositeExtract 1625 1 Store 1628 1629 1630: 155(ptr) AccessChain 37(data) 1620 154 201 1631:32(float16_t) CompositeExtract 1625 2 Store 1630 1631 1632: 6(int) Load 8(invocation) 1633: 160(ptr) AccessChain 37(data) 58 154 1634: 33(f16vec4) Load 1633 1635: 17(ivec4) Load 19(ballot) 1636: 33(f16vec4) GroupNonUniformFAdd 177 PartitionedReduceNV 1634 1635 1637: 160(ptr) AccessChain 37(data) 1632 154 Store 1637 1636 1638: 6(int) Load 8(invocation) 1639: 155(ptr) AccessChain 37(data) 39 154 40 1640:32(float16_t) Load 1639 1641: 17(ivec4) Load 19(ballot) 1642:32(float16_t) GroupNonUniformFMul 177 PartitionedReduceNV 1640 1641 1643: 155(ptr) AccessChain 37(data) 1638 154 40 Store 1643 1642 1644: 6(int) Load 8(invocation) 1645: 160(ptr) AccessChain 37(data) 45 154 1646: 33(f16vec4) Load 1645 1647:159(f16vec2) VectorShuffle 1646 1646 0 1 1648: 17(ivec4) Load 19(ballot) 1649:159(f16vec2) GroupNonUniformFMul 177 PartitionedReduceNV 1647 1648 1650: 155(ptr) AccessChain 37(data) 1644 154 40 1651:32(float16_t) CompositeExtract 1649 0 Store 1650 1651 1652: 155(ptr) AccessChain 37(data) 1644 154 188 1653:32(float16_t) CompositeExtract 1649 1 Store 1652 1653 1654: 6(int) Load 8(invocation) 1655: 160(ptr) AccessChain 37(data) 52 154 1656: 33(f16vec4) Load 1655 1657:165(f16vec3) VectorShuffle 1656 1656 0 1 2 1658: 17(ivec4) Load 19(ballot) 1659:165(f16vec3) GroupNonUniformFMul 177 PartitionedReduceNV 1657 1658 1660: 155(ptr) AccessChain 37(data) 1654 154 40 1661:32(float16_t) CompositeExtract 1659 0 Store 1660 1661 1662: 155(ptr) AccessChain 37(data) 1654 154 188 1663:32(float16_t) CompositeExtract 1659 1 Store 1662 1663 1664: 155(ptr) AccessChain 37(data) 1654 154 201 1665:32(float16_t) CompositeExtract 1659 2 Store 1664 1665 1666: 6(int) Load 8(invocation) 1667: 160(ptr) AccessChain 37(data) 58 154 1668: 33(f16vec4) Load 1667 1669: 17(ivec4) Load 19(ballot) 1670: 33(f16vec4) GroupNonUniformFMul 177 PartitionedReduceNV 1668 1669 1671: 160(ptr) AccessChain 37(data) 1666 154 Store 1671 1670 1672: 6(int) Load 8(invocation) 1673: 155(ptr) AccessChain 37(data) 39 154 40 1674:32(float16_t) Load 1673 1675: 17(ivec4) Load 19(ballot) 1676:32(float16_t) GroupNonUniformFMin 177 PartitionedReduceNV 1674 1675 1677: 155(ptr) AccessChain 37(data) 1672 154 40 Store 1677 1676 1678: 6(int) Load 8(invocation) 1679: 160(ptr) AccessChain 37(data) 45 154 1680: 33(f16vec4) Load 1679 1681:159(f16vec2) VectorShuffle 1680 1680 0 1 1682: 17(ivec4) Load 19(ballot) 1683:159(f16vec2) GroupNonUniformFMin 177 PartitionedReduceNV 1681 1682 1684: 155(ptr) AccessChain 37(data) 1678 154 40 1685:32(float16_t) CompositeExtract 1683 0 Store 1684 1685 1686: 155(ptr) AccessChain 37(data) 1678 154 188 1687:32(float16_t) CompositeExtract 1683 1 Store 1686 1687 1688: 6(int) Load 8(invocation) 1689: 160(ptr) AccessChain 37(data) 52 154 1690: 33(f16vec4) Load 1689 1691:165(f16vec3) VectorShuffle 1690 1690 0 1 2 1692: 17(ivec4) Load 19(ballot) 1693:165(f16vec3) GroupNonUniformFMin 177 PartitionedReduceNV 1691 1692 1694: 155(ptr) AccessChain 37(data) 1688 154 40 1695:32(float16_t) CompositeExtract 1693 0 Store 1694 1695 1696: 155(ptr) AccessChain 37(data) 1688 154 188 1697:32(float16_t) CompositeExtract 1693 1 Store 1696 1697 1698: 155(ptr) AccessChain 37(data) 1688 154 201 1699:32(float16_t) CompositeExtract 1693 2 Store 1698 1699 1700: 6(int) Load 8(invocation) 1701: 160(ptr) AccessChain 37(data) 58 154 1702: 33(f16vec4) Load 1701 1703: 17(ivec4) Load 19(ballot) 1704: 33(f16vec4) GroupNonUniformFMin 177 PartitionedReduceNV 1702 1703 1705: 160(ptr) AccessChain 37(data) 1700 154 Store 1705 1704 1706: 6(int) Load 8(invocation) 1707: 155(ptr) AccessChain 37(data) 39 154 40 1708:32(float16_t) Load 1707 1709: 17(ivec4) Load 19(ballot) 1710:32(float16_t) GroupNonUniformFMax 177 PartitionedReduceNV 1708 1709 1711: 155(ptr) AccessChain 37(data) 1706 154 40 Store 1711 1710 1712: 6(int) Load 8(invocation) 1713: 160(ptr) AccessChain 37(data) 45 154 1714: 33(f16vec4) Load 1713 1715:159(f16vec2) VectorShuffle 1714 1714 0 1 1716: 17(ivec4) Load 19(ballot) 1717:159(f16vec2) GroupNonUniformFMax 177 PartitionedReduceNV 1715 1716 1718: 155(ptr) AccessChain 37(data) 1712 154 40 1719:32(float16_t) CompositeExtract 1717 0 Store 1718 1719 1720: 155(ptr) AccessChain 37(data) 1712 154 188 1721:32(float16_t) CompositeExtract 1717 1 Store 1720 1721 1722: 6(int) Load 8(invocation) 1723: 160(ptr) AccessChain 37(data) 52 154 1724: 33(f16vec4) Load 1723 1725:165(f16vec3) VectorShuffle 1724 1724 0 1 2 1726: 17(ivec4) Load 19(ballot) 1727:165(f16vec3) GroupNonUniformFMax 177 PartitionedReduceNV 1725 1726 1728: 155(ptr) AccessChain 37(data) 1722 154 40 1729:32(float16_t) CompositeExtract 1727 0 Store 1728 1729 1730: 155(ptr) AccessChain 37(data) 1722 154 188 1731:32(float16_t) CompositeExtract 1727 1 Store 1730 1731 1732: 155(ptr) AccessChain 37(data) 1722 154 201 1733:32(float16_t) CompositeExtract 1727 2 Store 1732 1733 1734: 6(int) Load 8(invocation) 1735: 160(ptr) AccessChain 37(data) 58 154 1736: 33(f16vec4) Load 1735 1737: 17(ivec4) Load 19(ballot) 1738: 33(f16vec4) GroupNonUniformFMax 177 PartitionedReduceNV 1736 1737 1739: 160(ptr) AccessChain 37(data) 1734 154 Store 1739 1738 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out000066400000000000000000000677421506534232700301750ustar00rootroot00000000000000spv.subgroupExtendedTypesPartitionedNeg.comp ERROR: 0:27: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:28: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:29: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:30: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:33: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:34: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:35: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:38: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:39: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:40: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:42: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:43: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:44: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:45: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:47: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:48: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:49: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:50: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:52: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:53: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:54: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:55: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:57: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:58: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:59: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:60: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:62: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:63: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:64: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:65: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:67: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:68: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:69: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:70: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:72: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:73: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:74: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:75: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:77: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:78: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:79: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:80: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:82: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:83: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:84: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:85: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:87: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:88: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:89: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:90: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:92: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:93: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:94: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:95: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:97: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:98: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:99: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:100: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:102: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:103: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:104: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:105: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:107: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:108: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:109: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:110: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:112: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:113: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:114: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:115: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:117: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:118: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:119: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:120: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:122: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:123: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:124: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:125: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:127: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:128: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:129: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:130: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:132: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:133: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:134: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:135: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:137: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:138: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:139: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:140: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:142: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:143: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:144: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:145: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:147: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:148: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:149: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:150: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:152: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:153: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:154: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:155: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:157: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:158: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:159: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:160: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:162: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:163: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:164: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:165: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:167: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:168: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:169: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:170: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:172: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:173: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:174: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:175: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:177: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:178: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:179: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:180: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:182: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:183: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:184: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:185: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:187: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:188: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:189: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:190: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:192: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:193: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:194: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:195: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:197: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:198: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:199: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:200: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:202: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:203: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:204: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:205: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:207: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:208: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:209: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:210: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:212: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:213: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:214: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:215: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:217: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:218: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:219: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:220: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:222: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:223: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:224: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:225: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:227: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:228: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:229: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:230: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:232: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:233: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:234: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:235: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:237: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:238: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:239: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:240: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:242: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:243: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:244: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:245: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:247: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:248: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:249: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:250: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:252: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:253: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:254: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:255: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:257: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:258: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:259: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:260: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:262: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:263: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:264: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:265: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:267: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:268: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:269: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:270: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:272: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:273: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:274: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:275: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:277: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:278: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:279: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:280: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:282: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:283: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:284: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:285: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:287: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:288: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:289: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:290: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 212 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out000066400000000000000000001727341506534232700261510ustar00rootroot00000000000000spv.subgroupExtendedTypesQuad.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 918 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability GroupNonUniform Capability GroupNonUniformQuad Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_quad" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 31 "Buffers" MemberName 31(Buffers) 0 "i8" MemberName 31(Buffers) 1 "u8" MemberName 31(Buffers) 2 "i16" MemberName 31(Buffers) 3 "u16" MemberName 31(Buffers) 4 "i64" MemberName 31(Buffers) 5 "u64" MemberName 31(Buffers) 6 "f16" Name 34 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 MemberDecorate 31(Buffers) 3 Offset 16 MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 Decorate 34(data) Binding 0 Decorate 34(data) DescriptorSet 0 Decorate 917 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeInt 8 1 18: TypeVector 17(int8_t) 4 19: TypeInt 8 0 20: TypeVector 19(int8_t) 4 21: TypeInt 16 1 22: TypeVector 21(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 4 25: TypeInt 64 1 26: TypeVector 25(int64_t) 4 27: TypeInt 64 0 28: TypeVector 27(int64_t) 4 29: TypeFloat 16 30: TypeVector 29(float16_t) 4 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 32: TypeArray 31(Buffers) 15 33: TypePointer StorageBuffer 32 34(data): 33(ptr) Variable StorageBuffer 36: TypeInt 32 1 37: 36(int) Constant 0 38: 6(int) Constant 0 39: TypePointer StorageBuffer 17(int8_t) 42: 6(int) Constant 1 43: 6(int) Constant 3 47: 36(int) Constant 1 48: TypeVector 17(int8_t) 2 49: TypePointer StorageBuffer 18(i8vec4) 59: 36(int) Constant 2 60: TypeVector 17(int8_t) 3 69: 6(int) Constant 2 73: 36(int) Constant 3 169: TypePointer StorageBuffer 19(int8_t) 175: TypeVector 19(int8_t) 2 176: TypePointer StorageBuffer 20(i8vec4) 186: TypeVector 19(int8_t) 3 293: TypePointer StorageBuffer 21(int16_t) 299: TypeVector 21(int16_t) 2 300: TypePointer StorageBuffer 22(i16vec4) 310: TypeVector 21(int16_t) 3 417: TypePointer StorageBuffer 23(int16_t) 423: TypeVector 23(int16_t) 2 424: TypePointer StorageBuffer 24(i16vec4) 434: TypeVector 23(int16_t) 3 541: 36(int) Constant 4 542: TypePointer StorageBuffer 25(int64_t) 548: TypeVector 25(int64_t) 2 549: TypePointer StorageBuffer 26(i64vec4) 559: TypeVector 25(int64_t) 3 666: 36(int) Constant 5 667: TypePointer StorageBuffer 27(int64_t) 673: TypeVector 27(int64_t) 2 674: TypePointer StorageBuffer 28(i64vec4) 684: TypeVector 27(int64_t) 3 791: 36(int) Constant 6 792: TypePointer StorageBuffer 29(float16_t) 798: TypeVector 29(float16_t) 2 799: TypePointer StorageBuffer 30(f16vec4) 809: TypeVector 29(float16_t) 3 915: TypeVector 6(int) 3 916: 6(int) Constant 8 917: 915(ivec3) ConstantComposite 916 42 42 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 35: 6(int) Load 8(invocation) 40: 39(ptr) AccessChain 34(data) 37 37 38 41: 17(int8_t) Load 40 44: 17(int8_t) GroupNonUniformQuadBroadcast 43 41 42 45: 39(ptr) AccessChain 34(data) 35 37 38 Store 45 44 46: 6(int) Load 8(invocation) 50: 49(ptr) AccessChain 34(data) 47 37 51: 18(i8vec4) Load 50 52: 48(i8vec2) VectorShuffle 51 51 0 1 53: 48(i8vec2) GroupNonUniformQuadBroadcast 43 52 42 54: 39(ptr) AccessChain 34(data) 46 37 38 55: 17(int8_t) CompositeExtract 53 0 Store 54 55 56: 39(ptr) AccessChain 34(data) 46 37 42 57: 17(int8_t) CompositeExtract 53 1 Store 56 57 58: 6(int) Load 8(invocation) 61: 49(ptr) AccessChain 34(data) 59 37 62: 18(i8vec4) Load 61 63: 60(i8vec3) VectorShuffle 62 62 0 1 2 64: 60(i8vec3) GroupNonUniformQuadBroadcast 43 63 42 65: 39(ptr) AccessChain 34(data) 58 37 38 66: 17(int8_t) CompositeExtract 64 0 Store 65 66 67: 39(ptr) AccessChain 34(data) 58 37 42 68: 17(int8_t) CompositeExtract 64 1 Store 67 68 70: 39(ptr) AccessChain 34(data) 58 37 69 71: 17(int8_t) CompositeExtract 64 2 Store 70 71 72: 6(int) Load 8(invocation) 74: 49(ptr) AccessChain 34(data) 73 37 75: 18(i8vec4) Load 74 76: 18(i8vec4) GroupNonUniformQuadBroadcast 43 75 42 77: 49(ptr) AccessChain 34(data) 72 37 Store 77 76 78: 6(int) Load 8(invocation) 79: 39(ptr) AccessChain 34(data) 37 37 38 80: 17(int8_t) Load 79 81: 17(int8_t) GroupNonUniformQuadSwap 43 80 38 82: 39(ptr) AccessChain 34(data) 78 37 38 Store 82 81 83: 6(int) Load 8(invocation) 84: 49(ptr) AccessChain 34(data) 47 37 85: 18(i8vec4) Load 84 86: 48(i8vec2) VectorShuffle 85 85 0 1 87: 48(i8vec2) GroupNonUniformQuadSwap 43 86 38 88: 39(ptr) AccessChain 34(data) 83 37 38 89: 17(int8_t) CompositeExtract 87 0 Store 88 89 90: 39(ptr) AccessChain 34(data) 83 37 42 91: 17(int8_t) CompositeExtract 87 1 Store 90 91 92: 6(int) Load 8(invocation) 93: 49(ptr) AccessChain 34(data) 59 37 94: 18(i8vec4) Load 93 95: 60(i8vec3) VectorShuffle 94 94 0 1 2 96: 60(i8vec3) GroupNonUniformQuadSwap 43 95 38 97: 39(ptr) AccessChain 34(data) 92 37 38 98: 17(int8_t) CompositeExtract 96 0 Store 97 98 99: 39(ptr) AccessChain 34(data) 92 37 42 100: 17(int8_t) CompositeExtract 96 1 Store 99 100 101: 39(ptr) AccessChain 34(data) 92 37 69 102: 17(int8_t) CompositeExtract 96 2 Store 101 102 103: 6(int) Load 8(invocation) 104: 49(ptr) AccessChain 34(data) 73 37 105: 18(i8vec4) Load 104 106: 18(i8vec4) GroupNonUniformQuadSwap 43 105 38 107: 49(ptr) AccessChain 34(data) 103 37 Store 107 106 108: 6(int) Load 8(invocation) 109: 39(ptr) AccessChain 34(data) 37 37 38 110: 17(int8_t) Load 109 111: 17(int8_t) GroupNonUniformQuadSwap 43 110 42 112: 39(ptr) AccessChain 34(data) 108 37 38 Store 112 111 113: 6(int) Load 8(invocation) 114: 49(ptr) AccessChain 34(data) 47 37 115: 18(i8vec4) Load 114 116: 48(i8vec2) VectorShuffle 115 115 0 1 117: 48(i8vec2) GroupNonUniformQuadSwap 43 116 42 118: 39(ptr) AccessChain 34(data) 113 37 38 119: 17(int8_t) CompositeExtract 117 0 Store 118 119 120: 39(ptr) AccessChain 34(data) 113 37 42 121: 17(int8_t) CompositeExtract 117 1 Store 120 121 122: 6(int) Load 8(invocation) 123: 49(ptr) AccessChain 34(data) 59 37 124: 18(i8vec4) Load 123 125: 60(i8vec3) VectorShuffle 124 124 0 1 2 126: 60(i8vec3) GroupNonUniformQuadSwap 43 125 42 127: 39(ptr) AccessChain 34(data) 122 37 38 128: 17(int8_t) CompositeExtract 126 0 Store 127 128 129: 39(ptr) AccessChain 34(data) 122 37 42 130: 17(int8_t) CompositeExtract 126 1 Store 129 130 131: 39(ptr) AccessChain 34(data) 122 37 69 132: 17(int8_t) CompositeExtract 126 2 Store 131 132 133: 6(int) Load 8(invocation) 134: 49(ptr) AccessChain 34(data) 73 37 135: 18(i8vec4) Load 134 136: 18(i8vec4) GroupNonUniformQuadSwap 43 135 42 137: 49(ptr) AccessChain 34(data) 133 37 Store 137 136 138: 6(int) Load 8(invocation) 139: 39(ptr) AccessChain 34(data) 37 37 38 140: 17(int8_t) Load 139 141: 17(int8_t) GroupNonUniformQuadSwap 43 140 69 142: 39(ptr) AccessChain 34(data) 138 37 38 Store 142 141 143: 6(int) Load 8(invocation) 144: 49(ptr) AccessChain 34(data) 47 37 145: 18(i8vec4) Load 144 146: 48(i8vec2) VectorShuffle 145 145 0 1 147: 48(i8vec2) GroupNonUniformQuadSwap 43 146 69 148: 39(ptr) AccessChain 34(data) 143 37 38 149: 17(int8_t) CompositeExtract 147 0 Store 148 149 150: 39(ptr) AccessChain 34(data) 143 37 42 151: 17(int8_t) CompositeExtract 147 1 Store 150 151 152: 6(int) Load 8(invocation) 153: 49(ptr) AccessChain 34(data) 59 37 154: 18(i8vec4) Load 153 155: 60(i8vec3) VectorShuffle 154 154 0 1 2 156: 60(i8vec3) GroupNonUniformQuadSwap 43 155 69 157: 39(ptr) AccessChain 34(data) 152 37 38 158: 17(int8_t) CompositeExtract 156 0 Store 157 158 159: 39(ptr) AccessChain 34(data) 152 37 42 160: 17(int8_t) CompositeExtract 156 1 Store 159 160 161: 39(ptr) AccessChain 34(data) 152 37 69 162: 17(int8_t) CompositeExtract 156 2 Store 161 162 163: 6(int) Load 8(invocation) 164: 49(ptr) AccessChain 34(data) 73 37 165: 18(i8vec4) Load 164 166: 18(i8vec4) GroupNonUniformQuadSwap 43 165 69 167: 49(ptr) AccessChain 34(data) 163 37 Store 167 166 168: 6(int) Load 8(invocation) 170: 169(ptr) AccessChain 34(data) 37 47 38 171: 19(int8_t) Load 170 172: 19(int8_t) GroupNonUniformQuadBroadcast 43 171 42 173: 169(ptr) AccessChain 34(data) 168 47 38 Store 173 172 174: 6(int) Load 8(invocation) 177: 176(ptr) AccessChain 34(data) 47 47 178: 20(i8vec4) Load 177 179: 175(i8vec2) VectorShuffle 178 178 0 1 180: 175(i8vec2) GroupNonUniformQuadBroadcast 43 179 42 181: 169(ptr) AccessChain 34(data) 174 47 38 182: 19(int8_t) CompositeExtract 180 0 Store 181 182 183: 169(ptr) AccessChain 34(data) 174 47 42 184: 19(int8_t) CompositeExtract 180 1 Store 183 184 185: 6(int) Load 8(invocation) 187: 176(ptr) AccessChain 34(data) 59 47 188: 20(i8vec4) Load 187 189: 186(i8vec3) VectorShuffle 188 188 0 1 2 190: 186(i8vec3) GroupNonUniformQuadBroadcast 43 189 42 191: 169(ptr) AccessChain 34(data) 185 47 38 192: 19(int8_t) CompositeExtract 190 0 Store 191 192 193: 169(ptr) AccessChain 34(data) 185 47 42 194: 19(int8_t) CompositeExtract 190 1 Store 193 194 195: 169(ptr) AccessChain 34(data) 185 47 69 196: 19(int8_t) CompositeExtract 190 2 Store 195 196 197: 6(int) Load 8(invocation) 198: 176(ptr) AccessChain 34(data) 73 47 199: 20(i8vec4) Load 198 200: 20(i8vec4) GroupNonUniformQuadBroadcast 43 199 42 201: 176(ptr) AccessChain 34(data) 197 47 Store 201 200 202: 6(int) Load 8(invocation) 203: 169(ptr) AccessChain 34(data) 37 47 38 204: 19(int8_t) Load 203 205: 19(int8_t) GroupNonUniformQuadSwap 43 204 38 206: 169(ptr) AccessChain 34(data) 202 47 38 Store 206 205 207: 6(int) Load 8(invocation) 208: 176(ptr) AccessChain 34(data) 47 47 209: 20(i8vec4) Load 208 210: 175(i8vec2) VectorShuffle 209 209 0 1 211: 175(i8vec2) GroupNonUniformQuadSwap 43 210 38 212: 169(ptr) AccessChain 34(data) 207 47 38 213: 19(int8_t) CompositeExtract 211 0 Store 212 213 214: 169(ptr) AccessChain 34(data) 207 47 42 215: 19(int8_t) CompositeExtract 211 1 Store 214 215 216: 6(int) Load 8(invocation) 217: 176(ptr) AccessChain 34(data) 59 47 218: 20(i8vec4) Load 217 219: 186(i8vec3) VectorShuffle 218 218 0 1 2 220: 186(i8vec3) GroupNonUniformQuadSwap 43 219 38 221: 169(ptr) AccessChain 34(data) 216 47 38 222: 19(int8_t) CompositeExtract 220 0 Store 221 222 223: 169(ptr) AccessChain 34(data) 216 47 42 224: 19(int8_t) CompositeExtract 220 1 Store 223 224 225: 169(ptr) AccessChain 34(data) 216 47 69 226: 19(int8_t) CompositeExtract 220 2 Store 225 226 227: 6(int) Load 8(invocation) 228: 176(ptr) AccessChain 34(data) 73 47 229: 20(i8vec4) Load 228 230: 20(i8vec4) GroupNonUniformQuadSwap 43 229 38 231: 176(ptr) AccessChain 34(data) 227 47 Store 231 230 232: 6(int) Load 8(invocation) 233: 169(ptr) AccessChain 34(data) 37 47 38 234: 19(int8_t) Load 233 235: 19(int8_t) GroupNonUniformQuadSwap 43 234 42 236: 169(ptr) AccessChain 34(data) 232 47 38 Store 236 235 237: 6(int) Load 8(invocation) 238: 176(ptr) AccessChain 34(data) 47 47 239: 20(i8vec4) Load 238 240: 175(i8vec2) VectorShuffle 239 239 0 1 241: 175(i8vec2) GroupNonUniformQuadSwap 43 240 42 242: 169(ptr) AccessChain 34(data) 237 47 38 243: 19(int8_t) CompositeExtract 241 0 Store 242 243 244: 169(ptr) AccessChain 34(data) 237 47 42 245: 19(int8_t) CompositeExtract 241 1 Store 244 245 246: 6(int) Load 8(invocation) 247: 176(ptr) AccessChain 34(data) 59 47 248: 20(i8vec4) Load 247 249: 186(i8vec3) VectorShuffle 248 248 0 1 2 250: 186(i8vec3) GroupNonUniformQuadSwap 43 249 42 251: 169(ptr) AccessChain 34(data) 246 47 38 252: 19(int8_t) CompositeExtract 250 0 Store 251 252 253: 169(ptr) AccessChain 34(data) 246 47 42 254: 19(int8_t) CompositeExtract 250 1 Store 253 254 255: 169(ptr) AccessChain 34(data) 246 47 69 256: 19(int8_t) CompositeExtract 250 2 Store 255 256 257: 6(int) Load 8(invocation) 258: 176(ptr) AccessChain 34(data) 73 47 259: 20(i8vec4) Load 258 260: 20(i8vec4) GroupNonUniformQuadSwap 43 259 42 261: 176(ptr) AccessChain 34(data) 257 47 Store 261 260 262: 6(int) Load 8(invocation) 263: 169(ptr) AccessChain 34(data) 37 47 38 264: 19(int8_t) Load 263 265: 19(int8_t) GroupNonUniformQuadSwap 43 264 69 266: 169(ptr) AccessChain 34(data) 262 47 38 Store 266 265 267: 6(int) Load 8(invocation) 268: 176(ptr) AccessChain 34(data) 47 47 269: 20(i8vec4) Load 268 270: 175(i8vec2) VectorShuffle 269 269 0 1 271: 175(i8vec2) GroupNonUniformQuadSwap 43 270 69 272: 169(ptr) AccessChain 34(data) 267 47 38 273: 19(int8_t) CompositeExtract 271 0 Store 272 273 274: 169(ptr) AccessChain 34(data) 267 47 42 275: 19(int8_t) CompositeExtract 271 1 Store 274 275 276: 6(int) Load 8(invocation) 277: 176(ptr) AccessChain 34(data) 59 47 278: 20(i8vec4) Load 277 279: 186(i8vec3) VectorShuffle 278 278 0 1 2 280: 186(i8vec3) GroupNonUniformQuadSwap 43 279 69 281: 169(ptr) AccessChain 34(data) 276 47 38 282: 19(int8_t) CompositeExtract 280 0 Store 281 282 283: 169(ptr) AccessChain 34(data) 276 47 42 284: 19(int8_t) CompositeExtract 280 1 Store 283 284 285: 169(ptr) AccessChain 34(data) 276 47 69 286: 19(int8_t) CompositeExtract 280 2 Store 285 286 287: 6(int) Load 8(invocation) 288: 176(ptr) AccessChain 34(data) 73 47 289: 20(i8vec4) Load 288 290: 20(i8vec4) GroupNonUniformQuadSwap 43 289 69 291: 176(ptr) AccessChain 34(data) 287 47 Store 291 290 292: 6(int) Load 8(invocation) 294: 293(ptr) AccessChain 34(data) 37 59 38 295: 21(int16_t) Load 294 296: 21(int16_t) GroupNonUniformQuadBroadcast 43 295 42 297: 293(ptr) AccessChain 34(data) 292 59 38 Store 297 296 298: 6(int) Load 8(invocation) 301: 300(ptr) AccessChain 34(data) 47 59 302: 22(i16vec4) Load 301 303:299(i16vec2) VectorShuffle 302 302 0 1 304:299(i16vec2) GroupNonUniformQuadBroadcast 43 303 42 305: 293(ptr) AccessChain 34(data) 298 59 38 306: 21(int16_t) CompositeExtract 304 0 Store 305 306 307: 293(ptr) AccessChain 34(data) 298 59 42 308: 21(int16_t) CompositeExtract 304 1 Store 307 308 309: 6(int) Load 8(invocation) 311: 300(ptr) AccessChain 34(data) 59 59 312: 22(i16vec4) Load 311 313:310(i16vec3) VectorShuffle 312 312 0 1 2 314:310(i16vec3) GroupNonUniformQuadBroadcast 43 313 42 315: 293(ptr) AccessChain 34(data) 309 59 38 316: 21(int16_t) CompositeExtract 314 0 Store 315 316 317: 293(ptr) AccessChain 34(data) 309 59 42 318: 21(int16_t) CompositeExtract 314 1 Store 317 318 319: 293(ptr) AccessChain 34(data) 309 59 69 320: 21(int16_t) CompositeExtract 314 2 Store 319 320 321: 6(int) Load 8(invocation) 322: 300(ptr) AccessChain 34(data) 73 59 323: 22(i16vec4) Load 322 324: 22(i16vec4) GroupNonUniformQuadBroadcast 43 323 42 325: 300(ptr) AccessChain 34(data) 321 59 Store 325 324 326: 6(int) Load 8(invocation) 327: 293(ptr) AccessChain 34(data) 37 59 38 328: 21(int16_t) Load 327 329: 21(int16_t) GroupNonUniformQuadSwap 43 328 38 330: 293(ptr) AccessChain 34(data) 326 59 38 Store 330 329 331: 6(int) Load 8(invocation) 332: 300(ptr) AccessChain 34(data) 47 59 333: 22(i16vec4) Load 332 334:299(i16vec2) VectorShuffle 333 333 0 1 335:299(i16vec2) GroupNonUniformQuadSwap 43 334 38 336: 293(ptr) AccessChain 34(data) 331 59 38 337: 21(int16_t) CompositeExtract 335 0 Store 336 337 338: 293(ptr) AccessChain 34(data) 331 59 42 339: 21(int16_t) CompositeExtract 335 1 Store 338 339 340: 6(int) Load 8(invocation) 341: 300(ptr) AccessChain 34(data) 59 59 342: 22(i16vec4) Load 341 343:310(i16vec3) VectorShuffle 342 342 0 1 2 344:310(i16vec3) GroupNonUniformQuadSwap 43 343 38 345: 293(ptr) AccessChain 34(data) 340 59 38 346: 21(int16_t) CompositeExtract 344 0 Store 345 346 347: 293(ptr) AccessChain 34(data) 340 59 42 348: 21(int16_t) CompositeExtract 344 1 Store 347 348 349: 293(ptr) AccessChain 34(data) 340 59 69 350: 21(int16_t) CompositeExtract 344 2 Store 349 350 351: 6(int) Load 8(invocation) 352: 300(ptr) AccessChain 34(data) 73 59 353: 22(i16vec4) Load 352 354: 22(i16vec4) GroupNonUniformQuadSwap 43 353 38 355: 300(ptr) AccessChain 34(data) 351 59 Store 355 354 356: 6(int) Load 8(invocation) 357: 293(ptr) AccessChain 34(data) 37 59 38 358: 21(int16_t) Load 357 359: 21(int16_t) GroupNonUniformQuadSwap 43 358 42 360: 293(ptr) AccessChain 34(data) 356 59 38 Store 360 359 361: 6(int) Load 8(invocation) 362: 300(ptr) AccessChain 34(data) 47 59 363: 22(i16vec4) Load 362 364:299(i16vec2) VectorShuffle 363 363 0 1 365:299(i16vec2) GroupNonUniformQuadSwap 43 364 42 366: 293(ptr) AccessChain 34(data) 361 59 38 367: 21(int16_t) CompositeExtract 365 0 Store 366 367 368: 293(ptr) AccessChain 34(data) 361 59 42 369: 21(int16_t) CompositeExtract 365 1 Store 368 369 370: 6(int) Load 8(invocation) 371: 300(ptr) AccessChain 34(data) 59 59 372: 22(i16vec4) Load 371 373:310(i16vec3) VectorShuffle 372 372 0 1 2 374:310(i16vec3) GroupNonUniformQuadSwap 43 373 42 375: 293(ptr) AccessChain 34(data) 370 59 38 376: 21(int16_t) CompositeExtract 374 0 Store 375 376 377: 293(ptr) AccessChain 34(data) 370 59 42 378: 21(int16_t) CompositeExtract 374 1 Store 377 378 379: 293(ptr) AccessChain 34(data) 370 59 69 380: 21(int16_t) CompositeExtract 374 2 Store 379 380 381: 6(int) Load 8(invocation) 382: 300(ptr) AccessChain 34(data) 73 59 383: 22(i16vec4) Load 382 384: 22(i16vec4) GroupNonUniformQuadSwap 43 383 42 385: 300(ptr) AccessChain 34(data) 381 59 Store 385 384 386: 6(int) Load 8(invocation) 387: 293(ptr) AccessChain 34(data) 37 59 38 388: 21(int16_t) Load 387 389: 21(int16_t) GroupNonUniformQuadSwap 43 388 69 390: 293(ptr) AccessChain 34(data) 386 59 38 Store 390 389 391: 6(int) Load 8(invocation) 392: 300(ptr) AccessChain 34(data) 47 59 393: 22(i16vec4) Load 392 394:299(i16vec2) VectorShuffle 393 393 0 1 395:299(i16vec2) GroupNonUniformQuadSwap 43 394 69 396: 293(ptr) AccessChain 34(data) 391 59 38 397: 21(int16_t) CompositeExtract 395 0 Store 396 397 398: 293(ptr) AccessChain 34(data) 391 59 42 399: 21(int16_t) CompositeExtract 395 1 Store 398 399 400: 6(int) Load 8(invocation) 401: 300(ptr) AccessChain 34(data) 59 59 402: 22(i16vec4) Load 401 403:310(i16vec3) VectorShuffle 402 402 0 1 2 404:310(i16vec3) GroupNonUniformQuadSwap 43 403 69 405: 293(ptr) AccessChain 34(data) 400 59 38 406: 21(int16_t) CompositeExtract 404 0 Store 405 406 407: 293(ptr) AccessChain 34(data) 400 59 42 408: 21(int16_t) CompositeExtract 404 1 Store 407 408 409: 293(ptr) AccessChain 34(data) 400 59 69 410: 21(int16_t) CompositeExtract 404 2 Store 409 410 411: 6(int) Load 8(invocation) 412: 300(ptr) AccessChain 34(data) 73 59 413: 22(i16vec4) Load 412 414: 22(i16vec4) GroupNonUniformQuadSwap 43 413 69 415: 300(ptr) AccessChain 34(data) 411 59 Store 415 414 416: 6(int) Load 8(invocation) 418: 417(ptr) AccessChain 34(data) 37 73 38 419: 23(int16_t) Load 418 420: 23(int16_t) GroupNonUniformQuadBroadcast 43 419 42 421: 417(ptr) AccessChain 34(data) 416 73 38 Store 421 420 422: 6(int) Load 8(invocation) 425: 424(ptr) AccessChain 34(data) 47 73 426: 24(i16vec4) Load 425 427:423(i16vec2) VectorShuffle 426 426 0 1 428:423(i16vec2) GroupNonUniformQuadBroadcast 43 427 42 429: 417(ptr) AccessChain 34(data) 422 73 38 430: 23(int16_t) CompositeExtract 428 0 Store 429 430 431: 417(ptr) AccessChain 34(data) 422 73 42 432: 23(int16_t) CompositeExtract 428 1 Store 431 432 433: 6(int) Load 8(invocation) 435: 424(ptr) AccessChain 34(data) 59 73 436: 24(i16vec4) Load 435 437:434(i16vec3) VectorShuffle 436 436 0 1 2 438:434(i16vec3) GroupNonUniformQuadBroadcast 43 437 42 439: 417(ptr) AccessChain 34(data) 433 73 38 440: 23(int16_t) CompositeExtract 438 0 Store 439 440 441: 417(ptr) AccessChain 34(data) 433 73 42 442: 23(int16_t) CompositeExtract 438 1 Store 441 442 443: 417(ptr) AccessChain 34(data) 433 73 69 444: 23(int16_t) CompositeExtract 438 2 Store 443 444 445: 6(int) Load 8(invocation) 446: 424(ptr) AccessChain 34(data) 73 73 447: 24(i16vec4) Load 446 448: 24(i16vec4) GroupNonUniformQuadBroadcast 43 447 42 449: 424(ptr) AccessChain 34(data) 445 73 Store 449 448 450: 6(int) Load 8(invocation) 451: 417(ptr) AccessChain 34(data) 37 73 38 452: 23(int16_t) Load 451 453: 23(int16_t) GroupNonUniformQuadSwap 43 452 38 454: 417(ptr) AccessChain 34(data) 450 73 38 Store 454 453 455: 6(int) Load 8(invocation) 456: 424(ptr) AccessChain 34(data) 47 73 457: 24(i16vec4) Load 456 458:423(i16vec2) VectorShuffle 457 457 0 1 459:423(i16vec2) GroupNonUniformQuadSwap 43 458 38 460: 417(ptr) AccessChain 34(data) 455 73 38 461: 23(int16_t) CompositeExtract 459 0 Store 460 461 462: 417(ptr) AccessChain 34(data) 455 73 42 463: 23(int16_t) CompositeExtract 459 1 Store 462 463 464: 6(int) Load 8(invocation) 465: 424(ptr) AccessChain 34(data) 59 73 466: 24(i16vec4) Load 465 467:434(i16vec3) VectorShuffle 466 466 0 1 2 468:434(i16vec3) GroupNonUniformQuadSwap 43 467 38 469: 417(ptr) AccessChain 34(data) 464 73 38 470: 23(int16_t) CompositeExtract 468 0 Store 469 470 471: 417(ptr) AccessChain 34(data) 464 73 42 472: 23(int16_t) CompositeExtract 468 1 Store 471 472 473: 417(ptr) AccessChain 34(data) 464 73 69 474: 23(int16_t) CompositeExtract 468 2 Store 473 474 475: 6(int) Load 8(invocation) 476: 424(ptr) AccessChain 34(data) 73 73 477: 24(i16vec4) Load 476 478: 24(i16vec4) GroupNonUniformQuadSwap 43 477 38 479: 424(ptr) AccessChain 34(data) 475 73 Store 479 478 480: 6(int) Load 8(invocation) 481: 417(ptr) AccessChain 34(data) 37 73 38 482: 23(int16_t) Load 481 483: 23(int16_t) GroupNonUniformQuadSwap 43 482 42 484: 417(ptr) AccessChain 34(data) 480 73 38 Store 484 483 485: 6(int) Load 8(invocation) 486: 424(ptr) AccessChain 34(data) 47 73 487: 24(i16vec4) Load 486 488:423(i16vec2) VectorShuffle 487 487 0 1 489:423(i16vec2) GroupNonUniformQuadSwap 43 488 42 490: 417(ptr) AccessChain 34(data) 485 73 38 491: 23(int16_t) CompositeExtract 489 0 Store 490 491 492: 417(ptr) AccessChain 34(data) 485 73 42 493: 23(int16_t) CompositeExtract 489 1 Store 492 493 494: 6(int) Load 8(invocation) 495: 424(ptr) AccessChain 34(data) 59 73 496: 24(i16vec4) Load 495 497:434(i16vec3) VectorShuffle 496 496 0 1 2 498:434(i16vec3) GroupNonUniformQuadSwap 43 497 42 499: 417(ptr) AccessChain 34(data) 494 73 38 500: 23(int16_t) CompositeExtract 498 0 Store 499 500 501: 417(ptr) AccessChain 34(data) 494 73 42 502: 23(int16_t) CompositeExtract 498 1 Store 501 502 503: 417(ptr) AccessChain 34(data) 494 73 69 504: 23(int16_t) CompositeExtract 498 2 Store 503 504 505: 6(int) Load 8(invocation) 506: 424(ptr) AccessChain 34(data) 73 73 507: 24(i16vec4) Load 506 508: 24(i16vec4) GroupNonUniformQuadSwap 43 507 42 509: 424(ptr) AccessChain 34(data) 505 73 Store 509 508 510: 6(int) Load 8(invocation) 511: 417(ptr) AccessChain 34(data) 37 73 38 512: 23(int16_t) Load 511 513: 23(int16_t) GroupNonUniformQuadSwap 43 512 69 514: 417(ptr) AccessChain 34(data) 510 73 38 Store 514 513 515: 6(int) Load 8(invocation) 516: 424(ptr) AccessChain 34(data) 47 73 517: 24(i16vec4) Load 516 518:423(i16vec2) VectorShuffle 517 517 0 1 519:423(i16vec2) GroupNonUniformQuadSwap 43 518 69 520: 417(ptr) AccessChain 34(data) 515 73 38 521: 23(int16_t) CompositeExtract 519 0 Store 520 521 522: 417(ptr) AccessChain 34(data) 515 73 42 523: 23(int16_t) CompositeExtract 519 1 Store 522 523 524: 6(int) Load 8(invocation) 525: 424(ptr) AccessChain 34(data) 59 73 526: 24(i16vec4) Load 525 527:434(i16vec3) VectorShuffle 526 526 0 1 2 528:434(i16vec3) GroupNonUniformQuadSwap 43 527 69 529: 417(ptr) AccessChain 34(data) 524 73 38 530: 23(int16_t) CompositeExtract 528 0 Store 529 530 531: 417(ptr) AccessChain 34(data) 524 73 42 532: 23(int16_t) CompositeExtract 528 1 Store 531 532 533: 417(ptr) AccessChain 34(data) 524 73 69 534: 23(int16_t) CompositeExtract 528 2 Store 533 534 535: 6(int) Load 8(invocation) 536: 424(ptr) AccessChain 34(data) 73 73 537: 24(i16vec4) Load 536 538: 24(i16vec4) GroupNonUniformQuadSwap 43 537 69 539: 424(ptr) AccessChain 34(data) 535 73 Store 539 538 540: 6(int) Load 8(invocation) 543: 542(ptr) AccessChain 34(data) 37 541 38 544: 25(int64_t) Load 543 545: 25(int64_t) GroupNonUniformQuadBroadcast 43 544 42 546: 542(ptr) AccessChain 34(data) 540 541 38 Store 546 545 547: 6(int) Load 8(invocation) 550: 549(ptr) AccessChain 34(data) 47 541 551: 26(i64vec4) Load 550 552:548(i64vec2) VectorShuffle 551 551 0 1 553:548(i64vec2) GroupNonUniformQuadBroadcast 43 552 42 554: 542(ptr) AccessChain 34(data) 547 541 38 555: 25(int64_t) CompositeExtract 553 0 Store 554 555 556: 542(ptr) AccessChain 34(data) 547 541 42 557: 25(int64_t) CompositeExtract 553 1 Store 556 557 558: 6(int) Load 8(invocation) 560: 549(ptr) AccessChain 34(data) 59 541 561: 26(i64vec4) Load 560 562:559(i64vec3) VectorShuffle 561 561 0 1 2 563:559(i64vec3) GroupNonUniformQuadBroadcast 43 562 42 564: 542(ptr) AccessChain 34(data) 558 541 38 565: 25(int64_t) CompositeExtract 563 0 Store 564 565 566: 542(ptr) AccessChain 34(data) 558 541 42 567: 25(int64_t) CompositeExtract 563 1 Store 566 567 568: 542(ptr) AccessChain 34(data) 558 541 69 569: 25(int64_t) CompositeExtract 563 2 Store 568 569 570: 6(int) Load 8(invocation) 571: 549(ptr) AccessChain 34(data) 73 541 572: 26(i64vec4) Load 571 573: 26(i64vec4) GroupNonUniformQuadBroadcast 43 572 42 574: 549(ptr) AccessChain 34(data) 570 541 Store 574 573 575: 6(int) Load 8(invocation) 576: 542(ptr) AccessChain 34(data) 37 541 38 577: 25(int64_t) Load 576 578: 25(int64_t) GroupNonUniformQuadSwap 43 577 38 579: 542(ptr) AccessChain 34(data) 575 541 38 Store 579 578 580: 6(int) Load 8(invocation) 581: 549(ptr) AccessChain 34(data) 47 541 582: 26(i64vec4) Load 581 583:548(i64vec2) VectorShuffle 582 582 0 1 584:548(i64vec2) GroupNonUniformQuadSwap 43 583 38 585: 542(ptr) AccessChain 34(data) 580 541 38 586: 25(int64_t) CompositeExtract 584 0 Store 585 586 587: 542(ptr) AccessChain 34(data) 580 541 42 588: 25(int64_t) CompositeExtract 584 1 Store 587 588 589: 6(int) Load 8(invocation) 590: 549(ptr) AccessChain 34(data) 59 541 591: 26(i64vec4) Load 590 592:559(i64vec3) VectorShuffle 591 591 0 1 2 593:559(i64vec3) GroupNonUniformQuadSwap 43 592 38 594: 542(ptr) AccessChain 34(data) 589 541 38 595: 25(int64_t) CompositeExtract 593 0 Store 594 595 596: 542(ptr) AccessChain 34(data) 589 541 42 597: 25(int64_t) CompositeExtract 593 1 Store 596 597 598: 542(ptr) AccessChain 34(data) 589 541 69 599: 25(int64_t) CompositeExtract 593 2 Store 598 599 600: 6(int) Load 8(invocation) 601: 549(ptr) AccessChain 34(data) 73 541 602: 26(i64vec4) Load 601 603: 26(i64vec4) GroupNonUniformQuadSwap 43 602 38 604: 549(ptr) AccessChain 34(data) 600 541 Store 604 603 605: 6(int) Load 8(invocation) 606: 542(ptr) AccessChain 34(data) 37 541 38 607: 25(int64_t) Load 606 608: 25(int64_t) GroupNonUniformQuadSwap 43 607 42 609: 542(ptr) AccessChain 34(data) 605 541 38 Store 609 608 610: 6(int) Load 8(invocation) 611: 549(ptr) AccessChain 34(data) 47 541 612: 26(i64vec4) Load 611 613:548(i64vec2) VectorShuffle 612 612 0 1 614:548(i64vec2) GroupNonUniformQuadSwap 43 613 42 615: 542(ptr) AccessChain 34(data) 610 541 38 616: 25(int64_t) CompositeExtract 614 0 Store 615 616 617: 542(ptr) AccessChain 34(data) 610 541 42 618: 25(int64_t) CompositeExtract 614 1 Store 617 618 619: 6(int) Load 8(invocation) 620: 549(ptr) AccessChain 34(data) 59 541 621: 26(i64vec4) Load 620 622:559(i64vec3) VectorShuffle 621 621 0 1 2 623:559(i64vec3) GroupNonUniformQuadSwap 43 622 42 624: 542(ptr) AccessChain 34(data) 619 541 38 625: 25(int64_t) CompositeExtract 623 0 Store 624 625 626: 542(ptr) AccessChain 34(data) 619 541 42 627: 25(int64_t) CompositeExtract 623 1 Store 626 627 628: 542(ptr) AccessChain 34(data) 619 541 69 629: 25(int64_t) CompositeExtract 623 2 Store 628 629 630: 6(int) Load 8(invocation) 631: 549(ptr) AccessChain 34(data) 73 541 632: 26(i64vec4) Load 631 633: 26(i64vec4) GroupNonUniformQuadSwap 43 632 42 634: 549(ptr) AccessChain 34(data) 630 541 Store 634 633 635: 6(int) Load 8(invocation) 636: 542(ptr) AccessChain 34(data) 37 541 38 637: 25(int64_t) Load 636 638: 25(int64_t) GroupNonUniformQuadSwap 43 637 69 639: 542(ptr) AccessChain 34(data) 635 541 38 Store 639 638 640: 6(int) Load 8(invocation) 641: 549(ptr) AccessChain 34(data) 47 541 642: 26(i64vec4) Load 641 643:548(i64vec2) VectorShuffle 642 642 0 1 644:548(i64vec2) GroupNonUniformQuadSwap 43 643 69 645: 542(ptr) AccessChain 34(data) 640 541 38 646: 25(int64_t) CompositeExtract 644 0 Store 645 646 647: 542(ptr) AccessChain 34(data) 640 541 42 648: 25(int64_t) CompositeExtract 644 1 Store 647 648 649: 6(int) Load 8(invocation) 650: 549(ptr) AccessChain 34(data) 59 541 651: 26(i64vec4) Load 650 652:559(i64vec3) VectorShuffle 651 651 0 1 2 653:559(i64vec3) GroupNonUniformQuadSwap 43 652 69 654: 542(ptr) AccessChain 34(data) 649 541 38 655: 25(int64_t) CompositeExtract 653 0 Store 654 655 656: 542(ptr) AccessChain 34(data) 649 541 42 657: 25(int64_t) CompositeExtract 653 1 Store 656 657 658: 542(ptr) AccessChain 34(data) 649 541 69 659: 25(int64_t) CompositeExtract 653 2 Store 658 659 660: 6(int) Load 8(invocation) 661: 549(ptr) AccessChain 34(data) 73 541 662: 26(i64vec4) Load 661 663: 26(i64vec4) GroupNonUniformQuadSwap 43 662 69 664: 549(ptr) AccessChain 34(data) 660 541 Store 664 663 665: 6(int) Load 8(invocation) 668: 667(ptr) AccessChain 34(data) 37 666 38 669: 27(int64_t) Load 668 670: 27(int64_t) GroupNonUniformQuadBroadcast 43 669 42 671: 667(ptr) AccessChain 34(data) 665 666 38 Store 671 670 672: 6(int) Load 8(invocation) 675: 674(ptr) AccessChain 34(data) 47 666 676: 28(i64vec4) Load 675 677:673(i64vec2) VectorShuffle 676 676 0 1 678:673(i64vec2) GroupNonUniformQuadBroadcast 43 677 42 679: 667(ptr) AccessChain 34(data) 672 666 38 680: 27(int64_t) CompositeExtract 678 0 Store 679 680 681: 667(ptr) AccessChain 34(data) 672 666 42 682: 27(int64_t) CompositeExtract 678 1 Store 681 682 683: 6(int) Load 8(invocation) 685: 674(ptr) AccessChain 34(data) 59 666 686: 28(i64vec4) Load 685 687:684(i64vec3) VectorShuffle 686 686 0 1 2 688:684(i64vec3) GroupNonUniformQuadBroadcast 43 687 42 689: 667(ptr) AccessChain 34(data) 683 666 38 690: 27(int64_t) CompositeExtract 688 0 Store 689 690 691: 667(ptr) AccessChain 34(data) 683 666 42 692: 27(int64_t) CompositeExtract 688 1 Store 691 692 693: 667(ptr) AccessChain 34(data) 683 666 69 694: 27(int64_t) CompositeExtract 688 2 Store 693 694 695: 6(int) Load 8(invocation) 696: 674(ptr) AccessChain 34(data) 73 666 697: 28(i64vec4) Load 696 698: 28(i64vec4) GroupNonUniformQuadBroadcast 43 697 42 699: 674(ptr) AccessChain 34(data) 695 666 Store 699 698 700: 6(int) Load 8(invocation) 701: 667(ptr) AccessChain 34(data) 37 666 38 702: 27(int64_t) Load 701 703: 27(int64_t) GroupNonUniformQuadSwap 43 702 38 704: 667(ptr) AccessChain 34(data) 700 666 38 Store 704 703 705: 6(int) Load 8(invocation) 706: 674(ptr) AccessChain 34(data) 47 666 707: 28(i64vec4) Load 706 708:673(i64vec2) VectorShuffle 707 707 0 1 709:673(i64vec2) GroupNonUniformQuadSwap 43 708 38 710: 667(ptr) AccessChain 34(data) 705 666 38 711: 27(int64_t) CompositeExtract 709 0 Store 710 711 712: 667(ptr) AccessChain 34(data) 705 666 42 713: 27(int64_t) CompositeExtract 709 1 Store 712 713 714: 6(int) Load 8(invocation) 715: 674(ptr) AccessChain 34(data) 59 666 716: 28(i64vec4) Load 715 717:684(i64vec3) VectorShuffle 716 716 0 1 2 718:684(i64vec3) GroupNonUniformQuadSwap 43 717 38 719: 667(ptr) AccessChain 34(data) 714 666 38 720: 27(int64_t) CompositeExtract 718 0 Store 719 720 721: 667(ptr) AccessChain 34(data) 714 666 42 722: 27(int64_t) CompositeExtract 718 1 Store 721 722 723: 667(ptr) AccessChain 34(data) 714 666 69 724: 27(int64_t) CompositeExtract 718 2 Store 723 724 725: 6(int) Load 8(invocation) 726: 674(ptr) AccessChain 34(data) 73 666 727: 28(i64vec4) Load 726 728: 28(i64vec4) GroupNonUniformQuadSwap 43 727 38 729: 674(ptr) AccessChain 34(data) 725 666 Store 729 728 730: 6(int) Load 8(invocation) 731: 667(ptr) AccessChain 34(data) 37 666 38 732: 27(int64_t) Load 731 733: 27(int64_t) GroupNonUniformQuadSwap 43 732 42 734: 667(ptr) AccessChain 34(data) 730 666 38 Store 734 733 735: 6(int) Load 8(invocation) 736: 674(ptr) AccessChain 34(data) 47 666 737: 28(i64vec4) Load 736 738:673(i64vec2) VectorShuffle 737 737 0 1 739:673(i64vec2) GroupNonUniformQuadSwap 43 738 42 740: 667(ptr) AccessChain 34(data) 735 666 38 741: 27(int64_t) CompositeExtract 739 0 Store 740 741 742: 667(ptr) AccessChain 34(data) 735 666 42 743: 27(int64_t) CompositeExtract 739 1 Store 742 743 744: 6(int) Load 8(invocation) 745: 674(ptr) AccessChain 34(data) 59 666 746: 28(i64vec4) Load 745 747:684(i64vec3) VectorShuffle 746 746 0 1 2 748:684(i64vec3) GroupNonUniformQuadSwap 43 747 42 749: 667(ptr) AccessChain 34(data) 744 666 38 750: 27(int64_t) CompositeExtract 748 0 Store 749 750 751: 667(ptr) AccessChain 34(data) 744 666 42 752: 27(int64_t) CompositeExtract 748 1 Store 751 752 753: 667(ptr) AccessChain 34(data) 744 666 69 754: 27(int64_t) CompositeExtract 748 2 Store 753 754 755: 6(int) Load 8(invocation) 756: 674(ptr) AccessChain 34(data) 73 666 757: 28(i64vec4) Load 756 758: 28(i64vec4) GroupNonUniformQuadSwap 43 757 42 759: 674(ptr) AccessChain 34(data) 755 666 Store 759 758 760: 6(int) Load 8(invocation) 761: 667(ptr) AccessChain 34(data) 37 666 38 762: 27(int64_t) Load 761 763: 27(int64_t) GroupNonUniformQuadSwap 43 762 69 764: 667(ptr) AccessChain 34(data) 760 666 38 Store 764 763 765: 6(int) Load 8(invocation) 766: 674(ptr) AccessChain 34(data) 47 666 767: 28(i64vec4) Load 766 768:673(i64vec2) VectorShuffle 767 767 0 1 769:673(i64vec2) GroupNonUniformQuadSwap 43 768 69 770: 667(ptr) AccessChain 34(data) 765 666 38 771: 27(int64_t) CompositeExtract 769 0 Store 770 771 772: 667(ptr) AccessChain 34(data) 765 666 42 773: 27(int64_t) CompositeExtract 769 1 Store 772 773 774: 6(int) Load 8(invocation) 775: 674(ptr) AccessChain 34(data) 59 666 776: 28(i64vec4) Load 775 777:684(i64vec3) VectorShuffle 776 776 0 1 2 778:684(i64vec3) GroupNonUniformQuadSwap 43 777 69 779: 667(ptr) AccessChain 34(data) 774 666 38 780: 27(int64_t) CompositeExtract 778 0 Store 779 780 781: 667(ptr) AccessChain 34(data) 774 666 42 782: 27(int64_t) CompositeExtract 778 1 Store 781 782 783: 667(ptr) AccessChain 34(data) 774 666 69 784: 27(int64_t) CompositeExtract 778 2 Store 783 784 785: 6(int) Load 8(invocation) 786: 674(ptr) AccessChain 34(data) 73 666 787: 28(i64vec4) Load 786 788: 28(i64vec4) GroupNonUniformQuadSwap 43 787 69 789: 674(ptr) AccessChain 34(data) 785 666 Store 789 788 790: 6(int) Load 8(invocation) 793: 792(ptr) AccessChain 34(data) 37 791 38 794:29(float16_t) Load 793 795:29(float16_t) GroupNonUniformQuadBroadcast 43 794 42 796: 792(ptr) AccessChain 34(data) 790 791 38 Store 796 795 797: 6(int) Load 8(invocation) 800: 799(ptr) AccessChain 34(data) 47 791 801: 30(f16vec4) Load 800 802:798(f16vec2) VectorShuffle 801 801 0 1 803:798(f16vec2) GroupNonUniformQuadBroadcast 43 802 42 804: 792(ptr) AccessChain 34(data) 797 791 38 805:29(float16_t) CompositeExtract 803 0 Store 804 805 806: 792(ptr) AccessChain 34(data) 797 791 42 807:29(float16_t) CompositeExtract 803 1 Store 806 807 808: 6(int) Load 8(invocation) 810: 799(ptr) AccessChain 34(data) 59 791 811: 30(f16vec4) Load 810 812:809(f16vec3) VectorShuffle 811 811 0 1 2 813:809(f16vec3) GroupNonUniformQuadBroadcast 43 812 42 814: 792(ptr) AccessChain 34(data) 808 791 38 815:29(float16_t) CompositeExtract 813 0 Store 814 815 816: 792(ptr) AccessChain 34(data) 808 791 42 817:29(float16_t) CompositeExtract 813 1 Store 816 817 818: 792(ptr) AccessChain 34(data) 808 791 69 819:29(float16_t) CompositeExtract 813 2 Store 818 819 820: 6(int) Load 8(invocation) 821: 799(ptr) AccessChain 34(data) 73 791 822: 30(f16vec4) Load 821 823: 30(f16vec4) GroupNonUniformQuadBroadcast 43 822 42 824: 799(ptr) AccessChain 34(data) 820 791 Store 824 823 825: 6(int) Load 8(invocation) 826: 792(ptr) AccessChain 34(data) 37 791 38 827:29(float16_t) Load 826 828:29(float16_t) GroupNonUniformQuadSwap 43 827 38 829: 792(ptr) AccessChain 34(data) 825 791 38 Store 829 828 830: 6(int) Load 8(invocation) 831: 799(ptr) AccessChain 34(data) 47 791 832: 30(f16vec4) Load 831 833:798(f16vec2) VectorShuffle 832 832 0 1 834:798(f16vec2) GroupNonUniformQuadSwap 43 833 38 835: 792(ptr) AccessChain 34(data) 830 791 38 836:29(float16_t) CompositeExtract 834 0 Store 835 836 837: 792(ptr) AccessChain 34(data) 830 791 42 838:29(float16_t) CompositeExtract 834 1 Store 837 838 839: 6(int) Load 8(invocation) 840: 799(ptr) AccessChain 34(data) 59 791 841: 30(f16vec4) Load 840 842:809(f16vec3) VectorShuffle 841 841 0 1 2 843:809(f16vec3) GroupNonUniformQuadSwap 43 842 38 844: 792(ptr) AccessChain 34(data) 839 791 38 845:29(float16_t) CompositeExtract 843 0 Store 844 845 846: 792(ptr) AccessChain 34(data) 839 791 42 847:29(float16_t) CompositeExtract 843 1 Store 846 847 848: 792(ptr) AccessChain 34(data) 839 791 69 849:29(float16_t) CompositeExtract 843 2 Store 848 849 850: 6(int) Load 8(invocation) 851: 799(ptr) AccessChain 34(data) 73 791 852: 30(f16vec4) Load 851 853: 30(f16vec4) GroupNonUniformQuadSwap 43 852 38 854: 799(ptr) AccessChain 34(data) 850 791 Store 854 853 855: 6(int) Load 8(invocation) 856: 792(ptr) AccessChain 34(data) 37 791 38 857:29(float16_t) Load 856 858:29(float16_t) GroupNonUniformQuadSwap 43 857 42 859: 792(ptr) AccessChain 34(data) 855 791 38 Store 859 858 860: 6(int) Load 8(invocation) 861: 799(ptr) AccessChain 34(data) 47 791 862: 30(f16vec4) Load 861 863:798(f16vec2) VectorShuffle 862 862 0 1 864:798(f16vec2) GroupNonUniformQuadSwap 43 863 42 865: 792(ptr) AccessChain 34(data) 860 791 38 866:29(float16_t) CompositeExtract 864 0 Store 865 866 867: 792(ptr) AccessChain 34(data) 860 791 42 868:29(float16_t) CompositeExtract 864 1 Store 867 868 869: 6(int) Load 8(invocation) 870: 799(ptr) AccessChain 34(data) 59 791 871: 30(f16vec4) Load 870 872:809(f16vec3) VectorShuffle 871 871 0 1 2 873:809(f16vec3) GroupNonUniformQuadSwap 43 872 42 874: 792(ptr) AccessChain 34(data) 869 791 38 875:29(float16_t) CompositeExtract 873 0 Store 874 875 876: 792(ptr) AccessChain 34(data) 869 791 42 877:29(float16_t) CompositeExtract 873 1 Store 876 877 878: 792(ptr) AccessChain 34(data) 869 791 69 879:29(float16_t) CompositeExtract 873 2 Store 878 879 880: 6(int) Load 8(invocation) 881: 799(ptr) AccessChain 34(data) 73 791 882: 30(f16vec4) Load 881 883: 30(f16vec4) GroupNonUniformQuadSwap 43 882 42 884: 799(ptr) AccessChain 34(data) 880 791 Store 884 883 885: 6(int) Load 8(invocation) 886: 792(ptr) AccessChain 34(data) 37 791 38 887:29(float16_t) Load 886 888:29(float16_t) GroupNonUniformQuadSwap 43 887 69 889: 792(ptr) AccessChain 34(data) 885 791 38 Store 889 888 890: 6(int) Load 8(invocation) 891: 799(ptr) AccessChain 34(data) 47 791 892: 30(f16vec4) Load 891 893:798(f16vec2) VectorShuffle 892 892 0 1 894:798(f16vec2) GroupNonUniformQuadSwap 43 893 69 895: 792(ptr) AccessChain 34(data) 890 791 38 896:29(float16_t) CompositeExtract 894 0 Store 895 896 897: 792(ptr) AccessChain 34(data) 890 791 42 898:29(float16_t) CompositeExtract 894 1 Store 897 898 899: 6(int) Load 8(invocation) 900: 799(ptr) AccessChain 34(data) 59 791 901: 30(f16vec4) Load 900 902:809(f16vec3) VectorShuffle 901 901 0 1 2 903:809(f16vec3) GroupNonUniformQuadSwap 43 902 69 904: 792(ptr) AccessChain 34(data) 899 791 38 905:29(float16_t) CompositeExtract 903 0 Store 904 905 906: 792(ptr) AccessChain 34(data) 899 791 42 907:29(float16_t) CompositeExtract 903 1 Store 906 907 908: 792(ptr) AccessChain 34(data) 899 791 69 909:29(float16_t) CompositeExtract 903 2 Store 908 909 910: 6(int) Load 8(invocation) 911: 799(ptr) AccessChain 34(data) 73 791 912: 30(f16vec4) Load 911 913: 30(f16vec4) GroupNonUniformQuadSwap 43 912 69 914: 799(ptr) AccessChain 34(data) 910 791 Store 914 913 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out000066400000000000000000000354421506534232700265750ustar00rootroot00000000000000spv.subgroupExtendedTypesQuadNeg.comp ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:46: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:47: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:48: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:51: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:52: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:53: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:56: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:57: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:58: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:61: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:62: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:63: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:66: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:67: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:68: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:71: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:72: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:73: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:76: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:77: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:78: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:81: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:82: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:83: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:86: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:87: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:88: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:91: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:92: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:93: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:96: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:97: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:98: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:101: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:102: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:103: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:106: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:107: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:108: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:111: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:112: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:113: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:116: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:117: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:118: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:121: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:122: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:123: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:126: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:127: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:128: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:131: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:132: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:133: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:136: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:137: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:138: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:141: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:142: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:143: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:146: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:147: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:148: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:151: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:152: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:153: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:156: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:157: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:158: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:161: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:162: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:163: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 112 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out000066400000000000000000001112111506534232700264740ustar00rootroot00000000000000spv.subgroupExtendedTypesRotate.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 553 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Capability GroupNonUniformRotateKHR Extension "SPV_KHR_8bit_storage" Extension "SPV_KHR_subgroup_rotate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_rotate" Name 4 "main" Name 8 "delta" Name 9 "roblock" MemberName 9(roblock) 0 "delta" Name 11 "ro" Name 31 "Buffers" MemberName 31(Buffers) 0 "i8" MemberName 31(Buffers) 1 "u8" MemberName 31(Buffers) 2 "i16" MemberName 31(Buffers) 3 "u16" MemberName 31(Buffers) 4 "i64" MemberName 31(Buffers) 5 "u64" MemberName 31(Buffers) 6 "f16" Name 35 "data" Decorate 9(roblock) Block MemberDecorate 9(roblock) 0 NonWritable MemberDecorate 9(roblock) 0 Offset 0 Decorate 11(ro) NonWritable Decorate 11(ro) Binding 1 Decorate 11(ro) DescriptorSet 0 Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 MemberDecorate 31(Buffers) 3 Offset 16 MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 Decorate 35(data) Binding 0 Decorate 35(data) DescriptorSet 0 Decorate 552 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9(roblock): TypeStruct 6(int) 10: TypePointer StorageBuffer 9(roblock) 11(ro): 10(ptr) Variable StorageBuffer 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypePointer StorageBuffer 6(int) 17: TypeInt 8 1 18: TypeVector 17(int8_t) 4 19: TypeInt 8 0 20: TypeVector 19(int8_t) 4 21: TypeInt 16 1 22: TypeVector 21(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 4 25: TypeInt 64 1 26: TypeVector 25(int64_t) 4 27: TypeInt 64 0 28: TypeVector 27(int64_t) 4 29: TypeFloat 16 30: TypeVector 29(float16_t) 4 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 32: 6(int) Constant 4 33: TypeArray 31(Buffers) 32 34: TypePointer StorageBuffer 33 35(data): 34(ptr) Variable StorageBuffer 37: 6(int) Constant 0 38: TypePointer StorageBuffer 17(int8_t) 42: 6(int) Constant 3 46: 12(int) Constant 1 47: TypeVector 17(int8_t) 2 48: TypePointer StorageBuffer 18(i8vec4) 56: 6(int) Constant 1 60: 12(int) Constant 2 61: TypeVector 17(int8_t) 3 71: 6(int) Constant 2 75: 12(int) Constant 3 116: TypePointer StorageBuffer 19(int8_t) 123: TypeVector 19(int8_t) 2 124: TypePointer StorageBuffer 20(i8vec4) 135: TypeVector 19(int8_t) 3 188: TypePointer StorageBuffer 21(int16_t) 195: TypeVector 21(int16_t) 2 196: TypePointer StorageBuffer 22(i16vec4) 207: TypeVector 21(int16_t) 3 260: TypePointer StorageBuffer 23(int16_t) 267: TypeVector 23(int16_t) 2 268: TypePointer StorageBuffer 24(i16vec4) 279: TypeVector 23(int16_t) 3 332: 12(int) Constant 4 333: TypePointer StorageBuffer 25(int64_t) 340: TypeVector 25(int64_t) 2 341: TypePointer StorageBuffer 26(i64vec4) 352: TypeVector 25(int64_t) 3 405: 12(int) Constant 5 406: TypePointer StorageBuffer 27(int64_t) 413: TypeVector 27(int64_t) 2 414: TypePointer StorageBuffer 28(i64vec4) 425: TypeVector 27(int64_t) 3 478: 12(int) Constant 6 479: TypePointer StorageBuffer 29(float16_t) 486: TypeVector 29(float16_t) 2 487: TypePointer StorageBuffer 30(f16vec4) 498: TypeVector 29(float16_t) 3 550: TypeVector 6(int) 3 551: 6(int) Constant 8 552: 550(ivec3) ConstantComposite 551 56 56 4(main): 2 Function None 3 5: Label 8(delta): 7(ptr) Variable Function 15: 14(ptr) AccessChain 11(ro) 13 16: 6(int) Load 15 Store 8(delta) 16 36: 6(int) Load 8(delta) 39: 38(ptr) AccessChain 35(data) 13 13 37 40: 17(int8_t) Load 39 41: 6(int) Load 8(delta) 43: 17(int8_t) GroupNonUniformRotateKHR 42 40 41 44: 38(ptr) AccessChain 35(data) 36 13 37 Store 44 43 45: 6(int) Load 8(delta) 49: 48(ptr) AccessChain 35(data) 46 13 50: 18(i8vec4) Load 49 51: 47(i8vec2) VectorShuffle 50 50 0 1 52: 6(int) Load 8(delta) 53: 47(i8vec2) GroupNonUniformRotateKHR 42 51 52 54: 38(ptr) AccessChain 35(data) 45 13 37 55: 17(int8_t) CompositeExtract 53 0 Store 54 55 57: 38(ptr) AccessChain 35(data) 45 13 56 58: 17(int8_t) CompositeExtract 53 1 Store 57 58 59: 6(int) Load 8(delta) 62: 48(ptr) AccessChain 35(data) 60 13 63: 18(i8vec4) Load 62 64: 61(i8vec3) VectorShuffle 63 63 0 1 2 65: 6(int) Load 8(delta) 66: 61(i8vec3) GroupNonUniformRotateKHR 42 64 65 67: 38(ptr) AccessChain 35(data) 59 13 37 68: 17(int8_t) CompositeExtract 66 0 Store 67 68 69: 38(ptr) AccessChain 35(data) 59 13 56 70: 17(int8_t) CompositeExtract 66 1 Store 69 70 72: 38(ptr) AccessChain 35(data) 59 13 71 73: 17(int8_t) CompositeExtract 66 2 Store 72 73 74: 6(int) Load 8(delta) 76: 48(ptr) AccessChain 35(data) 75 13 77: 18(i8vec4) Load 76 78: 6(int) Load 8(delta) 79: 18(i8vec4) GroupNonUniformRotateKHR 42 77 78 80: 48(ptr) AccessChain 35(data) 74 13 Store 80 79 81: 6(int) Load 8(delta) 82: 38(ptr) AccessChain 35(data) 13 13 37 83: 17(int8_t) Load 82 84: 6(int) Load 8(delta) 85: 17(int8_t) GroupNonUniformRotateKHR 42 83 84 56 86: 38(ptr) AccessChain 35(data) 81 13 37 Store 86 85 87: 6(int) Load 8(delta) 88: 48(ptr) AccessChain 35(data) 46 13 89: 18(i8vec4) Load 88 90: 47(i8vec2) VectorShuffle 89 89 0 1 91: 6(int) Load 8(delta) 92: 47(i8vec2) GroupNonUniformRotateKHR 42 90 91 56 93: 38(ptr) AccessChain 35(data) 87 13 37 94: 17(int8_t) CompositeExtract 92 0 Store 93 94 95: 38(ptr) AccessChain 35(data) 87 13 56 96: 17(int8_t) CompositeExtract 92 1 Store 95 96 97: 6(int) Load 8(delta) 98: 48(ptr) AccessChain 35(data) 60 13 99: 18(i8vec4) Load 98 100: 61(i8vec3) VectorShuffle 99 99 0 1 2 101: 6(int) Load 8(delta) 102: 61(i8vec3) GroupNonUniformRotateKHR 42 100 101 56 103: 38(ptr) AccessChain 35(data) 97 13 37 104: 17(int8_t) CompositeExtract 102 0 Store 103 104 105: 38(ptr) AccessChain 35(data) 97 13 56 106: 17(int8_t) CompositeExtract 102 1 Store 105 106 107: 38(ptr) AccessChain 35(data) 97 13 71 108: 17(int8_t) CompositeExtract 102 2 Store 107 108 109: 6(int) Load 8(delta) 110: 48(ptr) AccessChain 35(data) 75 13 111: 18(i8vec4) Load 110 112: 6(int) Load 8(delta) 113: 18(i8vec4) GroupNonUniformRotateKHR 42 111 112 56 114: 48(ptr) AccessChain 35(data) 109 13 Store 114 113 115: 6(int) Load 8(delta) 117: 116(ptr) AccessChain 35(data) 13 46 37 118: 19(int8_t) Load 117 119: 6(int) Load 8(delta) 120: 19(int8_t) GroupNonUniformRotateKHR 42 118 119 121: 116(ptr) AccessChain 35(data) 115 46 37 Store 121 120 122: 6(int) Load 8(delta) 125: 124(ptr) AccessChain 35(data) 46 46 126: 20(i8vec4) Load 125 127: 123(i8vec2) VectorShuffle 126 126 0 1 128: 6(int) Load 8(delta) 129: 123(i8vec2) GroupNonUniformRotateKHR 42 127 128 130: 116(ptr) AccessChain 35(data) 122 46 37 131: 19(int8_t) CompositeExtract 129 0 Store 130 131 132: 116(ptr) AccessChain 35(data) 122 46 56 133: 19(int8_t) CompositeExtract 129 1 Store 132 133 134: 6(int) Load 8(delta) 136: 124(ptr) AccessChain 35(data) 60 46 137: 20(i8vec4) Load 136 138: 135(i8vec3) VectorShuffle 137 137 0 1 2 139: 6(int) Load 8(delta) 140: 135(i8vec3) GroupNonUniformRotateKHR 42 138 139 141: 116(ptr) AccessChain 35(data) 134 46 37 142: 19(int8_t) CompositeExtract 140 0 Store 141 142 143: 116(ptr) AccessChain 35(data) 134 46 56 144: 19(int8_t) CompositeExtract 140 1 Store 143 144 145: 116(ptr) AccessChain 35(data) 134 46 71 146: 19(int8_t) CompositeExtract 140 2 Store 145 146 147: 6(int) Load 8(delta) 148: 124(ptr) AccessChain 35(data) 75 46 149: 20(i8vec4) Load 148 150: 6(int) Load 8(delta) 151: 20(i8vec4) GroupNonUniformRotateKHR 42 149 150 152: 124(ptr) AccessChain 35(data) 147 46 Store 152 151 153: 6(int) Load 8(delta) 154: 116(ptr) AccessChain 35(data) 13 46 37 155: 19(int8_t) Load 154 156: 6(int) Load 8(delta) 157: 19(int8_t) GroupNonUniformRotateKHR 42 155 156 56 158: 116(ptr) AccessChain 35(data) 153 46 37 Store 158 157 159: 6(int) Load 8(delta) 160: 124(ptr) AccessChain 35(data) 46 46 161: 20(i8vec4) Load 160 162: 123(i8vec2) VectorShuffle 161 161 0 1 163: 6(int) Load 8(delta) 164: 123(i8vec2) GroupNonUniformRotateKHR 42 162 163 56 165: 116(ptr) AccessChain 35(data) 159 46 37 166: 19(int8_t) CompositeExtract 164 0 Store 165 166 167: 116(ptr) AccessChain 35(data) 159 46 56 168: 19(int8_t) CompositeExtract 164 1 Store 167 168 169: 6(int) Load 8(delta) 170: 124(ptr) AccessChain 35(data) 60 46 171: 20(i8vec4) Load 170 172: 135(i8vec3) VectorShuffle 171 171 0 1 2 173: 6(int) Load 8(delta) 174: 135(i8vec3) GroupNonUniformRotateKHR 42 172 173 56 175: 116(ptr) AccessChain 35(data) 169 46 37 176: 19(int8_t) CompositeExtract 174 0 Store 175 176 177: 116(ptr) AccessChain 35(data) 169 46 56 178: 19(int8_t) CompositeExtract 174 1 Store 177 178 179: 116(ptr) AccessChain 35(data) 169 46 71 180: 19(int8_t) CompositeExtract 174 2 Store 179 180 181: 6(int) Load 8(delta) 182: 124(ptr) AccessChain 35(data) 75 46 183: 20(i8vec4) Load 182 184: 6(int) Load 8(delta) 185: 20(i8vec4) GroupNonUniformRotateKHR 42 183 184 56 186: 124(ptr) AccessChain 35(data) 181 46 Store 186 185 187: 6(int) Load 8(delta) 189: 188(ptr) AccessChain 35(data) 13 60 37 190: 21(int16_t) Load 189 191: 6(int) Load 8(delta) 192: 21(int16_t) GroupNonUniformRotateKHR 42 190 191 193: 188(ptr) AccessChain 35(data) 187 60 37 Store 193 192 194: 6(int) Load 8(delta) 197: 196(ptr) AccessChain 35(data) 46 60 198: 22(i16vec4) Load 197 199:195(i16vec2) VectorShuffle 198 198 0 1 200: 6(int) Load 8(delta) 201:195(i16vec2) GroupNonUniformRotateKHR 42 199 200 202: 188(ptr) AccessChain 35(data) 194 60 37 203: 21(int16_t) CompositeExtract 201 0 Store 202 203 204: 188(ptr) AccessChain 35(data) 194 60 56 205: 21(int16_t) CompositeExtract 201 1 Store 204 205 206: 6(int) Load 8(delta) 208: 196(ptr) AccessChain 35(data) 60 60 209: 22(i16vec4) Load 208 210:207(i16vec3) VectorShuffle 209 209 0 1 2 211: 6(int) Load 8(delta) 212:207(i16vec3) GroupNonUniformRotateKHR 42 210 211 213: 188(ptr) AccessChain 35(data) 206 60 37 214: 21(int16_t) CompositeExtract 212 0 Store 213 214 215: 188(ptr) AccessChain 35(data) 206 60 56 216: 21(int16_t) CompositeExtract 212 1 Store 215 216 217: 188(ptr) AccessChain 35(data) 206 60 71 218: 21(int16_t) CompositeExtract 212 2 Store 217 218 219: 6(int) Load 8(delta) 220: 196(ptr) AccessChain 35(data) 75 60 221: 22(i16vec4) Load 220 222: 6(int) Load 8(delta) 223: 22(i16vec4) GroupNonUniformRotateKHR 42 221 222 224: 196(ptr) AccessChain 35(data) 219 60 Store 224 223 225: 6(int) Load 8(delta) 226: 188(ptr) AccessChain 35(data) 13 60 37 227: 21(int16_t) Load 226 228: 6(int) Load 8(delta) 229: 21(int16_t) GroupNonUniformRotateKHR 42 227 228 56 230: 188(ptr) AccessChain 35(data) 225 60 37 Store 230 229 231: 6(int) Load 8(delta) 232: 196(ptr) AccessChain 35(data) 46 60 233: 22(i16vec4) Load 232 234:195(i16vec2) VectorShuffle 233 233 0 1 235: 6(int) Load 8(delta) 236:195(i16vec2) GroupNonUniformRotateKHR 42 234 235 56 237: 188(ptr) AccessChain 35(data) 231 60 37 238: 21(int16_t) CompositeExtract 236 0 Store 237 238 239: 188(ptr) AccessChain 35(data) 231 60 56 240: 21(int16_t) CompositeExtract 236 1 Store 239 240 241: 6(int) Load 8(delta) 242: 196(ptr) AccessChain 35(data) 60 60 243: 22(i16vec4) Load 242 244:207(i16vec3) VectorShuffle 243 243 0 1 2 245: 6(int) Load 8(delta) 246:207(i16vec3) GroupNonUniformRotateKHR 42 244 245 56 247: 188(ptr) AccessChain 35(data) 241 60 37 248: 21(int16_t) CompositeExtract 246 0 Store 247 248 249: 188(ptr) AccessChain 35(data) 241 60 56 250: 21(int16_t) CompositeExtract 246 1 Store 249 250 251: 188(ptr) AccessChain 35(data) 241 60 71 252: 21(int16_t) CompositeExtract 246 2 Store 251 252 253: 6(int) Load 8(delta) 254: 196(ptr) AccessChain 35(data) 75 60 255: 22(i16vec4) Load 254 256: 6(int) Load 8(delta) 257: 22(i16vec4) GroupNonUniformRotateKHR 42 255 256 56 258: 196(ptr) AccessChain 35(data) 253 60 Store 258 257 259: 6(int) Load 8(delta) 261: 260(ptr) AccessChain 35(data) 13 75 37 262: 23(int16_t) Load 261 263: 6(int) Load 8(delta) 264: 23(int16_t) GroupNonUniformRotateKHR 42 262 263 265: 260(ptr) AccessChain 35(data) 259 75 37 Store 265 264 266: 6(int) Load 8(delta) 269: 268(ptr) AccessChain 35(data) 46 75 270: 24(i16vec4) Load 269 271:267(i16vec2) VectorShuffle 270 270 0 1 272: 6(int) Load 8(delta) 273:267(i16vec2) GroupNonUniformRotateKHR 42 271 272 274: 260(ptr) AccessChain 35(data) 266 75 37 275: 23(int16_t) CompositeExtract 273 0 Store 274 275 276: 260(ptr) AccessChain 35(data) 266 75 56 277: 23(int16_t) CompositeExtract 273 1 Store 276 277 278: 6(int) Load 8(delta) 280: 268(ptr) AccessChain 35(data) 60 75 281: 24(i16vec4) Load 280 282:279(i16vec3) VectorShuffle 281 281 0 1 2 283: 6(int) Load 8(delta) 284:279(i16vec3) GroupNonUniformRotateKHR 42 282 283 285: 260(ptr) AccessChain 35(data) 278 75 37 286: 23(int16_t) CompositeExtract 284 0 Store 285 286 287: 260(ptr) AccessChain 35(data) 278 75 56 288: 23(int16_t) CompositeExtract 284 1 Store 287 288 289: 260(ptr) AccessChain 35(data) 278 75 71 290: 23(int16_t) CompositeExtract 284 2 Store 289 290 291: 6(int) Load 8(delta) 292: 268(ptr) AccessChain 35(data) 75 75 293: 24(i16vec4) Load 292 294: 6(int) Load 8(delta) 295: 24(i16vec4) GroupNonUniformRotateKHR 42 293 294 296: 268(ptr) AccessChain 35(data) 291 75 Store 296 295 297: 6(int) Load 8(delta) 298: 260(ptr) AccessChain 35(data) 13 75 37 299: 23(int16_t) Load 298 300: 6(int) Load 8(delta) 301: 23(int16_t) GroupNonUniformRotateKHR 42 299 300 56 302: 260(ptr) AccessChain 35(data) 297 75 37 Store 302 301 303: 6(int) Load 8(delta) 304: 268(ptr) AccessChain 35(data) 46 75 305: 24(i16vec4) Load 304 306:267(i16vec2) VectorShuffle 305 305 0 1 307: 6(int) Load 8(delta) 308:267(i16vec2) GroupNonUniformRotateKHR 42 306 307 56 309: 260(ptr) AccessChain 35(data) 303 75 37 310: 23(int16_t) CompositeExtract 308 0 Store 309 310 311: 260(ptr) AccessChain 35(data) 303 75 56 312: 23(int16_t) CompositeExtract 308 1 Store 311 312 313: 6(int) Load 8(delta) 314: 268(ptr) AccessChain 35(data) 60 75 315: 24(i16vec4) Load 314 316:279(i16vec3) VectorShuffle 315 315 0 1 2 317: 6(int) Load 8(delta) 318:279(i16vec3) GroupNonUniformRotateKHR 42 316 317 56 319: 260(ptr) AccessChain 35(data) 313 75 37 320: 23(int16_t) CompositeExtract 318 0 Store 319 320 321: 260(ptr) AccessChain 35(data) 313 75 56 322: 23(int16_t) CompositeExtract 318 1 Store 321 322 323: 260(ptr) AccessChain 35(data) 313 75 71 324: 23(int16_t) CompositeExtract 318 2 Store 323 324 325: 6(int) Load 8(delta) 326: 268(ptr) AccessChain 35(data) 75 75 327: 24(i16vec4) Load 326 328: 6(int) Load 8(delta) 329: 24(i16vec4) GroupNonUniformRotateKHR 42 327 328 56 330: 268(ptr) AccessChain 35(data) 325 75 Store 330 329 331: 6(int) Load 8(delta) 334: 333(ptr) AccessChain 35(data) 13 332 37 335: 25(int64_t) Load 334 336: 6(int) Load 8(delta) 337: 25(int64_t) GroupNonUniformRotateKHR 42 335 336 338: 333(ptr) AccessChain 35(data) 331 332 37 Store 338 337 339: 6(int) Load 8(delta) 342: 341(ptr) AccessChain 35(data) 46 332 343: 26(i64vec4) Load 342 344:340(i64vec2) VectorShuffle 343 343 0 1 345: 6(int) Load 8(delta) 346:340(i64vec2) GroupNonUniformRotateKHR 42 344 345 347: 333(ptr) AccessChain 35(data) 339 332 37 348: 25(int64_t) CompositeExtract 346 0 Store 347 348 349: 333(ptr) AccessChain 35(data) 339 332 56 350: 25(int64_t) CompositeExtract 346 1 Store 349 350 351: 6(int) Load 8(delta) 353: 341(ptr) AccessChain 35(data) 60 332 354: 26(i64vec4) Load 353 355:352(i64vec3) VectorShuffle 354 354 0 1 2 356: 6(int) Load 8(delta) 357:352(i64vec3) GroupNonUniformRotateKHR 42 355 356 358: 333(ptr) AccessChain 35(data) 351 332 37 359: 25(int64_t) CompositeExtract 357 0 Store 358 359 360: 333(ptr) AccessChain 35(data) 351 332 56 361: 25(int64_t) CompositeExtract 357 1 Store 360 361 362: 333(ptr) AccessChain 35(data) 351 332 71 363: 25(int64_t) CompositeExtract 357 2 Store 362 363 364: 6(int) Load 8(delta) 365: 341(ptr) AccessChain 35(data) 75 332 366: 26(i64vec4) Load 365 367: 6(int) Load 8(delta) 368: 26(i64vec4) GroupNonUniformRotateKHR 42 366 367 369: 341(ptr) AccessChain 35(data) 364 332 Store 369 368 370: 6(int) Load 8(delta) 371: 333(ptr) AccessChain 35(data) 13 332 37 372: 25(int64_t) Load 371 373: 6(int) Load 8(delta) 374: 25(int64_t) GroupNonUniformRotateKHR 42 372 373 56 375: 333(ptr) AccessChain 35(data) 370 332 37 Store 375 374 376: 6(int) Load 8(delta) 377: 341(ptr) AccessChain 35(data) 46 332 378: 26(i64vec4) Load 377 379:340(i64vec2) VectorShuffle 378 378 0 1 380: 6(int) Load 8(delta) 381:340(i64vec2) GroupNonUniformRotateKHR 42 379 380 56 382: 333(ptr) AccessChain 35(data) 376 332 37 383: 25(int64_t) CompositeExtract 381 0 Store 382 383 384: 333(ptr) AccessChain 35(data) 376 332 56 385: 25(int64_t) CompositeExtract 381 1 Store 384 385 386: 6(int) Load 8(delta) 387: 341(ptr) AccessChain 35(data) 60 332 388: 26(i64vec4) Load 387 389:352(i64vec3) VectorShuffle 388 388 0 1 2 390: 6(int) Load 8(delta) 391:352(i64vec3) GroupNonUniformRotateKHR 42 389 390 56 392: 333(ptr) AccessChain 35(data) 386 332 37 393: 25(int64_t) CompositeExtract 391 0 Store 392 393 394: 333(ptr) AccessChain 35(data) 386 332 56 395: 25(int64_t) CompositeExtract 391 1 Store 394 395 396: 333(ptr) AccessChain 35(data) 386 332 71 397: 25(int64_t) CompositeExtract 391 2 Store 396 397 398: 6(int) Load 8(delta) 399: 341(ptr) AccessChain 35(data) 75 332 400: 26(i64vec4) Load 399 401: 6(int) Load 8(delta) 402: 26(i64vec4) GroupNonUniformRotateKHR 42 400 401 56 403: 341(ptr) AccessChain 35(data) 398 332 Store 403 402 404: 6(int) Load 8(delta) 407: 406(ptr) AccessChain 35(data) 13 405 37 408: 27(int64_t) Load 407 409: 6(int) Load 8(delta) 410: 27(int64_t) GroupNonUniformRotateKHR 42 408 409 411: 406(ptr) AccessChain 35(data) 404 405 37 Store 411 410 412: 6(int) Load 8(delta) 415: 414(ptr) AccessChain 35(data) 46 405 416: 28(i64vec4) Load 415 417:413(i64vec2) VectorShuffle 416 416 0 1 418: 6(int) Load 8(delta) 419:413(i64vec2) GroupNonUniformRotateKHR 42 417 418 420: 406(ptr) AccessChain 35(data) 412 405 37 421: 27(int64_t) CompositeExtract 419 0 Store 420 421 422: 406(ptr) AccessChain 35(data) 412 405 56 423: 27(int64_t) CompositeExtract 419 1 Store 422 423 424: 6(int) Load 8(delta) 426: 414(ptr) AccessChain 35(data) 60 405 427: 28(i64vec4) Load 426 428:425(i64vec3) VectorShuffle 427 427 0 1 2 429: 6(int) Load 8(delta) 430:425(i64vec3) GroupNonUniformRotateKHR 42 428 429 431: 406(ptr) AccessChain 35(data) 424 405 37 432: 27(int64_t) CompositeExtract 430 0 Store 431 432 433: 406(ptr) AccessChain 35(data) 424 405 56 434: 27(int64_t) CompositeExtract 430 1 Store 433 434 435: 406(ptr) AccessChain 35(data) 424 405 71 436: 27(int64_t) CompositeExtract 430 2 Store 435 436 437: 6(int) Load 8(delta) 438: 414(ptr) AccessChain 35(data) 75 405 439: 28(i64vec4) Load 438 440: 6(int) Load 8(delta) 441: 28(i64vec4) GroupNonUniformRotateKHR 42 439 440 442: 414(ptr) AccessChain 35(data) 437 405 Store 442 441 443: 6(int) Load 8(delta) 444: 406(ptr) AccessChain 35(data) 13 405 37 445: 27(int64_t) Load 444 446: 6(int) Load 8(delta) 447: 27(int64_t) GroupNonUniformRotateKHR 42 445 446 56 448: 406(ptr) AccessChain 35(data) 443 405 37 Store 448 447 449: 6(int) Load 8(delta) 450: 414(ptr) AccessChain 35(data) 46 405 451: 28(i64vec4) Load 450 452:413(i64vec2) VectorShuffle 451 451 0 1 453: 6(int) Load 8(delta) 454:413(i64vec2) GroupNonUniformRotateKHR 42 452 453 56 455: 406(ptr) AccessChain 35(data) 449 405 37 456: 27(int64_t) CompositeExtract 454 0 Store 455 456 457: 406(ptr) AccessChain 35(data) 449 405 56 458: 27(int64_t) CompositeExtract 454 1 Store 457 458 459: 6(int) Load 8(delta) 460: 414(ptr) AccessChain 35(data) 60 405 461: 28(i64vec4) Load 460 462:425(i64vec3) VectorShuffle 461 461 0 1 2 463: 6(int) Load 8(delta) 464:425(i64vec3) GroupNonUniformRotateKHR 42 462 463 56 465: 406(ptr) AccessChain 35(data) 459 405 37 466: 27(int64_t) CompositeExtract 464 0 Store 465 466 467: 406(ptr) AccessChain 35(data) 459 405 56 468: 27(int64_t) CompositeExtract 464 1 Store 467 468 469: 406(ptr) AccessChain 35(data) 459 405 71 470: 27(int64_t) CompositeExtract 464 2 Store 469 470 471: 6(int) Load 8(delta) 472: 414(ptr) AccessChain 35(data) 75 405 473: 28(i64vec4) Load 472 474: 6(int) Load 8(delta) 475: 28(i64vec4) GroupNonUniformRotateKHR 42 473 474 56 476: 414(ptr) AccessChain 35(data) 471 405 Store 476 475 477: 6(int) Load 8(delta) 480: 479(ptr) AccessChain 35(data) 13 478 37 481:29(float16_t) Load 480 482: 6(int) Load 8(delta) 483:29(float16_t) GroupNonUniformRotateKHR 42 481 482 484: 479(ptr) AccessChain 35(data) 477 478 37 Store 484 483 485: 6(int) Load 8(delta) 488: 487(ptr) AccessChain 35(data) 46 478 489: 30(f16vec4) Load 488 490:486(f16vec2) VectorShuffle 489 489 0 1 491: 6(int) Load 8(delta) 492:486(f16vec2) GroupNonUniformRotateKHR 42 490 491 493: 479(ptr) AccessChain 35(data) 485 478 37 494:29(float16_t) CompositeExtract 492 0 Store 493 494 495: 479(ptr) AccessChain 35(data) 485 478 56 496:29(float16_t) CompositeExtract 492 1 Store 495 496 497: 6(int) Load 8(delta) 499: 487(ptr) AccessChain 35(data) 60 478 500: 30(f16vec4) Load 499 501:498(f16vec3) VectorShuffle 500 500 0 1 2 502: 6(int) Load 8(delta) 503:498(f16vec3) GroupNonUniformRotateKHR 42 501 502 504: 479(ptr) AccessChain 35(data) 497 478 37 505:29(float16_t) CompositeExtract 503 0 Store 504 505 506: 479(ptr) AccessChain 35(data) 497 478 56 507:29(float16_t) CompositeExtract 503 1 Store 506 507 508: 479(ptr) AccessChain 35(data) 497 478 71 509:29(float16_t) CompositeExtract 503 2 Store 508 509 510: 6(int) Load 8(delta) 511: 487(ptr) AccessChain 35(data) 75 478 512: 30(f16vec4) Load 511 513: 6(int) Load 8(delta) 514: 30(f16vec4) GroupNonUniformRotateKHR 42 512 513 515: 487(ptr) AccessChain 35(data) 510 478 Store 515 514 516: 6(int) Load 8(delta) 517: 479(ptr) AccessChain 35(data) 13 478 37 518:29(float16_t) Load 517 519: 6(int) Load 8(delta) 520:29(float16_t) GroupNonUniformRotateKHR 42 518 519 56 521: 479(ptr) AccessChain 35(data) 516 478 37 Store 521 520 522: 6(int) Load 8(delta) 523: 487(ptr) AccessChain 35(data) 46 478 524: 30(f16vec4) Load 523 525:486(f16vec2) VectorShuffle 524 524 0 1 526: 6(int) Load 8(delta) 527:486(f16vec2) GroupNonUniformRotateKHR 42 525 526 56 528: 479(ptr) AccessChain 35(data) 522 478 37 529:29(float16_t) CompositeExtract 527 0 Store 528 529 530: 479(ptr) AccessChain 35(data) 522 478 56 531:29(float16_t) CompositeExtract 527 1 Store 530 531 532: 6(int) Load 8(delta) 533: 487(ptr) AccessChain 35(data) 60 478 534: 30(f16vec4) Load 533 535:498(f16vec3) VectorShuffle 534 534 0 1 2 536: 6(int) Load 8(delta) 537:498(f16vec3) GroupNonUniformRotateKHR 42 535 536 56 538: 479(ptr) AccessChain 35(data) 532 478 37 539:29(float16_t) CompositeExtract 537 0 Store 538 539 540: 479(ptr) AccessChain 35(data) 532 478 56 541:29(float16_t) CompositeExtract 537 1 Store 540 541 542: 479(ptr) AccessChain 35(data) 532 478 71 543:29(float16_t) CompositeExtract 537 2 Store 542 543 544: 6(int) Load 8(delta) 545: 487(ptr) AccessChain 35(data) 75 478 546: 30(f16vec4) Load 545 547: 6(int) Load 8(delta) 548: 30(f16vec4) GroupNonUniformRotateKHR 42 546 547 56 549: 487(ptr) AccessChain 35(data) 544 478 Store 549 548 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out000066400000000000000000000167571506534232700271510ustar00rootroot00000000000000spv.subgroupExtendedTypesRotateNeg.comp ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:46: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:47: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:48: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:56: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:57: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:58: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:66: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:67: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:68: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:76: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:77: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:78: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:86: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:87: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:88: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:96: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:97: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:98: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:99: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 56 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out000066400000000000000000001125641506534232700266460ustar00rootroot00000000000000spv.subgroupExtendedTypesShuffle.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 554 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability GroupNonUniform Capability GroupNonUniformShuffle Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_shuffle" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 31 "Buffers" MemberName 31(Buffers) 0 "i8" MemberName 31(Buffers) 1 "u8" MemberName 31(Buffers) 2 "i16" MemberName 31(Buffers) 3 "u16" MemberName 31(Buffers) 4 "i64" MemberName 31(Buffers) 5 "u64" MemberName 31(Buffers) 6 "f16" Name 34 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 MemberDecorate 31(Buffers) 3 Offset 16 MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 Decorate 34(data) Binding 0 Decorate 34(data) DescriptorSet 0 Decorate 553 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeInt 8 1 18: TypeVector 17(int8_t) 4 19: TypeInt 8 0 20: TypeVector 19(int8_t) 4 21: TypeInt 16 1 22: TypeVector 21(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 4 25: TypeInt 64 1 26: TypeVector 25(int64_t) 4 27: TypeInt 64 0 28: TypeVector 27(int64_t) 4 29: TypeFloat 16 30: TypeVector 29(float16_t) 4 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 32: TypeArray 31(Buffers) 15 33: TypePointer StorageBuffer 32 34(data): 33(ptr) Variable StorageBuffer 36: TypeInt 32 1 37: 36(int) Constant 0 38: 6(int) Constant 0 39: TypePointer StorageBuffer 17(int8_t) 43: 6(int) Constant 3 47: 36(int) Constant 1 48: TypeVector 17(int8_t) 2 49: TypePointer StorageBuffer 18(i8vec4) 57: 6(int) Constant 1 61: 36(int) Constant 2 62: TypeVector 17(int8_t) 3 72: 6(int) Constant 2 76: 36(int) Constant 3 117: TypePointer StorageBuffer 19(int8_t) 124: TypeVector 19(int8_t) 2 125: TypePointer StorageBuffer 20(i8vec4) 136: TypeVector 19(int8_t) 3 189: TypePointer StorageBuffer 21(int16_t) 196: TypeVector 21(int16_t) 2 197: TypePointer StorageBuffer 22(i16vec4) 208: TypeVector 21(int16_t) 3 261: TypePointer StorageBuffer 23(int16_t) 268: TypeVector 23(int16_t) 2 269: TypePointer StorageBuffer 24(i16vec4) 280: TypeVector 23(int16_t) 3 333: 36(int) Constant 4 334: TypePointer StorageBuffer 25(int64_t) 341: TypeVector 25(int64_t) 2 342: TypePointer StorageBuffer 26(i64vec4) 353: TypeVector 25(int64_t) 3 406: 36(int) Constant 5 407: TypePointer StorageBuffer 27(int64_t) 414: TypeVector 27(int64_t) 2 415: TypePointer StorageBuffer 28(i64vec4) 426: TypeVector 27(int64_t) 3 479: 36(int) Constant 6 480: TypePointer StorageBuffer 29(float16_t) 487: TypeVector 29(float16_t) 2 488: TypePointer StorageBuffer 30(f16vec4) 499: TypeVector 29(float16_t) 3 551: TypeVector 6(int) 3 552: 6(int) Constant 8 553: 551(ivec3) ConstantComposite 552 57 57 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 35: 6(int) Load 8(invocation) 40: 39(ptr) AccessChain 34(data) 37 37 38 41: 17(int8_t) Load 40 42: 6(int) Load 8(invocation) 44: 17(int8_t) GroupNonUniformShuffle 43 41 42 45: 39(ptr) AccessChain 34(data) 35 37 38 Store 45 44 46: 6(int) Load 8(invocation) 50: 49(ptr) AccessChain 34(data) 47 37 51: 18(i8vec4) Load 50 52: 48(i8vec2) VectorShuffle 51 51 0 1 53: 6(int) Load 8(invocation) 54: 48(i8vec2) GroupNonUniformShuffle 43 52 53 55: 39(ptr) AccessChain 34(data) 46 37 38 56: 17(int8_t) CompositeExtract 54 0 Store 55 56 58: 39(ptr) AccessChain 34(data) 46 37 57 59: 17(int8_t) CompositeExtract 54 1 Store 58 59 60: 6(int) Load 8(invocation) 63: 49(ptr) AccessChain 34(data) 61 37 64: 18(i8vec4) Load 63 65: 62(i8vec3) VectorShuffle 64 64 0 1 2 66: 6(int) Load 8(invocation) 67: 62(i8vec3) GroupNonUniformShuffle 43 65 66 68: 39(ptr) AccessChain 34(data) 60 37 38 69: 17(int8_t) CompositeExtract 67 0 Store 68 69 70: 39(ptr) AccessChain 34(data) 60 37 57 71: 17(int8_t) CompositeExtract 67 1 Store 70 71 73: 39(ptr) AccessChain 34(data) 60 37 72 74: 17(int8_t) CompositeExtract 67 2 Store 73 74 75: 6(int) Load 8(invocation) 77: 49(ptr) AccessChain 34(data) 76 37 78: 18(i8vec4) Load 77 79: 6(int) Load 8(invocation) 80: 18(i8vec4) GroupNonUniformShuffle 43 78 79 81: 49(ptr) AccessChain 34(data) 75 37 Store 81 80 82: 6(int) Load 8(invocation) 83: 39(ptr) AccessChain 34(data) 37 37 38 84: 17(int8_t) Load 83 85: 6(int) Load 8(invocation) 86: 17(int8_t) GroupNonUniformShuffleXor 43 84 85 87: 39(ptr) AccessChain 34(data) 82 37 38 Store 87 86 88: 6(int) Load 8(invocation) 89: 49(ptr) AccessChain 34(data) 47 37 90: 18(i8vec4) Load 89 91: 48(i8vec2) VectorShuffle 90 90 0 1 92: 6(int) Load 8(invocation) 93: 48(i8vec2) GroupNonUniformShuffleXor 43 91 92 94: 39(ptr) AccessChain 34(data) 88 37 38 95: 17(int8_t) CompositeExtract 93 0 Store 94 95 96: 39(ptr) AccessChain 34(data) 88 37 57 97: 17(int8_t) CompositeExtract 93 1 Store 96 97 98: 6(int) Load 8(invocation) 99: 49(ptr) AccessChain 34(data) 61 37 100: 18(i8vec4) Load 99 101: 62(i8vec3) VectorShuffle 100 100 0 1 2 102: 6(int) Load 8(invocation) 103: 62(i8vec3) GroupNonUniformShuffleXor 43 101 102 104: 39(ptr) AccessChain 34(data) 98 37 38 105: 17(int8_t) CompositeExtract 103 0 Store 104 105 106: 39(ptr) AccessChain 34(data) 98 37 57 107: 17(int8_t) CompositeExtract 103 1 Store 106 107 108: 39(ptr) AccessChain 34(data) 98 37 72 109: 17(int8_t) CompositeExtract 103 2 Store 108 109 110: 6(int) Load 8(invocation) 111: 49(ptr) AccessChain 34(data) 76 37 112: 18(i8vec4) Load 111 113: 6(int) Load 8(invocation) 114: 18(i8vec4) GroupNonUniformShuffleXor 43 112 113 115: 49(ptr) AccessChain 34(data) 110 37 Store 115 114 116: 6(int) Load 8(invocation) 118: 117(ptr) AccessChain 34(data) 37 47 38 119: 19(int8_t) Load 118 120: 6(int) Load 8(invocation) 121: 19(int8_t) GroupNonUniformShuffle 43 119 120 122: 117(ptr) AccessChain 34(data) 116 47 38 Store 122 121 123: 6(int) Load 8(invocation) 126: 125(ptr) AccessChain 34(data) 47 47 127: 20(i8vec4) Load 126 128: 124(i8vec2) VectorShuffle 127 127 0 1 129: 6(int) Load 8(invocation) 130: 124(i8vec2) GroupNonUniformShuffle 43 128 129 131: 117(ptr) AccessChain 34(data) 123 47 38 132: 19(int8_t) CompositeExtract 130 0 Store 131 132 133: 117(ptr) AccessChain 34(data) 123 47 57 134: 19(int8_t) CompositeExtract 130 1 Store 133 134 135: 6(int) Load 8(invocation) 137: 125(ptr) AccessChain 34(data) 61 47 138: 20(i8vec4) Load 137 139: 136(i8vec3) VectorShuffle 138 138 0 1 2 140: 6(int) Load 8(invocation) 141: 136(i8vec3) GroupNonUniformShuffle 43 139 140 142: 117(ptr) AccessChain 34(data) 135 47 38 143: 19(int8_t) CompositeExtract 141 0 Store 142 143 144: 117(ptr) AccessChain 34(data) 135 47 57 145: 19(int8_t) CompositeExtract 141 1 Store 144 145 146: 117(ptr) AccessChain 34(data) 135 47 72 147: 19(int8_t) CompositeExtract 141 2 Store 146 147 148: 6(int) Load 8(invocation) 149: 125(ptr) AccessChain 34(data) 76 47 150: 20(i8vec4) Load 149 151: 6(int) Load 8(invocation) 152: 20(i8vec4) GroupNonUniformShuffle 43 150 151 153: 125(ptr) AccessChain 34(data) 148 47 Store 153 152 154: 6(int) Load 8(invocation) 155: 117(ptr) AccessChain 34(data) 37 47 38 156: 19(int8_t) Load 155 157: 6(int) Load 8(invocation) 158: 19(int8_t) GroupNonUniformShuffleXor 43 156 157 159: 117(ptr) AccessChain 34(data) 154 47 38 Store 159 158 160: 6(int) Load 8(invocation) 161: 125(ptr) AccessChain 34(data) 47 47 162: 20(i8vec4) Load 161 163: 124(i8vec2) VectorShuffle 162 162 0 1 164: 6(int) Load 8(invocation) 165: 124(i8vec2) GroupNonUniformShuffleXor 43 163 164 166: 117(ptr) AccessChain 34(data) 160 47 38 167: 19(int8_t) CompositeExtract 165 0 Store 166 167 168: 117(ptr) AccessChain 34(data) 160 47 57 169: 19(int8_t) CompositeExtract 165 1 Store 168 169 170: 6(int) Load 8(invocation) 171: 125(ptr) AccessChain 34(data) 61 47 172: 20(i8vec4) Load 171 173: 136(i8vec3) VectorShuffle 172 172 0 1 2 174: 6(int) Load 8(invocation) 175: 136(i8vec3) GroupNonUniformShuffleXor 43 173 174 176: 117(ptr) AccessChain 34(data) 170 47 38 177: 19(int8_t) CompositeExtract 175 0 Store 176 177 178: 117(ptr) AccessChain 34(data) 170 47 57 179: 19(int8_t) CompositeExtract 175 1 Store 178 179 180: 117(ptr) AccessChain 34(data) 170 47 72 181: 19(int8_t) CompositeExtract 175 2 Store 180 181 182: 6(int) Load 8(invocation) 183: 125(ptr) AccessChain 34(data) 76 47 184: 20(i8vec4) Load 183 185: 6(int) Load 8(invocation) 186: 20(i8vec4) GroupNonUniformShuffleXor 43 184 185 187: 125(ptr) AccessChain 34(data) 182 47 Store 187 186 188: 6(int) Load 8(invocation) 190: 189(ptr) AccessChain 34(data) 37 61 38 191: 21(int16_t) Load 190 192: 6(int) Load 8(invocation) 193: 21(int16_t) GroupNonUniformShuffle 43 191 192 194: 189(ptr) AccessChain 34(data) 188 61 38 Store 194 193 195: 6(int) Load 8(invocation) 198: 197(ptr) AccessChain 34(data) 47 61 199: 22(i16vec4) Load 198 200:196(i16vec2) VectorShuffle 199 199 0 1 201: 6(int) Load 8(invocation) 202:196(i16vec2) GroupNonUniformShuffle 43 200 201 203: 189(ptr) AccessChain 34(data) 195 61 38 204: 21(int16_t) CompositeExtract 202 0 Store 203 204 205: 189(ptr) AccessChain 34(data) 195 61 57 206: 21(int16_t) CompositeExtract 202 1 Store 205 206 207: 6(int) Load 8(invocation) 209: 197(ptr) AccessChain 34(data) 61 61 210: 22(i16vec4) Load 209 211:208(i16vec3) VectorShuffle 210 210 0 1 2 212: 6(int) Load 8(invocation) 213:208(i16vec3) GroupNonUniformShuffle 43 211 212 214: 189(ptr) AccessChain 34(data) 207 61 38 215: 21(int16_t) CompositeExtract 213 0 Store 214 215 216: 189(ptr) AccessChain 34(data) 207 61 57 217: 21(int16_t) CompositeExtract 213 1 Store 216 217 218: 189(ptr) AccessChain 34(data) 207 61 72 219: 21(int16_t) CompositeExtract 213 2 Store 218 219 220: 6(int) Load 8(invocation) 221: 197(ptr) AccessChain 34(data) 76 61 222: 22(i16vec4) Load 221 223: 6(int) Load 8(invocation) 224: 22(i16vec4) GroupNonUniformShuffle 43 222 223 225: 197(ptr) AccessChain 34(data) 220 61 Store 225 224 226: 6(int) Load 8(invocation) 227: 189(ptr) AccessChain 34(data) 37 61 38 228: 21(int16_t) Load 227 229: 6(int) Load 8(invocation) 230: 21(int16_t) GroupNonUniformShuffleXor 43 228 229 231: 189(ptr) AccessChain 34(data) 226 61 38 Store 231 230 232: 6(int) Load 8(invocation) 233: 197(ptr) AccessChain 34(data) 47 61 234: 22(i16vec4) Load 233 235:196(i16vec2) VectorShuffle 234 234 0 1 236: 6(int) Load 8(invocation) 237:196(i16vec2) GroupNonUniformShuffleXor 43 235 236 238: 189(ptr) AccessChain 34(data) 232 61 38 239: 21(int16_t) CompositeExtract 237 0 Store 238 239 240: 189(ptr) AccessChain 34(data) 232 61 57 241: 21(int16_t) CompositeExtract 237 1 Store 240 241 242: 6(int) Load 8(invocation) 243: 197(ptr) AccessChain 34(data) 61 61 244: 22(i16vec4) Load 243 245:208(i16vec3) VectorShuffle 244 244 0 1 2 246: 6(int) Load 8(invocation) 247:208(i16vec3) GroupNonUniformShuffleXor 43 245 246 248: 189(ptr) AccessChain 34(data) 242 61 38 249: 21(int16_t) CompositeExtract 247 0 Store 248 249 250: 189(ptr) AccessChain 34(data) 242 61 57 251: 21(int16_t) CompositeExtract 247 1 Store 250 251 252: 189(ptr) AccessChain 34(data) 242 61 72 253: 21(int16_t) CompositeExtract 247 2 Store 252 253 254: 6(int) Load 8(invocation) 255: 197(ptr) AccessChain 34(data) 76 61 256: 22(i16vec4) Load 255 257: 6(int) Load 8(invocation) 258: 22(i16vec4) GroupNonUniformShuffleXor 43 256 257 259: 197(ptr) AccessChain 34(data) 254 61 Store 259 258 260: 6(int) Load 8(invocation) 262: 261(ptr) AccessChain 34(data) 37 76 38 263: 23(int16_t) Load 262 264: 6(int) Load 8(invocation) 265: 23(int16_t) GroupNonUniformShuffle 43 263 264 266: 261(ptr) AccessChain 34(data) 260 76 38 Store 266 265 267: 6(int) Load 8(invocation) 270: 269(ptr) AccessChain 34(data) 47 76 271: 24(i16vec4) Load 270 272:268(i16vec2) VectorShuffle 271 271 0 1 273: 6(int) Load 8(invocation) 274:268(i16vec2) GroupNonUniformShuffle 43 272 273 275: 261(ptr) AccessChain 34(data) 267 76 38 276: 23(int16_t) CompositeExtract 274 0 Store 275 276 277: 261(ptr) AccessChain 34(data) 267 76 57 278: 23(int16_t) CompositeExtract 274 1 Store 277 278 279: 6(int) Load 8(invocation) 281: 269(ptr) AccessChain 34(data) 61 76 282: 24(i16vec4) Load 281 283:280(i16vec3) VectorShuffle 282 282 0 1 2 284: 6(int) Load 8(invocation) 285:280(i16vec3) GroupNonUniformShuffle 43 283 284 286: 261(ptr) AccessChain 34(data) 279 76 38 287: 23(int16_t) CompositeExtract 285 0 Store 286 287 288: 261(ptr) AccessChain 34(data) 279 76 57 289: 23(int16_t) CompositeExtract 285 1 Store 288 289 290: 261(ptr) AccessChain 34(data) 279 76 72 291: 23(int16_t) CompositeExtract 285 2 Store 290 291 292: 6(int) Load 8(invocation) 293: 269(ptr) AccessChain 34(data) 76 76 294: 24(i16vec4) Load 293 295: 6(int) Load 8(invocation) 296: 24(i16vec4) GroupNonUniformShuffle 43 294 295 297: 269(ptr) AccessChain 34(data) 292 76 Store 297 296 298: 6(int) Load 8(invocation) 299: 261(ptr) AccessChain 34(data) 37 76 38 300: 23(int16_t) Load 299 301: 6(int) Load 8(invocation) 302: 23(int16_t) GroupNonUniformShuffleXor 43 300 301 303: 261(ptr) AccessChain 34(data) 298 76 38 Store 303 302 304: 6(int) Load 8(invocation) 305: 269(ptr) AccessChain 34(data) 47 76 306: 24(i16vec4) Load 305 307:268(i16vec2) VectorShuffle 306 306 0 1 308: 6(int) Load 8(invocation) 309:268(i16vec2) GroupNonUniformShuffleXor 43 307 308 310: 261(ptr) AccessChain 34(data) 304 76 38 311: 23(int16_t) CompositeExtract 309 0 Store 310 311 312: 261(ptr) AccessChain 34(data) 304 76 57 313: 23(int16_t) CompositeExtract 309 1 Store 312 313 314: 6(int) Load 8(invocation) 315: 269(ptr) AccessChain 34(data) 61 76 316: 24(i16vec4) Load 315 317:280(i16vec3) VectorShuffle 316 316 0 1 2 318: 6(int) Load 8(invocation) 319:280(i16vec3) GroupNonUniformShuffleXor 43 317 318 320: 261(ptr) AccessChain 34(data) 314 76 38 321: 23(int16_t) CompositeExtract 319 0 Store 320 321 322: 261(ptr) AccessChain 34(data) 314 76 57 323: 23(int16_t) CompositeExtract 319 1 Store 322 323 324: 261(ptr) AccessChain 34(data) 314 76 72 325: 23(int16_t) CompositeExtract 319 2 Store 324 325 326: 6(int) Load 8(invocation) 327: 269(ptr) AccessChain 34(data) 76 76 328: 24(i16vec4) Load 327 329: 6(int) Load 8(invocation) 330: 24(i16vec4) GroupNonUniformShuffleXor 43 328 329 331: 269(ptr) AccessChain 34(data) 326 76 Store 331 330 332: 6(int) Load 8(invocation) 335: 334(ptr) AccessChain 34(data) 37 333 38 336: 25(int64_t) Load 335 337: 6(int) Load 8(invocation) 338: 25(int64_t) GroupNonUniformShuffle 43 336 337 339: 334(ptr) AccessChain 34(data) 332 333 38 Store 339 338 340: 6(int) Load 8(invocation) 343: 342(ptr) AccessChain 34(data) 47 333 344: 26(i64vec4) Load 343 345:341(i64vec2) VectorShuffle 344 344 0 1 346: 6(int) Load 8(invocation) 347:341(i64vec2) GroupNonUniformShuffle 43 345 346 348: 334(ptr) AccessChain 34(data) 340 333 38 349: 25(int64_t) CompositeExtract 347 0 Store 348 349 350: 334(ptr) AccessChain 34(data) 340 333 57 351: 25(int64_t) CompositeExtract 347 1 Store 350 351 352: 6(int) Load 8(invocation) 354: 342(ptr) AccessChain 34(data) 61 333 355: 26(i64vec4) Load 354 356:353(i64vec3) VectorShuffle 355 355 0 1 2 357: 6(int) Load 8(invocation) 358:353(i64vec3) GroupNonUniformShuffle 43 356 357 359: 334(ptr) AccessChain 34(data) 352 333 38 360: 25(int64_t) CompositeExtract 358 0 Store 359 360 361: 334(ptr) AccessChain 34(data) 352 333 57 362: 25(int64_t) CompositeExtract 358 1 Store 361 362 363: 334(ptr) AccessChain 34(data) 352 333 72 364: 25(int64_t) CompositeExtract 358 2 Store 363 364 365: 6(int) Load 8(invocation) 366: 342(ptr) AccessChain 34(data) 76 333 367: 26(i64vec4) Load 366 368: 6(int) Load 8(invocation) 369: 26(i64vec4) GroupNonUniformShuffle 43 367 368 370: 342(ptr) AccessChain 34(data) 365 333 Store 370 369 371: 6(int) Load 8(invocation) 372: 334(ptr) AccessChain 34(data) 37 333 38 373: 25(int64_t) Load 372 374: 6(int) Load 8(invocation) 375: 25(int64_t) GroupNonUniformShuffleXor 43 373 374 376: 334(ptr) AccessChain 34(data) 371 333 38 Store 376 375 377: 6(int) Load 8(invocation) 378: 342(ptr) AccessChain 34(data) 47 333 379: 26(i64vec4) Load 378 380:341(i64vec2) VectorShuffle 379 379 0 1 381: 6(int) Load 8(invocation) 382:341(i64vec2) GroupNonUniformShuffleXor 43 380 381 383: 334(ptr) AccessChain 34(data) 377 333 38 384: 25(int64_t) CompositeExtract 382 0 Store 383 384 385: 334(ptr) AccessChain 34(data) 377 333 57 386: 25(int64_t) CompositeExtract 382 1 Store 385 386 387: 6(int) Load 8(invocation) 388: 342(ptr) AccessChain 34(data) 61 333 389: 26(i64vec4) Load 388 390:353(i64vec3) VectorShuffle 389 389 0 1 2 391: 6(int) Load 8(invocation) 392:353(i64vec3) GroupNonUniformShuffleXor 43 390 391 393: 334(ptr) AccessChain 34(data) 387 333 38 394: 25(int64_t) CompositeExtract 392 0 Store 393 394 395: 334(ptr) AccessChain 34(data) 387 333 57 396: 25(int64_t) CompositeExtract 392 1 Store 395 396 397: 334(ptr) AccessChain 34(data) 387 333 72 398: 25(int64_t) CompositeExtract 392 2 Store 397 398 399: 6(int) Load 8(invocation) 400: 342(ptr) AccessChain 34(data) 76 333 401: 26(i64vec4) Load 400 402: 6(int) Load 8(invocation) 403: 26(i64vec4) GroupNonUniformShuffleXor 43 401 402 404: 342(ptr) AccessChain 34(data) 399 333 Store 404 403 405: 6(int) Load 8(invocation) 408: 407(ptr) AccessChain 34(data) 37 406 38 409: 27(int64_t) Load 408 410: 6(int) Load 8(invocation) 411: 27(int64_t) GroupNonUniformShuffle 43 409 410 412: 407(ptr) AccessChain 34(data) 405 406 38 Store 412 411 413: 6(int) Load 8(invocation) 416: 415(ptr) AccessChain 34(data) 47 406 417: 28(i64vec4) Load 416 418:414(i64vec2) VectorShuffle 417 417 0 1 419: 6(int) Load 8(invocation) 420:414(i64vec2) GroupNonUniformShuffle 43 418 419 421: 407(ptr) AccessChain 34(data) 413 406 38 422: 27(int64_t) CompositeExtract 420 0 Store 421 422 423: 407(ptr) AccessChain 34(data) 413 406 57 424: 27(int64_t) CompositeExtract 420 1 Store 423 424 425: 6(int) Load 8(invocation) 427: 415(ptr) AccessChain 34(data) 61 406 428: 28(i64vec4) Load 427 429:426(i64vec3) VectorShuffle 428 428 0 1 2 430: 6(int) Load 8(invocation) 431:426(i64vec3) GroupNonUniformShuffle 43 429 430 432: 407(ptr) AccessChain 34(data) 425 406 38 433: 27(int64_t) CompositeExtract 431 0 Store 432 433 434: 407(ptr) AccessChain 34(data) 425 406 57 435: 27(int64_t) CompositeExtract 431 1 Store 434 435 436: 407(ptr) AccessChain 34(data) 425 406 72 437: 27(int64_t) CompositeExtract 431 2 Store 436 437 438: 6(int) Load 8(invocation) 439: 415(ptr) AccessChain 34(data) 76 406 440: 28(i64vec4) Load 439 441: 6(int) Load 8(invocation) 442: 28(i64vec4) GroupNonUniformShuffle 43 440 441 443: 415(ptr) AccessChain 34(data) 438 406 Store 443 442 444: 6(int) Load 8(invocation) 445: 407(ptr) AccessChain 34(data) 37 406 38 446: 27(int64_t) Load 445 447: 6(int) Load 8(invocation) 448: 27(int64_t) GroupNonUniformShuffleXor 43 446 447 449: 407(ptr) AccessChain 34(data) 444 406 38 Store 449 448 450: 6(int) Load 8(invocation) 451: 415(ptr) AccessChain 34(data) 47 406 452: 28(i64vec4) Load 451 453:414(i64vec2) VectorShuffle 452 452 0 1 454: 6(int) Load 8(invocation) 455:414(i64vec2) GroupNonUniformShuffleXor 43 453 454 456: 407(ptr) AccessChain 34(data) 450 406 38 457: 27(int64_t) CompositeExtract 455 0 Store 456 457 458: 407(ptr) AccessChain 34(data) 450 406 57 459: 27(int64_t) CompositeExtract 455 1 Store 458 459 460: 6(int) Load 8(invocation) 461: 415(ptr) AccessChain 34(data) 61 406 462: 28(i64vec4) Load 461 463:426(i64vec3) VectorShuffle 462 462 0 1 2 464: 6(int) Load 8(invocation) 465:426(i64vec3) GroupNonUniformShuffleXor 43 463 464 466: 407(ptr) AccessChain 34(data) 460 406 38 467: 27(int64_t) CompositeExtract 465 0 Store 466 467 468: 407(ptr) AccessChain 34(data) 460 406 57 469: 27(int64_t) CompositeExtract 465 1 Store 468 469 470: 407(ptr) AccessChain 34(data) 460 406 72 471: 27(int64_t) CompositeExtract 465 2 Store 470 471 472: 6(int) Load 8(invocation) 473: 415(ptr) AccessChain 34(data) 76 406 474: 28(i64vec4) Load 473 475: 6(int) Load 8(invocation) 476: 28(i64vec4) GroupNonUniformShuffleXor 43 474 475 477: 415(ptr) AccessChain 34(data) 472 406 Store 477 476 478: 6(int) Load 8(invocation) 481: 480(ptr) AccessChain 34(data) 37 479 38 482:29(float16_t) Load 481 483: 6(int) Load 8(invocation) 484:29(float16_t) GroupNonUniformShuffle 43 482 483 485: 480(ptr) AccessChain 34(data) 478 479 38 Store 485 484 486: 6(int) Load 8(invocation) 489: 488(ptr) AccessChain 34(data) 47 479 490: 30(f16vec4) Load 489 491:487(f16vec2) VectorShuffle 490 490 0 1 492: 6(int) Load 8(invocation) 493:487(f16vec2) GroupNonUniformShuffle 43 491 492 494: 480(ptr) AccessChain 34(data) 486 479 38 495:29(float16_t) CompositeExtract 493 0 Store 494 495 496: 480(ptr) AccessChain 34(data) 486 479 57 497:29(float16_t) CompositeExtract 493 1 Store 496 497 498: 6(int) Load 8(invocation) 500: 488(ptr) AccessChain 34(data) 61 479 501: 30(f16vec4) Load 500 502:499(f16vec3) VectorShuffle 501 501 0 1 2 503: 6(int) Load 8(invocation) 504:499(f16vec3) GroupNonUniformShuffle 43 502 503 505: 480(ptr) AccessChain 34(data) 498 479 38 506:29(float16_t) CompositeExtract 504 0 Store 505 506 507: 480(ptr) AccessChain 34(data) 498 479 57 508:29(float16_t) CompositeExtract 504 1 Store 507 508 509: 480(ptr) AccessChain 34(data) 498 479 72 510:29(float16_t) CompositeExtract 504 2 Store 509 510 511: 6(int) Load 8(invocation) 512: 488(ptr) AccessChain 34(data) 76 479 513: 30(f16vec4) Load 512 514: 6(int) Load 8(invocation) 515: 30(f16vec4) GroupNonUniformShuffle 43 513 514 516: 488(ptr) AccessChain 34(data) 511 479 Store 516 515 517: 6(int) Load 8(invocation) 518: 480(ptr) AccessChain 34(data) 37 479 38 519:29(float16_t) Load 518 520: 6(int) Load 8(invocation) 521:29(float16_t) GroupNonUniformShuffleXor 43 519 520 522: 480(ptr) AccessChain 34(data) 517 479 38 Store 522 521 523: 6(int) Load 8(invocation) 524: 488(ptr) AccessChain 34(data) 47 479 525: 30(f16vec4) Load 524 526:487(f16vec2) VectorShuffle 525 525 0 1 527: 6(int) Load 8(invocation) 528:487(f16vec2) GroupNonUniformShuffleXor 43 526 527 529: 480(ptr) AccessChain 34(data) 523 479 38 530:29(float16_t) CompositeExtract 528 0 Store 529 530 531: 480(ptr) AccessChain 34(data) 523 479 57 532:29(float16_t) CompositeExtract 528 1 Store 531 532 533: 6(int) Load 8(invocation) 534: 488(ptr) AccessChain 34(data) 61 479 535: 30(f16vec4) Load 534 536:499(f16vec3) VectorShuffle 535 535 0 1 2 537: 6(int) Load 8(invocation) 538:499(f16vec3) GroupNonUniformShuffleXor 43 536 537 539: 480(ptr) AccessChain 34(data) 533 479 38 540:29(float16_t) CompositeExtract 538 0 Store 539 540 541: 480(ptr) AccessChain 34(data) 533 479 57 542:29(float16_t) CompositeExtract 538 1 Store 541 542 543: 480(ptr) AccessChain 34(data) 533 479 72 544:29(float16_t) CompositeExtract 538 2 Store 543 544 545: 6(int) Load 8(invocation) 546: 488(ptr) AccessChain 34(data) 76 479 547: 30(f16vec4) Load 546 548: 6(int) Load 8(invocation) 549: 30(f16vec4) GroupNonUniformShuffleXor 43 547 548 550: 488(ptr) AccessChain 34(data) 545 479 Store 550 549 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out000066400000000000000000000167601506534232700273010ustar00rootroot00000000000000spv.subgroupExtendedTypesShuffleNeg.comp ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:36: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:38: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:46: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:47: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:48: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:56: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:57: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:58: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:76: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:77: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:78: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:86: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:87: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:88: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:89: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 56 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out000066400000000000000000001127411506534232700303370ustar00rootroot00000000000000spv.subgroupExtendedTypesShuffleRelative.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 554 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability GroupNonUniform Capability GroupNonUniformShuffleRelative Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 31 "Buffers" MemberName 31(Buffers) 0 "i8" MemberName 31(Buffers) 1 "u8" MemberName 31(Buffers) 2 "i16" MemberName 31(Buffers) 3 "u16" MemberName 31(Buffers) 4 "i64" MemberName 31(Buffers) 5 "u64" MemberName 31(Buffers) 6 "f16" Name 34 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 MemberDecorate 31(Buffers) 3 Offset 16 MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 Decorate 34(data) Binding 0 Decorate 34(data) DescriptorSet 0 Decorate 553 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeInt 8 1 18: TypeVector 17(int8_t) 4 19: TypeInt 8 0 20: TypeVector 19(int8_t) 4 21: TypeInt 16 1 22: TypeVector 21(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 4 25: TypeInt 64 1 26: TypeVector 25(int64_t) 4 27: TypeInt 64 0 28: TypeVector 27(int64_t) 4 29: TypeFloat 16 30: TypeVector 29(float16_t) 4 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 32: TypeArray 31(Buffers) 15 33: TypePointer StorageBuffer 32 34(data): 33(ptr) Variable StorageBuffer 36: TypeInt 32 1 37: 36(int) Constant 0 38: 6(int) Constant 0 39: TypePointer StorageBuffer 17(int8_t) 43: 6(int) Constant 3 47: 36(int) Constant 1 48: TypeVector 17(int8_t) 2 49: TypePointer StorageBuffer 18(i8vec4) 57: 6(int) Constant 1 61: 36(int) Constant 2 62: TypeVector 17(int8_t) 3 72: 6(int) Constant 2 76: 36(int) Constant 3 117: TypePointer StorageBuffer 19(int8_t) 124: TypeVector 19(int8_t) 2 125: TypePointer StorageBuffer 20(i8vec4) 136: TypeVector 19(int8_t) 3 189: TypePointer StorageBuffer 21(int16_t) 196: TypeVector 21(int16_t) 2 197: TypePointer StorageBuffer 22(i16vec4) 208: TypeVector 21(int16_t) 3 261: TypePointer StorageBuffer 23(int16_t) 268: TypeVector 23(int16_t) 2 269: TypePointer StorageBuffer 24(i16vec4) 280: TypeVector 23(int16_t) 3 333: 36(int) Constant 4 334: TypePointer StorageBuffer 25(int64_t) 341: TypeVector 25(int64_t) 2 342: TypePointer StorageBuffer 26(i64vec4) 353: TypeVector 25(int64_t) 3 406: 36(int) Constant 5 407: TypePointer StorageBuffer 27(int64_t) 414: TypeVector 27(int64_t) 2 415: TypePointer StorageBuffer 28(i64vec4) 426: TypeVector 27(int64_t) 3 479: 36(int) Constant 6 480: TypePointer StorageBuffer 29(float16_t) 487: TypeVector 29(float16_t) 2 488: TypePointer StorageBuffer 30(f16vec4) 499: TypeVector 29(float16_t) 3 551: TypeVector 6(int) 3 552: 6(int) Constant 8 553: 551(ivec3) ConstantComposite 552 57 57 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 35: 6(int) Load 8(invocation) 40: 39(ptr) AccessChain 34(data) 37 37 38 41: 17(int8_t) Load 40 42: 6(int) Load 8(invocation) 44: 17(int8_t) GroupNonUniformShuffleUp 43 41 42 45: 39(ptr) AccessChain 34(data) 35 37 38 Store 45 44 46: 6(int) Load 8(invocation) 50: 49(ptr) AccessChain 34(data) 47 37 51: 18(i8vec4) Load 50 52: 48(i8vec2) VectorShuffle 51 51 0 1 53: 6(int) Load 8(invocation) 54: 48(i8vec2) GroupNonUniformShuffleUp 43 52 53 55: 39(ptr) AccessChain 34(data) 46 37 38 56: 17(int8_t) CompositeExtract 54 0 Store 55 56 58: 39(ptr) AccessChain 34(data) 46 37 57 59: 17(int8_t) CompositeExtract 54 1 Store 58 59 60: 6(int) Load 8(invocation) 63: 49(ptr) AccessChain 34(data) 61 37 64: 18(i8vec4) Load 63 65: 62(i8vec3) VectorShuffle 64 64 0 1 2 66: 6(int) Load 8(invocation) 67: 62(i8vec3) GroupNonUniformShuffleUp 43 65 66 68: 39(ptr) AccessChain 34(data) 60 37 38 69: 17(int8_t) CompositeExtract 67 0 Store 68 69 70: 39(ptr) AccessChain 34(data) 60 37 57 71: 17(int8_t) CompositeExtract 67 1 Store 70 71 73: 39(ptr) AccessChain 34(data) 60 37 72 74: 17(int8_t) CompositeExtract 67 2 Store 73 74 75: 6(int) Load 8(invocation) 77: 49(ptr) AccessChain 34(data) 76 37 78: 18(i8vec4) Load 77 79: 6(int) Load 8(invocation) 80: 18(i8vec4) GroupNonUniformShuffleUp 43 78 79 81: 49(ptr) AccessChain 34(data) 75 37 Store 81 80 82: 6(int) Load 8(invocation) 83: 39(ptr) AccessChain 34(data) 37 37 38 84: 17(int8_t) Load 83 85: 6(int) Load 8(invocation) 86: 17(int8_t) GroupNonUniformShuffleDown 43 84 85 87: 39(ptr) AccessChain 34(data) 82 37 38 Store 87 86 88: 6(int) Load 8(invocation) 89: 49(ptr) AccessChain 34(data) 47 37 90: 18(i8vec4) Load 89 91: 48(i8vec2) VectorShuffle 90 90 0 1 92: 6(int) Load 8(invocation) 93: 48(i8vec2) GroupNonUniformShuffleDown 43 91 92 94: 39(ptr) AccessChain 34(data) 88 37 38 95: 17(int8_t) CompositeExtract 93 0 Store 94 95 96: 39(ptr) AccessChain 34(data) 88 37 57 97: 17(int8_t) CompositeExtract 93 1 Store 96 97 98: 6(int) Load 8(invocation) 99: 49(ptr) AccessChain 34(data) 61 37 100: 18(i8vec4) Load 99 101: 62(i8vec3) VectorShuffle 100 100 0 1 2 102: 6(int) Load 8(invocation) 103: 62(i8vec3) GroupNonUniformShuffleDown 43 101 102 104: 39(ptr) AccessChain 34(data) 98 37 38 105: 17(int8_t) CompositeExtract 103 0 Store 104 105 106: 39(ptr) AccessChain 34(data) 98 37 57 107: 17(int8_t) CompositeExtract 103 1 Store 106 107 108: 39(ptr) AccessChain 34(data) 98 37 72 109: 17(int8_t) CompositeExtract 103 2 Store 108 109 110: 6(int) Load 8(invocation) 111: 49(ptr) AccessChain 34(data) 76 37 112: 18(i8vec4) Load 111 113: 6(int) Load 8(invocation) 114: 18(i8vec4) GroupNonUniformShuffleDown 43 112 113 115: 49(ptr) AccessChain 34(data) 110 37 Store 115 114 116: 6(int) Load 8(invocation) 118: 117(ptr) AccessChain 34(data) 37 47 38 119: 19(int8_t) Load 118 120: 6(int) Load 8(invocation) 121: 19(int8_t) GroupNonUniformShuffleUp 43 119 120 122: 117(ptr) AccessChain 34(data) 116 47 38 Store 122 121 123: 6(int) Load 8(invocation) 126: 125(ptr) AccessChain 34(data) 47 47 127: 20(i8vec4) Load 126 128: 124(i8vec2) VectorShuffle 127 127 0 1 129: 6(int) Load 8(invocation) 130: 124(i8vec2) GroupNonUniformShuffleUp 43 128 129 131: 117(ptr) AccessChain 34(data) 123 47 38 132: 19(int8_t) CompositeExtract 130 0 Store 131 132 133: 117(ptr) AccessChain 34(data) 123 47 57 134: 19(int8_t) CompositeExtract 130 1 Store 133 134 135: 6(int) Load 8(invocation) 137: 125(ptr) AccessChain 34(data) 61 47 138: 20(i8vec4) Load 137 139: 136(i8vec3) VectorShuffle 138 138 0 1 2 140: 6(int) Load 8(invocation) 141: 136(i8vec3) GroupNonUniformShuffleUp 43 139 140 142: 117(ptr) AccessChain 34(data) 135 47 38 143: 19(int8_t) CompositeExtract 141 0 Store 142 143 144: 117(ptr) AccessChain 34(data) 135 47 57 145: 19(int8_t) CompositeExtract 141 1 Store 144 145 146: 117(ptr) AccessChain 34(data) 135 47 72 147: 19(int8_t) CompositeExtract 141 2 Store 146 147 148: 6(int) Load 8(invocation) 149: 125(ptr) AccessChain 34(data) 76 47 150: 20(i8vec4) Load 149 151: 6(int) Load 8(invocation) 152: 20(i8vec4) GroupNonUniformShuffleUp 43 150 151 153: 125(ptr) AccessChain 34(data) 148 47 Store 153 152 154: 6(int) Load 8(invocation) 155: 117(ptr) AccessChain 34(data) 37 47 38 156: 19(int8_t) Load 155 157: 6(int) Load 8(invocation) 158: 19(int8_t) GroupNonUniformShuffleDown 43 156 157 159: 117(ptr) AccessChain 34(data) 154 47 38 Store 159 158 160: 6(int) Load 8(invocation) 161: 125(ptr) AccessChain 34(data) 47 47 162: 20(i8vec4) Load 161 163: 124(i8vec2) VectorShuffle 162 162 0 1 164: 6(int) Load 8(invocation) 165: 124(i8vec2) GroupNonUniformShuffleDown 43 163 164 166: 117(ptr) AccessChain 34(data) 160 47 38 167: 19(int8_t) CompositeExtract 165 0 Store 166 167 168: 117(ptr) AccessChain 34(data) 160 47 57 169: 19(int8_t) CompositeExtract 165 1 Store 168 169 170: 6(int) Load 8(invocation) 171: 125(ptr) AccessChain 34(data) 61 47 172: 20(i8vec4) Load 171 173: 136(i8vec3) VectorShuffle 172 172 0 1 2 174: 6(int) Load 8(invocation) 175: 136(i8vec3) GroupNonUniformShuffleDown 43 173 174 176: 117(ptr) AccessChain 34(data) 170 47 38 177: 19(int8_t) CompositeExtract 175 0 Store 176 177 178: 117(ptr) AccessChain 34(data) 170 47 57 179: 19(int8_t) CompositeExtract 175 1 Store 178 179 180: 117(ptr) AccessChain 34(data) 170 47 72 181: 19(int8_t) CompositeExtract 175 2 Store 180 181 182: 6(int) Load 8(invocation) 183: 125(ptr) AccessChain 34(data) 76 47 184: 20(i8vec4) Load 183 185: 6(int) Load 8(invocation) 186: 20(i8vec4) GroupNonUniformShuffleDown 43 184 185 187: 125(ptr) AccessChain 34(data) 182 47 Store 187 186 188: 6(int) Load 8(invocation) 190: 189(ptr) AccessChain 34(data) 37 61 38 191: 21(int16_t) Load 190 192: 6(int) Load 8(invocation) 193: 21(int16_t) GroupNonUniformShuffleUp 43 191 192 194: 189(ptr) AccessChain 34(data) 188 61 38 Store 194 193 195: 6(int) Load 8(invocation) 198: 197(ptr) AccessChain 34(data) 47 61 199: 22(i16vec4) Load 198 200:196(i16vec2) VectorShuffle 199 199 0 1 201: 6(int) Load 8(invocation) 202:196(i16vec2) GroupNonUniformShuffleUp 43 200 201 203: 189(ptr) AccessChain 34(data) 195 61 38 204: 21(int16_t) CompositeExtract 202 0 Store 203 204 205: 189(ptr) AccessChain 34(data) 195 61 57 206: 21(int16_t) CompositeExtract 202 1 Store 205 206 207: 6(int) Load 8(invocation) 209: 197(ptr) AccessChain 34(data) 61 61 210: 22(i16vec4) Load 209 211:208(i16vec3) VectorShuffle 210 210 0 1 2 212: 6(int) Load 8(invocation) 213:208(i16vec3) GroupNonUniformShuffleUp 43 211 212 214: 189(ptr) AccessChain 34(data) 207 61 38 215: 21(int16_t) CompositeExtract 213 0 Store 214 215 216: 189(ptr) AccessChain 34(data) 207 61 57 217: 21(int16_t) CompositeExtract 213 1 Store 216 217 218: 189(ptr) AccessChain 34(data) 207 61 72 219: 21(int16_t) CompositeExtract 213 2 Store 218 219 220: 6(int) Load 8(invocation) 221: 197(ptr) AccessChain 34(data) 76 61 222: 22(i16vec4) Load 221 223: 6(int) Load 8(invocation) 224: 22(i16vec4) GroupNonUniformShuffleUp 43 222 223 225: 197(ptr) AccessChain 34(data) 220 61 Store 225 224 226: 6(int) Load 8(invocation) 227: 189(ptr) AccessChain 34(data) 37 61 38 228: 21(int16_t) Load 227 229: 6(int) Load 8(invocation) 230: 21(int16_t) GroupNonUniformShuffleDown 43 228 229 231: 189(ptr) AccessChain 34(data) 226 61 38 Store 231 230 232: 6(int) Load 8(invocation) 233: 197(ptr) AccessChain 34(data) 47 61 234: 22(i16vec4) Load 233 235:196(i16vec2) VectorShuffle 234 234 0 1 236: 6(int) Load 8(invocation) 237:196(i16vec2) GroupNonUniformShuffleDown 43 235 236 238: 189(ptr) AccessChain 34(data) 232 61 38 239: 21(int16_t) CompositeExtract 237 0 Store 238 239 240: 189(ptr) AccessChain 34(data) 232 61 57 241: 21(int16_t) CompositeExtract 237 1 Store 240 241 242: 6(int) Load 8(invocation) 243: 197(ptr) AccessChain 34(data) 61 61 244: 22(i16vec4) Load 243 245:208(i16vec3) VectorShuffle 244 244 0 1 2 246: 6(int) Load 8(invocation) 247:208(i16vec3) GroupNonUniformShuffleDown 43 245 246 248: 189(ptr) AccessChain 34(data) 242 61 38 249: 21(int16_t) CompositeExtract 247 0 Store 248 249 250: 189(ptr) AccessChain 34(data) 242 61 57 251: 21(int16_t) CompositeExtract 247 1 Store 250 251 252: 189(ptr) AccessChain 34(data) 242 61 72 253: 21(int16_t) CompositeExtract 247 2 Store 252 253 254: 6(int) Load 8(invocation) 255: 197(ptr) AccessChain 34(data) 76 61 256: 22(i16vec4) Load 255 257: 6(int) Load 8(invocation) 258: 22(i16vec4) GroupNonUniformShuffleDown 43 256 257 259: 197(ptr) AccessChain 34(data) 254 61 Store 259 258 260: 6(int) Load 8(invocation) 262: 261(ptr) AccessChain 34(data) 37 76 38 263: 23(int16_t) Load 262 264: 6(int) Load 8(invocation) 265: 23(int16_t) GroupNonUniformShuffleUp 43 263 264 266: 261(ptr) AccessChain 34(data) 260 76 38 Store 266 265 267: 6(int) Load 8(invocation) 270: 269(ptr) AccessChain 34(data) 47 76 271: 24(i16vec4) Load 270 272:268(i16vec2) VectorShuffle 271 271 0 1 273: 6(int) Load 8(invocation) 274:268(i16vec2) GroupNonUniformShuffleUp 43 272 273 275: 261(ptr) AccessChain 34(data) 267 76 38 276: 23(int16_t) CompositeExtract 274 0 Store 275 276 277: 261(ptr) AccessChain 34(data) 267 76 57 278: 23(int16_t) CompositeExtract 274 1 Store 277 278 279: 6(int) Load 8(invocation) 281: 269(ptr) AccessChain 34(data) 61 76 282: 24(i16vec4) Load 281 283:280(i16vec3) VectorShuffle 282 282 0 1 2 284: 6(int) Load 8(invocation) 285:280(i16vec3) GroupNonUniformShuffleUp 43 283 284 286: 261(ptr) AccessChain 34(data) 279 76 38 287: 23(int16_t) CompositeExtract 285 0 Store 286 287 288: 261(ptr) AccessChain 34(data) 279 76 57 289: 23(int16_t) CompositeExtract 285 1 Store 288 289 290: 261(ptr) AccessChain 34(data) 279 76 72 291: 23(int16_t) CompositeExtract 285 2 Store 290 291 292: 6(int) Load 8(invocation) 293: 269(ptr) AccessChain 34(data) 76 76 294: 24(i16vec4) Load 293 295: 6(int) Load 8(invocation) 296: 24(i16vec4) GroupNonUniformShuffleUp 43 294 295 297: 269(ptr) AccessChain 34(data) 292 76 Store 297 296 298: 6(int) Load 8(invocation) 299: 261(ptr) AccessChain 34(data) 37 76 38 300: 23(int16_t) Load 299 301: 6(int) Load 8(invocation) 302: 23(int16_t) GroupNonUniformShuffleDown 43 300 301 303: 261(ptr) AccessChain 34(data) 298 76 38 Store 303 302 304: 6(int) Load 8(invocation) 305: 269(ptr) AccessChain 34(data) 47 76 306: 24(i16vec4) Load 305 307:268(i16vec2) VectorShuffle 306 306 0 1 308: 6(int) Load 8(invocation) 309:268(i16vec2) GroupNonUniformShuffleDown 43 307 308 310: 261(ptr) AccessChain 34(data) 304 76 38 311: 23(int16_t) CompositeExtract 309 0 Store 310 311 312: 261(ptr) AccessChain 34(data) 304 76 57 313: 23(int16_t) CompositeExtract 309 1 Store 312 313 314: 6(int) Load 8(invocation) 315: 269(ptr) AccessChain 34(data) 61 76 316: 24(i16vec4) Load 315 317:280(i16vec3) VectorShuffle 316 316 0 1 2 318: 6(int) Load 8(invocation) 319:280(i16vec3) GroupNonUniformShuffleDown 43 317 318 320: 261(ptr) AccessChain 34(data) 314 76 38 321: 23(int16_t) CompositeExtract 319 0 Store 320 321 322: 261(ptr) AccessChain 34(data) 314 76 57 323: 23(int16_t) CompositeExtract 319 1 Store 322 323 324: 261(ptr) AccessChain 34(data) 314 76 72 325: 23(int16_t) CompositeExtract 319 2 Store 324 325 326: 6(int) Load 8(invocation) 327: 269(ptr) AccessChain 34(data) 76 76 328: 24(i16vec4) Load 327 329: 6(int) Load 8(invocation) 330: 24(i16vec4) GroupNonUniformShuffleDown 43 328 329 331: 269(ptr) AccessChain 34(data) 326 76 Store 331 330 332: 6(int) Load 8(invocation) 335: 334(ptr) AccessChain 34(data) 37 333 38 336: 25(int64_t) Load 335 337: 6(int) Load 8(invocation) 338: 25(int64_t) GroupNonUniformShuffleUp 43 336 337 339: 334(ptr) AccessChain 34(data) 332 333 38 Store 339 338 340: 6(int) Load 8(invocation) 343: 342(ptr) AccessChain 34(data) 47 333 344: 26(i64vec4) Load 343 345:341(i64vec2) VectorShuffle 344 344 0 1 346: 6(int) Load 8(invocation) 347:341(i64vec2) GroupNonUniformShuffleUp 43 345 346 348: 334(ptr) AccessChain 34(data) 340 333 38 349: 25(int64_t) CompositeExtract 347 0 Store 348 349 350: 334(ptr) AccessChain 34(data) 340 333 57 351: 25(int64_t) CompositeExtract 347 1 Store 350 351 352: 6(int) Load 8(invocation) 354: 342(ptr) AccessChain 34(data) 61 333 355: 26(i64vec4) Load 354 356:353(i64vec3) VectorShuffle 355 355 0 1 2 357: 6(int) Load 8(invocation) 358:353(i64vec3) GroupNonUniformShuffleUp 43 356 357 359: 334(ptr) AccessChain 34(data) 352 333 38 360: 25(int64_t) CompositeExtract 358 0 Store 359 360 361: 334(ptr) AccessChain 34(data) 352 333 57 362: 25(int64_t) CompositeExtract 358 1 Store 361 362 363: 334(ptr) AccessChain 34(data) 352 333 72 364: 25(int64_t) CompositeExtract 358 2 Store 363 364 365: 6(int) Load 8(invocation) 366: 342(ptr) AccessChain 34(data) 76 333 367: 26(i64vec4) Load 366 368: 6(int) Load 8(invocation) 369: 26(i64vec4) GroupNonUniformShuffleUp 43 367 368 370: 342(ptr) AccessChain 34(data) 365 333 Store 370 369 371: 6(int) Load 8(invocation) 372: 334(ptr) AccessChain 34(data) 37 333 38 373: 25(int64_t) Load 372 374: 6(int) Load 8(invocation) 375: 25(int64_t) GroupNonUniformShuffleDown 43 373 374 376: 334(ptr) AccessChain 34(data) 371 333 38 Store 376 375 377: 6(int) Load 8(invocation) 378: 342(ptr) AccessChain 34(data) 47 333 379: 26(i64vec4) Load 378 380:341(i64vec2) VectorShuffle 379 379 0 1 381: 6(int) Load 8(invocation) 382:341(i64vec2) GroupNonUniformShuffleDown 43 380 381 383: 334(ptr) AccessChain 34(data) 377 333 38 384: 25(int64_t) CompositeExtract 382 0 Store 383 384 385: 334(ptr) AccessChain 34(data) 377 333 57 386: 25(int64_t) CompositeExtract 382 1 Store 385 386 387: 6(int) Load 8(invocation) 388: 342(ptr) AccessChain 34(data) 61 333 389: 26(i64vec4) Load 388 390:353(i64vec3) VectorShuffle 389 389 0 1 2 391: 6(int) Load 8(invocation) 392:353(i64vec3) GroupNonUniformShuffleDown 43 390 391 393: 334(ptr) AccessChain 34(data) 387 333 38 394: 25(int64_t) CompositeExtract 392 0 Store 393 394 395: 334(ptr) AccessChain 34(data) 387 333 57 396: 25(int64_t) CompositeExtract 392 1 Store 395 396 397: 334(ptr) AccessChain 34(data) 387 333 72 398: 25(int64_t) CompositeExtract 392 2 Store 397 398 399: 6(int) Load 8(invocation) 400: 342(ptr) AccessChain 34(data) 76 333 401: 26(i64vec4) Load 400 402: 6(int) Load 8(invocation) 403: 26(i64vec4) GroupNonUniformShuffleDown 43 401 402 404: 342(ptr) AccessChain 34(data) 399 333 Store 404 403 405: 6(int) Load 8(invocation) 408: 407(ptr) AccessChain 34(data) 37 406 38 409: 27(int64_t) Load 408 410: 6(int) Load 8(invocation) 411: 27(int64_t) GroupNonUniformShuffleUp 43 409 410 412: 407(ptr) AccessChain 34(data) 405 406 38 Store 412 411 413: 6(int) Load 8(invocation) 416: 415(ptr) AccessChain 34(data) 47 406 417: 28(i64vec4) Load 416 418:414(i64vec2) VectorShuffle 417 417 0 1 419: 6(int) Load 8(invocation) 420:414(i64vec2) GroupNonUniformShuffleUp 43 418 419 421: 407(ptr) AccessChain 34(data) 413 406 38 422: 27(int64_t) CompositeExtract 420 0 Store 421 422 423: 407(ptr) AccessChain 34(data) 413 406 57 424: 27(int64_t) CompositeExtract 420 1 Store 423 424 425: 6(int) Load 8(invocation) 427: 415(ptr) AccessChain 34(data) 61 406 428: 28(i64vec4) Load 427 429:426(i64vec3) VectorShuffle 428 428 0 1 2 430: 6(int) Load 8(invocation) 431:426(i64vec3) GroupNonUniformShuffleUp 43 429 430 432: 407(ptr) AccessChain 34(data) 425 406 38 433: 27(int64_t) CompositeExtract 431 0 Store 432 433 434: 407(ptr) AccessChain 34(data) 425 406 57 435: 27(int64_t) CompositeExtract 431 1 Store 434 435 436: 407(ptr) AccessChain 34(data) 425 406 72 437: 27(int64_t) CompositeExtract 431 2 Store 436 437 438: 6(int) Load 8(invocation) 439: 415(ptr) AccessChain 34(data) 76 406 440: 28(i64vec4) Load 439 441: 6(int) Load 8(invocation) 442: 28(i64vec4) GroupNonUniformShuffleUp 43 440 441 443: 415(ptr) AccessChain 34(data) 438 406 Store 443 442 444: 6(int) Load 8(invocation) 445: 407(ptr) AccessChain 34(data) 37 406 38 446: 27(int64_t) Load 445 447: 6(int) Load 8(invocation) 448: 27(int64_t) GroupNonUniformShuffleDown 43 446 447 449: 407(ptr) AccessChain 34(data) 444 406 38 Store 449 448 450: 6(int) Load 8(invocation) 451: 415(ptr) AccessChain 34(data) 47 406 452: 28(i64vec4) Load 451 453:414(i64vec2) VectorShuffle 452 452 0 1 454: 6(int) Load 8(invocation) 455:414(i64vec2) GroupNonUniformShuffleDown 43 453 454 456: 407(ptr) AccessChain 34(data) 450 406 38 457: 27(int64_t) CompositeExtract 455 0 Store 456 457 458: 407(ptr) AccessChain 34(data) 450 406 57 459: 27(int64_t) CompositeExtract 455 1 Store 458 459 460: 6(int) Load 8(invocation) 461: 415(ptr) AccessChain 34(data) 61 406 462: 28(i64vec4) Load 461 463:426(i64vec3) VectorShuffle 462 462 0 1 2 464: 6(int) Load 8(invocation) 465:426(i64vec3) GroupNonUniformShuffleDown 43 463 464 466: 407(ptr) AccessChain 34(data) 460 406 38 467: 27(int64_t) CompositeExtract 465 0 Store 466 467 468: 407(ptr) AccessChain 34(data) 460 406 57 469: 27(int64_t) CompositeExtract 465 1 Store 468 469 470: 407(ptr) AccessChain 34(data) 460 406 72 471: 27(int64_t) CompositeExtract 465 2 Store 470 471 472: 6(int) Load 8(invocation) 473: 415(ptr) AccessChain 34(data) 76 406 474: 28(i64vec4) Load 473 475: 6(int) Load 8(invocation) 476: 28(i64vec4) GroupNonUniformShuffleDown 43 474 475 477: 415(ptr) AccessChain 34(data) 472 406 Store 477 476 478: 6(int) Load 8(invocation) 481: 480(ptr) AccessChain 34(data) 37 479 38 482:29(float16_t) Load 481 483: 6(int) Load 8(invocation) 484:29(float16_t) GroupNonUniformShuffleUp 43 482 483 485: 480(ptr) AccessChain 34(data) 478 479 38 Store 485 484 486: 6(int) Load 8(invocation) 489: 488(ptr) AccessChain 34(data) 47 479 490: 30(f16vec4) Load 489 491:487(f16vec2) VectorShuffle 490 490 0 1 492: 6(int) Load 8(invocation) 493:487(f16vec2) GroupNonUniformShuffleUp 43 491 492 494: 480(ptr) AccessChain 34(data) 486 479 38 495:29(float16_t) CompositeExtract 493 0 Store 494 495 496: 480(ptr) AccessChain 34(data) 486 479 57 497:29(float16_t) CompositeExtract 493 1 Store 496 497 498: 6(int) Load 8(invocation) 500: 488(ptr) AccessChain 34(data) 61 479 501: 30(f16vec4) Load 500 502:499(f16vec3) VectorShuffle 501 501 0 1 2 503: 6(int) Load 8(invocation) 504:499(f16vec3) GroupNonUniformShuffleUp 43 502 503 505: 480(ptr) AccessChain 34(data) 498 479 38 506:29(float16_t) CompositeExtract 504 0 Store 505 506 507: 480(ptr) AccessChain 34(data) 498 479 57 508:29(float16_t) CompositeExtract 504 1 Store 507 508 509: 480(ptr) AccessChain 34(data) 498 479 72 510:29(float16_t) CompositeExtract 504 2 Store 509 510 511: 6(int) Load 8(invocation) 512: 488(ptr) AccessChain 34(data) 76 479 513: 30(f16vec4) Load 512 514: 6(int) Load 8(invocation) 515: 30(f16vec4) GroupNonUniformShuffleUp 43 513 514 516: 488(ptr) AccessChain 34(data) 511 479 Store 516 515 517: 6(int) Load 8(invocation) 518: 480(ptr) AccessChain 34(data) 37 479 38 519:29(float16_t) Load 518 520: 6(int) Load 8(invocation) 521:29(float16_t) GroupNonUniformShuffleDown 43 519 520 522: 480(ptr) AccessChain 34(data) 517 479 38 Store 522 521 523: 6(int) Load 8(invocation) 524: 488(ptr) AccessChain 34(data) 47 479 525: 30(f16vec4) Load 524 526:487(f16vec2) VectorShuffle 525 525 0 1 527: 6(int) Load 8(invocation) 528:487(f16vec2) GroupNonUniformShuffleDown 43 526 527 529: 480(ptr) AccessChain 34(data) 523 479 38 530:29(float16_t) CompositeExtract 528 0 Store 529 530 531: 480(ptr) AccessChain 34(data) 523 479 57 532:29(float16_t) CompositeExtract 528 1 Store 531 532 533: 6(int) Load 8(invocation) 534: 488(ptr) AccessChain 34(data) 61 479 535: 30(f16vec4) Load 534 536:499(f16vec3) VectorShuffle 535 535 0 1 2 537: 6(int) Load 8(invocation) 538:499(f16vec3) GroupNonUniformShuffleDown 43 536 537 539: 480(ptr) AccessChain 34(data) 533 479 38 540:29(float16_t) CompositeExtract 538 0 Store 539 540 541: 480(ptr) AccessChain 34(data) 533 479 57 542:29(float16_t) CompositeExtract 538 1 Store 541 542 543: 480(ptr) AccessChain 34(data) 533 479 72 544:29(float16_t) CompositeExtract 538 2 Store 543 544 545: 6(int) Load 8(invocation) 546: 488(ptr) AccessChain 34(data) 76 479 547: 30(f16vec4) Load 546 548: 6(int) Load 8(invocation) 549: 30(f16vec4) GroupNonUniformShuffleDown 43 547 548 550: 488(ptr) AccessChain 34(data) 545 479 Store 550 549 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out000066400000000000000000000167701506534232700307760ustar00rootroot00000000000000spv.subgroupExtendedTypesShuffleRelativeNeg.comp ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:36: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:38: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:46: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:47: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:48: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:56: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:57: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:58: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:76: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:77: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:78: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:86: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:87: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:88: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:89: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 56 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out000066400000000000000000000503741506534232700261670ustar00rootroot00000000000000spv.subgroupExtendedTypesVote.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 277 Capability Shader Capability Float16 Capability Int64 Capability Int16 Capability Int8 Capability GroupNonUniform Capability GroupNonUniformVote Capability StorageUniformBufferBlock16 Capability StorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_vote" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 32 "Buffers" MemberName 32(Buffers) 0 "i8" MemberName 32(Buffers) 1 "u8" MemberName 32(Buffers) 2 "i16" MemberName 32(Buffers) 3 "u16" MemberName 32(Buffers) 4 "i64" MemberName 32(Buffers) 5 "u64" MemberName 32(Buffers) 6 "f16" MemberName 32(Buffers) 7 "r" Name 35 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 32(Buffers) Block MemberDecorate 32(Buffers) 0 Offset 0 MemberDecorate 32(Buffers) 1 Offset 4 MemberDecorate 32(Buffers) 2 Offset 8 MemberDecorate 32(Buffers) 3 Offset 16 MemberDecorate 32(Buffers) 4 Offset 32 MemberDecorate 32(Buffers) 5 Offset 64 MemberDecorate 32(Buffers) 6 Offset 96 MemberDecorate 32(Buffers) 7 Offset 104 Decorate 35(data) Binding 0 Decorate 35(data) DescriptorSet 0 Decorate 276 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeInt 8 1 18: TypeVector 17(int8_t) 4 19: TypeInt 8 0 20: TypeVector 19(int8_t) 4 21: TypeInt 16 1 22: TypeVector 21(int16_t) 4 23: TypeInt 16 0 24: TypeVector 23(int16_t) 4 25: TypeInt 64 1 26: TypeVector 25(int64_t) 4 27: TypeInt 64 0 28: TypeVector 27(int64_t) 4 29: TypeFloat 16 30: TypeVector 29(float16_t) 4 31: TypeInt 32 1 32(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 31(int) 33: TypeArray 32(Buffers) 15 34: TypePointer StorageBuffer 33 35(data): 34(ptr) Variable StorageBuffer 37: 31(int) Constant 7 38: TypePointer StorageBuffer 31(int) 41: 31(int) Constant 0 42: TypeBool 44: 6(int) Constant 3 49: 6(int) Constant 0 50: TypePointer StorageBuffer 17(int8_t) 54: 31(int) Constant 1 58: TypeVector 17(int8_t) 2 59: TypePointer StorageBuffer 18(i8vec4) 67: 31(int) Constant 2 68: TypeVector 17(int8_t) 3 76: 31(int) Constant 3 83: TypePointer StorageBuffer 19(int8_t) 90: TypeVector 19(int8_t) 2 91: TypePointer StorageBuffer 20(i8vec4) 99: TypeVector 19(int8_t) 3 113: TypePointer StorageBuffer 21(int16_t) 120: TypeVector 21(int16_t) 2 121: TypePointer StorageBuffer 22(i16vec4) 129: TypeVector 21(int16_t) 3 143: TypePointer StorageBuffer 23(int16_t) 150: TypeVector 23(int16_t) 2 151: TypePointer StorageBuffer 24(i16vec4) 159: TypeVector 23(int16_t) 3 181: 31(int) Constant 4 182: TypePointer StorageBuffer 25(int64_t) 189: TypeVector 25(int64_t) 2 190: TypePointer StorageBuffer 26(i64vec4) 198: TypeVector 25(int64_t) 3 212: 31(int) Constant 5 213: TypePointer StorageBuffer 27(int64_t) 220: TypeVector 27(int64_t) 2 221: TypePointer StorageBuffer 28(i64vec4) 229: TypeVector 27(int64_t) 3 243: 31(int) Constant 6 244: TypePointer StorageBuffer 29(float16_t) 251: TypeVector 29(float16_t) 2 252: TypePointer StorageBuffer 30(f16vec4) 260: TypeVector 29(float16_t) 3 273: TypeVector 6(int) 3 274: 6(int) Constant 8 275: 6(int) Constant 1 276: 273(ivec3) ConstantComposite 274 275 275 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 36: 6(int) Load 8(invocation) 39: 38(ptr) AccessChain 35(data) 36 37 40: 31(int) Load 39 43: 42(bool) SLessThan 40 41 45: 42(bool) GroupNonUniformAll 44 43 SelectionMerge 47 None BranchConditional 45 46 172 46: Label 48: 6(int) Load 8(invocation) 51: 50(ptr) AccessChain 35(data) 41 41 49 52: 17(int8_t) Load 51 53: 42(bool) GroupNonUniformAllEqual 44 52 55: 31(int) Select 53 54 41 56: 38(ptr) AccessChain 35(data) 48 37 Store 56 55 57: 6(int) Load 8(invocation) 60: 59(ptr) AccessChain 35(data) 54 41 61: 18(i8vec4) Load 60 62: 58(i8vec2) VectorShuffle 61 61 0 1 63: 42(bool) GroupNonUniformAllEqual 44 62 64: 31(int) Select 63 54 41 65: 38(ptr) AccessChain 35(data) 57 37 Store 65 64 66: 6(int) Load 8(invocation) 69: 59(ptr) AccessChain 35(data) 67 41 70: 18(i8vec4) Load 69 71: 68(i8vec3) VectorShuffle 70 70 0 1 2 72: 42(bool) GroupNonUniformAllEqual 44 71 73: 31(int) Select 72 54 41 74: 38(ptr) AccessChain 35(data) 66 37 Store 74 73 75: 6(int) Load 8(invocation) 77: 59(ptr) AccessChain 35(data) 76 41 78: 18(i8vec4) Load 77 79: 42(bool) GroupNonUniformAllEqual 44 78 80: 31(int) Select 79 54 41 81: 38(ptr) AccessChain 35(data) 75 37 Store 81 80 82: 6(int) Load 8(invocation) 84: 83(ptr) AccessChain 35(data) 41 54 49 85: 19(int8_t) Load 84 86: 42(bool) GroupNonUniformAllEqual 44 85 87: 31(int) Select 86 54 41 88: 38(ptr) AccessChain 35(data) 82 37 Store 88 87 89: 6(int) Load 8(invocation) 92: 91(ptr) AccessChain 35(data) 54 54 93: 20(i8vec4) Load 92 94: 90(i8vec2) VectorShuffle 93 93 0 1 95: 42(bool) GroupNonUniformAllEqual 44 94 96: 31(int) Select 95 54 41 97: 38(ptr) AccessChain 35(data) 89 37 Store 97 96 98: 6(int) Load 8(invocation) 100: 91(ptr) AccessChain 35(data) 67 54 101: 20(i8vec4) Load 100 102: 99(i8vec3) VectorShuffle 101 101 0 1 2 103: 42(bool) GroupNonUniformAllEqual 44 102 104: 31(int) Select 103 54 41 105: 38(ptr) AccessChain 35(data) 98 37 Store 105 104 106: 6(int) Load 8(invocation) 107: 91(ptr) AccessChain 35(data) 76 54 108: 20(i8vec4) Load 107 109: 42(bool) GroupNonUniformAllEqual 44 108 110: 31(int) Select 109 54 41 111: 38(ptr) AccessChain 35(data) 106 37 Store 111 110 112: 6(int) Load 8(invocation) 114: 113(ptr) AccessChain 35(data) 41 67 49 115: 21(int16_t) Load 114 116: 42(bool) GroupNonUniformAllEqual 44 115 117: 31(int) Select 116 54 41 118: 38(ptr) AccessChain 35(data) 112 37 Store 118 117 119: 6(int) Load 8(invocation) 122: 121(ptr) AccessChain 35(data) 54 67 123: 22(i16vec4) Load 122 124:120(i16vec2) VectorShuffle 123 123 0 1 125: 42(bool) GroupNonUniformAllEqual 44 124 126: 31(int) Select 125 54 41 127: 38(ptr) AccessChain 35(data) 119 37 Store 127 126 128: 6(int) Load 8(invocation) 130: 121(ptr) AccessChain 35(data) 67 67 131: 22(i16vec4) Load 130 132:129(i16vec3) VectorShuffle 131 131 0 1 2 133: 42(bool) GroupNonUniformAllEqual 44 132 134: 31(int) Select 133 54 41 135: 38(ptr) AccessChain 35(data) 128 37 Store 135 134 136: 6(int) Load 8(invocation) 137: 121(ptr) AccessChain 35(data) 76 67 138: 22(i16vec4) Load 137 139: 42(bool) GroupNonUniformAllEqual 44 138 140: 31(int) Select 139 54 41 141: 38(ptr) AccessChain 35(data) 136 37 Store 141 140 142: 6(int) Load 8(invocation) 144: 143(ptr) AccessChain 35(data) 41 76 49 145: 23(int16_t) Load 144 146: 42(bool) GroupNonUniformAllEqual 44 145 147: 31(int) Select 146 54 41 148: 38(ptr) AccessChain 35(data) 142 37 Store 148 147 149: 6(int) Load 8(invocation) 152: 151(ptr) AccessChain 35(data) 54 76 153: 24(i16vec4) Load 152 154:150(i16vec2) VectorShuffle 153 153 0 1 155: 42(bool) GroupNonUniformAllEqual 44 154 156: 31(int) Select 155 54 41 157: 38(ptr) AccessChain 35(data) 149 37 Store 157 156 158: 6(int) Load 8(invocation) 160: 151(ptr) AccessChain 35(data) 67 76 161: 24(i16vec4) Load 160 162:159(i16vec3) VectorShuffle 161 161 0 1 2 163: 42(bool) GroupNonUniformAllEqual 44 162 164: 31(int) Select 163 54 41 165: 38(ptr) AccessChain 35(data) 158 37 Store 165 164 166: 6(int) Load 8(invocation) 167: 151(ptr) AccessChain 35(data) 76 76 168: 24(i16vec4) Load 167 169: 42(bool) GroupNonUniformAllEqual 44 168 170: 31(int) Select 169 54 41 171: 38(ptr) AccessChain 35(data) 166 37 Store 171 170 Branch 47 172: Label 173: 6(int) Load 8(invocation) 174: 38(ptr) AccessChain 35(data) 173 37 175: 31(int) Load 174 176: 42(bool) SLessThan 175 41 177: 42(bool) GroupNonUniformAny 44 176 SelectionMerge 179 None BranchConditional 177 178 179 178: Label 180: 6(int) Load 8(invocation) 183: 182(ptr) AccessChain 35(data) 41 181 49 184: 25(int64_t) Load 183 185: 42(bool) GroupNonUniformAllEqual 44 184 186: 31(int) Select 185 54 41 187: 38(ptr) AccessChain 35(data) 180 37 Store 187 186 188: 6(int) Load 8(invocation) 191: 190(ptr) AccessChain 35(data) 54 181 192: 26(i64vec4) Load 191 193:189(i64vec2) VectorShuffle 192 192 0 1 194: 42(bool) GroupNonUniformAllEqual 44 193 195: 31(int) Select 194 54 41 196: 38(ptr) AccessChain 35(data) 188 37 Store 196 195 197: 6(int) Load 8(invocation) 199: 190(ptr) AccessChain 35(data) 67 181 200: 26(i64vec4) Load 199 201:198(i64vec3) VectorShuffle 200 200 0 1 2 202: 42(bool) GroupNonUniformAllEqual 44 201 203: 31(int) Select 202 54 41 204: 38(ptr) AccessChain 35(data) 197 37 Store 204 203 205: 6(int) Load 8(invocation) 206: 190(ptr) AccessChain 35(data) 76 181 207: 26(i64vec4) Load 206 208: 42(bool) GroupNonUniformAllEqual 44 207 209: 31(int) Select 208 54 41 210: 38(ptr) AccessChain 35(data) 205 37 Store 210 209 211: 6(int) Load 8(invocation) 214: 213(ptr) AccessChain 35(data) 41 212 49 215: 27(int64_t) Load 214 216: 42(bool) GroupNonUniformAllEqual 44 215 217: 31(int) Select 216 54 41 218: 38(ptr) AccessChain 35(data) 211 37 Store 218 217 219: 6(int) Load 8(invocation) 222: 221(ptr) AccessChain 35(data) 54 212 223: 28(i64vec4) Load 222 224:220(i64vec2) VectorShuffle 223 223 0 1 225: 42(bool) GroupNonUniformAllEqual 44 224 226: 31(int) Select 225 54 41 227: 38(ptr) AccessChain 35(data) 219 37 Store 227 226 228: 6(int) Load 8(invocation) 230: 221(ptr) AccessChain 35(data) 67 212 231: 28(i64vec4) Load 230 232:229(i64vec3) VectorShuffle 231 231 0 1 2 233: 42(bool) GroupNonUniformAllEqual 44 232 234: 31(int) Select 233 54 41 235: 38(ptr) AccessChain 35(data) 228 37 Store 235 234 236: 6(int) Load 8(invocation) 237: 221(ptr) AccessChain 35(data) 76 212 238: 28(i64vec4) Load 237 239: 42(bool) GroupNonUniformAllEqual 44 238 240: 31(int) Select 239 54 41 241: 38(ptr) AccessChain 35(data) 236 37 Store 241 240 242: 6(int) Load 8(invocation) 245: 244(ptr) AccessChain 35(data) 41 243 49 246:29(float16_t) Load 245 247: 42(bool) GroupNonUniformAllEqual 44 246 248: 31(int) Select 247 54 41 249: 38(ptr) AccessChain 35(data) 242 37 Store 249 248 250: 6(int) Load 8(invocation) 253: 252(ptr) AccessChain 35(data) 54 243 254: 30(f16vec4) Load 253 255:251(f16vec2) VectorShuffle 254 254 0 1 256: 42(bool) GroupNonUniformAllEqual 44 255 257: 31(int) Select 256 54 41 258: 38(ptr) AccessChain 35(data) 250 37 Store 258 257 259: 6(int) Load 8(invocation) 261: 252(ptr) AccessChain 35(data) 67 243 262: 30(f16vec4) Load 261 263:260(f16vec3) VectorShuffle 262 262 0 1 2 264: 42(bool) GroupNonUniformAllEqual 44 263 265: 31(int) Select 264 54 41 266: 38(ptr) AccessChain 35(data) 259 37 Store 266 265 267: 6(int) Load 8(invocation) 268: 252(ptr) AccessChain 35(data) 76 243 269: 30(f16vec4) Load 268 270: 42(bool) GroupNonUniformAllEqual 44 269 271: 31(int) Select 270 54 41 272: 38(ptr) AccessChain 35(data) 267 37 Store 272 271 Branch 179 179: Label Branch 47 47: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out000066400000000000000000000074451506534232700266220ustar00rootroot00000000000000spv.subgroupExtendedTypesVoteNeg.comp ERROR: 0:29: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:30: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:31: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:32: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:34: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:35: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:36: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:37: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 ERROR: 0:39: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:40: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:41: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:42: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:44: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:45: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:46: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:47: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 ERROR: 0:51: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:52: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:53: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:56: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:57: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:58: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 ERROR: 0:61: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:62: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:63: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 ERROR: 28 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.subgroupPartitioned.comp.out000066400000000000000000005550311506534232700250260ustar00rootroot00000000000000spv.subgroupPartitioned.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 2807 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformPartitionedNV Extension "SPV_NV_shader_subgroup_partitioned" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_NV_shader_subgroup_partitioned" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 19 "ballot" Name 28 "Buffers" MemberName 28(Buffers) 0 "f4" MemberName 28(Buffers) 1 "i4" MemberName 28(Buffers) 2 "u4" MemberName 28(Buffers) 3 "d4" Name 31 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 28(Buffers) Block MemberDecorate 28(Buffers) 0 Offset 0 MemberDecorate 28(Buffers) 1 Offset 16 MemberDecorate 28(Buffers) 2 Offset 32 MemberDecorate 28(Buffers) 3 Offset 64 Decorate 31(data) Binding 0 Decorate 31(data) DescriptorSet 0 Decorate 2806 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeVector 6(int) 4 18: TypePointer Function 17(ivec4) 22: TypeFloat 32 23: TypeVector 22(float) 4 24: TypeInt 32 1 25: TypeVector 24(int) 4 26: TypeFloat 64 27: TypeVector 26(float64_t) 4 28(Buffers): TypeStruct 23(fvec4) 25(ivec4) 17(ivec4) 27(f64vec4) 29: TypeArray 28(Buffers) 15 30: TypePointer StorageBuffer 29 31(data): 30(ptr) Variable StorageBuffer 33: 24(int) Constant 2 34: 24(int) Constant 0 35: 6(int) Constant 0 36: TypePointer StorageBuffer 22(float) 40: TypePointer StorageBuffer 17(ivec4) 43: TypeVector 22(float) 2 44: TypePointer StorageBuffer 23(fvec4) 51: TypeVector 22(float) 3 63: 24(int) Constant 1 64: TypePointer StorageBuffer 24(int) 70: TypeVector 24(int) 2 71: TypePointer StorageBuffer 25(ivec4) 78: TypeVector 24(int) 3 90: TypePointer StorageBuffer 6(int) 96: TypeVector 6(int) 2 103: TypeVector 6(int) 3 115: 24(int) Constant 3 116: TypePointer StorageBuffer 26(float64_t) 122: TypeVector 26(float64_t) 2 123: TypePointer StorageBuffer 27(f64vec4) 130: TypeVector 26(float64_t) 3 144: TypeBool 152: TypeVector 144(bool) 2 153: 96(ivec2) ConstantComposite 35 35 161: TypeVector 144(bool) 3 162: 103(ivec3) ConstantComposite 35 35 35 169: TypeVector 144(bool) 4 170: 17(ivec4) ConstantComposite 35 35 35 35 178: 6(int) Constant 3 189: 6(int) Constant 1 202: 6(int) Constant 2 801: 70(ivec2) ConstantComposite 34 34 805: 70(ivec2) ConstantComposite 63 63 815: 78(ivec3) ConstantComposite 34 34 34 819: 78(ivec3) ConstantComposite 63 63 63 830: 25(ivec4) ConstantComposite 34 34 34 34 834: 25(ivec4) ConstantComposite 63 63 63 63 2805: 6(int) Constant 8 2806: 103(ivec3) ConstantComposite 2805 189 189 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 19(ballot): 18(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 20: 6(int) Load 8(invocation) 21: 17(ivec4) GroupNonUniformPartitionNV 20 Store 19(ballot) 21 32: 6(int) Load 8(invocation) 37: 36(ptr) AccessChain 31(data) 34 34 35 38: 22(float) Load 37 39: 17(ivec4) GroupNonUniformPartitionNV 38 41: 40(ptr) AccessChain 31(data) 32 33 Store 41 39 42: 6(int) Load 8(invocation) 45: 44(ptr) AccessChain 31(data) 34 34 46: 23(fvec4) Load 45 47: 43(fvec2) VectorShuffle 46 46 0 1 48: 17(ivec4) GroupNonUniformPartitionNV 47 49: 40(ptr) AccessChain 31(data) 42 33 Store 49 48 50: 6(int) Load 8(invocation) 52: 44(ptr) AccessChain 31(data) 34 34 53: 23(fvec4) Load 52 54: 51(fvec3) VectorShuffle 53 53 0 1 2 55: 17(ivec4) GroupNonUniformPartitionNV 54 56: 40(ptr) AccessChain 31(data) 50 33 Store 56 55 57: 6(int) Load 8(invocation) 58: 44(ptr) AccessChain 31(data) 34 34 59: 23(fvec4) Load 58 60: 17(ivec4) GroupNonUniformPartitionNV 59 61: 40(ptr) AccessChain 31(data) 57 33 Store 61 60 62: 6(int) Load 8(invocation) 65: 64(ptr) AccessChain 31(data) 34 63 35 66: 24(int) Load 65 67: 17(ivec4) GroupNonUniformPartitionNV 66 68: 40(ptr) AccessChain 31(data) 62 33 Store 68 67 69: 6(int) Load 8(invocation) 72: 71(ptr) AccessChain 31(data) 34 63 73: 25(ivec4) Load 72 74: 70(ivec2) VectorShuffle 73 73 0 1 75: 17(ivec4) GroupNonUniformPartitionNV 74 76: 40(ptr) AccessChain 31(data) 69 33 Store 76 75 77: 6(int) Load 8(invocation) 79: 71(ptr) AccessChain 31(data) 34 63 80: 25(ivec4) Load 79 81: 78(ivec3) VectorShuffle 80 80 0 1 2 82: 17(ivec4) GroupNonUniformPartitionNV 81 83: 40(ptr) AccessChain 31(data) 77 33 Store 83 82 84: 6(int) Load 8(invocation) 85: 71(ptr) AccessChain 31(data) 34 63 86: 25(ivec4) Load 85 87: 17(ivec4) GroupNonUniformPartitionNV 86 88: 40(ptr) AccessChain 31(data) 84 33 Store 88 87 89: 6(int) Load 8(invocation) 91: 90(ptr) AccessChain 31(data) 34 33 35 92: 6(int) Load 91 93: 17(ivec4) GroupNonUniformPartitionNV 92 94: 40(ptr) AccessChain 31(data) 89 33 Store 94 93 95: 6(int) Load 8(invocation) 97: 40(ptr) AccessChain 31(data) 34 33 98: 17(ivec4) Load 97 99: 96(ivec2) VectorShuffle 98 98 0 1 100: 17(ivec4) GroupNonUniformPartitionNV 99 101: 40(ptr) AccessChain 31(data) 95 33 Store 101 100 102: 6(int) Load 8(invocation) 104: 40(ptr) AccessChain 31(data) 34 33 105: 17(ivec4) Load 104 106: 103(ivec3) VectorShuffle 105 105 0 1 2 107: 17(ivec4) GroupNonUniformPartitionNV 106 108: 40(ptr) AccessChain 31(data) 102 33 Store 108 107 109: 6(int) Load 8(invocation) 110: 40(ptr) AccessChain 31(data) 34 33 111: 17(ivec4) Load 110 112: 17(ivec4) GroupNonUniformPartitionNV 111 113: 40(ptr) AccessChain 31(data) 109 33 Store 113 112 114: 6(int) Load 8(invocation) 117: 116(ptr) AccessChain 31(data) 34 115 35 118:26(float64_t) Load 117 119: 17(ivec4) GroupNonUniformPartitionNV 118 120: 40(ptr) AccessChain 31(data) 114 33 Store 120 119 121: 6(int) Load 8(invocation) 124: 123(ptr) AccessChain 31(data) 34 115 125: 27(f64vec4) Load 124 126:122(f64vec2) VectorShuffle 125 125 0 1 127: 17(ivec4) GroupNonUniformPartitionNV 126 128: 40(ptr) AccessChain 31(data) 121 33 Store 128 127 129: 6(int) Load 8(invocation) 131: 123(ptr) AccessChain 31(data) 34 115 132: 27(f64vec4) Load 131 133:130(f64vec3) VectorShuffle 132 132 0 1 2 134: 17(ivec4) GroupNonUniformPartitionNV 133 135: 40(ptr) AccessChain 31(data) 129 33 Store 135 134 136: 6(int) Load 8(invocation) 137: 123(ptr) AccessChain 31(data) 34 115 138: 27(f64vec4) Load 137 139: 17(ivec4) GroupNonUniformPartitionNV 138 140: 40(ptr) AccessChain 31(data) 136 33 Store 140 139 141: 6(int) Load 8(invocation) 142: 64(ptr) AccessChain 31(data) 34 63 35 143: 24(int) Load 142 145: 144(bool) INotEqual 143 35 146: 17(ivec4) GroupNonUniformPartitionNV 145 147: 40(ptr) AccessChain 31(data) 141 33 Store 147 146 148: 6(int) Load 8(invocation) 149: 71(ptr) AccessChain 31(data) 34 63 150: 25(ivec4) Load 149 151: 70(ivec2) VectorShuffle 150 150 0 1 154: 152(bvec2) INotEqual 151 153 155: 17(ivec4) GroupNonUniformPartitionNV 154 156: 40(ptr) AccessChain 31(data) 148 33 Store 156 155 157: 6(int) Load 8(invocation) 158: 71(ptr) AccessChain 31(data) 34 63 159: 25(ivec4) Load 158 160: 78(ivec3) VectorShuffle 159 159 0 1 2 163: 161(bvec3) INotEqual 160 162 164: 17(ivec4) GroupNonUniformPartitionNV 163 165: 40(ptr) AccessChain 31(data) 157 33 Store 165 164 166: 6(int) Load 8(invocation) 167: 71(ptr) AccessChain 31(data) 34 63 168: 25(ivec4) Load 167 171: 169(bvec4) INotEqual 168 170 172: 17(ivec4) GroupNonUniformPartitionNV 171 173: 40(ptr) AccessChain 31(data) 166 33 Store 173 172 174: 6(int) Load 8(invocation) 175: 36(ptr) AccessChain 31(data) 34 34 35 176: 22(float) Load 175 177: 17(ivec4) Load 19(ballot) 179: 22(float) GroupNonUniformFAdd 178 PartitionedReduceNV 176 177 180: 36(ptr) AccessChain 31(data) 174 34 35 Store 180 179 181: 6(int) Load 8(invocation) 182: 44(ptr) AccessChain 31(data) 63 34 183: 23(fvec4) Load 182 184: 43(fvec2) VectorShuffle 183 183 0 1 185: 17(ivec4) Load 19(ballot) 186: 43(fvec2) GroupNonUniformFAdd 178 PartitionedReduceNV 184 185 187: 36(ptr) AccessChain 31(data) 181 34 35 188: 22(float) CompositeExtract 186 0 Store 187 188 190: 36(ptr) AccessChain 31(data) 181 34 189 191: 22(float) CompositeExtract 186 1 Store 190 191 192: 6(int) Load 8(invocation) 193: 44(ptr) AccessChain 31(data) 33 34 194: 23(fvec4) Load 193 195: 51(fvec3) VectorShuffle 194 194 0 1 2 196: 17(ivec4) Load 19(ballot) 197: 51(fvec3) GroupNonUniformFAdd 178 PartitionedReduceNV 195 196 198: 36(ptr) AccessChain 31(data) 192 34 35 199: 22(float) CompositeExtract 197 0 Store 198 199 200: 36(ptr) AccessChain 31(data) 192 34 189 201: 22(float) CompositeExtract 197 1 Store 200 201 203: 36(ptr) AccessChain 31(data) 192 34 202 204: 22(float) CompositeExtract 197 2 Store 203 204 205: 6(int) Load 8(invocation) 206: 44(ptr) AccessChain 31(data) 115 34 207: 23(fvec4) Load 206 208: 17(ivec4) Load 19(ballot) 209: 23(fvec4) GroupNonUniformFAdd 178 PartitionedReduceNV 207 208 210: 44(ptr) AccessChain 31(data) 205 34 Store 210 209 211: 6(int) Load 8(invocation) 212: 64(ptr) AccessChain 31(data) 34 63 35 213: 24(int) Load 212 214: 17(ivec4) Load 19(ballot) 215: 24(int) GroupNonUniformIAdd 178 PartitionedReduceNV 213 214 216: 64(ptr) AccessChain 31(data) 211 63 35 Store 216 215 217: 6(int) Load 8(invocation) 218: 71(ptr) AccessChain 31(data) 63 63 219: 25(ivec4) Load 218 220: 70(ivec2) VectorShuffle 219 219 0 1 221: 17(ivec4) Load 19(ballot) 222: 70(ivec2) GroupNonUniformIAdd 178 PartitionedReduceNV 220 221 223: 64(ptr) AccessChain 31(data) 217 63 35 224: 24(int) CompositeExtract 222 0 Store 223 224 225: 64(ptr) AccessChain 31(data) 217 63 189 226: 24(int) CompositeExtract 222 1 Store 225 226 227: 6(int) Load 8(invocation) 228: 71(ptr) AccessChain 31(data) 33 63 229: 25(ivec4) Load 228 230: 78(ivec3) VectorShuffle 229 229 0 1 2 231: 17(ivec4) Load 19(ballot) 232: 78(ivec3) GroupNonUniformIAdd 178 PartitionedReduceNV 230 231 233: 64(ptr) AccessChain 31(data) 227 63 35 234: 24(int) CompositeExtract 232 0 Store 233 234 235: 64(ptr) AccessChain 31(data) 227 63 189 236: 24(int) CompositeExtract 232 1 Store 235 236 237: 64(ptr) AccessChain 31(data) 227 63 202 238: 24(int) CompositeExtract 232 2 Store 237 238 239: 6(int) Load 8(invocation) 240: 71(ptr) AccessChain 31(data) 115 63 241: 25(ivec4) Load 240 242: 17(ivec4) Load 19(ballot) 243: 25(ivec4) GroupNonUniformIAdd 178 PartitionedReduceNV 241 242 244: 71(ptr) AccessChain 31(data) 239 63 Store 244 243 245: 6(int) Load 8(invocation) 246: 90(ptr) AccessChain 31(data) 34 33 35 247: 6(int) Load 246 248: 17(ivec4) Load 19(ballot) 249: 6(int) GroupNonUniformIAdd 178 PartitionedReduceNV 247 248 250: 90(ptr) AccessChain 31(data) 245 33 35 Store 250 249 251: 6(int) Load 8(invocation) 252: 40(ptr) AccessChain 31(data) 63 33 253: 17(ivec4) Load 252 254: 96(ivec2) VectorShuffle 253 253 0 1 255: 17(ivec4) Load 19(ballot) 256: 96(ivec2) GroupNonUniformIAdd 178 PartitionedReduceNV 254 255 257: 90(ptr) AccessChain 31(data) 251 33 35 258: 6(int) CompositeExtract 256 0 Store 257 258 259: 90(ptr) AccessChain 31(data) 251 33 189 260: 6(int) CompositeExtract 256 1 Store 259 260 261: 6(int) Load 8(invocation) 262: 40(ptr) AccessChain 31(data) 33 33 263: 17(ivec4) Load 262 264: 103(ivec3) VectorShuffle 263 263 0 1 2 265: 17(ivec4) Load 19(ballot) 266: 103(ivec3) GroupNonUniformIAdd 178 PartitionedReduceNV 264 265 267: 90(ptr) AccessChain 31(data) 261 33 35 268: 6(int) CompositeExtract 266 0 Store 267 268 269: 90(ptr) AccessChain 31(data) 261 33 189 270: 6(int) CompositeExtract 266 1 Store 269 270 271: 90(ptr) AccessChain 31(data) 261 33 202 272: 6(int) CompositeExtract 266 2 Store 271 272 273: 6(int) Load 8(invocation) 274: 40(ptr) AccessChain 31(data) 115 33 275: 17(ivec4) Load 274 276: 17(ivec4) Load 19(ballot) 277: 17(ivec4) GroupNonUniformIAdd 178 PartitionedReduceNV 275 276 278: 40(ptr) AccessChain 31(data) 273 33 Store 278 277 279: 6(int) Load 8(invocation) 280: 116(ptr) AccessChain 31(data) 34 115 35 281:26(float64_t) Load 280 282: 17(ivec4) Load 19(ballot) 283:26(float64_t) GroupNonUniformFAdd 178 PartitionedReduceNV 281 282 284: 116(ptr) AccessChain 31(data) 279 115 35 Store 284 283 285: 6(int) Load 8(invocation) 286: 123(ptr) AccessChain 31(data) 63 115 287: 27(f64vec4) Load 286 288:122(f64vec2) VectorShuffle 287 287 0 1 289: 17(ivec4) Load 19(ballot) 290:122(f64vec2) GroupNonUniformFAdd 178 PartitionedReduceNV 288 289 291: 116(ptr) AccessChain 31(data) 285 115 35 292:26(float64_t) CompositeExtract 290 0 Store 291 292 293: 116(ptr) AccessChain 31(data) 285 115 189 294:26(float64_t) CompositeExtract 290 1 Store 293 294 295: 6(int) Load 8(invocation) 296: 123(ptr) AccessChain 31(data) 33 115 297: 27(f64vec4) Load 296 298:130(f64vec3) VectorShuffle 297 297 0 1 2 299: 17(ivec4) Load 19(ballot) 300:130(f64vec3) GroupNonUniformFAdd 178 PartitionedReduceNV 298 299 301: 116(ptr) AccessChain 31(data) 295 115 35 302:26(float64_t) CompositeExtract 300 0 Store 301 302 303: 116(ptr) AccessChain 31(data) 295 115 189 304:26(float64_t) CompositeExtract 300 1 Store 303 304 305: 116(ptr) AccessChain 31(data) 295 115 202 306:26(float64_t) CompositeExtract 300 2 Store 305 306 307: 6(int) Load 8(invocation) 308: 123(ptr) AccessChain 31(data) 115 115 309: 27(f64vec4) Load 308 310: 17(ivec4) Load 19(ballot) 311: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedReduceNV 309 310 312: 123(ptr) AccessChain 31(data) 307 115 Store 312 311 313: 6(int) Load 8(invocation) 314: 36(ptr) AccessChain 31(data) 34 34 35 315: 22(float) Load 314 316: 17(ivec4) Load 19(ballot) 317: 22(float) GroupNonUniformFMul 178 PartitionedReduceNV 315 316 318: 36(ptr) AccessChain 31(data) 313 34 35 Store 318 317 319: 6(int) Load 8(invocation) 320: 44(ptr) AccessChain 31(data) 63 34 321: 23(fvec4) Load 320 322: 43(fvec2) VectorShuffle 321 321 0 1 323: 17(ivec4) Load 19(ballot) 324: 43(fvec2) GroupNonUniformFMul 178 PartitionedReduceNV 322 323 325: 36(ptr) AccessChain 31(data) 319 34 35 326: 22(float) CompositeExtract 324 0 Store 325 326 327: 36(ptr) AccessChain 31(data) 319 34 189 328: 22(float) CompositeExtract 324 1 Store 327 328 329: 6(int) Load 8(invocation) 330: 44(ptr) AccessChain 31(data) 33 34 331: 23(fvec4) Load 330 332: 51(fvec3) VectorShuffle 331 331 0 1 2 333: 17(ivec4) Load 19(ballot) 334: 51(fvec3) GroupNonUniformFMul 178 PartitionedReduceNV 332 333 335: 36(ptr) AccessChain 31(data) 329 34 35 336: 22(float) CompositeExtract 334 0 Store 335 336 337: 36(ptr) AccessChain 31(data) 329 34 189 338: 22(float) CompositeExtract 334 1 Store 337 338 339: 36(ptr) AccessChain 31(data) 329 34 202 340: 22(float) CompositeExtract 334 2 Store 339 340 341: 6(int) Load 8(invocation) 342: 44(ptr) AccessChain 31(data) 115 34 343: 23(fvec4) Load 342 344: 17(ivec4) Load 19(ballot) 345: 23(fvec4) GroupNonUniformFMul 178 PartitionedReduceNV 343 344 346: 44(ptr) AccessChain 31(data) 341 34 Store 346 345 347: 6(int) Load 8(invocation) 348: 64(ptr) AccessChain 31(data) 34 63 35 349: 24(int) Load 348 350: 17(ivec4) Load 19(ballot) 351: 24(int) GroupNonUniformIMul 178 PartitionedReduceNV 349 350 352: 64(ptr) AccessChain 31(data) 347 63 35 Store 352 351 353: 6(int) Load 8(invocation) 354: 71(ptr) AccessChain 31(data) 63 63 355: 25(ivec4) Load 354 356: 70(ivec2) VectorShuffle 355 355 0 1 357: 17(ivec4) Load 19(ballot) 358: 70(ivec2) GroupNonUniformIMul 178 PartitionedReduceNV 356 357 359: 64(ptr) AccessChain 31(data) 353 63 35 360: 24(int) CompositeExtract 358 0 Store 359 360 361: 64(ptr) AccessChain 31(data) 353 63 189 362: 24(int) CompositeExtract 358 1 Store 361 362 363: 6(int) Load 8(invocation) 364: 71(ptr) AccessChain 31(data) 33 63 365: 25(ivec4) Load 364 366: 78(ivec3) VectorShuffle 365 365 0 1 2 367: 17(ivec4) Load 19(ballot) 368: 78(ivec3) GroupNonUniformIMul 178 PartitionedReduceNV 366 367 369: 64(ptr) AccessChain 31(data) 363 63 35 370: 24(int) CompositeExtract 368 0 Store 369 370 371: 64(ptr) AccessChain 31(data) 363 63 189 372: 24(int) CompositeExtract 368 1 Store 371 372 373: 64(ptr) AccessChain 31(data) 363 63 202 374: 24(int) CompositeExtract 368 2 Store 373 374 375: 6(int) Load 8(invocation) 376: 71(ptr) AccessChain 31(data) 115 63 377: 25(ivec4) Load 376 378: 17(ivec4) Load 19(ballot) 379: 25(ivec4) GroupNonUniformIMul 178 PartitionedReduceNV 377 378 380: 71(ptr) AccessChain 31(data) 375 63 Store 380 379 381: 6(int) Load 8(invocation) 382: 90(ptr) AccessChain 31(data) 34 33 35 383: 6(int) Load 382 384: 17(ivec4) Load 19(ballot) 385: 6(int) GroupNonUniformIMul 178 PartitionedReduceNV 383 384 386: 90(ptr) AccessChain 31(data) 381 33 35 Store 386 385 387: 6(int) Load 8(invocation) 388: 40(ptr) AccessChain 31(data) 63 33 389: 17(ivec4) Load 388 390: 96(ivec2) VectorShuffle 389 389 0 1 391: 17(ivec4) Load 19(ballot) 392: 96(ivec2) GroupNonUniformIMul 178 PartitionedReduceNV 390 391 393: 90(ptr) AccessChain 31(data) 387 33 35 394: 6(int) CompositeExtract 392 0 Store 393 394 395: 90(ptr) AccessChain 31(data) 387 33 189 396: 6(int) CompositeExtract 392 1 Store 395 396 397: 6(int) Load 8(invocation) 398: 40(ptr) AccessChain 31(data) 33 33 399: 17(ivec4) Load 398 400: 103(ivec3) VectorShuffle 399 399 0 1 2 401: 17(ivec4) Load 19(ballot) 402: 103(ivec3) GroupNonUniformIMul 178 PartitionedReduceNV 400 401 403: 90(ptr) AccessChain 31(data) 397 33 35 404: 6(int) CompositeExtract 402 0 Store 403 404 405: 90(ptr) AccessChain 31(data) 397 33 189 406: 6(int) CompositeExtract 402 1 Store 405 406 407: 90(ptr) AccessChain 31(data) 397 33 202 408: 6(int) CompositeExtract 402 2 Store 407 408 409: 6(int) Load 8(invocation) 410: 40(ptr) AccessChain 31(data) 115 33 411: 17(ivec4) Load 410 412: 17(ivec4) Load 19(ballot) 413: 17(ivec4) GroupNonUniformIMul 178 PartitionedReduceNV 411 412 414: 40(ptr) AccessChain 31(data) 409 33 Store 414 413 415: 6(int) Load 8(invocation) 416: 116(ptr) AccessChain 31(data) 34 115 35 417:26(float64_t) Load 416 418: 17(ivec4) Load 19(ballot) 419:26(float64_t) GroupNonUniformFMul 178 PartitionedReduceNV 417 418 420: 116(ptr) AccessChain 31(data) 415 115 35 Store 420 419 421: 6(int) Load 8(invocation) 422: 123(ptr) AccessChain 31(data) 63 115 423: 27(f64vec4) Load 422 424:122(f64vec2) VectorShuffle 423 423 0 1 425: 17(ivec4) Load 19(ballot) 426:122(f64vec2) GroupNonUniformFMul 178 PartitionedReduceNV 424 425 427: 116(ptr) AccessChain 31(data) 421 115 35 428:26(float64_t) CompositeExtract 426 0 Store 427 428 429: 116(ptr) AccessChain 31(data) 421 115 189 430:26(float64_t) CompositeExtract 426 1 Store 429 430 431: 6(int) Load 8(invocation) 432: 123(ptr) AccessChain 31(data) 33 115 433: 27(f64vec4) Load 432 434:130(f64vec3) VectorShuffle 433 433 0 1 2 435: 17(ivec4) Load 19(ballot) 436:130(f64vec3) GroupNonUniformFMul 178 PartitionedReduceNV 434 435 437: 116(ptr) AccessChain 31(data) 431 115 35 438:26(float64_t) CompositeExtract 436 0 Store 437 438 439: 116(ptr) AccessChain 31(data) 431 115 189 440:26(float64_t) CompositeExtract 436 1 Store 439 440 441: 116(ptr) AccessChain 31(data) 431 115 202 442:26(float64_t) CompositeExtract 436 2 Store 441 442 443: 6(int) Load 8(invocation) 444: 123(ptr) AccessChain 31(data) 115 115 445: 27(f64vec4) Load 444 446: 17(ivec4) Load 19(ballot) 447: 27(f64vec4) GroupNonUniformFMul 178 PartitionedReduceNV 445 446 448: 123(ptr) AccessChain 31(data) 443 115 Store 448 447 449: 6(int) Load 8(invocation) 450: 36(ptr) AccessChain 31(data) 34 34 35 451: 22(float) Load 450 452: 17(ivec4) Load 19(ballot) 453: 22(float) GroupNonUniformFMin 178 PartitionedReduceNV 451 452 454: 36(ptr) AccessChain 31(data) 449 34 35 Store 454 453 455: 6(int) Load 8(invocation) 456: 44(ptr) AccessChain 31(data) 63 34 457: 23(fvec4) Load 456 458: 43(fvec2) VectorShuffle 457 457 0 1 459: 17(ivec4) Load 19(ballot) 460: 43(fvec2) GroupNonUniformFMin 178 PartitionedReduceNV 458 459 461: 36(ptr) AccessChain 31(data) 455 34 35 462: 22(float) CompositeExtract 460 0 Store 461 462 463: 36(ptr) AccessChain 31(data) 455 34 189 464: 22(float) CompositeExtract 460 1 Store 463 464 465: 6(int) Load 8(invocation) 466: 44(ptr) AccessChain 31(data) 33 34 467: 23(fvec4) Load 466 468: 51(fvec3) VectorShuffle 467 467 0 1 2 469: 17(ivec4) Load 19(ballot) 470: 51(fvec3) GroupNonUniformFMin 178 PartitionedReduceNV 468 469 471: 36(ptr) AccessChain 31(data) 465 34 35 472: 22(float) CompositeExtract 470 0 Store 471 472 473: 36(ptr) AccessChain 31(data) 465 34 189 474: 22(float) CompositeExtract 470 1 Store 473 474 475: 36(ptr) AccessChain 31(data) 465 34 202 476: 22(float) CompositeExtract 470 2 Store 475 476 477: 6(int) Load 8(invocation) 478: 44(ptr) AccessChain 31(data) 115 34 479: 23(fvec4) Load 478 480: 17(ivec4) Load 19(ballot) 481: 23(fvec4) GroupNonUniformFMin 178 PartitionedReduceNV 479 480 482: 44(ptr) AccessChain 31(data) 477 34 Store 482 481 483: 6(int) Load 8(invocation) 484: 64(ptr) AccessChain 31(data) 34 63 35 485: 24(int) Load 484 486: 17(ivec4) Load 19(ballot) 487: 24(int) GroupNonUniformSMin 178 PartitionedReduceNV 485 486 488: 64(ptr) AccessChain 31(data) 483 63 35 Store 488 487 489: 6(int) Load 8(invocation) 490: 71(ptr) AccessChain 31(data) 63 63 491: 25(ivec4) Load 490 492: 70(ivec2) VectorShuffle 491 491 0 1 493: 17(ivec4) Load 19(ballot) 494: 70(ivec2) GroupNonUniformSMin 178 PartitionedReduceNV 492 493 495: 64(ptr) AccessChain 31(data) 489 63 35 496: 24(int) CompositeExtract 494 0 Store 495 496 497: 64(ptr) AccessChain 31(data) 489 63 189 498: 24(int) CompositeExtract 494 1 Store 497 498 499: 6(int) Load 8(invocation) 500: 71(ptr) AccessChain 31(data) 33 63 501: 25(ivec4) Load 500 502: 78(ivec3) VectorShuffle 501 501 0 1 2 503: 17(ivec4) Load 19(ballot) 504: 78(ivec3) GroupNonUniformSMin 178 PartitionedReduceNV 502 503 505: 64(ptr) AccessChain 31(data) 499 63 35 506: 24(int) CompositeExtract 504 0 Store 505 506 507: 64(ptr) AccessChain 31(data) 499 63 189 508: 24(int) CompositeExtract 504 1 Store 507 508 509: 64(ptr) AccessChain 31(data) 499 63 202 510: 24(int) CompositeExtract 504 2 Store 509 510 511: 6(int) Load 8(invocation) 512: 71(ptr) AccessChain 31(data) 115 63 513: 25(ivec4) Load 512 514: 17(ivec4) Load 19(ballot) 515: 25(ivec4) GroupNonUniformSMin 178 PartitionedReduceNV 513 514 516: 71(ptr) AccessChain 31(data) 511 63 Store 516 515 517: 6(int) Load 8(invocation) 518: 90(ptr) AccessChain 31(data) 34 33 35 519: 6(int) Load 518 520: 17(ivec4) Load 19(ballot) 521: 6(int) GroupNonUniformUMin 178 PartitionedReduceNV 519 520 522: 90(ptr) AccessChain 31(data) 517 33 35 Store 522 521 523: 6(int) Load 8(invocation) 524: 40(ptr) AccessChain 31(data) 63 33 525: 17(ivec4) Load 524 526: 96(ivec2) VectorShuffle 525 525 0 1 527: 17(ivec4) Load 19(ballot) 528: 96(ivec2) GroupNonUniformUMin 178 PartitionedReduceNV 526 527 529: 90(ptr) AccessChain 31(data) 523 33 35 530: 6(int) CompositeExtract 528 0 Store 529 530 531: 90(ptr) AccessChain 31(data) 523 33 189 532: 6(int) CompositeExtract 528 1 Store 531 532 533: 6(int) Load 8(invocation) 534: 40(ptr) AccessChain 31(data) 33 33 535: 17(ivec4) Load 534 536: 103(ivec3) VectorShuffle 535 535 0 1 2 537: 17(ivec4) Load 19(ballot) 538: 103(ivec3) GroupNonUniformUMin 178 PartitionedReduceNV 536 537 539: 90(ptr) AccessChain 31(data) 533 33 35 540: 6(int) CompositeExtract 538 0 Store 539 540 541: 90(ptr) AccessChain 31(data) 533 33 189 542: 6(int) CompositeExtract 538 1 Store 541 542 543: 90(ptr) AccessChain 31(data) 533 33 202 544: 6(int) CompositeExtract 538 2 Store 543 544 545: 6(int) Load 8(invocation) 546: 40(ptr) AccessChain 31(data) 115 33 547: 17(ivec4) Load 546 548: 17(ivec4) Load 19(ballot) 549: 17(ivec4) GroupNonUniformUMin 178 PartitionedReduceNV 547 548 550: 40(ptr) AccessChain 31(data) 545 33 Store 550 549 551: 6(int) Load 8(invocation) 552: 116(ptr) AccessChain 31(data) 34 115 35 553:26(float64_t) Load 552 554: 17(ivec4) Load 19(ballot) 555:26(float64_t) GroupNonUniformFMin 178 PartitionedReduceNV 553 554 556: 116(ptr) AccessChain 31(data) 551 115 35 Store 556 555 557: 6(int) Load 8(invocation) 558: 123(ptr) AccessChain 31(data) 63 115 559: 27(f64vec4) Load 558 560:122(f64vec2) VectorShuffle 559 559 0 1 561: 17(ivec4) Load 19(ballot) 562:122(f64vec2) GroupNonUniformFMin 178 PartitionedReduceNV 560 561 563: 116(ptr) AccessChain 31(data) 557 115 35 564:26(float64_t) CompositeExtract 562 0 Store 563 564 565: 116(ptr) AccessChain 31(data) 557 115 189 566:26(float64_t) CompositeExtract 562 1 Store 565 566 567: 6(int) Load 8(invocation) 568: 123(ptr) AccessChain 31(data) 33 115 569: 27(f64vec4) Load 568 570:130(f64vec3) VectorShuffle 569 569 0 1 2 571: 17(ivec4) Load 19(ballot) 572:130(f64vec3) GroupNonUniformFMin 178 PartitionedReduceNV 570 571 573: 116(ptr) AccessChain 31(data) 567 115 35 574:26(float64_t) CompositeExtract 572 0 Store 573 574 575: 116(ptr) AccessChain 31(data) 567 115 189 576:26(float64_t) CompositeExtract 572 1 Store 575 576 577: 116(ptr) AccessChain 31(data) 567 115 202 578:26(float64_t) CompositeExtract 572 2 Store 577 578 579: 6(int) Load 8(invocation) 580: 123(ptr) AccessChain 31(data) 115 115 581: 27(f64vec4) Load 580 582: 17(ivec4) Load 19(ballot) 583: 27(f64vec4) GroupNonUniformFMin 178 PartitionedReduceNV 581 582 584: 123(ptr) AccessChain 31(data) 579 115 Store 584 583 585: 6(int) Load 8(invocation) 586: 36(ptr) AccessChain 31(data) 34 34 35 587: 22(float) Load 586 588: 17(ivec4) Load 19(ballot) 589: 22(float) GroupNonUniformFMax 178 PartitionedReduceNV 587 588 590: 36(ptr) AccessChain 31(data) 585 34 35 Store 590 589 591: 6(int) Load 8(invocation) 592: 44(ptr) AccessChain 31(data) 63 34 593: 23(fvec4) Load 592 594: 43(fvec2) VectorShuffle 593 593 0 1 595: 17(ivec4) Load 19(ballot) 596: 43(fvec2) GroupNonUniformFMax 178 PartitionedReduceNV 594 595 597: 36(ptr) AccessChain 31(data) 591 34 35 598: 22(float) CompositeExtract 596 0 Store 597 598 599: 36(ptr) AccessChain 31(data) 591 34 189 600: 22(float) CompositeExtract 596 1 Store 599 600 601: 6(int) Load 8(invocation) 602: 44(ptr) AccessChain 31(data) 33 34 603: 23(fvec4) Load 602 604: 51(fvec3) VectorShuffle 603 603 0 1 2 605: 17(ivec4) Load 19(ballot) 606: 51(fvec3) GroupNonUniformFMax 178 PartitionedReduceNV 604 605 607: 36(ptr) AccessChain 31(data) 601 34 35 608: 22(float) CompositeExtract 606 0 Store 607 608 609: 36(ptr) AccessChain 31(data) 601 34 189 610: 22(float) CompositeExtract 606 1 Store 609 610 611: 36(ptr) AccessChain 31(data) 601 34 202 612: 22(float) CompositeExtract 606 2 Store 611 612 613: 6(int) Load 8(invocation) 614: 44(ptr) AccessChain 31(data) 115 34 615: 23(fvec4) Load 614 616: 17(ivec4) Load 19(ballot) 617: 23(fvec4) GroupNonUniformFMax 178 PartitionedReduceNV 615 616 618: 44(ptr) AccessChain 31(data) 613 34 Store 618 617 619: 6(int) Load 8(invocation) 620: 64(ptr) AccessChain 31(data) 34 63 35 621: 24(int) Load 620 622: 17(ivec4) Load 19(ballot) 623: 24(int) GroupNonUniformSMax 178 PartitionedReduceNV 621 622 624: 64(ptr) AccessChain 31(data) 619 63 35 Store 624 623 625: 6(int) Load 8(invocation) 626: 71(ptr) AccessChain 31(data) 63 63 627: 25(ivec4) Load 626 628: 70(ivec2) VectorShuffle 627 627 0 1 629: 17(ivec4) Load 19(ballot) 630: 70(ivec2) GroupNonUniformSMax 178 PartitionedReduceNV 628 629 631: 64(ptr) AccessChain 31(data) 625 63 35 632: 24(int) CompositeExtract 630 0 Store 631 632 633: 64(ptr) AccessChain 31(data) 625 63 189 634: 24(int) CompositeExtract 630 1 Store 633 634 635: 6(int) Load 8(invocation) 636: 71(ptr) AccessChain 31(data) 33 63 637: 25(ivec4) Load 636 638: 78(ivec3) VectorShuffle 637 637 0 1 2 639: 17(ivec4) Load 19(ballot) 640: 78(ivec3) GroupNonUniformSMax 178 PartitionedReduceNV 638 639 641: 64(ptr) AccessChain 31(data) 635 63 35 642: 24(int) CompositeExtract 640 0 Store 641 642 643: 64(ptr) AccessChain 31(data) 635 63 189 644: 24(int) CompositeExtract 640 1 Store 643 644 645: 64(ptr) AccessChain 31(data) 635 63 202 646: 24(int) CompositeExtract 640 2 Store 645 646 647: 6(int) Load 8(invocation) 648: 71(ptr) AccessChain 31(data) 115 63 649: 25(ivec4) Load 648 650: 17(ivec4) Load 19(ballot) 651: 25(ivec4) GroupNonUniformSMax 178 PartitionedReduceNV 649 650 652: 71(ptr) AccessChain 31(data) 647 63 Store 652 651 653: 6(int) Load 8(invocation) 654: 90(ptr) AccessChain 31(data) 34 33 35 655: 6(int) Load 654 656: 17(ivec4) Load 19(ballot) 657: 6(int) GroupNonUniformUMax 178 PartitionedReduceNV 655 656 658: 90(ptr) AccessChain 31(data) 653 33 35 Store 658 657 659: 6(int) Load 8(invocation) 660: 40(ptr) AccessChain 31(data) 63 33 661: 17(ivec4) Load 660 662: 96(ivec2) VectorShuffle 661 661 0 1 663: 17(ivec4) Load 19(ballot) 664: 96(ivec2) GroupNonUniformUMax 178 PartitionedReduceNV 662 663 665: 90(ptr) AccessChain 31(data) 659 33 35 666: 6(int) CompositeExtract 664 0 Store 665 666 667: 90(ptr) AccessChain 31(data) 659 33 189 668: 6(int) CompositeExtract 664 1 Store 667 668 669: 6(int) Load 8(invocation) 670: 40(ptr) AccessChain 31(data) 33 33 671: 17(ivec4) Load 670 672: 103(ivec3) VectorShuffle 671 671 0 1 2 673: 17(ivec4) Load 19(ballot) 674: 103(ivec3) GroupNonUniformUMax 178 PartitionedReduceNV 672 673 675: 90(ptr) AccessChain 31(data) 669 33 35 676: 6(int) CompositeExtract 674 0 Store 675 676 677: 90(ptr) AccessChain 31(data) 669 33 189 678: 6(int) CompositeExtract 674 1 Store 677 678 679: 90(ptr) AccessChain 31(data) 669 33 202 680: 6(int) CompositeExtract 674 2 Store 679 680 681: 6(int) Load 8(invocation) 682: 40(ptr) AccessChain 31(data) 115 33 683: 17(ivec4) Load 682 684: 17(ivec4) Load 19(ballot) 685: 17(ivec4) GroupNonUniformUMax 178 PartitionedReduceNV 683 684 686: 40(ptr) AccessChain 31(data) 681 33 Store 686 685 687: 6(int) Load 8(invocation) 688: 116(ptr) AccessChain 31(data) 34 115 35 689:26(float64_t) Load 688 690: 17(ivec4) Load 19(ballot) 691:26(float64_t) GroupNonUniformFMax 178 PartitionedReduceNV 689 690 692: 116(ptr) AccessChain 31(data) 687 115 35 Store 692 691 693: 6(int) Load 8(invocation) 694: 123(ptr) AccessChain 31(data) 63 115 695: 27(f64vec4) Load 694 696:122(f64vec2) VectorShuffle 695 695 0 1 697: 17(ivec4) Load 19(ballot) 698:122(f64vec2) GroupNonUniformFMax 178 PartitionedReduceNV 696 697 699: 116(ptr) AccessChain 31(data) 693 115 35 700:26(float64_t) CompositeExtract 698 0 Store 699 700 701: 116(ptr) AccessChain 31(data) 693 115 189 702:26(float64_t) CompositeExtract 698 1 Store 701 702 703: 6(int) Load 8(invocation) 704: 123(ptr) AccessChain 31(data) 33 115 705: 27(f64vec4) Load 704 706:130(f64vec3) VectorShuffle 705 705 0 1 2 707: 17(ivec4) Load 19(ballot) 708:130(f64vec3) GroupNonUniformFMax 178 PartitionedReduceNV 706 707 709: 116(ptr) AccessChain 31(data) 703 115 35 710:26(float64_t) CompositeExtract 708 0 Store 709 710 711: 116(ptr) AccessChain 31(data) 703 115 189 712:26(float64_t) CompositeExtract 708 1 Store 711 712 713: 116(ptr) AccessChain 31(data) 703 115 202 714:26(float64_t) CompositeExtract 708 2 Store 713 714 715: 6(int) Load 8(invocation) 716: 123(ptr) AccessChain 31(data) 115 115 717: 27(f64vec4) Load 716 718: 17(ivec4) Load 19(ballot) 719: 27(f64vec4) GroupNonUniformFMax 178 PartitionedReduceNV 717 718 720: 123(ptr) AccessChain 31(data) 715 115 Store 720 719 721: 6(int) Load 8(invocation) 722: 64(ptr) AccessChain 31(data) 34 63 35 723: 24(int) Load 722 724: 17(ivec4) Load 19(ballot) 725: 24(int) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 723 724 726: 64(ptr) AccessChain 31(data) 721 63 35 Store 726 725 727: 6(int) Load 8(invocation) 728: 71(ptr) AccessChain 31(data) 63 63 729: 25(ivec4) Load 728 730: 70(ivec2) VectorShuffle 729 729 0 1 731: 17(ivec4) Load 19(ballot) 732: 70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 730 731 733: 64(ptr) AccessChain 31(data) 727 63 35 734: 24(int) CompositeExtract 732 0 Store 733 734 735: 64(ptr) AccessChain 31(data) 727 63 189 736: 24(int) CompositeExtract 732 1 Store 735 736 737: 6(int) Load 8(invocation) 738: 71(ptr) AccessChain 31(data) 33 63 739: 25(ivec4) Load 738 740: 78(ivec3) VectorShuffle 739 739 0 1 2 741: 17(ivec4) Load 19(ballot) 742: 78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 740 741 743: 64(ptr) AccessChain 31(data) 737 63 35 744: 24(int) CompositeExtract 742 0 Store 743 744 745: 64(ptr) AccessChain 31(data) 737 63 189 746: 24(int) CompositeExtract 742 1 Store 745 746 747: 64(ptr) AccessChain 31(data) 737 63 202 748: 24(int) CompositeExtract 742 2 Store 747 748 749: 6(int) Load 8(invocation) 750: 71(ptr) AccessChain 31(data) 115 63 751: 25(ivec4) Load 750 752: 17(ivec4) Load 19(ballot) 753: 25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 751 752 754: 71(ptr) AccessChain 31(data) 749 63 Store 754 753 755: 6(int) Load 8(invocation) 756: 90(ptr) AccessChain 31(data) 34 33 35 757: 6(int) Load 756 758: 17(ivec4) Load 19(ballot) 759: 6(int) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 757 758 760: 90(ptr) AccessChain 31(data) 755 33 35 Store 760 759 761: 6(int) Load 8(invocation) 762: 40(ptr) AccessChain 31(data) 63 33 763: 17(ivec4) Load 762 764: 96(ivec2) VectorShuffle 763 763 0 1 765: 17(ivec4) Load 19(ballot) 766: 96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 764 765 767: 90(ptr) AccessChain 31(data) 761 33 35 768: 6(int) CompositeExtract 766 0 Store 767 768 769: 90(ptr) AccessChain 31(data) 761 33 189 770: 6(int) CompositeExtract 766 1 Store 769 770 771: 6(int) Load 8(invocation) 772: 40(ptr) AccessChain 31(data) 33 33 773: 17(ivec4) Load 772 774: 103(ivec3) VectorShuffle 773 773 0 1 2 775: 17(ivec4) Load 19(ballot) 776: 103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 774 775 777: 90(ptr) AccessChain 31(data) 771 33 35 778: 6(int) CompositeExtract 776 0 Store 777 778 779: 90(ptr) AccessChain 31(data) 771 33 189 780: 6(int) CompositeExtract 776 1 Store 779 780 781: 90(ptr) AccessChain 31(data) 771 33 202 782: 6(int) CompositeExtract 776 2 Store 781 782 783: 6(int) Load 8(invocation) 784: 40(ptr) AccessChain 31(data) 115 33 785: 17(ivec4) Load 784 786: 17(ivec4) Load 19(ballot) 787: 17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 785 786 788: 40(ptr) AccessChain 31(data) 783 33 Store 788 787 789: 6(int) Load 8(invocation) 790: 64(ptr) AccessChain 31(data) 34 63 35 791: 24(int) Load 790 792: 144(bool) SLessThan 791 34 793: 17(ivec4) Load 19(ballot) 794: 144(bool) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 792 793 795: 24(int) Select 794 63 34 796: 64(ptr) AccessChain 31(data) 789 63 35 Store 796 795 797: 6(int) Load 8(invocation) 798: 71(ptr) AccessChain 31(data) 63 63 799: 25(ivec4) Load 798 800: 70(ivec2) VectorShuffle 799 799 0 1 802: 152(bvec2) SLessThan 800 801 803: 17(ivec4) Load 19(ballot) 804: 152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 802 803 806: 70(ivec2) Select 804 805 801 807: 64(ptr) AccessChain 31(data) 797 63 35 808: 24(int) CompositeExtract 806 0 Store 807 808 809: 64(ptr) AccessChain 31(data) 797 63 189 810: 24(int) CompositeExtract 806 1 Store 809 810 811: 6(int) Load 8(invocation) 812: 71(ptr) AccessChain 31(data) 63 63 813: 25(ivec4) Load 812 814: 78(ivec3) VectorShuffle 813 813 0 1 2 816: 161(bvec3) SLessThan 814 815 817: 17(ivec4) Load 19(ballot) 818: 161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 816 817 820: 78(ivec3) Select 818 819 815 821: 64(ptr) AccessChain 31(data) 811 63 35 822: 24(int) CompositeExtract 820 0 Store 821 822 823: 64(ptr) AccessChain 31(data) 811 63 189 824: 24(int) CompositeExtract 820 1 Store 823 824 825: 64(ptr) AccessChain 31(data) 811 63 202 826: 24(int) CompositeExtract 820 2 Store 825 826 827: 6(int) Load 8(invocation) 828: 71(ptr) AccessChain 31(data) 63 63 829: 25(ivec4) Load 828 831: 169(bvec4) SLessThan 829 830 832: 17(ivec4) Load 19(ballot) 833: 169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 831 832 835: 25(ivec4) Select 833 834 830 836: 71(ptr) AccessChain 31(data) 827 63 Store 836 835 837: 6(int) Load 8(invocation) 838: 64(ptr) AccessChain 31(data) 34 63 35 839: 24(int) Load 838 840: 17(ivec4) Load 19(ballot) 841: 24(int) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 839 840 842: 64(ptr) AccessChain 31(data) 837 63 35 Store 842 841 843: 6(int) Load 8(invocation) 844: 71(ptr) AccessChain 31(data) 63 63 845: 25(ivec4) Load 844 846: 70(ivec2) VectorShuffle 845 845 0 1 847: 17(ivec4) Load 19(ballot) 848: 70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 846 847 849: 64(ptr) AccessChain 31(data) 843 63 35 850: 24(int) CompositeExtract 848 0 Store 849 850 851: 64(ptr) AccessChain 31(data) 843 63 189 852: 24(int) CompositeExtract 848 1 Store 851 852 853: 6(int) Load 8(invocation) 854: 71(ptr) AccessChain 31(data) 33 63 855: 25(ivec4) Load 854 856: 78(ivec3) VectorShuffle 855 855 0 1 2 857: 17(ivec4) Load 19(ballot) 858: 78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 856 857 859: 64(ptr) AccessChain 31(data) 853 63 35 860: 24(int) CompositeExtract 858 0 Store 859 860 861: 64(ptr) AccessChain 31(data) 853 63 189 862: 24(int) CompositeExtract 858 1 Store 861 862 863: 64(ptr) AccessChain 31(data) 853 63 202 864: 24(int) CompositeExtract 858 2 Store 863 864 865: 6(int) Load 8(invocation) 866: 71(ptr) AccessChain 31(data) 115 63 867: 25(ivec4) Load 866 868: 17(ivec4) Load 19(ballot) 869: 25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 867 868 870: 71(ptr) AccessChain 31(data) 865 63 Store 870 869 871: 6(int) Load 8(invocation) 872: 90(ptr) AccessChain 31(data) 34 33 35 873: 6(int) Load 872 874: 17(ivec4) Load 19(ballot) 875: 6(int) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 873 874 876: 90(ptr) AccessChain 31(data) 871 33 35 Store 876 875 877: 6(int) Load 8(invocation) 878: 40(ptr) AccessChain 31(data) 63 33 879: 17(ivec4) Load 878 880: 96(ivec2) VectorShuffle 879 879 0 1 881: 17(ivec4) Load 19(ballot) 882: 96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 880 881 883: 90(ptr) AccessChain 31(data) 877 33 35 884: 6(int) CompositeExtract 882 0 Store 883 884 885: 90(ptr) AccessChain 31(data) 877 33 189 886: 6(int) CompositeExtract 882 1 Store 885 886 887: 6(int) Load 8(invocation) 888: 40(ptr) AccessChain 31(data) 33 33 889: 17(ivec4) Load 888 890: 103(ivec3) VectorShuffle 889 889 0 1 2 891: 17(ivec4) Load 19(ballot) 892: 103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 890 891 893: 90(ptr) AccessChain 31(data) 887 33 35 894: 6(int) CompositeExtract 892 0 Store 893 894 895: 90(ptr) AccessChain 31(data) 887 33 189 896: 6(int) CompositeExtract 892 1 Store 895 896 897: 90(ptr) AccessChain 31(data) 887 33 202 898: 6(int) CompositeExtract 892 2 Store 897 898 899: 6(int) Load 8(invocation) 900: 40(ptr) AccessChain 31(data) 115 33 901: 17(ivec4) Load 900 902: 17(ivec4) Load 19(ballot) 903: 17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 901 902 904: 40(ptr) AccessChain 31(data) 899 33 Store 904 903 905: 6(int) Load 8(invocation) 906: 64(ptr) AccessChain 31(data) 34 63 35 907: 24(int) Load 906 908: 144(bool) SLessThan 907 34 909: 17(ivec4) Load 19(ballot) 910: 144(bool) GroupNonUniformLogicalOr 178 PartitionedReduceNV 908 909 911: 24(int) Select 910 63 34 912: 64(ptr) AccessChain 31(data) 905 63 35 Store 912 911 913: 6(int) Load 8(invocation) 914: 71(ptr) AccessChain 31(data) 63 63 915: 25(ivec4) Load 914 916: 70(ivec2) VectorShuffle 915 915 0 1 917: 152(bvec2) SLessThan 916 801 918: 17(ivec4) Load 19(ballot) 919: 152(bvec2) GroupNonUniformLogicalOr 178 PartitionedReduceNV 917 918 920: 70(ivec2) Select 919 805 801 921: 64(ptr) AccessChain 31(data) 913 63 35 922: 24(int) CompositeExtract 920 0 Store 921 922 923: 64(ptr) AccessChain 31(data) 913 63 189 924: 24(int) CompositeExtract 920 1 Store 923 924 925: 6(int) Load 8(invocation) 926: 71(ptr) AccessChain 31(data) 63 63 927: 25(ivec4) Load 926 928: 78(ivec3) VectorShuffle 927 927 0 1 2 929: 161(bvec3) SLessThan 928 815 930: 17(ivec4) Load 19(ballot) 931: 161(bvec3) GroupNonUniformLogicalOr 178 PartitionedReduceNV 929 930 932: 78(ivec3) Select 931 819 815 933: 64(ptr) AccessChain 31(data) 925 63 35 934: 24(int) CompositeExtract 932 0 Store 933 934 935: 64(ptr) AccessChain 31(data) 925 63 189 936: 24(int) CompositeExtract 932 1 Store 935 936 937: 64(ptr) AccessChain 31(data) 925 63 202 938: 24(int) CompositeExtract 932 2 Store 937 938 939: 6(int) Load 8(invocation) 940: 71(ptr) AccessChain 31(data) 63 63 941: 25(ivec4) Load 940 942: 169(bvec4) SLessThan 941 830 943: 17(ivec4) Load 19(ballot) 944: 169(bvec4) GroupNonUniformLogicalOr 178 PartitionedReduceNV 942 943 945: 25(ivec4) Select 944 834 830 946: 71(ptr) AccessChain 31(data) 939 63 Store 946 945 947: 6(int) Load 8(invocation) 948: 64(ptr) AccessChain 31(data) 34 63 35 949: 24(int) Load 948 950: 17(ivec4) Load 19(ballot) 951: 24(int) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 949 950 952: 64(ptr) AccessChain 31(data) 947 63 35 Store 952 951 953: 6(int) Load 8(invocation) 954: 71(ptr) AccessChain 31(data) 63 63 955: 25(ivec4) Load 954 956: 70(ivec2) VectorShuffle 955 955 0 1 957: 17(ivec4) Load 19(ballot) 958: 70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 956 957 959: 64(ptr) AccessChain 31(data) 953 63 35 960: 24(int) CompositeExtract 958 0 Store 959 960 961: 64(ptr) AccessChain 31(data) 953 63 189 962: 24(int) CompositeExtract 958 1 Store 961 962 963: 6(int) Load 8(invocation) 964: 71(ptr) AccessChain 31(data) 33 63 965: 25(ivec4) Load 964 966: 78(ivec3) VectorShuffle 965 965 0 1 2 967: 17(ivec4) Load 19(ballot) 968: 78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 966 967 969: 64(ptr) AccessChain 31(data) 963 63 35 970: 24(int) CompositeExtract 968 0 Store 969 970 971: 64(ptr) AccessChain 31(data) 963 63 189 972: 24(int) CompositeExtract 968 1 Store 971 972 973: 64(ptr) AccessChain 31(data) 963 63 202 974: 24(int) CompositeExtract 968 2 Store 973 974 975: 6(int) Load 8(invocation) 976: 71(ptr) AccessChain 31(data) 115 63 977: 25(ivec4) Load 976 978: 17(ivec4) Load 19(ballot) 979: 25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 977 978 980: 71(ptr) AccessChain 31(data) 975 63 Store 980 979 981: 6(int) Load 8(invocation) 982: 90(ptr) AccessChain 31(data) 34 33 35 983: 6(int) Load 982 984: 17(ivec4) Load 19(ballot) 985: 6(int) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 983 984 986: 90(ptr) AccessChain 31(data) 981 33 35 Store 986 985 987: 6(int) Load 8(invocation) 988: 40(ptr) AccessChain 31(data) 63 33 989: 17(ivec4) Load 988 990: 96(ivec2) VectorShuffle 989 989 0 1 991: 17(ivec4) Load 19(ballot) 992: 96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 990 991 993: 90(ptr) AccessChain 31(data) 987 33 35 994: 6(int) CompositeExtract 992 0 Store 993 994 995: 90(ptr) AccessChain 31(data) 987 33 189 996: 6(int) CompositeExtract 992 1 Store 995 996 997: 6(int) Load 8(invocation) 998: 40(ptr) AccessChain 31(data) 33 33 999: 17(ivec4) Load 998 1000: 103(ivec3) VectorShuffle 999 999 0 1 2 1001: 17(ivec4) Load 19(ballot) 1002: 103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 1000 1001 1003: 90(ptr) AccessChain 31(data) 997 33 35 1004: 6(int) CompositeExtract 1002 0 Store 1003 1004 1005: 90(ptr) AccessChain 31(data) 997 33 189 1006: 6(int) CompositeExtract 1002 1 Store 1005 1006 1007: 90(ptr) AccessChain 31(data) 997 33 202 1008: 6(int) CompositeExtract 1002 2 Store 1007 1008 1009: 6(int) Load 8(invocation) 1010: 40(ptr) AccessChain 31(data) 115 33 1011: 17(ivec4) Load 1010 1012: 17(ivec4) Load 19(ballot) 1013: 17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 1011 1012 1014: 40(ptr) AccessChain 31(data) 1009 33 Store 1014 1013 1015: 6(int) Load 8(invocation) 1016: 64(ptr) AccessChain 31(data) 34 63 35 1017: 24(int) Load 1016 1018: 144(bool) SLessThan 1017 34 1019: 17(ivec4) Load 19(ballot) 1020: 144(bool) GroupNonUniformLogicalXor 178 PartitionedReduceNV 1018 1019 1021: 24(int) Select 1020 63 34 1022: 64(ptr) AccessChain 31(data) 1015 63 35 Store 1022 1021 1023: 6(int) Load 8(invocation) 1024: 71(ptr) AccessChain 31(data) 63 63 1025: 25(ivec4) Load 1024 1026: 70(ivec2) VectorShuffle 1025 1025 0 1 1027: 152(bvec2) SLessThan 1026 801 1028: 17(ivec4) Load 19(ballot) 1029: 152(bvec2) GroupNonUniformLogicalXor 178 PartitionedReduceNV 1027 1028 1030: 70(ivec2) Select 1029 805 801 1031: 64(ptr) AccessChain 31(data) 1023 63 35 1032: 24(int) CompositeExtract 1030 0 Store 1031 1032 1033: 64(ptr) AccessChain 31(data) 1023 63 189 1034: 24(int) CompositeExtract 1030 1 Store 1033 1034 1035: 6(int) Load 8(invocation) 1036: 71(ptr) AccessChain 31(data) 63 63 1037: 25(ivec4) Load 1036 1038: 78(ivec3) VectorShuffle 1037 1037 0 1 2 1039: 161(bvec3) SLessThan 1038 815 1040: 17(ivec4) Load 19(ballot) 1041: 161(bvec3) GroupNonUniformLogicalXor 178 PartitionedReduceNV 1039 1040 1042: 78(ivec3) Select 1041 819 815 1043: 64(ptr) AccessChain 31(data) 1035 63 35 1044: 24(int) CompositeExtract 1042 0 Store 1043 1044 1045: 64(ptr) AccessChain 31(data) 1035 63 189 1046: 24(int) CompositeExtract 1042 1 Store 1045 1046 1047: 64(ptr) AccessChain 31(data) 1035 63 202 1048: 24(int) CompositeExtract 1042 2 Store 1047 1048 1049: 6(int) Load 8(invocation) 1050: 71(ptr) AccessChain 31(data) 63 63 1051: 25(ivec4) Load 1050 1052: 169(bvec4) SLessThan 1051 830 1053: 17(ivec4) Load 19(ballot) 1054: 169(bvec4) GroupNonUniformLogicalXor 178 PartitionedReduceNV 1052 1053 1055: 25(ivec4) Select 1054 834 830 1056: 71(ptr) AccessChain 31(data) 1049 63 Store 1056 1055 1057: 6(int) Load 8(invocation) 1058: 36(ptr) AccessChain 31(data) 34 34 35 1059: 22(float) Load 1058 1060: 17(ivec4) Load 19(ballot) 1061: 22(float) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1059 1060 1062: 36(ptr) AccessChain 31(data) 1057 34 35 Store 1062 1061 1063: 6(int) Load 8(invocation) 1064: 44(ptr) AccessChain 31(data) 63 34 1065: 23(fvec4) Load 1064 1066: 43(fvec2) VectorShuffle 1065 1065 0 1 1067: 17(ivec4) Load 19(ballot) 1068: 43(fvec2) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1066 1067 1069: 36(ptr) AccessChain 31(data) 1063 34 35 1070: 22(float) CompositeExtract 1068 0 Store 1069 1070 1071: 36(ptr) AccessChain 31(data) 1063 34 189 1072: 22(float) CompositeExtract 1068 1 Store 1071 1072 1073: 6(int) Load 8(invocation) 1074: 44(ptr) AccessChain 31(data) 33 34 1075: 23(fvec4) Load 1074 1076: 51(fvec3) VectorShuffle 1075 1075 0 1 2 1077: 17(ivec4) Load 19(ballot) 1078: 51(fvec3) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1076 1077 1079: 36(ptr) AccessChain 31(data) 1073 34 35 1080: 22(float) CompositeExtract 1078 0 Store 1079 1080 1081: 36(ptr) AccessChain 31(data) 1073 34 189 1082: 22(float) CompositeExtract 1078 1 Store 1081 1082 1083: 36(ptr) AccessChain 31(data) 1073 34 202 1084: 22(float) CompositeExtract 1078 2 Store 1083 1084 1085: 6(int) Load 8(invocation) 1086: 44(ptr) AccessChain 31(data) 115 34 1087: 23(fvec4) Load 1086 1088: 17(ivec4) Load 19(ballot) 1089: 23(fvec4) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1087 1088 1090: 44(ptr) AccessChain 31(data) 1085 34 Store 1090 1089 1091: 6(int) Load 8(invocation) 1092: 64(ptr) AccessChain 31(data) 34 63 35 1093: 24(int) Load 1092 1094: 17(ivec4) Load 19(ballot) 1095: 24(int) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1093 1094 1096: 64(ptr) AccessChain 31(data) 1091 63 35 Store 1096 1095 1097: 6(int) Load 8(invocation) 1098: 71(ptr) AccessChain 31(data) 63 63 1099: 25(ivec4) Load 1098 1100: 70(ivec2) VectorShuffle 1099 1099 0 1 1101: 17(ivec4) Load 19(ballot) 1102: 70(ivec2) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1100 1101 1103: 64(ptr) AccessChain 31(data) 1097 63 35 1104: 24(int) CompositeExtract 1102 0 Store 1103 1104 1105: 64(ptr) AccessChain 31(data) 1097 63 189 1106: 24(int) CompositeExtract 1102 1 Store 1105 1106 1107: 6(int) Load 8(invocation) 1108: 71(ptr) AccessChain 31(data) 33 63 1109: 25(ivec4) Load 1108 1110: 78(ivec3) VectorShuffle 1109 1109 0 1 2 1111: 17(ivec4) Load 19(ballot) 1112: 78(ivec3) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1110 1111 1113: 64(ptr) AccessChain 31(data) 1107 63 35 1114: 24(int) CompositeExtract 1112 0 Store 1113 1114 1115: 64(ptr) AccessChain 31(data) 1107 63 189 1116: 24(int) CompositeExtract 1112 1 Store 1115 1116 1117: 64(ptr) AccessChain 31(data) 1107 63 202 1118: 24(int) CompositeExtract 1112 2 Store 1117 1118 1119: 6(int) Load 8(invocation) 1120: 71(ptr) AccessChain 31(data) 115 63 1121: 25(ivec4) Load 1120 1122: 17(ivec4) Load 19(ballot) 1123: 25(ivec4) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1121 1122 1124: 71(ptr) AccessChain 31(data) 1119 63 Store 1124 1123 1125: 6(int) Load 8(invocation) 1126: 90(ptr) AccessChain 31(data) 34 33 35 1127: 6(int) Load 1126 1128: 17(ivec4) Load 19(ballot) 1129: 6(int) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1127 1128 1130: 90(ptr) AccessChain 31(data) 1125 33 35 Store 1130 1129 1131: 6(int) Load 8(invocation) 1132: 40(ptr) AccessChain 31(data) 63 33 1133: 17(ivec4) Load 1132 1134: 96(ivec2) VectorShuffle 1133 1133 0 1 1135: 17(ivec4) Load 19(ballot) 1136: 96(ivec2) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1134 1135 1137: 90(ptr) AccessChain 31(data) 1131 33 35 1138: 6(int) CompositeExtract 1136 0 Store 1137 1138 1139: 90(ptr) AccessChain 31(data) 1131 33 189 1140: 6(int) CompositeExtract 1136 1 Store 1139 1140 1141: 6(int) Load 8(invocation) 1142: 40(ptr) AccessChain 31(data) 33 33 1143: 17(ivec4) Load 1142 1144: 103(ivec3) VectorShuffle 1143 1143 0 1 2 1145: 17(ivec4) Load 19(ballot) 1146: 103(ivec3) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1144 1145 1147: 90(ptr) AccessChain 31(data) 1141 33 35 1148: 6(int) CompositeExtract 1146 0 Store 1147 1148 1149: 90(ptr) AccessChain 31(data) 1141 33 189 1150: 6(int) CompositeExtract 1146 1 Store 1149 1150 1151: 90(ptr) AccessChain 31(data) 1141 33 202 1152: 6(int) CompositeExtract 1146 2 Store 1151 1152 1153: 6(int) Load 8(invocation) 1154: 40(ptr) AccessChain 31(data) 115 33 1155: 17(ivec4) Load 1154 1156: 17(ivec4) Load 19(ballot) 1157: 17(ivec4) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1155 1156 1158: 40(ptr) AccessChain 31(data) 1153 33 Store 1158 1157 1159: 6(int) Load 8(invocation) 1160: 116(ptr) AccessChain 31(data) 34 115 35 1161:26(float64_t) Load 1160 1162: 17(ivec4) Load 19(ballot) 1163:26(float64_t) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1161 1162 1164: 116(ptr) AccessChain 31(data) 1159 115 35 Store 1164 1163 1165: 6(int) Load 8(invocation) 1166: 123(ptr) AccessChain 31(data) 63 115 1167: 27(f64vec4) Load 1166 1168:122(f64vec2) VectorShuffle 1167 1167 0 1 1169: 17(ivec4) Load 19(ballot) 1170:122(f64vec2) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1168 1169 1171: 116(ptr) AccessChain 31(data) 1165 115 35 1172:26(float64_t) CompositeExtract 1170 0 Store 1171 1172 1173: 116(ptr) AccessChain 31(data) 1165 115 189 1174:26(float64_t) CompositeExtract 1170 1 Store 1173 1174 1175: 6(int) Load 8(invocation) 1176: 123(ptr) AccessChain 31(data) 33 115 1177: 27(f64vec4) Load 1176 1178:130(f64vec3) VectorShuffle 1177 1177 0 1 2 1179: 17(ivec4) Load 19(ballot) 1180:130(f64vec3) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1178 1179 1181: 116(ptr) AccessChain 31(data) 1175 115 35 1182:26(float64_t) CompositeExtract 1180 0 Store 1181 1182 1183: 116(ptr) AccessChain 31(data) 1175 115 189 1184:26(float64_t) CompositeExtract 1180 1 Store 1183 1184 1185: 116(ptr) AccessChain 31(data) 1175 115 202 1186:26(float64_t) CompositeExtract 1180 2 Store 1185 1186 1187: 6(int) Load 8(invocation) 1188: 123(ptr) AccessChain 31(data) 115 115 1189: 27(f64vec4) Load 1188 1190: 17(ivec4) Load 19(ballot) 1191: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1189 1190 1192: 123(ptr) AccessChain 31(data) 1187 115 Store 1192 1191 1193: 6(int) Load 8(invocation) 1194: 36(ptr) AccessChain 31(data) 34 34 35 1195: 22(float) Load 1194 1196: 17(ivec4) Load 19(ballot) 1197: 22(float) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1195 1196 1198: 36(ptr) AccessChain 31(data) 1193 34 35 Store 1198 1197 1199: 6(int) Load 8(invocation) 1200: 44(ptr) AccessChain 31(data) 63 34 1201: 23(fvec4) Load 1200 1202: 43(fvec2) VectorShuffle 1201 1201 0 1 1203: 17(ivec4) Load 19(ballot) 1204: 43(fvec2) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1202 1203 1205: 36(ptr) AccessChain 31(data) 1199 34 35 1206: 22(float) CompositeExtract 1204 0 Store 1205 1206 1207: 36(ptr) AccessChain 31(data) 1199 34 189 1208: 22(float) CompositeExtract 1204 1 Store 1207 1208 1209: 6(int) Load 8(invocation) 1210: 44(ptr) AccessChain 31(data) 33 34 1211: 23(fvec4) Load 1210 1212: 51(fvec3) VectorShuffle 1211 1211 0 1 2 1213: 17(ivec4) Load 19(ballot) 1214: 51(fvec3) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1212 1213 1215: 36(ptr) AccessChain 31(data) 1209 34 35 1216: 22(float) CompositeExtract 1214 0 Store 1215 1216 1217: 36(ptr) AccessChain 31(data) 1209 34 189 1218: 22(float) CompositeExtract 1214 1 Store 1217 1218 1219: 36(ptr) AccessChain 31(data) 1209 34 202 1220: 22(float) CompositeExtract 1214 2 Store 1219 1220 1221: 6(int) Load 8(invocation) 1222: 44(ptr) AccessChain 31(data) 115 34 1223: 23(fvec4) Load 1222 1224: 17(ivec4) Load 19(ballot) 1225: 23(fvec4) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1223 1224 1226: 44(ptr) AccessChain 31(data) 1221 34 Store 1226 1225 1227: 6(int) Load 8(invocation) 1228: 64(ptr) AccessChain 31(data) 34 63 35 1229: 24(int) Load 1228 1230: 17(ivec4) Load 19(ballot) 1231: 24(int) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1229 1230 1232: 64(ptr) AccessChain 31(data) 1227 63 35 Store 1232 1231 1233: 6(int) Load 8(invocation) 1234: 71(ptr) AccessChain 31(data) 63 63 1235: 25(ivec4) Load 1234 1236: 70(ivec2) VectorShuffle 1235 1235 0 1 1237: 17(ivec4) Load 19(ballot) 1238: 70(ivec2) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1236 1237 1239: 64(ptr) AccessChain 31(data) 1233 63 35 1240: 24(int) CompositeExtract 1238 0 Store 1239 1240 1241: 64(ptr) AccessChain 31(data) 1233 63 189 1242: 24(int) CompositeExtract 1238 1 Store 1241 1242 1243: 6(int) Load 8(invocation) 1244: 71(ptr) AccessChain 31(data) 33 63 1245: 25(ivec4) Load 1244 1246: 78(ivec3) VectorShuffle 1245 1245 0 1 2 1247: 17(ivec4) Load 19(ballot) 1248: 78(ivec3) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1246 1247 1249: 64(ptr) AccessChain 31(data) 1243 63 35 1250: 24(int) CompositeExtract 1248 0 Store 1249 1250 1251: 64(ptr) AccessChain 31(data) 1243 63 189 1252: 24(int) CompositeExtract 1248 1 Store 1251 1252 1253: 64(ptr) AccessChain 31(data) 1243 63 202 1254: 24(int) CompositeExtract 1248 2 Store 1253 1254 1255: 6(int) Load 8(invocation) 1256: 71(ptr) AccessChain 31(data) 115 63 1257: 25(ivec4) Load 1256 1258: 17(ivec4) Load 19(ballot) 1259: 25(ivec4) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1257 1258 1260: 71(ptr) AccessChain 31(data) 1255 63 Store 1260 1259 1261: 6(int) Load 8(invocation) 1262: 90(ptr) AccessChain 31(data) 34 33 35 1263: 6(int) Load 1262 1264: 17(ivec4) Load 19(ballot) 1265: 6(int) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1263 1264 1266: 90(ptr) AccessChain 31(data) 1261 33 35 Store 1266 1265 1267: 6(int) Load 8(invocation) 1268: 40(ptr) AccessChain 31(data) 63 33 1269: 17(ivec4) Load 1268 1270: 96(ivec2) VectorShuffle 1269 1269 0 1 1271: 17(ivec4) Load 19(ballot) 1272: 96(ivec2) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1270 1271 1273: 90(ptr) AccessChain 31(data) 1267 33 35 1274: 6(int) CompositeExtract 1272 0 Store 1273 1274 1275: 90(ptr) AccessChain 31(data) 1267 33 189 1276: 6(int) CompositeExtract 1272 1 Store 1275 1276 1277: 6(int) Load 8(invocation) 1278: 40(ptr) AccessChain 31(data) 33 33 1279: 17(ivec4) Load 1278 1280: 103(ivec3) VectorShuffle 1279 1279 0 1 2 1281: 17(ivec4) Load 19(ballot) 1282: 103(ivec3) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1280 1281 1283: 90(ptr) AccessChain 31(data) 1277 33 35 1284: 6(int) CompositeExtract 1282 0 Store 1283 1284 1285: 90(ptr) AccessChain 31(data) 1277 33 189 1286: 6(int) CompositeExtract 1282 1 Store 1285 1286 1287: 90(ptr) AccessChain 31(data) 1277 33 202 1288: 6(int) CompositeExtract 1282 2 Store 1287 1288 1289: 6(int) Load 8(invocation) 1290: 40(ptr) AccessChain 31(data) 115 33 1291: 17(ivec4) Load 1290 1292: 17(ivec4) Load 19(ballot) 1293: 17(ivec4) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1291 1292 1294: 40(ptr) AccessChain 31(data) 1289 33 Store 1294 1293 1295: 6(int) Load 8(invocation) 1296: 116(ptr) AccessChain 31(data) 34 115 35 1297:26(float64_t) Load 1296 1298: 17(ivec4) Load 19(ballot) 1299:26(float64_t) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1297 1298 1300: 116(ptr) AccessChain 31(data) 1295 115 35 Store 1300 1299 1301: 6(int) Load 8(invocation) 1302: 123(ptr) AccessChain 31(data) 63 115 1303: 27(f64vec4) Load 1302 1304:122(f64vec2) VectorShuffle 1303 1303 0 1 1305: 17(ivec4) Load 19(ballot) 1306:122(f64vec2) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1304 1305 1307: 116(ptr) AccessChain 31(data) 1301 115 35 1308:26(float64_t) CompositeExtract 1306 0 Store 1307 1308 1309: 116(ptr) AccessChain 31(data) 1301 115 189 1310:26(float64_t) CompositeExtract 1306 1 Store 1309 1310 1311: 6(int) Load 8(invocation) 1312: 123(ptr) AccessChain 31(data) 33 115 1313: 27(f64vec4) Load 1312 1314:130(f64vec3) VectorShuffle 1313 1313 0 1 2 1315: 17(ivec4) Load 19(ballot) 1316:130(f64vec3) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1314 1315 1317: 116(ptr) AccessChain 31(data) 1311 115 35 1318:26(float64_t) CompositeExtract 1316 0 Store 1317 1318 1319: 116(ptr) AccessChain 31(data) 1311 115 189 1320:26(float64_t) CompositeExtract 1316 1 Store 1319 1320 1321: 116(ptr) AccessChain 31(data) 1311 115 202 1322:26(float64_t) CompositeExtract 1316 2 Store 1321 1322 1323: 6(int) Load 8(invocation) 1324: 123(ptr) AccessChain 31(data) 115 115 1325: 27(f64vec4) Load 1324 1326: 17(ivec4) Load 19(ballot) 1327: 27(f64vec4) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1325 1326 1328: 123(ptr) AccessChain 31(data) 1323 115 Store 1328 1327 1329: 6(int) Load 8(invocation) 1330: 36(ptr) AccessChain 31(data) 34 34 35 1331: 22(float) Load 1330 1332: 17(ivec4) Load 19(ballot) 1333: 22(float) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1331 1332 1334: 36(ptr) AccessChain 31(data) 1329 34 35 Store 1334 1333 1335: 6(int) Load 8(invocation) 1336: 44(ptr) AccessChain 31(data) 63 34 1337: 23(fvec4) Load 1336 1338: 43(fvec2) VectorShuffle 1337 1337 0 1 1339: 17(ivec4) Load 19(ballot) 1340: 43(fvec2) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1338 1339 1341: 36(ptr) AccessChain 31(data) 1335 34 35 1342: 22(float) CompositeExtract 1340 0 Store 1341 1342 1343: 36(ptr) AccessChain 31(data) 1335 34 189 1344: 22(float) CompositeExtract 1340 1 Store 1343 1344 1345: 6(int) Load 8(invocation) 1346: 44(ptr) AccessChain 31(data) 33 34 1347: 23(fvec4) Load 1346 1348: 51(fvec3) VectorShuffle 1347 1347 0 1 2 1349: 17(ivec4) Load 19(ballot) 1350: 51(fvec3) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1348 1349 1351: 36(ptr) AccessChain 31(data) 1345 34 35 1352: 22(float) CompositeExtract 1350 0 Store 1351 1352 1353: 36(ptr) AccessChain 31(data) 1345 34 189 1354: 22(float) CompositeExtract 1350 1 Store 1353 1354 1355: 36(ptr) AccessChain 31(data) 1345 34 202 1356: 22(float) CompositeExtract 1350 2 Store 1355 1356 1357: 6(int) Load 8(invocation) 1358: 44(ptr) AccessChain 31(data) 115 34 1359: 23(fvec4) Load 1358 1360: 17(ivec4) Load 19(ballot) 1361: 23(fvec4) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1359 1360 1362: 44(ptr) AccessChain 31(data) 1357 34 Store 1362 1361 1363: 6(int) Load 8(invocation) 1364: 64(ptr) AccessChain 31(data) 34 63 35 1365: 24(int) Load 1364 1366: 17(ivec4) Load 19(ballot) 1367: 24(int) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1365 1366 1368: 64(ptr) AccessChain 31(data) 1363 63 35 Store 1368 1367 1369: 6(int) Load 8(invocation) 1370: 71(ptr) AccessChain 31(data) 63 63 1371: 25(ivec4) Load 1370 1372: 70(ivec2) VectorShuffle 1371 1371 0 1 1373: 17(ivec4) Load 19(ballot) 1374: 70(ivec2) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1372 1373 1375: 64(ptr) AccessChain 31(data) 1369 63 35 1376: 24(int) CompositeExtract 1374 0 Store 1375 1376 1377: 64(ptr) AccessChain 31(data) 1369 63 189 1378: 24(int) CompositeExtract 1374 1 Store 1377 1378 1379: 6(int) Load 8(invocation) 1380: 71(ptr) AccessChain 31(data) 33 63 1381: 25(ivec4) Load 1380 1382: 78(ivec3) VectorShuffle 1381 1381 0 1 2 1383: 17(ivec4) Load 19(ballot) 1384: 78(ivec3) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1382 1383 1385: 64(ptr) AccessChain 31(data) 1379 63 35 1386: 24(int) CompositeExtract 1384 0 Store 1385 1386 1387: 64(ptr) AccessChain 31(data) 1379 63 189 1388: 24(int) CompositeExtract 1384 1 Store 1387 1388 1389: 64(ptr) AccessChain 31(data) 1379 63 202 1390: 24(int) CompositeExtract 1384 2 Store 1389 1390 1391: 6(int) Load 8(invocation) 1392: 71(ptr) AccessChain 31(data) 115 63 1393: 25(ivec4) Load 1392 1394: 17(ivec4) Load 19(ballot) 1395: 25(ivec4) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1393 1394 1396: 71(ptr) AccessChain 31(data) 1391 63 Store 1396 1395 1397: 6(int) Load 8(invocation) 1398: 90(ptr) AccessChain 31(data) 34 33 35 1399: 6(int) Load 1398 1400: 17(ivec4) Load 19(ballot) 1401: 6(int) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1399 1400 1402: 90(ptr) AccessChain 31(data) 1397 33 35 Store 1402 1401 1403: 6(int) Load 8(invocation) 1404: 40(ptr) AccessChain 31(data) 63 33 1405: 17(ivec4) Load 1404 1406: 96(ivec2) VectorShuffle 1405 1405 0 1 1407: 17(ivec4) Load 19(ballot) 1408: 96(ivec2) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1406 1407 1409: 90(ptr) AccessChain 31(data) 1403 33 35 1410: 6(int) CompositeExtract 1408 0 Store 1409 1410 1411: 90(ptr) AccessChain 31(data) 1403 33 189 1412: 6(int) CompositeExtract 1408 1 Store 1411 1412 1413: 6(int) Load 8(invocation) 1414: 40(ptr) AccessChain 31(data) 33 33 1415: 17(ivec4) Load 1414 1416: 103(ivec3) VectorShuffle 1415 1415 0 1 2 1417: 17(ivec4) Load 19(ballot) 1418: 103(ivec3) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1416 1417 1419: 90(ptr) AccessChain 31(data) 1413 33 35 1420: 6(int) CompositeExtract 1418 0 Store 1419 1420 1421: 90(ptr) AccessChain 31(data) 1413 33 189 1422: 6(int) CompositeExtract 1418 1 Store 1421 1422 1423: 90(ptr) AccessChain 31(data) 1413 33 202 1424: 6(int) CompositeExtract 1418 2 Store 1423 1424 1425: 6(int) Load 8(invocation) 1426: 40(ptr) AccessChain 31(data) 115 33 1427: 17(ivec4) Load 1426 1428: 17(ivec4) Load 19(ballot) 1429: 17(ivec4) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1427 1428 1430: 40(ptr) AccessChain 31(data) 1425 33 Store 1430 1429 1431: 6(int) Load 8(invocation) 1432: 116(ptr) AccessChain 31(data) 34 115 35 1433:26(float64_t) Load 1432 1434: 17(ivec4) Load 19(ballot) 1435:26(float64_t) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1433 1434 1436: 116(ptr) AccessChain 31(data) 1431 115 35 Store 1436 1435 1437: 6(int) Load 8(invocation) 1438: 123(ptr) AccessChain 31(data) 63 115 1439: 27(f64vec4) Load 1438 1440:122(f64vec2) VectorShuffle 1439 1439 0 1 1441: 17(ivec4) Load 19(ballot) 1442:122(f64vec2) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1440 1441 1443: 116(ptr) AccessChain 31(data) 1437 115 35 1444:26(float64_t) CompositeExtract 1442 0 Store 1443 1444 1445: 116(ptr) AccessChain 31(data) 1437 115 189 1446:26(float64_t) CompositeExtract 1442 1 Store 1445 1446 1447: 6(int) Load 8(invocation) 1448: 123(ptr) AccessChain 31(data) 33 115 1449: 27(f64vec4) Load 1448 1450:130(f64vec3) VectorShuffle 1449 1449 0 1 2 1451: 17(ivec4) Load 19(ballot) 1452:130(f64vec3) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1450 1451 1453: 116(ptr) AccessChain 31(data) 1447 115 35 1454:26(float64_t) CompositeExtract 1452 0 Store 1453 1454 1455: 116(ptr) AccessChain 31(data) 1447 115 189 1456:26(float64_t) CompositeExtract 1452 1 Store 1455 1456 1457: 116(ptr) AccessChain 31(data) 1447 115 202 1458:26(float64_t) CompositeExtract 1452 2 Store 1457 1458 1459: 6(int) Load 8(invocation) 1460: 123(ptr) AccessChain 31(data) 115 115 1461: 27(f64vec4) Load 1460 1462: 17(ivec4) Load 19(ballot) 1463: 27(f64vec4) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1461 1462 1464: 123(ptr) AccessChain 31(data) 1459 115 Store 1464 1463 1465: 6(int) Load 8(invocation) 1466: 36(ptr) AccessChain 31(data) 34 34 35 1467: 22(float) Load 1466 1468: 17(ivec4) Load 19(ballot) 1469: 22(float) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1467 1468 1470: 36(ptr) AccessChain 31(data) 1465 34 35 Store 1470 1469 1471: 6(int) Load 8(invocation) 1472: 44(ptr) AccessChain 31(data) 63 34 1473: 23(fvec4) Load 1472 1474: 43(fvec2) VectorShuffle 1473 1473 0 1 1475: 17(ivec4) Load 19(ballot) 1476: 43(fvec2) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1474 1475 1477: 36(ptr) AccessChain 31(data) 1471 34 35 1478: 22(float) CompositeExtract 1476 0 Store 1477 1478 1479: 36(ptr) AccessChain 31(data) 1471 34 189 1480: 22(float) CompositeExtract 1476 1 Store 1479 1480 1481: 6(int) Load 8(invocation) 1482: 44(ptr) AccessChain 31(data) 33 34 1483: 23(fvec4) Load 1482 1484: 51(fvec3) VectorShuffle 1483 1483 0 1 2 1485: 17(ivec4) Load 19(ballot) 1486: 51(fvec3) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1484 1485 1487: 36(ptr) AccessChain 31(data) 1481 34 35 1488: 22(float) CompositeExtract 1486 0 Store 1487 1488 1489: 36(ptr) AccessChain 31(data) 1481 34 189 1490: 22(float) CompositeExtract 1486 1 Store 1489 1490 1491: 36(ptr) AccessChain 31(data) 1481 34 202 1492: 22(float) CompositeExtract 1486 2 Store 1491 1492 1493: 6(int) Load 8(invocation) 1494: 44(ptr) AccessChain 31(data) 115 34 1495: 23(fvec4) Load 1494 1496: 17(ivec4) Load 19(ballot) 1497: 23(fvec4) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1495 1496 1498: 44(ptr) AccessChain 31(data) 1493 34 Store 1498 1497 1499: 6(int) Load 8(invocation) 1500: 64(ptr) AccessChain 31(data) 34 63 35 1501: 24(int) Load 1500 1502: 17(ivec4) Load 19(ballot) 1503: 24(int) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1501 1502 1504: 64(ptr) AccessChain 31(data) 1499 63 35 Store 1504 1503 1505: 6(int) Load 8(invocation) 1506: 71(ptr) AccessChain 31(data) 63 63 1507: 25(ivec4) Load 1506 1508: 70(ivec2) VectorShuffle 1507 1507 0 1 1509: 17(ivec4) Load 19(ballot) 1510: 70(ivec2) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1508 1509 1511: 64(ptr) AccessChain 31(data) 1505 63 35 1512: 24(int) CompositeExtract 1510 0 Store 1511 1512 1513: 64(ptr) AccessChain 31(data) 1505 63 189 1514: 24(int) CompositeExtract 1510 1 Store 1513 1514 1515: 6(int) Load 8(invocation) 1516: 71(ptr) AccessChain 31(data) 33 63 1517: 25(ivec4) Load 1516 1518: 78(ivec3) VectorShuffle 1517 1517 0 1 2 1519: 17(ivec4) Load 19(ballot) 1520: 78(ivec3) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1518 1519 1521: 64(ptr) AccessChain 31(data) 1515 63 35 1522: 24(int) CompositeExtract 1520 0 Store 1521 1522 1523: 64(ptr) AccessChain 31(data) 1515 63 189 1524: 24(int) CompositeExtract 1520 1 Store 1523 1524 1525: 64(ptr) AccessChain 31(data) 1515 63 202 1526: 24(int) CompositeExtract 1520 2 Store 1525 1526 1527: 6(int) Load 8(invocation) 1528: 71(ptr) AccessChain 31(data) 115 63 1529: 25(ivec4) Load 1528 1530: 17(ivec4) Load 19(ballot) 1531: 25(ivec4) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1529 1530 1532: 71(ptr) AccessChain 31(data) 1527 63 Store 1532 1531 1533: 6(int) Load 8(invocation) 1534: 90(ptr) AccessChain 31(data) 34 33 35 1535: 6(int) Load 1534 1536: 17(ivec4) Load 19(ballot) 1537: 6(int) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1535 1536 1538: 90(ptr) AccessChain 31(data) 1533 33 35 Store 1538 1537 1539: 6(int) Load 8(invocation) 1540: 40(ptr) AccessChain 31(data) 63 33 1541: 17(ivec4) Load 1540 1542: 96(ivec2) VectorShuffle 1541 1541 0 1 1543: 17(ivec4) Load 19(ballot) 1544: 96(ivec2) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1542 1543 1545: 90(ptr) AccessChain 31(data) 1539 33 35 1546: 6(int) CompositeExtract 1544 0 Store 1545 1546 1547: 90(ptr) AccessChain 31(data) 1539 33 189 1548: 6(int) CompositeExtract 1544 1 Store 1547 1548 1549: 6(int) Load 8(invocation) 1550: 40(ptr) AccessChain 31(data) 33 33 1551: 17(ivec4) Load 1550 1552: 103(ivec3) VectorShuffle 1551 1551 0 1 2 1553: 17(ivec4) Load 19(ballot) 1554: 103(ivec3) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1552 1553 1555: 90(ptr) AccessChain 31(data) 1549 33 35 1556: 6(int) CompositeExtract 1554 0 Store 1555 1556 1557: 90(ptr) AccessChain 31(data) 1549 33 189 1558: 6(int) CompositeExtract 1554 1 Store 1557 1558 1559: 90(ptr) AccessChain 31(data) 1549 33 202 1560: 6(int) CompositeExtract 1554 2 Store 1559 1560 1561: 6(int) Load 8(invocation) 1562: 40(ptr) AccessChain 31(data) 115 33 1563: 17(ivec4) Load 1562 1564: 17(ivec4) Load 19(ballot) 1565: 17(ivec4) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1563 1564 1566: 40(ptr) AccessChain 31(data) 1561 33 Store 1566 1565 1567: 6(int) Load 8(invocation) 1568: 116(ptr) AccessChain 31(data) 34 115 35 1569:26(float64_t) Load 1568 1570: 17(ivec4) Load 19(ballot) 1571:26(float64_t) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1569 1570 1572: 116(ptr) AccessChain 31(data) 1567 115 35 Store 1572 1571 1573: 6(int) Load 8(invocation) 1574: 123(ptr) AccessChain 31(data) 63 115 1575: 27(f64vec4) Load 1574 1576:122(f64vec2) VectorShuffle 1575 1575 0 1 1577: 17(ivec4) Load 19(ballot) 1578:122(f64vec2) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1576 1577 1579: 116(ptr) AccessChain 31(data) 1573 115 35 1580:26(float64_t) CompositeExtract 1578 0 Store 1579 1580 1581: 116(ptr) AccessChain 31(data) 1573 115 189 1582:26(float64_t) CompositeExtract 1578 1 Store 1581 1582 1583: 6(int) Load 8(invocation) 1584: 123(ptr) AccessChain 31(data) 33 115 1585: 27(f64vec4) Load 1584 1586:130(f64vec3) VectorShuffle 1585 1585 0 1 2 1587: 17(ivec4) Load 19(ballot) 1588:130(f64vec3) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1586 1587 1589: 116(ptr) AccessChain 31(data) 1583 115 35 1590:26(float64_t) CompositeExtract 1588 0 Store 1589 1590 1591: 116(ptr) AccessChain 31(data) 1583 115 189 1592:26(float64_t) CompositeExtract 1588 1 Store 1591 1592 1593: 116(ptr) AccessChain 31(data) 1583 115 202 1594:26(float64_t) CompositeExtract 1588 2 Store 1593 1594 1595: 6(int) Load 8(invocation) 1596: 123(ptr) AccessChain 31(data) 115 115 1597: 27(f64vec4) Load 1596 1598: 17(ivec4) Load 19(ballot) 1599: 27(f64vec4) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1597 1598 1600: 123(ptr) AccessChain 31(data) 1595 115 Store 1600 1599 1601: 6(int) Load 8(invocation) 1602: 64(ptr) AccessChain 31(data) 34 63 35 1603: 24(int) Load 1602 1604: 17(ivec4) Load 19(ballot) 1605: 24(int) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1603 1604 1606: 64(ptr) AccessChain 31(data) 1601 63 35 Store 1606 1605 1607: 6(int) Load 8(invocation) 1608: 71(ptr) AccessChain 31(data) 63 63 1609: 25(ivec4) Load 1608 1610: 70(ivec2) VectorShuffle 1609 1609 0 1 1611: 17(ivec4) Load 19(ballot) 1612: 70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1610 1611 1613: 64(ptr) AccessChain 31(data) 1607 63 35 1614: 24(int) CompositeExtract 1612 0 Store 1613 1614 1615: 64(ptr) AccessChain 31(data) 1607 63 189 1616: 24(int) CompositeExtract 1612 1 Store 1615 1616 1617: 6(int) Load 8(invocation) 1618: 71(ptr) AccessChain 31(data) 33 63 1619: 25(ivec4) Load 1618 1620: 78(ivec3) VectorShuffle 1619 1619 0 1 2 1621: 17(ivec4) Load 19(ballot) 1622: 78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1620 1621 1623: 64(ptr) AccessChain 31(data) 1617 63 35 1624: 24(int) CompositeExtract 1622 0 Store 1623 1624 1625: 64(ptr) AccessChain 31(data) 1617 63 189 1626: 24(int) CompositeExtract 1622 1 Store 1625 1626 1627: 64(ptr) AccessChain 31(data) 1617 63 202 1628: 24(int) CompositeExtract 1622 2 Store 1627 1628 1629: 6(int) Load 8(invocation) 1630: 71(ptr) AccessChain 31(data) 115 63 1631: 25(ivec4) Load 1630 1632: 17(ivec4) Load 19(ballot) 1633: 25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1631 1632 1634: 71(ptr) AccessChain 31(data) 1629 63 Store 1634 1633 1635: 6(int) Load 8(invocation) 1636: 90(ptr) AccessChain 31(data) 34 33 35 1637: 6(int) Load 1636 1638: 17(ivec4) Load 19(ballot) 1639: 6(int) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1637 1638 1640: 90(ptr) AccessChain 31(data) 1635 33 35 Store 1640 1639 1641: 6(int) Load 8(invocation) 1642: 40(ptr) AccessChain 31(data) 63 33 1643: 17(ivec4) Load 1642 1644: 96(ivec2) VectorShuffle 1643 1643 0 1 1645: 17(ivec4) Load 19(ballot) 1646: 96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1644 1645 1647: 90(ptr) AccessChain 31(data) 1641 33 35 1648: 6(int) CompositeExtract 1646 0 Store 1647 1648 1649: 90(ptr) AccessChain 31(data) 1641 33 189 1650: 6(int) CompositeExtract 1646 1 Store 1649 1650 1651: 6(int) Load 8(invocation) 1652: 40(ptr) AccessChain 31(data) 33 33 1653: 17(ivec4) Load 1652 1654: 103(ivec3) VectorShuffle 1653 1653 0 1 2 1655: 17(ivec4) Load 19(ballot) 1656: 103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1654 1655 1657: 90(ptr) AccessChain 31(data) 1651 33 35 1658: 6(int) CompositeExtract 1656 0 Store 1657 1658 1659: 90(ptr) AccessChain 31(data) 1651 33 189 1660: 6(int) CompositeExtract 1656 1 Store 1659 1660 1661: 90(ptr) AccessChain 31(data) 1651 33 202 1662: 6(int) CompositeExtract 1656 2 Store 1661 1662 1663: 6(int) Load 8(invocation) 1664: 40(ptr) AccessChain 31(data) 115 33 1665: 17(ivec4) Load 1664 1666: 17(ivec4) Load 19(ballot) 1667: 17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1665 1666 1668: 40(ptr) AccessChain 31(data) 1663 33 Store 1668 1667 1669: 6(int) Load 8(invocation) 1670: 64(ptr) AccessChain 31(data) 34 63 35 1671: 24(int) Load 1670 1672: 144(bool) SLessThan 1671 34 1673: 17(ivec4) Load 19(ballot) 1674: 144(bool) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1672 1673 1675: 24(int) Select 1674 63 34 1676: 64(ptr) AccessChain 31(data) 1669 63 35 Store 1676 1675 1677: 6(int) Load 8(invocation) 1678: 71(ptr) AccessChain 31(data) 63 63 1679: 25(ivec4) Load 1678 1680: 70(ivec2) VectorShuffle 1679 1679 0 1 1681: 152(bvec2) SLessThan 1680 801 1682: 17(ivec4) Load 19(ballot) 1683: 152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1681 1682 1684: 70(ivec2) Select 1683 805 801 1685: 64(ptr) AccessChain 31(data) 1677 63 35 1686: 24(int) CompositeExtract 1684 0 Store 1685 1686 1687: 64(ptr) AccessChain 31(data) 1677 63 189 1688: 24(int) CompositeExtract 1684 1 Store 1687 1688 1689: 6(int) Load 8(invocation) 1690: 71(ptr) AccessChain 31(data) 63 63 1691: 25(ivec4) Load 1690 1692: 78(ivec3) VectorShuffle 1691 1691 0 1 2 1693: 161(bvec3) SLessThan 1692 815 1694: 17(ivec4) Load 19(ballot) 1695: 161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1693 1694 1696: 78(ivec3) Select 1695 819 815 1697: 64(ptr) AccessChain 31(data) 1689 63 35 1698: 24(int) CompositeExtract 1696 0 Store 1697 1698 1699: 64(ptr) AccessChain 31(data) 1689 63 189 1700: 24(int) CompositeExtract 1696 1 Store 1699 1700 1701: 64(ptr) AccessChain 31(data) 1689 63 202 1702: 24(int) CompositeExtract 1696 2 Store 1701 1702 1703: 6(int) Load 8(invocation) 1704: 71(ptr) AccessChain 31(data) 63 63 1705: 25(ivec4) Load 1704 1706: 169(bvec4) SLessThan 1705 830 1707: 17(ivec4) Load 19(ballot) 1708: 169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1706 1707 1709: 25(ivec4) Select 1708 834 830 1710: 71(ptr) AccessChain 31(data) 1703 63 Store 1710 1709 1711: 6(int) Load 8(invocation) 1712: 64(ptr) AccessChain 31(data) 34 63 35 1713: 24(int) Load 1712 1714: 17(ivec4) Load 19(ballot) 1715: 24(int) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1713 1714 1716: 64(ptr) AccessChain 31(data) 1711 63 35 Store 1716 1715 1717: 6(int) Load 8(invocation) 1718: 71(ptr) AccessChain 31(data) 63 63 1719: 25(ivec4) Load 1718 1720: 70(ivec2) VectorShuffle 1719 1719 0 1 1721: 17(ivec4) Load 19(ballot) 1722: 70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1720 1721 1723: 64(ptr) AccessChain 31(data) 1717 63 35 1724: 24(int) CompositeExtract 1722 0 Store 1723 1724 1725: 64(ptr) AccessChain 31(data) 1717 63 189 1726: 24(int) CompositeExtract 1722 1 Store 1725 1726 1727: 6(int) Load 8(invocation) 1728: 71(ptr) AccessChain 31(data) 33 63 1729: 25(ivec4) Load 1728 1730: 78(ivec3) VectorShuffle 1729 1729 0 1 2 1731: 17(ivec4) Load 19(ballot) 1732: 78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1730 1731 1733: 64(ptr) AccessChain 31(data) 1727 63 35 1734: 24(int) CompositeExtract 1732 0 Store 1733 1734 1735: 64(ptr) AccessChain 31(data) 1727 63 189 1736: 24(int) CompositeExtract 1732 1 Store 1735 1736 1737: 64(ptr) AccessChain 31(data) 1727 63 202 1738: 24(int) CompositeExtract 1732 2 Store 1737 1738 1739: 6(int) Load 8(invocation) 1740: 71(ptr) AccessChain 31(data) 115 63 1741: 25(ivec4) Load 1740 1742: 17(ivec4) Load 19(ballot) 1743: 25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1741 1742 1744: 71(ptr) AccessChain 31(data) 1739 63 Store 1744 1743 1745: 6(int) Load 8(invocation) 1746: 90(ptr) AccessChain 31(data) 34 33 35 1747: 6(int) Load 1746 1748: 17(ivec4) Load 19(ballot) 1749: 6(int) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1747 1748 1750: 90(ptr) AccessChain 31(data) 1745 33 35 Store 1750 1749 1751: 6(int) Load 8(invocation) 1752: 40(ptr) AccessChain 31(data) 63 33 1753: 17(ivec4) Load 1752 1754: 96(ivec2) VectorShuffle 1753 1753 0 1 1755: 17(ivec4) Load 19(ballot) 1756: 96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1754 1755 1757: 90(ptr) AccessChain 31(data) 1751 33 35 1758: 6(int) CompositeExtract 1756 0 Store 1757 1758 1759: 90(ptr) AccessChain 31(data) 1751 33 189 1760: 6(int) CompositeExtract 1756 1 Store 1759 1760 1761: 6(int) Load 8(invocation) 1762: 40(ptr) AccessChain 31(data) 33 33 1763: 17(ivec4) Load 1762 1764: 103(ivec3) VectorShuffle 1763 1763 0 1 2 1765: 17(ivec4) Load 19(ballot) 1766: 103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1764 1765 1767: 90(ptr) AccessChain 31(data) 1761 33 35 1768: 6(int) CompositeExtract 1766 0 Store 1767 1768 1769: 90(ptr) AccessChain 31(data) 1761 33 189 1770: 6(int) CompositeExtract 1766 1 Store 1769 1770 1771: 90(ptr) AccessChain 31(data) 1761 33 202 1772: 6(int) CompositeExtract 1766 2 Store 1771 1772 1773: 6(int) Load 8(invocation) 1774: 40(ptr) AccessChain 31(data) 115 33 1775: 17(ivec4) Load 1774 1776: 17(ivec4) Load 19(ballot) 1777: 17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1775 1776 1778: 40(ptr) AccessChain 31(data) 1773 33 Store 1778 1777 1779: 6(int) Load 8(invocation) 1780: 64(ptr) AccessChain 31(data) 34 63 35 1781: 24(int) Load 1780 1782: 144(bool) SLessThan 1781 34 1783: 17(ivec4) Load 19(ballot) 1784: 144(bool) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1782 1783 1785: 24(int) Select 1784 63 34 1786: 64(ptr) AccessChain 31(data) 1779 63 35 Store 1786 1785 1787: 6(int) Load 8(invocation) 1788: 71(ptr) AccessChain 31(data) 63 63 1789: 25(ivec4) Load 1788 1790: 70(ivec2) VectorShuffle 1789 1789 0 1 1791: 152(bvec2) SLessThan 1790 801 1792: 17(ivec4) Load 19(ballot) 1793: 152(bvec2) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1791 1792 1794: 70(ivec2) Select 1793 805 801 1795: 64(ptr) AccessChain 31(data) 1787 63 35 1796: 24(int) CompositeExtract 1794 0 Store 1795 1796 1797: 64(ptr) AccessChain 31(data) 1787 63 189 1798: 24(int) CompositeExtract 1794 1 Store 1797 1798 1799: 6(int) Load 8(invocation) 1800: 71(ptr) AccessChain 31(data) 63 63 1801: 25(ivec4) Load 1800 1802: 78(ivec3) VectorShuffle 1801 1801 0 1 2 1803: 161(bvec3) SLessThan 1802 815 1804: 17(ivec4) Load 19(ballot) 1805: 161(bvec3) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1803 1804 1806: 78(ivec3) Select 1805 819 815 1807: 64(ptr) AccessChain 31(data) 1799 63 35 1808: 24(int) CompositeExtract 1806 0 Store 1807 1808 1809: 64(ptr) AccessChain 31(data) 1799 63 189 1810: 24(int) CompositeExtract 1806 1 Store 1809 1810 1811: 64(ptr) AccessChain 31(data) 1799 63 202 1812: 24(int) CompositeExtract 1806 2 Store 1811 1812 1813: 6(int) Load 8(invocation) 1814: 71(ptr) AccessChain 31(data) 63 63 1815: 25(ivec4) Load 1814 1816: 169(bvec4) SLessThan 1815 830 1817: 17(ivec4) Load 19(ballot) 1818: 169(bvec4) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1816 1817 1819: 25(ivec4) Select 1818 834 830 1820: 71(ptr) AccessChain 31(data) 1813 63 Store 1820 1819 1821: 6(int) Load 8(invocation) 1822: 64(ptr) AccessChain 31(data) 34 63 35 1823: 24(int) Load 1822 1824: 17(ivec4) Load 19(ballot) 1825: 24(int) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1823 1824 1826: 64(ptr) AccessChain 31(data) 1821 63 35 Store 1826 1825 1827: 6(int) Load 8(invocation) 1828: 71(ptr) AccessChain 31(data) 63 63 1829: 25(ivec4) Load 1828 1830: 70(ivec2) VectorShuffle 1829 1829 0 1 1831: 17(ivec4) Load 19(ballot) 1832: 70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1830 1831 1833: 64(ptr) AccessChain 31(data) 1827 63 35 1834: 24(int) CompositeExtract 1832 0 Store 1833 1834 1835: 64(ptr) AccessChain 31(data) 1827 63 189 1836: 24(int) CompositeExtract 1832 1 Store 1835 1836 1837: 6(int) Load 8(invocation) 1838: 71(ptr) AccessChain 31(data) 33 63 1839: 25(ivec4) Load 1838 1840: 78(ivec3) VectorShuffle 1839 1839 0 1 2 1841: 17(ivec4) Load 19(ballot) 1842: 78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1840 1841 1843: 64(ptr) AccessChain 31(data) 1837 63 35 1844: 24(int) CompositeExtract 1842 0 Store 1843 1844 1845: 64(ptr) AccessChain 31(data) 1837 63 189 1846: 24(int) CompositeExtract 1842 1 Store 1845 1846 1847: 64(ptr) AccessChain 31(data) 1837 63 202 1848: 24(int) CompositeExtract 1842 2 Store 1847 1848 1849: 6(int) Load 8(invocation) 1850: 71(ptr) AccessChain 31(data) 115 63 1851: 25(ivec4) Load 1850 1852: 17(ivec4) Load 19(ballot) 1853: 25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1851 1852 1854: 71(ptr) AccessChain 31(data) 1849 63 Store 1854 1853 1855: 6(int) Load 8(invocation) 1856: 90(ptr) AccessChain 31(data) 34 33 35 1857: 6(int) Load 1856 1858: 17(ivec4) Load 19(ballot) 1859: 6(int) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1857 1858 1860: 90(ptr) AccessChain 31(data) 1855 33 35 Store 1860 1859 1861: 6(int) Load 8(invocation) 1862: 40(ptr) AccessChain 31(data) 63 33 1863: 17(ivec4) Load 1862 1864: 96(ivec2) VectorShuffle 1863 1863 0 1 1865: 17(ivec4) Load 19(ballot) 1866: 96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1864 1865 1867: 90(ptr) AccessChain 31(data) 1861 33 35 1868: 6(int) CompositeExtract 1866 0 Store 1867 1868 1869: 90(ptr) AccessChain 31(data) 1861 33 189 1870: 6(int) CompositeExtract 1866 1 Store 1869 1870 1871: 6(int) Load 8(invocation) 1872: 40(ptr) AccessChain 31(data) 33 33 1873: 17(ivec4) Load 1872 1874: 103(ivec3) VectorShuffle 1873 1873 0 1 2 1875: 17(ivec4) Load 19(ballot) 1876: 103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1874 1875 1877: 90(ptr) AccessChain 31(data) 1871 33 35 1878: 6(int) CompositeExtract 1876 0 Store 1877 1878 1879: 90(ptr) AccessChain 31(data) 1871 33 189 1880: 6(int) CompositeExtract 1876 1 Store 1879 1880 1881: 90(ptr) AccessChain 31(data) 1871 33 202 1882: 6(int) CompositeExtract 1876 2 Store 1881 1882 1883: 6(int) Load 8(invocation) 1884: 40(ptr) AccessChain 31(data) 115 33 1885: 17(ivec4) Load 1884 1886: 17(ivec4) Load 19(ballot) 1887: 17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1885 1886 1888: 40(ptr) AccessChain 31(data) 1883 33 Store 1888 1887 1889: 6(int) Load 8(invocation) 1890: 64(ptr) AccessChain 31(data) 34 63 35 1891: 24(int) Load 1890 1892: 144(bool) SLessThan 1891 34 1893: 17(ivec4) Load 19(ballot) 1894: 144(bool) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1892 1893 1895: 24(int) Select 1894 63 34 1896: 64(ptr) AccessChain 31(data) 1889 63 35 Store 1896 1895 1897: 6(int) Load 8(invocation) 1898: 71(ptr) AccessChain 31(data) 63 63 1899: 25(ivec4) Load 1898 1900: 70(ivec2) VectorShuffle 1899 1899 0 1 1901: 152(bvec2) SLessThan 1900 801 1902: 17(ivec4) Load 19(ballot) 1903: 152(bvec2) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1901 1902 1904: 70(ivec2) Select 1903 805 801 1905: 64(ptr) AccessChain 31(data) 1897 63 35 1906: 24(int) CompositeExtract 1904 0 Store 1905 1906 1907: 64(ptr) AccessChain 31(data) 1897 63 189 1908: 24(int) CompositeExtract 1904 1 Store 1907 1908 1909: 6(int) Load 8(invocation) 1910: 71(ptr) AccessChain 31(data) 63 63 1911: 25(ivec4) Load 1910 1912: 78(ivec3) VectorShuffle 1911 1911 0 1 2 1913: 161(bvec3) SLessThan 1912 815 1914: 17(ivec4) Load 19(ballot) 1915: 161(bvec3) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1913 1914 1916: 78(ivec3) Select 1915 819 815 1917: 64(ptr) AccessChain 31(data) 1909 63 35 1918: 24(int) CompositeExtract 1916 0 Store 1917 1918 1919: 64(ptr) AccessChain 31(data) 1909 63 189 1920: 24(int) CompositeExtract 1916 1 Store 1919 1920 1921: 64(ptr) AccessChain 31(data) 1909 63 202 1922: 24(int) CompositeExtract 1916 2 Store 1921 1922 1923: 6(int) Load 8(invocation) 1924: 71(ptr) AccessChain 31(data) 63 63 1925: 25(ivec4) Load 1924 1926: 169(bvec4) SLessThan 1925 830 1927: 17(ivec4) Load 19(ballot) 1928: 169(bvec4) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1926 1927 1929: 25(ivec4) Select 1928 834 830 1930: 71(ptr) AccessChain 31(data) 1923 63 Store 1930 1929 1931: 6(int) Load 8(invocation) 1932: 36(ptr) AccessChain 31(data) 34 34 35 1933: 22(float) Load 1932 1934: 17(ivec4) Load 19(ballot) 1935: 22(float) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1933 1934 1936: 36(ptr) AccessChain 31(data) 1931 34 35 Store 1936 1935 1937: 6(int) Load 8(invocation) 1938: 44(ptr) AccessChain 31(data) 63 34 1939: 23(fvec4) Load 1938 1940: 43(fvec2) VectorShuffle 1939 1939 0 1 1941: 17(ivec4) Load 19(ballot) 1942: 43(fvec2) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1940 1941 1943: 36(ptr) AccessChain 31(data) 1937 34 35 1944: 22(float) CompositeExtract 1942 0 Store 1943 1944 1945: 36(ptr) AccessChain 31(data) 1937 34 189 1946: 22(float) CompositeExtract 1942 1 Store 1945 1946 1947: 6(int) Load 8(invocation) 1948: 44(ptr) AccessChain 31(data) 33 34 1949: 23(fvec4) Load 1948 1950: 51(fvec3) VectorShuffle 1949 1949 0 1 2 1951: 17(ivec4) Load 19(ballot) 1952: 51(fvec3) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1950 1951 1953: 36(ptr) AccessChain 31(data) 1947 34 35 1954: 22(float) CompositeExtract 1952 0 Store 1953 1954 1955: 36(ptr) AccessChain 31(data) 1947 34 189 1956: 22(float) CompositeExtract 1952 1 Store 1955 1956 1957: 36(ptr) AccessChain 31(data) 1947 34 202 1958: 22(float) CompositeExtract 1952 2 Store 1957 1958 1959: 6(int) Load 8(invocation) 1960: 44(ptr) AccessChain 31(data) 115 34 1961: 23(fvec4) Load 1960 1962: 17(ivec4) Load 19(ballot) 1963: 23(fvec4) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1961 1962 1964: 44(ptr) AccessChain 31(data) 1959 34 Store 1964 1963 1965: 6(int) Load 8(invocation) 1966: 64(ptr) AccessChain 31(data) 34 63 35 1967: 24(int) Load 1966 1968: 17(ivec4) Load 19(ballot) 1969: 24(int) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1967 1968 1970: 64(ptr) AccessChain 31(data) 1965 63 35 Store 1970 1969 1971: 6(int) Load 8(invocation) 1972: 71(ptr) AccessChain 31(data) 63 63 1973: 25(ivec4) Load 1972 1974: 70(ivec2) VectorShuffle 1973 1973 0 1 1975: 17(ivec4) Load 19(ballot) 1976: 70(ivec2) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1974 1975 1977: 64(ptr) AccessChain 31(data) 1971 63 35 1978: 24(int) CompositeExtract 1976 0 Store 1977 1978 1979: 64(ptr) AccessChain 31(data) 1971 63 189 1980: 24(int) CompositeExtract 1976 1 Store 1979 1980 1981: 6(int) Load 8(invocation) 1982: 71(ptr) AccessChain 31(data) 33 63 1983: 25(ivec4) Load 1982 1984: 78(ivec3) VectorShuffle 1983 1983 0 1 2 1985: 17(ivec4) Load 19(ballot) 1986: 78(ivec3) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1984 1985 1987: 64(ptr) AccessChain 31(data) 1981 63 35 1988: 24(int) CompositeExtract 1986 0 Store 1987 1988 1989: 64(ptr) AccessChain 31(data) 1981 63 189 1990: 24(int) CompositeExtract 1986 1 Store 1989 1990 1991: 64(ptr) AccessChain 31(data) 1981 63 202 1992: 24(int) CompositeExtract 1986 2 Store 1991 1992 1993: 6(int) Load 8(invocation) 1994: 71(ptr) AccessChain 31(data) 115 63 1995: 25(ivec4) Load 1994 1996: 17(ivec4) Load 19(ballot) 1997: 25(ivec4) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1995 1996 1998: 71(ptr) AccessChain 31(data) 1993 63 Store 1998 1997 1999: 6(int) Load 8(invocation) 2000: 90(ptr) AccessChain 31(data) 34 33 35 2001: 6(int) Load 2000 2002: 17(ivec4) Load 19(ballot) 2003: 6(int) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 2001 2002 2004: 90(ptr) AccessChain 31(data) 1999 33 35 Store 2004 2003 2005: 6(int) Load 8(invocation) 2006: 40(ptr) AccessChain 31(data) 63 33 2007: 17(ivec4) Load 2006 2008: 96(ivec2) VectorShuffle 2007 2007 0 1 2009: 17(ivec4) Load 19(ballot) 2010: 96(ivec2) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 2008 2009 2011: 90(ptr) AccessChain 31(data) 2005 33 35 2012: 6(int) CompositeExtract 2010 0 Store 2011 2012 2013: 90(ptr) AccessChain 31(data) 2005 33 189 2014: 6(int) CompositeExtract 2010 1 Store 2013 2014 2015: 6(int) Load 8(invocation) 2016: 40(ptr) AccessChain 31(data) 33 33 2017: 17(ivec4) Load 2016 2018: 103(ivec3) VectorShuffle 2017 2017 0 1 2 2019: 17(ivec4) Load 19(ballot) 2020: 103(ivec3) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 2018 2019 2021: 90(ptr) AccessChain 31(data) 2015 33 35 2022: 6(int) CompositeExtract 2020 0 Store 2021 2022 2023: 90(ptr) AccessChain 31(data) 2015 33 189 2024: 6(int) CompositeExtract 2020 1 Store 2023 2024 2025: 90(ptr) AccessChain 31(data) 2015 33 202 2026: 6(int) CompositeExtract 2020 2 Store 2025 2026 2027: 6(int) Load 8(invocation) 2028: 40(ptr) AccessChain 31(data) 115 33 2029: 17(ivec4) Load 2028 2030: 17(ivec4) Load 19(ballot) 2031: 17(ivec4) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 2029 2030 2032: 40(ptr) AccessChain 31(data) 2027 33 Store 2032 2031 2033: 6(int) Load 8(invocation) 2034: 116(ptr) AccessChain 31(data) 34 115 35 2035:26(float64_t) Load 2034 2036: 17(ivec4) Load 19(ballot) 2037:26(float64_t) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 2035 2036 2038: 116(ptr) AccessChain 31(data) 2033 115 35 Store 2038 2037 2039: 6(int) Load 8(invocation) 2040: 123(ptr) AccessChain 31(data) 63 115 2041: 27(f64vec4) Load 2040 2042:122(f64vec2) VectorShuffle 2041 2041 0 1 2043: 17(ivec4) Load 19(ballot) 2044:122(f64vec2) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 2042 2043 2045: 116(ptr) AccessChain 31(data) 2039 115 35 2046:26(float64_t) CompositeExtract 2044 0 Store 2045 2046 2047: 116(ptr) AccessChain 31(data) 2039 115 189 2048:26(float64_t) CompositeExtract 2044 1 Store 2047 2048 2049: 6(int) Load 8(invocation) 2050: 123(ptr) AccessChain 31(data) 33 115 2051: 27(f64vec4) Load 2050 2052:130(f64vec3) VectorShuffle 2051 2051 0 1 2 2053: 17(ivec4) Load 19(ballot) 2054:130(f64vec3) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 2052 2053 2055: 116(ptr) AccessChain 31(data) 2049 115 35 2056:26(float64_t) CompositeExtract 2054 0 Store 2055 2056 2057: 116(ptr) AccessChain 31(data) 2049 115 189 2058:26(float64_t) CompositeExtract 2054 1 Store 2057 2058 2059: 116(ptr) AccessChain 31(data) 2049 115 202 2060:26(float64_t) CompositeExtract 2054 2 Store 2059 2060 2061: 6(int) Load 8(invocation) 2062: 123(ptr) AccessChain 31(data) 115 115 2063: 27(f64vec4) Load 2062 2064: 17(ivec4) Load 19(ballot) 2065: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 2063 2064 2066: 123(ptr) AccessChain 31(data) 2061 115 Store 2066 2065 2067: 6(int) Load 8(invocation) 2068: 36(ptr) AccessChain 31(data) 34 34 35 2069: 22(float) Load 2068 2070: 17(ivec4) Load 19(ballot) 2071: 22(float) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2069 2070 2072: 36(ptr) AccessChain 31(data) 2067 34 35 Store 2072 2071 2073: 6(int) Load 8(invocation) 2074: 44(ptr) AccessChain 31(data) 63 34 2075: 23(fvec4) Load 2074 2076: 43(fvec2) VectorShuffle 2075 2075 0 1 2077: 17(ivec4) Load 19(ballot) 2078: 43(fvec2) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2076 2077 2079: 36(ptr) AccessChain 31(data) 2073 34 35 2080: 22(float) CompositeExtract 2078 0 Store 2079 2080 2081: 36(ptr) AccessChain 31(data) 2073 34 189 2082: 22(float) CompositeExtract 2078 1 Store 2081 2082 2083: 6(int) Load 8(invocation) 2084: 44(ptr) AccessChain 31(data) 33 34 2085: 23(fvec4) Load 2084 2086: 51(fvec3) VectorShuffle 2085 2085 0 1 2 2087: 17(ivec4) Load 19(ballot) 2088: 51(fvec3) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2086 2087 2089: 36(ptr) AccessChain 31(data) 2083 34 35 2090: 22(float) CompositeExtract 2088 0 Store 2089 2090 2091: 36(ptr) AccessChain 31(data) 2083 34 189 2092: 22(float) CompositeExtract 2088 1 Store 2091 2092 2093: 36(ptr) AccessChain 31(data) 2083 34 202 2094: 22(float) CompositeExtract 2088 2 Store 2093 2094 2095: 6(int) Load 8(invocation) 2096: 44(ptr) AccessChain 31(data) 115 34 2097: 23(fvec4) Load 2096 2098: 17(ivec4) Load 19(ballot) 2099: 23(fvec4) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2097 2098 2100: 44(ptr) AccessChain 31(data) 2095 34 Store 2100 2099 2101: 6(int) Load 8(invocation) 2102: 64(ptr) AccessChain 31(data) 34 63 35 2103: 24(int) Load 2102 2104: 17(ivec4) Load 19(ballot) 2105: 24(int) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2103 2104 2106: 64(ptr) AccessChain 31(data) 2101 63 35 Store 2106 2105 2107: 6(int) Load 8(invocation) 2108: 71(ptr) AccessChain 31(data) 63 63 2109: 25(ivec4) Load 2108 2110: 70(ivec2) VectorShuffle 2109 2109 0 1 2111: 17(ivec4) Load 19(ballot) 2112: 70(ivec2) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2110 2111 2113: 64(ptr) AccessChain 31(data) 2107 63 35 2114: 24(int) CompositeExtract 2112 0 Store 2113 2114 2115: 64(ptr) AccessChain 31(data) 2107 63 189 2116: 24(int) CompositeExtract 2112 1 Store 2115 2116 2117: 6(int) Load 8(invocation) 2118: 71(ptr) AccessChain 31(data) 33 63 2119: 25(ivec4) Load 2118 2120: 78(ivec3) VectorShuffle 2119 2119 0 1 2 2121: 17(ivec4) Load 19(ballot) 2122: 78(ivec3) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2120 2121 2123: 64(ptr) AccessChain 31(data) 2117 63 35 2124: 24(int) CompositeExtract 2122 0 Store 2123 2124 2125: 64(ptr) AccessChain 31(data) 2117 63 189 2126: 24(int) CompositeExtract 2122 1 Store 2125 2126 2127: 64(ptr) AccessChain 31(data) 2117 63 202 2128: 24(int) CompositeExtract 2122 2 Store 2127 2128 2129: 6(int) Load 8(invocation) 2130: 71(ptr) AccessChain 31(data) 115 63 2131: 25(ivec4) Load 2130 2132: 17(ivec4) Load 19(ballot) 2133: 25(ivec4) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2131 2132 2134: 71(ptr) AccessChain 31(data) 2129 63 Store 2134 2133 2135: 6(int) Load 8(invocation) 2136: 90(ptr) AccessChain 31(data) 34 33 35 2137: 6(int) Load 2136 2138: 17(ivec4) Load 19(ballot) 2139: 6(int) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2137 2138 2140: 90(ptr) AccessChain 31(data) 2135 33 35 Store 2140 2139 2141: 6(int) Load 8(invocation) 2142: 40(ptr) AccessChain 31(data) 63 33 2143: 17(ivec4) Load 2142 2144: 96(ivec2) VectorShuffle 2143 2143 0 1 2145: 17(ivec4) Load 19(ballot) 2146: 96(ivec2) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2144 2145 2147: 90(ptr) AccessChain 31(data) 2141 33 35 2148: 6(int) CompositeExtract 2146 0 Store 2147 2148 2149: 90(ptr) AccessChain 31(data) 2141 33 189 2150: 6(int) CompositeExtract 2146 1 Store 2149 2150 2151: 6(int) Load 8(invocation) 2152: 40(ptr) AccessChain 31(data) 33 33 2153: 17(ivec4) Load 2152 2154: 103(ivec3) VectorShuffle 2153 2153 0 1 2 2155: 17(ivec4) Load 19(ballot) 2156: 103(ivec3) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2154 2155 2157: 90(ptr) AccessChain 31(data) 2151 33 35 2158: 6(int) CompositeExtract 2156 0 Store 2157 2158 2159: 90(ptr) AccessChain 31(data) 2151 33 189 2160: 6(int) CompositeExtract 2156 1 Store 2159 2160 2161: 90(ptr) AccessChain 31(data) 2151 33 202 2162: 6(int) CompositeExtract 2156 2 Store 2161 2162 2163: 6(int) Load 8(invocation) 2164: 40(ptr) AccessChain 31(data) 115 33 2165: 17(ivec4) Load 2164 2166: 17(ivec4) Load 19(ballot) 2167: 17(ivec4) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2165 2166 2168: 40(ptr) AccessChain 31(data) 2163 33 Store 2168 2167 2169: 6(int) Load 8(invocation) 2170: 116(ptr) AccessChain 31(data) 34 115 35 2171:26(float64_t) Load 2170 2172: 17(ivec4) Load 19(ballot) 2173:26(float64_t) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2171 2172 2174: 116(ptr) AccessChain 31(data) 2169 115 35 Store 2174 2173 2175: 6(int) Load 8(invocation) 2176: 123(ptr) AccessChain 31(data) 63 115 2177: 27(f64vec4) Load 2176 2178:122(f64vec2) VectorShuffle 2177 2177 0 1 2179: 17(ivec4) Load 19(ballot) 2180:122(f64vec2) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2178 2179 2181: 116(ptr) AccessChain 31(data) 2175 115 35 2182:26(float64_t) CompositeExtract 2180 0 Store 2181 2182 2183: 116(ptr) AccessChain 31(data) 2175 115 189 2184:26(float64_t) CompositeExtract 2180 1 Store 2183 2184 2185: 6(int) Load 8(invocation) 2186: 123(ptr) AccessChain 31(data) 33 115 2187: 27(f64vec4) Load 2186 2188:130(f64vec3) VectorShuffle 2187 2187 0 1 2 2189: 17(ivec4) Load 19(ballot) 2190:130(f64vec3) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2188 2189 2191: 116(ptr) AccessChain 31(data) 2185 115 35 2192:26(float64_t) CompositeExtract 2190 0 Store 2191 2192 2193: 116(ptr) AccessChain 31(data) 2185 115 189 2194:26(float64_t) CompositeExtract 2190 1 Store 2193 2194 2195: 116(ptr) AccessChain 31(data) 2185 115 202 2196:26(float64_t) CompositeExtract 2190 2 Store 2195 2196 2197: 6(int) Load 8(invocation) 2198: 123(ptr) AccessChain 31(data) 115 115 2199: 27(f64vec4) Load 2198 2200: 17(ivec4) Load 19(ballot) 2201: 27(f64vec4) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2199 2200 2202: 123(ptr) AccessChain 31(data) 2197 115 Store 2202 2201 2203: 6(int) Load 8(invocation) 2204: 36(ptr) AccessChain 31(data) 34 34 35 2205: 22(float) Load 2204 2206: 17(ivec4) Load 19(ballot) 2207: 22(float) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2205 2206 2208: 36(ptr) AccessChain 31(data) 2203 34 35 Store 2208 2207 2209: 6(int) Load 8(invocation) 2210: 44(ptr) AccessChain 31(data) 63 34 2211: 23(fvec4) Load 2210 2212: 43(fvec2) VectorShuffle 2211 2211 0 1 2213: 17(ivec4) Load 19(ballot) 2214: 43(fvec2) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2212 2213 2215: 36(ptr) AccessChain 31(data) 2209 34 35 2216: 22(float) CompositeExtract 2214 0 Store 2215 2216 2217: 36(ptr) AccessChain 31(data) 2209 34 189 2218: 22(float) CompositeExtract 2214 1 Store 2217 2218 2219: 6(int) Load 8(invocation) 2220: 44(ptr) AccessChain 31(data) 33 34 2221: 23(fvec4) Load 2220 2222: 51(fvec3) VectorShuffle 2221 2221 0 1 2 2223: 17(ivec4) Load 19(ballot) 2224: 51(fvec3) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2222 2223 2225: 36(ptr) AccessChain 31(data) 2219 34 35 2226: 22(float) CompositeExtract 2224 0 Store 2225 2226 2227: 36(ptr) AccessChain 31(data) 2219 34 189 2228: 22(float) CompositeExtract 2224 1 Store 2227 2228 2229: 36(ptr) AccessChain 31(data) 2219 34 202 2230: 22(float) CompositeExtract 2224 2 Store 2229 2230 2231: 6(int) Load 8(invocation) 2232: 44(ptr) AccessChain 31(data) 115 34 2233: 23(fvec4) Load 2232 2234: 17(ivec4) Load 19(ballot) 2235: 23(fvec4) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2233 2234 2236: 44(ptr) AccessChain 31(data) 2231 34 Store 2236 2235 2237: 6(int) Load 8(invocation) 2238: 64(ptr) AccessChain 31(data) 34 63 35 2239: 24(int) Load 2238 2240: 17(ivec4) Load 19(ballot) 2241: 24(int) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2239 2240 2242: 64(ptr) AccessChain 31(data) 2237 63 35 Store 2242 2241 2243: 6(int) Load 8(invocation) 2244: 71(ptr) AccessChain 31(data) 63 63 2245: 25(ivec4) Load 2244 2246: 70(ivec2) VectorShuffle 2245 2245 0 1 2247: 17(ivec4) Load 19(ballot) 2248: 70(ivec2) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2246 2247 2249: 64(ptr) AccessChain 31(data) 2243 63 35 2250: 24(int) CompositeExtract 2248 0 Store 2249 2250 2251: 64(ptr) AccessChain 31(data) 2243 63 189 2252: 24(int) CompositeExtract 2248 1 Store 2251 2252 2253: 6(int) Load 8(invocation) 2254: 71(ptr) AccessChain 31(data) 33 63 2255: 25(ivec4) Load 2254 2256: 78(ivec3) VectorShuffle 2255 2255 0 1 2 2257: 17(ivec4) Load 19(ballot) 2258: 78(ivec3) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2256 2257 2259: 64(ptr) AccessChain 31(data) 2253 63 35 2260: 24(int) CompositeExtract 2258 0 Store 2259 2260 2261: 64(ptr) AccessChain 31(data) 2253 63 189 2262: 24(int) CompositeExtract 2258 1 Store 2261 2262 2263: 64(ptr) AccessChain 31(data) 2253 63 202 2264: 24(int) CompositeExtract 2258 2 Store 2263 2264 2265: 6(int) Load 8(invocation) 2266: 71(ptr) AccessChain 31(data) 115 63 2267: 25(ivec4) Load 2266 2268: 17(ivec4) Load 19(ballot) 2269: 25(ivec4) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2267 2268 2270: 71(ptr) AccessChain 31(data) 2265 63 Store 2270 2269 2271: 6(int) Load 8(invocation) 2272: 90(ptr) AccessChain 31(data) 34 33 35 2273: 6(int) Load 2272 2274: 17(ivec4) Load 19(ballot) 2275: 6(int) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2273 2274 2276: 90(ptr) AccessChain 31(data) 2271 33 35 Store 2276 2275 2277: 6(int) Load 8(invocation) 2278: 40(ptr) AccessChain 31(data) 63 33 2279: 17(ivec4) Load 2278 2280: 96(ivec2) VectorShuffle 2279 2279 0 1 2281: 17(ivec4) Load 19(ballot) 2282: 96(ivec2) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2280 2281 2283: 90(ptr) AccessChain 31(data) 2277 33 35 2284: 6(int) CompositeExtract 2282 0 Store 2283 2284 2285: 90(ptr) AccessChain 31(data) 2277 33 189 2286: 6(int) CompositeExtract 2282 1 Store 2285 2286 2287: 6(int) Load 8(invocation) 2288: 40(ptr) AccessChain 31(data) 33 33 2289: 17(ivec4) Load 2288 2290: 103(ivec3) VectorShuffle 2289 2289 0 1 2 2291: 17(ivec4) Load 19(ballot) 2292: 103(ivec3) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2290 2291 2293: 90(ptr) AccessChain 31(data) 2287 33 35 2294: 6(int) CompositeExtract 2292 0 Store 2293 2294 2295: 90(ptr) AccessChain 31(data) 2287 33 189 2296: 6(int) CompositeExtract 2292 1 Store 2295 2296 2297: 90(ptr) AccessChain 31(data) 2287 33 202 2298: 6(int) CompositeExtract 2292 2 Store 2297 2298 2299: 6(int) Load 8(invocation) 2300: 40(ptr) AccessChain 31(data) 115 33 2301: 17(ivec4) Load 2300 2302: 17(ivec4) Load 19(ballot) 2303: 17(ivec4) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2301 2302 2304: 40(ptr) AccessChain 31(data) 2299 33 Store 2304 2303 2305: 6(int) Load 8(invocation) 2306: 116(ptr) AccessChain 31(data) 34 115 35 2307:26(float64_t) Load 2306 2308: 17(ivec4) Load 19(ballot) 2309:26(float64_t) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2307 2308 2310: 116(ptr) AccessChain 31(data) 2305 115 35 Store 2310 2309 2311: 6(int) Load 8(invocation) 2312: 123(ptr) AccessChain 31(data) 63 115 2313: 27(f64vec4) Load 2312 2314:122(f64vec2) VectorShuffle 2313 2313 0 1 2315: 17(ivec4) Load 19(ballot) 2316:122(f64vec2) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2314 2315 2317: 116(ptr) AccessChain 31(data) 2311 115 35 2318:26(float64_t) CompositeExtract 2316 0 Store 2317 2318 2319: 116(ptr) AccessChain 31(data) 2311 115 189 2320:26(float64_t) CompositeExtract 2316 1 Store 2319 2320 2321: 6(int) Load 8(invocation) 2322: 123(ptr) AccessChain 31(data) 33 115 2323: 27(f64vec4) Load 2322 2324:130(f64vec3) VectorShuffle 2323 2323 0 1 2 2325: 17(ivec4) Load 19(ballot) 2326:130(f64vec3) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2324 2325 2327: 116(ptr) AccessChain 31(data) 2321 115 35 2328:26(float64_t) CompositeExtract 2326 0 Store 2327 2328 2329: 116(ptr) AccessChain 31(data) 2321 115 189 2330:26(float64_t) CompositeExtract 2326 1 Store 2329 2330 2331: 116(ptr) AccessChain 31(data) 2321 115 202 2332:26(float64_t) CompositeExtract 2326 2 Store 2331 2332 2333: 6(int) Load 8(invocation) 2334: 123(ptr) AccessChain 31(data) 115 115 2335: 27(f64vec4) Load 2334 2336: 17(ivec4) Load 19(ballot) 2337: 27(f64vec4) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2335 2336 2338: 123(ptr) AccessChain 31(data) 2333 115 Store 2338 2337 2339: 6(int) Load 8(invocation) 2340: 36(ptr) AccessChain 31(data) 34 34 35 2341: 22(float) Load 2340 2342: 17(ivec4) Load 19(ballot) 2343: 22(float) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2341 2342 2344: 36(ptr) AccessChain 31(data) 2339 34 35 Store 2344 2343 2345: 6(int) Load 8(invocation) 2346: 44(ptr) AccessChain 31(data) 63 34 2347: 23(fvec4) Load 2346 2348: 43(fvec2) VectorShuffle 2347 2347 0 1 2349: 17(ivec4) Load 19(ballot) 2350: 43(fvec2) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2348 2349 2351: 36(ptr) AccessChain 31(data) 2345 34 35 2352: 22(float) CompositeExtract 2350 0 Store 2351 2352 2353: 36(ptr) AccessChain 31(data) 2345 34 189 2354: 22(float) CompositeExtract 2350 1 Store 2353 2354 2355: 6(int) Load 8(invocation) 2356: 44(ptr) AccessChain 31(data) 33 34 2357: 23(fvec4) Load 2356 2358: 51(fvec3) VectorShuffle 2357 2357 0 1 2 2359: 17(ivec4) Load 19(ballot) 2360: 51(fvec3) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2358 2359 2361: 36(ptr) AccessChain 31(data) 2355 34 35 2362: 22(float) CompositeExtract 2360 0 Store 2361 2362 2363: 36(ptr) AccessChain 31(data) 2355 34 189 2364: 22(float) CompositeExtract 2360 1 Store 2363 2364 2365: 36(ptr) AccessChain 31(data) 2355 34 202 2366: 22(float) CompositeExtract 2360 2 Store 2365 2366 2367: 6(int) Load 8(invocation) 2368: 44(ptr) AccessChain 31(data) 115 34 2369: 23(fvec4) Load 2368 2370: 17(ivec4) Load 19(ballot) 2371: 23(fvec4) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2369 2370 2372: 44(ptr) AccessChain 31(data) 2367 34 Store 2372 2371 2373: 6(int) Load 8(invocation) 2374: 64(ptr) AccessChain 31(data) 34 63 35 2375: 24(int) Load 2374 2376: 17(ivec4) Load 19(ballot) 2377: 24(int) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2375 2376 2378: 64(ptr) AccessChain 31(data) 2373 63 35 Store 2378 2377 2379: 6(int) Load 8(invocation) 2380: 71(ptr) AccessChain 31(data) 63 63 2381: 25(ivec4) Load 2380 2382: 70(ivec2) VectorShuffle 2381 2381 0 1 2383: 17(ivec4) Load 19(ballot) 2384: 70(ivec2) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2382 2383 2385: 64(ptr) AccessChain 31(data) 2379 63 35 2386: 24(int) CompositeExtract 2384 0 Store 2385 2386 2387: 64(ptr) AccessChain 31(data) 2379 63 189 2388: 24(int) CompositeExtract 2384 1 Store 2387 2388 2389: 6(int) Load 8(invocation) 2390: 71(ptr) AccessChain 31(data) 33 63 2391: 25(ivec4) Load 2390 2392: 78(ivec3) VectorShuffle 2391 2391 0 1 2 2393: 17(ivec4) Load 19(ballot) 2394: 78(ivec3) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2392 2393 2395: 64(ptr) AccessChain 31(data) 2389 63 35 2396: 24(int) CompositeExtract 2394 0 Store 2395 2396 2397: 64(ptr) AccessChain 31(data) 2389 63 189 2398: 24(int) CompositeExtract 2394 1 Store 2397 2398 2399: 64(ptr) AccessChain 31(data) 2389 63 202 2400: 24(int) CompositeExtract 2394 2 Store 2399 2400 2401: 6(int) Load 8(invocation) 2402: 71(ptr) AccessChain 31(data) 115 63 2403: 25(ivec4) Load 2402 2404: 17(ivec4) Load 19(ballot) 2405: 25(ivec4) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2403 2404 2406: 71(ptr) AccessChain 31(data) 2401 63 Store 2406 2405 2407: 6(int) Load 8(invocation) 2408: 90(ptr) AccessChain 31(data) 34 33 35 2409: 6(int) Load 2408 2410: 17(ivec4) Load 19(ballot) 2411: 6(int) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2409 2410 2412: 90(ptr) AccessChain 31(data) 2407 33 35 Store 2412 2411 2413: 6(int) Load 8(invocation) 2414: 40(ptr) AccessChain 31(data) 63 33 2415: 17(ivec4) Load 2414 2416: 96(ivec2) VectorShuffle 2415 2415 0 1 2417: 17(ivec4) Load 19(ballot) 2418: 96(ivec2) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2416 2417 2419: 90(ptr) AccessChain 31(data) 2413 33 35 2420: 6(int) CompositeExtract 2418 0 Store 2419 2420 2421: 90(ptr) AccessChain 31(data) 2413 33 189 2422: 6(int) CompositeExtract 2418 1 Store 2421 2422 2423: 6(int) Load 8(invocation) 2424: 40(ptr) AccessChain 31(data) 33 33 2425: 17(ivec4) Load 2424 2426: 103(ivec3) VectorShuffle 2425 2425 0 1 2 2427: 17(ivec4) Load 19(ballot) 2428: 103(ivec3) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2426 2427 2429: 90(ptr) AccessChain 31(data) 2423 33 35 2430: 6(int) CompositeExtract 2428 0 Store 2429 2430 2431: 90(ptr) AccessChain 31(data) 2423 33 189 2432: 6(int) CompositeExtract 2428 1 Store 2431 2432 2433: 90(ptr) AccessChain 31(data) 2423 33 202 2434: 6(int) CompositeExtract 2428 2 Store 2433 2434 2435: 6(int) Load 8(invocation) 2436: 40(ptr) AccessChain 31(data) 115 33 2437: 17(ivec4) Load 2436 2438: 17(ivec4) Load 19(ballot) 2439: 17(ivec4) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2437 2438 2440: 40(ptr) AccessChain 31(data) 2435 33 Store 2440 2439 2441: 6(int) Load 8(invocation) 2442: 116(ptr) AccessChain 31(data) 34 115 35 2443:26(float64_t) Load 2442 2444: 17(ivec4) Load 19(ballot) 2445:26(float64_t) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2443 2444 2446: 116(ptr) AccessChain 31(data) 2441 115 35 Store 2446 2445 2447: 6(int) Load 8(invocation) 2448: 123(ptr) AccessChain 31(data) 63 115 2449: 27(f64vec4) Load 2448 2450:122(f64vec2) VectorShuffle 2449 2449 0 1 2451: 17(ivec4) Load 19(ballot) 2452:122(f64vec2) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2450 2451 2453: 116(ptr) AccessChain 31(data) 2447 115 35 2454:26(float64_t) CompositeExtract 2452 0 Store 2453 2454 2455: 116(ptr) AccessChain 31(data) 2447 115 189 2456:26(float64_t) CompositeExtract 2452 1 Store 2455 2456 2457: 6(int) Load 8(invocation) 2458: 123(ptr) AccessChain 31(data) 33 115 2459: 27(f64vec4) Load 2458 2460:130(f64vec3) VectorShuffle 2459 2459 0 1 2 2461: 17(ivec4) Load 19(ballot) 2462:130(f64vec3) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2460 2461 2463: 116(ptr) AccessChain 31(data) 2457 115 35 2464:26(float64_t) CompositeExtract 2462 0 Store 2463 2464 2465: 116(ptr) AccessChain 31(data) 2457 115 189 2466:26(float64_t) CompositeExtract 2462 1 Store 2465 2466 2467: 116(ptr) AccessChain 31(data) 2457 115 202 2468:26(float64_t) CompositeExtract 2462 2 Store 2467 2468 2469: 6(int) Load 8(invocation) 2470: 123(ptr) AccessChain 31(data) 115 115 2471: 27(f64vec4) Load 2470 2472: 17(ivec4) Load 19(ballot) 2473: 27(f64vec4) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2471 2472 2474: 123(ptr) AccessChain 31(data) 2469 115 Store 2474 2473 2475: 6(int) Load 8(invocation) 2476: 64(ptr) AccessChain 31(data) 34 63 35 2477: 24(int) Load 2476 2478: 17(ivec4) Load 19(ballot) 2479: 24(int) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2477 2478 2480: 64(ptr) AccessChain 31(data) 2475 63 35 Store 2480 2479 2481: 6(int) Load 8(invocation) 2482: 71(ptr) AccessChain 31(data) 63 63 2483: 25(ivec4) Load 2482 2484: 70(ivec2) VectorShuffle 2483 2483 0 1 2485: 17(ivec4) Load 19(ballot) 2486: 70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2484 2485 2487: 64(ptr) AccessChain 31(data) 2481 63 35 2488: 24(int) CompositeExtract 2486 0 Store 2487 2488 2489: 64(ptr) AccessChain 31(data) 2481 63 189 2490: 24(int) CompositeExtract 2486 1 Store 2489 2490 2491: 6(int) Load 8(invocation) 2492: 71(ptr) AccessChain 31(data) 33 63 2493: 25(ivec4) Load 2492 2494: 78(ivec3) VectorShuffle 2493 2493 0 1 2 2495: 17(ivec4) Load 19(ballot) 2496: 78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2494 2495 2497: 64(ptr) AccessChain 31(data) 2491 63 35 2498: 24(int) CompositeExtract 2496 0 Store 2497 2498 2499: 64(ptr) AccessChain 31(data) 2491 63 189 2500: 24(int) CompositeExtract 2496 1 Store 2499 2500 2501: 64(ptr) AccessChain 31(data) 2491 63 202 2502: 24(int) CompositeExtract 2496 2 Store 2501 2502 2503: 6(int) Load 8(invocation) 2504: 71(ptr) AccessChain 31(data) 115 63 2505: 25(ivec4) Load 2504 2506: 17(ivec4) Load 19(ballot) 2507: 25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2505 2506 2508: 71(ptr) AccessChain 31(data) 2503 63 Store 2508 2507 2509: 6(int) Load 8(invocation) 2510: 90(ptr) AccessChain 31(data) 34 33 35 2511: 6(int) Load 2510 2512: 17(ivec4) Load 19(ballot) 2513: 6(int) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2511 2512 2514: 90(ptr) AccessChain 31(data) 2509 33 35 Store 2514 2513 2515: 6(int) Load 8(invocation) 2516: 40(ptr) AccessChain 31(data) 63 33 2517: 17(ivec4) Load 2516 2518: 96(ivec2) VectorShuffle 2517 2517 0 1 2519: 17(ivec4) Load 19(ballot) 2520: 96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2518 2519 2521: 90(ptr) AccessChain 31(data) 2515 33 35 2522: 6(int) CompositeExtract 2520 0 Store 2521 2522 2523: 90(ptr) AccessChain 31(data) 2515 33 189 2524: 6(int) CompositeExtract 2520 1 Store 2523 2524 2525: 6(int) Load 8(invocation) 2526: 40(ptr) AccessChain 31(data) 33 33 2527: 17(ivec4) Load 2526 2528: 103(ivec3) VectorShuffle 2527 2527 0 1 2 2529: 17(ivec4) Load 19(ballot) 2530: 103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2528 2529 2531: 90(ptr) AccessChain 31(data) 2525 33 35 2532: 6(int) CompositeExtract 2530 0 Store 2531 2532 2533: 90(ptr) AccessChain 31(data) 2525 33 189 2534: 6(int) CompositeExtract 2530 1 Store 2533 2534 2535: 90(ptr) AccessChain 31(data) 2525 33 202 2536: 6(int) CompositeExtract 2530 2 Store 2535 2536 2537: 6(int) Load 8(invocation) 2538: 40(ptr) AccessChain 31(data) 115 33 2539: 17(ivec4) Load 2538 2540: 17(ivec4) Load 19(ballot) 2541: 17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2539 2540 2542: 40(ptr) AccessChain 31(data) 2537 33 Store 2542 2541 2543: 6(int) Load 8(invocation) 2544: 64(ptr) AccessChain 31(data) 34 63 35 2545: 24(int) Load 2544 2546: 144(bool) SLessThan 2545 34 2547: 17(ivec4) Load 19(ballot) 2548: 144(bool) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2546 2547 2549: 24(int) Select 2548 63 34 2550: 64(ptr) AccessChain 31(data) 2543 63 35 Store 2550 2549 2551: 6(int) Load 8(invocation) 2552: 71(ptr) AccessChain 31(data) 63 63 2553: 25(ivec4) Load 2552 2554: 70(ivec2) VectorShuffle 2553 2553 0 1 2555: 152(bvec2) SLessThan 2554 801 2556: 17(ivec4) Load 19(ballot) 2557: 152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2555 2556 2558: 70(ivec2) Select 2557 805 801 2559: 64(ptr) AccessChain 31(data) 2551 63 35 2560: 24(int) CompositeExtract 2558 0 Store 2559 2560 2561: 64(ptr) AccessChain 31(data) 2551 63 189 2562: 24(int) CompositeExtract 2558 1 Store 2561 2562 2563: 6(int) Load 8(invocation) 2564: 71(ptr) AccessChain 31(data) 63 63 2565: 25(ivec4) Load 2564 2566: 78(ivec3) VectorShuffle 2565 2565 0 1 2 2567: 161(bvec3) SLessThan 2566 815 2568: 17(ivec4) Load 19(ballot) 2569: 161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2567 2568 2570: 78(ivec3) Select 2569 819 815 2571: 64(ptr) AccessChain 31(data) 2563 63 35 2572: 24(int) CompositeExtract 2570 0 Store 2571 2572 2573: 64(ptr) AccessChain 31(data) 2563 63 189 2574: 24(int) CompositeExtract 2570 1 Store 2573 2574 2575: 64(ptr) AccessChain 31(data) 2563 63 202 2576: 24(int) CompositeExtract 2570 2 Store 2575 2576 2577: 6(int) Load 8(invocation) 2578: 71(ptr) AccessChain 31(data) 63 63 2579: 25(ivec4) Load 2578 2580: 169(bvec4) SLessThan 2579 830 2581: 17(ivec4) Load 19(ballot) 2582: 169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2580 2581 2583: 25(ivec4) Select 2582 834 830 2584: 71(ptr) AccessChain 31(data) 2577 63 Store 2584 2583 2585: 6(int) Load 8(invocation) 2586: 64(ptr) AccessChain 31(data) 34 63 35 2587: 24(int) Load 2586 2588: 17(ivec4) Load 19(ballot) 2589: 24(int) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2587 2588 2590: 64(ptr) AccessChain 31(data) 2585 63 35 Store 2590 2589 2591: 6(int) Load 8(invocation) 2592: 71(ptr) AccessChain 31(data) 63 63 2593: 25(ivec4) Load 2592 2594: 70(ivec2) VectorShuffle 2593 2593 0 1 2595: 17(ivec4) Load 19(ballot) 2596: 70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2594 2595 2597: 64(ptr) AccessChain 31(data) 2591 63 35 2598: 24(int) CompositeExtract 2596 0 Store 2597 2598 2599: 64(ptr) AccessChain 31(data) 2591 63 189 2600: 24(int) CompositeExtract 2596 1 Store 2599 2600 2601: 6(int) Load 8(invocation) 2602: 71(ptr) AccessChain 31(data) 33 63 2603: 25(ivec4) Load 2602 2604: 78(ivec3) VectorShuffle 2603 2603 0 1 2 2605: 17(ivec4) Load 19(ballot) 2606: 78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2604 2605 2607: 64(ptr) AccessChain 31(data) 2601 63 35 2608: 24(int) CompositeExtract 2606 0 Store 2607 2608 2609: 64(ptr) AccessChain 31(data) 2601 63 189 2610: 24(int) CompositeExtract 2606 1 Store 2609 2610 2611: 64(ptr) AccessChain 31(data) 2601 63 202 2612: 24(int) CompositeExtract 2606 2 Store 2611 2612 2613: 6(int) Load 8(invocation) 2614: 71(ptr) AccessChain 31(data) 115 63 2615: 25(ivec4) Load 2614 2616: 17(ivec4) Load 19(ballot) 2617: 25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2615 2616 2618: 71(ptr) AccessChain 31(data) 2613 63 Store 2618 2617 2619: 6(int) Load 8(invocation) 2620: 90(ptr) AccessChain 31(data) 34 33 35 2621: 6(int) Load 2620 2622: 17(ivec4) Load 19(ballot) 2623: 6(int) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2621 2622 2624: 90(ptr) AccessChain 31(data) 2619 33 35 Store 2624 2623 2625: 6(int) Load 8(invocation) 2626: 40(ptr) AccessChain 31(data) 63 33 2627: 17(ivec4) Load 2626 2628: 96(ivec2) VectorShuffle 2627 2627 0 1 2629: 17(ivec4) Load 19(ballot) 2630: 96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2628 2629 2631: 90(ptr) AccessChain 31(data) 2625 33 35 2632: 6(int) CompositeExtract 2630 0 Store 2631 2632 2633: 90(ptr) AccessChain 31(data) 2625 33 189 2634: 6(int) CompositeExtract 2630 1 Store 2633 2634 2635: 6(int) Load 8(invocation) 2636: 40(ptr) AccessChain 31(data) 33 33 2637: 17(ivec4) Load 2636 2638: 103(ivec3) VectorShuffle 2637 2637 0 1 2 2639: 17(ivec4) Load 19(ballot) 2640: 103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2638 2639 2641: 90(ptr) AccessChain 31(data) 2635 33 35 2642: 6(int) CompositeExtract 2640 0 Store 2641 2642 2643: 90(ptr) AccessChain 31(data) 2635 33 189 2644: 6(int) CompositeExtract 2640 1 Store 2643 2644 2645: 90(ptr) AccessChain 31(data) 2635 33 202 2646: 6(int) CompositeExtract 2640 2 Store 2645 2646 2647: 6(int) Load 8(invocation) 2648: 40(ptr) AccessChain 31(data) 115 33 2649: 17(ivec4) Load 2648 2650: 17(ivec4) Load 19(ballot) 2651: 17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2649 2650 2652: 40(ptr) AccessChain 31(data) 2647 33 Store 2652 2651 2653: 6(int) Load 8(invocation) 2654: 64(ptr) AccessChain 31(data) 34 63 35 2655: 24(int) Load 2654 2656: 144(bool) SLessThan 2655 34 2657: 17(ivec4) Load 19(ballot) 2658: 144(bool) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2656 2657 2659: 24(int) Select 2658 63 34 2660: 64(ptr) AccessChain 31(data) 2653 63 35 Store 2660 2659 2661: 6(int) Load 8(invocation) 2662: 71(ptr) AccessChain 31(data) 63 63 2663: 25(ivec4) Load 2662 2664: 70(ivec2) VectorShuffle 2663 2663 0 1 2665: 152(bvec2) SLessThan 2664 801 2666: 17(ivec4) Load 19(ballot) 2667: 152(bvec2) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2665 2666 2668: 70(ivec2) Select 2667 805 801 2669: 64(ptr) AccessChain 31(data) 2661 63 35 2670: 24(int) CompositeExtract 2668 0 Store 2669 2670 2671: 64(ptr) AccessChain 31(data) 2661 63 189 2672: 24(int) CompositeExtract 2668 1 Store 2671 2672 2673: 6(int) Load 8(invocation) 2674: 71(ptr) AccessChain 31(data) 63 63 2675: 25(ivec4) Load 2674 2676: 78(ivec3) VectorShuffle 2675 2675 0 1 2 2677: 161(bvec3) SLessThan 2676 815 2678: 17(ivec4) Load 19(ballot) 2679: 161(bvec3) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2677 2678 2680: 78(ivec3) Select 2679 819 815 2681: 64(ptr) AccessChain 31(data) 2673 63 35 2682: 24(int) CompositeExtract 2680 0 Store 2681 2682 2683: 64(ptr) AccessChain 31(data) 2673 63 189 2684: 24(int) CompositeExtract 2680 1 Store 2683 2684 2685: 64(ptr) AccessChain 31(data) 2673 63 202 2686: 24(int) CompositeExtract 2680 2 Store 2685 2686 2687: 6(int) Load 8(invocation) 2688: 71(ptr) AccessChain 31(data) 63 63 2689: 25(ivec4) Load 2688 2690: 169(bvec4) SLessThan 2689 830 2691: 17(ivec4) Load 19(ballot) 2692: 169(bvec4) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2690 2691 2693: 25(ivec4) Select 2692 834 830 2694: 71(ptr) AccessChain 31(data) 2687 63 Store 2694 2693 2695: 6(int) Load 8(invocation) 2696: 64(ptr) AccessChain 31(data) 34 63 35 2697: 24(int) Load 2696 2698: 17(ivec4) Load 19(ballot) 2699: 24(int) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2697 2698 2700: 64(ptr) AccessChain 31(data) 2695 63 35 Store 2700 2699 2701: 6(int) Load 8(invocation) 2702: 71(ptr) AccessChain 31(data) 63 63 2703: 25(ivec4) Load 2702 2704: 70(ivec2) VectorShuffle 2703 2703 0 1 2705: 17(ivec4) Load 19(ballot) 2706: 70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2704 2705 2707: 64(ptr) AccessChain 31(data) 2701 63 35 2708: 24(int) CompositeExtract 2706 0 Store 2707 2708 2709: 64(ptr) AccessChain 31(data) 2701 63 189 2710: 24(int) CompositeExtract 2706 1 Store 2709 2710 2711: 6(int) Load 8(invocation) 2712: 71(ptr) AccessChain 31(data) 33 63 2713: 25(ivec4) Load 2712 2714: 78(ivec3) VectorShuffle 2713 2713 0 1 2 2715: 17(ivec4) Load 19(ballot) 2716: 78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2714 2715 2717: 64(ptr) AccessChain 31(data) 2711 63 35 2718: 24(int) CompositeExtract 2716 0 Store 2717 2718 2719: 64(ptr) AccessChain 31(data) 2711 63 189 2720: 24(int) CompositeExtract 2716 1 Store 2719 2720 2721: 64(ptr) AccessChain 31(data) 2711 63 202 2722: 24(int) CompositeExtract 2716 2 Store 2721 2722 2723: 6(int) Load 8(invocation) 2724: 71(ptr) AccessChain 31(data) 115 63 2725: 25(ivec4) Load 2724 2726: 17(ivec4) Load 19(ballot) 2727: 25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2725 2726 2728: 71(ptr) AccessChain 31(data) 2723 63 Store 2728 2727 2729: 6(int) Load 8(invocation) 2730: 90(ptr) AccessChain 31(data) 34 33 35 2731: 6(int) Load 2730 2732: 17(ivec4) Load 19(ballot) 2733: 6(int) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2731 2732 2734: 90(ptr) AccessChain 31(data) 2729 33 35 Store 2734 2733 2735: 6(int) Load 8(invocation) 2736: 40(ptr) AccessChain 31(data) 63 33 2737: 17(ivec4) Load 2736 2738: 96(ivec2) VectorShuffle 2737 2737 0 1 2739: 17(ivec4) Load 19(ballot) 2740: 96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2738 2739 2741: 90(ptr) AccessChain 31(data) 2735 33 35 2742: 6(int) CompositeExtract 2740 0 Store 2741 2742 2743: 90(ptr) AccessChain 31(data) 2735 33 189 2744: 6(int) CompositeExtract 2740 1 Store 2743 2744 2745: 6(int) Load 8(invocation) 2746: 40(ptr) AccessChain 31(data) 33 33 2747: 17(ivec4) Load 2746 2748: 103(ivec3) VectorShuffle 2747 2747 0 1 2 2749: 17(ivec4) Load 19(ballot) 2750: 103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2748 2749 2751: 90(ptr) AccessChain 31(data) 2745 33 35 2752: 6(int) CompositeExtract 2750 0 Store 2751 2752 2753: 90(ptr) AccessChain 31(data) 2745 33 189 2754: 6(int) CompositeExtract 2750 1 Store 2753 2754 2755: 90(ptr) AccessChain 31(data) 2745 33 202 2756: 6(int) CompositeExtract 2750 2 Store 2755 2756 2757: 6(int) Load 8(invocation) 2758: 40(ptr) AccessChain 31(data) 115 33 2759: 17(ivec4) Load 2758 2760: 17(ivec4) Load 19(ballot) 2761: 17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2759 2760 2762: 40(ptr) AccessChain 31(data) 2757 33 Store 2762 2761 2763: 6(int) Load 8(invocation) 2764: 64(ptr) AccessChain 31(data) 34 63 35 2765: 24(int) Load 2764 2766: 144(bool) SLessThan 2765 34 2767: 17(ivec4) Load 19(ballot) 2768: 144(bool) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2766 2767 2769: 24(int) Select 2768 63 34 2770: 64(ptr) AccessChain 31(data) 2763 63 35 Store 2770 2769 2771: 6(int) Load 8(invocation) 2772: 71(ptr) AccessChain 31(data) 63 63 2773: 25(ivec4) Load 2772 2774: 70(ivec2) VectorShuffle 2773 2773 0 1 2775: 152(bvec2) SLessThan 2774 801 2776: 17(ivec4) Load 19(ballot) 2777: 152(bvec2) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2775 2776 2778: 70(ivec2) Select 2777 805 801 2779: 64(ptr) AccessChain 31(data) 2771 63 35 2780: 24(int) CompositeExtract 2778 0 Store 2779 2780 2781: 64(ptr) AccessChain 31(data) 2771 63 189 2782: 24(int) CompositeExtract 2778 1 Store 2781 2782 2783: 6(int) Load 8(invocation) 2784: 71(ptr) AccessChain 31(data) 63 63 2785: 25(ivec4) Load 2784 2786: 78(ivec3) VectorShuffle 2785 2785 0 1 2 2787: 161(bvec3) SLessThan 2786 815 2788: 17(ivec4) Load 19(ballot) 2789: 161(bvec3) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2787 2788 2790: 78(ivec3) Select 2789 819 815 2791: 64(ptr) AccessChain 31(data) 2783 63 35 2792: 24(int) CompositeExtract 2790 0 Store 2791 2792 2793: 64(ptr) AccessChain 31(data) 2783 63 189 2794: 24(int) CompositeExtract 2790 1 Store 2793 2794 2795: 64(ptr) AccessChain 31(data) 2783 63 202 2796: 24(int) CompositeExtract 2790 2 Store 2795 2796 2797: 6(int) Load 8(invocation) 2798: 71(ptr) AccessChain 31(data) 63 63 2799: 25(ivec4) Load 2798 2800: 169(bvec4) SLessThan 2799 830 2801: 17(ivec4) Load 19(ballot) 2802: 169(bvec4) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2800 2801 2803: 25(ivec4) Select 2802 834 830 2804: 71(ptr) AccessChain 31(data) 2797 63 Store 2804 2803 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupQuad.comp.out000066400000000000000000001324511506534232700234330ustar00rootroot00000000000000spv.subgroupQuad.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 696 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformQuad 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 1 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_quad" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 24 "Buffers" MemberName 24(Buffers) 0 "f4" MemberName 24(Buffers) 1 "i4" MemberName 24(Buffers) 2 "u4" MemberName 24(Buffers) 3 "d4" Name 27 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 Decorate 27(data) Binding 0 Decorate 27(data) DescriptorSet 0 Decorate 695 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeFloat 32 18: TypeVector 17(float) 4 19: TypeInt 32 1 20: TypeVector 19(int) 4 21: TypeVector 6(int) 4 22: TypeFloat 64 23: TypeVector 22(float64_t) 4 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 25: TypeArray 24(Buffers) 15 26: TypePointer StorageBuffer 25 27(data): 26(ptr) Variable StorageBuffer 29: 19(int) Constant 0 30: 6(int) Constant 0 31: TypePointer StorageBuffer 17(float) 34: 6(int) Constant 1 35: 6(int) Constant 3 39: 19(int) Constant 1 40: TypeVector 17(float) 2 41: TypePointer StorageBuffer 18(fvec4) 51: 19(int) Constant 2 52: TypeVector 17(float) 3 61: 6(int) Constant 2 65: 19(int) Constant 3 71: TypePointer StorageBuffer 19(int) 77: TypeVector 19(int) 2 78: TypePointer StorageBuffer 20(ivec4) 88: TypeVector 19(int) 3 105: TypePointer StorageBuffer 6(int) 111: TypeVector 6(int) 2 112: TypePointer StorageBuffer 21(ivec4) 122: TypeVector 6(int) 3 139: TypePointer StorageBuffer 22(float64_t) 145: TypeVector 22(float64_t) 2 146: TypePointer StorageBuffer 23(f64vec4) 156: TypeVector 22(float64_t) 3 175: TypeBool 184: 77(ivec2) ConstantComposite 29 29 185: TypeVector 175(bool) 2 188: 77(ivec2) ConstantComposite 39 39 198: 88(ivec3) ConstantComposite 29 29 29 199: TypeVector 175(bool) 3 202: 88(ivec3) ConstantComposite 39 39 39 213: 20(ivec4) ConstantComposite 29 29 29 29 214: TypeVector 175(bool) 4 217: 20(ivec4) ConstantComposite 39 39 39 39 694: 6(int) Constant 8 695: 122(ivec3) ConstantComposite 694 34 34 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 28: 6(int) Load 8(invocation) 32: 31(ptr) AccessChain 27(data) 29 29 30 33: 17(float) Load 32 36: 17(float) GroupNonUniformQuadBroadcast 35 33 34 37: 31(ptr) AccessChain 27(data) 28 29 30 Store 37 36 38: 6(int) Load 8(invocation) 42: 41(ptr) AccessChain 27(data) 39 29 43: 18(fvec4) Load 42 44: 40(fvec2) VectorShuffle 43 43 0 1 45: 40(fvec2) GroupNonUniformQuadBroadcast 35 44 34 46: 31(ptr) AccessChain 27(data) 38 29 30 47: 17(float) CompositeExtract 45 0 Store 46 47 48: 31(ptr) AccessChain 27(data) 38 29 34 49: 17(float) CompositeExtract 45 1 Store 48 49 50: 6(int) Load 8(invocation) 53: 41(ptr) AccessChain 27(data) 51 29 54: 18(fvec4) Load 53 55: 52(fvec3) VectorShuffle 54 54 0 1 2 56: 52(fvec3) GroupNonUniformQuadBroadcast 35 55 34 57: 31(ptr) AccessChain 27(data) 50 29 30 58: 17(float) CompositeExtract 56 0 Store 57 58 59: 31(ptr) AccessChain 27(data) 50 29 34 60: 17(float) CompositeExtract 56 1 Store 59 60 62: 31(ptr) AccessChain 27(data) 50 29 61 63: 17(float) CompositeExtract 56 2 Store 62 63 64: 6(int) Load 8(invocation) 66: 41(ptr) AccessChain 27(data) 65 29 67: 18(fvec4) Load 66 68: 18(fvec4) GroupNonUniformQuadBroadcast 35 67 34 69: 41(ptr) AccessChain 27(data) 64 29 Store 69 68 70: 6(int) Load 8(invocation) 72: 71(ptr) AccessChain 27(data) 29 39 30 73: 19(int) Load 72 74: 19(int) GroupNonUniformQuadBroadcast 35 73 34 75: 71(ptr) AccessChain 27(data) 70 39 30 Store 75 74 76: 6(int) Load 8(invocation) 79: 78(ptr) AccessChain 27(data) 39 39 80: 20(ivec4) Load 79 81: 77(ivec2) VectorShuffle 80 80 0 1 82: 77(ivec2) GroupNonUniformQuadBroadcast 35 81 34 83: 71(ptr) AccessChain 27(data) 76 39 30 84: 19(int) CompositeExtract 82 0 Store 83 84 85: 71(ptr) AccessChain 27(data) 76 39 34 86: 19(int) CompositeExtract 82 1 Store 85 86 87: 6(int) Load 8(invocation) 89: 78(ptr) AccessChain 27(data) 51 39 90: 20(ivec4) Load 89 91: 88(ivec3) VectorShuffle 90 90 0 1 2 92: 88(ivec3) GroupNonUniformQuadBroadcast 35 91 34 93: 71(ptr) AccessChain 27(data) 87 39 30 94: 19(int) CompositeExtract 92 0 Store 93 94 95: 71(ptr) AccessChain 27(data) 87 39 34 96: 19(int) CompositeExtract 92 1 Store 95 96 97: 71(ptr) AccessChain 27(data) 87 39 61 98: 19(int) CompositeExtract 92 2 Store 97 98 99: 6(int) Load 8(invocation) 100: 78(ptr) AccessChain 27(data) 65 39 101: 20(ivec4) Load 100 102: 20(ivec4) GroupNonUniformQuadBroadcast 35 101 34 103: 78(ptr) AccessChain 27(data) 99 39 Store 103 102 104: 6(int) Load 8(invocation) 106: 105(ptr) AccessChain 27(data) 29 51 30 107: 6(int) Load 106 108: 6(int) GroupNonUniformQuadBroadcast 35 107 34 109: 105(ptr) AccessChain 27(data) 104 51 30 Store 109 108 110: 6(int) Load 8(invocation) 113: 112(ptr) AccessChain 27(data) 39 51 114: 21(ivec4) Load 113 115: 111(ivec2) VectorShuffle 114 114 0 1 116: 111(ivec2) GroupNonUniformQuadBroadcast 35 115 34 117: 105(ptr) AccessChain 27(data) 110 51 30 118: 6(int) CompositeExtract 116 0 Store 117 118 119: 105(ptr) AccessChain 27(data) 110 51 34 120: 6(int) CompositeExtract 116 1 Store 119 120 121: 6(int) Load 8(invocation) 123: 112(ptr) AccessChain 27(data) 51 51 124: 21(ivec4) Load 123 125: 122(ivec3) VectorShuffle 124 124 0 1 2 126: 122(ivec3) GroupNonUniformQuadBroadcast 35 125 34 127: 105(ptr) AccessChain 27(data) 121 51 30 128: 6(int) CompositeExtract 126 0 Store 127 128 129: 105(ptr) AccessChain 27(data) 121 51 34 130: 6(int) CompositeExtract 126 1 Store 129 130 131: 105(ptr) AccessChain 27(data) 121 51 61 132: 6(int) CompositeExtract 126 2 Store 131 132 133: 6(int) Load 8(invocation) 134: 112(ptr) AccessChain 27(data) 65 51 135: 21(ivec4) Load 134 136: 21(ivec4) GroupNonUniformQuadBroadcast 35 135 34 137: 112(ptr) AccessChain 27(data) 133 51 Store 137 136 138: 6(int) Load 8(invocation) 140: 139(ptr) AccessChain 27(data) 29 65 30 141:22(float64_t) Load 140 142:22(float64_t) GroupNonUniformQuadBroadcast 35 141 34 143: 139(ptr) AccessChain 27(data) 138 65 30 Store 143 142 144: 6(int) Load 8(invocation) 147: 146(ptr) AccessChain 27(data) 39 65 148: 23(f64vec4) Load 147 149:145(f64vec2) VectorShuffle 148 148 0 1 150:145(f64vec2) GroupNonUniformQuadBroadcast 35 149 34 151: 139(ptr) AccessChain 27(data) 144 65 30 152:22(float64_t) CompositeExtract 150 0 Store 151 152 153: 139(ptr) AccessChain 27(data) 144 65 34 154:22(float64_t) CompositeExtract 150 1 Store 153 154 155: 6(int) Load 8(invocation) 157: 146(ptr) AccessChain 27(data) 51 65 158: 23(f64vec4) Load 157 159:156(f64vec3) VectorShuffle 158 158 0 1 2 160:156(f64vec3) GroupNonUniformQuadBroadcast 35 159 34 161: 139(ptr) AccessChain 27(data) 155 65 30 162:22(float64_t) CompositeExtract 160 0 Store 161 162 163: 139(ptr) AccessChain 27(data) 155 65 34 164:22(float64_t) CompositeExtract 160 1 Store 163 164 165: 139(ptr) AccessChain 27(data) 155 65 61 166:22(float64_t) CompositeExtract 160 2 Store 165 166 167: 6(int) Load 8(invocation) 168: 146(ptr) AccessChain 27(data) 65 65 169: 23(f64vec4) Load 168 170: 23(f64vec4) GroupNonUniformQuadBroadcast 35 169 34 171: 146(ptr) AccessChain 27(data) 167 65 Store 171 170 172: 6(int) Load 8(invocation) 173: 71(ptr) AccessChain 27(data) 29 39 30 174: 19(int) Load 173 176: 175(bool) SLessThan 174 29 177: 175(bool) GroupNonUniformQuadBroadcast 35 176 34 178: 19(int) Select 177 39 29 179: 71(ptr) AccessChain 27(data) 172 39 30 Store 179 178 180: 6(int) Load 8(invocation) 181: 78(ptr) AccessChain 27(data) 39 39 182: 20(ivec4) Load 181 183: 77(ivec2) VectorShuffle 182 182 0 1 186: 185(bvec2) SLessThan 183 184 187: 185(bvec2) GroupNonUniformQuadBroadcast 35 186 34 189: 77(ivec2) Select 187 188 184 190: 71(ptr) AccessChain 27(data) 180 39 30 191: 19(int) CompositeExtract 189 0 Store 190 191 192: 71(ptr) AccessChain 27(data) 180 39 34 193: 19(int) CompositeExtract 189 1 Store 192 193 194: 6(int) Load 8(invocation) 195: 78(ptr) AccessChain 27(data) 39 39 196: 20(ivec4) Load 195 197: 88(ivec3) VectorShuffle 196 196 0 1 2 200: 199(bvec3) SLessThan 197 198 201: 199(bvec3) GroupNonUniformQuadBroadcast 35 200 34 203: 88(ivec3) Select 201 202 198 204: 71(ptr) AccessChain 27(data) 194 39 30 205: 19(int) CompositeExtract 203 0 Store 204 205 206: 71(ptr) AccessChain 27(data) 194 39 34 207: 19(int) CompositeExtract 203 1 Store 206 207 208: 71(ptr) AccessChain 27(data) 194 39 61 209: 19(int) CompositeExtract 203 2 Store 208 209 210: 6(int) Load 8(invocation) 211: 78(ptr) AccessChain 27(data) 39 39 212: 20(ivec4) Load 211 215: 214(bvec4) SLessThan 212 213 216: 214(bvec4) GroupNonUniformQuadBroadcast 35 215 34 218: 20(ivec4) Select 216 217 213 219: 78(ptr) AccessChain 27(data) 210 39 Store 219 218 220: 6(int) Load 8(invocation) 221: 31(ptr) AccessChain 27(data) 29 29 30 222: 17(float) Load 221 223: 17(float) GroupNonUniformQuadSwap 35 222 30 224: 31(ptr) AccessChain 27(data) 220 29 30 Store 224 223 225: 6(int) Load 8(invocation) 226: 41(ptr) AccessChain 27(data) 39 29 227: 18(fvec4) Load 226 228: 40(fvec2) VectorShuffle 227 227 0 1 229: 40(fvec2) GroupNonUniformQuadSwap 35 228 30 230: 31(ptr) AccessChain 27(data) 225 29 30 231: 17(float) CompositeExtract 229 0 Store 230 231 232: 31(ptr) AccessChain 27(data) 225 29 34 233: 17(float) CompositeExtract 229 1 Store 232 233 234: 6(int) Load 8(invocation) 235: 41(ptr) AccessChain 27(data) 51 29 236: 18(fvec4) Load 235 237: 52(fvec3) VectorShuffle 236 236 0 1 2 238: 52(fvec3) GroupNonUniformQuadSwap 35 237 30 239: 31(ptr) AccessChain 27(data) 234 29 30 240: 17(float) CompositeExtract 238 0 Store 239 240 241: 31(ptr) AccessChain 27(data) 234 29 34 242: 17(float) CompositeExtract 238 1 Store 241 242 243: 31(ptr) AccessChain 27(data) 234 29 61 244: 17(float) CompositeExtract 238 2 Store 243 244 245: 6(int) Load 8(invocation) 246: 41(ptr) AccessChain 27(data) 65 29 247: 18(fvec4) Load 246 248: 18(fvec4) GroupNonUniformQuadSwap 35 247 30 249: 41(ptr) AccessChain 27(data) 245 29 Store 249 248 250: 6(int) Load 8(invocation) 251: 71(ptr) AccessChain 27(data) 29 39 30 252: 19(int) Load 251 253: 19(int) GroupNonUniformQuadSwap 35 252 30 254: 71(ptr) AccessChain 27(data) 250 39 30 Store 254 253 255: 6(int) Load 8(invocation) 256: 78(ptr) AccessChain 27(data) 39 39 257: 20(ivec4) Load 256 258: 77(ivec2) VectorShuffle 257 257 0 1 259: 77(ivec2) GroupNonUniformQuadSwap 35 258 30 260: 71(ptr) AccessChain 27(data) 255 39 30 261: 19(int) CompositeExtract 259 0 Store 260 261 262: 71(ptr) AccessChain 27(data) 255 39 34 263: 19(int) CompositeExtract 259 1 Store 262 263 264: 6(int) Load 8(invocation) 265: 78(ptr) AccessChain 27(data) 51 39 266: 20(ivec4) Load 265 267: 88(ivec3) VectorShuffle 266 266 0 1 2 268: 88(ivec3) GroupNonUniformQuadSwap 35 267 30 269: 71(ptr) AccessChain 27(data) 264 39 30 270: 19(int) CompositeExtract 268 0 Store 269 270 271: 71(ptr) AccessChain 27(data) 264 39 34 272: 19(int) CompositeExtract 268 1 Store 271 272 273: 71(ptr) AccessChain 27(data) 264 39 61 274: 19(int) CompositeExtract 268 2 Store 273 274 275: 6(int) Load 8(invocation) 276: 78(ptr) AccessChain 27(data) 65 39 277: 20(ivec4) Load 276 278: 20(ivec4) GroupNonUniformQuadSwap 35 277 30 279: 78(ptr) AccessChain 27(data) 275 39 Store 279 278 280: 6(int) Load 8(invocation) 281: 105(ptr) AccessChain 27(data) 29 51 30 282: 6(int) Load 281 283: 6(int) GroupNonUniformQuadSwap 35 282 30 284: 105(ptr) AccessChain 27(data) 280 51 30 Store 284 283 285: 6(int) Load 8(invocation) 286: 112(ptr) AccessChain 27(data) 39 51 287: 21(ivec4) Load 286 288: 111(ivec2) VectorShuffle 287 287 0 1 289: 111(ivec2) GroupNonUniformQuadSwap 35 288 30 290: 105(ptr) AccessChain 27(data) 285 51 30 291: 6(int) CompositeExtract 289 0 Store 290 291 292: 105(ptr) AccessChain 27(data) 285 51 34 293: 6(int) CompositeExtract 289 1 Store 292 293 294: 6(int) Load 8(invocation) 295: 112(ptr) AccessChain 27(data) 51 51 296: 21(ivec4) Load 295 297: 122(ivec3) VectorShuffle 296 296 0 1 2 298: 122(ivec3) GroupNonUniformQuadSwap 35 297 30 299: 105(ptr) AccessChain 27(data) 294 51 30 300: 6(int) CompositeExtract 298 0 Store 299 300 301: 105(ptr) AccessChain 27(data) 294 51 34 302: 6(int) CompositeExtract 298 1 Store 301 302 303: 105(ptr) AccessChain 27(data) 294 51 61 304: 6(int) CompositeExtract 298 2 Store 303 304 305: 6(int) Load 8(invocation) 306: 112(ptr) AccessChain 27(data) 65 51 307: 21(ivec4) Load 306 308: 21(ivec4) GroupNonUniformQuadSwap 35 307 30 309: 112(ptr) AccessChain 27(data) 305 51 Store 309 308 310: 6(int) Load 8(invocation) 311: 139(ptr) AccessChain 27(data) 29 65 30 312:22(float64_t) Load 311 313:22(float64_t) GroupNonUniformQuadSwap 35 312 30 314: 139(ptr) AccessChain 27(data) 310 65 30 Store 314 313 315: 6(int) Load 8(invocation) 316: 146(ptr) AccessChain 27(data) 39 65 317: 23(f64vec4) Load 316 318:145(f64vec2) VectorShuffle 317 317 0 1 319:145(f64vec2) GroupNonUniformQuadSwap 35 318 30 320: 139(ptr) AccessChain 27(data) 315 65 30 321:22(float64_t) CompositeExtract 319 0 Store 320 321 322: 139(ptr) AccessChain 27(data) 315 65 34 323:22(float64_t) CompositeExtract 319 1 Store 322 323 324: 6(int) Load 8(invocation) 325: 146(ptr) AccessChain 27(data) 51 65 326: 23(f64vec4) Load 325 327:156(f64vec3) VectorShuffle 326 326 0 1 2 328:156(f64vec3) GroupNonUniformQuadSwap 35 327 30 329: 139(ptr) AccessChain 27(data) 324 65 30 330:22(float64_t) CompositeExtract 328 0 Store 329 330 331: 139(ptr) AccessChain 27(data) 324 65 34 332:22(float64_t) CompositeExtract 328 1 Store 331 332 333: 139(ptr) AccessChain 27(data) 324 65 61 334:22(float64_t) CompositeExtract 328 2 Store 333 334 335: 6(int) Load 8(invocation) 336: 146(ptr) AccessChain 27(data) 65 65 337: 23(f64vec4) Load 336 338: 23(f64vec4) GroupNonUniformQuadSwap 35 337 30 339: 146(ptr) AccessChain 27(data) 335 65 Store 339 338 340: 6(int) Load 8(invocation) 341: 71(ptr) AccessChain 27(data) 29 39 30 342: 19(int) Load 341 343: 175(bool) SLessThan 342 29 344: 175(bool) GroupNonUniformQuadSwap 35 343 30 345: 19(int) Select 344 39 29 346: 71(ptr) AccessChain 27(data) 340 39 30 Store 346 345 347: 6(int) Load 8(invocation) 348: 78(ptr) AccessChain 27(data) 39 39 349: 20(ivec4) Load 348 350: 77(ivec2) VectorShuffle 349 349 0 1 351: 185(bvec2) SLessThan 350 184 352: 185(bvec2) GroupNonUniformQuadSwap 35 351 30 353: 77(ivec2) Select 352 188 184 354: 71(ptr) AccessChain 27(data) 347 39 30 355: 19(int) CompositeExtract 353 0 Store 354 355 356: 71(ptr) AccessChain 27(data) 347 39 34 357: 19(int) CompositeExtract 353 1 Store 356 357 358: 6(int) Load 8(invocation) 359: 78(ptr) AccessChain 27(data) 39 39 360: 20(ivec4) Load 359 361: 88(ivec3) VectorShuffle 360 360 0 1 2 362: 199(bvec3) SLessThan 361 198 363: 199(bvec3) GroupNonUniformQuadSwap 35 362 30 364: 88(ivec3) Select 363 202 198 365: 71(ptr) AccessChain 27(data) 358 39 30 366: 19(int) CompositeExtract 364 0 Store 365 366 367: 71(ptr) AccessChain 27(data) 358 39 34 368: 19(int) CompositeExtract 364 1 Store 367 368 369: 71(ptr) AccessChain 27(data) 358 39 61 370: 19(int) CompositeExtract 364 2 Store 369 370 371: 6(int) Load 8(invocation) 372: 78(ptr) AccessChain 27(data) 39 39 373: 20(ivec4) Load 372 374: 214(bvec4) SLessThan 373 213 375: 214(bvec4) GroupNonUniformQuadSwap 35 374 30 376: 20(ivec4) Select 375 217 213 377: 78(ptr) AccessChain 27(data) 371 39 Store 377 376 378: 6(int) Load 8(invocation) 379: 31(ptr) AccessChain 27(data) 29 29 30 380: 17(float) Load 379 381: 17(float) GroupNonUniformQuadSwap 35 380 34 382: 31(ptr) AccessChain 27(data) 378 29 30 Store 382 381 383: 6(int) Load 8(invocation) 384: 41(ptr) AccessChain 27(data) 39 29 385: 18(fvec4) Load 384 386: 40(fvec2) VectorShuffle 385 385 0 1 387: 40(fvec2) GroupNonUniformQuadSwap 35 386 34 388: 31(ptr) AccessChain 27(data) 383 29 30 389: 17(float) CompositeExtract 387 0 Store 388 389 390: 31(ptr) AccessChain 27(data) 383 29 34 391: 17(float) CompositeExtract 387 1 Store 390 391 392: 6(int) Load 8(invocation) 393: 41(ptr) AccessChain 27(data) 51 29 394: 18(fvec4) Load 393 395: 52(fvec3) VectorShuffle 394 394 0 1 2 396: 52(fvec3) GroupNonUniformQuadSwap 35 395 34 397: 31(ptr) AccessChain 27(data) 392 29 30 398: 17(float) CompositeExtract 396 0 Store 397 398 399: 31(ptr) AccessChain 27(data) 392 29 34 400: 17(float) CompositeExtract 396 1 Store 399 400 401: 31(ptr) AccessChain 27(data) 392 29 61 402: 17(float) CompositeExtract 396 2 Store 401 402 403: 6(int) Load 8(invocation) 404: 41(ptr) AccessChain 27(data) 65 29 405: 18(fvec4) Load 404 406: 18(fvec4) GroupNonUniformQuadSwap 35 405 34 407: 41(ptr) AccessChain 27(data) 403 29 Store 407 406 408: 6(int) Load 8(invocation) 409: 71(ptr) AccessChain 27(data) 29 39 30 410: 19(int) Load 409 411: 19(int) GroupNonUniformQuadSwap 35 410 34 412: 71(ptr) AccessChain 27(data) 408 39 30 Store 412 411 413: 6(int) Load 8(invocation) 414: 78(ptr) AccessChain 27(data) 39 39 415: 20(ivec4) Load 414 416: 77(ivec2) VectorShuffle 415 415 0 1 417: 77(ivec2) GroupNonUniformQuadSwap 35 416 34 418: 71(ptr) AccessChain 27(data) 413 39 30 419: 19(int) CompositeExtract 417 0 Store 418 419 420: 71(ptr) AccessChain 27(data) 413 39 34 421: 19(int) CompositeExtract 417 1 Store 420 421 422: 6(int) Load 8(invocation) 423: 78(ptr) AccessChain 27(data) 51 39 424: 20(ivec4) Load 423 425: 88(ivec3) VectorShuffle 424 424 0 1 2 426: 88(ivec3) GroupNonUniformQuadSwap 35 425 34 427: 71(ptr) AccessChain 27(data) 422 39 30 428: 19(int) CompositeExtract 426 0 Store 427 428 429: 71(ptr) AccessChain 27(data) 422 39 34 430: 19(int) CompositeExtract 426 1 Store 429 430 431: 71(ptr) AccessChain 27(data) 422 39 61 432: 19(int) CompositeExtract 426 2 Store 431 432 433: 6(int) Load 8(invocation) 434: 78(ptr) AccessChain 27(data) 65 39 435: 20(ivec4) Load 434 436: 20(ivec4) GroupNonUniformQuadSwap 35 435 34 437: 78(ptr) AccessChain 27(data) 433 39 Store 437 436 438: 6(int) Load 8(invocation) 439: 105(ptr) AccessChain 27(data) 29 51 30 440: 6(int) Load 439 441: 6(int) GroupNonUniformQuadSwap 35 440 34 442: 105(ptr) AccessChain 27(data) 438 51 30 Store 442 441 443: 6(int) Load 8(invocation) 444: 112(ptr) AccessChain 27(data) 39 51 445: 21(ivec4) Load 444 446: 111(ivec2) VectorShuffle 445 445 0 1 447: 111(ivec2) GroupNonUniformQuadSwap 35 446 34 448: 105(ptr) AccessChain 27(data) 443 51 30 449: 6(int) CompositeExtract 447 0 Store 448 449 450: 105(ptr) AccessChain 27(data) 443 51 34 451: 6(int) CompositeExtract 447 1 Store 450 451 452: 6(int) Load 8(invocation) 453: 112(ptr) AccessChain 27(data) 51 51 454: 21(ivec4) Load 453 455: 122(ivec3) VectorShuffle 454 454 0 1 2 456: 122(ivec3) GroupNonUniformQuadSwap 35 455 34 457: 105(ptr) AccessChain 27(data) 452 51 30 458: 6(int) CompositeExtract 456 0 Store 457 458 459: 105(ptr) AccessChain 27(data) 452 51 34 460: 6(int) CompositeExtract 456 1 Store 459 460 461: 105(ptr) AccessChain 27(data) 452 51 61 462: 6(int) CompositeExtract 456 2 Store 461 462 463: 6(int) Load 8(invocation) 464: 112(ptr) AccessChain 27(data) 65 51 465: 21(ivec4) Load 464 466: 21(ivec4) GroupNonUniformQuadSwap 35 465 34 467: 112(ptr) AccessChain 27(data) 463 51 Store 467 466 468: 6(int) Load 8(invocation) 469: 139(ptr) AccessChain 27(data) 29 65 30 470:22(float64_t) Load 469 471:22(float64_t) GroupNonUniformQuadSwap 35 470 34 472: 139(ptr) AccessChain 27(data) 468 65 30 Store 472 471 473: 6(int) Load 8(invocation) 474: 146(ptr) AccessChain 27(data) 39 65 475: 23(f64vec4) Load 474 476:145(f64vec2) VectorShuffle 475 475 0 1 477:145(f64vec2) GroupNonUniformQuadSwap 35 476 34 478: 139(ptr) AccessChain 27(data) 473 65 30 479:22(float64_t) CompositeExtract 477 0 Store 478 479 480: 139(ptr) AccessChain 27(data) 473 65 34 481:22(float64_t) CompositeExtract 477 1 Store 480 481 482: 6(int) Load 8(invocation) 483: 146(ptr) AccessChain 27(data) 51 65 484: 23(f64vec4) Load 483 485:156(f64vec3) VectorShuffle 484 484 0 1 2 486:156(f64vec3) GroupNonUniformQuadSwap 35 485 34 487: 139(ptr) AccessChain 27(data) 482 65 30 488:22(float64_t) CompositeExtract 486 0 Store 487 488 489: 139(ptr) AccessChain 27(data) 482 65 34 490:22(float64_t) CompositeExtract 486 1 Store 489 490 491: 139(ptr) AccessChain 27(data) 482 65 61 492:22(float64_t) CompositeExtract 486 2 Store 491 492 493: 6(int) Load 8(invocation) 494: 146(ptr) AccessChain 27(data) 65 65 495: 23(f64vec4) Load 494 496: 23(f64vec4) GroupNonUniformQuadSwap 35 495 34 497: 146(ptr) AccessChain 27(data) 493 65 Store 497 496 498: 6(int) Load 8(invocation) 499: 71(ptr) AccessChain 27(data) 29 39 30 500: 19(int) Load 499 501: 175(bool) SLessThan 500 29 502: 175(bool) GroupNonUniformQuadSwap 35 501 34 503: 19(int) Select 502 39 29 504: 71(ptr) AccessChain 27(data) 498 39 30 Store 504 503 505: 6(int) Load 8(invocation) 506: 78(ptr) AccessChain 27(data) 39 39 507: 20(ivec4) Load 506 508: 77(ivec2) VectorShuffle 507 507 0 1 509: 185(bvec2) SLessThan 508 184 510: 185(bvec2) GroupNonUniformQuadSwap 35 509 34 511: 77(ivec2) Select 510 188 184 512: 71(ptr) AccessChain 27(data) 505 39 30 513: 19(int) CompositeExtract 511 0 Store 512 513 514: 71(ptr) AccessChain 27(data) 505 39 34 515: 19(int) CompositeExtract 511 1 Store 514 515 516: 6(int) Load 8(invocation) 517: 78(ptr) AccessChain 27(data) 39 39 518: 20(ivec4) Load 517 519: 88(ivec3) VectorShuffle 518 518 0 1 2 520: 199(bvec3) SLessThan 519 198 521: 199(bvec3) GroupNonUniformQuadSwap 35 520 34 522: 88(ivec3) Select 521 202 198 523: 71(ptr) AccessChain 27(data) 516 39 30 524: 19(int) CompositeExtract 522 0 Store 523 524 525: 71(ptr) AccessChain 27(data) 516 39 34 526: 19(int) CompositeExtract 522 1 Store 525 526 527: 71(ptr) AccessChain 27(data) 516 39 61 528: 19(int) CompositeExtract 522 2 Store 527 528 529: 6(int) Load 8(invocation) 530: 78(ptr) AccessChain 27(data) 39 39 531: 20(ivec4) Load 530 532: 214(bvec4) SLessThan 531 213 533: 214(bvec4) GroupNonUniformQuadSwap 35 532 34 534: 20(ivec4) Select 533 217 213 535: 78(ptr) AccessChain 27(data) 529 39 Store 535 534 536: 6(int) Load 8(invocation) 537: 31(ptr) AccessChain 27(data) 29 29 30 538: 17(float) Load 537 539: 17(float) GroupNonUniformQuadSwap 35 538 61 540: 31(ptr) AccessChain 27(data) 536 29 30 Store 540 539 541: 6(int) Load 8(invocation) 542: 41(ptr) AccessChain 27(data) 39 29 543: 18(fvec4) Load 542 544: 40(fvec2) VectorShuffle 543 543 0 1 545: 40(fvec2) GroupNonUniformQuadSwap 35 544 61 546: 31(ptr) AccessChain 27(data) 541 29 30 547: 17(float) CompositeExtract 545 0 Store 546 547 548: 31(ptr) AccessChain 27(data) 541 29 34 549: 17(float) CompositeExtract 545 1 Store 548 549 550: 6(int) Load 8(invocation) 551: 41(ptr) AccessChain 27(data) 51 29 552: 18(fvec4) Load 551 553: 52(fvec3) VectorShuffle 552 552 0 1 2 554: 52(fvec3) GroupNonUniformQuadSwap 35 553 61 555: 31(ptr) AccessChain 27(data) 550 29 30 556: 17(float) CompositeExtract 554 0 Store 555 556 557: 31(ptr) AccessChain 27(data) 550 29 34 558: 17(float) CompositeExtract 554 1 Store 557 558 559: 31(ptr) AccessChain 27(data) 550 29 61 560: 17(float) CompositeExtract 554 2 Store 559 560 561: 6(int) Load 8(invocation) 562: 41(ptr) AccessChain 27(data) 65 29 563: 18(fvec4) Load 562 564: 18(fvec4) GroupNonUniformQuadSwap 35 563 61 565: 41(ptr) AccessChain 27(data) 561 29 Store 565 564 566: 6(int) Load 8(invocation) 567: 71(ptr) AccessChain 27(data) 29 39 30 568: 19(int) Load 567 569: 19(int) GroupNonUniformQuadSwap 35 568 61 570: 71(ptr) AccessChain 27(data) 566 39 30 Store 570 569 571: 6(int) Load 8(invocation) 572: 78(ptr) AccessChain 27(data) 39 39 573: 20(ivec4) Load 572 574: 77(ivec2) VectorShuffle 573 573 0 1 575: 77(ivec2) GroupNonUniformQuadSwap 35 574 61 576: 71(ptr) AccessChain 27(data) 571 39 30 577: 19(int) CompositeExtract 575 0 Store 576 577 578: 71(ptr) AccessChain 27(data) 571 39 34 579: 19(int) CompositeExtract 575 1 Store 578 579 580: 6(int) Load 8(invocation) 581: 78(ptr) AccessChain 27(data) 51 39 582: 20(ivec4) Load 581 583: 88(ivec3) VectorShuffle 582 582 0 1 2 584: 88(ivec3) GroupNonUniformQuadSwap 35 583 61 585: 71(ptr) AccessChain 27(data) 580 39 30 586: 19(int) CompositeExtract 584 0 Store 585 586 587: 71(ptr) AccessChain 27(data) 580 39 34 588: 19(int) CompositeExtract 584 1 Store 587 588 589: 71(ptr) AccessChain 27(data) 580 39 61 590: 19(int) CompositeExtract 584 2 Store 589 590 591: 6(int) Load 8(invocation) 592: 78(ptr) AccessChain 27(data) 65 39 593: 20(ivec4) Load 592 594: 20(ivec4) GroupNonUniformQuadSwap 35 593 61 595: 78(ptr) AccessChain 27(data) 591 39 Store 595 594 596: 6(int) Load 8(invocation) 597: 105(ptr) AccessChain 27(data) 29 51 30 598: 6(int) Load 597 599: 6(int) GroupNonUniformQuadSwap 35 598 61 600: 105(ptr) AccessChain 27(data) 596 51 30 Store 600 599 601: 6(int) Load 8(invocation) 602: 112(ptr) AccessChain 27(data) 39 51 603: 21(ivec4) Load 602 604: 111(ivec2) VectorShuffle 603 603 0 1 605: 111(ivec2) GroupNonUniformQuadSwap 35 604 61 606: 105(ptr) AccessChain 27(data) 601 51 30 607: 6(int) CompositeExtract 605 0 Store 606 607 608: 105(ptr) AccessChain 27(data) 601 51 34 609: 6(int) CompositeExtract 605 1 Store 608 609 610: 6(int) Load 8(invocation) 611: 112(ptr) AccessChain 27(data) 51 51 612: 21(ivec4) Load 611 613: 122(ivec3) VectorShuffle 612 612 0 1 2 614: 122(ivec3) GroupNonUniformQuadSwap 35 613 61 615: 105(ptr) AccessChain 27(data) 610 51 30 616: 6(int) CompositeExtract 614 0 Store 615 616 617: 105(ptr) AccessChain 27(data) 610 51 34 618: 6(int) CompositeExtract 614 1 Store 617 618 619: 105(ptr) AccessChain 27(data) 610 51 61 620: 6(int) CompositeExtract 614 2 Store 619 620 621: 6(int) Load 8(invocation) 622: 112(ptr) AccessChain 27(data) 65 51 623: 21(ivec4) Load 622 624: 21(ivec4) GroupNonUniformQuadSwap 35 623 61 625: 112(ptr) AccessChain 27(data) 621 51 Store 625 624 626: 6(int) Load 8(invocation) 627: 139(ptr) AccessChain 27(data) 29 65 30 628:22(float64_t) Load 627 629:22(float64_t) GroupNonUniformQuadSwap 35 628 61 630: 139(ptr) AccessChain 27(data) 626 65 30 Store 630 629 631: 6(int) Load 8(invocation) 632: 146(ptr) AccessChain 27(data) 39 65 633: 23(f64vec4) Load 632 634:145(f64vec2) VectorShuffle 633 633 0 1 635:145(f64vec2) GroupNonUniformQuadSwap 35 634 61 636: 139(ptr) AccessChain 27(data) 631 65 30 637:22(float64_t) CompositeExtract 635 0 Store 636 637 638: 139(ptr) AccessChain 27(data) 631 65 34 639:22(float64_t) CompositeExtract 635 1 Store 638 639 640: 6(int) Load 8(invocation) 641: 146(ptr) AccessChain 27(data) 51 65 642: 23(f64vec4) Load 641 643:156(f64vec3) VectorShuffle 642 642 0 1 2 644:156(f64vec3) GroupNonUniformQuadSwap 35 643 61 645: 139(ptr) AccessChain 27(data) 640 65 30 646:22(float64_t) CompositeExtract 644 0 Store 645 646 647: 139(ptr) AccessChain 27(data) 640 65 34 648:22(float64_t) CompositeExtract 644 1 Store 647 648 649: 139(ptr) AccessChain 27(data) 640 65 61 650:22(float64_t) CompositeExtract 644 2 Store 649 650 651: 6(int) Load 8(invocation) 652: 146(ptr) AccessChain 27(data) 65 65 653: 23(f64vec4) Load 652 654: 23(f64vec4) GroupNonUniformQuadSwap 35 653 61 655: 146(ptr) AccessChain 27(data) 651 65 Store 655 654 656: 6(int) Load 8(invocation) 657: 71(ptr) AccessChain 27(data) 29 39 30 658: 19(int) Load 657 659: 175(bool) SLessThan 658 29 660: 175(bool) GroupNonUniformQuadSwap 35 659 61 661: 19(int) Select 660 39 29 662: 71(ptr) AccessChain 27(data) 656 39 30 Store 662 661 663: 6(int) Load 8(invocation) 664: 78(ptr) AccessChain 27(data) 39 39 665: 20(ivec4) Load 664 666: 77(ivec2) VectorShuffle 665 665 0 1 667: 185(bvec2) SLessThan 666 184 668: 185(bvec2) GroupNonUniformQuadSwap 35 667 61 669: 77(ivec2) Select 668 188 184 670: 71(ptr) AccessChain 27(data) 663 39 30 671: 19(int) CompositeExtract 669 0 Store 670 671 672: 71(ptr) AccessChain 27(data) 663 39 34 673: 19(int) CompositeExtract 669 1 Store 672 673 674: 6(int) Load 8(invocation) 675: 78(ptr) AccessChain 27(data) 39 39 676: 20(ivec4) Load 675 677: 88(ivec3) VectorShuffle 676 676 0 1 2 678: 199(bvec3) SLessThan 677 198 679: 199(bvec3) GroupNonUniformQuadSwap 35 678 61 680: 88(ivec3) Select 679 202 198 681: 71(ptr) AccessChain 27(data) 674 39 30 682: 19(int) CompositeExtract 680 0 Store 681 682 683: 71(ptr) AccessChain 27(data) 674 39 34 684: 19(int) CompositeExtract 680 1 Store 683 684 685: 71(ptr) AccessChain 27(data) 674 39 61 686: 19(int) CompositeExtract 680 2 Store 685 686 687: 6(int) Load 8(invocation) 688: 78(ptr) AccessChain 27(data) 39 39 689: 20(ivec4) Load 688 690: 214(bvec4) SLessThan 689 213 691: 214(bvec4) GroupNonUniformQuadSwap 35 690 61 692: 20(ivec4) Select 691 217 213 693: 78(ptr) AccessChain 27(data) 687 39 Store 693 692 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupRotate.comp.out000066400000000000000000000653161506534232700240040ustar00rootroot00000000000000spv.subgroupRotate.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 418 Capability Shader Capability Float64 Capability GroupNonUniformRotateKHR Extension "SPV_KHR_subgroup_rotate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_rotate" Name 4 "main" Name 8 "delta" Name 9 "roblock" MemberName 9(roblock) 0 "delta" Name 11 "ro" Name 23 "Buffers" MemberName 23(Buffers) 0 "f4" MemberName 23(Buffers) 1 "i4" MemberName 23(Buffers) 2 "u4" MemberName 23(Buffers) 3 "d4" Name 27 "data" Decorate 9(roblock) Block MemberDecorate 9(roblock) 0 NonWritable MemberDecorate 9(roblock) 0 Offset 0 Decorate 11(ro) NonWritable Decorate 11(ro) Binding 1 Decorate 11(ro) DescriptorSet 0 Decorate 23(Buffers) Block MemberDecorate 23(Buffers) 0 Offset 0 MemberDecorate 23(Buffers) 1 Offset 16 MemberDecorate 23(Buffers) 2 Offset 32 MemberDecorate 23(Buffers) 3 Offset 64 Decorate 27(data) Binding 0 Decorate 27(data) DescriptorSet 0 Decorate 417 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9(roblock): TypeStruct 6(int) 10: TypePointer StorageBuffer 9(roblock) 11(ro): 10(ptr) Variable StorageBuffer 12: TypeInt 32 1 13: 12(int) Constant 0 14: TypePointer StorageBuffer 6(int) 17: TypeFloat 32 18: TypeVector 17(float) 4 19: TypeVector 12(int) 4 20: TypeVector 6(int) 4 21: TypeFloat 64 22: TypeVector 21(float64_t) 4 23(Buffers): TypeStruct 18(fvec4) 19(ivec4) 20(ivec4) 22(f64vec4) 24: 6(int) Constant 4 25: TypeArray 23(Buffers) 24 26: TypePointer StorageBuffer 25 27(data): 26(ptr) Variable StorageBuffer 29: 6(int) Constant 0 30: TypePointer StorageBuffer 17(float) 34: 6(int) Constant 3 38: 12(int) Constant 1 39: TypeVector 17(float) 2 40: TypePointer StorageBuffer 18(fvec4) 48: 6(int) Constant 1 52: 12(int) Constant 2 53: TypeVector 17(float) 3 63: 6(int) Constant 2 67: 12(int) Constant 3 74: TypePointer StorageBuffer 12(int) 81: TypeVector 12(int) 2 82: TypePointer StorageBuffer 19(ivec4) 93: TypeVector 12(int) 3 118: TypeVector 6(int) 2 119: TypePointer StorageBuffer 20(ivec4) 130: TypeVector 6(int) 3 149: TypePointer StorageBuffer 21(float64_t) 156: TypeVector 21(float64_t) 2 157: TypePointer StorageBuffer 22(f64vec4) 168: TypeVector 21(float64_t) 3 189: TypeBool 199: 81(ivec2) ConstantComposite 13 13 200: TypeVector 189(bool) 2 204: 81(ivec2) ConstantComposite 38 38 214: 93(ivec3) ConstantComposite 13 13 13 215: TypeVector 189(bool) 3 219: 93(ivec3) ConstantComposite 38 38 38 230: 19(ivec4) ConstantComposite 13 13 13 13 231: TypeVector 189(bool) 4 235: 19(ivec4) ConstantComposite 38 38 38 38 416: 6(int) Constant 8 417: 130(ivec3) ConstantComposite 416 416 48 4(main): 2 Function None 3 5: Label 8(delta): 7(ptr) Variable Function 15: 14(ptr) AccessChain 11(ro) 13 16: 6(int) Load 15 Store 8(delta) 16 28: 6(int) Load 8(delta) 31: 30(ptr) AccessChain 27(data) 13 13 29 32: 17(float) Load 31 33: 6(int) Load 8(delta) 35: 17(float) GroupNonUniformRotateKHR 34 32 33 36: 30(ptr) AccessChain 27(data) 28 13 29 Store 36 35 37: 6(int) Load 8(delta) 41: 40(ptr) AccessChain 27(data) 38 13 42: 18(fvec4) Load 41 43: 39(fvec2) VectorShuffle 42 42 0 1 44: 6(int) Load 8(delta) 45: 39(fvec2) GroupNonUniformRotateKHR 34 43 44 46: 30(ptr) AccessChain 27(data) 37 13 29 47: 17(float) CompositeExtract 45 0 Store 46 47 49: 30(ptr) AccessChain 27(data) 37 13 48 50: 17(float) CompositeExtract 45 1 Store 49 50 51: 6(int) Load 8(delta) 54: 40(ptr) AccessChain 27(data) 52 13 55: 18(fvec4) Load 54 56: 53(fvec3) VectorShuffle 55 55 0 1 2 57: 6(int) Load 8(delta) 58: 53(fvec3) GroupNonUniformRotateKHR 34 56 57 59: 30(ptr) AccessChain 27(data) 51 13 29 60: 17(float) CompositeExtract 58 0 Store 59 60 61: 30(ptr) AccessChain 27(data) 51 13 48 62: 17(float) CompositeExtract 58 1 Store 61 62 64: 30(ptr) AccessChain 27(data) 51 13 63 65: 17(float) CompositeExtract 58 2 Store 64 65 66: 6(int) Load 8(delta) 68: 40(ptr) AccessChain 27(data) 67 13 69: 18(fvec4) Load 68 70: 6(int) Load 8(delta) 71: 18(fvec4) GroupNonUniformRotateKHR 34 69 70 72: 40(ptr) AccessChain 27(data) 66 13 Store 72 71 73: 6(int) Load 8(delta) 75: 74(ptr) AccessChain 27(data) 13 38 29 76: 12(int) Load 75 77: 6(int) Load 8(delta) 78: 12(int) GroupNonUniformRotateKHR 34 76 77 79: 74(ptr) AccessChain 27(data) 73 38 29 Store 79 78 80: 6(int) Load 8(delta) 83: 82(ptr) AccessChain 27(data) 38 38 84: 19(ivec4) Load 83 85: 81(ivec2) VectorShuffle 84 84 0 1 86: 6(int) Load 8(delta) 87: 81(ivec2) GroupNonUniformRotateKHR 34 85 86 88: 74(ptr) AccessChain 27(data) 80 38 29 89: 12(int) CompositeExtract 87 0 Store 88 89 90: 74(ptr) AccessChain 27(data) 80 38 48 91: 12(int) CompositeExtract 87 1 Store 90 91 92: 6(int) Load 8(delta) 94: 82(ptr) AccessChain 27(data) 52 38 95: 19(ivec4) Load 94 96: 93(ivec3) VectorShuffle 95 95 0 1 2 97: 6(int) Load 8(delta) 98: 93(ivec3) GroupNonUniformRotateKHR 34 96 97 99: 74(ptr) AccessChain 27(data) 92 38 29 100: 12(int) CompositeExtract 98 0 Store 99 100 101: 74(ptr) AccessChain 27(data) 92 38 48 102: 12(int) CompositeExtract 98 1 Store 101 102 103: 74(ptr) AccessChain 27(data) 92 38 63 104: 12(int) CompositeExtract 98 2 Store 103 104 105: 6(int) Load 8(delta) 106: 82(ptr) AccessChain 27(data) 67 38 107: 19(ivec4) Load 106 108: 6(int) Load 8(delta) 109: 19(ivec4) GroupNonUniformRotateKHR 34 107 108 110: 82(ptr) AccessChain 27(data) 105 38 Store 110 109 111: 6(int) Load 8(delta) 112: 14(ptr) AccessChain 27(data) 13 52 29 113: 6(int) Load 112 114: 6(int) Load 8(delta) 115: 6(int) GroupNonUniformRotateKHR 34 113 114 116: 14(ptr) AccessChain 27(data) 111 52 29 Store 116 115 117: 6(int) Load 8(delta) 120: 119(ptr) AccessChain 27(data) 38 52 121: 20(ivec4) Load 120 122: 118(ivec2) VectorShuffle 121 121 0 1 123: 6(int) Load 8(delta) 124: 118(ivec2) GroupNonUniformRotateKHR 34 122 123 125: 14(ptr) AccessChain 27(data) 117 52 29 126: 6(int) CompositeExtract 124 0 Store 125 126 127: 14(ptr) AccessChain 27(data) 117 52 48 128: 6(int) CompositeExtract 124 1 Store 127 128 129: 6(int) Load 8(delta) 131: 119(ptr) AccessChain 27(data) 52 52 132: 20(ivec4) Load 131 133: 130(ivec3) VectorShuffle 132 132 0 1 2 134: 6(int) Load 8(delta) 135: 130(ivec3) GroupNonUniformRotateKHR 34 133 134 136: 14(ptr) AccessChain 27(data) 129 52 29 137: 6(int) CompositeExtract 135 0 Store 136 137 138: 14(ptr) AccessChain 27(data) 129 52 48 139: 6(int) CompositeExtract 135 1 Store 138 139 140: 14(ptr) AccessChain 27(data) 129 52 63 141: 6(int) CompositeExtract 135 2 Store 140 141 142: 6(int) Load 8(delta) 143: 119(ptr) AccessChain 27(data) 67 52 144: 20(ivec4) Load 143 145: 6(int) Load 8(delta) 146: 20(ivec4) GroupNonUniformRotateKHR 34 144 145 147: 119(ptr) AccessChain 27(data) 142 52 Store 147 146 148: 6(int) Load 8(delta) 150: 149(ptr) AccessChain 27(data) 13 67 29 151:21(float64_t) Load 150 152: 6(int) Load 8(delta) 153:21(float64_t) GroupNonUniformRotateKHR 34 151 152 154: 149(ptr) AccessChain 27(data) 148 67 29 Store 154 153 155: 6(int) Load 8(delta) 158: 157(ptr) AccessChain 27(data) 38 67 159: 22(f64vec4) Load 158 160:156(f64vec2) VectorShuffle 159 159 0 1 161: 6(int) Load 8(delta) 162:156(f64vec2) GroupNonUniformRotateKHR 34 160 161 163: 149(ptr) AccessChain 27(data) 155 67 29 164:21(float64_t) CompositeExtract 162 0 Store 163 164 165: 149(ptr) AccessChain 27(data) 155 67 48 166:21(float64_t) CompositeExtract 162 1 Store 165 166 167: 6(int) Load 8(delta) 169: 157(ptr) AccessChain 27(data) 52 67 170: 22(f64vec4) Load 169 171:168(f64vec3) VectorShuffle 170 170 0 1 2 172: 6(int) Load 8(delta) 173:168(f64vec3) GroupNonUniformRotateKHR 34 171 172 174: 149(ptr) AccessChain 27(data) 167 67 29 175:21(float64_t) CompositeExtract 173 0 Store 174 175 176: 149(ptr) AccessChain 27(data) 167 67 48 177:21(float64_t) CompositeExtract 173 1 Store 176 177 178: 149(ptr) AccessChain 27(data) 167 67 63 179:21(float64_t) CompositeExtract 173 2 Store 178 179 180: 6(int) Load 8(delta) 181: 157(ptr) AccessChain 27(data) 67 67 182: 22(f64vec4) Load 181 183: 6(int) Load 8(delta) 184: 22(f64vec4) GroupNonUniformRotateKHR 34 182 183 185: 157(ptr) AccessChain 27(data) 180 67 Store 185 184 186: 6(int) Load 8(delta) 187: 74(ptr) AccessChain 27(data) 13 38 29 188: 12(int) Load 187 190: 189(bool) SLessThan 188 13 191: 6(int) Load 8(delta) 192: 189(bool) GroupNonUniformRotateKHR 34 190 191 193: 12(int) Select 192 38 13 194: 74(ptr) AccessChain 27(data) 186 38 29 Store 194 193 195: 6(int) Load 8(delta) 196: 82(ptr) AccessChain 27(data) 38 38 197: 19(ivec4) Load 196 198: 81(ivec2) VectorShuffle 197 197 0 1 201: 200(bvec2) SLessThan 198 199 202: 6(int) Load 8(delta) 203: 200(bvec2) GroupNonUniformRotateKHR 34 201 202 205: 81(ivec2) Select 203 204 199 206: 74(ptr) AccessChain 27(data) 195 38 29 207: 12(int) CompositeExtract 205 0 Store 206 207 208: 74(ptr) AccessChain 27(data) 195 38 48 209: 12(int) CompositeExtract 205 1 Store 208 209 210: 6(int) Load 8(delta) 211: 82(ptr) AccessChain 27(data) 38 38 212: 19(ivec4) Load 211 213: 93(ivec3) VectorShuffle 212 212 0 1 2 216: 215(bvec3) SLessThan 213 214 217: 6(int) Load 8(delta) 218: 215(bvec3) GroupNonUniformRotateKHR 34 216 217 220: 93(ivec3) Select 218 219 214 221: 74(ptr) AccessChain 27(data) 210 38 29 222: 12(int) CompositeExtract 220 0 Store 221 222 223: 74(ptr) AccessChain 27(data) 210 38 48 224: 12(int) CompositeExtract 220 1 Store 223 224 225: 74(ptr) AccessChain 27(data) 210 38 63 226: 12(int) CompositeExtract 220 2 Store 225 226 227: 6(int) Load 8(delta) 228: 82(ptr) AccessChain 27(data) 38 38 229: 19(ivec4) Load 228 232: 231(bvec4) SLessThan 229 230 233: 6(int) Load 8(delta) 234: 231(bvec4) GroupNonUniformRotateKHR 34 232 233 236: 19(ivec4) Select 234 235 230 237: 82(ptr) AccessChain 27(data) 227 38 Store 237 236 238: 6(int) Load 8(delta) 239: 30(ptr) AccessChain 27(data) 13 13 29 240: 17(float) Load 239 241: 6(int) Load 8(delta) 242: 17(float) GroupNonUniformRotateKHR 34 240 241 48 243: 30(ptr) AccessChain 27(data) 238 13 29 Store 243 242 244: 6(int) Load 8(delta) 245: 40(ptr) AccessChain 27(data) 38 13 246: 18(fvec4) Load 245 247: 39(fvec2) VectorShuffle 246 246 0 1 248: 6(int) Load 8(delta) 249: 39(fvec2) GroupNonUniformRotateKHR 34 247 248 48 250: 30(ptr) AccessChain 27(data) 244 13 29 251: 17(float) CompositeExtract 249 0 Store 250 251 252: 30(ptr) AccessChain 27(data) 244 13 48 253: 17(float) CompositeExtract 249 1 Store 252 253 254: 6(int) Load 8(delta) 255: 40(ptr) AccessChain 27(data) 52 13 256: 18(fvec4) Load 255 257: 53(fvec3) VectorShuffle 256 256 0 1 2 258: 6(int) Load 8(delta) 259: 53(fvec3) GroupNonUniformRotateKHR 34 257 258 48 260: 30(ptr) AccessChain 27(data) 254 13 29 261: 17(float) CompositeExtract 259 0 Store 260 261 262: 30(ptr) AccessChain 27(data) 254 13 48 263: 17(float) CompositeExtract 259 1 Store 262 263 264: 30(ptr) AccessChain 27(data) 254 13 63 265: 17(float) CompositeExtract 259 2 Store 264 265 266: 6(int) Load 8(delta) 267: 40(ptr) AccessChain 27(data) 67 13 268: 18(fvec4) Load 267 269: 6(int) Load 8(delta) 270: 18(fvec4) GroupNonUniformRotateKHR 34 268 269 48 271: 40(ptr) AccessChain 27(data) 266 13 Store 271 270 272: 6(int) Load 8(delta) 273: 74(ptr) AccessChain 27(data) 13 38 29 274: 12(int) Load 273 275: 6(int) Load 8(delta) 276: 12(int) GroupNonUniformRotateKHR 34 274 275 48 277: 74(ptr) AccessChain 27(data) 272 38 29 Store 277 276 278: 6(int) Load 8(delta) 279: 82(ptr) AccessChain 27(data) 38 38 280: 19(ivec4) Load 279 281: 81(ivec2) VectorShuffle 280 280 0 1 282: 6(int) Load 8(delta) 283: 81(ivec2) GroupNonUniformRotateKHR 34 281 282 48 284: 74(ptr) AccessChain 27(data) 278 38 29 285: 12(int) CompositeExtract 283 0 Store 284 285 286: 74(ptr) AccessChain 27(data) 278 38 48 287: 12(int) CompositeExtract 283 1 Store 286 287 288: 6(int) Load 8(delta) 289: 82(ptr) AccessChain 27(data) 52 38 290: 19(ivec4) Load 289 291: 93(ivec3) VectorShuffle 290 290 0 1 2 292: 6(int) Load 8(delta) 293: 93(ivec3) GroupNonUniformRotateKHR 34 291 292 48 294: 74(ptr) AccessChain 27(data) 288 38 29 295: 12(int) CompositeExtract 293 0 Store 294 295 296: 74(ptr) AccessChain 27(data) 288 38 48 297: 12(int) CompositeExtract 293 1 Store 296 297 298: 74(ptr) AccessChain 27(data) 288 38 63 299: 12(int) CompositeExtract 293 2 Store 298 299 300: 6(int) Load 8(delta) 301: 82(ptr) AccessChain 27(data) 67 38 302: 19(ivec4) Load 301 303: 6(int) Load 8(delta) 304: 19(ivec4) GroupNonUniformRotateKHR 34 302 303 48 305: 82(ptr) AccessChain 27(data) 300 38 Store 305 304 306: 6(int) Load 8(delta) 307: 14(ptr) AccessChain 27(data) 13 52 29 308: 6(int) Load 307 309: 6(int) Load 8(delta) 310: 6(int) GroupNonUniformRotateKHR 34 308 309 48 311: 14(ptr) AccessChain 27(data) 306 52 29 Store 311 310 312: 6(int) Load 8(delta) 313: 119(ptr) AccessChain 27(data) 38 52 314: 20(ivec4) Load 313 315: 118(ivec2) VectorShuffle 314 314 0 1 316: 6(int) Load 8(delta) 317: 118(ivec2) GroupNonUniformRotateKHR 34 315 316 48 318: 14(ptr) AccessChain 27(data) 312 52 29 319: 6(int) CompositeExtract 317 0 Store 318 319 320: 14(ptr) AccessChain 27(data) 312 52 48 321: 6(int) CompositeExtract 317 1 Store 320 321 322: 6(int) Load 8(delta) 323: 119(ptr) AccessChain 27(data) 52 52 324: 20(ivec4) Load 323 325: 130(ivec3) VectorShuffle 324 324 0 1 2 326: 6(int) Load 8(delta) 327: 130(ivec3) GroupNonUniformRotateKHR 34 325 326 48 328: 14(ptr) AccessChain 27(data) 322 52 29 329: 6(int) CompositeExtract 327 0 Store 328 329 330: 14(ptr) AccessChain 27(data) 322 52 48 331: 6(int) CompositeExtract 327 1 Store 330 331 332: 14(ptr) AccessChain 27(data) 322 52 63 333: 6(int) CompositeExtract 327 2 Store 332 333 334: 6(int) Load 8(delta) 335: 119(ptr) AccessChain 27(data) 67 52 336: 20(ivec4) Load 335 337: 6(int) Load 8(delta) 338: 20(ivec4) GroupNonUniformRotateKHR 34 336 337 48 339: 119(ptr) AccessChain 27(data) 334 52 Store 339 338 340: 6(int) Load 8(delta) 341: 149(ptr) AccessChain 27(data) 13 67 29 342:21(float64_t) Load 341 343: 6(int) Load 8(delta) 344:21(float64_t) GroupNonUniformRotateKHR 34 342 343 48 345: 149(ptr) AccessChain 27(data) 340 67 29 Store 345 344 346: 6(int) Load 8(delta) 347: 157(ptr) AccessChain 27(data) 38 67 348: 22(f64vec4) Load 347 349:156(f64vec2) VectorShuffle 348 348 0 1 350: 6(int) Load 8(delta) 351:156(f64vec2) GroupNonUniformRotateKHR 34 349 350 48 352: 149(ptr) AccessChain 27(data) 346 67 29 353:21(float64_t) CompositeExtract 351 0 Store 352 353 354: 149(ptr) AccessChain 27(data) 346 67 48 355:21(float64_t) CompositeExtract 351 1 Store 354 355 356: 6(int) Load 8(delta) 357: 157(ptr) AccessChain 27(data) 52 67 358: 22(f64vec4) Load 357 359:168(f64vec3) VectorShuffle 358 358 0 1 2 360: 6(int) Load 8(delta) 361:168(f64vec3) GroupNonUniformRotateKHR 34 359 360 48 362: 149(ptr) AccessChain 27(data) 356 67 29 363:21(float64_t) CompositeExtract 361 0 Store 362 363 364: 149(ptr) AccessChain 27(data) 356 67 48 365:21(float64_t) CompositeExtract 361 1 Store 364 365 366: 149(ptr) AccessChain 27(data) 356 67 63 367:21(float64_t) CompositeExtract 361 2 Store 366 367 368: 6(int) Load 8(delta) 369: 157(ptr) AccessChain 27(data) 67 67 370: 22(f64vec4) Load 369 371: 6(int) Load 8(delta) 372: 22(f64vec4) GroupNonUniformRotateKHR 34 370 371 48 373: 157(ptr) AccessChain 27(data) 368 67 Store 373 372 374: 6(int) Load 8(delta) 375: 74(ptr) AccessChain 27(data) 13 38 29 376: 12(int) Load 375 377: 189(bool) SLessThan 376 13 378: 6(int) Load 8(delta) 379: 189(bool) GroupNonUniformRotateKHR 34 377 378 48 380: 12(int) Select 379 38 13 381: 74(ptr) AccessChain 27(data) 374 38 29 Store 381 380 382: 6(int) Load 8(delta) 383: 82(ptr) AccessChain 27(data) 38 38 384: 19(ivec4) Load 383 385: 81(ivec2) VectorShuffle 384 384 0 1 386: 200(bvec2) SLessThan 385 199 387: 6(int) Load 8(delta) 388: 200(bvec2) GroupNonUniformRotateKHR 34 386 387 48 389: 81(ivec2) Select 388 204 199 390: 74(ptr) AccessChain 27(data) 382 38 29 391: 12(int) CompositeExtract 389 0 Store 390 391 392: 74(ptr) AccessChain 27(data) 382 38 48 393: 12(int) CompositeExtract 389 1 Store 392 393 394: 6(int) Load 8(delta) 395: 82(ptr) AccessChain 27(data) 38 38 396: 19(ivec4) Load 395 397: 93(ivec3) VectorShuffle 396 396 0 1 2 398: 215(bvec3) SLessThan 397 214 399: 6(int) Load 8(delta) 400: 215(bvec3) GroupNonUniformRotateKHR 34 398 399 48 401: 93(ivec3) Select 400 219 214 402: 74(ptr) AccessChain 27(data) 394 38 29 403: 12(int) CompositeExtract 401 0 Store 402 403 404: 74(ptr) AccessChain 27(data) 394 38 48 405: 12(int) CompositeExtract 401 1 Store 404 405 406: 74(ptr) AccessChain 27(data) 394 38 63 407: 12(int) CompositeExtract 401 2 Store 406 407 408: 6(int) Load 8(delta) 409: 82(ptr) AccessChain 27(data) 38 38 410: 19(ivec4) Load 409 411: 231(bvec4) SLessThan 410 230 412: 6(int) Load 8(delta) 413: 231(bvec4) GroupNonUniformRotateKHR 34 411 412 48 414: 19(ivec4) Select 413 235 230 415: 82(ptr) AccessChain 27(data) 408 38 Store 415 414 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupShuffle.comp.out000066400000000000000000000665671506534232700241530ustar00rootroot00000000000000spv.subgroupShuffle.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 420 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformShuffle 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_shuffle" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 24 "Buffers" MemberName 24(Buffers) 0 "f4" MemberName 24(Buffers) 1 "i4" MemberName 24(Buffers) 2 "u4" MemberName 24(Buffers) 3 "d4" Name 27 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 Decorate 27(data) Binding 0 Decorate 27(data) DescriptorSet 0 Decorate 419 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeFloat 32 18: TypeVector 17(float) 4 19: TypeInt 32 1 20: TypeVector 19(int) 4 21: TypeVector 6(int) 4 22: TypeFloat 64 23: TypeVector 22(float64_t) 4 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 25: TypeArray 24(Buffers) 15 26: TypePointer StorageBuffer 25 27(data): 26(ptr) Variable StorageBuffer 29: 19(int) Constant 0 30: 6(int) Constant 0 31: TypePointer StorageBuffer 17(float) 35: 6(int) Constant 3 39: 19(int) Constant 1 40: TypeVector 17(float) 2 41: TypePointer StorageBuffer 18(fvec4) 49: 6(int) Constant 1 53: 19(int) Constant 2 54: TypeVector 17(float) 3 64: 6(int) Constant 2 68: 19(int) Constant 3 75: TypePointer StorageBuffer 19(int) 82: TypeVector 19(int) 2 83: TypePointer StorageBuffer 20(ivec4) 94: TypeVector 19(int) 3 113: TypePointer StorageBuffer 6(int) 120: TypeVector 6(int) 2 121: TypePointer StorageBuffer 21(ivec4) 132: TypeVector 6(int) 3 151: TypePointer StorageBuffer 22(float64_t) 158: TypeVector 22(float64_t) 2 159: TypePointer StorageBuffer 23(f64vec4) 170: TypeVector 22(float64_t) 3 191: TypeBool 201: 82(ivec2) ConstantComposite 29 29 202: TypeVector 191(bool) 2 206: 82(ivec2) ConstantComposite 39 39 216: 94(ivec3) ConstantComposite 29 29 29 217: TypeVector 191(bool) 3 221: 94(ivec3) ConstantComposite 39 39 39 232: 20(ivec4) ConstantComposite 29 29 29 29 233: TypeVector 191(bool) 4 237: 20(ivec4) ConstantComposite 39 39 39 39 418: 6(int) Constant 8 419: 132(ivec3) ConstantComposite 418 418 49 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 28: 6(int) Load 8(invocation) 32: 31(ptr) AccessChain 27(data) 29 29 30 33: 17(float) Load 32 34: 6(int) Load 8(invocation) 36: 17(float) GroupNonUniformShuffle 35 33 34 37: 31(ptr) AccessChain 27(data) 28 29 30 Store 37 36 38: 6(int) Load 8(invocation) 42: 41(ptr) AccessChain 27(data) 39 29 43: 18(fvec4) Load 42 44: 40(fvec2) VectorShuffle 43 43 0 1 45: 6(int) Load 8(invocation) 46: 40(fvec2) GroupNonUniformShuffle 35 44 45 47: 31(ptr) AccessChain 27(data) 38 29 30 48: 17(float) CompositeExtract 46 0 Store 47 48 50: 31(ptr) AccessChain 27(data) 38 29 49 51: 17(float) CompositeExtract 46 1 Store 50 51 52: 6(int) Load 8(invocation) 55: 41(ptr) AccessChain 27(data) 53 29 56: 18(fvec4) Load 55 57: 54(fvec3) VectorShuffle 56 56 0 1 2 58: 6(int) Load 8(invocation) 59: 54(fvec3) GroupNonUniformShuffle 35 57 58 60: 31(ptr) AccessChain 27(data) 52 29 30 61: 17(float) CompositeExtract 59 0 Store 60 61 62: 31(ptr) AccessChain 27(data) 52 29 49 63: 17(float) CompositeExtract 59 1 Store 62 63 65: 31(ptr) AccessChain 27(data) 52 29 64 66: 17(float) CompositeExtract 59 2 Store 65 66 67: 6(int) Load 8(invocation) 69: 41(ptr) AccessChain 27(data) 68 29 70: 18(fvec4) Load 69 71: 6(int) Load 8(invocation) 72: 18(fvec4) GroupNonUniformShuffle 35 70 71 73: 41(ptr) AccessChain 27(data) 67 29 Store 73 72 74: 6(int) Load 8(invocation) 76: 75(ptr) AccessChain 27(data) 29 39 30 77: 19(int) Load 76 78: 6(int) Load 8(invocation) 79: 19(int) GroupNonUniformShuffle 35 77 78 80: 75(ptr) AccessChain 27(data) 74 39 30 Store 80 79 81: 6(int) Load 8(invocation) 84: 83(ptr) AccessChain 27(data) 39 39 85: 20(ivec4) Load 84 86: 82(ivec2) VectorShuffle 85 85 0 1 87: 6(int) Load 8(invocation) 88: 82(ivec2) GroupNonUniformShuffle 35 86 87 89: 75(ptr) AccessChain 27(data) 81 39 30 90: 19(int) CompositeExtract 88 0 Store 89 90 91: 75(ptr) AccessChain 27(data) 81 39 49 92: 19(int) CompositeExtract 88 1 Store 91 92 93: 6(int) Load 8(invocation) 95: 83(ptr) AccessChain 27(data) 53 39 96: 20(ivec4) Load 95 97: 94(ivec3) VectorShuffle 96 96 0 1 2 98: 6(int) Load 8(invocation) 99: 94(ivec3) GroupNonUniformShuffle 35 97 98 100: 75(ptr) AccessChain 27(data) 93 39 30 101: 19(int) CompositeExtract 99 0 Store 100 101 102: 75(ptr) AccessChain 27(data) 93 39 49 103: 19(int) CompositeExtract 99 1 Store 102 103 104: 75(ptr) AccessChain 27(data) 93 39 64 105: 19(int) CompositeExtract 99 2 Store 104 105 106: 6(int) Load 8(invocation) 107: 83(ptr) AccessChain 27(data) 68 39 108: 20(ivec4) Load 107 109: 6(int) Load 8(invocation) 110: 20(ivec4) GroupNonUniformShuffle 35 108 109 111: 83(ptr) AccessChain 27(data) 106 39 Store 111 110 112: 6(int) Load 8(invocation) 114: 113(ptr) AccessChain 27(data) 29 53 30 115: 6(int) Load 114 116: 6(int) Load 8(invocation) 117: 6(int) GroupNonUniformShuffle 35 115 116 118: 113(ptr) AccessChain 27(data) 112 53 30 Store 118 117 119: 6(int) Load 8(invocation) 122: 121(ptr) AccessChain 27(data) 39 53 123: 21(ivec4) Load 122 124: 120(ivec2) VectorShuffle 123 123 0 1 125: 6(int) Load 8(invocation) 126: 120(ivec2) GroupNonUniformShuffle 35 124 125 127: 113(ptr) AccessChain 27(data) 119 53 30 128: 6(int) CompositeExtract 126 0 Store 127 128 129: 113(ptr) AccessChain 27(data) 119 53 49 130: 6(int) CompositeExtract 126 1 Store 129 130 131: 6(int) Load 8(invocation) 133: 121(ptr) AccessChain 27(data) 53 53 134: 21(ivec4) Load 133 135: 132(ivec3) VectorShuffle 134 134 0 1 2 136: 6(int) Load 8(invocation) 137: 132(ivec3) GroupNonUniformShuffle 35 135 136 138: 113(ptr) AccessChain 27(data) 131 53 30 139: 6(int) CompositeExtract 137 0 Store 138 139 140: 113(ptr) AccessChain 27(data) 131 53 49 141: 6(int) CompositeExtract 137 1 Store 140 141 142: 113(ptr) AccessChain 27(data) 131 53 64 143: 6(int) CompositeExtract 137 2 Store 142 143 144: 6(int) Load 8(invocation) 145: 121(ptr) AccessChain 27(data) 68 53 146: 21(ivec4) Load 145 147: 6(int) Load 8(invocation) 148: 21(ivec4) GroupNonUniformShuffle 35 146 147 149: 121(ptr) AccessChain 27(data) 144 53 Store 149 148 150: 6(int) Load 8(invocation) 152: 151(ptr) AccessChain 27(data) 29 68 30 153:22(float64_t) Load 152 154: 6(int) Load 8(invocation) 155:22(float64_t) GroupNonUniformShuffle 35 153 154 156: 151(ptr) AccessChain 27(data) 150 68 30 Store 156 155 157: 6(int) Load 8(invocation) 160: 159(ptr) AccessChain 27(data) 39 68 161: 23(f64vec4) Load 160 162:158(f64vec2) VectorShuffle 161 161 0 1 163: 6(int) Load 8(invocation) 164:158(f64vec2) GroupNonUniformShuffle 35 162 163 165: 151(ptr) AccessChain 27(data) 157 68 30 166:22(float64_t) CompositeExtract 164 0 Store 165 166 167: 151(ptr) AccessChain 27(data) 157 68 49 168:22(float64_t) CompositeExtract 164 1 Store 167 168 169: 6(int) Load 8(invocation) 171: 159(ptr) AccessChain 27(data) 53 68 172: 23(f64vec4) Load 171 173:170(f64vec3) VectorShuffle 172 172 0 1 2 174: 6(int) Load 8(invocation) 175:170(f64vec3) GroupNonUniformShuffle 35 173 174 176: 151(ptr) AccessChain 27(data) 169 68 30 177:22(float64_t) CompositeExtract 175 0 Store 176 177 178: 151(ptr) AccessChain 27(data) 169 68 49 179:22(float64_t) CompositeExtract 175 1 Store 178 179 180: 151(ptr) AccessChain 27(data) 169 68 64 181:22(float64_t) CompositeExtract 175 2 Store 180 181 182: 6(int) Load 8(invocation) 183: 159(ptr) AccessChain 27(data) 68 68 184: 23(f64vec4) Load 183 185: 6(int) Load 8(invocation) 186: 23(f64vec4) GroupNonUniformShuffle 35 184 185 187: 159(ptr) AccessChain 27(data) 182 68 Store 187 186 188: 6(int) Load 8(invocation) 189: 75(ptr) AccessChain 27(data) 29 39 30 190: 19(int) Load 189 192: 191(bool) SLessThan 190 29 193: 6(int) Load 8(invocation) 194: 191(bool) GroupNonUniformShuffle 35 192 193 195: 19(int) Select 194 39 29 196: 75(ptr) AccessChain 27(data) 188 39 30 Store 196 195 197: 6(int) Load 8(invocation) 198: 83(ptr) AccessChain 27(data) 39 39 199: 20(ivec4) Load 198 200: 82(ivec2) VectorShuffle 199 199 0 1 203: 202(bvec2) SLessThan 200 201 204: 6(int) Load 8(invocation) 205: 202(bvec2) GroupNonUniformShuffle 35 203 204 207: 82(ivec2) Select 205 206 201 208: 75(ptr) AccessChain 27(data) 197 39 30 209: 19(int) CompositeExtract 207 0 Store 208 209 210: 75(ptr) AccessChain 27(data) 197 39 49 211: 19(int) CompositeExtract 207 1 Store 210 211 212: 6(int) Load 8(invocation) 213: 83(ptr) AccessChain 27(data) 39 39 214: 20(ivec4) Load 213 215: 94(ivec3) VectorShuffle 214 214 0 1 2 218: 217(bvec3) SLessThan 215 216 219: 6(int) Load 8(invocation) 220: 217(bvec3) GroupNonUniformShuffle 35 218 219 222: 94(ivec3) Select 220 221 216 223: 75(ptr) AccessChain 27(data) 212 39 30 224: 19(int) CompositeExtract 222 0 Store 223 224 225: 75(ptr) AccessChain 27(data) 212 39 49 226: 19(int) CompositeExtract 222 1 Store 225 226 227: 75(ptr) AccessChain 27(data) 212 39 64 228: 19(int) CompositeExtract 222 2 Store 227 228 229: 6(int) Load 8(invocation) 230: 83(ptr) AccessChain 27(data) 39 39 231: 20(ivec4) Load 230 234: 233(bvec4) SLessThan 231 232 235: 6(int) Load 8(invocation) 236: 233(bvec4) GroupNonUniformShuffle 35 234 235 238: 20(ivec4) Select 236 237 232 239: 83(ptr) AccessChain 27(data) 229 39 Store 239 238 240: 6(int) Load 8(invocation) 241: 31(ptr) AccessChain 27(data) 29 29 30 242: 17(float) Load 241 243: 6(int) Load 8(invocation) 244: 17(float) GroupNonUniformShuffleXor 35 242 243 245: 31(ptr) AccessChain 27(data) 240 29 30 Store 245 244 246: 6(int) Load 8(invocation) 247: 41(ptr) AccessChain 27(data) 39 29 248: 18(fvec4) Load 247 249: 40(fvec2) VectorShuffle 248 248 0 1 250: 6(int) Load 8(invocation) 251: 40(fvec2) GroupNonUniformShuffleXor 35 249 250 252: 31(ptr) AccessChain 27(data) 246 29 30 253: 17(float) CompositeExtract 251 0 Store 252 253 254: 31(ptr) AccessChain 27(data) 246 29 49 255: 17(float) CompositeExtract 251 1 Store 254 255 256: 6(int) Load 8(invocation) 257: 41(ptr) AccessChain 27(data) 53 29 258: 18(fvec4) Load 257 259: 54(fvec3) VectorShuffle 258 258 0 1 2 260: 6(int) Load 8(invocation) 261: 54(fvec3) GroupNonUniformShuffleXor 35 259 260 262: 31(ptr) AccessChain 27(data) 256 29 30 263: 17(float) CompositeExtract 261 0 Store 262 263 264: 31(ptr) AccessChain 27(data) 256 29 49 265: 17(float) CompositeExtract 261 1 Store 264 265 266: 31(ptr) AccessChain 27(data) 256 29 64 267: 17(float) CompositeExtract 261 2 Store 266 267 268: 6(int) Load 8(invocation) 269: 41(ptr) AccessChain 27(data) 68 29 270: 18(fvec4) Load 269 271: 6(int) Load 8(invocation) 272: 18(fvec4) GroupNonUniformShuffleXor 35 270 271 273: 41(ptr) AccessChain 27(data) 268 29 Store 273 272 274: 6(int) Load 8(invocation) 275: 75(ptr) AccessChain 27(data) 29 39 30 276: 19(int) Load 275 277: 6(int) Load 8(invocation) 278: 19(int) GroupNonUniformShuffleXor 35 276 277 279: 75(ptr) AccessChain 27(data) 274 39 30 Store 279 278 280: 6(int) Load 8(invocation) 281: 83(ptr) AccessChain 27(data) 39 39 282: 20(ivec4) Load 281 283: 82(ivec2) VectorShuffle 282 282 0 1 284: 6(int) Load 8(invocation) 285: 82(ivec2) GroupNonUniformShuffleXor 35 283 284 286: 75(ptr) AccessChain 27(data) 280 39 30 287: 19(int) CompositeExtract 285 0 Store 286 287 288: 75(ptr) AccessChain 27(data) 280 39 49 289: 19(int) CompositeExtract 285 1 Store 288 289 290: 6(int) Load 8(invocation) 291: 83(ptr) AccessChain 27(data) 53 39 292: 20(ivec4) Load 291 293: 94(ivec3) VectorShuffle 292 292 0 1 2 294: 6(int) Load 8(invocation) 295: 94(ivec3) GroupNonUniformShuffleXor 35 293 294 296: 75(ptr) AccessChain 27(data) 290 39 30 297: 19(int) CompositeExtract 295 0 Store 296 297 298: 75(ptr) AccessChain 27(data) 290 39 49 299: 19(int) CompositeExtract 295 1 Store 298 299 300: 75(ptr) AccessChain 27(data) 290 39 64 301: 19(int) CompositeExtract 295 2 Store 300 301 302: 6(int) Load 8(invocation) 303: 83(ptr) AccessChain 27(data) 68 39 304: 20(ivec4) Load 303 305: 6(int) Load 8(invocation) 306: 20(ivec4) GroupNonUniformShuffleXor 35 304 305 307: 83(ptr) AccessChain 27(data) 302 39 Store 307 306 308: 6(int) Load 8(invocation) 309: 113(ptr) AccessChain 27(data) 29 53 30 310: 6(int) Load 309 311: 6(int) Load 8(invocation) 312: 6(int) GroupNonUniformShuffleXor 35 310 311 313: 113(ptr) AccessChain 27(data) 308 53 30 Store 313 312 314: 6(int) Load 8(invocation) 315: 121(ptr) AccessChain 27(data) 39 53 316: 21(ivec4) Load 315 317: 120(ivec2) VectorShuffle 316 316 0 1 318: 6(int) Load 8(invocation) 319: 120(ivec2) GroupNonUniformShuffleXor 35 317 318 320: 113(ptr) AccessChain 27(data) 314 53 30 321: 6(int) CompositeExtract 319 0 Store 320 321 322: 113(ptr) AccessChain 27(data) 314 53 49 323: 6(int) CompositeExtract 319 1 Store 322 323 324: 6(int) Load 8(invocation) 325: 121(ptr) AccessChain 27(data) 53 53 326: 21(ivec4) Load 325 327: 132(ivec3) VectorShuffle 326 326 0 1 2 328: 6(int) Load 8(invocation) 329: 132(ivec3) GroupNonUniformShuffleXor 35 327 328 330: 113(ptr) AccessChain 27(data) 324 53 30 331: 6(int) CompositeExtract 329 0 Store 330 331 332: 113(ptr) AccessChain 27(data) 324 53 49 333: 6(int) CompositeExtract 329 1 Store 332 333 334: 113(ptr) AccessChain 27(data) 324 53 64 335: 6(int) CompositeExtract 329 2 Store 334 335 336: 6(int) Load 8(invocation) 337: 121(ptr) AccessChain 27(data) 68 53 338: 21(ivec4) Load 337 339: 6(int) Load 8(invocation) 340: 21(ivec4) GroupNonUniformShuffleXor 35 338 339 341: 121(ptr) AccessChain 27(data) 336 53 Store 341 340 342: 6(int) Load 8(invocation) 343: 151(ptr) AccessChain 27(data) 29 68 30 344:22(float64_t) Load 343 345: 6(int) Load 8(invocation) 346:22(float64_t) GroupNonUniformShuffleXor 35 344 345 347: 151(ptr) AccessChain 27(data) 342 68 30 Store 347 346 348: 6(int) Load 8(invocation) 349: 159(ptr) AccessChain 27(data) 39 68 350: 23(f64vec4) Load 349 351:158(f64vec2) VectorShuffle 350 350 0 1 352: 6(int) Load 8(invocation) 353:158(f64vec2) GroupNonUniformShuffleXor 35 351 352 354: 151(ptr) AccessChain 27(data) 348 68 30 355:22(float64_t) CompositeExtract 353 0 Store 354 355 356: 151(ptr) AccessChain 27(data) 348 68 49 357:22(float64_t) CompositeExtract 353 1 Store 356 357 358: 6(int) Load 8(invocation) 359: 159(ptr) AccessChain 27(data) 53 68 360: 23(f64vec4) Load 359 361:170(f64vec3) VectorShuffle 360 360 0 1 2 362: 6(int) Load 8(invocation) 363:170(f64vec3) GroupNonUniformShuffleXor 35 361 362 364: 151(ptr) AccessChain 27(data) 358 68 30 365:22(float64_t) CompositeExtract 363 0 Store 364 365 366: 151(ptr) AccessChain 27(data) 358 68 49 367:22(float64_t) CompositeExtract 363 1 Store 366 367 368: 151(ptr) AccessChain 27(data) 358 68 64 369:22(float64_t) CompositeExtract 363 2 Store 368 369 370: 6(int) Load 8(invocation) 371: 159(ptr) AccessChain 27(data) 68 68 372: 23(f64vec4) Load 371 373: 6(int) Load 8(invocation) 374: 23(f64vec4) GroupNonUniformShuffleXor 35 372 373 375: 159(ptr) AccessChain 27(data) 370 68 Store 375 374 376: 6(int) Load 8(invocation) 377: 75(ptr) AccessChain 27(data) 29 39 30 378: 19(int) Load 377 379: 191(bool) SLessThan 378 29 380: 6(int) Load 8(invocation) 381: 191(bool) GroupNonUniformShuffleXor 35 379 380 382: 19(int) Select 381 39 29 383: 75(ptr) AccessChain 27(data) 376 39 30 Store 383 382 384: 6(int) Load 8(invocation) 385: 83(ptr) AccessChain 27(data) 39 39 386: 20(ivec4) Load 385 387: 82(ivec2) VectorShuffle 386 386 0 1 388: 202(bvec2) SLessThan 387 201 389: 6(int) Load 8(invocation) 390: 202(bvec2) GroupNonUniformShuffleXor 35 388 389 391: 82(ivec2) Select 390 206 201 392: 75(ptr) AccessChain 27(data) 384 39 30 393: 19(int) CompositeExtract 391 0 Store 392 393 394: 75(ptr) AccessChain 27(data) 384 39 49 395: 19(int) CompositeExtract 391 1 Store 394 395 396: 6(int) Load 8(invocation) 397: 83(ptr) AccessChain 27(data) 39 39 398: 20(ivec4) Load 397 399: 94(ivec3) VectorShuffle 398 398 0 1 2 400: 217(bvec3) SLessThan 399 216 401: 6(int) Load 8(invocation) 402: 217(bvec3) GroupNonUniformShuffleXor 35 400 401 403: 94(ivec3) Select 402 221 216 404: 75(ptr) AccessChain 27(data) 396 39 30 405: 19(int) CompositeExtract 403 0 Store 404 405 406: 75(ptr) AccessChain 27(data) 396 39 49 407: 19(int) CompositeExtract 403 1 Store 406 407 408: 75(ptr) AccessChain 27(data) 396 39 64 409: 19(int) CompositeExtract 403 2 Store 408 409 410: 6(int) Load 8(invocation) 411: 83(ptr) AccessChain 27(data) 39 39 412: 20(ivec4) Load 411 413: 233(bvec4) SLessThan 412 232 414: 6(int) Load 8(invocation) 415: 233(bvec4) GroupNonUniformShuffleXor 35 413 414 416: 20(ivec4) Select 415 237 232 417: 83(ptr) AccessChain 27(data) 410 39 Store 417 416 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupShuffleRelative.comp.out000066400000000000000000000667141506534232700256410ustar00rootroot00000000000000spv.subgroupShuffleRelative.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 420 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformShuffleRelative 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 24 "Buffers" MemberName 24(Buffers) 0 "f4" MemberName 24(Buffers) 1 "i4" MemberName 24(Buffers) 2 "u4" MemberName 24(Buffers) 3 "d4" Name 27 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 Decorate 27(data) Binding 0 Decorate 27(data) DescriptorSet 0 Decorate 419 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeFloat 32 18: TypeVector 17(float) 4 19: TypeInt 32 1 20: TypeVector 19(int) 4 21: TypeVector 6(int) 4 22: TypeFloat 64 23: TypeVector 22(float64_t) 4 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 25: TypeArray 24(Buffers) 15 26: TypePointer StorageBuffer 25 27(data): 26(ptr) Variable StorageBuffer 29: 19(int) Constant 0 30: 6(int) Constant 0 31: TypePointer StorageBuffer 17(float) 35: 6(int) Constant 3 39: 19(int) Constant 1 40: TypeVector 17(float) 2 41: TypePointer StorageBuffer 18(fvec4) 49: 6(int) Constant 1 53: 19(int) Constant 2 54: TypeVector 17(float) 3 64: 6(int) Constant 2 68: 19(int) Constant 3 75: TypePointer StorageBuffer 19(int) 82: TypeVector 19(int) 2 83: TypePointer StorageBuffer 20(ivec4) 94: TypeVector 19(int) 3 113: TypePointer StorageBuffer 6(int) 120: TypeVector 6(int) 2 121: TypePointer StorageBuffer 21(ivec4) 132: TypeVector 6(int) 3 151: TypePointer StorageBuffer 22(float64_t) 158: TypeVector 22(float64_t) 2 159: TypePointer StorageBuffer 23(f64vec4) 170: TypeVector 22(float64_t) 3 191: TypeBool 201: 82(ivec2) ConstantComposite 29 29 202: TypeVector 191(bool) 2 206: 82(ivec2) ConstantComposite 39 39 216: 94(ivec3) ConstantComposite 29 29 29 217: TypeVector 191(bool) 3 221: 94(ivec3) ConstantComposite 39 39 39 232: 20(ivec4) ConstantComposite 29 29 29 29 233: TypeVector 191(bool) 4 237: 20(ivec4) ConstantComposite 39 39 39 39 418: 6(int) Constant 8 419: 132(ivec3) ConstantComposite 418 418 49 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 28: 6(int) Load 8(invocation) 32: 31(ptr) AccessChain 27(data) 29 29 30 33: 17(float) Load 32 34: 6(int) Load 8(invocation) 36: 17(float) GroupNonUniformShuffleUp 35 33 34 37: 31(ptr) AccessChain 27(data) 28 29 30 Store 37 36 38: 6(int) Load 8(invocation) 42: 41(ptr) AccessChain 27(data) 39 29 43: 18(fvec4) Load 42 44: 40(fvec2) VectorShuffle 43 43 0 1 45: 6(int) Load 8(invocation) 46: 40(fvec2) GroupNonUniformShuffleUp 35 44 45 47: 31(ptr) AccessChain 27(data) 38 29 30 48: 17(float) CompositeExtract 46 0 Store 47 48 50: 31(ptr) AccessChain 27(data) 38 29 49 51: 17(float) CompositeExtract 46 1 Store 50 51 52: 6(int) Load 8(invocation) 55: 41(ptr) AccessChain 27(data) 53 29 56: 18(fvec4) Load 55 57: 54(fvec3) VectorShuffle 56 56 0 1 2 58: 6(int) Load 8(invocation) 59: 54(fvec3) GroupNonUniformShuffleUp 35 57 58 60: 31(ptr) AccessChain 27(data) 52 29 30 61: 17(float) CompositeExtract 59 0 Store 60 61 62: 31(ptr) AccessChain 27(data) 52 29 49 63: 17(float) CompositeExtract 59 1 Store 62 63 65: 31(ptr) AccessChain 27(data) 52 29 64 66: 17(float) CompositeExtract 59 2 Store 65 66 67: 6(int) Load 8(invocation) 69: 41(ptr) AccessChain 27(data) 68 29 70: 18(fvec4) Load 69 71: 6(int) Load 8(invocation) 72: 18(fvec4) GroupNonUniformShuffleUp 35 70 71 73: 41(ptr) AccessChain 27(data) 67 29 Store 73 72 74: 6(int) Load 8(invocation) 76: 75(ptr) AccessChain 27(data) 29 39 30 77: 19(int) Load 76 78: 6(int) Load 8(invocation) 79: 19(int) GroupNonUniformShuffleUp 35 77 78 80: 75(ptr) AccessChain 27(data) 74 39 30 Store 80 79 81: 6(int) Load 8(invocation) 84: 83(ptr) AccessChain 27(data) 39 39 85: 20(ivec4) Load 84 86: 82(ivec2) VectorShuffle 85 85 0 1 87: 6(int) Load 8(invocation) 88: 82(ivec2) GroupNonUniformShuffleUp 35 86 87 89: 75(ptr) AccessChain 27(data) 81 39 30 90: 19(int) CompositeExtract 88 0 Store 89 90 91: 75(ptr) AccessChain 27(data) 81 39 49 92: 19(int) CompositeExtract 88 1 Store 91 92 93: 6(int) Load 8(invocation) 95: 83(ptr) AccessChain 27(data) 53 39 96: 20(ivec4) Load 95 97: 94(ivec3) VectorShuffle 96 96 0 1 2 98: 6(int) Load 8(invocation) 99: 94(ivec3) GroupNonUniformShuffleUp 35 97 98 100: 75(ptr) AccessChain 27(data) 93 39 30 101: 19(int) CompositeExtract 99 0 Store 100 101 102: 75(ptr) AccessChain 27(data) 93 39 49 103: 19(int) CompositeExtract 99 1 Store 102 103 104: 75(ptr) AccessChain 27(data) 93 39 64 105: 19(int) CompositeExtract 99 2 Store 104 105 106: 6(int) Load 8(invocation) 107: 83(ptr) AccessChain 27(data) 68 39 108: 20(ivec4) Load 107 109: 6(int) Load 8(invocation) 110: 20(ivec4) GroupNonUniformShuffleUp 35 108 109 111: 83(ptr) AccessChain 27(data) 106 39 Store 111 110 112: 6(int) Load 8(invocation) 114: 113(ptr) AccessChain 27(data) 29 53 30 115: 6(int) Load 114 116: 6(int) Load 8(invocation) 117: 6(int) GroupNonUniformShuffleUp 35 115 116 118: 113(ptr) AccessChain 27(data) 112 53 30 Store 118 117 119: 6(int) Load 8(invocation) 122: 121(ptr) AccessChain 27(data) 39 53 123: 21(ivec4) Load 122 124: 120(ivec2) VectorShuffle 123 123 0 1 125: 6(int) Load 8(invocation) 126: 120(ivec2) GroupNonUniformShuffleUp 35 124 125 127: 113(ptr) AccessChain 27(data) 119 53 30 128: 6(int) CompositeExtract 126 0 Store 127 128 129: 113(ptr) AccessChain 27(data) 119 53 49 130: 6(int) CompositeExtract 126 1 Store 129 130 131: 6(int) Load 8(invocation) 133: 121(ptr) AccessChain 27(data) 53 53 134: 21(ivec4) Load 133 135: 132(ivec3) VectorShuffle 134 134 0 1 2 136: 6(int) Load 8(invocation) 137: 132(ivec3) GroupNonUniformShuffleUp 35 135 136 138: 113(ptr) AccessChain 27(data) 131 53 30 139: 6(int) CompositeExtract 137 0 Store 138 139 140: 113(ptr) AccessChain 27(data) 131 53 49 141: 6(int) CompositeExtract 137 1 Store 140 141 142: 113(ptr) AccessChain 27(data) 131 53 64 143: 6(int) CompositeExtract 137 2 Store 142 143 144: 6(int) Load 8(invocation) 145: 121(ptr) AccessChain 27(data) 68 53 146: 21(ivec4) Load 145 147: 6(int) Load 8(invocation) 148: 21(ivec4) GroupNonUniformShuffleUp 35 146 147 149: 121(ptr) AccessChain 27(data) 144 53 Store 149 148 150: 6(int) Load 8(invocation) 152: 151(ptr) AccessChain 27(data) 29 68 30 153:22(float64_t) Load 152 154: 6(int) Load 8(invocation) 155:22(float64_t) GroupNonUniformShuffleUp 35 153 154 156: 151(ptr) AccessChain 27(data) 150 68 30 Store 156 155 157: 6(int) Load 8(invocation) 160: 159(ptr) AccessChain 27(data) 39 68 161: 23(f64vec4) Load 160 162:158(f64vec2) VectorShuffle 161 161 0 1 163: 6(int) Load 8(invocation) 164:158(f64vec2) GroupNonUniformShuffleUp 35 162 163 165: 151(ptr) AccessChain 27(data) 157 68 30 166:22(float64_t) CompositeExtract 164 0 Store 165 166 167: 151(ptr) AccessChain 27(data) 157 68 49 168:22(float64_t) CompositeExtract 164 1 Store 167 168 169: 6(int) Load 8(invocation) 171: 159(ptr) AccessChain 27(data) 53 68 172: 23(f64vec4) Load 171 173:170(f64vec3) VectorShuffle 172 172 0 1 2 174: 6(int) Load 8(invocation) 175:170(f64vec3) GroupNonUniformShuffleUp 35 173 174 176: 151(ptr) AccessChain 27(data) 169 68 30 177:22(float64_t) CompositeExtract 175 0 Store 176 177 178: 151(ptr) AccessChain 27(data) 169 68 49 179:22(float64_t) CompositeExtract 175 1 Store 178 179 180: 151(ptr) AccessChain 27(data) 169 68 64 181:22(float64_t) CompositeExtract 175 2 Store 180 181 182: 6(int) Load 8(invocation) 183: 159(ptr) AccessChain 27(data) 68 68 184: 23(f64vec4) Load 183 185: 6(int) Load 8(invocation) 186: 23(f64vec4) GroupNonUniformShuffleUp 35 184 185 187: 159(ptr) AccessChain 27(data) 182 68 Store 187 186 188: 6(int) Load 8(invocation) 189: 75(ptr) AccessChain 27(data) 29 39 30 190: 19(int) Load 189 192: 191(bool) SLessThan 190 29 193: 6(int) Load 8(invocation) 194: 191(bool) GroupNonUniformShuffleUp 35 192 193 195: 19(int) Select 194 39 29 196: 75(ptr) AccessChain 27(data) 188 39 30 Store 196 195 197: 6(int) Load 8(invocation) 198: 83(ptr) AccessChain 27(data) 39 39 199: 20(ivec4) Load 198 200: 82(ivec2) VectorShuffle 199 199 0 1 203: 202(bvec2) SLessThan 200 201 204: 6(int) Load 8(invocation) 205: 202(bvec2) GroupNonUniformShuffleUp 35 203 204 207: 82(ivec2) Select 205 206 201 208: 75(ptr) AccessChain 27(data) 197 39 30 209: 19(int) CompositeExtract 207 0 Store 208 209 210: 75(ptr) AccessChain 27(data) 197 39 49 211: 19(int) CompositeExtract 207 1 Store 210 211 212: 6(int) Load 8(invocation) 213: 83(ptr) AccessChain 27(data) 39 39 214: 20(ivec4) Load 213 215: 94(ivec3) VectorShuffle 214 214 0 1 2 218: 217(bvec3) SLessThan 215 216 219: 6(int) Load 8(invocation) 220: 217(bvec3) GroupNonUniformShuffleUp 35 218 219 222: 94(ivec3) Select 220 221 216 223: 75(ptr) AccessChain 27(data) 212 39 30 224: 19(int) CompositeExtract 222 0 Store 223 224 225: 75(ptr) AccessChain 27(data) 212 39 49 226: 19(int) CompositeExtract 222 1 Store 225 226 227: 75(ptr) AccessChain 27(data) 212 39 64 228: 19(int) CompositeExtract 222 2 Store 227 228 229: 6(int) Load 8(invocation) 230: 83(ptr) AccessChain 27(data) 39 39 231: 20(ivec4) Load 230 234: 233(bvec4) SLessThan 231 232 235: 6(int) Load 8(invocation) 236: 233(bvec4) GroupNonUniformShuffleUp 35 234 235 238: 20(ivec4) Select 236 237 232 239: 83(ptr) AccessChain 27(data) 229 39 Store 239 238 240: 6(int) Load 8(invocation) 241: 31(ptr) AccessChain 27(data) 29 29 30 242: 17(float) Load 241 243: 6(int) Load 8(invocation) 244: 17(float) GroupNonUniformShuffleDown 35 242 243 245: 31(ptr) AccessChain 27(data) 240 29 30 Store 245 244 246: 6(int) Load 8(invocation) 247: 41(ptr) AccessChain 27(data) 39 29 248: 18(fvec4) Load 247 249: 40(fvec2) VectorShuffle 248 248 0 1 250: 6(int) Load 8(invocation) 251: 40(fvec2) GroupNonUniformShuffleDown 35 249 250 252: 31(ptr) AccessChain 27(data) 246 29 30 253: 17(float) CompositeExtract 251 0 Store 252 253 254: 31(ptr) AccessChain 27(data) 246 29 49 255: 17(float) CompositeExtract 251 1 Store 254 255 256: 6(int) Load 8(invocation) 257: 41(ptr) AccessChain 27(data) 53 29 258: 18(fvec4) Load 257 259: 54(fvec3) VectorShuffle 258 258 0 1 2 260: 6(int) Load 8(invocation) 261: 54(fvec3) GroupNonUniformShuffleDown 35 259 260 262: 31(ptr) AccessChain 27(data) 256 29 30 263: 17(float) CompositeExtract 261 0 Store 262 263 264: 31(ptr) AccessChain 27(data) 256 29 49 265: 17(float) CompositeExtract 261 1 Store 264 265 266: 31(ptr) AccessChain 27(data) 256 29 64 267: 17(float) CompositeExtract 261 2 Store 266 267 268: 6(int) Load 8(invocation) 269: 41(ptr) AccessChain 27(data) 68 29 270: 18(fvec4) Load 269 271: 6(int) Load 8(invocation) 272: 18(fvec4) GroupNonUniformShuffleDown 35 270 271 273: 41(ptr) AccessChain 27(data) 268 29 Store 273 272 274: 6(int) Load 8(invocation) 275: 75(ptr) AccessChain 27(data) 29 39 30 276: 19(int) Load 275 277: 6(int) Load 8(invocation) 278: 19(int) GroupNonUniformShuffleDown 35 276 277 279: 75(ptr) AccessChain 27(data) 274 39 30 Store 279 278 280: 6(int) Load 8(invocation) 281: 83(ptr) AccessChain 27(data) 39 39 282: 20(ivec4) Load 281 283: 82(ivec2) VectorShuffle 282 282 0 1 284: 6(int) Load 8(invocation) 285: 82(ivec2) GroupNonUniformShuffleDown 35 283 284 286: 75(ptr) AccessChain 27(data) 280 39 30 287: 19(int) CompositeExtract 285 0 Store 286 287 288: 75(ptr) AccessChain 27(data) 280 39 49 289: 19(int) CompositeExtract 285 1 Store 288 289 290: 6(int) Load 8(invocation) 291: 83(ptr) AccessChain 27(data) 53 39 292: 20(ivec4) Load 291 293: 94(ivec3) VectorShuffle 292 292 0 1 2 294: 6(int) Load 8(invocation) 295: 94(ivec3) GroupNonUniformShuffleDown 35 293 294 296: 75(ptr) AccessChain 27(data) 290 39 30 297: 19(int) CompositeExtract 295 0 Store 296 297 298: 75(ptr) AccessChain 27(data) 290 39 49 299: 19(int) CompositeExtract 295 1 Store 298 299 300: 75(ptr) AccessChain 27(data) 290 39 64 301: 19(int) CompositeExtract 295 2 Store 300 301 302: 6(int) Load 8(invocation) 303: 83(ptr) AccessChain 27(data) 68 39 304: 20(ivec4) Load 303 305: 6(int) Load 8(invocation) 306: 20(ivec4) GroupNonUniformShuffleDown 35 304 305 307: 83(ptr) AccessChain 27(data) 302 39 Store 307 306 308: 6(int) Load 8(invocation) 309: 113(ptr) AccessChain 27(data) 29 53 30 310: 6(int) Load 309 311: 6(int) Load 8(invocation) 312: 6(int) GroupNonUniformShuffleDown 35 310 311 313: 113(ptr) AccessChain 27(data) 308 53 30 Store 313 312 314: 6(int) Load 8(invocation) 315: 121(ptr) AccessChain 27(data) 39 53 316: 21(ivec4) Load 315 317: 120(ivec2) VectorShuffle 316 316 0 1 318: 6(int) Load 8(invocation) 319: 120(ivec2) GroupNonUniformShuffleDown 35 317 318 320: 113(ptr) AccessChain 27(data) 314 53 30 321: 6(int) CompositeExtract 319 0 Store 320 321 322: 113(ptr) AccessChain 27(data) 314 53 49 323: 6(int) CompositeExtract 319 1 Store 322 323 324: 6(int) Load 8(invocation) 325: 121(ptr) AccessChain 27(data) 53 53 326: 21(ivec4) Load 325 327: 132(ivec3) VectorShuffle 326 326 0 1 2 328: 6(int) Load 8(invocation) 329: 132(ivec3) GroupNonUniformShuffleDown 35 327 328 330: 113(ptr) AccessChain 27(data) 324 53 30 331: 6(int) CompositeExtract 329 0 Store 330 331 332: 113(ptr) AccessChain 27(data) 324 53 49 333: 6(int) CompositeExtract 329 1 Store 332 333 334: 113(ptr) AccessChain 27(data) 324 53 64 335: 6(int) CompositeExtract 329 2 Store 334 335 336: 6(int) Load 8(invocation) 337: 121(ptr) AccessChain 27(data) 68 53 338: 21(ivec4) Load 337 339: 6(int) Load 8(invocation) 340: 21(ivec4) GroupNonUniformShuffleDown 35 338 339 341: 121(ptr) AccessChain 27(data) 336 53 Store 341 340 342: 6(int) Load 8(invocation) 343: 151(ptr) AccessChain 27(data) 29 68 30 344:22(float64_t) Load 343 345: 6(int) Load 8(invocation) 346:22(float64_t) GroupNonUniformShuffleDown 35 344 345 347: 151(ptr) AccessChain 27(data) 342 68 30 Store 347 346 348: 6(int) Load 8(invocation) 349: 159(ptr) AccessChain 27(data) 39 68 350: 23(f64vec4) Load 349 351:158(f64vec2) VectorShuffle 350 350 0 1 352: 6(int) Load 8(invocation) 353:158(f64vec2) GroupNonUniformShuffleDown 35 351 352 354: 151(ptr) AccessChain 27(data) 348 68 30 355:22(float64_t) CompositeExtract 353 0 Store 354 355 356: 151(ptr) AccessChain 27(data) 348 68 49 357:22(float64_t) CompositeExtract 353 1 Store 356 357 358: 6(int) Load 8(invocation) 359: 159(ptr) AccessChain 27(data) 53 68 360: 23(f64vec4) Load 359 361:170(f64vec3) VectorShuffle 360 360 0 1 2 362: 6(int) Load 8(invocation) 363:170(f64vec3) GroupNonUniformShuffleDown 35 361 362 364: 151(ptr) AccessChain 27(data) 358 68 30 365:22(float64_t) CompositeExtract 363 0 Store 364 365 366: 151(ptr) AccessChain 27(data) 358 68 49 367:22(float64_t) CompositeExtract 363 1 Store 366 367 368: 151(ptr) AccessChain 27(data) 358 68 64 369:22(float64_t) CompositeExtract 363 2 Store 368 369 370: 6(int) Load 8(invocation) 371: 159(ptr) AccessChain 27(data) 68 68 372: 23(f64vec4) Load 371 373: 6(int) Load 8(invocation) 374: 23(f64vec4) GroupNonUniformShuffleDown 35 372 373 375: 159(ptr) AccessChain 27(data) 370 68 Store 375 374 376: 6(int) Load 8(invocation) 377: 75(ptr) AccessChain 27(data) 29 39 30 378: 19(int) Load 377 379: 191(bool) SLessThan 378 29 380: 6(int) Load 8(invocation) 381: 191(bool) GroupNonUniformShuffleDown 35 379 380 382: 19(int) Select 381 39 29 383: 75(ptr) AccessChain 27(data) 376 39 30 Store 383 382 384: 6(int) Load 8(invocation) 385: 83(ptr) AccessChain 27(data) 39 39 386: 20(ivec4) Load 385 387: 82(ivec2) VectorShuffle 386 386 0 1 388: 202(bvec2) SLessThan 387 201 389: 6(int) Load 8(invocation) 390: 202(bvec2) GroupNonUniformShuffleDown 35 388 389 391: 82(ivec2) Select 390 206 201 392: 75(ptr) AccessChain 27(data) 384 39 30 393: 19(int) CompositeExtract 391 0 Store 392 393 394: 75(ptr) AccessChain 27(data) 384 39 49 395: 19(int) CompositeExtract 391 1 Store 394 395 396: 6(int) Load 8(invocation) 397: 83(ptr) AccessChain 27(data) 39 39 398: 20(ivec4) Load 397 399: 94(ivec3) VectorShuffle 398 398 0 1 2 400: 217(bvec3) SLessThan 399 216 401: 6(int) Load 8(invocation) 402: 217(bvec3) GroupNonUniformShuffleDown 35 400 401 403: 94(ivec3) Select 402 221 216 404: 75(ptr) AccessChain 27(data) 396 39 30 405: 19(int) CompositeExtract 403 0 Store 404 405 406: 75(ptr) AccessChain 27(data) 396 39 49 407: 19(int) CompositeExtract 403 1 Store 406 407 408: 75(ptr) AccessChain 27(data) 396 39 64 409: 19(int) CompositeExtract 403 2 Store 408 409 410: 6(int) Load 8(invocation) 411: 83(ptr) AccessChain 27(data) 39 39 412: 20(ivec4) Load 411 413: 233(bvec4) SLessThan 412 232 414: 6(int) Load 8(invocation) 415: 233(bvec4) GroupNonUniformShuffleDown 35 413 414 416: 20(ivec4) Select 415 237 232 417: 83(ptr) AccessChain 27(data) 410 39 Store 417 416 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupSizeARB.frag.out000066400000000000000000000032301506534232700237510ustar00rootroot00000000000000spv.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) BuiltIn SubgroupSize Decorate 10(gl_SubGroupSizeARB) Flat 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 glslang-16.0.0/Test/baseResults/spv.subgroupUniformControlFlow.vert.out000066400000000000000000000017411506534232700263700ustar00rootroot00000000000000spv.subgroupUniformControlFlow.vert WARNING: 0:7: '' : attribute with arguments not recognized, skipping // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 6 Capability Shader Extension "SPV_KHR_subgroup_uniform_control_flow" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" ExecutionMode 4 SubgroupUniformControlFlow Source GLSL 460 SourceExtension "GL_EXT_subgroup_uniform_control_flow" Name 4 "main" 2: TypeVoid 3: TypeFunction 2 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subgroupVote.comp.out000066400000000000000000000361001506534232700234500ustar00rootroot00000000000000spv.subgroupVote.comp // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 216 Capability Shader Capability Float64 Capability GroupNonUniform Capability GroupNonUniformVote 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" 10 12 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_vote" Name 4 "main" Name 8 "invocation" Name 10 "gl_SubgroupInvocationID" Name 12 "gl_SubgroupSize" Name 24 "Buffers" MemberName 24(Buffers) 0 "f4" MemberName 24(Buffers) 1 "i4" MemberName 24(Buffers) 2 "u4" MemberName 24(Buffers) 3 "d4" MemberName 24(Buffers) 4 "r" Name 27 "data" Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 11 RelaxedPrecision Decorate 12(gl_SubgroupSize) RelaxedPrecision Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 MemberDecorate 24(Buffers) 4 Offset 96 Decorate 27(data) Binding 0 Decorate 27(data) DescriptorSet 0 Decorate 215 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubgroupInvocationID): 9(ptr) Variable Input 12(gl_SubgroupSize): 9(ptr) Variable Input 15: 6(int) Constant 4 17: TypeFloat 32 18: TypeVector 17(float) 4 19: TypeInt 32 1 20: TypeVector 19(int) 4 21: TypeVector 6(int) 4 22: TypeFloat 64 23: TypeVector 22(float64_t) 4 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 19(int) 25: TypeArray 24(Buffers) 15 26: TypePointer StorageBuffer 25 27(data): 26(ptr) Variable StorageBuffer 29: 19(int) Constant 4 30: TypePointer StorageBuffer 19(int) 33: 19(int) Constant 0 34: TypeBool 36: 6(int) Constant 3 41: 6(int) Constant 0 42: TypePointer StorageBuffer 17(float) 46: 19(int) Constant 1 50: TypeVector 17(float) 2 51: TypePointer StorageBuffer 18(fvec4) 59: 19(int) Constant 2 60: TypeVector 17(float) 3 68: 19(int) Constant 3 81: TypeVector 19(int) 2 82: TypePointer StorageBuffer 20(ivec4) 90: TypeVector 19(int) 3 104: TypePointer StorageBuffer 6(int) 111: TypeVector 6(int) 2 112: TypePointer StorageBuffer 21(ivec4) 120: TypeVector 6(int) 3 142: TypePointer StorageBuffer 22(float64_t) 149: TypeVector 22(float64_t) 2 150: TypePointer StorageBuffer 23(f64vec4) 158: TypeVector 22(float64_t) 3 182: 81(ivec2) ConstantComposite 33 33 183: TypeVector 34(bool) 2 194: 90(ivec3) ConstantComposite 33 33 33 195: TypeVector 34(bool) 3 205: 20(ivec4) ConstantComposite 33 33 33 33 206: TypeVector 34(bool) 4 213: 6(int) Constant 8 214: 6(int) Constant 1 215: 120(ivec3) ConstantComposite 213 213 214 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function 11: 6(int) Load 10(gl_SubgroupInvocationID) 13: 6(int) Load 12(gl_SubgroupSize) 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 28: 6(int) Load 8(invocation) 31: 30(ptr) AccessChain 27(data) 28 29 32: 19(int) Load 31 35: 34(bool) SLessThan 32 33 37: 34(bool) GroupNonUniformAll 36 35 SelectionMerge 39 None BranchConditional 37 38 133 38: Label 40: 6(int) Load 8(invocation) 43: 42(ptr) AccessChain 27(data) 33 33 41 44: 17(float) Load 43 45: 34(bool) GroupNonUniformAllEqual 36 44 47: 19(int) Select 45 46 33 48: 30(ptr) AccessChain 27(data) 40 29 Store 48 47 49: 6(int) Load 8(invocation) 52: 51(ptr) AccessChain 27(data) 46 33 53: 18(fvec4) Load 52 54: 50(fvec2) VectorShuffle 53 53 0 1 55: 34(bool) GroupNonUniformAllEqual 36 54 56: 19(int) Select 55 46 33 57: 30(ptr) AccessChain 27(data) 49 29 Store 57 56 58: 6(int) Load 8(invocation) 61: 51(ptr) AccessChain 27(data) 59 33 62: 18(fvec4) Load 61 63: 60(fvec3) VectorShuffle 62 62 0 1 2 64: 34(bool) GroupNonUniformAllEqual 36 63 65: 19(int) Select 64 46 33 66: 30(ptr) AccessChain 27(data) 58 29 Store 66 65 67: 6(int) Load 8(invocation) 69: 51(ptr) AccessChain 27(data) 68 33 70: 18(fvec4) Load 69 71: 34(bool) GroupNonUniformAllEqual 36 70 72: 19(int) Select 71 46 33 73: 30(ptr) AccessChain 27(data) 67 29 Store 73 72 74: 6(int) Load 8(invocation) 75: 30(ptr) AccessChain 27(data) 33 46 41 76: 19(int) Load 75 77: 34(bool) GroupNonUniformAllEqual 36 76 78: 19(int) Select 77 46 33 79: 30(ptr) AccessChain 27(data) 74 29 Store 79 78 80: 6(int) Load 8(invocation) 83: 82(ptr) AccessChain 27(data) 46 46 84: 20(ivec4) Load 83 85: 81(ivec2) VectorShuffle 84 84 0 1 86: 34(bool) GroupNonUniformAllEqual 36 85 87: 19(int) Select 86 46 33 88: 30(ptr) AccessChain 27(data) 80 29 Store 88 87 89: 6(int) Load 8(invocation) 91: 82(ptr) AccessChain 27(data) 59 46 92: 20(ivec4) Load 91 93: 90(ivec3) VectorShuffle 92 92 0 1 2 94: 34(bool) GroupNonUniformAllEqual 36 93 95: 19(int) Select 94 46 33 96: 30(ptr) AccessChain 27(data) 89 29 Store 96 95 97: 6(int) Load 8(invocation) 98: 82(ptr) AccessChain 27(data) 68 46 99: 20(ivec4) Load 98 100: 34(bool) GroupNonUniformAllEqual 36 99 101: 19(int) Select 100 46 33 102: 30(ptr) AccessChain 27(data) 97 29 Store 102 101 103: 6(int) Load 8(invocation) 105: 104(ptr) AccessChain 27(data) 33 59 41 106: 6(int) Load 105 107: 34(bool) GroupNonUniformAllEqual 36 106 108: 19(int) Select 107 46 33 109: 30(ptr) AccessChain 27(data) 103 29 Store 109 108 110: 6(int) Load 8(invocation) 113: 112(ptr) AccessChain 27(data) 46 59 114: 21(ivec4) Load 113 115: 111(ivec2) VectorShuffle 114 114 0 1 116: 34(bool) GroupNonUniformAllEqual 36 115 117: 19(int) Select 116 46 33 118: 30(ptr) AccessChain 27(data) 110 29 Store 118 117 119: 6(int) Load 8(invocation) 121: 112(ptr) AccessChain 27(data) 59 59 122: 21(ivec4) Load 121 123: 120(ivec3) VectorShuffle 122 122 0 1 2 124: 34(bool) GroupNonUniformAllEqual 36 123 125: 19(int) Select 124 46 33 126: 30(ptr) AccessChain 27(data) 119 29 Store 126 125 127: 6(int) Load 8(invocation) 128: 112(ptr) AccessChain 27(data) 68 59 129: 21(ivec4) Load 128 130: 34(bool) GroupNonUniformAllEqual 36 129 131: 19(int) Select 130 46 33 132: 30(ptr) AccessChain 27(data) 127 29 Store 132 131 Branch 39 133: Label 134: 6(int) Load 8(invocation) 135: 30(ptr) AccessChain 27(data) 134 29 136: 19(int) Load 135 137: 34(bool) SLessThan 136 33 138: 34(bool) GroupNonUniformAny 36 137 SelectionMerge 140 None BranchConditional 138 139 140 139: Label 141: 6(int) Load 8(invocation) 143: 142(ptr) AccessChain 27(data) 33 68 41 144:22(float64_t) Load 143 145: 34(bool) GroupNonUniformAllEqual 36 144 146: 19(int) Select 145 46 33 147: 30(ptr) AccessChain 27(data) 141 29 Store 147 146 148: 6(int) Load 8(invocation) 151: 150(ptr) AccessChain 27(data) 46 68 152: 23(f64vec4) Load 151 153:149(f64vec2) VectorShuffle 152 152 0 1 154: 34(bool) GroupNonUniformAllEqual 36 153 155: 19(int) Select 154 46 33 156: 30(ptr) AccessChain 27(data) 148 29 Store 156 155 157: 6(int) Load 8(invocation) 159: 150(ptr) AccessChain 27(data) 59 68 160: 23(f64vec4) Load 159 161:158(f64vec3) VectorShuffle 160 160 0 1 2 162: 34(bool) GroupNonUniformAllEqual 36 161 163: 19(int) Select 162 46 33 164: 30(ptr) AccessChain 27(data) 157 29 Store 164 163 165: 6(int) Load 8(invocation) 166: 150(ptr) AccessChain 27(data) 68 68 167: 23(f64vec4) Load 166 168: 34(bool) GroupNonUniformAllEqual 36 167 169: 19(int) Select 168 46 33 170: 30(ptr) AccessChain 27(data) 165 29 Store 170 169 171: 6(int) Load 8(invocation) 172: 30(ptr) AccessChain 27(data) 33 46 41 173: 19(int) Load 172 174: 34(bool) SLessThan 173 33 175: 34(bool) GroupNonUniformAllEqual 36 174 176: 19(int) Select 175 46 33 177: 30(ptr) AccessChain 27(data) 171 29 Store 177 176 178: 6(int) Load 8(invocation) 179: 82(ptr) AccessChain 27(data) 46 46 180: 20(ivec4) Load 179 181: 81(ivec2) VectorShuffle 180 180 0 1 184: 183(bvec2) SLessThan 181 182 185: 34(bool) GroupNonUniformAllEqual 36 184 186: 19(int) Select 185 46 33 187: 81(ivec2) CompositeConstruct 186 186 188: 19(int) CompositeExtract 187 0 189: 30(ptr) AccessChain 27(data) 178 29 Store 189 188 190: 6(int) Load 8(invocation) 191: 82(ptr) AccessChain 27(data) 46 46 192: 20(ivec4) Load 191 193: 90(ivec3) VectorShuffle 192 192 0 1 2 196: 195(bvec3) SLessThan 193 194 197: 34(bool) GroupNonUniformAllEqual 36 196 198: 19(int) Select 197 46 33 199: 90(ivec3) CompositeConstruct 198 198 198 200: 19(int) CompositeExtract 199 0 201: 30(ptr) AccessChain 27(data) 190 29 Store 201 200 202: 6(int) Load 8(invocation) 203: 82(ptr) AccessChain 27(data) 46 46 204: 20(ivec4) Load 203 207: 206(bvec4) SLessThan 204 205 208: 34(bool) GroupNonUniformAllEqual 36 207 209: 19(int) Select 208 46 33 210: 20(ivec4) CompositeConstruct 209 209 209 209 211: 19(int) CompositeExtract 210 0 212: 30(ptr) AccessChain 27(data) 202 29 Store 212 211 Branch 140 140: Label Branch 39 39: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.subpass.frag.out000066400000000000000000000144011506534232700224050ustar00rootroot00000000000000spv.subpass.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 67 Capability Shader Capability InputAttachment 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 15 27 53 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 11 "foo(iIPM1;" Name 10 "sb" Name 15 "icolor" Name 27 "color" Name 30 "sub" Name 35 "subMS" Name 42 "isub" Name 45 "isubMS" Name 53 "ucolor" Name 56 "usub" Name 61 "usubMS" Decorate 15(icolor) Location 1 Decorate 27(color) Location 0 Decorate 30(sub) Binding 0 Decorate 30(sub) DescriptorSet 0 Decorate 30(sub) InputAttachmentIndex 1 Decorate 35(subMS) Binding 1 Decorate 35(subMS) DescriptorSet 0 Decorate 35(subMS) InputAttachmentIndex 2 Decorate 42(isub) Binding 2 Decorate 42(isub) DescriptorSet 0 Decorate 42(isub) InputAttachmentIndex 3 Decorate 45(isubMS) Binding 3 Decorate 45(isubMS) DescriptorSet 0 Decorate 45(isubMS) InputAttachmentIndex 4 Decorate 53(ucolor) Location 2 Decorate 56(usub) Binding 4 Decorate 56(usub) DescriptorSet 0 Decorate 56(usub) InputAttachmentIndex 5 Decorate 61(usubMS) Binding 5 Decorate 61(usubMS) DescriptorSet 0 Decorate 61(usubMS) InputAttachmentIndex 6 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeImage 6(int) SubpassData multi-sampled nonsampled format:Unknown 8: TypePointer UniformConstant 7 9: TypeFunction 2 8(ptr) 13: TypeVector 6(int) 4 14: TypePointer Output 13(ivec4) 15(icolor): 14(ptr) Variable Output 17: 6(int) Constant 3 18: 6(int) Constant 0 19: TypeVector 6(int) 2 20: 19(ivec2) ConstantComposite 18 18 24: TypeFloat 32 25: TypeVector 24(float) 4 26: TypePointer Output 25(fvec4) 27(color): 26(ptr) Variable Output 28: TypeImage 24(float) SubpassData nonsampled format:Unknown 29: TypePointer UniformConstant 28 30(sub): 29(ptr) Variable UniformConstant 33: TypeImage 24(float) SubpassData multi-sampled nonsampled format:Unknown 34: TypePointer UniformConstant 33 35(subMS): 34(ptr) Variable UniformConstant 40: TypeImage 6(int) SubpassData nonsampled format:Unknown 41: TypePointer UniformConstant 40 42(isub): 41(ptr) Variable UniformConstant 45(isubMS): 8(ptr) Variable UniformConstant 50: TypeInt 32 0 51: TypeVector 50(int) 4 52: TypePointer Output 51(ivec4) 53(ucolor): 52(ptr) Variable Output 54: TypeImage 50(int) SubpassData nonsampled format:Unknown 55: TypePointer UniformConstant 54 56(usub): 55(ptr) Variable UniformConstant 59: TypeImage 50(int) SubpassData multi-sampled nonsampled format:Unknown 60: TypePointer UniformConstant 59 61(usubMS): 60(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 31: 28 Load 30(sub) 32: 25(fvec4) ImageRead 31 20 Store 27(color) 32 36: 33 Load 35(subMS) 37: 25(fvec4) ImageRead 36 20 Sample 17 38: 25(fvec4) Load 27(color) 39: 25(fvec4) FAdd 38 37 Store 27(color) 39 43: 40 Load 42(isub) 44: 13(ivec4) ImageRead 43 20 Store 15(icolor) 44 46: 7 Load 45(isubMS) 47: 13(ivec4) ImageRead 46 20 Sample 17 48: 13(ivec4) Load 15(icolor) 49: 13(ivec4) IAdd 48 47 Store 15(icolor) 49 57: 54 Load 56(usub) 58: 51(ivec4) ImageRead 57 20 Store 53(ucolor) 58 62: 59 Load 61(usubMS) 63: 51(ivec4) ImageRead 62 20 Sample 17 64: 51(ivec4) Load 53(ucolor) 65: 51(ivec4) IAdd 64 63 Store 53(ucolor) 65 66: 2 FunctionCall 11(foo(iIPM1;) 45(isubMS) Return FunctionEnd 11(foo(iIPM1;): 2 Function None 9 10(sb): 8(ptr) FunctionParameter 12: Label 16: 7 Load 10(sb) 21: 13(ivec4) ImageRead 16 20 Sample 17 22: 13(ivec4) Load 15(icolor) 23: 13(ivec4) IAdd 22 21 Store 15(icolor) 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.switch.frag.out000066400000000000000000000646641506534232700222460ustar00rootroot00000000000000spv.switch.frag WARNING: 0:121: 'switch' : last case/default label not followed by statements WARNING: 0:134: 'switch' : last case/default label not followed by statements WARNING: 0:139: 'switch' : last case/default label not followed by statements // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 269 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 62 75 129 227 233 ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 15 "foo1(vf4;vf4;i1;" Name 12 "v1" Name 13 "v2" Name 14 "i1" Name 20 "foo2(vf4;vf4;i1;" Name 17 "v1" Name 18 "v2" Name 19 "i1" Name 60 "local" Name 62 "c" Name 73 "f" Name 75 "x" Name 129 "d" Name 155 "i" Name 175 "j" Name 227 "color" Name 233 "v" Name 234 "param" Name 236 "param" Name 238 "param" Name 246 "param" Name 248 "param" Name 250 "param" Decorate 12(v1) RelaxedPrecision Decorate 13(v2) RelaxedPrecision Decorate 14(i1) RelaxedPrecision Decorate 15(foo1(vf4;vf4;i1;) RelaxedPrecision Decorate 17(v1) RelaxedPrecision Decorate 18(v2) RelaxedPrecision Decorate 19(i1) RelaxedPrecision Decorate 20(foo2(vf4;vf4;i1;) RelaxedPrecision Decorate 22 RelaxedPrecision Decorate 27 RelaxedPrecision Decorate 29 RelaxedPrecision Decorate 31 RelaxedPrecision Decorate 32 RelaxedPrecision Decorate 33 RelaxedPrecision Decorate 40 RelaxedPrecision Decorate 46 RelaxedPrecision Decorate 51 RelaxedPrecision Decorate 53 RelaxedPrecision Decorate 54 RelaxedPrecision Decorate 55 RelaxedPrecision Decorate 60(local) RelaxedPrecision Decorate 62(c) RelaxedPrecision Decorate 62(c) Flat Decorate 62(c) Location 0 Decorate 63 RelaxedPrecision Decorate 64 RelaxedPrecision Decorate 66 RelaxedPrecision Decorate 67 RelaxedPrecision Decorate 73(f) RelaxedPrecision Decorate 75(x) RelaxedPrecision Decorate 75(x) Location 2 Decorate 76 RelaxedPrecision Decorate 77 RelaxedPrecision Decorate 79 RelaxedPrecision Decorate 80 RelaxedPrecision Decorate 82 RelaxedPrecision Decorate 83 RelaxedPrecision Decorate 85 RelaxedPrecision Decorate 90 RelaxedPrecision Decorate 91 RelaxedPrecision Decorate 92 RelaxedPrecision Decorate 93 RelaxedPrecision Decorate 94 RelaxedPrecision Decorate 95 RelaxedPrecision Decorate 96 RelaxedPrecision Decorate 97 RelaxedPrecision Decorate 99 RelaxedPrecision Decorate 100 RelaxedPrecision Decorate 101 RelaxedPrecision Decorate 102 RelaxedPrecision Decorate 104 RelaxedPrecision Decorate 108 RelaxedPrecision Decorate 109 RelaxedPrecision Decorate 110 RelaxedPrecision Decorate 111 RelaxedPrecision Decorate 113 RelaxedPrecision Decorate 114 RelaxedPrecision Decorate 115 RelaxedPrecision Decorate 116 RelaxedPrecision Decorate 119 RelaxedPrecision Decorate 124 RelaxedPrecision Decorate 125 RelaxedPrecision Decorate 126 RelaxedPrecision Decorate 127 RelaxedPrecision Decorate 129(d) RelaxedPrecision Decorate 129(d) Flat Decorate 129(d) Location 1 Decorate 130 RelaxedPrecision Decorate 134 RelaxedPrecision Decorate 135 RelaxedPrecision Decorate 136 RelaxedPrecision Decorate 137 RelaxedPrecision Decorate 138 RelaxedPrecision Decorate 139 RelaxedPrecision Decorate 140 RelaxedPrecision Decorate 142 RelaxedPrecision Decorate 143 RelaxedPrecision Decorate 144 RelaxedPrecision Decorate 145 RelaxedPrecision Decorate 146 RelaxedPrecision Decorate 150 RelaxedPrecision Decorate 151 RelaxedPrecision Decorate 152 RelaxedPrecision Decorate 153 RelaxedPrecision Decorate 155(i) RelaxedPrecision Decorate 162 RelaxedPrecision Decorate 166 RelaxedPrecision Decorate 171 RelaxedPrecision Decorate 172 RelaxedPrecision Decorate 173 RelaxedPrecision Decorate 174 RelaxedPrecision Decorate 175(j) RelaxedPrecision Decorate 182 RelaxedPrecision Decorate 185 RelaxedPrecision Decorate 186 RelaxedPrecision Decorate 187 RelaxedPrecision Decorate 193 RelaxedPrecision Decorate 194 RelaxedPrecision Decorate 196 RelaxedPrecision Decorate 197 RelaxedPrecision Decorate 198 RelaxedPrecision Decorate 199 RelaxedPrecision Decorate 202 RelaxedPrecision Decorate 203 RelaxedPrecision Decorate 204 RelaxedPrecision Decorate 205 RelaxedPrecision Decorate 207 RelaxedPrecision Decorate 213 RelaxedPrecision Decorate 214 RelaxedPrecision Decorate 215 RelaxedPrecision Decorate 219 RelaxedPrecision Decorate 220 RelaxedPrecision Decorate 221 RelaxedPrecision Decorate 222 RelaxedPrecision Decorate 227(color) RelaxedPrecision Decorate 227(color) Location 0 Decorate 228 RelaxedPrecision Decorate 229 RelaxedPrecision Decorate 230 RelaxedPrecision Decorate 231 RelaxedPrecision Decorate 233(v) RelaxedPrecision Decorate 233(v) Location 3 Decorate 234(param) RelaxedPrecision Decorate 235 RelaxedPrecision Decorate 236(param) RelaxedPrecision Decorate 237 RelaxedPrecision Decorate 238(param) RelaxedPrecision Decorate 239 RelaxedPrecision Decorate 240 RelaxedPrecision Decorate 243 RelaxedPrecision Decorate 244 RelaxedPrecision Decorate 245 RelaxedPrecision Decorate 246(param) RelaxedPrecision Decorate 247 RelaxedPrecision Decorate 248(param) RelaxedPrecision Decorate 249 RelaxedPrecision Decorate 250(param) RelaxedPrecision Decorate 251 RelaxedPrecision Decorate 252 RelaxedPrecision Decorate 254 RelaxedPrecision Decorate 255 RelaxedPrecision Decorate 256 RelaxedPrecision Decorate 257 RelaxedPrecision Decorate 264 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeInt 32 1 10: TypePointer Function 9(int) 11: TypeFunction 7(fvec4) 8(ptr) 8(ptr) 10(ptr) 36: 6(float) Constant 0 37: 7(fvec4) ConstantComposite 36 36 36 36 48: 6(float) Constant 1065353216 49: 7(fvec4) ConstantComposite 48 48 48 48 61: TypePointer Input 9(int) 62(c): 61(ptr) Variable Input 65: 9(int) Constant 1 72: TypePointer Function 6(float) 74: TypePointer Input 6(float) 75(x): 74(ptr) Variable Input 129(d): 61(ptr) Variable Input 156: 9(int) Constant 0 163: 9(int) Constant 10 164: TypeBool 176: 9(int) Constant 20 183: 9(int) Constant 30 188: 6(float) Constant 1120429670 208: 6(float) Constant 1079739679 226: TypePointer Output 6(float) 227(color): 226(ptr) Variable Output 232: TypePointer Input 7(fvec4) 233(v): 232(ptr) Variable Input 241: TypeInt 32 0 242: 241(int) Constant 1 253: 241(int) Constant 2 4(main): 2 Function None 3 5: Label 60(local): 10(ptr) Variable Function 73(f): 72(ptr) Variable Function 155(i): 10(ptr) Variable Function 175(j): 10(ptr) Variable Function 234(param): 8(ptr) Variable Function 236(param): 8(ptr) Variable Function 238(param): 10(ptr) Variable Function 246(param): 8(ptr) Variable Function 248(param): 8(ptr) Variable Function 250(param): 10(ptr) Variable Function 63: 9(int) Load 62(c) Store 60(local) 63 64: 9(int) Load 60(local) 66: 9(int) IAdd 64 65 Store 60(local) 66 67: 9(int) Load 62(c) SelectionMerge 71 None Switch 67 70 case 1: 68 case 2: 69 70: Label 82: 6(float) Load 75(x) 83: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 82 Store 73(f) 83 Branch 71 68: Label 76: 6(float) Load 75(x) 77: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 76 Store 73(f) 77 Branch 71 69: Label 79: 6(float) Load 75(x) 80: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 79 Store 73(f) 80 Branch 71 71: Label 85: 9(int) Load 62(c) SelectionMerge 89 None Switch 85 88 case 1: 86 case 2: 87 88: Label 99: 6(float) Load 75(x) 100: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 99 101: 6(float) Load 73(f) 102: 6(float) FAdd 101 100 Store 73(f) 102 Branch 89 86: Label 90: 6(float) Load 75(x) 91: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 90 92: 6(float) Load 73(f) 93: 6(float) FAdd 92 91 Store 73(f) 93 Branch 87 87: Label 94: 6(float) Load 75(x) 95: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 94 96: 6(float) Load 73(f) 97: 6(float) FAdd 96 95 Store 73(f) 97 Branch 89 89: Label 104: 9(int) Load 62(c) SelectionMerge 107 None Switch 104 107 case 1: 105 case 2: 106 105: Label 108: 6(float) Load 75(x) 109: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 108 110: 6(float) Load 73(f) 111: 6(float) FAdd 110 109 Store 73(f) 111 Branch 107 106: Label 113: 6(float) Load 75(x) 114: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 113 115: 6(float) Load 73(f) 116: 6(float) FAdd 115 114 Store 73(f) 116 Branch 107 107: Label 119: 9(int) Load 62(c) SelectionMerge 123 None Switch 119 122 case 1: 120 case 2: 121 122: Label 150: 6(float) Load 75(x) 151: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 150 152: 6(float) Load 73(f) 153: 6(float) FAdd 152 151 Store 73(f) 153 Branch 123 120: Label 124: 6(float) Load 75(x) 125: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 124 126: 6(float) Load 73(f) 127: 6(float) FAdd 126 125 Store 73(f) 127 Branch 123 121: Label 130: 9(int) Load 129(d) SelectionMerge 133 None Switch 130 133 case 1: 131 case 2: 132 131: Label 134: 6(float) Load 75(x) 135: 6(float) Load 75(x) 136: 6(float) FMul 134 135 137: 6(float) Load 75(x) 138: 6(float) FMul 136 137 139: 6(float) Load 73(f) 140: 6(float) FAdd 139 138 Store 73(f) 140 Branch 133 132: Label 142: 6(float) Load 75(x) 143: 6(float) Load 75(x) 144: 6(float) FMul 142 143 145: 6(float) Load 73(f) 146: 6(float) FAdd 145 144 Store 73(f) 146 Branch 133 133: Label Branch 123 123: Label Store 155(i) 156 Branch 157 157: Label LoopMerge 159 160 None Branch 161 161: Label 162: 9(int) Load 155(i) 165: 164(bool) SLessThan 162 163 BranchConditional 165 158 159 158: Label 166: 9(int) Load 62(c) SelectionMerge 170 None Switch 166 169 case 1: 167 case 2: 168 169: Label 202: 6(float) Load 75(x) 203: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 202 204: 6(float) Load 73(f) 205: 6(float) FAdd 204 203 Store 73(f) 205 Branch 170 167: Label 171: 6(float) Load 75(x) 172: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 171 173: 6(float) Load 73(f) 174: 6(float) FAdd 173 172 Store 73(f) 174 Store 175(j) 176 Branch 177 177: Label LoopMerge 179 180 None Branch 181 181: Label 182: 9(int) Load 175(j) 184: 164(bool) SLessThan 182 183 BranchConditional 184 178 179 178: Label 185: 6(float) Load 73(f) 186: 6(float) FAdd 185 48 Store 73(f) 186 187: 6(float) Load 73(f) 189: 164(bool) FOrdLessThan 187 188 SelectionMerge 191 None BranchConditional 189 190 191 190: Label Branch 179 191: Label Branch 180 180: Label 193: 9(int) Load 175(j) 194: 9(int) IAdd 193 65 Store 175(j) 194 Branch 177 179: Label Branch 170 168: Label 196: 6(float) Load 75(x) 197: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 196 198: 6(float) Load 73(f) 199: 6(float) FAdd 198 197 Store 73(f) 199 Branch 170 170: Label 207: 6(float) Load 73(f) 209: 164(bool) FOrdLessThan 207 208 SelectionMerge 211 None BranchConditional 209 210 211 210: Label Branch 159 211: Label Branch 160 160: Label 213: 9(int) Load 155(i) 214: 9(int) IAdd 213 65 Store 155(i) 214 Branch 157 159: Label 215: 9(int) Load 62(c) SelectionMerge 218 None Switch 215 218 case 1: 216 case 2: 217 216: Label 219: 6(float) Load 75(x) 220: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 219 221: 6(float) Load 73(f) 222: 6(float) FAdd 221 220 Store 73(f) 222 Branch 218 217: Label Branch 218 218: Label 228: 6(float) Load 73(f) 229: 9(int) Load 60(local) 230: 6(float) ConvertSToF 229 231: 6(float) FAdd 228 230 Store 227(color) 231 235: 7(fvec4) Load 233(v) Store 234(param) 235 237: 7(fvec4) Load 233(v) Store 236(param) 237 239: 9(int) Load 62(c) Store 238(param) 239 240: 7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 234(param) 236(param) 238(param) 243: 6(float) CompositeExtract 240 1 244: 6(float) Load 227(color) 245: 6(float) FAdd 244 243 Store 227(color) 245 247: 7(fvec4) Load 233(v) Store 246(param) 247 249: 7(fvec4) Load 233(v) Store 248(param) 249 251: 9(int) Load 62(c) Store 250(param) 251 252: 7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 246(param) 248(param) 250(param) 254: 6(float) CompositeExtract 252 2 255: 6(float) Load 227(color) 256: 6(float) FAdd 255 254 Store 227(color) 256 257: 9(int) Load 62(c) SelectionMerge 260 None Switch 257 259 case 0: 258 259: Label Branch 260 258: Label Branch 260 260: Label 264: 9(int) Load 62(c) SelectionMerge 266 None Switch 264 265 265: Label Branch 266 266: Label Return FunctionEnd 15(foo1(vf4;vf4;i1;): 7(fvec4) Function None 11 12(v1): 8(ptr) FunctionParameter 13(v2): 8(ptr) FunctionParameter 14(i1): 10(ptr) FunctionParameter 16: Label 22: 9(int) Load 14(i1) SelectionMerge 26 None Switch 22 26 case 0: 23 case 2: 24 case 1: 24 case 3: 25 23: Label 27: 7(fvec4) Load 12(v1) ReturnValue 27 24: Label 29: 7(fvec4) Load 13(v2) ReturnValue 29 25: Label 31: 7(fvec4) Load 12(v1) 32: 7(fvec4) Load 13(v2) 33: 7(fvec4) FMul 31 32 ReturnValue 33 26: Label ReturnValue 37 FunctionEnd 20(foo2(vf4;vf4;i1;): 7(fvec4) Function None 11 17(v1): 8(ptr) FunctionParameter 18(v2): 8(ptr) FunctionParameter 19(i1): 10(ptr) FunctionParameter 21: Label 40: 9(int) Load 19(i1) SelectionMerge 45 None Switch 40 45 case 0: 41 case 2: 42 case 1: 43 case 3: 44 41: Label 46: 7(fvec4) Load 17(v1) ReturnValue 46 42: Label ReturnValue 49 43: Label 51: 7(fvec4) Load 18(v2) ReturnValue 51 44: Label 53: 7(fvec4) Load 17(v1) 54: 7(fvec4) Load 18(v2) 55: 7(fvec4) FMul 53 54 ReturnValue 55 45: Label ReturnValue 37 FunctionEnd glslang-16.0.0/Test/baseResults/spv.swizzle.frag.out000066400000000000000000000207551506534232700224450ustar00rootroot00000000000000spv.swizzle.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 117 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 14 30 78 116 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 8 "blendscale" Name 12 "w" Name 14 "u" Name 16 "w_dep" Name 18 "w_reorder" Name 20 "w2" Name 22 "w_flow" Name 30 "t" Name 56 "w_undef" Name 65 "p" Name 78 "gl_FragColor" Name 90 "c" Name 92 "rep" Name 116 "blend" Decorate 14(u) Location 1 Decorate 30(t) Location 2 Decorate 78(gl_FragColor) Location 0 Decorate 116(blend) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: 6(float) Constant 1071971828 10: TypeVector 6(float) 4 11: TypePointer Function 10(fvec4) 13: TypePointer Input 10(fvec4) 14(u): 13(ptr) Variable Input 25: TypeInt 32 0 26: 25(int) Constant 2 28: TypeVector 6(float) 2 29: TypePointer Input 28(fvec2) 30(t): 29(ptr) Variable Input 32: 25(int) Constant 3 35: 25(int) Constant 1 39: 25(int) Constant 0 63: TypeBool 64: TypePointer Private 63(bool) 65(p): 64(ptr) Variable Private 69: TypePointer Input 6(float) 77: TypePointer Output 10(fvec4) 78(gl_FragColor): 77(ptr) Variable Output 89: TypePointer Function 28(fvec2) 93: 6(float) Constant 0 94: 6(float) Constant 1065353216 95: 10(fvec4) ConstantComposite 93 93 93 94 101: 6(float) Constant 3212836864 111: 6(float) Constant 1079613850 116(blend): 69(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(blendscale): 7(ptr) Variable Function 12(w): 11(ptr) Variable Function 16(w_dep): 11(ptr) Variable Function 18(w_reorder): 11(ptr) Variable Function 20(w2): 11(ptr) Variable Function 22(w_flow): 11(ptr) Variable Function 56(w_undef): 11(ptr) Variable Function 90(c): 89(ptr) Variable Function 92(rep): 11(ptr) Variable Function Store 8(blendscale) 9 15: 10(fvec4) Load 14(u) Store 12(w) 15 17: 10(fvec4) Load 14(u) Store 16(w_dep) 17 19: 10(fvec4) Load 14(u) Store 18(w_reorder) 19 21: 10(fvec4) Load 14(u) Store 20(w2) 21 23: 10(fvec4) Load 14(u) Store 22(w_flow) 23 24: 6(float) Load 8(blendscale) 27: 7(ptr) AccessChain 18(w_reorder) 26 Store 27 24 31: 28(fvec2) Load 30(t) 33: 7(ptr) AccessChain 12(w) 32 34: 6(float) CompositeExtract 31 0 Store 33 34 36: 7(ptr) AccessChain 12(w) 35 37: 6(float) CompositeExtract 31 1 Store 36 37 38: 6(float) Load 8(blendscale) 40: 7(ptr) AccessChain 18(w_reorder) 39 Store 40 38 41: 10(fvec4) Load 14(u) 42: 10(fvec4) VectorShuffle 41 41 2 3 0 1 Store 20(w2) 42 43: 6(float) Load 8(blendscale) 44: 7(ptr) AccessChain 18(w_reorder) 35 Store 44 43 45: 10(fvec4) Load 20(w2) 46: 28(fvec2) VectorShuffle 45 45 0 2 47: 7(ptr) AccessChain 16(w_dep) 39 48: 6(float) CompositeExtract 46 0 Store 47 48 49: 7(ptr) AccessChain 16(w_dep) 35 50: 6(float) CompositeExtract 46 1 Store 49 50 51: 28(fvec2) Load 30(t) 52: 7(ptr) AccessChain 16(w_dep) 26 53: 6(float) CompositeExtract 51 0 Store 52 53 54: 7(ptr) AccessChain 16(w_dep) 32 55: 6(float) CompositeExtract 51 1 Store 54 55 57: 10(fvec4) Load 14(u) 58: 28(fvec2) VectorShuffle 57 57 2 3 59: 7(ptr) AccessChain 56(w_undef) 39 60: 6(float) CompositeExtract 58 0 Store 59 60 61: 7(ptr) AccessChain 56(w_undef) 35 62: 6(float) CompositeExtract 58 1 Store 61 62 66: 63(bool) Load 65(p) SelectionMerge 68 None BranchConditional 66 67 73 67: Label 70: 69(ptr) AccessChain 30(t) 39 71: 6(float) Load 70 72: 7(ptr) AccessChain 22(w_flow) 39 Store 72 71 Branch 68 73: Label 74: 69(ptr) AccessChain 30(t) 35 75: 6(float) Load 74 76: 7(ptr) AccessChain 22(w_flow) 39 Store 76 75 Branch 68 68: Label 79: 10(fvec4) Load 18(w_reorder) 80: 10(fvec4) Load 56(w_undef) 81: 10(fvec4) Load 12(w) 82: 10(fvec4) Load 20(w2) 83: 10(fvec4) FMul 81 82 84: 10(fvec4) Load 16(w_dep) 85: 10(fvec4) FMul 83 84 86: 10(fvec4) Load 22(w_flow) 87: 10(fvec4) FMul 85 86 88: 10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 79 80 87 Store 78(gl_FragColor) 88 91: 28(fvec2) Load 30(t) Store 90(c) 91 Store 92(rep) 95 96: 7(ptr) AccessChain 90(c) 39 97: 6(float) Load 96 98: 63(bool) FOrdLessThan 97 93 SelectionMerge 100 None BranchConditional 98 99 100 99: Label 102: 7(ptr) AccessChain 90(c) 39 103: 6(float) Load 102 104: 6(float) FMul 103 101 105: 7(ptr) AccessChain 90(c) 39 Store 105 104 Branch 100 100: Label 106: 7(ptr) AccessChain 90(c) 39 107: 6(float) Load 106 108: 63(bool) FOrdLessThanEqual 107 94 SelectionMerge 110 None BranchConditional 108 109 110 109: Label 112: 7(ptr) AccessChain 92(rep) 39 Store 112 111 Branch 110 110: Label 113: 10(fvec4) Load 92(rep) 114: 10(fvec4) Load 78(gl_FragColor) 115: 10(fvec4) FAdd 114 113 Store 78(gl_FragColor) 115 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.swizzleInversion.frag.out000066400000000000000000000075701506534232700243420ustar00rootroot00000000000000spv.swizzleInversion.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader Capability InterpolationFunction 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 12 37 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "v43" Name 12 "in4" Name 17 "v42" Name 23 "v44" Name 29 "v41" Name 35 "v33" Name 37 "in3" Name 40 "v32" Name 43 "v31" Decorate 12(in4) Location 0 Decorate 37(in3) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypePointer Function 7(fvec3) 10: TypeVector 6(float) 4 11: TypePointer Input 10(fvec4) 12(in4): 11(ptr) Variable Input 15: TypeVector 6(float) 2 16: TypePointer Function 15(fvec2) 18: TypeInt 32 1 19: 18(int) Constant 1 22: TypePointer Function 10(fvec4) 24: 6(float) Constant 1073741824 25: 15(fvec2) ConstantComposite 24 24 28: TypePointer Function 6(float) 30: TypeInt 32 0 31: 30(int) Constant 1 32: TypePointer Input 6(float) 36: TypePointer Input 7(fvec3) 37(in3): 36(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(v43): 8(ptr) Variable Function 17(v42): 16(ptr) Variable Function 23(v44): 22(ptr) Variable Function 29(v41): 28(ptr) Variable Function 35(v33): 8(ptr) Variable Function 40(v32): 16(ptr) Variable Function 43(v31): 28(ptr) Variable Function 13: 10(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 12(in4) 14: 7(fvec3) VectorShuffle 13 13 3 2 0 Store 9(v43) 14 20: 10(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 12(in4) 19 21: 15(fvec2) VectorShuffle 20 20 2 0 Store 17(v42) 21 26: 10(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 12(in4) 25 27: 10(fvec4) VectorShuffle 26 26 2 1 0 3 Store 23(v44) 27 33: 32(ptr) AccessChain 12(in4) 31 34: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 33 25 Store 29(v41) 34 38: 7(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 37(in3) 39: 7(fvec3) VectorShuffle 38 38 1 2 0 Store 35(v33) 39 41: 7(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 37(in3) 19 42: 15(fvec2) VectorShuffle 41 41 2 0 Store 40(v32) 42 44: 32(ptr) AccessChain 12(in4) 31 45: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 44 25 Store 43(v31) 45 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tensorARM.access_qualifiers.comp.out000066400000000000000000000010211506534232700262740ustar00rootroot00000000000000spv.tensorARM.access_qualifiers.comp ERROR: 0:25: 'readonly' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:26: 'readonly' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:33: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:34: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.tensorARM.all_accesses.comp.out000066400000000000000000000374451506534232700252530ustar00rootroot00000000000000spv.tensorARM.all_accesses.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 199 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability TensorsARM Extension "SPV_ARM_tensors" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_ARM_tensors" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 4 "main" Name 10 "coords" Name 15 "iw8" Name 19 "iw16" Name 23 "iw" Name 27 "iw64" Name 31 "it8" Name 37 "it16" Name 43 "it32" Name 49 "it64" Name 56 "iwv" Name 63 "ir8" Name 67 "ir16" Name 71 "ir" Name 75 "ir64" Name 79 "irv" Name 83 "uw8" Name 87 "uw16" Name 90 "uw" Name 93 "uw64" Name 97 "ut8" Name 103 "ut16" Name 109 "ut32" Name 115 "ut64" Name 121 "uwv" Name 128 "ur8" Name 132 "ur16" Name 136 "ur" Name 140 "ur64" Name 144 "urv" Name 148 "fw" Name 152 "fw16" Name 156 "fw64" Name 160 "ft16" Name 166 "ft32" Name 172 "ft64" Name 178 "fwv" Name 185 "fr16" Name 189 "fr" Name 193 "fr64" Name 197 "frv" Decorate 31(it8) Binding 0 Decorate 31(it8) DescriptorSet 0 Decorate 37(it16) Binding 1 Decorate 37(it16) DescriptorSet 0 Decorate 43(it32) Binding 2 Decorate 43(it32) DescriptorSet 0 Decorate 49(it64) Binding 3 Decorate 49(it64) DescriptorSet 0 Decorate 97(ut8) Binding 4 Decorate 97(ut8) DescriptorSet 0 Decorate 103(ut16) Binding 5 Decorate 103(ut16) DescriptorSet 0 Decorate 109(ut32) Binding 6 Decorate 109(ut32) DescriptorSet 0 Decorate 115(ut64) Binding 7 Decorate 115(ut64) DescriptorSet 0 Decorate 160(ft16) Binding 8 Decorate 160(ft16) DescriptorSet 0 Decorate 166(ft32) Binding 9 Decorate 166(ft32) DescriptorSet 0 Decorate 172(ft64) Binding 10 Decorate 172(ft64) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: 6(int) Constant 1 8: TypeArray 6(int) 7 9: TypePointer Function 8 11: 6(int) Constant 0 12: 8 ConstantComposite 11 13: TypeInt 8 1 14: TypePointer Function 13(int8_t) 16: 13(int8_t) Constant 1 17: TypeInt 16 1 18: TypePointer Function 17(int16_t) 20: 17(int16_t) Constant 1 21: TypeInt 32 1 22: TypePointer Function 21(int) 24: 21(int) Constant 1 25: TypeInt 64 1 26: TypePointer Function 25(int64_t) 28: 25(int64_t) Constant 1 0 29: TypeTensorARM 13(int8_t) 7 30: TypePointer UniformConstant 29 31(it8): 30(ptr) Variable UniformConstant 35: TypeTensorARM 17(int16_t) 7 36: TypePointer UniformConstant 35 37(it16): 36(ptr) Variable UniformConstant 41: TypeTensorARM 21(int) 7 42: TypePointer UniformConstant 41 43(it32): 42(ptr) Variable UniformConstant 47: TypeTensorARM 25(int64_t) 7 48: TypePointer UniformConstant 47 49(it64): 48(ptr) Variable UniformConstant 53: 6(int) Constant 4 54: TypeArray 21(int) 53 55: TypePointer Function 54 57: 54 ConstantComposite 24 24 24 24 81: TypeInt 8 0 82: TypePointer Function 81(int8_t) 84: 81(int8_t) Constant 1 85: TypeInt 16 0 86: TypePointer Function 85(int16_t) 88: 85(int16_t) Constant 1 89: TypePointer Function 6(int) 91: TypeInt 64 0 92: TypePointer Function 91(int64_t) 94: 91(int64_t) Constant 1 0 95: TypeTensorARM 81(int8_t) 7 96: TypePointer UniformConstant 95 97(ut8): 96(ptr) Variable UniformConstant 101: TypeTensorARM 85(int16_t) 7 102: TypePointer UniformConstant 101 103(ut16): 102(ptr) Variable UniformConstant 107: TypeTensorARM 6(int) 7 108: TypePointer UniformConstant 107 109(ut32): 108(ptr) Variable UniformConstant 113: TypeTensorARM 91(int64_t) 7 114: TypePointer UniformConstant 113 115(ut64): 114(ptr) Variable UniformConstant 119: TypeArray 6(int) 53 120: TypePointer Function 119 122: 119 ConstantComposite 7 7 7 7 146: TypeFloat 32 147: TypePointer Function 146(float) 149: 146(float) Constant 1065353216 150: TypeFloat 16 151: TypePointer Function 150(float16_t) 153:150(float16_t) Constant 15360 154: TypeFloat 64 155: TypePointer Function 154(float64_t) 157:154(float64_t) Constant 0 1072693248 158: TypeTensorARM 150(float16_t) 7 159: TypePointer UniformConstant 158 160(ft16): 159(ptr) Variable UniformConstant 164: TypeTensorARM 146(float) 7 165: TypePointer UniformConstant 164 166(ft32): 165(ptr) Variable UniformConstant 170: TypeTensorARM 154(float64_t) 7 171: TypePointer UniformConstant 170 172(ft64): 171(ptr) Variable UniformConstant 176: TypeArray 146(float) 53 177: TypePointer Function 176 179: 176 ConstantComposite 149 149 149 149 4(main): 2 Function None 3 5: Label 10(coords): 9(ptr) Variable Function 15(iw8): 14(ptr) Variable Function 19(iw16): 18(ptr) Variable Function 23(iw): 22(ptr) Variable Function 27(iw64): 26(ptr) Variable Function 56(iwv): 55(ptr) Variable Function 63(ir8): 14(ptr) Variable Function 67(ir16): 18(ptr) Variable Function 71(ir): 22(ptr) Variable Function 75(ir64): 26(ptr) Variable Function 79(irv): 55(ptr) Variable Function 83(uw8): 82(ptr) Variable Function 87(uw16): 86(ptr) Variable Function 90(uw): 89(ptr) Variable Function 93(uw64): 92(ptr) Variable Function 121(uwv): 120(ptr) Variable Function 128(ur8): 82(ptr) Variable Function 132(ur16): 86(ptr) Variable Function 136(ur): 89(ptr) Variable Function 140(ur64): 92(ptr) Variable Function 144(urv): 120(ptr) Variable Function 148(fw): 147(ptr) Variable Function 152(fw16): 151(ptr) Variable Function 156(fw64): 155(ptr) Variable Function 178(fwv): 177(ptr) Variable Function 185(fr16): 151(ptr) Variable Function 189(fr): 147(ptr) Variable Function 193(fr64): 155(ptr) Variable Function 197(frv): 177(ptr) Variable Function Store 10(coords) 12 Store 15(iw8) 16 Store 19(iw16) 20 Store 23(iw) 24 Store 27(iw64) 28 32: 29 Load 31(it8) 33: 8 Load 10(coords) 34: 13(int8_t) Load 15(iw8) TensorWriteARM 32 33 34 38: 35 Load 37(it16) 39: 8 Load 10(coords) 40: 17(int16_t) Load 19(iw16) TensorWriteARM 38 39 40 44: 41 Load 43(it32) 45: 8 Load 10(coords) 46: 21(int) Load 23(iw) TensorWriteARM 44 45 46 50: 47 Load 49(it64) 51: 8 Load 10(coords) 52: 25(int64_t) Load 27(iw64) TensorWriteARM 50 51 52 Store 56(iwv) 57 58: 41 Load 43(it32) 59: 8 Load 10(coords) 60: 54 Load 56(iwv) TensorWriteARM 58 59 60 61: 29 Load 31(it8) 62: 8 Load 10(coords) 64: 13(int8_t) TensorReadARM 61 62 Store 63(ir8) 64 65: 35 Load 37(it16) 66: 8 Load 10(coords) 68: 17(int16_t) TensorReadARM 65 66 Store 67(ir16) 68 69: 41 Load 43(it32) 70: 8 Load 10(coords) 72: 21(int) TensorReadARM 69 70 Store 71(ir) 72 73: 47 Load 49(it64) 74: 8 Load 10(coords) 76: 25(int64_t) TensorReadARM 73 74 Store 75(ir64) 76 77: 41 Load 43(it32) 78: 8 Load 10(coords) 80: 54 TensorReadARM 77 78 Store 79(irv) 80 Store 83(uw8) 84 Store 87(uw16) 88 Store 90(uw) 7 Store 93(uw64) 94 98: 95 Load 97(ut8) 99: 8 Load 10(coords) 100: 81(int8_t) Load 83(uw8) TensorWriteARM 98 99 100 104: 101 Load 103(ut16) 105: 8 Load 10(coords) 106: 85(int16_t) Load 87(uw16) TensorWriteARM 104 105 106 110: 107 Load 109(ut32) 111: 8 Load 10(coords) 112: 6(int) Load 90(uw) TensorWriteARM 110 111 112 116: 113 Load 115(ut64) 117: 8 Load 10(coords) 118: 91(int64_t) Load 93(uw64) TensorWriteARM 116 117 118 Store 121(uwv) 122 123: 107 Load 109(ut32) 124: 8 Load 10(coords) 125: 119 Load 121(uwv) TensorWriteARM 123 124 125 126: 95 Load 97(ut8) 127: 8 Load 10(coords) 129: 81(int8_t) TensorReadARM 126 127 Store 128(ur8) 129 130: 101 Load 103(ut16) 131: 8 Load 10(coords) 133: 85(int16_t) TensorReadARM 130 131 Store 132(ur16) 133 134: 107 Load 109(ut32) 135: 8 Load 10(coords) 137: 6(int) TensorReadARM 134 135 Store 136(ur) 137 138: 113 Load 115(ut64) 139: 8 Load 10(coords) 141: 91(int64_t) TensorReadARM 138 139 Store 140(ur64) 141 142: 107 Load 109(ut32) 143: 8 Load 10(coords) 145: 119 TensorReadARM 142 143 Store 144(urv) 145 Store 148(fw) 149 Store 152(fw16) 153 Store 156(fw64) 157 161: 158 Load 160(ft16) 162: 8 Load 10(coords) 163:150(float16_t) Load 152(fw16) TensorWriteARM 161 162 163 167: 164 Load 166(ft32) 168: 8 Load 10(coords) 169: 146(float) Load 148(fw) TensorWriteARM 167 168 169 173: 170 Load 172(ft64) 174: 8 Load 10(coords) 175:154(float64_t) Load 156(fw64) TensorWriteARM 173 174 175 Store 178(fwv) 179 180: 164 Load 166(ft32) 181: 8 Load 10(coords) 182: 176 Load 178(fwv) TensorWriteARM 180 181 182 183: 158 Load 160(ft16) 184: 8 Load 10(coords) 186:150(float16_t) TensorReadARM 183 184 Store 185(fr16) 186 187: 164 Load 166(ft32) 188: 8 Load 10(coords) 190: 146(float) TensorReadARM 187 188 Store 189(fr) 190 191: 170 Load 172(ft64) 192: 8 Load 10(coords) 194:154(float64_t) TensorReadARM 191 192 Store 193(fr64) 194 195: 164 Load 166(ft32) 196: 8 Load 10(coords) 198: 176 TensorReadARM 195 196 Store 197(frv) 198 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tensorARM.array.comp.out000066400000000000000000000041651506534232700237410ustar00rootroot00000000000000spv.tensorARM.array.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader Capability TensorsARM Extension "SPV_ARM_tensors" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_ARM_tensors" Name 4 "main" Name 8 "x" Name 14 "ta" Decorate 14(ta) Binding 0 Decorate 14(ta) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeInt 32 1 10: 6(int) Constant 2 11: TypeTensorARM 9(int) 10 12: TypeArray 11 10 13: TypePointer UniformConstant 12 14(ta): 13(ptr) Variable UniformConstant 15: 9(int) Constant 0 16: TypePointer UniformConstant 11 19: 6(int) Constant 0 21: 9(int) Constant 1 24: 6(int) Constant 1 4(main): 2 Function None 3 5: Label 8(x): 7(ptr) Variable Function 17: 16(ptr) AccessChain 14(ta) 15 18: 11 Load 17 20: 6(int) TensorQuerySizeARM 18 19 22: 16(ptr) AccessChain 14(ta) 21 23: 11 Load 22 25: 6(int) TensorQuerySizeARM 23 24 26: 6(int) IAdd 20 25 Store 8(x) 26 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tensorARM.declare.comp.out000066400000000000000000000116451506534232700242230ustar00rootroot00000000000000spv.tensorARM.declare.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader Capability TensorsARM Extension "SPV_ARM_tensors" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_ARM_tensors" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 4 "main" Name 11 "tb" Name 17 "b" Name 23 "barr" Name 28 "t" Name 33 "i32" Name 42 "vec" Name 48 "vecthree" Name 55 "vecfour" Decorate 11(tb) Binding 1 Decorate 11(tb) DescriptorSet 0 Decorate 28(t) Binding 0 Decorate 28(t) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypeInt 32 0 8: 7(int) Constant 2 9: TypeTensorARM 6(bool) 8 10: TypePointer UniformConstant 9 11(tb): 10(ptr) Variable UniformConstant 13: TypeArray 7(int) 8 14: 7(int) Constant 0 15: 13 ConstantComposite 14 14 16: TypePointer Function 6(bool) 20: 7(int) Constant 4 21: TypeArray 6(bool) 20 22: TypePointer Function 21 25: TypeInt 32 1 26: TypeTensorARM 25(int) 20 27: TypePointer UniformConstant 26 28(t): 27(ptr) Variable UniformConstant 30: TypeArray 7(int) 20 31: 30 ConstantComposite 14 14 14 14 32: TypePointer Function 25(int) 34: 25(int) Constant 33 37: 7(int) Constant 1 38: 7(int) Constant 3 39: 30 ConstantComposite 37 8 38 20 40: TypeArray 25(int) 8 41: TypePointer Function 40 45: 30 ConstantComposite 38 8 37 14 46: TypeArray 25(int) 38 47: TypePointer Function 46 51: 7(int) Constant 99 52: 30 ConstantComposite 51 51 51 51 53: TypeArray 25(int) 20 54: TypePointer Function 53 62: 30 ConstantComposite 20 38 8 37 4(main): 2 Function None 3 5: Label 17(b): 16(ptr) Variable Function 23(barr): 22(ptr) Variable Function 33(i32): 32(ptr) Variable Function 42(vec): 41(ptr) Variable Function 48(vecthree): 47(ptr) Variable Function 55(vecfour): 54(ptr) Variable Function 12: 9 Load 11(tb) 18: 6(bool) TensorReadARM 12 15 Store 17(b) 18 19: 9 Load 11(tb) 24: 21 TensorReadARM 19 15 Store 23(barr) 24 29: 26 Load 28(t) 35: 25(int) TensorReadARM 29 31 2 34 Store 33(i32) 35 36: 26 Load 28(t) 43: 40 TensorReadARM 36 39 Store 42(vec) 43 44: 26 Load 28(t) 49: 46 TensorReadARM 44 45 Store 48(vecthree) 49 50: 26 Load 28(t) 56: 53 TensorReadARM 50 52 Store 55(vecfour) 56 57: 9 Load 11(tb) 58: 6(bool) Load 17(b) TensorWriteARM 57 15 58 59: 9 Load 11(tb) 60: 21 Load 23(barr) TensorWriteARM 59 15 60 61: 26 Load 28(t) 63: 25(int) Load 33(i32) TensorWriteARM 61 62 63 64: 26 Load 28(t) 65: 40 Load 42(vec) TensorWriteARM 64 31 65 1 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tensorARM.frag.out000066400000000000000000000105531506534232700226030ustar00rootroot00000000000000spv.tensorARM.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 55 Capability Shader Capability Int8 Capability TensorsARM Extension "SPV_ARM_tensors" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 25 49 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARM_tensors" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 4 "main" Name 8 "size_d1" Name 13 "tens" Name 17 "size_d2" Name 21 "coord_x" Name 25 "gl_FragCoord" Name 33 "coord_y" Name 40 "tensorValue" Name 49 "outColor" Decorate 13(tens) Binding 0 Decorate 13(tens) DescriptorSet 0 Decorate 25(gl_FragCoord) BuiltIn FragCoord Decorate 49(outColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypeInt 8 0 10: 6(int) Constant 3 11: TypeTensorARM 9(int8_t) 10 12: TypePointer UniformConstant 11 13(tens): 12(ptr) Variable UniformConstant 15: 6(int) Constant 1 19: 6(int) Constant 2 22: TypeFloat 32 23: TypeVector 22(float) 4 24: TypePointer Input 23(fvec4) 25(gl_FragCoord): 24(ptr) Variable Input 26: 6(int) Constant 0 27: TypePointer Input 22(float) 39: TypePointer Function 9(int8_t) 41: 9(int8_t) Constant 0 45: TypeArray 6(int) 10 48: TypePointer Output 23(fvec4) 49(outColor): 48(ptr) Variable Output 50: 22(float) Constant 0 53: 22(float) Constant 1132396544 4(main): 2 Function None 3 5: Label 8(size_d1): 7(ptr) Variable Function 17(size_d2): 7(ptr) Variable Function 21(coord_x): 7(ptr) Variable Function 33(coord_y): 7(ptr) Variable Function 40(tensorValue): 39(ptr) Variable Function 14: 11 Load 13(tens) 16: 6(int) TensorQuerySizeARM 14 15 Store 8(size_d1) 16 18: 11 Load 13(tens) 20: 6(int) TensorQuerySizeARM 18 19 Store 17(size_d2) 20 28: 27(ptr) AccessChain 25(gl_FragCoord) 26 29: 22(float) Load 28 30: 6(int) ConvertFToU 29 31: 6(int) Load 8(size_d1) 32: 6(int) UMod 30 31 Store 21(coord_x) 32 34: 27(ptr) AccessChain 25(gl_FragCoord) 15 35: 22(float) Load 34 36: 6(int) ConvertFToU 35 37: 6(int) Load 17(size_d2) 38: 6(int) UMod 36 37 Store 33(coord_y) 38 Store 40(tensorValue) 41 42: 11 Load 13(tens) 43: 6(int) Load 33(coord_y) 44: 6(int) Load 21(coord_x) 46: 45 CompositeConstruct 43 44 15 47: 9(int8_t) TensorReadARM 42 46 Store 40(tensorValue) 47 51: 9(int8_t) Load 40(tensorValue) 52: 22(float) ConvertUToF 51 54: 23(fvec4) CompositeConstruct 50 52 50 53 Store 49(outColor) 54 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tensorARM.invalid_access.comp.out000066400000000000000000000023321506534232700255640ustar00rootroot00000000000000spv.tensorARM.invalid_access.comp ERROR: 0:11: 'coord' : number of coordinates does not match tensor rank ERROR: 0:12: 'coord' : number of coordinates does not match tensor rank ERROR: 0:12: 'data' : data argument type (float) does not match tensor element type (int) ERROR: 0:14: 'coord' : number of coordinates does not match tensor rank ERROR: 0:15: 'coord' : number of coordinates does not match tensor rank ERROR: 0:15: 'data' : data argument type (float) does not match tensor element type (int) ERROR: 0:19: 'data' : data argument type (uint) does not match tensor element type (int) ERROR: 0:20: 'data' : data argument type (uint) does not match tensor element type (int) ERROR: 0:23: 'tensorOps' : out-of-bounds value is only valid with tensorReadARM ERROR: 0:26: 'tensorOps' : expecting out-of-bounds value as next argument ERROR: 0:28: 'vararg' : argument following gl_TensorOperandsOutOfBoundsValueARM must be constant ERROR: 0:30: 'vararg' : out-of-bounds value type (float) does not match tensor element type (int) ERROR: 0:32: 'vararg' : out-of-bounds value type (uint) does not match tensor element type (int) ERROR: 13 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.tensorARM.invalid_declare.comp.out000066400000000000000000000034121506534232700257220ustar00rootroot00000000000000spv.tensorARM.invalid_declare.comp ERROR: 0:5: '' : tensor type is missing type parameters ERROR: 0:5: 'noparams' : expected two type parameters ERROR: 0:5: 'tensorARM' : tensorARM types can only be used in uniform variables or function parameters: noparams ERROR: 0:6: '' : tensor rank must be greater than or equal to 1 ERROR: 0:6: 'zero' : unexpected type parameters ERROR: 0:7: '' : type parameter must be a non-negative integer ERROR: 0:7: '' : tensor rank must be greater than or equal to 1 ERROR: 0:7: 'tensorARM' : tensorARM types can only be used in uniform variables or function parameters: minus_one ERROR: 0:8: '' : tensor type requires exactly 1 rank specifier ERROR: 0:8: 'too_many' : expected two type parameters ERROR: 0:8: 'tensorARM' : tensorARM types can only be used in uniform variables or function parameters: too_many ERROR: 0:9: 'bad_type' : expected bool, integer or floating point type parameter ERROR: 0:9: 'bad_type' : illegal use of type 'void' ERROR: 0:12: '' : tensor type is missing type parameters ERROR: 0:12: 'noparams2' : expected two type parameters ERROR: 0:13: '' : tensor rank must be greater than or equal to 1 ERROR: 0:13: 'zero2' : unexpected type parameters ERROR: 0:13: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan ERROR: 0:14: '' : type parameter must be a non-negative integer ERROR: 0:14: '' : tensor rank must be greater than or equal to 1 ERROR: 0:15: '' : tensor type requires exactly 1 rank specifier ERROR: 0:15: 'too_many2' : expected two type parameters ERROR: 0:16: 'bad_type2' : expected bool, integer or floating point type parameter ERROR: 0:16: 'bad_type2' : illegal use of type 'void' ERROR: 24 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.tensorARM.invalid_operands.comp.out000066400000000000000000000003461506534232700261410ustar00rootroot00000000000000spv.tensorARM.invalid_operands.comp ERROR: 0:11: 'tensorOps' : tensor operands argument must be a constant integral expression ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.tensorARM.invalid_params.comp.out000066400000000000000000000010761506534232700256120ustar00rootroot00000000000000spv.tensorARM.invalid_params.comp ERROR: 0:12: '' : tensor type is missing type parameters ERROR: 0:16: '' : tensor type is missing type parameters ERROR: 0:20: '' : tensor type requires exactly 1 rank specifier ERROR: 0:21: 'dim' : dimension argument exceeds tensor rank ERROR: 0:29: 'partiallySpecialized' : no matching overloaded function found ERROR: 0:29: 'assign' : cannot convert from ' const float' to 'layout( column_major std430 offset=0) temp highp uint' ERROR: 6 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.tensorARM.invalid_size.comp.out000066400000000000000000000003751506534232700253020ustar00rootroot00000000000000spv.tensorARM.invalid_size.comp ERROR: 0:10: 'dim' : dimension argument exceeds tensor rank ERROR: 0:11: 'dim' : dimension argument must be constant ERROR: 2 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.tensorARM.invalid_tensor_type.comp.out000066400000000000000000000004621506534232700267000ustar00rootroot00000000000000spv.tensorARM.invalid_tensor_type.comp ERROR: 0:6: '' : syntax error, unexpected RIGHT_ANGLE, expecting LEFT_PAREN ERROR: 1 compilation errors. No code generated. ERROR: Linking compute stage: Missing entry point: Each stage requires one entry point SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.tensorARM.params.comp.out000066400000000000000000000102431506534232700241000ustar00rootroot00000000000000spv.tensorARM.params.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader Capability TensorsARM Extension "SPV_ARM_tensors" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_ARM_tensors" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 4 "main" Name 14 "unusedTensorParams(Ti1<4>;Ti1<4>;" Name 12 "" Name 13 "" Name 18 "tensorParam(Ti1<4>;" Name 17 "t" Name 21 "qualifiedTensorParam(Ti1<4>;" Name 20 "t" Name 33 "tu" Name 36 "buff" MemberName 36(buff) 0 "out_data" Name 38 "" Decorate 13 NonWritable Decorate 20(t) NonWritable Decorate 33(tu) Binding 0 Decorate 33(tu) DescriptorSet 0 Decorate 35 ArrayStride 4 Decorate 36(buff) Block MemberDecorate 36(buff) 0 Offset 0 Decorate 38 Binding 1 Decorate 38 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 4 9: TypeTensorARM 6(int) 8 10: TypePointer UniformConstant 9 11: TypeFunction 2 10(ptr) 10(ptr) 16: TypeFunction 7(int) 10(ptr) 25: 7(int) Constant 0 33(tu): 10(ptr) Variable UniformConstant 35: TypeRuntimeArray 7(int) 36(buff): TypeStruct 35 37: TypePointer StorageBuffer 36(buff) 38: 37(ptr) Variable StorageBuffer 39: 6(int) Constant 0 43: TypePointer StorageBuffer 7(int) 4(main): 2 Function None 3 5: Label 34: 2 FunctionCall 14(unusedTensorParams(Ti1<4>;Ti1<4>;) 33(tu) 33(tu) 40: 7(int) FunctionCall 18(tensorParam(Ti1<4>;) 33(tu) 41: 7(int) FunctionCall 21(qualifiedTensorParam(Ti1<4>;) 33(tu) 42: 7(int) IAdd 40 41 44: 43(ptr) AccessChain 38 39 39 Store 44 42 Return FunctionEnd 14(unusedTensorParams(Ti1<4>;Ti1<4>;): 2 Function None 11 12: 10(ptr) FunctionParameter 13: 10(ptr) FunctionParameter 15: Label Return FunctionEnd 18(tensorParam(Ti1<4>;): 7(int) Function None 16 17(t): 10(ptr) FunctionParameter 19: Label 24: 9 Load 17(t) 26: 7(int) TensorQuerySizeARM 24 25 ReturnValue 26 FunctionEnd 21(qualifiedTensorParam(Ti1<4>;): 7(int) Function None 16 20(t): 10(ptr) FunctionParameter 22: Label 29: 9 Load 20(t) 30: 7(int) TensorQuerySizeARM 29 25 ReturnValue 30 FunctionEnd glslang-16.0.0/Test/baseResults/spv.tensorARM.read.comp.out000066400000000000000000000066031506534232700235350ustar00rootroot00000000000000spv.tensorARM.read.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader Capability TensorsARM Extension "SPV_ARM_tensors" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_ARM_tensors" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 4 "main" Name 11 "t" Name 19 "one" Name 25 "two" Name 30 "buff" MemberName 30(buff) 0 "out_data" Name 32 "" Decorate 11(t) Binding 0 Decorate 11(t) DescriptorSet 0 Decorate 29 ArrayStride 4 Decorate 30(buff) Block MemberDecorate 30(buff) 0 Offset 0 Decorate 32 Binding 1 Decorate 32 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 4 9: TypeTensorARM 6(int) 8 10: TypePointer UniformConstant 9 11(t): 10(ptr) Variable UniformConstant 13: TypeArray 7(int) 8 14: 7(int) Constant 1 15: 7(int) Constant 2 16: 7(int) Constant 3 17: 13 ConstantComposite 14 15 16 8 18: TypePointer Function 6(int) 20: 6(int) Constant 11 23: TypeArray 6(int) 15 24: TypePointer Function 23 26: 7(int) Constant 0 29: TypeRuntimeArray 6(int) 30(buff): TypeStruct 29 31: TypePointer StorageBuffer 30(buff) 32: 31(ptr) Variable StorageBuffer 33: 6(int) Constant 0 34: 6(int) Constant 1 35: TypePointer StorageBuffer 6(int) 4(main): 2 Function None 3 5: Label 19(one): 18(ptr) Variable Function 25(two): 24(ptr) Variable Function 12: 9 Load 11(t) 21: 6(int) TensorReadARM 12 17 2 20 Store 19(one) 21 22: 9 Load 11(t) 27: 23 TensorReadARM 22 17 Store 25(two) 27 28: 9 Load 11(t) 36: 35(ptr) AccessChain 32 33 34 37: 6(int) TensorReadARM 28 17 Store 36 37 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tensorARM.size.comp.out000066400000000000000000000064371506534232700236010ustar00rootroot00000000000000spv.tensorARM.size.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 41 Capability Shader Capability TensorsARM Extension "SPV_ARM_tensors" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 460 SourceExtension "GL_ARM_tensors" Name 4 "main" Name 8 "x" Name 14 "rank1" Name 23 "rank2" Name 35 "rank4" Decorate 14(rank1) Binding 0 Decorate 14(rank1) DescriptorSet 0 Decorate 23(rank2) Binding 1 Decorate 23(rank2) DescriptorSet 0 Decorate 35(rank4) Binding 2 Decorate 35(rank4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Private 6(int) 8(x): 7(ptr) Variable Private 9: 6(int) Constant 0 10: TypeInt 32 1 11: 6(int) Constant 1 12: TypeTensorARM 10(int) 11 13: TypePointer UniformConstant 12 14(rank1): 13(ptr) Variable UniformConstant 19: TypeFloat 32 20: 6(int) Constant 2 21: TypeTensorARM 19(float) 20 22: TypePointer UniformConstant 21 23(rank2): 22(ptr) Variable UniformConstant 32: 6(int) Constant 4 33: TypeTensorARM 6(int) 32 34: TypePointer UniformConstant 33 35(rank4): 34(ptr) Variable UniformConstant 37: 6(int) Constant 3 4(main): 2 Function None 3 5: Label Store 8(x) 9 15: 12 Load 14(rank1) 16: 6(int) TensorQuerySizeARM 15 9 17: 6(int) Load 8(x) 18: 6(int) IAdd 17 16 Store 8(x) 18 24: 21 Load 23(rank2) 25: 6(int) TensorQuerySizeARM 24 9 26: 6(int) Load 8(x) 27: 6(int) IAdd 26 25 Store 8(x) 27 28: 21 Load 23(rank2) 29: 6(int) TensorQuerySizeARM 28 11 30: 6(int) Load 8(x) 31: 6(int) IAdd 30 29 Store 8(x) 31 36: 33 Load 35(rank4) 38: 6(int) TensorQuerySizeARM 36 37 39: 6(int) Load 8(x) 40: 6(int) IAdd 39 38 Store 8(x) 40 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.terminate.frag.out000066400000000000000000000015731506534232700227230ustar00rootroot00000000000000spv.terminate.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 7 Capability Shader Extension "SPV_KHR_terminate_invocation" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 400 SourceExtension "GL_EXT_terminate_invocation" Name 4 "main" 2: TypeVoid 3: TypeFunction 2 4(main): 2 Function None 3 5: Label TerminateInvocation FunctionEnd glslang-16.0.0/Test/baseResults/spv.test.frag.out000066400000000000000000000110301506534232700216770ustar00rootroot00000000000000spv.test.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 55 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 20 22 37 43 46 49 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 8 "blendscale" Name 12 "v" Name 16 "texSampler2D" Name 20 "t" Name 22 "scale" Name 29 "w" Name 33 "texSampler3D" Name 37 "coords" Name 43 "gl_FragColor" Name 46 "u" Name 49 "blend" Decorate 16(texSampler2D) Binding 0 Decorate 16(texSampler2D) DescriptorSet 0 Decorate 20(t) Location 3 Decorate 22(scale) Location 1 Decorate 33(texSampler3D) Binding 1 Decorate 33(texSampler3D) DescriptorSet 0 Decorate 37(coords) Location 4 Decorate 43(gl_FragColor) Location 0 Decorate 46(u) Location 2 Decorate 49(blend) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: 6(float) Constant 1071971828 10: TypeVector 6(float) 4 11: TypePointer Function 10(fvec4) 13: TypeImage 6(float) 2D sampled format:Unknown 14: TypeSampledImage 13 15: TypePointer UniformConstant 14 16(texSampler2D): 15(ptr) Variable UniformConstant 18: TypeVector 6(float) 2 19: TypePointer Input 18(fvec2) 20(t): 19(ptr) Variable Input 22(scale): 19(ptr) Variable Input 30: TypeImage 6(float) 3D sampled format:Unknown 31: TypeSampledImage 30 32: TypePointer UniformConstant 31 33(texSampler3D): 32(ptr) Variable UniformConstant 35: TypeVector 6(float) 3 36: TypePointer Input 35(fvec3) 37(coords): 36(ptr) Variable Input 42: TypePointer Output 10(fvec4) 43(gl_FragColor): 42(ptr) Variable Output 45: TypePointer Input 10(fvec4) 46(u): 45(ptr) Variable Input 48: TypePointer Input 6(float) 49(blend): 48(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(blendscale): 7(ptr) Variable Function 12(v): 11(ptr) Variable Function 29(w): 11(ptr) Variable Function Store 8(blendscale) 9 17: 14 Load 16(texSampler2D) 21: 18(fvec2) Load 20(t) 23: 18(fvec2) Load 22(scale) 24: 18(fvec2) FAdd 21 23 25: 18(fvec2) Load 22(scale) 26: 18(fvec2) FDiv 24 25 27: 10(fvec4) ImageSampleImplicitLod 17 26 28: 10(fvec4) VectorShuffle 27 27 3 2 1 0 Store 12(v) 28 34: 31 Load 33(texSampler3D) 38: 35(fvec3) Load 37(coords) 39: 10(fvec4) ImageSampleImplicitLod 34 38 40: 10(fvec4) Load 12(v) 41: 10(fvec4) FAdd 39 40 Store 29(w) 41 44: 10(fvec4) Load 29(w) 47: 10(fvec4) Load 46(u) 50: 6(float) Load 49(blend) 51: 6(float) Load 8(blendscale) 52: 6(float) FMul 50 51 53: 10(fvec4) CompositeConstruct 52 52 52 52 54: 10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 44 47 53 Store 43(gl_FragColor) 54 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.test.vert.out000066400000000000000000000044251506534232700217520ustar00rootroot00000000000000spv.test.vert WARNING: 0:5: attribute deprecated in version 130; may be removed in future release // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 11 15 18 21 Source GLSL 140 Name 4 "main" Name 9 "uv" Name 11 "uv_in" Name 15 "gl_Position" Name 18 "transform" Name 21 "position" Decorate 9(uv) Location 0 Decorate 11(uv_in) Location 5 Decorate 15(gl_Position) BuiltIn Position Decorate 18(transform) Location 0 Decorate 21(position) Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Output 7(fvec2) 9(uv): 8(ptr) Variable Output 10: TypePointer Input 7(fvec2) 11(uv_in): 10(ptr) Variable Input 13: TypeVector 6(float) 4 14: TypePointer Output 13(fvec4) 15(gl_Position): 14(ptr) Variable Output 16: TypeMatrix 13(fvec4) 4 17: TypePointer Input 16 18(transform): 17(ptr) Variable Input 20: TypePointer Input 13(fvec4) 21(position): 20(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12: 7(fvec2) Load 11(uv_in) Store 9(uv) 12 19: 16 Load 18(transform) 22: 13(fvec4) Load 21(position) 23: 13(fvec4) MatrixTimesVector 19 22 Store 15(gl_Position) 23 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.texture.frag.out000066400000000000000000000514561506534232700224400ustar00rootroot00000000000000spv.texture.frag WARNING: 0:10: varying deprecated in version 130; may be removed in future release WARNING: 0:11: varying deprecated in version 130; may be removed in future release WARNING: 0:12: varying deprecated in version 130; may be removed in future release // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 305 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 47 291 294 297 303 304 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 8 "blendscale" Name 10 "bias" Name 12 "lod" Name 14 "proj" Name 15 "coords1D" Name 18 "coords3D" Name 24 "coords4D" Name 26 "color" Name 32 "texSampler1D" Name 47 "coords2D" Name 76 "texSampler2D" Name 104 "texSampler3D" Name 130 "texSamplerCube" Name 145 "shadowSampler1D" Name 164 "shadowSampler2D" Name 221 "iCoords2D" Name 226 "iLod" Name 236 "gradX" Name 239 "gradY" Name 291 "gl_FragColor" Name 294 "u" Name 297 "blend" Name 303 "scale" Name 304 "t" Decorate 32(texSampler1D) Binding 0 Decorate 32(texSampler1D) DescriptorSet 0 Decorate 47(coords2D) Location 4 Decorate 76(texSampler2D) Binding 1 Decorate 76(texSampler2D) DescriptorSet 0 Decorate 104(texSampler3D) Binding 2 Decorate 104(texSampler3D) DescriptorSet 0 Decorate 130(texSamplerCube) Binding 3 Decorate 130(texSamplerCube) DescriptorSet 0 Decorate 145(shadowSampler1D) Binding 4 Decorate 145(shadowSampler1D) DescriptorSet 0 Decorate 164(shadowSampler2D) Binding 5 Decorate 164(shadowSampler2D) DescriptorSet 0 Decorate 291(gl_FragColor) Location 0 Decorate 294(u) Location 2 Decorate 297(blend) Location 0 Decorate 303(scale) Location 1 Decorate 304(t) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: 6(float) Constant 1071971828 11: 6(float) Constant 1073741824 13: 6(float) Constant 1077936128 16: TypeVector 6(float) 3 17: TypePointer Function 16(fvec3) 19: 6(float) Constant 1076753334 20: 6(float) Constant 1079836148 21: 16(fvec3) ConstantComposite 9 19 20 22: TypeVector 6(float) 4 23: TypePointer Function 22(fvec4) 25: 22(fvec4) ConstantComposite 9 19 20 11 27: 6(float) Constant 0 28: 22(fvec4) ConstantComposite 27 27 27 27 29: TypeImage 6(float) 1D sampled format:Unknown 30: TypeSampledImage 29 31: TypePointer UniformConstant 30 32(texSampler1D): 31(ptr) Variable UniformConstant 45: TypeVector 6(float) 2 46: TypePointer Input 45(fvec2) 47(coords2D): 46(ptr) Variable Input 73: TypeImage 6(float) 2D sampled format:Unknown 74: TypeSampledImage 73 75: TypePointer UniformConstant 74 76(texSampler2D): 75(ptr) Variable UniformConstant 101: TypeImage 6(float) 3D sampled format:Unknown 102: TypeSampledImage 101 103: TypePointer UniformConstant 102 104(texSampler3D): 103(ptr) Variable UniformConstant 127: TypeImage 6(float) Cube sampled format:Unknown 128: TypeSampledImage 127 129: TypePointer UniformConstant 128 130(texSamplerCube): 129(ptr) Variable UniformConstant 142: TypeImage 6(float) 1D depth sampled format:Unknown 143: TypeSampledImage 142 144: TypePointer UniformConstant 143 145(shadowSampler1D): 144(ptr) Variable UniformConstant 161: TypeImage 6(float) 2D depth sampled format:Unknown 162: TypeSampledImage 161 163: TypePointer UniformConstant 162 164(shadowSampler2D): 163(ptr) Variable UniformConstant 218: TypeInt 32 1 219: TypeVector 218(int) 2 220: TypePointer Function 219(ivec2) 222: 218(int) Constant 0 223: 218(int) Constant 5 224: 219(ivec2) ConstantComposite 222 223 225: TypePointer Function 218(int) 227: 218(int) Constant 1 235: TypePointer Function 45(fvec2) 264: 218(int) Constant 3 265: 218(int) Constant 4294967289 266: 219(ivec2) ConstantComposite 264 265 290: TypePointer Output 22(fvec4) 291(gl_FragColor): 290(ptr) Variable Output 293: TypePointer Input 22(fvec4) 294(u): 293(ptr) Variable Input 296: TypePointer Input 6(float) 297(blend): 296(ptr) Variable Input 303(scale): 46(ptr) Variable Input 304(t): 46(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(blendscale): 7(ptr) Variable Function 10(bias): 7(ptr) Variable Function 12(lod): 7(ptr) Variable Function 14(proj): 7(ptr) Variable Function 15(coords1D): 7(ptr) Variable Function 18(coords3D): 17(ptr) Variable Function 24(coords4D): 23(ptr) Variable Function 26(color): 23(ptr) Variable Function 221(iCoords2D): 220(ptr) Variable Function 226(iLod): 225(ptr) Variable Function 236(gradX): 235(ptr) Variable Function 239(gradY): 235(ptr) Variable Function Store 8(blendscale) 9 Store 10(bias) 11 Store 12(lod) 13 Store 14(proj) 11 Store 15(coords1D) 9 Store 18(coords3D) 21 Store 24(coords4D) 25 Store 26(color) 28 33: 30 Load 32(texSampler1D) 34: 6(float) Load 15(coords1D) 35: 22(fvec4) ImageSampleImplicitLod 33 34 36: 22(fvec4) Load 26(color) 37: 22(fvec4) FAdd 36 35 Store 26(color) 37 38: 30 Load 32(texSampler1D) 39: 6(float) Load 15(coords1D) 40: 6(float) Load 10(bias) 41: 22(fvec4) ImageSampleImplicitLod 38 39 Bias 40 42: 22(fvec4) Load 26(color) 43: 22(fvec4) FAdd 42 41 Store 26(color) 43 44: 30 Load 32(texSampler1D) 48: 45(fvec2) Load 47(coords2D) 49: 22(fvec4) ImageSampleProjImplicitLod 44 48 50: 22(fvec4) Load 26(color) 51: 22(fvec4) FAdd 50 49 Store 26(color) 51 52: 30 Load 32(texSampler1D) 53: 22(fvec4) Load 24(coords4D) 54: 6(float) CompositeExtract 53 3 55: 22(fvec4) CompositeInsert 54 53 1 56: 22(fvec4) ImageSampleProjImplicitLod 52 55 57: 22(fvec4) Load 26(color) 58: 22(fvec4) FAdd 57 56 Store 26(color) 58 59: 30 Load 32(texSampler1D) 60: 45(fvec2) Load 47(coords2D) 61: 6(float) Load 10(bias) 62: 22(fvec4) ImageSampleProjImplicitLod 59 60 Bias 61 63: 22(fvec4) Load 26(color) 64: 22(fvec4) FAdd 63 62 Store 26(color) 64 65: 30 Load 32(texSampler1D) 66: 22(fvec4) Load 24(coords4D) 67: 6(float) Load 10(bias) 68: 6(float) CompositeExtract 66 3 69: 22(fvec4) CompositeInsert 68 66 1 70: 22(fvec4) ImageSampleProjImplicitLod 65 69 Bias 67 71: 22(fvec4) Load 26(color) 72: 22(fvec4) FAdd 71 70 Store 26(color) 72 77: 74 Load 76(texSampler2D) 78: 45(fvec2) Load 47(coords2D) 79: 22(fvec4) ImageSampleImplicitLod 77 78 80: 22(fvec4) Load 26(color) 81: 22(fvec4) FAdd 80 79 Store 26(color) 81 82: 74 Load 76(texSampler2D) 83: 45(fvec2) Load 47(coords2D) 84: 6(float) Load 10(bias) 85: 22(fvec4) ImageSampleImplicitLod 82 83 Bias 84 86: 22(fvec4) Load 26(color) 87: 22(fvec4) FAdd 86 85 Store 26(color) 87 88: 74 Load 76(texSampler2D) 89: 16(fvec3) Load 18(coords3D) 90: 22(fvec4) ImageSampleProjImplicitLod 88 89 91: 22(fvec4) Load 26(color) 92: 22(fvec4) FAdd 91 90 Store 26(color) 92 93: 74 Load 76(texSampler2D) 94: 22(fvec4) Load 24(coords4D) 95: 6(float) Load 10(bias) 96: 6(float) CompositeExtract 94 3 97: 22(fvec4) CompositeInsert 96 94 2 98: 22(fvec4) ImageSampleProjImplicitLod 93 97 Bias 95 99: 22(fvec4) Load 26(color) 100: 22(fvec4) FAdd 99 98 Store 26(color) 100 105: 102 Load 104(texSampler3D) 106: 16(fvec3) Load 18(coords3D) 107: 22(fvec4) ImageSampleImplicitLod 105 106 108: 22(fvec4) Load 26(color) 109: 22(fvec4) FAdd 108 107 Store 26(color) 109 110: 102 Load 104(texSampler3D) 111: 16(fvec3) Load 18(coords3D) 112: 6(float) Load 10(bias) 113: 22(fvec4) ImageSampleImplicitLod 110 111 Bias 112 114: 22(fvec4) Load 26(color) 115: 22(fvec4) FAdd 114 113 Store 26(color) 115 116: 102 Load 104(texSampler3D) 117: 22(fvec4) Load 24(coords4D) 118: 22(fvec4) ImageSampleProjImplicitLod 116 117 119: 22(fvec4) Load 26(color) 120: 22(fvec4) FAdd 119 118 Store 26(color) 120 121: 102 Load 104(texSampler3D) 122: 22(fvec4) Load 24(coords4D) 123: 6(float) Load 10(bias) 124: 22(fvec4) ImageSampleProjImplicitLod 121 122 Bias 123 125: 22(fvec4) Load 26(color) 126: 22(fvec4) FAdd 125 124 Store 26(color) 126 131: 128 Load 130(texSamplerCube) 132: 16(fvec3) Load 18(coords3D) 133: 22(fvec4) ImageSampleImplicitLod 131 132 134: 22(fvec4) Load 26(color) 135: 22(fvec4) FAdd 134 133 Store 26(color) 135 136: 128 Load 130(texSamplerCube) 137: 16(fvec3) Load 18(coords3D) 138: 6(float) Load 10(bias) 139: 22(fvec4) ImageSampleImplicitLod 136 137 Bias 138 140: 22(fvec4) Load 26(color) 141: 22(fvec4) FAdd 140 139 Store 26(color) 141 146: 143 Load 145(shadowSampler1D) 147: 16(fvec3) Load 18(coords3D) 148: 6(float) CompositeExtract 147 2 149: 6(float) ImageSampleDrefImplicitLod 146 147 148 150: 22(fvec4) Load 26(color) 151: 22(fvec4) CompositeConstruct 149 149 149 149 152: 22(fvec4) FAdd 150 151 Store 26(color) 152 153: 143 Load 145(shadowSampler1D) 154: 16(fvec3) Load 18(coords3D) 155: 6(float) Load 10(bias) 156: 6(float) CompositeExtract 154 2 157: 6(float) ImageSampleDrefImplicitLod 153 154 156 Bias 155 158: 22(fvec4) Load 26(color) 159: 22(fvec4) CompositeConstruct 157 157 157 157 160: 22(fvec4) FAdd 158 159 Store 26(color) 160 165: 162 Load 164(shadowSampler2D) 166: 16(fvec3) Load 18(coords3D) 167: 6(float) CompositeExtract 166 2 168: 6(float) ImageSampleDrefImplicitLod 165 166 167 169: 22(fvec4) Load 26(color) 170: 22(fvec4) CompositeConstruct 168 168 168 168 171: 22(fvec4) FAdd 169 170 Store 26(color) 171 172: 162 Load 164(shadowSampler2D) 173: 16(fvec3) Load 18(coords3D) 174: 6(float) Load 10(bias) 175: 6(float) CompositeExtract 173 2 176: 6(float) ImageSampleDrefImplicitLod 172 173 175 Bias 174 177: 22(fvec4) Load 26(color) 178: 22(fvec4) CompositeConstruct 176 176 176 176 179: 22(fvec4) FAdd 177 178 Store 26(color) 179 180: 143 Load 145(shadowSampler1D) 181: 22(fvec4) Load 24(coords4D) 182: 6(float) CompositeExtract 181 2 183: 6(float) CompositeExtract 181 3 184: 22(fvec4) CompositeInsert 183 181 1 185: 6(float) ImageSampleProjDrefImplicitLod 180 184 182 186: 22(fvec4) Load 26(color) 187: 22(fvec4) CompositeConstruct 185 185 185 185 188: 22(fvec4) FAdd 186 187 Store 26(color) 188 189: 143 Load 145(shadowSampler1D) 190: 22(fvec4) Load 24(coords4D) 191: 6(float) Load 10(bias) 192: 6(float) CompositeExtract 190 2 193: 6(float) CompositeExtract 190 3 194: 22(fvec4) CompositeInsert 193 190 1 195: 6(float) ImageSampleProjDrefImplicitLod 189 194 192 Bias 191 196: 22(fvec4) Load 26(color) 197: 22(fvec4) CompositeConstruct 195 195 195 195 198: 22(fvec4) FAdd 196 197 Store 26(color) 198 199: 162 Load 164(shadowSampler2D) 200: 22(fvec4) Load 24(coords4D) 201: 6(float) CompositeExtract 200 2 202: 6(float) CompositeExtract 200 3 203: 22(fvec4) CompositeInsert 202 200 2 204: 6(float) ImageSampleProjDrefImplicitLod 199 203 201 205: 22(fvec4) Load 26(color) 206: 22(fvec4) CompositeConstruct 204 204 204 204 207: 22(fvec4) FAdd 205 206 Store 26(color) 207 208: 162 Load 164(shadowSampler2D) 209: 22(fvec4) Load 24(coords4D) 210: 6(float) Load 10(bias) 211: 6(float) CompositeExtract 209 2 212: 6(float) CompositeExtract 209 3 213: 22(fvec4) CompositeInsert 212 209 2 214: 6(float) ImageSampleProjDrefImplicitLod 208 213 211 Bias 210 215: 22(fvec4) Load 26(color) 216: 22(fvec4) CompositeConstruct 214 214 214 214 217: 22(fvec4) FAdd 215 216 Store 26(color) 217 Store 221(iCoords2D) 224 Store 226(iLod) 227 228: 74 Load 76(texSampler2D) 229: 219(ivec2) Load 221(iCoords2D) 230: 218(int) Load 226(iLod) 231: 73 Image 228 232: 22(fvec4) ImageFetch 231 229 Lod 230 233: 22(fvec4) Load 26(color) 234: 22(fvec4) FAdd 233 232 Store 26(color) 234 237: 45(fvec2) Load 47(coords2D) 238: 45(fvec2) DPdx 237 Store 236(gradX) 238 240: 45(fvec2) Load 47(coords2D) 241: 45(fvec2) DPdy 240 Store 239(gradY) 241 242: 74 Load 76(texSampler2D) 243: 45(fvec2) Load 47(coords2D) 244: 45(fvec2) Load 236(gradX) 245: 45(fvec2) Load 239(gradY) 246: 22(fvec4) ImageSampleExplicitLod 242 243 Grad 244 245 247: 22(fvec4) Load 26(color) 248: 22(fvec4) FAdd 247 246 Store 26(color) 248 249: 74 Load 76(texSampler2D) 250: 45(fvec2) Load 47(coords2D) 251: 6(float) Load 14(proj) 252: 6(float) CompositeExtract 250 0 253: 6(float) CompositeExtract 250 1 254: 16(fvec3) CompositeConstruct 252 253 251 255: 45(fvec2) Load 236(gradX) 256: 45(fvec2) Load 239(gradY) 257: 22(fvec4) ImageSampleProjExplicitLod 249 254 Grad 255 256 258: 22(fvec4) Load 26(color) 259: 22(fvec4) FAdd 258 257 Store 26(color) 259 260: 74 Load 76(texSampler2D) 261: 45(fvec2) Load 47(coords2D) 262: 45(fvec2) Load 236(gradX) 263: 45(fvec2) Load 239(gradY) 267: 22(fvec4) ImageSampleExplicitLod 260 261 Grad ConstOffset 262 263 266 268: 22(fvec4) Load 26(color) 269: 22(fvec4) FAdd 268 267 Store 26(color) 269 270: 74 Load 76(texSampler2D) 271: 16(fvec3) Load 18(coords3D) 272: 45(fvec2) Load 236(gradX) 273: 45(fvec2) Load 239(gradY) 274: 22(fvec4) ImageSampleProjExplicitLod 270 271 Grad ConstOffset 272 273 266 275: 22(fvec4) Load 26(color) 276: 22(fvec4) FAdd 275 274 Store 26(color) 276 277: 162 Load 164(shadowSampler2D) 278: 45(fvec2) Load 47(coords2D) 279: 6(float) Load 12(lod) 280: 6(float) CompositeExtract 278 0 281: 6(float) CompositeExtract 278 1 282: 16(fvec3) CompositeConstruct 280 281 279 283: 45(fvec2) Load 236(gradX) 284: 45(fvec2) Load 239(gradY) 285: 6(float) CompositeExtract 282 2 286: 6(float) ImageSampleDrefExplicitLod 277 282 285 Grad 283 284 287: 22(fvec4) Load 26(color) 288: 22(fvec4) CompositeConstruct 286 286 286 286 289: 22(fvec4) FAdd 287 288 Store 26(color) 289 292: 22(fvec4) Load 26(color) 295: 22(fvec4) Load 294(u) 298: 6(float) Load 297(blend) 299: 6(float) Load 8(blendscale) 300: 6(float) FMul 298 299 301: 22(fvec4) CompositeConstruct 300 300 300 300 302: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 292 295 301 Store 291(gl_FragColor) 302 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.texture.sampler.transform.frag.out000066400000000000000000000035761506534232700261140ustar00rootroot00000000000000spv.texture.sampler.transform.frag // Module Version 10000 // 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" 9 17 ExecutionMode 4 OriginUpperLeft Source GLSL 440 Name 4 "main" Name 9 "color" Name 13 "tex" Name 17 "coord" Decorate 9(color) Location 0 Decorate 13(tex) Binding 0 Decorate 13(tex) DescriptorSet 0 Decorate 17(coord) 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: 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 4(main): 2 Function None 3 5: Label 14: 11 Load 13(tex) 18: 15(fvec2) Load 17(coord) 19: 7(fvec4) ImageSampleImplicitLod 14 18 Store 9(color) 19 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.texture.vert.out000066400000000000000000000253371506534232700225000ustar00rootroot00000000000000spv.texture.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 150 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 39 148 Source GLSL 140 Name 4 "main" Name 8 "lod" Name 10 "coords1D" Name 14 "coords3D" Name 20 "coords4D" Name 23 "color" Name 29 "texSampler1D" Name 39 "coords2D" Name 56 "texSampler2D" Name 80 "texSampler3D" Name 96 "texSamplerCube" Name 106 "shadowSampler1D" Name 118 "shadowSampler2D" Name 148 "gl_Position" Decorate 29(texSampler1D) Binding 0 Decorate 29(texSampler1D) DescriptorSet 0 Decorate 39(coords2D) Location 0 Decorate 56(texSampler2D) Binding 1 Decorate 56(texSampler2D) DescriptorSet 0 Decorate 80(texSampler3D) Binding 2 Decorate 80(texSampler3D) DescriptorSet 0 Decorate 96(texSamplerCube) Binding 3 Decorate 96(texSamplerCube) DescriptorSet 0 Decorate 106(shadowSampler1D) Binding 4 Decorate 106(shadowSampler1D) DescriptorSet 0 Decorate 118(shadowSampler2D) Binding 5 Decorate 118(shadowSampler2D) DescriptorSet 0 Decorate 148(gl_Position) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 9: 6(float) Constant 1077936128 11: 6(float) Constant 1071971828 12: TypeVector 6(float) 3 13: TypePointer Function 12(fvec3) 15: 6(float) Constant 1076753334 16: 6(float) Constant 1079836148 17: 12(fvec3) ConstantComposite 11 15 16 18: TypeVector 6(float) 4 19: TypePointer Function 18(fvec4) 21: 6(float) Constant 1073741824 22: 18(fvec4) ConstantComposite 11 15 16 21 24: 6(float) Constant 0 25: 18(fvec4) ConstantComposite 24 24 24 24 26: TypeImage 6(float) 1D sampled format:Unknown 27: TypeSampledImage 26 28: TypePointer UniformConstant 27 29(texSampler1D): 28(ptr) Variable UniformConstant 37: TypeVector 6(float) 2 38: TypePointer Input 37(fvec2) 39(coords2D): 38(ptr) Variable Input 53: TypeImage 6(float) 2D sampled format:Unknown 54: TypeSampledImage 53 55: TypePointer UniformConstant 54 56(texSampler2D): 55(ptr) Variable UniformConstant 77: TypeImage 6(float) 3D sampled format:Unknown 78: TypeSampledImage 77 79: TypePointer UniformConstant 78 80(texSampler3D): 79(ptr) Variable UniformConstant 93: TypeImage 6(float) Cube sampled format:Unknown 94: TypeSampledImage 93 95: TypePointer UniformConstant 94 96(texSamplerCube): 95(ptr) Variable UniformConstant 103: TypeImage 6(float) 1D depth sampled format:Unknown 104: TypeSampledImage 103 105: TypePointer UniformConstant 104 106(shadowSampler1D): 105(ptr) Variable UniformConstant 115: TypeImage 6(float) 2D depth sampled format:Unknown 116: TypeSampledImage 115 117: TypePointer UniformConstant 116 118(shadowSampler2D): 117(ptr) Variable UniformConstant 147: TypePointer Output 18(fvec4) 148(gl_Position): 147(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(lod): 7(ptr) Variable Function 10(coords1D): 7(ptr) Variable Function 14(coords3D): 13(ptr) Variable Function 20(coords4D): 19(ptr) Variable Function 23(color): 19(ptr) Variable Function Store 8(lod) 9 Store 10(coords1D) 11 Store 14(coords3D) 17 Store 20(coords4D) 22 Store 23(color) 25 30: 27 Load 29(texSampler1D) 31: 6(float) Load 10(coords1D) 32: 6(float) Load 8(lod) 33: 18(fvec4) ImageSampleExplicitLod 30 31 Lod 32 34: 18(fvec4) Load 23(color) 35: 18(fvec4) FAdd 34 33 Store 23(color) 35 36: 27 Load 29(texSampler1D) 40: 37(fvec2) Load 39(coords2D) 41: 6(float) Load 8(lod) 42: 18(fvec4) ImageSampleProjExplicitLod 36 40 Lod 41 43: 18(fvec4) Load 23(color) 44: 18(fvec4) FAdd 43 42 Store 23(color) 44 45: 27 Load 29(texSampler1D) 46: 18(fvec4) Load 20(coords4D) 47: 6(float) Load 8(lod) 48: 6(float) CompositeExtract 46 3 49: 18(fvec4) CompositeInsert 48 46 1 50: 18(fvec4) ImageSampleProjExplicitLod 45 49 Lod 47 51: 18(fvec4) Load 23(color) 52: 18(fvec4) FAdd 51 50 Store 23(color) 52 57: 54 Load 56(texSampler2D) 58: 37(fvec2) Load 39(coords2D) 59: 6(float) Load 8(lod) 60: 18(fvec4) ImageSampleExplicitLod 57 58 Lod 59 61: 18(fvec4) Load 23(color) 62: 18(fvec4) FAdd 61 60 Store 23(color) 62 63: 54 Load 56(texSampler2D) 64: 12(fvec3) Load 14(coords3D) 65: 6(float) Load 8(lod) 66: 18(fvec4) ImageSampleProjExplicitLod 63 64 Lod 65 67: 18(fvec4) Load 23(color) 68: 18(fvec4) FAdd 67 66 Store 23(color) 68 69: 54 Load 56(texSampler2D) 70: 18(fvec4) Load 20(coords4D) 71: 6(float) Load 8(lod) 72: 6(float) CompositeExtract 70 3 73: 18(fvec4) CompositeInsert 72 70 2 74: 18(fvec4) ImageSampleProjExplicitLod 69 73 Lod 71 75: 18(fvec4) Load 23(color) 76: 18(fvec4) FAdd 75 74 Store 23(color) 76 81: 78 Load 80(texSampler3D) 82: 12(fvec3) Load 14(coords3D) 83: 6(float) Load 8(lod) 84: 18(fvec4) ImageSampleExplicitLod 81 82 Lod 83 85: 18(fvec4) Load 23(color) 86: 18(fvec4) FAdd 85 84 Store 23(color) 86 87: 78 Load 80(texSampler3D) 88: 18(fvec4) Load 20(coords4D) 89: 6(float) Load 8(lod) 90: 18(fvec4) ImageSampleProjExplicitLod 87 88 Lod 89 91: 18(fvec4) Load 23(color) 92: 18(fvec4) FAdd 91 90 Store 23(color) 92 97: 94 Load 96(texSamplerCube) 98: 12(fvec3) Load 14(coords3D) 99: 6(float) Load 8(lod) 100: 18(fvec4) ImageSampleExplicitLod 97 98 Lod 99 101: 18(fvec4) Load 23(color) 102: 18(fvec4) FAdd 101 100 Store 23(color) 102 107: 104 Load 106(shadowSampler1D) 108: 12(fvec3) Load 14(coords3D) 109: 6(float) Load 8(lod) 110: 6(float) CompositeExtract 108 2 111: 6(float) ImageSampleDrefExplicitLod 107 108 110 Lod 109 112: 18(fvec4) Load 23(color) 113: 18(fvec4) CompositeConstruct 111 111 111 111 114: 18(fvec4) FAdd 112 113 Store 23(color) 114 119: 116 Load 118(shadowSampler2D) 120: 12(fvec3) Load 14(coords3D) 121: 6(float) Load 8(lod) 122: 6(float) CompositeExtract 120 2 123: 6(float) ImageSampleDrefExplicitLod 119 120 122 Lod 121 124: 18(fvec4) Load 23(color) 125: 18(fvec4) CompositeConstruct 123 123 123 123 126: 18(fvec4) FAdd 124 125 Store 23(color) 126 127: 104 Load 106(shadowSampler1D) 128: 18(fvec4) Load 20(coords4D) 129: 6(float) Load 8(lod) 130: 6(float) CompositeExtract 128 2 131: 6(float) CompositeExtract 128 3 132: 18(fvec4) CompositeInsert 131 128 1 133: 6(float) ImageSampleProjDrefExplicitLod 127 132 130 Lod 129 134: 18(fvec4) Load 23(color) 135: 18(fvec4) CompositeConstruct 133 133 133 133 136: 18(fvec4) FAdd 134 135 Store 23(color) 136 137: 116 Load 118(shadowSampler2D) 138: 18(fvec4) Load 20(coords4D) 139: 6(float) Load 8(lod) 140: 6(float) CompositeExtract 138 2 141: 6(float) CompositeExtract 138 3 142: 18(fvec4) CompositeInsert 141 138 2 143: 6(float) ImageSampleProjDrefExplicitLod 137 142 140 Lod 139 144: 18(fvec4) Load 23(color) 145: 18(fvec4) CompositeConstruct 143 143 143 143 146: 18(fvec4) FAdd 144 145 Store 23(color) 146 149: 18(fvec4) Load 23(color) Store 148(gl_Position) 149 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.textureBuffer.vert.out000066400000000000000000000065241506534232700236270ustar00rootroot00000000000000spv.textureBuffer.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source GLSL 450 Name 4 "main" Name 9 "tBuf" Name 13 "s" Name 23 "sBuf" Name 32 "utBuf" Name 38 "itBuf" Decorate 9(tBuf) Binding 0 Decorate 9(tBuf) DescriptorSet 0 Decorate 13(s) Binding 1 Decorate 13(s) DescriptorSet 0 Decorate 23(sBuf) Binding 2 Decorate 23(sBuf) DescriptorSet 0 Decorate 32(utBuf) Binding 3 Decorate 32(utBuf) DescriptorSet 0 Decorate 38(itBuf) Binding 4 Decorate 38(itBuf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeImage 6(float) Buffer sampled format:Unknown 8: TypePointer UniformConstant 7 9(tBuf): 8(ptr) Variable UniformConstant 11: TypeSampler 12: TypePointer UniformConstant 11 13(s): 12(ptr) Variable UniformConstant 15: TypeSampledImage 7 17: TypeInt 32 1 18: 17(int) Constant 13 20: TypeVector 6(float) 4 22: TypePointer UniformConstant 15 23(sBuf): 22(ptr) Variable UniformConstant 29: TypeInt 32 0 30: TypeImage 29(int) Buffer sampled format:Unknown 31: TypePointer UniformConstant 30 32(utBuf): 31(ptr) Variable UniformConstant 34: TypeVector 29(int) 4 36: TypeImage 17(int) Buffer sampled format:Unknown 37: TypePointer UniformConstant 36 38(itBuf): 37(ptr) Variable UniformConstant 40: TypeVector 17(int) 4 4(main): 2 Function None 3 5: Label 10: 7 Load 9(tBuf) 14: 11 Load 13(s) 16: 15 SampledImage 10 14 19: 7 Image 16 21: 20(fvec4) ImageFetch 19 18 24: 15 Load 23(sBuf) 25: 7 Image 24 26: 20(fvec4) ImageFetch 25 18 27: 7 Load 9(tBuf) 28: 20(fvec4) ImageFetch 27 18 33: 30 Load 32(utBuf) 35: 34(ivec4) ImageFetch 33 18 39: 36 Load 38(itBuf) 41: 40(ivec4) ImageFetch 39 18 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.textureError.frag.out000066400000000000000000000003521506534232700234370ustar00rootroot00000000000000spv.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 glslang-16.0.0/Test/baseResults/spv.textureGatherBiasLod.frag.out000066400000000000000000000464021506534232700250240ustar00rootroot00000000000000spv.textureGatherBiasLod.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 298 Capability Shader Capability ImageGatherExtended Capability SparseResidency Capability SampledCubeArray Capability ImageGatherBiasLodAMD Extension "SPV_AMD_texture_gather_bias_lod" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 20 25 37 61 176 296 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_texture_gather_bias_lod" SourceExtension "GL_ARB_sparse_texture2" Name 4 "main" Name 9 "texel" Name 12 "result" Name 16 "s2D" Name 20 "c2" Name 25 "bias" Name 33 "s2DArray" Name 37 "c3" Name 47 "sCube" Name 58 "sCubeArray" Name 61 "c4" Name 104 "ResType" Name 176 "lod" Name 296 "fragColor" Decorate 16(s2D) Binding 0 Decorate 16(s2D) DescriptorSet 0 Decorate 20(c2) Location 0 Decorate 25(bias) Location 4 Decorate 33(s2DArray) Binding 1 Decorate 33(s2DArray) DescriptorSet 0 Decorate 37(c3) Location 1 Decorate 47(sCube) Binding 2 Decorate 47(sCube) DescriptorSet 0 Decorate 58(sCubeArray) Binding 3 Decorate 58(sCubeArray) DescriptorSet 0 Decorate 61(c4) Location 2 Decorate 176(lod) Location 3 Decorate 296(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: 6(float) Constant 0 11: 7(fvec4) ConstantComposite 10 10 10 10 13: TypeImage 6(float) 2D sampled format:Unknown 14: TypeSampledImage 13 15: TypePointer UniformConstant 14 16(s2D): 15(ptr) Variable UniformConstant 18: TypeVector 6(float) 2 19: TypePointer Input 18(fvec2) 20(c2): 19(ptr) Variable Input 22: TypeInt 32 1 23: 22(int) Constant 0 24: TypePointer Input 6(float) 25(bias): 24(ptr) Variable Input 30: TypeImage 6(float) 2D array sampled format:Unknown 31: TypeSampledImage 30 32: TypePointer UniformConstant 31 33(s2DArray): 32(ptr) Variable UniformConstant 35: TypeVector 6(float) 3 36: TypePointer Input 35(fvec3) 37(c3): 36(ptr) Variable Input 39: 22(int) Constant 1 44: TypeImage 6(float) Cube sampled format:Unknown 45: TypeSampledImage 44 46: TypePointer UniformConstant 45 47(sCube): 46(ptr) Variable UniformConstant 50: 22(int) Constant 2 55: TypeImage 6(float) Cube array sampled format:Unknown 56: TypeSampledImage 55 57: TypePointer UniformConstant 56 58(sCubeArray): 57(ptr) Variable UniformConstant 60: TypePointer Input 7(fvec4) 61(c4): 60(ptr) Variable Input 63: 22(int) Constant 3 70: TypeVector 22(int) 2 71: 70(ivec2) ConstantComposite 23 23 78: 70(ivec2) ConstantComposite 23 39 85: TypeInt 32 0 86: 85(int) Constant 4 87: TypeArray 70(ivec2) 86 88: 70(ivec2) ConstantComposite 39 23 89: 70(ivec2) ConstantComposite 39 39 90: 87 ConstantComposite 71 78 88 89 104(ResType): TypeStruct 22(int) 7(fvec4) 176(lod): 24(ptr) Variable Input 295: TypePointer Output 7(fvec4) 296(fragColor): 295(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(texel): 8(ptr) Variable Function 12(result): 8(ptr) Variable Function Store 9(texel) 11 Store 12(result) 11 17: 14 Load 16(s2D) 21: 18(fvec2) Load 20(c2) 26: 6(float) Load 25(bias) 27: 7(fvec4) ImageGather 17 21 23 Bias 26 28: 7(fvec4) Load 9(texel) 29: 7(fvec4) FAdd 28 27 Store 9(texel) 29 34: 31 Load 33(s2DArray) 38: 35(fvec3) Load 37(c3) 40: 6(float) Load 25(bias) 41: 7(fvec4) ImageGather 34 38 39 Bias 40 42: 7(fvec4) Load 9(texel) 43: 7(fvec4) FAdd 42 41 Store 9(texel) 43 48: 45 Load 47(sCube) 49: 35(fvec3) Load 37(c3) 51: 6(float) Load 25(bias) 52: 7(fvec4) ImageGather 48 49 50 Bias 51 53: 7(fvec4) Load 9(texel) 54: 7(fvec4) FAdd 53 52 Store 9(texel) 54 59: 56 Load 58(sCubeArray) 62: 7(fvec4) Load 61(c4) 64: 6(float) Load 25(bias) 65: 7(fvec4) ImageGather 59 62 63 Bias 64 66: 7(fvec4) Load 9(texel) 67: 7(fvec4) FAdd 66 65 Store 9(texel) 67 68: 14 Load 16(s2D) 69: 18(fvec2) Load 20(c2) 72: 6(float) Load 25(bias) 73: 7(fvec4) ImageGather 68 69 23 Bias ConstOffset 72 71 74: 7(fvec4) Load 9(texel) 75: 7(fvec4) FAdd 74 73 Store 9(texel) 75 76: 31 Load 33(s2DArray) 77: 35(fvec3) Load 37(c3) 79: 6(float) Load 25(bias) 80: 7(fvec4) ImageGather 76 77 39 Bias ConstOffset 79 78 81: 7(fvec4) Load 9(texel) 82: 7(fvec4) FAdd 81 80 Store 9(texel) 82 83: 14 Load 16(s2D) 84: 18(fvec2) Load 20(c2) 91: 6(float) Load 25(bias) 92: 7(fvec4) ImageGather 83 84 23 Bias ConstOffsets 91 90 93: 7(fvec4) Load 9(texel) 94: 7(fvec4) FAdd 93 92 Store 9(texel) 94 95: 31 Load 33(s2DArray) 96: 35(fvec3) Load 37(c3) 97: 6(float) Load 25(bias) 98: 7(fvec4) ImageGather 95 96 39 Bias ConstOffsets 97 90 99: 7(fvec4) Load 9(texel) 100: 7(fvec4) FAdd 99 98 Store 9(texel) 100 101: 14 Load 16(s2D) 102: 18(fvec2) Load 20(c2) 103: 6(float) Load 25(bias) 105:104(ResType) ImageSparseGather 101 102 23 Bias 103 106: 7(fvec4) CompositeExtract 105 1 Store 12(result) 106 107: 22(int) CompositeExtract 105 0 108: 7(fvec4) Load 12(result) 109: 7(fvec4) Load 9(texel) 110: 7(fvec4) FAdd 109 108 Store 9(texel) 110 111: 31 Load 33(s2DArray) 112: 35(fvec3) Load 37(c3) 113: 6(float) Load 25(bias) 114:104(ResType) ImageSparseGather 111 112 39 Bias 113 115: 7(fvec4) CompositeExtract 114 1 Store 12(result) 115 116: 22(int) CompositeExtract 114 0 117: 7(fvec4) Load 12(result) 118: 7(fvec4) Load 9(texel) 119: 7(fvec4) FAdd 118 117 Store 9(texel) 119 120: 45 Load 47(sCube) 121: 35(fvec3) Load 37(c3) 122: 6(float) Load 25(bias) 123:104(ResType) ImageSparseGather 120 121 50 Bias 122 124: 7(fvec4) CompositeExtract 123 1 Store 12(result) 124 125: 22(int) CompositeExtract 123 0 126: 7(fvec4) Load 12(result) 127: 7(fvec4) Load 9(texel) 128: 7(fvec4) FAdd 127 126 Store 9(texel) 128 129: 56 Load 58(sCubeArray) 130: 7(fvec4) Load 61(c4) 131: 6(float) Load 25(bias) 132:104(ResType) ImageSparseGather 129 130 50 Bias 131 133: 7(fvec4) CompositeExtract 132 1 Store 12(result) 133 134: 22(int) CompositeExtract 132 0 135: 7(fvec4) Load 12(result) 136: 7(fvec4) Load 9(texel) 137: 7(fvec4) FAdd 136 135 Store 9(texel) 137 138: 14 Load 16(s2D) 139: 18(fvec2) Load 20(c2) 140: 6(float) Load 25(bias) 141:104(ResType) ImageSparseGather 138 139 23 Bias ConstOffset 140 71 142: 7(fvec4) CompositeExtract 141 1 Store 12(result) 142 143: 22(int) CompositeExtract 141 0 144: 7(fvec4) Load 12(result) 145: 7(fvec4) Load 9(texel) 146: 7(fvec4) FAdd 145 144 Store 9(texel) 146 147: 31 Load 33(s2DArray) 148: 35(fvec3) Load 37(c3) 149: 6(float) Load 25(bias) 150:104(ResType) ImageSparseGather 147 148 39 Bias ConstOffset 149 78 151: 7(fvec4) CompositeExtract 150 1 Store 12(result) 151 152: 22(int) CompositeExtract 150 0 153: 7(fvec4) Load 12(result) 154: 7(fvec4) Load 9(texel) 155: 7(fvec4) FAdd 154 153 Store 9(texel) 155 156: 14 Load 16(s2D) 157: 18(fvec2) Load 20(c2) 158: 6(float) Load 25(bias) 159:104(ResType) ImageSparseGather 156 157 23 Bias ConstOffsets 158 90 160: 7(fvec4) CompositeExtract 159 1 Store 12(result) 160 161: 22(int) CompositeExtract 159 0 162: 7(fvec4) Load 12(result) 163: 7(fvec4) Load 9(texel) 164: 7(fvec4) FAdd 163 162 Store 9(texel) 164 165: 31 Load 33(s2DArray) 166: 35(fvec3) Load 37(c3) 167: 6(float) Load 25(bias) 168:104(ResType) ImageSparseGather 165 166 39 Bias ConstOffsets 167 90 169: 7(fvec4) CompositeExtract 168 1 Store 12(result) 169 170: 22(int) CompositeExtract 168 0 171: 7(fvec4) Load 12(result) 172: 7(fvec4) Load 9(texel) 173: 7(fvec4) FAdd 172 171 Store 9(texel) 173 174: 14 Load 16(s2D) 175: 18(fvec2) Load 20(c2) 177: 6(float) Load 176(lod) 178: 7(fvec4) ImageGather 174 175 23 Lod 177 179: 7(fvec4) Load 9(texel) 180: 7(fvec4) FAdd 179 178 Store 9(texel) 180 181: 31 Load 33(s2DArray) 182: 35(fvec3) Load 37(c3) 183: 6(float) Load 176(lod) 184: 7(fvec4) ImageGather 181 182 39 Lod 183 185: 7(fvec4) Load 9(texel) 186: 7(fvec4) FAdd 185 184 Store 9(texel) 186 187: 45 Load 47(sCube) 188: 35(fvec3) Load 37(c3) 189: 6(float) Load 176(lod) 190: 7(fvec4) ImageGather 187 188 50 Lod 189 191: 7(fvec4) Load 9(texel) 192: 7(fvec4) FAdd 191 190 Store 9(texel) 192 193: 56 Load 58(sCubeArray) 194: 7(fvec4) Load 61(c4) 195: 6(float) Load 176(lod) 196: 7(fvec4) ImageGather 193 194 63 Lod 195 197: 7(fvec4) Load 9(texel) 198: 7(fvec4) FAdd 197 196 Store 9(texel) 198 199: 14 Load 16(s2D) 200: 18(fvec2) Load 20(c2) 201: 6(float) Load 176(lod) 202: 7(fvec4) ImageGather 199 200 23 Lod ConstOffset 201 71 203: 7(fvec4) Load 9(texel) 204: 7(fvec4) FAdd 203 202 Store 9(texel) 204 205: 31 Load 33(s2DArray) 206: 35(fvec3) Load 37(c3) 207: 6(float) Load 176(lod) 208: 7(fvec4) ImageGather 205 206 39 Lod ConstOffset 207 78 209: 7(fvec4) Load 9(texel) 210: 7(fvec4) FAdd 209 208 Store 9(texel) 210 211: 14 Load 16(s2D) 212: 18(fvec2) Load 20(c2) 213: 6(float) Load 176(lod) 214: 7(fvec4) ImageGather 211 212 23 Lod ConstOffsets 213 90 215: 7(fvec4) Load 9(texel) 216: 7(fvec4) FAdd 215 214 Store 9(texel) 216 217: 31 Load 33(s2DArray) 218: 35(fvec3) Load 37(c3) 219: 6(float) Load 176(lod) 220: 7(fvec4) ImageGather 217 218 39 Lod ConstOffsets 219 90 221: 7(fvec4) Load 9(texel) 222: 7(fvec4) FAdd 221 220 Store 9(texel) 222 223: 14 Load 16(s2D) 224: 18(fvec2) Load 20(c2) 225: 6(float) Load 176(lod) 226:104(ResType) ImageSparseGather 223 224 23 Lod 225 227: 7(fvec4) CompositeExtract 226 1 Store 12(result) 227 228: 22(int) CompositeExtract 226 0 229: 7(fvec4) Load 12(result) 230: 7(fvec4) Load 9(texel) 231: 7(fvec4) FAdd 230 229 Store 9(texel) 231 232: 31 Load 33(s2DArray) 233: 35(fvec3) Load 37(c3) 234: 6(float) Load 176(lod) 235:104(ResType) ImageSparseGather 232 233 39 Lod 234 236: 7(fvec4) CompositeExtract 235 1 Store 12(result) 236 237: 22(int) CompositeExtract 235 0 238: 7(fvec4) Load 12(result) 239: 7(fvec4) Load 9(texel) 240: 7(fvec4) FAdd 239 238 Store 9(texel) 240 241: 45 Load 47(sCube) 242: 35(fvec3) Load 37(c3) 243: 6(float) Load 176(lod) 244:104(ResType) ImageSparseGather 241 242 50 Lod 243 245: 7(fvec4) CompositeExtract 244 1 Store 12(result) 245 246: 22(int) CompositeExtract 244 0 247: 7(fvec4) Load 12(result) 248: 7(fvec4) Load 9(texel) 249: 7(fvec4) FAdd 248 247 Store 9(texel) 249 250: 56 Load 58(sCubeArray) 251: 7(fvec4) Load 61(c4) 252: 6(float) Load 176(lod) 253:104(ResType) ImageSparseGather 250 251 50 Lod 252 254: 7(fvec4) CompositeExtract 253 1 Store 12(result) 254 255: 22(int) CompositeExtract 253 0 256: 7(fvec4) Load 12(result) 257: 7(fvec4) Load 9(texel) 258: 7(fvec4) FAdd 257 256 Store 9(texel) 258 259: 14 Load 16(s2D) 260: 18(fvec2) Load 20(c2) 261: 6(float) Load 176(lod) 262:104(ResType) ImageSparseGather 259 260 23 Lod ConstOffset 261 71 263: 7(fvec4) CompositeExtract 262 1 Store 12(result) 263 264: 22(int) CompositeExtract 262 0 265: 7(fvec4) Load 12(result) 266: 7(fvec4) Load 9(texel) 267: 7(fvec4) FAdd 266 265 Store 9(texel) 267 268: 31 Load 33(s2DArray) 269: 35(fvec3) Load 37(c3) 270: 6(float) Load 176(lod) 271:104(ResType) ImageSparseGather 268 269 39 Lod ConstOffset 270 78 272: 7(fvec4) CompositeExtract 271 1 Store 12(result) 272 273: 22(int) CompositeExtract 271 0 274: 7(fvec4) Load 12(result) 275: 7(fvec4) Load 9(texel) 276: 7(fvec4) FAdd 275 274 Store 9(texel) 276 277: 14 Load 16(s2D) 278: 18(fvec2) Load 20(c2) 279: 6(float) Load 176(lod) 280:104(ResType) ImageSparseGather 277 278 23 Lod ConstOffsets 279 90 281: 7(fvec4) CompositeExtract 280 1 Store 12(result) 281 282: 22(int) CompositeExtract 280 0 283: 7(fvec4) Load 12(result) 284: 7(fvec4) Load 9(texel) 285: 7(fvec4) FAdd 284 283 Store 9(texel) 285 286: 31 Load 33(s2DArray) 287: 35(fvec3) Load 37(c3) 288: 6(float) Load 176(lod) 289:104(ResType) ImageSparseGather 286 287 39 Lod ConstOffsets 288 90 290: 7(fvec4) CompositeExtract 289 1 Store 12(result) 290 291: 22(int) CompositeExtract 289 0 292: 7(fvec4) Load 12(result) 293: 7(fvec4) Load 9(texel) 294: 7(fvec4) FAdd 293 292 Store 9(texel) 294 297: 7(fvec4) Load 9(texel) Store 296(fragColor) 297 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.textureoffset_non_const.vert.out000066400000000000000000000251601506534232700257610ustar00rootroot00000000000000spv.textureoffset_non_const.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 140 Capability Shader Capability ImageGatherExtended 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 14 18 26 30 47 52 64 80 92 107 122 Source GLSL 450 SourceExtension "GL_EXT_texture_offset_non_const" Name 4 "main" Name 8 "gl_PerVertex" MemberName 8(gl_PerVertex) 0 "gl_Position" Name 10 "" Name 14 "a_position" Name 18 "v_color0" Name 22 "u_sampler" Name 26 "a_in0" Name 30 "offsetValue" Name 34 "buf0" MemberName 34(buf0) 0 "u_scale" Name 36 "" Name 41 "buf1" MemberName 41(buf1) 0 "u_bias" Name 43 "" Name 47 "v_color1" Name 52 "a_in1" Name 64 "v_color2" Name 80 "v_color3" Name 92 "v_color4" Name 107 "v_color5" Name 122 "v_color6" Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position Decorate 14(a_position) Location 0 Decorate 18(v_color0) RelaxedPrecision Decorate 18(v_color0) Location 0 Decorate 22(u_sampler) Binding 0 Decorate 22(u_sampler) DescriptorSet 0 Decorate 26(a_in0) Location 4 Decorate 30(offsetValue) Location 10 Decorate 34(buf0) Block MemberDecorate 34(buf0) 0 Offset 0 Decorate 36 Binding 1 Decorate 36 DescriptorSet 0 Decorate 41(buf1) Block MemberDecorate 41(buf1) 0 Offset 0 Decorate 43 Binding 2 Decorate 43 DescriptorSet 0 Decorate 47(v_color1) RelaxedPrecision Decorate 47(v_color1) Location 1 Decorate 52(a_in1) Location 5 Decorate 64(v_color2) RelaxedPrecision Decorate 64(v_color2) Location 2 Decorate 80(v_color3) RelaxedPrecision Decorate 80(v_color3) Location 3 Decorate 92(v_color4) RelaxedPrecision Decorate 92(v_color4) Location 4 Decorate 107(v_color5) RelaxedPrecision Decorate 107(v_color5) Location 5 Decorate 122(v_color6) RelaxedPrecision Decorate 122(v_color6) Location 6 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(gl_PerVertex): TypeStruct 7(fvec4) 9: TypePointer Output 8(gl_PerVertex) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: TypePointer Input 7(fvec4) 14(a_position): 13(ptr) Variable Input 16: TypePointer Output 7(fvec4) 18(v_color0): 16(ptr) Variable Output 19: TypeImage 6(float) 2D sampled format:Unknown 20: TypeSampledImage 19 21: TypePointer UniformConstant 20 22(u_sampler): 21(ptr) Variable UniformConstant 24: TypeVector 6(float) 2 25: TypePointer Input 24(fvec2) 26(a_in0): 25(ptr) Variable Input 28: TypeVector 11(int) 2 29: TypePointer Input 28(ivec2) 30(offsetValue): 29(ptr) Variable Input 32: 6(float) Constant 0 34(buf0): TypeStruct 7(fvec4) 35: TypePointer Uniform 34(buf0) 36: 35(ptr) Variable Uniform 37: TypePointer Uniform 7(fvec4) 41(buf1): TypeStruct 7(fvec4) 42: TypePointer Uniform 41(buf1) 43: 42(ptr) Variable Uniform 47(v_color1): 16(ptr) Variable Output 51: TypePointer Input 6(float) 52(a_in1): 51(ptr) Variable Input 64(v_color2): 16(ptr) Variable Output 67: 6(float) Constant 1065353216 68: TypeVector 6(float) 3 80(v_color3): 16(ptr) Variable Output 92(v_color4): 16(ptr) Variable Output 107(v_color5): 16(ptr) Variable Output 122(v_color6): 16(ptr) Variable Output 4(main): 2 Function None 3 5: Label 15: 7(fvec4) Load 14(a_position) 17: 16(ptr) AccessChain 10 12 Store 17 15 23: 20 Load 22(u_sampler) 27: 24(fvec2) Load 26(a_in0) 31: 28(ivec2) Load 30(offsetValue) 33: 7(fvec4) ImageSampleExplicitLod 23 27 Lod Offset 32 31 38: 37(ptr) AccessChain 36 12 39: 7(fvec4) Load 38 40: 7(fvec4) FMul 33 39 44: 37(ptr) AccessChain 43 12 45: 7(fvec4) Load 44 46: 7(fvec4) FAdd 40 45 Store 18(v_color0) 46 48: 20 Load 22(u_sampler) 49: 24(fvec2) Load 26(a_in0) 50: 28(ivec2) ConvertFToS 49 53: 6(float) Load 52(a_in1) 54: 11(int) ConvertFToS 53 55: 28(ivec2) Load 30(offsetValue) 56: 19 Image 48 57: 7(fvec4) ImageFetch 56 50 Lod Offset 54 55 58: 37(ptr) AccessChain 36 12 59: 7(fvec4) Load 58 60: 7(fvec4) FMul 57 59 61: 37(ptr) AccessChain 43 12 62: 7(fvec4) Load 61 63: 7(fvec4) FAdd 60 62 Store 47(v_color1) 63 65: 20 Load 22(u_sampler) 66: 24(fvec2) Load 26(a_in0) 69: 6(float) CompositeExtract 66 0 70: 6(float) CompositeExtract 66 1 71: 68(fvec3) CompositeConstruct 69 70 67 72: 28(ivec2) Load 30(offsetValue) 73: 7(fvec4) ImageSampleProjExplicitLod 65 71 Lod Offset 32 72 74: 37(ptr) AccessChain 36 12 75: 7(fvec4) Load 74 76: 7(fvec4) FMul 73 75 77: 37(ptr) AccessChain 43 12 78: 7(fvec4) Load 77 79: 7(fvec4) FAdd 76 78 Store 64(v_color2) 79 81: 20 Load 22(u_sampler) 82: 24(fvec2) Load 26(a_in0) 83: 6(float) Load 52(a_in1) 84: 28(ivec2) Load 30(offsetValue) 85: 7(fvec4) ImageSampleExplicitLod 81 82 Lod Offset 83 84 86: 37(ptr) AccessChain 36 12 87: 7(fvec4) Load 86 88: 7(fvec4) FMul 85 87 89: 37(ptr) AccessChain 43 12 90: 7(fvec4) Load 89 91: 7(fvec4) FAdd 88 90 Store 80(v_color3) 91 93: 20 Load 22(u_sampler) 94: 24(fvec2) Load 26(a_in0) 95: 6(float) CompositeExtract 94 0 96: 6(float) CompositeExtract 94 1 97: 68(fvec3) CompositeConstruct 95 96 67 98: 6(float) Load 52(a_in1) 99: 28(ivec2) Load 30(offsetValue) 100: 7(fvec4) ImageSampleProjExplicitLod 93 97 Lod Offset 98 99 101: 37(ptr) AccessChain 36 12 102: 7(fvec4) Load 101 103: 7(fvec4) FMul 100 102 104: 37(ptr) AccessChain 43 12 105: 7(fvec4) Load 104 106: 7(fvec4) FAdd 103 105 Store 92(v_color4) 106 108: 20 Load 22(u_sampler) 109: 24(fvec2) Load 26(a_in0) 110: 6(float) Load 52(a_in1) 111: 24(fvec2) CompositeConstruct 110 110 112: 6(float) Load 52(a_in1) 113: 24(fvec2) CompositeConstruct 112 112 114: 28(ivec2) Load 30(offsetValue) 115: 7(fvec4) ImageSampleExplicitLod 108 109 Grad Offset 111 113 114 116: 37(ptr) AccessChain 36 12 117: 7(fvec4) Load 116 118: 7(fvec4) FMul 115 117 119: 37(ptr) AccessChain 43 12 120: 7(fvec4) Load 119 121: 7(fvec4) FAdd 118 120 Store 107(v_color5) 121 123: 20 Load 22(u_sampler) 124: 24(fvec2) Load 26(a_in0) 125: 6(float) CompositeExtract 124 0 126: 6(float) CompositeExtract 124 1 127: 68(fvec3) CompositeConstruct 125 126 67 128: 6(float) Load 52(a_in1) 129: 24(fvec2) CompositeConstruct 128 128 130: 6(float) Load 52(a_in1) 131: 24(fvec2) CompositeConstruct 130 130 132: 28(ivec2) Load 30(offsetValue) 133: 7(fvec4) ImageSampleProjExplicitLod 123 127 Grad Offset 129 131 132 134: 37(ptr) AccessChain 36 12 135: 7(fvec4) Load 134 136: 7(fvec4) FMul 133 135 137: 37(ptr) AccessChain 43 12 138: 7(fvec4) Load 137 139: 7(fvec4) FAdd 136 138 Store 122(v_color6) 139 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out000066400000000000000000000152231506534232700253170ustar00rootroot00000000000000spv.tpipBlockMatchGatherSAD.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability TextureBlockMatchQCOM Capability TextureBlockMatch2QCOM Extension "SPV_QCOM_image_processing" Extension "SPV_QCOM_image_processing2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 41 44 48 53 61 64 71 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" SourceExtension "GL_QCOM_image_processing2" Name 4 "main" Name 9 "tgt_coords" Name 13 "v_texcoord" Name 26 "ref_coords" Name 37 "blockSize" Name 41 "fragColor" Name 44 "tex2D_src1" Name 48 "samp" Name 53 "tex2D_src2" Name 61 "target_samp" Name 64 "ref_samp" Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 Decorate 44(tex2D_src1) Binding 1 Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 Decorate 48(samp) DescriptorSet 0 Decorate 53(tex2D_src2) Binding 2 Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) Binding 4 Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM Decorate 64(ref_samp) Binding 5 Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM Decorate 71(tex2DArray_weights) Binding 0 Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Input 11(fvec4) 13(v_texcoord): 12(ptr) Variable Input 14: 6(int) Constant 0 15: TypePointer Input 10(float) 19: TypePointer Function 6(int) 21: 6(int) Constant 1 27: 6(int) Constant 2 32: 6(int) Constant 3 38: 6(int) Constant 4 39: 7(ivec2) ConstantComposite 38 38 40: TypePointer Output 11(fvec4) 41(fragColor): 40(ptr) Variable Output 42: TypeImage 10(float) 2D sampled format:Unknown 43: TypePointer UniformConstant 42 44(tex2D_src1): 43(ptr) Variable UniformConstant 46: TypeSampler 47: TypePointer UniformConstant 46 48(samp): 47(ptr) Variable UniformConstant 50: TypeSampledImage 42 53(tex2D_src2): 43(ptr) Variable UniformConstant 60: TypePointer UniformConstant 50 61(target_samp): 60(ptr) Variable UniformConstant 64(ref_samp): 60(ptr) Variable UniformConstant 69: TypeImage 10(float) 2D array sampled format:Unknown 70: TypePointer UniformConstant 69 71(tex2DArray_weights): 70(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(tgt_coords): 8(ptr) Variable Function 26(ref_coords): 8(ptr) Variable Function 37(blockSize): 8(ptr) Variable Function 16: 15(ptr) AccessChain 13(v_texcoord) 14 17: 10(float) Load 16 18: 6(int) ConvertFToU 17 20: 19(ptr) AccessChain 9(tgt_coords) 14 Store 20 18 22: 15(ptr) AccessChain 13(v_texcoord) 21 23: 10(float) Load 22 24: 6(int) ConvertFToU 23 25: 19(ptr) AccessChain 9(tgt_coords) 14 Store 25 24 28: 15(ptr) AccessChain 13(v_texcoord) 27 29: 10(float) Load 28 30: 6(int) ConvertFToU 29 31: 19(ptr) AccessChain 26(ref_coords) 14 Store 31 30 33: 15(ptr) AccessChain 13(v_texcoord) 32 34: 10(float) Load 33 35: 6(int) ConvertFToU 34 36: 19(ptr) AccessChain 26(ref_coords) 21 Store 36 35 Store 37(blockSize) 39 45: 42 Load 44(tex2D_src1) 49: 46 Load 48(samp) 51: 50 SampledImage 45 49 52: 7(ivec2) Load 9(tgt_coords) 54: 42 Load 53(tex2D_src2) 55: 46 Load 48(samp) 56: 50 SampledImage 54 55 57: 7(ivec2) Load 26(ref_coords) 58: 7(ivec2) Load 37(blockSize) 59: 11(fvec4) ImageBlockMatchGatherSADQCOM 51 52 56 57 58 Store 41(fragColor) 59 62: 50 Load 61(target_samp) 63: 7(ivec2) Load 9(tgt_coords) 65: 50 Load 64(ref_samp) 66: 7(ivec2) Load 26(ref_coords) 67: 7(ivec2) Load 37(blockSize) 68: 11(fvec4) ImageBlockMatchGatherSADQCOM 62 63 65 66 67 Store 41(fragColor) 68 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out000066400000000000000000000152231506534232700253410ustar00rootroot00000000000000spv.tpipBlockMatchGatherSSD.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability TextureBlockMatchQCOM Capability TextureBlockMatch2QCOM Extension "SPV_QCOM_image_processing" Extension "SPV_QCOM_image_processing2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 41 44 48 53 61 64 71 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" SourceExtension "GL_QCOM_image_processing2" Name 4 "main" Name 9 "tgt_coords" Name 13 "v_texcoord" Name 26 "ref_coords" Name 37 "blockSize" Name 41 "fragColor" Name 44 "tex2D_src1" Name 48 "samp" Name 53 "tex2D_src2" Name 61 "target_samp" Name 64 "ref_samp" Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 Decorate 44(tex2D_src1) Binding 1 Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 Decorate 48(samp) DescriptorSet 0 Decorate 53(tex2D_src2) Binding 2 Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) Binding 4 Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM Decorate 64(ref_samp) Binding 5 Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM Decorate 71(tex2DArray_weights) Binding 0 Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Input 11(fvec4) 13(v_texcoord): 12(ptr) Variable Input 14: 6(int) Constant 0 15: TypePointer Input 10(float) 19: TypePointer Function 6(int) 21: 6(int) Constant 1 27: 6(int) Constant 2 32: 6(int) Constant 3 38: 6(int) Constant 4 39: 7(ivec2) ConstantComposite 38 38 40: TypePointer Output 11(fvec4) 41(fragColor): 40(ptr) Variable Output 42: TypeImage 10(float) 2D sampled format:Unknown 43: TypePointer UniformConstant 42 44(tex2D_src1): 43(ptr) Variable UniformConstant 46: TypeSampler 47: TypePointer UniformConstant 46 48(samp): 47(ptr) Variable UniformConstant 50: TypeSampledImage 42 53(tex2D_src2): 43(ptr) Variable UniformConstant 60: TypePointer UniformConstant 50 61(target_samp): 60(ptr) Variable UniformConstant 64(ref_samp): 60(ptr) Variable UniformConstant 69: TypeImage 10(float) 2D array sampled format:Unknown 70: TypePointer UniformConstant 69 71(tex2DArray_weights): 70(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(tgt_coords): 8(ptr) Variable Function 26(ref_coords): 8(ptr) Variable Function 37(blockSize): 8(ptr) Variable Function 16: 15(ptr) AccessChain 13(v_texcoord) 14 17: 10(float) Load 16 18: 6(int) ConvertFToU 17 20: 19(ptr) AccessChain 9(tgt_coords) 14 Store 20 18 22: 15(ptr) AccessChain 13(v_texcoord) 21 23: 10(float) Load 22 24: 6(int) ConvertFToU 23 25: 19(ptr) AccessChain 9(tgt_coords) 14 Store 25 24 28: 15(ptr) AccessChain 13(v_texcoord) 27 29: 10(float) Load 28 30: 6(int) ConvertFToU 29 31: 19(ptr) AccessChain 26(ref_coords) 14 Store 31 30 33: 15(ptr) AccessChain 13(v_texcoord) 32 34: 10(float) Load 33 35: 6(int) ConvertFToU 34 36: 19(ptr) AccessChain 26(ref_coords) 21 Store 36 35 Store 37(blockSize) 39 45: 42 Load 44(tex2D_src1) 49: 46 Load 48(samp) 51: 50 SampledImage 45 49 52: 7(ivec2) Load 9(tgt_coords) 54: 42 Load 53(tex2D_src2) 55: 46 Load 48(samp) 56: 50 SampledImage 54 55 57: 7(ivec2) Load 26(ref_coords) 58: 7(ivec2) Load 37(blockSize) 59: 11(fvec4) ImageBlockMatchGatherSSDQCOM 51 52 56 57 58 Store 41(fragColor) 59 62: 50 Load 61(target_samp) 63: 7(ivec2) Load 9(tgt_coords) 65: 50 Load 64(ref_samp) 66: 7(ivec2) Load 26(ref_coords) 67: 7(ivec2) Load 37(blockSize) 68: 11(fvec4) ImageBlockMatchGatherSSDQCOM 62 63 65 66 67 Store 41(fragColor) 68 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipBlockMatchSAD.frag.out000066400000000000000000000146601506534232700241700ustar00rootroot00000000000000spv.tpipBlockMatchSAD.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability TextureBlockMatchQCOM Extension "SPV_QCOM_image_processing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 41 44 48 53 61 64 71 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" Name 4 "main" Name 9 "tgt_coords" Name 13 "v_texcoord" Name 26 "ref_coords" Name 37 "blockSize" Name 41 "fragColor" Name 44 "tex2D_src1" Name 48 "samp" Name 53 "tex2D_src2" Name 61 "target_samp" Name 64 "ref_samp" Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 Decorate 44(tex2D_src1) Binding 1 Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 Decorate 48(samp) DescriptorSet 0 Decorate 53(tex2D_src2) Binding 2 Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) Binding 4 Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM Decorate 64(ref_samp) Binding 5 Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM Decorate 71(tex2DArray_weights) Binding 0 Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Input 11(fvec4) 13(v_texcoord): 12(ptr) Variable Input 14: 6(int) Constant 0 15: TypePointer Input 10(float) 19: TypePointer Function 6(int) 21: 6(int) Constant 1 27: 6(int) Constant 2 32: 6(int) Constant 3 38: 6(int) Constant 4 39: 7(ivec2) ConstantComposite 38 38 40: TypePointer Output 11(fvec4) 41(fragColor): 40(ptr) Variable Output 42: TypeImage 10(float) 2D sampled format:Unknown 43: TypePointer UniformConstant 42 44(tex2D_src1): 43(ptr) Variable UniformConstant 46: TypeSampler 47: TypePointer UniformConstant 46 48(samp): 47(ptr) Variable UniformConstant 50: TypeSampledImage 42 53(tex2D_src2): 43(ptr) Variable UniformConstant 60: TypePointer UniformConstant 50 61(target_samp): 60(ptr) Variable UniformConstant 64(ref_samp): 60(ptr) Variable UniformConstant 69: TypeImage 10(float) 2D array sampled format:Unknown 70: TypePointer UniformConstant 69 71(tex2DArray_weights): 70(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(tgt_coords): 8(ptr) Variable Function 26(ref_coords): 8(ptr) Variable Function 37(blockSize): 8(ptr) Variable Function 16: 15(ptr) AccessChain 13(v_texcoord) 14 17: 10(float) Load 16 18: 6(int) ConvertFToU 17 20: 19(ptr) AccessChain 9(tgt_coords) 14 Store 20 18 22: 15(ptr) AccessChain 13(v_texcoord) 21 23: 10(float) Load 22 24: 6(int) ConvertFToU 23 25: 19(ptr) AccessChain 9(tgt_coords) 14 Store 25 24 28: 15(ptr) AccessChain 13(v_texcoord) 27 29: 10(float) Load 28 30: 6(int) ConvertFToU 29 31: 19(ptr) AccessChain 26(ref_coords) 14 Store 31 30 33: 15(ptr) AccessChain 13(v_texcoord) 32 34: 10(float) Load 33 35: 6(int) ConvertFToU 34 36: 19(ptr) AccessChain 26(ref_coords) 21 Store 36 35 Store 37(blockSize) 39 45: 42 Load 44(tex2D_src1) 49: 46 Load 48(samp) 51: 50 SampledImage 45 49 52: 7(ivec2) Load 9(tgt_coords) 54: 42 Load 53(tex2D_src2) 55: 46 Load 48(samp) 56: 50 SampledImage 54 55 57: 7(ivec2) Load 26(ref_coords) 58: 7(ivec2) Load 37(blockSize) 59: 11(fvec4) ImageBlockMatchSADQCOM 51 52 56 57 58 Store 41(fragColor) 59 62: 50 Load 61(target_samp) 63: 7(ivec2) Load 9(tgt_coords) 65: 50 Load 64(ref_samp) 66: 7(ivec2) Load 26(ref_coords) 67: 7(ivec2) Load 37(blockSize) 68: 11(fvec4) ImageBlockMatchSADQCOM 62 63 65 66 67 Store 41(fragColor) 68 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipBlockMatchSSD.frag.out000066400000000000000000000146601506534232700242120ustar00rootroot00000000000000spv.tpipBlockMatchSSD.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability TextureBlockMatchQCOM Extension "SPV_QCOM_image_processing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 41 44 48 53 61 64 71 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" Name 4 "main" Name 9 "tgt_coords" Name 13 "v_texcoord" Name 26 "ref_coords" Name 37 "blockSize" Name 41 "fragColor" Name 44 "tex2D_src1" Name 48 "samp" Name 53 "tex2D_src2" Name 61 "target_samp" Name 64 "ref_samp" Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 Decorate 44(tex2D_src1) Binding 1 Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 Decorate 48(samp) DescriptorSet 0 Decorate 53(tex2D_src2) Binding 2 Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) Binding 4 Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM Decorate 64(ref_samp) Binding 5 Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM Decorate 71(tex2DArray_weights) Binding 0 Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Input 11(fvec4) 13(v_texcoord): 12(ptr) Variable Input 14: 6(int) Constant 0 15: TypePointer Input 10(float) 19: TypePointer Function 6(int) 21: 6(int) Constant 1 27: 6(int) Constant 2 32: 6(int) Constant 3 38: 6(int) Constant 4 39: 7(ivec2) ConstantComposite 38 38 40: TypePointer Output 11(fvec4) 41(fragColor): 40(ptr) Variable Output 42: TypeImage 10(float) 2D sampled format:Unknown 43: TypePointer UniformConstant 42 44(tex2D_src1): 43(ptr) Variable UniformConstant 46: TypeSampler 47: TypePointer UniformConstant 46 48(samp): 47(ptr) Variable UniformConstant 50: TypeSampledImage 42 53(tex2D_src2): 43(ptr) Variable UniformConstant 60: TypePointer UniformConstant 50 61(target_samp): 60(ptr) Variable UniformConstant 64(ref_samp): 60(ptr) Variable UniformConstant 69: TypeImage 10(float) 2D array sampled format:Unknown 70: TypePointer UniformConstant 69 71(tex2DArray_weights): 70(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(tgt_coords): 8(ptr) Variable Function 26(ref_coords): 8(ptr) Variable Function 37(blockSize): 8(ptr) Variable Function 16: 15(ptr) AccessChain 13(v_texcoord) 14 17: 10(float) Load 16 18: 6(int) ConvertFToU 17 20: 19(ptr) AccessChain 9(tgt_coords) 14 Store 20 18 22: 15(ptr) AccessChain 13(v_texcoord) 21 23: 10(float) Load 22 24: 6(int) ConvertFToU 23 25: 19(ptr) AccessChain 9(tgt_coords) 14 Store 25 24 28: 15(ptr) AccessChain 13(v_texcoord) 27 29: 10(float) Load 28 30: 6(int) ConvertFToU 29 31: 19(ptr) AccessChain 26(ref_coords) 14 Store 31 30 33: 15(ptr) AccessChain 13(v_texcoord) 32 34: 10(float) Load 33 35: 6(int) ConvertFToU 34 36: 19(ptr) AccessChain 26(ref_coords) 21 Store 36 35 Store 37(blockSize) 39 45: 42 Load 44(tex2D_src1) 49: 46 Load 48(samp) 51: 50 SampledImage 45 49 52: 7(ivec2) Load 9(tgt_coords) 54: 42 Load 53(tex2D_src2) 55: 46 Load 48(samp) 56: 50 SampledImage 54 55 57: 7(ivec2) Load 26(ref_coords) 58: 7(ivec2) Load 37(blockSize) 59: 11(fvec4) ImageBlockMatchSSDQCOM 51 52 56 57 58 Store 41(fragColor) 59 62: 50 Load 61(target_samp) 63: 7(ivec2) Load 9(tgt_coords) 65: 50 Load 64(ref_samp) 66: 7(ivec2) Load 26(ref_coords) 67: 7(ivec2) Load 37(blockSize) 68: 11(fvec4) ImageBlockMatchSSDQCOM 62 63 65 66 67 Store 41(fragColor) 68 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out000066400000000000000000000156161506534232700253620ustar00rootroot00000000000000spv.tpipBlockMatchWindowSAD.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability TextureBlockMatchQCOM Capability TextureBlockMatch2QCOM Extension "SPV_QCOM_image_processing" Extension "SPV_QCOM_image_processing2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 41 44 48 53 61 64 71 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" SourceExtension "GL_QCOM_image_processing2" Name 4 "main" Name 9 "tgt_coords" Name 13 "v_texcoord" Name 26 "ref_coords" Name 37 "blockSize" Name 41 "fragColor" Name 44 "tex2D_src1" Name 48 "samp" Name 53 "tex2D_src2" Name 61 "target_samp" Name 64 "ref_samp" Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 Decorate 44(tex2D_src1) Binding 1 Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 Decorate 48(samp) DescriptorSet 0 Decorate 48(samp) DecorationBlockMatchSamplerQCOM Decorate 53(tex2D_src2) Binding 2 Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) Binding 4 Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) DecorationBlockMatchSamplerQCOM Decorate 64(ref_samp) Binding 5 Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM Decorate 64(ref_samp) DecorationBlockMatchSamplerQCOM Decorate 71(tex2DArray_weights) Binding 0 Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Input 11(fvec4) 13(v_texcoord): 12(ptr) Variable Input 14: 6(int) Constant 0 15: TypePointer Input 10(float) 19: TypePointer Function 6(int) 21: 6(int) Constant 1 27: 6(int) Constant 2 32: 6(int) Constant 3 38: 6(int) Constant 4 39: 7(ivec2) ConstantComposite 38 38 40: TypePointer Output 11(fvec4) 41(fragColor): 40(ptr) Variable Output 42: TypeImage 10(float) 2D sampled format:Unknown 43: TypePointer UniformConstant 42 44(tex2D_src1): 43(ptr) Variable UniformConstant 46: TypeSampler 47: TypePointer UniformConstant 46 48(samp): 47(ptr) Variable UniformConstant 50: TypeSampledImage 42 53(tex2D_src2): 43(ptr) Variable UniformConstant 60: TypePointer UniformConstant 50 61(target_samp): 60(ptr) Variable UniformConstant 64(ref_samp): 60(ptr) Variable UniformConstant 69: TypeImage 10(float) 2D array sampled format:Unknown 70: TypePointer UniformConstant 69 71(tex2DArray_weights): 70(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(tgt_coords): 8(ptr) Variable Function 26(ref_coords): 8(ptr) Variable Function 37(blockSize): 8(ptr) Variable Function 16: 15(ptr) AccessChain 13(v_texcoord) 14 17: 10(float) Load 16 18: 6(int) ConvertFToU 17 20: 19(ptr) AccessChain 9(tgt_coords) 14 Store 20 18 22: 15(ptr) AccessChain 13(v_texcoord) 21 23: 10(float) Load 22 24: 6(int) ConvertFToU 23 25: 19(ptr) AccessChain 9(tgt_coords) 14 Store 25 24 28: 15(ptr) AccessChain 13(v_texcoord) 27 29: 10(float) Load 28 30: 6(int) ConvertFToU 29 31: 19(ptr) AccessChain 26(ref_coords) 14 Store 31 30 33: 15(ptr) AccessChain 13(v_texcoord) 32 34: 10(float) Load 33 35: 6(int) ConvertFToU 34 36: 19(ptr) AccessChain 26(ref_coords) 21 Store 36 35 Store 37(blockSize) 39 45: 42 Load 44(tex2D_src1) 49: 46 Load 48(samp) 51: 50 SampledImage 45 49 52: 7(ivec2) Load 9(tgt_coords) 54: 42 Load 53(tex2D_src2) 55: 46 Load 48(samp) 56: 50 SampledImage 54 55 57: 7(ivec2) Load 26(ref_coords) 58: 7(ivec2) Load 37(blockSize) 59: 11(fvec4) ImageBlockMatchWindowSADQCOM 51 52 56 57 58 Store 41(fragColor) 59 62: 50 Load 61(target_samp) 63: 7(ivec2) Load 9(tgt_coords) 65: 50 Load 64(ref_samp) 66: 7(ivec2) Load 26(ref_coords) 67: 7(ivec2) Load 37(blockSize) 68: 11(fvec4) ImageBlockMatchWindowSADQCOM 62 63 65 66 67 Store 41(fragColor) 68 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out000066400000000000000000000156161506534232700254040ustar00rootroot00000000000000spv.tpipBlockMatchWindowSSD.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader Capability TextureBlockMatchQCOM Capability TextureBlockMatch2QCOM Extension "SPV_QCOM_image_processing" Extension "SPV_QCOM_image_processing2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 41 44 48 53 61 64 71 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" SourceExtension "GL_QCOM_image_processing2" Name 4 "main" Name 9 "tgt_coords" Name 13 "v_texcoord" Name 26 "ref_coords" Name 37 "blockSize" Name 41 "fragColor" Name 44 "tex2D_src1" Name 48 "samp" Name 53 "tex2D_src2" Name 61 "target_samp" Name 64 "ref_samp" Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 Decorate 44(tex2D_src1) Binding 1 Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 Decorate 48(samp) DescriptorSet 0 Decorate 48(samp) DecorationBlockMatchSamplerQCOM Decorate 53(tex2D_src2) Binding 2 Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) Binding 4 Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) DecorationBlockMatchSamplerQCOM Decorate 64(ref_samp) Binding 5 Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM Decorate 64(ref_samp) DecorationBlockMatchSamplerQCOM Decorate 71(tex2DArray_weights) Binding 0 Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Input 11(fvec4) 13(v_texcoord): 12(ptr) Variable Input 14: 6(int) Constant 0 15: TypePointer Input 10(float) 19: TypePointer Function 6(int) 21: 6(int) Constant 1 27: 6(int) Constant 2 32: 6(int) Constant 3 38: 6(int) Constant 4 39: 7(ivec2) ConstantComposite 38 38 40: TypePointer Output 11(fvec4) 41(fragColor): 40(ptr) Variable Output 42: TypeImage 10(float) 2D sampled format:Unknown 43: TypePointer UniformConstant 42 44(tex2D_src1): 43(ptr) Variable UniformConstant 46: TypeSampler 47: TypePointer UniformConstant 46 48(samp): 47(ptr) Variable UniformConstant 50: TypeSampledImage 42 53(tex2D_src2): 43(ptr) Variable UniformConstant 60: TypePointer UniformConstant 50 61(target_samp): 60(ptr) Variable UniformConstant 64(ref_samp): 60(ptr) Variable UniformConstant 69: TypeImage 10(float) 2D array sampled format:Unknown 70: TypePointer UniformConstant 69 71(tex2DArray_weights): 70(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(tgt_coords): 8(ptr) Variable Function 26(ref_coords): 8(ptr) Variable Function 37(blockSize): 8(ptr) Variable Function 16: 15(ptr) AccessChain 13(v_texcoord) 14 17: 10(float) Load 16 18: 6(int) ConvertFToU 17 20: 19(ptr) AccessChain 9(tgt_coords) 14 Store 20 18 22: 15(ptr) AccessChain 13(v_texcoord) 21 23: 10(float) Load 22 24: 6(int) ConvertFToU 23 25: 19(ptr) AccessChain 9(tgt_coords) 14 Store 25 24 28: 15(ptr) AccessChain 13(v_texcoord) 27 29: 10(float) Load 28 30: 6(int) ConvertFToU 29 31: 19(ptr) AccessChain 26(ref_coords) 14 Store 31 30 33: 15(ptr) AccessChain 13(v_texcoord) 32 34: 10(float) Load 33 35: 6(int) ConvertFToU 34 36: 19(ptr) AccessChain 26(ref_coords) 21 Store 36 35 Store 37(blockSize) 39 45: 42 Load 44(tex2D_src1) 49: 46 Load 48(samp) 51: 50 SampledImage 45 49 52: 7(ivec2) Load 9(tgt_coords) 54: 42 Load 53(tex2D_src2) 55: 46 Load 48(samp) 56: 50 SampledImage 54 55 57: 7(ivec2) Load 26(ref_coords) 58: 7(ivec2) Load 37(blockSize) 59: 11(fvec4) ImageBlockMatchWindowSSDQCOM 51 52 56 57 58 Store 41(fragColor) 59 62: 50 Load 61(target_samp) 63: 7(ivec2) Load 9(tgt_coords) 65: 50 Load 64(ref_samp) 66: 7(ivec2) Load 26(ref_coords) 67: 7(ivec2) Load 37(blockSize) 68: 11(fvec4) ImageBlockMatchWindowSSDQCOM 62 63 65 66 67 Store 41(fragColor) 68 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipBoxFilter.frag.out000066400000000000000000000103431506534232700235210ustar00rootroot00000000000000spv.tpipBoxFilter.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader Capability TextureBoxFilterQCOM Extension "SPV_QCOM_image_processing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 15 18 22 27 33 41 42 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" Name 4 "main" Name 9 "boxSize" Name 15 "fragColor" Name 18 "tex2D_src1" Name 22 "samp" Name 27 "v_texcoord" Name 33 "tex_samp" Name 41 "tex2DArray_weights" Name 42 "tex2D_src2" Decorate 15(fragColor) Location 0 Decorate 18(tex2D_src1) Binding 1 Decorate 18(tex2D_src1) DescriptorSet 0 Decorate 22(samp) Binding 3 Decorate 22(samp) DescriptorSet 0 Decorate 27(v_texcoord) Location 0 Decorate 33(tex_samp) Binding 4 Decorate 33(tex_samp) DescriptorSet 0 Decorate 41(tex2DArray_weights) Binding 0 Decorate 41(tex2DArray_weights) DescriptorSet 0 Decorate 42(tex2D_src2) Binding 2 Decorate 42(tex2D_src2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Function 7(fvec2) 10: 6(float) Constant 1075838976 11: 6(float) Constant 1083179008 12: 7(fvec2) ConstantComposite 10 11 13: TypeVector 6(float) 4 14: TypePointer Output 13(fvec4) 15(fragColor): 14(ptr) Variable Output 16: TypeImage 6(float) 2D sampled format:Unknown 17: TypePointer UniformConstant 16 18(tex2D_src1): 17(ptr) Variable UniformConstant 20: TypeSampler 21: TypePointer UniformConstant 20 22(samp): 21(ptr) Variable UniformConstant 24: TypeSampledImage 16 26: TypePointer Input 13(fvec4) 27(v_texcoord): 26(ptr) Variable Input 32: TypePointer UniformConstant 24 33(tex_samp): 32(ptr) Variable UniformConstant 39: TypeImage 6(float) 2D array sampled format:Unknown 40: TypePointer UniformConstant 39 41(tex2DArray_weights): 40(ptr) Variable UniformConstant 42(tex2D_src2): 17(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(boxSize): 8(ptr) Variable Function Store 9(boxSize) 12 19: 16 Load 18(tex2D_src1) 23: 20 Load 22(samp) 25: 24 SampledImage 19 23 28: 13(fvec4) Load 27(v_texcoord) 29: 7(fvec2) VectorShuffle 28 28 0 1 30: 7(fvec2) Load 9(boxSize) 31: 13(fvec4) ImageBoxFilterQCOM 25 29 30 Store 15(fragColor) 31 34: 24 Load 33(tex_samp) 35: 13(fvec4) Load 27(v_texcoord) 36: 7(fvec2) VectorShuffle 35 35 0 1 37: 7(fvec2) Load 9(boxSize) 38: 13(fvec4) ImageBoxFilterQCOM 34 36 37 Store 15(fragColor) 38 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipSampleWeighted.frag.out000066400000000000000000000110321506534232700245210ustar00rootroot00000000000000spv.tpipSampleWeighted.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader Capability TextureSampleWeightedQCOM Extension "SPV_QCOM_image_processing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 12 16 21 27 34 39 42 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" Name 4 "main" Name 9 "fragColor" Name 12 "tex2D_src1" Name 16 "samp" Name 21 "v_texcoord" Name 27 "tex2DArray_weights" Name 34 "tex_samp" Name 39 "tex_samp_array" Name 42 "tex2D_src2" Decorate 9(fragColor) Location 0 Decorate 12(tex2D_src1) Binding 1 Decorate 12(tex2D_src1) DescriptorSet 0 Decorate 16(samp) Binding 3 Decorate 16(samp) DescriptorSet 0 Decorate 21(v_texcoord) Location 0 Decorate 27(tex2DArray_weights) Binding 0 Decorate 27(tex2DArray_weights) DescriptorSet 0 Decorate 27(tex2DArray_weights) DecorationWeightTextureQCOM Decorate 34(tex_samp) Binding 4 Decorate 34(tex_samp) DescriptorSet 0 Decorate 39(tex_samp_array) Binding 5 Decorate 39(tex_samp_array) DescriptorSet 0 Decorate 39(tex_samp_array) DecorationWeightTextureQCOM Decorate 42(tex2D_src2) Binding 2 Decorate 42(tex2D_src2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(fragColor): 8(ptr) Variable Output 10: TypeImage 6(float) 2D sampled format:Unknown 11: TypePointer UniformConstant 10 12(tex2D_src1): 11(ptr) Variable UniformConstant 14: TypeSampler 15: TypePointer UniformConstant 14 16(samp): 15(ptr) Variable UniformConstant 18: TypeSampledImage 10 20: TypePointer Input 7(fvec4) 21(v_texcoord): 20(ptr) Variable Input 22: TypeVector 6(float) 2 25: TypeImage 6(float) 2D array sampled format:Unknown 26: TypePointer UniformConstant 25 27(tex2DArray_weights): 26(ptr) Variable UniformConstant 30: TypeSampledImage 25 33: TypePointer UniformConstant 18 34(tex_samp): 33(ptr) Variable UniformConstant 38: TypePointer UniformConstant 30 39(tex_samp_array): 38(ptr) Variable UniformConstant 42(tex2D_src2): 11(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 13: 10 Load 12(tex2D_src1) 17: 14 Load 16(samp) 19: 18 SampledImage 13 17 23: 7(fvec4) Load 21(v_texcoord) 24: 22(fvec2) VectorShuffle 23 23 0 1 28: 25 Load 27(tex2DArray_weights) 29: 14 Load 16(samp) 31: 30 SampledImage 28 29 32: 7(fvec4) ImageSampleWeightedQCOM 19 24 31 Store 9(fragColor) 32 35: 18 Load 34(tex_samp) 36: 7(fvec4) Load 21(v_texcoord) 37: 22(fvec2) VectorShuffle 36 36 0 1 40: 30 Load 39(tex_samp_array) 41: 7(fvec4) ImageSampleWeightedQCOM 35 37 40 Store 9(fragColor) 41 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.tpipTextureArrays.frag.out000066400000000000000000000145541506534232700244550ustar00rootroot00000000000000spv.tpipTextureArrays.frag // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader Capability TextureBlockMatchQCOM Extension "SPV_QCOM_image_processing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 46 51 60 67 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_QCOM_image_processing" Name 4 "main" Name 9 "tgt_coords" Name 13 "v_texcoord" Name 26 "ref_coords" Name 37 "blockSize" Name 40 "ii" Name 46 "fragColor" Name 51 "samplers" Name 60 "tex2D_srcs" Name 67 "samp" Decorate 13(v_texcoord) Location 0 Decorate 46(fragColor) Location 0 Decorate 51(samplers) Binding 5 Decorate 51(samplers) DescriptorSet 0 Decorate 55 DecorationBlockMatchTextureQCOM Decorate 60(tex2D_srcs) Binding 4 Decorate 60(tex2D_srcs) DescriptorSet 0 Decorate 63 DecorationBlockMatchTextureQCOM Decorate 67(samp) Binding 3 Decorate 67(samp) DescriptorSet 0 Decorate 74 DecorationBlockMatchTextureQCOM Decorate 79 DecorationBlockMatchTextureQCOM 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Function 7(ivec2) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypePointer Input 11(fvec4) 13(v_texcoord): 12(ptr) Variable Input 14: 6(int) Constant 0 15: TypePointer Input 10(float) 19: TypePointer Function 6(int) 21: 6(int) Constant 1 27: 6(int) Constant 2 32: 6(int) Constant 3 38: 6(int) Constant 4 39: 7(ivec2) ConstantComposite 38 38 43: 6(int) Constant 8 45: TypePointer Output 11(fvec4) 46(fragColor): 45(ptr) Variable Output 47: TypeImage 10(float) 2D sampled format:Unknown 48: TypeSampledImage 47 49: TypeArray 48 32 50: TypePointer UniformConstant 49 51(samplers): 50(ptr) Variable UniformConstant 52: TypeInt 32 1 53: 52(int) Constant 0 54: TypePointer UniformConstant 48 58: TypeArray 47 43 59: TypePointer UniformConstant 58 60(tex2D_srcs): 59(ptr) Variable UniformConstant 62: TypePointer UniformConstant 47 65: TypeSampler 66: TypePointer UniformConstant 65 67(samp): 66(ptr) Variable UniformConstant 73: 52(int) Constant 1 4(main): 2 Function None 3 5: Label 9(tgt_coords): 8(ptr) Variable Function 26(ref_coords): 8(ptr) Variable Function 37(blockSize): 8(ptr) Variable Function 40(ii): 19(ptr) Variable Function 16: 15(ptr) AccessChain 13(v_texcoord) 14 17: 10(float) Load 16 18: 6(int) ConvertFToU 17 20: 19(ptr) AccessChain 9(tgt_coords) 14 Store 20 18 22: 15(ptr) AccessChain 13(v_texcoord) 21 23: 10(float) Load 22 24: 6(int) ConvertFToU 23 25: 19(ptr) AccessChain 9(tgt_coords) 14 Store 25 24 28: 15(ptr) AccessChain 13(v_texcoord) 27 29: 10(float) Load 28 30: 6(int) ConvertFToU 29 31: 19(ptr) AccessChain 26(ref_coords) 14 Store 31 30 33: 15(ptr) AccessChain 13(v_texcoord) 32 34: 10(float) Load 33 35: 6(int) ConvertFToU 34 36: 19(ptr) AccessChain 26(ref_coords) 21 Store 36 35 Store 37(blockSize) 39 41: 19(ptr) AccessChain 9(tgt_coords) 14 42: 6(int) Load 41 44: 6(int) UMod 42 43 Store 40(ii) 44 55: 54(ptr) AccessChain 51(samplers) 53 56: 48 Load 55 57: 7(ivec2) Load 9(tgt_coords) 61: 6(int) Load 40(ii) 63: 62(ptr) AccessChain 60(tex2D_srcs) 61 64: 47 Load 63 68: 65 Load 67(samp) 69: 48 SampledImage 64 68 70: 7(ivec2) Load 26(ref_coords) 71: 7(ivec2) Load 37(blockSize) 72: 11(fvec4) ImageBlockMatchSSDQCOM 56 57 69 70 71 Store 46(fragColor) 72 74: 62(ptr) AccessChain 60(tex2D_srcs) 73 75: 47 Load 74 76: 65 Load 67(samp) 77: 48 SampledImage 75 76 78: 7(ivec2) Load 9(tgt_coords) 79: 54(ptr) AccessChain 51(samplers) 73 80: 48 Load 79 81: 7(ivec2) Load 26(ref_coords) 82: 7(ivec2) Load 37(blockSize) 83: 11(fvec4) ImageBlockMatchSADQCOM 77 78 80 81 82 Store 46(fragColor) 83 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.types.frag.out000066400000000000000000000411421506534232700220730ustar00rootroot00000000000000spv.types.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 260 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 96 98 105 107 114 116 123 125 132 134 141 143 150 152 159 161 165 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 8 "b" Name 10 "u_b" Name 12 "i_b" Name 17 "b2" Name 19 "u_b2" Name 24 "i_b2" Name 38 "b3" Name 40 "u_b3" Name 43 "i_b3" Name 63 "b4" Name 65 "u_b4" Name 68 "i_b4" Name 94 "i" Name 96 "u_i" Name 98 "i_i" Name 103 "i2" Name 105 "u_i2" Name 107 "i_i2" Name 112 "i3" Name 114 "u_i3" Name 116 "i_i3" Name 121 "i4" Name 123 "u_i4" Name 125 "i_i4" Name 130 "f" Name 132 "u_f" Name 134 "i_f" Name 139 "f2" Name 141 "u_f2" Name 143 "i_f2" Name 148 "f3" Name 150 "u_f3" Name 152 "i_f3" Name 157 "f4" Name 159 "u_f4" Name 161 "i_f4" Name 165 "gl_FragColor" Decorate 96(u_i) Flat Decorate 96(u_i) Location 0 Decorate 98(i_i) Flat Decorate 98(i_i) Location 8 Decorate 105(u_i2) Flat Decorate 105(u_i2) Location 1 Decorate 107(i_i2) Flat Decorate 107(i_i2) Location 9 Decorate 114(u_i3) Flat Decorate 114(u_i3) Location 2 Decorate 116(i_i3) Flat Decorate 116(i_i3) Location 10 Decorate 123(u_i4) Flat Decorate 123(u_i4) Location 3 Decorate 125(i_i4) Flat Decorate 125(i_i4) Location 11 Decorate 132(u_f) Location 4 Decorate 134(i_f) Location 12 Decorate 141(u_f2) Location 5 Decorate 143(i_f2) Location 13 Decorate 150(u_f3) Location 6 Decorate 152(i_f3) Location 14 Decorate 159(u_f4) Location 7 Decorate 161(i_f4) Location 15 Decorate 165(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypePointer Function 6(bool) 9: TypePointer Private 6(bool) 10(u_b): 9(ptr) Variable Private 12(i_b): 9(ptr) Variable Private 15: TypeVector 6(bool) 2 16: TypePointer Function 15(bvec2) 18: TypePointer Private 15(bvec2) 19(u_b2): 18(ptr) Variable Private 20: TypeInt 32 0 21: 20(int) Constant 0 24(i_b2): 18(ptr) Variable Private 28: 20(int) Constant 1 36: TypeVector 6(bool) 3 37: TypePointer Function 36(bvec3) 39: TypePointer Private 36(bvec3) 40(u_b3): 39(ptr) Variable Private 43(i_b3): 39(ptr) Variable Private 53: 20(int) Constant 2 61: TypeVector 6(bool) 4 62: TypePointer Function 61(bvec4) 64: TypePointer Private 61(bvec4) 65(u_b4): 64(ptr) Variable Private 68(i_b4): 64(ptr) Variable Private 84: 20(int) Constant 3 92: TypeInt 32 1 93: TypePointer Function 92(int) 95: TypePointer Input 92(int) 96(u_i): 95(ptr) Variable Input 98(i_i): 95(ptr) Variable Input 101: TypeVector 92(int) 2 102: TypePointer Function 101(ivec2) 104: TypePointer Input 101(ivec2) 105(u_i2): 104(ptr) Variable Input 107(i_i2): 104(ptr) Variable Input 110: TypeVector 92(int) 3 111: TypePointer Function 110(ivec3) 113: TypePointer Input 110(ivec3) 114(u_i3): 113(ptr) Variable Input 116(i_i3): 113(ptr) Variable Input 119: TypeVector 92(int) 4 120: TypePointer Function 119(ivec4) 122: TypePointer Input 119(ivec4) 123(u_i4): 122(ptr) Variable Input 125(i_i4): 122(ptr) Variable Input 128: TypeFloat 32 129: TypePointer Function 128(float) 131: TypePointer Input 128(float) 132(u_f): 131(ptr) Variable Input 134(i_f): 131(ptr) Variable Input 137: TypeVector 128(float) 2 138: TypePointer Function 137(fvec2) 140: TypePointer Input 137(fvec2) 141(u_f2): 140(ptr) Variable Input 143(i_f2): 140(ptr) Variable Input 146: TypeVector 128(float) 3 147: TypePointer Function 146(fvec3) 149: TypePointer Input 146(fvec3) 150(u_f3): 149(ptr) Variable Input 152(i_f3): 149(ptr) Variable Input 155: TypeVector 128(float) 4 156: TypePointer Function 155(fvec4) 158: TypePointer Input 155(fvec4) 159(u_f4): 158(ptr) Variable Input 161(i_f4): 158(ptr) Variable Input 164: TypePointer Output 155(fvec4) 165(gl_FragColor): 164(ptr) Variable Output 257: 128(float) Constant 1065353216 258: 155(fvec4) ConstantComposite 257 257 257 257 4(main): 2 Function None 3 5: Label 8(b): 7(ptr) Variable Function 17(b2): 16(ptr) Variable Function 38(b3): 37(ptr) Variable Function 63(b4): 62(ptr) Variable Function 94(i): 93(ptr) Variable Function 103(i2): 102(ptr) Variable Function 112(i3): 111(ptr) Variable Function 121(i4): 120(ptr) Variable Function 130(f): 129(ptr) Variable Function 139(f2): 138(ptr) Variable Function 148(f3): 147(ptr) Variable Function 157(f4): 156(ptr) Variable Function 194: 156(ptr) Variable Function 11: 6(bool) Load 10(u_b) 13: 6(bool) Load 12(i_b) 14: 6(bool) LogicalAnd 11 13 Store 8(b) 14 22: 9(ptr) AccessChain 19(u_b2) 21 23: 6(bool) Load 22 25: 9(ptr) AccessChain 24(i_b2) 21 26: 6(bool) Load 25 27: 6(bool) LogicalAnd 23 26 29: 9(ptr) AccessChain 19(u_b2) 28 30: 6(bool) Load 29 31: 6(bool) LogicalAnd 27 30 32: 9(ptr) AccessChain 24(i_b2) 28 33: 6(bool) Load 32 34: 6(bool) LogicalAnd 31 33 35: 15(bvec2) CompositeConstruct 34 34 Store 17(b2) 35 41: 9(ptr) AccessChain 40(u_b3) 21 42: 6(bool) Load 41 44: 9(ptr) AccessChain 43(i_b3) 21 45: 6(bool) Load 44 46: 6(bool) LogicalAnd 42 45 47: 9(ptr) AccessChain 40(u_b3) 28 48: 6(bool) Load 47 49: 6(bool) LogicalAnd 46 48 50: 9(ptr) AccessChain 43(i_b3) 28 51: 6(bool) Load 50 52: 6(bool) LogicalAnd 49 51 54: 9(ptr) AccessChain 40(u_b3) 53 55: 6(bool) Load 54 56: 6(bool) LogicalAnd 52 55 57: 9(ptr) AccessChain 43(i_b3) 53 58: 6(bool) Load 57 59: 6(bool) LogicalAnd 56 58 60: 36(bvec3) CompositeConstruct 59 59 59 Store 38(b3) 60 66: 9(ptr) AccessChain 65(u_b4) 21 67: 6(bool) Load 66 69: 9(ptr) AccessChain 68(i_b4) 21 70: 6(bool) Load 69 71: 6(bool) LogicalAnd 67 70 72: 9(ptr) AccessChain 65(u_b4) 28 73: 6(bool) Load 72 74: 6(bool) LogicalAnd 71 73 75: 9(ptr) AccessChain 68(i_b4) 28 76: 6(bool) Load 75 77: 6(bool) LogicalAnd 74 76 78: 9(ptr) AccessChain 65(u_b4) 53 79: 6(bool) Load 78 80: 6(bool) LogicalAnd 77 79 81: 9(ptr) AccessChain 68(i_b4) 53 82: 6(bool) Load 81 83: 6(bool) LogicalAnd 80 82 85: 9(ptr) AccessChain 65(u_b4) 84 86: 6(bool) Load 85 87: 6(bool) LogicalAnd 83 86 88: 9(ptr) AccessChain 68(i_b4) 84 89: 6(bool) Load 88 90: 6(bool) LogicalAnd 87 89 91: 61(bvec4) CompositeConstruct 90 90 90 90 Store 63(b4) 91 97: 92(int) Load 96(u_i) 99: 92(int) Load 98(i_i) 100: 92(int) IAdd 97 99 Store 94(i) 100 106: 101(ivec2) Load 105(u_i2) 108: 101(ivec2) Load 107(i_i2) 109: 101(ivec2) IAdd 106 108 Store 103(i2) 109 115: 110(ivec3) Load 114(u_i3) 117: 110(ivec3) Load 116(i_i3) 118: 110(ivec3) IAdd 115 117 Store 112(i3) 118 124: 119(ivec4) Load 123(u_i4) 126: 119(ivec4) Load 125(i_i4) 127: 119(ivec4) IAdd 124 126 Store 121(i4) 127 133: 128(float) Load 132(u_f) 135: 128(float) Load 134(i_f) 136: 128(float) FAdd 133 135 Store 130(f) 136 142: 137(fvec2) Load 141(u_f2) 144: 137(fvec2) Load 143(i_f2) 145: 137(fvec2) FAdd 142 144 Store 139(f2) 145 151: 146(fvec3) Load 150(u_f3) 153: 146(fvec3) Load 152(i_f3) 154: 146(fvec3) FAdd 151 153 Store 148(f3) 154 160: 155(fvec4) Load 159(u_f4) 162: 155(fvec4) Load 161(i_f4) 163: 155(fvec4) FAdd 160 162 Store 157(f4) 163 166: 6(bool) Load 8(b) 167: 7(ptr) AccessChain 17(b2) 21 168: 6(bool) Load 167 169: 6(bool) LogicalOr 166 168 170: 7(ptr) AccessChain 17(b2) 28 171: 6(bool) Load 170 172: 6(bool) LogicalOr 169 171 173: 7(ptr) AccessChain 38(b3) 21 174: 6(bool) Load 173 175: 6(bool) LogicalOr 172 174 176: 7(ptr) AccessChain 38(b3) 28 177: 6(bool) Load 176 178: 6(bool) LogicalOr 175 177 179: 7(ptr) AccessChain 38(b3) 53 180: 6(bool) Load 179 181: 6(bool) LogicalOr 178 180 182: 7(ptr) AccessChain 63(b4) 21 183: 6(bool) Load 182 184: 6(bool) LogicalOr 181 183 185: 7(ptr) AccessChain 63(b4) 28 186: 6(bool) Load 185 187: 6(bool) LogicalOr 184 186 188: 7(ptr) AccessChain 63(b4) 53 189: 6(bool) Load 188 190: 6(bool) LogicalOr 187 189 191: 7(ptr) AccessChain 63(b4) 84 192: 6(bool) Load 191 193: 6(bool) LogicalOr 190 192 SelectionMerge 196 None BranchConditional 193 195 256 195: Label 197: 92(int) Load 94(i) 198: 93(ptr) AccessChain 103(i2) 21 199: 92(int) Load 198 200: 92(int) IAdd 197 199 201: 93(ptr) AccessChain 103(i2) 28 202: 92(int) Load 201 203: 92(int) IAdd 200 202 204: 93(ptr) AccessChain 112(i3) 21 205: 92(int) Load 204 206: 92(int) IAdd 203 205 207: 93(ptr) AccessChain 112(i3) 28 208: 92(int) Load 207 209: 92(int) IAdd 206 208 210: 93(ptr) AccessChain 112(i3) 53 211: 92(int) Load 210 212: 92(int) IAdd 209 211 213: 93(ptr) AccessChain 121(i4) 21 214: 92(int) Load 213 215: 92(int) IAdd 212 214 216: 93(ptr) AccessChain 121(i4) 28 217: 92(int) Load 216 218: 92(int) IAdd 215 217 219: 93(ptr) AccessChain 121(i4) 53 220: 92(int) Load 219 221: 92(int) IAdd 218 220 222: 93(ptr) AccessChain 121(i4) 84 223: 92(int) Load 222 224: 92(int) IAdd 221 223 225: 128(float) ConvertSToF 224 226: 128(float) Load 130(f) 227: 128(float) FAdd 225 226 228: 129(ptr) AccessChain 139(f2) 21 229: 128(float) Load 228 230: 128(float) FAdd 227 229 231: 129(ptr) AccessChain 139(f2) 28 232: 128(float) Load 231 233: 128(float) FAdd 230 232 234: 129(ptr) AccessChain 148(f3) 21 235: 128(float) Load 234 236: 128(float) FAdd 233 235 237: 129(ptr) AccessChain 148(f3) 28 238: 128(float) Load 237 239: 128(float) FAdd 236 238 240: 129(ptr) AccessChain 148(f3) 53 241: 128(float) Load 240 242: 128(float) FAdd 239 241 243: 129(ptr) AccessChain 157(f4) 21 244: 128(float) Load 243 245: 128(float) FAdd 242 244 246: 129(ptr) AccessChain 157(f4) 28 247: 128(float) Load 246 248: 128(float) FAdd 245 247 249: 129(ptr) AccessChain 157(f4) 53 250: 128(float) Load 249 251: 128(float) FAdd 248 250 252: 129(ptr) AccessChain 157(f4) 84 253: 128(float) Load 252 254: 128(float) FAdd 251 253 255: 155(fvec4) CompositeConstruct 254 254 254 254 Store 194 255 Branch 196 256: Label Store 194 258 Branch 196 196: Label 259: 155(fvec4) Load 194 Store 165(gl_FragColor) 259 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.uint.frag.out000066400000000000000000000540651506534232700217160ustar00rootroot00000000000000spv.uint.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 213 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 15 68 77 206 208 210 ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 8 "count" Name 12 "u" Name 15 "t" Name 55 "shiftedii" Name 57 "shiftedui" Name 59 "shiftediu" Name 60 "shifteduu" Name 68 "c" Name 72 "usampler" Name 77 "tc" Name 111 "af" Name 115 "ab" Name 118 "ai" Name 152 "mask1" Name 154 "mask2" Name 156 "mask3" Name 160 "mask4" Name 206 "f" Name 208 "v" Name 210 "i" Name 212 "b" Decorate 8(count) RelaxedPrecision Decorate 12(u) RelaxedPrecision Decorate 15(t) RelaxedPrecision Decorate 15(t) Flat Decorate 15(t) Location 0 Decorate 19 RelaxedPrecision Decorate 21 RelaxedPrecision Decorate 27 RelaxedPrecision Decorate 28 RelaxedPrecision Decorate 32 RelaxedPrecision Decorate 33 RelaxedPrecision Decorate 38 RelaxedPrecision Decorate 39 RelaxedPrecision Decorate 43 RelaxedPrecision Decorate 44 RelaxedPrecision Decorate 48 RelaxedPrecision Decorate 49 RelaxedPrecision Decorate 53 RelaxedPrecision Decorate 54 RelaxedPrecision Decorate 55(shiftedii) RelaxedPrecision Decorate 57(shiftedui) RelaxedPrecision Decorate 59(shiftediu) RelaxedPrecision Decorate 60(shifteduu) RelaxedPrecision Decorate 61 RelaxedPrecision Decorate 62 RelaxedPrecision Decorate 68(c) RelaxedPrecision Decorate 68(c) Location 0 Decorate 72(usampler) RelaxedPrecision Decorate 72(usampler) Binding 0 Decorate 72(usampler) DescriptorSet 0 Decorate 73 RelaxedPrecision Decorate 77(tc) RelaxedPrecision Decorate 77(tc) Location 2 Decorate 78 RelaxedPrecision Decorate 79 RelaxedPrecision Decorate 80 RelaxedPrecision Decorate 81 RelaxedPrecision Decorate 85 RelaxedPrecision Decorate 86 RelaxedPrecision Decorate 88 RelaxedPrecision Decorate 89 RelaxedPrecision Decorate 90 RelaxedPrecision Decorate 91 RelaxedPrecision Decorate 92 RelaxedPrecision Decorate 93 RelaxedPrecision Decorate 97 RelaxedPrecision Decorate 98 RelaxedPrecision Decorate 101 RelaxedPrecision Decorate 102 RelaxedPrecision Decorate 105 RelaxedPrecision Decorate 111(af) RelaxedPrecision Decorate 112 RelaxedPrecision Decorate 113 RelaxedPrecision Decorate 116 RelaxedPrecision Decorate 118(ai) RelaxedPrecision Decorate 119 RelaxedPrecision Decorate 120 RelaxedPrecision Decorate 121 RelaxedPrecision Decorate 122 RelaxedPrecision Decorate 124 RelaxedPrecision Decorate 125 RelaxedPrecision Decorate 126 RelaxedPrecision Decorate 127 RelaxedPrecision Decorate 128 RelaxedPrecision Decorate 129 RelaxedPrecision Decorate 130 RelaxedPrecision Decorate 131 RelaxedPrecision Decorate 135 RelaxedPrecision Decorate 136 RelaxedPrecision Decorate 140 RelaxedPrecision Decorate 141 RelaxedPrecision Decorate 145 RelaxedPrecision Decorate 146 RelaxedPrecision Decorate 150 RelaxedPrecision Decorate 151 RelaxedPrecision Decorate 152(mask1) RelaxedPrecision Decorate 154(mask2) RelaxedPrecision Decorate 156(mask3) RelaxedPrecision Decorate 157 RelaxedPrecision Decorate 159 RelaxedPrecision Decorate 160(mask4) RelaxedPrecision Decorate 162 RelaxedPrecision Decorate 163 RelaxedPrecision Decorate 167 RelaxedPrecision Decorate 168 RelaxedPrecision Decorate 169 RelaxedPrecision Decorate 170 RelaxedPrecision Decorate 171 RelaxedPrecision Decorate 175 RelaxedPrecision Decorate 176 RelaxedPrecision Decorate 177 RelaxedPrecision Decorate 178 RelaxedPrecision Decorate 179 RelaxedPrecision Decorate 180 RelaxedPrecision Decorate 184 RelaxedPrecision Decorate 185 RelaxedPrecision Decorate 186 RelaxedPrecision Decorate 187 RelaxedPrecision Decorate 188 RelaxedPrecision Decorate 192 RelaxedPrecision Decorate 193 RelaxedPrecision Decorate 194 RelaxedPrecision Decorate 195 RelaxedPrecision Decorate 196 RelaxedPrecision Decorate 197 RelaxedPrecision Decorate 198 RelaxedPrecision Decorate 202 RelaxedPrecision Decorate 203 RelaxedPrecision Decorate 206(f) RelaxedPrecision Decorate 206(f) Location 1 Decorate 208(v) RelaxedPrecision Decorate 208(v) Flat Decorate 208(v) Location 3 Decorate 210(i) RelaxedPrecision Decorate 210(i) Flat Decorate 210(i) Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 1 10: TypeInt 32 0 11: TypePointer Function 10(int) 13: TypeVector 10(int) 2 14: TypePointer Input 13(ivec2) 15(t): 14(ptr) Variable Input 16: 10(int) Constant 1 17: TypePointer Input 10(int) 20: 10(int) Constant 3 22: TypeBool 23: 22(bool) ConstantTrue 26: 6(int) Constant 2 31: 6(int) Constant 3 34: 22(bool) ConstantFalse 37: 6(int) Constant 5 42: 6(int) Constant 7 47: 6(int) Constant 11 52: 6(int) Constant 13 56: 6(int) Constant 4294967295 58: 10(int) Constant 4194303 66: TypeVector 10(int) 4 67: TypePointer Output 66(ivec4) 68(c): 67(ptr) Variable Output 69: TypeImage 10(int) 2D sampled format:Unknown 70: TypeSampledImage 69 71: TypePointer UniformConstant 70 72(usampler): 71(ptr) Variable UniformConstant 74: TypeFloat 32 75: TypeVector 74(float) 2 76: TypePointer Input 75(fvec2) 77(tc): 76(ptr) Variable Input 87: 74(float) Constant 1065353216 99: 74(float) Constant 1073741824 100: 75(fvec2) ConstantComposite 99 99 103: 10(int) Constant 0 106: 10(int) Constant 4 110: TypePointer Function 74(float) 114: TypePointer Function 22(bool) 134: 6(int) Constant 17 139: 6(int) Constant 19 144: 6(int) Constant 23 149: 6(int) Constant 27 153: 10(int) Constant 161 155: 10(int) Constant 2576 158: 6(int) Constant 4 161: 10(int) Constant 2737 199: 10(int) Constant 4294967295 200: TypePointer Output 10(int) 205: TypePointer Input 74(float) 206(f): 205(ptr) Variable Input 207: TypePointer Input 66(ivec4) 208(v): 207(ptr) Variable Input 209: TypePointer Input 6(int) 210(i): 209(ptr) Variable Input 211: TypePointer Private 22(bool) 212(b): 211(ptr) Variable Private 4(main): 2 Function None 3 5: Label 8(count): 7(ptr) Variable Function 12(u): 11(ptr) Variable Function 55(shiftedii): 7(ptr) Variable Function 57(shiftedui): 11(ptr) Variable Function 59(shiftediu): 7(ptr) Variable Function 60(shifteduu): 11(ptr) Variable Function 111(af): 110(ptr) Variable Function 115(ab): 114(ptr) Variable Function 118(ai): 7(ptr) Variable Function 152(mask1): 11(ptr) Variable Function 154(mask2): 11(ptr) Variable Function 156(mask3): 11(ptr) Variable Function 160(mask4): 11(ptr) Variable Function Store 8(count) 9 18: 17(ptr) AccessChain 15(t) 16 19: 10(int) Load 18 21: 10(int) IAdd 19 20 Store 12(u) 21 SelectionMerge 25 None BranchConditional 23 24 25 24: Label 27: 6(int) Load 8(count) 28: 6(int) IMul 27 26 Store 8(count) 28 Branch 25 25: Label SelectionMerge 30 None BranchConditional 23 29 30 29: Label 32: 6(int) Load 8(count) 33: 6(int) IMul 32 31 Store 8(count) 33 Branch 30 30: Label SelectionMerge 36 None BranchConditional 34 35 36 35: Label 38: 6(int) Load 8(count) 39: 6(int) IMul 38 37 Store 8(count) 39 Branch 36 36: Label SelectionMerge 41 None BranchConditional 23 40 41 40: Label 43: 6(int) Load 8(count) 44: 6(int) IMul 43 42 Store 8(count) 44 Branch 41 41: Label SelectionMerge 46 None BranchConditional 23 45 46 45: Label 48: 6(int) Load 8(count) 49: 6(int) IMul 48 47 Store 8(count) 49 Branch 46 46: Label SelectionMerge 51 None BranchConditional 34 50 51 50: Label 53: 6(int) Load 8(count) 54: 6(int) IMul 53 52 Store 8(count) 54 Branch 51 51: Label Store 55(shiftedii) 56 Store 57(shiftedui) 58 Store 59(shiftediu) 56 Store 60(shifteduu) 58 61: 6(int) Load 55(shiftedii) 62: 6(int) Load 59(shiftediu) 63: 22(bool) IEqual 61 62 SelectionMerge 65 None BranchConditional 63 64 65 64: Label 73: 70 Load 72(usampler) 78: 75(fvec2) Load 77(tc) 79: 66(ivec4) ImageSampleImplicitLod 73 78 Store 68(c) 79 Branch 65 65: Label 80: 10(int) Load 57(shiftedui) 81: 10(int) Load 60(shifteduu) 82: 22(bool) IEqual 80 81 SelectionMerge 84 None BranchConditional 82 83 84 83: Label 85: 70 Load 72(usampler) 86: 75(fvec2) Load 77(tc) 88: 75(fvec2) CompositeConstruct 87 87 89: 75(fvec2) FAdd 86 88 90: 66(ivec4) ImageSampleImplicitLod 85 89 Store 68(c) 90 Branch 84 84: Label 91: 6(int) Load 55(shiftedii) 92: 10(int) Load 57(shiftedui) 93: 6(int) Bitcast 92 94: 22(bool) IEqual 91 93 SelectionMerge 96 None BranchConditional 94 95 96 95: Label 97: 70 Load 72(usampler) 98: 75(fvec2) Load 77(tc) 101: 75(fvec2) FSub 98 100 102: 66(ivec4) ImageSampleImplicitLod 97 101 Store 68(c) 102 Branch 96 96: Label 104: 17(ptr) AccessChain 15(t) 103 105: 10(int) Load 104 107: 22(bool) UGreaterThan 105 106 SelectionMerge 109 None BranchConditional 107 108 109 108: Label 112: 10(int) Load 12(u) 113: 74(float) ConvertUToF 112 Store 111(af) 113 116: 10(int) Load 12(u) 117: 22(bool) INotEqual 116 103 Store 115(ab) 117 119: 10(int) Load 12(u) 120: 6(int) Bitcast 119 Store 118(ai) 120 121: 74(float) Load 111(af) 122: 10(int) ConvertFToU 121 123: 22(bool) Load 115(ab) 124: 10(int) Select 123 16 103 125: 6(int) Load 118(ai) 126: 10(int) Bitcast 125 127: 6(int) Load 8(count) 128: 10(int) Bitcast 127 129: 66(ivec4) CompositeConstruct 122 124 126 128 130: 66(ivec4) Load 68(c) 131: 66(ivec4) IAdd 130 129 Store 68(c) 131 Branch 109 109: Label SelectionMerge 133 None BranchConditional 23 132 133 132: Label 135: 6(int) Load 8(count) 136: 6(int) IMul 135 134 Store 8(count) 136 Branch 133 133: Label SelectionMerge 138 None BranchConditional 34 137 138 137: Label 140: 6(int) Load 8(count) 141: 6(int) IMul 140 139 Store 8(count) 141 Branch 138 138: Label SelectionMerge 143 None BranchConditional 23 142 143 142: Label 145: 6(int) Load 8(count) 146: 6(int) IMul 145 144 Store 8(count) 146 Branch 143 143: Label SelectionMerge 148 None BranchConditional 23 147 148 147: Label 150: 6(int) Load 8(count) 151: 6(int) IMul 150 149 Store 8(count) 151 Branch 148 148: Label Store 152(mask1) 153 Store 154(mask2) 155 157: 10(int) Load 152(mask1) 159: 10(int) ShiftLeftLogical 157 158 Store 156(mask3) 159 Store 160(mask4) 161 162: 10(int) Load 156(mask3) 163: 10(int) Load 154(mask2) 164: 22(bool) IEqual 162 163 SelectionMerge 166 None BranchConditional 164 165 166 165: Label 167: 6(int) Load 8(count) 168: 6(int) IMul 167 26 Store 8(count) 168 Branch 166 166: Label 169: 10(int) Load 156(mask3) 170: 10(int) Load 152(mask1) 171: 10(int) BitwiseAnd 169 170 172: 22(bool) INotEqual 171 103 SelectionMerge 174 None BranchConditional 172 173 174 173: Label 175: 6(int) Load 8(count) 176: 6(int) IMul 175 31 Store 8(count) 176 Branch 174 174: Label 177: 10(int) Load 152(mask1) 178: 10(int) Load 156(mask3) 179: 10(int) BitwiseOr 177 178 180: 10(int) Load 160(mask4) 181: 22(bool) IEqual 179 180 SelectionMerge 183 None BranchConditional 181 182 183 182: Label 184: 6(int) Load 8(count) 185: 6(int) IMul 184 37 Store 8(count) 185 Branch 183 183: Label 186: 10(int) Load 152(mask1) 187: 10(int) Load 160(mask4) 188: 10(int) BitwiseXor 186 187 189: 22(bool) IEqual 188 155 SelectionMerge 191 None BranchConditional 189 190 191 190: Label 192: 6(int) Load 8(count) 193: 6(int) IMul 192 42 Store 8(count) 193 Branch 191 191: Label 194: 6(int) Load 8(count) 195: 10(int) Bitcast 194 196: 66(ivec4) CompositeConstruct 195 195 195 195 197: 66(ivec4) Load 68(c) 198: 66(ivec4) IAdd 197 196 Store 68(c) 198 201: 200(ptr) AccessChain 68(c) 103 202: 10(int) Load 201 203: 10(int) IAdd 202 199 204: 200(ptr) AccessChain 68(c) 103 Store 204 203 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.uniformArray.frag.out000066400000000000000000000104261506534232700234060ustar00rootroot00000000000000spv.uniformArray.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 14 25 43 54 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "texColor" Name 14 "color" Name 25 "inColor" Name 43 "alpha" Name 54 "gl_FragColor" Name 59 "texSampler2D" Decorate 14(color) Location 1 Decorate 25(inColor) Location 0 Decorate 43(alpha) Location 7 Decorate 54(gl_FragColor) Location 0 Decorate 59(texSampler2D) Binding 0 Decorate 59(texSampler2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypeInt 32 0 11: 10(int) Constant 6 12: TypeArray 7(fvec4) 11 13: TypePointer Input 12 14(color): 13(ptr) Variable Input 15: TypeInt 32 1 16: 15(int) Constant 1 17: TypePointer Input 7(fvec4) 23: TypeVector 6(float) 3 24: TypePointer Input 23(fvec3) 25(inColor): 24(ptr) Variable Input 30: 10(int) Constant 0 31: TypePointer Function 6(float) 34: 10(int) Constant 1 37: 10(int) Constant 2 40: 10(int) Constant 16 41: TypeArray 6(float) 40 42: TypePointer Input 41 43(alpha): 42(ptr) Variable Input 44: 15(int) Constant 12 45: TypePointer Input 6(float) 48: 10(int) Constant 3 53: TypePointer Output 7(fvec4) 54(gl_FragColor): 53(ptr) Variable Output 56: TypeImage 6(float) 2D sampled format:Unknown 57: TypeSampledImage 56 58: TypePointer UniformConstant 57 59(texSampler2D): 58(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(texColor): 8(ptr) Variable Function 18: 17(ptr) AccessChain 14(color) 16 19: 7(fvec4) Load 18 20: 17(ptr) AccessChain 14(color) 16 21: 7(fvec4) Load 20 22: 7(fvec4) FAdd 19 21 Store 9(texColor) 22 26: 23(fvec3) Load 25(inColor) 27: 7(fvec4) Load 9(texColor) 28: 23(fvec3) VectorShuffle 27 27 0 1 2 29: 23(fvec3) FAdd 28 26 32: 31(ptr) AccessChain 9(texColor) 30 33: 6(float) CompositeExtract 29 0 Store 32 33 35: 31(ptr) AccessChain 9(texColor) 34 36: 6(float) CompositeExtract 29 1 Store 35 36 38: 31(ptr) AccessChain 9(texColor) 37 39: 6(float) CompositeExtract 29 2 Store 38 39 46: 45(ptr) AccessChain 43(alpha) 44 47: 6(float) Load 46 49: 31(ptr) AccessChain 9(texColor) 48 50: 6(float) Load 49 51: 6(float) FAdd 50 47 52: 31(ptr) AccessChain 9(texColor) 48 Store 52 51 55: 7(fvec4) Load 9(texColor) Store 54(gl_FragColor) 55 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.uniformInitializer.frag.out000066400000000000000000000031741506534232700246150ustar00rootroot00000000000000spv.uniformInitializer.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 ExecutionMode 4 OriginLowerLeft Source GLSL 450 Name 4 "main" Name 9 "color" Name 14 "in_color" Decorate 9(color) Location 0 Decorate 14(in_color) Location 0 Decorate 14(in_color) Binding 0 Decorate 14(in_color) DescriptorSet 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: 6(float) Constant 0 11: 6(float) Constant 1065353216 12: 7(fvec4) ConstantComposite 10 11 10 11 13: TypePointer UniformConstant 7(fvec4) 14(in_color): 13(ptr) Variable UniformConstant 12 4(main): 2 Function None 3 5: Label 15: 7(fvec4) Load 14(in_color) Store 9(color) 15 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.uniformInitializerSpecConstant.frag.out000066400000000000000000000003521506534232700271350ustar00rootroot00000000000000spv.uniformInitializerSpecConstant.frag ERROR: 0:9: '=' : uniform initializers must be constant 'layout( location=4) uniform float' ERROR: 1 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.uniformInitializerStruct.frag.out000066400000000000000000000107661506534232700260270ustar00rootroot00000000000000spv.uniformInitializerStruct.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 63 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 ExecutionMode 4 OriginLowerLeft Source GLSL 450 Name 4 "main" Name 9 "color" Name 15 "i" Name 26 "" MemberName 26 0 "r" MemberName 26 1 "g" MemberName 26 2 "b" Name 34 "parts" Decorate 9(color) Location 0 Decorate 34(parts) Location 0 Decorate 34(parts) Binding 0 Decorate 34(parts) DescriptorSet 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: 6(float) Constant 0 11: 6(float) Constant 1065353216 12: 7(fvec4) ConstantComposite 10 10 10 11 13: TypeInt 32 1 14: TypePointer Function 13(int) 16: 13(int) Constant 0 23: 13(int) Constant 2 24: TypeBool 26: TypeStruct 6(float) 6(float) 6(float) 27: TypeInt 32 0 28: 27(int) Constant 2 29: TypeArray 26(struct) 28 30: 26(struct) ConstantComposite 11 11 11 31: 26(struct) ConstantComposite 10 11 10 32: 29 ConstantComposite 30 31 33: TypePointer UniformConstant 29 34(parts): 33(ptr) Variable UniformConstant 32 36: TypePointer UniformConstant 6(float) 39: 27(int) Constant 0 40: TypePointer Output 6(float) 46: 13(int) Constant 1 49: 27(int) Constant 1 4(main): 2 Function None 3 5: Label 15(i): 14(ptr) Variable Function Store 9(color) 12 Store 15(i) 16 Branch 17 17: Label LoopMerge 19 20 None Branch 21 21: Label 22: 13(int) Load 15(i) 25: 24(bool) SLessThan 22 23 BranchConditional 25 18 19 18: Label 35: 13(int) Load 15(i) 37: 36(ptr) AccessChain 34(parts) 35 16 38: 6(float) Load 37 41: 40(ptr) AccessChain 9(color) 39 42: 6(float) Load 41 43: 6(float) FAdd 42 38 44: 40(ptr) AccessChain 9(color) 39 Store 44 43 45: 13(int) Load 15(i) 47: 36(ptr) AccessChain 34(parts) 45 46 48: 6(float) Load 47 50: 40(ptr) AccessChain 9(color) 49 51: 6(float) Load 50 52: 6(float) FAdd 51 48 53: 40(ptr) AccessChain 9(color) 49 Store 53 52 54: 13(int) Load 15(i) 55: 36(ptr) AccessChain 34(parts) 54 23 56: 6(float) Load 55 57: 40(ptr) AccessChain 9(color) 28 58: 6(float) Load 57 59: 6(float) FAdd 58 56 60: 40(ptr) AccessChain 9(color) 28 Store 60 59 Branch 20 20: Label 61: 13(int) Load 15(i) 62: 13(int) IAdd 61 46 Store 15(i) 62 Branch 17 19: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.unit1.frag.out000066400000000000000000000274231506534232700217750ustar00rootroot00000000000000spv.unit1.frag Shader version: 460 gl_FragCoord origin is upper left 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 highp float) 0:12 'f' ( global highp float) 0:12 Constant: 0:12 10.000000 0:13 Sequence 0:13 move second child to first child ( temp highp float) 0:13 'g' ( temp highp float) 0:13 Function Call: foo( ( global highp float) 0:14 add second child into first child ( temp highp float) 0:14 'f' ( global highp float) 0:14 'g' ( temp highp float) 0:15 add second child into first child ( temp highp float) 0:15 'f' ( global highp float) 0:15 direct index ( temp highp float) 0:15 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:15 Constant: 0:15 1 (const int) 0:? Linker Objects 0:? 'f' ( global highp float) 0:? 'a1' ( global highp float) 0:? 'cout' ( out highp float) spv.unit2.frag Shader version: 410 gl_FragCoord origin is upper left 0:? Sequence 0:12 Function Definition: foo( ( global highp float) 0:12 Function Parameters: 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp highp float) 0:14 'h2' ( temp highp float) 0:14 add ( temp highp float) 0:14 component-wise multiply ( temp highp float) 0:14 Constant: 0:14 2.000000 0:14 'f' ( global highp float) 0:14 'cin' ( smooth in highp float) 0:15 Sequence 0:15 move second child to first child ( temp highp float) 0:15 'g2' ( temp highp float) 0:15 Function Call: bar( ( global highp float) 0:16 Branch: Return with expression 0:16 add ( temp highp float) 0:16 add ( temp highp float) 0:16 'h2' ( temp highp float) 0:16 'g2' ( temp highp float) 0:16 direct index ( temp highp float) 0:16 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:16 Constant: 0:16 1 (const int) 0:? Linker Objects 0:? 'a2' ( global highp float) 0:? 'f' ( global highp float) 0:? 'cout' ( out highp float) 0:? 'cin' ( smooth in highp float) spv.unit3.frag Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:4 Sequence 0:4 move second child to first child ( temp highp float) 0:4 'h3' ( global highp float) 0:4 Constant: 0:4 3.000000 0:9 Function Definition: bar( ( global highp float) 0:9 Function Parameters: 0:11 Sequence 0:11 multiply second child into first child ( temp highp float) 0:11 'h3' ( global highp float) 0:11 'f' ( global highp float) 0:12 Sequence 0:12 move second child to first child ( temp highp float) 0:12 'g3' ( temp highp float) 0:12 component-wise multiply ( temp highp float) 0:12 Constant: 0:12 2.000000 0:12 'h3' ( global highp float) 0:13 move second child to first child ( temp highp float) 0:13 'cout' ( out highp float) 0:13 'g3' ( temp highp float) 0:14 Branch: Return with expression 0:14 add ( temp highp float) 0:14 add ( temp highp float) 0:14 'h3' ( global highp float) 0:14 'g3' ( temp highp float) 0:14 direct index ( temp highp float) 0:14 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:14 Constant: 0:14 1 (const int) 0:? Linker Objects 0:? 'f' ( global highp float) 0:? 'h3' ( global highp float) 0:? 'cout' ( out highp float) 0:? 'cin' ( smooth in highp float) Linked fragment stage: Shader version: 460 gl_FragCoord origin is upper left 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 highp float) 0:12 'f' ( global highp float) 0:12 Constant: 0:12 10.000000 0:13 Sequence 0:13 move second child to first child ( temp highp float) 0:13 'g' ( temp highp float) 0:13 Function Call: foo( ( global highp float) 0:14 add second child into first child ( temp highp float) 0:14 'f' ( global highp float) 0:14 'g' ( temp highp float) 0:15 add second child into first child ( temp highp float) 0:15 'f' ( global highp float) 0:15 direct index ( temp highp float) 0:15 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:15 Constant: 0:15 1 (const int) 0:12 Function Definition: foo( ( global highp float) 0:12 Function Parameters: 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp highp float) 0:14 'h2' ( temp highp float) 0:14 add ( temp highp float) 0:14 component-wise multiply ( temp highp float) 0:14 Constant: 0:14 2.000000 0:14 'f' ( global highp float) 0:14 'cin' ( smooth in highp float) 0:15 Sequence 0:15 move second child to first child ( temp highp float) 0:15 'g2' ( temp highp float) 0:15 Function Call: bar( ( global highp float) 0:16 Branch: Return with expression 0:16 add ( temp highp float) 0:16 add ( temp highp float) 0:16 'h2' ( temp highp float) 0:16 'g2' ( temp highp float) 0:16 direct index ( temp highp float) 0:16 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:16 Constant: 0:16 1 (const int) 0:4 Sequence 0:4 move second child to first child ( temp highp float) 0:4 'h3' ( global highp float) 0:4 Constant: 0:4 3.000000 0:9 Function Definition: bar( ( global highp float) 0:9 Function Parameters: 0:11 Sequence 0:11 multiply second child into first child ( temp highp float) 0:11 'h3' ( global highp float) 0:11 'f' ( global highp float) 0:12 Sequence 0:12 move second child to first child ( temp highp float) 0:12 'g3' ( temp highp float) 0:12 component-wise multiply ( temp highp float) 0:12 Constant: 0:12 2.000000 0:12 'h3' ( global highp float) 0:13 move second child to first child ( temp highp float) 0:13 'cout' ( out highp float) 0:13 'g3' ( temp highp float) 0:14 Branch: Return with expression 0:14 add ( temp highp float) 0:14 add ( temp highp float) 0:14 'h3' ( global highp float) 0:14 'g3' ( temp highp float) 0:14 direct index ( temp highp float) 0:14 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) 0:14 Constant: 0:14 1 (const int) 0:? Linker Objects 0:? 'f' ( global highp float) 0:? 'a1' ( global highp float) 0:? 'cout' ( out highp float) 0:? 'a2' ( global highp float) 0:? 'cin' ( smooth in highp float) 0:? 'h3' ( global highp float) // 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" 25 37 57 ExecutionMode 4 OriginUpperLeft Source GLSL 460 Name 4 "main" Name 8 "foo(" Name 10 "bar(" Name 13 "h3" Name 15 "f" Name 18 "g" Name 25 "gl_FragCoord" Name 33 "h2" Name 37 "cin" Name 40 "g2" Name 53 "g3" Name 57 "cout" Name 67 "a1" Name 68 "a2" Decorate 25(gl_FragCoord) BuiltIn FragCoord Decorate 37(cin) Location 0 Decorate 57(cout) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeFunction 6(float) 12: TypePointer Private 6(float) 13(h3): 12(ptr) Variable Private 14: 6(float) Constant 1077936128 15(f): 12(ptr) Variable Private 16: 6(float) Constant 1092616192 17: TypePointer Function 6(float) 23: TypeVector 6(float) 4 24: TypePointer Input 23(fvec4) 25(gl_FragCoord): 24(ptr) Variable Input 26: TypeInt 32 0 27: 26(int) Constant 1 28: TypePointer Input 6(float) 34: 6(float) Constant 1073741824 37(cin): 28(ptr) Variable Input 56: TypePointer Output 6(float) 57(cout): 56(ptr) Variable Output 67(a1): 12(ptr) Variable Private 68(a2): 12(ptr) Variable Private 4(main): 2 Function None 3 5: Label 18(g): 17(ptr) Variable Function Store 13(h3) 14 Store 15(f) 16 19: 6(float) FunctionCall 8(foo() Store 18(g) 19 20: 6(float) Load 18(g) 21: 6(float) Load 15(f) 22: 6(float) FAdd 21 20 Store 15(f) 22 29: 28(ptr) AccessChain 25(gl_FragCoord) 27 30: 6(float) Load 29 31: 6(float) Load 15(f) 32: 6(float) FAdd 31 30 Store 15(f) 32 Return FunctionEnd 8(foo(): 6(float) Function None 7 9: Label 33(h2): 17(ptr) Variable Function 40(g2): 17(ptr) Variable Function 35: 6(float) Load 15(f) 36: 6(float) FMul 34 35 38: 6(float) Load 37(cin) 39: 6(float) FAdd 36 38 Store 33(h2) 39 41: 6(float) FunctionCall 10(bar() Store 40(g2) 41 42: 6(float) Load 33(h2) 43: 6(float) Load 40(g2) 44: 6(float) FAdd 42 43 45: 28(ptr) AccessChain 25(gl_FragCoord) 27 46: 6(float) Load 45 47: 6(float) FAdd 44 46 ReturnValue 47 FunctionEnd 10(bar(): 6(float) Function None 7 11: Label 53(g3): 17(ptr) Variable Function 50: 6(float) Load 15(f) 51: 6(float) Load 13(h3) 52: 6(float) FMul 51 50 Store 13(h3) 52 54: 6(float) Load 13(h3) 55: 6(float) FMul 34 54 Store 53(g3) 55 58: 6(float) Load 53(g3) Store 57(cout) 58 59: 6(float) Load 13(h3) 60: 6(float) Load 53(g3) 61: 6(float) FAdd 59 60 62: 28(ptr) AccessChain 25(gl_FragCoord) 27 63: 6(float) Load 62 64: 6(float) FAdd 61 63 ReturnValue 64 FunctionEnd glslang-16.0.0/Test/baseResults/spv.variableArrayIndex.frag.out000066400000000000000000000167501506534232700245120ustar00rootroot00000000000000spv.variableArrayIndex.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 10 20 34 36 54 63 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 8 "iLocal" Name 10 "Count" Name 13 "lunarStruct1" MemberName 13(lunarStruct1) 0 "i" MemberName 13(lunarStruct1) 1 "f" Name 14 "lunarStruct2" MemberName 14(lunarStruct2) 0 "i" MemberName 14(lunarStruct2) 1 "f" MemberName 14(lunarStruct2) 2 "s1_1" Name 18 "lunarStruct3" MemberName 18(lunarStruct3) 0 "s2_1" MemberName 18(lunarStruct3) 1 "i" MemberName 18(lunarStruct3) 2 "f" MemberName 18(lunarStruct3) 3 "s1_1" Name 20 "foo3" Name 30 "scale" Name 34 "foo2" Name 36 "foo" Name 54 "gl_FragColor" Name 59 "samp2D" Name 63 "coord" Name 69 "constructed" Decorate 10(Count) Flat Decorate 10(Count) Location 39 Decorate 20(foo3) Flat Decorate 20(foo3) Location 23 Decorate 34(foo2) Flat Decorate 34(foo2) Location 3 Decorate 36(foo) Flat Decorate 36(foo) Location 1 Decorate 54(gl_FragColor) Location 0 Decorate 59(samp2D) Binding 0 Decorate 59(samp2D) DescriptorSet 0 Decorate 63(coord) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(Count): 9(ptr) Variable Input 12: TypeFloat 32 13(lunarStruct1): TypeStruct 6(int) 12(float) 14(lunarStruct2): TypeStruct 6(int) 12(float) 13(lunarStruct1) 15: TypeInt 32 0 16: 15(int) Constant 3 17: TypeArray 14(lunarStruct2) 16 18(lunarStruct3): TypeStruct 17 6(int) 12(float) 13(lunarStruct1) 19: TypePointer Input 18(lunarStruct3) 20(foo3): 19(ptr) Variable Input 21: 6(int) Constant 0 22: 6(int) Constant 1 25: TypeBool 29: TypePointer Function 12(float) 31: 15(int) Constant 5 32: TypeArray 14(lunarStruct2) 31 33: TypePointer Input 32 34(foo2): 33(ptr) Variable Input 35: TypePointer Input 13(lunarStruct1) 36(foo): 35(ptr) Variable Input 41: 6(int) Constant 2 46: TypePointer Input 12(float) 52: TypeVector 12(float) 4 53: TypePointer Output 52(fvec4) 54(gl_FragColor): 53(ptr) Variable Output 56: TypeImage 12(float) 2D sampled format:Unknown 57: TypeSampledImage 56 58: TypePointer UniformConstant 57 59(samp2D): 58(ptr) Variable UniformConstant 61: TypeVector 12(float) 2 62: TypePointer Input 61(fvec2) 63(coord): 62(ptr) Variable Input 67: TypeArray 61(fvec2) 16 68: TypePointer Function 67 73: 12(float) Constant 1065353216 74: 12(float) Constant 1073741824 75: 61(fvec2) ConstantComposite 73 74 79: TypePointer Function 61(fvec2) 4(main): 2 Function None 3 5: Label 8(iLocal): 7(ptr) Variable Function 30(scale): 29(ptr) Variable Function 69(constructed): 68(ptr) Variable Function 11: 6(int) Load 10(Count) Store 8(iLocal) 11 23: 9(ptr) AccessChain 20(foo3) 21 22 21 24: 6(int) Load 23 26: 25(bool) SGreaterThan 24 21 SelectionMerge 28 None BranchConditional 26 27 49 27: Label 37: 9(ptr) AccessChain 36(foo) 21 38: 6(int) Load 37 39: 9(ptr) AccessChain 20(foo3) 21 38 21 40: 6(int) Load 39 42: 6(int) IAdd 40 41 43: 6(int) Load 8(iLocal) 44: 6(int) IAdd 43 22 Store 8(iLocal) 44 45: 6(int) IAdd 42 44 47: 46(ptr) AccessChain 34(foo2) 45 41 22 48: 12(float) Load 47 Store 30(scale) 48 Branch 28 49: Label 50: 46(ptr) AccessChain 20(foo3) 21 21 41 22 51: 12(float) Load 50 Store 30(scale) 51 Branch 28 28: Label 55: 12(float) Load 30(scale) 60: 57 Load 59(samp2D) 64: 61(fvec2) Load 63(coord) 65: 52(fvec4) ImageSampleImplicitLod 60 64 66: 52(fvec4) VectorTimesScalar 65 55 Store 54(gl_FragColor) 66 70: 61(fvec2) Load 63(coord) 71: 12(float) Load 30(scale) 72: 61(fvec2) CompositeConstruct 71 71 76: 67 CompositeConstruct 70 72 75 Store 69(constructed) 76 77: 9(ptr) AccessChain 36(foo) 21 78: 6(int) Load 77 80: 79(ptr) AccessChain 69(constructed) 78 81: 61(fvec2) Load 80 82: 9(ptr) AccessChain 36(foo) 21 83: 6(int) Load 82 84: 79(ptr) AccessChain 69(constructed) 83 85: 61(fvec2) Load 84 86: 12(float) CompositeExtract 81 0 87: 12(float) CompositeExtract 81 1 88: 12(float) CompositeExtract 85 0 89: 12(float) CompositeExtract 85 1 90: 52(fvec4) CompositeConstruct 86 87 88 89 91: 52(fvec4) Load 54(gl_FragColor) 92: 52(fvec4) FAdd 91 90 Store 54(gl_FragColor) 92 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.varyingArray.frag.out000066400000000000000000000105071506534232700234060ustar00rootroot00000000000000spv.varyingArray.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 19 34 39 45 48 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "texColor" Name 13 "texSampler2D" Name 19 "TexCoord" Name 34 "color" Name 39 "alpha" Name 45 "gl_FragColor" Name 48 "foo" Decorate 13(texSampler2D) Binding 0 Decorate 13(texSampler2D) DescriptorSet 0 Decorate 19(TexCoord) Location 2 Decorate 34(color) Location 0 Decorate 39(alpha) Location 1 Decorate 45(gl_FragColor) Location 0 Decorate 48(foo) Location 8 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(texSampler2D): 12(ptr) Variable UniformConstant 15: TypeInt 32 0 16: 15(int) Constant 6 17: TypeArray 7(fvec4) 16 18: TypePointer Input 17 19(TexCoord): 18(ptr) Variable Input 20: TypeInt 32 1 21: 20(int) Constant 4 22: TypePointer Input 7(fvec4) 25: 20(int) Constant 5 29: TypeVector 6(float) 2 34(color): 22(ptr) Variable Input 38: TypePointer Input 6(float) 39(alpha): 38(ptr) Variable Input 41: 15(int) Constant 3 42: TypePointer Function 6(float) 44: TypePointer Output 7(fvec4) 45(gl_FragColor): 44(ptr) Variable Output 46: TypeArray 7(fvec4) 41 47: TypePointer Input 46 48(foo): 47(ptr) Variable Input 49: 20(int) Constant 1 52: 20(int) Constant 0 4(main): 2 Function None 3 5: Label 9(texColor): 8(ptr) Variable Function 14: 11 Load 13(texSampler2D) 23: 22(ptr) AccessChain 19(TexCoord) 21 24: 7(fvec4) Load 23 26: 22(ptr) AccessChain 19(TexCoord) 25 27: 7(fvec4) Load 26 28: 7(fvec4) FAdd 24 27 30: 6(float) CompositeExtract 28 0 31: 6(float) CompositeExtract 28 1 32: 29(fvec2) CompositeConstruct 30 31 33: 7(fvec4) ImageSampleImplicitLod 14 32 Store 9(texColor) 33 35: 7(fvec4) Load 34(color) 36: 7(fvec4) Load 9(texColor) 37: 7(fvec4) FAdd 36 35 Store 9(texColor) 37 40: 6(float) Load 39(alpha) 43: 42(ptr) AccessChain 9(texColor) 41 Store 43 40 50: 22(ptr) AccessChain 48(foo) 49 51: 7(fvec4) Load 50 53: 22(ptr) AccessChain 19(TexCoord) 52 54: 7(fvec4) Load 53 55: 7(fvec4) FAdd 51 54 56: 22(ptr) AccessChain 19(TexCoord) 21 57: 7(fvec4) Load 56 58: 7(fvec4) FAdd 55 57 59: 7(fvec4) Load 9(texColor) 60: 7(fvec4) FAdd 58 59 Store 45(gl_FragColor) 60 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.varyingArrayIndirect.frag.out000066400000000000000000000120361506534232700250670ustar00rootroot00000000000000spv.varyingArrayIndirect.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 19 22 30 31 45 50 56 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "texColor" Name 13 "texSampler2D" Name 19 "userIn" Name 22 "b" Name 30 "TexCoord" Name 31 "a" Name 45 "color" Name 50 "alpha" Name 56 "gl_FragColor" Decorate 13(texSampler2D) Binding 0 Decorate 13(texSampler2D) DescriptorSet 0 Decorate 19(userIn) Location 8 Decorate 22(b) Flat Decorate 22(b) Location 11 Decorate 30(TexCoord) Location 2 Decorate 31(a) Flat Decorate 31(a) Location 10 Decorate 45(color) Location 0 Decorate 50(alpha) Location 1 Decorate 56(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(texSampler2D): 12(ptr) Variable UniformConstant 15: TypeInt 32 0 16: 15(int) Constant 2 17: TypeArray 7(fvec4) 16 18: TypePointer Input 17 19(userIn): 18(ptr) Variable Input 20: TypeInt 32 1 21: TypePointer Input 20(int) 22(b): 21(ptr) Variable Input 24: TypePointer Input 7(fvec4) 27: 15(int) Constant 6 28: TypeArray 7(fvec4) 27 29: TypePointer Input 28 30(TexCoord): 29(ptr) Variable Input 31(a): 21(ptr) Variable Input 36: 20(int) Constant 5 40: TypeVector 6(float) 2 45(color): 24(ptr) Variable Input 49: TypePointer Input 6(float) 50(alpha): 49(ptr) Variable Input 52: 15(int) Constant 3 53: TypePointer Function 6(float) 55: TypePointer Output 7(fvec4) 56(gl_FragColor): 55(ptr) Variable Output 57: 20(int) Constant 0 4(main): 2 Function None 3 5: Label 9(texColor): 8(ptr) Variable Function 14: 11 Load 13(texSampler2D) 23: 20(int) Load 22(b) 25: 24(ptr) AccessChain 19(userIn) 23 26: 7(fvec4) Load 25 32: 20(int) Load 31(a) 33: 24(ptr) AccessChain 30(TexCoord) 32 34: 7(fvec4) Load 33 35: 7(fvec4) FAdd 26 34 37: 24(ptr) AccessChain 30(TexCoord) 36 38: 7(fvec4) Load 37 39: 7(fvec4) FAdd 35 38 41: 6(float) CompositeExtract 39 0 42: 6(float) CompositeExtract 39 1 43: 40(fvec2) CompositeConstruct 41 42 44: 7(fvec4) ImageSampleImplicitLod 14 43 Store 9(texColor) 44 46: 7(fvec4) Load 45(color) 47: 7(fvec4) Load 9(texColor) 48: 7(fvec4) FAdd 47 46 Store 9(texColor) 48 51: 6(float) Load 50(alpha) 54: 53(ptr) AccessChain 9(texColor) 52 Store 54 51 58: 24(ptr) AccessChain 30(TexCoord) 57 59: 7(fvec4) Load 58 60: 20(int) Load 22(b) 61: 24(ptr) AccessChain 30(TexCoord) 60 62: 7(fvec4) Load 61 63: 7(fvec4) FAdd 59 62 64: 7(fvec4) Load 9(texColor) 65: 7(fvec4) FAdd 63 64 66: 20(int) Load 31(a) 67: 24(ptr) AccessChain 19(userIn) 66 68: 7(fvec4) Load 67 69: 7(fvec4) FAdd 65 68 Store 56(gl_FragColor) 69 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.vecMatConstruct.frag.out000066400000000000000000000102031506534232700240450ustar00rootroot00000000000000spv.vecMatConstruct.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "v2" Name 13 "m" Name 19 "v3" Name 27 "v4" Name 37 "iv2" Name 45 "iv3" Name 54 "iv4" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 2 8: TypePointer Function 7(fvec2) 10: TypeVector 6(float) 3 11: TypeMatrix 10(fvec3) 4 12: TypePointer Function 11 18: TypePointer Function 10(fvec3) 25: TypeVector 6(float) 4 26: TypePointer Function 25(fvec4) 34: TypeInt 32 1 35: TypeVector 34(int) 2 36: TypePointer Function 35(ivec2) 43: TypeVector 34(int) 3 44: TypePointer Function 43(ivec3) 52: TypeVector 34(int) 4 53: TypePointer Function 52(ivec4) 4(main): 2 Function None 3 5: Label 9(v2): 8(ptr) Variable Function 13(m): 12(ptr) Variable Function 19(v3): 18(ptr) Variable Function 27(v4): 26(ptr) Variable Function 37(iv2): 36(ptr) Variable Function 45(iv3): 44(ptr) Variable Function 54(iv4): 53(ptr) Variable Function 14: 11 Load 13(m) 15: 6(float) CompositeExtract 14 0 0 16: 6(float) CompositeExtract 14 0 1 17: 7(fvec2) CompositeConstruct 15 16 Store 9(v2) 17 20: 11 Load 13(m) 21: 6(float) CompositeExtract 20 0 0 22: 6(float) CompositeExtract 20 0 1 23: 6(float) CompositeExtract 20 0 2 24: 10(fvec3) CompositeConstruct 21 22 23 Store 19(v3) 24 28: 11 Load 13(m) 29: 6(float) CompositeExtract 28 0 0 30: 6(float) CompositeExtract 28 0 1 31: 6(float) CompositeExtract 28 0 2 32: 6(float) CompositeExtract 28 1 0 33: 25(fvec4) CompositeConstruct 29 30 31 32 Store 27(v4) 33 38: 11 Load 13(m) 39: 6(float) CompositeExtract 38 0 0 40: 6(float) CompositeExtract 38 0 1 41: 7(fvec2) CompositeConstruct 39 40 42: 35(ivec2) ConvertFToS 41 Store 37(iv2) 42 46: 11 Load 13(m) 47: 6(float) CompositeExtract 46 0 0 48: 6(float) CompositeExtract 46 0 1 49: 6(float) CompositeExtract 46 0 2 50: 10(fvec3) CompositeConstruct 47 48 49 51: 43(ivec3) ConvertFToS 50 Store 45(iv3) 51 55: 11 Load 13(m) 56: 6(float) CompositeExtract 55 0 0 57: 6(float) CompositeExtract 55 0 1 58: 6(float) CompositeExtract 55 0 2 59: 6(float) CompositeExtract 55 1 0 60: 25(fvec4) CompositeConstruct 56 57 58 59 61: 52(ivec4) ConvertFToS 60 Store 54(iv4) 61 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.viewportArray2.tesc.out000066400000000000000000000051021506534232700237020ustar00rootroot00000000000000spv.viewportArray2.tesc // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 23 Capability Tessellation Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV Extension "SPV_EXT_shader_viewport_index_layer" Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationControl 4 "main" 14 16 22 ExecutionMode 4 OutputVertices 4 Source GLSL 430 SourceExtension "GL_NV_viewport_array2" Name 4 "main" Name 10 "gl_PerVertex" MemberName 10(gl_PerVertex) 0 "gl_ViewportMask" Name 14 "gl_out" Name 16 "gl_InvocationID" Name 22 "gl_Layer" Decorate 10(gl_PerVertex) Block MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV Decorate 16(gl_InvocationID) BuiltIn InvocationId Decorate 22(gl_Layer) BuiltIn Layer Decorate 22(gl_Layer) ViewportRelativeNV 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 2 9: TypeArray 6(int) 8 10(gl_PerVertex): TypeStruct 9 11: 7(int) Constant 4 12: TypeArray 10(gl_PerVertex) 11 13: TypePointer Output 12 14(gl_out): 13(ptr) Variable Output 15: TypePointer Input 6(int) 16(gl_InvocationID): 15(ptr) Variable Input 18: 6(int) Constant 0 19: 6(int) Constant 1 20: TypePointer Output 6(int) 22(gl_Layer): 20(ptr) Variable Output 4(main): 2 Function None 3 5: Label 17: 6(int) Load 16(gl_InvocationID) 21: 20(ptr) AccessChain 14(gl_out) 17 18 18 Store 21 19 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.viewportArray2.vert.out000066400000000000000000000043661506534232700237370ustar00rootroot00000000000000spv.viewportArray2.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 19 Capability Shader Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV Extension "SPV_EXT_shader_viewport_index_layer" Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 11 16 18 Source GLSL 450 SourceExtension "GL_ARB_shader_viewport_layer_array" SourceExtension "GL_NV_viewport_array2" Name 4 "main" Name 11 "gl_ViewportMask" Name 16 "gl_ViewportIndex" Name 18 "gl_Layer" Decorate 11(gl_ViewportMask) BuiltIn ViewportMaskNV Decorate 16(gl_ViewportIndex) BuiltIn ViewportIndex Decorate 18(gl_Layer) BuiltIn Layer Decorate 18(gl_Layer) ViewportRelativeNV 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 1 9: TypeArray 6(int) 8 10: TypePointer Output 9 11(gl_ViewportMask): 10(ptr) Variable Output 12: 6(int) Constant 0 13: 6(int) Constant 1 14: TypePointer Output 6(int) 16(gl_ViewportIndex): 14(ptr) Variable Output 17: 6(int) Constant 2 18(gl_Layer): 14(ptr) Variable Output 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 11(gl_ViewportMask) 12 Store 15 13 Store 16(gl_ViewportIndex) 17 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.viewportindex.tese.out000066400000000000000000000027161506534232700236630ustar00rootroot00000000000000spv.viewportindex.tese // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 10 Capability Tessellation Capability ShaderViewportIndexLayerNV Extension "SPV_EXT_shader_viewport_index_layer" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 4 "main" 8 ExecutionMode 4 Triangles ExecutionMode 4 SpacingEqual ExecutionMode 4 VertexOrderCcw Source GLSL 450 SourceExtension "GL_ARB_shader_viewport_layer_array" Name 4 "main" Name 8 "gl_ViewportIndex" Decorate 8(gl_ViewportIndex) BuiltIn ViewportIndex 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Output 6(int) 8(gl_ViewportIndex): 7(ptr) Variable Output 9: 6(int) Constant 1 4(main): 2 Function None 3 5: Label Store 8(gl_ViewportIndex) 9 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.voidFunction.frag.out000066400000000000000000000066661506534232700234120ustar00rootroot00000000000000spv.voidFunction.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 24 37 40 42 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 6 "foo(" Name 8 "foo2(" Name 12 "bar" Name 22 "outColor" Name 24 "bigColor" Name 37 "gl_FragColor" Name 40 "BaseColor" Name 42 "d" Decorate 24(bigColor) Location 0 Decorate 37(gl_FragColor) Location 0 Decorate 40(BaseColor) Location 1 Decorate 42(d) Location 2 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 11: TypePointer Private 10(float) 12(bar): 11(ptr) Variable Private 13: 10(float) Constant 1073741824 15: 10(float) Constant 1065353216 20: TypeVector 10(float) 4 21: TypePointer Function 20(fvec4) 23: TypePointer Input 20(fvec4) 24(bigColor): 23(ptr) Variable Input 29: TypeInt 32 0 30: 29(int) Constant 0 31: TypePointer Function 10(float) 36: TypePointer Output 20(fvec4) 37(gl_FragColor): 36(ptr) Variable Output 40(BaseColor): 23(ptr) Variable Input 41: TypePointer Input 10(float) 42(d): 41(ptr) Variable Input 4(main): 2 Function None 3 5: Label 22(outColor): 21(ptr) Variable Function Store 12(bar) 13 25: 20(fvec4) Load 24(bigColor) Store 22(outColor) 25 26: 2 FunctionCall 6(foo() 27: 2 FunctionCall 8(foo2() 28: 10(float) Load 12(bar) 32: 31(ptr) AccessChain 22(outColor) 30 33: 10(float) Load 32 34: 10(float) FAdd 33 28 35: 31(ptr) AccessChain 22(outColor) 30 Store 35 34 38: 20(fvec4) Load 22(outColor) Store 37(gl_FragColor) 38 Return FunctionEnd 6(foo(): 2 Function None 3 7: Label 14: 10(float) Load 12(bar) 16: 10(float) FAdd 14 15 Store 12(bar) 16 Return FunctionEnd 8(foo2(): 2 Function None 3 9: Label 18: 10(float) Load 12(bar) 19: 10(float) FAdd 18 15 Store 12(bar) 19 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.volatileAtomic.comp.out000066400000000000000000000036601506534232700237250ustar00rootroot00000000000000spv.volatileAtomic.comp // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 1 1 1 Source GLSL 450 Name 4 "main" Name 8 "D" MemberName 8(D) 0 "d" Name 10 "d" Decorate 7 ArrayStride 4 Decorate 8(D) BufferBlock MemberDecorate 8(D) 0 Volatile MemberDecorate 8(D) 0 Coherent MemberDecorate 8(D) 0 Offset 0 Decorate 10(d) Volatile Decorate 10(d) Coherent Decorate 10(d) Binding 3 Decorate 10(d) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeRuntimeArray 6(int) 8(D): TypeStruct 7 9: TypePointer Uniform 8(D) 10(d): 9(ptr) Variable Uniform 11: TypeInt 32 1 12: 11(int) Constant 0 13: TypePointer Uniform 6(int) 15: 6(int) Constant 0 16: 6(int) Constant 1 4(main): 2 Function None 3 5: Label 14: 13(ptr) AccessChain 10(d) 12 12 17: 6(int) AtomicExchange 14 16 15 15 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.vulkan100.subgroupArithmetic.comp.out000066400000000000000000000360211506534232700263460ustar00rootroot00000000000000spv.vulkan100.subgroupArithmetic.comp ERROR: 0:19: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:20: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:21: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:22: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:24: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:25: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:26: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:27: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:29: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:30: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:31: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:32: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:34: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:35: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:36: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:37: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:39: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:40: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:41: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:42: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:44: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:45: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:46: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:47: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:49: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:50: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:51: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:52: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:54: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:55: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:56: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:57: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:59: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:60: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:61: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:62: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:64: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:65: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:66: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:67: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:69: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:70: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:71: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:72: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:74: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:75: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:76: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:77: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:79: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:80: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:81: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:82: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:84: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:85: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:86: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:87: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:89: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:90: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:91: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:92: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:94: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:95: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:96: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:97: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:99: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:100: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:101: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:102: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:104: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:105: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:106: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:107: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:109: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:110: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:111: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:112: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:114: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:115: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:116: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:117: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:119: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:120: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:121: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:122: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:124: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:125: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:126: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:127: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:129: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:130: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:131: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:132: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:134: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:135: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:136: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:137: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:139: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:140: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:141: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:142: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:144: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:145: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:146: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:147: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:149: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:150: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:151: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:152: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:154: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:155: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:156: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:157: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:159: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:160: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:161: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:162: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:164: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:165: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:166: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:167: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:169: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:170: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:171: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:172: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:174: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:175: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:176: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:177: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:179: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:180: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:181: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:182: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:184: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:185: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:186: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:187: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:189: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:190: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:191: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:192: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:194: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:195: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:196: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:197: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:199: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:200: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:201: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:202: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:204: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:205: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:206: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:207: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:209: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:210: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:211: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:212: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:214: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:215: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:216: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:217: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:219: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:220: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:221: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:222: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:224: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:225: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:226: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:227: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:229: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:230: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:231: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:232: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:234: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:235: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:236: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:237: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:239: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:240: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:241: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:242: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:244: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:245: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:246: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:247: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:249: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:250: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:251: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:252: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:254: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:255: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:256: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:257: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:259: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:260: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:261: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:262: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:264: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:265: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:266: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:267: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:269: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:270: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:271: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:272: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:274: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:275: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:276: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:277: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:279: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:280: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:281: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:282: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:284: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:285: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:286: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:287: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:289: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:290: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:291: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:292: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:294: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:295: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:296: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:297: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:299: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:300: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:301: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:302: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:304: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:305: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:306: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:307: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:309: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:310: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:311: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:312: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:314: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:315: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:316: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:317: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:319: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:320: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:321: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:322: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:324: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:325: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:326: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:327: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:329: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:330: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:331: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:332: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:334: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:335: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:336: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:337: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:339: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:340: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:341: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:342: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:344: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:345: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:346: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:347: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:349: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:350: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:351: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:352: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:354: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:355: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:356: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:357: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:359: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:360: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:361: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:362: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:364: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:365: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:366: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:367: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:369: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:370: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:371: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:372: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:374: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:375: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:376: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:377: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:379: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:380: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:381: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:382: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:384: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:385: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:386: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:387: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:389: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:390: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:391: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:392: 'subgroup op' : requires SPIR-V 1.3 ERROR: 300 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.vulkan100.subgroupPartitioned.comp.out000066400000000000000000000401011506534232700265310ustar00rootroot00000000000000spv.vulkan100.subgroupPartitioned.comp ERROR: 0:19: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:21: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:22: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:23: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:24: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:26: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:27: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:28: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:29: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:31: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:32: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:33: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:34: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:36: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:37: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:38: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:39: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:41: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:42: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:43: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:44: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:46: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:47: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:48: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:49: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:51: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:52: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:53: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:54: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:56: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:57: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:58: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:59: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:61: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:62: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:63: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:64: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:66: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:67: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:68: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:69: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:71: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:72: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:73: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:74: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:76: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:77: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:78: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:79: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:81: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:82: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:83: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:84: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:86: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:87: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:88: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:89: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:91: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:92: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:93: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:94: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:96: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:97: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:98: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:99: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:101: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:102: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:103: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:104: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:106: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:107: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:108: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:109: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:111: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:112: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:113: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:114: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:116: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:117: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:118: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:119: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:121: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:122: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:123: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:124: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:126: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:127: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:128: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:129: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:131: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:132: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:133: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:134: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:136: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:137: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:138: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:139: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:141: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:142: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:143: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:144: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:146: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:147: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:148: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:149: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:151: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:152: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:153: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:154: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:156: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:157: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:158: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:159: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:161: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:162: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:163: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:164: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:166: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:167: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:168: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:169: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:171: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:172: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:173: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:174: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:176: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:177: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:178: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:179: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:181: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:182: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:183: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:184: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:186: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:187: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:188: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:189: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:191: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:192: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:193: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:194: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:196: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:197: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:198: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:199: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:201: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:202: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:203: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:204: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:206: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:207: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:208: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:209: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:211: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:212: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:213: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:214: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:216: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:217: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:218: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:219: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:221: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:222: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:223: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:224: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:226: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:227: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:228: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:229: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:231: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:232: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:233: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:234: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:236: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:237: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:238: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:239: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:241: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:242: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:243: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:244: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:246: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:247: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:248: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:249: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:251: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:252: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:253: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:254: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:256: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:257: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:258: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:259: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:261: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:262: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:263: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:264: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:266: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:267: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:268: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:269: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:271: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:272: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:273: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:274: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:276: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:277: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:278: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:279: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:281: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:282: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:283: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:284: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:286: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:287: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:288: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:289: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:291: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:292: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:293: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:294: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:296: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:297: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:298: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:299: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:301: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:302: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:303: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:304: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:306: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:307: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:308: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:309: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:311: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:312: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:313: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:314: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:316: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:317: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:318: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:319: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:321: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:322: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:323: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:324: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:326: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:327: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:328: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:329: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:331: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:332: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:333: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:334: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:336: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:337: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:338: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:339: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:341: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:342: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:343: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:344: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:346: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:347: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:348: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:349: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:351: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:352: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:353: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:354: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:356: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:357: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:358: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:359: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:361: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:362: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:363: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:364: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:366: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:367: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:368: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:369: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:371: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:372: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:373: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:374: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:376: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:377: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:378: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:379: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:381: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:382: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:383: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:384: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:386: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:387: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:388: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:389: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:391: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:392: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:393: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:394: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:396: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:397: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:398: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:399: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:401: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:402: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:403: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:404: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:406: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:407: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:408: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:409: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:411: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:412: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:413: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:414: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:416: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:417: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:418: 'subgroup op' : requires SPIR-V 1.3 ERROR: 0:419: 'subgroup op' : requires SPIR-V 1.3 ERROR: 321 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/spv.vulkan110.int16.frag.out000066400000000000000000001106751506534232700234210ustar00rootroot00000000000000spv.vulkan110.int16.frag // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 535 Capability Shader Capability Float16 Capability Float64 Capability Int64 Capability Int16 Capability Int8 Capability StorageUniform16 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" Name 4 "main" Name 6 "literal(" Name 8 "typeCast16(" Name 10 "operators(" Name 12 "builtinFuncs(" Name 16 "i16" Name 24 "Uniforms" MemberName 24(Uniforms) 0 "index" Name 26 "" Name 33 "indexable" Name 38 "u16" Name 46 "indexable" Name 51 "i32v" Name 54 "i16v" Name 59 "u16v" Name 67 "u32v" Name 74 "i64v" Name 80 "u64v" Name 94 "f16v" Name 100 "f32v" Name 106 "f64v" Name 154 "i8v" Name 163 "u8v" Name 176 "bv" Name 195 "u16v" Name 200 "i16" Name 220 "i" Name 227 "uv" Name 243 "i64" Name 281 "b" Name 343 "i16v" Name 346 "i16" Name 356 "u16v" Name 358 "u16" Name 428 "i32" Name 431 "i64" Name 434 "i16v4" Name 437 "u32" Name 438 "u16v2" Name 442 "u64" Name 445 "u16v4" Name 457 "bv" Name 530 "Block" MemberName 530(Block) 0 "i16" MemberName 530(Block) 1 "i16v2" MemberName 530(Block) 2 "i16v3" MemberName 530(Block) 3 "i16v4" MemberName 530(Block) 4 "u16" MemberName 530(Block) 5 "u16v2" MemberName 530(Block) 6 "u16v3" MemberName 530(Block) 7 "u16v4" Name 532 "block" Name 533 "si16" Name 534 "su16" Decorate 24(Uniforms) Block MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 26 Binding 0 Decorate 26 DescriptorSet 0 Decorate 530(Block) Block MemberDecorate 530(Block) 0 Offset 0 MemberDecorate 530(Block) 1 Offset 4 MemberDecorate 530(Block) 2 Offset 8 MemberDecorate 530(Block) 3 Offset 16 MemberDecorate 530(Block) 4 Offset 24 MemberDecorate 530(Block) 5 Offset 28 MemberDecorate 530(Block) 6 Offset 32 MemberDecorate 530(Block) 7 Offset 40 Decorate 532(block) Binding 1 Decorate 532(block) DescriptorSet 0 Decorate 533(si16) SpecId 100 Decorate 534(su16) SpecId 101 2: TypeVoid 3: TypeFunction 2 14: TypeInt 16 1 15: TypePointer Function 14(int16_t) 17: TypeInt 32 0 18: 17(int) Constant 3 19: TypeArray 14(int16_t) 18 20: 14(int16_t) Constant 4294962927 21: 14(int16_t) Constant 4294967295 22: 14(int16_t) Constant 16384 23: 19 ConstantComposite 20 21 22 24(Uniforms): TypeStruct 17(int) 25: TypePointer Uniform 24(Uniforms) 26: 25(ptr) Variable Uniform 27: TypeInt 32 1 28: 27(int) Constant 0 29: TypePointer Uniform 17(int) 32: TypePointer Function 19 36: TypeInt 16 0 37: TypePointer Function 36(int16_t) 39: TypeArray 36(int16_t) 18 40: 36(int16_t) Constant 65535 41: 36(int16_t) Constant 32767 42: 39 ConstantComposite 40 40 41 45: TypePointer Function 39 49: TypeVector 27(int) 2 50: TypePointer Function 49(ivec2) 52: TypeVector 14(int16_t) 2 53: TypePointer Function 52(i16vec2) 57: TypeVector 36(int16_t) 2 58: TypePointer Function 57(i16vec2) 61: TypeVector 17(int) 2 66: TypePointer Function 61(ivec2) 71: TypeInt 64 1 72: TypeVector 71(int64_t) 2 73: TypePointer Function 72(i64vec2) 77: TypeInt 64 0 78: TypeVector 77(int64_t) 2 79: TypePointer Function 78(i64vec2) 91: TypeFloat 16 92: TypeVector 91(float16_t) 2 93: TypePointer Function 92(f16vec2) 97: TypeFloat 32 98: TypeVector 97(float) 2 99: TypePointer Function 98(fvec2) 103: TypeFloat 64 104: TypeVector 103(float64_t) 2 105: TypePointer Function 104(f64vec2) 151: TypeInt 8 1 152: TypeVector 151(int8_t) 2 153: TypePointer Function 152(i8vec2) 158: TypeInt 8 0 159: TypeVector 158(int8_t) 2 162: TypePointer Function 159(i8vec2) 173: TypeBool 174: TypeVector 173(bool) 2 175: TypePointer Function 174(bvec2) 178: 14(int16_t) Constant 0 179: 14(int16_t) Constant 1 180: 52(i16vec2) ConstantComposite 178 178 181: 52(i16vec2) ConstantComposite 179 179 184: 36(int16_t) Constant 0 185: 36(int16_t) Constant 1 186: 57(i16vec2) ConstantComposite 184 184 187: 57(i16vec2) ConstantComposite 185 185 193: TypeVector 36(int16_t) 3 194: TypePointer Function 193(i16vec3) 197: TypeVector 14(int16_t) 3 219: TypePointer Function 27(int) 225: TypeVector 17(int) 3 226: TypePointer Function 225(ivec3) 242: TypePointer Function 71(int64_t) 264: 17(int) Constant 1 270: 17(int) Constant 2 276: TypeVector 27(int) 3 280: TypePointer Function 173(bool) 282: 17(int) Constant 0 296: TypePointer Function 17(int) 354: 52(i16vec2) ConstantComposite 21 21 363:193(i16vec3) ConstantComposite 184 184 184 405: 173(bool) ConstantTrue 412: 173(bool) ConstantFalse 413: 174(bvec2) ConstantComposite 412 412 425: TypeVector 173(bool) 3 426: 425(bvec3) ConstantComposite 412 412 412 432: TypeVector 14(int16_t) 4 433: TypePointer Function 432(i16vec4) 441: TypePointer Function 77(int64_t) 443: TypeVector 36(int16_t) 4 444: TypePointer Function 443(i16vec4) 456: TypePointer Function 425(bvec3) 530(Block): TypeStruct 14(int16_t) 52(i16vec2) 197(i16vec3) 432(i16vec4) 36(int16_t) 57(i16vec2) 193(i16vec3) 443(i16vec4) 531: TypePointer Uniform 530(Block) 532(block): 531(ptr) Variable Uniform 533(si16): 14(int16_t) SpecConstant 4294967286 534(su16): 36(int16_t) SpecConstant 20 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(literal(): 2 Function None 3 7: Label 16(i16): 15(ptr) Variable Function 33(indexable): 32(ptr) Variable Function 38(u16): 37(ptr) Variable Function 46(indexable): 45(ptr) Variable Function 30: 29(ptr) AccessChain 26 28 31: 17(int) Load 30 Store 33(indexable) 23 34: 15(ptr) AccessChain 33(indexable) 31 35: 14(int16_t) Load 34 Store 16(i16) 35 43: 29(ptr) AccessChain 26 28 44: 17(int) Load 43 Store 46(indexable) 42 47: 37(ptr) AccessChain 46(indexable) 44 48: 36(int16_t) Load 47 Store 38(u16) 48 Return FunctionEnd 8(typeCast16(): 2 Function None 3 9: Label 51(i32v): 50(ptr) Variable Function 54(i16v): 53(ptr) Variable Function 59(u16v): 58(ptr) Variable Function 67(u32v): 66(ptr) Variable Function 74(i64v): 73(ptr) Variable Function 80(u64v): 79(ptr) Variable Function 94(f16v): 93(ptr) Variable Function 100(f32v): 99(ptr) Variable Function 106(f64v): 105(ptr) Variable Function 154(i8v): 153(ptr) Variable Function 163(u8v): 162(ptr) Variable Function 176(bv): 175(ptr) Variable Function 55: 52(i16vec2) Load 54(i16v) 56: 49(ivec2) SConvert 55 Store 51(i32v) 56 60: 57(i16vec2) Load 59(u16v) 62: 61(ivec2) UConvert 60 63: 49(ivec2) Bitcast 62 Store 51(i32v) 63 64: 52(i16vec2) Load 54(i16v) 65: 57(i16vec2) Bitcast 64 Store 59(u16v) 65 68: 52(i16vec2) Load 54(i16v) 69: 49(ivec2) SConvert 68 70: 61(ivec2) Bitcast 69 Store 67(u32v) 70 75: 52(i16vec2) Load 54(i16v) 76: 72(i64vec2) SConvert 75 Store 74(i64v) 76 81: 52(i16vec2) Load 54(i16v) 82: 72(i64vec2) SConvert 81 83: 78(i64vec2) Bitcast 82 Store 80(u64v) 83 84: 57(i16vec2) Load 59(u16v) 85: 61(ivec2) UConvert 84 Store 67(u32v) 85 86: 57(i16vec2) Load 59(u16v) 87: 78(i64vec2) UConvert 86 88: 72(i64vec2) Bitcast 87 Store 74(i64v) 88 89: 57(i16vec2) Load 59(u16v) 90: 78(i64vec2) UConvert 89 Store 80(u64v) 90 95: 52(i16vec2) Load 54(i16v) 96: 92(f16vec2) ConvertSToF 95 Store 94(f16v) 96 101: 52(i16vec2) Load 54(i16v) 102: 98(fvec2) ConvertSToF 101 Store 100(f32v) 102 107: 52(i16vec2) Load 54(i16v) 108:104(f64vec2) ConvertSToF 107 Store 106(f64v) 108 109: 57(i16vec2) Load 59(u16v) 110: 92(f16vec2) ConvertUToF 109 Store 94(f16v) 110 111: 57(i16vec2) Load 59(u16v) 112: 98(fvec2) ConvertUToF 111 Store 100(f32v) 112 113: 57(i16vec2) Load 59(u16v) 114:104(f64vec2) ConvertUToF 113 Store 106(f64v) 114 115: 52(i16vec2) Load 54(i16v) 116: 49(ivec2) SConvert 115 Store 51(i32v) 116 117: 57(i16vec2) Load 59(u16v) 118: 61(ivec2) UConvert 117 119: 49(ivec2) Bitcast 118 Store 51(i32v) 119 120: 52(i16vec2) Load 54(i16v) 121: 57(i16vec2) Bitcast 120 Store 59(u16v) 121 122: 52(i16vec2) Load 54(i16v) 123: 49(ivec2) SConvert 122 124: 61(ivec2) Bitcast 123 Store 67(u32v) 124 125: 52(i16vec2) Load 54(i16v) 126: 72(i64vec2) SConvert 125 Store 74(i64v) 126 127: 52(i16vec2) Load 54(i16v) 128: 72(i64vec2) SConvert 127 129: 78(i64vec2) Bitcast 128 Store 80(u64v) 129 130: 57(i16vec2) Load 59(u16v) 131: 61(ivec2) UConvert 130 Store 67(u32v) 131 132: 57(i16vec2) Load 59(u16v) 133: 78(i64vec2) UConvert 132 134: 72(i64vec2) Bitcast 133 Store 74(i64v) 134 135: 57(i16vec2) Load 59(u16v) 136: 78(i64vec2) UConvert 135 137: 72(i64vec2) Bitcast 136 138: 78(i64vec2) Bitcast 137 Store 80(u64v) 138 139: 52(i16vec2) Load 54(i16v) 140: 92(f16vec2) ConvertSToF 139 Store 94(f16v) 140 141: 52(i16vec2) Load 54(i16v) 142: 98(fvec2) ConvertSToF 141 Store 100(f32v) 142 143: 52(i16vec2) Load 54(i16v) 144:104(f64vec2) ConvertSToF 143 Store 106(f64v) 144 145: 57(i16vec2) Load 59(u16v) 146: 92(f16vec2) ConvertUToF 145 Store 94(f16v) 146 147: 57(i16vec2) Load 59(u16v) 148: 98(fvec2) ConvertUToF 147 Store 100(f32v) 148 149: 57(i16vec2) Load 59(u16v) 150:104(f64vec2) ConvertUToF 149 Store 106(f64v) 150 155: 52(i16vec2) Load 54(i16v) 156: 152(i8vec2) SConvert 155 Store 154(i8v) 156 157: 57(i16vec2) Load 59(u16v) 160: 159(i8vec2) UConvert 157 161: 152(i8vec2) Bitcast 160 Store 154(i8v) 161 164: 52(i16vec2) Load 54(i16v) 165: 152(i8vec2) SConvert 164 166: 159(i8vec2) Bitcast 165 Store 163(u8v) 166 167: 57(i16vec2) Load 59(u16v) 168: 159(i8vec2) UConvert 167 Store 163(u8v) 168 169: 57(i16vec2) Load 59(u16v) 170: 159(i8vec2) UConvert 169 171: 57(i16vec2) UConvert 170 172: 52(i16vec2) Bitcast 171 Store 54(i16v) 172 177: 174(bvec2) Load 176(bv) 182: 52(i16vec2) Select 177 181 180 Store 54(i16v) 182 183: 174(bvec2) Load 176(bv) 188: 57(i16vec2) Select 183 187 186 Store 59(u16v) 188 189: 52(i16vec2) Load 54(i16v) 190: 174(bvec2) INotEqual 189 186 Store 176(bv) 190 191: 57(i16vec2) Load 59(u16v) 192: 174(bvec2) INotEqual 191 186 Store 176(bv) 192 Return FunctionEnd 10(operators(): 2 Function None 3 11: Label 195(u16v): 194(ptr) Variable Function 200(i16): 15(ptr) Variable Function 220(i): 219(ptr) Variable Function 227(uv): 226(ptr) Variable Function 243(i64): 242(ptr) Variable Function 281(b): 280(ptr) Variable Function 196:193(i16vec3) Load 195(u16v) 198:197(i16vec3) CompositeConstruct 179 179 179 199:193(i16vec3) IAdd 196 198 Store 195(u16v) 199 201: 14(int16_t) Load 200(i16) 202: 14(int16_t) ISub 201 179 Store 200(i16) 202 203: 14(int16_t) Load 200(i16) 204: 14(int16_t) IAdd 203 179 Store 200(i16) 204 205:193(i16vec3) Load 195(u16v) 206:197(i16vec3) CompositeConstruct 179 179 179 207:193(i16vec3) ISub 205 206 Store 195(u16v) 207 208:193(i16vec3) Load 195(u16v) 209:193(i16vec3) Not 208 Store 195(u16v) 209 210: 14(int16_t) Load 200(i16) Store 200(i16) 210 211:193(i16vec3) Load 195(u16v) 212:193(i16vec3) SNegate 211 Store 195(u16v) 212 213: 14(int16_t) Load 200(i16) 214: 14(int16_t) Load 200(i16) 215: 14(int16_t) IAdd 214 213 Store 200(i16) 215 216:193(i16vec3) Load 195(u16v) 217:193(i16vec3) Load 195(u16v) 218:193(i16vec3) ISub 217 216 Store 195(u16v) 218 221: 14(int16_t) Load 200(i16) 222: 27(int) SConvert 221 223: 27(int) Load 220(i) 224: 27(int) IMul 223 222 Store 220(i) 224 228:193(i16vec3) Load 195(u16v) 229: 225(ivec3) UConvert 228 230: 225(ivec3) Load 227(uv) 231: 225(ivec3) UDiv 230 229 Store 227(uv) 231 232: 14(int16_t) Load 200(i16) 233: 27(int) SConvert 232 234: 17(int) Bitcast 233 235: 225(ivec3) Load 227(uv) 236: 225(ivec3) CompositeConstruct 234 234 234 237: 225(ivec3) UMod 235 236 Store 227(uv) 237 238:193(i16vec3) Load 195(u16v) 239: 225(ivec3) UConvert 238 240: 225(ivec3) Load 227(uv) 241: 225(ivec3) IAdd 239 240 Store 227(uv) 241 244: 14(int16_t) Load 200(i16) 245: 71(int64_t) SConvert 244 246: 71(int64_t) Load 243(i64) 247: 71(int64_t) ISub 245 246 Store 243(i64) 247 248:193(i16vec3) Load 195(u16v) 249: 225(ivec3) UConvert 248 250: 225(ivec3) Load 227(uv) 251: 225(ivec3) IMul 249 250 Store 227(uv) 251 252: 14(int16_t) Load 200(i16) 253: 71(int64_t) SConvert 252 254: 71(int64_t) Load 243(i64) 255: 71(int64_t) IMul 253 254 Store 243(i64) 255 256: 14(int16_t) Load 200(i16) 257: 27(int) SConvert 256 258: 27(int) Load 220(i) 259: 27(int) SMod 257 258 Store 220(i) 259 260: 14(int16_t) Load 200(i16) 261:193(i16vec3) Load 195(u16v) 262:197(i16vec3) CompositeConstruct 260 260 260 263:193(i16vec3) ShiftLeftLogical 261 262 Store 195(u16v) 263 265: 37(ptr) AccessChain 195(u16v) 264 266: 36(int16_t) Load 265 267: 14(int16_t) Load 200(i16) 268: 14(int16_t) ShiftRightArithmetic 267 266 Store 200(i16) 268 269: 14(int16_t) Load 200(i16) 271: 37(ptr) AccessChain 195(u16v) 270 272: 36(int16_t) Load 271 273: 14(int16_t) ShiftLeftLogical 269 272 Store 200(i16) 273 274:193(i16vec3) Load 195(u16v) 275: 27(int) Load 220(i) 277: 276(ivec3) CompositeConstruct 275 275 275 278:193(i16vec3) ShiftLeftLogical 274 277 279: 225(ivec3) UConvert 278 Store 227(uv) 279 283: 37(ptr) AccessChain 195(u16v) 282 284: 36(int16_t) Load 283 285: 14(int16_t) Load 200(i16) 286: 36(int16_t) Bitcast 285 287: 173(bool) INotEqual 284 286 Store 281(b) 287 288: 14(int16_t) Load 200(i16) 289: 36(int16_t) Bitcast 288 290: 37(ptr) AccessChain 195(u16v) 282 291: 36(int16_t) Load 290 292: 173(bool) IEqual 289 291 Store 281(b) 292 293: 37(ptr) AccessChain 195(u16v) 282 294: 36(int16_t) Load 293 295: 17(int) UConvert 294 297: 296(ptr) AccessChain 227(uv) 264 298: 17(int) Load 297 299: 173(bool) UGreaterThan 295 298 Store 281(b) 299 300: 14(int16_t) Load 200(i16) 301: 27(int) SConvert 300 302: 27(int) Load 220(i) 303: 173(bool) SLessThan 301 302 Store 281(b) 303 304: 37(ptr) AccessChain 195(u16v) 264 305: 36(int16_t) Load 304 306: 17(int) UConvert 305 307: 296(ptr) AccessChain 227(uv) 282 308: 17(int) Load 307 309: 173(bool) UGreaterThanEqual 306 308 Store 281(b) 309 310: 14(int16_t) Load 200(i16) 311: 27(int) SConvert 310 312: 27(int) Load 220(i) 313: 173(bool) SLessThanEqual 311 312 Store 281(b) 313 314: 14(int16_t) Load 200(i16) 315: 27(int) SConvert 314 316: 17(int) Bitcast 315 317: 225(ivec3) Load 227(uv) 318: 225(ivec3) CompositeConstruct 316 316 316 319: 225(ivec3) BitwiseOr 317 318 Store 227(uv) 319 320: 14(int16_t) Load 200(i16) 321: 27(int) SConvert 320 322: 27(int) Load 220(i) 323: 27(int) BitwiseOr 321 322 Store 220(i) 323 324: 14(int16_t) Load 200(i16) 325: 71(int64_t) SConvert 324 326: 71(int64_t) Load 243(i64) 327: 71(int64_t) BitwiseAnd 326 325 Store 243(i64) 327 328:193(i16vec3) Load 195(u16v) 329: 225(ivec3) UConvert 328 330: 225(ivec3) Load 227(uv) 331: 225(ivec3) BitwiseAnd 329 330 Store 227(uv) 331 332: 14(int16_t) Load 200(i16) 333: 27(int) SConvert 332 334: 17(int) Bitcast 333 335: 225(ivec3) Load 227(uv) 336: 225(ivec3) CompositeConstruct 334 334 334 337: 225(ivec3) BitwiseXor 335 336 Store 227(uv) 337 338:193(i16vec3) Load 195(u16v) 339: 14(int16_t) Load 200(i16) 340: 36(int16_t) Bitcast 339 341:193(i16vec3) CompositeConstruct 340 340 340 342:193(i16vec3) BitwiseXor 338 341 Store 195(u16v) 342 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label 343(i16v): 53(ptr) Variable Function 346(i16): 15(ptr) Variable Function 356(u16v): 194(ptr) Variable Function 358(u16): 37(ptr) Variable Function 428(i32): 219(ptr) Variable Function 431(i64): 242(ptr) Variable Function 434(i16v4): 433(ptr) Variable Function 437(u32): 296(ptr) Variable Function 438(u16v2): 58(ptr) Variable Function 442(u64): 441(ptr) Variable Function 445(u16v4): 444(ptr) Variable Function 457(bv): 456(ptr) Variable Function 344: 52(i16vec2) Load 343(i16v) 345: 52(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344 Store 343(i16v) 345 347: 14(int16_t) Load 346(i16) 348: 14(int16_t) ExtInst 1(GLSL.std.450) 7(SSign) 347 Store 346(i16) 348 349: 52(i16vec2) Load 343(i16v) 350: 14(int16_t) Load 346(i16) 351: 52(i16vec2) CompositeConstruct 350 350 352: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351 Store 343(i16v) 352 353: 52(i16vec2) Load 343(i16v) 355: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354 Store 343(i16v) 355 357:193(i16vec3) Load 356(u16v) 359: 36(int16_t) Load 358(u16) 360:193(i16vec3) CompositeConstruct 359 359 359 361:193(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360 Store 356(u16v) 361 362:193(i16vec3) Load 356(u16v) 364:193(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363 Store 356(u16v) 364 365: 52(i16vec2) Load 343(i16v) 366: 14(int16_t) Load 346(i16) 367: 52(i16vec2) CompositeConstruct 366 366 368: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367 Store 343(i16v) 368 369: 52(i16vec2) Load 343(i16v) 370: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354 Store 343(i16v) 370 371:193(i16vec3) Load 356(u16v) 372: 36(int16_t) Load 358(u16) 373:193(i16vec3) CompositeConstruct 372 372 372 374:193(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373 Store 356(u16v) 374 375:193(i16vec3) Load 356(u16v) 376:193(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363 Store 356(u16v) 376 377: 52(i16vec2) Load 343(i16v) 378: 14(int16_t) Load 346(i16) 379: 14(int16_t) SNegate 378 380: 14(int16_t) Load 346(i16) 381: 52(i16vec2) CompositeConstruct 379 379 382: 52(i16vec2) CompositeConstruct 380 380 383: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382 Store 343(i16v) 383 384: 52(i16vec2) Load 343(i16v) 385: 52(i16vec2) Load 343(i16v) 386: 52(i16vec2) SNegate 385 387: 52(i16vec2) Load 343(i16v) 388: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387 Store 343(i16v) 388 389:193(i16vec3) Load 356(u16v) 390: 36(int16_t) Load 358(u16) 391: 36(int16_t) SNegate 390 392: 36(int16_t) Load 358(u16) 393:193(i16vec3) CompositeConstruct 391 391 391 394:193(i16vec3) CompositeConstruct 392 392 392 395:193(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394 Store 356(u16v) 395 396:193(i16vec3) Load 356(u16v) 397:193(i16vec3) Load 356(u16v) 398:193(i16vec3) SNegate 397 399:193(i16vec3) Load 356(u16v) 400:193(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399 Store 356(u16v) 400 401: 15(ptr) AccessChain 343(i16v) 282 402: 14(int16_t) Load 401 403: 15(ptr) AccessChain 343(i16v) 264 404: 14(int16_t) Load 403 406: 14(int16_t) Select 405 404 402 Store 346(i16) 406 407: 14(int16_t) Load 346(i16) 408: 52(i16vec2) CompositeConstruct 407 407 409: 14(int16_t) Load 346(i16) 410: 14(int16_t) SNegate 409 411: 52(i16vec2) CompositeConstruct 410 410 414: 52(i16vec2) Select 413 411 408 Store 343(i16v) 414 415: 37(ptr) AccessChain 356(u16v) 282 416: 36(int16_t) Load 415 417: 37(ptr) AccessChain 356(u16v) 264 418: 36(int16_t) Load 417 419: 36(int16_t) Select 405 418 416 Store 358(u16) 419 420: 36(int16_t) Load 358(u16) 421:193(i16vec3) CompositeConstruct 420 420 420 422: 36(int16_t) Load 358(u16) 423: 36(int16_t) SNegate 422 424:193(i16vec3) CompositeConstruct 423 423 423 427:193(i16vec3) Select 426 424 421 Store 356(u16v) 427 429: 52(i16vec2) Load 343(i16v) 430: 27(int) Bitcast 429 Store 428(i32) 430 435:432(i16vec4) Load 434(i16v4) 436: 71(int64_t) Bitcast 435 Store 431(i64) 436 439: 57(i16vec2) Load 438(u16v2) 440: 17(int) Bitcast 439 Store 437(u32) 440 446:443(i16vec4) Load 445(u16v4) 447: 77(int64_t) Bitcast 446 Store 442(u64) 447 448: 27(int) Load 428(i32) 449: 52(i16vec2) Bitcast 448 Store 343(i16v) 449 450: 71(int64_t) Load 431(i64) 451:432(i16vec4) Bitcast 450 Store 434(i16v4) 451 452: 17(int) Load 437(u32) 453: 57(i16vec2) Bitcast 452 Store 438(u16v2) 453 454: 77(int64_t) Load 442(u64) 455:443(i16vec4) Bitcast 454 Store 445(u16v4) 455 458:193(i16vec3) Load 356(u16v) 459: 36(int16_t) Load 358(u16) 460:193(i16vec3) CompositeConstruct 459 459 459 461: 425(bvec3) ULessThan 458 460 Store 457(bv) 461 462: 52(i16vec2) Load 343(i16v) 463: 14(int16_t) Load 346(i16) 464: 52(i16vec2) CompositeConstruct 463 463 465: 174(bvec2) SLessThan 462 464 466: 280(ptr) AccessChain 457(bv) 282 467: 173(bool) CompositeExtract 465 0 Store 466 467 468: 280(ptr) AccessChain 457(bv) 264 469: 173(bool) CompositeExtract 465 1 Store 468 469 470:193(i16vec3) Load 356(u16v) 471: 36(int16_t) Load 358(u16) 472:193(i16vec3) CompositeConstruct 471 471 471 473: 425(bvec3) ULessThanEqual 470 472 Store 457(bv) 473 474: 52(i16vec2) Load 343(i16v) 475: 14(int16_t) Load 346(i16) 476: 52(i16vec2) CompositeConstruct 475 475 477: 174(bvec2) SLessThanEqual 474 476 478: 280(ptr) AccessChain 457(bv) 282 479: 173(bool) CompositeExtract 477 0 Store 478 479 480: 280(ptr) AccessChain 457(bv) 264 481: 173(bool) CompositeExtract 477 1 Store 480 481 482:193(i16vec3) Load 356(u16v) 483: 36(int16_t) Load 358(u16) 484:193(i16vec3) CompositeConstruct 483 483 483 485: 425(bvec3) UGreaterThan 482 484 Store 457(bv) 485 486: 52(i16vec2) Load 343(i16v) 487: 14(int16_t) Load 346(i16) 488: 52(i16vec2) CompositeConstruct 487 487 489: 174(bvec2) SGreaterThan 486 488 490: 280(ptr) AccessChain 457(bv) 282 491: 173(bool) CompositeExtract 489 0 Store 490 491 492: 280(ptr) AccessChain 457(bv) 264 493: 173(bool) CompositeExtract 489 1 Store 492 493 494:193(i16vec3) Load 356(u16v) 495: 36(int16_t) Load 358(u16) 496:193(i16vec3) CompositeConstruct 495 495 495 497: 425(bvec3) UGreaterThanEqual 494 496 Store 457(bv) 497 498: 52(i16vec2) Load 343(i16v) 499: 14(int16_t) Load 346(i16) 500: 52(i16vec2) CompositeConstruct 499 499 501: 174(bvec2) SGreaterThanEqual 498 500 502: 280(ptr) AccessChain 457(bv) 282 503: 173(bool) CompositeExtract 501 0 Store 502 503 504: 280(ptr) AccessChain 457(bv) 264 505: 173(bool) CompositeExtract 501 1 Store 504 505 506:193(i16vec3) Load 356(u16v) 507: 36(int16_t) Load 358(u16) 508:193(i16vec3) CompositeConstruct 507 507 507 509: 425(bvec3) IEqual 506 508 Store 457(bv) 509 510: 52(i16vec2) Load 343(i16v) 511: 14(int16_t) Load 346(i16) 512: 52(i16vec2) CompositeConstruct 511 511 513: 174(bvec2) IEqual 510 512 514: 280(ptr) AccessChain 457(bv) 282 515: 173(bool) CompositeExtract 513 0 Store 514 515 516: 280(ptr) AccessChain 457(bv) 264 517: 173(bool) CompositeExtract 513 1 Store 516 517 518:193(i16vec3) Load 356(u16v) 519: 36(int16_t) Load 358(u16) 520:193(i16vec3) CompositeConstruct 519 519 519 521: 425(bvec3) INotEqual 518 520 Store 457(bv) 521 522: 52(i16vec2) Load 343(i16v) 523: 14(int16_t) Load 346(i16) 524: 52(i16vec2) CompositeConstruct 523 523 525: 174(bvec2) INotEqual 522 524 526: 280(ptr) AccessChain 457(bv) 282 527: 173(bool) CompositeExtract 525 0 Store 526 527 528: 280(ptr) AccessChain 457(bv) 264 529: 173(bool) CompositeExtract 525 1 Store 528 529 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.vulkan110.storageBuffer.vert.out000066400000000000000000000067331506534232700253160ustar00rootroot00000000000000spv.vulkan110.storageBuffer.vert // Module Version 10300 // Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 13 Source GLSL 450 Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_Position" MemberName 11(gl_PerVertex) 1 "gl_PointSize" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" Name 16 "ub" MemberName 16(ub) 0 "a" Name 18 "ubi" Name 22 "bb" MemberName 22(bb) 0 "b" Name 24 "bbi" Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance Decorate 16(ub) Block MemberDecorate 16(ub) 0 Offset 0 Decorate 18(ubi) Binding 0 Decorate 18(ubi) DescriptorSet 0 Decorate 22(bb) Block MemberDecorate 22(bb) 0 Offset 0 Decorate 24(bbi) Binding 1 Decorate 24(bbi) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeInt 32 0 9: 8(int) Constant 1 10: TypeArray 6(float) 9 11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 12: TypePointer Output 11(gl_PerVertex) 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16(ub): TypeStruct 7(fvec4) 17: TypePointer Uniform 16(ub) 18(ubi): 17(ptr) Variable Uniform 19: TypePointer Uniform 7(fvec4) 22(bb): TypeStruct 7(fvec4) 23: TypePointer StorageBuffer 22(bb) 24(bbi): 23(ptr) Variable StorageBuffer 25: TypePointer StorageBuffer 7(fvec4) 29: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 20: 19(ptr) AccessChain 18(ubi) 15 21: 7(fvec4) Load 20 26: 25(ptr) AccessChain 24(bbi) 15 27: 7(fvec4) Load 26 28: 7(fvec4) FAdd 21 27 30: 29(ptr) AccessChain 13 15 Store 30 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.while-continue-break.vert.out000066400000000000000000000061221506534232700250030ustar00rootroot00000000000000spv.while-continue-break.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 41 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source ESSL 310 Name 4 "main" Name 8 "i" Name 19 "A" Name 27 "B" Name 29 "C" Name 39 "D" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 10 17: TypeBool 20: 6(int) Constant 1 22: 6(int) Constant 2 31: 6(int) Constant 5 40: 6(int) Constant 3 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function 19(A): 7(ptr) Variable Function 27(B): 7(ptr) Variable Function 29(C): 7(ptr) Variable Function 39(D): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label Store 19(A) 20 21: 6(int) Load 8(i) 23: 6(int) SMod 21 22 24: 17(bool) IEqual 23 9 SelectionMerge 26 None BranchConditional 24 25 26 25: Label Store 27(B) 22 Branch 13 26: Label 30: 6(int) Load 8(i) 32: 6(int) SMod 30 31 33: 17(bool) IEqual 32 9 SelectionMerge 35 None BranchConditional 33 34 35 34: Label Store 27(B) 22 Branch 12 35: Label 37: 6(int) Load 8(i) 38: 6(int) IAdd 37 20 Store 8(i) 38 Branch 13 13: Label Branch 10 12: Label Store 39(D) 40 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.while-simple.vert.out000066400000000000000000000033131506534232700233650ustar00rootroot00000000000000spv.while-simple.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 ESSL 310 Name 4 "main" Name 8 "i" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 16: 6(int) Constant 10 17: TypeBool 20: 6(int) Constant 1 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label LoopMerge 12 13 None Branch 14 14: Label 15: 6(int) Load 8(i) 18: 17(bool) SLessThan 15 16 BranchConditional 18 11 12 11: Label 19: 6(int) Load 8(i) 21: 6(int) IAdd 19 20 Store 8(i) 21 Branch 13 13: Label Branch 10 12: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.whileLoop.frag.out000066400000000000000000000056671506534232700227050ustar00rootroot00000000000000spv.whileLoop.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 11 24 28 33 ExecutionMode 4 OriginUpperLeft Source GLSL 140 Name 4 "main" Name 9 "color" Name 11 "BaseColor" Name 24 "d" Name 28 "bigColor" Name 33 "gl_FragColor" Decorate 11(BaseColor) Location 1 Decorate 24(d) Location 2 Decorate 28(bigColor) Location 0 Decorate 33(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input 18: TypeInt 32 0 19: 18(int) Constant 0 20: TypePointer Function 6(float) 23: TypePointer Input 6(float) 24(d): 23(ptr) Variable Input 26: TypeBool 28(bigColor): 10(ptr) Variable Input 32: TypePointer Output 7(fvec4) 33(gl_FragColor): 32(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 Branch 13 13: Label LoopMerge 15 16 None Branch 17 17: Label 21: 20(ptr) AccessChain 9(color) 19 22: 6(float) Load 21 25: 6(float) Load 24(d) 27: 26(bool) FOrdLessThan 22 25 BranchConditional 27 14 15 14: Label 29: 7(fvec4) Load 28(bigColor) 30: 7(fvec4) Load 9(color) 31: 7(fvec4) FAdd 30 29 Store 9(color) 31 Branch 16 16: Label Branch 13 15: Label 34: 7(fvec4) Load 9(color) Store 33(gl_FragColor) 34 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.xfb.vert.out000066400000000000000000000052411506534232700215470ustar00rootroot00000000000000spv.xfb.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader Capability TransformFeedback 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 8 11 14 15 ExecutionMode 4 Xfb Source GLSL 450 Name 4 "main" Name 8 "out1" Name 9 "outXfb" MemberName 9(outXfb) 0 "out2" Name 11 "" Name 12 "outXfb2" MemberName 12(outXfb2) 0 "out3" Name 14 "" Name 15 "out4" Decorate 8(out1) Location 0 Decorate 8(out1) Offset 12 Decorate 8(out1) XfbBuffer 3 Decorate 8(out1) XfbStride 48 Decorate 9(outXfb) Block MemberDecorate 9(outXfb) 0 Offset 8 Decorate 11 Location 1 Decorate 11 XfbBuffer 2 Decorate 11 XfbStride 32 Decorate 12(outXfb2) Block MemberDecorate 12(outXfb2) 0 Offset 60 Decorate 14 Location 3 Decorate 14 XfbBuffer 1 Decorate 14 XfbStride 64 Decorate 15(out4) Location 4 Decorate 15(out4) Offset 4 Decorate 15(out4) XfbBuffer 0 Decorate 15(out4) XfbStride 8 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Output 6(float) 8(out1): 7(ptr) Variable Output 9(outXfb): TypeStruct 6(float) 10: TypePointer Output 9(outXfb) 11: 10(ptr) Variable Output 12(outXfb2): TypeStruct 6(float) 13: TypePointer Output 12(outXfb2) 14: 13(ptr) Variable Output 15(out4): 7(ptr) Variable Output 4(main): 2 Function None 3 5: Label Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.xfb2.vert.out000066400000000000000000000066461506534232700216430ustar00rootroot00000000000000spv.xfb2.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader Capability TransformFeedback 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 14 ExecutionMode 4 Xfb Source GLSL 450 Name 4 "main" Name 8 "gl_PerVertex" MemberName 8(gl_PerVertex) 0 "gl_Position" Name 10 "" Name 14 "position" Name 17 "ComponentsBlock" MemberName 17(ComponentsBlock) 0 "c1" MemberName 17(ComponentsBlock) 1 "c2" Name 19 "components" Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position MemberDecorate 8(gl_PerVertex) 0 Offset 16 Decorate 10 XfbBuffer 3 Decorate 10 XfbStride 32 Decorate 14(position) Location 0 Decorate 17(ComponentsBlock) Block MemberDecorate 17(ComponentsBlock) 0 Offset 0 MemberDecorate 17(ComponentsBlock) 1 Offset 16 Decorate 19(components) Binding 5 Decorate 19(components) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(gl_PerVertex): TypeStruct 7(fvec4) 9: TypePointer Output 8(gl_PerVertex) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: TypePointer Input 7(fvec4) 14(position): 13(ptr) Variable Input 16: TypeVector 6(float) 2 17(ComponentsBlock): TypeStruct 7(fvec4) 16(fvec2) 18: TypePointer Uniform 17(ComponentsBlock) 19(components): 18(ptr) Variable Uniform 20: TypePointer Uniform 7(fvec4) 24: 11(int) Constant 1 25: TypePointer Uniform 16(fvec2) 28: 6(float) Constant 0 33: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 15: 7(fvec4) Load 14(position) 21: 20(ptr) AccessChain 19(components) 12 22: 7(fvec4) Load 21 23: 7(fvec4) FAdd 15 22 26: 25(ptr) AccessChain 19(components) 24 27: 16(fvec2) Load 26 29: 6(float) CompositeExtract 27 0 30: 6(float) CompositeExtract 27 1 31: 7(fvec4) CompositeConstruct 29 30 28 28 32: 7(fvec4) FAdd 23 31 34: 33(ptr) AccessChain 10 12 Store 34 32 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.xfb3.vert.out000066400000000000000000000066461506534232700216440ustar00rootroot00000000000000spv.xfb3.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader Capability TransformFeedback 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 14 ExecutionMode 4 Xfb Source GLSL 450 Name 4 "main" Name 8 "gl_PerVertex" MemberName 8(gl_PerVertex) 0 "gl_Position" Name 10 "" Name 14 "position" Name 17 "ComponentsBlock" MemberName 17(ComponentsBlock) 0 "c1" MemberName 17(ComponentsBlock) 1 "c2" Name 19 "components" Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position MemberDecorate 8(gl_PerVertex) 0 Offset 16 Decorate 10 XfbBuffer 3 Decorate 10 XfbStride 80 Decorate 14(position) Location 0 Decorate 17(ComponentsBlock) Block MemberDecorate 17(ComponentsBlock) 0 Offset 0 MemberDecorate 17(ComponentsBlock) 1 Offset 16 Decorate 19(components) Binding 5 Decorate 19(components) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(gl_PerVertex): TypeStruct 7(fvec4) 9: TypePointer Output 8(gl_PerVertex) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: TypePointer Input 7(fvec4) 14(position): 13(ptr) Variable Input 16: TypeVector 6(float) 2 17(ComponentsBlock): TypeStruct 7(fvec4) 16(fvec2) 18: TypePointer Uniform 17(ComponentsBlock) 19(components): 18(ptr) Variable Uniform 20: TypePointer Uniform 7(fvec4) 24: 11(int) Constant 1 25: TypePointer Uniform 16(fvec2) 28: 6(float) Constant 0 33: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 15: 7(fvec4) Load 14(position) 21: 20(ptr) AccessChain 19(components) 12 22: 7(fvec4) Load 21 23: 7(fvec4) FAdd 15 22 26: 25(ptr) AccessChain 19(components) 24 27: 16(fvec2) Load 26 29: 6(float) CompositeExtract 27 0 30: 6(float) CompositeExtract 27 1 31: 7(fvec4) CompositeConstruct 29 30 28 28 32: 7(fvec4) FAdd 23 31 34: 33(ptr) AccessChain 10 12 Store 34 32 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out000066400000000000000000000076761506534232700275500ustar00rootroot00000000000000spv.xfbOffsetOnBlockMembersAssignment.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader Capability TransformFeedback 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 27 31 32 ExecutionMode 4 Xfb Source GLSL 450 Name 4 "main" Name 8 "block2" MemberName 8(block2) 0 "y1_out" MemberName 8(block2) 1 "y2_out" Name 10 "" Name 25 "gl_PerVertex" MemberName 25(gl_PerVertex) 0 "gl_Position" MemberName 25(gl_PerVertex) 1 "gl_PointSize" MemberName 25(gl_PerVertex) 2 "gl_ClipDistance" MemberName 25(gl_PerVertex) 3 "gl_CullDistance" Name 27 "" Name 31 "gl_VertexID" Name 32 "gl_InstanceID" Decorate 8(block2) Block MemberDecorate 8(block2) 0 Offset 0 MemberDecorate 8(block2) 1 Offset 4 Decorate 10 Location 5 Decorate 10 XfbBuffer 2 Decorate 10 XfbStride 20 Decorate 25(gl_PerVertex) Block MemberDecorate 25(gl_PerVertex) 0 BuiltIn Position MemberDecorate 25(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 25(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 25(gl_PerVertex) 3 BuiltIn CullDistance Decorate 27 XfbBuffer 0 Decorate 27 XfbStride 0 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(block2): TypeStruct 6(float) 7(fvec4) 9: TypePointer Output 8(block2) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: 6(float) Constant 1088421888 14: TypePointer Output 6(float) 16: 11(int) Constant 1 17: 6(float) Constant 1065353216 18: 6(float) Constant 0 19: 7(fvec4) ConstantComposite 17 18 18 17 20: TypePointer Output 7(fvec4) 22: TypeInt 32 0 23: 22(int) Constant 1 24: TypeArray 6(float) 23 25(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 24 24 26: TypePointer Output 25(gl_PerVertex) 27: 26(ptr) Variable Output 28: 7(fvec4) ConstantComposite 18 18 18 18 30: TypePointer Input 11(int) 31(gl_VertexID): 30(ptr) Variable Input 32(gl_InstanceID): 30(ptr) Variable Input 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 10 12 Store 15 13 21: 20(ptr) AccessChain 10 16 Store 21 19 29: 20(ptr) AccessChain 27 12 Store 29 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out000066400000000000000000000112621506534232700277640ustar00rootroot00000000000000spv.xfbOffsetOnStructMembersAssignment.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader Capability TransformFeedback 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 21 34 38 39 ExecutionMode 4 Xfb Source GLSL 450 Name 4 "main" Name 7 "S" MemberName 7(S) 0 "x1_out" MemberName 7(S) 1 "x2_out" Name 9 "s1" Name 19 "S2" MemberName 19(S2) 0 "y1_out" MemberName 19(S2) 1 "y2_out" Name 21 "s2" Name 32 "gl_PerVertex" MemberName 32(gl_PerVertex) 0 "gl_Position" MemberName 32(gl_PerVertex) 1 "gl_PointSize" MemberName 32(gl_PerVertex) 2 "gl_ClipDistance" MemberName 32(gl_PerVertex) 3 "gl_CullDistance" Name 34 "" Name 38 "gl_VertexID" Name 39 "gl_InstanceID" Decorate 9(s1) Location 0 Decorate 9(s1) Offset 16 Decorate 9(s1) XfbBuffer 2 Decorate 9(s1) XfbStride 24 Decorate 21(s2) Location 5 Decorate 21(s2) Offset 8 Decorate 21(s2) XfbBuffer 1 Decorate 21(s2) XfbStride 28 Decorate 32(gl_PerVertex) Block MemberDecorate 32(gl_PerVertex) 0 BuiltIn Position MemberDecorate 32(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 32(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 32(gl_PerVertex) 3 BuiltIn CullDistance Decorate 34 XfbBuffer 0 Decorate 34 XfbStride 0 Decorate 38(gl_VertexID) BuiltIn VertexId Decorate 39(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7(S): TypeStruct 6(float) 6(float) 8: TypePointer Output 7(S) 9(s1): 8(ptr) Variable Output 10: TypeInt 32 1 11: 10(int) Constant 0 12: 6(float) Constant 1084227584 13: TypePointer Output 6(float) 15: 10(int) Constant 1 16: 6(float) Constant 1086324736 18: TypeVector 6(float) 4 19(S2): TypeStruct 6(float) 18(fvec4) 20: TypePointer Output 19(S2) 21(s2): 20(ptr) Variable Output 22: 6(float) Constant 1088421888 24: 6(float) Constant 1065353216 25: 6(float) Constant 0 26: 18(fvec4) ConstantComposite 24 25 25 24 27: TypePointer Output 18(fvec4) 29: TypeInt 32 0 30: 29(int) Constant 1 31: TypeArray 6(float) 30 32(gl_PerVertex): TypeStruct 18(fvec4) 6(float) 31 31 33: TypePointer Output 32(gl_PerVertex) 34: 33(ptr) Variable Output 35: 18(fvec4) ConstantComposite 25 25 25 25 37: TypePointer Input 10(int) 38(gl_VertexID): 37(ptr) Variable Input 39(gl_InstanceID): 37(ptr) Variable Input 4(main): 2 Function None 3 5: Label 14: 13(ptr) AccessChain 9(s1) 11 Store 14 12 17: 13(ptr) AccessChain 9(s1) 15 Store 17 16 23: 13(ptr) AccessChain 21(s2) 11 Store 23 22 28: 27(ptr) AccessChain 21(s2) 15 Store 28 26 36: 27(ptr) AccessChain 34 11 Store 36 35 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out000066400000000000000000000111061506534232700305640ustar00rootroot00000000000000spv.xfbOverlapOffsetCheckWithBlockAndMember.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader Capability TransformFeedback 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 33 37 38 ExecutionMode 4 Xfb Source GLSL 450 Name 4 "main" Name 8 "block2" MemberName 8(block2) 0 "v" MemberName 8(block2) 1 "u" MemberName 8(block2) 2 "w" MemberName 8(block2) 3 "x" Name 10 "" 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" MemberName 31(gl_PerVertex) 3 "gl_CullDistance" Name 33 "" Name 37 "gl_VertexID" Name 38 "gl_InstanceID" Decorate 8(block2) Block MemberDecorate 8(block2) 0 Offset 12 MemberDecorate 8(block2) 1 Offset 28 MemberDecorate 8(block2) 2 Offset 40 MemberDecorate 8(block2) 3 Offset 56 Decorate 10 Location 5 Decorate 10 XfbBuffer 3 Decorate 10 XfbStride 72 Decorate 31(gl_PerVertex) Block MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 31(gl_PerVertex) 3 BuiltIn CullDistance Decorate 33 XfbBuffer 0 Decorate 33 XfbStride 0 Decorate 37(gl_VertexID) BuiltIn VertexId Decorate 38(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8(block2): TypeStruct 7(fvec4) 6(float) 7(fvec4) 7(fvec4) 9: TypePointer Output 8(block2) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: 6(float) Constant 1065353216 14: 6(float) Constant 0 15: 7(fvec4) ConstantComposite 13 14 13 14 16: TypePointer Output 7(fvec4) 18: 11(int) Constant 1 19: 6(float) Constant 1084227584 20: TypePointer Output 6(float) 22: 11(int) Constant 2 23: 7(fvec4) ConstantComposite 13 14 14 13 25: 11(int) Constant 3 26: 7(fvec4) ConstantComposite 19 14 14 14 28: TypeInt 32 0 29: 28(int) Constant 1 30: TypeArray 6(float) 29 31(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 30 30 32: TypePointer Output 31(gl_PerVertex) 33: 32(ptr) Variable Output 34: 7(fvec4) ConstantComposite 14 14 14 14 36: TypePointer Input 11(int) 37(gl_VertexID): 36(ptr) Variable Input 38(gl_InstanceID): 36(ptr) Variable Input 4(main): 2 Function None 3 5: Label 17: 16(ptr) AccessChain 10 12 Store 17 15 21: 20(ptr) AccessChain 10 18 Store 21 19 24: 16(ptr) AccessChain 10 22 Store 24 23 27: 16(ptr) AccessChain 10 25 Store 27 26 35: 16(ptr) AccessChain 33 12 Store 35 34 Return FunctionEnd glslang-16.0.0/Test/baseResults/spv.xfbStrideJustOnce.vert.out000066400000000000000000000074451506534232700244050ustar00rootroot00000000000000spv.xfbStrideJustOnce.vert // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader Capability TransformFeedback 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 10 27 31 32 ExecutionMode 4 Xfb Source GLSL 450 Name 4 "main" Name 8 "block" MemberName 8(block) 0 "y1_out" MemberName 8(block) 1 "y2_out" Name 10 "" Name 25 "gl_PerVertex" MemberName 25(gl_PerVertex) 0 "gl_Position" MemberName 25(gl_PerVertex) 1 "gl_PointSize" MemberName 25(gl_PerVertex) 2 "gl_ClipDistance" MemberName 25(gl_PerVertex) 3 "gl_CullDistance" Name 27 "" Name 31 "gl_VertexID" Name 32 "gl_InstanceID" Decorate 8(block) Block Decorate 10 Location 5 Decorate 10 XfbBuffer 2 Decorate 10 XfbStride 20 Decorate 25(gl_PerVertex) Block MemberDecorate 25(gl_PerVertex) 0 BuiltIn Position MemberDecorate 25(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 25(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 25(gl_PerVertex) 3 BuiltIn CullDistance Decorate 27 XfbBuffer 0 Decorate 27 XfbStride 0 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(block): TypeStruct 6(float) 7(fvec4) 9: TypePointer Output 8(block) 10: 9(ptr) Variable Output 11: TypeInt 32 1 12: 11(int) Constant 0 13: 6(float) Constant 1088421888 14: TypePointer Output 6(float) 16: 11(int) Constant 1 17: 6(float) Constant 1065353216 18: 6(float) Constant 0 19: 7(fvec4) ConstantComposite 17 18 18 17 20: TypePointer Output 7(fvec4) 22: TypeInt 32 0 23: 22(int) Constant 1 24: TypeArray 6(float) 23 25(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 24 24 26: TypePointer Output 25(gl_PerVertex) 27: 26(ptr) Variable Output 28: 7(fvec4) ConstantComposite 18 18 18 18 30: TypePointer Input 11(int) 31(gl_VertexID): 30(ptr) Variable Input 32(gl_InstanceID): 30(ptr) Variable Input 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 10 12 Store 15 13 21: 20(ptr) AccessChain 10 16 Store 21 19 29: 20(ptr) AccessChain 27 12 Store 29 28 Return FunctionEnd glslang-16.0.0/Test/baseResults/stringToDouble.vert.out000066400000000000000000001041261506534232700231270ustar00rootroot00000000000000stringToDouble.vert Shader version: 460 Requested GL_EXT_shader_explicit_arithmetic_types_float16 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:5 Sequence 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'w1' ( temp float) 0:5 Constant: 0:5 0.000000 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'w2' ( temp float) 0:6 Constant: 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 'w3' ( temp float) 0:7 Constant: 0:7 7.000000 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'w4' ( temp float) 0:8 Constant: 0:8 130000.000000 0:9 Sequence 0:9 move second child to first child ( temp float) 0:9 'w5' ( temp float) 0:9 Constant: 0:9 123456789.000000 0:10 Sequence 0:10 move second child to first child ( temp double) 0:10 'w6' ( temp double) 0:10 Constant: 0:10 1.2345678901235e+15 0:11 Sequence 0:11 move second child to first child ( temp double) 0:11 'w7' ( temp double) 0:11 Constant: 0:11 1.2345678901235e+16 0:12 Sequence 0:12 move second child to first child ( temp double) 0:12 'w8' ( temp double) 0:12 Constant: 0:12 1.2345678901235e+17 0:13 Sequence 0:13 move second child to first child ( temp double) 0:13 'w9' ( temp double) 0:13 Constant: 0:13 1.2345678901235e+19 0:14 Sequence 0:14 move second child to first child ( temp double) 0:14 'w10' ( temp double) 0:14 Constant: 0:14 1.2345678901235e+24 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'e1' ( temp float) 0:16 Constant: 0:16 0.000000 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'e2' ( temp float) 0:17 Constant: 0:17 1.000000 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'e3' ( temp float) 0:18 Constant: 0:18 0.000000 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'e4' ( temp float) 0:19 Constant: 0:19 1.0000000000000e+15 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'e5' ( temp float) 0:20 Constant: 0:20 1.0000000000000e+16 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'e6' ( temp float) 0:21 Constant: 0:21 0.000000 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'e7' ( temp float) 0:22 Constant: 0:22 1.0000000000000e-15 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'e8' ( temp float) 0:23 Constant: 0:23 1.0000000000000e-16 0:24 Sequence 0:24 move second child to first child ( temp double) 0:24 'e9' ( temp double) 0:24 Constant: 0:24 1.0000000000000e+100 0:25 Sequence 0:25 move second child to first child ( temp double) 0:25 'e10' ( temp double) 0:25 Constant: 0:25 1.0000000000000e+308 0:26 Sequence 0:26 move second child to first child ( temp double) 0:26 'e11' ( temp double) 0:26 Constant: 0:26 1.0000000000000e-307 0:27 Sequence 0:27 move second child to first child ( temp double) 0:27 'e12' ( temp double) 0:27 Constant: 0:27 +1.#INF 0:28 Sequence 0:28 move second child to first child ( temp double) 0:28 'e13' ( temp double) 0:28 Constant: 0:28 0.000000 0:29 Sequence 0:29 move second child to first child ( temp double) 0:29 'e24' ( temp double) 0:29 Constant: 0:29 +1.#INF 0:30 Sequence 0:30 move second child to first child ( temp double) 0:30 'e25' ( temp double) 0:30 Constant: 0:30 0.000000 0:32 Sequence 0:32 move second child to first child ( temp double) 0:32 'f1' ( temp double) 0:32 Constant: 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp double) 0:33 'f2' ( temp double) 0:33 Constant: 0:33 0.125000 0:34 Sequence 0:34 move second child to first child ( temp double) 0:34 'f31' ( temp double) 0:34 Constant: 0:34 0.100000 0:35 Sequence 0:35 move second child to first child ( temp double) 0:35 'f32' ( temp double) 0:35 Constant: 0:35 0.200000 0:36 Sequence 0:36 move second child to first child ( temp double) 0:36 'f33' ( temp double) 0:36 Constant: 0:36 0.300000 0:37 Sequence 0:37 move second child to first child ( temp double) 0:37 'f34' ( temp double) 0:37 Constant: 0:37 0.400000 0:38 Sequence 0:38 move second child to first child ( temp double) 0:38 'f35' ( temp double) 0:38 Constant: 0:38 0.500000 0:39 Sequence 0:39 move second child to first child ( temp double) 0:39 'f36' ( temp double) 0:39 Constant: 0:39 0.600000 0:40 Sequence 0:40 move second child to first child ( temp double) 0:40 'f37' ( temp double) 0:40 Constant: 0:40 0.700000 0:41 Sequence 0:41 move second child to first child ( temp double) 0:41 'f38' ( temp double) 0:41 Constant: 0:41 0.800000 0:42 Sequence 0:42 move second child to first child ( temp double) 0:42 'f39' ( temp double) 0:42 Constant: 0:42 0.900000 0:43 Sequence 0:43 move second child to first child ( temp double) 0:43 'f4' ( temp double) 0:43 Constant: 0:43 0.333333 0:44 Sequence 0:44 move second child to first child ( temp double) 0:44 'f51' ( temp double) 0:44 Constant: 0:44 7.8347500000000e-37 0:45 Sequence 0:45 move second child to first child ( temp double) 0:45 'f52' ( temp double) 0:45 Constant: 0:45 7.8347500000000e-37 0:46 Sequence 0:46 move second child to first child ( temp double) 0:46 'f53' ( temp double) 0:46 Constant: 0:46 7.8347500000000e-37 0:47 Sequence 0:47 move second child to first child ( temp double) 0:47 'f54' ( temp double) 0:47 Constant: 0:47 7.8347500000000e-37 0:48 Sequence 0:48 move second child to first child ( temp double) 0:48 'f61' ( temp double) 0:48 Constant: 0:48 4.000000 0:49 Sequence 0:49 move second child to first child ( temp double) 0:49 'f62' ( temp double) 0:49 Constant: 0:49 40.000000 0:50 Sequence 0:50 move second child to first child ( temp double) 0:50 'f63' ( temp double) 0:50 Constant: 0:50 0.000000 0:51 Sequence 0:51 move second child to first child ( temp double) 0:51 'f64' ( temp double) 0:51 Constant: 0:51 4.000000 0:52 Sequence 0:52 move second child to first child ( temp double) 0:52 'f65' ( temp double) 0:52 Constant: 0:52 0.000000 0:53 Sequence 0:53 move second child to first child ( temp double) 0:53 'f66' ( temp double) 0:53 Constant: 0:53 0.004000 0:54 Sequence 0:54 move second child to first child ( temp double) 0:54 'f67' ( temp double) 0:54 Constant: 0:54 0.400000 0:55 Sequence 0:55 move second child to first child ( temp double) 0:55 'f68' ( temp double) 0:55 Constant: 0:55 0.040000 0:57 Sequence 0:57 move second child to first child ( temp double) 0:57 'c1' ( temp double) 0:57 Constant: 0:57 0.000810 0:58 Sequence 0:58 move second child to first child ( temp double) 0:58 'c2' ( temp double) 0:58 Constant: 0:58 7.300000 0:59 Sequence 0:59 move second child to first child ( temp double) 0:59 'c3' ( temp double) 0:59 Constant: 0:59 3.450000 0:60 Sequence 0:60 move second child to first child ( temp double) 0:60 'c4' ( temp double) 0:60 Constant: 0:60 0.003570 0:61 Sequence 0:61 move second child to first child ( temp double) 0:61 'c5' ( temp double) 0:61 Constant: 0:61 439.000000 0:62 Sequence 0:62 move second child to first child ( temp double) 0:62 'c6' ( temp double) 0:62 Constant: 0:62 522000.000000 0:63 Sequence 0:63 move second child to first child ( temp double) 0:63 'c7' ( temp double) 0:63 Constant: 0:63 61000000.000000 0:64 Sequence 0:64 move second child to first child ( temp double) 0:64 'c8' ( temp double) 0:64 Constant: 0:64 0.610000 0:65 Sequence 0:65 move second child to first child ( temp double) 0:65 'c9' ( temp double) 0:65 Constant: 0:65 1.2345678901235e+18 0:66 Sequence 0:66 move second child to first child ( temp double) 0:66 'c10' ( temp double) 0:66 Constant: 0:66 1.0000000000000e+21 0:67 Sequence 0:67 move second child to first child ( temp double) 0:67 'c11' ( temp double) 0:67 Constant: 0:67 1230000.004560 0:68 Sequence 0:68 move second child to first child ( temp double) 0:68 'c12' ( temp double) 0:68 Constant: 0:68 1230.000004 0:69 Sequence 0:69 move second child to first child ( temp double) 0:69 'c13' ( temp double) 0:69 Constant: 0:69 123.000000 0:70 Sequence 0:70 move second child to first child ( temp double) 0:70 'c14' ( temp double) 0:70 Constant: 0:70 102.300000 0:71 Sequence 0:71 move second child to first child ( temp double) 0:71 'c15' ( temp double) 0:71 Constant: 0:71 1.2003000000456e+12 0:72 Sequence 0:72 move second child to first child ( temp double) 0:72 'c16' ( temp double) 0:72 Constant: 0:72 123000000456.000000 0:73 Sequence 0:73 move second child to first child ( temp double) 0:73 'c17' ( temp double) 0:73 Constant: 0:73 1.2300000045600e+12 0:74 Sequence 0:74 move second child to first child ( temp double) 0:74 'c18' ( temp double) 0:74 Constant: 0:74 1.2300000045601e+12 0:76 Sequence 0:76 move second child to first child ( temp double) 0:76 'b11' ( temp double) 0:76 Constant: 0:76 7.2057594037928e+16 0:77 Sequence 0:77 move second child to first child ( temp double) 0:77 'b12' ( temp double) 0:77 Constant: 0:77 7.2057594037928e+16 0:78 Sequence 0:78 move second child to first child ( temp double) 0:78 'b13' ( temp double) 0:78 Constant: 0:78 7.2057594037928e+16 0:79 Sequence 0:79 move second child to first child ( temp double) 0:79 'b14' ( temp double) 0:79 Constant: 0:79 7.2057594037928e+16 0:80 Sequence 0:80 move second child to first child ( temp double) 0:80 'b15' ( temp double) 0:80 Constant: 0:80 7.2057594037928e+16 0:81 Sequence 0:81 move second child to first child ( temp double) 0:81 'b21' ( temp double) 0:81 Constant: 0:81 9.2233720368548e+18 0:82 Sequence 0:82 move second child to first child ( temp double) 0:82 'b22' ( temp double) 0:82 Constant: 0:82 9.2233720368548e+18 0:83 Sequence 0:83 move second child to first child ( temp double) 0:83 'b23' ( temp double) 0:83 Constant: 0:83 9.2233720368548e+18 0:84 Sequence 0:84 move second child to first child ( temp double) 0:84 'b24' ( temp double) 0:84 Constant: 0:84 9.2233720368548e+18 0:85 Sequence 0:85 move second child to first child ( temp double) 0:85 'b25' ( temp double) 0:85 Constant: 0:85 9.2233720368548e+18 0:86 Sequence 0:86 move second child to first child ( temp double) 0:86 'b31' ( temp double) 0:86 Constant: 0:86 1.0141204801826e+31 0:87 Sequence 0:87 move second child to first child ( temp double) 0:87 'b32' ( temp double) 0:87 Constant: 0:87 1.0141204801826e+31 0:88 Sequence 0:88 move second child to first child ( temp double) 0:88 'b33' ( temp double) 0:88 Constant: 0:88 1.0141204801826e+31 0:89 Sequence 0:89 move second child to first child ( temp double) 0:89 'b34' ( temp double) 0:89 Constant: 0:89 1.0141204801826e+31 0:90 Sequence 0:90 move second child to first child ( temp double) 0:90 'b35' ( temp double) 0:90 Constant: 0:90 1.0141204801826e+31 0:91 Sequence 0:91 move second child to first child ( temp double) 0:91 'b41' ( temp double) 0:91 Constant: 0:91 5.7089907708238e+45 0:92 Sequence 0:92 move second child to first child ( temp double) 0:92 'b42' ( temp double) 0:92 Constant: 0:92 5.7089907708238e+45 0:93 Sequence 0:93 move second child to first child ( temp double) 0:93 'b43' ( temp double) 0:93 Constant: 0:93 5.7089907708238e+45 0:94 Sequence 0:94 move second child to first child ( temp double) 0:94 'b44' ( temp double) 0:94 Constant: 0:94 5.7089907708238e+45 0:95 Sequence 0:95 move second child to first child ( temp double) 0:95 'b45' ( temp double) 0:95 Constant: 0:95 5.7089907708238e+45 0:97 Sequence 0:97 move second child to first child ( temp float) 0:97 'pi1' ( temp float) 0:97 Constant: 0:97 3.141593 0:98 Sequence 0:98 move second child to first child ( temp float) 0:98 'pi2' ( temp float) 0:98 Constant: 0:98 3.141593 0:99 Sequence 0:99 move second child to first child ( temp float) 0:99 'pi3' ( temp float) 0:99 Constant: 0:99 3.141593 0:101 Sequence 0:101 move second child to first child ( temp double) 0:101 'dpi1' ( temp double) 0:101 Constant: 0:101 3.141593 0:102 Sequence 0:102 move second child to first child ( temp double) 0:102 'dpi2' ( temp double) 0:102 Constant: 0:102 3.141593 0:103 Sequence 0:103 move second child to first child ( temp double) 0:103 'dpi3' ( temp double) 0:103 Constant: 0:103 3.141593 0:105 Sequence 0:105 move second child to first child ( temp float) 0:105 'dfpi1' ( temp float) 0:105 Constant: 0:105 3.141593 0:106 Sequence 0:106 move second child to first child ( temp float) 0:106 'dfpi2' ( temp float) 0:106 Constant: 0:106 3.141593 0:107 Sequence 0:107 move second child to first child ( temp float) 0:107 'dfpi3' ( temp float) 0:107 Constant: 0:107 3.141593 0:109 Sequence 0:109 move second child to first child ( temp double) 0:109 'lfpi1' ( temp double) 0:109 Constant: 0:109 3.141593 0:110 Sequence 0:110 move second child to first child ( temp double) 0:110 'lfpi2' ( temp double) 0:110 Constant: 0:110 3.141593 0:111 Sequence 0:111 move second child to first child ( temp double) 0:111 'lfpi3' ( temp double) 0:111 Constant: 0:111 3.141593 0:113 Sequence 0:113 move second child to first child ( temp double) 0:113 'hfpi1' ( temp double) 0:113 Constant: 0:113 3.141593 0:114 Sequence 0:114 move second child to first child ( temp double) 0:114 'hfpi2' ( temp double) 0:114 Constant: 0:114 3.141593 0:115 Sequence 0:115 move second child to first child ( temp double) 0:115 'hfpi3' ( temp double) 0:115 Constant: 0:115 3.141593 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 460 Requested GL_EXT_shader_explicit_arithmetic_types_float16 0:? Sequence 0:3 Function Definition: main( ( global void) 0:3 Function Parameters: 0:5 Sequence 0:5 Sequence 0:5 move second child to first child ( temp float) 0:5 'w1' ( temp float) 0:5 Constant: 0:5 0.000000 0:6 Sequence 0:6 move second child to first child ( temp float) 0:6 'w2' ( temp float) 0:6 Constant: 0:6 1.000000 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 'w3' ( temp float) 0:7 Constant: 0:7 7.000000 0:8 Sequence 0:8 move second child to first child ( temp float) 0:8 'w4' ( temp float) 0:8 Constant: 0:8 130000.000000 0:9 Sequence 0:9 move second child to first child ( temp float) 0:9 'w5' ( temp float) 0:9 Constant: 0:9 123456789.000000 0:10 Sequence 0:10 move second child to first child ( temp double) 0:10 'w6' ( temp double) 0:10 Constant: 0:10 1.2345678901235e+15 0:11 Sequence 0:11 move second child to first child ( temp double) 0:11 'w7' ( temp double) 0:11 Constant: 0:11 1.2345678901235e+16 0:12 Sequence 0:12 move second child to first child ( temp double) 0:12 'w8' ( temp double) 0:12 Constant: 0:12 1.2345678901235e+17 0:13 Sequence 0:13 move second child to first child ( temp double) 0:13 'w9' ( temp double) 0:13 Constant: 0:13 1.2345678901235e+19 0:14 Sequence 0:14 move second child to first child ( temp double) 0:14 'w10' ( temp double) 0:14 Constant: 0:14 1.2345678901235e+24 0:16 Sequence 0:16 move second child to first child ( temp float) 0:16 'e1' ( temp float) 0:16 Constant: 0:16 0.000000 0:17 Sequence 0:17 move second child to first child ( temp float) 0:17 'e2' ( temp float) 0:17 Constant: 0:17 1.000000 0:18 Sequence 0:18 move second child to first child ( temp float) 0:18 'e3' ( temp float) 0:18 Constant: 0:18 0.000000 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'e4' ( temp float) 0:19 Constant: 0:19 1.0000000000000e+15 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'e5' ( temp float) 0:20 Constant: 0:20 1.0000000000000e+16 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'e6' ( temp float) 0:21 Constant: 0:21 0.000000 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'e7' ( temp float) 0:22 Constant: 0:22 1.0000000000000e-15 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'e8' ( temp float) 0:23 Constant: 0:23 1.0000000000000e-16 0:24 Sequence 0:24 move second child to first child ( temp double) 0:24 'e9' ( temp double) 0:24 Constant: 0:24 1.0000000000000e+100 0:25 Sequence 0:25 move second child to first child ( temp double) 0:25 'e10' ( temp double) 0:25 Constant: 0:25 1.0000000000000e+308 0:26 Sequence 0:26 move second child to first child ( temp double) 0:26 'e11' ( temp double) 0:26 Constant: 0:26 1.0000000000000e-307 0:27 Sequence 0:27 move second child to first child ( temp double) 0:27 'e12' ( temp double) 0:27 Constant: 0:27 +1.#INF 0:28 Sequence 0:28 move second child to first child ( temp double) 0:28 'e13' ( temp double) 0:28 Constant: 0:28 0.000000 0:29 Sequence 0:29 move second child to first child ( temp double) 0:29 'e24' ( temp double) 0:29 Constant: 0:29 +1.#INF 0:30 Sequence 0:30 move second child to first child ( temp double) 0:30 'e25' ( temp double) 0:30 Constant: 0:30 0.000000 0:32 Sequence 0:32 move second child to first child ( temp double) 0:32 'f1' ( temp double) 0:32 Constant: 0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp double) 0:33 'f2' ( temp double) 0:33 Constant: 0:33 0.125000 0:34 Sequence 0:34 move second child to first child ( temp double) 0:34 'f31' ( temp double) 0:34 Constant: 0:34 0.100000 0:35 Sequence 0:35 move second child to first child ( temp double) 0:35 'f32' ( temp double) 0:35 Constant: 0:35 0.200000 0:36 Sequence 0:36 move second child to first child ( temp double) 0:36 'f33' ( temp double) 0:36 Constant: 0:36 0.300000 0:37 Sequence 0:37 move second child to first child ( temp double) 0:37 'f34' ( temp double) 0:37 Constant: 0:37 0.400000 0:38 Sequence 0:38 move second child to first child ( temp double) 0:38 'f35' ( temp double) 0:38 Constant: 0:38 0.500000 0:39 Sequence 0:39 move second child to first child ( temp double) 0:39 'f36' ( temp double) 0:39 Constant: 0:39 0.600000 0:40 Sequence 0:40 move second child to first child ( temp double) 0:40 'f37' ( temp double) 0:40 Constant: 0:40 0.700000 0:41 Sequence 0:41 move second child to first child ( temp double) 0:41 'f38' ( temp double) 0:41 Constant: 0:41 0.800000 0:42 Sequence 0:42 move second child to first child ( temp double) 0:42 'f39' ( temp double) 0:42 Constant: 0:42 0.900000 0:43 Sequence 0:43 move second child to first child ( temp double) 0:43 'f4' ( temp double) 0:43 Constant: 0:43 0.333333 0:44 Sequence 0:44 move second child to first child ( temp double) 0:44 'f51' ( temp double) 0:44 Constant: 0:44 7.8347500000000e-37 0:45 Sequence 0:45 move second child to first child ( temp double) 0:45 'f52' ( temp double) 0:45 Constant: 0:45 7.8347500000000e-37 0:46 Sequence 0:46 move second child to first child ( temp double) 0:46 'f53' ( temp double) 0:46 Constant: 0:46 7.8347500000000e-37 0:47 Sequence 0:47 move second child to first child ( temp double) 0:47 'f54' ( temp double) 0:47 Constant: 0:47 7.8347500000000e-37 0:48 Sequence 0:48 move second child to first child ( temp double) 0:48 'f61' ( temp double) 0:48 Constant: 0:48 4.000000 0:49 Sequence 0:49 move second child to first child ( temp double) 0:49 'f62' ( temp double) 0:49 Constant: 0:49 40.000000 0:50 Sequence 0:50 move second child to first child ( temp double) 0:50 'f63' ( temp double) 0:50 Constant: 0:50 0.000000 0:51 Sequence 0:51 move second child to first child ( temp double) 0:51 'f64' ( temp double) 0:51 Constant: 0:51 4.000000 0:52 Sequence 0:52 move second child to first child ( temp double) 0:52 'f65' ( temp double) 0:52 Constant: 0:52 0.000000 0:53 Sequence 0:53 move second child to first child ( temp double) 0:53 'f66' ( temp double) 0:53 Constant: 0:53 0.004000 0:54 Sequence 0:54 move second child to first child ( temp double) 0:54 'f67' ( temp double) 0:54 Constant: 0:54 0.400000 0:55 Sequence 0:55 move second child to first child ( temp double) 0:55 'f68' ( temp double) 0:55 Constant: 0:55 0.040000 0:57 Sequence 0:57 move second child to first child ( temp double) 0:57 'c1' ( temp double) 0:57 Constant: 0:57 0.000810 0:58 Sequence 0:58 move second child to first child ( temp double) 0:58 'c2' ( temp double) 0:58 Constant: 0:58 7.300000 0:59 Sequence 0:59 move second child to first child ( temp double) 0:59 'c3' ( temp double) 0:59 Constant: 0:59 3.450000 0:60 Sequence 0:60 move second child to first child ( temp double) 0:60 'c4' ( temp double) 0:60 Constant: 0:60 0.003570 0:61 Sequence 0:61 move second child to first child ( temp double) 0:61 'c5' ( temp double) 0:61 Constant: 0:61 439.000000 0:62 Sequence 0:62 move second child to first child ( temp double) 0:62 'c6' ( temp double) 0:62 Constant: 0:62 522000.000000 0:63 Sequence 0:63 move second child to first child ( temp double) 0:63 'c7' ( temp double) 0:63 Constant: 0:63 61000000.000000 0:64 Sequence 0:64 move second child to first child ( temp double) 0:64 'c8' ( temp double) 0:64 Constant: 0:64 0.610000 0:65 Sequence 0:65 move second child to first child ( temp double) 0:65 'c9' ( temp double) 0:65 Constant: 0:65 1.2345678901235e+18 0:66 Sequence 0:66 move second child to first child ( temp double) 0:66 'c10' ( temp double) 0:66 Constant: 0:66 1.0000000000000e+21 0:67 Sequence 0:67 move second child to first child ( temp double) 0:67 'c11' ( temp double) 0:67 Constant: 0:67 1230000.004560 0:68 Sequence 0:68 move second child to first child ( temp double) 0:68 'c12' ( temp double) 0:68 Constant: 0:68 1230.000004 0:69 Sequence 0:69 move second child to first child ( temp double) 0:69 'c13' ( temp double) 0:69 Constant: 0:69 123.000000 0:70 Sequence 0:70 move second child to first child ( temp double) 0:70 'c14' ( temp double) 0:70 Constant: 0:70 102.300000 0:71 Sequence 0:71 move second child to first child ( temp double) 0:71 'c15' ( temp double) 0:71 Constant: 0:71 1.2003000000456e+12 0:72 Sequence 0:72 move second child to first child ( temp double) 0:72 'c16' ( temp double) 0:72 Constant: 0:72 123000000456.000000 0:73 Sequence 0:73 move second child to first child ( temp double) 0:73 'c17' ( temp double) 0:73 Constant: 0:73 1.2300000045600e+12 0:74 Sequence 0:74 move second child to first child ( temp double) 0:74 'c18' ( temp double) 0:74 Constant: 0:74 1.2300000045601e+12 0:76 Sequence 0:76 move second child to first child ( temp double) 0:76 'b11' ( temp double) 0:76 Constant: 0:76 7.2057594037928e+16 0:77 Sequence 0:77 move second child to first child ( temp double) 0:77 'b12' ( temp double) 0:77 Constant: 0:77 7.2057594037928e+16 0:78 Sequence 0:78 move second child to first child ( temp double) 0:78 'b13' ( temp double) 0:78 Constant: 0:78 7.2057594037928e+16 0:79 Sequence 0:79 move second child to first child ( temp double) 0:79 'b14' ( temp double) 0:79 Constant: 0:79 7.2057594037928e+16 0:80 Sequence 0:80 move second child to first child ( temp double) 0:80 'b15' ( temp double) 0:80 Constant: 0:80 7.2057594037928e+16 0:81 Sequence 0:81 move second child to first child ( temp double) 0:81 'b21' ( temp double) 0:81 Constant: 0:81 9.2233720368548e+18 0:82 Sequence 0:82 move second child to first child ( temp double) 0:82 'b22' ( temp double) 0:82 Constant: 0:82 9.2233720368548e+18 0:83 Sequence 0:83 move second child to first child ( temp double) 0:83 'b23' ( temp double) 0:83 Constant: 0:83 9.2233720368548e+18 0:84 Sequence 0:84 move second child to first child ( temp double) 0:84 'b24' ( temp double) 0:84 Constant: 0:84 9.2233720368548e+18 0:85 Sequence 0:85 move second child to first child ( temp double) 0:85 'b25' ( temp double) 0:85 Constant: 0:85 9.2233720368548e+18 0:86 Sequence 0:86 move second child to first child ( temp double) 0:86 'b31' ( temp double) 0:86 Constant: 0:86 1.0141204801826e+31 0:87 Sequence 0:87 move second child to first child ( temp double) 0:87 'b32' ( temp double) 0:87 Constant: 0:87 1.0141204801826e+31 0:88 Sequence 0:88 move second child to first child ( temp double) 0:88 'b33' ( temp double) 0:88 Constant: 0:88 1.0141204801826e+31 0:89 Sequence 0:89 move second child to first child ( temp double) 0:89 'b34' ( temp double) 0:89 Constant: 0:89 1.0141204801826e+31 0:90 Sequence 0:90 move second child to first child ( temp double) 0:90 'b35' ( temp double) 0:90 Constant: 0:90 1.0141204801826e+31 0:91 Sequence 0:91 move second child to first child ( temp double) 0:91 'b41' ( temp double) 0:91 Constant: 0:91 5.7089907708238e+45 0:92 Sequence 0:92 move second child to first child ( temp double) 0:92 'b42' ( temp double) 0:92 Constant: 0:92 5.7089907708238e+45 0:93 Sequence 0:93 move second child to first child ( temp double) 0:93 'b43' ( temp double) 0:93 Constant: 0:93 5.7089907708238e+45 0:94 Sequence 0:94 move second child to first child ( temp double) 0:94 'b44' ( temp double) 0:94 Constant: 0:94 5.7089907708238e+45 0:95 Sequence 0:95 move second child to first child ( temp double) 0:95 'b45' ( temp double) 0:95 Constant: 0:95 5.7089907708238e+45 0:97 Sequence 0:97 move second child to first child ( temp float) 0:97 'pi1' ( temp float) 0:97 Constant: 0:97 3.141593 0:98 Sequence 0:98 move second child to first child ( temp float) 0:98 'pi2' ( temp float) 0:98 Constant: 0:98 3.141593 0:99 Sequence 0:99 move second child to first child ( temp float) 0:99 'pi3' ( temp float) 0:99 Constant: 0:99 3.141593 0:101 Sequence 0:101 move second child to first child ( temp double) 0:101 'dpi1' ( temp double) 0:101 Constant: 0:101 3.141593 0:102 Sequence 0:102 move second child to first child ( temp double) 0:102 'dpi2' ( temp double) 0:102 Constant: 0:102 3.141593 0:103 Sequence 0:103 move second child to first child ( temp double) 0:103 'dpi3' ( temp double) 0:103 Constant: 0:103 3.141593 0:105 Sequence 0:105 move second child to first child ( temp float) 0:105 'dfpi1' ( temp float) 0:105 Constant: 0:105 3.141593 0:106 Sequence 0:106 move second child to first child ( temp float) 0:106 'dfpi2' ( temp float) 0:106 Constant: 0:106 3.141593 0:107 Sequence 0:107 move second child to first child ( temp float) 0:107 'dfpi3' ( temp float) 0:107 Constant: 0:107 3.141593 0:109 Sequence 0:109 move second child to first child ( temp double) 0:109 'lfpi1' ( temp double) 0:109 Constant: 0:109 3.141593 0:110 Sequence 0:110 move second child to first child ( temp double) 0:110 'lfpi2' ( temp double) 0:110 Constant: 0:110 3.141593 0:111 Sequence 0:111 move second child to first child ( temp double) 0:111 'lfpi3' ( temp double) 0:111 Constant: 0:111 3.141593 0:113 Sequence 0:113 move second child to first child ( temp double) 0:113 'hfpi1' ( temp double) 0:113 Constant: 0:113 3.141593 0:114 Sequence 0:114 move second child to first child ( temp double) 0:114 'hfpi2' ( temp double) 0:114 Constant: 0:114 3.141593 0:115 Sequence 0:115 move second child to first child ( temp double) 0:115 'hfpi3' ( temp double) 0:115 Constant: 0:115 3.141593 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/struct.error.frag.out000066400000000000000000000017561506534232700226030ustar00rootroot00000000000000struct.error.frag ERROR: 0:12: 'z' : no such field in structure ERROR: 1 compilation errors. No code generated. Shader version: 460 ERROR: node is still EOpNull! 0:7 Function Definition: test( ( global structure{ global float x}) 0:7 Function Parameters: 0:8 Sequence 0:8 Branch: Return with expression 0:8 Constant: 0:8 1.000000 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:12 Sequence 0:12 Function Call: test( ( global structure{ global float x}) 0:? Linker Objects Linked fragment stage: Shader version: 460 ERROR: node is still EOpNull! 0:7 Function Definition: test( ( global structure{ global float x}) 0:7 Function Parameters: 0:8 Sequence 0:8 Branch: Return with expression 0:8 Constant: 0:8 1.000000 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:12 Sequence 0:12 Function Call: test( ( global structure{ global float x}) 0:? Linker Objects glslang-16.0.0/Test/baseResults/structAssignment.frag.out000066400000000000000000000155031506534232700234770ustar00rootroot00000000000000structAssignment.frag WARNING: 0:4: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:29 Function Definition: main( ( global void) 0:29 Function Parameters: 0:? Sequence 0:33 Test condition and select ( temp void) 0:33 Condition 0:33 Compare Greater Than ( temp bool) 0:33 i: direct index for structure ( global int) 0:33 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:33 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 true case 0:34 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 Constant: 0:34 0 (const int) 0:33 false case 0:36 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:36 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:36 'foo2' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:38 vector-scale ( temp 4-component vector of float) 0:38 f: direct index for structure ( global float) 0:38 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:38 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 texture ( global 4-component vector of float) 0:38 'sampler' ( uniform sampler2D) 0:38 'coord' ( smooth in 2-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'foo' ( uniform structure{ global int i, global float f}) 0:? 'foo2' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) Linked fragment stage: Shader version: 130 0:? Sequence 0:29 Function Definition: main( ( global void) 0:29 Function Parameters: 0:? Sequence 0:33 Test condition and select ( temp void) 0:33 Condition 0:33 Compare Greater Than ( temp bool) 0:33 i: direct index for structure ( global int) 0:33 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:33 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 0 (const int) 0:33 true case 0:34 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 s2_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 Constant: 0:34 0 (const int) 0:33 false case 0:36 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:36 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:36 'foo2' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:38 move second child to first child ( temp 4-component vector of float) 0:38 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:38 vector-scale ( temp 4-component vector of float) 0:38 f: direct index for structure ( global float) 0:38 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:38 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:38 Constant: 0:38 2 (const int) 0:38 Constant: 0:38 1 (const int) 0:38 texture ( global 4-component vector of float) 0:38 'sampler' ( uniform sampler2D) 0:38 'coord' ( smooth in 2-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'foo' ( uniform structure{ global int i, global float f}) 0:? 'foo2' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'foo3' ( uniform structure{ global structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) glslang-16.0.0/Test/baseResults/structDeref.frag.out000066400000000000000000000513341506534232700224160ustar00rootroot00000000000000structDeref.frag WARNING: 0:4: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:41 Function Definition: main( ( global void) 0:41 Function Parameters: 0:? Sequence 0:51 Test condition and select ( temp void) 0:51 Condition 0:51 Compare Greater Than ( temp bool) 0:51 i: direct index for structure ( global int) 0:51 direct index ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:51 s2_1: direct index for structure ( global 12-element array of structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:51 'foo3' ( uniform structure{ global 12-element array of structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 9 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 true case 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 f: direct index for structure ( global float) 0:52 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 1.000000 0:53 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:53 s1_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:53 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 1.000000 0:53 0 (const int) 0:54 move second child to first child ( temp 6-element array of float) 0:54 'fArray' ( temp 6-element array of float) 0:54 Constant: 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:55 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:55 direct index ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:55 'locals1Array' ( temp 10-element array of structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:55 Constant: 0:55 6 (const int) 0:55 'foo1' ( uniform structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:56 move second child to first child ( temp structure{ global int i}) 0:56 'locals0' ( temp structure{ global int i}) 0:56 Constant: 0:56 0 (const int) 0:57 move second child to first child ( temp structure{ global structure{ global int i} s0_0}) 0:57 'locals00' ( temp structure{ global structure{ global int i} s0_0}) 0:57 Constant: 0:57 0 (const int) 0:51 false case 0:59 Sequence 0:59 move second child to first child ( temp float) 0:59 f: direct index for structure ( global float) 0:59 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:59 Constant: 0:59 1 (const int) 0:59 direct index ( temp float) 0:59 'coord' ( smooth in 2-component vector of float) 0:59 Constant: 0:59 0 (const int) 0:60 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:60 s1_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:60 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:60 Constant: 0:60 2 (const int) 0:60 Construct structure ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:60 Constant: 0:60 1 (const int) 0:60 direct index ( temp float) 0:60 'coord' ( smooth in 2-component vector of float) 0:60 Constant: 0:60 1 (const int) 0:60 'foo0' ( uniform structure{ global int i}) 0:61 move second child to first child ( temp 6-element array of float) 0:61 'fArray' ( temp 6-element array of float) 0:61 Constant: 0:61 0.000000 0:61 1.000000 0:61 2.000000 0:61 3.000000 0:61 4.000000 0:61 5.000000 0:62 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:62 direct index ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:62 'locals1Array' ( temp 10-element array of structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:62 Constant: 0:62 6 (const int) 0:62 s1_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:62 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:62 Constant: 0:62 2 (const int) 0:63 move second child to first child ( temp structure{ global int i}) 0:63 'locals0' ( temp structure{ global int i}) 0:63 s0_1: direct index for structure ( global structure{ global int i}) 0:63 'foo1' ( uniform structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:63 Constant: 0:63 2 (const int) 0:64 move second child to first child ( temp structure{ global structure{ global int i} s0_0}) 0:64 'locals00' ( temp structure{ global structure{ global int i} s0_0}) 0:64 'foo00' ( uniform structure{ global structure{ global int i} s0_0}) 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Compare Greater Than ( temp bool) 0:67 i: direct index for structure ( global int) 0:67 'locals0' ( temp structure{ global int i}) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 5 (const int) 0:67 true case 0:68 move second child to first child ( temp structure{ global int i}) 0:68 'locals0' ( temp structure{ global int i}) 0:68 s0_0: direct index for structure ( global structure{ global int i}) 0:68 'locals00' ( temp structure{ global structure{ global int i} s0_0}) 0:68 Constant: 0:68 0 (const int) 0:70 move second child to first child ( temp 4-component vector of float) 0:70 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:70 vector-scale ( temp 4-component vector of float) 0:70 add ( temp float) 0:70 add ( temp float) 0:70 add ( temp float) 0:70 Convert int to float ( temp float) 0:70 i: direct index for structure ( global int) 0:70 'locals0' ( temp structure{ global int i}) 0:70 Constant: 0:70 0 (const int) 0:70 f: direct index for structure ( global float) 0:70 direct index ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:70 'locals1Array' ( temp 10-element array of structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:70 Constant: 0:70 6 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 direct index ( temp float) 0:70 'fArray' ( temp 6-element array of float) 0:70 Constant: 0:70 3 (const int) 0:70 f: direct index for structure ( global float) 0:70 s1_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:70 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 texture ( global 4-component vector of float) 0:70 'sampler' ( uniform sampler2D) 0:70 'coord' ( smooth in 2-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'foo0' ( uniform structure{ global int i}) 0:? 'foo1' ( uniform structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:? 'foo2' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:? 'foo3' ( uniform structure{ global 12-element array of structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:? 'foo00' ( uniform structure{ global structure{ global int i} s0_0}) Linked fragment stage: Shader version: 130 0:? Sequence 0:41 Function Definition: main( ( global void) 0:41 Function Parameters: 0:? Sequence 0:51 Test condition and select ( temp void) 0:51 Condition 0:51 Compare Greater Than ( temp bool) 0:51 i: direct index for structure ( global int) 0:51 direct index ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:51 s2_1: direct index for structure ( global 12-element array of structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:51 'foo3' ( uniform structure{ global 12-element array of structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 9 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 Constant: 0:51 0 (const int) 0:51 true case 0:52 Sequence 0:52 move second child to first child ( temp float) 0:52 f: direct index for structure ( global float) 0:52 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:52 Constant: 0:52 1 (const int) 0:52 Constant: 0:52 1.000000 0:53 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:53 s1_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:53 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:53 Constant: 0:53 2 (const int) 0:53 Constant: 0:53 0 (const int) 0:53 1.000000 0:53 0 (const int) 0:54 move second child to first child ( temp 6-element array of float) 0:54 'fArray' ( temp 6-element array of float) 0:54 Constant: 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:54 0.000000 0:55 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:55 direct index ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:55 'locals1Array' ( temp 10-element array of structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:55 Constant: 0:55 6 (const int) 0:55 'foo1' ( uniform structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:56 move second child to first child ( temp structure{ global int i}) 0:56 'locals0' ( temp structure{ global int i}) 0:56 Constant: 0:56 0 (const int) 0:57 move second child to first child ( temp structure{ global structure{ global int i} s0_0}) 0:57 'locals00' ( temp structure{ global structure{ global int i} s0_0}) 0:57 Constant: 0:57 0 (const int) 0:51 false case 0:59 Sequence 0:59 move second child to first child ( temp float) 0:59 f: direct index for structure ( global float) 0:59 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:59 Constant: 0:59 1 (const int) 0:59 direct index ( temp float) 0:59 'coord' ( smooth in 2-component vector of float) 0:59 Constant: 0:59 0 (const int) 0:60 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:60 s1_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:60 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:60 Constant: 0:60 2 (const int) 0:60 Construct structure ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:60 Constant: 0:60 1 (const int) 0:60 direct index ( temp float) 0:60 'coord' ( smooth in 2-component vector of float) 0:60 Constant: 0:60 1 (const int) 0:60 'foo0' ( uniform structure{ global int i}) 0:61 move second child to first child ( temp 6-element array of float) 0:61 'fArray' ( temp 6-element array of float) 0:61 Constant: 0:61 0.000000 0:61 1.000000 0:61 2.000000 0:61 3.000000 0:61 4.000000 0:61 5.000000 0:62 move second child to first child ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:62 direct index ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:62 'locals1Array' ( temp 10-element array of structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:62 Constant: 0:62 6 (const int) 0:62 s1_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:62 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:62 Constant: 0:62 2 (const int) 0:63 move second child to first child ( temp structure{ global int i}) 0:63 'locals0' ( temp structure{ global int i}) 0:63 s0_1: direct index for structure ( global structure{ global int i}) 0:63 'foo1' ( uniform structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:63 Constant: 0:63 2 (const int) 0:64 move second child to first child ( temp structure{ global structure{ global int i} s0_0}) 0:64 'locals00' ( temp structure{ global structure{ global int i} s0_0}) 0:64 'foo00' ( uniform structure{ global structure{ global int i} s0_0}) 0:67 Test condition and select ( temp void) 0:67 Condition 0:67 Compare Greater Than ( temp bool) 0:67 i: direct index for structure ( global int) 0:67 'locals0' ( temp structure{ global int i}) 0:67 Constant: 0:67 0 (const int) 0:67 Constant: 0:67 5 (const int) 0:67 true case 0:68 move second child to first child ( temp structure{ global int i}) 0:68 'locals0' ( temp structure{ global int i}) 0:68 s0_0: direct index for structure ( global structure{ global int i}) 0:68 'locals00' ( temp structure{ global structure{ global int i} s0_0}) 0:68 Constant: 0:68 0 (const int) 0:70 move second child to first child ( temp 4-component vector of float) 0:70 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:70 vector-scale ( temp 4-component vector of float) 0:70 add ( temp float) 0:70 add ( temp float) 0:70 add ( temp float) 0:70 Convert int to float ( temp float) 0:70 i: direct index for structure ( global int) 0:70 'locals0' ( temp structure{ global int i}) 0:70 Constant: 0:70 0 (const int) 0:70 f: direct index for structure ( global float) 0:70 direct index ( temp structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:70 'locals1Array' ( temp 10-element array of structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:70 Constant: 0:70 6 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 direct index ( temp float) 0:70 'fArray' ( temp 6-element array of float) 0:70 Constant: 0:70 3 (const int) 0:70 f: direct index for structure ( global float) 0:70 s1_1: direct index for structure ( global structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:70 'locals2' ( temp structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:70 Constant: 0:70 2 (const int) 0:70 Constant: 0:70 1 (const int) 0:70 texture ( global 4-component vector of float) 0:70 'sampler' ( uniform sampler2D) 0:70 'coord' ( smooth in 2-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'foo0' ( uniform structure{ global int i}) 0:? 'foo1' ( uniform structure{ global int i, global float f, global structure{ global int i} s0_1}) 0:? 'foo2' ( uniform structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:? 'foo3' ( uniform structure{ global 12-element array of structure{ global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f, global structure{ global int i} s0_1} s1_1}) 0:? 'foo00' ( uniform structure{ global structure{ global int i} s0_0}) glslang-16.0.0/Test/baseResults/structure.frag.out000066400000000000000000000252001506534232700221550ustar00rootroot00000000000000structure.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'scale' ( temp float) 0:22 Constant: 0:22 0.000000 0:24 Test condition and select ( temp void) 0:24 Condition 0:24 Compare Greater Than ( temp bool) 0:24 direct index ( temp int) 0:24 i: direct index for structure ( global 5-element array of int) 0:24 direct index ( temp structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:24 'foo2' ( uniform 5-element array of structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 4 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 true case 0:25 move second child to first child ( temp float) 0:25 'scale' ( temp float) 0:25 direct index ( temp float) 0:25 direct index ( temp 4-component vector of float) 0:25 color: direct index for structure ( global 5-element array of 4-component vector of float) 0:25 direct index ( temp structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:25 s1_1: direct index for structure ( global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:25 direct index ( temp structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:25 'foo2' ( uniform 5-element array of structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:25 Constant: 0:25 3 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 3 (const int) 0:25 Constant: 0:25 0 (const int) 0:24 false case 0:27 move second child to first child ( temp float) 0:27 'scale' ( temp float) 0:27 direct index ( temp float) 0:27 f: direct index for structure ( global 4-element array of float) 0:27 direct index ( temp structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:27 s1_1: direct index for structure ( global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:27 direct index ( temp structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:27 'foo2' ( uniform 5-element array of structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 3 (const int) 0:29 move second child to first child ( temp 4-component vector of float) 0:29 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:29 vector-scale ( temp 4-component vector of float) 0:29 'scale' ( temp float) 0:29 texture ( global 4-component vector of float) 0:29 'sampler' ( uniform sampler2D) 0:29 'coord' ( smooth in 2-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'foo' ( uniform structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:? 'foo2' ( uniform 5-element array of structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) Linked fragment stage: Shader version: 130 0:? Sequence 0:20 Function Definition: main( ( global void) 0:20 Function Parameters: 0:22 Sequence 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'scale' ( temp float) 0:22 Constant: 0:22 0.000000 0:24 Test condition and select ( temp void) 0:24 Condition 0:24 Compare Greater Than ( temp bool) 0:24 direct index ( temp int) 0:24 i: direct index for structure ( global 5-element array of int) 0:24 direct index ( temp structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:24 'foo2' ( uniform 5-element array of structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: 0:24 4 (const int) 0:24 Constant: 0:24 0 (const int) 0:24 true case 0:25 move second child to first child ( temp float) 0:25 'scale' ( temp float) 0:25 direct index ( temp float) 0:25 direct index ( temp 4-component vector of float) 0:25 color: direct index for structure ( global 5-element array of 4-component vector of float) 0:25 direct index ( temp structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:25 s1_1: direct index for structure ( global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:25 direct index ( temp structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:25 'foo2' ( uniform 5-element array of structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:25 Constant: 0:25 3 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 2 (const int) 0:25 Constant: 0:25 3 (const int) 0:25 Constant: 0:25 0 (const int) 0:24 false case 0:27 move second child to first child ( temp float) 0:27 'scale' ( temp float) 0:27 direct index ( temp float) 0:27 f: direct index for structure ( global 4-element array of float) 0:27 direct index ( temp structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:27 s1_1: direct index for structure ( global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:27 direct index ( temp structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:27 'foo2' ( uniform 5-element array of structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) 0:27 Constant: 0:27 3 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 2 (const int) 0:27 Constant: 0:27 1 (const int) 0:27 Constant: 0:27 3 (const int) 0:29 move second child to first child ( temp 4-component vector of float) 0:29 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:29 vector-scale ( temp 4-component vector of float) 0:29 'scale' ( temp float) 0:29 texture ( global 4-component vector of float) 0:29 'sampler' ( uniform sampler2D) 0:29 'coord' ( smooth in 2-component vector of float) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'foo' ( uniform structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color}) 0:? 'foo2' ( uniform 5-element array of structure{ global 5-element array of int i, global float f, global 7-element array of structure{ global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1}) glslang-16.0.0/Test/baseResults/switch.frag.out000066400000000000000000000621601506534232700214240ustar00rootroot00000000000000switch.frag ERROR: 0:11: 'switch' : condition must be a scalar integer expression ERROR: 0:14: 'switch' : condition must be a scalar integer expression ERROR: 0:21: 'switch' : last case/default label not followed by statements ERROR: 0:28: 'switch' : cannot have statements before first case/default label ERROR: 0:43: 'default' : duplicate label ERROR: 0:63: 'case' : duplicated value ERROR: 0:65: 'case' : scalar integer expression required ERROR: 0:67: 'case' : constant expression required ERROR: 0:89: '' : break statement only allowed in switch and loops ERROR: 0:99: 'case' : cannot be nested inside control flow ERROR: 0:104: 'case' : cannot be nested inside control flow ERROR: 0:108: 'case' : cannot be nested inside control flow ERROR: 0:115: 'default' : cannot be nested inside control flow ERROR: 0:119: 'case' : cannot appear outside switch statement ERROR: 0:120: 'default' : cannot appear outside switch statement ERROR: 0:126: 'onlyInSwitch' : undeclared identifier ERROR: 0:128: 'switch' : last case/default label not followed by statements ERROR: 0:140: 'nestedX' : undeclared identifier ERROR: 0:157: 'nestedZ' : undeclared identifier ERROR: 19 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:? Sequence 0:11 'f' ( temp highp float) 0:14 'a' ( temp 2-element array of mediump int) 0:17 'c' ( uniform mediump int) 0:21 switch 0:21 condition 0:21 'c' ( uniform mediump int) 0:21 body 0:21 Sequence 0:23 case: with expression 0:23 Constant: 0:23 2 (const int) 0:21 Sequence 0:21 Branch: Break 0:26 switch 0:26 condition 0:26 'c' ( uniform mediump int) 0:26 body 0:26 Sequence 0:28 Sequence 0:28 move second child to first child ( temp highp float) 0:28 'f' ( temp highp float) 0:28 sine ( global highp float) 0:28 'x' ( smooth in highp float) 0:29 case: with expression 0:29 Constant: 0:29 2 (const int) 0:? Sequence 0:30 move second child to first child ( temp highp float) 0:30 'f' ( temp highp float) 0:30 cosine ( global highp float) 0:30 'x' ( smooth in highp float) 0:31 Branch: Break 0:34 switch 0:34 condition 0:34 'c' ( uniform mediump int) 0:34 body 0:34 Sequence 0:35 default: 0:? Sequence 0:36 Branch: Break 0:37 case: with expression 0:37 Constant: 0:37 1 (const int) 0:? Sequence 0:38 move second child to first child ( temp highp float) 0:38 'f' ( temp highp float) 0:38 sine ( global highp float) 0:38 'x' ( smooth in highp float) 0:39 Branch: Break 0:40 case: with expression 0:40 Constant: 0:40 2 (const int) 0:? Sequence 0:41 move second child to first child ( temp highp float) 0:41 'f' ( temp highp float) 0:41 cosine ( global highp float) 0:41 'x' ( smooth in highp float) 0:42 Branch: Break 0:43 default: 0:? Sequence 0:44 move second child to first child ( temp highp float) 0:44 'f' ( temp highp float) 0:44 tangent ( global highp float) 0:44 'x' ( smooth in highp float) 0:47 switch 0:47 condition 0:47 'c' ( uniform mediump int) 0:47 body 0:47 Sequence 0:48 case: with expression 0:48 Constant: 0:48 1 (const int) 0:? Sequence 0:49 move second child to first child ( temp highp float) 0:49 'f' ( temp highp float) 0:49 sine ( global highp float) 0:49 'x' ( smooth in highp float) 0:50 Branch: Break 0:51 case: with expression 0:51 Constant: 0:51 2 (const int) 0:? Sequence 0:52 switch 0:52 condition 0:52 'd' ( uniform mediump int) 0:52 body 0:52 Sequence 0:53 case: with expression 0:53 Constant: 0:53 1 (const int) 0:? Sequence 0:54 move second child to first child ( temp highp float) 0:54 'f' ( temp highp float) 0:54 component-wise multiply ( temp highp float) 0:54 component-wise multiply ( temp highp float) 0:54 'x' ( smooth in highp float) 0:54 'x' ( smooth in highp float) 0:54 'x' ( smooth in highp float) 0:55 Branch: Break 0:56 case: with expression 0:56 Constant: 0:56 2 (const int) 0:? Sequence 0:57 move second child to first child ( temp highp float) 0:57 'f' ( temp highp float) 0:57 component-wise multiply ( temp highp float) 0:57 'x' ( smooth in highp float) 0:57 'x' ( smooth in highp float) 0:58 Branch: Break 0:60 Branch: Break 0:61 default: 0:? Sequence 0:62 move second child to first child ( temp highp float) 0:62 'f' ( temp highp float) 0:62 tangent ( global highp float) 0:62 'x' ( smooth in highp float) 0:63 case: with expression 0:63 Constant: 0:63 1 (const int) 0:? Sequence 0:64 Branch: Break 0:65 case: with expression 0:65 Constant: 0:65 3.800000 0:? Sequence 0:66 Branch: Break 0:67 case: with expression 0:67 'c' ( uniform mediump int) 0:? Sequence 0:68 Branch: Break 0:71 switch 0:71 condition 0:71 'c' ( uniform mediump int) 0:71 body 0:71 Sequence 0:72 case: with expression 0:72 Constant: 0:72 1 (const int) 0:? Sequence 0:73 move second child to first child ( temp highp float) 0:73 'f' ( temp highp float) 0:73 sine ( global highp float) 0:73 'x' ( smooth in highp float) 0:74 Branch: Break 0:75 case: with expression 0:75 Constant: 0:75 2 (const int) 0:? Sequence 0:76 switch 0:76 condition 0:76 'd' ( uniform mediump int) 0:76 body 0:76 Sequence 0:77 case: with expression 0:77 Constant: 0:77 1 (const int) 0:? Sequence 0:78 move second child to first child ( temp highp float) 0:78 'f' ( temp highp float) 0:78 component-wise multiply ( temp highp float) 0:78 component-wise multiply ( temp highp float) 0:78 'x' ( smooth in highp float) 0:78 'x' ( smooth in highp float) 0:78 'x' ( smooth in highp float) 0:79 Branch: Break 0:80 case: with expression 0:80 Constant: 0:80 2 (const int) 0:? Sequence 0:81 move second child to first child ( temp highp float) 0:81 'f' ( temp highp float) 0:81 component-wise multiply ( temp highp float) 0:81 'x' ( smooth in highp float) 0:81 'x' ( smooth in highp float) 0:82 Branch: Break 0:84 Branch: Break 0:85 default: 0:? Sequence 0:86 move second child to first child ( temp highp float) 0:86 'f' ( temp highp float) 0:86 tangent ( global highp float) 0:86 'x' ( smooth in highp float) 0:89 Branch: Break 0:91 switch 0:91 condition 0:91 'c' ( uniform mediump int) 0:91 body 0:91 Sequence 0:92 case: with expression 0:92 Constant: 0:92 1 (const int) 0:? Sequence 0:93 move second child to first child ( temp highp float) 0:93 'f' ( temp highp float) 0:93 sine ( global highp float) 0:93 'x' ( smooth in highp float) 0:94 Branch: Break 0:95 case: with expression 0:95 Constant: 0:95 2 (const int) 0:? Sequence 0:96 switch 0:96 condition 0:96 'd' ( uniform mediump int) 0:96 body 0:96 Sequence 0:97 case: with expression 0:97 Constant: 0:97 1 (const int) 0:? Sequence 0:? Sequence 0:100 Branch: Break 0:102 move second child to first child ( temp highp float) 0:102 'f' ( temp highp float) 0:102 component-wise multiply ( temp highp float) 0:102 component-wise multiply ( temp highp float) 0:102 'x' ( smooth in highp float) 0:102 'x' ( smooth in highp float) 0:102 'x' ( smooth in highp float) 0:103 Test condition and select ( temp void) 0:103 Condition 0:103 Compare Less Than ( temp bool) 0:103 'c' ( uniform mediump int) 0:103 'd' ( uniform mediump int) 0:103 true case 0:? Sequence 0:105 move second child to first child ( temp highp float) 0:105 'f' ( temp highp float) 0:105 component-wise multiply ( temp highp float) 0:105 'x' ( smooth in highp float) 0:105 'x' ( smooth in highp float) 0:107 Test condition and select ( temp void) 0:107 Condition 0:107 Compare Less Than ( temp bool) 0:107 'd' ( uniform mediump int) 0:107 'c' ( uniform mediump int) 0:107 true case is null 0:109 Branch: Break 0:111 Branch: Break 0:112 case: with expression 0:112 Constant: 0:112 4 (const int) 0:? Sequence 0:113 move second child to first child ( temp highp float) 0:113 'f' ( temp highp float) 0:113 tangent ( global highp float) 0:113 'x' ( smooth in highp float) 0:114 Test condition and select ( temp void) 0:114 Condition 0:114 Compare Less Than ( temp bool) 0:114 'f' ( temp highp float) 0:114 Constant: 0:114 0.000000 0:114 true case is null 0:116 Branch: Break 0:122 switch 0:122 condition 0:122 Constant: 0:122 0 (const int) 0:122 body 0:122 Sequence 0:123 default: 0:? Sequence 0:124 Sequence 0:124 move second child to first child ( temp mediump int) 0:124 'onlyInSwitch' ( temp mediump int) 0:124 Constant: 0:124 0 (const int) 0:126 'onlyInSwitch' ( temp float) 0:128 switch 0:128 condition 0:128 Constant: 0:128 0 (const int) 0:128 body 0:128 Sequence 0:129 default: 0:128 Sequence 0:128 Branch: Break 0:133 switch 0:133 condition 0:133 'c' ( uniform mediump int) 0:133 body 0:133 Sequence 0:134 case: with expression 0:134 Constant: 0:134 1 (const int) 0:? Sequence 0:? Sequence 0:137 Branch: Break 0:139 case: with expression 0:139 Constant: 0:139 2 (const int) 0:? Sequence 0:140 'nestedX' ( temp float) 0:143 Branch: Break 0:144 case: with expression 0:144 Constant: 0:144 3 (const int) 0:? Sequence 0:146 Branch: Break 0:147 Branch: Break 0:148 case: with expression 0:148 Constant: 0:148 4 (const int) 0:? Sequence 0:149 Sequence 0:149 move second child to first child ( temp mediump int) 0:149 'linearY' ( temp mediump int) 0:149 'linearZ' ( temp mediump int) 0:150 Branch: Break 0:151 case: with expression 0:151 Constant: 0:151 5 (const int) 0:? Sequence 0:153 Branch: Break 0:154 case: with expression 0:154 Constant: 0:154 6 (const int) 0:? Sequence 0:155 Constant: 0:155 4 (const int) 0:157 'nestedZ' ( temp float) 0:? Linker Objects 0:? 'c' ( uniform mediump int) 0:? 'd' ( uniform mediump int) 0:? 'x' ( smooth in highp float) Linked fragment stage: Shader version: 300 ERROR: node is still EOpNull! 0:6 Function Definition: main( ( global void) 0:6 Function Parameters: 0:? Sequence 0:11 'f' ( temp highp float) 0:14 'a' ( temp 2-element array of mediump int) 0:17 'c' ( uniform mediump int) 0:21 switch 0:21 condition 0:21 'c' ( uniform mediump int) 0:21 body 0:21 Sequence 0:23 case: with expression 0:23 Constant: 0:23 2 (const int) 0:21 Sequence 0:21 Branch: Break 0:26 switch 0:26 condition 0:26 'c' ( uniform mediump int) 0:26 body 0:26 Sequence 0:28 Sequence 0:28 move second child to first child ( temp highp float) 0:28 'f' ( temp highp float) 0:28 sine ( global highp float) 0:28 'x' ( smooth in highp float) 0:29 case: with expression 0:29 Constant: 0:29 2 (const int) 0:? Sequence 0:30 move second child to first child ( temp highp float) 0:30 'f' ( temp highp float) 0:30 cosine ( global highp float) 0:30 'x' ( smooth in highp float) 0:31 Branch: Break 0:34 switch 0:34 condition 0:34 'c' ( uniform mediump int) 0:34 body 0:34 Sequence 0:35 default: 0:? Sequence 0:36 Branch: Break 0:37 case: with expression 0:37 Constant: 0:37 1 (const int) 0:? Sequence 0:38 move second child to first child ( temp highp float) 0:38 'f' ( temp highp float) 0:38 sine ( global highp float) 0:38 'x' ( smooth in highp float) 0:39 Branch: Break 0:40 case: with expression 0:40 Constant: 0:40 2 (const int) 0:? Sequence 0:41 move second child to first child ( temp highp float) 0:41 'f' ( temp highp float) 0:41 cosine ( global highp float) 0:41 'x' ( smooth in highp float) 0:42 Branch: Break 0:43 default: 0:? Sequence 0:44 move second child to first child ( temp highp float) 0:44 'f' ( temp highp float) 0:44 tangent ( global highp float) 0:44 'x' ( smooth in highp float) 0:47 switch 0:47 condition 0:47 'c' ( uniform mediump int) 0:47 body 0:47 Sequence 0:48 case: with expression 0:48 Constant: 0:48 1 (const int) 0:? Sequence 0:49 move second child to first child ( temp highp float) 0:49 'f' ( temp highp float) 0:49 sine ( global highp float) 0:49 'x' ( smooth in highp float) 0:50 Branch: Break 0:51 case: with expression 0:51 Constant: 0:51 2 (const int) 0:? Sequence 0:52 switch 0:52 condition 0:52 'd' ( uniform mediump int) 0:52 body 0:52 Sequence 0:53 case: with expression 0:53 Constant: 0:53 1 (const int) 0:? Sequence 0:54 move second child to first child ( temp highp float) 0:54 'f' ( temp highp float) 0:54 component-wise multiply ( temp highp float) 0:54 component-wise multiply ( temp highp float) 0:54 'x' ( smooth in highp float) 0:54 'x' ( smooth in highp float) 0:54 'x' ( smooth in highp float) 0:55 Branch: Break 0:56 case: with expression 0:56 Constant: 0:56 2 (const int) 0:? Sequence 0:57 move second child to first child ( temp highp float) 0:57 'f' ( temp highp float) 0:57 component-wise multiply ( temp highp float) 0:57 'x' ( smooth in highp float) 0:57 'x' ( smooth in highp float) 0:58 Branch: Break 0:60 Branch: Break 0:61 default: 0:? Sequence 0:62 move second child to first child ( temp highp float) 0:62 'f' ( temp highp float) 0:62 tangent ( global highp float) 0:62 'x' ( smooth in highp float) 0:63 case: with expression 0:63 Constant: 0:63 1 (const int) 0:? Sequence 0:64 Branch: Break 0:65 case: with expression 0:65 Constant: 0:65 3.800000 0:? Sequence 0:66 Branch: Break 0:67 case: with expression 0:67 'c' ( uniform mediump int) 0:? Sequence 0:68 Branch: Break 0:71 switch 0:71 condition 0:71 'c' ( uniform mediump int) 0:71 body 0:71 Sequence 0:72 case: with expression 0:72 Constant: 0:72 1 (const int) 0:? Sequence 0:73 move second child to first child ( temp highp float) 0:73 'f' ( temp highp float) 0:73 sine ( global highp float) 0:73 'x' ( smooth in highp float) 0:74 Branch: Break 0:75 case: with expression 0:75 Constant: 0:75 2 (const int) 0:? Sequence 0:76 switch 0:76 condition 0:76 'd' ( uniform mediump int) 0:76 body 0:76 Sequence 0:77 case: with expression 0:77 Constant: 0:77 1 (const int) 0:? Sequence 0:78 move second child to first child ( temp highp float) 0:78 'f' ( temp highp float) 0:78 component-wise multiply ( temp highp float) 0:78 component-wise multiply ( temp highp float) 0:78 'x' ( smooth in highp float) 0:78 'x' ( smooth in highp float) 0:78 'x' ( smooth in highp float) 0:79 Branch: Break 0:80 case: with expression 0:80 Constant: 0:80 2 (const int) 0:? Sequence 0:81 move second child to first child ( temp highp float) 0:81 'f' ( temp highp float) 0:81 component-wise multiply ( temp highp float) 0:81 'x' ( smooth in highp float) 0:81 'x' ( smooth in highp float) 0:82 Branch: Break 0:84 Branch: Break 0:85 default: 0:? Sequence 0:86 move second child to first child ( temp highp float) 0:86 'f' ( temp highp float) 0:86 tangent ( global highp float) 0:86 'x' ( smooth in highp float) 0:89 Branch: Break 0:91 switch 0:91 condition 0:91 'c' ( uniform mediump int) 0:91 body 0:91 Sequence 0:92 case: with expression 0:92 Constant: 0:92 1 (const int) 0:? Sequence 0:93 move second child to first child ( temp highp float) 0:93 'f' ( temp highp float) 0:93 sine ( global highp float) 0:93 'x' ( smooth in highp float) 0:94 Branch: Break 0:95 case: with expression 0:95 Constant: 0:95 2 (const int) 0:? Sequence 0:96 switch 0:96 condition 0:96 'd' ( uniform mediump int) 0:96 body 0:96 Sequence 0:97 case: with expression 0:97 Constant: 0:97 1 (const int) 0:? Sequence 0:? Sequence 0:100 Branch: Break 0:102 move second child to first child ( temp highp float) 0:102 'f' ( temp highp float) 0:102 component-wise multiply ( temp highp float) 0:102 component-wise multiply ( temp highp float) 0:102 'x' ( smooth in highp float) 0:102 'x' ( smooth in highp float) 0:102 'x' ( smooth in highp float) 0:103 Test condition and select ( temp void) 0:103 Condition 0:103 Compare Less Than ( temp bool) 0:103 'c' ( uniform mediump int) 0:103 'd' ( uniform mediump int) 0:103 true case 0:? Sequence 0:105 move second child to first child ( temp highp float) 0:105 'f' ( temp highp float) 0:105 component-wise multiply ( temp highp float) 0:105 'x' ( smooth in highp float) 0:105 'x' ( smooth in highp float) 0:107 Test condition and select ( temp void) 0:107 Condition 0:107 Compare Less Than ( temp bool) 0:107 'd' ( uniform mediump int) 0:107 'c' ( uniform mediump int) 0:107 true case is null 0:109 Branch: Break 0:111 Branch: Break 0:112 case: with expression 0:112 Constant: 0:112 4 (const int) 0:? Sequence 0:113 move second child to first child ( temp highp float) 0:113 'f' ( temp highp float) 0:113 tangent ( global highp float) 0:113 'x' ( smooth in highp float) 0:114 Test condition and select ( temp void) 0:114 Condition 0:114 Compare Less Than ( temp bool) 0:114 'f' ( temp highp float) 0:114 Constant: 0:114 0.000000 0:114 true case is null 0:116 Branch: Break 0:122 switch 0:122 condition 0:122 Constant: 0:122 0 (const int) 0:122 body 0:122 Sequence 0:123 default: 0:? Sequence 0:124 Sequence 0:124 move second child to first child ( temp mediump int) 0:124 'onlyInSwitch' ( temp mediump int) 0:124 Constant: 0:124 0 (const int) 0:126 'onlyInSwitch' ( temp float) 0:128 switch 0:128 condition 0:128 Constant: 0:128 0 (const int) 0:128 body 0:128 Sequence 0:129 default: 0:128 Sequence 0:128 Branch: Break 0:133 switch 0:133 condition 0:133 'c' ( uniform mediump int) 0:133 body 0:133 Sequence 0:134 case: with expression 0:134 Constant: 0:134 1 (const int) 0:? Sequence 0:? Sequence 0:137 Branch: Break 0:139 case: with expression 0:139 Constant: 0:139 2 (const int) 0:? Sequence 0:140 'nestedX' ( temp float) 0:143 Branch: Break 0:144 case: with expression 0:144 Constant: 0:144 3 (const int) 0:? Sequence 0:146 Branch: Break 0:147 Branch: Break 0:148 case: with expression 0:148 Constant: 0:148 4 (const int) 0:? Sequence 0:149 Sequence 0:149 move second child to first child ( temp mediump int) 0:149 'linearY' ( temp mediump int) 0:149 'linearZ' ( temp mediump int) 0:150 Branch: Break 0:151 case: with expression 0:151 Constant: 0:151 5 (const int) 0:? Sequence 0:153 Branch: Break 0:154 case: with expression 0:154 Constant: 0:154 6 (const int) 0:? Sequence 0:155 Constant: 0:155 4 (const int) 0:157 'nestedZ' ( temp float) 0:? Linker Objects 0:? 'c' ( uniform mediump int) 0:? 'd' ( uniform mediump int) 0:? 'x' ( smooth in highp float) glslang-16.0.0/Test/baseResults/swizzle.frag.out000066400000000000000000000422231506534232700216300ustar00rootroot00000000000000swizzle.frag Shader version: 110 0:? Sequence 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp float) 0:11 'blendscale' ( temp float) 0:11 Constant: 0:11 1.789000 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'w' ( temp 4-component vector of float) 0:13 'u' ( uniform 4-component vector of float) 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'w_dep' ( temp 4-component vector of float) 0:15 'u' ( uniform 4-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'w_reorder' ( temp 4-component vector of float) 0:16 'u' ( uniform 4-component vector of float) 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'w2' ( temp 4-component vector of float) 0:17 'u' ( uniform 4-component vector of float) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'w_flow' ( temp 4-component vector of float) 0:18 'u' ( uniform 4-component vector of float) 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 'w_reorder' ( temp 4-component vector of float) 0:20 Constant: 0:20 2 (const int) 0:20 'blendscale' ( temp float) 0:22 move second child to first child ( temp 2-component vector of float) 0:22 vector swizzle ( temp 2-component vector of float) 0:22 'w' ( temp 4-component vector of float) 0:22 Sequence 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 't' ( smooth in 2-component vector of float) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 'w_reorder' ( temp 4-component vector of float) 0:24 Constant: 0:24 0 (const int) 0:24 'blendscale' ( temp float) 0:26 move second child to first child ( temp 4-component vector of float) 0:26 vector swizzle ( temp 4-component vector of float) 0:26 'w2' ( temp 4-component vector of float) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 3 (const int) 0:26 vector swizzle ( temp 4-component vector of float) 0:26 'u' ( uniform 4-component vector of float) 0:26 Sequence 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:28 move second child to first child ( temp float) 0:28 direct index ( temp float) 0:28 'w_reorder' ( temp 4-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:28 'blendscale' ( temp float) 0:30 move second child to first child ( temp 2-component vector of float) 0:30 vector swizzle ( temp 2-component vector of float) 0:30 'w_dep' ( temp 4-component vector of float) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 vector swizzle ( temp 2-component vector of float) 0:30 'w2' ( temp 4-component vector of float) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 2 (const int) 0:31 move second child to first child ( temp 2-component vector of float) 0:31 vector swizzle ( temp 2-component vector of float) 0:31 'w_dep' ( temp 4-component vector of float) 0:31 Sequence 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 't' ( smooth in 2-component vector of float) 0:33 move second child to first child ( temp 2-component vector of float) 0:33 vector swizzle ( temp 2-component vector of float) 0:33 'w_undef' ( temp 4-component vector of float) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 vector swizzle ( temp 2-component vector of float) 0:33 'u' ( uniform 4-component vector of float) 0:33 Sequence 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 3 (const int) 0:35 Test condition and select ( temp void) 0:35 Condition 0:35 'p' ( uniform bool) 0:35 true case 0:36 move second child to first child ( temp float) 0:36 direct index ( temp float) 0:36 'w_flow' ( temp 4-component vector of float) 0:36 Constant: 0:36 0 (const int) 0:36 direct index ( temp float) 0:36 't' ( smooth in 2-component vector of float) 0:36 Constant: 0:36 0 (const int) 0:35 false case 0:38 move second child to first child ( temp float) 0:38 direct index ( temp float) 0:38 'w_flow' ( temp 4-component vector of float) 0:38 Constant: 0:38 0 (const int) 0:38 direct index ( temp float) 0:38 't' ( smooth in 2-component vector of float) 0:38 Constant: 0:38 1 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:40 mix ( global 4-component vector of float) 0:40 'w_reorder' ( temp 4-component vector of float) 0:40 'w_undef' ( temp 4-component vector of float) 0:40 component-wise multiply ( temp 4-component vector of float) 0:40 component-wise multiply ( temp 4-component vector of float) 0:40 component-wise multiply ( temp 4-component vector of float) 0:40 'w' ( temp 4-component vector of float) 0:40 'w2' ( temp 4-component vector of float) 0:40 'w_dep' ( temp 4-component vector of float) 0:40 'w_flow' ( temp 4-component vector of float) 0:42 Sequence 0:42 move second child to first child ( temp 2-component vector of float) 0:42 'c' ( temp 2-component vector of float) 0:42 't' ( smooth in 2-component vector of float) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'rep' ( temp 4-component vector of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 1.000000 0:45 Test condition and select ( temp void) 0:45 Condition 0:45 Compare Less Than ( temp bool) 0:45 direct index ( temp float) 0:45 'c' ( temp 2-component vector of float) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 0.000000 0:45 true case 0:46 multiply second child into first child ( temp float) 0:46 direct index ( temp float) 0:46 'c' ( temp 2-component vector of float) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 -1.000000 0:48 Test condition and select ( temp void) 0:48 Condition 0:48 Compare Less Than or Equal ( temp bool) 0:48 direct index ( temp float) 0:48 'c' ( temp 2-component vector of float) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1.000000 0:48 true case 0:49 move second child to first child ( temp float) 0:49 direct index ( temp float) 0:49 'rep' ( temp 4-component vector of float) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3.400000 0:51 add second child into first child ( temp 4-component vector of float) 0:51 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:51 'rep' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'blend' ( uniform float) 0:? 'u' ( uniform 4-component vector of float) 0:? 'p' ( uniform bool) 0:? 't' ( smooth in 2-component vector of float) Linked fragment stage: Shader version: 110 0:? Sequence 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp float) 0:11 'blendscale' ( temp float) 0:11 Constant: 0:11 1.789000 0:13 Sequence 0:13 move second child to first child ( temp 4-component vector of float) 0:13 'w' ( temp 4-component vector of float) 0:13 'u' ( uniform 4-component vector of float) 0:15 Sequence 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'w_dep' ( temp 4-component vector of float) 0:15 'u' ( uniform 4-component vector of float) 0:16 Sequence 0:16 move second child to first child ( temp 4-component vector of float) 0:16 'w_reorder' ( temp 4-component vector of float) 0:16 'u' ( uniform 4-component vector of float) 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'w2' ( temp 4-component vector of float) 0:17 'u' ( uniform 4-component vector of float) 0:18 Sequence 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'w_flow' ( temp 4-component vector of float) 0:18 'u' ( uniform 4-component vector of float) 0:20 move second child to first child ( temp float) 0:20 direct index ( temp float) 0:20 'w_reorder' ( temp 4-component vector of float) 0:20 Constant: 0:20 2 (const int) 0:20 'blendscale' ( temp float) 0:22 move second child to first child ( temp 2-component vector of float) 0:22 vector swizzle ( temp 2-component vector of float) 0:22 'w' ( temp 4-component vector of float) 0:22 Sequence 0:22 Constant: 0:22 3 (const int) 0:22 Constant: 0:22 1 (const int) 0:22 't' ( smooth in 2-component vector of float) 0:24 move second child to first child ( temp float) 0:24 direct index ( temp float) 0:24 'w_reorder' ( temp 4-component vector of float) 0:24 Constant: 0:24 0 (const int) 0:24 'blendscale' ( temp float) 0:26 move second child to first child ( temp 4-component vector of float) 0:26 vector swizzle ( temp 4-component vector of float) 0:26 'w2' ( temp 4-component vector of float) 0:26 Sequence 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 3 (const int) 0:26 vector swizzle ( temp 4-component vector of float) 0:26 'u' ( uniform 4-component vector of float) 0:26 Sequence 0:26 Constant: 0:26 2 (const int) 0:26 Constant: 0:26 3 (const int) 0:26 Constant: 0:26 0 (const int) 0:26 Constant: 0:26 1 (const int) 0:28 move second child to first child ( temp float) 0:28 direct index ( temp float) 0:28 'w_reorder' ( temp 4-component vector of float) 0:28 Constant: 0:28 1 (const int) 0:28 'blendscale' ( temp float) 0:30 move second child to first child ( temp 2-component vector of float) 0:30 vector swizzle ( temp 2-component vector of float) 0:30 'w_dep' ( temp 4-component vector of float) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 vector swizzle ( temp 2-component vector of float) 0:30 'w2' ( temp 4-component vector of float) 0:30 Sequence 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 2 (const int) 0:31 move second child to first child ( temp 2-component vector of float) 0:31 vector swizzle ( temp 2-component vector of float) 0:31 'w_dep' ( temp 4-component vector of float) 0:31 Sequence 0:31 Constant: 0:31 2 (const int) 0:31 Constant: 0:31 3 (const int) 0:31 't' ( smooth in 2-component vector of float) 0:33 move second child to first child ( temp 2-component vector of float) 0:33 vector swizzle ( temp 2-component vector of float) 0:33 'w_undef' ( temp 4-component vector of float) 0:33 Sequence 0:33 Constant: 0:33 0 (const int) 0:33 Constant: 0:33 1 (const int) 0:33 vector swizzle ( temp 2-component vector of float) 0:33 'u' ( uniform 4-component vector of float) 0:33 Sequence 0:33 Constant: 0:33 2 (const int) 0:33 Constant: 0:33 3 (const int) 0:35 Test condition and select ( temp void) 0:35 Condition 0:35 'p' ( uniform bool) 0:35 true case 0:36 move second child to first child ( temp float) 0:36 direct index ( temp float) 0:36 'w_flow' ( temp 4-component vector of float) 0:36 Constant: 0:36 0 (const int) 0:36 direct index ( temp float) 0:36 't' ( smooth in 2-component vector of float) 0:36 Constant: 0:36 0 (const int) 0:35 false case 0:38 move second child to first child ( temp float) 0:38 direct index ( temp float) 0:38 'w_flow' ( temp 4-component vector of float) 0:38 Constant: 0:38 0 (const int) 0:38 direct index ( temp float) 0:38 't' ( smooth in 2-component vector of float) 0:38 Constant: 0:38 1 (const int) 0:40 move second child to first child ( temp 4-component vector of float) 0:40 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:40 mix ( global 4-component vector of float) 0:40 'w_reorder' ( temp 4-component vector of float) 0:40 'w_undef' ( temp 4-component vector of float) 0:40 component-wise multiply ( temp 4-component vector of float) 0:40 component-wise multiply ( temp 4-component vector of float) 0:40 component-wise multiply ( temp 4-component vector of float) 0:40 'w' ( temp 4-component vector of float) 0:40 'w2' ( temp 4-component vector of float) 0:40 'w_dep' ( temp 4-component vector of float) 0:40 'w_flow' ( temp 4-component vector of float) 0:42 Sequence 0:42 move second child to first child ( temp 2-component vector of float) 0:42 'c' ( temp 2-component vector of float) 0:42 't' ( smooth in 2-component vector of float) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'rep' ( temp 4-component vector of float) 0:43 Constant: 0:43 0.000000 0:43 0.000000 0:43 0.000000 0:43 1.000000 0:45 Test condition and select ( temp void) 0:45 Condition 0:45 Compare Less Than ( temp bool) 0:45 direct index ( temp float) 0:45 'c' ( temp 2-component vector of float) 0:45 Constant: 0:45 0 (const int) 0:45 Constant: 0:45 0.000000 0:45 true case 0:46 multiply second child into first child ( temp float) 0:46 direct index ( temp float) 0:46 'c' ( temp 2-component vector of float) 0:46 Constant: 0:46 0 (const int) 0:46 Constant: 0:46 -1.000000 0:48 Test condition and select ( temp void) 0:48 Condition 0:48 Compare Less Than or Equal ( temp bool) 0:48 direct index ( temp float) 0:48 'c' ( temp 2-component vector of float) 0:48 Constant: 0:48 0 (const int) 0:48 Constant: 0:48 1.000000 0:48 true case 0:49 move second child to first child ( temp float) 0:49 direct index ( temp float) 0:49 'rep' ( temp 4-component vector of float) 0:49 Constant: 0:49 0 (const int) 0:49 Constant: 0:49 3.400000 0:51 add second child into first child ( temp 4-component vector of float) 0:51 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:51 'rep' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'blend' ( uniform float) 0:? 'u' ( uniform 4-component vector of float) 0:? 'p' ( uniform bool) 0:? 't' ( smooth in 2-component vector of float) glslang-16.0.0/Test/baseResults/syntaxError.frag.out000066400000000000000000000012261506534232700224570ustar00rootroot00000000000000syntaxError.frag ERROR: 0:9: 'vec5' : undeclared identifier ERROR: 0:9: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 2 compilation errors. No code generated. Shader version: 120 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) Linked fragment stage: Shader version: 120 ERROR: node is still EOpNull! 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) glslang-16.0.0/Test/baseResults/terminate.frag.out000066400000000000000000000011311506534232700221020ustar00rootroot00000000000000terminate.frag ERROR: 0:3: 'terminateInvocation' : undeclared identifier ERROR: 0:9: '' : syntax error, unexpected TERMINATE_INVOCATION, expecting COMMA or SEMICOLON ERROR: 2 compilation errors. No code generated. Shader version: 400 Requested GL_EXT_terminate_invocation ERROR: node is still EOpNull! 0:3 Function Definition: foo( ( global void) 0:3 Function Parameters: 0:3 Sequence 0:3 'terminateInvocation' ( temp float) 0:? Linker Objects Linked fragment stage: Shader version: 400 Requested GL_EXT_terminate_invocation ERROR: node is still EOpNull! 0:? Linker Objects glslang-16.0.0/Test/baseResults/terminate.vert.out000066400000000000000000000020271506534232700221500ustar00rootroot00000000000000terminate.vert ERROR: 0:3: 'terminateInvocation' : undeclared identifier ERROR: 0:9: 'terminateInvocation' : not supported in this stage: vertex ERROR: 2 compilation errors. No code generated. Shader version: 400 Requested GL_EXT_terminate_invocation ERROR: node is still EOpNull! 0:3 Function Definition: foo( ( global void) 0:3 Function Parameters: 0:3 Sequence 0:3 'terminateInvocation' ( temp float) 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Branch: TerminateInvocation 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 400 Requested GL_EXT_terminate_invocation ERROR: node is still EOpNull! 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Branch: TerminateInvocation 0:? Linker Objects 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/tes_patch.tese.out000066400000000000000000000047571506534232700221260ustar00rootroot00000000000000tes_patch.tese ERROR: 0:7: 'location' : the aliases sharing the location 1 must be the same basic type and interpolation qualification ERROR: 1 compilation errors. No code generated. Shader version: 430 Requested GL_ARB_enhanced_layouts input primitive = isolines vertex spacing = none triangle order = none using point mode ERROR: node is still EOpNull! 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'result' ( temp 4-component vector of float) 0:14 direct index ( temp 4-component vector of float) 0:14 'tcs_tes' ( in 32-element array of 4-component vector of float) 0:14 Constant: 0:14 0 (const int) 0:18 add second child into first child ( temp 4-component vector of float) 0:18 'tes_gs' ( out 4-component vector of float) 0:18 'result' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'gohan' (layout( location=1 component=0) in 32-element array of 2-component vector of float) 0:? 'goten' (layout( location=1 component=2) patch in 2-component vector of float) 0:? 'tcs_tes' ( in 32-element array of 4-component vector of float) 0:? 'tes_gs' ( out 4-component vector of float) Linked tessellation evaluation stage: Shader version: 430 Requested GL_ARB_enhanced_layouts input primitive = isolines vertex spacing = equal_spacing triangle order = ccw using point mode ERROR: node is still EOpNull! 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'result' ( temp 4-component vector of float) 0:14 direct index ( temp 4-component vector of float) 0:14 'tcs_tes' ( in 32-element array of 4-component vector of float) 0:14 Constant: 0:14 0 (const int) 0:18 add second child into first child ( temp 4-component vector of float) 0:18 'tes_gs' ( out 4-component vector of float) 0:18 'result' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'gohan' (layout( location=1 component=0) in 32-element array of 2-component vector of float) 0:? 'goten' (layout( location=1 component=2) patch in 2-component vector of float) 0:? 'tcs_tes' ( in 32-element array of 4-component vector of float) 0:? 'tes_gs' ( out 4-component vector of float) glslang-16.0.0/Test/baseResults/test.conf000066400000000000000000000061421506534232700203000ustar00rootroot00000000000000MaxLights 32 MaxClipPlanes 6 MaxTextureUnits 32 MaxTextureCoords 32 MaxVertexAttribs 64 MaxVertexUniformComponents 4096 MaxVaryingFloats 64 MaxVertexTextureImageUnits 32 MaxCombinedTextureImageUnits 80 MaxTextureImageUnits 32 MaxFragmentUniformComponents 4096 MaxDrawBuffers 32 MaxVertexUniformVectors 128 MaxVaryingVectors 8 MaxFragmentUniformVectors 16 MaxVertexOutputVectors 16 MaxFragmentInputVectors 15 MinProgramTexelOffset -8 MaxProgramTexelOffset 7 MaxClipDistances 8 MaxComputeWorkGroupCountX 65535 MaxComputeWorkGroupCountY 65535 MaxComputeWorkGroupCountZ 65535 MaxComputeWorkGroupSizeX 1024 MaxComputeWorkGroupSizeY 1024 MaxComputeWorkGroupSizeZ 64 MaxComputeUniformComponents 1024 MaxComputeTextureImageUnits 16 MaxComputeImageUniforms 8 MaxComputeAtomicCounters 8 MaxComputeAtomicCounterBuffers 1 MaxVaryingComponents 60 MaxVertexOutputComponents 64 MaxGeometryInputComponents 64 MaxGeometryOutputComponents 128 MaxFragmentInputComponents 128 MaxImageUnits 8 MaxCombinedImageUnitsAndFragmentOutputs 8 MaxCombinedShaderOutputResources 8 MaxImageSamples 0 MaxVertexImageUniforms 0 MaxTessControlImageUniforms 0 MaxTessEvaluationImageUniforms 0 MaxGeometryImageUniforms 0 MaxFragmentImageUniforms 8 MaxCombinedImageUniforms 8 MaxGeometryTextureImageUnits 16 MaxGeometryOutputVertices 256 MaxGeometryTotalOutputComponents 1024 MaxGeometryUniformComponents 1024 MaxGeometryVaryingComponents 64 MaxTessControlInputComponents 128 MaxTessControlOutputComponents 128 MaxTessControlTextureImageUnits 16 MaxTessControlUniformComponents 1024 MaxTessControlTotalOutputComponents 4096 MaxTessEvaluationInputComponents 128 MaxTessEvaluationOutputComponents 128 MaxTessEvaluationTextureImageUnits 16 MaxTessEvaluationUniformComponents 1024 MaxTessPatchComponents 120 MaxPatchVertices 32 MaxTessGenLevel 64 MaxViewports 16 MaxVertexAtomicCounters 0 MaxTessControlAtomicCounters 0 MaxTessEvaluationAtomicCounters 0 MaxGeometryAtomicCounters 0 MaxFragmentAtomicCounters 8 MaxCombinedAtomicCounters 8 MaxAtomicCounterBindings 1 MaxVertexAtomicCounterBuffers 0 MaxTessControlAtomicCounterBuffers 0 MaxTessEvaluationAtomicCounterBuffers 0 MaxGeometryAtomicCounterBuffers 0 MaxFragmentAtomicCounterBuffers 1 MaxCombinedAtomicCounterBuffers 1 MaxAtomicCounterBufferSize 16384 MaxTransformFeedbackBuffers 4 MaxTransformFeedbackInterleavedComponents 64 MaxCullDistances 8 MaxCombinedClipAndCullDistances 8 MaxSamples 4 MaxMeshOutputVerticesNV 256 MaxMeshOutputPrimitivesNV 512 MaxMeshWorkGroupSizeX_NV 32 MaxMeshWorkGroupSizeY_NV 1 MaxMeshWorkGroupSizeZ_NV 1 MaxTaskWorkGroupSizeX_NV 32 MaxTaskWorkGroupSizeY_NV 1 MaxTaskWorkGroupSizeZ_NV 1 MaxMeshViewCountNV 4 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 doWhileLoops 1 generalUniformIndexing 1 generalAttributeMatrixVectorIndexing 1 generalVaryingIndexing 1 generalSamplerIndexing 1 generalVariableIndexing 1 generalConstantMatrixVectorIndexing 1 glslang-16.0.0/Test/baseResults/test.frag.out000066400000000000000000000116401506534232700210770ustar00rootroot00000000000000test.frag Shader version: 110 0:? Sequence 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 Sequence 0:15 move second child to first child ( temp float) 0:15 'blendscale' ( temp float) 0:15 Constant: 0:15 1.789000 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'v' ( temp 4-component vector of float) 0:17 vector swizzle ( temp 4-component vector of float) 0:17 texture ( global 4-component vector of float) 0:17 'texSampler2D' ( uniform sampler2D) 0:17 divide ( temp 2-component vector of float) 0:17 add ( temp 2-component vector of float) 0:17 't' ( smooth in 2-component vector of float) 0:17 'scale' ( uniform 2-component vector of float) 0:17 'scale' ( uniform 2-component vector of float) 0:17 Sequence 0:17 Constant: 0:17 3 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:19 'w' ( temp 4-component vector of float) 0:19 add ( temp 4-component vector of float) 0:19 texture ( global 4-component vector of float) 0:19 'texSampler3D' ( uniform sampler3D) 0:19 'coords' ( smooth in 3-component vector of float) 0:19 'v' ( temp 4-component vector of float) 0:21 move second child to first child ( temp 4-component vector of float) 0:21 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:21 mix ( global 4-component vector of float) 0:21 'w' ( temp 4-component vector of float) 0:21 'u' ( uniform 4-component vector of float) 0:21 component-wise multiply ( temp float) 0:21 'blend' ( uniform float) 0:21 'blendscale' ( temp float) 0:? Linker Objects 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'texSampler3D' ( uniform sampler3D) 0:? 'blend' ( uniform float) 0:? 'scale' ( uniform 2-component vector of float) 0:? 'u' ( uniform 4-component vector of float) 0:? 't' ( smooth in 2-component vector of float) 0:? 'coords' ( smooth in 3-component vector of float) Linked fragment stage: Shader version: 110 0:? Sequence 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:15 Sequence 0:15 Sequence 0:15 move second child to first child ( temp float) 0:15 'blendscale' ( temp float) 0:15 Constant: 0:15 1.789000 0:17 Sequence 0:17 move second child to first child ( temp 4-component vector of float) 0:17 'v' ( temp 4-component vector of float) 0:17 vector swizzle ( temp 4-component vector of float) 0:17 texture ( global 4-component vector of float) 0:17 'texSampler2D' ( uniform sampler2D) 0:17 divide ( temp 2-component vector of float) 0:17 add ( temp 2-component vector of float) 0:17 't' ( smooth in 2-component vector of float) 0:17 'scale' ( uniform 2-component vector of float) 0:17 'scale' ( uniform 2-component vector of float) 0:17 Sequence 0:17 Constant: 0:17 3 (const int) 0:17 Constant: 0:17 2 (const int) 0:17 Constant: 0:17 1 (const int) 0:17 Constant: 0:17 0 (const int) 0:19 Sequence 0:19 move second child to first child ( temp 4-component vector of float) 0:19 'w' ( temp 4-component vector of float) 0:19 add ( temp 4-component vector of float) 0:19 texture ( global 4-component vector of float) 0:19 'texSampler3D' ( uniform sampler3D) 0:19 'coords' ( smooth in 3-component vector of float) 0:19 'v' ( temp 4-component vector of float) 0:21 move second child to first child ( temp 4-component vector of float) 0:21 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:21 mix ( global 4-component vector of float) 0:21 'w' ( temp 4-component vector of float) 0:21 'u' ( uniform 4-component vector of float) 0:21 component-wise multiply ( temp float) 0:21 'blend' ( uniform float) 0:21 'blendscale' ( temp float) 0:? Linker Objects 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'texSampler3D' ( uniform sampler3D) 0:? 'blend' ( uniform float) 0:? 'scale' ( uniform 2-component vector of float) 0:? 'u' ( uniform 4-component vector of float) 0:? 't' ( smooth in 2-component vector of float) 0:? 'coords' ( smooth in 3-component vector of float) glslang-16.0.0/Test/baseResults/texture.frag.out000066400000000000000000000707621506534232700216320ustar00rootroot00000000000000texture.frag WARNING: 0:14: varying deprecated in version 130; may be removed in future release WARNING: 0:15: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:19 Sequence 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'blendscale' ( temp float) 0:19 Constant: 0:19 1.789000 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'bias' ( temp float) 0:20 Constant: 0:20 2.000000 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'lod' ( temp float) 0:21 Constant: 0:21 3.000000 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'proj' ( temp float) 0:22 Constant: 0:22 2.000000 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'coords1D' ( temp float) 0:23 Constant: 0:23 1.789000 0:24 Sequence 0:24 move second child to first child ( temp 3-component vector of float) 0:24 'coords3D' ( temp 3-component vector of float) 0:24 Constant: 0:24 1.789000 0:24 2.718000 0:24 3.453000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'coords4D' ( temp 4-component vector of float) 0:25 Constant: 0:25 1.789000 0:25 2.718000 0:25 3.453000 0:25 2.000000 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of float) 0:26 'color' ( temp 4-component vector of float) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'color' ( temp 4-component vector of float) 0:28 texture ( global 4-component vector of float) 0:28 'texSampler1D' ( uniform sampler1D) 0:28 'coords1D' ( temp float) 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'color' ( temp 4-component vector of float) 0:29 texture ( global 4-component vector of float) 0:29 'texSampler1D' ( uniform sampler1D) 0:29 'coords1D' ( temp float) 0:29 'bias' ( temp float) 0:30 add second child into first child ( temp 4-component vector of float) 0:30 'color' ( temp 4-component vector of float) 0:30 textureProj ( global 4-component vector of float) 0:30 'texSampler1D' ( uniform sampler1D) 0:30 'coords2D' ( smooth in 2-component vector of float) 0:31 add second child into first child ( temp 4-component vector of float) 0:31 'color' ( temp 4-component vector of float) 0:31 textureProj ( global 4-component vector of float) 0:31 'texSampler1D' ( uniform sampler1D) 0:31 'coords4D' ( temp 4-component vector of float) 0:32 add second child into first child ( temp 4-component vector of float) 0:32 'color' ( temp 4-component vector of float) 0:32 textureProj ( global 4-component vector of float) 0:32 'texSampler1D' ( uniform sampler1D) 0:32 'coords2D' ( smooth in 2-component vector of float) 0:32 'bias' ( temp float) 0:33 add second child into first child ( temp 4-component vector of float) 0:33 'color' ( temp 4-component vector of float) 0:33 textureProj ( global 4-component vector of float) 0:33 'texSampler1D' ( uniform sampler1D) 0:33 'coords4D' ( temp 4-component vector of float) 0:33 'bias' ( temp float) 0:35 add second child into first child ( temp 4-component vector of float) 0:35 'color' ( temp 4-component vector of float) 0:35 texture ( global 4-component vector of float) 0:35 'texSampler2D' ( uniform sampler2D) 0:35 'coords2D' ( smooth in 2-component vector of float) 0:36 add second child into first child ( temp 4-component vector of float) 0:36 'color' ( temp 4-component vector of float) 0:36 texture ( global 4-component vector of float) 0:36 'texSampler2D' ( uniform sampler2D) 0:36 'coords2D' ( smooth in 2-component vector of float) 0:36 'bias' ( temp float) 0:37 add second child into first child ( temp 4-component vector of float) 0:37 'color' ( temp 4-component vector of float) 0:37 textureProj ( global 4-component vector of float) 0:37 'texSampler2D' ( uniform sampler2D) 0:37 'coords3D' ( temp 3-component vector of float) 0:38 add second child into first child ( temp 4-component vector of float) 0:38 'color' ( temp 4-component vector of float) 0:38 textureProj ( global 4-component vector of float) 0:38 'texSampler2D' ( uniform sampler2D) 0:38 'coords4D' ( temp 4-component vector of float) 0:38 'bias' ( temp float) 0:40 add second child into first child ( temp 4-component vector of float) 0:40 'color' ( temp 4-component vector of float) 0:40 texture ( global 4-component vector of float) 0:40 'texSampler3D' ( uniform sampler3D) 0:40 'coords3D' ( temp 3-component vector of float) 0:41 add second child into first child ( temp 4-component vector of float) 0:41 'color' ( temp 4-component vector of float) 0:41 texture ( global 4-component vector of float) 0:41 'texSampler3D' ( uniform sampler3D) 0:41 'coords3D' ( temp 3-component vector of float) 0:41 'bias' ( temp float) 0:42 add second child into first child ( temp 4-component vector of float) 0:42 'color' ( temp 4-component vector of float) 0:42 textureProj ( global 4-component vector of float) 0:42 'texSampler3D' ( uniform sampler3D) 0:42 'coords4D' ( temp 4-component vector of float) 0:43 add second child into first child ( temp 4-component vector of float) 0:43 'color' ( temp 4-component vector of float) 0:43 textureProj ( global 4-component vector of float) 0:43 'texSampler3D' ( uniform sampler3D) 0:43 'coords4D' ( temp 4-component vector of float) 0:43 'bias' ( temp float) 0:45 add second child into first child ( temp 4-component vector of float) 0:45 'color' ( temp 4-component vector of float) 0:45 texture ( global 4-component vector of float) 0:45 'texSamplerCube' ( uniform samplerCube) 0:45 'coords3D' ( temp 3-component vector of float) 0:46 add second child into first child ( temp 4-component vector of float) 0:46 'color' ( temp 4-component vector of float) 0:46 texture ( global 4-component vector of float) 0:46 'texSamplerCube' ( uniform samplerCube) 0:46 'coords3D' ( temp 3-component vector of float) 0:46 'bias' ( temp float) 0:48 add second child into first child ( temp 4-component vector of float) 0:48 'color' ( temp 4-component vector of float) 0:48 texture ( global 4-component vector of float) 0:48 'shadowSampler1D' ( uniform sampler1DShadow) 0:48 'coords3D' ( temp 3-component vector of float) 0:49 add second child into first child ( temp 4-component vector of float) 0:49 'color' ( temp 4-component vector of float) 0:49 texture ( global 4-component vector of float) 0:49 'shadowSampler1D' ( uniform sampler1DShadow) 0:49 'coords3D' ( temp 3-component vector of float) 0:49 'bias' ( temp float) 0:50 add second child into first child ( temp 4-component vector of float) 0:50 'color' ( temp 4-component vector of float) 0:50 texture ( global 4-component vector of float) 0:50 'shadowSampler2D' ( uniform sampler2DShadow) 0:50 'coords3D' ( temp 3-component vector of float) 0:51 add second child into first child ( temp 4-component vector of float) 0:51 'color' ( temp 4-component vector of float) 0:51 texture ( global 4-component vector of float) 0:51 'shadowSampler2D' ( uniform sampler2DShadow) 0:51 'coords3D' ( temp 3-component vector of float) 0:51 'bias' ( temp float) 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'color' ( temp 4-component vector of float) 0:52 textureProj ( global 4-component vector of float) 0:52 'shadowSampler1D' ( uniform sampler1DShadow) 0:52 'coords4D' ( temp 4-component vector of float) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'color' ( temp 4-component vector of float) 0:53 textureProj ( global 4-component vector of float) 0:53 'shadowSampler1D' ( uniform sampler1DShadow) 0:53 'coords4D' ( temp 4-component vector of float) 0:53 'bias' ( temp float) 0:54 add second child into first child ( temp 4-component vector of float) 0:54 'color' ( temp 4-component vector of float) 0:54 textureProj ( global 4-component vector of float) 0:54 'shadowSampler2D' ( uniform sampler2DShadow) 0:54 'coords4D' ( temp 4-component vector of float) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'color' ( temp 4-component vector of float) 0:55 textureProj ( global 4-component vector of float) 0:55 'shadowSampler2D' ( uniform sampler2DShadow) 0:55 'coords4D' ( temp 4-component vector of float) 0:55 'bias' ( temp float) 0:57 Sequence 0:57 move second child to first child ( temp 2-component vector of int) 0:57 'iCoords2D' ( temp 2-component vector of int) 0:57 Constant: 0:57 0 (const int) 0:57 5 (const int) 0:58 Sequence 0:58 move second child to first child ( temp int) 0:58 'iLod' ( temp int) 0:58 Constant: 0:58 1 (const int) 0:60 add second child into first child ( temp 4-component vector of float) 0:60 'color' ( temp 4-component vector of float) 0:60 textureFetch ( global 4-component vector of float) 0:60 'texSampler2D' ( uniform sampler2D) 0:60 'iCoords2D' ( temp 2-component vector of int) 0:60 'iLod' ( temp int) 0:62 Sequence 0:62 move second child to first child ( temp 2-component vector of float) 0:62 'gradX' ( temp 2-component vector of float) 0:62 dPdx ( global 2-component vector of float) 0:62 'coords2D' ( smooth in 2-component vector of float) 0:63 Sequence 0:63 move second child to first child ( temp 2-component vector of float) 0:63 'gradY' ( temp 2-component vector of float) 0:63 dPdy ( global 2-component vector of float) 0:63 'coords2D' ( smooth in 2-component vector of float) 0:66 add second child into first child ( temp 4-component vector of float) 0:66 'color' ( temp 4-component vector of float) 0:66 textureGrad ( global 4-component vector of float) 0:66 'texSampler2D' ( uniform sampler2D) 0:66 'coords2D' ( smooth in 2-component vector of float) 0:66 'gradX' ( temp 2-component vector of float) 0:66 'gradY' ( temp 2-component vector of float) 0:67 add second child into first child ( temp 4-component vector of float) 0:67 'color' ( temp 4-component vector of float) 0:67 textureProjGrad ( global 4-component vector of float) 0:67 'texSampler2D' ( uniform sampler2D) 0:67 Construct vec3 ( temp 3-component vector of float) 0:67 'coords2D' ( smooth in 2-component vector of float) 0:67 'proj' ( temp float) 0:67 'gradX' ( temp 2-component vector of float) 0:67 'gradY' ( temp 2-component vector of float) 0:68 add second child into first child ( temp 4-component vector of float) 0:68 'color' ( temp 4-component vector of float) 0:68 textureGradOffset ( global 4-component vector of float) 0:68 'texSampler2D' ( uniform sampler2D) 0:68 'coords2D' ( smooth in 2-component vector of float) 0:68 'gradX' ( temp 2-component vector of float) 0:68 'gradY' ( temp 2-component vector of float) 0:68 Constant: 0:68 3 (const int) 0:68 -7 (const int) 0:69 add second child into first child ( temp 4-component vector of float) 0:69 'color' ( temp 4-component vector of float) 0:69 textureProjGradOffset ( global 4-component vector of float) 0:69 'texSampler2D' ( uniform sampler2D) 0:69 'coords3D' ( temp 3-component vector of float) 0:69 'gradX' ( temp 2-component vector of float) 0:69 'gradY' ( temp 2-component vector of float) 0:69 Constant: 0:69 3 (const int) 0:69 -7 (const int) 0:70 add second child into first child ( temp 4-component vector of float) 0:70 'color' ( temp 4-component vector of float) 0:70 textureGrad ( global float) 0:70 'shadowSampler2D' ( uniform sampler2DShadow) 0:70 Construct vec3 ( temp 3-component vector of float) 0:70 'coords2D' ( smooth in 2-component vector of float) 0:70 'lod' ( temp float) 0:70 'gradX' ( temp 2-component vector of float) 0:70 'gradY' ( temp 2-component vector of float) 0:72 move second child to first child ( temp 4-component vector of float) 0:72 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:72 mix ( global 4-component vector of float) 0:72 'color' ( temp 4-component vector of float) 0:72 'u' ( uniform 4-component vector of float) 0:72 component-wise multiply ( temp float) 0:72 'blend' ( uniform float) 0:72 'blendscale' ( temp float) 0:? Linker Objects 0:? 'texSampler1D' ( uniform sampler1D) 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'texSampler3D' ( uniform sampler3D) 0:? 'texSamplerCube' ( uniform samplerCube) 0:? 'shadowSampler1D' ( uniform sampler1DShadow) 0:? 'shadowSampler2D' ( uniform sampler2DShadow) 0:? 'blend' ( uniform float) 0:? 'scale' ( uniform 2-component vector of float) 0:? 'u' ( uniform 4-component vector of float) 0:? 't' ( smooth in 2-component vector of float) 0:? 'coords2D' ( smooth in 2-component vector of float) Linked fragment stage: Shader version: 130 0:? Sequence 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:19 Sequence 0:19 Sequence 0:19 move second child to first child ( temp float) 0:19 'blendscale' ( temp float) 0:19 Constant: 0:19 1.789000 0:20 Sequence 0:20 move second child to first child ( temp float) 0:20 'bias' ( temp float) 0:20 Constant: 0:20 2.000000 0:21 Sequence 0:21 move second child to first child ( temp float) 0:21 'lod' ( temp float) 0:21 Constant: 0:21 3.000000 0:22 Sequence 0:22 move second child to first child ( temp float) 0:22 'proj' ( temp float) 0:22 Constant: 0:22 2.000000 0:23 Sequence 0:23 move second child to first child ( temp float) 0:23 'coords1D' ( temp float) 0:23 Constant: 0:23 1.789000 0:24 Sequence 0:24 move second child to first child ( temp 3-component vector of float) 0:24 'coords3D' ( temp 3-component vector of float) 0:24 Constant: 0:24 1.789000 0:24 2.718000 0:24 3.453000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of float) 0:25 'coords4D' ( temp 4-component vector of float) 0:25 Constant: 0:25 1.789000 0:25 2.718000 0:25 3.453000 0:25 2.000000 0:26 Sequence 0:26 move second child to first child ( temp 4-component vector of float) 0:26 'color' ( temp 4-component vector of float) 0:26 Constant: 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:26 0.000000 0:28 add second child into first child ( temp 4-component vector of float) 0:28 'color' ( temp 4-component vector of float) 0:28 texture ( global 4-component vector of float) 0:28 'texSampler1D' ( uniform sampler1D) 0:28 'coords1D' ( temp float) 0:29 add second child into first child ( temp 4-component vector of float) 0:29 'color' ( temp 4-component vector of float) 0:29 texture ( global 4-component vector of float) 0:29 'texSampler1D' ( uniform sampler1D) 0:29 'coords1D' ( temp float) 0:29 'bias' ( temp float) 0:30 add second child into first child ( temp 4-component vector of float) 0:30 'color' ( temp 4-component vector of float) 0:30 textureProj ( global 4-component vector of float) 0:30 'texSampler1D' ( uniform sampler1D) 0:30 'coords2D' ( smooth in 2-component vector of float) 0:31 add second child into first child ( temp 4-component vector of float) 0:31 'color' ( temp 4-component vector of float) 0:31 textureProj ( global 4-component vector of float) 0:31 'texSampler1D' ( uniform sampler1D) 0:31 'coords4D' ( temp 4-component vector of float) 0:32 add second child into first child ( temp 4-component vector of float) 0:32 'color' ( temp 4-component vector of float) 0:32 textureProj ( global 4-component vector of float) 0:32 'texSampler1D' ( uniform sampler1D) 0:32 'coords2D' ( smooth in 2-component vector of float) 0:32 'bias' ( temp float) 0:33 add second child into first child ( temp 4-component vector of float) 0:33 'color' ( temp 4-component vector of float) 0:33 textureProj ( global 4-component vector of float) 0:33 'texSampler1D' ( uniform sampler1D) 0:33 'coords4D' ( temp 4-component vector of float) 0:33 'bias' ( temp float) 0:35 add second child into first child ( temp 4-component vector of float) 0:35 'color' ( temp 4-component vector of float) 0:35 texture ( global 4-component vector of float) 0:35 'texSampler2D' ( uniform sampler2D) 0:35 'coords2D' ( smooth in 2-component vector of float) 0:36 add second child into first child ( temp 4-component vector of float) 0:36 'color' ( temp 4-component vector of float) 0:36 texture ( global 4-component vector of float) 0:36 'texSampler2D' ( uniform sampler2D) 0:36 'coords2D' ( smooth in 2-component vector of float) 0:36 'bias' ( temp float) 0:37 add second child into first child ( temp 4-component vector of float) 0:37 'color' ( temp 4-component vector of float) 0:37 textureProj ( global 4-component vector of float) 0:37 'texSampler2D' ( uniform sampler2D) 0:37 'coords3D' ( temp 3-component vector of float) 0:38 add second child into first child ( temp 4-component vector of float) 0:38 'color' ( temp 4-component vector of float) 0:38 textureProj ( global 4-component vector of float) 0:38 'texSampler2D' ( uniform sampler2D) 0:38 'coords4D' ( temp 4-component vector of float) 0:38 'bias' ( temp float) 0:40 add second child into first child ( temp 4-component vector of float) 0:40 'color' ( temp 4-component vector of float) 0:40 texture ( global 4-component vector of float) 0:40 'texSampler3D' ( uniform sampler3D) 0:40 'coords3D' ( temp 3-component vector of float) 0:41 add second child into first child ( temp 4-component vector of float) 0:41 'color' ( temp 4-component vector of float) 0:41 texture ( global 4-component vector of float) 0:41 'texSampler3D' ( uniform sampler3D) 0:41 'coords3D' ( temp 3-component vector of float) 0:41 'bias' ( temp float) 0:42 add second child into first child ( temp 4-component vector of float) 0:42 'color' ( temp 4-component vector of float) 0:42 textureProj ( global 4-component vector of float) 0:42 'texSampler3D' ( uniform sampler3D) 0:42 'coords4D' ( temp 4-component vector of float) 0:43 add second child into first child ( temp 4-component vector of float) 0:43 'color' ( temp 4-component vector of float) 0:43 textureProj ( global 4-component vector of float) 0:43 'texSampler3D' ( uniform sampler3D) 0:43 'coords4D' ( temp 4-component vector of float) 0:43 'bias' ( temp float) 0:45 add second child into first child ( temp 4-component vector of float) 0:45 'color' ( temp 4-component vector of float) 0:45 texture ( global 4-component vector of float) 0:45 'texSamplerCube' ( uniform samplerCube) 0:45 'coords3D' ( temp 3-component vector of float) 0:46 add second child into first child ( temp 4-component vector of float) 0:46 'color' ( temp 4-component vector of float) 0:46 texture ( global 4-component vector of float) 0:46 'texSamplerCube' ( uniform samplerCube) 0:46 'coords3D' ( temp 3-component vector of float) 0:46 'bias' ( temp float) 0:48 add second child into first child ( temp 4-component vector of float) 0:48 'color' ( temp 4-component vector of float) 0:48 texture ( global 4-component vector of float) 0:48 'shadowSampler1D' ( uniform sampler1DShadow) 0:48 'coords3D' ( temp 3-component vector of float) 0:49 add second child into first child ( temp 4-component vector of float) 0:49 'color' ( temp 4-component vector of float) 0:49 texture ( global 4-component vector of float) 0:49 'shadowSampler1D' ( uniform sampler1DShadow) 0:49 'coords3D' ( temp 3-component vector of float) 0:49 'bias' ( temp float) 0:50 add second child into first child ( temp 4-component vector of float) 0:50 'color' ( temp 4-component vector of float) 0:50 texture ( global 4-component vector of float) 0:50 'shadowSampler2D' ( uniform sampler2DShadow) 0:50 'coords3D' ( temp 3-component vector of float) 0:51 add second child into first child ( temp 4-component vector of float) 0:51 'color' ( temp 4-component vector of float) 0:51 texture ( global 4-component vector of float) 0:51 'shadowSampler2D' ( uniform sampler2DShadow) 0:51 'coords3D' ( temp 3-component vector of float) 0:51 'bias' ( temp float) 0:52 add second child into first child ( temp 4-component vector of float) 0:52 'color' ( temp 4-component vector of float) 0:52 textureProj ( global 4-component vector of float) 0:52 'shadowSampler1D' ( uniform sampler1DShadow) 0:52 'coords4D' ( temp 4-component vector of float) 0:53 add second child into first child ( temp 4-component vector of float) 0:53 'color' ( temp 4-component vector of float) 0:53 textureProj ( global 4-component vector of float) 0:53 'shadowSampler1D' ( uniform sampler1DShadow) 0:53 'coords4D' ( temp 4-component vector of float) 0:53 'bias' ( temp float) 0:54 add second child into first child ( temp 4-component vector of float) 0:54 'color' ( temp 4-component vector of float) 0:54 textureProj ( global 4-component vector of float) 0:54 'shadowSampler2D' ( uniform sampler2DShadow) 0:54 'coords4D' ( temp 4-component vector of float) 0:55 add second child into first child ( temp 4-component vector of float) 0:55 'color' ( temp 4-component vector of float) 0:55 textureProj ( global 4-component vector of float) 0:55 'shadowSampler2D' ( uniform sampler2DShadow) 0:55 'coords4D' ( temp 4-component vector of float) 0:55 'bias' ( temp float) 0:57 Sequence 0:57 move second child to first child ( temp 2-component vector of int) 0:57 'iCoords2D' ( temp 2-component vector of int) 0:57 Constant: 0:57 0 (const int) 0:57 5 (const int) 0:58 Sequence 0:58 move second child to first child ( temp int) 0:58 'iLod' ( temp int) 0:58 Constant: 0:58 1 (const int) 0:60 add second child into first child ( temp 4-component vector of float) 0:60 'color' ( temp 4-component vector of float) 0:60 textureFetch ( global 4-component vector of float) 0:60 'texSampler2D' ( uniform sampler2D) 0:60 'iCoords2D' ( temp 2-component vector of int) 0:60 'iLod' ( temp int) 0:62 Sequence 0:62 move second child to first child ( temp 2-component vector of float) 0:62 'gradX' ( temp 2-component vector of float) 0:62 dPdx ( global 2-component vector of float) 0:62 'coords2D' ( smooth in 2-component vector of float) 0:63 Sequence 0:63 move second child to first child ( temp 2-component vector of float) 0:63 'gradY' ( temp 2-component vector of float) 0:63 dPdy ( global 2-component vector of float) 0:63 'coords2D' ( smooth in 2-component vector of float) 0:66 add second child into first child ( temp 4-component vector of float) 0:66 'color' ( temp 4-component vector of float) 0:66 textureGrad ( global 4-component vector of float) 0:66 'texSampler2D' ( uniform sampler2D) 0:66 'coords2D' ( smooth in 2-component vector of float) 0:66 'gradX' ( temp 2-component vector of float) 0:66 'gradY' ( temp 2-component vector of float) 0:67 add second child into first child ( temp 4-component vector of float) 0:67 'color' ( temp 4-component vector of float) 0:67 textureProjGrad ( global 4-component vector of float) 0:67 'texSampler2D' ( uniform sampler2D) 0:67 Construct vec3 ( temp 3-component vector of float) 0:67 'coords2D' ( smooth in 2-component vector of float) 0:67 'proj' ( temp float) 0:67 'gradX' ( temp 2-component vector of float) 0:67 'gradY' ( temp 2-component vector of float) 0:68 add second child into first child ( temp 4-component vector of float) 0:68 'color' ( temp 4-component vector of float) 0:68 textureGradOffset ( global 4-component vector of float) 0:68 'texSampler2D' ( uniform sampler2D) 0:68 'coords2D' ( smooth in 2-component vector of float) 0:68 'gradX' ( temp 2-component vector of float) 0:68 'gradY' ( temp 2-component vector of float) 0:68 Constant: 0:68 3 (const int) 0:68 -7 (const int) 0:69 add second child into first child ( temp 4-component vector of float) 0:69 'color' ( temp 4-component vector of float) 0:69 textureProjGradOffset ( global 4-component vector of float) 0:69 'texSampler2D' ( uniform sampler2D) 0:69 'coords3D' ( temp 3-component vector of float) 0:69 'gradX' ( temp 2-component vector of float) 0:69 'gradY' ( temp 2-component vector of float) 0:69 Constant: 0:69 3 (const int) 0:69 -7 (const int) 0:70 add second child into first child ( temp 4-component vector of float) 0:70 'color' ( temp 4-component vector of float) 0:70 textureGrad ( global float) 0:70 'shadowSampler2D' ( uniform sampler2DShadow) 0:70 Construct vec3 ( temp 3-component vector of float) 0:70 'coords2D' ( smooth in 2-component vector of float) 0:70 'lod' ( temp float) 0:70 'gradX' ( temp 2-component vector of float) 0:70 'gradY' ( temp 2-component vector of float) 0:72 move second child to first child ( temp 4-component vector of float) 0:72 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:72 mix ( global 4-component vector of float) 0:72 'color' ( temp 4-component vector of float) 0:72 'u' ( uniform 4-component vector of float) 0:72 component-wise multiply ( temp float) 0:72 'blend' ( uniform float) 0:72 'blendscale' ( temp float) 0:? Linker Objects 0:? 'texSampler1D' ( uniform sampler1D) 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'texSampler3D' ( uniform sampler3D) 0:? 'texSamplerCube' ( uniform samplerCube) 0:? 'shadowSampler1D' ( uniform sampler1DShadow) 0:? 'shadowSampler2D' ( uniform sampler2DShadow) 0:? 'blend' ( uniform float) 0:? 'scale' ( uniform 2-component vector of float) 0:? 'u' ( uniform 4-component vector of float) 0:? 't' ( smooth in 2-component vector of float) 0:? 'coords2D' ( smooth in 2-component vector of float) glslang-16.0.0/Test/baseResults/textureQueryLOD.frag.out000066400000000000000000000105551506534232700232110ustar00rootroot00000000000000textureQueryLOD.frag 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) glslang-16.0.0/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out000066400000000000000000000050451506534232700273100ustar00rootroot00000000000000textureoffset_sampler2darrayshadow.vert ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow : ES Profile ERROR: 1 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 move second child to first child ( temp highp 4-component vector of float) 0:9 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:9 Construct vec4 ( temp highp 4-component vector of float) 0:9 textureOffset ( global mediump float) 0:9 's' ( uniform mediump sampler2DArrayShadow) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 Constant: 0:9 0 (const int) 0:9 0 (const int) 0:10 move second child to first child ( temp highp 4-component vector of float) 0:10 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:10 'dEQP_Position' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'dEQP_Position' ( in highp 4-component vector of float) 0:? 's' ( uniform mediump sampler2DArrayShadow) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 300 ERROR: node is still EOpNull! 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 move second child to first child ( temp highp 4-component vector of float) 0:9 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:9 Construct vec4 ( temp highp 4-component vector of float) 0:9 textureOffset ( global mediump float) 0:9 's' ( uniform mediump sampler2DArrayShadow) 0:9 Constant: 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 0.000000 0:9 Constant: 0:9 0 (const int) 0:9 0 (const int) 0:10 move second child to first child ( temp highp 4-component vector of float) 0:10 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:10 'dEQP_Position' ( in highp 4-component vector of float) 0:? Linker Objects 0:? 'dEQP_Position' ( in highp 4-component vector of float) 0:? 's' ( uniform mediump sampler2DArrayShadow) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/tokenLength.vert.out000066400000000000000000000533441506534232700224520ustar00rootroot00000000000000tokenLength.vert ERROR: 0:9: '' : numeric literal too big ERROR: 0:10: '' : numeric literal too big ERROR: 0:13: '' : octal literal too big ERROR: 0:14: '' : hexadecimal literal too big ERROR: 0:23: '' : float literal too long ERROR: 0:32: '' : name too long ERROR: 0:33: '' : hexadecimal literal too big ERROR: 0:34: '' : numeric literal too long ERROR: 0:34: '' : octal literal too big ERROR: 0:35: '' : numeric literal too long ERROR: 0:35: '' : numeric literal too big ERROR: 0:36: '' : float literal too long WARNING: 0:39: '#extension' : extension not supported: a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhooooooooooooooooooooooooooooooohhhhhhhhhhhhhhhhh01234 ERROR: 0:40: '' : name too long WARNING: 0:40: '#extension' : extension not supported: a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhooooooooooooooooooooooooooooooohhhhhhhhhhhhhhhhh01234 ERROR: 0:43: '' : name too long ERROR: 0:44: '#extension' : ':' missing after extension name ERROR: 0:47: '#error' : in long non - zero if ERROR: 0:50: '#error' : in long zero if ERROR: 0:52: '' : numeric literal too long ERROR: 0:53: '#error' : in too long if ERROR: 0:56: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 ERROR: 0:59: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ERROR: 0:62: '' : name too long ERROR: 0:62: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ERROR: 0:67: '' : numeric literal too long ERROR: 0:70: '' : name too long ERROR: 0:70: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ERROR: 0:74: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON ERROR: 27 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:9 Sequence 0:9 move second child to first child ( temp highp int) 0:9 'E1' ( global highp int) 0:9 Constant: 0:9 -1 (const int) 0:10 Sequence 0:10 move second child to first child ( temp highp int) 0:10 'E2' ( global highp int) 0:10 Constant: 0:10 -1 (const int) 0:11 Sequence 0:11 move second child to first child ( temp highp int) 0:11 'B' ( global highp int) 0:11 Constant: 0:11 -1 (const int) 0:13 Sequence 0:13 move second child to first child ( temp highp int) 0:13 'OE' ( global highp int) 0:13 Constant: 0:13 -1 (const int) 0:14 Sequence 0:14 move second child to first child ( temp highp int) 0:14 'HE' ( global highp int) 0:14 Constant: 0:14 180150000 (const int) 0:17 Sequence 0:17 move second child to first child ( temp highp float) 0:17 'F' ( global highp float) 0:17 Constant: 0:17 1.012346 0:20 Sequence 0:20 move second child to first child ( temp highp float) 0:20 'G' ( global highp float) 0:20 Constant: 0:20 1.012346 0:23 Sequence 0:23 move second child to first child ( temp highp float) 0:23 'E3' ( global highp float) 0:23 Constant: 0:23 1.012346 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:28 Construct vec4 ( temp highp 4-component vector of float) 0:27 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' ( in highp float) 0:28 Convert int to float ( temp highp float) 0:28 'B' ( global highp int) 0:28 'F' ( global highp float) 0:28 'G' ( global highp float) 0:33 Sequence 0:33 move second child to first child ( temp highp int) 0:33 'superH' ( global highp int) 0:33 Constant: 0:33 -1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp highp int) 0:34 'superO' ( global highp int) 0:34 Constant: 0:34 -1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp highp int) 0:35 'superI' ( global highp int) 0:35 Constant: 0:35 -1 (const int) 0:36 Sequence 0:36 move second child to first child ( temp highp float) 0:36 'superF' ( global highp float) 0:36 Constant: 0:36 1.012346 0:? Linker Objects 0:? 'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' ( in highp float) 0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' ( in highp float) 0:? 'E1' ( global highp int) 0:? 'E2' ( global highp int) 0:? 'B' ( global highp int) 0:? 'OE' ( global highp int) 0:? 'HE' ( global highp int) 0:? 'F' ( global highp float) 0:? 'G' ( global highp float) 0:? 'E3' ( global highp float) 0:? 'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789B' ( global highp float) 0:? 'superH' ( global highp int) 0:? 'superO' ( global highp int) 0:? 'superI' ( global highp int) 0:? 'superF' ( global highp float) 0:? 'BE' ( global highp int) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) Linked vertex stage: Shader version: 300 ERROR: node is still EOpNull! 0:9 Sequence 0:9 move second child to first child ( temp highp int) 0:9 'E1' ( global highp int) 0:9 Constant: 0:9 -1 (const int) 0:10 Sequence 0:10 move second child to first child ( temp highp int) 0:10 'E2' ( global highp int) 0:10 Constant: 0:10 -1 (const int) 0:11 Sequence 0:11 move second child to first child ( temp highp int) 0:11 'B' ( global highp int) 0:11 Constant: 0:11 -1 (const int) 0:13 Sequence 0:13 move second child to first child ( temp highp int) 0:13 'OE' ( global highp int) 0:13 Constant: 0:13 -1 (const int) 0:14 Sequence 0:14 move second child to first child ( temp highp int) 0:14 'HE' ( global highp int) 0:14 Constant: 0:14 180150000 (const int) 0:17 Sequence 0:17 move second child to first child ( temp highp float) 0:17 'F' ( global highp float) 0:17 Constant: 0:17 1.012346 0:20 Sequence 0:20 move second child to first child ( temp highp float) 0:20 'G' ( global highp float) 0:20 Constant: 0:20 1.012346 0:23 Sequence 0:23 move second child to first child ( temp highp float) 0:23 'E3' ( global highp float) 0:23 Constant: 0:23 1.012346 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 'gl_Position' ( gl_Position highp 4-component vector of float Position) 0:28 Construct vec4 ( temp highp 4-component vector of float) 0:27 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' ( in highp float) 0:28 Convert int to float ( temp highp float) 0:28 'B' ( global highp int) 0:28 'F' ( global highp float) 0:28 'G' ( global highp float) 0:33 Sequence 0:33 move second child to first child ( temp highp int) 0:33 'superH' ( global highp int) 0:33 Constant: 0:33 -1 (const int) 0:34 Sequence 0:34 move second child to first child ( temp highp int) 0:34 'superO' ( global highp int) 0:34 Constant: 0:34 -1 (const int) 0:35 Sequence 0:35 move second child to first child ( temp highp int) 0:35 'superI' ( global highp int) 0:35 Constant: 0:35 -1 (const int) 0:36 Sequence 0:36 move second child to first child ( temp highp float) 0:36 'superF' ( global highp float) 0:36 Constant: 0:36 1.012346 0:? Linker Objects 0:? 'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' ( in highp float) 0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' ( in highp float) 0:? 'E1' ( global highp int) 0:? 'E2' ( global highp int) 0:? 'B' ( global highp int) 0:? 'OE' ( global highp int) 0:? 'HE' ( global highp int) 0:? 'F' ( global highp float) 0:? 'G' ( global highp float) 0:? 'E3' ( global highp float) 0:? 'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789B' ( global highp float) 0:? 'superH' ( global highp int) 0:? 'superO' ( global highp int) 0:? 'superI' ( global highp int) 0:? 'superF' ( global highp float) 0:? 'BE' ( global highp int) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) glslang-16.0.0/Test/baseResults/tokenPaste.vert.out000066400000000000000000000135441506534232700223030ustar00rootroot00000000000000tokenPaste.vert ERROR: 0:38: '##' : unexpected location ERROR: 0:40: '##' : unexpected location; end of replacement list ERROR: 0:49: '##' : combined tokens are too long ERROR: 0:52: '##' : not supported for these tokens ERROR: 0:81: '##' : combined token is invalid ERROR: 0:94: 'macro expansion' : Too few args in Macro rec ERROR: 0:94: '##' : unexpected location ERROR: 0:94: '##' : unexpected location ERROR: 0:98: '##' : unexpected location; end of argument ERROR: 9 compilation errors. No code generated. Shader version: 450 ERROR: node is still EOpNull! 0:52 Sequence 0:52 move second child to first child ( temp int) 0:52 'a' ( global int) 0:52 Constant: 0:52 11 (const int) 0:70 Sequence 0:70 move second child to first child ( temp int) 0:70 'cop' ( global int) 0:70 Constant: 0:70 160 (const int) 0:71 Sequence 0:71 move second child to first child ( temp bool) 0:71 'dop' ( global bool) 0:71 Constant: 0:71 true (const bool) 0:75 Function Definition: ShouldntExpandToThis( ( global void) 0:75 Function Parameters: 0:77 Sequence 0:77 Sequence 0:77 move second child to first child ( temp int) 0:77 'e' ( temp int) 0:77 Constant: 0:77 16 (const int) 0:78 right shift second child into first child ( temp int) 0:78 'e' ( temp int) 0:78 Constant: 0:78 2 (const int) 0:81 Sequence 0:81 move second child to first child ( temp bool) 0:81 'f' ( temp bool) 0:81 Compare Greater Than ( temp bool) 0:81 'e' ( temp int) 0:81 Constant: 0:81 5 (const int) 0:? Linker Objects 0:? 'SecondExpansion' ( global int) 0:? 'PostPasteExpansion' ( global int) 0:? 'foo27' ( global float) 0:? 'foo155' ( uniform float) 0:? 'foo719' ( global float) 0:? 'barfoo' ( uniform float) 0:? 'argless' ( global float) 0:? 'dc1' ( global float) 0:? 'dc2' ( global float) 0:? 'foo875' ( uniform float) 0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345' ( global float) 0:? 'a' ( global int) 0:? 'seahorse_var' ( uniform float) 0:? 'sealion_var' ( uniform float) 0:? 'aop' ( const int) 0:? 10 (const int) 0:? 'bop' ( const int) 0:? 4 (const int) 0:? 'cop' ( global int) 0:? 'dop' ( global bool) 0:? 'argPaste2' ( uniform int) 0:? 'argPaste20suff' ( uniform int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point Shader version: 450 ERROR: node is still EOpNull! 0:52 Sequence 0:52 move second child to first child ( temp int) 0:52 'a' ( global int) 0:52 Constant: 0:52 11 (const int) 0:70 Sequence 0:70 move second child to first child ( temp int) 0:70 'cop' ( global int) 0:70 Constant: 0:70 160 (const int) 0:71 Sequence 0:71 move second child to first child ( temp bool) 0:71 'dop' ( global bool) 0:71 Constant: 0:71 true (const bool) 0:? Linker Objects 0:? 'SecondExpansion' ( global int) 0:? 'PostPasteExpansion' ( global int) 0:? 'foo27' ( global float) 0:? 'foo155' ( uniform float) 0:? 'foo719' ( global float) 0:? 'barfoo' ( uniform float) 0:? 'argless' ( global float) 0:? 'dc1' ( global float) 0:? 'dc2' ( global float) 0:? 'foo875' ( uniform float) 0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345' ( global float) 0:? 'a' ( global int) 0:? 'seahorse_var' ( uniform float) 0:? 'sealion_var' ( uniform float) 0:? 'aop' ( const int) 0:? 10 (const int) 0:? 'bop' ( const int) 0:? 4 (const int) 0:? 'cop' ( global int) 0:? 'dop' ( global bool) 0:? 'argPaste2' ( uniform int) 0:? 'argPaste20suff' ( uniform int) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/types.frag.out000066400000000000000000001026531506534232700212710ustar00rootroot00000000000000types.frag Shader version: 130 0:? Sequence 0:33 Function Definition: main( ( global void) 0:33 Function Parameters: 0:35 Sequence 0:35 Sequence 0:35 move second child to first child ( temp bool) 0:35 'b' ( temp bool) 0:35 logical-and ( temp bool) 0:35 'u_b' ( uniform bool) 0:35 'i_b' ( uniform bool) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of bool) 0:36 'b2' ( temp 2-component vector of bool) 0:36 Construct bvec2 ( temp 2-component vector of bool) 0:36 logical-and ( temp bool) 0:36 logical-and ( temp bool) 0:36 logical-and ( temp bool) 0:36 direct index ( temp bool) 0:36 'u_b2' ( uniform 2-component vector of bool) 0:36 Constant: 0:36 0 (const int) 0:36 direct index ( temp bool) 0:36 'i_b2' ( uniform 2-component vector of bool) 0:36 Constant: 0:36 0 (const int) 0:36 direct index ( temp bool) 0:36 'u_b2' ( uniform 2-component vector of bool) 0:36 Constant: 0:36 1 (const int) 0:36 direct index ( temp bool) 0:36 'i_b2' ( uniform 2-component vector of bool) 0:36 Constant: 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 3-component vector of bool) 0:37 'b3' ( temp 3-component vector of bool) 0:37 Construct bvec3 ( temp 3-component vector of bool) 0:37 logical-and ( temp bool) 0:37 logical-and ( temp bool) 0:37 logical-and ( temp bool) 0:37 logical-and ( temp bool) 0:37 logical-and ( temp bool) 0:37 direct index ( temp bool) 0:37 'u_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp bool) 0:37 'i_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp bool) 0:37 'u_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 1 (const int) 0:37 direct index ( temp bool) 0:37 'i_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 1 (const int) 0:37 direct index ( temp bool) 0:37 'u_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 2 (const int) 0:37 direct index ( temp bool) 0:37 'i_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 2 (const int) 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of bool) 0:38 'b4' ( temp 4-component vector of bool) 0:38 Construct bvec4 ( temp 4-component vector of bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 direct index ( temp bool) 0:38 'u_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 0 (const int) 0:38 direct index ( temp bool) 0:38 'i_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 0 (const int) 0:38 direct index ( temp bool) 0:38 'u_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 1 (const int) 0:38 direct index ( temp bool) 0:38 'i_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 1 (const int) 0:38 direct index ( temp bool) 0:38 'u_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 2 (const int) 0:38 direct index ( temp bool) 0:38 'i_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 2 (const int) 0:38 direct index ( temp bool) 0:38 'u_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 3 (const int) 0:38 direct index ( temp bool) 0:38 'i_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp int) 0:40 'i' ( temp int) 0:40 add ( temp int) 0:40 'u_i' ( uniform int) 0:40 'i_i' ( flat in int) 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of int) 0:41 'i2' ( temp 2-component vector of int) 0:41 add ( temp 2-component vector of int) 0:41 'u_i2' ( uniform 2-component vector of int) 0:41 'i_i2' ( flat in 2-component vector of int) 0:42 Sequence 0:42 move second child to first child ( temp 3-component vector of int) 0:42 'i3' ( temp 3-component vector of int) 0:42 add ( temp 3-component vector of int) 0:42 'u_i3' ( uniform 3-component vector of int) 0:42 'i_i3' ( flat in 3-component vector of int) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 'i4' ( temp 4-component vector of int) 0:43 add ( temp 4-component vector of int) 0:43 'u_i4' ( uniform 4-component vector of int) 0:43 'i_i4' ( flat in 4-component vector of int) 0:45 Sequence 0:45 move second child to first child ( temp float) 0:45 'f' ( temp float) 0:45 add ( temp float) 0:45 'u_f' ( uniform float) 0:45 'i_f' ( smooth in float) 0:46 Sequence 0:46 move second child to first child ( temp 2-component vector of float) 0:46 'f2' ( temp 2-component vector of float) 0:46 add ( temp 2-component vector of float) 0:46 'u_f2' ( uniform 2-component vector of float) 0:46 'i_f2' ( smooth in 2-component vector of float) 0:47 Sequence 0:47 move second child to first child ( temp 3-component vector of float) 0:47 'f3' ( temp 3-component vector of float) 0:47 add ( temp 3-component vector of float) 0:47 'u_f3' ( uniform 3-component vector of float) 0:47 'i_f3' ( smooth in 3-component vector of float) 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'f4' ( temp 4-component vector of float) 0:48 add ( temp 4-component vector of float) 0:48 'u_f4' ( uniform 4-component vector of float) 0:48 'i_f4' ( smooth in 4-component vector of float) 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:60 Test condition and select ( temp 4-component vector of float) 0:60 Condition 0:59 logical-or ( temp bool) 0:58 logical-or ( temp bool) 0:57 logical-or ( temp bool) 0:56 logical-or ( temp bool) 0:55 logical-or ( temp bool) 0:54 logical-or ( temp bool) 0:53 logical-or ( temp bool) 0:52 logical-or ( temp bool) 0:51 logical-or ( temp bool) 0:51 'b' ( temp bool) 0:52 direct index ( temp bool) 0:52 'b2' ( temp 2-component vector of bool) 0:52 Constant: 0:52 0 (const int) 0:53 direct index ( temp bool) 0:53 'b2' ( temp 2-component vector of bool) 0:53 Constant: 0:53 1 (const int) 0:54 direct index ( temp bool) 0:54 'b3' ( temp 3-component vector of bool) 0:54 Constant: 0:54 0 (const int) 0:55 direct index ( temp bool) 0:55 'b3' ( temp 3-component vector of bool) 0:55 Constant: 0:55 1 (const int) 0:56 direct index ( temp bool) 0:56 'b3' ( temp 3-component vector of bool) 0:56 Constant: 0:56 2 (const int) 0:57 direct index ( temp bool) 0:57 'b4' ( temp 4-component vector of bool) 0:57 Constant: 0:57 0 (const int) 0:58 direct index ( temp bool) 0:58 'b4' ( temp 4-component vector of bool) 0:58 Constant: 0:58 1 (const int) 0:59 direct index ( temp bool) 0:59 'b4' ( temp 4-component vector of bool) 0:59 Constant: 0:59 2 (const int) 0:60 direct index ( temp bool) 0:60 'b4' ( temp 4-component vector of bool) 0:60 Constant: 0:60 3 (const int) 0:60 true case 0:79 Construct vec4 ( temp 4-component vector of float) 0:79 add ( temp float) 0:78 add ( temp float) 0:77 add ( temp float) 0:76 add ( temp float) 0:75 add ( temp float) 0:74 add ( temp float) 0:73 add ( temp float) 0:72 add ( temp float) 0:71 add ( temp float) 0:70 add ( temp float) 0:69 Convert int to float ( temp float) 0:69 add ( temp int) 0:68 add ( temp int) 0:67 add ( temp int) 0:66 add ( temp int) 0:65 add ( temp int) 0:64 add ( temp int) 0:63 add ( temp int) 0:62 add ( temp int) 0:61 add ( temp int) 0:61 'i' ( temp int) 0:62 direct index ( temp int) 0:62 'i2' ( temp 2-component vector of int) 0:62 Constant: 0:62 0 (const int) 0:63 direct index ( temp int) 0:63 'i2' ( temp 2-component vector of int) 0:63 Constant: 0:63 1 (const int) 0:64 direct index ( temp int) 0:64 'i3' ( temp 3-component vector of int) 0:64 Constant: 0:64 0 (const int) 0:65 direct index ( temp int) 0:65 'i3' ( temp 3-component vector of int) 0:65 Constant: 0:65 1 (const int) 0:66 direct index ( temp int) 0:66 'i3' ( temp 3-component vector of int) 0:66 Constant: 0:66 2 (const int) 0:67 direct index ( temp int) 0:67 'i4' ( temp 4-component vector of int) 0:67 Constant: 0:67 0 (const int) 0:68 direct index ( temp int) 0:68 'i4' ( temp 4-component vector of int) 0:68 Constant: 0:68 1 (const int) 0:69 direct index ( temp int) 0:69 'i4' ( temp 4-component vector of int) 0:69 Constant: 0:69 2 (const int) 0:70 direct index ( temp int) 0:70 'i4' ( temp 4-component vector of int) 0:70 Constant: 0:70 3 (const int) 0:71 'f' ( temp float) 0:72 direct index ( temp float) 0:72 'f2' ( temp 2-component vector of float) 0:72 Constant: 0:72 0 (const int) 0:73 direct index ( temp float) 0:73 'f2' ( temp 2-component vector of float) 0:73 Constant: 0:73 1 (const int) 0:74 direct index ( temp float) 0:74 'f3' ( temp 3-component vector of float) 0:74 Constant: 0:74 0 (const int) 0:75 direct index ( temp float) 0:75 'f3' ( temp 3-component vector of float) 0:75 Constant: 0:75 1 (const int) 0:76 direct index ( temp float) 0:76 'f3' ( temp 3-component vector of float) 0:76 Constant: 0:76 2 (const int) 0:77 direct index ( temp float) 0:77 'f4' ( temp 4-component vector of float) 0:77 Constant: 0:77 0 (const int) 0:78 direct index ( temp float) 0:78 'f4' ( temp 4-component vector of float) 0:78 Constant: 0:78 1 (const int) 0:79 direct index ( temp float) 0:79 'f4' ( temp 4-component vector of float) 0:79 Constant: 0:79 2 (const int) 0:80 direct index ( temp float) 0:80 'f4' ( temp 4-component vector of float) 0:80 Constant: 0:80 3 (const int) 0:60 false case 0:80 Constant: 0:80 1.000000 0:80 1.000000 0:80 1.000000 0:80 1.000000 0:? Linker Objects 0:? 'u_b' ( uniform bool) 0:? 'u_b2' ( uniform 2-component vector of bool) 0:? 'u_b3' ( uniform 3-component vector of bool) 0:? 'u_b4' ( uniform 4-component vector of bool) 0:? 'u_i' ( uniform int) 0:? 'u_i2' ( uniform 2-component vector of int) 0:? 'u_i3' ( uniform 3-component vector of int) 0:? 'u_i4' ( uniform 4-component vector of int) 0:? 'u_f' ( uniform float) 0:? 'u_f2' ( uniform 2-component vector of float) 0:? 'u_f3' ( uniform 3-component vector of float) 0:? 'u_f4' ( uniform 4-component vector of float) 0:? 'i_b' ( uniform bool) 0:? 'i_b2' ( uniform 2-component vector of bool) 0:? 'i_b3' ( uniform 3-component vector of bool) 0:? 'i_b4' ( uniform 4-component vector of bool) 0:? 'i_i' ( flat in int) 0:? 'i_i2' ( flat in 2-component vector of int) 0:? 'i_i3' ( flat in 3-component vector of int) 0:? 'i_i4' ( flat in 4-component vector of int) 0:? 'i_f' ( smooth in float) 0:? 'i_f2' ( smooth in 2-component vector of float) 0:? 'i_f3' ( smooth in 3-component vector of float) 0:? 'i_f4' ( smooth in 4-component vector of float) Linked fragment stage: Shader version: 130 0:? Sequence 0:33 Function Definition: main( ( global void) 0:33 Function Parameters: 0:35 Sequence 0:35 Sequence 0:35 move second child to first child ( temp bool) 0:35 'b' ( temp bool) 0:35 logical-and ( temp bool) 0:35 'u_b' ( uniform bool) 0:35 'i_b' ( uniform bool) 0:36 Sequence 0:36 move second child to first child ( temp 2-component vector of bool) 0:36 'b2' ( temp 2-component vector of bool) 0:36 Construct bvec2 ( temp 2-component vector of bool) 0:36 logical-and ( temp bool) 0:36 logical-and ( temp bool) 0:36 logical-and ( temp bool) 0:36 direct index ( temp bool) 0:36 'u_b2' ( uniform 2-component vector of bool) 0:36 Constant: 0:36 0 (const int) 0:36 direct index ( temp bool) 0:36 'i_b2' ( uniform 2-component vector of bool) 0:36 Constant: 0:36 0 (const int) 0:36 direct index ( temp bool) 0:36 'u_b2' ( uniform 2-component vector of bool) 0:36 Constant: 0:36 1 (const int) 0:36 direct index ( temp bool) 0:36 'i_b2' ( uniform 2-component vector of bool) 0:36 Constant: 0:36 1 (const int) 0:37 Sequence 0:37 move second child to first child ( temp 3-component vector of bool) 0:37 'b3' ( temp 3-component vector of bool) 0:37 Construct bvec3 ( temp 3-component vector of bool) 0:37 logical-and ( temp bool) 0:37 logical-and ( temp bool) 0:37 logical-and ( temp bool) 0:37 logical-and ( temp bool) 0:37 logical-and ( temp bool) 0:37 direct index ( temp bool) 0:37 'u_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp bool) 0:37 'i_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 0 (const int) 0:37 direct index ( temp bool) 0:37 'u_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 1 (const int) 0:37 direct index ( temp bool) 0:37 'i_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 1 (const int) 0:37 direct index ( temp bool) 0:37 'u_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 2 (const int) 0:37 direct index ( temp bool) 0:37 'i_b3' ( uniform 3-component vector of bool) 0:37 Constant: 0:37 2 (const int) 0:38 Sequence 0:38 move second child to first child ( temp 4-component vector of bool) 0:38 'b4' ( temp 4-component vector of bool) 0:38 Construct bvec4 ( temp 4-component vector of bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 logical-and ( temp bool) 0:38 direct index ( temp bool) 0:38 'u_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 0 (const int) 0:38 direct index ( temp bool) 0:38 'i_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 0 (const int) 0:38 direct index ( temp bool) 0:38 'u_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 1 (const int) 0:38 direct index ( temp bool) 0:38 'i_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 1 (const int) 0:38 direct index ( temp bool) 0:38 'u_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 2 (const int) 0:38 direct index ( temp bool) 0:38 'i_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 2 (const int) 0:38 direct index ( temp bool) 0:38 'u_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 3 (const int) 0:38 direct index ( temp bool) 0:38 'i_b4' ( uniform 4-component vector of bool) 0:38 Constant: 0:38 3 (const int) 0:40 Sequence 0:40 move second child to first child ( temp int) 0:40 'i' ( temp int) 0:40 add ( temp int) 0:40 'u_i' ( uniform int) 0:40 'i_i' ( flat in int) 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of int) 0:41 'i2' ( temp 2-component vector of int) 0:41 add ( temp 2-component vector of int) 0:41 'u_i2' ( uniform 2-component vector of int) 0:41 'i_i2' ( flat in 2-component vector of int) 0:42 Sequence 0:42 move second child to first child ( temp 3-component vector of int) 0:42 'i3' ( temp 3-component vector of int) 0:42 add ( temp 3-component vector of int) 0:42 'u_i3' ( uniform 3-component vector of int) 0:42 'i_i3' ( flat in 3-component vector of int) 0:43 Sequence 0:43 move second child to first child ( temp 4-component vector of int) 0:43 'i4' ( temp 4-component vector of int) 0:43 add ( temp 4-component vector of int) 0:43 'u_i4' ( uniform 4-component vector of int) 0:43 'i_i4' ( flat in 4-component vector of int) 0:45 Sequence 0:45 move second child to first child ( temp float) 0:45 'f' ( temp float) 0:45 add ( temp float) 0:45 'u_f' ( uniform float) 0:45 'i_f' ( smooth in float) 0:46 Sequence 0:46 move second child to first child ( temp 2-component vector of float) 0:46 'f2' ( temp 2-component vector of float) 0:46 add ( temp 2-component vector of float) 0:46 'u_f2' ( uniform 2-component vector of float) 0:46 'i_f2' ( smooth in 2-component vector of float) 0:47 Sequence 0:47 move second child to first child ( temp 3-component vector of float) 0:47 'f3' ( temp 3-component vector of float) 0:47 add ( temp 3-component vector of float) 0:47 'u_f3' ( uniform 3-component vector of float) 0:47 'i_f3' ( smooth in 3-component vector of float) 0:48 Sequence 0:48 move second child to first child ( temp 4-component vector of float) 0:48 'f4' ( temp 4-component vector of float) 0:48 add ( temp 4-component vector of float) 0:48 'u_f4' ( uniform 4-component vector of float) 0:48 'i_f4' ( smooth in 4-component vector of float) 0:50 move second child to first child ( temp 4-component vector of float) 0:50 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:60 Test condition and select ( temp 4-component vector of float) 0:60 Condition 0:59 logical-or ( temp bool) 0:58 logical-or ( temp bool) 0:57 logical-or ( temp bool) 0:56 logical-or ( temp bool) 0:55 logical-or ( temp bool) 0:54 logical-or ( temp bool) 0:53 logical-or ( temp bool) 0:52 logical-or ( temp bool) 0:51 logical-or ( temp bool) 0:51 'b' ( temp bool) 0:52 direct index ( temp bool) 0:52 'b2' ( temp 2-component vector of bool) 0:52 Constant: 0:52 0 (const int) 0:53 direct index ( temp bool) 0:53 'b2' ( temp 2-component vector of bool) 0:53 Constant: 0:53 1 (const int) 0:54 direct index ( temp bool) 0:54 'b3' ( temp 3-component vector of bool) 0:54 Constant: 0:54 0 (const int) 0:55 direct index ( temp bool) 0:55 'b3' ( temp 3-component vector of bool) 0:55 Constant: 0:55 1 (const int) 0:56 direct index ( temp bool) 0:56 'b3' ( temp 3-component vector of bool) 0:56 Constant: 0:56 2 (const int) 0:57 direct index ( temp bool) 0:57 'b4' ( temp 4-component vector of bool) 0:57 Constant: 0:57 0 (const int) 0:58 direct index ( temp bool) 0:58 'b4' ( temp 4-component vector of bool) 0:58 Constant: 0:58 1 (const int) 0:59 direct index ( temp bool) 0:59 'b4' ( temp 4-component vector of bool) 0:59 Constant: 0:59 2 (const int) 0:60 direct index ( temp bool) 0:60 'b4' ( temp 4-component vector of bool) 0:60 Constant: 0:60 3 (const int) 0:60 true case 0:79 Construct vec4 ( temp 4-component vector of float) 0:79 add ( temp float) 0:78 add ( temp float) 0:77 add ( temp float) 0:76 add ( temp float) 0:75 add ( temp float) 0:74 add ( temp float) 0:73 add ( temp float) 0:72 add ( temp float) 0:71 add ( temp float) 0:70 add ( temp float) 0:69 Convert int to float ( temp float) 0:69 add ( temp int) 0:68 add ( temp int) 0:67 add ( temp int) 0:66 add ( temp int) 0:65 add ( temp int) 0:64 add ( temp int) 0:63 add ( temp int) 0:62 add ( temp int) 0:61 add ( temp int) 0:61 'i' ( temp int) 0:62 direct index ( temp int) 0:62 'i2' ( temp 2-component vector of int) 0:62 Constant: 0:62 0 (const int) 0:63 direct index ( temp int) 0:63 'i2' ( temp 2-component vector of int) 0:63 Constant: 0:63 1 (const int) 0:64 direct index ( temp int) 0:64 'i3' ( temp 3-component vector of int) 0:64 Constant: 0:64 0 (const int) 0:65 direct index ( temp int) 0:65 'i3' ( temp 3-component vector of int) 0:65 Constant: 0:65 1 (const int) 0:66 direct index ( temp int) 0:66 'i3' ( temp 3-component vector of int) 0:66 Constant: 0:66 2 (const int) 0:67 direct index ( temp int) 0:67 'i4' ( temp 4-component vector of int) 0:67 Constant: 0:67 0 (const int) 0:68 direct index ( temp int) 0:68 'i4' ( temp 4-component vector of int) 0:68 Constant: 0:68 1 (const int) 0:69 direct index ( temp int) 0:69 'i4' ( temp 4-component vector of int) 0:69 Constant: 0:69 2 (const int) 0:70 direct index ( temp int) 0:70 'i4' ( temp 4-component vector of int) 0:70 Constant: 0:70 3 (const int) 0:71 'f' ( temp float) 0:72 direct index ( temp float) 0:72 'f2' ( temp 2-component vector of float) 0:72 Constant: 0:72 0 (const int) 0:73 direct index ( temp float) 0:73 'f2' ( temp 2-component vector of float) 0:73 Constant: 0:73 1 (const int) 0:74 direct index ( temp float) 0:74 'f3' ( temp 3-component vector of float) 0:74 Constant: 0:74 0 (const int) 0:75 direct index ( temp float) 0:75 'f3' ( temp 3-component vector of float) 0:75 Constant: 0:75 1 (const int) 0:76 direct index ( temp float) 0:76 'f3' ( temp 3-component vector of float) 0:76 Constant: 0:76 2 (const int) 0:77 direct index ( temp float) 0:77 'f4' ( temp 4-component vector of float) 0:77 Constant: 0:77 0 (const int) 0:78 direct index ( temp float) 0:78 'f4' ( temp 4-component vector of float) 0:78 Constant: 0:78 1 (const int) 0:79 direct index ( temp float) 0:79 'f4' ( temp 4-component vector of float) 0:79 Constant: 0:79 2 (const int) 0:80 direct index ( temp float) 0:80 'f4' ( temp 4-component vector of float) 0:80 Constant: 0:80 3 (const int) 0:60 false case 0:80 Constant: 0:80 1.000000 0:80 1.000000 0:80 1.000000 0:80 1.000000 0:? Linker Objects 0:? 'u_b' ( uniform bool) 0:? 'u_b2' ( uniform 2-component vector of bool) 0:? 'u_b3' ( uniform 3-component vector of bool) 0:? 'u_b4' ( uniform 4-component vector of bool) 0:? 'u_i' ( uniform int) 0:? 'u_i2' ( uniform 2-component vector of int) 0:? 'u_i3' ( uniform 3-component vector of int) 0:? 'u_i4' ( uniform 4-component vector of int) 0:? 'u_f' ( uniform float) 0:? 'u_f2' ( uniform 2-component vector of float) 0:? 'u_f3' ( uniform 3-component vector of float) 0:? 'u_f4' ( uniform 4-component vector of float) 0:? 'i_b' ( uniform bool) 0:? 'i_b2' ( uniform 2-component vector of bool) 0:? 'i_b3' ( uniform 3-component vector of bool) 0:? 'i_b4' ( uniform 4-component vector of bool) 0:? 'i_i' ( flat in int) 0:? 'i_i2' ( flat in 2-component vector of int) 0:? 'i_i3' ( flat in 3-component vector of int) 0:? 'i_i4' ( flat in 4-component vector of int) 0:? 'i_f' ( smooth in float) 0:? 'i_f2' ( smooth in 2-component vector of float) 0:? 'i_f3' ( smooth in 3-component vector of float) 0:? 'i_f4' ( smooth in 4-component vector of float) glslang-16.0.0/Test/baseResults/uint.frag.out000066400000000000000000000601631506534232700211030ustar00rootroot00000000000000uint.frag ERROR: 0:2: 'uint' : must be qualified as flat in ERROR: 0:6: 'in' : cannot be bool ERROR: 0:20: 'const' : non-matching or non-convertible constant type for const initializer ERROR: 0:24: 'const' : non-matching or non-convertible constant type for const initializer ERROR: 0:34: 'const' : non-matching or non-convertible constant type for const initializer ERROR: 0:37: 'const' : non-matching or non-convertible constant type for const initializer ERROR: 0:48: '=' : cannot convert from ' const int' to ' temp mediump uint' ERROR: 0:51: '=' : cannot convert from ' const int' to ' temp mediump uint' ERROR: 0:63: 'float' : type requires declaration of default precision qualifier ERROR: 9 compilation errors. No code generated. Shader version: 300 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 mediump int) 0:17 'count' ( temp mediump int) 0:17 Constant: 0:17 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp mediump uint) 0:19 'u' ( temp mediump uint) 0:19 add ( temp mediump uint) 0:19 direct index ( temp mediump uint) 0:19 't' ( flat in mediump 2-component vector of uint) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 3 (const uint) 0:27 Test condition and select ( temp void) 0:27 Condition 0:27 Constant: 0:27 true (const bool) 0:27 true case 0:28 multiply second child into first child ( temp mediump int) 0:28 'count' ( temp mediump int) 0:28 Constant: 0:28 2 (const int) 0:29 Test condition and select ( temp void) 0:29 Condition 0:29 Constant: 0:29 true (const bool) 0:29 true case 0:30 multiply second child into first child ( temp mediump int) 0:30 'count' ( temp mediump int) 0:30 Constant: 0:30 3 (const int) 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Constant: 0:31 false (const bool) 0:31 true case 0:32 multiply second child into first child ( temp mediump int) 0:32 'count' ( temp mediump int) 0:32 Constant: 0:32 5 (const int) 0:41 Test condition and select ( temp void) 0:41 Condition 0:41 Constant: 0:41 true (const bool) 0:41 true case 0:42 multiply second child into first child ( temp mediump int) 0:42 'count' ( temp mediump int) 0:42 Constant: 0:42 7 (const int) 0:43 Test condition and select ( temp void) 0:43 Condition 0:43 Constant: 0:43 true (const bool) 0:43 true case 0:44 multiply second child into first child ( temp mediump int) 0:44 'count' ( temp mediump int) 0:44 Constant: 0:44 11 (const int) 0:45 Test condition and select ( temp void) 0:45 Condition 0:45 Constant: 0:45 false (const bool) 0:45 true case 0:46 multiply second child into first child ( temp mediump int) 0:46 'count' ( temp mediump int) 0:46 Constant: 0:46 13 (const int) 0:49 Sequence 0:49 move second child to first child ( temp mediump int) 0:49 'shiftedii' ( temp mediump int) 0:49 Constant: 0:49 -1 (const int) 0:50 Sequence 0:50 move second child to first child ( temp mediump uint) 0:50 'shiftedui' ( temp mediump uint) 0:50 Constant: 0:50 4194303 (const uint) 0:52 Sequence 0:52 move second child to first child ( temp mediump int) 0:52 'shiftediu' ( temp mediump int) 0:52 Constant: 0:52 -1 (const int) 0:53 Sequence 0:53 move second child to first child ( temp mediump uint) 0:53 'shifteduu' ( temp mediump uint) 0:53 Constant: 0:53 4194303 (const uint) 0:55 Test condition and select ( temp void) 0:55 Condition 0:55 Compare Equal ( temp bool) 0:55 'shiftedii' ( temp mediump int) 0:55 'shiftediu' ( temp mediump int) 0:55 true case 0:56 move second child to first child ( temp mediump 4-component vector of uint) 0:56 'c' ( out mediump 4-component vector of uint) 0:56 texture ( global lowp 4-component vector of uint, operation at highp) 0:56 'usampler' ( uniform lowp usampler2D) 0:56 'tc' ( smooth in highp 2-component vector of float) 0:57 Test condition and select ( temp void) 0:57 Condition 0:57 Compare Equal ( temp bool) 0:57 'shiftedui' ( temp mediump uint) 0:57 'shifteduu' ( temp mediump uint) 0:57 true case 0:58 move second child to first child ( temp mediump 4-component vector of uint) 0:58 'c' ( out mediump 4-component vector of uint) 0:58 texture ( global lowp 4-component vector of uint, operation at highp) 0:58 'usampler' ( uniform lowp usampler2D) 0:58 add ( temp highp 2-component vector of float) 0:58 'tc' ( smooth in highp 2-component vector of float) 0:58 Constant: 0:58 1.000000 0:59 Test condition and select ( temp void) 0:59 Condition 0:59 Compare Equal ( temp bool) 0:59 'shiftedii' ( temp mediump int) 0:59 Convert uint to int ( temp mediump int) 0:59 'shiftedui' ( temp mediump uint) 0:59 true case 0:60 move second child to first child ( temp mediump 4-component vector of uint) 0:60 'c' ( out mediump 4-component vector of uint) 0:60 texture ( global lowp 4-component vector of uint, operation at highp) 0:60 'usampler' ( uniform lowp usampler2D) 0:60 subtract ( temp highp 2-component vector of float) 0:60 'tc' ( smooth in highp 2-component vector of float) 0:60 Constant: 0:60 2.000000 0:60 2.000000 0:62 Test condition and select ( temp void) 0:62 Condition 0:62 Compare Greater Than ( temp bool) 0:62 direct index ( temp mediump uint) 0:62 't' ( flat in mediump 2-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 4 (const uint) 0:62 true case 0:63 Sequence 0:63 Sequence 0:63 move second child to first child ( temp mediump float) 0:63 'af' ( temp mediump float) 0:63 Convert uint to float ( temp mediump float) 0:63 'u' ( temp mediump uint) 0:64 Sequence 0:64 move second child to first child ( temp bool) 0:64 'ab' ( temp bool) 0:64 Convert uint to bool ( temp bool) 0:64 'u' ( temp mediump uint) 0:65 Sequence 0:65 move second child to first child ( temp mediump int) 0:65 'ai' ( temp mediump int) 0:65 Convert uint to int ( temp mediump int) 0:65 'u' ( temp mediump uint) 0:67 add second child into first child ( temp mediump 4-component vector of uint) 0:67 'c' ( out mediump 4-component vector of uint) 0:67 Construct uvec4 ( temp mediump 4-component vector of uint) 0:67 Convert float to uint ( temp mediump uint) 0:67 'af' ( temp mediump float) 0:67 Convert bool to uint ( temp mediump uint) 0:67 'ab' ( temp bool) 0:67 Convert int to uint ( temp mediump uint) 0:67 'ai' ( temp mediump int) 0:67 Convert int to uint ( temp mediump uint) 0:67 'count' ( temp mediump int) 0:75 Test condition and select ( temp void) 0:75 Condition 0:75 Constant: 0:75 true (const bool) 0:75 true case 0:76 multiply second child into first child ( temp mediump int) 0:76 'count' ( temp mediump int) 0:76 Constant: 0:76 17 (const int) 0:78 Test condition and select ( temp void) 0:78 Condition 0:78 Constant: 0:78 false (const bool) 0:78 true case 0:79 multiply second child into first child ( temp mediump int) 0:79 'count' ( temp mediump int) 0:79 Constant: 0:79 19 (const int) 0:81 Test condition and select ( temp void) 0:81 Condition 0:81 Constant: 0:81 true (const bool) 0:81 true case 0:82 multiply second child into first child ( temp mediump int) 0:82 'count' ( temp mediump int) 0:82 Constant: 0:82 23 (const int) 0:84 Test condition and select ( temp void) 0:84 Condition 0:84 Constant: 0:84 true (const bool) 0:84 true case 0:85 multiply second child into first child ( temp mediump int) 0:85 'count' ( temp mediump int) 0:85 Constant: 0:85 27 (const int) 0:87 Sequence 0:87 move second child to first child ( temp mediump uint) 0:87 'mask1' ( temp mediump uint) 0:87 Constant: 0:87 161 (const uint) 0:88 Sequence 0:88 move second child to first child ( temp mediump uint) 0:88 'mask2' ( temp mediump uint) 0:88 Constant: 0:88 2576 (const uint) 0:89 Sequence 0:89 move second child to first child ( temp mediump uint) 0:89 'mask3' ( temp mediump uint) 0:89 left-shift ( temp mediump uint) 0:89 'mask1' ( temp mediump uint) 0:89 Constant: 0:89 4 (const int) 0:90 Sequence 0:90 move second child to first child ( temp mediump uint) 0:90 'mask4' ( temp mediump uint) 0:90 Constant: 0:90 2737 (const uint) 0:92 Test condition and select ( temp void) 0:92 Condition 0:92 Compare Equal ( temp bool) 0:92 'mask3' ( temp mediump uint) 0:92 'mask2' ( temp mediump uint) 0:92 true case 0:93 multiply second child into first child ( temp mediump int) 0:93 'count' ( temp mediump int) 0:93 Constant: 0:93 100 (const int) 0:95 Test condition and select ( temp void) 0:95 Condition 0:95 Compare Not Equal ( temp bool) 0:95 bitwise and ( temp mediump uint) 0:95 'mask3' ( temp mediump uint) 0:95 'mask1' ( temp mediump uint) 0:95 Constant: 0:95 0 (const uint) 0:95 true case 0:96 multiply second child into first child ( temp mediump int) 0:96 'count' ( temp mediump int) 0:96 Constant: 0:96 101 (const int) 0:98 Test condition and select ( temp void) 0:98 Condition 0:98 Compare Equal ( temp bool) 0:98 inclusive-or ( temp mediump uint) 0:98 'mask1' ( temp mediump uint) 0:98 'mask3' ( temp mediump uint) 0:98 'mask4' ( temp mediump uint) 0:98 true case 0:99 multiply second child into first child ( temp mediump int) 0:99 'count' ( temp mediump int) 0:99 Constant: 0:99 102 (const int) 0:101 Test condition and select ( temp void) 0:101 Condition 0:101 Compare Equal ( temp bool) 0:101 exclusive-or ( temp mediump uint) 0:101 'mask1' ( temp mediump uint) 0:101 'mask4' ( temp mediump uint) 0:101 Constant: 0:101 2576 (const uint) 0:101 true case 0:102 multiply second child into first child ( temp mediump int) 0:102 'count' ( temp mediump int) 0:102 Constant: 0:102 103 (const int) 0:104 add second child into first child ( temp mediump 4-component vector of uint) 0:104 'c' ( out mediump 4-component vector of uint) 0:104 Construct uvec4 ( temp mediump 4-component vector of uint) 0:104 Convert int to uint ( temp mediump uint) 0:104 'count' ( temp mediump int) 0:? Linker Objects 0:? 'badu' ( smooth in mediump 2-component vector of uint) 0:? 't' ( flat in mediump 2-component vector of uint) 0:? 'f' ( smooth in highp float) 0:? 'tc' ( smooth in highp 2-component vector of float) 0:? 'bad' ( smooth in bool) 0:? 'v' ( uniform mediump 4-component vector of uint) 0:? 'i' ( uniform mediump int) 0:? 'b' ( uniform bool) 0:? 'c' ( out mediump 4-component vector of uint) 0:? 'usampler' ( uniform lowp usampler2D) Linked fragment stage: Shader version: 300 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 mediump int) 0:17 'count' ( temp mediump int) 0:17 Constant: 0:17 1 (const int) 0:19 Sequence 0:19 move second child to first child ( temp mediump uint) 0:19 'u' ( temp mediump uint) 0:19 add ( temp mediump uint) 0:19 direct index ( temp mediump uint) 0:19 't' ( flat in mediump 2-component vector of uint) 0:19 Constant: 0:19 1 (const int) 0:19 Constant: 0:19 3 (const uint) 0:27 Test condition and select ( temp void) 0:27 Condition 0:27 Constant: 0:27 true (const bool) 0:27 true case 0:28 multiply second child into first child ( temp mediump int) 0:28 'count' ( temp mediump int) 0:28 Constant: 0:28 2 (const int) 0:29 Test condition and select ( temp void) 0:29 Condition 0:29 Constant: 0:29 true (const bool) 0:29 true case 0:30 multiply second child into first child ( temp mediump int) 0:30 'count' ( temp mediump int) 0:30 Constant: 0:30 3 (const int) 0:31 Test condition and select ( temp void) 0:31 Condition 0:31 Constant: 0:31 false (const bool) 0:31 true case 0:32 multiply second child into first child ( temp mediump int) 0:32 'count' ( temp mediump int) 0:32 Constant: 0:32 5 (const int) 0:41 Test condition and select ( temp void) 0:41 Condition 0:41 Constant: 0:41 true (const bool) 0:41 true case 0:42 multiply second child into first child ( temp mediump int) 0:42 'count' ( temp mediump int) 0:42 Constant: 0:42 7 (const int) 0:43 Test condition and select ( temp void) 0:43 Condition 0:43 Constant: 0:43 true (const bool) 0:43 true case 0:44 multiply second child into first child ( temp mediump int) 0:44 'count' ( temp mediump int) 0:44 Constant: 0:44 11 (const int) 0:45 Test condition and select ( temp void) 0:45 Condition 0:45 Constant: 0:45 false (const bool) 0:45 true case 0:46 multiply second child into first child ( temp mediump int) 0:46 'count' ( temp mediump int) 0:46 Constant: 0:46 13 (const int) 0:49 Sequence 0:49 move second child to first child ( temp mediump int) 0:49 'shiftedii' ( temp mediump int) 0:49 Constant: 0:49 -1 (const int) 0:50 Sequence 0:50 move second child to first child ( temp mediump uint) 0:50 'shiftedui' ( temp mediump uint) 0:50 Constant: 0:50 4194303 (const uint) 0:52 Sequence 0:52 move second child to first child ( temp mediump int) 0:52 'shiftediu' ( temp mediump int) 0:52 Constant: 0:52 -1 (const int) 0:53 Sequence 0:53 move second child to first child ( temp mediump uint) 0:53 'shifteduu' ( temp mediump uint) 0:53 Constant: 0:53 4194303 (const uint) 0:55 Test condition and select ( temp void) 0:55 Condition 0:55 Compare Equal ( temp bool) 0:55 'shiftedii' ( temp mediump int) 0:55 'shiftediu' ( temp mediump int) 0:55 true case 0:56 move second child to first child ( temp mediump 4-component vector of uint) 0:56 'c' ( out mediump 4-component vector of uint) 0:56 texture ( global lowp 4-component vector of uint, operation at highp) 0:56 'usampler' ( uniform lowp usampler2D) 0:56 'tc' ( smooth in highp 2-component vector of float) 0:57 Test condition and select ( temp void) 0:57 Condition 0:57 Compare Equal ( temp bool) 0:57 'shiftedui' ( temp mediump uint) 0:57 'shifteduu' ( temp mediump uint) 0:57 true case 0:58 move second child to first child ( temp mediump 4-component vector of uint) 0:58 'c' ( out mediump 4-component vector of uint) 0:58 texture ( global lowp 4-component vector of uint, operation at highp) 0:58 'usampler' ( uniform lowp usampler2D) 0:58 add ( temp highp 2-component vector of float) 0:58 'tc' ( smooth in highp 2-component vector of float) 0:58 Constant: 0:58 1.000000 0:59 Test condition and select ( temp void) 0:59 Condition 0:59 Compare Equal ( temp bool) 0:59 'shiftedii' ( temp mediump int) 0:59 Convert uint to int ( temp mediump int) 0:59 'shiftedui' ( temp mediump uint) 0:59 true case 0:60 move second child to first child ( temp mediump 4-component vector of uint) 0:60 'c' ( out mediump 4-component vector of uint) 0:60 texture ( global lowp 4-component vector of uint, operation at highp) 0:60 'usampler' ( uniform lowp usampler2D) 0:60 subtract ( temp highp 2-component vector of float) 0:60 'tc' ( smooth in highp 2-component vector of float) 0:60 Constant: 0:60 2.000000 0:60 2.000000 0:62 Test condition and select ( temp void) 0:62 Condition 0:62 Compare Greater Than ( temp bool) 0:62 direct index ( temp mediump uint) 0:62 't' ( flat in mediump 2-component vector of uint) 0:62 Constant: 0:62 0 (const int) 0:62 Constant: 0:62 4 (const uint) 0:62 true case 0:63 Sequence 0:63 Sequence 0:63 move second child to first child ( temp mediump float) 0:63 'af' ( temp mediump float) 0:63 Convert uint to float ( temp mediump float) 0:63 'u' ( temp mediump uint) 0:64 Sequence 0:64 move second child to first child ( temp bool) 0:64 'ab' ( temp bool) 0:64 Convert uint to bool ( temp bool) 0:64 'u' ( temp mediump uint) 0:65 Sequence 0:65 move second child to first child ( temp mediump int) 0:65 'ai' ( temp mediump int) 0:65 Convert uint to int ( temp mediump int) 0:65 'u' ( temp mediump uint) 0:67 add second child into first child ( temp mediump 4-component vector of uint) 0:67 'c' ( out mediump 4-component vector of uint) 0:67 Construct uvec4 ( temp mediump 4-component vector of uint) 0:67 Convert float to uint ( temp mediump uint) 0:67 'af' ( temp mediump float) 0:67 Convert bool to uint ( temp mediump uint) 0:67 'ab' ( temp bool) 0:67 Convert int to uint ( temp mediump uint) 0:67 'ai' ( temp mediump int) 0:67 Convert int to uint ( temp mediump uint) 0:67 'count' ( temp mediump int) 0:75 Test condition and select ( temp void) 0:75 Condition 0:75 Constant: 0:75 true (const bool) 0:75 true case 0:76 multiply second child into first child ( temp mediump int) 0:76 'count' ( temp mediump int) 0:76 Constant: 0:76 17 (const int) 0:78 Test condition and select ( temp void) 0:78 Condition 0:78 Constant: 0:78 false (const bool) 0:78 true case 0:79 multiply second child into first child ( temp mediump int) 0:79 'count' ( temp mediump int) 0:79 Constant: 0:79 19 (const int) 0:81 Test condition and select ( temp void) 0:81 Condition 0:81 Constant: 0:81 true (const bool) 0:81 true case 0:82 multiply second child into first child ( temp mediump int) 0:82 'count' ( temp mediump int) 0:82 Constant: 0:82 23 (const int) 0:84 Test condition and select ( temp void) 0:84 Condition 0:84 Constant: 0:84 true (const bool) 0:84 true case 0:85 multiply second child into first child ( temp mediump int) 0:85 'count' ( temp mediump int) 0:85 Constant: 0:85 27 (const int) 0:87 Sequence 0:87 move second child to first child ( temp mediump uint) 0:87 'mask1' ( temp mediump uint) 0:87 Constant: 0:87 161 (const uint) 0:88 Sequence 0:88 move second child to first child ( temp mediump uint) 0:88 'mask2' ( temp mediump uint) 0:88 Constant: 0:88 2576 (const uint) 0:89 Sequence 0:89 move second child to first child ( temp mediump uint) 0:89 'mask3' ( temp mediump uint) 0:89 left-shift ( temp mediump uint) 0:89 'mask1' ( temp mediump uint) 0:89 Constant: 0:89 4 (const int) 0:90 Sequence 0:90 move second child to first child ( temp mediump uint) 0:90 'mask4' ( temp mediump uint) 0:90 Constant: 0:90 2737 (const uint) 0:92 Test condition and select ( temp void) 0:92 Condition 0:92 Compare Equal ( temp bool) 0:92 'mask3' ( temp mediump uint) 0:92 'mask2' ( temp mediump uint) 0:92 true case 0:93 multiply second child into first child ( temp mediump int) 0:93 'count' ( temp mediump int) 0:93 Constant: 0:93 100 (const int) 0:95 Test condition and select ( temp void) 0:95 Condition 0:95 Compare Not Equal ( temp bool) 0:95 bitwise and ( temp mediump uint) 0:95 'mask3' ( temp mediump uint) 0:95 'mask1' ( temp mediump uint) 0:95 Constant: 0:95 0 (const uint) 0:95 true case 0:96 multiply second child into first child ( temp mediump int) 0:96 'count' ( temp mediump int) 0:96 Constant: 0:96 101 (const int) 0:98 Test condition and select ( temp void) 0:98 Condition 0:98 Compare Equal ( temp bool) 0:98 inclusive-or ( temp mediump uint) 0:98 'mask1' ( temp mediump uint) 0:98 'mask3' ( temp mediump uint) 0:98 'mask4' ( temp mediump uint) 0:98 true case 0:99 multiply second child into first child ( temp mediump int) 0:99 'count' ( temp mediump int) 0:99 Constant: 0:99 102 (const int) 0:101 Test condition and select ( temp void) 0:101 Condition 0:101 Compare Equal ( temp bool) 0:101 exclusive-or ( temp mediump uint) 0:101 'mask1' ( temp mediump uint) 0:101 'mask4' ( temp mediump uint) 0:101 Constant: 0:101 2576 (const uint) 0:101 true case 0:102 multiply second child into first child ( temp mediump int) 0:102 'count' ( temp mediump int) 0:102 Constant: 0:102 103 (const int) 0:104 add second child into first child ( temp mediump 4-component vector of uint) 0:104 'c' ( out mediump 4-component vector of uint) 0:104 Construct uvec4 ( temp mediump 4-component vector of uint) 0:104 Convert int to uint ( temp mediump uint) 0:104 'count' ( temp mediump int) 0:? Linker Objects 0:? 'badu' ( smooth in mediump 2-component vector of uint) 0:? 't' ( flat in mediump 2-component vector of uint) 0:? 'f' ( smooth in highp float) 0:? 'tc' ( smooth in highp 2-component vector of float) 0:? 'bad' ( smooth in bool) 0:? 'v' ( uniform mediump 4-component vector of uint) 0:? 'i' ( uniform mediump int) 0:? 'b' ( uniform bool) 0:? 'c' ( out mediump 4-component vector of uint) 0:? 'usampler' ( uniform lowp usampler2D) glslang-16.0.0/Test/baseResults/uniformArray.frag.out000066400000000000000000000100421506534232700225710ustar00rootroot00000000000000uniformArray.frag Shader version: 130 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'texColor' ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 direct index ( temp 4-component vector of float) 0:9 'color' ( uniform 6-element array of 4-component vector of float) 0:9 Constant: 0:9 1 (const int) 0:9 direct index ( temp 4-component vector of float) 0:9 'color' ( uniform 6-element array of 4-component vector of float) 0:9 Constant: 0:9 1 (const int) 0:11 add second child into first child ( temp 3-component vector of float) 0:11 vector swizzle ( temp 3-component vector of float) 0:11 'texColor' ( temp 4-component vector of float) 0:11 Sequence 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 'inColor' ( uniform 3-component vector of float) 0:13 add second child into first child ( temp float) 0:13 direct index ( temp float) 0:13 'texColor' ( temp 4-component vector of float) 0:13 Constant: 0:13 3 (const int) 0:13 direct index ( temp float) 0:13 'alpha' ( uniform 16-element array of float) 0:13 Constant: 0:13 12 (const int) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:15 'texColor' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'inColor' ( uniform 3-component vector of float) 0:? 'color' ( uniform 6-element array of 4-component vector of float) 0:? 'alpha' ( uniform 16-element array of float) Linked fragment stage: Shader version: 130 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'texColor' ( temp 4-component vector of float) 0:9 add ( temp 4-component vector of float) 0:9 direct index ( temp 4-component vector of float) 0:9 'color' ( uniform 6-element array of 4-component vector of float) 0:9 Constant: 0:9 1 (const int) 0:9 direct index ( temp 4-component vector of float) 0:9 'color' ( uniform 6-element array of 4-component vector of float) 0:9 Constant: 0:9 1 (const int) 0:11 add second child into first child ( temp 3-component vector of float) 0:11 vector swizzle ( temp 3-component vector of float) 0:11 'texColor' ( temp 4-component vector of float) 0:11 Sequence 0:11 Constant: 0:11 0 (const int) 0:11 Constant: 0:11 1 (const int) 0:11 Constant: 0:11 2 (const int) 0:11 'inColor' ( uniform 3-component vector of float) 0:13 add second child into first child ( temp float) 0:13 direct index ( temp float) 0:13 'texColor' ( temp 4-component vector of float) 0:13 Constant: 0:13 3 (const int) 0:13 direct index ( temp float) 0:13 'alpha' ( uniform 16-element array of float) 0:13 Constant: 0:13 12 (const int) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:15 'texColor' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'inColor' ( uniform 3-component vector of float) 0:? 'color' ( uniform 6-element array of 4-component vector of float) 0:? 'alpha' ( uniform 16-element array of float) glslang-16.0.0/Test/baseResults/validation_fails.txt000066400000000000000000000073041506534232700225240ustar00rootroot00000000000000Test/baseResults/hlsl.attributeC11.frag.out Test/baseResults/hlsl.buffer.frag.out Test/baseResults/hlsl.cbuffer-offsets.comp.out Test/baseResults/hlsl.constantbuffer.frag.out Test/baseResults/hlsl.constructimat.frag.out Test/baseResults/hlsl.coverage.frag.out Test/baseResults/hlsl.emptystructreturn.frag.out Test/baseResults/hlsl.emptystructreturn.tesc.out Test/baseResults/hlsl.emptystructreturn.vert.out Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out Test/baseResults/hlsl.intrinsics.comp.out Test/baseResults/hlsl.intrinsics.frag.out Test/baseResults/hlsl.intrinsics.vert.out Test/baseResults/hlsl.layout.frag.out Test/baseResults/hlsl.matNx1.frag.out Test/baseResults/hlsl.matrixSwizzle.vert.out Test/baseResults/hlsl.matType.bool.frag.out Test/baseResults/hlsl.matType.frag.out Test/baseResults/hlsl.matType.int.frag.out Test/baseResults/hlsl.nested-runtimeArray.frag.out Test/baseResults/hlsl.partialInit.frag.out Test/baseResults/hlsl.PointSize.geom.out Test/baseResults/hlsl.samplecmp.array.dx10.frag.out Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out Test/baseResults/hlsl.semantic.geom.out Test/baseResults/hlsl.semantic.vert.out Test/baseResults/hlsl.structarray.flatten.frag.out Test/baseResults/hlsl.structbuffer.append.fn.frag.out Test/baseResults/hlsl.structbuffer.atomics.frag.out Test/baseResults/hlsl.structbuffer.fn.frag.out Test/baseResults/hlsl.structcopy.comp.out Test/baseResults/hlsl.structcopylogical.comp.out Test/baseResults/hlsl.struct.frag.out Test/baseResults/hlsl.struct.split.assign.frag.out Test/baseResults/hlsl.texture.struct.frag.out Test/baseResults/hlsl.tristream-append.geom.out Test/baseResults/iomap.mismatchedBufferTypes.vert.out Test/baseResults/link.vk.crossStageIO.0.vert.out Test/baseResults/link.vk.crossStageIO.1.vert.out Test/baseResults/link.vk.differentPC.0.0.frag.out Test/baseResults/link.vk.differentPC.1.0.frag.out Test/baseResults/link.vk.missingCrossStageIO.0.vert.out Test/baseResults/link.vk.multiUnitLayout.2.comp.out Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out Test/baseResults/spv.130.frag.out Test/baseResults/spv.140.frag.out Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out Test/baseResults/spv.400.frag.out Test/baseResults/spv.430.vert.out Test/baseResults/spv.450.tesc.out Test/baseResults/spv.8bit-16bit-construction.frag.out Test/baseResults/spv.AofA.frag.out Test/baseResults/spv.atomicFloat.comp.out Test/baseResults/spv.controlFlowAttributes.frag.out Test/baseResults/spv.dataOut.frag.out Test/baseResults/spv.exportFunctions.comp.out Test/baseResults/spv.float16Fetch.frag.out Test/baseResults/spv.float16.frag.out Test/baseResults/spv.float64.frag.out Test/baseResults/spv.floatFetch.frag.out Test/baseResults/spv.functionNestedOpaque.vert.out Test/baseResults/spv.imageAtomic64.frag.out Test/baseResults/spv.image.frag.out Test/baseResults/spv.int64.frag.out Test/baseResults/spv.memoryQualifier.frag.out Test/baseResults/spv.newTexture.frag.out Test/baseResults/spv.nvgpushader5.frag.out Test/baseResults/spv.paramMemory.420.frag.out Test/baseResults/spv.paramMemory.frag.out Test/baseResults/spv.queryL.frag.out Test/baseResults/spv.separate.frag.out Test/baseResults/spv.sparseTextureClamp.frag.out Test/baseResults/spv.sparseTexture.frag.out Test/baseResults/vk.relaxed.errorcheck.vert.out Test/baseResults/vk.relaxed.syntaxerror.vert.out glslang-16.0.0/Test/baseResults/variableArrayIndex.frag.out000066400000000000000000000332071506534232700236770ustar00rootroot00000000000000variableArrayIndex.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:29 Function Definition: main( ( global void) 0:29 Function Parameters: 0:? Sequence 0:32 Sequence 0:32 move second child to first child ( temp int) 0:32 'iLocal' ( temp int) 0:32 'Count' ( uniform int) 0:34 Test condition and select ( temp void) 0:34 Condition 0:34 Compare Greater Than ( temp bool) 0:34 i: direct index for structure ( global int) 0:34 direct index ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 s2_1: direct index for structure ( global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 'foo3' ( uniform structure{ global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 true case 0:35 move second child to first child ( temp float) 0:35 'scale' ( temp float) 0:35 f: direct index for structure ( global float) 0:35 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:35 indirect index ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 'foo2' ( uniform 5-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 add ( temp int) 0:35 add ( temp int) 0:35 i: direct index for structure ( global int) 0:35 indirect index ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 s2_1: direct index for structure ( global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 'foo3' ( uniform structure{ global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 Constant: 0:35 0 (const int) 0:35 i: direct index for structure ( global int) 0:35 'foo' ( uniform structure{ global int i, global float f}) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Pre-Increment ( temp int) 0:35 'iLocal' ( temp int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 1 (const int) 0:34 false case 0:37 move second child to first child ( temp float) 0:37 'scale' ( temp float) 0:37 f: direct index for structure ( global float) 0:37 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:37 direct index ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:37 s2_1: direct index for structure ( global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:37 'foo3' ( uniform structure{ global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 Constant: 0:37 1 (const int) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:43 vector-scale ( temp 4-component vector of float) 0:43 'scale' ( temp float) 0:43 texture ( global 4-component vector of float) 0:43 'sampler' ( uniform sampler2D) 0:43 'coord' ( smooth in 2-component vector of float) 0:45 Sequence 0:45 move second child to first child ( temp 3-element array of 2-component vector of float) 0:45 'constructed' ( temp 3-element array of 2-component vector of float) 0:45 Construct vec2 ( temp 3-element array of 2-component vector of float) 0:45 'coord' ( smooth in 2-component vector of float) 0:45 Construct vec2 ( temp 2-component vector of float) 0:45 'scale' ( temp float) 0:45 Constant: 0:45 1.000000 0:45 2.000000 0:46 add second child into first child ( temp 4-component vector of float) 0:46 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:46 Construct vec4 ( temp 4-component vector of float) 0:46 indirect index ( temp 2-component vector of float) 0:46 'constructed' ( temp 3-element array of 2-component vector of float) 0:46 i: direct index for structure ( global int) 0:46 'foo' ( uniform structure{ global int i, global float f}) 0:46 Constant: 0:46 0 (const int) 0:46 indirect index ( temp 2-component vector of float) 0:46 'constructed' ( temp 3-element array of 2-component vector of float) 0:46 i: direct index for structure ( global int) 0:46 'foo' ( uniform structure{ global int i, global float f}) 0:46 Constant: 0:46 0 (const int) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'foo' ( uniform structure{ global int i, global float f}) 0:? 'foo2' ( uniform 5-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'foo3' ( uniform structure{ global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'Count' ( uniform int) Linked fragment stage: Shader version: 130 0:? Sequence 0:29 Function Definition: main( ( global void) 0:29 Function Parameters: 0:? Sequence 0:32 Sequence 0:32 move second child to first child ( temp int) 0:32 'iLocal' ( temp int) 0:32 'Count' ( uniform int) 0:34 Test condition and select ( temp void) 0:34 Condition 0:34 Compare Greater Than ( temp bool) 0:34 i: direct index for structure ( global int) 0:34 direct index ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 s2_1: direct index for structure ( global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 'foo3' ( uniform structure{ global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 1 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 Constant: 0:34 0 (const int) 0:34 true case 0:35 move second child to first child ( temp float) 0:35 'scale' ( temp float) 0:35 f: direct index for structure ( global float) 0:35 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:35 indirect index ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 'foo2' ( uniform 5-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 add ( temp int) 0:35 add ( temp int) 0:35 i: direct index for structure ( global int) 0:35 indirect index ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 s2_1: direct index for structure ( global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 'foo3' ( uniform structure{ global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:35 Constant: 0:35 0 (const int) 0:35 i: direct index for structure ( global int) 0:35 'foo' ( uniform structure{ global int i, global float f}) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 0 (const int) 0:35 Constant: 0:35 2 (const int) 0:35 Pre-Increment ( temp int) 0:35 'iLocal' ( temp int) 0:35 Constant: 0:35 2 (const int) 0:35 Constant: 0:35 1 (const int) 0:34 false case 0:37 move second child to first child ( temp float) 0:37 'scale' ( temp float) 0:37 f: direct index for structure ( global float) 0:37 s1_1: direct index for structure ( global structure{ global int i, global float f}) 0:37 direct index ( temp structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:37 s2_1: direct index for structure ( global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:37 'foo3' ( uniform structure{ global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 0 (const int) 0:37 Constant: 0:37 2 (const int) 0:37 Constant: 0:37 1 (const int) 0:43 move second child to first child ( temp 4-component vector of float) 0:43 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:43 vector-scale ( temp 4-component vector of float) 0:43 'scale' ( temp float) 0:43 texture ( global 4-component vector of float) 0:43 'sampler' ( uniform sampler2D) 0:43 'coord' ( smooth in 2-component vector of float) 0:45 Sequence 0:45 move second child to first child ( temp 3-element array of 2-component vector of float) 0:45 'constructed' ( temp 3-element array of 2-component vector of float) 0:45 Construct vec2 ( temp 3-element array of 2-component vector of float) 0:45 'coord' ( smooth in 2-component vector of float) 0:45 Construct vec2 ( temp 2-component vector of float) 0:45 'scale' ( temp float) 0:45 Constant: 0:45 1.000000 0:45 2.000000 0:46 add second child into first child ( temp 4-component vector of float) 0:46 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:46 Construct vec4 ( temp 4-component vector of float) 0:46 indirect index ( temp 2-component vector of float) 0:46 'constructed' ( temp 3-element array of 2-component vector of float) 0:46 i: direct index for structure ( global int) 0:46 'foo' ( uniform structure{ global int i, global float f}) 0:46 Constant: 0:46 0 (const int) 0:46 indirect index ( temp 2-component vector of float) 0:46 'constructed' ( temp 3-element array of 2-component vector of float) 0:46 i: direct index for structure ( global int) 0:46 'foo' ( uniform structure{ global int i, global float f}) 0:46 Constant: 0:46 0 (const int) 0:? Linker Objects 0:? 'sampler' ( uniform sampler2D) 0:? 'coord' ( smooth in 2-component vector of float) 0:? 'foo' ( uniform structure{ global int i, global float f}) 0:? 'foo2' ( uniform 5-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'foo3' ( uniform structure{ global 3-element array of structure{ global int i, global float f, global structure{ global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{ global int i, global float f} s1_1}) 0:? 'Count' ( uniform int) glslang-16.0.0/Test/baseResults/variadic.comp.out000066400000000000000000000023041506534232700217160ustar00rootroot00000000000000variadic.comp ERROR: 0:3: '...' : variadic argument specifier is only available for builtins ERROR: 0:10: 'foo' : no matching overloaded function found ERROR: 0:11: 'foo' : no matching overloaded function found ERROR: 3 compilation errors. No code generated. Shader version: 450 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:3 Function Definition: foo(i1; ( global void) 0:3 Function Parameters: 0:3 'n' ( in int) 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: foo(i1; ( global void) 0:9 Constant: 0:9 7 (const int) 0:10 Constant: 0:10 0.000000 0:11 Constant: 0:11 0.000000 0:? Linker Objects Linked compute stage: Shader version: 450 local_size = (1, 1, 1) ERROR: node is still EOpNull! 0:3 Function Definition: foo(i1; ( global void) 0:3 Function Parameters: 0:3 'n' ( in int) 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Function Call: foo(i1; ( global void) 0:9 Constant: 0:9 7 (const int) 0:10 Constant: 0:10 0.000000 0:11 Constant: 0:11 0.000000 0:? Linker Objects glslang-16.0.0/Test/baseResults/varyingArray.frag.out000066400000000000000000000141071506534232700225770ustar00rootroot00000000000000varyingArray.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release WARNING: 0:4: varying deprecated in version 130; may be removed in future release WARNING: 0:6: varying deprecated in version 130; may be removed in future release WARNING: 0:8: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'texColor' ( temp 4-component vector of float) 0:12 texture ( global 4-component vector of float) 0:12 'texSampler2D' ( uniform sampler2D) 0:12 Construct vec2 ( temp 2-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 direct index ( smooth temp 4-component vector of float TexCoord) 0:12 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:12 Constant: 0:12 4 (const int) 0:12 direct index ( smooth temp 4-component vector of float TexCoord) 0:12 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:12 Constant: 0:12 5 (const int) 0:14 add second child into first child ( temp 4-component vector of float) 0:14 'texColor' ( temp 4-component vector of float) 0:14 'color' ( smooth in 4-component vector of float) 0:16 move second child to first child ( temp float) 0:16 direct index ( temp float) 0:16 'texColor' ( temp 4-component vector of float) 0:16 Constant: 0:16 3 (const int) 0:16 'alpha' ( smooth in float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:18 add ( temp 4-component vector of float) 0:18 add ( temp 4-component vector of float) 0:18 add ( temp 4-component vector of float) 0:18 direct index ( smooth temp 4-component vector of float) 0:18 'foo' ( smooth in 3-element array of 4-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:18 direct index ( smooth temp 4-component vector of float TexCoord) 0:18 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( smooth temp 4-component vector of float TexCoord) 0:18 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:18 Constant: 0:18 4 (const int) 0:18 'texColor' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'color' ( smooth in 4-component vector of float) 0:? 'alpha' ( smooth in float) 0:? 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'foo' ( smooth in 3-element array of 4-component vector of float) Linked fragment stage: Shader version: 130 0:? Sequence 0:10 Function Definition: main( ( global void) 0:10 Function Parameters: 0:12 Sequence 0:12 Sequence 0:12 move second child to first child ( temp 4-component vector of float) 0:12 'texColor' ( temp 4-component vector of float) 0:12 texture ( global 4-component vector of float) 0:12 'texSampler2D' ( uniform sampler2D) 0:12 Construct vec2 ( temp 2-component vector of float) 0:12 add ( temp 4-component vector of float) 0:12 direct index ( smooth temp 4-component vector of float TexCoord) 0:12 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:12 Constant: 0:12 4 (const int) 0:12 direct index ( smooth temp 4-component vector of float TexCoord) 0:12 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:12 Constant: 0:12 5 (const int) 0:14 add second child into first child ( temp 4-component vector of float) 0:14 'texColor' ( temp 4-component vector of float) 0:14 'color' ( smooth in 4-component vector of float) 0:16 move second child to first child ( temp float) 0:16 direct index ( temp float) 0:16 'texColor' ( temp 4-component vector of float) 0:16 Constant: 0:16 3 (const int) 0:16 'alpha' ( smooth in float) 0:18 move second child to first child ( temp 4-component vector of float) 0:18 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:18 add ( temp 4-component vector of float) 0:18 add ( temp 4-component vector of float) 0:18 add ( temp 4-component vector of float) 0:18 direct index ( smooth temp 4-component vector of float) 0:18 'foo' ( smooth in 3-element array of 4-component vector of float) 0:18 Constant: 0:18 1 (const int) 0:18 direct index ( smooth temp 4-component vector of float TexCoord) 0:18 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:18 Constant: 0:18 0 (const int) 0:18 direct index ( smooth temp 4-component vector of float TexCoord) 0:18 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:18 Constant: 0:18 4 (const int) 0:18 'texColor' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'color' ( smooth in 4-component vector of float) 0:? 'alpha' ( smooth in float) 0:? 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'foo' ( smooth in 3-element array of 4-component vector of float) glslang-16.0.0/Test/baseResults/varyingArrayIndirect.frag.out000066400000000000000000000151351506534232700242630ustar00rootroot00000000000000varyingArrayIndirect.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release WARNING: 0:4: varying deprecated in version 130; may be removed in future release WARNING: 0:6: varying deprecated in version 130; may be removed in future release WARNING: 0:8: varying deprecated in version 130; may be removed in future release Shader version: 130 0:? Sequence 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'texColor' ( temp 4-component vector of float) 0:14 texture ( global 4-component vector of float) 0:14 'texSampler2D' ( uniform sampler2D) 0:14 Construct vec2 ( temp 2-component vector of float) 0:14 add ( temp 4-component vector of float) 0:14 add ( temp 4-component vector of float) 0:14 indirect index ( smooth temp 4-component vector of float) 0:14 'userIn' ( smooth in 2-element array of 4-component vector of float) 0:14 'b' ( uniform int) 0:14 indirect index ( smooth temp 4-component vector of float TexCoord) 0:14 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:14 'a' ( uniform int) 0:14 direct index ( smooth temp 4-component vector of float TexCoord) 0:14 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:14 Constant: 0:14 5 (const int) 0:16 add second child into first child ( temp 4-component vector of float) 0:16 'texColor' ( temp 4-component vector of float) 0:16 'color' ( smooth in 4-component vector of float) 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 'texColor' ( temp 4-component vector of float) 0:18 Constant: 0:18 3 (const int) 0:18 'alpha' ( smooth in float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:20 add ( temp 4-component vector of float) 0:20 add ( temp 4-component vector of float) 0:20 add ( temp 4-component vector of float) 0:20 direct index ( smooth temp 4-component vector of float TexCoord) 0:20 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:20 Constant: 0:20 0 (const int) 0:20 indirect index ( smooth temp 4-component vector of float TexCoord) 0:20 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:20 'b' ( uniform int) 0:20 'texColor' ( temp 4-component vector of float) 0:20 indirect index ( smooth temp 4-component vector of float) 0:20 'userIn' ( smooth in 2-element array of 4-component vector of float) 0:20 'a' ( uniform int) 0:? Linker Objects 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'color' ( smooth in 4-component vector of float) 0:? 'alpha' ( smooth in float) 0:? 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'userIn' ( smooth in 2-element array of 4-component vector of float) 0:? 'a' ( uniform int) 0:? 'b' ( uniform int) Linked fragment stage: Shader version: 130 0:? Sequence 0:12 Function Definition: main( ( global void) 0:12 Function Parameters: 0:14 Sequence 0:14 Sequence 0:14 move second child to first child ( temp 4-component vector of float) 0:14 'texColor' ( temp 4-component vector of float) 0:14 texture ( global 4-component vector of float) 0:14 'texSampler2D' ( uniform sampler2D) 0:14 Construct vec2 ( temp 2-component vector of float) 0:14 add ( temp 4-component vector of float) 0:14 add ( temp 4-component vector of float) 0:14 indirect index ( smooth temp 4-component vector of float) 0:14 'userIn' ( smooth in 2-element array of 4-component vector of float) 0:14 'b' ( uniform int) 0:14 indirect index ( smooth temp 4-component vector of float TexCoord) 0:14 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:14 'a' ( uniform int) 0:14 direct index ( smooth temp 4-component vector of float TexCoord) 0:14 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:14 Constant: 0:14 5 (const int) 0:16 add second child into first child ( temp 4-component vector of float) 0:16 'texColor' ( temp 4-component vector of float) 0:16 'color' ( smooth in 4-component vector of float) 0:18 move second child to first child ( temp float) 0:18 direct index ( temp float) 0:18 'texColor' ( temp 4-component vector of float) 0:18 Constant: 0:18 3 (const int) 0:18 'alpha' ( smooth in float) 0:20 move second child to first child ( temp 4-component vector of float) 0:20 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:20 add ( temp 4-component vector of float) 0:20 add ( temp 4-component vector of float) 0:20 add ( temp 4-component vector of float) 0:20 direct index ( smooth temp 4-component vector of float TexCoord) 0:20 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:20 Constant: 0:20 0 (const int) 0:20 indirect index ( smooth temp 4-component vector of float TexCoord) 0:20 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:20 'b' ( uniform int) 0:20 'texColor' ( temp 4-component vector of float) 0:20 indirect index ( smooth temp 4-component vector of float) 0:20 'userIn' ( smooth in 2-element array of 4-component vector of float) 0:20 'a' ( uniform int) 0:? Linker Objects 0:? 'texSampler2D' ( uniform sampler2D) 0:? 'color' ( smooth in 4-component vector of float) 0:? 'alpha' ( smooth in float) 0:? 'gl_TexCoord' ( smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'userIn' ( smooth in 2-element array of 4-component vector of float) 0:? 'a' ( uniform int) 0:? 'b' ( uniform int) glslang-16.0.0/Test/baseResults/versionsClean.frag.out000066400000000000000000000031371506534232700227350ustar00rootroot00000000000000versionsClean.frag ERROR: #version: statement must appear first in es-profile shader; before comments or newlines ERROR: 0:34: '#version' : must occur first in shader ERROR: 2 compilation errors. No code generated. Shader version: 300 ERROR: node is still EOpNull! 0:41 Function Definition: main( ( global void) 0:41 Function Parameters: 0:43 Sequence 0:43 move second child to first child ( temp highp 4-component vector of float) 0:43 'foo' ( out highp 4-component vector of float) 0:43 Construct vec4 ( temp highp 4-component vector of float) 0:43 'color' ( smooth in highp 3-component vector of float) 0:43 Constant: 0:43 142.000000 0:44 Branch: Kill 0:? Linker Objects 0:? 'color' ( smooth in highp 3-component vector of float) 0:? 'foo' ( out highp 4-component vector of float) 0:? 'bar' ( uniform highp sampler2DArrayShadow) Linked fragment stage: Shader version: 300 ERROR: node is still EOpNull! 0:41 Function Definition: main( ( global void) 0:41 Function Parameters: 0:43 Sequence 0:43 move second child to first child ( temp highp 4-component vector of float) 0:43 'foo' ( out highp 4-component vector of float) 0:43 Construct vec4 ( temp highp 4-component vector of float) 0:43 'color' ( smooth in highp 3-component vector of float) 0:43 Constant: 0:43 142.000000 0:44 Branch: Kill 0:? Linker Objects 0:? 'color' ( smooth in highp 3-component vector of float) 0:? 'foo' ( out highp 4-component vector of float) 0:? 'bar' ( uniform highp sampler2DArrayShadow) glslang-16.0.0/Test/baseResults/versionsClean.vert.out000066400000000000000000000101351506534232700227720ustar00rootroot00000000000000versionsClean.vert Shader version: 420 0:? Sequence 0:40 Function Definition: main( ( global void) 0:40 Function Parameters: 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:42 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) 0:42 Constant: 0:42 0 (const uint) 0:42 Construct vec4 ( temp 4-component vector of float) 0:42 'color' ( in 3-component vector of float) 0:42 Constant: 0:42 142.000000 0:? Linker Objects 0:? 'color' ( in 3-component vector of float) 0:? 'foo' ( uniform sampler2DRect) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 420 0:? Sequence 0:40 Function Definition: main( ( global void) 0:40 Function Parameters: 0:42 Sequence 0:42 move second child to first child ( temp 4-component vector of float) 0:42 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:42 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) 0:42 Constant: 0:42 0 (const uint) 0:42 Construct vec4 ( temp 4-component vector of float) 0:42 'color' ( in 3-component vector of float) 0:42 Constant: 0:42 142.000000 0:? Linker Objects 0:? 'color' ( in 3-component vector of float) 0:? 'foo' ( uniform sampler2DRect) 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/baseResults/versionsErrors.frag.out000066400000000000000000000031141506534232700231620ustar00rootroot00000000000000versionsErrors.frag ERROR: #version: versions before 150 do not allow a profile token ERROR: 0:38: 'attribute' : not supported in this stage: fragment ERROR: 0:40: 'sampler2DRect' : Reserved word. ERROR: 0:44: 'floating-point suffix' : not supported for this version or the enabled extensions ERROR: 4 compilation errors. No code generated. Shader version: 110 ERROR: node is still EOpNull! 0:42 Function Definition: main( ( global void) 0:42 Function Parameters: 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:44 Construct vec4 ( temp 4-component vector of float) 0:44 'color' ( smooth in 3-component vector of float) 0:44 Constant: 0:44 142.000000 0:45 Branch: Kill 0:? Linker Objects 0:? 'color' ( smooth in 3-component vector of float) 0:? 'foo' ( uniform sampler2DRect) Linked fragment stage: Shader version: 110 ERROR: node is still EOpNull! 0:42 Function Definition: main( ( global void) 0:42 Function Parameters: 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:44 Construct vec4 ( temp 4-component vector of float) 0:44 'color' ( smooth in 3-component vector of float) 0:44 Constant: 0:44 142.000000 0:45 Branch: Kill 0:? Linker Objects 0:? 'color' ( smooth in 3-component vector of float) 0:? 'foo' ( uniform sampler2DRect) glslang-16.0.0/Test/baseResults/versionsErrors.vert.out000066400000000000000000000053601506534232700232300ustar00rootroot00000000000000versionsErrors.vert WARNING: 0:38: attribute deprecated in version 130; may be removed in future release ERROR: 0:38: 'attribute' : no longer supported in core profile; removed in version 420 ERROR: 0:45: 'discard' : not supported in this stage: vertex ERROR: 2 compilation errors. No code generated. Shader version: 420 Requested GL_ARB_texture_rectangle ERROR: node is still EOpNull! 0:42 Function Definition: main( ( global void) 0:42 Function Parameters: 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:44 '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:44 Constant: 0:44 0 (const uint) 0:44 Construct vec4 ( temp 4-component vector of float) 0:44 'color' ( in 3-component vector of float) 0:44 Constant: 0:44 142.000000 0:45 Branch: Kill 0:? Linker Objects 0:? 'color' ( in 3-component vector of float) 0:? 'foo' ( uniform sampler2DRect) 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: 420 Requested GL_ARB_texture_rectangle ERROR: node is still EOpNull! 0:42 Function Definition: main( ( global void) 0:42 Function Parameters: 0:44 Sequence 0:44 move second child to first child ( temp 4-component vector of float) 0:44 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) 0:44 '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:44 Constant: 0:44 0 (const uint) 0:44 Construct vec4 ( temp 4-component vector of float) 0:44 'color' ( in 3-component vector of float) 0:44 Constant: 0:44 142.000000 0:45 Branch: Kill 0:? Linker Objects 0:? 'color' ( in 3-component vector of float) 0:? 'foo' ( uniform sampler2DRect) 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) glslang-16.0.0/Test/baseResults/vk.relaxed.changeSet.vert.out000066400000000000000000000352031506534232700241250ustar00rootroot00000000000000vk.relaxed.changeSet.vert Shader version: 460 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp highp 4-component vector of float) 0:13 'Color' ( smooth out highp 4-component vector of float) 0:13 'aColor' ( in highp 4-component vector of float) 0:14 move second child to first child ( temp highp 2-component vector of float) 0:14 'UV' ( smooth out highp 2-component vector of float) 0:14 'aUV' ( in highp 2-component vector of float) 0:15 move second child to first child ( temp highp 4-component vector of float) 0:15 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:15 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:15 Constant: 0:15 0 (const uint) 0:15 matrix-times-vector ( temp highp 4-component vector of float) 0:15 projectionMatrix: direct index for structure ( uniform highp 4X4 matrix of float) 0:15 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4X4 matrix of float projectionMatrix}) 0:15 Constant: 0:15 0 (const uint) 0:15 Construct vec4 ( temp highp 4-component vector of float) 0:15 'aPos' ( in highp 2-component vector of float) 0:15 Constant: 0:15 0.000000 0:15 Constant: 0:15 1.000000 0:? Linker Objects 0:? 'aPos' ( in highp 2-component vector of float) 0:? 'aUV' ( in highp 2-component vector of float) 0:? 'aColor' ( in highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4X4 matrix of float projectionMatrix}) 0:? 'Color' ( smooth out highp 4-component vector of float) 0:? 'UV' ( smooth out highp 2-component vector of float) 0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) 0:? 'gl_VertexIndex' ( in int VertexIndex) 0:? 'gl_InstanceIndex' ( in int InstanceIndex) vk.relaxed.changeSet.frag Shader version: 460 gl_FragCoord origin is upper left 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 highp 4-component vector of float) 0:12 'fragColor' (layout( location=0) out highp 4-component vector of float) 0:12 vector-scale ( temp highp 4-component vector of float) 0:12 'Color' ( smooth in highp 4-component vector of float) 0:12 direct index ( temp highp float) 0:12 texture ( global highp 4-component vector of float) 0:12 'sTexture' ( uniform highp sampler2D) 0:12 vector swizzle ( temp highp 2-component vector of float) 0:12 'UV' ( smooth in highp 2-component vector of float) 0:12 Sequence 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:? Linker Objects 0:? 'fragColor' (layout( location=0) out highp 4-component vector of float) 0:? 'sTexture' ( uniform highp sampler2D) 0:? 'Color' ( smooth in highp 4-component vector of float) 0:? 'UV' ( smooth in highp 2-component vector of float) Linked vertex stage: Linked fragment stage: Shader version: 460 0:? Sequence 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence 0:13 move second child to first child ( temp highp 4-component vector of float) 0:13 'Color' ( smooth out highp 4-component vector of float) 0:13 'aColor' ( in highp 4-component vector of float) 0:14 move second child to first child ( temp highp 2-component vector of float) 0:14 'UV' ( smooth out highp 2-component vector of float) 0:14 'aUV' ( in highp 2-component vector of float) 0:15 move second child to first child ( temp highp 4-component vector of float) 0:15 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) 0:15 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) 0:15 Constant: 0:15 0 (const uint) 0:15 matrix-times-vector ( temp highp 4-component vector of float) 0:15 projectionMatrix: direct index for structure ( uniform highp 4X4 matrix of float) 0:15 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4X4 matrix of float projectionMatrix}) 0:15 Constant: 0:15 0 (const uint) 0:15 Construct vec4 ( temp highp 4-component vector of float) 0:15 'aPos' ( in highp 2-component vector of float) 0:15 Constant: 0:15 0.000000 0:15 Constant: 0:15 1.000000 0:? Linker Objects 0:? 'aPos' ( in highp 2-component vector of float) 0:? 'aUV' ( in highp 2-component vector of float) 0:? 'aColor' ( in highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4X4 matrix of float projectionMatrix}) 0:? 'Color' ( smooth out highp 4-component vector of float) 0:? 'UV' ( smooth out highp 2-component vector of float) 0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) 0:? 'gl_VertexIndex' ( in int VertexIndex) 0:? 'gl_InstanceIndex' ( in int InstanceIndex) Shader version: 460 gl_FragCoord origin is upper left 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 highp 4-component vector of float) 0:12 'fragColor' (layout( location=0) out highp 4-component vector of float) 0:12 vector-scale ( temp highp 4-component vector of float) 0:12 'Color' ( smooth in highp 4-component vector of float) 0:12 direct index ( temp highp float) 0:12 texture ( global highp 4-component vector of float) 0:12 'sTexture' ( uniform highp sampler2D) 0:12 vector swizzle ( temp highp 2-component vector of float) 0:12 'UV' ( smooth in highp 2-component vector of float) 0:12 Sequence 0:12 Constant: 0:12 0 (const int) 0:12 Constant: 0:12 1 (const int) 0:12 Constant: 0:12 0 (const int) 0:? Linker Objects 0:? 'fragColor' (layout( location=0) out highp 4-component vector of float) 0:? 'sTexture' ( uniform highp sampler2D) 0:? 'Color' ( smooth in highp 4-component vector of float) 0:? 'UV' ( smooth in highp 2-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 9 11 15 17 24 34 44 45 Source GLSL 460 Name 4 "main" Name 9 "Color" Name 11 "aColor" Name 15 "UV" Name 17 "aUV" Name 22 "gl_PerVertex" MemberName 22(gl_PerVertex) 0 "gl_Position" MemberName 22(gl_PerVertex) 1 "gl_PointSize" MemberName 22(gl_PerVertex) 2 "gl_ClipDistance" MemberName 22(gl_PerVertex) 3 "gl_CullDistance" Name 24 "" Name 28 "gl_DefaultUniformBlock" MemberName 28(gl_DefaultUniformBlock) 0 "projectionMatrix" Name 30 "" Name 34 "aPos" Name 44 "gl_VertexIndex" Name 45 "gl_InstanceIndex" Decorate 9(Color) Location 0 Decorate 11(aColor) Location 2 Decorate 15(UV) Location 1 Decorate 17(aUV) Location 1 Decorate 22(gl_PerVertex) Block MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance Decorate 28(gl_DefaultUniformBlock) Block MemberDecorate 28(gl_DefaultUniformBlock) 0 ColMajor MemberDecorate 28(gl_DefaultUniformBlock) 0 MatrixStride 16 MemberDecorate 28(gl_DefaultUniformBlock) 0 Offset 0 Decorate 30 Binding 0 Decorate 30 DescriptorSet 0 Decorate 34(aPos) Location 0 Decorate 44(gl_VertexIndex) BuiltIn VertexIndex Decorate 45(gl_InstanceIndex) BuiltIn InstanceIndex 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(aColor): 10(ptr) Variable Input 13: TypeVector 6(float) 2 14: TypePointer Output 13(fvec2) 15(UV): 14(ptr) Variable Output 16: TypePointer Input 13(fvec2) 17(aUV): 16(ptr) Variable Input 19: TypeInt 32 0 20: 19(int) Constant 1 21: TypeArray 6(float) 20 22(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 21 21 23: TypePointer Output 22(gl_PerVertex) 24: 23(ptr) Variable Output 25: TypeInt 32 1 26: 25(int) Constant 0 27: TypeMatrix 7(fvec4) 4 28(gl_DefaultUniformBlock): TypeStruct 27 29: TypePointer Uniform 28(gl_DefaultUniformBlock) 30: 29(ptr) Variable Uniform 31: TypePointer Uniform 27 34(aPos): 16(ptr) Variable Input 36: 6(float) Constant 0 37: 6(float) Constant 1065353216 43: TypePointer Input 25(int) 44(gl_VertexIndex): 43(ptr) Variable Input 45(gl_InstanceIndex): 43(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(aColor) Store 9(Color) 12 18: 13(fvec2) Load 17(aUV) Store 15(UV) 18 32: 31(ptr) AccessChain 30 26 33: 27 Load 32 35: 13(fvec2) Load 34(aPos) 38: 6(float) CompositeExtract 35 0 39: 6(float) CompositeExtract 35 1 40: 7(fvec4) CompositeConstruct 38 39 36 37 41: 7(fvec4) MatrixTimesVector 33 40 42: 8(ptr) AccessChain 24 26 Store 42 41 Return FunctionEnd // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 9 11 20 ExecutionMode 4 OriginUpperLeft Source GLSL 460 Name 4 "main" Name 9 "fragColor" Name 11 "Color" Name 16 "sTexture" Name 20 "UV" Decorate 9(fragColor) Location 0 Decorate 11(Color) Location 0 Decorate 16(sTexture) Binding 0 Decorate 16(sTexture) DescriptorSet 1 Decorate 20(UV) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Output 7(fvec4) 9(fragColor): 8(ptr) Variable Output 10: TypePointer Input 7(fvec4) 11(Color): 10(ptr) Variable Input 13: TypeImage 6(float) 2D sampled format:Unknown 14: TypeSampledImage 13 15: TypePointer UniformConstant 14 16(sTexture): 15(ptr) Variable UniformConstant 18: TypeVector 6(float) 2 19: TypePointer Input 18(fvec2) 20(UV): 19(ptr) Variable Input 23: TypeInt 32 0 24: 23(int) Constant 0 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(Color) 17: 14 Load 16(sTexture) 21: 18(fvec2) Load 20(UV) 22: 7(fvec4) ImageSampleImplicitLod 17 21 25: 6(float) CompositeExtract 22 0 26: 7(fvec4) VectorTimesScalar 12 25 Store 9(fragColor) 26 Return FunctionEnd glslang-16.0.0/Test/baseResults/vk.relaxed.errorcheck.vert.out000066400000000000000000000152141506534232700243530ustar00rootroot00000000000000vk.relaxed.errorcheck.vert Shader version: 460 0:? Sequence 0:9 Function Definition: foo( ( global highp 4-component vector of float) 0:9 Function Parameters: 0:10 Sequence 0:10 Branch: Return with expression 0:10 vector swizzle ( temp highp 4-component vector of float) 0:10 a: direct index for structure ( uniform highp 2-component vector of float) 0:10 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a}) 0:10 Constant: 0:10 0 (const uint) 0:10 Sequence 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 1 (const int) 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp highp 4-component vector of float) 0:14 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:14 Function Call: foo( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a}) 0:? 'gl_VertexIndex' ( in int VertexIndex) 0:? 'gl_InstanceIndex' ( in int InstanceIndex) vk.relaxed.errorcheck.frag ERROR: 0:11: 'test' : Redeclaration: already declared as " uniform highp float" ERROR: 1 compilation errors. No code generated. Shader version: 460 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:13 Function Definition: foo( ( global highp 4-component vector of float) 0:13 Function Parameters: 0:14 Sequence 0:14 Branch: Return with expression 0:14 add ( temp highp 4-component vector of float) 0:14 a: direct index for structure ( uniform highp 4-component vector of float) 0:14 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) 0:14 Constant: 0:14 0 (const uint) 0:14 Construct vec4 ( temp highp 4-component vector of float) 0:14 test: direct index for structure ( uniform highp float) 0:14 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) 0:14 Constant: 0:14 1 (const uint) 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of float) 0:18 'o' ( out highp 4-component vector of float) 0:18 add ( temp highp 4-component vector of float) 0:18 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:18 Function Call: foo( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:? 'o' ( out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) Linked vertex stage: Linked fragment stage: ERROR: Linking fragment stage: Types must match: a: " uniform highp 2-component vector of float" in stage vertex versus " uniform highp 4-component vector of float" in stage fragment Shader version: 460 0:? Sequence 0:9 Function Definition: foo( ( global highp 4-component vector of float) 0:9 Function Parameters: 0:10 Sequence 0:10 Branch: Return with expression 0:10 vector swizzle ( temp highp 4-component vector of float) 0:10 a: direct index for structure ( uniform highp 2-component vector of float) 0:10 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a, uniform highp float test}) 0:10 Constant: 0:10 0 (const uint) 0:10 Sequence 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 1 (const int) 0:10 Constant: 0:10 0 (const int) 0:10 Constant: 0:10 1 (const int) 0:13 Function Definition: main( ( global void) 0:13 Function Parameters: 0:14 Sequence 0:14 move second child to first child ( temp highp 4-component vector of float) 0:14 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:14 Function Call: foo( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a, uniform highp float test}) 0:? 'gl_VertexIndex' ( in int VertexIndex) 0:? 'gl_InstanceIndex' ( in int InstanceIndex) Shader version: 460 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:13 Function Definition: foo( ( global highp 4-component vector of float) 0:13 Function Parameters: 0:14 Sequence 0:14 Branch: Return with expression 0:14 add ( temp highp 4-component vector of float) 0:14 a: direct index for structure ( uniform highp 4-component vector of float) 0:14 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a, uniform highp float test}) 0:14 Constant: 0:14 0 (const uint) 0:14 Construct vec4 ( temp highp 4-component vector of float) 0:14 test: direct index for structure ( uniform highp float) 0:14 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a, uniform highp float test}) 0:14 Constant: 0:14 1 (const uint) 0:17 Function Definition: main( ( global void) 0:17 Function Parameters: 0:18 Sequence 0:18 move second child to first child ( temp highp 4-component vector of float) 0:18 'o' ( out highp 4-component vector of float) 0:18 add ( temp highp 4-component vector of float) 0:18 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:18 Function Call: foo( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:? 'o' ( out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a, uniform highp float test}) Validation failed SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/vk.relaxed.frag.out000066400000000000000000002070141506534232700221650ustar00rootroot00000000000000vk.relaxed.frag WARNING: 0:7: 'b' : Ignoring initializer for uniform WARNING: 0:8: 'c' : ignoring layout qualifier for uniform location Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:43 Function Definition: bar( ( global highp uint) 0:43 Function Parameters: 0:44 Sequence 0:44 Sequence 0:44 move second child to first child ( temp highp uint) 0:44 'j' ( temp highp uint) 0:44 Constant: 0:44 0 (const uint) 0:45 move second child to first child ( temp highp uint) 0:45 'j' ( temp highp uint) 0:45 AtomicAdd ( global highp uint) 0:45 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:45 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:45 Constant: 0:45 0 (const uint) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp highp uint) 0:46 'j' ( temp highp uint) 0:46 subtract ( temp highp uint) 0:46 AtomicAdd ( global highp uint) 0:46 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:46 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:46 Constant: 0:46 0 (const uint) 0:46 Constant: 0:46 4294967295 (const uint) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp highp uint) 0:47 'j' ( temp highp uint) 0:47 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:47 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:47 Constant: 0:47 0 (const uint) 0:49 move second child to first child ( temp highp uint) 0:49 'j' ( temp highp uint) 0:49 AtomicAdd ( global highp uint) 0:49 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:49 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:49 Constant: 0:49 0 (const uint) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp highp uint) 0:50 'j' ( temp highp uint) 0:50 AtomicAdd ( global highp uint) 0:50 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:50 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:50 Constant: 0:50 0 (const uint) 0:50 Constant: 0:50 4294967295 (const uint) 0:51 move second child to first child ( temp highp uint) 0:51 'j' ( temp highp uint) 0:51 AtomicSubtract ( global highp uint) 0:51 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:51 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:51 Constant: 0:51 0 (const uint) 0:51 Constant: 0:51 1 (const uint) 0:53 move second child to first child ( temp highp uint) 0:53 'j' ( temp highp uint) 0:53 AtomicMin ( global highp uint) 0:53 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:53 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:53 Constant: 0:53 0 (const uint) 0:53 'j' ( temp highp uint) 0:54 move second child to first child ( temp highp uint) 0:54 'j' ( temp highp uint) 0:54 AtomicMax ( global highp uint) 0:54 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:54 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:54 Constant: 0:54 0 (const uint) 0:54 'j' ( temp highp uint) 0:55 move second child to first child ( temp highp uint) 0:55 'j' ( temp highp uint) 0:55 AtomicAnd ( global highp uint) 0:55 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:55 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:55 Constant: 0:55 0 (const uint) 0:55 'j' ( temp highp uint) 0:57 move second child to first child ( temp highp uint) 0:57 'j' ( temp highp uint) 0:57 AtomicOr ( global highp uint) 0:57 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:57 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:57 Constant: 0:57 0 (const uint) 0:57 'j' ( temp highp uint) 0:58 move second child to first child ( temp highp uint) 0:58 'j' ( temp highp uint) 0:58 AtomicXor ( global highp uint) 0:58 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:58 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:58 Constant: 0:58 0 (const uint) 0:58 'j' ( temp highp uint) 0:60 move second child to first child ( temp highp uint) 0:60 'j' ( temp highp uint) 0:60 AtomicExchange ( global highp uint) 0:60 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:60 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:60 Constant: 0:60 0 (const uint) 0:60 'j' ( temp highp uint) 0:61 move second child to first child ( temp highp uint) 0:61 'j' ( temp highp uint) 0:61 AtomicCompSwap ( global highp uint) 0:61 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:61 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:61 Constant: 0:61 0 (const uint) 0:61 Constant: 0:61 0 (const uint) 0:61 'j' ( temp highp uint) 0:63 AtomicAdd ( global highp uint) 0:63 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:63 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:63 Constant: 0:63 1 (const uint) 0:63 Constant: 0:63 1 (const uint) 0:64 AtomicAdd ( global highp uint) 0:64 counter3: direct index for structure ( coherent volatile buffer highp uint) 0:64 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) 0:64 Constant: 0:64 0 (const uint) 0:64 Constant: 0:64 1 (const uint) 0:66 MemoryBarrierBuffer ( global void) 0:68 Branch: Return with expression 0:68 'j' ( temp highp uint) 0:71 Function Definition: foo( ( global highp 4-component vector of float) 0:71 Function Parameters: 0:72 Sequence 0:72 Sequence 0:72 move second child to first child ( temp highp float) 0:72 'f' ( temp highp float) 0:72 add ( temp highp float) 0:72 add ( temp highp float) 0:72 add ( temp highp float) 0:72 j: direct index for structure (layout( column_major std140) uniform highp float) 0:72 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) 0:72 Constant: 0:72 0 (const uint) 0:72 j: direct index for structure (layout( column_major std430) buffer highp float) 0:72 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) 0:72 Constant: 0:72 0 (const int) 0:72 y: direct index for structure ( global highp float) 0:72 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) 0:72 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:72 Constant: 0:72 4 (const uint) 0:72 Constant: 0:72 1 (const int) 0:72 Convert uint to float ( temp highp float) 0:72 z: direct index for structure ( global highp uint) 0:72 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) 0:72 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:72 Constant: 0:72 4 (const uint) 0:72 Constant: 0:72 2 (const int) 0:73 Sequence 0:73 move second child to first child ( temp highp 2-component vector of float) 0:73 'v2' ( temp highp 2-component vector of float) 0:73 add ( temp highp 2-component vector of float) 0:73 add ( temp highp 2-component vector of float) 0:73 b: direct index for structure ( uniform highp 2-component vector of float) 0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:73 Constant: 0:73 1 (const uint) 0:73 c: direct index for structure ( uniform highp 2-component vector of float) 0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:73 Constant: 0:73 2 (const uint) 0:73 x: direct index for structure ( global highp 2-component vector of float) 0:73 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) 0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:73 Constant: 0:73 4 (const uint) 0:73 Constant: 0:73 0 (const int) 0:74 Sequence 0:74 move second child to first child ( temp highp 4-component vector of float) 0:74 'v4' ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 a: direct index for structure ( uniform highp 4-component vector of float) 0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp highp 4-component vector of float) 0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) 0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:74 Constant: 0:74 3 (const uint) 0:74 Constant: 0:74 0 (const int) 0:74 direct index ( temp highp 4-component vector of float) 0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) 0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:74 Constant: 0:74 3 (const uint) 0:74 Constant: 0:74 1 (const int) 0:74 direct index ( temp highp 4-component vector of float) 0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) 0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:74 Constant: 0:74 3 (const uint) 0:74 Constant: 0:74 2 (const int) 0:74 k: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:74 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) 0:74 Constant: 0:74 1 (const uint) 0:74 k: direct index for structure (layout( column_major std430) buffer highp 4-component vector of float) 0:74 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) 0:74 Constant: 0:74 1 (const int) 0:74 texture ( global highp 4-component vector of float) 0:74 't1' ( uniform highp sampler2D) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 texture ( global highp 4-component vector of float) 0:? 'structUniform.t0' ( uniform highp sampler2D) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:75 Branch: Return with expression 0:75 component-wise multiply ( temp highp 4-component vector of float) 0:75 component-wise multiply ( temp highp 4-component vector of float) 0:75 Construct vec4 ( temp highp 4-component vector of float) 0:75 'f' ( temp highp float) 0:75 Construct vec4 ( temp highp 4-component vector of float) 0:75 'v2' ( temp highp 2-component vector of float) 0:75 Constant: 0:75 1.000000 0:75 Constant: 0:75 1.000000 0:75 'v4' ( temp highp 4-component vector of float) 0:78 Function Definition: baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21; ( global highp 4-component vector of float) 0:78 Function Parameters: 0:78 'samplers' ( in structure{ global 4-element array of highp int /*tn*/}) 0:78 'samplers.tn[0]' ( in highp sampler2D) 0:78 'samplers.tn[1]' ( in highp sampler2D) 0:78 'samplers.tn[2]' ( in highp sampler2D) 0:78 'samplers.tn[3]' ( in highp sampler2D) 0:79 Sequence 0:79 Branch: Return with expression 0:79 add ( temp highp 4-component vector of float) 0:79 add ( temp highp 4-component vector of float) 0:79 add ( temp highp 4-component vector of float) 0:79 texture ( global highp 4-component vector of float) 0:79 'samplers.tn[0]' ( in highp sampler2D) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 texture ( global highp 4-component vector of float) 0:79 'samplers.tn[1]' ( in highp sampler2D) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 texture ( global highp 4-component vector of float) 0:79 'samplers.tn[2]' ( in highp sampler2D) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 texture ( global highp 4-component vector of float) 0:79 'samplers.tn[3]' ( in highp sampler2D) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:82 Function Definition: main( ( global void) 0:82 Function Parameters: 0:83 Sequence 0:83 Sequence 0:83 move second child to first child ( temp highp float) 0:83 'j' ( temp highp float) 0:83 Convert uint to float ( temp highp float) 0:83 Function Call: bar( ( global highp uint) 0:84 move second child to first child ( temp highp 4-component vector of float) 0:84 'o' ( out highp 4-component vector of float) 0:84 add ( temp highp 4-component vector of float) 0:84 vector-scale ( temp highp 4-component vector of float) 0:84 'j' ( temp highp float) 0:84 Function Call: foo( ( global highp 4-component vector of float) 0:84 Function Call: baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21; ( global highp 4-component vector of float) 0:84 samplers: direct index for structure ( global structure{ global 4-element array of highp int /*tn*/}) 0:84 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) 0:84 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:84 Constant: 0:84 4 (const uint) 0:84 Constant: 0:84 4 (const int) 0:84 'structUniform.samplers.tn[0]' ( uniform highp sampler2D) 0:84 'structUniform.samplers.tn[1]' ( uniform highp sampler2D) 0:84 'structUniform.samplers.tn[2]' ( uniform highp sampler2D) 0:84 'structUniform.samplers.tn[3]' ( uniform highp sampler2D) 0:? Linker Objects 0:? 'o' ( out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:? 'structUniform.t0' ( uniform highp sampler2D) 0:? 'structUniform.samplers.tn[0]' ( uniform highp sampler2D) 0:? 'structUniform.samplers.tn[1]' ( uniform highp sampler2D) 0:? 'structUniform.samplers.tn[2]' ( uniform highp sampler2D) 0:? 'structUniform.samplers.tn[3]' ( uniform highp sampler2D) 0:? 't1' ( uniform highp sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) 0:? 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) 0:? 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:? 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) Linked fragment stage: Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:43 Function Definition: bar( ( global highp uint) 0:43 Function Parameters: 0:44 Sequence 0:44 Sequence 0:44 move second child to first child ( temp highp uint) 0:44 'j' ( temp highp uint) 0:44 Constant: 0:44 0 (const uint) 0:45 move second child to first child ( temp highp uint) 0:45 'j' ( temp highp uint) 0:45 AtomicAdd ( global highp uint) 0:45 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:45 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:45 Constant: 0:45 0 (const uint) 0:45 Constant: 0:45 1 (const uint) 0:46 move second child to first child ( temp highp uint) 0:46 'j' ( temp highp uint) 0:46 subtract ( temp highp uint) 0:46 AtomicAdd ( global highp uint) 0:46 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:46 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:46 Constant: 0:46 0 (const uint) 0:46 Constant: 0:46 4294967295 (const uint) 0:46 Constant: 0:46 1 (const uint) 0:47 move second child to first child ( temp highp uint) 0:47 'j' ( temp highp uint) 0:47 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:47 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:47 Constant: 0:47 0 (const uint) 0:49 move second child to first child ( temp highp uint) 0:49 'j' ( temp highp uint) 0:49 AtomicAdd ( global highp uint) 0:49 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:49 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:49 Constant: 0:49 0 (const uint) 0:49 Constant: 0:49 1 (const uint) 0:50 move second child to first child ( temp highp uint) 0:50 'j' ( temp highp uint) 0:50 AtomicAdd ( global highp uint) 0:50 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:50 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:50 Constant: 0:50 0 (const uint) 0:50 Constant: 0:50 4294967295 (const uint) 0:51 move second child to first child ( temp highp uint) 0:51 'j' ( temp highp uint) 0:51 AtomicSubtract ( global highp uint) 0:51 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:51 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:51 Constant: 0:51 0 (const uint) 0:51 Constant: 0:51 1 (const uint) 0:53 move second child to first child ( temp highp uint) 0:53 'j' ( temp highp uint) 0:53 AtomicMin ( global highp uint) 0:53 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:53 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:53 Constant: 0:53 0 (const uint) 0:53 'j' ( temp highp uint) 0:54 move second child to first child ( temp highp uint) 0:54 'j' ( temp highp uint) 0:54 AtomicMax ( global highp uint) 0:54 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:54 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:54 Constant: 0:54 0 (const uint) 0:54 'j' ( temp highp uint) 0:55 move second child to first child ( temp highp uint) 0:55 'j' ( temp highp uint) 0:55 AtomicAnd ( global highp uint) 0:55 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:55 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:55 Constant: 0:55 0 (const uint) 0:55 'j' ( temp highp uint) 0:57 move second child to first child ( temp highp uint) 0:57 'j' ( temp highp uint) 0:57 AtomicOr ( global highp uint) 0:57 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:57 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:57 Constant: 0:57 0 (const uint) 0:57 'j' ( temp highp uint) 0:58 move second child to first child ( temp highp uint) 0:58 'j' ( temp highp uint) 0:58 AtomicXor ( global highp uint) 0:58 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:58 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:58 Constant: 0:58 0 (const uint) 0:58 'j' ( temp highp uint) 0:60 move second child to first child ( temp highp uint) 0:60 'j' ( temp highp uint) 0:60 AtomicExchange ( global highp uint) 0:60 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:60 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:60 Constant: 0:60 0 (const uint) 0:60 'j' ( temp highp uint) 0:61 move second child to first child ( temp highp uint) 0:61 'j' ( temp highp uint) 0:61 AtomicCompSwap ( global highp uint) 0:61 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:61 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:61 Constant: 0:61 0 (const uint) 0:61 Constant: 0:61 0 (const uint) 0:61 'j' ( temp highp uint) 0:63 AtomicAdd ( global highp uint) 0:63 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:63 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:63 Constant: 0:63 1 (const uint) 0:63 Constant: 0:63 1 (const uint) 0:64 AtomicAdd ( global highp uint) 0:64 counter3: direct index for structure ( coherent volatile buffer highp uint) 0:64 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) 0:64 Constant: 0:64 0 (const uint) 0:64 Constant: 0:64 1 (const uint) 0:66 MemoryBarrierBuffer ( global void) 0:68 Branch: Return with expression 0:68 'j' ( temp highp uint) 0:71 Function Definition: foo( ( global highp 4-component vector of float) 0:71 Function Parameters: 0:72 Sequence 0:72 Sequence 0:72 move second child to first child ( temp highp float) 0:72 'f' ( temp highp float) 0:72 add ( temp highp float) 0:72 add ( temp highp float) 0:72 add ( temp highp float) 0:72 j: direct index for structure (layout( column_major std140) uniform highp float) 0:72 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) 0:72 Constant: 0:72 0 (const uint) 0:72 j: direct index for structure (layout( column_major std430) buffer highp float) 0:72 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) 0:72 Constant: 0:72 0 (const int) 0:72 y: direct index for structure ( global highp float) 0:72 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) 0:72 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:72 Constant: 0:72 4 (const uint) 0:72 Constant: 0:72 1 (const int) 0:72 Convert uint to float ( temp highp float) 0:72 z: direct index for structure ( global highp uint) 0:72 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) 0:72 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:72 Constant: 0:72 4 (const uint) 0:72 Constant: 0:72 2 (const int) 0:73 Sequence 0:73 move second child to first child ( temp highp 2-component vector of float) 0:73 'v2' ( temp highp 2-component vector of float) 0:73 add ( temp highp 2-component vector of float) 0:73 add ( temp highp 2-component vector of float) 0:73 b: direct index for structure ( uniform highp 2-component vector of float) 0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:73 Constant: 0:73 1 (const uint) 0:73 c: direct index for structure ( uniform highp 2-component vector of float) 0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:73 Constant: 0:73 2 (const uint) 0:73 x: direct index for structure ( global highp 2-component vector of float) 0:73 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) 0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:73 Constant: 0:73 4 (const uint) 0:73 Constant: 0:73 0 (const int) 0:74 Sequence 0:74 move second child to first child ( temp highp 4-component vector of float) 0:74 'v4' ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 add ( temp highp 4-component vector of float) 0:74 a: direct index for structure ( uniform highp 4-component vector of float) 0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:74 Constant: 0:74 0 (const uint) 0:74 direct index ( temp highp 4-component vector of float) 0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) 0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:74 Constant: 0:74 3 (const uint) 0:74 Constant: 0:74 0 (const int) 0:74 direct index ( temp highp 4-component vector of float) 0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) 0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:74 Constant: 0:74 3 (const uint) 0:74 Constant: 0:74 1 (const int) 0:74 direct index ( temp highp 4-component vector of float) 0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) 0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:74 Constant: 0:74 3 (const uint) 0:74 Constant: 0:74 2 (const int) 0:74 k: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) 0:74 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) 0:74 Constant: 0:74 1 (const uint) 0:74 k: direct index for structure (layout( column_major std430) buffer highp 4-component vector of float) 0:74 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) 0:74 Constant: 0:74 1 (const int) 0:74 texture ( global highp 4-component vector of float) 0:74 't1' ( uniform highp sampler2D) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:74 texture ( global highp 4-component vector of float) 0:? 'structUniform.t0' ( uniform highp sampler2D) 0:74 Constant: 0:74 0.000000 0:74 0.000000 0:75 Branch: Return with expression 0:75 component-wise multiply ( temp highp 4-component vector of float) 0:75 component-wise multiply ( temp highp 4-component vector of float) 0:75 Construct vec4 ( temp highp 4-component vector of float) 0:75 'f' ( temp highp float) 0:75 Construct vec4 ( temp highp 4-component vector of float) 0:75 'v2' ( temp highp 2-component vector of float) 0:75 Constant: 0:75 1.000000 0:75 Constant: 0:75 1.000000 0:75 'v4' ( temp highp 4-component vector of float) 0:78 Function Definition: baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21; ( global highp 4-component vector of float) 0:78 Function Parameters: 0:78 'samplers' ( in structure{ global 4-element array of highp int /*tn*/}) 0:78 'samplers.tn[0]' ( in highp sampler2D) 0:78 'samplers.tn[1]' ( in highp sampler2D) 0:78 'samplers.tn[2]' ( in highp sampler2D) 0:78 'samplers.tn[3]' ( in highp sampler2D) 0:79 Sequence 0:79 Branch: Return with expression 0:79 add ( temp highp 4-component vector of float) 0:79 add ( temp highp 4-component vector of float) 0:79 add ( temp highp 4-component vector of float) 0:79 texture ( global highp 4-component vector of float) 0:79 'samplers.tn[0]' ( in highp sampler2D) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 texture ( global highp 4-component vector of float) 0:79 'samplers.tn[1]' ( in highp sampler2D) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 texture ( global highp 4-component vector of float) 0:79 'samplers.tn[2]' ( in highp sampler2D) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:79 texture ( global highp 4-component vector of float) 0:79 'samplers.tn[3]' ( in highp sampler2D) 0:79 Constant: 0:79 0.000000 0:79 0.000000 0:82 Function Definition: main( ( global void) 0:82 Function Parameters: 0:83 Sequence 0:83 Sequence 0:83 move second child to first child ( temp highp float) 0:83 'j' ( temp highp float) 0:83 Convert uint to float ( temp highp float) 0:83 Function Call: bar( ( global highp uint) 0:84 move second child to first child ( temp highp 4-component vector of float) 0:84 'o' ( out highp 4-component vector of float) 0:84 add ( temp highp 4-component vector of float) 0:84 vector-scale ( temp highp 4-component vector of float) 0:84 'j' ( temp highp float) 0:84 Function Call: foo( ( global highp 4-component vector of float) 0:84 Function Call: baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21; ( global highp 4-component vector of float) 0:84 samplers: direct index for structure ( global structure{ global 4-element array of highp int /*tn*/}) 0:84 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) 0:84 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:84 Constant: 0:84 4 (const uint) 0:84 Constant: 0:84 4 (const int) 0:84 'structUniform.samplers.tn[0]' ( uniform highp sampler2D) 0:84 'structUniform.samplers.tn[1]' ( uniform highp sampler2D) 0:84 'structUniform.samplers.tn[2]' ( uniform highp sampler2D) 0:84 'structUniform.samplers.tn[3]' ( uniform highp sampler2D) 0:? Linker Objects 0:? 'o' ( out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) 0:? 'structUniform.t0' ( uniform highp sampler2D) 0:? 'structUniform.samplers.tn[0]' ( uniform highp sampler2D) 0:? 'structUniform.samplers.tn[1]' ( uniform highp sampler2D) 0:? 'structUniform.samplers.tn[2]' ( uniform highp sampler2D) 0:? 'structUniform.samplers.tn[3]' ( uniform highp sampler2D) 0:? 't1' ( uniform highp sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) 0:? 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) 0:? 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:? 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 216 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 190 ExecutionMode 4 OriginUpperLeft Source GLSL 460 Name 4 "main" Name 8 "bar(" Name 13 "foo(" Name 18 "SamplerArray" MemberName 18(SamplerArray) 0 "/*tn*/" Name 29 "baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21;" Name 24 "samplers" Name 25 "samplers.tn[0]" Name 26 "samplers.tn[1]" Name 27 "samplers.tn[2]" Name 28 "samplers.tn[3]" Name 32 "j" Name 34 "gl_AtomicCounterBlock_0" MemberName 34(gl_AtomicCounterBlock_0) 0 "counter1" MemberName 34(gl_AtomicCounterBlock_0) 1 "counter2" Name 36 "" Name 78 "gl_AtomicCounterBlock_1" MemberName 78(gl_AtomicCounterBlock_1) 0 "counter3" Name 80 "" Name 88 "f" Name 89 "UniformBlock" MemberName 89(UniformBlock) 0 "j" MemberName 89(UniformBlock) 1 "k" Name 91 "" Name 95 "BufferBlock" MemberName 95(BufferBlock) 0 "j" MemberName 95(BufferBlock) 1 "k" Name 97 "bufferInstance" Name 105 "SamplerArray" MemberName 105(SamplerArray) 0 "/*tn*/" Name 106 "e" MemberName 106(e) 0 "x" MemberName 106(e) 1 "y" MemberName 106(e) 2 "z" MemberName 106(e) 3 "/*t0*/" MemberName 106(e) 4 "samplers" Name 107 "gl_DefaultUniformBlock" MemberName 107(gl_DefaultUniformBlock) 0 "a" MemberName 107(gl_DefaultUniformBlock) 1 "b" MemberName 107(gl_DefaultUniformBlock) 2 "c" MemberName 107(gl_DefaultUniformBlock) 3 "d" MemberName 107(gl_DefaultUniformBlock) 4 "structUniform" Name 109 "" Name 120 "v2" Name 131 "v4" Name 151 "t1" Name 157 "structUniform.t0" Name 186 "j" Name 190 "o" Name 194 "structUniform.samplers.tn[0]" Name 195 "structUniform.samplers.tn[1]" Name 196 "structUniform.samplers.tn[2]" Name 197 "structUniform.samplers.tn[3]" Name 198 "param" Decorate 34(gl_AtomicCounterBlock_0) BufferBlock MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Offset 0 MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Offset 4 Decorate 36 Binding 9 Decorate 36 DescriptorSet 0 Decorate 78(gl_AtomicCounterBlock_1) BufferBlock MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Volatile MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Coherent MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Offset 0 Decorate 80 Binding 10 Decorate 80 DescriptorSet 0 Decorate 89(UniformBlock) Block MemberDecorate 89(UniformBlock) 0 Offset 0 MemberDecorate 89(UniformBlock) 1 Offset 16 Decorate 91 Binding 7 Decorate 91 DescriptorSet 0 Decorate 95(BufferBlock) BufferBlock MemberDecorate 95(BufferBlock) 0 Offset 0 MemberDecorate 95(BufferBlock) 1 Offset 16 Decorate 97(bufferInstance) Binding 8 Decorate 97(bufferInstance) DescriptorSet 0 Decorate 103 ArrayStride 16 Decorate 104 ArrayStride 16 MemberDecorate 105(SamplerArray) 0 Offset 0 MemberDecorate 106(e) 0 Offset 0 MemberDecorate 106(e) 1 Offset 8 MemberDecorate 106(e) 2 Offset 12 MemberDecorate 106(e) 3 Offset 16 MemberDecorate 106(e) 4 Offset 32 Decorate 107(gl_DefaultUniformBlock) Block MemberDecorate 107(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 107(gl_DefaultUniformBlock) 1 Offset 16 MemberDecorate 107(gl_DefaultUniformBlock) 2 Offset 24 MemberDecorate 107(gl_DefaultUniformBlock) 3 Offset 32 MemberDecorate 107(gl_DefaultUniformBlock) 4 Offset 192 Decorate 109 Binding 0 Decorate 109 DescriptorSet 0 Decorate 151(t1) Binding 6 Decorate 151(t1) DescriptorSet 0 Decorate 157(structUniform.t0) Binding 1 Decorate 157(structUniform.t0) DescriptorSet 0 Decorate 190(o) Location 0 Decorate 194(structUniform.samplers.tn[0]) Binding 2 Decorate 194(structUniform.samplers.tn[0]) DescriptorSet 0 Decorate 195(structUniform.samplers.tn[1]) Binding 3 Decorate 195(structUniform.samplers.tn[1]) DescriptorSet 0 Decorate 196(structUniform.samplers.tn[2]) Binding 4 Decorate 196(structUniform.samplers.tn[2]) DescriptorSet 0 Decorate 197(structUniform.samplers.tn[3]) Binding 5 Decorate 197(structUniform.samplers.tn[3]) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeFunction 6(int) 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypeFunction 11(fvec4) 15: TypeInt 32 1 16: 6(int) Constant 4 17: TypeArray 15(int) 16 18(SamplerArray): TypeStruct 17 19: TypePointer Function 18(SamplerArray) 20: TypeImage 10(float) 2D sampled format:Unknown 21: TypeSampledImage 20 22: TypePointer UniformConstant 21 23: TypeFunction 11(fvec4) 19(ptr) 22(ptr) 22(ptr) 22(ptr) 22(ptr) 31: TypePointer Function 6(int) 33: 6(int) Constant 0 34(gl_AtomicCounterBlock_0): TypeStruct 6(int) 6(int) 35: TypePointer Uniform 34(gl_AtomicCounterBlock_0) 36: 35(ptr) Variable Uniform 37: 15(int) Constant 0 38: TypePointer Uniform 6(int) 40: 6(int) Constant 1 43: 6(int) Constant 4294967295 75: 15(int) Constant 1 78(gl_AtomicCounterBlock_1): TypeStruct 6(int) 79: TypePointer Uniform 78(gl_AtomicCounterBlock_1) 80: 79(ptr) Variable Uniform 83: 6(int) Constant 72 87: TypePointer Function 10(float) 89(UniformBlock): TypeStruct 10(float) 11(fvec4) 90: TypePointer Uniform 89(UniformBlock) 91: 90(ptr) Variable Uniform 92: TypePointer Uniform 10(float) 95(BufferBlock): TypeStruct 10(float) 11(fvec4) 96: TypePointer Uniform 95(BufferBlock) 97(bufferInstance): 96(ptr) Variable Uniform 101: TypeVector 10(float) 2 102: 6(int) Constant 10 103: TypeArray 11(fvec4) 102 104: TypeArray 15(int) 16 105(SamplerArray): TypeStruct 104 106(e): TypeStruct 101(fvec2) 10(float) 6(int) 15(int) 105(SamplerArray) 107(gl_DefaultUniformBlock): TypeStruct 11(fvec4) 101(fvec2) 101(fvec2) 103 106(e) 108: TypePointer Uniform 107(gl_DefaultUniformBlock) 109: 108(ptr) Variable Uniform 110: 15(int) Constant 4 114: 15(int) Constant 2 119: TypePointer Function 101(fvec2) 121: TypePointer Uniform 101(fvec2) 130: TypePointer Function 11(fvec4) 132: TypePointer Uniform 11(fvec4) 135: 15(int) Constant 3 151(t1): 22(ptr) Variable UniformConstant 153: 10(float) Constant 0 154: 101(fvec2) ConstantComposite 153 153 157(structUniform.t0): 22(ptr) Variable UniformConstant 164: 10(float) Constant 1065353216 189: TypePointer Output 11(fvec4) 190(o): 189(ptr) Variable Output 194(structUniform.samplers.tn[0]): 22(ptr) Variable UniformConstant 195(structUniform.samplers.tn[1]): 22(ptr) Variable UniformConstant 196(structUniform.samplers.tn[2]): 22(ptr) Variable UniformConstant 197(structUniform.samplers.tn[3]): 22(ptr) Variable UniformConstant 199: TypePointer Uniform 105(SamplerArray) 203: TypePointer Function 17 206: TypePointer Function 15(int) 4(main): 2 Function None 3 5: Label 186(j): 87(ptr) Variable Function 198(param): 19(ptr) Variable Function 187: 6(int) FunctionCall 8(bar() 188: 10(float) ConvertUToF 187 Store 186(j) 188 191: 10(float) Load 186(j) 192: 11(fvec4) FunctionCall 13(foo() 193: 11(fvec4) VectorTimesScalar 192 191 200: 199(ptr) AccessChain 109 110 110 201:105(SamplerArray) Load 200 202: 104 CompositeExtract 201 0 204: 203(ptr) AccessChain 198(param) 37 205: 15(int) CompositeExtract 202 0 207: 206(ptr) AccessChain 204 37 Store 207 205 208: 15(int) CompositeExtract 202 1 209: 206(ptr) AccessChain 204 75 Store 209 208 210: 15(int) CompositeExtract 202 2 211: 206(ptr) AccessChain 204 114 Store 211 210 212: 15(int) CompositeExtract 202 3 213: 206(ptr) AccessChain 204 135 Store 213 212 214: 11(fvec4) FunctionCall 29(baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21;) 198(param) 194(structUniform.samplers.tn[0]) 195(structUniform.samplers.tn[1]) 196(structUniform.samplers.tn[2]) 197(structUniform.samplers.tn[3]) 215: 11(fvec4) FAdd 193 214 Store 190(o) 215 Return FunctionEnd 8(bar(): 6(int) Function None 7 9: Label 32(j): 31(ptr) Variable Function Store 32(j) 33 39: 38(ptr) AccessChain 36 37 41: 6(int) AtomicIAdd 39 40 33 40 Store 32(j) 41 42: 38(ptr) AccessChain 36 37 44: 6(int) AtomicIAdd 42 40 33 43 45: 6(int) ISub 44 40 Store 32(j) 45 46: 38(ptr) AccessChain 36 37 47: 6(int) Load 46 Store 32(j) 47 48: 38(ptr) AccessChain 36 37 49: 6(int) AtomicIAdd 48 40 33 40 Store 32(j) 49 50: 38(ptr) AccessChain 36 37 51: 6(int) AtomicIAdd 50 40 33 43 Store 32(j) 51 52: 38(ptr) AccessChain 36 37 53: 6(int) AtomicISub 52 40 33 40 Store 32(j) 53 54: 38(ptr) AccessChain 36 37 55: 6(int) Load 32(j) 56: 6(int) AtomicUMin 54 40 33 55 Store 32(j) 56 57: 38(ptr) AccessChain 36 37 58: 6(int) Load 32(j) 59: 6(int) AtomicUMax 57 40 33 58 Store 32(j) 59 60: 38(ptr) AccessChain 36 37 61: 6(int) Load 32(j) 62: 6(int) AtomicAnd 60 40 33 61 Store 32(j) 62 63: 38(ptr) AccessChain 36 37 64: 6(int) Load 32(j) 65: 6(int) AtomicOr 63 40 33 64 Store 32(j) 65 66: 38(ptr) AccessChain 36 37 67: 6(int) Load 32(j) 68: 6(int) AtomicXor 66 40 33 67 Store 32(j) 68 69: 38(ptr) AccessChain 36 37 70: 6(int) Load 32(j) 71: 6(int) AtomicExchange 69 40 33 70 Store 32(j) 71 72: 38(ptr) AccessChain 36 37 73: 6(int) Load 32(j) 74: 6(int) AtomicCompareExchange 72 40 33 33 73 33 Store 32(j) 74 76: 38(ptr) AccessChain 36 75 77: 6(int) AtomicIAdd 76 40 33 40 81: 38(ptr) AccessChain 80 37 82: 6(int) AtomicIAdd 81 40 33 40 MemoryBarrier 40 83 84: 6(int) Load 32(j) ReturnValue 84 FunctionEnd 13(foo(): 11(fvec4) Function None 12 14: Label 88(f): 87(ptr) Variable Function 120(v2): 119(ptr) Variable Function 131(v4): 130(ptr) Variable Function 93: 92(ptr) AccessChain 91 37 94: 10(float) Load 93 98: 92(ptr) AccessChain 97(bufferInstance) 37 99: 10(float) Load 98 100: 10(float) FAdd 94 99 111: 92(ptr) AccessChain 109 110 75 112: 10(float) Load 111 113: 10(float) FAdd 100 112 115: 38(ptr) AccessChain 109 110 114 116: 6(int) Load 115 117: 10(float) ConvertUToF 116 118: 10(float) FAdd 113 117 Store 88(f) 118 122: 121(ptr) AccessChain 109 75 123: 101(fvec2) Load 122 124: 121(ptr) AccessChain 109 114 125: 101(fvec2) Load 124 126: 101(fvec2) FAdd 123 125 127: 121(ptr) AccessChain 109 110 37 128: 101(fvec2) Load 127 129: 101(fvec2) FAdd 126 128 Store 120(v2) 129 133: 132(ptr) AccessChain 109 37 134: 11(fvec4) Load 133 136: 132(ptr) AccessChain 109 135 37 137: 11(fvec4) Load 136 138: 11(fvec4) FAdd 134 137 139: 132(ptr) AccessChain 109 135 75 140: 11(fvec4) Load 139 141: 11(fvec4) FAdd 138 140 142: 132(ptr) AccessChain 109 135 114 143: 11(fvec4) Load 142 144: 11(fvec4) FAdd 141 143 145: 132(ptr) AccessChain 91 75 146: 11(fvec4) Load 145 147: 11(fvec4) FAdd 144 146 148: 132(ptr) AccessChain 97(bufferInstance) 75 149: 11(fvec4) Load 148 150: 11(fvec4) FAdd 147 149 152: 21 Load 151(t1) 155: 11(fvec4) ImageSampleImplicitLod 152 154 156: 11(fvec4) FAdd 150 155 158: 21 Load 157(structUniform.t0) 159: 11(fvec4) ImageSampleImplicitLod 158 154 160: 11(fvec4) FAdd 156 159 Store 131(v4) 160 161: 10(float) Load 88(f) 162: 11(fvec4) CompositeConstruct 161 161 161 161 163: 101(fvec2) Load 120(v2) 165: 10(float) CompositeExtract 163 0 166: 10(float) CompositeExtract 163 1 167: 11(fvec4) CompositeConstruct 165 166 164 164 168: 11(fvec4) FMul 162 167 169: 11(fvec4) Load 131(v4) 170: 11(fvec4) FMul 168 169 ReturnValue 170 FunctionEnd 29(baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21;): 11(fvec4) Function None 23 24(samplers): 19(ptr) FunctionParameter 25(samplers.tn[0]): 22(ptr) FunctionParameter 26(samplers.tn[1]): 22(ptr) FunctionParameter 27(samplers.tn[2]): 22(ptr) FunctionParameter 28(samplers.tn[3]): 22(ptr) FunctionParameter 30: Label 173: 21 Load 25(samplers.tn[0]) 174: 11(fvec4) ImageSampleImplicitLod 173 154 175: 21 Load 26(samplers.tn[1]) 176: 11(fvec4) ImageSampleImplicitLod 175 154 177: 11(fvec4) FAdd 174 176 178: 21 Load 27(samplers.tn[2]) 179: 11(fvec4) ImageSampleImplicitLod 178 154 180: 11(fvec4) FAdd 177 179 181: 21 Load 28(samplers.tn[3]) 182: 11(fvec4) ImageSampleImplicitLod 181 154 183: 11(fvec4) FAdd 180 182 ReturnValue 183 FunctionEnd glslang-16.0.0/Test/baseResults/vk.relaxed.link1.frag.out000066400000000000000000001054641506534232700232100ustar00rootroot00000000000000vk.relaxed.link1.frag Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:19 Function Definition: bar( ( global highp 4-component vector of float) 0:19 Function Parameters: 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp highp uint) 0:20 'j' ( temp highp uint) 0:20 add ( temp highp uint) 0:20 AtomicAdd ( global highp uint) 0:20 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:20 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:20 Constant: 0:20 0 (const uint) 0:20 Constant: 0:20 1 (const uint) 0:20 subtract ( temp highp uint) 0:20 AtomicAdd ( global highp uint) 0:20 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:20 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:20 Constant: 0:20 1 (const uint) 0:20 Constant: 0:20 4294967295 (const uint) 0:20 Constant: 0:20 1 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 'v' ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 a: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 0 (const uint) 0:21 Construct vec4 ( temp highp 4-component vector of float) 0:21 direct index ( temp highp float) 0:21 b1: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp highp float) 0:21 b1: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 1 (const int) 0:21 direct index ( temp highp float) 0:21 b2: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 2 (const uint) 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp highp float) 0:21 b2: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 2 (const uint) 0:21 Constant: 0:21 1 (const int) 0:21 c1: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 3 (const uint) 0:21 d: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 4 (const uint) 0:23 Branch: Return with expression 0:23 vector-scale ( temp highp 4-component vector of float) 0:23 Convert uint to float ( temp highp float) 0:23 'j' ( temp highp uint) 0:23 'v' ( temp highp 4-component vector of float) 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:27 Sequence 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 'o' ( out highp 4-component vector of float) 0:27 add ( temp highp 4-component vector of float) 0:27 Function Call: foo( ( global highp 4-component vector of float) 0:27 Function Call: bar( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'o' ( out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) vk.relaxed.link2.frag Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:14 Function Definition: foo( ( global highp 4-component vector of float) 0:14 Function Parameters: 0:15 Sequence 0:15 Sequence 0:15 move second child to first child ( temp highp uint) 0:15 'j' ( temp highp uint) 0:15 add ( temp highp uint) 0:15 AtomicAdd ( global highp uint) 0:15 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:15 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2}) 0:15 Constant: 0:15 1 (const uint) 0:15 Constant: 0:15 1 (const uint) 0:15 subtract ( temp highp uint) 0:15 AtomicAdd ( global highp uint) 0:15 counter3: direct index for structure ( coherent volatile buffer highp uint) 0:15 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2}) 0:15 Constant: 0:15 0 (const uint) 0:15 Constant: 0:15 4294967295 (const uint) 0:15 Constant: 0:15 1 (const uint) 0:16 Sequence 0:16 move second child to first child ( temp highp 4-component vector of float) 0:16 'v' ( temp highp 4-component vector of float) 0:16 add ( temp highp 4-component vector of float) 0:16 add ( temp highp 4-component vector of float) 0:16 add ( temp highp 4-component vector of float) 0:16 a: direct index for structure ( uniform highp 4-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d}) 0:16 Constant: 0:16 0 (const uint) 0:16 Construct vec4 ( temp highp 4-component vector of float) 0:16 direct index ( temp highp float) 0:16 b1: direct index for structure ( uniform highp 2-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d}) 0:16 Constant: 0:16 2 (const uint) 0:16 Constant: 0:16 0 (const int) 0:16 direct index ( temp highp float) 0:16 b1: direct index for structure ( uniform highp 2-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d}) 0:16 Constant: 0:16 2 (const uint) 0:16 Constant: 0:16 1 (const int) 0:16 direct index ( temp highp float) 0:16 b2: direct index for structure ( uniform highp 2-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d}) 0:16 Constant: 0:16 1 (const uint) 0:16 Constant: 0:16 0 (const int) 0:16 direct index ( temp highp float) 0:16 b2: direct index for structure ( uniform highp 2-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d}) 0:16 Constant: 0:16 1 (const uint) 0:16 Constant: 0:16 1 (const int) 0:16 c2: direct index for structure ( uniform highp 4-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d}) 0:16 Constant: 0:16 3 (const uint) 0:16 d: direct index for structure ( uniform highp 4-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d}) 0:16 Constant: 0:16 4 (const uint) 0:18 Branch: Return with expression 0:18 vector-scale ( temp highp 4-component vector of float) 0:18 Convert uint to float ( temp highp float) 0:18 'j' ( temp highp uint) 0:18 'v' ( temp highp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d}) 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2}) Linked fragment stage: Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:19 Function Definition: bar( ( global highp 4-component vector of float) 0:19 Function Parameters: 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp highp uint) 0:20 'j' ( temp highp uint) 0:20 add ( temp highp uint) 0:20 AtomicAdd ( global highp uint) 0:20 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:20 '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}) 0:20 Constant: 0:20 0 (const uint) 0:20 Constant: 0:20 1 (const uint) 0:20 subtract ( temp highp uint) 0:20 AtomicAdd ( global highp uint) 0:20 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:20 '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}) 0:20 Constant: 0:20 1 (const uint) 0:20 Constant: 0:20 4294967295 (const uint) 0:20 Constant: 0:20 1 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 'v' ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 a: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:21 Constant: 0:21 0 (const uint) 0:21 Construct vec4 ( temp highp 4-component vector of float) 0:21 direct index ( temp highp float) 0:21 b1: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp highp float) 0:21 b1: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 1 (const int) 0:21 direct index ( temp highp float) 0:21 b2: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:21 Constant: 0:21 2 (const uint) 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp highp float) 0:21 b2: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:21 Constant: 0:21 2 (const uint) 0:21 Constant: 0:21 1 (const int) 0:21 c1: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:21 Constant: 0:21 3 (const uint) 0:21 d: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:21 Constant: 0:21 4 (const uint) 0:23 Branch: Return with expression 0:23 vector-scale ( temp highp 4-component vector of float) 0:23 Convert uint to float ( temp highp float) 0:23 'j' ( temp highp uint) 0:23 'v' ( temp highp 4-component vector of float) 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:27 Sequence 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 'o' ( out highp 4-component vector of float) 0:27 add ( temp highp 4-component vector of float) 0:27 Function Call: foo( ( global highp 4-component vector of float) 0:27 Function Call: bar( ( global highp 4-component vector of float) 0:14 Function Definition: foo( ( global highp 4-component vector of float) 0:14 Function Parameters: 0:15 Sequence 0:15 Sequence 0:15 move second child to first child ( temp highp uint) 0:15 'j' ( temp highp uint) 0:15 add ( temp highp uint) 0:15 AtomicAdd ( global highp uint) 0:15 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:15 '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}) 0:15 Constant: 0:15 1 (const uint) 0:15 Constant: 0:15 1 (const uint) 0:15 subtract ( temp highp uint) 0:15 AtomicAdd ( global highp uint) 0:15 counter3: direct index for structure ( coherent volatile buffer highp uint) 0:15 '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}) 0:15 Constant: 0:15 2 (const uint) 0:15 Constant: 0:15 4294967295 (const uint) 0:15 Constant: 0:15 1 (const uint) 0:16 Sequence 0:16 move second child to first child ( temp highp 4-component vector of float) 0:16 'v' ( temp highp 4-component vector of float) 0:16 add ( temp highp 4-component vector of float) 0:16 add ( temp highp 4-component vector of float) 0:16 add ( temp highp 4-component vector of float) 0:16 a: direct index for structure ( uniform highp 4-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:16 Constant: 0:16 0 (const uint) 0:16 Construct vec4 ( temp highp 4-component vector of float) 0:16 direct index ( temp highp float) 0:16 b1: direct index for structure ( uniform highp 2-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:16 Constant: 0:16 1 (const uint) 0:16 Constant: 0:16 0 (const int) 0:16 direct index ( temp highp float) 0:16 b1: direct index for structure ( uniform highp 2-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:16 Constant: 0:16 1 (const uint) 0:16 Constant: 0:16 1 (const int) 0:16 direct index ( temp highp float) 0:16 b2: direct index for structure ( uniform highp 2-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:16 Constant: 0:16 2 (const uint) 0:16 Constant: 0:16 0 (const int) 0:16 direct index ( temp highp float) 0:16 b2: direct index for structure ( uniform highp 2-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:16 Constant: 0:16 2 (const uint) 0:16 Constant: 0:16 1 (const int) 0:16 c2: direct index for structure ( uniform highp 4-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:16 Constant: 0:16 5 (const uint) 0:16 d: direct index for structure ( uniform highp 4-component vector of float) 0:16 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 0:16 Constant: 0:16 4 (const uint) 0:18 Branch: Return with expression 0:18 vector-scale ( temp highp 4-component vector of float) 0:18 Convert uint to float ( temp highp float) 0:18 'j' ( temp highp uint) 0:18 'v' ( temp highp 4-component vector of float) 0:? Linker Objects 0:? 'o' ( out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d, uniform highp 4-component vector of float c2}) 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): 8000b // Id's are bound by 105 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 68 ExecutionMode 4 OriginUpperLeft Source GLSL 460 Name 4 "main" Name 9 "bar(" Name 11 "foo(" Name 15 "j" Name 16 "gl_AtomicCounterBlock_0" MemberName 16(gl_AtomicCounterBlock_0) 0 "counter1" MemberName 16(gl_AtomicCounterBlock_0) 1 "counter2" MemberName 16(gl_AtomicCounterBlock_0) 2 "counter3" Name 18 "" Name 33 "v" Name 35 "gl_DefaultUniformBlock" MemberName 35(gl_DefaultUniformBlock) 0 "a" MemberName 35(gl_DefaultUniformBlock) 1 "b1" MemberName 35(gl_DefaultUniformBlock) 2 "b2" MemberName 35(gl_DefaultUniformBlock) 3 "c1" MemberName 35(gl_DefaultUniformBlock) 4 "d" MemberName 35(gl_DefaultUniformBlock) 5 "c2" Name 37 "" Name 68 "o" Name 72 "j" Name 79 "v" Decorate 16(gl_AtomicCounterBlock_0) BufferBlock MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Offset 0 MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Offset 4 MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Offset 8 Decorate 18 Binding 1 Decorate 18 DescriptorSet 0 Decorate 35(gl_DefaultUniformBlock) Block MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16 MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24 MemberDecorate 35(gl_DefaultUniformBlock) 3 Offset 32 MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48 MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64 Decorate 37 Binding 0 Decorate 37 DescriptorSet 0 Decorate 68(o) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 13: TypeInt 32 0 14: TypePointer Function 13(int) 16(gl_AtomicCounterBlock_0): TypeStruct 13(int) 13(int) 13(int) 17: TypePointer Uniform 16(gl_AtomicCounterBlock_0) 18: 17(ptr) Variable Uniform 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypePointer Uniform 13(int) 23: 13(int) Constant 1 24: 13(int) Constant 0 26: 19(int) Constant 1 28: 13(int) Constant 4294967295 32: TypePointer Function 7(fvec4) 34: TypeVector 6(float) 2 35(gl_DefaultUniformBlock): TypeStruct 7(fvec4) 34(fvec2) 34(fvec2) 7(fvec4) 7(fvec4) 7(fvec4) 36: TypePointer Uniform 35(gl_DefaultUniformBlock) 37: 36(ptr) Variable Uniform 38: TypePointer Uniform 7(fvec4) 41: TypePointer Uniform 6(float) 46: 19(int) Constant 2 53: 19(int) Constant 3 57: 19(int) Constant 4 67: TypePointer Output 7(fvec4) 68(o): 67(ptr) Variable Output 92: 19(int) Constant 5 4(main): 2 Function None 3 5: Label 69: 7(fvec4) FunctionCall 11(foo() 70: 7(fvec4) FunctionCall 9(bar() 71: 7(fvec4) FAdd 69 70 Store 68(o) 71 Return FunctionEnd 9(bar(): 7(fvec4) Function None 8 10: Label 15(j): 14(ptr) Variable Function 33(v): 32(ptr) Variable Function 22: 21(ptr) AccessChain 18 20 25: 13(int) AtomicIAdd 22 23 24 23 27: 21(ptr) AccessChain 18 26 29: 13(int) AtomicIAdd 27 23 24 28 30: 13(int) ISub 29 23 31: 13(int) IAdd 25 30 Store 15(j) 31 39: 38(ptr) AccessChain 37 20 40: 7(fvec4) Load 39 42: 41(ptr) AccessChain 37 26 24 43: 6(float) Load 42 44: 41(ptr) AccessChain 37 26 23 45: 6(float) Load 44 47: 41(ptr) AccessChain 37 46 24 48: 6(float) Load 47 49: 41(ptr) AccessChain 37 46 23 50: 6(float) Load 49 51: 7(fvec4) CompositeConstruct 43 45 48 50 52: 7(fvec4) FAdd 40 51 54: 38(ptr) AccessChain 37 53 55: 7(fvec4) Load 54 56: 7(fvec4) FAdd 52 55 58: 38(ptr) AccessChain 37 57 59: 7(fvec4) Load 58 60: 7(fvec4) FAdd 56 59 Store 33(v) 60 61: 13(int) Load 15(j) 62: 6(float) ConvertUToF 61 63: 7(fvec4) Load 33(v) 64: 7(fvec4) VectorTimesScalar 63 62 ReturnValue 64 FunctionEnd 11(foo(): 7(fvec4) Function None 8 12: Label 72(j): 14(ptr) Variable Function 79(v): 32(ptr) Variable Function 73: 21(ptr) AccessChain 18 26 74: 13(int) AtomicIAdd 73 23 24 23 75: 21(ptr) AccessChain 18 46 76: 13(int) AtomicIAdd 75 23 24 28 77: 13(int) ISub 76 23 78: 13(int) IAdd 74 77 Store 72(j) 78 80: 38(ptr) AccessChain 37 20 81: 7(fvec4) Load 80 82: 41(ptr) AccessChain 37 26 24 83: 6(float) Load 82 84: 41(ptr) AccessChain 37 26 23 85: 6(float) Load 84 86: 41(ptr) AccessChain 37 46 24 87: 6(float) Load 86 88: 41(ptr) AccessChain 37 46 23 89: 6(float) Load 88 90: 7(fvec4) CompositeConstruct 83 85 87 89 91: 7(fvec4) FAdd 81 90 93: 38(ptr) AccessChain 37 92 94: 7(fvec4) Load 93 95: 7(fvec4) FAdd 91 94 96: 38(ptr) AccessChain 37 57 97: 7(fvec4) Load 96 98: 7(fvec4) FAdd 95 97 Store 79(v) 98 99: 13(int) Load 72(j) 100: 6(float) ConvertUToF 99 101: 7(fvec4) Load 79(v) 102: 7(fvec4) VectorTimesScalar 101 100 ReturnValue 102 FunctionEnd glslang-16.0.0/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out000066400000000000000000023022171506534232700245050ustar00rootroot00000000000000vk.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, 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: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, 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: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, 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: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, 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: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, 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: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, 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: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, 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: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, 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: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, 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: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, 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: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, 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:? '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 Decorate 214(Vertex) Block MemberDecorate 214(Vertex) 3 Flat MemberDecorate 214(Vertex) 4 Flat Decorate 216(oVert) Location 0 Decorate 226(P) Location 0 Decorate 236(gl_PerVertex) Block 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 256(Cd) Location 2 MemberDecorate 269(TDMatrix) 0 ColMajor MemberDecorate 269(TDMatrix) 0 MatrixStride 16 MemberDecorate 269(TDMatrix) 0 Offset 0 MemberDecorate 269(TDMatrix) 1 ColMajor MemberDecorate 269(TDMatrix) 1 MatrixStride 16 MemberDecorate 269(TDMatrix) 1 Offset 64 MemberDecorate 269(TDMatrix) 2 ColMajor MemberDecorate 269(TDMatrix) 2 MatrixStride 16 MemberDecorate 269(TDMatrix) 2 Offset 128 MemberDecorate 269(TDMatrix) 3 ColMajor MemberDecorate 269(TDMatrix) 3 MatrixStride 16 MemberDecorate 269(TDMatrix) 3 Offset 192 MemberDecorate 269(TDMatrix) 4 ColMajor MemberDecorate 269(TDMatrix) 4 MatrixStride 16 MemberDecorate 269(TDMatrix) 4 Offset 256 MemberDecorate 269(TDMatrix) 5 ColMajor MemberDecorate 269(TDMatrix) 5 MatrixStride 16 MemberDecorate 269(TDMatrix) 5 Offset 320 MemberDecorate 269(TDMatrix) 6 ColMajor MemberDecorate 269(TDMatrix) 6 MatrixStride 16 MemberDecorate 269(TDMatrix) 6 Offset 384 MemberDecorate 269(TDMatrix) 7 ColMajor MemberDecorate 269(TDMatrix) 7 MatrixStride 16 MemberDecorate 269(TDMatrix) 7 Offset 448 MemberDecorate 269(TDMatrix) 8 ColMajor MemberDecorate 269(TDMatrix) 8 MatrixStride 16 MemberDecorate 269(TDMatrix) 8 Offset 512 MemberDecorate 269(TDMatrix) 9 ColMajor MemberDecorate 269(TDMatrix) 9 MatrixStride 16 MemberDecorate 269(TDMatrix) 9 Offset 576 MemberDecorate 269(TDMatrix) 10 ColMajor MemberDecorate 269(TDMatrix) 10 MatrixStride 16 MemberDecorate 269(TDMatrix) 10 Offset 640 MemberDecorate 269(TDMatrix) 11 ColMajor MemberDecorate 269(TDMatrix) 11 MatrixStride 16 MemberDecorate 269(TDMatrix) 11 Offset 704 MemberDecorate 269(TDMatrix) 12 ColMajor MemberDecorate 269(TDMatrix) 12 MatrixStride 16 MemberDecorate 269(TDMatrix) 12 Offset 768 MemberDecorate 269(TDMatrix) 13 ColMajor MemberDecorate 269(TDMatrix) 13 MatrixStride 16 MemberDecorate 269(TDMatrix) 13 Offset 832 MemberDecorate 269(TDMatrix) 14 ColMajor MemberDecorate 269(TDMatrix) 14 MatrixStride 16 MemberDecorate 269(TDMatrix) 14 Offset 880 MemberDecorate 269(TDMatrix) 15 ColMajor MemberDecorate 269(TDMatrix) 15 MatrixStride 16 MemberDecorate 269(TDMatrix) 15 Offset 928 Decorate 270 ArrayStride 976 Decorate 271(TDMatricesBlock) Block MemberDecorate 271(TDMatricesBlock) 0 Offset 0 Decorate 273 Binding 1 Decorate 273 DescriptorSet 0 Decorate 297(gl_InstanceIndex) BuiltIn InstanceIndex Decorate 299(gl_DefaultUniformBlock) Block 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 301 Binding 0 Decorate 301 DescriptorSet 0 Decorate 371(sTDInstanceTexCoord) Binding 16 Decorate 371(sTDInstanceTexCoord) DescriptorSet 0 Decorate 400(sTDInstanceT) Binding 15 Decorate 400(sTDInstanceT) DescriptorSet 0 Decorate 665(sTDInstanceColor) Binding 17 Decorate 665(sTDInstanceColor) DescriptorSet 0 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 Decorate 898(TDCameraInfoBlock) Block MemberDecorate 898(TDCameraInfoBlock) 0 Offset 0 Decorate 900 Binding 0 Decorate 900 DescriptorSet 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 Decorate 902(TDGeneralBlock) Block MemberDecorate 902(TDGeneralBlock) 0 Offset 0 Decorate 904 Binding 0 Decorate 904 DescriptorSet 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 MatrixStride 16 MemberDecorate 907(TDLight) 8 Offset 128 MemberDecorate 907(TDLight) 9 ColMajor MemberDecorate 907(TDLight) 9 MatrixStride 16 MemberDecorate 907(TDLight) 9 Offset 192 MemberDecorate 907(TDLight) 10 Offset 256 MemberDecorate 907(TDLight) 11 ColMajor MemberDecorate 907(TDLight) 11 MatrixStride 16 MemberDecorate 907(TDLight) 11 Offset 272 Decorate 908 ArrayStride 336 Decorate 909(TDLightBlock) Block MemberDecorate 909(TDLightBlock) 0 Offset 0 Decorate 911 Binding 0 Decorate 911 DescriptorSet 0 MemberDecorate 912(TDEnvLight) 0 Offset 0 MemberDecorate 912(TDEnvLight) 1 ColMajor MemberDecorate 912(TDEnvLight) 1 MatrixStride 16 MemberDecorate 912(TDEnvLight) 1 Offset 16 Decorate 913 ArrayStride 64 Decorate 914(TDEnvLightBlock) Block MemberDecorate 914(TDEnvLightBlock) 0 Offset 0 Decorate 916 Binding 0 Decorate 916 DescriptorSet 0 Decorate 918 ArrayStride 16 Decorate 919(TDEnvLightBuffer) BufferBlock MemberDecorate 919(TDEnvLightBuffer) 0 Restrict MemberDecorate 919(TDEnvLightBuffer) 0 NonWritable MemberDecorate 919(TDEnvLightBuffer) 0 Offset 0 Decorate 922(uTDEnvLightBuffers) Restrict Decorate 922(uTDEnvLightBuffers) NonWritable Decorate 922(uTDEnvLightBuffers) Binding 0 Decorate 922(uTDEnvLightBuffers) DescriptorSet 0 Decorate 926(mTD2DImageOutputs) Binding 0 Decorate 926(mTD2DImageOutputs) DescriptorSet 0 Decorate 930(mTD2DArrayImageOutputs) Binding 0 Decorate 930(mTD2DArrayImageOutputs) DescriptorSet 0 Decorate 934(mTD3DImageOutputs) Binding 0 Decorate 934(mTD3DImageOutputs) DescriptorSet 0 Decorate 938(mTDCubeImageOutputs) Binding 0 Decorate 938(mTDCubeImageOutputs) DescriptorSet 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" Decorate 334(Vertex) Block MemberDecorate 334(Vertex) 3 Flat MemberDecorate 334(Vertex) 4 Flat Decorate 336(iVert) Location 0 Decorate 363(sColorMap) Binding 2 Decorate 363(sColorMap) DescriptorSet 0 Decorate 374(gl_DefaultUniformBlock) Block 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 376 Binding 0 Decorate 376 DescriptorSet 0 Decorate 429(oFragColor) Location 0 Decorate 456(sTDNoiseMap) Binding 3 Decorate 456(sTDNoiseMap) DescriptorSet 0 Decorate 458(gl_FragCoord) BuiltIn FragCoord Decorate 485(gl_FrontFacing) BuiltIn FrontFacing Decorate 931(sTDInstanceTexCoord) Binding 16 Decorate 931(sTDInstanceTexCoord) DescriptorSet 0 Decorate 958(sTDInstanceT) Binding 15 Decorate 958(sTDInstanceT) DescriptorSet 0 Decorate 1219(sTDInstanceColor) Binding 17 Decorate 1219(sTDInstanceColor) DescriptorSet 0 MemberDecorate 1253(TDMatrix) 0 ColMajor MemberDecorate 1253(TDMatrix) 0 MatrixStride 16 MemberDecorate 1253(TDMatrix) 0 Offset 0 MemberDecorate 1253(TDMatrix) 1 ColMajor MemberDecorate 1253(TDMatrix) 1 MatrixStride 16 MemberDecorate 1253(TDMatrix) 1 Offset 64 MemberDecorate 1253(TDMatrix) 2 ColMajor MemberDecorate 1253(TDMatrix) 2 MatrixStride 16 MemberDecorate 1253(TDMatrix) 2 Offset 128 MemberDecorate 1253(TDMatrix) 3 ColMajor MemberDecorate 1253(TDMatrix) 3 MatrixStride 16 MemberDecorate 1253(TDMatrix) 3 Offset 192 MemberDecorate 1253(TDMatrix) 4 ColMajor MemberDecorate 1253(TDMatrix) 4 MatrixStride 16 MemberDecorate 1253(TDMatrix) 4 Offset 256 MemberDecorate 1253(TDMatrix) 5 ColMajor MemberDecorate 1253(TDMatrix) 5 MatrixStride 16 MemberDecorate 1253(TDMatrix) 5 Offset 320 MemberDecorate 1253(TDMatrix) 6 ColMajor MemberDecorate 1253(TDMatrix) 6 MatrixStride 16 MemberDecorate 1253(TDMatrix) 6 Offset 384 MemberDecorate 1253(TDMatrix) 7 ColMajor MemberDecorate 1253(TDMatrix) 7 MatrixStride 16 MemberDecorate 1253(TDMatrix) 7 Offset 448 MemberDecorate 1253(TDMatrix) 8 ColMajor MemberDecorate 1253(TDMatrix) 8 MatrixStride 16 MemberDecorate 1253(TDMatrix) 8 Offset 512 MemberDecorate 1253(TDMatrix) 9 ColMajor MemberDecorate 1253(TDMatrix) 9 MatrixStride 16 MemberDecorate 1253(TDMatrix) 9 Offset 576 MemberDecorate 1253(TDMatrix) 10 ColMajor MemberDecorate 1253(TDMatrix) 10 MatrixStride 16 MemberDecorate 1253(TDMatrix) 10 Offset 640 MemberDecorate 1253(TDMatrix) 11 ColMajor MemberDecorate 1253(TDMatrix) 11 MatrixStride 16 MemberDecorate 1253(TDMatrix) 11 Offset 704 MemberDecorate 1253(TDMatrix) 12 ColMajor MemberDecorate 1253(TDMatrix) 12 MatrixStride 16 MemberDecorate 1253(TDMatrix) 12 Offset 768 MemberDecorate 1253(TDMatrix) 13 ColMajor MemberDecorate 1253(TDMatrix) 13 MatrixStride 16 MemberDecorate 1253(TDMatrix) 13 Offset 832 MemberDecorate 1253(TDMatrix) 14 ColMajor MemberDecorate 1253(TDMatrix) 14 MatrixStride 16 MemberDecorate 1253(TDMatrix) 14 Offset 880 MemberDecorate 1253(TDMatrix) 15 ColMajor MemberDecorate 1253(TDMatrix) 15 MatrixStride 16 MemberDecorate 1253(TDMatrix) 15 Offset 928 Decorate 1254 ArrayStride 976 Decorate 1255(TDMatricesBlock) Block MemberDecorate 1255(TDMatricesBlock) 0 Offset 0 Decorate 1257 Binding 1 Decorate 1257 DescriptorSet 0 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 Decorate 1260(TDCameraInfoBlock) Block MemberDecorate 1260(TDCameraInfoBlock) 0 Offset 0 Decorate 1262 Binding 0 Decorate 1262 DescriptorSet 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 Decorate 1264(TDGeneralBlock) Block MemberDecorate 1264(TDGeneralBlock) 0 Offset 0 Decorate 1266 Binding 0 Decorate 1266 DescriptorSet 0 Decorate 1270(sTDSineLookup) Binding 0 Decorate 1270(sTDSineLookup) DescriptorSet 0 Decorate 1271(sTDWhite2D) Binding 0 Decorate 1271(sTDWhite2D) DescriptorSet 0 Decorate 1275(sTDWhite3D) Binding 0 Decorate 1275(sTDWhite3D) DescriptorSet 0 Decorate 1276(sTDWhite2DArray) Binding 0 Decorate 1276(sTDWhite2DArray) DescriptorSet 0 Decorate 1280(sTDWhiteCube) Binding 0 Decorate 1280(sTDWhiteCube) DescriptorSet 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 MatrixStride 16 MemberDecorate 1281(TDLight) 8 Offset 128 MemberDecorate 1281(TDLight) 9 ColMajor MemberDecorate 1281(TDLight) 9 MatrixStride 16 MemberDecorate 1281(TDLight) 9 Offset 192 MemberDecorate 1281(TDLight) 10 Offset 256 MemberDecorate 1281(TDLight) 11 ColMajor MemberDecorate 1281(TDLight) 11 MatrixStride 16 MemberDecorate 1281(TDLight) 11 Offset 272 Decorate 1282 ArrayStride 336 Decorate 1283(TDLightBlock) Block MemberDecorate 1283(TDLightBlock) 0 Offset 0 Decorate 1285 Binding 0 Decorate 1285 DescriptorSet 0 MemberDecorate 1286(TDEnvLight) 0 Offset 0 MemberDecorate 1286(TDEnvLight) 1 ColMajor MemberDecorate 1286(TDEnvLight) 1 MatrixStride 16 MemberDecorate 1286(TDEnvLight) 1 Offset 16 Decorate 1287 ArrayStride 64 Decorate 1288(TDEnvLightBlock) Block MemberDecorate 1288(TDEnvLightBlock) 0 Offset 0 Decorate 1290 Binding 0 Decorate 1290 DescriptorSet 0 Decorate 1292 ArrayStride 16 Decorate 1293(TDEnvLightBuffer) BufferBlock MemberDecorate 1293(TDEnvLightBuffer) 0 Restrict MemberDecorate 1293(TDEnvLightBuffer) 0 NonWritable MemberDecorate 1293(TDEnvLightBuffer) 0 Offset 0 Decorate 1296(uTDEnvLightBuffers) Restrict Decorate 1296(uTDEnvLightBuffers) NonWritable Decorate 1296(uTDEnvLightBuffers) Binding 0 Decorate 1296(uTDEnvLightBuffers) DescriptorSet 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 glslang-16.0.0/Test/baseResults/vk.relaxed.stagelink.vert.out000066400000000000000000001415111506534232700242050ustar00rootroot00000000000000vk.relaxed.stagelink.vert Shader version: 460 0:? Sequence 0:18 Function Definition: foo( ( global highp 4-component vector of float) 0:18 Function Parameters: 0:19 Sequence 0:19 Sequence 0:19 move second child to first child ( temp highp uint) 0:19 'j' ( temp highp uint) 0:19 add ( temp highp uint) 0:19 AtomicAdd ( global highp uint) 0:19 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:19 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2}) 0:19 Constant: 0:19 1 (const uint) 0:19 Constant: 0:19 1 (const uint) 0:19 subtract ( temp highp uint) 0:19 AtomicAdd ( global highp uint) 0:19 counter3: direct index for structure ( coherent volatile buffer highp uint) 0:19 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2}) 0:19 Constant: 0:19 0 (const uint) 0:19 Constant: 0:19 4294967295 (const uint) 0:19 Constant: 0:19 1 (const uint) 0:20 Sequence 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 'v' ( temp highp 4-component vector of float) 0:20 add ( temp highp 4-component vector of float) 0:20 add ( temp highp 4-component vector of float) 0:20 add ( temp highp 4-component vector of float) 0:20 a: direct index for structure ( uniform highp 4-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:20 Constant: 0:20 0 (const uint) 0:20 Construct vec4 ( temp highp 4-component vector of float) 0:20 direct index ( temp highp float) 0:20 b1: direct index for structure ( uniform highp 2-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:20 Constant: 0:20 2 (const uint) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp highp float) 0:20 b1: direct index for structure ( uniform highp 2-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:20 Constant: 0:20 2 (const uint) 0:20 Constant: 0:20 1 (const int) 0:20 direct index ( temp highp float) 0:20 b2: direct index for structure ( uniform highp 2-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:20 Constant: 0:20 1 (const uint) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp highp float) 0:20 b2: direct index for structure ( uniform highp 2-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:20 Constant: 0:20 1 (const uint) 0:20 Constant: 0:20 1 (const int) 0:20 c2: direct index for structure ( uniform highp 4-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:20 Constant: 0:20 3 (const uint) 0:20 d: direct index for structure ( uniform highp 4-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:20 Constant: 0:20 4 (const uint) 0:22 Branch: Return with expression 0:22 vector-scale ( temp highp 4-component vector of float) 0:22 Convert uint to float ( temp highp float) 0:22 'j' ( temp highp uint) 0:22 'v' ( temp highp 4-component vector of float) 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 Sequence 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 'v' ( temp highp 4-component vector of float) 0:27 Function Call: foo( ( global highp 4-component vector of float) 0:28 move second child to first child ( temp highp 4-component vector of float) 0:28 'v' ( temp highp 4-component vector of float) 0:28 add ( temp highp 4-component vector of float) 0:28 'v' ( temp highp 4-component vector of float) 0:28 indirect index ( temp highp 4-component vector of float) 0:28 s: direct index for structure ( uniform 4-element array of highp 4-component vector of float) 0:28 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:28 Constant: 0:28 5 (const uint) 0:28 subtract ( temp int) 0:28 'gl_VertexIndex' ( in int VertexIndex) 0:28 'gl_VertexIndex' ( in int VertexIndex) 0:29 move second child to first child ( temp highp float) 0:29 direct index ( temp highp float) 0:29 'v' ( temp highp 4-component vector of float) 0:29 Constant: 0:29 0 (const int) 0:29 subtract ( temp highp float) 0:29 direct index ( temp highp float) 0:29 'v' ( temp highp 4-component vector of float) 0:29 Constant: 0:29 0 (const int) 0:29 Convert int to float ( temp highp float) 0:29 subtract ( temp highp int) 0:29 'gl_InstanceIndex' ( in highp int InstanceIndex) 0:29 'gl_InstanceIndex' ( in highp int InstanceIndex) 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:30 'v' ( temp highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2}) 0:? 'gl_VertexIndex' ( in int VertexIndex) 0:? 'gl_InstanceIndex' ( in int InstanceIndex) vk.relaxed.stagelink.frag Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:19 Function Definition: foo( ( global highp 4-component vector of float) 0:19 Function Parameters: 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp highp uint) 0:20 'j' ( temp highp uint) 0:20 add ( temp highp uint) 0:20 AtomicAdd ( global highp uint) 0:20 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:20 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:20 Constant: 0:20 0 (const uint) 0:20 Constant: 0:20 1 (const uint) 0:20 subtract ( temp highp uint) 0:20 AtomicAdd ( global highp uint) 0:20 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:20 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:20 Constant: 0:20 1 (const uint) 0:20 Constant: 0:20 4294967295 (const uint) 0:20 Constant: 0:20 1 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 'v' ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 a: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 0 (const uint) 0:21 Construct vec4 ( temp highp 4-component vector of float) 0:21 direct index ( temp highp float) 0:21 b1: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp highp float) 0:21 b1: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 1 (const int) 0:21 direct index ( temp highp float) 0:21 b2: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 2 (const uint) 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp highp float) 0:21 b2: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 2 (const uint) 0:21 Constant: 0:21 1 (const int) 0:21 c1: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 3 (const uint) 0:21 d: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:21 Constant: 0:21 4 (const uint) 0:23 Branch: Return with expression 0:23 vector-scale ( temp highp 4-component vector of float) 0:23 Convert uint to float ( temp highp float) 0:23 'j' ( temp highp uint) 0:23 'v' ( temp highp 4-component vector of float) 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:27 Sequence 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 'o' ( out highp 4-component vector of float) 0:27 add ( temp highp 4-component vector of float) 0:27 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:27 Function Call: foo( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:? 'o' ( out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b1, uniform highp 2-component vector of float b2, uniform highp 4-component vector of float c1, uniform highp 4-component vector of float d}) 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) Linked vertex stage: Linked fragment stage: Shader version: 460 0:? Sequence 0:18 Function Definition: foo( ( global highp 4-component vector of float) 0:18 Function Parameters: 0:19 Sequence 0:19 Sequence 0:19 move second child to first child ( temp highp uint) 0:19 'j' ( temp highp uint) 0:19 add ( temp highp uint) 0:19 AtomicAdd ( global highp uint) 0:19 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:19 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2, coherent volatile buffer highp uint counter1}) 0:19 Constant: 0:19 1 (const uint) 0:19 Constant: 0:19 1 (const uint) 0:19 subtract ( temp highp uint) 0:19 AtomicAdd ( global highp uint) 0:19 counter3: direct index for structure ( coherent volatile buffer highp uint) 0:19 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2, coherent volatile buffer highp uint counter1}) 0:19 Constant: 0:19 0 (const uint) 0:19 Constant: 0:19 4294967295 (const uint) 0:19 Constant: 0:19 1 (const uint) 0:20 Sequence 0:20 move second child to first child ( temp highp 4-component vector of float) 0:20 'v' ( temp highp 4-component vector of float) 0:20 add ( temp highp 4-component vector of float) 0:20 add ( temp highp 4-component vector of float) 0:20 add ( temp highp 4-component vector of float) 0:20 a: direct index for structure ( uniform highp 4-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:20 Constant: 0:20 0 (const uint) 0:20 Construct vec4 ( temp highp 4-component vector of float) 0:20 direct index ( temp highp float) 0:20 b1: direct index for structure ( uniform highp 2-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:20 Constant: 0:20 2 (const uint) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp highp float) 0:20 b1: direct index for structure ( uniform highp 2-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:20 Constant: 0:20 2 (const uint) 0:20 Constant: 0:20 1 (const int) 0:20 direct index ( temp highp float) 0:20 b2: direct index for structure ( uniform highp 2-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:20 Constant: 0:20 1 (const uint) 0:20 Constant: 0:20 0 (const int) 0:20 direct index ( temp highp float) 0:20 b2: direct index for structure ( uniform highp 2-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:20 Constant: 0:20 1 (const uint) 0:20 Constant: 0:20 1 (const int) 0:20 c2: direct index for structure ( uniform highp 4-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:20 Constant: 0:20 3 (const uint) 0:20 d: direct index for structure ( uniform highp 4-component vector of float) 0:20 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:20 Constant: 0:20 4 (const uint) 0:22 Branch: Return with expression 0:22 vector-scale ( temp highp 4-component vector of float) 0:22 Convert uint to float ( temp highp float) 0:22 'j' ( temp highp uint) 0:22 'v' ( temp highp 4-component vector of float) 0:25 Function Definition: main( ( global void) 0:25 Function Parameters: 0:27 Sequence 0:27 Sequence 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 'v' ( temp highp 4-component vector of float) 0:27 Function Call: foo( ( global highp 4-component vector of float) 0:28 move second child to first child ( temp highp 4-component vector of float) 0:28 'v' ( temp highp 4-component vector of float) 0:28 add ( temp highp 4-component vector of float) 0:28 'v' ( temp highp 4-component vector of float) 0:28 indirect index ( temp highp 4-component vector of float) 0:28 s: direct index for structure ( uniform 4-element array of highp 4-component vector of float) 0:28 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:28 Constant: 0:28 5 (const uint) 0:28 subtract ( temp int) 0:28 'gl_VertexIndex' ( in int VertexIndex) 0:28 'gl_VertexIndex' ( in int VertexIndex) 0:29 move second child to first child ( temp highp float) 0:29 direct index ( temp highp float) 0:29 'v' ( temp highp 4-component vector of float) 0:29 Constant: 0:29 0 (const int) 0:29 subtract ( temp highp float) 0:29 direct index ( temp highp float) 0:29 'v' ( temp highp 4-component vector of float) 0:29 Constant: 0:29 0 (const int) 0:29 Convert int to float ( temp highp float) 0:29 subtract ( temp highp int) 0:29 'gl_InstanceIndex' ( in highp int InstanceIndex) 0:29 'gl_InstanceIndex' ( in highp int InstanceIndex) 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:30 'v' ( temp highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2, coherent volatile buffer highp uint counter1}) 0:? 'gl_VertexIndex' ( in int VertexIndex) 0:? 'gl_InstanceIndex' ( in int InstanceIndex) Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence 0:19 Function Definition: foo( ( global highp 4-component vector of float) 0:19 Function Parameters: 0:20 Sequence 0:20 Sequence 0:20 move second child to first child ( temp highp uint) 0:20 'j' ( temp highp uint) 0:20 add ( temp highp uint) 0:20 AtomicAdd ( global highp uint) 0:20 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:20 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2, coherent volatile buffer highp uint counter1}) 0:20 Constant: 0:20 2 (const uint) 0:20 Constant: 0:20 1 (const uint) 0:20 subtract ( temp highp uint) 0:20 AtomicAdd ( global highp uint) 0:20 counter2: direct index for structure ( coherent volatile buffer highp uint) 0:20 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2, coherent volatile buffer highp uint counter1}) 0:20 Constant: 0:20 1 (const uint) 0:20 Constant: 0:20 4294967295 (const uint) 0:20 Constant: 0:20 1 (const uint) 0:21 Sequence 0:21 move second child to first child ( temp highp 4-component vector of float) 0:21 'v' ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 add ( temp highp 4-component vector of float) 0:21 a: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:21 Constant: 0:21 0 (const uint) 0:21 Construct vec4 ( temp highp 4-component vector of float) 0:21 direct index ( temp highp float) 0:21 b1: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:21 Constant: 0:21 2 (const uint) 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp highp float) 0:21 b1: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:21 Constant: 0:21 2 (const uint) 0:21 Constant: 0:21 1 (const int) 0:21 direct index ( temp highp float) 0:21 b2: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 0 (const int) 0:21 direct index ( temp highp float) 0:21 b2: direct index for structure ( uniform highp 2-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:21 Constant: 0:21 1 (const uint) 0:21 Constant: 0:21 1 (const int) 0:21 c1: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:21 Constant: 0:21 6 (const uint) 0:21 d: direct index for structure ( uniform highp 4-component vector of float) 0:21 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:21 Constant: 0:21 4 (const uint) 0:23 Branch: Return with expression 0:23 vector-scale ( temp highp 4-component vector of float) 0:23 Convert uint to float ( temp highp float) 0:23 'j' ( temp highp uint) 0:23 'v' ( temp highp 4-component vector of float) 0:26 Function Definition: main( ( global void) 0:26 Function Parameters: 0:27 Sequence 0:27 move second child to first child ( temp highp 4-component vector of float) 0:27 'o' ( out highp 4-component vector of float) 0:27 add ( temp highp 4-component vector of float) 0:27 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:27 Function Call: foo( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:? 'o' ( out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s, uniform highp 4-component vector of float c1}) 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2, coherent volatile buffer highp uint counter1}) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 92 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" 72 82 90 Source GLSL 460 Name 4 "main" Name 9 "foo(" Name 13 "j" Name 14 "gl_AtomicCounterBlock_0" MemberName 14(gl_AtomicCounterBlock_0) 0 "counter3" MemberName 14(gl_AtomicCounterBlock_0) 1 "counter2" MemberName 14(gl_AtomicCounterBlock_0) 2 "counter1" Name 16 "" Name 31 "v" Name 35 "gl_DefaultUniformBlock" MemberName 35(gl_DefaultUniformBlock) 0 "a" MemberName 35(gl_DefaultUniformBlock) 1 "b2" MemberName 35(gl_DefaultUniformBlock) 2 "b1" MemberName 35(gl_DefaultUniformBlock) 3 "c2" MemberName 35(gl_DefaultUniformBlock) 4 "d" MemberName 35(gl_DefaultUniformBlock) 5 "s" MemberName 35(gl_DefaultUniformBlock) 6 "c1" Name 37 "" Name 67 "v" Name 72 "gl_VertexIndex" Name 82 "gl_InstanceIndex" Name 90 "io" Decorate 14(gl_AtomicCounterBlock_0) BufferBlock MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Offset 0 MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Offset 4 MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Offset 8 Decorate 16 Binding 1 Decorate 16 DescriptorSet 0 Decorate 34 ArrayStride 16 Decorate 35(gl_DefaultUniformBlock) Block MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16 MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24 MemberDecorate 35(gl_DefaultUniformBlock) 3 Offset 32 MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48 MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64 MemberDecorate 35(gl_DefaultUniformBlock) 6 Offset 128 Decorate 37 Binding 0 Decorate 37 DescriptorSet 0 Decorate 72(gl_VertexIndex) BuiltIn VertexIndex Decorate 82(gl_InstanceIndex) BuiltIn InstanceIndex Decorate 90(io) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 0 12: TypePointer Function 11(int) 14(gl_AtomicCounterBlock_0): TypeStruct 11(int) 11(int) 11(int) 15: TypePointer Uniform 14(gl_AtomicCounterBlock_0) 16: 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 1 19: TypePointer Uniform 11(int) 21: 11(int) Constant 1 22: 11(int) Constant 0 24: 17(int) Constant 0 26: 11(int) Constant 4294967295 30: TypePointer Function 7(fvec4) 32: TypeVector 6(float) 2 33: 11(int) Constant 4 34: TypeArray 7(fvec4) 33 35(gl_DefaultUniformBlock): TypeStruct 7(fvec4) 32(fvec2) 32(fvec2) 7(fvec4) 7(fvec4) 34 7(fvec4) 36: TypePointer Uniform 35(gl_DefaultUniformBlock) 37: 36(ptr) Variable Uniform 38: TypePointer Uniform 7(fvec4) 41: 17(int) Constant 2 42: TypePointer Uniform 6(float) 53: 17(int) Constant 3 57: 17(int) Constant 4 70: 17(int) Constant 5 71: TypePointer Input 17(int) 72(gl_VertexIndex): 71(ptr) Variable Input 79: TypePointer Function 6(float) 82(gl_InstanceIndex): 71(ptr) Variable Input 89: TypePointer Output 7(fvec4) 90(io): 89(ptr) Variable Output 4(main): 2 Function None 3 5: Label 67(v): 30(ptr) Variable Function 68: 7(fvec4) FunctionCall 9(foo() Store 67(v) 68 69: 7(fvec4) Load 67(v) 73: 17(int) Load 72(gl_VertexIndex) 74: 17(int) Load 72(gl_VertexIndex) 75: 17(int) ISub 73 74 76: 38(ptr) AccessChain 37 70 75 77: 7(fvec4) Load 76 78: 7(fvec4) FAdd 69 77 Store 67(v) 78 80: 79(ptr) AccessChain 67(v) 22 81: 6(float) Load 80 83: 17(int) Load 82(gl_InstanceIndex) 84: 17(int) Load 82(gl_InstanceIndex) 85: 17(int) ISub 83 84 86: 6(float) ConvertSToF 85 87: 6(float) FSub 81 86 88: 79(ptr) AccessChain 67(v) 22 Store 88 87 91: 7(fvec4) Load 67(v) Store 90(io) 91 Return FunctionEnd 9(foo(): 7(fvec4) Function None 8 10: Label 13(j): 12(ptr) Variable Function 31(v): 30(ptr) Variable Function 20: 19(ptr) AccessChain 16 18 23: 11(int) AtomicIAdd 20 21 22 21 25: 19(ptr) AccessChain 16 24 27: 11(int) AtomicIAdd 25 21 22 26 28: 11(int) ISub 27 21 29: 11(int) IAdd 23 28 Store 13(j) 29 39: 38(ptr) AccessChain 37 24 40: 7(fvec4) Load 39 43: 42(ptr) AccessChain 37 41 22 44: 6(float) Load 43 45: 42(ptr) AccessChain 37 41 21 46: 6(float) Load 45 47: 42(ptr) AccessChain 37 18 22 48: 6(float) Load 47 49: 42(ptr) AccessChain 37 18 21 50: 6(float) Load 49 51: 7(fvec4) CompositeConstruct 44 46 48 50 52: 7(fvec4) FAdd 40 51 54: 38(ptr) AccessChain 37 53 55: 7(fvec4) Load 54 56: 7(fvec4) FAdd 52 55 58: 38(ptr) AccessChain 37 57 59: 7(fvec4) Load 58 60: 7(fvec4) FAdd 56 59 Store 31(v) 60 61: 11(int) Load 13(j) 62: 6(float) ConvertUToF 61 63: 7(fvec4) Load 31(v) 64: 7(fvec4) VectorTimesScalar 63 62 ReturnValue 64 FunctionEnd // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 74 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 68 70 ExecutionMode 4 OriginUpperLeft Source GLSL 460 Name 4 "main" Name 9 "foo(" Name 13 "j" Name 14 "gl_AtomicCounterBlock_0" MemberName 14(gl_AtomicCounterBlock_0) 0 "counter3" MemberName 14(gl_AtomicCounterBlock_0) 1 "counter2" MemberName 14(gl_AtomicCounterBlock_0) 2 "counter1" Name 16 "" Name 31 "v" Name 35 "gl_DefaultUniformBlock" MemberName 35(gl_DefaultUniformBlock) 0 "a" MemberName 35(gl_DefaultUniformBlock) 1 "b2" MemberName 35(gl_DefaultUniformBlock) 2 "b1" MemberName 35(gl_DefaultUniformBlock) 3 "c2" MemberName 35(gl_DefaultUniformBlock) 4 "d" MemberName 35(gl_DefaultUniformBlock) 5 "s" MemberName 35(gl_DefaultUniformBlock) 6 "c1" Name 37 "" Name 68 "o" Name 70 "io" Decorate 14(gl_AtomicCounterBlock_0) BufferBlock MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Offset 0 MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Offset 4 MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Offset 8 Decorate 16 Binding 1 Decorate 16 DescriptorSet 0 Decorate 34 ArrayStride 16 Decorate 35(gl_DefaultUniformBlock) Block MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16 MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24 MemberDecorate 35(gl_DefaultUniformBlock) 3 Offset 32 MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48 MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64 MemberDecorate 35(gl_DefaultUniformBlock) 6 Offset 128 Decorate 37 Binding 0 Decorate 37 DescriptorSet 0 Decorate 68(o) Location 0 Decorate 70(io) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) 11: TypeInt 32 0 12: TypePointer Function 11(int) 14(gl_AtomicCounterBlock_0): TypeStruct 11(int) 11(int) 11(int) 15: TypePointer Uniform 14(gl_AtomicCounterBlock_0) 16: 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 2 19: TypePointer Uniform 11(int) 21: 11(int) Constant 1 22: 11(int) Constant 0 24: 17(int) Constant 1 26: 11(int) Constant 4294967295 30: TypePointer Function 7(fvec4) 32: TypeVector 6(float) 2 33: 11(int) Constant 4 34: TypeArray 7(fvec4) 33 35(gl_DefaultUniformBlock): TypeStruct 7(fvec4) 32(fvec2) 32(fvec2) 7(fvec4) 7(fvec4) 34 7(fvec4) 36: TypePointer Uniform 35(gl_DefaultUniformBlock) 37: 36(ptr) Variable Uniform 38: 17(int) Constant 0 39: TypePointer Uniform 7(fvec4) 42: TypePointer Uniform 6(float) 53: 17(int) Constant 6 57: 17(int) Constant 4 67: TypePointer Output 7(fvec4) 68(o): 67(ptr) Variable Output 69: TypePointer Input 7(fvec4) 70(io): 69(ptr) Variable Input 4(main): 2 Function None 3 5: Label 71: 7(fvec4) Load 70(io) 72: 7(fvec4) FunctionCall 9(foo() 73: 7(fvec4) FAdd 71 72 Store 68(o) 73 Return FunctionEnd 9(foo(): 7(fvec4) Function None 8 10: Label 13(j): 12(ptr) Variable Function 31(v): 30(ptr) Variable Function 20: 19(ptr) AccessChain 16 18 23: 11(int) AtomicIAdd 20 21 22 21 25: 19(ptr) AccessChain 16 24 27: 11(int) AtomicIAdd 25 21 22 26 28: 11(int) ISub 27 21 29: 11(int) IAdd 23 28 Store 13(j) 29 40: 39(ptr) AccessChain 37 38 41: 7(fvec4) Load 40 43: 42(ptr) AccessChain 37 18 22 44: 6(float) Load 43 45: 42(ptr) AccessChain 37 18 21 46: 6(float) Load 45 47: 42(ptr) AccessChain 37 24 22 48: 6(float) Load 47 49: 42(ptr) AccessChain 37 24 21 50: 6(float) Load 49 51: 7(fvec4) CompositeConstruct 44 46 48 50 52: 7(fvec4) FAdd 41 51 54: 39(ptr) AccessChain 37 53 55: 7(fvec4) Load 54 56: 7(fvec4) FAdd 52 55 58: 39(ptr) AccessChain 37 57 59: 7(fvec4) Load 58 60: 7(fvec4) FAdd 56 59 Store 31(v) 60 61: 11(int) Load 13(j) 62: 6(float) ConvertUToF 61 63: 7(fvec4) Load 31(v) 64: 7(fvec4) VectorTimesScalar 63 62 ReturnValue 64 FunctionEnd glslang-16.0.0/Test/baseResults/vk.relaxed.syntaxerror.vert.out000066400000000000000000000100661506534232700246240ustar00rootroot00000000000000vk.relaxed.syntaxerror.vert Shader version: 460 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:6 Sequence 0:6 move second child to first child ( temp highp 4-component vector of float) 0:6 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:6 Constant: 0:6 0.000000 0:6 0.000000 0:6 0.000000 0:6 0.000000 0:? Linker Objects 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'gl_VertexIndex' ( in int VertexIndex) 0:? 'gl_InstanceIndex' ( in int InstanceIndex) vk.relaxed.syntaxerror.frag ERROR: 0:20: '' : syntax error, unexpected SAMPLER, expecting RIGHT_PAREN ERROR: 1 compilation errors. No code generated. Shader version: 460 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 'o' ( out highp 4-component vector of float) 0:17 add ( temp highp 4-component vector of float) 0:17 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:17 Function Call: foo(struct-OpaqueInStruct-s211;s21; ( global highp 4-component vector of float) 0:17 uniformStruct: direct index for structure ( uniform structure{ global highp int /*smp*/}) 0:17 'anon@0' (layout( column_major std140) uniform block{ uniform structure{ global highp int /*smp*/} uniformStruct}) 0:17 Constant: 0:17 0 (const uint) 0:17 'uniformStruct.smp' ( uniform highp sampler2D) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:? 'o' ( out highp 4-component vector of float) 0:? 'uniformStruct.smp' ( uniform highp sampler2D) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform structure{ global highp int /*smp*/} uniformStruct}) Linked vertex stage: Linked fragment stage: ERROR: Linking fragment stage: No function definition (body) found: foo(struct-OpaqueInStruct-s211;s21; Shader version: 460 0:? Sequence 0:5 Function Definition: main( ( global void) 0:5 Function Parameters: 0:6 Sequence 0:6 move second child to first child ( temp highp 4-component vector of float) 0:6 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:6 Constant: 0:6 0.000000 0:6 0.000000 0:6 0.000000 0:6 0.000000 0:? Linker Objects 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'gl_VertexIndex' ( in int VertexIndex) 0:? 'gl_InstanceIndex' ( in int InstanceIndex) Shader version: 460 gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:16 Function Definition: main( ( global void) 0:16 Function Parameters: 0:17 Sequence 0:17 move second child to first child ( temp highp 4-component vector of float) 0:17 'o' ( out highp 4-component vector of float) 0:17 add ( temp highp 4-component vector of float) 0:17 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:17 Function Call: foo(struct-OpaqueInStruct-s211;s21; ( global highp 4-component vector of float) 0:17 uniformStruct: direct index for structure ( uniform structure{ global highp int /*smp*/}) 0:17 'anon@0' (layout( column_major std140) uniform block{ uniform structure{ global highp int /*smp*/} uniformStruct}) 0:17 Constant: 0:17 0 (const uint) 0:17 'uniformStruct.smp' ( uniform highp sampler2D) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:? 'o' ( out highp 4-component vector of float) 0:? 'uniformStruct.smp' ( uniform highp sampler2D) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform structure{ global highp int /*smp*/} uniformStruct}) Validation failed SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/voidFunction.frag.out000066400000000000000000000063421506534232700225720ustar00rootroot00000000000000voidFunction.frag Shader version: 120 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 'bar' ( global float) 0:7 Constant: 0:7 2.000000 0:9 Function Definition: foo( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Post-Increment ( temp float) 0:11 'bar' ( global float) 0:13 Branch: Return 0:16 Function Definition: foo2( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 Post-Increment ( temp float) 0:18 'bar' ( global float) 0:21 Function Definition: main( ( global void) 0:21 Function Parameters: 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'outColor' ( temp 4-component vector of float) 0:23 'bigColor' ( uniform 4-component vector of float) 0:25 Function Call: foo( ( global void) 0:27 Function Call: foo2( ( global void) 0:29 add second child into first child ( temp float) 0:29 direct index ( temp float) 0:29 'outColor' ( temp 4-component vector of float) 0:29 Constant: 0:29 0 (const int) 0:29 'bar' ( global float) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:31 'outColor' ( temp 4-component vector of float) 0:33 Branch: Return 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) 0:? 'bar' ( global float) Linked fragment stage: Shader version: 120 0:? Sequence 0:7 Sequence 0:7 move second child to first child ( temp float) 0:7 'bar' ( global float) 0:7 Constant: 0:7 2.000000 0:9 Function Definition: foo( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Post-Increment ( temp float) 0:11 'bar' ( global float) 0:13 Branch: Return 0:16 Function Definition: foo2( ( global void) 0:16 Function Parameters: 0:18 Sequence 0:18 Post-Increment ( temp float) 0:18 'bar' ( global float) 0:21 Function Definition: main( ( global void) 0:21 Function Parameters: 0:23 Sequence 0:23 Sequence 0:23 move second child to first child ( temp 4-component vector of float) 0:23 'outColor' ( temp 4-component vector of float) 0:23 'bigColor' ( uniform 4-component vector of float) 0:25 Function Call: foo( ( global void) 0:27 Function Call: foo2( ( global void) 0:29 add second child into first child ( temp float) 0:29 direct index ( temp float) 0:29 'outColor' ( temp 4-component vector of float) 0:29 Constant: 0:29 0 (const int) 0:29 'bar' ( global float) 0:31 move second child to first child ( temp 4-component vector of float) 0:31 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:31 'outColor' ( temp 4-component vector of float) 0:33 Branch: Return 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) 0:? 'bar' ( global float) glslang-16.0.0/Test/baseResults/vulkan.ast.vert.out000066400000000000000000000363621506534232700222570ustar00rootroot00000000000000vulkan.ast.vert Shader version: 450 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Convert float to bool ( temp bool) 0:9 'scf1' ( specialization-constant const highp float) 0:9 1.000000 0:10 Construct bool ( specialization-constant const bool) 0:10 'scbt' ( specialization-constant const bool) 0:10 true (const bool) 0:11 Convert int to bool ( specialization-constant const bool) 0:11 'sci2' ( specialization-constant const highp int) 0:11 2 (const int) 0:13 Construct float ( temp float) 0:13 'scf1' ( specialization-constant const highp float) 0:13 1.000000 0:14 Convert bool to float ( temp float) 0:14 'scbt' ( specialization-constant const bool) 0:14 true (const bool) 0:15 Convert int to float ( temp highp float) 0:15 'sci2' ( specialization-constant const highp int) 0:15 2 (const int) 0:17 Convert float to int ( temp highp int) 0:17 'scf1' ( specialization-constant const highp float) 0:17 1.000000 0:18 Convert bool to int ( specialization-constant const int) 0:18 'scbt' ( specialization-constant const bool) 0:18 true (const bool) 0:19 Construct int ( specialization-constant const int) 0:19 'sci2' ( specialization-constant const highp int) 0:19 2 (const int) 0:21 component-wise multiply ( temp highp float) 0:21 'scf1' ( specialization-constant const highp float) 0:21 1.000000 0:21 'scf1' ( specialization-constant const highp float) 0:21 1.000000 0:22 logical-or ( specialization-constant const bool) 0:22 'scbt' ( specialization-constant const bool) 0:22 true (const bool) 0:22 'scbt' ( specialization-constant const bool) 0:22 true (const bool) 0:23 component-wise multiply ( specialization-constant const highp int) 0:23 'sci2' ( specialization-constant const highp int) 0:23 2 (const int) 0:23 'sci2' ( specialization-constant const highp int) 0:23 2 (const int) 0:24 add ( temp highp float) 0:24 'scf1' ( specialization-constant const highp float) 0:24 1.000000 0:24 Convert int to float ( temp highp float) 0:24 'sci2' ( specialization-constant const highp int) 0:24 2 (const int) 0:26 Negate value ( temp highp float) 0:26 'scf1' ( specialization-constant const highp float) 0:26 1.000000 0:27 Negate conditional ( specialization-constant const bool) 0:27 'scbt' ( specialization-constant const bool) 0:27 true (const bool) 0:28 Negate value ( specialization-constant const highp int) 0:28 'sci2' ( specialization-constant const highp int) 0:28 2 (const int) 0:30 Compare Greater Than ( temp bool) 0:30 'scf1' ( specialization-constant const highp float) 0:30 1.000000 0:30 'scf1' ( specialization-constant const highp float) 0:30 1.000000 0:31 Compare Greater Than ( specialization-constant const bool) 0:31 'sci2' ( specialization-constant const highp int) 0:31 2 (const int) 0:31 'sci2' ( specialization-constant const highp int) 0:31 2 (const int) 0:33 Compare Not Equal ( temp bool) 0:33 'scf1' ( specialization-constant const highp float) 0:33 1.000000 0:33 'scf1' ( specialization-constant const highp float) 0:33 1.000000 0:34 Compare Not Equal ( specialization-constant const bool) 0:34 'scbt' ( specialization-constant const bool) 0:34 true (const bool) 0:34 'scbt' ( specialization-constant const bool) 0:34 true (const bool) 0:35 Compare Not Equal ( specialization-constant const bool) 0:35 'sci2' ( specialization-constant const highp int) 0:35 2 (const int) 0:35 'sci2' ( specialization-constant const highp int) 0:35 2 (const int) 0:37 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:37 'sci2' ( specialization-constant const highp int) 0:37 2 (const int) 0:37 'sci2' ( specialization-constant const highp int) 0:37 2 (const int) 0:38 Construct ivec2 ( temp 2-element array of highp 2-component vector of int) 0:38 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:40 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:40 'scf1' ( specialization-constant const highp float) 0:40 1.000000 0:40 'scf1' ( specialization-constant const highp float) 0:40 1.000000 0:41 Construct vec2 ( temp 2-element array of highp 2-component vector of float) 0:41 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:? Linker Objects 0:? 'scf1' ( specialization-constant const highp float) 0:? 1.000000 0:? 'scbt' ( specialization-constant const bool) 0:? true (const bool) 0:? 'sci2' ( specialization-constant const highp int) 0:? 2 (const int) Linked vertex stage: Shader version: 450 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Convert float to bool ( temp bool) 0:9 'scf1' ( specialization-constant const highp float) 0:9 1.000000 0:10 Construct bool ( specialization-constant const bool) 0:10 'scbt' ( specialization-constant const bool) 0:10 true (const bool) 0:11 Convert int to bool ( specialization-constant const bool) 0:11 'sci2' ( specialization-constant const highp int) 0:11 2 (const int) 0:13 Construct float ( temp float) 0:13 'scf1' ( specialization-constant const highp float) 0:13 1.000000 0:14 Convert bool to float ( temp float) 0:14 'scbt' ( specialization-constant const bool) 0:14 true (const bool) 0:15 Convert int to float ( temp highp float) 0:15 'sci2' ( specialization-constant const highp int) 0:15 2 (const int) 0:17 Convert float to int ( temp highp int) 0:17 'scf1' ( specialization-constant const highp float) 0:17 1.000000 0:18 Convert bool to int ( specialization-constant const int) 0:18 'scbt' ( specialization-constant const bool) 0:18 true (const bool) 0:19 Construct int ( specialization-constant const int) 0:19 'sci2' ( specialization-constant const highp int) 0:19 2 (const int) 0:21 component-wise multiply ( temp highp float) 0:21 'scf1' ( specialization-constant const highp float) 0:21 1.000000 0:21 'scf1' ( specialization-constant const highp float) 0:21 1.000000 0:22 logical-or ( specialization-constant const bool) 0:22 'scbt' ( specialization-constant const bool) 0:22 true (const bool) 0:22 'scbt' ( specialization-constant const bool) 0:22 true (const bool) 0:23 component-wise multiply ( specialization-constant const highp int) 0:23 'sci2' ( specialization-constant const highp int) 0:23 2 (const int) 0:23 'sci2' ( specialization-constant const highp int) 0:23 2 (const int) 0:24 add ( temp highp float) 0:24 'scf1' ( specialization-constant const highp float) 0:24 1.000000 0:24 Convert int to float ( temp highp float) 0:24 'sci2' ( specialization-constant const highp int) 0:24 2 (const int) 0:26 Negate value ( temp highp float) 0:26 'scf1' ( specialization-constant const highp float) 0:26 1.000000 0:27 Negate conditional ( specialization-constant const bool) 0:27 'scbt' ( specialization-constant const bool) 0:27 true (const bool) 0:28 Negate value ( specialization-constant const highp int) 0:28 'sci2' ( specialization-constant const highp int) 0:28 2 (const int) 0:30 Compare Greater Than ( temp bool) 0:30 'scf1' ( specialization-constant const highp float) 0:30 1.000000 0:30 'scf1' ( specialization-constant const highp float) 0:30 1.000000 0:31 Compare Greater Than ( specialization-constant const bool) 0:31 'sci2' ( specialization-constant const highp int) 0:31 2 (const int) 0:31 'sci2' ( specialization-constant const highp int) 0:31 2 (const int) 0:33 Compare Not Equal ( temp bool) 0:33 'scf1' ( specialization-constant const highp float) 0:33 1.000000 0:33 'scf1' ( specialization-constant const highp float) 0:33 1.000000 0:34 Compare Not Equal ( specialization-constant const bool) 0:34 'scbt' ( specialization-constant const bool) 0:34 true (const bool) 0:34 'scbt' ( specialization-constant const bool) 0:34 true (const bool) 0:35 Compare Not Equal ( specialization-constant const bool) 0:35 'sci2' ( specialization-constant const highp int) 0:35 2 (const int) 0:35 'sci2' ( specialization-constant const highp int) 0:35 2 (const int) 0:37 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:37 'sci2' ( specialization-constant const highp int) 0:37 2 (const int) 0:37 'sci2' ( specialization-constant const highp int) 0:37 2 (const int) 0:38 Construct ivec2 ( temp 2-element array of highp 2-component vector of int) 0:38 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:40 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:40 'scf1' ( specialization-constant const highp float) 0:40 1.000000 0:40 'scf1' ( specialization-constant const highp float) 0:40 1.000000 0:41 Construct vec2 ( temp 2-element array of highp 2-component vector of float) 0:41 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:? Linker Objects 0:? 'scf1' ( specialization-constant const highp float) 0:? 1.000000 0:? 'scbt' ( specialization-constant const bool) 0:? true (const bool) 0:? 'sci2' ( specialization-constant const highp int) 0:? 2 (const int) // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" Source GLSL 450 Name 4 "main" Name 7 "scf1" Name 11 "scbt" Name 13 "sci2" Decorate 7(scf1) SpecId 200 Decorate 11(scbt) SpecId 201 Decorate 13(sci2) SpecId 202 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7(scf1): 6(float) SpecConstant 1065353216 8: TypeBool 9: 6(float) Constant 0 11(scbt): 8(bool) SpecConstantTrue 12: TypeInt 32 1 13(sci2): 12(int) SpecConstant 2 14: TypeInt 32 0 15: 14(int) Constant 0 16: 8(bool) SpecConstantOp 171 13(sci2) 15 17: 6(float) Constant 1065353216 21: 12(int) Constant 0 22: 12(int) Constant 1 23: 12(int) SpecConstantOp 169 11(scbt) 22 21 25: 8(bool) SpecConstantOp 166 11(scbt) 11(scbt) 26: 12(int) SpecConstantOp 132 13(sci2) 13(sci2) 30: 8(bool) SpecConstantOp 168 11(scbt) 31: 12(int) SpecConstantOp 126 13(sci2) 33: 8(bool) SpecConstantOp 173 13(sci2) 13(sci2) 35: 8(bool) SpecConstantOp 165 11(scbt) 11(scbt) 36: 8(bool) SpecConstantOp 171 13(sci2) 13(sci2) 37: TypeVector 12(int) 2 38: 37(ivec2) SpecConstantComposite 13(sci2) 13(sci2) 39: 37(ivec2) SpecConstantComposite 13(sci2) 13(sci2) 40: 37(ivec2) SpecConstantComposite 13(sci2) 13(sci2) 41: 14(int) Constant 2 42: TypeArray 37(ivec2) 41 44: TypeVector 6(float) 2 45: 44(fvec2) SpecConstantComposite 7(scf1) 7(scf1) 46: 44(fvec2) SpecConstantComposite 7(scf1) 7(scf1) 47: 44(fvec2) SpecConstantComposite 7(scf1) 7(scf1) 48: TypeArray 44(fvec2) 41 4(main): 2 Function None 3 5: Label 10: 8(bool) FUnordNotEqual 7(scf1) 9 18: 6(float) Select 11(scbt) 17 9 19: 6(float) ConvertSToF 13(sci2) 20: 12(int) ConvertFToS 7(scf1) 24: 6(float) FMul 7(scf1) 7(scf1) 27: 6(float) ConvertSToF 13(sci2) 28: 6(float) FAdd 7(scf1) 27 29: 6(float) FNegate 7(scf1) 32: 8(bool) FOrdGreaterThan 7(scf1) 7(scf1) 34: 8(bool) FUnordNotEqual 7(scf1) 7(scf1) 43: 42 CompositeConstruct 39 40 49: 48 CompositeConstruct 46 47 Return FunctionEnd glslang-16.0.0/Test/baseResults/vulkan.comp.out000066400000000000000000000021301506534232700214310ustar00rootroot00000000000000vulkan.comp ERROR: 0:5: 'local_size' : cannot change previously set size ERROR: 0:10: 'empty { } initializer' : not supported for this version or the enabled extensions ERROR: 0:15: 'empty { } initializer' : not supported for this version or the enabled extensions ERROR: 0:15: 'initialization with shared qualifier' : not supported for this version or the enabled extensions ERROR: 0:16: 'empty { } initializer' : not supported for this version or the enabled extensions ERROR: 0:26: '{}' : null initializers can't size unsized arrays ERROR: 0:31: 'structure' : non-uniform struct contains a sampler or image: sampVar ERROR: 0:31: '{}' : null initializers can't be used on opaque values ERROR: 0:33: 'atomic counter types' : not allowed when using GLSL for Vulkan ERROR: 0:33: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: a ERROR: 0:33: '{}' : null initializers can't be used on opaque values ERROR: 0:33: 'atomic_uint' : layout(binding=X) is required ERROR: 12 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/vulkan.frag.out000066400000000000000000000113461506534232700214230ustar00rootroot00000000000000vulkan.frag ERROR: 0:3: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:4: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:5: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:6: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:8: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:9: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:10: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:14: 'sampler2D' : sampler-constructor requires the extension GL_ARB_bindless_texture enabled ERROR: 0:15: 'sampler2D' : sampler-constructor first argument must be a scalar *texture* type ERROR: 0:16: 'sampler2D' : sampler-constructor first argument must be a scalar *texture* type ERROR: 0:17: 'sampler2D' : sampler-constructor second argument must be a scalar sampler or samplerShadow ERROR: 0:18: 'sampler2D' : sampler-constructor second argument must be a scalar sampler or samplerShadow ERROR: 0:19: 'sampler2D' : sampler-constructor second argument must be a scalar sampler or samplerShadow ERROR: 0:21: 'sampler3D' : sampler-constructor cannot make an array of samplers ERROR: 0:22: 'sampler2D' : sampler-constructor first argument must be a scalar *texture* type ERROR: 0:23: 'sampler2D' : sampler-constructor first argument must be a *texture* type matching the dimensionality and sampled type of the constructor ERROR: 0:28: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: s2D ERROR: 0:29: 'sampler3D' : sampler-constructor cannot make an array of samplers ERROR: 0:29: 'sampler3D' : sampler/image types can only be used in uniform variables or function parameters: s3d ERROR: 0:29: '=' : cannot convert from ' const float' to ' global 4-element array of highp sampler3D' ERROR: 0:31: 'location' : SPIR-V requires location for user input/output ERROR: 0:39: 'push_constant' : can only be used with a uniform ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan ERROR: 0:43: 'push_constant' : can only be used with a block ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block ERROR: 0:46: 'binding' : cannot be used with push_constant 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:58: 'binding' : sampler/texture/image requires layout(binding=X) 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: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:97: 'call argument' : sampler constructor must appear at point of use 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 SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/vulkan.vert.out000066400000000000000000000073751506534232700214730ustar00rootroot00000000000000vulkan.vert ERROR: 0:3: 'subpass input' : not supported in this stage: vertex ERROR: 0:3: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:4: 'subpass input' : not supported in this stage: vertex ERROR: 0:4: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:5: 'subpass input' : not supported in this stage: vertex ERROR: 0:5: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:6: 'subpass input' : not supported in this stage: vertex ERROR: 0:6: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:7: 'subpass input' : not supported in this stage: vertex ERROR: 0:7: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:8: 'subpass input' : not supported in this stage: vertex ERROR: 0:8: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:10: 'location' : SPIR-V requires location for user input/output ERROR: 0:12: 'constant_id' : can only be applied to a scalar ERROR: 0:13: 'constant_id' : specialization-constant id already used ERROR: 0:13: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:13: 'constant_id' : can only be applied to 'const'-qualified scalar ERROR: 0:13: 'constant_id' : cannot be applied to this type ERROR: 0:14: 'constant_id' : specialization-constant id is too large ERROR: 0:15: 'constant_id' : can only be applied to a scalar ERROR: 0:16: 'constant_id' : specialization-constant id already used ERROR: 0:16: 'constant_id' : cannot declare a default, can only be used on a scalar ERROR: 0:20: 'subpassLoad' : no matching overloaded function found ERROR: 0:20: 'assign' : cannot convert from ' const float' to ' smooth out highp 4-component vector of float' ERROR: 0:23: 'atomic counter types' : not allowed when using GLSL for Vulkan ERROR: 0:24: 'shared' : not allowed when generating SPIR-V ERROR: 0:25: 'packed' : not allowed when generating SPIR-V ERROR: 0:32: 'initializer' : can't use with types containing arrays sized with a specialization constant ERROR: 0:34: '=' : can't use with types containing arrays sized with a specialization constant ERROR: 0:35: '==' : can't use with types containing arrays sized with a specialization constant ERROR: 0:39: 'set' : cannot be used with push_constant ERROR: 0:54: '[]' : only outermost dimension of an array of arrays can be a specialization constant ERROR: 0:54: 'location' : SPIR-V requires location for user input/output ERROR: 0:58: 'location' : SPIR-V requires location for user input/output ERROR: 0:65: 'location' : overlapping use of location 10 ERROR: 0:68: 'location' : needs a literal integer ERROR: 0:68: 'component' : needs a literal integer ERROR: 0:69: 'binding' : needs a literal integer ERROR: 0:69: 'set' : needs a literal integer ERROR: 0:70: 'offset' : needs a literal integer ERROR: 0:71: 'align' : must be a power of 2 ERROR: 0:71: 'align' : needs a literal integer ERROR: 0:72: 'xfb_offset' : needs a literal integer ERROR: 0:73: 'xfb_buffer' : needs a literal integer ERROR: 0:74: 'xfb_stride' : needs a literal integer ERROR: 0:73: 'xfb_buffer' : member cannot contradict block (or what block inherited from global) ERROR: 0:72: 'xfb layout qualifier' : can only be used on an output ERROR: 0:73: 'xfb layout qualifier' : can only be used on an output ERROR: 0:74: 'xfb layout qualifier' : can only be used on an output ERROR: 0:76: 'input_attachment_index' : needs a literal integer ERROR: 0:76: 'input_attachment_index' : can only be used with a subpass ERROR: 0:77: 'constant_id' : needs a literal integer ERROR: 0:77: 'constant_id' : can only be applied to 'const'-qualified scalar ERROR: 0:77: 'constant_id' : can only be applied to a scalar ERROR: 54 compilation errors. No code generated. SPIR-V is not generated for failed compile or link glslang-16.0.0/Test/baseResults/web.array.frag.out000066400000000000000000000104431506534232700220120ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 74 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %colorOut OpExecutionMode %main OriginUpperLeft OpSource ESSL 310 OpName %main "main" OpName %foo_f1_5__ "foo(f1[5];" OpName %a "a" OpName %g4 "g4" OpName %g5 "g5" OpName %param "param" OpName %u "u" OpName %param_0 "param" OpName %colorOut "colorOut" OpDecorate %colorOut Location 0 %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %uint = OpTypeInt 32 0 %uint_5 = OpConstant %uint 5 %_arr_float_uint_5 = OpTypeArray %float %uint_5 %_ptr_Function__arr_float_uint_5 = OpTypePointer Function %_arr_float_uint_5 %uint_4 = OpConstant %uint 4 %_arr_float_uint_4 = OpTypeArray %float %uint_4 %13 = OpTypeFunction %_arr_float_uint_4 %_ptr_Function__arr_float_uint_5 %int = OpTypeInt 32 1 %int_0 = OpConstant %int 0 %_ptr_Function_float = OpTypePointer Function %float %int_1 = OpConstant %int 1 %int_2 = OpConstant %int 2 %int_3 = OpConstant %int 3 %_ptr_Private__arr_float_uint_4 = OpTypePointer Private %_arr_float_uint_4 %g4 = OpVariable %_ptr_Private__arr_float_uint_4 Private %_ptr_Private__arr_float_uint_5 = OpTypePointer Private %_arr_float_uint_5 %g5 = OpVariable %_ptr_Private__arr_float_uint_5 Private %float_1 = OpConstant %float 1 %float_2 = OpConstant %float 2 %float_3 = OpConstant %float 3 %float_4 = OpConstant %float 4 %45 = OpConstantComposite %_arr_float_uint_4 %float_1 %float_2 %float_3 %float_4 %bool = OpTypeBool %v2float = OpTypeVector %float 2 %_ptr_Output_v2float = OpTypePointer Output %v2float %colorOut = OpVariable %_ptr_Output_v2float Output %float_5 = OpConstant %float 5 %73 = OpConstantComposite %v2float %float_4 %float_5 %main = OpFunction %void None %3 %5 = OpLabel %param = OpVariable %_ptr_Function__arr_float_uint_5 Function %u = OpVariable %_ptr_Function__arr_float_uint_5 Function %param_0 = OpVariable %_ptr_Function__arr_float_uint_5 Function %39 = OpLoad %_arr_float_uint_5 %g5 OpStore %param %39 %40 = OpFunctionCall %_arr_float_uint_4 %foo_f1_5__ %param OpStore %g4 %40 %46 = OpLoad %_arr_float_uint_4 %g4 %48 = OpCompositeExtract %float %45 0 %49 = OpCompositeExtract %float %46 0 %50 = OpFOrdEqual %bool %48 %49 %51 = OpCompositeExtract %float %45 1 %52 = OpCompositeExtract %float %46 1 %53 = OpFOrdEqual %bool %51 %52 %54 = OpLogicalAnd %bool %50 %53 %55 = OpCompositeExtract %float %45 2 %56 = OpCompositeExtract %float %46 2 %57 = OpFOrdEqual %bool %55 %56 %58 = OpLogicalAnd %bool %54 %57 %59 = OpCompositeExtract %float %45 3 %60 = OpCompositeExtract %float %46 3 %61 = OpFOrdEqual %bool %59 %60 %62 = OpLogicalAnd %bool %58 %61 OpSelectionMerge %64 None OpBranchConditional %62 %63 %64 %63 = OpLabel OpBranch %64 %64 = OpLabel %67 = OpLoad %_arr_float_uint_5 %u OpStore %param_0 %67 %68 = OpFunctionCall %_arr_float_uint_4 %foo_f1_5__ %param_0 OpStore %colorOut %73 OpReturn OpFunctionEnd %foo_f1_5__ = OpFunction %_arr_float_uint_4 None %13 %a = OpFunctionParameter %_ptr_Function__arr_float_uint_5 %16 = OpLabel %20 = OpAccessChain %_ptr_Function_float %a %int_0 %21 = OpLoad %float %20 %23 = OpAccessChain %_ptr_Function_float %a %int_1 %24 = OpLoad %float %23 %26 = OpAccessChain %_ptr_Function_float %a %int_2 %27 = OpLoad %float %26 %29 = OpAccessChain %_ptr_Function_float %a %int_3 %30 = OpLoad %float %29 %31 = OpCompositeConstruct %_arr_float_uint_4 %21 %24 %27 %30 OpReturnValue %31 OpFunctionEnd glslang-16.0.0/Test/baseResults/web.basic.vert.out000066400000000000000000000051001506534232700220100ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 38 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %main "main" %outv4 %inv4 OpSource ESSL 310 OpName %main "main" OpName %outv4 "outv4" OpName %inv4 "inv4" OpName %uBlock "uBlock" OpMemberName %uBlock 0 "a" OpMemberName %uBlock 1 "b" OpMemberName %uBlock 2 "c" OpName %uInst "uInst" OpDecorate %outv4 Location 1 OpDecorate %inv4 Location 2 OpMemberDecorate %uBlock 0 Offset 0 OpMemberDecorate %uBlock 1 Offset 16 OpMemberDecorate %uBlock 2 Offset 32 OpDecorate %uBlock Block OpDecorate %uInst DescriptorSet 0 OpDecorate %uInst Binding 3 %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %outv4 = OpVariable %_ptr_Output_v4float Output %_ptr_Input_v4float = OpTypePointer Input %v4float %inv4 = OpVariable %_ptr_Input_v4float Input %int = OpTypeInt 32 1 %v4int = OpTypeVector %int 4 %uint = OpTypeInt 32 0 %v4uint = OpTypeVector %uint 4 %uBlock = OpTypeStruct %v4float %v4int %v4uint %_ptr_Uniform_uBlock = OpTypePointer Uniform %uBlock %uInst = OpVariable %_ptr_Uniform_uBlock Uniform %int_0 = OpConstant %int 0 %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %int_1 = OpConstant %int 1 %_ptr_Uniform_v4int = OpTypePointer Uniform %v4int %int_2 = OpConstant %int 2 %_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint %main = OpFunction %void None %3 %5 = OpLabel %12 = OpLoad %v4float %inv4 %13 = OpExtInst %v4float %1 Normalize %12 %23 = OpAccessChain %_ptr_Uniform_v4float %uInst %int_0 %24 = OpLoad %v4float %23 %25 = OpFMul %v4float %13 %24 %28 = OpAccessChain %_ptr_Uniform_v4int %uInst %int_1 %29 = OpLoad %v4int %28 %30 = OpConvertSToF %v4float %29 %31 = OpFMul %v4float %25 %30 %34 = OpAccessChain %_ptr_Uniform_v4uint %uInst %int_2 %35 = OpLoad %v4uint %34 %36 = OpConvertUToF %v4float %35 %37 = OpFMul %v4float %31 %36 OpStore %outv4 %37 OpReturn OpFunctionEnd glslang-16.0.0/Test/baseResults/web.builtins.frag.out000066400000000000000000000143121506534232700225240ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 69 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %gl_FragCoord %gl_FragDepth %sc %s2 %sf %c1D %c2D %c4D %c3D %ic1D %ic3D %ic4D OpExecutionMode %main OriginUpperLeft OpExecutionMode %main DepthReplacing OpSource ESSL 310 OpName %main "main" OpName %f "f" OpName %gl_FragCoord "gl_FragCoord" OpName %gl_FragDepth "gl_FragDepth" OpName %sc "sc" OpName %S2 "S2" OpMemberName %S2 0 "c" OpMemberName %S2 1 "f" OpName %s2 "s2" OpName %sf "sf" OpName %c1D "c1D" OpName %c2D "c2D" OpName %c4D "c4D" OpName %c3D "c3D" OpName %ic1D "ic1D" OpName %ic3D "ic3D" OpName %ic4D "ic4D" OpDecorate %f RelaxedPrecision OpDecorate %gl_FragCoord BuiltIn FragCoord OpDecorate %gl_FragDepth BuiltIn FragDepth OpDecorate %19 RelaxedPrecision OpDecorate %sc RelaxedPrecision OpDecorate %sc Location 0 OpMemberDecorate %S2 0 RelaxedPrecision OpMemberDecorate %S2 1 RelaxedPrecision OpDecorate %s2 Location 8 OpDecorate %30 RelaxedPrecision OpDecorate %sf RelaxedPrecision OpDecorate %sf Location 1 OpDecorate %34 RelaxedPrecision OpDecorate %c1D RelaxedPrecision OpDecorate %c1D Location 4 OpDecorate %36 RelaxedPrecision OpDecorate %37 RelaxedPrecision OpDecorate %38 RelaxedPrecision OpDecorate %39 RelaxedPrecision OpDecorate %c2D RelaxedPrecision OpDecorate %c2D Location 5 OpDecorate %43 RelaxedPrecision OpDecorate %44 RelaxedPrecision OpDecorate %45 RelaxedPrecision OpDecorate %46 RelaxedPrecision OpDecorate %47 RelaxedPrecision OpDecorate %c4D RelaxedPrecision OpDecorate %c4D Location 7 OpDecorate %49 RelaxedPrecision OpDecorate %50 RelaxedPrecision OpDecorate %51 RelaxedPrecision OpDecorate %52 RelaxedPrecision OpDecorate %53 RelaxedPrecision OpDecorate %c3D RelaxedPrecision OpDecorate %c3D Location 6 OpDecorate %55 RelaxedPrecision OpDecorate %56 RelaxedPrecision OpDecorate %ic1D RelaxedPrecision OpDecorate %ic1D Flat OpDecorate %ic1D Location 1 OpDecorate %ic3D RelaxedPrecision OpDecorate %ic3D Flat OpDecorate %ic3D Location 2 OpDecorate %ic4D RelaxedPrecision OpDecorate %ic4D Flat OpDecorate %ic4D Location 3 OpDecorate %68 RelaxedPrecision %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %_ptr_Function_float = OpTypePointer Function %float %v4float = OpTypeVector %float 4 %_ptr_Input_v4float = OpTypePointer Input %v4float %gl_FragCoord = OpVariable %_ptr_Input_v4float Input %uint = OpTypeInt 32 0 %uint_1 = OpConstant %uint 1 %_ptr_Input_float = OpTypePointer Input %float %_ptr_Output_float = OpTypePointer Output %float %gl_FragDepth = OpVariable %_ptr_Output_float Output %v3float = OpTypeVector %float 3 %_ptr_Output_v3float = OpTypePointer Output %v3float %sc = OpVariable %_ptr_Output_v3float Output %S2 = OpTypeStruct %v3float %float %_ptr_Input_S2 = OpTypePointer Input %S2 %s2 = OpVariable %_ptr_Input_S2 Input %int = OpTypeInt 32 1 %int_0 = OpConstant %int 0 %_ptr_Input_v3float = OpTypePointer Input %v3float %sf = OpVariable %_ptr_Output_float Output %int_1 = OpConstant %int 1 %c1D = OpVariable %_ptr_Input_float Input %v2float = OpTypeVector %float 2 %_ptr_Input_v2float = OpTypePointer Input %v2float %c2D = OpVariable %_ptr_Input_v2float Input %c4D = OpVariable %_ptr_Input_v4float Input %c3D = OpVariable %_ptr_Input_v3float Input %_ptr_Input_int = OpTypePointer Input %int %ic1D = OpVariable %_ptr_Input_int Input %v3int = OpTypeVector %int 3 %_ptr_Input_v3int = OpTypePointer Input %v3int %ic3D = OpVariable %_ptr_Input_v3int Input %v4int = OpTypeVector %int 4 %_ptr_Input_v4int = OpTypePointer Input %v4int %ic4D = OpVariable %_ptr_Input_v4int Input %v2int = OpTypeVector %int 2 %int_2 = OpConstant %int 2 %int_3 = OpConstant %int 3 %68 = OpConstantComposite %v2int %int_2 %int_3 %main = OpFunction %void None %3 %5 = OpLabel %f = OpVariable %_ptr_Function_float Function %15 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %16 = OpLoad %float %15 OpStore %f %16 %19 = OpLoad %float %f OpStore %gl_FragDepth %19 %29 = OpAccessChain %_ptr_Input_v3float %s2 %int_0 %30 = OpLoad %v3float %29 OpStore %sc %30 %33 = OpAccessChain %_ptr_Input_float %s2 %int_1 %34 = OpLoad %float %33 OpStore %sf %34 %36 = OpLoad %float %c1D %37 = OpExtInst %float %1 Sinh %36 %38 = OpLoad %float %c1D %39 = OpExtInst %float %1 Cosh %38 %43 = OpLoad %v2float %c2D %44 = OpExtInst %v2float %1 Tanh %43 %45 = OpVectorTimesScalar %v2float %44 %39 %46 = OpCompositeConstruct %v2float %37 %37 %47 = OpFAdd %v2float %46 %45 %49 = OpLoad %v4float %c4D %50 = OpExtInst %v4float %1 Asinh %49 %51 = OpLoad %v4float %c4D %52 = OpExtInst %v4float %1 Acosh %51 %53 = OpFAdd %v4float %50 %52 %55 = OpLoad %v3float %c3D %56 = OpExtInst %v3float %1 Atanh %55 OpReturn OpFunctionEnd glslang-16.0.0/Test/baseResults/web.builtins.vert.out000066400000000000000000000051041506534232700225640ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 33 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %main "main" %gl_Position %ps %gl_VertexIndex %gl_PointSize %gl_InstanceIndex OpSource ESSL 310 OpName %main "main" OpName %gl_Position "gl_Position" OpName %ps "ps" OpName %gl_VertexIndex "gl_VertexIndex" OpName %gl_PointSize "gl_PointSize" OpName %gl_InstanceIndex "gl_InstanceIndex" OpDecorate %gl_Position Invariant OpDecorate %gl_Position BuiltIn Position OpDecorate %ps RelaxedPrecision OpDecorate %ps Location 0 OpDecorate %12 RelaxedPrecision OpDecorate %gl_VertexIndex BuiltIn VertexIndex OpDecorate %gl_PointSize BuiltIn PointSize OpDecorate %25 RelaxedPrecision OpDecorate %gl_InstanceIndex BuiltIn InstanceIndex %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %gl_Position = OpVariable %_ptr_Output_v4float Output %_ptr_Input_float = OpTypePointer Input %float %ps = OpVariable %_ptr_Input_float Input %int = OpTypeInt 32 1 %int_4 = OpConstant %int 4 %_ptr_Input_int = OpTypePointer Input %int %gl_VertexIndex = OpVariable %_ptr_Input_int Input %_ptr_Output_float = OpTypePointer Output %float %gl_PointSize = OpVariable %_ptr_Output_float Output %int_5 = OpConstant %int 5 %gl_InstanceIndex = OpVariable %_ptr_Input_int Input %main = OpFunction %void None %3 %5 = OpLabel %12 = OpLoad %float %ps %13 = OpCompositeConstruct %v4float %12 %12 %12 %12 OpStore %gl_Position %13 %18 = OpLoad %int %gl_VertexIndex %19 = OpISub %int %int_4 %18 %20 = OpConvertSToF %float %19 %21 = OpLoad %v4float %gl_Position %22 = OpVectorTimesScalar %v4float %21 %20 OpStore %gl_Position %22 %25 = OpLoad %float %ps OpStore %gl_PointSize %25 %28 = OpLoad %int %gl_InstanceIndex %29 = OpISub %int %int_5 %28 %30 = OpConvertSToF %float %29 %31 = OpLoad %float %gl_PointSize %32 = OpFMul %float %31 %30 OpStore %gl_PointSize %32 OpReturn OpFunctionEnd glslang-16.0.0/Test/baseResults/web.comp.out000066400000000000000000000170021506534232700207120ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 108 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint GLCompute %main "main" %gl_NumWorkGroups %gl_WorkGroupID %gl_LocalInvocationID %gl_GlobalInvocationID %gl_LocalInvocationIndex OpExecutionMode %main LocalSize 2 5 7 OpSource ESSL 310 OpName %main "main" OpName %bName "bName" OpMemberName %bName 0 "size" OpMemberName %bName 1 "count" OpMemberName %bName 2 "data" OpName %bInst "bInst" OpName %s "s" OpName %arrX "arrX" OpName %arrY "arrY" OpName %arrZ "arrZ" OpName %gl_NumWorkGroups "gl_NumWorkGroups" OpName %gl_WorkGroupID "gl_WorkGroupID" OpName %gl_LocalInvocationID "gl_LocalInvocationID" OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" OpName %gl_LocalInvocationIndex "gl_LocalInvocationIndex" OpDecorate %_runtimearr_v4float ArrayStride 16 OpMemberDecorate %bName 0 Offset 0 OpMemberDecorate %bName 1 Offset 16 OpMemberDecorate %bName 2 Offset 32 OpDecorate %bName BufferBlock OpDecorate %bInst DescriptorSet 0 OpDecorate %bInst Binding 0 OpDecorate %39 SpecId 18 OpDecorate %41 SpecId 19 OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize OpDecorate %gl_NumWorkGroups BuiltIn NumWorkgroups OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId OpDecorate %gl_LocalInvocationIndex BuiltIn LocalInvocationIndex %void = OpTypeVoid %3 = OpTypeFunction %void %uint = OpTypeInt 32 0 %uint_2 = OpConstant %uint 2 %uint_264 = OpConstant %uint 264 %int = OpTypeInt 32 1 %v3uint = OpTypeVector %uint 3 %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_runtimearr_v4float = OpTypeRuntimeArray %v4float %bName = OpTypeStruct %int %v3uint %_runtimearr_v4float %_ptr_Uniform_bName = OpTypePointer Uniform %bName %bInst = OpVariable %_ptr_Uniform_bName Uniform %int_2 = OpConstant %int 2 %int_0 = OpConstant %int 0 %_ptr_Uniform_int = OpTypePointer Uniform %int %float_7 = OpConstant %float 7 %24 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7 %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %uint_1 = OpConstant %uint 1 %uint_3400 = OpConstant %uint 3400 %uint_72 = OpConstant %uint 72 %uint_197645 = OpConstant %uint 197645 %_arr_v4float_uint_197645 = OpTypeArray %v4float %uint_197645 %_ptr_Workgroup__arr_v4float_uint_197645 = OpTypePointer Workgroup %_arr_v4float_uint_197645 %s = OpVariable %_ptr_Workgroup__arr_v4float_uint_197645 Workgroup %int_3 = OpConstant %int 3 %float_0 = OpConstant %float 0 %39 = OpSpecConstant %uint 2 %uint_5 = OpConstant %uint 5 %41 = OpSpecConstant %uint 7 %gl_WorkGroupSize = OpSpecConstantComposite %v3uint %39 %uint_5 %41 %uint_0 = OpConstant %uint 0 %_arr_int_44 = OpTypeArray %int %44 %_ptr_Private__arr_int_44 = OpTypePointer Private %_arr_int_44 %arrX = OpVariable %_ptr_Private__arr_int_44 Private %_ptr_Private_int = OpTypePointer Private %int %_arr_int_52 = OpTypeArray %int %52 %_ptr_Private__arr_int_52 = OpTypePointer Private %_arr_int_52 %arrY = OpVariable %_ptr_Private__arr_int_52 Private %_arr_int_59 = OpTypeArray %int %59 %_ptr_Private__arr_int_59 = OpTypePointer Private %_arr_int_59 %arrZ = OpVariable %_ptr_Private__arr_int_59 Private %_ptr_Workgroup_v4float = OpTypePointer Workgroup %v4float %int_1 = OpConstant %int 1 %_ptr_Input_v3uint = OpTypePointer Input %v3uint %gl_NumWorkGroups = OpVariable %_ptr_Input_v3uint Input %gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input %gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input %gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input %_ptr_Input_uint = OpTypePointer Input %uint %gl_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input %_ptr_Uniform_v3uint = OpTypePointer Uniform %v3uint %int_5 = OpConstant %int 5 %int_197645 = OpConstant %int 197645 %main = OpFunction %void None %3 %5 = OpLabel OpControlBarrier %uint_2 %uint_2 %uint_264 %20 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %21 = OpLoad %int %20 %22 = OpSDiv %int %21 %int_2 %26 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22 %27 = OpLoad %v4float %26 %28 = OpFMul %v4float %27 %24 %29 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22 OpStore %29 %28 OpMemoryBarrier %uint_1 %uint_3400 OpMemoryBarrier %uint_2 %uint_3400 OpMemoryBarrier %uint_1 %uint_264 OpMemoryBarrier %uint_1 %uint_72 %44 = OpCompositeExtract %uint %gl_WorkGroupSize 0 %49 = OpAccessChain %_ptr_Private_int %arrX %int_0 %50 = OpLoad %int %49 %51 = OpConvertSToF %float %50 %52 = OpCompositeExtract %uint %gl_WorkGroupSize 1 %56 = OpAccessChain %_ptr_Private_int %arrY %int_0 %57 = OpLoad %int %56 %58 = OpConvertSToF %float %57 %59 = OpCompositeExtract %uint %gl_WorkGroupSize 2 %63 = OpAccessChain %_ptr_Private_int %arrZ %int_0 %64 = OpLoad %int %63 %65 = OpConvertSToF %float %64 %66 = OpCompositeConstruct %v4float %float_0 %51 %58 %65 %68 = OpAccessChain %_ptr_Workgroup_v4float %s %int_3 OpStore %68 %66 %72 = OpLoad %v3uint %gl_NumWorkGroups %73 = OpIAdd %v3uint %72 %gl_WorkGroupSize %75 = OpLoad %v3uint %gl_WorkGroupID %76 = OpIAdd %v3uint %73 %75 %78 = OpLoad %v3uint %gl_LocalInvocationID %79 = OpIAdd %v3uint %76 %78 %81 = OpLoad %v3uint %gl_GlobalInvocationID %84 = OpLoad %uint %gl_LocalInvocationIndex %85 = OpCompositeConstruct %v3uint %84 %84 %84 %86 = OpIMul %v3uint %81 %85 %87 = OpIAdd %v3uint %79 %86 %89 = OpAccessChain %_ptr_Uniform_v3uint %bInst %int_1 OpStore %89 %87 %90 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %91 = OpAtomicIAdd %int %90 %uint_1 %uint_0 %int_2 %92 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %93 = OpAtomicSMin %int %92 %uint_1 %uint_0 %int_2 %94 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %95 = OpAtomicSMax %int %94 %uint_1 %uint_0 %int_2 %96 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %97 = OpAtomicAnd %int %96 %uint_1 %uint_0 %int_2 %98 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %99 = OpAtomicOr %int %98 %uint_1 %uint_0 %int_2 %100 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %101 = OpAtomicXor %int %100 %uint_1 %uint_0 %int_2 %102 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %103 = OpAtomicExchange %int %102 %uint_1 %uint_0 %int_2 %104 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 %106 = OpAtomicCompareExchange %int %104 %uint_1 %uint_0 %uint_0 %int_2 %int_5 OpReturn OpFunctionEnd glslang-16.0.0/Test/baseResults/web.controlFlow.frag.out000066400000000000000000000312561506534232700232110ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 193 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %x %BaseColor %Count %bigColor %outColor %v4 %f_0 OpExecutionMode %main OriginUpperLeft OpSource ESSL 310 OpName %main "main" OpName %c "c" OpName %f "f" OpName %x "x" OpName %d "d" OpName %color "color" OpName %BaseColor "BaseColor" OpName %i "i" OpName %Count "Count" OpName %bigColor "bigColor" OpName %outColor "outColor" OpName %sum "sum" OpName %i_0 "i" OpName %v4 "v4" OpName %i_1 "i" OpName %tv4 "tv4" OpName %r "r" OpName %i_2 "i" OpName %i_3 "i" OpName %i_4 "i" OpName %A "A" OpName %B "B" OpName %C "C" OpName %D "D" OpName %f_0 "f" OpDecorate %f RelaxedPrecision OpDecorate %x Location 0 OpDecorate %color RelaxedPrecision OpDecorate %BaseColor RelaxedPrecision OpDecorate %BaseColor Location 2 OpDecorate %47 RelaxedPrecision OpDecorate %Count Flat OpDecorate %Count Location 4 OpDecorate %bigColor RelaxedPrecision OpDecorate %bigColor Location 1 OpDecorate %63 RelaxedPrecision OpDecorate %64 RelaxedPrecision OpDecorate %65 RelaxedPrecision OpDecorate %outColor RelaxedPrecision OpDecorate %outColor Location 0 OpDecorate %71 RelaxedPrecision OpDecorate %sum RelaxedPrecision OpDecorate %v4 Flat OpDecorate %v4 Location 5 OpDecorate %91 RelaxedPrecision OpDecorate %92 RelaxedPrecision OpDecorate %93 RelaxedPrecision OpDecorate %tv4 RelaxedPrecision OpDecorate %111 RelaxedPrecision OpDecorate %115 RelaxedPrecision OpDecorate %116 RelaxedPrecision OpDecorate %117 RelaxedPrecision OpDecorate %118 RelaxedPrecision OpDecorate %119 RelaxedPrecision OpDecorate %120 RelaxedPrecision OpDecorate %r RelaxedPrecision OpDecorate %123 RelaxedPrecision OpDecorate %124 RelaxedPrecision OpDecorate %136 RelaxedPrecision OpDecorate %141 RelaxedPrecision OpDecorate %142 RelaxedPrecision OpDecorate %143 RelaxedPrecision OpDecorate %144 RelaxedPrecision OpDecorate %145 RelaxedPrecision OpDecorate %157 RelaxedPrecision OpDecorate %158 RelaxedPrecision OpDecorate %159 RelaxedPrecision OpDecorate %f_0 RelaxedPrecision OpDecorate %f_0 Location 3 %void = OpTypeVoid %3 = OpTypeFunction %void %int = OpTypeInt 32 1 %_ptr_Private_int = OpTypePointer Private %int %c = OpVariable %_ptr_Private_int Private %float = OpTypeFloat 32 %_ptr_Function_float = OpTypePointer Function %float %_ptr_Input_float = OpTypePointer Input %float %x = OpVariable %_ptr_Input_float Input %d = OpVariable %_ptr_Private_int Private %v4float = OpTypeVector %float 4 %_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Input_v4float = OpTypePointer Input %v4float %BaseColor = OpVariable %_ptr_Input_v4float Input %_ptr_Function_int = OpTypePointer Function %int %int_0 = OpConstant %int 0 %_ptr_Input_int = OpTypePointer Input %int %Count = OpVariable %_ptr_Input_int Input %bool = OpTypeBool %bigColor = OpVariable %_ptr_Input_v4float Input %int_1 = OpConstant %int 1 %_ptr_Output_v4float = OpTypePointer Output %v4float %outColor = OpVariable %_ptr_Output_v4float Output %float_0 = OpConstant %float 0 %int_4 = OpConstant %int 4 %uint = OpTypeInt 32 0 %v4uint = OpTypeVector %uint 4 %_ptr_Input_v4uint = OpTypePointer Input %v4uint %v4 = OpVariable %_ptr_Input_v4uint Input %_ptr_Input_uint = OpTypePointer Input %uint %uint_4 = OpConstant %uint 4 %v3float = OpTypeVector %float 3 %uint_3 = OpConstant %uint 3 %int_16 = OpConstant %int 16 %int_10 = OpConstant %int 10 %int_2 = OpConstant %int 2 %int_5 = OpConstant %int 5 %int_3 = OpConstant %int 3 %f_0 = OpVariable %_ptr_Input_float Input %main = OpFunction %void None %3 %5 = OpLabel %f = OpVariable %_ptr_Function_float Function %color = OpVariable %_ptr_Function_v4float Function %i = OpVariable %_ptr_Function_int Function %sum = OpVariable %_ptr_Function_float Function %i_0 = OpVariable %_ptr_Function_int Function %i_1 = OpVariable %_ptr_Function_int Function %tv4 = OpVariable %_ptr_Function_v4float Function %r = OpVariable %_ptr_Function_v4float Function %i_2 = OpVariable %_ptr_Function_int Function %i_3 = OpVariable %_ptr_Function_int Function %i_4 = OpVariable %_ptr_Function_int Function %A = OpVariable %_ptr_Function_int Function %B = OpVariable %_ptr_Function_int Function %C = OpVariable %_ptr_Function_int Function %D = OpVariable %_ptr_Function_int Function %9 = OpLoad %int %c OpSelectionMerge %13 None OpSwitch %9 %12 1 %10 2 %11 %12 = OpLabel %39 = OpLoad %float %x %40 = OpExtInst %float %1 Tan %39 OpStore %f %40 OpBranch %13 %10 = OpLabel %19 = OpLoad %float %x %20 = OpExtInst %float %1 Sin %19 OpStore %f %20 OpBranch %13 %11 = OpLabel %23 = OpLoad %int %d OpSelectionMerge %26 None OpSwitch %23 %26 1 %24 2 %25 %24 = OpLabel %27 = OpLoad %float %x %28 = OpLoad %float %x %29 = OpFMul %float %27 %28 %30 = OpLoad %float %x %31 = OpFMul %float %29 %30 OpStore %f %31 OpBranch %26 %25 = OpLabel %33 = OpLoad %float %x %34 = OpLoad %float %x %35 = OpFMul %float %33 %34 OpStore %f %35 OpBranch %26 %26 = OpLabel OpBranch %13 %13 = OpLabel %47 = OpLoad %v4float %BaseColor OpStore %color %47 OpStore %i %int_0 OpBranch %51 %51 = OpLabel OpLoopMerge %53 %54 None OpBranch %55 %55 = OpLabel %56 = OpLoad %int %i %59 = OpLoad %int %Count %61 = OpSLessThan %bool %56 %59 OpBranchConditional %61 %52 %53 %52 = OpLabel %63 = OpLoad %v4float %bigColor %64 = OpLoad %v4float %color %65 = OpFAdd %v4float %64 %63 OpStore %color %65 OpBranch %54 %54 = OpLabel %66 = OpLoad %int %i %68 = OpIAdd %int %66 %int_1 OpStore %i %68 OpBranch %51 %53 = OpLabel %71 = OpLoad %v4float %color OpStore %outColor %71 OpStore %sum %float_0 OpStore %i_0 %int_0 OpBranch %75 %75 = OpLabel OpLoopMerge %77 %78 None OpBranch %79 %79 = OpLabel %80 = OpLoad %int %i_0 %82 = OpSLessThan %bool %80 %int_4 OpBranchConditional %82 %76 %77 %76 = OpLabel %87 = OpLoad %int %i_0 %89 = OpAccessChain %_ptr_Input_uint %v4 %87 %90 = OpLoad %uint %89 %91 = OpConvertUToF %float %90 %92 = OpLoad %float %sum %93 = OpFAdd %float %92 %91 OpStore %sum %93 OpBranch %78 %78 = OpLabel %94 = OpLoad %int %i_0 %95 = OpIAdd %int %94 %int_1 OpStore %i_0 %95 OpBranch %75 %77 = OpLabel OpStore %i_1 %int_0 OpBranch %97 %97 = OpLabel OpLoopMerge %99 %100 None OpBranch %101 %101 = OpLabel %102 = OpLoad %int %i_1 %103 = OpSLessThan %bool %102 %int_4 OpBranchConditional %103 %98 %99 %98 = OpLabel %105 = OpLoad %int %i_1 %106 = OpLoad %int %i_1 %107 = OpAccessChain %_ptr_Input_uint %v4 %106 %108 = OpLoad %uint %107 %110 = OpIMul %uint %108 %uint_4 %111 = OpConvertUToF %float %110 %112 = OpAccessChain %_ptr_Function_float %tv4 %105 OpStore %112 %111 OpBranch %100 %100 = OpLabel %113 = OpLoad %int %i_1 %114 = OpIAdd %int %113 %int_1 OpStore %i_1 %114 OpBranch %97 %99 = OpLabel %115 = OpLoad %float %sum %116 = OpCompositeConstruct %v4float %115 %115 %115 %115 %117 = OpLoad %v4float %tv4 %118 = OpFAdd %v4float %116 %117 %119 = OpLoad %v4float %outColor %120 = OpFAdd %v4float %119 %118 OpStore %outColor %120 %123 = OpLoad %v4float %BaseColor %124 = OpVectorShuffle %v3float %123 %123 0 1 2 %125 = OpLoad %v4float %r %126 = OpVectorShuffle %v4float %125 %124 4 5 6 3 OpStore %r %126 OpStore %i_2 %int_0 OpBranch %128 %128 = OpLabel OpLoopMerge %130 %131 None OpBranch %132 %132 = OpLabel %133 = OpLoad %int %i_2 %134 = OpLoad %int %Count %135 = OpSLessThan %bool %133 %134 OpBranchConditional %135 %129 %130 %129 = OpLabel %136 = OpLoad %float %f %138 = OpAccessChain %_ptr_Function_float %r %uint_3 OpStore %138 %136 OpBranch %131 %131 = OpLabel %139 = OpLoad %int %i_2 %140 = OpIAdd %int %139 %int_1 OpStore %i_2 %140 OpBranch %128 %130 = OpLabel %141 = OpLoad %v4float %r %142 = OpVectorShuffle %v3float %141 %141 0 1 2 %143 = OpLoad %v4float %outColor %144 = OpVectorShuffle %v3float %143 %143 0 1 2 %145 = OpFAdd %v3float %144 %142 %146 = OpLoad %v4float %outColor %147 = OpVectorShuffle %v4float %146 %145 4 5 6 3 OpStore %outColor %147 OpStore %i_3 %int_0 OpBranch %149 %149 = OpLabel OpLoopMerge %151 %152 None OpBranch %153 %153 = OpLabel %154 = OpLoad %int %i_3 %156 = OpSLessThan %bool %154 %int_16 OpBranchConditional %156 %150 %151 %150 = OpLabel %157 = OpLoad %float %f %158 = OpLoad %v4float %outColor %159 = OpVectorTimesScalar %v4float %158 %157 OpStore %outColor %159 OpBranch %152 %152 = OpLabel %160 = OpLoad %int %i_3 %161 = OpIAdd %int %160 %int_4 OpStore %i_3 %161 OpBranch %149 %151 = OpLabel OpStore %i_4 %int_0 OpBranch %163 %163 = OpLabel OpLoopMerge %165 %166 None OpBranch %167 %167 = OpLabel %168 = OpLoad %int %i_4 %170 = OpSLessThan %bool %168 %int_10 OpBranchConditional %170 %164 %165 %164 = OpLabel OpStore %A %int_1 %172 = OpLoad %int %i_4 %174 = OpSMod %int %172 %int_2 %175 = OpIEqual %bool %174 %int_0 OpSelectionMerge %177 None OpBranchConditional %175 %176 %177 %176 = OpLabel OpStore %B %int_2 OpBranch %166 %177 = OpLabel %181 = OpLoad %int %i_4 %183 = OpSMod %int %181 %int_5 %184 = OpIEqual %bool %183 %int_0 OpSelectionMerge %186 None OpBranchConditional %184 %185 %186 %185 = OpLabel OpStore %B %int_2 OpBranch %165 %186 = OpLabel %188 = OpLoad %int %i_4 %189 = OpIAdd %int %188 %int_1 OpStore %i_4 %189 OpBranch %166 %166 = OpLabel OpBranch %163 %165 = OpLabel OpStore %D %int_3 OpReturn OpFunctionEnd glslang-16.0.0/Test/baseResults/web.operations.frag.out000066400000000000000000000326011506534232700230570ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 207 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" OpExecutionMode %main OriginUpperLeft OpSource ESSL 310 OpName %main "main" OpName %f "f" OpName %v4 "v4" OpName %u "u" OpName %uv4 "uv4" OpName %iv3 "iv3" OpName %i "i" OpName %uv3 "uv3" OpName %m2 "m2" OpName %iv4 "iv4" OpName %m4 "m4" OpName %a "a" OpName %S "S" OpMemberName %S 0 "i" OpName %s "s" OpName %b "b" OpName %arr "arr" OpName %arr2 "arr2" OpName %block "block" OpMemberName %block 0 "f" OpName %instanceName "instanceName" OpDecorate %u RelaxedPrecision OpDecorate %18 RelaxedPrecision OpDecorate %19 RelaxedPrecision OpDecorate %20 RelaxedPrecision OpDecorate %uv4 RelaxedPrecision OpDecorate %24 RelaxedPrecision OpDecorate %25 RelaxedPrecision OpDecorate %26 RelaxedPrecision OpDecorate %27 RelaxedPrecision OpDecorate %iv3 RelaxedPrecision OpDecorate %32 RelaxedPrecision OpDecorate %33 RelaxedPrecision OpDecorate %34 RelaxedPrecision OpDecorate %i RelaxedPrecision OpDecorate %38 RelaxedPrecision OpDecorate %39 RelaxedPrecision OpDecorate %uv3 RelaxedPrecision OpDecorate %43 RelaxedPrecision OpDecorate %45 RelaxedPrecision OpDecorate %46 RelaxedPrecision OpDecorate %iv4 RelaxedPrecision OpDecorate %62 RelaxedPrecision OpDecorate %64 RelaxedPrecision OpDecorate %65 RelaxedPrecision OpDecorate %104 RelaxedPrecision OpDecorate %105 RelaxedPrecision OpMemberDecorate %S 0 RelaxedPrecision OpDecorate %153 RelaxedPrecision OpDecorate %154 RelaxedPrecision OpDecorate %155 RelaxedPrecision OpDecorate %156 RelaxedPrecision OpDecorate %157 RelaxedPrecision OpDecorate %158 RelaxedPrecision OpDecorate %159 RelaxedPrecision OpDecorate %160 RelaxedPrecision OpDecorate %161 RelaxedPrecision OpDecorate %162 RelaxedPrecision OpDecorate %163 RelaxedPrecision OpDecorate %164 RelaxedPrecision OpDecorate %165 RelaxedPrecision OpDecorate %166 RelaxedPrecision OpDecorate %167 RelaxedPrecision OpDecorate %168 RelaxedPrecision OpDecorate %169 RelaxedPrecision OpDecorate %170 RelaxedPrecision OpDecorate %171 RelaxedPrecision OpDecorate %172 RelaxedPrecision OpDecorate %173 RelaxedPrecision OpDecorate %174 RelaxedPrecision OpDecorate %175 RelaxedPrecision OpDecorate %176 RelaxedPrecision OpDecorate %177 RelaxedPrecision OpDecorate %178 RelaxedPrecision OpDecorate %179 RelaxedPrecision OpDecorate %180 RelaxedPrecision OpDecorate %181 RelaxedPrecision OpDecorate %182 RelaxedPrecision OpDecorate %183 RelaxedPrecision OpDecorate %184 RelaxedPrecision OpDecorate %185 RelaxedPrecision OpDecorate %186 RelaxedPrecision OpDecorate %187 RelaxedPrecision OpDecorate %188 RelaxedPrecision OpDecorate %189 RelaxedPrecision OpDecorate %190 RelaxedPrecision OpDecorate %191 RelaxedPrecision OpDecorate %192 RelaxedPrecision OpDecorate %193 RelaxedPrecision OpDecorate %194 RelaxedPrecision OpDecorate %arr RelaxedPrecision OpDecorate %arr2 RelaxedPrecision OpMemberDecorate %block 0 RelaxedPrecision OpMemberDecorate %block 0 Offset 0 OpDecorate %block Block OpDecorate %instanceName DescriptorSet 0 OpDecorate %instanceName Binding 0 %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %_ptr_Function_float = OpTypePointer Function %float %v4float = OpTypeVector %float 4 %_ptr_Function_v4float = OpTypePointer Function %v4float %uint = OpTypeInt 32 0 %_ptr_Function_uint = OpTypePointer Function %uint %v4uint = OpTypeVector %uint 4 %_ptr_Function_v4uint = OpTypePointer Function %v4uint %int = OpTypeInt 32 1 %v3int = OpTypeVector %int 3 %_ptr_Function_v3int = OpTypePointer Function %v3int %_ptr_Function_int = OpTypePointer Function %int %int_3 = OpConstant %int 3 %v3uint = OpTypeVector %uint 3 %_ptr_Function_v3uint = OpTypePointer Function %v3uint %uint_4 = OpConstant %uint 4 %v2float = OpTypeVector %float 2 %mat2v2float = OpTypeMatrix %v2float 2 %_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float %float_1 = OpConstant %float 1 %v4int = OpTypeVector %int 4 %_ptr_Function_v4int = OpTypePointer Function %v4int %int_1 = OpConstant %int 1 %mat4v4float = OpTypeMatrix %v4float 4 %_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float %bool = OpTypeBool %v4bool = OpTypeVector %bool 4 %v2bool = OpTypeVector %bool 2 %uint_5 = OpConstant %uint 5 %_arr_float_uint_5 = OpTypeArray %float %uint_5 %_ptr_Private__arr_float_uint_5 = OpTypePointer Private %_arr_float_uint_5 %a = OpVariable %_ptr_Private__arr_float_uint_5 Private %S = OpTypeStruct %int %_ptr_Private_S = OpTypePointer Private %S %s = OpVariable %_ptr_Private_S Private %_ptr_Function_bool = OpTypePointer Function %bool %uint_2 = OpConstant %uint 2 %_arr_int_uint_2 = OpTypeArray %int %uint_2 %_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2 %uint_3 = OpConstant %uint 3 %_arr_int_uint_3 = OpTypeArray %int %uint_3 %_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3 %int_2 = OpConstant %int 2 %block = OpTypeStruct %float %_ptr_Uniform_block = OpTypePointer Uniform %block %instanceName = OpVariable %_ptr_Uniform_block Uniform %main = OpFunction %void None %3 %5 = OpLabel %f = OpVariable %_ptr_Function_float Function %v4 = OpVariable %_ptr_Function_v4float Function %u = OpVariable %_ptr_Function_uint Function %uv4 = OpVariable %_ptr_Function_v4uint Function %iv3 = OpVariable %_ptr_Function_v3int Function %i = OpVariable %_ptr_Function_int Function %uv3 = OpVariable %_ptr_Function_v3uint Function %m2 = OpVariable %_ptr_Function_mat2v2float Function %iv4 = OpVariable %_ptr_Function_v4int Function %m4 = OpVariable %_ptr_Function_mat4v4float Function %b = OpVariable %_ptr_Function_bool Function %arr = OpVariable %_ptr_Function__arr_int_uint_2 Function %arr2 = OpVariable %_ptr_Function__arr_int_uint_3 Function %9 = OpLoad %float %f %13 = OpLoad %v4float %v4 %14 = OpVectorTimesScalar %v4float %13 %9 %18 = OpLoad %uint %u %19 = OpLoad %uint %u %20 = OpIAdd %uint %18 %19 %24 = OpLoad %v4uint %uv4 %25 = OpLoad %uint %u %26 = OpCompositeConstruct %v4uint %25 %25 %25 %25 %27 = OpUDiv %v4uint %24 %26 %32 = OpLoad %v3int %iv3 %33 = OpLoad %v3int %iv3 %34 = OpISub %v3int %33 %32 OpStore %iv3 %34 %38 = OpLoad %int %i %39 = OpSMod %int %38 %int_3 OpStore %i %39 %43 = OpLoad %v3uint %uv3 %45 = OpCompositeConstruct %v3uint %uint_4 %uint_4 %uint_4 %46 = OpUMod %v3uint %43 %45 %51 = OpLoad %mat2v2float %m2 %53 = OpCompositeConstruct %v2float %float_1 %float_1 %54 = OpCompositeExtract %v2float %51 0 %55 = OpFSub %v2float %54 %53 %56 = OpCompositeExtract %v2float %51 1 %57 = OpFSub %v2float %56 %53 %58 = OpCompositeConstruct %mat2v2float %55 %57 OpStore %m2 %58 %62 = OpLoad %v4int %iv4 %64 = OpCompositeConstruct %v4int %int_1 %int_1 %int_1 %int_1 %65 = OpIAdd %v4int %62 %64 OpStore %iv4 %65 %69 = OpLoad %mat4v4float %m4 %70 = OpLoad %mat4v4float %m4 %72 = OpCompositeExtract %v4float %69 0 %73 = OpCompositeExtract %v4float %70 0 %75 = OpFUnordNotEqual %v4bool %72 %73 %76 = OpAny %bool %75 %77 = OpCompositeExtract %v4float %69 1 %78 = OpCompositeExtract %v4float %70 1 %79 = OpFUnordNotEqual %v4bool %77 %78 %80 = OpAny %bool %79 %81 = OpLogicalOr %bool %76 %80 %82 = OpCompositeExtract %v4float %69 2 %83 = OpCompositeExtract %v4float %70 2 %84 = OpFUnordNotEqual %v4bool %82 %83 %85 = OpAny %bool %84 %86 = OpLogicalOr %bool %81 %85 %87 = OpCompositeExtract %v4float %69 3 %88 = OpCompositeExtract %v4float %70 3 %89 = OpFUnordNotEqual %v4bool %87 %88 %90 = OpAny %bool %89 %91 = OpLogicalOr %bool %86 %90 %92 = OpLoad %mat2v2float %m2 %93 = OpLoad %mat2v2float %m2 %94 = OpCompositeExtract %v2float %92 0 %95 = OpCompositeExtract %v2float %93 0 %97 = OpFOrdEqual %v2bool %94 %95 %98 = OpAll %bool %97 %99 = OpCompositeExtract %v2float %92 1 %100 = OpCompositeExtract %v2float %93 1 %101 = OpFOrdEqual %v2bool %99 %100 %102 = OpAll %bool %101 %103 = OpLogicalAnd %bool %98 %102 %104 = OpLoad %int %i %105 = OpLoad %int %i %106 = OpSLessThanEqual %bool %104 %105 %111 = OpLoad %_arr_float_uint_5 %a %112 = OpLoad %_arr_float_uint_5 %a %113 = OpCompositeExtract %float %111 0 %114 = OpCompositeExtract %float %112 0 %115 = OpFOrdEqual %bool %113 %114 %116 = OpCompositeExtract %float %111 1 %117 = OpCompositeExtract %float %112 1 %118 = OpFOrdEqual %bool %116 %117 %119 = OpLogicalAnd %bool %115 %118 %120 = OpCompositeExtract %float %111 2 %121 = OpCompositeExtract %float %112 2 %122 = OpFOrdEqual %bool %120 %121 %123 = OpLogicalAnd %bool %119 %122 %124 = OpCompositeExtract %float %111 3 %125 = OpCompositeExtract %float %112 3 %126 = OpFOrdEqual %bool %124 %125 %127 = OpLogicalAnd %bool %123 %126 %128 = OpCompositeExtract %float %111 4 %129 = OpCompositeExtract %float %112 4 %130 = OpFOrdEqual %bool %128 %129 %131 = OpLogicalAnd %bool %127 %130 %135 = OpLoad %S %s %136 = OpLoad %S %s %137 = OpCompositeExtract %int %135 0 %138 = OpCompositeExtract %int %136 0 %139 = OpINotEqual %bool %137 %138 %142 = OpLoad %bool %b %143 = OpLoad %bool %b %144 = OpLogicalAnd %bool %142 %143 %145 = OpLoad %bool %b %146 = OpLoad %bool %b %147 = OpLogicalOr %bool %145 %146 %148 = OpLoad %bool %b %149 = OpLoad %bool %b %150 = OpLogicalNotEqual %bool %148 %149 %151 = OpLoad %bool %b %152 = OpLogicalNot %bool %151 %153 = OpLoad %int %i %154 = OpNot %int %153 %155 = OpLoad %uint %u %156 = OpNot %uint %155 %157 = OpLoad %v3uint %uv3 %158 = OpNot %v3uint %157 %159 = OpLoad %v3int %iv3 %160 = OpNot %v3int %159 %161 = OpLoad %int %i %162 = OpLoad %v3uint %uv3 %163 = OpCompositeConstruct %v3int %161 %161 %161 %164 = OpShiftLeftLogical %v3uint %162 %163 OpStore %uv3 %164 %165 = OpLoad %int %i %166 = OpLoad %int %i %167 = OpShiftRightArithmetic %int %165 %166 %168 = OpLoad %uint %u %169 = OpLoad %uint %u %170 = OpShiftLeftLogical %uint %168 %169 %171 = OpLoad %v3int %iv3 %172 = OpLoad %v3int %iv3 %173 = OpShiftRightArithmetic %v3int %171 %172 %174 = OpLoad %int %i %175 = OpLoad %int %i %176 = OpBitwiseAnd %int %174 %175 %177 = OpLoad %uint %u %178 = OpLoad %uint %u %179 = OpBitwiseOr %uint %177 %178 %180 = OpLoad %v3int %iv3 %181 = OpLoad %v3int %iv3 %182 = OpBitwiseXor %v3int %180 %181 %183 = OpLoad %uint %u %184 = OpLoad %v3uint %uv3 %185 = OpCompositeConstruct %v3uint %183 %183 %183 %186 = OpBitwiseAnd %v3uint %185 %184 %187 = OpLoad %v3uint %uv3 %188 = OpLoad %uint %u %189 = OpCompositeConstruct %v3uint %188 %188 %188 %190 = OpBitwiseOr %v3uint %187 %189 %191 = OpLoad %uint %u %192 = OpLoad %v3uint %uv3 %193 = OpCompositeConstruct %v3uint %191 %191 %191 %194 = OpBitwiseAnd %v3uint %192 %193 OpStore %uv3 %194 OpReturn OpFunctionEnd glslang-16.0.0/Test/baseResults/web.separate.frag.out000066400000000000000000000201601506534232700224750ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 99 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %color %i OpExecutionMode %main OriginUpperLeft OpSource ESSL 310 OpName %main "main" OpName %color "color" OpName %t2d "t2d" OpName %s "s" OpName %t3d "t3d" OpName %sA "sA" OpName %sShadow "sShadow" OpName %i "i" OpName %tex2D "tex2D" OpName %texCube "texCube" OpName %tex2DArray "tex2DArray" OpName %itex2D "itex2D" OpName %itex3D "itex3D" OpName %itexCube "itexCube" OpName %itex2DArray "itex2DArray" OpName %utex2D "utex2D" OpName %utex3D "utex3D" OpName %utexCube "utexCube" OpName %utex2DArray "utex2DArray" OpName %tex3D "tex3D" OpDecorate %color Location 0 OpDecorate %t2d RelaxedPrecision OpDecorate %t2d DescriptorSet 0 OpDecorate %t2d Binding 3 OpDecorate %14 RelaxedPrecision OpDecorate %s DescriptorSet 0 OpDecorate %s Binding 0 OpDecorate %23 RelaxedPrecision OpDecorate %t3d DescriptorSet 0 OpDecorate %t3d Binding 4 OpDecorate %sA DescriptorSet 0 OpDecorate %sA Binding 2 OpDecorate %48 RelaxedPrecision OpDecorate %51 RelaxedPrecision OpDecorate %sShadow DescriptorSet 0 OpDecorate %sShadow Binding 1 OpDecorate %i RelaxedPrecision OpDecorate %i Flat OpDecorate %i Location 0 OpDecorate %tex2D RelaxedPrecision OpDecorate %tex2D DescriptorSet 0 OpDecorate %tex2D Binding 5 OpDecorate %texCube RelaxedPrecision OpDecorate %texCube DescriptorSet 0 OpDecorate %texCube Binding 6 OpDecorate %tex2DArray DescriptorSet 0 OpDecorate %tex2DArray Binding 15 OpDecorate %itex2D DescriptorSet 0 OpDecorate %itex2D Binding 16 OpDecorate %itex3D DescriptorSet 0 OpDecorate %itex3D Binding 17 OpDecorate %itexCube DescriptorSet 0 OpDecorate %itexCube Binding 18 OpDecorate %itex2DArray DescriptorSet 0 OpDecorate %itex2DArray Binding 19 OpDecorate %utex2D DescriptorSet 0 OpDecorate %utex2D Binding 20 OpDecorate %utex3D DescriptorSet 0 OpDecorate %utex3D Binding 21 OpDecorate %utexCube DescriptorSet 0 OpDecorate %utexCube Binding 22 OpDecorate %utex2DArray DescriptorSet 0 OpDecorate %utex2DArray Binding 23 OpDecorate %tex3D DescriptorSet 0 OpDecorate %tex3D Binding 36 %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %color = OpVariable %_ptr_Output_v4float Output %10 = OpTypeImage %float 2D 0 0 0 1 Unknown %11 = OpTypeSampledImage %10 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 %t2d = OpVariable %_ptr_UniformConstant_11 UniformConstant %15 = OpTypeSampler %_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 %s = OpVariable %_ptr_UniformConstant_15 UniformConstant %v2float = OpTypeVector %float 2 %float_0_5 = OpConstant %float 0.5 %22 = OpConstantComposite %v2float %float_0_5 %float_0_5 %24 = OpTypeImage %float 3D 0 0 0 1 Unknown %25 = OpTypeSampledImage %24 %uint = OpTypeInt 32 0 %uint_4 = OpConstant %uint 4 %_arr_25_uint_4 = OpTypeArray %25 %uint_4 %_ptr_UniformConstant__arr_25_uint_4 = OpTypePointer UniformConstant %_arr_25_uint_4 %t3d = OpVariable %_ptr_UniformConstant__arr_25_uint_4 UniformConstant %int = OpTypeInt 32 1 %int_1 = OpConstant %int 1 %_ptr_UniformConstant_25 = OpTypePointer UniformConstant %25 %_arr_15_uint_4 = OpTypeArray %15 %uint_4 %_ptr_UniformConstant__arr_15_uint_4 = OpTypePointer UniformConstant %_arr_15_uint_4 %sA = OpVariable %_ptr_UniformConstant__arr_15_uint_4 UniformConstant %int_2 = OpConstant %int 2 %v3float = OpTypeVector %float 3 %44 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5 %sShadow = OpVariable %_ptr_UniformConstant_15 UniformConstant %_ptr_Input_int = OpTypePointer Input %int %i = OpVariable %_ptr_Input_int Input %tex2D = OpVariable %_ptr_UniformConstant_11 UniformConstant %58 = OpTypeImage %float Cube 0 0 0 1 Unknown %59 = OpTypeSampledImage %58 %_ptr_UniformConstant_59 = OpTypePointer UniformConstant %59 %texCube = OpVariable %_ptr_UniformConstant_59 UniformConstant %62 = OpTypeImage %float 2D 0 1 0 1 Unknown %63 = OpTypeSampledImage %62 %_ptr_UniformConstant_63 = OpTypePointer UniformConstant %63 %tex2DArray = OpVariable %_ptr_UniformConstant_63 UniformConstant %66 = OpTypeImage %int 2D 0 0 0 1 Unknown %67 = OpTypeSampledImage %66 %_ptr_UniformConstant_67 = OpTypePointer UniformConstant %67 %itex2D = OpVariable %_ptr_UniformConstant_67 UniformConstant %70 = OpTypeImage %int 3D 0 0 0 1 Unknown %71 = OpTypeSampledImage %70 %_ptr_UniformConstant_71 = OpTypePointer UniformConstant %71 %itex3D = OpVariable %_ptr_UniformConstant_71 UniformConstant %74 = OpTypeImage %int Cube 0 0 0 1 Unknown %75 = OpTypeSampledImage %74 %_ptr_UniformConstant_75 = OpTypePointer UniformConstant %75 %itexCube = OpVariable %_ptr_UniformConstant_75 UniformConstant %78 = OpTypeImage %int 2D 0 1 0 1 Unknown %79 = OpTypeSampledImage %78 %_ptr_UniformConstant_79 = OpTypePointer UniformConstant %79 %itex2DArray = OpVariable %_ptr_UniformConstant_79 UniformConstant %82 = OpTypeImage %uint 2D 0 0 0 1 Unknown %83 = OpTypeSampledImage %82 %_ptr_UniformConstant_83 = OpTypePointer UniformConstant %83 %utex2D = OpVariable %_ptr_UniformConstant_83 UniformConstant %86 = OpTypeImage %uint 3D 0 0 0 1 Unknown %87 = OpTypeSampledImage %86 %_ptr_UniformConstant_87 = OpTypePointer UniformConstant %87 %utex3D = OpVariable %_ptr_UniformConstant_87 UniformConstant %90 = OpTypeImage %uint Cube 0 0 0 1 Unknown %91 = OpTypeSampledImage %90 %_ptr_UniformConstant_91 = OpTypePointer UniformConstant %91 %utexCube = OpVariable %_ptr_UniformConstant_91 UniformConstant %94 = OpTypeImage %uint 2D 0 1 0 1 Unknown %95 = OpTypeSampledImage %94 %_ptr_UniformConstant_95 = OpTypePointer UniformConstant %95 %utex2DArray = OpVariable %_ptr_UniformConstant_95 UniformConstant %tex3D = OpVariable %_ptr_UniformConstant_25 UniformConstant %main = OpFunction %void None %3 %5 = OpLabel %14 = OpLoad %11 %t2d %18 = OpLoad %15 %s %19 = OpSampledImage %11 %14 %18 %23 = OpImageSampleImplicitLod %v4float %19 %22 OpStore %color %23 %34 = OpAccessChain %_ptr_UniformConstant_25 %t3d %int_1 %35 = OpLoad %25 %34 %40 = OpAccessChain %_ptr_UniformConstant_15 %sA %int_2 %41 = OpLoad %15 %40 %42 = OpSampledImage %25 %35 %41 %45 = OpImageSampleImplicitLod %v4float %42 %44 %46 = OpLoad %v4float %color %47 = OpFAdd %v4float %46 %45 OpStore %color %47 %48 = OpLoad %11 %t2d %49 = OpLoad %15 %s %50 = OpSampledImage %11 %48 %49 %51 = OpImageSampleImplicitLod %v4float %50 %22 %52 = OpLoad %v4float %color %53 = OpFAdd %v4float %52 %51 OpStore %color %53 OpReturn OpFunctionEnd glslang-16.0.0/Test/baseResults/web.texture.frag.out000066400000000000000000000433701506534232700224010ustar00rootroot00000000000000; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 189 ; Schema: 0 OpCapability Shader OpCapability ImageQuery %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %c2D %c4D %c3D %ic3D %ic1D %c1D %ic4D %s2 %sc %sf OpExecutionMode %main OriginUpperLeft OpSource ESSL 310 OpName %main "main" OpName %v "v" OpName %s2D "s2D" OpName %c2D "c2D" OpName %s3D "s3D" OpName %c4D "c4D" OpName %s2DArray "s2DArray" OpName %c3D "c3D" OpName %ic3D "ic3D" OpName %ic1D "ic1D" OpName %f "f" OpName %s2DShadow "s2DShadow" OpName %c1D "c1D" OpName %sCube "sCube" OpName %s2DArrayShadow "s2DArrayShadow" OpName %iv "iv" OpName %is2D "is2D" OpName %is3D "is3D" OpName %isCube "isCube" OpName %is2DArray "is2DArray" OpName %sCubeShadow "sCubeShadow" OpName %us2D "us2D" OpName %us3D "us3D" OpName %usCube "usCube" OpName %us2DArray "us2DArray" OpName %ic4D "ic4D" OpName %S2 "S2" OpMemberName %S2 0 "c" OpMemberName %S2 1 "f" OpName %s2 "s2" OpName %sc "sc" OpName %sf "sf" OpName %arrayedSampler "arrayedSampler" OpDecorate %v RelaxedPrecision OpDecorate %s2D RelaxedPrecision OpDecorate %s2D DescriptorSet 0 OpDecorate %s2D Binding 1 OpDecorate %14 RelaxedPrecision OpDecorate %c2D RelaxedPrecision OpDecorate %c2D Location 5 OpDecorate %18 RelaxedPrecision OpDecorate %19 RelaxedPrecision OpDecorate %s3D RelaxedPrecision OpDecorate %s3D DescriptorSet 0 OpDecorate %s3D Binding 2 OpDecorate %24 RelaxedPrecision OpDecorate %c4D RelaxedPrecision OpDecorate %c4D Location 7 OpDecorate %27 RelaxedPrecision OpDecorate %28 RelaxedPrecision OpDecorate %s2DArray RelaxedPrecision OpDecorate %s2DArray DescriptorSet 0 OpDecorate %s2DArray Binding 6 OpDecorate %33 RelaxedPrecision OpDecorate %c3D RelaxedPrecision OpDecorate %c3D Location 6 OpDecorate %37 RelaxedPrecision OpDecorate %39 RelaxedPrecision OpDecorate %40 RelaxedPrecision OpDecorate %ic3D RelaxedPrecision OpDecorate %ic3D Flat OpDecorate %ic3D Location 2 OpDecorate %45 RelaxedPrecision OpDecorate %ic1D RelaxedPrecision OpDecorate %ic1D Flat OpDecorate %ic1D Location 1 OpDecorate %48 RelaxedPrecision OpDecorate %50 RelaxedPrecision OpDecorate %f RelaxedPrecision OpDecorate %s2DShadow RelaxedPrecision OpDecorate %s2DShadow DescriptorSet 0 OpDecorate %s2DShadow Binding 5 OpDecorate %57 RelaxedPrecision OpDecorate %58 RelaxedPrecision OpDecorate %c1D RelaxedPrecision OpDecorate %c1D Location 4 OpDecorate %61 RelaxedPrecision OpDecorate %67 RelaxedPrecision OpDecorate %68 RelaxedPrecision OpDecorate %69 RelaxedPrecision OpDecorate %70 RelaxedPrecision OpDecorate %71 RelaxedPrecision OpDecorate %sCube RelaxedPrecision OpDecorate %sCube DescriptorSet 0 OpDecorate %sCube Binding 3 OpDecorate %76 RelaxedPrecision OpDecorate %77 RelaxedPrecision OpDecorate %78 RelaxedPrecision OpDecorate %79 RelaxedPrecision OpDecorate %80 RelaxedPrecision OpDecorate %s2DArrayShadow RelaxedPrecision OpDecorate %s2DArrayShadow DescriptorSet 0 OpDecorate %s2DArrayShadow Binding 7 OpDecorate %85 RelaxedPrecision OpDecorate %86 RelaxedPrecision OpDecorate %87 RelaxedPrecision OpDecorate %88 RelaxedPrecision OpDecorate %90 RelaxedPrecision OpDecorate %91 RelaxedPrecision OpDecorate %92 RelaxedPrecision OpDecorate %93 RelaxedPrecision OpDecorate %94 RelaxedPrecision OpDecorate %95 RelaxedPrecision OpDecorate %96 RelaxedPrecision OpDecorate %97 RelaxedPrecision OpDecorate %98 RelaxedPrecision OpDecorate %99 RelaxedPrecision OpDecorate %100 RelaxedPrecision OpDecorate %iv RelaxedPrecision OpDecorate %is2D RelaxedPrecision OpDecorate %is2D DescriptorSet 0 OpDecorate %is2D Binding 8 OpDecorate %108 RelaxedPrecision OpDecorate %109 RelaxedPrecision OpDecorate %110 RelaxedPrecision OpDecorate %111 RelaxedPrecision OpDecorate %112 RelaxedPrecision OpDecorate %115 RelaxedPrecision OpDecorate %116 RelaxedPrecision OpDecorate %117 RelaxedPrecision OpDecorate %118 RelaxedPrecision OpDecorate %119 RelaxedPrecision OpDecorate %120 RelaxedPrecision OpDecorate %121 RelaxedPrecision OpDecorate %122 RelaxedPrecision OpDecorate %123 RelaxedPrecision OpDecorate %124 RelaxedPrecision OpDecorate %is3D RelaxedPrecision OpDecorate %is3D DescriptorSet 0 OpDecorate %is3D Binding 9 OpDecorate %129 RelaxedPrecision OpDecorate %130 RelaxedPrecision OpDecorate %132 RelaxedPrecision OpDecorate %isCube RelaxedPrecision OpDecorate %isCube DescriptorSet 0 OpDecorate %isCube Binding 10 OpDecorate %137 RelaxedPrecision OpDecorate %138 RelaxedPrecision OpDecorate %139 RelaxedPrecision OpDecorate %140 RelaxedPrecision OpDecorate %is2DArray RelaxedPrecision OpDecorate %is2DArray DescriptorSet 0 OpDecorate %is2DArray Binding 11 OpDecorate %145 RelaxedPrecision OpDecorate %146 RelaxedPrecision OpDecorate %147 RelaxedPrecision OpDecorate %149 RelaxedPrecision OpDecorate %sCubeShadow RelaxedPrecision OpDecorate %sCubeShadow DescriptorSet 0 OpDecorate %sCubeShadow Binding 4 OpDecorate %154 RelaxedPrecision OpDecorate %us2D RelaxedPrecision OpDecorate %us2D DescriptorSet 0 OpDecorate %us2D Binding 12 OpDecorate %us3D RelaxedPrecision OpDecorate %us3D DescriptorSet 0 OpDecorate %us3D Binding 13 OpDecorate %usCube RelaxedPrecision OpDecorate %usCube DescriptorSet 0 OpDecorate %usCube Binding 14 OpDecorate %us2DArray RelaxedPrecision OpDecorate %us2DArray DescriptorSet 0 OpDecorate %us2DArray Binding 15 OpDecorate %ic4D RelaxedPrecision OpDecorate %ic4D Flat OpDecorate %ic4D Location 3 OpDecorate %65 RelaxedPrecision OpMemberDecorate %S2 0 RelaxedPrecision OpMemberDecorate %S2 1 RelaxedPrecision OpDecorate %s2 Location 8 OpDecorate %sc RelaxedPrecision OpDecorate %sc Location 0 OpDecorate %sf RelaxedPrecision OpDecorate %sf Location 1 OpDecorate %arrayedSampler RelaxedPrecision OpDecorate %arrayedSampler DescriptorSet 0 OpDecorate %arrayedSampler Binding 0 %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Function_v4float = OpTypePointer Function %v4float %10 = OpTypeImage %float 2D 0 0 0 1 Unknown %11 = OpTypeSampledImage %10 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 %s2D = OpVariable %_ptr_UniformConstant_11 UniformConstant %v2float = OpTypeVector %float 2 %_ptr_Input_v2float = OpTypePointer Input %v2float %c2D = OpVariable %_ptr_Input_v2float Input %20 = OpTypeImage %float 3D 0 0 0 1 Unknown %21 = OpTypeSampledImage %20 %_ptr_UniformConstant_21 = OpTypePointer UniformConstant %21 %s3D = OpVariable %_ptr_UniformConstant_21 UniformConstant %_ptr_Input_v4float = OpTypePointer Input %v4float %c4D = OpVariable %_ptr_Input_v4float Input %29 = OpTypeImage %float 2D 0 1 0 1 Unknown %30 = OpTypeSampledImage %29 %_ptr_UniformConstant_30 = OpTypePointer UniformConstant %30 %s2DArray = OpVariable %_ptr_UniformConstant_30 UniformConstant %v3float = OpTypeVector %float 3 %_ptr_Input_v3float = OpTypePointer Input %v3float %c3D = OpVariable %_ptr_Input_v3float Input %float_1_20000005 = OpConstant %float 1.20000005 %int = OpTypeInt 32 1 %v3int = OpTypeVector %int 3 %_ptr_Input_v3int = OpTypePointer Input %v3int %ic3D = OpVariable %_ptr_Input_v3int Input %_ptr_Input_int = OpTypePointer Input %int %ic1D = OpVariable %_ptr_Input_int Input %_ptr_Function_float = OpTypePointer Function %float %53 = OpTypeImage %float 2D 1 0 0 1 Unknown %54 = OpTypeSampledImage %53 %_ptr_UniformConstant_54 = OpTypePointer UniformConstant %54 %s2DShadow = OpVariable %_ptr_UniformConstant_54 UniformConstant %_ptr_Input_float = OpTypePointer Input %float %c1D = OpVariable %_ptr_Input_float Input %v2int = OpTypeVector %int 2 %int_2 = OpConstant %int 2 %int_3 = OpConstant %int 3 %65 = OpConstantComposite %v2int %int_2 %int_3 %72 = OpTypeImage %float Cube 0 0 0 1 Unknown %73 = OpTypeSampledImage %72 %_ptr_UniformConstant_73 = OpTypePointer UniformConstant %73 %sCube = OpVariable %_ptr_UniformConstant_73 UniformConstant %81 = OpTypeImage %float 2D 1 1 0 1 Unknown %82 = OpTypeSampledImage %81 %_ptr_UniformConstant_82 = OpTypePointer UniformConstant %82 %s2DArrayShadow = OpVariable %_ptr_UniformConstant_82 UniformConstant %v4int = OpTypeVector %int 4 %_ptr_Function_v4int = OpTypePointer Function %v4int %104 = OpTypeImage %int 2D 0 0 0 1 Unknown %105 = OpTypeSampledImage %104 %_ptr_UniformConstant_105 = OpTypePointer UniformConstant %105 %is2D = OpVariable %_ptr_UniformConstant_105 UniformConstant %125 = OpTypeImage %int 3D 0 0 0 1 Unknown %126 = OpTypeSampledImage %125 %_ptr_UniformConstant_126 = OpTypePointer UniformConstant %126 %is3D = OpVariable %_ptr_UniformConstant_126 UniformConstant %float_4_19999981 = OpConstant %float 4.19999981 %133 = OpTypeImage %int Cube 0 0 0 1 Unknown %134 = OpTypeSampledImage %133 %_ptr_UniformConstant_134 = OpTypePointer UniformConstant %134 %isCube = OpVariable %_ptr_UniformConstant_134 UniformConstant %141 = OpTypeImage %int 2D 0 1 0 1 Unknown %142 = OpTypeSampledImage %141 %_ptr_UniformConstant_142 = OpTypePointer UniformConstant %142 %is2DArray = OpVariable %_ptr_UniformConstant_142 UniformConstant %150 = OpTypeImage %float Cube 1 0 0 1 Unknown %151 = OpTypeSampledImage %150 %_ptr_UniformConstant_151 = OpTypePointer UniformConstant %151 %sCubeShadow = OpVariable %_ptr_UniformConstant_151 UniformConstant %uint = OpTypeInt 32 0 %160 = OpTypeImage %uint 2D 0 0 0 1 Unknown %161 = OpTypeSampledImage %160 %_ptr_UniformConstant_161 = OpTypePointer UniformConstant %161 %us2D = OpVariable %_ptr_UniformConstant_161 UniformConstant %164 = OpTypeImage %uint 3D 0 0 0 1 Unknown %165 = OpTypeSampledImage %164 %_ptr_UniformConstant_165 = OpTypePointer UniformConstant %165 %us3D = OpVariable %_ptr_UniformConstant_165 UniformConstant %168 = OpTypeImage %uint Cube 0 0 0 1 Unknown %169 = OpTypeSampledImage %168 %_ptr_UniformConstant_169 = OpTypePointer UniformConstant %169 %usCube = OpVariable %_ptr_UniformConstant_169 UniformConstant %172 = OpTypeImage %uint 2D 0 1 0 1 Unknown %173 = OpTypeSampledImage %172 %_ptr_UniformConstant_173 = OpTypePointer UniformConstant %173 %us2DArray = OpVariable %_ptr_UniformConstant_173 UniformConstant %_ptr_Input_v4int = OpTypePointer Input %v4int %ic4D = OpVariable %_ptr_Input_v4int Input %S2 = OpTypeStruct %v3float %float %_ptr_Input_S2 = OpTypePointer Input %S2 %s2 = OpVariable %_ptr_Input_S2 Input %_ptr_Output_v3float = OpTypePointer Output %v3float %sc = OpVariable %_ptr_Output_v3float Output %_ptr_Output_float = OpTypePointer Output %float %sf = OpVariable %_ptr_Output_float Output %uint_5 = OpConstant %uint 5 %_arr_11_uint_5 = OpTypeArray %11 %uint_5 %_ptr_UniformConstant__arr_11_uint_5 = OpTypePointer UniformConstant %_arr_11_uint_5 %arrayedSampler = OpVariable %_ptr_UniformConstant__arr_11_uint_5 UniformConstant %main = OpFunction %void None %3 %5 = OpLabel %v = OpVariable %_ptr_Function_v4float Function %f = OpVariable %_ptr_Function_float Function %iv = OpVariable %_ptr_Function_v4int Function %14 = OpLoad %11 %s2D %18 = OpLoad %v2float %c2D %19 = OpImageSampleImplicitLod %v4float %14 %18 OpStore %v %19 %24 = OpLoad %21 %s3D %27 = OpLoad %v4float %c4D %28 = OpImageSampleProjImplicitLod %v4float %24 %27 OpStore %v %28 %33 = OpLoad %30 %s2DArray %37 = OpLoad %v3float %c3D %39 = OpImageSampleExplicitLod %v4float %33 %37 Lod %float_1_20000005 OpStore %v %39 %40 = OpLoad %21 %s3D %45 = OpLoad %v3int %ic3D %48 = OpLoad %int %ic1D %49 = OpImage %20 %40 %50 = OpImageFetch %v4float %49 %45 Lod %48 OpStore %v %50 %57 = OpLoad %54 %s2DShadow %58 = OpLoad %v3float %c3D %61 = OpLoad %float %c1D %66 = OpCompositeExtract %float %58 2 %67 = OpImageSampleDrefExplicitLod %float %57 %58 %66 Lod|ConstOffset %61 %65 OpStore %f %67 %68 = OpLoad %11 %s2D %69 = OpLoad %v3float %c3D %70 = OpLoad %float %c1D %71 = OpImageSampleProjExplicitLod %v4float %68 %69 Lod|ConstOffset %70 %65 OpStore %v %71 %76 = OpLoad %73 %sCube %77 = OpLoad %v3float %c3D %78 = OpLoad %v3float %c3D %79 = OpLoad %v3float %c3D %80 = OpImageSampleExplicitLod %v4float %76 %77 Grad %78 %79 OpStore %v %80 %85 = OpLoad %82 %s2DArrayShadow %86 = OpLoad %v4float %c4D %87 = OpLoad %v2float %c2D %88 = OpLoad %v2float %c2D %89 = OpCompositeExtract %float %86 3 %90 = OpImageSampleDrefExplicitLod %float %85 %86 %89 Grad|ConstOffset %87 %88 %65 OpStore %f %90 %91 = OpLoad %21 %s3D %92 = OpLoad %v4float %c4D %93 = OpLoad %v3float %c3D %94 = OpLoad %v3float %c3D %95 = OpImageSampleProjExplicitLod %v4float %91 %92 Grad %93 %94 OpStore %v %95 %96 = OpLoad %11 %s2D %97 = OpLoad %v3float %c3D %98 = OpLoad %v2float %c2D %99 = OpLoad %v2float %c2D %100 = OpImageSampleProjExplicitLod %v4float %96 %97 Grad|ConstOffset %98 %99 %65 OpStore %v %100 %108 = OpLoad %105 %is2D %109 = OpLoad %v2float %c2D %110 = OpImageSampleImplicitLod %v4int %108 %109 OpStore %iv %110 %111 = OpLoad %105 %is2D %112 = OpLoad %v4float %c4D %113 = OpCompositeExtract %float %112 3 %114 = OpCompositeInsert %v4float %113 %112 2 %115 = OpImageSampleProjImplicitLod %v4int %111 %114 ConstOffset %65 OpStore %iv %115 %116 = OpLoad %105 %is2D %117 = OpLoad %v3float %c3D %118 = OpLoad %float %c1D %119 = OpImageSampleProjExplicitLod %v4int %116 %117 Lod %118 OpStore %iv %119 %120 = OpLoad %105 %is2D %121 = OpLoad %v3float %c3D %122 = OpLoad %v2float %c2D %123 = OpLoad %v2float %c2D %124 = OpImageSampleProjExplicitLod %v4int %120 %121 Grad %122 %123 OpStore %iv %124 %129 = OpLoad %126 %is3D %130 = OpLoad %v3float %c3D %132 = OpImageSampleImplicitLod %v4int %129 %130 Bias %float_4_19999981 OpStore %iv %132 %137 = OpLoad %134 %isCube %138 = OpLoad %v3float %c3D %139 = OpLoad %float %c1D %140 = OpImageSampleExplicitLod %v4int %137 %138 Lod %139 OpStore %iv %140 %145 = OpLoad %142 %is2DArray %146 = OpLoad %v3int %ic3D %147 = OpLoad %int %ic1D %148 = OpImage %141 %145 %149 = OpImageFetch %v4int %148 %146 Lod %147 OpStore %iv %149 %154 = OpLoad %151 %sCubeShadow %155 = OpImage %150 %154 %156 = OpImageQuerySizeLod %v2int %155 %int_2 %157 = OpLoad %v4int %iv %158 = OpVectorShuffle %v4int %157 %156 4 5 2 3 OpStore %iv %158 OpReturn OpFunctionEnd glslang-16.0.0/Test/baseResults/whileLoop.frag.out000066400000000000000000000050731506534232700220650ustar00rootroot00000000000000whileLoop.frag Shader version: 110 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'color' ( temp 4-component vector of float) 0:9 'BaseColor' ( smooth in 4-component vector of float) 0:11 Loop with condition tested first 0:11 Loop Condition 0:11 Compare Less Than ( temp bool) 0:11 direct index ( temp float) 0:11 'color' ( temp 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 'd' ( uniform float) 0:11 Loop Body 0:12 Sequence 0:12 add second child into first child ( temp 4-component vector of float) 0:12 'color' ( temp 4-component vector of float) 0:12 'bigColor' ( uniform 4-component vector of float) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:15 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) Linked fragment stage: Shader version: 110 0:? Sequence 0:7 Function Definition: main( ( global void) 0:7 Function Parameters: 0:9 Sequence 0:9 Sequence 0:9 move second child to first child ( temp 4-component vector of float) 0:9 'color' ( temp 4-component vector of float) 0:9 'BaseColor' ( smooth in 4-component vector of float) 0:11 Loop with condition tested first 0:11 Loop Condition 0:11 Compare Less Than ( temp bool) 0:11 direct index ( temp float) 0:11 'color' ( temp 4-component vector of float) 0:11 Constant: 0:11 0 (const int) 0:11 'd' ( uniform float) 0:11 Loop Body 0:12 Sequence 0:12 add second child into first child ( temp 4-component vector of float) 0:12 'color' ( temp 4-component vector of float) 0:12 'bigColor' ( uniform 4-component vector of float) 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'gl_FragColor' ( fragColor 4-component vector of float FragColor) 0:15 'color' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'bigColor' ( uniform 4-component vector of float) 0:? 'BaseColor' ( smooth in 4-component vector of float) 0:? 'd' ( uniform float) glslang-16.0.0/Test/baseResults/xfbUnsizedArray.error.tese.out000066400000000000000000000017041506534232700244110ustar00rootroot00000000000000xfbUnsizedArray.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) glslang-16.0.0/Test/baseResults/xfbUnsizedArray.error.vert.out000066400000000000000000000060631506534232700244340ustar00rootroot00000000000000xfbUnsizedArray.error.vert 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 ERROR: node is still EOpNull! 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 'result' ( temp 4-component vector of float) 0:11 'in_vs' ( in 4-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float) 0:13 direct index (layout( xfb_buffer=0 xfb_offset=0) smooth temp 4-component vector of float) 0:13 'xfb_buffer' (layout( xfb_buffer=0 xfb_offset=0) smooth out unsized 1-element array of 4-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 divide ( temp 4-component vector of float) 0:13 'result' ( temp 4-component vector of float) 0:13 Constant: 0:13 2.000000 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'out_vs' ( smooth out 4-component vector of float) 0:15 'result' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'xfb_buffer' (layout( xfb_buffer=0 xfb_offset=0) smooth out unsized 1-element array of 4-component vector of float) 0:? 'in_vs' ( in 4-component vector of float) 0:? 'out_vs' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) Linked vertex stage: Shader version: 430 Requested GL_ARB_enhanced_layouts in xfb mode ERROR: node is still EOpNull! 0:9 Function Definition: main( ( global void) 0:9 Function Parameters: 0:11 Sequence 0:11 Sequence 0:11 move second child to first child ( temp 4-component vector of float) 0:11 'result' ( temp 4-component vector of float) 0:11 'in_vs' ( in 4-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float) 0:13 direct index (layout( xfb_buffer=0 xfb_offset=0) smooth temp 4-component vector of float) 0:13 'xfb_buffer' (layout( xfb_buffer=0 xfb_offset=0) smooth out 1-element array of 4-component vector of float) 0:13 Constant: 0:13 0 (const int) 0:13 divide ( temp 4-component vector of float) 0:13 'result' ( temp 4-component vector of float) 0:13 Constant: 0:13 2.000000 0:15 move second child to first child ( temp 4-component vector of float) 0:15 'out_vs' ( smooth out 4-component vector of float) 0:15 'result' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'xfb_buffer' (layout( xfb_buffer=0 xfb_offset=0) smooth out 1-element array of 4-component vector of float) 0:? 'in_vs' ( in 4-component vector of float) 0:? 'out_vs' ( smooth out 4-component vector of float) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) glslang-16.0.0/Test/boolinput.error.frag000066400000000000000000000001501506534232700201530ustar00rootroot00000000000000#version 460 in bool a; struct S { bool b; }; in S s; in Block { bool c; }; void main() { }glslang-16.0.0/Test/booloutput.error.vert000066400000000000000000000001531506534232700204200ustar00rootroot00000000000000#version 460 out bool a; struct S { bool b; }; out S s; out Block { bool c; }; void main() { }glslang-16.0.0/Test/bump000077500000000000000000000000641506534232700150440ustar00rootroot00000000000000#!/usr/bin/env bash cp localResults/* baseResults/ glslang-16.0.0/Test/comment.frag000066400000000000000000000003751506534232700164630ustar00rootroot00000000000000 // /* anotehn t* ontuh * / tnoahnt /* oo */ /* multi line... ao */ /* no escape \ oanot */ // escape nothing \o oeu // escape newline \ still in a comment // escape newline \ // a different comment #version 430 core in vec4 v; void main() {} glslang-16.0.0/Test/compoundsuffix.frag.hlsl000066400000000000000000000001141506534232700210220ustar00rootroot00000000000000void main(out float4 fragColor : SV_TARGET0) { fragColor = 1; } glslang-16.0.0/Test/compoundsuffix.vert.glsl000066400000000000000000000000571506534232700210700ustar00rootroot00000000000000void main() { gl_Position = vec4(1.0); }glslang-16.0.0/Test/conditionalDiscard.frag000066400000000000000000000003161506534232700206110ustar00rootroot00000000000000#version 110 uniform sampler2D tex; varying vec2 coord; void main (void) { vec4 v = texture2D(tex, coord); if (v == vec4(0.1,0.2,0.3,0.4)) discard; gl_FragColor = v; } glslang-16.0.0/Test/constErrors.frag000066400000000000000000000014601506534232700173400ustar00rootroot00000000000000#version 330 in vec4 inVar; out vec4 outVar; const int constInt = 3; uniform int uniformInt; void main() { const int a1 = 2; // okay const int a2 = constInt; // okay const int a3 = uniformInt; // error vec4 c[constInt]; // okay vec4 d[uniformInt]; // error vec4 e[constInt + uniformInt]; // error vec4 f[uniformInt + constInt]; // error vec4 g[int(sin(0.3)) + 1]; // okay } const struct S { vec3 v3; ivec2 iv2; } s = S(vec3(3.0), ivec2(3, constInt + uniformInt)); // ERROR, non-const y componenent const struct S2 { vec3 v3; ivec2 iv2; mat2x4 m; } s2 = S2(vec3(3.0), ivec2(3, constInt), mat2x4(1.0, 2.0, 3.0, inVar.x, 5.0, 6.0, 7.0, 8.0)); // ERROR, non-constant matrix const float f = 3; // okay, type conversion glslang-16.0.0/Test/constFold.frag000066400000000000000000000117601506534232700167540ustar00rootroot00000000000000#version 430 const int a = 1; const int b = 2; const int c = a + b; // 3 const int d = c - a; // 2 const float e = float(d); // 2.0 const float f = e * float(c); // 6.0 const float g = f / float(d); // 3.0 const vec2 pytho = vec2(3.0, 4.0); in vec4 inv; out vec4 FragColor; out vec2 out2; out vec4 out3; out vec4 out4; out ivec4 out5; out vec3 out6; out vec4 out7; out vec4 out8; out vec4 out9; out vec4 out10; out vec4 out11; out ivec2 out12; out uvec3 out13; void main() { vec4 dx = dFdx(inv); const ivec4 v = ivec4(a, b, c, d); vec4 array2[v.y]; // 2 const ivec4 u = ~v; const float h = degrees(g); // 171.88 FragColor = vec4(e, f, g, h); // 2, 6, 3, 171.88 vec4 array3[c]; // 3 vec4 arrayMax[int(max(float(array2.length()), float(array3.length())))]; vec4 arrayMin[int(min(float(array2.length()), float(array3.length())))]; FragColor = vec4(arrayMax.length(), arrayMin.length(), sin(3.14), cos(3.14)); // 3, 2, .00159, -.999 out2 = length(pytho) + normalize(pytho) + dFdx(pytho) + dFdy(pytho) + fwidth(pytho); // 5+3/5, 5+4/5 out3 = vec4(exp(3.0), log(10.0), exp2(4.0), log2(256.0)); // 20.08, 2.3, 16, 8 out4 = vec4(sqrt(100.0), inversesqrt(100.0), abs(-4.7), abs(10.9)); // 10, .1, 4.7, 10.9 out5 = ivec4(abs(-8) + sign(0), abs(17), sign(-12), sign(9)); // 8, 17, -1, 1 out6 = vec3(sign(-8.8), sign(18.0), sign(0.0)); // -1.0, 1.0, 0.0 out7 = vec4(floor(4.2), ceil(-4.1), trunc(5.9), trunc(-5.9)); // 4, -4, 5, -5 out8 = vec4(round(4.4), round(4.6), roundEven(4.5), roundEven(-5.5)); // 4, 5, 4, -6 out9 = vec4(roundEven(7.5), roundEven(-4.5), fract(2.345), fract(-2.6)); // 8, -4, .345, 0.4 out10 = vec4(isinf(4.0/0.0), isinf(-3.0/0.0), isinf(0.0/0.0), isinf(-93048593405938405938405.0)); // true, true, false, false -> 1.0, 1.0, 0.0, 0.0 out11 = vec4(isnan(4.0/0.0), isnan(-3.0/0.0), isnan(0.0/0.0), isnan(-93048593405938405938405.0)); // false, false, true, false -> 0.0, 1.0, 0.0, 0.0 out11 = vec4(tan(0.8), atan(1.029), atan(8.0, 10.0), atan(10000.0)); // 1.029, 0.8, 0.6747, 1.57 out11 = vec4(asin(0.0), asin(0.5), acos(0.0), acos(0.5)); // 0.0, .523599, 1.57, 1.047 const vec4 v1 = vec4(1.0, 0.0, 0.5, -0.2); const vec4 v2 = vec4(0.2, 0.3, 0.4, 0.5); out11 = atan(v1, v2); // 1.373401, 0.0, 0.896055, -0.380506 const ivec2 v3 = ivec2(15.0, 17.0); const ivec2 v4 = ivec2(17.0, 15.0); out12 = min(v3, 16); // 15, 16 out12 = max(v3, v4); // 17, 17 out2 = pow(vec2(v3), vec2(2.5, 3.0)); // 871.4, 4913 out13 = clamp(uvec3(1, 20, 50), 10u, 30u); // 10, 20, 30 out2 = mix(vec2(3.0, 4.0), vec2(5.0, 6.0), bvec2(false, true)); // 3.0, 6.0 out2 = mix(vec2(3.0, 4.0), vec2(5.0, 6.0), 0.25); // 3.5, 4.5 out2 = step(0.5, vec2(0.2, 0.6)); // 0.0, 1.0 out11 = smoothstep(50.0, 60.0, vec4(40.0, 51.0, 55.0, 70.0)); // 0.0, 0.028, 0.5, 1.0 } const struct S { vec3 v3; ivec2 iv2; mat2x4 m; } s = S(vec3(3.0), ivec2(3, a + b), mat2x4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0)); void foo() { float a[s.iv2.y]; // 3 element array a[0] = s.m[1].z; // 7.0 b % 0; // int b / 0; e / 0; -e / 0; 0.0 / 0.0; const uint ua = 5; const uvec2 ub = uvec2(6, 7); const uint uc = 8; ub % 4u; 0u % uc; ub % 0u; } const mat2 m2 = mat2(2, 3, 4, 5); const mat3 m3 = mat3(m2); const int mc = int(m3[2][2]); float a1[mc]; float a2[int(m3[2][1]) + 2]; // size 2 float a3[int(m3[1][0])]; // size 4 const vec2 v2 = vec2(1, 2); const vec3 v3 = vec3(3, 4, 5); float a4[uint(mat3(v2, v3, v2, v2)[2][2])]; // size 2 void foo2() { a1[0]; // array size 1 a2[0]; // array size 2 a3[0]; // array size 4 a4[0]; // array size 2 v2[-1]; // ERROR v3[4]; // ERROR m3[0][-2]; // ERROR m2[-1][1]; // ERROR m3[1][3]; // ERROR m3[3][1]; // ERROR int p; p = -2147483647 / -1; p = -2147483648 / -1; p = 2147483647 / -1; float f = vec4(7.8 < 2.4 ? -1.333 : 1.444).a; f = vec4(inv.x < 2.4 ? -1.0 : 1.0).a; // not folded, ensuring no propagation } const mat2 mm2 = mat2(1.0, 2.0, 3.0, 4.0); const mat3x2 mm32 = mat3x2(10.0, 11.0, 12.0, 13.0, 14.0, 15.0); const mat2 m22 = mat2(vec4(1.0, 2.0, 3.0, 4.0)); const mat3x4 mm34 = mat3x4(7.0); const vec4 mv4 = vec4(m22); void foo3() { mat3x2 r32 = mm2 * mm32; } struct cag { int i; float f; bool b; }; const cag a0[3] = cag[3](cag(3, 2.0, true), cag(1, 5.0, true), cag(1, 9.0, false)); void foo4() { int a = int(a0[2].f); } const bool cval1 = all(bvec4(true, true, true, true)); const bool cval2 = all(bvec4(false, false, false, false)); const bool cval3 = all(bvec4(true, true, false, true)); const bool cval4 = any(bvec4(true, true, true, true)); const bool cval5 = any(bvec4(false, false, false, false)); const bool cval6 = any(bvec4(false, true, false, false)); glslang-16.0.0/Test/constFoldIntMin.frag000066400000000000000000000006221506534232700200660ustar00rootroot00000000000000#version 460 core #extension GL_AMD_gpu_shader_int16 : enable #extension GL_ARB_gpu_shader_int64 : enable void a(){ int16_t u = -32768S / -1S; // SHRT_MIN int v = -2147483648 / -1; // INT_MIN int64_t w = -9223372036854775808L / -1L; // LLONG_MIN int16_t x = -32768S % -1S; // SHRT_MIN int y = -2147483648 % -1; // INT_MIN int64_t z = -9223372036854775808L % -1L; // LLONG_MIN }glslang-16.0.0/Test/constantUnaryConversion.comp000066400000000000000000000037501506534232700217560ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types : require const bool bool_init = true; const int8_t int8_t_init = int8_t(-1); const int16_t int16_t_init = int16_t(-2); const int32_t int32_t_init = int32_t(-3); const int64_t int64_t_init = int64_t(-4); const uint8_t uint8_t_init = uint8_t(1); const uint16_t uint16_t_init = uint16_t(2); const uint32_t uint32_t_init = uint32_t(3); 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 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); \ TYPE_TO_TYPE(x, int16_t); \ TYPE_TO_TYPE(x, int32_t); \ TYPE_TO_TYPE(x, int64_t); \ TYPE_TO_TYPE(x, uint8_t); \ TYPE_TO_TYPE(x, uint16_t); \ TYPE_TO_TYPE(x, uint32_t); \ TYPE_TO_TYPE(x, uint64_t); \ TYPE_TO_TYPE(x, float16_t); \ TYPE_TO_TYPE(x, float32_t); \ TYPE_TO_TYPE(x, float64_t) TYPE_TO(bool); TYPE_TO(int8_t); TYPE_TO(int16_t); TYPE_TO(int32_t); TYPE_TO(int64_t); TYPE_TO(uint8_t); TYPE_TO(uint16_t); TYPE_TO(uint32_t); TYPE_TO(uint64_t); TYPE_TO(float16_t); 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() {} glslang-16.0.0/Test/contradict_0.geom000066400000000000000000000002771506534232700174030ustar00rootroot00000000000000#version 330 layout(points) in; layout(triangle_strip, max_vertices = 4) out; float getV(); void main (void) { float v = getV(); EndPrimitive(); EndPrimitive(); } glslang-16.0.0/Test/contradict_1.geom000066400000000000000000000001651506534232700174000ustar00rootroot00000000000000#version 330 layout(lines) in; layout(line_strip, max_vertices = 6) out; float getV() { return 1.0; } glslang-16.0.0/Test/conversion.frag000066400000000000000000000042271506534232700172060ustar00rootroot00000000000000#version 130 uniform bool u_b; uniform bvec2 u_b2; uniform bvec3 u_b3; uniform bvec4 u_b4; uniform int u_i; uniform ivec2 u_i2; uniform ivec3 u_i3; uniform ivec4 u_i4; uniform float u_f; uniform vec2 u_f2; uniform vec3 u_f3; uniform vec4 u_f4; uniform bool i_b; uniform bvec2 i_b2; uniform bvec3 i_b3; uniform bvec4 i_b4; flat in int i_i; flat in ivec2 i_i2; flat in ivec3 i_i3; flat in ivec4 i_i4; in float i_f; in vec2 i_f2; in vec3 i_f3; in vec4 i_f4; void main() { bool b = bool(u_i) ^^ bool(u_f); bvec2 b2 = bvec2(u_i, u_f); bvec3 b3 = bvec3(u_i, u_f, i_i); bvec4 b4 = bvec4(u_i, u_f, i_i, i_f); int i = int(u_f) + int(b); ivec2 i2 = ivec2(u_f2) + ivec2(b2); ivec3 i3 = ivec3(u_f3) + ivec3(b3); ivec4 i4 = ivec4(u_f4) + ivec4(b4); float f = i; vec2 f2 = i2; vec3 f3 = i3; vec4 f4 = i4; f += (float(i) + float(b)); f2 -= vec2(i2) + vec2(b2); f3 /= vec3(i3) + vec3(b3); f4 += vec4(i4) + vec4(b4); f4 += vec4(bvec4(i_i4)); f4 += vec4(bvec4(u_f4)); f += f - i; f2 += vec2(f, i) + i2; f3 += i3 + vec3(f, i, f); f4 += vec4(b, i, f, i) + i4; f2 += vec2(f, i) * i; f3 += vec3(f, i, f) + i; f4 += i - vec4(b, i, f, i); i2 += ivec2(f, i); i3 += ivec3(f, i, f); i4 += ivec4(b, i, f, i); if (f < i || i < f || f2 == i2 || i3 != f3) f = (b ? i : f2.x) + (b2.x ? f3.x : i2.y); gl_FragColor = b || b2.x || b2.y || b3.x || b3.y || b3.z || b4.x || b4.y || b4.z || b4.w ? vec4( i + i2.x + i2.y + i3.x + i3.y + i3.z + i4.x + i4.y + i4.z + i4.w + f + f2.x + f2.y + f3.x + f3.y + f3.z + f4.x + f4.y + f4.z + f4.w) : vec4(1.0); // with constants... ivec4 cv2 = ivec4(1.0); bvec4 cv5 = bvec4(cv2); gl_FragColor += float(cv5); } glslang-16.0.0/Test/coord_conventions.frag000066400000000000000000000013201506534232700205430ustar00rootroot00000000000000#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; }glslang-16.0.0/Test/cppBad.vert000066400000000000000000000000771506534232700162520ustar00rootroot00000000000000#define n#0# #define m #0# #if m #endif #define n() int n"glslang-16.0.0/Test/cppBad2.vert000066400000000000000000000000401506534232700163220ustar00rootroot00000000000000#define a b( #define b(x) b(a)glslang-16.0.0/Test/cppBad3.vert000066400000000000000000000000401506534232700163230ustar00rootroot00000000000000#define f =y(. #define y(m) y(f)glslang-16.0.0/Test/cppBad4.vert000066400000000000000000000000521506534232700163270ustar00rootroot00000000000000int,i= #define f g(#g(y #define g(m) g(f) glslang-16.0.0/Test/cppBad5.vert000066400000000000000000000000521506534232700163300ustar00rootroot00000000000000int,i= #define f g($g(y #define g(m) g(f) glslang-16.0.0/Test/cppComplexExpr.vert000066400000000000000000000133311506534232700200270ustar00rootroot00000000000000#version 300 es #define ON1 #define ON2 float sum = 0.0; void main() { #if defined(ON1) && (defined(OFF) || defined(ON2)) //yes sum += 1.0; #endif #if !defined(ON1) || (defined(OFF) || (!defined(OFF2) && defined(ON2))) //yes sum += 20.0; #endif #if defined(ON1) && (defined(OFF) || !defined(ON2)) //no sum += 0.1; #endif #if !defined(ON1) || (defined(OFF) || !defined(OFF2) && !defined(ON2)) //no sum += 0.2; #endif #if !defined(ON1) || !defined(OFF) || defined(ON2) && defined(OFF2) //yes sum += 300.0; #endif #if (!defined(ON1) || !defined(OFF) || defined(ON2)) && defined(OFF2) //no sum += 0.4; #endif // sum should be 321.0 gl_Position = vec4(sum); } #define ADD(a, b) a + b + ((a) + ((b))); float foo() { return ADD(gl_Position.xyxwx, 3.0) // ERROR, should be this line number return ADD(gl_Position.y, 3.0) } #define BIG aonetuhanoethuanoenaoethu snaoetuhs onethausoentuas hnoethaueohnatuoeh santuoehsantouhe snathoensuta hsnoethuasntoe hsnuathoesnuathoenstuh nsoethantseuh toae ua \ antoeh uantheount oentahoent uahnsoethasnutoehansteuo santhu sneoathu snoethasnut oesanthoesna thusenotha nsthasunoeth ausntehsunathoensuathoesnta uhnsoetha usntoeh uanhs unosethu \ antoehunatoehu natoehua oentha neotuhan toehu natoehu ntahoe nutah eu natoheunathoen uasoenuasoent asntoehsan tuosnthnu aohenuath eontha untoh eunth unth anth unth nth nth nt \ a ntoehanu tunth nsont uhansoethausn oehsanthnt heauo eanthuo sh nahnoethansu tohe sanuthoe snathuoesntha snuothe anthusonehtasuntoeh asnuthonsa teauhntoeha onetuha nth \ anoethuan toentauh noethauntohe anuthoe nathu noethaun oethanuthoe nathuoe ntahu enotha unetha ntuhenaothu enotahun eotha ntoehu aoehuntha enotuh aonethau noethu anoethuna toheua \ ontehanutoe hnuathoena aoteha aonetuha // identical #define BIG aonetuhanoethuanoenaoethu snaoetuhs onethausoentuas hnoethaueohnatuoeh santuoehsantouhe snathoensuta hsnoethuasntoe hsnuathoesnuathoenstuh nsoethantseuh toae ua \ antoeh uantheount oentahoent uahnsoethasnutoehansteuo santhu sneoathu snoethasnut oesanthoesna thusenotha nsthasunoeth ausntehsunathoensuathoesnta uhnsoetha usntoeh uanhs unosethu \ antoehunatoehu natoehua oentha neotuhan toehu natoehu ntahoe nutah eu natoheunathoen uasoenuasoent asntoehsan tuosnthnu aohenuath eontha untoh eunth unth anth unth nth nth nt \ a ntoehanu tunth nsont uhansoethausn oehsanthnt heauo eanthuo sh nahnoethansu tohe sanuthoe snathuoesntha snuothe anthusonehtasuntoeh asnuthonsa teauhntoeha onetuha nth \ anoethuan toentauh noethauntohe anuthoe nathu noethaun oethanuthoe nathuoe ntahu enotha unetha ntuhenaothu enotahun eotha ntoehu aoehuntha enotuh aonethau noethu anoethuna toheua \ ontehanutoe hnuathoena aoteha aonetuha // ERROR, one character different #define BIG aonetuhanoethuanoenaoethu snaoetuhs onethausoentuas hnoethaueohnatuoeh santuoehsantouhe snathoensuta hsnoethuasntoe hsnuathoesnuathoenstuh nsoethantseuh toae ua \ antoeh uantheount oentahoent uahnsoethasnutoehansteuo santhu sneoathu snoethasnut oesanthoesna thusenotha nsthasunoeth ausntehsunathoensuathoesnta uhnsoetha usntoeh uanhs unosethu \ antoehunatoehu natoehua oentha neotuhan toehu natoehu ntahoe nutah eu natoheunathoen uasoenuasoent asntoehsan tuosnthnu aohenuath eontha untoh eunth unth anth unth nth nth nt \ a ntoehanu tunth nsont uhansoethasn oehsanthnt heauo eanthuo sh nahnoethansu tohe sanuthoe snathuoesntha snuothe anthusonehtasuntoeh asnuthonsa teauhntoeha onetuha nth \ anoethuan toentauh noethauntohe anuthoe nathu noethaun oethanuthoe nathuoe ntahu enotha unetha ntuhenaothu enotahun eotha ntoehu aoehuntha enotuh aonethau noethu anoethuna toheua \ ontehanutoe hnuathoena aoteha aonetuha #define BIGARGS1(aonthanotehu, bonthanotehu, conthanotehu, donthanotehu, eonthanotehu, fonthanotehu, gonthanotehu, honthanotehu, ionthanotehu, jonthanotehu, konthanotehu) jonthanotehu #define BIGARGS2(aonthanotehu, bonthanotehu, conthanotehu, donthanotehu, eonthanotehu, fonthanotehu, gonthanotehu, honthanotehu, ionthanotehu, jonthanotehu, konthanotehu) jonthanotehu #define BIGARGS3(aonthanotehu, bonthanotehu, conthanotehu, donthanotehu, eonthanotehu, fonthanotehu, gonthanotehu, honthanotehu, ionthanotehu, jonthanotehu, konthanotehu) jonthanotehu #define BIGARGS4(aonthanotehu, bonthanotehu, conthanotehu, donthanotehu, eonthanotehu, fonthanotehu, gonthanotehu, honthanotehu, ionthanotehu, jonthanotehu, konthanotehu) jonthanotehu #define foobar(a, b) a + b #if foobar(1.1, 2.2) #error good macro #else #error bad macro #endif #if foobar(1 ; # # #endif #if foobar(1, ; # # #endif float c = foobar(1.1, 2.2 ); #if foobar(1.1, 2.2 ) #if foobar(1.1, 2.2 #endif #endif #define VAL0 0 #define VAL1 1 #if UNDEF #error bad 0 #else #error good 0 #endif #if VAL1 || UNDEF #error good 1 #else #error bad 1 #endif #if VAL1 && UNDEF // UNDEF ERROR #endif #if VAL0 || UNDEF // UNDEF ERROR #endif #if VAL0 && UNDEF #error bad 2 #else #error good 1 #endif #if VAL1 || (VAL1 && UNDEF) #error good 3 #else #error bad 3 #endif #if VAL1 && (VAL1 || UNDEF) #error good 4 #else #error bad 4 #endif #if VAL1 < VAL1 || VAL1 > VAL1 || UNDEF // UNDEF ERROR #endif #if VAL1 < VAL1 || VAL1 > VAL1 && UNDEF #endif #if VAL1 || UNDEF && UNDEF2 #endif #if VAL0 || UNDEF && UNDEF2 // UNDEF ERROR #endif #if (VAL1 || UNDEF) && UNDEF2 // UNDEF2 ERROR #endif #if (VAL0 && UNDEF) || UNDEF2 // UNDEF2 ERROR #endif #line 3000 #error line of this error should be 3000 #define __LINE__ 30 #define __FILE__ #define __VERSION__ #define GL_SOME_EXTENSION #undef __LINE__ #undef __FILE__ #undef __VERSION__ #undef GL_SOME_EXTENSION #line 4000 #line 200 % 0 // ERROR, div by 0 #if __LINE__ / 0 // ERROR, div by 0 #endif #if 7% // ERROR incomplete expression #line 10000 #if 0 // ERROR, EOFglslang-16.0.0/Test/cppDeepNest.frag000066400000000000000000000011211506534232700172210ustar00rootroot00000000000000#ifdef O #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #if #endif glslang-16.0.0/Test/cppIndent.vert000066400000000000000000000015051506534232700170020ustar00rootroot00000000000000#version 110 #define ON float sum = 0.0; void main() { #ifdef ON //yes sum += 1.0; #endif #ifdef OFF //no sum += 20.0; #endif #if defined(ON) //yes sum += 300.0; #endif #if defined(OFF) //no sum += 4000.0; #endif #if !defined(ON) //no sum += 50000.0; #endif #if !defined(OFF) //yes sum += 600000.0; #endif #if defined (ON) && defined (OFF) //no sum += 7000000.0; #endif #if defined ( ON ) && ! defined(OFF) //yes sum += 80000000.0; #endif #if defined(OFF) || defined(ON) //yes sum += 900000000.0; #endif // sum should be 980600301.0 gl_Position = vec4(sum); } #define FUNC(a,b) a+b // needs to be last test in file due to syntax error void foo986(){ FUNC( (((2)))), 4); } // ERROR, too few arguments ) glslang-16.0.0/Test/cppIntMinOverNegativeOne.frag000066400000000000000000000002711506534232700216760ustar00rootroot00000000000000#if (-2147483648 / -1) != 0 #error INT_MIN / -1 should yield 0, something went wrong. #endif #if (-2147483648 % -1) != 0 #error INT_MIN % -1 should yield 0, something went wrong. #endifglslang-16.0.0/Test/cppMerge.frag000066400000000000000000000012671506534232700165640ustar00rootroot00000000000000#version 450 core #define PASTER2(type, suffix) type##suffix #define PASTER3(type, suffix) type## suffix #define MAKE_TYPE1 image1D dest ## 1; #define MAKE_TYPE2(type, suffix) PASTER2(type, suffix) #define MAKE_TYPE3(type, suffix) PASTER3(type, suffix) #define PREFIX image #define PREFIX3 imag #define SUFFIX2 1D #define SUFFIX3 e1 D #define RESOURCE_TYPE1 MAKE_TYPE1 #define RESOURCE_TYPE2 MAKE_TYPE2(PREFIX, SUFFIX2) #define RESOURCE_TYPE3 MAKE_TYPE3(PREFIX3, SUFFIX3) layout (set = 0, binding = 0) uniform writeonly RESOURCE_TYPE1 layout (set = 0, binding = 0) uniform writeonly RESOURCE_TYPE2 dest2; layout (set = 0, binding = 0) uniform writeonly RESOURCE_TYPE3 dest3; void main() { }glslang-16.0.0/Test/cppNest.vert000066400000000000000000000042341506534232700164740ustar00rootroot00000000000000#version 110 #define ON float sum = 0.0; void main() { #ifdef ON //yes sum += 1.0; #ifdef OFF //no sum += 20.0; #endif #if defined(ON) //yes sum += 300.0; #endif #endif #if defined(OFF) //no sum += 4000.0; #if !defined(ON) //no sum += 50000.0; #endif //no sum += 0.1; #ifdef ON //no sum += 0.2; #endif //no sum += 0.01; #ifdef ON //no sum += 0.02; #else //no sum += 0.03; #endif //no sum + 0.3; #endif #if !defined(OFF) //yes sum += 600000.0; #if defined(ON) && !defined(OFF) //yes sum += 80000000.0; #if defined(OFF) || defined(ON) //yes sum += 900000000.0; #if defined(ON) && defined(OFF) //no sum += 0.7; #elif !defined(OFF) //yes sum += 7000000.0; #endif #endif #endif #endif // sum should be 987600301.0 gl_Position = vec4(sum); } #define A 1 #define C 0 #define E 0 #define F 1 #if A #if C #if E int selected4 = 1; #elif F int selected4 = 2; #else int selected4 = 3; #endif #endif int selected4 = 4; #endif #define ZA 1 #define ZC 1 #define ZE 0 #define ZF 1 #if ZA #if ZC #if ZE int selected2 = 1; #elif ZF int selected2 = 2; #else int selected2 = 3; #endif #endif #endif #define AZA 1 #define AZC 1 #define AZE 0 #define AZF 0 #if AZA #if AZC #if AZE int selected3 = 1; #elif AZF int selected3 = 2; #else int selected3 = 3; #endif #endif #endif // ERROR cases... #if 0 int; #else int; #elif 1 int; #endif #if 0 int; #else int; #else int; #endif #if 0 #if 0 int; #else int; #elif 1 int; #endif #if 0 int; #else int; #else int; #endif #endif #define FUNC(a,b) a+b void foo985(){ FUNC( (((2))), ((3),4)); } // needs to be last test in file void foo987(){ FUNC(((); } // ERROR, EOF in argument glslang-16.0.0/Test/cppPassMacroName.frag000066400000000000000000000012351506534232700202110ustar00rootroot00000000000000#define f1(i) ((i)*(i)) #define I2(f, n) f(n) + f(n+1) #define I3(f, n) I2(f, n) + f(n+2) #define FL_f1(i) ((i)*(i)) #define FL_I2(f, n) f(n) + f(n+0.2) #define FL_I3(f, n) FL_I2(f, n) + f(n+0.5) void main() { int f1 = 4; int f2 = f1; int f3 = f1(3); int f4 = I2(f1, 0); int f5 = I3(f1, 0); highp float fl_f5 = FL_I3(FL_f1, 0.1); } // f5 = I3(f1, 0) // = I2(f1, 0) + f1(0 + 2) // = f1(0) + f1(0+1) + f1(0+2) // = 0*0 + 1*1 + 2*2 // = 5 // fl_f5 = FL_I3(FL_f1, 0.1) // = FL_I2(FL_f1, 0.1) + FL_f1(0.1 + 0.5) // = FL_f1(0.1) + FL_f1(0.1 + 0.2) + FL_f1(0.1 + 0.5) // = 0.1*0.1 + 0.3*0.3 + 0.6*0.6 // = 0.46 glslang-16.0.0/Test/cppRelaxSkipTokensErrors.vert000066400000000000000000000002221506534232700220370ustar00rootroot00000000000000#version 110 #if 0 3.5L 3.5h 2034h 1.#INF 0x1234567812345L 12323394203923879234L 0123s; 123s; 0123456712345671234L "string" #endif glslang-16.0.0/Test/cppSimple.vert000066400000000000000000000126111506534232700170120ustar00rootroot00000000000000#version 400 #define ON float sum = 0.0; void main() { #ifdef ON //yes sum += 1.0; #endif #ifdef OFF //no sum += 20.0; #endif #if defined(ON) //yes sum += 300.0; #endif #if defined(OFF) //no sum += 4000.0; #endif #if !defined(ON) //no sum += 50000.0; #endif #ifndef OFF //yes sum += 600000.0; #else //no sum += 0.6; #endif #if defined(ON) && defined(OFF) //no sum += 0.7; #elif !defined(OFF) //yes sum += 7000000.0; #endif #if defined(ON) && !defined(OFF) //yes sum += 80000000.0; #endif #if defined(OFF) || defined(ON) //yes sum += 900000000.0; #endif #if NEVER_DEFINED //no sum += 0.04; #else sum += 0.05; #endif // sum should be 987600301.7 gl_Position = vec4(sum); } #define A 0 # define B 0 # define C 0 #if (A == B) || (A == C) #error good1 #endif #if A == B || (A == C) #error good2 #endif #if (A == B || (A == C)) #error good3 #endif #if (AA == BB) || (AA == CC) #error good4 #endif #if AA == BB || (AA == CC) #error good5 #endif #if ((AA == BB || (AA == CC))) #error good6 #endif #if (A == B || (A == C) #error bad1 #endif #if A == B || A == C) #error bad2 #endif #if (A == B || (A == C) #error bad3 #endif #if AA == BB) || (AA == CC) #error bad4 #endif #if AA == BB || (AA == CC #error bad5 #endif #if ((AA == BB || (AA == CC)))) #error bad6 #endif extra tokens int linenumber = __LINE__; int filenumber = __FILE__; int version = __VERSION__; #define PI (3.14) #define TWOPI (2.0 * PI) float twoPi = TWOPI; //#define PASTE(a,b) a ## b //float PASTE(tod, ay) = 17; "boo" // ERROR int a = length("aoenatuh"); // ERROR #define QUOTE "abcd" // okay 'int'; // ERROR #define SINGLE 'a' // okay // ERROR: all the following are reserved #define GL_ #define GL_Macro 1 #define __M #define M__ #define ABC__DE abc #if 4 #else extra #elif // ERROR elif after else #endif #if blah #if 0 #else extra #ifdef M #else #else // ERROR else after else #endif extra #endif #endif #define m1(a,a) // ERROR #define m2(a,b) // okay #define m3 (a) #define m3 (a) // ERROR #define m4(b) #define m4 // ERROR #define m5 (b) #define m5(b) // ERROR #define m6(a) #define m6(a,b) // ERROR (whitespace) #define m7 (a) #define m7 ( a) #define m80(a,b) is + exactly m3 the same #define m80(a,b) is + exactly m3 the same // ERROR #define m8(a,b) almost + exactly m3 the same #define m8(a,b) almost + exactly m3 thee same // ERROR #define m9(a,b,c) aoe #define m9(a,d,c) aoe #define n1 0xf int n = n1; #define f1 .08e-2Lf double f = f1; #undef __VERSION__ #undef GL_ARB_texture_rectangle # # # ## # # # 0x25 #### ####ff #########ff fg 0x25 #pragma #pragma(aoent) # pragma #pragma STDGL #pragma optimize( on) #pragma optimize(off) #pragma debug( on) #pragma debug(off ) #pragma optimize( on) anoteun #pragma optimize(off #pragma debug( on) ( #pragma debug(off aoeua) #pragma optimize( on) #pragma optimize(off,) #pragma debug( on, aoeu) #pragma debugoff ) #pragma aontheu natoeh uantheo uasotea noeahuonea uonethau onethuanoeth aunotehau noeth anthoeua anoethuantoeh uantoehu natoehu naoteh unotaehu noethua onetuh aou # \ # \ error good continuation #flizbit #define directive error #directive directive was expanded #line 12000 #error line should be 12000 #line 13000 7 #error line should be 13000, string 7 #define L1 14000 #define L2 13 #define F1 5 #define F2 7 #line L1 + L2 #error line should be 14013, string 7 #line L1 + L2 F1 + F2 // antoeuh sat comment #error line should be 14013, string 12 #line L1 + L2 + F1 + F2 #error line should be 14025, string 12 #line 1234 F1 + F2 extra #define empty_extra #line 1235 F1 + F2 empty_extra #define moreEmpty empty_extra #line 1236 F1 + F2 moreEmpty empty_extra // okay, lots of nothin #line 1237 F1 + F2 moreEmpty empty_extra extra // ERROR, 'extra' #line 1238 F1 + F2 moreEmpty empty_extra #line 1239 empty_extra F1 empty_extra + empty_extra F2 empty_extra moreEmpty empty_extra #line (20000) #error line should be 20000 #line (20000+10) #error line should be 20010 #line +20020 #error line should be 20020 #define VAL1 1.0 #define VAL2 2.0 #define RES2 /* test a multiline comment in a macro definition */ (RES1 * VAL2) #define RES1 (VAL2 / VAL1) #define RES2 /* comment */(RES1 * VAL2) #define /* */SUM_VALUES (RES2 + RES1) void foo234() { gl_Position = vec4(SUM_VALUES); } // more whitespace recording tests #define SPACE_AT_END(a,b) spaceAtEndIsOkay #define SPACE_AT_END(a,b) spaceAtEndIsOkay // space at end #define SPACE_AT_BEGIN(a,b)spaceAtBeginIsOkay #define SPACE_AT_BEGIN(a,b) spaceAtBeginIsOkay // space in middle is an error #define SPACE_IN_MIDDLE(a,b) space +in middle #define SPACE_IN_MIDDLE(a,b) space + in middle #define FIRSTPART 17 #define SECONDPART + 5 #if FIRSTPART SECONDPART == 22 #error good evaluation 1 #endif #if moreEmpty FIRSTPART moreEmpty SECONDPART moreEmpty == moreEmpty 22 moreEmpty #error good evaluation 2 #endif // ERRORS... #line 9000 #if defined(OUNH #endif #if defined OUNH) #endif // recursion (okay) #define RECURSE RECURSE int RECURSE; #define R2 R1 #define R1 R2 #undef RECURSE int R1 = RECURSE; #define FOOOM(a,b) a + b int aoeua = FOOOM; #if FOOOM #endif #line 9500 #if\376 #endif #if \376 #endif #if \377 #endif #error\377 #error \ 376 #error \377 // ERROR for macro expansion to yield 'defined' #line 9600 #define DEF_MAC #define DEF_DEFINED defined #if DEF_DEFINED DEF_MAC #error DEF_DEFINED then #else #error DEF_DEFINED else #endif #line 10000 #if 1 #else // ERROR, missing #endifglslang-16.0.0/Test/dataOut.frag000066400000000000000000000001301506534232700164070ustar00rootroot00000000000000#version 130 varying vec4 Color; void main() { gl_FragData[1] = Color; } glslang-16.0.0/Test/dataOutIndirect.frag000066400000000000000000000001521506534232700200750ustar00rootroot00000000000000#version 130 varying vec4 Color; uniform int i; void main() { gl_FragData[i] = Color; } glslang-16.0.0/Test/dce.frag000066400000000000000000000020431506534232700155460ustar00rootroot00000000000000#version 400 const bool flag = false; int c = 0; void bar() { if (flag) ++c; // should still show up in AST else ++c; flag ? ++c : ++c; // both should still show up in AST switch (c) { case 1: ++c; break; ++c; // should still show up in AST case 2: break; ++c; // should still show up in AST default: break; } for (int i = 0; i < 0; ++i) ++c; // should still show up in AST for (int i = 0; i < 10; ++i) { if (c < 3) { break; ++c; // should still show up in AST } else { continue; ++c; // should still show up in AST } } return; ++c; // should still show up in AST } int foo() // not called, but should still show up in AST { if (c > 4) { return 4; ++c; // should still show up in AST } return 5; ++c; // should still show up in AST } glslang-16.0.0/Test/decls.frag000066400000000000000000000026321506534232700161110ustar00rootroot00000000000000#version 120 int a; int b, c; int d1 = 1; int e2 = 2, f; int g, h3 = 3; int i4[4]; int j, k5[5]; int m6[6], m7[7]; int n8[8], p; int ii4[4] = int[](1, 2, 3, 4); int ij, ik5[5] = int[](5, 6, 7, 8, 9); int im2[2] = int[](10, 11), im3[3] = int[](12, 13, 14); int in8[4] = int[](21, 22, 23, 24), ip; void vi4[4] = int[](1, 2, 3, 4); void vj, vk5[5] = int[](5, 6, 7, 8, 9); void vm2[2] = int[](10, 11), vm3[3] = int[](12, 13, 14); void vn8[4] = int[](21, 22, 23, 24), vp; const int cii4[4] = int[](1, 2, 3, 4); const int cij, cik5[5] = int[](5, 6, 7, 8, 9); const int cim2[2] = int[](10, 11), cim3[3] = int[](12, 13, 14); const int cin8[4] = int[](21, 22, 23, 24), cip; uniform int uii4[4] = int[](1, 2, 3, 4); uniform int uij, uik5[5] = int[](5, 6, 7, 8, 9); uniform int uim2[2] = int[](10, 11), uim3[3] = int[](12, 13, 14); uniform int uin8[4] = int[](21, 22, 23, 24), uip; int gl_vi4[4] = int[](1, 2, 3, 4); int gl_vj, gl_vk5[5] = int[](5, 6, 7, 8, 9); int gl_vm2[2] = int[](10, 11), gl_vm3[3] = int[](12, 13, 14); int gl_vn8[4] = int[](21, 22, 23, 24), gl_vp; void main() { while (bool cond = b < c); while (int icond = b); while (bool gl_cond = b < c); } int foob__vi4[4] = int[](1, 2, 3, 4); int foob__vj, foob__vk5[5] = int[](5, 6, 7, 8, 9); int __foobvm2[2] = int[](10, 11), __foobvm3[3] = int[](12, 13, 14); int foob__vn8[4] = int[](21, 22, 23, 24), foob__vp; glslang-16.0.0/Test/deepRvalue.frag000066400000000000000000000016131506534232700171110ustar00rootroot00000000000000#version 120 uniform sampler2D sampler; vec4 v1 = vec4(2.0, 3.0, 5.0, 7.0); vec4 v2 = vec4(11.0, 13.0, 17.0, 19.0); vec4 v3 = vec4(23.0, 29.0, 31.0, 37.0); vec4 v4 = vec4(41.0, 43.0, 47.0, 53.0); struct str { int a; vec2 b[3]; bool c; }; void main() { mat4 m = mat4(v1, v2, v3, v4); mat4 mm = matrixCompMult(m, m); float f = mm[1].w; // should be 19 * 19 = 361 // do a deep access to a spontaneous r-value float g = matrixCompMult(m, m)[2].y; // should be 29 * 29 = 841 float h = str(1, vec2[3](vec2(2.0, 3.0), vec2(4.0, 5.0), vec2(6.0, 7.0)), true).b[1][1]; // should be 5.0 float i = texture2D(sampler, vec2(0.5,0.5)).y; i += (i > 0.1 ? v1 : v2)[3]; str t; i += (t = str(1, vec2[3](vec2(2.0, 3.0), vec2(4.0, 5.0), vec2(6.0, 7.0)), true)).b[2].y; // should be 7.0 gl_FragColor = vec4(f, g, h, i); } glslang-16.0.0/Test/defaultArgs.comp000066400000000000000000000001371506534232700172750ustar00rootroot00000000000000#version 450 void foo(int n, int x = 2) { } void main() { foo(6); foo(7); foo(8, 3); } glslang-16.0.0/Test/depthOut.frag000066400000000000000000000002061506534232700166060ustar00rootroot00000000000000#version 130 varying vec4 Color; varying float Depth; void main() { gl_FragDepth = Depth; gl_FragColor = Color; } glslang-16.0.0/Test/discard-dce.frag000066400000000000000000000012321506534232700171540ustar00rootroot00000000000000#version 110 varying vec2 tex_coord; void main (void) { vec4 white = vec4(1.0); vec4 black = vec4(0.2); vec4 color = white; // First, cut out our circle float x = tex_coord.x*2.0 - 1.0; float y = tex_coord.y*2.0 - 1.0; float radius = sqrt(x*x + y*y); if (radius > 1.0) { if (radius > 1.1) { ++color; } gl_FragColor = color; if (radius > 1.2) { ++color; } discard; } // If we're near an edge, darken us a tiny bit if (radius >= 0.75) color -= abs(pow(radius, 16.0)/2.0); gl_FragColor = color; } glslang-16.0.0/Test/doWhileLoop.frag000066400000000000000000000003461506534232700172440ustar00rootroot00000000000000#version 110 uniform vec4 bigColor; varying vec4 BaseColor; uniform float d; void main() { vec4 color = BaseColor; do { color += bigColor; } while (color.x < d); gl_FragColor = color; } glslang-16.0.0/Test/earlyReturnDiscard.frag000066400000000000000000000036101506534232700206220ustar00rootroot00000000000000#version 110 uniform float d; uniform vec4 bigColor, smallColor; uniform vec4 otherColor; varying float c; uniform float threshhold; uniform float threshhold2; uniform float threshhold3; uniform float minimum; varying vec4 BaseColor; uniform bool b; void main() { vec4 color = BaseColor; vec4 color2; color2 = otherColor; if (c > d) color += bigColor; else color += smallColor; if (color.z < minimum) return; color.z++; if (color.z > threshhold) discard; color++; // Two path, different rest if (color.w > threshhold2) { if (color.z > threshhold2) return; else if (b) color.z++; else { if (color.x < minimum) { discard; } else { color++; } } } else { if (b) discard; else return; } // // Two path, shared rest // if (color.w > threshhold2) { // if (color.z > threshhold2) // return; // else if (b) // color++; // else { // if (color.x < minimum) { // discard; // } else { // color++; // } // } // } else { // if (b) // discard; // else // return; // } // // One path // if (color.w > threshhold2) { // if (color.z > threshhold2) // return; // else { // if (color.x < minimum) { // discard; // } else { // color++; // } // } // } else { // if (b) // discard; // else // return; // } gl_FragColor = color * color2; } glslang-16.0.0/Test/empty.frag000066400000000000000000000000001506534232700161400ustar00rootroot00000000000000glslang-16.0.0/Test/empty2.frag000066400000000000000000000000011506534232700162230ustar00rootroot00000000000000 glslang-16.0.0/Test/empty3.frag000066400000000000000000000000151506534232700162310ustar00rootroot00000000000000#version 110 glslang-16.0.0/Test/enhanced.0.frag000066400000000000000000000001051506534232700167130ustar00rootroot00000000000000#version 450 in vec3 v; void main() { vec4 color = vec4(v); } glslang-16.0.0/Test/enhanced.1.frag000066400000000000000000000001531506534232700167170ustar00rootroot00000000000000#version 450 in Vertex { vec4 v; } vVert; void main() { vec4 color = vec4(vVert.v2.rgb, 1.0); } glslang-16.0.0/Test/enhanced.2.frag000066400000000000000000000001071506534232700167170ustar00rootroot00000000000000#version 450 void main() { vec3 color = vec3(0.0,0.0,0.0,1.0); } glslang-16.0.0/Test/enhanced.3.frag000066400000000000000000000003631506534232700167240ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/enhanced.3.vert000066400000000000000000000005751506534232700167720ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/enhanced.4.frag000066400000000000000000000003711506534232700167240ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/enhanced.4.vert000066400000000000000000000005751506534232700167730ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/enhanced.5.frag000066400000000000000000000003741506534232700167300ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/enhanced.5.vert000066400000000000000000000005751506534232700167740ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/enhanced.6.frag000066400000000000000000000003771506534232700167340ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/enhanced.6.vert000066400000000000000000000006031506534232700167650ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/enhanced.7.frag000066400000000000000000000005501506534232700167260ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/enhanced.7.vert000066400000000000000000000007761506534232700170010ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/error-column.vert000066400000000000000000000007661506534232700175120ustar00rootroot00000000000000#version 450 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoords; layout (binding = 0) uniform block { const mat4 model; const mat4 view; const mat4 projection; }; layout (location = 0) out Vertex { vec3 color; vec3 worldSpacePos; vec3 worldSpaceNorm; const vec2 texCoord1; flat int cameraIndex; float ii; } vs_out; void main() { gl_Position = projection * view * model * vec4(Pos, 1.0); vs_out.texCoord1 = aTexCoords; } glslang-16.0.0/Test/errors.frag000066400000000000000000000000441506534232700163260ustar00rootroot00000000000000int main(int foo) { return 1; } glslang-16.0.0/Test/es-link1.frag000066400000000000000000000001431506534232700164350ustar00rootroot00000000000000#version 100 mediump vec4 calculateColor(); void main() { gl_FragColor = calculateColor(); } glslang-16.0.0/Test/es-link2.frag000066400000000000000000000001631506534232700164400ustar00rootroot00000000000000#version 100 varying mediump vec4 varyingColor; mediump vec4 calculateColor() { return varyingColor * 0.5; } glslang-16.0.0/Test/findFunction.frag000066400000000000000000000016421506534232700174450ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable int64_t func(int8_t a, int16_t b, int16_t c) { return int64_t(a | b + c); } int64_t func(int8_t a, int16_t b, int32_t c) { return int64_t(a | b - c); } int64_t func(int32_t a, int32_t b, int32_t c) { return int64_t(a / b + c); } int64_t func(float16_t a, float16_t b, float32_t c) { return int64_t(a - b * c); } int64_t func(float16_t a, int16_t b, float32_t c) { return int64_t(a - b * c); } void main() { int8_t x; int16_t y; int32_t z; int64_t w; float16_t f16; float64_t f64; int64_t b1 = func(x, y, z); int64_t b2 = func(y, y, z); // tie int64_t b3 = func(y, y, w); // No match int64_t b4 = func(y, z, f16); // No match int64_t b5 = func(y, y, f16); int64_t b7 = func(f16, f16, y); int64_t b8 = func(f16, f16, f64); // No match int64_t b9 = func(f16, x, f16); // tie } glslang-16.0.0/Test/find_package/000077500000000000000000000000001506534232700165465ustar00rootroot00000000000000glslang-16.0.0/Test/find_package/CMakeLists.txt000066400000000000000000000057441506534232700213200ustar00rootroot00000000000000# Copyright (C) 2025 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. cmake_minimum_required(VERSION 3.22.1) # NOTE: The whole point of this file is to test what the client will # see when they install glslang via a package manager. project(FP_TEST LANGUAGES C CXX) # Assume the user install here to simplify CI # It also makes local testing easier. list(APPEND CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/../../build/install") find_package(glslang REQUIRED CONFIG) if (NOT DEFINED glslang_VERSION) message(FATAL_ERROR "glslang_VERSION not defined!") endif() message(STATUS "glslang_VERSION = ${glslang_VERSION}") get_target_property(target_type glslang::glslang TYPE) message(STATUS "glslang::glslang is ${target_type}") add_executable(example example.c) target_link_libraries(example PRIVATE glslang::glslang glslang::glslang-default-resource-limits ) if (NOT TARGET glslang::glslang-standalone) message(FATAL_ERROR "glslang::glslang-standalone does not exist!") endif() if (target_type STREQUAL STATIC_LIBRARY) # When these stub libraries are removed from the future. Simply remove this code. # For now it ensures backcompat is preserved. add_library(stub STATIC stub.cpp) target_link_libraries(example PRIVATE glslang::GenericCodeGen glslang::MachineIndependent glslang::OSDependent glslang::SPIRV ) # Ensure these executables run without issue add_custom_target(test-executables ALL COMMAND glslang::glslang-standalone --version ) endif() glslang-16.0.0/Test/find_package/example.c000066400000000000000000000105751506534232700203550ustar00rootroot00000000000000// // Copyright (C) 2025 The Khronos Group Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include #include #include // Required for use of glslang_default_resource #include typedef struct SpirVBinary { uint32_t* words; // SPIR-V words int size; // number of words in SPIR-V binary } SpirVBinary; SpirVBinary 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 = glslang_default_resource(), }; glslang_shader_t* shader = glslang_shader_create(&input); SpirVBinary bin = { .words = NULL, .size = 0, }; 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 bin; } 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 bin; } 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 bin; } glslang_program_SPIRV_generate(program, stage); bin.size = glslang_program_SPIRV_get_size(program); bin.words = malloc(bin.size * sizeof(uint32_t)); glslang_program_SPIRV_get(program, bin.words); 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 bin; } int main() { return 0; } glslang-16.0.0/Test/find_package/stub.cpp000066400000000000000000000031011506534232700202220ustar00rootroot00000000000000// // Copyright (C) 2025 The Khronos Group Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // glslang-16.0.0/Test/floatBitsToInt.vert000066400000000000000000000010771506534232700177670ustar00rootroot00000000000000#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; } }glslang-16.0.0/Test/flowControl.frag000066400000000000000000000005511506534232700173250ustar00rootroot00000000000000#version 120 uniform float d; uniform vec4 bigColor, smallColor; uniform vec4 otherColor; varying float c; varying vec4 BaseColor; void main() { vec4 color = BaseColor; vec4 color2; color2 = otherColor; if (c > d) color += bigColor; else color += smallColor; gl_FragColor = color * color2; } glslang-16.0.0/Test/foo.h000066400000000000000000000000361506534232700151060ustar00rootroot00000000000000#error should not be included glslang-16.0.0/Test/forLoop.frag000066400000000000000000000012401506534232700164310ustar00rootroot00000000000000#version 130 uniform vec4 bigColor; in vec4 BaseColor; in float f; uniform int Count; uniform uvec4 v4; void main() { vec4 color = BaseColor; for (int i = 0; i < Count; ++i) { color += bigColor; } gl_FragColor = color; float sum = 0.0; for (int i = 0; i < 4; ++i) sum += v4[i]; vec4 tv4; for (int i = 0; i < 4; ++i) tv4[i] = v4[i] * 4u; gl_FragColor += vec4(sum) + tv4; vec4 r; r.xyz = BaseColor.xyz; for (int i = 0; i < Count; ++i) r.w = f; gl_FragColor.xyz += r.xyz; for (int i = 0; i < 16; i += 4) gl_FragColor *= f; } glslang-16.0.0/Test/forwardRef.frag000066400000000000000000000007001506534232700171120ustar00rootroot00000000000000#version 110 uniform vec4 bigColor; varying vec4 BaseColor; uniform float d; void bar(); float foo(vec4); float unreachableReturn(); void main() { vec4 color = vec4(foo(BaseColor)); bar(); float f = unreachableReturn(); gl_FragColor = color * f; } void bar() { } float unreachableReturn() { bar(); if (d < 4.2) return 1.2; else return 4.5; } float foo(vec4 bar) { return bar.x + bar.y; } glslang-16.0.0/Test/functionCall.frag000066400000000000000000000012031506534232700174310ustar00rootroot00000000000000#version 130 uniform vec4 bigColor; varying vec4 BaseColor; uniform float d; float h = 0.0; float foo(vec4 bar) { return bar.x + bar.y; } void bar() { } float unreachableReturn() { if (d < 4.2) return 1.2; else return 4.5; // might be another return inserted here by builders, has to be correct type } float missingReturn() { if (d < 4.5) { h = d; return 3.9; } } void main() { vec4 color = vec4(foo(BaseColor)); bar(); float f = unreachableReturn(); float g = missingReturn(); gl_FragColor = color * f * h; } glslang-16.0.0/Test/functionSemantics.frag000066400000000000000000000030521506534232700205100ustar00rootroot00000000000000#version 400 uniform float u; int foo(int a, const int b, in int c, const in int d, out int e, inout int f) { int sum = a + b + c + d + f; // no e, it is out only // sum should be 47 now a *= 64; // no b, it is read only c *= 64; // no d, it is read only e = 64 * 16; // e starts undefined f *= 64; sum += a + 64 * b + c + 64 * d + e + f; // everything has a value now, totaling of 64(1+2+4+8+16+32) = 64*63 = 4032 // sum should be 4032 + 47 = 4079 return sum; } int foo2(float a, vec3 b, out int r) { r = int(3.0 * a); return int(5.0 * b.y); } int foo3() { if (u > 3.2) { discard; return 1000000; } return 2000000; } void main() { int e; int t = 2; struct s { ivec4 t; } f; f.t.y = 32; // test the different qualifers int color = foo(1, 2, t+t, 8, e, f.t.y); color += 128 * (e + f.t.y); // right side should be 128(64(16 + 32)) = 393216 // sum should be 4079 + 393216 = 397295 // test conversions float arg; float ret; ret = foo2(4, ivec3(1,2,3), arg); // ret = 10, param = 12.0 color += int(ret + arg); // adds 22, for total of 397317 color += foo3(); // theoretically, add 2000000, for total of 2397317 gl_FragColor = vec4(color); } vec3 m(vec2); void aggCall() { float F; m(ivec2(F)); // test input conversion of single argument that's an aggregate; other function tests in 120.vert } vec4 badConv() { return u; // ERROR, can change scalar to vector }glslang-16.0.0/Test/gl_FragCoord.frag000066400000000000000000000013641506534232700173500ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/gl_MaxSamples_32.conf000066400000000000000000000061421506534232700200650ustar00rootroot00000000000000MaxLights 32 MaxClipPlanes 6 MaxTextureUnits 32 MaxTextureCoords 32 MaxVertexAttribs 64 MaxVertexUniformComponents 4096 MaxVaryingFloats 64 MaxVertexTextureImageUnits 32 MaxCombinedTextureImageUnits 80 MaxTextureImageUnits 32 MaxFragmentUniformComponents 4096 MaxDrawBuffers 32 MaxVertexUniformVectors 128 MaxVaryingVectors 8 MaxFragmentUniformVectors 16 MaxVertexOutputVectors 16 MaxFragmentInputVectors 15 MinProgramTexelOffset -8 MaxProgramTexelOffset 7 MaxClipDistances 8 MaxComputeWorkGroupCountX 65535 MaxComputeWorkGroupCountY 65535 MaxComputeWorkGroupCountZ 65535 MaxComputeWorkGroupSizeX 1024 MaxComputeWorkGroupSizeY 1024 MaxComputeWorkGroupSizeZ 64 MaxComputeUniformComponents 1024 MaxComputeTextureImageUnits 16 MaxComputeImageUniforms 8 MaxComputeAtomicCounters 8 MaxComputeAtomicCounterBuffers 1 MaxVaryingComponents 60 MaxVertexOutputComponents 64 MaxGeometryInputComponents 64 MaxGeometryOutputComponents 128 MaxFragmentInputComponents 128 MaxImageUnits 8 MaxCombinedImageUnitsAndFragmentOutputs 8 MaxCombinedShaderOutputResources 8 MaxImageSamples 0 MaxVertexImageUniforms 0 MaxTessControlImageUniforms 0 MaxTessEvaluationImageUniforms 0 MaxGeometryImageUniforms 0 MaxFragmentImageUniforms 8 MaxCombinedImageUniforms 8 MaxGeometryTextureImageUnits 16 MaxGeometryOutputVertices 256 MaxGeometryTotalOutputComponents 1024 MaxGeometryUniformComponents 1024 MaxGeometryVaryingComponents 64 MaxTessControlInputComponents 128 MaxTessControlOutputComponents 128 MaxTessControlTextureImageUnits 16 MaxTessControlUniformComponents 1024 MaxTessControlTotalOutputComponents 4096 MaxTessEvaluationInputComponents 128 MaxTessEvaluationOutputComponents 128 MaxTessEvaluationTextureImageUnits 16 MaxTessEvaluationUniformComponents 1024 MaxTessPatchComponents 120 MaxPatchVertices 32 MaxTessGenLevel 64 MaxViewports 16 MaxVertexAtomicCounters 0 MaxTessControlAtomicCounters 0 MaxTessEvaluationAtomicCounters 0 MaxGeometryAtomicCounters 0 MaxFragmentAtomicCounters 8 MaxCombinedAtomicCounters 8 MaxAtomicCounterBindings 1 MaxVertexAtomicCounterBuffers 0 MaxTessControlAtomicCounterBuffers 0 MaxTessEvaluationAtomicCounterBuffers 0 MaxGeometryAtomicCounterBuffers 0 MaxFragmentAtomicCounterBuffers 1 MaxCombinedAtomicCounterBuffers 1 MaxAtomicCounterBufferSize 16384 MaxTransformFeedbackBuffers 4 MaxTransformFeedbackInterleavedComponents 64 MaxCullDistances 8 MaxCombinedClipAndCullDistances 8 MaxSamples 32 MaxMeshOutputVerticesNV 256 MaxMeshOutputPrimitivesNV 512 MaxMeshWorkGroupSizeX_NV 32 MaxMeshWorkGroupSizeY_NV 1 MaxMeshWorkGroupSizeZ_NV 1 MaxTaskWorkGroupSizeX_NV 32 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 doWhileLoops 1 generalUniformIndexing 1 generalAttributeMatrixVectorIndexing 1 generalVaryingIndexing 1 generalSamplerIndexing 1 generalVariableIndexing 1 generalConstantMatrixVectorIndexing 1glslang-16.0.0/Test/gl_MaxSamples_64.conf000066400000000000000000000061421506534232700200720ustar00rootroot00000000000000MaxLights 32 MaxClipPlanes 6 MaxTextureUnits 32 MaxTextureCoords 32 MaxVertexAttribs 64 MaxVertexUniformComponents 4096 MaxVaryingFloats 64 MaxVertexTextureImageUnits 32 MaxCombinedTextureImageUnits 80 MaxTextureImageUnits 32 MaxFragmentUniformComponents 4096 MaxDrawBuffers 32 MaxVertexUniformVectors 128 MaxVaryingVectors 8 MaxFragmentUniformVectors 16 MaxVertexOutputVectors 16 MaxFragmentInputVectors 15 MinProgramTexelOffset -8 MaxProgramTexelOffset 7 MaxClipDistances 8 MaxComputeWorkGroupCountX 65535 MaxComputeWorkGroupCountY 65535 MaxComputeWorkGroupCountZ 65535 MaxComputeWorkGroupSizeX 1024 MaxComputeWorkGroupSizeY 1024 MaxComputeWorkGroupSizeZ 64 MaxComputeUniformComponents 1024 MaxComputeTextureImageUnits 16 MaxComputeImageUniforms 8 MaxComputeAtomicCounters 8 MaxComputeAtomicCounterBuffers 1 MaxVaryingComponents 60 MaxVertexOutputComponents 64 MaxGeometryInputComponents 64 MaxGeometryOutputComponents 128 MaxFragmentInputComponents 128 MaxImageUnits 8 MaxCombinedImageUnitsAndFragmentOutputs 8 MaxCombinedShaderOutputResources 8 MaxImageSamples 0 MaxVertexImageUniforms 0 MaxTessControlImageUniforms 0 MaxTessEvaluationImageUniforms 0 MaxGeometryImageUniforms 0 MaxFragmentImageUniforms 8 MaxCombinedImageUniforms 8 MaxGeometryTextureImageUnits 16 MaxGeometryOutputVertices 256 MaxGeometryTotalOutputComponents 1024 MaxGeometryUniformComponents 1024 MaxGeometryVaryingComponents 64 MaxTessControlInputComponents 128 MaxTessControlOutputComponents 128 MaxTessControlTextureImageUnits 16 MaxTessControlUniformComponents 1024 MaxTessControlTotalOutputComponents 4096 MaxTessEvaluationInputComponents 128 MaxTessEvaluationOutputComponents 128 MaxTessEvaluationTextureImageUnits 16 MaxTessEvaluationUniformComponents 1024 MaxTessPatchComponents 120 MaxPatchVertices 32 MaxTessGenLevel 64 MaxViewports 16 MaxVertexAtomicCounters 0 MaxTessControlAtomicCounters 0 MaxTessEvaluationAtomicCounters 0 MaxGeometryAtomicCounters 0 MaxFragmentAtomicCounters 8 MaxCombinedAtomicCounters 8 MaxAtomicCounterBindings 1 MaxVertexAtomicCounterBuffers 0 MaxTessControlAtomicCounterBuffers 0 MaxTessEvaluationAtomicCounterBuffers 0 MaxGeometryAtomicCounterBuffers 0 MaxFragmentAtomicCounterBuffers 1 MaxCombinedAtomicCounterBuffers 1 MaxAtomicCounterBufferSize 16384 MaxTransformFeedbackBuffers 4 MaxTransformFeedbackInterleavedComponents 64 MaxCullDistances 8 MaxCombinedClipAndCullDistances 8 MaxSamples 64 MaxMeshOutputVerticesNV 256 MaxMeshOutputPrimitivesNV 512 MaxMeshWorkGroupSizeX_NV 32 MaxMeshWorkGroupSizeY_NV 1 MaxMeshWorkGroupSizeZ_NV 1 MaxTaskWorkGroupSizeX_NV 32 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 doWhileLoops 1 generalUniformIndexing 1 generalAttributeMatrixVectorIndexing 1 generalVaryingIndexing 1 generalSamplerIndexing 1 generalVariableIndexing 1 generalConstantMatrixVectorIndexing 1glslang-16.0.0/Test/gl_samplemask_array_size.frag000066400000000000000000000003671506534232700220710ustar00rootroot00000000000000#version 320 es layout(location = 0) out mediump vec4 fragColor; void main (void) { for (int i = 0; i < gl_SampleMask.length(); ++i) gl_SampleMask[i] = int(0xAAAAAAAA); fragColor = vec4(0.0, 1.0, 0.0, 1.0); }glslang-16.0.0/Test/glsl.-D-U.frag000066400000000000000000000005711506534232700164210ustar00rootroot00000000000000#version 450 #define IN_SHADER layout(location=0) out vec4 color; void main() { #if FOO==200 color = vec4(1.0); #else #error expected FOO 200 #endif #ifdef IN_SHADER color++; #else #error IN_SHADER was undef #endif #ifdef UNDEFED #error UNDEFED defined #else color *= 3.0; #endif #if MUL == 400 color *= MUL; #else #error bad MUL #endif } glslang-16.0.0/Test/glsl.-P.frag000066400000000000000000000004231506534232700162270ustar00rootroot00000000000000#version 450 layout(location=0) out vec4 color; void main() { #ifndef TEST1 #error TEST1 is not defined #endif #ifndef TEST2 #error TEST2 is not defined #endif #ifndef TEST3 #error TEST3 is not defined #endif color = vec4(1.0); } glslang-16.0.0/Test/glsl.-P.function.frag000066400000000000000000000001321506534232700200500ustar00rootroot00000000000000#version 450 layout(location=0) out vec4 color; void main() { color = getColor(); } glslang-16.0.0/Test/glsl.-P.include.frag000066400000000000000000000001741506534232700176540ustar00rootroot00000000000000#version 450 #include "glsl.-P.included.glsl" layout(location=0) out vec4 color; void main() { color = getColor(); } glslang-16.0.0/Test/glsl.-P.included.glsl000066400000000000000000000000521506534232700200350ustar00rootroot00000000000000vec4 getColor() { return vec4(1.0); } glslang-16.0.0/Test/glsl.140.layoutOffset.error.vert000066400000000000000000000003151506534232700221330ustar00rootroot00000000000000#version 140 layout (std140) uniform UBO // offset can't use under version 140 { layout(offset = 0) vec4 a; }; in vec4 in_vs; out vec4 out_vs; void main() { out_vs = in_vs + a; } glslang-16.0.0/Test/glsl.430.layoutOffset.error.vert000066400000000000000000000003471506534232700221420ustar00rootroot00000000000000#version 430 core layout (std140) uniform UBO // offset can't use on 430 core with out extension require { layout(offset = 0) vec4 a; }; in vec4 in_vs; out vec4 out_vs; void main() { out_vs = in_vs + a; } glslang-16.0.0/Test/glsl.450.subgroup.frag000066400000000000000000000266231506534232700201420ustar00rootroot00000000000000#version 450 vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } #extension GL_KHR_shader_subgroup_basic: enable layout(location = 0) out uvec4 data; void main (void) { data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #extension GL_KHR_shader_subgroup_ballot: enable void ballot_works(vec4 f4) { int i; gl_SubgroupEqMask; gl_SubgroupGeMask; gl_SubgroupGtMask; gl_SubgroupLeMask; gl_SubgroupLtMask; subgroupBroadcast(f4, 0); subgroupBroadcast(f4, i); subgroupBroadcastFirst(f4); uvec4 ballot = subgroupBallot(false); subgroupInverseBallot(uvec4(0x1)); 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) { int i; subgroupQuadBroadcast(f4, 0); subgroupQuadBroadcast(f4, i); subgroupQuadSwapHorizontal(f4); subgroupQuadSwapVertical(f4); subgroupQuadSwapDiagonal(f4); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.450.subgroup.geom000066400000000000000000000266611506534232700201540ustar00rootroot00000000000000#version 450 vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } #extension GL_KHR_shader_subgroup_basic: enable layout(points) in; layout(points, max_vertices = 1) out; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.450.subgroup.tesc000066400000000000000000000266151506534232700201620ustar00rootroot00000000000000#version 450 vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } #extension GL_KHR_shader_subgroup_basic: enable layout(vertices=1) out; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.450.subgroup.tese000066400000000000000000000266121506534232700201610ustar00rootroot00000000000000#version 450 vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } #extension GL_KHR_shader_subgroup_basic: enable layout(isolines) in; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.450.subgroup.vert000066400000000000000000000265631506534232700202060ustar00rootroot00000000000000#version 450 vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } #extension GL_KHR_shader_subgroup_basic: enable layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_VertexID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.450.subgroupArithmetic.comp000066400000000000000000000500561506534232700221700ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_arithmetic: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupAdd(data[0].f4.x); data[invocation].f4.xy = subgroupAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupAdd(data[2].f4.xyz); data[invocation].f4 = subgroupAdd(data[3].f4); data[invocation].i4.x = subgroupAdd(data[0].i4.x); data[invocation].i4.xy = subgroupAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupAdd(data[2].i4.xyz); data[invocation].i4 = subgroupAdd(data[3].i4); data[invocation].u4.x = subgroupAdd(data[0].u4.x); data[invocation].u4.xy = subgroupAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupAdd(data[2].u4.xyz); data[invocation].u4 = subgroupAdd(data[3].u4); data[invocation].d4.x = subgroupAdd(data[0].d4.x); data[invocation].d4.xy = subgroupAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupAdd(data[2].d4.xyz); data[invocation].d4 = subgroupAdd(data[3].d4); data[invocation].f4.x = subgroupMul(data[0].f4.x); data[invocation].f4.xy = subgroupMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupMul(data[2].f4.xyz); data[invocation].f4 = subgroupMul(data[3].f4); data[invocation].i4.x = subgroupMul(data[0].i4.x); data[invocation].i4.xy = subgroupMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupMul(data[2].i4.xyz); data[invocation].i4 = subgroupMul(data[3].i4); data[invocation].u4.x = subgroupMul(data[0].u4.x); data[invocation].u4.xy = subgroupMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupMul(data[2].u4.xyz); data[invocation].u4 = subgroupMul(data[3].u4); data[invocation].d4.x = subgroupMul(data[0].d4.x); data[invocation].d4.xy = subgroupMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupMul(data[2].d4.xyz); data[invocation].d4 = subgroupMul(data[3].d4); data[invocation].f4.x = subgroupMin(data[0].f4.x); data[invocation].f4.xy = subgroupMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupMin(data[2].f4.xyz); data[invocation].f4 = subgroupMin(data[3].f4); data[invocation].i4.x = subgroupMin(data[0].i4.x); data[invocation].i4.xy = subgroupMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupMin(data[2].i4.xyz); data[invocation].i4 = subgroupMin(data[3].i4); data[invocation].u4.x = subgroupMin(data[0].u4.x); data[invocation].u4.xy = subgroupMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupMin(data[2].u4.xyz); data[invocation].u4 = subgroupMin(data[3].u4); data[invocation].d4.x = subgroupMin(data[0].d4.x); data[invocation].d4.xy = subgroupMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupMin(data[2].d4.xyz); data[invocation].d4 = subgroupMin(data[3].d4); data[invocation].f4.x = subgroupMax(data[0].f4.x); data[invocation].f4.xy = subgroupMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupMax(data[2].f4.xyz); data[invocation].f4 = subgroupMax(data[3].f4); data[invocation].i4.x = subgroupMax(data[0].i4.x); data[invocation].i4.xy = subgroupMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupMax(data[2].i4.xyz); data[invocation].i4 = subgroupMax(data[3].i4); data[invocation].u4.x = subgroupMax(data[0].u4.x); data[invocation].u4.xy = subgroupMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupMax(data[2].u4.xyz); data[invocation].u4 = subgroupMax(data[3].u4); data[invocation].d4.x = subgroupMax(data[0].d4.x); data[invocation].d4.xy = subgroupMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupMax(data[2].d4.xyz); data[invocation].d4 = subgroupMax(data[3].d4); data[invocation].i4.x = subgroupAnd(data[0].i4.x); data[invocation].i4.xy = subgroupAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupAnd(data[2].i4.xyz); data[invocation].i4 = subgroupAnd(data[3].i4); data[invocation].u4.x = subgroupAnd(data[0].u4.x); data[invocation].u4.xy = subgroupAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupAnd(data[2].u4.xyz); data[invocation].u4 = subgroupAnd(data[3].u4); data[invocation].i4.x = int(subgroupAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupOr(data[0].i4.x); data[invocation].i4.xy = subgroupOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupOr(data[2].i4.xyz); data[invocation].i4 = subgroupOr(data[3].i4); data[invocation].u4.x = subgroupOr(data[0].u4.x); data[invocation].u4.xy = subgroupOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupOr(data[2].u4.xyz); data[invocation].u4 = subgroupOr(data[3].u4); data[invocation].i4.x = int(subgroupOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupXor(data[0].i4.x); data[invocation].i4.xy = subgroupXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupXor(data[2].i4.xyz); data[invocation].i4 = subgroupXor(data[3].i4); data[invocation].u4.x = subgroupXor(data[0].u4.x); data[invocation].u4.xy = subgroupXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupXor(data[2].u4.xyz); data[invocation].u4 = subgroupXor(data[3].u4); data[invocation].i4.x = int(subgroupXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupInclusiveAdd(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveAdd(data[3].f4); data[invocation].i4.x = subgroupInclusiveAdd(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveAdd(data[3].i4); data[invocation].u4.x = subgroupInclusiveAdd(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveAdd(data[3].u4); data[invocation].d4.x = subgroupInclusiveAdd(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveAdd(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveAdd(data[3].d4); data[invocation].f4.x = subgroupInclusiveMul(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMul(data[3].f4); data[invocation].i4.x = subgroupInclusiveMul(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMul(data[3].i4); data[invocation].u4.x = subgroupInclusiveMul(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMul(data[3].u4); data[invocation].d4.x = subgroupInclusiveMul(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMul(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMul(data[3].d4); data[invocation].f4.x = subgroupInclusiveMin(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMin(data[3].f4); data[invocation].i4.x = subgroupInclusiveMin(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMin(data[3].i4); data[invocation].u4.x = subgroupInclusiveMin(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMin(data[3].u4); data[invocation].d4.x = subgroupInclusiveMin(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMin(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMin(data[3].d4); data[invocation].f4.x = subgroupInclusiveMax(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMax(data[3].f4); data[invocation].i4.x = subgroupInclusiveMax(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMax(data[3].i4); data[invocation].u4.x = subgroupInclusiveMax(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMax(data[3].u4); data[invocation].d4.x = subgroupInclusiveMax(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMax(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMax(data[3].d4); data[invocation].i4.x = subgroupInclusiveAnd(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveAnd(data[3].i4); data[invocation].u4.x = subgroupInclusiveAnd(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveAnd(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupInclusiveOr(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveOr(data[3].i4); data[invocation].u4.x = subgroupInclusiveOr(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveOr(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupInclusiveXor(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveXor(data[3].i4); data[invocation].u4.x = subgroupInclusiveXor(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveXor(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupExclusiveAdd(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveAdd(data[3].f4); data[invocation].i4.x = subgroupExclusiveAdd(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveAdd(data[3].i4); data[invocation].u4.x = subgroupExclusiveAdd(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveAdd(data[3].u4); data[invocation].d4.x = subgroupExclusiveAdd(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveAdd(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveAdd(data[3].d4); data[invocation].f4.x = subgroupExclusiveMul(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMul(data[3].f4); data[invocation].i4.x = subgroupExclusiveMul(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMul(data[3].i4); data[invocation].u4.x = subgroupExclusiveMul(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMul(data[3].u4); data[invocation].d4.x = subgroupExclusiveMul(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMul(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMul(data[3].d4); data[invocation].f4.x = subgroupExclusiveMin(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMin(data[3].f4); data[invocation].i4.x = subgroupExclusiveMin(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMin(data[3].i4); data[invocation].u4.x = subgroupExclusiveMin(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMin(data[3].u4); data[invocation].d4.x = subgroupExclusiveMin(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMin(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMin(data[3].d4); data[invocation].f4.x = subgroupExclusiveMax(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMax(data[3].f4); data[invocation].i4.x = subgroupExclusiveMax(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMax(data[3].i4); data[invocation].u4.x = subgroupExclusiveMax(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMax(data[3].u4); data[invocation].d4.x = subgroupExclusiveMax(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMax(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMax(data[3].d4); data[invocation].i4.x = subgroupExclusiveAnd(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveAnd(data[3].i4); data[invocation].u4.x = subgroupExclusiveAnd(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveAnd(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupExclusiveOr(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveOr(data[3].i4); data[invocation].u4.x = subgroupExclusiveOr(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveOr(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupExclusiveXor(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveXor(data[3].i4); data[invocation].u4.x = subgroupExclusiveXor(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveXor(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0)))); } glslang-16.0.0/Test/glsl.450.subgroupBallot.comp000066400000000000000000000101401506534232700213020ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_ballot: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 relMask = gl_SubgroupEqMask + gl_SubgroupGeMask + gl_SubgroupGtMask + gl_SubgroupLeMask + gl_SubgroupLtMask; uvec4 result = subgroupBallot(true); data[invocation].u4.x = subgroupBallotBitCount(result); data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0; data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result); data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result); if ((relMask == result) && subgroupInverseBallot(data[0].u4)) { data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, 3); data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, 3); data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3); data[invocation].f4 = subgroupBroadcast(data[3].f4, 3); data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, 2); data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, 2); data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2); data[invocation].i4 = subgroupBroadcast(data[3].i4, 2); data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, 1); data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1); data[invocation].u4 = subgroupBroadcast(data[3].u4, 1); data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, 0); data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, 0); data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, 0); data[invocation].d4 = subgroupBroadcast(data[3].d4, 0); data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1)); } else { data[invocation].f4.x = subgroupBroadcastFirst(data[0].f4.x); data[invocation].f4.xy = subgroupBroadcastFirst(data[1].f4.xy); data[invocation].f4.xyz = subgroupBroadcastFirst(data[2].f4.xyz); data[invocation].f4 = subgroupBroadcastFirst(data[3].f4); data[invocation].i4.x = subgroupBroadcastFirst(data[0].i4.x); data[invocation].i4.xy = subgroupBroadcastFirst(data[1].i4.xy); data[invocation].i4.xyz = subgroupBroadcastFirst(data[2].i4.xyz); data[invocation].i4 = subgroupBroadcastFirst(data[3].i4); data[invocation].u4.x = subgroupBroadcastFirst(data[0].u4.x); data[invocation].u4.xy = subgroupBroadcastFirst(data[1].u4.xy); data[invocation].u4.xyz = subgroupBroadcastFirst(data[2].u4.xyz); data[invocation].u4 = subgroupBroadcastFirst(data[3].u4); data[invocation].d4.x = subgroupBroadcastFirst(data[0].d4.x); data[invocation].d4.xy = subgroupBroadcastFirst(data[1].d4.xy); data[invocation].d4.xyz = subgroupBroadcastFirst(data[2].d4.xyz); data[invocation].d4 = subgroupBroadcastFirst(data[3].d4); data[invocation].i4.x = int(subgroupBroadcastFirst(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupBroadcastFirst(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupBroadcastFirst(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupBroadcastFirst(lessThan(data[1].i4, ivec4(0)))); } } glslang-16.0.0/Test/glsl.450.subgroupBallotNeg.comp000066400000000000000000000020311506534232700217340ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_ballot: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 relMask = gl_SubgroupEqMask + gl_SubgroupGeMask + gl_SubgroupGtMask + gl_SubgroupLeMask + gl_SubgroupLtMask; uvec4 result = subgroupBallot(true); data[invocation].u4.x = subgroupBallotBitCount(result); data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0; data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result); data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result); data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant } glslang-16.0.0/Test/glsl.450.subgroupBasic.comp000066400000000000000000000270421506534232700211170ustar00rootroot00000000000000#version 450 vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, extension not enabled (basic) gl_SubgroupID; // ERROR, extension not enabled (basic) subgroupMemoryBarrierShared(); // ERROR, extension not enabled (basic) subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } #extension GL_KHR_shader_subgroup_basic: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffer { int a[]; } data; void main() { data.a[gl_SubgroupSize] = 1; data.a[gl_SubgroupInvocationID] = 1; data.a[gl_NumSubgroups] = 1; data.a[gl_SubgroupID] = (subgroupElect()) ? 1 : 0; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierShared(); subgroupMemoryBarrierImage(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.450.subgroupClustered.comp000066400000000000000000000167371506534232700220410ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_clustered: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupClusteredAdd(data[0].f4.x, 1); data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupClusteredAdd(data[2].f4.xyz, 1); data[invocation].f4 = subgroupClusteredAdd(data[3].f4, 1); data[invocation].i4.x = subgroupClusteredAdd(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredAdd(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredAdd(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredAdd(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredAdd(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredAdd(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredAdd(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredAdd(data[3].u4, 1); data[invocation].d4.x = subgroupClusteredAdd(data[0].d4.x, 1); data[invocation].d4.xy = subgroupClusteredAdd(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupClusteredAdd(data[2].d4.xyz, 1); data[invocation].d4 = subgroupClusteredAdd(data[3].d4, 1); data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 1); data[invocation].f4.xy = subgroupClusteredMul(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupClusteredMul(data[2].f4.xyz, 1); data[invocation].f4 = subgroupClusteredMul(data[3].f4, 1); data[invocation].i4.x = subgroupClusteredMul(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredMul(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredMul(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredMul(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredMul(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredMul(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredMul(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredMul(data[3].u4, 1); data[invocation].d4.x = subgroupClusteredMul(data[0].d4.x, 1); data[invocation].d4.xy = subgroupClusteredMul(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupClusteredMul(data[2].d4.xyz, 1); data[invocation].d4 = subgroupClusteredMul(data[3].d4, 1); data[invocation].f4.x = subgroupClusteredMin(data[0].f4.x, 1); data[invocation].f4.xy = subgroupClusteredMin(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupClusteredMin(data[2].f4.xyz, 1); data[invocation].f4 = subgroupClusteredMin(data[3].f4, 1); data[invocation].i4.x = subgroupClusteredMin(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredMin(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredMin(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredMin(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredMin(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredMin(data[3].u4, 1); data[invocation].d4.x = subgroupClusteredMin(data[0].d4.x, 1); data[invocation].d4.xy = subgroupClusteredMin(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupClusteredMin(data[2].d4.xyz, 1); data[invocation].d4 = subgroupClusteredMin(data[3].d4, 1); data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, 1); data[invocation].f4.xy = subgroupClusteredMax(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupClusteredMax(data[2].f4.xyz, 1); data[invocation].f4 = subgroupClusteredMax(data[3].f4, 1); data[invocation].i4.x = subgroupClusteredMax(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredMax(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredMax(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredMax(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredMax(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredMax(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredMax(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredMax(data[3].u4, 1); data[invocation].d4.x = subgroupClusteredMax(data[0].d4.x, 1); data[invocation].d4.xy = subgroupClusteredMax(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupClusteredMax(data[2].d4.xyz, 1); data[invocation].d4 = subgroupClusteredMax(data[3].d4, 1); data[invocation].i4.x = subgroupClusteredAnd(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredAnd(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredAnd(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredAnd(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredAnd(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredAnd(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredAnd(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredAnd(data[3].u4, 1); data[invocation].i4.x = int(subgroupClusteredAnd(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupClusteredAnd(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupClusteredAnd(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupClusteredAnd(lessThan(data[1].i4, ivec4(0)), 1)); data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredOr(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredOr(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredOr(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredOr(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredOr(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredOr(data[3].u4, 1); data[invocation].i4.x = int(subgroupClusteredOr(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupClusteredOr(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupClusteredOr(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupClusteredOr(lessThan(data[1].i4, ivec4(0)), 1)); data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredXor(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredXor(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredXor(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredXor(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredXor(data[3].u4, 1); data[invocation].i4.x = int(subgroupClusteredXor(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupClusteredXor(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupClusteredXor(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupClusteredXor(lessThan(data[1].i4, ivec4(0)), 1)); } glslang-16.0.0/Test/glsl.450.subgroupClusteredNeg.comp000066400000000000000000000026171506534232700224630ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_clustered: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { int a = 1; const int aConst = 1; uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 0); // ERROR, less than 1 data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 3); // ERROR, not a power of 2 data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 8); data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6); // ERROR, not a power of 2 data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, -1); // ERROR, less than 1 data[invocation].i4 = subgroupClusteredAnd(data[3].i4, -3); // ERROR, less than 1 data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, a); // ERROR, not constant data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, aConst); data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1 + a); // ERROR, not constant data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, aConst + a); // ERROR, not constant data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1 + aConst); } glslang-16.0.0/Test/glsl.450.subgroupPartitioned.comp000066400000000000000000000670031506534232700223610ustar00rootroot00000000000000#version 450 #extension GL_NV_shader_subgroup_partitioned: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 ballot = subgroupPartitionNV(invocation); data[invocation].u4 = subgroupPartitionNV(data[0].f4.x); data[invocation].u4 = subgroupPartitionNV(data[0].f4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].f4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].f4); data[invocation].u4 = subgroupPartitionNV(data[0].i4.x); data[invocation].u4 = subgroupPartitionNV(data[0].i4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].i4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].i4); data[invocation].u4 = subgroupPartitionNV(data[0].u4.x); data[invocation].u4 = subgroupPartitionNV(data[0].u4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].u4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].u4); data[invocation].u4 = subgroupPartitionNV(data[0].d4.x); data[invocation].u4 = subgroupPartitionNV(data[0].d4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].d4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].d4); data[invocation].u4 = subgroupPartitionNV(bool(data[0].i4.x)); data[invocation].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy)); data[invocation].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz)); data[invocation].u4 = subgroupPartitionNV(bvec4(data[0].i4)); data[invocation].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); } glslang-16.0.0/Test/glsl.450.subgroupQuad.comp000066400000000000000000000144631506534232700207730ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_quad: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupQuadBroadcast(data[0].f4.x, 1); data[invocation].f4.xy = subgroupQuadBroadcast(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupQuadBroadcast(data[2].f4.xyz, 1); data[invocation].f4 = subgroupQuadBroadcast(data[3].f4, 1); data[invocation].i4.x = subgroupQuadBroadcast(data[0].i4.x, 1); data[invocation].i4.xy = subgroupQuadBroadcast(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupQuadBroadcast(data[2].i4.xyz, 1); data[invocation].i4 = subgroupQuadBroadcast(data[3].i4, 1); data[invocation].u4.x = subgroupQuadBroadcast(data[0].u4.x, 1); data[invocation].u4.xy = subgroupQuadBroadcast(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupQuadBroadcast(data[2].u4.xyz, 1); data[invocation].u4 = subgroupQuadBroadcast(data[3].u4, 1); data[invocation].d4.x = subgroupQuadBroadcast(data[0].d4.x, 1); data[invocation].d4.xy = subgroupQuadBroadcast(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupQuadBroadcast(data[2].d4.xyz, 1); data[invocation].d4 = subgroupQuadBroadcast(data[3].d4, 1); data[invocation].i4.x = int(subgroupQuadBroadcast(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupQuadBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupQuadBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupQuadBroadcast(lessThan(data[1].i4, ivec4(0)), 1)); data[invocation].f4.x = subgroupQuadSwapHorizontal(data[0].f4.x); data[invocation].f4.xy = subgroupQuadSwapHorizontal(data[1].f4.xy); data[invocation].f4.xyz = subgroupQuadSwapHorizontal(data[2].f4.xyz); data[invocation].f4 = subgroupQuadSwapHorizontal(data[3].f4); data[invocation].i4.x = subgroupQuadSwapHorizontal(data[0].i4.x); data[invocation].i4.xy = subgroupQuadSwapHorizontal(data[1].i4.xy); data[invocation].i4.xyz = subgroupQuadSwapHorizontal(data[2].i4.xyz); data[invocation].i4 = subgroupQuadSwapHorizontal(data[3].i4); data[invocation].u4.x = subgroupQuadSwapHorizontal(data[0].u4.x); data[invocation].u4.xy = subgroupQuadSwapHorizontal(data[1].u4.xy); data[invocation].u4.xyz = subgroupQuadSwapHorizontal(data[2].u4.xyz); data[invocation].u4 = subgroupQuadSwapHorizontal(data[3].u4); data[invocation].d4.x = subgroupQuadSwapHorizontal(data[0].d4.x); data[invocation].d4.xy = subgroupQuadSwapHorizontal(data[1].d4.xy); data[invocation].d4.xyz = subgroupQuadSwapHorizontal(data[2].d4.xyz); data[invocation].d4 = subgroupQuadSwapHorizontal(data[3].d4); data[invocation].i4.x = int(subgroupQuadSwapHorizontal(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupQuadSwapHorizontal(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupQuadSwapVertical(data[0].f4.x); data[invocation].f4.xy = subgroupQuadSwapVertical(data[1].f4.xy); data[invocation].f4.xyz = subgroupQuadSwapVertical(data[2].f4.xyz); data[invocation].f4 = subgroupQuadSwapVertical(data[3].f4); data[invocation].i4.x = subgroupQuadSwapVertical(data[0].i4.x); data[invocation].i4.xy = subgroupQuadSwapVertical(data[1].i4.xy); data[invocation].i4.xyz = subgroupQuadSwapVertical(data[2].i4.xyz); data[invocation].i4 = subgroupQuadSwapVertical(data[3].i4); data[invocation].u4.x = subgroupQuadSwapVertical(data[0].u4.x); data[invocation].u4.xy = subgroupQuadSwapVertical(data[1].u4.xy); data[invocation].u4.xyz = subgroupQuadSwapVertical(data[2].u4.xyz); data[invocation].u4 = subgroupQuadSwapVertical(data[3].u4); data[invocation].d4.x = subgroupQuadSwapVertical(data[0].d4.x); data[invocation].d4.xy = subgroupQuadSwapVertical(data[1].d4.xy); data[invocation].d4.xyz = subgroupQuadSwapVertical(data[2].d4.xyz); data[invocation].d4 = subgroupQuadSwapVertical(data[3].d4); data[invocation].i4.x = int(subgroupQuadSwapVertical(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupQuadSwapVertical(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupQuadSwapVertical(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupQuadSwapVertical(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupQuadSwapDiagonal(data[0].f4.x); data[invocation].f4.xy = subgroupQuadSwapDiagonal(data[1].f4.xy); data[invocation].f4.xyz = subgroupQuadSwapDiagonal(data[2].f4.xyz); data[invocation].f4 = subgroupQuadSwapDiagonal(data[3].f4); data[invocation].i4.x = subgroupQuadSwapDiagonal(data[0].i4.x); data[invocation].i4.xy = subgroupQuadSwapDiagonal(data[1].i4.xy); data[invocation].i4.xyz = subgroupQuadSwapDiagonal(data[2].i4.xyz); data[invocation].i4 = subgroupQuadSwapDiagonal(data[3].i4); data[invocation].u4.x = subgroupQuadSwapDiagonal(data[0].u4.x); data[invocation].u4.xy = subgroupQuadSwapDiagonal(data[1].u4.xy); data[invocation].u4.xyz = subgroupQuadSwapDiagonal(data[2].u4.xyz); data[invocation].u4 = subgroupQuadSwapDiagonal(data[3].u4); data[invocation].d4.x = subgroupQuadSwapDiagonal(data[0].d4.x); data[invocation].d4.xy = subgroupQuadSwapDiagonal(data[1].d4.xy); data[invocation].d4.xyz = subgroupQuadSwapDiagonal(data[2].d4.xyz); data[invocation].d4 = subgroupQuadSwapDiagonal(data[3].d4); data[invocation].i4.x = int(subgroupQuadSwapDiagonal(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupQuadSwapDiagonal(lessThan(data[1].i4, ivec4(0)))); } glslang-16.0.0/Test/glsl.450.subgroupRotate.comp000066400000000000000000000064721506534232700213400ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_rotate: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; readonly buffer roblock { uint delta; } ro; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint delta = ro.delta; data[delta].f4.x = subgroupRotate(data[0].f4.x, delta); data[delta].f4.xy = subgroupRotate(data[1].f4.xy, delta); data[delta].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); data[delta].f4 = subgroupRotate(data[3].f4, delta); data[delta].i4.x = subgroupRotate(data[0].i4.x, delta); data[delta].i4.xy = subgroupRotate(data[1].i4.xy, delta); data[delta].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); data[delta].i4 = subgroupRotate(data[3].i4, delta); data[delta].u4.x = subgroupRotate(data[0].u4.x, delta); data[delta].u4.xy = subgroupRotate(data[1].u4.xy, delta); data[delta].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); data[delta].u4 = subgroupRotate(data[3].u4, delta); data[delta].d4.x = subgroupRotate(data[0].d4.x, delta); data[delta].d4.xy = subgroupRotate(data[1].d4.xy, delta); data[delta].d4.xyz = subgroupRotate(data[2].d4.xyz, delta); data[delta].d4 = subgroupRotate(data[3].d4, delta); data[delta].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); data[delta].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); data[delta].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); data[delta].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); data[delta].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1); data[delta].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1); data[delta].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1); data[delta].f4 = subgroupClusteredRotate(data[3].f4, delta, 1); data[delta].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1); data[delta].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1); data[delta].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1); data[delta].i4 = subgroupClusteredRotate(data[3].i4, delta, 1); data[delta].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1); data[delta].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1); data[delta].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1); data[delta].u4 = subgroupClusteredRotate(data[3].u4, delta, 1); data[delta].d4.x = subgroupClusteredRotate(data[0].d4.x, delta, 1); data[delta].d4.xy = subgroupClusteredRotate(data[1].d4.xy, delta, 1); data[delta].d4.xyz = subgroupClusteredRotate(data[2].d4.xyz, delta, 1); data[delta].d4 = subgroupClusteredRotate(data[3].d4, delta, 1); data[delta].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1)); data[delta].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1)); data[delta].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1)); data[delta].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1)); } glslang-16.0.0/Test/glsl.450.subgroupShuffle.comp000066400000000000000000000071761506534232700215000ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_shuffle: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupShuffle(data[0].f4.x, invocation); data[invocation].f4.xy = subgroupShuffle(data[1].f4.xy, invocation); data[invocation].f4.xyz = subgroupShuffle(data[2].f4.xyz, invocation); data[invocation].f4 = subgroupShuffle(data[3].f4, invocation); data[invocation].i4.x = subgroupShuffle(data[0].i4.x, invocation); data[invocation].i4.xy = subgroupShuffle(data[1].i4.xy, invocation); data[invocation].i4.xyz = subgroupShuffle(data[2].i4.xyz, invocation); data[invocation].i4 = subgroupShuffle(data[3].i4, invocation); data[invocation].u4.x = subgroupShuffle(data[0].u4.x, invocation); data[invocation].u4.xy = subgroupShuffle(data[1].u4.xy, invocation); data[invocation].u4.xyz = subgroupShuffle(data[2].u4.xyz, invocation); data[invocation].u4 = subgroupShuffle(data[3].u4, invocation); data[invocation].d4.x = subgroupShuffle(data[0].d4.x, invocation); data[invocation].d4.xy = subgroupShuffle(data[1].d4.xy, invocation); data[invocation].d4.xyz = subgroupShuffle(data[2].d4.xyz, invocation); data[invocation].d4 = subgroupShuffle(data[3].d4, invocation); data[invocation].i4.x = int(subgroupShuffle(data[0].i4.x < 0, invocation)); data[invocation].i4.xy = ivec2(subgroupShuffle(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupShuffle(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4 = ivec4(subgroupShuffle(lessThan(data[1].i4, ivec4(0)), invocation)); data[invocation].f4.x = subgroupShuffleXor(data[0].f4.x, invocation); data[invocation].f4.xy = subgroupShuffleXor(data[1].f4.xy, invocation); data[invocation].f4.xyz = subgroupShuffleXor(data[2].f4.xyz, invocation); data[invocation].f4 = subgroupShuffleXor(data[3].f4, invocation); data[invocation].i4.x = subgroupShuffleXor(data[0].i4.x, invocation); data[invocation].i4.xy = subgroupShuffleXor(data[1].i4.xy, invocation); data[invocation].i4.xyz = subgroupShuffleXor(data[2].i4.xyz, invocation); data[invocation].i4 = subgroupShuffleXor(data[3].i4, invocation); data[invocation].u4.x = subgroupShuffleXor(data[0].u4.x, invocation); data[invocation].u4.xy = subgroupShuffleXor(data[1].u4.xy, invocation); data[invocation].u4.xyz = subgroupShuffleXor(data[2].u4.xyz, invocation); data[invocation].u4 = subgroupShuffleXor(data[3].u4, invocation); data[invocation].d4.x = subgroupShuffleXor(data[0].d4.x, invocation); data[invocation].d4.xy = subgroupShuffleXor(data[1].d4.xy, invocation); data[invocation].d4.xyz = subgroupShuffleXor(data[2].d4.xyz, invocation); data[invocation].d4 = subgroupShuffleXor(data[3].d4, invocation); data[invocation].i4.x = int(subgroupShuffleXor(data[0].i4.x < 0, invocation)); data[invocation].i4.xy = ivec2(subgroupShuffleXor(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupShuffleXor(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4 = ivec4(subgroupShuffleXor(lessThan(data[1].i4, ivec4(0)), invocation)); } glslang-16.0.0/Test/glsl.450.subgroupShuffleRelative.comp000066400000000000000000000073031506534232700231640ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_shuffle_relative: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupShuffleUp(data[0].f4.x, invocation); data[invocation].f4.xy = subgroupShuffleUp(data[1].f4.xy, invocation); data[invocation].f4.xyz = subgroupShuffleUp(data[2].f4.xyz, invocation); data[invocation].f4 = subgroupShuffleUp(data[3].f4, invocation); data[invocation].i4.x = subgroupShuffleUp(data[0].i4.x, invocation); data[invocation].i4.xy = subgroupShuffleUp(data[1].i4.xy, invocation); data[invocation].i4.xyz = subgroupShuffleUp(data[2].i4.xyz, invocation); data[invocation].i4 = subgroupShuffleUp(data[3].i4, invocation); data[invocation].u4.x = subgroupShuffleUp(data[0].u4.x, invocation); data[invocation].u4.xy = subgroupShuffleUp(data[1].u4.xy, invocation); data[invocation].u4.xyz = subgroupShuffleUp(data[2].u4.xyz, invocation); data[invocation].u4 = subgroupShuffleUp(data[3].u4, invocation); data[invocation].d4.x = subgroupShuffleUp(data[0].d4.x, invocation); data[invocation].d4.xy = subgroupShuffleUp(data[1].d4.xy, invocation); data[invocation].d4.xyz = subgroupShuffleUp(data[2].d4.xyz, invocation); data[invocation].d4 = subgroupShuffleUp(data[3].d4, invocation); data[invocation].i4.x = int(subgroupShuffleUp(data[0].i4.x < 0, invocation)); data[invocation].i4.xy = ivec2(subgroupShuffleUp(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupShuffleUp(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4 = ivec4(subgroupShuffleUp(lessThan(data[1].i4, ivec4(0)), invocation)); data[invocation].f4.x = subgroupShuffleDown(data[0].f4.x, invocation); data[invocation].f4.xy = subgroupShuffleDown(data[1].f4.xy, invocation); data[invocation].f4.xyz = subgroupShuffleDown(data[2].f4.xyz, invocation); data[invocation].f4 = subgroupShuffleDown(data[3].f4, invocation); data[invocation].i4.x = subgroupShuffleDown(data[0].i4.x, invocation); data[invocation].i4.xy = subgroupShuffleDown(data[1].i4.xy, invocation); data[invocation].i4.xyz = subgroupShuffleDown(data[2].i4.xyz, invocation); data[invocation].i4 = subgroupShuffleDown(data[3].i4, invocation); data[invocation].u4.x = subgroupShuffleDown(data[0].u4.x, invocation); data[invocation].u4.xy = subgroupShuffleDown(data[1].u4.xy, invocation); data[invocation].u4.xyz = subgroupShuffleDown(data[2].u4.xyz, invocation); data[invocation].u4 = subgroupShuffleDown(data[3].u4, invocation); data[invocation].d4.x = subgroupShuffleDown(data[0].d4.x, invocation); data[invocation].d4.xy = subgroupShuffleDown(data[1].d4.xy, invocation); data[invocation].d4.xyz = subgroupShuffleDown(data[2].d4.xyz, invocation); data[invocation].d4 = subgroupShuffleDown(data[3].d4, invocation); data[invocation].i4.x = int(subgroupShuffleDown(data[0].i4.x < 0, invocation)); data[invocation].i4.xy = ivec2(subgroupShuffleDown(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupShuffleDown(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4 = ivec4(subgroupShuffleDown(lessThan(data[1].i4, ivec4(0)), invocation)); } glslang-16.0.0/Test/glsl.450.subgroupVote.comp000066400000000000000000000035771506534232700210220ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_vote: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; int r; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; if (subgroupAll(data[invocation].r < 0)) { data[invocation].r = int(subgroupAllEqual(data[0].f4.x)); data[invocation].r = int(subgroupAllEqual(data[1].f4.xy)); data[invocation].r = int(subgroupAllEqual(data[2].f4.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].f4)); data[invocation].r = int(subgroupAllEqual(data[0].i4.x)); data[invocation].r = int(subgroupAllEqual(data[1].i4.xy)); data[invocation].r = int(subgroupAllEqual(data[2].i4.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].i4)); data[invocation].r = int(subgroupAllEqual(data[0].u4.x)); data[invocation].r = int(subgroupAllEqual(data[1].u4.xy)); data[invocation].r = int(subgroupAllEqual(data[2].u4.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].u4)); } else if (subgroupAny(data[invocation].r < 0)) { data[invocation].r = int(subgroupAllEqual(data[0].d4.x)); data[invocation].r = int(subgroupAllEqual(data[1].d4.xy)); data[invocation].r = int(subgroupAllEqual(data[2].d4.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].d4)); data[invocation].r = int(int(subgroupAllEqual(data[0].i4.x < 0))); data[invocation].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0))))); data[invocation].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0))))); data[invocation].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0))))); } } glslang-16.0.0/Test/glsl.460.subgroup.mesh000066400000000000000000000321341506534232700201520ustar00rootroot00000000000000#version 460 vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, extension not enabled (basic) gl_SubgroupID; // ERROR, extension not enabled (basic) subgroupMemoryBarrierShared(); // ERROR, extension not enabled (basic) subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } #define MAX_VER 81 #define MAX_PRIM 32 #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 builtins in mesh shaders: void main() { uint iid = gl_LocalInvocationID.x; uint gid = gl_WorkGroupID.x; gl_MeshVerticesNV[iid].gl_Position = vec4(1.0); gl_MeshVerticesNV[iid].gl_PointSize = 2.0; gl_MeshVerticesNV[iid].gl_ClipDistance[3] = 3.0; gl_MeshVerticesNV[iid].gl_CullDistance[2] = 4.0; BARRIER(); gl_MeshVerticesNV[iid+1].gl_Position = gl_MeshVerticesNV[iid].gl_Position; gl_MeshVerticesNV[iid+1].gl_PointSize = gl_MeshVerticesNV[iid].gl_PointSize; gl_MeshVerticesNV[iid+1].gl_ClipDistance[3] = gl_MeshVerticesNV[iid].gl_ClipDistance[3]; gl_MeshVerticesNV[iid+1].gl_CullDistance[2] = gl_MeshVerticesNV[iid].gl_CullDistance[2]; BARRIER(); gl_MeshPrimitivesNV[iid].gl_PrimitiveID = 6; gl_MeshPrimitivesNV[iid].gl_Layer = 7; gl_MeshPrimitivesNV[iid].gl_ViewportIndex = 8; gl_MeshPrimitivesNV[iid].gl_ViewportMask[0] = 9; BARRIER(); gl_MeshPrimitivesNV[iid+1].gl_PrimitiveID = gl_MeshPrimitivesNV[iid].gl_PrimitiveID; gl_MeshPrimitivesNV[iid+1].gl_Layer = gl_MeshPrimitivesNV[iid].gl_Layer; gl_MeshPrimitivesNV[iid+1].gl_ViewportIndex = gl_MeshPrimitivesNV[iid].gl_ViewportIndex; gl_MeshPrimitivesNV[iid+1].gl_ViewportMask[0] = gl_MeshPrimitivesNV[iid].gl_ViewportMask[0]; BARRIER(); // check bound limits gl_PrimitiveIndicesNV[0] = 257; // should truncate 257 -> 1 gl_PrimitiveIndicesNV[(MAX_PRIM * 3) - 1] = 2; gl_PrimitiveIndicesNV[gid] = gl_PrimitiveIndicesNV[gid-1]; // writes 4 indices at offset gl_DrawID writePackedPrimitiveIndices4x8NV(gl_DrawID, 0x01020304); gl_PrimitiveCountNV = MAX_PRIM * 3; 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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.460.subgroup.rahit000066400000000000000000000272531506534232700203330ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } layout(location = 1) rayPayloadInNV vec4 incomingPayload; void main() { uvec3 v0 = gl_LaunchIDNV; uvec3 v1 = gl_LaunchSizeNV; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexNV; vec3 v5 = gl_WorldRayOriginNV; vec3 v6 = gl_WorldRayDirectionNV; vec3 v7 = gl_ObjectRayOriginNV; vec3 v8 = gl_ObjectRayDirectionNV; float v9 = gl_RayTminNV; float v10 = gl_RayTmaxNV; float v11 = gl_HitTNV; uint v12 = gl_HitKindNV; mat4x3 v13 = gl_ObjectToWorldNV; mat4x3 v14 = gl_WorldToObjectNV; incomingPayload = vec4(0.5f); if (v2 == 1) ignoreIntersectionNV(); else terminateRayNV(); } #extension GL_KHR_shader_subgroup_basic: enable void basic_works (void) { gl_SubgroupSize; gl_SubgroupInvocationID; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.460.subgroup.rcall000066400000000000000000000264351506534232700203220ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } layout(location = 0) callableDataNV vec4 data0; layout(location = 1) callableDataInNV dataBlock { uint data1; }; void main() { uvec3 id = gl_LaunchIDNV; uvec3 size = gl_LaunchSizeNV; data1 = 256U; executeCallableNV(2,1); } #extension GL_KHR_shader_subgroup_basic: enable void basic_works (void) { gl_SubgroupSize; gl_SubgroupInvocationID; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.460.subgroup.rchit000066400000000000000000000274121506534232700203320ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; layout(location = 0) rayPayloadNV vec4 localPayload; layout(location = 1) rayPayloadInNV vec4 incomingPayload; void main() { uvec3 v0 = gl_LaunchIDNV; uvec3 v1 = gl_LaunchSizeNV; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexNV; vec3 v5 = gl_WorldRayOriginNV; vec3 v6 = gl_WorldRayDirectionNV; vec3 v7 = gl_ObjectRayOriginNV; vec3 v8 = gl_ObjectRayDirectionNV; float v9 = gl_RayTminNV; float v10 = gl_RayTmaxNV; float v11 = gl_HitTNV; uint v12 = gl_HitKindNV; mat4x3 v13 = gl_ObjectToWorldNV; mat4x3 v14 = gl_WorldToObjectNV; traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); } #extension GL_KHR_shader_subgroup_basic: enable void basic_works (void) { gl_SubgroupSize; gl_SubgroupInvocationID; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.460.subgroup.rgen000066400000000000000000000270241506534232700201530ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } layout(binding = 0, set = 0) uniform accelerationStructureNV accNV0; layout(binding = 1, set = 0) uniform accelerationStructureNV accNV1; // Unused layout(location = 0) rayPayloadNV vec4 payload; layout(shaderRecordNV) buffer block { vec3 dir; vec3 origin; }; void main() { uint lx = gl_LaunchIDNV.x; uint ly = gl_LaunchIDNV.y; uint sx = gl_LaunchSizeNV.x; uint sy = gl_LaunchSizeNV.y; traceNV(accNV0, lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } #extension GL_KHR_shader_subgroup_basic: enable void basic_works (void) { gl_SubgroupSize; gl_SubgroupInvocationID; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.460.subgroup.rint000066400000000000000000000270721506534232700201770ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } hitAttributeNV vec4 iAttr; void main() { uvec3 v0 = gl_LaunchIDNV; uvec3 v1 = gl_LaunchSizeNV; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexNV; vec3 v5 = gl_WorldRayOriginNV; vec3 v6 = gl_WorldRayDirectionNV; vec3 v7 = gl_ObjectRayOriginNV; vec3 v8 = gl_ObjectRayDirectionNV; float v9 = gl_RayTminNV; float v10 = gl_RayTmaxNV; mat4x3 v11 = gl_ObjectToWorldNV; mat4x3 v12 = gl_WorldToObjectNV; iAttr = vec4(0.5f,0.5f,0.0f,1.0f); reportIntersectionNV(0.5, 1U); } #extension GL_KHR_shader_subgroup_basic: enable void basic_works (void) { gl_SubgroupSize; gl_SubgroupInvocationID; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.460.subgroup.rmiss000066400000000000000000000270751506534232700203630ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, only defined in compute gl_SubgroupID; // ERROR, only defined in compute subgroupMemoryBarrierShared(); // ERROR, only defined in compute subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; layout(location = 0) rayPayloadNV vec4 localPayload; layout(location = 1) rayPayloadInNV vec4 incomingPayload; void main() { uvec3 v0 = gl_LaunchIDNV; uvec3 v1 = gl_LaunchSizeNV; vec3 v2 = gl_WorldRayOriginNV; vec3 v3 = gl_WorldRayDirectionNV; vec3 v4 = gl_ObjectRayOriginNV; vec3 v5 = gl_ObjectRayDirectionNV; float v6 = gl_RayTminNV; float v7 = gl_RayTmaxNV; traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); } #extension GL_KHR_shader_subgroup_basic: enable void basic_works (void) { gl_SubgroupSize; gl_SubgroupInvocationID; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierImage(); subgroupElect(); } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.460.subgroup.task000066400000000000000000000305231506534232700201600ustar00rootroot00000000000000#version 460 vec4 undeclared_errors(vec4 f4) { vec4 result; gl_SubgroupSize; // ERROR, extension not enabled (basic) gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) subgroupBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) subgroupElect(); // ERROR, extension not enabled (basic) gl_NumSubgroups; // ERROR, extension not enabled (basic) gl_SubgroupID; // ERROR, extension not enabled (basic) subgroupMemoryBarrierShared(); // ERROR, extension not enabled (basic) subgroupAll(true); // ERROR extension not enabled (vote) subgroupAny(false); // ERROR extension not enabled (vote) subgroupAllEqual(f4); // ERROR extension not enabled (vote) gl_SubgroupEqMask; // ERROR extension not enabled (ballot) gl_SubgroupGeMask; // ERROR extension not enabled (ballot) gl_SubgroupGtMask; // ERROR extension not enabled (ballot) gl_SubgroupLeMask; // ERROR extension not enabled (ballot) gl_SubgroupLtMask; // ERROR extension not enabled (ballot) subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) result = subgroupAdd(f4); // ERROR, extension not enabled (arith) subgroupMul(f4); // ERROR, extension not enabled (arith) subgroupMin(f4); // ERROR, extension not enabled (arith) subgroupMax(f4); // ERROR, extension not enabled (arith) subgroupAnd(ballot); // ERROR, extension not enabled (arith) subgroupOr(ballot); // ERROR, extension not enabled (arith) subgroupXor(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) return result; } #define MAX_VIEWS gl_MaxMeshViewCountNV #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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]; // test use of task memory in task shaders: taskNV out Task { vec2 dummy; vec2 submesh[3]; uint viewID; } mytask; void main() { uint iid = gl_LocalInvocationID.x; uint gid = gl_WorkGroupID.x; uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; // 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]; mytask.viewID = viewID; BARRIER(); // 3. set task count gl_TaskCountNV = 3; } #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); } #extension GL_NV_shader_subgroup_partitioned: enable void partitioned_works(vec4 f4) { uvec4 parti = subgroupPartitionNV(f4); uvec4 ballot = uvec4(0x55,0,0,0); subgroupPartitionedAddNV(f4, parti); subgroupPartitionedMulNV(f4, parti); subgroupPartitionedMinNV(f4, parti); subgroupPartitionedMaxNV(f4, parti); subgroupPartitionedAndNV(ballot, parti); subgroupPartitionedOrNV(ballot, parti); subgroupPartitionedXorNV(ballot, parti); subgroupPartitionedInclusiveAddNV(f4, parti); subgroupPartitionedInclusiveMulNV(f4, parti); subgroupPartitionedInclusiveMinNV(f4, parti); subgroupPartitionedInclusiveMaxNV(f4, parti); subgroupPartitionedInclusiveAndNV(ballot, parti); subgroupPartitionedInclusiveOrNV(ballot, parti); subgroupPartitionedInclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveAddNV(f4, parti); subgroupPartitionedExclusiveMulNV(f4, parti); subgroupPartitionedExclusiveMinNV(f4, parti); subgroupPartitionedExclusiveMaxNV(f4, parti); subgroupPartitionedExclusiveAndNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } // tests for NV_shader_sm_builtins void sm_builtins_err() { gl_WarpsPerSMNV; // ERROR, no extension gl_SMCountNV; // ERROR, no extension gl_WarpIDNV; // ERROR, no extension gl_SMIDNV; // ERROR, no extension } #ifdef GL_NV_shader_sm_builtins #extension GL_NV_shader_sm_builtins : enable #endif void sm_builtins() { gl_WarpsPerSMNV; gl_SMCountNV; gl_WarpIDNV; gl_SMIDNV; } glslang-16.0.0/Test/glsl.arbgpushader5.frag000066400000000000000000000265261506534232700205230ustar00rootroot00000000000000#version 150 #extension GL_ARB_gpu_shader5 : enable // Testing storage qualifiers sample in/ sample out sample in vec4 colorSampIn; sample out vec4 colorSampOut; // error: sampler out is not allowed in fragment shader // Testing integer expression for indexing #define SAMPLER_ARRAY_SIZE 10 uniform sampler2D tex[SAMPLER_ARRAY_SIZE]; vec2 coord; void testIndexing() { // Enable gl_SampleMaskIn built in variable in fragment shader int var = gl_SampleMaskIn[0]; int i = 0; texture(tex[i], coord); //integer expression for indexing } // 1. Testing implicity conversin int -> uint // 2. Test function overloading with implicit conversion flat in int b; // Test function overloading with implicit conversion void func(uint a, uvec4 b) { } void testImplicitConv() { //precise vec2 h; //Test implicit conversion uint uv = int(0); // int -> uint uvec2 uv2 = ivec2 (0); // ivec2 -> uvec2 uvec3 uv3 = ivec3 (0); // ivec3 -> uvec3 uvec4 uv4 = ivec4 (0); // ivec4 -> uvec4 // Function overloading with implict conversion int->uint func(b, ivec4(1)); } // Test ARB_gpu_shader5 builtins uniform sampler2DShadow var16; uniform samplerCubeShadow var17; uniform sampler2DArrayShadow var18; uniform samplerCubeArrayShadow var19; uniform sampler2DRectShadow var20; uniform samplerCubeArray svar21; uniform usamplerCubeArray svar22; uniform isamplerCubeArray svar23; uniform sampler2D svar24; uniform usampler2D svar25; uniform isampler2D svar26; uniform sampler2DRect svar27; uniform usampler2DRect svar28; uniform isampler2DRect svar29; uniform samplerCube svar30; uniform usamplerCube svar31; uniform isamplerCube svar32; uniform sampler2DArray svar33; uniform usampler2DArray svar34; uniform isampler2DArray svar35; in float fvar0; in vec2 fvar1; in vec3 fvar2; in vec4 fvar3; void testBuiltins() { float var0; vec2 var1; vec3 var2; vec4 var3; int var4; ivec2 var5; ivec3 var6; ivec4 var7; uint var8; uvec2 var9; uvec3 var10; uvec4 var11; bool var12; bvec2 var13; bvec3 var14; bvec4 var15; const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); // Function Signature : genType fma(genType, genType, genType) var0 = fma(var0, var0, var0); var1 = fma(var1, var1, var1); var2 = fma(var2, var2, var2); var3 = fma(var3, var3, var3); // Function Signature : genType frexp(genType, genIType) var0 = frexp(var0, var4); var1 = frexp(var1, var5); var2 = frexp(var2, var6); var3 = frexp(var3, var7); // Function Signature : genType ldexp(genType, genIType) var0 = ldexp(var0, var4); var1 = ldexp(var1, var5); var2 = ldexp(var2, var6); var3 = ldexp(var3, var7); // Function Signature : genIType bitfieldExtract(genIType, int, int) var4 = bitfieldExtract(var4, var4, var4); var5 = bitfieldExtract(var5, var4, var4); var6 = bitfieldExtract(var6, var4, var4); var7 = bitfieldExtract(var7, var4, var4); // Function Signature : genUType bitfieldExtract(genUType, int, int) var8 = bitfieldExtract(var8, var4, var4); var9 = bitfieldExtract(var9, var4, var4); var10 = bitfieldExtract(var10, var4, var4); var11 = bitfieldExtract(var11, var4, var4); // Function Signature : genIType bitfieldInsert(genIType, genIType, int, int) var4 = bitfieldInsert(var4, var4, var4, var4); var5 = bitfieldInsert(var5, var5, var4, var4); var6 = bitfieldInsert(var6, var6, var4, var4); var7 = bitfieldInsert(var7, var7, var4, var4); // Function Signature : genUType bitfieldInsert(genUType, genUType, int, int) var8 = bitfieldInsert(var8, var8, var4, var4); var9 = bitfieldInsert(var9, var9, var4, var4); var10 = bitfieldInsert(var10, var10, var4, var4); var11 = bitfieldInsert(var11, var11, var4, var4); // Function Signature : genIType bitfieldReverse(genIType) var4 = bitfieldReverse(var4); var5 = bitfieldReverse(var5); var6 = bitfieldReverse(var6); var7 = bitfieldReverse(var7); // Function Signature : genUType bitfieldReverse(genUType) var8 = bitfieldReverse(var8); var9 = bitfieldReverse(var9); var10 = bitfieldReverse(var10); var11 = bitfieldReverse(var11); // Function Signature : genIType bitCount(genIType) var4 = bitCount(var4); var5 = bitCount(var5); var6 = bitCount(var6); var7 = bitCount(var7); // Function Signature : genUType bitCount(genUType) var8 = bitCount(var8); var9 = bitCount(var9); var10 = bitCount(var10); var11 = bitCount(var11); // Function Signature : genUType findMSB(genUType) var8 = findMSB(var8); var9 = findMSB(var9); var10 = findMSB(var10); var11 = findMSB(var11); // Function Signature : genIType findLSB(genIType) var4 = findMSB(var4); var5 = findMSB(var5); var6 = findMSB(var6); var7 = findMSB(var7); // Function Signature : genIType findLSB(genIType) var4 = findLSB(var4); var5 = findLSB(var5); var6 = findLSB(var6); var7 = findLSB(var7); // Function Signature : genUType findLSB(genUType) var8 = findLSB(var8); var9 = findLSB(var9); var10 = findLSB(var10); var11 = findLSB(var11); // Function Signature : genIType floatBitsToInt(genType) var4 = floatBitsToInt(var0); var5 = floatBitsToInt(var1); var6 = floatBitsToInt(var2); var7 = floatBitsToInt(var3); // Function Signature : genUType floatBitsToUint(genType) var8 = floatBitsToUint(var0); var9 = floatBitsToUint(var1); var10 = floatBitsToUint(var2); var11 = floatBitsToUint(var3); // Function Signature : genType intBitsToFloat(genIType) var0 = intBitsToFloat(var4); var1 = intBitsToFloat(var5); var2 = intBitsToFloat(var6); var3 = intBitsToFloat(var7); // Function Signature : genType uintBitsToFloat(genUType) var0 = uintBitsToFloat(var8); var1 = uintBitsToFloat(var9); var2 = uintBitsToFloat(var10); var3 = uintBitsToFloat(var11); // Function Signature : genUType uaddCarry(genUType, genUType, genUType) var8 = uaddCarry(var8, var8, var8); var9 = uaddCarry(var9, var9, var9); var10 = uaddCarry(var10, var10, var10); var11 = uaddCarry(var11, var11, var11); // Function Signature : genUType usubBorrow(genUType, genUType, genUType) var8 = usubBorrow(var8, var8, var8); var9 = usubBorrow(var9, var9, var9); var10 = usubBorrow(var10, var10, var10); var11 = usubBorrow(var11, var11, var11); // Function Signature : void umulExtended(genUType, genUType, genUType, genUType) umulExtended(var8, var8, var8, var8); umulExtended(var9, var9, var9, var9); umulExtended(var10, var10, var10, var10); umulExtended(var11, var11, var11, var11); // Function Signature : void imulExtended(genIType, genIType, genIType, genIType) imulExtended(var4, var4, var4, var4); imulExtended(var5, var5, var5, var5); imulExtended(var6, var6, var6, var6); imulExtended(var7, var7, var7, var7); // Generate specific builtins var8 = packUnorm2x16(var1); var8 = packUnorm4x8(var3); var8 = packSnorm4x8(var3); var1 = unpackUnorm2x16(var8); var3 = unpackUnorm4x8(var8); var3 = unpackSnorm4x8(var8); var0 = interpolateAtCentroid(fvar0); var1 = interpolateAtCentroid(fvar1); var2 = interpolateAtCentroid(fvar2); var3 = interpolateAtCentroid(fvar3); var0 = interpolateAtSample(fvar0, var4); var1 = interpolateAtSample(fvar1, var4); var2 = interpolateAtSample(fvar2, var4); var3 = interpolateAtSample(fvar3, var4); var0 = interpolateAtOffset(fvar0, var1); var1 = interpolateAtOffset(fvar1, var1); var2 = interpolateAtOffset(fvar2, var1); var3 = interpolateAtOffset(fvar3, var1); // Generate textue specific intrinsics // Function Signature : gvec4 textureGatherOffset(gsampler2D, vec2, ivec2) var3 = textureGatherOffset(svar24, var1, var5); var11 = textureGatherOffset(svar25, var1, var5); var7 = textureGatherOffset(svar26, var1, var5); // Function Signature : gvec4 textureGatherOffset(gsampler2DArray, vec3, ivec2) var3 = textureGatherOffset(svar33, var2, var5); var11 = textureGatherOffset(svar34, var2, var5); var7 = textureGatherOffset(svar35, var2, var5); // Function Signature : gvec4 textureGatherOffset(gsampler2DRect, vec2, ivec2) var3 = textureGatherOffset(svar27, var1, var5); var11 = textureGatherOffset(svar28, var1, var5); var7 = textureGatherOffset(svar29, var1, var5); // Function Signature : vec4 textureGatherOffset(sampler2DShadow, vec2, float, ivec2) var3 = textureGatherOffset(var16, var1, var0, var5); // Function Signature : vec4 textureGatherOffset(sampler2DArrayShadow, vec3, float, ivec2) var3 = textureGatherOffset(var18, var2, var0, var5); // Function Signature : vec4 textureGatherOffset(sampler2DRectShadow, vec2, float, ivec2) var3 = textureGatherOffset(var20, var1, var0, var5); // Function Signature : gvec4 textureGather(gsampler2D, vec2) var3 = textureGather(svar24, var1); var11 = textureGather(svar25, var1); var7 = textureGather(svar26, var1); // Function Signature : gvec4 textureGather(gsampler2DArray, vec3) var3 = textureGather(svar33, var2); var11 = textureGather(svar34, var2); var7 = textureGather(svar35, var2); // Function Signature : gvec4 textureGather(gsamplerCube, vec3) var3 = textureGather(svar30, var2); var11 = textureGather(svar31, var2); var7 = textureGather(svar32, var2); // Function Signature : gvec4 textureGather(gsamplerCubeArray, vec4) var3 = textureGather(svar21, var3); var11 = textureGather(svar22, var3); var7 = textureGather(svar23, var3); // Function Signature : gvec4 textureGather(gsampler2DRect, vec4) var3 = textureGather(svar27, var1); var11 = textureGather(svar28, var1); var7 = textureGather(svar29, var1); // Function Signature : vec4 textureGather(sampler2DShadow, vec2, float) var3 = textureGather(var16, var1, var0); // Function Signature : vec4 textureGather(sampler2DArrayShadow, vec3, float) var3 = textureGather(var18, var2, var0); // Function Signature : vec4 textureGather(samplerCubeShadow, vec3, float) var3 = textureGather(var17, var2, var0); // Function Signature : vec4 textureGather(samplerCubeArrayShadow, vec4, float) var3 = textureGather(var19, var3, var0); // Function Signature : vec4 textureGather(sampler2DRectShadow, vec2, float) var3 = textureGather(var20, var1, var0); // Function Signature : gvec4 textureGatherOffsets(gsampler2D, vec2, ivec2[4]) var3 = textureGatherOffsets(svar24, var1, constOffsets); var11 = textureGatherOffsets(svar25, var1, constOffsets); var7 = textureGatherOffsets(svar26, var1, constOffsets); // Function Signature : gvec4 textureGatherOffsets(gsampler2DArray, vec2, ivec2[4]) var3 = textureGatherOffsets(svar33, var2, constOffsets); var11 = textureGatherOffsets(svar34, var2, constOffsets); var7 = textureGatherOffsets(svar35, var2, constOffsets); // Function Signature : gvec4 textureGatherOffsets(gsampler2DRect, vec2, ivec2[4]) var3 = textureGatherOffsets(svar27, var1, constOffsets); var11 = textureGatherOffsets(svar28, var1, constOffsets); var7 = textureGatherOffsets(svar29, var1, constOffsets); // Function Signature : vec4 textureGatherOffsets(sampler2DShadow, vec2, float, ivec2[4]) var3 = textureGatherOffsets(var16, var1, var0, constOffsets); // Function Signature : vec4 textureGatherOffsets(sampler2DArrayShadow, vec3, float, ivec2[4]) var3 = textureGatherOffsets(var18, var2, var0, constOffsets); // Function Signature : vec4 textureGatherOffsets(sampler2DRectShadow, vec2, float, ivec2[4]) var3 = textureGatherOffsets(var20, var1, var0, constOffsets); } // Testing integer expression for indexing in interface blocks uniform ubName { int i; } ubInst[4]; void testBlockIndexing() { ubInst[1]; //bbInst[2]; int i = 0; ubInst[i]; //dynamic indexing via ARB_gpu_shader5 or enabled since version 430 }glslang-16.0.0/Test/glsl.autosampledtextures.frag000066400000000000000000000004721506534232700221010ustar00rootroot00000000000000#version 460 layout (location = 0) in vec2 in_UV; layout (set=0, binding=0) uniform texture2D u_Tex; layout (set=0, binding=0) uniform sampler u_Sampler; layout (location = 0) out vec4 out_Color; void main() { vec4 color = texture(sampler2D(u_Tex, u_Sampler), in_UV); out_Color = color; } glslang-16.0.0/Test/glsl.entryPointRename.vert000066400000000000000000000001571506534232700213230ustar00rootroot00000000000000#version 460 void bar() { gl_Position = vec4(1); } void main() { gl_Position = vec4(1); } glslang-16.0.0/Test/glsl.entryPointRename2.vert000066400000000000000000000000761506534232700214050ustar00rootroot00000000000000#version 460 void bar() { gl_Position = vec4(1); } glslang-16.0.0/Test/glsl.es300.layoutOffset.error.vert000066400000000000000000000003241506534232700224610ustar00rootroot00000000000000#version 300 es layout (binding = 0, offset = 0) uniform UBO // offset can't use on under version es 300 { vec4 a; }; in vec4 in_vs; out vec4 out_vs; void main() { out_vs = in_vs + a; } glslang-16.0.0/Test/glsl.es320.extTextureShadowLod.frag000066400000000000000000000010001506534232700225640ustar00rootroot00000000000000#version 320 es #extension GL_EXT_texture_shadow_lod : enable uniform lowp sampler2DArrayShadow s2da; uniform lowp samplerCubeArrayShadow sca; uniform lowp samplerCubeShadow sc; in lowp vec4 tc; out lowp float c; void main() { c = texture(s2da, tc, 0.0); c = texture(sca, tc, 0.0, 0.0); c = textureOffset(s2da, tc, ivec2(0.0), 0.0); c = textureLod(s2da, tc, 0.0); c = textureLod(sc, tc, 0.0); c = textureLod(sca, tc, 0.0, 0.0); c = textureLodOffset(s2da, tc, 0.0, ivec2(0.0)); } glslang-16.0.0/Test/glsl.es320.subgroup.frag000066400000000000000000000003011506534232700204470ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_basic: enable layout(location = 0) out uvec4 data; void main (void) { data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/glsl.es320.subgroup.geom000066400000000000000000000004721506534232700204700ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_basic: enable layout(points) in; layout(points, max_vertices = 1) out; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/glsl.es320.subgroup.tesc000066400000000000000000000004261506534232700204760ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_basic: enable layout(vertices=1) out; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/glsl.es320.subgroup.tese000066400000000000000000000004231506534232700204750ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_basic: enable layout(isolines) in; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/glsl.es320.subgroup.vert000066400000000000000000000003721506534232700205200ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_basic: enable layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_VertexID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/glsl.es320.subgroupArithmetic.comp000066400000000000000000000354431506534232700225170ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_arithmetic: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; data[0].f4.x = subgroupAdd(data[0].f4.x); data[0].f4.xy = subgroupAdd(data[1].f4.xy); data[0].f4.xyz = subgroupAdd(data[2].f4.xyz); data[0].f4 = subgroupAdd(data[3].f4); data[1].i4.x = subgroupAdd(data[0].i4.x); data[1].i4.xy = subgroupAdd(data[1].i4.xy); data[1].i4.xyz = subgroupAdd(data[2].i4.xyz); data[1].i4 = subgroupAdd(data[3].i4); data[2].u4.x = subgroupAdd(data[0].u4.x); data[2].u4.xy = subgroupAdd(data[1].u4.xy); data[2].u4.xyz = subgroupAdd(data[2].u4.xyz); data[2].u4 = subgroupAdd(data[3].u4); data[3].f4.x = subgroupMul(data[0].f4.x); data[3].f4.xy = subgroupMul(data[1].f4.xy); data[3].f4.xyz = subgroupMul(data[2].f4.xyz); data[3].f4 = subgroupMul(data[3].f4); data[0].i4.x = subgroupMul(data[0].i4.x); data[0].i4.xy = subgroupMul(data[1].i4.xy); data[0].i4.xyz = subgroupMul(data[2].i4.xyz); data[0].i4 = subgroupMul(data[3].i4); data[1].u4.x = subgroupMul(data[0].u4.x); data[1].u4.xy = subgroupMul(data[1].u4.xy); data[1].u4.xyz = subgroupMul(data[2].u4.xyz); data[1].u4 = subgroupMul(data[3].u4); data[2].f4.x = subgroupMin(data[0].f4.x); data[2].f4.xy = subgroupMin(data[1].f4.xy); data[2].f4.xyz = subgroupMin(data[2].f4.xyz); data[2].f4 = subgroupMin(data[3].f4); data[3].i4.x = subgroupMin(data[0].i4.x); data[3].i4.xy = subgroupMin(data[1].i4.xy); data[3].i4.xyz = subgroupMin(data[2].i4.xyz); data[3].i4 = subgroupMin(data[3].i4); data[0].u4.x = subgroupMin(data[0].u4.x); data[0].u4.xy = subgroupMin(data[1].u4.xy); data[0].u4.xyz = subgroupMin(data[2].u4.xyz); data[0].u4 = subgroupMin(data[3].u4); data[1].f4.x = subgroupMax(data[0].f4.x); data[1].f4.xy = subgroupMax(data[1].f4.xy); data[1].f4.xyz = subgroupMax(data[2].f4.xyz); data[1].f4 = subgroupMax(data[3].f4); data[2].i4.x = subgroupMax(data[0].i4.x); data[2].i4.xy = subgroupMax(data[1].i4.xy); data[2].i4.xyz = subgroupMax(data[2].i4.xyz); data[2].i4 = subgroupMax(data[3].i4); data[3].u4.x = subgroupMax(data[0].u4.x); data[3].u4.xy = subgroupMax(data[1].u4.xy); data[3].u4.xyz = subgroupMax(data[2].u4.xyz); data[3].u4 = subgroupMax(data[3].u4); data[0].i4.x = subgroupAnd(data[0].i4.x); data[0].i4.xy = subgroupAnd(data[1].i4.xy); data[0].i4.xyz = subgroupAnd(data[2].i4.xyz); data[0].i4 = subgroupAnd(data[3].i4); data[1].u4.x = subgroupAnd(data[0].u4.x); data[1].u4.xy = subgroupAnd(data[1].u4.xy); data[1].u4.xyz = subgroupAnd(data[2].u4.xyz); data[1].u4 = subgroupAnd(data[3].u4); data[2].i4.x = int(subgroupAnd(data[0].i4.x < 0)); data[2].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[2].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[2].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0)))); data[3].i4.x = subgroupOr(data[0].i4.x); data[3].i4.xy = subgroupOr(data[1].i4.xy); data[3].i4.xyz = subgroupOr(data[2].i4.xyz); data[3].i4 = subgroupOr(data[3].i4); data[0].u4.x = subgroupOr(data[0].u4.x); data[0].u4.xy = subgroupOr(data[1].u4.xy); data[0].u4.xyz = subgroupOr(data[2].u4.xyz); data[0].u4 = subgroupOr(data[3].u4); data[1].i4.x = int(subgroupOr(data[0].i4.x < 0)); data[1].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0)))); data[1].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[1].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0)))); data[2].i4.x = subgroupXor(data[0].i4.x); data[2].i4.xy = subgroupXor(data[1].i4.xy); data[2].i4.xyz = subgroupXor(data[2].i4.xyz); data[2].i4 = subgroupXor(data[3].i4); data[3].u4.x = subgroupXor(data[0].u4.x); data[3].u4.xy = subgroupXor(data[1].u4.xy); data[3].u4.xyz = subgroupXor(data[2].u4.xyz); data[3].u4 = subgroupXor(data[3].u4); data[0].i4.x = int(subgroupXor(data[0].i4.x < 0)); data[0].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0)))); data[0].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[0].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0)))); data[1].f4.x = subgroupInclusiveAdd(data[0].f4.x); data[1].f4.xy = subgroupInclusiveAdd(data[1].f4.xy); data[1].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz); data[1].f4 = subgroupInclusiveAdd(data[3].f4); data[2].i4.x = subgroupInclusiveAdd(data[0].i4.x); data[2].i4.xy = subgroupInclusiveAdd(data[1].i4.xy); data[2].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz); data[2].i4 = subgroupInclusiveAdd(data[3].i4); data[3].u4.x = subgroupInclusiveAdd(data[0].u4.x); data[3].u4.xy = subgroupInclusiveAdd(data[1].u4.xy); data[3].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz); data[3].u4 = subgroupInclusiveAdd(data[3].u4); data[0].f4.x = subgroupInclusiveMul(data[0].f4.x); data[0].f4.xy = subgroupInclusiveMul(data[1].f4.xy); data[0].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz); data[0].f4 = subgroupInclusiveMul(data[3].f4); data[1].i4.x = subgroupInclusiveMul(data[0].i4.x); data[1].i4.xy = subgroupInclusiveMul(data[1].i4.xy); data[1].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz); data[1].i4 = subgroupInclusiveMul(data[3].i4); data[2].u4.x = subgroupInclusiveMul(data[0].u4.x); data[2].u4.xy = subgroupInclusiveMul(data[1].u4.xy); data[2].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz); data[2].u4 = subgroupInclusiveMul(data[3].u4); data[3].f4.x = subgroupInclusiveMin(data[0].f4.x); data[3].f4.xy = subgroupInclusiveMin(data[1].f4.xy); data[3].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz); data[3].f4 = subgroupInclusiveMin(data[3].f4); data[0].i4.x = subgroupInclusiveMin(data[0].i4.x); data[0].i4.xy = subgroupInclusiveMin(data[1].i4.xy); data[0].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz); data[0].i4 = subgroupInclusiveMin(data[3].i4); data[1].u4.x = subgroupInclusiveMin(data[0].u4.x); data[1].u4.xy = subgroupInclusiveMin(data[1].u4.xy); data[1].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz); data[1].u4 = subgroupInclusiveMin(data[3].u4); data[2].f4.x = subgroupInclusiveMax(data[0].f4.x); data[2].f4.xy = subgroupInclusiveMax(data[1].f4.xy); data[2].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz); data[2].f4 = subgroupInclusiveMax(data[3].f4); data[3].i4.x = subgroupInclusiveMax(data[0].i4.x); data[3].i4.xy = subgroupInclusiveMax(data[1].i4.xy); data[3].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz); data[3].i4 = subgroupInclusiveMax(data[3].i4); data[0].u4.x = subgroupInclusiveMax(data[0].u4.x); data[0].u4.xy = subgroupInclusiveMax(data[1].u4.xy); data[0].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz); data[0].u4 = subgroupInclusiveMax(data[3].u4); data[1].i4.x = subgroupInclusiveAnd(data[0].i4.x); data[1].i4.xy = subgroupInclusiveAnd(data[1].i4.xy); data[1].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz); data[1].i4 = subgroupInclusiveAnd(data[3].i4); data[2].u4.x = subgroupInclusiveAnd(data[0].u4.x); data[2].u4.xy = subgroupInclusiveAnd(data[1].u4.xy); data[2].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz); data[2].u4 = subgroupInclusiveAnd(data[3].u4); data[3].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0)); data[3].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[3].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[3].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0)))); data[0].i4.x = subgroupInclusiveOr(data[0].i4.x); data[0].i4.xy = subgroupInclusiveOr(data[1].i4.xy); data[0].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz); data[0].i4 = subgroupInclusiveOr(data[3].i4); data[1].u4.x = subgroupInclusiveOr(data[0].u4.x); data[1].u4.xy = subgroupInclusiveOr(data[1].u4.xy); data[1].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz); data[1].u4 = subgroupInclusiveOr(data[3].u4); data[2].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0)); data[2].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0)))); data[2].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[2].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0)))); data[3].i4.x = subgroupInclusiveXor(data[0].i4.x); data[3].i4.xy = subgroupInclusiveXor(data[1].i4.xy); data[3].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz); data[3].i4 = subgroupInclusiveXor(data[3].i4); data[0].u4.x = subgroupInclusiveXor(data[0].u4.x); data[0].u4.xy = subgroupInclusiveXor(data[1].u4.xy); data[0].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz); data[0].u4 = subgroupInclusiveXor(data[3].u4); data[1].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0)); data[1].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0)))); data[1].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[1].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0)))); data[2].f4.x = subgroupExclusiveAdd(data[0].f4.x); data[2].f4.xy = subgroupExclusiveAdd(data[1].f4.xy); data[2].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz); data[2].f4 = subgroupExclusiveAdd(data[3].f4); data[3].i4.x = subgroupExclusiveAdd(data[0].i4.x); data[3].i4.xy = subgroupExclusiveAdd(data[1].i4.xy); data[3].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz); data[3].i4 = subgroupExclusiveAdd(data[3].i4); data[0].u4.x = subgroupExclusiveAdd(data[0].u4.x); data[0].u4.xy = subgroupExclusiveAdd(data[1].u4.xy); data[0].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz); data[0].u4 = subgroupExclusiveAdd(data[3].u4); data[1].f4.x = subgroupExclusiveMul(data[0].f4.x); data[1].f4.xy = subgroupExclusiveMul(data[1].f4.xy); data[1].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz); data[1].f4 = subgroupExclusiveMul(data[3].f4); data[2].i4.x = subgroupExclusiveMul(data[0].i4.x); data[2].i4.xy = subgroupExclusiveMul(data[1].i4.xy); data[2].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz); data[2].i4 = subgroupExclusiveMul(data[3].i4); data[3].u4.x = subgroupExclusiveMul(data[0].u4.x); data[3].u4.xy = subgroupExclusiveMul(data[1].u4.xy); data[3].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz); data[3].u4 = subgroupExclusiveMul(data[3].u4); data[0].f4.x = subgroupExclusiveMin(data[0].f4.x); data[0].f4.xy = subgroupExclusiveMin(data[1].f4.xy); data[0].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz); data[0].f4 = subgroupExclusiveMin(data[3].f4); data[1].i4.x = subgroupExclusiveMin(data[0].i4.x); data[1].i4.xy = subgroupExclusiveMin(data[1].i4.xy); data[1].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz); data[1].i4 = subgroupExclusiveMin(data[3].i4); data[2].u4.x = subgroupExclusiveMin(data[0].u4.x); data[2].u4.xy = subgroupExclusiveMin(data[1].u4.xy); data[2].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz); data[2].u4 = subgroupExclusiveMin(data[3].u4); data[3].f4.x = subgroupExclusiveMax(data[0].f4.x); data[3].f4.xy = subgroupExclusiveMax(data[1].f4.xy); data[3].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz); data[3].f4 = subgroupExclusiveMax(data[3].f4); data[0].i4.x = subgroupExclusiveMax(data[0].i4.x); data[0].i4.xy = subgroupExclusiveMax(data[1].i4.xy); data[0].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz); data[0].i4 = subgroupExclusiveMax(data[3].i4); data[1].u4.x = subgroupExclusiveMax(data[0].u4.x); data[1].u4.xy = subgroupExclusiveMax(data[1].u4.xy); data[1].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz); data[1].u4 = subgroupExclusiveMax(data[3].u4); data[2].i4.x = subgroupExclusiveAnd(data[0].i4.x); data[2].i4.xy = subgroupExclusiveAnd(data[1].i4.xy); data[2].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz); data[2].i4 = subgroupExclusiveAnd(data[3].i4); data[3].u4.x = subgroupExclusiveAnd(data[0].u4.x); data[3].u4.xy = subgroupExclusiveAnd(data[1].u4.xy); data[3].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz); data[3].u4 = subgroupExclusiveAnd(data[3].u4); data[0].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0)); data[0].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[0].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[0].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0)))); data[1].i4.x = subgroupExclusiveOr(data[0].i4.x); data[1].i4.xy = subgroupExclusiveOr(data[1].i4.xy); data[1].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz); data[1].i4 = subgroupExclusiveOr(data[3].i4); data[2].u4.x = subgroupExclusiveOr(data[0].u4.x); data[2].u4.xy = subgroupExclusiveOr(data[1].u4.xy); data[2].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz); data[2].u4 = subgroupExclusiveOr(data[3].u4); data[3].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0)); data[3].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0)))); data[3].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[3].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0)))); data[0].i4.x = subgroupExclusiveXor(data[0].i4.x); data[0].i4.xy = subgroupExclusiveXor(data[1].i4.xy); data[0].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz); data[0].i4 = subgroupExclusiveXor(data[3].i4); data[1].u4.x = subgroupExclusiveXor(data[0].u4.x); data[1].u4.xy = subgroupExclusiveXor(data[1].u4.xy); data[1].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz); data[1].u4 = subgroupExclusiveXor(data[3].u4); data[2].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0)); data[2].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0)))); data[2].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[2].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0)))); } glslang-16.0.0/Test/glsl.es320.subgroupBallot.comp000066400000000000000000000063231506534232700216360ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_ballot: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; uvec4 relMask = gl_SubgroupEqMask + gl_SubgroupGeMask + gl_SubgroupGtMask + gl_SubgroupLeMask + gl_SubgroupLtMask; uvec4 result = subgroupBallot(true); data[0].u4.x = subgroupBallotBitCount(result); data[0].u4.y = subgroupBallotBitExtract(result, 0u) ? 1u : 0u; data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result); data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result); if ((relMask == result) && subgroupInverseBallot(data[0].u4)) { data[1].f4.x = subgroupBroadcast(data[0].f4.x, 3u); data[1].f4.xy = subgroupBroadcast(data[1].f4.xy, 3u); data[1].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3u); data[1].f4 = subgroupBroadcast(data[3].f4, 3u); data[2].i4.x = subgroupBroadcast(data[0].i4.x, 2u); data[2].i4.xy = subgroupBroadcast(data[1].i4.xy, 2u); data[2].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2u); data[2].i4 = subgroupBroadcast(data[3].i4, 2u); data[3].u4.x = subgroupBroadcast(data[0].u4.x, 1u); data[3].u4.xy = subgroupBroadcast(data[1].u4.xy, 1u); data[3].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1u); data[3].u4 = subgroupBroadcast(data[3].u4, 1u); data[0].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1u)); data[0].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1u)); data[0].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1u)); data[0].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1u)); } else { data[1].f4.x = subgroupBroadcastFirst(data[0].f4.x); data[1].f4.xy = subgroupBroadcastFirst(data[1].f4.xy); data[1].f4.xyz = subgroupBroadcastFirst(data[2].f4.xyz); data[1].f4 = subgroupBroadcastFirst(data[3].f4); data[2].i4.x = subgroupBroadcastFirst(data[0].i4.x); data[2].i4.xy = subgroupBroadcastFirst(data[1].i4.xy); data[2].i4.xyz = subgroupBroadcastFirst(data[2].i4.xyz); data[2].i4 = subgroupBroadcastFirst(data[3].i4); data[3].u4.x = subgroupBroadcastFirst(data[0].u4.x); data[3].u4.xy = subgroupBroadcastFirst(data[1].u4.xy); data[3].u4.xyz = subgroupBroadcastFirst(data[2].u4.xyz); data[3].u4 = subgroupBroadcastFirst(data[3].u4); data[0].i4.x = int(subgroupBroadcastFirst(data[0].i4.x < 0)); data[0].i4.xy = ivec2(subgroupBroadcastFirst(lessThan(data[1].i4.xy, ivec2(0)))); data[0].i4.xyz = ivec3(subgroupBroadcastFirst(lessThan(data[1].i4.xyz, ivec3(0)))); data[0].i4 = ivec4(subgroupBroadcastFirst(lessThan(data[1].i4, ivec4(0)))); } } glslang-16.0.0/Test/glsl.es320.subgroupBallotNeg.comp000066400000000000000000000017401506534232700222660ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_ballot: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; uvec4 relMask = gl_SubgroupEqMask + gl_SubgroupGeMask + gl_SubgroupGtMask + gl_SubgroupLeMask + gl_SubgroupLtMask; uvec4 result = subgroupBallot(true); data[0].u4.x = subgroupBallotBitCount(result); data[0].u4.y = subgroupBallotBitExtract(result, 0) ? 1u : 0u; data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result); data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result); data[1].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant } glslang-16.0.0/Test/glsl.es320.subgroupBasic.comp000066400000000000000000000010441506534232700214350ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_basic: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffer { int a[]; } data; void main() { data.a[gl_SubgroupSize] = 1; data.a[gl_SubgroupInvocationID] = 1; data.a[gl_NumSubgroups] = 1; data.a[gl_SubgroupID] = (subgroupElect()) ? 1 : 0; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierShared(); subgroupMemoryBarrierImage(); } glslang-16.0.0/Test/glsl.es320.subgroupClustered.comp000066400000000000000000000133101506534232700223450ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_clustered: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; data[0].f4.x = subgroupClusteredAdd(data[0].f4.x, 1u); data[0].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 1u); data[0].f4.xyz = subgroupClusteredAdd(data[2].f4.xyz, 1u); data[0].f4 = subgroupClusteredAdd(data[3].f4, 1u); data[1].i4.x = subgroupClusteredAdd(data[0].i4.x, 1u); data[1].i4.xy = subgroupClusteredAdd(data[1].i4.xy, 1u); data[1].i4.xyz = subgroupClusteredAdd(data[2].i4.xyz, 1u); data[1].i4 = subgroupClusteredAdd(data[3].i4, 1u); data[2].u4.x = subgroupClusteredAdd(data[0].u4.x, 1u); data[2].u4.xy = subgroupClusteredAdd(data[1].u4.xy, 1u); data[2].u4.xyz = subgroupClusteredAdd(data[2].u4.xyz, 1u); data[2].u4 = subgroupClusteredAdd(data[3].u4, 1u); data[3].f4.x = subgroupClusteredMul(data[0].f4.x, 1u); data[3].f4.xy = subgroupClusteredMul(data[1].f4.xy, 1u); data[3].f4.xyz = subgroupClusteredMul(data[2].f4.xyz, 1u); data[3].f4 = subgroupClusteredMul(data[3].f4, 1u); data[0].i4.x = subgroupClusteredMul(data[0].i4.x, 1u); data[0].i4.xy = subgroupClusteredMul(data[1].i4.xy, 1u); data[0].i4.xyz = subgroupClusteredMul(data[2].i4.xyz, 1u); data[0].i4 = subgroupClusteredMul(data[3].i4, 1u); data[1].u4.x = subgroupClusteredMul(data[0].u4.x, 1u); data[1].u4.xy = subgroupClusteredMul(data[1].u4.xy, 1u); data[1].u4.xyz = subgroupClusteredMul(data[2].u4.xyz, 1u); data[1].u4 = subgroupClusteredMul(data[3].u4, 1u); data[2].f4.x = subgroupClusteredMin(data[0].f4.x, 1u); data[2].f4.xy = subgroupClusteredMin(data[1].f4.xy, 1u); data[2].f4.xyz = subgroupClusteredMin(data[2].f4.xyz, 1u); data[2].f4 = subgroupClusteredMin(data[3].f4, 1u); data[3].i4.x = subgroupClusteredMin(data[0].i4.x, 1u); data[3].i4.xy = subgroupClusteredMin(data[1].i4.xy, 1u); data[3].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 1u); data[3].i4 = subgroupClusteredMin(data[3].i4, 1u); data[0].u4.x = subgroupClusteredMin(data[0].u4.x, 1u); data[0].u4.xy = subgroupClusteredMin(data[1].u4.xy, 1u); data[0].u4.xyz = subgroupClusteredMin(data[2].u4.xyz, 1u); data[0].u4 = subgroupClusteredMin(data[3].u4, 1u); data[1].f4.x = subgroupClusteredMax(data[0].f4.x, 1u); data[1].f4.xy = subgroupClusteredMax(data[1].f4.xy, 1u); data[1].f4.xyz = subgroupClusteredMax(data[2].f4.xyz, 1u); data[1].f4 = subgroupClusteredMax(data[3].f4, 1u); data[2].i4.x = subgroupClusteredMax(data[0].i4.x, 1u); data[2].i4.xy = subgroupClusteredMax(data[1].i4.xy, 1u); data[2].i4.xyz = subgroupClusteredMax(data[2].i4.xyz, 1u); data[2].i4 = subgroupClusteredMax(data[3].i4, 1u); data[3].u4.x = subgroupClusteredMax(data[0].u4.x, 1u); data[3].u4.xy = subgroupClusteredMax(data[1].u4.xy, 1u); data[3].u4.xyz = subgroupClusteredMax(data[2].u4.xyz, 1u); data[3].u4 = subgroupClusteredMax(data[3].u4, 1u); data[0].i4.x = subgroupClusteredAnd(data[0].i4.x, 1u); data[0].i4.xy = subgroupClusteredAnd(data[1].i4.xy, 1u); data[0].i4.xyz = subgroupClusteredAnd(data[2].i4.xyz, 1u); data[0].i4 = subgroupClusteredAnd(data[3].i4, 1u); data[1].u4.x = subgroupClusteredAnd(data[0].u4.x, 1u); data[1].u4.xy = subgroupClusteredAnd(data[1].u4.xy, 1u); data[1].u4.xyz = subgroupClusteredAnd(data[2].u4.xyz, 1u); data[1].u4 = subgroupClusteredAnd(data[3].u4, 1u); data[2].i4.x = int(subgroupClusteredAnd(data[0].i4.x < 0, 1u)); data[2].i4.xy = ivec2(subgroupClusteredAnd(lessThan(data[1].i4.xy, ivec2(0)), 1u)); data[2].i4.xyz = ivec3(subgroupClusteredAnd(lessThan(data[1].i4.xyz, ivec3(0)), 1u)); data[2].i4 = ivec4(subgroupClusteredAnd(lessThan(data[1].i4, ivec4(0)), 1u)); data[3].i4.x = subgroupClusteredOr(data[0].i4.x, 1u); data[3].i4.xy = subgroupClusteredOr(data[1].i4.xy, 1u); data[3].i4.xyz = subgroupClusteredOr(data[2].i4.xyz, 1u); data[3].i4 = subgroupClusteredOr(data[3].i4, 1u); data[0].u4.x = subgroupClusteredOr(data[0].u4.x, 1u); data[0].u4.xy = subgroupClusteredOr(data[1].u4.xy, 1u); data[0].u4.xyz = subgroupClusteredOr(data[2].u4.xyz, 1u); data[0].u4 = subgroupClusteredOr(data[3].u4, 1u); data[1].i4.x = int(subgroupClusteredOr(data[0].i4.x < 0, 1u)); data[1].i4.xy = ivec2(subgroupClusteredOr(lessThan(data[1].i4.xy, ivec2(0)), 1u)); data[1].i4.xyz = ivec3(subgroupClusteredOr(lessThan(data[1].i4.xyz, ivec3(0)), 1u)); data[1].i4 = ivec4(subgroupClusteredOr(lessThan(data[1].i4, ivec4(0)), 1u)); data[2].i4.x = subgroupClusteredXor(data[0].i4.x, 1u); data[2].i4.xy = subgroupClusteredXor(data[1].i4.xy, 1u); data[2].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1u); data[2].i4 = subgroupClusteredXor(data[3].i4, 1u); data[3].u4.x = subgroupClusteredXor(data[0].u4.x, 1u); data[3].u4.xy = subgroupClusteredXor(data[1].u4.xy, 1u); data[3].u4.xyz = subgroupClusteredXor(data[2].u4.xyz, 1u); data[3].u4 = subgroupClusteredXor(data[3].u4, 1u); data[0].i4.x = int(subgroupClusteredXor(data[0].i4.x < 0, 1u)); data[0].i4.xy = ivec2(subgroupClusteredXor(lessThan(data[1].i4.xy, ivec2(0)), 1u)); data[0].i4.xyz = ivec3(subgroupClusteredXor(lessThan(data[1].i4.xyz, ivec3(0)), 1u)); data[0].i4 = ivec4(subgroupClusteredXor(lessThan(data[1].i4, ivec4(0)), 1u)); } glslang-16.0.0/Test/glsl.es320.subgroupClusteredNeg.comp000066400000000000000000000022051506534232700230000ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_clustered: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { int a = 1; const int aConst = 1; uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; data[0].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 0u); // ERROR, less than 1 data[0].f4.x = subgroupClusteredMul(data[0].f4.x, 3u); // ERROR, not a power of 2 data[1].i4.xy = subgroupClusteredMin(data[1].i4.xy, 8u); data[1].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6u); // ERROR, not a power of 2 data[3].i4.x = subgroupClusteredOr(data[0].i4.x, uint(a)); // ERROR, not constant data[3].i4.xy = subgroupClusteredOr(data[1].i4.xy, uint(aConst)); data[0].i4.x = subgroupClusteredXor(data[0].i4.x, uint(1 + a)); // ERROR, not constant data[0].i4.xy = subgroupClusteredXor(data[1].i4.xy, uint(aConst + a)); // ERROR, not constant data[0].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, uint(1 + aConst)); } glslang-16.0.0/Test/glsl.es320.subgroupPartitioned.comp000066400000000000000000000515751506534232700227140ustar00rootroot00000000000000#version 320 es #extension GL_NV_shader_subgroup_partitioned: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; uvec4 ballot = subgroupPartitionNV(invocation); data[0].u4 = subgroupPartitionNV(data[0].f4.x); data[0].u4 = subgroupPartitionNV(data[0].f4.xy); data[0].u4 = subgroupPartitionNV(data[0].f4.xyz); data[0].u4 = subgroupPartitionNV(data[0].f4); data[0].u4 = subgroupPartitionNV(data[0].i4.x); data[0].u4 = subgroupPartitionNV(data[0].i4.xy); data[0].u4 = subgroupPartitionNV(data[0].i4.xyz); data[0].u4 = subgroupPartitionNV(data[0].i4); data[0].u4 = subgroupPartitionNV(data[0].u4.x); data[0].u4 = subgroupPartitionNV(data[0].u4.xy); data[0].u4 = subgroupPartitionNV(data[0].u4.xyz); data[0].u4 = subgroupPartitionNV(data[0].u4); data[1].u4 = subgroupPartitionNV(bool(data[0].i4.x)); data[1].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy)); data[1].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz)); data[1].u4 = subgroupPartitionNV(bvec4(data[0].i4)); data[1].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot); data[1].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot); data[1].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot); data[1].f4 = subgroupPartitionedAddNV(data[3].f4, ballot); data[1].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot); data[1].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot); data[1].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot); data[1].i4 = subgroupPartitionedAddNV(data[3].i4, ballot); data[1].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot); data[1].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot); data[1].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot); data[1].u4 = subgroupPartitionedAddNV(data[3].u4, ballot); data[2].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot); data[2].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot); data[2].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot); data[2].f4 = subgroupPartitionedMulNV(data[3].f4, ballot); data[2].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot); data[2].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot); data[2].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot); data[2].i4 = subgroupPartitionedMulNV(data[3].i4, ballot); data[2].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot); data[2].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot); data[2].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot); data[2].u4 = subgroupPartitionedMulNV(data[3].u4, ballot); data[2].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot); data[2].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot); data[2].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot); data[2].f4 = subgroupPartitionedMinNV(data[3].f4, ballot); data[3].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot); data[3].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot); data[3].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot); data[3].i4 = subgroupPartitionedMinNV(data[3].i4, ballot); data[3].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot); data[3].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot); data[3].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot); data[3].u4 = subgroupPartitionedMinNV(data[3].u4, ballot); data[3].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot); data[3].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot); data[3].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot); data[3].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot); data[0].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot); data[0].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot); data[0].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot); data[0].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot); data[0].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot); data[0].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot); data[0].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot); data[0].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot); data[0].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot); data[0].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot); data[0].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot); data[0].i4 = subgroupPartitionedAndNV(data[3].i4, ballot); data[1].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot); data[1].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot); data[1].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot); data[1].u4 = subgroupPartitionedAndNV(data[3].u4, ballot); data[1].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot)); data[1].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[1].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[1].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[1].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot); data[1].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot); data[1].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot); data[1].i4 = subgroupPartitionedOrNV(data[3].i4, ballot); data[2].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot); data[2].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot); data[2].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot); data[2].u4 = subgroupPartitionedOrNV(data[3].u4, ballot); data[2].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot)); data[2].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[2].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[2].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[2].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot); data[2].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot); data[2].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot); data[2].i4 = subgroupPartitionedXorNV(data[3].i4, ballot); data[2].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot); data[2].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot); data[2].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot); data[2].u4 = subgroupPartitionedXorNV(data[3].u4, ballot); data[3].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot)); data[3].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[3].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[3].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[3].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot); data[3].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot); data[3].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot); data[3].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot); data[3].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot); data[3].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot); data[3].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot); data[3].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot); data[3].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot); data[3].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot); data[3].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot); data[3].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot); data[3].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot); data[3].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot); data[3].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot); data[3].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot); data[3].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot); data[3].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot); data[3].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot); data[3].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot); data[0].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot); data[0].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot); data[0].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot); data[0].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot); data[0].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot); data[0].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot); data[0].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot); data[0].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot); data[0].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot); data[0].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot); data[0].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot); data[0].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot); data[0].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot); data[0].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot); data[0].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot); data[0].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot); data[1].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot); data[1].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot); data[1].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot); data[1].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot); data[1].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot); data[1].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot); data[1].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot); data[1].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot); data[1].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot); data[1].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot); data[1].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot); data[1].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot); data[1].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot); data[1].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot); data[1].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot); data[1].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot); data[2].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot); data[2].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot); data[2].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot); data[2].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot); data[2].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot)); data[2].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[2].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[2].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[2].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot); data[2].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot); data[2].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot); data[2].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot); data[2].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot); data[2].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot); data[2].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot); data[2].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot); data[3].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot)); data[3].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[3].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[3].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[3].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot); data[3].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot); data[3].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot); data[3].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot); data[3].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot); data[3].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot); data[3].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot); data[3].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot); data[3].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot)); data[3].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[3].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[3].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[0].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot); data[0].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot); data[0].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot); data[0].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot); data[0].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot); data[0].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot); data[0].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot); data[0].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot); data[0].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot); data[0].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot); data[0].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot); data[0].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot); data[0].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot); data[0].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot); data[0].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot); data[0].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot); data[1].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot); data[1].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot); data[1].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot); data[1].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot); data[1].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot); data[1].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot); data[1].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot); data[1].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot); data[1].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot); data[1].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot); data[1].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot); data[1].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot); data[1].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot); data[1].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot); data[1].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot); data[1].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot); data[2].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot); data[2].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot); data[2].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot); data[2].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot); data[2].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot); data[2].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot); data[2].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot); data[2].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot); data[2].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot); data[2].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot); data[2].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot); data[2].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot); data[2].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot); data[2].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot); data[2].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot); data[2].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot); data[2].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot); data[2].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot); data[2].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot); data[2].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot); data[2].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot); data[2].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot); data[2].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot); data[2].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot); data[3].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot)); data[3].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[3].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[3].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[3].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot); data[3].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot); data[3].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot); data[3].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot); data[3].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot); data[3].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot); data[3].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot); data[3].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot); data[3].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot)); data[3].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[3].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[3].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[3].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot); data[3].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot); data[3].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot); data[3].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot); data[0].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot); data[0].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot); data[0].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot); data[0].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot); data[0].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot)); data[0].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[0].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[0].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); } glslang-16.0.0/Test/glsl.es320.subgroupQuad.comp000066400000000000000000000111641506534232700213120ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_quad: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; data[0].f4.x = subgroupQuadBroadcast(data[0].f4.x, 1u); data[0].f4.xy = subgroupQuadBroadcast(data[1].f4.xy, 1u); data[0].f4.xyz = subgroupQuadBroadcast(data[2].f4.xyz, 1u); data[0].f4 = subgroupQuadBroadcast(data[3].f4, 1u); data[0].i4.x = subgroupQuadBroadcast(data[0].i4.x, 1u); data[0].i4.xy = subgroupQuadBroadcast(data[1].i4.xy, 1u); data[0].i4.xyz = subgroupQuadBroadcast(data[2].i4.xyz, 1u); data[0].i4 = subgroupQuadBroadcast(data[3].i4, 1u); data[0].u4.x = subgroupQuadBroadcast(data[0].u4.x, 1u); data[0].u4.xy = subgroupQuadBroadcast(data[1].u4.xy, 1u); data[0].u4.xyz = subgroupQuadBroadcast(data[2].u4.xyz, 1u); data[0].u4 = subgroupQuadBroadcast(data[3].u4, 1u); data[1].i4.x = int(subgroupQuadBroadcast(data[0].i4.x < 0, 1u)); data[1].i4.xy = ivec2(subgroupQuadBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1u)); data[1].i4.xyz = ivec3(subgroupQuadBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1u)); data[1].i4 = ivec4(subgroupQuadBroadcast(lessThan(data[1].i4, ivec4(0)), 1u)); data[1].f4.x = subgroupQuadSwapHorizontal(data[0].f4.x); data[1].f4.xy = subgroupQuadSwapHorizontal(data[1].f4.xy); data[1].f4.xyz = subgroupQuadSwapHorizontal(data[2].f4.xyz); data[1].f4 = subgroupQuadSwapHorizontal(data[3].f4); data[1].i4.x = subgroupQuadSwapHorizontal(data[0].i4.x); data[1].i4.xy = subgroupQuadSwapHorizontal(data[1].i4.xy); data[1].i4.xyz = subgroupQuadSwapHorizontal(data[2].i4.xyz); data[1].i4 = subgroupQuadSwapHorizontal(data[3].i4); data[1].u4.x = subgroupQuadSwapHorizontal(data[0].u4.x); data[1].u4.xy = subgroupQuadSwapHorizontal(data[1].u4.xy); data[1].u4.xyz = subgroupQuadSwapHorizontal(data[2].u4.xyz); data[1].u4 = subgroupQuadSwapHorizontal(data[3].u4); data[2].i4.x = int(subgroupQuadSwapHorizontal(data[0].i4.x < 0)); data[2].i4.xy = ivec2(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xy, ivec2(0)))); data[2].i4.xyz = ivec3(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xyz, ivec3(0)))); data[2].i4 = ivec4(subgroupQuadSwapHorizontal(lessThan(data[1].i4, ivec4(0)))); data[2].f4.x = subgroupQuadSwapVertical(data[0].f4.x); data[2].f4.xy = subgroupQuadSwapVertical(data[1].f4.xy); data[2].f4.xyz = subgroupQuadSwapVertical(data[2].f4.xyz); data[2].f4 = subgroupQuadSwapVertical(data[3].f4); data[2].i4.x = subgroupQuadSwapVertical(data[0].i4.x); data[2].i4.xy = subgroupQuadSwapVertical(data[1].i4.xy); data[2].i4.xyz = subgroupQuadSwapVertical(data[2].i4.xyz); data[2].i4 = subgroupQuadSwapVertical(data[3].i4); data[2].u4.x = subgroupQuadSwapVertical(data[0].u4.x); data[2].u4.xy = subgroupQuadSwapVertical(data[1].u4.xy); data[2].u4.xyz = subgroupQuadSwapVertical(data[2].u4.xyz); data[2].u4 = subgroupQuadSwapVertical(data[3].u4); data[3].i4.x = int(subgroupQuadSwapVertical(data[0].i4.x < 0)); data[3].i4.xy = ivec2(subgroupQuadSwapVertical(lessThan(data[1].i4.xy, ivec2(0)))); data[3].i4.xyz = ivec3(subgroupQuadSwapVertical(lessThan(data[1].i4.xyz, ivec3(0)))); data[3].i4 = ivec4(subgroupQuadSwapVertical(lessThan(data[1].i4, ivec4(0)))); data[3].f4.x = subgroupQuadSwapDiagonal(data[0].f4.x); data[3].f4.xy = subgroupQuadSwapDiagonal(data[1].f4.xy); data[3].f4.xyz = subgroupQuadSwapDiagonal(data[2].f4.xyz); data[3].f4 = subgroupQuadSwapDiagonal(data[3].f4); data[3].i4.x = subgroupQuadSwapDiagonal(data[0].i4.x); data[3].i4.xy = subgroupQuadSwapDiagonal(data[1].i4.xy); data[3].i4.xyz = subgroupQuadSwapDiagonal(data[2].i4.xyz); data[3].i4 = subgroupQuadSwapDiagonal(data[3].i4); data[3].u4.x = subgroupQuadSwapDiagonal(data[0].u4.x); data[3].u4.xy = subgroupQuadSwapDiagonal(data[1].u4.xy); data[3].u4.xyz = subgroupQuadSwapDiagonal(data[2].u4.xyz); data[3].u4 = subgroupQuadSwapDiagonal(data[3].u4); data[3].i4.x = int(subgroupQuadSwapDiagonal(data[0].i4.x < 0)); data[3].i4.xy = ivec2(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xy, ivec2(0)))); data[3].i4.xyz = ivec3(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xyz, ivec3(0)))); data[3].i4 = ivec4(subgroupQuadSwapDiagonal(lessThan(data[1].i4, ivec4(0)))); } glslang-16.0.0/Test/glsl.es320.subgroupRotate.comp000066400000000000000000000052051506534232700216550ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_rotate: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; readonly buffer roblock { uint delta; } ro; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint delta = ro.delta; data[0].f4.x = subgroupRotate(data[0].f4.x, delta); data[0].f4.xy = subgroupRotate(data[1].f4.xy, delta); data[0].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); data[0].f4 = subgroupRotate(data[3].f4, delta); data[0].i4.x = subgroupRotate(data[0].i4.x, delta); data[0].i4.xy = subgroupRotate(data[1].i4.xy, delta); data[0].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); data[0].i4 = subgroupRotate(data[3].i4, delta); data[1].u4.x = subgroupRotate(data[0].u4.x, delta); data[1].u4.xy = subgroupRotate(data[1].u4.xy, delta); data[1].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); data[1].u4 = subgroupRotate(data[3].u4, delta); data[1].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); data[1].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); data[1].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); data[1].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); data[2].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1u); data[2].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1u); data[2].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1u); data[2].f4 = subgroupClusteredRotate(data[3].f4, delta, 1u); data[2].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1u); data[2].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1u); data[2].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1u); data[2].i4 = subgroupClusteredRotate(data[3].i4, delta, 1u); data[3].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1u); data[3].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1u); data[3].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1u); data[3].u4 = subgroupClusteredRotate(data[3].u4, delta, 1u); data[3].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1u)); data[3].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1u)); data[3].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1u)); data[3].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1u)); } glslang-16.0.0/Test/glsl.es320.subgroupShuffle.comp000066400000000000000000000053331506534232700220150ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_shuffle: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; data[0].f4.x = subgroupShuffle(data[0].f4.x, invocation); data[0].f4.xy = subgroupShuffle(data[1].f4.xy, invocation); data[0].f4.xyz = subgroupShuffle(data[2].f4.xyz, invocation); data[0].f4 = subgroupShuffle(data[3].f4, invocation); data[0].i4.x = subgroupShuffle(data[0].i4.x, invocation); data[0].i4.xy = subgroupShuffle(data[1].i4.xy, invocation); data[0].i4.xyz = subgroupShuffle(data[2].i4.xyz, invocation); data[0].i4 = subgroupShuffle(data[3].i4, invocation); data[1].u4.x = subgroupShuffle(data[0].u4.x, invocation); data[1].u4.xy = subgroupShuffle(data[1].u4.xy, invocation); data[1].u4.xyz = subgroupShuffle(data[2].u4.xyz, invocation); data[1].u4 = subgroupShuffle(data[3].u4, invocation); data[1].i4.x = int(subgroupShuffle(data[0].i4.x < 0, invocation)); data[1].i4.xy = ivec2(subgroupShuffle(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[1].i4.xyz = ivec3(subgroupShuffle(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[1].i4 = ivec4(subgroupShuffle(lessThan(data[1].i4, ivec4(0)), invocation)); data[2].f4.x = subgroupShuffleXor(data[0].f4.x, invocation); data[2].f4.xy = subgroupShuffleXor(data[1].f4.xy, invocation); data[2].f4.xyz = subgroupShuffleXor(data[2].f4.xyz, invocation); data[2].f4 = subgroupShuffleXor(data[3].f4, invocation); data[2].i4.x = subgroupShuffleXor(data[0].i4.x, invocation); data[2].i4.xy = subgroupShuffleXor(data[1].i4.xy, invocation); data[2].i4.xyz = subgroupShuffleXor(data[2].i4.xyz, invocation); data[2].i4 = subgroupShuffleXor(data[3].i4, invocation); data[3].u4.x = subgroupShuffleXor(data[0].u4.x, invocation); data[3].u4.xy = subgroupShuffleXor(data[1].u4.xy, invocation); data[3].u4.xyz = subgroupShuffleXor(data[2].u4.xyz, invocation); data[3].u4 = subgroupShuffleXor(data[3].u4, invocation); data[3].i4.x = int(subgroupShuffleXor(data[0].i4.x < 0, invocation)); data[3].i4.xy = ivec2(subgroupShuffleXor(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[3].i4.xyz = ivec3(subgroupShuffleXor(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[3].i4 = ivec4(subgroupShuffleXor(lessThan(data[1].i4, ivec4(0)), invocation)); } glslang-16.0.0/Test/glsl.es320.subgroupShuffleRelative.comp000066400000000000000000000054241506534232700235120ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_shuffle_relative: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; data[0].f4.x = subgroupShuffleUp(data[0].f4.x, invocation); data[0].f4.xy = subgroupShuffleUp(data[1].f4.xy, invocation); data[0].f4.xyz = subgroupShuffleUp(data[2].f4.xyz, invocation); data[0].f4 = subgroupShuffleUp(data[3].f4, invocation); data[0].i4.x = subgroupShuffleUp(data[0].i4.x, invocation); data[0].i4.xy = subgroupShuffleUp(data[1].i4.xy, invocation); data[0].i4.xyz = subgroupShuffleUp(data[2].i4.xyz, invocation); data[0].i4 = subgroupShuffleUp(data[3].i4, invocation); data[1].u4.x = subgroupShuffleUp(data[0].u4.x, invocation); data[1].u4.xy = subgroupShuffleUp(data[1].u4.xy, invocation); data[1].u4.xyz = subgroupShuffleUp(data[2].u4.xyz, invocation); data[1].u4 = subgroupShuffleUp(data[3].u4, invocation); data[1].i4.x = int(subgroupShuffleUp(data[0].i4.x < 0, invocation)); data[1].i4.xy = ivec2(subgroupShuffleUp(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[1].i4.xyz = ivec3(subgroupShuffleUp(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[1].i4 = ivec4(subgroupShuffleUp(lessThan(data[1].i4, ivec4(0)), invocation)); data[2].f4.x = subgroupShuffleDown(data[0].f4.x, invocation); data[2].f4.xy = subgroupShuffleDown(data[1].f4.xy, invocation); data[2].f4.xyz = subgroupShuffleDown(data[2].f4.xyz, invocation); data[2].f4 = subgroupShuffleDown(data[3].f4, invocation); data[2].i4.x = subgroupShuffleDown(data[0].i4.x, invocation); data[2].i4.xy = subgroupShuffleDown(data[1].i4.xy, invocation); data[2].i4.xyz = subgroupShuffleDown(data[2].i4.xyz, invocation); data[2].i4 = subgroupShuffleDown(data[3].i4, invocation); data[3].u4.x = subgroupShuffleDown(data[0].u4.x, invocation); data[3].u4.xy = subgroupShuffleDown(data[1].u4.xy, invocation); data[3].u4.xyz = subgroupShuffleDown(data[2].u4.xyz, invocation); data[3].u4 = subgroupShuffleDown(data[3].u4, invocation); data[3].i4.x = int(subgroupShuffleDown(data[0].i4.x < 0, invocation)); data[3].i4.xy = ivec2(subgroupShuffleDown(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[3].i4.xyz = ivec3(subgroupShuffleDown(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[3].i4 = ivec4(subgroupShuffleDown(lessThan(data[1].i4, ivec4(0)), invocation)); } glslang-16.0.0/Test/glsl.es320.subgroupVote.comp000066400000000000000000000027031506534232700213340ustar00rootroot00000000000000#version 320 es #extension GL_KHR_shader_subgroup_vote: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; int r; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; if (subgroupAll(data[0].r < 0)) { data[0].r = int(subgroupAllEqual(data[0].f4.x)); data[0].r = int(subgroupAllEqual(data[1].f4.xy)); data[0].r = int(subgroupAllEqual(data[2].f4.xyz)); data[0].r = int(subgroupAllEqual(data[3].f4)); data[0].r = int(subgroupAllEqual(data[0].i4.x)); data[0].r = int(subgroupAllEqual(data[1].i4.xy)); data[0].r = int(subgroupAllEqual(data[2].i4.xyz)); data[0].r = int(subgroupAllEqual(data[3].i4)); data[0].r = int(subgroupAllEqual(data[0].u4.x)); data[0].r = int(subgroupAllEqual(data[1].u4.xy)); data[0].r = int(subgroupAllEqual(data[2].u4.xyz)); data[0].r = int(subgroupAllEqual(data[3].u4)); } else if (subgroupAny(data[1].r < 0)) { data[1].r = int(int(subgroupAllEqual(data[0].i4.x < 0))); data[1].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0))))); data[1].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0))))); data[1].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0))))); } } glslang-16.0.0/Test/glsl.ext.textureShadowLod.frag000066400000000000000000000015531506534232700220640ustar00rootroot00000000000000#version 450 #extension GL_EXT_texture_shadow_lod : enable uniform sampler2DArrayShadow s2da; uniform samplerCubeArrayShadow sca; uniform samplerCubeShadow sc; out float c; in vec4 tc; void pass() { c = texture(s2da, tc, 0.0); c = texture(sca, tc, 0.0, 0.0); c = textureOffset(s2da, tc, ivec2(0.0), 0.0); c = textureLod(s2da, tc, 0.0); c = textureLod(sc, tc, 0.0); c = textureLod(sca, tc, 0.0, 0.0); c = textureLodOffset(s2da, tc, 0.0, ivec2(0.0)); } #extension GL_EXT_texture_shadow_lod : disable void fail() { // All these builtins should fail to compile c = texture(s2da, tc, 0.0); c = texture(sca, tc, 0.0, 0.0); c = textureOffset(s2da, tc, ivec2(0.0), 0.0); c = textureLod(s2da, tc, 0.0); c = textureLod(sc, tc, 0.0); c = textureLod(sca, tc, 0.0, 0.0); c = textureLodOffset(s2da, tc, 0.0, ivec2(0.0)); } glslang-16.0.0/Test/glsl.interpOp.error.frag000066400000000000000000000036651506534232700207160ustar00rootroot00000000000000#version 320 es struct S { highp float a; highp float b; }; layout(location = 0) in S v_var; layout(location = 2) in highp float v; struct S0 { highp vec4 s_v; }; layout(location = 3) in FIn { highp float x; highp vec4 xyz[1]; S0 s0; }; layout(location = 7) in highp float z[1]; layout(location = 8) in highp vec4 w; layout(location = 0) out mediump vec4 fragColor; void main (void) { // Centroid { // valid fragColor = vec4(interpolateAtCentroid(v)); fragColor = vec4(interpolateAtCentroid(x)); fragColor = vec4(interpolateAtCentroid(z[0])); fragColor = interpolateAtCentroid(w); fragColor = interpolateAtCentroid(xyz[0]); //// invalid fragColor = vec4(interpolateAtCentroid(v_var.a)); fragColor = vec4(interpolateAtCentroid(w.x)); fragColor = vec4(interpolateAtCentroid(s0.s_v)); } // Sample { // valid fragColor = vec4(interpolateAtSample(v, 0)); fragColor = vec4(interpolateAtSample(x, 0)); fragColor = vec4(interpolateAtSample(z[0], 0)); fragColor = interpolateAtSample(w, 0); fragColor = interpolateAtSample(xyz[0], 0); // invalid fragColor = vec4(interpolateAtSample(v_var.a, 0)); fragColor = vec4(interpolateAtSample(w.x, 0)); fragColor = vec4(interpolateAtSample(s0.s_v, 0)); } // Offset { // valid fragColor = vec4(interpolateAtOffset(v, vec2(0))); fragColor = vec4(interpolateAtOffset(x, vec2(0))); fragColor = vec4(interpolateAtOffset(z[0], vec2(0))); fragColor = interpolateAtOffset(w, vec2(0)); fragColor = interpolateAtOffset(xyz[0], vec2(0)); // invalid fragColor = vec4(interpolateAtOffset(v_var.a, vec2(0))); fragColor = vec4(interpolateAtOffset(w.x, vec2(0))); fragColor = vec4(interpolateAtOffset(s0.s_v, vec2(0))); } } glslang-16.0.0/Test/glsl.nvgpushader5.frag000066400000000000000000002234761506534232700204050ustar00rootroot00000000000000#version 150 #extension GL_NV_gpu_shader5 : enable #extension GL_ARB_gpu_shader_fp64 : enable // Testing integer expression for indexing #define SAMPLER_ARRAY_SIZE 10 uniform sampler2D tex[SAMPLER_ARRAY_SIZE]; // Testing integer expression for indexing in interface blocks uniform ubName { int i; } ubInst[4]; vec2 coord; void testIndexing() { int i = 0; texture(tex[i], coord); //integer expression for indexing ubInst[i]; //dynamic indexing via ARB_gpu_shader5 or enabled since version 430 } void testImplictConversion() { // int ====> uint, int64_t, uint64_t, float, double uint var0 = int (0); // int -> uint int64_t var1 = int (0); // int -> int64_t uint64_t var2 = int (0); // int -> uint64_t float var3 = int (0); // int -> float double var4 = int (0); // int -> double // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var5 = ivec2 (0); // ivec2 -> uvec2 i64vec2 var6 = ivec2 (0); // ivec2 -> i64vec2 u64vec2 var7 = ivec2 (0); // ivec2 -> u64vec2 vec2 var8 = ivec2 (0); // ivec2 -> vec2 dvec2 var9 = ivec2 (0); // ivec2 -> dvec2 // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var10 = ivec3 (0); // ivec3 -> uvec3 i64vec3 var11 = ivec3 (0); // ivec3 -> i64vec3 u64vec3 var12 = ivec3 (0); // ivec3 -> u64vec3 vec3 var13 = ivec3 (0); // ivec3 -> vec3 dvec3 var14 = ivec3 (0); // ivec3 -> dvec3 // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var15 = ivec4 (0); // ivec4 -> uvec4 i64vec4 var16 = ivec4 (0); // ivec4 -> i64vec4 u64vec4 var17 = ivec4 (0); // ivec4 -> u64vec4 vec4 var18 = ivec4 (0); // ivec4 -> vec4 dvec4 var19 = ivec4 (0); // ivec4 -> dvec4 // int8_t ====> int, int64_t, uint, uint64_t, float, double int var20 = int8_t (0); // int8_t -> int int64_t var21 = int8_t (0); // int8_t -> int64_t uint var22 = int8_t (0); // int8_t -> uint uint64_t var23 = int8_t (0); // int8_t -> uint64_t float var24 = int8_t (0); // int8_t -> float double var25 = int8_t (0); // int8_t -> double // int16_t ====> int, int64_t, uint, uint64_t, float, double int var26 = int16_t (0); // int16_t -> int int64_t var27 = int16_t (0); // int16_t -> int64_t uint var28 = int16_t (0); // int16_t -> uint uint64_t var29 = int16_t (0); // int16_t -> uint64_t float var30 = int16_t (0); // int16_t -> float double var31 = int16_t (0); // int16_t -> double // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var32 = i8vec2 (0); // i8vec2 -> ivec2 i64vec2 var33 = i8vec2 (0); // i8vec2 -> i64vec2 uvec2 var34 = i8vec2 (0); // i8vec2 -> uvec2 u64vec2 var35 = i8vec2 (0); // i8vec2 -> u64vec2 vec2 var36 = i8vec2 (0); // i8vec2 -> vec2 dvec2 var37 = i8vec2 (0); // i8vec2 -> dvec2 // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var38 = i16vec2 (0); // i16vec2 -> ivec2 i64vec2 var39 = i16vec2 (0); // i16vec2 -> i64vec2 uvec2 var40 = i16vec2 (0); // i16vec2 -> uvec2 u64vec2 var41 = i16vec2 (0); // i16vec2 -> u64vec2 vec2 var42 = i16vec2 (0); // i16vec2 -> vec2 dvec2 var43 = i16vec2 (0); // i16vec2 -> dvec2 // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var44 = i8vec3 (0); // i8vec3 -> ivec3 i64vec3 var45 = i8vec3 (0); // i8vec3 -> i64vec3 uvec3 var46 = i8vec3 (0); // i8vec3 -> uvec3 u64vec3 var47 = i8vec3 (0); // i8vec3 -> u64vec3 vec3 var48 = i8vec3 (0); // i8vec3 -> vec3 dvec3 var49 = i8vec3 (0); // i8vec3 -> dvec3 // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var50 = i16vec3 (0); // i16vec3 -> uvec3 u64vec3 var51 = i16vec3 (0); // i16vec3 -> u64vec3 vec3 var52 = i16vec3 (0); // i16vec3 -> vec3 dvec3 var53 = i16vec3 (0); // i16vec3 -> dvec3 // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var54 = i8vec4 (0); // i8vec4 -> ivec4 i64vec4 var55 = i8vec4 (0); // i8vec4 -> i64vec4 uvec4 var56 = i8vec4 (0); // i8vec4 -> uvec4 u64vec4 var57 = i8vec4 (0); // i8vec4 -> u64vec4 vec4 var58 = i8vec4 (0); // i8vec4 -> vec4 dvec4 var59 = i8vec4 (0); // i8vec4 -> dvec4 // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var60 = i16vec4 (0); // i16vec4 -> uvec4 u64vec4 var61 = i16vec4 (0); // i16vec4 -> u64vec4 vec4 var62 = i16vec4 (0); // i16vec4 -> vec4 dvec4 var63 = i16vec4 (0); // i16vec4 -> dvec4 // int64_t ====> uint64_t, double uint64_t var64 = int64_t (0); // int64_t -> uint64_t double var65 = int64_t (0); // int64_t -> double // i64vec2 ====> u64vec2, dvec2 u64vec2 var66 = i64vec2 (0); // i64vec2 -> u64vec2 dvec2 var67 = i64vec2 (0); // i64vec2 -> dvec2 // i64vec3 ====> u64vec3, dvec3 u64vec3 var68 = i64vec3 (0); // i64vec3 -> u64vec3 dvec3 var69 = i64vec3 (0); // i64vec3 -> dvec3 // i64vec4 ====> u64vec4, dvec4 u64vec4 var70 = i64vec4 (0); // i64vec4 -> u64vec4 dvec4 var71 = i64vec4 (0); // i64vec4 -> dvec4 // uint ====> uint64_t, float, double uint64_t var72 = uint (0); // uint -> uint64_t float var73 = uint (0); // uint -> float double var74 = uint (0); // uint -> double // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var75 = uvec2 (0); // uvec2 -> u64vec2 vec2 var76 = uvec2 (0); // uvec2 -> vec2 dvec2 var77 = uvec2 (0); // uvec2 -> dvec2 // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var78 = uvec3 (0); // uvec3 -> u64vec3 vec3 var79 = uvec3 (0); // uvec3 -> vec3 dvec3 var80 = uvec3 (0); // uvec3 -> dvec3 // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var81 = uvec4 (0); // uvec4 -> u64vec4 vec4 var82 = uvec4 (0); // uvec4 -> vec4 dvec4 var83 = uvec4 (0); // uvec4 -> dvec4 // uint8_t ====> uint, uint64_t, float, double uint var84 = uint8_t (0); // uint8_t -> uint uint64_t var85 = uint8_t (0); // uint8_t -> uint64_t float var86 = uint8_t (0); // uint8_t -> float double var87 = uint8_t (0); // uint8_t -> double // uint16_t ====> uint, uint64_t, float, double uint var88 = uint16_t (0); // uint16_t -> uint uint64_t var89 = uint16_t (0); // uint16_t -> uint64_t float var90 = uint16_t (0); // uint16_t -> float double var91 = uint16_t (0); // uint16_t -> double // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var92 = u8vec2 (0); // u8vec2 -> uvec2 u64vec2 var93 = u8vec2 (0); // u8vec2 -> u64vec2 vec2 var94 = u8vec2 (0); // u8vec2 -> vec2 dvec2 var95 = u8vec2 (0); // u8vec2 -> dvec2 // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var96 = u16vec2 (0); // u16vec2 -> uvec2 u64vec2 var97 = u16vec2 (0); // u16vec2 -> u64vec2 vec2 var98 = u16vec2 (0); // u16vec2 -> vec2 dvec2 var99 = u16vec2 (0); // u16vec2 -> dvec2 // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var100 = u8vec3 (0); // u8vec3 -> uvec3 u64vec3 var101 = u8vec3 (0); // u8vec3 -> u64vec3 vec3 var102 = u8vec3 (0); // u8vec3 -> vec3 dvec3 var103 = u8vec3 (0); // u8vec3 -> dvec3 // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var104 = u8vec4 (0); // u8vec4 -> uvec4 u64vec4 var105 = u8vec4 (0); // u8vec4 -> u64vec4 vec4 var106 = u8vec4 (0); // u8vec4 -> vec4 dvec4 var107 = u8vec4 (0); // u8vec4 -> dvec4 // uint64_t ====> double double var108 = uint64_t (0); // uint64_t -> double // u64vec2 ====> dvec2 dvec2 var109 = u64vec2 (0); // u64vec2 -> dvec2 // u64vec3 ====> dvec3 dvec3 var110 = u64vec3 (0); // u64vec3 -> dvec3 // u64vec4 ====> dvec4 dvec4 var111 = u64vec4 (0); // u64vec4 -> dvec4 // float ====> double double var112 = float (0); // float -> double // vec2 ====> dvec2 dvec2 var113 = vec2 (0); // vec2 -> dvec2 // vec3 ====> dvec3 dvec3 var114 = vec3 (0); // vec3 -> dvec3 // vec4 ====> dvec4 dvec4 var115 = vec4 (0); // vec4 -> dvec4 // float16_t ====> float, double float var116 = float16_t (0); // float16_t -> float double var117 = float16_t (0); // float16_t -> double // f16vec2 ====> vec2, dvec2 vec2 var118 = f16vec2 (0); // f16vec2 -> vec2 dvec2 var119 = f16vec2 (0); // f16vec2 -> dvec2 // f16vec3 ====> vec3, dvec3 vec3 var120 = f16vec3 (0); // f16vec3 -> vec3 dvec3 var121 = f16vec3 (0); // f16vec3 -> dvec3 // f16vec4 ====> vec4, dvec4 vec4 var122 = f16vec4 (0); // f16vec4 -> vec4 dvec4 var123 = f16vec4 (0); // f16vec4 -> dvec4 } uniform sampler2DShadow var16; uniform samplerCubeShadow var17; uniform sampler2DArrayShadow var18; uniform samplerCubeArrayShadow var19; uniform sampler2DRectShadow var20; uniform samplerCubeArray svar21; uniform usamplerCubeArray svar22; uniform isamplerCubeArray svar23; uniform sampler2D svar24; uniform usampler2D svar25; uniform isampler2D svar26; uniform sampler2DRect svar27; uniform usampler2DRect svar28; uniform isampler2DRect svar29; uniform samplerCube svar30; uniform usamplerCube svar31; uniform isamplerCube svar32; uniform sampler2DArray svar33; uniform usampler2DArray svar34; uniform isampler2DArray svar35; in float fvar0; in vec2 fvar1; in vec3 fvar2; in vec4 fvar3; flat in ivec2 Offsets[4]; // Test the builtins defined by ARB_gpu_shader5 void testbuiltinARB() { float var0; vec2 var1; vec3 var2; vec4 var3; int var4; ivec2 var5; ivec3 var6; ivec4 var7; uint var8; uvec2 var9; uvec3 var10; uvec4 var11; bool var12; bvec2 var13; bvec3 var14; bvec4 var15; // Function Signature : genType fma(genType, genType, genType) var0 = fma(var0, var0, var0); var1 = fma(var1, var1, var1); var2 = fma(var2, var2, var2); var3 = fma(var3, var3, var3); // Function Signature : genType frexp(genType, genIType) var0 = frexp(var0, var4); var1 = frexp(var1, var5); var2 = frexp(var2, var6); var3 = frexp(var3, var7); // Function Signature : genType ldexp(genType, genIType) var0 = ldexp(var0, var4); var1 = ldexp(var1, var5); var2 = ldexp(var2, var6); var3 = ldexp(var3, var7); // Function Signature : genIType bitfieldExtract(genIType, int, int) var4 = bitfieldExtract(var4, var4, var4); var5 = bitfieldExtract(var5, var4, var4); var6 = bitfieldExtract(var6, var4, var4); var7 = bitfieldExtract(var7, var4, var4); // Function Signature : genUType bitfieldExtract(genUType, int, int) var8 = bitfieldExtract(var8, var4, var4); var9 = bitfieldExtract(var9, var4, var4); var10 = bitfieldExtract(var10, var4, var4); var11 = bitfieldExtract(var11, var4, var4); // Function Signature : genIType bitfieldInsert(genIType, genIType, int, int) var4 = bitfieldInsert(var4, var4, var4, var4); var5 = bitfieldInsert(var5, var5, var4, var4); var6 = bitfieldInsert(var6, var6, var4, var4); var7 = bitfieldInsert(var7, var7, var4, var4); // Function Signature : genUType bitfieldInsert(genUType, genUType, int, int) var8 = bitfieldInsert(var8, var8, var4, var4); var9 = bitfieldInsert(var9, var9, var4, var4); var10 = bitfieldInsert(var10, var10, var4, var4); var11 = bitfieldInsert(var11, var11, var4, var4); // Function Signature : genIType bitfieldReverse(genIType) var4 = bitfieldReverse(var4); var5 = bitfieldReverse(var5); var6 = bitfieldReverse(var6); var7 = bitfieldReverse(var7); // Function Signature : genUType bitfieldReverse(genUType) var8 = bitfieldReverse(var8); var9 = bitfieldReverse(var9); var10 = bitfieldReverse(var10); var11 = bitfieldReverse(var11); // Function Signature : genIType bitCount(genIType) var4 = bitCount(var4); var5 = bitCount(var5); var6 = bitCount(var6); var7 = bitCount(var7); // Function Signature : genUType bitCount(genUType) var8 = bitCount(var8); var9 = bitCount(var9); var10 = bitCount(var10); var11 = bitCount(var11); // Function Signature : genUType findMSB(genUType) var8 = findMSB(var8); var9 = findMSB(var9); var10 = findMSB(var10); var11 = findMSB(var11); // Function Signature : genIType findLSB(genIType) var4 = findMSB(var4); var5 = findMSB(var5); var6 = findMSB(var6); var7 = findMSB(var7); // Function Signature : genIType findLSB(genIType) var4 = findLSB(var4); var5 = findLSB(var5); var6 = findLSB(var6); var7 = findLSB(var7); // Function Signature : genUType findLSB(genUType) var8 = findLSB(var8); var9 = findLSB(var9); var10 = findLSB(var10); var11 = findLSB(var11); // Function Signature : genIType floatBitsToInt(genType) var4 = floatBitsToInt(var0); var5 = floatBitsToInt(var1); var6 = floatBitsToInt(var2); var7 = floatBitsToInt(var3); // Function Signature : genUType floatBitsToUint(genType) var8 = floatBitsToUint(var0); var9 = floatBitsToUint(var1); var10 = floatBitsToUint(var2); var11 = floatBitsToUint(var3); // Function Signature : genType intBitsToFloat(genIType) var0 = intBitsToFloat(var4); var1 = intBitsToFloat(var5); var2 = intBitsToFloat(var6); var3 = intBitsToFloat(var7); // Function Signature : genType uintBitsToFloat(genUType) var0 = uintBitsToFloat(var8); var1 = uintBitsToFloat(var9); var2 = uintBitsToFloat(var10); var3 = uintBitsToFloat(var11); // Function Signature : genUType uaddCarry(genUType, genUType, genUType) var8 = uaddCarry(var8, var8, var8); var9 = uaddCarry(var9, var9, var9); var10 = uaddCarry(var10, var10, var10); var11 = uaddCarry(var11, var11, var11); // Function Signature : genUType usubBorrow(genUType, genUType, genUType) var8 = usubBorrow(var8, var8, var8); var9 = usubBorrow(var9, var9, var9); var10 = usubBorrow(var10, var10, var10); var11 = usubBorrow(var11, var11, var11); // Function Signature : void umulExtended(genUType, genUType, genUType, genUType) umulExtended(var8, var8, var8, var8); umulExtended(var9, var9, var9, var9); umulExtended(var10, var10, var10, var10); umulExtended(var11, var11, var11, var11); // Function Signature : void imulExtended(genIType, genIType, genIType, genIType) imulExtended(var4, var4, var4, var4); imulExtended(var5, var5, var5, var5); imulExtended(var6, var6, var6, var6); imulExtended(var7, var7, var7, var7); // Generate specific builtins var8 = packUnorm2x16(var1); var8 = packUnorm4x8(var3); var8 = packSnorm4x8(var3); var1 = unpackUnorm2x16(var8); var3 = unpackUnorm4x8(var8); var3 = unpackSnorm4x8(var8); var0 = interpolateAtCentroid(fvar0); var1 = interpolateAtCentroid(fvar1); var2 = interpolateAtCentroid(fvar2); var3 = interpolateAtCentroid(fvar3); var0 = interpolateAtSample(fvar0, var4); var1 = interpolateAtSample(fvar1, var4); var2 = interpolateAtSample(fvar2, var4); var3 = interpolateAtSample(fvar3, var4); var0 = interpolateAtOffset(fvar0, var1); var1 = interpolateAtOffset(fvar1, var1); var2 = interpolateAtOffset(fvar2, var1); var3 = interpolateAtOffset(fvar3, var1); // Generate textue specific intrinsics // Function Signature : gvec4 textureGatherOffset(gsampler2D, vec2, ivec2) var3 = textureGatherOffset(svar24, var1, var5); var11 = textureGatherOffset(svar25, var1, var5); var7 = textureGatherOffset(svar26, var1, var5); // Function Signature : gvec4 textureGatherOffset(gsampler2DArray, vec3, ivec2) var3 = textureGatherOffset(svar33, var2, var5); var11 = textureGatherOffset(svar34, var2, var5); var7 = textureGatherOffset(svar35, var2, var5); // Function Signature : gvec4 textureGatherOffset(gsampler2DRect, vec2, ivec2) var3 = textureGatherOffset(svar27, var1, var5); var11 = textureGatherOffset(svar28, var1, var5); var7 = textureGatherOffset(svar29, var1, var5); // Function Signature : vec4 textureGatherOffset(sampler2DShadow, vec2, float, ivec2) var3 = textureGatherOffset(var16, var1, var0, var5); // Function Signature : vec4 textureGatherOffset(sampler2DArrayShadow, vec3, float, ivec2) var3 = textureGatherOffset(var18, var2, var0, var5); // Function Signature : vec4 textureGatherOffset(sampler2DRectShadow, vec2, float, ivec2) var3 = textureGatherOffset(var20, var1, var0, var5); // Function Signature : gvec4 textureGather(gsampler2D, vec2) var3 = textureGather(svar24, var1); var11 = textureGather(svar25, var1); var7 = textureGather(svar26, var1); // Function Signature : gvec4 textureGather(gsampler2DArray, vec3) var3 = textureGather(svar33, var2); var11 = textureGather(svar34, var2); var7 = textureGather(svar35, var2); // Function Signature : gvec4 textureGather(gsamplerCube, vec3) var3 = textureGather(svar30, var2); var11 = textureGather(svar31, var2); var7 = textureGather(svar32, var2); // Function Signature : gvec4 textureGather(gsamplerCubeArray, vec4) var3 = textureGather(svar21, var3); var11 = textureGather(svar22, var3); var7 = textureGather(svar23, var3); // Function Signature : gvec4 textureGather(gsampler2DRect, vec4) var3 = textureGather(svar27, var1); var11 = textureGather(svar28, var1); var7 = textureGather(svar29, var1); // Function Signature : vec4 textureGather(sampler2DShadow, vec2, float) var3 = textureGather(var16, var1, var0); // Function Signature : vec4 textureGather(sampler2DArrayShadow, vec3, float) var3 = textureGather(var18, var2, var0); // Function Signature : vec4 textureGather(samplerCubeShadow, vec3, float) var3 = textureGather(var17, var2, var0); // Function Signature : vec4 textureGather(samplerCubeArrayShadow, vec4, float) var3 = textureGather(var19, var3, var0); // Function Signature : vec4 textureGather(sampler2DRectShadow, vec2, float) var3 = textureGather(var20, var1, var0); // Function Signature : gvec4 textureGatherOffsets(gsampler2D, vec2, ivec2[4]) var3 = textureGatherOffsets(svar24, var1, Offsets); var11 = textureGatherOffsets(svar25, var1, Offsets); var7 = textureGatherOffsets(svar26, var1, Offsets); // Function Signature : gvec4 textureGatherOffsets(gsampler2DArray, vec2, ivec2[4]) var3 = textureGatherOffsets(svar33, var2, Offsets); var11 = textureGatherOffsets(svar34, var2, Offsets); var7 = textureGatherOffsets(svar35, var2, Offsets); // Function Signature : gvec4 textureGatherOffsets(gsampler2DRect, vec2, ivec2[4]) var3 = textureGatherOffsets(svar27, var1, Offsets); var11 = textureGatherOffsets(svar28, var1, Offsets); var7 = textureGatherOffsets(svar29, var1, Offsets); // Function Signature : vec4 textureGatherOffsets(sampler2DShadow, vec2, float, ivec2[4]) var3 = textureGatherOffsets(var16, var1, var0, Offsets); // Function Signature : vec4 textureGatherOffsets(sampler2DArrayShadow, vec3, float, ivec2[4]) var3 = textureGatherOffsets(var18, var2, var0, Offsets); // Function Signature : vec4 textureGatherOffsets(sampler2DRectShadow, vec2, float, ivec2[4]) var3 = textureGatherOffsets(var20, var1, var0, Offsets); } void testDataTypes() { // 8 bit data types int8_t var1; i8vec2 var2; i8vec3 var3; i8vec4 var4; uint8_t var17; u8vec2 var18; u8vec3 var19; u8vec4 var20; // 16 bit data types int16_t var5; i16vec2 var6; i16vec3 var7; i16vec4 var8; uint16_t var21; u16vec2 var22; u16vec3 var23; u16vec4 var24; // 32 bit data types int32_t var9; i32vec2 var10; i32vec3 var11; i32vec4 var12; uint32_t var25; u32vec2 var26; u32vec3 var27; u32vec4 var28; int64_t var13; i64vec2 var14; i64vec3 var15; i64vec4 var16; uint64_t var29; u64vec2 var30; u64vec3 var31; u64vec4 var32; float16_t var33; f16vec2 var34; f16vec3 var35; f16vec4 var36; float32_t var37; f32vec2 var38; f32vec3 var39; f32vec4 var40; float64_t var41; // needs GL_ARB_gpu_shader_fp64 f64vec2 var42; // needs GL_ARB_gpu_shader_fp64 f64vec3 var43; // needs GL_ARB_gpu_shader_fp64 f64vec4 var44; // needs GL_ARB_gpu_shader_fp64 } // Test explicit data in and out flat in int8_t var1_in; flat in int16_t var5_in; flat in int32_t var9_in; flat in int64_t var13_in; flat in float16_t var33_in; flat in float64_t var41_in; flat in double var42_in; out int8_t var11_out; out int16_t var51_out; out int32_t var91_out; //out int64_t var131; // Error: TBD Needs to be confirmed out float16_t var331_out; void testConstructors() { uint8_t uiv = uint8_t(1); double dv = 1.0; int16_t iv = int16_t(1); bool bv = false; float(uiv); // converts an 8-bit uint value to a float int64_t(dv); // converts a double value to a 64-bit int float64_t(iv); // converts a 16-bit int value to a 64-bit float uint16_t(bv); // converts a Boolean value to a 16-bit uint } void testBinaryOps() { int var0 = int( 0 ); uint var1 = uint( 1 ); int64_t var2 = int64_t( 2 ); uint64_t var3 = uint64_t( 3 ); float var4 = float( 4 ); double var5 = double( 5 ); ivec2 var6 = ivec2( 6 ); uvec2 var7 = uvec2( 7 ); i64vec2 var8 = i64vec2( 8 ); u64vec2 var9 = u64vec2( 9 ); vec2 var10 = vec2( 10 ); dvec2 var11 = dvec2( 11 ); ivec3 var12 = ivec3( 12 ); uvec3 var13 = uvec3( 13 ); i64vec3 var14 = i64vec3( 14 ); u64vec3 var15 = u64vec3( 15 ); vec3 var16 = vec3( 16 ); dvec3 var17 = dvec3( 17 ); ivec4 var18 = ivec4( 18 ); uvec4 var19 = uvec4( 19 ); i64vec4 var20 = i64vec4( 20 ); u64vec4 var21 = u64vec4( 21 ); vec4 var22 = vec4( 22 ); dvec4 var23 = dvec4( 23 ); int8_t var24 = int8_t( 24 ); int16_t var25 = int16_t( 25 ); i8vec2 var26 = i8vec2( 26 ); i16vec2 var27 = i16vec2( 27 ); i8vec3 var28 = i8vec3( 28 ); i16vec3 var29 = i16vec3( 29 ); i8vec4 var30 = i8vec4( 30 ); i16vec4 var31 = i16vec4( 31 ); uint8_t var32 = uint8_t( 32 ); uint16_t var33 = uint16_t( 33 ); u8vec2 var34 = u8vec2( 34 ); u16vec2 var35 = u16vec2( 35 ); u8vec3 var36 = u8vec3( 36 ); u8vec4 var37 = u8vec4( 37 ); float16_t var38 = float16_t( 38 ); f16vec2 var39 = f16vec2( 39 ); f16vec3 var40 = f16vec3( 40 ); f16vec4 var41 = f16vec4( 41 ); // Testing for binary operation + // int ====> uint, int64_t, uint64_t, float, double uint var42 = var1 + var0; int64_t var43 = var2 + var0; uint64_t var44 = var3 + var0; float var45 = var4 + var0; double var46 = var5 + var0; // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var47 = var7 + var6; i64vec2 var48 = var8 + var6; u64vec2 var49 = var9 + var6; vec2 var50 = var10 + var6; dvec2 var51 = var11 + var6; // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var52 = var13 + var12; i64vec3 var53 = var14 + var12; u64vec3 var54 = var15 + var12; vec3 var55 = var16 + var12; dvec3 var56 = var17 + var12; // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var57 = var19 + var18; i64vec4 var58 = var20 + var18; u64vec4 var59 = var21 + var18; vec4 var60 = var22 + var18; dvec4 var61 = var23 + var18; // int8_t ====> int, int64_t, uint, uint64_t, float, double int var62 = var0 + var24; int64_t var63 = var2 + var24; uint var64 = var1 + var24; uint64_t var65 = var3 + var24; float var66 = var4 + var24; double var67 = var5 + var24; // int16_t ====> int, int64_t, uint, uint64_t, float, double int var68 = var0 + var25; int64_t var69 = var2 + var25; uint var70 = var1 + var25; uint64_t var71 = var3 + var25; float var72 = var4 + var25; double var73 = var5 + var25; // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var74 = var6 + var26; i64vec2 var75 = var8 + var26; uvec2 var76 = var7 + var26; u64vec2 var77 = var9 + var26; vec2 var78 = var10 + var26; dvec2 var79 = var11 + var26; // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var80 = var6 + var27; i64vec2 var81 = var8 + var27; uvec2 var82 = var7 + var27; u64vec2 var83 = var9 + var27; vec2 var84 = var10 + var27; dvec2 var85 = var11 + var27; // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var86 = var12 + var28; i64vec3 var87 = var14 + var28; uvec3 var88 = var13 + var28; u64vec3 var89 = var15 + var28; vec3 var90 = var16 + var28; dvec3 var91 = var17 + var28; // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var92 = var13 + var29; u64vec3 var93 = var15 + var29; vec3 var94 = var16 + var29; dvec3 var95 = var17 + var29; // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var96 = var18 + var30; i64vec4 var97 = var20 + var30; uvec4 var98 = var19 + var30; u64vec4 var99 = var21 + var30; vec4 var100 = var22 + var30; dvec4 var101 = var23 + var30; // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var102 = var19 + var31; u64vec4 var103 = var21 + var31; vec4 var104 = var22 + var31; dvec4 var105 = var23 + var31; // int64_t ====> uint64_t, double uint64_t var106 = var3 + var2; double var107 = var5 + var2; // i64vec2 ====> u64vec2, dvec2 u64vec2 var108 = var9 + var8; dvec2 var109 = var11 + var8; // i64vec3 ====> u64vec3, dvec3 u64vec3 var110 = var15 + var14; dvec3 var111 = var17 + var14; // i64vec4 ====> u64vec4, dvec4 u64vec4 var112 = var21 + var20; dvec4 var113 = var23 + var20; // uint ====> uint64_t, float, double uint64_t var114 = var3 + var1; float var115 = var4 + var1; double var116 = var5 + var1; // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var117 = var9 + var7; vec2 var118 = var10 + var7; dvec2 var119 = var11 + var7; // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var120 = var15 + var13; vec3 var121 = var16 + var13; dvec3 var122 = var17 + var13; // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var123 = var21 + var19; vec4 var124 = var22 + var19; dvec4 var125 = var23 + var19; // uint8_t ====> uint, uint64_t, float, double uint var126 = var1 + var32; uint64_t var127 = var3 + var32; float var128 = var4 + var32; double var129 = var5 + var32; // uint16_t ====> uint, uint64_t, float, double uint var130 = var1 + var33; uint64_t var131 = var3 + var33; float var132 = var4 + var33; double var133 = var5 + var33; // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var134 = var7 + var34; u64vec2 var135 = var9 + var34; vec2 var136 = var10 + var34; dvec2 var137 = var11 + var34; // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var138 = var7 + var35; u64vec2 var139 = var9 + var35; vec2 var140 = var10 + var35; dvec2 var141 = var11 + var35; // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var142 = var13 + var36; u64vec3 var143 = var15 + var36; vec3 var144 = var16 + var36; dvec3 var145 = var17 + var36; // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var146 = var19 + var37; u64vec4 var147 = var21 + var37; vec4 var148 = var22 + var37; dvec4 var149 = var23 + var37; // uint64_t ====> double double var150 = var5 + var3; // u64vec2 ====> dvec2 dvec2 var151 = var11 + var9; // u64vec3 ====> dvec3 dvec3 var152 = var17 + var15; // u64vec4 ====> dvec4 dvec4 var153 = var23 + var21; // float ====> double double var154 = var5 + var4; // vec2 ====> dvec2 dvec2 var155 = var11 + var10; // vec3 ====> dvec3 dvec3 var156 = var17 + var16; // vec4 ====> dvec4 dvec4 var157 = var23 + var22; // float16_t ====> float, double float var158 = var4 + var38; double var159 = var5 + var38; // f16vec2 ====> vec2, dvec2 vec2 var160 = var10 + var39; dvec2 var161 = var11 + var39; // f16vec3 ====> vec3, dvec3 vec3 var162 = var16 + var40; dvec3 var163 = var17 + var40; // f16vec4 ====> vec4, dvec4 vec4 var164 = var22 + var41; dvec4 var165 = var23 + var41; // Testing for binary operation - // int ====> uint, int64_t, uint64_t, float, double uint var166 = var1 - var0; int64_t var167 = var2 - var0; uint64_t var168 = var3 - var0; float var169 = var4 - var0; double var170 = var5 - var0; // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var171 = var7 - var6; i64vec2 var172 = var8 - var6; u64vec2 var173 = var9 - var6; vec2 var174 = var10 - var6; dvec2 var175 = var11 - var6; // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var176 = var13 - var12; i64vec3 var177 = var14 - var12; u64vec3 var178 = var15 - var12; vec3 var179 = var16 - var12; dvec3 var180 = var17 - var12; // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var181 = var19 - var18; i64vec4 var182 = var20 - var18; u64vec4 var183 = var21 - var18; vec4 var184 = var22 - var18; dvec4 var185 = var23 - var18; // int8_t ====> int, int64_t, uint, uint64_t, float, double int var186 = var0 - var24; int64_t var187 = var2 - var24; uint var188 = var1 - var24; uint64_t var189 = var3 - var24; float var190 = var4 - var24; double var191 = var5 - var24; // int16_t ====> int, int64_t, uint, uint64_t, float, double int var192 = var0 - var25; int64_t var193 = var2 - var25; uint var194 = var1 - var25; uint64_t var195 = var3 - var25; float var196 = var4 - var25; double var197 = var5 - var25; // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var198 = var6 - var26; i64vec2 var199 = var8 - var26; uvec2 var200 = var7 - var26; u64vec2 var201 = var9 - var26; vec2 var202 = var10 - var26; dvec2 var203 = var11 - var26; // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var204 = var6 - var27; i64vec2 var205 = var8 - var27; uvec2 var206 = var7 - var27; u64vec2 var207 = var9 - var27; vec2 var208 = var10 - var27; dvec2 var209 = var11 - var27; // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var210 = var12 - var28; i64vec3 var211 = var14 - var28; uvec3 var212 = var13 - var28; u64vec3 var213 = var15 - var28; vec3 var214 = var16 - var28; dvec3 var215 = var17 - var28; // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var216 = var13 - var29; u64vec3 var217 = var15 - var29; vec3 var218 = var16 - var29; dvec3 var219 = var17 - var29; // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var220 = var18 - var30; i64vec4 var221 = var20 - var30; uvec4 var222 = var19 - var30; u64vec4 var223 = var21 - var30; vec4 var224 = var22 - var30; dvec4 var225 = var23 - var30; // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var226 = var19 - var31; u64vec4 var227 = var21 - var31; vec4 var228 = var22 - var31; dvec4 var229 = var23 - var31; // int64_t ====> uint64_t, double uint64_t var230 = var3 - var2; double var231 = var5 - var2; // i64vec2 ====> u64vec2, dvec2 u64vec2 var232 = var9 - var8; dvec2 var233 = var11 - var8; // i64vec3 ====> u64vec3, dvec3 u64vec3 var234 = var15 - var14; dvec3 var235 = var17 - var14; // i64vec4 ====> u64vec4, dvec4 u64vec4 var236 = var21 - var20; dvec4 var237 = var23 - var20; // uint ====> uint64_t, float, double uint64_t var238 = var3 - var1; float var239 = var4 - var1; double var240 = var5 - var1; // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var241 = var9 - var7; vec2 var242 = var10 - var7; dvec2 var243 = var11 - var7; // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var244 = var15 - var13; vec3 var245 = var16 - var13; dvec3 var246 = var17 - var13; // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var247 = var21 - var19; vec4 var248 = var22 - var19; dvec4 var249 = var23 - var19; // uint8_t ====> uint, uint64_t, float, double uint var250 = var1 - var32; uint64_t var251 = var3 - var32; float var252 = var4 - var32; double var253 = var5 - var32; // uint16_t ====> uint, uint64_t, float, double uint var254 = var1 - var33; uint64_t var255 = var3 - var33; float var256 = var4 - var33; double var257 = var5 - var33; // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var258 = var7 - var34; u64vec2 var259 = var9 - var34; vec2 var260 = var10 - var34; dvec2 var261 = var11 - var34; // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var262 = var7 - var35; u64vec2 var263 = var9 - var35; vec2 var264 = var10 - var35; dvec2 var265 = var11 - var35; // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var266 = var13 - var36; u64vec3 var267 = var15 - var36; vec3 var268 = var16 - var36; dvec3 var269 = var17 - var36; // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var270 = var19 - var37; u64vec4 var271 = var21 - var37; vec4 var272 = var22 - var37; dvec4 var273 = var23 - var37; // uint64_t ====> double double var274 = var5 - var3; // u64vec2 ====> dvec2 dvec2 var275 = var11 - var9; // u64vec3 ====> dvec3 dvec3 var276 = var17 - var15; // u64vec4 ====> dvec4 dvec4 var277 = var23 - var21; // float ====> double double var278 = var5 - var4; // vec2 ====> dvec2 dvec2 var279 = var11 - var10; // vec3 ====> dvec3 dvec3 var280 = var17 - var16; // vec4 ====> dvec4 dvec4 var281 = var23 - var22; // float16_t ====> float, double float var282 = var4 - var38; double var283 = var5 - var38; // f16vec2 ====> vec2, dvec2 vec2 var284 = var10 - var39; dvec2 var285 = var11 - var39; // f16vec3 ====> vec3, dvec3 vec3 var286 = var16 - var40; dvec3 var287 = var17 - var40; // f16vec4 ====> vec4, dvec4 vec4 var288 = var22 - var41; dvec4 var289 = var23 - var41; // Testing for binary operation * // int ====> uint, int64_t, uint64_t, float, double uint var290 = var1 * var0; int64_t var291 = var2 * var0; uint64_t var292 = var3 * var0; float var293 = var4 * var0; double var294 = var5 * var0; // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var295 = var7 * var6; i64vec2 var296 = var8 * var6; u64vec2 var297 = var9 * var6; vec2 var298 = var10 * var6; dvec2 var299 = var11 * var6; // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var300 = var13 * var12; i64vec3 var301 = var14 * var12; u64vec3 var302 = var15 * var12; vec3 var303 = var16 * var12; dvec3 var304 = var17 * var12; // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var305 = var19 * var18; i64vec4 var306 = var20 * var18; u64vec4 var307 = var21 * var18; vec4 var308 = var22 * var18; dvec4 var309 = var23 * var18; // int8_t ====> int, int64_t, uint, uint64_t, float, double int var310 = var0 * var24; int64_t var311 = var2 * var24; uint var312 = var1 * var24; uint64_t var313 = var3 * var24; float var314 = var4 * var24; double var315 = var5 * var24; // int16_t ====> int, int64_t, uint, uint64_t, float, double int var316 = var0 * var25; int64_t var317 = var2 * var25; uint var318 = var1 * var25; uint64_t var319 = var3 * var25; float var320 = var4 * var25; double var321 = var5 * var25; // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var322 = var6 * var26; i64vec2 var323 = var8 * var26; uvec2 var324 = var7 * var26; u64vec2 var325 = var9 * var26; vec2 var326 = var10 * var26; dvec2 var327 = var11 * var26; // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var328 = var6 * var27; i64vec2 var329 = var8 * var27; uvec2 var330 = var7 * var27; u64vec2 var331 = var9 * var27; vec2 var332 = var10 * var27; dvec2 var333 = var11 * var27; // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var334 = var12 * var28; i64vec3 var335 = var14 * var28; uvec3 var336 = var13 * var28; u64vec3 var337 = var15 * var28; vec3 var338 = var16 * var28; dvec3 var339 = var17 * var28; // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var340 = var13 * var29; u64vec3 var341 = var15 * var29; vec3 var342 = var16 * var29; dvec3 var343 = var17 * var29; // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var344 = var18 * var30; i64vec4 var345 = var20 * var30; uvec4 var346 = var19 * var30; u64vec4 var347 = var21 * var30; vec4 var348 = var22 * var30; dvec4 var349 = var23 * var30; // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var350 = var19 * var31; u64vec4 var351 = var21 * var31; vec4 var352 = var22 * var31; dvec4 var353 = var23 * var31; // int64_t ====> uint64_t, double uint64_t var354 = var3 * var2; double var355 = var5 * var2; // i64vec2 ====> u64vec2, dvec2 u64vec2 var356 = var9 * var8; dvec2 var357 = var11 * var8; // i64vec3 ====> u64vec3, dvec3 u64vec3 var358 = var15 * var14; dvec3 var359 = var17 * var14; // i64vec4 ====> u64vec4, dvec4 u64vec4 var360 = var21 * var20; dvec4 var361 = var23 * var20; // uint ====> uint64_t, float, double uint64_t var362 = var3 * var1; float var363 = var4 * var1; double var364 = var5 * var1; // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var365 = var9 * var7; vec2 var366 = var10 * var7; dvec2 var367 = var11 * var7; // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var368 = var15 * var13; vec3 var369 = var16 * var13; dvec3 var370 = var17 * var13; // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var371 = var21 * var19; vec4 var372 = var22 * var19; dvec4 var373 = var23 * var19; // uint8_t ====> uint, uint64_t, float, double uint var374 = var1 * var32; uint64_t var375 = var3 * var32; float var376 = var4 * var32; double var377 = var5 * var32; // uint16_t ====> uint, uint64_t, float, double uint var378 = var1 * var33; uint64_t var379 = var3 * var33; float var380 = var4 * var33; double var381 = var5 * var33; // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var382 = var7 * var34; u64vec2 var383 = var9 * var34; vec2 var384 = var10 * var34; dvec2 var385 = var11 * var34; // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var386 = var7 * var35; u64vec2 var387 = var9 * var35; vec2 var388 = var10 * var35; dvec2 var389 = var11 * var35; // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var390 = var13 * var36; u64vec3 var391 = var15 * var36; vec3 var392 = var16 * var36; dvec3 var393 = var17 * var36; // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var394 = var19 * var37; u64vec4 var395 = var21 * var37; vec4 var396 = var22 * var37; dvec4 var397 = var23 * var37; // uint64_t ====> double double var398 = var5 * var3; // u64vec2 ====> dvec2 dvec2 var399 = var11 * var9; // u64vec3 ====> dvec3 dvec3 var400 = var17 * var15; // u64vec4 ====> dvec4 dvec4 var401 = var23 * var21; // float ====> double double var402 = var5 * var4; // vec2 ====> dvec2 dvec2 var403 = var11 * var10; // vec3 ====> dvec3 dvec3 var404 = var17 * var16; // vec4 ====> dvec4 dvec4 var405 = var23 * var22; // float16_t ====> float, double float var406 = var4 * var38; double var407 = var5 * var38; // f16vec2 ====> vec2, dvec2 vec2 var408 = var10 * var39; dvec2 var409 = var11 * var39; // f16vec3 ====> vec3, dvec3 vec3 var410 = var16 * var40; dvec3 var411 = var17 * var40; // f16vec4 ====> vec4, dvec4 vec4 var412 = var22 * var41; dvec4 var413 = var23 * var41; } void testModuloOps() { int var0 = int( 0 ); uint var1 = uint( 1 ); int64_t var2 = int64_t( 2 ); uint64_t var3 = uint64_t( 3 ); float var4 = float( 4 ); double var5 = double( 5 ); ivec2 var6 = ivec2( 6 ); uvec2 var7 = uvec2( 7 ); i64vec2 var8 = i64vec2( 8 ); u64vec2 var9 = u64vec2( 9 ); vec2 var10 = vec2( 10 ); dvec2 var11 = dvec2( 11 ); ivec3 var12 = ivec3( 12 ); uvec3 var13 = uvec3( 13 ); i64vec3 var14 = i64vec3( 14 ); u64vec3 var15 = u64vec3( 15 ); vec3 var16 = vec3( 16 ); dvec3 var17 = dvec3( 17 ); ivec4 var18 = ivec4( 18 ); uvec4 var19 = uvec4( 19 ); i64vec4 var20 = i64vec4( 20 ); u64vec4 var21 = u64vec4( 21 ); vec4 var22 = vec4( 22 ); dvec4 var23 = dvec4( 23 ); int8_t var24 = int8_t( 24 ); int16_t var25 = int16_t( 25 ); i8vec2 var26 = i8vec2( 26 ); i16vec2 var27 = i16vec2( 27 ); i8vec3 var28 = i8vec3( 28 ); i16vec3 var29 = i16vec3( 29 ); i8vec4 var30 = i8vec4( 30 ); i16vec4 var31 = i16vec4( 31 ); uint8_t var32 = uint8_t( 32 ); uint16_t var33 = uint16_t( 33 ); u8vec2 var34 = u8vec2( 34 ); u16vec2 var35 = u16vec2( 35 ); u8vec3 var36 = u8vec3( 36 ); u8vec4 var37 = u8vec4( 37 ); float16_t var38 = float16_t( 38 ); f16vec2 var39 = f16vec2( 39 ); f16vec3 var40 = f16vec3( 40 ); f16vec4 var41 = f16vec4( 41 ); uint var42 = var1 % var0; // uint%int int64_t var43 = var2 % var0; // int64_t%int uint64_t var44 = var3 % var0; // uint64_t%int uvec2 var45 = var7 % var6; // uvec2%ivec2 i64vec2 var46 = var8 % var6; // i64vec2%ivec2 u64vec2 var47 = var9 % var6; // u64vec2%ivec2 uvec3 var48 = var13 % var12; // uvec3%ivec3 i64vec3 var49 = var14 % var12; // i64vec3%ivec3 u64vec3 var50 = var15 % var12; // u64vec3%ivec3 uvec4 var51 = var19 % var18; // uvec4%ivec4 i64vec4 var52 = var20 % var18; // i64vec4%ivec4 u64vec4 var53 = var21 % var18; // u64vec4%ivec4 int var54 = var0 % var24; // int%int8_t int64_t var55 = var2 % var24; // int64_t%int8_t uint var56 = var1 % var24; // uint%int8_t uint64_t var57 = var3 % var24; // uint64_t%int8_t int var58 = var0 % var25; // int%int16_t int64_t var59 = var2 % var25; // int64_t%int16_t uint var60 = var1 % var25; // uint%int16_t uint64_t var61 = var3 % var25; // uint64_t%int16_t ivec2 var62 = var6 % var26; // ivec2%i8vec2 i64vec2 var63 = var8 % var26; // i64vec2%i8vec2 uvec2 var64 = var7 % var26; // uvec2%i8vec2 u64vec2 var65 = var9 % var26; // u64vec2%i8vec2 ivec2 var66 = var6 % var27; // ivec2%i16vec2 i64vec2 var67 = var8 % var27; // i64vec2%i16vec2 uvec2 var68 = var7 % var27; // uvec2%i16vec2 u64vec2 var69 = var9 % var27; // u64vec2%i16vec2 ivec3 var70 = var12 % var28; // ivec3%i8vec3 i64vec3 var71 = var14 % var28; // i64vec3%i8vec3 uvec3 var72 = var13 % var28; // uvec3%i8vec3 u64vec3 var73 = var15 % var28; // u64vec3%i8vec3 uvec3 var74 = var13 % var29; // uvec3%i16vec3 u64vec3 var75 = var15 % var29; // u64vec3%i16vec3 ivec4 var76 = var18 % var30; // ivec4%i8vec4 i64vec4 var77 = var20 % var30; // i64vec4%i8vec4 uvec4 var78 = var19 % var30; // uvec4%i8vec4 u64vec4 var79 = var21 % var30; // u64vec4%i8vec4 uvec4 var80 = var19 % var31; // uvec4%i16vec4 u64vec4 var81 = var21 % var31; // u64vec4%i16vec4 uint64_t var82 = var3 % var2; // uint64_t%int64_t u64vec2 var83 = var9 % var8; // u64vec2%i64vec2 u64vec3 var84 = var15 % var14; // u64vec3%i64vec3 u64vec4 var85 = var21 % var20; // u64vec4%i64vec4 uint64_t var86 = var3 % var1; // uint64_t%uint u64vec2 var87 = var9 % var7; // u64vec2%uvec2 u64vec3 var88 = var15 % var13; // u64vec3%uvec3 u64vec4 var89 = var21 % var19; // u64vec4%uvec4 uint var90 = var1 % var32; // uint%uint8_t uint64_t var91 = var3 % var32; // uint64_t%uint8_t uint var92 = var1 % var33; // uint%uint16_t uint64_t var93 = var3 % var33; // uint64_t%uint16_t uvec2 var94 = var7 % var34; // uvec2%u8vec2 u64vec2 var95 = var9 % var34; // u64vec2%u8vec2 uvec2 var96 = var7 % var35; // uvec2%u16vec2 u64vec2 var97 = var9 % var35; // u64vec2%u16vec2 uvec3 var98 = var13 % var36; // uvec3%u8vec3 u64vec3 var99 = var15 % var36; // u64vec3%u8vec3 uvec4 var100 = var19 % var37; // uvec4%u8vec4 u64vec4 var101 = var21 % var37; // u64vec4%u8vec4 } void testUnaryOps() { int var0 = int( 0 ); uint var1 = uint( 1 ); int64_t var2 = int64_t( 2 ); uint64_t var3 = uint64_t( 3 ); float var4 = float( 4 ); double var5 = double( 5 ); ivec2 var6 = ivec2( 6 ); uvec2 var7 = uvec2( 7 ); i64vec2 var8 = i64vec2( 8 ); u64vec2 var9 = u64vec2( 9 ); vec2 var10 = vec2( 10 ); dvec2 var11 = dvec2( 11 ); ivec3 var12 = ivec3( 12 ); uvec3 var13 = uvec3( 13 ); i64vec3 var14 = i64vec3( 14 ); u64vec3 var15 = u64vec3( 15 ); vec3 var16 = vec3( 16 ); dvec3 var17 = dvec3( 17 ); ivec4 var18 = ivec4( 18 ); uvec4 var19 = uvec4( 19 ); i64vec4 var20 = i64vec4( 20 ); u64vec4 var21 = u64vec4( 21 ); vec4 var22 = vec4( 22 ); dvec4 var23 = dvec4( 23 ); int8_t var24 = int8_t( 24 ); int16_t var25 = int16_t( 25 ); i8vec2 var26 = i8vec2( 26 ); i16vec2 var27 = i16vec2( 27 ); i8vec3 var28 = i8vec3( 28 ); i16vec3 var29 = i16vec3( 29 ); i8vec4 var30 = i8vec4( 30 ); i16vec4 var31 = i16vec4( 31 ); uint8_t var32 = uint8_t( 32 ); uint16_t var33 = uint16_t( 33 ); u8vec2 var34 = u8vec2( 34 ); u16vec2 var35 = u16vec2( 35 ); u8vec3 var36 = u8vec3( 36 ); u8vec4 var37 = u8vec4( 37 ); float16_t var38 = float16_t( 38 ); f16vec2 var39 = f16vec2( 39 ); f16vec3 var40 = f16vec3( 40 ); f16vec4 var41 = f16vec4( 41 ); // int ====> uint, int64_t, uint64_t, float, double uint var42 = -var1; //uint int64_t var43 = -var2; //int64_t uint64_t var44 = -var3; //uint64_t float var45 = -var4; //float double var46 = -var5; //double // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var47 = -var7; //uvec2 i64vec2 var48 = -var8; //i64vec2 u64vec2 var49 = -var9; //u64vec2 vec2 var50 = -var10; //vec2 dvec2 var51 = -var11; //dvec2 // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var52 = -var13; //uvec3 i64vec3 var53 = -var14; //i64vec3 u64vec3 var54 = -var15; //u64vec3 vec3 var55 = -var16; //vec3 dvec3 var56 = -var17; //dvec3 // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var57 = -var19; //uvec4 i64vec4 var58 = -var20; //i64vec4 u64vec4 var59 = -var21; //u64vec4 vec4 var60 = -var22; //vec4 dvec4 var61 = -var23; //dvec4 // int8_t ====> int, int64_t, uint, uint64_t, float, double int var62 = -var0; //int int64_t var63 = -var2; //int64_t uint var64 = -var1; //uint uint64_t var65 = -var3; //uint64_t float var66 = -var4; //float double var67 = -var5; //double // int16_t ====> int, int64_t, uint, uint64_t, float, double int var68 = -var0; //int int64_t var69 = -var2; //int64_t uint var70 = -var1; //uint uint64_t var71 = -var3; //uint64_t float var72 = -var4; //float double var73 = -var5; //double // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var74 = -var6; //ivec2 i64vec2 var75 = -var8; //i64vec2 uvec2 var76 = -var7; //uvec2 u64vec2 var77 = -var9; //u64vec2 vec2 var78 = -var10; //vec2 dvec2 var79 = -var11; //dvec2 // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var80 = -var6; //ivec2 i64vec2 var81 = -var8; //i64vec2 uvec2 var82 = -var7; //uvec2 u64vec2 var83 = -var9; //u64vec2 vec2 var84 = -var10; //vec2 dvec2 var85 = -var11; //dvec2 // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var86 = -var12; //ivec3 i64vec3 var87 = -var14; //i64vec3 uvec3 var88 = -var13; //uvec3 u64vec3 var89 = -var15; //u64vec3 vec3 var90 = -var16; //vec3 dvec3 var91 = -var17; //dvec3 // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var92 = -var13; //uvec3 u64vec3 var93 = -var15; //u64vec3 vec3 var94 = -var16; //vec3 dvec3 var95 = -var17; //dvec3 // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var96 = -var18; //ivec4 i64vec4 var97 = -var20; //i64vec4 uvec4 var98 = -var19; //uvec4 u64vec4 var99 = -var21; //u64vec4 vec4 var100 = -var22; //vec4 dvec4 var101 = -var23; //dvec4 // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var102 = -var19; //uvec4 u64vec4 var103 = -var21; //u64vec4 vec4 var104 = -var22; //vec4 dvec4 var105 = -var23; //dvec4 // int64_t ====> uint64_t, double uint64_t var106 = -var3; //uint64_t double var107 = -var5; //double // i64vec2 ====> u64vec2, dvec2 u64vec2 var108 = -var9; //u64vec2 dvec2 var109 = -var11; //dvec2 // i64vec3 ====> u64vec3, dvec3 u64vec3 var110 = -var15; //u64vec3 dvec3 var111 = -var17; //dvec3 // i64vec4 ====> u64vec4, dvec4 u64vec4 var112 = -var21; //u64vec4 dvec4 var113 = -var23; //dvec4 // uint ====> uint64_t, float, double uint64_t var114 = -var3; //uint64_t float var115 = -var4; //float double var116 = -var5; //double // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var117 = -var9; //u64vec2 vec2 var118 = -var10; //vec2 dvec2 var119 = -var11; //dvec2 // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var120 = -var15; //u64vec3 vec3 var121 = -var16; //vec3 dvec3 var122 = -var17; //dvec3 // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var123 = -var21; //u64vec4 vec4 var124 = -var22; //vec4 dvec4 var125 = -var23; //dvec4 // uint8_t ====> uint, uint64_t, float, double uint var126 = -var1; //uint uint64_t var127 = -var3; //uint64_t float var128 = -var4; //float double var129 = -var5; //double // uint16_t ====> uint, uint64_t, float, double uint var130 = -var1; //uint uint64_t var131 = -var3; //uint64_t float var132 = -var4; //float double var133 = -var5; //double // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var134 = -var7; //uvec2 u64vec2 var135 = -var9; //u64vec2 vec2 var136 = -var10; //vec2 dvec2 var137 = -var11; //dvec2 // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var138 = -var7; //uvec2 u64vec2 var139 = -var9; //u64vec2 vec2 var140 = -var10; //vec2 dvec2 var141 = -var11; //dvec2 // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var142 = -var13; //uvec3 u64vec3 var143 = -var15; //u64vec3 vec3 var144 = -var16; //vec3 dvec3 var145 = -var17; //dvec3 // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var146 = -var19; //uvec4 u64vec4 var147 = -var21; //u64vec4 vec4 var148 = -var22; //vec4 dvec4 var149 = -var23; //dvec4 // uint64_t ====> double double var150 = -var5; //double // u64vec2 ====> dvec2 dvec2 var151 = -var11; //dvec2 // u64vec3 ====> dvec3 dvec3 var152 = -var17; //dvec3 // u64vec4 ====> dvec4 dvec4 var153 = -var23; //dvec4 // float ====> double double var154 = -var5; //double // vec2 ====> dvec2 dvec2 var155 = -var11; //dvec2 // vec3 ====> dvec3 dvec3 var156 = -var17; //dvec3 // vec4 ====> dvec4 dvec4 var157 = -var23; //dvec4 // float16_t ====> float, double float var158 = -var4; //float double var159 = -var5; //double // f16vec2 ====> vec2, dvec2 vec2 var160 = -var10; //vec2 dvec2 var161 = -var11; //dvec2 // f16vec3 ====> vec3, dvec3 vec3 var162 = -var16; //vec3 dvec3 var163 = -var17; //dvec3 // f16vec4 ====> vec4, dvec4 vec4 var164 = -var22; //vec4 dvec4 var165 = -var23; //dvec4 // int ====> uint, int64_t, uint64_t, float, double uint var166 = ++var1; //uint int64_t var167 = ++var2; //int64_t uint64_t var168 = ++var3; //uint64_t float var169 = ++var4; //float double var170 = ++var5; //double // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var171 = ++var7; //uvec2 i64vec2 var172 = ++var8; //i64vec2 u64vec2 var173 = ++var9; //u64vec2 vec2 var174 = ++var10; //vec2 dvec2 var175 = ++var11; //dvec2 // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var176 = ++var13; //uvec3 i64vec3 var177 = ++var14; //i64vec3 u64vec3 var178 = ++var15; //u64vec3 vec3 var179 = ++var16; //vec3 dvec3 var180 = ++var17; //dvec3 // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var181 = ++var19; //uvec4 i64vec4 var182 = ++var20; //i64vec4 u64vec4 var183 = ++var21; //u64vec4 vec4 var184 = ++var22; //vec4 dvec4 var185 = ++var23; //dvec4 // int8_t ====> int, int64_t, uint, uint64_t, float, double int var186 = ++var0; //int int64_t var187 = ++var2; //int64_t uint var188 = ++var1; //uint uint64_t var189 = ++var3; //uint64_t float var190 = ++var4; //float double var191 = ++var5; //double // int16_t ====> int, int64_t, uint, uint64_t, float, double int var192 = ++var0; //int int64_t var193 = ++var2; //int64_t uint var194 = ++var1; //uint uint64_t var195 = ++var3; //uint64_t float var196 = ++var4; //float double var197 = ++var5; //double // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var198 = ++var6; //ivec2 i64vec2 var199 = ++var8; //i64vec2 uvec2 var200 = ++var7; //uvec2 u64vec2 var201 = ++var9; //u64vec2 vec2 var202 = ++var10; //vec2 dvec2 var203 = ++var11; //dvec2 // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var204 = ++var6; //ivec2 i64vec2 var205 = ++var8; //i64vec2 uvec2 var206 = ++var7; //uvec2 u64vec2 var207 = ++var9; //u64vec2 vec2 var208 = ++var10; //vec2 dvec2 var209 = ++var11; //dvec2 // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var210 = ++var12; //ivec3 i64vec3 var211 = ++var14; //i64vec3 uvec3 var212 = ++var13; //uvec3 u64vec3 var213 = ++var15; //u64vec3 vec3 var214 = ++var16; //vec3 dvec3 var215 = ++var17; //dvec3 // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var216 = ++var13; //uvec3 u64vec3 var217 = ++var15; //u64vec3 vec3 var218 = ++var16; //vec3 dvec3 var219 = ++var17; //dvec3 // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var220 = ++var18; //ivec4 i64vec4 var221 = ++var20; //i64vec4 uvec4 var222 = ++var19; //uvec4 u64vec4 var223 = ++var21; //u64vec4 vec4 var224 = ++var22; //vec4 dvec4 var225 = ++var23; //dvec4 // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var226 = ++var19; //uvec4 u64vec4 var227 = ++var21; //u64vec4 vec4 var228 = ++var22; //vec4 dvec4 var229 = ++var23; //dvec4 // int64_t ====> uint64_t, double uint64_t var230 = ++var3; //uint64_t double var231 = ++var5; //double // i64vec2 ====> u64vec2, dvec2 u64vec2 var232 = ++var9; //u64vec2 dvec2 var233 = ++var11; //dvec2 // i64vec3 ====> u64vec3, dvec3 u64vec3 var234 = ++var15; //u64vec3 dvec3 var235 = ++var17; //dvec3 // i64vec4 ====> u64vec4, dvec4 u64vec4 var236 = ++var21; //u64vec4 dvec4 var237 = ++var23; //dvec4 // uint ====> uint64_t, float, double uint64_t var238 = ++var3; //uint64_t float var239 = ++var4; //float double var240 = ++var5; //double // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var241 = ++var9; //u64vec2 vec2 var242 = ++var10; //vec2 dvec2 var243 = ++var11; //dvec2 // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var244 = ++var15; //u64vec3 vec3 var245 = ++var16; //vec3 dvec3 var246 = ++var17; //dvec3 // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var247 = ++var21; //u64vec4 vec4 var248 = ++var22; //vec4 dvec4 var249 = ++var23; //dvec4 // uint8_t ====> uint, uint64_t, float, double uint var250 = ++var1; //uint uint64_t var251 = ++var3; //uint64_t float var252 = ++var4; //float double var253 = ++var5; //double // uint16_t ====> uint, uint64_t, float, double uint var254 = ++var1; //uint uint64_t var255 = ++var3; //uint64_t float var256 = ++var4; //float double var257 = ++var5; //double // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var258 = ++var7; //uvec2 u64vec2 var259 = ++var9; //u64vec2 vec2 var260 = ++var10; //vec2 dvec2 var261 = ++var11; //dvec2 // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var262 = ++var7; //uvec2 u64vec2 var263 = ++var9; //u64vec2 vec2 var264 = ++var10; //vec2 dvec2 var265 = ++var11; //dvec2 // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var266 = ++var13; //uvec3 u64vec3 var267 = ++var15; //u64vec3 vec3 var268 = ++var16; //vec3 dvec3 var269 = ++var17; //dvec3 // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var270 = ++var19; //uvec4 u64vec4 var271 = ++var21; //u64vec4 vec4 var272 = ++var22; //vec4 dvec4 var273 = ++var23; //dvec4 // uint64_t ====> double double var274 = ++var5; //double // u64vec2 ====> dvec2 dvec2 var275 = ++var11; //dvec2 // u64vec3 ====> dvec3 dvec3 var276 = ++var17; //dvec3 // u64vec4 ====> dvec4 dvec4 var277 = ++var23; //dvec4 // float ====> double double var278 = ++var5; //double // vec2 ====> dvec2 dvec2 var279 = ++var11; //dvec2 // vec3 ====> dvec3 dvec3 var280 = ++var17; //dvec3 // vec4 ====> dvec4 dvec4 var281 = ++var23; //dvec4 // float16_t ====> float, double float var282 = ++var4; //float double var283 = ++var5; //double // f16vec2 ====> vec2, dvec2 vec2 var284 = ++var10; //vec2 dvec2 var285 = ++var11; //dvec2 // f16vec3 ====> vec3, dvec3 vec3 var286 = ++var16; //vec3 dvec3 var287 = ++var17; //dvec3 // f16vec4 ====> vec4, dvec4 vec4 var288 = ++var22; //vec4 dvec4 var289 = ++var23; //dvec4 // int ====> uint, int64_t, uint64_t, float, double uint var290 = --var1; //uint int64_t var291 = --var2; //int64_t uint64_t var292 = --var3; //uint64_t float var293 = --var4; //float double var294 = --var5; //double // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var295 = --var7; //uvec2 i64vec2 var296 = --var8; //i64vec2 u64vec2 var297 = --var9; //u64vec2 vec2 var298 = --var10; //vec2 dvec2 var299 = --var11; //dvec2 // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var300 = --var13; //uvec3 i64vec3 var301 = --var14; //i64vec3 u64vec3 var302 = --var15; //u64vec3 vec3 var303 = --var16; //vec3 dvec3 var304 = --var17; //dvec3 // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var305 = --var19; //uvec4 i64vec4 var306 = --var20; //i64vec4 u64vec4 var307 = --var21; //u64vec4 vec4 var308 = --var22; //vec4 dvec4 var309 = --var23; //dvec4 // int8_t ====> int, int64_t, uint, uint64_t, float, double int var310 = --var0; //int int64_t var311 = --var2; //int64_t uint var312 = --var1; //uint uint64_t var313 = --var3; //uint64_t float var314 = --var4; //float double var315 = --var5; //double // int16_t ====> int, int64_t, uint, uint64_t, float, double int var316 = --var0; //int int64_t var317 = --var2; //int64_t uint var318 = --var1; //uint uint64_t var319 = --var3; //uint64_t float var320 = --var4; //float double var321 = --var5; //double // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var322 = --var6; //ivec2 i64vec2 var323 = --var8; //i64vec2 uvec2 var324 = --var7; //uvec2 u64vec2 var325 = --var9; //u64vec2 vec2 var326 = --var10; //vec2 dvec2 var327 = --var11; //dvec2 // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var328 = --var6; //ivec2 i64vec2 var329 = --var8; //i64vec2 uvec2 var330 = --var7; //uvec2 u64vec2 var331 = --var9; //u64vec2 vec2 var332 = --var10; //vec2 dvec2 var333 = --var11; //dvec2 // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var334 = --var12; //ivec3 i64vec3 var335 = --var14; //i64vec3 uvec3 var336 = --var13; //uvec3 u64vec3 var337 = --var15; //u64vec3 vec3 var338 = --var16; //vec3 dvec3 var339 = --var17; //dvec3 // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var340 = --var13; //uvec3 u64vec3 var341 = --var15; //u64vec3 vec3 var342 = --var16; //vec3 dvec3 var343 = --var17; //dvec3 // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var344 = --var18; //ivec4 i64vec4 var345 = --var20; //i64vec4 uvec4 var346 = --var19; //uvec4 u64vec4 var347 = --var21; //u64vec4 vec4 var348 = --var22; //vec4 dvec4 var349 = --var23; //dvec4 // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var350 = --var19; //uvec4 u64vec4 var351 = --var21; //u64vec4 vec4 var352 = --var22; //vec4 dvec4 var353 = --var23; //dvec4 // int64_t ====> uint64_t, double uint64_t var354 = --var3; //uint64_t double var355 = --var5; //double // i64vec2 ====> u64vec2, dvec2 u64vec2 var356 = --var9; //u64vec2 dvec2 var357 = --var11; //dvec2 // i64vec3 ====> u64vec3, dvec3 u64vec3 var358 = --var15; //u64vec3 dvec3 var359 = --var17; //dvec3 // i64vec4 ====> u64vec4, dvec4 u64vec4 var360 = --var21; //u64vec4 dvec4 var361 = --var23; //dvec4 // uint ====> uint64_t, float, double uint64_t var362 = --var3; //uint64_t float var363 = --var4; //float double var364 = --var5; //double // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var365 = --var9; //u64vec2 vec2 var366 = --var10; //vec2 dvec2 var367 = --var11; //dvec2 // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var368 = --var15; //u64vec3 vec3 var369 = --var16; //vec3 dvec3 var370 = --var17; //dvec3 // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var371 = --var21; //u64vec4 vec4 var372 = --var22; //vec4 dvec4 var373 = --var23; //dvec4 // uint8_t ====> uint, uint64_t, float, double uint var374 = --var1; //uint uint64_t var375 = --var3; //uint64_t float var376 = --var4; //float double var377 = --var5; //double // uint16_t ====> uint, uint64_t, float, double uint var378 = --var1; //uint uint64_t var379 = --var3; //uint64_t float var380 = --var4; //float double var381 = --var5; //double // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var382 = --var7; //uvec2 u64vec2 var383 = --var9; //u64vec2 vec2 var384 = --var10; //vec2 dvec2 var385 = --var11; //dvec2 // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var386 = --var7; //uvec2 u64vec2 var387 = --var9; //u64vec2 vec2 var388 = --var10; //vec2 dvec2 var389 = --var11; //dvec2 // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var390 = --var13; //uvec3 u64vec3 var391 = --var15; //u64vec3 vec3 var392 = --var16; //vec3 dvec3 var393 = --var17; //dvec3 // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var394 = --var19; //uvec4 u64vec4 var395 = --var21; //u64vec4 vec4 var396 = --var22; //vec4 dvec4 var397 = --var23; //dvec4 // uint64_t ====> double double var398 = --var5; //double // u64vec2 ====> dvec2 dvec2 var399 = --var11; //dvec2 // u64vec3 ====> dvec3 dvec3 var400 = --var17; //dvec3 // u64vec4 ====> dvec4 dvec4 var401 = --var23; //dvec4 // float ====> double double var402 = --var5; //double // vec2 ====> dvec2 dvec2 var403 = --var11; //dvec2 // vec3 ====> dvec3 dvec3 var404 = --var17; //dvec3 // vec4 ====> dvec4 dvec4 var405 = --var23; //dvec4 // float16_t ====> float, double float var406 = --var4; //float double var407 = --var5; //double // f16vec2 ====> vec2, dvec2 vec2 var408 = --var10; //vec2 dvec2 var409 = --var11; //dvec2 // f16vec3 ====> vec3, dvec3 vec3 var410 = --var16; //vec3 dvec3 var411 = --var17; //dvec3 // f16vec4 ====> vec4, dvec4 vec4 var412 = --var22; //vec4 dvec4 var413 = --var23; //dvec4 } void testConditionExpressions() { int8_t var1 = int8_t(0); int16_t var5 = int16_t(0); int32_t var9 = int32_t(0); int64_t var13 = int64_t(0); float16_t var33 = float16_t(0); float64_t var41 = float64_t(0); double var42 = double(0); bool b = (var1 == int8_t(0)); b = (var5 == int16_t(0)); b = (var9 == int32_t(0)); b = (var13 == int64_t(0)); b = (var33 == float16_t(0)); b = (var41 == float64_t(0)); b = (var42 == double(0)); b = (var5 != int16_t(0)); b = (var9 != int32_t(0)); b = (var13 != int64_t(0)); b = (var33 != float16_t(0)); b = (var41 != float64_t(0)); b = (var42 != double(0)); b = (var5 > int16_t(0)); b = (var9 > int32_t(0)); b = (var13 > int64_t(0)); b = (var33 > float16_t(0)); b = (var41 > float64_t(0)); b = (var42 > double(0)); } // This test case verifies all the function definition conversions as specificed in // NV_gpu_shader5 under "Modify Section 6.1, Function Definitions, p. 63" void func(int64_t a) { } void func(int a) { } void func(uint a) { } void func(uint64_t a) { } void func(float a) { } void func64(double a) { } void func64(int64_t a) { } void func64(uint64_t a) { } void testFunctionDefinition() { int8_t var1 = int8_t(0); int16_t var5 = int16_t(0); uint8_t var2 = uint8_t(0); uint16_t var3 = uint16_t(0); int32_t var9 = int32_t(0); int var10 = int(0); uint var11 = uint(0); int64_t var13 = int64_t(0); float16_t var33 = float16_t(0); float var34 = float(0); /* source types destination types ----------------- ----------------- int8_t, int16_t int, int64_t int int64_t uint8_t, uint16_t uint, uint64_t uint uint64_t float16_t float float double */ func(var1); // should pick func(int a) func(var5); // should pick func(int a) func(var10); //int, should pick func(int64_t a) func(var2); //uint8_t should pick func(uint a) func(var3); //uint16_t should pick func(uint a) func(var33); //float16_t should pick void func(float a) func64(var1); // int8_t, should pick func64(int64_t a) func64(var5); // int16_t, should pick func64(int64_t a) func64(var9); // int32_t, should pick func64(int64_t a) func64(var2); //uint8_t should pick func64(uint64_t a) func64(var3); //uint16_t should pick func64(uint64_t a) func64(var11); //uint should pick func64(uint64_t a) func64(var34); //float should pick func64(double a) } flat in int var; void testBuiltinNVOnly() { // Test builtins defined by NV_gpu_shader5 and not available in ARB_gpu_shader5 int64_t v1 = packInt2x32(ivec2(0)); uint64_t v2 = packUint2x32(uvec2(0)); ivec2 v3 = unpackInt2x32(int64_t(0)); uvec2 v4 = unpackUint2x32(uint64_t(0)); uint v5 = packFloat2x16(f16vec2(0)); f16vec2 v6 = unpackFloat2x16(uint(0)); int64_t v7 = doubleBitsToInt64(double(0)); i64vec2 v8 = doubleBitsToInt64(dvec2(0)); i64vec3 v9 = doubleBitsToInt64(dvec3(0)); i64vec4 v10 = doubleBitsToInt64(dvec4(0)); uint64_t v11 = doubleBitsToUint64(double(0)); u64vec2 v12 = doubleBitsToUint64(dvec2(0)); u64vec3 v13 = doubleBitsToUint64(dvec3(0)); u64vec4 v14 = doubleBitsToUint64(dvec4(0)); double v15 = int64BitsToDouble(int64_t(0)); dvec2 v16 = int64BitsToDouble(i64vec2(0)); dvec3 v17 = int64BitsToDouble(i64vec3(0)); dvec4 v18 = int64BitsToDouble(i64vec4(0)); double v19 = uint64BitsToDouble(uint64_t(0)); dvec2 v20 = uint64BitsToDouble(u64vec2(0)); dvec3 v21 = uint64BitsToDouble(u64vec3(0)); dvec4 v22 = uint64BitsToDouble(u64vec4(0)); bool b1 = anyThreadNV((var == 1)); bool b2 = allThreadsNV((var == 1)); bool b3 = allThreadsEqualNV((var == 1)); } // Modifications to Vector Relational Functions // Introduction of explicitly sized types void testVectorRelationBuiltins() { bvec2 b1 = lessThan(i64vec2(0), i64vec2(1)); bvec3 b2 = lessThan(i64vec3(0), i64vec3(1)); bvec4 b3 = lessThan(i64vec4(0), i64vec4(1)); bvec2 b4 = lessThan(u64vec2(0), u64vec2(1)); bvec3 b5 = lessThan(u64vec3(0), u64vec3(1)); bvec4 b6 = lessThan(u64vec4(0), u64vec4(1)); bvec2 b7 = lessThanEqual(i64vec2(0), i64vec2(1)); bvec3 b8 = lessThanEqual(i64vec3(0), i64vec3(1)); bvec4 b9 = lessThanEqual(i64vec4(0), i64vec4(1)); bvec2 b10 = lessThanEqual(u64vec2(0), u64vec2(1)); bvec3 b11 = lessThanEqual(u64vec3(0), u64vec3(1)); bvec4 b12 = lessThanEqual(u64vec4(0), u64vec4(1)); bvec2 b13 = greaterThan(i64vec2(0), i64vec2(1)); bvec3 b14 = greaterThan(i64vec3(0), i64vec3(1)); bvec4 b15 = greaterThan(i64vec4(0), i64vec4(1)); bvec2 b16 = greaterThan(u64vec2(0), u64vec2(1)); bvec3 b17 = greaterThan(u64vec3(0), u64vec3(1)); bvec4 b18 = greaterThan(u64vec4(0), u64vec4(1)); bvec2 b19 = greaterThanEqual(i64vec2(0), i64vec2(1)); bvec3 b20 = greaterThanEqual(i64vec3(0), i64vec3(1)); bvec4 b21 = greaterThanEqual(i64vec4(0), i64vec4(1)); bvec2 b22 = greaterThanEqual(u64vec2(0), u64vec2(1)); bvec3 b23 = greaterThanEqual(u64vec3(0), u64vec3(1)); bvec4 b24 = greaterThanEqual(u64vec4(0), u64vec4(1)); bvec2 b25 = equal(i64vec2(0), i64vec2(1)); bvec3 b26 = equal(i64vec3(0), i64vec3(1)); bvec4 b27 = equal(i64vec4(0), i64vec4(1)); bvec2 b28 = equal(u64vec2(0), u64vec2(1)); bvec3 b29 = equal(u64vec3(0), u64vec3(1)); bvec4 b30 = equal(u64vec4(0), u64vec4(1)); bvec2 b31 = notEqual(i64vec2(0), i64vec2(1)); bvec3 b32 = notEqual(i64vec3(0), i64vec3(1)); bvec4 b33 = notEqual(i64vec4(0), i64vec4(1)); bvec2 b34 = notEqual(u64vec2(0), u64vec2(1)); bvec3 b35 = notEqual(u64vec3(0), u64vec3(1)); bvec4 b36 = notEqual(u64vec4(0), u64vec4(1)); bvec2 b37 = lessThan(f16vec2(0), f16vec2(1)); bvec3 b38 = lessThan(f16vec3(0), f16vec3(1)); bvec4 b39 = lessThan(f16vec4(0), f16vec4(1)); bvec2 b40 = lessThanEqual(f16vec2(0), f16vec2(1)); bvec3 b41 = lessThanEqual(f16vec3(0), f16vec3(1)); bvec4 b42 = lessThanEqual(f16vec4(0), f16vec4(1)); bvec2 b43 = greaterThan(f16vec2(0), f16vec2(1)); bvec3 b44 = greaterThan(f16vec3(0), f16vec3(1)); bvec4 b45 = greaterThan(f16vec4(0), f16vec4(1)); bvec2 b46 = greaterThanEqual(f16vec2(0), f16vec2(1)); bvec3 b47 = greaterThanEqual(f16vec3(0), f16vec3(1)); bvec4 b48 = greaterThanEqual(f16vec4(0), f16vec4(1)); bvec2 b49 = equal(f16vec2(0), f16vec2(1)); bvec3 b50 = equal(f16vec3(0), f16vec3(1)); bvec4 b51 = equal(f16vec4(0), f16vec4(1)); bvec2 b52 = notEqual(f16vec2(0), f16vec2(1)); bvec3 b53 = notEqual(f16vec3(0), f16vec3(1)); bvec4 b54 = notEqual(f16vec4(0), f16vec4(1)); // Dependency on GL_ARB_gpu_shader_fp64 bvec2 b55 = lessThan(dvec2(0), dvec2(1)); bvec3 b56 = lessThan(dvec3(0), dvec3(1)); bvec4 b57 = lessThan(dvec4(0), dvec4(1)); bvec2 b58 = lessThanEqual(dvec2(0), dvec2(1)); bvec3 b59 = lessThanEqual(dvec3(0), dvec3(1)); bvec4 b60 = lessThanEqual(dvec4(0), dvec4(1)); bvec2 b61 = greaterThan(dvec2(0), dvec2(1)); bvec3 b62 = greaterThan(dvec3(0), dvec3(1)); bvec4 b63 = greaterThan(dvec4(0), dvec4(1)); bvec2 b64 = greaterThanEqual(dvec2(0), dvec2(1)); bvec3 b65 = greaterThanEqual(dvec3(0), dvec3(1)); bvec4 b66 = greaterThanEqual(dvec4(0), dvec4(1)); bvec2 b67 = equal(dvec2(0), dvec2(1)); bvec3 b68 = equal(dvec3(0), dvec3(1)); bvec4 b69 = equal(dvec4(0), dvec4(1)); bvec2 b70 = notEqual(dvec2(0), dvec2(1)); bvec3 b71 = notEqual(dvec3(0), dvec3(1)); bvec4 b72 = notEqual(dvec4(0), dvec4(1)); } // Testing texture builtins with non constant "offset" uniform sampler2DRectShadow tvar0; uniform samplerCubeShadow tvar1; uniform sampler1DArrayShadow tvar2; uniform sampler1DShadow tvar3; uniform sampler2DShadow tvar4; uniform sampler2DArrayShadow tvar5; uniform samplerCubeArrayShadow tvar6; uniform isampler2DArray tvar7; uniform usampler2DArray tvar8; uniform sampler2DArray tvar9; uniform usampler2D tvar10; uniform sampler2D tvar11; uniform isampler2D tvar12; uniform isampler2DRect tvar13; uniform sampler2DRect tvar14; uniform usampler2DRect tvar15; uniform usamplerCubeArray tvar16; uniform isamplerCubeArray tvar17; uniform samplerCubeArray tvar18; uniform usampler3D tvar19; uniform sampler3D tvar20; uniform isampler3D tvar21; uniform sampler1D tvar22; uniform usampler1D tvar23; uniform isampler1D tvar24; uniform isamplerCube tvar25; uniform samplerCube tvar26; uniform usamplerCube tvar27; uniform isampler1DArray tvar28; uniform usampler1DArray tvar29; uniform sampler1DArray tvar30; in float tvar32; flat in int tvar33; in vec2 tvar37; flat in ivec2 tvar38; in vec3 tvar42; flat in ivec3 tvar43; in vec4 tvar81; void main() { vec4 tvar31 =textureOffset( tvar22, tvar32, tvar33, tvar32); ivec4 tvar34 =textureOffset( tvar24, tvar32, tvar33, tvar32); uvec4 tvar35 =textureOffset( tvar23, tvar32, tvar33, tvar32); vec4 tvar36 =textureOffset( tvar11, tvar37, tvar38, tvar32); ivec4 tvar39 =textureOffset( tvar12, tvar37, tvar38, tvar32); uvec4 tvar40 =textureOffset( tvar10, tvar37, tvar38, tvar32); vec4 tvar41 =textureOffset( tvar20, tvar42, tvar43, tvar32); ivec4 tvar44 =textureOffset( tvar21, tvar42, tvar43, tvar32); uvec4 tvar45 =textureOffset( tvar19, tvar42, tvar43, tvar32); vec4 tvar46 =textureOffset( tvar14, tvar37, tvar38); ivec4 tvar47 =textureOffset( tvar13, tvar37, tvar38); uvec4 tvar48 =textureOffset( tvar15, tvar37, tvar38); float tvar49 =textureOffset( tvar0, tvar42, tvar38); float tvar50 =textureOffset( tvar3, tvar42, tvar33, tvar32); float tvar51 =textureOffset( tvar4, tvar42, tvar38, tvar32); vec4 tvar52 =textureOffset( tvar30, tvar37, tvar33, tvar32); ivec4 tvar53 =textureOffset( tvar28, tvar37, tvar33, tvar32); uvec4 tvar54 =textureOffset( tvar29, tvar37, tvar33, tvar32); vec4 tvar55 =textureOffset( tvar9, tvar42, tvar38, tvar32); ivec4 tvar56 =textureOffset( tvar7, tvar42, tvar38, tvar32); uvec4 tvar57 =textureOffset( tvar8, tvar42, tvar38, tvar32); float tvar58 =textureOffset( tvar2, tvar42, tvar33, tvar32); vec4 tvar59 =texelFetchOffset( tvar22, tvar33, tvar33, tvar33); ivec4 tvar60 =texelFetchOffset( tvar24, tvar33, tvar33, tvar33); uvec4 tvar61 =texelFetchOffset( tvar23, tvar33, tvar33, tvar33); vec4 tvar62 =texelFetchOffset( tvar11, tvar38, tvar33, tvar38); ivec4 tvar63 =texelFetchOffset( tvar12, tvar38, tvar33, tvar38); uvec4 tvar64 =texelFetchOffset( tvar10, tvar38, tvar33, tvar38); vec4 tvar65 =texelFetchOffset( tvar20, tvar43, tvar33, tvar43); ivec4 tvar66 =texelFetchOffset( tvar21, tvar43, tvar33, tvar43); uvec4 tvar67 =texelFetchOffset( tvar19, tvar43, tvar33, tvar43); vec4 tvar68 =texelFetchOffset( tvar14, tvar38, tvar38); ivec4 tvar69 =texelFetchOffset( tvar13, tvar38, tvar38); uvec4 tvar70 =texelFetchOffset( tvar15, tvar38, tvar38); vec4 tvar71 =texelFetchOffset( tvar30, tvar38, tvar33, tvar33); ivec4 tvar72 =texelFetchOffset( tvar28, tvar38, tvar33, tvar33); uvec4 tvar73 =texelFetchOffset( tvar29, tvar38, tvar33, tvar33); vec4 tvar74 =texelFetchOffset( tvar9, tvar43, tvar33, tvar38); ivec4 tvar75 =texelFetchOffset( tvar7, tvar43, tvar33, tvar38); uvec4 tvar76 =texelFetchOffset( tvar8, tvar43, tvar33, tvar38); vec4 tvar77 =textureProjOffset( tvar22, tvar37, tvar33, tvar32); ivec4 tvar78 =textureProjOffset( tvar24, tvar37, tvar33, tvar32); uvec4 tvar79 =textureProjOffset( tvar23, tvar37, tvar33, tvar32); vec4 tvar80 =textureProjOffset( tvar22, tvar81, tvar33, tvar32); ivec4 tvar82 =textureProjOffset( tvar24, tvar81, tvar33, tvar32); uvec4 tvar83 =textureProjOffset( tvar23, tvar81, tvar33, tvar32); vec4 tvar84 =textureProjOffset( tvar11, tvar42, tvar38, tvar32); ivec4 tvar85 =textureProjOffset( tvar12, tvar42, tvar38, tvar32); uvec4 tvar86 =textureProjOffset( tvar10, tvar42, tvar38, tvar32); vec4 tvar87 =textureProjOffset( tvar11, tvar81, tvar38, tvar32); ivec4 tvar88 =textureProjOffset( tvar12, tvar81, tvar38, tvar32); uvec4 tvar89 =textureProjOffset( tvar10, tvar81, tvar38, tvar32); vec4 tvar90 =textureProjOffset( tvar20, tvar81, tvar43, tvar32); ivec4 tvar91 =textureProjOffset( tvar21, tvar81, tvar43, tvar32); uvec4 tvar92 =textureProjOffset( tvar19, tvar81, tvar43, tvar32); vec4 tvar93 =textureProjOffset( tvar14, tvar42, tvar38); ivec4 tvar94 =textureProjOffset( tvar13, tvar42, tvar38); uvec4 tvar95 =textureProjOffset( tvar15, tvar42, tvar38); vec4 tvar96 =textureProjOffset( tvar14, tvar81, tvar38); ivec4 tvar97 =textureProjOffset( tvar13, tvar81, tvar38); uvec4 tvar98 =textureProjOffset( tvar15, tvar81, tvar38); float tvar99 =textureProjOffset( tvar0, tvar81, tvar38); float tvar100 =textureProjOffset( tvar3, tvar81, tvar33, tvar32); float tvar101 =textureProjOffset( tvar4, tvar81, tvar38, tvar32); vec4 tvar102 =textureLodOffset( tvar22, tvar32, tvar32, tvar33); ivec4 tvar103 =textureLodOffset( tvar24, tvar32, tvar32, tvar33); uvec4 tvar104 =textureLodOffset( tvar23, tvar32, tvar32, tvar33); vec4 tvar105 =textureLodOffset( tvar11, tvar37, tvar32, tvar38); ivec4 tvar106 =textureLodOffset( tvar12, tvar37, tvar32, tvar38); uvec4 tvar107 =textureLodOffset( tvar10, tvar37, tvar32, tvar38); vec4 tvar108 =textureLodOffset( tvar20, tvar42, tvar32, tvar43); ivec4 tvar109 =textureLodOffset( tvar21, tvar42, tvar32, tvar43); uvec4 tvar110 =textureLodOffset( tvar19, tvar42, tvar32, tvar43); float tvar111 =textureLodOffset( tvar3, tvar42, tvar32, tvar33); float tvar112 =textureLodOffset( tvar4, tvar42, tvar32, tvar38); vec4 tvar113 =textureLodOffset( tvar30, tvar37, tvar32, tvar33); ivec4 tvar114 =textureLodOffset( tvar28, tvar37, tvar32, tvar33); uvec4 tvar115 =textureLodOffset( tvar29, tvar37, tvar32, tvar33); vec4 tvar116 =textureLodOffset( tvar9, tvar42, tvar32, tvar38); ivec4 tvar117 =textureLodOffset( tvar7, tvar42, tvar32, tvar38); uvec4 tvar118 =textureLodOffset( tvar8, tvar42, tvar32, tvar38); float tvar119 =textureLodOffset( tvar2, tvar42, tvar32, tvar33); vec4 tvar120 =textureProjLodOffset( tvar22, tvar37, tvar32, tvar33); ivec4 tvar121 =textureProjLodOffset( tvar24, tvar37, tvar32, tvar33); uvec4 tvar122 =textureProjLodOffset( tvar23, tvar37, tvar32, tvar33); vec4 tvar123 =textureProjLodOffset( tvar22, tvar81, tvar32, tvar33); ivec4 tvar124 =textureProjLodOffset( tvar24, tvar81, tvar32, tvar33); uvec4 tvar125 =textureProjLodOffset( tvar23, tvar81, tvar32, tvar33); vec4 tvar126 =textureProjLodOffset( tvar11, tvar42, tvar32, tvar38); ivec4 tvar127 =textureProjLodOffset( tvar12, tvar42, tvar32, tvar38); uvec4 tvar128 =textureProjLodOffset( tvar10, tvar42, tvar32, tvar38); vec4 tvar129 =textureProjLodOffset( tvar11, tvar81, tvar32, tvar38); ivec4 tvar130 =textureProjLodOffset( tvar12, tvar81, tvar32, tvar38); uvec4 tvar131 =textureProjLodOffset( tvar10, tvar81, tvar32, tvar38); vec4 tvar132 =textureProjLodOffset( tvar20, tvar81, tvar32, tvar43); ivec4 tvar133 =textureProjLodOffset( tvar21, tvar81, tvar32, tvar43); uvec4 tvar134 =textureProjLodOffset( tvar19, tvar81, tvar32, tvar43); float tvar135 =textureProjLodOffset( tvar3, tvar81, tvar32, tvar33); float tvar136 =textureProjLodOffset( tvar4, tvar81, tvar32, tvar38); } glslang-16.0.0/Test/glsl.nvgpushader5.geom000066400000000000000000000026621506534232700204050ustar00rootroot00000000000000#version 150 #extension GL_NV_gpu_shader5 : enable #extension GL_ARB_gpu_shader_fp64 : enable // Testing storage interpolation qualifiers sample in/ sample out sample in vec4 colorSampIn[3]; sample out vec4 colorSampOut; // Testing geometry layout qualifiers // input qualifier: invocations // output qualifier: stream layout(triangles, invocations=6) in; layout(points, stream=0) out; in vec4 color[3]; out vec3 Ocolor; layout(stream=1) out; // default is now stream 1 // Test explicitly sized input variables in int8_t var1[3]; in int16_t var5[3]; in int32_t var9[3]; in int64_t var13[3]; in float16_t var33[3]; in float64_t var41[3]; in double var42[3]; out int8_t var11; out int16_t var51; out int32_t var91; out int64_t var131; out float16_t var331; out float64_t var411; out double var421; // This test case verifies builtins enabled for geometry shader by NV_gpu_shader5 void testGeomBuiltins() { EmitStreamVertex(1); // Geometry-only EndStreamPrimitive(0); // Geometry-only EmitVertex(); // Geometry-only EndPrimitive(); // Geometry-only int i = gl_InvocationID; // Note: "patch" feature is not enabled as it's not used, below builtins are // related to patch int j = gl_PatchVerticesIn; float k = gl_TessLevelOuter[3]; k = gl_TessLevelInner[1]; } void main() { }glslang-16.0.0/Test/glsl.nvgpushader5.vert000066400000000000000000000011721506534232700204310ustar00rootroot00000000000000#version 150 #extension GL_NV_gpu_shader5 : enable #extension GL_ARB_gpu_shader_fp64 : enable // Testing storage qualifiers sample in/ sample out in vec4 colorSampIn; // interpolation qualifier are not allowed on input vertex data sample out vec4 colorSampOut; // Test explicitly sized input variables in int8_t var1; in int16_t var5; in int32_t var9; in int64_t var13; in float16_t var33; in float64_t var41; in double var42; out int8_t var11; out int16_t var51; out int32_t var91; out int64_t var131; out float16_t var331; out float64_t var411; out double var421; void main() { }glslang-16.0.0/Test/glsl.versionOverride.comp000066400000000000000000000002431506534232700211570ustar00rootroot00000000000000/* glslangValidator.exe --glsl-version 460 -V -S comp -o glsl.versionOverride.comp.out glsl.versionOverride.comp */ #version 110 void main() { } glslang-16.0.0/Test/glsl.versionOverride.frag000066400000000000000000000002401506534232700211350ustar00rootroot00000000000000/* glslangValidator.exe --glsl-version 420 -V -S frag -o glsl.versionOverride.frag.out glsl.versionOverride.frag */ #version 110 void main() { } glslang-16.0.0/Test/glsl.versionOverride.geom000066400000000000000000000004351506534232700211530ustar00rootroot00000000000000/* glslang.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(); } glslang-16.0.0/Test/glsl.versionOverride.tesc000066400000000000000000000002671506534232700211650ustar00rootroot00000000000000/* glslang.exe --glsl-version 440 -V -S tesc -o glsl.versionOverride.tesc.out glsl.versionOverride.tesc */ #version 110 layout(vertices = 3) out; void main() { } glslang-16.0.0/Test/glsl.versionOverride.tese000066400000000000000000000002631506534232700211630ustar00rootroot00000000000000/* glslang.exe --glsl-version 450 -V -S tese -o glsl.versionOverride.tese.out glsl.versionOverride.tese */ #version 110 layout(triangles) in; void main() { } glslang-16.0.0/Test/glsl.versionOverride.vert000066400000000000000000000002401506534232700211760ustar00rootroot00000000000000/* glslangValidator.exe --glsl-version 410 -V -S vert -o glsl.versionOverride.vert.out glsl.versionOverride.vert */ #version 110 void main() { } glslang-16.0.0/Test/glslangValidator000077500000000000000000000000641506534232700173760ustar00rootroot00000000000000#!/usr/bin/env bash ../build/install/bin/glslang $* glslang-16.0.0/Test/glspv.esversion.vert000066400000000000000000000000461506534232700202240ustar00rootroot00000000000000#version 310 es void main() { } glslang-16.0.0/Test/glspv.frag000066400000000000000000000012121506534232700161430ustar00rootroot00000000000000#version 450 #ifdef GL_SPIRV #error GL_SPIRV is set ( correct, not an error ) #if GL_SPIRV == 100 #error GL_SPIR is 100 #endif #endif void main() { } uniform float f; // ERROR, no location layout(location = 2) uniform float g; uniform sampler2D s1; // ERROR, no binding layout(location = 3) uniform sampler2D s2; // ERROR, no binding void noise() { noise1(vec4(1)); noise2(4.0); noise3(vec2(3)); noise4(1); } uniform atomic_uint atomic; // ERROR, no binding layout(input_attachment_index = 1) uniform subpassInput sub; // ERROR, no inputs glslang-16.0.0/Test/glspv.version.frag000066400000000000000000000000611506534232700176300ustar00rootroot00000000000000#version 330 compatibility void main() { } glslang-16.0.0/Test/glspv.version.vert000066400000000000000000000000431506534232700176710ustar00rootroot00000000000000#version 150 void main() { } glslang-16.0.0/Test/glspv.vert000066400000000000000000000013211506534232700162050ustar00rootroot00000000000000#version 450 layout(push_constant) uniform Material { int a; } mat; // ERROR, can't use push_constant layout(set = 0, binding = 0, std140) uniform Bt1 { int a; } bt1; layout(set = 1, binding = 0, std140) uniform Bt2 { int a; } bt2; // ERROR, set has to be 0 layout(shared) uniform Bt3 { int a; } bt3; // ERROR, no shared, no binding layout(packed) uniform Bt4 { int a; } bt4; // ERROR, no shared, no binding void main() { gl_VertexIndex; // ERROR, not preset gl_InstanceIndex; // ERROR, not present gl_VertexID; gl_InstanceID; gl_DepthRangeParameters; // ERROR, not present } uniform sampler s; // ERROR, no sampler glslang-16.0.0/Test/hlsl.-D-U.frag000066400000000000000000000005351506534232700164220ustar00rootroot00000000000000 #define IN_SHADER static float4 color; void main() { #if FOO==200 color = 1.0; #else #error expected FOO 200 #endif #ifdef FOO color -= 5.0; #else #error expected FOO 200 #endif #ifdef IN_SHADER color++; #else #error IN_SHADER was undef #endif #ifdef UNDEFED #error UNDEFED defined #else color *= 3.0; #endif } glslang-16.0.0/Test/hlsl.PointSize.geom000066400000000000000000000003471506534232700177150ustar00rootroot00000000000000struct S { [[vk::builtin("PointSize")]] float ps : PSIZE; }; [maxvertexcount(4)] void main([[vk::builtin("PointSize")]] triangle in uint ps[3], inout LineStream OutputStream) { S s; OutputStream.Append(s); } glslang-16.0.0/Test/hlsl.PointSize.vert000066400000000000000000000001011506534232700177320ustar00rootroot00000000000000[[vk::builtin("PointSize")]] float main() { return 2.3; }glslang-16.0.0/Test/hlsl.aliasOpaque.frag000066400000000000000000000007041506534232700202220ustar00rootroot00000000000000struct OS { SamplerState ss; float a; Texture2D tex; }; SamplerState gss; SamplerState gss2; Texture2D gtex; float4 osCall(OS s) { return s.a * s.tex.Sample(s.ss, float2(0.2, 0.3)); } float4 main() : SV_TARGET0 { OS os; os.ss = gss2; os.ss = gss; os.tex = gtex; os.a = 3.0; // this should give an error //SamplerState localss; //localss = gss2; return osCall(os); } glslang-16.0.0/Test/hlsl.amend.frag000066400000000000000000000002611506534232700170400ustar00rootroot00000000000000float4 a; float b; static float4 m = a * b; void f1() { a * b; } float3 c; void f2() { a.x + b + c.x; } void f3() { c; } int d; void f4() { d * a; } int e;glslang-16.0.0/Test/hlsl.array.flatten.frag000066400000000000000000000020301506534232700205220ustar00rootroot00000000000000 // uniform Texture1D g_tex3[3][2]; // TODO: legal in HLSL, but we don't handle it yet. uniform Texture1D g_tex[3]; uniform Texture1D g_tex_explicit[3] : register(t1); SamplerState g_samp[3]; SamplerState g_samp_explicit[3] : register(s5); uniform float3x3 g_mats[4]; uniform float3x3 g_mats_explicit[4] : register(b10); uniform float g_floats[4]; // uniform float g_floats[4] = { 10, 11, 12, 13 }; // TODO: ... add when initializer lists can be flattened. float4 TestFn1() { return g_tex[1].Sample(g_samp[1], 0.2); } float4 TestFn2(Texture1D l_tex[3], SamplerState l_samp[3]) { return l_tex[2].Sample(l_samp[2], 0.2); } static int not_flattened_a[5] = { 1, 2, 3, 4, 5 }; struct PS_OUTPUT { float4 color : SV_Target0; }; void main(out PS_OUTPUT ps_output) { // test flattening for local assignment initialization SamplerState local_sampler_array[3] = g_samp; Texture1D local_texture_array[3] = g_tex; float local_float_array[4] = g_floats; ps_output.color = TestFn1() + TestFn2(g_tex, g_samp); } glslang-16.0.0/Test/hlsl.array.frag000066400000000000000000000010301506534232700170650ustar00rootroot00000000000000float4 a[4]; struct { float4 m[7]; } s[11]; static float4 C = float4(1,2,3,4); float4 a1[1] = { float4(1,2,3,4) }; float4 a2[2] = { float4(1,2,3,4), float4(5,2,3,4), }; const float4 c1[1] = { float4(1,2,3,4) }; static const float4 c2[2] = { C, float4(1,2,3,4), }; float4 PixelShaderFunction(int i : sem1, float4 input[3] : sem2) : SV_TARGET0 { float4 b[10] = { C, C, C, C, C, C, C, C, C, C }; float4 tmp = C + a1[0] + c1[0] + a2[i] + c2[i]; return a[1] + a[i] + input[2] + input[i] + b[5] + b[i] + s[i].m[i] + tmp; } glslang-16.0.0/Test/hlsl.array.implicit-size.frag000066400000000000000000000014171506534232700216570ustar00rootroot00000000000000 // array size from initializer static float g_array [ ] = { 1, 2, 3, 4, 5 }; // Unused: array size from initializer static float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 }; // Test initializer sizing for arrayed structs static struct mystruct { int i; float f; } g_mystruct[] = { { 1, 2.0 }, { 3, 4.0 }, }; struct PS_OUTPUT { float4 color : SV_Target0; }; // INVALID: implicit size requires an initializer expression. // uniform float bad[]; // INVALID: function parameters cannot be implicitly sized // void BadFunction(int a[]) { } void main(out PS_OUTPUT ps_output) { // local array sized from initializers float l_array[] = { 1, 2, 3 }; int idx; ps_output.color = g_array[0] + g_array[4] + l_array[1] + g_mystruct[0].f + g_array[idx]; } glslang-16.0.0/Test/hlsl.array.multidim.frag000066400000000000000000000005301506534232700207140ustar00rootroot00000000000000 float float_array[5][4][3]; struct PS_OUTPUT { float4 Color : SV_Target0; }; PS_OUTPUT main() { float4 float4_array_1[2][3]; float4 float4_array_2[5][3]; float4_array_1[1][2] = float_array[2][3][1]; float4_array_2[1] = float4_array_1[0]; PS_OUTPUT psout; psout.Color = float4_array_1[1][2]; return psout; } glslang-16.0.0/Test/hlsl.assoc.frag000066400000000000000000000002701506534232700170640ustar00rootroot00000000000000float4 PixelShaderFunction( float4 a1, float4 a2, float4 a3, float4 a4, float4 a5 ) : COLOR0 { a1 = a2 = a3 = a4 = a5; return a1 + a2 + a3 + a4 + a5; } glslang-16.0.0/Test/hlsl.attribute.expression.comp000066400000000000000000000002571506534232700222010ustar00rootroot00000000000000 uniform int bound; #define FOO 3 #define BAR 2 [numthreads(2+2, 2*3, (1+FOO)*BAR)] void main() { [unroll(5*2 + 1) ] for (int x=0; x buffer1; [[vk::binding(3, 2)]] StructuredBuffer buffer3; [[vk::input_attachment_index(4)]] Texture2D attach; [[vk::constant_id(13)]] const int ci = 11; [[vk::push_constant]] cbuffer pcBuf { int a; }; [[vk::location(7)]] float4 main([[vk::location(8)]] float4 input: A) : B { return input + attach.Load(float2(0.5));// * a; } glslang-16.0.0/Test/hlsl.attributeGlobalBuffer.frag000066400000000000000000000001651506534232700222350ustar00rootroot00000000000000[[vk::global_cbuffer_binding(5, 2)]] float4 u1; float4 u2; float4 main() : SV_Target0 { return u1 + u2; }glslang-16.0.0/Test/hlsl.automap.frag000066400000000000000000000020001506534232700174130ustar00rootroot00000000000000// Test register class offsets for different resource types SamplerState s1 : register(s1); SamplerComparisonState s2 : register(s2); Texture1D t1 : register(t1); Texture2D t2 : register(t2); Texture3D t3 : register(t3); StructuredBuffer t4 : register(t4); ByteAddressBuffer t5 : register(t5); Buffer t6 : register(t6); RWTexture1D u1 : register(u1); RWTexture2D u2 : register(u2); RWTexture3D u3 : register(u3); RWBuffer u4 : register(u4); RWByteAddressBuffer u5 : register(u5); RWStructuredBuffer u6 : register(u6); AppendStructuredBuffer u7 : register(u7); ConsumeStructuredBuffer u8 : register(u8); cbuffer cb : register(b1) { int cb1; }; tbuffer tb : register(t7) { int tb1; }; float4 main() : SV_Target0 { t1; t2; t3; t4[0]; t5.Load(0); t6; s1; s2; u1; u2; u3; u4[0]; u5.Load(0); u6[0]; u7; u8; cb1; tb1; return 0; } glslang-16.0.0/Test/hlsl.autosampledtextures.frag000066400000000000000000000005421506534232700221000ustar00rootroot00000000000000Texture2D g_tColor; SamplerState g_sAniso; struct PS_INPUT { float2 vTextureCoords : TEXCOORD2 ; } ; struct PS_OUTPUT { float4 vColor : SV_Target0 ; } ; PS_OUTPUT MainPs ( PS_INPUT i ) { PS_OUTPUT ps_output ; ps_output . vColor = g_tColor . Sample ( g_sAniso , i . vTextureCoords . xy ) ; return ps_output ; }glslang-16.0.0/Test/hlsl.basic.comp000066400000000000000000000001721506534232700170550ustar00rootroot00000000000000groupshared float4 a[100]; void main(int dti : SV_DispatchThreadID, int gti : SV_GroupThreadID) { dti - gti; } glslang-16.0.0/Test/hlsl.basic.geom000066400000000000000000000011401506534232700170420ustar00rootroot00000000000000struct PSInput { float myfloat : SOME_SEMANTIC; int something : ANOTHER_SEMANTIC; }; struct nametest { int Append; // these are valid names even though they are also method names. int RestartStrip; // ... }; [maxvertexcount(4)] void main(triangle in uint VertexID[3] : VertexID, triangle uint test[3] : FOO, inout LineStream OutputStream) { PSInput Vert; Vert.myfloat = test[0] + test[1] + test[2]; Vert.something = VertexID[0]; OutputStream.Append(Vert); OutputStream.Append(Vert); OutputStream.RestartStrip(); } glslang-16.0.0/Test/hlsl.boolConv.vert000066400000000000000000000003741506534232700176030ustar00rootroot00000000000000static bool a, b = true; float4 main() : SV_Position { int r = 0; r += a + b; r += a - b; r += a * b; r += a / b; r += a % b; r += a & b; r += a | b; r += a ^ b; r += a << b; r += a >> b; return r; } glslang-16.0.0/Test/hlsl.buffer-offsets.comp000066400000000000000000000003621506534232700207150ustar00rootroot00000000000000// See https://github.com/KhronosGroup/glslang/issues/3668 struct GfxIterationData { float mIntegrationTrafo[24]; float mWind[3]; uint mIsTurning; }; StructuredBuffer bIterData : register(t2); void main() { } glslang-16.0.0/Test/hlsl.buffer.frag000066400000000000000000000020251506534232700172250ustar00rootroot00000000000000cbuffer buf1 { float4 v1; }; // extraneous ; tbuffer buf2 { float4 v2; }; // extraneous ; cbuffer cbufName { float4 v3 : packoffset(c0); int i3 : packoffset(c1.y); } tbuffer tbufName : register(t8) { float4 v4 : packoffset(c1); int i4 : packoffset(c3); float f1 : packoffset(c3.w); float f3 : packoffset(c4.x); float f4 : packoffset(c4.y); float f5 : packoffset(c4.z); float f6 : packoffset(c); float f7 : packoffset(c8); float3x4 m1 : packoffset(c7); row_major float3x4 m2 : packoffset(c11); column_major float3x4 m3 : packoffset(c15); float3x4 m4 : packoffset(c19); } float foo() // float looks like identifier, but can't be part of tbuffer { return 1.0; } struct id { float4 a; }; cbuffer cbufName2 { float4 v24; } id PixelShaderFunction(float4 input : SV_POSITION) : SV_TARGET0 // id looks like id for cbuffer name, but can't be { id ret; ret.a = v24 + (input + v1 + v2 + v3 + v4) * foo(); return ret; } glslang-16.0.0/Test/hlsl.buffer_ref_parameter.comp000066400000000000000000000006311506534232700221410ustar00rootroot00000000000000[[vk::binding(0, 0)]] ByteAddressBuffer buffer_position_ms; [[vk::binding(1, 0)]] RWByteAddressBuffer r; float3 pull_position(ByteAddressBuffer buffer_position, uint vertex_id) { return asfloat(buffer_position.Load3(vertex_id * 3 * 4)); } [numthreads(64, 1, 1)] void main(uint gi : SV_GroupIndex) { float3 position_ms = pull_position(buffer_position_ms, gi); r.Store3(0, asuint(position_ms)); }glslang-16.0.0/Test/hlsl.calculatelod.dx10.frag000066400000000000000000000026401506534232700211660ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // LOD queries do not pass array level in coordinate. float txval10 = g_tTex1df4a . CalculateLevelOfDetail(g_sSamp, 0.1); float txval11 = g_tTex1di4a . CalculateLevelOfDetail(g_sSamp, 0.2); float txval12 = g_tTex1du4a . CalculateLevelOfDetail(g_sSamp, 0.3); float txval20 = g_tTex2df4a . CalculateLevelOfDetail(g_sSamp, float2(0.1, 0.2)); float txval21 = g_tTex2di4a . CalculateLevelOfDetail(g_sSamp, float2(0.3, 0.4)); float txval22 = g_tTex2du4a . CalculateLevelOfDetail(g_sSamp, float2(0.5, 0.6)); float txval40 = g_tTexcdf4a . CalculateLevelOfDetail(g_sSamp, float3(0.1, 0.2, 0.3)); float txval41 = g_tTexcdi4a . CalculateLevelOfDetail(g_sSamp, float3(0.4, 0.5, 0.6)); float txval42 = g_tTexcdu4a . CalculateLevelOfDetail(g_sSamp, float3(0.7, 0.8, 0.9)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.calculatelodunclamped.dx10.frag000066400000000000000000000027611506534232700230630ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // LOD queries do not pass array level in coordinate. float txval10 = g_tTex1df4a . CalculateLevelOfDetailUnclamped(g_sSamp, 0.1); float txval11 = g_tTex1di4a . CalculateLevelOfDetailUnclamped(g_sSamp, 0.2); float txval12 = g_tTex1du4a . CalculateLevelOfDetailUnclamped(g_sSamp, 0.3); float txval20 = g_tTex2df4a . CalculateLevelOfDetailUnclamped(g_sSamp, float2(0.1, 0.2)); float txval21 = g_tTex2di4a . CalculateLevelOfDetailUnclamped(g_sSamp, float2(0.3, 0.4)); float txval22 = g_tTex2du4a . CalculateLevelOfDetailUnclamped(g_sSamp, float2(0.5, 0.6)); float txval40 = g_tTexcdf4a . CalculateLevelOfDetailUnclamped(g_sSamp, float3(0.1, 0.2, 0.3)); float txval41 = g_tTexcdi4a . CalculateLevelOfDetailUnclamped(g_sSamp, float3(0.4, 0.5, 0.6)); float txval42 = g_tTexcdu4a . CalculateLevelOfDetailUnclamped(g_sSamp, float3(0.7, 0.8, 0.9)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.cast.frag000066400000000000000000000001561506534232700167110ustar00rootroot00000000000000float4 PixelShaderFunction(float4 input) : COLOR0 { return (float4)input + (int4)input + (float4)1.198; } glslang-16.0.0/Test/hlsl.cbuffer-identifier.vert000066400000000000000000000012271506534232700215540ustar00rootroot00000000000000 cbuffer ConstantBuffer : register( b0 ) { matrix World; matrix View; matrix Projection; }; struct VS_INPUT { float4 Pos : POSITION; float3 Norm : NORMAL; }; struct PS_INPUT { float4 Pos : SV_POSITION; float3 Norm : TEXCOORD0; }; PS_INPUT main( VS_INPUT input ) { int ConstantBuffer = 42; // test ConstantBuffer as an identifier PS_INPUT output = (PS_INPUT)0; output.Pos = mul( input.Pos, World ); output.Pos = mul( output.Pos, View ); output.Pos = mul( output.Pos, Projection ); output.Norm = mul( input.Norm, World ); // Work when output.Norm = mul( input.Norm, (float3x3)World ); return output; } glslang-16.0.0/Test/hlsl.cbuffer-offsets.comp000066400000000000000000000012571506534232700210640ustar00rootroot00000000000000// Correct offsets obtained from "HLSL Constant Buffer Visualizer" // https://maraneshi.github.io/HLSL-ConstantBufferLayoutVisualizer/ cbuffer CB { float f1; float3 f3a3[3]; float f2; float f3; float1x1 m11; float1x2 m12; float2x1 m21; float2x2 m22; float3x3 m33; float f4; float3x4 m34; float f5; float4x3 m43; float f6; row_major float1x1 rm11; row_major float1x2 rm12; row_major float2x1 rm21; row_major float2x2 rm22; row_major float3x3 rm33; float f7; row_major float3x4 rm34; float f8; row_major float4x3 rm43; float f9; float f1a3[3]; float f10; }; void main() { } glslang-16.0.0/Test/hlsl.charLit.vert000066400000000000000000000004331506534232700174040ustar00rootroot00000000000000float4 main() : SV_Position { uint a1 = 'A'; int a2 = '0'; int a3 = '\a'; a3 += '\b'; a3 += '\t'; a3 += '\n'; a3 += '\v'; a3 += '\f'; a3 += '\r'; int a10 = '\c'; return a1 + a2 + a3 + a10; } glslang-16.0.0/Test/hlsl.clip.frag000066400000000000000000000002011506534232700166750ustar00rootroot00000000000000 float GetEntitySelectClip() { return 1.0f; } float4 main() : SV_TARGET { clip(GetEntitySelectClip()); return 0; } glslang-16.0.0/Test/hlsl.clipdistance-1.frag000066400000000000000000000002631506534232700205560ustar00rootroot00000000000000float4 main(in float4 pos : SV_Position, in float clip : SV_ClipDistance, in float cull : SV_CullDistance) : SV_Target0 { return pos + clip + cull; } glslang-16.0.0/Test/hlsl.clipdistance-1.geom000066400000000000000000000007151506534232700205700ustar00rootroot00000000000000struct S { float4 pos : SV_Position; float2 clip : SV_ClipDistance0; }; [maxvertexcount(3)] void main(triangle in float4 pos[3] : SV_Position, triangle in uint VertexID[3] : VertexID, inout LineStream OutputStream, triangle in float4 clip[3] : SV_ClipDistance) // externally: an array 3 of array 4 (not vec4!) of float. { S s; s.pos = pos[0]; s.clip = clip[0].xy; OutputStream.Append(s); } glslang-16.0.0/Test/hlsl.clipdistance-1.vert000066400000000000000000000003371506534232700206210ustar00rootroot00000000000000void main(out float4 pos : SV_Position, out float clip : SV_ClipDistance, // scalar float out float cull : SV_CullDistance) // scalar float { pos = 1.0f.xxxx; clip = 0.5f; cull = 0.51f; } glslang-16.0.0/Test/hlsl.clipdistance-2.frag000066400000000000000000000004101506534232700205510ustar00rootroot00000000000000float4 main(in float4 pos : SV_Position, in float2 clip[2] : SV_ClipDistance, // array of vector float in float2 cull[2] : SV_CullDistance) : SV_Target0 // array of vector float { return pos + clip[0][0] + cull[0][0]; } glslang-16.0.0/Test/hlsl.clipdistance-2.geom000066400000000000000000000007401506534232700205670ustar00rootroot00000000000000struct S { float4 pos : SV_Position; float2 clip[2] : SV_ClipDistance0; }; [maxvertexcount(3)] void main(triangle in float4 pos[3] : SV_Position, triangle in uint VertexID[3] : VertexID, inout LineStream OutputStream, triangle in float2 clip[3][2] : SV_ClipDistance) // externally: an array 3 of array 4 of float. { S s; s.pos = pos[0]; s.clip[0] = clip[0][0]; s.clip[1] = clip[0][1]; OutputStream.Append(s); } glslang-16.0.0/Test/hlsl.clipdistance-2.vert000066400000000000000000000006161506534232700206220ustar00rootroot00000000000000void main(out float4 pos : SV_Position, out float2 clip[2] : SV_ClipDistance, // array of vector float out float2 cull[2] : SV_CullDistance) // array of vector float { pos = 1.0f.xxxx; clip[0].x = 0.5f; clip[0].y = 0.6f; clip[1].x = 0.7f; clip[1].y = 0.8f; cull[0].x = 0.525f; cull[0].y = 0.625f; cull[1].x = 0.725f; cull[1].y = 0.825f; } glslang-16.0.0/Test/hlsl.clipdistance-3.frag000066400000000000000000000003751506534232700205640ustar00rootroot00000000000000float4 main(in float4 pos : SV_Position, in float clip[2] : SV_ClipDistance, // array of scalar float in float cull[2] : SV_CullDistance) : SV_Target0 // array of scalar float { return pos + clip[0] + cull[0]; } glslang-16.0.0/Test/hlsl.clipdistance-3.geom000066400000000000000000000011101506534232700205600ustar00rootroot00000000000000struct S { float4 pos : SV_Position; float2 clip0 : SV_ClipDistance0; // clip0 and clip1 form an array of float[4] externally. float2 clip1 : SV_ClipDistance1; }; [maxvertexcount(3)] void main(triangle in float4 pos[3] : SV_Position, triangle in uint VertexID[3] : VertexID, inout LineStream OutputStream, triangle in float4 clip[3] : SV_ClipDistance) // externally: an array 3 of array 4 (not vec4!) of float. { S s; s.pos = pos[0]; s.clip0 = clip[0].xy; s.clip1 = clip[0].zw; OutputStream.Append(s); } glslang-16.0.0/Test/hlsl.clipdistance-3.vert000066400000000000000000000004501506534232700206170ustar00rootroot00000000000000void main(out float4 pos : SV_Position, out float clip[2] : SV_ClipDistance, // array of scalar float out float cull[2] : SV_CullDistance) // array of scalar float { pos = 1.0f.xxxx; clip[0] = 0.5f; clip[1] = 0.6f; cull[0] = 0.525f; cull[1] = 0.625f; } glslang-16.0.0/Test/hlsl.clipdistance-4.frag000066400000000000000000000003601506534232700205570ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; float4 ClipRect : SV_ClipDistance0; // vector in split struct }; float4 main(const VS_OUTPUT v) : SV_Target0 { return v.Position + v.ClipRect; } glslang-16.0.0/Test/hlsl.clipdistance-4.geom000066400000000000000000000011501506534232700205650ustar00rootroot00000000000000struct S { float4 pos : SV_Position; float2 clip0 : SV_ClipDistance0; // clip0 and clip1 form an array of float[4] externally. float2 clip1 : SV_ClipDistance1; }; [maxvertexcount(3)] void main(triangle in float4 pos[3] : SV_Position, triangle in uint VertexID[3] : VertexID, inout LineStream OutputStream, triangle in float2 clip0[3] : SV_ClipDistance0, // test input arrayed semantic vars triangle in float2 clip1[3] : SV_ClipDistance1) { S s; s.pos = pos[0]; s.clip0 = clip0[0]; s.clip1 = clip1[0]; OutputStream.Append(s); } glslang-16.0.0/Test/hlsl.clipdistance-4.vert000066400000000000000000000007111506534232700206200ustar00rootroot00000000000000struct VS_INPUT { float4 Position : POSITION; }; struct VS_OUTPUT { float4 Position : SV_Position; float4 ClipRect : SV_ClipDistance0; // vector in split struct }; VS_OUTPUT main(const VS_INPUT v) { VS_OUTPUT Output; Output.Position = 0; Output.ClipRect.x = 1; Output.ClipRect.y = 2; Output.ClipRect.z = 3; Output.ClipRect.w = 4; return Output; } glslang-16.0.0/Test/hlsl.clipdistance-5.frag000066400000000000000000000004201506534232700205550ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; float2 ClipRect[2] : SV_ClipDistance0; // array of float2 in split struct }; float4 main(const VS_OUTPUT v) : SV_Target0 { return v.Position + v.ClipRect[0].x + v.ClipRect[1].x; } glslang-16.0.0/Test/hlsl.clipdistance-5.vert000066400000000000000000000007361506534232700206300ustar00rootroot00000000000000struct VS_INPUT { float4 Position : POSITION; }; struct VS_OUTPUT { float4 Position : SV_Position; float2 ClipRect[2] : SV_ClipDistance0; // array of float2 in split struct }; VS_OUTPUT main(const VS_INPUT v) { VS_OUTPUT Output; Output.Position = 0; Output.ClipRect[0].x = 1; Output.ClipRect[0].y = 2; Output.ClipRect[1].x = 3; Output.ClipRect[1].y = 4; return Output; } glslang-16.0.0/Test/hlsl.clipdistance-6.frag000066400000000000000000000005121506534232700205600ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; float4 clip0 : SV_ClipDistance0; // multiple semantic IDs, two vec4s (no extra packing) float4 clip1 : SV_ClipDistance1; // ... }; float4 main(VS_OUTPUT v) : SV_Target0 { return v.Position + v.clip0 + v.clip1; } glslang-16.0.0/Test/hlsl.clipdistance-6.vert000066400000000000000000000010351506534232700206220ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; float4 clip0 : SV_ClipDistance0; // multiple semantic IDs, two vec4s (no extra packing) float4 clip1 : SV_ClipDistance1; // ... }; VS_OUTPUT main() { VS_OUTPUT Output; Output.Position = 0; Output.clip0.x = 0; Output.clip0.y = 1; Output.clip0.z = 2; Output.clip0.w = 3; Output.clip1.x = 4; Output.clip1.y = 5; Output.clip1.z = 6; Output.clip1.w = 7; return Output; } glslang-16.0.0/Test/hlsl.clipdistance-7.frag000066400000000000000000000005021506534232700205600ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; float3 clip0 : SV_ClipDistance0; // multiple semantic IDs, vec3+vec4 (skip) float4 clip1 : SV_ClipDistance1; // ... }; float4 main(VS_OUTPUT v) : SV_Target0 { return v.Position + v.clip0.x + v.clip1.x; } glslang-16.0.0/Test/hlsl.clipdistance-7.vert000066400000000000000000000010261506534232700206230ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; float3 clip0 : SV_ClipDistance0; // multiple semantic IDs, vec3+vec4 (skip) float4 clip1 : SV_ClipDistance1; // ... }; VS_OUTPUT main() { VS_OUTPUT Output; Output.Position = 0; Output.clip0.x = 0; Output.clip0.y = 1; Output.clip0.z = 2; // Position 3 is skipped Output.clip1.x = 4; Output.clip1.y = 5; Output.clip1.z = 6; Output.clip1.w = 7; return Output; } glslang-16.0.0/Test/hlsl.clipdistance-8.frag000066400000000000000000000005011506534232700205600ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; float3 clip0 : SV_ClipDistance0; // multiple semantic IDs, vec3+float (pack) float clip1 : SV_ClipDistance1; // ... }; float4 main(VS_OUTPUT v) : SV_Target0 { return v.Position + v.clip0.x + v.clip1; } glslang-16.0.0/Test/hlsl.clipdistance-8.vert000066400000000000000000000007411506534232700206270ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; float3 clip0 : SV_ClipDistance0; // multiple semantic IDs, vec3+float (pack) float clip1 : SV_ClipDistance1; // ... }; VS_OUTPUT main() { VS_OUTPUT Output; Output.Position = 0; Output.clip0.x = 0; Output.clip0.y = 1; Output.clip0.z = 2; // Position 3 is packed from clip1's float Output.clip1 = 3; return Output; } glslang-16.0.0/Test/hlsl.clipdistance-9.frag000066400000000000000000000004211506534232700205620ustar00rootroot00000000000000 // Test packing 0 and 1 semantics into single array[4], from in fn params. float4 main(in float4 Position : SV_Position, in float3 clip0 : SV_ClipDistance0, in float clip1 : SV_ClipDistance1) : SV_Target0 { return Position + clip0.x + clip1; } glslang-16.0.0/Test/hlsl.clipdistance-9.vert000066400000000000000000000007021506534232700206250ustar00rootroot00000000000000struct VS_OUTPUT { float4 Position : SV_Position; }; // Test packing 0 and 1 semantics into single array[4] output, from out fn params. VS_OUTPUT main(out float3 clip0 : SV_ClipDistance0, out float clip1 : SV_ClipDistance1) { VS_OUTPUT Output; Output.Position = 0; clip0.x = 0; clip0.y = 1; clip0.z = 2; // Position 3 is packed from clip1's float clip1 = 3; return Output; } glslang-16.0.0/Test/hlsl.color.hull.tesc000066400000000000000000000034731506534232700200640ustar00rootroot00000000000000///////////// // GLOBALS // ///////////// cbuffer TessellationBuffer : register(b0) { float tessellationAmount; float3 padding; }; ////////////// // TYPEDEFS // ////////////// struct HullInputType { float3 position : POSITION; float4 color : COLOR; }; struct ConstantOutputType { float edges[3] : SV_TessFactor; float inside : SV_InsideTessFactor; }; struct HullOutputType { float3 position : POSITION; float4 color : COLOR; }; //////////////////////////////////////////////////////////////////////////////// // Patch Constant Function //////////////////////////////////////////////////////////////////////////////// ConstantOutputType ColorPatchConstantFunction(InputPatch inputPatch, uint patchId : SV_PrimitiveID) { ConstantOutputType output; // Set the tessellation factors for the three edges of the triangle. output.edges[0] = tessellationAmount; output.edges[1] = tessellationAmount; output.edges[2] = tessellationAmount; // Set the tessellation factor for tessallating inside the triangle. output.inside = tessellationAmount; return output; } //////////////////////////////////////////////////////////////////////////////// // Hull Shader //////////////////////////////////////////////////////////////////////////////// [domain("tri")] [partitioning("integer")] [outputtopology("triangle_cw")] [outputcontrolpoints(3)] [patchconstantfunc("ColorPatchConstantFunction")] HullOutputType main(InputPatch patch, uint pointId : SV_OutputControlPointID, uint patchId : SV_PrimitiveID) { HullOutputType output; // Set the position for this control point as the output position. output.position = patch[pointId].position; // Set the input color as the output color. output.color = patch[pointId].color; return output; } glslang-16.0.0/Test/hlsl.comparison.vec.frag000066400000000000000000000010671506534232700207070ustar00rootroot00000000000000uniform float4 uf4; void Bug1( float4 a ) { float4 v04 = float4( 0.0, 0.0, 0.0, 0.0 ); float v01 = 0.0; bool4 r00 = a == v04; bool4 r01 = a != v04; bool4 r02 = a < v04; bool4 r03 = a > v04; bool4 r10 = a == v01; bool4 r11 = a != v01; bool4 r12 = a < v01; bool4 r13 = a > v01; bool4 r20 = v01 == a; bool4 r21 = v01 != a; bool4 r22 = v01 < a; bool4 r23 = v01 > a; } struct PS_OUTPUT { float4 Color : SV_Target0; }; PS_OUTPUT main() { PS_OUTPUT psout; psout.Color = 0; return psout; } glslang-16.0.0/Test/hlsl.conditional.frag000066400000000000000000000021501506534232700202560ustar00rootroot00000000000000float4 c4; float4 t4; float4 f4; float t; float f; float4 vectorCond() { return (c4 ? t4 : f4) + (c4 ? t : f ) + (t4 < f4 ? t4 : f4) + (c4 ? t : f4); } float4 scalarCond() { float4 ret = t != f ? t * f4 : 1; return ret; } float2 fbSelect(bool2 cnd, float2 src0, float2 src1) { return cnd ? src0 : src1; } float4 PixelShaderFunction(float4 input) : COLOR0 { int a = 1 < 2 ? 3 < 4 ? 5 : 6 : 7; int b = 1 < 2 ? 3 > 4 ? 5 : 6 : 7; int c = 1 > 2 ? 3 > 4 ? 5 : 6 : 7; int d = 1 > 2 ? 3 < 4 ? 5 : 6 : 7; float4 ret = a * input + b * input + c * input + d * input; int e; e = a = b ? c = d : 10, b = a ? d = c : 11; float4 f; f = ret.x < input.y ? c * input : d * input; uint g = d > 0.0 ? 0b010101u : 0u; uint h = g > 0.0 ? 0B111111u : 0u; uint i = h > 0.0 ? 0b0101u : 0B01; uint j = i > 0.0 ? 0xabcd : 0xbcda; return e * ret + f + vectorCond() + scalarCond() + float4(fbSelect(bool2(true, false), float2(1.0, 2.0), float2(3.0, 4.0)), 10.0, 10.0); } glslang-16.0.0/Test/hlsl.constantbuffer.frag000066400000000000000000000005241506534232700210010ustar00rootroot00000000000000 struct c1_t { float4 x; }; struct c2_t { bool x; float y; }; ConstantBuffer cb1 : register(b12); ConstantBuffer cb2[3]; ConstantBuffer cb3[2][4]; cbuffer cbuff { int c1; }; float4 main() : SV_Target0 { if (cb3[1][2].x) return cb1.x + cb2[1].y + c1; else return cb3[1][3].y; } glslang-16.0.0/Test/hlsl.constructArray.vert000066400000000000000000000004431506534232700210420ustar00rootroot00000000000000float4 main() : SV_POSITION { int4 int4_array[3]; float4 float4_array_times[2] = (float4[2])int4_array; float2 float2_array_times2[4] = (float2[4])int4_array; int4 int4_array2[2] = (int4[2])int4_array; int int1_array[2] = (int[2])int4_array; return (float4)0.0; } glslang-16.0.0/Test/hlsl.constructexpr.frag000066400000000000000000000006251506534232700207030ustar00rootroot00000000000000struct PS_OUTPUT { float4 color : SV_Target0; }; PS_OUTPUT main() { // Evaluates to a sequence: 3, 4, 5, 6, 7, 8, and a float2(9,10), float2(11,12) sequence (int(3)); (int(3) + int(1)); (int(3) + int(1) + int(1)); (((int(6)))); (int(7.0)); ((int((2)) ? 8 : 8)); (float2(9, 10), float2(11, 12)); PS_OUTPUT ps_output; ps_output.color = 1.0; return ps_output; } glslang-16.0.0/Test/hlsl.constructimat.frag000066400000000000000000000041401506534232700206530ustar00rootroot00000000000000int main() : SV_TARGET { // integer mat constructors const int4x4 var441 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 }; const int4x4 var442 = int4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 ); int4x4 var443 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 }; int4x4 var444 = int4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 ); const int4x2 var421 = { 0,1, 1,1, 1,0, 0,0 }; const int4x2 var422 = int4x2( 0,1, 1,1, 1,0, 0,0 ); int4x2 var423 = { 0,1, 1,1, 1,0, 0,0 }; int4x2 var424 = int4x2( 0,1, 1,1, 1,0, 0,0 ); const int3x2 var321 = { 0,1, 1,1, 1,0 }; const int3x2 var322 = int3x2( 0,1, 1,1, 1,0 ); int3x2 var323 = { 0,1, 1,1, 1,0 }; int3x2 var234 = int3x2( 0,1, 1,1, 1,0); // unsigned integer mat constructors const uint4x4 uvar441 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 }; const uint4x4 uvar442 = uint4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 ); uint4x4 uvar443 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 }; uint4x4 uvar444 = uint4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 ); const uint4x2 uvar421 = { 0,1, 1,1, 1,0, 0,0 }; const uint4x2 uvar422 = uint4x2( 0,1, 1,1, 1,0, 0,0 ); uint4x2 uvar423 = { 0,1, 1,1, 1,0, 0,0 }; uint4x2 uvar424 = uint4x2( 0,1, 1,1, 1,0, 0,0 ); const uint3x2 uvar321 = { 0,1, 1,1, 1,0 }; const uint3x2 uvar322 = uint3x2( 0,1, 1,1, 1,0 ); uint3x2 uvar323 = { 0,1, 1,1, 1,0 }; uint3x2 uvar234 = uint3x2( 0,1, 1,1, 1,0); // boolean mat constructors const bool4x4 bvar441 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 }; const bool4x4 bvar442 = bool4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 ); bool4x4 bvar443 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 }; bool4x4 bvar444 = bool4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 ); const bool4x2 bvar421 = { 0,1, 1,1, 1,0, 0,0 }; const bool4x2 bvar422 = bool4x2( 0,1, 1,1, 1,0, 0,0 ); bool4x2 bvar423 = { 0,1, 1,1, 1,0, 0,0 }; bool4x2 bvar424 = bool4x2( 0,1, 1,1, 1,0, 0,0 ); const bool3x2 bvar321 = { 0,1, 1,1, 1,0 }; const bool3x2 bvar322 = bool3x2( 0,1, 1,1, 1,0 ); bool3x2 bvar323 = { 0,1, 1,1, 1,0 }; bool3x2 bvar234 = bool3x2( 0,1, 1,1, 1,0); return 0; } glslang-16.0.0/Test/hlsl.coverage.frag000066400000000000000000000004721506534232700175530ustar00rootroot00000000000000 // Verify that coverage mask is an array, as required by SPIR-V. struct PS_INPUT { }; struct PS_OUTPUT { float4 vColor : SV_Target0; uint nCoverageMask : SV_Coverage; }; PS_OUTPUT main( PS_INPUT i ) { PS_OUTPUT o; o.vColor = float4(1.0, 0.0, 0.0, 1.0); o.nCoverageMask = 0; return o; } glslang-16.0.0/Test/hlsl.dashI.vert000066400000000000000000000006171506534232700170520ustar00rootroot00000000000000// For -Iinc1/path1 -Iinc1/path2 // bar.h from local directory will define i1, while the ones from inc1/path1 and inc1/path2 will not. // notHere.h is only in inc1/path1 and inc2/path2, and only inc1/path1 defines p1, p2, and p3 // parent.h is local again, and defines i4 #include "bar.h" #include "notHere.h" #include "parent.h" float4 main() : SV_Position { return i1 + i4 + p1 + p2 + p3; } glslang-16.0.0/Test/hlsl.deadFunctionMissingBody.vert000066400000000000000000000003071506534232700225710ustar00rootroot00000000000000float4 main(): SV_Target0 { return 0; } struct Surface { float3 albedo; }; Surface surfaceShader(float fade); Surface surfaceShaderExec() { float fade = 0; return surfaceShader(0); } glslang-16.0.0/Test/hlsl.depthGreater.frag000066400000000000000000000001261506534232700203720ustar00rootroot00000000000000void PixelShaderFunction(out float depth : SV_DepthGreaterEqual) { depth = 0.2; } glslang-16.0.0/Test/hlsl.depthLess.frag000066400000000000000000000001041506534232700177030ustar00rootroot00000000000000float PixelShaderFunction() : SV_DepthLessEqual { return 0.2; } glslang-16.0.0/Test/hlsl.discard.frag000066400000000000000000000002551506534232700173700ustar00rootroot00000000000000void 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; } glslang-16.0.0/Test/hlsl.doLoop.frag000066400000000000000000000007631506534232700172170ustar00rootroot00000000000000void f0() { [unroll] do {} while (false); } void f1() { [unroll] do {;} while (false); } float f2(float input) { do { return (float4)input; } while (input > 2.0); } void f3(float input) { do ++input; while (input < 10.0); } void f4(float input) { do while (++input < 10.0); while (++input < 10.0); // nest while inside do-while } float4 PixelShaderFunction(float input) : COLOR0 { f0(); f1(); f2(input); f3(input); f4(input); return (float4)input; } glslang-16.0.0/Test/hlsl.domain.1.tese000066400000000000000000000010771506534232700174110ustar00rootroot00000000000000 struct ds_in_t { float4 pos : POSITION; float3 norm : TEXCOORD0; }; struct pcf_in_t { float flTessFactor [3] : SV_TessFactor; float flInsideTessFactor : SV_InsideTessFactor; }; struct gs_in_t { float4 pos : POSITION; float3 norm : TEXCOORD0; }; [domain ( "tri" )] gs_in_t main (const OutputPatch i, float f : msem, float3 tesscoord : SV_DomainLocation, pcf_in_t pcf_data ) { gs_in_t o; o.pos = i[0].pos + tesscoord.x * f; o.norm = i[0].norm + tesscoord.y; tesscoord.z; return o; } glslang-16.0.0/Test/hlsl.domain.2.tese000066400000000000000000000013511506534232700174050ustar00rootroot00000000000000// This will test having the PCF input to the domain shader not be given at the end of // the argument list. We must move it to the end of the linkage in this case. struct ds_in_t { float4 pos : POSITION; float3 norm : TEXCOORD0; }; struct pcf_in_t { float flTessFactor [3] : SV_TessFactor; float flInsideTessFactor : SV_InsideTessFactor; float foo : PCF_FOO; }; struct gs_in_t { float4 pos : POSITION; float3 norm : TEXCOORD0; }; [domain ( "tri" )] gs_in_t main (pcf_in_t pcf_data, const OutputPatch i, float3 tesscoord : SV_DomainLocation) { gs_in_t o; o.pos = i[0].pos + tesscoord.x; o.norm = i[0].norm + tesscoord.y; tesscoord.z; return o; } glslang-16.0.0/Test/hlsl.domain.3.tese000066400000000000000000000012141506534232700174040ustar00rootroot00000000000000// Test vec2 tessellation coordinate: the IO form should be a vec3, copied to a vec2 // at the entry point boundary. struct ds_in_t { float4 pos : POSITION; float3 norm : TEXCOORD0; }; struct pcf_in_t { float flTessFactor [3] : SV_TessFactor; float flInsideTessFactor : SV_InsideTessFactor; }; struct gs_in_t { float4 pos : POSITION; float3 norm : TEXCOORD0; }; [domain ( "isoline" )] gs_in_t main (const OutputPatch i, float2 tesscoord : SV_DomainLocation, pcf_in_t pcf_data ) { gs_in_t o; o.pos = i[0].pos + tesscoord.x; o.norm = i[0].norm + tesscoord.y; return o; } glslang-16.0.0/Test/hlsl.earlydepthstencil.frag000066400000000000000000000004251506534232700215010ustar00rootroot00000000000000RWTexture2D Values; struct InputStruct { float4 Position : SV_POSITION; }; [earlydepthstencil] uint main(InputStruct input) : SV_Target { uint oldVal; InterlockedExchange(Values[uint2(input.Position.x, input.Position.y)], 1.0, oldVal); return oldVal; } glslang-16.0.0/Test/hlsl.emptystruct.init.vert000066400000000000000000000002011506534232700213540ustar00rootroot00000000000000struct Test { }; static const Test Test_Empty; float4 main(in uint vertexIndex : VERTEXID) : VS_OUT_POSITION { return 0; } glslang-16.0.0/Test/hlsl.emptystructreturn.frag000066400000000000000000000001541506534232700216200ustar00rootroot00000000000000struct ps_in { }; struct ps_out { }; ps_out main (ps_in i) { ps_out o; return o; } glslang-16.0.0/Test/hlsl.emptystructreturn.tesc000066400000000000000000000020571506534232700216430ustar00rootroot00000000000000struct HullInputType { float4 position : SV_Position; }; struct ConstantOutputType { float edges[3] : SV_TessFactor; float inside : SV_InsideTessFactor; }; struct EmptyStruct {}; struct HullOutputType {}; void blob(InputPatch patch) { } ConstantOutputType ColorPatchConstantFunction(InputPatch inputPatch, uint patchId : SV_PrimitiveID) { ConstantOutputType output; // Set the tessellation factors for the three edges of the triangle. output.edges[0] = 2; output.edges[1] = 2; output.edges[2] = 2; // Set the tessellation factor for tessallating inside the triangle. output.inside = 2; return output; } // Hull Shader [domain("tri")] [partitioning("integer")] [outputtopology("triangle_cw")] [outputcontrolpoints(3)] [patchconstantfunc("ColorPatchConstantFunction")] HullOutputType main(EmptyStruct stage_input, InputPatch patch, uint pointId : SV_OutputControlPointID, uint patchId : SV_PrimitiveID) { HullOutputType output; blob(patch); return output; } glslang-16.0.0/Test/hlsl.emptystructreturn.vert000066400000000000000000000001371506534232700216620ustar00rootroot00000000000000struct vs_in { }; struct vs_out { }; vs_out main (vs_in i) { vs_out o; return o; } glslang-16.0.0/Test/hlsl.entry-in.frag000066400000000000000000000005061506534232700175230ustar00rootroot00000000000000struct InParam { float2 v; float4 fragCoord : SV_POSITION; int2 i2; }; float fun(InParam p) { return p.v.y + p.fragCoord.x; } float4 PixelShaderFunction(InParam i) : COLOR0 { InParam local; local = i; float ret1 = fun(local); float ret2 = fun(i); return local.fragCoord * ret1 * ret2; } glslang-16.0.0/Test/hlsl.entry-inout.vert000066400000000000000000000001121506534232700203050ustar00rootroot00000000000000void main(inout float4 pos : SV_Position, inout float2 uv : TEXCOORD0) {} glslang-16.0.0/Test/hlsl.entry-out.frag000066400000000000000000000005671506534232700177330ustar00rootroot00000000000000struct OutParam { float2 v; int2 i; }; void fun(out OutParam op) { op.v = float2(0.4); op.i = int2(7); } float4 PixelShaderFunction(float4 input, out float4 out1, out OutParam out2, out OutParam out3) : COLOR0 { out1 = input; out2.v = 2.0; out2.i = 3; OutParam local; local.v = 12.0; local.i = 13; fun(out3); return out1; } glslang-16.0.0/Test/hlsl.entry.rename.frag000066400000000000000000000003061506534232700203630ustar00rootroot00000000000000 struct PS_OUTPUT { float4 Color : SV_Target0; }; void not_the_entry_point() { } int also_not_the_entry_point; PS_OUTPUT main() { PS_OUTPUT psout; psout.Color = 0; return psout; } glslang-16.0.0/Test/hlsl.explicitDescriptorSet.frag000066400000000000000000000003751506534232700223160ustar00rootroot00000000000000SamplerState g_sSamp : register(s1); Texture1D g_tTex1df4 : register(t0); SamplerState g_sSamp2_amb; uniform float floatval_amb; Buffer floatbuff; float4 main() : SV_Target0 { g_sSamp2_amb; return 0; } glslang-16.0.0/Test/hlsl.flatten.return.frag000066400000000000000000000004071506534232700207310ustar00rootroot00000000000000 struct PS_OUTPUT { float4 color : SV_Target0; float other_struct_member1; float other_struct_member2; float other_struct_member3; }; PS_OUTPUT Func1() { return PS_OUTPUT(float4(1,1,1,1), 2, 3, 4); } PS_OUTPUT main() { return Func1(); } glslang-16.0.0/Test/hlsl.flattenOpaque.frag000066400000000000000000000011601506534232700205630ustar00rootroot00000000000000struct os { sampler2D s2D; }; struct os2 { sampler2D s2D; Texture2D tex; }; Texture2D tex; os s; os2 s2; float4 osCall1(os s) { return tex.Sample(s.s2D, float2(0.2, 0.3)); } float4 osCall2(os s, float2 f2) { return tex.Sample(s.s2D, f2); } float4 os2Call1(os2 s) { return s.tex.Sample(s.s2D, float2(0.2, 0.3)); } float4 os2Call2(os2 s, float2 f2) { return s.tex.Sample(s.s2D, f2); } float4 main() : SV_TARGET0 { return osCall1(s) + osCall2(s, float2(0.2, 0.3)) + os2Call1(s2) + os2Call2(s2, float2(0.2, 0.3)); } glslang-16.0.0/Test/hlsl.flattenOpaqueInit.vert000066400000000000000000000011351506534232700214520ustar00rootroot00000000000000struct FxaaTex { SamplerState smpl; Texture2D tex; }; SamplerState g_tInputTexture_sampler; Texture2D g_tInputTexture; float4 lookUp(FxaaTex tex) { return tex.tex.Sample(tex.smpl, float2(0.3, 0.4)); } FxaaTex fillOpaque() { FxaaTex t; t.smpl = g_tInputTexture_sampler; t.tex = g_tInputTexture; return t; } float4 main() : SV_TARGET0 { FxaaTex tex1 = { g_tInputTexture_sampler, g_tInputTexture }; float4 res = lookUp(tex1); FxaaTex tex2 = fillOpaque(); res += lookUp(tex2); FxaaTex tex3 = tex1; res += lookUp(tex3); return res; } glslang-16.0.0/Test/hlsl.flattenOpaqueInitMix.vert000066400000000000000000000005431506534232700221320ustar00rootroot00000000000000struct FxaaTex { SamplerState smpl; Texture2D tex; float f; }; SamplerState g_tInputTexture_sampler; Texture2D g_tInputTexture; float4 lookUp(FxaaTex tex) { return tex.tex.Sample(tex.smpl, float2(tex.f, tex.f)); } float4 main() : SV_TARGET0 { FxaaTex tex = { g_tInputTexture_sampler, g_tInputTexture, 0.5 }; return lookUp(tex); }glslang-16.0.0/Test/hlsl.flattenSubset.frag000066400000000000000000000007311506534232700206010ustar00rootroot00000000000000struct S0 { int x; int y; SamplerState ss; }; struct S1 { float b; SamplerState samplerState; S0 s0; int a; }; struct S2 { int a1; int a2; int a3; int a4; int a5; S1 resources; }; SamplerState samp; Texture2D tex; float4 main(float4 vpos : VPOS) : COLOR0 { S1 s1; S2 s2; s1.s0.ss = samp; s2.resources = s1; return tex.Sample(s2.resources.s0.ss, float2(0.5)); } glslang-16.0.0/Test/hlsl.flattenSubset2.frag000066400000000000000000000010061506534232700206570ustar00rootroot00000000000000struct Nested { float y; Texture2D texNested; }; struct A { Nested n; float x; }; struct B { Nested n; Texture2D tex; }; Texture2D someTex; float4 main(float4 vpos : VPOS) : COLOR0 { A a1, a2; B b; // Assignment of nested structs to nested structs a1.n = a2.n; b .n = a1.n; // Assignment of nested struct to standalone Nested n = b.n; // Assignment to nestested struct members a2.n.texNested = someTex; a1.n.y = 1.0; return float4(0,0,0,0); } glslang-16.0.0/Test/hlsl.float1.frag000066400000000000000000000002661506534232700171470ustar00rootroot00000000000000static float1 f1 = float1(1.0); static float scalar = 2.0; float1 ShaderFunction(float1 inFloat1 : COLOR, float inScalar) : COLOR0 { return f1 * scalar + inFloat1 * inScalar; } glslang-16.0.0/Test/hlsl.float4.frag000066400000000000000000000004731506534232700171520ustar00rootroot00000000000000float4 AmbientColor = float4(1, 0.5, 0, 1); bool ff1 : SV_IsFrontFace; float ff2 : packoffset(c1.y); float4 ff3 : packoffset(c2) : register(ps_5_0, s0) ; float4 ff4 : VPOS : packoffset(c3) : register(ps_5_0, s1) ; float4 ShaderFunction(float4 input) : COLOR0 { return input * AmbientColor; } glslang-16.0.0/Test/hlsl.forLoop.frag000066400000000000000000000020211506534232700173700ustar00rootroot00000000000000void f0() { for (;;) ; } void f1(float4 input) { for (++input; ; ) ; } void f2(float4 input) { [unroll] for (; any(input != input); ) {} } float f3(float4 input) { for (; any(input != input); ) { return -input; } } float f4(float4 input) { for (--input; any(input != input); input += 2) { return -input; } } void f5(float4 input) { for (;;) if (input.x > 2.0) break; } void f6(float4 input) { for (;;) if (input.x > 2.0) continue; } void f99() { for (int first = 0, second = 1; ;) first + second; } void f100(float ii) { for (--ii, --ii, --ii;;) ii; } float4 PixelShaderFunction(float4 input) : COLOR0 { f0(); f1(input); f2(input); f3(input); f4(input); f5(input); f6(input); float ii; for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue; --ii; f99(); for ( int i = 0, count = int(ii); i < count; i++ ); for (float first = 0, second[2], third; first < second[0]; ++second[1]) first + second[1] + third; f100(ii); return input; } glslang-16.0.0/Test/hlsl.format.rwtexture.frag000066400000000000000000000054451506534232700213250ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); [[spv::format_rgba32f]] RWTexture1D g_tTex1df4 : register(t0); [[spv::format_rg32f]] RWTexture1D g_tTex1di4; [[spv::format_rgba8snorm]] RWTexture1D g_tTex1du4; [[spv::format_rgba8i]] RWTexture2D g_tTex2df4; [[spv::format_r11fg11fb10f]] RWTexture2D g_tTex2di4; [[spv::format_r8snorm]] RWTexture2D g_tTex2du4; [[spv::format_rg8]] [[spv::nonwritable]] RWTexture3D g_tTex3df4; [[spv::format_rgba16i]] [[spv::nonreadable]] RWTexture3D g_tTex3di4; [[spv::format_r8i]] [[spv::nonwritable]] [[spv::nonreadable]] RWTexture3D g_tTex3du4; [[spv::format_rgba8ui]] RWTexture1DArray g_tTex1df4a; [[spv::format_rg32ui]] RWTexture1DArray g_tTex1di4a; [[spv::format_r16ui]] RWTexture1DArray g_tTex1du4a; [[spv::format_rgb10a2ui]] RWTexture2DArray g_tTex2df4a; [[spv::format_r8ui]] RWTexture2DArray g_tTex2di4a; [[spv::format_rgba16f]] RWTexture2DArray g_tTex2du4a; [[spv::format_rgba8 ]] RWTexture2DArray g_tTex01; [[spv::format_rg16f ]] RWTexture2DArray g_tTex02; [[spv::format_r16f ]] RWTexture2DArray g_tTex03; [[spv::format_rgb10a2 ]] RWTexture2DArray g_tTex04; [[spv::format_rg16 ]] RWTexture2DArray g_tTex05; [[spv::format_r32f ]] RWTexture2DArray g_tTex06; [[spv::format_rgba16 ]] RWTexture2DArray g_tTex07; [[spv::format_r16 ]] RWTexture2DArray g_tTex08; [[spv::format_r8 ]] RWTexture2DArray g_tTex09; [[spv::format_rgba16snorm ]] RWTexture2DArray g_tTex10; [[spv::format_rg16snorm ]] RWTexture2DArray g_tTex11; [[spv::format_r16snorm ]] RWTexture2DArray g_tTex12; [[spv::format_r8snorm ]] RWTexture2DArray g_tTex13; [[spv::format_rgba32i ]] RWTexture2DArray g_tTex14; [[spv::format_r32i ]] RWTexture2DArray g_tTex15; [[spv::format_r32ui ]] RWTexture2DArray g_tTex16; [[spv::format_rg16i ]] RWTexture2DArray g_tTex17; [[spv::format_r16i ]] RWTexture2DArray g_tTex18; [[spv::format_rg32i ]] RWTexture2DArray g_tTex19; [[spv::format_rg8i ]] RWTexture2DArray g_tTex20; [[spv::format_rg8ui ]] RWTexture2DArray g_tTex21; [[spv::format_rgba32ui ]] RWTexture2DArray g_tTex22; [[spv::format_rgba16ui ]] RWTexture2DArray g_tTex23; [[spv::format_rg32ui ]] RWTexture2DArray g_tTex24; [[spv::format_rg16ui ]] RWTexture2DArray g_tTex25; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.frag000066400000000000000000000005401506534232700157550ustar00rootroot00000000000000float4 AmbientColor = float4(1, 0.5, 0, 1); float AmbientIntensity = 0.1; float4 PixelShaderFunction(float4 input) : COLOR0 { return input * AmbientIntensity + AmbientColor; return input * input + input * input; return input + input * input + input; return ++input * -+-+--input; return input++ + ++input; return sin(input); } glslang-16.0.0/Test/hlsl.fraggeom.frag000066400000000000000000000005351506534232700175470ustar00rootroot00000000000000// test geometry shader in fragment shader. GS attributes should be successfully ignored. struct myVertex { float4 pos : SV_Position; }; [maxvertexcount(1)] void GS_Draw(point myVertex IN, inout PointStream OutputStream) { OutputStream.Append(IN); OutputStream.RestartStrip(); } float4 main() : SV_TARGET { return 0; } glslang-16.0.0/Test/hlsl.function.frag000066400000000000000000000006171506534232700176060ustar00rootroot00000000000000float4 fun0() { return 1.0f; } float4 fun2(float4 const col) { return (1.0f, 2.0f, 3.0f, 4.0f); } uint fun3(const float4 col) { return 7; } float4 fun4(uint id1, uniform uint id2) { return id1 * id2; } float4 fun1(int index) { uint entityId = fun3(fun2(fun0())); return fun4(entityId, entityId); } int main() : SV_TARGET { return fun1; }glslang-16.0.0/Test/hlsl.gather.array.dx10.frag000066400000000000000000000021771506534232700211260ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // No 1D gathers float4 txval20 = g_tTex2df4a . Gather(g_sSamp, float3(0.1, 0.2, 0.3)); int4 txval21 = g_tTex2di4a . Gather(g_sSamp, float3(0.3, 0.4, 0.5)); uint4 txval22 = g_tTex2du4a . Gather(g_sSamp, float3(0.5, 0.6, 0.7)); // no 3D gathers float4 txval40 = g_tTexcdf4a . Gather(g_sSamp, float4(0.1, 0.2, 0.3, 0.4)); int4 txval41 = g_tTexcdi4a . Gather(g_sSamp, float4(0.4, 0.5, 0.6, 0.7)); uint4 txval42 = g_tTexcdu4a . Gather(g_sSamp, float4(0.7, 0.8, 0.9, 1.0)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gather.basic.dx10.frag000066400000000000000000000022451506534232700210650ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform sampler2D g_sSamp2d; Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // no 1D gathers float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2)); int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4)); uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6)); // no 3D gathers float4 txval40 = g_tTexcdf4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3)); int4 txval41 = g_tTexcdi4 . Gather(g_sSamp, float3(0.4, 0.5, 0.6)); uint4 txval42 = g_tTexcdu4 . Gather(g_sSamp, float3(0.7, 0.8, 0.9)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gather.basic.dx10.vert000066400000000000000000000021731506534232700211260ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform sampler2D g_sSamp2d; Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct VS_OUTPUT { float4 Pos : SV_Position; }; VS_OUTPUT main() { VS_OUTPUT vsout; // no 1D gathers float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2)); int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4)); uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6)); // no 3D gathers float4 txval40 = g_tTexcdf4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3)); int4 txval41 = g_tTexcdi4 . Gather(g_sSamp, float3(0.4, 0.5, 0.6)); uint4 txval42 = g_tTexcdu4 . Gather(g_sSamp, float3(0.7, 0.8, 0.9)); vsout.Pos = float4(0,0,0,0); return vsout; } glslang-16.0.0/Test/hlsl.gather.offset.dx10.frag000066400000000000000000000017421506534232700212730ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // no 1D Gathers float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2), int2(1,0)); int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4), int2(1,1)); uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6), int2(1,-1)); // no 3D gathers // No Cube offset gathers psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gather.offsetarray.dx10.frag000066400000000000000000000015221506534232700223260ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4; Texture1DArray g_tTex1du4; Texture2DArray g_tTex2df4; Texture2DArray g_tTex2di4; Texture2DArray g_tTex2du4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // No 1D gathers float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3), int2(1,0)); int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float3(0.3, 0.4, 0.4), int2(1,1)); uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float3(0.5, 0.6, 0.7), int2(1,-1)); // No 3D gathers // No Cube offset gathers psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gatherRGBA.array.dx10.frag000066400000000000000000000042071506534232700215560ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform sampler2D g_sSamp2d; uniform Texture1DArray g_tTex1df4a : register(t0); Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform float c1; uniform float2 c2; uniform float3 c3; uniform float4 c4; PS_OUTPUT main() { PS_OUTPUT psout; // no 1D gathers float4 txval00 = g_tTex2df4a . GatherRed(g_sSamp, c3); int4 txval01 = g_tTex2di4a . GatherRed(g_sSamp, c3); uint4 txval02 = g_tTex2du4a . GatherRed(g_sSamp, c3); float4 txval10 = g_tTex2df4a . GatherGreen(g_sSamp, c3); int4 txval11 = g_tTex2di4a . GatherGreen(g_sSamp, c3); uint4 txval12 = g_tTex2du4a . GatherGreen(g_sSamp, c3); float4 txval20 = g_tTex2df4a . GatherBlue(g_sSamp, c3); int4 txval21 = g_tTex2di4a . GatherBlue(g_sSamp, c3); uint4 txval22 = g_tTex2du4a . GatherBlue(g_sSamp, c3); float4 txval30 = g_tTex2df4a . GatherAlpha(g_sSamp, c3); int4 txval31 = g_tTex2di4a . GatherAlpha(g_sSamp, c3); uint4 txval32 = g_tTex2du4a . GatherAlpha(g_sSamp, c3); // no 3D gathers float4 txval40 = g_tTexcdf4a . GatherRed(g_sSamp, c4); int4 txval41 = g_tTexcdi4a . GatherRed(g_sSamp, c4); uint4 txval42 = g_tTexcdu4a . GatherRed(g_sSamp, c4); float4 txval50 = g_tTexcdf4a . GatherGreen(g_sSamp, c4); int4 txval51 = g_tTexcdi4a . GatherGreen(g_sSamp, c4); uint4 txval52 = g_tTexcdu4a . GatherGreen(g_sSamp, c4); float4 txval60 = g_tTexcdf4a . GatherBlue(g_sSamp, c4); int4 txval61 = g_tTexcdi4a . GatherBlue(g_sSamp, c4); uint4 txval62 = g_tTexcdu4a . GatherBlue(g_sSamp, c4); float4 txval70 = g_tTexcdf4a . GatherAlpha(g_sSamp, c4); int4 txval71 = g_tTexcdi4a . GatherAlpha(g_sSamp, c4); uint4 txval72 = g_tTexcdu4a . GatherAlpha(g_sSamp, c4); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gatherRGBA.basic.dx10.frag000066400000000000000000000043071506534232700215220ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform sampler2D g_sSamp2d; Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform float c1; uniform float2 c2; uniform float3 c3; uniform float4 c4; PS_OUTPUT main() { PS_OUTPUT psout; // no 1D gathers float4 txval00 = g_tTex2df4 . GatherRed(g_sSamp, c2); int4 txval01 = g_tTex2di4 . GatherRed(g_sSamp, c2); uint4 txval02 = g_tTex2du4 . GatherRed(g_sSamp, c2); float4 txval10 = g_tTex2df4 . GatherGreen(g_sSamp, c2); int4 txval11 = g_tTex2di4 . GatherGreen(g_sSamp, c2); uint4 txval12 = g_tTex2du4 . GatherGreen(g_sSamp, c2); float4 txval20 = g_tTex2df4 . GatherBlue(g_sSamp, c2); int4 txval21 = g_tTex2di4 . GatherBlue(g_sSamp, c2); uint4 txval22 = g_tTex2du4 . GatherBlue(g_sSamp, c2); float4 txval30 = g_tTex2df4 . GatherAlpha(g_sSamp, c2); int4 txval31 = g_tTex2di4 . GatherAlpha(g_sSamp, c2); uint4 txval32 = g_tTex2du4 . GatherAlpha(g_sSamp, c2); // no 3D gathers float4 txval40 = g_tTexcdf4 . GatherRed(g_sSamp, c3); int4 txval41 = g_tTexcdi4 . GatherRed(g_sSamp, c3); uint4 txval42 = g_tTexcdu4 . GatherRed(g_sSamp, c3); float4 txval50 = g_tTexcdf4 . GatherGreen(g_sSamp, c3); int4 txval51 = g_tTexcdi4 . GatherGreen(g_sSamp, c3); uint4 txval52 = g_tTexcdu4 . GatherGreen(g_sSamp, c3); float4 txval60 = g_tTexcdf4 . GatherBlue(g_sSamp, c3); int4 txval61 = g_tTexcdi4 . GatherBlue(g_sSamp, c3); uint4 txval62 = g_tTexcdu4 . GatherBlue(g_sSamp, c3); float4 txval70 = g_tTexcdf4 . GatherAlpha(g_sSamp, c3); int4 txval71 = g_tTexcdi4 . GatherAlpha(g_sSamp, c3); uint4 txval72 = g_tTexcdu4 . GatherAlpha(g_sSamp, c3); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gatherRGBA.offset.dx10.frag000066400000000000000000000107131506534232700217250ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform sampler2D g_sSamp2d; Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform float c1; uniform float2 c2; uniform float3 c3; uniform float4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; uint status; // no 1D gathers float4 txval001 = g_tTex2df4 . GatherRed(g_sSamp, c2, o2); int4 txval011 = g_tTex2di4 . GatherRed(g_sSamp, c2, o2); uint4 txval021 = g_tTex2du4 . GatherRed(g_sSamp, c2, o2); float4 txval004 = g_tTex2df4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2); int4 txval014 = g_tTex2di4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2); uint4 txval024 = g_tTex2du4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2); // float4 txval00s = g_tTex2df4 . GatherRed(g_sSamp, c2, o2, status); // int4 txval01s = g_tTex2di4 . GatherRed(g_sSamp, c2, o2, status); // uint4 txval02s = g_tTex2du4 . GatherRed(g_sSamp, c2, o2, status); // float4 txval004s = g_tTex2df4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2, status); // int4 txval014s = g_tTex2di4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2, status); // uint4 txval024s = g_tTex2du4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2, status); float4 txval101 = g_tTex2df4 . GatherGreen(g_sSamp, c2, o2); int4 txval111 = g_tTex2di4 . GatherGreen(g_sSamp, c2, o2); uint4 txval121 = g_tTex2du4 . GatherGreen(g_sSamp, c2, o2); float4 txval104 = g_tTex2df4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2); int4 txval114 = g_tTex2di4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2); uint4 txval124 = g_tTex2du4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2); // float4 txval10s = g_tTex2df4 . GatherGreen(g_sSamp, c2, o2, status); // int4 txval11s = g_tTex2di4 . GatherGreen(g_sSamp, c2, o2, status); // uint4 txval12s = g_tTex2du4 . GatherGreen(g_sSamp, c2, o2, status); // float4 txval104 = g_tTex2df4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2, status); // int4 txval114 = g_tTex2di4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2, status); // uint4 txval124 = g_tTex2du4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2, status); float4 txval201 = g_tTex2df4 . GatherBlue(g_sSamp, c2, o2); int4 txval211 = g_tTex2di4 . GatherBlue(g_sSamp, c2, o2); uint4 txval221 = g_tTex2du4 . GatherBlue(g_sSamp, c2, o2); float4 txval204 = g_tTex2df4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2); int4 txval214 = g_tTex2di4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2); uint4 txval224 = g_tTex2du4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2); // float4 txval204s = g_tTex2df4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2, status); // int4 txval214s = g_tTex2di4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2, status); // uint4 txval224s = g_tTex2du4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2, status); // float4 txval20s = g_tTex2df4 . GatherBlue(g_sSamp, c2, o2, status); // int4 txval21s = g_tTex2di4 . GatherBlue(g_sSamp, c2, o2, status); // uint4 txval22s = g_tTex2du4 . GatherBlue(g_sSamp, c2, o2, status); float4 txval301 = g_tTex2df4 . GatherAlpha(g_sSamp, c2, o2); int4 txval311 = g_tTex2di4 . GatherAlpha(g_sSamp, c2, o2); uint4 txval321 = g_tTex2du4 . GatherAlpha(g_sSamp, c2, o2); float4 txval304 = g_tTex2df4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2); int4 txval314 = g_tTex2di4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2); uint4 txval324 = g_tTex2du4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2); // float4 txval304s = g_tTex2df4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2, status); // int4 txval314s = g_tTex2di4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2, status); // uint4 txval324s = g_tTex2du4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2, status); // float4 txval30s = g_tTex2df4 . GatherAlpha(g_sSamp, c2, o2, status); // int4 txval31s = g_tTex2di4 . GatherAlpha(g_sSamp, c2, o2, status); // uint4 txval32s = g_tTex2du4 . GatherAlpha(g_sSamp, c2, o2, status); // no 3D gathers with offset psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gatherRGBA.offsetarray.dx10.frag000066400000000000000000000106431506534232700227660ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform sampler2D g_sSamp2d; uniform Texture1DArray g_tTex1df4a : register(t0); Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform float c1; uniform float2 c2; uniform float3 c3; uniform float4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; uint status; // no 1D gathers float4 txval001 = g_tTex2df4a . GatherRed(g_sSamp, c3, o2); int4 txval011 = g_tTex2di4a . GatherRed(g_sSamp, c3, o2); uint4 txval021 = g_tTex2du4a . GatherRed(g_sSamp, c3, o2); float4 txval004 = g_tTex2df4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2); int4 txval014 = g_tTex2di4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2); uint4 txval024 = g_tTex2du4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2); // float4 txval00s = g_tTex2df4a . GatherRed(g_sSamp, c3, o2, status); // int4 txval01s = g_tTex2di4a . GatherRed(g_sSamp, c3, o2, status); // uint4 txval02s = g_tTex2du4a . GatherRed(g_sSamp, c3, o2, status); // float4 txval004s = g_tTex2df4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2, status); // int4 txval014s = g_tTex2di4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2, status); // uint4 txval024s = g_tTex2du4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2, status); float4 txval101 = g_tTex2df4a . GatherGreen(g_sSamp, c3, o2); int4 txval111 = g_tTex2di4a . GatherGreen(g_sSamp, c3, o2); uint4 txval121 = g_tTex2du4a . GatherGreen(g_sSamp, c3, o2); float4 txval104 = g_tTex2df4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2); int4 txval114 = g_tTex2di4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2); uint4 txval124 = g_tTex2du4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2); // float4 txval10s = g_tTex2df4a . GatherGreen(g_sSamp, c3, o2, status); // int4 txval11s = g_tTex2di4a . GatherGreen(g_sSamp, c3, o2, status); // uint4 txval12s = g_tTex2du4a . GatherGreen(g_sSamp, c3, o2, status); // float4 txval104 = g_tTex2df4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2, status); // int4 txval114 = g_tTex2di4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2, status); // uint4 txval124 = g_tTex2du4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2, status); float4 txval201 = g_tTex2df4a . GatherBlue(g_sSamp, c3, o2); int4 txval211 = g_tTex2di4a . GatherBlue(g_sSamp, c3, o2); uint4 txval221 = g_tTex2du4a . GatherBlue(g_sSamp, c3, o2); float4 txval204 = g_tTex2df4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2); int4 txval214 = g_tTex2di4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2); uint4 txval224 = g_tTex2du4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2); // float4 txval204s = g_tTex2df4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2, status); // int4 txval214s = g_tTex2di4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2, status); // uint4 txval224s = g_tTex2du4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2, status); // float4 txval20s = g_tTex2df4a . GatherBlue(g_sSamp, c3, o2, status); // int4 txval21s = g_tTex2di4a . GatherBlue(g_sSamp, c3, o2, status); // uint4 txval22s = g_tTex2du4a . GatherBlue(g_sSamp, c3, o2, status); float4 txval301 = g_tTex2df4a . GatherAlpha(g_sSamp, c3, o2); int4 txval311 = g_tTex2di4a . GatherAlpha(g_sSamp, c3, o2); uint4 txval321 = g_tTex2du4a . GatherAlpha(g_sSamp, c3, o2); float4 txval304 = g_tTex2df4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2); int4 txval314 = g_tTex2di4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2); uint4 txval324 = g_tTex2du4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2); // float4 txval304s = g_tTex2df4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2, status); // int4 txval314s = g_tTex2di4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2, status); // uint4 txval324s = g_tTex2du4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2, status); // float4 txval30s = g_tTex2df4a . GatherAlpha(g_sSamp, c3, o2, status); // int4 txval31s = g_tTex2di4a . GatherAlpha(g_sSamp, c3, o2, status); // uint4 txval32s = g_tTex2du4a . GatherAlpha(g_sSamp, c3, o2, status); // no 3D gathers with offset psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gathercmpRGBA.array.dx10.frag000066400000000000000000000050701506534232700222550ustar00rootroot00000000000000SamplerComparisonState g_sSampCmp : register(s0); uniform Texture1DArray g_tTex1df4a : register(t0); Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform float c1; uniform float2 c2; uniform float3 c3; uniform float4 c4; PS_OUTPUT main() { PS_OUTPUT psout; // no 1D gathers float4 txval80 = g_tTex2df4a . GatherCmp(g_sSampCmp, c3, .75); int4 txval81 = g_tTex2di4a . GatherCmp(g_sSampCmp, c3, .75); uint4 txval82 = g_tTex2du4a . GatherCmp(g_sSampCmp, c3, .75); float4 txval00 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, .75); int4 txval01 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, .75); uint4 txval02 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, .75); float4 txval10 = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, .75); int4 txval11 = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, .75); uint4 txval12 = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, .75); float4 txval20 = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, .75); int4 txval21 = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, .75); uint4 txval22 = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, .75); float4 txval30 = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, .75); int4 txval31 = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, .75); uint4 txval32 = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, .75); // no 3D gathers float4 txval40 = g_tTexcdf4a . GatherCmpRed(g_sSampCmp, c4, .75); int4 txval41 = g_tTexcdi4a . GatherCmpRed(g_sSampCmp, c4, .75); uint4 txval42 = g_tTexcdu4a . GatherCmpRed(g_sSampCmp, c4, .75); float4 txval50 = g_tTexcdf4a . GatherCmpGreen(g_sSampCmp, c4, .75); int4 txval51 = g_tTexcdi4a . GatherCmpGreen(g_sSampCmp, c4, .75); uint4 txval52 = g_tTexcdu4a . GatherCmpGreen(g_sSampCmp, c4, .75); float4 txval60 = g_tTexcdf4a . GatherCmpBlue(g_sSampCmp, c4, .75); int4 txval61 = g_tTexcdi4a . GatherCmpBlue(g_sSampCmp, c4, .75); uint4 txval62 = g_tTexcdu4a . GatherCmpBlue(g_sSampCmp, c4, .75); float4 txval70 = g_tTexcdf4a . GatherCmpAlpha(g_sSampCmp, c4, .75); int4 txval71 = g_tTexcdi4a . GatherCmpAlpha(g_sSampCmp, c4, .75); uint4 txval72 = g_tTexcdu4a . GatherCmpAlpha(g_sSampCmp, c4, .75); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gathercmpRGBA.basic.dx10.frag000066400000000000000000000055321506534232700222230ustar00rootroot00000000000000SamplerComparisonState g_sSampCmp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform float c1; uniform float2 c2; uniform float3 c3; uniform float4 c4; PS_OUTPUT main() { PS_OUTPUT psout; // no 1D gathers float4 txval00 = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75); int4 txval01 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75); uint4 txval02 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75); float4 txval10 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75); int4 txval11 = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75); uint4 txval12 = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75); float4 txval20 = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75); int4 txval21 = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75); uint4 txval22 = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75); float4 txval30 = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75); int4 txval31 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75); uint4 txval32 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75); float4 txval80 = g_tTex2df4 . GatherCmp(g_sSampCmp, c2, 0.75); int4 txval81 = g_tTex2di4 . GatherCmp(g_sSampCmp, c2, 0.75); uint4 txval82 = g_tTex2du4 . GatherCmp(g_sSampCmp, c2, 0.75); // no 3D gathers float4 txval40 = g_tTexcdf4 . GatherCmpRed(g_sSampCmp, c3, 0.75); int4 txval41 = g_tTexcdi4 . GatherCmpRed(g_sSampCmp, c3, 0.75); uint4 txval42 = g_tTexcdu4 . GatherCmpRed(g_sSampCmp, c3, 0.75); float4 txval50 = g_tTexcdf4 . GatherCmpGreen(g_sSampCmp, c3, 0.75); int4 txval51 = g_tTexcdi4 . GatherCmpGreen(g_sSampCmp, c3, 0.75); uint4 txval52 = g_tTexcdu4 . GatherCmpGreen(g_sSampCmp, c3, 0.75); float4 txval60 = g_tTexcdf4 . GatherCmpBlue(g_sSampCmp, c3, 0.75); int4 txval61 = g_tTexcdi4 . GatherCmpBlue(g_sSampCmp, c3, 0.75); uint4 txval62 = g_tTexcdu4 . GatherCmpBlue(g_sSampCmp, c3, 0.75); float4 txval70 = g_tTexcdf4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75); int4 txval71 = g_tTexcdi4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75); uint4 txval72 = g_tTexcdu4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75); float4 txval90 = g_tTexcdf4 . GatherCmp(g_sSampCmp, c3, 0.75); int4 txval91 = g_tTexcdi4 . GatherCmp(g_sSampCmp, c3, 0.75); uint4 txval92 = g_tTexcdu4 . GatherCmp(g_sSampCmp, c3, 0.75); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gathercmpRGBA.offset.dx10.frag000066400000000000000000000131671506534232700224330ustar00rootroot00000000000000SamplerComparisonState g_sSampCmp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform float c1; uniform float2 c2; uniform float3 c3; uniform float4 c4; PS_OUTPUT main() { PS_OUTPUT psout; uint status; // no 1D gathers float4 txval001 = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0)); int4 txval011 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,-1)); uint4 txval021 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,1)); float4 txval004 = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); int4 txval014 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,-1), int2(1,-1), int2(1,-1), int2(1,-1)); uint4 txval024 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,1), int2(1,1), int2(1,1), int2(1,1)); float4 txval401 = g_tTex2df4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,0)); int4 txval411 = g_tTex2di4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,-1)); uint4 txval421 = g_tTex2du4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,1)); // GatherCmpGreen not implemented pending OpImageDrefGather component input // float4 txval101 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0)); // int4 txval111 = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0)); // uint4 txval121 = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0)); // float4 txval104 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // int4 txval114 = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // uint4 txval124 = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // float4 txval10s = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), status); // int4 txval11s = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), status); // uint4 txval12s = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), status); // float4 txval104 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // int4 txval114 = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // uint4 txval124 = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // GatherCmpBlue not implemented pending OpImageDrefGather component input // float4 txval201 = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0)); // int4 txval211 = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0)); // uint4 txval221 = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0)); // float4 txval204 = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // int4 txval214 = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // uint4 txval224 = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // float4 txval204s = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // int4 txval214s = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // uint4 txval224s = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // float4 txval20s = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), status); // int4 txval21s = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), status); // uint4 txval22s = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, int2(1,0), status); // GatherCmpAlpha not implemented pending OpImageDrefGather component input // float4 txval301 = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0)); // int4 txval311 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0)); // uint4 txval321 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0)); // float4 txval304 = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // int4 txval314 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // uint4 txval324 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0)); // float4 txval304s = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // int4 txval314s = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // uint4 txval324s = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status); // float4 txval30s = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), status); // int4 txval31s = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), status); // uint4 txval32s = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, int2(1,0), status); // no 3D gathers with offset psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag000066400000000000000000000122351506534232700234650ustar00rootroot00000000000000SamplerComparisonState g_sSampCmp : register(s0); uniform Texture1DArray g_tTex1df4a : register(t0); Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform float c1; uniform float2 c2; uniform float3 c3; uniform float4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; uint status; // no 1D gathers float4 txval401 = g_tTex2df4a . GatherCmp(g_sSampCmp, c3, 0.75, o2); int4 txval411 = g_tTex2di4a . GatherCmp(g_sSampCmp, c3, 0.75, o2); uint4 txval421 = g_tTex2du4a . GatherCmp(g_sSampCmp, c3, 0.75, o2); float4 txval001 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); int4 txval011 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); uint4 txval021 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); float4 txval004 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); int4 txval014 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); uint4 txval024 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); // float4 txval00s = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, status); // int4 txval01s = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, status); // uint4 txval02s = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, status); // float4 txval004s = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // int4 txval014s = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // uint4 txval024s = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); float4 txval101 = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2); int4 txval111 = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2); uint4 txval121 = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2); float4 txval104 = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); int4 txval114 = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); uint4 txval124 = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); // float4 txval10s = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, status); // int4 txval11s = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, status); // uint4 txval12s = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, status); // float4 txval104 = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // int4 txval114 = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // uint4 txval124 = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); float4 txval201 = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2); int4 txval211 = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2); uint4 txval221 = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2); float4 txval204 = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); int4 txval214 = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); uint4 txval224 = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); // float4 txval204s = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // int4 txval214s = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // uint4 txval224s = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // float4 txval20s = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, status); // int4 txval21s = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, status); // uint4 txval22s = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, status); float4 txval301 = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2); int4 txval311 = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2); uint4 txval321 = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2); float4 txval304 = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); int4 txval314 = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); uint4 txval324 = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); // float4 txval304s = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // int4 txval314s = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // uint4 txval324s = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); // float4 txval30s = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, status); // int4 txval31s = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, status); // uint4 txval32s = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, status); // no 3D gathers with offset psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.getdimensions.dx10.frag000066400000000000000000000227221506534232700214050ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; Texture2DMS g_tTex2dmsf4; Texture2DMS g_tTex2dmsi4; Texture2DMS g_tTex2dmsu4; Texture2DMSArray g_tTex2dmsf4a; Texture2DMSArray g_tTex2dmsi4a; Texture2DMSArray g_tTex2dmsu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; uint MipLevel; uint WidthU; uint HeightU; uint ElementsU; uint DepthU; uint NumberOfLevelsU; uint NumberOfSamplesU; float WidthF; float HeightF; float ElementsF; float DepthF; float NumberOfLevelsF; float NumberOfSamplesF; // 1D, float tx, uint params g_tTex1df4 . GetDimensions(WidthU); g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsU); // 1D, int, uint params g_tTex1di4 . GetDimensions(WidthU); g_tTex1di4 . GetDimensions(6, WidthU, NumberOfLevelsU); // 1D, uint, uint params g_tTex1du4 . GetDimensions(WidthU); g_tTex1du4 . GetDimensions(6, WidthU, NumberOfLevelsU); // 1DArray, float tx, uint params g_tTex1df4a . GetDimensions(WidthU, ElementsU); g_tTex1df4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU); // 1DArray, int, uint params g_tTex1di4a . GetDimensions(WidthU, ElementsU); g_tTex1di4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU); // 1DArray, uint, uint params g_tTex1du4a . GetDimensions(WidthU, ElementsU); g_tTex1du4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU); // 2D, float tx, uint params g_tTex2df4 . GetDimensions(WidthU, HeightU); g_tTex2df4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); // 2D, int, uint params g_tTex2di4 . GetDimensions(WidthU, HeightU); g_tTex2di4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); // 2D, uint, uint params g_tTex2du4 . GetDimensions(WidthU, HeightU); g_tTex2du4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); // 2Darray, float tx, uint params g_tTex2df4a . GetDimensions(WidthU, HeightU, ElementsU); g_tTex2df4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); // 2Darray, int, uint params g_tTex2di4a . GetDimensions(WidthU, HeightU, ElementsU); g_tTex2di4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); // 2Darray, uint, uint params g_tTex2du4a . GetDimensions(WidthU, HeightU, ElementsU); g_tTex2du4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); // 3D, float tx, uint params g_tTex3df4 . GetDimensions(WidthU, HeightU, DepthU); g_tTex3df4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU); // 3D, int, uint params g_tTex3di4 . GetDimensions(WidthU, HeightU, DepthU); g_tTex3di4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU); // 3D, uint, uint params g_tTex3du4 . GetDimensions(WidthU, HeightU, DepthU); g_tTex3du4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU); // Cube, float tx, uint params g_tTexcdf4 . GetDimensions(WidthU, HeightU); g_tTexcdf4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); // Cube, int, uint params g_tTexcdi4 . GetDimensions(WidthU, HeightU); g_tTexcdi4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); // Cube, uint, uint params g_tTexcdu4 . GetDimensions(WidthU, HeightU); g_tTexcdu4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); // Cubearray, float tx, uint params g_tTexcdf4a . GetDimensions(WidthU, HeightU, ElementsU); g_tTexcdf4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); // Cubearray, int, uint params g_tTexcdi4a . GetDimensions(WidthU, HeightU, ElementsU); g_tTexcdi4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); // Cubearray, uint, uint params g_tTexcdu4a . GetDimensions(WidthU, HeightU, ElementsU); g_tTexcdu4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); // 2DMS, float tx, uint params g_tTex2dmsf4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); // 2DMS, int tx, uint params g_tTex2dmsi4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); // 2DMS, uint tx, uint params g_tTex2dmsu4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); // 2DMSArray, float tx, uint params g_tTex2dmsf4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU); // 2DMSArray, int tx, uint params g_tTex2dmsi4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU); // 2DMSArray, uint tx, uint params g_tTex2dmsu4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU); // TODO: *************************************************** // Change this to 1 to enable float overloads when the HLSL // function overload resolution is fixed. #define OVERLOAD_FIX 0 // TODO: enable when function overload resolution rules are fixed #if OVERLOAD_FIX // 1D, float tx, float params g_tTex1df4 . GetDimensions(WidthF); g_tTex1df4 . GetDimensions(6, WidthF, NumberOfLevelsF); // 1D, int, float params g_tTex1di4 . GetDimensions(WidthF); g_tTex1di4 . GetDimensions(6, WidthF, NumberOfLevelsF); // 1D, uint, float params g_tTex1du4 . GetDimensions(WidthF); g_tTex1du4 . GetDimensions(6, WidthF, NumberOfLevelsF); // 1DArray, float tx, float params g_tTex1df4a . GetDimensions(WidthF, ElementsF); g_tTex1df4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF); // 1DArray, int, float params g_tTex1di4a . GetDimensions(WidthF, ElementsF); g_tTex1di4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF); // 1DArray, uint, float params g_tTex1du4a . GetDimensions(WidthF, ElementsF); g_tTex1du4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF); // 2D, float tx, float params g_tTex2df4 . GetDimensions(WidthF, HeightF); g_tTex2df4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); // 2D, int, float params g_tTex2di4 . GetDimensions(WidthF, HeightF); g_tTex2di4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); // 2D, uint, float params g_tTex2du4 . GetDimensions(WidthF, HeightF); g_tTex2du4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); // 2Darray, float tx, float params g_tTex2df4a . GetDimensions(WidthF, HeightF, ElementsF); g_tTex2df4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); // 2Darray, int, float params g_tTex2di4a . GetDimensions(WidthF, HeightF, ElementsF); g_tTex2di4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); // 2Darray, uint, float params g_tTex2du4a . GetDimensions(WidthF, HeightF, ElementsF); g_tTex2du4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); // 3D, float tx, float params g_tTex3df4 . GetDimensions(WidthF, HeightF, DepthF); g_tTex3df4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF); // 3D, int, float params g_tTex3di4 . GetDimensions(WidthF, HeightF, DepthF); g_tTex3di4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF); // 3D, uint, float params g_tTex3du4 . GetDimensions(WidthF, HeightF, DepthF); g_tTex3du4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF); // Cube, float tx, float params g_tTexcdf4 . GetDimensions(WidthF, HeightF); g_tTexcdf4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); // Cube, int, float params g_tTexcdi4 . GetDimensions(WidthF, HeightF); g_tTexcdi4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); // Cube, uint, float params g_tTexcdu4 . GetDimensions(WidthF, HeightF); g_tTexcdu4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); // Cubearray, float tx, float params g_tTexcdf4a . GetDimensions(WidthF, HeightF, ElementsF); g_tTexcdf4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); // Cubearray, int, float params g_tTexcdi4a . GetDimensions(WidthF, HeightF, ElementsF); g_tTexcdi4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); // Cubearray, uint, float params g_tTexcdu4a . GetDimensions(WidthF, HeightF, ElementsF); g_tTexcdu4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); // 2DMS, float tx, uint params g_tTex2dmsf4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF); // 2DMS, int tx, uint params g_tTex2dmsi4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF); // 2DMS, uint tx, uint params g_tTex2dmsu4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF); // 2DMSArray, float tx, uint params g_tTex2dmsf4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF); // 2DMSArray, int tx, uint params g_tTex2dmsi4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF); // 2DMSArray, uint tx, uint params g_tTex2dmsu4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF); #endif // OVERLOAD_FIX psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.getdimensions.dx10.vert000066400000000000000000000011101506534232700214320ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); struct VS_OUTPUT { float4 Pos : SV_Position; }; VS_OUTPUT main() { VS_OUTPUT vsout; uint WidthU; uint NumberOfLevelsU; // Most of the tests are in the hlsl.getdimensions.dx10.frag on the fragment side. // This is just to establish that GetDimensions appears in the vertex stage. // 1D, float tx, uint params g_tTex1df4 . GetDimensions(WidthU); g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsU); vsout.Pos = float4(0,0,0,0); return vsout; } glslang-16.0.0/Test/hlsl.getdimensions.rw.dx10.frag000066400000000000000000000044721506534232700220360ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); RWTexture1D g_tTex1df4 : register(t0); RWTexture1D g_tTex1di4; RWTexture1D g_tTex1du4; RWTexture2D g_tTex2df4; RWTexture2D g_tTex2di4; RWTexture2D g_tTex2du4; RWTexture3D g_tTex3df4; RWTexture3D g_tTex3di4; RWTexture3D g_tTex3du4; RWTexture1DArray g_tTex1df4a; RWTexture1DArray g_tTex1di4a; RWTexture1DArray g_tTex1du4a; RWTexture2DArray g_tTex2df4a; RWTexture2DArray g_tTex2di4a; RWTexture2DArray g_tTex2du4a; RWBuffer g_tBuffF; RWBuffer g_tBuffI; RWBuffer g_tBuffU; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; uint MipLevel; uint WidthU; uint HeightU; uint ElementsU; uint DepthU; uint NumberOfLevelsU; uint NumberOfSamplesU; float WidthF; float HeightF; float ElementsF; float DepthF; float NumberOfLevelsF; float NumberOfSamplesF; // 1D, float/int/uint, uint params g_tTex1df4.GetDimensions(WidthU); g_tTex1di4.GetDimensions(WidthU); g_tTex1du4.GetDimensions(WidthU); // buffer, float/int/uint, uint params g_tBuffF.GetDimensions(WidthU); g_tBuffI.GetDimensions(WidthU); g_tBuffU.GetDimensions(WidthU); // 1DArray, float/int/uint, uint params g_tTex1df4a.GetDimensions(WidthU, ElementsU); g_tTex1di4a.GetDimensions(WidthU, ElementsU); g_tTex1du4a.GetDimensions(WidthU, ElementsU); // 2D, float/int/uint, uint params g_tTex2df4.GetDimensions(WidthU, HeightU); g_tTex2di4.GetDimensions(WidthU, HeightU); g_tTex2du4.GetDimensions(WidthU, HeightU); // 2DArray, float/int/uint, uint params g_tTex2df4a.GetDimensions(WidthU, HeightU, ElementsU); g_tTex2di4a.GetDimensions(WidthU, HeightU, ElementsU); g_tTex2du4a.GetDimensions(WidthU, HeightU, ElementsU); // 3D, float/int/uint, uint params g_tTex3df4.GetDimensions(WidthU, HeightU, DepthU); g_tTex3di4.GetDimensions(WidthU, HeightU, DepthU); g_tTex3du4.GetDimensions(WidthU, HeightU, DepthU); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.getsampleposition.dx10.frag000066400000000000000000000007001506534232700222730ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture2DMS g_tTex2dmsf4; Texture2DMSArray g_tTex2dmsf4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main(int sample : SAMPLE) { PS_OUTPUT psout; float2 r00 = g_tTex2dmsf4.GetSamplePosition(sample); float2 r01 = g_tTex2dmsf4a.GetSamplePosition(sample); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.global-const-init.frag000066400000000000000000000005231506534232700213020ustar00rootroot00000000000000 cbuffer CB { float4 foo; }; static const float4 bar = foo; // test const (in the immutable sense) initializer from non-const. static const float2 a1[2] = { { 1, 2 }, { foo.x, 4 } }; // not entirely constant static const float2 a2[2] = { { 5, 6 }, { 7, 8 } }; // entirely constant float4 main() : SV_Target0 { return bar; } glslang-16.0.0/Test/hlsl.groupid.comp000066400000000000000000000004241506534232700174450ustar00rootroot00000000000000RWTexture2D < float4 > OutputTexture; // Test conversion between SPIR-V required uint3 group id, and sub-vec3 shader declaration. [ numthreads ( 8 , 8 , 1 ) ] void main ( uint2 vGroupId : SV_GroupID ) { OutputTexture[ vGroupId . xy ] = float4(1.0, 0.0, 0.0, 1.0); } glslang-16.0.0/Test/hlsl.gs-hs-mix.tesc000066400000000000000000000057551506534232700176240ustar00rootroot00000000000000cbuffer UniformBlock0 : register(b0) { float4x4 model_view_matrix; float4x4 proj_matrix; float4x4 model_view_proj_matrix; float3x3 normal_matrix; float3 color; float3 view_dir; float3 tess_factor; }; // ============================================================================= // Hull Shader // ============================================================================= struct HSInput { float3 PositionWS : POSITION; float3 NormalWS : NORMAL; }; struct HSOutput { float3 PositionWS : POSITION; }; struct HSTrianglePatchConstant { float EdgeTessFactor[3] : SV_TessFactor; float InsideTessFactor : SV_InsideTessFactor; float3 NormalWS[3] : NORMAL; }; HSTrianglePatchConstant HSPatchConstant(InputPatch patch) { float3 roundedEdgeTessFactor = tess_factor; float roundedInsideTessFactor = 3; float insideTessFactor = 1; HSTrianglePatchConstant result; // Edge and inside tessellation factors result.EdgeTessFactor[0] = roundedEdgeTessFactor.x; result.EdgeTessFactor[1] = roundedEdgeTessFactor.y; result.EdgeTessFactor[2] = roundedEdgeTessFactor.z; result.InsideTessFactor = roundedInsideTessFactor; // Constant data result.NormalWS[0] = patch[0].NormalWS; result.NormalWS[1] = patch[1].NormalWS; result.NormalWS[2] = patch[2].NormalWS; return result; } [domain("tri")] [partitioning("fractional_odd")] [outputtopology("triangle_ccw")] [outputcontrolpoints(3)] [patchconstantfunc("HSPatchConstant")] HSOutput HSMain( InputPatch patch, uint id : SV_OutputControlPointID ) { HSOutput output; output.PositionWS = patch[id].PositionWS; return output; } // ============================================================================= // Geometry Shader // ============================================================================= struct GSVertexInput { float3 PositionWS : POSITION; float3 NormalWS : NORMAL; }; struct GSVertexOutput { float4 PositionCS : SV_POSITION; }; [maxvertexcount(6)] void GSMain( triangle GSVertexInput input[3], inout LineStream output ) { float3 P0 = input[0].PositionWS.xyz; float3 P1 = input[1].PositionWS.xyz; float3 P2 = input[2].PositionWS.xyz; GSVertexOutput vertex; // Totally hacky... P0.z += 0.001; P1.z += 0.001; P2.z += 0.001; float4 Q0 = mul(proj_matrix, float4(P0, 1.0)); float4 Q1 = mul(proj_matrix, float4(P1, 1.0)); float4 Q2 = mul(proj_matrix, float4(P2, 1.0)); // Edge 0 vertex.PositionCS = Q0; output.Append(vertex); vertex.PositionCS = Q1; output.Append(vertex); output.RestartStrip(); // Edge 1 vertex.PositionCS = Q1; output.Append(vertex); vertex.PositionCS = Q2; output.Append(vertex); output.RestartStrip(); // Edge 2 vertex.PositionCS = Q2; output.Append(vertex); vertex.PositionCS = Q0; output.Append(vertex); output.RestartStrip(); } glslang-16.0.0/Test/hlsl.hlslOffset.vert000066400000000000000000000005141506534232700201270ustar00rootroot00000000000000cbuffer b { float m0; float3 m4; ////// float m16; float3 m20 : packoffset(c1.y); ///// float3 m36 : packoffset(c2.y); ///// float2 m56 : packoffset(c3.z); ///// float m64; float2 m68; float m76; ////// float m80; float2 m96[1]; }; void main() {} glslang-16.0.0/Test/hlsl.hull.1.tesc000066400000000000000000000012271506534232700171010ustar00rootroot00000000000000// *** // invocation ID coming from input to entry point // *** struct VS_OUT { float3 cpoint : CPOINT; }; struct HS_CONSTANT_OUT { float edges[2] : SV_TessFactor; }; struct HS_OUT { float3 cpoint : CPOINT; }; [domain("isoline")] [partitioning("integer")] [outputtopology("line")] [outputcontrolpoints(4)] [patchconstantfunc("PCF")] HS_OUT main(InputPatch ip, uint m_cpid : SV_OutputControlPointID) { HS_OUT output; output.cpoint = ip[0].cpoint; return output; } HS_CONSTANT_OUT PCF(uint pid : SV_PrimitiveId) { HS_CONSTANT_OUT output; output.edges[0] = 2.0f; output.edges[1] = 8.0f; return output; } glslang-16.0.0/Test/hlsl.hull.2.tesc000066400000000000000000000012121506534232700170740ustar00rootroot00000000000000// *** // invocation ID coming from synthesized variable // *** struct VS_OUT { float3 cpoint : CPOINT; }; struct HS_CONSTANT_OUT { float edges[2] : SV_TessFactor; }; struct HS_OUT { float3 cpoint : CPOINT; }; [domain("isoline")] [partitioning("integer")] [outputtopology("line")] [outputcontrolpoints(4)] [patchconstantfunc("PCF")] HS_OUT main(InputPatch ip) { HS_OUT output; output.cpoint = ip[0].cpoint; return output; } HS_CONSTANT_OUT PCF(uint pid : SV_PrimitiveId, float4 pos : SV_Position) { HS_CONSTANT_OUT output; output.edges[0] = 2.0f; output.edges[1] = 8.0f; return output; } glslang-16.0.0/Test/hlsl.hull.3.tesc000066400000000000000000000012071506534232700171010ustar00rootroot00000000000000// *** // invocation ID coming from synthesized variable // *** struct VS_OUT { float3 cpoint : CPOINT; }; struct HS_CONSTANT_OUT { float edges[2] : SV_TessFactor; }; struct HS_OUT { float3 cpoint : CPOINT; }; [domain("tri")] [partitioning("integer")] [outputtopology("point")] [outputcontrolpoints(4)] [patchconstantfunc("PCF")] HS_OUT main(InputPatch ip) { HS_OUT output; output.cpoint = ip[0].cpoint; return output; } HS_CONSTANT_OUT PCF(uint pid : SV_PrimitiveId, float4 pos : SV_Position) { HS_CONSTANT_OUT output; output.edges[0] = 2.0f; output.edges[1] = 8.0f; return output; } glslang-16.0.0/Test/hlsl.hull.4.tesc000066400000000000000000000020741506534232700171050ustar00rootroot00000000000000 // Test mixed InputPatch structure: user and builtin members. Hull shaders involve extra // logic in this case due to patch constant function call synthesis. // This example tests the main EP and the PCF EP both having an input patch. struct HS_Main_Output { float4 m_Position : SV_POSITION ; }; struct HS_Output { float fTessFactor [ 3 ] : SV_TessFactor ; float fInsideTessFactor : SV_InsideTessFactor ; }; struct HS_Input { float4 m_Position : SV_POSITION; float4 m_Normal : TEXCOORD2; }; HS_Output HS_ConstFunc ( InputPatch < HS_Input , 3 > I ) { HS_Output O = (HS_Output)0; O.fInsideTessFactor = I [ 0 ].m_Position.w + I [ 0 ].m_Normal.w; return O; } [ domain ( "tri" ) ] [ partitioning ( "fractional_odd" ) ] [ outputtopology ( "triangle_cw" ) ] [ patchconstantfunc ( "HS_ConstFunc" ) ] [ outputcontrolpoints ( 3 ) ] HS_Main_Output main( InputPatch < HS_Input , 3 > I , uint cpid : SV_OutputControlPointID ) { HS_Main_Output output = ( HS_Main_Output ) 0 ; output.m_Position = 0; return output ; } glslang-16.0.0/Test/hlsl.hull.5.tesc000066400000000000000000000020401506534232700170770ustar00rootroot00000000000000 // Test mixed InputPatch structure: user and builtin members. Hull shaders involve extra // logic in this case due to patch constant function call synthesis. // This example tests the PCF EP having an InputPatch, but the main EP does not. struct HS_Main_Output { float4 m_Position : SV_POSITION ; }; struct HS_Output { float fTessFactor [ 3 ] : SV_TessFactor ; float fInsideTessFactor : SV_InsideTessFactor ; }; struct HS_Input { float4 m_Position : SV_POSITION; float4 m_Normal : TEXCOORD2; }; HS_Output HS_ConstFunc ( InputPatch < HS_Input , 3 > I ) { HS_Output O = (HS_Output)0; O.fInsideTessFactor = I [ 0 ].m_Position.w + I [ 0 ].m_Normal.w; return O; } [ domain ( "tri" ) ] [ partitioning ( "fractional_odd" ) ] [ outputtopology ( "triangle_cw" ) ] [ patchconstantfunc ( "HS_ConstFunc" ) ] [ outputcontrolpoints ( 3 ) ] HS_Main_Output main( uint cpid : SV_OutputControlPointID ) { HS_Main_Output output = ( HS_Main_Output ) 0 ; output.m_Position = 0; return output ; } glslang-16.0.0/Test/hlsl.hull.6.tesc000066400000000000000000000020761506534232700171110ustar00rootroot00000000000000// Test tesselation factor output as PCF arg struct VSOutput { float4 f4Position : SV_Position; float3 f3Color : COLOR; }; struct HS_CONSTANT_DATA_OUTPUT { float Edges[4] : SV_TessFactor; }; HS_CONSTANT_DATA_OUTPUT ConstantHS(InputPatch p, uint BlockID : SV_PrimitiveID, out float Inside[2] : SV_InsideTessFactor) { HS_CONSTANT_DATA_OUTPUT Factors; Factors.Edges[0] = 2.5; Factors.Edges[1] = 4.25; Factors.Edges[2] = 5.75; Factors.Edges[3] = 7.5; Inside[0] = 6.75; Inside[1] = 7.25; return Factors; } struct HSOutput { float4 Position : POS; float3 Color : COL; }; [domain("quad")] [partitioning("fractional_even")] [outputtopology("triangle_ccw")] [outputcontrolpoints(1)] [patchconstantfunc("ConstantHS")] HSOutput main(InputPatch inputPatch, uint uCPID : SV_OutputControlPointID) { HSOutput Out; Out.Position = inputPatch[uCPID].f4Position; Out.Color = inputPatch[uCPID].f3Color; return Out; } glslang-16.0.0/Test/hlsl.hull.ctrlpt-1.tesc000066400000000000000000000015631506534232700204120ustar00rootroot00000000000000// *** // per-control-point invocation of PCF from entry point return value // *** struct hs_in_t { float3 val : TEXCOORD0; }; struct hs_pcf_t { float tfactor[3] : SV_TessFactor; // must turn into a size 4 array in SPIR-V float flInFactor : SV_InsideTessFactor; // must turn into a size 2 array in SPIR-V }; struct hs_out_t { float3 val : TEXCOORD0; }; [ domain ("tri") ] [ partitioning ("fractional_odd") ] [ outputtopology ("triangle_cw") ] [ outputcontrolpoints (3) ] [ patchconstantfunc ( "PCF" ) ] hs_out_t main (InputPatch i , uint cpid : SV_OutputControlPointID) { hs_out_t o; o.val = cpid; return o; } hs_pcf_t PCF( const OutputPatch pcf_out) { hs_pcf_t o; o.tfactor[0] = pcf_out[0].val.x; o.tfactor[1] = pcf_out[1].val.x; o.tfactor[2] = pcf_out[2].val.x; o.flInFactor = 4; return o; } glslang-16.0.0/Test/hlsl.hull.ctrlpt-2.tesc000066400000000000000000000017541506534232700204150ustar00rootroot00000000000000// *** // per-control-point invocation of PCF from entry point return value with // both OutputPatch and InputPatch given to PCF. // *** struct hs_in_t { float3 val : TEXCOORD0; }; struct hs_pcf_t { float tfactor[3] : SV_TessFactor; // must turn into a size 4 array in SPIR-V float flInFactor : SV_InsideTessFactor; // must turn into a size 2 array in SPIR-V }; struct hs_out_t { float3 val : TEXCOORD0; }; [ domain ("tri") ] [ partitioning ("fractional_odd") ] [ outputtopology ("triangle_cw") ] [ outputcontrolpoints (3) ] [ patchconstantfunc ( "PCF" ) ] hs_out_t main (InputPatch i , uint cpid : SV_OutputControlPointID) { i[0].val; hs_out_t o; o.val = cpid; return o; } hs_pcf_t PCF( const OutputPatch pcf_out, const InputPatch pcf_in) { hs_pcf_t o; o.tfactor[0] = pcf_out[0].val.x; o.tfactor[1] = pcf_out[1].val.x; o.tfactor[2] = pcf_out[2].val.x; o.flInFactor = 4; return o; } glslang-16.0.0/Test/hlsl.hull.void.tesc000066400000000000000000000007511506534232700177030ustar00rootroot00000000000000// *** // void patchconstantfunction input and return // *** struct VS_OUT { float3 cpoint : CPOINT; }; struct HS_CONSTANT_OUT { float edges[2] : SV_TessFactor; }; struct HS_OUT { float3 cpoint : CPOINT; }; [domain("tri")] [partitioning("fractional_even")] [outputtopology("triangle_ccw")] [outputcontrolpoints(3)] [patchconstantfunc("PCF")] HS_OUT main(InputPatch ip) { HS_OUT output; output.cpoint = ip[0].cpoint; return output; } void PCF() { } glslang-16.0.0/Test/hlsl.identifier.sample.frag000066400000000000000000000007361506534232700213650ustar00rootroot00000000000000 struct MyStruct { sample float a; noperspective float b; linear float c; centroid float d; }; int sample(int x) { return x; } // HLSL allows this as an identifier as well. float4 main() : SV_Target0 { // HLSL allows this as an identifier as well. // However, this is not true of other qualifier keywords such as "linear". float4 sample = float4(3,4,5,6); return sample.rgba; // 'sample' can participate in an expression. } glslang-16.0.0/Test/hlsl.if.frag000066400000000000000000000011731506534232700163550ustar00rootroot00000000000000float4 f0(float4 input) { if (all(input == input)) return input; else return -input; } float4 f1(float4 input) { if (all(input == input)) { return input; } else { return -input; } } float4 PixelShaderFunction(float4 input) : COLOR0 { if (all(input == input)) return input; f0(input); if (all(input == input)) ; if (all(input == input)) ; else ; [flatten] if (all(input == input)) { return input; } f1(input); int ii; if (float ii = input.z) ++ii; ++ii; if (float(ii) == 1.0) ++ii; } glslang-16.0.0/Test/hlsl.imagefetch-subvec4.comp000066400000000000000000000025131506534232700214420ustar00rootroot00000000000000Texture1D i1D: register(t0); Texture2D i2D: register(t1); Texture3D i3D: register(t2); Texture1DArray i1DArray: register(t3); Texture2DArray i2DArray: register(t4); Texture2DMS i2DMS: register(t5); Texture2DMSArray i2DMSArray: register(t6); Texture1D ii1D: register(t7); Texture2D ii2D: register(t8); Texture3D ii3D: register(t9); Texture1DArray ii1DArray: register(t10); Texture2DArray ii2DArray: register(t11); Texture2DMS ii2DMS: register(t12); Texture2DMSArray ii2DMSArray: register(t13); RWTexture3D OUT: register(u0); [numthreads(8,8,8)] void main(uint3 tid: SV_DispatchThreadID) { float f = 0.0; f += i1D[tid.x]; f += i2D[tid.xy]; f += i3D[tid]; f += i1DArray[tid.xy]; f += i2DArray[tid]; f += i2DMS.Load(tid.xy, 1); f += i2DMSArray.Load(tid, 3); int i = 0.0; i += ii1D[tid.x]; i += ii2D[tid.xy]; i += ii3D[tid]; i += ii1DArray[tid.xy]; i += ii2DArray[tid]; i += ii2DMS.Load(tid.xy, 1); i += ii2DMSArray.Load(tid, 3); OUT[tid] = f + float(i); } glslang-16.0.0/Test/hlsl.imageload-subvec4.comp000066400000000000000000000017321506534232700212720ustar00rootroot00000000000000RWTexture1D i1D: register(u0); RWTexture2D i2D: register(u1); RWTexture3D i3D: register(u2); RWTexture1DArray i1DArray: register(u3); RWTexture2DArray i2DArray: register(u4); RWTexture1D ii1D: register(u5); RWTexture2D ii2D: register(u6); RWTexture3D ii3D: register(u7); RWTexture1DArray ii1DArray: register(u8); RWTexture2DArray ii2DArray: register(u9); RWTexture3D OUT: register(u10); [numthreads(8,8,8)] void main(uint3 tid: SV_DispatchThreadID) { float f = 0.0; f += i1D[tid.x]; f += i2D[tid.xy]; f += i3D[tid]; f += i1DArray[tid.xy]; f += i2DArray[tid]; int i = 0.0; i += ii1D[tid.x]; i += ii2D[tid.xy]; i += ii3D[tid]; i += ii1DArray[tid.xy]; i += ii2DArray[tid]; OUT[tid] = f + float(i); } glslang-16.0.0/Test/hlsl.implicitBool.frag000066400000000000000000000010561506534232700204050ustar00rootroot00000000000000float condf; int condi; float1 condf1; int1 condi1; float4 main() : SV_Target0 { float4 a = float4(2.0, 2.0, 2.0, 2.0); if (condi) return a + 1.0; if (condf) return a + 2.0; if (condf1) return a + 3.0; if (condi1) return a + 4.0; if (condi && condf || condf1) return a + 5.0; float f = condf; while (f) { --f; } int i = condi; do { --i; } while (i); for (; i; ) { --i; } float g = condf ? 7.0 : 8.0; a += g; return a - 1.0; }glslang-16.0.0/Test/hlsl.include.vert000066400000000000000000000002101506534232700174320ustar00rootroot00000000000000#include "bar.h" #include "./inc1/bar.h" #include "inc2\bar.h" float4 main() : SV_Position { return i1 + i2 + i3 + i4 + i5 + i6; } glslang-16.0.0/Test/hlsl.includeNegative.vert000066400000000000000000000001631506534232700211240ustar00rootroot00000000000000#include "foo.h" #include "inc2/../foo.h" #include "inc1/badInc.h" float4 main() : SV_Position { #error in main } glslang-16.0.0/Test/hlsl.inf.vert000066400000000000000000000010601506534232700165670ustar00rootroot00000000000000float4 main() : SV_Position { float f1 = -1.#INF; float f2 = 1.#INF; float f3 = +1.#INF; float f4 = f2 * 1.#INF + 1.#INF; const float f5 = -1.#INF; // An infinity times zero is a NaN. // In IEEE 754, the sign of a NaN is significant only for // abs, copy, negate, or copySign. Use abs(.) here to // set the sign bit to zero. Otherwise, some platforms will // have a 1 sign bit and others will have a 0 sign bit. const float f6 = abs(f5 * 0.0f); return (float4)(f1 + f2 + f3 + f4 + f5 + f6); } glslang-16.0.0/Test/hlsl.init.frag000066400000000000000000000017011506534232700167170ustar00rootroot00000000000000static float4 a1 = float4(1, 0.5, 0, 1), b1 = float4(2.0, 2.5, 2.1, 2.2); static float4 a1i = {1, 0.5, 0, 1}, b1i = {2.0, 2.5, 2.1, 2.2}; static float a2 = 0.2, b2; static float a3, b3 = 0.3; static float a4, b4 = 0.4, c4; static float a5 = 0.5, b5, c5 = 1.5; struct Single1 { int f; }; static Single1 single1 = { 10 }; struct Single2 { uint2 v; }; static Single2 single2 = { { 1, 2 } }; struct Single3 { Single1 s1; }; static Single3 single3 = { { 3 } }; struct Single4 { Single2 s1; }; static Single4 single4 = { { { 4u, 5u } } }; float4 ShaderFunction(float4 input) : COLOR0 { float4 a2 = float4(0.2, 0.3, 0.4, 0.5); struct S1 { float f; int i; }; struct S2 { int j; float g; S1 s1; }; S2 s2i = { 9, a5, { (a3,a4), 12} }, s2 = S2(9, a5, S1((a3,a4), 12)); float a8 = (a2, b2), a9 = a5; return input * a1; } cbuffer Constants { float a = 1.0f, b, c = 2.0f; }; glslang-16.0.0/Test/hlsl.init2.frag000066400000000000000000000030301506534232700167760ustar00rootroot00000000000000 void Test1() { struct mystruct { float2 a; }; mystruct test1 = { { 1, 2, }, // test trailing commas in list }; mystruct test2 = { float2(3, 4), }; // mystruct test3 = { // { { 5, 6, } }, // TODO: test unneeded levels // }; float test4 = { 7, } ; // test scalar initialization struct mystruct2 { float a; float b; float c; }; mystruct2 test5 = { {8,}, {9,}, {10}, }; const mystruct2 constTest5 = { {8,}, {9,}, {10}, }; constTest5.c; float const origStep = 1.0f; const float step = origStep; float n = 0; const float3 a[8] = { normalize(float3(1, 1, 1)) * (n += step), normalize(float3(-1, -1, -1)) * (n += step), normalize(float3(-1, -1, 1)) * (n += step), normalize(float3(-1, 1, -1)) * (n += step), normalize(float3(-1, 1, 1)) * (n += step), normalize(float3(1, -1, -1)) * (n += step), normalize(float3(1, -1, 1)) * (n += step), normalize(float3(1, 1, -1)) * (n += step) }; const struct one { float3 a; } oneNonConst = { normalize(float3(-1, 1, 1)) * (n += step) }; const struct two { float3 a; float3 b; } twoNonConst = { normalize(float3(-1, 1, 1)) * (n += step), normalize(float3(-1, 1, 1)) * (n += step) }; } struct PS_OUTPUT { float4 color : SV_Target0; }; PS_OUTPUT main() { Test1(); PS_OUTPUT ps_output; ps_output.color = 1.0; return ps_output; } glslang-16.0.0/Test/hlsl.inoutquals.frag000066400000000000000000000007611506534232700201650ustar00rootroot00000000000000struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; inline void MyFunc(in float x, out float y, inout float z, in out float w) { y = x; z = y; x = -1; // no effect since x = in param w *= 1; } PS_OUTPUT main(noperspective in float4 inpos : SV_Position, out int sampleMask : SV_Coverage) { PS_OUTPUT psout; float x = 7, y, z = 3; MyFunc(x, y, z, inpos.w); psout.Color = float4(x, y, z, 1); psout.Depth = inpos.w; return psout; } glslang-16.0.0/Test/hlsl.inoutquals.negative.frag000066400000000000000000000001451506534232700217620ustar00rootroot00000000000000in float invalid1; in out float invalid2; inout float invalid3; out float invalid4; void main() { } glslang-16.0.0/Test/hlsl.instance.geom000066400000000000000000000006301506534232700175700ustar00rootroot00000000000000struct VertexShaderOutput { float4 m_position : SV_POSITION; float4 m_color : COLOR0; }; [maxvertexcount(3)] [instance(5)] void GeometryShader(triangle VertexShaderOutput input[3], inout TriangleStream output, uint id : SV_GSInstanceID) { [loop] for (int i = 0; i < 3; ++i) { output.Append(input[i]); } output.RestartStrip(); }glslang-16.0.0/Test/hlsl.int.dot.frag000066400000000000000000000004041506534232700173320ustar00rootroot00000000000000float4 main() : SV_Target { int i = 1; int1 i2 = 2; int2 i3 = 3; int3 i4 = 4; int4 i5 = 5; i = dot(i, i); i2 = dot(i2, i2); i3 = dot(i3, i3); i4 = dot(i4, i4); i5 = dot(i5, i5); return i + i2.xxxx + i3.xyxy + i4.xyzx + i5; }glslang-16.0.0/Test/hlsl.intrinsic.frexp.frag000066400000000000000000000014151506534232700211030ustar00rootroot00000000000000 float PixelShaderFunctionS(float inF0, float inF1) { float r000 = frexp(inF0, inF1); return 0.0; } float2 PixelShaderFunction2(float2 inF0, float2 inF1) { float2 r000 = frexp(inF0, inF1); return float2(1,2); } float3 PixelShaderFunction3(float3 inF0, float3 inF1) { float3 r000 = frexp(inF0, inF1); return float3(1,2,3); } float4 PixelShaderFunction(float4 inF0, float4 inF1) { float4 r000 = frexp(inF0, inF1); return float4(1,2,3,4); } // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. #define MATFNS(MT) \ MT r000 = frexp(inF0, inF1); struct PS_OUTPUT { float4 color : SV_Target0; }; PS_OUTPUT main() { PS_OUTPUT ps_output; ps_output.color = 1.0; return ps_output; }; glslang-16.0.0/Test/hlsl.intrinsic.frexp.vert000066400000000000000000000010431506534232700211410ustar00rootroot00000000000000float VertexShaderFunctionS(float inF0, float inF1) { frexp(inF0, inF1); return 0.0; } float2 VertexShaderFunction2(float2 inF0, float2 inF1) { frexp(inF0, inF1); return float2(1,2); } float3 VertexShaderFunction3(float3 inF0, float3 inF1) { frexp(inF0, inF1); return float3(1,2,3); } float4 VertexShaderFunction4(float4 inF0, float4 inF1) { frexp(inF0, inF1); return float4(1,2,3,4); } // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. #define MATFNS() \ frexp(inF0, inF1); glslang-16.0.0/Test/hlsl.intrinsics.barriers.comp000066400000000000000000000003441506534232700217720ustar00rootroot00000000000000 void ComputeShaderFunction() { AllMemoryBarrier(); AllMemoryBarrierWithGroupSync(); DeviceMemoryBarrier(); DeviceMemoryBarrierWithGroupSync(); GroupMemoryBarrier(); GroupMemoryBarrierWithGroupSync(); } glslang-16.0.0/Test/hlsl.intrinsics.comp000066400000000000000000000077561506534232700202000ustar00rootroot00000000000000 groupshared uint gs_ua; groupshared uint gs_ub; groupshared uint gs_uc; groupshared uint2 gs_ua2; groupshared uint2 gs_ub2; groupshared uint2 gs_uc2; groupshared uint3 gs_ua3; groupshared uint3 gs_ub3; groupshared uint3 gs_uc3; groupshared uint4 gs_ua4; groupshared uint4 gs_ub4; groupshared uint4 gs_uc4; groupshared float gs_fa; groupshared float gs_fb; float ComputeShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) { uint out_u1; // Don't repeat all the pixel/vertex fns - just one for sanity. all(inF0); // Test atomics InterlockedAdd(gs_ua, gs_ub); InterlockedAdd(gs_ua, gs_ub, out_u1); InterlockedAnd(gs_ua, gs_ub); InterlockedAnd(gs_ua, gs_ub, out_u1); InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); InterlockedExchange(gs_ua, gs_ub, out_u1); InterlockedMax(gs_ua, gs_ub); InterlockedMax(gs_ua, gs_ub, out_u1); InterlockedMin(gs_ua, gs_ub); InterlockedMin(gs_ua, gs_ub, out_u1); InterlockedOr(gs_ua, gs_ub); InterlockedOr(gs_ua, gs_ub, out_u1); InterlockedXor(gs_ua, gs_ub); InterlockedXor(gs_ua, gs_ub, out_u1); InterlockedAdd(gs_fa, gs_fb); // CheckAccessFullyMapped(3); // TODO: ... return 0.0; } float1 ComputeShaderFunction1(float1 inF0, float1 inF1, float1 inF2) { // TODO: ... add when float1 prototypes are generated return 0.0; } float2 ComputeShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1) { uint2 out_u2; // Don't repeat all the pixel/vertex fns - just one for sanity. all(inF0); // Test atomics InterlockedAdd(gs_ua2, gs_ub2); InterlockedAdd(gs_ua2, gs_ub2, out_u2); InterlockedAnd(gs_ua2, gs_ub2); InterlockedAnd(gs_ua2, gs_ub2, out_u2); InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); InterlockedExchange(gs_ua2, gs_ub2, out_u2); InterlockedMax(gs_ua2, gs_ub2); InterlockedMax(gs_ua2, gs_ub2, out_u2); InterlockedMin(gs_ua2, gs_ub2); InterlockedMin(gs_ua2, gs_ub2, out_u2); InterlockedOr(gs_ua2, gs_ub2); InterlockedOr(gs_ua2, gs_ub2, out_u2); InterlockedXor(gs_ua2, gs_ub2); InterlockedXor(gs_ua2, gs_ub2, out_u2); // TODO: ... add when float1 prototypes are generated return float2(1,2); } float3 ComputeShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1) { uint3 out_u3; // Don't repeat all the pixel/vertex fns - just one for sanity. all(inF0); // Test atomics InterlockedAdd(gs_ua3, gs_ub3); InterlockedAdd(gs_ua3, gs_ub3, out_u3); InterlockedAnd(gs_ua3, gs_ub3); InterlockedAnd(gs_ua3, gs_ub3, out_u3); InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); InterlockedExchange(gs_ua3, gs_ub3, out_u3); InterlockedMax(gs_ua3, gs_ub3); InterlockedMax(gs_ua3, gs_ub3, out_u3); InterlockedMin(gs_ua3, gs_ub3); InterlockedMin(gs_ua3, gs_ub3, out_u3); InterlockedOr(gs_ua3, gs_ub3); InterlockedOr(gs_ua3, gs_ub3, out_u3); InterlockedXor(gs_ua3, gs_ub3); InterlockedXor(gs_ua3, gs_ub3, out_u3); // TODO: ... add when float1 prototypes are generated return float3(1,2,3); } float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1) { uint4 out_u4; // Don't repeat all the pixel/vertex fns - just one for sanity. all(inF0); // Test atomics InterlockedAdd(gs_ua4, gs_ub4); InterlockedAdd(gs_ua4, gs_ub4, out_u4); InterlockedAnd(gs_ua4, gs_ub4); InterlockedAnd(gs_ua4, gs_ub4, out_u4); InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); InterlockedExchange(gs_ua4, gs_ub4, out_u4); InterlockedMax(gs_ua4, gs_ub4); InterlockedMax(gs_ua4, gs_ub4, out_u4); InterlockedMin(gs_ua4, gs_ub4); InterlockedMin(gs_ua4, gs_ub4, out_u4); InterlockedOr(gs_ua4, gs_ub4); InterlockedOr(gs_ua4, gs_ub4, out_u4); InterlockedXor(gs_ua4, gs_ub4); InterlockedXor(gs_ua4, gs_ub4, out_u4); // TODO: ... add when float1 prototypes are generated return float4(1,2,3,4); } glslang-16.0.0/Test/hlsl.intrinsics.d3dcolortoubyte4.frag000066400000000000000000000001271506534232700233520ustar00rootroot00000000000000 uniform float4 col4; int4 main() : SV_Target0 { return D3DCOLORtoUBYTE4(col4); } glslang-16.0.0/Test/hlsl.intrinsics.double.frag000066400000000000000000000004601506534232700214130ustar00rootroot00000000000000 float PixelShaderFunction(double inDV1a, double inDV1b, double inDV1c, double2 inDV2, double3 inDV3, double4 inDV4, uint inU1a, uint inU1b) { double r00 = fma(inDV1a, inDV1b, inDV1c); double r01 = asdouble(inU1a, inU1b); return 0.0; } glslang-16.0.0/Test/hlsl.intrinsics.evalfns.frag000066400000000000000000000021111506534232700215720ustar00rootroot00000000000000struct PS_INPUT { float2 vPos: TEXCOORD0; }; float4 main(float inF1, float2 inF2, float3 inF3, float4 inF4, int2 inI2, PS_INPUT i) : COLOR { float oF1 = EvaluateAttributeSnapped(inF1, int2(8,15)); float2 oF2 = EvaluateAttributeSnapped(inF2, int2(0,1)); float3 oF3 = EvaluateAttributeSnapped(inF3, int2(3,10)); float4 oF4 = EvaluateAttributeSnapped(inF4, int2(7,8)); oF1 += EvaluateAttributeSnapped(inF1, inI2); oF1 += EvaluateAttributeAtSample(inF1, 3); oF2 += EvaluateAttributeAtSample(inF2, 3); oF3 += EvaluateAttributeAtSample(inF3, 3); oF4 += EvaluateAttributeAtSample(inF4, 3); oF1 += EvaluateAttributeAtSample(inF1, inI2.x); oF1 += EvaluateAttributeAtCentroid(inF1); oF2 += EvaluateAttributeAtCentroid(inF2); oF3 += EvaluateAttributeAtCentroid(inF3); oF4 += EvaluateAttributeAtCentroid(inF4); oF2 += EvaluateAttributeSnapped(i.vPos, int2(0,1)); oF2 += EvaluateAttributeAtSample(i.vPos, 3); oF2 += EvaluateAttributeAtCentroid(i.vPos); float4 color = float4(oF1, oF2.y, oF3.z, oF4.w); return color; } glslang-16.0.0/Test/hlsl.intrinsics.f1632.frag000066400000000000000000000006221506534232700207020ustar00rootroot00000000000000float PixelShaderFunctionS(uint inF0) { return f16tof32(inF0); } float1 PixelShaderFunction1(uint1 inF0) { return f16tof32(inF0); } float2 PixelShaderFunction2(uint2 inF0) { return f16tof32(inF0); } float3 PixelShaderFunction3(uint3 inF0) { return f16tof32(inF0); } float4 PixelShaderFunction(uint4 inF0) { return f16tof32(inF0); } float4 main() : SV_Target0 { return 0; } glslang-16.0.0/Test/hlsl.intrinsics.f3216.frag000066400000000000000000000006221506534232700207020ustar00rootroot00000000000000uint PixelShaderFunctionS(float inF0) { return f32tof16(inF0); } uint1 PixelShaderFunction1(float1 inF0) { return f32tof16(inF0); } uint2 PixelShaderFunction2(float2 inF0) { return f32tof16(inF0); } uint3 PixelShaderFunction3(float3 inF0) { return f32tof16(inF0); } uint4 PixelShaderFunction(float4 inF0) { return f32tof16(inF0); } float4 main() : SV_Target0 { return 0; } glslang-16.0.0/Test/hlsl.intrinsics.frag000066400000000000000000000402731506534232700201500ustar00rootroot00000000000000 groupshared uint gs_ua; groupshared uint gs_ub; groupshared uint gs_uc; groupshared uint2 gs_ua2; groupshared uint2 gs_ub2; groupshared uint2 gs_uc2; groupshared uint3 gs_ua3; groupshared uint3 gs_ub3; groupshared uint3 gs_uc3; groupshared uint4 gs_ua4; groupshared uint4 gs_ub4; groupshared uint4 gs_uc4; float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, int inU1) { uint out_u1; bool r000 = all(inF0); float r001 = abs(inF0); float r002 = acos(inF0); bool r003 = any(inF0); float r004 = asin(inF0); int r005 = asint(inF0); uint r006 = asuint(inU1); float r007 = asfloat(inU0); // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics float r009 = atan(inF0); float r010 = atan2(inF0, inF1); float r011 = ceil(inF0); float r012 = clamp(inF0, inF1, inF2); clip(inF0); clip(r005); float r014 = cos(inF0); float r015 = cosh(inF0); int r016 = countbits(7); float r017 = ddx(inF0); float r018 = ddx_coarse(inF0); float r019 = ddx_fine(inF0); float r020 = ddy(inF0); float r021 = ddy_coarse(inF0); float r022 = ddy_fine(inF0); float r023 = degrees(inF0); float r024 = distance(inF0, inF1); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); float r027 = exp(inF0); float r028 = exp2(inF0); uint r029 = firstbithigh(7); uint r030 = firstbitlow(7); float r031 = floor(inF0); // TODO: fma(inD0, inD1, inD2); float r033 = fmod(inF0, inF1); float r033i = fmod(inF0, 2); float r034 = frac(inF0); float r036 = fwidth(inF0); bool r037 = isinf(inF0); bool r038 = isnan(inF0); float r039 = ldexp(inF0, inF1); float r039a = lerp(inF0, inF1, inF2); float r040 = log(inF0); float r041 = log10(inF0); float r042 = log2(inF0); float r043 = max(inF0, inF1); float r044 = min(inF0, inF1); float r045 = pow(inF0, inF1); float r046 = radians(inF0); float r047 = rcp(inF0); uint r048 = reversebits(2); float r049 = round(inF0); float r050 = rsqrt(inF0); float r051 = saturate(inF0); float r052 = sign(inF0); float r053 = sin(inF0); sincos(inF0, inF1, inF2); float r055 = sinh(inF0); float r056 = smoothstep(inF0, inF1, inF2); float r057 = sqrt(inF0); float r058 = step(inF0, inF1); float r059 = tan(inF0); float r060 = tanh(inF0); // TODO: sampler intrinsics, when we can declare the types. float r061 = trunc(inF0); return 0.0; } float1 PixelShaderFunction1(float1 inF0, float1 inF1, float1 inF2) { // TODO: ... add when float1 prototypes are generated return 0.0; } float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1) { uint2 out_u2; bool r000 = all(inF0); float2 r001 = abs(inF0); float2 r002 = acos(inF0); bool r003 = any(inF0); float2 r004 = asin(inF0); int2 r005 = asint(inF0); uint2 r006 = asuint(inF0); float2 r007 = asfloat(inU0); // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics float2 r009 = atan(inF0); float2 r010 = atan2(inF0, inF1); float2 r011 = ceil(inF0); float2 r012 = clamp(inF0, inF1, inF2); clip(inF0); clip(inU0); float2 r013 = cos(inF0); float2 r015 = cosh(inF0); int2 r016 = countbits(int2(7,3)); float2 r017 = ddx(inF0); float2 r018 = ddx_coarse(inF0); float2 r019 = ddx_fine(inF0); float2 r020 = ddy(inF0); float2 r021 = ddy_coarse(inF0); float2 r022 = ddy_fine(inF0); float2 r023 = degrees(inF0); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); float r026 = distance(inF0, inF1); float r027 = dot(inF0, inF1); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); float2 r028 = exp(inF0); float2 r029 = exp2(inF0); float2 r030 = faceforward(inF0, inF1, inF2); uint2 r031 = firstbithigh(uint2(7,8)); uint2 r032 = firstbitlow(uint2(7,8)); float2 r033 = floor(inF0); // TODO: fma(inD0, inD1, inD2); float2 r035 = fmod(inF0, inF1); float2 r036 = frac(inF0); float2 r038 = fwidth(inF0); bool2 r039 = isinf(inF0); bool2 r040 = isnan(inF0); float2 r041 = ldexp(inF0, inF1); float2 r039a = lerp(inF0, inF1, inF2); float r042 = length(inF0); float2 r043 = log(inF0); float2 r044 = log10(inF0); float2 r045 = log2(inF0); float2 r046 = max(inF0, inF1); float2 r047 = min(inF0, inF1); float2 r048 = normalize(inF0); float2 r049 = pow(inF0, inF1); float2 r050 = radians(inF0); float2 r051 = rcp(inF0); float2 r052 = reflect(inF0, inF1); float2 r053 = refract(inF0, inF1, 2.0); uint2 r054 = reversebits(uint2(1,2)); float2 r055 = round(inF0); float2 r056 = rsqrt(inF0); float2 r057 = saturate(inF0); float2 r058 = sign(inF0); float2 r059 = sin(inF0); sincos(inF0, inF1, inF2); float2 r060 = sinh(inF0); float2 r061 = smoothstep(inF0, inF1, inF2); float2 r062 = sqrt(inF0); float2 r063 = step(inF0, inF1); float2 r064 = tan(inF0); float2 r065 = tanh(inF0); // TODO: sampler intrinsics, when we can declare the types. float2 r066 = trunc(inF0); // TODO: ... add when float1 prototypes are generated return float2(1,2); } float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1) { uint3 out_u3; bool r000 = all(inF0); float3 r001 = abs(inF0); float3 r002 = acos(inF0); bool r003 = any(inF0); float3 r004 = asin(inF0); int3 r005 = asint(inF0); uint3 r006 = asuint(inF0); float3 r007 = asfloat(inU0); // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics float3 r009 = atan(inF0); float3 r010 = atan2(inF0, inF1); float3 r011 = ceil(inF0); float3 r012 = clamp(inF0, inF1, inF2); clip(inF0); clip(inU0); float3 r013 = cos(inF0); float3 r014 = cosh(inF0); uint3 r015 = countbits(uint3(7,3,5)); float3 r016 = cross(inF0, inF1); float3 r017 = ddx(inF0); float3 r018 = ddx_coarse(inF0); float3 r019 = ddx_fine(inF0); float3 r020 = ddy(inF0); float3 r021 = ddy_coarse(inF0); float3 r022 = ddy_fine(inF0); float3 r023 = degrees(inF0); float r024 = distance(inF0, inF1); float r025 = dot(inF0, inF1); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); float3 r029 = exp(inF0); float3 r030 = exp2(inF0); float3 r031 = faceforward(inF0, inF1, inF2); uint3 r032 = firstbithigh(uint3(2,3,4)); uint3 r033 = firstbitlow(uint3(2,3,4)); float3 r034 = floor(inF0); // TODO: fma(inD0, inD1, inD2); float3 r036 = fmod(inF0, inF1); float3 r037 = frac(inF0); float3 r039 = fwidth(inF0); bool3 r040 = isinf(inF0); bool3 r041 = isnan(inF0); float3 r042 = ldexp(inF0, inF1); float3 r039a = lerp(inF0, inF1, inF2); float3 r039b = lerp(inF0, inF1, 0.3); // test vec,vec,scalar lerp float r043 = length(inF0); float3 r044 = log(inF0); float3 r045 = log10(inF0); float3 r046 = log2(inF0); float3 r047 = max(inF0, inF1); float3 r048 = min(inF0, inF1); float3 r049 = normalize(inF0); float3 r050 = pow(inF0, inF1); float3 r051 = radians(inF0); float3 r052 = rcp(inF0); float3 r053 = reflect(inF0, inF1); float3 r054 = refract(inF0, inF1, 2.0); uint3 r055 = reversebits(uint3(1,2,3)); float3 r056 = round(inF0); float3 r057 = rsqrt(inF0); float3 r058 = saturate(inF0); float3 r059 = sign(inF0); float3 r060 = sin(inF0); sincos(inF0, inF1, inF2); float3 r061 = sinh(inF0); float3 r062 = smoothstep(inF0, inF1, inF2); float3 r063 = sqrt(inF0); float3 r064 = step(inF0, inF1); float3 r065 = tan(inF0); float3 r066 = tanh(inF0); // TODO: sampler intrinsics, when we can declare the types. float3 r067 = trunc(inF0); // TODO: ... add when float1 prototypes are generated return float3(1,2,3); } float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1) { uint4 out_u4; bool r000 = all(inF0); float4 r001 = abs(inF0); float4 r002 = acos(inF0); bool r003 = any(inF0); float4 r004 = asin(inF0); int4 r005 = asint(inF0); uint4 r006 = asuint(inF0); float4 r007 = asfloat(inU0); // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics float4 r009 = atan(inF0); float4 r010 = atan2(inF0, inF1); float4 r011 = ceil(inF0); float4 r012 = clamp(inF0, inF1, inF2); clip(inF0); clip(inU0); float4 r013 = cos(inF0); float4 r014 = cosh(inF0); uint4 r015 = countbits(uint4(7,3,5,2)); float4 r016 = ddx(inF0); float4 r017 = ddx_coarse(inF0); float4 r018 = ddx_fine(inF0); float4 r019 = ddy(inF0); float4 r020 = ddy_coarse(inF0); float4 r021 = ddy_fine(inF0); float4 r022 = degrees(inF0); float r023 = distance(inF0, inF1); float r024 = dot(inF0, inF1); float4 r025 = dst(inF0, inF1); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); float4 r029 = exp(inF0); float4 r030 = exp2(inF0); float4 r031 = faceforward(inF0, inF1, inF2); uint4 r032 = firstbithigh(uint4(7,8,9,10)); uint4 r033 = firstbitlow(uint4(7,8,9,10)); float4 r034 = floor(inF0); // TODO: fma(inD0, inD1, inD2); float4 r036 = fmod(inF0, inF1); float4 r037 = frac(inF0); float4 r039 = fwidth(inF0); bool4 r040 = isinf(inF0); bool4 r041 = isnan(inF0); float4 r042 = ldexp(inF0, inF1); float4 r039a = lerp(inF0, inF1, inF2); float r043 = length(inF0); float4 r044 = log(inF0); float4 r045 = log10(inF0); float4 r046 = log2(inF0); float4 r047 = max(inF0, inF1); float4 r048 = min(inF0, inF1); float4 r049 = normalize(inF0); float4 r050 = pow(inF0, inF1); float4 r051 = radians(inF0); float4 r052 = rcp(inF0); float4 r053 = reflect(inF0, inF1); float4 r054 = refract(inF0, inF1, 2.0); uint4 r055 = reversebits(uint4(1,2,3,4)); float4 r056 = round(inF0); float4 r057 = rsqrt(inF0); float4 r058 = saturate(inF0); float4 r059 = sign(inF0); float4 r060 = sin(inF0); sincos(inF0, inF1, inF2); float4 r061 = sinh(inF0); float4 r062 = smoothstep(inF0, inF1, inF2); float4 r063 = sqrt(inF0); float4 r064 = step(inF0, inF1); float4 r065 = tan(inF0); float4 r066 = tanh(inF0); // TODO: sampler intrinsics, when we can declare the types. float4 r067 = trunc(inF0); // TODO: ... add when float1 prototypes are generated return float4(1,2,3,4); } // TODO: for mats: // asfloat(inU0); \ // asint(inF0); \ // asuint(inF0); \ // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. #define MATFNS(MT) \ bool r000 = all(inF0); \ MT r001 = abs(inF0); \ acos(inF0); \ bool r003 = any(inF0); \ MT r004 = asin(inF0); \ MT r005 = atan(inF0); \ MT r006 = atan2(inF0, inF1); \ MT r007 = ceil(inF0); \ clip(inF0); \ MT r008 = clamp(inF0, inF1, inF2); \ MT r009 = cos(inF0); \ MT r010 = cosh(inF0); \ MT r011 = ddx(inF0); \ MT r012 = ddx_coarse(inF0); \ MT r013 = ddx_fine(inF0); \ MT r014 = ddy(inF0); \ MT r015 = ddy_coarse(inF0); \ MT r016 = ddy_fine(inF0); \ MT r017 = degrees(inF0); \ float r018 = determinant(inF0); \ MT r019 = exp(inF0); \ MT R020 = exp2(inF0); \ MT r021 = floor(inF0); \ MT r022 = fmod(inF0, inF1); \ MT r023 = frac(inF0); \ MT r025 = fwidth(inF0); \ MT r026 = ldexp(inF0, inF1); \ MT r026a = lerp(inF0, inF1, inF2); \ MT r027 = log(inF0); \ MT r028 = log10(inF0); \ MT r029 = log2(inF0); \ MT r030 = max(inF0, inF1); \ MT r031 = min(inF0, inF1); \ MT r032 = pow(inF0, inF1); \ MT r033 = radians(inF0); \ MT r034 = round(inF0); \ MT r035 = rsqrt(inF0); \ MT r036 = saturate(inF0); \ MT r037 = sign(inF0); \ MT r038 = sin(inF0); \ sincos(inF0, inF1, inF2); \ MT r039 = sinh(inF0); \ MT r049 = smoothstep(inF0, inF1, inF2); \ MT r041 = sqrt(inF0); \ MT r042 = step(inF0, inF1); \ MT r043 = tan(inF0); \ MT r044 = tanh(inF0); \ transpose(inF0); \ MT r046 = trunc(inF0); // TODO: turn on non-square matrix tests when protos are available. float2x2 PixelShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS(float2x2); // TODO: ... add when float1 prototypes are generated return float2x2(2,2,2,2); } float3x3 PixelShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS(float3x3); // TODO: ... add when float1 prototypes are generated return float3x3(3,3,3,3,3,3,3,3,3); } float4x4 PixelShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS(float4x4); // TODO: ... add when float1 prototypes are generated return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); } #define TESTGENMUL(ST, VT, MT) \ ST r0 = mul(inF0, inF1); \ VT r1 = mul(inFV0, inF0); \ VT r2 = mul(inF0, inFV0); \ ST r3 = mul(inFV0, inFV1); \ VT r4 = mul(inFM0, inFV0); \ VT r5 = mul(inFV0, inFM0); \ MT r6 = mul(inFM0, inF0); \ MT r7 = mul(inF0, inFM0); \ MT r8 = mul(inFM0, inFM1); void TestGenMul2(float inF0, float inF1, float2 inFV0, float2 inFV1, float2x2 inFM0, float2x2 inFM1) { TESTGENMUL(float, float2, float2x2); } void TestGenMul3(float inF0, float inF1, float3 inFV0, float3 inFV1, float3x3 inFM0, float3x3 inFM1) { TESTGENMUL(float, float3, float3x3); } void TestGenMul4(float inF0, float inF1, float4 inFV0, float4 inFV1, float4x4 inFM0, float4x4 inFM1) { TESTGENMUL(float, float4, float4x4); } // Test some non-square mats void TestGenMulNxM(float inF0, float inF1, float2 inFV2, float3 inFV3, float2x3 inFM2x3, float3x2 inFM3x2, float3x3 inFM3x3, float3x4 inFM3x4, float2x4 inFM2x4) { float r00 = mul(inF0, inF1); // S=S*S float2 r01 = mul(inFV2, inF0); // V=V*S float3 r02 = mul(inFV3, inF0); // V=V*S float2 r03 = mul(inF0, inFV2); // V=S*V float3 r04 = mul(inF0, inFV3); // V=S*V float r05 = mul(inFV2, inFV2); // S=V*V float r06 = mul(inFV3, inFV3); // S=V*V float3 r07 = mul(inFV2, inFM2x3); // V=V*M (return V dim is Mcols) float2 r08 = mul(inFV3, inFM3x2); // V=V*M (return V dim is Mcols) float2 r09 = mul(inFM2x3, inFV3); // V=M*V (return V dim is Mrows) float3 r10 = mul(inFM3x2, inFV2); // V=M*V (return V dim is Mrows) float2x3 r11 = mul(inFM2x3, inF0); float3x2 r12 = mul(inFM3x2, inF0); float2x2 r13 = mul(inFM2x3, inFM3x2); float2x3 r14 = mul(inFM2x3, inFM3x3); float2x4 r15 = mul(inFM2x3, inFM3x4); float3x4 r16 = mul(inFM3x2, inFM2x4); } struct PS_OUTPUT { float4 color : SV_Target0; }; PS_OUTPUT main() { PS_OUTPUT ps_output; ps_output.color = 1.0; return ps_output; }; glslang-16.0.0/Test/hlsl.intrinsics.lit.frag000066400000000000000000000001561506534232700207330ustar00rootroot00000000000000void PixelShaderFunction(float n_dot_l, float n_dot_h, float m) { float4 r0 = lit(n_dot_l, n_dot_h, m); } glslang-16.0.0/Test/hlsl.intrinsics.negative.comp000066400000000000000000000364131506534232700217710ustar00rootroot00000000000000void ComputeShaderFunctionS(float inF0, float inF1, float inF2, int inI0) { uint out_u1; // AllMemoryBarrier(); // invalid in fragment stage TODO: parser currently crashes on empty arg list // AllMemoryBarrierWithGroupSync(); // invalid in fragment stage TODO: parser currently crashes on empty arg list // asdouble(inF0, inF1); // expected error: only integer inputs // CheckAccessFullyMapped(3.0); // expected error: only valid on integers // clip(inF0); // expected error: only valid in pixel stage // countbits(inF0); // expected error: only integer inputs // cross(inF0, inF1); // expected error: only on float3 inputs // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs // ddx(inF0); // expected error: only valid in pixel stage // ddx_coarse(inF0); // expected error: only valid in pixel stage // ddx_fine(inF0); // expected error: only valid in pixel stage // ddy(inF0); // expected error: only valid in pixel stage // ddy_coarse(inF0); // expected error: only valid in pixel stage // ddy_fine(inF0); // expected error: only valid in pixel stage // determinant(inF0); // expected error: only valid on mats // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant // f16tof32(inF0); // expected error: only integer inputs // firstbithigh(inF0); // expected error: only integer inputs // firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // fwidth(inF0); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage // InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage // InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // length(inF0); // expect error: invalid on scalars // msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs // normalize(inF0); // expect error: invalid on scalars // reflect(inF0, inF1); // expect error: invalid on scalars // refract(inF0, inF1, inF2); // expect error: invalid on scalars // refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar // reversebits(inF0); // expected error: only integer inputs // transpose(inF0); // expect error: only valid on mats // TODO: texture intrinsics, when we can declare samplers. } void ComputeShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0) { // TODO: ... add when float1 prototypes are generated // GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs } void ComputeShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0) { uint2 out_u2; // asdouble(inF0, inF1); // expected error: only integer inputs // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars // countbits(inF0); // expected error: only integer inputs // cross(inF0, inF1); // expected error: only on float3 inputs // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs // ddx(inF0); // only valid in pixel stage // ddx_coarse(inF0); // only valid in pixel stage // ddx_fine(inF0); // only valid in pixel stage // ddy(inF0); // only valid in pixel stage // ddy_coarse(inF0); // only valid in pixel stage // ddy_fine(inF0); // only valid in pixel stage // determinant(inF0); // expect error: only valid on mats // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant // f16tof32(inF0); // expected error: only integer inputs // firstbithigh(inF0); // expected error: only integer inputs // firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // fwidth(inF0); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage // InterlockedExchange(gs_ua2, gs_ub2, out_u2);// expected error: only valid in pixel stage // InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // noise(inF0); // expected error: only valid in pixel stage // reversebits(inF0); // expected error: only integer inputs // transpose(inF0); // expect error: only valid on mats // TODO: texture intrinsics, when we can declare samplers. } void ComputeShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0) { uint3 out_u3; // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars // countbits(inF0); // expected error: only integer inputs // ddx(inF0); // only valid in pixel stage // ddx_coarse(inF0); // only valid in pixel stage // ddx_fine(inF0); // only valid in pixel stage // ddy(inF0); // only valid in pixel stage // ddy_coarse(inF0); // only valid in pixel stage // ddy_fine(inF0); // only valid in pixel stage // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs // determinant(inF0); // expect error: only valid on mats // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant // f16tof32(inF0); // expected error: only integer inputs // firstbithigh(inF0); // expected error: only integer inputs // firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // fwidth(inF0); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage // InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // noise(inF0); // expected error: only valid in pixel stage // reversebits(inF0); // expected error: only integer inputs // transpose(inF0); // expect error: only valid on mats // TODO: texture intrinsics, when we can declare samplers. } void ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0) { uint4 out_u4; // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars // countbits(inF0); // expected error: only integer inputs // cross(inF0, inF1); // expected error: only on float3 inputs // determinant(inF0); // expect error: only valid on mats // ddx(inF0); // only valid in pixel stage // ddx_coarse(inF0); // only valid in pixel stage // ddx_fine(inF0); // only valid in pixel stage // ddy(inF0); // only valid in pixel stage // ddy_coarse(inF0); // only valid in pixel stage // ddy_fine(inF0); // only valid in pixel stage // EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage // EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage // f16tof32(inF0); // expected error: only integer inputs // firstbithigh(inF0); // expected error: only integer inputs // firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // fwidth(inF0); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage // InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // noise(inF0); // expected error: only valid in pixel stage // reversebits(inF0); // expected error: only integer inputs // transpose(inF0); // expect error: only valid on mats // TODO: texture intrinsics, when we can declare samplers. } glslang-16.0.0/Test/hlsl.intrinsics.negative.frag000066400000000000000000000160351506534232700217500ustar00rootroot00000000000000float PixelShaderFunctionS(float inF0, float inF1, float inF2, int inI0) { // AllMemoryBarrier(); // TODO: expected error: invalid in fragment stage // AllMemoryBarrierWithGroupSync(); // TODO: expected error: invalid in fragment stage asdouble(inF0, inF1); // expected error: only integer inputs CheckAccessFullyMapped(3.0); // expected error: only valid on integers countbits(inF0); // expected error: only integer inputs cross(inF0, inF1); // expected error: only on float3 inputs D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs determinant(inF0); // expected error: only valid on mats // DeviceMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage f16tof32(inF0); // expected error: only integer inputs firstbithigh(inF0); // expected error: only integer inputs firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // InterlockedAdd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator // InterlockedAnd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out i // InterlockedMax(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator // InterlockedMin(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator // InterlockedOor(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator // InterlockedXor(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator // GroupMemoryBarrier(); // TODO: expected error: invalid in fragment stage // GroupMemoryBarrierWithGroupSync(); // TODO: expected error: invalid in fragment stage length(inF0); // expected error: invalid on scalars msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs normalize(inF0); // expected error: invalid on scalars reflect(inF0, inF1); // expected error: invalid on scalars refract(inF0, inF1, inF2); // expected error: invalid on scalars refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar reversebits(inF0); // expected error: only integer inputs transpose(inF0); // expected error: only valid on mats return 0.0; } float1 PixelShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0) { // TODO: ... add when float1 prototypes are generated GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs return 0.0; } float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0) { asdouble(inF0, inF1); // expected error: only integer inputs CheckAccessFullyMapped(inF0); // expected error: only valid on scalars countbits(inF0); // expected error: only integer inputs cross(inF0, inF1); // expected error: only on float3 inputs D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs determinant(inF0); // expected error: only valid on mats f16tof32(inF0); // expected error: only integer inputs firstbithigh(inF0); // expected error: only integer inputs firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC reversebits(inF0); // expected error: only integer inputs transpose(inF0); // expected error: only valid on mats return float2(1,2); } float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0) { CheckAccessFullyMapped(inF0); // expected error: only valid on scalars countbits(inF0); // expected error: only integer inputs D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs determinant(inF0); // expected error: only valid on mats f16tof32(inF0); // expected error: only integer inputs firstbithigh(inF0); // expected error: only integer inputs firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC reversebits(inF0); // expected error: only integer inputs transpose(inF0); // expected error: only valid on mats return float3(1,2,3); } float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0) { CheckAccessFullyMapped(inF0); // expected error: only valid on scalars countbits(inF0); // expected error: only integer inputs cross(inF0, inF1); // expected error: only on float3 inputs determinant(inF0); // expected error: only valid on mats f16tof32(inF0); // expected error: only integer inputs firstbithigh(inF0); // expected error: only integer inputs firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC reversebits(inF0); // expected error: only integer inputs transpose(inF0); // expected error: only valid on mats return float4(1,2,3,4); } // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. #define MATFNS() \ countbits(inF0); \ D3DCOLORtoUBYTE4(inF0); \ cross(inF0, inF1); \ f16tof32(inF0); \ firstbithigh(inF0); \ firstbitlow(inF0); \ reversebits(inF0); \ length(inF0); \ noise(inF0); \ normalize(inF0); \ reflect(inF0, inF1); \ refract(inF0, inF1, 1.0); \ reversebits(inF0); \ // TODO: turn on non-square matrix tests when protos are available. float2x2 PixelShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS() return float2x2(2,2,2,2); } float3x3 PixelShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS() return float3x3(3,3,3,3,3,3,3,3,3); } float4x4 PixelShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS() return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); } glslang-16.0.0/Test/hlsl.intrinsics.negative.vert000066400000000000000000000432171506534232700220130ustar00rootroot00000000000000static uint gs_ua; static uint gs_ub; static uint gs_uc; static uint2 gs_ua2; static uint2 gs_ub2; static uint2 gs_uc2; static uint3 gs_ua3; static uint3 gs_ub3; static uint3 gs_uc3; static uint4 gs_ua4; static uint4 gs_ub4; static uint4 gs_uc4; float VertexShaderFunctionS(float inF0, float inF1, float inF2, int inI0) { uint out_u1; // AllMemoryBarrier(); // expected error: only valid in compute stage // AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage // asdouble(inF0, inF1); // expected error: only integer inputs // CheckAccessFullyMapped(3.0); // expected error: only valid on integers // CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages // clip(inF0); // expected error: only valid in pixel stage // countbits(inF0); // expected error: only integer inputs // cross(inF0, inF1); // expected error: only on float3 inputs // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs // DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages // DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage // ddx(inF0); // expected error: only valid in pixel stage // ddx_coarse(inF0); // expected error: only valid in pixel stage // ddx_fine(inF0); // expected error: only valid in pixel stage // ddy(inF0); // expected error: only valid in pixel stage // ddy_coarse(inF0); // expected error: only valid in pixel stage // ddy_fine(inF0); // expected error: only valid in pixel stage // determinant(inF0); // expected error: only valid on mats // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant // f16tof32(inF0); // expected error: only integer inputs // firstbithigh(inF0); // expected error: only integer inputs // firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // fwidth(inF0); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage // InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage // InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage // InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage // GroupMemoryBarrier(); // expected error: only valid in compute stage // GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage // length(inF0); // expect error: invalid on scalars // msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs // normalize(inF0); // expect error: invalid on scalars // reflect(inF0, inF1); // expect error: invalid on scalars // refract(inF0, inF1, inF2); // expect error: invalid on scalars // refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar // reversebits(inF0); // expected error: only integer inputs // transpose(inF0); // expect error: only valid on mats // TODO: texture intrinsics, when we can declare samplers. return 0.0; } float1 VertexShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0) { // TODO: ... add when float1 prototypes are generated // GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs return 0.0; } float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0) { uint2 out_u2; // asdouble(inF0, inF1); // expected error: only integer inputs // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars // countbits(inF0); // expected error: only integer inputs // cross(inF0, inF1); // expected error: only on float3 inputs // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs // ddx(inF0); // only valid in pixel stage // ddx_coarse(inF0); // only valid in pixel stage // ddx_fine(inF0); // only valid in pixel stage // ddy(inF0); // only valid in pixel stage // ddy_coarse(inF0); // only valid in pixel stage // ddy_fine(inF0); // only valid in pixel stage // determinant(inF0); // expect error: only valid on mats // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant // f16tof32(inF0); // expected error: only integer inputs // firstbithigh(inF0); // expected error: only integer inputs // firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // fwidth(inF0); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage // InterlockedExchange(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage // InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage // noise(inF0); // expected error: only valid in pixel stage // reversebits(inF0); // expected error: only integer inputs // transpose(inF0); // expect error: only valid on mats // TODO: texture intrinsics, when we can declare samplers. return float2(1,2); } float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0) { uint3 out_u3; // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars // countbits(inF0); // expected error: only integer inputs // ddx(inF0); // only valid in pixel stage // ddx_coarse(inF0); // only valid in pixel stage // ddx_fine(inF0); // only valid in pixel stage // ddy(inF0); // only valid in pixel stage // ddy_coarse(inF0); // only valid in pixel stage // ddy_fine(inF0); // only valid in pixel stage // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs // determinant(inF0); // expect error: only valid on mats // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant // f16tof32(inF0); // expected error: only integer inputs // firstbithigh(inF0); // expected error: only integer inputs // firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // fwidth(inF0); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage // InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage // InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage // noise(inF0); // expected error: only valid in pixel stage // reversebits(inF0); // expected error: only integer inputs // transpose(inF0); // expect error: only valid on mats // TODO: texture intrinsics, when we can declare samplers. return float3(1,2,3); } float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0) { uint4 out_u4; // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars // countbits(inF0); // expected error: only integer inputs // cross(inF0, inF1); // expected error: only on float3 inputs // determinant(inF0); // expect error: only valid on mats // ddx(inF0); // only valid in pixel stage // ddx_coarse(inF0); // only valid in pixel stage // ddx_fine(inF0); // only valid in pixel stage // ddy(inF0); // only valid in pixel stage // ddy_coarse(inF0); // only valid in pixel stage // ddy_fine(inF0); // only valid in pixel stage // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant // f16tof32(inF0); // expected error: only integer inputs // firstbithigh(inF0); // expected error: only integer inputs // firstbitlow(inF0); // expected error: only integer inputs // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC // fwidth(inF0); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage // InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage // InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage // noise(inF0); // expected error: only valid in pixel stage // reversebits(inF0); // expected error: only integer inputs // transpose(inF0); // expect error: only valid on mats // TODO: texture intrinsics, when we can declare samplers. return float4(1,2,3,4); } // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. #define MATFNS() // TODO: turn on non-square matrix tests when protos are available. float2x2 VertexShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS() return float2x2(2,2,2,2); } float3x3 VertexShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS() return float3x3(3,3,3,3,3,3,3,3,3); } float4x4 VertexShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS() return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); } glslang-16.0.0/Test/hlsl.intrinsics.promote.down.frag000066400000000000000000000004651506534232700226010ustar00rootroot00000000000000 struct PS_OUTPUT { float4 color : SV_Target0; }; int i; uint u; float f; bool b; int2 i2; uint2 u2; float2 f2; bool2 b2; PS_OUTPUT main() { uint r00 = countbits(f); uint2 r01 = reversebits(f2); PS_OUTPUT ps_output; ps_output.color = float4(0,0,0,0); return ps_output; }; glslang-16.0.0/Test/hlsl.intrinsics.promote.frag000066400000000000000000000032751506534232700216350ustar00rootroot00000000000000 struct PS_OUTPUT { float4 color : SV_Target0; }; int i; uint u; float f; bool b; int2 i2; uint2 u2; float2 f2; bool2 b2; Buffer g_tTexbfs; Texture1D g_tTex1df4; uint upos; float fpos; PS_OUTPUT main() { // Same shapes: float r00 = max(b, f); uint r01 = max(b, u); int r02 = max(b, i); float r03 = max(i, f); float r04 = max(u, f); float2 r10 = max(b2, f2); uint2 r11 = max(b2, u2); int2 r12 = max(b2, i2); float2 r13 = max(i2, f2); float2 r14 = max(u2, f2); float2 r20 = clamp(i2, u2, f2); // 3 args, converts all to best type. uint2 r21 = clamp(b2, u2, b2); float2 r22 = clamp(b2, f2, b2); // Mixed shapes: float2 r30 = max(b, f2); uint2 r31 = max(b, u2); int2 r32 = max(b, i2); float2 r33 = max(i, f2); float2 r34 = max(u, f2); float2 r40 = clamp(i, u2, f2); // 3 args, converts all to best type. uint2 r41 = clamp(b2, u, b2); float2 r42 = clamp(b2, f, b); int2 r43 = clamp(i, i2, u2); float r50 = g_tTexbfs.Load(upos); float r51 = g_tTexbfs.Load(fpos); int MipLevel; uint WidthU; uint HeightU; uint ElementsU; uint DepthU; uint NumberOfLevelsU; uint NumberOfSamplesU; int WidthI; int HeightI; int ElementsI; int DepthI; int NumberOfLevelsI; int NumberOfSamplesI; g_tTex1df4 . GetDimensions(WidthI); g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsU); g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsI); g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsI); // max(i2, f2); PS_OUTPUT ps_output; ps_output.color = r00; return ps_output; }; glslang-16.0.0/Test/hlsl.intrinsics.promote.outputs.frag000066400000000000000000000015601506534232700233520ustar00rootroot00000000000000 struct PS_OUTPUT { float4 color : SV_Target0; }; int i; uint u; float f; bool b; int2 i2; uint2 u2; float2 f2; bool2 b2; Buffer g_tTexbfs; Texture1D g_tTex1df4; uint upos; float fpos; PS_OUTPUT main() { int MipLevel; uint WidthU; uint HeightU; uint ElementsU; uint DepthU; uint NumberOfLevelsU; uint NumberOfSamplesU; int WidthI; int HeightI; int ElementsI; int DepthI; int NumberOfLevelsI; int NumberOfSamplesI; saturate(fpos); // Test output promotions g_tTex1df4 . GetDimensions(WidthI); g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsU); g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsI); g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsI); // max(i2, f2); PS_OUTPUT ps_output; ps_output.color = 0; return ps_output; }; glslang-16.0.0/Test/hlsl.intrinsics.vert000066400000000000000000000242661506534232700202150ustar00rootroot00000000000000float VertexShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) { all(inF0); abs(inF0); acos(inF0); any(inF0); asin(inF0); asint(inF0); asuint(inF0); asfloat(inU0); // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics atan(inF0); atan2(inF0, inF1); ceil(inF0); clamp(inF0, inF1, inF2); cos(inF0); cosh(inF0); countbits(7); degrees(inF0); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); exp(inF0); exp2(inF0); firstbithigh(7); firstbitlow(7); floor(inF0); // TODO: fma(inD0, inD1, inD2); fmod(inF0, inF1); frac(inF0); isinf(inF0); isnan(inF0); ldexp(inF0, inF1); lerp(inF0, inF1, inF2); log(inF0); log10(inF0); log2(inF0); max(inF0, inF1); min(inF0, inF1); // TODO: mul(inF0, inF1); pow(inF0, inF1); radians(inF0); reversebits(2); round(inF0); rsqrt(inF0); saturate(inF0); sign(inF0); sin(inF0); sincos(inF0, inF1, inF2); sinh(inF0); smoothstep(inF0, inF1, inF2); sqrt(inF0); step(inF0, inF1); tan(inF0); tanh(inF0); // TODO: sampler intrinsics, when we can declare the types. trunc(inF0); return 0.0; } float1 VertexShaderFunction1(float1 inF0, float1 inF1, float1 inF2) { // TODO: ... add when float1 prototypes are generated return 0.0; } float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1) { all(inF0); abs(inF0); acos(inF0); any(inF0); asin(inF0); asint(inF0); asuint(inF0); asfloat(inU0); // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics atan(inF0); atan2(inF0, inF1); ceil(inF0); clamp(inF0, inF1, inF2); cos(inF0); cosh(inF0); countbits(int2(7,3)); degrees(inF0); distance(inF0, inF1); dot(inF0, inF1); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); exp(inF0); exp2(inF0); faceforward(inF0, inF1, inF2); firstbithigh(7); firstbitlow(7); floor(inF0); // TODO: fma(inD0, inD1, inD2); fmod(inF0, inF1); frac(inF0); isinf(inF0); isnan(inF0); ldexp(inF0, inF1); lerp(inF0, inF1, inF2); length(inF0); log(inF0); log10(inF0); log2(inF0); max(inF0, inF1); min(inF0, inF1); // TODO: mul(inF0, inF1); normalize(inF0); pow(inF0, inF1); radians(inF0); reflect(inF0, inF1); refract(inF0, inF1, 2.0); reversebits(int2(1,2)); round(inF0); rsqrt(inF0); saturate(inF0); sign(inF0); sin(inF0); sincos(inF0, inF1, inF2); sinh(inF0); smoothstep(inF0, inF1, inF2); sqrt(inF0); step(inF0, inF1); tan(inF0); tanh(inF0); // TODO: sampler intrinsics, when we can declare the types. trunc(inF0); // TODO: ... add when float1 prototypes are generated return float2(1,2); } float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1) { all(inF0); abs(inF0); acos(inF0); any(inF0); asin(inF0); asint(inF0); asuint(inF0); asfloat(inU0); // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics atan(inF0); atan2(inF0, inF1); ceil(inF0); clamp(inF0, inF1, inF2); cos(inF0); cosh(inF0); countbits(int3(7,3,5)); cross(inF0, inF1); degrees(inF0); distance(inF0, inF1); dot(inF0, inF1); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); exp(inF0); exp2(inF0); faceforward(inF0, inF1, inF2); firstbithigh(7); firstbitlow(7); floor(inF0); // TODO: fma(inD0, inD1, inD2); fmod(inF0, inF1); frac(inF0); isinf(inF0); isnan(inF0); ldexp(inF0, inF1); lerp(inF0, inF1, inF2); length(inF0); log(inF0); log10(inF0); log2(inF0); max(inF0, inF1); min(inF0, inF1); // TODO: mul(inF0, inF1); normalize(inF0); pow(inF0, inF1); radians(inF0); reflect(inF0, inF1); refract(inF0, inF1, 2.0); reversebits(int3(1,2,3)); round(inF0); rsqrt(inF0); saturate(inF0); sign(inF0); sin(inF0); sincos(inF0, inF1, inF2); sinh(inF0); smoothstep(inF0, inF1, inF2); sqrt(inF0); step(inF0, inF1); tan(inF0); tanh(inF0); // TODO: sampler intrinsics, when we can declare the types. trunc(inF0); // TODO: ... add when float1 prototypes are generated return float3(1,2,3); } float4 VertexShaderFunction4(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1) { all(inF0); abs(inF0); acos(inF0); any(inF0); asin(inF0); asint(inF0); asuint(inF0); asfloat(inU0); // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics atan(inF0); atan2(inF0, inF1); ceil(inF0); clamp(inF0, inF1, inF2); cos(inF0); cosh(inF0); countbits(int4(7,3,5,2)); degrees(inF0); distance(inF0, inF1); dot(inF0, inF1); dst(inF0, inF1); // EvaluateAttributeAtCentroid(inF0); // EvaluateAttributeAtSample(inF0, 0); // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); exp(inF0); exp2(inF0); faceforward(inF0, inF1, inF2); firstbithigh(7); firstbitlow(7); floor(inF0); // TODO: fma(inD0, inD1, inD2); fmod(inF0, inF1); frac(inF0); isinf(inF0); isnan(inF0); ldexp(inF0, inF1); lerp(inF0, inF1, inF2); length(inF0); log(inF0); log10(inF0); log2(inF0); max(inF0, inF1); min(inF0, inF1); // TODO: mul(inF0, inF1); normalize(inF0); pow(inF0, inF1); radians(inF0); reflect(inF0, inF1); refract(inF0, inF1, 2.0); reversebits(int4(1,2,3,4)); round(inF0); rsqrt(inF0); saturate(inF0); sign(inF0); sin(inF0); sincos(inF0, inF1, inF2); sinh(inF0); smoothstep(inF0, inF1, inF2); sqrt(inF0); step(inF0, inF1); tan(inF0); tanh(inF0); // TODO: sampler intrinsics, when we can declare the types. trunc(inF0); // TODO: ... add when float1 prototypes are generated return float4(1,2,3,4); } // TODO: for mats: // asfloat(inU0); \ // asint(inF0); \ // asuint(inF0); \ // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. #define MATFNS() \ all(inF0); \ abs(inF0); \ acos(inF0); \ any(inF0); \ asin(inF0); \ atan(inF0); \ atan2(inF0, inF1); \ ceil(inF0); \ clamp(inF0, inF1, inF2); \ cos(inF0); \ cosh(inF0); \ degrees(inF0); \ determinant(inF0); \ exp(inF0); \ exp2(inF0); \ firstbithigh(7); \ firstbitlow(7); \ floor(inF0); \ fmod(inF0, inF1); \ frac(inF0); \ ldexp(inF0, inF1); \ lerp(inF0, inF1, inF2); \ log(inF0); \ log10(inF0); \ log2(inF0); \ max(inF0, inF1); \ min(inF0, inF1); \ pow(inF0, inF1); \ radians(inF0); \ round(inF0); \ rsqrt(inF0); \ saturate(inF0); \ sign(inF0); \ sin(inF0); \ sincos(inF0, inF1, inF2); \ sinh(inF0); \ smoothstep(inF0, inF1, inF2); \ sqrt(inF0); \ step(inF0, inF1); \ tan(inF0); \ tanh(inF0); \ transpose(inF0); \ trunc(inF0); // TODO: turn on non-square matrix tests when protos are available. float2x2 VertexShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS(); // TODO: ... add when float1 prototypes are generated return float2x2(2,2,2,2); } float3x3 VertexShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS(); // TODO: ... add when float1 prototypes are generated return float3x3(3,3,3,3,3,3,3,3,3); } float4x4 VertexShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2) { // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. MATFNS(); // TODO: ... add when float1 prototypes are generated return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); } #define TESTGENMUL(ST, VT, MT) \ ST r0 = mul(inF0, inF1); \ VT r1 = mul(inFV0, inF0); \ VT r2 = mul(inF0, inFV0); \ ST r3 = mul(inFV0, inFV1); \ VT r4 = mul(inFM0, inFV0); \ VT r5 = mul(inFV0, inFM0); \ MT r6 = mul(inFM0, inF0); \ MT r7 = mul(inF0, inFM0); \ MT r8 = mul(inFM0, inFM1); void TestGenMul2(float inF0, float inF1, float2 inFV0, float2 inFV1, float2x2 inFM0, float2x2 inFM1) { TESTGENMUL(float, float2, float2x2); } void TestGenMul3(float inF0, float inF1, float3 inFV0, float3 inFV1, float3x3 inFM0, float3x3 inFM1) { TESTGENMUL(float, float3, float3x3); } void TestGenMul4(float inF0, float inF1, float4 inFV0, float4 inFV1, float4x4 inFM0, float4x4 inFM1) { TESTGENMUL(float, float4, float4x4); } // Test some non-square mats void TestGenMulNxM(float inF0, float inF1, float2 inFV2, float3 inFV3, float2x3 inFM2x3, float3x2 inFM3x2, float3x3 inFM3x3, float3x4 inFM3x4, float2x4 inFM2x4) { float r00 = mul(inF0, inF1); // S=S*S float2 r01 = mul(inFV2, inF0); // V=V*S float3 r02 = mul(inFV3, inF0); // V=V*S float2 r03 = mul(inF0, inFV2); // V=S*V float3 r04 = mul(inF0, inFV3); // V=S*V float r05 = mul(inFV2, inFV2); // S=V*V float r06 = mul(inFV3, inFV3); // S=V*V float3 r07 = mul(inFV2, inFM2x3); // V=V*M (return V dim is Mcols) float2 r08 = mul(inFV3, inFM3x2); // V=V*M (return V dim is Mcols) float2 r09 = mul(inFM2x3, inFV3); // V=M*V (return V dim is Mrows) float3 r10 = mul(inFM3x2, inFV2); // V=M*V (return V dim is Mrows) float2x3 r11 = mul(inFM2x3, inF0); float3x2 r12 = mul(inFM3x2, inF0); float2x2 r13 = mul(inFM2x3, inFM3x2); float2x3 r14 = mul(inFM2x3, inFM3x3); float2x4 r15 = mul(inFM2x3, inFM3x4); float3x4 r16 = mul(inFM3x2, inFM2x4); } glslang-16.0.0/Test/hlsl.isfinite.frag000066400000000000000000000003331506534232700175660ustar00rootroot00000000000000 uniform float f; uniform float2 f2; uniform float3 f3; bool test1(float v) { return !isnan(v) && isfinite(v); } float4 main() : SV_Target0 { isfinite(f); isfinite(f2); isfinite(f3); return 0; } glslang-16.0.0/Test/hlsl.layout.frag000066400000000000000000000006431506534232700172750ustar00rootroot00000000000000layout(set=3,binding=5) tbuffer tbufName { layout(offset = 16) float4 v1; }; layout(push_constant) tbuffer tbufName2 { float4 v5; }; layout(constant_id=17) const int specConst = 10; tbuffer tbufName2 : layout(set=4,binding=7) { layout(offset = 16) float4 v1PostLayout; }; float4 PixelShaderFunction(float4 input) : COLOR0 { float4 layout = 2.0; return input + v1 + v5 + v1PostLayout * layout; } glslang-16.0.0/Test/hlsl.layoutOverride.vert000066400000000000000000000002401506534232700210270ustar00rootroot00000000000000layout(set=2,binding=0) Texture2D tex : register(t16); SamplerState samp; float4 main() : SV_Position { return tex.Sample(samp, float2(0.2, 0.3)); }glslang-16.0.0/Test/hlsl.load.2dms.dx10.frag000066400000000000000000000021231506534232700203110ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture2DMS g_tTex2dmsf4; Texture2DMS g_tTex2dmsi4; Texture2DMS g_tTex2dmsu4; Texture2DMSArray g_tTex2dmsf4a; Texture2DMSArray g_tTex2dmsi4a; Texture2DMSArray g_tTex2dmsu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; int2 getOffset() { return int2(1, 1); } PS_OUTPUT main() { PS_OUTPUT psout; // 2DMS, no offset g_tTex2dmsf4.Load(c2, 3); g_tTex2dmsi4.Load(c2, 3); g_tTex2dmsu4.Load(c2, 3); // 2DMS, offset g_tTex2dmsf4.Load(c2, 3, getOffset()); g_tTex2dmsi4.Load(c2, 3, getOffset()); g_tTex2dmsu4.Load(c2, 3, getOffset()); // 2DMSArray, no offset g_tTex2dmsf4a.Load(c3, 3); g_tTex2dmsi4a.Load(c3, 3); g_tTex2dmsu4a.Load(c3, 3); // 2DMSArray, offset g_tTex2dmsf4a.Load(c3, 3, getOffset()); g_tTex2dmsi4a.Load(c3, 3, getOffset()); g_tTex2dmsu4a.Load(c3, 3, getOffset()); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.array.dx10.frag000066400000000000000000000026121506534232700205650ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; // 1DArray g_tTex1df4a.Load(c3); g_tTex1di4a.Load(c3); g_tTex1du4a.Load(c3); // 2DArray g_tTex2df4a.Load(c4); g_tTex2di4a.Load(c4); g_tTex2du4a.Load(c4); // Offset has no Cube or CubeArray forms // TODO: // Load, SampleIndex // Load, SampleIndex, Offset psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.basic.dx10.frag000066400000000000000000000027141506534232700205330ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; // 1D g_tTex1df4.Load(c2); g_tTex1di4.Load(c2); g_tTex1du4.Load(c2); // 2D g_tTex2df4.Load(c3); g_tTex2di4.Load(c3); g_tTex2du4.Load(c3); // 3D g_tTex3df4.Load(c4); g_tTex3di4.Load(c4); g_tTex3du4.Load(c4); // Offset has no Cube or CubeArray forms // TODO: // Load, SampleIndex // Load, SampleIndex, Offset psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.basic.dx10.vert000066400000000000000000000025351506534232700205750ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct VS_OUTPUT { float4 Pos : SV_Position; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; VS_OUTPUT main() { VS_OUTPUT vsout; // 1D g_tTex1df4.Load(c2); g_tTex1di4.Load(c2); g_tTex1du4.Load(c2); // 2D g_tTex2df4.Load(c3); g_tTex2di4.Load(c3); g_tTex2du4.Load(c3); // 3D g_tTex3df4.Load(c4); g_tTex3di4.Load(c4); g_tTex3du4.Load(c4); // Offset has no Cube or CubeArray forms vsout.Pos = float4(0,0,0,0); return vsout; } glslang-16.0.0/Test/hlsl.load.buffer.dx10.frag000066400000000000000000000012771506534232700207260ustar00rootroot00000000000000uniform Buffer g_tTexbf4_test : register(t0); Buffer g_tTexbf4; // default is float4 Buffer g_tTexbi4; Buffer g_tTexbu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; // Buffer float4 r00 = g_tTexbf4.Load(c1); int4 r01 = g_tTexbi4.Load(c1); uint4 r02 = g_tTexbu4.Load(c1); // TODO: other types that can be put in sampler buffers, like float2x2, and float3. psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.buffer.float.dx10.frag000066400000000000000000000012421506534232700220220ustar00rootroot00000000000000uniform Buffer g_tTexbfs_test : register(t0); Buffer g_tTexbfs; Buffer g_tTexbis; Buffer g_tTexbus; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; // Buffer float r00 = g_tTexbfs.Load(c1); int r01 = g_tTexbis.Load(c1); uint r02 = g_tTexbus.Load(c1); // TODO: other types that can be put in sampler buffers, like float2x2, and float3. psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.offset.dx10.frag000066400000000000000000000032011506534232700207300ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; int getOffset1() { return 1; } int2 getOffset2() { return int2(1, 1); } int3 getOffset3() { return int3(1, 1, 1); } PS_OUTPUT main() { PS_OUTPUT psout; // 1D g_tTex1df4.Load(c2, getOffset1()); g_tTex1di4.Load(c2, getOffset1()); g_tTex1du4.Load(c2, getOffset1()); // 2D g_tTex2df4.Load(c3, getOffset2()); g_tTex2di4.Load(c3, getOffset2()); g_tTex2du4.Load(c3, getOffset2()); // 3D g_tTex3df4.Load(c4, getOffset3()); g_tTex3di4.Load(c4, getOffset3()); g_tTex3du4.Load(c4, getOffset3()); // Offset has no Cube or CubeArray forms // TODO: // Load, SampleIndex // Load, SampleIndex, Offset psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.offsetarray.dx10.frag000066400000000000000000000026701506534232700220000ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; int getOffset1() { return 1; } int2 getOffset2() { return int2(1, 1); } PS_OUTPUT main() { PS_OUTPUT psout; // 1DArray g_tTex1df4a.Load(c3, getOffset1()); g_tTex1di4a.Load(c3, getOffset1()); g_tTex1du4a.Load(c3, getOffset1()); // 2DArray g_tTex2df4a.Load(c4, getOffset2()); g_tTex2di4a.Load(c4, getOffset2()); g_tTex2du4a.Load(c4, getOffset2()); // TODO: // Load, SampleIndex // Load, SampleIndex, Offset psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.rwbuffer.dx10.frag000066400000000000000000000006631506534232700212750ustar00rootroot00000000000000 RWBuffer g_tBuffF; RWBuffer g_tBuffI; RWBuffer g_tBuffU; struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; g_tBuffF.Load(c1); g_tBuffU.Load(c1); g_tBuffI.Load(c1); psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.rwtexture.array.dx10.frag000066400000000000000000000021121506534232700226300ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); RWTexture1D g_tTex1df4 : register(t0); RWTexture1D g_tTex1di4; RWTexture1D g_tTex1du4; RWTexture2D g_tTex2df4; RWTexture2D g_tTex2di4; RWTexture2D g_tTex2du4; RWTexture3D g_tTex3df4; RWTexture3D g_tTex3di4; RWTexture3D g_tTex3du4; RWTexture1DArray g_tTex1df4a; RWTexture1DArray g_tTex1di4a; RWTexture1DArray g_tTex1du4a; RWTexture2DArray g_tTex2df4a; RWTexture2DArray g_tTex2di4a; RWTexture2DArray g_tTex2du4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; // 1D g_tTex1df4a.Load(c2); g_tTex1di4a.Load(c2); g_tTex1du4a.Load(c2); // 2D g_tTex2df4a.Load(c3); g_tTex2di4a.Load(c3); g_tTex2du4a.Load(c3); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.load.rwtexture.dx10.frag000066400000000000000000000022261506534232700215210ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); RWTexture1D g_tTex1df4 : register(t0); RWTexture1D g_tTex1di4; RWTexture1D g_tTex1du4; RWTexture2D g_tTex2df4; RWTexture2D g_tTex2di4; RWTexture2D g_tTex2du4; RWTexture3D g_tTex3df4; RWTexture3D g_tTex3di4; RWTexture3D g_tTex3du4; RWTexture1DArray g_tTex1df4a; RWTexture1DArray g_tTex1di4a; RWTexture1DArray g_tTex1du4a; RWTexture2DArray g_tTex2df4a; RWTexture2DArray g_tTex2di4a; RWTexture2DArray g_tTex2du4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; PS_OUTPUT main() { PS_OUTPUT psout; // 1D g_tTex1df4.Load(c1); g_tTex1di4.Load(c1); g_tTex1du4.Load(c1); // 2D g_tTex2df4.Load(c2); g_tTex2di4.Load(c2); g_tTex2du4.Load(c2); // 3D g_tTex3df4.Load(c3); g_tTex3di4.Load(c3); g_tTex3du4.Load(c3); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.localStructuredBuffer.comp000066400000000000000000000001401506534232700223000ustar00rootroot00000000000000RWStructuredBuffer srt0; void main() { RWStructuredBuffer srt0Local = srt0; }glslang-16.0.0/Test/hlsl.logical.binary.frag000066400000000000000000000004211506534232700206470ustar00rootroot00000000000000struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform int ival; uniform int4 ival4; uniform float fval; uniform float4 fval4; PS_OUTPUT main() { if (ival && fval); if (ival || fval); PS_OUTPUT psout; psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.logical.binary.vec.frag000066400000000000000000000007771506534232700214410ustar00rootroot00000000000000struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform bool4 b4a, b4b; uniform bool b1a, b1b; PS_OUTPUT main() { bool4 r00 = !b4a; bool4 r01 = b4a && b4b; // vec, vec bool4 r02 = b4a || b4b; // vec, vec bool4 r10 = b1a && b4b; // scalar, vec bool4 r11 = b1a || b4b; // scalar, vec bool4 r20 = b4a && b1b; // vec, scalar bool4 r21 = b4a || b1b; // vec, scalar PS_OUTPUT psout; psout.Color = r00 || r01 || r02 || r10 || r11 || r20 || r21; return psout; } glslang-16.0.0/Test/hlsl.logical.unary.frag000066400000000000000000000006231506534232700205250ustar00rootroot00000000000000struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform int ival; uniform int4 ival4; uniform float fval; uniform float4 fval4; PS_OUTPUT main() { !ival; // scalar int !ival4; // vector int !fval; // scalar float !fval4; // vector float if (ival); if (fval); if (!ival); if (!fval); PS_OUTPUT psout; psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.logicalConvert.frag000066400000000000000000000006221506534232700207300ustar00rootroot00000000000000float4 main() : SV_TARGET { if (!(0) && (0) || (!1)) return 0.0.xxxx; if (0) return 0.0.xxxx; if (!(bool)0) return 0.0.xxxx; if (!0) return 0.0.xxxx; if (!(bool)1) return 0.0.xxxx; if (!1) return 0.0.xxxx; if (0 || 1) return 0.0.xxxx; if (1 && 0) return 0.0.xxxx; if (1 || false) return 0.0.xxxx; if (true && 1) return 0.0.xxxx; }glslang-16.0.0/Test/hlsl.loopattr.frag000066400000000000000000000003331506534232700176200ustar00rootroot00000000000000 float4 main() : SV_Target0 { // Unroll hint [unroll(5) ] for (int x=0; x<5; ++x); // Don't unroll hint [loop] for (int y=0; y<5; ++y); // No hint for (int z=0; z<5; ++z); return 0; } glslang-16.0.0/Test/hlsl.matNx1.frag000066400000000000000000000011221506534232700171210ustar00rootroot00000000000000 void TestMatNx1() { float1x1 f1x1; float2x1 f2x1; float3x1 f3x1; float4x1 f4x1; float1x2 f1x2; float1x3 f1x3; float1x4 f1x4; float1x1 r00 = transpose(f1x1); float1x2 r01 = transpose(f2x1); float1x3 r02 = transpose(f3x1); float1x4 r03 = transpose(f4x1); float1x1 r10 = transpose(f1x1); float2x1 r11 = transpose(f1x2); float3x1 r12 = transpose(f1x3); float4x1 r13 = transpose(f1x4); } struct PS_OUTPUT { float4 color : SV_Target0; }; PS_OUTPUT main() { PS_OUTPUT ps_output; ps_output.color = 1.0; return ps_output; }; glslang-16.0.0/Test/hlsl.matType.bool.frag000066400000000000000000000021501506534232700203300ustar00rootroot00000000000000 void TestBoolMatTypes() { bool1x1 b1x1; bool2x1 b2x1; bool3x1 b3x1; bool4x1 b4x1; bool1x2 b1x2; bool2x2 b2x2; bool3x2 b3x2; bool4x2 b4x2; bool1x3 b1x3; bool2x3 b2x3; bool3x3 b3x3; bool4x3 b4x3; bool1x4 b1x4; bool2x4 b2x4; bool3x4 b3x4; bool4x4 b4x4; // TODO: Currently SPIR-V disallows Nx1 or 1xN mats. bool1x1 r00 = transpose(b1x1); bool1x2 r01 = transpose(b2x1); bool1x3 r02 = transpose(b3x1); bool1x4 r03 = transpose(b4x1); bool2x1 r10 = transpose(b1x2); bool2x2 r11 = transpose(b2x2); bool2x3 r12 = transpose(b3x2); bool2x4 r13 = transpose(b4x2); bool3x1 r20 = transpose(b1x3); bool3x2 r21 = transpose(b2x3); bool3x3 r22 = transpose(b3x3); bool3x4 r23 = transpose(b4x3); bool4x1 r30 = transpose(b1x4); bool4x2 r31 = transpose(b2x4); bool4x3 r32 = transpose(b3x4); bool4x4 r33 = transpose(b4x4); } struct PS_OUTPUT { float4 color : SV_Target0; }; PS_OUTPUT main() { PS_OUTPUT ps_output; ps_output.color = float4(0,0,0,0); return ps_output; }; glslang-16.0.0/Test/hlsl.matType.frag000066400000000000000000000003061506534232700173770ustar00rootroot00000000000000float1 f1 = float1(1.0); float1x1 fmat11; float4x1 fmat41; float1x2 fmat12; double2x3 dmat23; int4x4 int44; float1 ShaderFunction(float1 inFloat1, float inScalar) : COLOR0 { return inFloat1; } glslang-16.0.0/Test/hlsl.matType.int.frag000066400000000000000000000037641506534232700202030ustar00rootroot00000000000000 void TestIntMatTypes() { int1x1 i1x1; int2x1 i2x1; int3x1 i3x1; int4x1 i4x1; int1x2 i1x2; int2x2 i2x2; int3x2 i3x2; int4x2 i4x2; int1x3 i1x3; int2x3 i2x3; int3x3 i3x3; int4x3 i4x3; int1x4 i1x4; int2x4 i2x4; int3x4 i3x4; int4x4 i4x4; // TODO: Currently SPIR-V disallows Nx1 or 1xN mats. int1x1 r00 = transpose(i1x1); int1x2 r01 = transpose(i2x1); int1x3 r02 = transpose(i3x1); int1x4 r03 = transpose(i4x1); int2x1 r10 = transpose(i1x2); int2x2 r11 = transpose(i2x2); int2x3 r12 = transpose(i3x2); int2x4 r13 = transpose(i4x2); int3x1 r20 = transpose(i1x3); int3x2 r21 = transpose(i2x3); int3x3 r22 = transpose(i3x3); int3x4 r23 = transpose(i4x3); int4x1 r30 = transpose(i1x4); int4x2 r31 = transpose(i2x4); int4x3 r32 = transpose(i3x4); int4x4 r33 = transpose(i4x4); } void TestUintMatTypes() { uint1x1 u1x1; uint2x1 u2x1; uint3x1 u3x1; uint4x1 u4x1; uint1x2 u1x2; uint2x2 u2x2; uint3x2 u3x2; uint4x2 u4x2; uint1x3 u1x3; uint2x3 u2x3; uint3x3 u3x3; uint4x3 u4x3; uint1x4 u1x4; uint2x4 u2x4; uint3x4 u3x4; uint4x4 u4x4; // TODO: Currently SPIR-V disallows Nx1 or 1xN mats. uint1x1 r00 = transpose(u1x1); uint1x2 r01 = transpose(u2x1); uint1x3 r02 = transpose(u3x1); uint1x4 r03 = transpose(u4x1); uint2x1 r10 = transpose(u1x2); uint2x2 r11 = transpose(u2x2); uint2x3 r12 = transpose(u3x2); uint2x4 r13 = transpose(u4x2); uint3x1 r20 = transpose(u1x3); uint3x2 r21 = transpose(u2x3); uint3x3 r22 = transpose(u3x3); uint3x4 r23 = transpose(u4x3); uint4x1 r30 = transpose(u1x4); uint4x2 r31 = transpose(u2x4); uint4x3 r32 = transpose(u3x4); uint4x4 r33 = transpose(u4x4); } struct PS_OUTPUT { float4 color : SV_Target0; }; PS_OUTPUT main() { PS_OUTPUT ps_output; ps_output.color = float4(0,0,0,0); return ps_output; }; glslang-16.0.0/Test/hlsl.matpack-1.frag000066400000000000000000000006631506534232700175400ustar00rootroot00000000000000struct MyBuffer1 { column_major float4x4 mat1; row_major float4x4 mat2; float4 vec1; float foo; }; struct MyBuffer2 { row_major float4x4 mat1; float4 vec1; }; cbuffer Example { MyBuffer1 g_MyBuffer1; MyBuffer2 g_MyBuffer2; column_major float4x4 mat1a; }; float4 main() : SV_Target0 { return mul(g_MyBuffer1.mat1, g_MyBuffer1.vec1) + mul(g_MyBuffer2.mat1, g_MyBuffer2.vec1); } glslang-16.0.0/Test/hlsl.matpack-pragma-global.frag000066400000000000000000000001631506534232700221000ustar00rootroot00000000000000#pragma pack_matrix(row_major) float4x4 g_GlobalMat1; float4 main() : SV_Target0 { return g_GlobalMat1[0]; } glslang-16.0.0/Test/hlsl.matpack-pragma.frag000066400000000000000000000012041506534232700206370ustar00rootroot00000000000000#pragma pack_matrix(row_major) struct MyBuffer1 { column_major float4x4 mat1; row_major float4x4 mat2; /*floating*/ float4x4 mat3; }; #pragma pack_matrix(column_major) struct MyBuffer2 { column_major float4x4 mat1; row_major float4x4 mat2; /*floating*/ float4x4 mat3; }; #pragma pack_matrix(random_string_foo) cbuffer Example { MyBuffer1 g_MyBuffer1; MyBuffer2 g_MyBuffer2; column_major float4x4 mat1a; }; float4 main() : SV_Target0 { return g_MyBuffer1.mat1[0] + g_MyBuffer1.mat2[0] + g_MyBuffer1.mat3[0] + g_MyBuffer2.mat1[0] + g_MyBuffer2.mat2[0] + g_MyBuffer2.mat3[0]; } glslang-16.0.0/Test/hlsl.matrixSwizzle.vert000066400000000000000000000014541506534232700207160ustar00rootroot00000000000000void ShaderFunction(float inf) : COLOR0 { float3x4 m; // tests that convert to non-matrix swizzles m._34 = 1.0; // AST should have a normal component select m._m23 = 2.0; // same code m[2][3] = 2.0; // same code m._11_12_13_14 = float4(3.0); // AST should have normal column selection (first row) m._m10_m11_m12_m13 = float4(3.0); // AST should have normal column selection (second row) m[1] = float4(3.0); // same code // tests that stay as matrix swizzles float3 f3; m._11_22_23 = f3; m._21_12_31 = float3(5.0); m._11_12_21 = 2 * f3; // r-value f3 = m._21_12_31; } float3x3 createMat3x3(float3 a, float3 b, float3 c) { float3x3 m; m._11_21_31 = a; m._12_22_32 = b; m._13_23_33 = c; return m; } glslang-16.0.0/Test/hlsl.matrixindex.frag000066400000000000000000000033421506534232700203130ustar00rootroot00000000000000uniform int idx; uniform float3x2 um; struct PS_OUTPUT { float4 Color : SV_Target0; }; PS_OUTPUT main() { // matrices of 3 rows, 2 columns (regardless of row vs col major storage) const float3x2 m1 = { { 10, 11 }, // row-wise initialization { 12, 13 }, { 14, 15 } }; const float3x2 m2 = { 20, 21, 22, 23, 24, 25 }; // component-wise matrix initialization is allowed const float3x2 m3 = { 30, 31, 33, 33, 34, 35 }; // component-wise matrix initialization is allowed // These can be observed in the AST post-const folding to ensure we obtain the right value, // as given in comments to the right of each line. Note that the first indirection into a // matrix returns a row vector. float e1_00 = m1[0][0]; // 10 float e1_01 = m1[0][1]; // 11 float e1_10 = m1[1][0]; // 12 float e1_11 = m1[1][1]; // 13 float e1_20 = m1[2][0]; // 14 float e1_21 = m1[2][1]; // 15 float e2_00 = m2[0][0]; // 20 float e2_01 = m2[0][1]; // 21 float e2_10 = m2[1][0]; // 22 float e2_11 = m2[1][1]; // 23 float e2_20 = m2[2][0]; // 24 float e2_21 = m2[2][1]; // 25 // float e3a_00 = m3._m00; // TODO... also as an lvalue for a non-const matrix // float e3b_00 = m3._11; // TODO... also as an lvalue for a non-const matrix float2 r0a = m1[0]; // row0: 10,11: types must match: constant index into constant float2 r1a = m1[1]; // row1: 12,13: ... float2 r2a = m1[2]; // row2: 14,15: ... float2 r0b = m2[idx]; // types should match: variable index into constant float2 r0c = um[idx]; // types should match: variable index into variable PS_OUTPUT psout; psout.Color = e2_11; // 23 return psout; } glslang-16.0.0/Test/hlsl.max.frag000066400000000000000000000001461506534232700165430ustar00rootroot00000000000000float4 PixelShaderFunction(float4 input1, float4 input2) : COLOR0 { return max(input1, input2); } glslang-16.0.0/Test/hlsl.memberFunCall.frag000066400000000000000000000006231506534232700204720ustar00rootroot00000000000000float method3(float a) { return 1.0; } struct myContext { float method1() { return method2(); } float method2() { return method3(1.0); } float method3(float a) { return method4(a, a); } float method4(float a, float b) { return a + b + f; } float f; }; float4 main() : SV_TARGET0 { myContext context; context.f = 3.0; return (float4)context.method1(); } glslang-16.0.0/Test/hlsl.mintypes.frag000066400000000000000000000045051506534232700176310ustar00rootroot00000000000000struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform min16float b1a, b1b; PS_OUTPUT main() { min16float mf16; min16float1 mf16_1; min16float2 mf16_2; min16float3 mf16_3; min16float4 mf16_4; min16float2x2 mf16_2x2; min16float2x3 mf16_2x3; min16float2x4 mf16_2x4; min16float3x2 mf16_3x2; min16float3x3 mf16_3x3; min16float3x4 mf16_3x4; min16float4x2 mf16_4x2; min16float4x3 mf16_4x3; min16float4x4 mf16_4x4; min10float mf10; min10float1 mf10_1; min10float2 mf10_2; min10float3 mf10_3; min10float4 mf10_4; min10float2x2 mf10_2x2; min10float2x3 mf10_2x3; min10float2x4 mf10_2x4; min10float3x2 mf10_3x2; min10float3x3 mf10_3x3; min10float3x4 mf10_3x4; min10float4x2 mf10_4x2; min10float4x3 mf10_4x3; min10float4x4 mf10_4x4; min16int mi16; min16int1 mi16_1; min16int2 mi16_2; min16int3 mi16_3; min16int4 mi16_4; min16int2x2 mi16_2x2; min16int2x3 mi16_2x3; min16int2x4 mi16_2x4; min16int3x2 mi16_3x2; min16int3x3 mi16_3x3; min16int3x4 mi16_3x4; min16int4x2 mi16_4x2; min16int4x3 mi16_4x3; min16int4x4 mi16_4x4; min12int mi12; min12int1 mi12_1; min12int2 mi12_2; min12int3 mi12_3; min12int4 mi12_4; min12int2x2 mi12_2x2; min12int2x3 mi12_2x3; min12int2x4 mi12_2x4; min12int3x2 mi12_3x2; min12int3x3 mi12_3x3; min12int3x4 mi12_3x4; min12int4x2 mi12_4x2; min12int4x3 mi12_4x3; min12int4x4 mi12_4x4; min16uint mu16; min16uint1 mu16_1; min16uint2 mu16_2; min16uint3 mu16_3; min16uint4 mu16_4; min16uint2x2 mu16_2x2; min16uint2x3 mu16_2x3; min16uint2x4 mu16_2x4; min16uint3x2 mu16_3x2; min16uint3x3 mu16_3x3; min16uint3x4 mu16_3x4; min16uint4x2 mu16_4x2; min16uint4x3 mu16_4x3; min16uint4x4 mu16_4x4; mf16_2 + mf16; mf10_2 + mf10; mi16_2 + mi16; mi12_2 + mi12; mu16_2 + mu16; mul(mf16_2, mf16_2x4); mul(mf16_3, mf16_3x4); mul(mf16_4, mf16_4x4); mul(mf16_4x2, mf16_2); mul(mf16_4x3, mf16_3); mul(mf16_4x4, mf16_4); mul(mf10_2, mf10_2x4); mul(mf10_3, mf10_3x4); mul(mf10_4, mf10_4x4); mul(mf10_4x2, mf10_2); mul(mf10_4x3, mf10_3); mul(mf10_4x4, mf10_4); PS_OUTPUT psout; psout.Color = 0; return psout; } glslang-16.0.0/Test/hlsl.mip.negative.frag000066400000000000000000000002311506534232700203370ustar00rootroot00000000000000Texture2D g_tTex2df4; float4 main() : SV_Target0 { g_tTex2df4.mips.mips[2][uint2(3, 4)]; // error to chain like this return 0; } glslang-16.0.0/Test/hlsl.mip.negative2.frag000066400000000000000000000002311506534232700204210ustar00rootroot00000000000000Texture2D g_tTex2df4; float4 main() : SV_Target0 { g_tTex2df4.r[2][uint2(3, 4)]; // '.r' not valid on texture object return 0; } glslang-16.0.0/Test/hlsl.mip.operator.frag000066400000000000000000000007541506534232700204020ustar00rootroot00000000000000Texture2DArray g_tTex2df4a; Texture2D g_tTex2df4; float4 main() : SV_Target0 { return g_tTex2df4.mips[2][uint2(3, 4)] + // test float->uint cast on the mip arg g_tTex2df4a.mips[5.2][uint3(6, 7, 8)] + // Test nesting involving .mips operators: // ....outer operator mip level...... .....outer operator coordinate.... g_tTex2df4.mips[ g_tTex2df4.mips[9][uint2(10,11)][0] ][ g_tTex2df4.mips[13][uint2(14,15)].xy ]; } glslang-16.0.0/Test/hlsl.mul-truncate.frag000066400000000000000000000022171506534232700203770ustar00rootroot00000000000000 // Test v*v, v*m, m*v, and m*m argument clamping. cbuffer Matrix { float4x4 m44; float4x3 m43; float3x4 m34; float3x3 m33; float2x4 m24; float4x2 m42; float4 v4; float3 v3; float2 v2; } float4 main() : SV_Target0 { // v*v: float r00 = mul(v2, v3); // float = float2*float3; // clamp to float2 dot product float r01 = mul(v4, v2); // float = float4*float2; // clamp to float2 dot product // v*m float4 r10 = mul(v3, m44); // float4 = float3 * float4x4; // clamp mat to float3x4; float4 r11 = mul(v4, m34); // truncate vector to vec3 // m*v float4 r20 = mul(m44, v3); // float4 = float4x4 * float3; // clamp mat to float4x3; float4 r21 = mul(m43, v4); // truncate vector to vec3 // m*m float2x3 r30 = mul(m24, m33); // float2x3 = float2x4 * float3x3; float3x4 r31 = mul(m33, m24); // float3x4 = float3x3 * float2x4; float3x2 r32 = mul(m33, m42); // float3x2 = float3x3 * float4x2; float4x3 r33 = mul(m42, m33); // float4x3 = float4x2 * float3x3; return r10 + r11 + r20 + r21 + r00 + r01 + r30[0].x + r31[0] + r32[0].x + transpose(r33)[0]; } glslang-16.0.0/Test/hlsl.multiDescriptorSet.frag000066400000000000000000000016071506534232700216260ustar00rootroot00000000000000Texture2D txDiffuseA : register( t0 ); Texture2D txDiffuseB : register( t1 ); SamplerState samLinearA : register( s0 ); SamplerState samLinearB : register( s1 ); cbuffer cbNeverChanges : register( b0 ) { matrix View; }; cbuffer cbChangeOnResize : register( b1 ) { matrix Projection; }; cbuffer cbChangesEveryFrame : register( b2 ) { matrix World; float4 vMeshColor; }; struct VS_INPUT { float4 Pos : POSITION; float2 Tex : TEXCOORD0; }; struct PS_INPUT { float4 Pos : SV_POSITION; float2 Tex : TEXCOORD0; }; float4 main( PS_INPUT input) : SV_Target { PS_INPUT output = (PS_INPUT)0; output.Pos = mul( input.Pos, World ); output.Pos = mul( output.Pos, View ); output.Pos = mul( output.Pos, Projection ); output.Tex = input.Tex; return txDiffuseA.Sample( samLinearA, output.Tex ) * vMeshColor; } glslang-16.0.0/Test/hlsl.multiEntry.vert000066400000000000000000000003551506534232700201750ustar00rootroot00000000000000Buffer Position; float4 FakeEntrypoint(uint Index : SV_VERTEXID) : SV_POSITION { return Position.Load(Index); } float4 RealEntrypoint(uint Index : SV_VERTEXID) : SV_POSITION { return FakeEntrypoint(Index); }glslang-16.0.0/Test/hlsl.multiReturn.frag000066400000000000000000000002421506534232700203050ustar00rootroot00000000000000struct S { float f; float3 v; float3x3 m; }; cbuffer bufName { S s; }; S foo() { return s; } void main() { foo(); } glslang-16.0.0/Test/hlsl.multiView.frag000066400000000000000000000001351506534232700177410ustar00rootroot00000000000000 float4 main(uint ViewIndex : SV_ViewID) { return float4(ViewIndex, 0.0f, 0.0f, 0.0f); } glslang-16.0.0/Test/hlsl.namespace.frag000066400000000000000000000007161506534232700177150ustar00rootroot00000000000000static float4 v1; static float4 v2; namespace N1 { float4 getVec() { return v1; } } namespace N2 { static float gf; float4 getVec() { return v2; } namespace N3 { float4 getVec() { return v2; } class C1 { static float4 getVec() { return v2; } }; } } float4 main() : SV_Target0 { return N1::getVec() + N2::getVec() + N2::N3::getVec() + N2::N3::C1::getVec() * N2::gf; } glslang-16.0.0/Test/hlsl.nested-runtimeArray.frag000066400000000000000000000001401506534232700217120ustar00rootroot00000000000000struct A { float a[]; }; RWStructuredBuffer B; float main() { return B[0].a[0]; } glslang-16.0.0/Test/hlsl.noSemantic.functionality1.comp000066400000000000000000000001671506534232700230500ustar00rootroot00000000000000AppendStructuredBuffer Buf : register(u0); [numthreads(1, 1, 1)] void main() { Buf.Append(1.0f.xxxx); }glslang-16.0.0/Test/hlsl.nonint-index.frag000066400000000000000000000004151506534232700203670ustar00rootroot00000000000000static const float array[3] = { 1, 2, 3 }; float main(float input : IN) : SV_Target0 { // non-integer indexes get converted to uints: // uint(input) 3.0 2.0 1.0 return array[input] + array[2.0] + array[true] + array[false]; } glslang-16.0.0/Test/hlsl.nonstaticMemberFunction.frag000066400000000000000000000012411506534232700226130ustar00rootroot00000000000000static float2 i = float2(1.0, 2.0); struct type1 { void setmem(float4 m) { memVar = m; } void seti(int si) { i = si; } float4 memVar; float4 memFun(float4 a) : SV_Position { return i * a + memVar; } int memFun(int a) : SV_Position { return i + a - memVar.z; } int i; }; static float2 j = i; struct type2 { float2 memFun() { return i; } }; float4 main() : SV_Target0 { type1 test; test.setmem(float4(2.0,2.0,2.0,2.0)); test.seti(17); float4 f4 = float4(1.0,1.0,1.0,1.0); f4 += test.memFun(float4(5.0f,5.0f,5.0f,5.0f)); f4 += test.memFun(7); return f4; } glslang-16.0.0/Test/hlsl.numericsuffixes.frag000066400000000000000000000020161506534232700211730ustar00rootroot00000000000000 struct PS_OUTPUT { float4 color : SV_Target0; }; #define BIN_UINT 0b00001u #define BIN_INT 0b00011 PS_OUTPUT main() { // Test numeric suffixes float r00 = 1.0f; // float uint r01 = 1u; // lower uint uint r02 = 2U; // upper uint uint r03 = 0xabcu; // lower hex uint uint r04 = 0XABCU; // upper hex uint int r05 = 5l; // lower long int int r06 = 6L; // upper long int int r07 = 071; // octal uint r08 = 072u; // unsigned octal float r09 = 1.h; // half float r10 = 1.H; // half float r11 = 1.1h; // half float r12 = 1.1H; // half uint r13 = 0b00001u;// lower binary uint uint r14 = 0B00010U;// upper binary uint int r15 = 0b00011; // lower binary int int r16 = 0B00100; // upper binary int uint r17 = BIN_UINT;// lower binart define uint int r18 = BIN_INT; // lower binart define int PS_OUTPUT ps_output; ps_output.color = r07; // gets 71 octal = 57 decimal return ps_output; } glslang-16.0.0/Test/hlsl.numericsuffixes.negative.frag000066400000000000000000000006241506534232700227770ustar00rootroot00000000000000 struct PS_OUTPUT { float4 color : SV_Target0; }; PS_OUTPUT main() { // Test numeric suffixes uint r01 = 0bERROR321u; // Bad digit uint r02 = 0b11111111111111111111111111111111111111111111111111111111111111111u; // To big uint r03 = 0xTESTu // Bad digit uint r04 = 0xFFFFFFFFFFFFFFFFFFu; // To big PS_OUTPUT ps_output; ps_output.color = r01; return ps_output; } glslang-16.0.0/Test/hlsl.numthreads.comp000066400000000000000000000002201506534232700201400ustar00rootroot00000000000000 [numthreads(8,8,1)] void main(uint3 tid : SV_DispatchThreadID ) { } [numthreads(1,4,8)] void main_aux2(uint3 tid : SV_DispatchThreadID ) { } glslang-16.0.0/Test/hlsl.opaque-type-bug.frag000066400000000000000000000005621506534232700210040ustar00rootroot00000000000000 Texture2D MyTexture : register(t0); //---------------------------------------------------------------------------------------- void TexFunc(in const Texture2D t2D, out float3 RGB) { RGB = 0; } //----------------------------------------------------------------------------------- void main() { float3 final_RGB; TexFunc(MyTexture, final_RGB); } glslang-16.0.0/Test/hlsl.overload.frag000066400000000000000000000042361506534232700175750ustar00rootroot00000000000000// function selection under type conversion void foo1(double a, bool b) {} void foo1(double a, uint b) {} void foo1(double a, int b) {} void foo1(double a, float b) {} void foo1(double a, double b){} // uint -> int void foo2(int a, bool b) {} void foo2(int a, uint b) {} void foo2(int a, int b) {} void foo2(int a, float b) {} void foo2(int a, double b){} // everything can promote void foo3(bool b) {} void foo4(uint b) {} void foo5(int b) {} void foo6(float b) {} void foo7(double b){} // shorter forward chain better than longer or backward chain void foo8(float) {} void foo8(double) {} void foo9(int) {} void foo9(uint) {} void foo10(bool) {} void foo10(int) {} // shape change is worse void foo11(float3) {} void foo11(double) {} void foo11(int3) {} void foo11(uint) {} void foo12(float1) {} void foo12(double3) {} void foo16(uint) {} void foo16(uint2) {} // shape change void foo13(float3) {} void foo14(int1) {} void foo15(bool1) {} float4 PixelShaderFunction(float4 input) : COLOR0 { bool b; double d; uint u; int i; float f; foo1(d, b); foo1(d, d); foo1(d, u); foo1(d, i); foo1(d, f); foo1(f, b); foo1(f, d); foo1(f, u); foo1(f, i); foo1(f, f); foo1(u, b); foo1(u, d); foo1(u, u); foo1(u, i); foo1(u, f); foo1(i, b); foo1(i, d); foo1(i, u); foo1(i, i); foo1(i, f); foo2(u, b); foo2(u, d); foo2(u, u); foo2(u, i); foo2(u, f); foo2(i, b); foo2(i, d); foo2(i, u); foo2(i, i); foo2(i, f); foo3(b); foo3(d); foo3(u); foo3(i); foo3(f); foo4(b); foo4(d); foo4(u); foo4(i); foo4(f); foo5(b); foo5(d); foo5(u); foo5(i); foo5(f); foo6(b); foo6(d); foo6(u); foo6(i); foo6(f); foo7(b); foo7(d); foo7(u); foo7(i); foo7(f); foo8(b); foo8(u); foo8(i); foo9(b); foo9(f); foo9(d); foo10(u); foo10(f); foo10(d); foo11(b); foo11(f); foo12(float3(f)); foo16(int2(i,i)); foo13(f); foo14(int4(i)); foo15(b); foo15(bool3(b)); return input; } glslang-16.0.0/Test/hlsl.params.default.frag000066400000000000000000000021521506534232700206630ustar00rootroot00000000000000uniform int4 ui4; static const int cia = -4; static const int cib = -42; // ERROR: Ambiguous with fn1 below. // int4 fn1(int4 p0) { return int4(1,2,3,4); } int4 fn1(int4 p0, bool b1, bool b2 = false) { return p0; } int4 fn1(int4 p0, int4 p1 : FOO = int4(-1,-2,-3, cia), int p2[2] : BAR = { int(1), 2 }, int p3 = abs(cib) ) { return p0 + p1 + p2[0] + p3; } // These should not be ambiguous if given either an int or a float explicit second parameter. int4 fn2(int4 p0, int x = 3) { return int4(10,11,12,13); } int4 fn2(int4 p0, float x = sin(3.3)) // OK to have a const expression as a default value { return p0 + int4(20,21,22,23); } void fn3(int p0 = 3) { } int4 main() : SV_Target0 { int myarray[2] = {30,31}; fn3(); fn3(5); return fn1(100) + fn1(101, ui4) + fn1(102, ui4, myarray) + fn1(103, ui4, myarray, 99) + fn1(104, false) + fn1(105, false, true) + fn2(110, 11.11) + // calls int4, float form fn2(111, 12); // calls int4, int form } glslang-16.0.0/Test/hlsl.params.default.negative.frag000066400000000000000000000022651506534232700224710ustar00rootroot00000000000000uniform int4 ui4; uniform float ufvar; static const int cia = -4; static const int cib = -42; int4 fn1(int4 p0) { return int4(1,2,3,4); } int4 fn1(int4 p0, bool b1, bool b2 = false) { return p0; } int4 fn1(int4 p0, int4 p1 : FOO = int4(-1,-2,-3, cia), int p2[2] : BAR = { int(1), 2 }, int p3 = abs(cib) ) { return p0 + p1 + p2[0] + p3; } // These should not be ambiguous if given either an int or a float explicit second parameter. int4 fn2(int4 p0, int x = 3) { return int4(10,11,12,13); } int4 fn2(int4 p0, float x = ufvar) // ERROR: non-const expression { return p0 + int4(20,21,22,23); } void fn3(int p0 = 5, int p1) // ERROR no-default param after default param { } int4 main() : SV_Target0 { int myarray[2] = {30,31}; return fn1(100) + // ERROR: ambiguous fn1(101, ui4) + fn1(102, ui4, myarray) + fn1(103, ui4, myarray, 99) + fn1(104, false) + fn1(105, false, true) + fn2(112) + // ERROR: ambiguous fn2(110, 11.11) + // calls int4, float form fn2(111, 12); // calls int4, int form } glslang-16.0.0/Test/hlsl.partialFlattenLocal.vert000066400000000000000000000010051506534232700217370ustar00rootroot00000000000000Texture2D tex; struct Packed { Texture2D tex; float3 pos[3]; float2 uv[2]; float x; int n; }; float4 main(float4 pos : POSITION) : SV_POSITION { Packed packed; packed.tex = tex; packed.pos[0] = float3(0, 0, 0); packed.uv[0] = float2(0, 1); packed.x = 1.0; packed.n = 3; for (int i = 0; i < 1; ++i) { packed.pos[i].xy += packed.uv[i]; } Packed packed2 = packed; return pos + float4(packed2.pos[0], 0); }glslang-16.0.0/Test/hlsl.partialFlattenMixed.vert000066400000000000000000000003351506534232700217600ustar00rootroot00000000000000Texture2D tex[2]; struct Packed { int a; Texture2D membTex[2]; int b; }; float4 main(float4 pos : POSITION) : SV_POSITION { Packed packed; packed.membTex = tex; return pos; }glslang-16.0.0/Test/hlsl.partialInit.frag000066400000000000000000000010771506534232700202420ustar00rootroot00000000000000struct outs { int a; float b; bool c; float4 v; }; static float4 gv = {0,0,1}; static float gfa[3] = {0,0}; struct Nest { float4x3 m; outs os; bool b; }; outs PixelShaderFunction(float4 input) : COLOR0 { outs o2 = { 3 }; outs o4; o4.v = gv * gfa[2]; outs o1 = { }; outs o3 = (outs)0; o4 = (outs)0; o4.c = o1.c; Nest nest = (Nest)0; float2 gf2a[4] = { }; int cgi = { }; o4.b = gf2a[2].y * cgi; return o4; } static const float2 cgf2a[3]; static const int ci; glslang-16.0.0/Test/hlsl.pp.expand.frag000066400000000000000000000007611506534232700176560ustar00rootroot00000000000000#define EMP1(a) #define EMP2(a, b) #define EXP1(a) = a #define EXP2(a, b) = a, b struct A { float4 a EMP1({1,2,3,4}); // No PP arg errors float4 b EMP2({({{(({1,2,3,4}))}})}, {{1,2,3,4}}); // No PP arg errors float4 c EXP1({1,2,3,4}); // ERROR: No PP arg errors, but init error float4 d EXP2({({{(({1,2,3,4}))}})}, {{1,2,3,4}}); // ERROR: No PP arg errors, but init error }; void main() { "a string" } glslang-16.0.0/Test/hlsl.pp.line.frag000066400000000000000000000004551506534232700173260ustar00rootroot00000000000000 #line 1 struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; #line 2 PS_OUTPUT main() { PS_OUTPUT psout; #line 123 "SomeFile.frag" int thisLineIs = __LINE__; // gets 124 psout.Color = float4(thisLineIs, 0, 0, 1); psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.pp.line2.frag000066400000000000000000000011671506534232700174110ustar00rootroot00000000000000#line 1 "foo.frag" Texture2D g_tColor[ 128 ] ; layout (push_constant) cbuffer PerViewConstantBuffer_t { uint g_nDataIdx; uint g_nDataIdx2; bool g_B; } ; SamplerState g_sAniso; struct PS_INPUT { float2 vTextureCoords : TEXCOORD2 ; } ; struct PS_OUTPUT { float4 vColor : SV_Target0 ; } ; PS_OUTPUT MainPs ( PS_INPUT i ) { PS_OUTPUT ps_output ; uint u; #line 47 if (g_B) #line 3 "foo.h" u = g_nDataIdx; else #line 67 u = g_nDataIdx2; #line 7 "foo2.h" ps_output . vColor = g_tColor [ u ] . Sample ( g_sAniso , i . vTextureCoords . xy ); #line 105 return ps_output ; } glslang-16.0.0/Test/hlsl.pp.line3.frag000066400000000000000000000010421506534232700174020ustar00rootroot00000000000000Texture2D g_tColor[ 128 ] ; layout (push_constant) cbuffer PerViewConstantBuffer_t { uint g_nDataIdx; uint g_nDataIdx2; bool g_B; } ; SamplerState g_sAniso; struct PS_INPUT { float2 vTextureCoords : TEXCOORD2 ; } ; struct PS_OUTPUT { float4 vColor : SV_Target0 ; } ; PS_OUTPUT MainPs ( PS_INPUT i ) { PS_OUTPUT ps_output ; uint u; if (g_B) #include "i1.h" else u = g_nDataIdx2; ps_output . vColor = g_tColor [ u ] . Sample ( g_sAniso , i . vTextureCoords . xy ); return ps_output ; } glslang-16.0.0/Test/hlsl.pp.line4.frag000066400000000000000000000013211506534232700174030ustar00rootroot00000000000000#line 1 "C:\\Users\\Greg\\shaders\\line\\foo4.frag" Texture2D g_tColor [ 128 ] ; layout ( push_constant ) cbuffer PerViewConstantBuffer_t { uint g_nDataIdx ; uint g_nDataIdx2 ; bool g_B ; } ; #line 12 SamplerState g_sAniso ; struct PS_INPUT { float2 vTextureCoords : TEXCOORD2 ; } ; struct PS_OUTPUT { float4 vColor : SV_Target0 ; } ; PS_OUTPUT MainPs ( PS_INPUT i ) { PS_OUTPUT ps_output ; uint u ; if ( g_B ) #line 1 "C:\\Users\\Greg\\shaders\\line\\u1.h" u = g_nDataIdx ; #line 31 "C:\\Users\\Greg\\shaders\\line\\foo4.frag" else u = g_nDataIdx2 ; ps_output . vColor = g_tColor [ u ] . Sample ( g_sAniso , i . vTextureCoords . xy ) ; return ps_output ; } glslang-16.0.0/Test/hlsl.pp.tokenpasting.frag000066400000000000000000000004131506534232700210770ustar00rootroot00000000000000 #define foobarblee zzzz #define ar qqqq #define MACRO1(x,y) foo##x##y // #define MACRO2 abc##def // #define SPACE_IN_MACRO int var1 float4 main() : SV_Target0 { // float MACRO2 = 10; float MACRO1(b##ar,blee) = 3; return float4(foobarblee,0,0,0); } glslang-16.0.0/Test/hlsl.pp.vert000066400000000000000000000002321506534232700164320ustar00rootroot00000000000000#define A defined(B) #if A int badGlobal1; #else int goodGlobal1; #endif #define B #if A int goodGlobal2; #else int badGlobal2; #endif void main() {} glslang-16.0.0/Test/hlsl.precedence.frag000066400000000000000000000002501506534232700200470ustar00rootroot00000000000000float4 PixelShaderFunction( float4 a1, float4 a2, float4 a3, float4 a4 ) : COLOR0 { return a1 + a2 * a3 + a4 + float4(a1.rgb * a2.rgb, a3.a); } glslang-16.0.0/Test/hlsl.precedence2.frag000066400000000000000000000002231506534232700201310ustar00rootroot00000000000000int PixelShaderFunction( int a1, int a2, int a3, int a4 ) : COLOR0 { return (a1 * a2 + a3 << a4) + (a1 << a2 + a3 * a4); } glslang-16.0.0/Test/hlsl.precise.frag000066400000000000000000000004131506534232700174050ustar00rootroot00000000000000 struct PS_OUTPUT { precise float4 color : SV_Target0; }; static precise float precisefloat; void MyFunction(in precise float myfloat, out precise float3 myfloat3) { } PS_OUTPUT main() { PS_OUTPUT ps_output; ps_output.color = 1.0; return ps_output; } glslang-16.0.0/Test/hlsl.preprocessor.frag000066400000000000000000000005121506534232700205010ustar00rootroot00000000000000#define DEFINE_TEXTURE(name) Texture2D name; SamplerState name##_ss; #define SAMPLE_TEXTURE(name, uv) name.Sample(name##_ss, (uv).xy) #define test_texture2 test_texture DEFINE_TEXTURE(test_texture) float4 main(float4 input : TEXCOORD0) : SV_TARGET { float4 tex = SAMPLE_TEXTURE(test_texture2, input.xy); return tex; } glslang-16.0.0/Test/hlsl.printf.comp000066400000000000000000000005131506534232700172750ustar00rootroot00000000000000const string first = "first string"; [numthreads(1,1,1)] void main() { printf(first); printf("please print this message."); printf("Variables are: %d %d %.2f", 1u, 2u, 1.5f); printf("Integers are: %d %d %d", 1, 2, 3); printf("More: %d %d %d %d %d %d %d %d %d %d", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); } glslang-16.0.0/Test/hlsl.promote.atomic.frag000066400000000000000000000006611506534232700207200ustar00rootroot00000000000000 RWBuffer s_uintbuff; // UINT RWBuffer ... float4 main() : SV_Target { int Loc; // ... with INT variables int Inc; int Orig; // This must select the uint flavor of SPIR-V atomic op, and promote // the other arguments as required. The output value from the // imageAtomicAdd AST will be converted to an int for 'Orig'. InterlockedAdd(s_uintbuff[Loc], Inc, Orig); return float4(0,0,0,0); } glslang-16.0.0/Test/hlsl.promote.binary.frag000066400000000000000000000005751506534232700207340ustar00rootroot00000000000000struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform bool bval; uniform bool4 bval4; uniform int ival; uniform int4 ival4; uniform float fval; uniform float4 fval4; PS_OUTPUT main() { ival % fval; ival4 % fval4; bval % fval; bval4 % fval4; int l_int = 1; l_int %= fval; PS_OUTPUT psout; psout.Color = 0; return psout; } glslang-16.0.0/Test/hlsl.promote.vec1.frag000066400000000000000000000004041506534232700202750ustar00rootroot00000000000000 float4 main() : SV_Target { float f1a; float1 f1b; f1a = f1b; // convert float1 to float f1b = f1a; // convert float to float1 float3 f3; step(0.0, f3); sin(f1b); // test 1-vectors in intrinsics return float4(0,0,0,0); } glslang-16.0.0/Test/hlsl.promotions.frag000066400000000000000000000113501506534232700201660ustar00rootroot00000000000000 struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform int3 i3; uniform bool3 b3; uniform float3 f3; uniform uint3 u3; uniform double3 d3; uniform int is; uniform bool bs; uniform float fs; uniform uint us; uniform double ds; void Fn_F3(float3 x) { } void Fn_I3(int3 x) { } void Fn_U3(uint3 x) { } void Fn_B3(bool3 x) { } void Fn_D3(double3 x) { } // ----------- Test implicit conversions on function returns ----------- float3 Fn_R_F3I(out float3 p) { p = i3; return i3; } float3 Fn_R_F3U(out float3 p) { p = u3; return u3; } float3 Fn_R_F3B(out float3 p) { p = b3; return b3; } float3 Fn_R_F3D(out float3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion. int3 Fn_R_I3U(out int3 p) { p = u3; return u3; } int3 Fn_R_I3B(out int3 p) { p = b3; return b3; } int3 Fn_R_I3F(out int3 p) { p = f3; return f3; } int3 Fn_R_I3D(out int3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion. uint3 Fn_R_U3I(out uint3 p) { p = i3; return i3; } uint3 Fn_R_U3F(out uint3 p) { p = f3; return f3; } uint3 Fn_R_U3B(out uint3 p) { p = b3; return b3; } uint3 Fn_R_U3D(out uint3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion. bool3 Fn_R_B3I(out bool3 p) { p = i3; return i3; } bool3 Fn_R_B3U(out bool3 p) { p = u3; return u3; } bool3 Fn_R_B3F(out bool3 p) { p = f3; return f3; } bool3 Fn_R_B3D(out bool3 p) { p = d3; return d3; } double3 Fn_R_D3I(out double3 p) { p = i3; return i3; } double3 Fn_R_D3U(out double3 p) { p = u3; return u3; } double3 Fn_R_D3B(out double3 p) { p = b3; return b3; } double3 Fn_R_D3F(out double3 p) { p = f3; return f3; } PS_OUTPUT main() { // ----------- assignment conversions ----------- float3 r00 = i3; float3 r01 = b3; float3 r02 = u3; float3 r03 = d3; // valid, but loss of precision on downconversion. int3 r10 = b3; int3 r11 = u3; int3 r12 = f3; int3 r13 = d3; // valid, but loss of precision on downconversion. uint3 r20 = b3; uint3 r21 = i3; uint3 r22 = f3; uint3 r23 = d3; // valid, but loss of precision on downconversion. bool3 r30 = i3; bool3 r31 = u3; bool3 r32 = f3; bool3 r33 = d3; double3 r40 = i3; double3 r41 = u3; double3 r42 = f3; double3 r43 = b3; // ----------- assign ops: vector times vector ----------- r00 *= i3; r01 *= b3; r02 *= u3; r03 *= d3; // valid, but loss of precision on downconversion. r10 *= b3; r11 *= u3; r12 *= f3; r13 *= d3; // valid, but loss of precision on downconversion. r20 *= b3; r21 *= i3; r22 *= f3; r23 *= d3; // valid, but loss of precision on downconversion. // No mul operator for bools r40 *= i3; r41 *= u3; r42 *= f3; r43 *= b3; // ----------- assign ops: vector times scalar ----------- r00 *= is; r01 *= bs; r02 *= us; r03 *= ds; // valid, but loss of precision on downconversion. r10 *= bs; r11 *= us; r12 *= fs; r13 *= ds; // valid, but loss of precision on downconversion. r20 *= bs; r21 *= is; r22 *= fs; r23 *= ds; // valid, but loss of precision on downconversion. // No mul operator for bools r40 *= is; r41 *= us; r42 *= fs; r43 *= bs; #define FN_OVERLOADS 0 // change to 1 when overloads under promotions are in place #if FN_OVERLOADS Fn_F3(i3); Fn_F3(u3); Fn_F3(f3); Fn_F3(b3); Fn_F3(d3); // valid, but loss of precision on downconversion. Fn_I3(i3); Fn_I3(u3); Fn_I3(f3); Fn_I3(b3); Fn_I3(d3); // valid, but loss of precision on downconversion. Fn_U3(i3); Fn_U3(u3); Fn_U3(f3); Fn_U3(b3); Fn_U3(d3); // valid, but loss of precision on downconversion. Fn_B3(i3); Fn_B3(u3); Fn_B3(f3); Fn_B3(b3); Fn_B3(d3); Fn_D3(i3); Fn_D3(u3); Fn_D3(f3); Fn_D3(b3); Fn_D3(d3); Fn_F3(i3.x); Fn_F3(u3.x); Fn_F3(f3.x); Fn_F3(b3.x); Fn_F3(d3.x); // valid, but loss of precision on downconversion. Fn_I3(i3.x); Fn_I3(u3.x); Fn_I3(f3.x); Fn_I3(b3.x); Fn_I3(d3.x); // valid, but loss of precision on downconversion. Fn_U3(i3.x); Fn_U3(u3.x); Fn_U3(f3.x); Fn_U3(b3.x); Fn_U3(d3.x); // valid, but loss of precision on downconversion. Fn_B3(i3.x); Fn_B3(u3.x); Fn_B3(f3.x); Fn_B3(b3.x); Fn_B3(d3.x); Fn_D3(i3.x); Fn_D3(u3.x); Fn_D3(f3.x); Fn_D3(b3.x); Fn_D3(d3.x); #endif const int si = 3; const float sf = 1.2; int c1 = si * sf; // 3.6 (not 3!) int c2 = sf * si; // 3.6 (not 3!) float4 outval = float4(si * sf, sf*si, c1, c2); PS_OUTPUT psout; psout.Color = outval; return psout; } glslang-16.0.0/Test/hlsl.reflection.binding.frag000066400000000000000000000012001506534232700215110ustar00rootroot00000000000000 uniform float u1 : register(b2); uniform SamplerState s1 : register(s5); uniform SamplerState s1a[3] : register(s6); uniform Texture1D t1 : register(t15); uniform Texture1D t1a[3] : register(t16); cbuffer cbuff1 : register(b2) { float4 c1_a; int c1_b; float c1_c; }; cbuffer cbuff2 : register(b3) { float4 c2_a; int c2_b; float c2_c; }; struct PS_OUTPUT { float4 Color : Sv_Target0; }; void main(out PS_OUTPUT psout) { psout.Color = t1.Sample(s1, 0.3) + t1a[0].Sample(s1a[0], 0.3) + c1_a + c1_b + c1_c + c2_a + c2_b + c2_c; } glslang-16.0.0/Test/hlsl.reflection.vert000066400000000000000000000045451506534232700201600ustar00rootroot00000000000000 cbuffer nameless { float3 anonMember1; float3x2 m23; int scalarAfterm23; float4 anonDeadMember2; float4 anonMember3; int scalarBeforeArray; float floatArray[5]; int scalarAfterArray; float2x2 m22[9]; }; cbuffer c_nameless { float3 c_anonMember1; float3x2 c_m23; int c_scalarAfterm23; float4 c_anonDeadMember2; float4 c_anonMember3; }; cbuffer namelessdead { int a; }; struct N1 { float a; }; struct N2 { float b; float c; float d; }; struct N3 { N1 n1; N2 n2; }; cbuffer nested { N3 foo; } struct TS { int a; int dead; }; uniform TS s; uniform float uf1; uniform float uf2; uniform float ufDead3; uniform float ufDead4; uniform float2x2 dm22[10]; struct deep1 { float2 va[3]; bool b; }; struct deep2 { int i; deep1 d1[4]; }; struct deep3 { float4 iv4; deep2 d2; int3 v3; }; uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2]; const bool control = true; void deadFunction() { float4 v = anonDeadMember2; float f = ufDead4; } void liveFunction2() { float3 v = anonMember1; float f = uf1; } tbuffer abl { float foo1; } tbuffer abl2 { float foo2; } void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attributeFloat3, in float4 attributeFloat4, in float4x4 attributeMat4) { liveFunction2(); if (! control) deadFunction(); float f; int i; if (control) { liveFunction2(); f = anonMember3.z; f = s.a; f = m23[1].y + scalarAfterm23; f = c_m23[1].y + c_scalarAfterm23; f += scalarBeforeArray; f += floatArray[2]; f += floatArray[4]; f += scalarAfterArray; f += m22[i][1][0]; f += dm22[3][0][1]; f += m22[2][1].y; f += foo.n1.a + foo.n2.b + foo.n2.c + foo.n2.d; f += deepA[i].d2.d1[2].va[1].x; f += deepB[1].d2.d1[i].va[1].x; f += deepB[i].d2.d1[i].va[1].x; deep3 d = deepC[1]; deep3 da[2] = deepD; } else f = ufDead3; f += foo1 + foo2; f += foo2; f += attributeFloat; f += attributeFloat2.x; f += attributeFloat3.x; f += attributeFloat4.x; f += attributeMat4[0][1]; } glslang-16.0.0/Test/hlsl.round.dx10.frag000066400000000000000000000001171506534232700176560ustar00rootroot00000000000000float4 PixelShaderFunction(float4 input) : COLOR0 { return round(input); } glslang-16.0.0/Test/hlsl.round.dx9.frag000066400000000000000000000001171506534232700176060ustar00rootroot00000000000000float4 PixelShaderFunction(float4 input) : COLOR0 { return round(input); } glslang-16.0.0/Test/hlsl.rw.atomics.frag000066400000000000000000000214271506534232700200510ustar00rootroot00000000000000SamplerState g_sSamp; RWTexture1D g_tTex1df1; RWTexture1D g_tTex1di1; RWTexture1D g_tTex1du1; RWTexture2D g_tTex2df1; RWTexture2D g_tTex2di1; RWTexture2D g_tTex2du1; RWTexture3D g_tTex3df1; RWTexture3D g_tTex3di1; RWTexture3D g_tTex3du1; RWTexture1DArray g_tTex1df1a; RWTexture1DArray g_tTex1di1a; RWTexture1DArray g_tTex1du1a; RWTexture2DArray g_tTex2df1a; RWTexture2DArray g_tTex2di1a; RWTexture2DArray g_tTex2du1a; RWBuffer g_tBuffF; RWBuffer g_tBuffI; RWBuffer g_tBuffU; struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform uint u1; uniform uint2 u2; uniform uint3 u3; uniform uint u1b; uniform uint u1c; uniform int i1; uniform int2 i2; uniform int3 i3; uniform int i1b; uniform int i1c; PS_OUTPUT main() { uint out_u1; int out_i1; // 1D int InterlockedAdd(g_tTex1di1[i1], i1b); InterlockedAdd(g_tTex1di1[i1], i1, out_i1); InterlockedAnd(g_tTex1di1[i1], i1b); InterlockedAnd(g_tTex1di1[i1], i1, out_i1); InterlockedCompareExchange(g_tTex1di1[i1], i1b, i1c, out_i1); InterlockedExchange(g_tTex1di1[i1], i1, out_i1); InterlockedMax(g_tTex1di1[i1], i1b); InterlockedMax(g_tTex1di1[i1], i1, out_i1); InterlockedMin(g_tTex1di1[i1], i1b); InterlockedMin(g_tTex1di1[i1], i1, out_i1); InterlockedOr(g_tTex1di1[i1], i1b); InterlockedOr(g_tTex1di1[i1], i1, out_i1); InterlockedXor(g_tTex1di1[i1], i1b); InterlockedXor(g_tTex1di1[i1], i1, out_i1); // 1D uint InterlockedAdd(g_tTex1du1[u1], u1); InterlockedAdd(g_tTex1du1[u1], u1, out_u1); InterlockedAnd(g_tTex1du1[u1], u1); InterlockedAnd(g_tTex1du1[u1], u1, out_u1); InterlockedCompareExchange(g_tTex1du1[u1], u1b, u1c, out_u1); InterlockedExchange(g_tTex1du1[u1], u1, out_u1); InterlockedMax(g_tTex1du1[u1], u1); InterlockedMax(g_tTex1du1[u1], u1, out_u1); InterlockedMin(g_tTex1du1[u1], u1); InterlockedMin(g_tTex1du1[u1], u1, out_u1); InterlockedOr(g_tTex1du1[u1], u1); InterlockedOr(g_tTex1du1[u1], u1, out_u1); InterlockedXor(g_tTex1du1[u1], u1); InterlockedXor(g_tTex1du1[u1], u1, out_u1); // 2D int InterlockedAdd(g_tTex2di1[i2], i1b); InterlockedAdd(g_tTex2di1[i2], i1, out_i1); InterlockedAnd(g_tTex2di1[i2], i1b); InterlockedAnd(g_tTex2di1[i2], i1, out_i1); InterlockedCompareExchange(g_tTex2di1[i2], i1b, i1c, out_i1); InterlockedExchange(g_tTex2di1[i2], i1, out_i1); InterlockedMax(g_tTex2di1[i2], i1b); InterlockedMax(g_tTex2di1[i2], i1, out_i1); InterlockedMin(g_tTex2di1[i2], i1b); InterlockedMin(g_tTex2di1[i2], i1, out_i1); InterlockedOr(g_tTex2di1[i2], i1b); InterlockedOr(g_tTex2di1[i2], i1, out_i1); InterlockedXor(g_tTex2di1[i2], i1b); InterlockedXor(g_tTex2di1[i2], i1, out_i1); // 2D uint InterlockedAdd(g_tTex2du1[u2], u1); InterlockedAdd(g_tTex2du1[u2], u1, out_u1); InterlockedAnd(g_tTex2du1[u2], u1); InterlockedAnd(g_tTex2du1[u2], u1, out_u1); InterlockedCompareExchange(g_tTex2du1[u2], u1b, u1c, out_u1); InterlockedExchange(g_tTex2du1[u2], u1, out_u1); InterlockedMax(g_tTex2du1[u2], u1); InterlockedMax(g_tTex2du1[u2], u1, out_u1); InterlockedMin(g_tTex2du1[u2], u1); InterlockedMin(g_tTex2du1[u2], u1, out_u1); InterlockedOr(g_tTex2du1[u2], u1); InterlockedOr(g_tTex2du1[u2], u1, out_u1); InterlockedXor(g_tTex2du1[u2], u1); InterlockedXor(g_tTex2du1[u2], u1, out_u1); // 3D int InterlockedAdd(g_tTex3di1[i3], i1b); InterlockedAdd(g_tTex3di1[i3], i1, out_i1); InterlockedAnd(g_tTex3di1[i3], i1b); InterlockedAnd(g_tTex3di1[i3], i1, out_i1); InterlockedCompareExchange(g_tTex3di1[i3], i1b, i1c, out_i1); InterlockedExchange(g_tTex3di1[i3], i1, out_i1); InterlockedMax(g_tTex3di1[i3], i1b); InterlockedMax(g_tTex3di1[i3], i1, out_i1); InterlockedMin(g_tTex3di1[i3], i1b); InterlockedMin(g_tTex3di1[i3], i1, out_i1); InterlockedOr(g_tTex3di1[i3], i1b); InterlockedOr(g_tTex3di1[i3], i1, out_i1); InterlockedXor(g_tTex3di1[i3], i1b); InterlockedXor(g_tTex3di1[i3], i1, out_i1); // 3D uint InterlockedAdd(g_tTex3du1[u3], u1); InterlockedAdd(g_tTex3du1[u3], u1, out_u1); InterlockedAnd(g_tTex3du1[u3], u1); InterlockedAnd(g_tTex3du1[u3], u1, out_u1); InterlockedCompareExchange(g_tTex3du1[u3], u1b, u1c, out_u1); InterlockedExchange(g_tTex3du1[u3], u1, out_u1); InterlockedMax(g_tTex3du1[u3], u1); InterlockedMax(g_tTex3du1[u3], u1, out_u1); InterlockedMin(g_tTex3du1[u3], u1); InterlockedMin(g_tTex3du1[u3], u1, out_u1); InterlockedOr(g_tTex3du1[u3], u1); InterlockedOr(g_tTex3du1[u3], u1, out_u1); InterlockedXor(g_tTex3du1[u3], u1); InterlockedXor(g_tTex3du1[u3], u1, out_u1); // 1D array int InterlockedAdd(g_tTex1di1a[i2], i1b); InterlockedAdd(g_tTex1di1a[i2], i1, out_i1); InterlockedAnd(g_tTex1di1a[i2], i1b); InterlockedAnd(g_tTex1di1a[i2], i1, out_i1); InterlockedCompareExchange(g_tTex1di1a[i2], i1b, i1c, out_i1); InterlockedExchange(g_tTex1di1a[i2], i1, out_i1); InterlockedMax(g_tTex1di1a[i2], i1b); InterlockedMax(g_tTex1di1a[i2], i1, out_i1); InterlockedMin(g_tTex1di1a[i2], i1b); InterlockedMin(g_tTex1di1a[i2], i1, out_i1); InterlockedOr(g_tTex1di1a[i2], i1b); InterlockedOr(g_tTex1di1a[i2], i1, out_i1); InterlockedXor(g_tTex1di1a[i2], i1b); InterlockedXor(g_tTex1di1a[i2], i1, out_i1); // 1D array uint InterlockedAdd(g_tTex1du1a[u2], u1); InterlockedAdd(g_tTex1du1a[u2], u1, out_u1); InterlockedAnd(g_tTex1du1a[u2], u1); InterlockedAnd(g_tTex1du1a[u2], u1, out_u1); InterlockedCompareExchange(g_tTex1du1a[u2], u1b, u1c, out_u1); InterlockedExchange(g_tTex1du1a[u2], u1, out_u1); InterlockedMax(g_tTex1du1a[u2], u1); InterlockedMax(g_tTex1du1a[u2], u1, out_u1); InterlockedMin(g_tTex1du1a[u2], u1); InterlockedMin(g_tTex1du1a[u2], u1, out_u1); InterlockedOr(g_tTex1du1a[u2], u1); InterlockedOr(g_tTex1du1a[u2], u1, out_u1); InterlockedXor(g_tTex1du1a[u2], u1); InterlockedXor(g_tTex1du1a[u2], u1, out_u1); // 2D array int InterlockedAdd(g_tTex1di1a[i2], i1b); InterlockedAdd(g_tTex1di1a[i2], i1, out_i1); InterlockedAnd(g_tTex1di1a[i2], i1b); InterlockedAnd(g_tTex1di1a[i2], i1, out_i1); InterlockedCompareExchange(g_tTex1di1a[i2], i1b, i1c, out_i1); InterlockedExchange(g_tTex1di1a[i2], i1, out_i1); InterlockedMax(g_tTex1di1a[i2], i1b); InterlockedMax(g_tTex1di1a[i2], i1, out_i1); InterlockedMin(g_tTex1di1a[i2], i1b); InterlockedMin(g_tTex1di1a[i2], i1, out_i1); InterlockedOr(g_tTex1di1a[i2], i1b); InterlockedOr(g_tTex1di1a[i2], i1, out_i1); InterlockedXor(g_tTex1di1a[i2], i1b); InterlockedXor(g_tTex1di1a[i2], i1, out_i1); // 2D array uint InterlockedAdd(g_tTex1du1a[u2], u1); InterlockedAdd(g_tTex1du1a[u2], u1, out_u1); InterlockedAnd(g_tTex1du1a[u2], u1); InterlockedAnd(g_tTex1du1a[u2], u1, out_u1); InterlockedCompareExchange(g_tTex1du1a[u2], u1b, u1c, out_u1); InterlockedExchange(g_tTex1du1a[u2], u1, out_u1); InterlockedMax(g_tTex1du1a[u2], u1); InterlockedMax(g_tTex1du1a[u2], u1, out_u1); InterlockedMin(g_tTex1du1a[u2], u1); InterlockedMin(g_tTex1du1a[u2], u1, out_u1); InterlockedOr(g_tTex1du1a[u2], u1); InterlockedOr(g_tTex1du1a[u2], u1, out_u1); InterlockedXor(g_tTex1du1a[u2], u1); InterlockedXor(g_tTex1du1a[u2], u1, out_u1); // buffer int InterlockedAdd(g_tBuffI[i1], i1b); InterlockedAdd(g_tBuffI[i1], i1, out_i1); InterlockedAnd(g_tBuffI[i1], i1b); InterlockedAnd(g_tBuffI[i1], i1, out_i1); InterlockedCompareExchange(g_tBuffI[i1], i1b, i1c, out_i1); InterlockedExchange(g_tBuffI[i1], i1, out_i1); InterlockedMax(g_tBuffI[i1], i1b); InterlockedMax(g_tBuffI[i1], i1, out_i1); InterlockedMin(g_tBuffI[i1], i1b); InterlockedMin(g_tBuffI[i1], i1, out_i1); InterlockedOr(g_tBuffI[i1], i1b); InterlockedOr(g_tBuffI[i1], i1, out_i1); InterlockedXor(g_tBuffI[i1], i1b); InterlockedXor(g_tBuffI[i1], i1, out_i1); // buffer uint InterlockedAdd(g_tBuffU[u1], u1); InterlockedAdd(g_tBuffU[u1], u1, out_u1); InterlockedAnd(g_tBuffU[u1], u1); InterlockedAnd(g_tBuffU[u1], u1, out_u1); InterlockedCompareExchange(g_tBuffU[u1], u1b, u1c, out_u1); InterlockedExchange(g_tBuffU[u1], u1, out_u1); InterlockedMax(g_tBuffU[u1], u1); InterlockedMax(g_tBuffU[u1], u1, out_u1); InterlockedMin(g_tBuffU[u1], u1); InterlockedMin(g_tBuffU[u1], u1, out_u1); InterlockedOr(g_tBuffU[u1], u1); InterlockedOr(g_tBuffU[u1], u1, out_u1); InterlockedXor(g_tBuffU[u1], u1); InterlockedXor(g_tBuffU[u1], u1, out_u1); PS_OUTPUT psout; psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.rw.bracket.frag000066400000000000000000000057001506534232700200210ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); RWTexture1D g_tTex1df4 : register(t0); RWTexture1D g_tTex1di4; RWTexture1D g_tTex1du4; RWTexture2D g_tTex2df4; RWTexture2D g_tTex2di4; RWTexture2D g_tTex2du4; RWTexture3D g_tTex3df4; RWTexture3D g_tTex3di4; RWTexture3D g_tTex3du4; RWTexture1DArray g_tTex1df4a; RWTexture1DArray g_tTex1di4a; RWTexture1DArray g_tTex1du4a; RWTexture2DArray g_tTex2df4a; RWTexture2DArray g_tTex2di4a; RWTexture2DArray g_tTex2du4a; struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; uniform float4 uf4; uniform int4 ui4; uniform uint4 uu4; int4 Fn1(in int4 x) { return x; } uint4 Fn1(in uint4 x) { return x; } float4 Fn1(in float4 x) { return x; } void Fn2(out int4 x) { x = int4(0); } void Fn2(out uint4 x) { x = uint4(0); } void Fn2(out float4 x) { x = float4(0); } float4 SomeValue() { return c4; } PS_OUTPUT main() { PS_OUTPUT psout; // 1D g_tTex1df4[c1]; float4 r00 = g_tTex1df4[c1]; int4 r01 = g_tTex1di4[c1]; uint4 r02 = g_tTex1du4[c1]; // 2D float4 r10 = g_tTex2df4[c2]; int4 r11 = g_tTex2di4[c2]; uint4 r12 = g_tTex2du4[c2]; // 3D float4 r20 = g_tTex3df4[c3]; int4 r21 = g_tTex3di4[c3]; uint4 r22 = g_tTex3du4[c3]; float4 lf4 = uf4; // Test as L-values // 1D g_tTex1df4[c1] = SomeValue(); // complex R-value g_tTex1df4[c1] = lf4; g_tTex1di4[c1] = int4(2,2,3,4); g_tTex1du4[c1] = uint4(3,2,3,4); // Test some operator= things, which need to do both a load and a store. float4 val1 = (g_tTex1df4[c1] *= 2.0); g_tTex1df4[c1] -= 3.0; g_tTex1df4[c1] += 4.0; g_tTex1di4[c1] /= 2; g_tTex1di4[c1] %= 2; g_tTex1di4[c1] &= 0xffff; g_tTex1di4[c1] |= 0xf0f0; g_tTex1di4[c1] <<= 2; g_tTex1di4[c1] >>= 2; // 2D g_tTex2df4[c2] = SomeValue(); // complex L-value g_tTex2df4[c2] = lf4; g_tTex2di4[c2] = int4(5,2,3,4); g_tTex2du4[c2] = uint4(6,2,3,4); // 3D g_tTex3df4[c3] = SomeValue(); // complex L-value g_tTex3df4[c3] = lf4; g_tTex3di4[c3] = int4(8,6,7,8); g_tTex3du4[c3] = uint4(9,2,3,4); // Test function calling Fn1(g_tTex1df4[c1]); // in Fn1(g_tTex1di4[c1]); // in Fn1(g_tTex1du4[c1]); // in Fn2(g_tTex1df4[c1]); // out Fn2(g_tTex1di4[c1]); // out Fn2(g_tTex1du4[c1]); // out // Test increment operators // pre-ops ++g_tTex1df4[c1]; ++g_tTex1di4[c1]; ++g_tTex1du4[c1]; --g_tTex1df4[c1]; --g_tTex1di4[c1]; --g_tTex1du4[c1]; // post-ops g_tTex1df4[c1]++; g_tTex1du4[c1]--; g_tTex1di4[c1]++; g_tTex1df4[c1]--; g_tTex1di4[c1]++; g_tTex1du4[c1]--; // read and write g_tTex1df4[1] = g_tTex2df4[int2(2,3)]; psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.rw.register.frag000066400000000000000000000004431506534232700202310ustar00rootroot00000000000000 RWTexture1D g_tTex1df1 : register(u2); RWBuffer g_tBuf1du1 : register(U3); struct PS_OUTPUT { float4 Color : SV_Target0; }; PS_OUTPUT main() { float r00 = g_tTex1df1[0]; uint r01 = g_tBuf1du1[0]; PS_OUTPUT psout; psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.rw.scalar.bracket.frag000066400000000000000000000055361506534232700212740ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); RWTexture1D g_tTex1df1; RWTexture1D g_tTex1di1; RWTexture1D g_tTex1du1; RWTexture2D g_tTex2df1; RWTexture2D g_tTex2di1; RWTexture2D g_tTex2du1; RWTexture3D g_tTex3df1; RWTexture3D g_tTex3di1; RWTexture3D g_tTex3du1; RWTexture1DArray g_tTex1df1a; RWTexture1DArray g_tTex1di1a; RWTexture1DArray g_tTex1du1a; RWTexture2DArray g_tTex2df1a; RWTexture2DArray g_tTex2di1a; RWTexture2DArray g_tTex2du1a; struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; uniform float uf1; uniform int ui1; uniform uint uu1; int Fn1(in int x) { return x; } uint Fn1(in uint x) { return x; } float Fn1(in float x) { return x; } void Fn2(out int x) { x = int(0); } void Fn2(out uint x) { x = uint(0); } void Fn2(out float x) { x = float(0); } float SomeValue() { return c1; } PS_OUTPUT main() { PS_OUTPUT psout; // 1D g_tTex1df1[c1]; float r00 = g_tTex1df1[c1]; int r01 = g_tTex1di1[c1]; uint r02 = g_tTex1du1[c1]; // 2D float r10 = g_tTex2df1[c2]; int r11 = g_tTex2di1[c2]; uint r12 = g_tTex2du1[c2]; // 3D float r20 = g_tTex3df1[c3]; int r21 = g_tTex3di1[c3]; uint r22 = g_tTex3du1[c3]; float lf1 = uf1; // Test as L-values // 1D g_tTex1df1[c1] = SomeValue(); // complex R-value g_tTex1df1[c1] = lf1; g_tTex1di1[c1] = int(2); g_tTex1du1[c1] = uint(3); // Test some operator= things, which need to do both a load and a store. float val1 = (g_tTex1df1[c1] *= 2.0); g_tTex1df1[c1] -= 3.0; g_tTex1df1[c1] += 4.0; g_tTex1di1[c1] /= 2; g_tTex1di1[c1] %= 2; g_tTex1di1[c1] &= 0xffff; g_tTex1di1[c1] |= 0xf0f0; g_tTex1di1[c1] <<= 2; g_tTex1di1[c1] >>= 2; // 2D g_tTex2df1[c2] = SomeValue(); // complex L-value g_tTex2df1[c2] = lf1; g_tTex2di1[c2] = int(5); g_tTex2du1[c2] = uint(6); // 3D g_tTex3df1[c3] = SomeValue(); // complex L-value g_tTex3df1[c3] = lf1; g_tTex3di1[c3] = int(8); g_tTex3du1[c3] = uint(9); // Test function calling Fn1(g_tTex1df1[c1]); // in Fn1(g_tTex1di1[c1]); // in Fn1(g_tTex1du1[c1]); // in Fn2(g_tTex1df1[c1]); // out Fn2(g_tTex1di1[c1]); // out Fn2(g_tTex1du1[c1]); // out // Test increment operators // pre-ops ++g_tTex1df1[c1]; ++g_tTex1di1[c1]; ++g_tTex1du1[c1]; --g_tTex1df1[c1]; --g_tTex1di1[c1]; --g_tTex1du1[c1]; // post-ops g_tTex1df1[c1]++; g_tTex1du1[c1]--; g_tTex1di1[c1]++; g_tTex1df1[c1]--; g_tTex1di1[c1]++; g_tTex1du1[c1]--; // read and write g_tTex1df1[1] = g_tTex2df1[int2(2, 3)]; psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.rw.swizzle.frag000066400000000000000000000020231506534232700201100ustar00rootroot00000000000000RWTexture2D rwtx; RWBuffer buf; float3 SomeValue() { return float3(1,2,3); } float4 main() : SV_Target0 { int2 tc2 = { 0, 0 }; int tc = 0; // Test swizzles and partial updates of L-values when writing to buffers and writable textures. rwtx[tc2].zyx = float3(1,2,3); // full swizzle, simple RHS rwtx[tc2].zyx = SomeValue(); // full swizzle, complex RHS rwtx[tc2].zyx = 2; // full swizzle, modify op // Partial updates not yet supported. // Partial values, which will use swizzles. // buf[tc].yz = 42; // partial swizzle, simple RHS // buf[tc].yz = SomeValue().x; // partial swizzle, complex RHS // buf[tc].yz += 43; // partial swizzle, modify op // // Partial values, which will use index. // buf[tc].y = 44; // single index, simple RHS // buf[tc].y = SomeValue().x; // single index, complex RHS // buf[tc].y += 45; // single index, modify op return 0.0; } glslang-16.0.0/Test/hlsl.rw.vec2.bracket.frag000066400000000000000000000056371506534232700206700ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); RWTexture1D g_tTex1df2; RWTexture1D g_tTex1di2; RWTexture1D g_tTex1du2; RWTexture2D g_tTex2df2; RWTexture2D g_tTex2di2; RWTexture2D g_tTex2du2; RWTexture3D g_tTex3df2; RWTexture3D g_tTex3di2; RWTexture3D g_tTex3du2; RWTexture1DArray g_tTex1df2a; RWTexture1DArray g_tTex1di2a; RWTexture1DArray g_tTex1du2a; RWTexture2DArray g_tTex2df2a; RWTexture2DArray g_tTex2di2a; RWTexture2DArray g_tTex2du2a; struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; uniform float2 uf2; uniform int2 ui2; uniform uint2 uu2; int2 Fn1(in int2 x) { return x; } uint2 Fn1(in uint2 x) { return x; } float2 Fn1(in float2 x) { return x; } void Fn2(out int2 x) { x = int2(0,0); } void Fn2(out uint2 x) { x = uint2(0,0); } void Fn2(out float2 x) { x = float2(0,0); } float2 SomeValue() { return c2; } PS_OUTPUT main() { PS_OUTPUT psout; // 1D g_tTex1df2[c1]; float2 r00 = g_tTex1df2[c1]; int2 r01 = g_tTex1di2[c1]; uint2 r02 = g_tTex1du2[c1]; // 2D float2 r10 = g_tTex2df2[c2]; int2 r11 = g_tTex2di2[c2]; uint2 r12 = g_tTex2du2[c2]; // 3D float2 r20 = g_tTex3df2[c3]; int2 r21 = g_tTex3di2[c3]; uint2 r22 = g_tTex3du2[c3]; float2 lf2 = uf2; // Test as L-values // 1D g_tTex1df2[c1] = SomeValue(); // complex R-value g_tTex1df2[c1] = lf2; g_tTex1di2[c1] = int2(2,2); g_tTex1du2[c1] = uint2(3,2); // Test some operator= things, which need to do both a load and a store. float2 val1 = (g_tTex1df2[c1] *= 2.0); g_tTex1df2[c1] -= 3.0; g_tTex1df2[c1] += 4.0; g_tTex1di2[c1] /= 2; g_tTex1di2[c1] %= 2; g_tTex1di2[c1] &= 0xffff; g_tTex1di2[c1] |= 0xf0f0; g_tTex1di2[c1] <<= 2; g_tTex1di2[c1] >>= 2; // 2D g_tTex2df2[c2] = SomeValue(); // complex L-value g_tTex2df2[c2] = lf2; g_tTex2di2[c2] = int2(5,2); g_tTex2du2[c2] = uint2(6,2); // 3D g_tTex3df2[c3] = SomeValue(); // complex L-value g_tTex3df2[c3] = lf2; g_tTex3di2[c3] = int2(8,6); g_tTex3du2[c3] = uint2(9,2); // Test function calling Fn1(g_tTex1df2[c1]); // in Fn1(g_tTex1di2[c1]); // in Fn1(g_tTex1du2[c1]); // in Fn2(g_tTex1df2[c1]); // out Fn2(g_tTex1di2[c1]); // out Fn2(g_tTex1du2[c1]); // out // Test increment operators // pre-ops ++g_tTex1df2[c1]; ++g_tTex1di2[c1]; ++g_tTex1du2[c1]; --g_tTex1df2[c1]; --g_tTex1di2[c1]; --g_tTex1du2[c1]; // post-ops g_tTex1df2[c1]++; g_tTex1du2[c1]--; g_tTex1di2[c1]++; g_tTex1df2[c1]--; g_tTex1di2[c1]++; g_tTex1du2[c1]--; // read and write g_tTex1df2[1] = g_tTex2df2[int2(2,3)]; psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.sample.array.dx10.frag000066400000000000000000000024241506534232700211300ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4; Texture1DArray g_tTex1du4; Texture2DArray g_tTex2df4; Texture2DArray g_tTex2di4; Texture2DArray g_tTex2du4; TextureCubeArray g_tTexcdf4; TextureCubeArray g_tTexcdi4; TextureCubeArray g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . Sample(g_sSamp, float2(0.1, 0.2)); int4 txval11 = g_tTex1di4 . Sample(g_sSamp, float2(0.2, 0.3)); uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, float2(0.3, 0.4)); float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3)); int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float3(0.3, 0.4, 0.5)); uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float3(0.5, 0.6, 0.7)); float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float4(0.1, 0.2, 0.3, 0.4)); int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float4(0.4, 0.5, 0.6, 0.7)); uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float4(0.7, 0.8, 0.9, 1.0)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.sample.basic.dx10.frag000066400000000000000000000057121506534232700210760ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform sampler2D g_sSamp2d { AddressU = MIRROR; AddressV = WRAP; MinLOD = 0; MaxLOD = 10; MaxAnisotropy = 2; MipLodBias = 0.2; }, g_sSamp2D_b; Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct MemberTest { int Sample; // in HLSL, method names are valid struct members. int CalculateLevelOfDetail; // ... int CalculateLevelOfDetailUnclamped; // ... int Gather; // ... int GetDimensions; // ... int GetSamplePosition; // ... int Load; // ... int SampleBias; // ... int SampleCmp; // ... int SampleCmpLevelZero; // ... int SampleGrad; // ... int SampleLevel; // ... }; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; MemberTest mtest; mtest.CalculateLevelOfDetail = 1; // in HLSL, method names are valid struct members. mtest.CalculateLevelOfDetailUnclamped = 1; // ... mtest.Gather = 1; // ... mtest.GetDimensions = 1; // ... mtest.GetSamplePosition = 1; // ... mtest.Load = 1; // ... mtest.Sample = 1; // ... mtest.SampleBias = 1; // ... mtest.SampleCmp = 1; // ... mtest.SampleCmpLevelZero = 1; // ... mtest.SampleGrad = 1; // ... mtest.SampleLevel = 1; // ... float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1); int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2); uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3); float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2)); int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4)); uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6)); float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3)); int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6)); uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9)); float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3)); int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6)); uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.sample.dx9.frag000066400000000000000000000020401506534232700177350ustar00rootroot00000000000000 sampler g_sam : register(t0); sampler1D g_sam1D : register(t1); sampler2D g_sam2D : register(t2); sampler3D g_sam3D : register(t3); samplerCUBE g_samCube : register(t4); struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 ColorOut = float4(0,0,0,0); ColorOut += tex2D( g_sam , float2(0.4,0.3)); ColorOut += tex1D( g_sam1D, 0.5); ColorOut += tex2D( g_sam2D, float2(0.5,0.6)); ColorOut += tex3D( g_sam3D, float3(0.5,0.6,0.4)); ColorOut += texCUBE( g_samCube, float3(0.5,0.6,0.4)); ColorOut += tex2Dlod( g_sam , float4(0.4,0.3,0.0,0.0)); ColorOut += tex1Dlod( g_sam1D, float4(0.5,0.0,0.0,0.0)); ColorOut += tex2Dlod( g_sam2D, float4(0.5,0.6,0.0,0.0)); ColorOut += tex3Dlod( g_sam3D, float4(0.5,0.6,0.4,0.0)); ColorOut += texCUBElod( g_samCube, float4(0.5,0.6,0.4,0.0)); psout.Color = ColorOut / 10.0f; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.sample.dx9.vert000066400000000000000000000006331506534232700200040ustar00rootroot00000000000000 sampler g_sam : register(t0); sampler2D g_sam2D : register(t1); struct VS_OUTPUT { float4 Pos : SV_Position; }; VS_OUTPUT main() { VS_OUTPUT vsout; float4 PosOut = float4(0,0,0,0); PosOut += tex2Dlod( g_sam , float4(0.3f, 0.4f, 0.0f, 1.0f)); PosOut += tex2Dlod( g_sam2D, float4(0.5f, 0.6f, 0.0f, 1.0f)); vsout.Pos = PosOut / 2.0f; return vsout; } glslang-16.0.0/Test/hlsl.sample.offset.dx10.frag000066400000000000000000000026311506534232700213000ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1, 1); int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2, 1); uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3, 1); float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2), int2(1,0)); int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4), int2(1,1)); uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6), int2(1,-1)); float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3), int3(1,0,1)); int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6), int3(1,1,1)); uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9), int3(1,0,-1)); // There are no offset forms of cube textures, so we do not test them. psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.sample.offsetarray.dx10.frag000066400000000000000000000020141506534232700223320ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4; Texture1DArray g_tTex1du4; Texture2DArray g_tTex2df4; Texture2DArray g_tTex2di4; Texture2DArray g_tTex2du4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . Sample(g_sSamp, float2(0.1, 0.2), 0); int4 txval11 = g_tTex1di4 . Sample(g_sSamp, float2(0.2, 0.3), 1); uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, float2(0.3, 0.4), 2); float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3), int2(0,0)); int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float3(0.3, 0.4, 0.5), int2(0,0)); uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float3(0.5, 0.6, 0.7), int2(0,1)); // No offset array forms for 3D or cube psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.sample.sub-vec4.dx10.frag000066400000000000000000000010151506534232700214350ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df1; Texture1D g_tTex1df2; Texture1D g_tTex1df3; Texture1D g_tTex1df4; struct PS_OUTPUT { float4 Color : SV_Target0; }; PS_OUTPUT main() { PS_OUTPUT psout; float txval10 = g_tTex1df1 . Sample(g_sSamp, 0.1); float2 txval11 = g_tTex1df2 . Sample(g_sSamp, 0.2); float3 txval12 = g_tTex1df3 . Sample(g_sSamp, 0.2); float4 txval13 = g_tTex1df4 . Sample(g_sSamp, 0.2); psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplebias.array.dx10.frag000066400000000000000000000025451506534232700217730ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4; Texture1DArray g_tTex1du4; Texture2DArray g_tTex2df4; Texture2DArray g_tTex2di4; Texture2DArray g_tTex2du4; TextureCubeArray g_tTexcdf4; TextureCubeArray g_tTexcdi4; TextureCubeArray g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleBias(g_sSamp, float2(0.1, 0.2), 0.5); int4 txval11 = g_tTex1di4 . SampleBias(g_sSamp, float2(0.2, 0.3), 0.5); uint4 txval12 = g_tTex1du4 . SampleBias(g_sSamp, float2(0.3, 0.4), 0.5); float4 txval20 = g_tTex2df4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5); int4 txval21 = g_tTex2di4 . SampleBias(g_sSamp, float3(0.3, 0.4, 0.5), 0.5); uint4 txval22 = g_tTex2du4 . SampleBias(g_sSamp, float3(0.5, 0.6, 0.7), 0.5); float4 txval40 = g_tTexcdf4 . SampleBias(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.5); int4 txval41 = g_tTexcdi4 . SampleBias(g_sSamp, float4(0.4, 0.5, 0.6, 0.7), 0.5); uint4 txval42 = g_tTexcdu4 . SampleBias(g_sSamp, float4(0.7, 0.8, 0.9, 1.0), 0.5); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplebias.basic.dx10.frag000066400000000000000000000031031506534232700217250ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleBias(g_sSamp, 0.1, 0.5); int4 txval11 = g_tTex1di4 . SampleBias(g_sSamp, 0.2, 0.5); uint4 txval12 = g_tTex1du4 . SampleBias(g_sSamp, 0.3, 0.5); float4 txval20 = g_tTex2df4 . SampleBias(g_sSamp, float2(0.1, 0.2), 0.5); int4 txval21 = g_tTex2di4 . SampleBias(g_sSamp, float2(0.3, 0.4), 0.5); uint4 txval22 = g_tTex2du4 . SampleBias(g_sSamp, float2(0.5, 0.6), 0.5); float4 txval30 = g_tTex3df4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5); int4 txval31 = g_tTex3di4 . SampleBias(g_sSamp, float3(0.4, 0.5, 0.6), 0.5); uint4 txval32 = g_tTex3du4 . SampleBias(g_sSamp, float3(0.7, 0.8, 0.9), 0.5); float4 txval40 = g_tTexcdf4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5); int4 txval41 = g_tTexcdi4 . SampleBias(g_sSamp, float3(0.4, 0.5, 0.6), 0.5); uint4 txval42 = g_tTexcdu4 . SampleBias(g_sSamp, float3(0.7, 0.8, 0.9), 0.5); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplebias.offset.dx10.frag000066400000000000000000000027521506534232700221430ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleBias(g_sSamp, 0.1, 0.5, 1); int4 txval11 = g_tTex1di4 . SampleBias(g_sSamp, 0.2, 0.5, 1); uint4 txval12 = g_tTex1du4 . SampleBias(g_sSamp, 0.3, 0.5, 1); float4 txval20 = g_tTex2df4 . SampleBias(g_sSamp, float2(0.1, 0.2), 0.5, int2(1,0)); int4 txval21 = g_tTex2di4 . SampleBias(g_sSamp, float2(0.3, 0.4), 0.5, int2(1,1)); uint4 txval22 = g_tTex2du4 . SampleBias(g_sSamp, float2(0.5, 0.6), 0.5, int2(1,-1)); float4 txval30 = g_tTex3df4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5, int3(1,0,1)); int4 txval31 = g_tTex3di4 . SampleBias(g_sSamp, float3(0.4, 0.5, 0.6), 0.5, int3(1,1,1)); uint4 txval32 = g_tTex3du4 . SampleBias(g_sSamp, float3(0.7, 0.8, 0.9), 0.5, int3(1,0,-1)); // There are no offset forms of cube textures, so we do not test them. psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplebias.offsetarray.dx10.frag000066400000000000000000000021021506534232700231670ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4; Texture1DArray g_tTex1du4; Texture2DArray g_tTex2df4; Texture2DArray g_tTex2di4; Texture2DArray g_tTex2du4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleBias(g_sSamp, float2(0.1, 0.2), 0.5, 0); int4 txval11 = g_tTex1di4 . SampleBias(g_sSamp, float2(0.2, 0.3), 0.5, 1); uint4 txval12 = g_tTex1du4 . SampleBias(g_sSamp, float2(0.3, 0.4), 0.5, 2); float4 txval20 = g_tTex2df4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5, int2(0,0)); int4 txval21 = g_tTex2di4 . SampleBias(g_sSamp, float3(0.3, 0.4, 0.5), 0.5, int2(0,0)); uint4 txval22 = g_tTex2du4 . SampleBias(g_sSamp, float3(0.5, 0.6, 0.7), 0.5, int2(0,1)); // No offset array forms for 3D or cube psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplecmp.array.dx10.frag000066400000000000000000000033031506534232700216250ustar00rootroot00000000000000SamplerComparisonState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // 1DArray float r10 = g_tTex1df4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); float r12 = g_tTex1di4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); float r14 = g_tTex1du4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); // 2DArray float r30 = g_tTex2df4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); float r32 = g_tTex2di4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); float r34 = g_tTex2du4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); // CubeArray float r60 = g_tTexcdf4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); float r62 = g_tTexcdi4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); float r64 = g_tTexcdu4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplecmp.basic.dx10.frag000066400000000000000000000032121506534232700215670ustar00rootroot00000000000000SamplerComparisonState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // 1D float r00 = g_tTex1df4 . SampleCmp(g_sSamp, 0.1, 0.75); float r02 = g_tTex1di4 . SampleCmp(g_sSamp, 0.1, 0.75); float r04 = g_tTex1du4 . SampleCmp(g_sSamp, 0.1, 0.75); // 2D float r20 = g_tTex2df4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); float r22 = g_tTex2di4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); float r24 = g_tTex2du4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); // *** There's no SampleCmp on 3D textures float r50 = g_tTexcdf4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); float r52 = g_tTexcdi4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); float r54 = g_tTexcdu4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplecmp.dualmode.frag000066400000000000000000000005571506534232700215360ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); SamplerComparisonState g_sSampCmp : register(s1); uniform Texture1D g_tTex : register(t3); float4 main() : SV_Target0 { // This texture is used with both shadow modes. It will need post-compilation // legalization. g_tTex.SampleCmp(g_sSampCmp, 0.1, 0.75); g_tTex.Sample(g_sSamp, 0.1); return 0; } glslang-16.0.0/Test/hlsl.samplecmp.negative.frag000066400000000000000000000005341506534232700215410ustar00rootroot00000000000000 Texture2D g_nonShadowTex; Texture2D g_shadowTex; SamplerState g_shadowSampler; SamplerComparisonState g_shadowSamplerComp; float4 main() : SV_Target0 { g_shadowTex.SampleCmp(g_shadowSamplerComp, float2(0,0), 0); // OK g_nonShadowTex.SampleCmp(g_shadowSampler, float2(0,0), 0); // ERROR (should be comparison sampler) return 0; } glslang-16.0.0/Test/hlsl.samplecmp.negative2.frag000066400000000000000000000003301506534232700216150ustar00rootroot00000000000000 Texture2D g_shadowTex; SamplerState g_shadowSampler; float4 main() : SV_Target0 { g_shadowTex.GatherCmpRed(g_shadowSampler, float2(0,0), 0, int2(0,0)); // ERROR (should be comparison sampler) return 0; } glslang-16.0.0/Test/hlsl.samplecmp.offset.dx10.frag000066400000000000000000000040331506534232700217760ustar00rootroot00000000000000SamplerComparisonState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // 1D float r01 = g_tTex1df4 . SampleCmp(g_sSamp, 0.1, 0.75, 2); float r03 = g_tTex1di4 . SampleCmp(g_sSamp, 0.1, 0.75, 2); float r05 = g_tTex1du4 . SampleCmp(g_sSamp, 0.1, 0.75, 2); // 2D float r21 = g_tTex2df4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); float r23 = g_tTex2di4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); float r25 = g_tTex2du4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); // *** There's no SampleCmp on 3D textures // This page: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509696(v=vs.85).aspx // claims offset is supported for cube textures, but FXC does not accept it, and that does // not match other methods, so it may be a documentation bug. Those lines are commented // out below. // Cube // float r51 = g_tTexcdf4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(2,3,4)); // float r53 = g_tTexcdi4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(2,3,4)); // float r55 = g_tTexcdu4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(2,3,4)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplecmp.offsetarray.dx10.frag000066400000000000000000000041711506534232700230400ustar00rootroot00000000000000SamplerComparisonState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // 1DArray float r11 = g_tTex1df4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, 2); float r13 = g_tTex1di4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, 2); float r15 = g_tTex1du4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, 2); // 2DArray float r31 = g_tTex2df4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); float r33 = g_tTex2di4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); float r35 = g_tTex2du4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); // *** There's no SampleCmp on 3D textures // This page: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509696(v=vs.85).aspx // claims offset is supported for cube textures, but FXC does not accept it, and that does // not match other methods, so it may be a documentation bug. Those lines are commented // out below. // CubeArray // float r61 = g_tTexcdf4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); // float r63 = g_tTexcdi4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); // float r65 = g_tTexcdu4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplecmplevelzero.array.dx10.frag000066400000000000000000000034241506534232700235610ustar00rootroot00000000000000SamplerComparisonState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // 1DArray float r10 = g_tTex1df4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); float r12 = g_tTex1di4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); float r14 = g_tTex1du4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); // 2DArray float r30 = g_tTex2df4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); float r32 = g_tTex2di4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); float r34 = g_tTex2du4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); // CubeArray float r60 = g_tTexcdf4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); float r62 = g_tTexcdi4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); float r64 = g_tTexcdu4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplecmplevelzero.basic.dx10.frag000066400000000000000000000033441506534232700235250ustar00rootroot00000000000000SamplerComparisonState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // 1D float r00 = g_tTex1df4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75); float r02 = g_tTex1di4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75); float r04 = g_tTex1du4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75); // 2D float r20 = g_tTex2df4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); float r22 = g_tTex2di4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); float r24 = g_tTex2du4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); // *** There's no SampleCmpLevelZero on 3D textures float r50 = g_tTexcdf4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); float r52 = g_tTexcdi4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); float r54 = g_tTexcdu4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplecmplevelzero.offset.dx10.frag000066400000000000000000000041571506534232700237350ustar00rootroot00000000000000SamplerComparisonState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // 1D float r01 = g_tTex1df4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75, 2); float r03 = g_tTex1di4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75, 2); float r05 = g_tTex1du4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75, 2); // 2D float r21 = g_tTex2df4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); float r23 = g_tTex2di4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); float r25 = g_tTex2du4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); // *** There's no SampleCmpLevelZero on 3D textures // This page: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509696(v=vs.85).aspx // claims offset is supported for cube textures, but FXC does not accept it, and that does // not match other methods, so it may be a documentation bug. Those lines are commented // out below. // Cube // float r51 = g_tTexcdf4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); // float r53 = g_tTexcdi4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); // float r55 = g_tTexcdu4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplecmplevelzero.offsetarray.dx10.frag000066400000000000000000000043231506534232700247670ustar00rootroot00000000000000SamplerComparisonState g_sSamp : register(s0); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; // 1DArray float r11 = g_tTex1df4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, 2); float r13 = g_tTex1di4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, 2); float r15 = g_tTex1du4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, 2); // 2DArray float r31 = g_tTex2df4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); float r33 = g_tTex2di4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); float r35 = g_tTex2du4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); // *** There's no SampleCmpLevelZero on 3D textures // This page: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509696(v=vs.85).aspx // claims offset is supported for cube textures, but FXC does not accept it, and that does // not match other methods, so it may be a documentation bug. Those lines are commented // out below. // CubeArray // float r61 = g_tTexcdf4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); // float r63 = g_tTexcdi4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); // float r65 = g_tTexcdu4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplegrad.array.dx10.frag000066400000000000000000000031141506534232700217630ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4; Texture1DArray g_tTex1du4; Texture2DArray g_tTex2df4; Texture2DArray g_tTex2di4; Texture2DArray g_tTex2du4; TextureCubeArray g_tTexcdf4; TextureCubeArray g_tTexcdi4; TextureCubeArray g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2); int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2); uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2); float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2)); int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2)); uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2)); float4 txval40 = g_tTexcdf4 . SampleGrad(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); int4 txval41 = g_tTexcdi4 . SampleGrad(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); uint4 txval42 = g_tTexcdu4 . SampleGrad(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplegrad.basic.dx10.frag000066400000000000000000000036451506534232700217370ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, 0.1, 1.1, 1.2); int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, 0.2, 1.1, 1.2); uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, 0.3, 1.1, 1.2); float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), float2(1.1, 1.2), float2(1.1, 1.2)); int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float2(0.3, 0.4), float2(1.1, 1.2), float2(1.1, 1.2)); uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float2(0.5, 0.6), float2(1.1, 1.2), float2(1.1, 1.2)); float4 txval30 = g_tTex3df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); int4 txval31 = g_tTex3di4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); uint4 txval32 = g_tTex3du4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); float4 txval40 = g_tTexcdf4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); int4 txval41 = g_tTexcdi4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); uint4 txval42 = g_tTexcdu4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplegrad.basic.dx10.vert000066400000000000000000000035731506534232700220000ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct VS_OUTPUT { float4 Pos : SV_Position; }; VS_OUTPUT main() { VS_OUTPUT vsout; float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, 0.1, 1.1, 1.2); int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, 0.2, 1.1, 1.2); uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, 0.3, 1.1, 1.2); float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), float2(1.1, 1.2), float2(1.1, 1.2)); int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float2(0.3, 0.4), float2(1.1, 1.2), float2(1.1, 1.2)); uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float2(0.5, 0.6), float2(1.1, 1.2), float2(1.1, 1.2)); float4 txval30 = g_tTex3df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); int4 txval31 = g_tTex3di4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); uint4 txval32 = g_tTex3du4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); float4 txval40 = g_tTexcdf4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); int4 txval41 = g_tTexcdi4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); uint4 txval42 = g_tTexcdu4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); vsout.Pos = float4(0,0,0,0); return vsout; } glslang-16.0.0/Test/hlsl.samplegrad.offset.dx10.frag000066400000000000000000000033211506534232700221330ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, 0.1, 1.1, 1.2, 1); int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, 0.2, 1.1, 1.2, 1); uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, 0.3, 1.1, 1.2, 1); float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), float2(0.1, 0.2), float2(1.1, 1.2), int2(1,0)); int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float2(0.3, 0.4), float2(0.1, 0.2), float2(1.1, 1.2), int2(1,1)); uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float2(0.5, 0.6), float2(0.1, 0.2), float2(1.1, 1.2), int2(1,-1)); float4 txval30 = g_tTex3df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3), int3(1,0,1)); int4 txval31 = g_tTex3di4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3), int3(1,1,1)); uint4 txval32 = g_tTex3du4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3), int3(1,0,-1)); // There are no offset forms of cube textures, so we do not test them. psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplegrad.offsetarray.dx10.frag000066400000000000000000000023651506534232700232010ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4; Texture1DArray g_tTex1du4; Texture2DArray g_tTex2df4; Texture2DArray g_tTex2di4; Texture2DArray g_tTex2du4; TextureCubeArray g_tTexcdf4; TextureCubeArray g_tTexcdi4; TextureCubeArray g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2, 1); int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2, 1); uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2, 1); float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2), int2(1,0)); int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2), int2(1,0)); uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2), int2(1,0)); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplelevel.array.dx10.frag000066400000000000000000000026101506534232700221550ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; TextureCubeArray g_tTexcdf4a; TextureCubeArray g_tTexcdi4a; TextureCubeArray g_tTexcdu4a; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4a . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75); int4 txval11 = g_tTex1di4a . SampleLevel(g_sSamp, float2(0.2, 0.3), 0.75); uint4 txval12 = g_tTex1du4a . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75); float4 txval20 = g_tTex2df4a . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); int4 txval21 = g_tTex2di4a . SampleLevel(g_sSamp, float3(0.3, 0.4, 0.5), 0.75); uint4 txval22 = g_tTex2du4a . SampleLevel(g_sSamp, float3(0.5, 0.6, 0.7), 0.75); float4 txval40 = g_tTexcdf4a . SampleLevel(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); int4 txval41 = g_tTexcdi4a . SampleLevel(g_sSamp, float4(0.4, 0.5, 0.6, 0.7), 0.75); uint4 txval42 = g_tTexcdu4a . SampleLevel(g_sSamp, float4(0.7, 0.8, 0.9, 1.0), 0.75); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplelevel.basic.dx10.frag000066400000000000000000000032011506534232700221150ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); uniform sampler2D g_sSamp2d; Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75); int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75); uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75); float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75); int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75); uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75); float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); int4 txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75); uint4 txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75); float4 txval40 = g_tTexcdf4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); int4 txval41 = g_tTexcdi4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75); uint4 txval42 = g_tTexcdu4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75); psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplelevel.basic.dx10.vert000066400000000000000000000030611506534232700221620ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct VS_OUTPUT { float4 Pos : SV_Position; }; VS_OUTPUT main() { VS_OUTPUT vsout; float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75); int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75); uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75); float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75); int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75); uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75); float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); int4 txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75); uint4 txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75); float4 txval40 = g_tTexcdf4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); int4 txval41 = g_tTexcdi4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75); uint4 txval42 = g_tTexcdu4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75); vsout.Pos = float4(0,0,0,0); return vsout; } glslang-16.0.0/Test/hlsl.samplelevel.offset.dx10.frag000066400000000000000000000027741506534232700223400ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4a : register(t1); uniform Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; TextureCube g_tTexcdf4; TextureCube g_tTexcdi4; TextureCube g_tTexcdu4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75, 1); int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75, 1); uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75, 1); float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75, int2(1,0)); int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75, int2(1,1)); uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75, int2(1,-1)); float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(1,0,1)); int4 txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75, int3(1,1,1)); uint4 txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75, int3(1,0,-1)); // There are no offset forms of cube textures, so we do not test them. psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.samplelevel.offsetarray.dx10.frag000066400000000000000000000021161506534232700233650ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1DArray g_tTex1df4a : register(t1); uniform Texture1DArray g_tTex1df4 : register(t0); Texture1DArray g_tTex1di4; Texture1DArray g_tTex1du4; Texture2DArray g_tTex2df4; Texture2DArray g_tTex2di4; Texture2DArray g_tTex2du4; struct PS_OUTPUT { float4 Color : SV_Target0; float Depth : SV_Depth; }; PS_OUTPUT main() { PS_OUTPUT psout; float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75, 0); int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, float2(0.2, 0.3), 0.75, 1); uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75, 2); float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(0,0)); int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float3(0.3, 0.4, 0.5), 0.75, int2(0,0)); uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float3(0.5, 0.6, 0.7), 0.75, int2(0,1)); // No offset array forms for 3D or cube psout.Color = 1.0; psout.Depth = 1.0; return psout; } glslang-16.0.0/Test/hlsl.scalar-length.frag000066400000000000000000000001351506534232700205000ustar00rootroot00000000000000float4 main() : SV_Target0 { float4 test = { 0, 1, 2, 3 }; return length(test.a); } glslang-16.0.0/Test/hlsl.scalar2matrix.frag000066400000000000000000000014171506534232700205340ustar00rootroot00000000000000 void Fn1(float4x4 p) { } float4 main() : SV_TARGET { const float4x4 mat1c = 0.20; const float4x4 mat2c = {2, 2.1, 2.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const float4x4 mat3c = (float4x4)float1(0.1); float4x4 mat1 = 0.25; float4x4 mat2 = {3, 3.1, 3.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; float4x4 mat3 = (float4x4)0.375; // float4x4 mat5 = (float4x4)Fn2(); // TODO: enable when compex rvalue handling is in place float4x4 mat4; mat4 = 0.75; mat4 = float4x4(4, 4.1, 4.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); mat4 = (float4x4)0.5; mat4 *= 0.75; mat4 += 0.75; mat4 -= 0.5; mat4 /= 2.0; Fn1(5.0); // test calling fn accepting matrix with scalar type return mat1c[0] + mat3c[0] + mat1[1] + mat4[2]; } glslang-16.0.0/Test/hlsl.scalarCast.vert000066400000000000000000000013541506534232700201010ustar00rootroot00000000000000struct VertexOut { float4 position : SV_Position; float2 texCoord : TEXCOORD; }; VertexOut r0() { const float f = 2.0; return (VertexOut)f; } VertexOut r1() { const float f = 2.0; return (VertexOut)(f + 1.0); } VertexOut r2() { const float f = 2.0; return (VertexOut)(sin(f)); } VertexOut r3() { float f = 2.0; return (VertexOut)f; } VertexOut r4() { float f = 2.0; return (VertexOut)(f + 1.0); } VertexOut r5() { float f = 2.0; return (VertexOut)(sin(f)); } VertexOut main() { VertexOut v0 = r0(); VertexOut v1 = r1(); VertexOut v2 = r2(); VertexOut v3 = r3(); VertexOut v4 = r4(); VertexOut v5 = r5(); return (VertexOut)1; } glslang-16.0.0/Test/hlsl.scope.frag000066400000000000000000000006011506534232700170630ustar00rootroot00000000000000void PixelShaderFunction(float4 input) : COLOR0 { int x; x; { float x; x; { bool x; x; { float3 x; x; } x; } x; } x; if (x > 0) bool x; while (x > 0) bool x; do { bool x; } while (x > 0); } glslang-16.0.0/Test/hlsl.self_cast.frag000066400000000000000000000004661506534232700177260ustar00rootroot00000000000000struct Test0 {}; struct Test1 { float f; }; void main() { { Test0 a; Test0 b = (Test0)a; } { Test1 a; Test1 b = (Test1)a; } { Test0 a[2]; Test0 b[2] = (Test0[2])a; } { Test1 a[2]; Test1 b[2] = (Test1[2])a; } } glslang-16.0.0/Test/hlsl.semantic-1.vert000066400000000000000000000006341506534232700177620ustar00rootroot00000000000000#define DLAYER 3 #define DMACRO1 TEXCOORD1 #define DMACRO(num) TEXCOORD##num struct S { float4 pos : POSITION; float2 UV0 : TEXCOORD0; float2 UV1 : DMACRO1; float2 UV2 : DMACRO(2); float2 UV3 : DMACRO(DLAYER); }; S main(float4 v : POSITION) { S s; s.pos = v; s.UV0 = float2(v.x,v.x); s.UV1 = float2(v.y,v.y); s.UV2 = float2(v.z,v.z); s.UV3 = float2(v.w,v.w); return s; } glslang-16.0.0/Test/hlsl.semantic.geom000066400000000000000000000010471506534232700175720ustar00rootroot00000000000000struct S { float clip0 : SV_Position; float clip0 : SV_ClipDistance0; float cull0 : SV_CullDistance0; uint vpai : SV_ViewportArrayIndex; uint rtai : SV_RenderTargetArrayIndex; int ii : SV_InstanceID; }; [maxvertexcount(4)] void main(triangle in uint VertexID[3] : VertexID, inout LineStream OutputStream) { S s; OutputStream.Append(s); } [maxvertexcount(4)] void notmain(line in uint VertexID[2] : VertexID, inout LineStream OutputStream) { S s; OutputStream.Append(s); } glslang-16.0.0/Test/hlsl.semantic.vert000066400000000000000000000003511506534232700176200ustar00rootroot00000000000000struct S { float clip0 : SV_ClipDistance0; float clip1 : SV_ClipDistance1; float cull0 : SV_CullDistance0; float cull1 : SV_CullDistance1; int ii : SV_InstanceID; }; S main(S ins) { S s; return s; } glslang-16.0.0/Test/hlsl.semicolons.frag000066400000000000000000000004121506534232700201250ustar00rootroot00000000000000 void MyFunc() { } ;;; ; ; ; ; // HLSL allows stray global scope semicolons. void MyFunc2() {;;;}; struct PS_OUTPUT { float4 color : SV_Target0; };;;;; ;PS_OUTPUT main() { PS_OUTPUT ps_output;;; ; ps_output.color = 1.0; return ps_output; }; glslang-16.0.0/Test/hlsl.shapeConv.frag000066400000000000000000000012101506534232700176750ustar00rootroot00000000000000float4 PixelShaderFunction(float4 input, float f) : COLOR0 { float4 v; v = 1; v = 2.0; v = f; float3 u; u = float(1); u = float(2.0); u = float(f); float2 w = 2.0; float V = 1; float3 MyVal = V; float3 foo; foo > 4.0; foo >= 5.0; 6.0 < foo; 7.0 <= foo; all(v.x == v); any(f != v); float1 f1; f1 == v; v < f1; f1.x; f1.xxx; const float4 f4 = 3.0; uint ui; uint3 ui3; ui >> ui3; ui3 >> ui; v *= f1; f1 *= v; float3 mixed = u * v; f = u; f1 = u; float sf = v; float1 sf1 = v; return input * f4; } glslang-16.0.0/Test/hlsl.shapeConvRet.frag000066400000000000000000000001171506534232700203550ustar00rootroot00000000000000int3 foo() { return 13; } float4 main(float f) { return f; } glslang-16.0.0/Test/hlsl.shift.per-set.frag000066400000000000000000000023011506534232700204440ustar00rootroot00000000000000// Test register class offsets for different resource types SamplerState s1 : register(s1, space1); SamplerComparisonState s2 : register(s2, space2); Texture1D t1 : register(t1, space1); Texture2D t2 : register(t2, space1); Texture3D t3 : register(t1, space2); Texture3D ts6 : register(t1, space6); StructuredBuffer t4 : register(t1, space3); ByteAddressBuffer t5 : register(t2, space3); Buffer t6 : register(t3, space3); RWTexture1D u1 : register(u1, space1); RWTexture2D u2 : register(u2, space2); RWTexture3D u3 : register(u3, space2); RWBuffer u4 : register(u4, space1); RWByteAddressBuffer u5 : register(u4, space2); RWStructuredBuffer u6 : register(u4, space3); AppendStructuredBuffer u7 : register(u4, space4); ConsumeStructuredBuffer u8 : register(u4, space5); cbuffer cb : register(b1, space6) { int cb1; }; tbuffer tb : register(t7) { int tb1; }; float4 main() : SV_Target0 { t1; t2; t3; t4[0]; t5.Load(0); t6; s1; s2; u1; u2; u3; u4[0]; u5.Load(0); u6[0]; u7; u8; cb1; tb1; ts6; return 0; } glslang-16.0.0/Test/hlsl.sin.frag000066400000000000000000000001151506534232700165430ustar00rootroot00000000000000float4 PixelShaderFunction(float4 input) : COLOR0 { return sin(input); } glslang-16.0.0/Test/hlsl.singleArgIntPromo.vert000066400000000000000000000006511506534232700214230ustar00rootroot00000000000000float main(): SV_Target0 { int d = 4; int2 d2 = int2(5,d); float f1 = log2(5); float2 f2 = log(d2); float3 f3 = log(int3(7,2,3)); float2 f22 = log(int2(5,d)); // This case does not work yet, due to a different bug that turns this into 2 args. int a = 5; min16float b = min16float(f16tof32(a)); b *= b; uint c = f32tof16(b); return f1 + f2.x + f3.z + f22.y + c; }glslang-16.0.0/Test/hlsl.snorm.uav.comp000066400000000000000000000005701506534232700177260ustar00rootroot00000000000000 unorm float4 uf4; Texture3D ResultInU: register(t0); RWTexture3D ResultOutU: register(u0); Texture3D ResultInS: register(t1); RWTexture3D ResultOutS: register(u1); [numthreads(16, 16, 1)] void main(uint3 tid: SV_DispatchThreadID) { ResultOutS[tid] = ResultInS[tid] + uf4; ResultOutU[tid] = ResultInU[tid]; } glslang-16.0.0/Test/hlsl.specConstant.frag000066400000000000000000000004211506534232700204160ustar00rootroot00000000000000[[vk::constant_id(0)]] const uint index = 2; static const uint array[] = { 10, 20, 30, 40 }; float4 main( ) : SV_TARGET { float4 r; for(uint i = 0; i < array[index]; i++) r = i; r += index + index; r += 2 * index; return r; } glslang-16.0.0/Test/hlsl.spv.1.6.discard.frag000066400000000000000000000002551506534232700205020ustar00rootroot00000000000000void 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; } glslang-16.0.0/Test/hlsl.staticFuncInit.frag000066400000000000000000000003651506534232700207100ustar00rootroot00000000000000static float x = 1.0; float f1() { static float x = 2.0; x += 10.0; return x; } float f2(float p) { static float x = 7.0; x += p; return x; } float4 main() : SV_TARGET { return x + f1() + f1() + f2(5.0) + f2(x); } glslang-16.0.0/Test/hlsl.staticMemberFunction.frag000066400000000000000000000006571506534232700221120ustar00rootroot00000000000000struct Test { float4 memVar; static float4 staticMemFun(float4 a) : SV_Position { return 2 * a; } static int staticMemFun(int a) : SV_Position { return 2 + a; } int i; }; float4 main() : SV_Target0 { Test test; float4 f4 = float4(1.0,1.0,1.0,1.0); f4 += Test::staticMemFun(float4(5.0f,5.0f,5.0f,5.0f)); f4 += Test::staticMemFun(7); return f4; } glslang-16.0.0/Test/hlsl.store.rwbyteaddressbuffer.type.comp000066400000000000000000000002541506534232700241640ustar00rootroot00000000000000RWByteAddressBuffer buffer; [numthreads(64, 1, 1)] void main( uint3 dispatchThreadID : SV_DispatchThreadID) { if(dispatchThreadID.x == 0) buffer.Store(0, 2); }glslang-16.0.0/Test/hlsl.string.frag000066400000000000000000000005241506534232700172640ustar00rootroot00000000000000string s = "string1"; string e = ""; string bracket < string a = "nested" ; > ; string brackets < string b = "nest1" ; string c = "nest2" ; float test [ 4 ] = { 1.0 , 1.0 , 1.0 , 1.0 } ; vector a = float3(2.0); > ; string brackete1 < > ; string brackete2 < ; > ; string brackete3 < ; ; > ; float main(float f) { return f; }glslang-16.0.0/Test/hlsl.stringtoken.frag000066400000000000000000000005231506534232700203240ustar00rootroot00000000000000 struct PS_OUTPUT { float4 Color : SV_Target0; }; Texture2D TestTexture < string TestAttribute1 = "TestAttribute"; string TestAttribute2 = "false"; int TestAttribute3 = 3; >; uniform float4 TestUF ; PS_OUTPUT main() { PS_OUTPUT psout; psout.Color = float4(0,0,0,1); return psout; } glslang-16.0.0/Test/hlsl.struct.frag000066400000000000000000000015161506534232700173040ustar00rootroot00000000000000struct { }; struct { bool b; }; struct myS { bool b, c; float4 a, d; }; myS s1; static class { float4 i; } s2; struct IN_S { linear float4 a; nointerpolation bool b; noperspective centroid float1 c; sample centroid float2 d; bool ff1 : SV_IsFrontFace; bool ff2 : packoffset(c0.y); bool ff3 : packoffset(c0.y) : register(ps_5_0, s0) ; float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) ; }; float ff5 : packoffset(c101.y) : register(ps_5_0, s[5]); float ff6 : packoffset(c102.y) : register(s3[5]); struct empty {}; struct containEmpty { empty e; }; float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0 { class FS { bool3 b3; } s3; s3 == s3; s2.i = s.ff4; containEmpty ce; empty e; e = ce.e; return input; } glslang-16.0.0/Test/hlsl.struct.split-1.vert000066400000000000000000000006631506534232700206370ustar00rootroot00000000000000 struct VS_INPUT { int x0_in : foo0; float4 Pos_in : SV_Position; int x1_in : foo1; }; struct VS_OUTPUT { int x0_out : foo0; float4 Pos_out : SV_Position; int x1_out : foo1; }; VS_OUTPUT main(VS_INPUT vsin, float4 Pos_loose : SV_Position) { VS_OUTPUT vsout; vsout.x0_out = vsin.x0_in; vsout.Pos_out = vsin.Pos_in + Pos_loose; vsout.x1_out = vsin.x1_in; return vsout; } glslang-16.0.0/Test/hlsl.struct.split.array.geom000066400000000000000000000006571506534232700215700ustar00rootroot00000000000000struct PSInput { float4 Pos : SV_POSITION; float2 TexCoord : TEXCOORD; float3 TerrainPos : TERRAINPOS; uint VertexID : VertexID; }; typedef PSInput foo_t[2][3]; [maxvertexcount(4)] void main(point uint v[1] : VertexID, inout TriangleStream OutputStream) { foo_t Verts; PSInput Out = (PSInput) 0; for (int x=0; x<2; ++x) for (int y=0; y<2; ++y) Verts[x][y] = Out; } glslang-16.0.0/Test/hlsl.struct.split.assign.frag000066400000000000000000000002271506534232700217170ustar00rootroot00000000000000struct S { float f; float4 pos : SV_Position; }; float4 main(int i, S input[3]) : COLOR0 { S a[3]; input = a; return a[1].pos; } glslang-16.0.0/Test/hlsl.struct.split.call.vert000066400000000000000000000010411506534232700214020ustar00rootroot00000000000000// Test passing split structs to functions. struct VS_INPUT { int x0_in : foo0; float4 Pos_in : SV_Position; int x1_in : foo1; }; struct VS_OUTPUT { int x0_out : foo0; float4 Pos_out : SV_Position; int x1_out : foo1; }; void Fn1(VS_INPUT fn1_in, VS_OUTPUT fn1_out) { fn1_in.Pos_in + fn1_out.Pos_out; } VS_OUTPUT main(VS_INPUT vsin) { VS_OUTPUT vsout; vsout.x0_out = vsin.x0_in; vsout.Pos_out = vsin.Pos_in; vsout.x1_out = vsin.x1_in; Fn1(vsin, vsout); return vsout; } glslang-16.0.0/Test/hlsl.struct.split.nested.geom000066400000000000000000000012251506534232700217240ustar00rootroot00000000000000 struct STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO { float m0_array[2] : mysemA; int m1 : mysemB; }; struct PS_IN { float4 pos : SV_Position; float2 tc : TEXCOORD0; // float c : SV_ClipDistance0; }; struct GS_OUT { PS_IN psIn; STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO contains_no_builtin_io; }; [maxvertexcount(3)] void main(triangle PS_IN tin[3], inout TriangleStream ts ) { GS_OUT o; o.psIn.pos = float4(1,2,3,4); o.psIn.tc = float2(5,6); o.contains_no_builtin_io.m0_array[0] = 2.3; o.contains_no_builtin_io.m0_array[1] = 2.3; o.contains_no_builtin_io.m1 = 2; ts.Append(o); } glslang-16.0.0/Test/hlsl.struct.split.trivial.geom000066400000000000000000000004471506534232700221210ustar00rootroot00000000000000 struct PS_IN { float4 pos : SV_Position; }; struct GS_OUT { float4 pos : SV_Position; }; [maxvertexcount(3)] void main(triangle PS_IN i[3], inout TriangleStream ts) { GS_OUT o; for (int x=0; x<3; ++x) { o.pos = i[x].pos; ts.Append(o); } } glslang-16.0.0/Test/hlsl.struct.split.trivial.vert000066400000000000000000000006611506534232700221500ustar00rootroot00000000000000 // Test trivial case for structure splitting: the IN and OUT structs have ONLY an interstage IO. // This should fall back to flattening, and not produce any empty structures. struct VS_INPUT { float4 Pos_in : SV_Position; }; struct VS_OUTPUT { float4 Pos : SV_Position; }; VS_OUTPUT main(VS_INPUT vsin, float4 Pos_loose : SV_Position) { VS_OUTPUT vsout; vsout.Pos = vsin.Pos_in + Pos_loose; return vsout; } glslang-16.0.0/Test/hlsl.structIoFourWay.frag000066400000000000000000000006621506534232700211120ustar00rootroot00000000000000struct T { float f : packoffset(c4.y); // artificial, but validates all different treatments: uniform offset centroid float g; // interpolant input float d: SV_DepthGreaterEqual; // fragment output float4 normal; // non-IO }; T s; // loose uniform cbuffer buff { T t : packoffset(c5.z); }; T main(T t : myInput) : SV_Target0 { T local; return local; } glslang-16.0.0/Test/hlsl.structStructName.frag000066400000000000000000000001141506534232700213030ustar00rootroot00000000000000struct S { int s; }; int main() { struct S t; return t.s; } glslang-16.0.0/Test/hlsl.structarray.flatten.frag000066400000000000000000000012111506534232700217670ustar00rootroot00000000000000SamplerState g_samp; Texture1D g_tex; struct tex_t { SamplerState samp; Texture1D tex; int nonopaque_thing; }; struct tex_with_arrays_t { SamplerState samp[2]; Texture1D tex[2]; int nonopaque_thing; }; uniform tex_t g_texdata; uniform tex_t g_texdata_array[3]; uniform tex_with_arrays_t g_texdata_array2[3]; struct PS_OUTPUT { float4 color : SV_Target0; }; void main(out PS_OUTPUT ps_output) { ps_output.color = g_texdata.tex.Sample(g_texdata.samp, 0.5) + g_texdata_array[1].tex.Sample(g_texdata_array[1].samp, 0.4) + g_texdata_array2[1].tex[0].Sample(g_texdata_array2[1].samp[0], 0.3); } glslang-16.0.0/Test/hlsl.structarray.flatten.geom000066400000000000000000000007301506534232700220040ustar00rootroot00000000000000 struct VertexData { float4 position : POSITION; float4 color : COLOR0; float2 uv : TEXCOORD0; }; struct PS_IN { float4 position : SV_POSITION; float4 color : COLOR0; float2 uv : TEXCOORD0; }; [maxvertexcount(4)] void main(line VertexData vin[2], inout TriangleStream outStream) { PS_IN vout; vout.color = vin[1].color; vout.uv = vin[1].uv; vout.position = vin[1].position; outStream.Append(vout); } glslang-16.0.0/Test/hlsl.structbuffer.append.fn.frag000066400000000000000000000007351506534232700223500ustar00rootroot00000000000000 // float4 Fn1(ConsumeStructuredBuffer arg_c) // { // return arg_c.Consume(); // } float4 Fn2(AppendStructuredBuffer arg_a, ConsumeStructuredBuffer arg_c) { arg_a.Append(float4(1,2,3,4)); return arg_c.Consume(); } AppendStructuredBuffer sbuf_a; ConsumeStructuredBuffer sbuf_c; AppendStructuredBuffer sbuf_unused; float4 main(uint pos : FOO) : SV_Target0 { // Fn1(sbuf_c); return Fn2(sbuf_a, sbuf_c); } glslang-16.0.0/Test/hlsl.structbuffer.append.frag000066400000000000000000000003561506534232700217450ustar00rootroot00000000000000AppendStructuredBuffer sbuf_a; ConsumeStructuredBuffer sbuf_c; AppendStructuredBuffer sbuf_unused; float4 main(uint pos : FOO) : SV_Target0 { sbuf_a.Append(float4(1,2,3,4)); return sbuf_c.Consume(); } glslang-16.0.0/Test/hlsl.structbuffer.atomics.frag000066400000000000000000000012111506534232700221240ustar00rootroot00000000000000 RWByteAddressBuffer sbuf; float4 main(uint pos : FOO) : SV_Target0 { uint u; sbuf.InterlockedAdd(8, 1); sbuf.InterlockedAdd(8, 1, u); sbuf.InterlockedAnd(8, 1); sbuf.InterlockedAnd(8, 1, u); sbuf.InterlockedCompareExchange(8, 1, 2, u); // sbuf.InterlockedCompareStore(8, 1, 2); // TODO: ... sbuf.InterlockedExchange(8, 1, u); sbuf.InterlockedMax(8, 1); sbuf.InterlockedMax(8, 1, u); sbuf.InterlockedMin(8, 1); sbuf.InterlockedMin(8, 1, u); sbuf.InterlockedOr(8, 1); sbuf.InterlockedOr(8, 1, u); sbuf.InterlockedXor(8, 1); sbuf.InterlockedXor(8, 1, u); return sbuf.Load(pos); } glslang-16.0.0/Test/hlsl.structbuffer.byte.frag000066400000000000000000000003761506534232700214430ustar00rootroot00000000000000 ByteAddressBuffer sbuf; float4 main(uint pos : FOO) : SV_Target0 { uint size; sbuf.GetDimensions(size); return sbuf.Load(pos) + float4(sbuf.Load2(pos+4), 0, 0) + float4(sbuf.Load3(pos+8), 0) + sbuf.Load4(pos+12); } glslang-16.0.0/Test/hlsl.structbuffer.coherent.frag000066400000000000000000000006351506534232700223050ustar00rootroot00000000000000struct sb_t { float3 color; bool test; }; globallycoherent RWStructuredBuffer sbuf; globallycoherent RWStructuredBuffer sbuf2; float4 main(uint pos : FOO) : SV_Target0 { sbuf2[pos+1] = 42; uint size; uint stride; sbuf.GetDimensions(size, stride); if (sbuf[pos].test) return float4(sbuf[pos].color + sbuf2[pos], 0); else return size + stride; } glslang-16.0.0/Test/hlsl.structbuffer.floatidx.comp000066400000000000000000000006071506534232700223260ustar00rootroot00000000000000struct sb_t { float4 color; uint2 threadId; }; RWTexture2D outtx; ConsumeStructuredBuffer csb : register(u1); RWStructuredBuffer rwsb; [numthreads(1, 1, 1)] void main(uint3 nThreadId : SV_DispatchThreadID) { sb_t data = csb.Consume(); float2 coord = float2(data.threadId.xy); outtx[coord] = data.color; rwsb[coord.x] = rwsb.Load(coord.y); } glslang-16.0.0/Test/hlsl.structbuffer.fn.frag000066400000000000000000000007251506534232700211010ustar00rootroot00000000000000 StructuredBuffer sbuf : register(t10); uint4 get(in StructuredBuffer sb, uint bufferOffset) { return sb[bufferOffset]; } void set(in RWStructuredBuffer sb, uint bufferOffset, uint4 data) { sb[bufferOffset] = data; } RWStructuredBuffer sbuf2; // Not shared, because of type difference. StructuredBuffer sbuf3 : register(t12); float4 main(uint pos : FOO) : SV_Target0 { set(sbuf2, 2, get(sbuf, 3)); return 0; } glslang-16.0.0/Test/hlsl.structbuffer.fn2.comp000066400000000000000000000005461506534232700212030ustar00rootroot00000000000000ByteAddressBuffer g_input: register(t0); RWBuffer g_output : register(u1); uint2 testLoad(uint loc, ByteAddressBuffer buffer) { uint2 result = buffer.Load2(loc); return result; } [numthreads(256, 1, 1)] void main(uint dispatchId : SV_DispatchThreadID) { uint2 result = testLoad(dispatchId, g_input); g_output[dispatchId] = result; } glslang-16.0.0/Test/hlsl.structbuffer.frag000066400000000000000000000007031506534232700204730ustar00rootroot00000000000000struct sb_t { float3 color; bool test; bool test2; }; // stride = 20 StructuredBuffer sbuf : register(t10); StructuredBuffer sbuf2; float4 main(uint pos : FOO) : SV_Target0 { sb_t mydata = sbuf.Load(pos); uint size; uint stride; sbuf.GetDimensions(size, stride); if (sbuf[pos].test) return float4(sbuf[pos].color + sbuf2[pos], 0); else return mydata.color.x + size + stride; } glslang-16.0.0/Test/hlsl.structbuffer.incdec.frag000066400000000000000000000006621506534232700217230ustar00rootroot00000000000000RWStructuredBuffer sbuf_rw_i; RWStructuredBuffer sbuf_rw_d; RWStructuredBuffer sbuf_rw_nocounter; // doesn't use inc or dec float4 main(uint pos : FOO) : SV_Target0 { uint4 result = 0; sbuf_rw_i[7]; sbuf_rw_d[7]; sbuf_rw_nocounter[5] = 2; uint c1 = sbuf_rw_i.IncrementCounter(); uint c2 = sbuf_rw_d.DecrementCounter(); return float4(result.x, result.y, c1, c2); } glslang-16.0.0/Test/hlsl.structbuffer.rw.frag000066400000000000000000000005731506534232700211270ustar00rootroot00000000000000struct sb_t { float3 color; bool test; }; RWStructuredBuffer sbuf; RWStructuredBuffer sbuf2; float4 main(uint pos : FOO) : SV_Target0 { sbuf2[pos+1] = 42; uint size; uint stride; sbuf.GetDimensions(size, stride); if (sbuf[pos].test) return float4(sbuf[pos].color + sbuf2[pos], 0); else return size + stride; } glslang-16.0.0/Test/hlsl.structbuffer.rwbyte.frag000066400000000000000000000004561506534232700220130ustar00rootroot00000000000000 RWByteAddressBuffer sbuf; float4 main(uint pos : FOO) : SV_Target0 { uint size; sbuf.GetDimensions(size); sbuf.Store(pos, sbuf.Load(pos)); sbuf.Store2(pos, sbuf.Load2(pos)); sbuf.Store3(pos, sbuf.Load3(pos)); sbuf.Store4(pos, sbuf.Load4(pos)); return sbuf.Load(pos); } glslang-16.0.0/Test/hlsl.structbuffer.rwbyte2.comp000066400000000000000000000002041506534232700221030ustar00rootroot00000000000000RWStructuredBuffer g_sbuf; RWByteAddressBuffer g_bbuf; void main() { uint f = g_bbuf.Load(16); g_sbuf[0] = f; } glslang-16.0.0/Test/hlsl.structcopy.comp000066400000000000000000000010701506534232700202110ustar00rootroot00000000000000struct MyStruct { uint a; uint b; uint c; }; struct MyStructs { uint count; MyStruct data[]; }; StructuredBuffer sb; StructuredBuffer o; groupshared MyStruct s[128]; static const MyStruct deflt = { 1u, 2u, 3u }; [numthreads(128, 1, 1)] void main(uint id : SV_GroupIndex) { s[0] = deflt; uint count = sb.Load(0).count; MyStruct ms = id > count ? s[id - count] : sb.Load(0).data[id]; InterlockedAdd(o[0].a, ms.a); InterlockedAdd(o[0].b, ms.b); InterlockedAdd(o[0].c, ms.c); } glslang-16.0.0/Test/hlsl.structcopylogical.comp000066400000000000000000000010701506534232700215440ustar00rootroot00000000000000struct MyStruct { uint a; uint b; uint c; }; struct MyStructs { uint count; MyStruct data[]; }; StructuredBuffer sb; StructuredBuffer o; groupshared MyStruct s[128]; static const MyStruct deflt = { 1u, 2u, 3u }; [numthreads(128, 1, 1)] void main(uint id : SV_GroupIndex) { s[0] = deflt; uint count = sb.Load(0).count; MyStruct ms = id > count ? s[id - count] : sb.Load(0).data[id]; InterlockedAdd(o[0].a, ms.a); InterlockedAdd(o[0].b, ms.b); InterlockedAdd(o[0].c, ms.c); } glslang-16.0.0/Test/hlsl.structin.vert000066400000000000000000000005241506534232700176720ustar00rootroot00000000000000struct VI { float4 m[2] : mysemA; float4 coord : SV_POSITION; linear float4 b : mysemB; }; VI main(float4 d : mysem, VI vi, float4 e : mysem) { VI local; local.b = vi.m[1] + vi.m[0] + (float4)vi.coord.x + d + e; local.coord = (float4)1; local.m[0] = (float4)2; local.m[1] = (float4)3; return local; } glslang-16.0.0/Test/hlsl.subpass.frag000066400000000000000000000100511506534232700174320ustar00rootroot00000000000000 layout(input_attachment_index = 1) SubpassInput subpass_f4 : register(t1); layout(input_attachment_index = 2) SubpassInput subpass_i4; layout(input_attachment_index = 3) SubpassInput subpass_u4; layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f4; layout(input_attachment_index = 5) SubpassInputMS subpass_ms_i4; layout(input_attachment_index = 6) SubpassInputMS subpass_ms_u4; layout(input_attachment_index = 1) SubpassInput subpass_f3; layout(input_attachment_index = 2) SubpassInput subpass_i3; layout(input_attachment_index = 3) SubpassInput subpass_u3; layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f3; layout(input_attachment_index = 5) SubpassInputMS subpass_ms_i3; layout(input_attachment_index = 6) SubpassInputMS subpass_ms_u3; layout(input_attachment_index = 1) SubpassInput subpass_f2; layout(input_attachment_index = 2) SubpassInput subpass_i2; layout(input_attachment_index = 3) SubpassInput subpass_u2; layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f2; layout(input_attachment_index = 5) SubpassInputMS subpass_ms_i2; layout(input_attachment_index = 6) SubpassInputMS subpass_ms_u2; layout(input_attachment_index = 1) SubpassInput subpass_f; layout(input_attachment_index = 2) SubpassInput subpass_i; layout(input_attachment_index = 3) SubpassInput subpass_u; layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f; layout(input_attachment_index = 5) SubpassInputMS subpass_ms_i; layout(input_attachment_index = 6) SubpassInputMS subpass_ms_u; [[vk::input_attachment_index(7)]] SubpassInput subpass_2; struct mystruct_f_t { float c0; float2 c1; float c2; }; struct mystruct_i_t { int c0; int2 c1; int c2; }; struct mystruct_u_t { uint c0; uint2 c1; uint c2; }; // TODO: ... // layout(input_attachment_index = 7) SubpassInput subpass_fs; // layout(input_attachment_index = 8) SubpassInputMS subpass_ms_fs; // layout(input_attachment_index = 7) SubpassInput subpass_is; // layout(input_attachment_index = 8) SubpassInputMS subpass_ms_is; // layout(input_attachment_index = 7) SubpassInput subpass_us; // layout(input_attachment_index = 8) SubpassInputMS subpass_ms_us; float4 main() : SV_Target0 { float4 result00 = subpass_f4.SubpassLoad(); int4 result01 = subpass_i4.SubpassLoad(); uint4 result02 = subpass_u4.SubpassLoad(); float4 result10 = subpass_ms_f4.SubpassLoad(3); int4 result11 = subpass_ms_i4.SubpassLoad(3); uint4 result12 = subpass_ms_u4.SubpassLoad(3); float3 result20 = subpass_f3.SubpassLoad(); int3 result21 = subpass_i3.SubpassLoad(); uint3 result22 = subpass_u3.SubpassLoad(); float3 result30 = subpass_ms_f3.SubpassLoad(3); int3 result31 = subpass_ms_i3.SubpassLoad(3); uint3 result32 = subpass_ms_u3.SubpassLoad(3); float2 result40 = subpass_f2.SubpassLoad(); int2 result41 = subpass_i2.SubpassLoad(); uint2 result42 = subpass_u2.SubpassLoad(); float2 result50 = subpass_ms_f2.SubpassLoad(2); int2 result51 = subpass_ms_i2.SubpassLoad(2); uint2 result52 = subpass_ms_u2.SubpassLoad(2); float result60 = subpass_f.SubpassLoad(); int result61 = subpass_i.SubpassLoad(); uint result62 = subpass_u.SubpassLoad(); float result70 = subpass_ms_f.SubpassLoad(2); int result71 = subpass_ms_i.SubpassLoad(2); uint result72 = subpass_ms_u.SubpassLoad(2); float4 result73 = subpass_2.SubpassLoad(); // TODO: // mystruct_f_t result80 = subpass_fs.SubpassLoad(); // mystruct_i_t result81 = subpass_is.SubpassLoad(); // mystruct_u_t result82 = subpass_us.SubpassLoad(); // mystruct_f_t result90 = subpass_ms_sf.SubpassLoad(2); // mystruct_i_t result91 = subpass_ms_if.SubpassLoad(2); // mystruct_u_t result92 = subpass_ms_uf.SubpassLoad(2); return 0; } glslang-16.0.0/Test/hlsl.switch.frag000066400000000000000000000013261506534232700172600ustar00rootroot00000000000000float4 PixelShaderFunction(float4 input, int c, int d) : COLOR0 { switch(c) { } switch(c) { default: } switch (c) { case 1: ++input; break; case 2: --input; break; } [branch] switch (c) { case 1: ++input; break; case 2: switch (d) { case 2: input += 2.0; break; case 3: input += 3.0; break; } break; default: input += 4.0; } switch (c) { case 1: } switch (c) { case 1: case 2: case 3: ++input; break; case 4: case 5: --input; } return input; } glslang-16.0.0/Test/hlsl.swizzle.frag000066400000000000000000000002251506534232700174630ustar00rootroot00000000000000static float4 AmbientColor = float4(1, 0.5, 0, 1); float4 ShaderFunction(float4 input) : COLOR0 { return input.wwyx * float4(AmbientColor.z); } glslang-16.0.0/Test/hlsl.swizzle.vec1.comp000066400000000000000000000001601506534232700203350ustar00rootroot00000000000000void main() { float1 f1; f1.x = 0.5; // This is not implemented // f1.xx = float2(0.6, 0.7); } glslang-16.0.0/Test/hlsl.synthesizeInput.frag000066400000000000000000000002561506534232700212050ustar00rootroot00000000000000struct PSInput { float interp; uint no_interp; }; float4 main(PSInput input : INPUT) : SV_TARGET { return float4(float(input.no_interp), input.interp, 0, 1); }glslang-16.0.0/Test/hlsl.target.frag000066400000000000000000000002741506534232700172460ustar00rootroot00000000000000struct PSInput { float interp; uint no_interp; }; void main(PSInput input : INPUT, out float4 out1 : SV_TARGET1, out float4 out2 : SV_TARGET3) { out1 = 1; out2 = 0; }glslang-16.0.0/Test/hlsl.targetStruct1.frag000066400000000000000000000005331506534232700205320ustar00rootroot00000000000000struct PSInput { float interp; uint no_interp; }; struct PSOutput { float4 o1 : SV_TARGET2; float4 o2 : SV_TARGET1; }; PSOutput main(PSInput input : INPUT, out float4 po : SV_TARGET0) { PSOutput pso; pso.o1 = float4(float(input.no_interp), input.interp, 0, 1); pso.o2 = 1; po = 0; return pso; }glslang-16.0.0/Test/hlsl.targetStruct2.frag000066400000000000000000000005501506534232700205320ustar00rootroot00000000000000struct PSInput { float interp; uint no_interp; }; struct PSOutput { float4 o1 : SV_TARGET1; float4 o2 : SV_TARGET0; }; PSOutput main(PSInput input : INPUT, out float4 po : SV_TARGET0) : SV_TARGET2 { PSOutput pso; pso.o1 = float4(float(input.no_interp), input.interp, 0, 1); pso.o2 = 1; po = 0; return pso; }glslang-16.0.0/Test/hlsl.templatetypes.frag000066400000000000000000000033041506534232700206550ustar00rootroot00000000000000 float PixelShaderFunction() { vector r00 = float4(1,2,3,4); // vector means float4 float4 r01 = vector(2,3,4,5); // vector means float4 vector r12 = bool1(false); vector r13 = int1(1); vector r14 = float1(1); vector r15 = double1(1); vector r16 = uint1(1); vector r20 = bool2(false, true); vector r21 = int2(1,2); vector r22 = float2(1,2); vector r23 = double2(1,2); vector r24 = uint2(1,2); vector r30 = bool3(false, true, true); vector r31 = int3(1,2,3); vector r32 = float3(1,2,3); vector r33 = double3(1,2,3); vector r34 = uint3(1,2,3); vector r40 = bool4(false, true, true, false); vector r41 = int4(1,2,3,4); vector r42 = float4(1,2,3,4); vector r43 = double4(1,2,3,4); vector r44 = uint4(1,2,3,4); matrix r50 = float4x4(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4 float4x4 r51 = matrix(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4 // matrix r60 = bool2x3(false, true, false, true, false, true); // TODO: matrix r61 = float2x3(1,2,3,4,5,6); matrix r62 = float3x2(1,2,3,4,5,6); // matrix r63 = float4x1(1,2,3,4); // TODO: // matrix r64 = float1x4(1,2,3,4); // TODO: matrix r65 = float4x2(1,2,3,4,5,6,7,8); matrix r66 = float4x3(1,2,3,4,5,6,7,8,9,10,11,12); // TODO: bool mats // TODO: int mats return 0.0; } glslang-16.0.0/Test/hlsl.templatetypes.negative.frag000066400000000000000000000014531506534232700224610ustar00rootroot00000000000000 float PixelShaderFunction() { // TODO: All of the below should fail, although presently the first failure // aborts compilation and the rest are skipped. Having a separate test for // each would be cumbersome. vector r00; // cannot declare vectors of voids matrix r01; // cannot declare matrices of voids vector r02; // too many parameters to vector matrix r03; // not enough parameters to matrix int three = 3; vector r04; // size must be a literal constant integer matrix r05; // size must be a literal constant integer vector, 3> r06; // type must be a simple scalar vector r07; // type must be a simple scalar return 0.0; } glslang-16.0.0/Test/hlsl.texture.struct.frag000066400000000000000000000023061506534232700210010ustar00rootroot00000000000000struct s1_t { float c0; float2 c1; float c2; }; struct s2_t { float c0; float3 c1; }; struct s3_t { float2 c0; float1 c1; }; struct s4_t { int c0; int2 c1; int c2; }; struct s5_t { uint c0; uint c1; }; SamplerState g_sSamp; Texture2D g_tTex2s1; Texture2D g_tTex2s2; Texture2D g_tTex2s3; Texture2D g_tTex2s4; Texture2D g_tTex2s5; Texture2D g_tTex2s1a; // same type as g_tTex2s1, to test fn signature matching. // function overloading to test name mangling with textures templatized on structs s1_t fn1(Texture2D t1) { return t1 . Sample(g_sSamp, float2(0.6, 0.61)); } s2_t fn1(Texture2D t2) { return t2 . Sample(g_sSamp, float2(0.6, 0.61)); } float4 main() : SV_Target0 { s1_t s1 = g_tTex2s1 . Sample(g_sSamp, float2(0.1, 0.11)); s2_t s2 = g_tTex2s2 . Sample(g_sSamp, float2(0.2, 0.21)); s3_t s3 = g_tTex2s3 . Sample(g_sSamp, float2(0.3, 0.31)); s4_t s4 = g_tTex2s4 . Sample(g_sSamp, float2(0.4, 0.41)); s5_t s5 = g_tTex2s5 . Sample(g_sSamp, float2(0.5, 0.51)); s1_t r0 = fn1(g_tTex2s1); s2_t r1 = fn1(g_tTex2s2); s1_t r2 = fn1(g_tTex2s1a); return 0; } glslang-16.0.0/Test/hlsl.texture.subvec4.frag000066400000000000000000000021401506534232700210240ustar00rootroot00000000000000 Texture2DMS g_tTex2dmsf1; Texture2DMS g_tTex2dmsf2; Texture2DMS g_tTex2dmsf3; Texture2DMS g_tTex2dmsf4; Texture2D g_tTex2df1; Texture2D g_tTex2df2; Texture2D g_tTex2df3; Texture2D g_tTex2df4; SamplerState g_sSamp; float4 main() : SV_Target0 { uint MipLevel; uint WidthU; uint HeightU; uint ElementsU; uint DepthU; uint NumberOfLevelsU; uint NumberOfSamplesU; g_tTex2dmsf1 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); g_tTex2dmsf2 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); g_tTex2dmsf3 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); g_tTex2dmsf4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); g_tTex2dmsf1 . Load(int2(1,2), 3); g_tTex2dmsf2 . Load(int2(1,2), 3); g_tTex2dmsf3 . Load(int2(1,2), 3); g_tTex2dmsf4 . Load(int2(1,2), 3); g_tTex2df1 . Sample(g_sSamp, float2(.1, .2)); g_tTex2df2 . Sample(g_sSamp, float2(.1, .2)); g_tTex2df3 . Sample(g_sSamp, float2(.1, .2)); g_tTex2df4 . Sample(g_sSamp, float2(.1, .2)); return 0; } glslang-16.0.0/Test/hlsl.texturebuffer.frag000066400000000000000000000003651506534232700206530ustar00rootroot00000000000000 struct Data { float4 f; int4 i; }; TextureBuffer TextureBuffer_var : register(t0); tbuffer tbuf2 { float4 f2; int4 i2; }; float4 main(float4 pos : SV_POSITION) : SV_TARGET { return TextureBuffer_var.f + f2; } glslang-16.0.0/Test/hlsl.this.frag000066400000000000000000000007631506534232700167320ustar00rootroot00000000000000static float2 var = float2(1.0, 2.0); struct type1 { int memFun1(int3 var) { return var.z + this.var + var2; } int memFun2(int a) { int3 var = int3(1,2,3); return var.z + (int)bar.y + this.var2; } float2 bar; int var; int var2; }; float4 main() : SV_Target0 { type1 T; T.bar = var; T.var = 7; T.var2 = 9; int i = T.memFun1(int3(10,11,12)); i += T.memFun2(17); return float4(i,i,i,i); } glslang-16.0.0/Test/hlsl.tristream-append.geom000066400000000000000000000007021506534232700212430ustar00rootroot00000000000000struct GSPS_INPUT { }; // Test Append() method appearing before declaration of entry point's stream output. void EmitVertex(in GSPS_INPUT output, inout TriangleStream TriStream) { TriStream.Append( output ); } [maxvertexcount(3)] void main( triangle GSPS_INPUT input[3], inout TriangleStream TriStream ) { EmitVertex(input[0], TriStream); EmitVertex(input[1], TriStream); EmitVertex(input[2], TriStream); } glslang-16.0.0/Test/hlsl.tx.bracket.frag000066400000000000000000000026671506534232700200350ustar00rootroot00000000000000SamplerState g_sSamp : register(s0); Texture1D g_tTex1df4 : register(t0); Texture1D g_tTex1di4; Texture1D g_tTex1du4; Texture2D g_tTex2df4; Texture2D g_tTex2di4; Texture2D g_tTex2du4; Texture3D g_tTex3df4; Texture3D g_tTex3di4; Texture3D g_tTex3du4; Texture1DArray g_tTex1df4a; Texture1DArray g_tTex1di4a; Texture1DArray g_tTex1du4a; Texture2DArray g_tTex2df4a; Texture2DArray g_tTex2di4a; Texture2DArray g_tTex2du4a; struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform int c1; uniform int2 c2; uniform int3 c3; uniform int4 c4; uniform int o1; uniform int2 o2; uniform int3 o3; uniform int4 o4; int4 Fn1(in int4 x) { return x; } uint4 Fn1(in uint4 x) { return x; } float4 Fn1(in float4 x) { return x; } float4 SomeValue() { return c4; } PS_OUTPUT main() { PS_OUTPUT psout; // 1D g_tTex1df4[c1]; float4 r00 = g_tTex1df4[c1]; int4 r01 = g_tTex1di4[c1]; uint4 r02 = g_tTex1du4[c1]; // 2D float4 r10 = g_tTex2df4[c2]; int4 r11 = g_tTex2di4[c2]; uint4 r12 = g_tTex2du4[c2]; // 3D float4 r20 = g_tTex3df4[c3]; int4 r21 = g_tTex3di4[c3]; uint4 r22 = g_tTex3du4[c3]; // Test function calling Fn1(g_tTex1df4[c1]); // in Fn1(g_tTex1di4[c1]); // in Fn1(g_tTex1du4[c1]); // in psout.Color = 1.0; return psout; } glslang-16.0.0/Test/hlsl.tx.overload.frag000066400000000000000000000006731506534232700202300ustar00rootroot00000000000000 Texture2D tf1; Texture2D tf4; RWTexture2D twf1; RWTexture2D twf4; float Func(Texture2D DummyTex) { return 1.0f; } float4 Func(Texture2D DummyTex) { return float4(0,0,0,0); } float Func(RWTexture2D DummyTex) { return 1.0f; } float4 Func(RWTexture2D DummyTex) { return float4(0,0,0,0); } float4 main() : SV_TARGET { return Func(tf1) + Func(tf4) + Func(twf1) + Func(twf4); } glslang-16.0.0/Test/hlsl.type.half.frag000066400000000000000000000007351506534232700176540ustar00rootroot00000000000000 float4 main() : SV_Target0 { half h0 = 0; half1 h1 = 1; half2 h2 = 2; half3 h3 = 3; half4 h4 = 4; half1x1 h11; half1x2 h12; half1x3 h13; half1x4 h14; half2x1 h21; half2x2 h22 = half2x2(1,2,3,4); half2x3 h23 = (half2x3)4.9; half2x4 h24; half3x1 h31; half3x2 h32; half3x3 h33; half3x4 h34; half4x1 h41; half4x2 h42; half4x3 h43; half4x4 h44; return h23._11 + h4.y + h0; } glslang-16.0.0/Test/hlsl.type.identifier.frag000066400000000000000000000011131506534232700210530ustar00rootroot00000000000000 struct foo_t { float float; }; float fn(float float) { return float; } float4 main() : SV_Target0 { float float = 7; bool bool[2] = { float, float }; int int = bool[1]; uint uint = float + int; min16float min16float = uint; min10float min10float = min16float; half half = 0.5; { foo_t float; float.float = 42; } bool[0] = bool[1]; float = float + int + uint + min16float + min10float + (bool[0] ? int : float) + fn(float); half2x3 half2x3; half2x3._11 = (float) * float; return float + half2x3._11; } glslang-16.0.0/Test/hlsl.type.type.conversion.all.frag000066400000000000000000000461651506534232700226650ustar00rootroot00000000000000#define zeros 0 #define zeros1 0 #define zeros2 0, 0 #define zeros3 0, 0, 0 #define zeros4 0, 0, 0, 0 #define zeros5 0, 0, 0, 0, 0 #define zeros6 0, 0, 0, 0, 0, 0 #define zeros7 0, 0, 0, 0, 0, 0, 0 #define zeros8 0, 0, 0, 0, 0, 0, 0, 0 #define zeros9 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros12 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros13 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros14 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros16 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 float4 main() : SV_Target { float var0 = float(zeros1); float2 var13 = float(zeros1); float2 var14 = float2(zeros2); float3 var26 = float(zeros1); float3 var28 = float3(zeros3); float4 var39 = float(zeros1); float4 var42 = float4(zeros4); float4 var43 = float2x2(zeros4); float2x2 var52 = float(zeros1); float2x2 var55 = float4(zeros4); float2x2 var56 = float2x2(zeros4); float2x3 var65 = float(zeros1); float2x3 var70 = float2x3(zeros6); float2x4 var78 = float(zeros1); float2x4 var84 = float2x4(zeros8); float3x2 var91 = float(zeros1); float3x2 var98 = float3x2(zeros6); float3x3 var104 = float(zeros1); float3x3 var112 = float3x3(zeros9); float3x4 var117 = float(zeros1); float3x4 var126 = float3x4(zeros12); float4x2 var130 = float(zeros1); float4x2 var140 = float4x2(zeros8); float4x3 var143 = float(zeros1); float4x3 var154 = float4x3(zeros12); float4x4 var156 = float(zeros1); float4x4 var168 = float4x4(zeros16); float var1 = float2(zeros2);// warning X3206: implicit truncation of vector type float var2 = float3(zeros3);// warning X3206: implicit truncation of vector type float var3 = float4(zeros4);// warning X3206: implicit truncation of vector type float var4 = float2x2(zeros4);// warning X3206: implicit truncation of vector type float var5 = float2x3(zeros6);// warning X3206: implicit truncation of vector type float var6 = float2x4(zeros8);// warning X3206: implicit truncation of vector type float var7 = float3x2(zeros6);// warning X3206: implicit truncation of vector type float var8 = float3x3(zeros9);// warning X3206: implicit truncation of vector type float var9 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float var10 = float4x2(zeros8);// warning X3206: implicit truncation of vector type float var11 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float var12 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float2 var15 = float3(zeros3);// warning X3206: implicit truncation of vector type float2 var16 = float4(zeros4);// warning X3206: implicit truncation of vector type float3 var29 = float4(zeros4);// warning X3206: implicit truncation of vector type float2x2 var57 = float2x3(zeros6);// warning X3206: implicit truncation of vector type float2x2 var58 = float2x4(zeros8);// warning X3206: implicit truncation of vector type float2x2 var59 = float3x2(zeros6);// warning X3206: implicit truncation of vector type float2x2 var60 = float3x3(zeros9);// warning X3206: implicit truncation of vector type float2x2 var61 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float2x2 var62 = float4x2(zeros8);// warning X3206: implicit truncation of vector type float2x2 var63 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float2x2 var64 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float2x3 var71 = float2x4(zeros8);// warning X3206: implicit truncation of vector type float2x3 var73 = float3x3(zeros9);// warning X3206: implicit truncation of vector type float2x3 var74 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float2x3 var76 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float2x3 var77 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float2x4 var87 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float2x4 var90 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float3x2 var99 = float3x3(zeros9);// warning X3206: implicit truncation of vector type float3x2 var100 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float3x2 var101 = float4x2(zeros8);// warning X3206: implicit truncation of vector type float3x2 var102 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float3x2 var103 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float3x3 var113 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float3x3 var115 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float3x3 var116 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float3x4 var129 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float4x2 var141 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float4x2 var142 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float4x3 var155 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float2 var17 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float2' float2 var18 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float2' float2 var19 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float2' float2 var20 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float2' float2 var21 = float3x3(zeros9);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x3' to 'float2' float2 var22 = float3x4(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x4' to 'float2' float2 var23 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float2' float2 var24 = float4x3(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x3' to 'float2' float2 var25 = float4x4(zeros16);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x4' to 'float2' float3 var27 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float3' float3 var30 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float3' float3 var31 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float3' float3 var32 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float3' float3 var33 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float3' float3 var34 = float3x3(zeros9);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x3' to 'float3' float3 var35 = float3x4(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x4' to 'float3' float3 var36 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float3' float3 var37 = float4x3(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x3' to 'float3' float3 var38 = float4x4(zeros16);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x4' to 'float3' float4 var40 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float4' float4 var41 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float4' float4 var44 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float4' float4 var45 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float4' float4 var46 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float4' float4 var47 = float3x3(zeros9);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x3' to 'float4' float4 var48 = float3x4(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x4' to 'float4' float4 var49 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float4' float4 var50 = float4x3(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x3' to 'float4' float4 var51 = float4x4(zeros16);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x4' to 'float4' float2x2 var53 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float2x2' float2x2 var54 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float2x2' float2x3 var66 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float2x3' float2x3 var67 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float2x3' float2x3 var68 = float4(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4' to 'float2x3' float2x3 var69 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float2x3' float2x3 var72 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float2x3' float2x3 var75 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float2x3' float2x4 var79 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float2x4' float2x4 var80 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float2x4' float2x4 var81 = float4(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4' to 'float2x4' float2x4 var82 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float2x4' float2x4 var83 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float2x4' float2x4 var85 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float2x4' float2x4 var86 = float3x3(zeros9);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x3' to 'float2x4' float2x4 var88 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float2x4' float2x4 var89 = float4x3(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x3' to 'float2x4' float3x2 var92 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float3x2' float3x2 var93 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float3x2' float3x2 var94 = float4(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4' to 'float3x2' float3x2 var95 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float3x2' float3x2 var96 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float3x2' float3x2 var97 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float3x2' float3x3 var105 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float3x3' float3x3 var106 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float3x3' float3x3 var107 = float4(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4' to 'float3x3' float3x3 var108 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float3x3' float3x3 var109 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float3x3' float3x3 var110 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float3x3' float3x3 var111 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float3x3' float3x3 var114 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float3x3' float3x4 var118 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float3x4' float3x4 var119 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float3x4' float3x4 var120 = float4(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4' to 'float3x4' float3x4 var121 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float3x4' float3x4 var122 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float3x4' float3x4 var123 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float3x4' float3x4 var124 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float3x4' float3x4 var125 = float3x3(zeros9);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x3' to 'float3x4' float3x4 var127 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float3x4' float3x4 var128 = float4x3(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x3' to 'float3x4' float4x2 var131 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float4x2' float4x2 var132 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float4x2' float4x2 var133 = float4(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4' to 'float4x2' float4x2 var134 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float4x2' float4x2 var135 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float4x2' float4x2 var136 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float4x2' float4x2 var137 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float4x2' float4x2 var138 = float3x3(zeros9);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x3' to 'float4x2' float4x2 var139 = float3x4(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x4' to 'float4x2' float4x3 var144 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float4x3' float4x3 var145 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float4x3' float4x3 var146 = float4(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4' to 'float4x3' float4x3 var147 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float4x3' float4x3 var148 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float4x3' float4x3 var149 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float4x3' float4x3 var150 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float4x3' float4x3 var151 = float3x3(zeros9);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x3' to 'float4x3' float4x3 var152 = float3x4(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x4' to 'float4x3' float4x3 var153 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float4x3' float4x4 var157 = float2(zeros2);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2' to 'float4x4' float4x4 var158 = float3(zeros3);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3' to 'float4x4' float4x4 var159 = float4(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4' to 'float4x4' float4x4 var160 = float2x2(zeros4);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x2' to 'float4x4' float4x4 var161 = float2x3(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x3' to 'float4x4' float4x4 var162 = float2x4(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float2x4' to 'float4x4' float4x4 var163 = float3x2(zeros6);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x2' to 'float4x4' float4x4 var164 = float3x3(zeros9);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x3' to 'float4x4' float4x4 var165 = float3x4(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float3x4' to 'float4x4' float4x4 var166 = float4x2(zeros8);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x2' to 'float4x4' float4x4 var167 = float4x3(zeros12);// Compilation failed because: error X3017: cannot implicitly convert from 'const float4x3' to 'float4x4' return 0; } glslang-16.0.0/Test/hlsl.type.type.conversion.valid.frag000066400000000000000000000125021506534232700232000ustar00rootroot00000000000000#define zeros 0 #define zeros1 0 #define zeros2 0, 0 #define zeros3 0, 0, 0 #define zeros4 0, 0, 0, 0 #define zeros5 0, 0, 0, 0, 0 #define zeros6 0, 0, 0, 0, 0, 0 #define zeros7 0, 0, 0, 0, 0, 0, 0 #define zeros8 0, 0, 0, 0, 0, 0, 0, 0 #define zeros9 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros12 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros13 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros14 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #define zeros16 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 float4 main() : SV_Target { float var0 = float(zeros1); float2 var13 = float(zeros1); float2 var14 = float2(zeros2); float3 var26 = float(zeros1); float3 var28 = float3(zeros3); float4 var39 = float(zeros1); float4 var42 = float4(zeros4); float4 var43 = float2x2(zeros4); float2x2 var52 = float(zeros1); float2x2 var55 = float4(zeros4); float2x2 var56 = float2x2(zeros4); float2x3 var65 = float(zeros1); float2x3 var70 = float2x3(zeros6); float2x4 var78 = float(zeros1); float2x4 var84 = float2x4(zeros8); float3x2 var91 = float(zeros1); float3x2 var98 = float3x2(zeros6); float3x3 var104 = float(zeros1); float3x3 var112 = float3x3(zeros9); float3x4 var117 = float(zeros1); float3x4 var126 = float3x4(zeros12); float4x2 var130 = float(zeros1); float4x2 var140 = float4x2(zeros8); float4x3 var143 = float(zeros1); float4x3 var154 = float4x3(zeros12); float4x4 var156 = float(zeros1); float4x4 var168 = float4x4(zeros16); float var1 = float2(zeros2);// warning X3206: implicit truncation of vector type float var2 = float3(zeros3);// warning X3206: implicit truncation of vector type float var3 = float4(zeros4);// warning X3206: implicit truncation of vector type float var4 = float2x2(zeros4);// warning X3206: implicit truncation of vector type float var5 = float2x3(zeros6);// warning X3206: implicit truncation of vector type float var6 = float2x4(zeros8);// warning X3206: implicit truncation of vector type float var7 = float3x2(zeros6);// warning X3206: implicit truncation of vector type float var8 = float3x3(zeros9);// warning X3206: implicit truncation of vector type float var9 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float var10 = float4x2(zeros8);// warning X3206: implicit truncation of vector type float var11 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float var12 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float2 var15 = float3(zeros3);// warning X3206: implicit truncation of vector type float2 var16 = float4(zeros4);// warning X3206: implicit truncation of vector type float3 var29 = float4(zeros4);// warning X3206: implicit truncation of vector type float2x2 var57 = float2x3(zeros6);// warning X3206: implicit truncation of vector type float2x2 var58 = float2x4(zeros8);// warning X3206: implicit truncation of vector type float2x2 var59 = float3x2(zeros6);// warning X3206: implicit truncation of vector type float2x2 var60 = float3x3(zeros9);// warning X3206: implicit truncation of vector type float2x2 var61 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float2x2 var62 = float4x2(zeros8);// warning X3206: implicit truncation of vector type float2x2 var63 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float2x2 var64 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float2x3 var71 = float2x4(zeros8);// warning X3206: implicit truncation of vector type float2x3 var73 = float3x3(zeros9);// warning X3206: implicit truncation of vector type float2x3 var74 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float2x3 var76 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float2x3 var77 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float2x4 var87 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float2x4 var90 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float3x2 var99 = float3x3(zeros9);// warning X3206: implicit truncation of vector type float3x2 var100 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float3x2 var101 = float4x2(zeros8);// warning X3206: implicit truncation of vector type float3x2 var102 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float3x2 var103 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float3x3 var113 = float3x4(zeros12);// warning X3206: implicit truncation of vector type float3x3 var115 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float3x3 var116 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float3x4 var129 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float4x2 var141 = float4x3(zeros12);// warning X3206: implicit truncation of vector type float4x2 var142 = float4x4(zeros16);// warning X3206: implicit truncation of vector type float4x3 var155 = float4x4(zeros16);// warning X3206: implicit truncation of vector type return 0; } glslang-16.0.0/Test/hlsl.typeGraphCopy.vert000066400000000000000000000003311506534232700206110ustar00rootroot00000000000000struct N1 { int a; float b; }; struct N2 { N1 s1; N1 s2; }; struct N3 { N2 t1; N1 t2; N2 t3; }; typedef N3 T3; T3 foo; float main() { return foo.t3.s2.b; } glslang-16.0.0/Test/hlsl.typedef.frag000066400000000000000000000003521506534232700174150ustar00rootroot00000000000000typedef float4 myVec4; float4 ShaderFunction(float4 input, int ii) : COLOR0 { typedef int myInt; myVec4 a1 = myVec4(1.0); myInt i = 2; typedef myInt myInt2; myInt2 j = ii; return input * a1 + myVec4(i + j); } glslang-16.0.0/Test/hlsl.void.frag000066400000000000000000000001721506534232700167160ustar00rootroot00000000000000void foo1() {} void foo2(void) {} void PixelShaderFunction(float4 input) : COLOR0 { foo1(); foo2(); return; }glslang-16.0.0/Test/hlsl.w-recip.frag000066400000000000000000000004401506534232700173210ustar00rootroot00000000000000float4 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; } glslang-16.0.0/Test/hlsl.w-recip2.frag000066400000000000000000000006661506534232700174150ustar00rootroot00000000000000struct 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; } glslang-16.0.0/Test/hlsl.wavebroadcast.comp000066400000000000000000000037371506534232700206330ustar00rootroot00000000000000struct Types { uint4 u; int4 i; float4 f; double4 d; }; RWStructuredBuffer data; [numthreads(32, 16, 1)] void CSMain(uint3 dti : SV_DispatchThreadID) { data[dti.x].u = WaveReadLaneAt(data[dti.x].u, 13); data[dti.x].u.x = WaveReadLaneAt(data[dti.x].u.x, 13); data[dti.x].u.xy = WaveReadLaneAt(data[dti.x].u.xy, 13); data[dti.x].u.xyz = WaveReadLaneAt(data[dti.x].u.xyz, 13); data[dti.x].i = WaveReadLaneAt(data[dti.x].i, 13); data[dti.x].i.x = WaveReadLaneAt(data[dti.x].i.x, 13); data[dti.x].i.xy = WaveReadLaneAt(data[dti.x].i.xy, 13); data[dti.x].i.xyz = WaveReadLaneAt(data[dti.x].i.xyz, 13); data[dti.x].f = WaveReadLaneAt(data[dti.x].f, 13); data[dti.x].f.x = WaveReadLaneAt(data[dti.x].f.x, 13); data[dti.x].f.xy = WaveReadLaneAt(data[dti.x].f.xy, 13); data[dti.x].f.xyz = WaveReadLaneAt(data[dti.x].f.xyz, 13); data[dti.x].d = WaveReadLaneFirst(data[dti.x].d); data[dti.x].d.x = WaveReadLaneFirst(data[dti.x].d.x); data[dti.x].d.xy = WaveReadLaneFirst(data[dti.x].d.xy); data[dti.x].d.xyz = WaveReadLaneFirst(data[dti.x].d.xyz); data[dti.x].u = WaveReadLaneFirst(data[dti.x].u); data[dti.x].u.x = WaveReadLaneFirst(data[dti.x].u.x); data[dti.x].u.xy = WaveReadLaneFirst(data[dti.x].u.xy); data[dti.x].u.xyz = WaveReadLaneFirst(data[dti.x].u.xyz); data[dti.x].i = WaveReadLaneFirst(data[dti.x].i); data[dti.x].i.x = WaveReadLaneFirst(data[dti.x].i.x); data[dti.x].i.xy = WaveReadLaneFirst(data[dti.x].i.xy); data[dti.x].i.xyz = WaveReadLaneFirst(data[dti.x].i.xyz); data[dti.x].f = WaveReadLaneFirst(data[dti.x].f); data[dti.x].f.x = WaveReadLaneFirst(data[dti.x].f.x); data[dti.x].f.xy = WaveReadLaneFirst(data[dti.x].f.xy); data[dti.x].f.xyz = WaveReadLaneFirst(data[dti.x].f.xyz); data[dti.x].d = WaveReadLaneFirst(data[dti.x].d); data[dti.x].d.x = WaveReadLaneFirst(data[dti.x].d.x); data[dti.x].d.xy = WaveReadLaneFirst(data[dti.x].d.xy); data[dti.x].d.xyz = WaveReadLaneFirst(data[dti.x].d.xyz); } glslang-16.0.0/Test/hlsl.waveprefix.comp000066400000000000000000000037241506534232700201620ustar00rootroot00000000000000struct Types { uint4 u; int4 i; float4 f; double4 d; }; RWStructuredBuffer data; [numthreads(32, 16, 1)] void CSMain(uint3 dti : SV_DispatchThreadID) { data[dti.x].u = WavePrefixSum(data[dti.x].u); data[dti.x].u.x = WavePrefixSum(data[dti.x].u.x); data[dti.x].u.xy = WavePrefixSum(data[dti.x].u.xy); data[dti.x].u.xyz = WavePrefixSum(data[dti.x].u.xyz); data[dti.x].i = WavePrefixSum(data[dti.x].i); data[dti.x].i.x = WavePrefixSum(data[dti.x].i.x); data[dti.x].i.xy = WavePrefixSum(data[dti.x].i.xy); data[dti.x].i.xyz = WavePrefixSum(data[dti.x].i.xyz); data[dti.x].f = WavePrefixSum(data[dti.x].f); data[dti.x].f.x = WavePrefixSum(data[dti.x].f.x); data[dti.x].f.xy = WavePrefixSum(data[dti.x].f.xy); data[dti.x].f.xyz = WavePrefixSum(data[dti.x].f.xyz); data[dti.x].d = WavePrefixSum(data[dti.x].d); data[dti.x].d.x = WavePrefixSum(data[dti.x].d.x); data[dti.x].d.xy = WavePrefixSum(data[dti.x].d.xy); data[dti.x].d.xyz = WavePrefixSum(data[dti.x].d.xyz); data[dti.x].u = WavePrefixProduct(data[dti.x].u); data[dti.x].u.x = WavePrefixProduct(data[dti.x].u.x); data[dti.x].u.xy = WavePrefixProduct(data[dti.x].u.xy); data[dti.x].u.xyz = WavePrefixProduct(data[dti.x].u.xyz); data[dti.x].i = WavePrefixProduct(data[dti.x].i); data[dti.x].i.x = WavePrefixProduct(data[dti.x].i.x); data[dti.x].i.xy = WavePrefixProduct(data[dti.x].i.xy); data[dti.x].i.xyz = WavePrefixProduct(data[dti.x].i.xyz); data[dti.x].f = WavePrefixProduct(data[dti.x].f); data[dti.x].f.x = WavePrefixProduct(data[dti.x].f.x); data[dti.x].f.xy = WavePrefixProduct(data[dti.x].f.xy); data[dti.x].f.xyz = WavePrefixProduct(data[dti.x].f.xyz); data[dti.x].d = WavePrefixProduct(data[dti.x].d); data[dti.x].d.x = WavePrefixProduct(data[dti.x].d.x); data[dti.x].d.xy = WavePrefixProduct(data[dti.x].d.xy); data[dti.x].d.xyz = WavePrefixProduct(data[dti.x].d.xyz); data[dti.x].u.x = WavePrefixCountBits(data[dti.x].u.x == 0); } glslang-16.0.0/Test/hlsl.wavequad.comp000066400000000000000000000146631506534232700176230ustar00rootroot00000000000000struct Types { uint4 u; int4 i; float4 f; double4 d; }; RWStructuredBuffer data; [numthreads(32, 16, 1)] void CSMain(uint3 dti : SV_DispatchThreadID) { data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 0); data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 0); data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 0); data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 0); data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 0); data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 0); data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 0); data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 0); data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 0); data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 0); data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 0); data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 0); data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 0); data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 0); data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 0); data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 0); data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 1); data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 1); data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 1); data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 1); data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 1); data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 1); data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 1); data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 1); data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 1); data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 1); data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 1); data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 1); data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 1); data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 1); data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 1); data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 1); data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 2); data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 2); data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 2); data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 2); data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 2); data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 2); data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 2); data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 2); data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 2); data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 2); data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 2); data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 2); data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 2); data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 2); data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 2); data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 2); data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 3); data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 3); data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 3); data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 3); data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 3); data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 3); data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 3); data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 3); data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 3); data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 3); data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 3); data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 3); data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 3); data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 3); data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 3); data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 3); data[dti.x].u = QuadReadAcrossX(data[dti.x].u); data[dti.x].u.x = QuadReadAcrossX(data[dti.x].u.x); data[dti.x].u.xy = QuadReadAcrossX(data[dti.x].u.xy); data[dti.x].u.xyz = QuadReadAcrossX(data[dti.x].u.xyz); data[dti.x].i = QuadReadAcrossX(data[dti.x].i); data[dti.x].i.x = QuadReadAcrossX(data[dti.x].i.x); data[dti.x].i.xy = QuadReadAcrossX(data[dti.x].i.xy); data[dti.x].i.xyz = QuadReadAcrossX(data[dti.x].i.xyz); data[dti.x].f = QuadReadAcrossX(data[dti.x].f); data[dti.x].f.x = QuadReadAcrossX(data[dti.x].f.x); data[dti.x].f.xy = QuadReadAcrossX(data[dti.x].f.xy); data[dti.x].f.xyz = QuadReadAcrossX(data[dti.x].f.xyz); data[dti.x].d = QuadReadAcrossX(data[dti.x].d); data[dti.x].d.x = QuadReadAcrossX(data[dti.x].d.x); data[dti.x].d.xy = QuadReadAcrossX(data[dti.x].d.xy); data[dti.x].d.xyz = QuadReadAcrossX(data[dti.x].d.xyz); data[dti.x].u = QuadReadAcrossY(data[dti.x].u); data[dti.x].u.x = QuadReadAcrossY(data[dti.x].u.x); data[dti.x].u.xy = QuadReadAcrossY(data[dti.x].u.xy); data[dti.x].u.xyz = QuadReadAcrossY(data[dti.x].u.xyz); data[dti.x].i = QuadReadAcrossY(data[dti.x].i); data[dti.x].i.x = QuadReadAcrossY(data[dti.x].i.x); data[dti.x].i.xy = QuadReadAcrossY(data[dti.x].i.xy); data[dti.x].i.xyz = QuadReadAcrossY(data[dti.x].i.xyz); data[dti.x].f = QuadReadAcrossY(data[dti.x].f); data[dti.x].f.x = QuadReadAcrossY(data[dti.x].f.x); data[dti.x].f.xy = QuadReadAcrossY(data[dti.x].f.xy); data[dti.x].f.xyz = QuadReadAcrossY(data[dti.x].f.xyz); data[dti.x].d = QuadReadAcrossY(data[dti.x].d); data[dti.x].d.x = QuadReadAcrossY(data[dti.x].d.x); data[dti.x].d.xy = QuadReadAcrossY(data[dti.x].d.xy); data[dti.x].d.xyz = QuadReadAcrossY(data[dti.x].d.xyz); data[dti.x].u = QuadReadAcrossDiagonal(data[dti.x].u); data[dti.x].u.x = QuadReadAcrossDiagonal(data[dti.x].u.x); data[dti.x].u.xy = QuadReadAcrossDiagonal(data[dti.x].u.xy); data[dti.x].u.xyz = QuadReadAcrossDiagonal(data[dti.x].u.xyz); data[dti.x].i = QuadReadAcrossDiagonal(data[dti.x].i); data[dti.x].i.x = QuadReadAcrossDiagonal(data[dti.x].i.x); data[dti.x].i.xy = QuadReadAcrossDiagonal(data[dti.x].i.xy); data[dti.x].i.xyz = QuadReadAcrossDiagonal(data[dti.x].i.xyz); data[dti.x].f = QuadReadAcrossDiagonal(data[dti.x].f); data[dti.x].f.x = QuadReadAcrossDiagonal(data[dti.x].f.x); data[dti.x].f.xy = QuadReadAcrossDiagonal(data[dti.x].f.xy); data[dti.x].f.xyz = QuadReadAcrossDiagonal(data[dti.x].f.xyz); data[dti.x].d = QuadReadAcrossDiagonal(data[dti.x].d); data[dti.x].d.x = QuadReadAcrossDiagonal(data[dti.x].d.x); data[dti.x].d.xy = QuadReadAcrossDiagonal(data[dti.x].d.xy); data[dti.x].d.xyz = QuadReadAcrossDiagonal(data[dti.x].d.xyz); } glslang-16.0.0/Test/hlsl.wavequery.comp000066400000000000000000000002361506534232700200250ustar00rootroot00000000000000RWStructuredBuffer data; [numthreads(32, 16, 1)] void CSMain() { data[WaveGetLaneIndex()] = (WaveIsFirstLane()) ? WaveGetLaneCount() : 0; } glslang-16.0.0/Test/hlsl.wavequery.frag000066400000000000000000000002671506534232700200120ustar00rootroot00000000000000float4 PixelShaderFunction() : COLOR0 { if (WaveIsFirstLane()) { return float4(1, 2, 3, 4); } else { return float4(4, 3, 2, 1); } } glslang-16.0.0/Test/hlsl.wavereduction.comp000066400000000000000000000116541506534232700206620ustar00rootroot00000000000000struct Types { uint4 u; int4 i; float4 f; double4 d; }; RWStructuredBuffer data; [numthreads(32, 16, 1)] void CSMain(uint3 dti : SV_DispatchThreadID) { data[dti.x].u = WaveActiveSum(data[dti.x].u); data[dti.x].u.x = WaveActiveSum(data[dti.x].u.x); data[dti.x].u.xy = WaveActiveSum(data[dti.x].u.xy); data[dti.x].u.xyz = WaveActiveSum(data[dti.x].u.xyz); data[dti.x].i = WaveActiveSum(data[dti.x].i); data[dti.x].i.x = WaveActiveSum(data[dti.x].i.x); data[dti.x].i.xy = WaveActiveSum(data[dti.x].i.xy); data[dti.x].i.xyz = WaveActiveSum(data[dti.x].i.xyz); data[dti.x].f = WaveActiveSum(data[dti.x].f); data[dti.x].f.x = WaveActiveSum(data[dti.x].f.x); data[dti.x].f.xy = WaveActiveSum(data[dti.x].f.xy); data[dti.x].f.xyz = WaveActiveSum(data[dti.x].f.xyz); data[dti.x].d = WaveActiveSum(data[dti.x].d); data[dti.x].d.x = WaveActiveSum(data[dti.x].d.x); data[dti.x].d.xy = WaveActiveSum(data[dti.x].d.xy); data[dti.x].d.xyz = WaveActiveSum(data[dti.x].d.xyz); data[dti.x].u = WaveActiveProduct(data[dti.x].u); data[dti.x].u.x = WaveActiveProduct(data[dti.x].u.x); data[dti.x].u.xy = WaveActiveProduct(data[dti.x].u.xy); data[dti.x].u.xyz = WaveActiveProduct(data[dti.x].u.xyz); data[dti.x].i = WaveActiveProduct(data[dti.x].i); data[dti.x].i.x = WaveActiveProduct(data[dti.x].i.x); data[dti.x].i.xy = WaveActiveProduct(data[dti.x].i.xy); data[dti.x].i.xyz = WaveActiveProduct(data[dti.x].i.xyz); data[dti.x].f = WaveActiveProduct(data[dti.x].f); data[dti.x].f.x = WaveActiveProduct(data[dti.x].f.x); data[dti.x].f.xy = WaveActiveProduct(data[dti.x].f.xy); data[dti.x].f.xyz = WaveActiveProduct(data[dti.x].f.xyz); data[dti.x].d = WaveActiveProduct(data[dti.x].d); data[dti.x].d.x = WaveActiveProduct(data[dti.x].d.x); data[dti.x].d.xy = WaveActiveProduct(data[dti.x].d.xy); data[dti.x].d.xyz = WaveActiveProduct(data[dti.x].d.xyz); data[dti.x].u = WaveActiveMin(data[dti.x].u); data[dti.x].u.x = WaveActiveMin(data[dti.x].u.x); data[dti.x].u.xy = WaveActiveMin(data[dti.x].u.xy); data[dti.x].u.xyz = WaveActiveMin(data[dti.x].u.xyz); data[dti.x].i = WaveActiveMin(data[dti.x].i); data[dti.x].i.x = WaveActiveMin(data[dti.x].i.x); data[dti.x].i.xy = WaveActiveMin(data[dti.x].i.xy); data[dti.x].i.xyz = WaveActiveMin(data[dti.x].i.xyz); data[dti.x].f = WaveActiveMin(data[dti.x].f); data[dti.x].f.x = WaveActiveMin(data[dti.x].f.x); data[dti.x].f.xy = WaveActiveMin(data[dti.x].f.xy); data[dti.x].f.xyz = WaveActiveMin(data[dti.x].f.xyz); data[dti.x].d = WaveActiveMin(data[dti.x].d); data[dti.x].d.x = WaveActiveMin(data[dti.x].d.x); data[dti.x].d.xy = WaveActiveMin(data[dti.x].d.xy); data[dti.x].d.xyz = WaveActiveMin(data[dti.x].d.xyz); data[dti.x].u = WaveActiveMax(data[dti.x].u); data[dti.x].u.x = WaveActiveMax(data[dti.x].u.x); data[dti.x].u.xy = WaveActiveMax(data[dti.x].u.xy); data[dti.x].u.xyz = WaveActiveMax(data[dti.x].u.xyz); data[dti.x].i = WaveActiveMax(data[dti.x].i); data[dti.x].i.x = WaveActiveMax(data[dti.x].i.x); data[dti.x].i.xy = WaveActiveMax(data[dti.x].i.xy); data[dti.x].i.xyz = WaveActiveMax(data[dti.x].i.xyz); data[dti.x].f = WaveActiveMax(data[dti.x].f); data[dti.x].f.x = WaveActiveMax(data[dti.x].f.x); data[dti.x].f.xy = WaveActiveMax(data[dti.x].f.xy); data[dti.x].f.xyz = WaveActiveMax(data[dti.x].f.xyz); data[dti.x].d = WaveActiveMax(data[dti.x].d); data[dti.x].d.x = WaveActiveMax(data[dti.x].d.x); data[dti.x].d.xy = WaveActiveMax(data[dti.x].d.xy); data[dti.x].d.xyz = WaveActiveMax(data[dti.x].d.xyz); data[dti.x].u = WaveActiveBitAnd(data[dti.x].u); data[dti.x].u.x = WaveActiveBitAnd(data[dti.x].u.x); data[dti.x].u.xy = WaveActiveBitAnd(data[dti.x].u.xy); data[dti.x].u.xyz = WaveActiveBitAnd(data[dti.x].u.xyz); data[dti.x].i = WaveActiveBitAnd(data[dti.x].i); data[dti.x].i.x = WaveActiveBitAnd(data[dti.x].i.x); data[dti.x].i.xy = WaveActiveBitAnd(data[dti.x].i.xy); data[dti.x].i.xyz = WaveActiveBitAnd(data[dti.x].i.xyz); data[dti.x].u = WaveActiveBitOr(data[dti.x].u); data[dti.x].u.x = WaveActiveBitOr(data[dti.x].u.x); data[dti.x].u.xy = WaveActiveBitOr(data[dti.x].u.xy); data[dti.x].u.xyz = WaveActiveBitOr(data[dti.x].u.xyz); data[dti.x].i = WaveActiveBitOr(data[dti.x].i); data[dti.x].i.x = WaveActiveBitOr(data[dti.x].i.x); data[dti.x].i.xy = WaveActiveBitOr(data[dti.x].i.xy); data[dti.x].i.xyz = WaveActiveBitOr(data[dti.x].i.xyz); data[dti.x].u = WaveActiveBitXor(data[dti.x].u); data[dti.x].u.x = WaveActiveBitXor(data[dti.x].u.x); data[dti.x].u.xy = WaveActiveBitXor(data[dti.x].u.xy); data[dti.x].u.xyz = WaveActiveBitXor(data[dti.x].u.xyz); data[dti.x].i = WaveActiveBitXor(data[dti.x].i); data[dti.x].i.x = WaveActiveBitXor(data[dti.x].i.x); data[dti.x].i.xy = WaveActiveBitXor(data[dti.x].i.xy); data[dti.x].i.xyz = WaveActiveBitXor(data[dti.x].i.xyz); data[dti.x].u.x = WaveActiveCountBits(data[dti.x].u.x == 0); } glslang-16.0.0/Test/hlsl.wavevote.comp000066400000000000000000000005701506534232700176360ustar00rootroot00000000000000RWStructuredBuffer data; [numthreads(32, 16, 1)] void CSMain(uint3 dti : SV_DispatchThreadID) { data[dti.x] = WaveActiveBallot(WaveActiveAnyTrue(dti.x == 0)); data[dti.y] = WaveActiveBallot(WaveActiveAllTrue(dti.y == 0)); data[dti.z] = WaveActiveBallot(WaveActiveAllEqualBool(dti.z == 0)); data[dti.z] = WaveActiveBallot(WaveActiveAllEqual(dti.z)); } glslang-16.0.0/Test/hlsl.whileLoop.frag000066400000000000000000000002631506534232700177200ustar00rootroot00000000000000float4 PixelShaderFunction(float4 input) : COLOR0 { while (any(input != input)) { return input; } while (false) ; [unroll] while (false) { } while ((false)) { } } glslang-16.0.0/Test/hlsl.y-negate-1.vert000066400000000000000000000001521506534232700176630ustar00rootroot00000000000000 // Test Y negation from entry point return float4 pos; float4 main() : SV_Position { return pos; } glslang-16.0.0/Test/hlsl.y-negate-2.vert000066400000000000000000000002051506534232700176630ustar00rootroot00000000000000// Test Y negation from entry point out parameter float4 pos; void main(out float4 position : SV_Position) { position = pos; } glslang-16.0.0/Test/hlsl.y-negate-3.vert000066400000000000000000000003761506534232700176750ustar00rootroot00000000000000// Test Y negation from entry point out parameter float4 position; struct VS_OUT { float4 pos : SV_Position; int somethingelse; }; VS_OUT main() { VS_OUT vsout; vsout.pos = position; vsout.somethingelse = 42; return vsout; } glslang-16.0.0/Test/i1.h000066400000000000000000000000301506534232700146260ustar00rootroot00000000000000 u = g_nDataIdx; glslang-16.0.0/Test/implicitArraySize.frag000066400000000000000000000001541506534232700204600ustar00rootroot00000000000000#version 460 core in float a[]; in float c[3]; out float b[5]; void main(){ b[0] = a[1]; b[1] = c[1]; }glslang-16.0.0/Test/implicitArraySize.vert000066400000000000000000000001331506534232700205160ustar00rootroot00000000000000#version 460 core out float a[]; out float c[]; void main(){ a[0] = 0.1; c[5] = 0.1; }glslang-16.0.0/Test/implicitArraySize1.geom000066400000000000000000000002521506534232700205500ustar00rootroot00000000000000#version 460 core layout(triangles) in; layout(line_strip, max_vertices = 204) out; void f(); in float g[][3]; out float o[3]; void main(){ f(); o[1] = g[2][1]; }glslang-16.0.0/Test/implicitArraySize2.geom000066400000000000000000000001211506534232700205440ustar00rootroot00000000000000#version 460 core in float g[][3]; out float o[]; void f(){ o[1] = g[1][1]; }glslang-16.0.0/Test/implicitArraySizeBuiltin.geom000066400000000000000000000004561506534232700220240ustar00rootroot00000000000000#version 460 core layout(triangles) in; layout(line_strip, max_vertices = 204) out; void f2(float x) { gl_ClipDistance[6] = gl_in[0].gl_ClipDistance[6]; } void f3(float x) { gl_CullDistance[1] = gl_in[0].gl_CullDistance[1]; } void main(){ #if defined(CLIP) f2(0.1); #endif f3(0.1); }glslang-16.0.0/Test/implicitArraySizeBuiltin.vert000066400000000000000000000001721506534232700220500ustar00rootroot00000000000000#version 460 core void f1(float x) { gl_ClipDistance[6] = x; gl_CullDistance[1] = x; } void main(){ f1(0.1); }glslang-16.0.0/Test/implicitArraySizeUniform.frag000066400000000000000000000030601506534232700220170ustar00rootroot00000000000000#version 460 #extension GL_EXT_nonuniform_qualifier : require // unsized and not indexed in either stage // both should become implicitly sized to 1 uniform float f0[]; // unsized and not indexed in earlier stage, unsized and dynamically indexed in later stage // both should become runtime sized uniform sampler2D s0[]; // unsized and dynamically indexed in earlier stage, unsized and not indexed in later stage // both should become runtime sized uniform sampler2D s1[]; // unsized and statically indexed in earlier stage, unsized and not indexed in later stage // both should become implicitly sized to highest index + 1 (11) uniform U0 { vec4 a[]; } u0; // unsized and not indexed in earlier stage, unsized and statically indexed in later stage // both should become implicitly sized to highest index + 1 (7) uniform U1 { vec4 a[]; } u1; // unsized buffer array, statically indexed in earlier stage, not indexed in later stage // both should become implicitly sized to highest index + 1 (10) buffer B0 { vec4 a; } b0[]; // unsized and statically indexed in earlier stage, explicitly sized in later stage // should adopt explicit size (11) buffer B1 { vec4 a[11]; } b1; // unsized and not indexed in earlier stage, unsized and dynamically indexed in later stage // both should become runtime sized buffer B2 { vec4 a[]; } b2; in vec4 out_VS; out vec4 o; void main() { o = texture(s0[nonuniformEXT(1)], gl_FragCoord.xy); o += u1.a[6]; o += b0[9].a; o += b2.a[nonuniformEXT(1)]; } glslang-16.0.0/Test/implicitArraySizeUniform.vert000066400000000000000000000030061506534232700220600ustar00rootroot00000000000000#version 460 #extension GL_EXT_nonuniform_qualifier : require // unsized and not indexed in either stage // both should become implicitly sized to 1 uniform float f0[]; // unsized and not indexed in earlier stage, unsized and dynamically indexed in later stage // both should become runtime sized uniform sampler2D s0[]; // unsized and dynamically indexed in earlier stage, unsized and not indexed in later stage // both should become runtime sized uniform sampler2D s1[]; // unsized and statically indexed in earlier stage, unsized and not indexed in later stage // both should become implicitly sized to highest index + 1 (11) uniform U0 { vec4 a[]; } u0; // unsized and not indexed in earlier stage, unsized and statically indexed in later stage // both should become implicitly sized to highest index + 1 (7) uniform U1 { vec4 a[]; } u1; // unsized buffer array, statically indexed in earlier stage, not indexed in later stage // both should become implicitly sized to highest index + 1 (10) buffer B0 { vec4 a; } b0[]; // unsized and statically indexed in earlier stage, explicitly sized in later stage // should adopt explicit size (11) buffer B1 { vec4 a[]; } b1; // unsized and not indexed in earlier stage, unsized and dynamically indexed in later stage // both should become runtime sized buffer B2 { vec4 a[]; } b2; out vec4 out_VS; void main() { out_VS = texture(s1[nonuniformEXT(0)], vec2(0)); out_VS = u0.a[10]; out_VS = b1.a[5]; } glslang-16.0.0/Test/implicitArraySizeUniformContradict.frag000066400000000000000000000026521506534232700240400ustar00rootroot00000000000000#version 460 // explicitly sized in earlier stage, unsized and statically indexed with larger index in later stage // error: array is indexed with index (6) greater than its size (3) uniform sampler2D s[]; // unsized and statically indexed in earlier stage, explicitly sized with smaller index (but not indexed) in later stage // error: array is indexed with index (20) greater than its size (2) uniform U0 { vec4 a[2]; } u0; // explicitly sized in earlier stage, unsized and statically indexed with larger index in later stage // error: array is indexed with index (12) greater than its size (5) uniform U1 { vec4 a[]; } u1; // explicitly sized (3) and not indexed in earlier stage, explicitly sized with different size (5) and not indexed in later stage // error: array size in earlier stage (3) does not array size in later stage (5) buffer B0 { vec4 a[5]; } b0; // explicitly sized in earlier stage, unsized and statically indexed with larger index in later stage // error: array is indexed with index (4) greater than its size (3) buffer B1 { vec4 a[]; } b1; // explicitly sized in earlier stage, unsized and statically indexed with larger index in later stage // error: array is indexed with index (4) greater than its size (2) buffer B2 { vec4 a[]; } b2[2]; in vec4 out_VS; out vec4 o; void main() { o = texture(s[6], out_VS.xy); o = u1.a[12]; o = b1.a[4]; } glslang-16.0.0/Test/implicitArraySizeUniformContradict.vert000066400000000000000000000026111506534232700240740ustar00rootroot00000000000000#version 460 // explicitly sized in earlier stage, unsized and statically indexed with larger index in later stage // error: array is indexed with index (6) greater than its size (3) uniform sampler2D s[3]; // unsized and statically indexed in earlier stage, explicitly sized with smaller index (but not indexed) in later stage // error: array is indexed with index (20) greater than its size (2) uniform U0 { vec4 a[]; } u0; // explicitly sized in earlier stage, unsized and statically indexed with larger index in later stage // error: array is indexed with index (12) greater than its size (5) uniform U1 { vec4 a[5]; } u1; // explicitly sized (3) and not indexed in earlier stage, explicitly sized with different size (5) and not indexed in later stage // error: array size in earlier stage (3) does not array size in later stage (5) buffer B0 { vec4 a[3]; } b0; // explicitly sized in earlier stage, unsized and statically indexed with larger index in later stage // error: array is indexed with index (4) greater than its size (3) buffer B1 { vec4 a[3]; } b1; // explicitly sized in earlier stage, unsized and statically indexed with larger index in later stage // error: array is indexed with index (4) greater than its size (2) buffer B2 { vec4 a[]; } b2[]; out vec4 out_VS; void main() { out_VS = u0.a[20]; out_VS = b2[4].a[0]; } glslang-16.0.0/Test/implicitInnerAtomicUint.frag000066400000000000000000000000741506534232700216200ustar00rootroot00000000000000#version 460 layout(binding = 0) uniform atomic_uint c[1][];glslang-16.0.0/Test/inc1/000077500000000000000000000000001506534232700150055ustar00rootroot00000000000000glslang-16.0.0/Test/inc1/badInc.h000066400000000000000000000000251506534232700163330ustar00rootroot00000000000000#include "parentBad" glslang-16.0.0/Test/inc1/bar.h000066400000000000000000000000351506534232700157200ustar00rootroot00000000000000float4 i2; #include "foo.h" glslang-16.0.0/Test/inc1/foo.h000066400000000000000000000000401506534232700157330ustar00rootroot00000000000000#include "parent.h" float4 i3; glslang-16.0.0/Test/inc1/path1/000077500000000000000000000000001506534232700160225ustar00rootroot00000000000000glslang-16.0.0/Test/inc1/path1/bar.h000066400000000000000000000000161506534232700167340ustar00rootroot00000000000000float4 i9991; glslang-16.0.0/Test/inc1/path1/local.h000066400000000000000000000000131506534232700172570ustar00rootroot00000000000000float4 p2; glslang-16.0.0/Test/inc1/path1/notHere.h000066400000000000000000000000631506534232700175760ustar00rootroot00000000000000float4 p1; #include "local.h" #include "remote.h" glslang-16.0.0/Test/inc1/path2/000077500000000000000000000000001506534232700160235ustar00rootroot00000000000000glslang-16.0.0/Test/inc1/path2/bar.h000066400000000000000000000000161506534232700167350ustar00rootroot00000000000000float4 i9991; glslang-16.0.0/Test/inc1/path2/notHere.h000066400000000000000000000000171506534232700175760ustar00rootroot00000000000000float4 paoeu1; glslang-16.0.0/Test/inc1/path2/remote.h000066400000000000000000000000131506534232700174610ustar00rootroot00000000000000float4 p3; glslang-16.0.0/Test/inc2/000077500000000000000000000000001506534232700150065ustar00rootroot00000000000000glslang-16.0.0/Test/inc2/bar.h000066400000000000000000000000341506534232700157200ustar00rootroot00000000000000#include "foo.h" float4 i5; glslang-16.0.0/Test/inc2/foo.h000066400000000000000000000000131506534232700157340ustar00rootroot00000000000000float4 i6; glslang-16.0.0/Test/include.vert000066400000000000000000000003361506534232700165020ustar00rootroot00000000000000#version 450 #extension GL_GOOGLE_include_directive : enable #define float4 vec4 #include "bar.h" #include "./inc1/bar.h" #include "inc2\bar.h" out vec4 color; void main() { color = i1 + i2 + i3 + i4 + i5 + i6; } glslang-16.0.0/Test/index_outside_sample_mask_range.frag000066400000000000000000000003751506534232700234140ustar00rootroot00000000000000#version 320 es layout (location = 0) out mediump vec4 fs_color; void main() { const highp int invalidIndex = (gl_MaxSamples + 31) / 32; highp int invalidValue = gl_SampleMask[invalidIndex]; fs_color = vec4(1.0f, 0.0f, 0.0f, 1.0f); } glslang-16.0.0/Test/invalidSwizzle.vert000066400000000000000000000003361506534232700200750ustar00rootroot00000000000000#version 420 void f(); uniform sampler2D s; void main() { vec2 v = s.rr; // Swizzles do not apply to samplers f().xx; // Scalar swizzle does not apply to void f().xy; // Vector swizzle does not apply either }glslang-16.0.0/Test/iomap.blockOutVariableIn.2.vert000066400000000000000000000002601506534232700220360ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/iomap.blockOutVariableIn.frag000066400000000000000000000002571506534232700216430ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/iomap.blockOutVariableIn.geom000066400000000000000000000010221506534232700216420ustar00rootroot00000000000000#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(); } glslang-16.0.0/Test/iomap.blockOutVariableIn.vert000066400000000000000000000002601506534232700216760ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/iomap.crossStage.2.frag000066400000000000000000000013651506534232700204020ustar00rootroot00000000000000#version 460 layout(location = 5) in outBlock { vec4 o3; }; in vec4 gfo1; in vec2 gfo2; out vec4 outColor; uniform vec2 u1; uniform vec3 u2; // initializer present in vertex stage uniform vec4 u3 = vec4(0); // initializer matches initializer in vertex stage uniform mat2 um2 = mat2(4.0); layout (location = 0, binding = 0) uniform sampler2D glass; uniform crossStageBlock1 { uniform vec4 a; vec4 b; }; buffer fragOnlyBlock { vec2 fb1; }; uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName2 [2]; // instance name different from vert void main() { vec4 color = gfo1 * u1.rgrg * u2.rgbr * u3.rgba; // o1 is statically used outColor = color; } glslang-16.0.0/Test/iomap.crossStage.2.geom000066400000000000000000000014021506534232700204020ustar00rootroot00000000000000#version 460 layout(points) in; layout(triangle_strip, max_vertices=3) out; in vec4 vgo1[]; in vec2 vgo2[]; layout(location = 5) in outBlock { vec4 o3; } inBlock[]; out vec4 gfo1; out vec2 gfo2; layout(location = 5) out outBlock { vec4 o3; } gf_out; uniform vec2 u1; uniform vec3 u2 = vec3(0); // initializer not present in fragment stage uniform vec4 u3 = vec4(0); // initializer matches initializer in fragment stage uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName1 [2]; // instance name different from frag void main() { for (int i = 0; i < 3; i++) { gfo1 = vec4(0); gfo2 = vec2(0); gf_out.o3 = inBlock[i].o3; EmitVertex(); } EndPrimitive(); } glslang-16.0.0/Test/iomap.crossStage.2.vert000066400000000000000000000014341506534232700204400ustar00rootroot00000000000000#version 460 out vec4 vgo1; // declaration order different than fragment shader out vec2 vgo2; // declaration order different than fragment shader layout(location = 5) out outBlock { vec4 o3; }; uniform vec2 u1; uniform vec3 u2 = vec3(0); // initializer not present in fragment stage uniform vec4 u3 = vec4(0); // initializer matches initializer in fragment stage uniform mat2 um2 = mat2(4.0); layout (location = 0, binding = 0) uniform sampler2D glass; uniform crossStageBlock1 { uniform vec4 a; vec4 b; }; buffer vertOnlyBlock { vec2 vb1; }; uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName1 [2]; // instance name different from frag void main() { vgo1 = vec4(0); vgo2 = vec2(0); o3 = vec4(0); } glslang-16.0.0/Test/iomap.crossStage.frag000066400000000000000000000015121506534232700202340ustar00rootroot00000000000000#version 460 layout(location = 5) in outBlock { vec4 o3; }; in vec2 o2; // declaration order different than vertex shader in vec4 o1; // declaration order different than vertex shader out vec4 outColor; uniform vec2 u1; uniform vec3 u2; // initializer present in vertex stage uniform vec4 u3 = vec4(0); // initializer matches initializer in vertex stage uniform mat2 um2 = mat2(4.0); layout (location = 0, binding = 0) uniform sampler2D glass; uniform crossStageBlock1 { uniform vec4 a; vec4 b; }; buffer fragOnlyBlock { vec2 fb1; }; uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName2 [2]; // instance name different from vert void main() { vec4 color = o1 * u1.rgrg * u2.rgbr * u3.rgba; // o1 is statically used outColor = color; } glslang-16.0.0/Test/iomap.crossStage.vert000066400000000000000000000014241506534232700202770ustar00rootroot00000000000000#version 460 out vec4 o1; // declaration order different than fragment shader out vec2 o2; // declaration order different than fragment shader layout(location = 5) out outBlock { vec4 o3; }; uniform vec2 u1; uniform vec3 u2 = vec3(0); // initializer not present in fragment stage uniform vec4 u3 = vec4(0); // initializer matches initializer in fragment stage uniform mat2 um2 = mat2(4.0); layout (location = 0, binding = 0) uniform sampler2D glass; uniform crossStageBlock1 { uniform vec4 a; vec4 b; }; buffer vertOnlyBlock { vec2 vb1; }; uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName1 [2]; // instance name different from frag void main() { o1 = vec4(0); o2 = vec2(0); o3 = vec4(0); } glslang-16.0.0/Test/iomap.crossStage.vk.frag000066400000000000000000000014331506534232700206550ustar00rootroot00000000000000#version 460 layout(location = 5) in outBlock { vec4 o3; }; in vec4 gfo1; in vec2 gfo2; out vec4 outColor; layout (binding = 0) uniform sampler2D glass; uniform crossStageBlock1 { uniform vec4 a; vec4 b; }; readonly buffer fragOnlyBlock { vec2 fb1; }; uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName2 [2]; // instance name different from vert vec2 Bar() { return fb1 + blockName2[0].b + blockName2[1].b; } vec4 Foo() { return a + b + blockName2[0].a + blockName2[1].a + vec4(Bar(), 0.0, 0.0); } void main() { vec4 color = gfo1; // o1 is statically used color = color + Foo(); outColor = color; } glslang-16.0.0/Test/iomap.crossStage.vk.geom000066400000000000000000000011241506534232700206620ustar00rootroot00000000000000#version 460 layout(points) in; layout(triangle_strip, max_vertices=3) out; in vec4 vgo1[]; in vec2 vgo2[]; layout(location = 5) in outBlock { vec4 o3; } inBlock[]; out vec4 gfo1; out vec2 gfo2; layout(location = 5) out outBlock { vec4 o3; } gf_out; uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName1 [2]; // instance name different from frag void main() { for (int i = 0; i < 3; i++) { gfo1 = vec4(0); gfo2 = vec2(0); gf_out.o3 = inBlock[i].o3; EmitVertex(); } EndPrimitive(); } glslang-16.0.0/Test/iomap.crossStage.vk.vert000066400000000000000000000011101506534232700207060ustar00rootroot00000000000000#version 460 out vec4 vgo1; // declaration order different than fragment shader out vec2 vgo2; // declaration order different than fragment shader layout(location = 5) out outBlock { vec4 o3; }; layout (binding = 0) uniform sampler2D glass; uniform crossStageBlock1 { uniform vec4 a; vec4 b; }; readonly buffer vertOnlyBlock { vec2 vb1; }; uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName1 [2]; // instance name different from frag void main() { vgo1 = vec4(0); vgo2 = vec2(0); o3 = vec4(0); } glslang-16.0.0/Test/iomap.mismatchedBufferTypes.frag000066400000000000000000000005111506534232700224120ustar00rootroot00000000000000#version 460 // GLSL spec: Hence, the types, initializers, and any location specifiers of all statically used uniform // variables with the same name must match across all shaders that are linked into a single program uniform crossStageBlock { float a; // 2nd member from vert absent in frag } blockname; void main() {}glslang-16.0.0/Test/iomap.mismatchedBufferTypes.vert000066400000000000000000000005021506534232700224530ustar00rootroot00000000000000#version 460 // GLSL spec: Hence, the types, initializers, and any location specifiers of all statically used uniform // variables with the same name must match across all shaders that are linked into a single program uniform crossStageBlock { float a; float b; // not present in frag } blockname; void main() {}glslang-16.0.0/Test/iomap.variableOutBlockIn.2.vert000066400000000000000000000002631506534232700220410ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/iomap.variableOutBlockIn.frag000066400000000000000000000002551506534232700216410ustar00rootroot00000000000000#version 440 layout(location = 0) in Inputs { vec4 a1; vec2 a2; }; layout(location = 0) out vec4 color; void main() { color = vec4(a1.xy, a2); } glslang-16.0.0/Test/iomap.variableOutBlockIn.geom000066400000000000000000000005041506534232700216460ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/iomap.variableOutBlockIn.vert000066400000000000000000000002631506534232700217010ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/length.frag000066400000000000000000000003651506534232700163010ustar00rootroot00000000000000#version 120 uniform vec4 u[3]; #ifdef TEST_POST_110 varying vec2 v[]; #else varying vec2 v[2]; #endif void main() { int a[5]; vec2 t = v[0] + v[1]; gl_FragColor = vec4(u.length() * v.length() * a.length()); } glslang-16.0.0/Test/lineContinuation.vert000066400000000000000000000030671506534232700204050ustar00rootroot00000000000000#version 300 es // this file cont\ ains no errors other than the #error which are there to see if line numbering for errors is correct #error e1 float f\ oo; // same as 'float foo;' #error e2 #define MAIN void main() \ { \ gl_Position = vec4(foo); \ } #error e3 MAIN vec4 foo2(vec4 a) { vec4 b = a; \ return b; } // aoeuntheo unatehutna \ antaehnathe // anteonuth $ natohe " ' // anteonuth natohe #define FOO int /* \ */ goodDecl; FOO #define A int q1 = \ 1 #define B int q2 = \1 #define C int q3 = $ 1 #define D int q4 = @ 1 const highp int a1 = \ 4; // ERROR const highp int a2 = @ 3; // ERROR const highp int a3 = $4; // ERROR const highp int a4 = a2\; // ERROR A; B; C; D; # \ # \ error good continuation #define AA1 a \ b #define AA2 a \\ b #define AA3 a \\\ b #define AA4 a \\\\ b // anoetuh nonaetu \\\\\\ still in comment const int abdece = 10; const int aoeuntaoehu = abd\ \ \ \ \ \ ece; float funkyf = \ .\ 1\ 2\ 3\ e\ +\ 1\ 7\ ;\ int funkyh\ =\ 0\ x\ f\ 4\ ; int funkyo =\ 0\ 4\ 2\ ; int c = \ 11; int d = 1\ 2; #define FOOM(a,b) a + b #if FO\ OM(2\ ,\ 3) int bar103 = 17; #endif // ERROR #if FOOM(2, 3) int bar104 = 19; #endif // ERROR #if FOOM( 2,3) int bar105 = 19; #endif int bar106 = FOOM(5,7); int bar107 = FOOM // okay ( 2 , 3 ) ; void foo203209409() { bar107 \ += 37; bar107 *\ = 38; bar107 /=\ 39; bar107 +\ 41; } #define QUOTE "ab\ cd" void foo230920394() { // syntax error bar107 +\ = 42; } glslang-16.0.0/Test/lineContinuation100.vert000066400000000000000000000014451506534232700206240ustar00rootroot00000000000000#version 100 // non-line continuation comment \ #error good error float f\ oo; // same as 'float foo;' #error e2 #define MAIN void main() \ { \ gl_Position = vec4(foo); \ } #error e3 MAIN vec4 foo2(vec4 a) { vec4 b = a; \ return b; } // aoeuntheo unatehutna \ antaehnathe // anteonuth $ natohe " ' // anteonuth natohe /*@*/ /* *@/*/ //@ #define A int q1 = \ 1 #define B int q2 = \1 #define C int q3 = $ 1 #define D int q4 = @ 1 const highp int a1 = \ 4; // ERROR const highp int a2 = @ 3; // ERROR const highp int a3 = $4; // ERROR const highp int a4 = a2\; // ERROR A; B; C; D; # \ # \ error bad continuation #define QUOTE "ab\ cd" glslang-16.0.0/Test/link.crossStageIO.0.frag000066400000000000000000000034551506534232700204620ustar00rootroot00000000000000#version 460 layout(location = 0) in BBlock0 { vec4 b0; vec4 b1; vec4 b2; vec4 b3; }; layout(location = 4) in vec4 b4[2]; layout(location = 6) in BBlock1 { vec4 b5; }; layout(location = 7) in vec4 b6[5]; layout(location = 12) in float b7[4]; layout(location = 21) in BBlock2 { vec2 b8; float b9; layout(location = 16) vec3 b10; float b11[4]; }; layout(location = 23) in BBlock3 { float b12[6]; }; layout(location = 29) in BBlock4 { float b13[]; // implicitly sized to 10 }; layout(location = 39) in BBlock5 { flat ivec2 b14; }; layout(location = 40) in mat2 b15; in flat uint b16; layout(location = 45) in BBlock6 { vec4 b17; layout(location = 43) vec4 b18; vec4 b19; }; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) in vec4 b20[4]; layout(location = 50) in BBlock7 { vec4 b21[10]; }; layout(location = 60) in vec2 b22; // automatically mapped by name in Block0 { vec4 a20; }; // automatically mapped by name in vec2 a21[2]; out vec4 o; uint uncalled() { return b16; } void main() { o = b1; o += b2; o += b3; o += b4[0]; o += b4[1]; o += b5; o += b6[0]; o += b6[1]; o += b6[2]; o += b6[3]; o += b6[4]; o += vec4(b7[0], b7[1], b7[2], b7[3]); o += b8.xxyy; o += vec4(b9); o += b10.xyzx; o += vec4(b11[0], b11[1], b11[2], b11[3]); o += vec4(b12[0], b12[1], b12[2], b12[3] + b12[4] + b12[5]); o += vec4(b13[9], b13[7], b13[6], b13[0]); if (false) { o += (b15 * vec2(1.0)).xxyy; o += b18; o += b19; } o += b20[ubo0.i]; o += b21[ubo0.i]; o += b22.xxyy; o += a20; o += vec4(a21[0], a21[1]); } glslang-16.0.0/Test/link.crossStageIO.0.vert000066400000000000000000000041351506534232700205170ustar00rootroot00000000000000#version 460 layout(location = 40) out vec4 a0; layout(location = 1) out ABlock0 { vec4 a1; }; out ABlock1 { layout(location = 3) vec4 a2; layout(location = 2) vec4 a3; }; layout(location = 5) out vec4 a4[3]; layout(location = 4) out ABlock2 { vec4 a5; layout(location = 8) vec4 a6[2]; vec4 a7[2]; }; struct S { float a[3]; float b; }; layout(location = 12) out ABlock3 { float a8; layout(location = 15) vec2 a9[2]; vec4 a10[2]; layout(location = 19) S a11[2]; // consumes 8 locations }; layout(location = 27) out float a12[3]; layout(location = 30) out struct AStruct1 { vec2 a13; S a14; // consumes 4 locations mat4 a15; } s0; layout(location = 39) out float a16; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) out vec4 a17[4]; layout(location = 50) out ABlock4 { vec4 a18[10]; }; layout(location = 59) out ABlock5 { layout(location = 60) vec2 a19; }; // automatically mapped by name out Block0 { vec4 a20; }; // automatically mapped by name out vec2 a21[2]; void main() { if (false) { a0 = vec4(1.0); } a1 = vec4(0.0); a2 = vec4(0.0); a3 = vec4(0.0); a4[0] = vec4(0.0); a4[1] = vec4(0.0); a4[2] = vec4(0.0); a5 = vec4(0.0); a6[0] = vec4(0.0); a6[1] = vec4(0.0); a7[0] = vec4(0.0); a7[1] = vec4(0.0); a8 = 0.0; a9[0].x = 0.0; a9[1].y = 0.0; a10[0] = vec4(0.0); a10[1] = vec4(0.0); a11[0].a[0] = 0.0; a11[0].a[1] = 0.0; a11[0].a[2] = 0.0; a11[0].b = 0.0; a11[1].a[0] = 0.0; a11[1].a[1] = 0.0; a11[1].a[2] = 0.0; a11[1].b = 0.0; a12[0] = 0.0; a12[1] = 0.0; a12[2] = 0.0; s0.a13.y = 0.0; s0.a14.a[0] = 0.0; s0.a14.a[1] = 0.0; s0.a14.a[2] = 0.0; s0.a14.b = 0.0; s0.a15 = mat4(1.0); // a16 intentionally not written to a17[ubo0.i] = vec4(1.0); a18[5] = vec4(1.0); a19 = vec2(0.0); a20 = vec4(1.0); a21[0] = vec2(0.0); a21[1] = vec2(0.0); } glslang-16.0.0/Test/link.crossStageIO.1.frag000066400000000000000000000034641506534232700204630ustar00rootroot00000000000000#version 460 layout(location = 0) in BBlock0 { vec4 b0; vec4 b1; vec4 b2; vec4 b3; }; layout(location = 4) in vec4 b4[2]; layout(location = 6) in BBlock1 { vec4 b5; }; layout(location = 7) in vec4 b6[5]; layout(location = 12) in float b7[4]; layout(location = 21) in BBlock2 { vec2 b8; float b9; layout(location = 16) vec3 b10; float b11[4]; }; layout(location = 23) in BBlock3 { float b12[6]; }; layout(location = 29) in BBlock4 { float b13[]; // implicitly sized to 10 }; layout(location = 39) in BBlock5 { flat ivec2 b14; }; layout(location = 40) in mat2 b15; in flat uint b16; layout(location = 45) in BBlock6 { vec4 b17; layout(location = 43) vec4 b18; vec4 b19; }; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) in vec4 b20[4]; layout(location = 50) in BBlock7 { vec4 b21[10]; }; layout(location = 60) in vec2 b22; // automatically mapped by name in GBlock0 { vec4 a20; }; // automatically mapped by name in vec2 g_a21[2]; out vec4 o; uint uncalled() { return b16; } void main() { o = b1; o += b2; o += b3; o += b4[0]; o += b4[1]; o += b5; o += b6[0]; o += b6[1]; o += b6[2]; o += b6[3]; o += b6[4]; o += vec4(b7[0], b7[1], b7[2], b7[3]); o += b8.xxyy; o += vec4(b9); o += b10.xyzx; o += vec4(b11[0], b11[1], b11[2], b11[3]); o += vec4(b12[0], b12[1], b12[2], b12[3] + b12[4] + b12[5]); o += vec4(b13[9], b13[7], b13[6], b13[0]); if (false) { o += (b15 * vec2(1.0)).xxyy; o += b18; o += b19; } o += b20[ubo0.i]; o += b21[ubo0.i]; o += b22.xxyy; o += a20; o += vec4(g_a21[0], g_a21[1]); } glslang-16.0.0/Test/link.crossStageIO.1.geom000066400000000000000000000013411506534232700204630ustar00rootroot00000000000000#version 460 layout(triangles) in; layout(triangle_strip, max_vertices=3) out; // automatically mapped by name in Block0 { vec4 a20; } gs_in0[3]; // automatically mapped by name in vec2 a21[3][2]; // automatically mapped by name out GBlock0 { vec4 a20; } gs_out0; // automatically mapped by name out vec2 g_a21[2]; in GBlock1 { layout(location = 0) in vec4 a0[64]; } gs_in1[3]; layout(location = 0) out vec4 o0[64]; void main() { for (int i = 0; i < 32; ++i) { o0[i] = gs_in1[0].a0[i]; } gs_out0.a20 = gs_in0[0].a20; g_a21[0] = a21[0][0]; g_a21[0] = a21[0][1]; gl_Position = vec4(0); EmitVertex(); EmitVertex(); EmitVertex(); } glslang-16.0.0/Test/link.crossStageIO.1.vert000066400000000000000000000041351506534232700205200ustar00rootroot00000000000000#version 460 layout(location = 40) out vec4 a0; layout(location = 1) out ABlock0 { vec4 a1; }; out ABlock1 { layout(location = 3) vec4 a2; layout(location = 2) vec4 a3; }; layout(location = 5) out vec4 a4[3]; layout(location = 4) out ABlock2 { vec4 a5; layout(location = 8) vec4 a6[2]; vec4 a7[2]; }; struct S { float a[3]; float b; }; layout(location = 12) out ABlock3 { float a8; layout(location = 15) vec2 a9[2]; vec4 a10[2]; layout(location = 19) S a11[2]; // consumes 8 locations }; layout(location = 27) out float a12[3]; layout(location = 30) out struct AStruct1 { vec2 a13; S a14; // consumes 4 locations mat4 a15; } s0; layout(location = 39) out float a16; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) out vec4 a17[4]; layout(location = 50) out ABlock4 { vec4 a18[10]; }; layout(location = 59) out ABlock5 { layout(location = 60) vec2 a19; }; // automatically mapped by name out Block0 { vec4 a20; }; // automatically mapped by name out vec2 a21[2]; void main() { if (false) { a0 = vec4(1.0); } a1 = vec4(0.0); a2 = vec4(0.0); a3 = vec4(0.0); a4[0] = vec4(0.0); a4[1] = vec4(0.0); a4[2] = vec4(0.0); a5 = vec4(0.0); a6[0] = vec4(0.0); a6[1] = vec4(0.0); a7[0] = vec4(0.0); a7[1] = vec4(0.0); a8 = 0.0; a9[0].x = 0.0; a9[1].y = 0.0; a10[0] = vec4(0.0); a10[1] = vec4(0.0); a11[0].a[0] = 0.0; a11[0].a[1] = 0.0; a11[0].a[2] = 0.0; a11[0].b = 0.0; a11[1].a[0] = 0.0; a11[1].a[1] = 0.0; a11[1].a[2] = 0.0; a11[1].b = 0.0; a12[0] = 0.0; a12[1] = 0.0; a12[2] = 0.0; s0.a13.y = 0.0; s0.a14.a[0] = 0.0; s0.a14.a[1] = 0.0; s0.a14.a[2] = 0.0; s0.a14.b = 0.0; s0.a15 = mat4(1.0); // a16 intentionally not written to a17[ubo0.i] = vec4(1.0); a18[5] = vec4(1.0); a19 = vec2(0.0); a20 = vec4(1.0); a21[0] = vec2(0.0); a21[1] = vec2(0.0); } glslang-16.0.0/Test/link.crossStageOptimization.frag000066400000000000000000000007151506534232700224770ustar00rootroot00000000000000#version 440 layout(location = 0) in vec4 a0; // accessed layout(location = 1) in vec4 a1; // not accessed layout(location = 2) in vec4 a2; // accessed layout(location = 3) in vec4 a3; // not accessed layout(location = 0) out vec4 oColor; void main() { vec4 temp = vec4(1.0); if (true) { temp *= a0; temp *= a2; } if (false) { temp *= a1; temp *= a3; } oColor = temp; } glslang-16.0.0/Test/link.crossStageOptimization.vert000066400000000000000000000016441506534232700225420ustar00rootroot00000000000000#version 440 layout(std140) uniform AccessedUniformBlock { vec4 a; vec4 b; }; layout(std140) uniform NotAccessedUniformBlock { vec4 c; vec4 d; }; layout(std430) buffer AccessedStorageBlock { float e[512]; }; layout(std430) buffer NotAccessedStorageBlock { float f[512]; }; uniform sampler2D uSampler0; // accessed uniform sampler2D uSampler1; // not accessed layout(location = 0) out vec4 a0; // accessed layout(location = 1) out vec4 a1; // not accessed layout(location = 2) out vec4 a2; // accessed layout(location = 3) out vec4 a3; // not accessed void main() { a0 = a + vec4(e[0]) + texture(uSampler0, vec2(0.5, 0.5)); a1 = c + vec4(f[1]) + texture(uSampler1, vec2(0.5, 0.5)); a2 = b + vec4(e[0]) + texture(uSampler0, vec2(0.5, 0.5)); a3 = d + vec4(f[1]) + texture(uSampler1, vec2(0.5, 0.5)); gl_Position = vec4(1.0, 1.0, 1.0, 1.0); } glslang-16.0.0/Test/link.missingCrossStageIO.0.frag000066400000000000000000000034551506534232700220140ustar00rootroot00000000000000#version 460 layout(location = 0) in BBlock0 { vec4 b0; vec4 b1; vec4 b2; vec4 b3; }; layout(location = 4) in vec4 b4[2]; layout(location = 6) in BBlock1 { vec4 b5; }; layout(location = 7) in vec4 b6[5]; layout(location = 12) in float b7[4]; layout(location = 21) in BBlock2 { vec2 b8; float b9; layout(location = 16) vec3 b10; float b11[4]; }; layout(location = 23) in BBlock3 { float b12[6]; }; layout(location = 29) in BBlock4 { float b13[]; // implicitly sized to 10 }; layout(location = 39) in BBlock5 { flat ivec2 b14; }; layout(location = 40) in mat2 b15; in flat uint b16; layout(location = 45) in BBlock6 { vec4 b17; layout(location = 43) vec4 b18; vec4 b19; }; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) in vec4 b20[4]; layout(location = 50) in BBlock7 { vec4 b21[10]; }; layout(location = 60) in vec2 b22; // automatically mapped by name in Block0 { vec4 a20; }; // automatically mapped by name in vec2 a21[2]; out vec4 o; uint uncalled() { return b16; } void main() { o = b1; o += b2; o += b3; o += b4[0]; o += b4[1]; o += b5; o += b6[0]; o += b6[1]; o += b6[2]; o += b6[3]; o += b6[4]; o += vec4(b7[0], b7[1], b7[2], b7[3]); o += b8.xxyy; o += vec4(b9); o += b10.xyzx; o += vec4(b11[0], b11[1], b11[2], b11[3]); o += vec4(b12[0], b12[1], b12[2], b12[3] + b12[4] + b12[5]); o += vec4(b13[9], b13[7], b13[6], b13[0]); if (false) { o += (b15 * vec2(1.0)).xxyy; o += b18; o += b19; } o += b20[ubo0.i]; o += b21[ubo0.i]; o += b22.xxyy; o += a20; o += vec4(a21[0], a21[1]); } glslang-16.0.0/Test/link.missingCrossStageIO.0.vert000066400000000000000000000000421506534232700220420ustar00rootroot00000000000000#version 460 void main() { } glslang-16.0.0/Test/link.multiAnonBlocksInvalid.0.0.vert000066400000000000000000000014221506534232700227170ustar00rootroot00000000000000#version 430 // Error: Block has different members layout (std140) uniform Block { mat4 uProj; }; // Error: BufferBlock has different members buffer BufferBlock { vec4 b; }; // Error: Vertex has different members out Vertex { vec4 v1; }; // Error: ColorBlock has different members layout (std140) uniform ColorBlock { vec4 color1; vec4 color2; // Error, redeclare varaible in another anonymous block vec4 v1; }; // Error: NamedBlock is anonymous in other compilation unit layout (std140) uniform NamedBlock { mat4 m; } myName; vec4 getWorld(); vec4 getColor2(); out vec4 oColor; // Error: redeclare varaibles that are in anonymous blocks out vec4 v1; uniform mat4 uProj; void main() { oColor = color1 * getColor2(); v1 = color1; gl_Position = uProj * getWorld(); } glslang-16.0.0/Test/link.multiAnonBlocksInvalid.0.1.vert000066400000000000000000000011071506534232700227200ustar00rootroot00000000000000#version 430 // Error: ColorBlock has different members layout (std140) uniform ColorBlock { vec4 color2; }; // Error: Block has different members layout (std140) uniform Block { mat4 uProj; mat4 uWorld; }; // Error: Vertex has different members out Vertex { vec4 v1; vec4 v2; }; // Error BufferBlock has different members buffer BufferBlock { vec4 a; }; // Error: NamedBlock is anonymous in other compilation unit layout (std140) uniform NamedBlock { mat4 m; }; in vec4 P; vec4 getColor2() { return color2; } vec4 getWorld() { return uWorld * P; v2 = vec4(1); } glslang-16.0.0/Test/link.multiAnonBlocksValid.0.0.vert000066400000000000000000000010231506534232700223650ustar00rootroot00000000000000#version 430 // Verify that matching by block name is working, not // instance name, which was at one point failing on this // test due to E.g anon@1 being different blocks for // different compilation units layout (std140) uniform Block { mat4 uProj; mat4 uWorld; }; out Vertex { vec4 v1; vec4 v2; }; layout (std140) uniform ColorBlock { vec4 color1; vec4 color2; }; vec4 getWorld(); vec4 getColor2(); out vec4 oColor; void main() { oColor = color1 * getColor2(); v1 = color1; gl_Position = uProj * getWorld(); } glslang-16.0.0/Test/link.multiAnonBlocksValid.0.1.vert000066400000000000000000000004421506534232700223720ustar00rootroot00000000000000#version 430 layout (std140) uniform ColorBlock { vec4 color1; vec4 color2; }; layout (std140) uniform Block { mat4 uProj; mat4 uWorld; }; out Vertex { vec4 v1; vec4 v2; }; in vec4 P; vec4 getColor2() { return color2; } vec4 getWorld() { return uWorld * P; v2 = vec4(1); } glslang-16.0.0/Test/link.multiBlocksInvalid.0.0.vert000066400000000000000000000011741506534232700221070ustar00rootroot00000000000000#version 430 // Verify that blocks with different instance names // are correctly detected as invalid non-matching blocks // when they are matched up by block name layout (std140) uniform Block { mat4 uProj; } uD; out Vertex { vec4 v1; } oV; layout (std140) uniform ColorBlock { vec4 color1; } uC; // Error, buffer blocks and uniform blocks share the // same namespace for their block name layout (std430) buffer ColorBlock { vec4 color1; } uBufC; vec4 getWorld(); vec4 getColor2(); out vec4 oColor; void main() { oColor = uC.color1 * getColor2(); oV.v1 = uC.color1 + uBufC.color1; gl_Position = uD.uProj * getWorld(); } glslang-16.0.0/Test/link.multiBlocksInvalid.0.1.vert000066400000000000000000000004551506534232700221110ustar00rootroot00000000000000#version 430 layout (std140) uniform ColorBlock { vec4 color2; } uColorB; layout (std140) uniform Block { mat4 uWorld; } uDefaultB; out Vertex { vec4 v2; } oVert; in vec4 P; vec4 getColor2() { return uColorB.color2; } vec4 getWorld() { return uDefaultB.uWorld * P; oVert.v2 = vec4(1); } glslang-16.0.0/Test/link.multiBlocksValid.1.0.vert000066400000000000000000000005341506534232700215600ustar00rootroot00000000000000#version 430 layout (std140) uniform Block { mat4 uProj; mat4 uWorld; } a; out Vertex { vec4 v1; vec4 v2; } b; layout (std140) uniform ColorBlock { vec4 color1; vec4 color2; } c; vec4 getWorld(); vec4 getColor2(); out vec4 oColor; void main() { oColor = c.color1 * getColor2(); b.v1 = c.color1; gl_Position = a.uProj * getWorld(); } glslang-16.0.0/Test/link.multiBlocksValid.1.1.vert000066400000000000000000000004561506534232700215640ustar00rootroot00000000000000#version 430 layout (std140) uniform ColorBlock { vec4 color1; vec4 color2; } a; layout (std140) uniform Block { mat4 uProj; mat4 uWorld; } b; out Vertex { vec4 v1; vec4 v2; } c; in vec4 P; vec4 getColor2() { return a.color2; } vec4 getWorld() { return b.uWorld * P; c.v2 = vec4(1); } glslang-16.0.0/Test/link.multiUnitLayout.0.frag000066400000000000000000000002671506534232700213030ustar00rootroot00000000000000#version 450 layout (depth_greater) out float gl_FragDepth; void outputColor(vec4 color); void main() { outputColor(vec4(1.0, 0.0, 0.0, 1.0)); gl_FragDepth = 0.5; } glslang-16.0.0/Test/link.multiUnitLayout.0.mesh000066400000000000000000000003321506534232700213110ustar00rootroot00000000000000#version 460 #extension GL_EXT_mesh_shader : enable layout(local_size_x = 1) in; layout(max_vertices=81) out; layout(max_primitives=32) out; layout(triangles) out; void do_process(); void main() { do_process(); } glslang-16.0.0/Test/link.multiUnitLayout.0.tese000066400000000000000000000005071506534232700213210ustar00rootroot00000000000000#version 410 layout(triangles, equal_spacing, cw) in; vec4 transformPosition(vec4 position); void main() { vec4 p0 = gl_TessCoord.x * gl_in[0].gl_Position; vec4 p1 = gl_TessCoord.y * gl_in[1].gl_Position; vec4 p2 = gl_TessCoord.z * gl_in[2].gl_Position; gl_Position = transformPosition(p0 + p1 + p2); } glslang-16.0.0/Test/link.multiUnitLayout.0.vert000066400000000000000000000003271506534232700213410ustar00rootroot00000000000000#version 450 layout(xfb_buffer = 1, xfb_stride = 32) out; layout(location = 0) in vec4 in_position; vec4 computePosition(vec4 position); void main() { gl_Position = computePosition(in_position); } glslang-16.0.0/Test/link.multiUnitLayout.1.frag000066400000000000000000000001641506534232700213000ustar00rootroot00000000000000#version 450 layout(location=0) out vec4 FragColor; void outputColor(vec4 color) { FragColor = color; } glslang-16.0.0/Test/link.multiUnitLayout.1.mesh000066400000000000000000000003121506534232700213100ustar00rootroot00000000000000#version 460 #extension GL_EXT_mesh_shader : enable layout(std430) buffer DataBuffer { uint data[]; } dataBuffer; void do_process() { dataBuffer.data[gl_LocalInvocationID.x] = gl_WorkGroupID.x; } glslang-16.0.0/Test/link.multiUnitLayout.1.tese000066400000000000000000000001271506534232700213200ustar00rootroot00000000000000#version 410 vec4 transformPosition(vec4 position) { return 2.0 * position; } glslang-16.0.0/Test/link.multiUnitLayout.1.vert000066400000000000000000000001411506534232700213340ustar00rootroot00000000000000#version 450 vec4 computePosition(vec4 position) { return vec4(1.0) + 2.0 * position; } glslang-16.0.0/Test/link.multiUnitLayout.2.frag000066400000000000000000000003321506534232700212760ustar00rootroot00000000000000#version 450 // Should generate a contradictory depth layout error layout (depth_less) out float gl_FragDepth; layout(location=0) out vec4 FragColor; void outputColor(vec4 color) { FragColor = color; } glslang-16.0.0/Test/link.multiUnitLayout.2.mesh000066400000000000000000000004571506534232700213230ustar00rootroot00000000000000#version 460 #extension GL_EXT_mesh_shader : enable // Should generate a contradictory max_primitives value layout error layout(max_primitives=34) out; layout(std430) buffer DataBuffer { uint data[]; } dataBuffer; void do_process() { dataBuffer.data[gl_LocalInvocationID.x] = gl_WorkGroupID.x; } glslang-16.0.0/Test/link.multiUnitLayout.2.tese000066400000000000000000000003421506534232700213200ustar00rootroot00000000000000#version 410 // Should generate contradictory input vertex spacing and triangle ordering errors layout(triangles, fractional_even_spacing, ccw) in; vec4 transformPosition(vec4 position) { return 2.0 * position; } glslang-16.0.0/Test/link.multiUnitLayout.2.vert000066400000000000000000000003061506534232700213400ustar00rootroot00000000000000#version 450 // Should generate a contradictory xfb_stride error layout(xfb_buffer = 1, xfb_stride = 34) out; vec4 computePosition(vec4 position) { return vec4(1.0) + 2.0 * position; } glslang-16.0.0/Test/link.redeclareBuiltin.geom000066400000000000000000000005551506534232700212420ustar00rootroot00000000000000#version 410 layout(triangles) in; layout(triangle_strip, max_vertices=3) out; in gl_PerVertex { vec4 gl_Position; } gl_in[]; void main() { gl_Position = gl_in[0].gl_Position; EmitVertex(); gl_Position = gl_in[1].gl_Position; EmitVertex(); gl_Position = gl_in[2].gl_Position; EmitVertex(); EndPrimitive(); }glslang-16.0.0/Test/link.redeclareBuiltin.vert000066400000000000000000000001611506534232700212640ustar00rootroot00000000000000#version 410 out gl_PerVertex { vec4 gl_Position; }; void main() { gl_Position = vec4(1.0); }glslang-16.0.0/Test/link.tesselation.frag000066400000000000000000000003521506534232700203020ustar00rootroot00000000000000#version 440 layout(location = 0) in Primitive { vec2 texCoord; } IN; layout(location = 0) out vec4 oColor; layout(binding = 0) uniform sampler2D mytex; void main() { oColor = texture(mytex, IN.texCoord); } glslang-16.0.0/Test/link.tesselation.tesc000066400000000000000000000006101506534232700203160ustar00rootroot00000000000000#version 440 layout(location = 0) in Primitive { vec2 texCoord; } IN[]; layout(location = 0) out Primitive { vec2 texCoord; } OUT[]; layout(vertices = 3) out; void main() { OUT[gl_InvocationID].texCoord = IN[gl_InvocationID].texCoord; float tessLevel = 10.0; gl_TessLevelOuter[gl_InvocationID] = tessLevel; gl_TessLevelInner[0] = tessLevel; } glslang-16.0.0/Test/link.tesselation.tese000066400000000000000000000007731506534232700203320ustar00rootroot00000000000000#version 440 layout(location = 0) in Primitive { vec2 texCoord; } IN[]; layout(location = 0) out Primitive { vec2 texCoord; } OUT; layout(triangles, fractional_odd_spacing) in; layout(cw) in; void main() { float u = gl_TessCoord.x; float v = gl_TessCoord.y; float w = gl_TessCoord.z; vec2 newUv = vec2( u * IN[0].texCoord + v * IN[1].texCoord + w * IN[2].texCoord); OUT.texCoord = newUv; gl_Position = gl_in[gl_PatchVerticesIn].gl_Position; } glslang-16.0.0/Test/link.tesselation.vert000066400000000000000000000003531506534232700203440ustar00rootroot00000000000000#version 440 layout(location = 0) in vec4 i_Pos; layout(location = 1) in vec2 i_Tex; layout(location = 0) out Primitive { vec2 texCoord; } OUT; void main() { gl_Position = i_Pos; OUT.texCoord = i_Tex; } glslang-16.0.0/Test/link.vk.crossStageIO.0.frag000066400000000000000000000034551506534232700211010ustar00rootroot00000000000000#version 460 layout(location = 0) in BBlock0 { vec4 b0; vec4 b1; vec4 b2; vec4 b3; }; layout(location = 4) in vec4 b4[2]; layout(location = 6) in BBlock1 { vec4 b5; }; layout(location = 7) in vec4 b6[5]; layout(location = 12) in float b7[4]; layout(location = 21) in BBlock2 { vec2 b8; float b9; layout(location = 16) vec3 b10; float b11[4]; }; layout(location = 23) in BBlock3 { float b12[6]; }; layout(location = 29) in BBlock4 { float b13[]; // implicitly sized to 10 }; layout(location = 39) in BBlock5 { flat ivec2 b14; }; layout(location = 40) in mat2 b15; in flat uint b16; layout(location = 45) in BBlock6 { vec4 b17; layout(location = 43) vec4 b18; vec4 b19; }; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) in vec4 b20[4]; layout(location = 50) in BBlock7 { vec4 b21[10]; }; layout(location = 60) in vec2 b22; // automatically mapped by name in Block0 { vec4 a20; }; // automatically mapped by name in vec2 a21[2]; out vec4 o; uint uncalled() { return b16; } void main() { o = b1; o += b2; o += b3; o += b4[0]; o += b4[1]; o += b5; o += b6[0]; o += b6[1]; o += b6[2]; o += b6[3]; o += b6[4]; o += vec4(b7[0], b7[1], b7[2], b7[3]); o += b8.xxyy; o += vec4(b9); o += b10.xyzx; o += vec4(b11[0], b11[1], b11[2], b11[3]); o += vec4(b12[0], b12[1], b12[2], b12[3] + b12[4] + b12[5]); o += vec4(b13[9], b13[7], b13[6], b13[0]); if (false) { o += (b15 * vec2(1.0)).xxyy; o += b18; o += b19; } o += b20[ubo0.i]; o += b21[ubo0.i]; o += b22.xxyy; o += a20; o += vec4(a21[0], a21[1]); } glslang-16.0.0/Test/link.vk.crossStageIO.0.vert000066400000000000000000000041351506534232700211360ustar00rootroot00000000000000#version 460 layout(location = 40) out vec4 a0; layout(location = 1) out ABlock0 { vec4 a1; }; out ABlock1 { layout(location = 3) vec4 a2; layout(location = 2) vec4 a3; }; layout(location = 5) out vec4 a4[3]; layout(location = 4) out ABlock2 { vec4 a5; layout(location = 8) vec4 a6[2]; vec4 a7[2]; }; struct S { float a[3]; float b; }; layout(location = 12) out ABlock3 { float a8; layout(location = 15) vec2 a9[2]; vec4 a10[2]; layout(location = 19) S a11[2]; // consumes 8 locations }; layout(location = 27) out float a12[3]; layout(location = 30) out struct AStruct1 { vec2 a13; S a14; // consumes 4 locations mat4 a15; } s0; layout(location = 39) out float a16; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) out vec4 a17[4]; layout(location = 50) out ABlock4 { vec4 a18[10]; }; layout(location = 59) out ABlock5 { layout(location = 60) vec2 a19; }; // automatically mapped by name out Block0 { vec4 a20; }; // automatically mapped by name out vec2 a21[2]; void main() { if (false) { a0 = vec4(1.0); } a1 = vec4(0.0); a2 = vec4(0.0); a3 = vec4(0.0); a4[0] = vec4(0.0); a4[1] = vec4(0.0); a4[2] = vec4(0.0); a5 = vec4(0.0); a6[0] = vec4(0.0); a6[1] = vec4(0.0); a7[0] = vec4(0.0); a7[1] = vec4(0.0); a8 = 0.0; a9[0].x = 0.0; a9[1].y = 0.0; a10[0] = vec4(0.0); a10[1] = vec4(0.0); a11[0].a[0] = 0.0; a11[0].a[1] = 0.0; a11[0].a[2] = 0.0; a11[0].b = 0.0; a11[1].a[0] = 0.0; a11[1].a[1] = 0.0; a11[1].a[2] = 0.0; a11[1].b = 0.0; a12[0] = 0.0; a12[1] = 0.0; a12[2] = 0.0; s0.a13.y = 0.0; s0.a14.a[0] = 0.0; s0.a14.a[1] = 0.0; s0.a14.a[2] = 0.0; s0.a14.b = 0.0; s0.a15 = mat4(1.0); // a16 intentionally not written to a17[ubo0.i] = vec4(1.0); a18[5] = vec4(1.0); a19 = vec2(0.0); a20 = vec4(1.0); a21[0] = vec2(0.0); a21[1] = vec2(0.0); } glslang-16.0.0/Test/link.vk.crossStageIO.1.frag000066400000000000000000000034641506534232700211020ustar00rootroot00000000000000#version 460 layout(location = 0) in BBlock0 { vec4 b0; vec4 b1; vec4 b2; vec4 b3; }; layout(location = 4) in vec4 b4[2]; layout(location = 6) in BBlock1 { vec4 b5; }; layout(location = 7) in vec4 b6[5]; layout(location = 12) in float b7[4]; layout(location = 21) in BBlock2 { vec2 b8; float b9; layout(location = 16) vec3 b10; float b11[4]; }; layout(location = 23) in BBlock3 { float b12[6]; }; layout(location = 29) in BBlock4 { float b13[]; // implicitly sized to 10 }; layout(location = 39) in BBlock5 { flat ivec2 b14; }; layout(location = 40) in mat2 b15; in flat uint b16; layout(location = 45) in BBlock6 { vec4 b17; layout(location = 43) vec4 b18; vec4 b19; }; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) in vec4 b20[4]; layout(location = 50) in BBlock7 { vec4 b21[10]; }; layout(location = 60) in vec2 b22; // automatically mapped by name in GBlock0 { vec4 a20; }; // automatically mapped by name in vec2 g_a21[2]; out vec4 o; uint uncalled() { return b16; } void main() { o = b1; o += b2; o += b3; o += b4[0]; o += b4[1]; o += b5; o += b6[0]; o += b6[1]; o += b6[2]; o += b6[3]; o += b6[4]; o += vec4(b7[0], b7[1], b7[2], b7[3]); o += b8.xxyy; o += vec4(b9); o += b10.xyzx; o += vec4(b11[0], b11[1], b11[2], b11[3]); o += vec4(b12[0], b12[1], b12[2], b12[3] + b12[4] + b12[5]); o += vec4(b13[9], b13[7], b13[6], b13[0]); if (false) { o += (b15 * vec2(1.0)).xxyy; o += b18; o += b19; } o += b20[ubo0.i]; o += b21[ubo0.i]; o += b22.xxyy; o += a20; o += vec4(g_a21[0], g_a21[1]); } glslang-16.0.0/Test/link.vk.crossStageIO.1.geom000066400000000000000000000013411506534232700211020ustar00rootroot00000000000000#version 460 layout(triangles) in; layout(triangle_strip, max_vertices=3) out; // automatically mapped by name in Block0 { vec4 a20; } gs_in0[3]; // automatically mapped by name in vec2 a21[3][2]; // automatically mapped by name out GBlock0 { vec4 a20; } gs_out0; // automatically mapped by name out vec2 g_a21[2]; in GBlock1 { layout(location = 0) in vec4 a0[64]; } gs_in1[3]; layout(location = 0) out vec4 o0[64]; void main() { for (int i = 0; i < 32; ++i) { o0[i] = gs_in1[0].a0[i]; } gs_out0.a20 = gs_in0[0].a20; g_a21[0] = a21[0][0]; g_a21[0] = a21[0][1]; gl_Position = vec4(0); EmitVertex(); EmitVertex(); EmitVertex(); } glslang-16.0.0/Test/link.vk.crossStageIO.1.vert000066400000000000000000000041351506534232700211370ustar00rootroot00000000000000#version 460 layout(location = 40) out vec4 a0; layout(location = 1) out ABlock0 { vec4 a1; }; out ABlock1 { layout(location = 3) vec4 a2; layout(location = 2) vec4 a3; }; layout(location = 5) out vec4 a4[3]; layout(location = 4) out ABlock2 { vec4 a5; layout(location = 8) vec4 a6[2]; vec4 a7[2]; }; struct S { float a[3]; float b; }; layout(location = 12) out ABlock3 { float a8; layout(location = 15) vec2 a9[2]; vec4 a10[2]; layout(location = 19) S a11[2]; // consumes 8 locations }; layout(location = 27) out float a12[3]; layout(location = 30) out struct AStruct1 { vec2 a13; S a14; // consumes 4 locations mat4 a15; } s0; layout(location = 39) out float a16; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) out vec4 a17[4]; layout(location = 50) out ABlock4 { vec4 a18[10]; }; layout(location = 59) out ABlock5 { layout(location = 60) vec2 a19; }; // automatically mapped by name out Block0 { vec4 a20; }; // automatically mapped by name out vec2 a21[2]; void main() { if (false) { a0 = vec4(1.0); } a1 = vec4(0.0); a2 = vec4(0.0); a3 = vec4(0.0); a4[0] = vec4(0.0); a4[1] = vec4(0.0); a4[2] = vec4(0.0); a5 = vec4(0.0); a6[0] = vec4(0.0); a6[1] = vec4(0.0); a7[0] = vec4(0.0); a7[1] = vec4(0.0); a8 = 0.0; a9[0].x = 0.0; a9[1].y = 0.0; a10[0] = vec4(0.0); a10[1] = vec4(0.0); a11[0].a[0] = 0.0; a11[0].a[1] = 0.0; a11[0].a[2] = 0.0; a11[0].b = 0.0; a11[1].a[0] = 0.0; a11[1].a[1] = 0.0; a11[1].a[2] = 0.0; a11[1].b = 0.0; a12[0] = 0.0; a12[1] = 0.0; a12[2] = 0.0; s0.a13.y = 0.0; s0.a14.a[0] = 0.0; s0.a14.a[1] = 0.0; s0.a14.a[2] = 0.0; s0.a14.b = 0.0; s0.a15 = mat4(1.0); // a16 intentionally not written to a17[ubo0.i] = vec4(1.0); a18[5] = vec4(1.0); a19 = vec2(0.0); a20 = vec4(1.0); a21[0] = vec2(0.0); a21[1] = vec2(0.0); } glslang-16.0.0/Test/link.vk.differentPC.0.0.frag000066400000000000000000000004171506534232700210560ustar00rootroot00000000000000#version 450 layout(location=0) out vec4 color; layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale; } uPC; vec4 getColor2(); float getScale(); void main() { color = uPC.color + getColor2() * getScale(); } glslang-16.0.0/Test/link.vk.differentPC.0.1.frag000066400000000000000000000002511506534232700210530ustar00rootroot00000000000000#version 450 layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale; } uPC; vec4 getColor2() { return uPC.color2; } glslang-16.0.0/Test/link.vk.differentPC.0.2.frag000066400000000000000000000002541506534232700210570ustar00rootroot00000000000000#version 450 layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale2; } uPC; float getScale() { return uPC.scale2; } glslang-16.0.0/Test/link.vk.differentPC.1.0.frag000066400000000000000000000002721506534232700210560ustar00rootroot00000000000000#version 450 layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale; float scale2; } uPC; float getScale() { return uPC.scale; } glslang-16.0.0/Test/link.vk.differentPC.1.1.frag000066400000000000000000000002511506534232700210540ustar00rootroot00000000000000#version 450 layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale; } uPC; vec4 getColor2() { return uPC.color2; } glslang-16.0.0/Test/link.vk.differentPC.1.2.frag000066400000000000000000000004171506534232700210610ustar00rootroot00000000000000#version 450 layout(location=0) out vec4 color; layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale; } uPC; vec4 getColor2(); float getScale(); void main() { color = uPC.color + getColor2() * getScale(); } glslang-16.0.0/Test/link.vk.inconsistentGLPerVertex.0.geom000066400000000000000000000006771506534232700233570ustar00rootroot00000000000000#version 460 core layout(lines_adjacency) in; layout(triangle_strip, max_vertices = 50) out; in vs_output { vec4 color; } gs_in[]; out gs_output { vec4 color; } gs_out; void main() { gl_Position = gl_in[0].gl_Position; gs_out.color = gs_in[0].color; EmitVertex(); gs_out.color = gs_in[1].color; gl_Position = gl_in[1].gl_Position; EmitVertex(); gs_out.color = gs_in[0].color; gl_Position = gl_in[0].gl_Position; EmitVertex(); } glslang-16.0.0/Test/link.vk.inconsistentGLPerVertex.0.vert000066400000000000000000000006111506534232700233740ustar00rootroot00000000000000#version 460 core // This test is to test isInconsistentGLPerVertexMember() workarounds. // Without that workaround this compile fails due to block declarations // in gl_PerVertex not being consistent for: // gl_SecondaryPositionNV // gl_PositionPerViewNV out vs_output { vec4 color; } vs_out; in vec4 P; void main() { vs_out.color = vec4(1.); gl_PointSize = 1.0; gl_Position = P; } glslang-16.0.0/Test/link.vk.matchingPC.0.0.frag000066400000000000000000000004171506534232700207020ustar00rootroot00000000000000#version 450 layout(location=0) out vec4 color; layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale; } uPC; vec4 getColor2(); float getScale(); void main() { color = uPC.color + getColor2() * getScale(); } glslang-16.0.0/Test/link.vk.matchingPC.0.1.frag000066400000000000000000000002511506534232700206770ustar00rootroot00000000000000#version 450 layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale; } uPC; vec4 getColor2() { return uPC.color2; } glslang-16.0.0/Test/link.vk.matchingPC.0.2.frag000066400000000000000000000002501506534232700206770ustar00rootroot00000000000000#version 450 layout (push_constant) uniform PushConstantBlock { vec4 color; vec4 color2; float scale; } uPC; float getScale() { return uPC.scale; } glslang-16.0.0/Test/link.vk.missingCrossStageIO.0.frag000066400000000000000000000034551506534232700224330ustar00rootroot00000000000000#version 460 layout(location = 0) in BBlock0 { vec4 b0; vec4 b1; vec4 b2; vec4 b3; }; layout(location = 4) in vec4 b4[2]; layout(location = 6) in BBlock1 { vec4 b5; }; layout(location = 7) in vec4 b6[5]; layout(location = 12) in float b7[4]; layout(location = 21) in BBlock2 { vec2 b8; float b9; layout(location = 16) vec3 b10; float b11[4]; }; layout(location = 23) in BBlock3 { float b12[6]; }; layout(location = 29) in BBlock4 { float b13[]; // implicitly sized to 10 }; layout(location = 39) in BBlock5 { flat ivec2 b14; }; layout(location = 40) in mat2 b15; in flat uint b16; layout(location = 45) in BBlock6 { vec4 b17; layout(location = 43) vec4 b18; vec4 b19; }; layout(binding = 0) uniform UBO0 { int i; } ubo0; layout(location = 46) in vec4 b20[4]; layout(location = 50) in BBlock7 { vec4 b21[10]; }; layout(location = 60) in vec2 b22; // automatically mapped by name in Block0 { vec4 a20; }; // automatically mapped by name in vec2 a21[2]; out vec4 o; uint uncalled() { return b16; } void main() { o = b1; o += b2; o += b3; o += b4[0]; o += b4[1]; o += b5; o += b6[0]; o += b6[1]; o += b6[2]; o += b6[3]; o += b6[4]; o += vec4(b7[0], b7[1], b7[2], b7[3]); o += b8.xxyy; o += vec4(b9); o += b10.xyzx; o += vec4(b11[0], b11[1], b11[2], b11[3]); o += vec4(b12[0], b12[1], b12[2], b12[3] + b12[4] + b12[5]); o += vec4(b13[9], b13[7], b13[6], b13[0]); if (false) { o += (b15 * vec2(1.0)).xxyy; o += b18; o += b19; } o += b20[ubo0.i]; o += b21[ubo0.i]; o += b22.xxyy; o += a20; o += vec4(a21[0], a21[1]); } glslang-16.0.0/Test/link.vk.missingCrossStageIO.0.vert000066400000000000000000000000421506534232700224610ustar00rootroot00000000000000#version 460 void main() { } glslang-16.0.0/Test/link.vk.multiBlocksValid.0.0.vert000066400000000000000000000014441506534232700221770ustar00rootroot00000000000000#version 430 // OK: different instance names is allowed in other unit layout (std140, binding = 0) uniform MatrixBlock { mat4 uProj; mat4 uWorld; } uM; // OK: other unit has it as anonymous, but that is allowed out Vertex { vec4 v1; vec4 v2; } oV; // OK: different instance names is allowed in other unit layout (std140, binding = 1) uniform ColorBlock { vec4 color1; bool b; vec4 color2; vec4 color3; } uC; // OK: different instance names is allowed in other unit layout (std430, binding = 1) buffer BufferBlock { mat4 p; } uBuf; layout (std430, binding = 0) buffer SecondaryColorBlock { vec4 c; } uColorBuf; vec4 getWorld(); vec4 getColor2(); out vec4 oColor; void main() { oColor = uC.color1 * getColor2() * uColorBuf.c; oV.v1 = uC.color1; gl_Position = uM.uProj * getWorld(); } glslang-16.0.0/Test/link.vk.multiBlocksValid.0.1.vert000066400000000000000000000013131506534232700221730ustar00rootroot00000000000000#version 430 // OK: different instance names is allowed in other unit layout (std140, binding = 1) uniform ColorBlock { vec4 color1; bool b; vec4 color2; vec4 color3; } uColor; // OK: different instance names is allowed in other unit layout (std430, binding = 1) buffer BufferBlock { mat4 p; } uBuffer; // OK: different instance names is allowed in other unit layout (std140, binding = 0) uniform MatrixBlock { mat4 uProj; mat4 uWorld; } uMatrix; // OK, it's allowed for input/output interfaces to // be anonymous is one unit and not in another out Vertex { vec4 v1; vec4 v2; }; in vec4 P; vec4 getColor2() { return uColor.color2; } vec4 getWorld() { v1 = vec4(1); return uMatrix.uWorld * P; } glslang-16.0.0/Test/link.vk.multiBlocksValid.1.0.geom000066400000000000000000000016051506534232700221460ustar00rootroot00000000000000#version 430 layout (triangles) in; layout (triangle_strip, max_vertices = 3) out; // OK: different instance names is allowed layout (std140, binding = 0) uniform MatrixBlock { mat4 uProj; mat4 uWorld; } uM; // Verify that in/out blocks with same block name work in Vertex { vec4 v1; vec4 v2; } iV[3]; out Vertex { vec4 val1; } oV; // OK: different instance names is allowed layout (std140, binding = 1) uniform ColorBlock { vec4 color1; bool b; vec4 color2; vec4 color3; } uC; // OK: different instance names is allowed layout (std430, binding = 1) buffer BufferBlock { mat4 p; } uBuf; vec4 getWorld(int i); vec4 getColor2(); out vec4 oColor; float globalF; void main() { oColor = uC.color1 * getColor2(); globalF = 1.0; for (int i = 0; i < 3; i++) { gl_Position = uM.uProj * getWorld(i); oV.val1 = uC.color1 + iV[i].v2 * globalF; EmitVertex(); } EndPrimitive(); } glslang-16.0.0/Test/link.vk.multiBlocksValid.1.1.geom000066400000000000000000000014341506534232700221470ustar00rootroot00000000000000#version 430 layout (triangles) in; layout (triangle_strip, max_vertices = 3) out; // OK: different instance names is allowed layout (std140, binding = 1) uniform ColorBlock { vec4 color1; bool b; vec4 color2; vec4 color3; } uColor; // OK: different instance names is allowed layout (std430, binding = 1) buffer BufferBlock { mat4 p; } uBuffer; // OK: different instance names is allowed layout (std140, binding = 0) uniform MatrixBlock { mat4 uProj; mat4 uWorld; } uMatrix; // OK, it's allowed for input/output interfaces to // be anonymous is one unit and not in another out Vertex { vec4 val1; }; in Vertex { vec4 v1; vec4 v2; } iVV[]; in vec4 P[3]; vec4 getColor2() { return uColor.color2; } vec4 getWorld(int i) { val1 = vec4(1); return uMatrix.uWorld * iVV[i].v1; } glslang-16.0.0/Test/link.vk.multiUnitLayout.0.comp000066400000000000000000000002551506534232700217360ustar00rootroot00000000000000#version 450 core layout(local_size_x_id = 0, local_size_y = 1, local_size_z = 1) in; void do_compute(uint index); void main() { do_compute(gl_GlobalInvocationID.x); } glslang-16.0.0/Test/link.vk.multiUnitLayout.1.comp000066400000000000000000000002541506534232700217360ustar00rootroot00000000000000#version 450 core layout(set = 0, binding = 0) buffer DataBuf { vec4 data[]; } dataBuf; void do_compute(uint index) { dataBuf.data[index] += vec4(1.0); } glslang-16.0.0/Test/link.vk.multiUnitLayout.2.comp000066400000000000000000000004731506534232700217420ustar00rootroot00000000000000#version 450 core // Should generate a contradictory local size specialization ids error layout(local_size_x_id = 1, local_size_y = 1, local_size_z = 1) in; layout(set = 0, binding = 0) buffer DataBuf { vec4 data[]; } dataBuf; void do_compute(uint index) { dataBuf.data[index] += vec4(1.0); } glslang-16.0.0/Test/link.vk.pcNamingInvalid.0.0.vert000066400000000000000000000003771506534232700217760ustar00rootroot00000000000000#version 450 layout (push_constant) uniform Block { mat4 uWorld; mat4 uProj; vec4 color1; vec4 color2; } a; vec4 getWorld(); vec4 getColor2(); out vec4 oColor; void main() { oColor = a.color1 * getColor2(); gl_Position = a.uProj * getWorld(); } glslang-16.0.0/Test/link.vk.pcNamingInvalid.0.1.vert000066400000000000000000000003221506534232700217650ustar00rootroot00000000000000#version 450 layout (push_constant) uniform Block2 { mat4 uWorld; mat4 uProj; vec4 color1; vec4 color2; } a; in vec4 P; vec4 getColor2() { return a.color2; } vec4 getWorld() { return a.uWorld * P; } glslang-16.0.0/Test/link.vk.pcNamingValid.0.0.vert000066400000000000000000000004261506534232700214420ustar00rootroot00000000000000#version 450 layout (push_constant) uniform PCBlock { mat4 uWorld; mat4 uProj; vec4 color1; vec4 color2; } a; vec4 getWorld(); vec4 getColor2(); layout(location = 0) out vec4 oColor; void main() { oColor = a.color1 * getColor2(); gl_Position = a.uProj * getWorld(); } glslang-16.0.0/Test/link.vk.pcNamingValid.0.1.vert000066400000000000000000000003501506534232700214370ustar00rootroot00000000000000#version 450 layout (push_constant) uniform PCBlock { mat4 uWorld; mat4 uProj; vec4 color1; vec4 color2; } b; layout(location = 0) in vec4 P; vec4 getColor2() { return b.color2; } vec4 getWorld() { return b.uWorld * P; } glslang-16.0.0/Test/link1.frag000066400000000000000000000010771506534232700160370ustar00rootroot00000000000000#version 130 uniform vec4 uv4; uniform vec3 glass; const int ci = 8; vec4 a = ci * uv4; in vec3 iv3; in vec4 cup; void main() { } vec4 b = ci * a; ivec2 foo(mat2 m) { return ivec2(m[0]); } vec4 c = b * b; const vec3 cv3 = vec3(43.0, 0.34, 9.9); const vec3 cv3n = vec3(43.0, 0.34, 9.9); const vec3 cv3e = vec3(43.0, 0.34, 9.9); uniform mat2 um2 = mat2(4.0); uniform mat2 um2n = mat2(4.0); uniform mat2 um2e = mat2(4.0); struct S { int a; float b; }; uniform S s = S(82, 3.9); uniform S sn; uniform S se = S(82, 3.9); glslang-16.0.0/Test/link1.vk.frag000066400000000000000000000006231506534232700164520ustar00rootroot00000000000000#version 450 vec4 getColor(); layout(location=0) out vec4 color; int a1[]; // max size from link1 int a2[]; // max size from link2 int b[5]; int c[]; int i; layout (binding = 0) buffer bnameRuntime { float r[]; }; layout (binding = 1) buffer bnameImplicit { float m[]; }; void main() { color = getColor(); a1[8] = 1; a2[1] = 1; b[i] = 1; c[3] = 1; } glslang-16.0.0/Test/link2.frag000066400000000000000000000011271506534232700160340ustar00rootroot00000000000000#version 130 uniform vec4 uv4; uniform vec2 glass; const int ci = 8; vec4 d = ci * uv4; in vec3 iv3; flat in vec4 cup; vec4 e = ci * d; ivec2 foo() { return ivec2(2); } vec4 f = e * e; const vec3 cv3 = vec3(43.0, 0.34, 9.9); const vec3 cv3e = vec3(43.0, 0.34, 2.9); uniform mat2 um2 = mat2(4.0); uniform mat2 um2n; uniform mat2 um2e = mat2(3.0); struct S { int a; float b; }; uniform S s = S(82, 3.9); uniform S sn = S(82, 3.9); uniform S se = S(81, 3.9); #extension GL_OES_texture_3D : enable #extension GL_OES_standard_derivatives : enable glslang-16.0.0/Test/link2.vk.frag000066400000000000000000000006451506534232700164570ustar00rootroot00000000000000#version 450 layout(binding=1) uniform sampler2D s2D; int a1[]; // max size from link1 int a2[]; // max size from link2 int b[]; int c[7]; int i; layout (binding = 0) buffer bnameRuntime { float r[]; }; layout (binding = 1) buffer bnameImplicit { float m[4]; }; vec4 getColor() { a1[2] = 1; a2[9] = 1; b[2] = 1; c[3] = 1; c[i] = 1; return texture(s2D, vec2(0.5)); } glslang-16.0.0/Test/link3.frag000066400000000000000000000003051506534232700160320ustar00rootroot00000000000000#version 300 es precision highp float; in vec2 iv3; #extension GL_OES_standard_derivatives : enable #extension GL_OES_EGL_image_external : require #extension GL_OES_texture_3D : enable glslang-16.0.0/Test/liveTraverser.switch.vert000066400000000000000000000053741506534232700212230ustar00rootroot00000000000000#version 460 layout(location = 0) in vec4 a0; // accessed layout(location = 1) in vec4 a1; // accessed layout(location = 2) in vec4 a2; // accessed layout(location = 3) in vec4 a3; // accessed layout(location = 4) in vec4 a4; // accessed layout(location = 5) in vec4 a5; // accessed layout(location = 6) in vec4 a6; // accessed layout(location = 7) in vec4 a7; // accessed layout(location = 8) in vec4 a8; // accessed layout(location = 9) in vec4 a9; // accessed layout(location = 10) in vec4 a10; // accessed layout(location = 11) in vec4 n0; // not accessed layout(location = 12) in vec4 n1; // not accessed layout(location = 13) in vec4 n2; // not accessed layout(location = 14) in vec4 n3; // not accessed layout(location = 15) in vec4 n4; // not accessed layout(location = 16) in vec4 n5; // not accessed layout(location = 17) in vec4 n6; // not accessed layout(location = 18) in vec4 n7; // not accessed layout(location = 19) in vec4 n8; // not accessed layout(location = 20) in vec4 n9; // not accessed void main() { // empty case is live switch (2) { case 2: break; case 1: gl_Position = n0; } // empty default case is live switch (3) { default: break; case 1: gl_Position = n1; } // no live case switch (3) { case 2: // fallthrough case 1: gl_Position = n2; } // ensure break is handled correctly switch (1) { case -1: gl_Position = n3; break; case 1: gl_Position = a0; break; gl_Position = n4; case 0: gl_Position = n5; } const int cx = 1; // signed/unsigned mismatch switch (cx) { case uint(1): gl_Position = a1; } // signed/unsigned conversion switch (-1) { case ~uint(0): gl_Position = a2; } // const variable case switch (1) { case cx: gl_Position = a3; break; case -1: gl_Position = n6; } // fallthrough with const variable switch (cx) { default: // fallthrough case 2: gl_Position = a4; } // non-trivial constant expression switch (((cx + 1) * 2) - 3) { case 1: gl_Position = a5; break; case 2: gl_Position = n7; } // expression as case switch (5 + 3) { case 6 + 2: gl_Position = a6; break; case 5 + 2: gl_Position = n8; break; } int x = 2; // liveness of non-const variables cannot be deduced switch (x) { case 1: gl_Position = a7; break; case 2: gl_Position = a8; break; } // const and non-const expression switch (cx + x) { case 1: gl_Position = a9; break; case 3: gl_Position = a10; break; } }glslang-16.0.0/Test/localAggregates.frag000066400000000000000000000021261506534232700201010ustar00rootroot00000000000000#version 130 uniform sampler2D sampler; varying vec2 coord; varying vec4 color; struct s1 { int i; float f; }; struct s2 { int i; float f; s1 s1_1; vec4 bleh; }; struct s3 { s2 s2_1; int i; float f; s1 s1_1; }; uniform s1 foo; uniform s2 foo2; uniform s3 foo3; uniform float[16] uFloatArray; uniform int condition; void main() { s2 locals2; s3 locals3; float localFArray[16]; int localIArray[8]; locals2 = foo3.s2_1; if (foo3.s2_1.i > 0) { locals2.s1_1.f = 1.0; localFArray[4] = coord.x; localIArray[2] = foo3.s2_1.i; } else { locals2.s1_1.f = coord.x; localFArray[4] = 1.0; localIArray[2] = 0; } if (localIArray[2] == 0) ++localFArray[4]; float localArray[16]; int x = 5; localArray[x] = coord.x; float[16] a; for (int i = 0; i < 16; i++) a[i] = 0.0; if (condition == 1) a = localArray; locals2.bleh = color; locals2.bleh.z = coord.y; gl_FragColor = locals2.bleh * (localFArray[4] + locals2.s1_1.f + localArray[x] + a[x]) * texture2D(sampler, coord); } glslang-16.0.0/Test/location_aliasing.tesc000066400000000000000000000004251506534232700205130ustar00rootroot00000000000000#version 430 core #extension GL_ARB_enhanced_layouts : require layout(vertices = 1) out; layout (location = 1, component = 0) in double gohan[]; layout (location = 1, component = 2) in float goten[]; in vec4 vs_tcs[]; out vec4 tcs_tes[]; void main() { }glslang-16.0.0/Test/location_aliasing1.frag000066400000000000000000000003161506534232700205540ustar00rootroot00000000000000#version 430 core #extension GL_ARB_enhanced_layouts : require layout (location = 1, component = 0) in smooth float in1; layout (location = 1, component = 2) in flat float in2; void main() { }glslang-16.0.0/Test/loops.frag000066400000000000000000000141401506534232700161500ustar00rootroot00000000000000#version 130 uniform vec4 bigColor; uniform vec4 bigColor1_1; uniform vec4 bigColor1_2; uniform vec4 bigColor1_3; uniform vec4 bigColor2; uniform vec4 bigColor3; uniform vec4 bigColor4; uniform vec4 bigColor5; uniform vec4 bigColor6; uniform vec4 bigColor7; uniform vec4 bigColor8; varying vec4 BaseColor; uniform float d; uniform float d2; uniform float d3; uniform float d4; uniform float d5; uniform float d6; uniform float d7; uniform float d8; uniform float d9; uniform float d10; uniform float d11; uniform float d12; uniform float d13; uniform float d14; uniform float d15; uniform float d16; uniform float d17; uniform float d18; uniform float d19; uniform float d20; uniform float d21; uniform float d22; uniform float d23; uniform float d24; uniform float d25; uniform float d26; uniform float d27; uniform float d28; uniform float d29; uniform float d30; uniform float d31; uniform float d32; uniform float d33; uniform float d34; uniform int Count; void main() { vec4 color = BaseColor; // Not a real loop while (true) { if (color.x < 0.33) { color += vec4(0.33); break; } if (color.x < 0.66) { color += vec4(0.66); break; } color += vec4(0.33); break; } // While while (color.x < d) { color += bigColor; } // While (latchy) while (color.z < d) { color += bigColor1_1; if (color.w < d) continue; color += bigColor1_1; } // While (constant) while (color.x < 42.0) { ++color; } // While (complicated-conditional) while (color.w < d2 && color.y < d3) { color += bigColor1_2; } // While (multi-exit) while (color.z < d3) { color += bigColor1_3; if (color.y < d4) break; color += bigColor1_3; } // For (dynamic) for (int i = 0; i < Count; ++i) { color += bigColor2; } // Do while do { color += bigColor3; } while (color.x < d2); // For (static) for (int i = 0; i < 42; ++i) { color.z += d3; } // For (static) flow-control for (int i = 0; i < 100; ++i) { if (color.z < 20.0) color.x++; else color.y++; if (color.w < 20.0) if (color.z > color.y) 0; // do nothing } // For (static) flow-control with latch merge for (int i = 0; i < 120; ++i) { if (color.z < 20.0) color.x++; else color.y++; } // For (static) latchy for (int i = 0; i < 42; ++i) { color.z += d3; if (color.x < d4) continue; ++color.w; } // For (static) multi-exit for (int i = 0; i < 42; ++i) { color.z += d3; if (color.x < d4) break; ++color.w; } // Latchy do { color += bigColor4; if (color.x < d4) continue; if (color.y < d4) color.y += d4; else color.x += d4; } while (color.z < d4); // Do while flow control do { color += bigColor5; if (color.y < d5) color.y += d5; } while (color.x < d5); // If then loop if (color.x < d6) { while (color.y < d6) color += bigColor6; } else { while (color.z < d6) color.z += bigColor6.z; } // If then multi-exit if (color.x < d6) { while (color.y < d6) { color += bigColor6; if (d7 < 1.0) break; } } else { while (color.z < d6) color.z += bigColor6.z; } // Multi-exit do { if (d7 < 0.0) break; color += bigColor7; if (d7 < 1.0) { color.z++; break; } color += BaseColor; } while (true); // Multi-exit2 do { // invariant conditional break at the top of the loop. This could be a // situation where unswitching the loop has no real increases in code // size. if (d8 < 0.0) break; color += bigColor7; if (d8 < 1.0) { color.z++; if (d8 < 2.0) { color.y++; } else { color.x++; } break; } color += BaseColor; } while (color.z < d8); // Deep exit while (color.w < d9) { if (d9 > d8) { if (color.x <= d7) { if (color.z == 5.0) color.w++; else break; } } } // No end loop-back. while (color.z < d10) { color.y++; if (color.y < d11) { color.z++; if (color.w < d12) color.w++; else color.x++; continue; } color++; break; } // Multi-continue while (color.x < 10.0) { color += bigColor8; if (color.z < d8) if (color.w < d6) continue; color.y += bigColor8.x; } color++; gl_FragColor = color; // Early Return while (color.x < d14) { if (color.y < d15) { return; } else color++; } color++; while (color.w < d16) { color.w++; } // While (complicated-conditional) while (color.w < d2 && color.y < d3) { color += bigColor1_2; if (color.z < d3) return; } do { if (color.y < d18) return; color++; } while (color.x < d17); // Early Discard while (color.y < d16) { if (color.w < d16) { discard; } else color++; } color++; gl_FragColor = color; } glslang-16.0.0/Test/loopsArtificial.frag000066400000000000000000000036301506534232700201420ustar00rootroot00000000000000#version 130 uniform vec4 bigColor; uniform vec4 bigColor1_1; uniform vec4 bigColor1_2; uniform vec4 bigColor1_3; uniform vec4 bigColor2; uniform vec4 bigColor3; uniform vec4 bigColor4; uniform vec4 bigColor5; uniform vec4 bigColor6; uniform vec4 bigColor7; uniform vec4 bigColor8; varying vec4 BaseColor; uniform float d; uniform float d2; uniform float d3; uniform float d4; uniform float d5; uniform float d6; uniform float d7; uniform float d8; uniform float d9; uniform float d10; uniform float d11; uniform float d12; uniform float d13; uniform float d14; uniform float d15; uniform float d16; uniform float d17; uniform float d18; uniform float d19; uniform float d20; uniform float d21; uniform float d22; uniform float d23; uniform float d24; uniform float d25; uniform float d26; uniform float d27; uniform float d28; uniform float d29; uniform float d30; uniform float d31; uniform float d32; uniform float d33; uniform float d34; uniform int Count; void main() { vec4 color = BaseColor; // Latchy2 do { color += bigColor4; if (color.x < d4) { color.z += 2.0; if (color.z < d4) { color.x++; continue; } } if (color.y < d4) color.y += d4; else color.x += d4; } while (color.z < d4); // Immediate dominator while (color.w < d13) { if (color.z < d13) color++; else color--; // code from Latchy 2 color += bigColor4; if (color.x < d4) { color.z += 2.0; if (color.z < d4) { color.x++; continue; } } if (color.y < d4) color.y += d4; else color.x += d4; } color++; gl_FragColor = color; } glslang-16.0.0/Test/mains.frag000066400000000000000000000000731506534232700161230ustar00rootroot00000000000000#version 300 es void main() { } void main() { } glslang-16.0.0/Test/mains1.frag000066400000000000000000000000431506534232700162010ustar00rootroot00000000000000#version 110 void main() { } glslang-16.0.0/Test/mains2.frag000066400000000000000000000000431506534232700162020ustar00rootroot00000000000000#version 110 void main() { } glslang-16.0.0/Test/matrix.frag000066400000000000000000000022521506534232700163210ustar00rootroot00000000000000#version 130 //#define TEST_POST_110 uniform mat3 colorTransform; varying vec3 Color; uniform mat4 m, n; #ifdef TEST_POST_110 uniform mat4x3 um43; uniform mat3x4 un34; #else uniform mat4 um43; uniform mat4 un34; #endif varying vec4 v; #ifdef TEST_POST_110 varying vec3 u; #else varying vec4 u; #endif void main() { gl_FragColor = vec4(un34[1]); gl_FragColor += vec4(Color * colorTransform, 1.0); if (m != n) gl_FragColor += v; else { gl_FragColor += m * v; gl_FragColor += v * (m - n); } #ifdef TEST_POST_110 mat3x4 m34 = outerProduct(v, u); m34 += mat4(v.x); m34 += mat4(u, u.x, u, u.x, u, u.x, u.x); #else mat4 m34 = mat4(v.x*u.x, v.x*u.y, v.x*u.z, v.x*u.w, v.y*u.x, v.y*u.y, v.y*u.z, v.y*u.w, v.z*u.x, v.z*u.y, v.z*u.z, v.z*u.w, v.w*u.x, v.w*u.y, v.w*u.z, v.w*u.w); m34 += mat4(v.x); m34 += mat4(u, u.x, u, u.x, u, u.x, u.x); #endif if (m34 == un34) gl_FragColor += m34 * u; else gl_FragColor += (un34 * um43) * v; mat4x2 m42 = mat4x2(42); if (m42 == mat4x2(42, 0, 0, 42, 0, 0, 0, 0)) { gl_FragColor += v; } } glslang-16.0.0/Test/matrix2.frag000066400000000000000000000017731506534232700164120ustar00rootroot00000000000000#version 150 uniform mat3 colorTransform; varying vec3 Color; uniform mat4 m, n; uniform mat4x3 um43; uniform mat3x4 un34; uniform mat2 um2; uniform mat3 um3; uniform mat4 um4; varying vec4 v; varying vec3 u; out vec4 FragColor; void main() { mat3x4 m34 = outerProduct(v, u); m34 += mat3x4(4.3); FragColor = vec4(Color, 1.0); FragColor *= vec4(FragColor * m34, 1.0); m34 *= v.x; mat4 m44 = mat4(un34); m44 += m34 * um43; FragColor += (-m44) * v; FragColor *= matrixCompMult(m44, m44); m34 = transpose(um43); FragColor *= vec4(FragColor * m34, 1.0); FragColor *= vec4(determinant(um4)); mat2 inv = inverse(um2); FragColor *= vec4(inv[0][0], inv[1][0], inv[0][1], inv[1][1]); mat3 inv3 = inverse(um3); FragColor *= vec4(inv3[2][1]); mat4 inv4 = inverse(um4); FragColor *= inv4; FragColor = vec4(FragColor * matrixCompMult(un34, un34), FragColor.w); m34 *= colorTransform; } glslang-16.0.0/Test/matrixCompMult.vert000066400000000000000000000030401506534232700200370ustar00rootroot00000000000000#version 460 precision highp float; precision highp int; out float o1; void main() { const mat2 cval = matrixCompMult(mat2(1.0), mat2(1.0)); const mat3 cval1 = matrixCompMult(mat3(1.0), mat3(1.0)); const mat4 cval2 = matrixCompMult(mat4(1.0), mat4(1.0)); const mat2x3 cval3 = matrixCompMult(mat2x3(1.0), mat2x3(1.0)); const mat2x4 cval4 = matrixCompMult(mat2x4(1.0), mat2x4(1.0)); const mat3x2 cval5 = matrixCompMult(mat3x2(1.0), mat3x2(1.0)); const mat3x4 cval6 = matrixCompMult(mat3x4(1.0), mat3x4(1.0)); const mat4x2 cval7 = matrixCompMult(mat4x2(1.0), mat4x2(1.0)); const mat4x3 cval8 = matrixCompMult(mat4x3(1.0), mat4x3(1.0)); const dmat2 cval9 = matrixCompMult(dmat2(1.0), dmat2(1.0)); const dmat3 cval10 = matrixCompMult(dmat3(1.0), dmat3(1.0)); const dmat4 cval11 = matrixCompMult(dmat4(1.0), dmat4(1.0)); const dmat2x3 cval12 = matrixCompMult(dmat2x3(1.0), dmat2x3(1.0)); const dmat2x4 cval13 = matrixCompMult(dmat2x4(1.0), dmat2x4(1.0)); const dmat3x2 cval14 = matrixCompMult(dmat3x2(1.0), dmat3x2(1.0)); const dmat3x4 cval15 = matrixCompMult(dmat3x4(1.0), dmat3x4(1.0)); const dmat4x2 cval16 = matrixCompMult(dmat4x2(1.0), dmat4x2(1.0)); const dmat4x3 cval17 = matrixCompMult(dmat4x3(1.0), dmat4x3(1.0)); o1 = float(cval[0][0] + cval1[0][0] + cval2[0][0] + cval3[0][0] + cval4[0][0] + cval5[0][0] + cval6[0][0] + cval7[0][0] + cval8[0][0] + cval9[0][0] + cval10[0][0] + cval11[0][0] + cval12[0][0] + cval13[0][0] + cval14[0][0] + cval15[0][0] + cval16[0][0] + cval17[0][0]); } glslang-16.0.0/Test/matrixError.vert000066400000000000000000000012131506534232700173700ustar00rootroot00000000000000#version 120 attribute vec3 v3; uniform mat3x2 m32; const mat2x4 m24 = mat2x4(1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 3.0, 4.0, 5.0); // ERROR, too many arguments void main() { mat2x3 m23; vec3 a, b; a = v3 * m23; // ERROR, type mismatch b = m32 * v3; // ERROR, type mismatch m23.xy; // ERROR, can't use . gl_Position = vec4(m23 * m32 * v3, m24[2][4]); // ERROR, 2 and 4 are out of range m23 *= m23; // ERROR, right side needs to be square m23 *= m32; // ERROR, left columns must match right rows } glslang-16.0.0/Test/maxClipDistances.vert000066400000000000000000000001351506534232700203070ustar00rootroot00000000000000#version 130 out float gl_ClipDistance[8]; // OK, 8 is gl_MaxClipDistances void main() { } glslang-16.0.0/Test/max_vertices_0.geom000066400000000000000000000003341506534232700177340ustar00rootroot00000000000000#version 330 layout(points) in; layout(triangle_strip, max_vertices = 0) out; in highp vec4 v_geom_FragColor[]; out highp vec4 v_frag_FragColor; void main (void) { EndPrimitive(); EndPrimitive(); } glslang-16.0.0/Test/missingBodies.vert000066400000000000000000000004411506534232700176530ustar00rootroot00000000000000#version 450 void bar(); void foo() { bar(); } void B(); void C(int); void C(int, int) { } void C(bool); void A() { B(); C(1); C(true); C(1, 2); } void main() { foo(); C(true); } int ret1(); int f1 = ret1(); int ret2() { return 3; } int f2 = ret2(); glslang-16.0.0/Test/mixedArrayDecls.frag000066400000000000000000000006641506534232700201020ustar00rootroot00000000000000#version 450 struct S { int[3] a[2], b[5]; }; S s; int[5] c[4], d[8]; int[9] e[], f[]; int e[11][9]; int f[13][9]; int[14] g[], h[]; int [14][15][6] foo(int[6] p[14][15]) { return p; } void main() { g[3]; h[2]; } float[4][3][2] bar() { float[3][2] a[4]; return a; } in inbname { float[7] f[8][9]; } inbinst[4][5][6]; float[3][2] barm[4]() { float[3][2] a[4]; return a; } // ERROR glslang-16.0.0/Test/negativeArraySize.comp000066400000000000000000000002131506534232700204630ustar00rootroot00000000000000#version 310 es #ifdef GL_ES precision mediump float; #endif void main() { float f[-2]; // cannot declare arrays with negative size } glslang-16.0.0/Test/negativeWorkGroupSize.comp000066400000000000000000000003601506534232700213470ustar00rootroot00000000000000#version 460 void fn(){ uvec3 wgs = gl_WorkGroupSize; // error: fixed workgroup size has not been declared } layout(local_size_x = 64) in; // declare workgroup size void main(){ fn(); uvec3 wgs = gl_WorkGroupSize; // valid } glslang-16.0.0/Test/newTexture.frag000066400000000000000000000040711506534232700171700ustar00rootroot00000000000000#version 430 uniform samplerBuffer sb; uniform sampler2DRect sr; uniform sampler2D s2D; uniform sampler3D s3D; uniform samplerCube sCube; uniform samplerCubeShadow sCubeShadow; uniform sampler2DShadow s2DShadow; uniform sampler2DArray s2DArray; uniform sampler2DArrayShadow s2DArrayShadow; uniform isampler2D is2D; uniform isampler3D is3D; uniform isamplerCube isCube; uniform isampler2DArray is2DArray; uniform isampler2DMS is2Dms; uniform usampler2D us2D; uniform usampler3D us3D; uniform usamplerCube usCube; uniform usampler2DArray us2DArray; in float c1D; in vec2 c2D; in vec3 c3D; in vec4 c4D; flat in int ic1D; flat in ivec2 ic2D; flat in ivec3 ic3D; flat in ivec4 ic4D; out vec4 FragData; void main() { vec4 v = texture(s2D, c2D); v += textureProj(s3D, c4D); v += textureLod(s2DArray, c3D, 1.2); v.y += textureOffset(s2DShadow, c3D, ivec2(3), c1D); v += texelFetch(s3D, ic3D, ic1D); v += texelFetchOffset(s2D, ic2D, 4, ivec2(3)); v += texelFetchOffset(sr, ic2D, ivec2(4)); v.y += textureLodOffset(s2DShadow, c3D, c1D, ivec2(3)); v += textureProjLodOffset(s2D, c3D, c1D, ivec2(3)); v += textureGrad(sCube, c3D, c3D, c3D); v.x += textureGradOffset(s2DArrayShadow, c4D, c2D, c2D, ivec2(3)); v += textureProjGrad(s3D, c4D, c3D, c3D); v += textureProjGradOffset(s2D, c3D, c2D, c2D, ivec2(3)); ivec4 iv = texture(is2D, c2D); v += vec4(iv); iv = textureProjOffset(is2D, c4D, ivec2(3)); v += vec4(iv); iv = textureProjLod(is2D, c3D, c1D); v += vec4(iv); iv = textureProjGrad(is2D, c3D, c2D, c2D); v += vec4(iv); iv = texture(is3D, c3D, 4.2); v += vec4(iv); iv = textureLod(isCube, c3D, c1D); v += vec4(iv); iv = texelFetch(is2DArray, ic3D, ic1D); v += vec4(iv); iv += texelFetch(is2Dms, ic2D, ic1D); v += vec4(iv); v += texelFetch(sb, ic1D); v += texelFetch(sr, ic2D); ivec2 iv2 = textureSize(sCubeShadow, 2); // iv2 += textureSize(is2Dms); FragData = v + vec4(iv2, 0.0, 0.0); } glslang-16.0.0/Test/noMain.vert000066400000000000000000000000451506534232700162750ustar00rootroot00000000000000#version 300 es void foo() { } glslang-16.0.0/Test/noMain1.geom000066400000000000000000000000671506534232700163310ustar00rootroot00000000000000#version 110 void foo() { } layout(points) out;glslang-16.0.0/Test/noMain2.geom000066400000000000000000000000751506534232700163310ustar00rootroot00000000000000#version 150 void bar() { } layout(line_strip) out; glslang-16.0.0/Test/noMatchingFunction.frag000066400000000000000000000003131506534232700206060ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/nonSquare.vert000066400000000000000000000010231506534232700170240ustar00rootroot00000000000000#version 120 attribute vec3 v3; attribute vec4 v4; uniform mat3x2 m32; const vec2 cv2 = vec2(10.0, 20.0); const mat2x4 m24 = mat2x4(3.0); const mat4x2 m42 = mat4x2(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); void main() { mat2x3 m23; vec2 a, b; a = v3 * m23; b = m32 * v3; gl_Position = vec4(m23 * m32 * v3, m24[1][3]) + (m24 * m42) * v4 + cv2 * m42 + m24 * cv2 + vec4(cv2[1], cv2.x, m42[2][1], m42[2][0]); } glslang-16.0.0/Test/nonVulkan.frag000066400000000000000000000004461506534232700167730ustar00rootroot00000000000000#version 450 layout(constant_id = 17) const int arraySize = 12; // ERROR layout(input_attachment_index = 1) int foo; // ERROR layout(push_constant) uniform ubn { int a; } ubi; // ERROR #ifdef VULKAN #error VULKAN should not be defined #endif glslang-16.0.0/Test/nonuniform.frag000066400000000000000000000017651506534232700172170ustar00rootroot00000000000000#version 450 int nonuniformEXT; #extension GL_EXT_nonuniform_qualifier : enable nonuniformEXT in vec4 nu_inv4; nonuniformEXT float nu_gf; nonuniformEXT out vec4 nu_outv4; // ERROR, out nonuniformEXT uniform vec4 nu_uv4; // ERROR, uniform nonuniformEXT const float nu_constf = 1.0; // ERROR, const nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f) { return nupi; } void main() { nonuniformEXT int nu_li; nonuniformEXT const int nu_ci = 2; // ERROR, const foo(nu_li, nu_li); int table[5]; int a; nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2); nu_li = nonuniformEXT(a, a); // ERROR, too many arguments nu_li = nonuniformEXT(); // ERROR, no arguments nu_li = table[nonuniformEXT(3)]; } layout(location=1) in struct S { float a; nonuniformEXT float b; } ins; // ERROR, not on member layout(location=3) in inbName { float a; nonuniformEXT float b; } inb; // ERROR, not on member glslang-16.0.0/Test/nosuffix000066400000000000000000000000571506534232700157410ustar00rootroot00000000000000void main() { gl_Position = vec4(1.0); }glslang-16.0.0/Test/numeral.frag000066400000000000000000000052441506534232700164640ustar00rootroot00000000000000#version 400 void main() { int o00 = 00; int o000 = 000; int o0000 = 0000; int o5 = 05; int o05 = 005; int o006 = 0006; int o7 = 07; int o58 = 072; int omax = 037777777777; int o8 = 08; // ERROR int o08 = 008; // ERROR int o009 = 0009; // ERROR int obig = 07324327323472347234; // ERROR int omax1 = 040000000000; // ERROR uint uo5 = 05u; uint uo6 = 06u; uint uo7 = 07u; uint uo8 = 08u; // ERROR uint uo9 = 09u; // ERROR int h0 = 0x0; int h00 = 0x00; int h000 = 0x000; int h1 = 0x1; int h2 = 0x00000002; int h300 = 0x000300; int hABCDEF = 0xAbCdEF; int hFFFFFFFF = 0xFFFFFFFF; int h12345678 = 0xBC614E; int hToBeOrNotToBe = 0x2b | ~0x2B; uint uh0 = 0x0u; uint uhg = (0xcu); uint uh000 = 0x000u; uint uh1 = 0x1u; uint uh2 = 0x00000002u; uint uh300 = 0x000300u; uint uhABCDEF = 0xAbCdEFu; uint uhFFFFFFFF = 0xFFFFFFFFu; uint uh12345678 = 0xBC614Eu; uint uhToBeOrNotToBe = 0x2bu | ~0x2BU; //int he1 = 0xG; // ERROR int he2 = 0x; // ERROR int hbig = 0xFFFFFFFF1; // ERROR float f1 = 1.0; float f2 = 2.; float f3 = 3e0; float f4 = 40e-1; float f5 = 05.; float f6 = 006.; float f7 = .7e1; float f8 = 08e0; float f9 = .9e+1; float f10 = 10.0; float f11 = .011e+3; float f12 = .0012e4; float f543 = 000000543.; float f6789 = 00006789.; float f88 = 0000088.; float g1 = 5.3876e4; float g2 = 4000000000e-11; float g3 = 1e+5; float g4 = 7.321E-3; float g5 = 3.2E+4; float g6 = 0.5e-5; float g7 = 0.45; float g8 = 6.e10; double gf1 = 1.0lf; double gf2 = 2.Lf; double gf3 = .3e1lF; double gf4 = .4e1LF; float gf5 = 5.f; float gf6 = 6.F; //float e1 = 1..; // ERROR //float e2 = 2.l; // ERROR //float e3 = ..3; // ERROR //float e4 = 4ee1; // ERROR float e5 = 5f; // ERROR } layout (location = 2) out vec4 c2; layout (location = 3u) out vec4 c3; layout (location = 04) out vec4 c4; layout (location = 005u) out vec4 c5; layout (location = 0x6) out vec4 c6; layout (location = 0x7u) out vec4 c7; uint g1 = 4294967296u; // ERROR, too big uint g2 = 4294967295u; uint g3 = 4294967294u; int g4 = 4294967296; // ERROR, too big int g5 = 4294967295; int g6 = 4294967294; float inf1 = -1.#INF; float inf2 = 1.#INF; float inf3 = +1.#INF; glslang-16.0.0/Test/nvShaderNoperspectiveInterpolation.frag000066400000000000000000000003471506534232700241110ustar00rootroot00000000000000#version 300 es precision mediump float; noperspective in vec4 bad; // ERROR #extension GL_NV_shader_noperspective_interpolation : enable noperspective in vec4 color; out vec4 fragColor; void main() { fragColor = color; }glslang-16.0.0/Test/overflow_underflow_toinf_0.frag000066400000000000000000000010211506534232700223540ustar00rootroot00000000000000#version 320 es precision highp float; out vec4 my_FragColor; void main() { // GLSL ES 3.00.6 section 4.1.4 Floats: // "A value with a magnitude too small to be represented as a mantissa and exponent is converted to zero." // 1.0e-50 is small enough that it can't even be stored as subnormal. float correct = (1.0e-50 == 0.0) ? 1.0 : 0.0; float correct1 = isinf(1.0e40) ? 1.0 : 0.0; vec4 foo = vec4(1.0e-50, -1.0e-50, 1.0e50, -1.0e50); my_FragColor = vec4(0.0, correct, correct1, 1.0); } glslang-16.0.0/Test/overlongLiteral.frag000066400000000000000000000020031506534232700201570ustar00rootroot000000000000000x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; glslang-16.0.0/Test/parent.h000066400000000000000000000000131506534232700156070ustar00rootroot00000000000000float4 i4; glslang-16.0.0/Test/parentBad000066400000000000000000000000351506534232700157740ustar00rootroot00000000000000int a; #error bad parent glslang-16.0.0/Test/pointCoord.frag000066400000000000000000000003541506534232700171360ustar00rootroot00000000000000precision highp float; uniform sampler2D sampler; void main() { vec4 color; if (length(gl_PointCoord) < 0.3) color = texture2D(sampler, gl_PointCoord); else color = vec4(0.0); gl_FragColor = color; } glslang-16.0.0/Test/positive_infinity.frag000066400000000000000000000007061506534232700205720ustar00rootroot00000000000000#version 300 es precision highp float; out vec4 my_FragColor; void main() { // Out-of-range floats should overflow to infinity // GLSL ES 3.00.6 section 4.1.4 Floats: // "If the value of the floating point number is too large (small) to be stored as a single precision value, it is converted to positive (negative) infinity" float correct = isinf(1.0e2147483649) ? 1.0 : 0.0; my_FragColor = vec4(0.0, correct, 0.0, 1.0); } glslang-16.0.0/Test/precise.tesc000066400000000000000000000052671506534232700164770ustar00rootroot00000000000000#version 450 #extension GL_EXT_tessellation_shader : require #extension GL_EXT_gpu_shader5 : require float minimal() { precise float result = 5.0; float a = 10.0; float b = 20.0; float c = 30.0; float d = 40.0; result = a * b + c * d; // c * d, a * b and rvalue1 + rvalue2 should be 'noContraction'. return result; } void continuous_assignment() { precise float result = 5.0; float a = 10.0; float b = 20.0; result = a = b + 4; // b + 4 should be 'noContraction'. } void convert() { precise double result; float a = 10.0; float b = 20.0; b = a + b; // a + b should be 'noContraction'. result = double(b); // convert operation should not be 'noContraction'. } float loop_for() { precise float r1 = 5.0; precise float r2 = 10.0; int a = 10; int b = 20; int c = 30; for (int i = 0; i < a; i++) { r1 += 3.12 + b + i; // 'noContration', this make i++ also 'noContraction' c += 1; // 'noContration' } a += 1; // a + 1 should not be 'noContraction'. r2 = c; // The calculation of c should be 'noContration'. return float(r1 + r2); // conversion should not be 'noContration'. } void loop_array(void) { precise float result; int x = 22; int y = 33; float a0[3]; result += float(x) + float(y); // x + y should be 'noContraction' also result + rvalue. for (int i = 0; i < 3; ++i) { // a's dereference + 2 should be 'noContraction'. result += a0[i] + 2; // result + 1 and 3 - rvalue should be 'noContraction'. a0[i] = 3 - result++; } } void loop_while() { precise float result = 5.0; int a = 10; int b = 20; while (result < 10) { result += 3.12 + b; // result + 3.12 should be 'noContraction'. } result = a + b + 5; // b + 5 should not be 'noCtraction' because all operands are integers. result = 11.1; } float fma_not_decorated() { precise float result; float a = 1.0; float b = 2.0; float c = 3.0; b = b + c; // b + c should be decorated with 'noContraction' result = fma(a, b, c); // fma() should not be decorated with 'noContradtion' return result; } precise float precise_return_exp_func() { float a = 1.0; float b = 2.0; return a + b; // the ADD operation should be 'noContraction' } precise float precise_return_val_func() { float a = 1.0; float b = 2.0; float result = a + b; // the ADD operation should be 'noContraction' return result; } float precise_func_parameter(float b, precise out float c) { float a = 0.5; c = a + b; // noContration return a - b; // Not noContraction } mat3 matrix (mat2x3 a, mat3x2 b) { mat2x3 c = mat2x3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0); precise mat3 result; result = (a + c) * b; // should be noContraction return result; } void main(){} glslang-16.0.0/Test/precise_struct_block.vert000066400000000000000000000043401506534232700212660ustar00rootroot00000000000000#version 450 struct T { float f1; float f2; }; out B1 {precise T s; float x;} partial_precise_block; precise out B2 {T s; float x;} all_precise_block; float struct_member() { float a = 1.0; float b = 2.0; float c = 3.0; float d = 4.0; precise float result; T S, S2, S3; S2.f1 = a + 0.2; // NoContraction S2.f2 = b + 0.2; // NOT NoContraction S3.f1 = a + b; // NOT NoContraction S = S2; // "precise" propagated through parent object nodes result = S.f1 + 0.1; // the ADD operation should be NoContraction return result; } float complex_array_struct() { precise float result; struct T1 { float t1_array[3]; float t1_scalar; }; struct T2 { T1 t1a[5]; T1 t1b[6]; T1 t1c[7]; }; struct T3 {float f; T2 t2; vec4 v; int p;}; T3 t3[10]; for(int i=0; i<10; i++) { t3[i].f = i / 3.0; // Not NoContraction t3[i].v = vec4(i * 1.5); // NoContraction t3[i].p = i + 1; for(int j=0; j<5; j++) { for(int k = 0; k<3; k++) { t3[i].t2.t1a[j].t1_array[k] = i * j + k; // Not NoContraction } t3[i].t2.t1a[j].t1_scalar = j * 2.0 / i; // Not NoContration } for(int j=0; j<6; j++) { for(int k = 0; k<3; k++) { t3[i].t2.t1b[j].t1_array[k] = i * j + k; // Not NoContraction } t3[i].t2.t1b[j].t1_scalar = j * 2.0 / i; // NoContraction } for(int j=0; j<6; j++) { for(int k = 0; k<3; k++) { t3[i].t2.t1c[j].t1_array[k] = i * j + k; // Not NoContraction because all operands are integers } t3[i].t2.t1c[j].t1_scalar = j * 2.0 / i; // Not NoContraction } } int i = 2; result = t3[5].t2.t1c[6].t1_array[1] + t3[2].t2.t1b[1].t1_scalar + t3[i - 1].v.xy.x; // NoContraction return result; } float out_block() { float a = 0.1; float b = 0.2; partial_precise_block.s.f1 = a + b; // NoContraction partial_precise_block.s.f2 = a - b; // NoContraction partial_precise_block.x = a * b; // Not NoContraction all_precise_block.s.f1 = a + b + 1.0; // NoContraction all_precise_block.s.f2 = a - b - 1.0; // NoContraction all_precise_block.x = a * b * 2.0; // Also NoContraction return a + b; // Not NoContraction } void main(){} glslang-16.0.0/Test/precision.frag000066400000000000000000000035641506534232700170170ustar00rootroot00000000000000#version 100 varying vec3 color; // ERRROR, there is no default qualifier for float lowp vec2 foo(mediump vec3 mv3) { highp vec4 hv4; return hv4.xy; } int global_medium; uniform lowp sampler2D samplerLow; uniform mediump sampler2D samplerMed; uniform highp sampler2D samplerHigh; precision highp int; precision highp ivec2; // ERROR precision mediump int[2]; // ERROR vec4 uint; // okay precision mediump vec4; // ERROR int global_high; void main() { lowp int sum = global_medium + global_high; gl_FragColor = vec4(color, 1.0); int level1_high; sum += level1_high; precision lowp int; int level1_low; sum += level1_low; // test maxing precisions of args to get precision of builtin lowp float arg1; mediump float arg2; lowp float d = distance(arg1, arg2); { int level2_low; sum += level2_low; precision highp int; int level2_high; sum += level2_high; do { if (true) { precision mediump int; int level4_medium; sum += level4_medium; } int level3_high; sum += level3_high; } while (true); int level2_high2; sum += level2_high2; } int level1_low3; sum += level1_low3; sum += 4 + ((ivec2(level1_low3) * ivec2(level1_high) + ivec2((/* comma operator */level1_low3, level1_high)))).x; texture2D(samplerLow, vec2(0.1, 0.2)); texture2D(samplerMed, vec2(0.1, 0.2)); texture2D(samplerHigh, vec2(0.1, 0.2)); } precision mediump bool; // ERROR //precision mediump struct { int a; } s; // ERROR struct s {int a;}; precision mediump s; // ERROR mediump bvec2 b2; // ERROR glslang-16.0.0/Test/precision.vert000066400000000000000000000011211506534232700170430ustar00rootroot00000000000000#version 300 es in vec4 pos; uniform sampler2D s2D; uniform samplerCube sCube; uniform isampler2DArray is2DAbad; // ERROR, no default precision uniform sampler2DArrayShadow s2dASbad; // ERROR, no default precision precision highp sampler2D; precision mediump sampler2DArrayShadow; uniform sampler2DArrayShadow s2dAS; uniform isampler2DArray is2DAbad2; // ERROR, still no default precision uniform sampler2D s2Dhigh; void main() { vec4 t = texture(s2D, vec2(0.1, 0.2)); t += texture(s2Dhigh, vec2(0.1, 0.2)); t += texture(s2dAS, vec4(0.5)); gl_Position = pos; } glslang-16.0.0/Test/prepost.frag000066400000000000000000000013531506534232700165120ustar00rootroot00000000000000#version 140 void main() { struct s { float y[5]; } str; float t; int index = 5; // all indexing is 4 str.y[4] = 2.0; // 2.0 t = ++str.y[--index]; // 3.0 str.y[4] += t; // 6.0 t = str.y[4]--; // 5.0 (t = 6.0) str.y[index++] += t; // 11.0 --str.y[--index]; // 10.0 float x = str.y[4]; ++x; --x; x++; x--; // x is 10.0 float y = x * ++x; // 10 * 11 float z = y * x--; // 110 * 11 // x is 10.0 // z is 1210.0 vec4 v = vec4(1.0, 2.0, 3.0, 4.0); v.y = v.z--; // (1,3,2,4) v.x = --v.w; // (3,3,2,3) gl_FragColor = z * v;// (3630.0, 3630.0, 2420.0, 3630.0) } glslang-16.0.0/Test/preprocess.arb_shading_language_include.vert000066400000000000000000000002471506534232700250530ustar00rootroot00000000000000#version 150 #extension GL_ARB_shading_language_include : enable #define float4 vec4 #include "bar.h" out vec4 color; void main() { color = i1 + vec4(1.0); } glslang-16.0.0/Test/preprocess.inactive_stringify.vert000077500000000000000000000007461506534232700231530ustar00rootroot00000000000000#version 460 // This tests that the preprocessor error // "error: '#' : (#) can be preceded in its line only by spaces or horizontal tab" // isn't enforced when inactive (e.g. inside #if 0) #if 0 #define STRINGIFY(X) #X #endif #define C 0 #if 1 #ifdef A #elif defined B #elif C // OK, since preprocessor evaluates to inactive #define STRINGIFY(X) #X #endif #endif // OK in comments // #define STRINGIFY(X) #X void main() { gl_Position = vec4(1.0); }glslang-16.0.0/Test/preprocess.include_directive_missing_extension.vert000066400000000000000000000000601506534232700265430ustar00rootroot00000000000000#version 150 #include "bar.h" void main() {} glslang-16.0.0/Test/preprocessor.bad_arg.vert000066400000000000000000000002531506534232700211610ustar00rootroot00000000000000#define M(a) a int M(aou = 2) // Okay, one argument, split across newline ; // end of file during an argument #define EXP2(a, b) EXP2(((((1,2,3,4))), ); glslang-16.0.0/Test/preprocessor.cpp_style___FILE__.vert000066400000000000000000000005431506534232700232010ustar00rootroot00000000000000#extension GL_GOOGLE_cpp_style_line_directive : enable __FILE__ #line 150 "a.h" __FILE__ #line 24 __FILE__ #line 42 __FILE__ #line 30 "b.cc" __FILE__ #line 10 3 __FILE__ #line 48 __FILE__ #line 4 __FILE__ #line 55 100 __FILE__ #line 1000 "c" __FILE__ #line 42 1 __FILE__ #line 42 "this-is-a-quite-long-name-maybe-i-should-shorten-it" __FILE__ glslang-16.0.0/Test/preprocessor.cpp_style_line_directive.vert000066400000000000000000000010011506534232700246410ustar00rootroot00000000000000#extension GL_GOOGLE_cpp_style_line_directive : enable #error at "0:3" #line 150 "a.h" #error at "a.h:150" #line 24 #error at "a.h:24" #line 42 #error at "a.h:42" #line 30 "b.cc" #error at "b.cc:30" #line 10 3 #error at "3:10" #line 48 #error at "3:48" #line 4 #error at "3:4" #line 55 100 #error at "100:55" #line 1000 "c" #error at "c:1000" #line 42 1 #error at "1:42" #line 42 "this-is-a-quite-long-name-maybe-i-should-shorten-it" #error at "this-is-a-quite-long-name-maybe-i-should-shorten-it:42" glslang-16.0.0/Test/preprocessor.defined.vert000066400000000000000000000001251506534232700211760ustar00rootroot00000000000000#define defined_not_really #define defined // ERROR: "defined" can't be (un)defined: glslang-16.0.0/Test/preprocessor.edge_cases.vert000066400000000000000000000003431506534232700216640ustar00rootroot00000000000000#version 310 es #define X(Y) /* */ Y + 2 #define Y(Z) 2 * Z// asdf #define Z(Y) /* */ \ 2 /* */ + 3 \ * Y void main() { gl_Position = vec4(X(3) + Y(4) + Z(2)); } glslang-16.0.0/Test/preprocessor.eof_missing.vert000066400000000000000000000000051506534232700220770ustar00rootroot00000000000000noEOFglslang-16.0.0/Test/preprocessor.errors.vert000066400000000000000000000004221506534232700211140ustar00rootroot00000000000000#version 310 es #define X 1 #if X #ifdef Y #error This should not show up in pp output. #endif #error This should show up in pp output. #else #error This should not show up in pp output. #endif #def X #if Y #extension a int main() { } glslang-16.0.0/Test/preprocessor.extensions.vert000066400000000000000000000004011506534232700217740ustar00rootroot00000000000000#version 310 es #extension GL_EXT_geometry_shader: enable #extension GL_EXT_frag_depth: disable #extension GL_EXT_gpu_shader5: require #extension GL_EXT_shader_texture_image_samples: warn #extension unknown_extension: require int main() { } glslang-16.0.0/Test/preprocessor.function_macro.vert000066400000000000000000000007771506534232700226230ustar00rootroot00000000000000#version 310 es #define X(n) n + 1 #define Y(n, z) n + z #define Z(f) X(f) #define REALLY_LONG_MACRO_NAME_WITH_MANY_PARAMETERS(X1, X2, X3, X4, X5, X6, X7,\ X8, X9, X10, X11, X12) X1+X2+X3+X4+X5+X6+X7+X8+X9+X10+X11+X12 #define A(\ Y\ )\ 4 + 3 + Y #define F F.a int main() { gl_Position = vec4(X(3), Y(3, 4), Z(3)); gl_Position = vec4(REALLY_LONG_MACRO_NAME_WITH_MANY_PARAMETERS(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)); gl_Position = vec4(A(3)); gl_Position = A(F); } glslang-16.0.0/Test/preprocessor.include.disabled.vert000066400000000000000000000001301506534232700227650ustar00rootroot00000000000000#line 8000 #include #include 123 #include "foo" #include "foo" garbage #include "no-eol"glslang-16.0.0/Test/preprocessor.include.enabled.vert000066400000000000000000000046151506534232700226240ustar00rootroot00000000000000#extension GL_GOOGLE_include_directive : enable #line 8000 #include #include 123 #include "foo.oeu" #include "foo.oeu/ao eu/ao.h" #include "foo" #include #include #include #include "foo.oe>" #include #include "foo2.h" garbage #include garbage // max length #include // too long #include #include "no-eol"glslang-16.0.0/Test/preprocessor.line.frag000066400000000000000000000000731506534232700204700ustar00rootroot00000000000000#version 310 es #line 1 2 #pragma something void main() {} glslang-16.0.0/Test/preprocessor.line.vert000066400000000000000000000004741506534232700205360ustar00rootroot00000000000000#line 300 #line 2 #line __LINE__ + 3 #line __FILE__ + 2 #line __FILE__ * __LINE__ #define X 4 #line X #undef X #define X(y) y + 3 + 2 #line X(3) void main() { gl_Position = vec4(__LINE__); } #line X(3) 4 #define Z(y, q) \ y*q*2 q #line Z(2, 3) #line 1 glslang-16.0.0/Test/preprocessor.many.endif.vert000066400000000000000000000000741506534232700216330ustar00rootroot00000000000000#endif #endif #endif #endif #endif #endif #endif #if #else glslang-16.0.0/Test/preprocessor.pragma.vert000066400000000000000000000002541506534232700210520ustar00rootroot00000000000000#version 310 es #pragma optimize(on) #pragma optimize(off) #pragma debug(on) #pragma debug(off) #pragma undefined_pragma(x, 4) #pragma once int main() { } glslang-16.0.0/Test/preprocessor.simple.vert000066400000000000000000000020441506534232700210730ustar00rootroot00000000000000#version 310 es #define X 1 #define Y clamp #define Z X #define F 1, 2 #define make_function \ float fn ( float x ) \ {\ return x + 4.0; \ } make_function int main() { gl_Position = vec4(X); gl_Position = Y(1, 2, 3); gl_Position = vec4(Z); gl_Position = vec4(F); gl_Position = vec4(fn(3)); [] . ++ -- + - * % / - ! ~ << >> < > <= >= == != & ^ | && ^^ || ? : += -= *= /= %= <<= >>= &= |= ^= 1.2 2E10 5u -5lf } struct S { int member1; float member2; vec4 member3; }; #define xyz xxyz #define yzy() yyz #define FUN_MAC() \ vec3 a = vec3(0); \ vec3 b = a.zxyz; \ vec3 b = a.xyz; \ vec3 b = a.yzy(); \ vec3 b = a.xyz(); \ vec3 b = a.yzy; \ vec3 b = a.z; void bar(int x) {} void foo() { S s; s.member2 + s.member1; s.member3.zyx; s.member2.xyz; s.member2.yzy(); s.member2.xyz(); s.member2.yzy; for(int i = 0;i < 100; i = i + 1) { bar (i) } FUN_MAC() yzy (); yzy } glslang-16.0.0/Test/preprocessor.success_if_parse_would_fail.vert000066400000000000000000000000601506534232700253230ustar00rootroot00000000000000int x() { something that shouldnt compile; } glslang-16.0.0/Test/ps_sample.frag000066400000000000000000000004601506534232700167770ustar00rootroot00000000000000#version 430 core #extension GL_ARB_enhanced_layouts : require layout (location = 1, component = 0) flat in uint gohan; layout (location = 1, component = 2) sample flat in uvec2 goten; in vec4 gs_fs; out vec4 fs_out; void main() { vec4 result = gs_fs; fs_out = result; } glslang-16.0.0/Test/ps_uint_int.frag000066400000000000000000000002071506534232700173460ustar00rootroot00000000000000#version 450 layout(location=0, component=0) flat in uint u; layout(location=0, component=1) flat in int i; void main() { } glslang-16.0.0/Test/rayQuery-OpConvertUToAccelerationStructureKHR.comp000066400000000000000000000004541506534232700260240ustar00rootroot00000000000000#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); }glslang-16.0.0/Test/rayQuery-allOps.Error.rgen000066400000000000000000000125361506534232700212000ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable struct Ray { vec3 pos; float tmin; vec3 dir; float tmax; }; layout(std430, set = 0, binding = 0) buffer Log { uint x; uint y; }; layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas; layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; }; void doSomething() { x = 0; y = 0; } Ray makeRayDesc() { Ray ray; ray.pos= vec3(0,0,0); ray.dir = vec3(1,0,0); ray.tmin = 0.0f; ray.tmax = 9999.0; return ray; } void main() { Ray ray = makeRayDesc(); rayQueryEXT rayQuery; rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, 0xFF, ray.pos, ray.tmin, ray.dir, ray.tmax); mat4x3 _mat4x3; mat3x4 _mat3x4; while (rayQueryProceedEXT(rayQuery) == 1) { int candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, false); switch(candidateType) { case gl_RayQueryCandidateIntersectionTriangleEXT: rayQueryTerminateEXT(rayQuery); _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); rayQueryConfirmIntersectionEXT(rayQuery); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true) == 1) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true) == 0) { doSomething(); } if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionTEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true)) { doSomething(); } break; case gl_RayQueryCandidateIntersectionAABBEXT: { _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); if (rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery)) { doSomething(); } int t = 1; rayQueryGenerateIntersectionEXT(rayQuery, t); rayQueryTerminateEXT(rayQuery); break; } } } if(_mat3x4[0][0] == _mat4x3[0][0]) { doSomething(); } int committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, true); switch(committedStatus) { case gl_RayQueryCommittedIntersectionNoneEXT : _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); break; case gl_RayQueryCommittedIntersectionTriangleEXT : _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true); _mat3x4 = transpose(_mat4x3); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true) == 0) { doSomething(); } break; case gl_RayQueryCommittedIntersectionGeneratedEXT : if(rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionInstanceIdEXT(rayQuery, true)) { doSomething(); } if(rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true)) { doSomething(); } if(rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true)) { doSomething(); } if(rayQueryGetIntersectionTEXT(rayQuery, true)) { doSomething(); } break; } if (_mat3x4[0][0] == _mat4x3[0][0]) { doSomething(); } if (rayQueryGetRayFlagsEXT(rayQuery)) { doSomething(); } if (rayQueryGetRayTMinEXT(rayQuery)) { doSomething(); } vec3 o = rayQueryGetWorldRayOriginEXT(rayQuery); vec3 d = rayQueryGetWorldRayDirectionEXT(rayQuery); if (o.x == d.z) { doSomething(); } } glslang-16.0.0/Test/rayQuery-allOps.comp000066400000000000000000000134661506534232700201160ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_query : enable #extension GL_EXT_ray_flags_primitive_culling : enable #extension GL_EXT_ray_tracing_position_fetch : enable layout(primitive_culling); struct Ray { vec3 pos; float tmin; vec3 dir; float tmax; }; layout(std430, set = 0, binding = 0) buffer Log { uint x; uint y; }; layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas; layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; }; void doSomething() { x = 0; y = 0; } Ray makeRayDesc() { Ray ray; ray.pos= vec3(0,0,0); ray.dir = vec3(1,0,0); ray.tmin = 0.0f; ray.tmax = 9999.0; return ray; } void main() { Ray ray = makeRayDesc(); rayQueryEXT rayQuery; rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, 0xFF, ray.pos, ray.tmin, ray.dir, ray.tmax); mat4x3 _mat4x3; mat3x4 _mat3x4; while (rayQueryProceedEXT(rayQuery)) { uint candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, false); switch(candidateType) { case gl_RayQueryCandidateIntersectionTriangleEXT: rayQueryTerminateEXT(rayQuery); _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); rayQueryConfirmIntersectionEXT(rayQuery); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).x == 0) { doSomething(); } if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).x > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0) { doSomething(); } if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f) { doSomething(); } if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true) > 0) { doSomething(); } break; case gl_RayQueryCandidateIntersectionAABBEXT: { _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); if (rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery)) { doSomething(); } float t = 0.5; rayQueryGenerateIntersectionEXT(rayQuery, t); rayQueryTerminateEXT(rayQuery); break; } } } if(_mat3x4[0][0] == _mat4x3[0][0]) { doSomething(); } uint committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, true); switch(committedStatus) { case gl_RayQueryCommittedIntersectionNoneEXT : _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); break; case gl_RayQueryCommittedIntersectionTriangleEXT : _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true); _mat3x4 = transpose(_mat4x3); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).y == 0) { doSomething(); } { vec3 positions[3]; rayQueryGetIntersectionTriangleVertexPositionsEXT(rayQuery, true, positions); if (positions[0].x < 0 && positions[2].y > 0) { doSomething(); } } break; case gl_RayQueryCommittedIntersectionGeneratedEXT : if(rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).z > 0) { doSomething(); } if(rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0) { doSomething(); } if(rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f) { doSomething(); } break; } if (_mat3x4[0][0] == _mat4x3[0][0]) { doSomething(); } if (rayQueryGetRayFlagsEXT(rayQuery) > gl_RayFlagsSkipTrianglesEXT) { doSomething(); } if (rayQueryGetRayTMinEXT(rayQuery) > 0.0) { doSomething(); } vec3 o = rayQueryGetWorldRayOriginEXT(rayQuery); vec3 d = rayQueryGetWorldRayDirectionEXT(rayQuery); if (o.x == d.z) { doSomething(); } } glslang-16.0.0/Test/rayQuery-allOps.frag000066400000000000000000000126301506534232700200670ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable struct Ray { vec3 pos; float tmin; vec3 dir; float tmax; }; layout(std430, set = 0, binding = 0) buffer Log { uint x; uint y; }; layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas; layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; }; void doSomething() { x = 0; y = 0; } Ray makeRayDesc() { Ray ray; ray.pos= vec3(0,0,0); ray.dir = vec3(1,0,0); ray.tmin = 0.0f; ray.tmax = 9999.0; return ray; } void main() { Ray ray = makeRayDesc(); rayQueryEXT rayQuery; rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, 0xFF, ray.pos, ray.tmin, ray.dir, ray.tmax); mat4x3 _mat4x3; mat3x4 _mat3x4; while (rayQueryProceedEXT(rayQuery)) { uint candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, false); switch(candidateType) { case gl_RayQueryCandidateIntersectionTriangleEXT: rayQueryTerminateEXT(rayQuery); _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); rayQueryConfirmIntersectionEXT(rayQuery); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).x == 0) { doSomething(); } if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).x > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0) { doSomething(); } if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f) { doSomething(); } if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true) > 0) { doSomething(); } break; case gl_RayQueryCandidateIntersectionAABBEXT: { _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); if (rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery)) { doSomething(); } float t = 0.5; rayQueryGenerateIntersectionEXT(rayQuery, t); rayQueryTerminateEXT(rayQuery); break; } } } if(_mat3x4[0][0] == _mat4x3[0][0]) { doSomething(); } uint committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, true); switch(committedStatus) { case gl_RayQueryCommittedIntersectionNoneEXT : _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); break; case gl_RayQueryCommittedIntersectionTriangleEXT : _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true); _mat3x4 = transpose(_mat4x3); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).y == 0) { doSomething(); } break; case gl_RayQueryCommittedIntersectionGeneratedEXT : if(rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).z > 0) { doSomething(); } if(rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0) { doSomething(); } if(rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f) { doSomething(); } break; } if (_mat3x4[0][0] == _mat4x3[0][0]) { doSomething(); } if (rayQueryGetRayFlagsEXT(rayQuery) > 0) { doSomething(); } if (rayQueryGetRayTMinEXT(rayQuery) > 0.0) { doSomething(); } vec3 o = rayQueryGetWorldRayOriginEXT(rayQuery); vec3 d = rayQueryGetWorldRayDirectionEXT(rayQuery); if (o.x == d.z) { doSomething(); } } glslang-16.0.0/Test/rayQuery-allOps.rgen000066400000000000000000000126301506534232700201030ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable struct Ray { vec3 pos; float tmin; vec3 dir; float tmax; }; layout(std430, set = 0, binding = 0) buffer Log { uint x; uint y; }; layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas; layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; }; void doSomething() { x = 0; y = 0; } Ray makeRayDesc() { Ray ray; ray.pos= vec3(0,0,0); ray.dir = vec3(1,0,0); ray.tmin = 0.0f; ray.tmax = 9999.0; return ray; } void main() { Ray ray = makeRayDesc(); rayQueryEXT rayQuery; rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, 0xFF, ray.pos, ray.tmin, ray.dir, ray.tmax); mat4x3 _mat4x3; mat3x4 _mat3x4; while (rayQueryProceedEXT(rayQuery)) { uint candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, false); switch(candidateType) { case gl_RayQueryCandidateIntersectionTriangleEXT: rayQueryTerminateEXT(rayQuery); _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); rayQueryConfirmIntersectionEXT(rayQuery); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).x == 0) { doSomething(); } if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).x > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0) { doSomething(); } if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0) { doSomething(); } if (rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f) { doSomething(); } if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true) > 0) { doSomething(); } break; case gl_RayQueryCandidateIntersectionAABBEXT: { _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); if (rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery)) { doSomething(); } float t = 0.5; rayQueryGenerateIntersectionEXT(rayQuery, t); rayQueryTerminateEXT(rayQuery); break; } } } if(_mat3x4[0][0] == _mat4x3[0][0]) { doSomething(); } uint committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, true); switch(committedStatus) { case gl_RayQueryCommittedIntersectionNoneEXT : _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, false); _mat3x4 = transpose(_mat4x3); break; case gl_RayQueryCommittedIntersectionTriangleEXT : _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true); _mat3x4 = transpose(_mat4x3); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true)) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).y == 0) { doSomething(); } break; case gl_RayQueryCommittedIntersectionGeneratedEXT : if(rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).z > 0) { doSomething(); } if(rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0) { doSomething(); } if(rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0) { doSomething(); } if(rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f) { doSomething(); } break; } if (_mat3x4[0][0] == _mat4x3[0][0]) { doSomething(); } if (rayQueryGetRayFlagsEXT(rayQuery) > 0) { doSomething(); } if (rayQueryGetRayTMinEXT(rayQuery) > 0.0) { doSomething(); } vec3 o = rayQueryGetWorldRayOriginEXT(rayQuery); vec3 d = rayQueryGetWorldRayDirectionEXT(rayQuery); if (o.x == d.z) { doSomething(); } } glslang-16.0.0/Test/rayQuery-committed.Error.rgen000066400000000000000000000060121506534232700217230ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable struct Ray { vec3 pos; float tmin; vec3 dir; float tmax; }; layout(std430, set = 0, binding = 0) buffer Log { uint x; uint y; }; layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas; layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; }; void doSomething() { x = 0; y = 0; } uint launchIndex() { return gl_LaunchIDNV.z*gl_LaunchSizeNV.x*gl_LaunchSizeNV.y + gl_LaunchIDNV.y*gl_LaunchSizeNV.x + gl_LaunchIDNV.x; } void main() { uint index = launchIndex(); Ray ray = rays[index]; rayQueryEXT rayQuery; bool committed_true = true; bool committed_false = false; rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullBackFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax); while (rayQueryProceedEXT(rayQuery)) { mat4x3 mat_o2w; mat4x3 mat_w2o; uint candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, committed_false); if (candidateType == gl_RayQueryCandidateIntersectionTriangleEXT) { rayQueryTerminateEXT(rayQuery); mat_o2w = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, committed_false); mat_w2o = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, committed_false); rayQueryConfirmIntersectionEXT(rayQuery); if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, committed_true)) { doSomething(); } if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, committed_true).x == 0) { doSomething(); } if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, committed_true) > 0) { doSomething(); } if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, committed_true) > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, committed_true).x > 0) { doSomething(); } if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, committed_true).x > 0) { doSomething(); } if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, committed_true) > 0) { doSomething(); } if (rayQueryGetIntersectionTEXT(rayQuery, committed_true) > 0.f) { doSomething(); } if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, committed_true) > 0) { doSomething(); } } } uint committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, committed_true); if (committedStatus == gl_RayQueryCommittedIntersectionGeneratedEXT) { if (rayQueryGetIntersectionGeometryIndexEXT(rayQuery, committed_true) > 0) { doSomething(); } } } glslang-16.0.0/Test/rayQuery-global.rgen000066400000000000000000000014671506534232700201170ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_query : enable #extension GL_EXT_ray_flags_primitive_culling : enable layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas; rayQueryEXT rqGlobal; void otherWrapper(rayQueryEXT rq) { rayQueryProceedEXT(rq); rayQueryProceedEXT(rqGlobal); } void wrapper(rayQueryEXT rq) { rayQueryEXT rq2; rayQueryProceedEXT(rq); rayQueryProceedEXT(rqGlobal); otherWrapper(rq); otherWrapper(rq2); otherWrapper(rqGlobal); } void main() { rayQueryInitializeEXT(rqGlobal, rtas, gl_RayFlagsNoneEXT, 0xFF, vec3(0,0,0), 0.0, vec3(1,0,0), 1.0); wrapper(rqGlobal); otherWrapper(rqGlobal); rayQueryEXT rq2; rayQueryInitializeEXT(rq2, rtas, gl_RayFlagsNoneEXT, 0xFF, vec3(0,0,0), 0.0, vec3(1,0,0), 1.0); wrapper(rq2); otherWrapper(rq2); } glslang-16.0.0/Test/rayQuery-initialization.Error.comp000066400000000000000000000001731506534232700227720ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_query : enable void main () { rayQueryEXT foo; rayQueryEXT bar = foo; }glslang-16.0.0/Test/rayQuery-initialize.rgen000066400000000000000000000016221506534232700210110ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable struct Ray { vec3 pos; float tmin; vec3 dir; float tmax; }; layout(binding = 0, set = 0) uniform accelerationStructureEXT rtas; layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; }; uint launchIndex() { return gl_LaunchIDNV.z*gl_LaunchSizeNV.x*gl_LaunchSizeNV.y + gl_LaunchIDNV.y*gl_LaunchSizeNV.x + gl_LaunchIDNV.x; } void doInitialize(rayQueryEXT rayQuery, Ray ray) { rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, gl_RayFlagsCullBackFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax); } void main() { uint index = launchIndex(); Ray ray = rays[index]; rayQueryEXT rayQuery; doInitialize(rayQuery, ray); rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullFrontFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax); } glslang-16.0.0/Test/rayQuery-no-cse.rgen000066400000000000000000000017221506534232700200350ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable struct Ray { vec3 pos; float tmin; vec3 dir; float tmax; }; layout(binding = 0, set = 0) uniform accelerationStructureEXT rtas; layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; }; uint launchIndex() { return gl_LaunchIDNV.z*gl_LaunchSizeNV.x*gl_LaunchSizeNV.y + gl_LaunchIDNV.y*gl_LaunchSizeNV.x + gl_LaunchIDNV.x; } void doInitialize(rayQueryEXT rayQuery, Ray ray) { rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, gl_RayFlagsCullBackFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax); } void main() { uint index = launchIndex(); Ray ray = rays[index]; rayQueryEXT rayQuery1; rayQueryEXT rayQuery2; doInitialize(rayQuery1, ray); rayQueryInitializeEXT(rayQuery1, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullFrontFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax); doInitialize(rayQuery2, ray); } glslang-16.0.0/Test/rayQuery-types.comp000066400000000000000000000044421506534232700200220ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_query : require layout(local_size_x = 16, local_size_y = 8, local_size_z = 1) in; layout(binding = 0, set = 0) uniform accelerationStructureEXT tlas; void main() { rayQueryEXT rayQuery; rayQueryInitializeEXT(rayQuery, // Ray query tlas, // Top-level acceleration structure 0, // Ray flags 0xFF, // 8-bit instance mask vec3(0), // Ray origin 0.0, // Minimum t-value vec3(1, 0, 0), // Ray direction 10000.0); // Maximum t-value // yes this is silly, just want to verify the return types bool rq_proceed = rayQueryProceedEXT(rayQuery); while(rq_proceed) { rq_proceed = rayQueryProceedEXT(rayQuery); } const uint intersectionType = rayQueryGetIntersectionTypeEXT(rayQuery, true); const float rayTMin = rayQueryGetRayTMinEXT(rayQuery); const uint rayFlags = rayQueryGetRayFlagsEXT(rayQuery); const vec3 worldRayOrigin = rayQueryGetWorldRayOriginEXT(rayQuery); const vec3 worldDirection = rayQueryGetWorldRayDirectionEXT(rayQuery); const float intersectionT = rayQueryGetIntersectionTEXT(rayQuery, true); const int customIndex = rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true); const int instanceId = rayQueryGetIntersectionInstanceIdEXT(rayQuery, true); const uint sbtOffset = rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true); const int geometryIndex = rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true); const int primitiveIndex = rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true); const vec2 barys = rayQueryGetIntersectionBarycentricsEXT(rayQuery, true); const bool frontface = rayQueryGetIntersectionFrontFaceEXT(rayQuery, true); const bool aabbOpaque = rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery); const vec3 objRayDirection = rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true); const vec3 objRayOrigin = rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true); const mat4x3 objToWorld = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, true); const mat4x3 worldToObj = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true); } glslang-16.0.0/Test/rayQuery.rgen000066400000000000000000000011141506534232700166460ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT acc0; layout(shaderRecordNV) buffer block { vec3 dir; vec3 origin; }; void main() { rayQueryEXT localRayQuery; uint rayFlags = gl_RayFlagsOpaqueEXT | gl_RayFlagsSkipClosestHitShaderEXT; float tMin = 0.f; float tMax = 1000.f; rayQueryInitializeEXT(localRayQuery, acc0, rayFlags, 0xFF , origin, tMin, dir, tMax); if (!rayQueryProceedEXT(localRayQuery)) { rayQueryTerminateEXT(localRayQuery); } } glslang-16.0.0/Test/recurse1.frag000066400000000000000000000015311506534232700165450ustar00rootroot00000000000000#version 330 core // cross-unit recursion void main() {} // two-level recursion float cbar(int); void cfoo(float) { cbar(2); } // four-level, out of order void CB(); void CD(); void CA() { CB(); } void CC() { CD(); } // high degree void CBT(); void CDT(); void CAT() { CBT(); CBT(); CBT(); } void CCT() { CDT(); CDT(); CBT(); } // not recursive void norA() {} void norB() { norA(); } void norC() { norA(); } void norD() { norA(); } void norE() { norB(); } void norF() { norB(); } void norG() { norE(); } void norH() { norE(); } void norI() { norE(); } // not recursive, but with a call leading into a cycle if ignoring direction void norcA() { } void norcB() { norcA(); } void norcC() { norcB(); } void norcD() { norcC(); norcB(); } // head of cycle void norcE() { norcD(); } // lead into cycle glslang-16.0.0/Test/recurse1.vert000066400000000000000000000010171506534232700166050ustar00rootroot00000000000000#version 330 core void main() {} float bar(int); // direct recursion void self() { self(); } // two-level recursion void foo(float) { bar(2); } float bar(int) { foo(4.2); return 3.2; } // four-level, out of order void B(); void D(); void A() { B(); } void C() { D(); } void B() { C(); } void D() { A(); } // high degree void BT(); void DT(); void AT() { BT(); BT(); BT(); } void CT() { DT(); AT(); DT(); BT(); } void BT() { CT(); CT(); CT(); } void DT() { AT(); } glslang-16.0.0/Test/recurse2.frag000066400000000000000000000005401506534232700165450ustar00rootroot00000000000000#version 330 core // cross-unit recursion // two-level recursion void cfoo(float); float cbar(int) { cfoo(4.2); return 3.2; } // four-level, out of order void CA(); void CC(); void CB() { CC(); } void CD() { CA(); } // high degree void CAT(); void CCT(); void CBT() { CCT(); CCT(); CCT(); } void CDT() { CAT(); } glslang-16.0.0/Test/reflection.frag000066400000000000000000000001211506534232700171400ustar00rootroot00000000000000#version 440 core in float inval; void main() { float f = inval; } glslang-16.0.0/Test/reflection.linked.frag000066400000000000000000000005161506534232700204150ustar00rootroot00000000000000#version 440 core layout(binding = 0, std140) uniform ubo_block { float unused_uniform; float shared_uniform; float vsonly_uniform; float fsonly_uniform; } ubo; in float vertout; out float fragout; void main() { fragout = vertout; fragout += ubo.shared_uniform; fragout += ubo.fsonly_uniform; } glslang-16.0.0/Test/reflection.linked.vert000066400000000000000000000005141506534232700204540ustar00rootroot00000000000000#version 440 core layout(binding = 0, std140) uniform ubo_block { float unused_uniform; float shared_uniform; float vsonly_uniform; float fsonly_uniform; } ubo; in float vertin; out float vertout; void main() { vertout = vertin; vertout += ubo.shared_uniform; vertout += ubo.vsonly_uniform; } glslang-16.0.0/Test/reflection.options.geom000066400000000000000000000007451506534232700206560ustar00rootroot00000000000000#version 330 core precision highp float; layout(triangles) in; layout(triangle_strip, max_vertices = 4) out; in block { vec2 Color; vec2 Texcoord; flat ivec3 in_a; } In[]; out block { vec4 Color; vec4 a; vec2 b[3]; } Out; void main() { for(int i = 0; i < gl_in.length(); ++i) { gl_Position = gl_in[i].gl_Position; Out.Color = vec4(In[i].Color, 0, 1); EmitVertex(); } EndPrimitive(); } glslang-16.0.0/Test/reflection.options.vert000066400000000000000000000025171506534232700207060ustar00rootroot00000000000000#version 440 core struct VertexInfo { float position[3]; float normal[3]; }; struct TriangleInfo { VertexInfo v[3]; }; buffer VertexCollection { TriangleInfo t[5]; uint padding[10]; }; buffer MultipleArrays { TriangleInfo tri[5]; VertexInfo vert[5]; float f[5]; } multiarray; buffer ArrayedBind { float a; float b; } buffers[3]; uniform UBO { VertexInfo verts[2]; float flt[8]; uvec4 unused; float uniform_multi[4][3][2]; } ubo; uniform float uniform_multi[4][3][2]; struct OutputStruct { float val; vec3 a; vec2 b[4]; mat2x2 c; }; out OutputStruct outval; out float outarr[3]; void main() { float f; f += t[0].v[0].position[0]; f += t[gl_InstanceID].v[gl_InstanceID].position[gl_InstanceID]; f += t[gl_InstanceID].v[gl_InstanceID].normal[gl_InstanceID]; f += multiarray.tri[gl_InstanceID].v[0].position[0]; f += multiarray.vert[gl_InstanceID].position[0]; f += multiarray.f[gl_InstanceID]; f += ubo.verts[gl_InstanceID].position[0]; f += ubo.flt[gl_InstanceID]; f += ubo.uniform_multi[0][0][0]; f += uniform_multi[gl_InstanceID][gl_InstanceID][gl_InstanceID]; f += buffers[gl_InstanceID].b; TriangleInfo tlocal[5] = t; outval.val = f; outarr[2] = f; } glslang-16.0.0/Test/reflection.vert000066400000000000000000000113001506534232700172020ustar00rootroot00000000000000#version 440 core layout(std140, row_major) uniform nameless { vec3 anonMember1; mat3x2 m23; int scalarAfterm23; vec4 anonDeadMember2; vec4 anonMember3; int scalarBeforeArray; float floatArray[5]; int scalarAfterArray; mat2x2 m22[9]; }; layout(std140, column_major) uniform c_nameless { vec3 c_anonMember1; mat3x2 c_m23; int c_scalarAfterm23; vec4 c_anonDeadMember2; vec4 c_anonMember3; }; layout(std140) uniform named { vec3 deadMember1; int scalar; vec4 member2; vec4 member3; vec2 memvec2; float memf1; bool memf2; int memf3; vec2 memvec2a; mat2x2 m22[7]; } ablock; layout(std140) uniform namelessdead { int a; }; layout(std140) uniform namedDead { int b; } bblock; struct N1 { float a; }; struct N2 { float b; float c; float d; }; struct N3 { N1 n1; N2 n2; }; layout(std140) uniform nested { N3 foo; } nest; layout(std140) uniform nested2 { vec4 padding; // offset 0, size 16 N3 a; // offset 16, size 32 N1 b[4]; // offset 48, size 64 N1 c[2]; // offset 112, size 32 N1 d[4]; // offset 144, size 64 } nest2; struct TS { int a; int dead; }; uniform TS s; uniform float uf1; uniform float uf2; uniform float ufDead3; uniform float ufDead4; uniform writeonly uimage2D image_ui2D; uniform sampler2D sampler_2D; uniform sampler2DMSArray sampler_2DMSArray; uniform mat2 dm22[10]; struct deep1 { vec2 va[3]; bool b; }; struct deep2 { int i; deep1 d1[4]; }; struct deep3 { vec4 iv4; deep2 d2; ivec3 v3; }; in float attributeFloat; layout(location = 2) in vec2 attributeFloat2; in vec3 attributeFloat3; in vec4 attributeFloat4; in mat4 attributeMat4; in float attributeFloatArray[3]; uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2]; const bool control = true; void deadFunction() { vec3 v3 = ablock.deadMember1; vec4 v = anonDeadMember2; float f = ufDead4; } void liveFunction2() { vec3 v = anonMember1; float f = uf1; } void liveFunction1(writeonly uimage2D p_ui2D, sampler2D p_2D, sampler2DMSArray p_2DMSArray) { liveFunction2(); float f = uf2; vec4 v = ablock.member3; } uniform abl { float foo; } arrBl[4]; uniform abl2 { float foo; } arrBl2[4]; buffer buf1 { float scalar; float runtimeArray[]; } buf1i; buffer buf2 { float scalar; N2 runtimeArray[]; } buf2i; buffer buf3 { float scalar; float runtimeArray[]; } buf3i; buffer buf4 { float scalar; N2 runtimeArray[]; } buf4i; struct VertexInfo { float position[3]; float normal[3]; }; struct TriangleInfo { VertexInfo v[3]; }; buffer VertexCollection { TriangleInfo t[5]; uint padding[10]; }; out float outval; void main() { liveFunction1(image_ui2D, sampler_2D, sampler_2DMSArray); liveFunction2(); if (! control) deadFunction(); float f; int i; if (control) { liveFunction2(); f = anonMember3.z; f = s.a; f = ablock.scalar; f = m23[1].y + scalarAfterm23; f = c_m23[1].y + c_scalarAfterm23; f += scalarBeforeArray; f += floatArray[2]; f += floatArray[4]; f += scalarAfterArray; f += ablock.memvec2.x; f += ablock.memf1; f += float(ablock.memf2); f += ablock.memf3; f += ablock.memvec2a.y; f += ablock.m22[i][1][0]; f += dm22[3][0][1]; f += m22[2][1].y; f += nest.foo.n1.a + nest.foo.n2.b + nest.foo.n2.c + nest.foo.n2.d; f += deepA[i].d2.d1[2].va[1].x; f += deepB[1].d2.d1[i].va[1].x; f += deepB[i].d2.d1[i].va[1].x; deep3 d = deepC[1]; deep3 da[2] = deepD; deep1 db = deepA[i].d2.d1[i]; } else f = ufDead3; f += arrBl[2].foo + arrBl[0].foo; f += arrBl2[i].foo; f += attributeFloat; f += attributeFloat2.x; f += attributeFloat3.x; f += attributeFloat4.x; f += attributeMat4[0][1]; f += attributeFloatArray[2]; f += buf1i.runtimeArray[3]; f += buf2i.runtimeArray[3].c; f += buf3i.runtimeArray[gl_InstanceID]; f += buf4i.runtimeArray[gl_InstanceID].c; N3 n = nest2.a; N1 b[4] = nest2.b; f += nest2.c[1].a; f += nest2.d[gl_InstanceID].a; f += t[0].v[0].position[0]; f += t[gl_InstanceID].v[gl_InstanceID].position[gl_InstanceID]; f += t[gl_InstanceID].v[gl_InstanceID].normal[gl_InstanceID]; TriangleInfo tlocal[5] = t; outval = f; } glslang-16.0.0/Test/runtests000077500000000000000000000503131506534232700157720ustar00rootroot00000000000000#!/usr/bin/env bash # Arguments: # 1- TargetDirectory, where to write test results and intermediary files # 2- Path to glslang TARGETDIR=${1:-localResults} BASEDIR=baseResults EXE=${2:-../build/install/bin/glslang} HASERROR=0 mkdir -p "$TARGETDIR" LIBPATH="$(cd "$(dirname "$(dirname "$EXE")")" && pwd)/lib" if [ -d "${LIBPATH}" ]; then export LD_LIBRARY_PATH="${LIBPATH}:${LD_LIBRARY_PATH}" fi function run { "$EXE" "$@" result=$? case "$result" in [0-6]) # Valid success and error codes return ;; *) echo "$EXE returned $result" HASERROR=1 esac } if [ -a localtestlist ] then while read t; do echo Running $t... b=`basename $t` run -i -l $t > "$TARGETDIR/$b.out" diff -b $BASEDIR/$b.out "$TARGETDIR/$b.out" || HASERROR=1 done < localtestlist fi rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv # # special tests # run badMacroArgs.frag > "$TARGETDIR/badMacroArgs.frag.out" diff -b $BASEDIR/badMacroArgs.frag.out "$TARGETDIR/badMacroArgs.frag.out" || HASERROR=1 run gl_samplemask_array_size.frag gl_MaxSamples_32.conf -i > "$TARGETDIR/gl_samplemask_array_size_32.frag.out" diff -b $BASEDIR/gl_samplemask_array_size_32.frag.out "$TARGETDIR/gl_samplemask_array_size_32.frag.out" || HASERROR=1 run gl_samplemask_array_size.frag gl_MaxSamples_64.conf -i > "$TARGETDIR/gl_samplemask_array_size_64.frag.out" diff -b $BASEDIR/gl_samplemask_array_size_64.frag.out "$TARGETDIR/gl_samplemask_array_size_64.frag.out" || HASERROR=1 # # reflection tests # echo Running reflection... run -l -q -C reflection.vert > "$TARGETDIR/reflection.vert.out" diff -b $BASEDIR/reflection.vert.out "$TARGETDIR/reflection.vert.out" || HASERROR=1 run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.options.vert > "$TARGETDIR/reflection.options.vert.out" diff -b $BASEDIR/reflection.options.vert.out "$TARGETDIR/reflection.options.vert.out" || HASERROR=1 run -l -q -C reflection.frag > "$TARGETDIR/reflection.frag.out" diff -b $BASEDIR/reflection.frag.out "$TARGETDIR/reflection.frag.out" || HASERROR=1 run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.frag > "$TARGETDIR/reflection.options.frag.out" diff -b $BASEDIR/reflection.options.frag.out "$TARGETDIR/reflection.options.frag.out" || HASERROR=1 run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.options.geom > "$TARGETDIR/reflection.options.geom.out" diff -b $BASEDIR/reflection.options.geom.out "$TARGETDIR/reflection.options.geom.out" || HASERROR=1 run -l -q -C reflection.linked.vert reflection.linked.frag > "$TARGETDIR/reflection.linked.out" diff -b $BASEDIR/reflection.linked.out "$TARGETDIR/reflection.linked.out" || HASERROR=1 run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.linked.vert reflection.linked.frag > "$TARGETDIR/reflection.linked.options.out" diff -b $BASEDIR/reflection.linked.options.out "$TARGETDIR/reflection.linked.options.out" || HASERROR=1 run -D -Od -e flizv -l -q -C -V -Od hlsl.reflection.vert > "$TARGETDIR/hlsl.reflection.vert.out" diff -b $BASEDIR/hlsl.reflection.vert.out "$TARGETDIR/hlsl.reflection.vert.out" || HASERROR=1 run -D -Od -e main -l -q -C -V -Od hlsl.reflection.binding.frag > "$TARGETDIR/hlsl.reflection.binding.frag.out" diff -b $BASEDIR/hlsl.reflection.binding.frag.out "$TARGETDIR/hlsl.reflection.binding.frag.out" || HASERROR=1 run -D -Od -e main -l -q --hlsl-iomap --auto-map-bindings --stb 10 --sbb 20 --ssb 30 --suavb 40 --scb 50 -D -V -e main -Od hlsl.automap.frag > "$TARGETDIR/hlsl.automap.frag.out" diff -b $BASEDIR/hlsl.automap.frag.out "$TARGETDIR/hlsl.automap.frag.out" || HASERROR=1 # # multi-threaded test # echo Comparing single thread to multithread for all tests in current directory... for stage in vert frag geom tesc tese comp; do run -i -C *.$stage > "$TARGETDIR/$stage.singleThread.out" run -i -C *.$stage -t > "$TARGETDIR/$stage.multiThread.out" diff "$TARGETDIR/$stage.singleThread.out" "$TARGETDIR/$stage.multiThread.out" || HASERROR=1 if [ $HASERROR -eq 0 ] then rm "$TARGETDIR/$stage.singleThread.out" rm "$TARGETDIR/$stage.multiThread.out" fi done # # entry point renaming tests # echo Running entry-point renaming tests run -i -H -V -D -Od --entry-point main_in_spv --ku --source-entrypoint main -Od hlsl.entry.rename.frag > "$TARGETDIR/hlsl.entry.rename.frag.out" diff -b $BASEDIR/hlsl.entry.rename.frag.out "$TARGETDIR/hlsl.entry.rename.frag.out" || HASERROR=1 # # Testing ill-defined uncalled function # echo Running ill-defined uncalled function run -D -Od -e main -H -Od hlsl.deadFunctionMissingBody.vert > "$TARGETDIR/hlsl.deadFunctionMissingBody.vert.out" diff -b $BASEDIR/hlsl.deadFunctionMissingBody.vert.out "$TARGETDIR/hlsl.deadFunctionMissingBody.vert.out" || HASERROR=1 if [ $HASERROR -eq 0 ] then echo Tests Succeeded. else echo Tests Failed. fi # # Testing -S and compound suffixes # echo Running explicit stage test and compound suffix tests run -Od -i -S vert nosuffix > "$TARGETDIR/nosuffix.out" diff -b $BASEDIR/nosuffix.out "$TARGETDIR/nosuffix.out" || HASERROR=1 run -Od -i compoundsuffix.vert.glsl > "$TARGETDIR/compoundsuffix.vert.glsl" diff -b $BASEDIR/compoundsuffix.vert.glsl "$TARGETDIR/compoundsuffix.vert.glsl" || HASERROR=1 run -Od -e main -H compoundsuffix.frag.hlsl > "$TARGETDIR/compoundsuffix.frag.hlsl" diff -b $BASEDIR/compoundsuffix.frag.hlsl "$TARGETDIR/compoundsuffix.frag.hlsl" || HASERROR=1 # # Testing --hlsl-offsets # echo Running hlsl offsets run -i --hlsl-offsets -H spv.hlslOffsets.vert > "$TARGETDIR/spv.hlslOffsets.vert.out" diff -b $BASEDIR/spv.hlslOffsets.vert.out "$TARGETDIR/spv.hlslOffsets.vert.out" || HASERROR=1 echo Running hlsl offsets run -i --hlsl-offsets -D -Od -e main -H -Od hlsl.hlslOffset.vert > "$TARGETDIR/hlsl.hlslOffset.vert.out" diff -b $BASEDIR/hlsl.hlslOffset.vert.out "$TARGETDIR/hlsl.hlslOffset.vert.out" || HASERROR=1 # # Testing --resource-set-binding # echo Configuring HLSL descriptor set and binding number manually run -V -D -Od -e main -H -Od hlsl.multiDescriptorSet.frag --rsb frag t0 0 0 t1 1 0 s0 0 1 s1 1 1 b0 2 0 b1 2 1 b2 2 2 > "$TARGETDIR/hlsl.multiDescriptorSet.frag.out" diff -b $BASEDIR/hlsl.multiDescriptorSet.frag.out "$TARGETDIR/hlsl.multiDescriptorSet.frag.out" || HASERROR=1 run -V -D -Od -e main -H -Od hlsl.explicitDescriptorSet.frag --hlsl-iomap --amb --ssb 10 --stb 20 --rsb 4 > "$TARGETDIR/hlsl.explicitDescriptorSet.frag.out" diff -b $BASEDIR/hlsl.explicitDescriptorSet.frag.out "$TARGETDIR/hlsl.explicitDescriptorSet.frag.out" || HASERROR=1 run -V -D -Od -e main -H -Od hlsl.explicitDescriptorSet.frag --hlsl-iomap --amb --ssb 10 --stb 20 --rsb frag 3 > "$TARGETDIR/hlsl.explicitDescriptorSet-2.frag.out" diff -b $BASEDIR/hlsl.explicitDescriptorSet-2.frag.out "$TARGETDIR/hlsl.explicitDescriptorSet-2.frag.out" || HASERROR=1 # # Testing per-descriptor-set IO map shift # echo 'Testing per-descriptor-set IO map shift' run -e main --hlsl-iomap --ssb 10 1 15 2 --stb 20 --stb 25 2 --stb 70 6 --suavb 30 --suavb 40 2 --sub 50 6 -i -q -D -Od -V hlsl.shift.per-set.frag > "$TARGETDIR/hlsl.shift.per-set.frag.out" || HASERROR=1 diff -b $BASEDIR/hlsl.shift.per-set.frag.out "$TARGETDIR/hlsl.shift.per-set.frag.out" || HASERROR=1 # # Testing location error # echo Testing SPV no location run -V -C spv.noLocation.vert > "$TARGETDIR/spv.noLocation.vert.out" diff -b $BASEDIR/spv.noLocation.vert.out "$TARGETDIR/spv.noLocation.vert.out" || HASERROR=1 run -G -H --aml spv.noBuiltInLoc.vert > "$TARGETDIR/spv.noBuiltInLoc.vert.out" diff -b $BASEDIR/spv.noBuiltInLoc.vert.out "$TARGETDIR/spv.noBuiltInLoc.vert.out" || HASERROR=1 run -G spv.looseUniformNoLoc.vert > "$TARGETDIR/spv.looseUniformNoLoc.vert.out" diff -b $BASEDIR/spv.looseUniformNoLoc.vert.out "$TARGETDIR/spv.looseUniformNoLoc.vert.out" || HASERROR=1 # # Testing debug information # echo Testing SPV Debug Information run -g --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ -G -H spv.debugInfo.frag --rsb frag 3 > "$TARGETDIR/spv.debugInfo.frag.out" diff -b $BASEDIR/spv.debugInfo.frag.out "$TARGETDIR/spv.debugInfo.frag.out" || HASERROR=1 run -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ -V -H spv.debugInfo.frag --rsb frag 3 > "$TARGETDIR/spv.debugInfo.1.1.frag.out" diff -b $BASEDIR/spv.debugInfo.1.1.frag.out "$TARGETDIR/spv.debugInfo.1.1.frag.out" || HASERROR=1 run -g -D -Od -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --spirv-val --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \ --sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > "$TARGETDIR/spv.hlslDebugInfo.frag.out" diff -b $BASEDIR/spv.hlslDebugInfo.frag.out "$TARGETDIR/spv.hlslDebugInfo.frag.out" || HASERROR=1 # # Testing Includer # echo Testing Includer run -D -Od -e main -H -Od ../Test/hlsl.include.vert > "$TARGETDIR/hlsl.include.vert.out" diff -b $BASEDIR/hlsl.include.vert.out "$TARGETDIR/hlsl.include.vert.out" || HASERROR=1 run -D -Od -e main -H -Od hlsl.includeNegative.vert > "$TARGETDIR/hlsl.includeNegative.vert.out" diff -b $BASEDIR/hlsl.includeNegative.vert.out "$TARGETDIR/hlsl.includeNegative.vert.out" || HASERROR=1 run -l -i include.vert > "$TARGETDIR/include.vert.out" diff -b $BASEDIR/include.vert.out "$TARGETDIR/include.vert.out" || HASERROR=1 run -D -Od -e main -H -Od -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > "$TARGETDIR/hlsl.dashI.vert.out" diff -b $BASEDIR/hlsl.dashI.vert.out "$TARGETDIR/hlsl.dashI.vert.out" || HASERROR=1 run -D -Od -e MainPs -H -Od -g hlsl.pp.line3.frag > "$TARGETDIR/hlsl.pp.line3.frag.out" diff -b $BASEDIR/hlsl.pp.line3.frag.out "$TARGETDIR/hlsl.pp.line3.frag.out" || HASERROR=1 # # Testing --depfile # echo "Testing --depfile" run -D -Od -e main -H --depfile "$TARGETDIR/hlsl.include.vert.d.out" -Od ../Test/hlsl.include.vert > "$TARGETDIR/hlsl.include.vert.out" diff -b $BASEDIR/hlsl.include.vert.d.out "$TARGETDIR/hlsl.include.vert.d.out" || HASERROR=1 run -D -Od -e main -H --depfile "$TARGETDIR/hlsl.dashI.vert.d.out" -Od -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > "$TARGETDIR/hlsl.dashI.vert.out" diff -b $BASEDIR/hlsl.dashI.vert.d.out "$TARGETDIR/hlsl.dashI.vert.d.out" || HASERROR=1 # # Testing -D, -U and -P # echo "Testing -D, -U and -P" run -DUNDEFED -UIN_SHADER -DFOO=200 -i -l --U UNDEFED --define-macro MUL=FOO*2 glsl.-D-U.frag > "$TARGETDIR/glsl.-D-U.frag.out" diff -b $BASEDIR/glsl.-D-U.frag.out "$TARGETDIR/glsl.-D-U.frag.out" || HASERROR=1 run -D -Od -e main -V -i -DUNDEFED -UIN_SHADER --D FOO=200 --undef-macro UNDEFED -Od hlsl.-D-U.frag > "$TARGETDIR/hlsl.-D-U.frag.out" diff -b $BASEDIR/hlsl.-D-U.frag.out "$TARGETDIR/hlsl.-D-U.frag.out" || HASERROR=1 run -P"#define TEST1" -i -l --preamble-text "#define TEST2" --p "#define TEST3" glsl.-P.frag > "$TARGETDIR/glsl.-P.frag.out" diff -b $BASEDIR/glsl.-P.frag.out "$TARGETDIR/glsl.-P.frag.out" || HASERROR=1 run -i -l --preamble-text "vec4 getColor() { return vec4(1.0); }" glsl.-P.function.frag > "$TARGETDIR/glsl.-P.function.frag.out" diff -b $BASEDIR/glsl.-P.function.frag.out "$TARGETDIR/glsl.-P.function.frag.out" || HASERROR=1 run -i -l --preamble-text "#extension GL_GOOGLE_include_directive : require" -I. glsl.-P.include.frag > "$TARGETDIR/glsl.-P.include.frag.out" diff -b $BASEDIR/glsl.-P.include.frag.out "$TARGETDIR/glsl.-P.include.frag.out" || HASERROR=1 # # Test --client and --target-env # echo "Testing --client and --target-env" run --client vulkan100 spv.targetVulkan.vert || HASERROR=1 run --client opengl100 spv.targetOpenGL.vert || HASERROR=1 run --target-env vulkan1.0 spv.targetVulkan.vert || HASERROR=1 run --target-env vulkan1.1 spv.targetVulkan.vert || HASERROR=1 run --target-env vulkan1.2 spv.targetVulkan.vert || HASERROR=1 run --target-env opengl spv.targetOpenGL.vert || HASERROR=1 run -V100 spv.targetVulkan.vert || HASERROR=1 run -G100 spv.targetOpenGL.vert || HASERROR=1 run --target-env spirv1.2 -V spv.targetVulkan.vert || HASERROR=1 # # Testing GLSL entry point rename # echo "Testing GLSL entry point rename" run -H -e foo --source-entrypoint main glsl.entryPointRename.vert > "$TARGETDIR/glsl.entryPointRename.vert.out" diff -b $BASEDIR/glsl.entryPointRename.vert.out "$TARGETDIR/glsl.entryPointRename.vert.out" || HASERROR=1 run -H -e foo --source-entrypoint bar glsl.entryPointRename.vert > "$TARGETDIR/glsl.entryPointRename.vert.bad.out" diff -b $BASEDIR/glsl.entryPointRename.vert.bad.out "$TARGETDIR/glsl.entryPointRename.vert.bad.out" || HASERROR=1 run -H -e foo --source-entrypoint main glsl.entryPointRename2.vert > "$TARGETDIR/glsl.entryPointRename2.vert.out" diff -b $BASEDIR/glsl.entryPointRename2.vert.out "$TARGETDIR/glsl.entryPointRename2.vert.out" || HASERROR=1 # # Testing position Y inversion # echo "Testing position Y inversion" run -H -e main -V -D -Od -H -i --iy hlsl.y-negate-1.vert > "$TARGETDIR/hlsl.y-negate-1.vert.out" diff -b $BASEDIR/hlsl.y-negate-1.vert.out "$TARGETDIR/hlsl.y-negate-1.vert.out" || HASERROR=1 run -H -e main -V -D -Od -H -i --invert-y hlsl.y-negate-2.vert > "$TARGETDIR/hlsl.y-negate-2.vert.out" diff -b $BASEDIR/hlsl.y-negate-2.vert.out "$TARGETDIR/hlsl.y-negate-2.vert.out" || HASERROR=1 run -H -e main -V -D -Od -H -i --invert-y hlsl.y-negate-3.vert > "$TARGETDIR/hlsl.y-negate-3.vert.out" 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" run -H -e main -D -Od -fhlsl_functionality1 hlsl.structbuffer.incdec.frag > \ "$TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out" diff -b $BASEDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out "$TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out" || HASERROR=1 run -H -e main -D -Od -fhlsl_functionality1 hlsl.noSemantic.functionality1.comp > \ "$TARGETDIR/hlsl.noSemantic.functionality1.comp.out" diff -b $BASEDIR/hlsl.noSemantic.functionality1.comp.out "$TARGETDIR/hlsl.noSemantic.functionality1.comp.out" || HASERROR=1 # # Testing HLSL-specific PP feature expansion # echo "Testing HLSL-specific PP feature expansion" run -D -E hlsl.pp.expand.frag > "$TARGETDIR/hlsl.pp.expand.frag.out" 2> "$TARGETDIR/hlsl.pp.expand.frag.err" diff -b $BASEDIR/hlsl.pp.expand.frag.out "$TARGETDIR/hlsl.pp.expand.frag.out" || HASERROR=1 diff -b $BASEDIR/hlsl.pp.expand.frag.err "$TARGETDIR/hlsl.pp.expand.frag.err" || HASERROR=1 # # Test --nan-clamp # echo "Testing nan-clamp" run --nan-clamp -H --aml --amb spv.400.frag > "$TARGETDIR/spv.400.frag.nanclamp.out" diff -b $BASEDIR/spv.400.frag.nanclamp.out "$TARGETDIR/spv.400.frag.nanclamp.out" || HASERROR=1 # # Test --auto-sampled-textures # echo "Testing auto-sampled-textures" run --auto-sampled-textures -H -Od -e MainPs -D -S frag hlsl.autosampledtextures.frag > "$TARGETDIR/hlsl.autosampledtextures.frag.out" diff -b $BASEDIR/hlsl.autosampledtextures.frag.out "$TARGETDIR/hlsl.autosampledtextures.frag.out" || HASERROR=1 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 # # Test error column # echo "Testing error-column" run --error-column -C -V error-column.vert > "$TARGETDIR/error-column.vert.out" diff -b $BASEDIR/error-column.vert.out $TARGETDIR/error-column.vert.out || HASERROR=1 # # Test UTF8BOM # echo "Testing UTF8BOM" run --glsl-version 410 -V -S vert UTF8BOM.vert > $TARGETDIR/UTF8BOM.vert.out diff -b $BASEDIR/UTF8BOM.vert.out $TARGETDIR/UTF8BOM.vert.out || HASERROR=1 # # Test LTO # echo "Testing link-time optimization" run -V -H --amb --aml -l --lto link.crossStageOptimization.vert link.crossStageOptimization.frag > "$TARGETDIR/link.crossStageOptimization.out" diff -b $BASEDIR/link.crossStageOptimization.out "$TARGETDIR/link.crossStageOptimization.out" || HASERROR=1 # # Final checking # if [ $HASERROR -eq 0 ] then echo Tests Succeeded. else echo Tests Failed. fi rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv exit $HASERROR glslang-16.0.0/Test/runtimeArray.vert000066400000000000000000000055051506534232700175440ustar00rootroot00000000000000#version 450 core buffer bn { int a[]; float b[]; } buf; uniform un { int a[]; float b[]; } ubuf; buffer bna { int a[]; float b[]; } bufa[4]; uniform una { int a[]; float b[]; } ubufa[4]; buffer abn { int aba[]; float abb[]; }; uniform aun { int aua[]; float aub[]; }; layout(binding=1) uniform samplerBuffer uniformTexelBufferDyn[]; layout(binding=2, r32f) uniform imageBuffer storageTexelBufferDyn[]; layout(binding=3) uniform uname { float a; } uniformBuffer[]; layout(binding=4) buffer bname { float b; } storageBuffer[]; layout(binding=5) uniform sampler2D sampledImage[]; layout(binding=6, r32f) uniform image2D storageImage[]; layout(binding=8) uniform samplerBuffer uniformTexelBuffer[]; layout(binding=9, r32f) uniform imageBuffer storageTexelBuffer[]; int i; void main() { ubuf.a[3]; ubuf.b[3]; buf.a[3]; buf.b[3]; ubufa[3].a[3]; ubufa[3].b[3]; bufa[3].a[3]; bufa[3].b[3]; aua[3]; aub[3]; aba[3]; abb[3]; ubuf.a[i]; // ERROR ubuf.b[i]; // ERROR buf.a[i]; // ERROR buf.b[i]; ubuf.a.length(); // ERROR ubuf.b.length(); // ERROR buf.a.length(); // ERROR buf.b.length(); ubufa[1].a[i]; // ERROR ubufa[1].b[i]; // ERROR bufa[1].a[i]; // ERROR bufa[1].b[i]; ubufa[1].a.length(); // ERROR ubufa[1].b.length(); // ERROR bufa[1].a.length(); // ERROR bufa[1].b.length(); aua[i]; // ERROR aub[i]; // ERROR aba[i]; // ERROR abb[i]; aua.length(); // ERROR aub.length(); // ERROR aba.length(); // ERROR abb.length(); uniformTexelBufferDyn[1]; storageTexelBufferDyn[1]; uniformBuffer[1]; storageBuffer[1]; sampledImage[1]; storageImage[1]; uniformTexelBuffer[1]; storageTexelBuffer[1]; uniformTexelBufferDyn[i]; // ERROR, need extension storageTexelBufferDyn[i]; // ERROR, need extension uniformBuffer[i]; // ERROR, need extension storageBuffer[i]; // ERROR, need extension sampledImage[i]; // ERROR, need extension storageImage[i]; // ERROR, need extension uniformTexelBuffer[i]; // ERROR, need extension storageTexelBuffer[i]; // ERROR, need extension float local[] = ubuf.b; // ERROR, can initialize with runtime-sized array } glslang-16.0.0/Test/sample.frag000066400000000000000000000032611506534232700162770ustar00rootroot00000000000000// //Copyright (C) 2002-2004 3Dlabs Inc. Ltd. //All rights reserved. // //Redistribution and use in source and binary forms, with or without //modification, are permitted provided that the following conditions //are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE //COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER //CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. // #version 110 varying vec3 color; void main() { gl_FragColor = vec4(color, 1.0); } glslang-16.0.0/Test/sample.frag.out000066400000000000000000000010231506534232700170770ustar00rootroot00000000000000#### BEGIN COMPILER 0 INFO LOG #### 0:? Sequence 0:37 Function Definition: main( (void) 0:37 Function Parameters: 0:39 Sequence 0:39 move second child to first child (4-component vector of float) 0:39 'gl_FragColor' (FragColor 4-component vector of float) 0:39 Construct vec4 (4-component vector of float) 0:39 'color' (varying in 3-component vector of float) 0:39 1.000000 (const float) #### END COMPILER 0 INFO LOG #### #### BEGIN LINKER INFO LOG #### #### END LINKER INFO LOG #### glslang-16.0.0/Test/sample.vert000066400000000000000000000033541506534232700163430ustar00rootroot00000000000000// //Copyright (C) 2002-2004 3Dlabs Inc. Ltd. //All rights reserved. // //Redistribution and use in source and binary forms, with or without //modification, are permitted provided that the following conditions //are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE //COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER //CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. // #version 110 varying vec3 color; void main() { color = vec3(1.0, 1.0, 1.0); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; } glslang-16.0.0/Test/sample.vert.out000066400000000000000000000014571506534232700171530ustar00rootroot00000000000000#### BEGIN COMPILER 0 INFO LOG #### 0:? Sequence 0:37 Function Definition: main( (void) 0:37 Function Parameters: 0:39 Sequence 0:39 move second child to first child (3-component vector of float) 0:39 'color' (varying out 3-component vector of float) 0:39 1.000000 (const float) 0:39 1.000000 (const float) 0:39 1.000000 (const float) 0:41 move second child to first child (4-component vector of float) 0:41 'gl_Position' (Position 4-component vector of float) 0:41 matrix-times-vector (4-component vector of float) 0:41 'gl_ModelViewProjectionMatrix' (uniform 4X4 matrix of float) 0:41 'gl_Vertex' (attribute 4-component vector of float) #### END COMPILER 0 INFO LOG #### #### BEGIN LINKER INFO LOG #### #### END LINKER INFO LOG #### glslang-16.0.0/Test/samplerlessTextureFunctions.frag000066400000000000000000000024151506534232700226220ustar00rootroot00000000000000#version 450 core layout(binding = 1) uniform texture2D tex2D; layout(binding = 1) uniform texture2DMS texMS; layout(binding = 0) uniform textureBuffer buf; void testBad() { vec4 tex2DFetch = texelFetch(tex2D, ivec2(0, 0), 0); vec4 texMSFetch = texelFetch(texMS, ivec2(0, 0), 0); // Allowed by KHR_vulkan_glsl without the extension. All others should // error. vec4 bufFetch = texelFetch(buf, 0); vec4 tex2DFetchOffset = texelFetchOffset(tex2D, ivec2(0, 0), 0, ivec2(0, 0)); ivec2 tex2DSize = textureSize(tex2D, 0); ivec2 texMSSize = textureSize(texMS); int bufSize = textureSize(buf); int tex2DLevels = textureQueryLevels(tex2D); int texMSSamples = textureSamples(texMS); } #extension GL_EXT_samplerless_texture_functions : enable void main() { // These should all succeed. vec4 tex2DFetch = texelFetch(tex2D, ivec2(0, 0), 0); vec4 texMSFetch = texelFetch(texMS, ivec2(0, 0), 0); vec4 bufFetch = texelFetch(buf, 0); vec4 tex2DFetchOffset = texelFetchOffset(tex2D, ivec2(0, 0), 0, ivec2(0, 0)); ivec2 tex2DSize = textureSize(tex2D, 0); ivec2 texMSSize = textureSize(texMS); int bufSize = textureSize(buf); int tex2DLevels = textureQueryLevels(tex2D); int texMSSamples = textureSamples(texMS); } glslang-16.0.0/Test/simpleFunctionCall.frag000066400000000000000000000002561506534232700206120ustar00rootroot00000000000000#version 150 uniform vec4 bigColor; varying vec4 BaseColor; uniform float d; vec4 foo() { return BaseColor; } void main() { gl_FragColor = foo(); } glslang-16.0.0/Test/specExamples.frag000066400000000000000000000163601506534232700174530ustar00rootroot00000000000000#version 430 #extension GL_3DL_array_objects : enable int a = 0xffffffff; // 32 bits, a gets the value -1 int b = 0xffffffffU; // ERROR: can't convert uint to int uint c = 0xffffffff; // 32 bits, c gets the value 0xFFFFFFFF uint d = 0xffffffffU; // 32 bits, d gets the value 0xFFFFFFFF int e = -1; // the literal is "1", then negation is performed, // and the resulting non-literal 32-bit signed // bit pattern of 0xFFFFFFFF is assigned, giving e // the value of -1. uint f = -1u; // the literal is "1u", then negation is performed, // and the resulting non-literal 32-bit unsigned // bit pattern of 0xFFFFFFFF is assigned, giving f // the value of 0xFFFFFFFF. int g = 3000000000; // a signed decimal literal taking 32 bits, // setting the sign bit, g gets -1294967296 int h = 0xA0000000; // okay, 32-bit signed hexadecimal int i = 5000000000; // ERROR: needs more than 32 bits int j = 0xFFFFFFFFF; // ERROR: needs more that 32 bits int k = 0x80000000; // k gets -2147483648 == 0x80000000 int l = 2147483648; // l gets -2147483648 (the literal set the sign bit) float fa, fb = 1.5; // single-precision floating-point double fc, fd = 2.0LF; // double-precision floating-point vec2 texcoord1, texcoord2; vec3 position; vec4 myRGBA; ivec2 textureLookup; bvec3 less; mat2 mat2D; mat3 optMatrix; mat4 view, projection; mat4x4 view; // an alternate way of declaring a mat4 mat3x2 m; // a matrix with 3 columns and 2 rows dmat4 highPrecisionMVP; dmat2x4 dm; struct light { float intensity; vec3 position; } lightVar; struct S { float f; }; struct T { //S; // Error: anonymous structures disallowed //struct { ... }; // Error: embedded structures disallowed S s; // Okay: nested structures with name are allowed }; float frequencies[3]; uniform vec4 lightPosition[4]; light lights[]; const int numLights = 2; light lights[numLights]; in vec3 normal; centroid in vec2 TexCoord; invariant centroid in vec4 Color; noperspective in float temperature; flat in vec3 myColor; noperspective centroid in vec2 myTexCoord; uniform vec4 lightPosition; uniform vec3 color = vec3(0.7, 0.7, 0.2); // value assigned at link time in Material { smooth in vec4 Color1; // legal, input inside in block smooth vec4 Color2; // legal, 'in' inherited from 'in Material' vec2 TexCoordA; // legal, TexCoord is an input uniform float Atten; // illegal, mismatched storage qualifier }; in Light { vec4 LightPos; vec3 LightColor; }; in ColoredTexture { vec4 Color; vec2 TexCoord; } Materiala; // instance name vec3 Color; // different Color than Material.Color in vec4 gl_FragCoord; // redeclaration that changes nothing is allowed // All the following are allowed redeclaration that change behavior layout(origin_upper_left) in vec4 gl_FragCoord; layout(pixel_center_integer) in vec4 gl_FragCoord; layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; layout(early_fragment_tests) in; // compute shader: layout (local_size_x = 32, local_size_y = 32) in; layout (local_size_x = 8) in; layout(location = 3) out vec4 color; layout(location = 3, index = 1) out vec4 factor; layout(location = 2) out vec4 colors[3]; layout (depth_greater) out float gl_FragDepth; // redeclaration that changes nothing is allowed out float gl_FragDepth; // assume it may be modified in any way layout (depth_any) out float gl_FragDepth; // assume it may be modified such that its value will only increase layout (depth_greater) out float gl_FragDepth; // assume it may be modified such that its value will only decrease layout (depth_less) out float gl_FragDepth; // assume it will not be modified layout (depth_unchanged) out float gl_FragDepth; in vec4 gl_Color; // predeclared by the fragment language flat in vec4 gl_Color; // redeclared by user to be flat float[5] foo(float[5]) { return float[5](3.4, 4.2, 5.0, 5.2, 1.1); } precision highp float; precision highp int; precision mediump int; precision highp float; void main() { { float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1); } { float a[5] = float[](3.4, 4.2, 5.0, 5.2, 1.1); // same thing } { vec4 a[3][2]; // size-3 array of size-2 array of vec4 vec4[2] a1[3]; // size-3 array of size-2 array of vec4 vec4[3][2] a2; // size-3 array of size-2 array of vec4 vec4 b[2] = vec4[2](vec4(0.0), vec4(0.1)); vec4[3][2] a3 = vec4[3][2](b, b, b); // constructor void foo(vec4[3][2]); // prototype with unnamed parameter vec4 a4[3][2] = {vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)) }; } { float a[5]; { float b[] = a; // b is explicitly size 5 } { float b[5] = a; // means the same thing } { float b[] = float[](1,2,3,4,5); // also explicitly sizes to 5 } a.length(); // returns 5 } { vec4 a[3][2]; a.length(); // this is 3 a[x].length(); // this is 2 } // for an array b containing a member array a: b[++x].a.length(); // b is never dereferenced, but “++x” is evaluated // for an array s of a shader storage object containing a member array a: s[x].a.length(); // s is dereferenced; x needs to be a valid index // //All of the following declarations result in a compile-time error. //float a[2] = { 3.4, 4.2, 5.0 }; // illegal //vec2 b = { 1.0, 2.0, 3.0 }; // illegal //mat3x3 c = { vec3(0.0), vec3(1.0), vec3(2.0), vec3(3.0) }; // illegal //mat2x2 d = { 1.0, 0.0, 0.0, 1.0 }; // illegal, can't flatten nesting //struct { // float a; // int b; //} e = { 1.2, 2, 3 }; // illegal struct { float a; int b; } e = { 1.2, 2 }; // legal, all types match struct { float a; int b; } e = { 1, 3 }; // legal, first initializer is converted //All of the following declarations result in a compile-time error. //int a = true; // illegal //vec4 b[2] = { vec4(0.0), 1.0 }; // illegal //mat4x2 c = { vec3(0.0), vec3(1.0) }; // illegal //struct S1 { // vec4 a; // vec4 b; //}; //struct { // float s; // float t; //} d[] = { S1(vec4(0.0), vec4(1.1)) }; // illegal { float a[] = float[](3.4, 4.2, 5.0, 5.2, 1.1); float b[] = { 3.4, 4.2, 5.0, 5.2, 1.1 }; float c[] = a; // c is explicitly size 5 float d[5] = b; // means the same thing } { const vec3 zAxis = vec3 (0.0, 0.0, 1.0); const float ceiling = a + b; // a and b not necessarily constants } { in vec4 position; in vec3 normal; in vec2 texCoord[4]; } { lowp float color; out mediump vec2 P; lowp ivec2 foo(lowp mat3); highp mat4 m; } } glslang-16.0.0/Test/specExamples.vert000066400000000000000000000150031506534232700175050ustar00rootroot00000000000000#version 430 #extension GL_3DL_array_objects : enable out Vertex { vec4 Position; // API transform/feedback will use “Vertex.Position” vec2 Texture; } Coords; // shader will use “Coords.Position” out Vertex2 { vec4 Color; // API will use “Color” }; uniform Transform { // API uses “Transform[2]” to refer to instance 2 mat4 ModelViewMatrix; mat4 ModelViewProjectionMatrix; vec4 a[]; // array will get implicitly sized float Deformation; } transforms[4]; layout(location = 3) in vec4 normal; layout(location = 6) in vec4 colors[3]; layout(location = 9) in mat4 transforms2[2]; layout(location = 3) struct S { vec3 a1; mat2 b; vec4 c[2]; } s; layout(triangles, invocations = 6) in; layout(lines) in; // legal for Color2, input size is 2, matching Color2 layout(triangle_strip, max_vertices = 60) out; // order does not matter layout(max_vertices = 60) out; // redeclaration okay layout(triangle_strip) out; // redeclaration okay //layout(points) out; // error, contradicts triangle_strip //layout(max_vertices = 30) out; // error, contradicts 60 layout(stream = 1) out; layout(stream=1) out; // default is now stream 1 out vec4 var1; // var1 gets default stream (1) layout(stream=2) out Block1 { // "Block1" belongs to stream 2 layout(stream=2) vec4 var2; // redundant block member stream decl layout(stream=3) vec2 var3; // ILLEGAL (must match block stream) vec3 var4; // belongs to stream 2 }; layout(stream=0) out; // default is now stream 0 out vec4 var5; // var5 gets default stream (0) out Block2 { // "Block2" gets default stream (0) vec4 var6; }; layout(stream=3) out vec4 var7; // var7 belongs to stream 3 layout(shared, column_major) uniform; layout(shared, column_major) buffer; layout(row_major, column_major) layout(shared, row_major) uniform; // default is now shared and row_major layout(std140) uniform Transform2 { // layout of this block is std140 mat4 M1; // row_major layout(column_major) mat4 M2; // column major mat3 N1; // row_major }; layout(column_major) uniform T3 { // shared and column_major mat4 M13; // column_major layout(row_major) mat4 m14; // row major mat3 N12; // column_major }; // in one compilation unit... layout(binding=3) uniform sampler2D s17; // s bound to unit 3 // in another compilation unit... uniform sampler2D s17; // okay, s still bound at 3 // in another compilation unit... //layout(binding=4) uniform sampler2D s; // ERROR: contradictory bindings layout (binding = 2, offset = 4) uniform atomic_uint a2; layout (binding = 2) uniform atomic_uint bar; layout (binding = 2, offset = 4) uniform atomic_uint; layout (binding = 2) uniform atomic_uint bar; // offset is 4 layout (offset = 8) uniform atomic_uint bar23; // error, no default binding layout (binding=3, offset=4) uniform atomic_uint a2; // offset = 4 layout (binding=2) uniform atomic_uint b2; // offset = 0 layout (binding=3) uniform atomic_uint c2; // offset = 8 layout (binding=2) uniform atomic_uint d2; // offset = 4 //layout (offset=4) // error, must include binding //layout (binding=1, offset=0) a; // okay //layout (binding=2, offset=0) b; // okay //layout (binding=1, offset=0) c; // error, offsets must not be shared // // between a and c //layout (binding=1, offset=2) d; // error, overlaps offset 0 of a flat in vec4 gl_FrontColor; // input to geometry shader, no “gl_in[]” flat out vec4 gl_FrontColor; // output from geometry shader invariant gl_Position; // make existing gl_Position be invariant out vec3 ColorInv; invariant ColorIvn; // make existing Color be invariant invariant centroid out vec3 Color4; precise out vec4 position; out vec3 Color5; precise Color5; // make existing Color be precise in vec4 a, b, c, d; precise out vec4 v; coherent buffer Block { readonly vec4 member1; vec4 member2; }; buffer Block2a { coherent readonly vec4 member1A; coherent vec4 member2A; }; shared vec4 shv; vec4 funcA(restrict image2D a) { } vec4 funcB(image2D a) { } layout(rgba32f) uniform image2D img1; layout(rgba32f) coherent uniform image2D img2; float func(float e, float f, float g, float h) { return (e*f) + (g*h); // no constraint on order or // operator consistency } float func2(float e, float f, float g, float h) { precise float result = (e*f) + (g*h); // ensures same precision for // the two multiplies return result; } float func3(float i, float j, precise out float k) { k = i * i + j; // precise, due to declaration } void main() { vec3 r = vec3(a * b); // precise, used to compute v.xyz vec3 s = vec3(c * d); // precise, used to compute v.xyz v.xyz = r + s; // precise v.w = (a.w * b.w) + (c.w * d.w); // precise v.x = func(a.x, b.x, c.x, d.x); // values computed in func() // are NOT precise v.x = func2(a.x, b.x, c.x, d.x); // precise! func3(a.x * b.x, c.x * d.x, v.x); // precise! funcA(img1); // OK, adding "restrict" is allowed, ERROR, changing formats funcB(img2); // illegal, stripping "coherent" is not, ERROR, changing formats { struct light { float intensity; vec3 position; }; light lightVar = light(3.0, vec3(1.0, 2.0, 3.0)); } { const float c[3] = float[3](5.0, 7.2, 1.1); const float d[3] = float[](5.0, 7.2, 1.1); float g; float a[5] = float[5](g, 1, g, 2.3, g); float b[3]; b = float[3](g, g + 1.0, g + 2.0); } { vec4 b[2] = { vec4(1.0), vec4(1.0) }; vec4[3][2](b, b, b); // constructor vec4[][2](b, b, b); // constructor, valid, size deduced vec4[3][](b, b, b); // compile-time error, invalid type constructed } } glslang-16.0.0/Test/spv.1.3.8bitstorage-ssbo.vert000066400000000000000000000003771506534232700213720ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_8bit_storage: require layout(binding = 0) readonly buffer Vertices { uint8_t vertices[]; }; layout(location = 0) out vec4 color; void main() { color = vec4(int(vertices[gl_VertexIndex])); } glslang-16.0.0/Test/spv.1.3.8bitstorage-ubo.vert000066400000000000000000000004031506534232700211770ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_8bit_storage: require layout(binding = 0) readonly uniform Vertices { uint8_t vertices[512]; }; layout(location = 0) out vec4 color; void main() { color = vec4(int(vertices[gl_VertexIndex])); } glslang-16.0.0/Test/spv.1.3.coopmat.comp000066400000000000000000000012561506534232700176100ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #pragma use_variable_pointers layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(set = 0, binding = 0) coherent buffer Block { float y[1024*1024]; float x[]; } block; void main() { fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> m = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(0.0); m = m + m; m = m - m; m = -m; m = 2.0*m; m = m*2.0; coopMatLoadNV(m, block.x, 16, 128, false); coopMatStoreNV(m, block.x, 16, 128, false); } glslang-16.0.0/Test/spv.1.4.LoopControl.frag000066400000000000000000000013361506534232700204010ustar00rootroot00000000000000#version 450 #extension GL_EXT_control_flow_attributes : enable bool cond; void main() { [[min_iterations(3), max_iterations(7)]] for (int i = 0; i < 8; ++i) { } [[iteration_multiple(2)]] while(true) { } [[peel_count(5)]] do { } while(true); [[partial_count(4)]] for (int i = 0; i < 8; ++i) { } // warnings on all these [[min_iterations, max_iterations]] for (int i = 0; i < 8; ++i) { } //[[iteration_multiple(0)]] while(true) { } //[[peel_count]] do { } while(true); //[[partial_count]] for (int i = 0; i < 8; ++i) { } } glslang-16.0.0/Test/spv.1.4.NonWritable.frag000066400000000000000000000003541506534232700203520ustar00rootroot00000000000000#version 450 layout(location = 0) flat in int index; layout(location = 0) out float color; // lookup table const float table[16] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; void main() { color = table[index]; } glslang-16.0.0/Test/spv.1.4.OpCopyLogical.comp000066400000000000000000000012171506534232700206500ustar00rootroot00000000000000#version 450 core struct MyStruct { vec2 foo[2]; int sb; }; layout(binding = 0, std430) buffer SSBO0 { MyStruct a; } inBuf; layout(binding = 1, std430) buffer SSBO1 { MyStruct b; } outBuf; layout(binding = 2, std140) uniform UBO { MyStruct c; } uBuf; struct Nested { float f; MyStruct S[2]; }; layout(binding = 2, std140) uniform UBON { Nested N1; } uBufN; layout(binding = 1, std430) buffer SSBO1N { Nested N2; } outBufN; void main() { MyStruct t = inBuf.a; outBuf.b = t; t = uBuf.c; outBuf.b = t; Nested n = uBufN.N1; outBufN.N2 = n; } glslang-16.0.0/Test/spv.1.4.OpCopyLogical.funcall.frag000066400000000000000000000005331506534232700222540ustar00rootroot00000000000000#version 450 struct S { mat4 m; }; buffer blockName { S s1; }; // need an S with decoration S s2; // no decorations on S void fooConst(const in S s) { } void foo(in S s) { } void fooOut(inout S s) { } void main() { fooConst(s1); fooConst(s2); foo(s1); foo(s2); fooOut(s1); fooOut(s2); }glslang-16.0.0/Test/spv.1.4.OpCopyLogicalBool.comp000066400000000000000000000012171506534232700214640ustar00rootroot00000000000000#version 450 core struct MyStruct { vec2 foo[2]; bool sb; }; layout(binding = 0, std430) buffer SSBO0 { MyStruct a; } inBuf; layout(binding = 1, std430) buffer SSBO1 { MyStruct b; } outBuf; layout(binding = 2, std140) uniform UBO { MyStruct c; } uBuf; struct Nested { bool b; MyStruct S[2]; }; layout(binding = 2, std140) uniform UBON { Nested N1; } uBufN; layout(binding = 1, std430) buffer SSBO1N { Nested N2; } outBufN; void main() { MyStruct t = inBuf.a; outBuf.b = t; t = uBuf.c; outBuf.b = t; Nested n = uBufN.N1; outBufN.N2 = n; } glslang-16.0.0/Test/spv.1.4.OpEntryPoint.frag000066400000000000000000000007631506534232700205440ustar00rootroot00000000000000#version 450 layout(location = 0) in vec4 inv; layout(location = 0) out vec4 outv; vec4 globalv; layout(binding = 0) uniform ubt { vec4 v; } uniformv; layout(binding = 1) buffer bbt { float f; } bufferv; layout(push_constant) uniform pushB { int a; } pushv; void main() { vec4 functionv; functionv = inv; globalv = inv; outv = functionv + inv + globalv + uniformv.v * pushv.a * bufferv.f; outv += functionv + inv + globalv + uniformv.v * pushv.a * bufferv.f; } glslang-16.0.0/Test/spv.1.4.OpEntryPoint.opaqueParams.vert000066400000000000000000000005341506534232700232360ustar00rootroot00000000000000#version 450 layout(binding = 0) uniform sampler2D s2D; layout(binding = 1) uniform texture2D t2D; layout(binding = 3) uniform sampler s; vec2 funOpaque(in sampler2D s2D, texture2D t2D, sampler s) { return textureSize(s2D, 0) * texture(sampler2D(t2D, s), vec2(0.5)).xy; } void main() { vec2 size = funOpaque(s2D, t2D, s); }glslang-16.0.0/Test/spv.1.4.OpSelect.frag000066400000000000000000000015561506534232700176510ustar00rootroot00000000000000#version 450 struct S1 { float a; int b; }; layout(location = 0) flat in S1 in1; layout(location = 2) flat in S1 in2; layout(location = 4) flat in int cond; layout(location = 0) out float outv; void fun1(){} void fun2(){} void main() { // glslang will only make OpSelect for very trivial looking expressions float f1 = 1.0; float f2 = 2.0; outv = cond < 8 ? f1 : f2; // in all versions ivec4 iv1 = ivec4(f1); ivec4 iv2 = ivec4(f2); outv *= (cond > 0 ? iv1 : iv2).z; // in all versions, but in 1.4 as scalar condition, not smeared ala mix() mat3 m1 = mat3(1.0); mat3 m2 = mat3(2.0); outv *= (cond < 20 ? m1 : m2)[2][1]; // in 1.4, but not before S1 fv = cond > 5 ? in1 : in2; // in 1.4, but not before outv *= fv.a; cond > 0 ? fun1() : fun2(); // not allowed by any version } glslang-16.0.0/Test/spv.1.4.constructComposite.comp000066400000000000000000000003531506534232700220530ustar00rootroot00000000000000#version 460 core layout(local_size_x=64) in; struct sA { int x, y; }; struct sB { sA a; }; layout(binding=0,set=0) uniform ubo { sB b; }; struct sC { sA state; } c = { b.a, }; void main() { } glslang-16.0.0/Test/spv.1.4.funcall.array.frag000066400000000000000000000002421506534232700206630ustar00rootroot00000000000000#version 450 core uniform ub { vec4 u[9]; }; vec4 f(const vec4 a[9], int ix) { return a[ix]; } out vec4 color; void main() { color = f(u, 2); } glslang-16.0.0/Test/spv.1.4.image.frag000066400000000000000000000017631506534232700172150ustar00rootroot00000000000000#version 450 layout(rgba32f, binding = 1) uniform image2D i2D; layout(r32i, binding = 12) uniform iimage2D ii2D; layout(r32ui, binding = 12) uniform uimage2D ui2D; layout(rgba32f, binding = 9) uniform image2DMS i2DMS; layout(r32i, binding = 13) uniform iimage2DMS ii2DMS; layout(r32ui, binding = 13) uniform uimage2DMS ui2DMS; flat in ivec2 ic2D; flat in uint value; out vec4 fragData; void main() { vec4 v = vec4(0.0); ivec4 iv = ivec4(0.0); uvec4 uv = uvec4(0.0); v += imageLoad(i2D, ic2D); imageStore(i2D, ic2D, v); v += imageLoad(ii2D, ic2D); imageStore(ii2D, ic2D, iv); v += imageLoad(ui2D, ic2D); imageStore(ui2D, ic2D, uv); v += imageLoad(i2DMS, ic2D, 1); imageStore(i2DMS, ic2D, 2, v); v += imageLoad(ii2DMS, ic2D, 1); imageStore(ii2DMS, ic2D, 2, iv); v += imageLoad(ui2DMS, ic2D, 1); imageStore(ui2DMS, ic2D, 2, uv); fragData = v; } glslang-16.0.0/Test/spv.1.4.load.bool.array.interface.block.frag000066400000000000000000000003641506534232700241450ustar00rootroot00000000000000#version 450 core layout(std140, set=0, binding=0) uniform ub { bool bi[2][3]; }; layout(std430, set=0, binding=1) buffer ssbo { bool bo[2][3]; }; layout(location=0) out vec4 color; void main() { bo = bi; color = vec4(0); } glslang-16.0.0/Test/spv.1.4.sparseTexture.frag000066400000000000000000000025321506534232700210040ustar00rootroot00000000000000#version 450 #extension GL_ARB_sparse_texture2: enable uniform sampler2D s2D; uniform isampler2D is2D; uniform usampler2D us2D; layout(rgba32f) uniform image2D i2D; layout(rgba32i) uniform iimage2DMS ii2DMS; layout(rgba32ui) uniform uimage3D ui3D; in vec2 c2; in vec3 c3; in vec4 c4; in flat ivec2 ic2; in flat ivec3 ic3; in flat ivec2 offsets[4]; out vec4 outColor; void main() { int resident = 0; vec4 texel = vec4(0.0); ivec4 itexel = ivec4(0); uvec4 utexel = uvec4(0); resident |= sparseTextureARB(s2D, c2, texel); resident |= sparseTextureARB(is2D, c2, texel); resident |= sparseTextureARB(us2D, c2, texel); resident |= sparseTextureLodARB( s2D, c2, 2.0, texel); resident |= sparseTextureLodARB(is2D, c2, 2.0, texel); resident |= sparseTextureLodARB(us2D, c2, 2.0, texel); resident |= sparseTexelFetchARB( s2D, ivec2(c2), 2, texel); resident |= sparseTexelFetchARB(is2D, ivec2(c2), 2, texel); resident |= sparseTexelFetchARB(us2D, ivec2(c2), 2, texel); resident |= sparseImageLoadARB(i2D, ic2, texel); resident |= sparseImageLoadARB(ii2DMS, ic2, 3, texel); resident |= sparseImageLoadARB(ui3D, ic3, utexel); outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel); }glslang-16.0.0/Test/spv.1.4.texture.frag000066400000000000000000000011571506534232700176300ustar00rootroot00000000000000#version 450 uniform sampler2D texSampler2D; uniform isampler2D itexSampler2D; uniform usampler2D utexSampler2D; in vec2 t; in vec2 coords2D; flat in ivec2 iCoords2D; out vec4 color; flat in int iLod; void main() { vec4 color = vec4(0.0, 0.0, 0.0, 0.0); color += texture( texSampler2D, coords2D); color += texture(itexSampler2D, coords2D); color += texture(utexSampler2D, coords2D); color += texelFetch( texSampler2D, iCoords2D, iLod); color += texelFetch(itexSampler2D, iCoords2D, iLod); color += texelFetch(utexSampler2D, iCoords2D, iLod); }glslang-16.0.0/Test/spv.1.6.conditionalDiscard.frag000066400000000000000000000003071506534232700217230ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/spv.1.6.helperInvocation.frag000066400000000000000000000001751506534232700214420ustar00rootroot00000000000000#version 310 es precision highp float; out vec4 outp; void main() { if (gl_HelperInvocation) ++outp; } glslang-16.0.0/Test/spv.1.6.helperInvocation.memmodel.frag000066400000000000000000000004131506534232700232330ustar00rootroot00000000000000#version 310 es #pragma use_vulkan_memory_model #extension GL_EXT_demote_to_helper_invocation : require precision highp float; layout (set=0, binding=0) buffer B { float o; }; void main() { demote; o = gl_HelperInvocation ? 1.0 : 0.0; } glslang-16.0.0/Test/spv.1.6.nontemporalimage.frag000066400000000000000000000017441506534232700214750ustar00rootroot00000000000000#version 460 #pragma use_vulkan_memory_model #extension GL_EXT_nontemporal_keyword: require layout(location=0) in vec2 in_uv; layout(binding=1, rgba8) uniform nontemporal image2D u_nontempimage; layout(binding=2, rgba8) uniform image2D u_image; layout(binding=3) uniform writeonly nontemporal image2D u_nontempnoformatimage; layout(binding=4) uniform writeonly image2D u_noformatimage; void function_accepting_nontemporal(nontemporal writeonly image2D image) { } void function_not_accepting_nontemporal(writeonly image2D image) { } void main() { const ivec2 uv = ivec2(in_uv.x, in_uv.y); imageStore(u_nontempimage, uv, imageLoad(u_nontempimage, uv)); imageStore(u_image, uv, imageLoad(u_image, uv)); function_accepting_nontemporal(u_nontempnoformatimage); function_accepting_nontemporal(u_noformatimage); function_not_accepting_nontemporal(u_noformatimage); // This would fail to compile // function_not_accepting_nontemporal(u_nontempnoformatimage); } glslang-16.0.0/Test/spv.1.6.quad.frag000066400000000000000000000011041506534232700170540ustar00rootroot00000000000000#version 460 core #extension GL_KHR_shader_subgroup_basic: require #extension GL_EXT_shader_quad_control: require #extension GL_KHR_shader_subgroup_vote: require layout (full_quads) in; layout (quad_derivatives) in; flat in int iInput; out int bOut; void main(){ bool bTemp = false; // EXT_shader_quad_control required begin bTemp = bTemp || subgroupQuadAll(iInput > 0); // GL_KHR_shader_subgroup_vote bTemp = bTemp || subgroupQuadAny(iInput > 0); // GL_KHR_shader_subgroup_vote bOut = bTemp == true ? 1 : 0; }glslang-16.0.0/Test/spv.1.6.samplerBuffer.frag000066400000000000000000000002031506534232700207160ustar00rootroot00000000000000#version 140 out vec4 o; uniform isamplerBuffer sampB; void main() { o.w = float(textureSize(sampB)) / 100.0; } glslang-16.0.0/Test/spv.1.6.separate.frag000066400000000000000000000004771506534232700177420ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/spv.1.6.specConstant.comp000066400000000000000000000004111506534232700206050ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/spv.100ops.frag000066400000000000000000000006021506534232700166430ustar00rootroot00000000000000#version 310 es lowp float foo(); in lowp float low, high; lowp float face1 = 11.0; out lowp vec4 Color; void main() { int z = 3; if (2.0 * low + 1.0 < high) ++z; Color = face1 * vec4(z) + foo(); } lowp float face2 = -2.0; lowp float foo() { // testing if face2 initializer insert logic is correct in main return face2; } glslang-16.0.0/Test/spv.130.frag000066400000000000000000000042141506534232700161270ustar00rootroot00000000000000#version 140 #extension GL_ARB_texture_gather : enable vec3 a; float b; in vec4 i; out vec4 o; out ivec3 io; out uvec4 uo; flat in float fflat; smooth in float fsmooth; noperspective in float fnop; uniform samplerCube sampC; #extension GL_ARB_texture_rectangle : enable uniform sampler2D samp2D; uniform sampler2DShadow samp2DS; uniform sampler2DRect samp2DR; uniform sampler2DArray samp2DA; void bar3() { o += textureGatherOffset(samp2D, vec2(0.3), ivec2(1)); o += textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); } #extension GL_ARB_gpu_shader5 : enable void bar4() { o += textureGatherOffset(samp2DR, vec2(0.3), ivec2(1)); o += textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); o += textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); } #extension GL_ARB_texture_cube_map_array : enable uniform samplerCubeArray Sca; uniform isamplerCubeArray Isca; uniform usamplerCubeArray Usca; uniform samplerCubeArrayShadow Scas; void bar5() { io = textureSize(Sca, 3); o += texture(Sca, i); io += texture(Isca, i, 0.7).xyz; uo = texture(Usca, i); o += textureLod(Sca, i, 1.7); a = textureSize(Scas, 3); float f = texture(Scas, i, i.y); ivec4 c = textureGrad(Isca, i, vec3(0.1), vec3(0.2)); o += vec4(a, f + c); } #extension GL_ARB_shading_language_420pack : enable const int ai[3] = { 10, 23, 32 }; uniform layout(binding=0) sampler2D bounds; void bar6() { mat4x3 m43; float a1 = m43[3].y; //int a2 = m43.length(); // ERROR until shading_language_420pack is fully implemented const float b = 2 * a1; //a.x = gl_MinProgramTexelOffset + gl_MaxProgramTexelOffset; // ERROR until shading_language_420pack is fully implemented } #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_shader_texture_lod : require uniform sampler2D s2D; uniform sampler2DRect s2DR; uniform sampler2DRectShadow s2DRS; uniform sampler1D s1D; uniform sampler2DShadow s2DS; void main() { o = textureGather(sampC, vec3(0.2)); o.y = gl_ClipDistance[3]; bar3(); bar4(); bar5(); bar6(); }glslang-16.0.0/Test/spv.140.frag000066400000000000000000000015751506534232700161370ustar00rootroot00000000000000#version 140 #extension GL_ARB_enhanced_layouts : require in vec4 k; out vec4 o; in float gl_ClipDistance[5]; layout(row_major) uniform; uniform sampler2D samp2Da[3]; layout(std140) uniform bn { layout(row_major) mat4 matra[4]; layout(column_major) mat4 matca[4]; layout(row_major) mat4 matr; layout(column_major) mat4 matc; layout(align=512, offset=1024) mat4 matrdef; }; uniform sampler2DRect sampR; uniform isamplerBuffer sampB; float foo(); void main() { o.y = gl_ClipDistance[2]; o.z = gl_ClipDistance[int(k)]; o.w = float(textureSize(sampR) + textureSize(sampB)) / 100.0; o.z = foo(); } // Test extra-function initializers float i1 = gl_FrontFacing ? -2.0 : 2.0; float i2 = 102; float foo() { return i1 + i2; } // test arrayed block layout(std140) uniform bi { vec3 v[2]; } bname[4]; glslang-16.0.0/Test/spv.150.geom000066400000000000000000000014141506534232700161400ustar00rootroot00000000000000#version 150 core layout(triangles_adjacency) in; layout(max_vertices = 30) out; layout(stream = 3, triangle_strip) out; in fromVertex { in vec3 color; } fromV[]; out toFragment { out vec3 color; } toF; out fromVertex { vec3 color; }; void main() { color = fromV[0].color; //?? gl_ClipDistance[3] = gl_in[1].gl_ClipDistance[2]; gl_Position = gl_in[0].gl_Position; gl_PointSize = gl_in[3].gl_PointSize; gl_PrimitiveID = gl_PrimitiveIDIn; gl_Layer = 2; EmitVertex(); color = 2 * fromV[0].color; gl_Position = 2.0 * gl_in[0].gl_Position; gl_PointSize = 2.0 * gl_in[3].gl_PointSize; gl_PrimitiveID = gl_PrimitiveIDIn + 1; gl_Layer = 3; EmitVertex(); EndPrimitive(); } glslang-16.0.0/Test/spv.150.vert000066400000000000000000000010411506534232700161650ustar00rootroot00000000000000#version 150 core in vec4 iv4; in float ps; in int ui; uniform sampler2D s2D; invariant gl_Position; struct s1 { int a; int a2; vec4 b[3]; }; struct s2 { int c; s1 d[4]; }; out s2 s2out; void main() { gl_Position = iv4; gl_PointSize = ps; gl_ClipDistance[2] = iv4.x; int i; s2out.d[i].b[2].w = ps; // test non-implicit lod texture(s2D, vec2(0.5)); textureProj(s2D, vec3(0.5)); textureLod(s2D, vec2(0.5), 3.2); } out float gl_ClipDistance[4]; glslang-16.0.0/Test/spv.16bitstorage-int.frag000066400000000000000000000031701506534232700207260ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_16bit_storage : enable struct S { int16_t x; i16vec2 y; i16vec3 z; }; layout(column_major, std140) uniform B1 { int16_t a; i16vec2 b; i16vec3 c; int16_t d[2]; S g; S h[2]; int j; } b1; layout(row_major, std430) buffer B2 { int16_t o; i16vec2 p; i16vec3 q; int16_t r[2]; S u; S v[2]; i16vec2 x[100]; int16_t w[]; } b2; layout(row_major, std140) uniform B5 { int16_t o; i16vec2 p; i16vec3 q; int16_t r[2]; S u; S v[2]; i16vec2 x[100]; int16_t w[100]; } b5; struct S2 { mat4x4 x; int16_t y; int z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; S3 y; } b4; void main() { b2.o = b1.a; b2.p = i16vec2(ivec3(b2.q).xy); b2.p = i16vec2(ivec3(b5.q).xy); b2.r[0] = b2.r[0]; b2.r[1] = b5.r[1]; b2.p = b2.p; int x0 = int(b1.a); ivec4 x1 = ivec4(b1.a, b2.p, 1); b4.x.x = b3.x.x; b2.o = int16_t(ivec2(b2.p).x); b2.p = b2.v[1].y; ivec3 v3 = ivec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]); ivec3 u3 = ivec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]); b2.x[0] = b2.x[0]; b2.x[1] = b5.x[1]; b2.p.x = b1.a; b2.o = b2.p.x; b2.p = i16vec2(ivec2(1, 2)); b2.o = int16_t(3); b2.o = int16_t(b1.a); b2.p = i16vec2(b1.b); b2.q = i16vec3(b1.c); } glslang-16.0.0/Test/spv.16bitstorage-uint.frag000066400000000000000000000032121506534232700211100ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_16bit_storage : enable struct S { uint16_t x; u16vec2 y; u16vec3 z; }; layout(column_major, std140) uniform B1 { uint16_t a; u16vec2 b; u16vec3 c; uint16_t d[2]; S g; S h[2]; uint j; } b1; layout(row_major, std430) buffer B2 { uint16_t o; u16vec2 p; u16vec3 q; uint16_t r[2]; S u; S v[2]; u16vec2 x[100]; uint16_t w[]; } b2; layout(row_major, std140) uniform B5 { uint16_t o; u16vec2 p; u16vec3 q; uint16_t r[2]; S u; S v[2]; u16vec2 x[100]; uint16_t w[100]; } b5; struct S2 { mat4x4 x; uint16_t y; uint z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; S3 y; } b4; void main() { b2.o = b1.a; b2.p = u16vec2(uvec3(b2.q).xy); b2.p = u16vec2(uvec3(b5.q).xy); b2.r[0] = b2.r[0]; b2.r[1] = b5.r[1]; b2.p = b2.p; uint x0 = uint(b1.a); uvec4 x1 = uvec4(b1.a, b2.p, 1); b4.x.x = b3.x.x; b2.o = uint16_t(uvec2(b2.p).x); b2.p = b2.v[1].y; uvec3 v3 = uvec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]); uvec3 u3 = uvec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]); b2.x[0] = b2.x[0]; b2.x[1] = b5.x[1]; b2.p.x = b1.a; b2.o = b2.p.x; b2.p = u16vec2(uvec2(1, 2)); b2.o = uint16_t(3u); b2.o = uint16_t(b1.a); b2.p = u16vec2(b1.b); b2.q = u16vec3(b1.c); } glslang-16.0.0/Test/spv.16bitstorage.frag000066400000000000000000000032261506534232700201400ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_16bit_storage : enable struct S { float16_t x; f16vec2 y; f16vec3 z; }; layout(column_major, std140) uniform B1 { float16_t a; f16vec2 b; f16vec3 c; float16_t d[2]; S g; S h[2]; int j; } b1; layout(row_major, std430) buffer B2 { float16_t o; f16vec2 p; f16vec3 q; float16_t r[2]; S u; S v[2]; f16vec2 x[100]; float16_t w[]; } b2; layout(row_major, std140) uniform B5 { float16_t o; f16vec2 p; f16vec3 q; float16_t r[2]; S u; S v[2]; f16vec2 x[100]; float16_t w[100]; } b5; struct S2 { mat4x4 x; float16_t y; float z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; S3 y; } b4; void main() { b2.o = b1.a; b2.p = f16vec2(vec3(b2.q).xy); b2.p = f16vec2(vec3(b5.q).xy); b2.r[0] = b2.r[0]; b2.r[1] = b5.r[1]; b2.p = b2.p; float x0 = float(b1.a); vec4 x1 = vec4(b1.a, b2.p, 1.0); b4.x.x = b3.x.x; b2.o = float16_t(vec2(b2.p).x); b2.p = b2.v[1].y; vec3 v3 = vec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]); vec3 u3 = vec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]); b2.x[0] = b2.x[0]; b2.x[1] = b5.x[1]; b2.p.x = b1.a; b2.o = b2.p.x; b2.p = f16vec2(vec2(1.0, 2.0)); b2.o = float16_t(3.0); b2.o = float16_t(b1.a); b2.p = f16vec2(b1.b); b2.q = f16vec3(b1.c); } glslang-16.0.0/Test/spv.16bitstorage_Error-int.frag000066400000000000000000000027051506534232700221020ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_16bit_storage : enable struct S { int16_t x; i16vec2 y; i16vec3 z; }; layout(column_major, std140) uniform B1 { int16_t a; i16vec2 b; i16vec3 c; int16_t d[2]; S g; S h[2]; int j; } b1; layout(row_major, std430) buffer B2 { int16_t o; i16vec2 p; i16vec3 q; int16_t r[2]; S u; S v[2]; int16_t w[]; } b2; struct S2 { mat4x4 x; int16_t y; int z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; } b4; void func3(S2 x) { } S2 func4() { return b4.x; } int func(int16_t a) { return 0; } struct S4 { int x; int16_t y; }; int func2(int a) { return 0; } void main() { b2.o = b2.q[1]; b2.p = b2.q.xy; b2.o = max(b1.a, b1.a); bvec2 bv = lessThan(b2.p, b2.p); b2.o = b1.a + b1.a; b2.o = -b1.a; b2.o = b1.a + 1; b2.p = b2.p.yx; b4.x = b3.x; int16_t f0; S2 f1; S3 f2; if (b1.a == b1.a) {} b2.r = b2.r; b2.p = i16vec2(3, 4); i16vec2[2](i16vec2(ivec2(1,2)), i16vec2(ivec2(3,4))); // NOT ERRORING YET b3.x; S4(0, int16_t(0)); func2(b1.a); } layout(column_major, std140) uniform B6 { i16mat2x3 e; } b6; glslang-16.0.0/Test/spv.16bitstorage_Error-uint.frag000066400000000000000000000027301506534232700222650ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_16bit_storage : enable struct S { uint16_t x; u16vec2 y; u16vec3 z; }; layout(column_major, std140) uniform B1 { uint16_t a; u16vec2 b; u16vec3 c; uint16_t d[2]; S g; S h[2]; uint j; } b1; layout(row_major, std430) buffer B2 { uint16_t o; u16vec2 p; u16vec3 q; uint16_t r[2]; S u; S v[2]; uint16_t w[]; } b2; struct S2 { mat4x4 x; uint16_t y; uint z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; } b4; void func3(S2 x) { } S2 func4() { return b4.x; } uint func(uint16_t a) { return 0; } struct S4 { uint x; uint16_t y; }; uint func2(uint a) { return 0; } void main() { b2.o = b2.q[1]; b2.p = b2.q.xy; b2.o = max(b1.a, b1.a); bvec2 bv = lessThan(b2.p, b2.p); b2.o = b1.a + b1.a; b2.o = -b1.a; b2.o = b1.a + 1; b2.p = b2.p.yx; b4.x = b3.x; uint16_t f0; S2 f1; S3 f2; if (b1.a == b1.a) {} b2.r = b2.r; b2.p = u16vec2(3, 4); u16vec2[2](u16vec2(uvec2(1,2)), u16vec2(uvec2(3,4))); // NOT ERRORING YET b3.x; S4(0u, uint16_t(0u)); func2(b1.a); } layout(column_major, std140) uniform B6 { u16mat2x3 e; } b6; glslang-16.0.0/Test/spv.16bitstorage_Error.frag000066400000000000000000000030141506534232700213040ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_16bit_storage : enable struct S { float16_t x; f16vec2 y; f16vec3 z; }; layout(column_major, std140) uniform B1 { float16_t a; f16vec2 b; f16vec3 c; float16_t d[2]; S g; S h[2]; int j; } b1; layout(row_major, std430) buffer B2 { float16_t o; f16vec2 p; f16vec3 q; float16_t r[2]; S u; S v[2]; float16_t w[]; } b2; struct S2 { mat4x4 x; float16_t y; float z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; } b4; void func3(S2 x) { } S2 func4() { return b4.x; } float func(float16_t a) { return 0.0; } struct S4 { float x; float16_t y; }; float func2(float a) { return 0.0; } void main() { b2.o = b2.q[1]; b2.p = b2.q.xy; b2.o = max(b1.a, b1.a); bvec2 bv = lessThan(b2.p, b2.p); b2.o = b1.a + b1.a; b2.o = -b1.a; b2.o = b1.a + 1.0; b2.p = b2.p.yx; b4.x = b3.x; float16_t f0; S2 f1; S3 f2; if (b1.a == b1.a) {} b2.r = b2.r; b2.o = 1.0HF; b2.p = f16vec2(3.0, 4.0); f16vec2[2](f16vec2(vec2(1.0,2.0)), f16vec2(vec2(3.0,4.0))); // NOT ERRORING YET b3.x; S4(0.0, float16_t(0.0)); func2(b1.a); } layout(column_major, std140) uniform B6 { f16mat2x3 e; } b6; glslang-16.0.0/Test/spv.16bitxfb.vert000066400000000000000000000015301506534232700173100ustar00rootroot00000000000000#version 450 core #extension GL_AMD_gpu_shader_half_float: enable #extension GL_AMD_gpu_shader_int16: enable layout(location = 0) in f16vec4 if16v4; layout(location = 1) in i16vec4 ii16v4; layout(location = 2) in u16vec4 iu16v4; layout(location = 0, xfb_buffer = 0, xfb_stride = 6, xfb_offset = 0) out f16vec3 of16v3; layout(location = 1, xfb_buffer = 1, xfb_stride = 6, xfb_offset = 0) out F16Out { float16_t of16; f16vec2 of16v2; }; layout(location = 5, xfb_buffer = 2, xfb_stride = 6, xfb_offset = 0) out i16vec3 oi16v3; layout(location = 6, xfb_buffer = 3, xfb_stride = 6, xfb_offset = 0) out I16Out { uint16_t ou16; u16vec2 ou16v2; }; void main() { of16v3 = if16v4.xyz; of16 = if16v4.x; of16v2 = if16v4.xy; oi16v3 = ii16v4.xyz; ou16 = iu16v4.x; ou16v2 = iu16v4.xy; }glslang-16.0.0/Test/spv.300BuiltIns.vert000066400000000000000000000003611506534232700176400ustar00rootroot00000000000000#version 310 es in mediump float ps; invariant gl_Position; void main() { gl_Position = vec4(ps); gl_Position *= float(4 - gl_VertexIndex); gl_PointSize = ps; gl_PointSize *= float(5 - gl_InstanceIndex); } glslang-16.0.0/Test/spv.300layout.frag000066400000000000000000000004201506534232700173570ustar00rootroot00000000000000#version 310 es precision mediump float; in vec4 pos; in vec3 color; layout(location = 7) out vec3 c; layout(LocatioN = 3) out vec4 p[2]; struct S { vec3 c; float f; }; in S s; void main() { c = color + s.c; p[1] = pos * s.f; } glslang-16.0.0/Test/spv.300layout.vert000066400000000000000000000020531506534232700174240ustar00rootroot00000000000000#version 310 es layout(location = 7) in vec3 c; layout(LocatioN = 3) in vec4 p; layout(location = 9) in ivec2 aiv2; out vec4 pos; out vec3 color; flat out int iout; layout(row_major) uniform; // default is now row_major layout(std140) uniform Transform { // layout of this block is std140 mat4 M1; // row_major layout(column_major) mat4 M2; // column major mat3 N1; // row_major int iuin; } tblock; uniform T2 { // layout of this block is shared bool b; mat4 t2m; }; layout(column_major) uniform T3 { // shared and column_major mat4 M3; // column_major layout(row_major) mat4 M4; // row major mat2x3 N2; // column_major layout(align=16, offset=2048) uvec3 uv3a[4]; }; in uint uiuin; struct S { vec3 c; float f; }; out S s; void main() { pos = p * (tblock.M1 + tblock.M2 + M4 + M3 + t2m); color = c * tblock.N1; iout = tblock.iuin + int(uiuin) + aiv2.y; s.c = c; s.f = p.x; if (N2[1] != vec3(1.0) || uv3a[2] != uvec3(5)) ++s.c; } glslang-16.0.0/Test/spv.300layoutp.vert000066400000000000000000000020121506534232700175770ustar00rootroot00000000000000#version 310 es layout(location = 7) in vec3 c; layout(LocatioN = 3) in vec4 p; layout(location = 9) in ivec2 aiv2; out vec4 pos; out vec3 color; flat out int iout; layout(row_major) uniform; // default is now row_major layout(std140) uniform Transform { // layout of this block is std140 mat4 M1; // row_major layout(column_major) mat4 M2; // column major mat3 N1; // row_major int iuin; } tblock; uniform T2 { // layout of this block is shared bool b; mat4 t2m; }; layout(column_major) uniform T3 { // shared and column_major mat4 M3; // column_major layout(row_major) mat4 M4; // row major mat2x3 N2; // column_major uvec3 uv3a[4]; }; uint uiuin; struct S { vec3 c; float f; }; out S s; void main() { pos = p * (tblock.M1 * tblock.M2 * M4 * M3 * t2m); color = c * tblock.N1; iout = tblock.iuin + int(uiuin) + aiv2.y; s.c = c; s.f = p.x; if (N2[1] != vec3(1.0) || uv3a[2] != uvec3(5)) ++s.c; } glslang-16.0.0/Test/spv.310.bitcast.frag000066400000000000000000000020311506534232700175520ustar00rootroot00000000000000#version 310 es flat in mediump int i1; flat in lowp ivec2 i2; flat in mediump ivec3 i3; flat in highp ivec4 i4; flat in mediump uint u1; flat in lowp uvec2 u2; flat in mediump uvec3 u3; flat in highp uvec4 u4; mediump in float f1; lowp in vec2 f2; mediump in vec3 f3; highp in vec4 f4; void main() { highp ivec4 idata = ivec4(0); idata.x += floatBitsToInt(f1); idata.xy += floatBitsToInt(f2); idata.xyz += floatBitsToInt(f3); idata += floatBitsToInt(f4); highp uvec4 udata = uvec4(0); udata.x += floatBitsToUint(f1); udata.xy += floatBitsToUint(f2); udata.xyz += floatBitsToUint(f3); udata += floatBitsToUint(f4); highp vec4 fdata = vec4(0.0); fdata.x += intBitsToFloat(i1); fdata.xy += intBitsToFloat(i2); fdata.xyz += intBitsToFloat(i3); fdata += intBitsToFloat(i4); fdata.x += uintBitsToFloat(u1); fdata.xy += uintBitsToFloat(u2); fdata.xyz += uintBitsToFloat(u3); fdata += uintBitsToFloat(u4); }glslang-16.0.0/Test/spv.310.comp000066400000000000000000000013051506534232700161440ustar00rootroot00000000000000#version 310 es precision highp float; layout (local_size_x = 16, local_size_y = 32, local_size_z = 4) in; shared float s; shared int i; buffer outb { float f; float g; float h; vec3 uns[]; } outbname; buffer outbna { int k; vec4 na; } outbnamena; buffer outs { int s; vec4 va[]; } outnames; #extension GL_EXT_device_group : enable void main() { barrier(); outbname.f = s; outbnamena.na = vec4(s); s = outbname.uns[18].x; outbname.uns[17] = vec3(3.0); outbname.uns[i] = vec3(s); outnames.va[gl_LocalInvocationID.x] = vec4(s); outnames.s = outbname.uns.length(); gl_DeviceIndex; memoryBarrierShared(); groupMemoryBarrier(); } glslang-16.0.0/Test/spv.320.meshShaderUserDefined.mesh000066400000000000000000000024641506534232700223520ustar00rootroot00000000000000#version 320 es #define MAX_VER 81 #define MAX_PRIM 32 #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 perprimitiveNV 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() { int iid = int(gl_LocalInvocationID.x); int gid = int(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(); } glslang-16.0.0/Test/spv.330.geom000066400000000000000000000007461506534232700161470ustar00rootroot00000000000000#version 330 core #extension GL_ARB_separate_shader_objects : enable in gl_PerVertex { float gl_ClipDistance[1]; vec4 gl_Position; } gl_in[]; out gl_PerVertex { vec4 gl_Position; float gl_ClipDistance[1]; }; layout( triangles ) in; layout( triangle_strip, max_vertices = 3 ) out; void main() { vec4 v; gl_Position = gl_in[1].gl_Position; gl_ClipDistance[0] = gl_in[1].gl_ClipDistance[0]; EmitVertex(); EndPrimitive(); } glslang-16.0.0/Test/spv.400.frag000066400000000000000000000206731506534232700161360ustar00rootroot00000000000000#version 400 core in vec2 c2D; flat in int i; flat in uint u; out uint uo; out vec4 outp; out ivec4 ioutp; out uvec4 uoutp; uniform sampler2D arrayedSampler[5]; uniform usampler2DRect samp2dr; uniform isampler2DArray isamp2DA; uniform sampler2DRectShadow u2drs; #extension GL_ARB_separate_shader_objects : enable layout(location = 6) in vec4 vl2; void foo23() { const ivec2[3] offsets = ivec2[3](ivec2(1,2), ivec2(3,4), ivec2(15,16)); outp.x += textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), offsets[1]); } void doubles() { double doublev; dvec2 dvec2v; dvec3 dvec3v; dvec4 dvec4v; bool boolv; bvec2 bvec2v; bvec3 bvec3v; bvec4 bvec4v; doublev = sqrt(2.9); dvec2v = sqrt(dvec2(2.7)); dvec3v = sqrt(dvec3(2.0)); dvec4v = sqrt(dvec4(doublev)); doublev += inversesqrt(doublev); dvec2v += inversesqrt(dvec2v); dvec3v += inversesqrt(dvec3v); dvec4v += inversesqrt(dvec4v); doublev += abs(doublev); dvec2v += abs(dvec2v); dvec3v += abs(dvec3v); dvec4v += abs(dvec4v); doublev += sign(doublev); dvec2v += sign(dvec2v); dvec3v += sign(dvec3v); dvec4v += sign(dvec4v); doublev += floor(doublev); dvec2v += floor(dvec2v); dvec3v += floor(dvec3v); dvec4v += floor(dvec4v); doublev += trunc(doublev); dvec2v += trunc(dvec2v); dvec3v += trunc(dvec3v); dvec4v += trunc(dvec4v); doublev += round(doublev); dvec2v += round(dvec2v); dvec3v += round(dvec3v); dvec4v += round(dvec4v); doublev += roundEven(doublev); dvec2v += roundEven(dvec2v); dvec3v += roundEven(dvec3v); dvec4v += roundEven(dvec4v); doublev += ceil(doublev); dvec2v += ceil(dvec2v); dvec3v += ceil(dvec3v); dvec4v += ceil(dvec4v); doublev += fract(doublev); dvec2v += fract(dvec2v); dvec3v += fract(dvec3v); dvec4v += fract(dvec4v); doublev += mod(doublev, doublev); dvec2v += mod(dvec2v, doublev); dvec3v += mod(dvec3v, doublev); dvec4v += mod(dvec4v, doublev); dvec2v += mod(dvec2v, dvec2v); dvec3v += mod(dvec3v, dvec3v); dvec4v += mod(dvec4v, dvec4v); doublev += modf(doublev, doublev); dvec2v += modf(dvec2v, dvec2v); dvec3v += modf(dvec3v, dvec3v); dvec4v += modf(dvec4v, dvec4v); doublev += min(doublev, doublev); dvec2v += min(dvec2v, doublev); dvec3v += min(dvec3v, doublev); dvec4v += min(dvec4v, doublev); dvec2v += min(dvec2v, dvec2v); dvec3v += min(dvec3v, dvec3v); dvec4v += min(dvec4v, dvec4v); doublev += max(doublev, doublev); dvec2v += max(dvec2v, doublev); dvec3v += max(dvec3v, doublev); dvec4v += max(dvec4v, doublev); dvec2v += max(dvec2v, dvec2v); dvec3v += max(dvec3v, dvec3v); dvec4v += max(dvec4v, dvec4v); doublev += clamp(doublev, doublev, doublev); dvec2v += clamp(dvec2v, doublev, doublev); dvec3v += clamp(dvec3v, doublev, doublev); dvec4v += clamp(dvec4v, doublev, doublev); dvec2v += clamp(dvec2v, dvec2v, dvec2v); dvec3v += clamp(dvec3v, dvec3v, dvec3v); dvec4v += clamp(dvec4v, dvec4v, dvec4v); doublev += mix(doublev, doublev, doublev); dvec2v += mix(dvec2v, dvec2v, doublev); dvec3v += mix(dvec3v, dvec3v, doublev); dvec4v += mix(dvec4v, dvec4v, doublev); dvec2v += mix(dvec2v, dvec2v, dvec2v); dvec3v += mix(dvec3v, dvec3v, dvec3v); dvec4v += mix(dvec4v, dvec4v, dvec4v); doublev += mix(doublev, doublev, boolv); dvec2v += mix(dvec2v, dvec2v, bvec2v); dvec3v += mix(dvec3v, dvec3v, bvec3v); dvec4v += mix(dvec4v, dvec4v, bvec4v); doublev += step(doublev, doublev); dvec2v += step(dvec2v, dvec2v); dvec3v += step(dvec3v, dvec3v); dvec4v += step(dvec4v, dvec4v); dvec2v += step(doublev, dvec2v); dvec3v += step(doublev, dvec3v); dvec4v += step(doublev, dvec4v); doublev += smoothstep(doublev, doublev, doublev); dvec2v += smoothstep(dvec2v, dvec2v, dvec2v); dvec3v += smoothstep(dvec3v, dvec3v, dvec3v); dvec4v += smoothstep(dvec4v, dvec4v, dvec4v); dvec2v += smoothstep(doublev, doublev, dvec2v); dvec3v += smoothstep(doublev, doublev, dvec3v); dvec4v += smoothstep(doublev, doublev, dvec4v); boolv = isnan(doublev); bvec2v = isnan(dvec2v); bvec3v = isnan(dvec3v); bvec4v = isnan(dvec4v); boolv = boolv ? isinf(doublev) : false; bvec2v = boolv ? isinf(dvec2v) : bvec2(false); bvec3v = boolv ? isinf(dvec3v) : bvec3(false); bvec4v = boolv ? isinf(dvec4v) : bvec4(false); doublev += length(doublev); doublev += length(dvec2v); doublev += length(dvec3v); doublev += length(dvec4v); doublev += distance(doublev, doublev); doublev += distance(dvec2v, dvec2v); doublev += distance(dvec3v, dvec3v); doublev += distance(dvec4v, dvec4v); doublev += dot(doublev, doublev); doublev += dot(dvec2v, dvec2v); doublev += dot(dvec3v, dvec3v); doublev += dot(dvec4v, dvec4v); dvec3v += cross(dvec3v, dvec3v); doublev += normalize(doublev); dvec2v += normalize(dvec2v); dvec3v += normalize(dvec3v); dvec4v += normalize(dvec4v); doublev += faceforward(doublev, doublev, doublev); dvec2v += faceforward(dvec2v, dvec2v, dvec2v); dvec3v += faceforward(dvec3v, dvec3v, dvec3v); dvec4v += faceforward(dvec4v, dvec4v, dvec4v); doublev += reflect(doublev, doublev); dvec2v += reflect(dvec2v, dvec2v); dvec3v += reflect(dvec3v, dvec3v); dvec4v += reflect(dvec4v, dvec4v); doublev += refract(doublev, doublev, doublev); dvec2v += refract(dvec2v, dvec2v, doublev); dvec3v += refract(dvec3v, dvec3v, doublev); dvec4v += refract(dvec4v, dvec4v, doublev); dmat2 dmat2v = outerProduct(dvec2v, dvec2v); dmat3 dmat3v = outerProduct(dvec3v, dvec3v); dmat4 dmat4v = outerProduct(dvec4v, dvec4v); dmat2x3 dmat2x3v = outerProduct(dvec3v, dvec2v); dmat3x2 dmat3x2v = outerProduct(dvec2v, dvec3v); dmat2x4 dmat2x4v = outerProduct(dvec4v, dvec2v); dmat4x2 dmat4x2v = outerProduct(dvec2v, dvec4v); dmat3x4 dmat3x4v = outerProduct(dvec4v, dvec3v); dmat4x3 dmat4x3v = outerProduct(dvec3v, dvec4v); dmat2v *= matrixCompMult(dmat2v, dmat2v); dmat3v *= matrixCompMult(dmat3v, dmat3v); dmat4v *= matrixCompMult(dmat4v, dmat4v); dmat2x3v = matrixCompMult(dmat2x3v, dmat2x3v); // For now, relying on no dead-code elimination dmat2x4v = matrixCompMult(dmat2x4v, dmat2x4v); dmat3x2v = matrixCompMult(dmat3x2v, dmat3x2v); dmat3x4v = matrixCompMult(dmat3x4v, dmat3x4v); dmat4x2v = matrixCompMult(dmat4x2v, dmat4x2v); dmat4x3v = matrixCompMult(dmat4x3v, dmat4x3v); dmat2v *= transpose(dmat2v); dmat3v *= transpose(dmat3v); dmat4v *= transpose(dmat4v); dmat2x3v = transpose(dmat3x2v); // For now, relying on no dead-code elimination dmat3x2v = transpose(dmat2x3v); dmat2x4v = transpose(dmat4x2v); dmat4x2v = transpose(dmat2x4v); dmat3x4v = transpose(dmat4x3v); dmat4x3v = transpose(dmat3x4v); doublev += determinant(dmat2v); doublev += determinant(dmat3v); doublev += determinant(dmat4v); dmat2v *= inverse(dmat2v); dmat3v *= inverse(dmat3v); dmat4v *= inverse(dmat4v); outp *= float(doublev + dvec2v.y + dvec3v.z + dvec4v.w + dmat2v[1][1] + dmat3v[2][2] + dmat4v[3][3] + dmat2x3v[1][1] + dmat3x2v[1][1] + dmat3x4v[2][2] + dmat4x3v[2][2] + dmat2x4v[1][1] + dmat4x2v[1][1] + float(boolv) + float(bvec2v.x) + float(bvec3v.x) + float(bvec4v.x)); } void main() { vec4 v; v = texture(arrayedSampler[i], c2D); outp.x = gl_ClipDistance[1]; outp.yzw = v.yzw; ivec2 offsets[4]; const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); uoutp = textureGatherOffsets(samp2dr, c2D, constOffsets, 2); outp += textureGather(arrayedSampler[0], c2D); ioutp = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 3); ioutp += textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 1+2); ioutp += textureGatherOffset(isamp2DA, vec3(0.1), ivec2(i)); outp += gl_FragCoord + vl2; uo = u % i; foo23(); doubles(); int id = gl_PrimitiveID; } glslang-16.0.0/Test/spv.400.tesc000066400000000000000000000021121506534232700161410ustar00rootroot00000000000000#version 400 core layout(vertices = 4) out; int outa[gl_out.length()]; patch out vec4 patchOut; void main() { barrier(); int a = gl_MaxTessControlInputComponents + gl_MaxTessControlOutputComponents + gl_MaxTessControlTextureImageUnits + gl_MaxTessControlUniformComponents + gl_MaxTessControlTotalOutputComponents; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; float cd = gl_in[1].gl_ClipDistance[2]; int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; int iid = gl_InvocationID; gl_out[gl_InvocationID].gl_Position = p; gl_out[gl_InvocationID].gl_PointSize = ps; gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; gl_TessLevelOuter[3] = 3.2; gl_TessLevelInner[1] = 1.3; } in vec2 inb[]; in vec2 ind[gl_MaxPatchVertices]; #extension GL_ARB_separate_shader_objects : enable layout(location = 3) in vec4 ivla[]; layout(location = 4) in vec4 ivlb[]; layout(location = 3) out vec4 ovla[]; layout(location = 4) out vec4 ovlb[]; glslang-16.0.0/Test/spv.400.tese000066400000000000000000000022321506534232700161460ustar00rootroot00000000000000#version 400 core layout(triangles, ccw) in; layout(fractional_odd_spacing) in; layout(point_mode) in; patch in vec4 patchIn; void main() { int a = gl_MaxTessEvaluationInputComponents + gl_MaxTessEvaluationOutputComponents + gl_MaxTessEvaluationTextureImageUnits + gl_MaxTessEvaluationUniformComponents + gl_MaxTessPatchComponents + gl_MaxPatchVertices + gl_MaxTessGenLevel; vec4 p = gl_in[1].gl_Position; float ps = gl_in[1].gl_PointSize; float cd = gl_in[1].gl_ClipDistance[2]; int pvi = gl_PatchVerticesIn; int pid = gl_PrimitiveID; vec3 tc = gl_TessCoord; float tlo = gl_TessLevelOuter[3]; float tli = gl_TessLevelInner[1]; gl_Position = p; gl_PointSize = ps; gl_ClipDistance[2] = cd; } #extension GL_ARB_separate_shader_objects : enable in vec2 inb[]; in vec2 ind[gl_MaxPatchVertices]; in testblb { int f; } blb[]; in testbld { int f; } bld[gl_MaxPatchVertices]; layout(location = 23) in vec4 ivla[]; layout(location = 24) in vec4 ivlb[]; layout(location = 23) out vec4 ovla[2]; glslang-16.0.0/Test/spv.420.geom000066400000000000000000000013561506534232700161450ustar00rootroot00000000000000#version 420 core layout(triangles) in; in gl_PerVertex { float gl_PointSize; } gl_in[]; out gl_PerVertex { float gl_PointSize; }; layout(line_strip) out; layout(max_vertices = 127) out; layout(invocations = 4) in; uniform sampler2D s2D; in vec2 coord[]; int i; void main() { float p = gl_in[1].gl_PointSize; gl_PointSize = p; gl_ViewportIndex = 7; EmitStreamVertex(1); EndStreamPrimitive(0); EmitVertex(); EndPrimitive(); int id = gl_InvocationID; const ivec2 offsets[5] = { ivec2(0,1), ivec2(1,-2), ivec2(0,3), ivec2(-3,0), ivec2(2,1) }; vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy); } glslang-16.0.0/Test/spv.430.frag000066400000000000000000000002161506534232700161300ustar00rootroot00000000000000#version 430 core out vec4 color; void main() { color = vec4(1.0); color *= gl_Layer; color *= gl_ViewportIndex; } glslang-16.0.0/Test/spv.430.vert000066400000000000000000000015141506534232700161730ustar00rootroot00000000000000#version 450 core out gl_PerVertex { float gl_ClipDistance[]; }; const float cx = 4.20; const float dx = 4.20; in vec4 bad[10]; highp in vec4 badorder; out invariant vec4 badorder2; out flat vec4 badorder3; in float f; void main() { gl_ClipDistance[2] = 3.7; if (bad[0].x == cx.x) badorder3 = bad[0]; gl_ClipDistance[0] = f.x; } layout(binding = 3) uniform boundblock { int aoeu; } boundInst; layout(binding = 7) uniform anonblock { int aoeu; } ; layout(binding = 4) uniform sampler2D sampb1; layout(binding = 5) uniform sampler2D sampb2[10]; layout(binding = 31) uniform sampler2D sampb4; struct S { mediump float a; highp uvec2 b; highp vec3 c; }; struct SS { vec4 b; S s; vec4 c; }; layout(location = 0) flat out SS var; out MS { layout(location = 17) float f; } outMS; glslang-16.0.0/Test/spv.450.geom000066400000000000000000000003631506534232700161450ustar00rootroot00000000000000#version 450 core layout(triangles) in; layout(line_strip) out; layout(max_vertices = 127) out; layout(invocations = 4) in; void main() { gl_PointSize = gl_in[1].gl_PointSize; gl_Layer = 2; gl_ViewportIndex = 3; } glslang-16.0.0/Test/spv.450.noRedecl.tesc000066400000000000000000000001751506534232700177070ustar00rootroot00000000000000#version 450 core layout(vertices = 4) out; patch out vec4 patchOut; void main() { gl_in[0].gl_PointSize; } glslang-16.0.0/Test/spv.450.tesc000066400000000000000000000016441506534232700161570ustar00rootroot00000000000000#version 450 core layout(vertices = 4) out; layout(location=1) patch out vec4 patchOut; struct S { float sMem1; // should not see a patch decoration float sMem2; // should not see a patch decoration }; layout(location = 12) patch out TheBlock { highp float bMem1; // should not see a location decoration highp float bMem2; S s; // should see a patch decoration } tcBlock[2]; void main() { gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; } layout(location = 2) patch out SingleBlock { highp float bMem1; // should not see a location decoration highp float bMem2; S s; // should see a patch decoration } singleBlock; layout(location = 20) patch out bn { vec4 v1; // location 20 layout(location = 24) vec4 v2; // location 24 vec4 v3; // location 25 };glslang-16.0.0/Test/spv.460.comp000066400000000000000000000002171506534232700161530ustar00rootroot00000000000000#version 460 void main() { bool b1; b1 = anyInvocation(b1); b1 = allInvocations(b1); b1 = allInvocationsEqual(b1); } glslang-16.0.0/Test/spv.460.frag000066400000000000000000000006241506534232700161360ustar00rootroot00000000000000#version 460 core layout(binding = 0) uniform atomic_uint aui; uint ui; void main() { atomicCounterAdd(aui, ui); atomicCounterSubtract(aui, ui); atomicCounterMin(aui, ui); atomicCounterMax(aui, ui); atomicCounterAnd(aui, ui); atomicCounterOr(aui, ui); atomicCounterXor(aui, ui); atomicCounterExchange(aui, ui); atomicCounterCompSwap(aui, ui, ui); } glslang-16.0.0/Test/spv.460.subgroupEXT.mesh000066400000000000000000000111571506534232700204040ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/spv.460.subgroupEXT.task000066400000000000000000000071601506534232700204110ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/spv.460.vert000066400000000000000000000001351506534232700161740ustar00rootroot00000000000000#version 460 void main() { int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID; } glslang-16.0.0/Test/spv.8bit-16bit-construction.frag000066400000000000000000000007251506534232700221500ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_8bit_storage : enable #extension GL_EXT_shader_16bit_storage : enable buffer B { int8_t i8_from_i16; int16_t i16_from_i8; uint8_t u8_from_u16; uint16_t u16_from_u8; float16_t f16_from_i8; }; void main() { i8_from_i16 = int8_t(int16_t(1)); i16_from_i8 = int16_t(int8_t(1)); u8_from_u16 = uint8_t(uint16_t(1)); u16_from_u8 = uint16_t(uint8_t(1)); f16_from_i8 = float16_t(int8_t(1)); } glslang-16.0.0/Test/spv.8bitstorage-int.frag000066400000000000000000000031331506534232700206460ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_8bit_storage : enable struct S { int8_t x; i8vec2 y; i8vec3 z; }; layout(column_major, std140) uniform B1 { int8_t a; i8vec2 b; i8vec3 c; int8_t d[2]; S g; S h[2]; int j; } b1; layout(row_major, std430) buffer B2 { int8_t o; i8vec2 p; i8vec3 q; int8_t r[2]; S u; S v[2]; i8vec2 x[100]; int8_t w[]; } b2; layout(row_major, std140) uniform B5 { int8_t o; i8vec2 p; i8vec3 q; int8_t r[2]; S u; S v[2]; i8vec2 x[100]; int8_t w[100]; } b5; struct S2 { mat4x4 x; int8_t y; int z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; S3 y; } b4; void main() { b2.o = b1.a; b2.p = i8vec2(ivec3(b2.q).xy); b2.p = i8vec2(ivec3(b5.q).xy); b2.r[0] = b2.r[0]; b2.r[1] = b5.r[1]; b2.p = b2.p; int x0 = int(b1.a); ivec4 x1 = ivec4(b1.a, b2.p, 1); b4.x.x = b3.x.x; b2.o = int8_t(ivec2(b2.p).x); b2.p = b2.v[1].y; ivec3 v3 = ivec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]); ivec3 u3 = ivec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]); b2.x[0] = b2.x[0]; b2.x[1] = b5.x[1]; b2.p.x = b1.a; b2.o = b2.p.x; b2.p = i8vec2(ivec2(1, 2)); b2.o = int8_t(3); b2.o = int8_t(b1.a); b2.p = i8vec2(b1.b); b2.q = i8vec3(b1.c); } glslang-16.0.0/Test/spv.8bitstorage-ssbo.vert000066400000000000000000000003771506534232700210720ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_8bit_storage: require layout(binding = 0) readonly buffer Vertices { uint8_t vertices[]; }; layout(location = 0) out vec4 color; void main() { color = vec4(int(vertices[gl_VertexIndex])); } glslang-16.0.0/Test/spv.8bitstorage-ubo.vert000066400000000000000000000004031506534232700206770ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_8bit_storage: require layout(binding = 0) readonly uniform Vertices { uint8_t vertices[512]; }; layout(location = 0) out vec4 color; void main() { color = vec4(int(vertices[gl_VertexIndex])); } glslang-16.0.0/Test/spv.8bitstorage-uint.frag000066400000000000000000000031551506534232700210370ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_8bit_storage : enable struct S { uint8_t x; u8vec2 y; u8vec3 z; }; layout(column_major, std140) uniform B1 { uint8_t a; u8vec2 b; u8vec3 c; uint8_t d[2]; S g; S h[2]; uint j; } b1; layout(row_major, std430) buffer B2 { uint8_t o; u8vec2 p; u8vec3 q; uint8_t r[2]; S u; S v[2]; u8vec2 x[100]; uint8_t w[]; } b2; layout(row_major, std140) uniform B5 { uint8_t o; u8vec2 p; u8vec3 q; uint8_t r[2]; S u; S v[2]; u8vec2 x[100]; uint8_t w[100]; } b5; struct S2 { mat4x4 x; uint8_t y; uint z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; S3 y; } b4; void main() { b2.o = b1.a; b2.p = u8vec2(uvec3(b2.q).xy); b2.p = u8vec2(uvec3(b5.q).xy); b2.r[0] = b2.r[0]; b2.r[1] = b5.r[1]; b2.p = b2.p; uint x0 = uint(b1.a); uvec4 x1 = uvec4(b1.a, b2.p, 1); b4.x.x = b3.x.x; b2.o = uint8_t(uvec2(b2.p).x); b2.p = b2.v[1].y; uvec3 v3 = uvec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]); uvec3 u3 = uvec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]); b2.x[0] = b2.x[0]; b2.x[1] = b5.x[1]; b2.p.x = b1.a; b2.o = b2.p.x; b2.p = u8vec2(uvec2(1, 2)); b2.o = uint8_t(3u); b2.o = uint8_t(b1.a); b2.p = u8vec2(b1.b); b2.q = u8vec3(b1.c); } glslang-16.0.0/Test/spv.8bitstorage_Error-int.frag000066400000000000000000000026561506534232700220300ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_8bit_storage : enable struct S { int8_t x; i8vec2 y; i8vec3 z; }; layout(column_major, std140) uniform B1 { int8_t a; i8vec2 b; i8vec3 c; int8_t d[2]; S g; S h[2]; int j; } b1; layout(row_major, std430) buffer B2 { int8_t o; i8vec2 p; i8vec3 q; int8_t r[2]; S u; S v[2]; int8_t w[]; } b2; struct S2 { mat4x4 x; int8_t y; int z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; } b4; void func3(S2 x) { } S2 func4() { return b4.x; } int func(int8_t a) { return 0; } struct S4 { int x; int8_t y; }; int func2(int a) { return 0; } void main() { b2.o = b2.q[1]; b2.p = b2.q.xy; b2.o = max(b1.a, b1.a); bvec2 bv = lessThan(b2.p, b2.p); b2.o = b1.a + b1.a; b2.o = -b1.a; b2.o = b1.a + 1; b2.p = b2.p.yx; b4.x = b3.x; int8_t f0; S2 f1; S3 f2; if (b1.a == b1.a) {} b2.r = b2.r; b2.p = i8vec2(3, 4); i8vec2[2](i8vec2(ivec2(1,2)), i8vec2(ivec2(3,4))); // NOT ERRORING YET b3.x; S4(0, int8_t(0)); func2(b1.a); } layout(column_major, std140) uniform B6 { i8mat2x3 e; } b6; glslang-16.0.0/Test/spv.8bitstorage_Error-uint.frag000066400000000000000000000027011506534232700222040ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_8bit_storage : enable struct S { uint8_t x; u8vec2 y; u8vec3 z; }; layout(column_major, std140) uniform B1 { uint8_t a; u8vec2 b; u8vec3 c; uint8_t d[2]; S g; S h[2]; uint j; } b1; layout(row_major, std430) buffer B2 { uint8_t o; u8vec2 p; u8vec3 q; uint8_t r[2]; S u; S v[2]; uint8_t w[]; } b2; struct S2 { mat4x4 x; uint8_t y; uint z; }; struct S3 { S2 x; }; layout(row_major, std430) buffer B3 { S2 x; } b3; layout(column_major, std430) buffer B4 { S2 x; } b4; void func3(S2 x) { } S2 func4() { return b4.x; } uint func(uint8_t a) { return 0; } struct S4 { uint x; uint8_t y; }; uint func2(uint a) { return 0; } void main() { b2.o = b2.q[1]; b2.p = b2.q.xy; b2.o = max(b1.a, b1.a); bvec2 bv = lessThan(b2.p, b2.p); b2.o = b1.a + b1.a; b2.o = -b1.a; b2.o = b1.a + 1; b2.p = b2.p.yx; b4.x = b3.x; uint8_t f0; S2 f1; S3 f2; if (b1.a == b1.a) {} b2.r = b2.r; b2.p = u8vec2(3, 4); u8vec2[2](u8vec2(uvec2(1,2)), u8vec2(uvec2(3,4))); // NOT ERRORING YET b3.x; S4(0u, uint8_t(0u)); func2(b1.a); } layout(column_major, std140) uniform B6 { u8mat2x3 e; } b6; glslang-16.0.0/Test/spv.ARMCoreBuiltIns.frag000066400000000000000000000003521506534232700205250ustar00rootroot00000000000000#version 450 #extension GL_ARM_shader_core_builtins: enable layout(location = 0) out uvec4 data; void main (void) { uint temp = gl_WarpMaxIDARM; data = uvec4(gl_CoreIDARM, gl_CoreCountARM, gl_CoreMaxIDARM, gl_WarpIDARM + temp); } glslang-16.0.0/Test/spv.ARMCoreBuiltIns.vert000066400000000000000000000004201506534232700205620ustar00rootroot00000000000000#version 450 #extension GL_ARM_shader_core_builtins: enable layout(set = 0, binding = 0, std430) buffer Output { uvec4 result; }; void main (void) { uint temp = gl_WarpMaxIDARM; result = uvec4(gl_CoreIDARM, gl_CoreCountARM, gl_CoreMaxIDARM, gl_WarpIDARM + temp); } glslang-16.0.0/Test/spv.AnyHitShader.rahit000066400000000000000000000012461506534232700203410ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable layout(location = 1) rayPayloadInNV vec4 incomingPayload; void main() { uvec3 v0 = gl_LaunchIDNV; uvec3 v1 = gl_LaunchSizeNV; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexNV; vec3 v5 = gl_WorldRayOriginNV; vec3 v6 = gl_WorldRayDirectionNV; vec3 v7 = gl_ObjectRayOriginNV; vec3 v8 = gl_ObjectRayDirectionNV; float v9 = gl_RayTminNV; float v10 = gl_RayTmaxNV; float v11 = gl_HitTNV; uint v12 = gl_HitKindNV; mat4x3 v13 = gl_ObjectToWorldNV; mat4x3 v14 = gl_WorldToObjectNV; incomingPayload = vec4(0.5f); if (v2 == 1) ignoreIntersectionNV(); else terminateRayNV(); } glslang-16.0.0/Test/spv.AnyHitShaderMotion.rahit000066400000000000000000000001711506534232700215230ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing_motion_blur : enable void main() { float time = gl_CurrentRayTimeNV + 0.5f; } glslang-16.0.0/Test/spv.AnyHitShader_Errors.rahit000066400000000000000000000010071506534232700216700ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable hitAttributeNV vec4 payload; layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; void main() { payload.x = 1.0f; // ERROR, cannot write to hitattributeNV in stage reportIntersectionNV(1.0, 1U); // ERROR, unsupported builtin in stage traceNV(accNV, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported builtin in stage } glslang-16.0.0/Test/spv.AofA.frag000066400000000000000000000012031506534232700164250ustar00rootroot00000000000000#version 430 in float infloat; out float outfloat; uniform uAofA { float f[2][4]; } nameAofA[3][5]; float[4][5][6] many[1][2][3]; float g4[4][7]; in float g5[5][7]; flat in int i, j, k; float[4][7] foo(float a[5][7]) { float r[7]; r = a[2]; return float[4][7](a[0], a[1], r, a[3]); } void main() { outfloat = 0.0; g4 = foo(g5); // if (foo(g5) == g4) // ++outfloat; float u[][7]; u[2][2] = 3.0; float u[5][7]; foo(u); many[i][j][k][i][j][k] = infloat; outfloat += many[j][j][j][j][j][j]; outfloat += nameAofA[1][2].f[0][3]; } glslang-16.0.0/Test/spv.ClosestHitShader.rchit000066400000000000000000000014051506534232700212250ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; layout(location = 0) rayPayloadNV vec4 localPayload; layout(location = 1) rayPayloadInNV vec4 incomingPayload; void main() { uvec3 v0 = gl_LaunchIDNV; uvec3 v1 = gl_LaunchSizeNV; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexNV; vec3 v5 = gl_WorldRayOriginNV; vec3 v6 = gl_WorldRayDirectionNV; vec3 v7 = gl_ObjectRayOriginNV; vec3 v8 = gl_ObjectRayDirectionNV; float v9 = gl_RayTminNV; float v10 = gl_RayTmaxNV; float v11 = gl_HitTNV; uint v12 = gl_HitKindNV; mat4x3 v13 = gl_ObjectToWorldNV; mat4x3 v14 = gl_WorldToObjectNV; traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); } glslang-16.0.0/Test/spv.ClosestHitShaderMotion.rchit000066400000000000000000000006001506534232700224070ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_ray_tracing_motion_blur : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 0) rayPayloadInEXT vec4 incomingPayloadEXT; void main() { float time = gl_CurrentRayTimeNV + 0.5f; traceRayMotionNV(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1.0, 0); } glslang-16.0.0/Test/spv.ClosestHitShader_Errors.rchit000066400000000000000000000006511506534232700225630ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable hitAttributeNV vec4 payload; layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; void main() { payload.x = 1.0f; // ERROR, cannot write to hitattributeNV in stage reportIntersectionNV(1.0, 1U); // ERROR, unsupported builtin in stage terminateRayNV(); ignoreIntersectionNV(); } glslang-16.0.0/Test/spv.GeometryShaderPassthrough.geom000066400000000000000000000003761506534232700230130ustar00rootroot00000000000000#version 450 #extension GL_NV_geometry_shader_passthrough : require layout(triangles) in; layout(passthrough) in gl_PerVertex { vec4 gl_Position; }; layout(passthrough) in Inputs { vec2 texcoord; vec4 baseColor; }; void main() { }glslang-16.0.0/Test/spv.IntersectShader.rint000066400000000000000000000010621506534232700207460ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable hitAttributeNV vec4 iAttr; void main() { uvec3 v0 = gl_LaunchIDNV; uvec3 v1 = gl_LaunchSizeNV; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexNV; vec3 v5 = gl_WorldRayOriginNV; vec3 v6 = gl_WorldRayDirectionNV; vec3 v7 = gl_ObjectRayOriginNV; vec3 v8 = gl_ObjectRayDirectionNV; float v9 = gl_RayTminNV; float v10 = gl_RayTmaxNV; mat4x3 v11 = gl_ObjectToWorldNV; mat4x3 v12 = gl_WorldToObjectNV; iAttr = vec4(0.5f,0.5f,0.0f,1.0f); reportIntersectionNV(0.5, 1U); } glslang-16.0.0/Test/spv.IntersectShaderMotion.rint000066400000000000000000000001711506534232700221340ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing_motion_blur : enable void main() { float time = gl_CurrentRayTimeNV + 0.5f; } glslang-16.0.0/Test/spv.IntersectShader_Errors.rint000066400000000000000000000011441506534232700223030ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable rayPayloadInNV vec4 payloadIn; // ERROR, rayPayloadIn unsupported in this stage rayPayloadNV vec4 payload; // ERROR, rayPayload unsuppoted in this stage uniform accelerationStructureNV accNV; void main() { float e12 = gl_HitTNV; // ERROR, unsupported builtin in stage float e13 = gl_HitKindNV; // ERROR, unsupported builtin in stage traceNV(accNV, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported } glslang-16.0.0/Test/spv.MissShader.rmiss000066400000000000000000000010241506534232700201000ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; layout(location = 0) rayPayloadNV vec4 localPayload; layout(location = 1) rayPayloadInNV vec4 incomingPayload; void main() { uvec3 v0 = gl_LaunchIDNV; uvec3 v1 = gl_LaunchSizeNV; vec3 v2 = gl_WorldRayOriginNV; vec3 v3 = gl_WorldRayDirectionNV; uint v4 = gl_IncomingRayFlagsNV; float v6 = gl_RayTminNV; float v7 = gl_RayTmaxNV; traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); } glslang-16.0.0/Test/spv.MissShaderMotion.rmiss000066400000000000000000000005751506534232700213000ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_ray_tracing_motion_blur : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 0) rayPayloadEXT vec4 localPayloadEXT; void main() { float time = gl_CurrentRayTimeNV + 0.5f; traceRayMotionNV(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1.0f, 0); } glslang-16.0.0/Test/spv.MissShader_Errors.rmiss000066400000000000000000000022061506534232700214370ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable hitAttributeNV vec4 payload; // ERROR, hitattributeNV unsupported in this stage void main() { int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage int e3 = gl_InstanceCustomIndexNV; // ERROR, unsupported builtin in stage mat4x3 e10 = gl_ObjectToWorldNV; // ERROR, unsupported builtin in stage mat4x3 e11 = gl_WorldToObjectNV; // ERROR, unsupported builtin in stage float e12 = gl_HitTNV; // ERROR, unsupported builtin in stage float e13 = gl_HitKindNV; // ERROR, unsupported builtin in stage reportIntersectionNV(1.0, 1U); // ERROR, unsupported builtin in stage ignoreIntersectionNV(); // ERROR, unsupported builtin in stage terminateRayNV(); // ERROR, unsupported builtin in stage } glslang-16.0.0/Test/spv.OVR_multiview.vert000066400000000000000000000002171506534232700204370ustar00rootroot00000000000000#version 330 #extension GL_OVR_multiview : enable layout(num_views = 2) in; void main() { gl_Position = vec4(gl_ViewID_OVR, 0, 0, 0); } glslang-16.0.0/Test/spv.Operations.frag000066400000000000000000000055151506534232700177540ustar00rootroot00000000000000#version 450 flat in ivec4 uiv4; in vec4 uv4; bool ub; bvec4 ub41, ub42; in float uf; flat in int ui; flat in uvec4 uuv4; flat in uint uui; out vec4 FragColor; void main() { vec4 v; float f; bool b; bvec4 bv4; int i; uint u; // floating point v = radians(uv4); v += degrees(v); v += (i = ui*ui, sin(v)); v += cos(v); v += tan(v); v += asin(v); v += acos(v); v += atan(v); v += sinh(v); v += cosh(v); v += tanh(v); v += asinh(v); v += acosh(v); v += atanh(v); v += pow(v, v); v += exp(v); v += log(v); v += exp2(v); v += log2(v); v += sqrt(v); v += inversesqrt(v); v += abs(v); v += sign(v); v += floor(v); v += trunc(v); v += round(v); v += roundEven(v); v += ceil(v); v += fract(v); v += mod(v, v); v += mod(v, v.x); v += modf(v, v); v += modf(v, v.yzxw); v += min(v, uv4); v += max(v, uv4); v += clamp(v, uv4, uv4); v += mix(v,v,v); v += mix(v,v,ub41); v += mix(v,v,f); //spv v += intBitsToFloat(ui); // v += uintBitsToFloat(uui); // i += floatBitsToInt(f); // u += floatBitsToUint(f); v += fma(v, uv4, v); v += step(v,v); v += smoothstep(v,v,v); v += step(uf,v); v += smoothstep(uf,uf,v); v += normalize(v); v += faceforward(v, v, v); v += reflect(v, v); v += refract(v, v, uf); v += dFdx(v); v += dFdy(v); v += fwidth(v); // signed integer i += abs(ui); i += sign(i); i += min(i, ui); i += max(i, ui); i += clamp(i, ui, ui); // unsigned integer u += min(u, uui); u += max(u, uui); u += clamp(u, uui, uui); // multiple out operands uvec4 msb; uvec4 lsb; umulExtended(uuv4.xyz, uuv4.xyz, msb.xyz, lsb.xyz); u += msb.x + msb.y + msb.z; u += lsb.x + lsb.y + lsb.z; //// bool b = isnan(uf); b = isinf(f); b = any(lessThan(v, uv4)); b = (b && any(lessThanEqual(v, uv4))); b = (b && any(greaterThan(v, uv4))); b = (b && any(greaterThanEqual(v, uv4))); b = (b && any(equal(ub41, ub42))); b = (b && any(notEqual(ub41, ub42))); b = (b && any(ub41)); b = (b && all(ub41)); b = (b && any(not(ub41))); i = ((i + ui) * i - ui) / i; i = i % ui; if (i == ui || i != ui && i == ui ^^ i != 2) ++i; f = ((uf + uf) * uf - uf) / uf; f += length(v); f += distance(v, v); f += dot(v, v); f += dot(f, uf); f += cross(v.xyz, v.xyz).x; if (f == uf || f != uf && f != 2.0) ++f; i &= ui; i |= 0x42; i ^= ui; i %= 17; i >>= 2; i <<= ui; i = ~i; b = !b; FragColor = b ? vec4(i) + vec4(f) + v : v; mat4 m1 = mat4(1.0), m2 = mat4(0.0); FragColor += (b ? m1 : m2)[1]; } glslang-16.0.0/Test/spv.RayCallable.rcall000066400000000000000000000004271506534232700201570ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable layout(location = 0) callableDataNV vec4 data0; layout(location = 1) callableDataInNV dataBlock { uint data1; }; void main() { uvec3 id = gl_LaunchIDNV; uvec3 size = gl_LaunchSizeNV; data1 = 256U; executeCallableNV(2,1); } glslang-16.0.0/Test/spv.RayCallable_Errors.rcall000066400000000000000000000040431506534232700215110ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable hitAttributeNV vec4 hitattr; // ERROR, hitattributeNV unsupported in this stage rayPayloadNV vec4 payload; // ERROR, rayPayloadNV unsupported in this stage rayPayloadInNV vec4 payloadIn; // ERROR, rayPayloadInNV unsupported in this stage void main() { int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage int e3 = gl_InstanceCustomIndexNV; // ERROR, unsupported builtin in stage vec3 e4 = gl_WorldRayOriginNV; // ERROR, unsupported builtin in stage vec3 e5 = gl_WorldRayDirectionNV; // ERROR, unsupported builtin in stage vec3 e6 = gl_ObjectRayOriginNV; // ERROR, unsupported builtin in stage vec3 e7 = gl_ObjectRayDirectionNV; // ERROR, unsupported builtin in stage float e8 = gl_RayTminNV; // ERROR, unsupported builtin in stage float e9 = gl_RayTmaxNV; // ERROR, unsupported builtin in stage mat4x3 e10 = gl_ObjectToWorldNV; // ERROR, unsupported builtin in stage mat4x3 e11 = gl_WorldToObjectNV; // ERROR, unsupported builtin in stage float e12 = gl_HitTNV; // ERROR, unsupported builtin in stage float e13 = gl_HitKindNV; // ERROR, unsupported builtin in stage uint curFlags = gl_IncomingRayFlagsNV; // ERROR, unsupported builtin in stage reportIntersectionNV(1.0, 1U); // ERROR, unsupported builtin in stage ignoreIntersectionNV(); // ERROR, unsupported builtin in stage terminateRayNV(); // ERROR, unsupported builtin in stage } glslang-16.0.0/Test/spv.RayConstants.rgen000066400000000000000000000012771506534232700202760ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; layout(location = 0) rayPayloadNV vec4 payload; void main() { const uint rayFlags = gl_RayFlagsNoneNV | gl_RayFlagsOpaqueNV | gl_RayFlagsNoOpaqueNV | gl_RayFlagsTerminateOnFirstHitNV | gl_RayFlagsSkipClosestHitShaderNV | gl_RayFlagsCullBackFacingTrianglesNV | gl_RayFlagsCullFrontFacingTrianglesNV | gl_RayFlagsCullOpaqueNV | gl_RayFlagsCullNoOpaqueNV; const int payloadId = 1; traceNV(accNV, rayFlags, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, payloadId); } glslang-16.0.0/Test/spv.RayGenShader.rgen000066400000000000000000000010201506534232700201440ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureNV accNV0; layout(binding = 1, set = 0) uniform accelerationStructureNV accNV1; // Unused layout(location = 0) rayPayloadNV vec4 payload; layout(shaderRecordNV) buffer block { vec3 dir; vec3 origin; }; void main() { uint lx = gl_LaunchIDNV.x; uint ly = gl_LaunchIDNV.y; uint sx = gl_LaunchSizeNV.x; uint sy = gl_LaunchSizeNV.y; traceNV(accNV0, lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.RayGenShader11.rgen000066400000000000000000000006761506534232700203260ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; layout(location = 0) rayPayloadNV vec4 payload; layout(shaderRecordNV) buffer block { vec3 dir; vec3 origin; }; void main() { uint lx = gl_LaunchIDNV.x; uint ly = gl_LaunchIDNV.y; uint sx = gl_LaunchSizeNV.x; uint sy = gl_LaunchSizeNV.y; traceNV(accNV, lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.RayGenShaderArray.rgen000066400000000000000000000013551506534232700211560ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_nonuniform_qualifier : enable layout(binding = 0, set = 0) uniform accelerationStructureNV accNV0[]; layout(binding = 1, set = 0) uniform accelerationStructureNV accNV1[2]; layout(location = 0) rayPayloadNV vec4 payload; layout(shaderRecordNV) buffer block { vec3 dir; vec3 origin; int i; }; void main() { uint lx = gl_LaunchIDNV.x; uint ly = gl_LaunchIDNV.y; uint sx = gl_LaunchSizeNV.x; uint sy = gl_LaunchSizeNV.y; traceNV(accNV0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceNV(accNV1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceNV(accNV0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.RayGenShaderMotion.rgen000066400000000000000000000007221506534232700213420ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_ray_tracing_motion_blur : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 0) rayPayloadEXT vec4 payloadEXT; void main() { uint lx = gl_LaunchIDEXT.x; uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; traceRayMotionNV(accEXT, lx, ly, sx, sy, 0u, vec3(0.5), 0.5f, vec3(1.0), 0.75f, 0.5, 0); } glslang-16.0.0/Test/spv.RayGenShader_Errors.rgen000066400000000000000000000050401506534232700215060ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable hitAttributeNV vec4 payload; // ERROR, hitattributeNV unsupported in this stage rayPayloadInNV vec4 payloadIn; // ERROR, rayPayloadIn unsupported in this stage layout(shaderRecordNV) uniform ublock // ERROR, shaderRecordNV unsupported on uniform blocks { float a; }; layout(binding = 0, shaderRecordNV) buffer bblock { // ERROR, binding unsupported on shaderRecordNV blocks float b; }; layout(set = 0, shaderRecordNV) buffer bblock2 { // ERROR, set unsupported on shaderRecordNV blocks float c; }; layout(shaderRecordNV) buffer bblock3 { float d; }; layout(shaderRecordNV) buffer bblock4 { // ERROR, cannot have more than one shaderRecordNVX block float e; }; void main() { accelerationStructureNV a = 0; int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage int e3 = gl_InstanceCustomIndexNV; // ERROR, unsupported builtin in stage vec3 e4 = gl_WorldRayOriginNV; // ERROR, unsupported builtin in stage vec3 e5 = gl_WorldRayDirectionNV; // ERROR, unsupported builtin in stage vec3 e6 = gl_ObjectRayOriginNV; // ERROR, unsupported builtin in stage vec3 e7 = gl_ObjectRayDirectionNV; // ERROR, unsupported builtin in stage float e8 = gl_RayTminNV; // ERROR, unsupported builtin in stage float e9 = gl_RayTmaxNV; // ERROR, unsupported builtin in stage mat4x3 e10 = gl_ObjectToWorldNV; // ERROR, unsupported builtin in stage mat4x3 e11 = gl_WorldToObjectNV; // ERROR, unsupported builtin in stage float e12 = gl_HitTNV; // ERROR, unsupported builtin in stage float e13 = gl_HitKindNV; // ERROR, unsupported builtin in stage reportIntersectionNV(1.0, 1U); // ERROR, unsupported builtin in stage ignoreIntersectionNV(); // ERROR, unsupported builtin in stage terminateRayNV(); // ERROR, unsupported builtin in stage d = 1.0f; // ERROR, can't modify shaderRecordNV block } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp000066400000000000000000000004141506534232700257370ustar00rootroot00000000000000#version 430 core #extension GL_EXT_shared_memory_block : enable #extension GL_EXT_shader_explicit_arithmetic_types: enable layout(local_size_x = 2) in; shared first { int16_t a; float16_t f; }; void main() { a = int16_t(3); f = float16_t(12.3); } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp000066400000000000000000000003401506534232700256560ustar00rootroot00000000000000#version 430 core #extension GL_EXT_shared_memory_block : enable #extension GL_EXT_shader_explicit_arithmetic_types: enable layout(local_size_x = 2) in; shared first { int8_t a; }; void main() { a = int8_t(2); } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp000066400000000000000000000003741506534232700304270ustar00rootroot00000000000000#version 430 core #extension GL_EXT_shared_memory_block : enable layout(local_size_x = 8) in; shared first { int a; }; shared int b; // Cannot mix shared block and shared non-block, will fail at linking. void main() { a = 2; b = 3; } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp000066400000000000000000000003041506534232700257730ustar00rootroot00000000000000#version 430 core #extension GL_EXT_shared_memory_block : enable layout(local_size_x = 8) in; shared first { int a; }; shared second { int b; }; void main() { a = 2; b = 3; } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp000066400000000000000000000002441506534232700254360ustar00rootroot00000000000000#version 430 core #extension GL_EXT_shared_memory_block : enable layout(local_size_x = 8) in; shared int a; shared int b; void main() { a = 2; b = 3; } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp000066400000000000000000000002321506534232700261220ustar00rootroot00000000000000#version 430 core #extension GL_EXT_shared_memory_block : enable layout(local_size_x = 8) in; shared first { int a; }; void main() { a = 2; } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp000066400000000000000000000007301506534232700251760ustar00rootroot00000000000000#version 430 core #extension GL_EXT_scalar_block_layout : enable #extension GL_EXT_shared_memory_block : enable layout(local_size_x = 8) in; struct T { float t[3]; }; struct S { float f; vec2 v2; vec3 v3; vec4 v4; T t; float f_array[6]; vec2 v2_array[6]; vec3 v3_array[6]; vec4 v4_array[6]; T t_array[6]; }; // Use a default qualifier. layout(scalar) shared; shared Block { S s; S s_array[6]; }; void main() { } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.std140.comp000066400000000000000000000006041506534232700247500ustar00rootroot00000000000000#version 430 core #extension GL_EXT_shared_memory_block : enable layout(local_size_x = 8) in; struct T { float t[3]; }; struct S { float f; vec2 v2; vec3 v3; vec4 v4; T t; float f_array[6]; vec2 v2_array[6]; vec3 v3_array[6]; vec4 v4_array[6]; T t_array[6]; }; layout(std140) shared Block { S s; S s_array[6]; }; void main() { } glslang-16.0.0/Test/spv.WorkgroupMemoryExplicitLayout.std430.comp000066400000000000000000000006041506534232700247520ustar00rootroot00000000000000#version 430 core #extension GL_EXT_shared_memory_block : enable layout(local_size_x = 8) in; struct T { float t[3]; }; struct S { float f; vec2 v2; vec3 v3; vec4 v4; T t; float f_array[6]; vec2 v2_array[6]; vec3 v3_array[6]; vec4 v4_array[6]; T t_array[6]; }; layout(std430) shared Block { S s; S s_array[6]; }; void main() { } glslang-16.0.0/Test/spv.accessChain.frag000066400000000000000000000030641506534232700200320ustar00rootroot00000000000000#version 420 struct S { vec3 color; }; layout(location = 0) out vec3 OutColor; flat in int u; void GetColor1(const S i) { OutColor += i.color.x; } void GetColor2(const S i, int comp) { OutColor += i.color[comp]; } void GetColor3(const S i, int comp) { OutColor += i.color[comp].x; } void GetColor4(const S i, int comp) { OutColor += i.color[comp].x; } void GetColor5(const S i, int comp) { OutColor += i.color; } void GetColor6(const S i, int comp) { OutColor += i.color.yx[comp]; } void GetColor7(const S i, int comp) { OutColor.xy += i.color.yxz.yx; } void GetColor8(const S i, int comp) { OutColor += i.color.yzx.yx.x.x; } void GetColor9(const S i, int comp) { OutColor.zxy += i.color; } void GetColor10(const S i, int comp) { OutColor.zy += i.color.xy; } void GetColor11(const S i, int comp) { OutColor.zxy.yx += i.color.xy; } void GetColor12(const S i, int comp) { OutColor[comp] += i.color.x; } void GetColor13(const S i, int comp) { OutColor.zy[comp] += i.color.x; } void GetColor14(const S i, int comp) { OutColor.zyx[comp] = i.color.x; } void main() { S s; OutColor = vec3(0.0); GetColor1(s); GetColor2(s, u); GetColor3(s, u); GetColor4(s, u); GetColor5(s, u); GetColor6(s, u); GetColor7(s, u); GetColor8(s, u); GetColor9(s, u); GetColor10(s, u); GetColor11(s, u); GetColor12(s, u); GetColor13(s, u); GetColor14(s, u); } glslang-16.0.0/Test/spv.aggOps.frag000066400000000000000000000015041506534232700170430ustar00rootroot00000000000000#version 450 uniform sampler2D samp2D; in mediump vec2 coord; in vec4 u, w; out vec4 color; struct s1 { int i; float f; }; struct s2 { int i; float f; s1 s1_1; }; layout(std140) uniform ub1 { s2 foo2a; } uName1; layout(std430) buffer ub2 { s2 foo2b; } uName2; void main() { vec4 v; s1 a[3], b[3]; a = s1[3](s1(int(u.x), u.y), s1(int(u.z), u.w), s1(14, 14.0)); b = s1[3](s1(17, 17.0), s1(int(w.x), w.y), s1(int(w.z), w.w)); if (uName1.foo2a == uName2.foo2b) v = texture(samp2D, coord); else v = texture(samp2D, 2.0*coord); if (u == v) v *= 3.0; if (u != v) v *= 4.0; if (coord == v.yw) v *= 5.0; if (a == b) v *= 6.0; if (a != b) v *= 7.0; color = v; } glslang-16.0.0/Test/spv.always-discard.frag000066400000000000000000000012231506534232700205300ustar00rootroot00000000000000#version 140 in vec2 tex_coord; void main (void) { vec4 white = vec4(1.0); vec4 black = vec4(0.2); vec4 color = white; // First, cut out our circle float x = tex_coord.x*2.0 - 1.0; float y = tex_coord.y*2.0 - 1.0; float radius = sqrt(x*x + y*y); if (radius > 1.0) { if (radius > 1.1) { ++color; } gl_FragColor = color; if (radius > 1.2) { ++color; } } discard; // If we're near an edge, darken us a tiny bit if (radius >= 0.75) color -= abs(pow(radius, 16.0)/2.0); gl_FragColor = color; } glslang-16.0.0/Test/spv.always-discard2.frag000066400000000000000000000004601506534232700206140ustar00rootroot00000000000000#version 140 in vec2 tex_coord; void main (void) { vec4 white = vec4(1.0); vec4 black = vec4(0.2); vec4 color = white; // First, cut out our circle float x = tex_coord.x*2.0 - 1.0; float y = tex_coord.y*2.0 - 1.0; discard; gl_FragColor = color; } glslang-16.0.0/Test/spv.arbPostDepthCoverage.frag000066400000000000000000000006421506534232700217000ustar00rootroot00000000000000#version 450 #extension GL_ARB_post_depth_coverage : enable #extension GL_EXT_post_depth_coverage : enable //according to ARB_post_depth_coverage, //if both enabled, this one should be ignored precision highp int; layout(post_depth_coverage) in; layout (location = 0) out int readSampleMaskIn; void main () { readSampleMaskIn = gl_SampleMaskIn[0]; } glslang-16.0.0/Test/spv.arbPostDepthCoverage_Error.frag000066400000000000000000000005231506534232700230470ustar00rootroot00000000000000#version 310 es #extension GL_ARB_post_depth_coverage : enable precision highp float; layout(post_depth_coverage, location = 0) in float a; // should fail since post_depth_coverage may only // be declared on in only (not with variable declarations) void main () { } glslang-16.0.0/Test/spv.atomiAddEXT.error.mesh000066400000000000000000000006571506534232700211030ustar00rootroot00000000000000#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); }glslang-16.0.0/Test/spv.atomiAddEXT.task000066400000000000000000000007251506534232700177550ustar00rootroot00000000000000#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); }glslang-16.0.0/Test/spv.atomic.comp000066400000000000000000000020431506534232700171150ustar00rootroot00000000000000#version 450 layout(binding = 0) uniform atomic_uint counter; layout(binding = 0, offset = 4) uniform atomic_uint countArr[4]; shared uint value; int arrX[gl_WorkGroupSize.x]; int arrY[gl_WorkGroupSize.y]; int arrZ[gl_WorkGroupSize.z]; uint func(atomic_uint c) { return atomicCounterIncrement(c); } void main() { memoryBarrierAtomicCounter(); func(counter); uint val = atomicCounter(countArr[2]); atomicCounterDecrement(counter); atomicCounterIncrement(counter); } shared int atomi; shared uint atomu; layout (std140, binding = 0) restrict buffer dataSSB { float f; ivec4 n_frames_rendered; } result; void atoms() { int origi = atomicAdd(atomi, 3); uint origu = atomicAnd(atomu, value); origu = atomicOr(atomu, 7u); origu = atomicXor(atomu, 7u); origu = atomicMin(atomu, value); origi = atomicMax(atomi, 7); origi = atomicExchange(atomi, origi); origu = atomicCompSwap(atomu, 10u, value); atomicAdd(result.n_frames_rendered.z, 1); } glslang-16.0.0/Test/spv.atomicAdd.bufferReference.comp000066400000000000000000000054411506534232700226220ustar00rootroot00000000000000#version 450 core #pragma use_vulkan_memory_model #extension GL_KHR_shader_subgroup_basic : enable #extension GL_KHR_shader_subgroup_shuffle : enable #extension GL_KHR_shader_subgroup_ballot : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_ARB_gpu_shader_int64 : enable #extension GL_EXT_buffer_reference : enable // DIM/NUM_WORKGROUP_EACH_DIM overriden by spec constants layout(constant_id = 0) const int DIM = 1; layout(constant_id = 1) const int NUM_WORKGROUP_EACH_DIM = 1; shared bool sharedSkip; layout(local_size_x_id = 0, local_size_y_id = 0, local_size_z = 1) in; layout(buffer_reference) buffer PayloadRef { uint x[]; }; layout(buffer_reference) buffer GuardRef { uint x[]; }; layout(set=0, binding=2) buffer Fail { uint x[]; } fail; layout (push_constant, std430) uniform PC { layout(offset = 0) PayloadRef payloadref; layout(offset = 8) GuardRef guard; }; void main() { bool pass = true; bool skip = false; sharedSkip = false; nonprivate PayloadRef payload = payloadref; ivec2 globalId = ivec2(gl_GlobalInvocationID.xy); ivec2 partnerGlobalId = ivec2(DIM*NUM_WORKGROUP_EACH_DIM-1) - ivec2(gl_GlobalInvocationID.xy); uint bufferCoord = globalId.y * DIM*NUM_WORKGROUP_EACH_DIM + globalId.x; uint partnerBufferCoord = partnerGlobalId.y * DIM*NUM_WORKGROUP_EACH_DIM + partnerGlobalId.x; ivec2 imageCoord = globalId; ivec2 partnerImageCoord = partnerGlobalId; ivec2 globalId00 = ivec2(DIM) * ivec2(gl_WorkGroupID.xy); ivec2 partnerGlobalId00 = ivec2(DIM) * (ivec2(NUM_WORKGROUP_EACH_DIM-1) - ivec2(gl_WorkGroupID.xy)); uint bufferCoord00 = globalId00.y * DIM*NUM_WORKGROUP_EACH_DIM + globalId00.x; uint partnerBufferCoord00 = partnerGlobalId00.y * DIM*NUM_WORKGROUP_EACH_DIM + partnerGlobalId00.x; ivec2 imageCoord00 = globalId00; ivec2 partnerImageCoord00 = partnerGlobalId00; payload.x[bufferCoord] = bufferCoord + (payload.x[partnerBufferCoord]>>31); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeAvailable); if (all(equal(gl_LocalInvocationID.xy, ivec2(0,0)))) { atomicStore(guard.x[bufferCoord], uint(1u), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeAvailable); skip = atomicLoad(guard.x[partnerBufferCoord00], gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible) == 0; sharedSkip = skip; } controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible); skip = sharedSkip; uint r = payload.x[partnerBufferCoord]; if (!skip && r != uint(partnerBufferCoord)) { fail.x[bufferCoord] = 1; } }glslang-16.0.0/Test/spv.atomicCounter.comp000066400000000000000000000010121506534232700204500ustar00rootroot00000000000000#version 450 layout(binding = 0) uniform atomic_uint counter; layout(binding = 0, offset = 4) uniform atomic_uint countArr[4]; shared uint value; int arrX[gl_WorkGroupSize.x]; int arrY[gl_WorkGroupSize.y]; int arrZ[gl_WorkGroupSize.z]; uint func(atomic_uint c) { return atomicCounterIncrement(c); } void main() { memoryBarrierAtomicCounter(); func(counter); uint val = atomicCounter(countArr[2]); atomicCounterDecrement(counter); atomicCounterIncrement(counter); } glslang-16.0.0/Test/spv.atomicFloat.comp000066400000000000000000000216741506534232700201160ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_atomic_float: enable #pragma use_vulkan_memory_model layout(local_size_x = 16, local_size_y = 16) in; layout(binding = 0) buffer Buffer { float dataf; double datad; } buf; shared float atomf; shared double atomd; layout(binding = 0, r32f) volatile coherent uniform image1D fimage1D; layout(binding = 1, r32f) volatile coherent uniform image1DArray fimage1DArray; layout(binding = 2, r32f) volatile coherent uniform image2D fimage2D; layout(binding = 3, r32f) volatile coherent uniform image2DArray fimage2DArray; layout(binding = 4, r32f) volatile coherent uniform image2DRect fimage2DRect; layout(binding = 5, r32f) volatile coherent uniform imageCube fimageCube; layout(binding = 6, r32f) volatile coherent uniform imageCubeArray fimageCubeArray; layout(binding = 9, r32f) volatile coherent uniform image3D fimage3D; void main() { //atomicAdd float resultf = 0; resultf = atomicAdd(atomf, 3.0); resultf = atomicAdd(atomf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultf = atomicAdd(buf.dataf, 3.0); resultf = atomicAdd(buf.dataf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); double resultd = 0; resultd = atomicAdd(atomd, 3.0); resultd = atomicAdd(atomd, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultd = atomicAdd(buf.datad, 3.0); resultd = atomicAdd(buf.datad, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); //atomicExchange resultf = atomicExchange(buf.dataf, resultf); buf.dataf += resultf; resultf = atomicExchange(buf.dataf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.dataf += resultf; resultf = atomicExchange(atomf, resultf); buf.dataf += resultf; resultf = atomicExchange(atomf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.dataf += resultf; resultd = atomicExchange(buf.datad, resultd); buf.datad += resultd; resultd = atomicExchange(buf.datad, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.datad += resultd; resultd = atomicExchange(atomd, resultd); buf.datad += resultd; resultd = atomicExchange(atomd, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.datad += resultd; //atomic load/store resultf = atomicLoad(buf.dataf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(buf.dataf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); buf.dataf += resultf; resultf = atomicLoad(atomf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(atomf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); buf.dataf += resultf; resultd = atomicLoad(buf.datad, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(buf.datad, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); buf.datad += resultd; resultd = atomicLoad(atomd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(atomd, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); buf.datad += resultd; // image atomics on 1D: atomf = imageAtomicAdd(fimage1D, int(0), 2.0); buf.dataf += atomf; atomf = imageAtomicAdd(fimage1D, int(1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicExchange(fimage1D, int(1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicLoad(fimage1D, int(1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); buf.dataf += atomf; imageAtomicStore(fimage1D, int(2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; // image atomics on 1D Array: atomf = imageAtomicAdd(fimage1DArray, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicAdd(fimage1DArray, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicExchange(fimage1DArray, ivec2(1,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicLoad(fimage1DArray, ivec2(1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); buf.dataf += atomf; imageAtomicStore(fimage1DArray, ivec2(2,2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; // image atomics on 2D: atomf = imageAtomicAdd(fimage2D, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicAdd(fimage2D, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicExchange(fimage2D, ivec2(1,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicLoad(fimage2D, ivec2(1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); buf.dataf += atomf; imageAtomicStore(fimage2D, ivec2(2,2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; // image atomics on 2D Rect: atomf = imageAtomicAdd(fimage2DRect, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicAdd(fimage2DRect, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicExchange(fimage2DRect, ivec2(1,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicLoad(fimage2DRect, ivec2(1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); buf.dataf += atomf; imageAtomicStore(fimage2DRect, ivec2(2,2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; // image atomics on 2D Array: atomf = imageAtomicAdd(fimage2DArray, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicAdd(fimage2DArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicExchange(fimage2DArray, ivec3(1,0,1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicLoad(fimage2DArray, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); buf.dataf += atomf; imageAtomicStore(fimage2DArray, ivec3(2,2,0), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; // image atomics on Cube: atomf = imageAtomicAdd(fimageCube, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicAdd(fimageCube, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicExchange(fimageCube, ivec3(1,0,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicLoad(fimageCube, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); buf.dataf += atomf; imageAtomicStore(fimageCube, ivec3(2,2,1), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; // image atomics on Cube Array: atomf = imageAtomicAdd(fimageCubeArray, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicAdd(fimageCubeArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicExchange(fimageCubeArray, ivec3(1,0,1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicLoad(fimageCubeArray, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); buf.dataf += atomf; imageAtomicStore(fimageCubeArray, ivec3(2,2,0), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; // image atomics on 3D: atomf = imageAtomicAdd(fimage3D, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicAdd(fimage3D, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicExchange(fimage3D, ivec3(1,0,1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicLoad(fimage3D, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); buf.dataf += atomf; imageAtomicStore(fimage3D, ivec3(2,2,0), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; }glslang-16.0.0/Test/spv.atomicFloat2.comp000066400000000000000000000203711506534232700201710ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #extension GL_EXT_shader_atomic_float2: enable #pragma use_vulkan_memory_model layout(local_size_x = 16, local_size_y = 16) in; layout(binding = 0) buffer Buffer { float16_t datah; float dataf; double datad; } buf; shared float16_t atomh; shared float atomf; shared double atomd; layout(binding = 0, r32f) volatile coherent uniform image1D fimage1D; layout(binding = 1, r32f) volatile coherent uniform image1DArray fimage1DArray; layout(binding = 2, r32f) volatile coherent uniform image2D fimage2D; layout(binding = 3, r32f) volatile coherent uniform image2DArray fimage2DArray; layout(binding = 4, r32f) volatile coherent uniform image2DRect fimage2DRect; layout(binding = 5, r32f) volatile coherent uniform imageCube fimageCube; layout(binding = 6, r32f) volatile coherent uniform imageCubeArray fimageCubeArray; layout(binding = 9, r32f) volatile coherent uniform image3D fimage3D; void main() { //atomicAdd float16_t resulth = float16_t(0.0); resulth = atomicAdd(atomh, float16_t(3.0)); resulth = atomicAdd(atomh, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resulth = atomicAdd(buf.datah, float16_t(3.0)); resulth = atomicAdd(buf.datah, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); //atomicMin resulth = atomicMin(atomh, float16_t(3.0)); resulth = atomicMin(atomh, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resulth = atomicMin(buf.datah, float16_t(3.0)); resulth = atomicMin(buf.datah, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); float resultf = 0.0; resultf = atomicMin(atomf, 3.0); resultf = atomicMin(atomf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultf = atomicMin(buf.dataf, 3.0); resultf = atomicMin(buf.dataf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); double resultd = 0.0; resultd = atomicMin(atomd, 3.0); resultd = atomicMin(atomd, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultd = atomicMin(buf.datad, 3.0); resultd = atomicMin(buf.datad, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); //atomicMax resulth = atomicMax(atomh, float16_t(3.0)); resulth = atomicMax(atomh, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resulth = atomicMax(buf.datah, float16_t(3.0)); resulth = atomicMax(buf.datah, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultf = atomicMax(atomf, 3.0); resultf = atomicMax(atomf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultf = atomicMax(buf.dataf, 3.0); resultf = atomicMax(buf.dataf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultd = atomicMax(atomd, 3.0); resultd = atomicMax(atomd, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultd = atomicMax(buf.datad, 3.0); resultd = atomicMax(buf.datad, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); //atomicExchange resulth = atomicExchange(buf.datah, resulth); buf.datah += resulth; resulth = atomicExchange(buf.datah, resulth, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.datah += resulth; resulth = atomicExchange(atomh, resulth); buf.datah += resulth; resulth = atomicExchange(atomh, resulth, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.datah += resulth; //atomic load/store resulth = atomicLoad(buf.datah, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(buf.datah, resulth, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); buf.datah += resulth; resulth = atomicLoad(atomh, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(atomh, resulth, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); buf.datah += resulth; // image atomics on 1D: atomf = imageAtomicMin(fimage1D, int(0), 2.0); buf.dataf += atomf; atomf = imageAtomicMin(fimage1D, int(1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicMax(fimage1D, int(0), 2.0); buf.dataf += atomf; atomf = imageAtomicMax(fimage1D, int(1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; // image atomics on 1D Array: atomf = imageAtomicMin(fimage1DArray, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMin(fimage1DArray, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicMax(fimage1DArray, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMax(fimage1DArray, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; // image atomics on 2D: atomf = imageAtomicMin(fimage2D, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMin(fimage2D, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicMax(fimage2D, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMax(fimage2D, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; // image atomics on 2D Rect: atomf = imageAtomicMin(fimage2DRect, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMin(fimage2DRect, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicMax(fimage2DRect, ivec2(0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMax(fimage2DRect, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; // image atomics on 2D Array: atomf = imageAtomicMin(fimage2DArray, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMin(fimage2DArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicMax(fimage2DArray, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMax(fimage2DArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; // image atomics on Cube: atomf = imageAtomicMin(fimageCube, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMin(fimageCube, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicMax(fimageCube, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMax(fimageCube, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; // image atomics on Cube Array: atomf = imageAtomicMin(fimageCubeArray, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMin(fimageCubeArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicMax(fimageCubeArray, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMax(fimageCubeArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; // image atomics on 3D: atomf = imageAtomicMin(fimage3D, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMin(fimage3D, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; atomf = imageAtomicMax(fimage3D, ivec3(0,0,0), 2.0); buf.dataf += atomf; atomf = imageAtomicMax(fimage3D, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); buf.dataf += atomf; } glslang-16.0.0/Test/spv.atomicFloat_Error.comp000066400000000000000000000131501506534232700212550ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #pragma use_vulkan_memory_model layout(local_size_x = 16, local_size_y = 16) in; layout(binding = 0) buffer Buffer { int datai; float dataf; double datad; } buf; shared int atomi; shared float atomf; shared double atomd; layout(binding = 0, r32f) volatile coherent uniform image1D fimage1D; layout(binding = 1, r32f) volatile coherent uniform image2D fimage2D; void undeclared_errors() { //atomicAdd float resultf = 0; resultf = atomicAdd(atomf, 3.0); resultf = atomicAdd(atomf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultf = atomicAdd(buf.dataf, 3.0); resultf = atomicAdd(buf.dataf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); double resultd = 0; resultd = atomicAdd(atomd, 3.0); resultd = atomicAdd(atomd, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultd = atomicAdd(buf.datad, 3.0); resultd = atomicAdd(buf.datad, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); //atomicExchange resultf = atomicExchange(buf.dataf, resultf); resultf = atomicExchange(buf.dataf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); resultf = atomicExchange(atomf, resultf); resultf = atomicExchange(atomf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.dataf += resultf; resultd = atomicExchange(buf.datad, resultd); resultd = atomicExchange(buf.datad, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); resultd = atomicExchange(atomd, resultd); resultd = atomicExchange(atomd, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.datad += resultd; //atomic load/store resultf = atomicLoad(buf.dataf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(buf.dataf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); resultf = atomicLoad(atomf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(atomf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); buf.dataf += resultf; resultd = atomicLoad(buf.datad, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(buf.datad, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); resultd = atomicLoad(atomd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(atomd, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease); buf.datad += resultd; // image atomics: atomf = imageAtomicAdd(fimage2D, ivec2(0,0), 2.0); atomf = imageAtomicAdd(fimage2D, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease); atomf = imageAtomicExchange(fimage2D, ivec2(1,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); atomf = imageAtomicLoad(fimage2D, ivec2(1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); imageAtomicStore(fimage2D, ivec2(2,2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; } #extension GL_EXT_shader_atomic_float: enable void main() { float resultf = 0; double resultd = 0; int resulti = 0; //atomicAdd resultf = atomicAdd(atomi); resultf = atomicAdd(atomi, 3.0); resultf = atomicAdd(atomi, resultf, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); resultf = atomicAdd(atomi, resultf, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); //atomicExchange resultf = atomicExchange(buf.datai); resultf = atomicExchange(buf.datai, resultf); resultf = atomicExchange(buf.datai, resultf, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); resultf = atomicExchange(buf.datai, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); resultf = atomicExchange(atomi, resultf); resultf = atomicExchange(atomi, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); buf.dataf += resultf; //atomic load/store resultf = atomicLoad(buf.datai, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicStore(buf.datai, resulti, gl_StorageSemanticsShared, gl_SemanticsRelease); // image atomics: atomf = imageAtomicAdd(fimage1D, ivec2(0,0), 2.0); atomf = imageAtomicAdd(fimage2D, ivec3(0,0,0), 2.0); atomf = imageAtomicAdd(fimage2D, 2.0); atomf = imageAtomicExchange(fimage1D, ivec2(1,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); atomf = imageAtomicExchange(fimage2D, 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); atomf = imageAtomicExchange(fimage2D, ivec3(1,0,1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); atomf = imageAtomicLoad(fimage1D, ivec2(1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); atomf = imageAtomicLoad(fimage2D, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); atomf = imageAtomicLoad(fimage2D, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); imageAtomicStore(fimage1D, ivec2(2,2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); imageAtomicStore(fimage2D, atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); imageAtomicStore(fimage2D, ivec3(2,2,1), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); buf.dataf += atomf; }glslang-16.0.0/Test/spv.atomicInt64.comp000066400000000000000000000031771506534232700177530ustar00rootroot00000000000000#version 450 core #extension GL_ARB_gpu_shader_int64: enable #extension GL_NV_shader_atomic_int64: enable layout(local_size_x = 16, local_size_y = 16) in; layout(binding = 0) buffer Buffer { int64_t i64; uint64_t u64; } buf; struct Struct { int64_t i64; uint64_t u64; }; shared Struct s; void main() { const int64_t i64c = -24; const uint64_t u64c = 0xF00000000Ful; // Test shader storage block int64_t i64 = 0; uint64_t u64 = 0; i64 += atomicMin(buf.i64, i64c); u64 += atomicMin(buf.u64, u64c); i64 += atomicMax(buf.i64, i64c); u64 += atomicMax(buf.u64, u64c); i64 += atomicAnd(buf.i64, i64c); u64 += atomicAnd(buf.u64, u64c); i64 += atomicOr(buf.i64, i64c); u64 += atomicOr(buf.u64, u64c); i64 += atomicXor(buf.i64, i64c); u64 += atomicXor(buf.u64, u64c); i64 += atomicAdd(buf.i64, i64c); i64 += atomicExchange(buf.i64, i64c); i64 += atomicCompSwap(buf.i64, i64c, i64); buf.i64 = i64; buf.u64 = u64; // Test shared variable i64 = 0; u64 = 0; i64 += atomicMin(s.i64, i64c); u64 += atomicMin(s.u64, u64c); i64 += atomicMax(s.i64, i64c); u64 += atomicMax(s.u64, u64c); i64 += atomicAnd(s.i64, i64c); u64 += atomicAnd(s.u64, u64c); i64 += atomicOr(s.i64, i64c); u64 += atomicOr(s.u64, u64c); i64 += atomicXor(s.i64, i64c); u64 += atomicXor(s.u64, u64c); i64 += atomicAdd(s.i64, i64c); i64 += atomicExchange(s.i64, i64c); i64 += atomicCompSwap(s.i64, i64c, i64); s.i64 = i64; s.u64 = u64; } glslang-16.0.0/Test/spv.atomicRvalue.error.vert000066400000000000000000000001341506534232700214450ustar00rootroot00000000000000#version 440 void main() { uint a = 5; atomicAdd(a * 2, 0); atomicAdd(a, 0); } glslang-16.0.0/Test/spv.atomicStoreInt64.comp000066400000000000000000000006151506534232700207620ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable #extension GL_EXT_shader_atomic_int64 : enable #extension GL_KHR_memory_scope_semantics : enable layout(set = 0, binding = 0) buffer ssbo { uint64_t y; }; layout(set = 0, binding = 1) uniform ubo { uint64_t z; }; void main() { atomicStore(y, z, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); } glslang-16.0.0/Test/spv.barrier.vert000066400000000000000000000003621506534232700173130ustar00rootroot00000000000000#version 450 layout(location=0) out vec4 c0; layout(location=1) out vec4 c1; void main() { c0 = vec4(1.0); memoryBarrier(); c1 = vec4(1.0); memoryBarrierBuffer(); ++c0; memoryBarrierImage(); ++c0; }glslang-16.0.0/Test/spv.bfloat16.comp000066400000000000000000000067311506534232700172670ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; const bfloat16_t bc10 = bfloat16_t(10); const bf16vec2 b2c20 = bf16vec2(20); layout(constant_id = 1) const bfloat16_t bsc10 = bfloat16_t(10); struct S { bfloat16_t b; }; const S sc = S(bc10); const bfloat16_t bca[2] = {bc10, bc10}; shared bfloat16_t bfs[10]; layout(scalar) buffer B { bf16vec3 b3; bf16vec2 b2; bfloat16_t b1; } buf; bfloat16_t funcbf16(bfloat16_t x) { return x; } bfloat16_t funcf32(float32_t x) { return bfloat16_t(x); } bfloat16_t funcf64(float64_t x) { return bfloat16_t(x); } void main() { float f = 2.0; bfloat16_t b = bfloat16_t(1.0); bfloat16_t(f); bf16vec2 b2 = bf16vec2(f); uint8_t u8 = uint8_t(5); uint16_t u16 = uint16_t(5); uint32_t u32 = 5; uint64_t u64 = 5; int8_t i8 = int8_t(6); int16_t i16 = int16_t(6); int32_t i32 = 6; int64_t i64 = 6; bfloat16_t bf16 = bfloat16_t(7); float16_t f16 = float16_t(7); float32_t f32 = 7; float64_t f64 = 7; b = bfloat16_t(u8); b = bfloat16_t(u16); b = bfloat16_t(u32); b = bfloat16_t(u64); b = bfloat16_t(i8); b = bfloat16_t(i16); b = bfloat16_t(i32); b = bfloat16_t(i64); b = bfloat16_t(bf16); b = bfloat16_t(f16); b = bfloat16_t(f32); b = bfloat16_t(f64); u8 = uint8_t(b); u16 = uint16_t(b); u32 = uint32_t(b); u64 = uint64_t(b); i8 = int8_t(b); i16 = int16_t(b); i32 = int32_t(b); i64 = int64_t(b); bf16 = bfloat16_t(b); f16 = float16_t(b); f32 = float32_t(b); f64 = float64_t(b); f32 = b; f64 = b; b = buf.b1; b2 = buf.b2; bf16vec3 b3 = buf.b3; dot(b2, b2); coopmat cmA = coopmat(3.0); coopmat cmAf = coopmat(cmA); funcbf16(b); funcf32(b); funcf64(b); int16_t i16_1 = bfloat16BitsToIntEXT(b); i16vec2 i16_2 = bfloat16BitsToIntEXT(b2); i16vec3 i16_3 = bfloat16BitsToIntEXT(bf16vec3(b2, b)); i16vec4 i16_4 = bfloat16BitsToIntEXT(bf16vec4(b2, b2)); uint16_t u16_1 = bfloat16BitsToUintEXT(b); u16vec2 u16_2 = bfloat16BitsToUintEXT(b2); u16vec3 u16_3 = bfloat16BitsToUintEXT(bf16vec3(b2, b)); u16vec4 u16_4 = bfloat16BitsToUintEXT(bf16vec4(b2, b2)); bfloat16_t b16_1 = intBitsToBFloat16EXT(i16_1); bf16vec2 b16_2 = intBitsToBFloat16EXT(i16_2); bf16vec3 b16_3 = intBitsToBFloat16EXT(i16_3); bf16vec4 b16_4 = intBitsToBFloat16EXT(i16_4); b16_1 = uintBitsToBFloat16EXT(u16_1); b16_2 = uintBitsToBFloat16EXT(u16_2); b16_3 = uintBitsToBFloat16EXT(u16_3); b16_4 = uintBitsToBFloat16EXT(u16_4); } bfloat16_t func2(bf16vec4 v[2], int i) { bfloat16_t b; b = (bf16vec2(v[0]))[i]; b = (bf16vec2(v[1])).y; v[i].z = v[i][i]; S s; s.b = b; b = (i != 0) ? b : bfloat16_t(2); if (i == 2) { b = v[0].x; } else { b = v[1].y; } return b; }glslang-16.0.0/Test/spv.bfloat16_error.comp000066400000000000000000000027141506534232700204750ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; bfloat16_t funcbf16(bfloat16_t x) { return x; } void main() { bfloat16_t b; uint8_t u8 = uint8_t(5); uint16_t u16 = uint16_t(5); uint32_t u32 = 5; uint64_t u64 = 5; int8_t i8 = int8_t(6); int16_t i16 = int16_t(6); int32_t i32 = 6; int64_t i64 = 6; bfloat16_t bf16 = bfloat16_t(7); float16_t f16 = float16_t(7); float32_t f32 = 7; float64_t f64 = 7; b = (u8); b = (u16); b = (u32); b = (u64); b = (i8); b = (i16); b = (i32); b = (i64); b = (bf16); // not an error b = (f16); b = (f32); b = (f64); u8 = (b); u16 = (b); u32 = (b); u64 = (b); i8 = (b); i16 = (b); i32 = (b); i64 = (b); bf16 = (b); // not an error f16 = (b); f32 = (b); // not an error f64 = (b); // not an error dot(b2, f16vec2(0)); funcbf16(f16); funcbf16(f32); funcbf16(f64); bool bl = bool(b); b = bfloat16_t(bl); b++; b--; -b; b+b; coopmat cmA; cmA+cmA; } glslang-16.0.0/Test/spv.bfloat16_error.frag000066400000000000000000000005621506534232700204550ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable layout(location = 0) in bfloat16_t x; layout(location = 0) out bfloat16_t y; void main() { } glslang-16.0.0/Test/spv.bitCast.frag000066400000000000000000000017741506534232700172250ustar00rootroot00000000000000#version 450 flat in int i1; flat in ivec2 i2; flat in ivec3 i3; flat in ivec4 i4; flat in uint u1; flat in uvec2 u2; flat in uvec3 u3; flat in uvec4 u4; in float f1; in vec2 f2; in vec3 f3; in vec4 f4; out vec4 fragColor; void main() { ivec4 idata = ivec4(0); idata.x += floatBitsToInt(f1); idata.xy += floatBitsToInt(f2); idata.xyz += floatBitsToInt(f3); idata += floatBitsToInt(f4); uvec4 udata = uvec4(0); udata.x += floatBitsToUint(f1); udata.xy += floatBitsToUint(f2); udata.xyz += floatBitsToUint(f3); udata += floatBitsToUint(f4); vec4 fdata = vec4(0.0); fdata.x += intBitsToFloat(i1); fdata.xy += intBitsToFloat(i2); fdata.xyz += intBitsToFloat(i3); fdata += intBitsToFloat(i4); fdata.x += uintBitsToFloat(u1); fdata.xy += uintBitsToFloat(u2); fdata.xyz += uintBitsToFloat(u3); fdata += uintBitsToFloat(u4); fragColor = (idata == udata) ? fdata : fdata + vec4(0.2); }glslang-16.0.0/Test/spv.bool.vert000066400000000000000000000003351506534232700166200ustar00rootroot00000000000000#version 450 const bool condition = false; uniform ubname { bool b; } ubinst; bool foo(bool b) { return b != condition; } void main() { gl_Position = foo(ubinst.b) ? vec4(0.0) : vec4(1.0); } glslang-16.0.0/Test/spv.boolInBlock.frag000066400000000000000000000007601506534232700200230ustar00rootroot00000000000000#version 450 layout(binding = 0, std140) uniform Uniform { bvec4 b4; }; layout(binding = 1, std430) buffer Buffer { bvec2 b2; }; void foo(bvec4 paramb4, out bvec2 paramb2) { bool b1 = paramb4.z; paramb2 = bvec2(b1); } layout(location = 0) out vec4 fragColor; void main() { b2 = bvec2(0.0); if (b4.z) b2 = bvec2(b4.x); if (b2.x) foo(b4, b2); fragColor = vec4(b4.x && b4.y); fragColor -= vec4(b4.x || b4.y); }glslang-16.0.0/Test/spv.branch-return.vert000066400000000000000000000003041506534232700204330ustar00rootroot00000000000000#version 310 es void main() { switch (gl_InstanceIndex) { case 0: return; case 1: gl_Position = vec4(0.0); break; case 2: return; case 3: return; } gl_Position.x += 0.123; } glslang-16.0.0/Test/spv.buffer.autoassign.frag000066400000000000000000000005651506534232700212560ustar00rootroot00000000000000 cbuffer MyUB1 : register(b5) // explicitly assigned & offsetted { float g_a; int g_b; }; cbuffer MyUB2 // implicitly assigned { float g_c; }; cbuffer MyUB3 // implicitly assigned { float g_d; }; struct PS_OUTPUT { float4 Color : SV_Target0; }; PS_OUTPUT main() { PS_OUTPUT psout; psout.Color = g_a + g_b + g_c + g_d; return psout; } glslang-16.0.0/Test/spv.bufferhandle1.frag000066400000000000000000000011061506534232700203270ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable #pragma use_vulkan_memory_model layout(buffer_reference, std430) buffer blockType { layout(offset = 0) int a; layout(offset = 4) int b; layout(offset = 8) int c; layout(offset = 12) int d; layout(offset = 16) int e; layout(offset = 32) int f[2]; coherent layout(offset = 48) ivec4 g; }; layout(std430) buffer t2 { blockType f; blockType g; } t; void main() { t.f.b = t.g.a; blockType j = t.f; j.d = j.c; j.d = j.f[1]; j.d = j.g.y; } glslang-16.0.0/Test/spv.bufferhandle10.frag000066400000000000000000000006571506534232700204210ustar00rootroot00000000000000#version 450 #extension GL_ARB_gpu_shader_int64 : enable #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430) buffer blockType { uint x[]; }; layout(std430) buffer t2 { blockType f; } t; layout(location = 0) flat in uint i; void main() { atomicAdd(t.f.x[i], 1); coherent blockType b = t.f; b.x[0] = 2; volatile blockType b2 = t.f; b2.x[0] = 3; } glslang-16.0.0/Test/spv.bufferhandle11.frag000066400000000000000000000011361506534232700204130ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_16bit_storage : enable #extension GL_EXT_shader_8bit_storage : enable #extension GL_EXT_buffer_reference : enable layout(std140, binding = 0) buffer AcBlock { highp uint ac_numPassed; }; layout(std140, buffer_reference) buffer Block { uint8_t var; }; layout (push_constant, std430) uniform PC { Block block; }; bool compare_uint8_t (highp uint a, highp uint b) { return a == b; } void main (void) { bool allOk = true; allOk = allOk && compare_uint8_t(uint(block.var), 7u); if (allOk) ac_numPassed++; block.var = uint8_t(9u); }glslang-16.0.0/Test/spv.bufferhandle12.frag000066400000000000000000000025311506534232700204140ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_16bit_storage : enable #extension GL_EXT_shader_8bit_storage : enable #extension GL_EXT_buffer_reference : enable layout(std140, binding = 0) buffer AcBlock { highp uint ac_numPassed; }; layout(std430, column_major, buffer_reference) buffer BlockB { float16_t a; highp ivec2 b; }; layout(std430, buffer_reference) buffer BlockC { mediump mat2x3 c; }; layout(std430, row_major, buffer_reference) buffer BlockD { lowp uvec3 d; }; layout (push_constant, std430) uniform PC { BlockB blockB; BlockC blockC; BlockD blockD; }; bool compare_float (highp float a, highp float b) { return abs(a - b) < 0.05; } bool compare_vec3 (highp vec3 a, highp vec3 b) { return compare_float(a.x, b.x)&&compare_float(a.y, b.y)&&compare_float(a.z, b.z); } bool compare_mat2x3 (highp mat2x3 a, highp mat2x3 b){ return compare_vec3(a[0], b[0])&&compare_vec3(a[1], b[1]); } bool compare_ivec2 (highp ivec2 a, highp ivec2 b) { return a == b; } bool compare_uvec3 (highp uvec3 a, highp uvec3 b) { return a == b; } bool compare_float16_t(highp float a, highp float b) { return abs(a - b) < 0.05; } void main (void) { bool allOk = true; allOk = allOk && compare_mat2x3(blockC.c, mat2x3(-5.0, 1.0, -7.0, 1.0, 2.0, 8.0)); if (allOk) ac_numPassed++; blockD.d = (uvec3(8u, 1u, 5u)); }glslang-16.0.0/Test/spv.bufferhandle13.frag000066400000000000000000000007621506534232700204210ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(set = 1, binding = 2, buffer_reference, std430) buffer t4 { layout(offset = 0) int j; }; layout(std430) buffer t5 { t4 m; } s5; t4 f1(const t4 y) { return y; } t4 f2(t4 y) { return y; } t4 f3(const restrict t4 y) { return y; } t4 f4(restrict t4 y) { return y; } t4 g1; restrict t4 g2; void main() { t4 a = s5.m; restrict t4 b = s5.m; f1(a); f2(a); f3(a); f4(a); } glslang-16.0.0/Test/spv.bufferhandle14.frag000066400000000000000000000012011506534232700204070ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430, buffer_reference_align = 4) buffer T1 { int i; int j; int k; }; layout(buffer_reference, std430, buffer_reference_align = 8) buffer T2 { int i; int j; int k; }; layout(buffer_reference, std430) buffer T3 { int i; int j; int k; }; layout(buffer_reference, std430, buffer_reference_align = 32) buffer T4 { int i; int j; int k; }; void main() { T1 t1; T2 t2; T3 t3; T4 t4; t1.i = t1.k; t2.i = t2.k; t3.i = t3.k; t4.i = t4.k; } glslang-16.0.0/Test/spv.bufferhandle15.frag000066400000000000000000000011311506534232700204120ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable #extension GL_EXT_scalar_block_layout : enable layout(buffer_reference, scalar) buffer T1 { vec3 x[]; }; layout(buffer_reference, scalar) buffer T2 { vec3 x[][4][2]; }; struct S { highp ivec3 a; mediump mat3 b[4]; highp vec4 c; }; layout(buffer_reference, scalar) buffer T3 { S s; }; layout(std430) buffer T4 { T1 t1; T2 t2; T3 t3; } t4; layout(location = 0) flat in int i; void main() { vec3 y; y = t4.t1.x[i]; y = t4.t2.x[i][i][i]; mat3 z = t4.t3.s.b[0]; } glslang-16.0.0/Test/spv.bufferhandle16.frag000066400000000000000000000012241506534232700204160ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_scalar_block_layout : enable layout(buffer_reference) buffer T1 { int x; bool y; }; layout(buffer_reference) buffer T2 { int x; }; const int s = int(uint64_t(T1(T2(uint64_t(3))))); int x[s]; const uint64_t t = uint64_t(true ? T2(uint64_t(10)) : T2(uint64_t(11))); void main() { T1 a = T1(uint64_t(4)), b = T1(uint64_t(5)); T1 c = true ? a : b; T1 d = (a,b); T1 e = true ? T1(uint64_t(6)) : T1(uint64_t(7)); T1 f = a.y ? T1(uint64_t(8)) : T1(uint64_t(9)); } glslang-16.0.0/Test/spv.bufferhandle17_Errors.frag000066400000000000000000000005351506534232700217570ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_scalar_block_layout : enable layout(buffer_reference) buffer T1 { int x; }; const T1 a = T1(uint64_t(2)); void main() { T1 b, c; const T1 d = b; b == c; b != c; } glslang-16.0.0/Test/spv.bufferhandle18.frag000066400000000000000000000025411506534232700204230ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable #extension GL_EXT_buffer_reference2 : enable #extension GL_EXT_scalar_block_layout : enable layout(buffer_reference, buffer_reference_align = 8) buffer T1 { int x; bool y; }; layout(buffer_reference, buffer_reference_align = 64) buffer T2 { int x; }; const int s = int(uint64_t(T1(T2(uint64_t(3))))); int x[s]; const uint64_t t = uint64_t(true ? T2(uint64_t(10)) : T2(uint64_t(11))); #define sizeof(T) (uint64_t(T(uint64_t(0))+1)) const uint64_t s2 = sizeof(T1); uint buf[int(s2)]; void main() { T1 a = T1(uint64_t(4)), b = T1(uint64_t(5)); T1 c = true ? a : b; T1 d = (a,b); T1 e = true ? T1(uint64_t(6)) : T1(uint64_t(7)); T1 f = a.y ? T1(uint64_t(8)) : T1(uint64_t(9)); f[3].x = 1; (f+5).x = 1; T1 arr[2] = {a, f}; arr[1][7].x = 1; int i; arr[i][i].x = 1; // Since we don't distinguish between "pointer" and "reference" type, // a reference type can have [] applied to it repeatedly and it has // the effect of adding up the indices. arr[i][i][i][i][i][i][i].x = 1; T1 j; j = j+1; j = j-2; j += 3; j -= 4; j = 5+j; T1 k = j + 6; int64_t x = k - j; uint64_t y = sizeof(T1); k = k + (-1); T2 m; m = m+1; } glslang-16.0.0/Test/spv.bufferhandle19_Errors.frag000066400000000000000000000007211506534232700217560ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable #extension GL_EXT_buffer_reference2 : enable #extension GL_EXT_scalar_block_layout : enable layout(buffer_reference) buffer T1 { int x[]; }; layout(buffer_reference) buffer T2 { int x[2]; }; void main() { T1 a; a+1; a-1; 1+a; a-a; a+=1; a-=1; a+=a; a-=a; T2 b; b+=b; b-=b; b+b; 1-b; } glslang-16.0.0/Test/spv.bufferhandle2.frag000066400000000000000000000010011506534232700203220ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430) buffer blockType { layout(offset = 0) int a; layout(offset = 4) int b; layout(offset = 8) int c; layout(offset = 12) int d; layout(offset = 16) int e; }; layout(std430) buffer t2 { blockType f; blockType g; } t; void main() { blockType b1[2] = blockType[2](t.f, t.g); b1[0].a = b1[1].b; blockType b2 = t.f; blockType b3 = t.g; b2.a = b3.b; } glslang-16.0.0/Test/spv.bufferhandle3_Errors.frag000066400000000000000000000006261506534232700216730ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430) buffer t3 { int h; }; layout(set = 1, binding = 2, buffer_reference, std430) buffer t4 { layout(offset = 0) int j; t3 k; } x; layout(std430) buffer t5 { t4 m; } s5; flat in t4 k; t4 foo(t4 y) { return y; } void main() { foo(s5.m).j = s5.m.k.h; x.j = k.k.h; } glslang-16.0.0/Test/spv.bufferhandle4.frag000066400000000000000000000007001506534232700203310ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(buffer_reference) buffer t4; layout(buffer_reference, std430) buffer t3 { int h; t4 i; }; layout(set = 1, binding = 2, buffer_reference, std430) buffer t4 { layout(offset = 0) int j; t3 k; } x; layout(std430) buffer t5 { t4 m; } s5; void main() { x.k.h = s5.m.k.i.k.i.k.h; bool b = true; s5.m = b ? s5.m : s5.m.k.i; } glslang-16.0.0/Test/spv.bufferhandle5.frag000066400000000000000000000004111506534232700203310ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std140) buffer t3 { int h; }; layout(set = 1, binding = 2, std140) uniform t4 { layout(offset = 0) int j; t3 k; } x; void main() { x.k.h = x.j; } glslang-16.0.0/Test/spv.bufferhandle6.frag000066400000000000000000000021241506534232700203350ustar00rootroot00000000000000#version 450 core #extension GL_EXT_buffer_reference : enable layout (push_constant, std430) uniform Block { int identity[32]; } pc; layout(r32ui, set = 3, binding = 0) uniform uimage2D image0_0; layout(buffer_reference) buffer T1; layout(set = 3, binding = 1, buffer_reference) buffer T1 { layout(offset = 0) int a[2]; // stride = 4 for std430, 16 for std140 layout(offset = 32) int b; layout(offset = 48) T1 c[2]; // stride = 8 for std430, 16 for std140 layout(offset = 80) T1 d; } x; void main() { int accum = 0, temp; accum |= x.a[0] - 0; accum |= x.a[pc.identity[1]] - 1; accum |= x.b - 2; accum |= x.c[0].a[0] - 3; accum |= x.c[0].a[pc.identity[1]] - 4; accum |= x.c[0].b - 5; accum |= x.c[pc.identity[1]].a[0] - 6; accum |= x.c[pc.identity[1]].a[pc.identity[1]] - 7; accum |= x.c[pc.identity[1]].b - 8; accum |= x.d.a[0] - 9; accum |= x.d.a[pc.identity[1]] - 10; accum |= x.d.b - 11; uvec4 color = (accum != 0) ? uvec4(0,0,0,0) : uvec4(1,0,0,1); imageStore(image0_0, ivec2(gl_FragCoord.x, gl_FragCoord.y), color); }glslang-16.0.0/Test/spv.bufferhandle7.frag000066400000000000000000000007201506534232700203360ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430) buffer blockType { layout(offset = 0) int a; layout(offset = 4) int b; layout(offset = 8) int c; layout(offset = 12) int d; layout(offset = 16) int e; }; layout(std430, buffer_reference) buffer t2 { blockType f; blockType g; } t; layout(std430) buffer t3 { t2 f; } u; void main() { t.f = blockType(u.f); } glslang-16.0.0/Test/spv.bufferhandle8.frag000066400000000000000000000012341506534232700203400ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430) buffer blockType { layout(offset = 0) int a; layout(offset = 4) int b; layout(offset = 8) int c; layout(offset = 12) int d; layout(offset = 16) int e; }; layout(std430) buffer t2 { blockType f; blockType g; } t; layout(std430, buffer_reference) buffer T2 { int x; }; layout(std430, buffer_reference) buffer T1 { int x; }; struct Blah { T1 t1; T2 t2; }; layout(set=0, binding=0) buffer T3 { Blah Bindings[]; } t3; void main() { Blah x = t3.Bindings[2]; t3.Bindings[0] = t3.Bindings[1]; } glslang-16.0.0/Test/spv.bufferhandle9.frag000066400000000000000000000012501506534232700203370ustar00rootroot00000000000000#version 450 #extension GL_ARB_gpu_shader_int64 : enable #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430) buffer blockType { layout(offset = 0) int a; layout(offset = 4) int b; layout(offset = 8) int c; layout(offset = 12) int d; layout(offset = 16) int e; }; layout(std430) buffer t2 { blockType f; blockType g; } t; flat in uint64_t h, i; void main() { blockType b1[2] = blockType[2](blockType(h), blockType(i)); b1[0].a = b1[1].b; blockType b2 = blockType(h); blockType b3 = blockType(i); b2.a = b3.b; uint64_t j = uint64_t(b2); b2 = blockType(j+256); } glslang-16.0.0/Test/spv.bufferhandleUvec2.frag000066400000000000000000000012771506534232700211640ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference_uvec2 : enable layout(buffer_reference, std430) buffer blockType { layout(offset = 0) int a; layout(offset = 4) int b; layout(offset = 8) int c; layout(offset = 12) int d; layout(offset = 16) int e; }; layout(std430) buffer t2 { blockType f; blockType g; } t; flat in uvec2 h, i; void main() { blockType b1[2] = blockType[2](blockType(h), blockType(i)); b1[0].a = b1[1].b; blockType b2 = blockType(h); blockType b3 = blockType(i); b2.a = b3.b; uvec2 j = uvec2(b2); uint carry; j.x = uaddCarry(j.x, 256, carry); j.y += carry; b2 = blockType(j); } glslang-16.0.0/Test/spv.bufferhandle_Error.frag000066400000000000000000000023421506534232700214220ustar00rootroot00000000000000#version 450 #extension GL_EXT_buffer_reference : enable layout(buffer_reference) buffer bufType1 { int x; }; layout(buffer_reference) buffer bufType2 { int x; }; layout(buffer_reference) uniform bufType3 { int x; }; layout(buffer_reference) buffer; layout(buffer_reference) uniform; layout(buffer_reference) in; layout(buffer_reference) out; layout(buffer_reference) in badin { float x; } badin2; layout(buffer_reference) out badout { float x; } badout2; layout(buffer_reference) buffer bufType5; layout(buffer_reference) buffer bufType6 { int x[]; }; layout(buffer_reference, std140, buffer_reference_align = 16) buffer bufType7; layout(buffer_reference) buffer bufType7 { int x[]; }; buffer bufType4 { bufType1 b1; bufType2 b2; bufType3 b3; bufType6 b6; bufType7 b7; } b4; void f() { bufType6 b; b.x.length(); b4.b6.x.length(); b[2]; // ERROR, can't index due to unsized array } void main() { bufType2 x1 = b4.b1; bufType2 x2 = bufType2(b4.b1); bufType2 x3 = bufType2(b4.b2); bufType2 x4 = bufType2(b4.b3); b4.b1 = b4.b2; b4.b1 = b4.b3; b4.b3 = b4.b2; } layout(buffer_reference) uniform bufType5 { int x; }; glslang-16.0.0/Test/spv.builtInXFB.vert000066400000000000000000000003741506534232700176360ustar00rootroot00000000000000#version 450 layout(xfb_buffer = 1, xfb_stride = 64) out; layout (xfb_buffer = 1, xfb_offset = 16) out gl_PerVertex { float gl_PointSize; vec4 gl_Position; }; void main() { gl_Position = vec4(1.0); gl_PointSize = 2.0; }glslang-16.0.0/Test/spv.builtin.PrimitiveShadingRateEXT.vert000066400000000000000000000014511506534232700237750ustar00rootroot00000000000000#version 450 #extension GL_EXT_fragment_shading_rate : enable layout(location = 0) in int id; void main() { switch (id) { case 0: // V2 | H2 => 5 gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT; break; case 1: // V2 | H4 => 9 gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag4HorizontalPixelsEXT; break; case 2: // V4 | H2 => 6 gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag4VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT; break; case 3: // V4 | H4 => 10 gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag4VerticalPixelsEXT | gl_ShadingRateFlag4HorizontalPixelsEXT; break; } }glslang-16.0.0/Test/spv.builtin.ShadingRateEXT.frag000066400000000000000000000002011506534232700220330ustar00rootroot00000000000000#version 450 #extension GL_EXT_fragment_shading_rate : enable out highp int val; void main () { val = gl_ShadingRateEXT; } glslang-16.0.0/Test/spv.computeShaderDerivatives.comp000066400000000000000000000052011506534232700226510ustar00rootroot00000000000000#version 450 #extension GL_NV_compute_shader_derivatives : require layout (local_size_x = 2, local_size_y = 4) in; layout(derivative_group_quadsNV) in; buffer block { float fDerivativeX; float fDerivativeY; float fDerivativeWidth; float fCoarseDerivativeX; float fCoarseDerivativeY; float fCoarseDerivativeWidth; float fFineDerivativeX; float fFineDerivativeY; float fFineDerivativeWidth; float fX; float fY; vec2 v2DerivativeX; vec2 v2DerivativeY; vec2 v2DerivativeWidth; vec2 v2CoarseDerivativeX; vec2 v2CoarseDerivativeY; vec2 v2CoarseDerivativeWidth; vec2 v2FineDerivativeX; vec2 v2FineDerivativeY; vec2 v2FineDerivativeWidth; vec2 v2X; vec2 v2Y; vec3 v3DerivativeX; vec3 v3DerivativeY; vec3 v3DerivativeWidth; vec3 v3CoarseDerivativeX; vec3 v3CoarseDerivativeY; vec3 v3CoarseDerivativeWidth; vec3 v3FineDerivativeX; vec3 v3FineDerivativeY; vec3 v3FineDerivativeWidth; vec3 v3X; vec3 v3Y; vec4 v4DerivativeX; vec4 v4DerivativeY; vec4 v4DerivativeWidth; vec4 v4CoarseDerivativeX; vec4 v4CoarseDerivativeY; vec4 v4CoarseDerivativeWidth; vec4 v4FineDerivativeX; vec4 v4FineDerivativeY; vec4 v4FineDerivativeWidth; vec4 v4X; vec4 v4Y; }; void main(){ fDerivativeX = dFdx(fX); fDerivativeY = dFdy(fY); fDerivativeWidth = fwidth(fX); fCoarseDerivativeX = dFdxCoarse(fX); fCoarseDerivativeY = dFdyCoarse(fY); fCoarseDerivativeWidth = fwidthCoarse(fX); fFineDerivativeX = dFdxFine(fX); fFineDerivativeY = dFdyFine(fY); fFineDerivativeWidth = fwidthFine(fX); v2DerivativeX = dFdx(v2X); v2DerivativeY = dFdy(v2Y); v2DerivativeWidth = fwidth(v2X); v2CoarseDerivativeX = dFdxCoarse(v2X); v2CoarseDerivativeY = dFdyCoarse(v2Y); v2CoarseDerivativeWidth = fwidthCoarse(v2X); v2FineDerivativeX = dFdxFine(v2X); v2FineDerivativeY = dFdyFine(v2Y); v2FineDerivativeWidth = fwidthFine(v2X); v3DerivativeX = dFdx(v3X); v3DerivativeY = dFdy(v3Y); v3DerivativeWidth = fwidth(v3X); v3CoarseDerivativeX = dFdxCoarse(v3X); v3CoarseDerivativeY = dFdyCoarse(v3Y); v3CoarseDerivativeWidth = fwidthCoarse(v3X); v3FineDerivativeX = dFdxFine(v3X); v3FineDerivativeY = dFdyFine(v3Y); v3FineDerivativeWidth = fwidthFine(v3X); v4DerivativeX = dFdx(v4X); v4DerivativeY = dFdy(v4Y); v4DerivativeWidth = fwidth(v4X); v4CoarseDerivativeX = dFdxCoarse(v4X); v4CoarseDerivativeY = dFdyCoarse(v4Y); v4CoarseDerivativeWidth = fwidthCoarse(v4X); v4FineDerivativeX = dFdxFine(v4X); v4FineDerivativeY = dFdyFine(v4Y); v4FineDerivativeWidth = fwidthFine(v4X); } glslang-16.0.0/Test/spv.computeShaderDerivatives2.comp000066400000000000000000000052051506534232700227370ustar00rootroot00000000000000#version 320 es #extension GL_NV_compute_shader_derivatives : require layout (local_size_x = 2, local_size_y = 4) in; layout(derivative_group_linearNV) in; buffer block { float fDerivativeX; float fDerivativeY; float fDerivativeWidth; float fCoarseDerivativeX; float fCoarseDerivativeY; float fCoarseDerivativeWidth; float fFineDerivativeX; float fFineDerivativeY; float fFineDerivativeWidth; float fX; float fY; vec2 v2DerivativeX; vec2 v2DerivativeY; vec2 v2DerivativeWidth; vec2 v2CoarseDerivativeX; vec2 v2CoarseDerivativeY; vec2 v2CoarseDerivativeWidth; vec2 v2FineDerivativeX; vec2 v2FineDerivativeY; vec2 v2FineDerivativeWidth; vec2 v2X; vec2 v2Y; vec3 v3DerivativeX; vec3 v3DerivativeY; vec3 v3DerivativeWidth; vec3 v3CoarseDerivativeX; vec3 v3CoarseDerivativeY; vec3 v3CoarseDerivativeWidth; vec3 v3FineDerivativeX; vec3 v3FineDerivativeY; vec3 v3FineDerivativeWidth; vec3 v3X; vec3 v3Y; vec4 v4DerivativeX; vec4 v4DerivativeY; vec4 v4DerivativeWidth; vec4 v4CoarseDerivativeX; vec4 v4CoarseDerivativeY; vec4 v4CoarseDerivativeWidth; vec4 v4FineDerivativeX; vec4 v4FineDerivativeY; vec4 v4FineDerivativeWidth; vec4 v4X; vec4 v4Y; }; void main(){ fDerivativeX = dFdx(fX); fDerivativeY = dFdy(fY); fDerivativeWidth = fwidth(fX); fCoarseDerivativeX = dFdxCoarse(fX); fCoarseDerivativeY = dFdyCoarse(fY); fCoarseDerivativeWidth = fwidthCoarse(fX); fFineDerivativeX = dFdxFine(fX); fFineDerivativeY = dFdyFine(fY); fFineDerivativeWidth = fwidthFine(fX); v2DerivativeX = dFdx(v2X); v2DerivativeY = dFdy(v2Y); v2DerivativeWidth = fwidth(v2X); v2CoarseDerivativeX = dFdxCoarse(v2X); v2CoarseDerivativeY = dFdyCoarse(v2Y); v2CoarseDerivativeWidth = fwidthCoarse(v2X); v2FineDerivativeX = dFdxFine(v2X); v2FineDerivativeY = dFdyFine(v2Y); v2FineDerivativeWidth = fwidthFine(v2X); v3DerivativeX = dFdx(v3X); v3DerivativeY = dFdy(v3Y); v3DerivativeWidth = fwidth(v3X); v3CoarseDerivativeX = dFdxCoarse(v3X); v3CoarseDerivativeY = dFdyCoarse(v3Y); v3CoarseDerivativeWidth = fwidthCoarse(v3X); v3FineDerivativeX = dFdxFine(v3X); v3FineDerivativeY = dFdyFine(v3Y); v3FineDerivativeWidth = fwidthFine(v3X); v4DerivativeX = dFdx(v4X); v4DerivativeY = dFdy(v4Y); v4DerivativeWidth = fwidth(v4X); v4CoarseDerivativeX = dFdxCoarse(v4X); v4CoarseDerivativeY = dFdyCoarse(v4Y); v4CoarseDerivativeWidth = fwidthCoarse(v4X); v4FineDerivativeX = dFdxFine(v4X); v4FineDerivativeY = dFdyFine(v4Y); v4FineDerivativeWidth = fwidthFine(v4X); } glslang-16.0.0/Test/spv.computeShaderDerivativesSpec.comp000066400000000000000000000002601506534232700234640ustar00rootroot00000000000000#version 450 #extension GL_NV_compute_shader_derivatives : require layout (local_size_x_id = 0, local_size_y_id = 1) in; layout(derivative_group_quadsNV) in; void main(){ } glslang-16.0.0/Test/spv.computeShaderDerivativesSpec2.comp000066400000000000000000000002641506534232700235520ustar00rootroot00000000000000#version 320 es #extension GL_NV_compute_shader_derivatives : require layout (local_size_x_id = 0, local_size_y_id = 1) in; layout(derivative_group_linearNV) in; void main(){ } glslang-16.0.0/Test/spv.conditionalDemote.frag000066400000000000000000000005631506534232700212700ustar00rootroot00000000000000#version 460 core #extension GL_EXT_demote_to_helper_invocation : enable layout(set = 0, binding = 0) uniform sampler2D tex; layout(location = 0) in vec2 coord; layout(location = 0) out vec4 o; void main (void) { vec4 v = texture(tex, coord); if (v == vec4(0.1,0.2,0.3,0.4)) demote; bool x = helperInvocationEXT(); o = v; } glslang-16.0.0/Test/spv.conditionalDiscard.frag000066400000000000000000000003071506534232700214200ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/spv.constConstruct.vert000066400000000000000000000116671506534232700207320ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #extension GL_EXT_shader_explicit_arithmetic_types_float32 : enable #extension GL_EXT_shader_explicit_arithmetic_types_float64 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable precision highp float; void main() { float16_t(float16_t(0x1)); float16_t(float32_t(0x2)); float16_t(float64_t(0x3)); float16_t(int8_t (0x4)); float16_t(int16_t (0x5)); float16_t(int32_t (0x6)); float16_t(int64_t (0x7)); float16_t(uint8_t (0x8)); float16_t(uint16_t (0x9)); float16_t(uint32_t (0xA)); float16_t(uint64_t (0xB)); float16_t(bool (0xC)); float32_t(float16_t(0x11)); float32_t(float32_t(0x12)); float32_t(float64_t(0x13)); float32_t(int8_t (0x14)); float32_t(int16_t (0x15)); float32_t(int32_t (0x16)); float32_t(int64_t (0x17)); float32_t(uint8_t (0x18)); float32_t(uint16_t (0x19)); float32_t(uint32_t (0x1A)); float32_t(uint64_t (0x1B)); float32_t(bool (0x1C)); float64_t(float16_t(0x21)); float64_t(float32_t(0x22)); float64_t(float64_t(0x23)); float64_t(int8_t (0x24)); float64_t(int16_t (0x25)); float64_t(int32_t (0x26)); float64_t(int64_t (0x27)); float64_t(uint8_t (0x28)); float64_t(uint16_t (0x29)); float64_t(uint32_t (0x2A)); float64_t(uint64_t (0x2B)); float64_t(bool (0x2C)); int8_t(float16_t(0x31)); int8_t(float32_t(0x32)); int8_t(float64_t(0x33)); int8_t(int8_t (0x34)); int8_t(int16_t (0x35)); int8_t(int32_t (0x36)); int8_t(int64_t (0x37)); int8_t(uint8_t (0x38)); int8_t(uint16_t (0x39)); int8_t(uint32_t (0x3A)); int8_t(uint64_t (0x3B)); int8_t(bool (0x3C)); int16_t(float16_t(0x41)); int16_t(float32_t(0x42)); int16_t(float64_t(0x43)); int16_t(int8_t (0x44)); int16_t(int16_t (0x45)); int16_t(int32_t (0x46)); int16_t(int64_t (0x47)); int16_t(uint8_t (0x48)); int16_t(uint16_t (0x49)); int16_t(uint32_t (0x4A)); int16_t(uint64_t (0x4B)); int16_t(bool (0x4C)); int32_t(float16_t(0x51)); int32_t(float32_t(0x52)); int32_t(float64_t(0x53)); int32_t(int8_t (0x54)); int32_t(int16_t (0x55)); int32_t(int32_t (0x56)); int32_t(int64_t (0x57)); int32_t(uint8_t (0x58)); int32_t(uint16_t (0x59)); int32_t(uint32_t (0x5A)); int32_t(uint64_t (0x5B)); int32_t(bool (0x5C)); int64_t(float16_t(0x61)); int64_t(float32_t(0x62)); int64_t(float64_t(0x63)); int64_t(int8_t (0x64)); int64_t(int16_t (0x65)); int64_t(int32_t (0x66)); int64_t(int64_t (0x67)); int64_t(uint8_t (0x68)); int64_t(uint16_t (0x69)); int64_t(uint32_t (0x6A)); int64_t(uint64_t (0x6B)); int64_t(bool (0x6C)); uint8_t(float16_t(0x71)); uint8_t(float32_t(0x72)); uint8_t(float64_t(0x73)); uint8_t(int8_t (0x74)); uint8_t(int16_t (0x75)); uint8_t(int32_t (0x76)); uint8_t(int64_t (0x77)); uint8_t(uint8_t (0x78)); uint8_t(uint16_t (0x79)); uint8_t(uint32_t (0x7A)); uint8_t(uint64_t (0x7B)); uint8_t(bool (0x7C)); uint16_t(float16_t(0x81)); uint16_t(float32_t(0x82)); uint16_t(float64_t(0x83)); uint16_t(int8_t (0x84)); uint16_t(int16_t (0x85)); uint16_t(int32_t (0x86)); uint16_t(int64_t (0x87)); uint16_t(uint8_t (0x88)); uint16_t(uint16_t (0x89)); uint16_t(uint32_t (0x8A)); uint16_t(uint64_t (0x8B)); uint16_t(bool (0x8C)); uint32_t(float16_t(0x91)); uint32_t(float32_t(0x92)); uint32_t(float64_t(0x93)); uint32_t(int8_t (0x94)); uint32_t(int16_t (0x95)); uint32_t(int32_t (0x96)); uint32_t(int64_t (0x97)); uint32_t(uint8_t (0x98)); uint32_t(uint16_t (0x99)); uint32_t(uint32_t (0x9A)); uint32_t(uint64_t (0x9B)); uint32_t(bool (0x9C)); uint64_t(float16_t(0xA1)); uint64_t(float32_t(0xA2)); uint64_t(float64_t(0xA3)); uint64_t(int8_t (0xA4)); uint64_t(int16_t (0xA5)); uint64_t(int32_t (0xA6)); uint64_t(int64_t (0xA7)); uint64_t(uint8_t (0xA8)); uint64_t(uint16_t (0xA9)); uint64_t(uint32_t (0xAA)); uint64_t(uint64_t (0xAB)); uint64_t(bool (0xAC)); bool(float16_t(0xB1)); bool(float32_t(0xB2)); bool(float64_t(0xB3)); bool(int8_t (0xB4)); bool(int16_t (0xB5)); bool(int32_t (0xB6)); bool(int64_t (0xB7)); bool(uint8_t (0xB8)); bool(uint16_t (0xB9)); bool(uint32_t (0xBA)); bool(uint64_t (0xBB)); bool(bool (0xBC)); } glslang-16.0.0/Test/spv.constStruct.vert000066400000000000000000000003671506534232700202250ustar00rootroot00000000000000#version 450 precision highp float; struct U { mat2 m; }; struct T { mat2 m; }; struct S { T t; U u; }; void main() { S s1 = S(T(mat2(1.0)), U(mat2(1.0))); S s2 = S(T(mat2(1.0)), U(mat2(1.0))); } glslang-16.0.0/Test/spv.constructComposite.comp000066400000000000000000000003531506534232700215520ustar00rootroot00000000000000#version 460 core layout(local_size_x=64) in; struct sA { int x, y; }; struct sB { sA a; }; layout(binding=0,set=0) uniform ubo { sB b; }; struct sC { sA state; } c = { b.a, }; void main() { } glslang-16.0.0/Test/spv.controlFlowAttributes.frag000066400000000000000000000030421506534232700222010ustar00rootroot00000000000000#version 450 #extension GL_EXT_control_flow_attributes : enable bool cond; void f0() { [[loop]] for (;;) { } } void f1() { [[dont_unroll]] while(true) { } } void main() { [[unroll]] for (int i = 0; i < 8; ++i) { } f0(); [[dependency_infinite]] do { } while(true); [[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { } [[flatten]] if (cond) { } else { } [[branch]] if (cond) cond = false; [[dont_flatten]] switch(3) { } // dropped [[dont_flatten]] switch(3) { case 3: break; } // warnings on all these [[unroll(2)]] for (int i = 0; i < 8; ++i) { } [[dont_unroll(-2)]] while(true) { } [[dependency_infinite(3)]] do { } while(true); [[dependency_length]] for (int i = 0; i < 8; ++i) { } [[flatten(3)]] if (cond) { } else { } [[branch(5.2)]] if (cond) cond = false; [[dont_flatten(3 + 7)]] switch(3) { case 3: break; } // other valid uses [[ unroll, dont_unroll, dependency_length(2) ]] while(cond) { } [ [ dont_flatten , branch ] ] switch(3) { case 3: break; } [ // attribute [ // here flatten ] ] if (cond) { } else { } [[ dependency_length(2), dependency_infinite ]] while(cond) { } } glslang-16.0.0/Test/spv.conversion.frag000066400000000000000000000040261506534232700200120ustar00rootroot00000000000000#version 140 bool u_b; bvec2 u_b2; bvec3 u_b3; bvec4 u_b4; int u_i; ivec2 u_i2; ivec3 u_i3; ivec4 u_i4; float u_f; vec2 u_f2; vec3 u_f3; vec4 u_f4; bool i_b; bvec2 i_b2; bvec3 i_b3; bvec4 i_b4; flat in int i_i; flat in ivec2 i_i2; flat in ivec3 i_i3; flat in ivec4 i_i4; in float i_f; in vec2 i_f2; in vec3 i_f3; in vec4 i_f4; void main() { bool b = bool(u_i) ^^ bool(u_f); bvec2 b2 = bvec2(u_i, u_f); bvec3 b3 = bvec3(u_i, u_f, i_i); bvec4 b4 = bvec4(u_i, u_f, i_i, i_f); int i = int(u_f) + int(b); ivec2 i2 = ivec2(u_f2) + ivec2(b2); ivec3 i3 = ivec3(u_f3) + ivec3(b3); ivec4 i4 = ivec4(u_f4) + ivec4(b4); float f = i; vec2 f2 = i2; vec3 f3 = i3; vec4 f4 = i4; f += (float(i) + float(b)); f2 -= vec2(i2) + vec2(b2); f3 /= vec3(i3) + vec3(b3); f4 += vec4(i4) + vec4(b4); f4 += vec4(bvec4(i_i4)); f4 += vec4(bvec4(u_f4)); f += f - i; f2 += vec2(f, i) + i2; f3 += i3 + vec3(f, i, f); f4 += vec4(b, i, f, i) + i4; f2 += vec2(f, i) * i; f3 += vec3(f, i, f) + i; f4 += i - vec4(b, i, f, i); i2 += ivec2(f, i); i3 += ivec3(f, i, f); i4 += ivec4(b, i, f, i); if (f < i || i < f || f2 == i2 || i3 != f3) f = (b ? i : f2.x) + (b2.x ? f3.x : i2.y); gl_FragColor = b || b2.x || b2.y || b3.x || b3.y || b3.z || b4.x || b4.y || b4.z || b4.w ? vec4( i + i2.x + i2.y + i3.x + i3.y + i3.z + i4.x + i4.y + i4.z + i4.w + f + f2.x + f2.y + f3.x + f3.y + f3.z + f4.x + f4.y + f4.z + f4.w) : vec4(1.0); // with constants... ivec4 cv2 = ivec4(1.0); bvec4 cv5 = bvec4(cv2); gl_FragColor += float(cv5); } glslang-16.0.0/Test/spv.coopmat.comp000066400000000000000000000066541506534232700173170ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #extension GL_EXT_buffer_reference : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; const int X = 8; layout(constant_id = 0) const int Y = 2; const int Z = X*Y; fcoopmatNV<16, gl_ScopeSubgroup, Z, 8> mC; fcoopmatNV<16, gl_ScopeSubgroup, Z, 8> mC2[3]; int arr[mC.length()]; int arr2[mC2[1].length()]; layout(constant_id = 1) const float F = 3.0; const fcoopmatNV<32, gl_ScopeSubgroup, Z, 8> mD = fcoopmatNV<32, gl_ScopeSubgroup, Z, 8>(0.0); const fcoopmatNV<16, gl_ScopeSubgroup, 8, 8> mD2 = fcoopmatNV<16, gl_ScopeSubgroup, 8, 8>(1); struct S { int a; int b; int c; }; const S s = S(12, 23, 34); layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { float y[1024*1024]; float x[]; } block; layout(set = 0, binding = 0) coherent buffer Block16 { float16_t arr[256][256]; float16_t y[1024*1024]; float16_t x[]; Block b; } block16; fcoopmatNV<16, gl_ScopeSubgroup, 8, 8> f16(fcoopmatNV<16, gl_ScopeSubgroup, 8, 8> m) { return -m; } fcoopmatNV<32, gl_ScopeSubgroup, 8, 8> f32(fcoopmatNV<32, gl_ScopeSubgroup, 8, 8> m) { return -m; } layout(constant_id = 2) const int SC = 1; fcoopmatNV<16, gl_ScopeSubgroup, SC, SC> scm[SC][SC]; // sized for fcoopmatNV<16, gl_ScopeSubgroup, 16, 16> shared uvec4 shmatrix[16*16*2/16]; void main() { fcoopmatNV<32, gl_ScopeSubgroup, 16, (2>1?8:4)> m = fcoopmatNV<32, gl_ScopeSubgroup, 16, (2>1?8:4)>(0.0); m = m + m; m = m - m; m = -m; m = 2.0*m; m = m*2.0; fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> m2 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(m); float x = m[1]; m[0] = x; coopMatLoadNV(m, block.x, 16, 128, false); coopMatStoreNV(m, block.x, 16, 128, false); coopMatLoadNV(m2, block16.x, 16, 128, false); coopMatStoreNV(m2, block16.x, 16, 128, false); coopMatLoadNV(m, block16.b.x, 16, 128, false); coopMatStoreNV(m, block16.b.x, 16, 128, false); fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> A; fcoopmatNV<16, gl_ScopeSubgroup, 8, 8> B; fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> C; fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> D; D = coopMatMulAddNV(A, B, C); int l = D.length(); fcoopmatNV<16, gl_ScopeSubgroup, 8, 8> E; fcoopmatNV<16, gl_ScopeSubgroup, Z, Z> F = fcoopmatNV<16, gl_ScopeSubgroup, Z, Z>(0.0); fcoopmatNV<32, gl_ScopeSubgroup, 16, (2>1?8:4)> a[5]; a[3][0] = 1.0; float md1 = mD[1]; md1 += (m += m)[1234]; mC2[1] = mC2[2]; coopMatLoadNV(m, block.y, 16, 128, false); coopMatStoreNV(m, block.y, 16, 128, false); coopMatLoadNV(m2, block16.y, 16, 128, false); coopMatStoreNV(m2, block16.y, 16, 128, false); fcoopmatNV<16, gl_ScopeSubgroup, 8, 8> p1; fcoopmatNV<32, gl_ScopeSubgroup, 8, 8> p2; p1 = f16(p1); p2 = f32(p2); p1 = fcoopmatNV<16, gl_ScopeSubgroup, 8, 8>(0.0); p2 = fcoopmatNV<32, gl_ScopeSubgroup, 8, 8>(0.0); p1 /= p1; p1 *= float16_t(2.0); p2 *= 4.0; fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> ms; coopMatLoadNV(ms, shmatrix, 1, 2, false); coopMatStoreNV(ms, shmatrix, 1, 2, false); coopMatLoadNV(ms, block16.arr[8], 1, 2, false); coopMatStoreNV(ms, block16.arr[16], 1, 2, false); } glslang-16.0.0/Test/spv.coopmat2_constructor.comp000066400000000000000000000065571506534232700220500ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_NV_cooperative_matrix2 : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; buffer BufType { float16_t x[]; } Buf; uint32_t addr(const in uint32_t x, const in uint32_t y) { return y*64+x; } uint32_t foo() { return 124; } float16_t relu(const in uint32_t row, const in uint32_t col, const in float16_t x) { return max(x, float16_t(0)); } float16_t add(const in uint32_t row, const in uint32_t col, const in float16_t x, const in float16_t y) { return x+y; } float16_t combineSum(const in float16_t a, const in float16_t b) { return a + b; } float16_t combineMax(const in float16_t a, const in float16_t b) { return max(a, b); } layout(constant_id = 0) const uint32_t Dim = 32; void main() { coopmat A; coopmat B; coopmat Acc; A = coopmat(Acc); B = coopmat(Acc); coopmat tr; coopMatTransposeNV(tr, Acc); coopMatReduceNV(Acc, Acc, gl_CooperativeMatrixReduceRowNV, combineSum); coopMatReduceNV(Acc, Acc, gl_CooperativeMatrixReduceColumnNV, combineSum); coopMatReduceNV(Acc, Acc, gl_CooperativeMatrixReduceRowAndColumnNV, combineSum); coopmat Acc2x2; coopMatReduceNV(Acc2x2, Acc, gl_CooperativeMatrixReduce2x2NV, combineMax); //coopMatLoadTensorNV(A, Buf.x, foo(), addr); //coopMatStoreTensorNV(A, Buf.x, foo(), addr); coopMatPerElementNV(Acc, Acc, relu); coopMatPerElementNV(Acc, Acc, add, float16_t(1.0)); coopmat Accf16; coopmat Accf32; coopmat Accu32; coopmat Accs32; coopmat(Accu32); coopmat(Accu32); coopmat(Accu32); coopmat(Accs32); coopmat(Accs32); coopmat(Accs32); coopmat(Accf16); coopmat(Accf16); coopmat(Accf16); coopmat(Accf32); coopmat(Accf32); coopmat(Accf32); coopmat li, mijm1; mijm1 = coopmat(-1.0/0.0); } glslang-16.0.0/Test/spv.coopmat2_error.comp000066400000000000000000000103431506534232700206000ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_NV_cooperative_matrix2 : enable #extension GL_EXT_buffer_reference : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; buffer BufType { float16_t x[]; } Buf; layout(buffer_reference, std430, buffer_reference_align = 2) buffer fp16Buf { float16_t f; }; float16_t decode0(const in fp16Buf b, const in uint32_t blockCoords[2], const in uint32_t coordInBlock[2]) { return b.f; } float16_t decode1(const fp16Buf b, const in uint32_t blockCoords[2], const in uint32_t coordInBlock[2]) { return b.f; } float16_t decode2(in fp16Buf b, const in uint32_t blockCoords[2], const in uint32_t coordInBlock[2]) { return b.f; } float16_t decode3(fp16Buf b, const in uint32_t blockCoords[2], const in uint32_t coordInBlock[2]) { return b.f; } float16_t decode4(const in fp16Buf b, const uint32_t blockCoords[2], const in uint32_t coordInBlock[2]) { return b.f; } float16_t decode5(const in fp16Buf b, in uint32_t blockCoords[2], const in uint32_t coordInBlock[2]) { return b.f; } float16_t decode6(const in fp16Buf b, uint32_t blockCoords[2], const in uint32_t coordInBlock[2]) { return b.f; } float16_t decode7(const in fp16Buf b, const in uint32_t blockCoords[2], const uint32_t coordInBlock[2]) { return b.f; } float16_t decode8(const in fp16Buf b, const in uint32_t blockCoords[2], in uint32_t coordInBlock[2]) { return b.f; } float16_t decode9(const in fp16Buf b, const in uint32_t blockCoords[2], uint32_t coordInBlock[2]) { return b.f; } float16_t decode10(const in uint32_t b, const in uint16_t blockCoords[2], const in uint16_t coordInBlock[2]) { return float16_t(0); } float16_t decode11(const in fp16Buf b, const in uint32_t blockCoords, const in uint32_t coordInBlock) { return float16_t(0); } struct S { f16vec2 x; }; float16_t combineSum(const in float16_t a, const in float16_t b) { return a + b; } float16_t combineSum2(float16_t a, float16_t b) { return a + b; } layout(constant_id = 0) const uint32_t Clamp = gl_CooperativeMatrixClampModeConstantNV; float16_t relu(const in uint32_t row, const in uint32_t col, const in float16_t x) { return max(x, float16_t(0)); } float16_t add(const in uint32_t row, const in uint32_t col, const in float16_t x, const in float16_t y) { return x+y; } float32_t perelemf32(const in uint32_t row, const in uint32_t col, const in float16_t x) { return float32_t(x); } void main() { coopmat A; tensorLayoutNV<2> t = createTensorLayoutNV(2); coopMatLoadTensorNV(A, Buf.x, 0, t, decode0); coopMatLoadTensorNV(A, Buf.x, 0, t, decode1); coopMatLoadTensorNV(A, Buf.x, 0, t, decode2); coopMatLoadTensorNV(A, Buf.x, 0, t, decode3); coopMatLoadTensorNV(A, Buf.x, 0, t, decode4); coopMatLoadTensorNV(A, Buf.x, 0, t, decode5); coopMatLoadTensorNV(A, Buf.x, 0, t, decode6); coopMatLoadTensorNV(A, Buf.x, 0, t, decode7); coopMatLoadTensorNV(A, Buf.x, 0, t, decode8); coopMatLoadTensorNV(A, Buf.x, 0, t, decode9); coopMatLoadTensorNV(A, Buf.x, 0, t, decode10); coopMatLoadTensorNV(A, Buf.x, 0, t, decode11); coopmat Af32; coopMatReduceNV(A, A, gl_CooperativeMatrixReduceRowNV, combineSum); coopMatReduceNV(A, A, gl_CooperativeMatrixReduceRowNV, combineSum2); coopMatReduceNV(Af32, Af32, gl_CooperativeMatrixReduceRowNV, combineSum); coopMatPerElementNV(A, A, relu); coopMatPerElementNV(A, A, add, float16_t(1.0)); coopMatPerElementNV(A, A, add, coopmat(1.0)); coopMatPerElementNV(A, A, add, float32_t(1.0)); coopMatPerElementNV(A, A, add, coopmat(1.0)); coopMatPerElementNV(A, A, add); coopMatPerElementNV(A, A, add, float16_t(1.0), float16_t(1.0)); coopMatPerElementNV(Af32, A, perelemf32); coopMatPerElementNV(Af32, A, relu); float16_t larr[16]; coopMatLoadTensorNV(A, larr, 0, t); coopMatStoreTensorNV(A, larr, 0, t); } glslang-16.0.0/Test/spv.coopmat2_tensor.comp000066400000000000000000000045541506534232700207700ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_NV_cooperative_matrix2 : enable #extension GL_EXT_buffer_reference : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; buffer BufType { float16_t arr[256][256]; float16_t x[]; } Buf; layout(buffer_reference, std430, buffer_reference_align = 2) buffer fp16Buf { float16_t f; }; float16_t decode(const in fp16Buf b, const in uint32_t blockCoords[2], const in uint32_t coordInBlock[2]) { return b.f; } struct S { f16vec2 x; }; layout(std430, binding = 0) buffer SBuf { S s[]; } sbuf; layout(constant_id = 0) const uint32_t Clamp = gl_CooperativeMatrixClampModeConstantNV; layout(constant_id = 1) const int32_t Clamp_signed = gl_CooperativeMatrixClampModeConstantNV; void main() { coopmat A; tensorLayoutNV<2> t = createTensorLayoutNV(2); tensorLayoutNV<3, 1> t2 = createTensorLayoutNV(3, 1); t = setTensorLayoutBlockSizeNV(t, 4, 8); t = setTensorLayoutDimensionNV(t, 256, 512); t = sliceTensorLayoutNV(t, 128, 32, 256, 32); tensorViewNV<5> v = createTensorViewNV(5); v = setTensorViewDimensionsNV(v, 10, 11, 12, 13, 14); v = setTensorViewStrideNV(v, 10, 11, 12, 13, 15); v = setTensorViewClipNV(v, 0, 16, 0, 16); tensorViewNV<5, true> v2 = createTensorViewNV(5, true); tensorViewNV<2, true, 1, 0> v3 = createTensorViewNV(2, true, 1, 0); coopMatLoadTensorNV(A, Buf.x, 0, t); coopMatStoreTensorNV(A, Buf.x, 0, t); coopMatLoadTensorNV(A, Buf.x, 0, t, v); coopMatStoreTensorNV(A, Buf.x, 0, t, v); coopMatLoadTensorNV(A, Buf.x, 0, t, decode); coopMatLoadTensorNV(A, Buf.x, 0, t, v, decode); coopMatLoadTensorNV(A, sbuf.s, 1, t, v, decode); tensorLayoutNV<2, Clamp> tc = createTensorLayoutNV(2, Clamp); coopmat Arr[2]; coopMatLoadTensorNV(Arr[1], Buf.x, 0, t); coopMatLoadTensorNV(A, Buf.arr[8], 0, t); coopMatStoreTensorNV(A, Buf.arr[16], 0, t); tensorLayoutNV<2, Clamp_signed> tc_s = createTensorLayoutNV(2, Clamp_signed); tensorViewNV v4 = createTensorViewNV(Clamp, true); } glslang-16.0.0/Test/spv.coopmatKHR.comp000066400000000000000000000115731506534232700176600ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; const int X = 8; layout(constant_id = 0) const int Y = 2; const int Z = X*Y; coopmat mC; coopmat mC2[3]; layout(constant_id = 1) const float F = 3.0; const coopmat mD = coopmat(0.0); const coopmat mD2 = coopmat(1); struct S { int a; int b; int c; }; const S s = S(12, 23, 34); layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { float y[1024*1024]; float x[]; } block; layout(set = 0, binding = 0) coherent buffer Block16 { float16_t arr[256][256]; float16_t y[1024*1024]; float16_t x[]; Block b; } block16; coopmat f16(coopmat m) { return -m; } coopmat f32(coopmat m) { return -m; } layout(constant_id = 2) const int SC = 1; coopmat scm[SC][SC]; // sized for coopmat shared uvec4 shmatrix[16*16*2/16]; void main() { coopmat1?8:4), gl_MatrixUseAccumulator> m = coopmat1?8:4), gl_MatrixUseAccumulator>(0.0); m = m + m; m = m - m; m = -m; m = 2.0*m; m = m*2.0; coopmat m2 = coopmat(m); float x = m[1]; m[0] = x; coopMatLoad(m, block.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopMatStore(m, block.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopMatLoad(m2, block16.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopMatStore(m2, block16.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopMatLoad(m, block16.b.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopMatStore(m, block16.b.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopmat A; coopmat B; coopmat C; coopmat D; D = coopMatMulAdd(A, B, C); int l = D.length(); coopmat E; coopmat F = coopmat(0.0); coopmat1?8:4), gl_MatrixUseAccumulator> a[5]; a[3][0] = 1.0; float md1 = mD[1]; md1 += (m += m)[1234]; mC2[1] = mC2[2]; coopMatLoad(m, block.y, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopMatStore(m, block.y, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopMatLoad(m2, block16.y, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopMatStore(m2, block16.y, 16, 128, gl_CooperativeMatrixLayoutRowMajor); coopmat p1; coopmat p2; p1 = f16(p1); p2 = f32(p2); p1 = coopmat(0.0); p2 = coopmat(0.0); p1 /= p1; p1 *= float16_t(2.0); p2 *= 4.0; coopmat ms; coopMatLoad(ms, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowMajor); coopMatStore(ms, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowMajor); coopMatLoad(ms, block16.arr[8], 1, 2, gl_CooperativeMatrixLayoutRowMajor); coopMatStore(ms, block16.arr[16], 1, 2, gl_CooperativeMatrixLayoutRowMajor); coopmat ms8A; coopmat ms8B; coopmat ms8C; coopMatMulAdd(ms8A, ms8B, ms8C); coopMatMulAdd(ms8A, ms8B, ms8C, 0); coopMatMulAdd(ms8A, ms8B, ms8C, gl_MatrixOperandsSaturatingAccumulation); coopmat m16; coopMatStore(m16, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowMajor); } glslang-16.0.0/Test/spv.coopmatKHR_Error.comp000066400000000000000000000043541506534232700210300ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; float<16> ftemplate16; coopmat fnoparams; struct S { int s; }; coopmat fbadtype; coopmat fbadtype2; coopmat<16, gl_ScopeSubgroup, 8, 8, gl_MatrixUseA> fbadtype3; coopmat fbadnumparams; int X = 8; coopmat fbadparam; layout(constant_id = 0) const int Y = 1; shared coopmat sharedmat; layout(set = 0, binding = 0) buffer InvBlock { coopmat bufmat; } invblock; void main() { coopmat f32_16_8; coopmat f16_16_8; // invalid implicit conversions f32_16_8 = f16_16_8; f32_16_8 = f16_16_8 + f16_16_8; coopmat f16_8_8; // mismatching dimensions f16_16_8 = f16_8_8; coopmat f16_8_Y; coopmat f16_8_Y1; // mismatching dimensions with specialization constants f16_8_Y = f16_8_Y1; // wrong arguments for constructor f16_8_8 = coopmat(1, 1); // can't construct from a builtin type mat4 m4; coopmat f32_4_4 = coopmat(m4); // only support a single array subscript f16_16_8[0][0]; // don't support scalar component selection f16_16_8.x; transpose(f16_8_8); //buf[] argument needs be in Shared/StorageBuffer storage classes float16_t larr[16]; coopmat lvar; coopMatLoad(lvar, larr, 1, 2, gl_CooperativeMatrixLayoutRowMajor); coopMatStore(lvar, larr, 1, 2, gl_CooperativeMatrixLayoutRowMajor); } glslang-16.0.0/Test/spv.coopmatKHR_arithmetic.comp000066400000000000000000000027461506534232700220730ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; void main() { coopmat f; coopmat f2; coopmat f3; coopmat f16; coopmat u8; coopmat i8; coopmat u32; f+f; f-f; f*f; f/f; f+=f; f-=f; f*=f; f/=f; f*2.0; 2.0*f; f*=2.0; f16+f16; f16-f16; f16*f16; f16/f16; f16+=f16; f16-=f16; f16*=f16; f16/=f16; f16*float16_t(2.0); float16_t(2.0)*f16; f16*=float16_t(2.0); u32+u32; u32-u32; u32*u32; u32/u32; u32+=u32; u32-=u32; u32*=u32; u32/=u32; u32*uint32_t(2); uint32_t(2)*u32; u32*=uint32_t(2); u8+u8; u8-u8; u8*u8; u8/u8; u8+=u8; u8-=u8; u8*=u8; u8/=u8; u8*uint8_t(2); uint8_t(2)*u8; u8*=uint8_t(2); i8+i8; i8-i8; i8*i8; i8/i8; i8+=i8; i8-=i8; i8*=i8; i8/=i8; i8*int8_t(2); int8_t(2)*i8; i8*=int8_t(2); -f; -f16; -i8; -u8; } glslang-16.0.0/Test/spv.coopmatKHR_arithmeticError.comp000066400000000000000000000026721506534232700231030ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; void main() { coopmat f; coopmat f2; coopmat f3; coopmat f16; coopmat u8; coopmat i8; coopmat i32; f+1.0; f-1.0; f/1.0; 1.0+f; 1.0-f; 1.0/f; f+=1.0; f-=1.0; f/=1.0; f+f16; f-f16; f*f16; f/f16; f+=f16; f-=f16; f*=f16; f/=f16; f+f2; f-f2; f*f2; f/f2; f+=f2; f-=f2; f*=f2; f/=f2; f+f3; f-f3; f*f3; f/f3; f+=f3; f-=f3; f*=f3; f/=f3; u8+i8; u8-i8; u8*i8; u8/i8; u8+=i8; u8-=i8; u8*=i8; u8/=i8; u8+uint8_t(1); u8-uint8_t(1); u8/uint8_t(1); u8+=uint8_t(1); u8-=uint8_t(1); u8/=uint8_t(1); i8+int8_t(1); i8-int8_t(1); i8/int8_t(1); i8+=int8_t(1); i8-=int8_t(1); i8/=int8_t(1); i32+1; i32-1; i32/1; i32+=1; i32-=1; i32/=1; } glslang-16.0.0/Test/spv.coopmatKHR_constructor.comp000066400000000000000000000063601506534232700223230ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; void main() { #define TESTCONST(T, BASE) \ coopmat(coopmat(BASE+1.0)); \ coopmat(coopmat(BASE+2.0)); \ coopmat(coopmat(BASE+3)); \ coopmat(coopmat(BASE+4)); \ coopmat(coopmat(BASE+5)); \ coopmat(coopmat(BASE+6)); \ coopmat(coopmat(BASE+7)); \ coopmat(coopmat(BASE+8)); TESTCONST(float, 0) TESTCONST(float16_t, 10) TESTCONST(uint32_t, 20) TESTCONST(uint16_t, 30) TESTCONST(uint8_t, 40) TESTCONST(int32_t, 50) TESTCONST(int16_t, 60) TESTCONST(int8_t, 70) #define TESTVAR(T, BASE) \ { coopmat v = coopmat(BASE+1.0); coopmat(v); } \ { coopmat v = coopmat(BASE+2.0); coopmat(v); } \ { coopmat v = coopmat(BASE+3); coopmat(v); } \ { coopmat v = coopmat(BASE+4); coopmat(v); } \ { coopmat v = coopmat(BASE+5); coopmat(v); } \ { coopmat v = coopmat(BASE+6); coopmat(v); } \ { coopmat v = coopmat(BASE+7); coopmat(v); } \ { coopmat v = coopmat(BASE+8); coopmat(v); } TESTVAR(float, 100) TESTVAR(float16_t, 110) TESTVAR(uint32_t, 120) TESTVAR(uint16_t, 130) TESTVAR(uint8_t, 140) TESTVAR(int32_t, 150) TESTVAR(int16_t, 160) TESTVAR(int8_t, 170) } glslang-16.0.0/Test/spv.coopmatKHR_constructorError.comp000066400000000000000000000014141506534232700233300ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; void main() { // Test each kind of shape mismatch coopmat(coopmat(0.0)); coopmat(coopmat(0.0)); coopmat(coopmat(0.0)); coopmat(coopmat(0.0)); } glslang-16.0.0/Test/spv.coopmat_Error.comp000066400000000000000000000041551506534232700204620ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; float<16> ftemplate16; fcoopmatNV fnoparams; fcoopmatNV<8, gl_ScopeSubgroup, 8, 8> fbadbits; fcoopmatNV<16, gl_ScopeSubgroup, 8> fbadnumparams; int X = 8; fcoopmatNV<16, gl_ScopeSubgroup, 8, X> fbadparam; layout(constant_id = 0) int Y = 1; shared fcoopmatNV<16, gl_ScopeSubgroup, 16, 16> sharedmat; layout(set = 0, binding = 0) buffer InvBlock { fcoopmatNV<16, gl_ScopeSubgroup, 16, 16> bufmat; } invblock; void main() { fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> f32_16_8; fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> f16_16_8; // invalid implicit conversions f32_16_8 = f16_16_8; f32_16_8 = f16_16_8 + f16_16_8; fcoopmatNV<16, gl_ScopeSubgroup, 8, 8> f16_8_8; // mismatching dimensions f16_16_8 = f16_8_8; fcoopmatNV<16, gl_ScopeSubgroup, 8, Y> f16_8_Y; fcoopmatNV<16, gl_ScopeSubgroup, 8, (Y+1)> f16_8_Y1; // mismatching dimensions with specialization constants f16_8_Y = f16_8_Y1; // wrong arguments for constructor f16_8_8 = fcoopmatNV<16, gl_ScopeSubgroup, 8, 8>(1, 1); // can't construct from a builtin type mat4 m4; fcoopmatNV<32, gl_ScopeSubgroup, 4, 4> f32_4_4 = fcoopmatNV<32, gl_ScopeSubgroup, 4, 4>(m4); // only support a single array subscript f16_16_8[0][0]; // don't support scalar component selection f16_16_8.x; f16_16_8 * f16_16_8; f16_16_8 + 1.0; f16_16_8 - 1.0; f16_16_8 / 1.0; f16_16_8 += 1.0; f16_16_8 -= 1.0; f16_16_8 /= 1.0; f16_16_8*2.0; 2.0*f16_16_8; f32_16_8*float16_t(2.0); float16_t(2.0)*f32_16_8; transpose(f16_8_8); //Buf[] argument needs be in Shared/StorageBuffer storage classes float16_t larr[16]; fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> lvar; coopMatLoadNV(lvar, larr, 1, 2, false); coopMatStoreNV(lvar, larr, 1, 2, false); } glslang-16.0.0/Test/spv.coopmat_armlayout.comp000066400000000000000000000116151506534232700214050ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; const int X = 8; layout(constant_id = 0) const int Y = 2; const int Z = X*Y; coopmat mC; coopmat mC2[3]; layout(constant_id = 1) const float F = 3.0; const coopmat mD = coopmat(0.0); const coopmat mD2 = coopmat(1); struct S { int a; int b; int c; }; const S s = S(12, 23, 34); layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { float y[1024*1024]; float x[]; } block; layout(set = 0, binding = 0) coherent buffer Block16 { float16_t y[1024*1024]; float16_t x[]; Block b; } block16; coopmat f16(coopmat m) { return -m; } coopmat f32(coopmat m) { return -m; } layout(constant_id = 2) const int SC = 1; coopmat scm[SC][SC]; // sized for coopmat shared uvec4 shmatrix[16*16*2/16]; void main() { coopmat1?8:4), gl_MatrixUseAccumulator> m = coopmat1?8:4), gl_MatrixUseAccumulator>(0.0); m = m + m; m = m - m; m = -m; m = 2.0*m; m = m*2.0; coopmat m2 = coopmat(m); float x = m[1]; m[0] = x; coopMatLoad(m, block.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatStore(m, block.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatLoad(m2, block16.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatStore(m2, block16.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatLoad(m, block16.b.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatStore(m, block16.b.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopmat A; coopmat B; coopmat C; coopmat D; D = coopMatMulAdd(A, B, C); int l = D.length(); coopmat E; coopmat F = coopmat(0.0); coopmat1?8:4), gl_MatrixUseAccumulator> a[5]; a[3][0] = 1.0; float md1 = mD[1]; md1 += (m += m)[1234]; mC2[1] = mC2[2]; coopMatLoad(m, block.y, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatStore(m, block.y, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatLoad(m2, block16.y, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatStore(m2, block16.y, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopmat p1; coopmat p2; p1 = f16(p1); p2 = f32(p2); p1 = coopmat(0.0); p2 = coopmat(0.0); p1 /= p1; p1 *= float16_t(2.0); p2 *= 4.0; coopmat ms; coopMatLoad(ms, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopMatStore(ms, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); coopmat ms8A; coopmat ms8B; coopmat ms8C; coopMatMulAdd(ms8A, ms8B, ms8C); coopMatMulAdd(ms8A, ms8B, ms8C, 0); coopMatMulAdd(ms8A, ms8B, ms8C, gl_MatrixOperandsSaturatingAccumulation); coopmat m16; coopMatStore(m16, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); } glslang-16.0.0/Test/spv.coopvec.comp000066400000000000000000000063161506534232700173060ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_vector : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_nonuniform_qualifier : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(set = 0, binding = 0) buffer MatrixBuf { float16_t matrixData[]; } matrixBuf; layout(set = 0, binding = 0) buffer MatrixBuf2 { int8_t matrixData[]; } matrixBuf2; layout(constant_id = 0) const int matrixLayout = gl_CooperativeVectorMatrixLayoutColumnMajorNV; void main() { coopvecNV v = coopvecNV(0.0); vec3 x = vec3(1.0), y = vec3(2.0); coopvecNV v2 = coopvecNV(x, y); const vec3 x2 = vec3(1.0), y2 = vec3(2.0); coopvecNV v3 = coopvecNV(x2, y2); vec3 x3 = vec3(4, 5, 6), y3 = vec3(7, 8, 9); coopvecNV v4 = coopvecNV(x3.zyx, y3.zzy); coopvecNV v5 = coopvecNV(v4); coopvecNV v6; v6 = v + v2; v6 = v - v2; v6 = v * v2; v6 = v / v2; v6 += v; v6 -= v; v6 *= v; v6 /= v; float f; v6 *= f; v6 *= 5.0; int len = v6.length(); v6[0] = f; v6[4] = 5.0; f += (v += v)[4]; v6 = v; coopvecNV v7; coopvecNV v8; coopVecMatMulNV(v8, v7, gl_ComponentTypeFloat16NV, matrixBuf.matrixData, 11, gl_ComponentTypeFloat16NV, 100, 20, gl_CooperativeVectorMatrixLayoutRowMajorNV, false, 300); coopvecNV v9; coopvecNV v10; uint32_t matrixOffset = 11; coopVecMatMulNV(v10, v9, gl_ComponentTypeSignedInt8NV, matrixBuf2.matrixData, matrixOffset, gl_ComponentTypeSignedInt8NV, 100, 20, gl_CooperativeVectorMatrixLayoutColumnMajorNV, true, 300); coopvecNV f162 = coopvecNV(v7.length()); float16_t f16; coopvecNV f161 = coopvecNV(f16); coopvecNV v11, v12, v13; v11 = max(v11, v12); v11 = min(v11, v12); v11 = step(v11, v12); v11 = clamp(v11, v12, v13); v11 = exp(v11); v11 = log(v11); v11 = tanh(v11); v11 = atan(v11); v11 = fma(v11, v12, v13); coopVecMatMulAddNV(v8, v7, gl_ComponentTypeFloat16NV, matrixBuf.matrixData, 11, gl_ComponentTypeFloat16NV, matrixBuf.matrixData, 50, gl_ComponentTypeFloat16NV, 100, 20, gl_CooperativeVectorMatrixLayoutRowMajorNV, false, 300); uint32_t biasOffset = 11; coopVecMatMulAddNV(v10, v9, gl_ComponentTypeSignedInt8NV, matrixBuf2.matrixData, matrixOffset, gl_ComponentTypeSignedInt8NV, matrixBuf2.matrixData, biasOffset, gl_ComponentTypeSignedInt8NV, 100, 20, gl_CooperativeVectorMatrixLayoutColumnMajorNV, true, 300); coopvecNV v14; coopVecMatMulNV(v10, v14, gl_ComponentTypeSignedInt8PackedNV, matrixBuf2.matrixData, matrixOffset, gl_ComponentTypeSignedInt8NV, 100, 20, matrixLayout, true, 300); f += (v += v)[len]; } coopvecNV foo(coopvecNV x) { return x; } coopvecNV foo(coopvecNV x) { return x; } glslang-16.0.0/Test/spv.coopvec2.comp000066400000000000000000000031251506534232700173630ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_vector : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_nonuniform_qualifier : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(constant_id = 0) const uint N = 3; void main() { float16_t f1 = float16_t(1.0); float16_t f2 = float16_t(2.0); float16_t f3 = float16_t(3.0); coopvecNV v = coopvecNV(1.0); coopvecNV v2 = coopvecNV(f2); coopvecNV v3 = coopvecNV(1.0, 2.0, 3.0); coopvecNV v4 = coopvecNV(f1, f2, f3); coopvecNV v5 = coopvecNV(1.0); coopvecNV v6 = coopvecNV(1.0, 2.0, 3.0); coopvecNV v7 = coopvecNV(1); v7 *= 2.0; coopvecNV v8 = coopvecNV(1); v8 *= 2; coopvecNV v9 = v8 * 2; coopvecNV v10 = 2 * v8; v8 = v8 & v9; v8 = v8 | v9; v8 = v8 ^ ~v9; v8 = v8 >> v9; v8 = v8 << v9; v8 &= v9; v8 |= v9; v8 ^= v9; v8 >>= v9; v8 <<= v9; v = coopvecNV(v); coopvecNV v11; coopvecNV(v11); coopvecNV v12; coopvecNV(v12); coopvecNV v13; coopvecNV(v13); } void foo(coopvecNV v) { } glslang-16.0.0/Test/spv.coopvecTraining.comp000066400000000000000000000021551506534232700207770ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_vector : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_nonuniform_qualifier : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(set = 0, binding = 0) buffer MatrixBuf { float16_t matrixData[]; } matrixBuf; layout(set = 0, binding = 0) buffer MatrixBuf2 { int8_t matrixData[]; } matrixBuf2; layout(constant_id = 0) const int matrixLayout = gl_CooperativeVectorMatrixLayoutInferencingOptimalNV; void main() { coopvecNV v0; coopvecNV v1; coopVecOuterProductAccumulateNV(v0, v1, matrixBuf.matrixData, 100, 128, matrixLayout, gl_ComponentTypeFloat16NV); coopVecOuterProductAccumulateNV(v0, v1, matrixBuf2.matrixData, 100, 128, gl_CooperativeVectorMatrixLayoutInferencingOptimalNV, gl_ComponentTypeFloat16NV); coopVecReduceSumAccumulateNV(v0, matrixBuf.matrixData, 100); coopVecReduceSumAccumulateNV(v0, matrixBuf2.matrixData, 100); } glslang-16.0.0/Test/spv.coopvecTraining_Error.comp000066400000000000000000000015451506534232700221520ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_vector : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(set = 0, binding = 0) buffer MatrixBuf { float16_t matrixData[]; } matrixBuf; void main() { coopvecNV v0; coopvecNV v1; vec4 v2; coopVecOuterProductAccumulateNV(v0, v1, matrixBuf.matrixData, 100, 128, gl_CooperativeVectorMatrixLayoutInferencingOptimalNV, gl_ComponentTypeFloat16NV); coopVecOuterProductAccumulateNV(v0, v2, matrixBuf.matrixData, 100, 128, gl_CooperativeVectorMatrixLayoutInferencingOptimalNV, gl_ComponentTypeFloat16NV); coopVecReduceSumAccumulateNV(v2, matrixBuf.matrixData, 100); } glslang-16.0.0/Test/spv.coopvec_Error.comp000066400000000000000000000017651506534232700204620ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_vector : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; coopvecNV foo(coopvecNV x) { return x; } coopvecNV foo2(coopvecNV x) { return -x; } layout(set = 0, binding = 0) buffer MatrixBuf { float16_t matrixData[]; } matrixBuf; void main() { uint M=1, K=1; bool transpose = false; int interp = gl_ComponentTypeFloat16NV; int matrixlayout = 0; coopvecNV v7; coopvecNV v8; coopVecMatMulNV(v8, v7, interp, matrixBuf.matrixData, 11, interp, M, K, matrixlayout, transpose, 300); coopvecNV v; v.x; v[5] = 0.0; coopvecNV v2; coopvecNV v3; coopvecNV v4; coopvecNV v5; } glslang-16.0.0/Test/spv.coopvecloadstore.comp000066400000000000000000000025471506534232700212250ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_vector : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_nonuniform_qualifier : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(set = 0, binding = 0) buffer MatrixBuf { u64vec3 matrixData[]; } matrixBuf; layout(set = 0, binding = 0) buffer MatrixBuf2 { coherent float16_t matrixData[]; } matrixBuf2; layout(set = 0, binding = 0) coherent buffer MatrixBuf3 { volatile float32_t matrixData[]; } matrixBuf3; layout(set = 0, binding = 0, buffer_reference) buffer MatrixBuf4 { coherent float16_t matrixData[]; }; shared uint32_t matrixShmem[100]; void main() { coopvecNV v; coopVecLoadNV(v, matrixBuf.matrixData, 128); coopVecStoreNV(v, matrixBuf.matrixData, 144); coopVecLoadNV(v, matrixBuf2.matrixData, 128); coopVecStoreNV(v, matrixBuf2.matrixData, 144); coopVecLoadNV(v, matrixBuf3.matrixData, 128); coopVecStoreNV(v, matrixBuf3.matrixData, 144); MatrixBuf4 matrixBuf4; coopVecLoadNV(v, matrixBuf4.matrixData, 128); coopVecStoreNV(v, matrixBuf4.matrixData, 144); coopVecLoadNV(v, matrixShmem, 128); coopVecStoreNV(v, matrixShmem, 144); } glslang-16.0.0/Test/spv.dataOut.frag000066400000000000000000000001231506534232700172200ustar00rootroot00000000000000#version 140 in vec4 Color; void main() { gl_FragData[1] = Color; } glslang-16.0.0/Test/spv.dataOutIndirect.frag000066400000000000000000000002121506534232700207010ustar00rootroot00000000000000#version 140 in vec4 Color; out vec4 fcolor[4]; uniform b { int i; } bName; void main() { fcolor[bName.i] = Color; } glslang-16.0.0/Test/spv.dataOutIndirect.vert000066400000000000000000000002641506534232700207510ustar00rootroot00000000000000#version 140 attribute vec4 color; out vec4 colorOut[6]; void main() { for (int i = 1; i < 5; ++i) colorOut[i] = color; gl_Position = colorOut[2]; } glslang-16.0.0/Test/spv.dead-after-continue.vert000066400000000000000000000002621506534232700215020ustar00rootroot00000000000000#version 450 layout(location =0 ) in int c; layout(location =0 ) out int o; void main() { int i; for (i=0; i < 5; i++) { o = 1; continue; o = 2; } o = 3; } glslang-16.0.0/Test/spv.dead-after-discard.frag000066400000000000000000000001751506534232700212310ustar00rootroot00000000000000#version 450 layout(location =0 ) in float c; layout(location =0 ) out int o; void main() { o = 1; discard; o = 3; } glslang-16.0.0/Test/spv.dead-after-loop-break.vert000066400000000000000000000003521506534232700217110ustar00rootroot00000000000000#version 450 layout(location =0 ) in int c; layout(location =0 ) out int o; void main() { int i; o = 1; for (i=0; i < 5; i++) { o = 2; if (i==c) { o = 3; break; o = 4; } o = 5; } o = 6; } glslang-16.0.0/Test/spv.dead-after-return.vert000066400000000000000000000001721506534232700211750ustar00rootroot00000000000000#version 450 layout(location =0 ) in int c; layout(location =0 ) out int o; void main() { o = 1; return; o = 3; } glslang-16.0.0/Test/spv.dead-after-switch-break.vert000066400000000000000000000002761506534232700222460ustar00rootroot00000000000000#version 450 layout(location =0 ) in int c; layout(location =0 ) out int o; void main() { int i; switch(c) { case 0: o=1; break; o=2; default: break; } o = 3; } glslang-16.0.0/Test/spv.dead-complex-continue-after-return.vert000066400000000000000000000006251506534232700244670ustar00rootroot00000000000000#version 450 layout(location =0 ) in int c; layout(location =0 ) out int o; void main() { int i = 0; o = 1; // This has non-trivial continue target. for (i=0; i < 5; ++i, o=99) { o = 2; return; o = 3; } // This is considered reachable since Glslang codegen will // create a conditional branch in the header, and one arm // of that branch reaches this merge block. o = 4; } glslang-16.0.0/Test/spv.dead-complex-merge-after-return.vert000066400000000000000000000004441506534232700237410ustar00rootroot00000000000000#version 450 layout(location =0 ) in int c; layout(location =0 ) out int o; void main() { int i = 0; o = 1; do { o = 2; return; o = 3; } while(i++ < 5); // All this is a dead merge block. o = 4; if (c==4) { o = 100; } else { o = 200; } o = 300; } glslang-16.0.0/Test/spv.debugInfo.frag000066400000000000000000000021661506534232700175320ustar00rootroot00000000000000#version 450 struct S { int a; }; uniform ubuf { S s; }; uniform sampler2D s2d; layout(location = 0) in vec4 inv; layout(location = 0) out vec4 outv; vec4 foo(S s) { vec4 r = s.a * inv; ++r; if (r.x > 3.0) --r; else r *= 2; return r; } float testBranch(float x, float y) { float result = 0; bool b = x > 0; // branch with load if (b) { result += 1; } else { result -= 1; } // branch with expression if (x > y) { result += x - y; } // selection with load result += b ? 1 : -1; // selection with expression result += x < y ? y : float(b); return result; } void main() { outv = foo(s); outv += testBranch(inv.x, inv.y); outv += texture(s2d, vec2(0.5)); switch (s.a) { case 10: ++outv; break; case 20: outv = 2 * outv; ++outv; break; default: --outv; break; } for (int i = 0; i < 10; ++i) outv *= 3.0; outv.x < 10.0 ? outv = sin(outv) : outv = cos(outv); }glslang-16.0.0/Test/spv.debugPrintf.frag000066400000000000000000000004301506534232700200710ustar00rootroot00000000000000#version 450 #extension GL_EXT_debug_printf : enable void main() { debugPrintfEXT("ASDF \\ \? \x5C %d %d %d", 1, 2, 3); // ABA{backspace}Z debugPrintfEXT("\x41\x000042\x41\x8Z"); // B#${bell, aka \a}B1Z debugPrintfEXT("\102\043\44\7\1021Z"); } glslang-16.0.0/Test/spv.debugPrintf_Error.frag000066400000000000000000000003001506534232700212360ustar00rootroot00000000000000#version 450 #extension GL_EXT_debug_printf : enable void main() { // invalid hex sequence debugPrintfEXT("\xZ"); // not an octal sequence debugPrintfEXT("\8"); } glslang-16.0.0/Test/spv.debuginfo.bufferref.glsl.frag000066400000000000000000000013061506534232700224720ustar00rootroot00000000000000#version 450 core #extension GL_EXT_buffer_reference : enable layout(buffer_reference, std430) buffer MeshVertexPositions { float data[]; }; struct Mesh { MeshVertexPositions positions; }; layout(set = 0, binding = 0) readonly buffer PerPass_meshes { Mesh data[]; } perPass_meshes; layout(location = 0) out vec4 out_fragColor; layout(location = 0) in flat uint tri_idx0; void main() { Mesh meshData = perPass_meshes.data[tri_idx0]; vec3 vertex_pos0 = vec3(meshData.positions.data[3 * tri_idx0], meshData.positions.data[3 * tri_idx0 + 1], meshData.positions.data[3 * tri_idx0 + 2]); out_fragColor = vec4(vertex_pos0, 1.0); } glslang-16.0.0/Test/spv.debuginfo.const_params.glsl.comp000066400000000000000000000002521506534232700232330ustar00rootroot00000000000000#version 450 void function( const float f, const vec2 f2, const vec3 f3, const vec4 f4) { } void main() { function(0, vec2(0), vec3(0), vec4(0)); } glslang-16.0.0/Test/spv.debuginfo.continued.glsl.vert000066400000000000000000017774721506534232700226060ustar00rootroot00000000000000#version 460 // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. // This is filler text to cause the source length to exceed the maximum length of DebugSource and require the use of DebugSourceContinued. void main() { gl_Position = vec4(1.0); } glslang-16.0.0/Test/spv.debuginfo.coopmatKHR.comp000066400000000000000000000066471506534232700216270ustar00rootroot00000000000000/* * Copyright (c) 2019-2024, NVIDIA CORPORATION. All rights reserved. * * 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 core #pragma use_vulkan_memory_model #extension GL_EXT_scalar_block_layout : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_control_flow_attributes : enable layout(constant_id = 0) const uint lM = 1; layout(constant_id = 1) const uint lN = 1; layout(constant_id = 2) const uint lK = 1; layout(constant_id = 3) const uint TILE_M = 1; layout(constant_id = 4) const uint TILE_N = 1; layout(constant_id = 5) const uint TILE_K = 1; layout(constant_id = 6) const uint K = 1; #define A_BITS 16 #define A_TYPE float16_t #define C_BITS 16 #define C_TYPE float16_t buffer Output { C_TYPE x[]; } outputO; shared uvec4 Ash[128]; shared uvec4 Bsh[128]; const uint C_ROWS = 2; const uint C_COLS = 2; coopmat result[C_ROWS][C_COLS]; void main() { [[unroll]] for (uint i = 0; i < C_ROWS; ++i) { [[unroll]] for (uint j = 0; j < C_COLS; ++j) { result[i][j] = coopmat(0.0); } } for (uint chunkK = 0; chunkK < K; chunkK += TILE_K) { [[unroll]] for (uint k = 0; k < TILE_K / lK; ++k) { coopmat matA[C_ROWS]; [[unroll]] for (uint i = 0; i < C_ROWS; ++i) { coopMatLoad(matA[i], Ash, 0, 0, gl_CooperativeMatrixLayoutRowMajor); } coopmat matB; [[unroll]] for (uint j = 0; j < C_COLS; ++j) { coopMatLoad(matB, Bsh, 0, 0, gl_CooperativeMatrixLayoutRowMajor); [[unroll]] for (uint i = 0; i < C_ROWS; ++i) { result[i][j] = coopMatMulAdd(matA[i], matB, result[i][j]); } } } } [[unroll]] for (uint i = 0; i < C_ROWS; ++i) { [[unroll]] for (uint j = 0; j < C_COLS; ++j) { coopMatStore(result[i][j], outputO.x, 0, 0, gl_CooperativeMatrixLayoutRowMajor); } } } glslang-16.0.0/Test/spv.debuginfo.glsl.comp000066400000000000000000000130001506534232700205360ustar00rootroot00000000000000/* 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); } } glslang-16.0.0/Test/spv.debuginfo.glsl.frag000066400000000000000000000115561506534232700205350ustar00rootroot00000000000000/* 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 int global_var = 0; 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); } glslang-16.0.0/Test/spv.debuginfo.glsl.geom000066400000000000000000000042531506534232700205410ustar00rootroot00000000000000/* 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(); } glslang-16.0.0/Test/spv.debuginfo.glsl.tesc000066400000000000000000000106051506534232700205460ustar00rootroot00000000000000/* 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]; } glslang-16.0.0/Test/spv.debuginfo.glsl.tese000066400000000000000000000052471506534232700205560ustar00rootroot00000000000000/* 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); } glslang-16.0.0/Test/spv.debuginfo.glsl.vert000066400000000000000000000061511506534232700205710ustar00rootroot00000000000000/* 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; } glslang-16.0.0/Test/spv.debuginfo.hlsl.comp000066400000000000000000000131641506534232700205520ustar00rootroot00000000000000/* 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 particleIn; [[vk::binding(1)]] RWStructuredBuffer 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); } } glslang-16.0.0/Test/spv.debuginfo.hlsl.frag000066400000000000000000000123541506534232700205330ustar00rootroot00000000000000/* 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); } glslang-16.0.0/Test/spv.debuginfo.hlsl.geom000066400000000000000000000047761506534232700205540ustar00rootroot00000000000000/* 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 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(); } glslang-16.0.0/Test/spv.debuginfo.hlsl.tesc000066400000000000000000000120571506534232700205520ustar00rootroot00000000000000/* 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 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 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; } glslang-16.0.0/Test/spv.debuginfo.hlsl.tese000066400000000000000000000063131506534232700205520ustar00rootroot00000000000000/* 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 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; } glslang-16.0.0/Test/spv.debuginfo.hlsl.vert000066400000000000000000000067021506534232700205740ustar00rootroot00000000000000/* 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; } glslang-16.0.0/Test/spv.debuginfo.implicit_br.glsl.frag000066400000000000000000000014641506534232700230260ustar00rootroot00000000000000#version 460 out int outx; int counter = 0; void test_if() { if (false) { counter += 1; } } void test_ifelse() { if (false) { counter += 1; } else { counter += 2; } } void test_if_compound() { if (false) { if (false) { counter += 1; } } } void test_if_compound2() { if (false) { if (false) { counter += 1; } counter += 2; } } void test_switch() { switch (0) { case 0: counter += 1; // implict fallthrough case 1: counter += 2; break; default: counter += 3; // implicit break } } void main() { test_if(); test_ifelse(); test_if_compound(); test_if_compound2(); test_switch(); outx = counter; }glslang-16.0.0/Test/spv.debuginfo.include.glsl.frag000066400000000000000000000003441506534232700221500ustar00rootroot00000000000000#version 450 #extension GL_GOOGLE_include_directive : require #include "spv.debuginfo.include.glsl.h" vec4 mainFileFunction(vec4 v) { return -v; } void main() { headerOut = headerFunction(mainFileFunction(headerUboItem)); }glslang-16.0.0/Test/spv.debuginfo.include.glsl.h000066400000000000000000000001501506534232700214530ustar00rootroot00000000000000 out vec4 headerOut; uniform UBO { vec4 headerUboItem; }; vec4 headerFunction(vec4 a) { return -a; }glslang-16.0.0/Test/spv.debuginfo.multiline.glsl.frag000066400000000000000000000004221506534232700225240ustar00rootroot00000000000000#version 460 in float inx; out float outx; float add(float x, float y, float z) { return x + y + z ; } void main() { outx = add( inx+1, inx+2, inx+3 ) ; }glslang-16.0.0/Test/spv.debuginfo.non_ascii.glsl.frag000066400000000000000000000002621506534232700224660ustar00rootroot00000000000000#version 460 layout(location = 0) out vec4 o; void main() { // éž ASCII 文字をテストã™ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆ (a comment to test non-ASCII characters) o = vec4(1.0); } glslang-16.0.0/Test/spv.debuginfo.rt_types.glsl.rgen000066400000000000000000000011141506534232700224060ustar00rootroot00000000000000#version 460 #extension GL_NV_ray_tracing : enable #extension GL_EXT_ray_query : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT acc0; layout(shaderRecordNV) buffer block { vec3 dir; vec3 origin; }; void main() { rayQueryEXT localRayQuery; uint rayFlags = gl_RayFlagsOpaqueEXT | gl_RayFlagsSkipClosestHitShaderEXT; float tMin = 0.f; float tMax = 1000.f; rayQueryInitializeEXT(localRayQuery, acc0, rayFlags, 0xFF , origin, tMin, dir, tMax); if (!rayQueryProceedEXT(localRayQuery)) { rayQueryTerminateEXT(localRayQuery); } } glslang-16.0.0/Test/spv.debuginfo.scalar_types.glsl.frag000066400000000000000000000033351506534232700232210ustar00rootroot00000000000000/* The MIT License (MIT) Copyright (c) 2023 NVIDIA CORPORATION. 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 460 #extension GL_EXT_shader_explicit_arithmetic_types : require bool VAR_bool; int VAR_int; uint VAR_uint; float VAR_float; double VAR_double; int8_t VAR_int8_t; uint8_t VAR_uint8_t; int16_t VAR_int16_t; uint16_t VAR_uint16_t; int64_t VAR_int64_t; uint64_t VAR_uint64_t; float16_t VAR_float16_t; void main() { VAR_bool = bool(0); VAR_int = int(0); VAR_uint = uint(0); VAR_float = float(0); VAR_double = double(0); VAR_int8_t = int8_t(0); VAR_uint8_t = uint8_t(0); VAR_int16_t = int16_t(0); VAR_uint16_t = uint16_t(0); VAR_int64_t = int64_t(0); VAR_uint64_t = uint64_t(0); VAR_float16_t = float16_t(0); }glslang-16.0.0/Test/spv.deepRvalue.frag000066400000000000000000000016071506534232700177230ustar00rootroot00000000000000#version 330 uniform sampler2D samp2D; vec4 v1 = vec4(2.0, 3.0, 5.0, 7.0); vec4 v2 = vec4(11.0, 13.0, 17.0, 19.0); vec4 v3 = vec4(23.0, 29.0, 31.0, 37.0); vec4 v4 = vec4(41.0, 43.0, 47.0, 53.0); struct str { int a; vec2 b[3]; bool c; }; void main() { mat4 m = mat4(v1, v2, v3, v4); mat4 mm = matrixCompMult(m, m); float f = mm[1].w; // should be 19 * 19 = 361 // do a deep access to a spontaneous r-value float g = matrixCompMult(m, m)[2].y; // should be 29 * 29 = 841 float h = str(1, vec2[3](vec2(2.0, 3.0), vec2(4.0, 5.0), vec2(6.0, 7.0)), true).b[1][1]; // should be 5.0 float i = texture(samp2D, vec2(0.5,0.5)).y; i += (i > 0.1 ? v1 : v2)[3]; str t; i += (t = str(1, vec2[3](vec2(2.0, 3.0), vec2(4.0, 5.0), vec2(6.0, 7.0)), true)).b[2].y; // should be 7.0 gl_FragColor = vec4(f, g, h, i); } glslang-16.0.0/Test/spv.demoteDisabled.frag000066400000000000000000000001621506534232700205270ustar00rootroot00000000000000#version 460 core void main (void) { { int demote = 0; demote; } demote; } glslang-16.0.0/Test/spv.depthOut.frag000066400000000000000000000002221506534232700174130ustar00rootroot00000000000000#version 450 in vec4 Color; in float Depth; layout(depth_greater) out float gl_FragDepth; void main() { gl_FragDepth = Depth; } glslang-16.0.0/Test/spv.depthUnchanged.frag000066400000000000000000000002761506534232700205510ustar00rootroot00000000000000#version 430 layout(location = 0) out vec4 outColor; layout(depth_unchanged) out float gl_FragDepth; void main() { outColor = vec4(1.0, 0.0, 0.0, 1.0); gl_FragDepth = gl_FragCoord.y; } glslang-16.0.0/Test/spv.deviceGroup.frag000066400000000000000000000002031506534232700200720ustar00rootroot00000000000000#version 450 #extension GL_EXT_device_group : enable out vec4 color; void main() { color = vec4(gl_DeviceIndex, 0, 0, 0); } glslang-16.0.0/Test/spv.discard-dce.frag000066400000000000000000000012251506534232700177650ustar00rootroot00000000000000#version 140 in vec2 tex_coord; void main (void) { vec4 white = vec4(1.0); vec4 black = vec4(0.2); vec4 color = white; // First, cut out our circle float x = tex_coord.x*2.0 - 1.0; float y = tex_coord.y*2.0 - 1.0; float radius = sqrt(x*x + y*y); if (radius > 1.0) { if (radius > 1.1) { ++color; } gl_FragColor = color; if (radius > 1.2) { ++color; } discard; } // If we're near an edge, darken us a tiny bit if (radius >= 0.75) color -= abs(pow(radius, 16.0)/2.0); gl_FragColor = color; } glslang-16.0.0/Test/spv.do-simple.vert000066400000000000000000000001161506534232700175530ustar00rootroot00000000000000#version 310 es void main() { int i = 0; do { i++; } while(i<10); } glslang-16.0.0/Test/spv.do-while-continue-break.vert000066400000000000000000000004111506534232700222740ustar00rootroot00000000000000#version 310 es void main() { int i = 0; int A, B, C, D, E, F, G; do { A = 0; if (i == 2) { B = 1; continue; C = 2; } if (i == 5) { D = 3; break; E = 42; } F = 99; } while (++i < 19); G = 12; } glslang-16.0.0/Test/spv.doWhileLoop.frag000066400000000000000000000003271506534232700200520ustar00rootroot00000000000000#version 140 in vec4 bigColor; in vec4 BaseColor; in float d; void main() { vec4 color = BaseColor; do { color += bigColor; } while (color.x < d); gl_FragColor = color; } glslang-16.0.0/Test/spv.double.comp000066400000000000000000000011401506534232700171100ustar00rootroot00000000000000#version 430 const double d1 = 3.1415926535897932384626433832795LF; const double d2 = 3.1415; const double d3 = 3.1415926535897932384626433832795LF; const double d4 = 3.1415926535897932384626433832795; buffer bufName { float f; double d; } bufInst; uniform writeonly image2D destTex; void main() { bufInst.d = float(d1); bufInst.f = float(d1 + d2 + d3 + d4); ivec2 storePos = ivec2(gl_GlobalInvocationID.xy); double localCoef = length(vec2(ivec2(gl_LocalInvocationID.xy)-8)/8.0); dvec4 aa = dvec4(0.4, 0.2, 0.3, 0.4); double globalCoef = 1.0; } glslang-16.0.0/Test/spv.drawParams.vert000066400000000000000000000003211506534232700177610ustar00rootroot00000000000000#version 450 #extension GL_ARB_shader_draw_parameters : enable out vec3 pos; void main() { int a = gl_BaseVertexARB; int b = gl_BaseInstanceARB; int c = gl_DrawIDARB; pos = vec3(a, b, c); } glslang-16.0.0/Test/spv.earlyAndlateFragmentTests.frag000066400000000000000000000007011506534232700227350ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/spv.earlyReturnDiscard.frag000066400000000000000000000035231506534232700214340ustar00rootroot00000000000000#version 140 in float d; in vec4 bigColor, smallColor; in vec4 otherColor; in float c; in float threshhold; in float threshhold2; in float threshhold3; in float minimum; in vec4 BaseColor; bool b; void main() { vec4 color = BaseColor; vec4 color2; color2 = otherColor; if (c > d) color += bigColor; else color += smallColor; if (color.z < minimum) return; color.z++; if (color.z > threshhold) discard; color++; // Two path, different rest if (color.w > threshhold2) { if (color.z > threshhold2) return; else if (b) color.z++; else { if (color.x < minimum) { discard; } else { color++; } } } else { if (b) discard; else return; } // // Two path, shared rest // if (color.w > threshhold2) { // if (color.z > threshhold2) // return; // else if (b) // color++; // else { // if (color.x < minimum) { // discard; // } else { // color++; // } // } // } else { // if (b) // discard; // else // return; // } // // One path // if (color.w > threshhold2) { // if (color.z > threshhold2) // return; // else { // if (color.x < minimum) { // discard; // } else { // color++; // } // } // } else { // if (b) // discard; // else // return; // } gl_FragColor = color * color2; } glslang-16.0.0/Test/spv.expect_assume.assumeEXT.comp000066400000000000000000000002501506534232700223610ustar00rootroot00000000000000#version 450 #extension GL_EXT_expect_assume: enable layout (local_size_x = 8) in; readonly buffer roblock { int i; } ro; void main() { assumeEXT(ro.i > 42); } glslang-16.0.0/Test/spv.expect_assume.expectEXT.comp000066400000000000000000000021121506534232700223530ustar00rootroot00000000000000#version 450 #extension GL_EXT_expect_assume: enable layout (local_size_x = 8) in; readonly buffer roblock { bool b; bvec2 bv2; bvec3 bv3; bvec4 bv4; int i; ivec2 iv2; ivec3 iv3; ivec4 iv4; uint ui; uvec2 uv2; uvec3 uv3; uvec4 uv4; } ro; void main() { int x = 0; if (expectEXT(ro.b, true) == true || expectEXT(ro.bv2, bvec2(true, false)) == bvec2(true, false) || expectEXT(ro.bv3, bvec3(true, false, true)) == bvec3(true, false, true) || expectEXT(ro.bv4, bvec4(false, true, false, true)) == bvec4(false, true, false, true)) { x++; } if (expectEXT(ro.i, 10) == 10 || expectEXT(ro.iv2, ivec2(11, -22)) == ivec2(11, -22) || expectEXT(ro.iv3, ivec3(11, -22, 33)) == ivec3(11, -22, 33) || expectEXT(ro.iv4, ivec4(11, -22, 33, 44)) == ivec4(11, -22, 33, 44)) { x++; } if (expectEXT(ro.ui, 10) == 10 || expectEXT(ro.uv2, uvec2(11, 22)) == uvec2(11, 22) || expectEXT(ro.uv3, uvec3(11, 22, 33)) == uvec3(11, 22, 33) || expectEXT(ro.uv4, uvec4(11, 22, 33, 44)) == uvec4(11, 22, 33, 44)) { x++; } } glslang-16.0.0/Test/spv.expect_assume.expectEXT.exttypes.comp000066400000000000000000000055621506534232700242530ustar00rootroot00000000000000#version 450 #extension GL_EXT_expect_assume: enable #extension GL_EXT_shader_explicit_arithmetic_types: enable layout (local_size_x = 8) in; readonly buffer roblock { int8_t i8; i8vec2 i8v2; i8vec3 i8v3; i8vec4 i8v4; uint8_t u8; u8vec2 u8v2; u8vec3 u8v3; u8vec4 u8v4; int16_t i16; i16vec2 i16v2; i16vec3 i16v3; i16vec4 i16v4; uint16_t u16; u16vec2 u16v2; u16vec3 u16v3; u16vec4 u16v4; int32_t i32; i32vec2 i32v2; i32vec3 i32v3; i32vec4 i32v4; uint32_t u32; u32vec2 u32v2; u32vec3 u32v3; u32vec4 u32v4; int64_t i64; i64vec2 i64v2; i64vec3 i64v3; i64vec4 i64v4; uint64_t u64; u64vec2 u64v2; u64vec3 u64v3; u64vec4 u64v4; } ro; void main() { int x = 0; // 8-bit if (expectEXT(ro.i8, 10) == 10 || expectEXT(ro.i8v2, i8vec2(11, -22)) == i8vec2(11, -22) || expectEXT(ro.i8v3, i8vec3(11, -22, 33)) == i8vec3(11, -22, 33) || expectEXT(ro.i8v4, i8vec4(11, -22, 33, 44)) == i8vec4(11, -22, 33, 44)) { x++; } if (expectEXT(ro.u8, 10) == 10 || expectEXT(ro.u8v2, u8vec2(11, 22)) == u8vec2(11, 22) || expectEXT(ro.u8v3, u8vec3(11, 22, 33)) == u8vec3(11, 22, 33) || expectEXT(ro.u8v4, u8vec4(11, 22, 33, 44)) == u8vec4(11, 22, 33, 44)) { x++; } // 16-bit if (expectEXT(ro.i16, 10) == 10 || expectEXT(ro.i16v2, i16vec2(11, -22)) == i16vec2(11, -22) || expectEXT(ro.i16v3, i16vec3(11, -22, 33)) == i16vec3(11, -22, 33) || expectEXT(ro.i16v4, i16vec4(11, -22, 33, 44)) == i16vec4(11, -22, 33, 44)) { x++; } if (expectEXT(ro.u16, 10) == 10 || expectEXT(ro.u16v2, u16vec2(11, 22)) == u16vec2(11, 22) || expectEXT(ro.u16v3, u16vec3(11, 22, 33)) == u16vec3(11, 22, 33) || expectEXT(ro.u16v4, u16vec4(11, 22, 33, 44)) == u16vec4(11, 22, 33, 44)) { x++; } // 32-bit if (expectEXT(ro.i32, 10) == 10 || expectEXT(ro.i32v2, i32vec2(11, -22)) == i32vec2(11, -22) || expectEXT(ro.i32v3, i32vec3(11, -22, 33)) == i32vec3(11, -22, 33) || expectEXT(ro.i32v4, i32vec4(11, -22, 33, 44)) == i32vec4(11, -22, 33, 44)) { x++; } if (expectEXT(ro.u32, 10) == 10 || expectEXT(ro.u32v2, u32vec2(11, 22)) == u32vec2(11, 22) || expectEXT(ro.u32v3, u32vec3(11, 22, 33)) == u32vec3(11, 22, 33) || expectEXT(ro.u32v4, u32vec4(11, 22, 33, 44)) == u32vec4(11, 22, 33, 44)) { x++; } // 64-bit if (expectEXT(ro.i64, 10) == 10 || expectEXT(ro.i64v2, i64vec2(11, -22)) == i64vec2(11, -22) || expectEXT(ro.i64v3, i64vec3(11, -22, 33)) == i64vec3(11, -22, 33) || expectEXT(ro.i64v4, i64vec4(11, -22, 33, 44)) == i64vec4(11, -22, 33, 44)) { x++; } if (expectEXT(ro.u64, 10) == 10 || expectEXT(ro.u64v2, u64vec2(11, 22)) == u64vec2(11, 22) || expectEXT(ro.u64v3, u64vec3(11, 22, 33)) == u64vec3(11, 22, 33) || expectEXT(ro.u64v4, u64vec4(11, 22, 33, 44)) == u64vec4(11, 22, 33, 44)) { x++; } } glslang-16.0.0/Test/spv.explicittypes.frag000066400000000000000000000253471506534232700205440ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: require #extension GL_EXT_shader_explicit_arithmetic_types_int16: require #extension GL_EXT_shader_explicit_arithmetic_types_int32: require #extension GL_EXT_shader_explicit_arithmetic_types_int64: require #extension GL_EXT_shader_explicit_arithmetic_types_float16: require #extension GL_EXT_shader_explicit_arithmetic_types_float32: require #extension GL_EXT_shader_explicit_arithmetic_types_float64: require layout(binding = 0) uniform Uniforms { uint index; }; layout(std140, binding = 1) uniform Block { int16_t i16; i16vec2 i16v2; i16vec3 i16v3; i16vec4 i16v4; uint16_t u16; u16vec2 u16v2; u16vec3 u16v3; u16vec4 u16v4; int32_t i32; i32vec2 i32v2; i32vec3 i32v3; i32vec4 i32v4; uint32_t u32; u32vec2 u32v2; u32vec3 u32v3; u32vec4 u32v4; } block; void main() { } void literal() { const int64_t i64Const[3] = { -0x1111111111111111l, // Hex -1l, // Dec 040000000000l, // Oct }; int64_t i64 = i64Const[index]; const uint64_t u64Const[] = { 0xFFFFFFFFFFFFFFFFul, // Hex 4294967296UL, // Dec 077777777777ul, // Oct }; uint64_t u64 = u64Const[index]; const int32_t i32Const[3] = { -0x11111111, // Hex -1, // Dec 04000000000, // Oct }; int32_t i32 = i32Const[index]; const uint32_t u32Const[] = { 0xFFFFFFFF, // Hex 4294967295, // Dec 017777777777, // Oct }; uint32_t u32 = u32Const[index]; const int16_t i16Const[3] = { int16_t(-0x1111), // Hex int16_t(-1), // Dec int16_t(040000), // Oct }; int16_t i16 = i16Const[index]; const uint16_t u16Const[] = { uint16_t(0xFFFF), // Hex uint16_t(65535), // Dec uint16_t(077777), // Oct }; uint16_t u16 = u16Const[index]; const int8_t i8Const[3] = { int8_t(-0x11), // Hex int8_t(-1), // Dec int8_t(0400), // Oct }; int8_t i8 = i8Const[index]; const uint8_t u8Const[] = { uint8_t(0xFF), // Hex uint8_t(255), // Dec uint8_t(0177), // Oct }; uint8_t u8 = u8Const[index]; } void typeCast8() { i8vec2 i8v; u8vec2 u8v; i16vec2 i16v; u16vec2 u16v; i32vec2 i32v; u32vec2 u32v; i64vec2 i64v; u64vec2 u64v; f16vec2 f16v; f32vec2 f32v; f64vec2 f64v; bvec2 bv; u8v = i8v; // int8_t -> uint8_t i16v = i8v; // int8_t -> int16_t i16v = u8v; // uint8_t -> int16_t i32v = i8v; // int8_t -> int32_t i32v = u8v; // uint8_t -> int32_t u32v = i8v; // int8_t -> uint32_t i64v = i8v; // int8_t -> int64_t u64v = i8v; // int8_t -> uint64_t u32v = u8v; // uint8_t -> uint32_t i64v = u8v; // uint8_t -> int64_t u64v = u8v; // uint8_t -> uint64_t f16v = i8v; // int8_t -> float16_t f32v = i8v; // int8_t -> float32_t f64v = i8v; // int8_t -> float64_t f16v = u8v; // uint8_t -> float16_t f32v = u8v; // uint8_t -> float32_t f64v = u8v; // uint8_t -> float64_t i8v = i8vec2(u8v); // uint8_t -> int8_t i16v = i16vec2(i8v); // int8_t -> int16_t i16v = i16vec2(u8v); // uint8_t -> int16_t i32v = i32vec2(i8v); // int8_t -> int32_t i32v = i32vec2(u8v); // uint8_t -> int32_t i64v = i64vec2(i8v); // int8_t -> int64_t u64v = i64vec2(i8v); // int8_t -> uint64_t u16v = u16vec2(i8v); // int8_t -> uint16_t u16v = u16vec2(u8v); // uint8_t -> uint16_t u32v = u32vec2(u8v); // uint8_t -> uint32_t i64v = i64vec2(u8v); // uint8_t -> int64_t u64v = i64vec2(u8v); // uint8_t -> uint64_t f16v = f16vec2(i8v); // int8_t -> float16_t f32v = f32vec2(i8v); // int8_t -> float32_t f64v = f64vec2(i8v); // int8_t -> float64_t f16v = f16vec2(u8v); // uint8_t -> float16_t f32v = f32vec2(u8v); // uint8_t -> float32_t f64v = f64vec2(u8v); // uint8_t -> float64_t i8v = i8vec2(bv); // bool -> int8 u8v = u8vec2(bv); // bool -> uint8 bv = bvec2(i8v); // int8 -> bool bv = bvec2(u8v); // uint8 -> bool } void typeCast16() { i8vec2 i8v; u8vec2 u8v; i16vec2 i16v; u16vec2 u16v; i32vec2 i32v; u32vec2 u32v; i64vec2 i64v; u64vec2 u64v; f16vec2 f16v; f32vec2 f32v; f64vec2 f64v; bvec2 bv; i32v = i16v; // int16_t -> int32_t i32v = u16v; // uint16_t -> int32_t u16v = i16v; // int16_t -> uint16_t u32v = i16v; // int16_t -> uint32_t i64v = i16v; // int16_t -> int64_t u64v = i16v; // int16_t -> uint64_t u32v = u16v; // uint16_t -> uint32_t i64v = u16v; // uint16_t -> int64_t u64v = u16v; // uint16_t -> uint64_t f16v = i16v; // int16_t -> float16_t f32v = i16v; // int16_t -> float32_t f64v = i16v; // int16_t -> float64_t f16v = u16v; // uint16_t -> float16_t f32v = u16v; // uint16_t -> float32_t f64v = u16v; // uint16_t -> float64_t i32v = i32vec2(i16v); // int16_t -> int32_t i32v = i32vec2(u16v); // uint16_t -> int32_t u16v = u16vec2(i16v); // int16_t -> uint16_t u32v = u32vec2(i16v); // int16_t -> uint32_t i64v = i64vec2(i16v); // int16_t -> int64_t u64v = i64vec2(i16v); // int16_t -> uint64_t u32v = u32vec2(u16v); // uint16_t -> uint32_t i64v = i64vec2(u16v); // uint16_t -> int64_t u64v = i64vec2(u16v); // uint16_t -> uint64_t f16v = f16vec2(i16v); // int16_t -> float16_t f32v = f32vec2(i16v); // int16_t -> float32_t f64v = f64vec2(i16v); // int16_t -> float64_t f16v = f16vec2(u16v); // uint16_t -> float16_t f32v = f32vec2(u16v); // uint16_t -> float32_t f64v = f64vec2(u16v); // uint16_t -> float64_t i8v = i8vec2(i16v); // int16_t -> int8_t i8v = i8vec2(u16v); // uint16_t -> int8_t u8v = u8vec2(i16v); // int16_t -> uint8_t u8v = u8vec2(u16v); // uint16_t -> uint8_t i16v = u8vec2(u16v); // uint16_t -> int16_t i16v = i16vec2(bv); // bool -> int16 u16v = u16vec2(bv); // bool -> uint16 bv = bvec2(i16v); // int16 -> bool bv = bvec2(u16v); // uint16 -> bool } void typeCast32() { i8vec2 i8v; u8vec2 u8v; i16vec2 i16v; u16vec2 u16v; i32vec2 i32v; u32vec2 u32v; i64vec2 i64v; u64vec2 u64v; f16vec2 f16v; f32vec2 f32v; f64vec2 f64v; bvec2 bv; u32v = i32v; // int32_t -> uint32_t i64v = i32v; // int32_t -> int64_t u64v = i32v; // int32_t -> uint64_t i64v = u32v; // uint32_t -> int64_t u64v = u32v; // uint32_t -> uint64_t f32v = i32v; // int32_t -> float32_t f64v = i32v; // int32_t -> float64_t f32v = u32v; // uint32_t -> float32_t f64v = u32v; // uint32_t -> float64_t i8v = i8vec2(i32v); // int32_t -> int8_t i8v = i8vec2(u32v); // uint32_t -> int8_t i16v = i16vec2(i32v); // int32_t -> int16_t i16v = i16vec2(u32v); // uint32_t -> int16_t i32v = i32vec2(i32v); // int32_t -> int32_t i32v = i32vec2(u32v); // uint32_t -> int32_t i64v = i64vec2(i32v); // int32_t -> int64_t i64v = i64vec2(u32v); // uint32_t -> int64_t u8v = u8vec2(i32v); // int32_t -> uint8_t u8v = u8vec2(u32v); // uint32_t -> uint8_t u16v = u16vec2(i32v); // int32_t -> uint16_t u16v = u16vec2(u32v); // uint32_t -> uint16_t u32v = u32vec2(i32v); // int32_t -> uint32_t u32v = u32vec2(u32v); // uint32_t -> uint32_t u64v = u64vec2(i32v); // int32_t -> uint64_t u64v = u64vec2(u32v); // uint32_t -> uint64_t f16v = f16vec2(i32v); // int32_t -> float16_t f32v = f32vec2(i32v); // int32_t -> float32_t f64v = f64vec2(i32v); // int32_t -> float64_t f16v = f16vec2(u32v); // uint32_t -> float16_t f32v = f32vec2(u32v); // uint32_t -> float32_t f64v = f64vec2(u32v); // uint32_t -> float64_t i32v = i32vec2(bv); // bool -> int32 u32v = u32vec2(bv); // bool -> uint32 bv = bvec2(i32v); // int32 -> bool bv = bvec2(u32v); // uint32 -> bool } void typeCast64() { i8vec2 i8v; u8vec2 u8v; i16vec2 i16v; u16vec2 u16v; i32vec2 i32v; u32vec2 u32v; i64vec2 i64v; u64vec2 u64v; f16vec2 f16v; f32vec2 f32v; f64vec2 f64v; bvec2 bv; u64v = i64v; // int64_t -> uint64_t f64v = i64v; // int64_t -> float64_t f64v = u64v; // uint64_t -> float64_t i8v = i8vec2(i64v); // int64_t -> int8_t i8v = i8vec2(u64v); // uint64_t -> int8_t i16v = i16vec2(i64v); // int64_t -> int16_t i16v = i16vec2(u64v); // uint64_t -> int16_t i32v = i32vec2(i64v); // int64_t -> int32_t i32v = i32vec2(u64v); // uint64_t -> int32_t i64v = i64vec2(u64v); // uint64_t -> int64_t u8v = u8vec2(i64v); // int64_t -> uint8_t u8v = u8vec2(u64v); // uint64_t -> uint8_t u16v = u16vec2(i64v); // int64_t -> uint16_t u16v = u16vec2(u64v); // uint64_t -> uint16_t u32v = u32vec2(i64v); // int64_t -> uint32_t u32v = u32vec2(u64v); // uint64_t -> uint32_t u64v = u64vec2(i64v); // int64_t -> uint64_t u64v = u64vec2(u64v); // uint64_t -> uint64_t f16v = f16vec2(i64v); // int64_t -> float16_t f32v = f32vec2(i64v); // int64_t -> float32_t f64v = f64vec2(i64v); // int64_t -> float64_t f16v = f16vec2(u64v); // uint64_t -> float16_t f32v = f32vec2(u64v); // uint64_t -> float32_t f64v = f64vec2(u64v); // uint64_t -> float64_t i64v = i64vec2(bv); // bool -> int64 u64v = u64vec2(bv); // bool -> uint64 bv = bvec2(i64v); // int64 -> bool bv = bvec2(u64v); // uint64 -> bool } glslang-16.0.0/Test/spv.exportFunctions.comp000066400000000000000000000001351506534232700210530ustar00rootroot00000000000000#version 450 float add(float a, float b) { return a + b; } int foo() { return 0; } glslang-16.0.0/Test/spv.ext.AccelDecl.frag000066400000000000000000000006211506534232700202200ustar00rootroot00000000000000#version 460 #extension GL_ARB_separate_shader_objects : enable #extension GL_EXT_nonuniform_qualifier : enable #extension GL_GOOGLE_include_directive : enable #extension GL_EXT_scalar_block_layout : enable #extension GL_EXT_ray_query : enable layout(location = 0) out vec4 outColor; layout(binding = 1, set = 0) uniform accelerationStructureEXT topLevelAS; void main() { outColor = vec4(0.0); } glslang-16.0.0/Test/spv.ext.AnyHitShader.rahit000066400000000000000000000020741506534232700211400ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_KHR_shader_subgroup_basic : enable #extension GL_EXT_ray_cull_mask : enable #extension GL_EXT_ray_tracing_position_fetch : enable layout(location = 1) rayPayloadInEXT vec4 incomingPayload; void main() { uvec3 v0 = gl_LaunchIDEXT; uvec3 v1 = gl_LaunchSizeEXT; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexEXT; vec3 v5 = gl_WorldRayOriginEXT; vec3 v6 = gl_WorldRayDirectionEXT; vec3 v7 = gl_ObjectRayOriginEXT; vec3 v8 = gl_ObjectRayDirectionEXT; float v9 = gl_RayTminEXT; float v10 = gl_RayTmaxEXT; float v11 = gl_HitTEXT; uint v12 = gl_HitKindEXT; mat4x3 v13 = gl_ObjectToWorldEXT; mat4x3 v14 = gl_WorldToObjectEXT; int v15 = gl_GeometryIndexEXT; mat3x4 v16 = gl_ObjectToWorld3x4EXT; mat3x4 v17 = gl_WorldToObject3x4EXT; uint v18 = gl_CullMaskEXT; vec3 v19 = gl_HitTriangleVertexPositionsEXT[0]; incomingPayload = vec4(0.5f); if (v2 == 1) { ignoreIntersectionEXT; v0.x++; } incomingPayload.x += float(gl_SubgroupSize); terminateRayEXT; } glslang-16.0.0/Test/spv.ext.AnyHitShader_Errors.rahit000066400000000000000000000010221506534232700224640ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable hitAttributeEXT vec4 payload; layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; void main() { payload.x = 1.0f; // ERROR, cannot write to hitattributeEXT in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage traceRayEXT(accEXT, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported builtin in stage } glslang-16.0.0/Test/spv.ext.ClosestHitShader.rchit000066400000000000000000000020761506534232700220310ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_cull_mask : enable #extension GL_EXT_ray_tracing_position_fetch : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 0) rayPayloadEXT vec4 localPayload; layout(location = 1) rayPayloadInEXT vec4 incomingPayload; void main() { uvec3 v0 = gl_LaunchIDEXT; uvec3 v1 = gl_LaunchSizeEXT; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexEXT; vec3 v5 = gl_WorldRayOriginEXT; vec3 v6 = gl_WorldRayDirectionEXT; vec3 v7 = gl_ObjectRayOriginEXT; vec3 v8 = gl_ObjectRayDirectionEXT; float v9 = gl_RayTminEXT; float v10 = gl_RayTmaxEXT; float v11 = gl_HitTEXT; uint v12 = gl_HitKindEXT; mat4x3 v13 = gl_ObjectToWorldEXT; mat4x3 v14 = gl_WorldToObjectEXT; int v15 = gl_GeometryIndexEXT; mat3x4 v16 = gl_ObjectToWorld3x4EXT; mat3x4 v17 = gl_WorldToObject3x4EXT; uint v18 = gl_CullMaskEXT; vec3 v19 = gl_HitTriangleVertexPositionsEXT[0]; traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); } glslang-16.0.0/Test/spv.ext.ClosestHitShader_Errors.rchit000066400000000000000000000013631506534232700233630ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable hitAttributeEXT vec4 payload; layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 2) rayPayloadEXT vec4 payload0; layout(location = 2) rayPayloadInEXT block { vec4 data; }; // ERROR : location already used void main() { payload.x = 1.0f; // ERROR, cannot write to hitattributeEXT in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage terminateRayEXT; ignoreIntersectionEXT; bool e1 = gl_IncomingRayFlagsEXT == gl_RayFlagsSkipAABBEXT; traceRayEXT(accEXT, 0, 0, 0, 0, 0, vec3(0.0), 0.0, vec3(1.0), 1.0, 0); //ERROR no payload variable with location = 0 } glslang-16.0.0/Test/spv.ext.ClosestHitShader_Subgroup.rchit000066400000000000000000000013211506534232700237070ustar00rootroot00000000000000#version 460 #pragma use_vulkan_memory_model #extension GL_EXT_ray_tracing : enable #extension GL_NV_shader_sm_builtins : enable #extension GL_KHR_shader_subgroup_ballot : enable #extension GL_ARB_shader_ballot : enable #extension GL_NV_shader_sm_builtins : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 1) rayPayloadInEXT vec4 incomingPayload; void main() { traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); incomingPayload.x = float(gl_SubgroupInvocationID) + float(gl_SubGroupGeMaskARB) + float(gl_SubgroupGtMask) + float(gl_SubgroupLeMask) + float(gl_SubGroupLtMaskARB) + float(gl_SMIDNV); } glslang-16.0.0/Test/spv.ext.IntersectShader.rint000066400000000000000000000013271506534232700215510ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_cull_mask : enable hitAttributeEXT vec4 iAttr; void main() { uvec3 v0 = gl_LaunchIDEXT; uvec3 v1 = gl_LaunchSizeEXT; int v2 = gl_PrimitiveID; int v3 = gl_InstanceID; int v4 = gl_InstanceCustomIndexEXT; vec3 v5 = gl_WorldRayOriginEXT; vec3 v6 = gl_WorldRayDirectionEXT; vec3 v7 = gl_ObjectRayOriginEXT; vec3 v8 = gl_ObjectRayDirectionEXT; float v9 = gl_RayTminEXT; float v10 = gl_RayTmaxEXT; mat4x3 v11 = gl_ObjectToWorldEXT; mat4x3 v12 = gl_WorldToObjectEXT; mat3x4 v13 = gl_ObjectToWorld3x4EXT; mat3x4 v14 = gl_WorldToObject3x4EXT; uint v15 = gl_CullMaskEXT; iAttr = vec4(0.5f,0.5f,0.0f,1.0f); reportIntersectionEXT(0.5, 1U); } glslang-16.0.0/Test/spv.ext.IntersectShader_Errors.rint000066400000000000000000000011601506534232700231000ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable rayPayloadInEXT vec4 payloadIn; // ERROR, rayPayloadIn unsupported in this stage rayPayloadEXT vec4 payload; // ERROR, rayPayload unsuppoted in this stage uniform accelerationStructureEXT accEXT; void main() { float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage traceRayEXT(accEXT, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported } glslang-16.0.0/Test/spv.ext.MissShader.rmiss000066400000000000000000000021451506534232700207040ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_shader_sm_builtins : enable #extension GL_KHR_shader_subgroup_ballot : enable #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; layout(location = 1) rayPayloadInEXT vec4 incomingPayload; layout(binding = 1, set = 0) uniform sampler2D s2D; layout(location = 2) in vec2 c2; layout(location = 3) in float lodClamp; void main() { uvec3 v0 = gl_LaunchIDEXT; uvec3 v1 = gl_LaunchSizeEXT; vec3 v2 = gl_WorldRayOriginEXT; vec3 v3 = gl_WorldRayDirectionEXT; float v4 = gl_RayTminEXT; float v5 = gl_RayTmaxEXT; 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); } glslang-16.0.0/Test/spv.ext.MissShader_Errors.rmiss000066400000000000000000000022011506534232700222310ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable hitAttributeEXT vec4 payload; // ERROR, hitattributeEXT unsupported in this stage void main() { int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage int e3 = gl_InstanceCustomIndexEXT; // ERROR, unsupported builtin in stage mat4x3 e10 = gl_ObjectToWorldEXT; // ERROR, unsupported builtin in stage mat4x3 e11 = gl_WorldToObjectEXT; // ERROR, unsupported builtin in stage float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage ignoreIntersectionEXT; // ERROR, unsupported in stage terminateRayEXT; // ERROR, unsupported in stage } glslang-16.0.0/Test/spv.ext.RayCallable.rcall000066400000000000000000000004351506534232700207550ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable layout(location = 0) callableDataEXT vec4 data0; layout(location = 1) callableDataInEXT dataBlock { uint data1; }; void main() { uvec3 id = gl_LaunchIDEXT; uvec3 size = gl_LaunchSizeEXT; data1 = 256U; executeCallableEXT(2,1); } glslang-16.0.0/Test/spv.ext.RayCallable_Errors.rcall000066400000000000000000000044341506534232700223140ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable hitAttributeEXT vec4 hitattr; // ERROR, hitattributeEXT unsupported in this stage rayPayloadEXT vec4 payload; // ERROR, rayPayloadEXT unsupported in this stage rayPayloadInEXT vec4 payloadIn; // ERROR, rayPayloadInEXT unsupported in this stage layout(location = 0) callableDataEXT vec4 cd0; layout(location = 0) callableDataEXT float cd1; // ERROR, location already used void main() { int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage int e3 = gl_InstanceCustomIndexEXT; // ERROR, unsupported builtin in stage vec3 e4 = gl_WorldRayOriginEXT; // ERROR, unsupported builtin in stage vec3 e5 = gl_WorldRayDirectionEXT; // ERROR, unsupported builtin in stage vec3 e6 = gl_ObjectRayOriginEXT; // ERROR, unsupported builtin in stage vec3 e7 = gl_ObjectRayDirectionEXT; // ERROR, unsupported builtin in stage float e8 = gl_RayTminEXT; // ERROR, unsupported builtin in stage float e9 = gl_RayTmaxEXT; // ERROR, unsupported builtin in stage mat4x3 e10 = gl_ObjectToWorldEXT; // ERROR, unsupported builtin in stage mat4x3 e11 = gl_WorldToObjectEXT; // ERROR, unsupported builtin in stage float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage uint curFlags = gl_IncomingRayFlagsEXT; // ERROR, unsupported builtin in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage ignoreIntersectionEXT; // ERROR, unsupported in stage terminateRayEXT; // ERROR, unsupported in stage executeCallableEXT(1,1); // ERROR, no callable data with location 1 } glslang-16.0.0/Test/spv.ext.RayConstants.rgen000066400000000000000000000013211506534232700210630ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 1) rayPayloadEXT vec4 payload; void main() { const uint rayFlags = gl_RayFlagsNoneEXT | gl_RayFlagsOpaqueEXT | gl_RayFlagsNoOpaqueEXT | gl_RayFlagsTerminateOnFirstHitEXT | gl_RayFlagsSkipClosestHitShaderEXT | gl_RayFlagsCullBackFacingTrianglesEXT | gl_RayFlagsCullFrontFacingTrianglesEXT | gl_RayFlagsCullOpaqueEXT | gl_RayFlagsCullNoOpaqueEXT; const int payloadId = 1; traceRayEXT(accEXT, rayFlags, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, payloadId); } glslang-16.0.0/Test/spv.ext.RayGenSBTlayout.rgen000066400000000000000000000013541506534232700214350ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_ARB_gpu_shader_int64 : enable layout(location = 1) rayPayloadEXT vec4 payload; // should get std430 layout layout(shaderRecordEXT) buffer block { vec3 dir; vec3 origin; int i; uvec2 aHandle32; uint64_t aHandle64; vec2 arr2[2]; float a; vec3 arr3[2]; float packme; vec2 b; float c; }; void main() { uint lx = gl_LaunchIDEXT.x; uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.ext.RayGenSBTlayout140.rgen000066400000000000000000000013271506534232700216620ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_ARB_gpu_shader_int64 : enable layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT, std140) buffer block { vec3 dir; vec3 origin; int i; uvec2 aHandle32; uint64_t aHandle64; vec2 arr[2]; float a; vec3 arr3[2]; float packme; vec2 b; float c; }; void main() { uint lx = gl_LaunchIDEXT.x; uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.ext.RayGenSBTlayout430.rgen000066400000000000000000000013271506534232700216640ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_ARB_gpu_shader_int64 : enable layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT, std430) buffer block { vec3 dir; vec3 origin; int i; uvec2 aHandle32; uint64_t aHandle64; vec2 arr[2]; float a; vec3 arr3[2]; float packme; vec2 b; float c; }; void main() { uint lx = gl_LaunchIDEXT.x; uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.ext.RayGenSBTlayoutscalar.rgen000066400000000000000000000014061506534232700226210ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_ARB_gpu_shader_int64 : enable #extension GL_EXT_scalar_block_layout : enable layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT, scalar) buffer block { vec3 dir; vec3 origin; int i; uvec2 aHandle32; uint64_t aHandle64; vec2 arr[2]; float a; vec3 arr3[2]; float packme; vec2 b; float c; }; void main() { uint lx = gl_LaunchIDEXT.x; uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.ext.RayGenShader.rgen000066400000000000000000000014711506534232700207550ustar00rootroot00000000000000#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; layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT) buffer block { vec3 dir; vec3 origin; }; layout(primitive_culling); void main() { uint lx = gl_LaunchIDEXT.x; uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; traceRayEXT(accEXT0, lx, ly, sx, sy, gl_RayFlagsSkipTrianglesEXT | gl_RayFlagsSkipAABBEXT | gl_RayFlagsForceOpacityMicromap2StateEXT, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.ext.RayGenShader11.rgen000066400000000000000000000007141506534232700211160ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT) buffer block { vec3 dir; vec3 origin; }; void main() { uint lx = gl_LaunchIDEXT.x; uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; traceRayEXT(accEXT, lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.ext.RayGenShaderArray.rgen000066400000000000000000000020521506534232700217500ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_nonuniform_qualifier : enable #extension GL_ARB_gpu_shader_int64 : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT0[]; layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1[2]; layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT) buffer block { vec3 dir; vec3 origin; int i; uvec2 aHandle32; uint64_t aHandle64; }; void main() { uint lx = gl_LaunchIDEXT.x; uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; traceRayEXT(accEXT0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accEXT1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accEXT0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } glslang-16.0.0/Test/spv.ext.RayGenShader_Errors.rgen000066400000000000000000000052741506534232700223160ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable hitAttributeEXT vec4 payload; // ERROR, hitattributeEXT unsupported in this stage rayPayloadInEXT vec4 payloadIn; // ERROR, rayPayloadIn unsupported in this stage layout(shaderRecordEXT) uniform ublock // ERROR, shaderRecordEXT unsupported on uniform blocks { float a; }; layout(binding = 0, shaderRecordEXT) buffer bblock { // ERROR, binding unsupported on shaderRecordEXT blocks float b; }; layout(set = 0, shaderRecordEXT) buffer bblock2 { // ERROR, set unsupported on shaderRecordEXT blocks float c; }; layout(shaderRecordEXT) buffer bblock3 { float d; }; layout(shaderRecordEXT) buffer bblock4 { // ERROR, cannot have more than one shaderRecordEXTX block float e; }; void main() { accelerationStructureEXT a = accelerationStructureEXT(c); int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage int e3 = gl_InstanceCustomIndexEXT; // ERROR, unsupported builtin in stage vec3 e4 = gl_WorldRayOriginEXT; // ERROR, unsupported builtin in stage vec3 e5 = gl_WorldRayDirectionEXT; // ERROR, unsupported builtin in stage vec3 e6 = gl_ObjectRayOriginEXT; // ERROR, unsupported builtin in stage vec3 e7 = gl_ObjectRayDirectionEXT; // ERROR, unsupported builtin in stage float e8 = gl_RayTminEXT; // ERROR, unsupported builtin in stage float e9 = gl_RayTmaxEXT; // ERROR, unsupported builtin in stage mat4x3 e10 = gl_ObjectToWorldEXT; // ERROR, unsupported builtin in stage mat4x3 e11 = gl_WorldToObjectEXT; // ERROR, unsupported builtin in stage float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage int e14 = gl_RayFlagsSkipAABBEXT; // ERROR, unsupported builtin in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage ignoreIntersectionEXT; // ERROR, unsupported builtin in stage terminateRayEXT; // ERROR, unsupported builtin in stage d = 1.0f; // ERROR, can't modify shaderRecordEXT block } glslang-16.0.0/Test/spv.ext.RayPrimCull_Errors.rgen000066400000000000000000000005151506534232700221760ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable layout(primitive_culling); #extension GL_EXT_ray_flags_primitive_culling : enable layout(primitive_culling) uniform; layout(primitive_culling, binding = 2) uniform accelerationStructureEXT as; layout(std140, binding = 2, primitive_culling) buffer block { int x; }; void main() { } glslang-16.0.0/Test/spv.ext.RayQueryDecl.frag000066400000000000000000000005271506534232700207770ustar00rootroot00000000000000#version 460 #extension GL_ARB_separate_shader_objects : enable #extension GL_EXT_nonuniform_qualifier : enable #extension GL_GOOGLE_include_directive : enable #extension GL_EXT_scalar_block_layout : enable #extension GL_EXT_ray_query : enable layout(location = 0) out vec4 outColor; rayQueryEXT rq; void main() { outColor = vec4(0.0); } glslang-16.0.0/Test/spv.ext.ShaderTileImage.color.frag000066400000000000000000000004071506534232700225270ustar00rootroot00000000000000#version 460 #extension GL_EXT_shader_tile_image : require precision highp float; layout(location=1) tileImageEXT highp attachmentEXT in_color; layout(location=0) out highp vec4 out_color; void main(void) { out_color = colorAttachmentReadEXT(in_color); } glslang-16.0.0/Test/spv.ext.ShaderTileImage.depth_stencil.frag000066400000000000000000000005771506534232700242460ustar00rootroot00000000000000#version 460 #extension GL_EXT_shader_tile_image : require precision highp float; layout(location=0) out highp uvec4 stencil_out; layout(location=1) out highp vec4 depth_out; void main(void) { float depth = depthAttachmentReadEXT(); uint stencil_value = stencilAttachmentReadEXT(); stencil_out = uvec4(stencil_value,0,0,0); depth_out = vec4(depth,0.0,0.0,0.0); } glslang-16.0.0/Test/spv.ext.ShaderTileImage.overlap.frag000066400000000000000000000006321506534232700230610ustar00rootroot00000000000000#version 460 #extension GL_EXT_shader_tile_image : require precision mediump int; precision highp float; layout(location=0) tileImageEXT highp attachmentEXT in_color[2]; layout(location=1) tileImageEXT highp attachmentEXT in_color_1; layout(location=1) out highp vec4 out_color; void main(void) { out_color = colorAttachmentReadEXT(in_color[0]); out_color += colorAttachmentReadEXT(in_color_1); } glslang-16.0.0/Test/spv.ext.ShaderTileImage.subpassinput.frag000066400000000000000000000003761506534232700241560ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_tile_image : require precision highp float; layout(set = 0, binding = 0, input_attachment_index = 0) uniform subpassInput i; layout(location = 0) out vec4 fragColor; void main() { fragColor = subpassLoad(i); } glslang-16.0.0/Test/spv.ext.ShaderTileImage.typemismatch.frag000066400000000000000000000005221506534232700241160ustar00rootroot00000000000000#version 320 es #extension GL_EXT_shader_tile_image : require layout(non_coherent_color_attachment_readEXT) in; layout(location=0) tileImageEXT highp iattachmentEXT in_color_i; layout(location=0) out highp vec4 out_color_f; void main(void) { highp ivec4 read = colorAttachmentReadEXT(in_color_i); out_color_f = vec4(read); } glslang-16.0.0/Test/spv.ext.ShaderTileImage.wronglayout.frag000066400000000000000000000004761506534232700240110ustar00rootroot00000000000000#version 460 #extension GL_EXT_shader_tile_image : require precision highp float; precision mediump int; layout(binding=0, set=0, input_attachment_index=0) tileImageEXT highp attachmentEXT in_color; layout(location=0) out highp vec4 out_color; void main(void) { out_color = colorAttachmentReadEXT(in_color); } glslang-16.0.0/Test/spv.ext.World3x4.rahit000066400000000000000000000007711506534232700202450ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable hitAttributeEXT vec3 attribs; layout(location = 0) rayPayloadInEXT vec3 hitValue; layout(set = 0, binding = 0, r32i) uniform iimage3D result; void main() { float k = 1048576.0f; int ndx = -1; for (int col = 0; col < 3; col++) for (int row = 0; row < 4; row++) { ndx++; ivec3 p = ivec3(gl_LaunchIDEXT.xy, ndx); float r = k * gl_WorldToObject3x4EXT[col][row]; ivec4 c = ivec4(int(r),0,0,1); imageStore(result, p, c); } } glslang-16.0.0/Test/spv.ext.meshShaderBuiltins.mesh000066400000000000000000000047341506534232700222440ustar00rootroot00000000000000#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 }glslang-16.0.0/Test/spv.ext.meshShaderBuiltinsShadingRate.mesh000066400000000000000000000052131506534232700243470ustar00rootroot00000000000000#version 460 #define MAX_VER 81 #define MAX_PRIM 32 #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_EXT_mesh_shader : enable #extension GL_EXT_fragment_shading_rate : 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; gl_MeshPrimitivesEXT[iid].gl_PrimitiveShadingRateEXT = 0; 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; gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveShadingRateEXT = 0; 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 }glslang-16.0.0/Test/spv.ext.meshShaderRedeclBuiltins.mesh000066400000000000000000000045331506534232700233600ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/spv.ext.meshShaderTaskMem.mesh000066400000000000000000000013611506534232700220050ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/spv.ext.meshShaderUserDefined.mesh000066400000000000000000000024531506534232700226440ustar00rootroot00000000000000#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(); } glslang-16.0.0/Test/spv.ext.meshTaskShader.task000066400000000000000000000021171506534232700213540ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/spv.ext.textureShadowLod.error.frag000066400000000000000000000003321506534232700230550ustar00rootroot00000000000000#version 450 layout(binding = 0) uniform sampler2DArrayShadow s2da; layout(location = 0) out vec4 c_out; layout(location = 0) in vec4 tc; void main() { float c = textureLod(s2da, tc, 0); c_out = vec4(c); } glslang-16.0.0/Test/spv.ext.textureShadowLod.frag000066400000000000000000000011111506534232700217210ustar00rootroot00000000000000#version 450 #extension GL_EXT_texture_shadow_lod : enable layout(binding = 0) uniform sampler2DArrayShadow s2da; layout(binding = 1) uniform samplerCubeArrayShadow sca; layout(binding = 2) uniform samplerCubeShadow sc; layout(location = 0) out float c; layout(location = 0) in vec4 tc; void main() { c = texture(s2da, tc, 0.0); c = texture(sca, tc, 0.0, 0.0); c = textureOffset(s2da, tc, ivec2(0.0), 0.0); c = textureLod(s2da, tc, 0.0); c = textureLod(sc, tc, 0.0); c = textureLod(sca, tc, 0.0, 0.0); c = textureLodOffset(s2da, tc, 0.0, ivec2(0.0)); } glslang-16.0.0/Test/spv.extPostDepthCoverage.frag000066400000000000000000000002351506534232700217320ustar00rootroot00000000000000#version 310 es #extension GL_EXT_post_depth_coverage : enable layout(post_depth_coverage) in; layout(early_fragment_tests) in; void main () { } glslang-16.0.0/Test/spv.extPostDepthCoverage_Error.frag000066400000000000000000000004111506534232700230770ustar00rootroot00000000000000#version 450 #extension GL_EXT_post_depth_coverage : enable layout(post_depth_coverage) in; // should fail since for GL_EXT_post_depth_coverage // explicit declaration of early_fragment_tests is required void main () { } glslang-16.0.0/Test/spv.float16.frag000066400000000000000000000201741506534232700171030ustar00rootroot00000000000000#version 450 core #extension GL_AMD_gpu_shader_half_float: enable #extension GL_ARB_gpu_shader_int64: enable void main() { } // Half float literals void literal() { const float16_t f16c = 0.000001hf; const f16vec2 f16cv = f16vec2(-0.25HF, 0.03HF); f16vec2 f16v; f16v.x = f16c; f16v += f16cv; } // Block memory layout struct S { float16_t x; // rule 1: align = 2, takes offsets 0-1 f16vec2 y; // rule 2: align = 4, takes offsets 4-7 f16vec3 z; // rule 3: align = 8, takes offsets 8-13 }; layout(column_major, std140) uniform B1 { float16_t a; // rule 1: align = 2, takes offsets 0-1 f16vec2 b; // rule 2: align = 4, takes offsets 4-7 f16vec3 c; // rule 3: align = 8, takes offsets 8-15 float16_t d[2]; // rule 4: align = 16, array stride = 16, // takes offsets 16-47 f16mat2x3 e; // rule 5: align = 16, matrix stride = 16, // takes offsets 48-79 f16mat2x3 f[2]; // rule 6: align = 16, matrix stride = 16, // array stride = 32, f[0] takes // offsets 80-111, f[1] takes offsets // 112-143 S g; // rule 9: align = 16, g.x takes offsets // 144-145, g.y takes offsets 148-151, // g.z takes offsets 152-159 S h[2]; // rule 10: align = 16, array stride = 16, h[0] // takes offsets 160-175, h[1] takes // offsets 176-191 }; layout(row_major, std430) buffer B2 { float16_t o; // rule 1: align = 2, takes offsets 0-1 f16vec2 p; // rule 2: align = 4, takes offsets 4-7 f16vec3 q; // rule 3: align = 8, takes offsets 8-13 float16_t r[2]; // rule 4: align = 2, array stride = 2, takes // offsets 14-17 f16mat2x3 s; // rule 7: align = 4, matrix stride = 4, takes // offsets 20-31 f16mat2x3 t[2]; // rule 8: align = 4, matrix stride = 4, array // stride = 12, t[0] takes offsets // 32-43, t[1] takes offsets 44-55 S u; // rule 9: align = 8, u.x takes offsets // 56-57, u.y takes offsets 60-63, u.z // takes offsets 64-69 S v[2]; // rule 10: align = 8, array stride = 16, v[0] // takes offsets 72-87, v[1] takes // offsets 88-103 }; // Specialization constant layout(constant_id = 100) const float16_t sf16 = 0.125hf; layout(constant_id = 101) const float sf = 0.25; layout(constant_id = 102) const double sd = 0.5lf; const float f16_to_f = float(sf16); const double f16_to_d = float(sf16); const float16_t f_to_f16 = float16_t(sf); const float16_t d_to_f16 = float16_t(sd); void operators() { float16_t f16; f16vec2 f16v; f16mat2x2 f16m; bool b; // Arithmetic f16v += f16v; f16v -= f16v; f16v *= f16v; f16v /= f16v; f16v++; f16v--; ++f16m; --f16m; f16v = -f16v; f16m = -f16m; f16 = f16v.x + f16v.y; f16 = f16v.x - f16v.y; f16 = f16v.x * f16v.y; f16 = f16v.x / f16v.y; // Relational b = (f16v.x != f16); b = (f16v.y == f16); b = (f16v.x > f16); b = (f16v.y < f16); b = (f16v.x >= f16); b = (f16v.y <= f16); // Vector/matrix operations f16v = f16v * f16; f16m = f16m * f16; f16v = f16m * f16v; f16v = f16v * f16m; f16m = f16m * f16m; } void typeCast() { bvec3 bv; vec3 fv; dvec3 dv; ivec3 iv; uvec3 uv; i64vec3 i64v; u64vec3 u64v; f16vec3 f16v; f16v = f16vec3(bv); // bool -> float16 bv = bvec3(f16v); // float16 -> bool f16v = f16vec3(fv); // float -> float16 fv = vec3(f16v); // float16 -> float f16v = f16vec3(dv); // double -> float16 dv = dvec3(dv); // float16 -> double f16v = f16vec3(iv); // int -> float16 iv = ivec3(f16v); // float16 -> int f16v = f16vec3(uv); // uint -> float16 uv = uvec3(f16v); // float16 -> uint f16v = f16vec3(i64v); // int64 -> float16 i64v = i64vec3(f16v); // float16 -> int64 f16v = f16vec3(u64v); // uint64 -> float16 u64v = u64vec3(f16v); // float16 -> uint64 } void builtinAngleTrigFuncs() { f16vec4 f16v1, f16v2; f16v2 = radians(f16v1); f16v2 = degrees(f16v1); f16v2 = sin(f16v1); f16v2 = cos(f16v1); f16v2 = tan(f16v1); f16v2 = asin(f16v1); f16v2 = acos(f16v1); f16v2 = atan(f16v1, f16v2); f16v2 = atan(f16v1); f16v2 = sinh(f16v1); f16v2 = cosh(f16v1); f16v2 = tanh(f16v1); f16v2 = asinh(f16v1); f16v2 = acosh(f16v1); f16v2 = atanh(f16v1); } void builtinExpFuncs() { f16vec2 f16v1, f16v2; f16v2 = pow(f16v1, f16v2); f16v2 = exp(f16v1); f16v2 = log(f16v1); f16v2 = exp2(f16v1); f16v2 = log2(f16v1); f16v2 = sqrt(f16v1); f16v2 = inversesqrt(f16v1); } void builtinCommonFuncs() { f16vec3 f16v1, f16v2, f16v3; float16_t f16; bool b; bvec3 bv; ivec3 iv; f16v2 = abs(f16v1); f16v2 = sign(f16v1); f16v2 = floor(f16v1); f16v2 = trunc(f16v1); f16v2 = round(f16v1); f16v2 = roundEven(f16v1); f16v2 = ceil(f16v1); f16v2 = fract(f16v1); f16v2 = mod(f16v1, f16v2); f16v2 = mod(f16v1, f16); f16v3 = modf(f16v1, f16v2); f16v3 = min(f16v1, f16v2); f16v3 = min(f16v1, f16); f16v3 = max(f16v1, f16v2); f16v3 = max(f16v1, f16); f16v3 = clamp(f16v1, f16, f16v2.x); f16v3 = clamp(f16v1, f16v2, f16vec3(f16)); f16v3 = mix(f16v1, f16v2, f16); f16v3 = mix(f16v1, f16v2, f16v3); f16v3 = mix(f16v1, f16v2, bv); f16v3 = step(f16v1, f16v2); f16v3 = step(f16, f16v3); f16v3 = smoothstep(f16v1, f16v2, f16v3); f16v3 = smoothstep(f16, f16v1.x, f16v2); b = isnan(f16); bv = isinf(f16v1); f16v3 = fma(f16v1, f16v2, f16v3); f16v2 = frexp(f16v1, iv); f16v2 = ldexp(f16v1, iv); } void builtinPackUnpackFuncs() { uint u; f16vec2 f16v; u = packFloat2x16(f16v); f16v = unpackFloat2x16(u); } void builtinGeometryFuncs() { float16_t f16; f16vec3 f16v1, f16v2, f16v3; f16 = length(f16v1); f16 = distance(f16v1, f16v2); f16 = dot(f16v1, f16v2); f16v3 = cross(f16v1, f16v2); f16v2 = normalize(f16v1); f16v3 = faceforward(f16v1, f16v2, f16v3); f16v3 = reflect(f16v1, f16v2); f16v3 = refract(f16v1, f16v2, f16); } void builtinMatrixFuncs() { f16mat2x3 f16m1, f16m2, f16m3; f16mat3x2 f16m4; f16mat3 f16m5; f16mat4 f16m6, f16m7; f16vec3 f16v1; f16vec2 f16v2; float16_t f16; f16m3 = matrixCompMult(f16m1, f16m2); f16m1 = outerProduct(f16v1, f16v2); f16m4 = transpose(f16m1); f16 = determinant(f16m5); f16m6 = inverse(f16m7); } void builtinVecRelFuncs() { f16vec3 f16v1, f16v2; bvec3 bv; bv = lessThan(f16v1, f16v2); bv = lessThanEqual(f16v1, f16v2); bv = greaterThan(f16v1, f16v2); bv = greaterThanEqual(f16v1, f16v2); bv = equal(f16v1, f16v2); bv = notEqual(f16v1, f16v2); } in f16vec3 if16v; void builtinFragProcFuncs() { f16vec3 f16v; // Derivative f16v.x = dFdx(if16v.x); f16v.y = dFdy(if16v.y); f16v.xy = dFdxFine(if16v.xy); f16v.xy = dFdyFine(if16v.xy); f16v = dFdxCoarse(if16v); f16v = dFdxCoarse(if16v); f16v.x = fwidth(if16v.x); f16v.xy = fwidthFine(if16v.xy); f16v = fwidthCoarse(if16v); // Interpolation f16v.x = interpolateAtCentroid(if16v.x); f16v.xy = interpolateAtSample(if16v.xy, 1); f16v = interpolateAtOffset(if16v, f16vec2(0.5hf)); } glslang-16.0.0/Test/spv.float16Fetch.frag000066400000000000000000001646751506534232700200740ustar00rootroot00000000000000#version 450 core #extension GL_ARB_sparse_texture2: enable #extension GL_ARB_sparse_texture_clamp: enable #extension GL_AMD_gpu_shader_half_float: enable #extension GL_AMD_gpu_shader_half_float_fetch: enable #extension GL_AMD_texture_gather_bias_lod: enable layout(set = 0, binding = 0) uniform f16sampler1D s1D; layout(set = 0, binding = 1) uniform f16sampler2D s2D; layout(set = 0, binding = 2) uniform f16sampler3D s3D; layout(set = 0, binding = 3) uniform f16sampler2DRect s2DRect; layout(set = 0, binding = 4) uniform f16samplerCube sCube; layout(set = 0, binding = 5) uniform f16samplerBuffer sBuffer; layout(set = 0, binding = 6) uniform f16sampler2DMS s2DMS; layout(set = 0, binding = 7) uniform f16sampler1DArray s1DArray; layout(set = 0, binding = 8) uniform f16sampler2DArray s2DArray; layout(set = 0, binding = 9) uniform f16samplerCubeArray sCubeArray; layout(set = 0, binding = 10) uniform f16sampler2DMSArray s2DMSArray; layout(set = 0, binding = 11) uniform f16sampler1DShadow s1DShadow; layout(set = 0, binding = 12) uniform f16sampler2DShadow s2DShadow; layout(set = 0, binding = 13) uniform f16sampler2DRectShadow s2DRectShadow; layout(set = 0, binding = 14) uniform f16samplerCubeShadow sCubeShadow; layout(set = 0, binding = 15) uniform f16sampler1DArrayShadow s1DArrayShadow; layout(set = 0, binding = 16) uniform f16sampler2DArrayShadow s2DArrayShadow; layout(set = 0, binding = 17) uniform f16samplerCubeArrayShadow sCubeArrayShadow; layout(set = 1, binding = 0) layout(rgba16f) uniform f16image1D i1D; layout(set = 1, binding = 1) layout(rgba16f) uniform f16image2D i2D; layout(set = 1, binding = 2) layout(rgba16f) uniform f16image3D i3D; layout(set = 1, binding = 3) layout(rgba16f) uniform f16image2DRect i2DRect; layout(set = 1, binding = 4) layout(rgba16f) uniform f16imageCube iCube; layout(set = 1, binding = 5) layout(rgba16f) uniform f16image1DArray i1DArray; layout(set = 1, binding = 6) layout(rgba16f) uniform f16image2DArray i2DArray; layout(set = 1, binding = 7) layout(rgba16f) uniform f16imageCubeArray iCubeArray; layout(set = 1, binding = 8) layout(rgba16f) uniform f16imageBuffer iBuffer; layout(set = 1, binding = 9) layout(rgba16f) uniform f16image2DMS i2DMS; layout(set = 1, binding = 10) layout(rgba16f) uniform f16image2DMSArray i2DMSArray; layout(set = 2, binding = 0) uniform f16texture1D t1D; layout(set = 2, binding = 1) uniform f16texture2D t2D; layout(set = 2, binding = 2) uniform f16texture3D t3D; layout(set = 2, binding = 3) uniform f16texture2DRect t2DRect; layout(set = 2, binding = 4) uniform f16textureCube tCube; layout(set = 2, binding = 5) uniform f16texture1DArray t1DArray; layout(set = 2, binding = 6) uniform f16texture2DArray t2DArray; layout(set = 2, binding = 7) uniform f16textureCubeArray tCubeArray; layout(set = 2, binding = 8) uniform f16textureBuffer tBuffer; layout(set = 2, binding = 9) uniform f16texture2DMS t2DMS; layout(set = 2, binding = 10) uniform f16texture2DMSArray t2DMSArray; layout(set = 2, binding = 11) uniform sampler s; layout(set = 2, binding = 12) uniform samplerShadow sShadow; layout(set = 3, binding = 0, input_attachment_index = 0) uniform f16subpassInput subpass; layout(set = 3, binding = 1, input_attachment_index = 0) uniform f16subpassInputMS subpassMS; layout(location = 0) in float c1; layout(location = 1) in vec2 c2; layout(location = 2) in vec3 c3; layout(location = 3) in vec4 c4; layout(location = 4) in float compare; layout(location = 5) in float lod; layout(location = 6) in float bias; layout(location = 7) in float lodClamp; layout(location = 8) in float dPdxy1; layout(location = 9) in vec2 dPdxy2; layout(location = 10) in vec3 dPdxy3; layout(location = 11) in float16_t f16c1; layout(location = 12) in f16vec2 f16c2; layout(location = 13) in f16vec3 f16c3; layout(location = 14) in f16vec4 f16c4; layout(location = 15) in float16_t f16lod; layout(location = 16) in float16_t f16bias; layout(location = 17) in float16_t f16lodClamp; layout(location = 18) in float16_t f16dPdxy1; layout(location = 19) in f16vec2 f16dPdxy2; layout(location = 20) in f16vec3 f16dPdxy3; const int offset1 = 1; const ivec2 offset2 = ivec2(1); const ivec3 offset3 = ivec3(1); const ivec2 offsets[4] = { offset2, offset2, offset2, offset2 }; layout(location = 0) out vec4 fragColor; f16vec4 testTexture() { f16vec4 texel = f16vec4(0.0hf); texel += texture(s1D, c1); texel += texture(s1D, f16c1, f16bias); texel += texture(s2D, c2); texel += texture(s2D, f16c2, f16bias); texel += texture(s3D, c3); texel += texture(s3D, f16c3, f16bias); texel += texture(sCube, c3); texel += texture(sCube, f16c3, f16bias); texel.x += texture(s1DShadow, c3); texel.x += texture(s1DShadow, f16c2, compare, f16bias); texel.x += texture(s2DShadow, c3); texel.x += texture(s2DShadow, f16c2, compare, f16bias); texel.x += texture(sCubeShadow, c4); texel.x += texture(sCubeShadow, f16c3, compare, f16bias); texel += texture(s1DArray, c2); texel += texture(s1DArray, f16c2, f16bias); texel += texture(s2DArray, c3); texel += texture(s2DArray, f16c3, f16bias); texel += texture(sCubeArray, c4); texel += texture(sCubeArray, f16c4, f16bias); texel.x += texture(s1DArrayShadow, c3); texel.x += texture(s1DArrayShadow, f16c2, compare, f16bias); texel.x += texture(s2DArrayShadow, c4); texel.x += texture(s2DArrayShadow, f16c3, compare); texel += texture(s2DRect, c2); texel += texture(s2DRect, f16c2); texel.x += texture(s2DRectShadow, c3); texel.x += texture(s2DRectShadow, f16c2, compare); texel.x += texture(sCubeArrayShadow, c4, compare); texel.x += texture(sCubeArrayShadow, f16c4, compare); return texel; } f16vec4 testTextureProj() { f16vec4 texel = f16vec4(0.0hf); texel += textureProj(s1D, c2); texel += textureProj(s1D, f16c2, f16bias); texel += textureProj(s1D, c4); texel += textureProj(s1D, f16c4, f16bias); texel += textureProj(s2D, c3); texel += textureProj(s2D, f16c3, f16bias); texel += textureProj(s2D, c4); texel += textureProj(s2D, f16c4, f16bias); texel += textureProj(s3D, c4); texel += textureProj(s3D, f16c4, f16bias); texel.x += textureProj(s1DShadow, c4); texel.x += textureProj(s1DShadow, f16c3, compare, f16bias); texel.x += textureProj(s2DShadow, c4); texel.x += textureProj(s2DShadow, f16c3, compare, f16bias); texel += textureProj(s2DRect, c3); texel += textureProj(s2DRect, f16c3); texel += textureProj(s2DRect, c4); texel += textureProj(s2DRect, f16c4); texel.x += textureProj(s2DRectShadow, c4); texel.x += textureProj(s2DRectShadow, f16c3, compare); return texel; } f16vec4 testTextureLod() { f16vec4 texel = f16vec4(0.0hf); texel += textureLod(s1D, c1, lod); texel += textureLod(s1D, f16c1, f16lod); texel += textureLod(s2D, c2, lod); texel += textureLod(s2D, f16c2, f16lod); texel += textureLod(s3D, c3, lod); texel += textureLod(s3D, f16c3, f16lod); texel += textureLod(sCube, c3, lod); texel += textureLod(sCube, f16c3, f16lod); texel.x += textureLod(s1DShadow, c3, lod); texel.x += textureLod(s1DShadow, f16c2, compare, f16lod); texel.x += textureLod(s2DShadow, c3, lod); texel.x += textureLod(s2DShadow, f16c2, compare, f16lod); texel += textureLod(s1DArray, c2, lod); texel += textureLod(s1DArray, f16c2, f16lod); texel += textureLod(s2DArray, c3, lod); texel += textureLod(s2DArray, f16c3, f16lod); texel.x += textureLod(s1DArrayShadow, c3, lod); texel.x += textureLod(s1DArrayShadow, f16c2, compare, f16lod); texel += textureLod(sCubeArray, c4, lod); texel += textureLod(sCubeArray, f16c4, f16lod); return texel; } f16vec4 testTextureOffset() { f16vec4 texel = f16vec4(0.0hf); texel += textureOffset(s1D, c1, offset1); texel += textureOffset(s1D, f16c1, offset1, f16bias); texel += textureOffset(s2D, c2, offset2); texel += textureOffset(s2D, f16c2, offset2, f16bias); texel += textureOffset(s3D, c3, offset3); texel += textureOffset(s3D, f16c3, offset3, f16bias); texel += textureOffset(s2DRect, c2, offset2); texel += textureOffset(s2DRect, f16c2, offset2); texel.x += textureOffset(s2DRectShadow, c3, offset2); texel.x += textureOffset(s2DRectShadow, f16c2, compare, offset2); texel.x += textureOffset(s1DShadow, c3, offset1); texel.x += textureOffset(s1DShadow, f16c2, compare, offset1, f16bias); texel.x += textureOffset(s2DShadow, c3, offset2); texel.x += textureOffset(s2DShadow, f16c2, compare, offset2, f16bias); texel += textureOffset(s1DArray, c2, offset1); texel += textureOffset(s1DArray, f16c2, offset1, f16bias); texel += textureOffset(s2DArray, c3, offset2); texel += textureOffset(s2DArray, f16c3, offset2, f16bias); texel.x += textureOffset(s1DArrayShadow, c3, offset1); texel.x += textureOffset(s1DArrayShadow, f16c2, compare, offset1, f16bias); texel.x += textureOffset(s2DArrayShadow, c4, offset2); texel.x += textureOffset(s2DArrayShadow, f16c3, compare, offset2); return texel; } f16vec4 testTextureProjOffset() { f16vec4 texel = f16vec4(0.0hf); texel += textureProjOffset(s1D, c2, offset1); texel += textureProjOffset(s1D, f16c2, offset1, f16bias); texel += textureProjOffset(s1D, c4, offset1); texel += textureProjOffset(s1D, f16c4, offset1, f16bias); texel += textureProjOffset(s2D, c3, offset2); texel += textureProjOffset(s2D, f16c3, offset2, f16bias); texel += textureProjOffset(s2D, c4, offset2); texel += textureProjOffset(s2D, f16c4, offset2, f16bias); texel += textureProjOffset(s3D, c4, offset3); texel += textureProjOffset(s3D, f16c4, offset3, f16bias); texel += textureProjOffset(s2DRect, c3, offset2); texel += textureProjOffset(s2DRect, f16c3, offset2); texel += textureProjOffset(s2DRect, c4, offset2); texel += textureProjOffset(s2DRect, f16c4, offset2); texel.x += textureProjOffset(s2DRectShadow, c4, offset2); texel.x += textureProjOffset(s2DRectShadow, f16c3, compare, offset2); texel.x += textureProjOffset(s1DShadow, c4, offset1); texel.x += textureProjOffset(s1DShadow, f16c3, compare, offset1, f16bias); texel.x += textureProjOffset(s2DShadow, c4, offset2); texel.x += textureProjOffset(s2DShadow, f16c3, compare, offset2, f16bias); return texel; } f16vec4 testTextureLodOffset() { f16vec4 texel = f16vec4(0.0hf); texel += textureLodOffset(s1D, c1, lod, offset1); texel += textureLodOffset(s1D, f16c1, f16lod, offset1); texel += textureLodOffset(s2D, c2, lod, offset2); texel += textureLodOffset(s2D, f16c2, f16lod, offset2); texel += textureLodOffset(s3D, c3, lod, offset3); texel += textureLodOffset(s3D, f16c3, f16lod, offset3); texel.x += textureLodOffset(s1DShadow, c3, lod, offset1); texel.x += textureLodOffset(s1DShadow, f16c2, compare, f16lod, offset1); texel.x += textureLodOffset(s2DShadow, c3, lod, offset2); texel.x += textureLodOffset(s2DShadow, f16c2, compare, f16lod, offset2); texel += textureLodOffset(s1DArray, c2, lod, offset1); texel += textureLodOffset(s1DArray, f16c2, f16lod, offset1); texel += textureLodOffset(s2DArray, c3, lod, offset2); texel += textureLodOffset(s2DArray, f16c3, f16lod, offset2); texel.x += textureLodOffset(s1DArrayShadow, c3, lod, offset1); texel.x += textureLodOffset(s1DArrayShadow, f16c2, compare, f16lod, offset1); return texel; } f16vec4 testTextureProjLodOffset() { f16vec4 texel = f16vec4(0.0hf); texel += textureProjLodOffset(s1D, c2, lod, offset1); texel += textureProjLodOffset(s1D, f16c2, f16lod, offset1); texel += textureProjLodOffset(s1D, c4, lod, offset1); texel += textureProjLodOffset(s1D, f16c4, f16lod, offset1); texel += textureProjLodOffset(s2D, c3, lod, offset2); texel += textureProjLodOffset(s2D, f16c3, f16lod, offset2); texel += textureProjLodOffset(s2D, c4, lod, offset2); texel += textureProjLodOffset(s2D, f16c4, f16lod, offset2); texel += textureProjLodOffset(s3D, c4, lod, offset3); texel += textureProjLodOffset(s3D, f16c4, f16lod, offset3); texel.x += textureProjLodOffset(s1DShadow, c4, lod, offset1); texel.x += textureProjLodOffset(s1DShadow, f16c3, compare, f16lod, offset1); texel.x += textureProjLodOffset(s2DShadow, c4, lod, offset2); texel.x += textureProjLodOffset(s2DShadow, f16c3, compare, f16lod, offset2); return texel; } f16vec4 testTexelFetch() { f16vec4 texel = f16vec4(0.0hf); texel += texelFetch(s1D, int(c1), int(lod)); texel += texelFetch(s2D, ivec2(c2), int(lod)); texel += texelFetch(s3D, ivec3(c3), int(lod)); texel += texelFetch(s2DRect, ivec2(c2)); texel += texelFetch(s1DArray, ivec2(c2), int(lod)); texel += texelFetch(s2DArray, ivec3(c3), int(lod)); texel += texelFetch(sBuffer, int(c1)); texel += texelFetch(s2DMS, ivec2(c2), 1); texel += texelFetch(s2DMSArray, ivec3(c3), 2); return texel; } f16vec4 testTexelFetchOffset() { f16vec4 texel = f16vec4(0.0hf); texel += texelFetchOffset(s1D, int(c1), int(lod), offset1); texel += texelFetchOffset(s2D, ivec2(c2), int(lod), offset2); texel += texelFetchOffset(s3D, ivec3(c3), int(lod), offset3); texel += texelFetchOffset(s2DRect, ivec2(c2), offset2); texel += texelFetchOffset(s1DArray, ivec2(c2), int(lod), offset1); texel += texelFetchOffset(s2DArray, ivec3(c3), int(lod), offset2); return texel; } f16vec4 testTextureGrad() { f16vec4 texel = f16vec4(0.0hf); texel += textureGrad(s1D, c1, dPdxy1, dPdxy1); texel += textureGrad(s1D, f16c1, f16dPdxy1, f16dPdxy1); texel += textureGrad(s2D, c2, dPdxy2, dPdxy2); texel += textureGrad(s2D, f16c2, f16dPdxy2, f16dPdxy2); texel += textureGrad(s3D, c3, dPdxy3, dPdxy3); texel += textureGrad(s3D, f16c3, f16dPdxy3, f16dPdxy3); texel += textureGrad(sCube, c3, dPdxy3, dPdxy3); texel += textureGrad(sCube, f16c3, f16dPdxy3, f16dPdxy3); texel += textureGrad(s2DRect, c2, dPdxy2, dPdxy2); texel += textureGrad(s2DRect, f16c2, f16dPdxy2, f16dPdxy2); texel.x += textureGrad(s2DRectShadow, c3, dPdxy2, dPdxy2); texel.x += textureGrad(s2DRectShadow, f16c2, compare, f16dPdxy2, f16dPdxy2); texel.x += textureGrad(s1DShadow, c3, dPdxy1, dPdxy1); texel.x += textureGrad(s1DShadow, f16c2, compare, f16dPdxy1, f16dPdxy1); texel.x += textureGrad(s2DShadow, c3, dPdxy2, dPdxy2); texel.x += textureGrad(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2); texel.x += textureGrad(sCubeShadow, c4, dPdxy3, dPdxy3); texel.x += textureGrad(sCubeShadow, f16c3, compare, f16dPdxy3, f16dPdxy3); texel += textureGrad(s1DArray, c2, dPdxy1, dPdxy1); texel += textureGrad(s1DArray, f16c2, f16dPdxy1, f16dPdxy1); texel += textureGrad(s2DArray, c3, dPdxy2, dPdxy2); texel += textureGrad(s2DArray, f16c3, f16dPdxy2, f16dPdxy2); texel.x += textureGrad(s1DArrayShadow, c3, dPdxy1, dPdxy1); texel.x += textureGrad(s1DArrayShadow, f16c2, compare, f16dPdxy1, f16dPdxy1); texel.x += textureGrad(s2DArrayShadow, c4, dPdxy2, dPdxy2); texel.x += textureGrad(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2); texel += textureGrad(sCubeArray, c4, dPdxy3, dPdxy3); texel += textureGrad(sCubeArray, f16c4, f16dPdxy3, f16dPdxy3); return texel; } f16vec4 testTextureGradOffset() { f16vec4 texel = f16vec4(0.0hf); texel += textureGradOffset(s1D, c1, dPdxy1, dPdxy1, offset1); texel += textureGradOffset(s1D, f16c1, f16dPdxy1, f16dPdxy1, offset1); texel += textureGradOffset(s2D, c2, dPdxy2, dPdxy2, offset2); texel += textureGradOffset(s2D, f16c2, f16dPdxy2, f16dPdxy2, offset2); texel += textureGradOffset(s3D, c3, dPdxy3, dPdxy3, offset3); texel += textureGradOffset(s3D, f16c3, f16dPdxy3, f16dPdxy3, offset3); texel += textureGradOffset(s2DRect, c2, dPdxy2, dPdxy2, offset2); texel += textureGradOffset(s2DRect, f16c2, f16dPdxy2, f16dPdxy2, offset2); texel.x += textureGradOffset(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2); texel.x += textureGradOffset(s2DRectShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2); texel.x += textureGradOffset(s1DShadow, c3, dPdxy1, dPdxy1, offset1); texel.x += textureGradOffset(s1DShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, offset1); texel.x += textureGradOffset(s2DShadow, c3, dPdxy2, dPdxy2, offset2); texel.x += textureGradOffset(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2); texel += textureGradOffset(s1DArray, c2, dPdxy1, dPdxy1, offset1); texel += textureGradOffset(s1DArray, f16c2, f16dPdxy1, f16dPdxy1, offset1); texel += textureGradOffset(s2DArray, c3, dPdxy2, dPdxy2, offset2); texel += textureGradOffset(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, offset2); texel.x += textureGradOffset(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1); texel.x += textureGradOffset(s1DArrayShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, offset1); texel.x += textureGradOffset(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2); texel.x += textureGradOffset(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2); return texel; } f16vec4 testTextureProjGrad() { f16vec4 texel = f16vec4(0.0hf); texel += textureProjGrad(s1D, c2, dPdxy1, dPdxy1); texel += textureProjGrad(s1D, f16c2, f16dPdxy1, f16dPdxy1); texel += textureProjGrad(s1D, c4, dPdxy1, dPdxy1); texel += textureProjGrad(s1D, f16c4, f16dPdxy1, f16dPdxy1); texel += textureProjGrad(s2D, c3, dPdxy2, dPdxy2); texel += textureProjGrad(s2D, f16c3, f16dPdxy2, f16dPdxy2); texel += textureProjGrad(s2D, c4, dPdxy2, dPdxy2); texel += textureProjGrad(s2D, f16c4, f16dPdxy2, f16dPdxy2); texel += textureProjGrad(s3D, c4, dPdxy3, dPdxy3); texel += textureProjGrad(s3D, f16c4, f16dPdxy3, f16dPdxy3); texel += textureProjGrad(s2DRect, c3, dPdxy2, dPdxy2); texel += textureProjGrad(s2DRect, f16c3, f16dPdxy2, f16dPdxy2); texel += textureProjGrad(s2DRect, c4, dPdxy2, dPdxy2); texel += textureProjGrad(s2DRect, f16c4, f16dPdxy2, f16dPdxy2); texel.x += textureProjGrad(s2DRectShadow, c4, dPdxy2, dPdxy2); texel.x += textureProjGrad(s2DRectShadow, f16c3, compare, f16dPdxy2, f16dPdxy2); texel.x += textureProjGrad(s1DShadow, c4, dPdxy1, dPdxy1); texel.x += textureProjGrad(s1DShadow, f16c3, compare, f16dPdxy1, f16dPdxy1); texel.x += textureProjGrad(s2DShadow, c4, dPdxy2, dPdxy2); texel.x += textureProjGrad(s2DShadow, f16c3, compare, f16dPdxy2, f16dPdxy2); return texel; } f16vec4 testTextureProjGradoffset() { f16vec4 texel = f16vec4(0.0hf); texel += textureProjGradOffset(s1D, c2, dPdxy1, dPdxy1, offset1); texel += textureProjGradOffset(s1D, f16c2, f16dPdxy1, f16dPdxy1, offset1); texel += textureProjGradOffset(s1D, c4, dPdxy1, dPdxy1, offset1); texel += textureProjGradOffset(s1D, f16c4, f16dPdxy1, f16dPdxy1, offset1); texel += textureProjGradOffset(s2D, c3, dPdxy2, dPdxy2, offset2); texel += textureProjGradOffset(s2D, f16c3, f16dPdxy2, f16dPdxy2, offset2); texel += textureProjGradOffset(s2D, c4, dPdxy2, dPdxy2, offset2); texel += textureProjGradOffset(s2D, f16c4, f16dPdxy2, f16dPdxy2, offset2); texel += textureProjGradOffset(s2DRect, c3, dPdxy2, dPdxy2, offset2); texel += textureProjGradOffset(s2DRect, f16c3, f16dPdxy2, f16dPdxy2, offset2); texel += textureProjGradOffset(s2DRect, c4, dPdxy2, dPdxy2, offset2); texel += textureProjGradOffset(s2DRect, f16c4, f16dPdxy2, f16dPdxy2, offset2); texel.x += textureProjGradOffset(s2DRectShadow, c4, dPdxy2, dPdxy2, offset2); texel.x += textureProjGradOffset(s2DRectShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2); texel += textureProjGradOffset(s3D, c4, dPdxy3, dPdxy3, offset3); texel += textureProjGradOffset(s3D, f16c4, f16dPdxy3, f16dPdxy3, offset3); texel.x += textureProjGradOffset(s1DShadow, c4, dPdxy1, dPdxy1, offset1); texel.x += textureProjGradOffset(s1DShadow, f16c3, compare, f16dPdxy1, f16dPdxy1, offset1); texel.x += textureProjGradOffset(s2DShadow, c4, dPdxy2, dPdxy2, offset2); texel.x += textureProjGradOffset(s2DShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2); return texel; } f16vec4 testTextureGather() { f16vec4 texel = f16vec4(0.0hf); texel += textureGather(s2D, c2, 0); texel += textureGather(s2D, f16c2, 0, f16bias); texel += textureGather(s2DArray, c3, 0); texel += textureGather(s2DArray, f16c3, 0, f16bias); texel += textureGather(sCube, c3, 0); texel += textureGather(sCube, f16c3, 0, f16bias); texel += textureGather(sCubeArray, c4, 0); texel += textureGather(sCubeArray, f16c4, 0, f16bias); texel += textureGather(s2DRect, c2, 0); texel += textureGather(s2DRect, f16c2, 0); texel += textureGather(s2DShadow, c2, compare); texel += textureGather(s2DShadow, f16c2, compare); texel += textureGather(s2DArrayShadow, c3, compare); texel += textureGather(s2DArrayShadow, f16c3, compare); texel += textureGather(sCubeShadow, c3, compare); texel += textureGather(sCubeShadow, f16c3, compare); texel += textureGather(sCubeArrayShadow, c4, compare); texel += textureGather(sCubeArrayShadow, f16c4, compare); texel += textureGather(s2DRectShadow, c2, compare); texel += textureGather(s2DRectShadow, f16c2, compare); return texel; } f16vec4 testTextureGatherOffset() { f16vec4 texel = f16vec4(0.0hf); texel += textureGatherOffset(s2D, c2, offset2, 0); texel += textureGatherOffset(s2D, f16c2, offset2, 0, f16bias); texel += textureGatherOffset(s2DArray, c3, offset2, 0); texel += textureGatherOffset(s2DArray, f16c3, offset2, 0, f16bias); texel += textureGatherOffset(s2DRect, c2, offset2, 0); texel += textureGatherOffset(s2DRect, f16c2, offset2, 0); texel += textureGatherOffset(s2DShadow, c2, compare, offset2); texel += textureGatherOffset(s2DShadow, f16c2, compare, offset2); texel += textureGatherOffset(s2DArrayShadow, c3, compare, offset2); texel += textureGatherOffset(s2DArrayShadow, f16c3, compare, offset2); texel += textureGatherOffset(s2DRectShadow, c2, compare, offset2); texel += textureGatherOffset(s2DRectShadow, f16c2, compare, offset2); return texel; } f16vec4 testTextureGatherOffsets() { f16vec4 texel = f16vec4(0.0hf); texel += textureGatherOffsets(s2D, c2, offsets, 0); texel += textureGatherOffsets(s2D, f16c2, offsets, 0, f16bias); texel += textureGatherOffsets(s2DArray, c3, offsets, 0); texel += textureGatherOffsets(s2DArray, f16c3, offsets, 0, f16bias); texel += textureGatherOffsets(s2DRect, c2, offsets, 0); texel += textureGatherOffsets(s2DRect, f16c2, offsets, 0); texel += textureGatherOffsets(s2DShadow, c2, compare, offsets); texel += textureGatherOffsets(s2DShadow, f16c2, compare, offsets); texel += textureGatherOffsets(s2DArrayShadow, c3, compare, offsets); texel += textureGatherOffsets(s2DArrayShadow, f16c3, compare, offsets); texel += textureGatherOffsets(s2DRectShadow, c2, compare, offsets); texel += textureGatherOffsets(s2DRectShadow, f16c2, compare, offsets); return texel; } f16vec4 testTextureGatherLod() { f16vec4 texel = f16vec4(0.0hf); texel += textureGatherLodAMD(s2D, c2, lod, 0); texel += textureGatherLodAMD(s2D, f16c2, f16lod, 0); texel += textureGatherLodAMD(s2DArray, c3, lod, 0); texel += textureGatherLodAMD(s2DArray, f16c3, f16lod, 0); texel += textureGatherLodAMD(sCube, c3, lod, 0); texel += textureGatherLodAMD(sCube, f16c3, f16lod, 0); texel += textureGatherLodAMD(sCubeArray, c4, lod, 0); texel += textureGatherLodAMD(sCubeArray, f16c4, f16lod, 0); return texel; } f16vec4 testTextureGatherLodOffset() { f16vec4 texel = f16vec4(0.0hf); texel += textureGatherLodOffsetAMD(s2D, c2, lod, offset2, 0); texel += textureGatherLodOffsetAMD(s2D, f16c2, f16lod, offset2, 0); texel += textureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, 0); texel += textureGatherLodOffsetAMD(s2DArray, f16c3, f16lod, offset2, 0); return texel; } f16vec4 testTextureGatherLodOffsets() { f16vec4 texel = f16vec4(0.0hf); texel += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets, 0); texel += textureGatherLodOffsetsAMD(s2D, f16c2, f16lod, offsets, 0); texel += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 0); texel += textureGatherLodOffsetsAMD(s2DArray, f16c3, f16lod, offsets, 0); return texel; } ivec4 testTextureSize() { ivec4 size = ivec4(0); size.x += textureSize(s1D, int(lod)); size.xy += textureSize(s2D, int(lod)); size.xyz += textureSize(s3D, int(lod)); size.xy += textureSize(sCube, int(lod)); size.x += textureSize(s1DShadow, int(lod)); size.xy += textureSize(s2DShadow, int(lod)); size.xy += textureSize(sCubeShadow, int(lod)); size.xyz += textureSize(sCubeArray, int(lod)); size.xyz += textureSize(sCubeArrayShadow, int(lod)); size.xy += textureSize(s2DRect); size.xy += textureSize(s2DRectShadow); size.xy += textureSize(s1DArray, int(lod)); size.xyz += textureSize(s2DArray, int(lod)); size.xy += textureSize(s1DArrayShadow, int(lod)); size.xyz += textureSize(s2DArrayShadow, int(lod)); size.x += textureSize(sBuffer); size.xy += textureSize(s2DMS); size.xyz += textureSize(s2DMSArray); return size; } vec2 testTextureQueryLod() { vec2 lod = vec2(0.0); lod += textureQueryLod(s1D, c1); lod += textureQueryLod(s1D, f16c1); lod += textureQueryLod(s2D, c2); lod += textureQueryLod(s2D, f16c2); lod += textureQueryLod(s3D, c3); lod += textureQueryLod(s3D, f16c3); lod += textureQueryLod(sCube, c3); lod += textureQueryLod(sCube, f16c3); lod += textureQueryLod(s1DArray, c1); lod += textureQueryLod(s1DArray, f16c1); lod += textureQueryLod(s2DArray, c2); lod += textureQueryLod(s2DArray, f16c2); lod += textureQueryLod(sCubeArray, c3); lod += textureQueryLod(sCubeArray, f16c3); lod += textureQueryLod(s1DShadow, c1); lod += textureQueryLod(s1DShadow, f16c1); lod += textureQueryLod(s2DShadow, c2); lod += textureQueryLod(s2DShadow, f16c2); lod += textureQueryLod(sCubeArrayShadow, c3); lod += textureQueryLod(sCubeArrayShadow, f16c3); lod += textureQueryLod(s1DArrayShadow, c1); lod += textureQueryLod(s1DArrayShadow, f16c1); lod += textureQueryLod(s2DArrayShadow, c2); lod += textureQueryLod(s2DArrayShadow, f16c2); lod += textureQueryLod(sCubeArrayShadow, c3); lod += textureQueryLod(sCubeArrayShadow, f16c3); return lod; } int testTextureQueryLevels() { int levels = 0; levels += textureQueryLevels(s1D); levels += textureQueryLevels(s2D); levels += textureQueryLevels(s3D); levels += textureQueryLevels(sCube); levels += textureQueryLevels(s1DShadow); levels += textureQueryLevels(s2DShadow); levels += textureQueryLevels(sCubeShadow); levels += textureQueryLevels(sCubeArray); levels += textureQueryLevels(sCubeArrayShadow); levels += textureQueryLevels(s1DArray); levels += textureQueryLevels(s2DArray); levels += textureQueryLevels(s1DArrayShadow); levels += textureQueryLevels(s2DArrayShadow); return levels; } int testTextureSamples() { int samples = 0; samples += textureSamples(s2DMS); samples += textureSamples(s2DMSArray); return samples; } f16vec4 testImageLoad() { f16vec4 texel = f16vec4(0.0hf); texel += imageLoad(i1D, int(c1)); texel += imageLoad(i2D, ivec2(c2)); texel += imageLoad(i3D, ivec3(c3)); texel += imageLoad(i2DRect, ivec2(c2)); texel += imageLoad(iCube, ivec3(c3)); texel += imageLoad(iBuffer, int(c1)); texel += imageLoad(i1DArray, ivec2(c2)); texel += imageLoad(i2DArray, ivec3(c3)); texel += imageLoad(iCubeArray, ivec3(c3)); texel += imageLoad(i2DMS, ivec2(c2), 1); texel += imageLoad(i2DMSArray, ivec3(c3), 1); return texel; } void testImageStore(f16vec4 data) { imageStore(i1D, int(c1), data); imageStore(i2D, ivec2(c2), data); imageStore(i3D, ivec3(c3), data); imageStore(i2DRect, ivec2(c2), data); imageStore(iCube, ivec3(c3), data); imageStore(iBuffer, int(c1), data); imageStore(i1DArray, ivec2(c2), data); imageStore(i2DArray, ivec3(c3), data); imageStore(iCubeArray, ivec3(c3), data); imageStore(i2DMS, ivec2(c2), 1, data); imageStore(i2DMSArray, ivec3(c3), 1, data); } f16vec4 testSparseTexture() { f16vec4 texel = f16vec4(0.0hf); sparseTextureARB(s2D, c2, texel); sparseTextureARB(s2D, f16c2, texel, f16bias); sparseTextureARB(s3D, c3, texel); sparseTextureARB(s3D, f16c3, texel, f16bias); sparseTextureARB(sCube, c3, texel); sparseTextureARB(sCube, f16c3, texel, f16bias); sparseTextureARB(s2DShadow, c3, texel.x); sparseTextureARB(s2DShadow, f16c2, compare, texel.x, f16bias); sparseTextureARB(sCubeShadow, c4, texel.x); sparseTextureARB(sCubeShadow, f16c3, compare, texel.x, f16bias); sparseTextureARB(s2DArray, c3, texel); sparseTextureARB(s2DArray, f16c3, texel, f16bias); sparseTextureARB(sCubeArray, c4, texel); sparseTextureARB(sCubeArray, f16c4, texel, f16bias); sparseTextureARB(s2DArrayShadow, c4, texel.x); sparseTextureARB(s2DArrayShadow, f16c3, compare, texel.x); sparseTextureARB(s2DRect, c2, texel); sparseTextureARB(s2DRect, f16c2, texel); sparseTextureARB(s2DRectShadow, c3, texel.x); sparseTextureARB(s2DRectShadow, f16c2, compare, texel.x); sparseTextureARB(sCubeArrayShadow, c4, compare, texel.x); sparseTextureARB(sCubeArrayShadow, f16c4, compare, texel.x); return texel; } f16vec4 testSparseTextureLod() { f16vec4 texel = f16vec4(0.0hf); sparseTextureLodARB(s2D, c2, lod, texel); sparseTextureLodARB(s2D, f16c2, f16lod, texel); sparseTextureLodARB(s3D, c3, lod, texel); sparseTextureLodARB(s3D, f16c3, f16lod, texel); sparseTextureLodARB(sCube, c3, lod, texel); sparseTextureLodARB(sCube, f16c3, f16lod, texel); sparseTextureLodARB(s2DShadow, c3, lod, texel.x); sparseTextureLodARB(s2DShadow, f16c2, compare, f16lod, texel.x); sparseTextureLodARB(s2DArray, c3, lod, texel); sparseTextureLodARB(s2DArray, f16c3, f16lod, texel); sparseTextureLodARB(sCubeArray, c4, lod, texel); sparseTextureLodARB(sCubeArray, f16c4, f16lod, texel); return texel; } f16vec4 testSparseTextureOffset() { f16vec4 texel = f16vec4(0.0hf); sparseTextureOffsetARB(s2D, c2, offset2, texel); sparseTextureOffsetARB(s2D, f16c2, offset2, texel, f16bias); sparseTextureOffsetARB(s3D, c3, offset3, texel); sparseTextureOffsetARB(s3D, f16c3, offset3, texel, f16bias); sparseTextureOffsetARB(s2DRect, c2, offset2, texel); sparseTextureOffsetARB(s2DRect, f16c2, offset2, texel); sparseTextureOffsetARB(s2DRectShadow, c3, offset2, texel.x); sparseTextureOffsetARB(s2DRectShadow, f16c2, compare, offset2, texel.x); sparseTextureOffsetARB(s2DShadow, c3, offset2, texel.x); sparseTextureOffsetARB(s2DShadow, f16c2, compare, offset2, texel.x, f16bias); sparseTextureOffsetARB(s2DArray, c3, offset2, texel); sparseTextureOffsetARB(s2DArray, f16c3, offset2, texel, f16bias); sparseTextureOffsetARB(s2DArrayShadow, c4, offset2, texel.x); sparseTextureOffsetARB(s2DArrayShadow, f16c3, compare, offset2, texel.x); return texel; } f16vec4 testSparseTextureLodOffset() { f16vec4 texel = f16vec4(0.0hf); sparseTextureLodOffsetARB(s2D, c2, lod, offset2, texel); sparseTextureLodOffsetARB(s2D, f16c2, f16lod, offset2, texel); sparseTextureLodOffsetARB(s3D, c3, lod, offset3, texel); sparseTextureLodOffsetARB(s3D, f16c3, f16lod, offset3, texel); sparseTextureLodOffsetARB(s2DShadow, c3, lod, offset2, texel.x); sparseTextureLodOffsetARB(s2DShadow, f16c2, compare, f16lod, offset2, texel.x); sparseTextureLodOffsetARB(s2DArray, c3, lod, offset2, texel); sparseTextureLodOffsetARB(s2DArray, f16c3, f16lod, offset2, texel); return texel; } f16vec4 testSparseTextureGrad() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGradARB(s2D, c2, dPdxy2, dPdxy2, texel); sparseTextureGradARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, texel); sparseTextureGradARB(s3D, c3, dPdxy3, dPdxy3, texel); sparseTextureGradARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, texel); sparseTextureGradARB(sCube, c3, dPdxy3, dPdxy3, texel); sparseTextureGradARB(sCube, f16c3, f16dPdxy3, f16dPdxy3, texel); sparseTextureGradARB(s2DRect, c2, dPdxy2, dPdxy2, texel); sparseTextureGradARB(s2DRect, f16c2, f16dPdxy2, f16dPdxy2, texel); sparseTextureGradARB(s2DRectShadow, c3, dPdxy2, dPdxy2, texel.x); sparseTextureGradARB(s2DRectShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, texel.x); sparseTextureGradARB(s2DShadow, c3, dPdxy2, dPdxy2, texel.x); sparseTextureGradARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, texel.x); sparseTextureGradARB(sCubeShadow, c4, dPdxy3, dPdxy3, texel.x); sparseTextureGradARB(sCubeShadow, f16c3, compare, f16dPdxy3, f16dPdxy3, texel.x); sparseTextureGradARB(s2DArray, c3, dPdxy2, dPdxy2, texel); sparseTextureGradARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, texel); sparseTextureGradARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, texel.x); sparseTextureGradARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, texel.x); sparseTextureGradARB(sCubeArray, c4, dPdxy3, dPdxy3, texel); sparseTextureGradARB(sCubeArray, f16c4, f16dPdxy3, f16dPdxy3, texel); return texel; } f16vec4 testSparseTextureGradOffset() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGradOffsetARB(s2D, c2, dPdxy2, dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s3D, c3, dPdxy3, dPdxy3, offset3, texel); sparseTextureGradOffsetARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, offset3, texel); sparseTextureGradOffsetARB(s2DRect, c2, dPdxy2, dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s2DRect, f16c2, f16dPdxy2, f16dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2, texel.x); sparseTextureGradOffsetARB(s2DRectShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2, texel.x); sparseTextureGradOffsetARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, texel.x); sparseTextureGradOffsetARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2, texel.x); sparseTextureGradOffsetARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, texel.x); sparseTextureGradOffsetARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2, texel.x); return texel; } f16vec4 testSparseTexelFetch() { f16vec4 texel = f16vec4(0.0hf); sparseTexelFetchARB(s2D, ivec2(c2), int(lod), texel); sparseTexelFetchARB(s3D, ivec3(c3), int(lod), texel); sparseTexelFetchARB(s2DRect, ivec2(c2), texel); sparseTexelFetchARB(s2DArray, ivec3(c3), int(lod), texel); sparseTexelFetchARB(s2DMS, ivec2(c2), 1, texel); sparseTexelFetchARB(s2DMSArray, ivec3(c3), 2, texel); return texel; } f16vec4 testSparseTexelFetchOffset() { f16vec4 texel = f16vec4(0.0hf); sparseTexelFetchOffsetARB(s2D, ivec2(c2), int(lod), offset2, texel); sparseTexelFetchOffsetARB(s3D, ivec3(c3), int(lod), offset3, texel); sparseTexelFetchOffsetARB(s2DRect, ivec2(c2), offset2, texel); sparseTexelFetchOffsetARB(s2DArray, ivec3(c3), int(lod), offset2, texel); return texel; } f16vec4 testSparseTextureGather() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGatherARB(s2D, c2, texel, 0); sparseTextureGatherARB(s2D, f16c2, texel, 0, f16bias); sparseTextureGatherARB(s2DArray, c3, texel, 0); sparseTextureGatherARB(s2DArray, f16c3, texel, 0, f16bias); sparseTextureGatherARB(sCube, c3, texel, 0); sparseTextureGatherARB(sCube, f16c3, texel, 0, f16bias); sparseTextureGatherARB(sCubeArray, c4, texel, 0); sparseTextureGatherARB(sCubeArray, f16c4, texel, 0, f16bias); sparseTextureGatherARB(s2DRect, c2, texel, 0); sparseTextureGatherARB(s2DRect, f16c2, texel, 0); sparseTextureGatherARB(s2DShadow, c2, compare, texel); sparseTextureGatherARB(s2DShadow, f16c2, compare, texel); sparseTextureGatherARB(s2DArrayShadow, c3, compare, texel); sparseTextureGatherARB(s2DArrayShadow, f16c3, compare, texel); sparseTextureGatherARB(sCubeShadow, c3, compare, texel); sparseTextureGatherARB(sCubeShadow, f16c3, compare, texel); sparseTextureGatherARB(sCubeArrayShadow, c4, compare, texel); sparseTextureGatherARB(sCubeArrayShadow, f16c4, compare, texel); sparseTextureGatherARB(s2DRectShadow, c2, compare, texel); sparseTextureGatherARB(s2DRectShadow, f16c2, compare, texel); return texel; } f16vec4 testSparseTextureGatherOffset() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGatherOffsetARB(s2D, c2, offset2, texel, 0); sparseTextureGatherOffsetARB(s2D, f16c2, offset2, texel, 0, f16bias); sparseTextureGatherOffsetARB(s2DArray, c3, offset2, texel, 0); sparseTextureGatherOffsetARB(s2DArray, f16c3, offset2, texel, 0, f16bias); sparseTextureGatherOffsetARB(s2DRect, c2, offset2, texel, 0); sparseTextureGatherOffsetARB(s2DRect, f16c2, offset2, texel, 0); sparseTextureGatherOffsetARB(s2DShadow, c2, compare, offset2, texel); sparseTextureGatherOffsetARB(s2DShadow, f16c2, compare, offset2, texel); sparseTextureGatherOffsetARB(s2DArrayShadow, c3, compare, offset2, texel); sparseTextureGatherOffsetARB(s2DArrayShadow, f16c3, compare, offset2, texel); sparseTextureGatherOffsetARB(s2DRectShadow, c2, compare, offset2, texel); sparseTextureGatherOffsetARB(s2DRectShadow, f16c2, compare, offset2, texel); return texel; } f16vec4 testSparseTextureGatherOffsets() { f16vec4 texel = f16vec4(0.0hf); const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel, 0); sparseTextureGatherOffsetsARB(s2D, f16c2, constOffsets, texel, 0, f16bias); sparseTextureGatherOffsetsARB(s2DArray, c3, constOffsets, texel, 0); sparseTextureGatherOffsetsARB(s2DArray, f16c3, constOffsets, texel, 0, f16bias); sparseTextureGatherOffsetsARB(s2DRect, c2, constOffsets, texel, 0); sparseTextureGatherOffsetsARB(s2DRect, f16c2, constOffsets, texel, 0); sparseTextureGatherOffsetsARB(s2DShadow, c2, compare, constOffsets, texel); sparseTextureGatherOffsetsARB(s2DShadow, f16c2, compare, constOffsets, texel); sparseTextureGatherOffsetsARB(s2DArrayShadow, c3, compare, constOffsets, texel); sparseTextureGatherOffsetsARB(s2DArrayShadow, f16c3, compare, constOffsets, texel); sparseTextureGatherOffsetsARB(s2DRectShadow, c2, compare, constOffsets, texel); sparseTextureGatherOffsetsARB(s2DRectShadow, f16c2, compare, constOffsets, texel); return texel; } f16vec4 testSparseTextureGatherLod() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGatherLodAMD(s2D, c2, lod, texel, 0); sparseTextureGatherLodAMD(s2D, f16c2, f16lod, texel, 0); sparseTextureGatherLodAMD(s2DArray, c3, lod, texel, 0); sparseTextureGatherLodAMD(s2DArray, f16c3, f16lod, texel, 0); sparseTextureGatherLodAMD(sCube, c3, lod, texel, 0); sparseTextureGatherLodAMD(sCube, f16c3, f16lod, texel, 0); sparseTextureGatherLodAMD(sCubeArray, c4, lod, texel, 0); sparseTextureGatherLodAMD(sCubeArray, f16c4, f16lod, texel, 0); return texel; } f16vec4 testSparseTextureGatherLodOffset() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offset2, texel, 0); sparseTextureGatherLodOffsetAMD(s2D, f16c2, f16lod, offset2, texel, 0); sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, texel, 0); sparseTextureGatherLodOffsetAMD(s2DArray, f16c3, f16lod, offset2, texel, 0); return texel; } f16vec4 testSparseTextureGatherLodOffsets() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, texel, 0); sparseTextureGatherLodOffsetsAMD(s2D, f16c2, f16lod, offsets, texel, 0); sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, texel, 0); sparseTextureGatherLodOffsetsAMD(s2DArray, f16c3, f16lod, offsets, texel, 0); return texel; } f16vec4 testSparseImageLoad() { f16vec4 texel = f16vec4(0.0hf); sparseImageLoadARB(i2D, ivec2(c2), texel); sparseImageLoadARB(i3D, ivec3(c3), texel); sparseImageLoadARB(i2DRect, ivec2(c2), texel); sparseImageLoadARB(iCube, ivec3(c3), texel); sparseImageLoadARB(i2DArray, ivec3(c3), texel); sparseImageLoadARB(iCubeArray, ivec3(c3), texel); sparseImageLoadARB(i2DMS, ivec2(c2), 1, texel); sparseImageLoadARB(i2DMSArray, ivec3(c3), 2, texel); return texel; } f16vec4 testSparseTextureClamp() { f16vec4 texel = f16vec4(0.0hf); sparseTextureClampARB(s2D, c2, lodClamp, texel); sparseTextureClampARB(s2D, f16c2, f16lodClamp, texel, f16bias); sparseTextureClampARB(s3D, c3, lodClamp, texel); sparseTextureClampARB(s3D, f16c3, f16lodClamp, texel, f16bias); sparseTextureClampARB(sCube, c3, lodClamp, texel); sparseTextureClampARB(sCube, f16c3, f16lodClamp, texel, f16bias); sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x); sparseTextureClampARB(s2DShadow, f16c2, compare, f16lodClamp, texel.x, f16bias); sparseTextureClampARB(sCubeShadow, c4, lodClamp, texel.x); sparseTextureClampARB(sCubeShadow, f16c3, compare, f16lodClamp, texel.x, f16bias); sparseTextureClampARB(s2DArray, c3, lodClamp, texel); sparseTextureClampARB(s2DArray, f16c3, f16lodClamp, texel, f16bias); sparseTextureClampARB(sCubeArray, c4, lodClamp, texel); sparseTextureClampARB(sCubeArray, f16c4, f16lodClamp, texel, f16bias); sparseTextureClampARB(s2DArrayShadow, c4, lodClamp, texel.x); sparseTextureClampARB(s2DArrayShadow, f16c3, compare, f16lodClamp, texel.x); sparseTextureClampARB(sCubeArrayShadow, c4, compare, lodClamp, texel.x); sparseTextureClampARB(sCubeArrayShadow, f16c4, compare, f16lodClamp, texel.x); return texel; } f16vec4 testTextureClamp() { f16vec4 texel = f16vec4(0.0hf); texel += textureClampARB(s1D, c1, lodClamp); texel += textureClampARB(s1D, f16c1, f16lodClamp, f16bias); texel += textureClampARB(s2D, c2, lodClamp); texel += textureClampARB(s2D, f16c2, f16lodClamp, f16bias); texel += textureClampARB(s3D, c3, lodClamp); texel += textureClampARB(s3D, f16c3, f16lodClamp, f16bias); texel += textureClampARB(sCube, c3, lodClamp); texel += textureClampARB(sCube, f16c3, f16lodClamp, f16bias); texel.x += textureClampARB(s1DShadow, c3, lodClamp); texel.x += textureClampARB(s1DShadow, f16c2, compare, f16lodClamp, f16bias); texel.x += textureClampARB(s2DShadow, c3, lodClamp); texel.x += textureClampARB(s2DShadow, f16c2, compare, f16lodClamp, f16bias); texel.x += textureClampARB(sCubeShadow, c4, lodClamp); texel.x += textureClampARB(sCubeShadow, f16c3, compare, f16lodClamp, f16bias); texel += textureClampARB(s1DArray, c2, lodClamp); texel += textureClampARB(s1DArray, f16c2, f16lodClamp, f16bias); texel += textureClampARB(s2DArray, c3, lodClamp); texel += textureClampARB(s2DArray, f16c3, f16lodClamp, f16bias); texel += textureClampARB(sCubeArray, c4, lodClamp); texel += textureClampARB(sCubeArray, f16c4, f16lodClamp, f16bias); texel.x += textureClampARB(s1DArrayShadow, c3, lodClamp); texel.x += textureClampARB(s1DArrayShadow, f16c2, compare, f16lodClamp, f16bias); texel.x += textureClampARB(s2DArrayShadow, c4, lodClamp); texel.x += textureClampARB(s2DArrayShadow, f16c3, compare, f16lodClamp); texel.x += textureClampARB(sCubeArrayShadow, c4, compare, lodClamp); texel.x += textureClampARB(sCubeArrayShadow, f16c4, compare, f16lodClamp); return texel; } f16vec4 testSparseTextureOffsetClamp() { f16vec4 texel = f16vec4(0.0hf); sparseTextureOffsetClampARB(s2D, c2, offset2, lodClamp, texel); sparseTextureOffsetClampARB(s2D, f16c2, offset2, f16lodClamp, texel, f16bias); sparseTextureOffsetClampARB(s3D, c3, offset3, lodClamp, texel); sparseTextureOffsetClampARB(s3D, f16c3, offset3, f16lodClamp, texel, f16bias); sparseTextureOffsetClampARB(s2DShadow, c3, offset2, lodClamp, texel.x); sparseTextureOffsetClampARB(s2DShadow, f16c2, compare, offset2, f16lodClamp, texel.x, f16bias); sparseTextureOffsetClampARB(s2DArray, c3, offset2, lodClamp, texel); sparseTextureOffsetClampARB(s2DArray, f16c3, offset2, f16lodClamp, texel, f16bias); sparseTextureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp, texel.x); sparseTextureOffsetClampARB(s2DArrayShadow, f16c3, compare, offset2, f16lodClamp, texel.x); return texel; } f16vec4 testTextureOffsetClamp() { f16vec4 texel = f16vec4(0.0hf); texel += textureOffsetClampARB(s1D, c1, offset1, lodClamp); texel += textureOffsetClampARB(s1D, f16c1, offset1, f16lodClamp, f16bias); texel += textureOffsetClampARB(s2D, c2, offset2, lodClamp); texel += textureOffsetClampARB(s2D, f16c2, offset2, f16lodClamp, f16bias); texel += textureOffsetClampARB(s3D, c3, offset3, lodClamp); texel += textureOffsetClampARB(s3D, f16c3, offset3, f16lodClamp, f16bias); texel.x += textureOffsetClampARB(s1DShadow, c3, offset1, lodClamp); texel.x += textureOffsetClampARB(s1DShadow, f16c2, compare, offset1, f16lodClamp, f16bias); texel.x += textureOffsetClampARB(s2DShadow, c3, offset2, lodClamp); texel.x += textureOffsetClampARB(s2DShadow, f16c2, compare, offset2, f16lodClamp, f16bias); texel += textureOffsetClampARB(s1DArray, c2, offset1, lodClamp); texel += textureOffsetClampARB(s1DArray, f16c2, offset1, f16lodClamp, f16bias); texel += textureOffsetClampARB(s2DArray, c3, offset2, lodClamp); texel += textureOffsetClampARB(s2DArray, f16c3, offset2, f16lodClamp, f16bias); texel.x += textureOffsetClampARB(s1DArrayShadow, c3, offset1, lodClamp); texel.x += textureOffsetClampARB(s1DArrayShadow, f16c2, compare, offset1, f16lodClamp, f16bias); texel.x += textureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp); texel.x += textureOffsetClampARB(s2DArrayShadow, f16c3, compare, offset2, f16lodClamp); return texel; } f16vec4 testSparseTextureGradClamp() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp, texel); sparseTextureGradClampARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, f16lodClamp, texel); sparseTextureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp, texel); sparseTextureGradClampARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, f16lodClamp, texel); sparseTextureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp, texel); sparseTextureGradClampARB(sCube, f16c3, f16dPdxy3, f16dPdxy3, f16lodClamp, texel); sparseTextureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp, texel.x); sparseTextureGradClampARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, f16lodClamp, texel.x); sparseTextureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp, texel.x); sparseTextureGradClampARB(sCubeShadow, f16c3, compare, f16dPdxy3, f16dPdxy3, f16lodClamp, texel.x); sparseTextureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp, texel); sparseTextureGradClampARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, f16lodClamp, texel); sparseTextureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp, texel.x); sparseTextureGradClampARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, f16lodClamp, texel.x); sparseTextureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp, texel); sparseTextureGradClampARB(sCubeArray, f16c4, f16dPdxy3, f16dPdxy3, f16lodClamp, texel); return texel; } f16vec4 testTextureGradClamp() { f16vec4 texel = f16vec4(0.0hf); texel += textureGradClampARB(s1D, c1, dPdxy1, dPdxy1, lodClamp); texel += textureGradClampARB(s1D, f16c1, f16dPdxy1, f16dPdxy1, f16lodClamp); texel += textureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp); texel += textureGradClampARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, f16lodClamp); texel += textureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp); texel += textureGradClampARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, f16lodClamp); texel += textureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp); texel += textureGradClampARB(sCube, f16c3, f16dPdxy3, f16dPdxy3, f16lodClamp); texel.x += textureGradClampARB(s1DShadow, c3, dPdxy1, dPdxy1, lodClamp); texel.x += textureGradClampARB(s1DShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, f16lodClamp); texel.x += textureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp); texel.x += textureGradClampARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, f16lodClamp); texel.x += textureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp); texel.x += textureGradClampARB(sCubeShadow, f16c3, compare, f16dPdxy3, f16dPdxy3, f16lodClamp); texel += textureGradClampARB(s1DArray, c2, dPdxy1, dPdxy1, lodClamp); texel += textureGradClampARB(s1DArray, f16c2, f16dPdxy1, f16dPdxy1, f16lodClamp); texel += textureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp); texel += textureGradClampARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, f16lodClamp); texel.x += textureGradClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, lodClamp); texel.x += textureGradClampARB(s1DArrayShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, f16lodClamp); texel.x += textureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp); texel.x += textureGradClampARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, f16lodClamp); texel += textureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp); texel += textureGradClampARB(sCubeArray, f16c4, f16dPdxy3, f16dPdxy3, f16lodClamp); return texel; } f16vec4 testSparseTextureGradOffsetClamp() { f16vec4 texel = f16vec4(0.0hf); sparseTextureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp, texel); sparseTextureGradOffsetClampARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp, texel); sparseTextureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp, texel); sparseTextureGradOffsetClampARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, offset3, f16lodClamp, texel); sparseTextureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel.x); sparseTextureGradOffsetClampARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp, texel.x); sparseTextureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel); sparseTextureGradOffsetClampARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp, texel); sparseTextureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp, texel.x); sparseTextureGradOffsetClampARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp, texel.x); return texel; } f16vec4 testTextureGradOffsetClamp() { f16vec4 texel = f16vec4(0.0hf); texel += textureGradOffsetClampARB(s1D, c1, dPdxy1, dPdxy1, offset1, lodClamp); texel += textureGradOffsetClampARB(s1D, f16c1, f16dPdxy1, f16dPdxy1, offset1, f16lodClamp); texel += textureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp); texel += textureGradOffsetClampARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp); texel += textureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp); texel += textureGradOffsetClampARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, offset3, f16lodClamp); texel.x += textureGradOffsetClampARB(s1DShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp); texel.x += textureGradOffsetClampARB(s1DShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, offset1, f16lodClamp); texel.x += textureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp); texel.x += textureGradOffsetClampARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp); texel += textureGradOffsetClampARB(s1DArray, c2, dPdxy1, dPdxy1, offset1, lodClamp); texel += textureGradOffsetClampARB(s1DArray, f16c2, f16dPdxy1, f16dPdxy1, offset1, f16lodClamp); texel += textureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp); texel += textureGradOffsetClampARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp); texel.x += textureGradOffsetClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp); texel.x += textureGradOffsetClampARB(s1DArrayShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, offset1, f16lodClamp); texel.x += textureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp); texel.x += textureGradOffsetClampARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp); return texel; } f16vec4 testCombinedTextureSampler() { f16vec4 texel = f16vec4(0.0hf); texel += texture(f16sampler1D(t1D, s), c1); texel += texture(f16sampler1D(t1D, s), f16c1, f16bias); texel += texture(f16sampler2D(t2D, s), c2); texel += texture(f16sampler2D(t2D, s), f16c2, f16bias); texel += texture(f16sampler3D(t3D, s), c3); texel += texture(f16sampler3D(t3D, s), f16c3, f16bias); texel += texture(f16samplerCube(tCube, s), c3); texel += texture(f16samplerCube(tCube, s), f16c3, f16bias); texel.x += texture(f16sampler1DShadow(t1D, sShadow), c3); texel.x += texture(f16sampler1DShadow(t1D, sShadow), f16c2, compare, f16bias); texel.x += texture(f16sampler2DShadow(t2D, sShadow), c3); texel.x += texture(f16sampler2DShadow(t2D, sShadow), f16c2, compare, f16bias); texel.x += texture(f16samplerCubeShadow(tCube, sShadow), c4); texel.x += texture(f16samplerCubeShadow(tCube, sShadow), f16c3, compare, f16bias); texel += texture(f16sampler1DArray(t1DArray, s), c2); texel += texture(f16sampler1DArray(t1DArray, s), f16c2, f16bias); texel += texture(f16sampler2DArray(t2DArray, s), c3); texel += texture(f16sampler2DArray(t2DArray, s), f16c3, f16bias); texel += texture(f16samplerCubeArray(tCubeArray, s), c4); texel += texture(f16samplerCubeArray(tCubeArray, s), f16c4, f16bias); texel.x += texture(f16sampler1DArrayShadow(t1DArray, sShadow), c3); texel.x += texture(f16sampler1DArrayShadow(t1DArray, sShadow), f16c2, compare, f16bias); texel.x += texture(f16sampler2DArrayShadow(t2DArray, sShadow), c4); texel.x += texture(f16sampler2DArrayShadow(t2DArray, sShadow), f16c3, compare); texel += texture(f16sampler2DRect(t2DRect, s), c2); texel += texture(f16sampler2DRect(t2DRect, s), f16c2); texel.x += texture(f16sampler2DRectShadow(t2DRect, sShadow), c3); texel.x += texture(f16sampler2DRectShadow(t2DRect, sShadow), f16c2, compare); texel.x += texture(f16samplerCubeArrayShadow(tCubeArray, sShadow), c4, compare); texel.x += texture(f16samplerCubeArrayShadow(tCubeArray, sShadow), f16c4, compare); return texel; } f16vec4 testSubpassLoad() { return subpassLoad(subpass) + subpassLoad(subpassMS, 2); } void main() { f16vec4 result = f16vec4(0.0hf); result += testTexture(); result += testTextureProj(); result += testTextureLod(); result += testTextureOffset(); result += testTextureLodOffset(); result += testTextureProjLodOffset(); result += testTexelFetch(); result += testTexelFetchOffset(); result += testTextureGrad(); result += testTextureGradOffset(); result += testTextureProjGrad(); result += testTextureProjGradoffset(); result += testTextureGather(); result += testTextureGatherOffset(); result += testTextureGatherOffsets(); result += testTextureGatherLod(); result += testTextureGatherLodOffset(); result += testTextureGatherLodOffsets(); result += f16vec4(testTextureSize()); result.xy += f16vec2(testTextureQueryLod()); result.x += float16_t(testTextureQueryLevels()); result.x += float16_t(testTextureSamples()); result += testImageLoad(); testImageStore(result); result += testSparseTexture(); result += testSparseTextureLod(); result += testSparseTextureOffset(); result += testSparseTextureLodOffset(); result += testSparseTextureGrad(); result += testSparseTextureGradOffset(); result += testSparseTexelFetch(); result += testSparseTexelFetchOffset(); result += testSparseTextureGather(); result += testSparseTextureGatherOffset(); result += testSparseTextureGatherOffsets(); result += testSparseTextureGatherLod(); result += testSparseTextureGatherLodOffset(); result += testSparseTextureGatherLodOffsets(); result += testSparseImageLoad(); result += testSparseTextureClamp(); result += testTextureClamp(); result += testSparseTextureOffsetClamp(); result += testTextureOffsetClamp(); result += testSparseTextureGrad(); result += testTextureGrad(); result += testSparseTextureGradOffsetClamp(); result += testTextureGradOffsetClamp(); result += testCombinedTextureSampler(); result += testSubpassLoad(); fragColor = result; } glslang-16.0.0/Test/spv.float16NoRelaxed.vert000066400000000000000000000006131506534232700207420ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/spv.float16convertonlyarith.comp000066400000000000000000000003441506534232700224520ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_explicit_arithmetic_types_float16 : require layout(local_size_x = 16, local_size_y = 16, local_size_z = 1) in; void main() { vec4 v = vec4(0.0); vec4(f16vec4(v)); }glslang-16.0.0/Test/spv.float16convertonlystorage.comp000066400000000000000000000003201506534232700230010ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_16bit_storage : require layout(local_size_x = 16, local_size_y = 16, local_size_z = 1) in; void main() { vec4 v = vec4(0.0); vec4(f16vec4(v)); }glslang-16.0.0/Test/spv.float32.frag000066400000000000000000000144151506534232700171020ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: require #extension GL_EXT_shader_explicit_arithmetic_types_int16: require #extension GL_EXT_shader_explicit_arithmetic_types_int32: require #extension GL_EXT_shader_explicit_arithmetic_types_int64: require #extension GL_EXT_shader_explicit_arithmetic_types_float16: require #extension GL_EXT_shader_explicit_arithmetic_types_float32: require #extension GL_EXT_shader_explicit_arithmetic_types_float64: require void main() { } // Single float literals void literal() { const float32_t f32c = 0.000001f; const f32vec2 f32cv = f32vec2(-0.25F, 0.03f); f32vec2 f32v; f32v.x = f32c; f32v += f32cv; } // Block memory layout struct S { float32_t x; f32vec2 y; f32vec3 z; }; layout(column_major, std140) uniform B1 { float32_t a; f32vec2 b; f32vec3 c; float32_t d[2]; f32mat2x3 e; f32mat2x3 f[2]; S g; S h[2]; }; // Specialization constant layout(constant_id = 100) const float16_t sf16 = 0.125hf; layout(constant_id = 101) const float32_t sf = 0.25; layout(constant_id = 102) const float64_t sd = 0.5lf; const float f16_to_f = float(sf16); const double f16_to_d = float(sf16); const float16_t f_to_f16 = float16_t(sf); const float16_t d_to_f16 = float16_t(sd); void operators() { float32_t f32; f32vec2 f32v; f32mat2x2 f32m; bool b; // Arithmetic f32v += f32v; f32v -= f32v; f32v *= f32v; f32v /= f32v; f32v++; f32v--; ++f32m; --f32m; f32v = -f32v; f32m = -f32m; f32 = f32v.x + f32v.y; f32 = f32v.x - f32v.y; f32 = f32v.x * f32v.y; f32 = f32v.x / f32v.y; // Relational b = (f32v.x != f32); b = (f32v.y == f32); b = (f32v.x > f32); b = (f32v.y < f32); b = (f32v.x >= f32); b = (f32v.y <= f32); // Vector/matrix operations f32v = f32v * f32; f32m = f32m * f32; f32v = f32m * f32v; f32v = f32v * f32m; f32m = f32m * f32m; } void typeCast() { bvec3 bv; f32vec3 f32v; f64vec3 f64v; i8vec3 i8v; u8vec3 u8v; i16vec3 i16v; u16vec3 u16v; i32vec3 i32v; u32vec3 u32v; i64vec3 i64v; u64vec3 u64v; f16vec3 f16v; f64v = f32v; // float32_t -> float64_t f32v = f32vec3(bv); // bool -> float32 bv = bvec3(f32v); // float32 -> bool f32v = f32vec3(f64v); // double -> float32 f64v = f64vec3(f32v); // float32 -> double f32v = f32vec3(f16v); // float16 -> float32 f16v = f16vec3(f32v); // float32 -> float16 i8v = i8vec3(f32v); // float32 -> int8 i16v = i16vec3(f32v); // float32 -> int16 i32v = i32vec3(f32v); // float32 -> int32 i64v = i64vec3(f32v); // float32 -> int64 u8v = u8vec3(f32v); // float32 -> uint8 u16v = u16vec3(f32v); // float32 -> uint16 u32v = u32vec3(f32v); // float32 -> uint32 u64v = u64vec3(f32v); // float32 -> uint64 } void builtinAngleTrigFuncs() { f32vec4 f32v1, f32v2; f32v2 = radians(f32v1); f32v2 = degrees(f32v1); f32v2 = sin(f32v1); f32v2 = cos(f32v1); f32v2 = tan(f32v1); f32v2 = asin(f32v1); f32v2 = acos(f32v1); f32v2 = atan(f32v1, f32v2); f32v2 = atan(f32v1); f32v2 = sinh(f32v1); f32v2 = cosh(f32v1); f32v2 = tanh(f32v1); f32v2 = asinh(f32v1); f32v2 = acosh(f32v1); f32v2 = atanh(f32v1); } void builtinExpFuncs() { f32vec2 f32v1, f32v2; f32v2 = pow(f32v1, f32v2); f32v2 = exp(f32v1); f32v2 = log(f32v1); f32v2 = exp2(f32v1); f32v2 = log2(f32v1); f32v2 = sqrt(f32v1); f32v2 = inversesqrt(f32v1); } void builtinCommonFuncs() { f32vec3 f32v1, f32v2, f32v3; float32_t f32; bool b; bvec3 bv; ivec3 iv; f32v2 = abs(f32v1); f32v2 = sign(f32v1); f32v2 = floor(f32v1); f32v2 = trunc(f32v1); f32v2 = round(f32v1); f32v2 = roundEven(f32v1); f32v2 = ceil(f32v1); f32v2 = fract(f32v1); f32v2 = mod(f32v1, f32v2); f32v2 = mod(f32v1, f32); f32v3 = modf(f32v1, f32v2); f32v3 = min(f32v1, f32v2); f32v3 = min(f32v1, f32); f32v3 = max(f32v1, f32v2); f32v3 = max(f32v1, f32); f32v3 = clamp(f32v1, f32, f32v2.x); f32v3 = clamp(f32v1, f32v2, f32vec3(f32)); f32v3 = mix(f32v1, f32v2, f32); f32v3 = mix(f32v1, f32v2, f32v3); f32v3 = mix(f32v1, f32v2, bv); f32v3 = step(f32v1, f32v2); f32v3 = step(f32, f32v3); f32v3 = smoothstep(f32v1, f32v2, f32v3); f32v3 = smoothstep(f32, f32v1.x, f32v2); b = isnan(f32); bv = isinf(f32v1); f32v3 = fma(f32v1, f32v2, f32v3); f32v2 = frexp(f32v1, iv); f32v2 = ldexp(f32v1, iv); } void builtinGeometryFuncs() { float32_t f32; f32vec3 f32v1, f32v2, f32v3; f32 = length(f32v1); f32 = distance(f32v1, f32v2); f32 = dot(f32v1, f32v2); f32v3 = cross(f32v1, f32v2); f32v2 = normalize(f32v1); f32v3 = faceforward(f32v1, f32v2, f32v3); f32v3 = reflect(f32v1, f32v2); f32v3 = refract(f32v1, f32v2, f32); } void builtinMatrixFuncs() { f32mat2x3 f32m1, f32m2, f32m3; f32mat3x2 f32m4; f32mat3 f32m5; f32mat4 f32m6, f32m7; f32vec3 f32v1; f32vec2 f32v2; float32_t f32; f32m3 = matrixCompMult(f32m1, f32m2); f32m1 = outerProduct(f32v1, f32v2); f32m4 = transpose(f32m1); f32 = determinant(f32m5); f32m6 = inverse(f32m7); } void builtinVecRelFuncs() { f32vec3 f32v1, f32v2; bvec3 bv; bv = lessThan(f32v1, f32v2); bv = lessThanEqual(f32v1, f32v2); bv = greaterThan(f32v1, f32v2); bv = greaterThanEqual(f32v1, f32v2); bv = equal(f32v1, f32v2); bv = notEqual(f32v1, f32v2); } in f32vec3 if32v; void builtinFragProcFuncs() { f32vec3 f32v; // Derivative f32v.x = dFdx(if32v.x); f32v.y = dFdy(if32v.y); f32v.xy = dFdxFine(if32v.xy); f32v.xy = dFdyFine(if32v.xy); f32v = dFdxCoarse(if32v); f32v = dFdxCoarse(if32v); f32v.x = fwidth(if32v.x); f32v.xy = fwidthFine(if32v.xy); f32v = fwidthCoarse(if32v); // Interpolation f32v.x = interpolateAtCentroid(if32v.x); f32v.xy = interpolateAtSample(if32v.xy, 1); f32v = interpolateAtOffset(if32v, f32vec2(0.5f)); } glslang-16.0.0/Test/spv.float64.frag000066400000000000000000000131711506534232700171050ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: require #extension GL_EXT_shader_explicit_arithmetic_types_int16: require #extension GL_EXT_shader_explicit_arithmetic_types_int32: require #extension GL_EXT_shader_explicit_arithmetic_types_int64: require #extension GL_EXT_shader_explicit_arithmetic_types_float16: require #extension GL_EXT_shader_explicit_arithmetic_types_float32: require #extension GL_EXT_shader_explicit_arithmetic_types_float64: require void main() { } // Single float literals void literal() { const float64_t f64c = 0.000001LF; const f64vec2 f64cv = f64vec2(-0.25lF, 0.03Lf); f64vec2 f64v; f64v.x = f64c; f64v += f64cv; } // Block memory layout struct S { float64_t x; f64vec2 y; f64vec3 z; }; layout(column_major, std140) uniform B1 { float64_t a; f64vec2 b; f64vec3 c; float64_t d[2]; f64mat2x3 e; f64mat2x3 f[2]; S g; S h[2]; }; // Specialization constant layout(constant_id = 100) const float16_t sf16 = 0.125hf; layout(constant_id = 101) const float32_t sf = 0.25; layout(constant_id = 102) const float64_t sd = 0.5lf; const float f16_to_f = float(sf16); const double f16_to_d = float(sf16); const float16_t f_to_f16 = float16_t(sf); const float16_t d_to_f16 = float16_t(sd); void operators() { float64_t f64; f64vec2 f64v; f64mat2x2 f64m; bool b; // Arithmetic f64v += f64v; f64v -= f64v; f64v *= f64v; f64v /= f64v; f64v++; f64v--; ++f64m; --f64m; f64v = -f64v; f64m = -f64m; f64 = f64v.x + f64v.y; f64 = f64v.x - f64v.y; f64 = f64v.x * f64v.y; f64 = f64v.x / f64v.y; // Relational b = (f64v.x != f64); b = (f64v.y == f64); b = (f64v.x > f64); b = (f64v.y < f64); b = (f64v.x >= f64); b = (f64v.y <= f64); // Vector/matrix operations f64v = f64v * f64; f64m = f64m * f64; f64v = f64m * f64v; f64v = f64v * f64m; f64m = f64m * f64m; } void typeCast() { bvec3 bv; f32vec3 f32v; f64vec3 f64v; i8vec3 i8v; u8vec3 u8v; i16vec3 i16v; u16vec3 u16v; i32vec3 i32v; u32vec3 u32v; i64vec3 i64v; u64vec3 u64v; f16vec3 f16v; f64v = f64vec3(bv); // bool -> float64 bv = bvec3(f64v); // float64 -> bool f64v = f64vec3(f16v); // float16 -> float64 f16v = f16vec3(f64v); // float64 -> float16 i8v = i8vec3(f64v); // float64 -> int8 i16v = i16vec3(f64v); // float64 -> int16 i32v = i32vec3(f64v); // float64 -> int32 i64v = i64vec3(f64v); // float64 -> int64 u8v = u8vec3(f64v); // float64 -> uint8 u16v = u16vec3(f64v); // float64 -> uint16 u32v = u32vec3(f64v); // float64 -> uint32 u64v = u64vec3(f64v); // float64 -> uint64 } // Trig, pow, exp and log are not supported for f64 void builtinTranscendentalFuncs() { f64vec2 f64v1, f64v2; f64v2 = sqrt(f64v1); f64v2 = inversesqrt(f64v1); } void builtinCommonFuncs() { f64vec3 f64v1, f64v2, f64v3; float64_t f64; bool b; bvec3 bv; ivec3 iv; f64v2 = abs(f64v1); f64v2 = sign(f64v1); f64v2 = floor(f64v1); f64v2 = trunc(f64v1); f64v2 = round(f64v1); f64v2 = roundEven(f64v1); f64v2 = ceil(f64v1); f64v2 = fract(f64v1); f64v2 = mod(f64v1, f64v2); f64v2 = mod(f64v1, f64); f64v3 = modf(f64v1, f64v2); f64v3 = min(f64v1, f64v2); f64v3 = min(f64v1, f64); f64v3 = max(f64v1, f64v2); f64v3 = max(f64v1, f64); f64v3 = clamp(f64v1, f64, f64v2.x); f64v3 = clamp(f64v1, f64v2, f64vec3(f64)); f64v3 = mix(f64v1, f64v2, f64); f64v3 = mix(f64v1, f64v2, f64v3); f64v3 = mix(f64v1, f64v2, bv); f64v3 = step(f64v1, f64v2); f64v3 = step(f64, f64v3); f64v3 = smoothstep(f64v1, f64v2, f64v3); f64v3 = smoothstep(f64, f64v1.x, f64v2); b = isnan(f64); bv = isinf(f64v1); f64v3 = fma(f64v1, f64v2, f64v3); f64v2 = frexp(f64v1, iv); f64v2 = ldexp(f64v1, iv); } void builtinGeometryFuncs() { float64_t f64; f64vec3 f64v1, f64v2, f64v3; f64 = length(f64v1); f64 = distance(f64v1, f64v2); f64 = dot(f64v1, f64v2); f64v3 = cross(f64v1, f64v2); f64v2 = normalize(f64v1); f64v3 = faceforward(f64v1, f64v2, f64v3); f64v3 = reflect(f64v1, f64v2); f64v3 = refract(f64v1, f64v2, f64); } void builtinMatrixFuncs() { f64mat2x3 f64m1, f64m2, f64m3; f64mat3x2 f64m4; f64mat3 f64m5; f64mat4 f64m6, f64m7; f64vec3 f64v1; f64vec2 f64v2; float64_t f64; f64m3 = matrixCompMult(f64m1, f64m2); f64m1 = outerProduct(f64v1, f64v2); f64m4 = transpose(f64m1); f64 = determinant(f64m5); f64m6 = inverse(f64m7); } void builtinVecRelFuncs() { f64vec3 f64v1, f64v2; bvec3 bv; bv = lessThan(f64v1, f64v2); bv = lessThanEqual(f64v1, f64v2); bv = greaterThan(f64v1, f64v2); bv = greaterThanEqual(f64v1, f64v2); bv = equal(f64v1, f64v2); bv = notEqual(f64v1, f64v2); } in flat f64vec3 if64v; void builtinFragProcFuncs() { f64vec3 f64v; // Derivative f64v.x = dFdx(if64v.x); f64v.y = dFdy(if64v.y); f64v.xy = dFdxFine(if64v.xy); f64v.xy = dFdyFine(if64v.xy); f64v = dFdxCoarse(if64v); f64v = dFdxCoarse(if64v); f64v.x = fwidth(if64v.x); f64v.xy = fwidthFine(if64v.xy); f64v = fwidthCoarse(if64v); // Interpolation f64v.x = interpolateAtCentroid(if64v.x); f64v.xy = interpolateAtSample(if64v.xy, 1); f64v = interpolateAtOffset(if64v, f64vec2(0.5f)); } glslang-16.0.0/Test/spv.floatFetch.frag000066400000000000000000001025121506534232700177030ustar00rootroot00000000000000#version 450 core #extension GL_ARB_sparse_texture2: enable #extension GL_ARB_sparse_texture_clamp: enable #extension GL_AMD_texture_gather_bias_lod: enable layout(set = 0, binding = 0) uniform sampler1D s1D; layout(set = 0, binding = 1) uniform sampler2D s2D; layout(set = 0, binding = 2) uniform sampler3D s3D; layout(set = 0, binding = 3) uniform sampler2DRect s2DRect; layout(set = 0, binding = 4) uniform samplerCube sCube; layout(set = 0, binding = 5) uniform samplerBuffer sBuffer; layout(set = 0, binding = 6) uniform sampler2DMS s2DMS; layout(set = 0, binding = 7) uniform sampler1DArray s1DArray; layout(set = 0, binding = 8) uniform sampler2DArray s2DArray; layout(set = 0, binding = 9) uniform samplerCubeArray sCubeArray; layout(set = 0, binding = 10) uniform sampler2DMSArray s2DMSArray; layout(set = 0, binding = 11) uniform sampler1DShadow s1DShadow; layout(set = 0, binding = 12) uniform sampler2DShadow s2DShadow; layout(set = 0, binding = 13) uniform sampler2DRectShadow s2DRectShadow; layout(set = 0, binding = 14) uniform samplerCubeShadow sCubeShadow; layout(set = 0, binding = 15) uniform sampler1DArrayShadow s1DArrayShadow; layout(set = 0, binding = 16) uniform sampler2DArrayShadow s2DArrayShadow; layout(set = 0, binding = 17) uniform samplerCubeArrayShadow sCubeArrayShadow; layout(set = 1, binding = 0) layout(rgba16f) uniform image1D i1D; layout(set = 1, binding = 1) layout(rgba16f) uniform image2D i2D; layout(set = 1, binding = 2) layout(rgba16f) uniform image3D i3D; layout(set = 1, binding = 3) layout(rgba16f) uniform image2DRect i2DRect; layout(set = 1, binding = 4) layout(rgba16f) uniform imageCube iCube; layout(set = 1, binding = 5) layout(rgba16f) uniform image1DArray i1DArray; layout(set = 1, binding = 6) layout(rgba16f) uniform image2DArray i2DArray; layout(set = 1, binding = 7) layout(rgba16f) uniform imageCubeArray iCubeArray; layout(set = 1, binding = 8) layout(rgba16f) uniform imageBuffer iBuffer; layout(set = 1, binding = 9) layout(rgba16f) uniform image2DMS i2DMS; layout(set = 1, binding = 10) layout(rgba16f) uniform image2DMSArray i2DMSArray; layout(set = 2, binding = 0) uniform texture1D t1D; layout(set = 2, binding = 1) uniform texture2D t2D; layout(set = 2, binding = 2) uniform texture3D t3D; layout(set = 2, binding = 3) uniform texture2DRect t2DRect; layout(set = 2, binding = 4) uniform textureCube tCube; layout(set = 2, binding = 5) uniform texture1DArray t1DArray; layout(set = 2, binding = 6) uniform texture2DArray t2DArray; layout(set = 2, binding = 7) uniform textureCubeArray tCubeArray; layout(set = 2, binding = 8) uniform textureBuffer tBuffer; layout(set = 2, binding = 9) uniform texture2DMS t2DMS; layout(set = 2, binding = 10) uniform texture2DMSArray t2DMSArray; layout(set = 2, binding = 11) uniform sampler s; layout(set = 2, binding = 12) uniform samplerShadow sShadow; layout(set = 3, binding = 0, input_attachment_index = 0) uniform subpassInput subpass; layout(set = 3, binding = 1, input_attachment_index = 0) uniform subpassInputMS subpassMS; layout(location = 0) in float c1; layout(location = 1) in vec2 c2; layout(location = 2) in vec3 c3; layout(location = 3) in vec4 c4; layout(location = 4) in float compare; layout(location = 5) in float lod; layout(location = 6) in float bias; layout(location = 7) in float lodClamp; layout(location = 8) in float dPdxy1; layout(location = 9) in vec2 dPdxy2; layout(location = 10) in vec3 dPdxy3; const int offset1 = 1; const ivec2 offset2 = ivec2(1); const ivec3 offset3 = ivec3(1); const ivec2 offsets[4] = { offset2, offset2, offset2, offset2 }; layout(location = 0) out vec4 fragColor; vec4 testTexture() { vec4 texel = vec4(0.0); texel += texture(s1D, c1); texel += texture(s2D, c2); texel += texture(s3D, c3); texel += texture(sCube, c3); texel.x += texture(s1DShadow, c3); texel.x += texture(s2DShadow, c3); texel.x += texture(sCubeShadow, c4); texel += texture(s1DArray, c2); texel += texture(s2DArray, c3); texel += texture(sCubeArray, c4); texel.x += texture(s1DArrayShadow, c3); texel.x += texture(s2DArrayShadow, c4); texel += texture(s2DRect, c2); texel.x += texture(s2DRectShadow, c3); texel.x += texture(sCubeArrayShadow, c4, compare); return texel; } vec4 testTextureProj() { vec4 texel = vec4(0.0); texel += textureProj(s1D, c2); texel += textureProj(s1D, c4); texel += textureProj(s2D, c3); texel += textureProj(s2D, c4); texel += textureProj(s3D, c4); texel.x += textureProj(s1DShadow, c4); texel.x += textureProj(s2DShadow, c4); texel += textureProj(s2DRect, c3); texel += textureProj(s2DRect, c4); texel.x += textureProj(s2DRectShadow, c4); return texel; } vec4 testTextureLod() { vec4 texel = vec4(0.0); texel += textureLod(s1D, c1, lod); texel += textureLod(s2D, c2, lod); texel += textureLod(s3D, c3, lod); texel += textureLod(sCube, c3, lod); texel.x += textureLod(s1DShadow, c3, lod); texel.x += textureLod(s2DShadow, c3, lod); texel += textureLod(s1DArray, c2, lod); texel += textureLod(s2DArray, c3, lod); texel.x += textureLod(s1DArrayShadow, c3, lod); texel += textureLod(sCubeArray, c4, lod); return texel; } vec4 testTextureOffset() { vec4 texel = vec4(0.0); texel += textureOffset(s1D, c1, offset1); texel += textureOffset(s2D, c2, offset2); texel += textureOffset(s3D, c3, offset3); texel += textureOffset(s2DRect, c2, offset2); texel.x += textureOffset(s2DRectShadow, c3, offset2); texel.x += textureOffset(s1DShadow, c3, offset1); texel.x += textureOffset(s2DShadow, c3, offset2); texel += textureOffset(s1DArray, c2, offset1); texel += textureOffset(s2DArray, c3, offset2); texel.x += textureOffset(s1DArrayShadow, c3, offset1); texel.x += textureOffset(s2DArrayShadow, c4, offset2); return texel; } vec4 testTextureProjOffset() { vec4 texel = vec4(0.0); texel += textureProjOffset(s1D, c2, offset1); texel += textureProjOffset(s1D, c4, offset1); texel += textureProjOffset(s2D, c3, offset2); texel += textureProjOffset(s2D, c4, offset2); texel += textureProjOffset(s3D, c4, offset3); texel += textureProjOffset(s2DRect, c3, offset2); texel += textureProjOffset(s2DRect, c4, offset2); texel.x += textureProjOffset(s2DRectShadow, c4, offset2); texel.x += textureProjOffset(s1DShadow, c4, offset1); texel.x += textureProjOffset(s2DShadow, c4, offset2); return texel; } vec4 testTextureLodOffset() { vec4 texel = vec4(0.0); texel += textureLodOffset(s1D, c1, lod, offset1); texel += textureLodOffset(s2D, c2, lod, offset2); texel += textureLodOffset(s3D, c3, lod, offset3); texel.x += textureLodOffset(s1DShadow, c3, lod, offset1); texel.x += textureLodOffset(s2DShadow, c3, lod, offset2); texel += textureLodOffset(s1DArray, c2, lod, offset1); texel += textureLodOffset(s2DArray, c3, lod, offset2); texel.x += textureLodOffset(s1DArrayShadow, c3, lod, offset1); return texel; } vec4 testTextureProjLodOffset() { vec4 texel = vec4(0.0); texel += textureProjLodOffset(s1D, c2, lod, offset1); texel += textureProjLodOffset(s1D, c4, lod, offset1); texel += textureProjLodOffset(s2D, c3, lod, offset2); texel += textureProjLodOffset(s2D, c4, lod, offset2); texel += textureProjLodOffset(s3D, c4, lod, offset3); texel.x += textureProjLodOffset(s1DShadow, c4, lod, offset1); texel.x += textureProjLodOffset(s2DShadow, c4, lod, offset2); return texel; } vec4 testTexelFetch() { vec4 texel = vec4(0.0); texel += texelFetch(s1D, int(c1), int(lod)); texel += texelFetch(s2D, ivec2(c2), int(lod)); texel += texelFetch(s3D, ivec3(c3), int(lod)); texel += texelFetch(s2DRect, ivec2(c2)); texel += texelFetch(s1DArray, ivec2(c2), int(lod)); texel += texelFetch(s2DArray, ivec3(c3), int(lod)); texel += texelFetch(sBuffer, int(c1)); texel += texelFetch(s2DMS, ivec2(c2), 1); texel += texelFetch(s2DMSArray, ivec3(c3), 2); return texel; } vec4 testTexelFetchOffset() { vec4 texel = vec4(0.0); texel += texelFetchOffset(s1D, int(c1), int(lod), offset1); texel += texelFetchOffset(s2D, ivec2(c2), int(lod), offset2); texel += texelFetchOffset(s3D, ivec3(c3), int(lod), offset3); texel += texelFetchOffset(s2DRect, ivec2(c2), offset2); texel += texelFetchOffset(s1DArray, ivec2(c2), int(lod), offset1); texel += texelFetchOffset(s2DArray, ivec3(c3), int(lod), offset2); return texel; } vec4 testTextureGrad() { vec4 texel = vec4(0.0); texel += textureGrad(s1D, c1, dPdxy1, dPdxy1); texel += textureGrad(s2D, c2, dPdxy2, dPdxy2); texel += textureGrad(s3D, c3, dPdxy3, dPdxy3); texel += textureGrad(sCube, c3, dPdxy3, dPdxy3); texel += textureGrad(s2DRect, c2, dPdxy2, dPdxy2); texel.x += textureGrad(s2DRectShadow, c3, dPdxy2, dPdxy2); texel.x += textureGrad(s1DShadow, c3, dPdxy1, dPdxy1); texel.x += textureGrad(s2DShadow, c3, dPdxy2, dPdxy2); texel.x += textureGrad(sCubeShadow, c4, dPdxy3, dPdxy3); texel += textureGrad(s1DArray, c2, dPdxy1, dPdxy1); texel += textureGrad(s2DArray, c3, dPdxy2, dPdxy2); texel.x += textureGrad(s1DArrayShadow, c3, dPdxy1, dPdxy1); texel.x += textureGrad(s2DArrayShadow, c4, dPdxy2, dPdxy2); texel += textureGrad(sCubeArray, c4, dPdxy3, dPdxy3); return texel; } vec4 testTextureGradOffset() { vec4 texel = vec4(0.0); texel += textureGradOffset(s1D, c1, dPdxy1, dPdxy1, offset1); texel += textureGradOffset(s2D, c2, dPdxy2, dPdxy2, offset2); texel += textureGradOffset(s3D, c3, dPdxy3, dPdxy3, offset3); texel += textureGradOffset(s2DRect, c2, dPdxy2, dPdxy2, offset2); texel.x += textureGradOffset(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2); texel.x += textureGradOffset(s1DShadow, c3, dPdxy1, dPdxy1, offset1); texel.x += textureGradOffset(s2DShadow, c3, dPdxy2, dPdxy2, offset2); texel += textureGradOffset(s1DArray, c2, dPdxy1, dPdxy1, offset1); texel += textureGradOffset(s2DArray, c3, dPdxy2, dPdxy2, offset2); texel.x += textureGradOffset(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1); texel.x += textureGradOffset(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2); return texel; } vec4 testTextureProjGrad() { vec4 texel = vec4(0.0); texel += textureProjGrad(s1D, c2, dPdxy1, dPdxy1); texel += textureProjGrad(s1D, c4, dPdxy1, dPdxy1); texel += textureProjGrad(s2D, c3, dPdxy2, dPdxy2); texel += textureProjGrad(s2D, c4, dPdxy2, dPdxy2); texel += textureProjGrad(s3D, c4, dPdxy3, dPdxy3); texel += textureProjGrad(s2DRect, c3, dPdxy2, dPdxy2); texel += textureProjGrad(s2DRect, c4, dPdxy2, dPdxy2); texel.x += textureProjGrad(s2DRectShadow, c4, dPdxy2, dPdxy2); texel.x += textureProjGrad(s1DShadow, c4, dPdxy1, dPdxy1); texel.x += textureProjGrad(s2DShadow, c4, dPdxy2, dPdxy2); return texel; } vec4 testTextureProjGradoffset() { vec4 texel = vec4(0.0); texel += textureProjGradOffset(s1D, c2, dPdxy1, dPdxy1, offset1); texel += textureProjGradOffset(s1D, c4, dPdxy1, dPdxy1, offset1); texel += textureProjGradOffset(s2D, c3, dPdxy2, dPdxy2, offset2); texel += textureProjGradOffset(s2D, c4, dPdxy2, dPdxy2, offset2); texel += textureProjGradOffset(s2DRect, c3, dPdxy2, dPdxy2, offset2); texel += textureProjGradOffset(s2DRect, c4, dPdxy2, dPdxy2, offset2); texel.x += textureProjGradOffset(s2DRectShadow, c4, dPdxy2, dPdxy2, offset2); texel += textureProjGradOffset(s3D, c4, dPdxy3, dPdxy3, offset3); texel.x += textureProjGradOffset(s1DShadow, c4, dPdxy1, dPdxy1, offset1); texel.x += textureProjGradOffset(s2DShadow, c4, dPdxy2, dPdxy2, offset2); return texel; } vec4 testTextureGather() { vec4 texel = vec4(0.0); texel += textureGather(s2D, c2, 0); texel += textureGather(s2DArray, c3, 0); texel += textureGather(sCube, c3, 0); texel += textureGather(sCubeArray, c4, 0); texel += textureGather(s2DRect, c2, 0); texel += textureGather(s2DShadow, c2, compare); texel += textureGather(s2DArrayShadow, c3, compare); texel += textureGather(sCubeShadow, c3, compare); texel += textureGather(sCubeArrayShadow, c4, compare); texel += textureGather(s2DRectShadow, c2, compare); return texel; } vec4 testTextureGatherOffset() { vec4 texel = vec4(0.0); texel += textureGatherOffset(s2D, c2, offset2, 0); texel += textureGatherOffset(s2DArray, c3, offset2, 0); texel += textureGatherOffset(s2DRect, c2, offset2, 0); texel += textureGatherOffset(s2DShadow, c2, compare, offset2); texel += textureGatherOffset(s2DArrayShadow, c3, compare, offset2); texel += textureGatherOffset(s2DRectShadow, c2, compare, offset2); return texel; } vec4 testTextureGatherOffsets() { vec4 texel = vec4(0.0); texel += textureGatherOffsets(s2D, c2, offsets, 0); texel += textureGatherOffsets(s2DArray, c3, offsets, 0); texel += textureGatherOffsets(s2DRect, c2, offsets, 0); texel += textureGatherOffsets(s2DShadow, c2, compare, offsets); texel += textureGatherOffsets(s2DArrayShadow, c3, compare, offsets); texel += textureGatherOffsets(s2DRectShadow, c2, compare, offsets); return texel; } vec4 testTextureGatherLod() { vec4 texel = vec4(0.0); texel += textureGatherLodAMD(s2D, c2, lod, 0); texel += textureGatherLodAMD(s2DArray, c3, lod, 0); texel += textureGatherLodAMD(sCube, c3, lod, 0); texel += textureGatherLodAMD(sCubeArray, c4, lod, 0); return texel; } vec4 testTextureGatherLodOffset() { vec4 texel = vec4(0.0); texel += textureGatherLodOffsetAMD(s2D, c2, lod, offset2, 0); texel += textureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, 0); return texel; } vec4 testTextureGatherLodOffsets() { vec4 texel = vec4(0.0); texel += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets, 0); texel += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 0); return texel; } ivec4 testTextureSize() { ivec4 size = ivec4(0); size.x += textureSize(s1D, int(lod)); size.xy += textureSize(s2D, int(lod)); size.xyz += textureSize(s3D, int(lod)); size.xy += textureSize(sCube, int(lod)); size.x += textureSize(s1DShadow, int(lod)); size.xy += textureSize(s2DShadow, int(lod)); size.xy += textureSize(sCubeShadow, int(lod)); size.xyz += textureSize(sCubeArray, int(lod)); size.xyz += textureSize(sCubeArrayShadow, int(lod)); size.xy += textureSize(s2DRect); size.xy += textureSize(s2DRectShadow); size.xy += textureSize(s1DArray, int(lod)); size.xyz += textureSize(s2DArray, int(lod)); size.xy += textureSize(s1DArrayShadow, int(lod)); size.xyz += textureSize(s2DArrayShadow, int(lod)); size.x += textureSize(sBuffer); size.xy += textureSize(s2DMS); size.xyz += textureSize(s2DMSArray); return size; } vec2 testTextureQueryLod() { vec2 lod = vec2(0.0); lod += textureQueryLod(s1D, c1); lod += textureQueryLod(s2D, c2); lod += textureQueryLod(s3D, c3); lod += textureQueryLod(sCube, c3); lod += textureQueryLod(s1DArray, c1); lod += textureQueryLod(s2DArray, c2); lod += textureQueryLod(sCubeArray, c3); lod += textureQueryLod(s1DShadow, c1); lod += textureQueryLod(s2DShadow, c2); lod += textureQueryLod(sCubeArrayShadow, c3); lod += textureQueryLod(s1DArrayShadow, c1); lod += textureQueryLod(s2DArrayShadow, c2); lod += textureQueryLod(sCubeArrayShadow, c3); return lod; } int testTextureQueryLevels() { int levels = 0; levels += textureQueryLevels(s1D); levels += textureQueryLevels(s2D); levels += textureQueryLevels(s3D); levels += textureQueryLevels(sCube); levels += textureQueryLevels(s1DShadow); levels += textureQueryLevels(s2DShadow); levels += textureQueryLevels(sCubeShadow); levels += textureQueryLevels(sCubeArray); levels += textureQueryLevels(sCubeArrayShadow); levels += textureQueryLevels(s1DArray); levels += textureQueryLevels(s2DArray); levels += textureQueryLevels(s1DArrayShadow); levels += textureQueryLevels(s2DArrayShadow); return levels; } int testTextureSamples() { int samples = 0; samples += textureSamples(s2DMS); samples += textureSamples(s2DMSArray); return samples; } vec4 testImageLoad() { vec4 texel = vec4(0.0); texel += imageLoad(i1D, int(c1)); texel += imageLoad(i2D, ivec2(c2)); texel += imageLoad(i3D, ivec3(c3)); texel += imageLoad(i2DRect, ivec2(c2)); texel += imageLoad(iCube, ivec3(c3)); texel += imageLoad(iBuffer, int(c1)); texel += imageLoad(i1DArray, ivec2(c2)); texel += imageLoad(i2DArray, ivec3(c3)); texel += imageLoad(iCubeArray, ivec3(c3)); texel += imageLoad(i2DMS, ivec2(c2), 1); texel += imageLoad(i2DMSArray, ivec3(c3), 1); return texel; } void testImageStore(vec4 data) { imageStore(i1D, int(c1), data); imageStore(i2D, ivec2(c2), data); imageStore(i3D, ivec3(c3), data); imageStore(i2DRect, ivec2(c2), data); imageStore(iCube, ivec3(c3), data); imageStore(iBuffer, int(c1), data); imageStore(i1DArray, ivec2(c2), data); imageStore(i2DArray, ivec3(c3), data); imageStore(iCubeArray, ivec3(c3), data); imageStore(i2DMS, ivec2(c2), 1, data); imageStore(i2DMSArray, ivec3(c3), 1, data); } vec4 testSparseTexture() { vec4 texel = vec4(0.0); sparseTextureARB(s2D, c2, texel); sparseTextureARB(s3D, c3, texel); sparseTextureARB(sCube, c3, texel); sparseTextureARB(s2DShadow, c3, texel.x); sparseTextureARB(sCubeShadow, c4, texel.x); sparseTextureARB(s2DArray, c3, texel); sparseTextureARB(sCubeArray, c4, texel); sparseTextureARB(s2DArrayShadow, c4, texel.x); sparseTextureARB(s2DRect, c2, texel); sparseTextureARB(s2DRectShadow, c3, texel.x); sparseTextureARB(sCubeArrayShadow, c4, compare, texel.x); return texel; } vec4 testSparseTextureLod() { vec4 texel = vec4(0.0); sparseTextureLodARB(s2D, c2, lod, texel); sparseTextureLodARB(s3D, c3, lod, texel); sparseTextureLodARB(sCube, c3, lod, texel); sparseTextureLodARB(s2DShadow, c3, lod, texel.x); sparseTextureLodARB(s2DArray, c3, lod, texel); sparseTextureLodARB(sCubeArray, c4, lod, texel); return texel; } vec4 testSparseTextureOffset() { vec4 texel = vec4(0.0); sparseTextureOffsetARB(s2D, c2, offset2, texel); sparseTextureOffsetARB(s3D, c3, offset3, texel); sparseTextureOffsetARB(s2DRect, c2, offset2, texel); sparseTextureOffsetARB(s2DRectShadow, c3, offset2, texel.x); sparseTextureOffsetARB(s2DShadow, c3, offset2, texel.x); sparseTextureOffsetARB(s2DArray, c3, offset2, texel); sparseTextureOffsetARB(s2DArrayShadow, c4, offset2, texel.x); return texel; } vec4 testSparseTextureLodOffset() { vec4 texel = vec4(0.0); sparseTextureLodOffsetARB(s2D, c2, lod, offset2, texel); sparseTextureLodOffsetARB(s3D, c3, lod, offset3, texel); sparseTextureLodOffsetARB(s2DShadow, c3, lod, offset2, texel.x); sparseTextureLodOffsetARB(s2DArray, c3, lod, offset2, texel); return texel; } vec4 testSparseTextureGrad() { vec4 texel = vec4(0.0); sparseTextureGradARB(s2D, c2, dPdxy2, dPdxy2, texel); sparseTextureGradARB(s3D, c3, dPdxy3, dPdxy3, texel); sparseTextureGradARB(sCube, c3, dPdxy3, dPdxy3, texel); sparseTextureGradARB(s2DRect, c2, dPdxy2, dPdxy2, texel); sparseTextureGradARB(s2DRectShadow, c3, dPdxy2, dPdxy2, texel.x); sparseTextureGradARB(s2DShadow, c3, dPdxy2, dPdxy2, texel.x); sparseTextureGradARB(sCubeShadow, c4, dPdxy3, dPdxy3, texel.x); sparseTextureGradARB(s2DArray, c3, dPdxy2, dPdxy2, texel); sparseTextureGradARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, texel.x); sparseTextureGradARB(sCubeArray, c4, dPdxy3, dPdxy3, texel); return texel; } vec4 testSparseTextureGradOffset() { vec4 texel = vec4(0.0); sparseTextureGradOffsetARB(s2D, c2, dPdxy2, dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s3D, c3, dPdxy3, dPdxy3, offset3, texel); sparseTextureGradOffsetARB(s2DRect, c2, dPdxy2, dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2, texel.x); sparseTextureGradOffsetARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, texel.x); sparseTextureGradOffsetARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, texel); sparseTextureGradOffsetARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, texel.x); return texel; } vec4 testSparseTexelFetch() { vec4 texel = vec4(0.0); sparseTexelFetchARB(s2D, ivec2(c2), int(lod), texel); sparseTexelFetchARB(s3D, ivec3(c3), int(lod), texel); sparseTexelFetchARB(s2DRect, ivec2(c2), texel); sparseTexelFetchARB(s2DArray, ivec3(c3), int(lod), texel); sparseTexelFetchARB(s2DMS, ivec2(c2), 1, texel); sparseTexelFetchARB(s2DMSArray, ivec3(c3), 2, texel); return texel; } vec4 testSparseTexelFetchOffset() { vec4 texel = vec4(0.0); sparseTexelFetchOffsetARB(s2D, ivec2(c2), int(lod), offset2, texel); sparseTexelFetchOffsetARB(s3D, ivec3(c3), int(lod), offset3, texel); sparseTexelFetchOffsetARB(s2DRect, ivec2(c2), offset2, texel); sparseTexelFetchOffsetARB(s2DArray, ivec3(c3), int(lod), offset2, texel); return texel; } vec4 testSparseTextureGather() { vec4 texel = vec4(0.0); sparseTextureGatherARB(s2D, c2, texel, 0); sparseTextureGatherARB(s2DArray, c3, texel, 0); sparseTextureGatherARB(sCube, c3, texel, 0); sparseTextureGatherARB(sCubeArray, c4, texel, 0); sparseTextureGatherARB(s2DRect, c2, texel, 0); sparseTextureGatherARB(s2DShadow, c2, compare, texel); sparseTextureGatherARB(s2DArrayShadow, c3, compare, texel); sparseTextureGatherARB(sCubeShadow, c3, compare, texel); sparseTextureGatherARB(sCubeArrayShadow, c4, compare, texel); sparseTextureGatherARB(s2DRectShadow, c2, compare, texel); return texel; } vec4 testSparseTextureGatherOffset() { vec4 texel = vec4(0.0); sparseTextureGatherOffsetARB(s2D, c2, offset2, texel, 0); sparseTextureGatherOffsetARB(s2DArray, c3, offset2, texel, 0); sparseTextureGatherOffsetARB(s2DRect, c2, offset2, texel, 0); sparseTextureGatherOffsetARB(s2DShadow, c2, compare, offset2, texel); sparseTextureGatherOffsetARB(s2DArrayShadow, c3, compare, offset2, texel); sparseTextureGatherOffsetARB(s2DRectShadow, c2, compare, offset2, texel); return texel; } vec4 testSparseTextureGatherOffsets() { vec4 texel = vec4(0.0); const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel, 0); sparseTextureGatherOffsetsARB(s2DArray, c3, constOffsets, texel, 0); sparseTextureGatherOffsetsARB(s2DRect, c2, constOffsets, texel, 0); sparseTextureGatherOffsetsARB(s2DShadow, c2, compare, constOffsets, texel); sparseTextureGatherOffsetsARB(s2DArrayShadow, c3, compare, constOffsets, texel); sparseTextureGatherOffsetsARB(s2DRectShadow, c2, compare, constOffsets, texel); return texel; } vec4 testSparseTextureGatherLod() { vec4 texel = vec4(0.0); sparseTextureGatherLodAMD(s2D, c2, lod, texel, 0); sparseTextureGatherLodAMD(s2DArray, c3, lod, texel, 0); sparseTextureGatherLodAMD(sCube, c3, lod, texel, 0); sparseTextureGatherLodAMD(sCubeArray, c4, lod, texel, 0); return texel; } vec4 testSparseTextureGatherLodOffset() { vec4 texel = vec4(0.0); sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offset2, texel, 0); sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, texel, 0); return texel; } vec4 testSparseTextureGatherLodOffsets() { vec4 texel = vec4(0.0); sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, texel, 0); sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, texel, 0); return texel; } vec4 testSparseImageLoad() { vec4 texel = vec4(0.0); sparseImageLoadARB(i2D, ivec2(c2), texel); sparseImageLoadARB(i3D, ivec3(c3), texel); sparseImageLoadARB(i2DRect, ivec2(c2), texel); sparseImageLoadARB(iCube, ivec3(c3), texel); sparseImageLoadARB(i2DArray, ivec3(c3), texel); sparseImageLoadARB(iCubeArray, ivec3(c3), texel); sparseImageLoadARB(i2DMS, ivec2(c2), 1, texel); sparseImageLoadARB(i2DMSArray, ivec3(c3), 2, texel); return texel; } vec4 testSparseTextureClamp() { vec4 texel = vec4(0.0); sparseTextureClampARB(s2D, c2, lodClamp, texel); sparseTextureClampARB(s3D, c3, lodClamp, texel); sparseTextureClampARB(sCube, c3, lodClamp, texel); sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x); sparseTextureClampARB(sCubeShadow, c4, lodClamp, texel.x); sparseTextureClampARB(s2DArray, c3, lodClamp, texel); sparseTextureClampARB(sCubeArray, c4, lodClamp, texel); sparseTextureClampARB(s2DArrayShadow, c4, lodClamp, texel.x); sparseTextureClampARB(sCubeArrayShadow, c4, compare, lodClamp, texel.x); return texel; } vec4 testTextureClamp() { vec4 texel = vec4(0.0); texel += textureClampARB(s1D, c1, lodClamp); texel += textureClampARB(s2D, c2, lodClamp); texel += textureClampARB(s3D, c3, lodClamp); texel += textureClampARB(sCube, c3, lodClamp); texel.x += textureClampARB(s1DShadow, c3, lodClamp); texel.x += textureClampARB(s2DShadow, c3, lodClamp); texel.x += textureClampARB(sCubeShadow, c4, lodClamp); texel += textureClampARB(s1DArray, c2, lodClamp); texel += textureClampARB(s2DArray, c3, lodClamp); texel += textureClampARB(sCubeArray, c4, lodClamp); texel.x += textureClampARB(s1DArrayShadow, c3, lodClamp); texel.x += textureClampARB(s2DArrayShadow, c4, lodClamp); texel.x += textureClampARB(sCubeArrayShadow, c4, compare, lodClamp); return texel; } vec4 testSparseTextureOffsetClamp() { vec4 texel = vec4(0.0); sparseTextureOffsetClampARB(s2D, c2, offset2, lodClamp, texel); sparseTextureOffsetClampARB(s3D, c3, offset3, lodClamp, texel); sparseTextureOffsetClampARB(s2DShadow, c3, offset2, lodClamp, texel.x); sparseTextureOffsetClampARB(s2DArray, c3, offset2, lodClamp, texel); sparseTextureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp, texel.x); return texel; } vec4 testTextureOffsetClamp() { vec4 texel = vec4(0.0); texel += textureOffsetClampARB(s1D, c1, offset1, lodClamp); texel += textureOffsetClampARB(s2D, c2, offset2, lodClamp); texel += textureOffsetClampARB(s3D, c3, offset3, lodClamp); texel.x += textureOffsetClampARB(s1DShadow, c3, offset1, lodClamp); texel.x += textureOffsetClampARB(s2DShadow, c3, offset2, lodClamp); texel += textureOffsetClampARB(s1DArray, c2, offset1, lodClamp); texel += textureOffsetClampARB(s2DArray, c3, offset2, lodClamp); texel.x += textureOffsetClampARB(s1DArrayShadow, c3, offset1, lodClamp); texel.x += textureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp); return texel; } vec4 testSparseTextureGradClamp() { vec4 texel = vec4(0.0); sparseTextureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp, texel); sparseTextureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp, texel); sparseTextureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp, texel); sparseTextureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp, texel.x); sparseTextureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp, texel.x); sparseTextureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp, texel); sparseTextureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp, texel.x); sparseTextureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp, texel); return texel; } vec4 testTextureGradClamp() { vec4 texel = vec4(0.0); texel += textureGradClampARB(s1D, c1, dPdxy1, dPdxy1, lodClamp); texel += textureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp); texel += textureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp); texel += textureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp); texel.x += textureGradClampARB(s1DShadow, c3, dPdxy1, dPdxy1, lodClamp); texel.x += textureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp); texel.x += textureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp); texel += textureGradClampARB(s1DArray, c2, dPdxy1, dPdxy1, lodClamp); texel += textureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp); texel.x += textureGradClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, lodClamp); texel.x += textureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp); texel += textureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp); return texel; } vec4 testSparseTextureGradOffsetClamp() { vec4 texel = vec4(0.0); sparseTextureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp, texel); sparseTextureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp, texel); sparseTextureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel.x); sparseTextureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel); sparseTextureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp, texel.x); return texel; } vec4 testTextureGradOffsetClamp() { vec4 texel = vec4(0.0); texel += textureGradOffsetClampARB(s1D, c1, dPdxy1, dPdxy1, offset1, lodClamp); texel += textureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp); texel += textureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp); texel.x += textureGradOffsetClampARB(s1DShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp); texel.x += textureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp); texel += textureGradOffsetClampARB(s1DArray, c2, dPdxy1, dPdxy1, offset1, lodClamp); texel += textureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp); texel.x += textureGradOffsetClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp); texel.x += textureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp); return texel; } vec4 testCombinedTextureSampler() { vec4 texel = vec4(0.0); texel += texture(sampler1D(t1D, s), c1); texel += texture(sampler2D(t2D, s), c2); texel += texture(sampler3D(t3D, s), c3); texel += texture(samplerCube(tCube, s), c3); texel.x += texture(sampler1DShadow(t1D, sShadow), c3); texel.x += texture(sampler2DShadow(t2D, sShadow), c3); texel.x += texture(samplerCubeShadow(tCube, sShadow), c4); texel += texture(sampler1DArray(t1DArray, s), c2); texel += texture(sampler2DArray(t2DArray, s), c3); texel += texture(samplerCubeArray(tCubeArray, s), c4); texel.x += texture(sampler1DArrayShadow(t1DArray, sShadow), c3); texel.x += texture(sampler2DArrayShadow(t2DArray, sShadow), c4); texel += texture(sampler2DRect(t2DRect, s), c2); texel.x += texture(sampler2DRectShadow(t2DRect, sShadow), c3); texel.x += texture(samplerCubeArrayShadow(tCubeArray, sShadow), c4, compare); return texel; } vec4 testSubpassLoad() { return subpassLoad(subpass) + subpassLoad(subpassMS, 2); } void main() { vec4 result = vec4(0.0); result += testTexture(); result += testTextureProj(); result += testTextureLod(); result += testTextureOffset(); result += testTextureLodOffset(); result += testTextureProjLodOffset(); result += testTexelFetch(); result += testTexelFetchOffset(); result += testTextureGrad(); result += testTextureGradOffset(); result += testTextureProjGrad(); result += testTextureProjGradoffset(); result += testTextureGather(); result += testTextureGatherOffset(); result += testTextureGatherOffsets(); result += testTextureGatherLod(); result += testTextureGatherLodOffset(); result += testTextureGatherLodOffsets(); result += vec4(testTextureSize()); result.xy += vec2(testTextureQueryLod()); result.x += testTextureQueryLevels(); result.x += testTextureSamples(); result += testImageLoad(); testImageStore(result); result += testSparseTexture(); result += testSparseTextureLod(); result += testSparseTextureOffset(); result += testSparseTextureLodOffset(); result += testSparseTextureGrad(); result += testSparseTextureGradOffset(); result += testSparseTexelFetch(); result += testSparseTexelFetchOffset(); result += testSparseTextureGather(); result += testSparseTextureGatherOffset(); result += testSparseTextureGatherOffsets(); result += testSparseTextureGatherLod(); result += testSparseTextureGatherLodOffset(); result += testSparseTextureGatherLodOffsets(); result += testSparseImageLoad(); result += testSparseTextureClamp(); result += testTextureClamp(); result += testSparseTextureOffsetClamp(); result += testTextureOffsetClamp(); result += testSparseTextureGrad(); result += testTextureGrad(); result += testSparseTextureGradOffsetClamp(); result += testTextureGradOffsetClamp(); result += testCombinedTextureSampler(); result += testSubpassLoad(); fragColor = result; } glslang-16.0.0/Test/spv.floate4m3.comp000066400000000000000000000105471506534232700174470ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_EXT_float_e4m3 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_NV_cooperative_matrix2 : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; const floate4m3_t bc10 = floate4m3_t(10); const fe4m3vec2 b2c20 = fe4m3vec2(20); layout(constant_id = 1) const floate4m3_t bsc10 = floate4m3_t(10); struct S { floate4m3_t b; }; const S sc = S(bc10); const floate4m3_t bca[2] = {bc10, bc10}; shared floate4m3_t bfs[10]; layout(scalar) buffer B { fe4m3vec3 b3; fe4m3vec2 b2; floate4m3_t b1; } buf; floate4m3_t funcfe4m3(floate4m3_t x) { return x; } floate4m3_t funcf32(float32_t x) { return floate4m3_t(x); } floate4m3_t funcf64(float64_t x) { return floate4m3_t(x); } void main() { float f = 2.0; floate4m3_t b = floate4m3_t(1.0); floate4m3_t(f); fe4m3vec2 b2 = fe4m3vec2(f); uint8_t u8 = uint8_t(5); uint16_t u16 = uint16_t(5); uint32_t u32 = 5; uint64_t u64 = 5; int8_t i8 = int8_t(6); int16_t i16 = int16_t(6); int32_t i32 = 6; int64_t i64 = 6; floate4m3_t fe4m3 = floate4m3_t(7); float16_t f16 = float16_t(7); float32_t f32 = 7; float64_t f64 = 7; b = floate4m3_t(u8); b = floate4m3_t(u16); b = floate4m3_t(u32); b = floate4m3_t(u64); b = floate4m3_t(i8); b = floate4m3_t(i16); b = floate4m3_t(i32); b = floate4m3_t(i64); b = floate4m3_t(fe4m3); b = floate4m3_t(f16); b = floate4m3_t(f32); b = floate4m3_t(f64); u8 = uint8_t(b); u16 = uint16_t(b); u32 = uint32_t(b); u64 = uint64_t(b); i8 = int8_t(b); i16 = int16_t(b); i32 = int32_t(b); i64 = int64_t(b); fe4m3 = floate4m3_t(b); f16 = float16_t(b); f32 = float32_t(b); f64 = float64_t(b); f16 = b; f32 = b; f64 = b; b = buf.b1; b2 = buf.b2; fe4m3vec3 b3 = buf.b3; coopmat cmA = coopmat(3.0); coopmat cmAf = coopmat(cmA); funcfe4m3(b); funcf32(b); funcf64(b); int8_t i8_1 = floate4m3BitsToIntEXT(b); i8vec2 i8_2 = floate4m3BitsToIntEXT(b2); i8vec3 i8_3 = floate4m3BitsToIntEXT(fe4m3vec3(b2, b)); i8vec4 i8_4 = floate4m3BitsToIntEXT(fe4m3vec4(b2, b2)); uint8_t u8_1 = floate4m3BitsToUintEXT(b); u8vec2 u8_2 = floate4m3BitsToUintEXT(b2); u8vec3 u8_3 = floate4m3BitsToUintEXT(fe4m3vec3(b2, b)); u8vec4 u8_4 = floate4m3BitsToUintEXT(fe4m3vec4(b2, b2)); floate4m3_t f8_1 = intBitsToFloate4m3EXT(i8_1); fe4m3vec2 f8_2 = intBitsToFloate4m3EXT(i8_2); fe4m3vec3 f8_3 = intBitsToFloate4m3EXT(i8_3); fe4m3vec4 f8_4 = intBitsToFloate4m3EXT(i8_4); f8_1 = uintBitsToFloate4m3EXT(u8_1); f8_2 = uintBitsToFloate4m3EXT(u8_2); f8_3 = uintBitsToFloate4m3EXT(u8_3); f8_4 = uintBitsToFloate4m3EXT(u8_4); } floate4m3_t func2(fe4m3vec4 v[2], int i) { floate4m3_t b; b = (fe4m3vec2(v[0]))[i]; b = (fe4m3vec2(v[1])).y; v[i].z = v[i][i]; S s; s.b = b; b = (i != 0) ? b : floate4m3_t(2); if (i == 2) { b = v[0].x; } else { b = v[1].y; } return b; } void saturatedconverts() { float f = 1.0; vec2 f2 = vec2(f); floate4m3_t b; fe4m3vec2 b2; uint32_t u; int32_t i; saturatedConvertEXT(b, f); saturatedConvertEXT(b2, f2); saturatedConvertEXT(b, u); saturatedConvertEXT(b, i); coopmat matf16C; coopmat matf16A; coopmat mate4m3A; mate4m3A = coopmat(matf16A); mate4m3A = coopmat(matf16C); saturatedConvertEXT(mate4m3A, matf16A); saturatedConvertEXT(mate4m3A, matf16C); } glslang-16.0.0/Test/spv.floate4m3.const.comp000066400000000000000000000030301506534232700205610ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_EXT_float_e4m3 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_NV_cooperative_matrix2 : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void main() { floate4m3_t c01111_000 = floate4m3_t(1.0 * 256); floate4m3_t c01111_001 = floate4m3_t(1.125 * 256); floate4m3_t c01111_010 = floate4m3_t(1.25 * 256); floate4m3_t c01111_011 = floate4m3_t(1.375 * 256); floate4m3_t c01111_100 = floate4m3_t(1.5 * 256); floate4m3_t c01111_101 = floate4m3_t(1.625 * 256); floate4m3_t c01111_110 = floate4m3_t(1.75 * 256); floate4m3_t c01111_110_2 = floate4m3_t(1.85 * 256); floate4m3_t c01111_111 = floate4m3_t(1.95 * 256); floate4m3_t c01111_111_2 = floate4m3_t(2.0 * 256); floate4m3_t c11111_000 = floate4m3_t(-1.0 * 256); floate4m3_t c11111_001 = floate4m3_t(-1.125 * 256); floate4m3_t c11111_010 = floate4m3_t(-1.25 * 256); floate4m3_t c11111_011 = floate4m3_t(-1.375 * 256); floate4m3_t c11111_100 = floate4m3_t(-1.5 * 256); floate4m3_t c11111_101 = floate4m3_t(-1.625 * 256); floate4m3_t c11111_110 = floate4m3_t(-1.75 * 256); floate4m3_t c11111_110_2 = floate4m3_t(-1.85 * 256); floate4m3_t c11111_111 = floate4m3_t(-1.95 * 256); floate4m3_t c11111_111_2 = floate4m3_t(-2.0 * 256); } glslang-16.0.0/Test/spv.floate4m3_error.comp000066400000000000000000000034151506534232700206540ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_EXT_float_e4m3 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable #extension GL_NV_cooperative_matrix2 : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; floate4m3_t funcfp8(floate4m3_t x) { return x; } void main() { floate4m3_t b; uint8_t u8 = uint8_t(5); uint16_t u16 = uint16_t(5); uint32_t u32 = 5; uint64_t u64 = 5; int8_t i8 = int8_t(6); int16_t i16 = int16_t(6); int32_t i32 = 6; int64_t i64 = 6; floate4m3_t fp8 = floate4m3_t(7); float16_t f16 = float16_t(7); float32_t f32 = 7; float64_t f64 = 7; b = (u8); b = (u16); b = (u32); b = (u64); b = (i8); b = (i16); b = (i32); b = (i64); b = (fp8); // not an error b = (f16); b = (f32); b = (f64); u8 = (b); u16 = (b); u32 = (b); u64 = (b); i8 = (b); i16 = (b); i32 = (b); i64 = (b); fp8 = (b); // not an error f16 = (b); // not an error f32 = (b); // not an error f64 = (b); // not an error dot(b2, f16vec2(0)); funcfp8(f16); funcfp8(f32); funcfp8(f64); bool bl = bool(b); b = floate4m3_t(bl); b++; b--; -b; bfloat16_t bf16 = bfloat16_t(7); b = (bf16); bf16 = b; saturatedConvertEXT(b, b); saturatedConvertEXT(b, f16, f16); saturatedConvertEXT(b, f16vec2(f16)); saturatedConvertEXT(u8, u8); b+b; coopmat cmA; cmA+cmA; } glslang-16.0.0/Test/spv.floate5m2.comp000066400000000000000000000105471506534232700174470ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_EXT_float_e5m2 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_NV_cooperative_matrix2 : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; const floate5m2_t bc10 = floate5m2_t(10); const fe5m2vec2 b2c20 = fe5m2vec2(20); layout(constant_id = 1) const floate5m2_t bsc10 = floate5m2_t(10); struct S { floate5m2_t b; }; const S sc = S(bc10); const floate5m2_t bca[2] = {bc10, bc10}; shared floate5m2_t bfs[10]; layout(scalar) buffer B { fe5m2vec3 b3; fe5m2vec2 b2; floate5m2_t b1; } buf; floate5m2_t funcfe5m2(floate5m2_t x) { return x; } floate5m2_t funcf32(float32_t x) { return floate5m2_t(x); } floate5m2_t funcf64(float64_t x) { return floate5m2_t(x); } void main() { float f = 2.0; floate5m2_t b = floate5m2_t(1.0); floate5m2_t(f); fe5m2vec2 b2 = fe5m2vec2(f); uint8_t u8 = uint8_t(5); uint16_t u16 = uint16_t(5); uint32_t u32 = 5; uint64_t u64 = 5; int8_t i8 = int8_t(6); int16_t i16 = int16_t(6); int32_t i32 = 6; int64_t i64 = 6; floate5m2_t fe5m2 = floate5m2_t(7); float16_t f16 = float16_t(7); float32_t f32 = 7; float64_t f64 = 7; b = floate5m2_t(u8); b = floate5m2_t(u16); b = floate5m2_t(u32); b = floate5m2_t(u64); b = floate5m2_t(i8); b = floate5m2_t(i16); b = floate5m2_t(i32); b = floate5m2_t(i64); b = floate5m2_t(fe5m2); b = floate5m2_t(f16); b = floate5m2_t(f32); b = floate5m2_t(f64); u8 = uint8_t(b); u16 = uint16_t(b); u32 = uint32_t(b); u64 = uint64_t(b); i8 = int8_t(b); i16 = int16_t(b); i32 = int32_t(b); i64 = int64_t(b); fe5m2 = floate5m2_t(b); f16 = float16_t(b); f32 = float32_t(b); f64 = float64_t(b); f16 = b; f32 = b; f64 = b; b = buf.b1; b2 = buf.b2; fe5m2vec3 b3 = buf.b3; coopmat cmA = coopmat(3.0); coopmat cmAf = coopmat(cmA); funcfe5m2(b); funcf32(b); funcf64(b); int8_t i8_1 = floate5m2BitsToIntEXT(b); i8vec2 i8_2 = floate5m2BitsToIntEXT(b2); i8vec3 i8_3 = floate5m2BitsToIntEXT(fe5m2vec3(b2, b)); i8vec4 i8_4 = floate5m2BitsToIntEXT(fe5m2vec4(b2, b2)); uint8_t u8_1 = floate5m2BitsToUintEXT(b); u8vec2 u8_2 = floate5m2BitsToUintEXT(b2); u8vec3 u8_3 = floate5m2BitsToUintEXT(fe5m2vec3(b2, b)); u8vec4 u8_4 = floate5m2BitsToUintEXT(fe5m2vec4(b2, b2)); floate5m2_t f8_1 = intBitsToFloate5m2EXT(i8_1); fe5m2vec2 f8_2 = intBitsToFloate5m2EXT(i8_2); fe5m2vec3 f8_3 = intBitsToFloate5m2EXT(i8_3); fe5m2vec4 f8_4 = intBitsToFloate5m2EXT(i8_4); f8_1 = uintBitsToFloate5m2EXT(u8_1); f8_2 = uintBitsToFloate5m2EXT(u8_2); f8_3 = uintBitsToFloate5m2EXT(u8_3); f8_4 = uintBitsToFloate5m2EXT(u8_4); } floate5m2_t func2(fe5m2vec4 v[2], int i) { floate5m2_t b; b = (fe5m2vec2(v[0]))[i]; b = (fe5m2vec2(v[1])).y; v[i].z = v[i][i]; S s; s.b = b; b = (i != 0) ? b : floate5m2_t(2); if (i == 2) { b = v[0].x; } else { b = v[1].y; } return b; } void saturatedconverts() { float f = 1.0; vec2 f2 = vec2(f); floate5m2_t b; fe5m2vec2 b2; uint32_t u; int32_t i; saturatedConvertEXT(b, f); saturatedConvertEXT(b2, f2); saturatedConvertEXT(b, u); saturatedConvertEXT(b, i); coopmat matf16C; coopmat matf16A; coopmat mate5m2A; mate5m2A = coopmat(matf16A); mate5m2A = coopmat(matf16C); saturatedConvertEXT(mate5m2A, matf16A); saturatedConvertEXT(mate5m2A, matf16C); } glslang-16.0.0/Test/spv.floate5m2.const.comp000066400000000000000000000021521506534232700205650ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_EXT_float_e5m2 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_NV_cooperative_matrix2 : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void main() { floate5m2_t c011110_00 = floate5m2_t(1.0 * 32768); floate5m2_t c011110_01 = floate5m2_t(1.25 * 32768); floate5m2_t c011110_10 = floate5m2_t(1.5 * 32768); floate5m2_t c011110_11 = floate5m2_t(1.75 * 32768); floate5m2_t c011110_11_2 = floate5m2_t(1.85 * 32768); floate5m2_t c011111_00 = floate5m2_t(2.0 * 32768); floate5m2_t c111110_00 = floate5m2_t(-1.0 * 32768); floate5m2_t c111110_01 = floate5m2_t(-1.25 * 32768); floate5m2_t c111110_10 = floate5m2_t(-1.5 * 32768); floate5m2_t c111110_11 = floate5m2_t(-1.75 * 32768); floate5m2_t c111110_11_2 = floate5m2_t(-1.85 * 32768); floate5m2_t c111111_00 = floate5m2_t(-2.0 * 32768); } glslang-16.0.0/Test/spv.floate5m2_error.comp000066400000000000000000000034151506534232700206540ustar00rootroot00000000000000#version 450 core #extension GL_EXT_bfloat16 : require #extension GL_EXT_float_e5m2 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable #extension GL_NV_cooperative_matrix2 : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; floate5m2_t funcfp8(floate5m2_t x) { return x; } void main() { floate5m2_t b; uint8_t u8 = uint8_t(5); uint16_t u16 = uint16_t(5); uint32_t u32 = 5; uint64_t u64 = 5; int8_t i8 = int8_t(6); int16_t i16 = int16_t(6); int32_t i32 = 6; int64_t i64 = 6; floate5m2_t fp8 = floate5m2_t(7); float16_t f16 = float16_t(7); float32_t f32 = 7; float64_t f64 = 7; b = (u8); b = (u16); b = (u32); b = (u64); b = (i8); b = (i16); b = (i32); b = (i64); b = (fp8); // not an error b = (f16); b = (f32); b = (f64); u8 = (b); u16 = (b); u32 = (b); u64 = (b); i8 = (b); i16 = (b); i32 = (b); i64 = (b); fp8 = (b); // not an error f16 = (b); // not an error f32 = (b); // not an error f64 = (b); // not an error dot(b2, f16vec2(0)); funcfp8(f16); funcfp8(f32); funcfp8(f64); bool bl = bool(b); b = floate5m2_t(bl); b++; b--; -b; bfloat16_t bf16 = bfloat16_t(7); b = (bf16); bf16 = b; saturatedConvertEXT(b, b); saturatedConvertEXT(b, f16, f16); saturatedConvertEXT(b, f16vec2(f16)); saturatedConvertEXT(u8, u8); b+b; coopmat cmA; cmA+cmA; } glslang-16.0.0/Test/spv.flowControl.frag000066400000000000000000000005201506534232700201300ustar00rootroot00000000000000#version 140 in float d; in vec4 bigColor, smallColor; in vec4 otherColor; in float c; in vec4 BaseColor; void main() { vec4 color = BaseColor; vec4 color2; color2 = otherColor; if (c > d) color += bigColor; else color += smallColor; gl_FragColor = color * color2; } glslang-16.0.0/Test/spv.for-complex-condition.vert000066400000000000000000000002451506534232700221040ustar00rootroot00000000000000#version 450 layout(location=0) out highp int r; layout(location=0) in lowp int flag; void main() { int i; for (i=0; i < (flag==1 ? 10 : 15) ; i++) { r = i; } } glslang-16.0.0/Test/spv.for-continue-break.vert000066400000000000000000000004111506534232700213520ustar00rootroot00000000000000#version 310 es void main() { int i; int A, B, C, D, E, F, G; for (i=0; i < 10 ; i++) { A = 1; if (i%2 ==0) { B = 1; continue; C = 1; } if (i%3 == 0) { D = 1; break; E = 1; } F = 12; } G = 99; } glslang-16.0.0/Test/spv.for-nobody.vert000066400000000000000000000001531506534232700177410ustar00rootroot00000000000000#version 450 layout(location=0) out highp int r; void main() { int i; for (i=0; i<10; i++); r = i; } glslang-16.0.0/Test/spv.for-notest.vert000066400000000000000000000001501506534232700177600ustar00rootroot00000000000000#version 450 layout(location=0) out highp int r; void main() { int i; for (i=0; ; i++) { r = i; } } glslang-16.0.0/Test/spv.for-simple.vert000066400000000000000000000001361506534232700177410ustar00rootroot00000000000000#version 310 es void main() { int i; int j; for (i=0; i < 10 ; i++) { j = 12; } } glslang-16.0.0/Test/spv.forLoop.frag000066400000000000000000000012331506534232700172420ustar00rootroot00000000000000#version 140 in vec4 bigColor; in vec4 BaseColor; in float f; flat in int Count; flat in uvec4 v4; void main() { vec4 color = BaseColor; for (int i = 0; i < Count; ++i) { color += bigColor; } gl_FragColor = color; float sum = 0.0; for (int i = 0; i < 4; ++i) sum += v4[i]; vec4 tv4; for (int i = 0; i < 4; ++i) tv4[i] = v4[i] * 4u; gl_FragColor += vec4(sum) + tv4; vec4 r; r.xyz = BaseColor.xyz; for (int i = 0; i < Count; ++i) r.w = f; gl_FragColor.xyz += r.xyz; for (int i = 0; i < 16; i += 4) gl_FragColor *= f; } glslang-16.0.0/Test/spv.forwardFun.frag000066400000000000000000000007621506534232700177450ustar00rootroot00000000000000#version 140 precision mediump float; in vec4 bigColor; in vec4 BaseColor; in float d; void bar(); float foo(vec4); float unreachableReturn(); void main() { vec4 color = vec4(foo(BaseColor)); bar(); float f = unreachableReturn(); gl_FragColor = color * f; } void bar() { } float unreachableReturn() { bar(); if (d < 4.2) return 1.2; else return 4.5; } float foo(vec4 bar) { return bar.x + bar.y; } glslang-16.0.0/Test/spv.fp8_error.frag000066400000000000000000000010611506534232700175270ustar00rootroot00000000000000#version 450 core #extension GL_EXT_float_e5m2 : require #extension GL_EXT_float_e4m3 : require #extension GL_KHR_cooperative_matrix : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_scalar_block_layout : enable layout(location = 0) in floate5m2_t x0; layout(location = 0) out floate5m2_t y0; layout(location = 1) in floate4m3_t x1; layout(location = 1) out floate4m3_t y1; void main() { floate5m2_t x; floate4m3_t y; x = y; y = x; } glslang-16.0.0/Test/spv.fragmentDensity-es.frag000066400000000000000000000004311506534232700213710ustar00rootroot00000000000000#version 310 es #extension GL_EXT_fragment_invocation_density : require layout (location = 0) out highp ivec2 FragSize; layout (location = 2) out highp int FragInvocationCount; void main () { FragSize = gl_FragSizeEXT; FragInvocationCount = gl_FragInvocationCountEXT; } glslang-16.0.0/Test/spv.fragmentDensity-neg.frag000066400000000000000000000005201506534232700215320ustar00rootroot00000000000000#version 450 //make sure the builtins don't exist if the extension isn't enabled. //#extension GL_EXT_fragment_invocation_density : require layout (location = 0) out vec2 FragSize; layout (location = 2) out int FragInvocationCount; void main () { FragSize = gl_FragSizeEXT; FragInvocationCount = gl_FragInvocationCountEXT; } glslang-16.0.0/Test/spv.fragmentDensity.frag000066400000000000000000000004111506534232700207620ustar00rootroot00000000000000#version 450 #extension GL_EXT_fragment_invocation_density : require layout (location = 0) out vec2 FragSize; layout (location = 2) out int FragInvocationCount; void main () { FragSize = gl_FragSizeEXT; FragInvocationCount = gl_FragInvocationCountEXT; } glslang-16.0.0/Test/spv.fragmentDensity.vert000066400000000000000000000005041506534232700210260ustar00rootroot00000000000000#version 450 // try using a fragment-only extension in a vertex shader #extension GL_EXT_fragment_invocation_density : require layout (location = 0) out uvec2 FragSize; layout (location = 2) out int FragInvocationCount; void main () { FragSize = gl_FragSizeEXT; FragInvocationCount = gl_FragInvocationCountEXT; } glslang-16.0.0/Test/spv.fragmentShaderBarycentric.frag000066400000000000000000000005441506534232700227460ustar00rootroot00000000000000#version 450 #extension GL_NV_fragment_shader_barycentric : require layout(location = 0) pervertexNV in vertices { float attrib; } v[]; layout(location = 1) out float value; void main () { value = (gl_BaryCoordNV.x * v[0].attrib + gl_BaryCoordNV.y * v[1].attrib + gl_BaryCoordNV.z * v[2].attrib); } glslang-16.0.0/Test/spv.fragmentShaderBarycentric2.frag000066400000000000000000000011411506534232700230220ustar00rootroot00000000000000#version 320 es #extension GL_NV_fragment_shader_barycentric : require 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; void main () { value = (gl_BaryCoordNoPerspNV.x * vertexIDs[0] + 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]); } glslang-16.0.0/Test/spv.fragmentShaderBarycentric3.frag000066400000000000000000000005511506534232700230270ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/spv.fragmentShaderBarycentric4.frag000066400000000000000000000011511506534232700230250ustar00rootroot00000000000000#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]); } glslang-16.0.0/Test/spv.fsi.frag000066400000000000000000000006471506534232700164130ustar00rootroot00000000000000#version 450 #extension GL_ARB_fragment_shader_interlock : enable layout(set = 0, binding = 0) coherent buffer B1 { layout(offset = 0) int x; } b1; layout(set = 0, binding = 1, rgba32f) coherent uniform image2D im; layout(sample_interlock_ordered) in; void main() { beginInvocationInterlockARB(); b1.x = 1; imageStore(im, ivec2(0,0), vec4(0)); endInvocationInterlockARB(); } glslang-16.0.0/Test/spv.fsi_Error.frag000066400000000000000000000006431506534232700175600ustar00rootroot00000000000000#version 450 #extension GL_ARB_fragment_shader_interlock : enable layout(pixel_interlock_ordered) out; layout(pixel_interlock_ordered) in; layout(pixel_interlock_unordered) in; void foo() { beginInvocationInterlockARB(); endInvocationInterlockARB(); } void main() { endInvocationInterlockARB(); beginInvocationInterlockARB(); return; endInvocationInterlockARB(); } glslang-16.0.0/Test/spv.fullyCovered.frag000066400000000000000000000002401506534232700202620ustar00rootroot00000000000000#version 450 #extension GL_NV_conservative_raster_underestimation : enable out vec4 color; void main() { color = vec4(gl_FragFullyCoveredNV, 0, 0, 0); } glslang-16.0.0/Test/spv.funcall.array.frag000066400000000000000000000002421506534232700203620ustar00rootroot00000000000000#version 450 core uniform ub { vec4 u[9]; }; vec4 f(const vec4 a[9], int ix) { return a[ix]; } out vec4 color; void main() { color = f(u, 2); } glslang-16.0.0/Test/spv.functionCall.frag000066400000000000000000000012031506534232700202400ustar00rootroot00000000000000#version 140 varying vec4 bigColor; varying vec4 BaseColor; varying float d; float h = 0.0; float foo(vec4 bar) { return bar.x + bar.y; } void bar() { } float unreachableReturn() { if (d < 4.2) return 1.2; else return 4.5; // might be another return inserted here by builders, has to be correct type } float missingReturn() { if (d < 4.5) { h = d; return 3.9; } } void main() { vec4 color = vec4(foo(BaseColor)); bar(); float f = unreachableReturn(); float g = missingReturn(); gl_FragColor = color * f * h; } glslang-16.0.0/Test/spv.functionNestedOpaque.vert000066400000000000000000000003761506534232700220350ustar00rootroot00000000000000#version 450 uniform struct S { sampler2D s; } si; void foo(sampler2D t) { texture(t, vec2(0.5)); } void barc(const S p) { foo(p.s); } void bar(S p) { foo(p.s); } void main() { barc(si); bar(si); } glslang-16.0.0/Test/spv.functionParameterTypes.frag000066400000000000000000000007371506534232700223450ustar00rootroot00000000000000#version 460 core #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable int f(int8_t i8, uint8_t u8, int16_t i16, uint16_t u16, int64_t i64, uint64_t u64, float16_t f16) { return 0; } void main() { } glslang-16.0.0/Test/spv.functionSemantics.frag000066400000000000000000000024541506534232700213240ustar00rootroot00000000000000#version 400 in float u; int foo(int a, const int b, in int c, const in int d, out int e, inout int f) { int sum = a + b + c + d + f; // no e, it is out only // sum should be 47 now a *= 64; // no b, it is read only c *= 64; // no d, it is read only e = 64 * 16; // e starts undefined f *= 64; sum += a + 64 * b + c + 64 * d + e + f; // everything has a value now, totaling of 64(1+2+4+8+16+32) = 64*63 = 4032 // sum should be 4032 + 47 = 4079 return sum; } int foo2(float a, vec3 b, out int r) { r = int(3.0 * a); return int(5.0 * b.y); } int foo3() { if (u > 3.2) { discard; return 1000000; } return 2000000; } void main() { int e; int t = 2; struct s { ivec4 t; } f; f.t.y = 32; // test the different qualifers int color = foo(1, 2, t+t, 8, e, f.t.y); color += 128 * (e + f.t.y); // right side should be 128(64(16 + 32)) = 393216 // sum should be 4079 + 393216 = 397295 // test conversions float arg; float ret; ret = foo2(4, ivec3(1,2,3), arg); // ret = 10, param = 12.0 color += int(ret + arg); // adds 22, for total of 397317 color += foo3(); // theoretically, add 2000000, for total of 2397317 gl_FragColor = vec4(color); } glslang-16.0.0/Test/spv.glFragColor.frag000066400000000000000000000001021506534232700200150ustar00rootroot00000000000000#version 330 void main() { gl_FragColor = vec4(1.0); } glslang-16.0.0/Test/spv.glsl.register.autoassign.frag000066400000000000000000000032721506534232700225670ustar00rootroot00000000000000#version 450 uniform layout(binding=0) sampler g_sSamp1; uniform sampler g_sSamp2; uniform layout(binding=2) sampler g_sSamp3[2]; uniform sampler g_sSamp4[3]; uniform sampler g_sSamp5; uniform sampler g_sSamp_unused1; uniform sampler g_sSamp_unused2; uniform layout(binding=1) texture1D g_tTex1; uniform texture1D g_tTex2; uniform layout(binding=3) texture1D g_tTex3[2]; uniform texture1D g_tTex4[3]; uniform texture1D g_tTex5; uniform layout(binding=0) texture1D g_tTex_unused1; uniform layout(binding=2) texture1D g_tTex_unused2; uniform texture1D g_tTex_unused3; struct MyStruct_t { int a; float b; vec3 c; }; uniform layout(binding=4) myblock { MyStruct_t mystruct; vec4 myvec4_a; vec4 myvec4_b; ivec4 myint4_a; }; vec4 Func1() { return texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + texture(sampler1D(g_tTex2, g_sSamp2), 0.2) + texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) + texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) + texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) + texture(sampler1D(g_tTex5, g_sSamp5), 0.5) + mystruct.c[1]; } vec4 Func2() { return texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3); } // Not called from entry point: vec4 Func2_unused() { return texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) + texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2); } out vec4 FragColor; void main() { FragColor = Func1() + Func2(); } glslang-16.0.0/Test/spv.glsl.register.noautoassign.frag000066400000000000000000000035471506534232700231310ustar00rootroot00000000000000#version 450 uniform layout(binding=0) sampler g_sSamp1; uniform layout(binding=1) sampler g_sSamp2; uniform layout(binding=2) sampler g_sSamp3[2]; uniform layout(binding=3) sampler g_sSamp4[3]; uniform layout(binding=4) sampler g_sSamp5; uniform layout(binding=5) sampler g_sSamp_unused1; uniform layout(binding=6) sampler g_sSamp_unused2; uniform layout(binding=7) texture1D g_tTex1; uniform layout(binding=8) texture1D g_tTex2; uniform layout(binding=9) texture1D g_tTex3[2]; uniform layout(binding=10) texture1D g_tTex4[3]; uniform layout(binding=11) texture1D g_tTex5; uniform layout(binding=12) texture1D g_tTex_unused1; uniform layout(binding=13) texture1D g_tTex_unused2; uniform layout(binding=14) texture1D g_tTex_unused3; struct MyStruct_t { int a; float b; vec3 c; }; uniform layout(binding=4) myblock { MyStruct_t mystruct; vec4 myvec4_a; vec4 myvec4_b; ivec4 myint4_a; }; vec4 Func1() { return texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + texture(sampler1D(g_tTex2, g_sSamp2), 0.2) + texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) + texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) + texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) + texture(sampler1D(g_tTex5, g_sSamp5), 0.5) + mystruct.c[1]; } vec4 Func2() { return texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3); } // Not called from entry point: vec4 Func2_unused() { return texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) + texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2); } out vec4 FragColor; void main() { FragColor = Func1() + Func2(); } glslang-16.0.0/Test/spv.hlslDebugInfo.vert000066400000000000000000000000761506534232700204140ustar00rootroot00000000000000float4 origMain() : SV_Position { return (float4)0; } glslang-16.0.0/Test/spv.hlslOffsets.vert000066400000000000000000000006241506534232700201620ustar00rootroot00000000000000#version 450 layout(binding = 0) buffer block { float m0; vec3 m4; ////// float m16; layout(offset=20) vec3 m20; ///// vec3 m32; ///// vec2 m48; vec2 m56; //// float m64; vec2 m68; float m76; ////// float m80; layout(offset=88) vec2 m88; ////// vec2 m96; /////// dvec2 m112; }; void main() {}glslang-16.0.0/Test/spv.image.frag000066400000000000000000000067701506534232700167170ustar00rootroot00000000000000#version 450 layout(rgba32f, binding = 0) uniform image1D i1D; layout(rgba32f, binding = 1) uniform image2D i2D; layout(rgba32f, binding = 2) uniform image3D i3D; layout(rgba32f, binding = 3) uniform imageCube iCube; layout(rgba32f, binding = 4) uniform imageCubeArray iCubeArray; layout(rgba32f, binding = 5) uniform image2DRect i2DRect; layout(rgba32f, binding = 6) uniform image1DArray i1DArray; layout(rg16, binding = 7) uniform image2DArray i2DArray; layout(rgba32f, binding = 8) uniform imageBuffer iBuffer; layout(rgba32f, binding = 9) uniform image2DMS i2DMS; layout(rgba32f, binding = 10) uniform image2DMSArray i2DMSArray; layout(r32i, binding = 11) uniform iimage1D ii1D; layout(r32ui, binding = 12) uniform uimage2D ui2D; layout(r32i, binding = 13) uniform iimage2DMS ii2DMS; layout(r32ui, binding = 14) uniform uimage2DMSArray ui2DMSArray; flat in int ic1D; flat in ivec2 ic2D; flat in ivec3 ic3D; flat in ivec4 ic4D; writeonly layout(binding = 1) uniform image2D wo2D; flat in uint value; out vec4 fragData; void main() { ivec3 iv = ivec3(0); iv.x += imageSize(i1D); iv.xy += imageSize(i2D); iv.xyz += imageSize(i3D); iv.xy += imageSize(iCube); iv.xyz += imageSize(iCubeArray); iv.xy += imageSize(i2DRect); iv.xy += imageSize(i1DArray); iv.xyz += imageSize(i2DArray); iv.x += imageSize(iBuffer); iv.xy += imageSize(i2DMS); iv.xyz += imageSize(i2DMSArray); iv.x += imageSamples(i2DMS); iv.x += imageSamples(i2DMSArray); vec4 v = vec4(0.0); v += imageLoad(i1D, ic1D); imageStore(i1D, ic1D, v); v += imageLoad(i2D, ic2D); imageStore(i2D, ic2D, v); v += imageLoad(i3D, ic3D); imageStore(i3D, ic3D, v); v += imageLoad(iCube, ic3D); imageStore(iCube, ic3D, v); v += imageLoad(iCubeArray, ic3D); imageStore(iCubeArray, ic3D, v); v += imageLoad(i2DRect, ic2D); imageStore(i2DRect, ic2D, v); v += imageLoad(i1DArray, ic2D); imageStore(i1DArray, ic2D, v); v += imageLoad(i2DArray, ic3D); imageStore(i2DArray, ic3D, v); v += imageLoad(iBuffer, ic1D); imageStore(iBuffer, ic1D, v); v += imageLoad(i2DMS, ic2D, 1); imageStore(i2DMS, ic2D, 2, v); v += imageLoad(i2DMSArray, ic3D, 3); imageStore(i2DMSArray, ic3D, 4, v); uint ui = 0; iv.x += imageAtomicAdd(ii1D, ic1D, 10); ui += imageAtomicAdd(ui2D, ic2D, value); iv.x += imageAtomicMin(ii1D, ic1D, 11); ui += imageAtomicMin(ui2D, ic2D, value); iv.x += imageAtomicMax(ii1D, ic1D, 12); ui += imageAtomicMax(ui2D, ic2D, value); iv.x += imageAtomicAnd(ii1D, ic1D, 13); ui += imageAtomicAnd(ui2D, ic2D, value); iv.x += imageAtomicOr(ii1D, ic1D, 14); ui += imageAtomicOr(ui2D, ic2D, value); iv.x += imageAtomicXor(ii1D, ic1D, 15); ui += imageAtomicXor(ui2D, ic2D, value); iv.x += imageAtomicExchange(ii1D, ic1D, 16); ui += imageAtomicExchange(ui2D, ic2D, value); iv.x += imageAtomicCompSwap(ii1D, ic1D, 18, 17); ui += imageAtomicCompSwap(ui2D, ic2D, 19u, value); iv.x += imageAtomicCompSwap(ii2DMS, ic2D, 2, 18, 17); ui += imageAtomicCompSwap(ui2DMSArray, ic3D, 3, 19u, value); imageStore(wo2D, ic2D, v); fragData = ui != iv.y ? v : vec4(0.0); } glslang-16.0.0/Test/spv.image.load-formatted.frag000066400000000000000000000043461506534232700216150ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_image_load_formatted : require layout(binding = 0) uniform image1D i1D; layout(binding = 1) uniform image2D i2D; layout(binding = 2) uniform image3D i3D; layout(binding = 3) uniform imageCube iCube; layout(binding = 4) uniform imageCubeArray iCubeArray; layout(binding = 5) uniform image2DRect i2DRect; layout(binding = 6) uniform image1DArray i1DArray; layout(binding = 7) uniform image2DArray i2DArray; layout(binding = 8) uniform imageBuffer iBuffer; layout(binding = 9) uniform image2DMS i2DMS; layout(binding = 10) uniform image2DMSArray i2DMSArray; flat in int ic1D; flat in ivec2 ic2D; flat in ivec3 ic3D; flat in ivec4 ic4D; writeonly layout(binding = 1) uniform image2D wo2D; flat in uint value; out vec4 fragData; void main() { ivec3 iv = ivec3(0); iv.x += imageSize(i1D); iv.xy += imageSize(i2D); iv.xyz += imageSize(i3D); iv.xy += imageSize(iCube); iv.xyz += imageSize(iCubeArray); iv.xy += imageSize(i2DRect); iv.xy += imageSize(i1DArray); iv.xyz += imageSize(i2DArray); iv.x += imageSize(iBuffer); iv.xy += imageSize(i2DMS); iv.xyz += imageSize(i2DMSArray); iv.x += imageSamples(i2DMS); iv.x += imageSamples(i2DMSArray); vec4 v = vec4(0.0); v += imageLoad(i1D, ic1D); imageStore(i1D, ic1D, v); v += imageLoad(i2D, ic2D); imageStore(i2D, ic2D, v); v += imageLoad(i3D, ic3D); imageStore(i3D, ic3D, v); v += imageLoad(iCube, ic3D); imageStore(iCube, ic3D, v); v += imageLoad(iCubeArray, ic3D); imageStore(iCubeArray, ic3D, v); v += imageLoad(i2DRect, ic2D); imageStore(i2DRect, ic2D, v); v += imageLoad(i1DArray, ic2D); imageStore(i1DArray, ic2D, v); v += imageLoad(i2DArray, ic3D); imageStore(i2DArray, ic3D, v); v += imageLoad(iBuffer, ic1D); imageStore(iBuffer, ic1D, v); v += imageLoad(i2DMS, ic2D, 1); imageStore(i2DMS, ic2D, 2, v); v += imageLoad(i2DMSArray, ic3D, 3); imageStore(i2DMSArray, ic3D, 4, v); imageStore(wo2D, ic2D, v); fragData = v; } glslang-16.0.0/Test/spv.imageAtomic64.comp000066400000000000000000000007701506534232700202370ustar00rootroot00000000000000#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_SemanticsRelease); } glslang-16.0.0/Test/spv.imageAtomic64.frag000066400000000000000000000121161506534232700202150ustar00rootroot00000000000000#version 450 core #extension GL_ARB_gpu_shader_int64: enable #extension GL_EXT_shader_image_int64: enable #extension GL_KHR_memory_scope_semantics: enable #extension GL_ARB_sparse_texture2: enable layout(binding = 0, r64i) uniform i64image1D i1D; layout(binding = 1, r64ui) uniform u64image2D u2D; layout(binding = 2, r64i) uniform i64image3D i3D; layout(binding = 3, r64ui) uniform u64imageCube uCube; layout(binding = 4, r64i) uniform i64imageBuffer iBuf; layout(binding = 5, r64ui) uniform u64image1DArray u1DArray; layout(binding = 6, r64i) uniform i64image2DArray i2DArray; layout(binding = 7, r64ui) uniform u64imageCubeArray uCubeArray; layout(binding = 8, r64i) uniform i64image2DRect i2DRect; layout(binding = 9, r64ui) uniform u64image2DMS u2DMS; layout(binding = 10, r64i) uniform i64image2DMSArray i2DMSArray; layout(binding = 11) buffer Buf { int64_t i64; uint64_t u64; i64vec4 i64v4; u64vec4 u64v4; ivec4 i32v4; }; void main() { i64 = imageAtomicAdd(i1D, i32v4.x, i64); i64 = imageAtomicMin(i3D, i32v4.xyz, i64); i64 = imageAtomicMax(iBuf, i32v4.x, i64); i64 = imageAtomicAnd(i2DArray, i32v4.xyz, i64); i64 = imageAtomicOr(i2DRect, i32v4.xy, i64); i64 = imageAtomicXor(i2DMSArray, i32v4.xyz, i32v4.w, i64); i64 = imageAtomicExchange(i1D, i32v4.x, i64); i64 = imageAtomicCompSwap(i3D, i32v4.xyz, i64, i64 + 1); i64 = imageAtomicAdd(i1D, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); i64 = imageAtomicMin(i3D, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); i64 = imageAtomicMax(iBuf, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); i64 = imageAtomicAnd(i2DArray, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); i64 = imageAtomicOr(i2DRect, i32v4.xy, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); i64 = imageAtomicXor(i2DMSArray, i32v4.xyz, i32v4.w, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); i64 = imageAtomicExchange(i1D, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); i64 = imageAtomicCompSwap(i3D, i32v4.xyz, i64, i64 + 1, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease, gl_StorageSemanticsImage, gl_SemanticsAcquire); i64 = imageAtomicLoad(iBuf, i32v4.x, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); imageAtomicStore(i2DArray, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); u64 = imageAtomicAdd(u2D, i32v4.xy, u64); u64 = imageAtomicMin(uCube, i32v4.xyz, u64); u64 = imageAtomicMax(u1DArray, i32v4.xy, u64); u64 = imageAtomicAnd(uCubeArray, i32v4.xyz, u64); u64 = imageAtomicOr(u2DMS, i32v4.xy, i32v4.z, u64); u64 = imageAtomicXor(u2D, i32v4.xy, u64); u64 = imageAtomicExchange(uCube, i32v4.xyz, u64); u64 = imageAtomicCompSwap(u1DArray, i32v4.xy, u64, u64 + 1); u64 = imageAtomicAdd(u2D, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); u64 = imageAtomicMin(uCube, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); u64 = imageAtomicMax(u1DArray, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); u64 = imageAtomicAnd(uCubeArray, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); u64 = imageAtomicOr(u2DMS, i32v4.xy, i32v4.z, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); u64 = imageAtomicXor(u2D, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); u64 = imageAtomicExchange(uCube, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease); u64 = imageAtomicCompSwap(u1DArray, i32v4.xy, u64, u64 + 1, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease, gl_StorageSemanticsImage, gl_SemanticsAcquire); u64 = imageAtomicLoad(uCubeArray, i32v4.xyz, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire); imageAtomicStore(u2DMS, i32v4.xy, i32v4.z, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease); i64v4 += imageLoad(i1D, i32v4.x); i64v4 += imageLoad(i3D, i32v4.xyz); i64v4 += imageLoad(iBuf, i32v4.x); i64v4 += imageLoad(i2DArray, i32v4.xyz); i64v4 += imageLoad(i2DRect, i32v4.xy); i64v4 += imageLoad(i2DMSArray, i32v4.xyz, i32v4.w); imageStore(u2D, i32v4.xy, u64v4); imageStore(uCube, i32v4.xyz, u64v4); imageStore(u1DArray, i32v4.xy, u64v4); imageStore(uCubeArray, i32v4.xyz, u64v4); imageStore(u2DMS, i32v4.xy, i32v4.z, u64v4); sparseImageLoadARB(i3D, i32v4.xyz, i64v4); sparseImageLoadARB(i2DArray, i32v4.xyz, i64v4); sparseImageLoadARB(i2DRect, i32v4.xy, i64v4); sparseImageLoadARB(u2D, i32v4.xy, u64v4); sparseImageLoadARB(uCube, i32v4.xyz, u64v4); sparseImageLoadARB(uCubeArray, i32v4.xyz, u64v4); }glslang-16.0.0/Test/spv.imageLoadStoreLod.frag000066400000000000000000000041151506534232700211620ustar00rootroot00000000000000#version 450 core #extension GL_AMD_shader_image_load_store_lod: enable #extension GL_ARB_gpu_shader_int64: enable #extension GL_EXT_shader_image_int64: enable layout(rgba32f, binding = 0) uniform image1D i1D; layout(rgba32f, binding = 1) uniform image2D i2D; layout(rgba32f, binding = 2) uniform image3D i3D; layout(rgba32i, binding = 3) uniform iimageCube iiCube; layout(rgba32i, binding = 4) uniform iimage1DArray ii1DArray; layout(rgba32ui, binding = 5) uniform uimage2DArray ui2DArray; layout(rgba32ui, binding = 6) uniform uimageCubeArray uiCubeArray; layout(location = 0) out vec4 fragColor; layout(r64i, binding = 7) uniform i64image1D i64i1D; layout(r64i, binding = 8) uniform i64image2D i64i2D; layout(r64i, binding = 9) uniform i64image3D i64i3D; layout(r64ui, binding = 10) uniform u64imageCube u64iCube; layout(r64ui, binding = 11) uniform u64image1DArray u64i1DArray; layout(r64ui, binding = 12) uniform u64image2DArray u64i2DArray; layout(r64ui, binding = 13) uniform u64imageCubeArray u64iCubeArray; layout(binding = 14) buffer Buf { i64vec4 i64v4; u64vec4 u64v4; }; void main() { const int c1 = 1; const ivec2 c2 = ivec2(2, 3); const ivec3 c3 = ivec3(4, 5, 6); const int lod = 3; vec4 f4 = vec4(0.0); f4 += imageLoadLodAMD(i1D, c1, lod); f4 += imageLoadLodAMD(i2D, c2, lod); f4 += imageLoadLodAMD(i3D, c3, lod); imageStoreLodAMD(iiCube, c3, lod, ivec4(f4)); imageStoreLodAMD(ii1DArray, c2, lod, ivec4(f4)); uvec4 u4; sparseImageLoadLodAMD(ui2DArray, c3, lod, u4); sparseImageLoadLodAMD(uiCubeArray, c3, lod, u4); fragColor = f4 + vec4(u4); i64v4 += imageLoadLodAMD(i64i1D, c1, lod); i64v4 += imageLoadLodAMD(i64i2D, c2, lod); i64v4 += imageLoadLodAMD(i64i3D, c3, lod); imageStoreLodAMD(u64iCube, c3, lod, u64v4); imageStoreLodAMD(u64i1DArray, c2, lod, u64v4); sparseImageLoadLodAMD(u64i2DArray, c3, lod, u64v4); sparseImageLoadLodAMD(u64iCubeArray, c3, lod, u64v4); }glslang-16.0.0/Test/spv.int16.amd.frag000066400000000000000000000161351506534232700173320ustar00rootroot00000000000000#version 450 core #extension GL_ARB_gpu_shader_int64: enable #extension GL_AMD_gpu_shader_half_float: enable #extension GL_AMD_gpu_shader_int16: enable layout(binding = 0) uniform Uniforms { uint i; }; // int16/uint16 in block layout(std140, binding = 1) uniform Block { i16vec3 i16v; uint16_t u16; } block; // int16/uint16 for input layout(location = 0) in flat u16vec3 iu16v; layout(location = 1) in flat int16_t ii16; void literal() { const int16_t i16c[3] = { 0x111S, // Hex -2s, // Dec 0400s, // Oct }; const uint16_t u16c[] = { 0xFFFFus, // Hex 65535US, // Dec 0177777us, // Oct }; uint16_t u16 = i16c[i] + u16c[i]; } void operators() { u16vec3 u16v; int16_t i16; uint16_t u16; int i; uint u; bool b; // Unary u16v++; i16--; ++i16; --u16v; u16v = ~u16v; i16 = +i16; u16v = -u16v; // Arithmetic u16 += i16; u16v -= u16v; i16 *= i16; u16v /= u16v; u16v %= i16; u16v = u16v + u16v; u16 = i16 - u16; u16v = u16v * i16; i16 = i16 * i16; i16 = i16 % i16; // Shift u16v <<= i16; i16 >>= u16v.y; i16 = i16 << u16v.z; u16v = u16v << i16; // Relational b = (u16v.x != i16); b = (i16 == u16v.x); b = (u16v.x > u16v.y); b = (i16 < u); b = (u16v.y >= u16v.x); b = (i16 <= i); // Bitwise u16v |= i16; u16 = i16 | u16; i16 &= i16; u16v = u16v & u16v; u16v ^= i16; u16v = u16v ^ i16; } void typeCast() { bvec2 bv; ivec2 iv; uvec2 uv; vec2 fv; dvec2 dv; f16vec2 f16v; i64vec2 i64v; u64vec2 u64v; i16vec2 i16v; u16vec2 u16v; i16v = i16vec2(bv); // bool -> int16 u16v = u16vec2(bv); // bool -> uint16 bv = bvec2(i16v); // int16 -> bool bv = bvec2(u16v); // uint16 -> bool i16v = i16vec2(iv); // int -> int16 u16v = u16vec2(iv); // int -> uint16 iv = i16v; // int16 -> int iv = ivec2(u16v); // uint16 -> int i16v = i16vec2(uv); // uint -> int16 u16v = u16vec2(uv); // uint -> uint16 uv = i16v; // int16 -> uint uv = u16v; // uint16 -> uint i16v = i16vec2(fv); // float -> int16 u16v = u16vec2(fv); // float -> uint16 fv = i16v; // int16 -> float fv = u16v; // uint16 -> float i16v = i16vec2(dv); // double -> int16 u16v = u16vec2(dv); // double -> uint16 dv = i16v; // int16 -> double dv = u16v; // uint16 -> double i16v = i16vec2(f16v); // float16 -> int16 u16v = u16vec2(f16v); // float16 -> uint16 f16v = i16v; // int16 -> float16 f16v = u16v; // uint16 -> float16 i16v = i16vec2(i64v); // int64 -> int16 u16v = u16vec2(i64v); // int64 -> uint16 i64v = i16v; // int16 -> int64 i64v = i64vec2(u16v); // uint16 -> int64 i16v = i16vec2(u64v); // uint64 -> int16 u16v = u16vec2(u64v); // uint64 -> uint16 u64v = i16v; // int16 -> uint64 u64v = u16v; // uint16 -> uint64 i16v = i16vec2(u16v); // uint16 -> int16 u16v = i16v; // int16 -> uint16 } void builtinFuncs() { i16vec2 i16v; u16vec3 u16v; f16vec3 f16v; bvec3 bv; int16_t i16; uint16_t u16; // abs() i16v = abs(i16v); // sign() i16v = sign(i16v); // min() i16v = min(i16v, i16); i16v = min(i16v, i16vec2(-1s)); u16v = min(u16v, u16); u16v = min(u16v, u16vec3(0us)); // max() i16v = max(i16v, i16); i16v = max(i16v, i16vec2(-1s)); u16v = max(u16v, u16); u16v = max(u16v, u16vec3(0us)); // clamp() i16v = clamp(i16v, -i16, i16); i16v = clamp(i16v, -i16v, i16v); u16v = clamp(u16v, -u16, u16); u16v = clamp(u16v, -u16v, u16v); // mix() i16 = mix(i16v.x, i16v.y, true); i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false)); u16 = mix(u16v.x, u16v.y, true); u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false)); // frexp() i16vec3 exp; f16v = frexp(f16v, exp); // ldexp() f16v = ldexp(f16v, exp); // float16BitsToInt16() i16v = float16BitsToInt16(f16v.xy); // float16BitsToUint16() u16v.x = float16BitsToUint16(f16v.z); // int16BitsToFloat16() f16v.xy = int16BitsToFloat16(i16v); // uint16BitsToFloat16() f16v = uint16BitsToFloat16(u16v); // packInt2x16() int packi = packInt2x16(i16v); // unpackInt2x16() i16v = unpackInt2x16(packi); // packUint2x16() uint packu = packUint2x16(u16v.xy); // unpackUint2x16() u16v.xy = unpackUint2x16(packu); // packInt4x16() int64_t packi64 = packInt4x16(i16vec4(i16)); // unpackInt4x16() i16v = unpackInt4x16(packi64).xy; // packUint4x16() uint64_t packu64 = packUint4x16(u16vec4(u16)); // unpackUint4x16() u16v = unpackUint4x16(packu64).xyz; // lessThan() bv = lessThan(u16v, u16vec3(u16)); bv.xy = lessThan(i16v, i16vec2(i16)); // lessThanEqual() bv = lessThanEqual(u16v, u16vec3(u16)); bv.xy = lessThanEqual(i16v, i16vec2(i16)); // greaterThan() bv = greaterThan(u16v, u16vec3(u16)); bv.xy = greaterThan(i16v, i16vec2(i16)); // greaterThanEqual() bv = greaterThanEqual(u16v, u16vec3(u16)); bv.xy = greaterThanEqual(i16v, i16vec2(i16)); // equal() bv = equal(u16v, u16vec3(u16)); bv.xy = equal(i16v, i16vec2(i16)); // notEqual() bv = notEqual(u16v, u16vec3(u16)); bv.xy = notEqual(i16v, i16vec2(i16)); } // Type conversion for specialization constant layout(constant_id = 100) const int64_t si64 = -10L; layout(constant_id = 101) const uint64_t su64 = 20UL; layout(constant_id = 102) const int si = -5; layout(constant_id = 103) const uint su = 4; layout(constant_id = 104) const bool sb = true; layout(constant_id = 105) const int16_t si16 = -5S; layout(constant_id = 106) const uint16_t su16 = 4US; // bool <-> int16/uint16 const bool i16_to_b = bool(si16); const bool u16_to_b = bool(su16); const int16_t b_to_i16 = int16_t(sb); const uint16_t b_to_u16 = uint16_t(sb); // int <-> int16/uint16 const int i16_to_i = int(si16); const int u16_to_i = int(su16); const int16_t i_to_i16 = int16_t(si); const uint16_t i_to_u16 = uint16_t(si); // uint <-> int16/uint16 const uint i16_to_u = uint(si16); const uint u16_to_u = uint(su16); const int16_t u_to_i16 = int16_t(su); const uint16_t u_to_u16 = uint16_t(su); // int64 <-> int16/uint16 const int64_t i16_to_i64 = int64_t(si16); const int64_t u16_to_i64 = int64_t(su16); const int16_t i64_to_i16 = int16_t(si64); const uint16_t i64_to_u16 = uint16_t(si64); // uint64 <-> int16/uint16 const uint64_t i16_to_u64 = uint64_t(si16); const uint64_t u16_to_u64 = uint64_t(su16); const int16_t u64_to_i16 = int16_t(su64); const uint16_t u64_to_u16 = uint16_t(su64); // int16 <-> uint16 const uint16_t i16_to_u16 = uint16_t(si16); const int16_t u16_to_i16 = int16_t(su16); void main() { literal(); operators(); typeCast(); builtinFuncs(); } glslang-16.0.0/Test/spv.int16.frag000066400000000000000000000144541506534232700165740ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: require #extension GL_EXT_shader_explicit_arithmetic_types_int16: require #extension GL_EXT_shader_explicit_arithmetic_types_int32: require #extension GL_EXT_shader_explicit_arithmetic_types_int64: require #extension GL_EXT_shader_explicit_arithmetic_types_float16: require #extension GL_EXT_shader_explicit_arithmetic_types_float32: require #extension GL_EXT_shader_explicit_arithmetic_types_float64: require layout(binding = 0) uniform Uniforms { uint index; }; layout(std140, binding = 1) uniform Block { int16_t i16; i16vec2 i16v2; i16vec3 i16v3; i16vec4 i16v4; uint16_t u16; u16vec2 u16v2; u16vec3 u16v3; u16vec4 u16v4; } block; void main() { } void literal() { const int16_t i16Const[3] = { int16_t(-0x1111), // Hex int16_t(-1), // Dec int16_t(040000), // Oct }; int16_t i16 = i16Const[index]; const uint16_t u16Const[] = { uint16_t(0xFFFF), // Hex uint16_t(65535), // Dec uint16_t(077777), // Oct }; uint16_t u16 = u16Const[index]; } void typeCast16() { i8vec2 i8v; u8vec2 u8v; i16vec2 i16v; u16vec2 u16v; i32vec2 i32v; u32vec2 u32v; i64vec2 i64v; u64vec2 u64v; f16vec2 f16v; f32vec2 f32v; f64vec2 f64v; bvec2 bv; i32v = i16v; // int16_t -> int32_t i32v = u16v; // uint16_t -> int32_t u16v = i16v; // int16_t -> uint16_t u32v = i16v; // int16_t -> uint32_t i64v = i16v; // int16_t -> int64_t u64v = i16v; // int16_t -> uint64_t u32v = u16v; // uint16_t -> uint32_t i64v = u16v; // uint16_t -> int64_t u64v = u16v; // uint16_t -> uint64_t f16v = i16v; // int16_t -> float16_t f32v = i16v; // int16_t -> float32_t f64v = i16v; // int16_t -> float64_t f16v = u16v; // uint16_t -> float16_t f32v = u16v; // uint16_t -> float32_t f64v = u16v; // uint16_t -> float64_t i32v = i32vec2(i16v); // int16_t -> int32_t i32v = i32vec2(u16v); // uint16_t -> int32_t u16v = u16vec2(i16v); // int16_t -> uint16_t u32v = u32vec2(i16v); // int16_t -> uint32_t i64v = i64vec2(i16v); // int16_t -> int64_t u64v = i64vec2(i16v); // int16_t -> uint64_t u32v = u32vec2(u16v); // uint16_t -> uint32_t i64v = i64vec2(u16v); // uint16_t -> int64_t u64v = i64vec2(u16v); // uint16_t -> uint64_t f16v = f16vec2(i16v); // int16_t -> float16_t f32v = f32vec2(i16v); // int16_t -> float32_t f64v = f64vec2(i16v); // int16_t -> float64_t f16v = f16vec2(u16v); // uint16_t -> float16_t f32v = f32vec2(u16v); // uint16_t -> float32_t f64v = f64vec2(u16v); // uint16_t -> float64_t i8v = i8vec2(i16v); // int16_t -> int8_t i8v = i8vec2(u16v); // uint16_t -> int8_t u8v = u8vec2(i16v); // int16_t -> uint8_t u8v = u8vec2(u16v); // uint16_t -> uint8_t i16v = u8vec2(u16v); // uint16_t -> int16_t i16v = i16vec2(bv); // bool -> int16 u16v = u16vec2(bv); // bool -> uint16 bv = bvec2(i16v); // int16 -> bool bv = bvec2(u16v); // uint16 -> bool } void operators() { u16vec3 u16v; int16_t i16; uvec3 uv; int32_t i; int64_t i64; bool b; float f; float arr[4] = {1.0, 2.0, 3.0, 4.0}; // Unary u16v++; i16--; ++i16; --u16v; u16v = ~u16v; i16 = +i16; u16v = -u16v; // Arithmetic i16 += i16; u16v -= u16v; i *= i16; uv /= u16v; uv %= i16; uv = u16v + uv; i64 = i16 - i64; uv = u16v * uv; i64 = i16 * i64; i = i16 % i; // Shift u16v <<= i16; i16 >>= u16v.y; i16 = i16 << u16v.z; uv = u16v << i; // Relational b = (u16v.x != i16); b = (i16 == u16v.x); b = (u16v.x > uv.y); b = (i16 < i); b = (u16v.y >= uv.x); b = (i16 <= i); // Bitwise uv |= i16; i = i16 | i; i64 &= i16; uv = u16v & uv; uv ^= i16; u16v = u16v ^ i16; // Index f = arr[i16]; } void builtinFuncs() { i16vec2 i16v; i16vec4 i16v4; u16vec3 u16v; u16vec2 u16v2; u16vec4 u16v4; bvec3 bv; int16_t i16; uint16_t u16; int32_t i32; uint32_t u32; int64_t i64; uint64_t u64; // abs() i16v = abs(i16v); // sign() i16 = sign(i16); // min() i16v = min(i16v, i16); i16v = min(i16v, i16vec2(-1)); u16v = min(u16v, u16); u16v = min(u16v, u16vec3(0)); // max() i16v = max(i16v, i16); i16v = max(i16v, i16vec2(-1)); u16v = max(u16v, u16); u16v = max(u16v, u16vec3(0)); // clamp() i16v = clamp(i16v, -i16, i16); i16v = clamp(i16v, -i16v, i16v); u16v = clamp(u16v, -u16, u16); u16v = clamp(u16v, -u16v, u16v); // mix() i16 = mix(i16v.x, i16v.y, true); i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false)); u16 = mix(u16v.x, u16v.y, true); u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false)); //pack i32 = pack32(i16v); i64 = pack64(i16v4); u32 = pack32(u16v2); u64 = pack64(u16v4); i16v = unpack16(i32); i16v4 = unpack16(i64); u16v2 = unpack16(u32); u16v4 = unpack16(u64); // lessThan() bv = lessThan(u16v, u16vec3(u16)); bv.xy = lessThan(i16v, i16vec2(i16)); // lessThanEqual() bv = lessThanEqual(u16v, u16vec3(u16)); bv.xy = lessThanEqual(i16v, i16vec2(i16)); // greaterThan() bv = greaterThan(u16v, u16vec3(u16)); bv.xy = greaterThan(i16v, i16vec2(i16)); // greaterThanEqual() bv = greaterThanEqual(u16v, u16vec3(u16)); bv.xy = greaterThanEqual(i16v, i16vec2(i16)); // equal() bv = equal(u16v, u16vec3(u16)); bv.xy = equal(i16v, i16vec2(i16)); // notEqual() bv = notEqual(u16v, u16vec3(u16)); bv.xy = notEqual(i16v, i16vec2(i16)); } // Type conversion for specialization constant layout(constant_id = 100) const int16_t si16 = int16_t(-10); layout(constant_id = 101) const uint16_t su16 = uint16_t(20); glslang-16.0.0/Test/spv.int32.frag000066400000000000000000000143451506534232700165710ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: require #extension GL_EXT_shader_explicit_arithmetic_types_int16: require #extension GL_EXT_shader_explicit_arithmetic_types_int32: require #extension GL_EXT_shader_explicit_arithmetic_types_int64: require #extension GL_EXT_shader_explicit_arithmetic_types_float16: require #extension GL_EXT_shader_explicit_arithmetic_types_float32: require #extension GL_EXT_shader_explicit_arithmetic_types_float64: require layout(binding = 0) uniform Uniforms { uint index; }; layout(std140, binding = 1) uniform Block { int32_t i32; i32vec2 i32v2; i32vec3 i32v3; i32vec4 i32v4; uint32_t u32; u32vec2 u32v2; u32vec3 u32v3; u32vec4 u32v4; } block; void main() { } void literal() { const int32_t i32Const[3] = { -0x11111111, // Hex -1, // Dec 04000000000, // Oct }; int32_t i32 = i32Const[index]; const uint32_t u32Const[] = { 0xFFFFFFFF, // Hex 4294967295, // Dec 017777777777, // Oct }; uint32_t u32 = u32Const[index]; } void typeCast32() { i8vec2 i8v; u8vec2 u8v; i16vec2 i16v; u16vec2 u16v; i32vec2 i32v; u32vec2 u32v; i64vec2 i64v; u64vec2 u64v; f16vec2 f16v; f32vec2 f32v; f64vec2 f64v; bvec2 bv; u32v = i32v; // int32_t -> uint32_t i64v = i32v; // int32_t -> int64_t u64v = i32v; // int32_t -> uint64_t i64v = u32v; // uint32_t -> int64_t u64v = u32v; // uint32_t -> uint64_t f32v = i32v; // int32_t -> float32_t f64v = i32v; // int32_t -> float64_t f32v = u32v; // uint32_t -> float32_t f64v = u32v; // uint32_t -> float64_t i8v = i8vec2(i32v); // int32_t -> int8_t i8v = i8vec2(u32v); // uint32_t -> int8_t i16v = i16vec2(i32v); // int32_t -> int16_t i16v = i16vec2(u32v); // uint32_t -> int16_t i32v = i32vec2(i32v); // int32_t -> int32_t i32v = i32vec2(u32v); // uint32_t -> int32_t i64v = i64vec2(i32v); // int32_t -> int64_t i64v = i64vec2(u32v); // uint32_t -> int64_t u8v = u8vec2(i32v); // int32_t -> uint8_t u8v = u8vec2(u32v); // uint32_t -> uint8_t u16v = u16vec2(i32v); // int32_t -> uint16_t u16v = u16vec2(u32v); // uint32_t -> uint16_t u32v = u32vec2(i32v); // int32_t -> uint32_t u32v = u32vec2(u32v); // uint32_t -> uint32_t u64v = u64vec2(i32v); // int32_t -> uint64_t u64v = u64vec2(u32v); // uint32_t -> uint64_t f16v = f16vec2(i32v); // int32_t -> float16_t f32v = f32vec2(i32v); // int32_t -> float32_t f64v = f64vec2(i32v); // int32_t -> float64_t f16v = f16vec2(u32v); // uint32_t -> float16_t f32v = f32vec2(u32v); // uint32_t -> float32_t f64v = f64vec2(u32v); // uint32_t -> float64_t i32v = i32vec2(bv); // bool -> int32 u32v = u32vec2(bv); // bool -> uint32 bv = bvec2(i32v); // int32 -> bool bv = bvec2(u32v); // uint32 -> bool } void operators() { u32vec3 u32v; int32_t i32; uvec3 uv; int32_t i; int64_t i64; bool b; // Unary u32v++; i32--; ++i32; --u32v; u32v = ~u32v; i32 = +i32; u32v = -u32v; // Arithmetic i32 += i32; u32v -= u32v; i *= i32; uv /= u32v; uv %= i32; uv = u32v + uv; i64 = i32 - i64; uv = u32v * uv; i64 = i32 * i64; i = i32 % i; // Shift u32v <<= i32; i32 >>= u32v.y; i64 = i64 << u32v.z; uv = u32v << i; // Relational b = (u32v.x != i32); b = (i32 == u32v.x); b = (u32v.x > uv.y); b = (i32 < i); b = (u32v.y >= uv.x); b = (i32 <= i); // Bitwise uv |= i32; i = i32 | i; i64 &= i32; uv = u32v & uv; uv ^= i32; u32v = u32v ^ i32; } void builtinFuncs() { i32vec2 i32v; i32vec4 i32v4; u32vec3 u32v; u32vec2 u32v2; u32vec4 u32v4; bvec3 bv; int32_t i32; uint32_t u32; int64_t i64; uint64_t u64; i8vec4 i8v4; u8vec4 u8v4; i16vec2 i16v2; u16vec2 u16v2; // abs() i32v = abs(i32v); // sign() i32 = sign(i32); // min() i32v = min(i32v, i32); i32v = min(i32v, i32vec2(-1)); u32v = min(u32v, u32); u32v = min(u32v, u32vec3(0)); // max() i32v = max(i32v, i32); i32v = max(i32v, i32vec2(-1)); u32v = max(u32v, u32); u32v = max(u32v, u32vec3(0)); // clamp() i32v = clamp(i32v, -i32, i32); i32v = clamp(i32v, -i32v, i32v); u32v = clamp(u32v, -u32, u32); u32v = clamp(u32v, -u32v, u32v); // mix() i32 = mix(i32v.x, i32v.y, true); i32v = mix(i32vec2(i32), i32vec2(-i32), bvec2(false)); u32 = mix(u32v.x, u32v.y, true); u32v = mix(u32vec3(u32), u32vec3(-u32), bvec3(false)); //pack i32 = pack32(i8v4); i32 = pack32(i16v2); u32 = pack32(u8v4); u32 = pack32(u16v2); i32v = unpack32(i64); u32v2 = unpack32(u64); // lessThan() bv = lessThan(u32v, u32vec3(u32)); bv.xy = lessThan(i32v, i32vec2(i32)); // lessThanEqual() bv = lessThanEqual(u32v, u32vec3(u32)); bv.xy = lessThanEqual(i32v, i32vec2(i32)); // greaterThan() bv = greaterThan(u32v, u32vec3(u32)); bv.xy = greaterThan(i32v, i32vec2(i32)); // greaterThanEqual() bv = greaterThanEqual(u32v, u32vec3(u32)); bv.xy = greaterThanEqual(i32v, i32vec2(i32)); // equal() bv = equal(u32v, u32vec3(u32)); bv.xy = equal(i32v, i32vec2(i32)); // notEqual() bv = notEqual(u32v, u32vec3(u32)); bv.xy = notEqual(i32v, i32vec2(i32)); } // Type conversion for specialization constant layout(constant_id = 100) const int32_t si32 = -10; layout(constant_id = 101) const uint32_t su32 = 20U; layout(constant_id = 102) const int si = -5; layout(constant_id = 103) const uint su = 4; layout(constant_id = 104) const bool sb = true; #define UINT32_MAX 4294967295u uint32_t u32Max = UINT32_MAX; glslang-16.0.0/Test/spv.int64.frag000066400000000000000000000141041506534232700165670ustar00rootroot00000000000000#version 450 #extension GL_ARB_gpu_shader_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: require layout(binding = 0) uniform Uniforms { uint index; }; layout(std140, binding = 1) uniform Block { i64vec3 i64v; uint64_t u64; } block; void main() { } void literal() { const int64_t i64Const[3] = { -0x1111111111111111l, // Hex -1l, // Dec 040000000000l, // Oct }; int64_t i64 = i64Const[index]; const uint64_t u64Const[] = { 0xFFFFFFFFFFFFFFFFul, // Hex 4294967296UL, // Dec 077777777777ul, // Oct }; uint64_t u64 = u64Const[index]; } void typeCast() { bvec2 bv; ivec2 iv; uvec2 uv; vec2 fv; dvec2 dv; i64vec2 i64v; u64vec2 u64v; i64v = i64vec2(bv); // bool -> int64 u64v = u64vec2(bv); // bool -> uint64 i64v = iv; // int -> int64 iv = ivec2(i64v); // int64 -> int u64v = uv; // uint -> uint64 uv = uvec2(u64v); // uint64 -> uint fv = vec2(i64v); // int64 -> float dv = i64v; // int64 -> double fv = vec2(u64v); // uint64 -> float dv = u64v; // uint64 -> double i64v = i64vec2(fv); // float -> int64 i64v = i64vec2(dv); // double -> int64 u64v = u64vec2(fv); // float -> uint64 u64v = u64vec2(dv); // double -> uint64 bv = bvec2(i64v); // int64 -> bool bv = bvec2(u64v); // uint64 -> bool u64v = i64v; // int64 -> uint64 i64v = i64vec2(u64v); // uint64 -> int64 uv = uvec2(i64v); // int64 -> uint i64v = i64vec2(uv); // uint -> int64 iv = ivec2(u64v); // uint64 -> int u64v = iv; // int -> uint64 } void operators() { u64vec3 u64v; int64_t i64; uvec3 uv; int i; bool b; // Unary u64v++; i64--; ++i64; --u64v; u64v = ~u64v; i64 = +i64; u64v = -u64v; // Arithmetic i64 += i64; u64v -= u64v; i64 *= i; u64v /= uv; u64v %= i; u64v = u64v + uv; i64 = i64 - i; u64v = u64v * uv; i64 = i64 * i; i64 = i64 % i; // Shift u64v = u64v << i; i64 = i64 >> uv.y; u64v <<= i; i64 >>= uv.y; i64 = i64 << u64v.z; u64v = u64v << i64; // Relational b = (u64v.x != i64); b = (i64 == u64v.x); b = (u64v.x > uv.y); b = (i64 < i); b = (u64v.y >= uv.x); b = (i64 <= i); // Bitwise u64v |= i; i64 = i64 | i; i64 &= i; u64v = u64v & uv; u64v ^= i64; u64v = u64v ^ i64; } void builtinFuncs() { i64vec2 i64v; u64vec3 u64v; dvec3 dv; bvec3 bv; int64_t i64; uint64_t u64; // abs() i64v = abs(i64v); // sign() i64 = sign(i64); // min() i64v = min(i64v, i64); i64v = min(i64v, i64vec2(-1)); u64v = min(u64v, u64); u64v = min(u64v, u64vec3(0)); // max() i64v = max(i64v, i64); i64v = max(i64v, i64vec2(-1)); u64v = max(u64v, u64); u64v = max(u64v, u64vec3(0)); // clamp() i64v = clamp(i64v, -i64, i64); i64v = clamp(i64v, -i64v, i64v); u64v = clamp(u64v, -u64, u64); u64v = clamp(u64v, -u64v, u64v); // mix() i64 = mix(i64v.x, i64v.y, true); i64v = mix(i64vec2(i64), i64vec2(-i64), bvec2(false)); u64 = mix(u64v.x, u64v.y, true); u64v = mix(u64vec3(u64), u64vec3(-u64), bvec3(false)); // doubleBitsToInt64() i64v = doubleBitsToInt64(dv.xy); // doubleBitsToUint64() u64v.x = doubleBitsToUint64(dv.z); // int64BitsToDouble() dv.xy = int64BitsToDouble(i64v); // uint64BitsToDouble() dv = uint64BitsToDouble(u64v); // packInt2x32() i64 = packInt2x32(ivec2(1, 2)); // unpackInt2x32() ivec2 iv = unpackInt2x32(i64); // packUint2x32() u64 = packUint2x32(uvec2(2, 3)); // unpackUint2x32() uvec2 uv = unpackUint2x32(u64); // lessThan() bv = lessThan(u64v, u64vec3(u64)); bv.xy = lessThan(i64v, i64vec2(i64)); // lessThanEqual() bv = lessThanEqual(u64v, u64vec3(u64)); bv.xy = lessThanEqual(i64v, i64vec2(i64)); // greaterThan() bv = greaterThan(u64v, u64vec3(u64)); bv.xy = greaterThan(i64v, i64vec2(i64)); // greaterThanEqual() bv = greaterThanEqual(u64v, u64vec3(u64)); bv.xy = greaterThanEqual(i64v, i64vec2(i64)); // equal() bv = equal(u64v, u64vec3(u64)); bv.xy = equal(i64v, i64vec2(i64)); // notEqual() bv = notEqual(u64v, u64vec3(u64)); bv.xy = notEqual(i64v, i64vec2(i64)); // findLSB() i64 = findLSB(u64); i64v = findLSB(u64vec2(u64)); // bitCount() i64 = bitCount(u64); i64v = bitCount(u64vec2(u64)); } // Type conversion for specialization constant layout(constant_id = 100) const int64_t si64 = -10L; layout(constant_id = 101) const uint64_t su64 = 20UL; layout(constant_id = 102) const int si = -5; layout(constant_id = 103) const uint su = 4; layout(constant_id = 104) const bool sb = true; layout(constant_id = 105) const uint64_t su64inc = su64 + 1UL; // bool <-> int64/uint64 const bool i64_to_b = bool(si64); const bool u64_to_b = bool(su64); const int64_t b_to_i64 = int64_t(sb); const uint64_t b_to_u64 = uint64_t(sb); // int <-> int64 const int i64_to_i = int(si64); const int64_t i_to_i64 = int64_t(si); // uint <-> uint64 const uint u64_to_u = uint(su64); const uint64_t u_to_u64 = uint64_t(su); // int64 <-> uint64 const int64_t u64_to_i64 = int64_t(su64); const uint64_t i64_to_u64 = uint64_t(si64); // int <-> uint64 const int u64_to_i = int(su64); const uint64_t i_to_u64 = uint64_t(si); // uint <-> int64 const uint i64_to_u = uint(si64); const int64_t u_to_i64 = int64_t(su); #define UINT64_MAX 18446744073709551615ul uint64_t u64Max = UINT64_MAX; glslang-16.0.0/Test/spv.int8.frag000066400000000000000000000140231506534232700165050ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: require #extension GL_EXT_shader_explicit_arithmetic_types_int16: require #extension GL_EXT_shader_explicit_arithmetic_types_int32: require #extension GL_EXT_shader_explicit_arithmetic_types_int64: require #extension GL_EXT_shader_explicit_arithmetic_types_float16: require #extension GL_EXT_shader_explicit_arithmetic_types_float32: require #extension GL_EXT_shader_explicit_arithmetic_types_float64: require layout(binding = 0) uniform Uniforms { uint index; }; layout(std140, binding = 1) uniform Block { int8_t i8; i8vec2 i8v2; i8vec3 i8v3; i8vec4 i8v4; uint8_t u8; u8vec2 u8v2; u8vec3 u8v3; u8vec4 u8v4; } block; void main() { } void literal() { const int8_t i8Const[3] = { int8_t(-0x11), // Hex int8_t(-1), // Dec int8_t(0400), // Oct }; int8_t i8 = i8Const[index]; const uint8_t u8Const[] = { uint8_t(0xFF), // Hex uint8_t(255), // Dec uint8_t(0177), // Oct }; uint8_t u8 = u8Const[index]; } void typeCast8() { i8vec2 i8v; u8vec2 u8v; i16vec2 i16v; u16vec2 u16v; i32vec2 i32v; u32vec2 u32v; i64vec2 i64v; u64vec2 u64v; f16vec2 f16v; f32vec2 f32v; f64vec2 f64v; bvec2 bv; u8v = i8v; // int8_t -> uint8_t i16v = i8v; // int8_t -> int16_t i16v = u8v; // uint8_t -> int16_t i32v = i8v; // int8_t -> int32_t i32v = u8v; // uint8_t -> int32_t u32v = i8v; // int8_t -> uint32_t i64v = i8v; // int8_t -> int64_t u64v = i8v; // int8_t -> uint64_t u32v = u8v; // uint8_t -> uint32_t i64v = u8v; // uint8_t -> int64_t u64v = u8v; // uint8_t -> uint64_t f16v = i8v; // int8_t -> float16_t f32v = i8v; // int8_t -> float32_t f64v = i8v; // int8_t -> float64_t f16v = u8v; // uint8_t -> float16_t f32v = u8v; // uint8_t -> float32_t f64v = u8v; // uint8_t -> float64_t i8v = i8vec2(u8v); // uint8_t -> int8_t i16v = i16vec2(i8v); // int8_t -> int16_t i16v = i16vec2(u8v); // uint8_t -> int16_t i32v = i32vec2(i8v); // int8_t -> int32_t i32v = i32vec2(u8v); // uint8_t -> int32_t i64v = i64vec2(i8v); // int8_t -> int64_t u64v = i64vec2(i8v); // int8_t -> uint64_t u16v = u16vec2(i8v); // int8_t -> uint16_t u16v = u16vec2(u8v); // uint8_t -> uint16_t u32v = u32vec2(u8v); // uint8_t -> uint32_t i64v = i64vec2(u8v); // uint8_t -> int64_t u64v = i64vec2(u8v); // uint8_t -> uint64_t f16v = f16vec2(i8v); // int8_t -> float16_t f32v = f32vec2(i8v); // int8_t -> float32_t f64v = f64vec2(i8v); // int8_t -> float64_t f16v = f16vec2(u8v); // uint8_t -> float16_t f32v = f32vec2(u8v); // uint8_t -> float32_t f64v = f64vec2(u8v); // uint8_t -> float64_t i8v = i8vec2(bv); // bool -> int8 u8v = u8vec2(bv); // bool -> uint8 bv = bvec2(i8v); // int8 -> bool bv = bvec2(u8v); // uint8 -> bool } void operators() { u8vec3 u8v; int8_t i8; uvec3 uv; int32_t i; int16_t i16; bool b; float arr[4] = {1.0, 2.0, 3.0, 4.0}; float f; // Unary u8v++; i8--; ++i8; --u8v; u8v = ~u8v; i8 = +i8; u8v = -u8v; // Arithmetic i8 += i8; u8v -= u8v; i *= i8; uv /= u8v; uv %= i8; uv = u8v + uv; i16 = i8 - i16; uv = u8v * uv; i16 = i8 * i16; i = i8 % i; // Shift u8v <<= i8; i8 >>= u8v.y; i8 = i8 << u8v.z; u8v = u8v << i8; // Relational b = (u8v.x != i8); b = (i8 == u8v.x); b = (u8v.x > uv.y); b = (i8 < i); b = (u8v.y >= uv.x); b = (i8 <= i); // Bitwise uv |= i8; i = i8 | i; i16 &= i8; uv = u8v & uv; uv ^= i8; u8v = u8v ^ i8; // Index f = arr[i8]; } void builtinFuncs() { i8vec2 i8v; i8vec4 i8v4; u8vec3 u8v; u8vec2 u8v2; u8vec4 u8v4; bvec3 bv; int16_t i16; int32_t i32; uint16_t u16; uint32_t u32; int8_t i8; uint8_t u8; // abs() i8v = abs(i8v); // sign() i8 = sign(i8); // min() i8v = min(i8v, i8); i8v = min(i8v, i8vec2(-1)); u8v = min(u8v, u8); u8v = min(u8v, u8vec3(0)); // max() i8v = max(i8v, i8); i8v = max(i8v, i8vec2(-1)); u8v = max(u8v, u8); u8v = max(u8v, u8vec3(0)); // clamp() i8v = clamp(i8v, -i8, i8); i8v = clamp(i8v, -i8v, i8v); u8v = clamp(u8v, -u8, u8); u8v = clamp(u8v, -u8v, u8v); // mix() i8 = mix(i8v.x, i8v.y, true); i8v = mix(i8vec2(i8), i8vec2(-i8), bvec2(false)); u8 = mix(u8v.x, u8v.y, true); u8v = mix(u8vec3(u8), u8vec3(-u8), bvec3(false)); //pack i16 = pack16(i8v); i32 = pack32(i8v4); u16 = pack16(u8v2); u32 = pack32(u8v4); i8v = unpack8(i16); i8v4 = unpack8(i32); u8v2 = unpack8(u16); u8v4 = unpack8(u32); // lessThan() bv = lessThan(u8v, u8vec3(u8)); bv.xy = lessThan(i8v, i8vec2(i8)); // lessThanEqual() bv = lessThanEqual(u8v, u8vec3(u8)); bv.xy = lessThanEqual(i8v, i8vec2(i8)); // greaterThan() bv = greaterThan(u8v, u8vec3(u8)); bv.xy = greaterThan(i8v, i8vec2(i8)); // greaterThanEqual() bv = greaterThanEqual(u8v, u8vec3(u8)); bv.xy = greaterThanEqual(i8v, i8vec2(i8)); // equal() bv = equal(u8v, u8vec3(u8)); bv.xy = equal(i8v, i8vec2(i8)); // notEqual() bv = notEqual(u8v, u8vec3(u8)); bv.xy = notEqual(i8v, i8vec2(i8)); } // Type conversion for specialization constant layout(constant_id = 100) const int8_t si8 = int8_t(-10); layout(constant_id = 101) const uint8_t su8 = uint8_t(20); glslang-16.0.0/Test/spv.intOps.vert000066400000000000000000000027171506534232700171470ustar00rootroot00000000000000#version 310 es in uint u1; in uvec2 u2; in uvec3 u3; in uvec4 u4; in float v1; in vec2 v2; in vec3 v3; in vec4 v4; in int i1; in ivec2 i2; in ivec3 i3; in ivec4 i4; out uvec4 uout; out ivec4 iout; out vec4 fout; void main() { iout = ivec4(0); uout = uvec4(0); fout = vec4(0.0); uvec2 u2out; uout.xy += uaddCarry(u2, u2, u2out); uout.xy += u2out; uint u1out; uout.x += usubBorrow(u1, u1, u1out); uout.x += u1out; uvec4 u4outHi, u4outLow; umulExtended(u4, u4, u4outHi, u4outLow); uout += u4outHi + u4outLow; ivec4 i4outHi, i4outLow; imulExtended(i4, i4, i4outHi, i4outLow); iout += i4outLow + i4outHi; ivec3 i3out; fout.xyz += frexp(v3, i3out); iout.xyz += i3out; int i1out; fout.x += frexp(v1, i1out); iout.x += i1out; fout.xy += ldexp(v2, i2); fout.x += ldexp(v1, i1); iout.x += bitfieldExtract(i1, 4, 5); uout.xyz += bitfieldExtract(u3, 4, 5); iout.xyz += bitfieldInsert(i3, i3, 4, 5); uout.x += bitfieldInsert(u1, u1, 4, 5); iout.xy += bitfieldReverse(i2); uout += bitfieldReverse(u4); iout.x += bitCount(i1); iout.xyz += bitCount(u3); iout.xy += findLSB(i2); iout += findLSB(u4); iout.x += findMSB(i1); iout.xy += findMSB(u2); uout.x += packUnorm4x8(v4); uout.x += packSnorm4x8(v4); fout += unpackUnorm4x8(u1); fout += unpackSnorm4x8(u1); } glslang-16.0.0/Test/spv.int_dot.frag000066400000000000000000000112621506534232700172650ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_integer_dot_product: enable int32_t i32 = 0; int16_t i16 = int16_t(0); uint32_t ui32 = 0; uint16_t ui16 = uint16_t(0); int64_t i64 = int64_t(0); uint64_t ui64 = uint64_t(0); void main (void) { // DotProductInput4x8BitPackedKHR dotPacked4x8EXT(i32,i32); dotPacked4x8EXT(ui32,ui32); dotPacked4x8EXT(ui32,i32); dotPacked4x8EXT(i32,ui32); dotPacked4x8AccSatEXT(i32,i32,i32); dotPacked4x8AccSatEXT(ui32,ui32,ui32); dotPacked4x8AccSatEXT(ui32,i32,i32); dotPacked4x8AccSatEXT(i32,ui32,i32); // 8bit vec4 dotEXT(i8vec4(0),i8vec4(0)); dotEXT(u8vec4(0),u8vec4(0)); dotEXT(u8vec4(0),i8vec4(0)); dotEXT(i8vec4(0),u8vec4(0)); dotAccSatEXT(i8vec4(0),i8vec4(0),i32); dotAccSatEXT(u8vec4(0),u8vec4(0),ui32); dotAccSatEXT(u8vec4(0),i8vec4(0),i32); dotAccSatEXT(i8vec4(0),u8vec4(0),i32); // 8bit vec3 dotEXT(i8vec3(0),i8vec3(0)); dotEXT(u8vec3(0),u8vec3(0)); dotEXT(u8vec3(0),i8vec3(0)); dotEXT(i8vec3(0),u8vec3(0)); dotAccSatEXT(i8vec3(0),i8vec3(0),i32); dotAccSatEXT(u8vec3(0),u8vec3(0),ui32); dotAccSatEXT(u8vec3(0),i8vec3(0),i32); dotAccSatEXT(i8vec3(0),u8vec3(0),i32); // 8bit vec2 dotEXT(i8vec2(0),i8vec2(0)); dotEXT(u8vec2(0),u8vec2(0)); dotEXT(u8vec2(0),i8vec2(0)); dotEXT(i8vec2(0),u8vec2(0)); dotAccSatEXT(i8vec2(0),i8vec2(0),i32); dotAccSatEXT(u8vec2(0),u8vec2(0),ui32); dotAccSatEXT(u8vec2(0),i8vec2(0),i32); dotAccSatEXT(i8vec2(0),u8vec2(0),i32); // 16bit vec4 dotEXT(i16vec4(0),i16vec4(0)); dotEXT(u16vec4(0),u16vec4(0)); dotEXT(i16vec4(0),u16vec4(0)); dotEXT(u16vec4(0),i16vec4(0)); dotAccSatEXT(i16vec4(0),i16vec4(0),i32); dotAccSatEXT(u16vec4(0),u16vec4(0),ui32); dotAccSatEXT(i16vec4(0),u16vec4(0),i32); dotAccSatEXT(u16vec4(0),i16vec4(0),i32); // 16bit vec3 dotEXT(i16vec3(0),i16vec3(0)); dotEXT(u16vec3(0),u16vec3(0)); dotEXT(i16vec3(0),u16vec3(0)); dotEXT(u16vec3(0),i16vec3(0)); dotAccSatEXT(i16vec3(0),i16vec3(0),i32); dotAccSatEXT(u16vec3(0),u16vec3(0),ui32); dotAccSatEXT(i16vec3(0),u16vec3(0),i32); dotAccSatEXT(u16vec3(0),i16vec3(0),i32); // 16bit vec2 dotEXT(i16vec2(0),i16vec2(0)); dotEXT(u16vec2(0),u16vec2(0)); dotEXT(i16vec2(0),u16vec2(0)); dotEXT(u16vec2(0),i16vec2(0)); dotAccSatEXT(i16vec2(0),i16vec2(0),i32); dotAccSatEXT(u16vec2(0),u16vec2(0),ui32); dotAccSatEXT(i16vec2(0),u16vec2(0),i32); dotAccSatEXT(u16vec2(0),i16vec2(0),i32); // 32bit vec4 dotEXT(i32vec4(0),i32vec4(0)); dotEXT(u32vec4(0),u32vec4(0)); dotEXT(i32vec4(0),u32vec4(0)); dotEXT(u32vec4(0),i32vec4(0)); dotAccSatEXT(i32vec4(0),i32vec4(0),i32); dotAccSatEXT(u32vec4(0),u32vec4(0),ui32); dotAccSatEXT(i32vec4(0),u32vec4(0),i32); dotAccSatEXT(u32vec4(0),i32vec4(0),i32); // 32bit vec3 dotEXT(i32vec3(0),i32vec3(0)); dotEXT(u32vec3(0),u32vec3(0)); dotEXT(i32vec3(0),u32vec3(0)); dotEXT(u32vec3(0),i32vec3(0)); dotAccSatEXT(i32vec3(0),i32vec3(0),i32); dotAccSatEXT(u32vec3(0),u32vec3(0),ui32); dotAccSatEXT(i32vec3(0),u32vec3(0),i32); dotAccSatEXT(u32vec3(0),i32vec3(0),i32); // 32bit vec2 dotEXT(i32vec2(0),i32vec2(0)); dotEXT(u32vec2(0),u32vec2(0)); dotEXT(i32vec2(0),u32vec2(0)); dotEXT(u32vec2(0),i32vec2(0)); dotAccSatEXT(i32vec2(0),i32vec2(0),i32); dotAccSatEXT(u32vec2(0),u32vec2(0),ui32); dotAccSatEXT(i32vec2(0),u32vec2(0),i32); dotAccSatEXT(u32vec2(0),i32vec2(0),i32); // 64bit vec4 dotEXT(i64vec4(0),i64vec4(0)); dotEXT(u64vec4(0),u64vec4(0)); dotEXT(i64vec4(0),u64vec4(0)); dotEXT(u64vec4(0),i64vec4(0)); dotAccSatEXT(i64vec4(0),i64vec4(0),i64); dotAccSatEXT(u64vec4(0),u64vec4(0),ui64); dotAccSatEXT(i64vec4(0),u64vec4(0),i64); dotAccSatEXT(u64vec4(0),i64vec4(0),i64); // 64bit vec3 dotEXT(i64vec3(0),i64vec3(0)); dotEXT(u64vec3(0),u64vec3(0)); dotEXT(i64vec3(0),u64vec3(0)); dotEXT(u64vec3(0),i64vec3(0)); dotAccSatEXT(i64vec3(0),i64vec3(0),i64); dotAccSatEXT(u64vec3(0),u64vec3(0),ui64); dotAccSatEXT(i64vec3(0),u64vec3(0),i64); dotAccSatEXT(u64vec3(0),i64vec3(0),i64); // 64bit vec2 dotEXT(i64vec2(0),i64vec2(0)); dotEXT(u64vec2(0),u64vec2(0)); dotEXT(i64vec2(0),u64vec2(0)); dotEXT(u64vec2(0),i64vec2(0)); dotAccSatEXT(i64vec2(0),i64vec2(0),i64); dotAccSatEXT(u64vec2(0),u64vec2(0),ui64); dotAccSatEXT(i64vec2(0),u64vec2(0),i64); dotAccSatEXT(u64vec2(0),i64vec2(0),i64); } glslang-16.0.0/Test/spv.int_dot_Error.frag000066400000000000000000000011041506534232700204300ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_integer_dot_product: enable int32_t i32 = 0; int16_t i16 = int16_t(0); uint32_t ui32 = 0; uint16_t ui16 = uint16_t(0); int64_t i64 = int64_t(0); uint64_t ui64 = uint64_t(0); void overload_errors() { dotPacked4x8EXT(u8vec4(0),i32); dotPacked4x8EXT(i32,i64); dotPacked4x8EXT(i64,i32); dotPacked4x8AccSatEXT(u8vec4(0),i32,i32); dotPacked4x8AccSatEXT(i32,i32,i64); dotEXT(i32,i32); dotAccSatEXT(i32,i32,i32); } void main (void) { } glslang-16.0.0/Test/spv.intcoopmat.comp000066400000000000000000000076311506534232700200260ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_NV_cooperative_matrix : enable #extension GL_NV_integer_cooperative_matrix : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable #extension GL_EXT_buffer_reference : enable layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; const int X = 8; layout(constant_id = 0) const int Y = 2; const int Z = X*Y; icoopmatNV<8, gl_ScopeSubgroup, Z, 8> miC; icoopmatNV<8, gl_ScopeSubgroup, Z, 8> miC2[3]; ucoopmatNV<8, gl_ScopeSubgroup, Z, 8> muC; ucoopmatNV<8, gl_ScopeSubgroup, Z, 8> muC2[3]; int iarr[miC.length()]; int iarr2[miC2[1].length()]; int uarr[muC.length()]; int uarr2[muC2[1].length()]; const icoopmatNV<32, gl_ScopeSubgroup, Z, 8> mD = icoopmatNV<32, gl_ScopeSubgroup, Z, 8>(1); const ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> mD2 = ucoopmatNV<8, gl_ScopeSubgroup, 8, 8>(1); struct S { int a; int b; int c; }; const S s = S(12, 23, 34); layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { uint y[1024*1024]; uint x[]; } block; layout(set = 0, binding = 0) coherent buffer Block16 { int8_t y[1024*1024]; int8_t x[]; Block b; } block8; icoopmatNV<8, gl_ScopeSubgroup, 8, 8> ineg(icoopmatNV<8, gl_ScopeSubgroup, 8, 8> m) { return -m; } ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> umul(ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> m) { return m * uint8_t(2); } layout(constant_id = 2) const int SC = 1; ucoopmatNV<32, gl_ScopeSubgroup, SC, SC> scm[SC][SC]; // sized for icoopmatNV<8, gl_ScopeSubgroup, 16, 16> shared uvec4 shmatrix[16*16*2/16]; void main() { ucoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> mu = ucoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)>(2); icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> mi = icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)>(2); mu = mu + mu; mu = mu - mu; mi = -mi; mi = mi * int8_t(2); fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> mf16_0 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(mu); fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> mf32_0 = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(mu); fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> mf16_1 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(mi); fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> mf32_1 = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(mi); uint8_t x = mu[1]; mi[0] = int8_t(x); coopMatLoadNV(mi, block.x, 16, 128, false); coopMatStoreNV(mi, block.x, 16, 128, false); coopMatLoadNV(mu, block8.x, 16, 128, false); coopMatStoreNV(mu, block8.x, 16, 128, false); coopMatLoadNV(mi, block8.b.x, 16, 128, false); coopMatStoreNV(mi, block8.b.x, 16, 128, false); ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> A; ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> B; ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> C; ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> D; D = coopMatMulAddNV(A, B, C); int l = D.length(); icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> a[5]; a[3][0] = int8_t(1); int md1 = mD[1]; md1 += (mi += mi)[1234]; muC2[0] = muC2[1]; muC2[1][0] = (miC2[2][0]); coopMatLoadNV(mi, block.y, 16, 128, false); coopMatStoreNV(mi, block.y, 16, 128, false); coopMatLoadNV(mu, block8.y, 16, 128, false); coopMatStoreNV(mu, block8.y, 16, 128, false); icoopmatNV<8, gl_ScopeSubgroup, 8, 8> p1; ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> p2; p1 = ineg(p1); p2 = umul(p2); p1 /= p1; p2 /= p2; p1 *= int8_t(2); p2 *= uint8_t(4); icoopmatNV<8, gl_ScopeSubgroup, 16, 8> ms; coopMatLoadNV(ms, shmatrix, 1, 2, false); coopMatStoreNV(ms, shmatrix, 1, 2, false); icoopmatNV<16, gl_ScopeSubgroup, 16, 8> i16 = icoopmatNV<16, gl_ScopeSubgroup, 16, 8>(0); ucoopmatNV<16, gl_ScopeSubgroup, 16, 8> u16 = ucoopmatNV<16, gl_ScopeSubgroup, 16, 8>(0); coopMatLoadNV(i16, shmatrix, 1, 2, false); coopMatStoreNV(i16, shmatrix, 1, 2, false); coopMatLoadNV(u16, shmatrix, 1, 2, false); coopMatStoreNV(u16, shmatrix, 1, 2, false); } glslang-16.0.0/Test/spv.interpOps.frag000066400000000000000000000014201506534232700176030ustar00rootroot00000000000000#version 450 in float if1; in vec2 if2; in vec3 if3; in vec4 if4; flat in int samp; flat in vec2 offset; out vec4 fragColor; void main() { vec4 f4 = vec4(0.0); f4.x += interpolateAtCentroid(if1); f4.xy += interpolateAtCentroid(if2); f4.xyz += interpolateAtCentroid(if3); f4 += interpolateAtCentroid(if4); f4.x += interpolateAtSample(if1, samp); f4.xy += interpolateAtSample(if2, samp); f4.xyz += interpolateAtSample(if3, samp); f4 += interpolateAtSample(if4, samp); f4.x += interpolateAtOffset(if1, offset); f4.xy += interpolateAtOffset(if2, offset); f4.xyz += interpolateAtOffset(if3, offset); f4 += interpolateAtOffset(if4, offset); fragColor = f4; } glslang-16.0.0/Test/spv.intrinsicsDebugBreak.frag000066400000000000000000000003361506534232700217260ustar00rootroot00000000000000#version 460 #extension GL_EXT_spirv_intrinsics : enable spirv_instruction (extensions = ["SPV_KHR_non_semantic_info"], set = "NonSemantic.DebugBreak", id = 1) void debugBreak(); void main() { debugBreak(); } glslang-16.0.0/Test/spv.intrinsicsFakeEnable.vert000066400000000000000000000004051506534232700217460ustar00rootroot00000000000000#version 460 core #extension GL_EXT_spirv_intrinsics : enable // ERROR: Overlapped input location. Make sure it could be detected even // if GL_EXT_spirv_intrinsics is enabled. layout(location = 0) in vec4 v4; layout(location = 0) in vec3 v3; void main() { } glslang-16.0.0/Test/spv.intrinsicsInteractWithCoopMat.comp000066400000000000000000000011001506534232700236300ustar00rootroot00000000000000#version 450 core #pragma use_vulkan_memory_model #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_spirv_intrinsics : enable layout(local_size_x = 32, local_size_y = 1, local_size_z = 1) in; layout(set=0, binding=0, std430) buffer Buf { uvec4 x[]; } buf; #define ELT_SIZE 16 #define half spirv_type(capabilities=[9], id = 22, 16) coopmat A; void main() { coopMatLoad(A, buf.x, 0, ELT_SIZE / 8, 0); coopMatStore(A, buf.x, 64, 4, 0); } glslang-16.0.0/Test/spv.intrinsicsSpirvByReference.vert000066400000000000000000000006761506534232700232200ustar00rootroot00000000000000#version 450 core #extension GL_EXT_spirv_intrinsics: enable spirv_instruction (set = "GLSL.std.450", id = 35) // modf float modf(float x, spirv_by_reference float i); layout(location = 0) in float floatIn; layout(location = 0) out vec2 vec2Out; layout(location = 1) out float floatOut; void func(spirv_by_reference float f) { f = 0.5; } void main() { vec2Out.x = modf(floatIn, vec2Out.y); func(floatOut); } glslang-16.0.0/Test/spv.intrinsicsSpirvDecorate.frag000066400000000000000000000033411506534232700225040ustar00rootroot00000000000000#version 450 core #extension GL_EXT_spirv_intrinsics: enable #define GL_AMD_shader_explicit_vertex_parameter 1 spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4992) in vec2 gl_BaryCoordNoPerspAMD; spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4993) in vec2 gl_BaryCoordNoPerspCentroidAMD; spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4994) in vec2 gl_BaryCoordNoPerspSampleAMD; spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4995) in vec2 gl_BaryCoordSmoothAMD; spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4996) in vec2 gl_BaryCoordSmoothCentroidAMD; spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4997) in vec2 gl_BaryCoordSmoothSampleAMD; spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4998) in vec3 gl_BaryCoordPullModelAMD; #define __explicitInterpAMD spirv_decorate(extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 4999) spirv_instruction(extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], set = "SPV_AMD_shader_explicit_vertex_parameter", id = 1) float interpolateAtVertexAMD(float interpolant, uint vertexIdx); layout(location = 0) in __explicitInterpAMD float floatIn; layout(location = 0) out float floatOut; layout(location = 1) out vec2 vec2Out; void main() { floatOut = interpolateAtVertexAMD(floatIn, 1); vec2Out = gl_BaryCoordNoPerspAMD + gl_BaryCoordNoPerspCentroidAMD + gl_BaryCoordNoPerspSampleAMD + gl_BaryCoordSmoothAMD + gl_BaryCoordSmoothCentroidAMD + gl_BaryCoordSmoothSampleAMD + gl_BaryCoordPullModelAMD.xy; } glslang-16.0.0/Test/spv.intrinsicsSpirvDecorateId.comp000066400000000000000000000004761506534232700230060ustar00rootroot00000000000000#version 460 core #extension GL_EXT_spirv_intrinsics: enable layout(local_size_x = 1) in; layout(binding = 1) uniform CounterBuffer { uint counter; } x; layout(binding = 0) spirv_decorate_id(extensions = ["SPV_GOOGLE_hlsl_functionality1"], 5634, x) uniform Uniform { uint y; }; void main() { } glslang-16.0.0/Test/spv.intrinsicsSpirvDecorateString.comp000066400000000000000000000011011506534232700237020ustar00rootroot00000000000000#version 460 core #extension GL_EXT_spirv_intrinsics : require spirv_decorate_string(extensions = ["SPV_GOOGLE_hlsl_functionality1"], 5635, "foobar") // UserSemantic spirv_decorate(0) // RelaxedPrecision float x = 0.5; spirv_decorate(0) // RelaxedPrecision spirv_decorate_string(extensions = ["SPV_GOOGLE_hlsl_functionality1"], 5635, "foobar") // UserSemantic float y = 1.0; layout(local_size_x = 1) in; void main() { } glslang-16.0.0/Test/spv.intrinsicsSpirvExecutionMode.frag000066400000000000000000000006031506534232700235240ustar00rootroot00000000000000#version 450 core #extension GL_EXT_spirv_intrinsics: enable #define GL_ARB_shader_stencil_export 1 spirv_execution_mode(5027); // StencilRefReplacingEXT spirv_decorate(extensions = ["SPV_EXT_shader_stencil_export"], capabilities = [5013], 11, 5014) out int gl_FragStencilRef; layout(location = 0) in flat int color; void main() { gl_FragStencilRef = color; } glslang-16.0.0/Test/spv.intrinsicsSpirvInstruction.vert000066400000000000000000000015041506534232700233370ustar00rootroot00000000000000#version 450 core #extension GL_EXT_spirv_intrinsics: enable #extension GL_ARB_gpu_shader_int64: enable spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056) uvec2 clockRealtime2x32EXT(int); spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056) 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); layout(location = 0) in vec3 vec3In; layout(location = 0) out uvec2 uvec2Out; layout(location = 1) out uint64_t u64Out; layout(location = 2) out vec2 vec2Out; void main() { uvec2Out = clockRealtime2x32EXT(1); u64Out = clockRealtimeEXT(1); vec2Out = min3(vec3In.xy, vec3In.yz, vec3In.zx); }glslang-16.0.0/Test/spv.intrinsicsSpirvLiteral.vert000066400000000000000000000007211506534232700224120ustar00rootroot00000000000000#version 450 core #extension GL_EXT_spirv_intrinsics: enable spirv_instruction(id = 61) vec4 load(spirv_by_reference vec4 pointer, spirv_literal int memoryOperands); spirv_instruction(id = 62) void store(spirv_by_reference vec4 pointer, vec4 object, spirv_literal int memoryOperands); layout(location = 0) in vec4 vec4In; layout(location = 1) out vec4 vec4Out; void main() { store(vec4Out, load(vec4In, /*None=*/0x0), /*Volatile=*/0x1); } glslang-16.0.0/Test/spv.intrinsicsSpirvStorageClass.rchit000066400000000000000000000004361506534232700235440ustar00rootroot00000000000000#version 460 #extension GL_EXT_spirv_intrinsics: enable #define rayPayloadEXT spirv_storage_class(extensions = ["SPV_KHR_ray_tracing"], capabilities = [5353], 5338) layout(location = 1) rayPayloadEXT vec4 payload; void main() { payload = vec4(0.0, 1.0, 0.0, 1.0); } glslang-16.0.0/Test/spv.intrinsicsSpirvType.rgen000066400000000000000000000016561506534232700217220ustar00rootroot00000000000000#version 460 core #extension GL_EXT_spirv_intrinsics: enable #define rayQueryEXT spirv_type (extensions = ["SPV_KHR_ray_query"], capabilities = [4472], id = 4472) #define accelerationStructureEXT spirv_type (extensions = ["SPV_KHR_ray_query"], capabilities = [4472], id = 5341) spirv_instruction (extensions = ["SPV_KHR_ray_query"], capabilities = [4472, 4478], id = 4473) void rayQueryInitializeEXT(spirv_by_reference rayQueryEXT rayQuery, accelerationStructureEXT topLevel, uint rayFlags, uint cullMask, vec3 origin, float tMin, vec3 direction, float tMax); spirv_instruction (extensions = ["SPV_KHR_ray_query"], capabilities = [4478], id = 4474) void rayQueryTerminateEXT(spirv_by_reference rayQueryEXT rayQuery); layout(binding = 0) uniform accelerationStructureEXT as; void main() { rayQueryEXT rq; rayQueryInitializeEXT(rq, as, 0, 0, vec3(0.0), 0.0, vec3(1.0), 1.0); rayQueryTerminateEXT(rq); } glslang-16.0.0/Test/spv.intrinsicsSpirvTypeLocalVar.vert000066400000000000000000000004121506534232700233600ustar00rootroot00000000000000#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]); } glslang-16.0.0/Test/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert000066400000000000000000000021141506534232700252650ustar00rootroot00000000000000#version 450 core #extension GL_ARB_gpu_shader_int64: enable #extension GL_EXT_buffer_reference: enable #extension GL_EXT_spirv_intrinsics: enable #define CapabilityPhysicalStorageBufferAddresses 5347 #define StorageClassPhysicalStorageBuffer 5349 #define OpTypePointer 32 #define OpLoad 61 #define OpConvertUToPtr 120 #define uintStoragePtr spirv_type(extensions = ["SPV_EXT_physical_storage_buffer", "SPV_KHR_variable_pointers"], capabilities = [CapabilityPhysicalStorageBufferAddresses], id = OpTypePointer, StorageClassPhysicalStorageBuffer, uint) // Just to enable the memory model of physical storage buffer layout(buffer_reference, std430) buffer Dummy { uint dummy; }; spirv_instruction(id = OpLoad) uint loadUint(uintStoragePtr pointer, spirv_literal uint memoryOperands, spirv_literal uint alignment); spirv_instruction(id = OpConvertUToPtr) uintStoragePtr convertToPtr(uint64_t value); void main() { uint value = loadUint(convertToPtr(1), 0x2, 32); } glslang-16.0.0/Test/spv.invariantAll.vert000066400000000000000000000002141506534232700203050ustar00rootroot00000000000000#version 450 core #pragma STDGL invariant(all) layout(location=0) out highp float v; void main() { gl_Position = vec4(v, v, 0, 1); } glslang-16.0.0/Test/spv.layer.tese000066400000000000000000000001751506534232700167630ustar00rootroot00000000000000#version 450 #extension GL_ARB_shader_viewport_layer_array : require layout(triangles) in; void main() { gl_Layer = 1; } glslang-16.0.0/Test/spv.layoutNested.vert000066400000000000000000000027271506534232700203540ustar00rootroot00000000000000#version 450 // should get 3 SPV types for S: no layout, 140, and 430, plus extras for interpolation or invariant differences struct S { highp uvec3 a; mediump mat2 b[4]; lowp uint c; }; layout(set = 0, binding = 0, std140) uniform Block140 { mediump int u; S s[2][3]; mediump vec2 v; } inst140; layout(set = 0, binding = 1, std430) buffer Block430 { mediump int u; S s[2][3]; mediump vec2 v; } inst430; S s; // should get 5 SPV types for T: no layout, 140/row, 140/col, 430/row, and 430/col struct T { mat2 m; int a; }; T t; struct Nestor { T nestorT; }; layout(set = 1, binding = 0, std140) uniform Bt1 { layout(row_major) Nestor nt; } Btn1; layout(set = 1, binding = 0, std140) uniform Bt2 { layout(column_major) Nestor nt; } Btn2; layout(row_major, set = 1, binding = 0, std140) uniform Bt3 { layout(column_major) Nestor ntcol; Nestor ntrow; // should be row major decoration version of Nestor } Btn3; layout(set = 1, binding = 0, std430) buffer bBt1 { layout(row_major) Nestor nt; } bBtn1; layout(set = 1, binding = 0, std430) buffer bBt2 { layout(column_major) Nestor nt; } bBtn2; layout(set = 1, binding = 0, std430) buffer bBt3 { layout(row_major) Nestor ntcol; Nestor ntrow; // should be col major decoration version of Nestor } bBtn3; void main() { } flat out S sout; invariant out S soutinv; glslang-16.0.0/Test/spv.length.frag000066400000000000000000000002601506534232700171020ustar00rootroot00000000000000#version 140 vec4 u[3]; in vec2 v[2]; void main() { int a[5]; vec2 t = v[0] + v[1]; gl_FragColor = vec4(u.length() * v.length() * a.length()); } glslang-16.0.0/Test/spv.load.bool.array.interface.block.frag000066400000000000000000000003641506534232700236440ustar00rootroot00000000000000#version 450 core layout(std140, set=0, binding=0) uniform ub { bool bi[2][3]; }; layout(std430, set=0, binding=1) buffer ssbo { bool bo[2][3]; }; layout(location=0) out vec4 color; void main() { bo = bi; color = vec4(0); } glslang-16.0.0/Test/spv.localAggregates.frag000066400000000000000000000020521506534232700207060ustar00rootroot00000000000000#version 400 uniform sampler2D samp2D; in vec2 coord; in vec4 color; struct s1 { int i; float f; }; struct s2 { int i; float f; s1 s1_1; vec4 bleh; }; struct s3 { s2 s2_1; int i; float f; s1 s1_1; }; flat in s1 foo; flat in s2 foo2; flat in s3 foo3; flat in int condition; void main() { s2 locals2; s3 locals3; float localFArray[16]; int localIArray[8]; locals2 = foo3.s2_1; if (foo3.s2_1.i > 0) { locals2.s1_1.f = 1.0; localFArray[4] = coord.x; localIArray[2] = foo3.s2_1.i; } else { locals2.s1_1.f = coord.x; localFArray[4] = 1.0; localIArray[2] = 0; } if (localIArray[2] == 0) ++localFArray[4]; float localArray[16]; int x = 5; localArray[x] = coord.x; float[16] a; for (int i = 0; i < 16; i++) a[i] = 0.0; if (condition == 1) a = localArray; locals2.bleh = color; locals2.bleh.z = coord.y; gl_FragColor = locals2.bleh * (localFArray[4] + locals2.s1_1.f + localArray[x] + a[x]) * texture(samp2D, coord); } glslang-16.0.0/Test/spv.loops.frag000066400000000000000000000131711506534232700167620ustar00rootroot00000000000000#version 140 in vec4 bigColor; in vec4 bigColor1_1; in vec4 bigColor1_2; in vec4 bigColor1_3; in vec4 bigColor2; in vec4 bigColor3; in vec4 bigColor4; in vec4 bigColor5; in vec4 bigColor6; in vec4 bigColor7; in vec4 bigColor8; in vec4 BaseColor; in float d; in float d2; in float d3; in float d4; in float d5; in float d6; in float d7; in float d8; in float d9; in float d10; in float d11; in float d12; in float d14; in float d15; in float d16; in float d17; in float d18; flat in int Count; void main() { vec4 color = BaseColor; // Not a real loop while (true) { if (color.x < 0.33) { color += vec4(0.33); break; } if (color.x < 0.66) { color += vec4(0.66); break; } color += vec4(0.33); break; } // While while (color.x < d) { color += bigColor; } // While (latchy) while (color.z < d) { color += bigColor1_1; if (color.w < d) continue; color += bigColor1_1; } // While (constant) while (color.x < 42.0) { ++color; } // While (complicated-conditional) while (color.w < d2 && color.y < d3) { color += bigColor1_2; } // While (multi-exit) while (color.z < d3) { color += bigColor1_3; if (color.y < d4) break; color += bigColor1_3; } // For (dynamic) for (int i = 0; i < Count; ++i) { color += bigColor2; } // Do while do { color += bigColor3; } while (color.x < d2); // For (static) for (int i = 0; i < 42; ++i) { color.z += d3; } // For (static) flow-control for (int i = 0; i < 100; ++i) { if (color.z < 20.0) color.x++; else color.y++; if (color.w < 20.0) if (color.z > color.y) 0; // do nothing } // For (static) flow-control with latch merge for (int i = 0; i < 120; ++i) { if (color.z < 20.0) color.x++; else color.y++; } // For (static) latchy for (int i = 0; i < 42; ++i) { color.z += d3; if (color.x < d4) continue; ++color.w; } // For (static) multi-exit for (int i = 0; i < 42; ++i) { color.z += d3; if (color.x < d4) break; ++color.w; } // Latchy do { color += bigColor4; if (color.x < d4) continue; if (color.y < d4) color.y += d4; else color.x += d4; } while (color.z < d4); // Do while flow control do { color += bigColor5; if (color.y < d5) color.y += d5; } while (color.x < d5); // If then loop if (color.x < d6) { while (color.y < d6) color += bigColor6; } else { while (color.z < d6) color.z += bigColor6.z; } // If then multi-exit if (color.x < d6) { while (color.y < d6) { color += bigColor6; if (d7 < 1.0) break; } } else { while (color.z < d6) color.z += bigColor6.z; } // Multi-exit do { if (d7 < 0.0) break; color += bigColor7; if (d7 < 1.0) { color.z++; break; } color += BaseColor; } while (true); // Multi-exit2 do { // invariant conditional break at the top of the loop. This could be a // situation where unswitching the loop has no real increases in code // size. if (d8 < 0.0) break; color += bigColor7; if (d8 < 1.0) { color.z++; if (d8 < 2.0) { color.y++; } else { color.x++; } break; } color += BaseColor; } while (color.z < d8); // Deep exit while (color.w < d9) { if (d9 > d8) { if (color.x <= d7) { if (color.z == 5.0) color.w++; else break; } } } // No end loop-back. while (color.z < d10) { color.y++; if (color.y < d11) { color.z++; if (color.w < d12) color.w++; else color.x++; continue; } color++; break; } // Multi-continue while (color.x < 10.0) { color += bigColor8; if (color.z < d8) if (color.w < d6) continue; color.y += bigColor8.x; } color++; gl_FragColor = color; // Early Return while (color.x < d14) { if (color.y < d15) { return; } else color++; } color++; while (color.w < d16) { color.w++; } // While (complicated-conditional) while (color.w < d2 && color.y < d3) { color += bigColor1_2; if (color.z < d3) return; } do { if (color.y < d18) return; color++; } while (color.x < d17); // Early Discard while (color.y < d16) { if (color.w < d16) { discard; } else color++; } color++; gl_FragColor = color; } glslang-16.0.0/Test/spv.loopsArtificial.frag000066400000000000000000000024041506534232700207470ustar00rootroot00000000000000#version 140 in vec4 bigColor; in vec4 bigColor1_1; in vec4 bigColor1_2; in vec4 bigColor1_3; in vec4 bigColor2; in vec4 bigColor3; in vec4 bigColor4; in vec4 bigColor5; in vec4 bigColor6; in vec4 bigColor7; in vec4 bigColor8; in vec4 BaseColor; in float d; in float d2; in float d3; in float d4; in float d13; flat in int Count; void main() { vec4 color = BaseColor; // Latchy2 do { color += bigColor4; if (color.x < d4) { color.z += 2.0; if (color.z < d4) { color.x++; continue; } } if (color.y < d4) color.y += d4; else color.x += d4; } while (color.z < d4); // Immediate dominator while (color.w < d13) { if (color.z < d13) color++; else color--; // code from Latchy 2 color += bigColor4; if (color.x < d4) { color.z += 2.0; if (color.z < d4) { color.x++; continue; } } if (color.y < d4) color.y += d4; else color.x += d4; } color++; gl_FragColor = color; } glslang-16.0.0/Test/spv.looseUniformNoLoc.vert000066400000000000000000000002601506534232700212760ustar00rootroot00000000000000#version 450 core layout(location = 0) in vec4 foo; layout(location = 0) out vec4 bar; uniform vec4 uv; void main() { bar = foo; gl_Position = foo; }glslang-16.0.0/Test/spv.matFun.vert000066400000000000000000000005621506534232700171210ustar00rootroot00000000000000#version 400 uniform bl { uniform mat4 m4; uniform mat3 m3; } bName; in vec3 v3; vec3 xf(mat3 m, vec3 v) { return v * m; } mat3 Mat3(mat4 m) { return mat3(m[0].xyz, m[1].xyz, m[2].xyz); } vec3 mxv(mat4 m4, vec3 v) { return v * Mat3(m4); } void main() { gl_Position = vec4(mxv(bName.m4, v3) + xf(bName.m3, v3), 1.0); } glslang-16.0.0/Test/spv.matrix.frag000066400000000000000000000014151506534232700171300ustar00rootroot00000000000000#version 420 in mat3x4 m1; in mat3x4 m2; in float f; in vec3 v3; in vec4 v4; out vec4 color; void main() { mat3x4 sum34; dmat3x4 dm; vec3 sum3; vec4 sum4; sum34 = m1 - m2; sum34 += m1 * f; sum34 += f * m1; sum34 /= matrixCompMult(m1, m2); sum34 += m1 / f; sum34 += f / m1; sum34 += f; sum34 -= f; dm = dmat3x4(sum34); sum34 = mat3x4(dm); sum3 = v4 * m2; sum4 = m2 * v3; mat4x3 m43 = transpose(sum34); mat4 m4 = m1 * m43; sum4 = v4 * m4; color = sum4; ++sum34; --sum34; sum34 += mat3x4(f); sum34 += mat3x4(v3, f, v3, f, v3, f); color += sum3 * m43 + sum4; color += vec4(m43); color += vec4(vec3(mat2(f)), 7.2); } glslang-16.0.0/Test/spv.matrix2.frag000066400000000000000000000016551506534232700172200ustar00rootroot00000000000000#version 150 in mat3 colorTransform; in vec3 Color; in mat4 m, n; in mat4x3 um43; in mat3x4 un34; in mat2 um2; in mat3 um3; in mat4 um4; in vec4 v; in vec3 u; out vec4 FragColor; void main() { mat3x4 m34 = outerProduct(v, u); m34 += mat3x4(4.3); FragColor = vec4(Color, 1.0); FragColor *= vec4(FragColor * m34, 1.0); m34 *= v.x; mat4 m44 = mat4(un34); m44 += m34 * um43; FragColor += (-m44) * v; FragColor *= matrixCompMult(m44, m44); m34 = transpose(um43); FragColor *= vec4(FragColor * m34, 1.0); FragColor *= vec4(determinant(um4)); mat2 inv = inverse(um2); FragColor *= vec4(inv[0][0], inv[1][0], inv[0][1], inv[1][1]); mat3 inv3 = inverse(um3); FragColor *= vec4(inv3[2][1]); mat4 inv4 = inverse(um4); FragColor *= inv4; FragColor = vec4(FragColor * matrixCompMult(un34, un34), FragColor.w); } glslang-16.0.0/Test/spv.maximalReconvergence.vert000066400000000000000000000001771506534232700220270ustar00rootroot00000000000000#version 460 #extension GL_EXT_maximal_reconvergence : enable [[random(4)]] void main() [[maximally_reconverges]] { } glslang-16.0.0/Test/spv.memoryQualifier.frag000066400000000000000000000015641506534232700210030ustar00rootroot00000000000000#version 450 layout(binding = 0, r32f) uniform coherent image1D i1D; layout(binding = 1, r32f) uniform volatile image2D i2D; layout(binding = 2, r32f) uniform restrict image2DRect i2DRect; layout(binding = 3, r32f) uniform readonly image3D i3D; layout(binding = 3, r32f) uniform writeonly imageCube iCube; struct Data { float f1; vec2 f2; }; coherent buffer Buffer { volatile float f1; restrict vec2 f2; readonly vec3 f3; writeonly vec4 f4; int i1; Data data; }; void main() { vec4 texel = imageLoad(i1D, 1); texel += imageLoad(i2D, ivec2(1)); texel += imageLoad(i2DRect, ivec2(1)); texel += imageLoad(i3D, ivec3(1)); imageStore(iCube, ivec3(1), texel); texel[i1] = f1; texel.xy += f2; texel.xyz -= f3; texel.w += data.f1 + data.f2[1]; f4 = texel; }glslang-16.0.0/Test/spv.memoryScopeSemantics.comp000066400000000000000000000326421506534232700220220ustar00rootroot00000000000000#version 450 #extension GL_KHR_memory_scope_semantics : require #extension GL_ARB_gpu_shader_int64 : require #pragma use_vulkan_memory_model shared uint value; shared int atomi; shared uint atomu; layout(binding = 0, r32ui) workgroupcoherent uniform uimage2D imageu; layout(binding = 1, r32i) volatile coherent uniform iimage2D imagei; layout(binding = 5, r32i) nonprivate uniform iimage2D imagej[2]; layout (binding = 2) buffer BufferU { workgroupcoherent uint x; } bufferu; layout (binding = 3) coherent buffer BufferI { uint x; } bufferi; struct A { uint x[2]; }; layout (binding = 4) volatile buffer BufferJ { subgroupcoherent A a; } bufferj[2]; layout (binding = 6) nonprivate uniform sampler2D samp[2]; layout (binding = 7) nonprivate uniform BufferK { uint x; } bufferk; shared uint64_t atomu64; shared int64_t atomi64; layout (binding = 8) volatile buffer BufferL { uint x; } bufferl; layout (binding = 9) buffer BufferM { volatile uint x; } bufferm; layout(binding = 10, r32i) volatile coherent uniform iimage2DMS imageMS; void main() { int origi = atomicAdd(atomi, 3, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsRelease); uint origu = atomicAnd(atomu, value); origi = atomicLoad(atomi, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicStore(atomu, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); origi = imageAtomicLoad(imagei, ivec2(0,0), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); origu = imageAtomicAdd(imageu, ivec2(0,0), 3u, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); imageAtomicStore(imageu, ivec2(0,0), 4u, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); origu = atomicOr(atomu, 7u, gl_ScopeDevice, 0, 0); origu = atomicXor(atomu, 7u, gl_ScopeDevice, 0, 0); origu = atomicMin(atomu, value, gl_ScopeDevice, 0, 0); origi = atomicMax(atomi, 7, gl_ScopeDevice, 0, 0); origi = atomicExchange(atomi, origi, gl_ScopeDevice, 0, 0); origu = atomicCompSwap(atomu, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicAdd(bufferu.x, 1, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsRelease); uint y; y = bufferu.x; bufferu.x = y; y = bufferi.x; y = bufferj[0].a.x[1]; bufferi.x = y; bufferj[0].a.x[1] = y; bufferj[0].a = bufferj[1].a; bufferi.x = bufferk.x; imageLoad(imagei, ivec2(0,0)); imageLoad(imagej[0], ivec2(0,0)); imageStore(imagej[1], ivec2(0,0), ivec4(0,0,0,0)); texture(samp[0], vec2(0,0)); atomu64 = atomicMax(atomu64, uint64_t(7), gl_ScopeDevice, 0, 0); atomicCompSwap(atomi64, int64_t(10), int64_t(atomu64), gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire); y = bufferl.x; atomicAdd(bufferl.x, 1); atomicOr(bufferm.x, 2); imageAtomicAdd(imagei, ivec2(0,0), 3); atomicAdd(bufferu.x, 4u, gl_ScopeDevice, 0, 0); atomicAdd(bufferu.x, 5u, gl_ScopeDevice, 0, gl_SemanticsVolatile); imageAtomicStore(imageMS, ivec2(0,0), 1, 4, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); imageAtomicStore(imagei, ivec2(0,0), -7, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, 0, 0); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeAvailable); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeAvailable); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable); origu = atomicLoad(atomu, gl_ScopeDevice, 0, 0); origu = atomicLoad(atomu, gl_ScopeDevice, 0, gl_SemanticsVolatile); origu = atomicLoad(atomu, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); origu = atomicLoad(atomu, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire); origu = atomicLoad(atomu, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile); origu = atomicLoad(atomu, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); origu = atomicLoad(atomu, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire | gl_SemanticsMakeVisible | gl_SemanticsVolatile); atomicStore(atomu, 10U, gl_ScopeDevice, 0, 0); atomicStore(atomu, 10U, gl_ScopeDevice, 0, gl_SemanticsVolatile); atomicStore(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); atomicStore(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsRelease); atomicStore(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsVolatile); atomicStore(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeAvailable); atomicStore(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsRelease | gl_SemanticsMakeAvailable | gl_SemanticsVolatile); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, 0, 0); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, 0, gl_SemanticsVolatile); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsVolatile); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsVolatile); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeAvailable); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable); origu = atomicAnd(atomu, 10U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable | gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, 0, 0, 0, 0); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, 0, gl_SemanticsVolatile, 0, gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire, 0, 0); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease, 0, 0); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, 0, 0); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile, 0, gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsVolatile, 0, gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsVolatile, 0, gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible, 0, 0); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeAvailable, 0, 0); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable, 0, 0); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable | gl_SemanticsVolatile, 0, gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire | gl_SemanticsMakeVisible | gl_SemanticsVolatile, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire | gl_SemanticsMakeVisible | gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsVolatile, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeAvailable, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); atomicCompSwap(atomu, 10U, 20U, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible | gl_SemanticsMakeAvailable | gl_SemanticsVolatile, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire | gl_SemanticsMakeVisible | gl_SemanticsVolatile); } glslang-16.0.0/Test/spv.memoryScopeSemantics_Error.comp000066400000000000000000000173601506534232700231730ustar00rootroot00000000000000#version 450 #extension GL_KHR_memory_scope_semantics : require shared uint value; layout (binding = 0) buffer BufferU { coherent uint x; } bufferu; layout(binding = 1, r32ui) coherent uniform uimage2D imageu; void main() { uint origu; // Acquire must not be used with (image) atomic store atomicStore(bufferu.x, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); imageAtomicStore(imageu, ivec2(0,0), value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); // Release must not be used with (image) atomic load origu = atomicLoad(bufferu.x, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); origu = imageAtomicLoad(imageu, ivec2(0,0), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease); // AcquireRelease must not be used with (image) atomic load/store atomicStore(bufferu.x, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); imageAtomicStore(imageu, ivec2(0,0), value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); origu = atomicLoad(bufferu.x, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); origu = imageAtomicLoad(imageu, ivec2(0,0), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); // Relaxed must not be used with memoryBarrier memoryBarrier(gl_ScopeWorkgroup, 0, 0); // Illegal semantics bits atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, 0, gl_StorageSemanticsBuffer, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_StorageSemanticsBuffer | gl_SemanticsAcquireRelease, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, 0, gl_StorageSemanticsBuffer); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer, gl_StorageSemanticsBuffer | gl_SemanticsAcquire); // Illegal storage class semantics bits atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_SemanticsAcquire, gl_SemanticsAcquire, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_SemanticsAcquire, gl_SemanticsAcquire, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); // Semantics must not have multiple memory order bits set atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsRelease, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsAcquireRelease, 0, 0); // Storage class semantics must be non-zero when used with a non-relaxed memory order atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, 0, gl_SemanticsAcquireRelease, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, 0, gl_SemanticsAcquire); // Semantics must have a non-relaxed memory order when used with non-zero storage class semantics atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, 0, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsVolatile, 0, gl_SemanticsVolatile); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsVolatile, gl_StorageSemanticsBuffer, gl_SemanticsVolatile); imageAtomicAdd(imageu, ivec2(0,0), value, gl_ScopeDevice, gl_StorageSemanticsImage, 0); imageAtomicAdd(imageu, ivec2(0,0), value, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsVolatile); // MakeAvailable requires Release or AcquireRelease atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, 0, gl_SemanticsMakeAvailable, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeAvailable, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeAvailable, 0, gl_SemanticsMakeAvailable); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeAvailable, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeAvailable); // MakeVisible requires Acquire or AcquireRelease atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, 0, gl_SemanticsMakeVisible, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeVisible, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible, 0, gl_SemanticsMakeVisible); // Volatile must not be used with memoryBarrier or controlBarrier memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsVolatile); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, 0, gl_SemanticsVolatile); controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsVolatile); // SemUnequal must not be Release or AcquireRelease atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer, gl_SemanticsRelease); // SemUnequal must not be Acquire unless SemEqual is Acquire or AcquireRelease atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, 0, 0, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); // SemUnequal must not include MakeVisible unless SemEqual also includes MakeVisible atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible); // SemStorageUnequal must not include any option that is not present in SemStorageEqual atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire, gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire); // SemEqual and SemUnequal must either both include Volatile or neither atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, 0, gl_SemanticsVolatile, 0, 0); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, 0, 0, 0, gl_SemanticsVolatile); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease | gl_SemanticsVolatile, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); atomicCompSwap(bufferu.x, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile); } glslang-16.0.0/Test/spv.merge-unreachable.frag000066400000000000000000000002661506534232700211750ustar00rootroot00000000000000#version 450 precision mediump int; precision highp float; layout(location=1) in highp vec4 v; void main (void) { if (v == vec4(0.1,0.2,0.3,0.4)) discard; else return; } glslang-16.0.0/Test/spv.meshShaderBuiltins.mesh000066400000000000000000000036421506534232700214420ustar00rootroot00000000000000#version 460 #define MAX_VER 81 #define MAX_PRIM 32 #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 builtins in mesh shaders: void main() { uint iid = gl_LocalInvocationID.x; uint gid = gl_WorkGroupID.x; gl_MeshVerticesNV[iid].gl_Position = vec4(1.0); gl_MeshVerticesNV[iid].gl_PointSize = 2.0; gl_MeshVerticesNV[iid].gl_ClipDistance[3] = 3.0; gl_MeshVerticesNV[iid].gl_CullDistance[2] = 4.0; BARRIER(); gl_MeshVerticesNV[iid+1].gl_Position = gl_MeshVerticesNV[iid].gl_Position; gl_MeshVerticesNV[iid+1].gl_PointSize = gl_MeshVerticesNV[iid].gl_PointSize; gl_MeshVerticesNV[iid+1].gl_ClipDistance[3] = gl_MeshVerticesNV[iid].gl_ClipDistance[3]; gl_MeshVerticesNV[iid+1].gl_CullDistance[2] = gl_MeshVerticesNV[iid].gl_CullDistance[2]; BARRIER(); gl_MeshPrimitivesNV[iid].gl_PrimitiveID = 6; gl_MeshPrimitivesNV[iid].gl_Layer = 7; gl_MeshPrimitivesNV[iid].gl_ViewportIndex = 8; gl_MeshPrimitivesNV[iid].gl_ViewportMask[0] = 9; BARRIER(); gl_MeshPrimitivesNV[iid+1].gl_PrimitiveID = gl_MeshPrimitivesNV[iid].gl_PrimitiveID; gl_MeshPrimitivesNV[iid+1].gl_Layer = gl_MeshPrimitivesNV[iid].gl_Layer; gl_MeshPrimitivesNV[iid+1].gl_ViewportIndex = gl_MeshPrimitivesNV[iid].gl_ViewportIndex; gl_MeshPrimitivesNV[iid+1].gl_ViewportMask[0] = gl_MeshPrimitivesNV[iid].gl_ViewportMask[0]; BARRIER(); // check bound limits gl_PrimitiveIndicesNV[0] = 257; // should truncate 257 -> 1 gl_PrimitiveIndicesNV[(MAX_PRIM * 3) - 1] = 2; gl_PrimitiveIndicesNV[gid] = gl_PrimitiveIndicesNV[gid-1]; // writes 4 indices at offset gl_DrawID writePackedPrimitiveIndices4x8NV(gl_DrawID, 0x01020304); gl_PrimitiveCountNV = MAX_PRIM * 3; BARRIER(); } glslang-16.0.0/Test/spv.meshShaderPerViewBuiltins.mesh000066400000000000000000000030021506534232700227320ustar00rootroot00000000000000#version 450 #define MAX_VER 81 #define MAX_PRIM 32 #define MAX_VIEWS gl_MaxMeshViewCountNV #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 per-view builtin attributes void main() { uint iid = gl_LocalInvocationID.x; uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID] = vec4(1.0, 2.0, 3.0, 4.0); gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2] = 5.0; gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3] = 6.0; gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID] = 7; gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0] = 8; BARRIER(); gl_MeshVerticesNV[iid+1].gl_PositionPerViewNV[viewID] = gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID]; gl_MeshVerticesNV[iid+1].gl_ClipDistancePerViewNV[viewID][2] = gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2]; gl_MeshVerticesNV[iid+1].gl_CullDistancePerViewNV[viewID][3] = gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3]; gl_MeshPrimitivesNV[iid+1].gl_LayerPerViewNV[viewID] = gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID]; gl_MeshPrimitivesNV[iid+1].gl_ViewportMaskPerViewNV[viewID][0] = gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0]; BARRIER(); } glslang-16.0.0/Test/spv.meshShaderPerViewUserDefined.mesh000066400000000000000000000046001506534232700233430ustar00rootroot00000000000000#version 450 #define MAX_VER 81 #define MAX_PRIM 32 #define MAX_VIEWS gl_MaxMeshViewCountNV #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 per-view attributes // mix of single-view and per-view attributes layout(location=0) out block { perprimitiveNV perviewNV vec4 color1[][3]; // Implicitly sized perprimitiveNV vec4 color2[3]; perviewNV vec4 color3[MAX_VIEWS][3]; // Explicitly sized vec4 color4; } b[]; // per-view block attributes perviewNV layout(location=10) out perviewBlock { perprimitiveNV vec4 color5[]; // Implicitly sized perprimitiveNV vec4 color6[MAX_VIEWS][3]; // Explicitly sized vec4 color7[][3]; // Implicitly sized vec4 color8[MAX_VIEWS]; // Explicitly sized } b2[]; // per-view non-block attributes perviewNV layout(location=18) out vec4 nonBlk1[MAX_VER][MAX_VIEWS]; // Explicit+Explicit perviewNV perprimitiveNV layout(location=19) out vec4 nonBlk2[MAX_PRIM][]; // Explicit+Implicit perviewNV layout(location=20) out vec4 nonBlk3[][MAX_VIEWS]; // Implicit+Explicit perviewNV perprimitiveNV layout(location=21) out vec4 nonBlk4[][]; // Implicit+Implicit // per-view non-block array attributes perviewNV layout(location=22) out vec4 nonBlkArr1[MAX_VER][MAX_VIEWS][2]; // Explicit+Explicit perviewNV perprimitiveNV layout(location=24) out vec4 nonBlkArr2[MAX_PRIM][][2]; // Explicit+Implicit perviewNV layout(location=26) out vec4 nonBlkArr3[][MAX_VIEWS][2]; // Implicit+Explicit perviewNV perprimitiveNV layout(location=28) out vec4 nonBlkArr4[][][2]; // Implicit+Implicit void main() { uint iid = gl_LocalInvocationID.x; uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; b[iid].color1[viewID][2] = vec4(1.0); b[iid].color2[1] = vec4(2.0); b[iid].color3[viewID][2] = vec4(3.0); b[iid].color4 = vec4(4.0); BARRIER(); b2[iid].color5[viewID] = vec4(5.0); b2[iid].color6[viewID][1] = vec4(6.0); b2[iid].color7[viewID][2] = vec4(7.0); b2[iid].color8[viewID] = vec4(8.0); BARRIER(); } glslang-16.0.0/Test/spv.meshShaderPerView_Errors.mesh000066400000000000000000000014501506534232700225610ustar00rootroot00000000000000#version 450 #define MAX_VER 81 #define MAX_PRIM 32 #define MAX_VIEWS gl_MaxMeshViewCountNV #extension GL_NV_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 error checks for use of incorrect per-view attributes // per-view block attributes perviewNV layout(location=0) out perviewBlock { vec4 missingInnermostDimSize1[][]; vec4 incorrectViewDimSize1[MAX_VIEWS+1]; vec4 missingViewDim1; } b2[]; // per-view non-block attributes perviewNV layout(location=10) out vec4 missingInnermostDimSize2[][][]; perviewNV layout(location=11) out vec4 incorrectViewDimSize2[][MAX_VIEWS-1]; perviewNV layout(location=12) out vec4 missingViewDim2[]; void main() { } glslang-16.0.0/Test/spv.meshShaderRedeclBuiltins.mesh000066400000000000000000000043441506534232700225610ustar00rootroot00000000000000#version 460 #define MAX_VER 81 #define MAX_PRIM 32 #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 redeclared single-view builtins in mesh shaders: out gl_MeshPerVertexNV { vec4 gl_Position; float gl_PointSize; float gl_ClipDistance[4]; float gl_CullDistance[4]; } gl_MeshVerticesNV[MAX_VER]; // explicitly sized to MAX_VER perprimitiveNV out gl_MeshPerPrimitiveNV { int gl_PrimitiveID; int gl_Layer; int gl_ViewportIndex; int gl_ViewportMask[]; } gl_MeshPrimitivesNV[]; // implicitly sized to MAX_PRIM out uint gl_PrimitiveIndicesNV[MAX_PRIM*3]; // explicitly sized to MAX_PRIM * 3 void main() { uint iid = gl_LocalInvocationID.x; uint gid = gl_WorkGroupID.x; gl_MeshVerticesNV[iid].gl_Position = vec4(1.0); gl_MeshVerticesNV[iid].gl_PointSize = 2.0; gl_MeshVerticesNV[iid].gl_ClipDistance[3] = 3.0; gl_MeshVerticesNV[iid].gl_CullDistance[2] = 4.0; BARRIER(); gl_MeshVerticesNV[iid+1].gl_Position = gl_MeshVerticesNV[iid].gl_Position; gl_MeshVerticesNV[iid+1].gl_PointSize = gl_MeshVerticesNV[iid].gl_PointSize; gl_MeshVerticesNV[iid+1].gl_ClipDistance[3] = gl_MeshVerticesNV[iid].gl_ClipDistance[3]; gl_MeshVerticesNV[iid+1].gl_CullDistance[2] = gl_MeshVerticesNV[iid].gl_CullDistance[2]; BARRIER(); gl_MeshPrimitivesNV[iid].gl_PrimitiveID = 6; gl_MeshPrimitivesNV[iid].gl_Layer = 7; gl_MeshPrimitivesNV[iid].gl_ViewportIndex = 8; gl_MeshPrimitivesNV[iid].gl_ViewportMask[0] = 9; BARRIER(); gl_MeshPrimitivesNV[iid+1].gl_PrimitiveID = gl_MeshPrimitivesNV[iid].gl_PrimitiveID; gl_MeshPrimitivesNV[iid+1].gl_Layer = gl_MeshPrimitivesNV[iid].gl_Layer; gl_MeshPrimitivesNV[iid+1].gl_ViewportIndex = gl_MeshPrimitivesNV[iid].gl_ViewportIndex; gl_MeshPrimitivesNV[iid+1].gl_ViewportMask[0] = gl_MeshPrimitivesNV[iid].gl_ViewportMask[0]; BARRIER(); // check bound limits gl_PrimitiveIndicesNV[0] = 1; gl_PrimitiveIndicesNV[(MAX_PRIM * 3) - 1] = 2; gl_PrimitiveCountNV = MAX_PRIM * 3; } glslang-16.0.0/Test/spv.meshShaderRedeclPerViewBuiltins.mesh000066400000000000000000000041651506534232700240640ustar00rootroot00000000000000#version 450 #define MAX_VER 81 #define MAX_PRIM 32 #define MAX_VIEWS gl_MaxMeshViewCountNV #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 redeclared per-view builtin attributes out gl_MeshPerVertexNV { perviewNV vec4 gl_PositionPerViewNV[MAX_VIEWS]; // explicitly sized view dim perviewNV float gl_ClipDistancePerViewNV[MAX_VIEWS][4]; // explicitly sized view dim perviewNV float gl_CullDistancePerViewNV[MAX_VIEWS][4]; // explicitly sized view dim } gl_MeshVerticesNV[]; perprimitiveNV out gl_MeshPerPrimitiveNV { perviewNV int gl_LayerPerViewNV[]; // implicitly sized view dim perviewNV int gl_ViewportMaskPerViewNV[][1]; // implicitly sized view dim } gl_MeshPrimitivesNV[]; void main() { uint iid = gl_LocalInvocationID.x; uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID] = vec4(1.0, 2.0, 3.0, 4.0); gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2] = 5.0; gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3] = 6.0; gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID] = 7; gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0] = 8; BARRIER(); gl_MeshVerticesNV[iid+1].gl_PositionPerViewNV[viewID] = gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID]; gl_MeshVerticesNV[iid+1].gl_ClipDistancePerViewNV[viewID][2] = gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2]; gl_MeshVerticesNV[iid+1].gl_CullDistancePerViewNV[viewID][3] = gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3]; gl_MeshPrimitivesNV[iid+1].gl_LayerPerViewNV[viewID] = gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID]; gl_MeshPrimitivesNV[iid+1].gl_ViewportMaskPerViewNV[viewID][0] = gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0]; BARRIER(); } glslang-16.0.0/Test/spv.meshShaderSharedMem.mesh000066400000000000000000000013161506534232700215120ustar00rootroot00000000000000#version 450 #define MAX_VER 81 #define MAX_PRIM 32 #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 shared memory in mesh shaders: writeonly uniform image2D uni_image; uniform block0 { uint uni_value; }; shared vec4 mem[10]; void main() { uint iid = gl_LocalInvocationID.x; uint gid = gl_WorkGroupID.x; 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(); } glslang-16.0.0/Test/spv.meshShaderTaskMem.mesh000066400000000000000000000012741506534232700212110ustar00rootroot00000000000000#version 450 #define MAX_VER 81 #define MAX_PRIM 32 #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 task memory in mesh shaders: taskNV in taskBlock { float gid1[2]; vec4 gid2; } 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; } glslang-16.0.0/Test/spv.meshShaderUserDefined.mesh000066400000000000000000000024511506534232700220430ustar00rootroot00000000000000#version 450 #define MAX_VER 81 #define MAX_PRIM 32 #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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 perprimitiveNV 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(); } glslang-16.0.0/Test/spv.meshTaskShader.task000066400000000000000000000022311506534232700205520ustar00rootroot00000000000000#version 450 #define MAX_VIEWS gl_MaxMeshViewCountNV #define BARRIER() \ memoryBarrierShared(); \ barrier(); #extension GL_NV_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]; // test use of task memory in task shaders: taskNV out Task { vec2 dummy; vec2 submesh[3]; uint viewID; } mytask; void main() { uint iid = gl_LocalInvocationID.x; uint gid = gl_WorkGroupID.x; uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; // 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]; mytask.viewID = viewID; BARRIER(); // 3. set task count gl_TaskCountNV = 3; } glslang-16.0.0/Test/spv.multiStruct.comp000066400000000000000000000012201506534232700201740ustar00rootroot00000000000000#version 450 core struct MyStruct { vec2 foo[2]; bool sb; }; layout(binding = 0, std430) buffer SSBO0 { MyStruct a; } inBuf; layout(binding = 1, std430) buffer SSBO1 { MyStruct b; } outBuf; layout(binding = 2, std140) uniform UBO { MyStruct c; } uBuf; struct Nested { float f; MyStruct S[2]; }; layout(binding = 2, std140) uniform UBON { Nested N1; } uBufN; layout(binding = 1, std430) buffer SSBO1N { Nested N2; } outBufN; void main() { MyStruct t = inBuf.a; outBuf.b = t; t = uBuf.c; outBuf.b = t; Nested n = uBufN.N1; outBufN.N2 = n; } glslang-16.0.0/Test/spv.multiStructFuncall.frag000066400000000000000000000005331506534232700214700ustar00rootroot00000000000000#version 450 struct S { mat4 m; }; buffer blockName { S s1; }; // need an S with decoration S s2; // no decorations on S void fooConst(const in S s) { } void foo(in S s) { } void fooOut(inout S s) { } void main() { fooConst(s1); fooConst(s2); foo(s1); foo(s2); fooOut(s1); fooOut(s2); }glslang-16.0.0/Test/spv.multiView.frag000066400000000000000000000001761506534232700176140ustar00rootroot00000000000000#version 450 #extension GL_EXT_multiview : enable out vec4 color; void main() { color = vec4(gl_ViewIndex, 0, 0, 0); } glslang-16.0.0/Test/spv.multiple.var.same.const.frag000066400000000000000000000001521506534232700223140ustar00rootroot00000000000000#version 320 es precision mediump float; const float var0 = 1e-6; const float var1 = 1e-6; void main(){} glslang-16.0.0/Test/spv.multiviewPerViewAttributes.tesc000066400000000000000000000006241506534232700232420ustar00rootroot00000000000000#version 450 #extension GL_NVX_multiview_per_view_attributes :require layout(vertices = 4) out; out gl_PerVertex { int gl_ViewportMaskPerViewNV[]; vec4 gl_PositionPerViewNV[]; } gl_out[]; void main() { gl_out[gl_InvocationID].gl_ViewportMaskPerViewNV[0] = 1; gl_out[gl_InvocationID].gl_PositionPerViewNV[0] = gl_in[1].gl_Position + gl_in[1].gl_PositionPerViewNV[0]; } glslang-16.0.0/Test/spv.multiviewPerViewAttributes.vert000066400000000000000000000002751506534232700232660ustar00rootroot00000000000000#version 450 #extension GL_NVX_multiview_per_view_attributes :require void main() { gl_ViewportMaskPerViewNV[0] = 1; gl_PositionPerViewNV[0] = gl_Position; } glslang-16.0.0/Test/spv.newTexture.frag000066400000000000000000000040021506534232700177710ustar00rootroot00000000000000#version 430 uniform sampler2D s2D; uniform sampler2DRect sr; uniform sampler3D s3D; uniform samplerCube sCube; uniform samplerCubeShadow sCubeShadow; uniform samplerCubeArrayShadow sCubeArrayShadow; uniform sampler2DShadow s2DShadow; uniform sampler2DArray s2DArray; uniform sampler2DArrayShadow s2DArrayShadow; uniform isampler2D is2D; uniform isampler3D is3D; uniform isamplerCube isCube; uniform isampler2DArray is2DArray; uniform isampler2DMS is2Dms; uniform usampler2D us2D; uniform usampler3D us3D; uniform usamplerCube usCube; uniform usampler2DArray us2DArray; in float c1D; in vec2 c2D; in vec3 c3D; in vec4 c4D; flat in int ic1D; flat in ivec2 ic2D; flat in ivec3 ic3D; flat in ivec4 ic4D; out vec4 FragData; void main() { vec4 v = texture(s2D, c2D); v.y += texture(sCubeArrayShadow, c4D, c1D); v += textureProj(s3D, c4D); v += textureLod(s2DArray, c3D, 1.2); v.y += textureOffset(s2DShadow, c3D, ivec2(3), c1D); v += texelFetch(s3D, ic3D, ic1D); v += texelFetchOffset(s2D, ic2D, 4, ivec2(3)); v += texelFetchOffset(sr, ic2D, ivec2(4)); v.y += textureLodOffset(s2DShadow, c3D, c1D, ivec2(3)); v += textureProjLodOffset(s2D, c3D, c1D, ivec2(3)); v += textureGrad(sCube, c3D, c3D, c3D); v.x += textureGradOffset(s2DArrayShadow, c4D, c2D, c2D, ivec2(3)); v += textureProjGrad(s3D, c4D, c3D, c3D); v += textureProjGradOffset(s2D, c3D, c2D, c2D, ivec2(3)); ivec4 iv = texture(is2D, c2D); v += vec4(iv); iv = textureProjOffset(is2D, c4D, ivec2(3)); v += vec4(iv); iv = textureProjLod(is2D, c3D, c1D); v += vec4(iv); iv = textureProjGrad(is2D, c3D, c2D, c2D); v += vec4(iv); iv = texture(is3D, c3D, 4.2); v += vec4(iv); iv = textureLod(isCube, c3D, c1D); v += vec4(iv); iv = texelFetch(is2DArray, ic3D, ic1D); v += vec4(iv); ivec2 iv2 = textureSize(sCubeShadow, 2); // iv2 += textureSize(is2Dms); FragData = v + vec4(iv2, 0.0, 0.0); } glslang-16.0.0/Test/spv.noBuiltInLoc.vert000066400000000000000000000004131506534232700202230ustar00rootroot00000000000000#version 450 core layout(location = 0) in vec4 foo; layout(location = 0) out vec4 bar; uniform vec4 uv1; uniform float uv2; uniform vec3 uv3; layout(binding = 0) uniform atomic_uint a_uint; void main() { bar = foo; gl_Position = foo; }glslang-16.0.0/Test/spv.noDeadDecorations.vert000066400000000000000000000002231506534232700212460ustar00rootroot00000000000000#version 310 es precision mediump float; float func(float a) { return -a; a = a * -1.0; } void main() { gl_Position.x = func(0.0); } glslang-16.0.0/Test/spv.noLocation.vert000066400000000000000000000015111506534232700177670ustar00rootroot00000000000000#version 450 layout(location = 1) in vec4 in1; in vec4 in2; // ERROR layout(location = 3) in vec4 in3; layout(location = 1) out vec4 out1; out vec4 out2; // ERROR layout(location = 3) out vec4 out3; layout(location = 10) out inb1 { vec4 a; vec4 b; } inbi1; out inb2 { layout(location = 12) vec4 a; layout(location = 13) vec4 b; } inbi2; out inb3 { // ERROR vec4 a; vec4 b; } inbi3; layout(location = 14) out struct S1 { vec4 a; } s1; out struct S2 { vec4 a; } s2; // ERROR struct SS { int a; }; out layout(location = 15) SS ss1; out SS ss2; // ERROR out gl_PerVertex { vec4 gl_Position; float gl_ClipDistance[2]; }; void main() { gl_ClipDistance[0] = 1.0; } glslang-16.0.0/Test/spv.noWorkgroup.comp000066400000000000000000000003021506534232700201710ustar00rootroot00000000000000#version 450 layout(local_size_x_id = 18, local_size_y_id=10,local_size_z_id = 19) in; shared uint keys[gl_WorkGroupSize.z][gl_WorkGroupSize.x * gl_WorkGroupSize.y]; void main() { } glslang-16.0.0/Test/spv.noexplicitlayout.comp000066400000000000000000000006051506534232700212570ustar00rootroot00000000000000#version 450 core layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(set = 0, binding = 0, std430) buffer foo { int x[4]; } f; struct Bar { uint x; uint y; uint z[2]; }; layout(set = 0, binding = 1, std430) buffer foo2 { uvec4 a; Bar b; uint c; }; void main() { f.x; int x[4] = {0,0,0,0}; Bar new_bar; b = new_bar; } glslang-16.0.0/Test/spv.nonSquare.vert000066400000000000000000000010321506534232700176330ustar00rootroot00000000000000#version 140 in vec3 v3; in vec4 v4; out mat3x2 m32; const vec2 cv2 = vec2(10.0, 20.0); const mat2x4 m24 = mat2x4(3.0); const mat4x2 m42 = mat4x2(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); void main() { mat2x3 m23; vec2 a, b; a = v3 * m23; b = m32 * v3; gl_Position = vec4(m23 * m32 * v3, m24[1][3]) + (m24 * m42) * v4 + cv2 * m42 + m24 * cv2 + vec4(cv2[1], cv2.x, m42[2][1], m42[2][0]); } glslang-16.0.0/Test/spv.nontemporalbuffer.frag000066400000000000000000000014141506534232700213530ustar00rootroot00000000000000#version 460 #pragma use_vulkan_memory_model #extension GL_EXT_nontemporal_keyword: require layout(binding=0) buffer nontemporal NONTEMPORAL_BUFFER { int b_i; int b_o; }; layout(binding=1) buffer BUFFER_NONTEMPORAL { nontemporal int bntemp_i; nontemporal int bntemp_o; }; layout(binding=2) uniform nontemporal NONTEMPORAL_UNIFORMS { ivec2 u_uv; }; layout(binding=3) buffer nontemporal NONTEMPORAL_ATOMIC { int bn_atom; }; layout(binding=4) buffer ATOMIC_NONTEMPORAL { nontemporal int b_natom; int b_atom; }; layout(binding=5, rgba8) uniform readonly image2D u_image; layout(location=0) out vec4 out_color; void main() { b_o = b_i; bntemp_i = bntemp_o; atomicAdd(bn_atom, 1); atomicAdd(b_natom, 1); atomicAdd(b_atom, 1); } glslang-16.0.0/Test/spv.nonuniform.frag000066400000000000000000000057021506534232700200210ustar00rootroot00000000000000#version 450 #extension GL_EXT_nonuniform_qualifier : enable layout(location=0) nonuniformEXT in vec4 nu_inv4; nonuniformEXT float nu_gf; layout(location=1) in nonuniformEXT flat int nu_ii; layout(location = 2) in vec2 inTexcoord; layout(binding=0, input_attachment_index = 0) uniform subpassInput inputAttachmentDyn[]; layout(binding=1) uniform samplerBuffer uniformTexelBufferDyn[]; layout(binding=2, r32f) uniform imageBuffer storageTexelBufferDyn[]; layout(binding=3) uniform uname { float a; } uniformBuffer[]; layout(binding=4) buffer bname { float b; } storageBuffer[]; layout(binding=5) uniform sampler2D sampledImage[]; layout(binding=6, r32f) uniform image2D storageImage[]; layout(binding=7, input_attachment_index = 1) uniform subpassInput inputAttachment[]; layout(binding=8) uniform samplerBuffer uniformTexelBuffer[]; layout(binding=9, r32f) uniform imageBuffer storageTexelBuffer[]; layout(binding = 10) uniform texture2D uniformTexArr[8]; layout(binding = 11) uniform sampler uniformSampler; nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f) { return nupi; } void main() { nonuniformEXT int nu_li; nonuniformEXT int nu_li2; int dyn_i; int a = foo(nu_li, nu_li); nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2); nu_li2 = a + nonuniformEXT(a * 2); float b; b = nu_inv4.x * nu_gf; b += subpassLoad(inputAttachmentDyn[dyn_i]).x; b += texelFetch(uniformTexelBufferDyn[dyn_i], 1).x; b += imageLoad(storageTexelBufferDyn[dyn_i], 1).x; b += uniformBuffer[nu_ii].a; b += storageBuffer[nu_ii].b; b += texture(sampledImage[nu_ii], vec2(0.5)).x; b += imageLoad(storageImage[nu_ii], ivec2(1)).x; b += subpassLoad(inputAttachment[nu_ii]).x; b += texelFetch(uniformTexelBuffer[nu_ii], 1).x; b += imageLoad(storageTexelBuffer[nu_ii], 1).x; b += texture(sampler2D(uniformTexArr[nu_ii], uniformSampler), inTexcoord.xy).x; b += texture(nonuniformEXT(sampler2D(uniformTexArr[nu_ii], uniformSampler)), inTexcoord.xy).x; nonuniformEXT ivec4 v; nonuniformEXT mat4 m; nonuniformEXT struct S { int a; } s; nonuniformEXT int arr[10]; ivec4 uv; mat4 um; struct US { int a[10]; } us; int uarr[10]; b += uniformBuffer[v.y].a; b += uniformBuffer[v[2]].a; b += uniformBuffer[uv[nu_ii]].a; b += uniformBuffer[int(m[2].z)].a; b += uniformBuffer[s.a].a; b += uniformBuffer[arr[2]].a; b += uniformBuffer[int(um[nu_ii].z)].a; b += uniformBuffer[us.a[nu_ii]].a; b += uniformBuffer[uarr[nu_ii]].a; storageBuffer[nu_ii].b = b; } glslang-16.0.0/Test/spv.nonuniform2.frag000066400000000000000000000004431506534232700201000ustar00rootroot00000000000000#version 450 #extension GL_EXT_nonuniform_qualifier : require layout(set=0,binding=4,rgba32f) uniform imageBuffer data[]; layout(location = 0) out vec4 FragColor; layout(location = 3) in flat int rIndex; void main() { FragColor = imageLoad(data[nonuniformEXT(rIndex)], 0); } glslang-16.0.0/Test/spv.nonuniform3.frag000066400000000000000000000005461506534232700201050ustar00rootroot00000000000000#version 450 #extension GL_EXT_nonuniform_qualifier : require layout(set = 0, binding = 0) uniform texture2D uTex[]; layout(set = 1, binding = 0) uniform sampler uSamp; layout(location = 0) flat in int Index; layout(location = 0) out vec4 FragColor; void main() { FragColor = texture(nonuniformEXT(sampler2D(uTex[Index], uSamp)), vec2(0.5)); } glslang-16.0.0/Test/spv.nonuniform4.frag000066400000000000000000000003601506534232700201000ustar00rootroot00000000000000#version 450 #extension GL_EXT_nonuniform_qualifier : require layout(set=0,binding=4,r32ui) uniform uimageBuffer data[]; layout(location = 3) in flat int rIndex; void main() { imageAtomicAdd(data[nonuniformEXT(rIndex)], 0, 0); } glslang-16.0.0/Test/spv.nonuniform5.frag000066400000000000000000000004321506534232700201010ustar00rootroot00000000000000#version 450 #extension GL_EXT_nonuniform_qualifier : require layout(location = 0) flat in int Index; layout(location = 0) out vec4 FragColor; layout(set = 0, binding = 0) uniform UBO { vec4 v; } ubos[]; void main() { FragColor = ubos[nonuniformEXT(Index)].v; } glslang-16.0.0/Test/spv.nullInit.comp000066400000000000000000000006131506534232700174400ustar00rootroot00000000000000#version 460 #extension GL_EXT_null_initializer : enable #ifdef GL_EXT_null_initializer struct S { vec3[4] v; int a; }; struct T { int b; S s; }; shared float f = { }; shared T t1 = { }; shared T t2 = { }; shared S s = { }; shared float g = { }; shared int i = { }; void main() { S local = { }; ++local.a; } S global = { }; #endif glslang-16.0.0/Test/spv.nv.cluster-allops.frag000066400000000000000000000006461506534232700212240ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_query : enable #extension GL_NV_cluster_acceleration_structure : enable layout(binding = 1) uniform accelerationStructureEXT as; void main() { rayQueryEXT rq; int id_candidate = rayQueryGetIntersectionClusterIdNV(rq, false); int id_committed = rayQueryGetIntersectionClusterIdNV(rq, true); bool test = (id_candidate == gl_ClusterIDNoneNV) && (id_committed == gl_ClusterIDNoneNV); } glslang-16.0.0/Test/spv.nv.cluster-allops.rahit000066400000000000000000000007561506534232700214160ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_query : enable #extension GL_NV_cluster_acceleration_structure : enable layout(binding = 1) uniform accelerationStructureEXT as; void main() { int clusterid = gl_ClusterIDNV; rayQueryEXT rq; int id_candidate = rayQueryGetIntersectionClusterIdNV(rq, false); int id_committed = rayQueryGetIntersectionClusterIdNV(rq, true); bool test = (id_candidate == gl_ClusterIDNoneNV) && (id_committed == gl_ClusterIDNoneNV); } glslang-16.0.0/Test/spv.nv.cluster-allops.rchit000066400000000000000000000011501506534232700214050ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_query : enable #extension GL_NV_cluster_acceleration_structure : enable #extension GL_NV_shader_invocation_reorder : enable layout(binding = 1) uniform accelerationStructureEXT as; void main() { hitObjectNV hitObj; int hitObjId = hitObjectGetClusterIdNV(hitObj); int clusterid = gl_ClusterIDNV; rayQueryEXT rq; int id_candidate = rayQueryGetIntersectionClusterIdNV(rq, false); int id_committed = rayQueryGetIntersectionClusterIdNV(rq, true); bool test = (id_candidate == gl_ClusterIDNoneNV) && (id_committed == gl_ClusterIDNoneNV); } glslang-16.0.0/Test/spv.nv.cluster-allops.rgen000066400000000000000000000011071506534232700212310ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_query : enable #extension GL_NV_cluster_acceleration_structure : enable #extension GL_NV_shader_invocation_reorder : enable layout(binding = 1) uniform accelerationStructureEXT as; void main() { hitObjectNV hitObj; int hitObjId = hitObjectGetClusterIdNV(hitObj); rayQueryEXT rq; int id_candidate = rayQueryGetIntersectionClusterIdNV(rq, false); int id_committed = rayQueryGetIntersectionClusterIdNV(rq, true); bool test = (id_candidate == gl_ClusterIDNoneNV) && (id_committed == gl_ClusterIDNoneNV); } glslang-16.0.0/Test/spv.nv.cluster-allops.rmiss000066400000000000000000000011071506534232700214330ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_query : enable #extension GL_NV_cluster_acceleration_structure : enable #extension GL_NV_shader_invocation_reorder : enable layout(binding = 1) uniform accelerationStructureEXT as; void main() { hitObjectNV hitObj; int hitObjId = hitObjectGetClusterIdNV(hitObj); rayQueryEXT rq; int id_candidate = rayQueryGetIntersectionClusterIdNV(rq, false); int id_committed = rayQueryGetIntersectionClusterIdNV(rq, true); bool test = (id_candidate == gl_ClusterIDNoneNV) && (id_committed == gl_ClusterIDNoneNV); } glslang-16.0.0/Test/spv.nv.dmm-allops.comp000066400000000000000000000013111506534232700203250ustar00rootroot00000000000000#version 460 #extension GL_NV_displacement_micromap : enable #extension GL_EXT_ray_query : enable layout(local_size_x = 16) in; layout(binding = 1) uniform accelerationStructureEXT as; layout(binding = 0) buffer block { vec3 op_pos; vec2 op_bary; }; void main() { op_pos = fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,0)); op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,1)); op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(1,0)); op_bary = fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,0)); op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,1)); op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(1,0)); } glslang-16.0.0/Test/spv.nv.dmm-allops.mesh000066400000000000000000000014171506534232700203320ustar00rootroot00000000000000#version 460 #extension GL_NV_displacement_micromap : enable #extension GL_NV_mesh_shader : enable #extension GL_EXT_ray_query : enable layout(max_vertices = 8, max_primitives = 16, triangles) out; layout(binding = 1) uniform accelerationStructureEXT as; layout(binding = 0) buffer block { vec3 op_pos; vec2 op_bary; }; void main() { op_pos = fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,0)); op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,1)); op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(1,0)); op_bary = fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,0)); op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,1)); op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(1,0)); } glslang-16.0.0/Test/spv.nv.dmm-allops.rahit000066400000000000000000000014771506534232700205130ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_query : enable #extension GL_NV_displacement_micromap : enable layout(binding = 1) uniform accelerationStructureEXT as; layout(binding = 0) buffer block { vec3 op_pos; vec2 op_bary; uint op_hit; }; void main() { op_pos = gl_HitMicroTriangleVertexPositionsNV[0]; op_pos += gl_HitMicroTriangleVertexPositionsNV[1]; op_pos += gl_HitMicroTriangleVertexPositionsNV[2]; op_bary = gl_HitMicroTriangleVertexBarycentricsNV[0]; op_bary += gl_HitMicroTriangleVertexBarycentricsNV[1]; op_bary += gl_HitMicroTriangleVertexBarycentricsNV[2]; op_hit = gl_HitKindEXT; op_hit &= gl_HitKindFrontFacingTriangleEXT | gl_HitKindBackFacingTriangleEXT | gl_HitKindFrontFacingMicroTriangleNV | gl_HitKindBackFacingMicroTriangleNV; } glslang-16.0.0/Test/spv.nv.dmm-allops.rchit000066400000000000000000000014771506534232700205150ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_query : enable #extension GL_NV_displacement_micromap : enable layout(binding = 1) uniform accelerationStructureEXT as; layout(binding = 0) buffer block { vec3 op_pos; vec2 op_bary; uint op_hit; }; void main() { op_pos = gl_HitMicroTriangleVertexPositionsNV[0]; op_pos += gl_HitMicroTriangleVertexPositionsNV[1]; op_pos += gl_HitMicroTriangleVertexPositionsNV[2]; op_bary = gl_HitMicroTriangleVertexBarycentricsNV[0]; op_bary += gl_HitMicroTriangleVertexBarycentricsNV[1]; op_bary += gl_HitMicroTriangleVertexBarycentricsNV[2]; op_hit = gl_HitKindEXT; op_hit &= gl_HitKindFrontFacingTriangleEXT | gl_HitKindBackFacingTriangleEXT | gl_HitKindFrontFacingMicroTriangleNV | gl_HitKindBackFacingMicroTriangleNV; } glslang-16.0.0/Test/spv.nv.dmm-allops.rgen000066400000000000000000000016071506534232700203320ustar00rootroot00000000000000#version 460 #extension GL_NV_displacement_micromap : enable #extension GL_EXT_ray_query : enable layout(binding = 1) uniform accelerationStructureEXT as; layout(binding = 0) buffer block { vec3 op_pos; vec2 op_bary; uint op_hitmask; }; void main() { op_pos = fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,0)); op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,1)); op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(1,0)); op_bary = fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,0)); op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,1)); op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(1,0)); op_hitmask = gl_HitKindFrontFacingTriangleEXT | gl_HitKindBackFacingTriangleEXT | gl_HitKindFrontFacingMicroTriangleNV | gl_HitKindBackFacingMicroTriangleNV; } glslang-16.0.0/Test/spv.nv.hitobject-allops.rchit000066400000000000000000000045061506534232700217070ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_shader_invocation_reorder : enable #extension GL_NV_ray_tracing_motion_blur : enable layout(location = 1) rayPayloadEXT vec4 payload; layout(location = 2) rayPayloadEXT pBlock { vec2 val1; vec2 val2; }; layout(location = 2) hitObjectAttributeNV vec2 attr; layout(location = 3) hitObjectAttributeNV hBlock { float attrval;}; layout(binding = 0) uniform accelerationStructureEXT as; layout(binding = 1) buffer block { float op; }; void main() { hitObjectNV hObj; hitObjectNV hObjHit, hObjMiss, hObjNop; attr = vec2(1.0); attrval = 2.0; hitObjectTraceRayNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 1); hitObjectTraceRayMotionNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 10.0, 2); hitObjectRecordHitNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 2); hitObjectRecordHitMotionNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 2); hitObjectRecordHitWithIndexNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 3); hitObjectRecordHitWithIndexMotionNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 3); hitObjectRecordEmptyNV(hObjNop); hitObjectRecordMissNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0); hitObjectRecordMissMotionNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0, 8.0f); hitObjectExecuteShaderNV(hObjHit, 2); if (hitObjectIsHitNV(hObj)) { op = 1.0f; } else if (hitObjectIsMissNV(hObj)) { op = 2.0f; } else if (hitObjectIsEmptyNV(hObj)) { op = 3.0f; } float tmin = hitObjectGetRayTMinNV(hObjHit); float tmax = hitObjectGetRayTMaxNV(hObjHit); vec3 orig = hitObjectGetWorldRayOriginNV(hObjHit); vec3 dir = hitObjectGetWorldRayDirectionNV(hObjHit); vec3 oorig = hitObjectGetObjectRayOriginNV(hObjHit); vec3 odir = hitObjectGetObjectRayDirectionNV(hObjHit); mat4x3 otw = hitObjectGetObjectToWorldNV(hObjHit); mat4x3 wto = hitObjectGetWorldToObjectNV(hObjHit); int cid = hitObjectGetInstanceCustomIndexNV(hObjMiss); int iid = hitObjectGetInstanceIdNV(hObjNop); int pid = hitObjectGetPrimitiveIndexNV(hObj); int gid = hitObjectGetGeometryIndexNV(hObj); uint hkind = hitObjectGetHitKindNV(hObj); hitObjectGetAttributesNV(hObj, 2); uvec2 handle = hitObjectGetShaderRecordBufferHandleNV(hObj); uint rid = hitObjectGetShaderBindingTableRecordIndexNV(hObj); } glslang-16.0.0/Test/spv.nv.hitobject-allops.rgen000066400000000000000000000046361506534232700215350ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_shader_invocation_reorder : enable #extension GL_NV_ray_tracing_motion_blur : enable layout(location = 1) rayPayloadEXT vec4 payload; layout(location = 2) rayPayloadEXT pBlock { vec2 val1; vec2 val2; }; layout(location = 2) hitObjectAttributeNV vec2 attr; layout(location = 3) hitObjectAttributeNV hBlock { float attrval;}; layout(binding = 0) uniform accelerationStructureEXT as; layout(binding = 1) buffer block { float op; }; void main() { hitObjectNV hObj; hitObjectNV hObjHit, hObjMiss, hObjNop; attr = vec2(1.0); attrval = 2.0; hitObjectTraceRayNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 1); hitObjectTraceRayMotionNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 10.0, 2); hitObjectRecordHitNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 2); hitObjectRecordHitMotionNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 2); hitObjectRecordHitWithIndexNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 3); hitObjectRecordHitWithIndexMotionNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 3); hitObjectRecordEmptyNV(hObjNop); hitObjectRecordMissNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0); hitObjectRecordMissMotionNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0, 8.0f); hitObjectExecuteShaderNV(hObjHit, 1); if (hitObjectIsHitNV(hObj)) { op = 1.0f; } else if (hitObjectIsMissNV(hObj)) { op = 2.0f; } else if (hitObjectIsEmptyNV(hObj)) { op = 3.0f; } float tmin = hitObjectGetRayTMinNV(hObjHit); float tmax = hitObjectGetRayTMaxNV(hObjHit); vec3 orig = hitObjectGetWorldRayOriginNV(hObjHit); vec3 dir = hitObjectGetWorldRayDirectionNV(hObjHit); vec3 oorig = hitObjectGetObjectRayOriginNV(hObjHit); vec3 odir = hitObjectGetObjectRayDirectionNV(hObjHit); mat4x3 otw = hitObjectGetObjectToWorldNV(hObjHit); mat4x3 wto = hitObjectGetWorldToObjectNV(hObjHit); int cid = hitObjectGetInstanceCustomIndexNV(hObjMiss); int iid = hitObjectGetInstanceIdNV(hObjNop); int pid = hitObjectGetPrimitiveIndexNV(hObj); int gid = hitObjectGetGeometryIndexNV(hObj); uint hkind = hitObjectGetHitKindNV(hObj); hitObjectGetAttributesNV(hObj, 2); uvec2 handle = hitObjectGetShaderRecordBufferHandleNV(hObj); uint rid = hitObjectGetShaderBindingTableRecordIndexNV(hObj); reorderThreadNV(4,4); reorderThreadNV(hObjHit); reorderThreadNV(hObjHit, 4, 2); } glslang-16.0.0/Test/spv.nv.hitobject-allops.rmiss000066400000000000000000000045131506534232700217310ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_shader_invocation_reorder : enable #extension GL_NV_ray_tracing_motion_blur : enable layout(location = 1) rayPayloadEXT vec4 payload; layout(location = 2) rayPayloadEXT pBlock { vec2 val1; vec2 val2; }; layout(location = 2) hitObjectAttributeNV vec2 attr; layout(location = 3) hitObjectAttributeNV hBlock { float attrval;}; layout(binding = 0) uniform accelerationStructureEXT as; layout(binding = 1) buffer block { float op; }; void main() { hitObjectNV hObj; hitObjectNV hObjHit, hObjMiss, hObjNop; attr = vec2(1.0); attrval = 2.0; hitObjectTraceRayNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 1); hitObjectTraceRayMotionNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 10.0, 2); hitObjectRecordHitNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 2); hitObjectRecordHitMotionNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 2); hitObjectRecordHitWithIndexNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 3); hitObjectRecordHitWithIndexMotionNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 3); hitObjectRecordEmptyNV(hObjNop); hitObjectRecordMissNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0); hitObjectRecordMissMotionNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0, 8.0f); hitObjectExecuteShaderNV(hObjHit, 2); if (hitObjectIsHitNV(hObj)) { op = 1.0f; } else if (hitObjectIsMissNV(hObj)) { op = 2.0f; } else if (hitObjectIsEmptyNV(hObj)) { op = 3.0f; } float tmin = hitObjectGetRayTMinNV(hObjHit); float tmax = hitObjectGetRayTMaxNV(hObjHit); vec3 orig = hitObjectGetWorldRayOriginNV(hObjHit); vec3 dir = hitObjectGetWorldRayDirectionNV(hObjHit); vec3 oorig = hitObjectGetObjectRayOriginNV(hObjHit); vec3 odir = hitObjectGetObjectRayDirectionNV(hObjHit); mat4x3 otw = hitObjectGetObjectToWorldNV(hObjHit); mat4x3 wto = hitObjectGetWorldToObjectNV(hObjHit); int cid = hitObjectGetInstanceCustomIndexNV(hObjMiss); int iid = hitObjectGetInstanceIdNV(hObjNop); int pid = hitObjectGetPrimitiveIndexNV(hObj); int gid = hitObjectGetGeometryIndexNV(hObj); uint hkind = hitObjectGetHitKindNV(hObj); hitObjectGetAttributesNV(hObj, 2); uvec2 handle = hitObjectGetShaderRecordBufferHandleNV(hObj); uint rid = hitObjectGetShaderBindingTableRecordIndexNV(hObj); } glslang-16.0.0/Test/spv.nv.hitobject-errors.rgen000066400000000000000000000011441506534232700215460ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_shader_invocation_reorder : enable hitObjectNV hObjGlob; // OK uniform hitObjectNV uHitObj; // ERROR layout(location=0) in hitObjectNV hobjIn; // ERROR out hitObjectNV hobjOut; // ERROR struct hObjWrapper{ hitObjectNV objField; vec3 v; }; void foo(hitObjectNV hObjArg) {} // OK void main() { hObjWrapper wrapper; // ERROR hitObjectNV localHitObj; // OK foo(localHitObj); // OK } glslang-16.0.0/Test/spv.nv.lss-allops.frag000066400000000000000000000022331506534232700203360ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_linear_swept_spheres : enable #extension GL_EXT_ray_query : enable #extension GL_NV_shader_invocation_reorder : enable void main() { hitObjectNV hObj; rayQueryEXT rq; vec3 pos; vec3 lss_pos[2]; float rad; float lss_rad[2]; float hitVal; bool isSphereHit, isLSSHit; pos = rayQueryGetIntersectionSpherePositionNV(rq, true); pos = rayQueryGetIntersectionSpherePositionNV(rq, false); rad = rayQueryGetIntersectionSphereRadiusNV(rq, true); rad = rayQueryGetIntersectionSphereRadiusNV(rq, false); rayQueryGetIntersectionLSSPositionsNV(rq, true, lss_pos); rayQueryGetIntersectionLSSPositionsNV(rq, false, lss_pos); rayQueryGetIntersectionLSSRadiiNV(rq, true, lss_rad); rayQueryGetIntersectionLSSRadiiNV(rq, false, lss_rad); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, true); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, false); isSphereHit = rayQueryIsSphereHitNV(rq, true); isSphereHit = rayQueryIsSphereHitNV(rq, false); isLSSHit = rayQueryIsLSSHitNV(rq, true); isLSSHit = rayQueryIsLSSHitNV(rq, false); } glslang-16.0.0/Test/spv.nv.lss-allops.rchit000066400000000000000000000031701506534232700205310ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_linear_swept_spheres : enable #extension GL_EXT_ray_query : enable #extension GL_NV_shader_invocation_reorder : enable void main() { hitObjectNV hObj; rayQueryEXT rq; vec3 pos; vec3 lss_pos[2]; float rad; float lss_rad[2]; float hitVal; bool isSphereHit, isLSSHit; pos = hitObjectGetSpherePositionNV(hObj); rad = hitObjectGetSphereRadiusNV(hObj); hitObjectGetLSSPositionsNV(hObj, lss_pos); hitObjectGetLSSRadiiNV(hObj, lss_rad); isSphereHit = hitObjectIsSphereHitNV(hObj); isLSSHit = hitObjectIsLSSHitNV(hObj); pos = rayQueryGetIntersectionSpherePositionNV(rq, true); pos = rayQueryGetIntersectionSpherePositionNV(rq, false); rad = rayQueryGetIntersectionSphereRadiusNV(rq, true); rad = rayQueryGetIntersectionSphereRadiusNV(rq, false); rayQueryGetIntersectionLSSPositionsNV(rq, true, lss_pos); rayQueryGetIntersectionLSSPositionsNV(rq, false, lss_pos); rayQueryGetIntersectionLSSRadiiNV(rq, true, lss_rad); rayQueryGetIntersectionLSSRadiiNV(rq, false, lss_rad); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, true); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, false); isSphereHit = rayQueryIsSphereHitNV(rq, true); isSphereHit = rayQueryIsSphereHitNV(rq, false); isLSSHit = rayQueryIsLSSHitNV(rq, true); isLSSHit = rayQueryIsLSSHitNV(rq, false); pos = gl_HitSpherePositionNV; rad = gl_HitSphereRadiusNV; lss_pos = gl_HitLSSPositionsNV; lss_rad = gl_HitLSSRadiiNV; isSphereHit = gl_HitIsSphereNV; isLSSHit = gl_HitIsLSSNV; } glslang-16.0.0/Test/spv.nv.lss-allops.rgen000066400000000000000000000026551506534232700203620ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_linear_swept_spheres : enable #extension GL_EXT_ray_query : enable #extension GL_NV_shader_invocation_reorder : enable void main() { hitObjectNV hObj; rayQueryEXT rq; vec3 pos; vec3 lss_pos[2]; float rad; float lss_rad[2]; float hitVal; bool isSphereHit, isLSSHit; pos = hitObjectGetSpherePositionNV(hObj); rad = hitObjectGetSphereRadiusNV(hObj); hitObjectGetLSSPositionsNV(hObj, lss_pos); hitObjectGetLSSRadiiNV(hObj, lss_rad); isSphereHit = hitObjectIsSphereHitNV(hObj); isLSSHit = hitObjectIsLSSHitNV(hObj); pos = rayQueryGetIntersectionSpherePositionNV(rq, true); pos = rayQueryGetIntersectionSpherePositionNV(rq, false); rad = rayQueryGetIntersectionSphereRadiusNV(rq, true); rad = rayQueryGetIntersectionSphereRadiusNV(rq, false); rayQueryGetIntersectionLSSPositionsNV(rq, true, lss_pos); rayQueryGetIntersectionLSSPositionsNV(rq, false, lss_pos); rayQueryGetIntersectionLSSRadiiNV(rq, true, lss_rad); rayQueryGetIntersectionLSSRadiiNV(rq, false, lss_rad); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, true); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, false); isSphereHit = rayQueryIsSphereHitNV(rq, true); isSphereHit = rayQueryIsSphereHitNV(rq, false); isLSSHit = rayQueryIsLSSHitNV(rq, true); isLSSHit = rayQueryIsLSSHitNV(rq, false); } glslang-16.0.0/Test/spv.nv.lss-allops.rmiss000066400000000000000000000026551506534232700205640ustar00rootroot00000000000000#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_linear_swept_spheres : enable #extension GL_EXT_ray_query : enable #extension GL_NV_shader_invocation_reorder : enable void main() { hitObjectNV hObj; rayQueryEXT rq; vec3 pos; vec3 lss_pos[2]; float rad; float lss_rad[2]; float hitVal; bool isSphereHit, isLSSHit; pos = hitObjectGetSpherePositionNV(hObj); rad = hitObjectGetSphereRadiusNV(hObj); hitObjectGetLSSPositionsNV(hObj, lss_pos); hitObjectGetLSSRadiiNV(hObj, lss_rad); isSphereHit = hitObjectIsSphereHitNV(hObj); isLSSHit = hitObjectIsLSSHitNV(hObj); pos = rayQueryGetIntersectionSpherePositionNV(rq, true); pos = rayQueryGetIntersectionSpherePositionNV(rq, false); rad = rayQueryGetIntersectionSphereRadiusNV(rq, true); rad = rayQueryGetIntersectionSphereRadiusNV(rq, false); rayQueryGetIntersectionLSSPositionsNV(rq, true, lss_pos); rayQueryGetIntersectionLSSPositionsNV(rq, false, lss_pos); rayQueryGetIntersectionLSSRadiiNV(rq, true, lss_rad); rayQueryGetIntersectionLSSRadiiNV(rq, false, lss_rad); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, true); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, false); isSphereHit = rayQueryIsSphereHitNV(rq, true); isSphereHit = rayQueryIsSphereHitNV(rq, false); isLSSHit = rayQueryIsLSSHitNV(rq, true); isLSSHit = rayQueryIsLSSHitNV(rq, false); } glslang-16.0.0/Test/spv.nv.lss-lssgeomcap.rgen000066400000000000000000000002741506534232700212200ustar00rootroot00000000000000#version 460 #extension GL_NV_shader_invocation_reorder : enable #extension GL_NV_linear_swept_spheres : enable void main() { hitObjectNV hObj; bool temp = hitObjectIsLSSHitNV(hObj); } glslang-16.0.0/Test/spv.nv.lss-spheregeomcap.rgen000066400000000000000000000004361506534232700217050ustar00rootroot00000000000000#version 460 #extension GL_NV_shader_invocation_reorder : enable #extension GL_NV_linear_swept_spheres : enable void main() { hitObjectNV hObj; bool temp = hitObjectIsSphereHitNV(hObj); vec3 pos = hitObjectGetSpherePositionNV(hObj); float rad = hitObjectGetSphereRadiusNV(hObj); } glslang-16.0.0/Test/spv.nvAtomicFp16Vec.frag000066400000000000000000000146611506534232700205060ustar00rootroot00000000000000#version 430 #extension GL_NV_shader_atomic_fp16_vector : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable layout(binding = 0) buffer Buffer { f16vec2 dataf16v2; f16vec4 dataf16v4; f16vec2 resf16v2; f16vec4 resf16v4; }buf; layout(binding = 0, rg16f) volatile coherent uniform image1D fimage1D; layout(binding = 1, rg16f) volatile coherent uniform image1DArray fimage1DArray; layout(binding = 2, rg16f) volatile coherent uniform image2D fimage2D; layout(binding = 3, rg16f) volatile coherent uniform image2DArray fimage2DArray; layout(binding = 5, rg16f) volatile coherent uniform imageCube fimageCube; layout(binding = 6, rg16f) volatile coherent uniform imageCubeArray fimageCubeArray; layout(binding = 9, rg16f) volatile coherent uniform image3D fimage3D; layout(binding = 10, rgba16f) volatile coherent uniform image1D fimage1Dv4; layout(binding = 11, rgba16f) volatile coherent uniform image1DArray fimage1DArrayv4; layout(binding = 12, rgba16f) volatile coherent uniform image2D fimage2Dv4; layout(binding = 13, rgba16f) volatile coherent uniform image2DArray fimage2DArrayv4; layout(binding = 15, rgba16f) volatile coherent uniform imageCube fimageCubev4; layout(binding = 16, rgba16f) volatile coherent uniform imageCubeArray fimageCubeArrayv4; layout(binding = 19, rgba16f) volatile coherent uniform image3D fimage3Dv4; void main() { // atomic* functions supported with f16vec2 buf.resf16v2 = atomicAdd(buf.dataf16v2, f16vec2(3)); buf.resf16v2 += atomicMin(buf.dataf16v2, f16vec2(3)); buf.resf16v2 += atomicMax(buf.dataf16v2, f16vec2(3)); buf.resf16v2 += atomicExchange(buf.dataf16v2, f16vec2(3)); // atomic* functions supported with f16vec4 buf.resf16v4 = atomicAdd(buf.dataf16v4, f16vec4(3)); buf.resf16v4 += atomicMin(buf.dataf16v4, f16vec4(3)); buf.resf16v4 += atomicMax(buf.dataf16v4, f16vec4(3)); buf.resf16v4 += atomicExchange(buf.dataf16v4, f16vec4(3)); // imageAtomic* functions supported with f16vec2 and only format supported is rg16f f16vec2 constVec2 = f16vec2(2.0); buf.resf16v2 += imageAtomicAdd(fimage1D, int(0), constVec2); buf.resf16v2 += imageAtomicAdd(fimage1DArray, ivec2(0,0), constVec2); buf.resf16v2 += imageAtomicAdd(fimage2D, ivec2(0,0), constVec2); buf.resf16v2 += imageAtomicAdd(fimage2DArray, ivec3(0,0, 0), constVec2); buf.resf16v2 += imageAtomicAdd(fimageCube, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicAdd(fimageCubeArray, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicAdd(fimage3D, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicMin(fimage1D, int(0), constVec2); buf.resf16v2 += imageAtomicMin(fimage1DArray, ivec2(0,0), constVec2); buf.resf16v2 += imageAtomicMin(fimage2D, ivec2(0,0), constVec2); buf.resf16v2 += imageAtomicMin(fimage2DArray, ivec3(0,0, 0), constVec2); buf.resf16v2 += imageAtomicMin(fimageCube, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicMin(fimageCubeArray, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicMin(fimage3D, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicMax(fimage1D, int(0), constVec2); buf.resf16v2 += imageAtomicMax(fimage1DArray, ivec2(0,0), constVec2); buf.resf16v2 += imageAtomicMax(fimage2D, ivec2(0,0), constVec2); buf.resf16v2 += imageAtomicMax(fimage2DArray, ivec3(0,0, 0), constVec2); buf.resf16v2 += imageAtomicMax(fimageCube, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicMax(fimageCubeArray, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicMax(fimage3D, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicExchange(fimage1D, int(0), constVec2); buf.resf16v2 += imageAtomicExchange(fimage1DArray, ivec2(0,0), constVec2); buf.resf16v2 += imageAtomicExchange(fimage2D, ivec2(0,0), constVec2); buf.resf16v2 += imageAtomicExchange(fimage2DArray, ivec3(0,0, 0), constVec2); buf.resf16v2 += imageAtomicExchange(fimageCube, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicExchange(fimageCubeArray, ivec3(0,0,0), constVec2); buf.resf16v2 += imageAtomicExchange(fimage3D, ivec3(0,0,0), constVec2); // imageAtomic* functions supported with f16vec4 and only format supported is rgba16f f16vec4 constVec4 = f16vec4(2.0); buf.resf16v4 += imageAtomicAdd(fimage1Dv4, int(0), constVec4); buf.resf16v4 += imageAtomicAdd(fimage1DArrayv4, ivec2(0,0), constVec4); buf.resf16v4 += imageAtomicAdd(fimage2Dv4, ivec2(0,0), constVec4); buf.resf16v4 += imageAtomicAdd(fimage2DArrayv4, ivec3(0,0, 0), constVec4); buf.resf16v4 += imageAtomicAdd(fimageCubev4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicAdd(fimageCubeArrayv4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicAdd(fimage3Dv4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicMin(fimage1Dv4, int(0), constVec4); buf.resf16v4 += imageAtomicMin(fimage1DArrayv4, ivec2(0,0), constVec4); buf.resf16v4 += imageAtomicMin(fimage2Dv4, ivec2(0,0), constVec4); buf.resf16v4 += imageAtomicMin(fimage2DArrayv4, ivec3(0,0, 0), constVec4); buf.resf16v4 += imageAtomicMin(fimageCubev4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicMin(fimageCubeArrayv4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicMin(fimage3Dv4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicMax(fimage1Dv4, int(0), constVec4); buf.resf16v4 += imageAtomicMax(fimage1DArrayv4, ivec2(0,0), constVec4); buf.resf16v4 += imageAtomicMax(fimage2Dv4, ivec2(0,0), constVec4); buf.resf16v4 += imageAtomicMax(fimage2DArrayv4, ivec3(0,0, 0), constVec4); buf.resf16v4 += imageAtomicMax(fimageCubev4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicMax(fimageCubeArrayv4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicMax(fimage3Dv4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicExchange(fimage1Dv4, int(0), constVec4); buf.resf16v4 += imageAtomicExchange(fimage1DArrayv4, ivec2(0,0), constVec4); buf.resf16v4 += imageAtomicExchange(fimage2Dv4, ivec2(0,0), constVec4); buf.resf16v4 += imageAtomicExchange(fimage2DArrayv4, ivec3(0,0, 0), constVec4); buf.resf16v4 += imageAtomicExchange(fimageCubev4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicExchange(fimageCubeArrayv4, ivec3(0,0,0), constVec4); buf.resf16v4 += imageAtomicExchange(fimage3Dv4, ivec3(0,0,0), constVec4); } glslang-16.0.0/Test/spv.nvgpushader5.frag000066400000000000000000002234761506534232700202540ustar00rootroot00000000000000#version 150 #extension GL_NV_gpu_shader5 : enable #extension GL_ARB_gpu_shader_fp64 : enable // Testing integer expression for indexing #define SAMPLER_ARRAY_SIZE 10 uniform sampler2D tex[SAMPLER_ARRAY_SIZE]; // Testing integer expression for indexing in interface blocks uniform ubName { int i; } ubInst[4]; vec2 coord; void testIndexing() { int i = 0; texture(tex[i], coord); //integer expression for indexing ubInst[i]; //dynamic indexing via ARB_gpu_shader5 or enabled since version 430 } void testImplictConversion() { // int ====> uint, int64_t, uint64_t, float, double uint var0 = int (0); // int -> uint int64_t var1 = int (0); // int -> int64_t uint64_t var2 = int (0); // int -> uint64_t float var3 = int (0); // int -> float double var4 = int (0); // int -> double // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var5 = ivec2 (0); // ivec2 -> uvec2 i64vec2 var6 = ivec2 (0); // ivec2 -> i64vec2 u64vec2 var7 = ivec2 (0); // ivec2 -> u64vec2 vec2 var8 = ivec2 (0); // ivec2 -> vec2 dvec2 var9 = ivec2 (0); // ivec2 -> dvec2 // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var10 = ivec3 (0); // ivec3 -> uvec3 i64vec3 var11 = ivec3 (0); // ivec3 -> i64vec3 u64vec3 var12 = ivec3 (0); // ivec3 -> u64vec3 vec3 var13 = ivec3 (0); // ivec3 -> vec3 dvec3 var14 = ivec3 (0); // ivec3 -> dvec3 // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var15 = ivec4 (0); // ivec4 -> uvec4 i64vec4 var16 = ivec4 (0); // ivec4 -> i64vec4 u64vec4 var17 = ivec4 (0); // ivec4 -> u64vec4 vec4 var18 = ivec4 (0); // ivec4 -> vec4 dvec4 var19 = ivec4 (0); // ivec4 -> dvec4 // int8_t ====> int, int64_t, uint, uint64_t, float, double int var20 = int8_t (0); // int8_t -> int int64_t var21 = int8_t (0); // int8_t -> int64_t uint var22 = int8_t (0); // int8_t -> uint uint64_t var23 = int8_t (0); // int8_t -> uint64_t float var24 = int8_t (0); // int8_t -> float double var25 = int8_t (0); // int8_t -> double // int16_t ====> int, int64_t, uint, uint64_t, float, double int var26 = int16_t (0); // int16_t -> int int64_t var27 = int16_t (0); // int16_t -> int64_t uint var28 = int16_t (0); // int16_t -> uint uint64_t var29 = int16_t (0); // int16_t -> uint64_t float var30 = int16_t (0); // int16_t -> float double var31 = int16_t (0); // int16_t -> double // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var32 = i8vec2 (0); // i8vec2 -> ivec2 i64vec2 var33 = i8vec2 (0); // i8vec2 -> i64vec2 uvec2 var34 = i8vec2 (0); // i8vec2 -> uvec2 u64vec2 var35 = i8vec2 (0); // i8vec2 -> u64vec2 vec2 var36 = i8vec2 (0); // i8vec2 -> vec2 dvec2 var37 = i8vec2 (0); // i8vec2 -> dvec2 // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var38 = i16vec2 (0); // i16vec2 -> ivec2 i64vec2 var39 = i16vec2 (0); // i16vec2 -> i64vec2 uvec2 var40 = i16vec2 (0); // i16vec2 -> uvec2 u64vec2 var41 = i16vec2 (0); // i16vec2 -> u64vec2 vec2 var42 = i16vec2 (0); // i16vec2 -> vec2 dvec2 var43 = i16vec2 (0); // i16vec2 -> dvec2 // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var44 = i8vec3 (0); // i8vec3 -> ivec3 i64vec3 var45 = i8vec3 (0); // i8vec3 -> i64vec3 uvec3 var46 = i8vec3 (0); // i8vec3 -> uvec3 u64vec3 var47 = i8vec3 (0); // i8vec3 -> u64vec3 vec3 var48 = i8vec3 (0); // i8vec3 -> vec3 dvec3 var49 = i8vec3 (0); // i8vec3 -> dvec3 // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var50 = i16vec3 (0); // i16vec3 -> uvec3 u64vec3 var51 = i16vec3 (0); // i16vec3 -> u64vec3 vec3 var52 = i16vec3 (0); // i16vec3 -> vec3 dvec3 var53 = i16vec3 (0); // i16vec3 -> dvec3 // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var54 = i8vec4 (0); // i8vec4 -> ivec4 i64vec4 var55 = i8vec4 (0); // i8vec4 -> i64vec4 uvec4 var56 = i8vec4 (0); // i8vec4 -> uvec4 u64vec4 var57 = i8vec4 (0); // i8vec4 -> u64vec4 vec4 var58 = i8vec4 (0); // i8vec4 -> vec4 dvec4 var59 = i8vec4 (0); // i8vec4 -> dvec4 // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var60 = i16vec4 (0); // i16vec4 -> uvec4 u64vec4 var61 = i16vec4 (0); // i16vec4 -> u64vec4 vec4 var62 = i16vec4 (0); // i16vec4 -> vec4 dvec4 var63 = i16vec4 (0); // i16vec4 -> dvec4 // int64_t ====> uint64_t, double uint64_t var64 = int64_t (0); // int64_t -> uint64_t double var65 = int64_t (0); // int64_t -> double // i64vec2 ====> u64vec2, dvec2 u64vec2 var66 = i64vec2 (0); // i64vec2 -> u64vec2 dvec2 var67 = i64vec2 (0); // i64vec2 -> dvec2 // i64vec3 ====> u64vec3, dvec3 u64vec3 var68 = i64vec3 (0); // i64vec3 -> u64vec3 dvec3 var69 = i64vec3 (0); // i64vec3 -> dvec3 // i64vec4 ====> u64vec4, dvec4 u64vec4 var70 = i64vec4 (0); // i64vec4 -> u64vec4 dvec4 var71 = i64vec4 (0); // i64vec4 -> dvec4 // uint ====> uint64_t, float, double uint64_t var72 = uint (0); // uint -> uint64_t float var73 = uint (0); // uint -> float double var74 = uint (0); // uint -> double // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var75 = uvec2 (0); // uvec2 -> u64vec2 vec2 var76 = uvec2 (0); // uvec2 -> vec2 dvec2 var77 = uvec2 (0); // uvec2 -> dvec2 // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var78 = uvec3 (0); // uvec3 -> u64vec3 vec3 var79 = uvec3 (0); // uvec3 -> vec3 dvec3 var80 = uvec3 (0); // uvec3 -> dvec3 // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var81 = uvec4 (0); // uvec4 -> u64vec4 vec4 var82 = uvec4 (0); // uvec4 -> vec4 dvec4 var83 = uvec4 (0); // uvec4 -> dvec4 // uint8_t ====> uint, uint64_t, float, double uint var84 = uint8_t (0); // uint8_t -> uint uint64_t var85 = uint8_t (0); // uint8_t -> uint64_t float var86 = uint8_t (0); // uint8_t -> float double var87 = uint8_t (0); // uint8_t -> double // uint16_t ====> uint, uint64_t, float, double uint var88 = uint16_t (0); // uint16_t -> uint uint64_t var89 = uint16_t (0); // uint16_t -> uint64_t float var90 = uint16_t (0); // uint16_t -> float double var91 = uint16_t (0); // uint16_t -> double // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var92 = u8vec2 (0); // u8vec2 -> uvec2 u64vec2 var93 = u8vec2 (0); // u8vec2 -> u64vec2 vec2 var94 = u8vec2 (0); // u8vec2 -> vec2 dvec2 var95 = u8vec2 (0); // u8vec2 -> dvec2 // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var96 = u16vec2 (0); // u16vec2 -> uvec2 u64vec2 var97 = u16vec2 (0); // u16vec2 -> u64vec2 vec2 var98 = u16vec2 (0); // u16vec2 -> vec2 dvec2 var99 = u16vec2 (0); // u16vec2 -> dvec2 // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var100 = u8vec3 (0); // u8vec3 -> uvec3 u64vec3 var101 = u8vec3 (0); // u8vec3 -> u64vec3 vec3 var102 = u8vec3 (0); // u8vec3 -> vec3 dvec3 var103 = u8vec3 (0); // u8vec3 -> dvec3 // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var104 = u8vec4 (0); // u8vec4 -> uvec4 u64vec4 var105 = u8vec4 (0); // u8vec4 -> u64vec4 vec4 var106 = u8vec4 (0); // u8vec4 -> vec4 dvec4 var107 = u8vec4 (0); // u8vec4 -> dvec4 // uint64_t ====> double double var108 = uint64_t (0); // uint64_t -> double // u64vec2 ====> dvec2 dvec2 var109 = u64vec2 (0); // u64vec2 -> dvec2 // u64vec3 ====> dvec3 dvec3 var110 = u64vec3 (0); // u64vec3 -> dvec3 // u64vec4 ====> dvec4 dvec4 var111 = u64vec4 (0); // u64vec4 -> dvec4 // float ====> double double var112 = float (0); // float -> double // vec2 ====> dvec2 dvec2 var113 = vec2 (0); // vec2 -> dvec2 // vec3 ====> dvec3 dvec3 var114 = vec3 (0); // vec3 -> dvec3 // vec4 ====> dvec4 dvec4 var115 = vec4 (0); // vec4 -> dvec4 // float16_t ====> float, double float var116 = float16_t (0); // float16_t -> float double var117 = float16_t (0); // float16_t -> double // f16vec2 ====> vec2, dvec2 vec2 var118 = f16vec2 (0); // f16vec2 -> vec2 dvec2 var119 = f16vec2 (0); // f16vec2 -> dvec2 // f16vec3 ====> vec3, dvec3 vec3 var120 = f16vec3 (0); // f16vec3 -> vec3 dvec3 var121 = f16vec3 (0); // f16vec3 -> dvec3 // f16vec4 ====> vec4, dvec4 vec4 var122 = f16vec4 (0); // f16vec4 -> vec4 dvec4 var123 = f16vec4 (0); // f16vec4 -> dvec4 } uniform sampler2DShadow var16; uniform samplerCubeShadow var17; uniform sampler2DArrayShadow var18; uniform samplerCubeArrayShadow var19; uniform sampler2DRectShadow var20; uniform samplerCubeArray svar21; uniform usamplerCubeArray svar22; uniform isamplerCubeArray svar23; uniform sampler2D svar24; uniform usampler2D svar25; uniform isampler2D svar26; uniform sampler2DRect svar27; uniform usampler2DRect svar28; uniform isampler2DRect svar29; uniform samplerCube svar30; uniform usamplerCube svar31; uniform isamplerCube svar32; uniform sampler2DArray svar33; uniform usampler2DArray svar34; uniform isampler2DArray svar35; in float fvar0; in vec2 fvar1; in vec3 fvar2; in vec4 fvar3; flat in ivec2 Offsets[4]; // Test the builtins defined by ARB_gpu_shader5 void testbuiltinARB() { float var0; vec2 var1; vec3 var2; vec4 var3; int var4; ivec2 var5; ivec3 var6; ivec4 var7; uint var8; uvec2 var9; uvec3 var10; uvec4 var11; bool var12; bvec2 var13; bvec3 var14; bvec4 var15; // Function Signature : genType fma(genType, genType, genType) var0 = fma(var0, var0, var0); var1 = fma(var1, var1, var1); var2 = fma(var2, var2, var2); var3 = fma(var3, var3, var3); // Function Signature : genType frexp(genType, genIType) var0 = frexp(var0, var4); var1 = frexp(var1, var5); var2 = frexp(var2, var6); var3 = frexp(var3, var7); // Function Signature : genType ldexp(genType, genIType) var0 = ldexp(var0, var4); var1 = ldexp(var1, var5); var2 = ldexp(var2, var6); var3 = ldexp(var3, var7); // Function Signature : genIType bitfieldExtract(genIType, int, int) var4 = bitfieldExtract(var4, var4, var4); var5 = bitfieldExtract(var5, var4, var4); var6 = bitfieldExtract(var6, var4, var4); var7 = bitfieldExtract(var7, var4, var4); // Function Signature : genUType bitfieldExtract(genUType, int, int) var8 = bitfieldExtract(var8, var4, var4); var9 = bitfieldExtract(var9, var4, var4); var10 = bitfieldExtract(var10, var4, var4); var11 = bitfieldExtract(var11, var4, var4); // Function Signature : genIType bitfieldInsert(genIType, genIType, int, int) var4 = bitfieldInsert(var4, var4, var4, var4); var5 = bitfieldInsert(var5, var5, var4, var4); var6 = bitfieldInsert(var6, var6, var4, var4); var7 = bitfieldInsert(var7, var7, var4, var4); // Function Signature : genUType bitfieldInsert(genUType, genUType, int, int) var8 = bitfieldInsert(var8, var8, var4, var4); var9 = bitfieldInsert(var9, var9, var4, var4); var10 = bitfieldInsert(var10, var10, var4, var4); var11 = bitfieldInsert(var11, var11, var4, var4); // Function Signature : genIType bitfieldReverse(genIType) var4 = bitfieldReverse(var4); var5 = bitfieldReverse(var5); var6 = bitfieldReverse(var6); var7 = bitfieldReverse(var7); // Function Signature : genUType bitfieldReverse(genUType) var8 = bitfieldReverse(var8); var9 = bitfieldReverse(var9); var10 = bitfieldReverse(var10); var11 = bitfieldReverse(var11); // Function Signature : genIType bitCount(genIType) var4 = bitCount(var4); var5 = bitCount(var5); var6 = bitCount(var6); var7 = bitCount(var7); // Function Signature : genUType bitCount(genUType) var8 = bitCount(var8); var9 = bitCount(var9); var10 = bitCount(var10); var11 = bitCount(var11); // Function Signature : genUType findMSB(genUType) var8 = findMSB(var8); var9 = findMSB(var9); var10 = findMSB(var10); var11 = findMSB(var11); // Function Signature : genIType findLSB(genIType) var4 = findMSB(var4); var5 = findMSB(var5); var6 = findMSB(var6); var7 = findMSB(var7); // Function Signature : genIType findLSB(genIType) var4 = findLSB(var4); var5 = findLSB(var5); var6 = findLSB(var6); var7 = findLSB(var7); // Function Signature : genUType findLSB(genUType) var8 = findLSB(var8); var9 = findLSB(var9); var10 = findLSB(var10); var11 = findLSB(var11); // Function Signature : genIType floatBitsToInt(genType) var4 = floatBitsToInt(var0); var5 = floatBitsToInt(var1); var6 = floatBitsToInt(var2); var7 = floatBitsToInt(var3); // Function Signature : genUType floatBitsToUint(genType) var8 = floatBitsToUint(var0); var9 = floatBitsToUint(var1); var10 = floatBitsToUint(var2); var11 = floatBitsToUint(var3); // Function Signature : genType intBitsToFloat(genIType) var0 = intBitsToFloat(var4); var1 = intBitsToFloat(var5); var2 = intBitsToFloat(var6); var3 = intBitsToFloat(var7); // Function Signature : genType uintBitsToFloat(genUType) var0 = uintBitsToFloat(var8); var1 = uintBitsToFloat(var9); var2 = uintBitsToFloat(var10); var3 = uintBitsToFloat(var11); // Function Signature : genUType uaddCarry(genUType, genUType, genUType) var8 = uaddCarry(var8, var8, var8); var9 = uaddCarry(var9, var9, var9); var10 = uaddCarry(var10, var10, var10); var11 = uaddCarry(var11, var11, var11); // Function Signature : genUType usubBorrow(genUType, genUType, genUType) var8 = usubBorrow(var8, var8, var8); var9 = usubBorrow(var9, var9, var9); var10 = usubBorrow(var10, var10, var10); var11 = usubBorrow(var11, var11, var11); // Function Signature : void umulExtended(genUType, genUType, genUType, genUType) umulExtended(var8, var8, var8, var8); umulExtended(var9, var9, var9, var9); umulExtended(var10, var10, var10, var10); umulExtended(var11, var11, var11, var11); // Function Signature : void imulExtended(genIType, genIType, genIType, genIType) imulExtended(var4, var4, var4, var4); imulExtended(var5, var5, var5, var5); imulExtended(var6, var6, var6, var6); imulExtended(var7, var7, var7, var7); // Generate specific builtins var8 = packUnorm2x16(var1); var8 = packUnorm4x8(var3); var8 = packSnorm4x8(var3); var1 = unpackUnorm2x16(var8); var3 = unpackUnorm4x8(var8); var3 = unpackSnorm4x8(var8); var0 = interpolateAtCentroid(fvar0); var1 = interpolateAtCentroid(fvar1); var2 = interpolateAtCentroid(fvar2); var3 = interpolateAtCentroid(fvar3); var0 = interpolateAtSample(fvar0, var4); var1 = interpolateAtSample(fvar1, var4); var2 = interpolateAtSample(fvar2, var4); var3 = interpolateAtSample(fvar3, var4); var0 = interpolateAtOffset(fvar0, var1); var1 = interpolateAtOffset(fvar1, var1); var2 = interpolateAtOffset(fvar2, var1); var3 = interpolateAtOffset(fvar3, var1); // Generate textue specific intrinsics // Function Signature : gvec4 textureGatherOffset(gsampler2D, vec2, ivec2) var3 = textureGatherOffset(svar24, var1, var5); var11 = textureGatherOffset(svar25, var1, var5); var7 = textureGatherOffset(svar26, var1, var5); // Function Signature : gvec4 textureGatherOffset(gsampler2DArray, vec3, ivec2) var3 = textureGatherOffset(svar33, var2, var5); var11 = textureGatherOffset(svar34, var2, var5); var7 = textureGatherOffset(svar35, var2, var5); // Function Signature : gvec4 textureGatherOffset(gsampler2DRect, vec2, ivec2) var3 = textureGatherOffset(svar27, var1, var5); var11 = textureGatherOffset(svar28, var1, var5); var7 = textureGatherOffset(svar29, var1, var5); // Function Signature : vec4 textureGatherOffset(sampler2DShadow, vec2, float, ivec2) var3 = textureGatherOffset(var16, var1, var0, var5); // Function Signature : vec4 textureGatherOffset(sampler2DArrayShadow, vec3, float, ivec2) var3 = textureGatherOffset(var18, var2, var0, var5); // Function Signature : vec4 textureGatherOffset(sampler2DRectShadow, vec2, float, ivec2) var3 = textureGatherOffset(var20, var1, var0, var5); // Function Signature : gvec4 textureGather(gsampler2D, vec2) var3 = textureGather(svar24, var1); var11 = textureGather(svar25, var1); var7 = textureGather(svar26, var1); // Function Signature : gvec4 textureGather(gsampler2DArray, vec3) var3 = textureGather(svar33, var2); var11 = textureGather(svar34, var2); var7 = textureGather(svar35, var2); // Function Signature : gvec4 textureGather(gsamplerCube, vec3) var3 = textureGather(svar30, var2); var11 = textureGather(svar31, var2); var7 = textureGather(svar32, var2); // Function Signature : gvec4 textureGather(gsamplerCubeArray, vec4) var3 = textureGather(svar21, var3); var11 = textureGather(svar22, var3); var7 = textureGather(svar23, var3); // Function Signature : gvec4 textureGather(gsampler2DRect, vec4) var3 = textureGather(svar27, var1); var11 = textureGather(svar28, var1); var7 = textureGather(svar29, var1); // Function Signature : vec4 textureGather(sampler2DShadow, vec2, float) var3 = textureGather(var16, var1, var0); // Function Signature : vec4 textureGather(sampler2DArrayShadow, vec3, float) var3 = textureGather(var18, var2, var0); // Function Signature : vec4 textureGather(samplerCubeShadow, vec3, float) var3 = textureGather(var17, var2, var0); // Function Signature : vec4 textureGather(samplerCubeArrayShadow, vec4, float) var3 = textureGather(var19, var3, var0); // Function Signature : vec4 textureGather(sampler2DRectShadow, vec2, float) var3 = textureGather(var20, var1, var0); // Function Signature : gvec4 textureGatherOffsets(gsampler2D, vec2, ivec2[4]) var3 = textureGatherOffsets(svar24, var1, Offsets); var11 = textureGatherOffsets(svar25, var1, Offsets); var7 = textureGatherOffsets(svar26, var1, Offsets); // Function Signature : gvec4 textureGatherOffsets(gsampler2DArray, vec2, ivec2[4]) var3 = textureGatherOffsets(svar33, var2, Offsets); var11 = textureGatherOffsets(svar34, var2, Offsets); var7 = textureGatherOffsets(svar35, var2, Offsets); // Function Signature : gvec4 textureGatherOffsets(gsampler2DRect, vec2, ivec2[4]) var3 = textureGatherOffsets(svar27, var1, Offsets); var11 = textureGatherOffsets(svar28, var1, Offsets); var7 = textureGatherOffsets(svar29, var1, Offsets); // Function Signature : vec4 textureGatherOffsets(sampler2DShadow, vec2, float, ivec2[4]) var3 = textureGatherOffsets(var16, var1, var0, Offsets); // Function Signature : vec4 textureGatherOffsets(sampler2DArrayShadow, vec3, float, ivec2[4]) var3 = textureGatherOffsets(var18, var2, var0, Offsets); // Function Signature : vec4 textureGatherOffsets(sampler2DRectShadow, vec2, float, ivec2[4]) var3 = textureGatherOffsets(var20, var1, var0, Offsets); } void testDataTypes() { // 8 bit data types int8_t var1; i8vec2 var2; i8vec3 var3; i8vec4 var4; uint8_t var17; u8vec2 var18; u8vec3 var19; u8vec4 var20; // 16 bit data types int16_t var5; i16vec2 var6; i16vec3 var7; i16vec4 var8; uint16_t var21; u16vec2 var22; u16vec3 var23; u16vec4 var24; // 32 bit data types int32_t var9; i32vec2 var10; i32vec3 var11; i32vec4 var12; uint32_t var25; u32vec2 var26; u32vec3 var27; u32vec4 var28; int64_t var13; i64vec2 var14; i64vec3 var15; i64vec4 var16; uint64_t var29; u64vec2 var30; u64vec3 var31; u64vec4 var32; float16_t var33; f16vec2 var34; f16vec3 var35; f16vec4 var36; float32_t var37; f32vec2 var38; f32vec3 var39; f32vec4 var40; float64_t var41; // needs GL_ARB_gpu_shader_fp64 f64vec2 var42; // needs GL_ARB_gpu_shader_fp64 f64vec3 var43; // needs GL_ARB_gpu_shader_fp64 f64vec4 var44; // needs GL_ARB_gpu_shader_fp64 } // Test explicit data in and out flat in int8_t var1_in; flat in int16_t var5_in; flat in int32_t var9_in; flat in int64_t var13_in; flat in float16_t var33_in; flat in float64_t var41_in; flat in double var42_in; out int8_t var11_out; out int16_t var51_out; out int32_t var91_out; //out int64_t var131; // Error: TBD Needs to be confirmed out float16_t var331_out; void testConstructors() { uint8_t uiv = uint8_t(1); double dv = 1.0; int16_t iv = int16_t(1); bool bv = false; float(uiv); // converts an 8-bit uint value to a float int64_t(dv); // converts a double value to a 64-bit int float64_t(iv); // converts a 16-bit int value to a 64-bit float uint16_t(bv); // converts a Boolean value to a 16-bit uint } void testBinaryOps() { int var0 = int( 0 ); uint var1 = uint( 1 ); int64_t var2 = int64_t( 2 ); uint64_t var3 = uint64_t( 3 ); float var4 = float( 4 ); double var5 = double( 5 ); ivec2 var6 = ivec2( 6 ); uvec2 var7 = uvec2( 7 ); i64vec2 var8 = i64vec2( 8 ); u64vec2 var9 = u64vec2( 9 ); vec2 var10 = vec2( 10 ); dvec2 var11 = dvec2( 11 ); ivec3 var12 = ivec3( 12 ); uvec3 var13 = uvec3( 13 ); i64vec3 var14 = i64vec3( 14 ); u64vec3 var15 = u64vec3( 15 ); vec3 var16 = vec3( 16 ); dvec3 var17 = dvec3( 17 ); ivec4 var18 = ivec4( 18 ); uvec4 var19 = uvec4( 19 ); i64vec4 var20 = i64vec4( 20 ); u64vec4 var21 = u64vec4( 21 ); vec4 var22 = vec4( 22 ); dvec4 var23 = dvec4( 23 ); int8_t var24 = int8_t( 24 ); int16_t var25 = int16_t( 25 ); i8vec2 var26 = i8vec2( 26 ); i16vec2 var27 = i16vec2( 27 ); i8vec3 var28 = i8vec3( 28 ); i16vec3 var29 = i16vec3( 29 ); i8vec4 var30 = i8vec4( 30 ); i16vec4 var31 = i16vec4( 31 ); uint8_t var32 = uint8_t( 32 ); uint16_t var33 = uint16_t( 33 ); u8vec2 var34 = u8vec2( 34 ); u16vec2 var35 = u16vec2( 35 ); u8vec3 var36 = u8vec3( 36 ); u8vec4 var37 = u8vec4( 37 ); float16_t var38 = float16_t( 38 ); f16vec2 var39 = f16vec2( 39 ); f16vec3 var40 = f16vec3( 40 ); f16vec4 var41 = f16vec4( 41 ); // Testing for binary operation + // int ====> uint, int64_t, uint64_t, float, double uint var42 = var1 + var0; int64_t var43 = var2 + var0; uint64_t var44 = var3 + var0; float var45 = var4 + var0; double var46 = var5 + var0; // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var47 = var7 + var6; i64vec2 var48 = var8 + var6; u64vec2 var49 = var9 + var6; vec2 var50 = var10 + var6; dvec2 var51 = var11 + var6; // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var52 = var13 + var12; i64vec3 var53 = var14 + var12; u64vec3 var54 = var15 + var12; vec3 var55 = var16 + var12; dvec3 var56 = var17 + var12; // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var57 = var19 + var18; i64vec4 var58 = var20 + var18; u64vec4 var59 = var21 + var18; vec4 var60 = var22 + var18; dvec4 var61 = var23 + var18; // int8_t ====> int, int64_t, uint, uint64_t, float, double int var62 = var0 + var24; int64_t var63 = var2 + var24; uint var64 = var1 + var24; uint64_t var65 = var3 + var24; float var66 = var4 + var24; double var67 = var5 + var24; // int16_t ====> int, int64_t, uint, uint64_t, float, double int var68 = var0 + var25; int64_t var69 = var2 + var25; uint var70 = var1 + var25; uint64_t var71 = var3 + var25; float var72 = var4 + var25; double var73 = var5 + var25; // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var74 = var6 + var26; i64vec2 var75 = var8 + var26; uvec2 var76 = var7 + var26; u64vec2 var77 = var9 + var26; vec2 var78 = var10 + var26; dvec2 var79 = var11 + var26; // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var80 = var6 + var27; i64vec2 var81 = var8 + var27; uvec2 var82 = var7 + var27; u64vec2 var83 = var9 + var27; vec2 var84 = var10 + var27; dvec2 var85 = var11 + var27; // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var86 = var12 + var28; i64vec3 var87 = var14 + var28; uvec3 var88 = var13 + var28; u64vec3 var89 = var15 + var28; vec3 var90 = var16 + var28; dvec3 var91 = var17 + var28; // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var92 = var13 + var29; u64vec3 var93 = var15 + var29; vec3 var94 = var16 + var29; dvec3 var95 = var17 + var29; // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var96 = var18 + var30; i64vec4 var97 = var20 + var30; uvec4 var98 = var19 + var30; u64vec4 var99 = var21 + var30; vec4 var100 = var22 + var30; dvec4 var101 = var23 + var30; // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var102 = var19 + var31; u64vec4 var103 = var21 + var31; vec4 var104 = var22 + var31; dvec4 var105 = var23 + var31; // int64_t ====> uint64_t, double uint64_t var106 = var3 + var2; double var107 = var5 + var2; // i64vec2 ====> u64vec2, dvec2 u64vec2 var108 = var9 + var8; dvec2 var109 = var11 + var8; // i64vec3 ====> u64vec3, dvec3 u64vec3 var110 = var15 + var14; dvec3 var111 = var17 + var14; // i64vec4 ====> u64vec4, dvec4 u64vec4 var112 = var21 + var20; dvec4 var113 = var23 + var20; // uint ====> uint64_t, float, double uint64_t var114 = var3 + var1; float var115 = var4 + var1; double var116 = var5 + var1; // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var117 = var9 + var7; vec2 var118 = var10 + var7; dvec2 var119 = var11 + var7; // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var120 = var15 + var13; vec3 var121 = var16 + var13; dvec3 var122 = var17 + var13; // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var123 = var21 + var19; vec4 var124 = var22 + var19; dvec4 var125 = var23 + var19; // uint8_t ====> uint, uint64_t, float, double uint var126 = var1 + var32; uint64_t var127 = var3 + var32; float var128 = var4 + var32; double var129 = var5 + var32; // uint16_t ====> uint, uint64_t, float, double uint var130 = var1 + var33; uint64_t var131 = var3 + var33; float var132 = var4 + var33; double var133 = var5 + var33; // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var134 = var7 + var34; u64vec2 var135 = var9 + var34; vec2 var136 = var10 + var34; dvec2 var137 = var11 + var34; // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var138 = var7 + var35; u64vec2 var139 = var9 + var35; vec2 var140 = var10 + var35; dvec2 var141 = var11 + var35; // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var142 = var13 + var36; u64vec3 var143 = var15 + var36; vec3 var144 = var16 + var36; dvec3 var145 = var17 + var36; // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var146 = var19 + var37; u64vec4 var147 = var21 + var37; vec4 var148 = var22 + var37; dvec4 var149 = var23 + var37; // uint64_t ====> double double var150 = var5 + var3; // u64vec2 ====> dvec2 dvec2 var151 = var11 + var9; // u64vec3 ====> dvec3 dvec3 var152 = var17 + var15; // u64vec4 ====> dvec4 dvec4 var153 = var23 + var21; // float ====> double double var154 = var5 + var4; // vec2 ====> dvec2 dvec2 var155 = var11 + var10; // vec3 ====> dvec3 dvec3 var156 = var17 + var16; // vec4 ====> dvec4 dvec4 var157 = var23 + var22; // float16_t ====> float, double float var158 = var4 + var38; double var159 = var5 + var38; // f16vec2 ====> vec2, dvec2 vec2 var160 = var10 + var39; dvec2 var161 = var11 + var39; // f16vec3 ====> vec3, dvec3 vec3 var162 = var16 + var40; dvec3 var163 = var17 + var40; // f16vec4 ====> vec4, dvec4 vec4 var164 = var22 + var41; dvec4 var165 = var23 + var41; // Testing for binary operation - // int ====> uint, int64_t, uint64_t, float, double uint var166 = var1 - var0; int64_t var167 = var2 - var0; uint64_t var168 = var3 - var0; float var169 = var4 - var0; double var170 = var5 - var0; // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var171 = var7 - var6; i64vec2 var172 = var8 - var6; u64vec2 var173 = var9 - var6; vec2 var174 = var10 - var6; dvec2 var175 = var11 - var6; // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var176 = var13 - var12; i64vec3 var177 = var14 - var12; u64vec3 var178 = var15 - var12; vec3 var179 = var16 - var12; dvec3 var180 = var17 - var12; // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var181 = var19 - var18; i64vec4 var182 = var20 - var18; u64vec4 var183 = var21 - var18; vec4 var184 = var22 - var18; dvec4 var185 = var23 - var18; // int8_t ====> int, int64_t, uint, uint64_t, float, double int var186 = var0 - var24; int64_t var187 = var2 - var24; uint var188 = var1 - var24; uint64_t var189 = var3 - var24; float var190 = var4 - var24; double var191 = var5 - var24; // int16_t ====> int, int64_t, uint, uint64_t, float, double int var192 = var0 - var25; int64_t var193 = var2 - var25; uint var194 = var1 - var25; uint64_t var195 = var3 - var25; float var196 = var4 - var25; double var197 = var5 - var25; // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var198 = var6 - var26; i64vec2 var199 = var8 - var26; uvec2 var200 = var7 - var26; u64vec2 var201 = var9 - var26; vec2 var202 = var10 - var26; dvec2 var203 = var11 - var26; // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var204 = var6 - var27; i64vec2 var205 = var8 - var27; uvec2 var206 = var7 - var27; u64vec2 var207 = var9 - var27; vec2 var208 = var10 - var27; dvec2 var209 = var11 - var27; // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var210 = var12 - var28; i64vec3 var211 = var14 - var28; uvec3 var212 = var13 - var28; u64vec3 var213 = var15 - var28; vec3 var214 = var16 - var28; dvec3 var215 = var17 - var28; // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var216 = var13 - var29; u64vec3 var217 = var15 - var29; vec3 var218 = var16 - var29; dvec3 var219 = var17 - var29; // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var220 = var18 - var30; i64vec4 var221 = var20 - var30; uvec4 var222 = var19 - var30; u64vec4 var223 = var21 - var30; vec4 var224 = var22 - var30; dvec4 var225 = var23 - var30; // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var226 = var19 - var31; u64vec4 var227 = var21 - var31; vec4 var228 = var22 - var31; dvec4 var229 = var23 - var31; // int64_t ====> uint64_t, double uint64_t var230 = var3 - var2; double var231 = var5 - var2; // i64vec2 ====> u64vec2, dvec2 u64vec2 var232 = var9 - var8; dvec2 var233 = var11 - var8; // i64vec3 ====> u64vec3, dvec3 u64vec3 var234 = var15 - var14; dvec3 var235 = var17 - var14; // i64vec4 ====> u64vec4, dvec4 u64vec4 var236 = var21 - var20; dvec4 var237 = var23 - var20; // uint ====> uint64_t, float, double uint64_t var238 = var3 - var1; float var239 = var4 - var1; double var240 = var5 - var1; // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var241 = var9 - var7; vec2 var242 = var10 - var7; dvec2 var243 = var11 - var7; // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var244 = var15 - var13; vec3 var245 = var16 - var13; dvec3 var246 = var17 - var13; // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var247 = var21 - var19; vec4 var248 = var22 - var19; dvec4 var249 = var23 - var19; // uint8_t ====> uint, uint64_t, float, double uint var250 = var1 - var32; uint64_t var251 = var3 - var32; float var252 = var4 - var32; double var253 = var5 - var32; // uint16_t ====> uint, uint64_t, float, double uint var254 = var1 - var33; uint64_t var255 = var3 - var33; float var256 = var4 - var33; double var257 = var5 - var33; // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var258 = var7 - var34; u64vec2 var259 = var9 - var34; vec2 var260 = var10 - var34; dvec2 var261 = var11 - var34; // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var262 = var7 - var35; u64vec2 var263 = var9 - var35; vec2 var264 = var10 - var35; dvec2 var265 = var11 - var35; // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var266 = var13 - var36; u64vec3 var267 = var15 - var36; vec3 var268 = var16 - var36; dvec3 var269 = var17 - var36; // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var270 = var19 - var37; u64vec4 var271 = var21 - var37; vec4 var272 = var22 - var37; dvec4 var273 = var23 - var37; // uint64_t ====> double double var274 = var5 - var3; // u64vec2 ====> dvec2 dvec2 var275 = var11 - var9; // u64vec3 ====> dvec3 dvec3 var276 = var17 - var15; // u64vec4 ====> dvec4 dvec4 var277 = var23 - var21; // float ====> double double var278 = var5 - var4; // vec2 ====> dvec2 dvec2 var279 = var11 - var10; // vec3 ====> dvec3 dvec3 var280 = var17 - var16; // vec4 ====> dvec4 dvec4 var281 = var23 - var22; // float16_t ====> float, double float var282 = var4 - var38; double var283 = var5 - var38; // f16vec2 ====> vec2, dvec2 vec2 var284 = var10 - var39; dvec2 var285 = var11 - var39; // f16vec3 ====> vec3, dvec3 vec3 var286 = var16 - var40; dvec3 var287 = var17 - var40; // f16vec4 ====> vec4, dvec4 vec4 var288 = var22 - var41; dvec4 var289 = var23 - var41; // Testing for binary operation * // int ====> uint, int64_t, uint64_t, float, double uint var290 = var1 * var0; int64_t var291 = var2 * var0; uint64_t var292 = var3 * var0; float var293 = var4 * var0; double var294 = var5 * var0; // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var295 = var7 * var6; i64vec2 var296 = var8 * var6; u64vec2 var297 = var9 * var6; vec2 var298 = var10 * var6; dvec2 var299 = var11 * var6; // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var300 = var13 * var12; i64vec3 var301 = var14 * var12; u64vec3 var302 = var15 * var12; vec3 var303 = var16 * var12; dvec3 var304 = var17 * var12; // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var305 = var19 * var18; i64vec4 var306 = var20 * var18; u64vec4 var307 = var21 * var18; vec4 var308 = var22 * var18; dvec4 var309 = var23 * var18; // int8_t ====> int, int64_t, uint, uint64_t, float, double int var310 = var0 * var24; int64_t var311 = var2 * var24; uint var312 = var1 * var24; uint64_t var313 = var3 * var24; float var314 = var4 * var24; double var315 = var5 * var24; // int16_t ====> int, int64_t, uint, uint64_t, float, double int var316 = var0 * var25; int64_t var317 = var2 * var25; uint var318 = var1 * var25; uint64_t var319 = var3 * var25; float var320 = var4 * var25; double var321 = var5 * var25; // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var322 = var6 * var26; i64vec2 var323 = var8 * var26; uvec2 var324 = var7 * var26; u64vec2 var325 = var9 * var26; vec2 var326 = var10 * var26; dvec2 var327 = var11 * var26; // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var328 = var6 * var27; i64vec2 var329 = var8 * var27; uvec2 var330 = var7 * var27; u64vec2 var331 = var9 * var27; vec2 var332 = var10 * var27; dvec2 var333 = var11 * var27; // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var334 = var12 * var28; i64vec3 var335 = var14 * var28; uvec3 var336 = var13 * var28; u64vec3 var337 = var15 * var28; vec3 var338 = var16 * var28; dvec3 var339 = var17 * var28; // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var340 = var13 * var29; u64vec3 var341 = var15 * var29; vec3 var342 = var16 * var29; dvec3 var343 = var17 * var29; // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var344 = var18 * var30; i64vec4 var345 = var20 * var30; uvec4 var346 = var19 * var30; u64vec4 var347 = var21 * var30; vec4 var348 = var22 * var30; dvec4 var349 = var23 * var30; // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var350 = var19 * var31; u64vec4 var351 = var21 * var31; vec4 var352 = var22 * var31; dvec4 var353 = var23 * var31; // int64_t ====> uint64_t, double uint64_t var354 = var3 * var2; double var355 = var5 * var2; // i64vec2 ====> u64vec2, dvec2 u64vec2 var356 = var9 * var8; dvec2 var357 = var11 * var8; // i64vec3 ====> u64vec3, dvec3 u64vec3 var358 = var15 * var14; dvec3 var359 = var17 * var14; // i64vec4 ====> u64vec4, dvec4 u64vec4 var360 = var21 * var20; dvec4 var361 = var23 * var20; // uint ====> uint64_t, float, double uint64_t var362 = var3 * var1; float var363 = var4 * var1; double var364 = var5 * var1; // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var365 = var9 * var7; vec2 var366 = var10 * var7; dvec2 var367 = var11 * var7; // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var368 = var15 * var13; vec3 var369 = var16 * var13; dvec3 var370 = var17 * var13; // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var371 = var21 * var19; vec4 var372 = var22 * var19; dvec4 var373 = var23 * var19; // uint8_t ====> uint, uint64_t, float, double uint var374 = var1 * var32; uint64_t var375 = var3 * var32; float var376 = var4 * var32; double var377 = var5 * var32; // uint16_t ====> uint, uint64_t, float, double uint var378 = var1 * var33; uint64_t var379 = var3 * var33; float var380 = var4 * var33; double var381 = var5 * var33; // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var382 = var7 * var34; u64vec2 var383 = var9 * var34; vec2 var384 = var10 * var34; dvec2 var385 = var11 * var34; // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var386 = var7 * var35; u64vec2 var387 = var9 * var35; vec2 var388 = var10 * var35; dvec2 var389 = var11 * var35; // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var390 = var13 * var36; u64vec3 var391 = var15 * var36; vec3 var392 = var16 * var36; dvec3 var393 = var17 * var36; // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var394 = var19 * var37; u64vec4 var395 = var21 * var37; vec4 var396 = var22 * var37; dvec4 var397 = var23 * var37; // uint64_t ====> double double var398 = var5 * var3; // u64vec2 ====> dvec2 dvec2 var399 = var11 * var9; // u64vec3 ====> dvec3 dvec3 var400 = var17 * var15; // u64vec4 ====> dvec4 dvec4 var401 = var23 * var21; // float ====> double double var402 = var5 * var4; // vec2 ====> dvec2 dvec2 var403 = var11 * var10; // vec3 ====> dvec3 dvec3 var404 = var17 * var16; // vec4 ====> dvec4 dvec4 var405 = var23 * var22; // float16_t ====> float, double float var406 = var4 * var38; double var407 = var5 * var38; // f16vec2 ====> vec2, dvec2 vec2 var408 = var10 * var39; dvec2 var409 = var11 * var39; // f16vec3 ====> vec3, dvec3 vec3 var410 = var16 * var40; dvec3 var411 = var17 * var40; // f16vec4 ====> vec4, dvec4 vec4 var412 = var22 * var41; dvec4 var413 = var23 * var41; } void testModuloOps() { int var0 = int( 0 ); uint var1 = uint( 1 ); int64_t var2 = int64_t( 2 ); uint64_t var3 = uint64_t( 3 ); float var4 = float( 4 ); double var5 = double( 5 ); ivec2 var6 = ivec2( 6 ); uvec2 var7 = uvec2( 7 ); i64vec2 var8 = i64vec2( 8 ); u64vec2 var9 = u64vec2( 9 ); vec2 var10 = vec2( 10 ); dvec2 var11 = dvec2( 11 ); ivec3 var12 = ivec3( 12 ); uvec3 var13 = uvec3( 13 ); i64vec3 var14 = i64vec3( 14 ); u64vec3 var15 = u64vec3( 15 ); vec3 var16 = vec3( 16 ); dvec3 var17 = dvec3( 17 ); ivec4 var18 = ivec4( 18 ); uvec4 var19 = uvec4( 19 ); i64vec4 var20 = i64vec4( 20 ); u64vec4 var21 = u64vec4( 21 ); vec4 var22 = vec4( 22 ); dvec4 var23 = dvec4( 23 ); int8_t var24 = int8_t( 24 ); int16_t var25 = int16_t( 25 ); i8vec2 var26 = i8vec2( 26 ); i16vec2 var27 = i16vec2( 27 ); i8vec3 var28 = i8vec3( 28 ); i16vec3 var29 = i16vec3( 29 ); i8vec4 var30 = i8vec4( 30 ); i16vec4 var31 = i16vec4( 31 ); uint8_t var32 = uint8_t( 32 ); uint16_t var33 = uint16_t( 33 ); u8vec2 var34 = u8vec2( 34 ); u16vec2 var35 = u16vec2( 35 ); u8vec3 var36 = u8vec3( 36 ); u8vec4 var37 = u8vec4( 37 ); float16_t var38 = float16_t( 38 ); f16vec2 var39 = f16vec2( 39 ); f16vec3 var40 = f16vec3( 40 ); f16vec4 var41 = f16vec4( 41 ); uint var42 = var1 % var0; // uint%int int64_t var43 = var2 % var0; // int64_t%int uint64_t var44 = var3 % var0; // uint64_t%int uvec2 var45 = var7 % var6; // uvec2%ivec2 i64vec2 var46 = var8 % var6; // i64vec2%ivec2 u64vec2 var47 = var9 % var6; // u64vec2%ivec2 uvec3 var48 = var13 % var12; // uvec3%ivec3 i64vec3 var49 = var14 % var12; // i64vec3%ivec3 u64vec3 var50 = var15 % var12; // u64vec3%ivec3 uvec4 var51 = var19 % var18; // uvec4%ivec4 i64vec4 var52 = var20 % var18; // i64vec4%ivec4 u64vec4 var53 = var21 % var18; // u64vec4%ivec4 int var54 = var0 % var24; // int%int8_t int64_t var55 = var2 % var24; // int64_t%int8_t uint var56 = var1 % var24; // uint%int8_t uint64_t var57 = var3 % var24; // uint64_t%int8_t int var58 = var0 % var25; // int%int16_t int64_t var59 = var2 % var25; // int64_t%int16_t uint var60 = var1 % var25; // uint%int16_t uint64_t var61 = var3 % var25; // uint64_t%int16_t ivec2 var62 = var6 % var26; // ivec2%i8vec2 i64vec2 var63 = var8 % var26; // i64vec2%i8vec2 uvec2 var64 = var7 % var26; // uvec2%i8vec2 u64vec2 var65 = var9 % var26; // u64vec2%i8vec2 ivec2 var66 = var6 % var27; // ivec2%i16vec2 i64vec2 var67 = var8 % var27; // i64vec2%i16vec2 uvec2 var68 = var7 % var27; // uvec2%i16vec2 u64vec2 var69 = var9 % var27; // u64vec2%i16vec2 ivec3 var70 = var12 % var28; // ivec3%i8vec3 i64vec3 var71 = var14 % var28; // i64vec3%i8vec3 uvec3 var72 = var13 % var28; // uvec3%i8vec3 u64vec3 var73 = var15 % var28; // u64vec3%i8vec3 uvec3 var74 = var13 % var29; // uvec3%i16vec3 u64vec3 var75 = var15 % var29; // u64vec3%i16vec3 ivec4 var76 = var18 % var30; // ivec4%i8vec4 i64vec4 var77 = var20 % var30; // i64vec4%i8vec4 uvec4 var78 = var19 % var30; // uvec4%i8vec4 u64vec4 var79 = var21 % var30; // u64vec4%i8vec4 uvec4 var80 = var19 % var31; // uvec4%i16vec4 u64vec4 var81 = var21 % var31; // u64vec4%i16vec4 uint64_t var82 = var3 % var2; // uint64_t%int64_t u64vec2 var83 = var9 % var8; // u64vec2%i64vec2 u64vec3 var84 = var15 % var14; // u64vec3%i64vec3 u64vec4 var85 = var21 % var20; // u64vec4%i64vec4 uint64_t var86 = var3 % var1; // uint64_t%uint u64vec2 var87 = var9 % var7; // u64vec2%uvec2 u64vec3 var88 = var15 % var13; // u64vec3%uvec3 u64vec4 var89 = var21 % var19; // u64vec4%uvec4 uint var90 = var1 % var32; // uint%uint8_t uint64_t var91 = var3 % var32; // uint64_t%uint8_t uint var92 = var1 % var33; // uint%uint16_t uint64_t var93 = var3 % var33; // uint64_t%uint16_t uvec2 var94 = var7 % var34; // uvec2%u8vec2 u64vec2 var95 = var9 % var34; // u64vec2%u8vec2 uvec2 var96 = var7 % var35; // uvec2%u16vec2 u64vec2 var97 = var9 % var35; // u64vec2%u16vec2 uvec3 var98 = var13 % var36; // uvec3%u8vec3 u64vec3 var99 = var15 % var36; // u64vec3%u8vec3 uvec4 var100 = var19 % var37; // uvec4%u8vec4 u64vec4 var101 = var21 % var37; // u64vec4%u8vec4 } void testUnaryOps() { int var0 = int( 0 ); uint var1 = uint( 1 ); int64_t var2 = int64_t( 2 ); uint64_t var3 = uint64_t( 3 ); float var4 = float( 4 ); double var5 = double( 5 ); ivec2 var6 = ivec2( 6 ); uvec2 var7 = uvec2( 7 ); i64vec2 var8 = i64vec2( 8 ); u64vec2 var9 = u64vec2( 9 ); vec2 var10 = vec2( 10 ); dvec2 var11 = dvec2( 11 ); ivec3 var12 = ivec3( 12 ); uvec3 var13 = uvec3( 13 ); i64vec3 var14 = i64vec3( 14 ); u64vec3 var15 = u64vec3( 15 ); vec3 var16 = vec3( 16 ); dvec3 var17 = dvec3( 17 ); ivec4 var18 = ivec4( 18 ); uvec4 var19 = uvec4( 19 ); i64vec4 var20 = i64vec4( 20 ); u64vec4 var21 = u64vec4( 21 ); vec4 var22 = vec4( 22 ); dvec4 var23 = dvec4( 23 ); int8_t var24 = int8_t( 24 ); int16_t var25 = int16_t( 25 ); i8vec2 var26 = i8vec2( 26 ); i16vec2 var27 = i16vec2( 27 ); i8vec3 var28 = i8vec3( 28 ); i16vec3 var29 = i16vec3( 29 ); i8vec4 var30 = i8vec4( 30 ); i16vec4 var31 = i16vec4( 31 ); uint8_t var32 = uint8_t( 32 ); uint16_t var33 = uint16_t( 33 ); u8vec2 var34 = u8vec2( 34 ); u16vec2 var35 = u16vec2( 35 ); u8vec3 var36 = u8vec3( 36 ); u8vec4 var37 = u8vec4( 37 ); float16_t var38 = float16_t( 38 ); f16vec2 var39 = f16vec2( 39 ); f16vec3 var40 = f16vec3( 40 ); f16vec4 var41 = f16vec4( 41 ); // int ====> uint, int64_t, uint64_t, float, double uint var42 = -var1; //uint int64_t var43 = -var2; //int64_t uint64_t var44 = -var3; //uint64_t float var45 = -var4; //float double var46 = -var5; //double // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var47 = -var7; //uvec2 i64vec2 var48 = -var8; //i64vec2 u64vec2 var49 = -var9; //u64vec2 vec2 var50 = -var10; //vec2 dvec2 var51 = -var11; //dvec2 // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var52 = -var13; //uvec3 i64vec3 var53 = -var14; //i64vec3 u64vec3 var54 = -var15; //u64vec3 vec3 var55 = -var16; //vec3 dvec3 var56 = -var17; //dvec3 // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var57 = -var19; //uvec4 i64vec4 var58 = -var20; //i64vec4 u64vec4 var59 = -var21; //u64vec4 vec4 var60 = -var22; //vec4 dvec4 var61 = -var23; //dvec4 // int8_t ====> int, int64_t, uint, uint64_t, float, double int var62 = -var0; //int int64_t var63 = -var2; //int64_t uint var64 = -var1; //uint uint64_t var65 = -var3; //uint64_t float var66 = -var4; //float double var67 = -var5; //double // int16_t ====> int, int64_t, uint, uint64_t, float, double int var68 = -var0; //int int64_t var69 = -var2; //int64_t uint var70 = -var1; //uint uint64_t var71 = -var3; //uint64_t float var72 = -var4; //float double var73 = -var5; //double // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var74 = -var6; //ivec2 i64vec2 var75 = -var8; //i64vec2 uvec2 var76 = -var7; //uvec2 u64vec2 var77 = -var9; //u64vec2 vec2 var78 = -var10; //vec2 dvec2 var79 = -var11; //dvec2 // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var80 = -var6; //ivec2 i64vec2 var81 = -var8; //i64vec2 uvec2 var82 = -var7; //uvec2 u64vec2 var83 = -var9; //u64vec2 vec2 var84 = -var10; //vec2 dvec2 var85 = -var11; //dvec2 // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var86 = -var12; //ivec3 i64vec3 var87 = -var14; //i64vec3 uvec3 var88 = -var13; //uvec3 u64vec3 var89 = -var15; //u64vec3 vec3 var90 = -var16; //vec3 dvec3 var91 = -var17; //dvec3 // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var92 = -var13; //uvec3 u64vec3 var93 = -var15; //u64vec3 vec3 var94 = -var16; //vec3 dvec3 var95 = -var17; //dvec3 // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var96 = -var18; //ivec4 i64vec4 var97 = -var20; //i64vec4 uvec4 var98 = -var19; //uvec4 u64vec4 var99 = -var21; //u64vec4 vec4 var100 = -var22; //vec4 dvec4 var101 = -var23; //dvec4 // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var102 = -var19; //uvec4 u64vec4 var103 = -var21; //u64vec4 vec4 var104 = -var22; //vec4 dvec4 var105 = -var23; //dvec4 // int64_t ====> uint64_t, double uint64_t var106 = -var3; //uint64_t double var107 = -var5; //double // i64vec2 ====> u64vec2, dvec2 u64vec2 var108 = -var9; //u64vec2 dvec2 var109 = -var11; //dvec2 // i64vec3 ====> u64vec3, dvec3 u64vec3 var110 = -var15; //u64vec3 dvec3 var111 = -var17; //dvec3 // i64vec4 ====> u64vec4, dvec4 u64vec4 var112 = -var21; //u64vec4 dvec4 var113 = -var23; //dvec4 // uint ====> uint64_t, float, double uint64_t var114 = -var3; //uint64_t float var115 = -var4; //float double var116 = -var5; //double // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var117 = -var9; //u64vec2 vec2 var118 = -var10; //vec2 dvec2 var119 = -var11; //dvec2 // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var120 = -var15; //u64vec3 vec3 var121 = -var16; //vec3 dvec3 var122 = -var17; //dvec3 // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var123 = -var21; //u64vec4 vec4 var124 = -var22; //vec4 dvec4 var125 = -var23; //dvec4 // uint8_t ====> uint, uint64_t, float, double uint var126 = -var1; //uint uint64_t var127 = -var3; //uint64_t float var128 = -var4; //float double var129 = -var5; //double // uint16_t ====> uint, uint64_t, float, double uint var130 = -var1; //uint uint64_t var131 = -var3; //uint64_t float var132 = -var4; //float double var133 = -var5; //double // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var134 = -var7; //uvec2 u64vec2 var135 = -var9; //u64vec2 vec2 var136 = -var10; //vec2 dvec2 var137 = -var11; //dvec2 // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var138 = -var7; //uvec2 u64vec2 var139 = -var9; //u64vec2 vec2 var140 = -var10; //vec2 dvec2 var141 = -var11; //dvec2 // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var142 = -var13; //uvec3 u64vec3 var143 = -var15; //u64vec3 vec3 var144 = -var16; //vec3 dvec3 var145 = -var17; //dvec3 // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var146 = -var19; //uvec4 u64vec4 var147 = -var21; //u64vec4 vec4 var148 = -var22; //vec4 dvec4 var149 = -var23; //dvec4 // uint64_t ====> double double var150 = -var5; //double // u64vec2 ====> dvec2 dvec2 var151 = -var11; //dvec2 // u64vec3 ====> dvec3 dvec3 var152 = -var17; //dvec3 // u64vec4 ====> dvec4 dvec4 var153 = -var23; //dvec4 // float ====> double double var154 = -var5; //double // vec2 ====> dvec2 dvec2 var155 = -var11; //dvec2 // vec3 ====> dvec3 dvec3 var156 = -var17; //dvec3 // vec4 ====> dvec4 dvec4 var157 = -var23; //dvec4 // float16_t ====> float, double float var158 = -var4; //float double var159 = -var5; //double // f16vec2 ====> vec2, dvec2 vec2 var160 = -var10; //vec2 dvec2 var161 = -var11; //dvec2 // f16vec3 ====> vec3, dvec3 vec3 var162 = -var16; //vec3 dvec3 var163 = -var17; //dvec3 // f16vec4 ====> vec4, dvec4 vec4 var164 = -var22; //vec4 dvec4 var165 = -var23; //dvec4 // int ====> uint, int64_t, uint64_t, float, double uint var166 = ++var1; //uint int64_t var167 = ++var2; //int64_t uint64_t var168 = ++var3; //uint64_t float var169 = ++var4; //float double var170 = ++var5; //double // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var171 = ++var7; //uvec2 i64vec2 var172 = ++var8; //i64vec2 u64vec2 var173 = ++var9; //u64vec2 vec2 var174 = ++var10; //vec2 dvec2 var175 = ++var11; //dvec2 // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var176 = ++var13; //uvec3 i64vec3 var177 = ++var14; //i64vec3 u64vec3 var178 = ++var15; //u64vec3 vec3 var179 = ++var16; //vec3 dvec3 var180 = ++var17; //dvec3 // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var181 = ++var19; //uvec4 i64vec4 var182 = ++var20; //i64vec4 u64vec4 var183 = ++var21; //u64vec4 vec4 var184 = ++var22; //vec4 dvec4 var185 = ++var23; //dvec4 // int8_t ====> int, int64_t, uint, uint64_t, float, double int var186 = ++var0; //int int64_t var187 = ++var2; //int64_t uint var188 = ++var1; //uint uint64_t var189 = ++var3; //uint64_t float var190 = ++var4; //float double var191 = ++var5; //double // int16_t ====> int, int64_t, uint, uint64_t, float, double int var192 = ++var0; //int int64_t var193 = ++var2; //int64_t uint var194 = ++var1; //uint uint64_t var195 = ++var3; //uint64_t float var196 = ++var4; //float double var197 = ++var5; //double // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var198 = ++var6; //ivec2 i64vec2 var199 = ++var8; //i64vec2 uvec2 var200 = ++var7; //uvec2 u64vec2 var201 = ++var9; //u64vec2 vec2 var202 = ++var10; //vec2 dvec2 var203 = ++var11; //dvec2 // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var204 = ++var6; //ivec2 i64vec2 var205 = ++var8; //i64vec2 uvec2 var206 = ++var7; //uvec2 u64vec2 var207 = ++var9; //u64vec2 vec2 var208 = ++var10; //vec2 dvec2 var209 = ++var11; //dvec2 // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var210 = ++var12; //ivec3 i64vec3 var211 = ++var14; //i64vec3 uvec3 var212 = ++var13; //uvec3 u64vec3 var213 = ++var15; //u64vec3 vec3 var214 = ++var16; //vec3 dvec3 var215 = ++var17; //dvec3 // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var216 = ++var13; //uvec3 u64vec3 var217 = ++var15; //u64vec3 vec3 var218 = ++var16; //vec3 dvec3 var219 = ++var17; //dvec3 // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var220 = ++var18; //ivec4 i64vec4 var221 = ++var20; //i64vec4 uvec4 var222 = ++var19; //uvec4 u64vec4 var223 = ++var21; //u64vec4 vec4 var224 = ++var22; //vec4 dvec4 var225 = ++var23; //dvec4 // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var226 = ++var19; //uvec4 u64vec4 var227 = ++var21; //u64vec4 vec4 var228 = ++var22; //vec4 dvec4 var229 = ++var23; //dvec4 // int64_t ====> uint64_t, double uint64_t var230 = ++var3; //uint64_t double var231 = ++var5; //double // i64vec2 ====> u64vec2, dvec2 u64vec2 var232 = ++var9; //u64vec2 dvec2 var233 = ++var11; //dvec2 // i64vec3 ====> u64vec3, dvec3 u64vec3 var234 = ++var15; //u64vec3 dvec3 var235 = ++var17; //dvec3 // i64vec4 ====> u64vec4, dvec4 u64vec4 var236 = ++var21; //u64vec4 dvec4 var237 = ++var23; //dvec4 // uint ====> uint64_t, float, double uint64_t var238 = ++var3; //uint64_t float var239 = ++var4; //float double var240 = ++var5; //double // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var241 = ++var9; //u64vec2 vec2 var242 = ++var10; //vec2 dvec2 var243 = ++var11; //dvec2 // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var244 = ++var15; //u64vec3 vec3 var245 = ++var16; //vec3 dvec3 var246 = ++var17; //dvec3 // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var247 = ++var21; //u64vec4 vec4 var248 = ++var22; //vec4 dvec4 var249 = ++var23; //dvec4 // uint8_t ====> uint, uint64_t, float, double uint var250 = ++var1; //uint uint64_t var251 = ++var3; //uint64_t float var252 = ++var4; //float double var253 = ++var5; //double // uint16_t ====> uint, uint64_t, float, double uint var254 = ++var1; //uint uint64_t var255 = ++var3; //uint64_t float var256 = ++var4; //float double var257 = ++var5; //double // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var258 = ++var7; //uvec2 u64vec2 var259 = ++var9; //u64vec2 vec2 var260 = ++var10; //vec2 dvec2 var261 = ++var11; //dvec2 // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var262 = ++var7; //uvec2 u64vec2 var263 = ++var9; //u64vec2 vec2 var264 = ++var10; //vec2 dvec2 var265 = ++var11; //dvec2 // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var266 = ++var13; //uvec3 u64vec3 var267 = ++var15; //u64vec3 vec3 var268 = ++var16; //vec3 dvec3 var269 = ++var17; //dvec3 // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var270 = ++var19; //uvec4 u64vec4 var271 = ++var21; //u64vec4 vec4 var272 = ++var22; //vec4 dvec4 var273 = ++var23; //dvec4 // uint64_t ====> double double var274 = ++var5; //double // u64vec2 ====> dvec2 dvec2 var275 = ++var11; //dvec2 // u64vec3 ====> dvec3 dvec3 var276 = ++var17; //dvec3 // u64vec4 ====> dvec4 dvec4 var277 = ++var23; //dvec4 // float ====> double double var278 = ++var5; //double // vec2 ====> dvec2 dvec2 var279 = ++var11; //dvec2 // vec3 ====> dvec3 dvec3 var280 = ++var17; //dvec3 // vec4 ====> dvec4 dvec4 var281 = ++var23; //dvec4 // float16_t ====> float, double float var282 = ++var4; //float double var283 = ++var5; //double // f16vec2 ====> vec2, dvec2 vec2 var284 = ++var10; //vec2 dvec2 var285 = ++var11; //dvec2 // f16vec3 ====> vec3, dvec3 vec3 var286 = ++var16; //vec3 dvec3 var287 = ++var17; //dvec3 // f16vec4 ====> vec4, dvec4 vec4 var288 = ++var22; //vec4 dvec4 var289 = ++var23; //dvec4 // int ====> uint, int64_t, uint64_t, float, double uint var290 = --var1; //uint int64_t var291 = --var2; //int64_t uint64_t var292 = --var3; //uint64_t float var293 = --var4; //float double var294 = --var5; //double // ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2 uvec2 var295 = --var7; //uvec2 i64vec2 var296 = --var8; //i64vec2 u64vec2 var297 = --var9; //u64vec2 vec2 var298 = --var10; //vec2 dvec2 var299 = --var11; //dvec2 // ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3 uvec3 var300 = --var13; //uvec3 i64vec3 var301 = --var14; //i64vec3 u64vec3 var302 = --var15; //u64vec3 vec3 var303 = --var16; //vec3 dvec3 var304 = --var17; //dvec3 // ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4 uvec4 var305 = --var19; //uvec4 i64vec4 var306 = --var20; //i64vec4 u64vec4 var307 = --var21; //u64vec4 vec4 var308 = --var22; //vec4 dvec4 var309 = --var23; //dvec4 // int8_t ====> int, int64_t, uint, uint64_t, float, double int var310 = --var0; //int int64_t var311 = --var2; //int64_t uint var312 = --var1; //uint uint64_t var313 = --var3; //uint64_t float var314 = --var4; //float double var315 = --var5; //double // int16_t ====> int, int64_t, uint, uint64_t, float, double int var316 = --var0; //int int64_t var317 = --var2; //int64_t uint var318 = --var1; //uint uint64_t var319 = --var3; //uint64_t float var320 = --var4; //float double var321 = --var5; //double // i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var322 = --var6; //ivec2 i64vec2 var323 = --var8; //i64vec2 uvec2 var324 = --var7; //uvec2 u64vec2 var325 = --var9; //u64vec2 vec2 var326 = --var10; //vec2 dvec2 var327 = --var11; //dvec2 // i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2 ivec2 var328 = --var6; //ivec2 i64vec2 var329 = --var8; //i64vec2 uvec2 var330 = --var7; //uvec2 u64vec2 var331 = --var9; //u64vec2 vec2 var332 = --var10; //vec2 dvec2 var333 = --var11; //dvec2 // i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3 ivec3 var334 = --var12; //ivec3 i64vec3 var335 = --var14; //i64vec3 uvec3 var336 = --var13; //uvec3 u64vec3 var337 = --var15; //u64vec3 vec3 var338 = --var16; //vec3 dvec3 var339 = --var17; //dvec3 // i16vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var340 = --var13; //uvec3 u64vec3 var341 = --var15; //u64vec3 vec3 var342 = --var16; //vec3 dvec3 var343 = --var17; //dvec3 // i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4 ivec4 var344 = --var18; //ivec4 i64vec4 var345 = --var20; //i64vec4 uvec4 var346 = --var19; //uvec4 u64vec4 var347 = --var21; //u64vec4 vec4 var348 = --var22; //vec4 dvec4 var349 = --var23; //dvec4 // i16vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var350 = --var19; //uvec4 u64vec4 var351 = --var21; //u64vec4 vec4 var352 = --var22; //vec4 dvec4 var353 = --var23; //dvec4 // int64_t ====> uint64_t, double uint64_t var354 = --var3; //uint64_t double var355 = --var5; //double // i64vec2 ====> u64vec2, dvec2 u64vec2 var356 = --var9; //u64vec2 dvec2 var357 = --var11; //dvec2 // i64vec3 ====> u64vec3, dvec3 u64vec3 var358 = --var15; //u64vec3 dvec3 var359 = --var17; //dvec3 // i64vec4 ====> u64vec4, dvec4 u64vec4 var360 = --var21; //u64vec4 dvec4 var361 = --var23; //dvec4 // uint ====> uint64_t, float, double uint64_t var362 = --var3; //uint64_t float var363 = --var4; //float double var364 = --var5; //double // uvec2 ====> u64vec2, vec2, dvec2 u64vec2 var365 = --var9; //u64vec2 vec2 var366 = --var10; //vec2 dvec2 var367 = --var11; //dvec2 // uvec3 ====> u64vec3, vec3, dvec3 u64vec3 var368 = --var15; //u64vec3 vec3 var369 = --var16; //vec3 dvec3 var370 = --var17; //dvec3 // uvec4 ====> u64vec4, vec4, dvec4 u64vec4 var371 = --var21; //u64vec4 vec4 var372 = --var22; //vec4 dvec4 var373 = --var23; //dvec4 // uint8_t ====> uint, uint64_t, float, double uint var374 = --var1; //uint uint64_t var375 = --var3; //uint64_t float var376 = --var4; //float double var377 = --var5; //double // uint16_t ====> uint, uint64_t, float, double uint var378 = --var1; //uint uint64_t var379 = --var3; //uint64_t float var380 = --var4; //float double var381 = --var5; //double // u8vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var382 = --var7; //uvec2 u64vec2 var383 = --var9; //u64vec2 vec2 var384 = --var10; //vec2 dvec2 var385 = --var11; //dvec2 // u16vec2 ====> uvec2, u64vec2, vec2, dvec2 uvec2 var386 = --var7; //uvec2 u64vec2 var387 = --var9; //u64vec2 vec2 var388 = --var10; //vec2 dvec2 var389 = --var11; //dvec2 // u8vec3 ====> uvec3, u64vec3, vec3, dvec3 uvec3 var390 = --var13; //uvec3 u64vec3 var391 = --var15; //u64vec3 vec3 var392 = --var16; //vec3 dvec3 var393 = --var17; //dvec3 // u8vec4 ====> uvec4, u64vec4, vec4, dvec4 uvec4 var394 = --var19; //uvec4 u64vec4 var395 = --var21; //u64vec4 vec4 var396 = --var22; //vec4 dvec4 var397 = --var23; //dvec4 // uint64_t ====> double double var398 = --var5; //double // u64vec2 ====> dvec2 dvec2 var399 = --var11; //dvec2 // u64vec3 ====> dvec3 dvec3 var400 = --var17; //dvec3 // u64vec4 ====> dvec4 dvec4 var401 = --var23; //dvec4 // float ====> double double var402 = --var5; //double // vec2 ====> dvec2 dvec2 var403 = --var11; //dvec2 // vec3 ====> dvec3 dvec3 var404 = --var17; //dvec3 // vec4 ====> dvec4 dvec4 var405 = --var23; //dvec4 // float16_t ====> float, double float var406 = --var4; //float double var407 = --var5; //double // f16vec2 ====> vec2, dvec2 vec2 var408 = --var10; //vec2 dvec2 var409 = --var11; //dvec2 // f16vec3 ====> vec3, dvec3 vec3 var410 = --var16; //vec3 dvec3 var411 = --var17; //dvec3 // f16vec4 ====> vec4, dvec4 vec4 var412 = --var22; //vec4 dvec4 var413 = --var23; //dvec4 } void testConditionExpressions() { int8_t var1 = int8_t(0); int16_t var5 = int16_t(0); int32_t var9 = int32_t(0); int64_t var13 = int64_t(0); float16_t var33 = float16_t(0); float64_t var41 = float64_t(0); double var42 = double(0); bool b = (var1 == int8_t(0)); b = (var5 == int16_t(0)); b = (var9 == int32_t(0)); b = (var13 == int64_t(0)); b = (var33 == float16_t(0)); b = (var41 == float64_t(0)); b = (var42 == double(0)); b = (var5 != int16_t(0)); b = (var9 != int32_t(0)); b = (var13 != int64_t(0)); b = (var33 != float16_t(0)); b = (var41 != float64_t(0)); b = (var42 != double(0)); b = (var5 > int16_t(0)); b = (var9 > int32_t(0)); b = (var13 > int64_t(0)); b = (var33 > float16_t(0)); b = (var41 > float64_t(0)); b = (var42 > double(0)); } // This test case verifies all the function definition conversions as specificed in // NV_gpu_shader5 under "Modify Section 6.1, Function Definitions, p. 63" void func(int64_t a) { } void func(int a) { } void func(uint a) { } void func(uint64_t a) { } void func(float a) { } void func64(double a) { } void func64(int64_t a) { } void func64(uint64_t a) { } void testFunctionDefinition() { int8_t var1 = int8_t(0); int16_t var5 = int16_t(0); uint8_t var2 = uint8_t(0); uint16_t var3 = uint16_t(0); int32_t var9 = int32_t(0); int var10 = int(0); uint var11 = uint(0); int64_t var13 = int64_t(0); float16_t var33 = float16_t(0); float var34 = float(0); /* source types destination types ----------------- ----------------- int8_t, int16_t int, int64_t int int64_t uint8_t, uint16_t uint, uint64_t uint uint64_t float16_t float float double */ func(var1); // should pick func(int a) func(var5); // should pick func(int a) func(var10); //int, should pick func(int64_t a) func(var2); //uint8_t should pick func(uint a) func(var3); //uint16_t should pick func(uint a) func(var33); //float16_t should pick void func(float a) func64(var1); // int8_t, should pick func64(int64_t a) func64(var5); // int16_t, should pick func64(int64_t a) func64(var9); // int32_t, should pick func64(int64_t a) func64(var2); //uint8_t should pick func64(uint64_t a) func64(var3); //uint16_t should pick func64(uint64_t a) func64(var11); //uint should pick func64(uint64_t a) func64(var34); //float should pick func64(double a) } flat in int var; void testBuiltinNVOnly() { // Test builtins defined by NV_gpu_shader5 and not available in ARB_gpu_shader5 int64_t v1 = packInt2x32(ivec2(0)); uint64_t v2 = packUint2x32(uvec2(0)); ivec2 v3 = unpackInt2x32(int64_t(0)); uvec2 v4 = unpackUint2x32(uint64_t(0)); uint v5 = packFloat2x16(f16vec2(0)); f16vec2 v6 = unpackFloat2x16(uint(0)); int64_t v7 = doubleBitsToInt64(double(0)); i64vec2 v8 = doubleBitsToInt64(dvec2(0)); i64vec3 v9 = doubleBitsToInt64(dvec3(0)); i64vec4 v10 = doubleBitsToInt64(dvec4(0)); uint64_t v11 = doubleBitsToUint64(double(0)); u64vec2 v12 = doubleBitsToUint64(dvec2(0)); u64vec3 v13 = doubleBitsToUint64(dvec3(0)); u64vec4 v14 = doubleBitsToUint64(dvec4(0)); double v15 = int64BitsToDouble(int64_t(0)); dvec2 v16 = int64BitsToDouble(i64vec2(0)); dvec3 v17 = int64BitsToDouble(i64vec3(0)); dvec4 v18 = int64BitsToDouble(i64vec4(0)); double v19 = uint64BitsToDouble(uint64_t(0)); dvec2 v20 = uint64BitsToDouble(u64vec2(0)); dvec3 v21 = uint64BitsToDouble(u64vec3(0)); dvec4 v22 = uint64BitsToDouble(u64vec4(0)); bool b1 = anyThreadNV((var == 1)); bool b2 = allThreadsNV((var == 1)); bool b3 = allThreadsEqualNV((var == 1)); } // Modifications to Vector Relational Functions // Introduction of explicitly sized types void testVectorRelationBuiltins() { bvec2 b1 = lessThan(i64vec2(0), i64vec2(1)); bvec3 b2 = lessThan(i64vec3(0), i64vec3(1)); bvec4 b3 = lessThan(i64vec4(0), i64vec4(1)); bvec2 b4 = lessThan(u64vec2(0), u64vec2(1)); bvec3 b5 = lessThan(u64vec3(0), u64vec3(1)); bvec4 b6 = lessThan(u64vec4(0), u64vec4(1)); bvec2 b7 = lessThanEqual(i64vec2(0), i64vec2(1)); bvec3 b8 = lessThanEqual(i64vec3(0), i64vec3(1)); bvec4 b9 = lessThanEqual(i64vec4(0), i64vec4(1)); bvec2 b10 = lessThanEqual(u64vec2(0), u64vec2(1)); bvec3 b11 = lessThanEqual(u64vec3(0), u64vec3(1)); bvec4 b12 = lessThanEqual(u64vec4(0), u64vec4(1)); bvec2 b13 = greaterThan(i64vec2(0), i64vec2(1)); bvec3 b14 = greaterThan(i64vec3(0), i64vec3(1)); bvec4 b15 = greaterThan(i64vec4(0), i64vec4(1)); bvec2 b16 = greaterThan(u64vec2(0), u64vec2(1)); bvec3 b17 = greaterThan(u64vec3(0), u64vec3(1)); bvec4 b18 = greaterThan(u64vec4(0), u64vec4(1)); bvec2 b19 = greaterThanEqual(i64vec2(0), i64vec2(1)); bvec3 b20 = greaterThanEqual(i64vec3(0), i64vec3(1)); bvec4 b21 = greaterThanEqual(i64vec4(0), i64vec4(1)); bvec2 b22 = greaterThanEqual(u64vec2(0), u64vec2(1)); bvec3 b23 = greaterThanEqual(u64vec3(0), u64vec3(1)); bvec4 b24 = greaterThanEqual(u64vec4(0), u64vec4(1)); bvec2 b25 = equal(i64vec2(0), i64vec2(1)); bvec3 b26 = equal(i64vec3(0), i64vec3(1)); bvec4 b27 = equal(i64vec4(0), i64vec4(1)); bvec2 b28 = equal(u64vec2(0), u64vec2(1)); bvec3 b29 = equal(u64vec3(0), u64vec3(1)); bvec4 b30 = equal(u64vec4(0), u64vec4(1)); bvec2 b31 = notEqual(i64vec2(0), i64vec2(1)); bvec3 b32 = notEqual(i64vec3(0), i64vec3(1)); bvec4 b33 = notEqual(i64vec4(0), i64vec4(1)); bvec2 b34 = notEqual(u64vec2(0), u64vec2(1)); bvec3 b35 = notEqual(u64vec3(0), u64vec3(1)); bvec4 b36 = notEqual(u64vec4(0), u64vec4(1)); bvec2 b37 = lessThan(f16vec2(0), f16vec2(1)); bvec3 b38 = lessThan(f16vec3(0), f16vec3(1)); bvec4 b39 = lessThan(f16vec4(0), f16vec4(1)); bvec2 b40 = lessThanEqual(f16vec2(0), f16vec2(1)); bvec3 b41 = lessThanEqual(f16vec3(0), f16vec3(1)); bvec4 b42 = lessThanEqual(f16vec4(0), f16vec4(1)); bvec2 b43 = greaterThan(f16vec2(0), f16vec2(1)); bvec3 b44 = greaterThan(f16vec3(0), f16vec3(1)); bvec4 b45 = greaterThan(f16vec4(0), f16vec4(1)); bvec2 b46 = greaterThanEqual(f16vec2(0), f16vec2(1)); bvec3 b47 = greaterThanEqual(f16vec3(0), f16vec3(1)); bvec4 b48 = greaterThanEqual(f16vec4(0), f16vec4(1)); bvec2 b49 = equal(f16vec2(0), f16vec2(1)); bvec3 b50 = equal(f16vec3(0), f16vec3(1)); bvec4 b51 = equal(f16vec4(0), f16vec4(1)); bvec2 b52 = notEqual(f16vec2(0), f16vec2(1)); bvec3 b53 = notEqual(f16vec3(0), f16vec3(1)); bvec4 b54 = notEqual(f16vec4(0), f16vec4(1)); // Dependency on GL_ARB_gpu_shader_fp64 bvec2 b55 = lessThan(dvec2(0), dvec2(1)); bvec3 b56 = lessThan(dvec3(0), dvec3(1)); bvec4 b57 = lessThan(dvec4(0), dvec4(1)); bvec2 b58 = lessThanEqual(dvec2(0), dvec2(1)); bvec3 b59 = lessThanEqual(dvec3(0), dvec3(1)); bvec4 b60 = lessThanEqual(dvec4(0), dvec4(1)); bvec2 b61 = greaterThan(dvec2(0), dvec2(1)); bvec3 b62 = greaterThan(dvec3(0), dvec3(1)); bvec4 b63 = greaterThan(dvec4(0), dvec4(1)); bvec2 b64 = greaterThanEqual(dvec2(0), dvec2(1)); bvec3 b65 = greaterThanEqual(dvec3(0), dvec3(1)); bvec4 b66 = greaterThanEqual(dvec4(0), dvec4(1)); bvec2 b67 = equal(dvec2(0), dvec2(1)); bvec3 b68 = equal(dvec3(0), dvec3(1)); bvec4 b69 = equal(dvec4(0), dvec4(1)); bvec2 b70 = notEqual(dvec2(0), dvec2(1)); bvec3 b71 = notEqual(dvec3(0), dvec3(1)); bvec4 b72 = notEqual(dvec4(0), dvec4(1)); } // Testing texture builtins with non constant "offset" uniform sampler2DRectShadow tvar0; uniform samplerCubeShadow tvar1; uniform sampler1DArrayShadow tvar2; uniform sampler1DShadow tvar3; uniform sampler2DShadow tvar4; uniform sampler2DArrayShadow tvar5; uniform samplerCubeArrayShadow tvar6; uniform isampler2DArray tvar7; uniform usampler2DArray tvar8; uniform sampler2DArray tvar9; uniform usampler2D tvar10; uniform sampler2D tvar11; uniform isampler2D tvar12; uniform isampler2DRect tvar13; uniform sampler2DRect tvar14; uniform usampler2DRect tvar15; uniform usamplerCubeArray tvar16; uniform isamplerCubeArray tvar17; uniform samplerCubeArray tvar18; uniform usampler3D tvar19; uniform sampler3D tvar20; uniform isampler3D tvar21; uniform sampler1D tvar22; uniform usampler1D tvar23; uniform isampler1D tvar24; uniform isamplerCube tvar25; uniform samplerCube tvar26; uniform usamplerCube tvar27; uniform isampler1DArray tvar28; uniform usampler1DArray tvar29; uniform sampler1DArray tvar30; in float tvar32; flat in int tvar33; in vec2 tvar37; flat in ivec2 tvar38; in vec3 tvar42; flat in ivec3 tvar43; in vec4 tvar81; void main() { vec4 tvar31 =textureOffset( tvar22, tvar32, tvar33, tvar32); ivec4 tvar34 =textureOffset( tvar24, tvar32, tvar33, tvar32); uvec4 tvar35 =textureOffset( tvar23, tvar32, tvar33, tvar32); vec4 tvar36 =textureOffset( tvar11, tvar37, tvar38, tvar32); ivec4 tvar39 =textureOffset( tvar12, tvar37, tvar38, tvar32); uvec4 tvar40 =textureOffset( tvar10, tvar37, tvar38, tvar32); vec4 tvar41 =textureOffset( tvar20, tvar42, tvar43, tvar32); ivec4 tvar44 =textureOffset( tvar21, tvar42, tvar43, tvar32); uvec4 tvar45 =textureOffset( tvar19, tvar42, tvar43, tvar32); vec4 tvar46 =textureOffset( tvar14, tvar37, tvar38); ivec4 tvar47 =textureOffset( tvar13, tvar37, tvar38); uvec4 tvar48 =textureOffset( tvar15, tvar37, tvar38); float tvar49 =textureOffset( tvar0, tvar42, tvar38); float tvar50 =textureOffset( tvar3, tvar42, tvar33, tvar32); float tvar51 =textureOffset( tvar4, tvar42, tvar38, tvar32); vec4 tvar52 =textureOffset( tvar30, tvar37, tvar33, tvar32); ivec4 tvar53 =textureOffset( tvar28, tvar37, tvar33, tvar32); uvec4 tvar54 =textureOffset( tvar29, tvar37, tvar33, tvar32); vec4 tvar55 =textureOffset( tvar9, tvar42, tvar38, tvar32); ivec4 tvar56 =textureOffset( tvar7, tvar42, tvar38, tvar32); uvec4 tvar57 =textureOffset( tvar8, tvar42, tvar38, tvar32); float tvar58 =textureOffset( tvar2, tvar42, tvar33, tvar32); vec4 tvar59 =texelFetchOffset( tvar22, tvar33, tvar33, tvar33); ivec4 tvar60 =texelFetchOffset( tvar24, tvar33, tvar33, tvar33); uvec4 tvar61 =texelFetchOffset( tvar23, tvar33, tvar33, tvar33); vec4 tvar62 =texelFetchOffset( tvar11, tvar38, tvar33, tvar38); ivec4 tvar63 =texelFetchOffset( tvar12, tvar38, tvar33, tvar38); uvec4 tvar64 =texelFetchOffset( tvar10, tvar38, tvar33, tvar38); vec4 tvar65 =texelFetchOffset( tvar20, tvar43, tvar33, tvar43); ivec4 tvar66 =texelFetchOffset( tvar21, tvar43, tvar33, tvar43); uvec4 tvar67 =texelFetchOffset( tvar19, tvar43, tvar33, tvar43); vec4 tvar68 =texelFetchOffset( tvar14, tvar38, tvar38); ivec4 tvar69 =texelFetchOffset( tvar13, tvar38, tvar38); uvec4 tvar70 =texelFetchOffset( tvar15, tvar38, tvar38); vec4 tvar71 =texelFetchOffset( tvar30, tvar38, tvar33, tvar33); ivec4 tvar72 =texelFetchOffset( tvar28, tvar38, tvar33, tvar33); uvec4 tvar73 =texelFetchOffset( tvar29, tvar38, tvar33, tvar33); vec4 tvar74 =texelFetchOffset( tvar9, tvar43, tvar33, tvar38); ivec4 tvar75 =texelFetchOffset( tvar7, tvar43, tvar33, tvar38); uvec4 tvar76 =texelFetchOffset( tvar8, tvar43, tvar33, tvar38); vec4 tvar77 =textureProjOffset( tvar22, tvar37, tvar33, tvar32); ivec4 tvar78 =textureProjOffset( tvar24, tvar37, tvar33, tvar32); uvec4 tvar79 =textureProjOffset( tvar23, tvar37, tvar33, tvar32); vec4 tvar80 =textureProjOffset( tvar22, tvar81, tvar33, tvar32); ivec4 tvar82 =textureProjOffset( tvar24, tvar81, tvar33, tvar32); uvec4 tvar83 =textureProjOffset( tvar23, tvar81, tvar33, tvar32); vec4 tvar84 =textureProjOffset( tvar11, tvar42, tvar38, tvar32); ivec4 tvar85 =textureProjOffset( tvar12, tvar42, tvar38, tvar32); uvec4 tvar86 =textureProjOffset( tvar10, tvar42, tvar38, tvar32); vec4 tvar87 =textureProjOffset( tvar11, tvar81, tvar38, tvar32); ivec4 tvar88 =textureProjOffset( tvar12, tvar81, tvar38, tvar32); uvec4 tvar89 =textureProjOffset( tvar10, tvar81, tvar38, tvar32); vec4 tvar90 =textureProjOffset( tvar20, tvar81, tvar43, tvar32); ivec4 tvar91 =textureProjOffset( tvar21, tvar81, tvar43, tvar32); uvec4 tvar92 =textureProjOffset( tvar19, tvar81, tvar43, tvar32); vec4 tvar93 =textureProjOffset( tvar14, tvar42, tvar38); ivec4 tvar94 =textureProjOffset( tvar13, tvar42, tvar38); uvec4 tvar95 =textureProjOffset( tvar15, tvar42, tvar38); vec4 tvar96 =textureProjOffset( tvar14, tvar81, tvar38); ivec4 tvar97 =textureProjOffset( tvar13, tvar81, tvar38); uvec4 tvar98 =textureProjOffset( tvar15, tvar81, tvar38); float tvar99 =textureProjOffset( tvar0, tvar81, tvar38); float tvar100 =textureProjOffset( tvar3, tvar81, tvar33, tvar32); float tvar101 =textureProjOffset( tvar4, tvar81, tvar38, tvar32); vec4 tvar102 =textureLodOffset( tvar22, tvar32, tvar32, tvar33); ivec4 tvar103 =textureLodOffset( tvar24, tvar32, tvar32, tvar33); uvec4 tvar104 =textureLodOffset( tvar23, tvar32, tvar32, tvar33); vec4 tvar105 =textureLodOffset( tvar11, tvar37, tvar32, tvar38); ivec4 tvar106 =textureLodOffset( tvar12, tvar37, tvar32, tvar38); uvec4 tvar107 =textureLodOffset( tvar10, tvar37, tvar32, tvar38); vec4 tvar108 =textureLodOffset( tvar20, tvar42, tvar32, tvar43); ivec4 tvar109 =textureLodOffset( tvar21, tvar42, tvar32, tvar43); uvec4 tvar110 =textureLodOffset( tvar19, tvar42, tvar32, tvar43); float tvar111 =textureLodOffset( tvar3, tvar42, tvar32, tvar33); float tvar112 =textureLodOffset( tvar4, tvar42, tvar32, tvar38); vec4 tvar113 =textureLodOffset( tvar30, tvar37, tvar32, tvar33); ivec4 tvar114 =textureLodOffset( tvar28, tvar37, tvar32, tvar33); uvec4 tvar115 =textureLodOffset( tvar29, tvar37, tvar32, tvar33); vec4 tvar116 =textureLodOffset( tvar9, tvar42, tvar32, tvar38); ivec4 tvar117 =textureLodOffset( tvar7, tvar42, tvar32, tvar38); uvec4 tvar118 =textureLodOffset( tvar8, tvar42, tvar32, tvar38); float tvar119 =textureLodOffset( tvar2, tvar42, tvar32, tvar33); vec4 tvar120 =textureProjLodOffset( tvar22, tvar37, tvar32, tvar33); ivec4 tvar121 =textureProjLodOffset( tvar24, tvar37, tvar32, tvar33); uvec4 tvar122 =textureProjLodOffset( tvar23, tvar37, tvar32, tvar33); vec4 tvar123 =textureProjLodOffset( tvar22, tvar81, tvar32, tvar33); ivec4 tvar124 =textureProjLodOffset( tvar24, tvar81, tvar32, tvar33); uvec4 tvar125 =textureProjLodOffset( tvar23, tvar81, tvar32, tvar33); vec4 tvar126 =textureProjLodOffset( tvar11, tvar42, tvar32, tvar38); ivec4 tvar127 =textureProjLodOffset( tvar12, tvar42, tvar32, tvar38); uvec4 tvar128 =textureProjLodOffset( tvar10, tvar42, tvar32, tvar38); vec4 tvar129 =textureProjLodOffset( tvar11, tvar81, tvar32, tvar38); ivec4 tvar130 =textureProjLodOffset( tvar12, tvar81, tvar32, tvar38); uvec4 tvar131 =textureProjLodOffset( tvar10, tvar81, tvar32, tvar38); vec4 tvar132 =textureProjLodOffset( tvar20, tvar81, tvar32, tvar43); ivec4 tvar133 =textureProjLodOffset( tvar21, tvar81, tvar32, tvar43); uvec4 tvar134 =textureProjLodOffset( tvar19, tvar81, tvar32, tvar43); float tvar135 =textureProjLodOffset( tvar3, tvar81, tvar32, tvar33); float tvar136 =textureProjLodOffset( tvar4, tvar81, tvar32, tvar38); } glslang-16.0.0/Test/spv.offsets.frag000066400000000000000000000006311506534232700172740ustar00rootroot00000000000000#version 450 layout(set = 0, binding = 0, std140) uniform n1 { layout(offset = 8) int a; layout(offset = 4) int b; layout(offset = 0) int c; layout(offset = 12) int d; } i1; layout(set = 0, binding = 1, std430) buffer n2 { layout(offset = 32) vec3 e; vec3 f; layout(offset = 16) vec3 g; layout(offset = 0) vec3 h; } i2; void main() {}glslang-16.0.0/Test/spv.paramMemory.420.frag000066400000000000000000000017241506534232700204240ustar00rootroot00000000000000#version 420 // Need this extension to permit passing a formatless readonly image to a helper function. #extension GL_EXT_shader_image_load_formatted : require readonly coherent uniform layout(set = 0, binding = 0) image2D image1; readonly uniform layout(set = 0, binding = 2) image2D image2; writeonly coherent uniform layout(set = 0, binding = 1, rgba32f) image2D image3; writeonly uniform layout(set = 0, binding = 3, rgba16f) image2D image4; flat in layout(location = 0) ivec2 in_coords; out layout(location = 0) vec4 out_color; vec4 image_load(readonly coherent image2D image, ivec2 coords) { return imageLoad(image, in_coords); } void image_store(writeonly coherent image2D image, ivec2 coords, vec4 data) { imageStore(image, in_coords, data); } void main() { vec4 read1 = image_load(image1, in_coords); vec4 read2 = image_load(image2, in_coords); image_store(image3, in_coords, read1*0.5); image_store(image4, in_coords, read2*2.0); out_color = vec4(0.0); } glslang-16.0.0/Test/spv.paramMemory.frag000066400000000000000000000016761506534232700201260ustar00rootroot00000000000000#version 310 es // readonly coherent uniform layout(set = 0, binding = 0) highp image2D image1; // readonly uniform layout(set = 0, binding = 2) highp image2D image2; writeonly coherent uniform layout(set = 0, binding = 1, rgba32f) highp image2D image3; writeonly uniform layout(set = 0, binding = 3, rgba16f) highp image2D image4; flat in layout(location = 0) highp ivec2 in_coords; out layout(location = 0) highp vec4 out_color; highp vec4 image_load(readonly coherent highp image2D image, highp ivec2 coords) { return imageLoad(image, in_coords); } void image_store(writeonly coherent highp image2D image, highp ivec2 coords, highp vec4 data) { imageStore(image, in_coords, data); } void main() { highp vec4 read1 = vec4(0.4); // = image_load(image1, in_coords); highp vec4 read2 = vec4(0.5); // = image_load(image2, in_coords); image_store(image3, in_coords, read1*0.5); image_store(image4, in_coords, read2*2.0); out_color = vec4(0.0); } glslang-16.0.0/Test/spv.perprimitiveNV.frag000066400000000000000000000004001506534232700206000ustar00rootroot00000000000000#version 460 #extension GL_NV_mesh_shader: require layout(location=0) in B { perprimitiveNV float f; }; layout(location=4) in C { flat centroid float h; }; layout(location=8) out float g; void main() { g = f + h; } glslang-16.0.0/Test/spv.pp.line.frag000066400000000000000000000014511506534232700171710ustar00rootroot00000000000000#version 140 #extension GL_GOOGLE_cpp_style_line_directive : require uniform sampler1D texSampler1D; uniform sampler2D texSampler2D; varying float blend; varying vec4 u; 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 = myAbs(1.789); float bias = 2.0; float coords1D = 1.789; vec4 color = vec4(0.0, 0.0, 0.0, 0.0); #line 53 color += texture (texSampler1D, coords1D); color += texture (texSampler1D, coords1D, bias); #line 102 color += texture (texSampler2D, coords2D); color += texture (texSampler2D, coords2D, bias); gl_FragColor = mix(color, u, blend * blendscale); } glslang-16.0.0/Test/spv.precise.tesc000066400000000000000000000013561506534232700173010ustar00rootroot00000000000000#version 310 es #extension GL_EXT_tessellation_shader : require #extension GL_EXT_gpu_shader5 : require layout(vertices = 3) out; layout(location = 0) in highp vec2 in_tc_position[]; layout(location = 1) in highp float in_tc_tessParam[]; layout(location = 0) out highp vec2 in_te_position[]; precise gl_TessLevelOuter; void main (void) { in_te_position[gl_InvocationID] = in_tc_position[gl_InvocationID]; gl_TessLevelInner[0] = 5.0; gl_TessLevelInner[1] = 5.0; gl_TessLevelOuter[0] = 1.0 + 59.0 * 0.5 * (in_tc_tessParam[1] + in_tc_tessParam[2]); gl_TessLevelOuter[1] = 1.0 + 59.0 * 0.5 * (in_tc_tessParam[2] + in_tc_tessParam[0]); gl_TessLevelOuter[2] = 1.0 + 59.0 * 0.5 * (in_tc_tessParam[0] + in_tc_tessParam[1]); } glslang-16.0.0/Test/spv.precise.tese000066400000000000000000000020511506534232700172740ustar00rootroot00000000000000#version 310 es #extension GL_EXT_tessellation_shader : require #extension GL_EXT_gpu_shader5 : require layout(triangles, equal_spacing) in; layout(location = 0) in highp vec2 in_te_position[]; layout(location = 0) out mediump vec4 in_f_color; precise gl_Position; void main(void) { highp vec2 pos = gl_TessCoord.x * in_te_position[0] + gl_TessCoord.y * in_te_position[1] + gl_TessCoord.z * in_te_position[2]; highp float f = sqrt(3.0 * min(gl_TessCoord.x, min(gl_TessCoord.y, gl_TessCoord.z))) * 0.5 + 0.5; in_f_color = vec4(gl_TessCoord * f, 1.0); // Offset the position slightly, based on the parity of the bits in the float // representation. // This is done to detect possible small differences in edge vertex positions // between patches. uvec2 bits = floatBitsToUint(pos); uint numBits = 0u; for (uint i = 0u; i < 32u; i++) numBits += ((bits[0] << i) & 1u) + ((bits[1] << i) & 1u); pos += float(numBits & 1u) * 0.04; gl_Position = vec4(pos, 0.0, 1.0); } glslang-16.0.0/Test/spv.precision.frag000066400000000000000000000026251506534232700176230ustar00rootroot00000000000000#version 310 es #extension GL_OES_sample_variables : enable precision mediump float; in lowp float lowfin; in mediump float mediumfin; in highp vec4 highfin; highp int uniform_high; mediump int uniform_medium; lowp int uniform_low; bvec2 ub2; out mediump vec4 mediumfout; highp float global_highp; lowp vec2 foo(mediump vec3 mv3) { return highfin.xy; } bool boolfun(bvec2 bv2) { return bv2 == bvec2(false, true); } struct S { highp float a; lowp float b; }; in S s; void main() { lowp int sum = uniform_medium + uniform_high; sum += uniform_high; sum += uniform_low; // test maxing precisions of args to get precision of builtin lowp float arg1 = 3.2; mediump float arg2 = 1023908.2; lowp float d = distance(lowfin, mediumfin); global_highp = length(highfin); highp vec4 local_highp = vec4(global_highp); mediumfout = vec4(sin(d)) + arg2 + local_highp; sum += 4 + ((ivec2(uniform_low) * ivec2(uniform_high) + ivec2((/* comma operator */uniform_low, uniform_high)))).x; mediumfout += vec4(sum); if (boolfun(ub2)) ++mediumfout; mediumfout *= s.a; mediumfout *= s.b; mediumfout = ((mediumfin * mediumfin > 4.2) ? 2.0 * mediumfout : 3.0 * mediumfout); mediumfout = ((gl_SampleMaskIn[0] >> uniform_medium > 0) ? 2.0 * mediumfout : 3.0 * mediumfout); } glslang-16.0.0/Test/spv.precisionArgs.frag000066400000000000000000000010701506534232700204310ustar00rootroot00000000000000#version 310 es precision mediump float; void fooConst(const in float f, const in highp float g) { } void foo(in float f, in highp float g) { } float retM ( float x) { return x; } highp float retH (highp float x) { return x; } float retHM(highp float x) { return x; } highp float retMH( float x) { return x; } void main() { float aM, bM; highp float aH, bH; fooConst(aM, bM); // must copy bM fooConst(aH, bH); // must copy aH foo(aM, bM); foo(aH, bH); retM(aM); retH(aH); retHM(aH); retMH(aM); } glslang-16.0.0/Test/spv.precisionNonESSamp.frag000066400000000000000000000010611506534232700213400ustar00rootroot00000000000000#version 450 precision lowp sampler2D; precision lowp int; precision lowp float; uniform lowp sampler2D s; uniform highp sampler3D t; layout(rgba32f) uniform lowp image2D i1; layout(rgba32f) uniform highp image2D i2; layout(location = 0) in lowp vec2 v2; layout(location = 1) in lowp vec3 v3; layout(location = 3) flat in lowp ivec2 iv2; layout(location = 0) out lowp vec4 color; void main() { color = texture(s, v2); color = texture(t, v3); lowp vec4 vi1 = imageLoad(i1, iv2); lowp vec4 vi2 = imageLoad(i2, iv2); } glslang-16.0.0/Test/spv.precisionTexture.frag000066400000000000000000000014341506534232700212010ustar00rootroot00000000000000#version 310 es precision mediump float; precision mediump int; layout(binding = 0) uniform mediump sampler2D texM; layout(binding = 1) uniform highp sampler2D texH; layout(binding = 0, rgba32f) uniform readonly mediump image2D imageM; layout(binding = 1, rgba32f) uniform readonly highp image2D imageH; layout(location = 0) in highp vec4 vertex; layout(location = 1) flat in highp ivec2 coord; layout(location = 0) out vec4 fragColor; void main() { vec4 v; v = texture(texM, vertex.xy); v = texture(texH, vertex.xy); v = textureLod(texM, vertex.xy, vertex.z); v = textureLod(texH, vertex.xy, vertex.z); v = textureProj(texM, vertex.xyz); v = textureProj(texH, vertex.xyz); v = imageLoad(imageM, coord); v = imageLoad(imageH, coord); }glslang-16.0.0/Test/spv.prepost.frag000066400000000000000000000013531506534232700173210ustar00rootroot00000000000000#version 140 void main() { struct s { float y[5]; } str; float t; int index = 5; // all indexing is 4 str.y[4] = 2.0; // 2.0 t = ++str.y[--index]; // 3.0 str.y[4] += t; // 6.0 t = str.y[4]--; // 5.0 (t = 6.0) str.y[index++] += t; // 11.0 --str.y[--index]; // 10.0 float x = str.y[4]; ++x; --x; x++; x--; // x is 10.0 float y = x * ++x; // 10 * 11 float z = y * x--; // 110 * 11 // x is 10.0 // z is 1210.0 vec4 v = vec4(1.0, 2.0, 3.0, 4.0); v.y = v.z--; // (1,3,2,4) v.x = --v.w; // (3,3,2,3) gl_FragColor = z * v;// (3630.0, 3630.0, 2420.0, 3630.0) } glslang-16.0.0/Test/spv.privateVariableTypes.frag000066400000000000000000000006321506534232700217710ustar00rootroot00000000000000#version 460 core #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable int8_t i8; uint8_t u8; int16_t i16; uint16_t u16; int64_t i64; uint64_t u64; float16_t f16; void main() { } glslang-16.0.0/Test/spv.pushConstant.vert000066400000000000000000000004531506534232700203570ustar00rootroot00000000000000#version 400 layout(push_constant) uniform Material { int kind; float fa[3]; } matInst; out vec4 color; void main() { switch (matInst.kind) { case 1: color = vec4(0.2); break; case 2: color = vec4(0.5); break; default: color = vec4(0.0); break; } } glslang-16.0.0/Test/spv.pushConstantAnon.vert000066400000000000000000000004351506534232700211730ustar00rootroot00000000000000#version 400 layout(push_constant) uniform Material { int kind; float fa[3]; }; out vec4 color; void main() { switch (kind) { case 1: color = vec4(0.2); break; case 2: color = vec4(0.5); break; default: color = vec4(fa[1]); break; } } glslang-16.0.0/Test/spv.qcom.coopmatConversion.1.comp000066400000000000000000000154371506534232700224610ustar00rootroot00000000000000#version 450 core #pragma use_vulkan_memory_model #extension GL_KHR_shader_subgroup_basic : enable #extension GL_EXT_scalar_block_layout : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_control_flow_attributes : enable #extension GL_KHR_shader_subgroup_basic : enable #extension GL_EXT_shader_explicit_arithmetic_types_float32 : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable #extension GL_QCOM_cooperative_matrix_conversion : enable layout(set=0, binding=0) readonly buffer InputA { float x[]; } inputA; layout(set=0, binding=1) readonly buffer InputB { float x[]; } inputB; layout(set=0, binding=2) readonly buffer InputC { float x[]; } inputC; layout(set=0, binding=3) buffer Output { float x[]; } outputO; layout(local_size_x = 64, local_size_y = 2, local_size_z = 2) in; void main() { float16_t hvec8A[16]; float32_t vec8A[8]; int32_t ivec8A[8]; uint32_t uvec8A[8]; float16_t hvec32B[64]; float32_t vec32B[32]; int32_t ivec32B[32]; uint32_t uvec32B[32]; float vec64Acc[64]; int ivec64Acc[64]; uint uvec64Acc[64]; float16_t hvec8A_4[4]; // bitcastQCOM { bitcastQCOM(hvec8A, uvec8A); bitcastQCOM(uvec8A, hvec8A); bitcastQCOM(ivec8A, vec8A); bitcastQCOM( vec8A, ivec8A); bitcastQCOM(hvec32B, ivec32B); bitcastQCOM(ivec32B, hvec32B); bitcastQCOM(uvec32B, vec32B); bitcastQCOM( vec32B, uvec32B); bitcastQCOM(uvec64Acc, ivec64Acc); bitcastQCOM(ivec64Acc, uvec64Acc); bitcastQCOM(uvec64Acc, vec64Acc); bitcastQCOM( vec64Acc, uvec64Acc); } // extractSubArrayQCOM { extractSubArrayQCOM(ivec64Acc, 0, ivec8A); extractSubArrayQCOM(ivec64Acc, 8, ivec32B); extractSubArrayQCOM(uvec64Acc, 0, uvec8A); extractSubArrayQCOM(uvec64Acc, 8, uvec32B); extractSubArrayQCOM( vec64Acc, 0, vec8A); extractSubArrayQCOM( vec64Acc, 4, vec32B); extractSubArrayQCOM(hvec32B, 0, hvec8A); extractSubArrayQCOM(hvec32B, 4, hvec8A_4); } coopmat< uint8_t, gl_ScopeSubgroup, 64, 32, gl_MatrixUseA> matA_u8_64_32; coopmat< int8_t, gl_ScopeSubgroup, 64, 32, gl_MatrixUseA> matA_i8_64_32; coopmat matA_f16_64_16; coopmat matA_f32_64_8; // vectorToCoopmatQCOM gl_MatrixUseA { vectorToCoopmatQCOM( vec8A, matA_f32_64_8); vectorToCoopmatQCOM(uvec8A, matA_f32_64_8); vectorToCoopmatQCOM(hvec8A, matA_f16_64_16); vectorToCoopmatQCOM(uvec8A, matA_f16_64_16); int8_t i8vec8A[32]; vectorToCoopmatQCOM(i8vec8A, matA_i8_64_32); vectorToCoopmatQCOM( uvec8A, matA_i8_64_32); uint8_t u8vec8A[32]; vectorToCoopmatQCOM(u8vec8A, matA_u8_64_32); vectorToCoopmatQCOM( uvec8A, matA_u8_64_32); } coopmat< uint8_t, gl_ScopeSubgroup, 32, 64, gl_MatrixUseB> matB_u8_32_64; coopmat< int8_t, gl_ScopeSubgroup, 32, 64, gl_MatrixUseB> matB_i8_32_64; coopmat matB_f16_16_64; coopmat matB_f32_8_64; coopmat matB_f16_16_32; coopmat< int8_t, gl_ScopeSubgroup, 32, 16, gl_MatrixUseB> matB_i8_32_16; // vectorToCoopmatQCOM gl_MatrixUseB { vectorToCoopmatQCOM( vec8A, matB_f32_8_64); vectorToCoopmatQCOM(uvec8A, matB_f32_8_64); vectorToCoopmatQCOM(hvec8A, matB_f16_16_64); vectorToCoopmatQCOM(uvec8A, matB_f16_16_64); int8_t i8vec8B[32]; vectorToCoopmatQCOM(i8vec8B, matB_i8_32_64); vectorToCoopmatQCOM( uvec8A, matB_i8_32_64); uint8_t u8vec8B[32]; vectorToCoopmatQCOM(u8vec8B, matB_u8_32_64); vectorToCoopmatQCOM( uvec8A, matB_u8_32_64); vectorToCoopmatQCOM(hvec8A, matB_f16_16_32); vectorToCoopmatQCOM(uvec8A, matB_f16_16_32); vectorToCoopmatQCOM(i8vec8B, matB_i8_32_16); vectorToCoopmatQCOM(uvec8A, matB_i8_32_16); } coopmat< uint32_t, gl_ScopeSubgroup, 64, 64, gl_MatrixUseAccumulator> matAcc_u32_64_64; coopmat< int32_t, gl_ScopeSubgroup, 64, 64, gl_MatrixUseAccumulator> matAcc_i32_64_64; coopmat matAcc_f16_64_64; coopmat matAcc_f32_64_64; // vectorToCoopmatQCOM gl_MatrixUseAccumulator { vectorToCoopmatQCOM( vec64Acc, matAcc_f32_64_64); vectorToCoopmatQCOM(uvec64Acc, matAcc_f32_64_64); float16_t hvec64Acc[64]; vectorToCoopmatQCOM(hvec64Acc, matAcc_f16_64_64); vectorToCoopmatQCOM(uvec32B, matAcc_f16_64_64); vectorToCoopmatQCOM(ivec64Acc, matAcc_i32_64_64); vectorToCoopmatQCOM(uvec64Acc, matAcc_i32_64_64); vectorToCoopmatQCOM(uvec64Acc, matAcc_u32_64_64); } // coopmatToVectorQCOM gl_MatrixUseA { coopmatToVectorQCOM(matA_f32_64_8, vec8A); coopmatToVectorQCOM(matA_f32_64_8, uvec8A); coopmatToVectorQCOM(matA_f16_64_16, hvec8A); coopmatToVectorQCOM(matA_f16_64_16, uvec8A); int8_t i8vec8A[32]; coopmatToVectorQCOM(matA_i8_64_32, i8vec8A); coopmatToVectorQCOM(matA_i8_64_32, uvec8A); uint8_t u8vec8A[32]; coopmatToVectorQCOM(matA_u8_64_32, u8vec8A); coopmatToVectorQCOM(matA_u8_64_32, uvec8A); } // coopmatToVectorQCOM gl_MatrixUseB { coopmatToVectorQCOM(matB_f32_8_64, vec8A); coopmatToVectorQCOM(matB_f32_8_64, uvec8A); coopmatToVectorQCOM(matB_f16_16_64, hvec8A); coopmatToVectorQCOM(matB_f16_16_64, uvec8A); int8_t i8vec8B[32]; coopmatToVectorQCOM(matB_i8_32_64, i8vec8B); coopmatToVectorQCOM(matB_i8_32_64, uvec8A); uint8_t u8vec8B[32]; coopmatToVectorQCOM(matB_u8_32_64, u8vec8B); coopmatToVectorQCOM(matB_u8_32_64, uvec8A); coopmatToVectorQCOM(matB_f16_16_32, hvec8A); coopmatToVectorQCOM(matB_f16_16_32, uvec8A); coopmatToVectorQCOM(matB_i8_32_16, i8vec8B); coopmatToVectorQCOM(matB_i8_32_16, uvec8A); } // coopmatToVectorQCOM gl_MatrixUseAccumulator { coopmatToVectorQCOM(matAcc_f32_64_64, vec64Acc); coopmatToVectorQCOM(matAcc_f32_64_64, uvec64Acc); float16_t hvec64Acc[64]; coopmatToVectorQCOM(matAcc_f16_64_64, hvec64Acc); coopmatToVectorQCOM(matAcc_f16_64_64, uvec32B); coopmatToVectorQCOM(matAcc_i32_64_64, ivec64Acc); coopmatToVectorQCOM(matAcc_i32_64_64, uvec64Acc); coopmatToVectorQCOM(matAcc_u32_64_64, uvec64Acc); } } glslang-16.0.0/Test/spv.qcom.coopmatConversion.2.comp000066400000000000000000000222371506534232700224560ustar00rootroot00000000000000#version 450 core #pragma use_vulkan_memory_model #extension GL_KHR_shader_subgroup_basic : enable #extension GL_EXT_scalar_block_layout : enable #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_buffer_reference : enable #extension GL_EXT_control_flow_attributes : enable #extension GL_KHR_shader_subgroup_basic : enable #extension GL_EXT_shader_explicit_arithmetic_types_float32 : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable #extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable #extension GL_QCOM_cooperative_matrix_conversion : enable layout(constant_id = 3) const uint TILE_M = 1; layout(constant_id = 4) const uint TILE_N = 1; layout(constant_id = 5) const uint TILE_N2 = 2; layout(constant_id = 6) const uint TILE_N4 = 4; layout(constant_id = 7) const uint TILE_K = 1; layout(constant_id = 8) const uint TILE_K2 = 2; layout(constant_id = 9) const uint TILE_K4 = 4; layout(set=0, binding=0) readonly buffer InputA { float x[]; } inputA; layout(set=0, binding=1) readonly buffer InputB { float x[]; } inputB; layout(set=0, binding=2) readonly buffer InputC { float x[]; } inputC; layout(set=0, binding=3) buffer Output { float x[]; } outputO; layout(local_size_x = 64, local_size_y = 2, local_size_z = 2) in; void main() { uint32_t uvec8[8]; float vec8[8]; uint uvec64Acc[64]; { uint32_t uvecSC[TILE_K]; float f32vecSC[TILE_K]; bitcastQCOM(uvec8, f32vecSC); bitcastQCOM(uvecSC, vec8); bitcastQCOM(uvecSC, f32vecSC); uint32_t uvecSC2[TILE_K/2]; float f32vecSC2[TILE_K/2]; bitcastQCOM(uvecSC2, f32vecSC2); } // extractSubArrayQCOM { uint32_t uvecSC[TILE_K]; uint32_t uvec64AccSC[TILE_N]; extractSubArrayQCOM(uvec64Acc, 0, uvecSC); extractSubArrayQCOM(uvec64AccSC, 4, uvec8); extractSubArrayQCOM(uvec64AccSC, 8, uvecSC); uint32_t uvecSC2[TILE_K/2]; uint32_t uvec64AccSC2[TILE_N/2]; extractSubArrayQCOM(uvec64Acc, 2, uvecSC2); extractSubArrayQCOM(uvec64AccSC2, 2, uvec8); } // vectorToCoopmatQCOM gl_MatrixUseA { coopmat V2C_matA_f32_SC_M8; vectorToCoopmatQCOM(uvec8, V2C_matA_f32_SC_M8); uint32_t uvecSC_K11[TILE_K]; uint32_t uvecSC_K12[TILE_K2]; coopmat V2C_matA_f32_SC_MK; coopmat V2C_matA_f32_SC_64K; coopmat V2C_matA_f32_SC_64_8; vectorToCoopmatQCOM(uvecSC_K11, V2C_matA_f32_SC_MK); vectorToCoopmatQCOM(uvecSC_K12, V2C_matA_f32_SC_64_8); coopmat V2C_matA_f16_SC_MK; coopmat< int8_t, gl_ScopeSubgroup, 64, TILE_K4, gl_MatrixUseA> V2C_matA_i8_SC_64K; coopmat V2C_matA_u8_SC_64K; vectorToCoopmatQCOM(uvecSC_K11, V2C_matA_f16_SC_MK); vectorToCoopmatQCOM(uvecSC_K11, V2C_matA_i8_SC_64K); vectorToCoopmatQCOM(uvecSC_K11, V2C_matA_u8_SC_64K); } // vectorToCoopmatQCOM gl_MatrixUseB { coopmat V2C_matB_f32_SC_8N; vectorToCoopmatQCOM(uvec8, V2C_matB_f32_SC_8N); uint32_t uvecSC_K21[TILE_K]; uint32_t uvecSC_K22[TILE_K2]; coopmat V2C_matB_f32_SC_KN; coopmat V2C_matB_f32_SC_K64; coopmat V2C_matB_f32_SC_8_64; vectorToCoopmatQCOM(uvecSC_K21, V2C_matB_f32_SC_KN); vectorToCoopmatQCOM(uvecSC_K22, V2C_matB_f32_SC_8_64); coopmat V2C_matB_f16_SC_KN; coopmat< int8_t, gl_ScopeSubgroup, TILE_K4, 64, gl_MatrixUseB> V2C_matB_i8_SC_K64; coopmat V2C_matB_u8_SC_K64; coopmat V2C_matB_f32_SC_K32; coopmat V2C_matB_f32_SC_K16; vectorToCoopmatQCOM(uvecSC_K21, V2C_matB_f16_SC_KN); vectorToCoopmatQCOM(uvecSC_K21, V2C_matB_i8_SC_K64); vectorToCoopmatQCOM(uvecSC_K21, V2C_matB_u8_SC_K64); vectorToCoopmatQCOM(uvecSC_K21, V2C_matB_f32_SC_K32); vectorToCoopmatQCOM(uvecSC_K21, V2C_matB_f32_SC_K16); } // vectorToCoopmatQCOM gl_MatrixUseAccumulator { uint32_t uvecSC_N31[TILE_N]; uint32_t uvecSC_N32[TILE_N2]; coopmat V2C_matAcc_f32_SC_MN; coopmat V2C_matAcc_f32_SC_64N; coopmat V2C_matAcc_f32_SC_64_64; vectorToCoopmatQCOM(uvecSC_N31, V2C_matAcc_f32_SC_MN); vectorToCoopmatQCOM(uvecSC_N32, V2C_matAcc_f32_SC_64_64); coopmat V2C_matAcc_f16_SC_MN; coopmat< int32_t, gl_ScopeSubgroup, 64, TILE_N4, gl_MatrixUseAccumulator> V2C_matAcc_i32_SC_64N; coopmat V2C_matAcc_u32_SC_64N; vectorToCoopmatQCOM(uvecSC_N31, V2C_matAcc_f16_SC_MN); vectorToCoopmatQCOM(uvecSC_N31, V2C_matAcc_i32_SC_64N); vectorToCoopmatQCOM(uvecSC_N31, V2C_matAcc_u32_SC_64N); } // coopmatToVectorQCOM gl_MatrixUseA { coopmat C2V_matA_f32_SC_M8; coopmatToVectorQCOM(C2V_matA_f32_SC_M8, uvec8); uint32_t uvecSC_K11[TILE_K]; uint32_t uvecSC_K12[TILE_K2]; coopmat C2V_matA_f32_SC_MK; coopmat C2V_matA_f32_SC_64K; coopmat C2V_matA_f32_SC_64_8; coopmatToVectorQCOM(C2V_matA_f32_SC_MK, uvecSC_K11); coopmatToVectorQCOM(C2V_matA_f32_SC_64_8, uvecSC_K12); coopmat C2V_matA_f16_SC_MK; coopmat< int8_t, gl_ScopeSubgroup, 64, TILE_K4, gl_MatrixUseA> C2V_matA_i8_SC_64K; coopmat C2V_matA_u8_SC_64K; coopmatToVectorQCOM(C2V_matA_f16_SC_MK, uvecSC_K11); coopmatToVectorQCOM(C2V_matA_i8_SC_64K, uvecSC_K11); coopmatToVectorQCOM(C2V_matA_u8_SC_64K, uvecSC_K11); } // coopmatToVectorQCOM gl_MatrixUseB { coopmat C2V_matB_f32_SC_8N; coopmatToVectorQCOM(C2V_matB_f32_SC_8N, uvec8); uint32_t uvecSC_K21[TILE_K]; uint32_t uvecSC_K22[TILE_K2]; coopmat C2V_matB_f32_SC_KN; coopmat C2V_matB_f32_SC_K64; coopmat C2V_matB_f32_SC_8_64; coopmatToVectorQCOM(C2V_matB_f32_SC_KN, uvecSC_K21); coopmatToVectorQCOM(C2V_matB_f32_SC_8_64, uvecSC_K22); coopmat C2V_matB_f16_SC_KN; coopmat< int8_t, gl_ScopeSubgroup, TILE_K4, 64, gl_MatrixUseB> C2V_matB_i8_SC_K64; coopmat C2V_matB_u8_SC_K64; coopmat C2V_matB_f32_SC_K32; coopmat C2V_matB_f32_SC_K16; coopmatToVectorQCOM(C2V_matB_f16_SC_KN, uvecSC_K21); coopmatToVectorQCOM(C2V_matB_i8_SC_K64, uvecSC_K21); coopmatToVectorQCOM(C2V_matB_u8_SC_K64, uvecSC_K21); coopmatToVectorQCOM(C2V_matB_f32_SC_K32, uvecSC_K21); coopmatToVectorQCOM(C2V_matB_f32_SC_K16, uvecSC_K21); } // coopmatToVectorQCOM gl_MatrixUseAccumulator { uint32_t uvecSC_N31[TILE_N]; uint32_t uvecSC_N32[TILE_N2]; coopmat C2V_matAcc_f32_SC_MN; coopmat C2V_matAcc_f32_SC_64N; coopmat C2V_matAcc_f32_SC_64_64; coopmatToVectorQCOM(C2V_matAcc_f32_SC_MN, uvecSC_N31); coopmatToVectorQCOM(C2V_matAcc_f32_SC_64N, uvecSC_N31); coopmatToVectorQCOM(C2V_matAcc_f32_SC_64_64, uvecSC_N32); coopmat C2V_matAcc_f16_SC_MN; coopmat< int32_t, gl_ScopeSubgroup, 64, TILE_N4, gl_MatrixUseAccumulator> C2V_matAcc_i32_SC_64N; coopmat C2V_matAcc_u32_SC_64N; coopmatToVectorQCOM(C2V_matAcc_f16_SC_MN, uvecSC_N31); coopmatToVectorQCOM(C2V_matAcc_i32_SC_64N, uvecSC_N31); coopmatToVectorQCOM(C2V_matAcc_u32_SC_64N, uvecSC_N31); } } glslang-16.0.0/Test/spv.qcom.es.tileShading.0.comp000066400000000000000000000024721506534232700216040ustar00rootroot00000000000000#version 310 es #extension GL_QCOM_tile_shading : enable layout (local_size_x = 16, local_size_y = 16, local_size_z = 1) in; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D input0; layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D color0; // attachment0 layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform writeonly highp iimage2D color1; // attachment1 // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform writeonly highp uimage2D stencil; void main () { uvec2 uoffset = clamp(gl_GlobalInvocationID.xy, gl_TileOffsetQCOM, gl_TileOffsetQCOM + gl_TileDimensionQCOM.xy - uvec2(1.1)); ivec2 offset = ivec2(uoffset); // read from attachments vec4 colorA = imageLoad( color0, offset ); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = uint(2); // compute output values vec4 outColor = ( colorA + vec4(1.0f) + colorC ) * 0.33f; float outDepth = d * 2.0f; uint outStencil = s + uint(1); // write to attachments imageStore( color1, offset, ivec4(outColor) ); imageStore( stencil, offset, uvec4(outStencil) ); } glslang-16.0.0/Test/spv.qcom.es.tileShading.0.frag000066400000000000000000000026701506534232700215650ustar00rootroot00000000000000#version 310 es #extension GL_QCOM_tile_shading : enable precision highp int; precision highp float; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D input0; layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D color0; layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform writeonly highp iimage2D color1; // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform writeonly highp uimage2D stencil; layout (location=0) out vec4 fragColor; void main() { // integer coordinates of the center of tile. uvec2 o2 = uvec2(8, 4); o2 = o2 / uvec2(2); ivec2 offset = ivec2(gl_TileOffsetQCOM + (gl_TileDimensionQCOM/uvec3(2)).xy); // read from attachments vec4 colorA = imageLoad( color0, offset ); vec4 colorB = vec4(colorA); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = uint(d); // compute output value ivec4 outColor = ivec4( colorB + colorB + colorC + vec4(d) + vec4(s) ); // write to attachments imageStore( color1, offset, outColor ); imageStore( stencil, offset, uvec4(outColor) ); // write to color attachment 0 via fragment output fragColor = vec4(outColor) + vec4(1.0, 0.0, 0.0, 1.0); } glslang-16.0.0/Test/spv.qcom.es.tileShading.1.comp000066400000000000000000000026511506534232700216040ustar00rootroot00000000000000#version 310 es #extension GL_QCOM_tile_shading : enable layout (local_size_x = 16, local_size_y = 16, local_size_z = 1) in; layout (shading_rate_xQCOM = 2, shading_rate_yQCOM = 2, shading_rate_zQCOM = 1) in; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D input0; layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D color0; // attachment0 layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform writeonly highp iimage2D color1; // attachment1 // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform writeonly highp uimage2D stencil; void main () { uvec2 uoffset = clamp(gl_GlobalInvocationID.xy, gl_TileOffsetQCOM, gl_TileOffsetQCOM + gl_TileDimensionQCOM.xy - uvec2(1.1)); ivec2 offset = ivec2(uoffset); // read from attachments vec4 colorA = imageLoad( color0, offset ); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = uint(2); // compute output values vec4 outColor = ( colorA + vec4(1.0f) + colorC ) * 0.33f; float outDepth = d * 2.0f; uint outStencil = s + uint(1); // write to attachments imageStore( color1, offset, ivec4(outColor) ); imageStore( stencil, offset, uvec4(outStencil) ); } glslang-16.0.0/Test/spv.qcom.es.tileShading.1.frag000066400000000000000000000027471506534232700215730ustar00rootroot00000000000000#version 310 es #extension GL_QCOM_tile_shading : enable precision highp int; precision highp float; layout (non_coherent_attachment_readQCOM) in; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D input0; layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D color0; layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform writeonly highp iimage2D color1; // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform writeonly highp uimage2D stencil; layout (location=0) out vec4 fragColor; void main() { // integer coordinates of the center of tile. uvec2 o2 = uvec2(8, 4); o2 = o2 / uvec2(2); ivec2 offset = ivec2(gl_TileOffsetQCOM + (gl_TileDimensionQCOM/uvec3(2)).xy); // read from attachments vec4 colorA = imageLoad( color0, offset ); vec4 colorB = vec4(colorA); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = uint(d); // compute output value ivec4 outColor = ivec4( colorB + colorB + colorC + vec4(d) + vec4(s) ); // write to attachments imageStore( color1, offset, outColor ); imageStore( stencil, offset, uvec4(outColor) ); // write to color attachment 0 via fragment output fragColor = vec4(outColor) + vec4(1.0, 0.0, 0.0, 1.0); } glslang-16.0.0/Test/spv.qcom.es.tileShading.2.comp000066400000000000000000000026511506534232700216050ustar00rootroot00000000000000#version 310 es #extension GL_QCOM_tile_shading : enable layout (local_size_x = 16, local_size_y = 16, local_size_z = 1) in; layout (shading_rate_xQCOM = 2, shading_rate_yQCOM = 2, shading_rate_zQCOM = 3) in; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D input0; layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D color0; // attachment0 layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform writeonly highp iimage2D color1; // attachment1 // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform writeonly highp uimage2D stencil; void main () { uvec2 uoffset = clamp(gl_GlobalInvocationID.xy, gl_TileOffsetQCOM, gl_TileOffsetQCOM + gl_TileDimensionQCOM.xy - uvec2(1.1)); ivec2 offset = ivec2(uoffset); // read from attachments vec4 colorA = imageLoad( color0, offset ); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = uint(2); // compute output values vec4 outColor = ( colorA + vec4(1.0f) + colorC ) * 0.33f; float outDepth = d * 2.0f; uint outStencil = s + uint(1); // write to attachments imageStore( color1, offset, ivec4(outColor) ); imageStore( stencil, offset, uvec4(outStencil) ); } glslang-16.0.0/Test/spv.qcom.tileShading.0.comp000066400000000000000000000026441506534232700211770ustar00rootroot00000000000000#version 460 #extension GL_QCOM_tile_shading : enable layout (local_size_x = 16, local_size_y = 16, local_size_z = 1) in; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform highp image2D input0; // tile color attachments (new syntax) layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform highp image2D color0; // attachment0 layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform highp iimage2D color1; // attachment1 // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform highp uimage2D stencil; void main () { uvec2 uoffset = clamp(gl_GlobalInvocationID.xy, gl_TileOffsetQCOM, gl_TileOffsetQCOM + gl_TileDimensionQCOM.xy - uvec2(1.1)); ivec2 offset = ivec2(uoffset); // read from attachments vec4 colorA = imageLoad( color0, offset ); ivec4 icolorB = imageLoad( color1, offset ); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = imageLoad( stencil, offset ).x; // compute output values vec4 outColor = ( colorA + vec4(icolorB) + colorC ) * 0.33f; float outDepth = d * 2.0f; uint outStencil = s + uint(1); // write to attachments imageStore( color0, offset, outColor ); imageStore( depth, offset, vec4(outDepth) ); imageStore( stencil, offset, uvec4(outStencil) ); } glslang-16.0.0/Test/spv.qcom.tileShading.0.frag000066400000000000000000000027671506534232700211660ustar00rootroot00000000000000#version 460 #extension GL_QCOM_tile_shading : enable precision highp int; precision highp float; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform highp image2D input0; layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform highp image2D color0; layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform highp iimage2D color1; // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform highp uimage2D stencil; layout (location=0) out vec4 fragColor; void main() { // integer coordinates of the center of tile. uvec2 o2 = uvec2(8, 4); o2 = o2 / uvec2(2); ivec2 offset = ivec2(gl_TileOffsetQCOM + (gl_TileDimensionQCOM/uvec3(2)).xy); // read from attachments vec4 colorA = imageLoad( color0, offset ); ivec4 icolorB = imageLoad( color1, offset ); vec4 colorB = vec4(icolorB); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = imageLoad( stencil, offset ).x; // compute output value vec4 outColor = ( colorB + colorB + colorC + d + s ); // write to attachments imageStore( color0, offset, outColor ); imageStore( depth, offset, vec4(outColor) ); imageStore( stencil, offset, uvec4(outColor) ); // write to color attachment 0 via fragment output fragColor = outColor + vec4(1.0, 0.0, 0.0, 1.0); } glslang-16.0.0/Test/spv.qcom.tileShading.1.comp000066400000000000000000000027701506534232700212000ustar00rootroot00000000000000#version 460 #extension GL_QCOM_tile_shading : enable layout (local_size_x = 16, local_size_y = 16, local_size_z = 1) in; layout (shading_rate_xQCOM = 2, shading_rate_yQCOM = 2, shading_rate_zQCOM = 3) in; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform highp image2D input0; // tile color attachments (new syntax) layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform highp image2D color0; // attachment0 layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform highp iimage2D color1; // attachment1 // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform highp uimage2D stencil; void main () { uvec2 uoffset = clamp(gl_GlobalInvocationID.xy, gl_TileOffsetQCOM, gl_TileOffsetQCOM + gl_TileDimensionQCOM.xy - uvec2(1.1)); ivec2 offset = ivec2(uoffset); // read from attachments vec4 colorA = imageLoad( color0, offset ); ivec4 icolorB = imageLoad( color1, offset ); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = imageLoad( stencil, offset ).x; // compute output values vec4 outColor = ( colorA + vec4(icolorB) + colorC ) * 0.33f; float outDepth = d * 2.0f; uint outStencil = s + uint(1); // write to attachments imageStore( color0, offset, outColor ); imageStore( depth, offset, vec4(outDepth) ); imageStore( stencil, offset, uvec4(outStencil) ); } glslang-16.0.0/Test/spv.qcom.tileShading.1.frag000066400000000000000000000030461506534232700211560ustar00rootroot00000000000000#version 460 #extension GL_QCOM_tile_shading : enable precision highp int; precision highp float; layout (non_coherent_attachment_readQCOM) in; layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform highp image2D input0; layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform highp image2D color0; layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform highp iimage2D color1; // depth/stencil attachments layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform highp image2D depth; layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform highp uimage2D stencil; layout (location=0) out vec4 fragColor; void main() { // integer coordinates of the center of tile. uvec2 o2 = uvec2(8, 4); o2 = o2 / uvec2(2); ivec2 offset = ivec2(gl_TileOffsetQCOM + (gl_TileDimensionQCOM/uvec3(2)).xy); // read from attachments vec4 colorA = imageLoad( color0, offset ); ivec4 icolorB = imageLoad( color1, offset ); vec4 colorB = vec4(icolorB); vec4 colorC = imageLoad( input0, offset ); float d = imageLoad( depth, offset ).x; uint s = imageLoad( stencil, offset ).x; // compute output value vec4 outColor = ( colorB + colorB + colorC + d + s ); // write to attachments imageStore( color0, offset, outColor ); imageStore( depth, offset, vec4(outColor) ); imageStore( stencil, offset, uvec4(outColor) ); // write to color attachment 0 via fragment output fragColor = outColor + vec4(1.0, 0.0, 0.0, 1.0); } glslang-16.0.0/Test/spv.qualifiers.vert000066400000000000000000000004471506534232700200350ustar00rootroot00000000000000#version 430 core in vec4 inV; centroid out vec4 outVc; smooth out vec4 outVs; flat out vec4 outVf; noperspective out vec4 outVn; centroid noperspective out vec4 outVcn; void main() { outVc = inV; outVs = inV; outVf = inV; outVn = inV; outVcn = inV; } glslang-16.0.0/Test/spv.queryL.frag000066400000000000000000000036541506534232700171140ustar00rootroot00000000000000#version 430 core uniform sampler1D samp1D; uniform isampler2D isamp2D; uniform usampler2D usamp2D; uniform isampler3D isamp3D; uniform usampler3D usamp3D; uniform samplerCube sampCube; uniform isamplerCube isampCube; uniform isampler1DArray isamp1DA; uniform sampler2DArray samp2DA; uniform usampler2DArray usamp2DA; uniform isamplerCubeArray isampCubeA; uniform usamplerCubeArray usampCubeA; uniform sampler1DShadow samp1Ds; uniform sampler2DShadow samp2Ds; uniform samplerCubeShadow sampCubes; uniform sampler1DArrayShadow samp1DAs; uniform sampler2DArrayShadow samp2DAs; uniform samplerCubeArrayShadow sampCubeAs; uniform samplerBuffer sampBuf; uniform sampler2DRect sampRect; void main() { vec2 lod; float pf; vec2 pf2; vec3 pf3; lod = textureQueryLod(samp1D, pf); lod += textureQueryLod(isamp2D, pf2); lod += textureQueryLod(usamp3D, pf3); lod += textureQueryLod(sampCube, pf3); lod += textureQueryLod(isamp1DA, pf); lod += textureQueryLod(usamp2DA, pf2); lod += textureQueryLod(isampCubeA, pf3); lod += textureQueryLod(samp1Ds, pf); lod += textureQueryLod(samp2Ds, pf2); lod += textureQueryLod(sampCubes, pf3); lod += textureQueryLod(samp1DAs, pf); lod += textureQueryLod(samp2DAs, pf2); lod += textureQueryLod(sampCubeAs, pf3); int levels; levels = textureQueryLevels(samp1D); levels += textureQueryLevels(usamp2D); levels += textureQueryLevels(isamp3D); levels += textureQueryLevels(isampCube); levels += textureQueryLevels(isamp1DA); levels += textureQueryLevels(samp2DA); levels += textureQueryLevels(usampCubeA); levels = textureQueryLevels(samp1Ds); levels += textureQueryLevels(samp2Ds); levels += textureQueryLevels(sampCubes); levels += textureQueryLevels(samp1DAs); levels += textureQueryLevels(samp2DAs); levels += textureQueryLevels(sampCubeAs); } glslang-16.0.0/Test/spv.queueFamilyScope.comp000066400000000000000000000003511506534232700211210ustar00rootroot00000000000000#version 450 #extension GL_KHR_memory_scope_semantics : require layout (binding = 0) buffer Buffer { uint a; } A; void main() { atomicLoad(A.a, gl_ScopeQueueFamily, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); } glslang-16.0.0/Test/spv.rankShift.comp000066400000000000000000000004601506534232700175730ustar00rootroot00000000000000#version 450 #extension GL_ARB_gpu_shader_int64 : require layout(local_size_x = 54) in; layout(location=4) uniform int64_t arg0; layout(location=5) uniform uint arg1; void main() { uint64_t result = arg0 << arg1; result = arg0 >> arg1; result <<= arg1; result >>= arg1; }glslang-16.0.0/Test/spv.register.autoassign-2.frag000066400000000000000000000004501506534232700217610ustar00rootroot00000000000000 SamplerState g_tSamp : register(s0); Texture2D g_tScene[2] : register(t0); struct PS_OUTPUT { float4 Color : SV_Target0; }; void main(out PS_OUTPUT psout) { psout.Color = g_tScene[0].Sample(g_tSamp, float2(0.3,0.4)) + g_tScene[1].Sample(g_tSamp, float2(0.3,0.4)); } glslang-16.0.0/Test/spv.register.autoassign.frag000066400000000000000000000031121506534232700216200ustar00rootroot00000000000000 SamplerState g_sSamp1 : register(s0); SamplerState g_sSamp2; SamplerState g_sSamp3[2] : register(s2); SamplerState g_sSamp4[3]; SamplerState g_sSamp5; SamplerState g_sSamp_unused1; SamplerState g_sSamp_unused2; Texture1D g_tTex1 : register(t1); const uniform Texture1D g_tTex2; Texture1D g_tTex3[2] : register(t3); Texture1D g_tTex4[3]; Texture1D g_tTex5; Texture1D g_tTex_unused1 : register(t0); Texture1D g_tTex_unused2 : register(t2); Texture1D g_tTex_unused3; struct MyStruct_t { int a; float b; float3 c; }; uniform MyStruct_t mystruct : register(b4); struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform float4 myfloat4_a; uniform float4 myfloat4_b; uniform int4 myint4_a; float4 Func1() { return g_tTex1 . Sample(g_sSamp1, 0.1) + g_tTex2 . Sample(g_sSamp2, 0.2) + g_tTex3[0] . Sample(g_sSamp3[0], 0.3) + g_tTex3[1] . Sample(g_sSamp3[1], 0.3) + g_tTex4[1] . Sample(g_sSamp4[1], 0.4) + g_tTex4[2] . Sample(g_sSamp4[2], 0.4) + g_tTex5 . Sample(g_sSamp5, 0.5) + mystruct.c[1]; } float4 Func2() { return g_tTex1 . Sample(g_sSamp1, 0.1) + g_tTex3[1] . Sample(g_sSamp3[1], 0.3); } // Not called from entry point: float4 Func2_unused() { return g_tTex_unused1 . Sample(g_sSamp_unused1, 1.1) + g_tTex_unused2 . Sample(g_sSamp_unused2, 1.2); } PS_OUTPUT main_ep() { PS_OUTPUT psout; psout.Color = Func1() + Func2(); return psout; } glslang-16.0.0/Test/spv.register.autoassign.rangetest.frag000066400000000000000000000004521506534232700236170ustar00rootroot00000000000000 SamplerState g_tSamp : register(s5); Texture2D g_tScene[2] : register(t5); struct PS_OUTPUT { float4 Color : SV_Target0; }; void main(out PS_OUTPUT psout) { psout.Color = g_tScene[0].Sample(g_tSamp, float2(0.3, 0.3)) + g_tScene[1].Sample(g_tSamp, float2(0.3, 0.3)); } glslang-16.0.0/Test/spv.register.noautoassign.frag000066400000000000000000000031121506534232700221550ustar00rootroot00000000000000 SamplerState g_sSamp1 : register(s0); SamplerState g_sSamp2; SamplerState g_sSamp3[2] : register(s2); SamplerState g_sSamp4[3]; SamplerState g_sSamp5; SamplerState g_sSamp_unused1; SamplerState g_sSamp_unused2; Texture1D g_tTex1 : register(t1); const uniform Texture1D g_tTex2; Texture1D g_tTex3[2] : register(t3); Texture1D g_tTex4[3]; Texture1D g_tTex5; Texture1D g_tTex_unused1 : register(t0); Texture1D g_tTex_unused2 : register(t2); Texture1D g_tTex_unused3; struct MyStruct_t { int a; float b; float3 c; }; uniform MyStruct_t mystruct : register(b4); struct PS_OUTPUT { float4 Color : SV_Target0; }; uniform float4 myfloat4_a; uniform float4 myfloat4_b; uniform int4 myint4_a; float4 Func1() { return g_tTex1 . Sample(g_sSamp1, 0.1) + g_tTex2 . Sample(g_sSamp2, 0.2) + g_tTex3[0] . Sample(g_sSamp3[0], 0.3) + g_tTex3[1] . Sample(g_sSamp3[1], 0.3) + g_tTex4[1] . Sample(g_sSamp4[1], 0.4) + g_tTex4[2] . Sample(g_sSamp4[2], 0.4) + g_tTex5 . Sample(g_sSamp5, 0.5) + mystruct.c[1]; } float4 Func2() { return g_tTex1 . Sample(g_sSamp1, 0.1) + g_tTex3[1] . Sample(g_sSamp3[1], 0.3); } // Not called from entry point: float4 Func2_unused() { return g_tTex_unused1 . Sample(g_sSamp_unused1, 1.1) + g_tTex_unused2 . Sample(g_sSamp_unused2, 1.2); } PS_OUTPUT main_ep() { PS_OUTPUT psout; psout.Color = Func1() + Func2(); return psout; } glslang-16.0.0/Test/spv.register.subpass.frag000066400000000000000000000007351506534232700211330ustar00rootroot00000000000000 // Test binding autoassignment and offset for SubpassInput objects layout(input_attachment_index = 1) SubpassInput subpass_f4 : register(t1); layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f4; [[vk::input_attachment_index(7)]] SubpassInput subpass_2; float4 main() : SV_Target0 { float4 result00 = subpass_f4.SubpassLoad(); float4 result10 = subpass_ms_f4.SubpassLoad(3); float4 result73 = subpass_2.SubpassLoad(); return 0; } glslang-16.0.0/Test/spv.replicate.comp000066400000000000000000000022351506534232700176140ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_spec_constant_composites : enable #pragma use_replicated_composites layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in; const int csix = 6; struct S { int a; int b; int c; }; struct SS { S s1; S s2; }; const S cs = S(csix, csix, csix); const SS css = SS(cs, cs); const float spec_float = 3; const vec4 cv = vec4(spec_float); const mat4 cm = mat4(cv,cv,cv,cv); const int cfive = 5; const int carr[3] = {cfive, cfive, cfive}; const int carr2[3][3] = {carr, carr, carr}; const coopmat ccoop = coopmat(spec_float); void main() { coopmat coop = coopmat(1.0); float a = 2.0; vec4 v = vec4(a); v = cv; mat4 m = mat4(v,v,v,v); int five = 5; int six = 6; int arr[3] = {five, five, five}; int arr2[3][3] = {arr, arr, arr}; arr2 = carr2; S s2 = S(six, six, six); SS ss = SS(s2, s2); } glslang-16.0.0/Test/spv.replicatespec.comp000066400000000000000000000023451506534232700204710ustar00rootroot00000000000000#version 450 core #extension GL_KHR_memory_scope_semantics : enable #extension GL_KHR_cooperative_matrix : enable #extension GL_EXT_spec_constant_composites : enable #pragma use_replicated_composites layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in; layout(constant_id = 1) const int csix = 6; struct S { int a; int b; int c; }; struct SS { S s1; S s2; }; const S cs = S(csix, csix, csix); const SS css = SS(cs, cs); layout(constant_id = 2) const float spec_float = 3; const vec4 cv = vec4(spec_float); const mat4 cm = mat4(cv,cv,cv,cv); layout(constant_id = 0) const int cfive = 5; const int carr[3] = {cfive, cfive, cfive}; const int carr2[3][3] = {carr, carr, carr}; const coopmat ccoop = coopmat(spec_float); void main() { coopmat coop = coopmat(1.0); float a = 2.0; vec4 v = vec4(a); v = cv; mat4 m = mat4(v,v,v,v); int five = 5; int six = 6; int arr[3] = {five, five, five}; int arr2[3][3] = {arr, arr, arr}; arr2 = carr2; S s2 = S(six, six, six); SS ss = SS(s2, s2); } glslang-16.0.0/Test/spv.rw.autoassign.frag000066400000000000000000000004101506534232700204220ustar00rootroot00000000000000 RWTexture1D g_tTex1df1; RWBuffer g_tBuf1du1; struct PS_OUTPUT { float4 Color : SV_Target0; }; PS_OUTPUT main() { float r00 = g_tTex1df1[0]; uint r01 = g_tBuf1du1[0]; PS_OUTPUT psout; psout.Color = 0; return psout; } glslang-16.0.0/Test/spv.sample.frag000066400000000000000000000001771506534232700171110ustar00rootroot00000000000000#version 450 layout(location = 0) in sample vec4 samp; layout(location = 0) out vec4 color; void main() { color = samp; }glslang-16.0.0/Test/spv.sampleId.frag000066400000000000000000000002701506534232700173600ustar00rootroot00000000000000#version 450 layout(location = 0) in vec4 samp; layout(location = 0) out vec4 color; void main() { if (gl_SampleID < 3) color = samp; else color = 2 * samp; }glslang-16.0.0/Test/spv.sampleMaskOverrideCoverage.frag000066400000000000000000000002761506534232700231010ustar00rootroot00000000000000#version 450 #extension GL_NV_sample_mask_override_coverage : enable in vec4 color; layout(override_coverage) out int gl_SampleMask[]; void main() { gl_SampleMask[0] = int(0xFFFFFFFF); }glslang-16.0.0/Test/spv.samplePosition.frag000066400000000000000000000003021506534232700206240ustar00rootroot00000000000000#version 450 layout(location = 0) in vec4 samp; layout(location = 0) out vec4 color; void main() { if (gl_SamplePosition.y < 0.5) color = samp; else color = 2 * samp; }glslang-16.0.0/Test/spv.sampledImageBlock.frag000066400000000000000000000007621506534232700211730ustar00rootroot00000000000000#version 450 layout(set = 0, binding = 0) uniform texture2D tex0; layout(set = 0, binding = 1) uniform sampler samp0; layout(set = 0, binding = 2) uniform ParamBuffer { int cond; } paramBuffer; layout(location = 0) out vec4 fragColor; layout(location = 0) in flat ivec2 texCoord; void main() { // get input const vec4 texel = texelFetch(sampler2D(tex0, samp0), paramBuffer.cond == 0 ? texCoord.xy : texCoord.yx, 0); fragColor = vec4(texel.xyz, 1.0); } glslang-16.0.0/Test/spv.samplerlessTextureFunctions.frag000066400000000000000000000012621506534232700234300ustar00rootroot00000000000000#version 450 core #extension GL_EXT_samplerless_texture_functions : enable layout(binding = 1) uniform texture2D tex2D; layout(binding = 1) uniform texture2DMS texMS; layout(binding = 0) uniform textureBuffer buf; void main() { vec4 tex2DFetch = texelFetch(tex2D, ivec2(0, 0), 0); vec4 texMSFetch = texelFetch(texMS, ivec2(0, 0), 0); vec4 bufFetch = texelFetch(buf, 0); vec4 tex2DFetchOffset = texelFetchOffset(tex2D, ivec2(0, 0), 0, ivec2(0, 0)); ivec2 tex2DSize = textureSize(tex2D, 0); ivec2 texMSSize = textureSize(texMS); int bufSize = textureSize(buf); int tex2DLevels = textureQueryLevels(tex2D); int texMSSamples = textureSamples(texMS); } glslang-16.0.0/Test/spv.scalarlayout.frag000066400000000000000000000016531506534232700203330ustar00rootroot00000000000000#version 450 core #extension GL_EXT_scalar_block_layout : enable // Block memory layout struct S { float a; // offset 0 vec2 b; // offset 4 double c; // offset 16 float d; // offset 24 vec3 e; // offset 28 float f; // offset 40 // size = 44, align = 8 }; layout(column_major, scalar) uniform B1 { float a; // offset = 0 vec2 b; // offset = 4 vec3 c; // offset = 12 float d[2]; // offset = 24 mat2x3 e; // offset = 32, takes 24 bytes, matrixstride = 12 mat2x3 f[2]; // offset = 56, takes 48 bytes, matrixstride = 12, arraystride = 24 float g; // offset = 104 S h; // offset = 112 (aligned to multiple of 8) S i[2]; // offset = 160 (aligned to multiple of 8) stride = 48 }; layout (std430) uniform; void main() { } glslang-16.0.0/Test/spv.scalarlayoutfloat16.frag000066400000000000000000000015251506534232700215260ustar00rootroot00000000000000#version 450 core #extension GL_EXT_shader_16bit_storage: enable #extension GL_EXT_scalar_block_layout : enable // Block memory layout struct S { float16_t a; // offset 0 f16vec2 b; // offset 2 double c; // offset 8 float16_t d; // offset 16 f16vec3 e; // offset 18 float16_t f; // offset 24 // size = 26, align = 8 }; layout(column_major, scalar) uniform B1 { float16_t a; // offset = 0 f16vec2 b; // offset = 2 f16vec3 c; // offset = 6 float16_t d[2]; // offset = 12 stride = 2 float16_t g; // offset = 16 S h; // offset = 24 (aligned to multiple of 8) S i[2]; // offset = 56 (aligned to multiple of 8) stride = 32 }; void main() { } glslang-16.0.0/Test/spv.separate.frag000066400000000000000000000070441506534232700174340ustar00rootroot00000000000000#version 400 uniform sampler s; uniform samplerShadow sShadow; uniform sampler sA[4]; uniform texture2D t2d; uniform texture3D t3d[4]; flat in int i; out vec4 color; void main() { color = texture(sampler2D(t2d, s), vec2(0.5)); color += texture(sampler3D(t3d[i], sA[2]), vec3(0.5)); color += texture(sampler2D(t2d, s), vec2(0.5)); } uniform texture2D tex2D; uniform textureCube texCube; uniform textureCubeArray texCubeArray; uniform itextureCubeArray itexCubeArray; uniform utextureCubeArray utexCubeArray; uniform itexture1DArray itex1DArray; uniform utexture1D utex1D; uniform itexture1D itex1D; uniform utexture1DArray utex1DArray; uniform textureBuffer texBuffer; uniform texture2DArray tex2DArray; uniform itexture2D itex2D; uniform itexture3D itex3D; uniform itextureCube itexCube; uniform itexture2DArray itex2DArray; uniform utexture2D utex2D; uniform utexture3D utex3D; uniform utextureCube utexCube; uniform utexture2DArray utex2DArray; uniform itexture2DRect itex2DRect; uniform utexture2DRect utex2DRect; uniform itextureBuffer itexBuffer; uniform utextureBuffer utexBuffer; uniform texture2DMS tex2DMS; uniform itexture2DMS itex2DMS; uniform utexture2DMS utex2DMS; uniform texture2DMSArray tex2DMSArray; uniform itexture2DMSArray itex2DMSArray; uniform utexture2DMSArray utex2DMSArray; uniform texture1D tex1D; uniform texture3D tex3D; uniform texture2DRect tex2DRect; uniform texture1DArray tex1DArray; void foo() { sampler2D (tex2D, s); samplerCube (texCube, s); samplerCubeArray (texCubeArray, s); samplerCubeArrayShadow (texCubeArray, sShadow); isamplerCubeArray (itexCubeArray, s); usamplerCubeArray (utexCubeArray, s); sampler1DArrayShadow (tex1DArray, sShadow); isampler1DArray (itex1DArray, s); usampler1D (utex1D, s); isampler1D (itex1D, s); usampler1DArray (utex1DArray, s); samplerBuffer (texBuffer, s); samplerCubeShadow (texCube, sShadow); sampler2DArray (tex2DArray, s); sampler2DArrayShadow (tex2DArray, sShadow); isampler2D (itex2D, s); isampler3D (itex3D, s); isamplerCube (itexCube, s); isampler2DArray (itex2DArray, s); usampler2D (utex2D, s); usampler3D (utex3D, s); usamplerCube (utexCube, s); usampler2DArray (utex2DArray, s); isampler2DRect (itex2DRect, s); usampler2DRect (utex2DRect, s); isamplerBuffer (itexBuffer, s); usamplerBuffer (utexBuffer, s); sampler2DMS (tex2DMS, s); isampler2DMS (itex2DMS, s); usampler2DMS (utex2DMS, s); sampler2DMSArray (tex2DMSArray, s); isampler2DMSArray (itex2DMSArray, s); usampler2DMSArray (utex2DMSArray, s); sampler1D (tex1D, s); sampler1DShadow (tex1D, sShadow); sampler3D (tex3D, s); sampler2DShadow (tex2D, sShadow); sampler2DRect (tex2DRect, s); sampler2DRectShadow (tex2DRect, sShadow); sampler1DArray (tex1DArray, s); } glslang-16.0.0/Test/spv.set.vert000066400000000000000000000003371506534232700164620ustar00rootroot00000000000000#version 450 layout(set = 4, binding = 7) uniform sampler2D samp2D; layout(set = 0, binding = 8) buffer setBuf { vec4 color; } setBufInst; out vec4 color; void main() { color = setBufInst.color; } glslang-16.0.0/Test/spv.shaderBallot.comp000066400000000000000000000050001506534232700202410ustar00rootroot00000000000000#version 450 #extension GL_ARB_gpu_shader_int64: enable #extension GL_ARB_shader_ballot: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; } data[4]; void main() { uint invocation = (gl_SubGroupInvocationARB + gl_SubGroupSizeARB) % 4; uint64_t relMask = gl_SubGroupEqMaskARB + gl_SubGroupGeMaskARB + gl_SubGroupGtMaskARB + gl_SubGroupLeMaskARB + gl_SubGroupLtMaskARB; if (relMask == ballotARB(true)) { data[invocation].f4.x = readInvocationARB(data[0].f4.x, invocation); data[invocation].f4.xy = readInvocationARB(data[1].f4.xy, invocation); data[invocation].f4.xyz = readInvocationARB(data[2].f4.xyz, invocation); data[invocation].f4 = readInvocationARB(data[3].f4, invocation); data[invocation].i4.x = readInvocationARB(data[0].i4.x, invocation); data[invocation].i4.xy = readInvocationARB(data[1].i4.xy, invocation); data[invocation].i4.xyz = readInvocationARB(data[2].i4.xyz, invocation); data[invocation].i4 = readInvocationARB(data[3].i4, invocation); data[invocation].u4.x = readInvocationARB(data[0].u4.x, invocation); data[invocation].u4.xy = readInvocationARB(data[1].u4.xy, invocation); data[invocation].u4.xyz = readInvocationARB(data[2].u4.xyz, invocation); data[invocation].u4 = readInvocationARB(data[3].u4, invocation); } else { data[invocation].f4.x = readFirstInvocationARB(data[0].f4.x); data[invocation].f4.xy = readFirstInvocationARB(data[1].f4.xy); data[invocation].f4.xyz = readFirstInvocationARB(data[2].f4.xyz); data[invocation].f4 = readFirstInvocationARB(data[3].f4); data[invocation].i4.x = readFirstInvocationARB(data[0].i4.x); data[invocation].i4.xy = readFirstInvocationARB(data[1].i4.xy); data[invocation].i4.xyz = readFirstInvocationARB(data[2].i4.xyz); data[invocation].i4 = readFirstInvocationARB(data[3].i4); data[invocation].u4.x = readFirstInvocationARB(data[0].u4.x); data[invocation].u4.xy = readFirstInvocationARB(data[1].u4.xy); data[invocation].u4.xyz = readFirstInvocationARB(data[2].u4.xyz); data[invocation].u4 = readFirstInvocationARB(data[3].u4); } }glslang-16.0.0/Test/spv.shaderBallotAMD.comp000066400000000000000000000205231506534232700205720ustar00rootroot00000000000000#version 450 #extension GL_ARB_gpu_shader_int64: enable #extension GL_AMD_gpu_shader_half_float: enable #extension GL_AMD_gpu_shader_int16: enable #extension GL_AMD_shader_ballot: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { int i; uvec2 uv; vec3 fv; dvec4 dv; int64_t i64; u64vec2 u64v; f16vec3 f16v; i16vec4 i16v; uint16_t u16; }; void main() { i = minInvocationsAMD(i); uv = minInvocationsAMD(uv); fv = minInvocationsAMD(fv); dv = minInvocationsAMD(dv); i64 = minInvocationsAMD(i64); u64v = minInvocationsAMD(u64v); f16v = minInvocationsAMD(f16v); i16v = minInvocationsAMD(i16v); u16 = minInvocationsAMD(u16); i = maxInvocationsAMD(i); uv = maxInvocationsAMD(uv); fv = maxInvocationsAMD(fv); dv = maxInvocationsAMD(dv); i64 = maxInvocationsAMD(i64); u64v = maxInvocationsAMD(u64v); f16v = maxInvocationsAMD(f16v); i16v = maxInvocationsAMD(i16v); u16 = maxInvocationsAMD(u16); i = addInvocationsAMD(i); uv = addInvocationsAMD(uv); fv = addInvocationsAMD(fv); dv = addInvocationsAMD(dv); i64 = addInvocationsAMD(i64); u64v = addInvocationsAMD(u64v); f16v = addInvocationsAMD(f16v); i16v = addInvocationsAMD(i16v); u16 = addInvocationsAMD(u16); i = minInvocationsNonUniformAMD(i); uv = minInvocationsNonUniformAMD(uv); fv = minInvocationsNonUniformAMD(fv); dv = minInvocationsNonUniformAMD(dv); i64 = minInvocationsNonUniformAMD(i64); u64v = minInvocationsNonUniformAMD(u64v); f16v = minInvocationsNonUniformAMD(f16v); i16v = minInvocationsNonUniformAMD(i16v); u16 = minInvocationsNonUniformAMD(u16); i = maxInvocationsNonUniformAMD(i); uv = maxInvocationsNonUniformAMD(uv); fv = maxInvocationsNonUniformAMD(fv); dv = maxInvocationsNonUniformAMD(dv); i64 = maxInvocationsNonUniformAMD(i64); u64v = maxInvocationsNonUniformAMD(u64v); f16v = maxInvocationsNonUniformAMD(f16v); i16v = maxInvocationsNonUniformAMD(i16v); u16 = maxInvocationsNonUniformAMD(u16); i = addInvocationsNonUniformAMD(i); uv = addInvocationsNonUniformAMD(uv); fv = addInvocationsNonUniformAMD(fv); dv = addInvocationsNonUniformAMD(dv); i64 = addInvocationsNonUniformAMD(i64); u64v = addInvocationsNonUniformAMD(u64v); f16v = addInvocationsNonUniformAMD(f16v); i16v = addInvocationsNonUniformAMD(i16v); u16 = addInvocationsNonUniformAMD(u16); i = minInvocationsInclusiveScanAMD(i); uv = minInvocationsInclusiveScanAMD(uv); fv = minInvocationsInclusiveScanAMD(fv); dv = minInvocationsInclusiveScanAMD(dv); i64 = minInvocationsInclusiveScanAMD(i64); u64v = minInvocationsInclusiveScanAMD(u64v); f16v = minInvocationsInclusiveScanAMD(f16v); i16v = minInvocationsInclusiveScanAMD(i16v); u16 = minInvocationsInclusiveScanAMD(u16); i = maxInvocationsInclusiveScanAMD(i); uv = maxInvocationsInclusiveScanAMD(uv); fv = maxInvocationsInclusiveScanAMD(fv); dv = maxInvocationsInclusiveScanAMD(dv); i64 = maxInvocationsInclusiveScanAMD(i64); u64v = maxInvocationsInclusiveScanAMD(u64v); f16v = maxInvocationsInclusiveScanAMD(f16v); i16v = maxInvocationsInclusiveScanAMD(i16v); u16 = maxInvocationsInclusiveScanAMD(u16); i = addInvocationsInclusiveScanAMD(i); uv = addInvocationsInclusiveScanAMD(uv); fv = addInvocationsInclusiveScanAMD(fv); dv = addInvocationsInclusiveScanAMD(dv); i64 = addInvocationsInclusiveScanAMD(i64); u64v = addInvocationsInclusiveScanAMD(u64v); f16v = addInvocationsInclusiveScanAMD(f16v); i16v = addInvocationsInclusiveScanAMD(i16v); u16 = addInvocationsInclusiveScanAMD(u16); i = minInvocationsExclusiveScanAMD(i); uv = minInvocationsExclusiveScanAMD(uv); fv = minInvocationsExclusiveScanAMD(fv); dv = minInvocationsExclusiveScanAMD(dv); i64 = minInvocationsExclusiveScanAMD(i64); u64v = minInvocationsExclusiveScanAMD(u64v); f16v = minInvocationsExclusiveScanAMD(f16v); i16v = minInvocationsExclusiveScanAMD(i16v); u16 = minInvocationsExclusiveScanAMD(u16); i = maxInvocationsExclusiveScanAMD(i); uv = maxInvocationsExclusiveScanAMD(uv); fv = maxInvocationsExclusiveScanAMD(fv); dv = maxInvocationsExclusiveScanAMD(dv); i64 = maxInvocationsExclusiveScanAMD(i64); u64v = maxInvocationsExclusiveScanAMD(u64v); f16v = maxInvocationsExclusiveScanAMD(f16v); i16v = maxInvocationsExclusiveScanAMD(i16v); u16 = maxInvocationsExclusiveScanAMD(u16); i = addInvocationsExclusiveScanAMD(i); uv = addInvocationsExclusiveScanAMD(uv); fv = addInvocationsExclusiveScanAMD(fv); dv = addInvocationsExclusiveScanAMD(dv); i64 = addInvocationsExclusiveScanAMD(i64); u64v = addInvocationsExclusiveScanAMD(u64v); f16v = addInvocationsExclusiveScanAMD(f16v); i16v = addInvocationsExclusiveScanAMD(i16v); u16 = addInvocationsExclusiveScanAMD(u16); i = minInvocationsInclusiveScanNonUniformAMD(i); uv = minInvocationsInclusiveScanNonUniformAMD(uv); fv = minInvocationsInclusiveScanNonUniformAMD(fv); dv = minInvocationsInclusiveScanNonUniformAMD(dv); i64 = minInvocationsInclusiveScanNonUniformAMD(i64); u64v = minInvocationsInclusiveScanNonUniformAMD(u64v); f16v = minInvocationsInclusiveScanNonUniformAMD(f16v); i16v = minInvocationsInclusiveScanNonUniformAMD(i16v); u16 = minInvocationsInclusiveScanNonUniformAMD(u16); i = maxInvocationsInclusiveScanNonUniformAMD(i); uv = maxInvocationsInclusiveScanNonUniformAMD(uv); fv = maxInvocationsInclusiveScanNonUniformAMD(fv); dv = maxInvocationsInclusiveScanNonUniformAMD(dv); i64 = maxInvocationsInclusiveScanNonUniformAMD(i64); u64v = maxInvocationsInclusiveScanNonUniformAMD(u64v); f16v = maxInvocationsInclusiveScanNonUniformAMD(f16v); i16v = maxInvocationsInclusiveScanNonUniformAMD(i16v); u16 = maxInvocationsInclusiveScanNonUniformAMD(u16); i = addInvocationsInclusiveScanNonUniformAMD(i); uv = addInvocationsInclusiveScanNonUniformAMD(uv); fv = addInvocationsInclusiveScanNonUniformAMD(fv); dv = addInvocationsInclusiveScanNonUniformAMD(dv); i64 = addInvocationsInclusiveScanNonUniformAMD(i64); u64v = addInvocationsInclusiveScanNonUniformAMD(u64v); f16v = addInvocationsInclusiveScanNonUniformAMD(f16v); i16v = addInvocationsInclusiveScanNonUniformAMD(i16v); u16 = addInvocationsInclusiveScanNonUniformAMD(u16); i = minInvocationsExclusiveScanNonUniformAMD(i); uv = minInvocationsExclusiveScanNonUniformAMD(uv); fv = minInvocationsExclusiveScanNonUniformAMD(fv); dv = minInvocationsExclusiveScanNonUniformAMD(dv); i64 = minInvocationsExclusiveScanNonUniformAMD(i64); u64v = minInvocationsExclusiveScanNonUniformAMD(u64v); f16v = minInvocationsExclusiveScanNonUniformAMD(f16v); i16v = minInvocationsExclusiveScanNonUniformAMD(i16v); u16 = minInvocationsExclusiveScanNonUniformAMD(u16); i = maxInvocationsExclusiveScanNonUniformAMD(i); uv = maxInvocationsExclusiveScanNonUniformAMD(uv); fv = maxInvocationsExclusiveScanNonUniformAMD(fv); dv = maxInvocationsExclusiveScanNonUniformAMD(dv); i64 = maxInvocationsExclusiveScanNonUniformAMD(i64); u64v = maxInvocationsExclusiveScanNonUniformAMD(u64v); f16v = maxInvocationsExclusiveScanNonUniformAMD(f16v); i16v = maxInvocationsExclusiveScanNonUniformAMD(i16v); u16 = maxInvocationsExclusiveScanNonUniformAMD(u16); i = addInvocationsExclusiveScanNonUniformAMD(i); uv = addInvocationsExclusiveScanNonUniformAMD(uv); fv = addInvocationsExclusiveScanNonUniformAMD(fv); dv = addInvocationsExclusiveScanNonUniformAMD(dv); i64 = addInvocationsExclusiveScanNonUniformAMD(i64); u64v = addInvocationsExclusiveScanNonUniformAMD(u64v); f16v = addInvocationsExclusiveScanNonUniformAMD(f16v); i16v = addInvocationsExclusiveScanNonUniformAMD(i16v); u16 = addInvocationsExclusiveScanNonUniformAMD(u16); } glslang-16.0.0/Test/spv.shaderDrawParams.vert000066400000000000000000000005301506534232700211120ustar00rootroot00000000000000#version 450 core #extension GL_ARB_shader_draw_parameters: enable layout(binding = 0) uniform Block { vec4 pos[2][4]; } block; void main() { if ((gl_BaseVertexARB > 0) || (gl_BaseInstanceARB > 0)) gl_Position = block.pos[0][gl_DrawIDARB % 4]; else gl_Position = block.pos[1][gl_DrawIDARB % 4]; } glslang-16.0.0/Test/spv.shaderFragMaskAMD.frag000066400000000000000000000015471506534232700210360ustar00rootroot00000000000000#version 450 core #extension GL_AMD_shader_fragment_mask: enable layout(binding = 0) uniform sampler2DMS s2DMS; layout(binding = 1) uniform isampler2DMSArray is2DMSArray; layout(binding = 2, input_attachment_index = 0) uniform usubpassInputMS usubpassMS; layout(location = 0) out vec4 fragColor; void main() { vec4 f4 = vec4(0.0); uint fragMask = fragmentMaskFetchAMD(s2DMS, ivec2(2, 3)); uint fragIndex = (fragMask & 0xF0) >> 4; f4 += fragmentFetchAMD(s2DMS, ivec2(2, 3), 1); fragMask = fragmentMaskFetchAMD(is2DMSArray, ivec3(2, 3, 1)); fragIndex = (fragMask & 0xF0) >> 4; f4 += fragmentFetchAMD(is2DMSArray, ivec3(2, 3, 1), fragIndex); fragMask = fragmentMaskFetchAMD(usubpassMS); fragIndex = (fragMask & 0xF0) >> 4; f4 += fragmentFetchAMD(usubpassMS, fragIndex); fragColor = f4; }glslang-16.0.0/Test/spv.shaderGroupVote.comp000066400000000000000000000005211506534232700207610ustar00rootroot00000000000000#version 450 #extension GL_ARB_shader_group_vote : enable layout(local_size_x = 4, local_size_y = 4) in; layout(std430, binding = 0) buffer Buffers { bool b; }; void main() { bool b1 = b; b1 = anyInvocationARB(b1); b1 = allInvocationsARB(b1); b1 = allInvocationsEqualARB(b1); b = b1; } glslang-16.0.0/Test/spv.shaderImageFootprint.frag000066400000000000000000000063451506534232700217510ustar00rootroot00000000000000#version 450 #extension GL_NV_shader_texture_footprint : require layout (location = 0) in vec2 P2; layout (location = 2) in vec3 P3; layout (location = 3) in flat int granularity; layout (location = 4) in float lodClamp; layout (location = 5) in float lod; layout (location = 6) in vec2 dx; layout (location = 8) in vec2 dy; layout (location = 9) in float bias; uniform sampler2D sample2D; uniform sampler3D sample3D; buffer result2D { bool ret2D; uvec2 anchor2D; uvec2 offset2D; uvec2 mask2D; uint lod2D; uint granularity2D; }; buffer result3D { bool ret3D; uvec3 anchor3D; uvec3 offset3D; uvec2 mask3D; uint lod3D; uint granularity3D; }; void main() { gl_TextureFootprint2DNV fp2D; gl_TextureFootprint3DNV fp3D; ret2D = textureFootprintNV(sample2D, P2, granularity, true, fp2D); anchor2D = fp2D.anchor; offset2D = fp2D.offset; mask2D = fp2D.mask; lod2D = fp2D.lod; granularity2D = fp2D.granularity; ret2D = textureFootprintNV(sample2D, P2, granularity, true, fp2D, bias); anchor2D += fp2D.anchor; offset2D += fp2D.offset; mask2D += fp2D.mask; lod2D += fp2D.lod; granularity2D += fp2D.granularity; ret2D = textureFootprintClampNV(sample2D, P2, lodClamp, granularity, true, fp2D); anchor2D += fp2D.anchor; offset2D += fp2D.offset; mask2D += fp2D.mask; lod2D += fp2D.lod; granularity2D += fp2D.granularity; ret2D = textureFootprintClampNV(sample2D, P2, lodClamp, granularity, true, fp2D, bias); anchor2D += fp2D.anchor; offset2D += fp2D.offset; mask2D += fp2D.mask; lod2D += fp2D.lod; granularity2D += fp2D.granularity; ret2D = textureFootprintLodNV(sample2D, P2, lod, granularity, true, fp2D); anchor2D += fp2D.anchor; offset2D += fp2D.offset; mask2D += fp2D.mask; lod2D += fp2D.lod; granularity2D += fp2D.granularity; ret2D = textureFootprintGradNV(sample2D, P2, dx, dy, granularity, true, fp2D); anchor2D += fp2D.anchor; offset2D += fp2D.offset; mask2D += fp2D.mask; lod2D += fp2D.lod; granularity2D += fp2D.granularity; ret2D = textureFootprintGradClampNV(sample2D, P2, dx, dy, lodClamp, granularity, true, fp2D); anchor2D += fp2D.anchor; offset2D += fp2D.offset; mask2D += fp2D.mask; lod2D += fp2D.lod; granularity2D += fp2D.granularity; ret3D = textureFootprintNV(sample3D, P3, granularity, true, fp3D); anchor3D = fp3D.anchor; offset3D = fp3D.offset; mask3D = fp3D.mask; lod3D = fp3D.lod; granularity3D = fp3D.granularity; ret3D = textureFootprintNV(sample3D, P3, granularity, true, fp3D, bias); anchor3D += fp3D.anchor; offset3D += fp3D.offset; mask3D += fp3D.mask; lod3D += fp3D.lod; granularity3D += fp3D.granularity; ret3D = textureFootprintClampNV(sample3D, P3, lodClamp, granularity, true, fp3D); anchor3D += fp3D.anchor; offset3D += fp3D.offset; mask3D += fp3D.mask; lod3D += fp3D.lod; granularity3D += fp3D.granularity; ret3D = textureFootprintClampNV(sample3D, P3, lodClamp, granularity, true, fp3D, bias); anchor3D += fp3D.anchor; offset3D += fp3D.offset; mask3D += fp3D.mask; lod3D += fp3D.lod; granularity3D += fp3D.granularity; ret3D = textureFootprintLodNV(sample3D, P3, lod, granularity, true, fp3D); anchor3D += fp3D.anchor; offset3D += fp3D.offset; mask3D += fp3D.mask; lod3D += fp3D.lod; granularity3D += fp3D.granularity; }glslang-16.0.0/Test/spv.shaderStencilExport.frag000066400000000000000000000002351506534232700216150ustar00rootroot00000000000000#version 450 core #extension GL_ARB_shader_stencil_export: enable out int gl_FragStencilRefARB; void main() { gl_FragStencilRefARB = 100; } glslang-16.0.0/Test/spv.shadingRate.frag000066400000000000000000000004101506534232700200470ustar00rootroot00000000000000#version 450 #extension GL_NV_shading_rate_image : require layout (location = 0) out vec2 FragmentSize; layout (location = 2) out int InvocationsPerPixel; void main () { FragmentSize = gl_FragmentSizeNV; InvocationsPerPixel = gl_InvocationsPerPixelNV; }glslang-16.0.0/Test/spv.shiftOps.frag000066400000000000000000000003621506534232700174230ustar00rootroot00000000000000#version 450 flat in int i1; flat in uint u1; flat in ivec3 i3; flat in uvec3 u3; out ivec3 icolor; out uvec3 ucolor; void main() { icolor = i3 << u1; icolor <<= 4u; ucolor = u3 >> i1; ucolor >>= 5; } glslang-16.0.0/Test/spv.shortCircuit.frag000066400000000000000000000017271506534232700203140ustar00rootroot00000000000000#version 400 flat in ivec4 uiv4; in vec4 uv4; bool ub; bool uba; bvec4 ub41, ub42; in float uf; flat in int ui; out float of1; out vec4 of4; bool foo() { ++of1; return of1 > 10.0; } void main() { of1 = 0.0; of4 = vec4(0.0); if (ub || ui > 2) // not worth short circuiting ++of1; if (ub && !uba) // not worth short circuiting ++of1; if (ub || foo()) // must short circuit ++of1; if (ub && foo()) // must short circuit ++of1; if (foo() || ub) // not worth short circuiting ++of1; if (foo() && ub) // not worth short circuiting ++of1; if (ub || ++of1 > 1.0) // must short circuit ++of4; if (++of1 > 1.0 || ub) // not worth short circuiting ++of4; if (ub || sin(uf) * 4.0 > of1) // worth short circuiting ++of1; if (ub && sin(uf) * 4.0 > of1) // worth short circuiting ++of1; } glslang-16.0.0/Test/spv.simpleFunctionCall.frag000066400000000000000000000001771506534232700214230ustar00rootroot00000000000000#version 150 in vec4 BaseColor; vec4 foo() { return BaseColor; } void main() { gl_FragColor = foo(); } glslang-16.0.0/Test/spv.simpleMat.vert000066400000000000000000000004631506534232700176220ustar00rootroot00000000000000#version 330 varying mat4 mvp; in vec4 v; in mat3 am3; in mat4 arraym[3]; out float f; out vec4 glPos; //out mat4 mout[2]; void main() { //needs complex output blocks to work: gl_Position = mvp * v; glPos = mvp * v; f = am3[2][1] + arraym[1][2][3]; //mout[1] = arraym[2]; } glslang-16.0.0/Test/spv.smBuiltins.frag000066400000000000000000000002721506534232700177550ustar00rootroot00000000000000#version 450 #extension GL_NV_shader_sm_builtins: enable layout(location = 0) out uvec4 data; void main (void) { data = uvec4(gl_WarpsPerSMNV, gl_SMCountNV, gl_WarpIDNV, gl_SMIDNV); } glslang-16.0.0/Test/spv.smBuiltins.vert000066400000000000000000000003621506534232700200160ustar00rootroot00000000000000#version 450 #extension GL_NV_shader_sm_builtins: enable layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_VertexIndex] = uvec4(gl_WarpsPerSMNV, gl_SMCountNV, gl_WarpIDNV, gl_SMIDNV); } glslang-16.0.0/Test/spv.sparseTexture.frag000066400000000000000000000073401506534232700205050ustar00rootroot00000000000000#version 450 #extension GL_ARB_sparse_texture2: enable uniform sampler2D s2D; uniform sampler3D s3D; uniform sampler2DShadow s2DShadow; uniform samplerCubeShadow sCubeShadow; uniform sampler2DArrayShadow s2DArrayShadow; uniform sampler2DRectShadow s2DRectShadow; uniform samplerCubeArrayShadow sCubeArrayShadow; uniform sampler2DMS s2DMS; uniform isamplerCube isCube; uniform isampler2DArray is2DArray; uniform usamplerCubeArray usCubeArray; uniform usampler2DRect us2DRect; layout(rgba32f) uniform image2D i2D; layout(rgba32i) uniform iimage3D ii3D; layout(rgba32f) uniform image2DMS i2DMS; in vec2 c2; in vec3 c3; in vec4 c4; in flat ivec2 ic2; in flat ivec3 ic3; out vec4 outColor; void main() { int resident = 0; vec4 texel = vec4(0.0); ivec4 itexel = ivec4(0); uvec4 utexel = uvec4(0); resident |= sparseTextureARB(s2D, c2, texel); resident |= sparseTextureARB(s3D, c3, texel, 2.0); resident |= sparseTextureARB(isCube, c3, itexel); resident |= sparseTextureARB(s2DShadow, c3, texel.x); resident |= sparseTextureARB(sCubeArrayShadow, c4, 1.0, texel.x); resident |= sparseTextureLodARB(s2D, c2, 2.0, texel); resident |= sparseTextureLodARB(usCubeArray, c4, 1.0, utexel); resident |= sparseTextureLodARB(s2DShadow, c3, 2.0, texel.y); resident |= sparseTextureOffsetARB(s3D, c3, ivec3(2), texel, 2.0); resident |= sparseTextureOffsetARB(us2DRect, c2, ivec2(3), utexel); resident |= sparseTextureOffsetARB(s2DArrayShadow, c4, ivec2(5), texel.z); resident |= sparseTexelFetchARB(s2D, ivec2(c2), 2, texel); resident |= sparseTexelFetchARB(us2DRect, ivec2(c2), utexel); resident |= sparseTexelFetchARB(s2DMS, ivec2(c2), 4, texel); resident |= sparseTexelFetchOffsetARB(s3D, ivec3(c3), 2, ivec3(4), texel); resident |= sparseTexelFetchOffsetARB(us2DRect, ivec2(c2), ivec2(3), utexel); resident |= sparseTextureLodOffsetARB(s2D, c2, 2.0, ivec2(5), texel); resident |= sparseTextureLodOffsetARB(is2DArray, c3, 2.0, ivec2(6), itexel); resident |= sparseTextureLodOffsetARB(s2DShadow, c3, 2.0, ivec2(7), texel.z); resident |= sparseTextureGradARB(s3D, c3, c3, c3, texel); resident |= sparseTextureGradARB(sCubeShadow, c4, c3, c3, texel.y); resident |= sparseTextureGradARB(usCubeArray, c4, c3, c3, utexel); resident |= sparseTextureGradOffsetARB(s2D, c2, c2, c2, ivec2(5), texel); resident |= sparseTextureGradOffsetARB(s2DRectShadow, c3, c2, c2, ivec2(6), texel.w); resident |= sparseTextureGradOffsetARB(is2DArray, c3, c2, c2, ivec2(2), itexel); resident |= sparseTextureGatherARB(s2D, c2, texel); resident |= sparseTextureGatherARB(is2DArray, c3, itexel, 2); resident |= sparseTextureGatherARB(s2DArrayShadow, c3, 2.0, texel); resident |= sparseTextureGatherOffsetARB(s2D, c2, ivec2(4), texel); resident |= sparseTextureGatherOffsetARB(is2DArray, c3, ivec2(5), itexel, 2); resident |= sparseTextureGatherOffsetARB(s2DRectShadow, c2, 2.0, ivec2(7), texel); const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); resident |= sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel); resident |= sparseTextureGatherOffsetsARB(is2DArray, c3, constOffsets, itexel, 2); resident |= sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, constOffsets, texel); resident |= sparseImageLoadARB(i2D, ic2, texel); resident |= sparseImageLoadARB(ii3D, ic3, itexel); resident |= sparseImageLoadARB(i2DMS, ic2, 3, texel); outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel); }glslang-16.0.0/Test/spv.sparseTextureClamp.frag000066400000000000000000000057571506534232700214740ustar00rootroot00000000000000#version 450 #extension GL_ARB_sparse_texture_clamp: enable uniform sampler2D s2D; uniform sampler3D s3D; uniform sampler2DShadow s2DShadow; uniform samplerCubeShadow sCubeShadow; uniform sampler2DArrayShadow s2DArrayShadow; uniform sampler2DRectShadow s2DRectShadow; uniform samplerCubeArrayShadow sCubeArrayShadow; uniform isamplerCube isCube; uniform isampler2DArray is2DArray; uniform usamplerCubeArray usCubeArray; uniform usampler2DRect us2DRect; in vec2 c2; in vec3 c3; in vec4 c4; in float lodClamp; out vec4 outColor; void main() { int resident = 0; vec4 texel = vec4(0.0); ivec4 itexel = ivec4(0); uvec4 utexel = uvec4(0); resident |= sparseTextureClampARB(s2D, c2, lodClamp, texel); resident |= sparseTextureClampARB(s3D, c3, lodClamp, texel, 2.0); resident |= sparseTextureClampARB(isCube, c3, lodClamp, itexel); resident |= sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x); resident |= sparseTextureClampARB(sCubeArrayShadow, c4, 1.0, lodClamp, texel.x); texel += textureClampARB(s2D, c2, lodClamp); texel += textureClampARB(s3D, c3, lodClamp, 2.0); itexel += textureClampARB(isCube, c3, lodClamp); texel.x += textureClampARB(s2DShadow, c3, lodClamp); texel.x += textureClampARB(sCubeArrayShadow, c4, 1.0, lodClamp); resident |= sparseTextureOffsetClampARB(s3D, c3, ivec3(2), lodClamp, texel, 2.0); resident |= sparseTextureOffsetClampARB(us2DRect, c2, ivec2(3), lodClamp, utexel); resident |= sparseTextureOffsetClampARB(s2DArrayShadow, c4, ivec2(5), lodClamp, texel.z); texel += textureOffsetClampARB(s3D, c3, ivec3(2), lodClamp, 2.0); utexel += textureOffsetClampARB(us2DRect, c2, ivec2(3), lodClamp); texel.z += textureOffsetClampARB(s2DArrayShadow, c4, ivec2(5), lodClamp); resident |= sparseTextureGradClampARB(s3D, c3, c3, c3, lodClamp, texel); resident |= sparseTextureGradClampARB(sCubeShadow, c4, c3, c3, lodClamp, texel.y); resident |= sparseTextureGradClampARB(usCubeArray, c4, c3, c3, lodClamp, utexel); texel += textureGradClampARB(s3D, c3, c3, c3, lodClamp); texel.y += textureGradClampARB(sCubeShadow, c4, c3, c3, lodClamp); utexel += textureGradClampARB(usCubeArray, c4, c3, c3, lodClamp); resident |= sparseTextureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp, texel); resident |= sparseTextureGradOffsetClampARB(s2DRectShadow, c3, c2, c2, ivec2(6), lodClamp, texel.w); resident |= sparseTextureGradOffsetClampARB(is2DArray, c3, c2, c2, ivec2(2), lodClamp, itexel); texel += textureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp); texel.w += textureGradOffsetClampARB(s2DRectShadow, c3, c2, c2, ivec2(6), lodClamp); itexel += textureGradOffsetClampARB(is2DArray, c3, c2, c2, ivec2(2), lodClamp); outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel); }glslang-16.0.0/Test/spv.sparsetextureoffset_non_const.vert000066400000000000000000000024671506534232700241020ustar00rootroot00000000000000#version 450 core #extension GL_ARB_sparse_texture2 : enable #extension GL_EXT_texture_offset_non_const : enable layout(location = 0) in highp vec4 a_position; layout(location = 4) in highp vec2 a_in0; layout(location = 5) in highp float a_in1; layout(location = 10) in highp ivec2 offsetValue; layout(location = 0) out mediump vec4 v_color0; layout(location = 1) out mediump vec4 v_color1; layout(location = 2) out mediump vec4 v_color2; layout(location = 3) out mediump vec4 v_color3; layout(set = 0, binding = 0) uniform highp sampler2D u_sampler; layout(set = 0, binding = 1) uniform buf0 { highp vec4 u_scale; }; layout(set = 0, binding = 2) uniform buf1 { highp vec4 u_bias; }; out gl_PerVertex { vec4 gl_Position; }; void main() { gl_Position = a_position; vec4 aux0; vec4 aux1; vec4 aux2; vec4 aux3; int ret0 = sparseTextureOffsetARB(u_sampler, a_in0, offsetValue, aux0); int ret1 = sparseTexelFetchOffsetARB(u_sampler, ivec2(a_in0), int(a_in1), offsetValue, aux1); int ret2 = sparseTextureLodOffsetARB(u_sampler, a_in0, a_in1, offsetValue, aux2); int ret3 = sparseTextureGradOffsetARB(u_sampler, a_in0, vec2(a_in1, a_in1), vec2(a_in1, a_in1), offsetValue, aux3); v_color0 = aux0 * u_scale + u_bias; v_color1 = aux1 * u_scale + u_bias; v_color2 = aux2 * u_scale + u_bias; v_color3 = aux3 * u_scale + u_bias; } glslang-16.0.0/Test/spv.sparsetextureoffset_non_const_fail.vert000066400000000000000000000024031506534232700250630ustar00rootroot00000000000000#version 450 core #extension GL_ARB_sparse_texture2 : enable layout(location = 0) in highp vec4 a_position; layout(location = 4) in highp vec2 a_in0; layout(location = 5) in highp float a_in1; layout(location = 10) in highp ivec2 offsetValue; layout(location = 0) out mediump vec4 v_color0; layout(location = 1) out mediump vec4 v_color1; layout(location = 2) out mediump vec4 v_color2; layout(location = 3) out mediump vec4 v_color3; layout(set = 0, binding = 0) uniform highp sampler2D u_sampler; layout(set = 0, binding = 1) uniform buf0 { highp vec4 u_scale; }; layout(set = 0, binding = 2) uniform buf1 { highp vec4 u_bias; }; out gl_PerVertex { vec4 gl_Position; }; void main() { gl_Position = a_position; vec4 aux0; vec4 aux1; vec4 aux2; vec4 aux3; int ret0 = sparseTextureOffsetARB(u_sampler, a_in0, offsetValue, aux0); int ret1 = sparseTexelFetchOffsetARB(u_sampler, ivec2(a_in0), int(a_in1), offsetValue, aux1); int ret2 = sparseTextureLodOffsetARB(u_sampler, a_in0, a_in1, offsetValue, aux2); int ret3 = sparseTextureGradOffsetARB(u_sampler, a_in0, vec2(a_in1, a_in1), vec2(a_in1, a_in1), offsetValue, aux3); v_color0 = aux0 * u_scale + u_bias; v_color1 = aux1 * u_scale + u_bias; v_color2 = aux2 * u_scale + u_bias; v_color3 = aux3 * u_scale + u_bias; } glslang-16.0.0/Test/spv.specConst.vert000066400000000000000000000001621506534232700176240ustar00rootroot00000000000000#version 450 layout(constant_id = 11) const int a = 8; void main() { gl_Position = vec4(1.0) / a; } glslang-16.0.0/Test/spv.specConstArrayCheck.vert000066400000000000000000000004001506534232700215540ustar00rootroot00000000000000#version 450 layout(constant_id = 0) const uint a = 1; layout(constant_id = 1) const uint b = 2; layout(location = 0) out uint o; void main() { uint arr1[a+a]; uint arr2[b]; o = arr1[1]; o = arr2[1]; o = arr1[6]; o = arr2[6]; } glslang-16.0.0/Test/spv.specConstant.comp000066400000000000000000000003741506534232700203120ustar00rootroot00000000000000#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 main() { bi.a = gl_WorkGroupSize.x * gl_WorkGroupSize.y * gl_WorkGroupSize.z; } glslang-16.0.0/Test/spv.specConstant.float16.comp000066400000000000000000000005611506534232700215630ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_float16 : require layout(constant_id = 1) const float16_t sc0 = 9.5hf; layout(constant_id = 2) const float16_t sc1 = -14.25hf; layout (set = 0, binding = 0, std430) writeonly buffer Output { float16_t r0; float16_t r1; } sb_out; void main (void) { sb_out.r0 = sc0; sb_out.r1 = sc1; } glslang-16.0.0/Test/spv.specConstant.int16.comp000066400000000000000000000005471506534232700212540ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int16 : require layout(constant_id = 1) const int16_t sc0 = 20000s; layout(constant_id = 2) const int16_t sc1 = -20000s; layout (set = 0, binding = 0, std430) writeonly buffer Output { int16_t r0; int16_t r1; } sb_out; void main (void) { sb_out.r0 = sc0; sb_out.r1 = sc1; } glslang-16.0.0/Test/spv.specConstant.int8.comp000066400000000000000000000005541506534232700211730ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int8 : require layout(constant_id = 1) const int8_t sc0 = int8_t(127); layout(constant_id = 2) const int8_t sc1 = int8_t(-127); layout (set = 0, binding = 0, std430) writeonly buffer Output { int8_t r0; int8_t r1; } sb_out; void main (void) { sb_out.r0 = sc0; sb_out.r1 = sc1; } glslang-16.0.0/Test/spv.specConstant.vert000066400000000000000000000024131506534232700203300ustar00rootroot00000000000000#version 400 layout(constant_id = 16) const int arraySize = 5; in vec4 ucol[arraySize]; layout(constant_id = 17) const bool spBool = true; layout(constant_id = 18) const float spFloat = 3.14; layout(constant_id = 19) const double spDouble = 3.1415926535897932384626433832795; layout(constant_id = 22) const uint scale = 2; layout(constant_id = 24) gl_MaxImageUnits; out vec4 color; out int size; // parameter should be considered same type as ucol void foo(vec4 p[arraySize]); void main() { color = ucol[2]; size = arraySize; if (spBool) color *= scale; color += float(spDouble / spFloat); foo(ucol); } layout(constant_id = 116) const int dupArraySize = 12; in vec4 dupUcol[dupArraySize]; layout(constant_id = 117) const bool spDupBool = true; layout(constant_id = 118) const float spDupFloat = 3.14; layout(constant_id = 119) const double spDupDouble = 3.1415926535897932384626433832795; layout(constant_id = 122) const uint dupScale = 2; void foo(vec4 p[arraySize]) { color += dupUcol[2]; size += dupArraySize; if (spDupBool) color *= dupScale; color += float(spDupDouble / spDupFloat); } int builtin_spec_constant() { int result = gl_MaxImageUnits; return result; } glslang-16.0.0/Test/spv.specConstantComposite.vert000066400000000000000000000060201506534232700222110ustar00rootroot00000000000000#version 450 // constant_id specified scalar spec constants layout(constant_id = 200) const int spec_int = 3; layout(constant_id = 201) const float spec_float = 3.14; layout(constant_id = 202) const double spec_double = 3.1415926535897932384626433832795; layout(constant_id = 203) const bool spec_bool = true; // const float cast_spec_float = float(spec_float); // Flat struct struct flat_struct { int i; float f; double d; bool b; }; // Nesting struct struct nesting_struct { flat_struct nested; vec4 v; int i; }; // Expect OpSpecConstantComposite // Flat struct initializer //const flat_struct spec_flat_struct_all_spec = {spec_int, spec_float, // spec_double, spec_bool}; //const flat_struct spec_flat_struct_partial_spec = {30, 30.14, spec_double, // spec_bool}; // Nesting struct initializer //const nesting_struct nesting_struct_ctor = { // {spec_int, spec_float, spec_double, false}, // vec4(0.1, 0.1, 0.1, 0.1), // spec_int}; // Vector constructor //const vec4 spec_vec4_all_spec = // vec4(spec_float, spec_float, spec_float, spec_float); //const vec4 spec_vec4_partial_spec = // vec4(spec_float, spec_float, 300.14, 300.14); //const vec4 spec_vec4_from_one_scalar = vec4(spec_float); // Matrix constructor //const mat2x3 spec_mat2x3 = mat2x3(spec_float, spec_float, spec_float, 1.1, 2.2, 3.3); //const mat2x3 spec_mat2x3_from_one_scalar = mat2x3(spec_float); // Struct nesting constructor //const nesting_struct spec_nesting_struct_all_spec = { // spec_flat_struct_all_spec, spec_vec4_all_spec, spec_int}; //const nesting_struct spec_nesting_struct_partial_spec = { // spec_flat_struct_partial_spec, spec_vec4_partial_spec, 3000}; //const float spec_float_array[5] = {spec_float, spec_float, 1.0, 2.0, 3.0}; //const int spec_int_array[5] = {spec_int, spec_int, 1, 2, 30}; // global_vec4_array_with_spec_length is not a spec constant, but its array // size is. When calling global_vec4_array_with_spec_length.length(), A // TIntermSymbol Node should be returned, instead of a TIntermConstantUnion // node which represents a known constant value. in vec4 global_vec4_array_with_spec_length[spec_int]; out vec4 color; void refer_primary_spec_const() { if (spec_bool) color *= spec_int; } void refer_composite_spec_const() { //color += spec_vec4_all_spec; //color -= spec_vec4_partial_spec; } void refer_copmosite_dot_dereference() { //color *= spec_nesting_struct_all_spec.i; //color += spec_vec4_all_spec.x; } void refer_composite_bracket_dereference() { //color -= spec_float_array[1]; //color /= spec_int_array[spec_int_array[spec_int]]; } int refer_spec_const_array_length() { int len = global_vec4_array_with_spec_length.length(); return len; } void declare_spec_const_in_func() { //const nesting_struct spec_const_declared_in_func = { // spec_flat_struct_partial_spec, spec_vec4_partial_spec, 10}; //color /= spec_const_declared_in_func.i; } void main() {} glslang-16.0.0/Test/spv.specConstantComposite2.vert000066400000000000000000000060201506534232700222730ustar00rootroot00000000000000#version 450 // constant_id specified scalar spec constants layout(constant_id = 200) const int spec_int = 3; layout(constant_id = 201) const float spec_float = 3.14; layout(constant_id = 202) const double spec_double = 3.1415926535897932384626433832795; layout(constant_id = 203) const bool spec_bool = true; // const float cast_spec_float = float(spec_float); // Flat struct struct flat_struct { int i; float f; double d; bool b; }; // Nesting struct struct nesting_struct { flat_struct nested; vec4 v; int i; }; // Expect OpSpecConstantComposite // Flat struct initializer //const flat_struct spec_flat_struct_all_spec = {spec_int, spec_float, // spec_double, spec_bool}; //const flat_struct spec_flat_struct_partial_spec = {30, 30.14, spec_double, // spec_bool}; // Nesting struct initializer //const nesting_struct nesting_struct_ctor = { // {spec_int, spec_float, spec_double, false}, // vec4(0.1, 0.1, 0.1, 0.1), // spec_int}; // Vector constructor //const vec4 spec_vec4_all_spec = // vec4(spec_float, spec_float, spec_float, spec_float); //const vec4 spec_vec4_partial_spec = // vec4(spec_float, spec_float, 300.14, 300.14); //const vec4 spec_vec4_from_one_scalar = vec4(spec_float); // Matrix constructor //const mat2x3 spec_mat2x3 = mat2x3(spec_float, spec_float, spec_float, 1.1, 2.2, 3.3); //const mat2x3 spec_mat2x3_from_one_scalar = mat2x3(spec_float); // Struct nesting constructor //const nesting_struct spec_nesting_struct_all_spec = { // spec_flat_struct_all_spec, spec_vec4_all_spec, spec_int}; //const nesting_struct spec_nesting_struct_partial_spec = { // spec_flat_struct_partial_spec, spec_vec4_partial_spec, 3000}; //const float spec_float_array[5] = {spec_float, spec_float, 1.0, 2.0, 3.0}; //const int spec_int_array[5] = {spec_int, spec_int, 1, 2, 30}; // global_vec4_array_with_spec_length is not a spec constant, but its array // size is. When calling global_vec4_array_with_spec_length.length(), A // TIntermSymbol Node should be returned, instead of a TIntermConstantUnion // node which represents a known constant value. in vec4 global_vec4_array_with_spec_length[spec_int]; out vec4 color; void refer_primary_spec_const() { if (spec_bool) color *= spec_int; } void refer_composite_spec_const() { //color += spec_vec4_all_spec; //color -= spec_vec4_partial_spec; } void refer_copmosite_dot_dereference() { //color *= spec_nesting_struct_all_spec.i; //color += spec_vec4_all_spec.x; } void refer_composite_bracket_dereference() { //color -= spec_float_array[1]; //color /= spec_int_array[spec_int_array[spec_int]]; } int refer_spec_const_array_length() { int len = global_vec4_array_with_spec_length.length(); return len; } void declare_spec_const_in_func() { //const nesting_struct spec_const_declared_in_func = { // spec_flat_struct_partial_spec, spec_vec4_partial_spec, 10}; //color /= spec_const_declared_in_func.i; } void main() {} glslang-16.0.0/Test/spv.specConstantOp.float16.comp000066400000000000000000000004621506534232700220620ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_float16 : require // Produce an OpSpecConstantOp with 8 bit integer type layout(constant_id = 0) const float c = 8; layout(binding=0) writeonly restrict buffer S { float16_t p_out[]; }; void main() { p_out[0] = float16_t(c); } glslang-16.0.0/Test/spv.specConstantOp.int16.comp000066400000000000000000000004531506534232700215470ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int16 : require // Produce an OpSpecConstantOp with 16 bit integer type layout(constant_id = 0) const int c = 8; layout(binding=0) writeonly restrict buffer S { uint16_t p_out[]; }; void main() { p_out[0] = uint16_t(c); } glslang-16.0.0/Test/spv.specConstantOp.int8.comp000066400000000000000000000004501506534232700214650ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types_int8 : require // Produce an OpSpecConstantOp with 8 bit integer type layout(constant_id = 0) const int c = 8; layout(binding=0) writeonly restrict buffer S { uint8_t p_out[]; }; void main() { p_out[0] = uint8_t(c); } glslang-16.0.0/Test/spv.specConstantOperations.vert000066400000000000000000000070001506534232700223710ustar00rootroot00000000000000#version 450 layout(constant_id = 200) const float sp_float = 3.1415926; layout(constant_id = 201) const int sp_int = 10; layout(constant_id = 202) const uint sp_uint = 100; layout(constant_id = 203) const int sp_sint = -10; layout(constant_id = 204) const double sp_double = 2.718281828459; // // Scalars // // float <-> double conversion const float float_from_double = float(sp_double); const double double_from_float = double(sp_float); // uint/int <-> bool conversion const bool bool_from_int = bool(sp_int); const bool bool_from_uint = bool(sp_uint); const int int_from_bool = int(bool_from_int); const uint uint_from_bool = uint(bool_from_int); // uint <-> int const uint sp_uint_from_sint = uint(sp_sint); const int sp_sint_from_uint = int(sp_uint); // Negate and Not const int negate_int = -sp_int; const int not_int = ~sp_int; // Add and Subtract const int sp_int_add_two = sp_int + 2; const int sp_int_add_two_sub_three = sp_int + 2 - 3; const int sp_int_add_two_sub_four = sp_int_add_two - 4; // Mul, Div and Rem const int sp_sint_mul_two = sp_sint * 2; const uint sp_uint_mul_two = sp_uint * 2; const int sp_sint_mul_two_div_five = sp_sint_mul_two / 5; const uint sp_uint_mul_two_div_five = sp_uint_mul_two / 5; const int sp_sint_rem_four = sp_sint % 4; const uint sp_uint_rem_four = sp_uint % 4; const int sp_sint_mul_three_div_five = sp_sint * 3 / 5; // Shift const int sp_sint_shift_right_arithmetic = sp_sint >> 10; const uint sp_uint_shift_right_arithmetic = sp_uint >> 20; const int sp_sint_shift_left = sp_sint << 1; const uint sp_uint_shift_left = sp_uint << 2; // Bitwise And, Or, Xor const int sp_sint_or_256 = sp_sint | 0x100; const uint sp_uint_xor_512 = sp_uint ^ 0x200; /* // Scalar comparison */ const bool sp_int_lt_sp_sint = sp_int < sp_sint; const bool sp_uint_equal_sp_uint = sp_uint == sp_uint; const bool sp_int_gt_sp_sint = sp_int > sp_sint; // // Vectors // const ivec4 iv = ivec4(20, 30, sp_int, sp_int); const uvec4 uv = uvec4(sp_uint, sp_uint, -1, -2); //const vec4 fv = vec4(sp_float, 1.25, sp_float, 1.25); // uint/int <-> bool conversion const bvec4 bv_from_iv = bvec4(iv); const bvec4 bv_from_uv = bvec4(uv); const ivec4 iv_from_bv = ivec4(bv_from_iv); const uvec4 uv_from_bv = uvec4(bv_from_iv); // uint <-> int const uvec4 uv_from_iv = uvec4(iv); const ivec4 iv_from_uv = ivec4(uv); // Negate and Not const ivec4 not_iv = ~iv; const ivec4 negate_iv = -iv; // Add and Subtract const ivec4 iv_add_two = iv + 2; const ivec4 iv_add_two_sub_three = iv + 2 - 3; const ivec4 iv_add_two_sub_four = iv_add_two_sub_three - 4; // Mul, Div and Rem const ivec4 iv_mul_two = iv * 2; const ivec4 iv_mul_two_div_five = iv_mul_two / 5; const ivec4 iv_rem_four = iv % 4; // Shift const ivec4 iv_shift_right_arithmetic = iv >> 10; const ivec4 iv_shift_left = iv << 2; // Bitwise And, Or, Xor const ivec4 iv_or_1024 = iv | 0x400; const uvec4 uv_xor_2048 = uv ^ 0x800; // Swizzles const int iv_x = iv.x; const ivec2 iv_yx = iv.yx; const ivec3 iv_zyx = iv.zyx; const ivec4 iv_yzxw = iv.yzxw; int non_const_array_size_from_spec_const() { int array[sp_int + 2]; for (int i = 0; i < sp_int + 2; i++) { array[i] = 1023; } return array[sp_int + 1]; } // ternary layout(constant_id = 210) const int a = 4; layout(constant_id = 211) const int b = 6; layout(constant_id = 212) const bool c = true; int ternayArray1[a > b ? a : b]; const int t1 = c ? 13 : 17; const int t2 = c ? a : 17; const int t3 = true ? a : 17; const int t4 = a > b ? 13 + a : 17 * b; const vec2 v2 = !c ? vec2(1.0) : vec2(2.0); void main() {} glslang-16.0.0/Test/spv.specTexture.frag000066400000000000000000000003571506534232700201430ustar00rootroot00000000000000#version 450 layout(constant_id = 1) const int offs = 0; layout(binding = 0) uniform sampler2D tex; layout(location = 0) out vec4 color_out; void main(void) { color_out = textureLodOffset(tex, vec2(0.0, 0.0), 0.0, ivec2(offs, offs)); }glslang-16.0.0/Test/spv.ssbo.autoassign.frag000066400000000000000000000005771506534232700207560ustar00rootroot00000000000000 cbuffer TestCB { uint W; uint H; }; struct BufType { float4 va; float4 vb; }; StructuredBuffer < BufType > SB0; RWStructuredBuffer < BufType > SB1; float4 main(float4 pos : POS) : SV_Target0 { float4 vTmp = SB0[pos.y * W + pos.x].va + SB0[pos.y * W + pos.x].vb; vTmp += SB1[pos.y * W + pos.x].va + SB1[pos.y * W + pos.x].vb; return vTmp; } glslang-16.0.0/Test/spv.ssboAlias.frag000066400000000000000000000003761506534232700175510ustar00rootroot00000000000000AppendStructuredBuffer Buf1 : register(u1); AppendStructuredBuffer Buf2 : register(u2); AppendStructuredBuffer Buf3 : register(u1); float4 main() : SV_Target { Buf1.Append(10u); Buf2.Append(20u); return float4(1.0, 3.0, 5.0, 1.0); }glslang-16.0.0/Test/spv.stereoViewRendering.tesc000066400000000000000000000010271506534232700216340ustar00rootroot00000000000000#version 450 #extension GL_NV_viewport_array2 :require #extension GL_NV_stereo_view_rendering : require layout(vertices = 4) out; out gl_PerVertex { int gl_SecondaryViewportMaskNV[2]; vec4 gl_SecondaryPositionNV; } gl_out[4]; layout (viewport_relative, secondary_view_offset = 1) out highp int gl_Layer; void main() { gl_out[gl_InvocationID].gl_SecondaryViewportMaskNV[0] = 1; gl_out[gl_InvocationID].gl_SecondaryPositionNV = gl_in[1].gl_Position + gl_in[1].gl_SecondaryPositionNV; } glslang-16.0.0/Test/spv.stereoViewRendering.vert000066400000000000000000000004551506534232700216620ustar00rootroot00000000000000#version 450 #extension GL_NV_viewport_array2 :require #extension GL_NV_stereo_view_rendering : require layout (viewport_relative, secondary_view_offset = 2) out highp int gl_Layer; void main() { gl_SecondaryViewportMaskNV[0] = 1; gl_SecondaryPositionNV = gl_Position; } glslang-16.0.0/Test/spv.storageBuffer.vert000066400000000000000000000002541506534232700204630ustar00rootroot00000000000000#version 450 #pragma use_storage_buffer uniform ub { vec4 a; } ubi; buffer bb { vec4 b; } bbi; void main() { gl_Position = ubi.a + bbi.b; } glslang-16.0.0/Test/spv.structAssignment.frag000066400000000000000000000010651506534232700212020ustar00rootroot00000000000000#version 140 precision mediump int; uniform sampler2D samp2D; in mediump vec2 coord; struct lunarStruct1 { int i; float f; }; struct lunarStruct2 { int i; float f; lunarStruct1 s1_1; }; struct lunarStruct3 { lunarStruct2 s2_1; int i; float f; lunarStruct1 s1_1; }; lunarStruct1 foo; lunarStruct2 foo2; lunarStruct3 foo3; void main() { lunarStruct2 locals2; if (foo3.s2_1.i > 0) locals2 = foo3.s2_1; else locals2 = foo2; gl_FragColor = locals2.s1_1.f * texture(samp2D, coord); } glslang-16.0.0/Test/spv.structCopy.comp000066400000000000000000000010741506534232700200230ustar00rootroot00000000000000#version 460 layout(local_size_x = 512, local_size_y = 1) in; layout(std430) buffer; struct MyStruct { uint a; uint b; uint c; }; layout(binding = 0) buffer MyStructs { uint count; MyStruct data[]; } my_structs; layout(binding = 1) buffer Output { uint a; uint b; uint c; } o; shared MyStruct s[512]; void main() { s[0] = MyStruct(1, 2, 3); uint id = gl_GlobalInvocationID.x; MyStruct ms = id > my_structs.count ? s[id - my_structs.count] : my_structs.data[id]; atomicAdd(o.a, ms.a); atomicAdd(o.b, ms.b); atomicAdd(o.c, ms.c); } glslang-16.0.0/Test/spv.structDeref.frag000066400000000000000000000022411506534232700201140ustar00rootroot00000000000000#version 140 uniform sampler2D samp2D; in vec2 coord; struct s0 { int i; }; struct s00 { s0 s0_0; }; struct s1 { int i; float f; s0 s0_1; }; struct s2 { int i; float f; s1 s1_1; }; struct s3 { s2[12] s2_1; int i; float f; s1 s1_1; }; s0 foo0; s1 foo1; s2 foo2; s3 foo3; s00 foo00; void main() { s0 locals0; s2 locals2; s00 locals00; float[6] fArray; s1[10] locals1Array; if (foo3.s2_1[9].i > 0) { locals2.f = 1.0; locals2.s1_1 = s1(0, 1.0, s0(0)); fArray = float[6]( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); locals1Array[6] = foo1; locals0 = s0(0); locals00 = s00(s0(0)); } else { locals2.f = coord.x; locals2.s1_1 = s1(1, coord.y, foo0); fArray = float[6]( 0.0, 1.0, 2.0, 3.0, 4.0, 5.0); locals1Array[6] = locals2.s1_1; locals0 = foo1.s0_1; locals00 = foo00; } if (locals0.i > 5) locals0 = locals00.s0_0; gl_FragColor = (float(locals0.i) + locals1Array[6].f + fArray[3] + locals2.s1_1.f) * texture(samp2D, coord); } glslang-16.0.0/Test/spv.structure.frag000066400000000000000000000007101506534232700176610ustar00rootroot00000000000000#version 140 uniform sampler2D samp2D; in vec2 coord; struct lunarStruct1 { int i; float f[4]; vec4 color[5]; }; struct lunarStruct2 { int i[5]; float f; lunarStruct1 s1_1[7]; }; lunarStruct1 foo; lunarStruct2 foo2[5]; void main() { float scale = 0.0; if (foo2[3].i[4] > 0) scale = foo2[3].s1_1[2].color[3].x; else scale = foo2[3].s1_1[2].f[3]; gl_FragColor = scale * texture(samp2D, coord); } glslang-16.0.0/Test/spv.subgroup.frag000066400000000000000000000002761506534232700174760ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_basic: enable layout(location = 0) out uvec4 data; void main (void) { data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/spv.subgroup.geom000066400000000000000000000004671506534232700175100ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_basic: enable layout(points) in; layout(points, max_vertices = 1) out; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/spv.subgroup.tesc000066400000000000000000000004231506534232700175070ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_basic: enable layout(vertices=1) out; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/spv.subgroup.tese000066400000000000000000000004201506534232700175060ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_basic: enable layout(isolines) in; layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/spv.subgroup.vert000066400000000000000000000003721506534232700175340ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_basic: enable layout(set = 0, binding = 0, std430) buffer Output { uvec4 result[]; }; void main (void) { result[gl_VertexIndex] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); } glslang-16.0.0/Test/spv.subgroupArithmetic.comp000066400000000000000000000500561506534232700215300ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_arithmetic: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupAdd(data[0].f4.x); data[invocation].f4.xy = subgroupAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupAdd(data[2].f4.xyz); data[invocation].f4 = subgroupAdd(data[3].f4); data[invocation].i4.x = subgroupAdd(data[0].i4.x); data[invocation].i4.xy = subgroupAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupAdd(data[2].i4.xyz); data[invocation].i4 = subgroupAdd(data[3].i4); data[invocation].u4.x = subgroupAdd(data[0].u4.x); data[invocation].u4.xy = subgroupAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupAdd(data[2].u4.xyz); data[invocation].u4 = subgroupAdd(data[3].u4); data[invocation].d4.x = subgroupAdd(data[0].d4.x); data[invocation].d4.xy = subgroupAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupAdd(data[2].d4.xyz); data[invocation].d4 = subgroupAdd(data[3].d4); data[invocation].f4.x = subgroupMul(data[0].f4.x); data[invocation].f4.xy = subgroupMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupMul(data[2].f4.xyz); data[invocation].f4 = subgroupMul(data[3].f4); data[invocation].i4.x = subgroupMul(data[0].i4.x); data[invocation].i4.xy = subgroupMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupMul(data[2].i4.xyz); data[invocation].i4 = subgroupMul(data[3].i4); data[invocation].u4.x = subgroupMul(data[0].u4.x); data[invocation].u4.xy = subgroupMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupMul(data[2].u4.xyz); data[invocation].u4 = subgroupMul(data[3].u4); data[invocation].d4.x = subgroupMul(data[0].d4.x); data[invocation].d4.xy = subgroupMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupMul(data[2].d4.xyz); data[invocation].d4 = subgroupMul(data[3].d4); data[invocation].f4.x = subgroupMin(data[0].f4.x); data[invocation].f4.xy = subgroupMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupMin(data[2].f4.xyz); data[invocation].f4 = subgroupMin(data[3].f4); data[invocation].i4.x = subgroupMin(data[0].i4.x); data[invocation].i4.xy = subgroupMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupMin(data[2].i4.xyz); data[invocation].i4 = subgroupMin(data[3].i4); data[invocation].u4.x = subgroupMin(data[0].u4.x); data[invocation].u4.xy = subgroupMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupMin(data[2].u4.xyz); data[invocation].u4 = subgroupMin(data[3].u4); data[invocation].d4.x = subgroupMin(data[0].d4.x); data[invocation].d4.xy = subgroupMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupMin(data[2].d4.xyz); data[invocation].d4 = subgroupMin(data[3].d4); data[invocation].f4.x = subgroupMax(data[0].f4.x); data[invocation].f4.xy = subgroupMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupMax(data[2].f4.xyz); data[invocation].f4 = subgroupMax(data[3].f4); data[invocation].i4.x = subgroupMax(data[0].i4.x); data[invocation].i4.xy = subgroupMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupMax(data[2].i4.xyz); data[invocation].i4 = subgroupMax(data[3].i4); data[invocation].u4.x = subgroupMax(data[0].u4.x); data[invocation].u4.xy = subgroupMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupMax(data[2].u4.xyz); data[invocation].u4 = subgroupMax(data[3].u4); data[invocation].d4.x = subgroupMax(data[0].d4.x); data[invocation].d4.xy = subgroupMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupMax(data[2].d4.xyz); data[invocation].d4 = subgroupMax(data[3].d4); data[invocation].i4.x = subgroupAnd(data[0].i4.x); data[invocation].i4.xy = subgroupAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupAnd(data[2].i4.xyz); data[invocation].i4 = subgroupAnd(data[3].i4); data[invocation].u4.x = subgroupAnd(data[0].u4.x); data[invocation].u4.xy = subgroupAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupAnd(data[2].u4.xyz); data[invocation].u4 = subgroupAnd(data[3].u4); data[invocation].i4.x = int(subgroupAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupOr(data[0].i4.x); data[invocation].i4.xy = subgroupOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupOr(data[2].i4.xyz); data[invocation].i4 = subgroupOr(data[3].i4); data[invocation].u4.x = subgroupOr(data[0].u4.x); data[invocation].u4.xy = subgroupOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupOr(data[2].u4.xyz); data[invocation].u4 = subgroupOr(data[3].u4); data[invocation].i4.x = int(subgroupOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupXor(data[0].i4.x); data[invocation].i4.xy = subgroupXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupXor(data[2].i4.xyz); data[invocation].i4 = subgroupXor(data[3].i4); data[invocation].u4.x = subgroupXor(data[0].u4.x); data[invocation].u4.xy = subgroupXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupXor(data[2].u4.xyz); data[invocation].u4 = subgroupXor(data[3].u4); data[invocation].i4.x = int(subgroupXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupInclusiveAdd(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveAdd(data[3].f4); data[invocation].i4.x = subgroupInclusiveAdd(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveAdd(data[3].i4); data[invocation].u4.x = subgroupInclusiveAdd(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveAdd(data[3].u4); data[invocation].d4.x = subgroupInclusiveAdd(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveAdd(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveAdd(data[3].d4); data[invocation].f4.x = subgroupInclusiveMul(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMul(data[3].f4); data[invocation].i4.x = subgroupInclusiveMul(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMul(data[3].i4); data[invocation].u4.x = subgroupInclusiveMul(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMul(data[3].u4); data[invocation].d4.x = subgroupInclusiveMul(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMul(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMul(data[3].d4); data[invocation].f4.x = subgroupInclusiveMin(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMin(data[3].f4); data[invocation].i4.x = subgroupInclusiveMin(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMin(data[3].i4); data[invocation].u4.x = subgroupInclusiveMin(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMin(data[3].u4); data[invocation].d4.x = subgroupInclusiveMin(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMin(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMin(data[3].d4); data[invocation].f4.x = subgroupInclusiveMax(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMax(data[3].f4); data[invocation].i4.x = subgroupInclusiveMax(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMax(data[3].i4); data[invocation].u4.x = subgroupInclusiveMax(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMax(data[3].u4); data[invocation].d4.x = subgroupInclusiveMax(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMax(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMax(data[3].d4); data[invocation].i4.x = subgroupInclusiveAnd(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveAnd(data[3].i4); data[invocation].u4.x = subgroupInclusiveAnd(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveAnd(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupInclusiveOr(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveOr(data[3].i4); data[invocation].u4.x = subgroupInclusiveOr(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveOr(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupInclusiveXor(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveXor(data[3].i4); data[invocation].u4.x = subgroupInclusiveXor(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveXor(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupExclusiveAdd(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveAdd(data[3].f4); data[invocation].i4.x = subgroupExclusiveAdd(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveAdd(data[3].i4); data[invocation].u4.x = subgroupExclusiveAdd(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveAdd(data[3].u4); data[invocation].d4.x = subgroupExclusiveAdd(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveAdd(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveAdd(data[3].d4); data[invocation].f4.x = subgroupExclusiveMul(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMul(data[3].f4); data[invocation].i4.x = subgroupExclusiveMul(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMul(data[3].i4); data[invocation].u4.x = subgroupExclusiveMul(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMul(data[3].u4); data[invocation].d4.x = subgroupExclusiveMul(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMul(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMul(data[3].d4); data[invocation].f4.x = subgroupExclusiveMin(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMin(data[3].f4); data[invocation].i4.x = subgroupExclusiveMin(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMin(data[3].i4); data[invocation].u4.x = subgroupExclusiveMin(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMin(data[3].u4); data[invocation].d4.x = subgroupExclusiveMin(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMin(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMin(data[3].d4); data[invocation].f4.x = subgroupExclusiveMax(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMax(data[3].f4); data[invocation].i4.x = subgroupExclusiveMax(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMax(data[3].i4); data[invocation].u4.x = subgroupExclusiveMax(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMax(data[3].u4); data[invocation].d4.x = subgroupExclusiveMax(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMax(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMax(data[3].d4); data[invocation].i4.x = subgroupExclusiveAnd(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveAnd(data[3].i4); data[invocation].u4.x = subgroupExclusiveAnd(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveAnd(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupExclusiveOr(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveOr(data[3].i4); data[invocation].u4.x = subgroupExclusiveOr(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveOr(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupExclusiveXor(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveXor(data[3].i4); data[invocation].u4.x = subgroupExclusiveXor(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveXor(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0)))); } glslang-16.0.0/Test/spv.subgroupBallot.comp000066400000000000000000000101401506534232700206420ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_ballot: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 relMask = gl_SubgroupEqMask + gl_SubgroupGeMask + gl_SubgroupGtMask + gl_SubgroupLeMask + gl_SubgroupLtMask; uvec4 result = subgroupBallot(true); data[invocation].u4.x = subgroupBallotBitCount(result); data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0; data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result); data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result); if ((relMask == result) && subgroupInverseBallot(data[0].u4)) { data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, 3); data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, 3); data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3); data[invocation].f4 = subgroupBroadcast(data[3].f4, 3); data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, 2); data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, 2); data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2); data[invocation].i4 = subgroupBroadcast(data[3].i4, 2); data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, 1); data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1); data[invocation].u4 = subgroupBroadcast(data[3].u4, 1); data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, 0); data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, 0); data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, 0); data[invocation].d4 = subgroupBroadcast(data[3].d4, 0); data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1)); } else { data[invocation].f4.x = subgroupBroadcastFirst(data[0].f4.x); data[invocation].f4.xy = subgroupBroadcastFirst(data[1].f4.xy); data[invocation].f4.xyz = subgroupBroadcastFirst(data[2].f4.xyz); data[invocation].f4 = subgroupBroadcastFirst(data[3].f4); data[invocation].i4.x = subgroupBroadcastFirst(data[0].i4.x); data[invocation].i4.xy = subgroupBroadcastFirst(data[1].i4.xy); data[invocation].i4.xyz = subgroupBroadcastFirst(data[2].i4.xyz); data[invocation].i4 = subgroupBroadcastFirst(data[3].i4); data[invocation].u4.x = subgroupBroadcastFirst(data[0].u4.x); data[invocation].u4.xy = subgroupBroadcastFirst(data[1].u4.xy); data[invocation].u4.xyz = subgroupBroadcastFirst(data[2].u4.xyz); data[invocation].u4 = subgroupBroadcastFirst(data[3].u4); data[invocation].d4.x = subgroupBroadcastFirst(data[0].d4.x); data[invocation].d4.xy = subgroupBroadcastFirst(data[1].d4.xy); data[invocation].d4.xyz = subgroupBroadcastFirst(data[2].d4.xyz); data[invocation].d4 = subgroupBroadcastFirst(data[3].d4); data[invocation].i4.x = int(subgroupBroadcastFirst(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupBroadcastFirst(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupBroadcastFirst(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupBroadcastFirst(lessThan(data[1].i4, ivec4(0)))); } } glslang-16.0.0/Test/spv.subgroupBallotNeg.comp000066400000000000000000000020311506534232700212740ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_ballot: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 relMask = gl_SubgroupEqMask + gl_SubgroupGeMask + gl_SubgroupGtMask + gl_SubgroupLeMask + gl_SubgroupLtMask; uvec4 result = subgroupBallot(true); data[invocation].u4.x = subgroupBallotBitCount(result); data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0; data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result); data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result); data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant } glslang-16.0.0/Test/spv.subgroupBasic.comp000066400000000000000000000010411506534232700204460ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_basic: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffer { int a[]; } data; void main() { data.a[gl_SubgroupSize] = 1; data.a[gl_SubgroupInvocationID] = 1; data.a[gl_NumSubgroups] = 1; data.a[gl_SubgroupID] = (subgroupElect()) ? 1 : 0; subgroupBarrier(); subgroupMemoryBarrier(); subgroupMemoryBarrierBuffer(); subgroupMemoryBarrierShared(); subgroupMemoryBarrierImage(); } glslang-16.0.0/Test/spv.subgroupClustered.comp000066400000000000000000000167371506534232700214010ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_clustered: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupClusteredAdd(data[0].f4.x, 1); data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupClusteredAdd(data[2].f4.xyz, 1); data[invocation].f4 = subgroupClusteredAdd(data[3].f4, 1); data[invocation].i4.x = subgroupClusteredAdd(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredAdd(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredAdd(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredAdd(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredAdd(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredAdd(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredAdd(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredAdd(data[3].u4, 1); data[invocation].d4.x = subgroupClusteredAdd(data[0].d4.x, 1); data[invocation].d4.xy = subgroupClusteredAdd(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupClusteredAdd(data[2].d4.xyz, 1); data[invocation].d4 = subgroupClusteredAdd(data[3].d4, 1); data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 1); data[invocation].f4.xy = subgroupClusteredMul(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupClusteredMul(data[2].f4.xyz, 1); data[invocation].f4 = subgroupClusteredMul(data[3].f4, 1); data[invocation].i4.x = subgroupClusteredMul(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredMul(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredMul(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredMul(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredMul(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredMul(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredMul(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredMul(data[3].u4, 1); data[invocation].d4.x = subgroupClusteredMul(data[0].d4.x, 1); data[invocation].d4.xy = subgroupClusteredMul(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupClusteredMul(data[2].d4.xyz, 1); data[invocation].d4 = subgroupClusteredMul(data[3].d4, 1); data[invocation].f4.x = subgroupClusteredMin(data[0].f4.x, 1); data[invocation].f4.xy = subgroupClusteredMin(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupClusteredMin(data[2].f4.xyz, 1); data[invocation].f4 = subgroupClusteredMin(data[3].f4, 1); data[invocation].i4.x = subgroupClusteredMin(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredMin(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredMin(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredMin(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredMin(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredMin(data[3].u4, 1); data[invocation].d4.x = subgroupClusteredMin(data[0].d4.x, 1); data[invocation].d4.xy = subgroupClusteredMin(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupClusteredMin(data[2].d4.xyz, 1); data[invocation].d4 = subgroupClusteredMin(data[3].d4, 1); data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, 1); data[invocation].f4.xy = subgroupClusteredMax(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupClusteredMax(data[2].f4.xyz, 1); data[invocation].f4 = subgroupClusteredMax(data[3].f4, 1); data[invocation].i4.x = subgroupClusteredMax(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredMax(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredMax(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredMax(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredMax(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredMax(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredMax(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredMax(data[3].u4, 1); data[invocation].d4.x = subgroupClusteredMax(data[0].d4.x, 1); data[invocation].d4.xy = subgroupClusteredMax(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupClusteredMax(data[2].d4.xyz, 1); data[invocation].d4 = subgroupClusteredMax(data[3].d4, 1); data[invocation].i4.x = subgroupClusteredAnd(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredAnd(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredAnd(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredAnd(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredAnd(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredAnd(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredAnd(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredAnd(data[3].u4, 1); data[invocation].i4.x = int(subgroupClusteredAnd(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupClusteredAnd(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupClusteredAnd(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupClusteredAnd(lessThan(data[1].i4, ivec4(0)), 1)); data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredOr(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredOr(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredOr(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredOr(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredOr(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredOr(data[3].u4, 1); data[invocation].i4.x = int(subgroupClusteredOr(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupClusteredOr(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupClusteredOr(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupClusteredOr(lessThan(data[1].i4, ivec4(0)), 1)); data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1); data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1); data[invocation].i4 = subgroupClusteredXor(data[3].i4, 1); data[invocation].u4.x = subgroupClusteredXor(data[0].u4.x, 1); data[invocation].u4.xy = subgroupClusteredXor(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupClusteredXor(data[2].u4.xyz, 1); data[invocation].u4 = subgroupClusteredXor(data[3].u4, 1); data[invocation].i4.x = int(subgroupClusteredXor(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupClusteredXor(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupClusteredXor(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupClusteredXor(lessThan(data[1].i4, ivec4(0)), 1)); } glslang-16.0.0/Test/spv.subgroupClusteredNeg.comp000066400000000000000000000026171506534232700220230ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_clustered: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { int a = 1; const int aConst = 1; uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 0); // ERROR, less than 1 data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 3); // ERROR, not a power of 2 data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 8); data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6); // ERROR, not a power of 2 data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, -1); // ERROR, less than 1 data[invocation].i4 = subgroupClusteredAnd(data[3].i4, -3); // ERROR, less than 1 data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, a); // ERROR, not constant data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, aConst); data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1 + a); // ERROR, not constant data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, aConst + a); // ERROR, not constant data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1 + aConst); } glslang-16.0.0/Test/spv.subgroupExtendedTypesArithmetic.comp000066400000000000000000001103121506534232700242260ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_arithmetic: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupAdd(data[0].i8.x); data[invocation].i8.xy = subgroupAdd(data[1].i8.xy); data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz); data[invocation].i8 = subgroupAdd(data[3].i8); data[invocation].i8.x = subgroupMul(data[0].i8.x); data[invocation].i8.xy = subgroupMul(data[1].i8.xy); data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz); data[invocation].i8 = subgroupMul(data[3].i8); data[invocation].i8.x = subgroupMin(data[0].i8.x); data[invocation].i8.xy = subgroupMin(data[1].i8.xy); data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz); data[invocation].i8 = subgroupMin(data[3].i8); data[invocation].i8.x = subgroupMax(data[0].i8.x); data[invocation].i8.xy = subgroupMax(data[1].i8.xy); data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz); data[invocation].i8 = subgroupMax(data[3].i8); data[invocation].i8.x = subgroupAnd(data[0].i8.x); data[invocation].i8.xy = subgroupAnd(data[1].i8.xy); data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz); data[invocation].i8 = subgroupAnd(data[3].i8); data[invocation].i8.x = subgroupOr(data[0].i8.x); data[invocation].i8.xy = subgroupOr(data[1].i8.xy); data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz); data[invocation].i8 = subgroupOr(data[3].i8); data[invocation].i8.x = subgroupXor(data[0].i8.x); data[invocation].i8.xy = subgroupXor(data[1].i8.xy); data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz); data[invocation].i8 = subgroupXor(data[3].i8); data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveAdd(data[3].i8); data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveMul(data[3].i8); data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveMin(data[3].i8); data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveMax(data[3].i8); data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveAnd(data[3].i8); data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveOr(data[3].i8); data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveXor(data[3].i8); data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveAdd(data[3].i8); data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveMul(data[3].i8); data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveMin(data[3].i8); data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveMax(data[3].i8); data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveAnd(data[3].i8); data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveOr(data[3].i8); data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveXor(data[3].i8); data[invocation].u8.x = subgroupAdd(data[0].u8.x); data[invocation].u8.xy = subgroupAdd(data[1].u8.xy); data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz); data[invocation].u8 = subgroupAdd(data[3].u8); data[invocation].u8.x = subgroupMul(data[0].u8.x); data[invocation].u8.xy = subgroupMul(data[1].u8.xy); data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz); data[invocation].u8 = subgroupMul(data[3].u8); data[invocation].u8.x = subgroupMin(data[0].u8.x); data[invocation].u8.xy = subgroupMin(data[1].u8.xy); data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz); data[invocation].u8 = subgroupMin(data[3].u8); data[invocation].u8.x = subgroupMax(data[0].u8.x); data[invocation].u8.xy = subgroupMax(data[1].u8.xy); data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz); data[invocation].u8 = subgroupMax(data[3].u8); data[invocation].u8.x = subgroupAnd(data[0].u8.x); data[invocation].u8.xy = subgroupAnd(data[1].u8.xy); data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz); data[invocation].u8 = subgroupAnd(data[3].u8); data[invocation].u8.x = subgroupOr(data[0].u8.x); data[invocation].u8.xy = subgroupOr(data[1].u8.xy); data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz); data[invocation].u8 = subgroupOr(data[3].u8); data[invocation].u8.x = subgroupXor(data[0].u8.x); data[invocation].u8.xy = subgroupXor(data[1].u8.xy); data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz); data[invocation].u8 = subgroupXor(data[3].u8); data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveAdd(data[3].u8); data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveMul(data[3].u8); data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveMin(data[3].u8); data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveMax(data[3].u8); data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveAnd(data[3].u8); data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveOr(data[3].u8); data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveXor(data[3].u8); data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveAdd(data[3].u8); data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveMul(data[3].u8); data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveMin(data[3].u8); data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveMax(data[3].u8); data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveAnd(data[3].u8); data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveOr(data[3].u8); data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveXor(data[3].u8); data[invocation].i16.x = subgroupAdd(data[0].i16.x); data[invocation].i16.xy = subgroupAdd(data[1].i16.xy); data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz); data[invocation].i16 = subgroupAdd(data[3].i16); data[invocation].i16.x = subgroupMul(data[0].i16.x); data[invocation].i16.xy = subgroupMul(data[1].i16.xy); data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz); data[invocation].i16 = subgroupMul(data[3].i16); data[invocation].i16.x = subgroupMin(data[0].i16.x); data[invocation].i16.xy = subgroupMin(data[1].i16.xy); data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz); data[invocation].i16 = subgroupMin(data[3].i16); data[invocation].i16.x = subgroupMax(data[0].i16.x); data[invocation].i16.xy = subgroupMax(data[1].i16.xy); data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz); data[invocation].i16 = subgroupMax(data[3].i16); data[invocation].i16.x = subgroupAnd(data[0].i16.x); data[invocation].i16.xy = subgroupAnd(data[1].i16.xy); data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz); data[invocation].i16 = subgroupAnd(data[3].i16); data[invocation].i16.x = subgroupOr(data[0].i16.x); data[invocation].i16.xy = subgroupOr(data[1].i16.xy); data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz); data[invocation].i16 = subgroupOr(data[3].i16); data[invocation].i16.x = subgroupXor(data[0].i16.x); data[invocation].i16.xy = subgroupXor(data[1].i16.xy); data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz); data[invocation].i16 = subgroupXor(data[3].i16); data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveAdd(data[3].i16); data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveMul(data[3].i16); data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveMin(data[3].i16); data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveMax(data[3].i16); data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveAnd(data[3].i16); data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveOr(data[3].i16); data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveXor(data[3].i16); data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveAdd(data[3].i16); data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveMul(data[3].i16); data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveMin(data[3].i16); data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveMax(data[3].i16); data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveAnd(data[3].i16); data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveOr(data[3].i16); data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveXor(data[3].i16); data[invocation].u16.x = subgroupAdd(data[0].u16.x); data[invocation].u16.xy = subgroupAdd(data[1].u16.xy); data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz); data[invocation].u16 = subgroupAdd(data[3].u16); data[invocation].u16.x = subgroupMul(data[0].u16.x); data[invocation].u16.xy = subgroupMul(data[1].u16.xy); data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz); data[invocation].u16 = subgroupMul(data[3].u16); data[invocation].u16.x = subgroupMin(data[0].u16.x); data[invocation].u16.xy = subgroupMin(data[1].u16.xy); data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz); data[invocation].u16 = subgroupMin(data[3].u16); data[invocation].u16.x = subgroupMax(data[0].u16.x); data[invocation].u16.xy = subgroupMax(data[1].u16.xy); data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz); data[invocation].u16 = subgroupMax(data[3].u16); data[invocation].u16.x = subgroupAnd(data[0].u16.x); data[invocation].u16.xy = subgroupAnd(data[1].u16.xy); data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz); data[invocation].u16 = subgroupAnd(data[3].u16); data[invocation].u16.x = subgroupOr(data[0].u16.x); data[invocation].u16.xy = subgroupOr(data[1].u16.xy); data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz); data[invocation].u16 = subgroupOr(data[3].u16); data[invocation].u16.x = subgroupXor(data[0].u16.x); data[invocation].u16.xy = subgroupXor(data[1].u16.xy); data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz); data[invocation].u16 = subgroupXor(data[3].u16); data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveAdd(data[3].u16); data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveMul(data[3].u16); data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveMin(data[3].u16); data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveMax(data[3].u16); data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveAnd(data[3].u16); data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveOr(data[3].u16); data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveXor(data[3].u16); data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveAdd(data[3].u16); data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveMul(data[3].u16); data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveMin(data[3].u16); data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveMax(data[3].u16); data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveAnd(data[3].u16); data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveOr(data[3].u16); data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveXor(data[3].u16); data[invocation].i64.x = subgroupAdd(data[0].i64.x); data[invocation].i64.xy = subgroupAdd(data[1].i64.xy); data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz); data[invocation].i64 = subgroupAdd(data[3].i64); data[invocation].i64.x = subgroupMul(data[0].i64.x); data[invocation].i64.xy = subgroupMul(data[1].i64.xy); data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz); data[invocation].i64 = subgroupMul(data[3].i64); data[invocation].i64.x = subgroupMin(data[0].i64.x); data[invocation].i64.xy = subgroupMin(data[1].i64.xy); data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz); data[invocation].i64 = subgroupMin(data[3].i64); data[invocation].i64.x = subgroupMax(data[0].i64.x); data[invocation].i64.xy = subgroupMax(data[1].i64.xy); data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz); data[invocation].i64 = subgroupMax(data[3].i64); data[invocation].i64.x = subgroupAnd(data[0].i64.x); data[invocation].i64.xy = subgroupAnd(data[1].i64.xy); data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz); data[invocation].i64 = subgroupAnd(data[3].i64); data[invocation].i64.x = subgroupOr(data[0].i64.x); data[invocation].i64.xy = subgroupOr(data[1].i64.xy); data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz); data[invocation].i64 = subgroupOr(data[3].i64); data[invocation].i64.x = subgroupXor(data[0].i64.x); data[invocation].i64.xy = subgroupXor(data[1].i64.xy); data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz); data[invocation].i64 = subgroupXor(data[3].i64); data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveAdd(data[3].i64); data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveMul(data[3].i64); data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveMin(data[3].i64); data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveMax(data[3].i64); data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveAnd(data[3].i64); data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveOr(data[3].i64); data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveXor(data[3].i64); data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveAdd(data[3].i64); data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveMul(data[3].i64); data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveMin(data[3].i64); data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveMax(data[3].i64); data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveAnd(data[3].i64); data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveOr(data[3].i64); data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveXor(data[3].i64); data[invocation].u64.x = subgroupAdd(data[0].u64.x); data[invocation].u64.xy = subgroupAdd(data[1].u64.xy); data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz); data[invocation].u64 = subgroupAdd(data[3].u64); data[invocation].u64.x = subgroupMul(data[0].u64.x); data[invocation].u64.xy = subgroupMul(data[1].u64.xy); data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz); data[invocation].u64 = subgroupMul(data[3].u64); data[invocation].u64.x = subgroupMin(data[0].u64.x); data[invocation].u64.xy = subgroupMin(data[1].u64.xy); data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz); data[invocation].u64 = subgroupMin(data[3].u64); data[invocation].u64.x = subgroupMax(data[0].u64.x); data[invocation].u64.xy = subgroupMax(data[1].u64.xy); data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz); data[invocation].u64 = subgroupMax(data[3].u64); data[invocation].u64.x = subgroupAnd(data[0].u64.x); data[invocation].u64.xy = subgroupAnd(data[1].u64.xy); data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz); data[invocation].u64 = subgroupAnd(data[3].u64); data[invocation].u64.x = subgroupOr(data[0].u64.x); data[invocation].u64.xy = subgroupOr(data[1].u64.xy); data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz); data[invocation].u64 = subgroupOr(data[3].u64); data[invocation].u64.x = subgroupXor(data[0].u64.x); data[invocation].u64.xy = subgroupXor(data[1].u64.xy); data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz); data[invocation].u64 = subgroupXor(data[3].u64); data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveAdd(data[3].u64); data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveMul(data[3].u64); data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveMin(data[3].u64); data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveMax(data[3].u64); data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveAnd(data[3].u64); data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveOr(data[3].u64); data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveXor(data[3].u64); data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveAdd(data[3].u64); data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveMul(data[3].u64); data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveMin(data[3].u64); data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveMax(data[3].u64); data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveAnd(data[3].u64); data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveOr(data[3].u64); data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveXor(data[3].u64); data[invocation].f16.x = subgroupAdd(data[0].f16.x); data[invocation].f16.xy = subgroupAdd(data[1].f16.xy); data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz); data[invocation].f16 = subgroupAdd(data[3].f16); data[invocation].f16.x = subgroupMul(data[0].f16.x); data[invocation].f16.xy = subgroupMul(data[1].f16.xy); data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz); data[invocation].f16 = subgroupMul(data[3].f16); data[invocation].f16.x = subgroupMin(data[0].f16.x); data[invocation].f16.xy = subgroupMin(data[1].f16.xy); data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz); data[invocation].f16 = subgroupMin(data[3].f16); data[invocation].f16.x = subgroupMax(data[0].f16.x); data[invocation].f16.xy = subgroupMax(data[1].f16.xy); data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz); data[invocation].f16 = subgroupMax(data[3].f16); data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x); data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy); data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz); data[invocation].f16 = subgroupInclusiveAdd(data[3].f16); data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x); data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy); data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz); data[invocation].f16 = subgroupInclusiveMul(data[3].f16); data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x); data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy); data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz); data[invocation].f16 = subgroupInclusiveMin(data[3].f16); data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x); data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy); data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz); data[invocation].f16 = subgroupInclusiveMax(data[3].f16); data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x); data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy); data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz); data[invocation].f16 = subgroupExclusiveAdd(data[3].f16); data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x); data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy); data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz); data[invocation].f16 = subgroupExclusiveMul(data[3].f16); data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x); data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy); data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz); data[invocation].f16 = subgroupExclusiveMin(data[3].f16); data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x); data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy); data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz); data[invocation].f16 = subgroupExclusiveMax(data[3].f16); } glslang-16.0.0/Test/spv.subgroupExtendedTypesArithmeticNeg.comp000066400000000000000000001103221506534232700246610ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_arithmetic: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupAdd(data[0].i8.x); data[invocation].i8.xy = subgroupAdd(data[1].i8.xy); data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz); data[invocation].i8 = subgroupAdd(data[3].i8); data[invocation].i8.x = subgroupMul(data[0].i8.x); data[invocation].i8.xy = subgroupMul(data[1].i8.xy); data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz); data[invocation].i8 = subgroupMul(data[3].i8); data[invocation].i8.x = subgroupMin(data[0].i8.x); data[invocation].i8.xy = subgroupMin(data[1].i8.xy); data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz); data[invocation].i8 = subgroupMin(data[3].i8); data[invocation].i8.x = subgroupMax(data[0].i8.x); data[invocation].i8.xy = subgroupMax(data[1].i8.xy); data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz); data[invocation].i8 = subgroupMax(data[3].i8); data[invocation].i8.x = subgroupAnd(data[0].i8.x); data[invocation].i8.xy = subgroupAnd(data[1].i8.xy); data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz); data[invocation].i8 = subgroupAnd(data[3].i8); data[invocation].i8.x = subgroupOr(data[0].i8.x); data[invocation].i8.xy = subgroupOr(data[1].i8.xy); data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz); data[invocation].i8 = subgroupOr(data[3].i8); data[invocation].i8.x = subgroupXor(data[0].i8.x); data[invocation].i8.xy = subgroupXor(data[1].i8.xy); data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz); data[invocation].i8 = subgroupXor(data[3].i8); data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveAdd(data[3].i8); data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveMul(data[3].i8); data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveMin(data[3].i8); data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveMax(data[3].i8); data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveAnd(data[3].i8); data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveOr(data[3].i8); data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x); data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy); data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz); data[invocation].i8 = subgroupInclusiveXor(data[3].i8); data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveAdd(data[3].i8); data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveMul(data[3].i8); data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveMin(data[3].i8); data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveMax(data[3].i8); data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveAnd(data[3].i8); data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveOr(data[3].i8); data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x); data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy); data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz); data[invocation].i8 = subgroupExclusiveXor(data[3].i8); data[invocation].u8.x = subgroupAdd(data[0].u8.x); data[invocation].u8.xy = subgroupAdd(data[1].u8.xy); data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz); data[invocation].u8 = subgroupAdd(data[3].u8); data[invocation].u8.x = subgroupMul(data[0].u8.x); data[invocation].u8.xy = subgroupMul(data[1].u8.xy); data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz); data[invocation].u8 = subgroupMul(data[3].u8); data[invocation].u8.x = subgroupMin(data[0].u8.x); data[invocation].u8.xy = subgroupMin(data[1].u8.xy); data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz); data[invocation].u8 = subgroupMin(data[3].u8); data[invocation].u8.x = subgroupMax(data[0].u8.x); data[invocation].u8.xy = subgroupMax(data[1].u8.xy); data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz); data[invocation].u8 = subgroupMax(data[3].u8); data[invocation].u8.x = subgroupAnd(data[0].u8.x); data[invocation].u8.xy = subgroupAnd(data[1].u8.xy); data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz); data[invocation].u8 = subgroupAnd(data[3].u8); data[invocation].u8.x = subgroupOr(data[0].u8.x); data[invocation].u8.xy = subgroupOr(data[1].u8.xy); data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz); data[invocation].u8 = subgroupOr(data[3].u8); data[invocation].u8.x = subgroupXor(data[0].u8.x); data[invocation].u8.xy = subgroupXor(data[1].u8.xy); data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz); data[invocation].u8 = subgroupXor(data[3].u8); data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveAdd(data[3].u8); data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveMul(data[3].u8); data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveMin(data[3].u8); data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveMax(data[3].u8); data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveAnd(data[3].u8); data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveOr(data[3].u8); data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x); data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy); data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz); data[invocation].u8 = subgroupInclusiveXor(data[3].u8); data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveAdd(data[3].u8); data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveMul(data[3].u8); data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveMin(data[3].u8); data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveMax(data[3].u8); data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveAnd(data[3].u8); data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveOr(data[3].u8); data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x); data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy); data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz); data[invocation].u8 = subgroupExclusiveXor(data[3].u8); data[invocation].i16.x = subgroupAdd(data[0].i16.x); data[invocation].i16.xy = subgroupAdd(data[1].i16.xy); data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz); data[invocation].i16 = subgroupAdd(data[3].i16); data[invocation].i16.x = subgroupMul(data[0].i16.x); data[invocation].i16.xy = subgroupMul(data[1].i16.xy); data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz); data[invocation].i16 = subgroupMul(data[3].i16); data[invocation].i16.x = subgroupMin(data[0].i16.x); data[invocation].i16.xy = subgroupMin(data[1].i16.xy); data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz); data[invocation].i16 = subgroupMin(data[3].i16); data[invocation].i16.x = subgroupMax(data[0].i16.x); data[invocation].i16.xy = subgroupMax(data[1].i16.xy); data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz); data[invocation].i16 = subgroupMax(data[3].i16); data[invocation].i16.x = subgroupAnd(data[0].i16.x); data[invocation].i16.xy = subgroupAnd(data[1].i16.xy); data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz); data[invocation].i16 = subgroupAnd(data[3].i16); data[invocation].i16.x = subgroupOr(data[0].i16.x); data[invocation].i16.xy = subgroupOr(data[1].i16.xy); data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz); data[invocation].i16 = subgroupOr(data[3].i16); data[invocation].i16.x = subgroupXor(data[0].i16.x); data[invocation].i16.xy = subgroupXor(data[1].i16.xy); data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz); data[invocation].i16 = subgroupXor(data[3].i16); data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveAdd(data[3].i16); data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveMul(data[3].i16); data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveMin(data[3].i16); data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveMax(data[3].i16); data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveAnd(data[3].i16); data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveOr(data[3].i16); data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x); data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy); data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz); data[invocation].i16 = subgroupInclusiveXor(data[3].i16); data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveAdd(data[3].i16); data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveMul(data[3].i16); data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveMin(data[3].i16); data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveMax(data[3].i16); data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveAnd(data[3].i16); data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveOr(data[3].i16); data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x); data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy); data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz); data[invocation].i16 = subgroupExclusiveXor(data[3].i16); data[invocation].u16.x = subgroupAdd(data[0].u16.x); data[invocation].u16.xy = subgroupAdd(data[1].u16.xy); data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz); data[invocation].u16 = subgroupAdd(data[3].u16); data[invocation].u16.x = subgroupMul(data[0].u16.x); data[invocation].u16.xy = subgroupMul(data[1].u16.xy); data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz); data[invocation].u16 = subgroupMul(data[3].u16); data[invocation].u16.x = subgroupMin(data[0].u16.x); data[invocation].u16.xy = subgroupMin(data[1].u16.xy); data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz); data[invocation].u16 = subgroupMin(data[3].u16); data[invocation].u16.x = subgroupMax(data[0].u16.x); data[invocation].u16.xy = subgroupMax(data[1].u16.xy); data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz); data[invocation].u16 = subgroupMax(data[3].u16); data[invocation].u16.x = subgroupAnd(data[0].u16.x); data[invocation].u16.xy = subgroupAnd(data[1].u16.xy); data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz); data[invocation].u16 = subgroupAnd(data[3].u16); data[invocation].u16.x = subgroupOr(data[0].u16.x); data[invocation].u16.xy = subgroupOr(data[1].u16.xy); data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz); data[invocation].u16 = subgroupOr(data[3].u16); data[invocation].u16.x = subgroupXor(data[0].u16.x); data[invocation].u16.xy = subgroupXor(data[1].u16.xy); data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz); data[invocation].u16 = subgroupXor(data[3].u16); data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveAdd(data[3].u16); data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveMul(data[3].u16); data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveMin(data[3].u16); data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveMax(data[3].u16); data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveAnd(data[3].u16); data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveOr(data[3].u16); data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x); data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy); data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz); data[invocation].u16 = subgroupInclusiveXor(data[3].u16); data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveAdd(data[3].u16); data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveMul(data[3].u16); data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveMin(data[3].u16); data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveMax(data[3].u16); data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveAnd(data[3].u16); data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveOr(data[3].u16); data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x); data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy); data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz); data[invocation].u16 = subgroupExclusiveXor(data[3].u16); data[invocation].i64.x = subgroupAdd(data[0].i64.x); data[invocation].i64.xy = subgroupAdd(data[1].i64.xy); data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz); data[invocation].i64 = subgroupAdd(data[3].i64); data[invocation].i64.x = subgroupMul(data[0].i64.x); data[invocation].i64.xy = subgroupMul(data[1].i64.xy); data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz); data[invocation].i64 = subgroupMul(data[3].i64); data[invocation].i64.x = subgroupMin(data[0].i64.x); data[invocation].i64.xy = subgroupMin(data[1].i64.xy); data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz); data[invocation].i64 = subgroupMin(data[3].i64); data[invocation].i64.x = subgroupMax(data[0].i64.x); data[invocation].i64.xy = subgroupMax(data[1].i64.xy); data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz); data[invocation].i64 = subgroupMax(data[3].i64); data[invocation].i64.x = subgroupAnd(data[0].i64.x); data[invocation].i64.xy = subgroupAnd(data[1].i64.xy); data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz); data[invocation].i64 = subgroupAnd(data[3].i64); data[invocation].i64.x = subgroupOr(data[0].i64.x); data[invocation].i64.xy = subgroupOr(data[1].i64.xy); data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz); data[invocation].i64 = subgroupOr(data[3].i64); data[invocation].i64.x = subgroupXor(data[0].i64.x); data[invocation].i64.xy = subgroupXor(data[1].i64.xy); data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz); data[invocation].i64 = subgroupXor(data[3].i64); data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveAdd(data[3].i64); data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveMul(data[3].i64); data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveMin(data[3].i64); data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveMax(data[3].i64); data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveAnd(data[3].i64); data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveOr(data[3].i64); data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x); data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy); data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz); data[invocation].i64 = subgroupInclusiveXor(data[3].i64); data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveAdd(data[3].i64); data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveMul(data[3].i64); data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveMin(data[3].i64); data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveMax(data[3].i64); data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveAnd(data[3].i64); data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveOr(data[3].i64); data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x); data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy); data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz); data[invocation].i64 = subgroupExclusiveXor(data[3].i64); data[invocation].u64.x = subgroupAdd(data[0].u64.x); data[invocation].u64.xy = subgroupAdd(data[1].u64.xy); data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz); data[invocation].u64 = subgroupAdd(data[3].u64); data[invocation].u64.x = subgroupMul(data[0].u64.x); data[invocation].u64.xy = subgroupMul(data[1].u64.xy); data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz); data[invocation].u64 = subgroupMul(data[3].u64); data[invocation].u64.x = subgroupMin(data[0].u64.x); data[invocation].u64.xy = subgroupMin(data[1].u64.xy); data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz); data[invocation].u64 = subgroupMin(data[3].u64); data[invocation].u64.x = subgroupMax(data[0].u64.x); data[invocation].u64.xy = subgroupMax(data[1].u64.xy); data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz); data[invocation].u64 = subgroupMax(data[3].u64); data[invocation].u64.x = subgroupAnd(data[0].u64.x); data[invocation].u64.xy = subgroupAnd(data[1].u64.xy); data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz); data[invocation].u64 = subgroupAnd(data[3].u64); data[invocation].u64.x = subgroupOr(data[0].u64.x); data[invocation].u64.xy = subgroupOr(data[1].u64.xy); data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz); data[invocation].u64 = subgroupOr(data[3].u64); data[invocation].u64.x = subgroupXor(data[0].u64.x); data[invocation].u64.xy = subgroupXor(data[1].u64.xy); data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz); data[invocation].u64 = subgroupXor(data[3].u64); data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveAdd(data[3].u64); data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveMul(data[3].u64); data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveMin(data[3].u64); data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveMax(data[3].u64); data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveAnd(data[3].u64); data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveOr(data[3].u64); data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x); data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy); data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz); data[invocation].u64 = subgroupInclusiveXor(data[3].u64); data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveAdd(data[3].u64); data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveMul(data[3].u64); data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveMin(data[3].u64); data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveMax(data[3].u64); data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveAnd(data[3].u64); data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveOr(data[3].u64); data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x); data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy); data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz); data[invocation].u64 = subgroupExclusiveXor(data[3].u64); data[invocation].f16.x = subgroupAdd(data[0].f16.x); data[invocation].f16.xy = subgroupAdd(data[1].f16.xy); data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz); data[invocation].f16 = subgroupAdd(data[3].f16); data[invocation].f16.x = subgroupMul(data[0].f16.x); data[invocation].f16.xy = subgroupMul(data[1].f16.xy); data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz); data[invocation].f16 = subgroupMul(data[3].f16); data[invocation].f16.x = subgroupMin(data[0].f16.x); data[invocation].f16.xy = subgroupMin(data[1].f16.xy); data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz); data[invocation].f16 = subgroupMin(data[3].f16); data[invocation].f16.x = subgroupMax(data[0].f16.x); data[invocation].f16.xy = subgroupMax(data[1].f16.xy); data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz); data[invocation].f16 = subgroupMax(data[3].f16); data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x); data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy); data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz); data[invocation].f16 = subgroupInclusiveAdd(data[3].f16); data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x); data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy); data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz); data[invocation].f16 = subgroupInclusiveMul(data[3].f16); data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x); data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy); data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz); data[invocation].f16 = subgroupInclusiveMin(data[3].f16); data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x); data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy); data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz); data[invocation].f16 = subgroupInclusiveMax(data[3].f16); data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x); data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy); data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz); data[invocation].f16 = subgroupExclusiveAdd(data[3].f16); data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x); data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy); data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz); data[invocation].f16 = subgroupExclusiveMul(data[3].f16); data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x); data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy); data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz); data[invocation].f16 = subgroupExclusiveMin(data[3].f16); data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x); data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy); data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz); data[invocation].f16 = subgroupExclusiveMax(data[3].f16); } glslang-16.0.0/Test/spv.subgroupExtendedTypesBallot.comp000066400000000000000000000110111506534232700233460ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_ballot: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupBroadcast(data[0].i8.x, 3); data[invocation].i8.xy = subgroupBroadcast(data[1].i8.xy, 3); data[invocation].i8.xyz = subgroupBroadcast(data[2].i8.xyz, 3); data[invocation].i8 = subgroupBroadcast(data[3].i8, 3); data[invocation].i8.x = subgroupBroadcastFirst(data[0].i8.x); data[invocation].i8.xy = subgroupBroadcastFirst(data[1].i8.xy); data[invocation].i8.xyz = subgroupBroadcastFirst(data[2].i8.xyz); data[invocation].i8 = subgroupBroadcastFirst(data[3].i8); data[invocation].u8.x = subgroupBroadcast(data[0].u8.x, 3); data[invocation].u8.xy = subgroupBroadcast(data[1].u8.xy, 3); data[invocation].u8.xyz = subgroupBroadcast(data[2].u8.xyz, 3); data[invocation].u8 = subgroupBroadcast(data[3].u8, 3); data[invocation].u8.x = subgroupBroadcastFirst(data[0].u8.x); data[invocation].u8.xy = subgroupBroadcastFirst(data[1].u8.xy); data[invocation].u8.xyz = subgroupBroadcastFirst(data[2].u8.xyz); data[invocation].u8 = subgroupBroadcastFirst(data[3].u8); data[invocation].i16.x = subgroupBroadcast(data[0].i16.x, 3); data[invocation].i16.xy = subgroupBroadcast(data[1].i16.xy, 3); data[invocation].i16.xyz = subgroupBroadcast(data[2].i16.xyz, 3); data[invocation].i16 = subgroupBroadcast(data[3].i16, 3); data[invocation].i16.x = subgroupBroadcastFirst(data[0].i16.x); data[invocation].i16.xy = subgroupBroadcastFirst(data[1].i16.xy); data[invocation].i16.xyz = subgroupBroadcastFirst(data[2].i16.xyz); data[invocation].i16 = subgroupBroadcastFirst(data[3].i16); data[invocation].u16.x = subgroupBroadcast(data[0].u16.x, 3); data[invocation].u16.xy = subgroupBroadcast(data[1].u16.xy, 3); data[invocation].u16.xyz = subgroupBroadcast(data[2].u16.xyz, 3); data[invocation].u16 = subgroupBroadcast(data[3].u16, 3); data[invocation].u16.x = subgroupBroadcastFirst(data[0].u16.x); data[invocation].u16.xy = subgroupBroadcastFirst(data[1].u16.xy); data[invocation].u16.xyz = subgroupBroadcastFirst(data[2].u16.xyz); data[invocation].u16 = subgroupBroadcastFirst(data[3].u16); data[invocation].i64.x = subgroupBroadcast(data[0].i64.x, 3); data[invocation].i64.xy = subgroupBroadcast(data[1].i64.xy, 3); data[invocation].i64.xyz = subgroupBroadcast(data[2].i64.xyz, 3); data[invocation].i64 = subgroupBroadcast(data[3].i64, 3); data[invocation].i64.x = subgroupBroadcastFirst(data[0].i64.x); data[invocation].i64.xy = subgroupBroadcastFirst(data[1].i64.xy); data[invocation].i64.xyz = subgroupBroadcastFirst(data[2].i64.xyz); data[invocation].i64 = subgroupBroadcastFirst(data[3].i64); data[invocation].u64.x = subgroupBroadcast(data[0].u64.x, 3); data[invocation].u64.xy = subgroupBroadcast(data[1].u64.xy, 3); data[invocation].u64.xyz = subgroupBroadcast(data[2].u64.xyz, 3); data[invocation].u64 = subgroupBroadcast(data[3].u64, 3); data[invocation].u64.x = subgroupBroadcastFirst(data[0].u64.x); data[invocation].u64.xy = subgroupBroadcastFirst(data[1].u64.xy); data[invocation].u64.xyz = subgroupBroadcastFirst(data[2].u64.xyz); data[invocation].u64 = subgroupBroadcastFirst(data[3].u64); data[invocation].f16.x = subgroupBroadcast(data[0].f16.x, 3); data[invocation].f16.xy = subgroupBroadcast(data[1].f16.xy, 3); data[invocation].f16.xyz = subgroupBroadcast(data[2].f16.xyz, 3); data[invocation].f16 = subgroupBroadcast(data[3].f16, 3); data[invocation].f16.x = subgroupBroadcastFirst(data[0].f16.x); data[invocation].f16.xy = subgroupBroadcastFirst(data[1].f16.xy); data[invocation].f16.xyz = subgroupBroadcastFirst(data[2].f16.xyz); data[invocation].f16 = subgroupBroadcastFirst(data[3].f16); } glslang-16.0.0/Test/spv.subgroupExtendedTypesBallotNeg.comp000066400000000000000000000110211506534232700240010ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_ballot: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupBroadcast(data[0].i8.x, 3); data[invocation].i8.xy = subgroupBroadcast(data[1].i8.xy, 3); data[invocation].i8.xyz = subgroupBroadcast(data[2].i8.xyz, 3); data[invocation].i8 = subgroupBroadcast(data[3].i8, 3); data[invocation].i8.x = subgroupBroadcastFirst(data[0].i8.x); data[invocation].i8.xy = subgroupBroadcastFirst(data[1].i8.xy); data[invocation].i8.xyz = subgroupBroadcastFirst(data[2].i8.xyz); data[invocation].i8 = subgroupBroadcastFirst(data[3].i8); data[invocation].u8.x = subgroupBroadcast(data[0].u8.x, 3); data[invocation].u8.xy = subgroupBroadcast(data[1].u8.xy, 3); data[invocation].u8.xyz = subgroupBroadcast(data[2].u8.xyz, 3); data[invocation].u8 = subgroupBroadcast(data[3].u8, 3); data[invocation].u8.x = subgroupBroadcastFirst(data[0].u8.x); data[invocation].u8.xy = subgroupBroadcastFirst(data[1].u8.xy); data[invocation].u8.xyz = subgroupBroadcastFirst(data[2].u8.xyz); data[invocation].u8 = subgroupBroadcastFirst(data[3].u8); data[invocation].i16.x = subgroupBroadcast(data[0].i16.x, 3); data[invocation].i16.xy = subgroupBroadcast(data[1].i16.xy, 3); data[invocation].i16.xyz = subgroupBroadcast(data[2].i16.xyz, 3); data[invocation].i16 = subgroupBroadcast(data[3].i16, 3); data[invocation].i16.x = subgroupBroadcastFirst(data[0].i16.x); data[invocation].i16.xy = subgroupBroadcastFirst(data[1].i16.xy); data[invocation].i16.xyz = subgroupBroadcastFirst(data[2].i16.xyz); data[invocation].i16 = subgroupBroadcastFirst(data[3].i16); data[invocation].u16.x = subgroupBroadcast(data[0].u16.x, 3); data[invocation].u16.xy = subgroupBroadcast(data[1].u16.xy, 3); data[invocation].u16.xyz = subgroupBroadcast(data[2].u16.xyz, 3); data[invocation].u16 = subgroupBroadcast(data[3].u16, 3); data[invocation].u16.x = subgroupBroadcastFirst(data[0].u16.x); data[invocation].u16.xy = subgroupBroadcastFirst(data[1].u16.xy); data[invocation].u16.xyz = subgroupBroadcastFirst(data[2].u16.xyz); data[invocation].u16 = subgroupBroadcastFirst(data[3].u16); data[invocation].i64.x = subgroupBroadcast(data[0].i64.x, 3); data[invocation].i64.xy = subgroupBroadcast(data[1].i64.xy, 3); data[invocation].i64.xyz = subgroupBroadcast(data[2].i64.xyz, 3); data[invocation].i64 = subgroupBroadcast(data[3].i64, 3); data[invocation].i64.x = subgroupBroadcastFirst(data[0].i64.x); data[invocation].i64.xy = subgroupBroadcastFirst(data[1].i64.xy); data[invocation].i64.xyz = subgroupBroadcastFirst(data[2].i64.xyz); data[invocation].i64 = subgroupBroadcastFirst(data[3].i64); data[invocation].u64.x = subgroupBroadcast(data[0].u64.x, 3); data[invocation].u64.xy = subgroupBroadcast(data[1].u64.xy, 3); data[invocation].u64.xyz = subgroupBroadcast(data[2].u64.xyz, 3); data[invocation].u64 = subgroupBroadcast(data[3].u64, 3); data[invocation].u64.x = subgroupBroadcastFirst(data[0].u64.x); data[invocation].u64.xy = subgroupBroadcastFirst(data[1].u64.xy); data[invocation].u64.xyz = subgroupBroadcastFirst(data[2].u64.xyz); data[invocation].u64 = subgroupBroadcastFirst(data[3].u64); data[invocation].f16.x = subgroupBroadcast(data[0].f16.x, 3); data[invocation].f16.xy = subgroupBroadcast(data[1].f16.xy, 3); data[invocation].f16.xyz = subgroupBroadcast(data[2].f16.xyz, 3); data[invocation].f16 = subgroupBroadcast(data[3].f16, 3); data[invocation].f16.x = subgroupBroadcastFirst(data[0].f16.x); data[invocation].f16.xy = subgroupBroadcastFirst(data[1].f16.xy); data[invocation].f16.xyz = subgroupBroadcastFirst(data[2].f16.xyz); data[invocation].f16 = subgroupBroadcastFirst(data[3].f16); } glslang-16.0.0/Test/spv.subgroupExtendedTypesClustered.comp000066400000000000000000000330651506534232700241000ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_clustered: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupClusteredAdd(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredAdd(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredAdd(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredAdd(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredMul(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredMul(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredMul(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredMul(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredMin(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredMin(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredMin(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredMin(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredMax(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredMax(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredMax(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredMax(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredAnd(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredAnd(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredAnd(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredAnd(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredOr(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredOr(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredOr(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredOr(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredXor(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredXor(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredXor(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredXor(data[3].i8, 1); data[invocation].u8.x = subgroupClusteredAdd(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredAdd(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredAdd(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredAdd(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredMul(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredMul(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredMul(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredMul(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredMin(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredMin(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredMin(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredMin(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredMax(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredMax(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredMax(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredMax(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredAnd(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredAnd(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredAnd(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredAnd(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredOr(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredOr(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredOr(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredOr(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredXor(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredXor(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredXor(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredXor(data[3].u8, 1); data[invocation].i16.x = subgroupClusteredAdd(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredAdd(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredAdd(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredAdd(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredMul(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredMul(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredMul(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredMul(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredMin(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredMin(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredMin(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredMin(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredMax(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredMax(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredMax(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredMax(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredAnd(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredAnd(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredAnd(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredAnd(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredOr(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredOr(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredOr(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredOr(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredXor(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredXor(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredXor(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredXor(data[3].i16, 1); data[invocation].u16.x = subgroupClusteredAdd(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredAdd(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredAdd(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredAdd(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredMul(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredMul(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredMul(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredMul(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredMin(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredMin(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredMin(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredMin(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredMax(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredMax(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredMax(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredMax(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredAnd(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredAnd(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredAnd(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredAnd(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredOr(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredOr(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredOr(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredOr(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredXor(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredXor(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredXor(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredXor(data[3].u16, 1); data[invocation].i64.x = subgroupClusteredAdd(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredAdd(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredAdd(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredAdd(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredMul(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredMul(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredMul(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredMul(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredMin(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredMin(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredMin(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredMin(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredMax(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredMax(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredMax(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredMax(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredAnd(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredAnd(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredAnd(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredAnd(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredOr(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredOr(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredOr(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredOr(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredXor(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredXor(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredXor(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredXor(data[3].i64, 1); data[invocation].u64.x = subgroupClusteredAdd(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredAdd(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredAdd(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredAdd(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredMul(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredMul(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredMul(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredMul(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredMin(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredMin(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredMin(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredMin(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredMax(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredMax(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredMax(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredMax(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredAnd(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredAnd(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredAnd(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredAnd(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredOr(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredOr(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredOr(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredOr(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredXor(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredXor(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredXor(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredXor(data[3].u64, 1); data[invocation].f16.x = subgroupClusteredAdd(data[0].f16.x, 1); data[invocation].f16.xy = subgroupClusteredAdd(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupClusteredAdd(data[2].f16.xyz, 1); data[invocation].f16 = subgroupClusteredAdd(data[3].f16, 1); data[invocation].f16.x = subgroupClusteredMul(data[0].f16.x, 1); data[invocation].f16.xy = subgroupClusteredMul(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupClusteredMul(data[2].f16.xyz, 1); data[invocation].f16 = subgroupClusteredMul(data[3].f16, 1); data[invocation].f16.x = subgroupClusteredMin(data[0].f16.x, 1); data[invocation].f16.xy = subgroupClusteredMin(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupClusteredMin(data[2].f16.xyz, 1); data[invocation].f16 = subgroupClusteredMin(data[3].f16, 1); data[invocation].f16.x = subgroupClusteredMax(data[0].f16.x, 1); data[invocation].f16.xy = subgroupClusteredMax(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupClusteredMax(data[2].f16.xyz, 1); data[invocation].f16 = subgroupClusteredMax(data[3].f16, 1); } glslang-16.0.0/Test/spv.subgroupExtendedTypesClusteredNeg.comp000066400000000000000000000330751506534232700245330ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_clustered: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupClusteredAdd(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredAdd(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredAdd(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredAdd(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredMul(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredMul(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredMul(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredMul(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredMin(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredMin(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredMin(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredMin(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredMax(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredMax(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredMax(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredMax(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredAnd(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredAnd(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredAnd(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredAnd(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredOr(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredOr(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredOr(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredOr(data[3].i8, 1); data[invocation].i8.x = subgroupClusteredXor(data[0].i8.x, 1); data[invocation].i8.xy = subgroupClusteredXor(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupClusteredXor(data[2].i8.xyz, 1); data[invocation].i8 = subgroupClusteredXor(data[3].i8, 1); data[invocation].u8.x = subgroupClusteredAdd(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredAdd(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredAdd(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredAdd(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredMul(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredMul(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredMul(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredMul(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredMin(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredMin(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredMin(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredMin(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredMax(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredMax(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredMax(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredMax(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredAnd(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredAnd(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredAnd(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredAnd(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredOr(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredOr(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredOr(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredOr(data[3].u8, 1); data[invocation].u8.x = subgroupClusteredXor(data[0].u8.x, 1); data[invocation].u8.xy = subgroupClusteredXor(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupClusteredXor(data[2].u8.xyz, 1); data[invocation].u8 = subgroupClusteredXor(data[3].u8, 1); data[invocation].i16.x = subgroupClusteredAdd(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredAdd(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredAdd(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredAdd(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredMul(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredMul(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredMul(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredMul(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredMin(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredMin(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredMin(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredMin(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredMax(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredMax(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredMax(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredMax(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredAnd(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredAnd(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredAnd(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredAnd(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredOr(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredOr(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredOr(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredOr(data[3].i16, 1); data[invocation].i16.x = subgroupClusteredXor(data[0].i16.x, 1); data[invocation].i16.xy = subgroupClusteredXor(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupClusteredXor(data[2].i16.xyz, 1); data[invocation].i16 = subgroupClusteredXor(data[3].i16, 1); data[invocation].u16.x = subgroupClusteredAdd(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredAdd(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredAdd(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredAdd(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredMul(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredMul(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredMul(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredMul(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredMin(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredMin(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredMin(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredMin(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredMax(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredMax(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredMax(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredMax(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredAnd(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredAnd(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredAnd(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredAnd(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredOr(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredOr(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredOr(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredOr(data[3].u16, 1); data[invocation].u16.x = subgroupClusteredXor(data[0].u16.x, 1); data[invocation].u16.xy = subgroupClusteredXor(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupClusteredXor(data[2].u16.xyz, 1); data[invocation].u16 = subgroupClusteredXor(data[3].u16, 1); data[invocation].i64.x = subgroupClusteredAdd(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredAdd(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredAdd(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredAdd(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredMul(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredMul(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredMul(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredMul(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredMin(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredMin(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredMin(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredMin(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredMax(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredMax(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredMax(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredMax(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredAnd(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredAnd(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredAnd(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredAnd(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredOr(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredOr(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredOr(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredOr(data[3].i64, 1); data[invocation].i64.x = subgroupClusteredXor(data[0].i64.x, 1); data[invocation].i64.xy = subgroupClusteredXor(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupClusteredXor(data[2].i64.xyz, 1); data[invocation].i64 = subgroupClusteredXor(data[3].i64, 1); data[invocation].u64.x = subgroupClusteredAdd(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredAdd(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredAdd(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredAdd(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredMul(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredMul(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredMul(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredMul(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredMin(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredMin(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredMin(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredMin(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredMax(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredMax(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredMax(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredMax(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredAnd(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredAnd(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredAnd(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredAnd(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredOr(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredOr(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredOr(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredOr(data[3].u64, 1); data[invocation].u64.x = subgroupClusteredXor(data[0].u64.x, 1); data[invocation].u64.xy = subgroupClusteredXor(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupClusteredXor(data[2].u64.xyz, 1); data[invocation].u64 = subgroupClusteredXor(data[3].u64, 1); data[invocation].f16.x = subgroupClusteredAdd(data[0].f16.x, 1); data[invocation].f16.xy = subgroupClusteredAdd(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupClusteredAdd(data[2].f16.xyz, 1); data[invocation].f16 = subgroupClusteredAdd(data[3].f16, 1); data[invocation].f16.x = subgroupClusteredMul(data[0].f16.x, 1); data[invocation].f16.xy = subgroupClusteredMul(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupClusteredMul(data[2].f16.xyz, 1); data[invocation].f16 = subgroupClusteredMul(data[3].f16, 1); data[invocation].f16.x = subgroupClusteredMin(data[0].f16.x, 1); data[invocation].f16.xy = subgroupClusteredMin(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupClusteredMin(data[2].f16.xyz, 1); data[invocation].f16 = subgroupClusteredMin(data[3].f16, 1); data[invocation].f16.x = subgroupClusteredMax(data[0].f16.x, 1); data[invocation].f16.xy = subgroupClusteredMax(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupClusteredMax(data[2].f16.xyz, 1); data[invocation].f16 = subgroupClusteredMax(data[3].f16, 1); } glslang-16.0.0/Test/spv.subgroupExtendedTypesPartitioned.comp000066400000000000000000000411061506534232700244230ustar00rootroot00000000000000#version 450 #extension GL_NV_shader_subgroup_partitioned: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 ballot; ballot = subgroupPartitionNV(data[0].i8.x); ballot = subgroupPartitionNV(data[1].i8.xy); ballot = subgroupPartitionNV(data[2].i8.xyz); ballot = subgroupPartitionNV(data[3].i8); ballot = subgroupPartitionNV(data[0].u8.x); ballot = subgroupPartitionNV(data[1].u8.xy); ballot = subgroupPartitionNV(data[2].u8.xyz); ballot = subgroupPartitionNV(data[3].u8); ballot = subgroupPartitionNV(data[0].i16.x); ballot = subgroupPartitionNV(data[1].i16.xy); ballot = subgroupPartitionNV(data[2].i16.xyz); ballot = subgroupPartitionNV(data[3].i16); ballot = subgroupPartitionNV(data[0].u16.x); ballot = subgroupPartitionNV(data[1].u16.xy); ballot = subgroupPartitionNV(data[2].u16.xyz); ballot = subgroupPartitionNV(data[3].u16); ballot = subgroupPartitionNV(data[0].i64.x); ballot = subgroupPartitionNV(data[1].i64.xy); ballot = subgroupPartitionNV(data[2].i64.xyz); ballot = subgroupPartitionNV(data[3].i64); ballot = subgroupPartitionNV(data[0].u64.x); ballot = subgroupPartitionNV(data[1].u64.xy); ballot = subgroupPartitionNV(data[2].u64.xyz); ballot = subgroupPartitionNV(data[3].u64); ballot = subgroupPartitionNV(data[0].f16.x); ballot = subgroupPartitionNV(data[1].f16.xy); ballot = subgroupPartitionNV(data[2].f16.xyz); ballot = subgroupPartitionNV(data[3].f16); data[invocation].i8.x = subgroupPartitionedAddNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedAddNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedAddNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedAddNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedMulNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedMulNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedMulNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedMulNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedMinNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedMinNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedMinNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedMinNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedMaxNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedMaxNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedMaxNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedMaxNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedAndNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedAndNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedAndNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedAndNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedOrNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedOrNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedOrNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedOrNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedXorNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedXorNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedXorNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedXorNV(data[3].i8, ballot); data[invocation].u8.x = subgroupPartitionedAddNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedAddNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedAddNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedAddNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedMulNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedMulNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedMulNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedMulNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedMinNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedMinNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedMinNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedMinNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedMaxNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedMaxNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedMaxNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedMaxNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedAndNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedAndNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedAndNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedAndNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedOrNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedOrNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedOrNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedOrNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedXorNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedXorNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedXorNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedXorNV(data[3].u8, ballot); data[invocation].i16.x = subgroupPartitionedAddNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedAddNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedAddNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedAddNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedMulNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedMulNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedMulNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedMulNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedMinNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedMinNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedMinNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedMinNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedMaxNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedMaxNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedMaxNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedMaxNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedAndNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedAndNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedAndNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedAndNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedOrNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedOrNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedOrNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedOrNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedXorNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedXorNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedXorNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedXorNV(data[3].i16, ballot); data[invocation].u16.x = subgroupPartitionedAddNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedAddNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedAddNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedAddNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedMulNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedMulNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedMulNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedMulNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedMinNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedMinNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedMinNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedMinNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedMaxNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedMaxNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedMaxNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedMaxNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedAndNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedAndNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedAndNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedAndNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedOrNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedOrNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedOrNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedOrNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedXorNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedXorNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedXorNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedXorNV(data[3].u16, ballot); data[invocation].i64.x = subgroupPartitionedAddNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedAddNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedAddNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedAddNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedMulNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedMulNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedMulNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedMulNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedMinNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedMinNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedMinNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedMinNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedMaxNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedMaxNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedMaxNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedMaxNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedAndNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedAndNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedAndNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedAndNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedOrNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedOrNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedOrNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedOrNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedXorNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedXorNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedXorNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedXorNV(data[3].i64, ballot); data[invocation].u64.x = subgroupPartitionedAddNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedAddNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedAddNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedAddNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedMulNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedMulNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedMulNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedMulNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedMinNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedMinNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedMinNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedMinNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedMaxNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedMaxNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedMaxNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedMaxNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedAndNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedAndNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedAndNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedAndNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedOrNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedOrNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedOrNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedOrNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedXorNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedXorNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedXorNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedXorNV(data[3].u64, ballot); data[invocation].f16.x = subgroupPartitionedAddNV(data[0].f16.x, ballot); data[invocation].f16.xy = subgroupPartitionedAddNV(data[1].f16.xy, ballot); data[invocation].f16.xyz = subgroupPartitionedAddNV(data[2].f16.xyz, ballot); data[invocation].f16 = subgroupPartitionedAddNV(data[3].f16, ballot); data[invocation].f16.x = subgroupPartitionedMulNV(data[0].f16.x, ballot); data[invocation].f16.xy = subgroupPartitionedMulNV(data[1].f16.xy, ballot); data[invocation].f16.xyz = subgroupPartitionedMulNV(data[2].f16.xyz, ballot); data[invocation].f16 = subgroupPartitionedMulNV(data[3].f16, ballot); data[invocation].f16.x = subgroupPartitionedMinNV(data[0].f16.x, ballot); data[invocation].f16.xy = subgroupPartitionedMinNV(data[1].f16.xy, ballot); data[invocation].f16.xyz = subgroupPartitionedMinNV(data[2].f16.xyz, ballot); data[invocation].f16 = subgroupPartitionedMinNV(data[3].f16, ballot); data[invocation].f16.x = subgroupPartitionedMaxNV(data[0].f16.x, ballot); data[invocation].f16.xy = subgroupPartitionedMaxNV(data[1].f16.xy, ballot); data[invocation].f16.xyz = subgroupPartitionedMaxNV(data[2].f16.xyz, ballot); data[invocation].f16 = subgroupPartitionedMaxNV(data[3].f16, ballot); } glslang-16.0.0/Test/spv.subgroupExtendedTypesPartitionedNeg.comp000066400000000000000000000411161506534232700250560ustar00rootroot00000000000000#version 450 #extension GL_NV_shader_subgroup_partitioned: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 ballot; ballot = subgroupPartitionNV(data[0].i8.x); ballot = subgroupPartitionNV(data[1].i8.xy); ballot = subgroupPartitionNV(data[2].i8.xyz); ballot = subgroupPartitionNV(data[3].i8); ballot = subgroupPartitionNV(data[0].u8.x); ballot = subgroupPartitionNV(data[1].u8.xy); ballot = subgroupPartitionNV(data[2].u8.xyz); ballot = subgroupPartitionNV(data[3].u8); ballot = subgroupPartitionNV(data[0].i16.x); ballot = subgroupPartitionNV(data[1].i16.xy); ballot = subgroupPartitionNV(data[2].i16.xyz); ballot = subgroupPartitionNV(data[3].i16); ballot = subgroupPartitionNV(data[0].u16.x); ballot = subgroupPartitionNV(data[1].u16.xy); ballot = subgroupPartitionNV(data[2].u16.xyz); ballot = subgroupPartitionNV(data[3].u16); ballot = subgroupPartitionNV(data[0].i64.x); ballot = subgroupPartitionNV(data[1].i64.xy); ballot = subgroupPartitionNV(data[2].i64.xyz); ballot = subgroupPartitionNV(data[3].i64); ballot = subgroupPartitionNV(data[0].u64.x); ballot = subgroupPartitionNV(data[1].u64.xy); ballot = subgroupPartitionNV(data[2].u64.xyz); ballot = subgroupPartitionNV(data[3].u64); ballot = subgroupPartitionNV(data[0].f16.x); ballot = subgroupPartitionNV(data[1].f16.xy); ballot = subgroupPartitionNV(data[2].f16.xyz); ballot = subgroupPartitionNV(data[3].f16); data[invocation].i8.x = subgroupPartitionedAddNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedAddNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedAddNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedAddNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedMulNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedMulNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedMulNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedMulNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedMinNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedMinNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedMinNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedMinNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedMaxNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedMaxNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedMaxNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedMaxNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedAndNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedAndNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedAndNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedAndNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedOrNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedOrNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedOrNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedOrNV(data[3].i8, ballot); data[invocation].i8.x = subgroupPartitionedXorNV(data[0].i8.x, ballot); data[invocation].i8.xy = subgroupPartitionedXorNV(data[1].i8.xy, ballot); data[invocation].i8.xyz = subgroupPartitionedXorNV(data[2].i8.xyz, ballot); data[invocation].i8 = subgroupPartitionedXorNV(data[3].i8, ballot); data[invocation].u8.x = subgroupPartitionedAddNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedAddNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedAddNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedAddNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedMulNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedMulNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedMulNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedMulNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedMinNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedMinNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedMinNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedMinNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedMaxNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedMaxNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedMaxNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedMaxNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedAndNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedAndNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedAndNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedAndNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedOrNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedOrNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedOrNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedOrNV(data[3].u8, ballot); data[invocation].u8.x = subgroupPartitionedXorNV(data[0].u8.x, ballot); data[invocation].u8.xy = subgroupPartitionedXorNV(data[1].u8.xy, ballot); data[invocation].u8.xyz = subgroupPartitionedXorNV(data[2].u8.xyz, ballot); data[invocation].u8 = subgroupPartitionedXorNV(data[3].u8, ballot); data[invocation].i16.x = subgroupPartitionedAddNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedAddNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedAddNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedAddNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedMulNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedMulNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedMulNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedMulNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedMinNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedMinNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedMinNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedMinNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedMaxNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedMaxNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedMaxNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedMaxNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedAndNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedAndNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedAndNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedAndNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedOrNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedOrNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedOrNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedOrNV(data[3].i16, ballot); data[invocation].i16.x = subgroupPartitionedXorNV(data[0].i16.x, ballot); data[invocation].i16.xy = subgroupPartitionedXorNV(data[1].i16.xy, ballot); data[invocation].i16.xyz = subgroupPartitionedXorNV(data[2].i16.xyz, ballot); data[invocation].i16 = subgroupPartitionedXorNV(data[3].i16, ballot); data[invocation].u16.x = subgroupPartitionedAddNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedAddNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedAddNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedAddNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedMulNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedMulNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedMulNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedMulNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedMinNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedMinNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedMinNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedMinNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedMaxNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedMaxNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedMaxNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedMaxNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedAndNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedAndNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedAndNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedAndNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedOrNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedOrNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedOrNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedOrNV(data[3].u16, ballot); data[invocation].u16.x = subgroupPartitionedXorNV(data[0].u16.x, ballot); data[invocation].u16.xy = subgroupPartitionedXorNV(data[1].u16.xy, ballot); data[invocation].u16.xyz = subgroupPartitionedXorNV(data[2].u16.xyz, ballot); data[invocation].u16 = subgroupPartitionedXorNV(data[3].u16, ballot); data[invocation].i64.x = subgroupPartitionedAddNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedAddNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedAddNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedAddNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedMulNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedMulNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedMulNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedMulNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedMinNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedMinNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedMinNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedMinNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedMaxNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedMaxNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedMaxNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedMaxNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedAndNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedAndNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedAndNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedAndNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedOrNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedOrNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedOrNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedOrNV(data[3].i64, ballot); data[invocation].i64.x = subgroupPartitionedXorNV(data[0].i64.x, ballot); data[invocation].i64.xy = subgroupPartitionedXorNV(data[1].i64.xy, ballot); data[invocation].i64.xyz = subgroupPartitionedXorNV(data[2].i64.xyz, ballot); data[invocation].i64 = subgroupPartitionedXorNV(data[3].i64, ballot); data[invocation].u64.x = subgroupPartitionedAddNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedAddNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedAddNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedAddNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedMulNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedMulNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedMulNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedMulNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedMinNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedMinNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedMinNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedMinNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedMaxNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedMaxNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedMaxNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedMaxNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedAndNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedAndNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedAndNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedAndNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedOrNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedOrNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedOrNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedOrNV(data[3].u64, ballot); data[invocation].u64.x = subgroupPartitionedXorNV(data[0].u64.x, ballot); data[invocation].u64.xy = subgroupPartitionedXorNV(data[1].u64.xy, ballot); data[invocation].u64.xyz = subgroupPartitionedXorNV(data[2].u64.xyz, ballot); data[invocation].u64 = subgroupPartitionedXorNV(data[3].u64, ballot); data[invocation].f16.x = subgroupPartitionedAddNV(data[0].f16.x, ballot); data[invocation].f16.xy = subgroupPartitionedAddNV(data[1].f16.xy, ballot); data[invocation].f16.xyz = subgroupPartitionedAddNV(data[2].f16.xyz, ballot); data[invocation].f16 = subgroupPartitionedAddNV(data[3].f16, ballot); data[invocation].f16.x = subgroupPartitionedMulNV(data[0].f16.x, ballot); data[invocation].f16.xy = subgroupPartitionedMulNV(data[1].f16.xy, ballot); data[invocation].f16.xyz = subgroupPartitionedMulNV(data[2].f16.xyz, ballot); data[invocation].f16 = subgroupPartitionedMulNV(data[3].f16, ballot); data[invocation].f16.x = subgroupPartitionedMinNV(data[0].f16.x, ballot); data[invocation].f16.xy = subgroupPartitionedMinNV(data[1].f16.xy, ballot); data[invocation].f16.xyz = subgroupPartitionedMinNV(data[2].f16.xyz, ballot); data[invocation].f16 = subgroupPartitionedMinNV(data[3].f16, ballot); data[invocation].f16.x = subgroupPartitionedMaxNV(data[0].f16.x, ballot); data[invocation].f16.xy = subgroupPartitionedMaxNV(data[1].f16.xy, ballot); data[invocation].f16.xyz = subgroupPartitionedMaxNV(data[2].f16.xyz, ballot); data[invocation].f16 = subgroupPartitionedMaxNV(data[3].f16, ballot); } glslang-16.0.0/Test/spv.subgroupExtendedTypesQuad.comp000066400000000000000000000212521506534232700230330ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_quad: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupQuadBroadcast(data[0].i8.x, 1); data[invocation].i8.xy = subgroupQuadBroadcast(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupQuadBroadcast(data[2].i8.xyz, 1); data[invocation].i8 = subgroupQuadBroadcast(data[3].i8, 1); data[invocation].i8.x = subgroupQuadSwapHorizontal(data[0].i8.x); data[invocation].i8.xy = subgroupQuadSwapHorizontal(data[1].i8.xy); data[invocation].i8.xyz = subgroupQuadSwapHorizontal(data[2].i8.xyz); data[invocation].i8 = subgroupQuadSwapHorizontal(data[3].i8); data[invocation].i8.x = subgroupQuadSwapVertical(data[0].i8.x); data[invocation].i8.xy = subgroupQuadSwapVertical(data[1].i8.xy); data[invocation].i8.xyz = subgroupQuadSwapVertical(data[2].i8.xyz); data[invocation].i8 = subgroupQuadSwapVertical(data[3].i8); data[invocation].i8.x = subgroupQuadSwapDiagonal(data[0].i8.x); data[invocation].i8.xy = subgroupQuadSwapDiagonal(data[1].i8.xy); data[invocation].i8.xyz = subgroupQuadSwapDiagonal(data[2].i8.xyz); data[invocation].i8 = subgroupQuadSwapDiagonal(data[3].i8); data[invocation].u8.x = subgroupQuadBroadcast(data[0].u8.x, 1); data[invocation].u8.xy = subgroupQuadBroadcast(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupQuadBroadcast(data[2].u8.xyz, 1); data[invocation].u8 = subgroupQuadBroadcast(data[3].u8, 1); data[invocation].u8.x = subgroupQuadSwapHorizontal(data[0].u8.x); data[invocation].u8.xy = subgroupQuadSwapHorizontal(data[1].u8.xy); data[invocation].u8.xyz = subgroupQuadSwapHorizontal(data[2].u8.xyz); data[invocation].u8 = subgroupQuadSwapHorizontal(data[3].u8); data[invocation].u8.x = subgroupQuadSwapVertical(data[0].u8.x); data[invocation].u8.xy = subgroupQuadSwapVertical(data[1].u8.xy); data[invocation].u8.xyz = subgroupQuadSwapVertical(data[2].u8.xyz); data[invocation].u8 = subgroupQuadSwapVertical(data[3].u8); data[invocation].u8.x = subgroupQuadSwapDiagonal(data[0].u8.x); data[invocation].u8.xy = subgroupQuadSwapDiagonal(data[1].u8.xy); data[invocation].u8.xyz = subgroupQuadSwapDiagonal(data[2].u8.xyz); data[invocation].u8 = subgroupQuadSwapDiagonal(data[3].u8); data[invocation].i16.x = subgroupQuadBroadcast(data[0].i16.x, 1); data[invocation].i16.xy = subgroupQuadBroadcast(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupQuadBroadcast(data[2].i16.xyz, 1); data[invocation].i16 = subgroupQuadBroadcast(data[3].i16, 1); data[invocation].i16.x = subgroupQuadSwapHorizontal(data[0].i16.x); data[invocation].i16.xy = subgroupQuadSwapHorizontal(data[1].i16.xy); data[invocation].i16.xyz = subgroupQuadSwapHorizontal(data[2].i16.xyz); data[invocation].i16 = subgroupQuadSwapHorizontal(data[3].i16); data[invocation].i16.x = subgroupQuadSwapVertical(data[0].i16.x); data[invocation].i16.xy = subgroupQuadSwapVertical(data[1].i16.xy); data[invocation].i16.xyz = subgroupQuadSwapVertical(data[2].i16.xyz); data[invocation].i16 = subgroupQuadSwapVertical(data[3].i16); data[invocation].i16.x = subgroupQuadSwapDiagonal(data[0].i16.x); data[invocation].i16.xy = subgroupQuadSwapDiagonal(data[1].i16.xy); data[invocation].i16.xyz = subgroupQuadSwapDiagonal(data[2].i16.xyz); data[invocation].i16 = subgroupQuadSwapDiagonal(data[3].i16); data[invocation].u16.x = subgroupQuadBroadcast(data[0].u16.x, 1); data[invocation].u16.xy = subgroupQuadBroadcast(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupQuadBroadcast(data[2].u16.xyz, 1); data[invocation].u16 = subgroupQuadBroadcast(data[3].u16, 1); data[invocation].u16.x = subgroupQuadSwapHorizontal(data[0].u16.x); data[invocation].u16.xy = subgroupQuadSwapHorizontal(data[1].u16.xy); data[invocation].u16.xyz = subgroupQuadSwapHorizontal(data[2].u16.xyz); data[invocation].u16 = subgroupQuadSwapHorizontal(data[3].u16); data[invocation].u16.x = subgroupQuadSwapVertical(data[0].u16.x); data[invocation].u16.xy = subgroupQuadSwapVertical(data[1].u16.xy); data[invocation].u16.xyz = subgroupQuadSwapVertical(data[2].u16.xyz); data[invocation].u16 = subgroupQuadSwapVertical(data[3].u16); data[invocation].u16.x = subgroupQuadSwapDiagonal(data[0].u16.x); data[invocation].u16.xy = subgroupQuadSwapDiagonal(data[1].u16.xy); data[invocation].u16.xyz = subgroupQuadSwapDiagonal(data[2].u16.xyz); data[invocation].u16 = subgroupQuadSwapDiagonal(data[3].u16); data[invocation].i64.x = subgroupQuadBroadcast(data[0].i64.x, 1); data[invocation].i64.xy = subgroupQuadBroadcast(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupQuadBroadcast(data[2].i64.xyz, 1); data[invocation].i64 = subgroupQuadBroadcast(data[3].i64, 1); data[invocation].i64.x = subgroupQuadSwapHorizontal(data[0].i64.x); data[invocation].i64.xy = subgroupQuadSwapHorizontal(data[1].i64.xy); data[invocation].i64.xyz = subgroupQuadSwapHorizontal(data[2].i64.xyz); data[invocation].i64 = subgroupQuadSwapHorizontal(data[3].i64); data[invocation].i64.x = subgroupQuadSwapVertical(data[0].i64.x); data[invocation].i64.xy = subgroupQuadSwapVertical(data[1].i64.xy); data[invocation].i64.xyz = subgroupQuadSwapVertical(data[2].i64.xyz); data[invocation].i64 = subgroupQuadSwapVertical(data[3].i64); data[invocation].i64.x = subgroupQuadSwapDiagonal(data[0].i64.x); data[invocation].i64.xy = subgroupQuadSwapDiagonal(data[1].i64.xy); data[invocation].i64.xyz = subgroupQuadSwapDiagonal(data[2].i64.xyz); data[invocation].i64 = subgroupQuadSwapDiagonal(data[3].i64); data[invocation].u64.x = subgroupQuadBroadcast(data[0].u64.x, 1); data[invocation].u64.xy = subgroupQuadBroadcast(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupQuadBroadcast(data[2].u64.xyz, 1); data[invocation].u64 = subgroupQuadBroadcast(data[3].u64, 1); data[invocation].u64.x = subgroupQuadSwapHorizontal(data[0].u64.x); data[invocation].u64.xy = subgroupQuadSwapHorizontal(data[1].u64.xy); data[invocation].u64.xyz = subgroupQuadSwapHorizontal(data[2].u64.xyz); data[invocation].u64 = subgroupQuadSwapHorizontal(data[3].u64); data[invocation].u64.x = subgroupQuadSwapVertical(data[0].u64.x); data[invocation].u64.xy = subgroupQuadSwapVertical(data[1].u64.xy); data[invocation].u64.xyz = subgroupQuadSwapVertical(data[2].u64.xyz); data[invocation].u64 = subgroupQuadSwapVertical(data[3].u64); data[invocation].u64.x = subgroupQuadSwapDiagonal(data[0].u64.x); data[invocation].u64.xy = subgroupQuadSwapDiagonal(data[1].u64.xy); data[invocation].u64.xyz = subgroupQuadSwapDiagonal(data[2].u64.xyz); data[invocation].u64 = subgroupQuadSwapDiagonal(data[3].u64); data[invocation].f16.x = subgroupQuadBroadcast(data[0].f16.x, 1); data[invocation].f16.xy = subgroupQuadBroadcast(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupQuadBroadcast(data[2].f16.xyz, 1); data[invocation].f16 = subgroupQuadBroadcast(data[3].f16, 1); data[invocation].f16.x = subgroupQuadSwapHorizontal(data[0].f16.x); data[invocation].f16.xy = subgroupQuadSwapHorizontal(data[1].f16.xy); data[invocation].f16.xyz = subgroupQuadSwapHorizontal(data[2].f16.xyz); data[invocation].f16 = subgroupQuadSwapHorizontal(data[3].f16); data[invocation].f16.x = subgroupQuadSwapVertical(data[0].f16.x); data[invocation].f16.xy = subgroupQuadSwapVertical(data[1].f16.xy); data[invocation].f16.xyz = subgroupQuadSwapVertical(data[2].f16.xyz); data[invocation].f16 = subgroupQuadSwapVertical(data[3].f16); data[invocation].f16.x = subgroupQuadSwapDiagonal(data[0].f16.x); data[invocation].f16.xy = subgroupQuadSwapDiagonal(data[1].f16.xy); data[invocation].f16.xyz = subgroupQuadSwapDiagonal(data[2].f16.xyz); data[invocation].f16 = subgroupQuadSwapDiagonal(data[3].f16); } glslang-16.0.0/Test/spv.subgroupExtendedTypesQuadNeg.comp000066400000000000000000000212621506534232700234660ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_quad: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupQuadBroadcast(data[0].i8.x, 1); data[invocation].i8.xy = subgroupQuadBroadcast(data[1].i8.xy, 1); data[invocation].i8.xyz = subgroupQuadBroadcast(data[2].i8.xyz, 1); data[invocation].i8 = subgroupQuadBroadcast(data[3].i8, 1); data[invocation].i8.x = subgroupQuadSwapHorizontal(data[0].i8.x); data[invocation].i8.xy = subgroupQuadSwapHorizontal(data[1].i8.xy); data[invocation].i8.xyz = subgroupQuadSwapHorizontal(data[2].i8.xyz); data[invocation].i8 = subgroupQuadSwapHorizontal(data[3].i8); data[invocation].i8.x = subgroupQuadSwapVertical(data[0].i8.x); data[invocation].i8.xy = subgroupQuadSwapVertical(data[1].i8.xy); data[invocation].i8.xyz = subgroupQuadSwapVertical(data[2].i8.xyz); data[invocation].i8 = subgroupQuadSwapVertical(data[3].i8); data[invocation].i8.x = subgroupQuadSwapDiagonal(data[0].i8.x); data[invocation].i8.xy = subgroupQuadSwapDiagonal(data[1].i8.xy); data[invocation].i8.xyz = subgroupQuadSwapDiagonal(data[2].i8.xyz); data[invocation].i8 = subgroupQuadSwapDiagonal(data[3].i8); data[invocation].u8.x = subgroupQuadBroadcast(data[0].u8.x, 1); data[invocation].u8.xy = subgroupQuadBroadcast(data[1].u8.xy, 1); data[invocation].u8.xyz = subgroupQuadBroadcast(data[2].u8.xyz, 1); data[invocation].u8 = subgroupQuadBroadcast(data[3].u8, 1); data[invocation].u8.x = subgroupQuadSwapHorizontal(data[0].u8.x); data[invocation].u8.xy = subgroupQuadSwapHorizontal(data[1].u8.xy); data[invocation].u8.xyz = subgroupQuadSwapHorizontal(data[2].u8.xyz); data[invocation].u8 = subgroupQuadSwapHorizontal(data[3].u8); data[invocation].u8.x = subgroupQuadSwapVertical(data[0].u8.x); data[invocation].u8.xy = subgroupQuadSwapVertical(data[1].u8.xy); data[invocation].u8.xyz = subgroupQuadSwapVertical(data[2].u8.xyz); data[invocation].u8 = subgroupQuadSwapVertical(data[3].u8); data[invocation].u8.x = subgroupQuadSwapDiagonal(data[0].u8.x); data[invocation].u8.xy = subgroupQuadSwapDiagonal(data[1].u8.xy); data[invocation].u8.xyz = subgroupQuadSwapDiagonal(data[2].u8.xyz); data[invocation].u8 = subgroupQuadSwapDiagonal(data[3].u8); data[invocation].i16.x = subgroupQuadBroadcast(data[0].i16.x, 1); data[invocation].i16.xy = subgroupQuadBroadcast(data[1].i16.xy, 1); data[invocation].i16.xyz = subgroupQuadBroadcast(data[2].i16.xyz, 1); data[invocation].i16 = subgroupQuadBroadcast(data[3].i16, 1); data[invocation].i16.x = subgroupQuadSwapHorizontal(data[0].i16.x); data[invocation].i16.xy = subgroupQuadSwapHorizontal(data[1].i16.xy); data[invocation].i16.xyz = subgroupQuadSwapHorizontal(data[2].i16.xyz); data[invocation].i16 = subgroupQuadSwapHorizontal(data[3].i16); data[invocation].i16.x = subgroupQuadSwapVertical(data[0].i16.x); data[invocation].i16.xy = subgroupQuadSwapVertical(data[1].i16.xy); data[invocation].i16.xyz = subgroupQuadSwapVertical(data[2].i16.xyz); data[invocation].i16 = subgroupQuadSwapVertical(data[3].i16); data[invocation].i16.x = subgroupQuadSwapDiagonal(data[0].i16.x); data[invocation].i16.xy = subgroupQuadSwapDiagonal(data[1].i16.xy); data[invocation].i16.xyz = subgroupQuadSwapDiagonal(data[2].i16.xyz); data[invocation].i16 = subgroupQuadSwapDiagonal(data[3].i16); data[invocation].u16.x = subgroupQuadBroadcast(data[0].u16.x, 1); data[invocation].u16.xy = subgroupQuadBroadcast(data[1].u16.xy, 1); data[invocation].u16.xyz = subgroupQuadBroadcast(data[2].u16.xyz, 1); data[invocation].u16 = subgroupQuadBroadcast(data[3].u16, 1); data[invocation].u16.x = subgroupQuadSwapHorizontal(data[0].u16.x); data[invocation].u16.xy = subgroupQuadSwapHorizontal(data[1].u16.xy); data[invocation].u16.xyz = subgroupQuadSwapHorizontal(data[2].u16.xyz); data[invocation].u16 = subgroupQuadSwapHorizontal(data[3].u16); data[invocation].u16.x = subgroupQuadSwapVertical(data[0].u16.x); data[invocation].u16.xy = subgroupQuadSwapVertical(data[1].u16.xy); data[invocation].u16.xyz = subgroupQuadSwapVertical(data[2].u16.xyz); data[invocation].u16 = subgroupQuadSwapVertical(data[3].u16); data[invocation].u16.x = subgroupQuadSwapDiagonal(data[0].u16.x); data[invocation].u16.xy = subgroupQuadSwapDiagonal(data[1].u16.xy); data[invocation].u16.xyz = subgroupQuadSwapDiagonal(data[2].u16.xyz); data[invocation].u16 = subgroupQuadSwapDiagonal(data[3].u16); data[invocation].i64.x = subgroupQuadBroadcast(data[0].i64.x, 1); data[invocation].i64.xy = subgroupQuadBroadcast(data[1].i64.xy, 1); data[invocation].i64.xyz = subgroupQuadBroadcast(data[2].i64.xyz, 1); data[invocation].i64 = subgroupQuadBroadcast(data[3].i64, 1); data[invocation].i64.x = subgroupQuadSwapHorizontal(data[0].i64.x); data[invocation].i64.xy = subgroupQuadSwapHorizontal(data[1].i64.xy); data[invocation].i64.xyz = subgroupQuadSwapHorizontal(data[2].i64.xyz); data[invocation].i64 = subgroupQuadSwapHorizontal(data[3].i64); data[invocation].i64.x = subgroupQuadSwapVertical(data[0].i64.x); data[invocation].i64.xy = subgroupQuadSwapVertical(data[1].i64.xy); data[invocation].i64.xyz = subgroupQuadSwapVertical(data[2].i64.xyz); data[invocation].i64 = subgroupQuadSwapVertical(data[3].i64); data[invocation].i64.x = subgroupQuadSwapDiagonal(data[0].i64.x); data[invocation].i64.xy = subgroupQuadSwapDiagonal(data[1].i64.xy); data[invocation].i64.xyz = subgroupQuadSwapDiagonal(data[2].i64.xyz); data[invocation].i64 = subgroupQuadSwapDiagonal(data[3].i64); data[invocation].u64.x = subgroupQuadBroadcast(data[0].u64.x, 1); data[invocation].u64.xy = subgroupQuadBroadcast(data[1].u64.xy, 1); data[invocation].u64.xyz = subgroupQuadBroadcast(data[2].u64.xyz, 1); data[invocation].u64 = subgroupQuadBroadcast(data[3].u64, 1); data[invocation].u64.x = subgroupQuadSwapHorizontal(data[0].u64.x); data[invocation].u64.xy = subgroupQuadSwapHorizontal(data[1].u64.xy); data[invocation].u64.xyz = subgroupQuadSwapHorizontal(data[2].u64.xyz); data[invocation].u64 = subgroupQuadSwapHorizontal(data[3].u64); data[invocation].u64.x = subgroupQuadSwapVertical(data[0].u64.x); data[invocation].u64.xy = subgroupQuadSwapVertical(data[1].u64.xy); data[invocation].u64.xyz = subgroupQuadSwapVertical(data[2].u64.xyz); data[invocation].u64 = subgroupQuadSwapVertical(data[3].u64); data[invocation].u64.x = subgroupQuadSwapDiagonal(data[0].u64.x); data[invocation].u64.xy = subgroupQuadSwapDiagonal(data[1].u64.xy); data[invocation].u64.xyz = subgroupQuadSwapDiagonal(data[2].u64.xyz); data[invocation].u64 = subgroupQuadSwapDiagonal(data[3].u64); data[invocation].f16.x = subgroupQuadBroadcast(data[0].f16.x, 1); data[invocation].f16.xy = subgroupQuadBroadcast(data[1].f16.xy, 1); data[invocation].f16.xyz = subgroupQuadBroadcast(data[2].f16.xyz, 1); data[invocation].f16 = subgroupQuadBroadcast(data[3].f16, 1); data[invocation].f16.x = subgroupQuadSwapHorizontal(data[0].f16.x); data[invocation].f16.xy = subgroupQuadSwapHorizontal(data[1].f16.xy); data[invocation].f16.xyz = subgroupQuadSwapHorizontal(data[2].f16.xyz); data[invocation].f16 = subgroupQuadSwapHorizontal(data[3].f16); data[invocation].f16.x = subgroupQuadSwapVertical(data[0].f16.x); data[invocation].f16.xy = subgroupQuadSwapVertical(data[1].f16.xy); data[invocation].f16.xyz = subgroupQuadSwapVertical(data[2].f16.xyz); data[invocation].f16 = subgroupQuadSwapVertical(data[3].f16); data[invocation].f16.x = subgroupQuadSwapDiagonal(data[0].f16.x); data[invocation].f16.xy = subgroupQuadSwapDiagonal(data[1].f16.xy); data[invocation].f16.xyz = subgroupQuadSwapDiagonal(data[2].f16.xyz); data[invocation].f16 = subgroupQuadSwapDiagonal(data[3].f16); } glslang-16.0.0/Test/spv.subgroupExtendedTypesRotate.comp000066400000000000000000000111021506534232700233700ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_rotate: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; readonly buffer roblock { uint delta; } ro; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint delta = ro.delta; data[delta].i8.x = subgroupRotate(data[0].i8.x, delta); data[delta].i8.xy = subgroupRotate(data[1].i8.xy, delta); data[delta].i8.xyz = subgroupRotate(data[2].i8.xyz, delta); data[delta].i8 = subgroupRotate(data[3].i8, delta); data[delta].i8.x = subgroupClusteredRotate(data[0].i8.x, delta, 1); data[delta].i8.xy = subgroupClusteredRotate(data[1].i8.xy, delta, 1); data[delta].i8.xyz = subgroupClusteredRotate(data[2].i8.xyz, delta, 1); data[delta].i8 = subgroupClusteredRotate(data[3].i8, delta, 1); data[delta].u8.x = subgroupRotate(data[0].u8.x, delta); data[delta].u8.xy = subgroupRotate(data[1].u8.xy, delta); data[delta].u8.xyz = subgroupRotate(data[2].u8.xyz, delta); data[delta].u8 = subgroupRotate(data[3].u8, delta); data[delta].u8.x = subgroupClusteredRotate(data[0].u8.x, delta, 1); data[delta].u8.xy = subgroupClusteredRotate(data[1].u8.xy, delta, 1); data[delta].u8.xyz = subgroupClusteredRotate(data[2].u8.xyz, delta, 1); data[delta].u8 = subgroupClusteredRotate(data[3].u8, delta, 1); data[delta].i16.x = subgroupRotate(data[0].i16.x, delta); data[delta].i16.xy = subgroupRotate(data[1].i16.xy, delta); data[delta].i16.xyz = subgroupRotate(data[2].i16.xyz, delta); data[delta].i16 = subgroupRotate(data[3].i16, delta); data[delta].i16.x = subgroupClusteredRotate(data[0].i16.x, delta, 1); data[delta].i16.xy = subgroupClusteredRotate(data[1].i16.xy, delta, 1); data[delta].i16.xyz = subgroupClusteredRotate(data[2].i16.xyz, delta, 1); data[delta].i16 = subgroupClusteredRotate(data[3].i16, delta, 1); data[delta].u16.x = subgroupRotate(data[0].u16.x, delta); data[delta].u16.xy = subgroupRotate(data[1].u16.xy, delta); data[delta].u16.xyz = subgroupRotate(data[2].u16.xyz, delta); data[delta].u16 = subgroupRotate(data[3].u16, delta); data[delta].u16.x = subgroupClusteredRotate(data[0].u16.x, delta, 1); data[delta].u16.xy = subgroupClusteredRotate(data[1].u16.xy, delta, 1); data[delta].u16.xyz = subgroupClusteredRotate(data[2].u16.xyz, delta, 1); data[delta].u16 = subgroupClusteredRotate(data[3].u16, delta, 1); data[delta].i64.x = subgroupRotate(data[0].i64.x, delta); data[delta].i64.xy = subgroupRotate(data[1].i64.xy, delta); data[delta].i64.xyz = subgroupRotate(data[2].i64.xyz, delta); data[delta].i64 = subgroupRotate(data[3].i64, delta); data[delta].i64.x = subgroupClusteredRotate(data[0].i64.x, delta, 1); data[delta].i64.xy = subgroupClusteredRotate(data[1].i64.xy, delta, 1); data[delta].i64.xyz = subgroupClusteredRotate(data[2].i64.xyz, delta, 1); data[delta].i64 = subgroupClusteredRotate(data[3].i64, delta, 1); data[delta].u64.x = subgroupRotate(data[0].u64.x, delta); data[delta].u64.xy = subgroupRotate(data[1].u64.xy, delta); data[delta].u64.xyz = subgroupRotate(data[2].u64.xyz, delta); data[delta].u64 = subgroupRotate(data[3].u64, delta); data[delta].u64.x = subgroupClusteredRotate(data[0].u64.x, delta, 1); data[delta].u64.xy = subgroupClusteredRotate(data[1].u64.xy, delta, 1); data[delta].u64.xyz = subgroupClusteredRotate(data[2].u64.xyz, delta, 1); data[delta].u64 = subgroupClusteredRotate(data[3].u64, delta, 1); data[delta].f16.x = subgroupRotate(data[0].f16.x, delta); data[delta].f16.xy = subgroupRotate(data[1].f16.xy, delta); data[delta].f16.xyz = subgroupRotate(data[2].f16.xyz, delta); data[delta].f16 = subgroupRotate(data[3].f16, delta); data[delta].f16.x = subgroupClusteredRotate(data[0].f16.x, delta, 1); data[delta].f16.xy = subgroupClusteredRotate(data[1].f16.xy, delta, 1); data[delta].f16.xyz = subgroupClusteredRotate(data[2].f16.xyz, delta, 1); data[delta].f16 = subgroupClusteredRotate(data[3].f16, delta, 1); } glslang-16.0.0/Test/spv.subgroupExtendedTypesRotateNeg.comp000066400000000000000000000111121506534232700240230ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_rotate: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; readonly buffer roblock { uint delta; } ro; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint delta = ro.delta; data[delta].i8.x = subgroupRotate(data[0].i8.x, delta); data[delta].i8.xy = subgroupRotate(data[1].i8.xy, delta); data[delta].i8.xyz = subgroupRotate(data[2].i8.xyz, delta); data[delta].i8 = subgroupRotate(data[3].i8, delta); data[delta].i8.x = subgroupClusteredRotate(data[0].i8.x, delta, 1); data[delta].i8.xy = subgroupClusteredRotate(data[1].i8.xy, delta, 1); data[delta].i8.xyz = subgroupClusteredRotate(data[2].i8.xyz, delta, 1); data[delta].i8 = subgroupClusteredRotate(data[3].i8, delta, 1); data[delta].u8.x = subgroupRotate(data[0].u8.x, delta); data[delta].u8.xy = subgroupRotate(data[1].u8.xy, delta); data[delta].u8.xyz = subgroupRotate(data[2].u8.xyz, delta); data[delta].u8 = subgroupRotate(data[3].u8, delta); data[delta].u8.x = subgroupClusteredRotate(data[0].u8.x, delta, 1); data[delta].u8.xy = subgroupClusteredRotate(data[1].u8.xy, delta, 1); data[delta].u8.xyz = subgroupClusteredRotate(data[2].u8.xyz, delta, 1); data[delta].u8 = subgroupClusteredRotate(data[3].u8, delta, 1); data[delta].i16.x = subgroupRotate(data[0].i16.x, delta); data[delta].i16.xy = subgroupRotate(data[1].i16.xy, delta); data[delta].i16.xyz = subgroupRotate(data[2].i16.xyz, delta); data[delta].i16 = subgroupRotate(data[3].i16, delta); data[delta].i16.x = subgroupClusteredRotate(data[0].i16.x, delta, 1); data[delta].i16.xy = subgroupClusteredRotate(data[1].i16.xy, delta, 1); data[delta].i16.xyz = subgroupClusteredRotate(data[2].i16.xyz, delta, 1); data[delta].i16 = subgroupClusteredRotate(data[3].i16, delta, 1); data[delta].u16.x = subgroupRotate(data[0].u16.x, delta); data[delta].u16.xy = subgroupRotate(data[1].u16.xy, delta); data[delta].u16.xyz = subgroupRotate(data[2].u16.xyz, delta); data[delta].u16 = subgroupRotate(data[3].u16, delta); data[delta].u16.x = subgroupClusteredRotate(data[0].u16.x, delta, 1); data[delta].u16.xy = subgroupClusteredRotate(data[1].u16.xy, delta, 1); data[delta].u16.xyz = subgroupClusteredRotate(data[2].u16.xyz, delta, 1); data[delta].u16 = subgroupClusteredRotate(data[3].u16, delta, 1); data[delta].i64.x = subgroupRotate(data[0].i64.x, delta); data[delta].i64.xy = subgroupRotate(data[1].i64.xy, delta); data[delta].i64.xyz = subgroupRotate(data[2].i64.xyz, delta); data[delta].i64 = subgroupRotate(data[3].i64, delta); data[delta].i64.x = subgroupClusteredRotate(data[0].i64.x, delta, 1); data[delta].i64.xy = subgroupClusteredRotate(data[1].i64.xy, delta, 1); data[delta].i64.xyz = subgroupClusteredRotate(data[2].i64.xyz, delta, 1); data[delta].i64 = subgroupClusteredRotate(data[3].i64, delta, 1); data[delta].u64.x = subgroupRotate(data[0].u64.x, delta); data[delta].u64.xy = subgroupRotate(data[1].u64.xy, delta); data[delta].u64.xyz = subgroupRotate(data[2].u64.xyz, delta); data[delta].u64 = subgroupRotate(data[3].u64, delta); data[delta].u64.x = subgroupClusteredRotate(data[0].u64.x, delta, 1); data[delta].u64.xy = subgroupClusteredRotate(data[1].u64.xy, delta, 1); data[delta].u64.xyz = subgroupClusteredRotate(data[2].u64.xyz, delta, 1); data[delta].u64 = subgroupClusteredRotate(data[3].u64, delta, 1); data[delta].f16.x = subgroupRotate(data[0].f16.x, delta); data[delta].f16.xy = subgroupRotate(data[1].f16.xy, delta); data[delta].f16.xyz = subgroupRotate(data[2].f16.xyz, delta); data[delta].f16 = subgroupRotate(data[3].f16, delta); data[delta].f16.x = subgroupClusteredRotate(data[0].f16.x, delta, 1); data[delta].f16.xy = subgroupClusteredRotate(data[1].f16.xy, delta, 1); data[delta].f16.xyz = subgroupClusteredRotate(data[2].f16.xyz, delta, 1); data[delta].f16 = subgroupClusteredRotate(data[3].f16, delta, 1); } glslang-16.0.0/Test/spv.subgroupExtendedTypesShuffle.comp000066400000000000000000000120111506534232700235260ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_shuffle: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupShuffle(data[0].i8.x, invocation); data[invocation].i8.xy = subgroupShuffle(data[1].i8.xy, invocation); data[invocation].i8.xyz = subgroupShuffle(data[2].i8.xyz, invocation); data[invocation].i8 = subgroupShuffle(data[3].i8, invocation); data[invocation].i8.x = subgroupShuffleXor(data[0].i8.x, invocation); data[invocation].i8.xy = subgroupShuffleXor(data[1].i8.xy, invocation); data[invocation].i8.xyz = subgroupShuffleXor(data[2].i8.xyz, invocation); data[invocation].i8 = subgroupShuffleXor(data[3].i8, invocation); data[invocation].u8.x = subgroupShuffle(data[0].u8.x, invocation); data[invocation].u8.xy = subgroupShuffle(data[1].u8.xy, invocation); data[invocation].u8.xyz = subgroupShuffle(data[2].u8.xyz, invocation); data[invocation].u8 = subgroupShuffle(data[3].u8, invocation); data[invocation].u8.x = subgroupShuffleXor(data[0].u8.x, invocation); data[invocation].u8.xy = subgroupShuffleXor(data[1].u8.xy, invocation); data[invocation].u8.xyz = subgroupShuffleXor(data[2].u8.xyz, invocation); data[invocation].u8 = subgroupShuffleXor(data[3].u8, invocation); data[invocation].i16.x = subgroupShuffle(data[0].i16.x, invocation); data[invocation].i16.xy = subgroupShuffle(data[1].i16.xy, invocation); data[invocation].i16.xyz = subgroupShuffle(data[2].i16.xyz, invocation); data[invocation].i16 = subgroupShuffle(data[3].i16, invocation); data[invocation].i16.x = subgroupShuffleXor(data[0].i16.x, invocation); data[invocation].i16.xy = subgroupShuffleXor(data[1].i16.xy, invocation); data[invocation].i16.xyz = subgroupShuffleXor(data[2].i16.xyz, invocation); data[invocation].i16 = subgroupShuffleXor(data[3].i16, invocation); data[invocation].u16.x = subgroupShuffle(data[0].u16.x, invocation); data[invocation].u16.xy = subgroupShuffle(data[1].u16.xy, invocation); data[invocation].u16.xyz = subgroupShuffle(data[2].u16.xyz, invocation); data[invocation].u16 = subgroupShuffle(data[3].u16, invocation); data[invocation].u16.x = subgroupShuffleXor(data[0].u16.x, invocation); data[invocation].u16.xy = subgroupShuffleXor(data[1].u16.xy, invocation); data[invocation].u16.xyz = subgroupShuffleXor(data[2].u16.xyz, invocation); data[invocation].u16 = subgroupShuffleXor(data[3].u16, invocation); data[invocation].i64.x = subgroupShuffle(data[0].i64.x, invocation); data[invocation].i64.xy = subgroupShuffle(data[1].i64.xy, invocation); data[invocation].i64.xyz = subgroupShuffle(data[2].i64.xyz, invocation); data[invocation].i64 = subgroupShuffle(data[3].i64, invocation); data[invocation].i64.x = subgroupShuffleXor(data[0].i64.x, invocation); data[invocation].i64.xy = subgroupShuffleXor(data[1].i64.xy, invocation); data[invocation].i64.xyz = subgroupShuffleXor(data[2].i64.xyz, invocation); data[invocation].i64 = subgroupShuffleXor(data[3].i64, invocation); data[invocation].u64.x = subgroupShuffle(data[0].u64.x, invocation); data[invocation].u64.xy = subgroupShuffle(data[1].u64.xy, invocation); data[invocation].u64.xyz = subgroupShuffle(data[2].u64.xyz, invocation); data[invocation].u64 = subgroupShuffle(data[3].u64, invocation); data[invocation].u64.x = subgroupShuffleXor(data[0].u64.x, invocation); data[invocation].u64.xy = subgroupShuffleXor(data[1].u64.xy, invocation); data[invocation].u64.xyz = subgroupShuffleXor(data[2].u64.xyz, invocation); data[invocation].u64 = subgroupShuffleXor(data[3].u64, invocation); data[invocation].f16.x = subgroupShuffle(data[0].f16.x, invocation); data[invocation].f16.xy = subgroupShuffle(data[1].f16.xy, invocation); data[invocation].f16.xyz = subgroupShuffle(data[2].f16.xyz, invocation); data[invocation].f16 = subgroupShuffle(data[3].f16, invocation); data[invocation].f16.x = subgroupShuffleXor(data[0].f16.x, invocation); data[invocation].f16.xy = subgroupShuffleXor(data[1].f16.xy, invocation); data[invocation].f16.xyz = subgroupShuffleXor(data[2].f16.xyz, invocation); data[invocation].f16 = subgroupShuffleXor(data[3].f16, invocation); } glslang-16.0.0/Test/spv.subgroupExtendedTypesShuffleNeg.comp000066400000000000000000000120211506534232700241610ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_shuffle: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupShuffle(data[0].i8.x, invocation); data[invocation].i8.xy = subgroupShuffle(data[1].i8.xy, invocation); data[invocation].i8.xyz = subgroupShuffle(data[2].i8.xyz, invocation); data[invocation].i8 = subgroupShuffle(data[3].i8, invocation); data[invocation].i8.x = subgroupShuffleXor(data[0].i8.x, invocation); data[invocation].i8.xy = subgroupShuffleXor(data[1].i8.xy, invocation); data[invocation].i8.xyz = subgroupShuffleXor(data[2].i8.xyz, invocation); data[invocation].i8 = subgroupShuffleXor(data[3].i8, invocation); data[invocation].u8.x = subgroupShuffle(data[0].u8.x, invocation); data[invocation].u8.xy = subgroupShuffle(data[1].u8.xy, invocation); data[invocation].u8.xyz = subgroupShuffle(data[2].u8.xyz, invocation); data[invocation].u8 = subgroupShuffle(data[3].u8, invocation); data[invocation].u8.x = subgroupShuffleXor(data[0].u8.x, invocation); data[invocation].u8.xy = subgroupShuffleXor(data[1].u8.xy, invocation); data[invocation].u8.xyz = subgroupShuffleXor(data[2].u8.xyz, invocation); data[invocation].u8 = subgroupShuffleXor(data[3].u8, invocation); data[invocation].i16.x = subgroupShuffle(data[0].i16.x, invocation); data[invocation].i16.xy = subgroupShuffle(data[1].i16.xy, invocation); data[invocation].i16.xyz = subgroupShuffle(data[2].i16.xyz, invocation); data[invocation].i16 = subgroupShuffle(data[3].i16, invocation); data[invocation].i16.x = subgroupShuffleXor(data[0].i16.x, invocation); data[invocation].i16.xy = subgroupShuffleXor(data[1].i16.xy, invocation); data[invocation].i16.xyz = subgroupShuffleXor(data[2].i16.xyz, invocation); data[invocation].i16 = subgroupShuffleXor(data[3].i16, invocation); data[invocation].u16.x = subgroupShuffle(data[0].u16.x, invocation); data[invocation].u16.xy = subgroupShuffle(data[1].u16.xy, invocation); data[invocation].u16.xyz = subgroupShuffle(data[2].u16.xyz, invocation); data[invocation].u16 = subgroupShuffle(data[3].u16, invocation); data[invocation].u16.x = subgroupShuffleXor(data[0].u16.x, invocation); data[invocation].u16.xy = subgroupShuffleXor(data[1].u16.xy, invocation); data[invocation].u16.xyz = subgroupShuffleXor(data[2].u16.xyz, invocation); data[invocation].u16 = subgroupShuffleXor(data[3].u16, invocation); data[invocation].i64.x = subgroupShuffle(data[0].i64.x, invocation); data[invocation].i64.xy = subgroupShuffle(data[1].i64.xy, invocation); data[invocation].i64.xyz = subgroupShuffle(data[2].i64.xyz, invocation); data[invocation].i64 = subgroupShuffle(data[3].i64, invocation); data[invocation].i64.x = subgroupShuffleXor(data[0].i64.x, invocation); data[invocation].i64.xy = subgroupShuffleXor(data[1].i64.xy, invocation); data[invocation].i64.xyz = subgroupShuffleXor(data[2].i64.xyz, invocation); data[invocation].i64 = subgroupShuffleXor(data[3].i64, invocation); data[invocation].u64.x = subgroupShuffle(data[0].u64.x, invocation); data[invocation].u64.xy = subgroupShuffle(data[1].u64.xy, invocation); data[invocation].u64.xyz = subgroupShuffle(data[2].u64.xyz, invocation); data[invocation].u64 = subgroupShuffle(data[3].u64, invocation); data[invocation].u64.x = subgroupShuffleXor(data[0].u64.x, invocation); data[invocation].u64.xy = subgroupShuffleXor(data[1].u64.xy, invocation); data[invocation].u64.xyz = subgroupShuffleXor(data[2].u64.xyz, invocation); data[invocation].u64 = subgroupShuffleXor(data[3].u64, invocation); data[invocation].f16.x = subgroupShuffle(data[0].f16.x, invocation); data[invocation].f16.xy = subgroupShuffle(data[1].f16.xy, invocation); data[invocation].f16.xyz = subgroupShuffle(data[2].f16.xyz, invocation); data[invocation].f16 = subgroupShuffle(data[3].f16, invocation); data[invocation].f16.x = subgroupShuffleXor(data[0].f16.x, invocation); data[invocation].f16.xy = subgroupShuffleXor(data[1].f16.xy, invocation); data[invocation].f16.xyz = subgroupShuffleXor(data[2].f16.xyz, invocation); data[invocation].f16 = subgroupShuffleXor(data[3].f16, invocation); } glslang-16.0.0/Test/spv.subgroupExtendedTypesShuffleRelative.comp000066400000000000000000000121461506534232700252330ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_shuffle_relative: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupShuffleUp(data[0].i8.x, invocation); data[invocation].i8.xy = subgroupShuffleUp(data[1].i8.xy, invocation); data[invocation].i8.xyz = subgroupShuffleUp(data[2].i8.xyz, invocation); data[invocation].i8 = subgroupShuffleUp(data[3].i8, invocation); data[invocation].i8.x = subgroupShuffleDown(data[0].i8.x, invocation); data[invocation].i8.xy = subgroupShuffleDown(data[1].i8.xy, invocation); data[invocation].i8.xyz = subgroupShuffleDown(data[2].i8.xyz, invocation); data[invocation].i8 = subgroupShuffleDown(data[3].i8, invocation); data[invocation].u8.x = subgroupShuffleUp(data[0].u8.x, invocation); data[invocation].u8.xy = subgroupShuffleUp(data[1].u8.xy, invocation); data[invocation].u8.xyz = subgroupShuffleUp(data[2].u8.xyz, invocation); data[invocation].u8 = subgroupShuffleUp(data[3].u8, invocation); data[invocation].u8.x = subgroupShuffleDown(data[0].u8.x, invocation); data[invocation].u8.xy = subgroupShuffleDown(data[1].u8.xy, invocation); data[invocation].u8.xyz = subgroupShuffleDown(data[2].u8.xyz, invocation); data[invocation].u8 = subgroupShuffleDown(data[3].u8, invocation); data[invocation].i16.x = subgroupShuffleUp(data[0].i16.x, invocation); data[invocation].i16.xy = subgroupShuffleUp(data[1].i16.xy, invocation); data[invocation].i16.xyz = subgroupShuffleUp(data[2].i16.xyz, invocation); data[invocation].i16 = subgroupShuffleUp(data[3].i16, invocation); data[invocation].i16.x = subgroupShuffleDown(data[0].i16.x, invocation); data[invocation].i16.xy = subgroupShuffleDown(data[1].i16.xy, invocation); data[invocation].i16.xyz = subgroupShuffleDown(data[2].i16.xyz, invocation); data[invocation].i16 = subgroupShuffleDown(data[3].i16, invocation); data[invocation].u16.x = subgroupShuffleUp(data[0].u16.x, invocation); data[invocation].u16.xy = subgroupShuffleUp(data[1].u16.xy, invocation); data[invocation].u16.xyz = subgroupShuffleUp(data[2].u16.xyz, invocation); data[invocation].u16 = subgroupShuffleUp(data[3].u16, invocation); data[invocation].u16.x = subgroupShuffleDown(data[0].u16.x, invocation); data[invocation].u16.xy = subgroupShuffleDown(data[1].u16.xy, invocation); data[invocation].u16.xyz = subgroupShuffleDown(data[2].u16.xyz, invocation); data[invocation].u16 = subgroupShuffleDown(data[3].u16, invocation); data[invocation].i64.x = subgroupShuffleUp(data[0].i64.x, invocation); data[invocation].i64.xy = subgroupShuffleUp(data[1].i64.xy, invocation); data[invocation].i64.xyz = subgroupShuffleUp(data[2].i64.xyz, invocation); data[invocation].i64 = subgroupShuffleUp(data[3].i64, invocation); data[invocation].i64.x = subgroupShuffleDown(data[0].i64.x, invocation); data[invocation].i64.xy = subgroupShuffleDown(data[1].i64.xy, invocation); data[invocation].i64.xyz = subgroupShuffleDown(data[2].i64.xyz, invocation); data[invocation].i64 = subgroupShuffleDown(data[3].i64, invocation); data[invocation].u64.x = subgroupShuffleUp(data[0].u64.x, invocation); data[invocation].u64.xy = subgroupShuffleUp(data[1].u64.xy, invocation); data[invocation].u64.xyz = subgroupShuffleUp(data[2].u64.xyz, invocation); data[invocation].u64 = subgroupShuffleUp(data[3].u64, invocation); data[invocation].u64.x = subgroupShuffleDown(data[0].u64.x, invocation); data[invocation].u64.xy = subgroupShuffleDown(data[1].u64.xy, invocation); data[invocation].u64.xyz = subgroupShuffleDown(data[2].u64.xyz, invocation); data[invocation].u64 = subgroupShuffleDown(data[3].u64, invocation); data[invocation].f16.x = subgroupShuffleUp(data[0].f16.x, invocation); data[invocation].f16.xy = subgroupShuffleUp(data[1].f16.xy, invocation); data[invocation].f16.xyz = subgroupShuffleUp(data[2].f16.xyz, invocation); data[invocation].f16 = subgroupShuffleUp(data[3].f16, invocation); data[invocation].f16.x = subgroupShuffleDown(data[0].f16.x, invocation); data[invocation].f16.xy = subgroupShuffleDown(data[1].f16.xy, invocation); data[invocation].f16.xyz = subgroupShuffleDown(data[2].f16.xyz, invocation); data[invocation].f16 = subgroupShuffleDown(data[3].f16, invocation); } glslang-16.0.0/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp000066400000000000000000000121561506534232700256660ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_shuffle_relative: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].i8.x = subgroupShuffleUp(data[0].i8.x, invocation); data[invocation].i8.xy = subgroupShuffleUp(data[1].i8.xy, invocation); data[invocation].i8.xyz = subgroupShuffleUp(data[2].i8.xyz, invocation); data[invocation].i8 = subgroupShuffleUp(data[3].i8, invocation); data[invocation].i8.x = subgroupShuffleDown(data[0].i8.x, invocation); data[invocation].i8.xy = subgroupShuffleDown(data[1].i8.xy, invocation); data[invocation].i8.xyz = subgroupShuffleDown(data[2].i8.xyz, invocation); data[invocation].i8 = subgroupShuffleDown(data[3].i8, invocation); data[invocation].u8.x = subgroupShuffleUp(data[0].u8.x, invocation); data[invocation].u8.xy = subgroupShuffleUp(data[1].u8.xy, invocation); data[invocation].u8.xyz = subgroupShuffleUp(data[2].u8.xyz, invocation); data[invocation].u8 = subgroupShuffleUp(data[3].u8, invocation); data[invocation].u8.x = subgroupShuffleDown(data[0].u8.x, invocation); data[invocation].u8.xy = subgroupShuffleDown(data[1].u8.xy, invocation); data[invocation].u8.xyz = subgroupShuffleDown(data[2].u8.xyz, invocation); data[invocation].u8 = subgroupShuffleDown(data[3].u8, invocation); data[invocation].i16.x = subgroupShuffleUp(data[0].i16.x, invocation); data[invocation].i16.xy = subgroupShuffleUp(data[1].i16.xy, invocation); data[invocation].i16.xyz = subgroupShuffleUp(data[2].i16.xyz, invocation); data[invocation].i16 = subgroupShuffleUp(data[3].i16, invocation); data[invocation].i16.x = subgroupShuffleDown(data[0].i16.x, invocation); data[invocation].i16.xy = subgroupShuffleDown(data[1].i16.xy, invocation); data[invocation].i16.xyz = subgroupShuffleDown(data[2].i16.xyz, invocation); data[invocation].i16 = subgroupShuffleDown(data[3].i16, invocation); data[invocation].u16.x = subgroupShuffleUp(data[0].u16.x, invocation); data[invocation].u16.xy = subgroupShuffleUp(data[1].u16.xy, invocation); data[invocation].u16.xyz = subgroupShuffleUp(data[2].u16.xyz, invocation); data[invocation].u16 = subgroupShuffleUp(data[3].u16, invocation); data[invocation].u16.x = subgroupShuffleDown(data[0].u16.x, invocation); data[invocation].u16.xy = subgroupShuffleDown(data[1].u16.xy, invocation); data[invocation].u16.xyz = subgroupShuffleDown(data[2].u16.xyz, invocation); data[invocation].u16 = subgroupShuffleDown(data[3].u16, invocation); data[invocation].i64.x = subgroupShuffleUp(data[0].i64.x, invocation); data[invocation].i64.xy = subgroupShuffleUp(data[1].i64.xy, invocation); data[invocation].i64.xyz = subgroupShuffleUp(data[2].i64.xyz, invocation); data[invocation].i64 = subgroupShuffleUp(data[3].i64, invocation); data[invocation].i64.x = subgroupShuffleDown(data[0].i64.x, invocation); data[invocation].i64.xy = subgroupShuffleDown(data[1].i64.xy, invocation); data[invocation].i64.xyz = subgroupShuffleDown(data[2].i64.xyz, invocation); data[invocation].i64 = subgroupShuffleDown(data[3].i64, invocation); data[invocation].u64.x = subgroupShuffleUp(data[0].u64.x, invocation); data[invocation].u64.xy = subgroupShuffleUp(data[1].u64.xy, invocation); data[invocation].u64.xyz = subgroupShuffleUp(data[2].u64.xyz, invocation); data[invocation].u64 = subgroupShuffleUp(data[3].u64, invocation); data[invocation].u64.x = subgroupShuffleDown(data[0].u64.x, invocation); data[invocation].u64.xy = subgroupShuffleDown(data[1].u64.xy, invocation); data[invocation].u64.xyz = subgroupShuffleDown(data[2].u64.xyz, invocation); data[invocation].u64 = subgroupShuffleDown(data[3].u64, invocation); data[invocation].f16.x = subgroupShuffleUp(data[0].f16.x, invocation); data[invocation].f16.xy = subgroupShuffleUp(data[1].f16.xy, invocation); data[invocation].f16.xyz = subgroupShuffleUp(data[2].f16.xyz, invocation); data[invocation].f16 = subgroupShuffleUp(data[3].f16, invocation); data[invocation].f16.x = subgroupShuffleDown(data[0].f16.x, invocation); data[invocation].f16.xy = subgroupShuffleDown(data[1].f16.xy, invocation); data[invocation].f16.xyz = subgroupShuffleDown(data[2].f16.xyz, invocation); data[invocation].f16 = subgroupShuffleDown(data[3].f16, invocation); } glslang-16.0.0/Test/spv.subgroupExtendedTypesVote.comp000066400000000000000000000052021506534232700230530ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_vote: enable #extension GL_EXT_shader_subgroup_extended_types_int8: enable #extension GL_EXT_shader_subgroup_extended_types_int16: enable #extension GL_EXT_shader_subgroup_extended_types_int64: enable #extension GL_EXT_shader_subgroup_extended_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; int r; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; if (subgroupAll(data[invocation].r < 0)) { data[invocation].r = int(subgroupAllEqual(data[0].i8.x)); data[invocation].r = int(subgroupAllEqual(data[1].i8.xy)); data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].i8)); data[invocation].r = int(subgroupAllEqual(data[0].u8.x)); data[invocation].r = int(subgroupAllEqual(data[1].u8.xy)); data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].u8)); data[invocation].r = int(subgroupAllEqual(data[0].i16.x)); data[invocation].r = int(subgroupAllEqual(data[1].i16.xy)); data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].i16)); data[invocation].r = int(subgroupAllEqual(data[0].u16.x)); data[invocation].r = int(subgroupAllEqual(data[1].u16.xy)); data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].u16)); } else if (subgroupAny(data[invocation].r < 0)) { data[invocation].r = int(subgroupAllEqual(data[0].i64.x)); data[invocation].r = int(subgroupAllEqual(data[1].i64.xy)); data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].i64)); data[invocation].r = int(subgroupAllEqual(data[0].u64.x)); data[invocation].r = int(subgroupAllEqual(data[1].u64.xy)); data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].u64)); data[invocation].r = int(subgroupAllEqual(data[0].f16.x)); data[invocation].r = int(subgroupAllEqual(data[1].f16.xy)); data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].f16)); } } glslang-16.0.0/Test/spv.subgroupExtendedTypesVoteNeg.comp000066400000000000000000000052121506534232700235060ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_vote: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: enable #extension GL_EXT_shader_explicit_arithmetic_types_int16: enable #extension GL_EXT_shader_explicit_arithmetic_types_int64: enable #extension GL_EXT_shader_explicit_arithmetic_types_float16: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { i8vec4 i8; u8vec4 u8; i16vec4 i16; u16vec4 u16; i64vec4 i64; u64vec4 u64; f16vec4 f16; int r; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; if (subgroupAll(data[invocation].r < 0)) { data[invocation].r = int(subgroupAllEqual(data[0].i8.x)); data[invocation].r = int(subgroupAllEqual(data[1].i8.xy)); data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].i8)); data[invocation].r = int(subgroupAllEqual(data[0].u8.x)); data[invocation].r = int(subgroupAllEqual(data[1].u8.xy)); data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].u8)); data[invocation].r = int(subgroupAllEqual(data[0].i16.x)); data[invocation].r = int(subgroupAllEqual(data[1].i16.xy)); data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].i16)); data[invocation].r = int(subgroupAllEqual(data[0].u16.x)); data[invocation].r = int(subgroupAllEqual(data[1].u16.xy)); data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].u16)); } else if (subgroupAny(data[invocation].r < 0)) { data[invocation].r = int(subgroupAllEqual(data[0].i64.x)); data[invocation].r = int(subgroupAllEqual(data[1].i64.xy)); data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].i64)); data[invocation].r = int(subgroupAllEqual(data[0].u64.x)); data[invocation].r = int(subgroupAllEqual(data[1].u64.xy)); data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].u64)); data[invocation].r = int(subgroupAllEqual(data[0].f16.x)); data[invocation].r = int(subgroupAllEqual(data[1].f16.xy)); data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].f16)); } } glslang-16.0.0/Test/spv.subgroupPartitioned.comp000066400000000000000000000670031506534232700217210ustar00rootroot00000000000000#version 450 #extension GL_NV_shader_subgroup_partitioned: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 ballot = subgroupPartitionNV(invocation); data[invocation].u4 = subgroupPartitionNV(data[0].f4.x); data[invocation].u4 = subgroupPartitionNV(data[0].f4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].f4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].f4); data[invocation].u4 = subgroupPartitionNV(data[0].i4.x); data[invocation].u4 = subgroupPartitionNV(data[0].i4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].i4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].i4); data[invocation].u4 = subgroupPartitionNV(data[0].u4.x); data[invocation].u4 = subgroupPartitionNV(data[0].u4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].u4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].u4); data[invocation].u4 = subgroupPartitionNV(data[0].d4.x); data[invocation].u4 = subgroupPartitionNV(data[0].d4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].d4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].d4); data[invocation].u4 = subgroupPartitionNV(bool(data[0].i4.x)); data[invocation].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy)); data[invocation].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz)); data[invocation].u4 = subgroupPartitionNV(bvec4(data[0].i4)); data[invocation].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); } glslang-16.0.0/Test/spv.subgroupQuad.comp000066400000000000000000000144631506534232700203330ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_quad: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupQuadBroadcast(data[0].f4.x, 1); data[invocation].f4.xy = subgroupQuadBroadcast(data[1].f4.xy, 1); data[invocation].f4.xyz = subgroupQuadBroadcast(data[2].f4.xyz, 1); data[invocation].f4 = subgroupQuadBroadcast(data[3].f4, 1); data[invocation].i4.x = subgroupQuadBroadcast(data[0].i4.x, 1); data[invocation].i4.xy = subgroupQuadBroadcast(data[1].i4.xy, 1); data[invocation].i4.xyz = subgroupQuadBroadcast(data[2].i4.xyz, 1); data[invocation].i4 = subgroupQuadBroadcast(data[3].i4, 1); data[invocation].u4.x = subgroupQuadBroadcast(data[0].u4.x, 1); data[invocation].u4.xy = subgroupQuadBroadcast(data[1].u4.xy, 1); data[invocation].u4.xyz = subgroupQuadBroadcast(data[2].u4.xyz, 1); data[invocation].u4 = subgroupQuadBroadcast(data[3].u4, 1); data[invocation].d4.x = subgroupQuadBroadcast(data[0].d4.x, 1); data[invocation].d4.xy = subgroupQuadBroadcast(data[1].d4.xy, 1); data[invocation].d4.xyz = subgroupQuadBroadcast(data[2].d4.xyz, 1); data[invocation].d4 = subgroupQuadBroadcast(data[3].d4, 1); data[invocation].i4.x = int(subgroupQuadBroadcast(data[0].i4.x < 0, 1)); data[invocation].i4.xy = ivec2(subgroupQuadBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1)); data[invocation].i4.xyz = ivec3(subgroupQuadBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1)); data[invocation].i4 = ivec4(subgroupQuadBroadcast(lessThan(data[1].i4, ivec4(0)), 1)); data[invocation].f4.x = subgroupQuadSwapHorizontal(data[0].f4.x); data[invocation].f4.xy = subgroupQuadSwapHorizontal(data[1].f4.xy); data[invocation].f4.xyz = subgroupQuadSwapHorizontal(data[2].f4.xyz); data[invocation].f4 = subgroupQuadSwapHorizontal(data[3].f4); data[invocation].i4.x = subgroupQuadSwapHorizontal(data[0].i4.x); data[invocation].i4.xy = subgroupQuadSwapHorizontal(data[1].i4.xy); data[invocation].i4.xyz = subgroupQuadSwapHorizontal(data[2].i4.xyz); data[invocation].i4 = subgroupQuadSwapHorizontal(data[3].i4); data[invocation].u4.x = subgroupQuadSwapHorizontal(data[0].u4.x); data[invocation].u4.xy = subgroupQuadSwapHorizontal(data[1].u4.xy); data[invocation].u4.xyz = subgroupQuadSwapHorizontal(data[2].u4.xyz); data[invocation].u4 = subgroupQuadSwapHorizontal(data[3].u4); data[invocation].d4.x = subgroupQuadSwapHorizontal(data[0].d4.x); data[invocation].d4.xy = subgroupQuadSwapHorizontal(data[1].d4.xy); data[invocation].d4.xyz = subgroupQuadSwapHorizontal(data[2].d4.xyz); data[invocation].d4 = subgroupQuadSwapHorizontal(data[3].d4); data[invocation].i4.x = int(subgroupQuadSwapHorizontal(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupQuadSwapHorizontal(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupQuadSwapVertical(data[0].f4.x); data[invocation].f4.xy = subgroupQuadSwapVertical(data[1].f4.xy); data[invocation].f4.xyz = subgroupQuadSwapVertical(data[2].f4.xyz); data[invocation].f4 = subgroupQuadSwapVertical(data[3].f4); data[invocation].i4.x = subgroupQuadSwapVertical(data[0].i4.x); data[invocation].i4.xy = subgroupQuadSwapVertical(data[1].i4.xy); data[invocation].i4.xyz = subgroupQuadSwapVertical(data[2].i4.xyz); data[invocation].i4 = subgroupQuadSwapVertical(data[3].i4); data[invocation].u4.x = subgroupQuadSwapVertical(data[0].u4.x); data[invocation].u4.xy = subgroupQuadSwapVertical(data[1].u4.xy); data[invocation].u4.xyz = subgroupQuadSwapVertical(data[2].u4.xyz); data[invocation].u4 = subgroupQuadSwapVertical(data[3].u4); data[invocation].d4.x = subgroupQuadSwapVertical(data[0].d4.x); data[invocation].d4.xy = subgroupQuadSwapVertical(data[1].d4.xy); data[invocation].d4.xyz = subgroupQuadSwapVertical(data[2].d4.xyz); data[invocation].d4 = subgroupQuadSwapVertical(data[3].d4); data[invocation].i4.x = int(subgroupQuadSwapVertical(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupQuadSwapVertical(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupQuadSwapVertical(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupQuadSwapVertical(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupQuadSwapDiagonal(data[0].f4.x); data[invocation].f4.xy = subgroupQuadSwapDiagonal(data[1].f4.xy); data[invocation].f4.xyz = subgroupQuadSwapDiagonal(data[2].f4.xyz); data[invocation].f4 = subgroupQuadSwapDiagonal(data[3].f4); data[invocation].i4.x = subgroupQuadSwapDiagonal(data[0].i4.x); data[invocation].i4.xy = subgroupQuadSwapDiagonal(data[1].i4.xy); data[invocation].i4.xyz = subgroupQuadSwapDiagonal(data[2].i4.xyz); data[invocation].i4 = subgroupQuadSwapDiagonal(data[3].i4); data[invocation].u4.x = subgroupQuadSwapDiagonal(data[0].u4.x); data[invocation].u4.xy = subgroupQuadSwapDiagonal(data[1].u4.xy); data[invocation].u4.xyz = subgroupQuadSwapDiagonal(data[2].u4.xyz); data[invocation].u4 = subgroupQuadSwapDiagonal(data[3].u4); data[invocation].d4.x = subgroupQuadSwapDiagonal(data[0].d4.x); data[invocation].d4.xy = subgroupQuadSwapDiagonal(data[1].d4.xy); data[invocation].d4.xyz = subgroupQuadSwapDiagonal(data[2].d4.xyz); data[invocation].d4 = subgroupQuadSwapDiagonal(data[3].d4); data[invocation].i4.x = int(subgroupQuadSwapDiagonal(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupQuadSwapDiagonal(lessThan(data[1].i4, ivec4(0)))); } glslang-16.0.0/Test/spv.subgroupRotate.comp000066400000000000000000000064721506534232700207000ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_rotate: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; readonly buffer roblock { uint delta; } ro; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint delta = ro.delta; data[delta].f4.x = subgroupRotate(data[0].f4.x, delta); data[delta].f4.xy = subgroupRotate(data[1].f4.xy, delta); data[delta].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); data[delta].f4 = subgroupRotate(data[3].f4, delta); data[delta].i4.x = subgroupRotate(data[0].i4.x, delta); data[delta].i4.xy = subgroupRotate(data[1].i4.xy, delta); data[delta].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); data[delta].i4 = subgroupRotate(data[3].i4, delta); data[delta].u4.x = subgroupRotate(data[0].u4.x, delta); data[delta].u4.xy = subgroupRotate(data[1].u4.xy, delta); data[delta].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); data[delta].u4 = subgroupRotate(data[3].u4, delta); data[delta].d4.x = subgroupRotate(data[0].d4.x, delta); data[delta].d4.xy = subgroupRotate(data[1].d4.xy, delta); data[delta].d4.xyz = subgroupRotate(data[2].d4.xyz, delta); data[delta].d4 = subgroupRotate(data[3].d4, delta); data[delta].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); data[delta].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); data[delta].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); data[delta].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); data[delta].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1); data[delta].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1); data[delta].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1); data[delta].f4 = subgroupClusteredRotate(data[3].f4, delta, 1); data[delta].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1); data[delta].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1); data[delta].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1); data[delta].i4 = subgroupClusteredRotate(data[3].i4, delta, 1); data[delta].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1); data[delta].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1); data[delta].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1); data[delta].u4 = subgroupClusteredRotate(data[3].u4, delta, 1); data[delta].d4.x = subgroupClusteredRotate(data[0].d4.x, delta, 1); data[delta].d4.xy = subgroupClusteredRotate(data[1].d4.xy, delta, 1); data[delta].d4.xyz = subgroupClusteredRotate(data[2].d4.xyz, delta, 1); data[delta].d4 = subgroupClusteredRotate(data[3].d4, delta, 1); data[delta].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1)); data[delta].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1)); data[delta].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1)); data[delta].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1)); } glslang-16.0.0/Test/spv.subgroupShuffle.comp000066400000000000000000000071761506534232700210400ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_shuffle: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupShuffle(data[0].f4.x, invocation); data[invocation].f4.xy = subgroupShuffle(data[1].f4.xy, invocation); data[invocation].f4.xyz = subgroupShuffle(data[2].f4.xyz, invocation); data[invocation].f4 = subgroupShuffle(data[3].f4, invocation); data[invocation].i4.x = subgroupShuffle(data[0].i4.x, invocation); data[invocation].i4.xy = subgroupShuffle(data[1].i4.xy, invocation); data[invocation].i4.xyz = subgroupShuffle(data[2].i4.xyz, invocation); data[invocation].i4 = subgroupShuffle(data[3].i4, invocation); data[invocation].u4.x = subgroupShuffle(data[0].u4.x, invocation); data[invocation].u4.xy = subgroupShuffle(data[1].u4.xy, invocation); data[invocation].u4.xyz = subgroupShuffle(data[2].u4.xyz, invocation); data[invocation].u4 = subgroupShuffle(data[3].u4, invocation); data[invocation].d4.x = subgroupShuffle(data[0].d4.x, invocation); data[invocation].d4.xy = subgroupShuffle(data[1].d4.xy, invocation); data[invocation].d4.xyz = subgroupShuffle(data[2].d4.xyz, invocation); data[invocation].d4 = subgroupShuffle(data[3].d4, invocation); data[invocation].i4.x = int(subgroupShuffle(data[0].i4.x < 0, invocation)); data[invocation].i4.xy = ivec2(subgroupShuffle(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupShuffle(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4 = ivec4(subgroupShuffle(lessThan(data[1].i4, ivec4(0)), invocation)); data[invocation].f4.x = subgroupShuffleXor(data[0].f4.x, invocation); data[invocation].f4.xy = subgroupShuffleXor(data[1].f4.xy, invocation); data[invocation].f4.xyz = subgroupShuffleXor(data[2].f4.xyz, invocation); data[invocation].f4 = subgroupShuffleXor(data[3].f4, invocation); data[invocation].i4.x = subgroupShuffleXor(data[0].i4.x, invocation); data[invocation].i4.xy = subgroupShuffleXor(data[1].i4.xy, invocation); data[invocation].i4.xyz = subgroupShuffleXor(data[2].i4.xyz, invocation); data[invocation].i4 = subgroupShuffleXor(data[3].i4, invocation); data[invocation].u4.x = subgroupShuffleXor(data[0].u4.x, invocation); data[invocation].u4.xy = subgroupShuffleXor(data[1].u4.xy, invocation); data[invocation].u4.xyz = subgroupShuffleXor(data[2].u4.xyz, invocation); data[invocation].u4 = subgroupShuffleXor(data[3].u4, invocation); data[invocation].d4.x = subgroupShuffleXor(data[0].d4.x, invocation); data[invocation].d4.xy = subgroupShuffleXor(data[1].d4.xy, invocation); data[invocation].d4.xyz = subgroupShuffleXor(data[2].d4.xyz, invocation); data[invocation].d4 = subgroupShuffleXor(data[3].d4, invocation); data[invocation].i4.x = int(subgroupShuffleXor(data[0].i4.x < 0, invocation)); data[invocation].i4.xy = ivec2(subgroupShuffleXor(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupShuffleXor(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4 = ivec4(subgroupShuffleXor(lessThan(data[1].i4, ivec4(0)), invocation)); } glslang-16.0.0/Test/spv.subgroupShuffleRelative.comp000066400000000000000000000073031506534232700225240ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_shuffle_relative: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupShuffleUp(data[0].f4.x, invocation); data[invocation].f4.xy = subgroupShuffleUp(data[1].f4.xy, invocation); data[invocation].f4.xyz = subgroupShuffleUp(data[2].f4.xyz, invocation); data[invocation].f4 = subgroupShuffleUp(data[3].f4, invocation); data[invocation].i4.x = subgroupShuffleUp(data[0].i4.x, invocation); data[invocation].i4.xy = subgroupShuffleUp(data[1].i4.xy, invocation); data[invocation].i4.xyz = subgroupShuffleUp(data[2].i4.xyz, invocation); data[invocation].i4 = subgroupShuffleUp(data[3].i4, invocation); data[invocation].u4.x = subgroupShuffleUp(data[0].u4.x, invocation); data[invocation].u4.xy = subgroupShuffleUp(data[1].u4.xy, invocation); data[invocation].u4.xyz = subgroupShuffleUp(data[2].u4.xyz, invocation); data[invocation].u4 = subgroupShuffleUp(data[3].u4, invocation); data[invocation].d4.x = subgroupShuffleUp(data[0].d4.x, invocation); data[invocation].d4.xy = subgroupShuffleUp(data[1].d4.xy, invocation); data[invocation].d4.xyz = subgroupShuffleUp(data[2].d4.xyz, invocation); data[invocation].d4 = subgroupShuffleUp(data[3].d4, invocation); data[invocation].i4.x = int(subgroupShuffleUp(data[0].i4.x < 0, invocation)); data[invocation].i4.xy = ivec2(subgroupShuffleUp(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupShuffleUp(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4 = ivec4(subgroupShuffleUp(lessThan(data[1].i4, ivec4(0)), invocation)); data[invocation].f4.x = subgroupShuffleDown(data[0].f4.x, invocation); data[invocation].f4.xy = subgroupShuffleDown(data[1].f4.xy, invocation); data[invocation].f4.xyz = subgroupShuffleDown(data[2].f4.xyz, invocation); data[invocation].f4 = subgroupShuffleDown(data[3].f4, invocation); data[invocation].i4.x = subgroupShuffleDown(data[0].i4.x, invocation); data[invocation].i4.xy = subgroupShuffleDown(data[1].i4.xy, invocation); data[invocation].i4.xyz = subgroupShuffleDown(data[2].i4.xyz, invocation); data[invocation].i4 = subgroupShuffleDown(data[3].i4, invocation); data[invocation].u4.x = subgroupShuffleDown(data[0].u4.x, invocation); data[invocation].u4.xy = subgroupShuffleDown(data[1].u4.xy, invocation); data[invocation].u4.xyz = subgroupShuffleDown(data[2].u4.xyz, invocation); data[invocation].u4 = subgroupShuffleDown(data[3].u4, invocation); data[invocation].d4.x = subgroupShuffleDown(data[0].d4.x, invocation); data[invocation].d4.xy = subgroupShuffleDown(data[1].d4.xy, invocation); data[invocation].d4.xyz = subgroupShuffleDown(data[2].d4.xyz, invocation); data[invocation].d4 = subgroupShuffleDown(data[3].d4, invocation); data[invocation].i4.x = int(subgroupShuffleDown(data[0].i4.x < 0, invocation)); data[invocation].i4.xy = ivec2(subgroupShuffleDown(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupShuffleDown(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4 = ivec4(subgroupShuffleDown(lessThan(data[1].i4, ivec4(0)), invocation)); } glslang-16.0.0/Test/spv.subgroupSizeARB.frag000066400000000000000000000003031506534232700206450ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/spv.subgroupUniformControlFlow.vert000066400000000000000000000003101506534232700232550ustar00rootroot00000000000000#version 460 #ifdef GL_EXT_subgroup_uniform_control_flow #extension GL_EXT_subgroup_uniform_control_flow : enable [[random(4)]] void main() [[subgroup_uniform_control_flow]] { } #endif glslang-16.0.0/Test/spv.subgroupVote.comp000066400000000000000000000035771506534232700203620ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_vote: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; int r; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; if (subgroupAll(data[invocation].r < 0)) { data[invocation].r = int(subgroupAllEqual(data[0].f4.x)); data[invocation].r = int(subgroupAllEqual(data[1].f4.xy)); data[invocation].r = int(subgroupAllEqual(data[2].f4.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].f4)); data[invocation].r = int(subgroupAllEqual(data[0].i4.x)); data[invocation].r = int(subgroupAllEqual(data[1].i4.xy)); data[invocation].r = int(subgroupAllEqual(data[2].i4.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].i4)); data[invocation].r = int(subgroupAllEqual(data[0].u4.x)); data[invocation].r = int(subgroupAllEqual(data[1].u4.xy)); data[invocation].r = int(subgroupAllEqual(data[2].u4.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].u4)); } else if (subgroupAny(data[invocation].r < 0)) { data[invocation].r = int(subgroupAllEqual(data[0].d4.x)); data[invocation].r = int(subgroupAllEqual(data[1].d4.xy)); data[invocation].r = int(subgroupAllEqual(data[2].d4.xyz)); data[invocation].r = int(subgroupAllEqual(data[3].d4)); data[invocation].r = int(int(subgroupAllEqual(data[0].i4.x < 0))); data[invocation].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0))))); data[invocation].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0))))); data[invocation].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0))))); } } glslang-16.0.0/Test/spv.subpass.frag000066400000000000000000000014271506534232700173070ustar00rootroot00000000000000#version 400 layout(input_attachment_index = 1) uniform subpassInput sub; layout(input_attachment_index = 2) uniform subpassInputMS subMS; layout(input_attachment_index = 3) uniform isubpassInput isub; layout(input_attachment_index = 4) uniform isubpassInputMS isubMS; layout(input_attachment_index = 5) uniform usubpassInput usub; layout(input_attachment_index = 6) uniform usubpassInputMS usubMS; out vec4 color; out ivec4 icolor; out uvec4 ucolor; void foo(isubpassInputMS sb) { icolor += subpassLoad(sb, 3); } void main() { color = subpassLoad(sub); color += subpassLoad(subMS, 3); icolor = subpassLoad(isub); icolor += subpassLoad(isubMS, 3); ucolor = subpassLoad(usub); ucolor += subpassLoad(usubMS, 3); foo(isubMS); } glslang-16.0.0/Test/spv.switch.frag000066400000000000000000000042261506534232700171300ustar00rootroot00000000000000#version 310 es precision mediump float; flat in int c, d; in float x; out float color; in vec4 v; vec4 foo1(vec4 v1, vec4 v2, int i1) { switch (i1) { case 0: return v1; case 2: case 1: return v2; case 3: return v1 * v2; } return vec4(0.0); } vec4 foo2(vec4 v1, vec4 v2, int i1) { switch (i1) { case 0: return v1; case 2: return vec4(1.0); case 1: return v2; case 3: return v1 * v2; } return vec4(0.0); } void main() { float f; int a[2]; int local = c; switch(++local) { } switch (c) { case 1: f = sin(x); break; case 2: f = cos(x); break; default: f = tan(x); } switch (c) { case 1: f += sin(x); case 2: f += cos(x); break; default: f += tan(x); } switch (c) { case 1: f += sin(x); break; case 2: f += cos(x); break; } switch (c) { case 1: f += sin(x); break; case 2: switch (d) { case 1: f += x * x * x; break; case 2: f += x * x; break; } break; default: f += tan(x); } for (int i = 0; i < 10; ++i) { switch (c) { case 1: f += sin(x); for (int j = 20; j < 30; ++j) { ++f; if (f < 100.2) break; } break; case 2: f += cos(x); break; break; default: f += tan(x); } if (f < 3.43) break; } switch (c) { case 1: f += sin(x); break; case 2: // test no statements at end } color = f + float(local); color += foo1(v,v,c).y; color += foo2(v,v,c).z; switch (c) { case 0: break; default: } switch (c) { default: } } glslang-16.0.0/Test/spv.swizzle.frag000066400000000000000000000015501506534232700173330ustar00rootroot00000000000000#version 140 in float blend; in vec4 u; bool p; in vec2 t; void main() { float blendscale = 1.789; vec4 w = u; vec4 w_undef; // test undef vec4 w_dep = u; // test dependent swizzles vec4 w_reorder = u; // test reordering vec4 w2 = u; vec4 w_flow = u; // test flowControl w_reorder.z = blendscale; w.wy = t; w_reorder.x = blendscale; w2.xyzw = u.zwxy; w_reorder.y = blendscale; w_dep.xy = w2.xz; w_dep.zw = t; w_undef.xy = u.zw; if (p) w_flow.x = t.x; else w_flow.x = t.y; gl_FragColor = mix(w_reorder, w_undef, w * w2 * w_dep * w_flow); vec2 c = t; vec4 rep = vec4(0.0, 0.0, 0.0, 1.0); if (c.x < 0.0) c.x *= -1.0; if (c.x <= 1.0) rep.x = 3.4; gl_FragColor += rep; } glslang-16.0.0/Test/spv.swizzleInversion.frag000066400000000000000000000006551506534232700212350ustar00rootroot00000000000000#version 450 in vec4 in4; in vec3 in3; void main() { vec3 v43 = interpolateAtCentroid(in4.wzx); vec2 v42 = interpolateAtSample(in4.zx, 1); vec4 v44 = interpolateAtOffset(in4.zyxw, vec2(2.0)); float v41 = interpolateAtOffset(in4.y, vec2(2.0)); vec3 v33 = interpolateAtCentroid(in3.yzx); vec2 v32 = interpolateAtSample(in3.zx, 1); float v31 = interpolateAtOffset(in4.y, vec2(2.0)); } glslang-16.0.0/Test/spv.targetOpenGL.vert000066400000000000000000000003321506534232700202150ustar00rootroot00000000000000#version 450 layout(constant_id = 3) const int a = 2; layout(location = 2) uniform float f; layout(location = 4, binding = 1) uniform sampler2D s1; layout(binding = 2) uniform sampler2D s2; void main() { } glslang-16.0.0/Test/spv.targetVulkan.vert000066400000000000000000000002011506534232700203240ustar00rootroot00000000000000#version 450 layout(constant_id = 3) const int a = 2; layout(push_constant) uniform pc { float f; }; void main() { } glslang-16.0.0/Test/spv.tensorARM.access_qualifiers.comp000066400000000000000000000021001506534232700231710ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable readonly layout(set=0, binding=1) uniform tensorARM roTens; writeonly layout(set=0, binding=0) uniform tensorARM woTens; readonly writeonly layout(set=0, binding=1) uniform tensorARM rowoTens; layout(set=0, binding=2) uniform tensorARM rwTens; shared uint x; void main() { // tensorSizeARM should be callable with any tensor regardless of access qualifiers. x = 0; x += tensorSizeARM(roTens, 0); x += tensorSizeARM(woTens, 0); x += tensorSizeARM(rowoTens, 1); x += tensorSizeARM(rwTens, 1); int d = 4; // Valid tensorWriteARM calls. tensorWriteARM(woTens, uint[](0, 0), d); tensorWriteARM(rwTens, uint[](0, 0), d); // Invalid tensorWriteARM calls. tensorWriteARM(rowoTens, uint[](0, 0), d); tensorWriteARM(roTens, uint[](0, 0), d); // Valid tensorReadARM calls. tensorReadARM(roTens, uint[](0, 0), d); tensorReadARM(rwTens, uint[](0, 0), d); // Invalid tensorReadARM calls. tensorReadARM(rowoTens, uint[](0, 0), d); tensorReadARM(woTens, uint[](0, 0), d); } glslang-16.0.0/Test/spv.tensorARM.all_accesses.comp000066400000000000000000000044551506534232700221440ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable // Int types uniform tensorARM it8; uniform tensorARM it16; uniform tensorARM it32; uniform tensorARM it64; // Uint types uniform tensorARM ut8; uniform tensorARM ut16; uniform tensorARM ut32; uniform tensorARM ut64; // Float types uniform tensorARM ft16; uniform tensorARM ft32; uniform tensorARM ft64; void main() { uint coords[] = {0}; // Int types int8_t iw8 = int8_t(1); int16_t iw16 = 1s; int iw = 1; int64_t iw64 = 1l; tensorWriteARM(it8, coords, iw8); tensorWriteARM(it16, coords, iw16); tensorWriteARM(it32, coords, iw); tensorWriteARM(it64, coords, iw64); int iwv[4] = int[](1, 1, 1, 1); tensorWriteARM(it32, coords, iwv); int8_t ir8; int16_t ir16; int ir; int64_t ir64; tensorReadARM(it8, coords, ir8); tensorReadARM(it16, coords, ir16); tensorReadARM(it32, coords, ir); tensorReadARM(it64, coords, ir64); int irv[4]; tensorReadARM(it32, coords, irv); // Uint types uint8_t uw8 = uint8_t(1); uint16_t uw16 = 1s; uint uw = 1; uint64_t uw64 = 1l; tensorWriteARM(ut8, coords, uw8); tensorWriteARM(ut16, coords, uw16); tensorWriteARM(ut32, coords, uw); tensorWriteARM(ut64, coords, uw64); uint uwv[4] = uint[](1, 1, 1, 1); tensorWriteARM(ut32, coords, uwv); uint8_t ur8; uint16_t ur16; uint ur; uint64_t ur64; tensorReadARM(ut8, coords, ur8); tensorReadARM(ut16, coords, ur16); tensorReadARM(ut32, coords, ur); tensorReadARM(ut64, coords, ur64); uint urv[4]; tensorReadARM(ut32, coords, urv); // Float types float fw = 1.0; float16_t fw16 = 1.0hf; float64_t fw64 = 1.0; tensorWriteARM(ft16, coords, fw16); tensorWriteARM(ft32, coords, fw); tensorWriteARM(ft64, coords, fw64); float fwv[4] = float[](1.0, 1.0, 1.0, 1.0); tensorWriteARM(ft32, coords, fwv); float fr; float16_t fr16; float64_t fr64; tensorReadARM(ft16, coords, fr16); tensorReadARM(ft32, coords, fr); tensorReadARM(ft64, coords, fr64); float frv[4]; tensorReadARM(ft32, coords, frv); } glslang-16.0.0/Test/spv.tensorARM.array.comp000066400000000000000000000003001506534232700206220ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable layout(set=0, binding=0) uniform tensorARM ta[2]; void main() { uint x = tensorSizeARM(ta[0], 0) + tensorSizeARM(ta[1], 1); } glslang-16.0.0/Test/spv.tensorARM.declare.comp000066400000000000000000000015641506534232700211200ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout(binding = 0) uniform tensorARM t; layout(set = 0, binding = 1) uniform tensorARM tb; void main() { bool b; bool barr[4]; int32_t i32; int32_t vec[2]; int32_t vecthree[3]; int32_t vecfour[4]; tensorReadARM(tb, uint[](0, 0), b); tensorReadARM(tb, uint[](0, 0), barr); tensorReadARM(t, uint[](0,0,0,0), i32, gl_TensorOperandsOutOfBoundsValueARM, 33); tensorReadARM(t, uint[](1,2,3,4), vec); tensorReadARM(t, uint[](3,2,1,0), vecthree); tensorReadARM(t, uint[](99,99,99,99), vecfour); tensorWriteARM(tb, uint[](0, 0), b); tensorWriteARM(tb, uint[](0, 0), barr); tensorWriteARM(t, uint[](4,3,2,1), i32); tensorWriteARM(t, uint[](0,0,0,0), vec, gl_TensorOperandsNonTemporalARM); } glslang-16.0.0/Test/spv.tensorARM.frag000066400000000000000000000011271506534232700174760ustar00rootroot00000000000000#version 450 #extension GL_ARM_tensors : require #extension GL_EXT_shader_explicit_arithmetic_types : require layout(location = 0) out vec4 outColor; layout(set=0, binding=0) uniform tensorARM tens; void main() { const uint size_d1 = tensorSizeARM(tens, 1); const uint size_d2 = tensorSizeARM(tens, 2); const uint coord_x = uint(gl_FragCoord.x) % size_d1; const uint coord_y = uint(gl_FragCoord.y) % size_d2; uint8_t tensorValue = uint8_t(0); tensorReadARM(tens, uint[](coord_y, coord_x, 1), tensorValue); outColor = vec4(0.0, tensorValue, 0.0, 255.0); } glslang-16.0.0/Test/spv.tensorARM.invalid_access.comp000066400000000000000000000021061506534232700224610ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable uniform tensorARM t; void main() { // Type checking should render these accesses invalid int i = 33; float w = 1.5; tensorWriteARM(t, uint[](0,0), i); tensorWriteARM(t, uint[](0,0), w); float r; tensorReadARM(t, uint[](0,0), i); tensorReadARM(t, uint[](0,0), r); // Signed vs unsigned. uint u = 34; tensorReadARM(t, uint[](0), u); tensorWriteARM(t, uint[](0), u); // OutOfBounds value is only valid with tensorReadARM. tensorWriteARM(t, uint[](1), i, gl_TensorOperandsOutOfBoundsValueARM, 14); // OutOfBounds value must be provided. tensorReadARM(t, uint[](1), i, gl_TensorOperandsOutOfBoundsValueARM); // OutOfBounds value must be constant. tensorReadARM(t, uint[](2), i, gl_TensorOperandsOutOfBoundsValueARM, i); // OutOfBounds value type must match tensor element type. tensorReadARM(t, uint[](3), i, gl_TensorOperandsOutOfBoundsValueARM, 3.14); // OutOfBounds value type must match tensor element type. tensorReadARM(t, uint[](3), i, gl_TensorOperandsOutOfBoundsValueARM, 3u); } glslang-16.0.0/Test/spv.tensorARM.invalid_declare.comp000066400000000000000000000006761506534232700226310ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable tensorARM noparams; tensorARM zero; tensorARM minus_one; tensorARM too_many; tensorARM bad_type; // Repeat the above, but now with the uniform keyword. uniform tensorARM noparams2; uniform tensorARM zero2; uniform tensorARM minus_one2; uniform tensorARM too_many2; uniform tensorARM bad_type2; void main() {} glslang-16.0.0/Test/spv.tensorARM.invalid_operands.comp000066400000000000000000000004601506534232700230340ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable uniform tensorARM t; void main() { int ret; // error: operands is not a constant expression. uint operands = gl_TensorOperandsNonTemporalARM | gl_TensorOperandsOutOfBoundsValueARM; tensorReadARM(t, uint[](0,0), ret, operands, 1); } glslang-16.0.0/Test/spv.tensorARM.invalid_params.comp000066400000000000000000000012541506534232700225060ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout(set = 0, binding = 0) uniform tensorARM tu; layout(set = 0, binding = 1) uniform tensorARM td; layout(set = 0, binding = 2, std430) buffer buff { uint out_data[]; }; void unusedTensorParam(tensorARM) { return; } uint getDim0Size(tensorARM t) { return tensorSizeARM(t, 0); } uint partiallySpecialized(tensorARM t) { return tensorSizeARM(t, 1); } void main() { unusedTensorParam(tu); unusedTensorParam(td); out_data[0] = getDim0Size(tu); out_data[0] += getDim0Size(td); out_data[0] += partiallySpecialized(tu); } glslang-16.0.0/Test/spv.tensorARM.invalid_size.comp000066400000000000000000000002721506534232700221740ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable uniform tensorARM t; shared uint p; void main() { uint s = 0; s += tensorSizeARM(t, 2); s += tensorSizeARM(t, p); } glslang-16.0.0/Test/spv.tensorARM.invalid_tensor_type.comp000066400000000000000000000002361506534232700235750ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable tensorARM<1, float64_t> t; void main() {} glslang-16.0.0/Test/spv.tensorARM.params.comp000066400000000000000000000011601506534232700207740ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout(set = 0, binding = 0) uniform tensorARM tu; layout(set = 0, binding = 1, std430) buffer buff { uint out_data[]; }; void unusedTensorParams(tensorARM, readonly tensorARM) { return; } uint tensorParam(tensorARM t) { return tensorSizeARM(t, 0); } uint qualifiedTensorParam(readonly tensorARM t) { return tensorSizeARM(t, 0); } void main() { unusedTensorParams(tu, tu); out_data[0] = tensorParam(tu) + qualifiedTensorParam(tu); } glslang-16.0.0/Test/spv.tensorARM.read.comp000066400000000000000000000007511506534232700204310ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable #extension GL_EXT_shader_explicit_arithmetic_types : enable layout(set = 0, binding = 0) uniform tensorARM t; layout(set = 0, binding = 1, std430) buffer buff { int32_t out_data[]; }; void main() { int32_t one; int32_t two[2]; tensorReadARM(t, uint[](1,2,3,4), one, gl_TensorOperandsOutOfBoundsValueARM, 11); tensorReadARM(t, uint[](1,2,3,4), two); tensorReadARM(t, uint[](1,2,3,4), out_data[1]); } glslang-16.0.0/Test/spv.tensorARM.size.comp000066400000000000000000000006131506534232700204650ustar00rootroot00000000000000#version 460 core #extension GL_ARM_tensors : enable layout(set=0, binding=0) uniform tensorARM rank1; layout(set=0, binding=1) uniform tensorARM rank2; layout(set=0, binding=2) uniform tensorARM rank4; uint x; void main() { x = 0; x += tensorSizeARM(rank1, 0); x += tensorSizeARM(rank2, 0); x += tensorSizeARM(rank2, 1); x += tensorSizeARM(rank4, 3); } glslang-16.0.0/Test/spv.terminate.frag000066400000000000000000000001601506534232700176100ustar00rootroot00000000000000#version 400 #extension GL_EXT_terminate_invocation : enable void main() { terminateInvocation; } glslang-16.0.0/Test/spv.test.frag000066400000000000000000000006011506534232700165770ustar00rootroot00000000000000#version 400 uniform sampler2D texSampler2D; uniform sampler3D texSampler3D; in float blend; in vec2 scale; in vec4 u; in vec2 t; in vec3 coords; void main() { float blendscale = 1.789; vec4 v = texture(texSampler2D, (t + scale) / scale ).wzyx; vec4 w = texture(texSampler3D, coords) + v; gl_FragColor = mix(w, u, blend * blendscale); } glslang-16.0.0/Test/spv.test.vert000066400000000000000000000002571506534232700166470ustar00rootroot00000000000000#version 140 in mat4 transform; attribute vec4 position; in vec2 uv_in; out vec2 uv; void main() { uv = uv_in; gl_Position = transform * position; } glslang-16.0.0/Test/spv.texture.frag000066400000000000000000000052771506534232700173360ustar00rootroot00000000000000#version 140 uniform sampler1D texSampler1D; uniform sampler2D texSampler2D; uniform sampler3D texSampler3D; uniform samplerCube texSamplerCube; uniform sampler1DShadow shadowSampler1D; uniform sampler2DShadow shadowSampler2D; varying float blend; varying vec2 scale; varying vec4 u; in vec2 t; in vec2 coords2D; void main() { float blendscale = 1.789; float bias = 2.0; float lod = 3.0; float proj = 2.0; float coords1D = 1.789; vec3 coords3D = vec3(1.789, 2.718, 3.453); vec4 coords4D = vec4(1.789, 2.718, 3.453, 2.0); vec4 color = vec4(0.0, 0.0, 0.0, 0.0); color += texture (texSampler1D, coords1D); color += texture (texSampler1D, coords1D, bias); color += textureProj(texSampler1D, coords2D); color += textureProj(texSampler1D, coords4D); color += textureProj(texSampler1D, coords2D, bias); color += textureProj(texSampler1D, coords4D, bias); color += texture (texSampler2D, coords2D); color += texture (texSampler2D, coords2D, bias); color += textureProj (texSampler2D, coords3D); color += textureProj (texSampler2D, coords4D, bias); color += texture (texSampler3D, coords3D); color += texture (texSampler3D, coords3D, bias); color += textureProj (texSampler3D, coords4D); color += textureProj (texSampler3D, coords4D, bias); color += texture (texSamplerCube, coords3D); color += texture (texSamplerCube, coords3D, bias); color += texture (shadowSampler1D, coords3D); color += texture (shadowSampler1D, coords3D, bias); color += texture (shadowSampler2D, coords3D); color += texture (shadowSampler2D, coords3D, bias); color += textureProj (shadowSampler1D, coords4D); color += textureProj (shadowSampler1D, coords4D, bias); color += textureProj (shadowSampler2D, coords4D); color += textureProj (shadowSampler2D, coords4D, bias); ivec2 iCoords2D = ivec2(0, 5); int iLod = 1; color += texelFetch(texSampler2D, iCoords2D, iLod); vec2 gradX = dFdx(coords2D); vec2 gradY = dFdy(coords2D); const ivec2 offset = ivec2(3, -7); color += textureGrad(texSampler2D, coords2D, gradX, gradY); color += textureProjGrad(texSampler2D, vec3(coords2D, proj), gradX, gradY); color += textureGradOffset(texSampler2D, coords2D, gradX, gradY, offset); color += textureProjGradOffset(texSampler2D, coords3D, gradX, gradY, offset); color += textureGrad(shadowSampler2D, vec3(coords2D, lod), gradX, gradY); gl_FragColor = mix(color, u, blend * blendscale); }glslang-16.0.0/Test/spv.texture.sampler.transform.frag000066400000000000000000000002501506534232700227740ustar00rootroot00000000000000#version 440 uniform sampler smp; uniform texture2D tex; in vec2 coord; out vec4 color; void main() { color = texture(sampler2D(tex, smp), coord); } glslang-16.0.0/Test/spv.texture.vert000066400000000000000000000024731506534232700173720ustar00rootroot00000000000000#version 140 uniform sampler1D texSampler1D; uniform sampler2D texSampler2D; uniform sampler3D texSampler3D; uniform samplerCube texSamplerCube; uniform sampler1DShadow shadowSampler1D; uniform sampler2DShadow shadowSampler2D; in vec2 coords2D; void main() { float lod = 3.0; float coords1D = 1.789; vec3 coords3D = vec3(1.789, 2.718, 3.453); vec4 coords4D = vec4(1.789, 2.718, 3.453, 2.0); vec4 color = vec4(0.0, 0.0, 0.0, 0.0); color += textureLod(texSampler1D, coords1D, lod); color += textureProjLod(texSampler1D, coords2D, lod); color += textureProjLod(texSampler1D, coords4D, lod); color += textureLod (texSampler2D, coords2D, lod); color += textureProjLod (texSampler2D, coords3D, lod); color += textureProjLod (texSampler2D, coords4D, lod); color += textureLod (texSampler3D, coords3D, lod); color += textureProjLod (texSampler3D, coords4D, lod); color += textureLod (texSamplerCube, coords3D, lod); color += textureLod (shadowSampler1D, coords3D, lod); color += textureLod (shadowSampler2D, coords3D, lod); color += textureProjLod(shadowSampler1D, coords4D, lod); color += textureProjLod(shadowSampler2D, coords4D, lod); gl_Position = color; } glslang-16.0.0/Test/spv.textureBuffer.vert000066400000000000000000000005161506534232700205200ustar00rootroot00000000000000#version 450 uniform textureBuffer tBuf; uniform sampler s; uniform samplerBuffer sBuf; uniform utextureBuffer utBuf; uniform itextureBuffer itBuf; void main() { texelFetch(samplerBuffer(tBuf, s), 13); texelFetch(sBuf, 13); texelFetch(tBuf, 13); texelFetch(utBuf, 13); texelFetch(itBuf, 13); } glslang-16.0.0/Test/spv.textureError.frag000066400000000000000000000002041506534232700203310ustar00rootroot00000000000000#version 140 uniform sampler2D s2D; centroid vec2 centTexCoord; void main() { gl_FragColor = texture2D(s2D, centTexCoord); } glslang-16.0.0/Test/spv.textureGatherBiasLod.frag000066400000000000000000000060131506534232700217140ustar00rootroot00000000000000#version 450 core #extension GL_ARB_sparse_texture2: enable #extension GL_AMD_texture_gather_bias_lod: enable uniform sampler2D s2D; uniform sampler2DArray s2DArray; uniform samplerCube sCube; uniform samplerCubeArray sCubeArray; in vec2 c2; in vec3 c3; in vec4 c4; in float lod; in float bias; out vec4 fragColor; void main() { vec4 texel = vec4(0.0); vec4 result = vec4(0.0); const ivec2 offsets[4] = { ivec2(0, 0), ivec2(0, 1), ivec2(1, 0), ivec2(1, 1) }; texel += textureGather(s2D, c2, 0, bias); texel += textureGather(s2DArray, c3, 1, bias); texel += textureGather(sCube, c3, 2, bias); texel += textureGather(sCubeArray, c4, 3, bias); texel += textureGatherOffset(s2D, c2, offsets[0], 0, bias); texel += textureGatherOffset(s2DArray, c3, offsets[1], 1, bias); texel += textureGatherOffsets(s2D, c2, offsets, 0, bias); texel += textureGatherOffsets(s2DArray, c3, offsets, 1, bias); sparseTextureGatherARB(s2D, c2, result, 0, bias); texel += result; sparseTextureGatherARB(s2DArray, c3, result, 1, bias); texel += result; sparseTextureGatherARB(sCube, c3, result, 2, bias); texel += result; sparseTextureGatherARB(sCubeArray, c4, result, 2, bias); texel += result; sparseTextureGatherOffsetARB(s2D, c2, offsets[0], result, 0, bias); texel += result; sparseTextureGatherOffsetARB(s2DArray, c3, offsets[1], result, 1, bias); texel += result; sparseTextureGatherOffsetsARB(s2D, c2, offsets, result, 0, bias); texel += result; sparseTextureGatherOffsetsARB(s2DArray, c3, offsets, result, 1, bias); texel += result; texel += textureGatherLodAMD(s2D, c2, lod); texel += textureGatherLodAMD(s2DArray, c3, lod, 1); texel += textureGatherLodAMD(sCube, c3, lod, 2); texel += textureGatherLodAMD(sCubeArray, c4, lod, 3); texel += textureGatherLodOffsetAMD(s2D, c2, lod, offsets[0]); texel += textureGatherLodOffsetAMD(s2DArray, c3, lod, offsets[1], 1); texel += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets); texel += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 1); sparseTextureGatherLodAMD(s2D, c2, lod, result); texel += result; sparseTextureGatherLodAMD(s2DArray, c3, lod, result, 1); texel += result; sparseTextureGatherLodAMD(sCube, c3, lod, result, 2); texel += result; sparseTextureGatherLodAMD(sCubeArray, c4, lod, result, 2); texel += result; sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offsets[0], result); texel += result; sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offsets[1], result, 1); texel += result; sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, result); texel += result; sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, result, 1); texel += result; fragColor = texel; } glslang-16.0.0/Test/spv.textureoffset_non_const.vert000066400000000000000000000031141506534232700226520ustar00rootroot00000000000000#version 450 core #extension GL_EXT_texture_offset_non_const : enable layout(location = 0) in highp vec4 a_position; layout(location = 4) in highp vec2 a_in0; layout(location = 5) in highp float a_in1; layout(location = 10) in highp ivec2 offsetValue; layout(location = 0) out mediump vec4 v_color0; layout(location = 1) out mediump vec4 v_color1; layout(location = 2) out mediump vec4 v_color2; layout(location = 3) out mediump vec4 v_color3; layout(location = 4) out mediump vec4 v_color4; layout(location = 5) out mediump vec4 v_color5; layout(location = 6) out mediump vec4 v_color6; layout(set = 0, binding = 0) uniform highp sampler2D u_sampler; layout(set = 0, binding = 1) uniform buf0 { highp vec4 u_scale; }; layout(set = 0, binding = 2) uniform buf1 { highp vec4 u_bias; }; out gl_PerVertex { vec4 gl_Position; }; void main() { gl_Position = a_position; v_color0 = vec4(textureOffset(u_sampler, a_in0, offsetValue))*u_scale + u_bias; v_color1 = vec4(texelFetchOffset(u_sampler, ivec2(a_in0), int(a_in1), offsetValue))*u_scale + u_bias; v_color2 = vec4(textureProjOffset(u_sampler, vec3(a_in0, 1.0), offsetValue))*u_scale + u_bias; v_color3 = vec4(textureLodOffset(u_sampler, a_in0, a_in1, offsetValue))*u_scale + u_bias; v_color4 = vec4(textureProjLodOffset(u_sampler, vec3(a_in0, 1.0), a_in1, offsetValue))*u_scale + u_bias; v_color5 = vec4(textureGradOffset(u_sampler, a_in0, vec2(a_in1, a_in1), vec2(a_in1, a_in1), offsetValue))*u_scale + u_bias; v_color6 = vec4(textureProjGradOffset(u_sampler, vec3(a_in0, 1.0), vec2(a_in1, a_in1), vec2(a_in1, a_in1), offsetValue))*u_scale + u_bias; } glslang-16.0.0/Test/spv.tpipBlockMatchGatherSAD.frag000066400000000000000000000034431506534232700222160ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require #extension GL_QCOM_image_processing2 : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; layout(set = 0, binding = 1) uniform texture2D tex2D_src1; layout(set = 0, binding = 2) uniform texture2D tex2D_src2; layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform sampler2D target_samp; layout(set = 0, binding = 5) uniform sampler2D ref_samp; void main() { uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); uvec2 blockSize = uvec2(4, 4); fragColor = textureBlockMatchGatherSADQCOM( sampler2D(tex2D_src1, samp), // target texture tgt_coords, // target coords sampler2D(tex2D_src2, samp), // reference texture ref_coords, // reference coords blockSize); // block size fragColor = textureBlockMatchGatherSADQCOM( target_samp, // target texture tgt_coords, // target coords ref_samp, // reference texture ref_coords, // reference coords blockSize); // block size } glslang-16.0.0/Test/spv.tpipBlockMatchGatherSSD.frag000066400000000000000000000034431506534232700222400ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require #extension GL_QCOM_image_processing2 : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; layout(set = 0, binding = 1) uniform texture2D tex2D_src1; layout(set = 0, binding = 2) uniform texture2D tex2D_src2; layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform sampler2D target_samp; layout(set = 0, binding = 5) uniform sampler2D ref_samp; void main() { uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); uvec2 blockSize = uvec2(4, 4); fragColor = textureBlockMatchGatherSSDQCOM( sampler2D(tex2D_src1, samp), // target texture tgt_coords, // target coords sampler2D(tex2D_src2, samp), // reference texture ref_coords, // reference coords blockSize); // block size fragColor = textureBlockMatchGatherSSDQCOM( target_samp, // target texture tgt_coords, // target coords ref_samp, // reference texture ref_coords, // reference coords blockSize); // block size } glslang-16.0.0/Test/spv.tpipBlockMatchSAD.frag000066400000000000000000000033471506534232700210660ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; layout(set = 0, binding = 1) uniform texture2D tex2D_src1; layout(set = 0, binding = 2) uniform texture2D tex2D_src2; layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform sampler2D target_samp; layout(set = 0, binding = 5) uniform sampler2D ref_samp; void main() { uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); uvec2 blockSize = uvec2(4, 4); fragColor = textureBlockMatchSADQCOM( sampler2D(tex2D_src1, samp), // target texture tgt_coords, // target coords sampler2D(tex2D_src2, samp), // reference texture ref_coords, // reference coords blockSize); // block size fragColor = textureBlockMatchSADQCOM( target_samp, // target texture tgt_coords, // target coords ref_samp, // reference texture ref_coords, // reference coords blockSize); // block size } glslang-16.0.0/Test/spv.tpipBlockMatchSSD.frag000066400000000000000000000033471506534232700211100ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; layout(set = 0, binding = 1) uniform texture2D tex2D_src1; layout(set = 0, binding = 2) uniform texture2D tex2D_src2; layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform sampler2D target_samp; layout(set = 0, binding = 5) uniform sampler2D ref_samp; void main() { uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); uvec2 blockSize = uvec2(4, 4); fragColor = textureBlockMatchSSDQCOM( sampler2D(tex2D_src1, samp), // target texture tgt_coords, // target coords sampler2D(tex2D_src2, samp), // reference texture ref_coords, // reference coords blockSize); // block size fragColor = textureBlockMatchSSDQCOM( target_samp, // target texture tgt_coords, // target coords ref_samp, // reference texture ref_coords, // reference coords blockSize); // block size } glslang-16.0.0/Test/spv.tpipBlockMatchWindowSAD.frag000066400000000000000000000034431506534232700222530ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require #extension GL_QCOM_image_processing2 : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; layout(set = 0, binding = 1) uniform texture2D tex2D_src1; layout(set = 0, binding = 2) uniform texture2D tex2D_src2; layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform sampler2D target_samp; layout(set = 0, binding = 5) uniform sampler2D ref_samp; void main() { uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); uvec2 blockSize = uvec2(4, 4); fragColor = textureBlockMatchWindowSADQCOM( sampler2D(tex2D_src1, samp), // target texture tgt_coords, // target coords sampler2D(tex2D_src2, samp), // reference texture ref_coords, // reference coords blockSize); // block size fragColor = textureBlockMatchWindowSADQCOM( target_samp, // target texture tgt_coords, // target coords ref_samp, // reference texture ref_coords, // reference coords blockSize); // block size } glslang-16.0.0/Test/spv.tpipBlockMatchWindowSSD.frag000066400000000000000000000034441506534232700222760ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require #extension GL_QCOM_image_processing2 : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; layout(set = 0, binding = 1) uniform texture2D tex2D_src1; layout(set = 0, binding = 2) uniform texture2D tex2D_src2; layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform sampler2D target_samp; layout(set = 0, binding = 5) uniform sampler2D ref_samp; void main() { uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); uvec2 blockSize = uvec2(4, 4); fragColor = textureBlockMatchWindowSSDQCOM( sampler2D(tex2D_src1, samp), // target texture tgt_coords, // target coords sampler2D(tex2D_src2, samp), // reference texture ref_coords, // reference coords blockSize); // block size fragColor = textureBlockMatchWindowSSDQCOM( target_samp, // target texture tgt_coords, // target coords ref_samp, // reference texture ref_coords, // reference coords blockSize); // block size } glslang-16.0.0/Test/spv.tpipBoxFilter.frag000066400000000000000000000022151506534232700204160ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; layout(set = 0, binding = 1) uniform texture2D tex2D_src1; layout(set = 0, binding = 2) uniform texture2D tex2D_src2; layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform sampler2D tex_samp; void main() { vec2 boxSize = vec2(2.5, 4.5); fragColor = textureBoxFilterQCOM( sampler2D(tex2D_src1, samp), // source texture v_texcoord.xy, // tex coords boxSize); // box size fragColor = textureBoxFilterQCOM( tex_samp, // combined source texture v_texcoord.xy, // tex coords boxSize); // box size } glslang-16.0.0/Test/spv.tpipSampleWeighted.frag000066400000000000000000000023011506534232700214160ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; layout(set = 0, binding = 1) uniform texture2D tex2D_src1; layout(set = 0, binding = 2) uniform texture2D tex2D_src2; layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform sampler2D tex_samp; layout(set = 0, binding = 5) uniform sampler2DArray tex_samp_array; void main() { fragColor = textureWeightedQCOM( sampler2D(tex2D_src1, samp), // source texture v_texcoord.xy, // tex coords sampler2DArray(tex2DArray_weights, samp)); // weight texture fragColor = textureWeightedQCOM( tex_samp, // combined source texture v_texcoord.xy, // tex coords tex_samp_array); // combined weight texture } glslang-16.0.0/Test/spv.tpipTextureArrays.frag000066400000000000000000000031231506534232700213410ustar00rootroot00000000000000#version 450 #extension GL_QCOM_image_processing : require precision highp float; // fragment shader inputs and outputs layout (location = 0) in vec4 v_texcoord; layout (location = 0) out vec4 fragColor; // fragment shader resources layout(set = 0, binding = 3) uniform sampler samp; layout(set = 0, binding = 4) uniform texture2D tex2D_srcs[8]; layout(set = 0, binding = 5) uniform sampler2D samplers[3]; void main() { uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); uvec2 blockSize = uvec2(4, 4); uint ii = tgt_coords.x % 8; fragColor = textureBlockMatchSSDQCOM( samplers[0], // target texture tgt_coords, // target coords sampler2D(tex2D_srcs[ii], samp), // reference texture ref_coords, // reference coords blockSize); // block size fragColor = textureBlockMatchSADQCOM( sampler2D(tex2D_srcs[1], samp), // target texture tgt_coords, // target coords samplers[1], // reference texture ref_coords, // reference coords blockSize); // block size } glslang-16.0.0/Test/spv.types.frag000066400000000000000000000027111506534232700167700ustar00rootroot00000000000000#version 140 bool u_b; bvec2 u_b2; bvec3 u_b3; bvec4 u_b4; flat in int u_i; flat in ivec2 u_i2; flat in ivec3 u_i3; flat in ivec4 u_i4; in float u_f; in vec2 u_f2; in vec3 u_f3; in vec4 u_f4; bool i_b; bvec2 i_b2; bvec3 i_b3; bvec4 i_b4; flat in int i_i; flat in ivec2 i_i2; flat in ivec3 i_i3; flat in ivec4 i_i4; in float i_f; in vec2 i_f2; in vec3 i_f3; in vec4 i_f4; void main() { bool b = u_b && i_b; bvec2 b2 = bvec2(u_b2.x && i_b2.x && u_b2.y && i_b2.y); bvec3 b3 = bvec3(u_b3.x && i_b3.x && u_b3.y && i_b3.y && u_b3.z && i_b3.z); bvec4 b4 = bvec4(u_b4.x && i_b4.x && u_b4.y && i_b4.y && u_b4.z && i_b4.z && u_b4.w && i_b4.w); int i = u_i + i_i; ivec2 i2 = u_i2 + i_i2; ivec3 i3 = u_i3 + i_i3; ivec4 i4 = u_i4 + i_i4; float f = u_f + i_f; vec2 f2 = u_f2 + i_f2; vec3 f3 = u_f3 + i_f3; vec4 f4 = u_f4 + i_f4; gl_FragColor = b || b2.x || b2.y || b3.x || b3.y || b3.z || b4.x || b4.y || b4.z || b4.w ? vec4( i + i2.x + i2.y + i3.x + i3.y + i3.z + i4.x + i4.y + i4.z + i4.w + f + f2.x + f2.y + f3.x + f3.y + f3.z + f4.x + f4.y + f4.z + f4.w) : vec4(1.0); } glslang-16.0.0/Test/spv.uint.frag000066400000000000000000000046271506534232700166130ustar00rootroot00000000000000#version 310 es precision mediump float; flat in uvec2 t; in float f; in vec2 tc; flat in uvec4 v; flat in int i; bool b; out uvec4 c; uniform mediump usampler2D usampler; void main() { int count = 1; uint u = t.y + 3u; const uint cu1 = 0xFFFFFFFFU; const uint cu2 = -1u; // 0xFFFFFFFF const uint cu3 = 1U; const uint cu4 = 1u; if (cu1 == cu2) count *= 2; // 2 if (cu3 == cu4) count *= 3; // 6 if (cu2 == cu3) count *= 5; // not done const int cshiftedii = 0xFFFFFFFF >> 10; const uint cushiftedui = 0xFFFFFFFFu >> 10; const int cshiftediu = 0xFFFFFFFF >> 10u; const uint cushifteduu = 0xFFFFFFFFu >> 10u; if (cshiftedii == cshiftediu) count *= 7; // 42 if (cushiftedui == cushifteduu) count *= 11; // 462 if (cshiftedii == int(cushiftedui)) count *= 13; // not done int shiftedii = 0xFFFFFFFF >> 10; uint shiftedui = 0xFFFFFFFFu >> 10; int shiftediu = 0xFFFFFFFF >> 10u; uint shifteduu = 0xFFFFFFFFu >> 10u; if (shiftedii == shiftediu) c = texture(usampler, tc); if (shiftedui == shifteduu) c = texture(usampler, tc + float(1u)); if (shiftedii == int(shiftedui)) c = texture(usampler, tc - vec2(2u)); if (t.x > 4u) { float af = float(u); bool ab = bool(u); int ai = int(u); c += uvec4(uint(af), uint(ab), uint(ai), count); } const uint cmask1 = 0x0A1u; const uint cmask2 = 0xA10u; const uint cmask3 = cmask1 << 4; const uint cmask4 = 0xAB1u; if (cmask3 == cmask2) count *= 17; // 7854 if ((cmask3 & cmask1) != 0u) count *= 19; // not done if ((cmask1 | cmask3) == cmask4) count *= 23; // 180642 if ((cmask1 ^ cmask4) == 0xA10u) count *= 27; // 4877334 uint mask1 = 0x0A1u; uint mask2 = 0xA10u; uint mask3 = mask1 << 4; uint mask4 = 0xAB1u; if (mask3 == mask2) count *= 2; // 9754668 if ((mask3 & mask1) != 0u) count *= 3; // not done if ((mask1 | mask3) == mask4) count *= 5; // 48773340 if ((mask1 ^ mask4) == 0xA10u) count *= 7; // 341413380 c += uvec4(count); #define UINT_MAX 4294967295u c.x += UINT_MAX; } glslang-16.0.0/Test/spv.uniformArray.frag000066400000000000000000000004011506534232700202740ustar00rootroot00000000000000#version 140 uniform sampler2D texSampler2D; in vec3 inColor; in vec4 color[6]; in float alpha[16]; void main() { vec4 texColor = color[1] + color[1]; texColor.xyz += inColor; texColor.a += alpha[12]; gl_FragColor = texColor; } glslang-16.0.0/Test/spv.uniformInitializer.frag000066400000000000000000000002411506534232700215030ustar00rootroot00000000000000#version 450 layout (location = 0) out vec4 color; layout (location = 0) uniform vec4 in_color = vec4(0.0, 1.0, 0.0, 1.0); void main() { color = in_color; } glslang-16.0.0/Test/spv.uniformInitializerSpecConstant.frag000066400000000000000000000004161506534232700240340ustar00rootroot00000000000000#version 450 layout (location = 0) out vec4 color; layout (constant_id = 1) const float opacity = 0.5; layout (location = 0) uniform vec3 in_color = vec3(1.0, 0.5, 0); layout (location = 4) uniform float foo = opacity; void main() { color = vec4(in_color, foo); } glslang-16.0.0/Test/spv.uniformInitializerStruct.frag000066400000000000000000000005601506534232700227140ustar00rootroot00000000000000#version 450 layout (location = 0) out vec4 color; layout (location = 0) uniform struct { float r; float g; float b; } parts[2] = { { 1.0, 1.0, 1.0}, { 0.0, 1.0, 0.0 } }; void main() { color = vec4(0.0, 0.0, 0.0, 1.0); for (int i = 0; i < 2; i++) { color.r += parts[i].r; color.g += parts[i].g; color.b += parts[i].b; } } glslang-16.0.0/Test/spv.unit1.frag000066400000000000000000000002261506534232700166630ustar00rootroot00000000000000#version 460 float f; float a1; float foo(); out float cout; void main() { f = 10; float g = foo(); f += g; f += gl_FragCoord.y; }glslang-16.0.0/Test/spv.unit2.frag000066400000000000000000000004031506534232700166610ustar00rootroot00000000000000#version 410 // a different version number makes different id's for the same shared symbol float a2; float f; float bar(); out float cout; in float cin; float foo() { float h2 = 2 * f + cin; float g2 = bar(); return h2 + g2 + gl_FragCoord.y; }glslang-16.0.0/Test/spv.unit3.frag000066400000000000000000000002571506534232700166710ustar00rootroot00000000000000#version 460 float f; float h3 = 3.0; out float cout; in float cin; float bar() { h3 *= f; float g3 = 2 * h3; cout = g3; return h3 + g3 + gl_FragCoord.y; } glslang-16.0.0/Test/spv.variableArrayIndex.frag000066400000000000000000000016001506534232700213740ustar00rootroot00000000000000#version 400 uniform sampler2D samp2D; in vec2 coord; struct lunarStruct1 { int i; float f; }; struct lunarStruct2 { int i; float f; lunarStruct1 s1_1; }; struct lunarStruct3 { lunarStruct2 s2_1[3]; int i; float f; lunarStruct1 s1_1; }; flat in lunarStruct1 foo; flat in lunarStruct2 foo2[5]; flat in lunarStruct3 foo3; flat in int Count; void main() { float scale; int iLocal = Count; if (foo3.s2_1[1].i > 0) scale = foo2[foo3.s2_1[foo.i].i + 2 + ++iLocal].s1_1.f; else scale = foo3.s2_1[0].s1_1.f; //for (int i = 0; i < iLocal; ++i) { // scale += foo2[i].f; //} gl_FragColor = scale * texture(samp2D, coord); vec2[3] constructed = vec2[3](coord, vec2(scale), vec2(1.0, 2.0)); gl_FragColor += vec4(constructed[foo.i], constructed[foo.i]); } glslang-16.0.0/Test/spv.varyingArray.frag000066400000000000000000000005221506534232700203000ustar00rootroot00000000000000#version 140 uniform sampler2D texSampler2D; in vec4 color; in float alpha; in vec4 TexCoord[6]; in vec4 foo[3]; void main() { vec4 texColor = texture(texSampler2D, vec2(TexCoord[4] + TexCoord[5])); texColor += color; texColor.a = alpha; gl_FragColor = foo[1] + TexCoord[0] + TexCoord[4] + texColor; } glslang-16.0.0/Test/spv.varyingArrayIndirect.frag000066400000000000000000000005661506534232700217720ustar00rootroot00000000000000#version 140 uniform sampler2D texSampler2D; in vec4 color; in float alpha; in vec4 TexCoord[6]; in vec4 userIn[2]; flat in int a, b; void main() { vec4 texColor = texture(texSampler2D, vec2(userIn[b] + TexCoord[a] + TexCoord[5])); texColor += color; texColor.a = alpha; gl_FragColor = TexCoord[0] + TexCoord[b] + texColor + userIn[a]; } glslang-16.0.0/Test/spv.vecMatConstruct.frag000066400000000000000000000003171506534232700207500ustar00rootroot00000000000000#version 450 void main() { mat4x3 m; vec2 v2 = vec2(m); vec3 v3 = vec3(m); vec4 v4 = vec4(m); ivec2 iv2 = ivec2(m); ivec3 iv3 = ivec3(m); ivec4 iv4 = ivec4(m); } glslang-16.0.0/Test/spv.viewportArray2.tesc000066400000000000000000000004271506534232700206050ustar00rootroot00000000000000#version 430 #extension GL_NV_viewport_array2 :require layout(vertices = 4) out; out gl_PerVertex { int gl_ViewportMask[2]; } gl_out[4]; layout (viewport_relative) out highp int gl_Layer; void main() { gl_out[gl_InvocationID].gl_ViewportMask[0] = 1; } glslang-16.0.0/Test/spv.viewportArray2.vert000066400000000000000000000004011506534232700206170ustar00rootroot00000000000000#version 450 #extension GL_ARB_shader_viewport_layer_array : require #extension GL_NV_viewport_array2 : require layout (viewport_relative) out highp int gl_Layer; void main() { gl_ViewportMask[0] = 1; gl_ViewportIndex = 2; }glslang-16.0.0/Test/spv.viewportindex.tese000066400000000000000000000002051506534232700205500ustar00rootroot00000000000000#version 450 #extension GL_ARB_shader_viewport_layer_array : require layout(triangles) in; void main() { gl_ViewportIndex = 1; } glslang-16.0.0/Test/spv.voidFunction.frag000066400000000000000000000004601506534232700202720ustar00rootroot00000000000000#version 400 in vec4 bigColor; in vec4 BaseColor; in float d; float bar = 2.0; void foo() { bar++; return; } void foo2() { bar++; } void main() { vec4 outColor = bigColor; foo(); foo2(); outColor.x += bar; gl_FragColor = outColor; return; } glslang-16.0.0/Test/spv.volatileAtomic.comp000066400000000000000000000002071506534232700206150ustar00rootroot00000000000000#version 450 core layout(set=0, binding=3) volatile buffer D { uint d[]; } d; void main() { atomicExchange(d.d[0], 0); } glslang-16.0.0/Test/spv.vulkan100.subgroupArithmetic.comp000066400000000000000000000500561506534232700232500ustar00rootroot00000000000000#version 450 #extension GL_KHR_shader_subgroup_arithmetic: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; data[invocation].f4.x = subgroupAdd(data[0].f4.x); data[invocation].f4.xy = subgroupAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupAdd(data[2].f4.xyz); data[invocation].f4 = subgroupAdd(data[3].f4); data[invocation].i4.x = subgroupAdd(data[0].i4.x); data[invocation].i4.xy = subgroupAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupAdd(data[2].i4.xyz); data[invocation].i4 = subgroupAdd(data[3].i4); data[invocation].u4.x = subgroupAdd(data[0].u4.x); data[invocation].u4.xy = subgroupAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupAdd(data[2].u4.xyz); data[invocation].u4 = subgroupAdd(data[3].u4); data[invocation].d4.x = subgroupAdd(data[0].d4.x); data[invocation].d4.xy = subgroupAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupAdd(data[2].d4.xyz); data[invocation].d4 = subgroupAdd(data[3].d4); data[invocation].f4.x = subgroupMul(data[0].f4.x); data[invocation].f4.xy = subgroupMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupMul(data[2].f4.xyz); data[invocation].f4 = subgroupMul(data[3].f4); data[invocation].i4.x = subgroupMul(data[0].i4.x); data[invocation].i4.xy = subgroupMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupMul(data[2].i4.xyz); data[invocation].i4 = subgroupMul(data[3].i4); data[invocation].u4.x = subgroupMul(data[0].u4.x); data[invocation].u4.xy = subgroupMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupMul(data[2].u4.xyz); data[invocation].u4 = subgroupMul(data[3].u4); data[invocation].d4.x = subgroupMul(data[0].d4.x); data[invocation].d4.xy = subgroupMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupMul(data[2].d4.xyz); data[invocation].d4 = subgroupMul(data[3].d4); data[invocation].f4.x = subgroupMin(data[0].f4.x); data[invocation].f4.xy = subgroupMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupMin(data[2].f4.xyz); data[invocation].f4 = subgroupMin(data[3].f4); data[invocation].i4.x = subgroupMin(data[0].i4.x); data[invocation].i4.xy = subgroupMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupMin(data[2].i4.xyz); data[invocation].i4 = subgroupMin(data[3].i4); data[invocation].u4.x = subgroupMin(data[0].u4.x); data[invocation].u4.xy = subgroupMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupMin(data[2].u4.xyz); data[invocation].u4 = subgroupMin(data[3].u4); data[invocation].d4.x = subgroupMin(data[0].d4.x); data[invocation].d4.xy = subgroupMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupMin(data[2].d4.xyz); data[invocation].d4 = subgroupMin(data[3].d4); data[invocation].f4.x = subgroupMax(data[0].f4.x); data[invocation].f4.xy = subgroupMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupMax(data[2].f4.xyz); data[invocation].f4 = subgroupMax(data[3].f4); data[invocation].i4.x = subgroupMax(data[0].i4.x); data[invocation].i4.xy = subgroupMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupMax(data[2].i4.xyz); data[invocation].i4 = subgroupMax(data[3].i4); data[invocation].u4.x = subgroupMax(data[0].u4.x); data[invocation].u4.xy = subgroupMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupMax(data[2].u4.xyz); data[invocation].u4 = subgroupMax(data[3].u4); data[invocation].d4.x = subgroupMax(data[0].d4.x); data[invocation].d4.xy = subgroupMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupMax(data[2].d4.xyz); data[invocation].d4 = subgroupMax(data[3].d4); data[invocation].i4.x = subgroupAnd(data[0].i4.x); data[invocation].i4.xy = subgroupAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupAnd(data[2].i4.xyz); data[invocation].i4 = subgroupAnd(data[3].i4); data[invocation].u4.x = subgroupAnd(data[0].u4.x); data[invocation].u4.xy = subgroupAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupAnd(data[2].u4.xyz); data[invocation].u4 = subgroupAnd(data[3].u4); data[invocation].i4.x = int(subgroupAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupOr(data[0].i4.x); data[invocation].i4.xy = subgroupOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupOr(data[2].i4.xyz); data[invocation].i4 = subgroupOr(data[3].i4); data[invocation].u4.x = subgroupOr(data[0].u4.x); data[invocation].u4.xy = subgroupOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupOr(data[2].u4.xyz); data[invocation].u4 = subgroupOr(data[3].u4); data[invocation].i4.x = int(subgroupOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupXor(data[0].i4.x); data[invocation].i4.xy = subgroupXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupXor(data[2].i4.xyz); data[invocation].i4 = subgroupXor(data[3].i4); data[invocation].u4.x = subgroupXor(data[0].u4.x); data[invocation].u4.xy = subgroupXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupXor(data[2].u4.xyz); data[invocation].u4 = subgroupXor(data[3].u4); data[invocation].i4.x = int(subgroupXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupInclusiveAdd(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveAdd(data[3].f4); data[invocation].i4.x = subgroupInclusiveAdd(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveAdd(data[3].i4); data[invocation].u4.x = subgroupInclusiveAdd(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveAdd(data[3].u4); data[invocation].d4.x = subgroupInclusiveAdd(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveAdd(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveAdd(data[3].d4); data[invocation].f4.x = subgroupInclusiveMul(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMul(data[3].f4); data[invocation].i4.x = subgroupInclusiveMul(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMul(data[3].i4); data[invocation].u4.x = subgroupInclusiveMul(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMul(data[3].u4); data[invocation].d4.x = subgroupInclusiveMul(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMul(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMul(data[3].d4); data[invocation].f4.x = subgroupInclusiveMin(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMin(data[3].f4); data[invocation].i4.x = subgroupInclusiveMin(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMin(data[3].i4); data[invocation].u4.x = subgroupInclusiveMin(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMin(data[3].u4); data[invocation].d4.x = subgroupInclusiveMin(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMin(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMin(data[3].d4); data[invocation].f4.x = subgroupInclusiveMax(data[0].f4.x); data[invocation].f4.xy = subgroupInclusiveMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz); data[invocation].f4 = subgroupInclusiveMax(data[3].f4); data[invocation].i4.x = subgroupInclusiveMax(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveMax(data[3].i4); data[invocation].u4.x = subgroupInclusiveMax(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveMax(data[3].u4); data[invocation].d4.x = subgroupInclusiveMax(data[0].d4.x); data[invocation].d4.xy = subgroupInclusiveMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupInclusiveMax(data[2].d4.xyz); data[invocation].d4 = subgroupInclusiveMax(data[3].d4); data[invocation].i4.x = subgroupInclusiveAnd(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveAnd(data[3].i4); data[invocation].u4.x = subgroupInclusiveAnd(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveAnd(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupInclusiveOr(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveOr(data[3].i4); data[invocation].u4.x = subgroupInclusiveOr(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveOr(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupInclusiveXor(data[0].i4.x); data[invocation].i4.xy = subgroupInclusiveXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz); data[invocation].i4 = subgroupInclusiveXor(data[3].i4); data[invocation].u4.x = subgroupInclusiveXor(data[0].u4.x); data[invocation].u4.xy = subgroupInclusiveXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz); data[invocation].u4 = subgroupInclusiveXor(data[3].u4); data[invocation].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0)))); data[invocation].f4.x = subgroupExclusiveAdd(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveAdd(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveAdd(data[3].f4); data[invocation].i4.x = subgroupExclusiveAdd(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveAdd(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveAdd(data[3].i4); data[invocation].u4.x = subgroupExclusiveAdd(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveAdd(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveAdd(data[3].u4); data[invocation].d4.x = subgroupExclusiveAdd(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveAdd(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveAdd(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveAdd(data[3].d4); data[invocation].f4.x = subgroupExclusiveMul(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMul(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMul(data[3].f4); data[invocation].i4.x = subgroupExclusiveMul(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMul(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMul(data[3].i4); data[invocation].u4.x = subgroupExclusiveMul(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMul(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMul(data[3].u4); data[invocation].d4.x = subgroupExclusiveMul(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMul(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMul(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMul(data[3].d4); data[invocation].f4.x = subgroupExclusiveMin(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMin(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMin(data[3].f4); data[invocation].i4.x = subgroupExclusiveMin(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMin(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMin(data[3].i4); data[invocation].u4.x = subgroupExclusiveMin(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMin(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMin(data[3].u4); data[invocation].d4.x = subgroupExclusiveMin(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMin(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMin(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMin(data[3].d4); data[invocation].f4.x = subgroupExclusiveMax(data[0].f4.x); data[invocation].f4.xy = subgroupExclusiveMax(data[1].f4.xy); data[invocation].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz); data[invocation].f4 = subgroupExclusiveMax(data[3].f4); data[invocation].i4.x = subgroupExclusiveMax(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveMax(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveMax(data[3].i4); data[invocation].u4.x = subgroupExclusiveMax(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveMax(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveMax(data[3].u4); data[invocation].d4.x = subgroupExclusiveMax(data[0].d4.x); data[invocation].d4.xy = subgroupExclusiveMax(data[1].d4.xy); data[invocation].d4.xyz = subgroupExclusiveMax(data[2].d4.xyz); data[invocation].d4 = subgroupExclusiveMax(data[3].d4); data[invocation].i4.x = subgroupExclusiveAnd(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveAnd(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveAnd(data[3].i4); data[invocation].u4.x = subgroupExclusiveAnd(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveAnd(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveAnd(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupExclusiveOr(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveOr(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveOr(data[3].i4); data[invocation].u4.x = subgroupExclusiveOr(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveOr(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveOr(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0)))); data[invocation].i4.x = subgroupExclusiveXor(data[0].i4.x); data[invocation].i4.xy = subgroupExclusiveXor(data[1].i4.xy); data[invocation].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz); data[invocation].i4 = subgroupExclusiveXor(data[3].i4); data[invocation].u4.x = subgroupExclusiveXor(data[0].u4.x); data[invocation].u4.xy = subgroupExclusiveXor(data[1].u4.xy); data[invocation].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz); data[invocation].u4 = subgroupExclusiveXor(data[3].u4); data[invocation].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0)); data[invocation].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0)))); data[invocation].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0)))); data[invocation].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0)))); } glslang-16.0.0/Test/spv.vulkan100.subgroupPartitioned.comp000066400000000000000000000670031506534232700234410ustar00rootroot00000000000000#version 450 #extension GL_NV_shader_subgroup_partitioned: enable layout (local_size_x = 8) in; layout(binding = 0) buffer Buffers { vec4 f4; ivec4 i4; uvec4 u4; dvec4 d4; } data[4]; void main() { uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; uvec4 ballot = subgroupPartitionNV(invocation); data[invocation].u4 = subgroupPartitionNV(data[0].f4.x); data[invocation].u4 = subgroupPartitionNV(data[0].f4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].f4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].f4); data[invocation].u4 = subgroupPartitionNV(data[0].i4.x); data[invocation].u4 = subgroupPartitionNV(data[0].i4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].i4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].i4); data[invocation].u4 = subgroupPartitionNV(data[0].u4.x); data[invocation].u4 = subgroupPartitionNV(data[0].u4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].u4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].u4); data[invocation].u4 = subgroupPartitionNV(data[0].d4.x); data[invocation].u4 = subgroupPartitionNV(data[0].d4.xy); data[invocation].u4 = subgroupPartitionNV(data[0].d4.xyz); data[invocation].u4 = subgroupPartitionNV(data[0].d4); data[invocation].u4 = subgroupPartitionNV(bool(data[0].i4.x)); data[invocation].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy)); data[invocation].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz)); data[invocation].u4 = subgroupPartitionNV(bvec4(data[0].i4)); data[invocation].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedInclusiveMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedInclusiveMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedInclusiveMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveAddNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveAddNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveAddNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveAddNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMulNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMulNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMulNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMulNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMinNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMinNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMinNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMinNV(data[3].d4, ballot); data[invocation].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot); data[invocation].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot); data[invocation].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot); data[invocation].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot); data[invocation].d4.x = subgroupPartitionedExclusiveMaxNV(data[0].d4.x, ballot); data[invocation].d4.xy = subgroupPartitionedExclusiveMaxNV(data[1].d4.xy, ballot); data[invocation].d4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].d4.xyz, ballot); data[invocation].d4 = subgroupPartitionedExclusiveMaxNV(data[3].d4, ballot); data[invocation].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot)); data[invocation].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot); data[invocation].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot); data[invocation].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot); data[invocation].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot); data[invocation].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot); data[invocation].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot); data[invocation].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot); data[invocation].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot); data[invocation].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot)); data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot)); data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot)); data[invocation].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot)); } glslang-16.0.0/Test/spv.vulkan110.int16.frag000066400000000000000000000143221506534232700203070ustar00rootroot00000000000000#version 450 #extension GL_EXT_shader_explicit_arithmetic_types: enable #extension GL_EXT_shader_explicit_arithmetic_types_int8: require #extension GL_EXT_shader_explicit_arithmetic_types_int16: require #extension GL_EXT_shader_explicit_arithmetic_types_int32: require #extension GL_EXT_shader_explicit_arithmetic_types_int64: require #extension GL_EXT_shader_explicit_arithmetic_types_float16: require #extension GL_EXT_shader_explicit_arithmetic_types_float32: require #extension GL_EXT_shader_explicit_arithmetic_types_float64: require layout(binding = 0) uniform Uniforms { uint index; }; layout(std140, binding = 1) uniform Block { int16_t i16; i16vec2 i16v2; i16vec3 i16v3; i16vec4 i16v4; uint16_t u16; u16vec2 u16v2; u16vec3 u16v3; u16vec4 u16v4; } block; void main() { } void literal() { const int16_t i16Const[3] = { int16_t(-0x1111), // Hex int16_t(-1), // Dec int16_t(040000), // Oct }; int16_t i16 = i16Const[index]; const uint16_t u16Const[] = { uint16_t(0xFFFF), // Hex uint16_t(65535), // Dec uint16_t(077777), // Oct }; uint16_t u16 = u16Const[index]; } void typeCast16() { i8vec2 i8v; u8vec2 u8v; i16vec2 i16v; u16vec2 u16v; i32vec2 i32v; u32vec2 u32v; i64vec2 i64v; u64vec2 u64v; f16vec2 f16v; f32vec2 f32v; f64vec2 f64v; bvec2 bv; i32v = i16v; // int16_t -> int32_t i32v = u16v; // uint16_t -> int32_t u16v = i16v; // int16_t -> uint16_t u32v = i16v; // int16_t -> uint32_t i64v = i16v; // int16_t -> int64_t u64v = i16v; // int16_t -> uint64_t u32v = u16v; // uint16_t -> uint32_t i64v = u16v; // uint16_t -> int64_t u64v = u16v; // uint16_t -> uint64_t f16v = i16v; // int16_t -> float16_t f32v = i16v; // int16_t -> float32_t f64v = i16v; // int16_t -> float64_t f16v = u16v; // uint16_t -> float16_t f32v = u16v; // uint16_t -> float32_t f64v = u16v; // uint16_t -> float64_t i32v = i32vec2(i16v); // int16_t -> int32_t i32v = i32vec2(u16v); // uint16_t -> int32_t u16v = u16vec2(i16v); // int16_t -> uint16_t u32v = u32vec2(i16v); // int16_t -> uint32_t i64v = i64vec2(i16v); // int16_t -> int64_t u64v = i64vec2(i16v); // int16_t -> uint64_t u32v = u32vec2(u16v); // uint16_t -> uint32_t i64v = i64vec2(u16v); // uint16_t -> int64_t u64v = i64vec2(u16v); // uint16_t -> uint64_t f16v = f16vec2(i16v); // int16_t -> float16_t f32v = f32vec2(i16v); // int16_t -> float32_t f64v = f64vec2(i16v); // int16_t -> float64_t f16v = f16vec2(u16v); // uint16_t -> float16_t f32v = f32vec2(u16v); // uint16_t -> float32_t f64v = f64vec2(u16v); // uint16_t -> float64_t i8v = i8vec2(i16v); // int16_t -> int8_t i8v = i8vec2(u16v); // uint16_t -> int8_t u8v = u8vec2(i16v); // int16_t -> uint8_t u8v = u8vec2(u16v); // uint16_t -> uint8_t i16v = u8vec2(u16v); // uint16_t -> int16_t i16v = i16vec2(bv); // bool -> int16 u16v = u16vec2(bv); // bool -> uint16 bv = bvec2(i16v); // int16 -> bool bv = bvec2(u16v); // uint16 -> bool } void operators() { u16vec3 u16v; int16_t i16; uvec3 uv; int32_t i; int64_t i64; bool b; // Unary u16v++; i16--; ++i16; --u16v; u16v = ~u16v; i16 = +i16; u16v = -u16v; // Arithmetic i16 += i16; u16v -= u16v; i *= i16; uv /= u16v; uv %= i16; uv = u16v + uv; i64 = i16 - i64; uv = u16v * uv; i64 = i16 * i64; i = i16 % i; // Shift u16v <<= i16; i16 >>= u16v.y; i16 = i16 << u16v.z; uv = u16v << i; // Relational b = (u16v.x != i16); b = (i16 == u16v.x); b = (u16v.x > uv.y); b = (i16 < i); b = (u16v.y >= uv.x); b = (i16 <= i); // Bitwise uv |= i16; i = i16 | i; i64 &= i16; uv = u16v & uv; uv ^= i16; u16v = u16v ^ i16; } void builtinFuncs() { i16vec2 i16v; i16vec4 i16v4; u16vec3 u16v; u16vec2 u16v2; u16vec4 u16v4; bvec3 bv; int16_t i16; uint16_t u16; int32_t i32; uint32_t u32; int64_t i64; uint64_t u64; // abs() i16v = abs(i16v); // sign() i16 = sign(i16); // min() i16v = min(i16v, i16); i16v = min(i16v, i16vec2(-1)); u16v = min(u16v, u16); u16v = min(u16v, u16vec3(0)); // max() i16v = max(i16v, i16); i16v = max(i16v, i16vec2(-1)); u16v = max(u16v, u16); u16v = max(u16v, u16vec3(0)); // clamp() i16v = clamp(i16v, -i16, i16); i16v = clamp(i16v, -i16v, i16v); u16v = clamp(u16v, -u16, u16); u16v = clamp(u16v, -u16v, u16v); // mix() i16 = mix(i16v.x, i16v.y, true); i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false)); u16 = mix(u16v.x, u16v.y, true); u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false)); //pack i32 = pack32(i16v); i64 = pack64(i16v4); u32 = pack32(u16v2); u64 = pack64(u16v4); i16v = unpack16(i32); i16v4 = unpack16(i64); u16v2 = unpack16(u32); u16v4 = unpack16(u64); // lessThan() bv = lessThan(u16v, u16vec3(u16)); bv.xy = lessThan(i16v, i16vec2(i16)); // lessThanEqual() bv = lessThanEqual(u16v, u16vec3(u16)); bv.xy = lessThanEqual(i16v, i16vec2(i16)); // greaterThan() bv = greaterThan(u16v, u16vec3(u16)); bv.xy = greaterThan(i16v, i16vec2(i16)); // greaterThanEqual() bv = greaterThanEqual(u16v, u16vec3(u16)); bv.xy = greaterThanEqual(i16v, i16vec2(i16)); // equal() bv = equal(u16v, u16vec3(u16)); bv.xy = equal(i16v, i16vec2(i16)); // notEqual() bv = notEqual(u16v, u16vec3(u16)); bv.xy = notEqual(i16v, i16vec2(i16)); } // Type conversion for specialization constant layout(constant_id = 100) const int16_t si16 = int16_t(-10); layout(constant_id = 101) const uint16_t su16 = uint16_t(20); glslang-16.0.0/Test/spv.vulkan110.storageBuffer.vert000066400000000000000000000002541506534232700222040ustar00rootroot00000000000000#version 450 #pragma use_storage_buffer uniform ub { vec4 a; } ubi; buffer bb { vec4 b; } bbi; void main() { gl_Position = ubi.a + bbi.b; } glslang-16.0.0/Test/spv.while-continue-break.vert000066400000000000000000000003661506534232700217050ustar00rootroot00000000000000#version 310 es void main() { int i = 0; int A, B, C, D; while (i<10) { A = 1; if (i%2 == 0) { B = 2; continue; C = 2; } if (i%5 == 0) { B = 2; break; C = 2; } i++; } D = 3; } glslang-16.0.0/Test/spv.while-simple.vert000066400000000000000000000001131506534232700202560ustar00rootroot00000000000000#version 310 es void main() { int i = 0; while (i<10) { i++; } } glslang-16.0.0/Test/spv.whileLoop.frag000066400000000000000000000003231506534232700175630ustar00rootroot00000000000000#version 140 in vec4 bigColor; in vec4 BaseColor; in float d; void main() { vec4 color = BaseColor; while (color.x < d) { color += bigColor; } gl_FragColor = color; } glslang-16.0.0/Test/spv.xfb.vert000066400000000000000000000007341506534232700164470ustar00rootroot00000000000000#version 450 layout(xfb_buffer = 3) out; layout(xfb_stride = 48) out; layout(xfb_offset = 12, location = 0) out float out1; layout(xfb_buffer = 2) out; layout(location=1) out outXfb { layout(xfb_buffer = 2, xfb_stride = 32, xfb_offset = 8) float out2; }; layout(xfb_buffer = 1, location=3) out outXfb2 { layout(xfb_stride = 64, xfb_offset = 60) float out3; }; layout(location = 4, xfb_buffer = 0, xfb_offset = 4) out float out4; void main() { }glslang-16.0.0/Test/spv.xfb2.vert000066400000000000000000000005201506534232700165220ustar00rootroot00000000000000#version 450 layout (location = 0) in vec4 position; layout (binding = 5) uniform ComponentsBlock { vec4 c1; vec2 c2; } components; layout (xfb_buffer = 3, xfb_offset = 16) out gl_PerVertex { vec4 gl_Position; }; void main() { gl_Position = position + components.c1 + vec4(components.c2, 0.0, 0.0); }glslang-16.0.0/Test/spv.xfb3.vert000066400000000000000000000005501506534232700165260ustar00rootroot00000000000000#version 450 layout (location = 0) in vec4 position; layout (binding = 5) uniform ComponentsBlock { vec4 c1; vec2 c2; } components; layout (xfb_buffer = 3, xfb_offset = 16) out gl_PerVertex { layout(xfb_stride = 80) vec4 gl_Position; }; void main() { gl_Position = position + components.c1 + vec4(components.c2, 0.0, 0.0); }glslang-16.0.0/Test/spv.xfbOffsetOnBlockMembersAssignment.vert000066400000000000000000000003361506534232700244300ustar00rootroot00000000000000#version 450 layout(xfb_buffer=2) out; layout(location=5, xfb_offset=0) out block2 { float y1_out; vec4 y2_out; }; void main() { y1_out = 7.0; y2_out = vec4(1.0, 0.0, 0.0, 1.0); gl_Position = vec4(0.0); } glslang-16.0.0/Test/spv.xfbOffsetOnStructMembersAssignment.vert000066400000000000000000000006001506534232700246540ustar00rootroot00000000000000#version 450 layout(xfb_buffer=2) out; struct S { float x1_out; float x2_out; }; layout(location=0, xfb_offset = 16) out S s1; layout(location=5, xfb_buffer=1, xfb_offset=8) out struct S2 { float y1_out; vec4 y2_out; }s2; void main() { s1.x1_out = 5.0; s1.x2_out = 6.0; s2.y1_out = 7.0; s2.y2_out = vec4(1.0, 0.0, 0.0, 1.0); gl_Position = vec4(0.0); } glslang-16.0.0/Test/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert000066400000000000000000000010451506534232700254630ustar00rootroot00000000000000#version 450 /* block definition from GLSL spec 4.60, section 4.4.2, Output Layout Qualifiers */ layout(location=5, xfb_buffer = 3, xfb_offset = 12) out block2 { vec4 v; // v will be written to byte offsets 12 through 27 of buffer float u; // u will be written to offset 28 layout(xfb_offset = 40) vec4 w; vec4 x; // x will be written to offset 56, the next available offset }; void main() { v = vec4(1.0, 0.0, 1.0, 0.0); u = 5.0; w = vec4(1.0, 0.0, 0.0, 1.0); x = vec4(5.0, 0.0, 0.0, 0.0); gl_Position = vec4(0.0); } glslang-16.0.0/Test/spv.xfbStrideJustOnce.vert000066400000000000000000000003371506534232700212740ustar00rootroot00000000000000#version 450 layout(xfb_buffer=2) out; layout(location=5, xfb_stride=20) out block { float y1_out; vec4 y2_out; }; void main() { y1_out = 7.0; y2_out = vec4(1.0, 0.0, 0.0, 1.0); gl_Position = vec4(0.0); } glslang-16.0.0/Test/stringToDouble.vert000066400000000000000000000103351506534232700200230ustar00rootroot00000000000000#version 460 #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable void main() { float w1 = 00000.000; float w2 = 1.0; float w3 = 007.00; float w4 = 000130000.0; float w5 = 123456789.0000; double w6 = 1234567890123456.0; double w7 = 12345678901234567.0; double w8 = 123456789012345678.0; double w9 = 12345678901234567893.0; double w10 = 1234567890123456789012345.0; float e1 = 0e0; float e2 = 1e0; float e3 = 0e14; float e4 = 1e15; float e5 = 1e16; float e6 = 0e-14; float e7 = 1e-15; float e8 = 1e-16; double e9 = 1e100; double e10 = 1e+308; double e11 = 1e-307; // Was 1e-323, but that's flushed to zero sometimes. 1e-308 can be flushed to 0. double e12 = 1e+309; double e13 = 1e-324; double e24 = 1e+999; double e25 = 1e-999; double f1 = 0.5; double f2 = 0.125; double f31 = 0.1; double f32 = 0.2; double f33 = 0.3; double f34 = 0.4; double f35 = 0.5; double f36 = 0.6; double f37 = 0.7; double f38 = 0.8; double f39 = 0.9; double f4 = 0.33333333333333333333333333333333333333333333333333333333333333333333333333333; double f51 = 0.000000000000000000000000000000000000783475; double f52 = 0.0000000000000000000000000000000000007834750; double f53 = .00000000000000000000000000000000000078347500; double f54 = 0.000000000000000000000000000000000000783475000000; double f61 = 4.; double f62 = 40.; double f63 = 0.; double f64 = 04.; double f65 = .0; double f66 = .004; double f67 = .400; double f68 = .04000; double c1 = .081e-2; double c2 = .073e2; double c3 = 34.5e-1; double c4 = 35.7e-4; double c5 = 43.9e1; double c6 = 52.2e4; double c7 = 000610000e2; double c8 = 000610000e-6; double c9 = 000001234567890123450000.0; double c10 = 000999999999999999999000.0; double c11 = 0001230000.0045600000; double c12 = 0001230000.00405600000e-3; double c13 = 0001230000.004500600000e-4; double c14 = 00010230000.0045600000e-5; double c15 = 000120030000.0045600000e4; double c16 = 0001230000.0045600000e5; double c17 = 0001230000.0045600000e6; double c18 = 0001230000.00456007e6; double b11 = 72057594037927928.0; double b12 = 72057594037927936.0; double b13 = 72057594037927932.0; double b14 = 7205759403792793199999e-5; double b15 = 7205759403792793200001e-5; double b21 = 9223372036854774784.0; double b22 = 9223372036854775808.0; double b23 = 9223372036854775296.0; double b24 = 922337203685477529599999e-5; double b25 = 922337203685477529600001e-5; double b31 = 10141204801825834086073718800384.0; double b32 = 10141204801825835211973625643008.0; double b33 = 10141204801825834649023672221696.0; double b34 = 1014120480182583464902367222169599999e-5; double b35 = 1014120480182583464902367222169600001e-5; double b41 = 5708990770823838890407843763683279797179383808.0; double b42 = 5708990770823839524233143877797980545530986496.0; double b43 = 5708990770823839207320493820740630171355185152.0; double b44 = 5708990770823839207320493820740630171355185151999e-3; double b45 = 5708990770823839207320493820740630171355185152001e-3; float pi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679f; float pi2 = 3.14159265358979f; float pi3 = 3.141592653589793f; double dpi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679; double dpi2 = 3.14159265358979; double dpi3 = 3.141592653589793; float dfpi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679f; float dfpi2 = 3.14159265358979f; float dfpi3 = 3.141592653589793f; double lfpi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679LF; double lfpi2 = 3.14159265358979Lf; double lfpi3 = 3.141592653589793lF; double hfpi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679hF; double hfpi2 = 3.14159265358979hF; double hfpi3 = 3.141592653589793hf; } glslang-16.0.0/Test/struct.error.frag000066400000000000000000000002071506534232700174670ustar00rootroot00000000000000#version 460 struct A { float x; }; A test() { return A(1.0); } void main() { test().z; // A.z does not exist, causes a crash } glslang-16.0.0/Test/structAssignment.frag000066400000000000000000000010741506534232700203730ustar00rootroot00000000000000#version 130 uniform sampler2D sampler; varying mediump vec2 coord; struct lunarStruct1 { int i; float f; }; struct lunarStruct2 { int i; float f; lunarStruct1 s1_1; }; struct lunarStruct3 { lunarStruct2 s2_1; int i; float f; lunarStruct1 s1_1; }; uniform lunarStruct1 foo; uniform lunarStruct2 foo2; uniform lunarStruct3 foo3; void main() { lunarStruct2 locals2; if (foo3.s2_1.i > 0) locals2 = foo3.s2_1; else locals2 = foo2; gl_FragColor = locals2.s1_1.f * texture2D(sampler, coord); } glslang-16.0.0/Test/structDeref.frag000066400000000000000000000023221506534232700173050ustar00rootroot00000000000000#version 130 uniform sampler2D sampler; varying vec2 coord; struct s0 { int i; }; struct s00 { s0 s0_0; }; struct s1 { int i; float f; s0 s0_1; }; struct s2 { int i; float f; s1 s1_1; }; struct s3 { s2[12] s2_1; int i; float f; s1 s1_1; }; uniform s0 foo0; uniform s1 foo1; uniform s2 foo2; uniform s3 foo3; uniform s00 foo00; void main() { s0 locals0; s2 locals2; s00 locals00; float[6] fArray; s1[10] locals1Array; if (foo3.s2_1[9].i > 0) { locals2.f = 1.0; locals2.s1_1 = s1(0, 1.0, s0(0)); fArray = float[6]( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); locals1Array[6] = foo1; locals0 = s0(0); locals00 = s00(s0(0)); } else { locals2.f = coord.x; locals2.s1_1 = s1(1, coord.y, foo0); fArray = float[6]( 0.0, 1.0, 2.0, 3.0, 4.0, 5.0); locals1Array[6] = locals2.s1_1; locals0 = foo1.s0_1; locals00 = foo00; } if (locals0.i > 5) locals0 = locals00.s0_0; gl_FragColor = (float(locals0.i) + locals1Array[6].f + fArray[3] + locals2.s1_1.f) * texture2D(sampler, coord); } glslang-16.0.0/Test/struct_construction_patterns.frag000066400000000000000000000034371506534232700231010ustar00rootroot00000000000000#version 400 struct Inner { int id; float value; }; struct Outer { int before; uint padding; mat2 matrix; int after; }; struct Complex { Inner nested; Inner array[2]; }; struct Point { float x; float y; }; struct Color { vec3 rgb; float alpha; }; void store_data(Inner data[4]) { // Function that takes array of structs } void store_outer(Outer value) { // Function that takes single struct } void process_point(Point p) { // Function that takes single struct } void main() { // Pattern 1: Complex array constructors (most common tint failure pattern) Outer data[4] = Outer[4]( Outer(0, 0u, mat2(vec2(0.0), vec2(0.0)), 0), Outer(1, 1u, mat2(vec2(1.0), vec2(1.0)), 1), Outer(2, 2u, mat2(vec2(2.0), vec2(2.0)), 2), Outer(3, 3u, mat2(vec2(3.0), vec2(3.0)), 3) ); // Pattern 2: Nested struct array constructors Inner inner_array[4] = Inner[4]( Inner(0, 0.0), Inner(1, 1.0), Inner(2, 2.0), Inner(3, 3.0) ); // Pattern 3: Struct with nested struct constructors Complex complex_data = Complex( Inner(42, 3.14), Inner[2](Inner(1, 1.0), Inner(2, 2.0)) ); // Pattern 4: Function calls with array constructors store_data(Inner[4](Inner(1, 1.0), Inner(2, 2.0), Inner(3, 3.0), Inner(4, 4.0))); store_outer(Outer(10, 10u, mat2(vec2(5.0), vec2(6.0)), 20)); // Pattern 5: Basic struct constructors (from deleted basic_struct_constructor.frag) Point p1 = Point(1.0, 2.0); Color c1 = Color(vec3(1.0, 0.0, 0.0), 1.0); Point p2; p2 = Point(3.0, 4.0); // Pattern 6: Struct constructors in function calls (from deleted struct_constructor_in_function_call.frag) process_point(Point(5.0, 6.0)); } glslang-16.0.0/Test/struct_function_parameters.frag000066400000000000000000000020501506534232700224650ustar00rootroot00000000000000#version 400 struct Vertex { vec3 position; vec3 normal; }; struct Light { vec3 position; vec3 color; float intensity; }; struct Camera { mat4 viewMatrix; mat4 projMatrix; }; // Test various positions of struct parameters - these should be TYPE_NAME void render(Vertex v, Light l, Camera c) { // Function with struct parameters at start } void process(int id, Vertex v, float time) { // Function with struct parameter in middle } void compute(float delta, int count, Light l, Camera c, bool enabled) { // Function with multiple struct parameters mixed with other types } void single(Vertex v) { // Function with single struct parameter } void multiple(Vertex v1, Vertex v2, Light l1, Light l2) { // Function with multiple parameters of same struct type } void main() { Vertex v = Vertex(vec3(0.0), vec3(1.0, 0.0, 0.0)); Light l = Light(vec3(10.0), vec3(1.0), 1.0); Camera c = Camera(mat4(1.0), mat4(1.0)); render(v, l, c); process(1, v, 0.5); compute(0.016, 100, l, c, true); } glslang-16.0.0/Test/struct_member_declarator_lists.frag000066400000000000000000000021401506534232700233020ustar00rootroot00000000000000#version 400 struct Vector { float x; float y; float z; }; struct Color { float r; float g; float b; }; struct Material { float shininess; }; struct B { vec3 t; }; struct K { // Original #3931 issue: struct names used as member names in declarator lists // These should be IDENTIFIER tokens, not TYPE_NAME float Vector, Color; // Two struct names as member names int Material, shininess; // Mix of struct name and regular name vec2 a, position, b; // Regular names in declarator list mat3 ambient, diffuse, spec; // Regular names in declarator list // Original bug report pattern float A, B; // B is a struct name used as member name // Array member pattern float A_array[2], B_array[3]; // B is a struct name used as array member name }; void main() { K k; // Access the members that have struct names k.Vector = 1.0; k.Color = 2.0; k.Material = 3; k.B = 4.0; k.B_array[0] = 5.0; // Test variable declarations with struct names int x, B, y, K; } glslang-16.0.0/Test/struct_name_as_struct_member.frag000066400000000000000000000006521506534232700227610ustar00rootroot00000000000000#version 400 // Original bug report from: https://github.com/KhronosGroup/glslang/issues/3931 // Error was: "syntax error, unexpected TYPE_NAME, expecting IDENTIFIER" // when defining a struct field with the same name as a previously defined // struct. struct B { vec3 t; }; struct K { float A, B; // This should work. The B field is in a different scope // than the B struct. }; void main(){ int x, B, y, K; } glslang-16.0.0/Test/struct_parameter_after_non_struct.frag000066400000000000000000000004131506534232700240350ustar00rootroot00000000000000#version 400 struct B { int a; }; // Test struct parameter after non-struct parameter (minimal regression test). void test1(B b, int c) {} // works. void test2(int c, B b) {} // should work. void main() { B b = B(42); test1(b, 10); test2(10, b); } glslang-16.0.0/Test/structure.frag000066400000000000000000000007411506534232700170560ustar00rootroot00000000000000#version 130 uniform sampler2D sampler; varying vec2 coord; struct lunarStruct1 { int i; float f[4]; vec4 color[5]; }; struct lunarStruct2 { int i[5]; float f; lunarStruct1 s1_1[7]; }; uniform lunarStruct1 foo; uniform lunarStruct2 foo2[5]; void main() { float scale = 0.0; if (foo2[3].i[4] > 0) scale = foo2[3].s1_1[2].color[3].x; else scale = foo2[3].s1_1[2].f[3]; gl_FragColor = scale * texture2D(sampler, coord); } glslang-16.0.0/Test/switch.frag000066400000000000000000000055101506534232700163160ustar00rootroot00000000000000#version 300 es precision highp float; uniform int c, d; in highp float x; void main() { float f; int a[2]; switch(f) { // ERROR } switch(a) { // ERROR } switch(c) { } switch(c) // WARNING, not enough stuff after last label { case 2: } switch(c) { f = sin(x); // ERRROR case 2: f = cos(x); break; } switch (c) { default: break; case 1: f = sin(x); break; case 2: f = cos(x); break; default: // ERROR, 2nd default f = tan(x); } switch (c) { case 1: f = sin(x); break; case 2: switch (d) { case 1: f = x * x * x; break; case 2: f = x * x; break; } break; default: f = tan(x); case 1: // ERROR, 2nd 'case 1' break; case 3.8: // ERROR, non-int break; case c: // ERROR, non-constant break; } switch (c) { // a no-error normal switch case 1: f = sin(x); break; case 2: switch (d) { case 1: f = x * x * x; break; case 2: f = x * x; break; } break; default: f = tan(x); } break; // ERROR switch (c) { case 1: f = sin(x); break; case 2: switch (d) { case 1: { case 4: // ERROR break; } f = x * x * x; if (c < d) { case 2: // ERROR f = x * x; } if (d < c) case 3: // ERROR break; } break; case 4: f = tan(x); if (f < 0.0) default: // ERROR break; } case 5: // ERROR default: // ERROR switch (0) { default: int onlyInSwitch = 0; } onlyInSwitch; // ERROR switch (0) { default: int x; // WARNING (was "no statement" ERROR, but spec. changed because unclear what a statement is) } switch (c) { case 1: { int nestedX; break; } case 2: nestedX; // ERROR int nestedZ; float a; // okay, hiding outer 'a' break; case 3: int linearZ; break; break; case 4: int linearY = linearZ; break; case 5: // okay that branch bypassed an initializer const int linearC = 4; break; case 6: // okay that branch bypassed an initializer linearC; } nestedZ; // ERROR, no longer in scope } glslang-16.0.0/Test/swizzle.frag000066400000000000000000000015771506534232700165350ustar00rootroot00000000000000#version 110 uniform float blend; uniform vec4 u; uniform bool p; varying vec2 t; void main() { float blendscale = 1.789; vec4 w = u; vec4 w_undef; // test undef vec4 w_dep = u; // test dependent swizzles vec4 w_reorder = u; // test reordering vec4 w2 = u; vec4 w_flow = u; // test flowControl w_reorder.z = blendscale; w.wy = t; w_reorder.x = blendscale; w2.xyzw = u.zwxy; w_reorder.y = blendscale; w_dep.xy = w2.xz; w_dep.zw = t; w_undef.xy = u.zw; if (p) w_flow.x = t.x; else w_flow.x = t.y; gl_FragColor = mix(w_reorder, w_undef, w * w2 * w_dep * w_flow); vec2 c = t; vec4 rep = vec4(0.0, 0.0, 0.0, 1.0); if (c.x < 0.0) c.x *= -1.0; if (c.x <= 1.0) rep.x = 3.4; gl_FragColor += rep; } glslang-16.0.0/Test/syntaxError.frag000066400000000000000000000003461506534232700173570ustar00rootroot00000000000000#version 120 uniform vec4 bigColor; varying vec4 BaseColor; uniform float d; void main() { vec5 color = BaseColor; do { color += bigColor; } while (color.x < d); gl_FragColor = color; } glslang-16.0.0/Test/terminate.frag000066400000000000000000000003141506534232700170020ustar00rootroot00000000000000#version 400 void foo() { terminateInvocation; } // ERROR: identifier undeclared #extension GL_EXT_terminate_invocation : enable void main() { int terminateInvocation; // syntax ERROR } glslang-16.0.0/Test/terminate.vert000066400000000000000000000003161506534232700170450ustar00rootroot00000000000000#version 400 void foo() { terminateInvocation; } // ERROR: identifier undeclared #extension GL_EXT_terminate_invocation : enable void main() { terminateInvocation; // ERROR: wrong stage } glslang-16.0.0/Test/tes_patch.tese000066400000000000000000000005261506534232700170120ustar00rootroot00000000000000#version 430 core #extension GL_ARB_enhanced_layouts : require layout(isolines, point_mode) in; layout (location = 1, component = 0) in vec2 gohan[]; layout (location = 1, component = 2) patch in vec2 goten; in vec4 tcs_tes[]; out vec4 tes_gs; void main() { vec4 result = tcs_tes[0]; tes_gs += result; } glslang-16.0.0/Test/test.frag000066400000000000000000000006361506534232700160000ustar00rootroot00000000000000#version 110 uniform sampler2D texSampler2D; uniform sampler3D texSampler3D; uniform float blend; uniform vec2 scale; uniform vec4 u; varying vec2 t; varying vec3 coords; void main() { float blendscale = 1.789; vec4 v = texture2D(texSampler2D, (t + scale) / scale ).wzyx; vec4 w = texture3D(texSampler3D, coords) + v; gl_FragColor = mix(w, u, blend * blendscale); } glslang-16.0.0/Test/texture.frag000066400000000000000000000053631506534232700165230ustar00rootroot00000000000000#version 130 uniform sampler1D texSampler1D; uniform sampler2D texSampler2D; uniform sampler3D texSampler3D; uniform samplerCube texSamplerCube; uniform sampler1DShadow shadowSampler1D; uniform sampler2DShadow shadowSampler2D; uniform float blend; uniform vec2 scale; uniform vec4 u; varying vec2 t; varying vec2 coords2D; void main() { float blendscale = 1.789; float bias = 2.0; float lod = 3.0; float proj = 2.0; float coords1D = 1.789; vec3 coords3D = vec3(1.789, 2.718, 3.453); vec4 coords4D = vec4(1.789, 2.718, 3.453, 2.0); vec4 color = vec4(0.0, 0.0, 0.0, 0.0); color += texture1D (texSampler1D, coords1D); color += texture1D (texSampler1D, coords1D, bias); color += texture1DProj(texSampler1D, coords2D); color += texture1DProj(texSampler1D, coords4D); color += texture1DProj(texSampler1D, coords2D, bias); color += texture1DProj(texSampler1D, coords4D, bias); color += texture2D (texSampler2D, coords2D); color += texture2D (texSampler2D, coords2D, bias); color += texture2DProj (texSampler2D, coords3D); color += texture2DProj (texSampler2D, coords4D, bias); color += texture3D (texSampler3D, coords3D); color += texture3D (texSampler3D, coords3D, bias); color += texture3DProj (texSampler3D, coords4D); color += texture3DProj (texSampler3D, coords4D, bias); color += textureCube (texSamplerCube, coords3D); color += textureCube (texSamplerCube, coords3D, bias); color += shadow1D (shadowSampler1D, coords3D); color += shadow1D (shadowSampler1D, coords3D, bias); color += shadow2D (shadowSampler2D, coords3D); color += shadow2D (shadowSampler2D, coords3D, bias); color += shadow1DProj (shadowSampler1D, coords4D); color += shadow1DProj (shadowSampler1D, coords4D, bias); color += shadow2DProj (shadowSampler2D, coords4D); color += shadow2DProj (shadowSampler2D, coords4D, bias); ivec2 iCoords2D = ivec2(0, 5); int iLod = 1; color += texelFetch(texSampler2D, iCoords2D, iLod); vec2 gradX = dFdx(coords2D); vec2 gradY = dFdy(coords2D); const ivec2 offset = ivec2(3, -7); color += textureGrad(texSampler2D, coords2D, gradX, gradY); color += textureProjGrad(texSampler2D, vec3(coords2D, proj), gradX, gradY); color += textureGradOffset(texSampler2D, coords2D, gradX, gradY, offset); color += textureProjGradOffset(texSampler2D, coords3D, gradX, gradY, offset); color += textureGrad(shadowSampler2D, vec3(coords2D, lod), gradX, gradY); gl_FragColor = mix(color, u, blend * blendscale); }glslang-16.0.0/Test/textureQueryLOD.frag000066400000000000000000000013251506534232700201020ustar00rootroot00000000000000#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; } } glslang-16.0.0/Test/textureoffset_sampler2darrayshadow.vert000066400000000000000000000003431506534232700242020ustar00rootroot00000000000000#version 300 es precision mediump float; in highp vec4 dEQP_Position; uniform mediump sampler2DArrayShadow s; void main() { gl_Position = vec4(textureOffset(s, vec4(0), ivec2(0))); gl_Position = dEQP_Position; } glslang-16.0.0/Test/tokenLength.vert000066400000000000000000001340531506534232700173450ustar00rootroot00000000000000#version 300 es //#pragma glslang_binary_double_output // 1023 characters in float BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789; // 1024 characters (okay) in float ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789; int E1 = 5000000000; // ERROR int E2 = 50000000000; // ERROR int B = 4294967295; // okay int OE = 0777777777777777777777; // ERROR int HE = 0x1234567890ABCDEF0; // ERROR // 1023 character fraction float F = 1.0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890; // 1024 character value float G = 1.01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678890; // 1025 character fraction float E3 = 1.012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012; void main() { gl_Position = vec4(ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789, B, F, G); } // super long float BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789; int superH = 0xBCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789; int superO = 0777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777077777777777777777777707777777777777777777770777777777777777777777; int superI = 429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295; float superF = 1.012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890121234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901212345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012; // Boundary cases #extension a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhooooooooooooooooooooooooooooooohhhhhhhhhhhhhhhhh01234 : enable #extension a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhooooooooooooooooooooooooooooooohhhhhhhhhhhhhhhhh012345 : enable // Super long #extension A29496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295 // Boundary cases #if 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 #error in long non-zero "if" #endif #if 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 == 0 #error in long zero "if" #endif #if 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 == 0 #error in too long "if" #endif #if A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 #error in long macro "if" #endif #if A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 #error in long macro "if" #endif #if A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 #error in too long macro "if" #endif // Super long #if 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 #error in super long "if" #endif #if A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 #error in super long macro "if" #endif int BE = 0b01u; // ERROR (not supported by GLSL) glslang-16.0.0/Test/tokenPaste.vert000066400000000000000000000064141506534232700171770ustar00rootroot00000000000000#version 450 // side test verifies multiple rounds of argument expansion #define bear SecondExpansion #define mmmB bear #define mmmA(a) a int mmmA(mmmB); // mmmB -> bear, and then in mmmA(), bear -> SecondExpansion // pasting skips the first round of expansion #define mmcatmmdog PostPasteExpansion #define mmcat cat #define mmdog dog #define mmp(a,b) a## b int mmp(mmcat, mmdog); // mmcat/mmdog not expanded, mmcatmmdog -> PostPasteExpansion // multi-token pre #define mmtokpastepre(a) a##27 mmtokpastepre(float foo); // should declare "float foo27;" // multi-token post #define mmtokpastepost(a) uni ##a mmtokpastepost(form float foo155); // should declare "uniform float foo155;" // non-first argument #define foo ShouldntExpandToThis #define semi ; #define bothpaste(a,b) a##b float bothpaste(foo, 719); // should declare "float foo719;" #define secpaste(a,b) a bar ## b secpaste(uniform float, foo semi) // should declare "uniform float barfoo;" // no args #define noArg fl##oat noArg argless; // bad location #define bad1 ## float bad1 dc1; #define bad2 float ## bad2 dc2; // multiple ## #define multiPaste(a, b, c) a##or##b flo##at foo##c multiPaste(unif, m, 875); // too long #define simplePaste(a,b) a##b // 1020 + 5 characters float simplePaste(ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345, 12345); // non-identifiers int a = simplePaste(11,12); // should work in #if as well #define seahorse 1 #define sealion 0 #define marine_animal(suffix) (sea ## suffix) #if marine_animal(horse) // should pass uniform float seahorse_var; #endif #if !marine_animal(lion) // should pass uniform float sealion_var; #endif // operators #define MAKE_OP(L, R) L ## R const int aop = 10; const int bop = 4; int cop = aop MAKE_OP(<, <) bop; bool dop = aop MAKE_OP(!,=) bop; #define MAKE_OP3(L, M, R) L ## M ## R void foo() { int e = 16; e MAKE_OP3(>,>,=) 2; // recovery from bad op bool f = e MAKE_OP(>,!) 5; } // arguments: should make 'uniform int argPaste2;' #define M_NEST(q) int q #define M_OUTER(p) M_NEST(p##2) uniform M_OUTER(argPaste); // should make 'uniform int argPaste20suff;' #define M_NEST2(q) int q ## suff #define M_OUTER2(p) M_NEST2(p ## 20) uniform M_OUTER2(argPaste); #define rec(x)## rec(rec()) #define bax(bay) #define baz bax(/##) baz glslang-16.0.0/Test/types.frag000066400000000000000000000030201506534232700161530ustar00rootroot00000000000000#version 130 uniform bool u_b; uniform bvec2 u_b2; uniform bvec3 u_b3; uniform bvec4 u_b4; uniform int u_i; uniform ivec2 u_i2; uniform ivec3 u_i3; uniform ivec4 u_i4; uniform float u_f; uniform vec2 u_f2; uniform vec3 u_f3; uniform vec4 u_f4; uniform bool i_b; uniform bvec2 i_b2; uniform bvec3 i_b3; uniform bvec4 i_b4; flat in int i_i; flat in ivec2 i_i2; flat in ivec3 i_i3; flat in ivec4 i_i4; in float i_f; in vec2 i_f2; in vec3 i_f3; in vec4 i_f4; void main() { bool b = u_b && i_b; bvec2 b2 = bvec2(u_b2.x && i_b2.x && u_b2.y && i_b2.y); bvec3 b3 = bvec3(u_b3.x && i_b3.x && u_b3.y && i_b3.y && u_b3.z && i_b3.z); bvec4 b4 = bvec4(u_b4.x && i_b4.x && u_b4.y && i_b4.y && u_b4.z && i_b4.z && u_b4.w && i_b4.w); int i = u_i + i_i; ivec2 i2 = u_i2 + i_i2; ivec3 i3 = u_i3 + i_i3; ivec4 i4 = u_i4 + i_i4; float f = u_f + i_f; vec2 f2 = u_f2 + i_f2; vec3 f3 = u_f3 + i_f3; vec4 f4 = u_f4 + i_f4; gl_FragColor = b || b2.x || b2.y || b3.x || b3.y || b3.z || b4.x || b4.y || b4.z || b4.w ? vec4( i + i2.x + i2.y + i3.x + i3.y + i3.z + i4.x + i4.y + i4.z + i4.w + f + f2.x + f2.y + f3.x + f3.y + f3.z + f4.x + f4.y + f4.z + f4.w) : vec4(1.0); } glslang-16.0.0/Test/uint.frag000066400000000000000000000051131506534232700157730ustar00rootroot00000000000000#version 300 es in uvec2 badu; // ERROR flat in uvec2 t; in highp float f; in highp vec2 tc; in bool bad; // ERROR uniform uvec4 v; uniform int i; uniform bool b; out uvec4 c; uniform lowp usampler2D usampler; void main() { int count = 1; uint u = t.y + 3u; const uint cu1error = 0xFFFFFFFF; // ERROR const uint cu1 = 0xFFFFFFFFU; const uint cu2 = -1u; // 0xFFFFFFFF const uint cu3 = 1U; const uint cu4error = 1; // ERROR const uint cu4 = 1u; if (cu1 == cu2) count *= 2; // done if (cu3 == cu4) count *= 3; // done if (cu2 == cu3) count *= 5; // not done const uint cushiftediierror = 0xFFFFFFFF >> 10; // ERROR const int cshiftedii = 0xFFFFFFFF >> 10; const uint cushiftedui = 0xFFFFFFFFu >> 10; const uint cushiftediuerror = 0xFFFFFFFF >> 10u; // ERROR const int cshiftediu = 0xFFFFFFFF >> 10u; const uint cushifteduu = 0xFFFFFFFFu >> 10u; if (cshiftedii == cshiftediu) count *= 7; // done if (cushiftedui == cushifteduu) count *= 11; // done if (cshiftedii == int(cushiftedui)) count *= 13; // not done uint shiftediierror = 0xFFFFFFFF >> 10; // ERROR int shiftedii = 0xFFFFFFFF >> 10; uint shiftedui = 0xFFFFFFFFu >> 10; uint shiftediuerror = 0xFFFFFFFF >> 10u; // ERROR int shiftediu = 0xFFFFFFFF >> 10u; uint shifteduu = 0xFFFFFFFFu >> 10u; if (shiftedii == shiftediu) c = texture(usampler, tc); if (shiftedui == shifteduu) c = texture(usampler, tc + float(1u)); if (shiftedii == int(shiftedui)) c = texture(usampler, tc - vec2(2u)); if (t.x > 4u) { float af = float(u); bool ab = bool(u); int ai = int(u); c += uvec4(uint(af), uint(ab), uint(ai), count); } const uint cmask1 = 0x0A1u; const uint cmask2 = 0xA10u; const uint cmask3 = cmask1 << 4; const uint cmask4 = 0xAB1u; if (cmask3 == cmask2) count *= 17; // done if ((cmask3 & cmask1) != 0u) count *= 19; // not done if ((cmask1 | cmask3) == cmask4) count *= 23; // done if ((cmask1 ^ cmask4) == 0xA10u) count *= 27; // done uint mask1 = 0x0A1u; uint mask2 = 0xA10u; uint mask3 = mask1 << 4; uint mask4 = 0xAB1u; if (mask3 == mask2) count *= 100; if ((mask3 & mask1) != 0u) count *= 101; if ((mask1 | mask3) == mask4) count *= 102; if ((mask1 ^ mask4) == 0xA10u) count *= 103; c += uvec4(count); } glslang-16.0.0/Test/uniformArray.frag000066400000000000000000000004161506534232700174730ustar00rootroot00000000000000#version 130 uniform sampler2D texSampler2D; uniform vec3 inColor; uniform vec4 color[6]; uniform float alpha[16]; void main() { vec4 texColor = color[1] + color[1]; texColor.xyz += inColor; texColor.a += alpha[12]; gl_FragColor = texColor; } glslang-16.0.0/Test/validate-shaders.sh000077500000000000000000000205061506534232700177350ustar00rootroot00000000000000#!/bin/bash # This script validates shaders (if successfully compiled) using spirv-val. # It is not meant to preclude the possible addition of the validator to # glslang. declare -r EXE='../build/install/bin/glslang' # search common locations for spirv-tools: keep first one for toolsdir in '../External/spirv-tools/build/tools' '../../SPIRV-Tools/build/tools/bin' '/usr/local/bin'; do [[ -z "$VAL" && -x "${toolsdir}/spirv-val" ]] && declare -r VAL="${toolsdir}/spirv-val" [[ -z "$DIS" && -x "${toolsdir}/spirv-dis" ]] && declare -r DIS="${toolsdir}/spirv-dis" done declare -r gtests='../gtests/Hlsl.FromFile.cpp ../gtests/Spv.FromFile.cpp' declare -r targetenv='vulkan1.0' function fatal() { echo "ERROR: $@"; exit 5; } function usage { echo echo "Usage: $(basename $0) [options...] shaders..." echo echo " Validates shaders (if successfully compiled) through spirv-val." echo echo "General options:" echo " --help prints this text" echo " --no-color disables output colorization" echo " --dump-asm dumps all successfully compiled shader assemblies" echo " --dump-val dumps all validation results" echo " --dump-comp dumps all compilation logs" echo "Spam reduction options:" echo " --no-summary disables result summaries" echo " --skip-ok do not print successful validations" echo " --skip-comperr do not print compilation errors" echo " --skip-valerr do not print validation errors" echo " --quiet synonym for --skip-ok --skip-comperr --skip-valerr --no-summary" echo " --terse print terse single line progress summary" echo "Disassembly options:" echo " --raw-id uses raw ids for disassembly" echo echo "Usage examples. Note most non-hlsl tests fail to compile for expected reasons." echo " Exercise all hlsl.* files:" echo " $(basename $0) hlsl.*" echo " Exercise all hlsl.* files, tersely:" echo " $(basename $0) --terse hlsl.*" echo " Print validator output for myfile.frag:" echo " $(basename $0) --quiet --dump-val myfile.frag" echo " Exercise hlsl.* files, only printing validation errors:" echo " $(basename $0) --skip-ok --skip-comperr hlsl.*" exit 5 } function status() { printf "%-40s: %b\n" "$1" "$2" } # make sure we can find glslang [[ -x "$EXE" ]] || fatal "Unable to locate $(basename "$EXE") executable" [[ -x "$VAL" ]] || fatal "Unable to locate spirv-val executable" [[ -x "$DIS" ]] || fatal "Unable to locate spirv-dis executable" for gtest in $gtests; do [[ -r "$gtest" ]] || fatal "Unable to locate source file: $(basename $gtest)" done # temp files declare -r spvfile='out.spv' \ complog='comp.out' \ vallog='val.out' \ dislog='dis.out' \ # options declare opt_vallog=false \ opt_complog=false \ opt_dislog=false \ opt_summary=true \ opt_stat_comperr=true \ opt_stat_ok=true \ opt_stat_valerr=true \ opt_color=true \ opt_raw_id=false \ opt_quiet=false \ opt_terse=false # clean up on exit trap "rm -f ${spvfile} ${complog} ${vallog} ${dislog}" EXIT # Language guesser: there is no fixed mapping from filenames to language, # so this examines the file and return one of: # hlsl # glsl # bin # unknown # This is easier WRT future expansion than a big explicit list. function FindLanguage() { local test="$1" # If it starts with hlsl, assume it's hlsl. if [[ "$test" == *hlsl.* ]]; then echo hlsl return fi if [[ "$test" == *.spv ]]; then echo bin return; fi # If it doesn't start with spv., assume it's GLSL. if [[ ! "$test" == spv.* ]]; then echo glsl return fi # Otherwise, attempt to guess from shader contents, since there's no # fixed mapping of filenames to languages. local contents="$(cat "$test")" if [[ "$contents" == *#version* ]]; then echo glsl return fi if [[ "$contents" == *SamplerState* || "$contents" == *cbuffer* || "$contents" == *SV_* ]]; then echo hlsl return fi echo unknown } # Attempt to discover entry point function FindEntryPoint() { local test="$1" # if it's not hlsl, always use main if [[ "$language" != 'hlsl' ]]; then echo 'main' return fi # Try to find it in test sources awk -F '[ (){",]+' -e "\$2 == \"${test}\" { print \$3; found=1; } END { if (found==0) print \"main\"; } " $gtests } # command line options while [ $# -gt 0 ] do case "$1" in # -c) glslang="$2"; shift 2;; --help|-?) usage;; --no-color) opt_color=false; shift;; --no-summary) opt_summary=false; shift;; --skip-ok) opt_stat_ok=false; shift;; --skip-comperr) opt_stat_comperr=false; shift;; --skip-valerr) opt_stat_valerr=false; shift;; --dump-asm) opt_dislog=true; shift;; --dump-val) opt_vallog=true; shift;; --dump-comp) opt_complog=true; shift;; --raw-id) opt_raw_id=true; shift;; --quiet) opt_quiet=true; shift;; --terse) opt_quiet=true opt_terse=true shift;; --*) fatal "Unknown command line option: $1";; *) break;; esac done # this is what quiet means if $opt_quiet; then opt_stat_ok=false opt_stat_comperr=false opt_stat_valerr=false $opt_terse || opt_summary=false fi if $opt_color; then declare -r white="\e[1;37m" cyan="\e[1;36m" red="\e[0;31m" no_color="\e[0m" else declare -r white="" cyan="" red="" no_color="" fi # stats declare -i count_ok=0 count_err=0 count_nocomp=0 count_total=0 declare -r dashsep='------------------------------------------------------------------------' testfiles=(${@}) # if no shaders given, look for everything in current directory [[ ${#testfiles[*]} == 0 ]] && testfiles=(*.frag *.vert *.tesc *.tese *.geom *.comp) $opt_summary && printf "\nValidating: ${#testfiles[*]} shaders\n\n" # Loop through the shaders we were given, compiling them if we can. for test in ${testfiles[*]} do if [[ ! -r "$test" ]]; then $opt_quiet || status "$test" "${red}FILE NOT FOUND${no_color}" continue fi ((++count_total)) $opt_terse && printf "\r[%-3d/%-3d : ${white}comperr=%-3d ${red}valerr=%-3d ${cyan}ok=%-3d${no_color}]" \ ${count_total} ${#testfiles[*]} ${count_nocomp} ${count_err} ${count_ok} language="$(FindLanguage $test)" entry="$(FindEntryPoint $test)" langops='' case "$language" in hlsl) langops='-D --hlsl-iomap --hlsl-offsets';; glsl) ;; bin) continue;; # skip binaries *) $opt_quiet || status "$test" "${red}UNKNOWN LANGUAGE${no_color}"; continue;; esac # compile the test file if compout=$("$EXE" -e "$entry" $langops -V -o "$spvfile" "$test" 2>&1) then # successful compilation: validate if valout=$("$VAL" --target-env ${targetenv} "$spvfile" 2>&1) then # validated OK $opt_stat_ok && status "$test" "${cyan}OK${no_color}" ((++count_ok)) else # validation failure $opt_stat_valerr && status "$test" "${red}VAL ERROR${no_color}" printf "%s\n%s:\n%s\n" "$dashsep" "$test" "$valout" >> "$vallog" ((++count_err)) fi if $opt_dislog; then printf "%s\n%s:\n" "$dashsep" "$test" >> "$dislog" $opt_raw_id && id_opt=--raw-id "$DIS" ${id_opt} "$spvfile" >> "$dislog" fi else # compile failure $opt_stat_comperr && status "$test" "${white}COMP ERROR${no_color}" printf "%s\n%s\n" "$dashsep" "$compout" >> "$complog" ((++count_nocomp)) fi done $opt_terse && echo # summarize $opt_summary && printf "\nSummary: ${white}${count_nocomp} compile errors${no_color}, ${red}${count_err} validation errors${no_color}, ${cyan}${count_ok} successes${no_color}\n" # dump logs $opt_vallog && [[ -r $vallog ]] && cat "$vallog" $opt_complog && [[ -r $complog ]] && cat "$complog" $opt_dislog && [[ -r $dislog ]] && cat "$dislog" # exit code [[ ${count_err} -gt 0 ]] && exit 1 exit 0 glslang-16.0.0/Test/variableArrayIndex.frag000066400000000000000000000016071506534232700205740ustar00rootroot00000000000000#version 130 uniform sampler2D sampler; varying vec2 coord; struct lunarStruct1 { int i; float f; }; struct lunarStruct2 { int i; float f; lunarStruct1 s1_1; }; struct lunarStruct3 { lunarStruct2 s2_1[3]; int i; float f; lunarStruct1 s1_1; }; uniform lunarStruct1 foo; uniform lunarStruct2 foo2[5]; uniform lunarStruct3 foo3; uniform int Count; void main() { float scale; int iLocal = Count; if (foo3.s2_1[1].i > 0) scale = foo2[foo3.s2_1[foo.i].i + 2 + ++iLocal].s1_1.f; else scale = foo3.s2_1[0].s1_1.f; //for (int i = 0; i < iLocal; ++i) { // scale += foo2[i].f; //} gl_FragColor = scale * texture2D(sampler, coord); vec2[3] constructed = vec2[3](coord, vec2(scale), vec2(1.0, 2.0)); gl_FragColor += vec4(constructed[foo.i], constructed[foo.i]); } glslang-16.0.0/Test/variadic.comp000066400000000000000000000001471506534232700166170ustar00rootroot00000000000000#version 450 void foo(int n, ...) { } void main() { foo(7); foo(8, 43); foo(9, 42.0, 21.05); } glslang-16.0.0/Test/varyingArray.frag000066400000000000000000000005631506534232700174760ustar00rootroot00000000000000#version 130 uniform sampler2D texSampler2D; varying vec4 color; varying float alpha; varying vec4 gl_TexCoord[6]; varying vec4 foo[3]; void main() { vec4 texColor = texture2D(texSampler2D, vec2(gl_TexCoord[4] + gl_TexCoord[5])); texColor += color; texColor.a = alpha; gl_FragColor = foo[1] + gl_TexCoord[0] + gl_TexCoord[4] + texColor; } glslang-16.0.0/Test/varyingArrayIndirect.frag000066400000000000000000000006331506534232700211560ustar00rootroot00000000000000#version 130 uniform sampler2D texSampler2D; varying vec4 color; varying float alpha; varying vec4 gl_TexCoord[6]; varying vec4 userIn[2]; uniform int a, b; void main() { vec4 texColor = texture2D(texSampler2D, vec2(userIn[b] + gl_TexCoord[a] + gl_TexCoord[5])); texColor += color; texColor.a = alpha; gl_FragColor = gl_TexCoord[0] + gl_TexCoord[b] + texColor + userIn[a]; } glslang-16.0.0/Test/versionsClean.frag000066400000000000000000000033561506534232700176360ustar00rootroot00000000000000// //Copyright (C) 2012 LunarG, Inc. //All rights reserved. // //Redistribution and use in source and binary forms, with or without //modification, are permitted provided that the following conditions //are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of LunarG Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE //COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER //CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. // #version 300 es in highp vec3 color; out highp vec4 foo; uniform highp sampler2DArrayShadow bar; void main() { foo = vec4(color, 142.0f); discard; } glslang-16.0.0/Test/versionsClean.vert000066400000000000000000000033221506534232700176700ustar00rootroot00000000000000// //Copyright (C) 2012 LunarG, Inc. //All rights reserved. // //Redistribution and use in source and binary forms, with or without //modification, are permitted provided that the following conditions //are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of LunarG Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE //COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER //CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. // #version 420 compatibility attribute vec3 color; uniform sampler2DRect foo; void main() { gl_Position = vec4(color, 142.0f); } glslang-16.0.0/Test/versionsErrors.frag000066400000000000000000000034071506534232700200650ustar00rootroot00000000000000// //Copyright (C) 2012 LunarG, Inc. //All rights reserved. // //Redistribution and use in source and binary forms, with or without //modification, are permitted provided that the following conditions //are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of LunarG Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE //COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER //CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. // #version 110 es #extension GL_ARB_texture_rectangle : disable attribute vec3 color; uniform sampler2DRect foo; void main() { gl_FragColor = vec4(color, 142.0f); discard; } glslang-16.0.0/Test/versionsErrors.vert000066400000000000000000000034071506534232700201260ustar00rootroot00000000000000// //Copyright (C) 2012 LunarG, Inc. //All rights reserved. // //Redistribution and use in source and binary forms, with or without //modification, are permitted provided that the following conditions //are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of LunarG Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE //COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER //CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. // #version 420 core #extension GL_ARB_texture_rectangle : enable attribute vec3 color; uniform sampler2DRect foo; void main() { gl_Position = vec4(color, 142.0f); discard; } glslang-16.0.0/Test/vk.relaxed.changeSet.frag000066400000000000000000000002651506534232700207620ustar00rootroot00000000000000#version 460 layout(location = 0) out vec4 fragColor; uniform sampler2D sTexture; in vec4 Color; in vec2 UV; void main() { fragColor = Color * texture(sTexture, UV.st).r; } glslang-16.0.0/Test/vk.relaxed.changeSet.vert000066400000000000000000000003401506534232700210150ustar00rootroot00000000000000#version 460 in vec2 aPos; in vec2 aUV; in vec4 aColor; uniform mat4 projectionMatrix; out vec4 Color; out vec2 UV; void main() { Color = aColor; UV = aUV; gl_Position = projectionMatrix * vec4(aPos, 0, 1); } glslang-16.0.0/Test/vk.relaxed.errorcheck.frag000066400000000000000000000005621506534232700212100ustar00rootroot00000000000000#version 460 layout (location = 0) in vec4 io; out vec4 o; // default uniforms will be gathered into a uniform block uniform vec4 a; // declared in both stages with different types uniform float test; // declared twice in this compilation unit uniform vec2 test; vec4 foo() { return a + vec4(test); } void main() { o = io + foo(); } glslang-16.0.0/Test/vk.relaxed.errorcheck.vert000066400000000000000000000005001506534232700212410ustar00rootroot00000000000000#version 460 layout (location = 0) out vec4 io; // default uniforms will be gathered into a uniform block // final global block will merge uniforms from all linked files uniform vec2 a; // declared in both stages with different type vec4 foo() { return a.xyxy; } void main() { io = foo(); }glslang-16.0.0/Test/vk.relaxed.frag000066400000000000000000000046561506534232700170720ustar00rootroot00000000000000#version 460 out vec4 o; // default uniforms will be gathered into a uniform block uniform vec4 a; uniform vec2 b = vec2(0, 0); // initializer will be ignored layout(location = 0) uniform vec2 c; // location qualifier will be ignored uniform vec4 d[10]; struct SamplerArray{ sampler2D tn[4]; }; uniform struct e { vec2 x; float y; uint z; sampler2D t0; SamplerArray samplers; } structUniform; // opaque types will not be grouped into uniform block uniform sampler2D t1; // shared and packed layout qualifier are silently ignored layout(shared) uniform UniformBlock { float j; vec4 k; }; layout(packed) buffer BufferBlock { float j; vec4 k; } bufferInstance; // atomic_uint will be converted to uint and gathered in a buffer block layout(binding = 0) uniform atomic_uint counter1; // offset not used layout(binding = 0) uniform atomic_uint counter2; // offset not used layout(binding = 1) uniform atomic_uint counter3; // offset not used // atomic counter functions will be converted to equivalent integer atomic operations uint bar() { uint j = 0; j = atomicCounterIncrement(counter1); j = atomicCounterDecrement(counter1); j = atomicCounter(counter1); j = atomicCounterAdd(counter1, 1); j = atomicCounterAdd(counter1, -1); j = atomicCounterSubtract(counter1, 1); j = atomicCounterMin(counter1, j); j = atomicCounterMax(counter1, j); j = atomicCounterAnd(counter1, j); j = atomicCounterOr(counter1, j); j = atomicCounterXor(counter1, j); j = atomicCounterExchange(counter1, j); j = atomicCounterCompSwap(counter1, 0, j); atomicCounterIncrement(counter2); atomicCounterIncrement(counter3); memoryBarrierAtomicCounter(); return j; } vec4 foo() { float f = j + bufferInstance.j + structUniform.y + structUniform.z; vec2 v2 = b + c + structUniform.x; vec4 v4 = a + d[0] + d[1] + d[2] + k + bufferInstance.k + texture(t1, vec2(0, 0)) + texture(structUniform.t0, vec2(0, 0)); return vec4(f) * vec4(v2, 1, 1) * v4; } vec4 baz(SamplerArray samplers) { return texture(samplers.tn[0], vec2(0, 0)) + texture(samplers.tn[1], vec2(0, 0)) + texture(samplers.tn[2], vec2(0, 0)) + texture(samplers.tn[3], vec2(0, 0)); } void main() { float j = float(bar()); o = j * foo() + baz(structUniform.samplers); } glslang-16.0.0/Test/vk.relaxed.link1.frag000066400000000000000000000014011506534232700200700ustar00rootroot00000000000000#version 460 out vec4 o; // default uniforms will be gathered into a uniform block // final global block will merge uniforms from all linked files uniform vec4 a; // declared in both stages uniform vec2 b1; // declaration order swapped in other stage uniform vec2 b2; uniform vec4 c1; // not delcared in other file uniform vec4 d; // final global buffer will berge buffers from all linked files layout (binding = 0) uniform atomic_uint counter1; layout (binding = 0) uniform atomic_uint counter2; vec4 foo(); vec4 bar() { uint j = atomicCounterIncrement(counter1) + atomicCounterDecrement(counter2); vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c1 + d; return float(j) * v; } void main() { o = foo() + bar(); }glslang-16.0.0/Test/vk.relaxed.link2.frag000066400000000000000000000011661506534232700201010ustar00rootroot00000000000000#version 460 // default uniforms will be gathered into a uniform block // final global block will merge uniforms from all linked files uniform vec4 a; // declared in both stages uniform vec2 b2; // declaration order swapped in other stage uniform vec2 b1; uniform vec4 c2; // not delcared in other file uniform vec4 d; layout (binding = 0) uniform atomic_uint counter3; layout (binding = 0) uniform atomic_uint counter2; vec4 foo() { uint j = atomicCounterIncrement(counter2) + atomicCounterDecrement(counter3); vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c2 + d; return float(j) * v; }glslang-16.0.0/Test/vk.relaxed.stagelink.0.0.frag000066400000000000000000000062161506534232700213400ustar00rootroot00000000000000#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); } } glslang-16.0.0/Test/vk.relaxed.stagelink.0.0.vert000066400000000000000000000056501506534232700214020ustar00rootroot00000000000000#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); } glslang-16.0.0/Test/vk.relaxed.stagelink.0.1.frag000066400000000000000000000327141506534232700213430ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/vk.relaxed.stagelink.0.1.vert000066400000000000000000000137511506534232700214040ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/vk.relaxed.stagelink.0.2.frag000066400000000000000000000001721506534232700213350ustar00rootroot00000000000000#version 460 vec4 TDOutputSwizzle(vec4 c) { return c.rgba; } uvec4 TDOutputSwizzle(uvec4 c) { return c.rgba; } glslang-16.0.0/Test/vk.relaxed.stagelink.0.2.vert000066400000000000000000000164741506534232700214120ustar00rootroot00000000000000#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; } glslang-16.0.0/Test/vk.relaxed.stagelink.frag000066400000000000000000000014241506534232700210400ustar00rootroot00000000000000#version 460 layout (location = 0) in vec4 io; out vec4 o; // default uniforms will be gathered into a uniform block // final global block will merge uniforms from all linked files uniform vec4 a; // declared in both stages uniform vec2 b1; // declaration order swapped in other stage uniform vec2 b2; uniform vec4 c1; // not delcared in other file uniform vec4 d; // final global buffer will berge buffers from all linked files layout (binding = 0) uniform atomic_uint counter1; layout (binding = 0) uniform atomic_uint counter2; vec4 foo() { uint j = atomicCounterIncrement(counter1) + atomicCounterDecrement(counter2); vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c1 + d; return float(j) * v; } void main() { o = io + foo(); }glslang-16.0.0/Test/vk.relaxed.stagelink.vert000066400000000000000000000015241506534232700211020ustar00rootroot00000000000000#version 460 layout (location = 0) out vec4 io; // default uniforms will be gathered into a uniform block // final global block will merge uniforms from all linked files uniform vec4 a; // declared in both stages uniform vec2 b2; // declaration order swapped in other stage uniform vec2 b1; uniform vec4 c2; // not delcared in other file uniform vec4 d; uniform vec4 s[4]; layout (binding = 0) uniform atomic_uint counter3; layout (binding = 0) uniform atomic_uint counter2; vec4 foo() { uint j = atomicCounterIncrement(counter2) + atomicCounterDecrement(counter3); vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c2 + d; return float(j) * v; } void main() { vec4 v = foo(); v = v + s[gl_VertexID - gl_VertexIndex]; v.x = v.x - float(gl_InstanceID - gl_InstanceIndex); io = v; } glslang-16.0.0/Test/vk.relaxed.syntaxerror.frag000066400000000000000000000005441506534232700214610ustar00rootroot00000000000000#version 460 layout (location = 0) in vec4 io; out vec4 o; struct OpaqueInStruct { sampler2D smp; }; uniform OpaqueInStruct uniformStruct; vec4 foo(OpaqueInStruct); void main() { o = io + foo(uniformStruct); } vec4 foo(OpaqueInStruct sampler) { // unnamed variable and invalid SAMPLER token return a + vec4(test); } glslang-16.0.0/Test/vk.relaxed.syntaxerror.vert000066400000000000000000000001331506534232700215140ustar00rootroot00000000000000#version 460 layout (location = 0) out vec4 io; void main() { io = vec4(0.0); }glslang-16.0.0/Test/voidFunction.frag000066400000000000000000000004771506534232700174730ustar00rootroot00000000000000#version 120 uniform vec4 bigColor; varying vec4 BaseColor; uniform float d; float bar = 2.0; void foo() { bar++; return; } void foo2() { bar++; } void main() { vec4 outColor = bigColor; foo(); foo2(); outColor.x += bar; gl_FragColor = outColor; return; } glslang-16.0.0/Test/vulkan.ast.vert000066400000000000000000000021751506534232700171500ustar00rootroot00000000000000#version 450 layout(constant_id = 200) const float scf1 = 1.0; layout(constant_id = 201) const bool scbt = true; layout(constant_id = 202) const int sci2 = 2; void main() { bool(scf1); // not a spec-const bool(scbt); // spec-const bool(sci2); // spec-const float(scf1); // not a spec-const float(scbt); // not a spec-const float(sci2); // not a spec-const int(scf1); // not a spec-const int(scbt); // spec-const int(sci2); // spec-const scf1 * scf1; // not a spec-const scbt || scbt; // spec-const sci2 * sci2; // spec-const scf1 + sci2; // implicit conversion not a spec-const -scf1; // not a spec-const !scbt; // spec-const -sci2; // spec-const scf1 > scf1; // not a spec-const sci2 > sci2; // spec-const scf1 != scf1; // not a spec-const scbt != scbt; // spec-const sci2 != sci2; // spec-const ivec2(sci2, sci2); // spec-const ivec2[2](ivec2(sci2, sci2), ivec2(sci2, sci2)); // not a spec-const vec2(scf1, scf1); // spec-const vec2[2](vec2(scf1, scf1), vec2(scf1, scf1)); // spec-const } glslang-16.0.0/Test/vulkan.comp000066400000000000000000000012661506534232700163400ustar00rootroot00000000000000#version 450 layout(local_size_x_id = 18, local_size_z_id = 19) in; layout(local_size_x = 32, local_size_y = 32) in; layout(local_size_z_id = 14) in; // ERROR, can't change this void main() { gl_WorkGroupSize; int i = { }; // ERROR, need an extension } layout(local_size_y_id = 19) in; // ERROR, already used: TODO not yet reported shared float f = { }; // ERROR, need an extension float g = { }; // ERROR, need an extension #extension GL_EXT_null_initializer : enable shared float f2 = { }; float g2 = { }; void foo() { int i = { }; float fa[] = { }; } struct samp { sampler2D s2D; } sampVar = { }; atomic_uint a = { }; glslang-16.0.0/Test/vulkan.frag000066400000000000000000000073441506534232700163240ustar00rootroot00000000000000#version 450 uniform sampler s; // ERROR, no binding uniform sampler sA[4]; // ERROR, no binding uniform texture2D t2d; // ERROR, no binding uniform texture3D t3d[4]; // ERROR, no binding int i; uniform samplerShadow sShadow; uniform texture3D t3d5[5]; writeonly uniform image2D i2d; void badConst() { sampler2D(t2d); // ERROR, need 2 args sampler2D(s, s); // ERROR, wrong type sampler2D(i, i); // ERROR, wrong type sampler2D(t2d, i); // ERROR, wrong type sampler2D(t2d, t2d); // ERROR, wrong type sampler2D(t2d, sA); // ERROR, wrong type sampler3D[4](t3d5, sA[2]); // ERROR, can't make array sampler2D(i2d, s); // ERROR, image instead of texture sampler2D(t3d[1], s); // ERROR, 3D not 2D sampler2D(t2d, sShadow); sampler2DShadow(t2d, s); } sampler2D s2D = sampler2D(t2d, s); // ERROR, no sampler constructor sampler3D s3d[4] = sampler3D[4](t3d, sA[2]); // ERROR, no sampler constructor out vec4 color; // ERROR, no location void main() { color = texture(s2D, vec2(0.5)); color += texture(s3d[i], vec3(0.5)); } layout(push_constant) buffer pcb { // ERROR, not on a buffer int a; } pcbInst; layout(push_constant) uniform float pcfloat; // ERROR 2X: not on a non-block, and non-opaque outside block layout(push_constant) uniform; // ERROR, needs an object layout(binding=2, push_constant) uniform pcbnd1 { // ERROR, can't have binding int a; } pcbnd1inst; layout(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; }; // Okay now to have no instance name layout(input_attachment_index = 2) uniform subpassInput subD; layout(input_attachment_index = 3) uniform texture2D subDbad1; // ERROR, not a texture layout(input_attachment_index = 4) writeonly uniform image2D subDbad2; // ERROR, not an image uniform subpassInput subDbad3; // ERROR, need attachment number layout(input_attachment_index = 2) uniform subpassInputMS subDMS; void foo() { vec4 v = subpassLoad(subD); v += subpassLoadMS(subD); // ERROR, no such function v += subpassLoad(subD, 2); // ERROR, no such sig. v += subpassLoad(subDMS, 2); v += subpassLoadMS(subDMS, 2); // ERROR, no such function } subroutine int fooS; // ERROR, not in SPV subroutine int fooSub(); // ERROR, not in SPV uniform vec4 dv4; // ERROR, no default uniforms void fooTex() { texture(t2d, vec2(1.0)); // ERROR, need a sampler, not a pure texture imageStore(t2d, ivec2(4, 5), vec4(1.2)); // ERROR, need an image, not a pure texture } precision highp float; layout(location=0) in vec2 vTexCoord; layout(location=0) out vec4 FragColor; vec4 userTexture(mediump sampler2D samp, vec2 coord) { return texture(samp, coord); } bool cond; void callUserTexture() { userTexture(sampler2D(t2d,s), vTexCoord); // ERROR, not point of use userTexture((sampler2D(t2d,s)), vTexCoord); // ERROR, not point of use userTexture((sampler2D(t2d,s), sampler2D(t2d,s)), vTexCoord); // ERROR, not point of use userTexture(cond ? sampler2D(t2d,s) : sampler2D(t2d,s), vTexCoord); // ERROR, no ?:, not point of use gl_NumSamples; // ERROR, not for Vulkan } void noise() { noise1(dv4); noise2(4.0); noise3(vec2(3)); noise4(dv4); } glslang-16.0.0/Test/vulkan.vert000066400000000000000000000062241506534232700163610ustar00rootroot00000000000000#version 450 layout(input_attachment_index = 2) uniform subpassInput subD1; // ERROR, not this stage layout(input_attachment_index = 2) uniform isubpassInput subD2; // ERROR, not this stage layout(input_attachment_index = 2) uniform usubpassInput subD3; // ERROR, not this stage layout(input_attachment_index = 2) uniform subpassInputMS subD4; // ERROR, not this stage layout(input_attachment_index = 2) uniform isubpassInputMS subD5; // ERROR, not this stage layout(input_attachment_index = 2) uniform usubpassInputMS subD6; // ERROR, not this stage out vec4 color; layout(constant_id = 17) const ivec2 arraySizes = ivec2(12,13); // ERROR, not a scalar layout(constant_id = 17) uniform sampler2D s2D; // ERROR, not the right type or qualifier layout(constant_id = 4000) const int c1 = 12; // ERROR, too big layout(constant_id = 4) const float c2[2] = float[2](1.0, 2.0); // ERROR, not a scalar layout(constant_id = 4) in; void main() { color = subpassLoad(subD1); // ERROR, no such function in this stage } layout(binding = 0) uniform atomic_uint aui; // ERROR, no atomics in Vulkan layout(shared, binding = 1) uniform ub1n { int a; } ub1i; // ERROR, no shared layout(packed, binding = 2) uniform ub2n { int a; } ub2i; // ERROR, no packed layout(constant_id=222) const int arraySize = 4; void foo() { int a1[arraySize]; int a2[arraySize] = a1; // ERROR, can't use in initializer a1 = a2; // ERROR, can't assign, even though the same type if (a1 == a2) // ERROR, can't compare either ++color; } layout(set = 1, push_constant) uniform badpc { int a; } badpcI; // ERROR, no descriptor set with push_constant #ifndef VULKAN #error VULKAN should be defined #endif #if VULKAN != 100 #error VULKAN should be 100 #endif float AofA0[2][arraySize]; float AofA1[arraySize][arraySize]; float AofA2[arraySize][2 + arraySize]; float AofA3[arraySize][2]; out ban1 { // ERROR, only outer dimension float f; } bai1[2][arraySize]; out ban2 { float f; } bai2[arraySize][2]; layout(binding = 3000) uniform sampler2D s3000; layout(binding = 3001) uniform b3001 { int a; }; layout(location = 10) in vec4 in1; layout(location = 10) in vec4 in2; // ERROR, no location aliasing layout(constant_id = 400) const int nonLit = 1; layout(location = nonLit, component = nonLit) in vec4 nonLit1; // ERROR, non literal layout(binding = nonLit, set = nonLit) uniform nonLitBN { // ERROR, non literal layout(offset = nonLit) vec4 nonLit1; // ERROR, non literal layout(align = nonLit) vec4 nonLit3; // ERROR, non literal layout(xfb_offset = nonLit) vec4 nonLit4; // ERROR, non literal layout(xfb_buffer = nonLit) vec4 nonLit5; // ERROR, non literal layout(xfb_stride = nonLit) vec4 nonLit6; // ERROR, non literal } nonLitBI; layout(input_attachment_index = nonLit) vec4 nonLit3; // ERROR, non literal layout(constant_id = nonLit) vec4 nonLit4; // ERROR, non literal glslang-16.0.0/Test/web.array.frag000066400000000000000000000005351506534232700167110ustar00rootroot00000000000000#version 310 es precision highp float; float g4[4]; float g5[5]; layout(location = 0) out vec2 colorOut; float[4] foo(float a[5]) { return float[](a[0], a[1], a[2], a[3]); } void main() { g4 = foo(g5); if (float[4](1.0, 2.0, 3.0, 4.0) == g4) ; float u[5]; foo(u); colorOut = vec2(g4.length(), g5.length()); } glslang-16.0.0/Test/web.basic.vert000066400000000000000000000004251506534232700167130ustar00rootroot00000000000000#version 310 es layout(location = 2) in vec4 inv4; layout(location = 1) out vec4 outv4; layout(binding = 3) uniform uBlock { vec4 a; ivec4 b; uvec4 c; } uInst; void main() { outv4 = normalize(inv4) * uInst.a * vec4(uInst.b) * vec4(uInst.c); } glslang-16.0.0/Test/web.builtins.frag000066400000000000000000000027021506534232700174220ustar00rootroot00000000000000#version 310 es precision lowp float; layout(location = 4) in float c1D; layout(location = 5) in vec2 c2D; layout(location = 6) in vec3 c3D; layout(location = 7) in smooth vec4 c4D; layout(location = 1) flat in int ic1D; layout(location = 2) flat in ivec3 ic3D; layout(location = 3) flat in ivec4 ic4D; const ivec2 ic2D = ivec2(2, 3); struct s { int i; sampler2D s; }; struct S2 { vec3 c; float f; }; layout(location = 8) in S2 s2; layout(location = 0) out vec3 sc; layout(location = 1) out float sf; void main() { float f = gl_FragCoord.y; gl_FragDepth = f; sc = s2.c; sf = s2.f; sinh(c1D) + cosh(c1D) * tanh(c2D); asinh(c4D) + acosh(c4D); atanh(c3D); } void foo324(void) { float p = pow(3.2, 4.6); p += sin(0.4); p += distance(vec2(10.0, 11.0), vec2(13.0, 15.0)); // 5 p += dot(vec3(2,3,5), vec3(-2,-1,4)); // 13 vec3 c3 = cross(vec3(3,-3,1), vec3(4,9,2)); // (-15, -2, 39) c3 += faceforward(vec3(1,2,3), vec3(2,3,5), vec3(-2,-1,4)); // (-1,-2,-3) c3 += faceforward(vec3(1,2,3), vec3(-2,-3,-5), vec3(-2,-1,4)); // (1,2,3) vec2 c2 = reflect(vec2(1,3), vec2(0,1)); // (1,-3) c2 += refract(vec2(1,3), vec2(0,1), 1.0); // (1,-3) c2 += refract(vec2(1,3), vec2(0,1), 3.0); c2 += refract(vec2(1,0.1), vec2(0,1), 5.0); // (0,0) mat3x2 m32 = outerProduct(vec2(2,3), vec3(5,7,11));// rows: (10, 14, 22), (15, 21, 33) } glslang-16.0.0/Test/web.builtins.vert000066400000000000000000000004061506534232700174620ustar00rootroot00000000000000#version 310 es layout(location = 0) in mediump float ps; invariant gl_Position; void main() { gl_Position = vec4(ps); gl_Position *= float(4 - gl_VertexIndex); gl_PointSize = ps; gl_PointSize *= float(5 - gl_InstanceIndex); } glslang-16.0.0/Test/web.comp000066400000000000000000000023601506534232700156110ustar00rootroot00000000000000#version 310 es layout(local_size_x_id = 18, local_size_z_id = 19) in; layout(local_size_x = 2) in; layout(local_size_y = 5) in; layout(local_size_z = 7) in; const int total = gl_MaxComputeWorkGroupCount.x + gl_MaxComputeWorkGroupCount.y + gl_MaxComputeWorkGroupCount.z + gl_MaxComputeUniformComponents + gl_MaxComputeTextureImageUnits; shared vec4 s[total]; int arrX[gl_WorkGroupSize.x]; int arrY[gl_WorkGroupSize.y]; int arrZ[gl_WorkGroupSize.z]; layout(binding = 0, set = 0) buffer bName { int size; uvec3 count; vec4 data[]; } bInst; void main() { barrier(); bInst.data[bInst.size / 2] *= vec4(7.0); memoryBarrier(); groupMemoryBarrier(); memoryBarrierShared(); memoryBarrierBuffer(); s[3] = vec4(0, arrX[0], arrY[0], arrZ[0]); bInst.count = gl_NumWorkGroups + gl_WorkGroupSize + gl_WorkGroupID + gl_LocalInvocationID + gl_GlobalInvocationID * gl_LocalInvocationIndex; atomicAdd(bInst.size, 2); atomicMin(bInst.size, 2); atomicMax(bInst.size, 2); atomicAnd(bInst.size, 2); atomicOr(bInst.size, 2); atomicXor(bInst.size, 2); atomicExchange(bInst.size, 2); atomicCompSwap(bInst.size, 5, 2); } glslang-16.0.0/Test/web.controlFlow.frag000066400000000000000000000027641506534232700201110ustar00rootroot00000000000000#version 310 es precision mediump float; precision highp int; int c, d; layout(location = 0) in highp float x; layout(location = 1) in vec4 bigColor; layout(location = 2) in vec4 BaseColor; layout(location = 3) in float f; layout(location = 4) flat in int Count; layout(location = 5) flat in uvec4 v4; layout(location = 0) out vec4 outColor; void main() { float f; int a[2]; switch(c) { } switch (c) { // a no-error normal switch case 1: f = sin(x); break; case 2: switch (d) { case 1: f = x * x * x; break; case 2: f = x * x; break; } break; default: f = tan(x); } vec4 color = BaseColor; for (int i = 0; i < Count; ++i) { color += bigColor; } outColor = color; float sum = 0.0; for (int i = 0; i < 4; ++i) sum += float(v4[i]); vec4 tv4; for (int i = 0; i < 4; ++i) tv4[i] = float(v4[i] * 4u); outColor += vec4(sum) + tv4; vec4 r; r.xyz = BaseColor.xyz; for (int i = 0; i < Count; ++i) r.w = f; outColor.xyz += r.xyz; for (int i = 0; i < 16; i += 4) outColor *= f; int i = 0; int A, B, C, D; while (i<10) { A = 1; if (i%2 == 0) { B = 2; continue; C = 2; } if (i%5 == 0) { B = 2; break; C = 2; } i++; } D = 3; } glslang-16.0.0/Test/web.operations.frag000066400000000000000000000015211506534232700177520ustar00rootroot00000000000000#version 310 es precision highp float; layout(binding = 0) uniform block { mediump float f; } instanceName; struct S { int i; } s; float a[5]; void main() { bool b; float f; int i; uint u; bvec3 b3; vec3 v3; ivec3 iv3; uvec3 uv3; vec4 v4; ivec4 iv4; uvec4 uv4; mat2 m2; mat4 m4; f * v4; u + u; uv4 / u; iv3 -= iv3; i %= 3; uv3 % 4u; --m2; iv4++; m4 != m4; m2 == m2; i <= i; a == a; s != s; b && b; b || b; b ^^ b; !b, uv3; ~i; ~u; ~uv3; ~iv3; uv3 <<= i; i >> i; u << u; iv3 >> iv3; i & i; u | u; iv3 ^ iv3; u & uv3; uv3 | u; uv3 &= u; int arr[0x222 & 0xf]; arr[1]; // size 2 int arr2[(uvec2(0, 0x2) | 0x1u).y]; arr2[2]; // size 3 } glslang-16.0.0/Test/web.runtests000077500000000000000000000013131506534232700165420ustar00rootroot00000000000000#!/usr/bin/env bash TESTLIST=web.testlist TARGETDIR=localResults BASEDIR=baseResults EXE=../build/install/bin/glslang.exe HASERROR=0 mkdir -p $TARGETDIR if [ -a $TESTLIST ] then while read t; do echo Running $t... b=`basename $t` $EXE -V -o webtest.spv $t spirv-dis webtest.spv > $TARGETDIR/$b.out rm -f webtest.spv diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1 done < $TESTLIST else echo $TESTLIST is missing fi wc --bytes $EXE > $TARGETDIR/size echo "base size was" `cat $BASEDIR/size` echo "new size is" `cat $TARGETDIR/size` # # Final checking # if [ $HASERROR -eq 0 ] then echo Tests Succeeded. else echo Tests Failed. fi exit $HASERROR glslang-16.0.0/Test/web.separate.frag000066400000000000000000000043721506534232700174020ustar00rootroot00000000000000#version 310 es precision highp sampler; precision highp samplerShadow; precision highp texture2DArray; precision highp itexture2D; precision highp itexture3D; precision highp itextureCube; precision highp itexture2DArray; precision highp utexture2D; precision highp utexture3D; precision highp utextureCube; precision highp utexture2DArray; precision highp texture3D; precision highp float; layout(binding = 0) uniform sampler s; layout(binding = 1) uniform samplerShadow sShadow; layout(binding = 2) uniform sampler sA[4]; layout(binding = 3) uniform texture2D t2d; layout(binding = 4) uniform texture3D t3d[4]; layout(location = 0) flat in int i; layout(location = 0) out vec4 color; void main() { color = texture(sampler2D(t2d, s), vec2(0.5)); color += texture(sampler3D(t3d[1], sA[2]), vec3(0.5)); color += texture(sampler2D(t2d, s), vec2(0.5)); } layout(binding = 5) uniform texture2D tex2D; layout(binding = 6) uniform textureCube texCube; layout(binding = 15) uniform texture2DArray tex2DArray; layout(binding = 16) uniform itexture2D itex2D; layout(binding = 17) uniform itexture3D itex3D; layout(binding = 18) uniform itextureCube itexCube; layout(binding = 19) uniform itexture2DArray itex2DArray; layout(binding = 20) uniform utexture2D utex2D; layout(binding = 21) uniform utexture3D utex3D; layout(binding = 22) uniform utextureCube utexCube; layout(binding = 23) uniform utexture2DArray utex2DArray; layout(binding = 36) uniform texture3D tex3D; void foo() { sampler2D (tex2D, s); samplerCube (texCube, s); samplerCubeShadow (texCube, sShadow); sampler2DArray (tex2DArray, s); sampler2DArrayShadow (tex2DArray, sShadow); isampler2D (itex2D, s); isampler3D (itex3D, s); isamplerCube (itexCube, s); isampler2DArray (itex2DArray, s); usampler2D (utex2D, s); usampler3D (utex3D, s); usamplerCube (utexCube, s); usampler2DArray (utex2DArray, s); sampler3D (tex3D, s); sampler2DShadow (tex2D, sShadow); } glslang-16.0.0/Test/web.testlist000066400000000000000000000002271506534232700165260ustar00rootroot00000000000000web.builtins.vert web.builtins.frag web.basic.vert web.controlFlow.frag web.operations.frag web.texture.frag web.array.frag web.separate.frag web.comp glslang-16.0.0/Test/web.texture.frag000066400000000000000000000044051506534232700172730ustar00rootroot00000000000000#version 310 es layout(binding = 1) uniform sampler2D s2D; layout(binding = 2) uniform lowp sampler3D s3D; layout(binding = 3) uniform samplerCube sCube; layout(binding = 4) uniform lowp samplerCubeShadow sCubeShadow; layout(binding = 5) uniform lowp sampler2DShadow s2DShadow; layout(binding = 6) uniform lowp sampler2DArray s2DArray; layout(binding = 7) uniform lowp sampler2DArrayShadow s2DArrayShadow; layout(binding = 8) uniform lowp isampler2D is2D; layout(binding = 9) uniform lowp isampler3D is3D; layout(binding = 10) uniform lowp isamplerCube isCube; layout(binding = 11) uniform lowp isampler2DArray is2DArray; layout(binding = 12) uniform lowp usampler2D us2D; layout(binding = 13) uniform lowp usampler3D us3D; layout(binding = 14) uniform lowp usamplerCube usCube; layout(binding = 15) uniform lowp usampler2DArray us2DArray; precision lowp float; layout(location = 4) in float c1D; layout(location = 5) in vec2 c2D; layout(location = 6) in vec3 c3D; layout(location = 7) in smooth vec4 c4D; layout(location = 1) flat in int ic1D; layout(location = 2) flat in ivec3 ic3D; layout(location = 3) flat in ivec4 ic4D; const ivec2 ic2D = ivec2(2, 3); struct s { int i; sampler2D s; }; struct S2 { vec3 c; float f; }; layout(location = 8) in S2 s2; layout(location = 0) out vec3 sc; layout(location = 1) out float sf; layout(binding = 0) uniform sampler2D arrayedSampler[5]; void main() { float f; vec4 v; v = texture(s2D, c2D); v = textureProj(s3D, c4D); v = textureLod(s2DArray, c3D, 1.2); v = texelFetch(s3D, ic3D, ic1D); f = textureLodOffset(s2DShadow, c3D, c1D, ic2D); v = textureProjLodOffset(s2D, c3D, c1D, ic2D); v = textureGrad(sCube, c3D, c3D, c3D); f = textureGradOffset(s2DArrayShadow, c4D, c2D, c2D, ic2D); v = textureProjGrad(s3D, c4D, c3D, c3D); v = textureProjGradOffset(s2D, c3D, c2D, c2D, ic2D); ivec4 iv; iv = texture(is2D, c2D); iv = textureProjOffset(is2D, c4D, ic2D); iv = textureProjLod(is2D, c3D, c1D); iv = textureProjGrad(is2D, c3D, c2D, c2D); iv = texture(is3D, c3D, 4.2); iv = textureLod(isCube, c3D, c1D); iv = texelFetch(is2DArray, ic3D, ic1D); iv.xy = textureSize(sCubeShadow, 2); } void foo23() { textureOffset(s2DShadow, c3D, ivec2(-8, 7), c1D); } glslang-16.0.0/Test/whileLoop.frag000066400000000000000000000003421506534232700167550ustar00rootroot00000000000000#version 110 uniform vec4 bigColor; varying vec4 BaseColor; uniform float d; void main() { vec4 color = BaseColor; while (color.x < d) { color += bigColor; } gl_FragColor = color; } glslang-16.0.0/Test/xfbUnsizedArray.error.tese000066400000000000000000000002651506534232700213100ustar00rootroot00000000000000#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() { } glslang-16.0.0/Test/xfbUnsizedArray.error.vert000066400000000000000000000004741506534232700213320ustar00rootroot00000000000000#version 430 core #extension GL_ARB_enhanced_layouts : require layout (xfb_offset = 0) out vec4 xfb_buffer[]; // ERROR: unsized array cannot be used for an xfb buffer? in vec4 in_vs; out vec4 out_vs; void main() { vec4 result = in_vs; xfb_buffer[0] = result / 2; out_vs = result; } glslang-16.0.0/_config.yml000066400000000000000000000000331506534232700153570ustar00rootroot00000000000000theme: jekyll-theme-merlot glslang-16.0.0/build_info.h.tmpl000066400000000000000000000055501506534232700164770ustar00rootroot00000000000000// Copyright (C) 2020 The Khronos Group Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of The Khronos Group Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #ifndef GLSLANG_BUILD_INFO #define GLSLANG_BUILD_INFO #define GLSLANG_VERSION_MAJOR @major@ #define GLSLANG_VERSION_MINOR @minor@ #define GLSLANG_VERSION_PATCH @patch@ #define GLSLANG_VERSION_FLAVOR "@flavor@" #define GLSLANG_VERSION_GREATER_THAN(major, minor, 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) \ ((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) \ ((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) \ ((GLSLANG_VERSION_MAJOR) < (major) || ((major) == GLSLANG_VERSION_MAJOR && \ ((GLSLANG_VERSION_MINOR) < (minor) || ((minor) == GLSLANG_VERSION_MINOR && \ (GLSLANG_VERSION_PATCH <= (patch)))))) #endif // GLSLANG_BUILD_INFO glslang-16.0.0/build_info.py000077500000000000000000000177601506534232700157360ustar00rootroot00000000000000#!/usr/bin/env python3 # Copyright (c) 2020 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import datetime import errno import os import os.path import re import subprocess import sys import time usage = """{} emits a string to stdout or file with project version information. args: [] [-i ] [-o ] Either or -i needs to be provided. The tool will output the provided string or file content with the following tokens substituted: - The major version point parsed from the CHANGES.md file. - The minor version point parsed from the CHANGES.md file. - The point version point parsed from the CHANGES.md file. - The optional dash suffix parsed from the CHANGES.md file (excluding dash prefix). <-flavor> - The optional dash suffix parsed from the CHANGES.md file (including dash prefix). - The optional date of the release in the form YYYY-MM-DD - The git commit information for the directory taken from "git describe" if that succeeds, or "git rev-parse HEAD" if that succeeds, or otherwise a message containing the phrase "unknown hash". -o is an optional flag for writing the output string to the given file. If ommitted then the string is printed to stdout. """ try: utc = datetime.timezone.utc except AttributeError: # Python 2? In datetime.date.today().year? Yes. class UTC(datetime.tzinfo): ZERO = datetime.timedelta(0) def utcoffset(self, dt): return self.ZERO def tzname(self, dt): return "UTC" def dst(self, dt): return self.ZERO utc = UTC() def mkdir_p(directory): """Make the directory, and all its ancestors as required. Any of the directories are allowed to already exist.""" if directory == "": # We're being asked to make the current directory. return try: os.makedirs(directory) except OSError as e: if e.errno == errno.EEXIST and os.path.isdir(directory): pass else: raise def command_output(cmd, directory): """Runs a command in a directory and returns its standard output stream. Captures the standard error stream. Raises a RuntimeError if the command fails to launch or otherwise fails. """ p = subprocess.Popen(cmd, cwd=directory, stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, _) = p.communicate() if p.returncode != 0: raise RuntimeError('Failed to run %s in %s' % (cmd, directory)) return stdout def deduce_software_version(directory): """Returns a software version number parsed from the CHANGES.md file in the given directory. The CHANGES.md file describes most recent versions first. """ # Match the first well-formed version-and-date line. # Allow trailing whitespace in the checked-out source code has # unexpected carriage returns on a linefeed-only system such as # Linux. pattern = re.compile(r'^#* +(\d+)\.(\d+)\.(\d+)(-\w+)? (\d\d\d\d-\d\d-\d\d)? *$') changes_file = os.path.join(directory, 'CHANGES.md') with open(changes_file, mode='r') as f: for line in f.readlines(): match = pattern.match(line) if match: flavor = match.group(4) if flavor == None: flavor = "" return { "major": match.group(1), "minor": match.group(2), "patch": match.group(3), "flavor": flavor.lstrip("-"), "-flavor": flavor, "date": match.group(5), } raise Exception('No version number found in {}'.format(changes_file)) def describe(directory): """Returns a string describing the current Git HEAD version as descriptively as possible. Runs 'git describe', or alternately 'git rev-parse HEAD', in directory. If successful, returns the output; otherwise returns 'unknown hash, '.""" try: # decode() is needed here for Python3 compatibility. In Python2, # str and bytes are the same type, but not in Python3. # Popen.communicate() returns a bytes instance, which needs to be # decoded into text data first in Python3. And this decode() won't # hurt Python2. return command_output(['git', 'describe'], directory).rstrip().decode() except: try: return command_output( ['git', 'rev-parse', 'HEAD'], directory).rstrip().decode() except: # This is the fallback case where git gives us no information, # e.g. because the source tree might not be in a git tree. # In this case, usually use a timestamp. However, to ensure # reproducible builds, allow the builder to override the wall # clock time with environment variable SOURCE_DATE_EPOCH # containing a (presumably) fixed timestamp. timestamp = int(os.environ.get('SOURCE_DATE_EPOCH', time.time())) formatted = datetime.datetime.fromtimestamp(timestamp, utc).isoformat() return 'unknown hash, {}'.format(formatted) def parse_args(): directory = None input_string = None input_file = None output_file = None if len(sys.argv) < 2: raise Exception("Invalid number of arguments") directory = sys.argv[1] i = 2 if not sys.argv[i].startswith("-"): input_string = sys.argv[i] i = i + 1 while i < len(sys.argv): opt = sys.argv[i] i = i + 1 if opt == "-i" or opt == "-o": if i == len(sys.argv): raise Exception("Expected path after {}".format(opt)) val = sys.argv[i] i = i + 1 if (opt == "-i"): input_file = val elif (opt == "-o"): output_file = val else: raise Exception("Unknown flag {}".format(opt)) return { "directory": directory, "input_string": input_string, "input_file": input_file, "output_file": output_file, } def main(): args = None try: args = parse_args() except Exception as e: print(e) print("\nUsage:\n") print(usage.format(sys.argv[0])) sys.exit(1) directory = args["directory"] template = args["input_string"] if template == None: with open(args["input_file"], 'r') as f: template = f.read() output_file = args["output_file"] software_version = deduce_software_version(directory) commit = describe(directory) output = template \ .replace("@major@", software_version["major"]) \ .replace("@minor@", software_version["minor"]) \ .replace("@patch@", software_version["patch"]) \ .replace("@flavor@", software_version["flavor"]) \ .replace("@-flavor@", software_version["-flavor"]) \ .replace("@date@", software_version["date"]) \ .replace("@commit@", commit) if output_file is None: print(output) else: mkdir_p(os.path.dirname(output_file)) if os.path.isfile(output_file): with open(output_file, 'r') as f: if output == f.read(): return with open(output_file, 'w') as f: f.write(output) if __name__ == '__main__': main() glslang-16.0.0/build_overrides/000077500000000000000000000000001506534232700164155ustar00rootroot00000000000000glslang-16.0.0/build_overrides/build.gni000066400000000000000000000033071506534232700202160ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. declare_args() { build_with_chromium = false linux_use_bundled_binutils_override = true ignore_elf32_limitations = true use_system_xcode = true } glslang-16.0.0/build_overrides/glslang.gni000066400000000000000000000032651506534232700205510ustar00rootroot00000000000000# Copyright (C) 2018 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # These are variables that are overridable by projects that include glslang. # The path to glslang dependencies. glslang_spirv_tools_dir = "//External/spirv-tools" glslang-16.0.0/build_overrides/spirv_tools.gni000066400000000000000000000033321506534232700215000ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # We are building inside glslang spirv_tools_standalone = false # Paths to SPIRV-Tools dependencies spirv_tools_spirv_headers_dir = "//External/spirv-tools/external/spirv-headers" glslang-16.0.0/gen_extension_headers.py000077500000000000000000000071001506534232700201470ustar00rootroot00000000000000#!/usr/bin/env python3 # Copyright (c) 2020 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import glob import sys import os def generate_main(glsl_files, output_header_file): # Write commit ID to output header file with open(output_header_file, "w") as header_file: # Copyright Notice header_string = '/***************************************************************************\n' header_string += ' *\n' header_string += ' * Copyright (c) 2015-2021 The Khronos Group Inc.\n' header_string += ' * Copyright (c) 2015-2021 Valve Corporation\n' header_string += ' * Copyright (c) 2015-2021 LunarG, Inc.\n' header_string += ' * Copyright (c) 2015-2021 Google Inc.\n' header_string += ' * Copyright (c) 2021 Advanced Micro Devices, Inc.All rights reserved.\n' header_string += ' *\n' header_string += ' ****************************************************************************/\n' header_string += '#pragma once\n\n' header_string += '#ifndef _INTRINSIC_EXTENSION_HEADER_H_\n' header_string += '#define _INTRINSIC_EXTENSION_HEADER_H_\n\n' header_file.write(header_string) symbol_name_list = [] for i in glsl_files: glsl_contents = open(i,"r").read() filename = os.path.basename(i) symbol_name = filename.split(".")[0] symbol_name_list.append(symbol_name) header_name = symbol_name + ".h" header_str = 'std::string %s_GLSL = R"(\n%s\n)";\n' % (symbol_name, glsl_contents) header_str += '\n' header_file.write(header_str) contents = '' contents += '\n' contents += 'std::string getIntrinsic(const char* const* shaders, int n) {\n' contents += '\tstd::string shaderString = "";\n'; contents += '\tfor (int i = 0; i < n; i++) {\n' for symbol_name in symbol_name_list: contents += '\t\tif (strstr(shaders[i], "%s") != nullptr) {\n' % (symbol_name) contents += '\t\t shaderString.append(%s_GLSL);\n' % (symbol_name) contents += '\t\t}\n' contents += '\t}\n' contents += '\treturn shaderString;\n'; contents += '}\n' contents += '\n#endif\n' header_file.write(contents) def main(): if len(sys.argv) < 2: raise Exception("Invalid number of arguments") i = 0 while i < len(sys.argv): opt = sys.argv[i] i = i + 1 if opt == "-i" or opt == "-o": if i == len(sys.argv): raise Exception("Expected path after {}".format(opt)) val = sys.argv[i] i = i + 1 if (opt == "-i"): input_dir = val elif (opt == "-o"): output_file = val else: raise Exception("Unknown flag {}".format(opt)) glsl_files = glob.glob(input_dir + '/*.glsl') # Generate main header generate_main(glsl_files, output_file) if __name__ == '__main__': main() glslang-16.0.0/glslang/000077500000000000000000000000001506534232700146635ustar00rootroot00000000000000glslang-16.0.0/glslang/CInterface/000077500000000000000000000000001506534232700166665ustar00rootroot00000000000000glslang-16.0.0/glslang/CInterface/glslang_c_interface.cpp000066400000000000000000000470351506534232700233540ustar00rootroot00000000000000/** This code is based on the glslang_c_interface implementation by Viktor Latypov **/ /** BSD 2-Clause License Copyright (c) 2019, Viktor Latypov All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **/ #include "glslang/Include/glslang_c_interface.h" #include "StandAlone/DirStackFileIncluder.h" #include "glslang/Public/ResourceLimits.h" #include "glslang/Public/ShaderLang.h" #include "glslang/Include/ShHandle.h" #include "glslang/Include/BaseTypes.h" #include "glslang/Include/ResourceLimits.h" #include "glslang/Include/Types.h" #include "glslang/MachineIndependent/iomapper.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, ""); static_assert(int(GLSLANG_SOURCE_COUNT) == glslang::EShSourceCount, ""); static_assert(int(GLSLANG_CLIENT_COUNT) == glslang::EShClientCount, ""); static_assert(int(GLSLANG_TARGET_COUNT) == glslang::EShTargetCount, ""); static_assert(int(GLSLANG_TARGET_CLIENT_VERSION_COUNT) == glslang::EShTargetClientVersionCount, ""); static_assert(int(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT) == glslang::EShTargetLanguageVersionCount, ""); static_assert(int(GLSLANG_OPT_LEVEL_COUNT) == EshOptLevelCount, ""); static_assert(int(GLSLANG_TEX_SAMP_TRANS_COUNT) == EShTexSampTransCount, ""); static_assert(int(GLSLANG_MSG_COUNT) == EShMsgCount, ""); static_assert(int(GLSLANG_REFLECTION_COUNT) == EShReflectionCount, ""); static_assert(int(GLSLANG_PROFILE_COUNT) == EProfileCount, ""); static_assert(sizeof(glslang_limits_t) == sizeof(TLimits), ""); static_assert(sizeof(glslang_resource_t) == sizeof(TBuiltInResource), ""); static_assert(sizeof(glslang_version_t) == sizeof(glslang::Version), ""); typedef struct glslang_shader_s { glslang::TShader* shader; std::string preprocessedGLSL; std::vector baseResourceSetBinding; } glslang_shader_t; typedef struct glslang_program_s { glslang::TProgram* program; std::vector spirv; std::string loggerMessages; } glslang_program_t; /* Wrapper/Adapter for C glsl_include_callbacks_t functions This class contains a 'glsl_include_callbacks_t' structure with C include_local/include_system callback pointers. This class implement TShader::Includer interface by redirecting C++ virtual methods to C callbacks. The 'IncludeResult' instances produced by this Includer contain a reference to glsl_include_result_t C structure to allow its lifetime management by another C callback (CallbackIncluder::callbacks::free_include_result) */ class CallbackIncluder : public glslang::TShader::Includer { public: CallbackIncluder(glsl_include_callbacks_t _callbacks, void* _context) : callbacks(_callbacks), context(_context) {} virtual ~CallbackIncluder() {} virtual IncludeResult* includeSystem(const char* headerName, const char* includerName, size_t inclusionDepth) override { if (this->callbacks.include_system) { glsl_include_result_t* result = this->callbacks.include_system(this->context, headerName, includerName, inclusionDepth); return makeIncludeResult(result); } return glslang::TShader::Includer::includeSystem(headerName, includerName, inclusionDepth); } virtual IncludeResult* includeLocal(const char* headerName, const char* includerName, size_t inclusionDepth) override { if (this->callbacks.include_local) { glsl_include_result_t* result = this->callbacks.include_local(this->context, headerName, includerName, inclusionDepth); return makeIncludeResult(result); } return glslang::TShader::Includer::includeLocal(headerName, includerName, inclusionDepth); } /* This function only calls free_include_result callback when the IncludeResult instance is allocated by a C function */ virtual void releaseInclude(IncludeResult* result) override { if (result == nullptr) return; if (this->callbacks.free_include_result) { this->callbacks.free_include_result(this->context, static_cast(result->userData)); } delete result; } private: CallbackIncluder() {} IncludeResult* makeIncludeResult(glsl_include_result_t* result) { if (!result) { return nullptr; } return new glslang::TShader::Includer::IncludeResult( std::string(result->header_name), result->header_data, result->header_length, result); } /* C callback pointers */ glsl_include_callbacks_t callbacks; /* User-defined context */ void* context; }; GLSLANG_EXPORT void glslang_get_version(glslang_version_t* version) { *reinterpret_cast(version) = glslang::GetVersion(); } GLSLANG_EXPORT int glslang_initialize_process() { return static_cast(glslang::InitializeProcess()); } GLSLANG_EXPORT void glslang_finalize_process() { glslang::FinalizeProcess(); } static EShLanguage c_shader_stage(glslang_stage_t stage) { switch (stage) { case GLSLANG_STAGE_VERTEX: return EShLangVertex; case GLSLANG_STAGE_TESSCONTROL: return EShLangTessControl; case GLSLANG_STAGE_TESSEVALUATION: return EShLangTessEvaluation; case GLSLANG_STAGE_GEOMETRY: return EShLangGeometry; case GLSLANG_STAGE_FRAGMENT: return EShLangFragment; case GLSLANG_STAGE_COMPUTE: return EShLangCompute; case GLSLANG_STAGE_RAYGEN_NV: return EShLangRayGen; case GLSLANG_STAGE_INTERSECT_NV: return EShLangIntersect; case GLSLANG_STAGE_ANYHIT_NV: return EShLangAnyHit; case GLSLANG_STAGE_CLOSESTHIT_NV: return EShLangClosestHit; case GLSLANG_STAGE_MISS_NV: return EShLangMiss; case GLSLANG_STAGE_CALLABLE_NV: return EShLangCallable; case GLSLANG_STAGE_TASK: return EShLangTask; case GLSLANG_STAGE_MESH: return EShLangMesh; default: break; } return EShLangCount; } static int c_shader_messages(glslang_messages_t messages) { #define CONVERT_MSG(in, out) \ if ((messages & in) == in) \ res |= out; int res = 0; CONVERT_MSG(GLSLANG_MSG_RELAXED_ERRORS_BIT, EShMsgRelaxedErrors); CONVERT_MSG(GLSLANG_MSG_SUPPRESS_WARNINGS_BIT, EShMsgSuppressWarnings); CONVERT_MSG(GLSLANG_MSG_AST_BIT, EShMsgAST); CONVERT_MSG(GLSLANG_MSG_SPV_RULES_BIT, EShMsgSpvRules); CONVERT_MSG(GLSLANG_MSG_VULKAN_RULES_BIT, EShMsgVulkanRules); CONVERT_MSG(GLSLANG_MSG_ONLY_PREPROCESSOR_BIT, EShMsgOnlyPreprocessor); CONVERT_MSG(GLSLANG_MSG_READ_HLSL_BIT, EShMsgReadHlsl); CONVERT_MSG(GLSLANG_MSG_CASCADING_ERRORS_BIT, EShMsgCascadingErrors); CONVERT_MSG(GLSLANG_MSG_KEEP_UNCALLED_BIT, EShMsgKeepUncalled); CONVERT_MSG(GLSLANG_MSG_HLSL_OFFSETS_BIT, EShMsgHlslOffsets); CONVERT_MSG(GLSLANG_MSG_DEBUG_INFO_BIT, EShMsgDebugInfo); CONVERT_MSG(GLSLANG_MSG_HLSL_ENABLE_16BIT_TYPES_BIT, EShMsgHlslEnable16BitTypes); CONVERT_MSG(GLSLANG_MSG_HLSL_LEGALIZATION_BIT, EShMsgHlslLegalization); CONVERT_MSG(GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT, EShMsgHlslDX9Compatible); CONVERT_MSG(GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT, EShMsgBuiltinSymbolTable); CONVERT_MSG(GLSLANG_MSG_ENHANCED, EShMsgEnhanced); CONVERT_MSG(GLSLANG_MSG_ABSOLUTE_PATH, EShMsgAbsolutePath); CONVERT_MSG(GLSLANG_MSG_DISPLAY_ERROR_COLUMN, EShMsgDisplayErrorColumn); return res; #undef CONVERT_MSG } static glslang::EShTargetLanguageVersion c_shader_target_language_version(glslang_target_language_version_t target_language_version) { switch (target_language_version) { case GLSLANG_TARGET_SPV_1_0: return glslang::EShTargetSpv_1_0; case GLSLANG_TARGET_SPV_1_1: return glslang::EShTargetSpv_1_1; case GLSLANG_TARGET_SPV_1_2: return glslang::EShTargetSpv_1_2; case GLSLANG_TARGET_SPV_1_3: return glslang::EShTargetSpv_1_3; case GLSLANG_TARGET_SPV_1_4: return glslang::EShTargetSpv_1_4; case GLSLANG_TARGET_SPV_1_5: return glslang::EShTargetSpv_1_5; case GLSLANG_TARGET_SPV_1_6: return glslang::EShTargetSpv_1_6; default: break; } return glslang::EShTargetSpv_1_0; } static glslang::EShClient c_shader_client(glslang_client_t client) { switch (client) { case GLSLANG_CLIENT_VULKAN: return glslang::EShClientVulkan; case GLSLANG_CLIENT_OPENGL: return glslang::EShClientOpenGL; default: break; } return glslang::EShClientNone; } static glslang::EShTargetClientVersion c_shader_client_version(glslang_target_client_version_t client_version) { switch (client_version) { case GLSLANG_TARGET_VULKAN_1_1: return glslang::EShTargetVulkan_1_1; case GLSLANG_TARGET_VULKAN_1_2: return glslang::EShTargetVulkan_1_2; case GLSLANG_TARGET_VULKAN_1_3: return glslang::EShTargetVulkan_1_3; case GLSLANG_TARGET_VULKAN_1_4: return glslang::EShTargetVulkan_1_4; case GLSLANG_TARGET_OPENGL_450: return glslang::EShTargetOpenGL_450; default: break; } return glslang::EShTargetVulkan_1_0; } static glslang::EShTargetLanguage c_shader_target_language(glslang_target_language_t target_language) { if (target_language == GLSLANG_TARGET_NONE) return glslang::EShTargetNone; return glslang::EShTargetSpv; } static glslang::EShSource c_shader_source(glslang_source_t source) { switch (source) { case GLSLANG_SOURCE_GLSL: return glslang::EShSourceGlsl; case GLSLANG_SOURCE_HLSL: return glslang::EShSourceHlsl; default: break; } return glslang::EShSourceNone; } static EProfile c_shader_profile(glslang_profile_t profile) { switch (profile) { case GLSLANG_BAD_PROFILE: return EBadProfile; case GLSLANG_NO_PROFILE: return ENoProfile; case GLSLANG_CORE_PROFILE: return ECoreProfile; case GLSLANG_COMPATIBILITY_PROFILE: return ECompatibilityProfile; case GLSLANG_ES_PROFILE: return EEsProfile; case GLSLANG_PROFILE_COUNT: // Should not use this break; } return EProfile(); } GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input) { if (!input || !input->code) { printf("Error creating shader: null input(%p)/input->code\n", (void*)input); if (input) printf("input->code = %p\n", input->code); return nullptr; } glslang_shader_t* shader = new glslang_shader_t(); shader->shader = new glslang::TShader(c_shader_stage(input->stage)); shader->shader->setStrings(&input->code, 1); shader->shader->setEnvInput(c_shader_source(input->language), c_shader_stage(input->stage), c_shader_client(input->client), input->default_version); shader->shader->setEnvClient(c_shader_client(input->client), c_shader_client_version(input->client_version)); shader->shader->setEnvTarget(c_shader_target_language(input->target_language), c_shader_target_language_version(input->target_language_version)); return shader; } GLSLANG_EXPORT void glslang_shader_set_preamble(glslang_shader_t* shader, const char* s) { shader->shader->setPreamble(s); } GLSLANG_EXPORT void glslang_shader_set_entry_point(glslang_shader_t* shader, const char* s) { shader->shader->setEntryPoint(s); } GLSLANG_EXPORT void glslang_shader_set_invert_y(glslang_shader_t* shader, bool y) { shader->shader->setInvertY(y); } 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 void glslang_shader_set_default_uniform_block_set_and_binding(glslang_shader_t* shader, unsigned int set, unsigned int binding) { shader->shader->setGlobalUniformSet(set); shader->shader->setGlobalUniformBinding(binding); } GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_name(glslang_shader_t* shader, const char *name) { shader->shader->setGlobalUniformBlockName(name); } GLSLANG_EXPORT void glslang_shader_set_resource_set_binding(glslang_shader_t* shader, const char *const *bindings, unsigned int num_bindings) { shader->baseResourceSetBinding.clear(); for (unsigned int i = 0; i < num_bindings; ++i) { shader->baseResourceSetBinding.push_back(std::string(bindings[i])); } shader->shader->setResourceSetBinding(shader->baseResourceSetBinding); } GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) { return shader->preprocessedGLSL.c_str(); } GLSLANG_EXPORT void glslang_shader_set_preprocessed_code(glslang_shader_t* shader, const char* code) { shader->preprocessedGLSL.assign(code); } GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input) { DirStackFileIncluder dirStackFileIncluder; CallbackIncluder callbackIncluder(input->callbacks, input->callbacks_ctx); glslang::TShader::Includer& Includer = (input->callbacks.include_local||input->callbacks.include_system) ? static_cast(callbackIncluder) : static_cast(dirStackFileIncluder); return shader->shader->preprocess( reinterpret_cast(input->resource), input->default_version, c_shader_profile(input->default_profile), input->force_default_version_and_profile != 0, input->forward_compatible != 0, (EShMessages)c_shader_messages(input->messages), &shader->preprocessedGLSL, Includer ); } GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input) { const char* preprocessedCStr = shader->preprocessedGLSL.c_str(); shader->shader->setStrings(&preprocessedCStr, 1); return shader->shader->parse( reinterpret_cast(input->resource), input->default_version, input->forward_compatible != 0, (EShMessages)c_shader_messages(input->messages) ); } GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader) { return shader->shader->getInfoLog(); } GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader) { return shader->shader->getInfoDebugLog(); } GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader) { if (!shader) return; delete (shader->shader); delete (shader); } GLSLANG_EXPORT glslang_program_t* glslang_program_create() { glslang_program_t* p = new glslang_program_t(); p->program = new glslang::TProgram(); return p; } GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program) { if (!program) return; delete (program->program); delete (program); } GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader) { program->program->addShader(shader->shader); } GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages) { 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 int glslang_program_map_io_with_resolver_and_mapper(glslang_program_t* program, glslang_resolver_t* resolver, glslang_mapper_t* mapper) { return (int)program->program->mapIO(reinterpret_cast(resolver), reinterpret_cast(mapper)); } GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program) { return program->program->getInfoLog(); } GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program) { return program->program->getInfoDebugLog(); } GLSLANG_EXPORT glslang_mapper_t* glslang_glsl_mapper_create() { return reinterpret_cast(new glslang::TGlslIoMapper()); } GLSLANG_EXPORT void glslang_glsl_mapper_delete(glslang_mapper_t* mapper) { if (!mapper) return; delete reinterpret_cast(mapper); } GLSLANG_EXPORT glslang_resolver_t* glslang_glsl_resolver_create(glslang_program_t* program, glslang_stage_t stage) { glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); return reinterpret_cast(new glslang::TDefaultGlslIoResolver(reinterpret_cast(*intermediate))); } GLSLANG_EXPORT void glslang_glsl_resolver_delete(glslang_resolver_t* resolver) { if (!resolver) return; delete reinterpret_cast(resolver); } glslang-16.0.0/glslang/CMakeLists.txt000066400000000000000000000250421506534232700174260ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. if(WIN32) add_subdirectory(OSDependent/Windows) elseif(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia" OR ANDROID) add_subdirectory(OSDependent/Unix) else() message("unknown platform") endif() if(EMSCRIPTEN OR ENABLE_GLSLANG_JS) # May be enabled on non-Emscripten builds for binary-size testing. add_subdirectory(OSDependent/Web) endif() ################################################################################ # GenericCodeGen ################################################################################ set(GENERICCODEGEN_SOURCES GenericCodeGen/CodeGen.cpp GenericCodeGen/Link.cpp) add_library(GenericCodeGen STATIC stub.cpp) set_property(TARGET GenericCodeGen PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET GenericCodeGen PROPERTY FOLDER glslang) ################################################################################ # MachineIndependent ################################################################################ set(MACHINEINDEPENDENT_SOURCES MachineIndependent/glslang.y MachineIndependent/glslang_tab.cpp MachineIndependent/attribute.cpp MachineIndependent/Constant.cpp MachineIndependent/iomapper.cpp MachineIndependent/InfoSink.cpp MachineIndependent/Initialize.cpp MachineIndependent/IntermTraverse.cpp MachineIndependent/Intermediate.cpp MachineIndependent/ParseContextBase.cpp MachineIndependent/ParseHelper.cpp MachineIndependent/PoolAlloc.cpp MachineIndependent/RemoveTree.cpp MachineIndependent/Scan.cpp MachineIndependent/ShaderLang.cpp MachineIndependent/SpirvIntrinsics.cpp MachineIndependent/SymbolTable.cpp MachineIndependent/Versions.cpp MachineIndependent/intermOut.cpp MachineIndependent/limits.cpp MachineIndependent/linkValidate.cpp MachineIndependent/parseConst.cpp MachineIndependent/reflection.cpp MachineIndependent/preprocessor/Pp.cpp MachineIndependent/preprocessor/PpAtom.cpp MachineIndependent/preprocessor/PpContext.cpp MachineIndependent/preprocessor/PpScanner.cpp MachineIndependent/preprocessor/PpTokens.cpp MachineIndependent/propagateNoContraction.cpp ) set(MACHINEINDEPENDENT_HEADERS MachineIndependent/attribute.h MachineIndependent/glslang_tab.cpp.h MachineIndependent/gl_types.h MachineIndependent/Initialize.h MachineIndependent/iomapper.h MachineIndependent/LiveTraverser.h MachineIndependent/localintermediate.h MachineIndependent/ParseHelper.h MachineIndependent/reflection.h MachineIndependent/RemoveTree.h MachineIndependent/Scan.h MachineIndependent/ScanContext.h MachineIndependent/SymbolTable.h MachineIndependent/Versions.h MachineIndependent/parseVersions.h MachineIndependent/propagateNoContraction.h MachineIndependent/preprocessor/PpContext.h MachineIndependent/preprocessor/PpTokens.h ) if(ENABLE_HLSL) list(APPEND MACHINEINDEPENDENT_SOURCES HLSL/hlslAttributes.cpp HLSL/hlslParseHelper.cpp HLSL/hlslScanContext.cpp HLSL/hlslOpMap.cpp HLSL/hlslTokenStream.cpp HLSL/hlslGrammar.cpp HLSL/hlslParseables.cpp) list(APPEND MACHINEINDEPENDENT_HEADERS HLSL/hlslAttributes.h HLSL/hlslParseHelper.h HLSL/hlslTokens.h HLSL/hlslScanContext.h HLSL/hlslOpMap.h HLSL/hlslTokenStream.h HLSL/hlslGrammar.h HLSL/hlslParseables.h) endif() add_library(MachineIndependent STATIC stub.cpp) set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET MachineIndependent PROPERTY FOLDER glslang) target_link_libraries(MachineIndependent INTERFACE glslang) if (NOT MSVC) # -Wunused-but-set-variable is triggered in code generated by bison that we do not control. Turn this warning off, but only for the generated. set_source_files_properties(MachineIndependent/glslang_tab.cpp PROPERTIES COMPILE_FLAGS -Wno-unused-but-set-variable) endif() ################################################################################ # glslang ################################################################################ set(GLSLANG_SOURCES CInterface/glslang_c_interface.cpp) set(GLSLANG_HEADERS Public/ShaderLang.h Include/arrays.h Include/BaseTypes.h Include/Common.h Include/ConstantUnion.h Include/glslang_c_interface.h Include/glslang_c_shader_types.h Include/InfoSink.h Include/InitializeGlobals.h Include/intermediate.h Include/PoolAlloc.h Include/ResourceLimits.h Include/ShHandle.h Include/SpirvIntrinsics.h Include/Types.h Include/visibility.h) add_library(glslang ${LIB_TYPE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS} ${GENERICCODEGEN_SOURCES} ${GENERICCODEGEN_HEADERS} ${OSDEPENDENT_SOURCES} ${OSDEPENDENT_HEADERS} ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS} ${SPIRV_SOURCES} ${SPIRV_HEADERS}) add_library(glslang::glslang ALIAS glslang) set_target_properties(glslang PROPERTIES FOLDER glslang POSITION_INDEPENDENT_CODE ON VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}" COMPILE_DEFINITIONS "$<$,$>:GLSLANG_TEST_BUILD>") target_include_directories(glslang PUBLIC $ $) glslang_add_build_info_dependency(glslang) glslang_pch(glslang MachineIndependent/pch.h) glslang_only_export_explicit_symbols(glslang) if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(glslang PROPERTIES PREFIX "") endif() if(ENABLE_SPIRV) if(ENABLE_OPT) target_include_directories(glslang PUBLIC $) target_link_libraries(glslang SPIRV-Tools-opt) endif() endif() # Link pthread if(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia" OR ANDROID) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) target_link_libraries(glslang Threads::Threads) endif() ################################################################################ # ResourceLimits ################################################################################ set(RESOURCELIMITS_SOURCES ResourceLimits/ResourceLimits.cpp ResourceLimits/resource_limits_c.cpp ) set(RESOURCELIMITS_HEADERS Public/ResourceLimits.h Public/resource_limits_c.h ) add_library(glslang-default-resource-limits ${RESOURCELIMITS_SOURCES} ${RESOURCELIMITS_HEADERS}) add_library(glslang::glslang-default-resource-limits ALIAS glslang-default-resource-limits) set_target_properties(glslang-default-resource-limits PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}" FOLDER glslang POSITION_INDEPENDENT_CODE ON) target_include_directories(glslang-default-resource-limits PUBLIC $ $) glslang_only_export_explicit_symbols(glslang-default-resource-limits) ################################################################################ # source_groups ################################################################################ if(WIN32) source_group("OSDependent" REGULAR_EXPRESSION "OSDependent/[^/]*") source_group("OSDependent\\Windows" REGULAR_EXPRESSION "OSDependent/Windows/*") source_group("Public" REGULAR_EXPRESSION "Public/*") source_group("MachineIndependent" REGULAR_EXPRESSION "MachineIndependent/[^/]*") source_group("Include" REGULAR_EXPRESSION "Include/[^/]*") source_group("GenericCodeGen" REGULAR_EXPRESSION "GenericCodeGen/*") source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*") source_group("HLSL" REGULAR_EXPRESSION "HLSL/*") source_group("CInterface" REGULAR_EXPRESSION "CInterface/*") source_group("SPIRV" REGULAR_EXPRESSION "SPIRV/[^/]*") source_group("SPIRV\\CInterface" REGULAR_EXPRESSION "SPIRV/CInterface/*") endif() ################################################################################ # install ################################################################################ if(GLSLANG_ENABLE_INSTALL) install(TARGETS glslang EXPORT glslang-targets) if(NOT BUILD_SHARED_LIBS) install(TARGETS MachineIndependent EXPORT glslang-targets) install(TARGETS GenericCodeGen EXPORT glslang-targets) endif() set(PUBLIC_HEADERS Public/ResourceLimits.h Public/ShaderLang.h Public/resource_limits_c.h Include/glslang_c_interface.h Include/glslang_c_shader_types.h Include/ResourceLimits.h Include/visibility.h MachineIndependent/Versions.h) foreach(file ${PUBLIC_HEADERS}) get_filename_component(dir ${file} DIRECTORY) install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir}) endforeach() install(FILES ${GLSLANG_BUILD_INFO_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang) install(TARGETS glslang-default-resource-limits EXPORT glslang-targets) endif() glslang-16.0.0/glslang/ExtensionHeaders/000077500000000000000000000000001506534232700201335ustar00rootroot00000000000000glslang-16.0.0/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl000066400000000000000000000033511506534232700264250ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013-2016 LunarG, Inc. // Copyright (C) 2016-2020 Google, Inc. // Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // glslang-16.0.0/glslang/GenericCodeGen/000077500000000000000000000000001506534232700174645ustar00rootroot00000000000000glslang-16.0.0/glslang/GenericCodeGen/CodeGen.cpp000066400000000000000000000050571506534232700215030ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "../Include/Common.h" #include "../Include/ShHandle.h" #include "../MachineIndependent/Versions.h" // // Here is where real machine specific high-level data would be defined. // class TGenericCompiler : public TCompiler { public: TGenericCompiler(EShLanguage l) : TCompiler(l, infoSink) {} virtual bool compile(TIntermNode* root, int version = 0, EProfile profile = ENoProfile); TInfoSink infoSink; }; // // This function must be provided to create the actual // compile object used by higher level code. It returns // a subclass of TCompiler. // TCompiler* ConstructCompiler(EShLanguage language, int) { return new TGenericCompiler(language); } // // Delete the compiler made by ConstructCompiler // void DeleteCompiler(TCompiler* compiler) { delete compiler; } // // Generate code from the given parse tree // bool TGenericCompiler::compile(TIntermNode* /*root*/, int /*version*/, EProfile /*profile*/) { haveValidObjectCode = true; return haveValidObjectCode; } glslang-16.0.0/glslang/GenericCodeGen/Link.cpp000066400000000000000000000052761506534232700210770ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // The top level algorithms for linking multiple // shaders together. // #include "../Include/Common.h" #include "../Include/ShHandle.h" // // Actual link object, derived from the shader handle base classes. // class TGenericLinker : public TLinker { public: TGenericLinker(EShExecutable e) : TLinker(e, infoSink) {} bool link(TCompilerList&, TUniformMap*) { return true; } void getAttributeBindings(ShBindingTable const **) const { } TInfoSink infoSink; }; // // The internal view of a uniform/float object exchanged with the driver. // class TUniformLinkedMap : public TUniformMap { public: TUniformLinkedMap() { } virtual int getLocation(const char*) { return 0; } }; TShHandleBase* ConstructLinker(EShExecutable executable, int) { return new TGenericLinker(executable); } void DeleteLinker(TShHandleBase* linker) { delete linker; } TUniformMap* ConstructUniformMap() { return new TUniformLinkedMap(); } void DeleteUniformMap(TUniformMap* map) { delete map; } TShHandleBase* ConstructBindings() { return nullptr; } void DeleteBindingList(TShHandleBase* bindingList) { delete bindingList; } glslang-16.0.0/glslang/HLSL/000077500000000000000000000000001506534232700154255ustar00rootroot00000000000000glslang-16.0.0/glslang/HLSL/hlslAttributes.cpp000066400000000000000000000157041506534232700211510ustar00rootroot00000000000000// // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "hlslAttributes.h" #include "hlslParseHelper.h" namespace glslang { // Map the given string to an attribute enum from TAttributeType, // or EatNone if invalid. TAttributeType HlslParseContext::attributeFromName(const TString& nameSpace, const TString& name) const { // handle names within a namespace if (nameSpace == "vk") { if (name == "input_attachment_index") return EatInputAttachment; else if (name == "location") return EatLocation; else if (name == "binding") return EatBinding; else if (name == "global_cbuffer_binding") return EatGlobalBinding; else if (name == "builtin") return EatBuiltIn; else if (name == "constant_id") return EatConstantId; else if (name == "push_constant") return EatPushConstant; } else if (nameSpace == "spv") { if (name == "format_rgba32f") return EatFormatRgba32f; if (name == "format_rgba16f") return EatFormatRgba16f; if (name == "format_r32f") return EatFormatR32f; if (name == "format_rgba8") return EatFormatRgba8; if (name == "format_rgba8snorm") return EatFormatRgba8Snorm; if (name == "format_rg32f") return EatFormatRg32f; if (name == "format_rg16f") return EatFormatRg16f; if (name == "format_r11fg11fb10f") return EatFormatR11fG11fB10f; if (name == "format_r16f") return EatFormatR16f; if (name == "format_rgba16") return EatFormatRgba16; if (name == "format_rgb10a2") return EatFormatRgb10A2; if (name == "format_rg16") return EatFormatRg16; if (name == "format_rg8") return EatFormatRg8; if (name == "format_r16") return EatFormatR16; if (name == "format_r8") return EatFormatR8; if (name == "format_rgba16snorm") return EatFormatRgba16Snorm; if (name == "format_rg16snorm") return EatFormatRg16Snorm; if (name == "format_rg8snorm") return EatFormatRg8Snorm; if (name == "format_r16snorm") return EatFormatR16Snorm; if (name == "format_r8snorm") return EatFormatR8Snorm; if (name == "format_rgba32i") return EatFormatRgba32i; if (name == "format_rgba16i") return EatFormatRgba16i; if (name == "format_rgba8i") return EatFormatRgba8i; if (name == "format_r32i") return EatFormatR32i; if (name == "format_rg32i") return EatFormatRg32i; if (name == "format_rg16i") return EatFormatRg16i; if (name == "format_rg8i") return EatFormatRg8i; if (name == "format_r16i") return EatFormatR16i; if (name == "format_r8i") return EatFormatR8i; if (name == "format_rgba32ui") return EatFormatRgba32ui; if (name == "format_rgba16ui") return EatFormatRgba16ui; if (name == "format_rgba8ui") return EatFormatRgba8ui; if (name == "format_r32ui") return EatFormatR32ui; if (name == "format_rgb10a2ui") return EatFormatRgb10a2ui; if (name == "format_rg32ui") return EatFormatRg32ui; if (name == "format_rg16ui") return EatFormatRg16ui; if (name == "format_rg8ui") return EatFormatRg8ui; if (name == "format_r16ui") return EatFormatR16ui; if (name == "format_r8ui") return EatFormatR8ui; if (name == "nonwritable") return EatNonWritable; if (name == "nonreadable") return EatNonReadable; if (name == "export") return EatExport; } else if (nameSpace.size() > 0) return EatNone; // handle names with no namespace if (name == "allow_uav_condition") return EatAllow_uav_condition; else if (name == "branch") return EatBranch; else if (name == "call") return EatCall; else if (name == "domain") return EatDomain; else if (name == "earlydepthstencil") return EatEarlyDepthStencil; else if (name == "fastopt") return EatFastOpt; else if (name == "flatten") return EatFlatten; else if (name == "forcecase") return EatForceCase; else if (name == "instance") return EatInstance; else if (name == "maxtessfactor") return EatMaxTessFactor; else if (name == "maxvertexcount") return EatMaxVertexCount; else if (name == "numthreads") return EatNumThreads; else if (name == "outputcontrolpoints") return EatOutputControlPoints; else if (name == "outputtopology") return EatOutputTopology; else if (name == "partitioning") return EatPartitioning; else if (name == "patchconstantfunc") return EatPatchConstantFunc; else if (name == "unroll") return EatUnroll; else if (name == "loop") return EatLoop; else return EatNone; } } // end namespace glslang glslang-16.0.0/glslang/HLSL/hlslAttributes.h000066400000000000000000000041241506534232700206100ustar00rootroot00000000000000// // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef HLSLATTRIBUTES_H_ #define HLSLATTRIBUTES_H_ #include #include #include "../MachineIndependent/attribute.h" #include "../MachineIndependent/SymbolTable.h" #include "hlslScanContext.h" namespace glslang { class TFunctionDeclarator { public: TFunctionDeclarator() : function(nullptr), body(nullptr) { } TSourceLoc loc; TFunction* function; TAttributes attributes; TVector* body; }; } // end namespace glslang #endif // HLSLATTRIBUTES_H_ glslang-16.0.0/glslang/HLSL/hlslGrammar.cpp000066400000000000000000004262361506534232700204170ustar00rootroot00000000000000// // Copyright (C) 2016-2018 Google, Inc. // Copyright (C) 2016 LunarG, Inc. // Copyright (C) 2023 Mobica Limited. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // This is a set of mutually recursive methods implementing the HLSL grammar. // Generally, each returns // - through an argument: a type specifically appropriate to which rule it // recognized // - through the return value: true/false to indicate whether or not it // recognized its rule // // As much as possible, only grammar recognition should happen in this file, // with all other work being farmed out to hlslParseHelper.cpp, which in turn // will build the AST. // // The next token, yet to be "accepted" is always sitting in 'token'. // When a method says it accepts a rule, that means all tokens involved // in the rule will have been consumed, and none left in 'token'. // #include "hlslTokens.h" #include "hlslGrammar.h" #include "hlslAttributes.h" namespace glslang { // Root entry point to this recursive decent parser. // Return true if compilation unit was successfully accepted. bool HlslGrammar::parse() { advanceToken(); return acceptCompilationUnit(); } void HlslGrammar::expected(const char* syntax) { parseContext.error(token.loc, "Expected", syntax, ""); } void HlslGrammar::unimplemented(const char* error) { parseContext.error(token.loc, "Unimplemented", error, ""); } // IDENTIFIER // THIS // type that can be used as IDENTIFIER // // Only process the next token if it is an identifier. // Return true if it was an identifier. bool HlslGrammar::acceptIdentifier(HlslToken& idToken) { // IDENTIFIER if (peekTokenClass(EHTokIdentifier)) { idToken = token; advanceToken(); return true; } // THIS // -> maps to the IDENTIFIER spelled with the internal special name for 'this' if (peekTokenClass(EHTokThis)) { idToken = token; advanceToken(); idToken.tokenClass = EHTokIdentifier; idToken.string = NewPoolTString(intermediate.implicitThisName); return true; } // type that can be used as IDENTIFIER // Even though "sample", "bool", "float", etc keywords (for types, interpolation modifiers), // they ARE still accepted as identifiers. This is not a dense space: e.g, "void" is not a // valid identifier, nor is "linear". This code special cases the known instances of this, so // e.g, "int sample;" or "float float;" is accepted. Other cases can be added here if needed. const char* idString = getTypeString(peek()); if (idString == nullptr) return false; token.string = NewPoolTString(idString); token.tokenClass = EHTokIdentifier; idToken = token; typeIdentifiers = true; advanceToken(); return true; } // compilationUnit // : declaration_list EOF // bool HlslGrammar::acceptCompilationUnit() { if (! acceptDeclarationList(unitNode)) return false; if (! peekTokenClass(EHTokNone)) return false; // set root of AST if (unitNode && !unitNode->getAsAggregate()) unitNode = intermediate.growAggregate(nullptr, unitNode); intermediate.setTreeRoot(unitNode); return true; } // Recognize the following, but with the extra condition that it can be // successfully terminated by EOF or '}'. // // declaration_list // : list of declaration_or_semicolon followed by EOF or RIGHT_BRACE // // declaration_or_semicolon // : declaration // : SEMICOLON // bool HlslGrammar::acceptDeclarationList(TIntermNode*& nodeList) { do { // HLSL allows extra semicolons between global declarations do { } while (acceptTokenClass(EHTokSemicolon)); // EOF or RIGHT_BRACE if (peekTokenClass(EHTokNone) || peekTokenClass(EHTokRightBrace)) return true; // declaration if (! acceptDeclaration(nodeList)) { expected("declaration"); return false; } } while (true); return true; } // sampler_state // : LEFT_BRACE [sampler_state_assignment ... ] RIGHT_BRACE // // sampler_state_assignment // : sampler_state_identifier EQUAL value SEMICOLON // // sampler_state_identifier // : ADDRESSU // | ADDRESSV // | ADDRESSW // | BORDERCOLOR // | FILTER // | MAXANISOTROPY // | MAXLOD // | MINLOD // | MIPLODBIAS // bool HlslGrammar::acceptSamplerState() { // TODO: this should be genericized to accept a list of valid tokens and // return token/value pairs. Presently it is specific to texture values. if (! acceptTokenClass(EHTokLeftBrace)) return true; parseContext.warn(token.loc, "unimplemented", "immediate sampler state", ""); do { // read state name HlslToken state; if (! acceptIdentifier(state)) break; // end of list // FXC accepts any case TString stateName = *state.string; std::transform(stateName.begin(), stateName.end(), stateName.begin(), ::tolower); if (! acceptTokenClass(EHTokAssign)) { expected("assign"); return false; } if (stateName == "minlod" || stateName == "maxlod") { if (! peekTokenClass(EHTokIntConstant)) { expected("integer"); return false; } TIntermTyped* lod = nullptr; if (! acceptLiteral(lod)) // should never fail, since we just looked for an integer return false; } else if (stateName == "maxanisotropy") { if (! peekTokenClass(EHTokIntConstant)) { expected("integer"); return false; } TIntermTyped* maxAnisotropy = nullptr; if (! acceptLiteral(maxAnisotropy)) // should never fail, since we just looked for an integer return false; } else if (stateName == "filter") { HlslToken filterMode; if (! acceptIdentifier(filterMode)) { expected("filter mode"); return false; } } else if (stateName == "addressu" || stateName == "addressv" || stateName == "addressw") { HlslToken addrMode; if (! acceptIdentifier(addrMode)) { expected("texture address mode"); return false; } } else if (stateName == "miplodbias") { TIntermTyped* lodBias = nullptr; if (! acceptLiteral(lodBias)) { expected("lod bias"); return false; } } else if (stateName == "bordercolor") { return false; } else { expected("texture state"); return false; } // SEMICOLON if (! acceptTokenClass(EHTokSemicolon)) { expected("semicolon"); return false; } } while (true); if (! acceptTokenClass(EHTokRightBrace)) return false; return true; } // sampler_declaration_dx9 // : SAMPLER identifier EQUAL sampler_type sampler_state // bool HlslGrammar::acceptSamplerDeclarationDX9(TType& /*type*/) { if (! acceptTokenClass(EHTokSampler)) return false; // TODO: remove this when DX9 style declarations are implemented. unimplemented("Direct3D 9 sampler declaration"); // read sampler name HlslToken name; if (! acceptIdentifier(name)) { expected("sampler name"); return false; } if (! acceptTokenClass(EHTokAssign)) { expected("="); return false; } return false; } // declaration // : attributes attributed_declaration // | NAMESPACE IDENTIFIER LEFT_BRACE declaration_list RIGHT_BRACE // // attributed_declaration // : sampler_declaration_dx9 post_decls SEMICOLON // | fully_specified_type // for cbuffer/tbuffer // | fully_specified_type declarator_list SEMICOLON // for non cbuffer/tbuffer // | fully_specified_type identifier function_parameters post_decls compound_statement // function definition // | fully_specified_type identifier sampler_state post_decls compound_statement // sampler definition // | typedef declaration // // declarator_list // : declarator COMMA declarator COMMA declarator... // zero or more declarators // // declarator // : identifier array_specifier post_decls // | identifier array_specifier post_decls EQUAL assignment_expression // | identifier function_parameters post_decls // function prototype // // Parsing has to go pretty far in to know whether it's a variable, prototype, or // function definition, so the implementation below doesn't perfectly divide up the grammar // as above. (The 'identifier' in the first item in init_declarator list is the // same as 'identifier' for function declarations.) // // This can generate more than one subtree, one per initializer or a function body. // All initializer subtrees are put in their own aggregate node, making one top-level // node for all the initializers. Each function created is a top-level node to grow // into the passed-in nodeList. // // If 'nodeList' is passed in as non-null, it must be an aggregate to extend for // each top-level node the declaration creates. Otherwise, if only one top-level // node in generated here, that is want is returned in nodeList. // bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList) { // NAMESPACE IDENTIFIER LEFT_BRACE declaration_list RIGHT_BRACE if (acceptTokenClass(EHTokNamespace)) { HlslToken namespaceToken; if (!acceptIdentifier(namespaceToken)) { expected("namespace name"); return false; } parseContext.pushNamespace(*namespaceToken.string); if (!acceptTokenClass(EHTokLeftBrace)) { expected("{"); return false; } if (!acceptDeclarationList(nodeList)) { expected("declaration list"); return false; } if (!acceptTokenClass(EHTokRightBrace)) { expected("}"); return false; } parseContext.popNamespace(); return true; } bool declarator_list = false; // true when processing comma separation // attributes TFunctionDeclarator declarator; acceptAttributes(declarator.attributes); // typedef bool typedefDecl = acceptTokenClass(EHTokTypedef); TType declaredType; // DX9 sampler declaration use a different syntax // DX9 shaders need to run through HLSL compiler (fxc) via a back compat mode, it isn't going to // be possible to simultaneously compile D3D10+ style shaders and DX9 shaders. If we want to compile DX9 // HLSL shaders, this will have to be a master level switch // As such, the sampler keyword in D3D10+ turns into an automatic sampler type, and is commonly used // For that reason, this line is commented out // if (acceptSamplerDeclarationDX9(declaredType)) // return true; bool forbidDeclarators = (peekTokenClass(EHTokCBuffer) || peekTokenClass(EHTokTBuffer)); // fully_specified_type if (! acceptFullySpecifiedType(declaredType, nodeList, declarator.attributes, forbidDeclarators)) return false; // cbuffer and tbuffer end with the closing '}'. // No semicolon is included. if (forbidDeclarators) return true; // Check if there are invalid in/out qualifiers switch (declaredType.getQualifier().storage) { case EvqIn: case EvqOut: case EvqInOut: parseContext.error(token.loc, "in/out qualifiers are only valid on parameters", token.string->c_str(), ""); break; default: break; } // declarator_list // : declarator // : identifier HlslToken idToken; TIntermAggregate* initializers = nullptr; while (acceptIdentifier(idToken)) { TString *fullName = idToken.string; if (parseContext.symbolTable.atGlobalLevel()) parseContext.getFullNamespaceName(fullName); if (peekTokenClass(EHTokLeftParen)) { // looks like function parameters // merge in the attributes into the return type parseContext.transferTypeAttributes(token.loc, declarator.attributes, declaredType, true); // Potentially rename shader entry point function. No-op most of the time. parseContext.renameShaderFunction(fullName); // function_parameters declarator.function = new TFunction(fullName, declaredType); if (!acceptFunctionParameters(*declarator.function)) { expected("function parameter list"); return false; } // post_decls acceptPostDecls(declarator.function->getWritableType().getQualifier()); // compound_statement (function body definition) or just a prototype? declarator.loc = token.loc; if (peekTokenClass(EHTokLeftBrace)) { if (declarator_list) parseContext.error(idToken.loc, "function body can't be in a declarator list", "{", ""); if (typedefDecl) parseContext.error(idToken.loc, "function body can't be in a typedef", "{", ""); return acceptFunctionDefinition(declarator, nodeList, nullptr); } else { if (typedefDecl) parseContext.error(idToken.loc, "function typedefs not implemented", "{", ""); parseContext.handleFunctionDeclarator(declarator.loc, *declarator.function, true); } } else { // A variable declaration. // merge in the attributes, the first time around, into the shared type if (! declarator_list) parseContext.transferTypeAttributes(token.loc, declarator.attributes, declaredType); // Fix the storage qualifier if it's a global. if (declaredType.getQualifier().storage == EvqTemporary && parseContext.symbolTable.atGlobalLevel()) declaredType.getQualifier().storage = EvqUniform; // recognize array_specifier TArraySizes* arraySizes = nullptr; acceptArraySpecifier(arraySizes); // We can handle multiple variables per type declaration, so // the number of types can expand when arrayness is different. TType variableType; variableType.shallowCopy(declaredType); // In the most general case, arrayness is potentially coming both from the // declared type and from the variable: "int[] a[];" or just one or the other. // Merge it all to the variableType, so all arrayness is part of the variableType. variableType.transferArraySizes(arraySizes); variableType.copyArrayInnerSizes(declaredType.getArraySizes()); // samplers accept immediate sampler state if (variableType.getBasicType() == EbtSampler) { if (! acceptSamplerState()) return false; } // post_decls acceptPostDecls(variableType.getQualifier()); // EQUAL assignment_expression TIntermTyped* expressionNode = nullptr; if (acceptTokenClass(EHTokAssign)) { if (typedefDecl) parseContext.error(idToken.loc, "can't have an initializer", "typedef", ""); if (! acceptAssignmentExpression(expressionNode)) { expected("initializer"); return false; } } // TODO: things scoped within an annotation need their own name space; // TODO: non-constant strings are not yet handled. if (!(variableType.getBasicType() == EbtString && !variableType.getQualifier().isConstant()) && parseContext.getAnnotationNestingLevel() == 0) { if (typedefDecl) parseContext.declareTypedef(idToken.loc, *fullName, variableType); else if (variableType.getBasicType() == EbtBlock) { if (expressionNode) parseContext.error(idToken.loc, "buffer aliasing not yet supported", "block initializer", ""); parseContext.declareBlock(idToken.loc, variableType, fullName); parseContext.declareStructBufferCounter(idToken.loc, variableType, *fullName); } else { if (variableType.getQualifier().storage == EvqUniform && ! variableType.containsOpaque()) { // this isn't really an individual variable, but a member of the $Global buffer parseContext.growGlobalUniformBlock(idToken.loc, variableType, *fullName); } else { // Declare the variable and add any initializer code to the AST. // The top-level node is always made into an aggregate, as that's // historically how the AST has been. initializers = intermediate.growAggregate(initializers, parseContext.declareVariable(idToken.loc, *fullName, variableType, expressionNode), idToken.loc); } } } } // COMMA if (acceptTokenClass(EHTokComma)) declarator_list = true; } // The top-level initializer node is a sequence. if (initializers != nullptr) initializers->setOperator(EOpSequence); // if we have a locally scoped static, it needs a globally scoped initializer if (declaredType.getQualifier().storage == EvqGlobal && !parseContext.symbolTable.atGlobalLevel()) { unitNode = intermediate.growAggregate(unitNode, initializers, idToken.loc); } else { // Add the initializers' aggregate to the nodeList we were handed. if (nodeList) nodeList = intermediate.growAggregate(nodeList, initializers); else nodeList = initializers; } // SEMICOLON if (! acceptTokenClass(EHTokSemicolon)) { // This may have been a false detection of what appeared to be a declaration, but // was actually an assignment such as "float = 4", where "float" is an identifier. // We put the token back to let further parsing happen for cases where that may // happen. This errors on the side of caution, and mostly triggers the error. if (peek() == EHTokAssign || peek() == EHTokLeftBracket || peek() == EHTokDot || peek() == EHTokComma) recedeToken(); else expected(";"); return false; } return true; } // control_declaration // : fully_specified_type identifier EQUAL expression // bool HlslGrammar::acceptControlDeclaration(TIntermNode*& node) { node = nullptr; TAttributes attributes; // fully_specified_type TType type; if (! acceptFullySpecifiedType(type, attributes)) return false; if (attributes.size() > 0) parseContext.warn(token.loc, "attributes don't apply to control declaration", "", ""); // filter out type casts if (peekTokenClass(EHTokLeftParen)) { recedeToken(); return false; } // identifier HlslToken idToken; if (! acceptIdentifier(idToken)) { expected("identifier"); return false; } // EQUAL TIntermTyped* expressionNode = nullptr; if (! acceptTokenClass(EHTokAssign)) { expected("="); return false; } // expression if (! acceptExpression(expressionNode)) { expected("initializer"); return false; } node = parseContext.declareVariable(idToken.loc, *idToken.string, type, expressionNode); return true; } // fully_specified_type // : type_specifier // | type_qualifier type_specifier // | type_specifier type_qualifier // bool HlslGrammar::acceptFullySpecifiedType(TType& type, const TAttributes& attributes) { TIntermNode* nodeList = nullptr; return acceptFullySpecifiedType(type, nodeList, attributes); } bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList, const TAttributes& attributes, bool forbidDeclarators) { // type_qualifier TQualifier qualifier; qualifier.clear(); if (! acceptPreQualifier(qualifier)) return false; TSourceLoc loc = token.loc; // type_specifier if (! acceptType(type, nodeList)) { // If this is not a type, we may have inadvertently gone down a wrong path // by parsing "sample", which can be treated like either an identifier or a // qualifier. Back it out, if we did. if (qualifier.sample) recedeToken(); return false; } // type_qualifier if (! acceptPostQualifier(qualifier)) return false; if (type.getBasicType() == EbtBlock) { // the type was a block, which set some parts of the qualifier parseContext.mergeQualifiers(type.getQualifier(), qualifier); // merge in the attributes parseContext.transferTypeAttributes(token.loc, attributes, type); // further, it can create an anonymous instance of the block // (cbuffer and tbuffer don't consume the next identifier, and // should set forbidDeclarators) if (forbidDeclarators || peek() != EHTokIdentifier) parseContext.declareBlock(loc, type); } else { // Some qualifiers are set when parsing the type. Merge those with // whatever comes from acceptPreQualifier and acceptPostQualifier. assert(qualifier.layoutFormat == ElfNone); qualifier.layoutFormat = type.getQualifier().layoutFormat; qualifier.precision = type.getQualifier().precision; if (type.getQualifier().storage == EvqOut || type.getQualifier().storage == EvqBuffer) { qualifier.storage = type.getQualifier().storage; qualifier.readonly = type.getQualifier().readonly; } if (type.isBuiltIn()) qualifier.builtIn = type.getQualifier().builtIn; type.getQualifier() = qualifier; } return true; } // type_qualifier // : qualifier qualifier ... // // Zero or more of these, so this can't return false. // bool HlslGrammar::acceptPreQualifier(TQualifier& qualifier) { do { switch (peek()) { case EHTokStatic: qualifier.storage = EvqGlobal; break; case EHTokExtern: // TODO: no meaning in glslang? break; case EHTokShared: // TODO: hint break; case EHTokGroupShared: qualifier.storage = EvqShared; break; case EHTokUniform: qualifier.storage = EvqUniform; break; case EHTokConst: qualifier.storage = EvqConst; break; case EHTokVolatile: qualifier.volatil = true; break; case EHTokLinear: qualifier.smooth = true; break; case EHTokCentroid: qualifier.centroid = true; break; case EHTokNointerpolation: qualifier.flat = true; break; case EHTokNoperspective: qualifier.nopersp = true; break; case EHTokSample: qualifier.sample = true; break; case EHTokRowMajor: qualifier.layoutMatrix = ElmColumnMajor; break; case EHTokColumnMajor: qualifier.layoutMatrix = ElmRowMajor; break; case EHTokPrecise: qualifier.noContraction = true; break; case EHTokIn: if (qualifier.storage != EvqUniform) { qualifier.storage = (qualifier.storage == EvqOut) ? EvqInOut : EvqIn; } break; case EHTokOut: qualifier.storage = (qualifier.storage == EvqIn) ? EvqInOut : EvqOut; break; case EHTokInOut: qualifier.storage = EvqInOut; break; case EHTokLayout: if (! acceptLayoutQualifierList(qualifier)) return false; continue; case EHTokGloballyCoherent: qualifier.coherent = true; break; case EHTokInline: // TODO: map this to SPIR-V function control break; // GS geometries: these are specified on stage input variables, and are an error (not verified here) // for output variables. case EHTokPoint: qualifier.storage = EvqIn; if (!parseContext.handleInputGeometry(token.loc, ElgPoints)) return false; break; case EHTokLine: qualifier.storage = EvqIn; if (!parseContext.handleInputGeometry(token.loc, ElgLines)) return false; break; case EHTokTriangle: qualifier.storage = EvqIn; if (!parseContext.handleInputGeometry(token.loc, ElgTriangles)) return false; break; case EHTokLineAdj: qualifier.storage = EvqIn; if (!parseContext.handleInputGeometry(token.loc, ElgLinesAdjacency)) return false; break; case EHTokTriangleAdj: qualifier.storage = EvqIn; if (!parseContext.handleInputGeometry(token.loc, ElgTrianglesAdjacency)) return false; break; default: return true; } advanceToken(); } while (true); } // type_qualifier // : qualifier qualifier ... // // Zero or more of these, so this can't return false. // bool HlslGrammar::acceptPostQualifier(TQualifier& qualifier) { do { switch (peek()) { case EHTokConst: qualifier.storage = EvqConst; break; default: return true; } advanceToken(); } while (true); } // layout_qualifier_list // : LAYOUT LEFT_PAREN layout_qualifier COMMA layout_qualifier ... RIGHT_PAREN // // layout_qualifier // : identifier // | identifier EQUAL expression // // Zero or more of these, so this can't return false. // bool HlslGrammar::acceptLayoutQualifierList(TQualifier& qualifier) { if (! acceptTokenClass(EHTokLayout)) return false; // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) return false; do { // identifier HlslToken idToken; if (! acceptIdentifier(idToken)) break; // EQUAL expression if (acceptTokenClass(EHTokAssign)) { TIntermTyped* expr; if (! acceptConditionalExpression(expr)) { expected("expression"); return false; } parseContext.setLayoutQualifier(idToken.loc, qualifier, *idToken.string, expr); } else parseContext.setLayoutQualifier(idToken.loc, qualifier, *idToken.string); // COMMA if (! acceptTokenClass(EHTokComma)) break; } while (true); // RIGHT_PAREN if (! acceptTokenClass(EHTokRightParen)) { expected(")"); return false; } return true; } // template_type // : FLOAT // | DOUBLE // | INT // | DWORD // | UINT // | BOOL // bool HlslGrammar::acceptTemplateVecMatBasicType(TBasicType& basicType, TPrecisionQualifier& precision) { precision = EpqNone; switch (peek()) { case EHTokFloat: basicType = EbtFloat; break; case EHTokDouble: basicType = EbtDouble; break; case EHTokInt: case EHTokDword: basicType = EbtInt; break; case EHTokUint: basicType = EbtUint; break; case EHTokBool: basicType = EbtBool; break; case EHTokHalf: basicType = parseContext.hlslEnable16BitTypes() ? EbtFloat16 : EbtFloat; break; case EHTokMin16float: case EHTokMin10float: basicType = parseContext.hlslEnable16BitTypes() ? EbtFloat16 : EbtFloat; precision = EpqMedium; break; case EHTokMin16int: case EHTokMin12int: basicType = parseContext.hlslEnable16BitTypes() ? EbtInt16 : EbtInt; precision = EpqMedium; break; case EHTokMin16uint: basicType = parseContext.hlslEnable16BitTypes() ? EbtUint16 : EbtUint; precision = EpqMedium; break; default: return false; } advanceToken(); return true; } // vector_template_type // : VECTOR // | VECTOR LEFT_ANGLE template_type COMMA integer_literal RIGHT_ANGLE // bool HlslGrammar::acceptVectorTemplateType(TType& type) { if (! acceptTokenClass(EHTokVector)) return false; if (! acceptTokenClass(EHTokLeftAngle)) { // in HLSL, 'vector' alone means float4. new(&type) TType(EbtFloat, EvqTemporary, 4); return true; } TBasicType basicType; TPrecisionQualifier precision; if (! acceptTemplateVecMatBasicType(basicType, precision)) { expected("scalar type"); return false; } // COMMA if (! acceptTokenClass(EHTokComma)) { expected(","); return false; } // integer if (! peekTokenClass(EHTokIntConstant)) { expected("literal integer"); return false; } TIntermTyped* vecSize; if (! acceptLiteral(vecSize)) return false; const int vecSizeI = vecSize->getAsConstantUnion()->getConstArray()[0].getIConst(); new(&type) TType(basicType, EvqTemporary, precision, vecSizeI); if (vecSizeI == 1) type.makeVector(); if (!acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } return true; } // matrix_template_type // : MATRIX // | MATRIX LEFT_ANGLE template_type COMMA integer_literal COMMA integer_literal RIGHT_ANGLE // bool HlslGrammar::acceptMatrixTemplateType(TType& type) { if (! acceptTokenClass(EHTokMatrix)) return false; if (! acceptTokenClass(EHTokLeftAngle)) { // in HLSL, 'matrix' alone means float4x4. new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 4); return true; } TBasicType basicType; TPrecisionQualifier precision; if (! acceptTemplateVecMatBasicType(basicType, precision)) { expected("scalar type"); return false; } // COMMA if (! acceptTokenClass(EHTokComma)) { expected(","); return false; } // integer rows if (! peekTokenClass(EHTokIntConstant)) { expected("literal integer"); return false; } TIntermTyped* rows; if (! acceptLiteral(rows)) return false; // COMMA if (! acceptTokenClass(EHTokComma)) { expected(","); return false; } // integer cols if (! peekTokenClass(EHTokIntConstant)) { expected("literal integer"); return false; } TIntermTyped* cols; if (! acceptLiteral(cols)) return false; new(&type) TType(basicType, EvqTemporary, precision, 0, rows->getAsConstantUnion()->getConstArray()[0].getIConst(), cols->getAsConstantUnion()->getConstArray()[0].getIConst()); if (!acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } return true; } // layout_geometry // : LINESTREAM // | POINTSTREAM // | TRIANGLESTREAM // bool HlslGrammar::acceptOutputPrimitiveGeometry(TLayoutGeometry& geometry) { // read geometry type const EHlslTokenClass geometryType = peek(); switch (geometryType) { case EHTokPointStream: geometry = ElgPoints; break; case EHTokLineStream: geometry = ElgLineStrip; break; case EHTokTriangleStream: geometry = ElgTriangleStrip; break; default: return false; // not a layout geometry } advanceToken(); // consume the layout keyword return true; } // tessellation_decl_type // : INPUTPATCH // | OUTPUTPATCH // bool HlslGrammar::acceptTessellationDeclType(TBuiltInVariable& patchType) { // read geometry type const EHlslTokenClass tessType = peek(); switch (tessType) { case EHTokInputPatch: patchType = EbvInputPatch; break; case EHTokOutputPatch: patchType = EbvOutputPatch; break; default: return false; // not a tessellation decl } advanceToken(); // consume the keyword return true; } // tessellation_patch_template_type // : tessellation_decl_type LEFT_ANGLE type comma integer_literal RIGHT_ANGLE // bool HlslGrammar::acceptTessellationPatchTemplateType(TType& type) { TBuiltInVariable patchType; if (! acceptTessellationDeclType(patchType)) return false; if (! acceptTokenClass(EHTokLeftAngle)) return false; if (! acceptType(type)) { expected("tessellation patch type"); return false; } if (! acceptTokenClass(EHTokComma)) return false; // integer size if (! peekTokenClass(EHTokIntConstant)) { expected("literal integer"); return false; } TIntermTyped* size; if (! acceptLiteral(size)) return false; TArraySizes* arraySizes = new TArraySizes; arraySizes->addInnerSize(size->getAsConstantUnion()->getConstArray()[0].getIConst()); type.transferArraySizes(arraySizes); type.getQualifier().builtIn = patchType; if (! acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } return true; } // stream_out_template_type // : output_primitive_geometry_type LEFT_ANGLE type RIGHT_ANGLE // bool HlslGrammar::acceptStreamOutTemplateType(TType& type, TLayoutGeometry& geometry) { geometry = ElgNone; if (! acceptOutputPrimitiveGeometry(geometry)) return false; if (! acceptTokenClass(EHTokLeftAngle)) return false; if (! acceptType(type)) { expected("stream output type"); return false; } type.getQualifier().storage = EvqOut; type.getQualifier().builtIn = EbvGsOutputStream; if (! acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } return true; } // annotations // : LEFT_ANGLE declaration SEMI_COLON ... declaration SEMICOLON RIGHT_ANGLE // bool HlslGrammar::acceptAnnotations(TQualifier&) { if (! acceptTokenClass(EHTokLeftAngle)) return false; // note that we are nesting a name space parseContext.nestAnnotations(); // declaration SEMI_COLON ... declaration SEMICOLON RIGHT_ANGLE do { // eat any extra SEMI_COLON; don't know if the grammar calls for this or not while (acceptTokenClass(EHTokSemicolon)) ; if (acceptTokenClass(EHTokRightAngle)) break; // declaration TIntermNode* node = nullptr; if (! acceptDeclaration(node)) { expected("declaration in annotation"); return false; } } while (true); parseContext.unnestAnnotations(); return true; } // subpass input type // : SUBPASSINPUT // | SUBPASSINPUT VECTOR LEFT_ANGLE template_type RIGHT_ANGLE // | SUBPASSINPUTMS // | SUBPASSINPUTMS VECTOR LEFT_ANGLE template_type RIGHT_ANGLE bool HlslGrammar::acceptSubpassInputType(TType& type) { // read subpass type const EHlslTokenClass subpassInputType = peek(); bool multisample; switch (subpassInputType) { case EHTokSubpassInput: multisample = false; break; case EHTokSubpassInputMS: multisample = true; break; default: return false; // not a subpass input declaration } advanceToken(); // consume the sampler type keyword TType subpassType(EbtFloat, EvqUniform, 4); // default type is float4 if (acceptTokenClass(EHTokLeftAngle)) { if (! acceptType(subpassType)) { expected("scalar or vector type"); return false; } const TBasicType basicRetType = subpassType.getBasicType() ; switch (basicRetType) { case EbtFloat: case EbtUint: case EbtInt: case EbtStruct: break; default: unimplemented("basic type in subpass input"); return false; } if (! acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } } const TBasicType subpassBasicType = subpassType.isStruct() ? (*subpassType.getStruct())[0].type->getBasicType() : subpassType.getBasicType(); TSampler sampler; sampler.setSubpass(subpassBasicType, multisample); // Remember the declared return type. Function returns false on error. if (!parseContext.setTextureReturnType(sampler, subpassType, token.loc)) return false; type.shallowCopy(TType(sampler, EvqUniform)); return true; } // sampler_type for DX9 compatibility // : SAMPLER // | SAMPLER1D // | SAMPLER2D // | SAMPLER3D // | SAMPLERCUBE bool HlslGrammar::acceptSamplerTypeDX9(TType &type) { // read sampler type const EHlslTokenClass samplerType = peek(); TSamplerDim dim = EsdNone; TType txType(EbtFloat, EvqUniform, 4); // default type is float4 bool isShadow = false; switch (samplerType) { case EHTokSampler: dim = Esd2D; break; case EHTokSampler1d: dim = Esd1D; break; case EHTokSampler2d: dim = Esd2D; break; case EHTokSampler3d: dim = Esd3D; break; case EHTokSamplerCube: dim = EsdCube; break; default: return false; // not a dx9 sampler declaration } advanceToken(); // consume the sampler type keyword TArraySizes *arraySizes = nullptr; // TODO: array TSampler sampler; sampler.set(txType.getBasicType(), dim, false, isShadow, false); if (!parseContext.setTextureReturnType(sampler, txType, token.loc)) return false; type.shallowCopy(TType(sampler, EvqUniform, arraySizes)); type.getQualifier().layoutFormat = ElfNone; return true; } // sampler_type // : SAMPLER // | SAMPLER1D // | SAMPLER2D // | SAMPLER3D // | SAMPLERCUBE // | SAMPLERSTATE // | SAMPLERCOMPARISONSTATE bool HlslGrammar::acceptSamplerType(TType& type) { // read sampler type const EHlslTokenClass samplerType = peek(); // TODO: for DX9 // TSamplerDim dim = EsdNone; bool isShadow = false; switch (samplerType) { case EHTokSampler: break; case EHTokSampler1d: /*dim = Esd1D*/; break; case EHTokSampler2d: /*dim = Esd2D*/; break; case EHTokSampler3d: /*dim = Esd3D*/; break; case EHTokSamplerCube: /*dim = EsdCube*/; break; case EHTokSamplerState: break; case EHTokSamplerComparisonState: isShadow = true; break; default: return false; // not a sampler declaration } advanceToken(); // consume the sampler type keyword TArraySizes* arraySizes = nullptr; // TODO: array TSampler sampler; sampler.setPureSampler(isShadow); type.shallowCopy(TType(sampler, EvqUniform, arraySizes)); return true; } // texture_type // | BUFFER // | TEXTURE1D // | TEXTURE1DARRAY // | TEXTURE2D // | TEXTURE2DARRAY // | TEXTURE3D // | TEXTURECUBE // | TEXTURECUBEARRAY // | TEXTURE2DMS // | TEXTURE2DMSARRAY // | RWBUFFER // | RWTEXTURE1D // | RWTEXTURE1DARRAY // | RWTEXTURE2D // | RWTEXTURE2DARRAY // | RWTEXTURE3D bool HlslGrammar::acceptTextureType(TType& type) { const EHlslTokenClass textureType = peek(); TSamplerDim dim = EsdNone; bool array = false; bool ms = false; bool image = false; bool combined = true; switch (textureType) { case EHTokBuffer: dim = EsdBuffer; combined = false; break; case EHTokTexture1d: dim = Esd1D; break; case EHTokTexture1darray: dim = Esd1D; array = true; break; case EHTokTexture2d: dim = Esd2D; break; case EHTokTexture2darray: dim = Esd2D; array = true; break; case EHTokTexture3d: dim = Esd3D; break; case EHTokTextureCube: dim = EsdCube; break; case EHTokTextureCubearray: dim = EsdCube; array = true; break; case EHTokTexture2DMS: dim = Esd2D; ms = true; break; case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break; case EHTokRWBuffer: dim = EsdBuffer; image=true; break; case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break; case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break; case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break; case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break; case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break; default: return false; // not a texture declaration } advanceToken(); // consume the texture object keyword TType txType(EbtFloat, EvqUniform, 4); // default type is float4 TIntermTyped* msCount = nullptr; // texture type: required for multisample types and RWBuffer/RWTextures! if (acceptTokenClass(EHTokLeftAngle)) { if (! acceptType(txType)) { expected("scalar or vector type"); return false; } const TBasicType basicRetType = txType.getBasicType() ; switch (basicRetType) { case EbtFloat: case EbtUint: case EbtInt: case EbtStruct: break; default: unimplemented("basic type in texture"); return false; } // Buffers can handle small mats if they fit in 4 components if (dim == EsdBuffer && txType.isMatrix()) { if ((txType.getMatrixCols() * txType.getMatrixRows()) > 4) { expected("components < 4 in matrix buffer type"); return false; } // TODO: except we don't handle it yet... unimplemented("matrix type in buffer"); return false; } if (!txType.isScalar() && !txType.isVector() && !txType.isStruct()) { expected("scalar, vector, or struct type"); return false; } if (ms && acceptTokenClass(EHTokComma)) { // read sample count for multisample types, if given if (! peekTokenClass(EHTokIntConstant)) { expected("multisample count"); return false; } if (! acceptLiteral(msCount)) // should never fail, since we just found an integer return false; } if (! acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } } else if (ms) { expected("texture type for multisample"); return false; } else if (image) { expected("type for RWTexture/RWBuffer"); return false; } TArraySizes* arraySizes = nullptr; const bool shadow = false; // declared on the sampler TSampler sampler; TLayoutFormat format = ElfNone; // Buffer, RWBuffer and RWTexture (images) require a TLayoutFormat. We handle only a limit set. if (image || dim == EsdBuffer) format = parseContext.getLayoutFromTxType(token.loc, txType); const TBasicType txBasicType = txType.isStruct() ? (*txType.getStruct())[0].type->getBasicType() : txType.getBasicType(); // Non-image Buffers are combined if (dim == EsdBuffer && !image) { sampler.set(txType.getBasicType(), dim, array); } else { // DX10 textures are separated. TODO: DX9. if (image) { sampler.setImage(txBasicType, dim, array, shadow, ms); } else { sampler.setTexture(txBasicType, dim, array, shadow, ms); } } // Remember the declared return type. Function returns false on error. if (!parseContext.setTextureReturnType(sampler, txType, token.loc)) return false; // Force uncombined, if necessary if (!combined) sampler.combined = false; type.shallowCopy(TType(sampler, EvqUniform, arraySizes)); type.getQualifier().layoutFormat = format; return true; } // If token is for a type, update 'type' with the type information, // and return true and advance. // Otherwise, return false, and don't advance bool HlslGrammar::acceptType(TType& type) { TIntermNode* nodeList = nullptr; return acceptType(type, nodeList); } bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList) { // Basic types for min* types, use native halfs if the option allows them. bool enable16BitTypes = parseContext.hlslEnable16BitTypes(); const TBasicType min16float_bt = enable16BitTypes ? EbtFloat16 : EbtFloat; const TBasicType min10float_bt = enable16BitTypes ? EbtFloat16 : EbtFloat; const TBasicType half_bt = enable16BitTypes ? EbtFloat16 : EbtFloat; const TBasicType min16int_bt = enable16BitTypes ? EbtInt16 : EbtInt; const TBasicType min12int_bt = enable16BitTypes ? EbtInt16 : EbtInt; const TBasicType min16uint_bt = enable16BitTypes ? EbtUint16 : EbtUint; // Some types might have turned into identifiers. Take the hit for checking // when this has happened. if (typeIdentifiers) { const char* identifierString = getTypeString(peek()); if (identifierString != nullptr) { TString name = identifierString; // if it's an identifier, it's not a type if (parseContext.symbolTable.find(name) != nullptr) return false; } } bool isUnorm = false; bool isSnorm = false; // Accept snorm and unorm. Presently, this is ignored, save for an error check below. switch (peek()) { case EHTokUnorm: isUnorm = true; advanceToken(); // eat the token break; case EHTokSNorm: isSnorm = true; advanceToken(); // eat the token break; default: break; } switch (peek()) { case EHTokVector: return acceptVectorTemplateType(type); break; case EHTokMatrix: return acceptMatrixTemplateType(type); break; case EHTokPointStream: // fall through case EHTokLineStream: // ... case EHTokTriangleStream: // ... { TLayoutGeometry geometry; if (! acceptStreamOutTemplateType(type, geometry)) return false; if (! parseContext.handleOutputGeometry(token.loc, geometry)) return false; return true; } case EHTokInputPatch: // fall through case EHTokOutputPatch: // ... { if (! acceptTessellationPatchTemplateType(type)) return false; return true; } case EHTokSampler: // fall through case EHTokSampler1d: // ... case EHTokSampler2d: // ... case EHTokSampler3d: // ... case EHTokSamplerCube: // ... if (parseContext.hlslDX9Compatible()) return acceptSamplerTypeDX9(type); else return acceptSamplerType(type); break; case EHTokSamplerState: // fall through case EHTokSamplerComparisonState: // ... return acceptSamplerType(type); break; case EHTokSubpassInput: // fall through case EHTokSubpassInputMS: // ... return acceptSubpassInputType(type); break; case EHTokBuffer: // fall through case EHTokTexture1d: // ... case EHTokTexture1darray: // ... case EHTokTexture2d: // ... case EHTokTexture2darray: // ... case EHTokTexture3d: // ... case EHTokTextureCube: // ... case EHTokTextureCubearray: // ... case EHTokTexture2DMS: // ... case EHTokTexture2DMSarray: // ... case EHTokRWTexture1d: // ... case EHTokRWTexture1darray: // ... case EHTokRWTexture2d: // ... case EHTokRWTexture2darray: // ... case EHTokRWTexture3d: // ... case EHTokRWBuffer: // ... return acceptTextureType(type); break; case EHTokAppendStructuredBuffer: case EHTokByteAddressBuffer: case EHTokConsumeStructuredBuffer: case EHTokRWByteAddressBuffer: case EHTokRWStructuredBuffer: case EHTokStructuredBuffer: return acceptStructBufferType(type); break; case EHTokTextureBuffer: return acceptTextureBufferType(type); break; case EHTokConstantBuffer: return acceptConstantBufferType(type); case EHTokClass: case EHTokStruct: case EHTokCBuffer: case EHTokTBuffer: return acceptStruct(type, nodeList); case EHTokIdentifier: // An identifier could be for a user-defined type. // Note we cache the symbol table lookup, to save for a later rule // when this is not a type. if (parseContext.lookupUserType(*token.string, type) != nullptr) { advanceToken(); return true; } else return false; case EHTokVoid: new(&type) TType(EbtVoid); break; case EHTokString: new(&type) TType(EbtString); break; case EHTokFloat: new(&type) TType(EbtFloat); break; case EHTokFloat1: new(&type) TType(EbtFloat); type.makeVector(); break; case EHTokFloat2: new(&type) TType(EbtFloat, EvqTemporary, 2); break; case EHTokFloat3: new(&type) TType(EbtFloat, EvqTemporary, 3); break; case EHTokFloat4: new(&type) TType(EbtFloat, EvqTemporary, 4); break; case EHTokDouble: new(&type) TType(EbtDouble); break; case EHTokDouble1: new(&type) TType(EbtDouble); type.makeVector(); break; case EHTokDouble2: new(&type) TType(EbtDouble, EvqTemporary, 2); break; case EHTokDouble3: new(&type) TType(EbtDouble, EvqTemporary, 3); break; case EHTokDouble4: new(&type) TType(EbtDouble, EvqTemporary, 4); break; case EHTokInt: case EHTokDword: new(&type) TType(EbtInt); break; case EHTokInt1: new(&type) TType(EbtInt); type.makeVector(); break; case EHTokInt2: new(&type) TType(EbtInt, EvqTemporary, 2); break; case EHTokInt3: new(&type) TType(EbtInt, EvqTemporary, 3); break; case EHTokInt4: new(&type) TType(EbtInt, EvqTemporary, 4); break; case EHTokUint: new(&type) TType(EbtUint); break; case EHTokUint1: new(&type) TType(EbtUint); type.makeVector(); break; case EHTokUint2: new(&type) TType(EbtUint, EvqTemporary, 2); break; case EHTokUint3: new(&type) TType(EbtUint, EvqTemporary, 3); break; case EHTokUint4: new(&type) TType(EbtUint, EvqTemporary, 4); break; case EHTokUint64: new(&type) TType(EbtUint64); break; case EHTokBool: new(&type) TType(EbtBool); break; case EHTokBool1: new(&type) TType(EbtBool); type.makeVector(); break; case EHTokBool2: new(&type) TType(EbtBool, EvqTemporary, 2); break; case EHTokBool3: new(&type) TType(EbtBool, EvqTemporary, 3); break; case EHTokBool4: new(&type) TType(EbtBool, EvqTemporary, 4); break; case EHTokHalf: new(&type) TType(half_bt, EvqTemporary); break; case EHTokHalf1: new(&type) TType(half_bt, EvqTemporary); type.makeVector(); break; case EHTokHalf2: new(&type) TType(half_bt, EvqTemporary, 2); break; case EHTokHalf3: new(&type) TType(half_bt, EvqTemporary, 3); break; case EHTokHalf4: new(&type) TType(half_bt, EvqTemporary, 4); break; case EHTokMin16float: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium); break; case EHTokMin16float1: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium); type.makeVector(); break; case EHTokMin16float2: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 2); break; case EHTokMin16float3: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 3); break; case EHTokMin16float4: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 4); break; case EHTokMin10float: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium); break; case EHTokMin10float1: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium); type.makeVector(); break; case EHTokMin10float2: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 2); break; case EHTokMin10float3: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 3); break; case EHTokMin10float4: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 4); break; case EHTokMin16int: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium); break; case EHTokMin16int1: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium); type.makeVector(); break; case EHTokMin16int2: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 2); break; case EHTokMin16int3: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 3); break; case EHTokMin16int4: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 4); break; case EHTokMin12int: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium); break; case EHTokMin12int1: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium); type.makeVector(); break; case EHTokMin12int2: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 2); break; case EHTokMin12int3: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 3); break; case EHTokMin12int4: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 4); break; case EHTokMin16uint: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium); break; case EHTokMin16uint1: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium); type.makeVector(); break; case EHTokMin16uint2: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 2); break; case EHTokMin16uint3: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 3); break; case EHTokMin16uint4: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 4); break; case EHTokInt1x1: new(&type) TType(EbtInt, EvqTemporary, 0, 1, 1); break; case EHTokInt1x2: new(&type) TType(EbtInt, EvqTemporary, 0, 1, 2); break; case EHTokInt1x3: new(&type) TType(EbtInt, EvqTemporary, 0, 1, 3); break; case EHTokInt1x4: new(&type) TType(EbtInt, EvqTemporary, 0, 1, 4); break; case EHTokInt2x1: new(&type) TType(EbtInt, EvqTemporary, 0, 2, 1); break; case EHTokInt2x2: new(&type) TType(EbtInt, EvqTemporary, 0, 2, 2); break; case EHTokInt2x3: new(&type) TType(EbtInt, EvqTemporary, 0, 2, 3); break; case EHTokInt2x4: new(&type) TType(EbtInt, EvqTemporary, 0, 2, 4); break; case EHTokInt3x1: new(&type) TType(EbtInt, EvqTemporary, 0, 3, 1); break; case EHTokInt3x2: new(&type) TType(EbtInt, EvqTemporary, 0, 3, 2); break; case EHTokInt3x3: new(&type) TType(EbtInt, EvqTemporary, 0, 3, 3); break; case EHTokInt3x4: new(&type) TType(EbtInt, EvqTemporary, 0, 3, 4); break; case EHTokInt4x1: new(&type) TType(EbtInt, EvqTemporary, 0, 4, 1); break; case EHTokInt4x2: new(&type) TType(EbtInt, EvqTemporary, 0, 4, 2); break; case EHTokInt4x3: new(&type) TType(EbtInt, EvqTemporary, 0, 4, 3); break; case EHTokInt4x4: new(&type) TType(EbtInt, EvqTemporary, 0, 4, 4); break; case EHTokUint1x1: new(&type) TType(EbtUint, EvqTemporary, 0, 1, 1); break; case EHTokUint1x2: new(&type) TType(EbtUint, EvqTemporary, 0, 1, 2); break; case EHTokUint1x3: new(&type) TType(EbtUint, EvqTemporary, 0, 1, 3); break; case EHTokUint1x4: new(&type) TType(EbtUint, EvqTemporary, 0, 1, 4); break; case EHTokUint2x1: new(&type) TType(EbtUint, EvqTemporary, 0, 2, 1); break; case EHTokUint2x2: new(&type) TType(EbtUint, EvqTemporary, 0, 2, 2); break; case EHTokUint2x3: new(&type) TType(EbtUint, EvqTemporary, 0, 2, 3); break; case EHTokUint2x4: new(&type) TType(EbtUint, EvqTemporary, 0, 2, 4); break; case EHTokUint3x1: new(&type) TType(EbtUint, EvqTemporary, 0, 3, 1); break; case EHTokUint3x2: new(&type) TType(EbtUint, EvqTemporary, 0, 3, 2); break; case EHTokUint3x3: new(&type) TType(EbtUint, EvqTemporary, 0, 3, 3); break; case EHTokUint3x4: new(&type) TType(EbtUint, EvqTemporary, 0, 3, 4); break; case EHTokUint4x1: new(&type) TType(EbtUint, EvqTemporary, 0, 4, 1); break; case EHTokUint4x2: new(&type) TType(EbtUint, EvqTemporary, 0, 4, 2); break; case EHTokUint4x3: new(&type) TType(EbtUint, EvqTemporary, 0, 4, 3); break; case EHTokUint4x4: new(&type) TType(EbtUint, EvqTemporary, 0, 4, 4); break; case EHTokBool1x1: new(&type) TType(EbtBool, EvqTemporary, 0, 1, 1); break; case EHTokBool1x2: new(&type) TType(EbtBool, EvqTemporary, 0, 1, 2); break; case EHTokBool1x3: new(&type) TType(EbtBool, EvqTemporary, 0, 1, 3); break; case EHTokBool1x4: new(&type) TType(EbtBool, EvqTemporary, 0, 1, 4); break; case EHTokBool2x1: new(&type) TType(EbtBool, EvqTemporary, 0, 2, 1); break; case EHTokBool2x2: new(&type) TType(EbtBool, EvqTemporary, 0, 2, 2); break; case EHTokBool2x3: new(&type) TType(EbtBool, EvqTemporary, 0, 2, 3); break; case EHTokBool2x4: new(&type) TType(EbtBool, EvqTemporary, 0, 2, 4); break; case EHTokBool3x1: new(&type) TType(EbtBool, EvqTemporary, 0, 3, 1); break; case EHTokBool3x2: new(&type) TType(EbtBool, EvqTemporary, 0, 3, 2); break; case EHTokBool3x3: new(&type) TType(EbtBool, EvqTemporary, 0, 3, 3); break; case EHTokBool3x4: new(&type) TType(EbtBool, EvqTemporary, 0, 3, 4); break; case EHTokBool4x1: new(&type) TType(EbtBool, EvqTemporary, 0, 4, 1); break; case EHTokBool4x2: new(&type) TType(EbtBool, EvqTemporary, 0, 4, 2); break; case EHTokBool4x3: new(&type) TType(EbtBool, EvqTemporary, 0, 4, 3); break; case EHTokBool4x4: new(&type) TType(EbtBool, EvqTemporary, 0, 4, 4); break; case EHTokFloat1x1: new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 1); break; case EHTokFloat1x2: new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 2); break; case EHTokFloat1x3: new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 3); break; case EHTokFloat1x4: new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 4); break; case EHTokFloat2x1: new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 1); break; case EHTokFloat2x2: new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 2); break; case EHTokFloat2x3: new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 3); break; case EHTokFloat2x4: new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 4); break; case EHTokFloat3x1: new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 1); break; case EHTokFloat3x2: new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 2); break; case EHTokFloat3x3: new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 3); break; case EHTokFloat3x4: new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 4); break; case EHTokFloat4x1: new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 1); break; case EHTokFloat4x2: new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 2); break; case EHTokFloat4x3: new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 3); break; case EHTokFloat4x4: new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 4); break; case EHTokHalf1x1: new(&type) TType(half_bt, EvqTemporary, 0, 1, 1); break; case EHTokHalf1x2: new(&type) TType(half_bt, EvqTemporary, 0, 1, 2); break; case EHTokHalf1x3: new(&type) TType(half_bt, EvqTemporary, 0, 1, 3); break; case EHTokHalf1x4: new(&type) TType(half_bt, EvqTemporary, 0, 1, 4); break; case EHTokHalf2x1: new(&type) TType(half_bt, EvqTemporary, 0, 2, 1); break; case EHTokHalf2x2: new(&type) TType(half_bt, EvqTemporary, 0, 2, 2); break; case EHTokHalf2x3: new(&type) TType(half_bt, EvqTemporary, 0, 2, 3); break; case EHTokHalf2x4: new(&type) TType(half_bt, EvqTemporary, 0, 2, 4); break; case EHTokHalf3x1: new(&type) TType(half_bt, EvqTemporary, 0, 3, 1); break; case EHTokHalf3x2: new(&type) TType(half_bt, EvqTemporary, 0, 3, 2); break; case EHTokHalf3x3: new(&type) TType(half_bt, EvqTemporary, 0, 3, 3); break; case EHTokHalf3x4: new(&type) TType(half_bt, EvqTemporary, 0, 3, 4); break; case EHTokHalf4x1: new(&type) TType(half_bt, EvqTemporary, 0, 4, 1); break; case EHTokHalf4x2: new(&type) TType(half_bt, EvqTemporary, 0, 4, 2); break; case EHTokHalf4x3: new(&type) TType(half_bt, EvqTemporary, 0, 4, 3); break; case EHTokHalf4x4: new(&type) TType(half_bt, EvqTemporary, 0, 4, 4); break; case EHTokDouble1x1: new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 1); break; case EHTokDouble1x2: new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 2); break; case EHTokDouble1x3: new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 3); break; case EHTokDouble1x4: new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 4); break; case EHTokDouble2x1: new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 1); break; case EHTokDouble2x2: new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 2); break; case EHTokDouble2x3: new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 3); break; case EHTokDouble2x4: new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 4); break; case EHTokDouble3x1: new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 1); break; case EHTokDouble3x2: new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 2); break; case EHTokDouble3x3: new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 3); break; case EHTokDouble3x4: new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 4); break; case EHTokDouble4x1: new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 1); break; case EHTokDouble4x2: new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 2); break; case EHTokDouble4x3: new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 3); break; case EHTokDouble4x4: new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 4); break; case EHTokMin16float1x1: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 1, 1); break; case EHTokMin16float1x2: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 1, 2); break; case EHTokMin16float1x3: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 1, 3); break; case EHTokMin16float1x4: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 1, 4); break; case EHTokMin16float2x1: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 2, 1); break; case EHTokMin16float2x2: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 2, 2); break; case EHTokMin16float2x3: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 2, 3); break; case EHTokMin16float2x4: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 2, 4); break; case EHTokMin16float3x1: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 3, 1); break; case EHTokMin16float3x2: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 3, 2); break; case EHTokMin16float3x3: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 3, 3); break; case EHTokMin16float3x4: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 3, 4); break; case EHTokMin16float4x1: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 4, 1); break; case EHTokMin16float4x2: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 4, 2); break; case EHTokMin16float4x3: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 4, 3); break; case EHTokMin16float4x4: new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 4, 4); break; case EHTokMin10float1x1: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 1, 1); break; case EHTokMin10float1x2: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 1, 2); break; case EHTokMin10float1x3: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 1, 3); break; case EHTokMin10float1x4: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 1, 4); break; case EHTokMin10float2x1: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 2, 1); break; case EHTokMin10float2x2: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 2, 2); break; case EHTokMin10float2x3: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 2, 3); break; case EHTokMin10float2x4: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 2, 4); break; case EHTokMin10float3x1: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 3, 1); break; case EHTokMin10float3x2: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 3, 2); break; case EHTokMin10float3x3: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 3, 3); break; case EHTokMin10float3x4: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 3, 4); break; case EHTokMin10float4x1: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 4, 1); break; case EHTokMin10float4x2: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 4, 2); break; case EHTokMin10float4x3: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 4, 3); break; case EHTokMin10float4x4: new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 4, 4); break; case EHTokMin16int1x1: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 1, 1); break; case EHTokMin16int1x2: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 1, 2); break; case EHTokMin16int1x3: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 1, 3); break; case EHTokMin16int1x4: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 1, 4); break; case EHTokMin16int2x1: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 2, 1); break; case EHTokMin16int2x2: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 2, 2); break; case EHTokMin16int2x3: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 2, 3); break; case EHTokMin16int2x4: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 2, 4); break; case EHTokMin16int3x1: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 3, 1); break; case EHTokMin16int3x2: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 3, 2); break; case EHTokMin16int3x3: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 3, 3); break; case EHTokMin16int3x4: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 3, 4); break; case EHTokMin16int4x1: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 4, 1); break; case EHTokMin16int4x2: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 4, 2); break; case EHTokMin16int4x3: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 4, 3); break; case EHTokMin16int4x4: new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 4, 4); break; case EHTokMin12int1x1: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 1, 1); break; case EHTokMin12int1x2: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 1, 2); break; case EHTokMin12int1x3: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 1, 3); break; case EHTokMin12int1x4: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 1, 4); break; case EHTokMin12int2x1: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 2, 1); break; case EHTokMin12int2x2: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 2, 2); break; case EHTokMin12int2x3: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 2, 3); break; case EHTokMin12int2x4: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 2, 4); break; case EHTokMin12int3x1: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 3, 1); break; case EHTokMin12int3x2: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 3, 2); break; case EHTokMin12int3x3: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 3, 3); break; case EHTokMin12int3x4: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 3, 4); break; case EHTokMin12int4x1: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 4, 1); break; case EHTokMin12int4x2: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 4, 2); break; case EHTokMin12int4x3: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 4, 3); break; case EHTokMin12int4x4: new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 4, 4); break; case EHTokMin16uint1x1: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 1, 1); break; case EHTokMin16uint1x2: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 1, 2); break; case EHTokMin16uint1x3: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 1, 3); break; case EHTokMin16uint1x4: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 1, 4); break; case EHTokMin16uint2x1: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 2, 1); break; case EHTokMin16uint2x2: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 2, 2); break; case EHTokMin16uint2x3: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 2, 3); break; case EHTokMin16uint2x4: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 2, 4); break; case EHTokMin16uint3x1: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 3, 1); break; case EHTokMin16uint3x2: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 3, 2); break; case EHTokMin16uint3x3: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 3, 3); break; case EHTokMin16uint3x4: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 3, 4); break; case EHTokMin16uint4x1: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 4, 1); break; case EHTokMin16uint4x2: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 4, 2); break; case EHTokMin16uint4x3: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 4, 3); break; case EHTokMin16uint4x4: new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 4, 4); break; default: return false; } advanceToken(); if ((isUnorm || isSnorm) && !type.isFloatingDomain()) { parseContext.error(token.loc, "unorm and snorm only valid in floating point domain", "", ""); return false; } return true; } // struct // : struct_type IDENTIFIER post_decls LEFT_BRACE struct_declaration_list RIGHT_BRACE // | struct_type post_decls LEFT_BRACE struct_declaration_list RIGHT_BRACE // | struct_type IDENTIFIER // use of previously declared struct type // // struct_type // : STRUCT // | CLASS // | CBUFFER // | TBUFFER // bool HlslGrammar::acceptStruct(TType& type, TIntermNode*& nodeList) { // This storage qualifier will tell us whether it's an AST // block type or just a generic structure type. TStorageQualifier storageQualifier = EvqTemporary; bool readonly = false; if (acceptTokenClass(EHTokCBuffer)) { // CBUFFER storageQualifier = EvqUniform; } else if (acceptTokenClass(EHTokTBuffer)) { // TBUFFER storageQualifier = EvqBuffer; readonly = true; } else if (! acceptTokenClass(EHTokClass) && ! acceptTokenClass(EHTokStruct)) { // Neither CLASS nor STRUCT return false; } // Now known to be one of CBUFFER, TBUFFER, CLASS, or STRUCT // IDENTIFIER. It might also be a keyword which can double as an identifier. // For example: 'cbuffer ConstantBuffer' or 'struct ConstantBuffer' is legal. // 'cbuffer int' is also legal, and 'struct int' appears rejected only because // it attempts to redefine the 'int' type. const char* idString = getTypeString(peek()); TString structName = ""; if (peekTokenClass(EHTokIdentifier) || idString != nullptr) { if (idString != nullptr) structName = *idString; else structName = *token.string; advanceToken(); } // post_decls TQualifier postDeclQualifier; postDeclQualifier.clear(); bool postDeclsFound = acceptPostDecls(postDeclQualifier); // LEFT_BRACE, or // struct_type IDENTIFIER if (! acceptTokenClass(EHTokLeftBrace)) { if (structName.size() > 0 && !postDeclsFound && parseContext.lookupUserType(structName, type) != nullptr) { // struct_type IDENTIFIER return true; } else { expected("{"); return false; } } // struct_declaration_list TTypeList* typeList; // Save each member function so they can be processed after we have a fully formed 'this'. TVector functionDeclarators; parseContext.pushNamespace(structName); bool acceptedList = acceptStructDeclarationList(typeList, nodeList, functionDeclarators); parseContext.popNamespace(); if (! acceptedList) { expected("struct member declarations"); return false; } // RIGHT_BRACE if (! acceptTokenClass(EHTokRightBrace)) { expected("}"); return false; } // create the user-defined type if (storageQualifier == EvqTemporary) new(&type) TType(typeList, structName); else { postDeclQualifier.storage = storageQualifier; postDeclQualifier.readonly = readonly; new(&type) TType(typeList, structName, postDeclQualifier); // sets EbtBlock } parseContext.declareStruct(token.loc, structName, type); // For member functions: now that we know the type of 'this', go back and // - add their implicit argument with 'this' (not to the mangling, just the argument list) // - parse the functions, their tokens were saved for deferred parsing (now) for (int b = 0; b < (int)functionDeclarators.size(); ++b) { // update signature if (functionDeclarators[b].function->hasImplicitThis()) functionDeclarators[b].function->addThisParameter(type, intermediate.implicitThisName); } // All member functions get parsed inside the class/struct namespace and with the // class/struct members in a symbol-table level. parseContext.pushNamespace(structName); parseContext.pushThisScope(type, functionDeclarators); bool deferredSuccess = true; for (int b = 0; b < (int)functionDeclarators.size() && deferredSuccess; ++b) { // parse body pushTokenStream(functionDeclarators[b].body); if (! acceptFunctionBody(functionDeclarators[b], nodeList)) deferredSuccess = false; popTokenStream(); } parseContext.popThisScope(); parseContext.popNamespace(); return deferredSuccess; } // constantbuffer // : CONSTANTBUFFER LEFT_ANGLE type RIGHT_ANGLE bool HlslGrammar::acceptConstantBufferType(TType& type) { if (! acceptTokenClass(EHTokConstantBuffer)) return false; if (! acceptTokenClass(EHTokLeftAngle)) { expected("left angle bracket"); return false; } TType templateType; if (! acceptType(templateType)) { expected("type"); return false; } if (! acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } TQualifier postDeclQualifier; postDeclQualifier.clear(); postDeclQualifier.storage = EvqUniform; if (templateType.isStruct()) { // Make a block from the type parsed as the template argument TTypeList* typeList = templateType.getWritableStruct(); new(&type) TType(typeList, "", postDeclQualifier); // sets EbtBlock type.getQualifier().storage = EvqUniform; return true; } else { parseContext.error(token.loc, "non-structure type in ConstantBuffer", "", ""); return false; } } // texture_buffer // : TEXTUREBUFFER LEFT_ANGLE type RIGHT_ANGLE bool HlslGrammar::acceptTextureBufferType(TType& type) { if (! acceptTokenClass(EHTokTextureBuffer)) return false; if (! acceptTokenClass(EHTokLeftAngle)) { expected("left angle bracket"); return false; } TType templateType; if (! acceptType(templateType)) { expected("type"); return false; } if (! acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } templateType.getQualifier().storage = EvqBuffer; templateType.getQualifier().readonly = true; TType blockType(templateType.getWritableStruct(), "", templateType.getQualifier()); blockType.getQualifier().storage = EvqBuffer; blockType.getQualifier().readonly = true; type.shallowCopy(blockType); return true; } // struct_buffer // : APPENDSTRUCTUREDBUFFER // | BYTEADDRESSBUFFER // | CONSUMESTRUCTUREDBUFFER // | RWBYTEADDRESSBUFFER // | RWSTRUCTUREDBUFFER // | STRUCTUREDBUFFER bool HlslGrammar::acceptStructBufferType(TType& type) { const EHlslTokenClass structBuffType = peek(); // TODO: globallycoherent bool hasTemplateType = true; bool readonly = false; TStorageQualifier storage = EvqBuffer; TBuiltInVariable builtinType = EbvNone; switch (structBuffType) { case EHTokAppendStructuredBuffer: builtinType = EbvAppendConsume; break; case EHTokByteAddressBuffer: hasTemplateType = false; readonly = true; builtinType = EbvByteAddressBuffer; break; case EHTokConsumeStructuredBuffer: builtinType = EbvAppendConsume; break; case EHTokRWByteAddressBuffer: hasTemplateType = false; builtinType = EbvRWByteAddressBuffer; break; case EHTokRWStructuredBuffer: builtinType = EbvRWStructuredBuffer; break; case EHTokStructuredBuffer: builtinType = EbvStructuredBuffer; readonly = true; break; default: return false; // not a structure buffer type } advanceToken(); // consume the structure keyword // type on which this StructedBuffer is templatized. E.g, StructedBuffer ==> MyStruct TType* templateType = new TType; if (hasTemplateType) { if (! acceptTokenClass(EHTokLeftAngle)) { expected("left angle bracket"); return false; } if (! acceptType(*templateType)) { expected("type"); return false; } if (! acceptTokenClass(EHTokRightAngle)) { expected("right angle bracket"); return false; } } else { // byte address buffers have no explicit type. TType uintType(EbtUint, storage); templateType->shallowCopy(uintType); } // Create an unsized array out of that type. // TODO: does this work if it's already an array type? TArraySizes* unsizedArray = new TArraySizes; unsizedArray->addInnerSize(UnsizedArraySize); templateType->transferArraySizes(unsizedArray); templateType->getQualifier().storage = storage; // field name is canonical for all structbuffers templateType->setFieldName("@data"); TTypeList* blockStruct = new TTypeList; TTypeLoc member = { templateType, token.loc }; blockStruct->push_back(member); // This is the type of the buffer block (SSBO) TType blockType(blockStruct, "", templateType->getQualifier()); blockType.getQualifier().storage = storage; blockType.getQualifier().readonly = readonly; blockType.getQualifier().builtIn = builtinType; // We may have created an equivalent type before, in which case we should use its // deep structure. parseContext.shareStructBufferType(blockType); type.shallowCopy(blockType); return true; } // struct_declaration_list // : struct_declaration SEMI_COLON struct_declaration SEMI_COLON ... // // struct_declaration // : attributes fully_specified_type struct_declarator COMMA struct_declarator ... // | attributes fully_specified_type IDENTIFIER function_parameters post_decls compound_statement // member-function definition // // struct_declarator // : IDENTIFIER post_decls // | IDENTIFIER array_specifier post_decls // | IDENTIFIER function_parameters post_decls // member-function prototype // bool HlslGrammar::acceptStructDeclarationList(TTypeList*& typeList, TIntermNode*& nodeList, TVector& declarators) { typeList = new TTypeList(); HlslToken idToken; do { // success on seeing the RIGHT_BRACE coming up if (peekTokenClass(EHTokRightBrace)) break; // struct_declaration // attributes TAttributes attributes; acceptAttributes(attributes); bool declarator_list = false; // fully_specified_type TType memberType; if (! acceptFullySpecifiedType(memberType, nodeList, attributes)) { expected("member type"); return false; } // merge in the attributes parseContext.transferTypeAttributes(token.loc, attributes, memberType); // struct_declarator COMMA struct_declarator ... bool functionDefinitionAccepted = false; do { if (! acceptIdentifier(idToken)) { expected("member name"); return false; } if (peekTokenClass(EHTokLeftParen)) { // function_parameters if (!declarator_list) { declarators.resize(declarators.size() + 1); // request a token stream for deferred processing functionDefinitionAccepted = acceptMemberFunctionDefinition(nodeList, memberType, *idToken.string, declarators.back()); if (functionDefinitionAccepted) break; } expected("member-function definition"); return false; } else { // add it to the list of members TTypeLoc member = { new TType(EbtVoid), token.loc }; member.type->shallowCopy(memberType); member.type->setFieldName(*idToken.string); typeList->push_back(member); // array_specifier TArraySizes* arraySizes = nullptr; acceptArraySpecifier(arraySizes); if (arraySizes) typeList->back().type->transferArraySizes(arraySizes); acceptPostDecls(member.type->getQualifier()); // EQUAL assignment_expression if (acceptTokenClass(EHTokAssign)) { parseContext.warn(idToken.loc, "struct-member initializers ignored", "typedef", ""); TIntermTyped* expressionNode = nullptr; if (! acceptAssignmentExpression(expressionNode)) { expected("initializer"); return false; } } } // success on seeing the SEMICOLON coming up if (peekTokenClass(EHTokSemicolon)) break; // COMMA if (acceptTokenClass(EHTokComma)) declarator_list = true; else { expected(","); return false; } } while (true); // SEMI_COLON if (! functionDefinitionAccepted && ! acceptTokenClass(EHTokSemicolon)) { expected(";"); return false; } } while (true); return true; } // member_function_definition // | function_parameters post_decls compound_statement // // Expects type to have EvqGlobal for a static member and // EvqTemporary for non-static member. bool HlslGrammar::acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType& type, TString& memberName, TFunctionDeclarator& declarator) { bool accepted = false; TString* functionName = &memberName; parseContext.getFullNamespaceName(functionName); declarator.function = new TFunction(functionName, type); if (type.getQualifier().storage == EvqTemporary) declarator.function->setImplicitThis(); else declarator.function->setIllegalImplicitThis(); // function_parameters if (acceptFunctionParameters(*declarator.function)) { // post_decls acceptPostDecls(declarator.function->getWritableType().getQualifier()); // compound_statement (function body definition) if (peekTokenClass(EHTokLeftBrace)) { declarator.loc = token.loc; declarator.body = new TVector; accepted = acceptFunctionDefinition(declarator, nodeList, declarator.body); } } else expected("function parameter list"); return accepted; } // function_parameters // : LEFT_PAREN parameter_declaration COMMA parameter_declaration ... RIGHT_PAREN // | LEFT_PAREN VOID RIGHT_PAREN // bool HlslGrammar::acceptFunctionParameters(TFunction& function) { parseContext.beginParameterParsing(function); // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) return false; // VOID RIGHT_PAREN if (! acceptTokenClass(EHTokVoid)) { do { // parameter_declaration if (! acceptParameterDeclaration(function)) break; // COMMA if (! acceptTokenClass(EHTokComma)) break; } while (true); } // RIGHT_PAREN if (! acceptTokenClass(EHTokRightParen)) { expected(")"); return false; } return true; } // default_parameter_declaration // : EQUAL conditional_expression // : EQUAL initializer bool HlslGrammar::acceptDefaultParameterDeclaration(const TType& type, TIntermTyped*& node) { node = nullptr; // Valid not to have a default_parameter_declaration if (!acceptTokenClass(EHTokAssign)) return true; if (!acceptConditionalExpression(node)) { if (!acceptInitializer(node)) return false; // For initializer lists, we have to const-fold into a constructor for the type, so build // that. TFunction* constructor = parseContext.makeConstructorCall(token.loc, type); if (constructor == nullptr) // cannot construct return false; TIntermTyped* arguments = nullptr; for (int i = 0; i < int(node->getAsAggregate()->getSequence().size()); i++) parseContext.handleFunctionArgument(constructor, arguments, node->getAsAggregate()->getSequence()[i]->getAsTyped()); node = parseContext.handleFunctionCall(token.loc, constructor, node); } if (node == nullptr) return false; // If this is simply a constant, we can use it directly. if (node->getAsConstantUnion()) return true; // Otherwise, it has to be const-foldable. TIntermTyped* origNode = node; node = intermediate.fold(node->getAsAggregate()); if (node != nullptr && origNode != node) return true; parseContext.error(token.loc, "invalid default parameter value", "", ""); return false; } // parameter_declaration // : attributes attributed_declaration // // attributed_declaration // : fully_specified_type post_decls [ = default_parameter_declaration ] // | fully_specified_type identifier array_specifier post_decls [ = default_parameter_declaration ] // bool HlslGrammar::acceptParameterDeclaration(TFunction& function) { // attributes TAttributes attributes; acceptAttributes(attributes); // fully_specified_type TType* type = new TType; if (! acceptFullySpecifiedType(*type, attributes)) return false; // merge in the attributes parseContext.transferTypeAttributes(token.loc, attributes, *type); // identifier HlslToken idToken; acceptIdentifier(idToken); // array_specifier TArraySizes* arraySizes = nullptr; acceptArraySpecifier(arraySizes); if (arraySizes) { if (arraySizes->hasUnsized()) { parseContext.error(token.loc, "function parameter requires array size", "[]", ""); return false; } type->transferArraySizes(arraySizes); } // post_decls acceptPostDecls(type->getQualifier()); TIntermTyped* defaultValue; if (!acceptDefaultParameterDeclaration(*type, defaultValue)) return false; parseContext.paramFix(*type); // If any prior parameters have default values, all the parameters after that must as well. if (defaultValue == nullptr && function.getDefaultParamCount() > 0) { parseContext.error(idToken.loc, "invalid parameter after default value parameters", idToken.string->c_str(), ""); return false; } TParameter param = { idToken.string, type, defaultValue }; function.addParameter(param); return true; } // Do the work to create the function definition in addition to // parsing the body (compound_statement). // // If 'deferredTokens' are passed in, just get the token stream, // don't process. // bool HlslGrammar::acceptFunctionDefinition(TFunctionDeclarator& declarator, TIntermNode*& nodeList, TVector* deferredTokens) { parseContext.handleFunctionDeclarator(declarator.loc, *declarator.function, false /* not prototype */); if (deferredTokens) return captureBlockTokens(*deferredTokens); else return acceptFunctionBody(declarator, nodeList); } bool HlslGrammar::acceptFunctionBody(TFunctionDeclarator& declarator, TIntermNode*& nodeList) { // we might get back an entry-point TIntermNode* entryPointNode = nullptr; // This does a pushScope() TIntermNode* functionNode = parseContext.handleFunctionDefinition(declarator.loc, *declarator.function, declarator.attributes, entryPointNode); // compound_statement TIntermNode* functionBody = nullptr; if (! acceptCompoundStatement(functionBody)) return false; // this does a popScope() parseContext.handleFunctionBody(declarator.loc, *declarator.function, functionBody, functionNode); // Hook up the 1 or 2 function definitions. nodeList = intermediate.growAggregate(nodeList, functionNode); nodeList = intermediate.growAggregate(nodeList, entryPointNode); return true; } // Accept an expression with parenthesis around it, where // the parenthesis ARE NOT expression parenthesis, but the // syntactically required ones like in "if ( expression )". // // Also accepts a declaration expression; "if (int a = expression)". // // Note this one is not set up to be speculative; as it gives // errors if not found. // bool HlslGrammar::acceptParenExpression(TIntermTyped*& expression) { expression = nullptr; // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) expected("("); bool decl = false; TIntermNode* declNode = nullptr; decl = acceptControlDeclaration(declNode); if (decl) { if (declNode == nullptr || declNode->getAsTyped() == nullptr) { expected("initialized declaration"); return false; } else expression = declNode->getAsTyped(); } else { // no declaration if (! acceptExpression(expression)) { expected("expression"); return false; } } // RIGHT_PAREN if (! acceptTokenClass(EHTokRightParen)) expected(")"); return true; } // The top-level full expression recognizer. // // expression // : assignment_expression COMMA assignment_expression COMMA assignment_expression ... // bool HlslGrammar::acceptExpression(TIntermTyped*& node) { node = nullptr; // assignment_expression if (! acceptAssignmentExpression(node)) return false; if (! peekTokenClass(EHTokComma)) return true; do { // ... COMMA TSourceLoc loc = token.loc; advanceToken(); // ... assignment_expression TIntermTyped* rightNode = nullptr; if (! acceptAssignmentExpression(rightNode)) { expected("assignment expression"); return false; } node = intermediate.addComma(node, rightNode, loc); if (! peekTokenClass(EHTokComma)) return true; } while (true); } // initializer // : LEFT_BRACE RIGHT_BRACE // | LEFT_BRACE initializer_list RIGHT_BRACE // // initializer_list // : assignment_expression COMMA assignment_expression COMMA ... // bool HlslGrammar::acceptInitializer(TIntermTyped*& node) { // LEFT_BRACE if (! acceptTokenClass(EHTokLeftBrace)) return false; // RIGHT_BRACE TSourceLoc loc = token.loc; if (acceptTokenClass(EHTokRightBrace)) { // a zero-length initializer list node = intermediate.makeAggregate(loc); return true; } // initializer_list node = nullptr; do { // assignment_expression TIntermTyped* expr; if (! acceptAssignmentExpression(expr)) { expected("assignment expression in initializer list"); return false; } const bool firstNode = (node == nullptr); node = intermediate.growAggregate(node, expr, loc); // If every sub-node in the list has qualifier EvqConst, the returned node becomes // EvqConst. Otherwise, it becomes EvqTemporary. That doesn't happen with e.g. // EvqIn or EvqPosition, since the collection isn't EvqPosition if all the members are. if (firstNode && expr->getQualifier().storage == EvqConst) node->getQualifier().storage = EvqConst; else if (expr->getQualifier().storage != EvqConst) node->getQualifier().storage = EvqTemporary; // COMMA if (acceptTokenClass(EHTokComma)) { if (acceptTokenClass(EHTokRightBrace)) // allow trailing comma return true; continue; } // RIGHT_BRACE if (acceptTokenClass(EHTokRightBrace)) return true; expected(", or }"); return false; } while (true); } // Accept an assignment expression, where assignment operations // associate right-to-left. That is, it is implicit, for example // // a op (b op (c op d)) // // assigment_expression // : initializer // | conditional_expression // | conditional_expression assign_op conditional_expression assign_op conditional_expression ... // bool HlslGrammar::acceptAssignmentExpression(TIntermTyped*& node) { // initializer if (peekTokenClass(EHTokLeftBrace)) { if (acceptInitializer(node)) return true; expected("initializer"); return false; } // conditional_expression if (! acceptConditionalExpression(node)) return false; // assignment operation? TOperator assignOp = HlslOpMap::assignment(peek()); if (assignOp == EOpNull) return true; // assign_op TSourceLoc loc = token.loc; advanceToken(); // conditional_expression assign_op conditional_expression ... // Done by recursing this function, which automatically // gets the right-to-left associativity. TIntermTyped* rightNode = nullptr; if (! acceptAssignmentExpression(rightNode)) { expected("assignment expression"); return false; } node = parseContext.handleAssign(loc, assignOp, node, rightNode); node = parseContext.handleLvalue(loc, "assign", node); if (node == nullptr) { parseContext.error(loc, "could not create assignment", "", ""); return false; } if (! peekTokenClass(EHTokComma)) return true; return true; } // Accept a conditional expression, which associates right-to-left, // accomplished by the "true" expression calling down to lower // precedence levels than this level. // // conditional_expression // : binary_expression // | binary_expression QUESTION expression COLON assignment_expression // bool HlslGrammar::acceptConditionalExpression(TIntermTyped*& node) { // binary_expression if (! acceptBinaryExpression(node, PlLogicalOr)) return false; if (! acceptTokenClass(EHTokQuestion)) return true; node = parseContext.convertConditionalExpression(token.loc, node, false); if (node == nullptr) return false; ++parseContext.controlFlowNestingLevel; // this only needs to work right if no errors TIntermTyped* trueNode = nullptr; if (! acceptExpression(trueNode)) { expected("expression after ?"); return false; } TSourceLoc loc = token.loc; if (! acceptTokenClass(EHTokColon)) { expected(":"); return false; } TIntermTyped* falseNode = nullptr; if (! acceptAssignmentExpression(falseNode)) { expected("expression after :"); return false; } --parseContext.controlFlowNestingLevel; node = intermediate.addSelection(node, trueNode, falseNode, loc); return true; } // Accept a binary expression, for binary operations that // associate left-to-right. This is, it is implicit, for example // // ((a op b) op c) op d // // binary_expression // : expression op expression op expression ... // // where 'expression' is the next higher level in precedence. // bool HlslGrammar::acceptBinaryExpression(TIntermTyped*& node, PrecedenceLevel precedenceLevel) { if (precedenceLevel > PlMul) return acceptUnaryExpression(node); // assignment_expression if (! acceptBinaryExpression(node, (PrecedenceLevel)(precedenceLevel + 1))) return false; do { TOperator op = HlslOpMap::binary(peek()); PrecedenceLevel tokenLevel = HlslOpMap::precedenceLevel(op); if (tokenLevel < precedenceLevel) return true; // ... op TSourceLoc loc = token.loc; advanceToken(); // ... expression TIntermTyped* rightNode = nullptr; if (! acceptBinaryExpression(rightNode, (PrecedenceLevel)(precedenceLevel + 1))) { expected("expression"); return false; } node = intermediate.addBinaryMath(op, node, rightNode, loc); if (node == nullptr) { parseContext.error(loc, "Could not perform requested binary operation", "", ""); return false; } } while (true); } // unary_expression // : (type) unary_expression // | + unary_expression // | - unary_expression // | ! unary_expression // | ~ unary_expression // | ++ unary_expression // | -- unary_expression // | postfix_expression // bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node) { // (type) unary_expression // Have to look two steps ahead, because this could be, e.g., a // postfix_expression instead, since that also starts with at "(". if (acceptTokenClass(EHTokLeftParen)) { TType castType; if (acceptType(castType)) { // recognize any array_specifier as part of the type TArraySizes* arraySizes = nullptr; acceptArraySpecifier(arraySizes); if (arraySizes != nullptr) castType.transferArraySizes(arraySizes); TSourceLoc loc = token.loc; if (acceptTokenClass(EHTokRightParen)) { // We've matched "(type)" now, get the expression to cast if (! acceptUnaryExpression(node)) return false; // Hook it up like a constructor TFunction* constructorFunction = parseContext.makeConstructorCall(loc, castType); if (constructorFunction == nullptr) { expected("type that can be constructed"); return false; } TIntermTyped* arguments = nullptr; parseContext.handleFunctionArgument(constructorFunction, arguments, node); node = parseContext.handleFunctionCall(loc, constructorFunction, arguments); return node != nullptr; } else { // This could be a parenthesized constructor, ala (int(3)), and we just accepted // the '(int' part. We must back up twice. recedeToken(); recedeToken(); // Note, there are no array constructors like // (float[2](...)) if (arraySizes != nullptr) parseContext.error(loc, "parenthesized array constructor not allowed", "([]())", "", ""); } } else { // This isn't a type cast, but it still started "(", so if it is a // unary expression, it can only be a postfix_expression, so try that. // Back it up first. recedeToken(); return acceptPostfixExpression(node); } } // peek for "op unary_expression" TOperator unaryOp = HlslOpMap::preUnary(peek()); // postfix_expression (if no unary operator) if (unaryOp == EOpNull) return acceptPostfixExpression(node); // op unary_expression TSourceLoc loc = token.loc; advanceToken(); if (! acceptUnaryExpression(node)) return false; // + is a no-op if (unaryOp == EOpAdd) return true; node = intermediate.addUnaryMath(unaryOp, node, loc); // These unary ops require lvalues if (unaryOp == EOpPreIncrement || unaryOp == EOpPreDecrement) node = parseContext.handleLvalue(loc, "unary operator", node); return node != nullptr; } // postfix_expression // : LEFT_PAREN expression RIGHT_PAREN // | literal // | constructor // | IDENTIFIER [ COLONCOLON IDENTIFIER [ COLONCOLON IDENTIFIER ... ] ] // | function_call // | postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET // | postfix_expression DOT IDENTIFIER // | postfix_expression DOT IDENTIFIER arguments // | postfix_expression arguments // | postfix_expression INC_OP // | postfix_expression DEC_OP // bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) { // Not implemented as self-recursive: // The logical "right recursion" is done with a loop at the end // idToken will pick up either a variable or a function name in a function call HlslToken idToken; // Find something before the postfix operations, as they can't operate // on nothing. So, no "return true", they fall through, only "return false". if (acceptTokenClass(EHTokLeftParen)) { // LEFT_PAREN expression RIGHT_PAREN if (! acceptExpression(node)) { expected("expression"); return false; } if (! acceptTokenClass(EHTokRightParen)) { expected(")"); return false; } } else if (acceptLiteral(node)) { // literal (nothing else to do yet) } else if (acceptConstructor(node)) { // constructor (nothing else to do yet) } else if (acceptIdentifier(idToken)) { // user-type, namespace name, variable, or function name TString* fullName = idToken.string; while (acceptTokenClass(EHTokColonColon)) { // user-type or namespace name fullName = NewPoolTString(fullName->c_str()); fullName->append(parseContext.scopeMangler); if (acceptIdentifier(idToken)) fullName->append(*idToken.string); else { expected("identifier after ::"); return false; } } if (! peekTokenClass(EHTokLeftParen)) { node = parseContext.handleVariable(idToken.loc, fullName); if (node == nullptr) return false; } else if (acceptFunctionCall(idToken.loc, *fullName, node, nullptr)) { // function_call (nothing else to do yet) } else { expected("function call arguments"); return false; } } else { // nothing found, can't post operate return false; } // Something was found, chain as many postfix operations as exist. do { TSourceLoc loc = token.loc; TOperator postOp = HlslOpMap::postUnary(peek()); // Consume only a valid post-unary operator, otherwise we are done. switch (postOp) { case EOpIndexDirectStruct: case EOpIndexIndirect: case EOpPostIncrement: case EOpPostDecrement: case EOpScoping: advanceToken(); break; default: return true; } // We have a valid post-unary operator, process it. switch (postOp) { case EOpScoping: case EOpIndexDirectStruct: { // DOT IDENTIFIER // includes swizzles, member variables, and member functions HlslToken field; if (! acceptIdentifier(field)) { expected("swizzle or member"); return false; } if (peekTokenClass(EHTokLeftParen)) { // member function TIntermTyped* thisNode = node; // arguments if (! acceptFunctionCall(field.loc, *field.string, node, thisNode)) { expected("function parameters"); return false; } } else node = parseContext.handleDotDereference(field.loc, node, *field.string); break; } case EOpIndexIndirect: { // LEFT_BRACKET integer_expression RIGHT_BRACKET TIntermTyped* indexNode = nullptr; if (! acceptExpression(indexNode) || ! peekTokenClass(EHTokRightBracket)) { expected("expression followed by ']'"); return false; } advanceToken(); node = parseContext.handleBracketDereference(indexNode->getLoc(), node, indexNode); if (node == nullptr) return false; break; } case EOpPostIncrement: // INC_OP // fall through case EOpPostDecrement: // DEC_OP node = intermediate.addUnaryMath(postOp, node, loc); node = parseContext.handleLvalue(loc, "unary operator", node); break; default: assert(0); break; } } while (true); } // constructor // : type argument_list // bool HlslGrammar::acceptConstructor(TIntermTyped*& node) { // type TType type; if (acceptType(type)) { TFunction* constructorFunction = parseContext.makeConstructorCall(token.loc, type); if (constructorFunction == nullptr) return false; // arguments TIntermTyped* arguments = nullptr; if (! acceptArguments(constructorFunction, arguments)) { // It's possible this is a type keyword used as an identifier. Put the token back // for later use. recedeToken(); return false; } if (arguments == nullptr) { expected("one or more arguments"); return false; } // hook it up node = parseContext.handleFunctionCall(token.loc, constructorFunction, arguments); return node != nullptr; } return false; } // The function_call identifier was already recognized, and passed in as idToken. // // function_call // : [idToken] arguments // bool HlslGrammar::acceptFunctionCall(const TSourceLoc& loc, TString& name, TIntermTyped*& node, TIntermTyped* baseObject) { // name TString* functionName = nullptr; if (baseObject == nullptr) { functionName = &name; } else if (parseContext.isBuiltInMethod(loc, baseObject, name)) { // Built-in methods are not in the symbol table as methods, but as global functions // taking an explicit 'this' as the first argument. functionName = NewPoolTString(BUILTIN_PREFIX); functionName->append(name); } else { if (! baseObject->getType().isStruct()) { expected("structure"); return false; } functionName = NewPoolTString(""); functionName->append(baseObject->getType().getTypeName()); parseContext.addScopeMangler(*functionName); functionName->append(name); } // function TFunction* function = new TFunction(functionName, TType(EbtVoid)); // arguments TIntermTyped* arguments = nullptr; if (baseObject != nullptr) { // Non-static member functions have an implicit first argument of the base object. parseContext.handleFunctionArgument(function, arguments, baseObject); } if (! acceptArguments(function, arguments)) return false; // call node = parseContext.handleFunctionCall(loc, function, arguments); return node != nullptr; } // arguments // : LEFT_PAREN expression COMMA expression COMMA ... RIGHT_PAREN // // The arguments are pushed onto the 'function' argument list and // onto the 'arguments' aggregate. // bool HlslGrammar::acceptArguments(TFunction* function, TIntermTyped*& arguments) { // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) return false; // RIGHT_PAREN if (acceptTokenClass(EHTokRightParen)) return true; // must now be at least one expression... do { // expression TIntermTyped* arg; if (! acceptAssignmentExpression(arg)) return false; // hook it up parseContext.handleFunctionArgument(function, arguments, arg); // COMMA if (! acceptTokenClass(EHTokComma)) break; } while (true); // RIGHT_PAREN if (! acceptTokenClass(EHTokRightParen)) { expected(")"); return false; } return true; } bool HlslGrammar::acceptLiteral(TIntermTyped*& node) { switch (token.tokenClass) { case EHTokIntConstant: node = intermediate.addConstantUnion(token.i, token.loc, true); break; case EHTokUintConstant: node = intermediate.addConstantUnion(token.u, token.loc, true); break; case EHTokFloat16Constant: node = intermediate.addConstantUnion(token.d, EbtFloat16, token.loc, true); break; case EHTokFloatConstant: node = intermediate.addConstantUnion(token.d, EbtFloat, token.loc, true); break; case EHTokDoubleConstant: node = intermediate.addConstantUnion(token.d, EbtDouble, token.loc, true); break; case EHTokBoolConstant: node = intermediate.addConstantUnion(token.b, token.loc, true); break; case EHTokStringConstant: node = intermediate.addConstantUnion(token.string, token.loc, true); break; default: return false; } advanceToken(); return true; } // simple_statement // : SEMICOLON // | declaration_statement // | expression SEMICOLON // bool HlslGrammar::acceptSimpleStatement(TIntermNode*& statement) { // SEMICOLON if (acceptTokenClass(EHTokSemicolon)) return true; // declaration if (acceptDeclaration(statement)) return true; // expression TIntermTyped* node; if (acceptExpression(node)) statement = node; else return false; // SEMICOLON (following an expression) if (acceptTokenClass(EHTokSemicolon)) return true; else { expected(";"); return false; } } // compound_statement // : LEFT_CURLY statement statement ... RIGHT_CURLY // bool HlslGrammar::acceptCompoundStatement(TIntermNode*& retStatement) { TIntermAggregate* compoundStatement = nullptr; // LEFT_CURLY if (! acceptTokenClass(EHTokLeftBrace)) return false; // statement statement ... TIntermNode* statement = nullptr; while (acceptStatement(statement)) { TIntermBranch* branch = statement ? statement->getAsBranchNode() : nullptr; if (branch != nullptr && (branch->getFlowOp() == EOpCase || branch->getFlowOp() == EOpDefault)) { // hook up individual subsequences within a switch statement parseContext.wrapupSwitchSubsequence(compoundStatement, statement); compoundStatement = nullptr; } else { // hook it up to the growing compound statement compoundStatement = intermediate.growAggregate(compoundStatement, statement); } } if (compoundStatement) compoundStatement->setOperator(intermediate.getDebugInfo() ? EOpScope : EOpSequence); retStatement = compoundStatement; // RIGHT_CURLY return acceptTokenClass(EHTokRightBrace); } bool HlslGrammar::acceptScopedStatement(TIntermNode*& statement) { parseContext.pushScope(); bool result = acceptStatement(statement); parseContext.popScope(); return result; } bool HlslGrammar::acceptScopedCompoundStatement(TIntermNode*& statement) { parseContext.pushScope(); bool result = acceptCompoundStatement(statement); parseContext.popScope(); return result; } // statement // : attributes attributed_statement // // attributed_statement // : compound_statement // | simple_statement // | selection_statement // | switch_statement // | case_label // | default_label // | iteration_statement // | jump_statement // bool HlslGrammar::acceptStatement(TIntermNode*& statement) { statement = nullptr; // attributes TAttributes attributes; acceptAttributes(attributes); // attributed_statement switch (peek()) { case EHTokLeftBrace: return acceptScopedCompoundStatement(statement); case EHTokIf: return acceptSelectionStatement(statement, attributes); case EHTokSwitch: return acceptSwitchStatement(statement, attributes); case EHTokFor: case EHTokDo: case EHTokWhile: return acceptIterationStatement(statement, attributes); case EHTokContinue: case EHTokBreak: case EHTokDiscard: case EHTokReturn: return acceptJumpStatement(statement); case EHTokCase: return acceptCaseLabel(statement); case EHTokDefault: return acceptDefaultLabel(statement); case EHTokRightBrace: // Performance: not strictly necessary, but stops a bunch of hunting early, // and is how sequences of statements end. return false; default: return acceptSimpleStatement(statement); } return true; } // attributes // : [zero or more:] bracketed-attribute // // bracketed-attribute: // : LEFT_BRACKET scoped-attribute RIGHT_BRACKET // : LEFT_BRACKET LEFT_BRACKET scoped-attribute RIGHT_BRACKET RIGHT_BRACKET // // scoped-attribute: // : attribute // | namespace COLON COLON attribute // // attribute: // : UNROLL // | UNROLL LEFT_PAREN literal RIGHT_PAREN // | FASTOPT // | ALLOW_UAV_CONDITION // | BRANCH // | FLATTEN // | FORCECASE // | CALL // | DOMAIN // | EARLYDEPTHSTENCIL // | INSTANCE // | MAXTESSFACTOR // | OUTPUTCONTROLPOINTS // | OUTPUTTOPOLOGY // | PARTITIONING // | PATCHCONSTANTFUNC // | NUMTHREADS LEFT_PAREN x_size, y_size,z z_size RIGHT_PAREN // void HlslGrammar::acceptAttributes(TAttributes& attributes) { // For now, accept the [ XXX(X) ] syntax, but drop all but // numthreads, which is used to set the CS local size. // TODO: subset to correct set? Pass on? do { HlslToken attributeToken; // LEFT_BRACKET? if (! acceptTokenClass(EHTokLeftBracket)) return; // another LEFT_BRACKET? bool doubleBrackets = false; if (acceptTokenClass(EHTokLeftBracket)) doubleBrackets = true; // attribute? (could be namespace; will adjust later) if (!acceptIdentifier(attributeToken)) { if (!peekTokenClass(EHTokRightBracket)) { expected("namespace or attribute identifier"); advanceToken(); } } TString nameSpace; if (acceptTokenClass(EHTokColonColon)) { // namespace COLON COLON nameSpace = *attributeToken.string; // attribute if (!acceptIdentifier(attributeToken)) { expected("attribute identifier"); return; } } TIntermAggregate* expressions = nullptr; // (x, ...) if (acceptTokenClass(EHTokLeftParen)) { expressions = new TIntermAggregate; TIntermTyped* node; bool expectingExpression = false; while (acceptAssignmentExpression(node)) { expectingExpression = false; expressions->getSequence().push_back(node); if (acceptTokenClass(EHTokComma)) expectingExpression = true; } // 'expressions' is an aggregate with the expressions in it if (! acceptTokenClass(EHTokRightParen)) expected(")"); // Error for partial or missing expression if (expectingExpression || expressions->getSequence().empty()) expected("expression"); } // RIGHT_BRACKET if (!acceptTokenClass(EHTokRightBracket)) { expected("]"); return; } // another RIGHT_BRACKET? if (doubleBrackets && !acceptTokenClass(EHTokRightBracket)) { expected("]]"); return; } // Add any values we found into the attribute map. if (attributeToken.string != nullptr) { TAttributeType attributeType = parseContext.attributeFromName(nameSpace, *attributeToken.string); if (attributeType == EatNone) parseContext.warn(attributeToken.loc, "unrecognized attribute", attributeToken.string->c_str(), ""); else { TAttributeArgs attributeArgs = { attributeType, expressions }; attributes.push_back(attributeArgs); } } } while (true); } // selection_statement // : IF LEFT_PAREN expression RIGHT_PAREN statement // : IF LEFT_PAREN expression RIGHT_PAREN statement ELSE statement // bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement, const TAttributes& attributes) { TSourceLoc loc = token.loc; // IF if (! acceptTokenClass(EHTokIf)) return false; // so that something declared in the condition is scoped to the lifetimes // of the then-else statements parseContext.pushScope(); // LEFT_PAREN expression RIGHT_PAREN TIntermTyped* condition; if (! acceptParenExpression(condition)) return false; condition = parseContext.convertConditionalExpression(loc, condition); if (condition == nullptr) return false; // create the child statements TIntermNodePair thenElse = { nullptr, nullptr }; ++parseContext.controlFlowNestingLevel; // this only needs to work right if no errors // then statement if (! acceptScopedStatement(thenElse.node1)) { expected("then statement"); return false; } // ELSE if (acceptTokenClass(EHTokElse)) { // else statement if (! acceptScopedStatement(thenElse.node2)) { expected("else statement"); return false; } } // Put the pieces together statement = intermediate.addSelection(condition, thenElse, loc); parseContext.handleSelectionAttributes(loc, statement->getAsSelectionNode(), attributes); parseContext.popScope(); --parseContext.controlFlowNestingLevel; return true; } // switch_statement // : SWITCH LEFT_PAREN expression RIGHT_PAREN compound_statement // bool HlslGrammar::acceptSwitchStatement(TIntermNode*& statement, const TAttributes& attributes) { // SWITCH TSourceLoc loc = token.loc; if (! acceptTokenClass(EHTokSwitch)) return false; // LEFT_PAREN expression RIGHT_PAREN parseContext.pushScope(); TIntermTyped* switchExpression; if (! acceptParenExpression(switchExpression)) { parseContext.popScope(); return false; } // compound_statement parseContext.pushSwitchSequence(new TIntermSequence); ++parseContext.controlFlowNestingLevel; bool statementOkay = acceptCompoundStatement(statement); --parseContext.controlFlowNestingLevel; if (statementOkay) statement = parseContext.addSwitch(loc, switchExpression, statement ? statement->getAsAggregate() : nullptr, attributes); parseContext.popSwitchSequence(); parseContext.popScope(); return statementOkay; } // iteration_statement // : WHILE LEFT_PAREN condition RIGHT_PAREN statement // | DO LEFT_BRACE statement RIGHT_BRACE WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON // | FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement // // Non-speculative, only call if it needs to be found; WHILE or DO or FOR already seen. bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement, const TAttributes& attributes) { TSourceLoc loc = token.loc; TIntermTyped* condition = nullptr; EHlslTokenClass loop = peek(); assert(loop == EHTokDo || loop == EHTokFor || loop == EHTokWhile); // WHILE or DO or FOR advanceToken(); TIntermLoop* loopNode = nullptr; switch (loop) { case EHTokWhile: // so that something declared in the condition is scoped to the lifetime // of the while sub-statement parseContext.pushScope(); // this only needs to work right if no errors parseContext.nestLooping(); ++parseContext.controlFlowNestingLevel; // LEFT_PAREN condition RIGHT_PAREN if (! acceptParenExpression(condition)) return false; condition = parseContext.convertConditionalExpression(loc, condition); if (condition == nullptr) return false; // statement if (! acceptScopedStatement(statement)) { expected("while sub-statement"); return false; } parseContext.unnestLooping(); parseContext.popScope(); --parseContext.controlFlowNestingLevel; loopNode = intermediate.addLoop(statement, condition, nullptr, true, loc); statement = loopNode; break; case EHTokDo: parseContext.nestLooping(); // this only needs to work right if no errors ++parseContext.controlFlowNestingLevel; // statement if (! acceptScopedStatement(statement)) { expected("do sub-statement"); return false; } // WHILE if (! acceptTokenClass(EHTokWhile)) { expected("while"); return false; } // LEFT_PAREN condition RIGHT_PAREN if (! acceptParenExpression(condition)) return false; condition = parseContext.convertConditionalExpression(loc, condition); if (condition == nullptr) return false; if (! acceptTokenClass(EHTokSemicolon)) expected(";"); parseContext.unnestLooping(); --parseContext.controlFlowNestingLevel; loopNode = intermediate.addLoop(statement, condition, nullptr, false, loc); statement = loopNode; break; case EHTokFor: { // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) expected("("); // so that something declared in the condition is scoped to the lifetime // of the for sub-statement parseContext.pushScope(); // initializer TIntermNode* initNode = nullptr; if (! acceptSimpleStatement(initNode)) expected("for-loop initializer statement"); parseContext.nestLooping(); // this only needs to work right if no errors ++parseContext.controlFlowNestingLevel; // condition SEMI_COLON acceptExpression(condition); if (! acceptTokenClass(EHTokSemicolon)) expected(";"); if (condition != nullptr) { condition = parseContext.convertConditionalExpression(loc, condition); if (condition == nullptr) return false; } // iterator SEMI_COLON TIntermTyped* iterator = nullptr; acceptExpression(iterator); if (! acceptTokenClass(EHTokRightParen)) expected(")"); // statement if (! acceptScopedStatement(statement)) { expected("for sub-statement"); return false; } statement = intermediate.addForLoop(statement, initNode, condition, iterator, true, loc, loopNode); parseContext.popScope(); parseContext.unnestLooping(); --parseContext.controlFlowNestingLevel; break; } default: return false; } parseContext.handleLoopAttributes(loc, loopNode, attributes); return true; } // jump_statement // : CONTINUE SEMICOLON // | BREAK SEMICOLON // | DISCARD SEMICOLON // | RETURN SEMICOLON // | RETURN expression SEMICOLON // bool HlslGrammar::acceptJumpStatement(TIntermNode*& statement) { EHlslTokenClass jump = peek(); switch (jump) { case EHTokContinue: case EHTokBreak: case EHTokDiscard: case EHTokReturn: advanceToken(); break; default: // not something we handle in this function return false; } switch (jump) { case EHTokContinue: statement = intermediate.addBranch(EOpContinue, token.loc); if (parseContext.loopNestingLevel == 0) { expected("loop"); return false; } break; case EHTokBreak: statement = intermediate.addBranch(EOpBreak, token.loc); if (parseContext.loopNestingLevel == 0 && parseContext.switchSequenceStack.size() == 0) { expected("loop or switch"); return false; } break; case EHTokDiscard: statement = intermediate.addBranch(EOpKill, token.loc); break; case EHTokReturn: { // expression TIntermTyped* node; if (acceptExpression(node)) { // hook it up statement = parseContext.handleReturnValue(token.loc, node); } else statement = intermediate.addBranch(EOpReturn, token.loc); break; } default: assert(0); return false; } // SEMICOLON if (! acceptTokenClass(EHTokSemicolon)) expected(";"); return true; } // case_label // : CASE expression COLON // bool HlslGrammar::acceptCaseLabel(TIntermNode*& statement) { TSourceLoc loc = token.loc; if (! acceptTokenClass(EHTokCase)) return false; TIntermTyped* expression; if (! acceptExpression(expression)) { expected("case expression"); return false; } if (! acceptTokenClass(EHTokColon)) { expected(":"); return false; } statement = parseContext.intermediate.addBranch(EOpCase, expression, loc); return true; } // default_label // : DEFAULT COLON // bool HlslGrammar::acceptDefaultLabel(TIntermNode*& statement) { TSourceLoc loc = token.loc; if (! acceptTokenClass(EHTokDefault)) return false; if (! acceptTokenClass(EHTokColon)) { expected(":"); return false; } statement = parseContext.intermediate.addBranch(EOpDefault, loc); return true; } // array_specifier // : LEFT_BRACKET integer_expression RGHT_BRACKET ... // optional // : LEFT_BRACKET RGHT_BRACKET // optional // void HlslGrammar::acceptArraySpecifier(TArraySizes*& arraySizes) { arraySizes = nullptr; // Early-out if there aren't any array dimensions if (!peekTokenClass(EHTokLeftBracket)) return; // If we get here, we have at least one array dimension. This will track the sizes we find. arraySizes = new TArraySizes; // Collect each array dimension. while (acceptTokenClass(EHTokLeftBracket)) { TSourceLoc loc = token.loc; TIntermTyped* sizeExpr = nullptr; // Array sizing expression is optional. If omitted, array will be later sized by initializer list. const bool hasArraySize = acceptAssignmentExpression(sizeExpr); if (! acceptTokenClass(EHTokRightBracket)) { expected("]"); return; } if (hasArraySize) { TArraySize arraySize; parseContext.arraySizeCheck(loc, sizeExpr, arraySize); arraySizes->addInnerSize(arraySize); } else { arraySizes->addInnerSize(0); // sized by initializers. } } } // post_decls // : COLON semantic // optional // COLON PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN // optional // COLON REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt (COMMA SPACEN)opt RIGHT_PAREN // optional // COLON LAYOUT layout_qualifier_list // annotations // optional // // Return true if any tokens were accepted. That is, // false can be returned on successfully recognizing nothing, // not necessarily meaning bad syntax. // bool HlslGrammar::acceptPostDecls(TQualifier& qualifier) { bool found = false; do { // COLON if (acceptTokenClass(EHTokColon)) { found = true; HlslToken idToken; if (peekTokenClass(EHTokLayout)) acceptLayoutQualifierList(qualifier); else if (acceptTokenClass(EHTokPackOffset)) { // PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN if (! acceptTokenClass(EHTokLeftParen)) { expected("("); return false; } HlslToken locationToken; if (! acceptIdentifier(locationToken)) { expected("c[subcomponent][.component]"); return false; } HlslToken componentToken; if (acceptTokenClass(EHTokDot)) { if (! acceptIdentifier(componentToken)) { expected("component"); return false; } } if (! acceptTokenClass(EHTokRightParen)) { expected(")"); break; } parseContext.handlePackOffset(locationToken.loc, qualifier, *locationToken.string, componentToken.string); } else if (! acceptIdentifier(idToken)) { expected("layout, semantic, packoffset, or register"); return false; } else if (*idToken.string == "register") { // REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt (COMMA SPACEN)opt RIGHT_PAREN // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) { expected("("); return false; } HlslToken registerDesc; // for Type# HlslToken profile; if (! acceptIdentifier(registerDesc)) { expected("register number description"); return false; } if (registerDesc.string->size() > 1 && !isdigit((*registerDesc.string)[1]) && acceptTokenClass(EHTokComma)) { // Then we didn't really see the registerDesc yet, it was // actually the profile. Adjust... profile = registerDesc; if (! acceptIdentifier(registerDesc)) { expected("register number description"); return false; } } int subComponent = 0; if (acceptTokenClass(EHTokLeftBracket)) { // LEFT_BRACKET subcomponent RIGHT_BRACKET if (! peekTokenClass(EHTokIntConstant)) { expected("literal integer"); return false; } subComponent = token.i; advanceToken(); if (! acceptTokenClass(EHTokRightBracket)) { expected("]"); break; } } // (COMMA SPACEN)opt HlslToken spaceDesc; if (acceptTokenClass(EHTokComma)) { if (! acceptIdentifier(spaceDesc)) { expected ("space identifier"); return false; } } // RIGHT_PAREN if (! acceptTokenClass(EHTokRightParen)) { expected(")"); break; } parseContext.handleRegister(registerDesc.loc, qualifier, profile.string, *registerDesc.string, subComponent, spaceDesc.string); } else { // semantic, in idToken.string TString semanticUpperCase = *idToken.string; std::transform(semanticUpperCase.begin(), semanticUpperCase.end(), semanticUpperCase.begin(), ::toupper); parseContext.handleSemantic(idToken.loc, qualifier, mapSemantic(semanticUpperCase.c_str()), semanticUpperCase); } } else if (peekTokenClass(EHTokLeftAngle)) { found = true; acceptAnnotations(qualifier); } else break; } while (true); return found; } // // Get the stream of tokens from the scanner, but skip all syntactic/semantic // processing. // bool HlslGrammar::captureBlockTokens(TVector& tokens) { if (! peekTokenClass(EHTokLeftBrace)) return false; int braceCount = 0; do { switch (peek()) { case EHTokLeftBrace: ++braceCount; break; case EHTokRightBrace: --braceCount; break; case EHTokNone: // End of input before balance { } is bad... return false; default: break; } tokens.push_back(token); advanceToken(); } while (braceCount > 0); return true; } // Return a string for just the types that can also be declared as an identifier. const char* HlslGrammar::getTypeString(EHlslTokenClass tokenClass) const { switch (tokenClass) { case EHTokSample: return "sample"; case EHTokHalf: return "half"; case EHTokHalf1x1: return "half1x1"; case EHTokHalf1x2: return "half1x2"; case EHTokHalf1x3: return "half1x3"; case EHTokHalf1x4: return "half1x4"; case EHTokHalf2x1: return "half2x1"; case EHTokHalf2x2: return "half2x2"; case EHTokHalf2x3: return "half2x3"; case EHTokHalf2x4: return "half2x4"; case EHTokHalf3x1: return "half3x1"; case EHTokHalf3x2: return "half3x2"; case EHTokHalf3x3: return "half3x3"; case EHTokHalf3x4: return "half3x4"; case EHTokHalf4x1: return "half4x1"; case EHTokHalf4x2: return "half4x2"; case EHTokHalf4x3: return "half4x3"; case EHTokHalf4x4: return "half4x4"; case EHTokBool: return "bool"; case EHTokFloat: return "float"; case EHTokDouble: return "double"; case EHTokInt: return "int"; case EHTokUint: return "uint"; case EHTokMin16float: return "min16float"; case EHTokMin10float: return "min10float"; case EHTokMin16int: return "min16int"; case EHTokMin12int: return "min12int"; case EHTokConstantBuffer: return "ConstantBuffer"; case EHTokLayout: return "layout"; default: return nullptr; } } } // end namespace glslang glslang-16.0.0/glslang/HLSL/hlslGrammar.h000066400000000000000000000151751506534232700200600ustar00rootroot00000000000000// // Copyright (C) 2016-2018 Google, Inc. // Copyright (C) 2016 LunarG, Inc. // Copyright (C) 2023 Mobica Limited. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef HLSLGRAMMAR_H_ #define HLSLGRAMMAR_H_ #include "hlslParseHelper.h" #include "hlslOpMap.h" #include "hlslTokenStream.h" namespace glslang { class TFunctionDeclarator; // Should just be the grammar aspect of HLSL. // Described in more detail in hlslGrammar.cpp. class HlslGrammar : public HlslTokenStream { public: HlslGrammar(HlslScanContext& scanner, HlslParseContext& parseContext) : HlslTokenStream(scanner), parseContext(parseContext), intermediate(parseContext.intermediate), typeIdentifiers(false), unitNode(nullptr) { } virtual ~HlslGrammar() { } bool parse(); protected: HlslGrammar(); HlslGrammar& operator=(const HlslGrammar&); void expected(const char*); void unimplemented(const char*); bool acceptIdentifier(HlslToken&); bool acceptCompilationUnit(); bool acceptDeclarationList(TIntermNode*&); bool acceptDeclaration(TIntermNode*&); bool acceptControlDeclaration(TIntermNode*& node); bool acceptSamplerDeclarationDX9(TType&); bool acceptSamplerState(); bool acceptFullySpecifiedType(TType&, const TAttributes&); bool acceptFullySpecifiedType(TType&, TIntermNode*& nodeList, const TAttributes&, bool forbidDeclarators = false); bool acceptPreQualifier(TQualifier&); bool acceptPostQualifier(TQualifier&); bool acceptLayoutQualifierList(TQualifier&); bool acceptType(TType&); bool acceptType(TType&, TIntermNode*& nodeList); bool acceptTemplateVecMatBasicType(TBasicType&, TPrecisionQualifier&); bool acceptVectorTemplateType(TType&); bool acceptMatrixTemplateType(TType&); bool acceptTessellationDeclType(TBuiltInVariable&); bool acceptTessellationPatchTemplateType(TType&); bool acceptStreamOutTemplateType(TType&, TLayoutGeometry&); bool acceptOutputPrimitiveGeometry(TLayoutGeometry&); bool acceptAnnotations(TQualifier&); bool acceptSamplerTypeDX9(TType &); bool acceptSamplerType(TType&); bool acceptTextureType(TType&); bool acceptSubpassInputType(TType&); bool acceptStructBufferType(TType&); bool acceptTextureBufferType(TType&); bool acceptConstantBufferType(TType&); bool acceptStruct(TType&, TIntermNode*& nodeList); bool acceptStructDeclarationList(TTypeList*&, TIntermNode*& nodeList, TVector&); bool acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType&, TString& memberName, TFunctionDeclarator&); bool acceptFunctionParameters(TFunction&); bool acceptParameterDeclaration(TFunction&); bool acceptFunctionDefinition(TFunctionDeclarator&, TIntermNode*& nodeList, TVector* deferredTokens); bool acceptFunctionBody(TFunctionDeclarator& declarator, TIntermNode*& nodeList); bool acceptParenExpression(TIntermTyped*&); bool acceptExpression(TIntermTyped*&); bool acceptInitializer(TIntermTyped*&); bool acceptAssignmentExpression(TIntermTyped*&); bool acceptConditionalExpression(TIntermTyped*&); bool acceptBinaryExpression(TIntermTyped*&, PrecedenceLevel); bool acceptUnaryExpression(TIntermTyped*&); bool acceptPostfixExpression(TIntermTyped*&); bool acceptConstructor(TIntermTyped*&); bool acceptFunctionCall(const TSourceLoc&, TString& name, TIntermTyped*&, TIntermTyped* objectBase); bool acceptArguments(TFunction*, TIntermTyped*&); bool acceptLiteral(TIntermTyped*&); bool acceptSimpleStatement(TIntermNode*&); bool acceptCompoundStatement(TIntermNode*&); bool acceptScopedStatement(TIntermNode*&); bool acceptScopedCompoundStatement(TIntermNode*&); bool acceptStatement(TIntermNode*&); bool acceptNestedStatement(TIntermNode*&); void acceptAttributes(TAttributes&); bool acceptSelectionStatement(TIntermNode*&, const TAttributes&); bool acceptSwitchStatement(TIntermNode*&, const TAttributes&); bool acceptIterationStatement(TIntermNode*&, const TAttributes&); bool acceptJumpStatement(TIntermNode*&); bool acceptCaseLabel(TIntermNode*&); bool acceptDefaultLabel(TIntermNode*&); void acceptArraySpecifier(TArraySizes*&); bool acceptPostDecls(TQualifier&); bool acceptDefaultParameterDeclaration(const TType&, TIntermTyped*&); bool captureBlockTokens(TVector& tokens); const char* getTypeString(EHlslTokenClass tokenClass) const; HlslParseContext& parseContext; // state of parsing and helper functions for building the intermediate TIntermediate& intermediate; // the final product, the intermediate representation, includes the AST bool typeIdentifiers; // shader uses some types as identifiers TIntermNode* unitNode; }; } // end namespace glslang #endif // HLSLGRAMMAR_H_ glslang-16.0.0/glslang/HLSL/hlslOpMap.cpp000066400000000000000000000131011506534232700200240ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Map from physical token form (e.g. '-') to logical operator // form (e.g., binary subtract or unary negate). #include "hlslOpMap.h" namespace glslang { // Map parsing tokens that could be assignments into assignment operators. TOperator HlslOpMap::assignment(EHlslTokenClass op) { switch (op) { case EHTokAssign: return EOpAssign; case EHTokMulAssign: return EOpMulAssign; case EHTokDivAssign: return EOpDivAssign; case EHTokAddAssign: return EOpAddAssign; case EHTokModAssign: return EOpModAssign; case EHTokLeftAssign: return EOpLeftShiftAssign; case EHTokRightAssign: return EOpRightShiftAssign; case EHTokAndAssign: return EOpAndAssign; case EHTokXorAssign: return EOpExclusiveOrAssign; case EHTokOrAssign: return EOpInclusiveOrAssign; case EHTokSubAssign: return EOpSubAssign; default: return EOpNull; } } // Map parsing tokens that could be binary operations into binary operators. TOperator HlslOpMap::binary(EHlslTokenClass op) { switch (op) { case EHTokPlus: return EOpAdd; case EHTokDash: return EOpSub; case EHTokStar: return EOpMul; case EHTokSlash: return EOpDiv; case EHTokPercent: return EOpMod; case EHTokRightOp: return EOpRightShift; case EHTokLeftOp: return EOpLeftShift; case EHTokAmpersand: return EOpAnd; case EHTokVerticalBar: return EOpInclusiveOr; case EHTokCaret: return EOpExclusiveOr; case EHTokEqOp: return EOpEqual; case EHTokNeOp: return EOpNotEqual; case EHTokLeftAngle: return EOpLessThan; case EHTokRightAngle: return EOpGreaterThan; case EHTokLeOp: return EOpLessThanEqual; case EHTokGeOp: return EOpGreaterThanEqual; case EHTokOrOp: return EOpLogicalOr; case EHTokXorOp: return EOpLogicalXor; case EHTokAndOp: return EOpLogicalAnd; default: return EOpNull; } } // Map parsing tokens that could be unary operations into unary operators. // These are just the ones that can appear in front of its operand. TOperator HlslOpMap::preUnary(EHlslTokenClass op) { switch (op) { case EHTokPlus: return EOpAdd; // means no-op, but still a unary op was present case EHTokDash: return EOpNegative; case EHTokBang: return EOpLogicalNot; case EHTokTilde: return EOpBitwiseNot; case EHTokIncOp: return EOpPreIncrement; case EHTokDecOp: return EOpPreDecrement; default: return EOpNull; // means not a pre-unary op } } // Map parsing tokens that could be unary operations into unary operators. // These are just the ones that can appear behind its operand. TOperator HlslOpMap::postUnary(EHlslTokenClass op) { switch (op) { case EHTokDot: return EOpIndexDirectStruct; case EHTokLeftBracket: return EOpIndexIndirect; case EHTokIncOp: return EOpPostIncrement; case EHTokDecOp: return EOpPostDecrement; case EHTokColonColon: return EOpScoping; default: return EOpNull; // means not a post-unary op } } // Map operators into their level of precedence. PrecedenceLevel HlslOpMap::precedenceLevel(TOperator op) { switch (op) { case EOpLogicalOr: return PlLogicalOr; case EOpLogicalXor: return PlLogicalXor; case EOpLogicalAnd: return PlLogicalAnd; case EOpInclusiveOr: return PlBitwiseOr; case EOpExclusiveOr: return PlBitwiseXor; case EOpAnd: return PlBitwiseAnd; case EOpEqual: case EOpNotEqual: return PlEquality; case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: return PlRelational; case EOpRightShift: case EOpLeftShift: return PlShift; case EOpAdd: case EOpSub: return PlAdd; case EOpMul: case EOpDiv: case EOpMod: return PlMul; default: return PlBad; } } } // end namespace glslang glslang-16.0.0/glslang/HLSL/hlslOpMap.h000066400000000000000000000044271506534232700175040ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef HLSLOPMAP_H_ #define HLSLOPMAP_H_ #include "hlslScanContext.h" namespace glslang { enum PrecedenceLevel { PlBad, PlLogicalOr, PlLogicalXor, PlLogicalAnd, PlBitwiseOr, PlBitwiseXor, PlBitwiseAnd, PlEquality, PlRelational, PlShift, PlAdd, PlMul }; class HlslOpMap { public: static TOperator assignment(EHlslTokenClass op); static TOperator binary(EHlslTokenClass op); static TOperator preUnary(EHlslTokenClass op); static TOperator postUnary(EHlslTokenClass op); static PrecedenceLevel precedenceLevel(TOperator); }; } // end namespace glslang #endif // HLSLOPMAP_H_ glslang-16.0.0/glslang/HLSL/hlslParseHelper.cpp000066400000000000000000015360011506534232700212340ustar00rootroot00000000000000// // Copyright (C) 2017-2018 Google, Inc. // Copyright (C) 2017 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "hlslParseHelper.h" #include "hlslScanContext.h" #include "hlslGrammar.h" #include "hlslAttributes.h" #include "../Include/Common.h" #include "../MachineIndependent/Scan.h" #include "../MachineIndependent/preprocessor/PpContext.h" #include #include #include #include #include namespace glslang { HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, const TString sourceEntryPointName, bool forwardCompatible, EShMessages messages) : TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages, &sourceEntryPointName), annotationNestingLevel(0), inputPatch(nullptr), nextInLocation(0), nextOutLocation(0), entryPointFunction(nullptr), entryPointFunctionBody(nullptr), gsStreamOutput(nullptr), clipDistanceOutput(nullptr), cullDistanceOutput(nullptr), clipDistanceInput(nullptr), cullDistanceInput(nullptr), parsingEntrypointParameters(false) { globalUniformDefaults.clear(); globalUniformDefaults.layoutMatrix = ElmRowMajor; globalUniformDefaults.layoutPacking = ElpStd140; globalBufferDefaults.clear(); globalBufferDefaults.layoutMatrix = ElmRowMajor; globalBufferDefaults.layoutPacking = ElpStd430; globalInputDefaults.clear(); globalOutputDefaults.clear(); clipSemanticNSizeIn.fill(0); cullSemanticNSizeIn.fill(0); clipSemanticNSizeOut.fill(0); cullSemanticNSizeOut.fill(0); // "Shaders in the transform // feedback capturing mode have an initial global default of // layout(xfb_buffer = 0) out;" if (language == EShLangVertex || language == EShLangTessControl || language == EShLangTessEvaluation || language == EShLangGeometry) globalOutputDefaults.layoutXfbBuffer = 0; if (language == EShLangGeometry) globalOutputDefaults.layoutStream = 0; } HlslParseContext::~HlslParseContext() { } void HlslParseContext::initializeExtensionBehavior() { TParseContextBase::initializeExtensionBehavior(); // HLSL allows #line by default. extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhEnable; } void HlslParseContext::setLimits(const TBuiltInResource& r) { resources = r; intermediate.setLimits(resources); } // // Parse an array of strings using the parser in HlslRules. // // Returns true for successful acceptance of the shader, false if any errors. // bool HlslParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& input, bool versionWillBeError) { currentScanner = &input; ppContext.setInput(input, versionWillBeError); HlslScanContext scanContext(*this, ppContext); HlslGrammar grammar(scanContext, *this); if (!grammar.parse()) { // Print a message formated such that if you click on the message it will take you right to // the line through most UIs. const glslang::TSourceLoc& sourceLoc = input.getSourceLoc(); infoSink.info << sourceLoc.getFilenameStr() << "(" << sourceLoc.line << "): error at column " << sourceLoc.column << ", HLSL parsing failed.\n"; ++numErrors; return false; } finish(); return numErrors == 0; } // // Return true if this l-value node should be converted in some manner. // For instance: turning a load aggregate into a store in an l-value. // bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const { if (node == nullptr || node->getAsTyped() == nullptr) return false; const TIntermAggregate* lhsAsAggregate = node->getAsAggregate(); const TIntermBinary* lhsAsBinary = node->getAsBinaryNode(); // If it's a swizzled/indexed aggregate, look at the left node instead. if (lhsAsBinary != nullptr && (lhsAsBinary->getOp() == EOpVectorSwizzle || lhsAsBinary->getOp() == EOpIndexDirect)) lhsAsAggregate = lhsAsBinary->getLeft()->getAsAggregate(); if (lhsAsAggregate != nullptr && lhsAsAggregate->getOp() == EOpImageLoad) return true; return false; } void HlslParseContext::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* newTypeList) { newTypeList = nullptr; correctUniform(memberType.getQualifier()); if (memberType.isStruct()) { auto it = ioTypeMap.find(memberType.getStruct()); if (it != ioTypeMap.end() && it->second.uniform) newTypeList = it->second.uniform; } TParseContextBase::growGlobalUniformBlock(loc, memberType, memberName, newTypeList); } // // Return a TLayoutFormat corresponding to the given texture type. // TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const TType& txType) { if (txType.isStruct()) { // TODO: implement. error(loc, "unimplemented: structure type in image or buffer", "", ""); return ElfNone; } const int components = txType.getVectorSize(); const TBasicType txBasicType = txType.getBasicType(); const auto selectFormat = [this,&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) -> TLayoutFormat { if (intermediate.getNoStorageFormat()) return ElfNone; return components == 1 ? v1 : components == 2 ? v2 : v4; }; switch (txBasicType) { case EbtFloat: return selectFormat(ElfR32f, ElfRg32f, ElfRgba32f); case EbtInt: return selectFormat(ElfR32i, ElfRg32i, ElfRgba32i); case EbtUint: return selectFormat(ElfR32ui, ElfRg32ui, ElfRgba32ui); default: error(loc, "unknown basic type in image format", "", ""); return ElfNone; } } // // Both test and if necessary, spit out an error, to see if the node is really // an l-value that can be operated on this way. // // Returns true if there was an error. // bool HlslParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { if (shouldConvertLValue(node)) { // if we're writing to a texture, it must be an RW form. TIntermAggregate* lhsAsAggregate = node->getAsAggregate(); TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped(); if (!object->getType().getSampler().isImage()) { error(loc, "operator[] on a non-RW texture must be an r-value", "", ""); return true; } } // We tolerate samplers as l-values, even though they are nominally // illegal, because we expect a later optimization to eliminate them. if (node->getType().getBasicType() == EbtSampler) { intermediate.setNeedsLegalization(); return false; } // Let the base class check errors return TParseContextBase::lValueErrorCheck(loc, op, node); } // // This function handles l-value conversions and verifications. It uses, but is not synonymous // with lValueErrorCheck. That function accepts an l-value directly, while this one must be // given the surrounding tree - e.g, with an assignment, so we can convert the assign into a // series of other image operations. // // Most things are passed through unmodified, except for error checking. // TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* op, TIntermTyped*& node) { if (node == nullptr) return nullptr; TIntermBinary* nodeAsBinary = node->getAsBinaryNode(); TIntermUnary* nodeAsUnary = node->getAsUnaryNode(); TIntermAggregate* sequence = nullptr; TIntermTyped* lhs = nodeAsUnary ? nodeAsUnary->getOperand() : nodeAsBinary ? nodeAsBinary->getLeft() : nullptr; // Early bail out if there is no conversion to apply if (!shouldConvertLValue(lhs)) { if (lhs != nullptr) if (lValueErrorCheck(loc, op, lhs)) return nullptr; return node; } // *** If we get here, we're going to apply some conversion to an l-value. // Helper to create a load. const auto makeLoad = [&](TIntermSymbol* rhsTmp, TIntermTyped* object, TIntermTyped* coord, const TType& derefType) { TIntermAggregate* loadOp = new TIntermAggregate(EOpImageLoad); loadOp->setLoc(loc); loadOp->getSequence().push_back(object); loadOp->getSequence().push_back(intermediate.addSymbol(*coord->getAsSymbolNode())); loadOp->setType(derefType); sequence = intermediate.growAggregate(sequence, intermediate.addAssign(EOpAssign, rhsTmp, loadOp, loc), loc); }; // Helper to create a store. const auto makeStore = [&](TIntermTyped* object, TIntermTyped* coord, TIntermSymbol* rhsTmp) { TIntermAggregate* storeOp = new TIntermAggregate(EOpImageStore); storeOp->getSequence().push_back(object); storeOp->getSequence().push_back(coord); storeOp->getSequence().push_back(intermediate.addSymbol(*rhsTmp)); storeOp->setLoc(loc); storeOp->setType(TType(EbtVoid)); sequence = intermediate.growAggregate(sequence, storeOp); }; // Helper to create an assign. const auto makeBinary = [&](TOperator op, TIntermTyped* lhs, TIntermTyped* rhs) { sequence = intermediate.growAggregate(sequence, intermediate.addBinaryNode(op, lhs, rhs, loc, lhs->getType()), loc); }; // Helper to complete sequence by adding trailing variable, so we evaluate to the right value. const auto finishSequence = [&](TIntermSymbol* rhsTmp, const TType& derefType) -> TIntermAggregate* { // Add a trailing use of the temp, so the sequence returns the proper value. sequence = intermediate.growAggregate(sequence, intermediate.addSymbol(*rhsTmp)); sequence->setOperator(EOpSequence); sequence->setLoc(loc); sequence->setType(derefType); return sequence; }; // Helper to add unary op const auto makeUnary = [&](TOperator op, TIntermSymbol* rhsTmp) { sequence = intermediate.growAggregate(sequence, intermediate.addUnaryNode(op, intermediate.addSymbol(*rhsTmp), loc, rhsTmp->getType()), loc); }; // Return true if swizzle or index writes all components of the given variable. const auto writesAllComponents = [&](TIntermSymbol* var, TIntermBinary* swizzle) -> bool { if (swizzle == nullptr) // not a swizzle or index return true; // Track which components are being set. std::array compIsSet; compIsSet.fill(false); const TIntermConstantUnion* asConst = swizzle->getRight()->getAsConstantUnion(); const TIntermAggregate* asAggregate = swizzle->getRight()->getAsAggregate(); // This could be either a direct index, or a swizzle. if (asConst) { compIsSet[asConst->getConstArray()[0].getIConst()] = true; } else if (asAggregate) { const TIntermSequence& seq = asAggregate->getSequence(); for (int comp=0; compgetAsConstantUnion()->getConstArray()[0].getIConst()] = true; } else { assert(0); } // Return true if all components are being set by the index or swizzle return std::all_of(compIsSet.begin(), compIsSet.begin() + var->getType().getVectorSize(), [](bool isSet) { return isSet; } ); }; // Create swizzle matching input swizzle const auto addSwizzle = [&](TIntermSymbol* var, TIntermBinary* swizzle) -> TIntermTyped* { if (swizzle) return intermediate.addBinaryNode(swizzle->getOp(), var, swizzle->getRight(), loc, swizzle->getType()); else return var; }; TIntermBinary* lhsAsBinary = lhs->getAsBinaryNode(); TIntermAggregate* lhsAsAggregate = lhs->getAsAggregate(); bool lhsIsSwizzle = false; // If it's a swizzled L-value, remember the swizzle, and use the LHS. if (lhsAsBinary != nullptr && (lhsAsBinary->getOp() == EOpVectorSwizzle || lhsAsBinary->getOp() == EOpIndexDirect)) { lhsAsAggregate = lhsAsBinary->getLeft()->getAsAggregate(); lhsIsSwizzle = true; } TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* coord = lhsAsAggregate->getSequence()[1]->getAsTyped(); const TSampler& texSampler = object->getType().getSampler(); TType objDerefType; getTextureReturnType(texSampler, objDerefType); if (nodeAsBinary) { TIntermTyped* rhs = nodeAsBinary->getRight(); const TOperator assignOp = nodeAsBinary->getOp(); bool isModifyOp = false; switch (assignOp) { case EOpAddAssign: case EOpSubAssign: case EOpMulAssign: case EOpVectorTimesMatrixAssign: case EOpVectorTimesScalarAssign: case EOpMatrixTimesScalarAssign: case EOpMatrixTimesMatrixAssign: case EOpDivAssign: case EOpModAssign: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: case EOpLeftShiftAssign: case EOpRightShiftAssign: isModifyOp = true; [[fallthrough]]; case EOpAssign: { // Since this is an lvalue, we'll convert an image load to a sequence like this // (to still provide the value): // OpSequence // OpImageStore(object, lhs, rhs) // rhs // But if it's not a simple symbol RHS (say, a fn call), we don't want to duplicate the RHS, // so we'll convert instead to this: // OpSequence // rhsTmp = rhs // OpImageStore(object, coord, rhsTmp) // rhsTmp // If this is a read-modify-write op, like +=, we issue: // OpSequence // coordtmp = load's param1 // rhsTmp = OpImageLoad(object, coordTmp) // rhsTmp op= rhs // OpImageStore(object, coordTmp, rhsTmp) // rhsTmp // // If the lvalue is swizzled, we apply that when writing the temp variable, like so: // ... // rhsTmp.some_swizzle = ... // For partial writes, an error is generated. TIntermSymbol* rhsTmp = rhs->getAsSymbolNode(); TIntermTyped* coordTmp = coord; if (rhsTmp == nullptr || isModifyOp || lhsIsSwizzle) { rhsTmp = makeInternalVariableNode(loc, "storeTemp", objDerefType); // Partial updates not yet supported if (!writesAllComponents(rhsTmp, lhsAsBinary)) { error(loc, "unimplemented: partial image updates", "", ""); } // Assign storeTemp = rhs if (isModifyOp) { // We have to make a temp var for the coordinate, to avoid evaluating it twice. coordTmp = makeInternalVariableNode(loc, "coordTemp", coord->getType()); makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp) } // rhsTmp op= rhs. makeBinary(assignOp, addSwizzle(intermediate.addSymbol(*rhsTmp), lhsAsBinary), rhs); } makeStore(object, coordTmp, rhsTmp); // add a store return finishSequence(rhsTmp, objDerefType); // return rhsTmp from sequence } default: break; } } if (nodeAsUnary) { const TOperator assignOp = nodeAsUnary->getOp(); switch (assignOp) { case EOpPreIncrement: case EOpPreDecrement: { // We turn this into: // OpSequence // coordtmp = load's param1 // rhsTmp = OpImageLoad(object, coordTmp) // rhsTmp op // OpImageStore(object, coordTmp, rhsTmp) // rhsTmp TIntermSymbol* rhsTmp = makeInternalVariableNode(loc, "storeTemp", objDerefType); TIntermTyped* coordTmp = makeInternalVariableNode(loc, "coordTemp", coord->getType()); makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp) makeUnary(assignOp, rhsTmp); // op rhsTmp makeStore(object, coordTmp, rhsTmp); // OpImageStore(object, coordTmp, rhsTmp) return finishSequence(rhsTmp, objDerefType); // return rhsTmp from sequence } case EOpPostIncrement: case EOpPostDecrement: { // We turn this into: // OpSequence // coordtmp = load's param1 // rhsTmp1 = OpImageLoad(object, coordTmp) // rhsTmp2 = rhsTmp1 // rhsTmp2 op // OpImageStore(object, coordTmp, rhsTmp2) // rhsTmp1 (pre-op value) TIntermSymbol* rhsTmp1 = makeInternalVariableNode(loc, "storeTempPre", objDerefType); TIntermSymbol* rhsTmp2 = makeInternalVariableNode(loc, "storeTempPost", objDerefType); TIntermTyped* coordTmp = makeInternalVariableNode(loc, "coordTemp", coord->getType()); makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] makeLoad(rhsTmp1, object, coordTmp, objDerefType); // rhsTmp1 = OpImageLoad(object, coordTmp) makeBinary(EOpAssign, rhsTmp2, rhsTmp1); // rhsTmp2 = rhsTmp1 makeUnary(assignOp, rhsTmp2); // rhsTmp op makeStore(object, coordTmp, rhsTmp2); // OpImageStore(object, coordTmp, rhsTmp2) return finishSequence(rhsTmp1, objDerefType); // return rhsTmp from sequence } default: break; } } if (lhs) if (lValueErrorCheck(loc, op, lhs)) return nullptr; return node; } void HlslParseContext::handlePragma(const TSourceLoc& loc, const TVector& tokens) { if (pragmaCallback) pragmaCallback(loc.line, tokens); if (tokens.size() == 0) return; // These pragmas are case insensitive in HLSL, so we'll compare in lower case. TVector lowerTokens = tokens; for (auto it = lowerTokens.begin(); it != lowerTokens.end(); ++it) std::transform(it->begin(), it->end(), it->begin(), ::tolower); // Handle pack_matrix if (tokens.size() == 4 && lowerTokens[0] == "pack_matrix" && tokens[1] == "(" && tokens[3] == ")") { // Note that HLSL semantic order is Mrc, not Mcr like SPIR-V, so we reverse the sense. // Row major becomes column major and vice versa. if (lowerTokens[2] == "row_major") { globalUniformDefaults.layoutMatrix = globalBufferDefaults.layoutMatrix = ElmColumnMajor; } else if (lowerTokens[2] == "column_major") { globalUniformDefaults.layoutMatrix = globalBufferDefaults.layoutMatrix = ElmRowMajor; } else { // unknown majorness strings are treated as (HLSL column major)==(SPIR-V row major) warn(loc, "unknown pack_matrix pragma value", tokens[2].c_str(), ""); globalUniformDefaults.layoutMatrix = globalBufferDefaults.layoutMatrix = ElmRowMajor; } return; } // Handle once if (lowerTokens[0] == "once") { warn(loc, "not implemented", "#pragma once", ""); return; } } // // Look at a '.' matrix selector string and change it into components // for a matrix. There are two types: // // _21 second row, first column (one based) // _m21 third row, second column (zero based) // // Returns true if there is no error. // bool HlslParseContext::parseMatrixSwizzleSelector(const TSourceLoc& loc, const TString& fields, int cols, int rows, TSwizzleSelectors& components) { int startPos[MaxSwizzleSelectors]; int numComps = 0; TString compString = fields; // Find where each component starts, // recording the first character position after the '_'. for (size_t c = 0; c < compString.size(); ++c) { if (compString[c] == '_') { if (numComps >= MaxSwizzleSelectors) { error(loc, "matrix component swizzle has too many components", compString.c_str(), ""); return false; } if (c > compString.size() - 3 || ((compString[c+1] == 'm' || compString[c+1] == 'M') && c > compString.size() - 4)) { error(loc, "matrix component swizzle missing", compString.c_str(), ""); return false; } startPos[numComps++] = (int)c + 1; } } // Process each component for (int i = 0; i < numComps; ++i) { int pos = startPos[i]; int bias = -1; if (compString[pos] == 'm' || compString[pos] == 'M') { bias = 0; ++pos; } TMatrixSelector comp; comp.coord1 = compString[pos+0] - '0' + bias; comp.coord2 = compString[pos+1] - '0' + bias; if (comp.coord1 < 0 || comp.coord1 >= cols) { error(loc, "matrix row component out of range", compString.c_str(), ""); return false; } if (comp.coord2 < 0 || comp.coord2 >= rows) { error(loc, "matrix column component out of range", compString.c_str(), ""); return false; } components.push_back(comp); } return true; } // If the 'comps' express a column of a matrix, // return the column. Column means the first coords all match. // // Otherwise, return -1. // int HlslParseContext::getMatrixComponentsColumn(int rows, const TSwizzleSelectors& selector) { int col = -1; // right number of comps? if (selector.size() != rows) return -1; // all comps in the same column? // rows in order? col = selector[0].coord1; for (int i = 0; i < rows; ++i) { if (col != selector[i].coord1) return -1; if (i != selector[i].coord2) return -1; } return col; } // // Handle seeing a variable identifier in the grammar. // TIntermTyped* HlslParseContext::handleVariable(const TSourceLoc& loc, const TString* string) { int thisDepth; TSymbol* symbol = symbolTable.find(*string, thisDepth); if (symbol && symbol->getAsVariable() && symbol->getAsVariable()->isUserType()) { error(loc, "expected symbol, not user-defined type", string->c_str(), ""); return nullptr; } const TVariable* variable = nullptr; const TAnonMember* anon = symbol ? symbol->getAsAnonMember() : nullptr; TIntermTyped* node = nullptr; if (anon) { // It was a member of an anonymous container, which could be a 'this' structure. // Create a subtree for its dereference. if (thisDepth > 0) { variable = getImplicitThis(thisDepth); if (variable == nullptr) error(loc, "cannot access member variables (static member function?)", "this", ""); } if (variable == nullptr) variable = anon->getAnonContainer().getAsVariable(); TIntermTyped* container = intermediate.addSymbol(*variable, loc); TIntermTyped* constNode = intermediate.addConstantUnion(anon->getMemberNumber(), loc); node = intermediate.addIndex(EOpIndexDirectStruct, container, constNode, loc); node->setType(*(*variable->getType().getStruct())[anon->getMemberNumber()].type); if (node->getType().hiddenMember()) error(loc, "member of nameless block was not redeclared", string->c_str(), ""); } else { // Not a member of an anonymous container. // The symbol table search was done in the lexical phase. // See if it was a variable. variable = symbol ? symbol->getAsVariable() : nullptr; if (variable) { if ((variable->getType().getBasicType() == EbtBlock || variable->getType().getBasicType() == EbtStruct) && variable->getType().getStruct() == nullptr) { error(loc, "cannot be used (maybe an instance name is needed)", string->c_str(), ""); variable = nullptr; } } else { if (symbol) error(loc, "variable name expected", string->c_str(), ""); } // Recovery, if it wasn't found or was not a variable. if (variable == nullptr) { error(loc, "unknown variable", string->c_str(), ""); variable = new TVariable(string, TType(EbtVoid)); } if (variable->getType().getQualifier().isFrontEndConstant()) node = intermediate.addConstantUnion(variable->getConstArray(), variable->getType(), loc); else node = intermediate.addSymbol(*variable, loc); } if (variable->getType().getQualifier().isIo()) intermediate.addIoAccessed(*string); return node; } // // Handle operator[] on any objects it applies to. Currently: // Textures // Buffers // TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index) { // handle r-value operator[] on textures and images. l-values will be processed later. if (base->getType().getBasicType() == EbtSampler && !base->isArray()) { const TSampler& sampler = base->getType().getSampler(); if (sampler.isImage() || sampler.isTexture()) { if (! mipsOperatorMipArg.empty() && mipsOperatorMipArg.back().mipLevel == nullptr) { // The first operator[] to a .mips[] sequence is the mip level. We'll remember it. mipsOperatorMipArg.back().mipLevel = index; return base; // next [] index is to the same base. } else { TIntermAggregate* load = new TIntermAggregate(sampler.isImage() ? EOpImageLoad : EOpTextureFetch); TType sampReturnType; getTextureReturnType(sampler, sampReturnType); load->setType(sampReturnType); load->setLoc(loc); load->getSequence().push_back(base); load->getSequence().push_back(index); // Textures need a MIP. If we saw one go by, use it. Otherwise, use zero. if (sampler.isTexture()) { if (! mipsOperatorMipArg.empty()) { load->getSequence().push_back(mipsOperatorMipArg.back().mipLevel); mipsOperatorMipArg.pop_back(); } else { load->getSequence().push_back(intermediate.addConstantUnion(0, loc, true)); } } return load; } } } // Handle operator[] on structured buffers: this indexes into the array element of the buffer. // indexStructBufferContent returns nullptr if it isn't a structuredbuffer (SSBO). TIntermTyped* sbArray = indexStructBufferContent(loc, base); if (sbArray != nullptr) { // Now we'll apply the [] index to that array const TOperator idxOp = (index->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; TIntermTyped* element = intermediate.addIndex(idxOp, sbArray, index, loc); const TType derefType(sbArray->getType(), 0); element->setType(derefType); return element; } return nullptr; } // // Cast index value to a uint if it isn't already (for operator[], load indexes, etc) TIntermTyped* HlslParseContext::makeIntegerIndex(TIntermTyped* index) { const TBasicType indexBasicType = index->getType().getBasicType(); const int vecSize = index->getType().getVectorSize(); // We can use int types directly as the index if (indexBasicType == EbtInt || indexBasicType == EbtUint || indexBasicType == EbtInt64 || indexBasicType == EbtUint64) return index; // Cast index to unsigned integer if it isn't one. return intermediate.addConversion(EOpConstructUint, TType(EbtUint, EvqTemporary, vecSize), index); } // // Handle seeing a base[index] dereference in the grammar. // TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index) { index = makeIntegerIndex(index); if (index == nullptr) { error(loc, " unknown index type ", "", ""); return nullptr; } TIntermTyped* result = handleBracketOperator(loc, base, index); if (result != nullptr) return result; // it was handled as an operator[] bool flattened = false; int indexValue = 0; if (index->getQualifier().isFrontEndConstant()) indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); variableCheck(base); if (! base->isArray() && ! base->isMatrix() && ! base->isVector()) { if (base->getAsSymbolNode()) error(loc, " left of '[' is not of type array, matrix, or vector ", base->getAsSymbolNode()->getName().c_str(), ""); else error(loc, " left of '[' is not of type array, matrix, or vector ", "expression", ""); } else if (base->getType().getQualifier().isFrontEndConstant() && index->getQualifier().isFrontEndConstant()) { // both base and index are front-end constants checkIndex(loc, base->getType(), indexValue); return intermediate.foldDereference(base, indexValue, loc); } else { // at least one of base and index is variable... if (index->getQualifier().isFrontEndConstant()) checkIndex(loc, base->getType(), indexValue); if (base->getType().isScalarOrVec1()) result = base; else if (base->getAsSymbolNode() && wasFlattened(base)) { if (index->getQualifier().storage != EvqConst) error(loc, "Invalid variable index to flattened array", base->getAsSymbolNode()->getName().c_str(), ""); result = flattenAccess(base, indexValue); flattened = (result != base); } else { if (index->getQualifier().isFrontEndConstant()) { if (base->getType().isUnsizedArray()) base->getWritableType().updateImplicitArraySize(indexValue + 1); else checkIndex(loc, base->getType(), indexValue); result = intermediate.addIndex(EOpIndexDirect, base, index, loc); } else result = intermediate.addIndex(EOpIndexIndirect, base, index, loc); } } if (result == nullptr) { // Insert dummy error-recovery result result = intermediate.addConstantUnion(0.0, EbtFloat, loc); } else { // If the array reference was flattened, it has the correct type. E.g, if it was // a uniform array, it was flattened INTO a set of scalar uniforms, not scalar temps. // In that case, we preserve the qualifiers. if (!flattened) { // Insert valid dereferenced result TType newType(base->getType(), 0); // dereferenced type if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) newType.getQualifier().storage = EvqConst; else newType.getQualifier().storage = EvqTemporary; result->setType(newType); } } return result; } // Handle seeing a binary node with a math operation. TIntermTyped* HlslParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right) { TIntermTyped* result = intermediate.addBinaryMath(op, left, right, loc); if (result == nullptr) binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString()); return result; } // Handle seeing a unary node with a math operation. TIntermTyped* HlslParseContext::handleUnaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* childNode) { TIntermTyped* result = intermediate.addUnaryMath(op, childNode, loc); if (result) return result; else unaryOpError(loc, str, childNode->getCompleteString()); return childNode; } // // Return true if the name is a struct buffer method // bool HlslParseContext::isStructBufferMethod(const TString& name) const { return name == "GetDimensions" || name == "Load" || name == "Load2" || name == "Load3" || name == "Load4" || name == "Store" || name == "Store2" || name == "Store3" || name == "Store4" || name == "InterlockedAdd" || name == "InterlockedAnd" || name == "InterlockedCompareExchange" || name == "InterlockedCompareStore" || name == "InterlockedExchange" || name == "InterlockedMax" || name == "InterlockedMin" || name == "InterlockedOr" || name == "InterlockedXor" || name == "IncrementCounter" || name == "DecrementCounter" || name == "Append" || name == "Consume"; } // // Handle seeing a base.field dereference in the grammar, where 'field' is a // swizzle or member variable. // TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TIntermTyped* base, const TString& field) { variableCheck(base); if (base->isArray()) { error(loc, "cannot apply to an array:", ".", field.c_str()); return base; } TIntermTyped* result = base; if (base->getType().getBasicType() == EbtSampler) { // Handle .mips[mipid][pos] operation on textures const TSampler& sampler = base->getType().getSampler(); if (sampler.isTexture() && field == "mips") { // Push a null to signify that we expect a mip level under operator[] next. mipsOperatorMipArg.push_back(tMipsOperatorData(loc, nullptr)); // Keep 'result' pointing to 'base', since we expect an operator[] to go by next. } else { if (field == "mips") error(loc, "unexpected texture type for .mips[][] operator:", base->getType().getCompleteString().c_str(), ""); else error(loc, "unexpected operator on texture type:", field.c_str(), base->getType().getCompleteString().c_str()); } } else if (base->isVector() || base->isScalar()) { TSwizzleSelectors selectors; parseSwizzleSelector(loc, field, base->getVectorSize(), selectors); if (base->isScalar()) { if (selectors.size() == 1) return result; else { TType type(base->getBasicType(), EvqTemporary, selectors.size()); return addConstructor(loc, base, type); } } // Use EOpIndexDirect (below) with vec1.x so that it remains l-value (Test/hlsl.swizzle.vec1.comp) if (base->getVectorSize() == 1 && selectors.size() > 1) { TType scalarType(base->getBasicType(), EvqTemporary, 1); TType vectorType(base->getBasicType(), EvqTemporary, selectors.size()); return addConstructor(loc, addConstructor(loc, base, scalarType), vectorType); } if (base->getType().getQualifier().isFrontEndConstant()) result = intermediate.foldSwizzle(base, selectors, loc); else { if (selectors.size() == 1) { TIntermTyped* index = intermediate.addConstantUnion(selectors[0], loc); result = intermediate.addIndex(EOpIndexDirect, base, index, loc); result->setType(TType(base->getBasicType(), EvqTemporary)); } else { TIntermTyped* index = intermediate.addSwizzle(selectors, loc); result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc); result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size())); } } } else if (base->isMatrix()) { TSwizzleSelectors selectors; if (! parseMatrixSwizzleSelector(loc, field, base->getMatrixCols(), base->getMatrixRows(), selectors)) return result; if (selectors.size() == 1) { // Representable by m[c][r] if (base->getType().getQualifier().isFrontEndConstant()) { result = intermediate.foldDereference(base, selectors[0].coord1, loc); result = intermediate.foldDereference(result, selectors[0].coord2, loc); } else { result = intermediate.addIndex(EOpIndexDirect, base, intermediate.addConstantUnion(selectors[0].coord1, loc), loc); TType dereferencedCol(base->getType(), 0); result->setType(dereferencedCol); result = intermediate.addIndex(EOpIndexDirect, result, intermediate.addConstantUnion(selectors[0].coord2, loc), loc); TType dereferenced(dereferencedCol, 0); result->setType(dereferenced); } } else { int column = getMatrixComponentsColumn(base->getMatrixRows(), selectors); if (column >= 0) { // Representable by m[c] if (base->getType().getQualifier().isFrontEndConstant()) result = intermediate.foldDereference(base, column, loc); else { result = intermediate.addIndex(EOpIndexDirect, base, intermediate.addConstantUnion(column, loc), loc); TType dereferenced(base->getType(), 0); result->setType(dereferenced); } } else { // general case, not a column, not a single component TIntermTyped* index = intermediate.addSwizzle(selectors, loc); result = intermediate.addIndex(EOpMatrixSwizzle, base, index, loc); result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size())); } } } else if (base->getBasicType() == EbtStruct || base->getBasicType() == EbtBlock) { const TTypeList* fields = base->getType().getStruct(); bool fieldFound = false; int member; for (member = 0; member < (int)fields->size(); ++member) { if ((*fields)[member].type->getFieldName() == field) { fieldFound = true; break; } } if (fieldFound) { if (base->getAsSymbolNode() && wasFlattened(base)) { result = flattenAccess(base, member); } else { if (base->getType().getQualifier().storage == EvqConst) result = intermediate.foldDereference(base, member, loc); else { TIntermTyped* index = intermediate.addConstantUnion(member, loc); result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc); result->setType(*(*fields)[member].type); } } } else error(loc, "no such field in structure", field.c_str(), ""); } else error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString().c_str()); return result; } // // Return true if the field should be treated as a built-in method. // Return false otherwise. // bool HlslParseContext::isBuiltInMethod(const TSourceLoc&, TIntermTyped* base, const TString& field) { if (base == nullptr) return false; variableCheck(base); if (base->getType().getBasicType() == EbtSampler) { return true; } else if (isStructBufferType(base->getType()) && isStructBufferMethod(field)) { return true; } else if (field == "Append" || field == "RestartStrip") { // We cannot check the type here: it may be sanitized if we're not compiling a geometry shader, but // the code is around in the shader source. return true; } else return false; } // Independently establish a built-in that is a member of a structure. // 'arraySizes' are what's desired for the independent built-in, whatever // the higher-level source/expression of them was. void HlslParseContext::splitBuiltIn(const TString& baseName, const TType& memberType, const TArraySizes* arraySizes, const TQualifier& outerQualifier) { // Because of arrays of structs, we might be asked more than once, // but the arraySizes passed in should have captured the whole thing // the first time. // However, clip/cull rely on multiple updates. if (!isClipOrCullDistance(memberType)) if (splitBuiltIns.find(tInterstageIoData(memberType.getQualifier().builtIn, outerQualifier.storage)) != splitBuiltIns.end()) return; TVariable* ioVar = makeInternalVariable(baseName + "." + memberType.getFieldName(), memberType); if (arraySizes != nullptr && !memberType.isArray()) ioVar->getWritableType().copyArraySizes(*arraySizes); splitBuiltIns[tInterstageIoData(memberType.getQualifier().builtIn, outerQualifier.storage)] = ioVar; if (!isClipOrCullDistance(ioVar->getType())) trackLinkage(*ioVar); // Merge qualifier from the user structure mergeQualifiers(ioVar->getWritableType().getQualifier(), outerQualifier); // Fix the builtin type if needed (e.g, some types require fixed array sizes, no matter how the // shader declared them). This is done after mergeQualifiers(), in case fixBuiltInIoType looks // at the qualifier to determine e.g, in or out qualifications. fixBuiltInIoType(ioVar->getWritableType()); // But, not location, we're losing that ioVar->getWritableType().getQualifier().layoutLocation = TQualifier::layoutLocationEnd; } // Split a type into // 1. a struct of non-I/O members // 2. a collection of independent I/O variables void HlslParseContext::split(const TVariable& variable) { // Create a new variable: const TType& clonedType = *variable.getType().clone(); const TType& splitType = split(clonedType, variable.getName(), clonedType.getQualifier()); splitNonIoVars[variable.getUniqueId()] = makeInternalVariable(variable.getName(), splitType); } // Recursive implementation of split(). // Returns reference to the modified type. const TType& HlslParseContext::split(const TType& type, const TString& name, const TQualifier& outerQualifier) { if (type.isStruct()) { TTypeList* userStructure = type.getWritableStruct(); for (auto ioType = userStructure->begin(); ioType != userStructure->end(); ) { if (ioType->type->isBuiltIn()) { // move out the built-in splitBuiltIn(name, *ioType->type, type.getArraySizes(), outerQualifier); ioType = userStructure->erase(ioType); } else { split(*ioType->type, name + "." + ioType->type->getFieldName(), outerQualifier); ++ioType; } } } return type; } // Is this an aggregate that should be flattened? // Can be applied to intermediate levels of type in a hierarchy. // Some things like flattening uniform arrays are only about the top level // of the aggregate, triggered on 'topLevel'. bool HlslParseContext::shouldFlatten(const TType& type, TStorageQualifier qualifier, bool topLevel) const { switch (qualifier) { case EvqVaryingIn: case EvqVaryingOut: return type.isStruct() || type.isArray(); case EvqUniform: return (type.isArray() && intermediate.getFlattenUniformArrays() && topLevel) || (type.isStruct() && type.containsOpaque()); default: return false; }; } // Top level variable flattening: construct data void HlslParseContext::flatten(const TVariable& variable, bool linkage, bool arrayed) { const TType& type = variable.getType(); // If it's a standalone built-in, there is nothing to flatten if (type.isBuiltIn() && !type.isStruct()) return; auto entry = flattenMap.insert(std::make_pair(variable.getUniqueId(), TFlattenData(type.getQualifier().layoutBinding, type.getQualifier().layoutLocation))); if (type.isStruct() && type.getStruct()->size()==0) return; // if flattening arrayed io struct, array each member of dereferenced type if (arrayed) { const TType dereferencedType(type, 0); flatten(variable, dereferencedType, entry.first->second, variable.getName(), linkage, type.getQualifier(), type.getArraySizes()); } else { flatten(variable, type, entry.first->second, variable.getName(), linkage, type.getQualifier(), nullptr); } } // Recursively flatten the given variable at the provided type, building the flattenData as we go. // // This is mutually recursive with flattenStruct and flattenArray. // We are going to flatten an arbitrarily nested composite structure into a linear sequence of // members, and later on, we want to turn a path through the tree structure into a final // location in this linear sequence. // // If the tree was N-ary, that can be directly calculated. However, we are dealing with // arbitrary numbers - perhaps a struct of 7 members containing an array of 3. Thus, we must // build a data structure to allow the sequence of bracket and dot operators on arrays and // structs to arrive at the proper member. // // To avoid storing a tree with pointers, we are going to flatten the tree into a vector of integers. // The leaves are the indexes into the flattened member array. // Each level will have the next location for the Nth item stored sequentially, so for instance: // // struct { float2 a[2]; int b; float4 c[3] }; // // This will produce the following flattened tree: // Pos: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 // (3, 7, 8, 5, 6, 0, 1, 2, 11, 12, 13, 3, 4, 5} // // Given a reference to mystruct.c[1], the access chain is (2,1), so we traverse: // (0+2) = 8 --> (8+1) = 12 --> 12 = 4 // // so the 4th flattened member in traversal order is ours. // int HlslParseContext::flatten(const TVariable& variable, const TType& type, TFlattenData& flattenData, TString name, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes) { // If something is an arrayed struct, the array flattener will recursively call flatten() // to then flatten the struct, so this is an "if else": we don't do both. if (type.isArray()) return flattenArray(variable, type, flattenData, name, linkage, outerQualifier); else if (type.isStruct()) return flattenStruct(variable, type, flattenData, name, linkage, outerQualifier, builtInArraySizes); else { assert(0); // should never happen return -1; } } // Add a single flattened member to the flattened data being tracked for the composite // Returns true for the final flattening level. int HlslParseContext::addFlattenedMember(const TVariable& variable, const TType& type, TFlattenData& flattenData, const TString& memberName, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes) { if (!shouldFlatten(type, outerQualifier.storage, false)) { // This is as far as we flatten. Insert the variable. TVariable* memberVariable = makeInternalVariable(memberName, type); mergeQualifiers(memberVariable->getWritableType().getQualifier(), variable.getType().getQualifier()); if (flattenData.nextBinding != TQualifier::layoutBindingEnd) memberVariable->getWritableType().getQualifier().layoutBinding = flattenData.nextBinding++; if (memberVariable->getType().isBuiltIn()) { // inherited locations are nonsensical for built-ins (TODO: what if semantic had a number) memberVariable->getWritableType().getQualifier().layoutLocation = TQualifier::layoutLocationEnd; } else { // inherited locations must be auto bumped, not replicated if (flattenData.nextLocation != TQualifier::layoutLocationEnd) { memberVariable->getWritableType().getQualifier().layoutLocation = flattenData.nextLocation; flattenData.nextLocation += intermediate.computeTypeLocationSize(memberVariable->getType(), language); nextOutLocation = std::max(nextOutLocation, flattenData.nextLocation); } } // Only propagate arraysizes here for arrayed io if (variable.getType().getQualifier().isArrayedIo(language) && builtInArraySizes != nullptr) memberVariable->getWritableType().copyArraySizes(*builtInArraySizes); flattenData.offsets.push_back(static_cast(flattenData.members.size())); flattenData.members.push_back(memberVariable); if (linkage) trackLinkage(*memberVariable); return static_cast(flattenData.offsets.size()) - 1; // location of the member reference } else { // Further recursion required return flatten(variable, type, flattenData, memberName, linkage, outerQualifier, builtInArraySizes); } } // Figure out the mapping between an aggregate's top members and an // equivalent set of individual variables. // // Assumes shouldFlatten() or equivalent was called first. int HlslParseContext::flattenStruct(const TVariable& variable, const TType& type, TFlattenData& flattenData, TString name, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes) { assert(type.isStruct()); auto members = *type.getStruct(); // Reserve space for this tree level. int start = static_cast(flattenData.offsets.size()); int pos = start; flattenData.offsets.resize(int(pos + members.size()), -1); for (int member = 0; member < (int)members.size(); ++member) { TType& dereferencedType = *members[member].type; if (dereferencedType.isBuiltIn()) splitBuiltIn(variable.getName(), dereferencedType, builtInArraySizes, outerQualifier); else { const int mpos = addFlattenedMember(variable, dereferencedType, flattenData, name + "." + dereferencedType.getFieldName(), linkage, outerQualifier, builtInArraySizes == nullptr && dereferencedType.isArray() ? dereferencedType.getArraySizes() : builtInArraySizes); flattenData.offsets[pos++] = mpos; } } return start; } // Figure out mapping between an array's members and an // equivalent set of individual variables. // // Assumes shouldFlatten() or equivalent was called first. int HlslParseContext::flattenArray(const TVariable& variable, const TType& type, TFlattenData& flattenData, TString name, bool linkage, const TQualifier& outerQualifier) { assert(type.isSizedArray()); const int size = type.getOuterArraySize(); const TType dereferencedType(type, 0); if (name.empty()) name = variable.getName(); // Reserve space for this tree level. int start = static_cast(flattenData.offsets.size()); int pos = start; flattenData.offsets.resize(int(pos + size), -1); for (int element=0; element < size; ++element) { char elementNumBuf[20]; // sufficient for MAXINT snprintf(elementNumBuf, sizeof(elementNumBuf)-1, "[%d]", element); const int mpos = addFlattenedMember(variable, dereferencedType, flattenData, name + elementNumBuf, linkage, outerQualifier, type.getArraySizes()); flattenData.offsets[pos++] = mpos; } return start; } // Return true if we have flattened this node. bool HlslParseContext::wasFlattened(const TIntermTyped* node) const { return node != nullptr && node->getAsSymbolNode() != nullptr && wasFlattened(node->getAsSymbolNode()->getId()); } // Return true if we have split this structure bool HlslParseContext::wasSplit(const TIntermTyped* node) const { return node != nullptr && node->getAsSymbolNode() != nullptr && wasSplit(node->getAsSymbolNode()->getId()); } // Turn an access into an aggregate that was flattened to instead be // an access to the individual variable the member was flattened to. // Assumes wasFlattened() or equivalent was called first. TIntermTyped* HlslParseContext::flattenAccess(TIntermTyped* base, int member) { const TType dereferencedType(base->getType(), member); // dereferenced type const TIntermSymbol& symbolNode = *base->getAsSymbolNode(); TIntermTyped* flattened = flattenAccess(symbolNode.getId(), member, base->getQualifier().storage, dereferencedType, symbolNode.getFlattenSubset()); return flattened ? flattened : base; } TIntermTyped* HlslParseContext::flattenAccess(long long uniqueId, int member, TStorageQualifier outerStorage, const TType& dereferencedType, int subset) { const auto flattenData = flattenMap.find(uniqueId); if (flattenData == flattenMap.end()) return nullptr; // Calculate new cumulative offset from the packed tree int newSubset = flattenData->second.offsets[subset >= 0 ? subset + member : member]; TIntermSymbol* subsetSymbol; if (!shouldFlatten(dereferencedType, outerStorage, false)) { // Finished flattening: create symbol for variable member = flattenData->second.offsets[newSubset]; const TVariable* memberVariable = flattenData->second.members[member]; subsetSymbol = intermediate.addSymbol(*memberVariable); subsetSymbol->setFlattenSubset(-1); } else { // If this is not the final flattening, accumulate the position and return // an object of the partially dereferenced type. subsetSymbol = new TIntermSymbol(uniqueId, "flattenShadow", getLanguage(), dereferencedType); subsetSymbol->setFlattenSubset(newSubset); } return subsetSymbol; } // For finding where the first leaf is in a subtree of a multi-level aggregate // that is just getting a subset assigned. Follows the same logic as flattenAccess, // but logically going down the "left-most" tree branch each step of the way. // // Returns the offset into the first leaf of the subset. int HlslParseContext::findSubtreeOffset(const TIntermNode& node) const { const TIntermSymbol* sym = node.getAsSymbolNode(); if (sym == nullptr) return 0; if (!sym->isArray() && !sym->isStruct()) return 0; int subset = sym->getFlattenSubset(); if (subset == -1) return 0; // Getting this far means a partial aggregate is identified by the flatten subset. // Find the first leaf of the subset. const auto flattenData = flattenMap.find(sym->getId()); if (flattenData == flattenMap.end()) return 0; return findSubtreeOffset(sym->getType(), subset, flattenData->second.offsets); do { subset = flattenData->second.offsets[subset]; } while (true); } // Recursively do the desent int HlslParseContext::findSubtreeOffset(const TType& type, int subset, const TVector& offsets) const { if (!type.isArray() && !type.isStruct()) return offsets[subset]; TType derefType(type, 0); return findSubtreeOffset(derefType, offsets[subset], offsets); } // Find and return the split IO TVariable for id, or nullptr if none. TVariable* HlslParseContext::getSplitNonIoVar(long long id) const { const auto splitNonIoVar = splitNonIoVars.find(id); if (splitNonIoVar == splitNonIoVars.end()) return nullptr; return splitNonIoVar->second; } // Pass through to base class after remembering built-in mappings. void HlslParseContext::trackLinkage(TSymbol& symbol) { TBuiltInVariable biType = symbol.getType().getQualifier().builtIn; if (biType != EbvNone) builtInTessLinkageSymbols[biType] = symbol.clone(); TParseContextBase::trackLinkage(symbol); } // Returns true if the built-in is a clip or cull distance variable. bool HlslParseContext::isClipOrCullDistance(TBuiltInVariable builtIn) { return builtIn == EbvClipDistance || builtIn == EbvCullDistance; } // Some types require fixed array sizes in SPIR-V, but can be scalars or // arrays of sizes SPIR-V doesn't allow. For example, tessellation factors. // This creates the right size. A conversion is performed when the internal // type is copied to or from the external type. This corrects the externally // facing input or output type to abide downstream semantics. void HlslParseContext::fixBuiltInIoType(TType& type) { int requiredArraySize = 0; int requiredVectorSize = 0; switch (type.getQualifier().builtIn) { case EbvTessLevelOuter: requiredArraySize = 4; break; case EbvTessLevelInner: requiredArraySize = 2; break; case EbvSampleMask: { // Promote scalar to array of size 1. Leave existing arrays alone. if (!type.isArray()) requiredArraySize = 1; break; } case EbvWorkGroupId: requiredVectorSize = 3; break; case EbvGlobalInvocationId: requiredVectorSize = 3; break; case EbvLocalInvocationId: requiredVectorSize = 3; break; case EbvTessCoord: requiredVectorSize = 3; break; default: if (isClipOrCullDistance(type)) { const int loc = type.getQualifier().layoutLocation; if (type.getQualifier().builtIn == EbvClipDistance) { if (type.getQualifier().storage == EvqVaryingIn) clipSemanticNSizeIn[loc] = type.getVectorSize(); else clipSemanticNSizeOut[loc] = type.getVectorSize(); } else { if (type.getQualifier().storage == EvqVaryingIn) cullSemanticNSizeIn[loc] = type.getVectorSize(); else cullSemanticNSizeOut[loc] = type.getVectorSize(); } } return; } // Alter or set vector size as needed. if (requiredVectorSize > 0) { TType newType(type.getBasicType(), type.getQualifier().storage, requiredVectorSize); newType.getQualifier() = type.getQualifier(); type.shallowCopy(newType); } // Alter or set array size as needed. if (requiredArraySize > 0) { if (!type.isArray() || type.getOuterArraySize() != requiredArraySize) { TArraySizes* arraySizes = new TArraySizes; arraySizes->addInnerSize(requiredArraySize); type.transferArraySizes(arraySizes); } } } // Variables that correspond to the user-interface in and out of a stage // (not the built-in interface) are // - assigned locations // - registered as a linkage node (part of the stage's external interface). // Assumes it is called in the order in which locations should be assigned. void HlslParseContext::assignToInterface(TVariable& variable) { const auto assignLocation = [&](TVariable& variable) { TType& type = variable.getWritableType(); if (!type.isStruct() || type.getStruct()->size() > 0) { TQualifier& qualifier = type.getQualifier(); if (qualifier.storage == EvqVaryingIn || qualifier.storage == EvqVaryingOut) { if (qualifier.builtIn == EbvNone && !qualifier.hasLocation()) { // Strip off the outer array dimension for those having an extra one. int size; if (type.isArray() && qualifier.isArrayedIo(language)) { TType elementType(type, 0); size = intermediate.computeTypeLocationSize(elementType, language); } else size = intermediate.computeTypeLocationSize(type, language); if (qualifier.storage == EvqVaryingIn) { variable.getWritableType().getQualifier().layoutLocation = nextInLocation; nextInLocation += size; } else { variable.getWritableType().getQualifier().layoutLocation = nextOutLocation; nextOutLocation += size; } } trackLinkage(variable); } } }; if (wasFlattened(variable.getUniqueId())) { auto& memberList = flattenMap[variable.getUniqueId()].members; for (auto member = memberList.begin(); member != memberList.end(); ++member) assignLocation(**member); } else if (wasSplit(variable.getUniqueId())) { TVariable* splitIoVar = getSplitNonIoVar(variable.getUniqueId()); assignLocation(*splitIoVar); } else { assignLocation(variable); } } // // Handle seeing a function declarator in the grammar. This is the precursor // to recognizing a function prototype or function definition. // void HlslParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunction& function, bool prototype) { // // Multiple declarations of the same function name are allowed. // // If this is a definition, the definition production code will check for redefinitions // (we don't know at this point if it's a definition or not). // bool builtIn; TSymbol* symbol = symbolTable.find(function.getMangledName(), &builtIn); const TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr; if (prototype) { // All built-in functions are defined, even though they don't have a body. // Count their prototype as a definition instead. if (symbolTable.atBuiltInLevel()) function.setDefined(); else { if (prevDec && ! builtIn) symbol->getAsFunction()->setPrototyped(); // need a writable one, but like having prevDec as a const function.setPrototyped(); } } // This insert won't actually insert it if it's a duplicate signature, but it will still check for // other forms of name collisions. if (! symbolTable.insert(function)) error(loc, "function name is redeclaration of existing name", function.getName().c_str(), ""); } // For struct buffers with counters, we must pass the counter buffer as hidden parameter. // This adds the hidden parameter to the parameter list in 'paramNodes' if needed. // Otherwise, it's a no-op void HlslParseContext::addStructBufferHiddenCounterParam(const TSourceLoc& loc, TParameter& param, TIntermAggregate*& paramNodes) { if (! hasStructBuffCounter(*param.type)) return; const TString counterBlockName(intermediate.addCounterBufferName(*param.name)); TType counterType; counterBufferType(loc, counterType); TVariable *variable = makeInternalVariable(counterBlockName, counterType); if (! symbolTable.insert(*variable)) error(loc, "redefinition", variable->getName().c_str(), ""); paramNodes = intermediate.growAggregate(paramNodes, intermediate.addSymbol(*variable, loc), loc); } // // Handle seeing the function prototype in front of a function definition in the grammar. // The body is handled after this function returns. // // Returns an aggregate of parameter-symbol nodes. // TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& loc, TFunction& function, const TAttributes& attributes, TIntermNode*& entryPointTree) { currentCaller = function.getMangledName(); TSymbol* symbol = symbolTable.find(function.getMangledName()); TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr; if (prevDec == nullptr) error(loc, "can't find function", function.getName().c_str(), ""); // Note: 'prevDec' could be 'function' if this is the first time we've seen function // as it would have just been put in the symbol table. Otherwise, we're looking up // an earlier occurrence. if (prevDec && prevDec->isDefined()) { // Then this function already has a body. error(loc, "function already has a body", function.getName().c_str(), ""); } if (prevDec && ! prevDec->isDefined()) { prevDec->setDefined(); // Remember the return type for later checking for RETURN statements. currentFunctionType = &(prevDec->getType()); } else currentFunctionType = new TType(EbtVoid); functionReturnsValue = false; // Entry points need different I/O and other handling, transform it so the // rest of this function doesn't care. entryPointTree = transformEntryPoint(loc, function, attributes); // // New symbol table scope for body of function plus its arguments // pushScope(); // // Insert parameters into the symbol table. // If the parameter has no name, it's not an error, just don't insert it // (could be used for unused args). // // Also, accumulate the list of parameters into the AST, so lower level code // knows where to find parameters. // TIntermAggregate* paramNodes = new TIntermAggregate; for (int i = 0; i < function.getParamCount(); i++) { TParameter& param = function[i]; if (param.name != nullptr) { TVariable *variable = new TVariable(param.name, *param.type); if (i == 0 && function.hasImplicitThis()) { // Anonymous 'this' members are already in a symbol-table level, // and we need to know what function parameter to map them to. symbolTable.makeInternalVariable(*variable); pushImplicitThis(variable); } // Insert the parameters with name in the symbol table. if (! symbolTable.insert(*variable)) error(loc, "redefinition", variable->getName().c_str(), ""); // Add parameters to the AST list. if (shouldFlatten(variable->getType(), variable->getType().getQualifier().storage, true)) { // Expand the AST parameter nodes (but not the name mangling or symbol table view) // for structures that need to be flattened. flatten(*variable, false); const TTypeList* structure = variable->getType().getStruct(); for (int mem = 0; mem < (int)structure->size(); ++mem) { paramNodes = intermediate.growAggregate(paramNodes, flattenAccess(variable->getUniqueId(), mem, variable->getType().getQualifier().storage, *(*structure)[mem].type), loc); } } else { // Add the parameter to the AST paramNodes = intermediate.growAggregate(paramNodes, intermediate.addSymbol(*variable, loc), loc); } // Add hidden AST parameter for struct buffer counters, if needed. addStructBufferHiddenCounterParam(loc, param, paramNodes); } else paramNodes = intermediate.growAggregate(paramNodes, intermediate.addSymbol(*param.type, loc), loc); } if (function.hasIllegalImplicitThis()) pushImplicitThis(nullptr); intermediate.setAggregateOperator(paramNodes, EOpParameters, TType(EbtVoid), loc); loopNestingLevel = 0; controlFlowNestingLevel = 0; postEntryPointReturn = false; return paramNodes; } // Handle all [attrib] attribute for the shader entry point void HlslParseContext::handleEntryPointAttributes(const TSourceLoc& loc, const TAttributes& attributes) { for (auto it = attributes.begin(); it != attributes.end(); ++it) { switch (it->name) { case EatNumThreads: { const TIntermSequence& sequence = it->args->getSequence(); for (int lid = 0; lid < int(sequence.size()); ++lid) 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; if (! it->getInt(maxVertexCount)) { error(loc, "invalid maxvertexcount", "", ""); } else { if (! intermediate.setVertices(maxVertexCount)) error(loc, "cannot change previously set maxvertexcount attribute", "", ""); } break; } case EatPatchConstantFunc: { TString pcfName; if (! it->getString(pcfName, 0, false)) { error(loc, "invalid patch constant function", "", ""); } else { patchConstantFunctionName = pcfName; } break; } case EatDomain: { // Handle [domain("...")] TString domainStr; if (! it->getString(domainStr)) { error(loc, "invalid domain", "", ""); } else { TLayoutGeometry domain = ElgNone; if (domainStr == "tri") { domain = ElgTriangles; } else if (domainStr == "quad") { domain = ElgQuads; } else if (domainStr == "isoline") { domain = ElgIsolines; } else { error(loc, "unsupported domain type", domainStr.c_str(), ""); } if (language == EShLangTessEvaluation) { if (! intermediate.setInputPrimitive(domain)) error(loc, "cannot change previously set domain", TQualifier::getGeometryString(domain), ""); } else { if (! intermediate.setOutputPrimitive(domain)) error(loc, "cannot change previously set domain", TQualifier::getGeometryString(domain), ""); } } break; } case EatOutputTopology: { // Handle [outputtopology("...")] TString topologyStr; if (! it->getString(topologyStr)) { error(loc, "invalid outputtopology", "", ""); } else { TVertexOrder vertexOrder = EvoNone; TLayoutGeometry primitive = ElgNone; if (topologyStr == "point") { intermediate.setPointMode(); } else if (topologyStr == "line") { primitive = ElgIsolines; } else if (topologyStr == "triangle_cw") { vertexOrder = EvoCw; primitive = ElgTriangles; } else if (topologyStr == "triangle_ccw") { vertexOrder = EvoCcw; primitive = ElgTriangles; } else { error(loc, "unsupported outputtopology type", topologyStr.c_str(), ""); } if (vertexOrder != EvoNone) { if (! intermediate.setVertexOrder(vertexOrder)) { error(loc, "cannot change previously set outputtopology", TQualifier::getVertexOrderString(vertexOrder), ""); } } if (primitive != ElgNone) intermediate.setOutputPrimitive(primitive); } break; } case EatPartitioning: { // Handle [partitioning("...")] TString partitionStr; if (! it->getString(partitionStr)) { error(loc, "invalid partitioning", "", ""); } else { TVertexSpacing partitioning = EvsNone; if (partitionStr == "integer") { partitioning = EvsEqual; } else if (partitionStr == "fractional_even") { partitioning = EvsFractionalEven; } else if (partitionStr == "fractional_odd") { partitioning = EvsFractionalOdd; //} else if (partition == "pow2") { // TODO: currently nothing to map this to. } else { error(loc, "unsupported partitioning type", partitionStr.c_str(), ""); } if (! intermediate.setVertexSpacing(partitioning)) error(loc, "cannot change previously set partitioning", TQualifier::getVertexSpacingString(partitioning), ""); } break; } case EatOutputControlPoints: { // Handle [outputcontrolpoints("...")] int ctrlPoints; if (! it->getInt(ctrlPoints)) { error(loc, "invalid outputcontrolpoints", "", ""); } else { if (! intermediate.setVertices(ctrlPoints)) { error(loc, "cannot change previously set outputcontrolpoints attribute", "", ""); } } break; } case EatEarlyDepthStencil: intermediate.setEarlyFragmentTests(); break; case EatBuiltIn: case EatLocation: // tolerate these because of dual use of entrypoint and type attributes break; default: warn(loc, "attribute does not apply to entry point", "", ""); break; } } } // Update the given type with any type-like attribute information in the // attributes. void HlslParseContext::transferTypeAttributes(const TSourceLoc& loc, const TAttributes& attributes, TType& type, bool allowEntry) { if (attributes.size() == 0) return; int value; TString builtInString; for (auto it = attributes.begin(); it != attributes.end(); ++it) { switch (it->name) { case EatLocation: // location if (it->getInt(value)) type.getQualifier().layoutLocation = value; else error(loc, "needs a literal integer", "location", ""); break; case EatBinding: // binding if (it->getInt(value)) { type.getQualifier().layoutBinding = value; type.getQualifier().layoutSet = 0; } else error(loc, "needs a literal integer", "binding", ""); // set if (it->getInt(value, 1)) type.getQualifier().layoutSet = value; break; case EatGlobalBinding: // global cbuffer binding if (it->getInt(value)) globalUniformBinding = value; else error(loc, "needs a literal integer", "global binding", ""); // global cbuffer set if (it->getInt(value, 1)) globalUniformSet = value; break; case EatInputAttachment: // input attachment if (it->getInt(value)) type.getQualifier().layoutAttachment = value; else error(loc, "needs a literal integer", "input attachment", ""); break; case EatBuiltIn: // PointSize built-in if (it->getString(builtInString, 0, false)) { if (builtInString == "PointSize") type.getQualifier().builtIn = EbvPointSize; } break; case EatPushConstant: // push_constant type.getQualifier().layoutPushConstant = true; break; case EatConstantId: // specialization constant if (type.getQualifier().storage != EvqConst) { error(loc, "needs a const type", "constant_id", ""); break; } if (it->getInt(value)) { TSourceLoc loc; loc.init(); setSpecConstantId(loc, type.getQualifier(), value); } break; // image formats case EatFormatRgba32f: type.getQualifier().layoutFormat = ElfRgba32f; break; case EatFormatRgba16f: type.getQualifier().layoutFormat = ElfRgba16f; break; case EatFormatR32f: type.getQualifier().layoutFormat = ElfR32f; break; case EatFormatRgba8: type.getQualifier().layoutFormat = ElfRgba8; break; case EatFormatRgba8Snorm: type.getQualifier().layoutFormat = ElfRgba8Snorm; break; case EatFormatRg32f: type.getQualifier().layoutFormat = ElfRg32f; break; case EatFormatRg16f: type.getQualifier().layoutFormat = ElfRg16f; break; case EatFormatR11fG11fB10f: type.getQualifier().layoutFormat = ElfR11fG11fB10f; break; case EatFormatR16f: type.getQualifier().layoutFormat = ElfR16f; break; case EatFormatRgba16: type.getQualifier().layoutFormat = ElfRgba16; break; case EatFormatRgb10A2: type.getQualifier().layoutFormat = ElfRgb10A2; break; case EatFormatRg16: type.getQualifier().layoutFormat = ElfRg16; break; case EatFormatRg8: type.getQualifier().layoutFormat = ElfRg8; break; case EatFormatR16: type.getQualifier().layoutFormat = ElfR16; break; case EatFormatR8: type.getQualifier().layoutFormat = ElfR8; break; case EatFormatRgba16Snorm: type.getQualifier().layoutFormat = ElfRgba16Snorm; break; case EatFormatRg16Snorm: type.getQualifier().layoutFormat = ElfRg16Snorm; break; case EatFormatRg8Snorm: type.getQualifier().layoutFormat = ElfRg8Snorm; break; case EatFormatR16Snorm: type.getQualifier().layoutFormat = ElfR16Snorm; break; case EatFormatR8Snorm: type.getQualifier().layoutFormat = ElfR8Snorm; break; case EatFormatRgba32i: type.getQualifier().layoutFormat = ElfRgba32i; break; case EatFormatRgba16i: type.getQualifier().layoutFormat = ElfRgba16i; break; case EatFormatRgba8i: type.getQualifier().layoutFormat = ElfRgba8i; break; case EatFormatR32i: type.getQualifier().layoutFormat = ElfR32i; break; case EatFormatRg32i: type.getQualifier().layoutFormat = ElfRg32i; break; case EatFormatRg16i: type.getQualifier().layoutFormat = ElfRg16i; break; case EatFormatRg8i: type.getQualifier().layoutFormat = ElfRg8i; break; case EatFormatR16i: type.getQualifier().layoutFormat = ElfR16i; break; case EatFormatR8i: type.getQualifier().layoutFormat = ElfR8i; break; case EatFormatRgba32ui: type.getQualifier().layoutFormat = ElfRgba32ui; break; case EatFormatRgba16ui: type.getQualifier().layoutFormat = ElfRgba16ui; break; case EatFormatRgba8ui: type.getQualifier().layoutFormat = ElfRgba8ui; break; case EatFormatR32ui: type.getQualifier().layoutFormat = ElfR32ui; break; case EatFormatRgb10a2ui: type.getQualifier().layoutFormat = ElfRgb10a2ui; break; case EatFormatRg32ui: type.getQualifier().layoutFormat = ElfRg32ui; break; case EatFormatRg16ui: type.getQualifier().layoutFormat = ElfRg16ui; break; case EatFormatRg8ui: type.getQualifier().layoutFormat = ElfRg8ui; break; case EatFormatR16ui: type.getQualifier().layoutFormat = ElfR16ui; break; case EatFormatR8ui: type.getQualifier().layoutFormat = ElfR8ui; break; case EatFormatUnknown: type.getQualifier().layoutFormat = ElfNone; break; case EatNonWritable: type.getQualifier().readonly = true; break; case EatNonReadable: type.getQualifier().writeonly = true; break; default: if (! allowEntry) warn(loc, "attribute does not apply to a type", "", ""); break; } } } // // Do all special handling for the entry point, including wrapping // the shader's entry point with the official entry point that will call it. // // The following: // // retType shaderEntryPoint(args...) // shader declared entry point // { body } // // Becomes // // out retType ret; // in iargs...; // out oargs ...; // // void shaderEntryPoint() // synthesized, but official, entry point // { // args = iargs...; // ret = @shaderEntryPoint(args...); // oargs = args...; // } // retType @shaderEntryPoint(args...) // { body } // // The symbol table will still map the original entry point name to the // the modified function and its new name: // // symbol table: shaderEntryPoint -> @shaderEntryPoint // // Returns nullptr if no entry-point tree was built, otherwise, returns // a subtree that creates the entry point. // TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunction& userFunction, const TAttributes& attributes) { // Return true if this is a tessellation patch constant function input to a domain shader. const auto isDsPcfInput = [this](const TType& type) { return language == EShLangTessEvaluation && type.contains([](const TType* t) { return t->getQualifier().builtIn == EbvTessLevelOuter || t->getQualifier().builtIn == EbvTessLevelInner; }); }; // if we aren't in the entry point, fix the IO as such and exit if (! isEntrypointName(userFunction.getName())) { remapNonEntryPointIO(userFunction); return nullptr; } entryPointFunction = &userFunction; // needed in finish() // Handle entry point attributes handleEntryPointAttributes(loc, attributes); // entry point logic... // Move parameters and return value to shader in/out TVariable* entryPointOutput; // gets created in remapEntryPointIO TVector inputs; TVector outputs; remapEntryPointIO(userFunction, entryPointOutput, inputs, outputs); // Further this return/in/out transform by flattening, splitting, and assigning locations const auto makeVariableInOut = [&](TVariable& variable) { if (variable.getType().isStruct()) { bool arrayed = variable.getType().getQualifier().isArrayedIo(language); flatten(variable, false /* don't track linkage here, it will be tracked in assignToInterface() */, arrayed); } // TODO: flatten arrays too // TODO: flatten everything in I/O // TODO: replace all split with flatten, make all paths can create flattened I/O, then split code can be removed // For clip and cull distance, multiple output variables potentially get merged // into one in assignClipCullDistance. That code in assignClipCullDistance // handles the interface logic, so we avoid it here in that case. if (!isClipOrCullDistance(variable.getType())) assignToInterface(variable); }; if (entryPointOutput != nullptr) makeVariableInOut(*entryPointOutput); for (auto it = inputs.begin(); it != inputs.end(); ++it) if (!isDsPcfInput((*it)->getType())) // wait until the end for PCF input (see comment below) makeVariableInOut(*(*it)); for (auto it = outputs.begin(); it != outputs.end(); ++it) makeVariableInOut(*(*it)); // In the domain shader, PCF input must be at the end of the linkage. That's because in the // hull shader there is no ordering: the output comes from the separate PCF, which does not // participate in the argument list. That is always put at the end of the HS linkage, so the // input side of the DS must match. The argument may be in any position in the DS argument list // however, so this ensures the linkage is built in the correct order regardless of argument order. if (language == EShLangTessEvaluation) { for (auto it = inputs.begin(); it != inputs.end(); ++it) if (isDsPcfInput((*it)->getType())) makeVariableInOut(*(*it)); } // Add uniform parameters to the $Global uniform block. TVector opaque_uniforms; for (int i = 0; i < userFunction.getParamCount(); i++) { TType& paramType = *userFunction[i].type; TString& paramName = *userFunction[i].name; if (paramType.getQualifier().storage == EvqUniform) { if (!paramType.containsOpaque()) { // Add it to the global uniform block. growGlobalUniformBlock(loc, paramType, paramName); } else { // Declare it as a separate variable. TVariable *var = makeInternalVariable(paramName.c_str(), paramType); opaque_uniforms.push_back(var); } } } // Synthesize the call pushScope(); // matches the one in handleFunctionBody() // new signature TType voidType(EbtVoid); TFunction synthEntryPoint(&userFunction.getName(), voidType); TIntermAggregate* synthParams = new TIntermAggregate(); intermediate.setAggregateOperator(synthParams, EOpParameters, voidType, loc); intermediate.setEntryPointMangledName(synthEntryPoint.getMangledName().c_str()); intermediate.incrementEntryPointCount(); TFunction callee(&userFunction.getName(), voidType); // call based on old name, which is still in the symbol table // change original name userFunction.addPrefix("@"); // change the name in the function, but not in the symbol table // Copy inputs (shader-in -> calling arg), while building up the call node TVector argVars; TIntermAggregate* synthBody = new TIntermAggregate(); auto inputIt = inputs.begin(); auto opaqueUniformIt = opaque_uniforms.begin(); TIntermTyped* callingArgs = nullptr; for (int i = 0; i < userFunction.getParamCount(); i++) { TParameter& param = userFunction[i]; argVars.push_back(makeInternalVariable(*param.name, *param.type)); argVars.back()->getWritableType().getQualifier().makeTemporary(); // Track the input patch, which is the only non-builtin supported by hull shader PCF. if (param.getDeclaredBuiltIn() == EbvInputPatch) inputPatch = argVars.back(); TIntermSymbol* arg = intermediate.addSymbol(*argVars.back()); handleFunctionArgument(&callee, callingArgs, arg); if (param.type->getQualifier().isParamInput()) { 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) { if (!param.type->containsOpaque()) { // Look it up in the $Global uniform block. intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, handleVariable(loc, param.name))); } else { intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, intermediate.addSymbol(**opaqueUniformIt))); ++opaqueUniformIt; } } } // Call currentCaller = synthEntryPoint.getMangledName(); TIntermTyped* callReturn = handleFunctionCall(loc, &callee, callingArgs); currentCaller = userFunction.getMangledName(); // Return value if (entryPointOutput) { TIntermTyped* returnAssign; // For hull shaders, the wrapped entry point return value is written to // an array element as indexed by invocation ID, which we might have to make up. // This is required to match SPIR-V semantics. if (language == EShLangTessControl) { TIntermSymbol* invocationIdSym = findTessLinkageSymbol(EbvInvocationId); // If there is no user declared invocation ID, we must make one. if (invocationIdSym == nullptr) { TType invocationIdType(EbtUint, EvqIn, 1); TString* invocationIdName = NewPoolTString("InvocationId"); invocationIdType.getQualifier().builtIn = EbvInvocationId; TVariable* variable = makeInternalVariable(*invocationIdName, invocationIdType); globalQualifierFix(loc, variable->getWritableType().getQualifier()); trackLinkage(*variable); invocationIdSym = intermediate.addSymbol(*variable); } TIntermTyped* element = intermediate.addIndex(EOpIndexIndirect, intermediate.addSymbol(*entryPointOutput), invocationIdSym, loc); // Set the type of the array element being dereferenced const TType derefElementType(entryPointOutput->getType(), 0); element->setType(derefElementType); returnAssign = handleAssign(loc, EOpAssign, element, callReturn); } else { returnAssign = handleAssign(loc, EOpAssign, intermediate.addSymbol(*entryPointOutput), callReturn); } intermediate.growAggregate(synthBody, returnAssign); } else intermediate.growAggregate(synthBody, callReturn); // Output copies auto outputIt = outputs.begin(); for (int i = 0; i < userFunction.getParamCount(); i++) { TParameter& param = userFunction[i]; // GS outputs are via emit, so we do not copy them here. if (param.type->getQualifier().isParamOutput()) { if (param.getDeclaredBuiltIn() == EbvGsOutputStream) { // GS output stream does not assign outputs here: it's the Append() method // which writes to the output, probably multiple times separated by Emit. // We merely remember the output to use, here. gsStreamOutput = *outputIt; } else { intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, intermediate.addSymbol(**outputIt), intermediate.addSymbol(*argVars[i]))); } outputIt++; } } // Put the pieces together to form a full function subtree // for the synthesized entry point. synthBody->setOperator(EOpSequence); TIntermNode* synthFunctionDef = synthParams; handleFunctionBody(loc, synthEntryPoint, synthBody, synthFunctionDef); entryPointFunctionBody = synthBody; return synthFunctionDef; } void HlslParseContext::handleFunctionBody(const TSourceLoc& loc, TFunction& function, TIntermNode* functionBody, TIntermNode*& node) { node = intermediate.growAggregate(node, functionBody); intermediate.setAggregateOperator(node, EOpFunction, function.getType(), loc); node->getAsAggregate()->setName(function.getMangledName().c_str()); popScope(); if (function.hasImplicitThis()) popImplicitThis(); if (function.getType().getBasicType() != EbtVoid && ! functionReturnsValue) error(loc, "function does not return a value:", "", function.getName().c_str()); } // AST I/O is done through shader globals declared in the 'in' or 'out' // storage class. An HLSL entry point has a return value, input parameters // and output parameters. These need to get remapped to the AST I/O. void HlslParseContext::remapEntryPointIO(TFunction& function, TVariable*& returnValue, TVector& inputs, TVector& outputs) { // We might have in input structure type with no decorations that caused it // to look like an input type, yet it has (e.g.) interpolation types that // must be modified that turn it into an input type. // Hence, a missing ioTypeMap for 'input' might need to be synthesized. const auto synthesizeEditedInput = [this](TType& type) { // True if a type needs to be 'flat' const auto needsFlat = [](const TType& type) { return type.containsBasicType(EbtInt) || type.containsBasicType(EbtUint) || type.containsBasicType(EbtInt64) || type.containsBasicType(EbtUint64) || type.containsBasicType(EbtBool) || type.containsBasicType(EbtDouble); }; if (language == EShLangFragment && needsFlat(type)) { if (type.isStruct()) { TTypeList* finalList = nullptr; auto it = ioTypeMap.find(type.getStruct()); if (it == ioTypeMap.end() || it->second.input == nullptr) { // Getting here means we have no input struct, but we need one. auto list = new TTypeList; for (auto member = type.getStruct()->begin(); member != type.getStruct()->end(); ++member) { TType* newType = new TType; newType->shallowCopy(*member->type); TTypeLoc typeLoc = { newType, member->loc }; list->push_back(typeLoc); } // install the new input type if (it == ioTypeMap.end()) { tIoKinds newLists = { list, nullptr, nullptr }; ioTypeMap[type.getStruct()] = newLists; } else it->second.input = list; finalList = list; } else finalList = it->second.input; // edit for 'flat' for (auto member = finalList->begin(); member != finalList->end(); ++member) { if (needsFlat(*member->type)) { member->type->getQualifier().clearInterpolation(); member->type->getQualifier().flat = true; } } } else { type.getQualifier().clearInterpolation(); type.getQualifier().flat = true; } } }; // Do the actual work to make a type be a shader input or output variable, // and clear the original to be non-IO (for use as a normal function parameter/return). const auto makeIoVariable = [this](const char* name, TType& type, TStorageQualifier storage) -> TVariable* { TVariable* ioVariable = makeInternalVariable(name, type); clearUniformInputOutput(type.getQualifier()); if (type.isStruct()) { auto newLists = ioTypeMap.find(ioVariable->getType().getStruct()); if (newLists != ioTypeMap.end()) { if (storage == EvqVaryingIn && newLists->second.input) ioVariable->getWritableType().setStruct(newLists->second.input); else if (storage == EvqVaryingOut && newLists->second.output) ioVariable->getWritableType().setStruct(newLists->second.output); } } if (storage == EvqVaryingIn) { correctInput(ioVariable->getWritableType().getQualifier()); if (language == EShLangTessEvaluation) if (!ioVariable->getType().isArray()) ioVariable->getWritableType().getQualifier().patch = true; } else { correctOutput(ioVariable->getWritableType().getQualifier()); } ioVariable->getWritableType().getQualifier().storage = storage; fixBuiltInIoType(ioVariable->getWritableType()); return ioVariable; }; // return value is actually a shader-scoped output (out) if (function.getType().getBasicType() == EbtVoid) { returnValue = nullptr; } else { if (language == EShLangTessControl) { // tessellation evaluation in HLSL writes a per-ctrl-pt value, but it needs to be an // array in SPIR-V semantics. We'll write to it indexed by invocation ID. returnValue = makeIoVariable("@entryPointOutput", function.getWritableType(), EvqVaryingOut); TType outputType; outputType.shallowCopy(function.getType()); // vertices has necessarily already been set when handling entry point attributes. TArraySizes* arraySizes = new TArraySizes; arraySizes->addInnerSize(intermediate.getVertices()); outputType.transferArraySizes(arraySizes); clearUniformInputOutput(function.getWritableType().getQualifier()); returnValue = makeIoVariable("@entryPointOutput", outputType, EvqVaryingOut); } else { returnValue = makeIoVariable("@entryPointOutput", function.getWritableType(), EvqVaryingOut); } } // parameters are actually shader-scoped inputs and outputs (in or out) for (int i = 0; i < function.getParamCount(); i++) { TType& paramType = *function[i].type; if (paramType.getQualifier().isParamInput()) { synthesizeEditedInput(paramType); TVariable* argAsGlobal = makeIoVariable(function[i].name->c_str(), paramType, EvqVaryingIn); inputs.push_back(argAsGlobal); } if (paramType.getQualifier().isParamOutput()) { TVariable* argAsGlobal = makeIoVariable(function[i].name->c_str(), paramType, EvqVaryingOut); outputs.push_back(argAsGlobal); } } } // An HLSL function that looks like an entry point, but is not, // declares entry point IO built-ins, but these have to be undone. void HlslParseContext::remapNonEntryPointIO(TFunction& function) { // return value if (function.getType().getBasicType() != EbtVoid) clearUniformInputOutput(function.getWritableType().getQualifier()); // parameters. // References to structuredbuffer types are left unmodified for (int i = 0; i < function.getParamCount(); i++) if (!isReference(*function[i].type)) 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) { functionReturnsValue = true; if (currentFunctionType->getBasicType() == EbtVoid) { error(loc, "void function cannot return a value", "return", ""); return intermediate.addBranch(EOpReturn, loc); } else if (*currentFunctionType != value->getType()) { value = intermediate.addConversion(EOpReturn, *currentFunctionType, value); if (value && *currentFunctionType != value->getType()) value = intermediate.addUniShapeConversion(EOpReturn, *currentFunctionType, value); if (value == nullptr || *currentFunctionType != value->getType()) { error(loc, "type does not match, or is not convertible to, the function's return type", "return", ""); return value; } } return intermediate.addBranch(EOpReturn, value, loc); } void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped*& arguments, TIntermTyped* newArg) { TParameter param = { nullptr, new TType, nullptr }; param.type->shallowCopy(newArg->getType()); function->addParameter(param); if (arguments) arguments = intermediate.growAggregate(arguments, newArg); else 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 TIntermTyped* HlslParseContext::assignPosition(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) { // If we are not asked for Y inversion, use a plain old assign. if (!intermediate.getInvertY()) return intermediate.addAssign(op, left, right, loc); // If we get here, we should invert Y. 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("@position", right->getType()); rhsTempVar->getWritableType().getQualifier().makeTemporary(); { TIntermTyped* rhsTempSym = intermediate.addSymbol(*rhsTempVar, loc); assignList = intermediate.growAggregate(assignList, intermediate.addAssign(EOpAssign, rhsTempSym, right, loc), loc); } // pos.y = -pos.y { const int Y = 1; TIntermTyped* tempSymL = intermediate.addSymbol(*rhsTempVar, loc); TIntermTyped* tempSymR = intermediate.addSymbol(*rhsTempVar, loc); TIntermTyped* index = intermediate.addConstantUnion(Y, 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); TIntermTyped* yNeg = intermediate.addUnaryMath(EOpNegative, rhsElement, loc); assignList = intermediate.growAggregate(assignList, intermediate.addAssign(EOpAssign, lhsElement, yNeg, loc)); } // Assign the rhs temp (now with Y inversion) 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; } // Clip and cull distance require special handling due to a semantic mismatch. In HLSL, // these can be float scalar, float vector, or arrays of float scalar or float vector. // In SPIR-V, they are arrays of scalar floats in all cases. We must copy individual components // (e.g, both x and y components of a float2) out into the destination float array. // // The values are assigned to sequential members of the output array. The inner dimension // is vector components. The outer dimension is array elements. TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc, TOperator op, int semanticId, TIntermTyped* left, TIntermTyped* right) { switch (language) { case EShLangFragment: case EShLangVertex: case EShLangGeometry: break; default: error(loc, "unimplemented: clip/cull not currently implemented for this stage", "", ""); return nullptr; } TVariable** clipCullVar = nullptr; // Figure out if we are assigning to, or from, clip or cull distance. const bool isOutput = isClipOrCullDistance(left->getType()); // This is the rvalue or lvalue holding the clip or cull distance. TIntermTyped* clipCullNode = isOutput ? left : right; // This is the value going into or out of the clip or cull distance. TIntermTyped* internalNode = isOutput ? right : left; const TBuiltInVariable builtInType = clipCullNode->getQualifier().builtIn; decltype(clipSemanticNSizeIn)* semanticNSize = nullptr; // Refer to either the clip or the cull distance, depending on semantic. switch (builtInType) { case EbvClipDistance: clipCullVar = isOutput ? &clipDistanceOutput : &clipDistanceInput; semanticNSize = isOutput ? &clipSemanticNSizeOut : &clipSemanticNSizeIn; break; case EbvCullDistance: clipCullVar = isOutput ? &cullDistanceOutput : &cullDistanceInput; semanticNSize = isOutput ? &cullSemanticNSizeOut : &cullSemanticNSizeIn; break; // called invalidly: we expected a clip or a cull distance. // static compile time problem: should not happen. default: assert(0); return nullptr; } // This is the offset in the destination array of a given semantic's data std::array semanticOffset; // Calculate offset of variable of semantic N in destination array int arrayLoc = 0; int vecItems = 0; for (int x = 0; x < maxClipCullRegs; ++x) { // See if we overflowed the vec4 packing if ((vecItems + (*semanticNSize)[x]) > 4) { arrayLoc = (arrayLoc + 3) & (~0x3); // round up to next multiple of 4 vecItems = 0; } semanticOffset[x] = arrayLoc; vecItems += (*semanticNSize)[x]; arrayLoc += (*semanticNSize)[x]; } // It can have up to 2 array dimensions (in the case of geometry shader inputs) const TArraySizes* const internalArraySizes = internalNode->getType().getArraySizes(); const int internalArrayDims = internalNode->getType().isArray() ? internalArraySizes->getNumDims() : 0; // vector sizes: const int internalVectorSize = internalNode->getType().getVectorSize(); // array sizes, or 1 if it's not an array: const int internalInnerArraySize = (internalArrayDims > 0 ? internalArraySizes->getDimSize(internalArrayDims-1) : 1); const int internalOuterArraySize = (internalArrayDims > 1 ? internalArraySizes->getDimSize(0) : 1); // The created type may be an array of arrays, e.g, for geometry shader inputs. const bool isImplicitlyArrayed = (language == EShLangGeometry && !isOutput); // If we haven't created the output already, create it now. if (*clipCullVar == nullptr) { // ClipDistance and CullDistance are handled specially in the entry point input/output copy // algorithm, because they may need to be unpacked from components of vectors (or a scalar) // into a float array, or vice versa. Here, we make the array the right size and type, // which depends on the incoming data, which has several potential dimensions: // * Semantic ID // * vector size // * array size // Of those, semantic ID and array size cannot appear simultaneously. // // Also to note: for implicitly arrayed forms (e.g, geometry shader inputs), we need to create two // array dimensions. The shader's declaration may have one or two array dimensions. One is always // the geometry's dimension. const bool useInnerSize = internalArrayDims > 1 || !isImplicitlyArrayed; const int requiredInnerArraySize = arrayLoc * (useInnerSize ? internalInnerArraySize : 1); const int requiredOuterArraySize = (internalArrayDims > 0) ? internalArraySizes->getDimSize(0) : 1; TType clipCullType(EbtFloat, clipCullNode->getType().getQualifier().storage, 1); clipCullType.getQualifier() = clipCullNode->getType().getQualifier(); // Create required array dimension TArraySizes* arraySizes = new TArraySizes; if (isImplicitlyArrayed) arraySizes->addInnerSize(requiredOuterArraySize); arraySizes->addInnerSize(requiredInnerArraySize); clipCullType.transferArraySizes(arraySizes); // Obtain symbol name: we'll use that for the symbol we introduce. TIntermSymbol* sym = clipCullNode->getAsSymbolNode(); assert(sym != nullptr); // We are moving the semantic ID from the layout location, so it is no longer needed or // desired there. clipCullType.getQualifier().layoutLocation = TQualifier::layoutLocationEnd; // Create variable and track its linkage *clipCullVar = makeInternalVariable(sym->getName().c_str(), clipCullType); trackLinkage(**clipCullVar); } // Create symbol for the clip or cull variable. TIntermSymbol* clipCullSym = intermediate.addSymbol(**clipCullVar); // vector sizes: const int clipCullVectorSize = clipCullSym->getType().getVectorSize(); // array sizes, or 1 if it's not an array: const TArraySizes* const clipCullArraySizes = clipCullSym->getType().getArraySizes(); const int clipCullOuterArraySize = isImplicitlyArrayed ? clipCullArraySizes->getDimSize(0) : 1; const int clipCullInnerArraySize = clipCullArraySizes->getDimSize(isImplicitlyArrayed ? 1 : 0); // clipCullSym has got to be an array of scalar floats, per SPIR-V semantics. // fixBuiltInIoType() should have handled that upstream. assert(clipCullSym->getType().isArray()); assert(clipCullSym->getType().getVectorSize() == 1); assert(clipCullSym->getType().getBasicType() == EbtFloat); // We may be creating multiple sub-assignments. This is an aggregate to hold them. // TODO: it would be possible to be clever sometimes and avoid the sequence node if not needed. TIntermAggregate* assignList = nullptr; // Holds individual component assignments as we make them. TIntermTyped* clipCullAssign = nullptr; // If the types are homomorphic, use a simple assign. No need to mess about with // individual components. if (clipCullSym->getType().isArray() == internalNode->getType().isArray() && clipCullInnerArraySize == internalInnerArraySize && clipCullOuterArraySize == internalOuterArraySize && clipCullVectorSize == internalVectorSize) { if (isOutput) clipCullAssign = intermediate.addAssign(op, clipCullSym, internalNode, loc); else clipCullAssign = intermediate.addAssign(op, internalNode, clipCullSym, loc); assignList = intermediate.growAggregate(assignList, clipCullAssign); assignList->setOperator(EOpSequence); return assignList; } // We are going to copy each component of the internal (per array element if indicated) to sequential // array elements of the clipCullSym. This tracks the lhs element we're writing to as we go along. // We may be starting in the middle - e.g, for a non-zero semantic ID calculated above. int clipCullInnerArrayPos = semanticOffset[semanticId]; int clipCullOuterArrayPos = 0; // Lambda to add an index to a node, set the type of the result, and return the new node. const auto addIndex = [this, &loc](TIntermTyped* node, int pos) -> TIntermTyped* { const TType derefType(node->getType(), 0); node = intermediate.addIndex(EOpIndexDirect, node, intermediate.addConstantUnion(pos, loc), loc); node->setType(derefType); return node; }; // Loop through every component of every element of the internal, and copy to or from the matching external. for (int internalOuterArrayPos = 0; internalOuterArrayPos < internalOuterArraySize; ++internalOuterArrayPos) { for (int internalInnerArrayPos = 0; internalInnerArrayPos < internalInnerArraySize; ++internalInnerArrayPos) { for (int internalComponent = 0; internalComponent < internalVectorSize; ++internalComponent) { // clip/cull array member to read from / write to: TIntermTyped* clipCullMember = clipCullSym; // If implicitly arrayed, there is an outer array dimension involved if (isImplicitlyArrayed) clipCullMember = addIndex(clipCullMember, clipCullOuterArrayPos); // Index into proper array position for clip cull member clipCullMember = addIndex(clipCullMember, clipCullInnerArrayPos++); // if needed, start over with next outer array slice. if (isImplicitlyArrayed && clipCullInnerArrayPos >= clipCullInnerArraySize) { clipCullInnerArrayPos = semanticOffset[semanticId]; ++clipCullOuterArrayPos; } // internal member to read from / write to: TIntermTyped* internalMember = internalNode; // If internal node has outer array dimension, index appropriately. if (internalArrayDims > 1) internalMember = addIndex(internalMember, internalOuterArrayPos); // If internal node has inner array dimension, index appropriately. if (internalArrayDims > 0) internalMember = addIndex(internalMember, internalInnerArrayPos); // If internal node is a vector, extract the component of interest. if (internalNode->getType().isVector()) internalMember = addIndex(internalMember, internalComponent); // Create an assignment: output from internal to clip cull, or input from clip cull to internal. if (isOutput) clipCullAssign = intermediate.addAssign(op, clipCullMember, internalMember, loc); else clipCullAssign = intermediate.addAssign(op, internalMember, clipCullMember, loc); // Track assignment in the sequence. assignList = intermediate.growAggregate(assignList, clipCullAssign); } } } assert(assignList != nullptr); assignList->setOperator(EOpSequence); return assignList; } // Some simple source assignments need to be flattened to a sequence // of AST assignments. Catch these and flatten, otherwise, pass through // to intermediate.addAssign(). // // Also, assignment to matrix swizzles requires multiple component assignments, // intercept those as well. TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) { if (left == nullptr || right == nullptr) return nullptr; // writing to opaques will require fixing transforms if (left->getType().containsOpaque()) intermediate.setNeedsLegalization(); if (left->getAsOperator() && left->getAsOperator()->getOp() == EOpMatrixSwizzle) return handleAssignToMatrixSwizzle(loc, op, left, right); // Return true if the given node is an index operation into a split variable. const auto indexesSplit = [this](const TIntermTyped* node) -> bool { const TIntermBinary* binaryNode = node->getAsBinaryNode(); if (binaryNode == nullptr) return false; return (binaryNode->getOp() == EOpIndexDirect || binaryNode->getOp() == EOpIndexIndirect) && wasSplit(binaryNode->getLeft()); }; // Return symbol if node is symbol or index ref const auto getSymbol = [](const TIntermTyped* node) -> const TIntermSymbol* { const TIntermSymbol* symbolNode = node->getAsSymbolNode(); if (symbolNode != nullptr) return symbolNode; const TIntermBinary* binaryNode = node->getAsBinaryNode(); if (binaryNode != nullptr && (binaryNode->getOp() == EOpIndexDirect || binaryNode->getOp() == EOpIndexIndirect)) return binaryNode->getLeft()->getAsSymbolNode(); return nullptr; }; // Return true if this stage assigns clip position with potentially inverted Y const auto assignsClipPos = [this](const TIntermTyped* node) -> bool { return node->getType().getQualifier().builtIn == EbvPosition && (language == EShLangVertex || language == EShLangGeometry || language == EShLangTessEvaluation); }; const TIntermSymbol* leftSymbol = getSymbol(left); const TIntermSymbol* rightSymbol = getSymbol(right); const bool isSplitLeft = wasSplit(left) || indexesSplit(left); const bool isSplitRight = wasSplit(right) || indexesSplit(right); const bool isFlattenLeft = wasFlattened(leftSymbol); const bool isFlattenRight = wasFlattened(rightSymbol); // OK to do a single assign if neither side is split or flattened. Otherwise, // fall through to a member-wise copy. if (!isFlattenLeft && !isFlattenRight && !isSplitLeft && !isSplitRight) { // Clip and cull distance requires more processing. See comment above assignClipCullDistance. if (isClipOrCullDistance(left->getType()) || isClipOrCullDistance(right->getType())) { const bool isOutput = isClipOrCullDistance(left->getType()); const int semanticId = (isOutput ? left : right)->getType().getQualifier().layoutLocation; return assignClipCullDistance(loc, op, semanticId, left, right); } else if (assignsClipPos(left)) { // Position can require special handling: see comment above assignPosition return assignPosition(loc, op, left, right); } else if (left->getQualifier().builtIn == EbvSampleMask) { // Certain builtins are required to be arrayed outputs in SPIR-V, but may internally be scalars // in the shader. Copy the scalar RHS into the LHS array element zero, if that happens. if (left->isArray() && !right->isArray()) { const TType derefType(left->getType(), 0); left = intermediate.addIndex(EOpIndexDirect, left, intermediate.addConstantUnion(0, loc), loc); left->setType(derefType); // Fall through to add assign. } } return intermediate.addAssign(op, left, right, loc); } TIntermAggregate* assignList = nullptr; const TVector* leftVariables = nullptr; const TVector* rightVariables = nullptr; // A temporary to store the right node's value, so we don't keep indirecting into it // if it's not a simple symbol. TVariable* rhsTempVar = nullptr; // If the RHS is a simple symbol node, we'll copy it for each member. TIntermSymbol* cloneSymNode = nullptr; int memberCount = 0; // Track how many items there are to copy. if (left->getType().isStruct()) memberCount = (int)left->getType().getStruct()->size(); if (left->getType().isArray()) memberCount = left->getType().getCumulativeArraySize(); if (isFlattenLeft) leftVariables = &flattenMap.find(leftSymbol->getId())->second.members; if (isFlattenRight) { rightVariables = &flattenMap.find(rightSymbol->getId())->second.members; } else { // The RHS is not flattened. There are several cases: // 1. 1 item to copy: Use the RHS directly. // 2. >1 item, simple symbol RHS: we'll create a new TIntermSymbol node for each, but no assign to temp. // 3. >1 item, complex RHS: assign it to a new temp variable, and create a TIntermSymbol for each member. if (memberCount <= 1) { // case 1: we'll use the symbol directly below. Nothing to do. } else { if (right->getAsSymbolNode() != nullptr) { // case 2: we'll copy the symbol per iteration below. cloneSymNode = right->getAsSymbolNode(); } else { // case 3: assign to a temp, and indirect into that. rhsTempVar = makeInternalVariable("flattenTemp", right->getType()); rhsTempVar->getWritableType().getQualifier().makeTemporary(); TIntermTyped* noFlattenRHS = intermediate.addSymbol(*rhsTempVar, loc); // Add this to the aggregate being built. assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, noFlattenRHS, right, loc), loc); } } } // When dealing with split arrayed structures of built-ins, the arrayness is moved to the extracted built-in // variables, which is awkward when copying between split and unsplit structures. This variable tracks // array indirections so they can be percolated from outer structs to inner variables. std::vector arrayElement; TStorageQualifier leftStorage = left->getType().getQualifier().storage; TStorageQualifier rightStorage = right->getType().getQualifier().storage; int leftOffsetStart = findSubtreeOffset(*left); int rightOffsetStart = findSubtreeOffset(*right); int leftOffset = leftOffsetStart; int rightOffset = rightOffsetStart; const auto getMember = [&](bool isLeft, const TType& type, int member, TIntermTyped* splitNode, int splitMember, bool flattened) -> TIntermTyped * { const bool split = isLeft ? isSplitLeft : isSplitRight; TIntermTyped* subTree; const TType derefType(type, member); const TVariable* builtInVar = nullptr; if ((flattened || split) && derefType.isBuiltIn()) { auto splitPair = splitBuiltIns.find(HlslParseContext::tInterstageIoData( derefType.getQualifier().builtIn, isLeft ? leftStorage : rightStorage)); if (splitPair != splitBuiltIns.end()) builtInVar = splitPair->second; } if (builtInVar != nullptr) { // copy from interstage IO built-in if needed subTree = intermediate.addSymbol(*builtInVar); if (subTree->getType().isArray()) { // Arrayness of builtIn symbols isn't handled by the normal recursion: // it's been extracted and moved to the built-in. if (!arrayElement.empty()) { const TType splitDerefType(subTree->getType(), arrayElement.back()); subTree = intermediate.addIndex(EOpIndexDirect, subTree, intermediate.addConstantUnion(arrayElement.back(), loc), loc); subTree->setType(splitDerefType); } else if (splitNode->getAsOperator() != nullptr && (splitNode->getAsOperator()->getOp() == EOpIndexIndirect)) { // This might also be a stage with arrayed outputs, in which case there's an index // operation we should transfer to the output builtin. const TType splitDerefType(subTree->getType(), 0); subTree = intermediate.addIndex(splitNode->getAsOperator()->getOp(), subTree, splitNode->getAsBinaryNode()->getRight(), loc); subTree->setType(splitDerefType); } } } else if (flattened && !shouldFlatten(derefType, isLeft ? leftStorage : rightStorage, false)) { if (isLeft) { // offset will cycle through variables for arrayed io if (leftOffset >= static_cast(leftVariables->size())) leftOffset = leftOffsetStart; subTree = intermediate.addSymbol(*(*leftVariables)[leftOffset++]); } else { // offset will cycle through variables for arrayed io if (rightOffset >= static_cast(rightVariables->size())) rightOffset = rightOffsetStart; subTree = intermediate.addSymbol(*(*rightVariables)[rightOffset++]); } // arrayed io if (subTree->getType().isArray()) { if (!arrayElement.empty()) { const TType derefType(subTree->getType(), arrayElement.front()); subTree = intermediate.addIndex(EOpIndexDirect, subTree, intermediate.addConstantUnion(arrayElement.front(), loc), loc); subTree->setType(derefType); } else { // There's an index operation we should transfer to the output builtin. assert(splitNode->getAsOperator() != nullptr && splitNode->getAsOperator()->getOp() == EOpIndexIndirect); const TType splitDerefType(subTree->getType(), 0); subTree = intermediate.addIndex(splitNode->getAsOperator()->getOp(), subTree, splitNode->getAsBinaryNode()->getRight(), loc); subTree->setType(splitDerefType); } } } else { // Index operator if it's an aggregate, else EOpNull const TOperator accessOp = type.isArray() ? EOpIndexDirect : type.isStruct() ? EOpIndexDirectStruct : EOpNull; if (accessOp == EOpNull) { subTree = splitNode; } else { subTree = intermediate.addIndex(accessOp, splitNode, intermediate.addConstantUnion(splitMember, loc), loc); const TType splitDerefType(splitNode->getType(), splitMember); subTree->setType(splitDerefType); } } return subTree; }; // Use the proper RHS node: a new symbol from a TVariable, copy // of an TIntermSymbol node, or sometimes the right node directly. right = rhsTempVar != nullptr ? intermediate.addSymbol(*rhsTempVar, loc) : cloneSymNode != nullptr ? intermediate.addSymbol(*cloneSymNode) : right; // Cannot use auto here, because this is recursive, and auto can't work out the type without seeing the // whole thing. So, we'll resort to an explicit type via std::function. const std::function traverse = [&](TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight, bool topLevel) -> void { // If we get here, we are assigning to or from a whole array or struct that must be // flattened, so have to do member-by-member assignment: bool shouldFlattenSubsetLeft = isFlattenLeft && shouldFlatten(left->getType(), leftStorage, topLevel); bool shouldFlattenSubsetRight = isFlattenRight && shouldFlatten(right->getType(), rightStorage, topLevel); if ((left->getType().isArray() || right->getType().isArray()) && (shouldFlattenSubsetLeft || isSplitLeft || shouldFlattenSubsetRight || isSplitRight)) { const int elementsL = left->getType().isArray() ? left->getType().getOuterArraySize() : 1; const int elementsR = right->getType().isArray() ? right->getType().getOuterArraySize() : 1; // The arrays might not be the same size, // e.g., if the size has been forced for EbvTessLevelInner/Outer. const int elementsToCopy = std::min(elementsL, elementsR); // array case for (int element = 0; element < elementsToCopy; ++element) { arrayElement.push_back(element); // Add a new AST symbol node if we have a temp variable holding a complex RHS. TIntermTyped* subLeft = getMember(true, left->getType(), element, left, element, shouldFlattenSubsetLeft); TIntermTyped* subRight = getMember(false, right->getType(), element, right, element, shouldFlattenSubsetRight); TIntermTyped* subSplitLeft = isSplitLeft ? getMember(true, left->getType(), element, splitLeft, element, shouldFlattenSubsetLeft) : subLeft; TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right->getType(), element, splitRight, element, shouldFlattenSubsetRight) : subRight; traverse(subLeft, subRight, subSplitLeft, subSplitRight, false); arrayElement.pop_back(); } } else if (left->getType().isStruct() && (shouldFlattenSubsetLeft || isSplitLeft || shouldFlattenSubsetRight || isSplitRight)) { // struct case const auto& membersL = *left->getType().getStruct(); const auto& membersR = *right->getType().getStruct(); // These track the members in the split structures corresponding to the same in the unsplit structures, // which we traverse in parallel. int memberL = 0; int memberR = 0; // Handle empty structure assignment if (int(membersL.size()) == 0 && int(membersR.size()) == 0) assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, left, right, loc), loc); for (int member = 0; member < int(membersL.size()); ++member) { const TType& typeL = *membersL[member].type; const TType& typeR = *membersR[member].type; TIntermTyped* subLeft = getMember(true, left->getType(), member, left, member, shouldFlattenSubsetLeft); TIntermTyped* subRight = getMember(false, right->getType(), member, right, member, shouldFlattenSubsetRight); // If there is no splitting, use the same values to avoid inefficiency. TIntermTyped* subSplitLeft = isSplitLeft ? getMember(true, left->getType(), member, splitLeft, memberL, shouldFlattenSubsetLeft) : subLeft; TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right->getType(), member, splitRight, memberR, shouldFlattenSubsetRight) : subRight; if (isClipOrCullDistance(subSplitLeft->getType()) || isClipOrCullDistance(subSplitRight->getType())) { // Clip and cull distance built-in assignment is complex in its own right, and is handled in // a separate function dedicated to that task. See comment above assignClipCullDistance; const bool isOutput = isClipOrCullDistance(subSplitLeft->getType()); // Since all clip/cull semantics boil down to the same built-in type, we need to get the // semantic ID from the dereferenced type's layout location, to avoid an N-1 mapping. const TType derefType((isOutput ? left : right)->getType(), member); const int semanticId = derefType.getQualifier().layoutLocation; TIntermAggregate* clipCullAssign = assignClipCullDistance(loc, op, semanticId, 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); assignList = intermediate.growAggregate(assignList, positionAssign, loc); } else if (!shouldFlattenSubsetLeft && !shouldFlattenSubsetRight && !typeL.containsBuiltIn() && !typeR.containsBuiltIn()) { // If this is the final flattening (no nested types below to flatten) // we'll copy the member, else recurse into the type hierarchy. // However, if splitting the struct, that means we can copy a whole // subtree here IFF it does not itself contain any interstage built-in // IO variables, so we only have to recurse into it if there's something // for splitting to do. That can save a lot of AST verbosity for // a bunch of memberwise copies. assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subSplitLeft, subSplitRight, loc), loc); } else { traverse(subLeft, subRight, subSplitLeft, subSplitRight, false); } memberL += (typeL.isBuiltIn() ? 0 : 1); memberR += (typeR.isBuiltIn() ? 0 : 1); } } else { // Member copy assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, left, right, loc), loc); } }; TIntermTyped* splitLeft = left; TIntermTyped* splitRight = right; // If either left or right was a split structure, we must read or write it, but still have to // parallel-recurse through the unsplit structure to identify the built-in IO vars. // The left can be either a symbol, or an index into a symbol (e.g, array reference) if (isSplitLeft) { if (indexesSplit(left)) { // Index case: Refer to the indexed symbol, if the left is an index operator. const TIntermSymbol* symNode = left->getAsBinaryNode()->getLeft()->getAsSymbolNode(); TIntermTyped* splitLeftNonIo = intermediate.addSymbol(*getSplitNonIoVar(symNode->getId()), loc); splitLeft = intermediate.addIndex(left->getAsBinaryNode()->getOp(), splitLeftNonIo, left->getAsBinaryNode()->getRight(), loc); const TType derefType(splitLeftNonIo->getType(), 0); splitLeft->setType(derefType); } else { // Symbol case: otherwise, if not indexed, we have the symbol directly. const TIntermSymbol* symNode = left->getAsSymbolNode(); splitLeft = intermediate.addSymbol(*getSplitNonIoVar(symNode->getId()), loc); } } if (isSplitRight) splitRight = intermediate.addSymbol(*getSplitNonIoVar(right->getAsSymbolNode()->getId()), loc); // This makes the whole assignment, recursing through subtypes as needed. traverse(left, right, splitLeft, splitRight, true); assert(assignList != nullptr); assignList->setOperator(EOpSequence); return assignList; } // An assignment to matrix swizzle must be decomposed into individual assignments. // These must be selected component-wise from the RHS and stored component-wise // into the LHS. TIntermTyped* HlslParseContext::handleAssignToMatrixSwizzle(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) { assert(left->getAsOperator() && left->getAsOperator()->getOp() == EOpMatrixSwizzle); if (op != EOpAssign) error(loc, "only simple assignment to non-simple matrix swizzle is supported", "assign", ""); // isolate the matrix and swizzle nodes TIntermTyped* matrix = left->getAsBinaryNode()->getLeft()->getAsTyped(); const TIntermSequence& swizzle = left->getAsBinaryNode()->getRight()->getAsAggregate()->getSequence(); // if the RHS isn't already a simple vector, let's store into one TIntermSymbol* vector = right->getAsSymbolNode(); TIntermTyped* vectorAssign = nullptr; if (vector == nullptr) { // create a new intermediate vector variable to assign to TType vectorType(matrix->getBasicType(), EvqTemporary, matrix->getQualifier().precision, (int)swizzle.size()/2); vector = intermediate.addSymbol(*makeInternalVariable("intermVec", vectorType), loc); // assign the right to the new vector vectorAssign = handleAssign(loc, op, vector, right); } // Assign the vector components to the matrix components. // Store this as a sequence, so a single aggregate node represents this // entire operation. TIntermAggregate* result = intermediate.makeAggregate(vectorAssign); TType columnType(matrix->getType(), 0); TType componentType(columnType, 0); TType indexType(EbtInt); for (int i = 0; i < (int)swizzle.size(); i += 2) { // the right component, single index into the RHS vector TIntermTyped* rightComp = intermediate.addIndex(EOpIndexDirect, vector, intermediate.addConstantUnion(i/2, loc), loc); // the left component, double index into the LHS matrix TIntermTyped* leftComp = intermediate.addIndex(EOpIndexDirect, matrix, intermediate.addConstantUnion(swizzle[i]->getAsConstantUnion()->getConstArray(), indexType, loc), loc); leftComp->setType(columnType); leftComp = intermediate.addIndex(EOpIndexDirect, leftComp, intermediate.addConstantUnion(swizzle[i+1]->getAsConstantUnion()->getConstArray(), indexType, loc), loc); leftComp->setType(componentType); // Add the assignment to the aggregate result = intermediate.growAggregate(result, intermediate.addAssign(op, leftComp, rightComp, loc)); } result->setOp(EOpSequence); return result; } // // HLSL atomic operations have slightly different arguments than // GLSL/AST/SPIRV. The semantics are converted below in decomposeIntrinsic. // This provides the post-decomposition equivalent opcode. // TOperator HlslParseContext::mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage) { switch (op) { case EOpInterlockedAdd: return isImage ? EOpImageAtomicAdd : EOpAtomicAdd; case EOpInterlockedAnd: return isImage ? EOpImageAtomicAnd : EOpAtomicAnd; case EOpInterlockedCompareExchange: return isImage ? EOpImageAtomicCompSwap : EOpAtomicCompSwap; case EOpInterlockedMax: return isImage ? EOpImageAtomicMax : EOpAtomicMax; case EOpInterlockedMin: return isImage ? EOpImageAtomicMin : EOpAtomicMin; case EOpInterlockedOr: return isImage ? EOpImageAtomicOr : EOpAtomicOr; case EOpInterlockedXor: return isImage ? EOpImageAtomicXor : EOpAtomicXor; case EOpInterlockedExchange: return isImage ? EOpImageAtomicExchange : EOpAtomicExchange; case EOpInterlockedCompareStore: // TODO: ... default: error(loc, "unknown atomic operation", "unknown op", ""); return EOpNull; } } // // Create a combined sampler/texture from separate sampler and texture. // TIntermAggregate* HlslParseContext::handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler) { TIntermAggregate* txcombine = new TIntermAggregate(EOpConstructTextureSampler); txcombine->getSequence().push_back(argTex); txcombine->getSequence().push_back(argSampler); TSampler samplerType = argTex->getType().getSampler(); samplerType.combined = true; // TODO: // This block exists until the spec no longer requires shadow modes on texture objects. // It can be deleted after that, along with the shadowTextureVariant member. { const bool shadowMode = argSampler->getType().getSampler().shadow; TIntermSymbol* texSymbol = argTex->getAsSymbolNode(); if (texSymbol == nullptr) texSymbol = argTex->getAsBinaryNode()->getLeft()->getAsSymbolNode(); if (texSymbol == nullptr) { error(loc, "unable to find texture symbol", "", ""); return nullptr; } // This forces the texture's shadow state to be the sampler's // shadow state. This depends on downstream optimization to // DCE one variant in [shadow, nonshadow] if both are present, // or the SPIR-V module would be invalid. long long newId = texSymbol->getId(); // Check to see if this texture has been given a shadow mode already. // If so, look up the one we already have. const auto textureShadowEntry = textureShadowVariant.find(texSymbol->getId()); if (textureShadowEntry != textureShadowVariant.end()) newId = textureShadowEntry->second->get(shadowMode); else textureShadowVariant[texSymbol->getId()] = NewPoolObject(tShadowTextureSymbols(), 1); // Sometimes we have to create another symbol (if this texture has been seen before, // and we haven't created the form for this shadow mode). if (newId == -1) { TType texType; texType.shallowCopy(argTex->getType()); texType.getSampler().shadow = shadowMode; // set appropriate shadow mode. globalQualifierFix(loc, texType.getQualifier()); TVariable* newTexture = makeInternalVariable(texSymbol->getName(), texType); trackLinkage(*newTexture); newId = newTexture->getUniqueId(); } assert(newId != -1); if (textureShadowVariant.find(newId) == textureShadowVariant.end()) textureShadowVariant[newId] = textureShadowVariant[texSymbol->getId()]; textureShadowVariant[newId]->set(shadowMode, newId); // Remember this shadow mode in the texture and the merged type. argTex->getWritableType().getSampler().shadow = shadowMode; samplerType.shadow = shadowMode; texSymbol->switchId(newId); } txcombine->setType(TType(samplerType, EvqTemporary)); txcombine->setLoc(loc); return txcombine; } // Return true if this a buffer type that has an associated counter buffer. bool HlslParseContext::hasStructBuffCounter(const TType& type) const { switch (type.getQualifier().declaredBuiltIn) { case EbvAppendConsume: // fall through... case EbvRWStructuredBuffer: // ... return true; default: return false; // the other structuredbuffer types do not have a counter. } } void HlslParseContext::counterBufferType(const TSourceLoc& loc, TType& type) { // Counter type TType* counterType = new TType(EbtUint, EvqBuffer); counterType->setFieldName(intermediate.implicitCounterName); TTypeList* blockStruct = new TTypeList; TTypeLoc member = { counterType, loc }; blockStruct->push_back(member); TType blockType(blockStruct, "", counterType->getQualifier()); blockType.getQualifier().storage = EvqBuffer; type.shallowCopy(blockType); shareStructBufferType(type); } // declare counter for a structured buffer type void HlslParseContext::declareStructBufferCounter(const TSourceLoc& loc, const TType& bufferType, const TString& name) { // Bail out if not a struct buffer if (! isStructBufferType(bufferType)) return; if (! hasStructBuffCounter(bufferType)) return; TType blockType; counterBufferType(loc, blockType); TString* blockName = NewPoolTString(intermediate.addCounterBufferName(name).c_str()); // Counter buffer is not yet in use structBufferCounter[*blockName] = false; shareStructBufferType(blockType); declareBlock(loc, blockType, blockName); } // return the counter that goes with a given structuredbuffer TIntermTyped* HlslParseContext::getStructBufferCounter(const TSourceLoc& loc, TIntermTyped* buffer) { // Bail out if not a struct buffer if (buffer == nullptr || ! isStructBufferType(buffer->getType())) return nullptr; const TString counterBlockName(intermediate.addCounterBufferName(buffer->getAsSymbolNode()->getName())); // Mark the counter as being used structBufferCounter[counterBlockName] = true; TIntermTyped* counterVar = handleVariable(loc, &counterBlockName); // find the block structure TIntermTyped* index = intermediate.addConstantUnion(0, loc); // index to counter inside block struct TIntermTyped* counterMember = intermediate.addIndex(EOpIndexDirectStruct, counterVar, index, loc); counterMember->setType(TType(EbtUint)); return counterMember; } // // Decompose structure buffer methods into AST // void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) { if (node == nullptr || node->getAsOperator() == nullptr || arguments == nullptr) return; const TOperator op = node->getAsOperator()->getOp(); TIntermAggregate* argAggregate = arguments->getAsAggregate(); // Buffer is the object upon which method is called, so always arg 0 TIntermTyped* bufferObj = nullptr; // The parameters can be an aggregate, or just a the object as a symbol if there are no fn params. if (argAggregate) { if (argAggregate->getSequence().empty()) return; if (argAggregate->getSequence()[0]) bufferObj = argAggregate->getSequence()[0]->getAsTyped(); } else { bufferObj = arguments->getAsSymbolNode(); } if (bufferObj == nullptr || bufferObj->getAsSymbolNode() == nullptr) return; // Some methods require a hidden internal counter, obtained via getStructBufferCounter(). // This lambda adds something to it and returns the old value. const auto incDecCounter = [&](int incval) -> TIntermTyped* { TIntermTyped* incrementValue = intermediate.addConstantUnion(static_cast(incval), loc, true); TIntermTyped* counter = getStructBufferCounter(loc, bufferObj); // obtain the counter member if (counter == nullptr) return nullptr; TIntermAggregate* counterIncrement = new TIntermAggregate(EOpAtomicAdd); counterIncrement->setType(TType(EbtUint, EvqTemporary)); counterIncrement->setLoc(loc); counterIncrement->getSequence().push_back(counter); counterIncrement->getSequence().push_back(incrementValue); return counterIncrement; }; // Index to obtain the runtime sized array out of the buffer. TIntermTyped* argArray = indexStructBufferContent(loc, bufferObj); if (argArray == nullptr) return; // It might not be a struct buffer method. switch (op) { case EOpMethodLoad: { TIntermTyped* argIndex = makeIntegerIndex(argAggregate->getSequence()[1]->getAsTyped()); // index const TType& bufferType = bufferObj->getType(); const TBuiltInVariable builtInType = bufferType.getQualifier().declaredBuiltIn; // Byte address buffers index in bytes (only multiples of 4 permitted... not so much a byte address // buffer then, but that's what it calls itself. const bool isByteAddressBuffer = (builtInType == EbvByteAddressBuffer || builtInType == EbvRWByteAddressBuffer); if (isByteAddressBuffer) argIndex = intermediate.addBinaryNode(EOpRightShift, argIndex, intermediate.addConstantUnion(2, loc, true), loc, TType(EbtInt)); // Index into the array to find the item being loaded. const TOperator idxOp = (argIndex->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; node = intermediate.addIndex(idxOp, argArray, argIndex, loc); const TType derefType(argArray->getType(), 0); node->setType(derefType); } break; case EOpMethodLoad2: case EOpMethodLoad3: case EOpMethodLoad4: { TIntermTyped* argIndex = makeIntegerIndex(argAggregate->getSequence()[1]->getAsTyped()); // index TOperator constructOp = EOpNull; int size = 0; switch (op) { case EOpMethodLoad2: size = 2; constructOp = EOpConstructVec2; break; case EOpMethodLoad3: size = 3; constructOp = EOpConstructVec3; break; case EOpMethodLoad4: size = 4; constructOp = EOpConstructVec4; break; default: assert(0); } TIntermTyped* body = nullptr; // First, we'll store the address in a variable to avoid multiple shifts // (we must convert the byte address to an item address) TIntermTyped* byteAddrIdx = intermediate.addBinaryNode(EOpRightShift, argIndex, intermediate.addConstantUnion(2, loc, true), loc, TType(EbtInt)); TVariable* byteAddrSym = makeInternalVariable("byteAddrTemp", TType(EbtInt, EvqTemporary)); TIntermTyped* byteAddrIdxVar = intermediate.addSymbol(*byteAddrSym, loc); body = intermediate.growAggregate(body, intermediate.addAssign(EOpAssign, byteAddrIdxVar, byteAddrIdx, loc)); TIntermTyped* vec = nullptr; // These are only valid on (rw)byteaddressbuffers, so we can always perform the >>2 // address conversion. for (int idx=0; idxgetQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; TIntermTyped* indexVal = intermediate.addIndex(idxOp, argArray, offsetIdx, loc); TType derefType(argArray->getType(), 0); derefType.getQualifier().makeTemporary(); indexVal->setType(derefType); vec = intermediate.growAggregate(vec, indexVal); } vec->setType(TType(argArray->getBasicType(), EvqTemporary, size)); vec->getAsAggregate()->setOperator(constructOp); body = intermediate.growAggregate(body, vec); body->setType(vec->getType()); body->getAsAggregate()->setOperator(EOpSequence); node = body; } break; case EOpMethodStore: case EOpMethodStore2: case EOpMethodStore3: case EOpMethodStore4: { TIntermTyped* argIndex = makeIntegerIndex(argAggregate->getSequence()[1]->getAsTyped()); // index TIntermTyped* argValue = argAggregate->getSequence()[2]->getAsTyped(); // value // Index into the array to find the item being loaded. // Byte address buffers index in bytes (only multiples of 4 permitted... not so much a byte address // buffer then, but that's what it calls itself). int size = 0; switch (op) { case EOpMethodStore: size = 1; break; case EOpMethodStore2: size = 2; break; case EOpMethodStore3: size = 3; break; case EOpMethodStore4: size = 4; break; default: assert(0); } TIntermAggregate* body = nullptr; // First, we'll store the address in a variable to avoid multiple shifts // (we must convert the byte address to an item address) TIntermTyped* byteAddrIdx = intermediate.addBinaryNode(EOpRightShift, argIndex, intermediate.addConstantUnion(2, loc, true), loc, TType(EbtInt)); TVariable* byteAddrSym = makeInternalVariable("byteAddrTemp", TType(EbtInt, EvqTemporary)); TIntermTyped* byteAddrIdxVar = intermediate.addSymbol(*byteAddrSym, loc); body = intermediate.growAggregate(body, intermediate.addAssign(EOpAssign, byteAddrIdxVar, byteAddrIdx, loc)); for (int idx=0; idxgetQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; TIntermTyped* lValue = intermediate.addIndex(idxOp, argArray, offsetIdx, loc); const TType derefType(argArray->getType(), 0); lValue->setType(derefType); TIntermTyped* rValue; if (size == 1) { rValue = argValue; } else { rValue = intermediate.addIndex(EOpIndexDirect, argValue, idxConst, loc); const TType indexType(argValue->getType(), 0); rValue->setType(indexType); } TIntermTyped* assign = intermediate.addAssign(EOpAssign, lValue, rValue, loc); body = intermediate.growAggregate(body, assign); } body->setOperator(EOpSequence); node = body; } break; case EOpMethodGetDimensions: { const int numArgs = (int)argAggregate->getSequence().size(); TIntermTyped* argNumItems = argAggregate->getSequence()[1]->getAsTyped(); // out num items TIntermTyped* argStride = numArgs > 2 ? argAggregate->getSequence()[2]->getAsTyped() : nullptr; // out stride TIntermAggregate* body = nullptr; // Length output: if (argArray->getType().isSizedArray()) { const int length = argArray->getType().getOuterArraySize(); TIntermTyped* assign = intermediate.addAssign(EOpAssign, argNumItems, intermediate.addConstantUnion(length, loc, true), loc); body = intermediate.growAggregate(body, assign, loc); } else { TIntermTyped* lengthCall = intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, argArray, argNumItems->getType()); TIntermTyped* assign = intermediate.addAssign(EOpAssign, argNumItems, lengthCall, loc); body = intermediate.growAggregate(body, assign, loc); } // Stride output: if (argStride != nullptr) { int size; int stride; intermediate.getMemberAlignment(argArray->getType(), size, stride, argArray->getType().getQualifier().layoutPacking, argArray->getType().getQualifier().layoutMatrix == ElmRowMajor); TIntermTyped* assign = intermediate.addAssign(EOpAssign, argStride, intermediate.addConstantUnion(stride, loc, true), loc); body = intermediate.growAggregate(body, assign); } body->setOperator(EOpSequence); node = body; } break; case EOpInterlockedAdd: case EOpInterlockedAnd: case EOpInterlockedExchange: case EOpInterlockedMax: case EOpInterlockedMin: case EOpInterlockedOr: case EOpInterlockedXor: case EOpInterlockedCompareExchange: case EOpInterlockedCompareStore: { // We'll replace the first argument with the block dereference, and let // downstream decomposition handle the rest. TIntermSequence& sequence = argAggregate->getSequence(); TIntermTyped* argIndex = makeIntegerIndex(sequence[1]->getAsTyped()); // index argIndex = intermediate.addBinaryNode(EOpRightShift, argIndex, intermediate.addConstantUnion(2, loc, true), loc, TType(EbtInt)); const TOperator idxOp = (argIndex->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; TIntermTyped* element = intermediate.addIndex(idxOp, argArray, argIndex, loc); const TType derefType(argArray->getType(), 0); element->setType(derefType); // Replace the numeric byte offset parameter with array reference. sequence[1] = element; sequence.erase(sequence.begin(), sequence.begin()+1); } break; case EOpMethodIncrementCounter: { node = incDecCounter(1); break; } case EOpMethodDecrementCounter: { TIntermTyped* preIncValue = incDecCounter(-1); // result is original value node = intermediate.addBinaryNode(EOpAdd, preIncValue, intermediate.addConstantUnion(-1, loc, true), loc, preIncValue->getType()); break; } case EOpMethodAppend: { TIntermTyped* oldCounter = incDecCounter(1); TIntermTyped* lValue = intermediate.addIndex(EOpIndexIndirect, argArray, oldCounter, loc); TIntermTyped* rValue = argAggregate->getSequence()[1]->getAsTyped(); const TType derefType(argArray->getType(), 0); lValue->setType(derefType); node = intermediate.addAssign(EOpAssign, lValue, rValue, loc); break; } case EOpMethodConsume: { TIntermTyped* oldCounter = incDecCounter(-1); TIntermTyped* newCounter = intermediate.addBinaryNode(EOpAdd, oldCounter, intermediate.addConstantUnion(-1, loc, true), loc, oldCounter->getType()); node = intermediate.addIndex(EOpIndexIndirect, argArray, newCounter, loc); const TType derefType(argArray->getType(), 0); node->setType(derefType); break; } default: break; // most pass through unchanged } } // Create array of standard sample positions for given sample count. // TODO: remove when a real method to query sample pos exists in SPIR-V. TIntermConstantUnion* HlslParseContext::getSamplePosArray(int count) { struct tSamplePos { float x, y; }; static const tSamplePos pos1[] = { { 0.0/16.0, 0.0/16.0 }, }; // standard sample positions for 2, 4, 8, and 16 samples. static const tSamplePos pos2[] = { { 4.0/16.0, 4.0/16.0 }, {-4.0/16.0, -4.0/16.0 }, }; static const tSamplePos pos4[] = { {-2.0/16.0, -6.0/16.0 }, { 6.0/16.0, -2.0/16.0 }, {-6.0/16.0, 2.0/16.0 }, { 2.0/16.0, 6.0/16.0 }, }; static const tSamplePos pos8[] = { { 1.0/16.0, -3.0/16.0 }, {-1.0/16.0, 3.0/16.0 }, { 5.0/16.0, 1.0/16.0 }, {-3.0/16.0, -5.0/16.0 }, {-5.0/16.0, 5.0/16.0 }, {-7.0/16.0, -1.0/16.0 }, { 3.0/16.0, 7.0/16.0 }, { 7.0/16.0, -7.0/16.0 }, }; static const tSamplePos pos16[] = { { 1.0/16.0, 1.0/16.0 }, {-1.0/16.0, -3.0/16.0 }, {-3.0/16.0, 2.0/16.0 }, { 4.0/16.0, -1.0/16.0 }, {-5.0/16.0, -2.0/16.0 }, { 2.0/16.0, 5.0/16.0 }, { 5.0/16.0, 3.0/16.0 }, { 3.0/16.0, -5.0/16.0 }, {-2.0/16.0, 6.0/16.0 }, { 0.0/16.0, -7.0/16.0 }, {-4.0/16.0, -6.0/16.0 }, {-6.0/16.0, 4.0/16.0 }, {-8.0/16.0, 0.0/16.0 }, { 7.0/16.0, -4.0/16.0 }, { 6.0/16.0, 7.0/16.0 }, {-7.0/16.0, -8.0/16.0 }, }; const tSamplePos* sampleLoc = nullptr; int numSamples = count; switch (count) { case 2: sampleLoc = pos2; break; case 4: sampleLoc = pos4; break; case 8: sampleLoc = pos8; break; case 16: sampleLoc = pos16; break; default: sampleLoc = pos1; numSamples = 1; } TConstUnionArray* values = new TConstUnionArray(numSamples*2); for (int pos=0; posaddInnerSize(numSamples); retType.transferArraySizes(arraySizes); } return new TIntermConstantUnion(*values, retType); } // // Decompose DX9 and DX10 sample intrinsics & object methods into AST // void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) { if (node == nullptr || !node->getAsOperator()) return; // Sampler return must always be a vec4, but we can construct a shorter vector or a structure from it. const auto convertReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) -> TIntermTyped* { result->setType(TType(node->getType().getBasicType(), EvqTemporary, node->getVectorSize())); TIntermTyped* convertedResult = nullptr; TType retType; getTextureReturnType(sampler, retType); if (retType.isStruct()) { // For type convenience, conversionAggregate points to the convertedResult (we know it's an aggregate here) TIntermAggregate* conversionAggregate = new TIntermAggregate; convertedResult = conversionAggregate; // Convert vector output to return structure. We will need a temp symbol to copy the results to. TVariable* structVar = makeInternalVariable("@sampleStructTemp", retType); // We also need a temp symbol to hold the result of the texture. We don't want to re-fetch the // sample each time we'll index into the result, so we'll copy to this, and index into the copy. TVariable* sampleShadow = makeInternalVariable("@sampleResultShadow", result->getType()); // Initial copy from texture to our sample result shadow. TIntermTyped* shadowCopy = intermediate.addAssign(EOpAssign, intermediate.addSymbol(*sampleShadow, loc), result, loc); conversionAggregate->getSequence().push_back(shadowCopy); unsigned vec4Pos = 0; for (unsigned m = 0; m < unsigned(retType.getStruct()->size()); ++m) { const TType memberType(retType, m); // dereferenced type of the member we're about to assign. // Check for bad struct members. This should have been caught upstream. Complain, because // wwe don't know what to do with it. This algorithm could be generalized to handle // other things, e.g, sub-structures, but HLSL doesn't allow them. if (!memberType.isVector() && !memberType.isScalar()) { error(loc, "expected: scalar or vector type in texture structure", "", ""); return nullptr; } // Index into the struct variable to find the member to assign. TIntermTyped* structMember = intermediate.addIndex(EOpIndexDirectStruct, intermediate.addSymbol(*structVar, loc), intermediate.addConstantUnion(m, loc), loc); structMember->setType(memberType); // Assign each component of (possible) vector in struct member. for (int component = 0; component < memberType.getVectorSize(); ++component) { TIntermTyped* vec4Member = intermediate.addIndex(EOpIndexDirect, intermediate.addSymbol(*sampleShadow, loc), intermediate.addConstantUnion(vec4Pos++, loc), loc); vec4Member->setType(TType(memberType.getBasicType(), EvqTemporary, 1)); TIntermTyped* memberAssign = nullptr; if (memberType.isVector()) { // Vector member: we need to create an access chain to the vector component. TIntermTyped* structVecComponent = intermediate.addIndex(EOpIndexDirect, structMember, intermediate.addConstantUnion(component, loc), loc); memberAssign = intermediate.addAssign(EOpAssign, structVecComponent, vec4Member, loc); } else { // Scalar member: we can assign to it directly. memberAssign = intermediate.addAssign(EOpAssign, structMember, vec4Member, loc); } conversionAggregate->getSequence().push_back(memberAssign); } } // Add completed variable so the expression results in the whole struct value we just built. conversionAggregate->getSequence().push_back(intermediate.addSymbol(*structVar, loc)); // Make it a sequence. intermediate.setAggregateOperator(conversionAggregate, EOpSequence, retType, loc); } else { // vector clamp the output if template vector type is smaller than sample result. if (retType.getVectorSize() < node->getVectorSize()) { // Too many components. Construct shorter vector from it. const TOperator op = intermediate.mapTypeToConstructorOp(retType); convertedResult = constructBuiltIn(retType, op, result, loc, false); } else { // Enough components. Use directly. convertedResult = result; } } convertedResult->setLoc(loc); return convertedResult; }; const TOperator op = node->getAsOperator()->getOp(); const TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr; // Bail out if not a sampler method. // Note though this is odd to do before checking the op, because the op // could be something that takes the arguments, and the function in question // takes the result of the op. So, this is not the final word. if (arguments != nullptr) { if (argAggregate == nullptr) { if (arguments->getAsTyped()->getBasicType() != EbtSampler) return; } else { if (argAggregate->getSequence().size() == 0 || argAggregate->getSequence()[0] == nullptr || argAggregate->getSequence()[0]->getAsTyped()->getBasicType() != EbtSampler) return; } } switch (op) { // **** DX9 intrinsics: **** case EOpTexture: { // Texture with ddx & ddy is really gradient form in HLSL if (argAggregate->getSequence().size() == 4) node->getAsAggregate()->setOperator(EOpTextureGrad); break; } case EOpTextureLod: //is almost EOpTextureBias (only args & operations are different) { TIntermTyped *argSamp = argAggregate->getSequence()[0]->getAsTyped(); // sampler TIntermTyped *argCoord = argAggregate->getSequence()[1]->getAsTyped(); // coord assert(argCoord->getVectorSize() == 4); TIntermTyped *w = intermediate.addConstantUnion(3, loc, true); TIntermTyped *argLod = intermediate.addIndex(EOpIndexDirect, argCoord, w, loc); TOperator constructOp = EOpNull; const TSampler &sampler = argSamp->getType().getSampler(); int coordSize = 0; switch (sampler.dim) { case Esd1D: constructOp = EOpConstructFloat; coordSize = 1; break; // 1D case Esd2D: constructOp = EOpConstructVec2; coordSize = 2; break; // 2D case Esd3D: constructOp = EOpConstructVec3; coordSize = 3; break; // 3D case EsdCube: constructOp = EOpConstructVec3; coordSize = 3; break; // also 3D default: error(loc, "unhandled DX9 texture LoD dimension", "", ""); break; } TIntermAggregate *constructCoord = new TIntermAggregate(constructOp); constructCoord->getSequence().push_back(argCoord); constructCoord->setLoc(loc); constructCoord->setType(TType(argCoord->getBasicType(), EvqTemporary, coordSize)); TIntermAggregate *tex = new TIntermAggregate(EOpTextureLod); tex->getSequence().push_back(argSamp); // sampler tex->getSequence().push_back(constructCoord); // coordinate tex->getSequence().push_back(argLod); // lod node = convertReturn(tex, sampler); break; } case EOpTextureBias: { TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // sampler TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // coord // HLSL puts bias in W component of coordinate. We extract it and add it to // the argument list, instead TIntermTyped* w = intermediate.addConstantUnion(3, loc, true); TIntermTyped* bias = intermediate.addIndex(EOpIndexDirect, arg1, w, loc); TOperator constructOp = EOpNull; const TSampler& sampler = arg0->getType().getSampler(); switch (sampler.dim) { case Esd1D: constructOp = EOpConstructFloat; break; // 1D case Esd2D: constructOp = EOpConstructVec2; break; // 2D case Esd3D: constructOp = EOpConstructVec3; break; // 3D case EsdCube: constructOp = EOpConstructVec3; break; // also 3D default: error(loc, "unhandled DX9 texture bias dimension", "", ""); break; } TIntermAggregate* constructCoord = new TIntermAggregate(constructOp); constructCoord->getSequence().push_back(arg1); constructCoord->setLoc(loc); // The input vector should never be less than 2, since there's always a bias. // The max is for safety, and should be a no-op. constructCoord->setType(TType(arg1->getBasicType(), EvqTemporary, std::max(arg1->getVectorSize() - 1, 0))); TIntermAggregate* tex = new TIntermAggregate(EOpTexture); tex->getSequence().push_back(arg0); // sampler tex->getSequence().push_back(constructCoord); // coordinate tex->getSequence().push_back(bias); // bias node = convertReturn(tex, sampler); break; } // **** DX10 methods: **** case EOpMethodSample: // fall through case EOpMethodSampleBias: // ... { TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); TIntermTyped* argBias = nullptr; TIntermTyped* argOffset = nullptr; const TSampler& sampler = argTex->getType().getSampler(); int nextArg = 3; if (op == EOpMethodSampleBias) // SampleBias has a bias arg argBias = argAggregate->getSequence()[nextArg++]->getAsTyped(); TOperator textureOp = EOpTexture; if ((int)argAggregate->getSequence().size() == (nextArg+1)) { // last parameter is offset form textureOp = EOpTextureOffset; argOffset = argAggregate->getSequence()[nextArg++]->getAsTyped(); } TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); TIntermAggregate* txsample = new TIntermAggregate(textureOp); txsample->getSequence().push_back(txcombine); txsample->getSequence().push_back(argCoord); if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); if (argBias != nullptr) txsample->getSequence().push_back(argBias); node = convertReturn(txsample, sampler); break; } case EOpMethodSampleGrad: // ... { TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); TIntermTyped* argDDX = argAggregate->getSequence()[3]->getAsTyped(); TIntermTyped* argDDY = argAggregate->getSequence()[4]->getAsTyped(); TIntermTyped* argOffset = nullptr; const TSampler& sampler = argTex->getType().getSampler(); TOperator textureOp = EOpTextureGrad; if (argAggregate->getSequence().size() == 6) { // last parameter is offset form textureOp = EOpTextureGradOffset; argOffset = argAggregate->getSequence()[5]->getAsTyped(); } TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); TIntermAggregate* txsample = new TIntermAggregate(textureOp); txsample->getSequence().push_back(txcombine); txsample->getSequence().push_back(argCoord); txsample->getSequence().push_back(argDDX); txsample->getSequence().push_back(argDDY); if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); node = convertReturn(txsample, sampler); break; } case EOpMethodGetDimensions: { // AST returns a vector of results, which we break apart component-wise into // separate values to assign to the HLSL method's outputs, ala: // tx . GetDimensions(width, height); // float2 sizeQueryTemp = EOpTextureQuerySize // width = sizeQueryTemp.X; // height = sizeQueryTemp.Y; TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); const TType& texType = argTex->getType(); assert(texType.getBasicType() == EbtSampler); const TSampler& sampler = texType.getSampler(); const TSamplerDim dim = sampler.dim; const bool isImage = sampler.isImage(); const bool isMs = sampler.isMultiSample(); const int numArgs = (int)argAggregate->getSequence().size(); int numDims = 0; switch (dim) { case Esd1D: numDims = 1; break; // W case Esd2D: numDims = 2; break; // W, H case Esd3D: numDims = 3; break; // W, H, D case EsdCube: numDims = 2; break; // W, H (cube) case EsdBuffer: numDims = 1; break; // W (buffers) case EsdRect: numDims = 2; break; // W, H (rect) default: error(loc, "unhandled DX10 MethodGet dimension", "", ""); break; } // Arrayed adds another dimension for the number of array elements if (sampler.isArrayed()) ++numDims; // Establish whether the method itself is querying mip levels. This can be false even // if the underlying query requires a MIP level, due to the available HLSL method overloads. const bool mipQuery = (numArgs > (numDims + 1 + (isMs ? 1 : 0))); // Establish whether we must use the LOD form of query (even if the method did not supply a mip level to query). // True if: // 1. 1D/2D/3D/Cube AND multisample==0 AND NOT image (those can be sent to the non-LOD query) // or, // 2. There is a LOD (because the non-LOD query cannot be used in that case, per spec) const bool mipRequired = ((dim == Esd1D || dim == Esd2D || dim == Esd3D || dim == EsdCube) && !isMs && !isImage) || // 1... mipQuery; // 2... // AST assumes integer return. Will be converted to float if required. TIntermAggregate* sizeQuery = new TIntermAggregate(isImage ? EOpImageQuerySize : EOpTextureQuerySize); sizeQuery->getSequence().push_back(argTex); // If we're building an LOD query, add the LOD. if (mipRequired) { // If the base HLSL query had no MIP level given, use level 0. TIntermTyped* queryLod = mipQuery ? argAggregate->getSequence()[1]->getAsTyped() : intermediate.addConstantUnion(0, loc, true); sizeQuery->getSequence().push_back(queryLod); } sizeQuery->setType(TType(EbtUint, EvqTemporary, numDims)); sizeQuery->setLoc(loc); // Return value from size query TVariable* tempArg = makeInternalVariable("sizeQueryTemp", sizeQuery->getType()); tempArg->getWritableType().getQualifier().makeTemporary(); TIntermTyped* sizeQueryAssign = intermediate.addAssign(EOpAssign, intermediate.addSymbol(*tempArg, loc), sizeQuery, loc); // Compound statement for assigning outputs TIntermAggregate* compoundStatement = intermediate.makeAggregate(sizeQueryAssign, loc); // Index of first output parameter const int outParamBase = mipQuery ? 2 : 1; for (int compNum = 0; compNum < numDims; ++compNum) { TIntermTyped* indexedOut = nullptr; TIntermSymbol* sizeQueryReturn = intermediate.addSymbol(*tempArg, loc); if (numDims > 1) { TIntermTyped* component = intermediate.addConstantUnion(compNum, loc, true); indexedOut = intermediate.addIndex(EOpIndexDirect, sizeQueryReturn, component, loc); indexedOut->setType(TType(EbtUint, EvqTemporary, 1)); indexedOut->setLoc(loc); } else { indexedOut = sizeQueryReturn; } TIntermTyped* outParam = argAggregate->getSequence()[outParamBase + compNum]->getAsTyped(); TIntermTyped* compAssign = intermediate.addAssign(EOpAssign, outParam, indexedOut, loc); compoundStatement = intermediate.growAggregate(compoundStatement, compAssign); } // handle mip level parameter if (mipQuery) { TIntermTyped* outParam = argAggregate->getSequence()[outParamBase + numDims]->getAsTyped(); TIntermAggregate* levelsQuery = new TIntermAggregate(EOpTextureQueryLevels); levelsQuery->getSequence().push_back(argTex); levelsQuery->setType(TType(EbtUint, EvqTemporary, 1)); levelsQuery->setLoc(loc); TIntermTyped* compAssign = intermediate.addAssign(EOpAssign, outParam, levelsQuery, loc); compoundStatement = intermediate.growAggregate(compoundStatement, compAssign); } // 2DMS formats query # samples, which needs a different query op if (sampler.isMultiSample()) { TIntermTyped* outParam = argAggregate->getSequence()[outParamBase + numDims]->getAsTyped(); TIntermAggregate* samplesQuery = new TIntermAggregate(EOpImageQuerySamples); samplesQuery->getSequence().push_back(argTex); samplesQuery->setType(TType(EbtUint, EvqTemporary, 1)); samplesQuery->setLoc(loc); TIntermTyped* compAssign = intermediate.addAssign(EOpAssign, outParam, samplesQuery, loc); compoundStatement = intermediate.growAggregate(compoundStatement, compAssign); } compoundStatement->setOperator(EOpSequence); compoundStatement->setLoc(loc); compoundStatement->setType(TType(EbtVoid)); node = compoundStatement; break; } case EOpMethodSampleCmp: // fall through... case EOpMethodSampleCmpLevelZero: { TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); TIntermTyped* argCmpVal = argAggregate->getSequence()[3]->getAsTyped(); TIntermTyped* argOffset = nullptr; // Sampler argument should be a sampler. if (argSamp->getType().getBasicType() != EbtSampler) { error(loc, "expected: sampler type", "", ""); return; } // Sampler should be a SamplerComparisonState if (! argSamp->getType().getSampler().isShadow()) { error(loc, "expected: SamplerComparisonState", "", ""); return; } // optional offset value if (argAggregate->getSequence().size() > 4) argOffset = argAggregate->getSequence()[4]->getAsTyped(); const int coordDimWithCmpVal = argCoord->getType().getVectorSize() + 1; // +1 for cmp // AST wants comparison value as one of the texture coordinates TOperator constructOp = EOpNull; switch (coordDimWithCmpVal) { // 1D can't happen: there's always at least 1 coordinate dimension + 1 cmp val case 2: constructOp = EOpConstructVec2; break; case 3: constructOp = EOpConstructVec3; break; case 4: constructOp = EOpConstructVec4; break; case 5: constructOp = EOpConstructVec4; break; // cubeArrayShadow, cmp value is separate arg. default: error(loc, "unhandled DX10 MethodSample dimension", "", ""); break; } TIntermAggregate* coordWithCmp = new TIntermAggregate(constructOp); coordWithCmp->getSequence().push_back(argCoord); if (coordDimWithCmpVal != 5) // cube array shadow is special. coordWithCmp->getSequence().push_back(argCmpVal); coordWithCmp->setLoc(loc); coordWithCmp->setType(TType(argCoord->getBasicType(), EvqTemporary, std::min(coordDimWithCmpVal, 4))); TOperator textureOp = (op == EOpMethodSampleCmpLevelZero ? EOpTextureLod : EOpTexture); if (argOffset != nullptr) textureOp = (op == EOpMethodSampleCmpLevelZero ? EOpTextureLodOffset : EOpTextureOffset); // Create combined sampler & texture op TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); TIntermAggregate* txsample = new TIntermAggregate(textureOp); txsample->getSequence().push_back(txcombine); txsample->getSequence().push_back(coordWithCmp); if (coordDimWithCmpVal == 5) // cube array shadow is special: cmp val follows coord. txsample->getSequence().push_back(argCmpVal); // the LevelZero form uses 0 as an explicit LOD if (op == EOpMethodSampleCmpLevelZero) txsample->getSequence().push_back(intermediate.addConstantUnion(0.0, EbtFloat, loc, true)); // Add offset if present if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); txsample->setType(node->getType()); txsample->setLoc(loc); node = txsample; break; } case EOpMethodLoad: { TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* argCoord = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* argOffset = nullptr; TIntermTyped* lodComponent = nullptr; TIntermTyped* coordSwizzle = nullptr; const TSampler& sampler = argTex->getType().getSampler(); const bool isMS = sampler.isMultiSample(); const bool isBuffer = sampler.dim == EsdBuffer; const bool isImage = sampler.isImage(); const TBasicType coordBaseType = argCoord->getType().getBasicType(); // Last component of coordinate is the mip level, for non-MS. we separate them here: if (isMS || isBuffer || isImage) { // MS, Buffer, and Image have no LOD coordSwizzle = argCoord; } else { // Extract coordinate int swizzleSize = argCoord->getType().getVectorSize() - (isMS ? 0 : 1); TSwizzleSelectors coordFields; for (int i = 0; i < swizzleSize; ++i) coordFields.push_back(i); TIntermTyped* coordIdx = intermediate.addSwizzle(coordFields, loc); coordSwizzle = intermediate.addIndex(EOpVectorSwizzle, argCoord, coordIdx, loc); coordSwizzle->setType(TType(coordBaseType, EvqTemporary, coordFields.size())); // Extract LOD TIntermTyped* lodIdx = intermediate.addConstantUnion(coordFields.size(), loc, true); lodComponent = intermediate.addIndex(EOpIndexDirect, argCoord, lodIdx, loc); lodComponent->setType(TType(coordBaseType, EvqTemporary, 1)); } const int numArgs = (int)argAggregate->getSequence().size(); const bool hasOffset = ((!isMS && numArgs == 3) || (isMS && numArgs == 4)); // Create texel fetch const TOperator fetchOp = (isImage ? EOpImageLoad : hasOffset ? EOpTextureFetchOffset : EOpTextureFetch); TIntermAggregate* txfetch = new TIntermAggregate(fetchOp); // Build up the fetch txfetch->getSequence().push_back(argTex); txfetch->getSequence().push_back(coordSwizzle); if (isMS) { // add 2DMS sample index TIntermTyped* argSampleIdx = argAggregate->getSequence()[2]->getAsTyped(); txfetch->getSequence().push_back(argSampleIdx); } else if (isBuffer) { // Nothing else to do for buffers. } else if (isImage) { // Nothing else to do for images. } else { // 2DMS and buffer have no LOD, but everything else does. txfetch->getSequence().push_back(lodComponent); } // Obtain offset arg, if there is one. if (hasOffset) { const int offsetPos = (isMS ? 3 : 2); argOffset = argAggregate->getSequence()[offsetPos]->getAsTyped(); txfetch->getSequence().push_back(argOffset); } node = convertReturn(txfetch, sampler); break; } case EOpMethodSampleLevel: { TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); TIntermTyped* argLod = argAggregate->getSequence()[3]->getAsTyped(); TIntermTyped* argOffset = nullptr; const TSampler& sampler = argTex->getType().getSampler(); const int numArgs = (int)argAggregate->getSequence().size(); if (numArgs == 5) // offset, if present argOffset = argAggregate->getSequence()[4]->getAsTyped(); const TOperator textureOp = (argOffset == nullptr ? EOpTextureLod : EOpTextureLodOffset); TIntermAggregate* txsample = new TIntermAggregate(textureOp); TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); txsample->getSequence().push_back(txcombine); txsample->getSequence().push_back(argCoord); txsample->getSequence().push_back(argLod); if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); node = convertReturn(txsample, sampler); break; } case EOpMethodGather: { TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); TIntermTyped* argOffset = nullptr; // Offset is optional if (argAggregate->getSequence().size() > 3) argOffset = argAggregate->getSequence()[3]->getAsTyped(); const TOperator textureOp = (argOffset == nullptr ? EOpTextureGather : EOpTextureGatherOffset); TIntermAggregate* txgather = new TIntermAggregate(textureOp); TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); txgather->getSequence().push_back(txcombine); txgather->getSequence().push_back(argCoord); // Offset if not given is implicitly channel 0 (red) if (argOffset != nullptr) txgather->getSequence().push_back(argOffset); txgather->setType(node->getType()); txgather->setLoc(loc); node = txgather; break; } case EOpMethodGatherRed: // fall through... case EOpMethodGatherGreen: // ... case EOpMethodGatherBlue: // ... case EOpMethodGatherAlpha: // ... case EOpMethodGatherCmpRed: // ... case EOpMethodGatherCmpGreen: // ... case EOpMethodGatherCmpBlue: // ... case EOpMethodGatherCmpAlpha: // ... { int channel = 0; // the channel we are gathering int cmpValues = 0; // 1 if there is a compare value (handier than a bool below) switch (op) { case EOpMethodGatherCmpRed: cmpValues = 1; [[fallthrough]]; case EOpMethodGatherRed: channel = 0; break; case EOpMethodGatherCmpGreen: cmpValues = 1; [[fallthrough]]; case EOpMethodGatherGreen: channel = 1; break; case EOpMethodGatherCmpBlue: cmpValues = 1; [[fallthrough]]; case EOpMethodGatherBlue: channel = 2; break; case EOpMethodGatherCmpAlpha: cmpValues = 1; [[fallthrough]]; case EOpMethodGatherAlpha: channel = 3; break; default: assert(0); break; } // For now, we have nothing to map the component-wise comparison forms // to, because neither GLSL nor SPIR-V has such an opcode. Issue an // unimplemented error instead. Most of the machinery is here if that // should ever become available. However, red can be passed through // to OpImageDrefGather. G/B/A cannot, because that opcode does not // accept a component. if (cmpValues != 0 && op != EOpMethodGatherCmpRed) { error(loc, "unimplemented: component-level gather compare", "", ""); return; } int arg = 0; TIntermTyped* argTex = argAggregate->getSequence()[arg++]->getAsTyped(); TIntermTyped* argSamp = argAggregate->getSequence()[arg++]->getAsTyped(); TIntermTyped* argCoord = argAggregate->getSequence()[arg++]->getAsTyped(); TIntermTyped* argOffset = nullptr; TIntermTyped* argOffsets[4] = { nullptr, nullptr, nullptr, nullptr }; // TIntermTyped* argStatus = nullptr; // TODO: residency TIntermTyped* argCmp = nullptr; const TSamplerDim dim = argTex->getType().getSampler().dim; const int argSize = (int)argAggregate->getSequence().size(); bool hasStatus = (argSize == (5+cmpValues) || argSize == (8+cmpValues)); bool hasOffset1 = false; bool hasOffset4 = false; // Sampler argument should be a sampler. if (argSamp->getType().getBasicType() != EbtSampler) { error(loc, "expected: sampler type", "", ""); return; } // Cmp forms require SamplerComparisonState if (cmpValues > 0 && ! argSamp->getType().getSampler().isShadow()) { error(loc, "expected: SamplerComparisonState", "", ""); return; } // Only 2D forms can have offsets. Discover if we have 0, 1 or 4 offsets. if (dim == Esd2D) { hasOffset1 = (argSize == (4+cmpValues) || argSize == (5+cmpValues)); hasOffset4 = (argSize == (7+cmpValues) || argSize == (8+cmpValues)); } assert(!(hasOffset1 && hasOffset4)); TOperator textureOp = EOpTextureGather; // Compare forms have compare value if (cmpValues != 0) argCmp = argOffset = argAggregate->getSequence()[arg++]->getAsTyped(); // Some forms have single offset if (hasOffset1) { textureOp = EOpTextureGatherOffset; // single offset form argOffset = argAggregate->getSequence()[arg++]->getAsTyped(); } // Some forms have 4 gather offsets if (hasOffset4) { textureOp = EOpTextureGatherOffsets; // note plural, for 4 offset form for (int offsetNum = 0; offsetNum < 4; ++offsetNum) argOffsets[offsetNum] = argAggregate->getSequence()[arg++]->getAsTyped(); } // Residency status if (hasStatus) { // argStatus = argAggregate->getSequence()[arg++]->getAsTyped(); error(loc, "unimplemented: residency status", "", ""); return; } TIntermAggregate* txgather = new TIntermAggregate(textureOp); TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); TIntermTyped* argChannel = intermediate.addConstantUnion(channel, loc, true); txgather->getSequence().push_back(txcombine); txgather->getSequence().push_back(argCoord); // AST wants an array of 4 offsets, where HLSL has separate args. Here // we construct an array from the separate args. if (hasOffset4) { TType arrayType(EbtInt, EvqTemporary, 2); TArraySizes* arraySizes = new TArraySizes; arraySizes->addInnerSize(4); arrayType.transferArraySizes(arraySizes); TIntermAggregate* initList = new TIntermAggregate(EOpNull); for (int offsetNum = 0; offsetNum < 4; ++offsetNum) initList->getSequence().push_back(argOffsets[offsetNum]); argOffset = addConstructor(loc, initList, arrayType); } // Add comparison value if we have one if (argCmp != nullptr) txgather->getSequence().push_back(argCmp); // Add offset (either 1, or an array of 4) if we have one if (argOffset != nullptr) txgather->getSequence().push_back(argOffset); // Add channel value if the sampler is not shadow if (! argSamp->getType().getSampler().isShadow()) txgather->getSequence().push_back(argChannel); txgather->setType(node->getType()); txgather->setLoc(loc); node = txgather; break; } case EOpMethodCalculateLevelOfDetail: case EOpMethodCalculateLevelOfDetailUnclamped: { TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); TIntermAggregate* txquerylod = new TIntermAggregate(EOpTextureQueryLod); TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); txquerylod->getSequence().push_back(txcombine); txquerylod->getSequence().push_back(argCoord); TIntermTyped* lodComponent = intermediate.addConstantUnion( op == EOpMethodCalculateLevelOfDetail ? 0 : 1, loc, true); TIntermTyped* lodComponentIdx = intermediate.addIndex(EOpIndexDirect, txquerylod, lodComponent, loc); lodComponentIdx->setType(TType(EbtFloat, EvqTemporary, 1)); node = lodComponentIdx; break; } case EOpMethodGetSamplePosition: { // TODO: this entire decomposition exists because there is not yet a way to query // the sample position directly through SPIR-V. Instead, we return fixed sample // positions for common cases. *** If the sample positions are set differently, // this will be wrong. *** TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* argSampIdx = argAggregate->getSequence()[1]->getAsTyped(); TIntermAggregate* samplesQuery = new TIntermAggregate(EOpImageQuerySamples); samplesQuery->getSequence().push_back(argTex); samplesQuery->setType(TType(EbtUint, EvqTemporary, 1)); samplesQuery->setLoc(loc); TIntermAggregate* compoundStatement = nullptr; TVariable* outSampleCount = makeInternalVariable("@sampleCount", TType(EbtUint)); outSampleCount->getWritableType().getQualifier().makeTemporary(); TIntermTyped* compAssign = intermediate.addAssign(EOpAssign, intermediate.addSymbol(*outSampleCount, loc), samplesQuery, loc); compoundStatement = intermediate.growAggregate(compoundStatement, compAssign); TIntermTyped* idxtest[4]; // Create tests against 2, 4, 8, and 16 sample values int count = 0; for (int val = 2; val <= 16; val *= 2) idxtest[count++] = intermediate.addBinaryNode(EOpEqual, intermediate.addSymbol(*outSampleCount, loc), intermediate.addConstantUnion(val, loc), loc, TType(EbtBool)); const TOperator idxOp = (argSampIdx->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; // Create index ops into position arrays given sample index. // TODO: should it be clamped? TIntermTyped* index[4]; count = 0; for (int val = 2; val <= 16; val *= 2) { index[count] = intermediate.addIndex(idxOp, getSamplePosArray(val), argSampIdx, loc); index[count++]->setType(TType(EbtFloat, EvqTemporary, 2)); } // Create expression as: // (sampleCount == 2) ? pos2[idx] : // (sampleCount == 4) ? pos4[idx] : // (sampleCount == 8) ? pos8[idx] : // (sampleCount == 16) ? pos16[idx] : float2(0,0); TIntermTyped* test = intermediate.addSelection(idxtest[0], index[0], intermediate.addSelection(idxtest[1], index[1], intermediate.addSelection(idxtest[2], index[2], intermediate.addSelection(idxtest[3], index[3], getSamplePosArray(1), loc), loc), loc), loc); compoundStatement = intermediate.growAggregate(compoundStatement, test); compoundStatement->setOperator(EOpSequence); compoundStatement->setLoc(loc); compoundStatement->setType(TType(EbtFloat, EvqTemporary, 2)); node = compoundStatement; break; } case EOpSubpassLoad: { const TIntermTyped* argSubpass = argAggregate ? argAggregate->getSequence()[0]->getAsTyped() : arguments->getAsTyped(); const TSampler& sampler = argSubpass->getType().getSampler(); // subpass load: the multisample form is overloaded. Here, we convert that to // the EOpSubpassLoadMS opcode. if (argAggregate != nullptr && argAggregate->getSequence().size() > 1) node->getAsOperator()->setOp(EOpSubpassLoadMS); node = convertReturn(node, sampler); break; } default: break; // most pass through unchanged } } // // Decompose geometry shader methods // void HlslParseContext::decomposeGeometryMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) { if (node == nullptr || !node->getAsOperator()) return; const TOperator op = node->getAsOperator()->getOp(); const TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr; switch (op) { case EOpMethodAppend: if (argAggregate) { // Don't emit these for non-GS stage, since we won't have the gsStreamOutput symbol. if (language != EShLangGeometry) { node = nullptr; return; } TIntermAggregate* sequence = nullptr; TIntermAggregate* emit = new TIntermAggregate(EOpEmitVertex); emit->setLoc(loc); emit->setType(TType(EbtVoid)); TIntermTyped* data = argAggregate->getSequence()[1]->getAsTyped(); // This will be patched in finalization during finalizeAppendMethods() sequence = intermediate.growAggregate(sequence, data, loc); sequence = intermediate.growAggregate(sequence, emit); sequence->setOperator(EOpSequence); sequence->setLoc(loc); sequence->setType(TType(EbtVoid)); gsAppends.push_back({sequence, loc}); node = sequence; } break; case EOpMethodRestartStrip: { // Don't emit these for non-GS stage, since we won't have the gsStreamOutput symbol. if (language != EShLangGeometry) { node = nullptr; return; } TIntermAggregate* cut = new TIntermAggregate(EOpEndPrimitive); cut->setLoc(loc); cut->setType(TType(EbtVoid)); node = cut; } break; default: break; // most pass through unchanged } } // // Optionally decompose intrinsics to AST opcodes. // void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) { // Helper to find image data for image atomics: // OpImageLoad(image[idx]) // We take the image load apart and add its params to the atomic op aggregate node const auto imageAtomicParams = [this, &loc, &node](TIntermAggregate* atomic, TIntermTyped* load) { TIntermAggregate* loadOp = load->getAsAggregate(); if (loadOp == nullptr) { error(loc, "unknown image type in atomic operation", "", ""); node = nullptr; return; } atomic->getSequence().push_back(loadOp->getSequence()[0]); atomic->getSequence().push_back(loadOp->getSequence()[1]); }; // Return true if this is an imageLoad, which we will change to an image atomic. const auto isImageParam = [](TIntermTyped* image) -> bool { TIntermAggregate* imageAggregate = image->getAsAggregate(); return imageAggregate != nullptr && imageAggregate->getOp() == EOpImageLoad; }; const auto lookupBuiltinVariable = [&](const char* name, TBuiltInVariable builtin, TType& type) -> TIntermTyped* { TSymbol* symbol = symbolTable.find(name); if (nullptr == symbol) { type.getQualifier().builtIn = builtin; TVariable* variable = new TVariable(NewPoolTString(name), type); symbolTable.insert(*variable); symbol = symbolTable.find(name); assert(symbol && "Inserted symbol could not be found!"); } return intermediate.addSymbol(*(symbol->getAsVariable()), loc); }; // HLSL intrinsics can be pass through to native AST opcodes, or decomposed here to existing AST // opcodes for compatibility with existing software stacks. static const bool decomposeHlslIntrinsics = true; if (!decomposeHlslIntrinsics || !node || !node->getAsOperator()) return; const TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr; TIntermUnary* fnUnary = node->getAsUnaryNode(); const TOperator op = node->getAsOperator()->getOp(); switch (op) { case EOpGenMul: { // mul(a,b) -> MatrixTimesMatrix, MatrixTimesVector, MatrixTimesScalar, VectorTimesScalar, Dot, Mul // Since we are treating HLSL rows like GLSL columns (the first matrix indirection), // we must reverse the operand order here. Hence, arg0 gets sequence[1], etc. TIntermTyped* arg0 = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* arg1 = argAggregate->getSequence()[0]->getAsTyped(); if (arg0->isVector() && arg1->isVector()) { // vec * vec node->getAsAggregate()->setOperator(EOpDot); } else { node = handleBinaryMath(loc, "mul", EOpMul, arg0, arg1); } break; } case EOpRcp: { // rcp(a) -> 1 / a TIntermTyped* arg0 = fnUnary->getOperand(); TBasicType type0 = arg0->getBasicType(); TIntermTyped* one = intermediate.addConstantUnion(1, type0, loc, true); node = handleBinaryMath(loc, "rcp", EOpDiv, one, arg0); break; } case EOpAny: // fall through case EOpAll: { TIntermTyped* typedArg = arguments->getAsTyped(); // HLSL allows float/etc types here, and the SPIR-V opcode requires a bool. // We'll convert here. Note that for efficiency, we could add a smarter // decomposition for some type cases, e.g, maybe by decomposing a dot product. if (typedArg->getType().getBasicType() != EbtBool) { const TType boolType(EbtBool, EvqTemporary, typedArg->getVectorSize(), typedArg->getMatrixCols(), typedArg->getMatrixRows(), typedArg->isVector()); typedArg = intermediate.addConversion(EOpConstructBool, boolType, typedArg); node->getAsUnaryNode()->setOperand(typedArg); } break; } case EOpSaturate: { // saturate(a) -> clamp(a,0,1) TIntermTyped* arg0 = fnUnary->getOperand(); TBasicType type0 = arg0->getBasicType(); TIntermAggregate* clamp = new TIntermAggregate(EOpClamp); clamp->getSequence().push_back(arg0); clamp->getSequence().push_back(intermediate.addConstantUnion(0, type0, loc, true)); clamp->getSequence().push_back(intermediate.addConstantUnion(1, type0, loc, true)); clamp->setLoc(loc); clamp->setType(node->getType()); clamp->getWritableType().getQualifier().makeTemporary(); node = clamp; break; } case EOpSinCos: { // sincos(a,b,c) -> b = sin(a), c = cos(a) TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped(); TIntermTyped* sinStatement = handleUnaryMath(loc, "sin", EOpSin, arg0); TIntermTyped* cosStatement = handleUnaryMath(loc, "cos", EOpCos, arg0); TIntermTyped* sinAssign = intermediate.addAssign(EOpAssign, arg1, sinStatement, loc); TIntermTyped* cosAssign = intermediate.addAssign(EOpAssign, arg2, cosStatement, loc); TIntermAggregate* compoundStatement = intermediate.makeAggregate(sinAssign, loc); compoundStatement = intermediate.growAggregate(compoundStatement, cosAssign); compoundStatement->setOperator(EOpSequence); compoundStatement->setLoc(loc); compoundStatement->setType(TType(EbtVoid)); node = compoundStatement; break; } case EOpClip: { // clip(a) -> if (any(a<0)) discard; TIntermTyped* arg0 = fnUnary->getOperand(); TBasicType type0 = arg0->getBasicType(); TIntermTyped* compareNode = nullptr; // For non-scalars: per experiment with FXC compiler, discard if any component < 0. if (!arg0->isScalar()) { // component-wise compare: a < 0 TIntermAggregate* less = new TIntermAggregate(EOpLessThan); less->getSequence().push_back(arg0); less->setLoc(loc); // make vec or mat of bool matching dimensions of input less->setType(TType(EbtBool, EvqTemporary, arg0->getType().getVectorSize(), arg0->getType().getMatrixCols(), arg0->getType().getMatrixRows(), arg0->getType().isVector())); // calculate # of components for comparison const const int constComponentCount = std::max(arg0->getType().getVectorSize(), 1) * std::max(arg0->getType().getMatrixCols(), 1) * std::max(arg0->getType().getMatrixRows(), 1); TConstUnion zero; if (arg0->getType().isIntegerDomain()) zero.setDConst(0); else zero.setDConst(0.0); TConstUnionArray zeros(constComponentCount, zero); less->getSequence().push_back(intermediate.addConstantUnion(zeros, arg0->getType(), loc, true)); compareNode = intermediate.addBuiltInFunctionCall(loc, EOpAny, true, less, TType(EbtBool)); } else { TIntermTyped* zero; if (arg0->getType().isIntegerDomain()) zero = intermediate.addConstantUnion(0, loc, true); else zero = intermediate.addConstantUnion(0.0, type0, loc, true); compareNode = handleBinaryMath(loc, "clip", EOpLessThan, arg0, zero); } TIntermBranch* killNode = intermediate.addBranch(EOpKill, loc); node = new TIntermSelection(compareNode, killNode, nullptr); node->setLoc(loc); break; } case EOpLog10: { // log10(a) -> log2(a) * 0.301029995663981 (== 1/log2(10)) TIntermTyped* arg0 = fnUnary->getOperand(); TIntermTyped* log2 = handleUnaryMath(loc, "log2", EOpLog2, arg0); TIntermTyped* base = intermediate.addConstantUnion(0.301029995663981f, EbtFloat, loc, true); node = handleBinaryMath(loc, "mul", EOpMul, log2, base); break; } case EOpDst: { // dest.x = 1; // dest.y = src0.y * src1.y; // dest.z = src0.z; // dest.w = src1.w; TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* y = intermediate.addConstantUnion(1, loc, true); TIntermTyped* z = intermediate.addConstantUnion(2, loc, true); TIntermTyped* w = intermediate.addConstantUnion(3, loc, true); TIntermTyped* src0y = intermediate.addIndex(EOpIndexDirect, arg0, y, loc); TIntermTyped* src1y = intermediate.addIndex(EOpIndexDirect, arg1, y, loc); TIntermTyped* src0z = intermediate.addIndex(EOpIndexDirect, arg0, z, loc); TIntermTyped* src1w = intermediate.addIndex(EOpIndexDirect, arg1, w, loc); TIntermAggregate* dst = new TIntermAggregate(EOpConstructVec4); dst->getSequence().push_back(intermediate.addConstantUnion(1.0, EbtFloat, loc, true)); dst->getSequence().push_back(handleBinaryMath(loc, "mul", EOpMul, src0y, src1y)); dst->getSequence().push_back(src0z); dst->getSequence().push_back(src1w); dst->setType(TType(EbtFloat, EvqTemporary, 4)); dst->setLoc(loc); node = dst; break; } case EOpInterlockedAdd: // optional last argument (if present) is assigned from return value case EOpInterlockedMin: // ... case EOpInterlockedMax: // ... case EOpInterlockedAnd: // ... case EOpInterlockedOr: // ... case EOpInterlockedXor: // ... case EOpInterlockedExchange: // always has output arg { TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // dest TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // value TIntermTyped* arg2 = nullptr; if (argAggregate->getSequence().size() > 2) arg2 = argAggregate->getSequence()[2]->getAsTyped(); const bool isImage = isImageParam(arg0); const TOperator atomicOp = mapAtomicOp(loc, op, isImage); TIntermAggregate* atomic = new TIntermAggregate(atomicOp); atomic->setType(arg0->getType()); atomic->getWritableType().getQualifier().makeTemporary(); atomic->setLoc(loc); if (isImage) { // orig_value = imageAtomicOp(image, loc, data) imageAtomicParams(atomic, arg0); atomic->getSequence().push_back(arg1); if (argAggregate->getSequence().size() > 2) { node = intermediate.addAssign(EOpAssign, arg2, atomic, loc); } else { node = atomic; // no assignment needed, as there was no out var. } } else { // Normal memory variable: // arg0 = mem, arg1 = data, arg2(optional,out) = orig_value if (argAggregate->getSequence().size() > 2) { // optional output param is present. return value goes to arg2. atomic->getSequence().push_back(arg0); atomic->getSequence().push_back(arg1); node = intermediate.addAssign(EOpAssign, arg2, atomic, loc); } else { // Set the matching operator. Since output is absent, this is all we need to do. node->getAsAggregate()->setOperator(atomicOp); node->setType(atomic->getType()); } } break; } case EOpInterlockedCompareExchange: { TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // dest TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // cmp TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped(); // value TIntermTyped* arg3 = argAggregate->getSequence()[3]->getAsTyped(); // orig const bool isImage = isImageParam(arg0); TIntermAggregate* atomic = new TIntermAggregate(mapAtomicOp(loc, op, isImage)); atomic->setLoc(loc); atomic->setType(arg2->getType()); atomic->getWritableType().getQualifier().makeTemporary(); if (isImage) { imageAtomicParams(atomic, arg0); } else { atomic->getSequence().push_back(arg0); } atomic->getSequence().push_back(arg1); atomic->getSequence().push_back(arg2); node = intermediate.addAssign(EOpAssign, arg3, atomic, loc); break; } case EOpEvaluateAttributeSnapped: { // SPIR-V InterpolateAtOffset uses float vec2 offset in pixels // HLSL uses int2 offset on a 16x16 grid in [-8..7] on x & y: // iU = (iU<<28)>>28 // fU = ((float)iU)/16 // Targets might handle this natively, in which case they can disable // decompositions. TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // value TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // offset TIntermTyped* i28 = intermediate.addConstantUnion(28, loc, true); TIntermTyped* iU = handleBinaryMath(loc, ">>", EOpRightShift, handleBinaryMath(loc, "<<", EOpLeftShift, arg1, i28), i28); TIntermTyped* recip16 = intermediate.addConstantUnion((1.0/16.0), EbtFloat, loc, true); TIntermTyped* floatOffset = handleBinaryMath(loc, "mul", EOpMul, intermediate.addConversion(EOpConstructFloat, TType(EbtFloat, EvqTemporary, 2), iU), recip16); TIntermAggregate* interp = new TIntermAggregate(EOpInterpolateAtOffset); interp->getSequence().push_back(arg0); interp->getSequence().push_back(floatOffset); interp->setLoc(loc); interp->setType(arg0->getType()); interp->getWritableType().getQualifier().makeTemporary(); node = interp; break; } case EOpLit: { TIntermTyped* n_dot_l = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* n_dot_h = argAggregate->getSequence()[1]->getAsTyped(); TIntermTyped* m = argAggregate->getSequence()[2]->getAsTyped(); TIntermAggregate* dst = new TIntermAggregate(EOpConstructVec4); // Ambient dst->getSequence().push_back(intermediate.addConstantUnion(1.0, EbtFloat, loc, true)); // Diffuse: TIntermTyped* zero = intermediate.addConstantUnion(0.0, EbtFloat, loc, true); TIntermAggregate* diffuse = new TIntermAggregate(EOpMax); diffuse->getSequence().push_back(n_dot_l); diffuse->getSequence().push_back(zero); diffuse->setLoc(loc); diffuse->setType(TType(EbtFloat)); dst->getSequence().push_back(diffuse); // Specular: TIntermAggregate* min_ndot = new TIntermAggregate(EOpMin); min_ndot->getSequence().push_back(n_dot_l); min_ndot->getSequence().push_back(n_dot_h); min_ndot->setLoc(loc); min_ndot->setType(TType(EbtFloat)); TIntermTyped* compare = handleBinaryMath(loc, "<", EOpLessThan, min_ndot, zero); TIntermTyped* n_dot_h_m = handleBinaryMath(loc, "mul", EOpMul, n_dot_h, m); // n_dot_h * m dst->getSequence().push_back(intermediate.addSelection(compare, zero, n_dot_h_m, loc)); // One: dst->getSequence().push_back(intermediate.addConstantUnion(1.0, EbtFloat, loc, true)); dst->setLoc(loc); dst->setType(TType(EbtFloat, EvqTemporary, 4)); node = dst; break; } case EOpAsDouble: { // asdouble accepts two 32 bit ints. we can use EOpUint64BitsToDouble, but must // first construct a uint64. TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); if (arg0->getType().isVector()) { // TODO: ... error(loc, "double2 conversion not implemented", "asdouble", ""); break; } TIntermAggregate* uint64 = new TIntermAggregate(EOpConstructUVec2); uint64->getSequence().push_back(arg0); uint64->getSequence().push_back(arg1); uint64->setType(TType(EbtUint, EvqTemporary, 2)); // convert 2 uints to a uint2 uint64->setLoc(loc); // bitcast uint2 to a double TIntermTyped* convert = new TIntermUnary(EOpUint64BitsToDouble); convert->getAsUnaryNode()->setOperand(uint64); convert->setLoc(loc); convert->setType(TType(EbtDouble, EvqTemporary)); node = convert; break; } case EOpF16tof32: { // input uvecN with low 16 bits of each component holding a float16. convert to float32. TIntermTyped* argValue = node->getAsUnaryNode()->getOperand(); TIntermTyped* zero = intermediate.addConstantUnion(0, loc, true); const int vecSize = argValue->getType().getVectorSize(); TOperator constructOp = EOpNull; switch (vecSize) { case 1: constructOp = EOpNull; break; // direct use, no construct needed case 2: constructOp = EOpConstructVec2; break; case 3: constructOp = EOpConstructVec3; break; case 4: constructOp = EOpConstructVec4; break; default: assert(0); break; } // For scalar case, we don't need to construct another type. TIntermAggregate* result = (vecSize > 1) ? new TIntermAggregate(constructOp) : nullptr; if (result) { result->setType(TType(EbtFloat, EvqTemporary, vecSize)); result->setLoc(loc); } for (int idx = 0; idx < vecSize; ++idx) { TIntermTyped* idxConst = intermediate.addConstantUnion(idx, loc, true); TIntermTyped* component = argValue->getType().isVector() ? intermediate.addIndex(EOpIndexDirect, argValue, idxConst, loc) : argValue; if (component != argValue) component->setType(TType(argValue->getBasicType(), EvqTemporary)); TIntermTyped* unpackOp = new TIntermUnary(EOpUnpackHalf2x16); unpackOp->setType(TType(EbtFloat, EvqTemporary, 2)); unpackOp->getAsUnaryNode()->setOperand(component); unpackOp->setLoc(loc); TIntermTyped* lowOrder = intermediate.addIndex(EOpIndexDirect, unpackOp, zero, loc); if (result != nullptr) { result->getSequence().push_back(lowOrder); node = result; } else { node = lowOrder; } } break; } case EOpF32tof16: { // input floatN converted to 16 bit float in low order bits of each component of uintN TIntermTyped* argValue = node->getAsUnaryNode()->getOperand(); TIntermTyped* zero = intermediate.addConstantUnion(0.0, EbtFloat, loc, true); const int vecSize = argValue->getType().getVectorSize(); TOperator constructOp = EOpNull; switch (vecSize) { case 1: constructOp = EOpNull; break; // direct use, no construct needed case 2: constructOp = EOpConstructUVec2; break; case 3: constructOp = EOpConstructUVec3; break; case 4: constructOp = EOpConstructUVec4; break; default: assert(0); break; } // For scalar case, we don't need to construct another type. TIntermAggregate* result = (vecSize > 1) ? new TIntermAggregate(constructOp) : nullptr; if (result) { result->setType(TType(EbtUint, EvqTemporary, vecSize)); result->setLoc(loc); } for (int idx = 0; idx < vecSize; ++idx) { TIntermTyped* idxConst = intermediate.addConstantUnion(idx, loc, true); TIntermTyped* component = argValue->getType().isVector() ? intermediate.addIndex(EOpIndexDirect, argValue, idxConst, loc) : argValue; if (component != argValue) component->setType(TType(argValue->getBasicType(), EvqTemporary)); TIntermAggregate* vec2ComponentAndZero = new TIntermAggregate(EOpConstructVec2); vec2ComponentAndZero->getSequence().push_back(component); vec2ComponentAndZero->getSequence().push_back(zero); vec2ComponentAndZero->setType(TType(EbtFloat, EvqTemporary, 2)); vec2ComponentAndZero->setLoc(loc); TIntermTyped* packOp = new TIntermUnary(EOpPackHalf2x16); packOp->getAsUnaryNode()->setOperand(vec2ComponentAndZero); packOp->setLoc(loc); packOp->setType(TType(EbtUint, EvqTemporary)); if (result != nullptr) { result->getSequence().push_back(packOp); node = result; } else { node = packOp; } } break; } case EOpD3DCOLORtoUBYTE4: { // ivec4 ( x.zyxw * 255.001953 ); TIntermTyped* arg0 = node->getAsUnaryNode()->getOperand(); TSwizzleSelectors selectors; selectors.push_back(2); selectors.push_back(1); selectors.push_back(0); selectors.push_back(3); TIntermTyped* swizzleIdx = intermediate.addSwizzle(selectors, loc); TIntermTyped* swizzled = intermediate.addIndex(EOpVectorSwizzle, arg0, swizzleIdx, loc); swizzled->setType(arg0->getType()); swizzled->getWritableType().getQualifier().makeTemporary(); TIntermTyped* conversion = intermediate.addConstantUnion(255.001953f, EbtFloat, loc, true); TIntermTyped* rangeConverted = handleBinaryMath(loc, "mul", EOpMul, conversion, swizzled); rangeConverted->setType(arg0->getType()); rangeConverted->getWritableType().getQualifier().makeTemporary(); node = intermediate.addConversion(EOpConstructInt, TType(EbtInt, EvqTemporary, 4), rangeConverted); node->setLoc(loc); node->setType(TType(EbtInt, EvqTemporary, 4)); break; } case EOpIsFinite: { // Since OPIsFinite in SPIR-V is only supported with the Kernel capability, we translate // it to !isnan && !isinf TIntermTyped* arg0 = node->getAsUnaryNode()->getOperand(); // We'll make a temporary in case the RHS is cmoplex TVariable* tempArg = makeInternalVariable("@finitetmp", arg0->getType()); tempArg->getWritableType().getQualifier().makeTemporary(); TIntermTyped* tmpArgAssign = intermediate.addAssign(EOpAssign, intermediate.addSymbol(*tempArg, loc), arg0, loc); TIntermAggregate* compoundStatement = intermediate.makeAggregate(tmpArgAssign, loc); const TType boolType(EbtBool, EvqTemporary, arg0->getVectorSize(), arg0->getMatrixCols(), arg0->getMatrixRows()); TIntermTyped* isnan = handleUnaryMath(loc, "isnan", EOpIsNan, intermediate.addSymbol(*tempArg, loc)); isnan->setType(boolType); TIntermTyped* notnan = handleUnaryMath(loc, "!", EOpLogicalNot, isnan); notnan->setType(boolType); TIntermTyped* isinf = handleUnaryMath(loc, "isinf", EOpIsInf, intermediate.addSymbol(*tempArg, loc)); isinf->setType(boolType); TIntermTyped* notinf = handleUnaryMath(loc, "!", EOpLogicalNot, isinf); notinf->setType(boolType); TIntermTyped* andNode = handleBinaryMath(loc, "and", EOpLogicalAnd, notnan, notinf); andNode->setType(boolType); compoundStatement = intermediate.growAggregate(compoundStatement, andNode); compoundStatement->setOperator(EOpSequence); compoundStatement->setLoc(loc); compoundStatement->setType(boolType); node = compoundStatement; break; } case EOpWaveGetLaneCount: { // Mapped to gl_SubgroupSize builtin (We preprend @ to the symbol // so that it inhabits the symbol table, but has a user-invalid name // in-case some source HLSL defined the symbol also). TType type(EbtUint, EvqVaryingIn); node = lookupBuiltinVariable("@gl_SubgroupSize", EbvSubgroupSize2, type); break; } case EOpWaveGetLaneIndex: { // Mapped to gl_SubgroupInvocationID builtin (We preprend @ to the // symbol so that it inhabits the symbol table, but has a // user-invalid name in-case some source HLSL defined the symbol // also). TType type(EbtUint, EvqVaryingIn); node = lookupBuiltinVariable("@gl_SubgroupInvocationID", EbvSubgroupInvocation2, type); break; } case EOpWaveActiveCountBits: { // Mapped to subgroupBallotBitCount(subgroupBallot()) builtin // uvec4 type. TType uvec4Type(EbtUint, EvqTemporary, 4); // Get the uvec4 return from subgroupBallot(). TIntermTyped* res = intermediate.addBuiltInFunctionCall(loc, EOpSubgroupBallot, true, arguments, uvec4Type); // uint type. TType uintType(EbtUint, EvqTemporary); node = intermediate.addBuiltInFunctionCall(loc, EOpSubgroupBallotBitCount, true, res, uintType); break; } case EOpWavePrefixCountBits: { // Mapped to subgroupBallotExclusiveBitCount(subgroupBallot()) // builtin // uvec4 type. TType uvec4Type(EbtUint, EvqTemporary, 4); // Get the uvec4 return from subgroupBallot(). TIntermTyped* res = intermediate.addBuiltInFunctionCall(loc, EOpSubgroupBallot, true, arguments, uvec4Type); // uint type. TType uintType(EbtUint, EvqTemporary); node = intermediate.addBuiltInFunctionCall(loc, EOpSubgroupBallotExclusiveBitCount, true, res, uintType); break; } default: break; // most pass through unchanged } } // // Handle seeing function call syntax in the grammar, which could be any of // - .length() method // - constructor // - a call to a built-in function mapped to an operator // - a call to a built-in function that will remain a function call (e.g., texturing) // - user function // - subroutine call (not implemented yet) // TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction* function, TIntermTyped* arguments) { TIntermTyped* result = nullptr; TOperator op = function->getBuiltInOp(); if (op != EOpNull) { // // Then this should be a constructor. // Don't go through the symbol table for constructors. // Their parameters will be verified algorithmically. // TType type(EbtVoid); // use this to get the type back if (! constructorError(loc, arguments, *function, op, type)) { // // It's a constructor, of type 'type'. // result = handleConstructor(loc, arguments, type); if (result == nullptr) { error(loc, "cannot construct with these arguments", type.getCompleteString().c_str(), ""); return nullptr; } } } else { // // Find it in the symbol table. // const TFunction* fnCandidate = nullptr; bool builtIn = false; int thisDepth = 0; // For mat mul, the situation is unusual: we have to compare vector sizes to mat row or col sizes, // and clamp the opposite arg. Since that's complex, we farm it off to a separate method. // It doesn't naturally fall out of processing an argument at a time in isolation. if (function->getName() == "mul") addGenMulArgumentConversion(loc, *function, arguments); TIntermAggregate* aggregate = arguments ? arguments->getAsAggregate() : nullptr; // TODO: this needs improvement: there's no way at present to look up a signature in // the symbol table for an arbitrary type. This is a temporary hack until that ability exists. // It will have false positives, since it doesn't check arg counts or types. if (arguments) { // Check if first argument is struct buffer type. It may be an aggregate or a symbol, so we // look for either case. TIntermTyped* arg0 = nullptr; if (aggregate && aggregate->getSequence().size() > 0 && aggregate->getSequence()[0]) arg0 = aggregate->getSequence()[0]->getAsTyped(); else if (arguments->getAsSymbolNode()) arg0 = arguments->getAsSymbolNode(); if (arg0 != nullptr && isStructBufferType(arg0->getType())) { static const int methodPrefixSize = sizeof(BUILTIN_PREFIX)-1; if (function->getName().length() > methodPrefixSize && isStructBufferMethod(function->getName().substr(methodPrefixSize))) { const TString mangle = function->getName() + "("; TSymbol* symbol = symbolTable.find(mangle, &builtIn); if (symbol) fnCandidate = symbol->getAsFunction(); } } } if (fnCandidate == nullptr) fnCandidate = findFunction(loc, *function, builtIn, thisDepth, arguments); if (fnCandidate) { // This is a declared function that might map to // - a built-in operator, // - a built-in function not mapped to an operator, or // - a user function. // turn an implicit member-function resolution into an explicit call TString callerName; if (thisDepth == 0) callerName = fnCandidate->getMangledName(); else { // get the explicit (full) name of the function callerName = currentTypePrefix[currentTypePrefix.size() - thisDepth]; callerName += fnCandidate->getMangledName(); // insert the implicit calling argument pushFrontArguments(intermediate.addSymbol(*getImplicitThis(thisDepth)), arguments); } // Convert 'in' arguments, so that types match. // However, skip those that need expansion, that is covered next. if (arguments) addInputArgumentConversions(*fnCandidate, arguments); // Expand arguments. Some arguments must physically expand to a different set // than what the shader declared and passes. if (arguments && !builtIn) expandArguments(loc, *fnCandidate, arguments); // Expansion may have changed the form of arguments aggregate = arguments ? arguments->getAsAggregate() : nullptr; op = fnCandidate->getBuiltInOp(); if (builtIn && op != EOpNull) { // SM 4.0 and above guarantees roundEven semantics for round() if (!hlslDX9Compatible() && op == EOpRound) op = EOpRoundEven; // A function call mapped to a built-in operation. result = intermediate.addBuiltInFunctionCall(loc, op, fnCandidate->getParamCount() == 1, arguments, fnCandidate->getType()); if (result == nullptr) { error(arguments->getLoc(), " wrong operand type", "Internal Error", "built in unary operator function. Type: %s", static_cast(arguments)->getCompleteString().c_str()); } else if (result->getAsOperator()) { builtInOpCheck(loc, *fnCandidate, *result->getAsOperator()); } } else { // This is a function call not mapped to built-in operator. // It could still be a built-in function, but only if PureOperatorBuiltins == false. result = intermediate.setAggregateOperator(arguments, EOpFunctionCall, fnCandidate->getType(), loc); TIntermAggregate* call = result->getAsAggregate(); call->setName(callerName); // this is how we know whether the given function is a built-in function or a user-defined function // if builtIn == false, it's a userDefined -> could be an overloaded built-in function also // if builtIn == true, it's definitely a built-in function with EOpNull if (! builtIn) { call->setUserDefined(); intermediate.addToCallGraph(infoSink, currentCaller, callerName); } } // for decompositions, since we want to operate on the function node, not the aggregate holding // output conversions. const TIntermTyped* fnNode = result; decomposeStructBufferMethods(loc, result, arguments); // HLSL->AST struct buffer method decompositions decomposeIntrinsic(loc, result, arguments); // HLSL->AST intrinsic decompositions decomposeSampleMethods(loc, result, arguments); // HLSL->AST sample method decompositions decomposeGeometryMethods(loc, result, arguments); // HLSL->AST geometry method decompositions // Create the qualifier list, carried in the AST for the call. // Because some arguments expand to multiple arguments, the qualifier list will // be longer than the formal parameter list. if (result == fnNode && result->getAsAggregate()) { TQualifierList& qualifierList = result->getAsAggregate()->getQualifierList(); for (int i = 0; i < fnCandidate->getParamCount(); ++i) { TStorageQualifier qual = (*fnCandidate)[i].type->getQualifier().storage; if (hasStructBuffCounter(*(*fnCandidate)[i].type)) { // add buffer and counter buffer argument qualifier qualifierList.push_back(qual); qualifierList.push_back(qual); } else if (shouldFlatten(*(*fnCandidate)[i].type, (*fnCandidate)[i].type->getQualifier().storage, true)) { // add structure member expansion for (int memb = 0; memb < (int)(*fnCandidate)[i].type->getStruct()->size(); ++memb) qualifierList.push_back(qual); } else { // Normal 1:1 case qualifierList.push_back(qual); } } } // Convert 'out' arguments. If it was a constant folded built-in, it won't be an aggregate anymore. // Built-ins with a single argument aren't called with an aggregate, but they also don't have an output. // Also, build the qualifier list for user function calls, which are always called with an aggregate. // We don't do this is if there has been a decomposition, which will have added its own conversions // for output parameters. if (result == fnNode && result->getAsAggregate()) result = addOutputArgumentConversions(*fnCandidate, *result->getAsOperator()); } } // generic error recovery // TODO: simplification: localize all the error recoveries that look like this, and taking type into account to // reduce cascades if (result == nullptr) result = intermediate.addConstantUnion(0.0, EbtFloat, loc); return result; } // An initial argument list is difficult: it can be null, or a single node, // or an aggregate if more than one argument. Add one to the front, maintaining // this lack of uniformity. void HlslParseContext::pushFrontArguments(TIntermTyped* front, TIntermTyped*& arguments) { if (arguments == nullptr) arguments = front; else if (arguments->getAsAggregate() != nullptr) arguments->getAsAggregate()->getSequence().insert(arguments->getAsAggregate()->getSequence().begin(), front); else arguments = intermediate.growAggregate(front, arguments); } // // HLSL allows mismatched dimensions on vec*mat, mat*vec, vec*vec, and mat*mat. This is a // situation not well suited to resolution in intrinsic selection, but we can do so here, since we // can look at both arguments insert explicit shape changes if required. // void HlslParseContext::addGenMulArgumentConversion(const TSourceLoc& loc, TFunction& call, TIntermTyped*& args) { TIntermAggregate* argAggregate = args ? args->getAsAggregate() : nullptr; if (argAggregate == nullptr || argAggregate->getSequence().size() != 2) { // It really ought to have two arguments. error(loc, "expected: mul arguments", "", ""); return; } TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); if (arg0->isVector() && arg1->isVector()) { // For: // vec * vec: it's handled during intrinsic selection, so while we could do it here, // we can also ignore it, which is easier. } else if (arg0->isVector() && arg1->isMatrix()) { // vec * mat: we clamp the vec if the mat col is smaller, else clamp the mat col. if (arg0->getVectorSize() < arg1->getMatrixCols()) { // vec is smaller, so truncate larger mat dimension const TType truncType(arg1->getBasicType(), arg1->getQualifier().storage, arg1->getQualifier().precision, 0, arg0->getVectorSize(), arg1->getMatrixRows()); arg1 = addConstructor(loc, arg1, truncType); } else if (arg0->getVectorSize() > arg1->getMatrixCols()) { // vec is larger, so truncate vec to mat size const TType truncType(arg0->getBasicType(), arg0->getQualifier().storage, arg0->getQualifier().precision, arg1->getMatrixCols()); arg0 = addConstructor(loc, arg0, truncType); } } else if (arg0->isMatrix() && arg1->isVector()) { // mat * vec: we clamp the vec if the mat col is smaller, else clamp the mat col. if (arg1->getVectorSize() < arg0->getMatrixRows()) { // vec is smaller, so truncate larger mat dimension const TType truncType(arg0->getBasicType(), arg0->getQualifier().storage, arg0->getQualifier().precision, 0, arg0->getMatrixCols(), arg1->getVectorSize()); arg0 = addConstructor(loc, arg0, truncType); } else if (arg1->getVectorSize() > arg0->getMatrixRows()) { // vec is larger, so truncate vec to mat size const TType truncType(arg1->getBasicType(), arg1->getQualifier().storage, arg1->getQualifier().precision, arg0->getMatrixRows()); arg1 = addConstructor(loc, arg1, truncType); } } else if (arg0->isMatrix() && arg1->isMatrix()) { // mat * mat: we clamp the smaller inner dimension to match the other matrix size. // Remember, HLSL Mrc = GLSL/SPIRV Mcr. if (arg0->getMatrixRows() > arg1->getMatrixCols()) { const TType truncType(arg0->getBasicType(), arg0->getQualifier().storage, arg0->getQualifier().precision, 0, arg0->getMatrixCols(), arg1->getMatrixCols()); arg0 = addConstructor(loc, arg0, truncType); } else if (arg0->getMatrixRows() < arg1->getMatrixCols()) { const TType truncType(arg1->getBasicType(), arg1->getQualifier().storage, arg1->getQualifier().precision, 0, arg0->getMatrixRows(), arg1->getMatrixRows()); arg1 = addConstructor(loc, arg1, truncType); } } else { // It's something with scalars: we'll just leave it alone. Function selection will handle it // downstream. } // Warn if we altered one of the arguments if (arg0 != argAggregate->getSequence()[0] || arg1 != argAggregate->getSequence()[1]) warn(loc, "mul() matrix size mismatch", "", ""); // Put arguments back. (They might be unchanged, in which case this is harmless). argAggregate->getSequence()[0] = arg0; argAggregate->getSequence()[1] = arg1; call[0].type = &arg0->getWritableType(); call[1].type = &arg1->getWritableType(); } // // Add any needed implicit conversions for function-call arguments to input parameters. // void HlslParseContext::addInputArgumentConversions(const TFunction& function, TIntermTyped*& arguments) { TIntermAggregate* aggregate = arguments->getAsAggregate(); // Replace a single argument with a single argument. const auto setArg = [&](int paramNum, TIntermTyped* arg) { if (function.getParamCount() == 1) arguments = arg; else { if (aggregate == nullptr) arguments = arg; else aggregate->getSequence()[paramNum] = arg; } }; // Process each argument's conversion for (int param = 0; param < function.getParamCount(); ++param) { if (! function[param].type->getQualifier().isParamInput()) continue; // At this early point there is a slight ambiguity between whether an aggregate 'arguments' // is the single argument itself or its children are the arguments. Only one argument // means take 'arguments' itself as the one argument. TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() : (aggregate ? aggregate->getSequence()[param]->getAsTyped() : arguments->getAsTyped()); if (*function[param].type != arg->getType()) { // In-qualified arguments just need an extra node added above the argument to // convert to the correct type. TIntermTyped* convArg = intermediate.addConversion(EOpFunctionCall, *function[param].type, arg); if (convArg != nullptr) convArg = intermediate.addUniShapeConversion(EOpFunctionCall, *function[param].type, convArg); if (convArg != nullptr) setArg(param, convArg); else error(arg->getLoc(), "cannot convert input argument, argument", "", "%d", param); } else { if (wasFlattened(arg)) { // If both formal and calling arg are to be flattened, leave that to argument // expansion, not conversion. if (!shouldFlatten(*function[param].type, function[param].type->getQualifier().storage, true)) { // Will make a two-level subtree. // The deepest will copy member-by-member to build the structure to pass. // The level above that will be a two-operand EOpComma sequence that follows the copy by the // object itself. TVariable* internalAggregate = makeInternalVariable("aggShadow", *function[param].type); internalAggregate->getWritableType().getQualifier().makeTemporary(); TIntermSymbol* internalSymbolNode = new TIntermSymbol(internalAggregate->getUniqueId(), internalAggregate->getName(), getLanguage(), internalAggregate->getType()); internalSymbolNode->setLoc(arg->getLoc()); // This makes the deepest level, the member-wise copy TIntermAggregate* assignAgg = handleAssign(arg->getLoc(), EOpAssign, internalSymbolNode, arg)->getAsAggregate(); // Now, pair that with the resulting aggregate. assignAgg = intermediate.growAggregate(assignAgg, internalSymbolNode, arg->getLoc()); assignAgg->setOperator(EOpComma); assignAgg->setType(internalAggregate->getType()); setArg(param, assignAgg); } } } } } // // Add any needed implicit expansion of calling arguments from what the shader listed to what's // internally needed for the AST (given the constraints downstream). // void HlslParseContext::expandArguments(const TSourceLoc& loc, const TFunction& function, TIntermTyped*& arguments) { TIntermAggregate* aggregate = arguments->getAsAggregate(); int functionParamNumberOffset = 0; // Replace a single argument with a single argument. const auto setArg = [&](int paramNum, TIntermTyped* arg) { if (function.getParamCount() + functionParamNumberOffset == 1) arguments = arg; else { if (aggregate == nullptr) arguments = arg; else aggregate->getSequence()[paramNum] = arg; } }; // Replace a single argument with a list of arguments const auto setArgList = [&](int paramNum, const TVector& args) { if (args.size() == 1) setArg(paramNum, args.front()); else if (args.size() > 1) { if (function.getParamCount() + functionParamNumberOffset == 1) { arguments = intermediate.makeAggregate(args.front()); std::for_each(args.begin() + 1, args.end(), [&](TIntermTyped* arg) { arguments = intermediate.growAggregate(arguments, arg); }); } else { auto it = aggregate->getSequence().erase(aggregate->getSequence().begin() + paramNum); aggregate->getSequence().insert(it, args.begin(), args.end()); } functionParamNumberOffset += (int)(args.size() - 1); } }; // Process each argument's conversion for (int param = 0; param < function.getParamCount(); ++param) { // At this early point there is a slight ambiguity between whether an aggregate 'arguments' // is the single argument itself or its children are the arguments. Only one argument // means take 'arguments' itself as the one argument. TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() : (aggregate ? aggregate->getSequence()[param + functionParamNumberOffset]->getAsTyped() : arguments->getAsTyped()); if (wasFlattened(arg) && shouldFlatten(*function[param].type, function[param].type->getQualifier().storage, true)) { // Need to pass the structure members instead of the structure. TVector memberArgs; for (int memb = 0; memb < (int)arg->getType().getStruct()->size(); ++memb) memberArgs.push_back(flattenAccess(arg, memb)); setArgList(param + functionParamNumberOffset, memberArgs); } } // TODO: if we need both hidden counter args (below) and struct expansion (above) // the two algorithms need to be merged: Each assumes the list starts out 1:1 between // parameters and arguments. // If any argument is a pass-by-reference struct buffer with an associated counter // buffer, we have to add another hidden parameter for that counter. if (aggregate) addStructBuffArguments(loc, aggregate); } // // Add any needed implicit output conversions for function-call arguments. This // can require a new tree topology, complicated further by whether the function // has a return value. // // Returns a node of a subtree that evaluates to the return value of the function. // TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermOperator& intermNode) { assert (intermNode.getAsAggregate() != nullptr || intermNode.getAsUnaryNode() != nullptr); const TSourceLoc& loc = intermNode.getLoc(); TIntermSequence argSequence; // temp sequence for unary node args if (intermNode.getAsUnaryNode()) argSequence.push_back(intermNode.getAsUnaryNode()->getOperand()); TIntermSequence& arguments = argSequence.empty() ? intermNode.getAsAggregate()->getSequence() : argSequence; const auto needsConversion = [&](int argNum) { return function[argNum].type->getQualifier().isParamOutput() && (*function[argNum].type != arguments[argNum]->getAsTyped()->getType() || shouldConvertLValue(arguments[argNum]) || wasFlattened(arguments[argNum]->getAsTyped())); }; // Will there be any output conversions? bool outputConversions = false; for (int i = 0; i < function.getParamCount(); ++i) { if (needsConversion(i)) { outputConversions = true; break; } } if (! outputConversions) return &intermNode; // Setup for the new tree, if needed: // // Output conversions need a different tree topology. // Out-qualified arguments need a temporary of the correct type, with the call // followed by an assignment of the temporary to the original argument: // void: function(arg, ...) -> ( function(tempArg, ...), arg = tempArg, ...) // ret = function(arg, ...) -> ret = (tempRet = function(tempArg, ...), arg = tempArg, ..., tempRet) // Where the "tempArg" type needs no conversion as an argument, but will convert on assignment. TIntermTyped* conversionTree = nullptr; TVariable* tempRet = nullptr; if (intermNode.getBasicType() != EbtVoid) { // do the "tempRet = function(...), " bit from above tempRet = makeInternalVariable("tempReturn", intermNode.getType()); TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, loc); conversionTree = intermediate.addAssign(EOpAssign, tempRetNode, &intermNode, loc); } else conversionTree = &intermNode; conversionTree = intermediate.makeAggregate(conversionTree); // Process each argument's conversion for (int i = 0; i < function.getParamCount(); ++i) { if (needsConversion(i)) { // Out-qualified arguments needing conversion need to use the topology setup above. // Do the " ...(tempArg, ...), arg = tempArg" bit from above. // Make a temporary for what the function expects the argument to look like. TVariable* tempArg = makeInternalVariable("tempArg", *function[i].type); tempArg->getWritableType().getQualifier().makeTemporary(); TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, loc); // This makes the deepest level, the member-wise copy TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode); tempAssign = handleLvalue(arguments[i]->getLoc(), "assign", tempAssign); conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc()); // replace the argument with another node for the same tempArg variable arguments[i] = intermediate.addSymbol(*tempArg, loc); } } // Finalize the tree topology (see bigger comment above). if (tempRet) { // do the "..., tempRet" bit from above TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, loc); conversionTree = intermediate.growAggregate(conversionTree, tempRetNode, loc); } conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), loc); return conversionTree; } // // Add any needed "hidden" counter buffer arguments for function calls. // // Modifies the 'aggregate' argument if needed. Otherwise, is no-op. // void HlslParseContext::addStructBuffArguments(const TSourceLoc& loc, TIntermAggregate*& aggregate) { // See if there are any SB types with counters. const bool hasStructBuffArg = std::any_of(aggregate->getSequence().begin(), aggregate->getSequence().end(), [this](const TIntermNode* node) { return (node && node->getAsTyped() != nullptr) && hasStructBuffCounter(node->getAsTyped()->getType()); }); // Nothing to do, if we didn't find one. if (! hasStructBuffArg) return; TIntermSequence argsWithCounterBuffers; for (int param = 0; param < int(aggregate->getSequence().size()); ++param) { argsWithCounterBuffers.push_back(aggregate->getSequence()[param]); if (hasStructBuffCounter(aggregate->getSequence()[param]->getAsTyped()->getType())) { const TIntermSymbol* blockSym = aggregate->getSequence()[param]->getAsSymbolNode(); if (blockSym != nullptr) { TType counterType; counterBufferType(loc, counterType); const TString counterBlockName(intermediate.addCounterBufferName(blockSym->getName())); TVariable* variable = makeInternalVariable(counterBlockName, counterType); // Mark this buffer's counter block as being in use structBufferCounter[counterBlockName] = true; TIntermSymbol* sym = intermediate.addSymbol(*variable, loc); argsWithCounterBuffers.push_back(sym); } } } // Swap with the temp list we've built up. aggregate->getSequence().swap(argsWithCounterBuffers); } // // Do additional checking of built-in function calls that is not caught // by normal semantic checks on argument type, extension tagging, etc. // // Assumes there has been a semantically correct match to a built-in function prototype. // void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCandidate, TIntermOperator& callNode) { // Set up convenience accessors to the argument(s). There is almost always // multiple arguments for the cases below, but when there might be one, // check the unaryArg first. const TIntermSequence* argp = nullptr; // confusing to use [] syntax on a pointer, so this is to help get a reference const TIntermTyped* unaryArg = nullptr; const TIntermTyped* arg0 = nullptr; if (callNode.getAsAggregate()) { argp = &callNode.getAsAggregate()->getSequence(); if (argp->size() > 0) arg0 = (*argp)[0]->getAsTyped(); } else { assert(callNode.getAsUnaryNode()); unaryArg = callNode.getAsUnaryNode()->getOperand(); arg0 = unaryArg; } const TIntermSequence& aggArgs = argp ? *argp : TIntermSequence(); // only valid when unaryArg is nullptr switch (callNode.getOp()) { case EOpTextureGather: case EOpTextureGatherOffset: case EOpTextureGatherOffsets: { // Figure out which variants are allowed by what extensions, // and what arguments must be constant for which situations. TString featureString = fnCandidate.getName() + "(...)"; const char* feature = featureString.c_str(); int compArg = -1; // track which argument, if any, is the constant component argument switch (callNode.getOp()) { case EOpTextureGather: // More than two arguments needs gpu_shader5, and rectangular or shadow needs gpu_shader5, // otherwise, need GL_ARB_texture_gather. if (fnCandidate.getParamCount() > 2 || fnCandidate[0].type->getSampler().dim == EsdRect || fnCandidate[0].type->getSampler().shadow) { if (! fnCandidate[0].type->getSampler().shadow) compArg = 2; } break; case EOpTextureGatherOffset: // GL_ARB_texture_gather is good enough for 2D non-shadow textures with no component argument if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; break; case EOpTextureGatherOffsets: if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; break; default: break; } if (compArg > 0 && compArg < fnCandidate.getParamCount()) { if (aggArgs[compArg]->getAsConstantUnion()) { int value = aggArgs[compArg]->getAsConstantUnion()->getConstArray()[0].getIConst(); if (value < 0 || value > 3) error(loc, "must be 0, 1, 2, or 3:", feature, "component argument"); } else error(loc, "must be a compile-time constant:", feature, "component argument"); } break; } case EOpTextureOffset: case EOpTextureFetchOffset: case EOpTextureProjOffset: case EOpTextureLodOffset: case EOpTextureProjLodOffset: case EOpTextureGradOffset: case EOpTextureProjGradOffset: { // Handle texture-offset limits checking // Pick which argument has to hold constant offsets int arg = -1; switch (callNode.getOp()) { case EOpTextureOffset: arg = 2; break; case EOpTextureFetchOffset: arg = (arg0->getType().getSampler().dim != EsdRect) ? 3 : 2; break; case EOpTextureProjOffset: arg = 2; break; case EOpTextureLodOffset: arg = 3; break; case EOpTextureProjLodOffset: arg = 3; break; case EOpTextureGradOffset: arg = 4; break; case EOpTextureProjGradOffset: arg = 4; break; default: assert(0); break; } if (arg > 0) { if (aggArgs[arg]->getAsConstantUnion() == nullptr) error(loc, "argument must be compile-time constant", "texel offset", ""); else { const TType& type = aggArgs[arg]->getAsTyped()->getType(); for (int c = 0; c < type.getVectorSize(); ++c) { int offset = aggArgs[arg]->getAsConstantUnion()->getConstArray()[c].getIConst(); if (offset > resources.maxProgramTexelOffset || offset < resources.minProgramTexelOffset) error(loc, "value is out of range:", "texel offset", "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]"); } } } break; } case EOpTextureQuerySamples: case EOpImageQuerySamples: break; case EOpImageAtomicAdd: case EOpImageAtomicMin: case EOpImageAtomicMax: case EOpImageAtomicAnd: case EOpImageAtomicOr: case EOpImageAtomicXor: case EOpImageAtomicExchange: case EOpImageAtomicCompSwap: break; case EOpInterpolateAtCentroid: case EOpInterpolateAtSample: case EOpInterpolateAtOffset: // TODO(greg-lunarg): Re-enable this check. It currently gives false errors for builtins // defined and passed as members of a struct. In this case the storage class is showing to be // Function. See glslang #2584 // Make sure the first argument is an interpolant, or an array element of an interpolant // if (arg0->getType().getQualifier().storage != EvqVaryingIn) { // It might still be an array element. // // We could check more, but the semantics of the first argument are already met; the // only way to turn an array into a float/vec* is array dereference and swizzle. // // ES and desktop 4.3 and earlier: swizzles may not be used // desktop 4.4 and later: swizzles may be used // const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true); // if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn) // error(loc, "first argument must be an interpolant, or interpolant-array element", // fnCandidate.getName().c_str(), ""); // } break; default: break; } } // // Handle seeing something in a grammar production that can be done by calling // a constructor. // // The constructor still must be "handled" by handleFunctionCall(), which will // then call handleConstructor(). // TFunction* HlslParseContext::makeConstructorCall(const TSourceLoc& loc, const TType& type) { TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpNull) { error(loc, "cannot construct this type", type.getBasicString(), ""); return nullptr; } TString empty(""); return new TFunction(&empty, type, op); } // // Handle seeing a "COLON semantic" at the end of a type declaration, // by updating the type according to the semantic. // void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, TBuiltInVariable builtIn, const TString& upperCase) { // Parse and return semantic number. If limit is 0, it will be ignored. Otherwise, if the parsed // semantic number is >= limit, errorMsg is issued and 0 is returned. // TODO: it would be nicer if limit and errorMsg had default parameters, but some compilers don't yet // accept those in lambda functions. const auto getSemanticNumber = [this, loc](const TString& semantic, unsigned int limit, const char* errorMsg) -> unsigned int { size_t pos = semantic.find_last_not_of("0123456789"); if (pos == std::string::npos) return 0u; unsigned int semanticNum = (unsigned int)atoi(semantic.c_str() + pos + 1); if (limit != 0 && semanticNum >= limit) { error(loc, errorMsg, semantic.c_str(), ""); return 0u; } return semanticNum; }; if (builtIn == EbvNone && hlslDX9Compatible()) { if (language == EShLangVertex) { if (qualifier.isParamOutput()) { if (upperCase == "POSITION") { builtIn = EbvPosition; } if (upperCase == "PSIZE") { builtIn = EbvPointSize; } } } else if (language == EShLangFragment) { if (qualifier.isParamInput() && upperCase == "VPOS") { builtIn = EbvFragCoord; } if (qualifier.isParamOutput()) { if (upperCase.compare(0, 5, "COLOR") == 0) { qualifier.layoutLocation = getSemanticNumber(upperCase, 0, nullptr); nextOutLocation = std::max(nextOutLocation, qualifier.layoutLocation + 1u); } if (upperCase == "DEPTH") { builtIn = EbvFragDepth; } } } } switch(builtIn) { case EbvNone: // Get location numbers from fragment outputs, instead of // auto-assigning them. if (language == EShLangFragment && upperCase.compare(0, 9, "SV_TARGET") == 0) { qualifier.layoutLocation = getSemanticNumber(upperCase, 0, nullptr); nextOutLocation = std::max(nextOutLocation, qualifier.layoutLocation + 1u); } else if (upperCase.compare(0, 15, "SV_CLIPDISTANCE") == 0) { builtIn = EbvClipDistance; qualifier.layoutLocation = getSemanticNumber(upperCase, maxClipCullRegs, "invalid clip semantic"); } else if (upperCase.compare(0, 15, "SV_CULLDISTANCE") == 0) { builtIn = EbvCullDistance; qualifier.layoutLocation = getSemanticNumber(upperCase, maxClipCullRegs, "invalid cull semantic"); } break; case EbvPosition: // adjust for stage in/out if (language == EShLangFragment) builtIn = EbvFragCoord; break; case EbvFragStencilRef: error(loc, "unimplemented; need ARB_shader_stencil_export", "SV_STENCILREF", ""); break; case EbvTessLevelInner: case EbvTessLevelOuter: qualifier.patch = true; break; default: break; } if (qualifier.builtIn == EbvNone) qualifier.builtIn = builtIn; qualifier.semanticName = intermediate.addSemanticName(upperCase); } // // Handle seeing something like "PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN" // // 'location' has the "c[Subcomponent]" part. // 'component' points to the "component" part, or nullptr if not present. // void HlslParseContext::handlePackOffset(const TSourceLoc& loc, TQualifier& qualifier, const glslang::TString& location, const glslang::TString* component) { if (location.size() == 0 || location[0] != 'c') { error(loc, "expected 'c'", "packoffset", ""); return; } if (location.size() == 1) return; if (! isdigit(location[1])) { error(loc, "expected number after 'c'", "packoffset", ""); return; } qualifier.layoutOffset = 16 * atoi(location.substr(1, location.size()).c_str()); if (component != nullptr) { int componentOffset = 0; switch ((*component)[0]) { case 'x': componentOffset = 0; break; case 'y': componentOffset = 4; break; case 'z': componentOffset = 8; break; case 'w': componentOffset = 12; break; default: componentOffset = -1; break; } if (componentOffset < 0 || component->size() > 1) { error(loc, "expected {x, y, z, w} for component", "packoffset", ""); return; } qualifier.layoutOffset += componentOffset; } } // // Handle seeing something like "REGISTER LEFT_PAREN [shader_profile,] Type# RIGHT_PAREN" // // 'profile' points to the shader_profile part, or nullptr if not present. // 'desc' is the type# part. // void HlslParseContext::handleRegister(const TSourceLoc& loc, TQualifier& qualifier, const glslang::TString* profile, const glslang::TString& desc, int subComponent, const glslang::TString* spaceDesc) { if (profile != nullptr) warn(loc, "ignoring shader_profile", "register", ""); if (desc.size() < 1) { error(loc, "expected register type", "register", ""); return; } int regNumber = 0; if (desc.size() > 1) { if (isdigit(desc[1])) regNumber = atoi(desc.substr(1, desc.size()).c_str()); else { error(loc, "expected register number after register type", "register", ""); return; } } // more information about register types see // https://docs.microsoft.com/en-us/windows/desktop/direct3dhlsl/dx-graphics-hlsl-variable-register const std::vector& resourceInfo = intermediate.getResourceSetBinding(); switch (std::tolower(desc[0])) { case 'c': // c register is the register slot in the global const buffer // each slot is a vector of 4 32 bit components qualifier.layoutOffset = regNumber * 4 * 4; break; // const buffer register slot case 'b': // textrues and structured buffers case 't': // samplers case 's': // uav resources case 'u': // if nothing else has set the binding, do so now // (other mechanisms override this one) if (!qualifier.hasBinding()) qualifier.layoutBinding = regNumber + subComponent; // This handles per-register layout sets numbers. For the global mode which sets // every symbol to the same value, see setLinkageLayoutSets(). if ((resourceInfo.size() % 3) == 0) { // Apply per-symbol resource set and binding. for (auto it = resourceInfo.cbegin(); it != resourceInfo.cend(); it = it + 3) { if (strcmp(desc.c_str(), it[0].c_str()) == 0) { qualifier.layoutSet = atoi(it[1].c_str()); qualifier.layoutBinding = atoi(it[2].c_str()) + subComponent; break; } } } break; default: warn(loc, "ignoring unrecognized register type", "register", "%c", desc[0]); break; } // space unsigned int setNumber; const auto crackSpace = [&]() -> bool { const int spaceLen = 5; if (spaceDesc->size() < spaceLen + 1) return false; if (spaceDesc->compare(0, spaceLen, "space") != 0) return false; if (! isdigit((*spaceDesc)[spaceLen])) return false; setNumber = atoi(spaceDesc->substr(spaceLen, spaceDesc->size()).c_str()); return true; }; // if nothing else has set the set, do so now // (other mechanisms override this one) if (spaceDesc && !qualifier.hasSet()) { if (! crackSpace()) { error(loc, "expected spaceN", "register", ""); return; } qualifier.layoutSet = setNumber; } } // Convert to a scalar boolean, or if not allowed by HLSL semantics, // report an error and return nullptr. TIntermTyped* HlslParseContext::convertConditionalExpression(const TSourceLoc& loc, TIntermTyped* condition, bool mustBeScalar) { if (mustBeScalar && !condition->getType().isScalarOrVec1()) { error(loc, "requires a scalar", "conditional expression", ""); return nullptr; } return intermediate.addConversion(EOpConstructBool, TType(EbtBool, EvqTemporary, condition->getVectorSize()), condition); } // // Same error message for all places assignments don't work. // void HlslParseContext::assignError(const TSourceLoc& loc, const char* op, TString left, TString right) { error(loc, "", op, "cannot convert from '%s' to '%s'", right.c_str(), left.c_str()); } // // Same error message for all places unary operations don't work. // void HlslParseContext::unaryOpError(const TSourceLoc& loc, const char* op, TString operand) { error(loc, " wrong operand type", op, "no operation '%s' exists that takes an operand of type %s (or there is no acceptable conversion)", op, operand.c_str()); } // // Same error message for all binary operations don't work. // void HlslParseContext::binaryOpError(const TSourceLoc& loc, const char* op, TString left, TString right) { error(loc, " wrong operand types:", op, "no operation '%s' exists that takes a left-hand operand of type '%s' and " "a right operand of type '%s' (or there is no acceptable conversion)", op, left.c_str(), right.c_str()); } // // A basic type of EbtVoid is a key that the name string was seen in the source, but // it was not found as a variable in the symbol table. If so, give the error // message and insert a dummy variable in the symbol table to prevent future errors. // void HlslParseContext::variableCheck(TIntermTyped*& nodePtr) { TIntermSymbol* symbol = nodePtr->getAsSymbolNode(); if (! symbol) return; if (symbol->getType().getBasicType() == EbtVoid) { error(symbol->getLoc(), "undeclared identifier", symbol->getName().c_str(), ""); // Add to symbol table to prevent future error messages on the same name if (symbol->getName().size() > 0) { TVariable* fakeVariable = new TVariable(&symbol->getName(), TType(EbtFloat)); symbolTable.insert(*fakeVariable); // substitute a symbol node for this new variable nodePtr = intermediate.addSymbol(*fakeVariable, symbol->getLoc()); } } } // // Both test, and if necessary spit out an error, to see if the node is really // a constant. // void HlslParseContext::constantValueCheck(TIntermTyped* node, const char* token) { if (node->getQualifier().storage != EvqConst) error(node->getLoc(), "constant expression required", token, ""); } // // Both test, and if necessary spit out an error, to see if the node is really // an integer. // void HlslParseContext::integerCheck(const TIntermTyped* node, const char* token) { if ((node->getBasicType() == EbtInt || node->getBasicType() == EbtUint) && node->isScalar()) return; error(node->getLoc(), "scalar integer expression required", token, ""); } // // Both test, and if necessary spit out an error, to see if we are currently // globally scoped. // void HlslParseContext::globalCheck(const TSourceLoc& loc, const char* token) { if (! symbolTable.atGlobalLevel()) error(loc, "not allowed in nested scope", token, ""); } bool HlslParseContext::builtInName(const TString& /*identifier*/) { return false; } // // Make sure there is enough data and not too many arguments provided to the // constructor to build something of the type of the constructor. Also returns // the type of the constructor. // // Returns true if there was an error in construction. // bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, TFunction& function, TOperator op, TType& type) { type.shallowCopy(function.getType()); bool constructingMatrix = false; switch (op) { case EOpConstructTextureSampler: error(loc, "unhandled texture constructor", "constructor", ""); return true; case EOpConstructMat2x2: case EOpConstructMat2x3: case EOpConstructMat2x4: case EOpConstructMat3x2: case EOpConstructMat3x3: case EOpConstructMat3x4: case EOpConstructMat4x2: case EOpConstructMat4x3: case EOpConstructMat4x4: case EOpConstructDMat2x2: case EOpConstructDMat2x3: case EOpConstructDMat2x4: case EOpConstructDMat3x2: case EOpConstructDMat3x3: case EOpConstructDMat3x4: case EOpConstructDMat4x2: case EOpConstructDMat4x3: case EOpConstructDMat4x4: case EOpConstructIMat2x2: case EOpConstructIMat2x3: case EOpConstructIMat2x4: case EOpConstructIMat3x2: case EOpConstructIMat3x3: case EOpConstructIMat3x4: case EOpConstructIMat4x2: case EOpConstructIMat4x3: case EOpConstructIMat4x4: case EOpConstructUMat2x2: case EOpConstructUMat2x3: case EOpConstructUMat2x4: case EOpConstructUMat3x2: case EOpConstructUMat3x3: case EOpConstructUMat3x4: case EOpConstructUMat4x2: case EOpConstructUMat4x3: case EOpConstructUMat4x4: case EOpConstructBMat2x2: case EOpConstructBMat2x3: case EOpConstructBMat2x4: case EOpConstructBMat3x2: case EOpConstructBMat3x3: case EOpConstructBMat3x4: case EOpConstructBMat4x2: case EOpConstructBMat4x3: case EOpConstructBMat4x4: constructingMatrix = true; break; default: break; } // // Walk the arguments for first-pass checks and collection of information. // int size = 0; bool constType = true; bool full = false; bool overFull = false; bool matrixInMatrix = false; bool arrayArg = false; for (int arg = 0; arg < function.getParamCount(); ++arg) { 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", ""); return true; } arrayArg = true; } if (constructingMatrix && function[arg].type->isMatrix()) matrixInMatrix = true; // 'full' will go to true when enough args have been seen. If we loop // again, there is an extra argument. if (full) { // For vectors and matrices, it's okay to have too many components // available, but not okay to have unused arguments. overFull = true; } size += function[arg].type->computeNumComponents(); if (op != EOpConstructStruct && ! type.isArray() && size >= type.computeNumComponents()) full = true; if (function[arg].type->getQualifier().storage != EvqConst) constType = false; } if (constType) type.getQualifier().storage = EvqConst; if (type.isArray()) { if (function.getParamCount() == 0) { error(loc, "array constructor must have at least one argument", "constructor", ""); return true; } if (type.isUnsizedArray()) { // auto adapt the constructor type to the number of arguments type.changeOuterArraySize(function.getParamCount()); } else if (type.getOuterArraySize() != function.getParamCount() && type.computeNumComponents() > size) { error(loc, "array constructor needs one argument per array element", "constructor", ""); return true; } if (type.isArrayOfArrays()) { // Types have to match, but we're still making the type. // Finish making the type, and the comparison is done later // when checking for conversion. TArraySizes& arraySizes = *type.getArraySizes(); // 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", ""); return true; } if (arraySizes.isInnerUnsized()) { // "Arrays of arrays ..., and the size for any dimension is optional" // That means we need to adopt (from the first argument) the other array sizes into the type. for (int d = 1; d < arraySizes.getNumDims(); ++d) { if (arraySizes.getDimSize(d) == UnsizedArraySize) { arraySizes.setDimSize(d, function[0].type->getArraySizes()->getDimSize(d - 1)); } } } } } // Some array -> array type casts are okay if (arrayArg && function.getParamCount() == 1 && op != EOpConstructStruct && type.isArray() && !type.isArrayOfArrays() && !function[0].type->isArrayOfArrays() && type.getVectorSize() >= 1 && function[0].type->getVectorSize() >= 1) return false; if (arrayArg && op != EOpConstructStruct && ! type.isArrayOfArrays()) { error(loc, "constructing non-array constituent from array argument", "constructor", ""); return true; } if (matrixInMatrix && ! type.isArray()) { return false; } if (overFull) { error(loc, "too many arguments", "constructor", ""); return true; } if (op == EOpConstructStruct && ! type.isArray()) { if (isScalarConstructor(node)) return false; // Self-type construction: e.g, we can construct a struct from a single identically typed object. if (function.getParamCount() == 1 && type == *function[0].type) return false; if ((int)type.getStruct()->size() != function.getParamCount()) { error(loc, "Number of constructor parameters does not match the number of structure fields", "constructor", ""); return true; } } if ((op != EOpConstructStruct && size != 1 && size < type.computeNumComponents()) || (op == EOpConstructStruct && size < type.computeNumComponents())) { error(loc, "not enough data provided for construction", "constructor", ""); return true; } return false; } // See if 'node', in the context of constructing aggregates, is a scalar argument // to a constructor. // bool HlslParseContext::isScalarConstructor(const TIntermNode* node) { // Obviously, it must be a scalar, but an aggregate node might not be fully // completed yet: holding a sequence of initializers under an aggregate // would not yet be typed, so don't check it's type. This corresponds to // the aggregate operator also not being set yet. (An aggregate operation // that legitimately yields a scalar will have a getOp() of that operator, // not EOpNull.) return node->getAsTyped() != nullptr && node->getAsTyped()->isScalar() && (node->getAsAggregate() == nullptr || node->getAsAggregate()->getOp() != EOpNull); } // Checks to see if a void variable has been declared and raise an error message for such a case // // returns true in case of an error // bool HlslParseContext::voidErrorCheck(const TSourceLoc& loc, const TString& identifier, const TBasicType basicType) { if (basicType == EbtVoid) { error(loc, "illegal use of type 'void'", identifier.c_str(), ""); return true; } return false; } // // Fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level. // void HlslParseContext::globalQualifierFix(const TSourceLoc&, TQualifier& qualifier) { // move from parameter/unknown qualifiers to pipeline in/out qualifiers switch (qualifier.storage) { case EvqIn: qualifier.storage = EvqVaryingIn; break; case EvqOut: qualifier.storage = EvqVaryingOut; break; default: break; } } // // Merge characteristics of the 'src' qualifier into the 'dst'. // void HlslParseContext::mergeQualifiers(TQualifier& dst, const TQualifier& src) { // Storage qualification if (dst.storage == EvqTemporary || dst.storage == EvqGlobal) dst.storage = src.storage; else if ((dst.storage == EvqIn && src.storage == EvqOut) || (dst.storage == EvqOut && src.storage == EvqIn)) dst.storage = EvqInOut; else if ((dst.storage == EvqIn && src.storage == EvqConst) || (dst.storage == EvqConst && src.storage == EvqIn)) dst.storage = EvqConstReadOnly; // Layout qualifiers mergeObjectLayoutQualifiers(dst, src, false); // individual qualifiers #define MERGE_SINGLETON(field) dst.field |= src.field; MERGE_SINGLETON(invariant); MERGE_SINGLETON(noContraction); MERGE_SINGLETON(centroid); MERGE_SINGLETON(smooth); MERGE_SINGLETON(flat); MERGE_SINGLETON(nopersp); MERGE_SINGLETON(patch); MERGE_SINGLETON(sample); MERGE_SINGLETON(coherent); MERGE_SINGLETON(volatil); MERGE_SINGLETON(restrict); MERGE_SINGLETON(readonly); MERGE_SINGLETON(writeonly); MERGE_SINGLETON(specConstant); MERGE_SINGLETON(nonUniform); } // used to flatten the sampler type space into a single dimension // correlates with the declaration of defaultSamplerPrecision[] int HlslParseContext::computeSamplerTypeIndex(TSampler& sampler) { int arrayIndex = sampler.arrayed ? 1 : 0; int shadowIndex = sampler.shadow ? 1 : 0; int externalIndex = sampler.external ? 1 : 0; return EsdNumDims * (EbtNumTypes * (2 * (2 * arrayIndex + shadowIndex) + externalIndex) + sampler.type) + sampler.dim; } // // Do size checking for an array type's size. // void HlslParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TArraySize& sizePair) { bool isConst = false; sizePair.size = 1; sizePair.node = nullptr; TIntermConstantUnion* constant = expr->getAsConstantUnion(); if (constant) { // handle true (non-specialization) constant sizePair.size = constant->getConstArray()[0].getIConst(); isConst = true; } else { // see if it's a specialization constant instead if (expr->getQualifier().isSpecConstant()) { isConst = true; sizePair.node = expr; TIntermSymbol* symbol = expr->getAsSymbolNode(); if (symbol && symbol->getConstArray().size() > 0) sizePair.size = symbol->getConstArray()[0].getIConst(); } } if (! isConst || (expr->getBasicType() != EbtInt && expr->getBasicType() != EbtUint)) { error(loc, "array size must be a constant integer expression", "", ""); return; } if (sizePair.size <= 0) { error(loc, "array size must be a positive integer", "", ""); return; } } // // Require array to be completely sized // void HlslParseContext::arraySizeRequiredCheck(const TSourceLoc& loc, const TArraySizes& arraySizes) { if (arraySizes.hasUnsized()) error(loc, "array size required", "", ""); } void HlslParseContext::structArrayCheck(const TSourceLoc& /*loc*/, const TType& type) { const TTypeList& structure = *type.getStruct(); for (int m = 0; m < (int)structure.size(); ++m) { const TType& member = *structure[m].type; if (member.isArray()) arraySizeRequiredCheck(structure[m].loc, *member.getArraySizes()); } } // // Do all the semantic checking for declaring or redeclaring an array, with and // without a size, and make the right changes to the symbol table. // void HlslParseContext::declareArray(const TSourceLoc& loc, const TString& identifier, const TType& type, TSymbol*& symbol, bool track) { if (symbol == nullptr) { bool currentScope; symbol = symbolTable.find(identifier, nullptr, ¤tScope); if (symbol && builtInName(identifier) && ! symbolTable.atBuiltInLevel()) { // bad shader (errors already reported) trying to redeclare a built-in name as an array return; } if (symbol == nullptr || ! currentScope) { // // Successfully process a new definition. // (Redeclarations have to take place at the same scope; otherwise they are hiding declarations) // symbol = new TVariable(&identifier, type); symbolTable.insert(*symbol); if (track && symbolTable.atGlobalLevel()) trackLinkage(*symbol); return; } if (symbol->getAsAnonMember()) { error(loc, "cannot redeclare a user-block member array", identifier.c_str(), ""); symbol = nullptr; return; } } // // Process a redeclaration. // if (symbol == nullptr) { error(loc, "array variable name expected", identifier.c_str(), ""); return; } // redeclareBuiltinVariable() should have already done the copyUp() TType& existingType = symbol->getWritableType(); if (existingType.isSizedArray()) { // be more lenient for input arrays to geometry shaders and tessellation control outputs, // where the redeclaration is the same size return; } existingType.updateArraySizes(type); } // // Enforce non-initializer type/qualifier rules. // void HlslParseContext::fixConstInit(const TSourceLoc& loc, const TString& identifier, TType& type, TIntermTyped*& initializer) { // // Make the qualifier make sense, given that there is an initializer. // if (initializer == nullptr) { if (type.getQualifier().storage == EvqConst || type.getQualifier().storage == EvqConstReadOnly) { initializer = intermediate.makeAggregate(loc); warn(loc, "variable with qualifier 'const' not initialized; zero initializing", identifier.c_str(), ""); } } } // // See if the identifier is a built-in symbol that can be redeclared, and if so, // copy the symbol table's read-only built-in variable to the current // global level, where it can be modified based on the passed in type. // // Returns nullptr if no redeclaration took place; meaning a normal declaration still // needs to occur for it, not necessarily an error. // // Returns a redeclared and type-modified variable if a redeclared occurred. // TSymbol* HlslParseContext::redeclareBuiltinVariable(const TSourceLoc& /*loc*/, const TString& identifier, const TQualifier& /*qualifier*/, const TShaderQualifiers& /*publicType*/) { if (! builtInName(identifier) || symbolTable.atBuiltInLevel() || ! symbolTable.atGlobalLevel()) return nullptr; return nullptr; } // // Generate index to the array element in a structure buffer (SSBO) // TIntermTyped* HlslParseContext::indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const { // Bail out if not a struct buffer if (buffer == nullptr || ! isStructBufferType(buffer->getType())) return nullptr; // Runtime sized array is always the last element. const TTypeList* bufferStruct = buffer->getType().getStruct(); TIntermTyped* arrayPosition = intermediate.addConstantUnion(unsigned(bufferStruct->size()-1), loc); TIntermTyped* argArray = intermediate.addIndex(EOpIndexDirectStruct, buffer, arrayPosition, loc); argArray->setType(*(*bufferStruct)[bufferStruct->size()-1].type); return argArray; } // // IFF type is a structuredbuffer/byteaddressbuffer type, return the content // (template) type. E.g, StructuredBuffer -> MyType. Else return nullptr. // TType* HlslParseContext::getStructBufferContentType(const TType& type) const { if (type.getBasicType() != EbtBlock || type.getQualifier().storage != EvqBuffer) return nullptr; const int memberCount = (int)type.getStruct()->size(); assert(memberCount > 0); TType* contentType = (*type.getStruct())[memberCount-1].type; return contentType->isUnsizedArray() ? contentType : nullptr; } // // If an existing struct buffer has a sharable type, then share it. // void HlslParseContext::shareStructBufferType(TType& type) { // PackOffset must be equivalent to share types on a per-member basis. // Note: cannot use auto type due to recursion. Thus, this is a std::function. const std::function compareQualifiers = [&](TType& lhs, TType& rhs) -> bool { if (lhs.getQualifier().layoutOffset != rhs.getQualifier().layoutOffset) return false; 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; for (int i = 0; i < int(lhs.getStruct()->size()); ++i) if (!compareQualifiers(*(*lhs.getStruct())[i].type, *(*rhs.getStruct())[i].type)) return false; } return true; }; // We need to compare certain qualifiers in addition to the type. const auto typeEqual = [compareQualifiers](TType& lhs, TType& rhs) -> bool { if (lhs.getQualifier().readonly != rhs.getQualifier().readonly) return false; // If both are structures, recursively look for packOffset equality // as well as type equality. return compareQualifiers(lhs, rhs) && lhs == rhs; }; // This is an exhaustive O(N) search, but real world shaders have // only a small number of these. for (int idx = 0; idx < int(structBufferTypes.size()); ++idx) { // If the deep structure matches, modulo qualifiers, use it if (typeEqual(*structBufferTypes[idx], type)) { type.shallowCopy(*structBufferTypes[idx]); return; } } // Otherwise, remember it: TType* typeCopy = new TType; typeCopy->shallowCopy(type); structBufferTypes.push_back(typeCopy); } void HlslParseContext::paramFix(TType& type) { switch (type.getQualifier().storage) { case EvqConst: type.getQualifier().storage = EvqConstReadOnly; break; case EvqGlobal: case EvqTemporary: type.getQualifier().storage = EvqIn; break; case EvqBuffer: { // SSBO parameter. These do not go through the declareBlock path since they are fn parameters. correctUniform(type.getQualifier()); TQualifier bufferQualifier = globalBufferDefaults; mergeObjectLayoutQualifiers(bufferQualifier, type.getQualifier(), true); bufferQualifier.storage = type.getQualifier().storage; bufferQualifier.readonly = type.getQualifier().readonly; bufferQualifier.coherent = type.getQualifier().coherent; bufferQualifier.declaredBuiltIn = type.getQualifier().declaredBuiltIn; type.getQualifier() = bufferQualifier; break; } default: break; } } void HlslParseContext::specializationCheck(const TSourceLoc& loc, const TType& type, const char* op) { if (type.containsSpecializationSize()) error(loc, "can't use with types containing arrays sized with a specialization constant", op, ""); } // // Layout qualifier stuff. // // Put the id's layout qualification into the public type, for qualifiers not having a number set. // This is before we know any type information for error checking. void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qualifier, TString& id) { std::transform(id.begin(), id.end(), id.begin(), ::tolower); if (id == TQualifier::getLayoutMatrixString(ElmColumnMajor)) { qualifier.layoutMatrix = ElmRowMajor; return; } if (id == TQualifier::getLayoutMatrixString(ElmRowMajor)) { qualifier.layoutMatrix = ElmColumnMajor; return; } if (id == "push_constant") { requireVulkan(loc, "push_constant"); qualifier.layoutPushConstant = true; return; } if (language == EShLangGeometry || language == EShLangTessEvaluation) { if (id == TQualifier::getGeometryString(ElgTriangles)) { // publicType.shaderQualifiers.geometry = ElgTriangles; warn(loc, "ignored", id.c_str(), ""); return; } if (language == EShLangGeometry) { if (id == TQualifier::getGeometryString(ElgPoints)) { // publicType.shaderQualifiers.geometry = ElgPoints; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getGeometryString(ElgLineStrip)) { // publicType.shaderQualifiers.geometry = ElgLineStrip; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getGeometryString(ElgLines)) { // publicType.shaderQualifiers.geometry = ElgLines; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getGeometryString(ElgLinesAdjacency)) { // publicType.shaderQualifiers.geometry = ElgLinesAdjacency; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getGeometryString(ElgTrianglesAdjacency)) { // publicType.shaderQualifiers.geometry = ElgTrianglesAdjacency; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getGeometryString(ElgTriangleStrip)) { // publicType.shaderQualifiers.geometry = ElgTriangleStrip; warn(loc, "ignored", id.c_str(), ""); return; } } else { assert(language == EShLangTessEvaluation); // input primitive if (id == TQualifier::getGeometryString(ElgTriangles)) { // publicType.shaderQualifiers.geometry = ElgTriangles; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getGeometryString(ElgQuads)) { // publicType.shaderQualifiers.geometry = ElgQuads; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getGeometryString(ElgIsolines)) { // publicType.shaderQualifiers.geometry = ElgIsolines; warn(loc, "ignored", id.c_str(), ""); return; } // vertex spacing if (id == TQualifier::getVertexSpacingString(EvsEqual)) { // publicType.shaderQualifiers.spacing = EvsEqual; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getVertexSpacingString(EvsFractionalEven)) { // publicType.shaderQualifiers.spacing = EvsFractionalEven; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getVertexSpacingString(EvsFractionalOdd)) { // publicType.shaderQualifiers.spacing = EvsFractionalOdd; warn(loc, "ignored", id.c_str(), ""); return; } // triangle order if (id == TQualifier::getVertexOrderString(EvoCw)) { // publicType.shaderQualifiers.order = EvoCw; warn(loc, "ignored", id.c_str(), ""); return; } if (id == TQualifier::getVertexOrderString(EvoCcw)) { // publicType.shaderQualifiers.order = EvoCcw; warn(loc, "ignored", id.c_str(), ""); return; } // point mode if (id == "point_mode") { // publicType.shaderQualifiers.pointMode = true; warn(loc, "ignored", id.c_str(), ""); return; } } } if (language == EShLangFragment) { if (id == "origin_upper_left") { // publicType.shaderQualifiers.originUpperLeft = true; warn(loc, "ignored", id.c_str(), ""); return; } if (id == "pixel_center_integer") { // publicType.shaderQualifiers.pixelCenterInteger = true; warn(loc, "ignored", id.c_str(), ""); return; } if (id == "early_fragment_tests") { // publicType.shaderQualifiers.earlyFragmentTests = true; warn(loc, "ignored", id.c_str(), ""); return; } for (TLayoutDepth depth = (TLayoutDepth)(EldNone + 1); depth < EldCount; depth = (TLayoutDepth)(depth + 1)) { if (id == TQualifier::getLayoutDepthString(depth)) { // publicType.shaderQualifiers.layoutDepth = depth; warn(loc, "ignored", id.c_str(), ""); return; } } if (id.compare(0, 13, "blend_support") == 0) { bool found = false; for (TBlendEquationShift be = (TBlendEquationShift)0; be < EBlendCount; be = (TBlendEquationShift)(be + 1)) { if (id == TQualifier::getBlendEquationString(be)) { requireExtensions(loc, 1, &E_GL_KHR_blend_equation_advanced, "blend equation"); intermediate.addBlendEquation(be); // publicType.shaderQualifiers.blendEquation = true; warn(loc, "ignored", id.c_str(), ""); found = true; break; } } if (! found) error(loc, "unknown blend equation", "blend_support", ""); return; } } error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), ""); } // Put the id's layout qualifier value into the public type, for qualifiers having a number set. // This is before we know any type information for error checking. void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qualifier, TString& id, const TIntermTyped* node) { const char* feature = "layout-id value"; // const char* nonLiteralFeature = "non-literal layout-id value"; integerCheck(node, feature); const TIntermConstantUnion* constUnion = node->getAsConstantUnion(); int value = 0; if (constUnion) { value = constUnion->getConstArray()[0].getIConst(); } std::transform(id.begin(), id.end(), id.begin(), ::tolower); if (id == "offset") { qualifier.layoutOffset = value; return; } else if (id == "align") { // "The specified alignment must be a power of 2, or a compile-time error results." if (! IsPow2(value)) error(loc, "must be a power of 2", "align", ""); else qualifier.layoutAlign = value; return; } else if (id == "location") { if ((unsigned int)value >= TQualifier::layoutLocationEnd) error(loc, "location is too large", id.c_str(), ""); else qualifier.layoutLocation = value; return; } else if (id == "set") { if ((unsigned int)value >= TQualifier::layoutSetEnd) error(loc, "set is too large", id.c_str(), ""); else qualifier.layoutSet = value; return; } else if (id == "binding") { if ((unsigned int)value >= TQualifier::layoutBindingEnd) error(loc, "binding is too large", id.c_str(), ""); else qualifier.layoutBinding = value; return; } else if (id == "component") { if ((unsigned)value >= TQualifier::layoutComponentEnd) error(loc, "component is too large", id.c_str(), ""); else qualifier.layoutComponent = value; return; } else if (id.compare(0, 4, "xfb_") == 0) { // "Any shader making any static use (after preprocessing) of any of these // *xfb_* qualifiers will cause the shader to be in a transform feedback // capturing mode and hence responsible for describing the transform feedback // setup." intermediate.setXfbMode(); if (id == "xfb_buffer") { // "It is a compile-time error to specify an *xfb_buffer* that is greater than // the implementation-dependent constant gl_MaxTransformFeedbackBuffers." if (value >= resources.maxTransformFeedbackBuffers) error(loc, "buffer is too large:", id.c_str(), "gl_MaxTransformFeedbackBuffers is %d", resources.maxTransformFeedbackBuffers); if (value >= (int)TQualifier::layoutXfbBufferEnd) error(loc, "buffer is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbBufferEnd - 1); else qualifier.layoutXfbBuffer = value; return; } else if (id == "xfb_offset") { if (value >= (int)TQualifier::layoutXfbOffsetEnd) error(loc, "offset is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbOffsetEnd - 1); else qualifier.layoutXfbOffset = value; return; } else if (id == "xfb_stride") { // "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the // implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents." if (value > 4 * resources.maxTransformFeedbackInterleavedComponents) error(loc, "1/4 stride is too large:", id.c_str(), "gl_MaxTransformFeedbackInterleavedComponents is %d", resources.maxTransformFeedbackInterleavedComponents); else if (value >= (int)TQualifier::layoutXfbStrideEnd) error(loc, "stride is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbStrideEnd - 1); if (value < (int)TQualifier::layoutXfbStrideEnd) qualifier.layoutXfbStride = value; return; } } if (id == "input_attachment_index") { requireVulkan(loc, "input_attachment_index"); if (value >= (int)TQualifier::layoutAttachmentEnd) error(loc, "attachment index is too large", id.c_str(), ""); else qualifier.layoutAttachment = value; return; } if (id == "constant_id") { setSpecConstantId(loc, qualifier, value); return; } switch (language) { case EShLangVertex: break; case EShLangTessControl: if (id == "vertices") { if (value == 0) error(loc, "must be greater than 0", "vertices", ""); else // publicType.shaderQualifiers.vertices = value; warn(loc, "ignored", id.c_str(), ""); return; } break; case EShLangTessEvaluation: break; case EShLangGeometry: if (id == "invocations") { if (value == 0) error(loc, "must be at least 1", "invocations", ""); else // publicType.shaderQualifiers.invocations = value; warn(loc, "ignored", id.c_str(), ""); return; } if (id == "max_vertices") { // publicType.shaderQualifiers.vertices = value; warn(loc, "ignored", id.c_str(), ""); if (value > resources.maxGeometryOutputVertices) error(loc, "too large, must be less than gl_MaxGeometryOutputVertices", "max_vertices", ""); return; } if (id == "stream") { qualifier.layoutStream = value; return; } break; case EShLangFragment: if (id == "index") { qualifier.layoutIndex = value; return; } break; case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { if (id == "local_size_x") { // publicType.shaderQualifiers.localSize[0] = value; warn(loc, "ignored", id.c_str(), ""); return; } if (id == "local_size_y") { // publicType.shaderQualifiers.localSize[1] = value; warn(loc, "ignored", id.c_str(), ""); return; } if (id == "local_size_z") { // publicType.shaderQualifiers.localSize[2] = value; warn(loc, "ignored", id.c_str(), ""); return; } if (spvVersion.spv != 0) { if (id == "local_size_x_id") { // publicType.shaderQualifiers.localSizeSpecId[0] = value; warn(loc, "ignored", id.c_str(), ""); return; } if (id == "local_size_y_id") { // publicType.shaderQualifiers.localSizeSpecId[1] = value; warn(loc, "ignored", id.c_str(), ""); return; } if (id == "local_size_z_id") { // publicType.shaderQualifiers.localSizeSpecId[2] = value; warn(loc, "ignored", id.c_str(), ""); return; } } } break; default: break; } error(loc, "there is no such layout identifier for this stage taking an assigned value", id.c_str(), ""); } void HlslParseContext::setSpecConstantId(const TSourceLoc& loc, TQualifier& qualifier, int value) { if (value >= (int)TQualifier::layoutSpecConstantIdEnd) { error(loc, "specialization-constant id is too large", "constant_id", ""); } else { qualifier.layoutSpecConstantId = value; qualifier.specConstant = true; if (! intermediate.addUsedConstantId(value)) error(loc, "specialization-constant id already used", "constant_id", ""); } return; } // Merge any layout qualifier information from src into dst, leaving everything else in dst alone // // "More than one layout qualifier may appear in a single declaration. // Additionally, the same layout-qualifier-name can occur multiple times // within a layout qualifier or across multiple layout qualifiers in the // same declaration. When the same layout-qualifier-name occurs // multiple times, in a single declaration, the last occurrence overrides // the former occurrence(s). Further, if such a layout-qualifier-name // will effect subsequent declarations or other observable behavior, it // is only the last occurrence that will have any effect, behaving as if // the earlier occurrence(s) within the declaration are not present. // This is also true for overriding layout-qualifier-names, where one // overrides the other (e.g., row_major vs. column_major); only the last // occurrence has any effect." // void HlslParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifier& src, bool inheritOnly) { if (src.hasMatrix()) dst.layoutMatrix = src.layoutMatrix; if (src.hasPacking()) dst.layoutPacking = src.layoutPacking; if (src.hasStream()) dst.layoutStream = src.layoutStream; if (src.hasFormat()) dst.layoutFormat = src.layoutFormat; if (src.hasXfbBuffer()) dst.layoutXfbBuffer = src.layoutXfbBuffer; if (src.hasAlign()) dst.layoutAlign = src.layoutAlign; if (! inheritOnly) { if (src.hasLocation()) dst.layoutLocation = src.layoutLocation; if (src.hasComponent()) dst.layoutComponent = src.layoutComponent; if (src.hasIndex()) dst.layoutIndex = src.layoutIndex; if (src.hasOffset()) dst.layoutOffset = src.layoutOffset; if (src.hasSet()) dst.layoutSet = src.layoutSet; if (src.layoutBinding != TQualifier::layoutBindingEnd) dst.layoutBinding = src.layoutBinding; if (src.hasXfbStride()) dst.layoutXfbStride = src.layoutXfbStride; if (src.hasXfbOffset()) dst.layoutXfbOffset = src.layoutXfbOffset; if (src.hasAttachment()) dst.layoutAttachment = src.layoutAttachment; if (src.hasSpecConstantId()) dst.layoutSpecConstantId = src.layoutSpecConstantId; if (src.layoutPushConstant) dst.layoutPushConstant = true; } } // // Look up a function name in the symbol table, and make sure it is a function. // // First, look for an exact match. If there is none, use the generic selector // TParseContextBase::selectFunction() to find one, parameterized by the // convertible() and better() predicates defined below. // // Return the function symbol if found, otherwise nullptr. // const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn, int& thisDepth, TIntermTyped*& args) { if (symbolTable.isFunctionNameVariable(call.getName())) { error(loc, "can't use function syntax on variable", call.getName().c_str(), ""); return nullptr; } // first, look for an exact match bool dummyScope; TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn, &dummyScope, &thisDepth); if (symbol) return symbol->getAsFunction(); // no exact match, use the generic selector, parameterized by the GLSL rules // create list of candidates to send TVector candidateList; symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); // These built-in ops can accept any type, so we bypass the argument selection if (candidateList.size() == 1 && builtIn && (candidateList[0]->getBuiltInOp() == EOpMethodAppend || candidateList[0]->getBuiltInOp() == EOpMethodRestartStrip || candidateList[0]->getBuiltInOp() == EOpMethodIncrementCounter || candidateList[0]->getBuiltInOp() == EOpMethodDecrementCounter || candidateList[0]->getBuiltInOp() == EOpMethodConsume)) { return candidateList[0]; } bool allowOnlyUpConversions = true; // can 'from' convert to 'to'? const auto convertible = [&](const TType& from, const TType& to, TOperator op, int arg) -> bool { if (from == to) return true; // no aggregate conversions if (from.isArray() || to.isArray() || from.isStruct() || to.isStruct()) return false; switch (op) { case EOpInterlockedAdd: case EOpInterlockedAnd: case EOpInterlockedCompareExchange: case EOpInterlockedCompareStore: case EOpInterlockedExchange: case EOpInterlockedMax: case EOpInterlockedMin: case EOpInterlockedOr: case EOpInterlockedXor: // We do not promote the texture or image type for these ocodes. Normally that would not // be an issue because it's a buffer, but we haven't decomposed the opcode yet, and at this // stage it's merely e.g, a basic integer type. // // Instead, we want to promote other arguments, but stay within the same family. In other // words, InterlockedAdd(RWBuffer, ...) will always use the int flavor, never the uint flavor, // but it is allowed to promote its other arguments. if (arg == 0) return false; break; case EOpMethodSample: case EOpMethodSampleBias: case EOpMethodSampleCmp: case EOpMethodSampleCmpLevelZero: case EOpMethodSampleGrad: case EOpMethodSampleLevel: case EOpMethodLoad: case EOpMethodGetDimensions: case EOpMethodGetSamplePosition: case EOpMethodGather: case EOpMethodCalculateLevelOfDetail: case EOpMethodCalculateLevelOfDetailUnclamped: case EOpMethodGatherRed: case EOpMethodGatherGreen: case EOpMethodGatherBlue: case EOpMethodGatherAlpha: case EOpMethodGatherCmp: case EOpMethodGatherCmpRed: case EOpMethodGatherCmpGreen: case EOpMethodGatherCmpBlue: case EOpMethodGatherCmpAlpha: case EOpMethodAppend: case EOpMethodRestartStrip: // those are method calls, the object type can not be changed // they are equal if the dim and type match (is dim sufficient?) if (arg == 0) return from.getSampler().type == to.getSampler().type && from.getSampler().arrayed == to.getSampler().arrayed && from.getSampler().shadow == to.getSampler().shadow && from.getSampler().ms == to.getSampler().ms && from.getSampler().dim == to.getSampler().dim; break; default: break; } // basic types have to be convertible if (allowOnlyUpConversions) if (! intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType(), EOpFunctionCall)) return false; // shapes have to be convertible if ((from.isScalarOrVec1() && to.isScalarOrVec1()) || (from.isScalarOrVec1() && to.isVector()) || (from.isScalarOrVec1() && to.isMatrix()) || (from.isVector() && to.isVector() && from.getVectorSize() >= to.getVectorSize())) return true; // TODO: what are the matrix rules? they go here return false; }; // Is 'to2' a better conversion than 'to1'? // Ties should not be considered as better. // Assumes 'convertible' already said true. const auto better = [](const TType& from, const TType& to1, const TType& to2) -> bool { // exact match is always better than mismatch if (from == to2) return from != to1; if (from == to1) return false; // shape changes are always worse if (from.isScalar() || from.isVector()) { if (from.getVectorSize() == to2.getVectorSize() && from.getVectorSize() != to1.getVectorSize()) return true; if (from.getVectorSize() == to1.getVectorSize() && from.getVectorSize() != to2.getVectorSize()) return false; } // Handle sampler betterness: An exact sampler match beats a non-exact match. // (If we just looked at basic type, all EbtSamplers would look the same). // If any type is not a sampler, just use the linearize function below. if (from.getBasicType() == EbtSampler && to1.getBasicType() == EbtSampler && to2.getBasicType() == EbtSampler) { // We can ignore the vector size in the comparison. TSampler to1Sampler = to1.getSampler(); TSampler to2Sampler = to2.getSampler(); to1Sampler.vectorSize = to2Sampler.vectorSize = from.getSampler().vectorSize; if (from.getSampler() == to2Sampler) return from.getSampler() != to1Sampler; if (from.getSampler() == to1Sampler) return false; } // Might or might not be changing shape, which means basic type might // or might not match, so within that, the question is how big a // basic-type conversion is being done. // // Use a hierarchy of domains, translated to order of magnitude // in a linearized view: // - floating-point vs. integer // - 32 vs. 64 bit (or width in general) // - bool vs. non bool // - signed vs. not signed const auto linearize = [](const TBasicType& basicType) -> int { switch (basicType) { case EbtBool: return 1; case EbtInt: return 10; case EbtUint: return 11; case EbtInt64: return 20; case EbtUint64: return 21; case EbtFloat: return 100; case EbtDouble: return 110; default: return 0; } }; return abs(linearize(to2.getBasicType()) - linearize(from.getBasicType())) < abs(linearize(to1.getBasicType()) - linearize(from.getBasicType())); }; // for ambiguity reporting bool tie = false; // send to the generic selector const TFunction* bestMatch = nullptr; // printf has var args and is in the symbol table as "printf()", // mangled to "printf(" if (call.getName() == "printf") { TSymbol* symbol = symbolTable.find("printf(", &builtIn); if (symbol) return symbol->getAsFunction(); } bestMatch = selectFunction(candidateList, call, convertible, better, tie); if (bestMatch == nullptr) { // If there is nothing selected by allowing only up-conversions (to a larger linearize() value), // we instead try down-conversions, which are valid in HLSL, but not preferred if there are any // upconversions possible. allowOnlyUpConversions = false; bestMatch = selectFunction(candidateList, call, convertible, better, tie); } if (bestMatch == nullptr) { error(loc, "no matching overloaded function found", call.getName().c_str(), ""); return nullptr; } // For built-ins, we can convert across the arguments. This will happen in several steps: // Step 1: If there's an exact match, use it. // Step 2a: Otherwise, get the operator from the best match and promote arguments: // Step 2b: reconstruct the TFunction based on the new arg types // Step 3: Re-select after type promotion is applied, to find proper candidate. if (builtIn) { // Step 1: If there's an exact match, use it. if (call.getMangledName() == bestMatch->getMangledName()) return bestMatch; // Step 2a: Otherwise, get the operator from the best match and promote arguments as if we // are that kind of operator. if (args != nullptr) { // The arg list can be a unary node, or an aggregate. We have to handle both. // We will use the normal promote() facilities, which require an interm node. TIntermOperator* promote = nullptr; if (call.getParamCount() == 1) { promote = new TIntermUnary(bestMatch->getBuiltInOp()); promote->getAsUnaryNode()->setOperand(args->getAsTyped()); } else { promote = new TIntermAggregate(bestMatch->getBuiltInOp()); promote->getAsAggregate()->getSequence().swap(args->getAsAggregate()->getSequence()); } if (! intermediate.promote(promote)) return nullptr; // Obtain the promoted arg list. if (call.getParamCount() == 1) { args = promote->getAsUnaryNode()->getOperand(); } else { promote->getAsAggregate()->getSequence().swap(args->getAsAggregate()->getSequence()); } } // Step 2b: reconstruct the TFunction based on the new arg types TFunction convertedCall(&call.getName(), call.getType(), call.getBuiltInOp()); if (args->getAsAggregate()) { // Handle aggregates: put all args into the new function call for (int arg = 0; arg < int(args->getAsAggregate()->getSequence().size()); ++arg) { // TODO: But for constness, we could avoid the new & shallowCopy, and use the pointer directly. TParameter param = { nullptr, new TType, nullptr }; param.type->shallowCopy(args->getAsAggregate()->getSequence()[arg]->getAsTyped()->getType()); convertedCall.addParameter(param); } } else if (args->getAsUnaryNode()) { // Handle unaries: put all args into the new function call TParameter param = { nullptr, new TType, nullptr }; param.type->shallowCopy(args->getAsUnaryNode()->getOperand()->getAsTyped()->getType()); convertedCall.addParameter(param); } else if (args->getAsTyped()) { // Handle bare e.g, floats, not in an aggregate. TParameter param = { nullptr, new TType, nullptr }; param.type->shallowCopy(args->getAsTyped()->getType()); convertedCall.addParameter(param); } else { assert(0); // unknown argument list. return nullptr; } // Step 3: Re-select after type promotion, to find proper candidate // send to the generic selector bestMatch = selectFunction(candidateList, convertedCall, convertible, better, tie); // At this point, there should be no tie. } if (tie) error(loc, "ambiguous best function under implicit type conversion", call.getName().c_str(), ""); // Append default parameter values if needed if (!tie && bestMatch != nullptr) { for (int defParam = call.getParamCount(); defParam < bestMatch->getParamCount(); ++defParam) { handleFunctionArgument(&call, args, (*bestMatch)[defParam].defaultValue); } } return bestMatch; } // // Do everything necessary to handle a typedef declaration, for a single symbol. // // 'parseType' is the type part of the declaration (to the left) // 'arraySizes' is the arrayness tagged on the identifier (to the right) // void HlslParseContext::declareTypedef(const TSourceLoc& loc, const TString& identifier, const TType& parseType) { TVariable* typeSymbol = new TVariable(&identifier, parseType, true); if (! symbolTable.insert(*typeSymbol)) error(loc, "name already defined", "typedef", identifier.c_str()); } // Do everything necessary to handle a struct declaration, including // making IO aliases because HLSL allows mixed IO in a struct that specializes // based on the usage (input, output, uniform, none). void HlslParseContext::declareStruct(const TSourceLoc& loc, TString& structName, TType& type) { // If it was named, which means the type can be reused later, add // it to the symbol table. (Unless it's a block, in which // case the name is not a type.) if (type.getBasicType() == EbtBlock || structName.size() == 0) return; TVariable* userTypeDef = new TVariable(&structName, type, true); if (! symbolTable.insert(*userTypeDef)) { error(loc, "redefinition", structName.c_str(), "struct"); return; } // See if we need IO aliases for the structure typeList const auto condAlloc = [](bool pred, TTypeList*& list) { if (pred && list == nullptr) list = new TTypeList; }; tIoKinds newLists = { nullptr, nullptr, nullptr }; // allocate for each kind found for (auto member = type.getStruct()->begin(); member != type.getStruct()->end(); ++member) { condAlloc(hasUniform(member->type->getQualifier()), newLists.uniform); condAlloc( hasInput(member->type->getQualifier()), newLists.input); condAlloc( hasOutput(member->type->getQualifier()), newLists.output); if (member->type->isStruct()) { auto it = ioTypeMap.find(member->type->getStruct()); if (it != ioTypeMap.end()) { condAlloc(it->second.uniform != nullptr, newLists.uniform); condAlloc(it->second.input != nullptr, newLists.input); condAlloc(it->second.output != nullptr, newLists.output); } } } if (newLists.uniform == nullptr && newLists.input == nullptr && newLists.output == nullptr) { // Won't do any IO caching, clear up the type and get out now. for (auto member = type.getStruct()->begin(); member != type.getStruct()->end(); ++member) clearUniformInputOutput(member->type->getQualifier()); return; } // We have IO involved. // Make a pure typeList for the symbol table, and cache side copies of IO versions. for (auto member = type.getStruct()->begin(); member != type.getStruct()->end(); ++member) { const auto inheritStruct = [&](TTypeList* s, TTypeLoc& ioMember) { if (s != nullptr) { ioMember.type = new TType; ioMember.type->shallowCopy(*member->type); ioMember.type->setStruct(s); } }; const auto newMember = [&](TTypeLoc& m) { if (m.type == nullptr) { m.type = new TType; m.type->shallowCopy(*member->type); } }; TTypeLoc newUniformMember = { nullptr, member->loc }; TTypeLoc newInputMember = { nullptr, member->loc }; TTypeLoc newOutputMember = { nullptr, member->loc }; if (member->type->isStruct()) { // swap in an IO child if there is one auto it = ioTypeMap.find(member->type->getStruct()); if (it != ioTypeMap.end()) { inheritStruct(it->second.uniform, newUniformMember); inheritStruct(it->second.input, newInputMember); inheritStruct(it->second.output, newOutputMember); } } if (newLists.uniform) { newMember(newUniformMember); // inherit default matrix layout (changeable via #pragma pack_matrix), if none given. if (member->type->isMatrix() && member->type->getQualifier().layoutMatrix == ElmNone) newUniformMember.type->getQualifier().layoutMatrix = globalUniformDefaults.layoutMatrix; correctUniform(newUniformMember.type->getQualifier()); newLists.uniform->push_back(newUniformMember); } if (newLists.input) { newMember(newInputMember); correctInput(newInputMember.type->getQualifier()); newLists.input->push_back(newInputMember); } if (newLists.output) { newMember(newOutputMember); correctOutput(newOutputMember.type->getQualifier()); newLists.output->push_back(newOutputMember); } // make original pure clearUniformInputOutput(member->type->getQualifier()); } ioTypeMap[type.getStruct()] = newLists; } // Lookup a user-type by name. // If found, fill in the type and return the defining symbol. // If not found, return nullptr. TSymbol* HlslParseContext::lookupUserType(const TString& typeName, TType& type) { TSymbol* symbol = symbolTable.find(typeName); if (symbol && symbol->getAsVariable() && symbol->getAsVariable()->isUserType()) { type.shallowCopy(symbol->getType()); return symbol; } else return nullptr; } // // Do everything necessary to handle a variable (non-block) declaration. // Either redeclaring a variable, or making a new one, updating the symbol // table, and all error checking. // // Returns a subtree node that computes an initializer, if needed. // Returns nullptr if there is no code to execute for initialization. // // 'parseType' is the type part of the declaration (to the left) // 'arraySizes' is the arrayness tagged on the identifier (to the right) // TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TString& identifier, TType& type, TIntermTyped* initializer) { if (voidErrorCheck(loc, identifier, type.getBasicType())) return nullptr; // Global consts with initializers that are non-const act like EvqGlobal in HLSL. // This test is implicitly recursive, because initializers propagate constness // up the aggregate node tree during creation. E.g, for: // { { 1, 2 }, { 3, 4 } } // the initializer list is marked EvqConst at the top node, and remains so here. However: // { 1, { myvar, 2 }, 3 } // is not a const intializer, and still becomes EvqGlobal here. const bool nonConstInitializer = (initializer != nullptr && initializer->getQualifier().storage != EvqConst); if (type.getQualifier().storage == EvqConst && symbolTable.atGlobalLevel() && nonConstInitializer) { // Force to global type.getQualifier().storage = EvqGlobal; } // make const and initialization consistent fixConstInit(loc, identifier, type, initializer); // Check for redeclaration of built-ins and/or attempting to declare a reserved name TSymbol* symbol = nullptr; inheritGlobalDefaults(type.getQualifier()); const bool flattenVar = shouldFlatten(type, type.getQualifier().storage, true); // correct IO in the type switch (type.getQualifier().storage) { case EvqGlobal: case EvqTemporary: clearUniformInputOutput(type.getQualifier()); break; case EvqUniform: case EvqBuffer: correctUniform(type.getQualifier()); if (type.isStruct()) { auto it = ioTypeMap.find(type.getStruct()); if (it != ioTypeMap.end()) type.setStruct(it->second.uniform); } break; default: break; } // Declare the variable if (type.isArray()) { // array case declareArray(loc, identifier, type, symbol, !flattenVar); } else { // non-array case if (symbol == nullptr) symbol = declareNonArray(loc, identifier, type, !flattenVar); else if (type != symbol->getType()) error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str()); } if (symbol == nullptr) return nullptr; if (flattenVar) flatten(*symbol->getAsVariable(), symbolTable.atGlobalLevel()); TVariable* variable = symbol->getAsVariable(); if (initializer == nullptr) { if (intermediate.getDebugInfo()) return executeDeclaration(loc, variable); else return nullptr; } // Deal with initializer if (variable == nullptr) { error(loc, "initializer requires a variable, not a member", identifier.c_str(), ""); return nullptr; } return executeInitializer(loc, initializer, variable); } // Pick up global defaults from the provide global defaults into dst. void HlslParseContext::inheritGlobalDefaults(TQualifier& dst) const { if (dst.storage == EvqVaryingOut) { if (! dst.hasStream() && language == EShLangGeometry) dst.layoutStream = globalOutputDefaults.layoutStream; if (! dst.hasXfbBuffer()) dst.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } } // // Make an internal-only variable whose name is for debug purposes only // and won't be searched for. Callers will only use the return value to use // the variable, not the name to look it up. It is okay if the name // is the same as other names; there won't be any conflict. // TVariable* HlslParseContext::makeInternalVariable(const char* name, const TType& type) const { TString* nameString = NewPoolTString(name); TVariable* variable = new TVariable(nameString, type); symbolTable.makeInternalVariable(*variable); return variable; } // Make a symbol node holding a new internal temporary variable. TIntermSymbol* HlslParseContext::makeInternalVariableNode(const TSourceLoc& loc, const char* name, const TType& type) const { TVariable* tmpVar = makeInternalVariable(name, type); tmpVar->getWritableType().getQualifier().makeTemporary(); return intermediate.addSymbol(*tmpVar, loc); } // // Declare a non-array variable, the main point being there is no redeclaration // for resizing allowed. // // Return the successfully declared variable. // TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, const TString& identifier, const TType& type, bool track) { // make a new variable TVariable* variable = new TVariable(&identifier, type); // add variable to symbol table if (symbolTable.insert(*variable)) { if (track && symbolTable.atGlobalLevel()) trackLinkage(*variable); return variable; } error(loc, "redefinition", variable->getName().c_str(), ""); 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. // // Returning nullptr just means there is no code to execute to handle the // initializer, which will, for example, be the case for constant initializers. // // Returns a subtree that accomplished the initialization. // TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyped* initializer, TVariable* variable) { // // Identifier must be of type constant, a global, or a temporary, and // starting at version 120, desktop allows uniforms to have initializers. // TStorageQualifier qualifier = variable->getType().getQualifier().storage; // // If the initializer was from braces { ... }, we convert the whole subtree to a // constructor-style subtree, allowing the rest of the code to operate // identically for both kinds of initializers. // // // Type can't be deduced from the initializer list, so a skeletal type to // follow has to be passed in. Constness and specialization-constness // should be deduced bottom up, not dictated by the skeletal type. // TType skeletalType; skeletalType.shallowCopy(variable->getType()); skeletalType.getQualifier().makeTemporary(); if (initializer->getAsAggregate() && initializer->getAsAggregate()->getOp() == EOpNull) initializer = convertInitializerList(loc, skeletalType, initializer, nullptr); if (initializer == nullptr) { // error recovery; don't leave const without constant values if (qualifier == EvqConst) variable->getWritableType().getQualifier().storage = EvqTemporary; return nullptr; } // Fix outer arrayness if variable is unsized, getting size from the initializer if (initializer->getType().isSizedArray() && variable->getType().isUnsizedArray()) variable->getWritableType().changeOuterArraySize(initializer->getType().getOuterArraySize()); // Inner arrayness can also get set by an initializer if (initializer->getType().isArrayOfArrays() && variable->getType().isArrayOfArrays() && initializer->getType().getArraySizes()->getNumDims() == variable->getType().getArraySizes()->getNumDims()) { // adopt unsized sizes from the initializer's sizes for (int d = 1; d < variable->getType().getArraySizes()->getNumDims(); ++d) { if (variable->getType().getArraySizes()->getDimSize(d) == UnsizedArraySize) { variable->getWritableType().getArraySizes()->setDimSize(d, initializer->getType().getArraySizes()->getDimSize(d)); } } } // Uniform and global consts require a constant initializer if (qualifier == EvqUniform && initializer->getType().getQualifier().storage != EvqConst) { error(loc, "uniform initializers must be constant", "=", "'%s'", variable->getType().getCompleteString().c_str()); variable->getWritableType().getQualifier().storage = EvqTemporary; return nullptr; } // Const variables require a constant initializer if (qualifier == EvqConst) { if (initializer->getType().getQualifier().storage != EvqConst) { variable->getWritableType().getQualifier().storage = EvqConstReadOnly; qualifier = EvqConstReadOnly; } } if (qualifier == EvqConst || qualifier == EvqUniform) { // Compile-time tagging of the variable with its constant value... initializer = intermediate.addConversion(EOpAssign, variable->getType(), initializer); if (initializer != nullptr && variable->getType() != initializer->getType()) initializer = intermediate.addUniShapeConversion(EOpAssign, variable->getType(), initializer); if (initializer == nullptr || !initializer->getAsConstantUnion() || variable->getType() != initializer->getType()) { error(loc, "non-matching or non-convertible constant type for const initializer", variable->getType().getStorageQualifierString(), ""); variable->getWritableType().getQualifier().storage = EvqTemporary; return nullptr; } variable->setConstArray(initializer->getAsConstantUnion()->getConstArray()); } else { // normal assigning of a value to a variable... specializationCheck(loc, initializer->getType(), "initializer"); TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc); TIntermNode* initNode = handleAssign(loc, EOpAssign, intermSymbol, initializer); if (initNode == nullptr) assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString()); return initNode; } return nullptr; } // // Reprocess any initializer-list { ... } parts of the initializer. // Need to hierarchically assign correct types and implicit // conversions. Will do this mimicking the same process used for // creating a constructor-style initializer, ensuring we get the // same form. // // Returns a node representing an expression for the initializer list expressed // as the correct type. // // Returns nullptr if there is an error. // TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, const TType& type, TIntermTyped* initializer, TIntermTyped* scalarInit) { // Will operate recursively. Once a subtree is found that is constructor style, // everything below it is already good: Only the "top part" of the initializer // can be an initializer list, where "top part" can extend for several (or all) levels. // see if we have bottomed out in the tree within the initializer-list part TIntermAggregate* initList = initializer->getAsAggregate(); if (initList == nullptr || initList->getOp() != EOpNull) { // We don't have a list, but if it's a scalar and the 'type' is a // composite, we need to lengthen below to make it useful. // Otherwise, this is an already formed object to initialize with. if (type.isScalar() || !initializer->getType().isScalar()) return initializer; else initList = intermediate.makeAggregate(initializer); } // Of the initializer-list set of nodes, need to process bottom up, // so recurse deep, then process on the way up. // Go down the tree here... if (type.isArray()) { // The type's array might be unsized, which could be okay, so base sizes on the size of the aggregate. // Later on, initializer execution code will deal with array size logic. TType arrayType; arrayType.shallowCopy(type); // sharing struct stuff is fine arrayType.copyArraySizes(*type.getArraySizes()); // but get a fresh copy of the array information, to edit below // edit array sizes to fill in unsized dimensions if (type.isUnsizedArray()) arrayType.changeOuterArraySize((int)initList->getSequence().size()); // set unsized array dimensions that can be derived from the initializer's first element if (arrayType.isArrayOfArrays() && initList->getSequence().size() > 0) { TIntermTyped* firstInit = initList->getSequence()[0]->getAsTyped(); if (firstInit->getType().isArray() && arrayType.getArraySizes()->getNumDims() == firstInit->getType().getArraySizes()->getNumDims() + 1) { for (int d = 1; d < arrayType.getArraySizes()->getNumDims(); ++d) { if (arrayType.getArraySizes()->getDimSize(d) == UnsizedArraySize) arrayType.getArraySizes()->setDimSize(d, firstInit->getType().getArraySizes()->getDimSize(d - 1)); } } } // lengthen list to be long enough lengthenList(loc, initList->getSequence(), arrayType.getOuterArraySize(), scalarInit); // recursively process each element TType elementType(arrayType, 0); // dereferenced type for (int i = 0; i < arrayType.getOuterArraySize(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, elementType, initList->getSequence()[i]->getAsTyped(), scalarInit); if (initList->getSequence()[i] == nullptr) return nullptr; } return addConstructor(loc, initList, arrayType); } else if (type.isStruct()) { // do we have implicit assignments to opaques? for (size_t i = initList->getSequence().size(); i < type.getStruct()->size(); ++i) { if ((*type.getStruct())[i].type->containsOpaque()) { error(loc, "cannot implicitly initialize opaque members", "initializer list", ""); return nullptr; } } // lengthen list to be long enough lengthenList(loc, initList->getSequence(), static_cast(type.getStruct()->size()), scalarInit); if (type.getStruct()->size() != initList->getSequence().size()) { error(loc, "wrong number of structure members", "initializer list", ""); return nullptr; } for (size_t i = 0; i < type.getStruct()->size(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, *(*type.getStruct())[i].type, initList->getSequence()[i]->getAsTyped(), scalarInit); if (initList->getSequence()[i] == nullptr) return nullptr; } } else if (type.isMatrix()) { if (type.computeNumComponents() == (int)initList->getSequence().size()) { // This means the matrix is initialized component-wise, rather than as // a series of rows and columns. We can just use the list directly as // a constructor; no further processing needed. } else { // lengthen list to be long enough lengthenList(loc, initList->getSequence(), type.getMatrixCols(), scalarInit); if (type.getMatrixCols() != (int)initList->getSequence().size()) { error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str()); return nullptr; } TType vectorType(type, 0); // dereferenced type for (int i = 0; i < type.getMatrixCols(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped(), scalarInit); if (initList->getSequence()[i] == nullptr) return nullptr; } } } else if (type.isVector()) { // lengthen list to be long enough lengthenList(loc, initList->getSequence(), type.getVectorSize(), scalarInit); // error check; we're at bottom, so work is finished below if (type.getVectorSize() != (int)initList->getSequence().size()) { error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str()); return nullptr; } } else if (type.isScalar()) { // lengthen list to be long enough lengthenList(loc, initList->getSequence(), 1, scalarInit); if ((int)initList->getSequence().size() != 1) { error(loc, "scalar expected one element:", "initializer list", type.getCompleteString().c_str()); return nullptr; } } else { error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str()); return nullptr; } // Now that the subtree is processed, process this node as if the // initializer list is a set of arguments to a constructor. TIntermTyped* emulatedConstructorArguments; if (initList->getSequence().size() == 1) emulatedConstructorArguments = initList->getSequence()[0]->getAsTyped(); else emulatedConstructorArguments = initList; return addConstructor(loc, emulatedConstructorArguments, type); } // Lengthen list to be long enough to cover any gap from the current list size // to 'size'. If the list is longer, do nothing. // The value to lengthen with is the default for short lists. // // By default, lists that are too short due to lack of initializers initialize to zero. // Alternatively, it could be a scalar initializer for a structure. Both cases are handled, // based on whether something is passed in as 'scalarInit'. // // 'scalarInit' must be safe to use each time this is called (no side effects replication). // void HlslParseContext::lengthenList(const TSourceLoc& loc, TIntermSequence& list, int size, TIntermTyped* scalarInit) { for (int c = (int)list.size(); c < size; ++c) { if (scalarInit == nullptr) list.push_back(intermediate.addConstantUnion(0, loc)); else list.push_back(scalarInit); } } // // Test for the correctness of the parameters passed to various constructor functions // and also convert them to the right data type, if allowed and required. // // Returns nullptr for an error or the constructed node (aggregate or typed) for no error. // TIntermTyped* HlslParseContext::handleConstructor(const TSourceLoc& loc, TIntermTyped* node, const TType& type) { if (node == nullptr) return nullptr; // Construct identical type if (type == node->getType()) return node; // Handle the idiom "(struct type)" if (type.isStruct() && isScalarConstructor(node)) { // 'node' will almost always get used multiple times, so should not be used directly, // it would create a DAG instead of a tree, which might be okay (would // like to formalize that for constants and symbols), but if it has // side effects, they would get executed multiple times, which is not okay. if (node->getAsConstantUnion() == nullptr && node->getAsSymbolNode() == nullptr) { TIntermAggregate* seq = intermediate.makeAggregate(loc); TIntermSymbol* copy = makeInternalVariableNode(loc, "scalarCopy", node->getType()); seq = intermediate.growAggregate(seq, intermediate.addBinaryNode(EOpAssign, copy, node, loc)); seq = intermediate.growAggregate(seq, convertInitializerList(loc, type, intermediate.makeAggregate(loc), copy)); seq->setOp(EOpComma); seq->setType(type); return seq; } else return convertInitializerList(loc, type, intermediate.makeAggregate(loc), node); } return addConstructor(loc, node, type); } // Add a constructor, either from the grammar, or other programmatic reasons. // // 'node' is what to construct from. // 'type' is what type to construct. // // Returns the constructed object. // Return nullptr if it can't be done. // TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermTyped* node, const TType& type) { TIntermAggregate* aggrNode = node->getAsAggregate(); TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpConstructTextureSampler) return intermediate.setAggregateOperator(aggrNode, op, type, loc); TTypeList::const_iterator memberTypes; if (op == EOpConstructStruct) memberTypes = type.getStruct()->begin(); TType elementType; if (type.isArray()) { TType dereferenced(type, 0); elementType.shallowCopy(dereferenced); } else elementType.shallowCopy(type); bool singleArg; if (aggrNode != nullptr) { if (aggrNode->getOp() != EOpNull) singleArg = true; else singleArg = false; } else singleArg = true; TIntermTyped *newNode; if (singleArg) { // Handle array -> array conversion // Constructing an array of one type from an array of another type is allowed, // assuming there are enough components available (semantic-checked earlier). if (type.isArray() && node->isArray()) newNode = convertArray(node, type); // If structure constructor or array constructor is being called // for only one parameter inside the aggregate, we need to call constructAggregate function once. else if (type.isArray()) newNode = constructAggregate(node, elementType, 1, node->getLoc()); else if (op == EOpConstructStruct) newNode = constructAggregate(node, *(*memberTypes).type, 1, node->getLoc()); else { // shape conversion for matrix constructor from scalar. HLSL semantics are: scalar // is replicated into every element of the matrix (not just the diagnonal), so // that is handled specially here. if (type.isMatrix() && node->getType().isScalarOrVec1()) node = intermediate.addShapeConversion(type, node); newNode = constructBuiltIn(type, op, node, node->getLoc(), false); } if (newNode && (type.isArray() || op == EOpConstructStruct)) newNode = intermediate.setAggregateOperator(newNode, EOpConstructStruct, type, loc); return newNode; } // // Handle list of arguments. // TIntermSequence& sequenceVector = aggrNode->getSequence(); // Stores the information about the parameter to the constructor // if the structure constructor contains more than one parameter, then construct // each parameter int paramCount = 0; // keeps a track of the constructor parameter number being checked // for each parameter to the constructor call, check to see if the right type is passed or convert them // to the right type if possible (and allowed). // for structure constructors, just check if the right type is passed, no conversion is allowed. for (TIntermSequence::iterator p = sequenceVector.begin(); p != sequenceVector.end(); p++, paramCount++) { if (type.isArray()) newNode = constructAggregate(*p, elementType, paramCount + 1, node->getLoc()); else if (op == EOpConstructStruct) newNode = constructAggregate(*p, *(memberTypes[paramCount]).type, paramCount + 1, node->getLoc()); else newNode = constructBuiltIn(type, op, (*p)->getAsTyped(), node->getLoc(), true); if (newNode) *p = newNode; else return nullptr; } TIntermTyped* constructor = intermediate.setAggregateOperator(aggrNode, op, type, loc); return constructor; } // Function for constructor implementation. Calls addUnaryMath with appropriate EOp value // for the parameter to the constructor (passed to this function). Essentially, it converts // the parameter types correctly. If a constructor expects an int (like ivec2) and is passed a // float, then float is converted to int. // // Returns nullptr for an error or the constructed node. // TIntermTyped* HlslParseContext::constructBuiltIn(const TType& type, TOperator op, TIntermTyped* node, const TSourceLoc& loc, bool subset) { TIntermTyped* newNode; TOperator basicOp; // // First, convert types as needed. // switch (op) { case EOpConstructF16Vec2: case EOpConstructF16Vec3: case EOpConstructF16Vec4: case EOpConstructF16Mat2x2: case EOpConstructF16Mat2x3: case EOpConstructF16Mat2x4: case EOpConstructF16Mat3x2: case EOpConstructF16Mat3x3: case EOpConstructF16Mat3x4: case EOpConstructF16Mat4x2: case EOpConstructF16Mat4x3: case EOpConstructF16Mat4x4: case EOpConstructFloat16: basicOp = EOpConstructFloat16; break; case EOpConstructVec2: case EOpConstructVec3: case EOpConstructVec4: case EOpConstructMat2x2: case EOpConstructMat2x3: case EOpConstructMat2x4: case EOpConstructMat3x2: case EOpConstructMat3x3: case EOpConstructMat3x4: case EOpConstructMat4x2: case EOpConstructMat4x3: case EOpConstructMat4x4: case EOpConstructFloat: basicOp = EOpConstructFloat; break; case EOpConstructDVec2: case EOpConstructDVec3: case EOpConstructDVec4: case EOpConstructDMat2x2: case EOpConstructDMat2x3: case EOpConstructDMat2x4: case EOpConstructDMat3x2: case EOpConstructDMat3x3: case EOpConstructDMat3x4: case EOpConstructDMat4x2: case EOpConstructDMat4x3: case EOpConstructDMat4x4: case EOpConstructDouble: basicOp = EOpConstructDouble; break; case EOpConstructI16Vec2: case EOpConstructI16Vec3: case EOpConstructI16Vec4: case EOpConstructInt16: basicOp = EOpConstructInt16; break; case EOpConstructIVec2: case EOpConstructIVec3: case EOpConstructIVec4: case EOpConstructIMat2x2: case EOpConstructIMat2x3: case EOpConstructIMat2x4: case EOpConstructIMat3x2: case EOpConstructIMat3x3: case EOpConstructIMat3x4: case EOpConstructIMat4x2: case EOpConstructIMat4x3: case EOpConstructIMat4x4: case EOpConstructInt: basicOp = EOpConstructInt; break; case EOpConstructU16Vec2: case EOpConstructU16Vec3: case EOpConstructU16Vec4: case EOpConstructUint16: basicOp = EOpConstructUint16; break; case EOpConstructUVec2: case EOpConstructUVec3: case EOpConstructUVec4: case EOpConstructUMat2x2: case EOpConstructUMat2x3: case EOpConstructUMat2x4: case EOpConstructUMat3x2: case EOpConstructUMat3x3: case EOpConstructUMat3x4: case EOpConstructUMat4x2: case EOpConstructUMat4x3: case EOpConstructUMat4x4: case EOpConstructUint: basicOp = EOpConstructUint; break; case EOpConstructBVec2: case EOpConstructBVec3: case EOpConstructBVec4: case EOpConstructBMat2x2: case EOpConstructBMat2x3: case EOpConstructBMat2x4: case EOpConstructBMat3x2: case EOpConstructBMat3x3: case EOpConstructBMat3x4: case EOpConstructBMat4x2: case EOpConstructBMat4x3: case EOpConstructBMat4x4: case EOpConstructBool: basicOp = EOpConstructBool; break; default: error(loc, "unsupported construction", "", ""); return nullptr; } newNode = intermediate.addUnaryMath(basicOp, node, node->getLoc()); if (newNode == nullptr) { error(loc, "can't convert", "constructor", ""); return nullptr; } // // Now, if there still isn't an operation to do the construction, and we need one, add one. // // Otherwise, skip out early. if (subset || (newNode != node && newNode->getType() == type)) return newNode; // setAggregateOperator will insert a new node for the constructor, as needed. return intermediate.setAggregateOperator(newNode, op, type, loc); } // Convert the array in node to the requested type, which is also an array. // Returns nullptr on failure, otherwise returns aggregate holding the list of // elements needed to construct the array. TIntermTyped* HlslParseContext::convertArray(TIntermTyped* node, const TType& type) { assert(node->isArray() && type.isArray()); if (node->getType().computeNumComponents() < type.computeNumComponents()) return nullptr; // TODO: write an argument replicator, for the case the argument should not be // executed multiple times, yet multiple copies are needed. TIntermTyped* constructee = node->getAsTyped(); // track where we are in consuming the argument int constructeeElement = 0; int constructeeComponent = 0; // bump up to the next component to consume const auto getNextComponent = [&]() { TIntermTyped* component; component = handleBracketDereference(node->getLoc(), constructee, intermediate.addConstantUnion(constructeeElement, node->getLoc())); if (component->isVector()) component = handleBracketDereference(node->getLoc(), component, intermediate.addConstantUnion(constructeeComponent, node->getLoc())); // bump component pointer up ++constructeeComponent; if (constructeeComponent == constructee->getVectorSize()) { constructeeComponent = 0; ++constructeeElement; } return component; }; // make one subnode per constructed array element TIntermAggregate* constructor = nullptr; TType derefType(type, 0); TType speculativeComponentType(derefType, 0); TType* componentType = derefType.isVector() ? &speculativeComponentType : &derefType; TOperator componentOp = intermediate.mapTypeToConstructorOp(*componentType); TType crossType(node->getBasicType(), EvqTemporary, type.getVectorSize()); for (int e = 0; e < type.getOuterArraySize(); ++e) { // construct an element TIntermTyped* elementArg; if (type.getVectorSize() == constructee->getVectorSize()) { // same element shape elementArg = handleBracketDereference(node->getLoc(), constructee, intermediate.addConstantUnion(e, node->getLoc())); } else { // mismatched element shapes if (type.getVectorSize() == 1) elementArg = getNextComponent(); else { // make a vector TIntermAggregate* elementConstructee = nullptr; for (int c = 0; c < type.getVectorSize(); ++c) elementConstructee = intermediate.growAggregate(elementConstructee, getNextComponent()); elementArg = addConstructor(node->getLoc(), elementConstructee, crossType); } } // convert basic types elementArg = intermediate.addConversion(componentOp, derefType, elementArg); if (elementArg == nullptr) return nullptr; // combine with top-level constructor constructor = intermediate.growAggregate(constructor, elementArg); } return constructor; } // This function tests for the type of the parameters to the structure or array constructor. Raises // an error message if the expected type does not match the parameter passed to the constructor. // // Returns nullptr for an error or the input node itself if the expected and the given parameter types match. // TIntermTyped* HlslParseContext::constructAggregate(TIntermNode* node, const TType& type, int paramCount, const TSourceLoc& loc) { // Handle cases that map more 1:1 between constructor arguments and constructed. TIntermTyped* converted = intermediate.addConversion(EOpConstructStruct, type, node->getAsTyped()); if (converted == nullptr || converted->getType() != type) { error(loc, "", "constructor", "cannot convert parameter %d from '%s' to '%s'", paramCount, node->getAsTyped()->getType().getCompleteString().c_str(), type.getCompleteString().c_str()); return nullptr; } return converted; } // // Do everything needed to add an interface block. // void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TString* instanceName) { assert(type.getWritableStruct() != nullptr); // Clean up top-level decorations that don't belong. switch (type.getQualifier().storage) { case EvqUniform: case EvqBuffer: correctUniform(type.getQualifier()); break; case EvqVaryingIn: correctInput(type.getQualifier()); break; case EvqVaryingOut: correctOutput(type.getQualifier()); break; default: break; } TTypeList& typeList = *type.getWritableStruct(); // fix and check for member storage qualifiers and types that don't belong within a block for (unsigned int member = 0; member < typeList.size(); ++member) { TType& memberType = *typeList[member].type; TQualifier& memberQualifier = memberType.getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; globalQualifierFix(memberLoc, memberQualifier); memberQualifier.storage = type.getQualifier().storage; if (memberType.isStruct()) { // clean up and pick up the right set of decorations auto it = ioTypeMap.find(memberType.getStruct()); switch (type.getQualifier().storage) { case EvqUniform: case EvqBuffer: correctUniform(type.getQualifier()); if (it != ioTypeMap.end() && it->second.uniform) memberType.setStruct(it->second.uniform); break; case EvqVaryingIn: correctInput(type.getQualifier()); if (it != ioTypeMap.end() && it->second.input) memberType.setStruct(it->second.input); break; case EvqVaryingOut: correctOutput(type.getQualifier()); if (it != ioTypeMap.end() && it->second.output) memberType.setStruct(it->second.output); break; default: break; } } } // Make default block qualification, and adjust the member qualifications TQualifier defaultQualification; switch (type.getQualifier().storage) { case EvqUniform: defaultQualification = globalUniformDefaults; break; case EvqBuffer: defaultQualification = globalBufferDefaults; break; case EvqVaryingIn: defaultQualification = globalInputDefaults; break; case EvqVaryingOut: defaultQualification = globalOutputDefaults; break; default: defaultQualification.clear(); break; } // Special case for "push_constant uniform", which has a default of std430, // contrary to normal uniform defaults, and can't have a default tracked for it. if (type.getQualifier().layoutPushConstant && ! type.getQualifier().hasPacking()) type.getQualifier().layoutPacking = ElpStd430; // fix and check for member layout qualifiers mergeObjectLayoutQualifiers(defaultQualification, type.getQualifier(), true); bool memberWithLocation = false; bool memberWithoutLocation = false; for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; if (memberQualifier.hasStream()) { if (defaultQualification.layoutStream != memberQualifier.layoutStream) error(memberLoc, "member cannot contradict block", "stream", ""); } // "This includes a block's inheritance of the // current global default buffer, a block member's inheritance of the block's // buffer, and the requirement that any *xfb_buffer* declared on a block // member must match the buffer inherited from the block." if (memberQualifier.hasXfbBuffer()) { if (defaultQualification.layoutXfbBuffer != memberQualifier.layoutXfbBuffer) error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", ""); } if (memberQualifier.hasLocation()) { switch (type.getQualifier().storage) { case EvqVaryingIn: case EvqVaryingOut: memberWithLocation = true; break; default: break; } } else memberWithoutLocation = true; TQualifier newMemberQualification = defaultQualification; mergeQualifiers(newMemberQualification, memberQualifier); memberQualifier = newMemberQualification; } // Process the members fixBlockLocations(loc, type.getQualifier(), typeList, memberWithLocation, memberWithoutLocation); fixXfbOffsets(type.getQualifier(), typeList); fixBlockUniformOffsets(type.getQualifier(), typeList); // reverse merge, so that currentBlockQualifier now has all layout information // (can't use defaultQualification directly, it's missing other non-layout-default-class qualifiers) mergeObjectLayoutQualifiers(type.getQualifier(), defaultQualification, true); // // Build and add the interface block as a new type named 'blockName' // // Use the instance name as the interface name if one exists, else the block name. const TString& interfaceName = (instanceName && !instanceName->empty()) ? *instanceName : type.getTypeName(); TType blockType(&typeList, interfaceName, type.getQualifier()); if (type.isArray()) blockType.transferArraySizes(type.getArraySizes()); // Add the variable, as anonymous or named instanceName. // Make an anonymous variable if no name was provided. if (instanceName == nullptr) instanceName = NewPoolTString(""); TVariable& variable = *new TVariable(instanceName, blockType); if (! symbolTable.insert(variable)) { if (*instanceName == "") error(loc, "nameless block contains a member that already has a name at global scope", "" /* blockName->c_str() */, ""); else error(loc, "block instance name redefinition", variable.getName().c_str(), ""); return; } // Save it in the AST for linker use. if (symbolTable.atGlobalLevel()) trackLinkage(variable); } // // "For a block, this process applies to the entire block, or until the first member // is reached that has a location layout qualifier. When a block member is declared with a location // qualifier, its location comes from that qualifier: The member's location qualifier overrides the block-level // declaration. Subsequent members are again assigned consecutive locations, based on the newest location, // until the next member declared with a location qualifier. The values used for locations do not have to be // declared in increasing order." void HlslParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qualifier, TTypeList& typeList, bool memberWithLocation, bool memberWithoutLocation) { // "If a block has no block-level location layout qualifier, it is required that either all or none of its members // have a location layout qualifier, or a compile-time error results." if (! qualifier.hasLocation() && memberWithLocation && memberWithoutLocation) error(loc, "either the block needs a location, or all members need a location, or no members have a location", "location", ""); else { if (memberWithLocation) { // remove any block-level location and make it per *every* member int nextLocation = 0; // by the rule above, initial value is not relevant if (qualifier.hasAnyLocation()) { nextLocation = qualifier.layoutLocation; qualifier.layoutLocation = TQualifier::layoutLocationEnd; if (qualifier.hasComponent()) { // "It is a compile-time error to apply the *component* qualifier to a ... block" error(loc, "cannot apply to a block", "component", ""); } if (qualifier.hasIndex()) { error(loc, "cannot apply to a block", "index", ""); } } for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; if (! memberQualifier.hasLocation()) { if (nextLocation >= (int)TQualifier::layoutLocationEnd) error(memberLoc, "location is too large", "location", ""); memberQualifier.layoutLocation = nextLocation; memberQualifier.layoutComponent = 0; } nextLocation = memberQualifier.layoutLocation + intermediate.computeTypeLocationSize(*typeList[member].type, language); } } } } void HlslParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList) { // "If a block is qualified with xfb_offset, all its // members are assigned transform feedback buffer offsets. If a block is not qualified with xfb_offset, any // members of that block not qualified with an xfb_offset will not be assigned transform feedback buffer // offsets." if (! qualifier.hasXfbBuffer() || ! qualifier.hasXfbOffset()) return; int nextOffset = qualifier.layoutXfbOffset; for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); bool contains64BitType = false; bool contains32BitType = false; bool contains16BitType = false; int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType, contains32BitType, contains16BitType); // see if we need to auto-assign an offset to this member if (! memberQualifier.hasXfbOffset()) { // "if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8" if (contains64BitType) RoundToPow2(nextOffset, 8); else if (contains32BitType) RoundToPow2(nextOffset, 4); // "if applied to an aggregate containing a half float or 16-bit integer, the offset must also be a multiple of 2" else if (contains16BitType) RoundToPow2(nextOffset, 2); memberQualifier.layoutXfbOffset = nextOffset; } else nextOffset = memberQualifier.layoutXfbOffset; nextOffset += memberSize; } // The above gave all block members an offset, so we can take it off the block now, // which will avoid double counting the offset usage. qualifier.layoutXfbOffset = TQualifier::layoutXfbOffsetEnd; } // Calculate and save the offset of each block member, using the recursively // defined block offset rules and the user-provided offset and align. // // Also, compute and save the total size of the block. For the block's size, arrayness // is not taken into account, as each element is backed by a separate buffer. // void HlslParseContext::fixBlockUniformOffsets(const TQualifier& qualifier, TTypeList& typeList) { if (! qualifier.isUniformOrBuffer()) return; if (qualifier.layoutPacking != ElpStd140 && qualifier.layoutPacking != ElpStd430 && qualifier.layoutPacking != ElpScalar) return; int offset = 0; int memberSize; for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; // "When align is applied to an array, it effects only the start of the array, not the array's internal stride." // modify just the children's view of matrix layout, if there is one for this member TLayoutMatrix subMatrixLayout = typeList[member].type->getQualifier().layoutMatrix; int dummyStride; int memberAlignment = intermediate.getMemberAlignment(*typeList[member].type, memberSize, dummyStride, qualifier.layoutPacking, subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor : qualifier.layoutMatrix == ElmRowMajor); if (memberQualifier.hasOffset()) { // "The specified offset must be a multiple // of the base alignment of the type of the block member it qualifies, or a compile-time error results." if (! IsMultipleOfPow2(memberQualifier.layoutOffset, memberAlignment)) error(memberLoc, "must be a multiple of the member's alignment", "offset", "(layout offset = %d | member alignment = %d)", memberQualifier.layoutOffset, memberAlignment); // "The offset qualifier forces the qualified member to start at or after the specified // integral-constant expression, which will be its byte offset from the beginning of the buffer. // "The actual offset of a member is computed as // follows: If offset was declared, start with that offset, otherwise start with the next available offset." offset = std::max(offset, memberQualifier.layoutOffset); } // "The actual alignment of a member will be the greater of the specified align alignment and the standard // (e.g., std140) base alignment for the member's type." if (memberQualifier.hasAlign()) memberAlignment = std::max(memberAlignment, memberQualifier.layoutAlign); // "If the resulting offset is not a multiple of the actual alignment, // increase it to the first offset that is a multiple of // the actual alignment." RoundToPow2(offset, memberAlignment); typeList[member].type->getQualifier().layoutOffset = offset; offset += memberSize; } } // For an identifier that is already declared, add more qualification to it. void HlslParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qualifier, const TString& identifier) { TSymbol* symbol = symbolTable.find(identifier); if (symbol == nullptr) { error(loc, "identifier not previously declared", identifier.c_str(), ""); return; } if (symbol->getAsFunction()) { error(loc, "cannot re-qualify a function name", identifier.c_str(), ""); return; } if (qualifier.isAuxiliary() || qualifier.isMemory() || qualifier.isInterpolation() || qualifier.hasLayout() || qualifier.storage != EvqTemporary || qualifier.precision != EpqNone) { error(loc, "cannot add storage, auxiliary, memory, interpolation, layout, or precision qualifier to an existing variable", identifier.c_str(), ""); return; } // For read-only built-ins, add a new symbol for holding the modified qualifier. // This will bring up an entire block, if a block type has to be modified (e.g., gl_Position inside a block) if (symbol->isReadOnly()) symbol = symbolTable.copyUp(symbol); if (qualifier.invariant) { if (intermediate.inIoAccessed(identifier)) error(loc, "cannot change qualification after use", "invariant", ""); symbol->getWritableType().getQualifier().invariant = true; } else if (qualifier.noContraction) { if (intermediate.inIoAccessed(identifier)) error(loc, "cannot change qualification after use", "precise", ""); symbol->getWritableType().getQualifier().noContraction = true; } else if (qualifier.specConstant) { symbol->getWritableType().getQualifier().makeSpecConstant(); if (qualifier.hasSpecConstantId()) symbol->getWritableType().getQualifier().layoutSpecConstantId = qualifier.layoutSpecConstantId; } else warn(loc, "unknown requalification", "", ""); } void HlslParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qualifier, TIdentifierList& identifiers) { for (unsigned int i = 0; i < identifiers.size(); ++i) addQualifierToExisting(loc, qualifier, *identifiers[i]); } // // Update the intermediate for the given input geometry // bool HlslParseContext::handleInputGeometry(const TSourceLoc& loc, const TLayoutGeometry& geometry) { // these can be declared on non-entry-points, in which case they lose their meaning if (! parsingEntrypointParameters) return true; switch (geometry) { case ElgPoints: // fall through case ElgLines: // ... case ElgTriangles: // ... case ElgLinesAdjacency: // ... case ElgTrianglesAdjacency: // ... if (! intermediate.setInputPrimitive(geometry)) { error(loc, "input primitive geometry redefinition", TQualifier::getGeometryString(geometry), ""); return false; } break; default: error(loc, "cannot apply to 'in'", TQualifier::getGeometryString(geometry), ""); return false; } return true; } // // Update the intermediate for the given output geometry // bool HlslParseContext::handleOutputGeometry(const TSourceLoc& loc, const TLayoutGeometry& geometry) { // If this is not a geometry shader, ignore. It might be a mixed shader including several stages. // Since that's an OK situation, return true for success. if (language != EShLangGeometry) return true; // these can be declared on non-entry-points, in which case they lose their meaning if (! parsingEntrypointParameters) return true; switch (geometry) { case ElgPoints: case ElgLineStrip: case ElgTriangleStrip: if (! intermediate.setOutputPrimitive(geometry)) { error(loc, "output primitive geometry redefinition", TQualifier::getGeometryString(geometry), ""); return false; } break; default: error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(geometry), ""); return false; } return true; } // // Selection attributes // void HlslParseContext::handleSelectionAttributes(const TSourceLoc& loc, TIntermSelection* selection, const TAttributes& attributes) { if (selection == nullptr) return; for (auto it = attributes.begin(); it != attributes.end(); ++it) { switch (it->name) { case EatFlatten: selection->setFlatten(); break; case EatBranch: selection->setDontFlatten(); break; default: warn(loc, "attribute does not apply to a selection", "", ""); break; } } } // // Switch attributes // void HlslParseContext::handleSwitchAttributes(const TSourceLoc& loc, TIntermSwitch* selection, const TAttributes& attributes) { if (selection == nullptr) return; for (auto it = attributes.begin(); it != attributes.end(); ++it) { switch (it->name) { case EatFlatten: selection->setFlatten(); break; case EatBranch: selection->setDontFlatten(); break; default: warn(loc, "attribute does not apply to a switch", "", ""); break; } } } // // Loop attributes // void HlslParseContext::handleLoopAttributes(const TSourceLoc& loc, TIntermLoop* loop, const TAttributes& attributes) { if (loop == nullptr) return; for (auto it = attributes.begin(); it != attributes.end(); ++it) { switch (it->name) { case EatUnroll: loop->setUnroll(); break; case EatLoop: loop->setDontUnroll(); break; default: warn(loc, "attribute does not apply to a loop", "", ""); break; } } } // // Updating default qualifier for the case of a declaration with just a qualifier, // no type, block, or identifier. // void HlslParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, const TPublicType& publicType) { if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { assert(language == EShLangTessControl || language == EShLangGeometry); // const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; } if (publicType.shaderQualifiers.invocations != TQualifier::layoutNotSet) { if (! intermediate.setInvocations(publicType.shaderQualifiers.invocations)) error(loc, "cannot change previously set layout value", "invocations", ""); } if (publicType.shaderQualifiers.geometry != ElgNone) { if (publicType.qualifier.storage == EvqVaryingIn) { switch (publicType.shaderQualifiers.geometry) { case ElgPoints: case ElgLines: case ElgLinesAdjacency: case ElgTriangles: case ElgTrianglesAdjacency: case ElgQuads: case ElgIsolines: break; default: error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); } } else if (publicType.qualifier.storage == EvqVaryingOut) { handleOutputGeometry(loc, publicType.shaderQualifiers.geometry); } else error(loc, "cannot apply to:", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), GetStorageQualifierString(publicType.qualifier.storage)); } if (publicType.shaderQualifiers.spacing != EvsNone) intermediate.setVertexSpacing(publicType.shaderQualifiers.spacing); if (publicType.shaderQualifiers.order != EvoNone) intermediate.setVertexOrder(publicType.shaderQualifiers.order); if (publicType.shaderQualifiers.pointMode) intermediate.setPointMode(); for (int i = 0; i < 3; ++i) { if (publicType.shaderQualifiers.localSize[i] > 1) { int max = 0; switch (i) { case 0: max = resources.maxComputeWorkGroupSizeX; break; case 1: max = resources.maxComputeWorkGroupSizeY; break; case 2: max = resources.maxComputeWorkGroupSizeZ; break; default: break; } if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); // Fix the existing constant gl_WorkGroupSize with this new information. TVariable* workGroupSize = getEditableVariable("gl_WorkGroupSize"); workGroupSize->getWritableConstArray()[i].setUConst(intermediate.getLocalSize(i)); } if (publicType.shaderQualifiers.localSizeSpecId[i] != TQualifier::layoutNotSet) { intermediate.setLocalSizeSpecId(i, publicType.shaderQualifiers.localSizeSpecId[i]); // Set the workgroup built-in variable as a specialization constant TVariable* workGroupSize = getEditableVariable("gl_WorkGroupSize"); workGroupSize->getWritableType().getQualifier().specConstant = true; } } if (publicType.shaderQualifiers.earlyFragmentTests) intermediate.setEarlyFragmentTests(); const TQualifier& qualifier = publicType.qualifier; switch (qualifier.storage) { case EvqUniform: if (qualifier.hasMatrix()) globalUniformDefaults.layoutMatrix = qualifier.layoutMatrix; if (qualifier.hasPacking()) globalUniformDefaults.layoutPacking = qualifier.layoutPacking; break; case EvqBuffer: if (qualifier.hasMatrix()) globalBufferDefaults.layoutMatrix = qualifier.layoutMatrix; if (qualifier.hasPacking()) globalBufferDefaults.layoutPacking = qualifier.layoutPacking; break; case EvqVaryingIn: break; case EvqVaryingOut: if (qualifier.hasStream()) globalOutputDefaults.layoutStream = qualifier.layoutStream; if (qualifier.hasXfbBuffer()) globalOutputDefaults.layoutXfbBuffer = qualifier.layoutXfbBuffer; if (globalOutputDefaults.hasXfbBuffer() && qualifier.hasXfbStride()) { if (! intermediate.setXfbBufferStride(globalOutputDefaults.layoutXfbBuffer, qualifier.layoutXfbStride)) error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer); } break; default: error(loc, "default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification", "", ""); return; } } // // Take the sequence of statements that has been built up since the last case/default, // put it on the list of top-level nodes for the current (inner-most) switch statement, // and follow that by the case/default we are on now. (See switch topology comment on // TIntermSwitch.) // void HlslParseContext::wrapupSwitchSubsequence(TIntermAggregate* statements, TIntermNode* branchNode) { TIntermSequence* switchSequence = switchSequenceStack.back(); if (statements) { statements->setOperator(EOpSequence); switchSequence->push_back(statements); } if (branchNode) { // check all previous cases for the same label (or both are 'default') for (unsigned int s = 0; s < switchSequence->size(); ++s) { TIntermBranch* prevBranch = (*switchSequence)[s]->getAsBranchNode(); if (prevBranch) { TIntermTyped* prevExpression = prevBranch->getExpression(); TIntermTyped* newExpression = branchNode->getAsBranchNode()->getExpression(); if (prevExpression == nullptr && newExpression == nullptr) error(branchNode->getLoc(), "duplicate label", "default", ""); else if (prevExpression != nullptr && newExpression != nullptr && prevExpression->getAsConstantUnion() && newExpression->getAsConstantUnion() && prevExpression->getAsConstantUnion()->getConstArray()[0].getIConst() == newExpression->getAsConstantUnion()->getConstArray()[0].getIConst()) error(branchNode->getLoc(), "duplicated value", "case", ""); } } switchSequence->push_back(branchNode); } } // // Turn the top-level node sequence built up of wrapupSwitchSubsequence // into a switch node. // TIntermNode* HlslParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* expression, TIntermAggregate* lastStatements, const TAttributes& attributes) { wrapupSwitchSubsequence(lastStatements, nullptr); if (expression == nullptr || (expression->getBasicType() != EbtInt && expression->getBasicType() != EbtUint) || expression->getType().isArray() || expression->getType().isMatrix() || expression->getType().isVector()) error(loc, "condition must be a scalar integer expression", "switch", ""); // If there is nothing to do, drop the switch but still execute the expression TIntermSequence* switchSequence = switchSequenceStack.back(); if (switchSequence->size() == 0) return expression; if (lastStatements == nullptr) { // emulate a break for error recovery lastStatements = intermediate.makeAggregate(intermediate.addBranch(EOpBreak, loc)); lastStatements->setOperator(EOpSequence); switchSequence->push_back(lastStatements); } TIntermAggregate* body = new TIntermAggregate(EOpSequence); body->getSequence() = *switchSequenceStack.back(); body->setLoc(loc); TIntermSwitch* switchNode = new TIntermSwitch(expression, body); switchNode->setLoc(loc); handleSwitchAttributes(loc, switchNode, attributes); return switchNode; } // Make a new symbol-table level that is made out of the members of a structure. // This should be done as an anonymous struct (name is "") so that the symbol table // finds the members with no explicit reference to a 'this' variable. void HlslParseContext::pushThisScope(const TType& thisStruct, const TVector& functionDeclarators) { // member variables TVariable& thisVariable = *new TVariable(NewPoolTString(""), thisStruct); symbolTable.pushThis(thisVariable); // member functions for (auto it = functionDeclarators.begin(); it != functionDeclarators.end(); ++it) { // member should have a prefix matching currentTypePrefix.back() // but, symbol lookup within the class scope will just use the // unprefixed name. Hence, there are two: one fully prefixed and // one with no prefix. TFunction& member = *it->function->clone(); member.removePrefix(currentTypePrefix.back()); symbolTable.insert(member); } } // Track levels of class/struct/namespace nesting with a prefix string using // the type names separated by the scoping operator. E.g., two levels // would look like: // // outer::inner // // The string is empty when at normal global level. // void HlslParseContext::pushNamespace(const TString& typeName) { // make new type prefix TString newPrefix; if (currentTypePrefix.size() > 0) newPrefix = currentTypePrefix.back(); newPrefix.append(typeName); newPrefix.append(scopeMangler); currentTypePrefix.push_back(newPrefix); } // Opposite of pushNamespace(), see above void HlslParseContext::popNamespace() { currentTypePrefix.pop_back(); } // Use the class/struct nesting string to create a global name for // a member of a class/struct. void HlslParseContext::getFullNamespaceName(TString*& name) const { if (currentTypePrefix.size() == 0) return; TString* fullName = NewPoolTString(currentTypePrefix.back().c_str()); fullName->append(*name); name = fullName; } // Helper function to add the namespace scope mangling syntax to a string. void HlslParseContext::addScopeMangler(TString& name) { name.append(scopeMangler); } // Return true if this has uniform-interface like decorations. bool HlslParseContext::hasUniform(const TQualifier& qualifier) const { return qualifier.hasUniformLayout() || qualifier.layoutPushConstant; } // Potentially not the opposite of hasUniform(), as if some characteristic is // ever used for more than one thing (e.g., uniform or input), hasUniform() should // say it exists, but clearUniform() should leave it in place. void HlslParseContext::clearUniform(TQualifier& qualifier) { qualifier.clearUniformLayout(); qualifier.layoutPushConstant = false; } // Return false if builtIn by itself doesn't force this qualifier to be an input qualifier. bool HlslParseContext::isInputBuiltIn(const TQualifier& qualifier) const { switch (qualifier.builtIn) { case EbvPosition: case EbvPointSize: return language != EShLangVertex && language != EShLangCompute && language != EShLangFragment; case EbvClipDistance: case EbvCullDistance: return language != EShLangVertex && language != EShLangCompute; case EbvFragCoord: case EbvFace: case EbvHelperInvocation: case EbvLayer: case EbvPointCoord: case EbvSampleId: case EbvSampleMask: case EbvSamplePosition: case EbvViewportIndex: return language == EShLangFragment; case EbvGlobalInvocationId: case EbvLocalInvocationIndex: case EbvLocalInvocationId: case EbvNumWorkGroups: case EbvWorkGroupId: case EbvWorkGroupSize: return language == EShLangCompute; case EbvInvocationId: return language == EShLangTessControl || language == EShLangTessEvaluation || language == EShLangGeometry; case EbvPatchVertices: return language == EShLangTessControl || language == EShLangTessEvaluation; case EbvInstanceId: case EbvInstanceIndex: case EbvVertexId: case EbvVertexIndex: return language == EShLangVertex; case EbvPrimitiveId: return language == EShLangGeometry || language == EShLangFragment || language == EShLangTessControl; case EbvTessLevelInner: case EbvTessLevelOuter: return language == EShLangTessEvaluation; case EbvTessCoord: return language == EShLangTessEvaluation; case EbvViewIndex: return language != EShLangCompute; default: return false; } } // Return true if there are decorations to preserve for input-like storage. bool HlslParseContext::hasInput(const TQualifier& qualifier) const { if (qualifier.hasAnyLocation()) return true; if (language == EShLangFragment && (qualifier.isInterpolation() || qualifier.centroid || qualifier.sample)) return true; if (language == EShLangTessEvaluation && qualifier.patch) return true; if (isInputBuiltIn(qualifier)) return true; return false; } // Return false if builtIn by itself doesn't force this qualifier to be an output qualifier. bool HlslParseContext::isOutputBuiltIn(const TQualifier& qualifier) const { switch (qualifier.builtIn) { case EbvPosition: case EbvPointSize: case EbvClipVertex: case EbvClipDistance: case EbvCullDistance: return language != EShLangFragment && language != EShLangCompute; case EbvFragDepth: case EbvFragDepthGreater: case EbvFragDepthLesser: case EbvSampleMask: return language == EShLangFragment; case EbvLayer: case EbvViewportIndex: return language == EShLangGeometry || language == EShLangVertex; case EbvPrimitiveId: return language == EShLangGeometry; case EbvTessLevelInner: case EbvTessLevelOuter: return language == EShLangTessControl; default: return false; } } // Return true if there are decorations to preserve for output-like storage. bool HlslParseContext::hasOutput(const TQualifier& qualifier) const { if (qualifier.hasAnyLocation()) return true; if (language != EShLangFragment && language != EShLangCompute && qualifier.hasXfb()) return true; if (language == EShLangTessControl && qualifier.patch) return true; if (language == EShLangGeometry && qualifier.hasStream()) return true; if (isOutputBuiltIn(qualifier)) return true; return false; } // Make the IO decorations etc. be appropriate only for an input interface. void HlslParseContext::correctInput(TQualifier& qualifier) { clearUniform(qualifier); if (language == EShLangVertex) qualifier.clearInterstage(); if (language != EShLangTessEvaluation) qualifier.patch = false; if (language != EShLangFragment) { qualifier.clearInterpolation(); qualifier.sample = false; } qualifier.clearStreamLayout(); qualifier.clearXfbLayout(); if (! isInputBuiltIn(qualifier)) qualifier.builtIn = EbvNone; } // Make the IO decorations etc. be appropriate only for an output interface. void HlslParseContext::correctOutput(TQualifier& qualifier) { clearUniform(qualifier); if (language == EShLangFragment) qualifier.clearInterstage(); if (language != EShLangGeometry) qualifier.clearStreamLayout(); if (language == EShLangFragment) qualifier.clearXfbLayout(); if (language != EShLangTessControl) qualifier.patch = false; // Fixes Test/hlsl.entry-inout.vert (SV_Position will not become a varying). if (qualifier.builtIn == EbvNone) qualifier.builtIn = qualifier.declaredBuiltIn; switch (qualifier.builtIn) { case EbvFragDepth: intermediate.setDepthReplacing(); intermediate.setDepth(EldAny); break; case EbvFragDepthGreater: intermediate.setDepthReplacing(); intermediate.setDepth(EldGreater); qualifier.builtIn = EbvFragDepth; break; case EbvFragDepthLesser: intermediate.setDepthReplacing(); intermediate.setDepth(EldLess); qualifier.builtIn = EbvFragDepth; break; default: break; } if (! isOutputBuiltIn(qualifier)) qualifier.builtIn = EbvNone; } // Make the IO decorations etc. be appropriate only for uniform type interfaces. void HlslParseContext::correctUniform(TQualifier& qualifier) { if (qualifier.declaredBuiltIn == EbvNone) qualifier.declaredBuiltIn = qualifier.builtIn; qualifier.builtIn = EbvNone; qualifier.clearInterstage(); qualifier.clearInterstageLayout(); } // Clear out all IO/Uniform stuff, so this has nothing to do with being an IO interface. void HlslParseContext::clearUniformInputOutput(TQualifier& qualifier) { clearUniform(qualifier); correctUniform(qualifier); } // Set texture return type. Returns success (not all types are valid). bool HlslParseContext::setTextureReturnType(TSampler& sampler, const TType& retType, const TSourceLoc& loc) { // Seed the output with an invalid index. We will set it to a valid one if we can. sampler.structReturnIndex = TSampler::noReturnStruct; // Arrays aren't supported. if (retType.isArray()) { error(loc, "Arrays not supported in texture template types", "", ""); return false; } // If return type is a vector, remember the vector size in the sampler, and return. if (retType.isVector() || retType.isScalar()) { sampler.vectorSize = retType.getVectorSize(); return true; } // If it wasn't a vector, it must be a struct meeting certain requirements. The requirements // are checked below: just check for struct-ness here. if (!retType.isStruct()) { error(loc, "Invalid texture template type", "", ""); return false; } // TODO: Subpass doesn't handle struct returns, due to some oddities with fn overloading. if (sampler.isSubpass()) { error(loc, "Unimplemented: structure template type in subpass input", "", ""); return false; } TTypeList* members = retType.getWritableStruct(); // Check for too many or not enough structure members. if (members->size() > 4 || members->size() == 0) { error(loc, "Invalid member count in texture template structure", "", ""); return false; } // Error checking: We must have <= 4 total components, all of the same basic type. unsigned totalComponents = 0; for (unsigned m = 0; m < members->size(); ++m) { // Check for bad member types if (!(*members)[m].type->isScalar() && !(*members)[m].type->isVector()) { error(loc, "Invalid texture template struct member type", "", ""); return false; } const unsigned memberVectorSize = (*members)[m].type->getVectorSize(); totalComponents += memberVectorSize; // too many total member components if (totalComponents > 4) { error(loc, "Too many components in texture template structure type", "", ""); return false; } // All members must be of a common basic type if ((*members)[m].type->getBasicType() != (*members)[0].type->getBasicType()) { error(loc, "Texture template structure members must same basic type", "", ""); return false; } } // If the structure in the return type already exists in the table, we'll use it. Otherwise, we'll make // a new entry. This is a linear search, but it hardly ever happens, and the list cannot be very large. for (unsigned int idx = 0; idx < textureReturnStruct.size(); ++idx) { if (textureReturnStruct[idx] == members) { sampler.structReturnIndex = idx; return true; } } // It wasn't found as an existing entry. See if we have room for a new one. if (textureReturnStruct.size() >= TSampler::structReturnSlots) { error(loc, "Texture template struct return slots exceeded", "", ""); return false; } // Insert it in the vector that tracks struct return types. sampler.structReturnIndex = unsigned(textureReturnStruct.size()); textureReturnStruct.push_back(members); // Success! return true; } // Return the sampler return type in retType. void HlslParseContext::getTextureReturnType(const TSampler& sampler, TType& retType) const { if (sampler.hasReturnStruct()) { assert(textureReturnStruct.size() >= sampler.structReturnIndex); // We land here if the texture return is a structure. TTypeList* blockStruct = textureReturnStruct[sampler.structReturnIndex]; const TType resultType(blockStruct, ""); retType.shallowCopy(resultType); } else { // We land here if the texture return is a vector or scalar. const TType resultType(sampler.type, EvqTemporary, sampler.getVectorSize()); retType.shallowCopy(resultType); } } // Return a symbol for the tessellation linkage variable of the given TBuiltInVariable type TIntermSymbol* HlslParseContext::findTessLinkageSymbol(TBuiltInVariable biType) const { const auto it = builtInTessLinkageSymbols.find(biType); if (it == builtInTessLinkageSymbols.end()) // if it wasn't declared by the user, return nullptr return nullptr; return intermediate.addSymbol(*it->second->getAsVariable()); } // Find the patch constant function (issues error, returns nullptr if not found) const TFunction* HlslParseContext::findPatchConstantFunction(const TSourceLoc& loc) { if (symbolTable.isFunctionNameVariable(patchConstantFunctionName)) { error(loc, "can't use variable in patch constant function", patchConstantFunctionName.c_str(), ""); return nullptr; } const TString mangledName = patchConstantFunctionName + "("; // create list of PCF candidates TVector candidateList; bool builtIn; symbolTable.findFunctionNameList(mangledName, candidateList, builtIn); // We have to have one and only one, or we don't know which to pick: the patchconstantfunc does not // allow any disambiguation of overloads. if (candidateList.empty()) { error(loc, "patch constant function not found", patchConstantFunctionName.c_str(), ""); return nullptr; } // Based on directed experiments, it appears that if there are overloaded patchconstantfunctions, // HLSL picks the last one in shader source order. Since that isn't yet implemented here, error // out if there is more than one candidate. if (candidateList.size() > 1) { error(loc, "ambiguous patch constant function", patchConstantFunctionName.c_str(), ""); return nullptr; } return candidateList[0]; } // Finalization step: Add patch constant function invocation void HlslParseContext::addPatchConstantInvocation() { TSourceLoc loc; loc.init(); // If there's no patch constant function, or we're not a HS, do nothing. if (patchConstantFunctionName.empty() || language != EShLangTessControl) return; // Look for built-in variables in a function's parameter list. const auto findBuiltIns = [&](const TFunction& function, std::set& builtIns) { for (int p=0; pgetQualifier().storage; if (storage == EvqConstReadOnly) // treated identically to input storage = EvqIn; if (function[p].getDeclaredBuiltIn() != EbvNone) builtIns.insert(HlslParseContext::tInterstageIoData(function[p].getDeclaredBuiltIn(), storage)); else builtIns.insert(HlslParseContext::tInterstageIoData(function[p].type->getQualifier().builtIn, storage)); } }; // If we synthesize a built-in interface variable, we must add it to the linkage. const auto addToLinkage = [&](const TType& type, const TString* name, TIntermSymbol** symbolNode) { if (name == nullptr) { error(loc, "unable to locate patch function parameter name", "", ""); return; } else { TVariable& variable = *new TVariable(name, type); if (! symbolTable.insert(variable)) { error(loc, "unable to declare patch constant function interface variable", name->c_str(), ""); return; } globalQualifierFix(loc, variable.getWritableType().getQualifier()); if (symbolNode != nullptr) *symbolNode = intermediate.addSymbol(variable); trackLinkage(variable); } }; const auto isOutputPatch = [](TFunction& patchConstantFunction, int param) { const TType& type = *patchConstantFunction[param].type; const TBuiltInVariable biType = patchConstantFunction[param].getDeclaredBuiltIn(); return type.isSizedArray() && biType == EbvOutputPatch; }; // We will perform these steps. Each is in a scoped block for separation: they could // become separate functions to make addPatchConstantInvocation shorter. // // 1. Union the interfaces, and create built-ins for anything present in the PCF and // declared as a built-in variable that isn't present in the entry point's signature. // // 2. Synthesizes a call to the patchconstfunction using built-in variables from either main, // or the ones we created. Matching is based on built-in type. We may use synthesized // variables from (1) above. // // 2B: Synthesize per control point invocations of wrapped entry point if the PCF requires them. // // 3. Create a return sequence: copy the return value (if any) from the PCF to a // (non-sanitized) output variable. In case this may involve multiple copies, such as for // an arrayed variable, a temporary copy of the PCF output is created to avoid multiple // indirections into a complex R-value coming from the call to the PCF. // // 4. Create a barrier. // // 5/5B. Call the PCF inside an if test for (invocation id == 0). TFunction* patchConstantFunctionPtr = const_cast(findPatchConstantFunction(loc)); if (patchConstantFunctionPtr == nullptr) return; TFunction& patchConstantFunction = *patchConstantFunctionPtr; const int pcfParamCount = patchConstantFunction.getParamCount(); TIntermSymbol* invocationIdSym = findTessLinkageSymbol(EbvInvocationId); TIntermSequence& epBodySeq = entryPointFunctionBody->getAsAggregate()->getSequence(); int outPatchParam = -1; // -1 means there isn't one. // ================ Step 1A: Union Interfaces ================ // Our patch constant function. { std::set pcfBuiltIns; // patch constant function built-ins std::set epfBuiltIns; // entry point function built-ins assert(entryPointFunction); assert(entryPointFunctionBody); findBuiltIns(patchConstantFunction, pcfBuiltIns); findBuiltIns(*entryPointFunction, epfBuiltIns); // Find the set of built-ins in the PCF that are not present in the entry point. std::set notInEntryPoint; notInEntryPoint = pcfBuiltIns; // std::set_difference not usable on unordered containers for (auto bi = epfBuiltIns.begin(); bi != epfBuiltIns.end(); ++bi) notInEntryPoint.erase(*bi); // Now we'll add those to the entry and to the linkage. for (int p=0; pgetQualifier().storage; // Track whether there is an output patch param if (isOutputPatch(patchConstantFunction, p)) { if (outPatchParam >= 0) { // Presently we only support one per ctrl pt input. error(loc, "unimplemented: multiple output patches in patch constant function", "", ""); return; } outPatchParam = p; } if (biType != EbvNone) { TType* paramType = patchConstantFunction[p].type->clone(); if (storage == EvqConstReadOnly) // treated identically to input storage = EvqIn; // Presently, the only non-built-in we support is InputPatch, which is treated as // a pseudo-built-in. if (biType == EbvInputPatch) { builtInTessLinkageSymbols[biType] = inputPatch; } else if (biType == EbvOutputPatch) { // Nothing... } else { // Use the original declaration type for the linkage paramType->getQualifier().builtIn = biType; if (biType == EbvTessLevelInner || biType == EbvTessLevelOuter) paramType->getQualifier().patch = true; if (notInEntryPoint.count(tInterstageIoData(biType, storage)) == 1) addToLinkage(*paramType, patchConstantFunction[p].name, nullptr); } } } // If we didn't find it because the shader made one, add our own. if (invocationIdSym == nullptr) { TType invocationIdType(EbtUint, EvqIn, 1); TString* invocationIdName = NewPoolTString("InvocationId"); invocationIdType.getQualifier().builtIn = EbvInvocationId; addToLinkage(invocationIdType, invocationIdName, &invocationIdSym); } assert(invocationIdSym); } TIntermTyped* pcfArguments = nullptr; TVariable* perCtrlPtVar = nullptr; // ================ Step 1B: Argument synthesis ================ // Create pcfArguments for synthesis of patchconstantfunction invocation { for (int p=0; pgetWritableType().getQualifier().makeTemporary(); } inputArg = intermediate.addSymbol(*perCtrlPtVar, loc); } else { // find which built-in it is const TBuiltInVariable biType = patchConstantFunction[p].getDeclaredBuiltIn(); if (biType == EbvInputPatch && inputPatch == nullptr) { error(loc, "unimplemented: PCF input patch without entry point input patch parameter", "", ""); return; } inputArg = findTessLinkageSymbol(biType); if (inputArg == nullptr) { error(loc, "unable to find patch constant function built-in variable", "", ""); return; } } if (pcfParamCount == 1) pcfArguments = inputArg; else pcfArguments = intermediate.growAggregate(pcfArguments, inputArg); } } // ================ Step 2: Synthesize call to PCF ================ TIntermAggregate* pcfCallSequence = nullptr; TIntermTyped* pcfCall = nullptr; { // Create a function call to the patchconstantfunction if (pcfArguments) addInputArgumentConversions(patchConstantFunction, pcfArguments); // Synthetic call. pcfCall = intermediate.setAggregateOperator(pcfArguments, EOpFunctionCall, patchConstantFunction.getType(), loc); pcfCall->getAsAggregate()->setUserDefined(); pcfCall->getAsAggregate()->setName(patchConstantFunction.getMangledName()); intermediate.addToCallGraph(infoSink, intermediate.getEntryPointMangledName().c_str(), patchConstantFunction.getMangledName()); if (pcfCall->getAsAggregate()) { TQualifierList& qualifierList = pcfCall->getAsAggregate()->getQualifierList(); for (int i = 0; i < patchConstantFunction.getParamCount(); ++i) { TStorageQualifier qual = patchConstantFunction[i].type->getQualifier().storage; qualifierList.push_back(qual); } pcfCall = addOutputArgumentConversions(patchConstantFunction, *pcfCall->getAsOperator()); } } // ================ Step 2B: Per Control Point synthesis ================ // If there is per control point data, we must either emulate that with multiple // invocations of the entry point to build up an array, or (TODO:) use a yet // unavailable extension to look across the SIMD lanes. This is the former // as a placeholder for the latter. if (outPatchParam >= 0) { // We must introduce a local temp variable of the type wanted by the PCF input. const int arraySize = patchConstantFunction[outPatchParam].type->getOuterArraySize(); if (entryPointFunction->getType().getBasicType() == EbtVoid) { error(loc, "entry point must return a value for use with patch constant function", "", ""); return; } // Create calls to wrapped main to fill in the array. We will substitute fixed values // of invocation ID when calling the wrapped main. // This is the type of the each member of the per ctrl point array. const TType derefType(perCtrlPtVar->getType(), 0); for (int cpt = 0; cpt < arraySize; ++cpt) { // TODO: improve. substr(1) here is to avoid the '@' that was grafted on but isn't in the symtab // for this function. const TString origName = entryPointFunction->getName().substr(1); TFunction callee(&origName, TType(EbtVoid)); TIntermTyped* callingArgs = nullptr; for (int i = 0; i < entryPointFunction->getParamCount(); i++) { TParameter& param = (*entryPointFunction)[i]; TType& paramType = *param.type; if (paramType.getQualifier().isParamOutput()) { error(loc, "unimplemented: entry point outputs in patch constant function invocation", "", ""); return; } if (paramType.getQualifier().isParamInput()) { TIntermTyped* arg = nullptr; if ((*entryPointFunction)[i].getDeclaredBuiltIn() == EbvInvocationId) { // substitute invocation ID with the array element ID arg = intermediate.addConstantUnion(cpt, loc); } else { TVariable* argVar = makeInternalVariable(*param.name, *param.type); argVar->getWritableType().getQualifier().makeTemporary(); arg = intermediate.addSymbol(*argVar); } handleFunctionArgument(&callee, callingArgs, arg); } } // Call and assign to per ctrl point variable currentCaller = intermediate.getEntryPointMangledName().c_str(); TIntermTyped* callReturn = handleFunctionCall(loc, &callee, callingArgs); TIntermTyped* index = intermediate.addConstantUnion(cpt, loc); TIntermSymbol* perCtrlPtSym = intermediate.addSymbol(*perCtrlPtVar, loc); TIntermTyped* element = intermediate.addIndex(EOpIndexDirect, perCtrlPtSym, index, loc); element->setType(derefType); element->setLoc(loc); pcfCallSequence = intermediate.growAggregate(pcfCallSequence, handleAssign(loc, EOpAssign, element, callReturn)); } } // ================ Step 3: Create return Sequence ================ // Return sequence: copy PCF result to a temporary, then to shader output variable. if (pcfCall->getBasicType() != EbtVoid) { const TType* retType = &patchConstantFunction.getType(); // return type from the PCF TType outType; // output type that goes with the return type. outType.shallowCopy(*retType); // substitute the output type const auto newLists = ioTypeMap.find(retType->getStruct()); if (newLists != ioTypeMap.end()) outType.setStruct(newLists->second.output); // Substitute the top level type's built-in type if (patchConstantFunction.getDeclaredBuiltInType() != EbvNone) outType.getQualifier().builtIn = patchConstantFunction.getDeclaredBuiltInType(); outType.getQualifier().patch = true; // make it a per-patch variable TVariable* pcfOutput = makeInternalVariable("@patchConstantOutput", outType); pcfOutput->getWritableType().getQualifier().storage = EvqVaryingOut; if (pcfOutput->getType().isStruct()) flatten(*pcfOutput, false); assignToInterface(*pcfOutput); TIntermSymbol* pcfOutputSym = intermediate.addSymbol(*pcfOutput, loc); // The call to the PCF is a complex R-value: we want to store it in a temp to avoid // repeated calls to the PCF: TVariable* pcfCallResult = makeInternalVariable("@patchConstantResult", *retType); pcfCallResult->getWritableType().getQualifier().makeTemporary(); TIntermSymbol* pcfResultVar = intermediate.addSymbol(*pcfCallResult, loc); TIntermNode* pcfResultAssign = handleAssign(loc, EOpAssign, pcfResultVar, pcfCall); TIntermNode* pcfResultToOut = handleAssign(loc, EOpAssign, pcfOutputSym, intermediate.addSymbol(*pcfCallResult, loc)); pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfResultAssign); pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfResultToOut); } else { pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfCall); } // ================ Step 4: Barrier ================ TIntermTyped* barrier = new TIntermAggregate(EOpBarrier); barrier->setLoc(loc); barrier->setType(TType(EbtVoid)); epBodySeq.insert(epBodySeq.end(), barrier); // ================ Step 5: Test on invocation ID ================ TIntermTyped* zero = intermediate.addConstantUnion(0, loc, true); TIntermTyped* cmp = intermediate.addBinaryNode(EOpEqual, invocationIdSym, zero, loc, TType(EbtBool)); // ================ Step 5B: Create if statement on Invocation ID == 0 ================ intermediate.setAggregateOperator(pcfCallSequence, EOpSequence, TType(EbtVoid), loc); TIntermTyped* invocationIdTest = new TIntermSelection(cmp, pcfCallSequence, nullptr); invocationIdTest->setLoc(loc); // add our test sequence before the return. epBodySeq.insert(epBodySeq.end(), invocationIdTest); } // Finalization step: remove unused buffer blocks from linkage (we don't know until the // shader is entirely compiled). // Preserve order of remaining symbols. void HlslParseContext::removeUnusedStructBufferCounters() { const auto endIt = std::remove_if(linkageSymbols.begin(), linkageSymbols.end(), [this](const TSymbol* sym) { const auto sbcIt = structBufferCounter.find(sym->getName()); return sbcIt != structBufferCounter.end() && !sbcIt->second; }); linkageSymbols.erase(endIt, linkageSymbols.end()); } // Finalization step: patch texture shadow modes to match samplers they were combined with void HlslParseContext::fixTextureShadowModes() { for (auto symbol = linkageSymbols.begin(); symbol != linkageSymbols.end(); ++symbol) { TSampler& sampler = (*symbol)->getWritableType().getSampler(); if (sampler.isTexture()) { const auto shadowMode = textureShadowVariant.find((*symbol)->getUniqueId()); if (shadowMode != textureShadowVariant.end()) { if (shadowMode->second->overloaded()) // Texture needs legalization if it's been seen with both shadow and non-shadow modes. intermediate.setNeedsLegalization(); sampler.shadow = shadowMode->second->isShadowId((*symbol)->getUniqueId()); } } } } // Finalization step: patch append methods to use proper stream output, which isn't known until // main is parsed, which could happen after the append method is parsed. void HlslParseContext::finalizeAppendMethods() { TSourceLoc loc; loc.init(); // Nothing to do: bypass test for valid stream output. if (gsAppends.empty()) return; if (gsStreamOutput == nullptr) { error(loc, "unable to find output symbol for Append()", "", ""); return; } // Patch append sequences, now that we know the stream output symbol. for (auto append = gsAppends.begin(); append != gsAppends.end(); ++append) { append->node->getSequence()[0] = handleAssign(append->loc, EOpAssign, intermediate.addSymbol(*gsStreamOutput, append->loc), append->node->getSequence()[0]->getAsTyped()); } } // post-processing void HlslParseContext::finish() { // Error check: There was a dangling .mips operator. These are not nested constructs in the grammar, so // cannot be detected there. This is not strictly needed in a non-validating parser; it's just helpful. if (! mipsOperatorMipArg.empty()) { error(mipsOperatorMipArg.back().loc, "unterminated mips operator:", "", ""); } removeUnusedStructBufferCounters(); addPatchConstantInvocation(); fixTextureShadowModes(); finalizeAppendMethods(); // Communicate out (esp. for command line) that we formed AST that will make // illegal AST SPIR-V and it needs transforms to legalize it. if (intermediate.needsLegalization() && (messages & EShMsgHlslLegalization)) infoSink.info << "WARNING: AST will form illegal SPIR-V; need to transform to legalize"; TParseContextBase::finish(); } } // end namespace glslang glslang-16.0.0/glslang/HLSL/hlslParseHelper.h000066400000000000000000000677541506534232700207160ustar00rootroot00000000000000// // Copyright (C) 2016-2018 Google, Inc. // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef HLSL_PARSE_INCLUDED_ #define HLSL_PARSE_INCLUDED_ #include "../MachineIndependent/parseVersions.h" #include "../MachineIndependent/ParseHelper.h" #include "../MachineIndependent/attribute.h" #include namespace glslang { class TFunctionDeclarator; class HlslParseContext : public TParseContextBase { public: HlslParseContext(TSymbolTable&, TIntermediate&, bool parsingBuiltins, int version, EProfile, const SpvVersion& spvVersion, EShLanguage, TInfoSink&, const TString sourceEntryPointName, bool forwardCompatible = false, EShMessages messages = EShMsgDefault); virtual ~HlslParseContext(); void initializeExtensionBehavior() override; void setLimits(const TBuiltInResource&) override; bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false) override; virtual const char* getGlobalUniformBlockName() const override { return "$Global"; } virtual void setUniformBlockDefaults(TType& block) const override { block.getQualifier().layoutPacking = globalUniformDefaults.layoutPacking; block.getQualifier().layoutMatrix = globalUniformDefaults.layoutMatrix; } void reservedPpErrorCheck(const TSourceLoc&, const char* /*name*/, const char* /*op*/) override { } bool lineContinuationCheck(const TSourceLoc&, bool /*endOfComment*/) override { return true; } bool lineDirectiveShouldSetNextLine() const override { return true; } bool builtInName(const TString&); void handlePragma(const TSourceLoc&, const TVector&) override; TIntermTyped* handleVariable(const TSourceLoc&, const TString* string); TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); TIntermTyped* handleBracketOperator(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right); TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode); TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field); bool isBuiltInMethod(const TSourceLoc&, TIntermTyped* base, const TString& field); void assignToInterface(TVariable& variable); void handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype); TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&, const TAttributes&, TIntermNode*& entryPointTree); TIntermNode* transformEntryPoint(const TSourceLoc&, TFunction&, const TAttributes&); void handleEntryPointAttributes(const TSourceLoc&, const TAttributes&); void transferTypeAttributes(const TSourceLoc&, const TAttributes&, TType&, bool allowEntry = false); void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node); void remapEntryPointIO(TFunction& function, TVariable*& returnValue, TVector& inputs, TVector& 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); TIntermTyped* handleAssignToMatrixSwizzle(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right); 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); void decomposeGeometryMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); void pushFrontArguments(TIntermTyped* front, TIntermTyped*& arguments); void addInputArgumentConversions(const TFunction&, TIntermTyped*&); void expandArguments(const TSourceLoc&, const TFunction&, TIntermTyped*&); TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermOperator&); void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&); TFunction* makeConstructorCall(const TSourceLoc&, const TType&); void handleSemantic(TSourceLoc, TQualifier&, TBuiltInVariable, const TString& upperCase); void handlePackOffset(const TSourceLoc&, TQualifier&, const glslang::TString& location, const glslang::TString* component); void handleRegister(const TSourceLoc&, TQualifier&, const glslang::TString* profile, const glslang::TString& desc, int subComponent, const glslang::TString*); TIntermTyped* convertConditionalExpression(const TSourceLoc&, TIntermTyped*, bool mustBeScalar = true); TIntermAggregate* handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler); bool parseMatrixSwizzleSelector(const TSourceLoc&, const TString&, int cols, int rows, TSwizzleSelectors&); int getMatrixComponentsColumn(int rows, const TSwizzleSelectors&); void assignError(const TSourceLoc&, const char* op, TString left, TString right); void unaryOpError(const TSourceLoc&, const char* op, TString operand); void binaryOpError(const TSourceLoc&, const char* op, TString left, TString right); void variableCheck(TIntermTyped*& nodePtr); void constantValueCheck(TIntermTyped* node, const char* token); void integerCheck(const TIntermTyped* node, const char* token); void globalCheck(const TSourceLoc&, const char* token); bool constructorError(const TSourceLoc&, TIntermNode*, TFunction&, TOperator, TType&); void arraySizeCheck(const TSourceLoc&, TIntermTyped* expr, TArraySize&); void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&); void structArrayCheck(const TSourceLoc&, const TType& structure); bool voidErrorCheck(const TSourceLoc&, const TString&, TBasicType); void globalQualifierFix(const TSourceLoc&, TQualifier&); bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType); void mergeQualifiers(TQualifier& dst, const TQualifier& src); int computeSamplerTypeIndex(TSampler&); TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&); void paramFix(TType& type); void specializationCheck(const TSourceLoc&, const TType&, const char* op); void setLayoutQualifier(const TSourceLoc&, TQualifier&, TString&); void setLayoutQualifier(const TSourceLoc&, TQualifier&, TString&, const TIntermTyped*); void setSpecConstantId(const TSourceLoc&, TQualifier&, int value); void mergeObjectLayoutQualifiers(TQualifier& dest, const TQualifier& src, bool inheritOnly); void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&); const TFunction* findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn, int& thisDepth, TIntermTyped*& args); void addGenMulArgumentConversion(const TSourceLoc& loc, TFunction& call, TIntermTyped*& args); void declareTypedef(const TSourceLoc&, const TString& identifier, const TType&); void declareStruct(const TSourceLoc&, TString& structName, TType&); TSymbol* lookupUserType(const TString&, TType&); TIntermNode* declareVariable(const TSourceLoc&, const TString& identifier, TType&, TIntermTyped* initializer = nullptr); void lengthenList(const TSourceLoc&, TIntermSequence& list, int size, TIntermTyped* scalarInit); TIntermTyped* handleConstructor(const TSourceLoc&, TIntermTyped*, const TType&); TIntermTyped* addConstructor(const TSourceLoc&, TIntermTyped*, const TType&); TIntermTyped* convertArray(TIntermTyped*, const TType&); TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); void declareBlock(const TSourceLoc&, TType&, const TString* instanceName = nullptr); void declareStructBufferCounter(const TSourceLoc& loc, const TType& bufferType, const TString& name); void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation); void fixXfbOffsets(TQualifier&, TTypeList&); void fixBlockUniformOffsets(const TQualifier&, TTypeList&); void addQualifierToExisting(const TSourceLoc&, TQualifier, const TString& identifier); void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&); void updateStandaloneQualifierDefaults(const TSourceLoc&, const TPublicType&); void wrapupSwitchSubsequence(TIntermAggregate* statements, TIntermNode* branchNode); TIntermNode* addSwitch(const TSourceLoc&, TIntermTyped* expression, TIntermAggregate* body, const TAttributes&); void nestLooping() { ++loopNestingLevel; } void unnestLooping() { --loopNestingLevel; } void nestAnnotations() { ++annotationNestingLevel; } void unnestAnnotations() { --annotationNestingLevel; } int getAnnotationNestingLevel() { return annotationNestingLevel; } void pushScope() { symbolTable.push(); } void popScope() { symbolTable.pop(nullptr); } void pushThisScope(const TType&, const TVector&); void popThisScope() { symbolTable.pop(nullptr); } void pushImplicitThis(TVariable* thisParameter) { implicitThisStack.push_back(thisParameter); } void popImplicitThis() { implicitThisStack.pop_back(); } TVariable* getImplicitThis(int thisDepth) const { return implicitThisStack[implicitThisStack.size() - thisDepth]; } void pushNamespace(const TString& name); void popNamespace(); void getFullNamespaceName(TString*&) const; void addScopeMangler(TString&); void beginParameterParsing(TFunction& function) { parsingEntrypointParameters = isEntrypointName(function.getName()); } void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); } void popSwitchSequence() { switchSequenceStack.pop_back(); } virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override; // Apply L-value conversions. E.g, turning a write to a RWTexture into an ImageStore. TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped*& node); bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; TLayoutFormat getLayoutFromTxType(const TSourceLoc&, const TType&); bool handleOutputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry); bool handleInputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry); // Determine selection control from attributes void handleSelectionAttributes(const TSourceLoc& loc, TIntermSelection*, const TAttributes& attributes); void handleSwitchAttributes(const TSourceLoc& loc, TIntermSwitch*, const TAttributes& attributes); // Determine loop control from attributes void handleLoopAttributes(const TSourceLoc& loc, TIntermLoop*, const TAttributes& attributes); // Share struct buffer deep types void shareStructBufferType(TType&); // Set texture return type of the given sampler. Returns success (not all types are valid). bool setTextureReturnType(TSampler& sampler, const TType& retType, const TSourceLoc& loc); // Obtain the sampler return type of the given sampler in retType. void getTextureReturnType(const TSampler& sampler, TType& retType) const; TAttributeType attributeFromName(const TString& nameSpace, const TString& name) const; protected: struct TFlattenData { TFlattenData() : nextBinding(TQualifier::layoutBindingEnd), nextLocation(TQualifier::layoutLocationEnd) { } TFlattenData(int nb, int nl) : nextBinding(nb), nextLocation(nl) { } TVector members; // individual flattened variables TVector offsets; // offset to next tree level unsigned int nextBinding; // next binding to use. unsigned int nextLocation; // next location to use }; void fixConstInit(const TSourceLoc&, const TString& identifier, TType& type, TIntermTyped*& initializer); void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; TVariable* makeInternalVariable(const TString& name, const TType& type) const { return makeInternalVariable(name.c_str(), type); } 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*); TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage); bool isEntrypointName(const TString& name) { return name.compare(intermediate.getEntryPointName().c_str()) == 0; } // Return true if this node requires L-value conversion (e.g, to an imageStore). bool shouldConvertLValue(const TIntermNode*) const; // Array and struct flattening TIntermTyped* flattenAccess(TIntermTyped* base, int member); TIntermTyped* flattenAccess(long long uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1); int findSubtreeOffset(const TIntermNode&) const; int findSubtreeOffset(const TType&, int subset, const TVector& offsets) const; bool shouldFlatten(const TType&, TStorageQualifier, bool topLevel) const; bool wasFlattened(const TIntermTyped* node) const; bool wasFlattened(long long id) const { return flattenMap.find(id) != flattenMap.end(); } int addFlattenedMember(const TVariable&, const TType&, TFlattenData&, const TString& name, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes); // Structure splitting (splits interstage built-in types into its own struct) void split(const TVariable&); void splitBuiltIn(const TString& baseName, const TType& memberType, const TArraySizes*, const TQualifier&); const TType& split(const TType& type, const TString& name, const TQualifier&); bool wasSplit(const TIntermTyped* node) const; bool wasSplit(long long id) const { return splitNonIoVars.find(id) != splitNonIoVars.end(); } TVariable* getSplitNonIoVar(long long id) const; void addPatchConstantInvocation(); void fixTextureShadowModes(); void finalizeAppendMethods(); TIntermTyped* makeIntegerIndex(TIntermTyped*); void fixBuiltInIoType(TType&); void flatten(const TVariable& variable, bool linkage, bool arrayed = false); int flatten(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes); int flattenStruct(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes); int flattenArray(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage, const TQualifier& outerQualifier); bool hasUniform(const TQualifier& qualifier) const; void clearUniform(TQualifier& qualifier); bool isInputBuiltIn(const TQualifier& qualifier) const; bool hasInput(const TQualifier& qualifier) const; void correctOutput(TQualifier& qualifier); bool isOutputBuiltIn(const TQualifier& qualifier) const; bool hasOutput(const TQualifier& qualifier) const; void correctInput(TQualifier& qualifier); void correctUniform(TQualifier& qualifier); void clearUniformInputOutput(TQualifier& qualifier); // Test method names bool isStructBufferMethod(const TString& name) const; void counterBufferType(const TSourceLoc& loc, TType& type); // Return standard sample position array TIntermConstantUnion* getSamplePosArray(int count); TType* getStructBufferContentType(const TType& type) const; bool isStructBufferType(const TType& type) const { return getStructBufferContentType(type) != nullptr; } TIntermTyped* indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const; TIntermTyped* getStructBufferCounter(const TSourceLoc& loc, TIntermTyped* buffer); TString getStructBuffCounterName(const TString&) const; void addStructBuffArguments(const TSourceLoc& loc, TIntermAggregate*&); void addStructBufferHiddenCounterParam(const TSourceLoc& loc, TParameter&, TIntermAggregate*&); // Return true if this type is a reference. This is not currently a type method in case that's // a language specific answer. bool isReference(const TType& type) const { return isStructBufferType(type); } // Return true if this a buffer type that has an associated counter buffer. bool hasStructBuffCounter(const TType&) const; // Finalization step: remove unused buffer blocks from linkage (we don't know until the // shader is entirely compiled) void removeUnusedStructBufferCounters(); static bool isClipOrCullDistance(TBuiltInVariable); static bool isClipOrCullDistance(const TQualifier& qual) { return isClipOrCullDistance(qual.builtIn); } static bool isClipOrCullDistance(const TType& type) { return isClipOrCullDistance(type.getQualifier()); } // Find the patch constant function (issues error, returns nullptr if not found) const TFunction* findPatchConstantFunction(const TSourceLoc& loc); // Pass through to base class after remembering built-in mappings. using TParseContextBase::trackLinkage; void trackLinkage(TSymbol& variable) override; void finish() override; // post-processing // Linkage symbol helpers TIntermSymbol* findTessLinkageSymbol(TBuiltInVariable biType) const; // Current state of parsing int annotationNestingLevel; // 0 if outside all annotations HlslParseContext(HlslParseContext&); HlslParseContext& operator=(HlslParseContext&); static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2)); // see computeSamplerTypeIndex() TQualifier globalBufferDefaults; TQualifier globalUniformDefaults; TQualifier globalInputDefaults; TQualifier globalOutputDefaults; TString currentCaller; // name of last function body entered (not valid when at global scope) TIdSetType inductiveLoopIds; TVector needsIndexLimitationChecking; // // Geometry shader input arrays: // - array sizing is based on input primitive and/or explicit size // // Tessellation control output arrays: // - array sizing is based on output layout(vertices=...) and/or explicit size // // Both: // - array sizing is retroactive // - built-in block redeclarations interact with this // // Design: // - use a per-context "resize-list", a list of symbols whose array sizes // can be fixed // // - the resize-list starts empty at beginning of user-shader compilation, it does // not have built-ins in it // // - on built-in array use: copyUp() symbol and add it to the resize-list // // - on user array declaration: add it to the resize-list // // - on block redeclaration: copyUp() symbol and add it to the resize-list // * note, that appropriately gives an error if redeclaring a block that // was already used and hence already copied-up // // - on seeing a layout declaration that sizes the array, fix everything in the // resize-list, giving errors for mismatch // // - on seeing an array size declaration, give errors on mismatch between it and previous // array-sizing declarations // TVector ioArraySymbolResizeList; TMap flattenMap; // IO-type map. Maps a pure symbol-table form of a structure-member list into // each of the (up to) three kinds of IO, as each as different allowed decorations, // but HLSL allows mixing all in the same structure. struct tIoKinds { TTypeList* input; TTypeList* output; TTypeList* uniform; }; TMap ioTypeMap; // Structure splitting data: TMap splitNonIoVars; // variables with the built-in interstage IO removed, indexed by unique ID. // Structuredbuffer shared types. Typically there are only a few. TVector structBufferTypes; // This tracks texture sample user structure return types. Only a limited number are supported, as // may fit in TSampler::structReturnIndex. TVector textureReturnStruct; TMap structBufferCounter; // true if counter buffer is in use // The built-in interstage IO map considers e.g, EvqPosition on input and output separately, so that we // can build the linkage correctly if position appears on both sides. Otherwise, multiple positions // are considered identical. struct tInterstageIoData { tInterstageIoData(TBuiltInVariable bi, TStorageQualifier q) : builtIn(bi), storage(q) { } TBuiltInVariable builtIn; TStorageQualifier storage; // ordering for maps bool operator<(const tInterstageIoData d) const { return (builtIn != d.builtIn) ? (builtIn < d.builtIn) : (storage < d.storage); } }; TMap splitBuiltIns; // split built-ins, indexed by built-in type. TVariable* inputPatch; // input patch is special for PCF: it's the only non-builtin PCF input, // and is handled as a pseudo-builtin. unsigned int nextInLocation; unsigned int nextOutLocation; TFunction* entryPointFunction; TIntermNode* entryPointFunctionBody; TString patchConstantFunctionName; // hull shader patch constant function name, from function level attribute. TMap builtInTessLinkageSymbols; // used for tessellation, finding declared built-ins TVector currentTypePrefix; // current scoping prefix for nested structures TVector implicitThisStack; // currently active 'this' variables for nested structures TVariable* gsStreamOutput; // geometry shader stream outputs, for emit (Append method) TVariable* clipDistanceOutput; // synthesized clip distance out variable (shader might have >1) TVariable* cullDistanceOutput; // synthesized cull distance out variable (shader might have >1) TVariable* clipDistanceInput; // synthesized clip distance in variable (shader might have >1) TVariable* cullDistanceInput; // synthesized cull distance in variable (shader might have >1) static const int maxClipCullRegs = 2; std::array clipSemanticNSizeIn; // vector, indexed by clip semantic ID std::array cullSemanticNSizeIn; // vector, indexed by cull semantic ID std::array clipSemanticNSizeOut; // vector, indexed by clip semantic ID std::array cullSemanticNSizeOut; // vector, indexed by cull semantic ID // This tracks the first (mip level) argument to the .mips[][] operator. Since this can be nested as // in tx.mips[tx.mips[0][1].x][2], we need a stack. We also track the TSourceLoc for error reporting // purposes. struct tMipsOperatorData { tMipsOperatorData(TSourceLoc l, TIntermTyped* m) : loc(l), mipLevel(m) { } TSourceLoc loc; TIntermTyped* mipLevel; }; TVector mipsOperatorMipArg; // The geometry output stream is not copied out from the entry point as a typical output variable // is. It's written via EmitVertex (hlsl=Append), which may happen in arbitrary control flow. // For this we need the real output symbol. Since it may not be known at the time and Append() // method is parsed, the sequence will be patched during finalization. struct tGsAppendData { TIntermAggregate* node; TSourceLoc loc; }; TVector gsAppends; // A texture object may be used with shadow and non-shadow samplers, but both may not be // alive post-DCE in the same shader. We do not know at compilation time which are alive: that's // only known post-DCE. If a texture is used both ways, we create two textures, and // leave the elimiation of one to the optimizer. This maps the shader variant to // the shadow variant. // // This can be removed if and when the texture shadow code in // HlslParseContext::handleSamplerTextureCombine is removed. struct tShadowTextureSymbols { tShadowTextureSymbols() { symId.fill(-1); } void set(bool shadow, long long id) { symId[int(shadow)] = id; } long long get(bool shadow) const { return symId[int(shadow)]; } // True if this texture has been seen with both shadow and non-shadow modes bool overloaded() const { return symId[0] != -1 && symId[1] != -1; } bool isShadowId(long long id) const { return symId[1] == id; } private: std::array symId; }; TMap textureShadowVariant; bool parsingEntrypointParameters; }; // This is the prefix we use for built-in methods to avoid namespace collisions with // global scope user functions. // TODO: this would be better as a nonparseable character, but that would // require changing the scanner. #define BUILTIN_PREFIX "__BI_" } // end namespace glslang #endif // HLSL_PARSE_INCLUDED_ glslang-16.0.0/glslang/HLSL/hlslParseables.cpp000066400000000000000000002503421506534232700211030ustar00rootroot00000000000000// // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Create strings that declare built-in definitions, add built-ins programmatically // that cannot be expressed in the strings, and establish mappings between // built-in functions and operators. // // Where to put a built-in: // TBuiltInParseablesHlsl::initialize(version,profile) context-independent textual built-ins; add them to the right string // TBuiltInParseablesHlsl::initialize(resources,...) context-dependent textual built-ins; add them to the right string // TBuiltInParseablesHlsl::identifyBuiltIns(...,symbolTable) context-independent programmatic additions/mappings to the symbol table, // including identifying what extensions are needed if a version does not allow a symbol // TBuiltInParseablesHlsl::identifyBuiltIns(...,symbolTable, resources) context-dependent programmatic additions/mappings to the // symbol table, including identifying what extensions are needed if a version does // not allow a symbol // #include "hlslParseables.h" #include "hlslParseHelper.h" #include #include #include namespace { // anonymous namespace functions // arg order queries bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; } bool IsArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&' || argOrder == '#'; } bool IsTextureNonMS(const char argOrder) { return argOrder == '%'; } bool IsSubpassInput(const char argOrder) { return argOrder == '[' || argOrder == ']'; } bool IsArrayedTexture(const char argOrder) { return argOrder == '@'; } bool IsTextureMS(const char argOrder) { return argOrder == '$' || argOrder == '&'; } bool IsMS(const char argOrder) { return IsTextureMS(argOrder) || argOrder == ']'; } bool IsBuffer(const char argOrder) { return argOrder == '*' || argOrder == '~'; } bool IsImage(const char argOrder) { return argOrder == '!' || argOrder == '#' || argOrder == '~'; } bool IsTextureType(const char argOrder) { return IsTextureNonMS(argOrder) || IsArrayedTexture(argOrder) || IsTextureMS(argOrder) || IsBuffer(argOrder) || IsImage(argOrder); } // Reject certain combinations that are illegal sample methods. For example, // 3D arrays. bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim0) { const bool isArrayed = IsArrayed(*argOrder); const bool isMS = IsTextureMS(*argOrder); const bool isBuffer = IsBuffer(*argOrder); // there are no 3D arrayed textures, or 3D SampleCmp(LevelZero) if (dim0 == 3 && (isArrayed || name == "SampleCmp" || name == "SampleCmpLevelZero")) return true; const int numArgs = int(std::count(argOrder, argOrder + strlen(argOrder), ',')) + 1; // Reject invalid offset forms with cubemaps if (dim0 == 4) { if ((name == "Sample" && numArgs >= 4) || (name == "SampleBias" && numArgs >= 5) || (name == "SampleCmp" && numArgs >= 5) || (name == "SampleCmpLevelZero" && numArgs >= 5) || (name == "SampleGrad" && numArgs >= 6) || (name == "SampleLevel" && numArgs >= 5)) return true; } const bool isGather = (name == "Gather" || name == "GatherRed" || name == "GatherGreen" || name == "GatherBlue" || name == "GatherAlpha"); const bool isGatherCmp = (name == "GatherCmp" || name == "GatherCmpRed" || name == "GatherCmpGreen" || name == "GatherCmpBlue" || name == "GatherCmpAlpha"); // Reject invalid Gathers if (isGather || isGatherCmp) { if (dim0 == 1 || dim0 == 3) // there are no 1D or 3D gathers return true; // no offset on cube or cube array gathers if (dim0 == 4) { if ((isGather && numArgs > 3) || (isGatherCmp && numArgs > 4)) return true; } } // Reject invalid Loads if (name == "Load" && dim0 == 4) return true; // Load does not support any cubemaps, arrayed or not. // Multisample formats are only 2D and 2Darray if (isMS && dim0 != 2) return true; // Buffer are only 1D if (isBuffer && dim0 != 1) return true; return false; } // Return the number of the coordinate arg, if any int CoordinateArgPos(const glslang::TString& name, bool isTexture) { if (!isTexture || (name == "GetDimensions")) return -1; // has none else if (name == "Load") return 1; else return 2; // other texture methods are 2 } // Some texture methods use an addition coordinate dimension for the mip bool HasMipInCoord(const glslang::TString& name, bool isMS, bool isBuffer, bool isImage) { return name == "Load" && !isMS && !isBuffer && !isImage; } // LOD calculations don't pass the array level in the coordinate. bool NoArrayCoord(const glslang::TString& name) { return name == "CalculateLevelOfDetail" || name == "CalculateLevelOfDetailUnclamped"; } // Handle IO params marked with > or < const char* IoParam(glslang::TString& s, const char* nthArgOrder) { if (*nthArgOrder == '>') { // output params ++nthArgOrder; s.append("out "); } else if (*nthArgOrder == '<') { // input params ++nthArgOrder; s.append("in "); } return nthArgOrder; } // Handle repeated args void HandleRepeatArg(const char*& arg, const char*& prev, const char* current) { if (*arg == ',' || *arg == '\0') arg = prev; else prev = current; } // Return true for the end of a single argument key, which can be the end of the string, or // the comma separator. inline bool IsEndOfArg(const char* arg) { return arg == nullptr || *arg == '\0' || *arg == ','; } // If this is a fixed vector size, such as V3, return the size. Else return 0. int FixedVecSize(const char* arg) { while (!IsEndOfArg(arg)) { if (isdigit(*arg)) return *arg - '0'; ++arg; } return 0; // none found. } // Create and return a type name, using HLSL type conventions. // // order: S = scalar, V = vector, M = matrix // argType: F = float, D = double, I = int, U = uint, B = bool, S = sampler // dim0 = vector dimension, or matrix 1st dimension // dim1 = matrix 2nd dimension glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, const char* argType, int dim0, int dim1) { const bool isTranspose = (argOrder[0] == '^'); const bool isTexture = IsTextureType(argOrder[0]); const bool isArrayed = IsArrayed(argOrder[0]); const bool isSampler = IsSamplerType(argType[0]); const bool isMS = IsMS(argOrder[0]); const bool isBuffer = IsBuffer(argOrder[0]); const bool isImage = IsImage(argOrder[0]); const bool isSubpass = IsSubpassInput(argOrder[0]); char type = *argType; if (isTranspose) { // Take transpose of matrix dimensions std::swap(dim0, dim1); } else if (isTexture || isSubpass) { if (type == 'F') // map base type to texture of that type. type = 'T'; // e.g, int -> itexture, uint -> utexture, etc. else if (type == 'I') type = 'i'; else if (type == 'U') type = 'u'; } if (isTranspose) ++argOrder; char order = *argOrder; switch (type) { case '-': s += "void"; break; case 'F': s += "float"; break; case 'D': s += "double"; break; case 'I': s += "int"; break; case 'U': s += "uint"; break; case 'L': s += "int64_t"; break; case 'M': s += "uint64_t"; break; case 'B': s += "bool"; break; case 'S': s += "sampler"; break; case 's': s += "SamplerComparisonState"; break; case 'T': s += ((isBuffer && isImage) ? "RWBuffer" : isSubpass ? "SubpassInput" : isBuffer ? "Buffer" : isImage ? "RWTexture" : "Texture"); break; case 'i': s += ((isBuffer && isImage) ? "RWBuffer" : isSubpass ? "SubpassInput" : isBuffer ? "Buffer" : isImage ? "RWTexture" : "Texture"); break; case 'u': s += ((isBuffer && isImage) ? "RWBuffer" : isSubpass ? "SubpassInput" : isBuffer ? "Buffer" : isImage ? "RWTexture" : "Texture"); break; default: s += "UNKNOWN_TYPE"; break; } if (isSubpass && isMS) s += "MS"; // handle fixed vector sizes, such as float3, and only ever 3. const int fixedVecSize = FixedVecSize(argOrder); if (fixedVecSize != 0) dim0 = dim1 = fixedVecSize; const char dim0Char = ('0' + char(dim0)); const char dim1Char = ('0' + char(dim1)); // Add sampler dimensions if (isSampler || isTexture) { if ((order == 'V' || isTexture) && !isBuffer) { switch (dim0) { case 1: s += "1D"; break; case 2: s += (isMS ? "2DMS" : "2D"); break; case 3: s += "3D"; break; case 4: s += (type == 'S'? "CUBE" : "Cube"); break; default: s += "UNKNOWN_SAMPLER"; break; } } } else { // Non-sampler type: // verify dimensions if (((order == 'V' || order == 'M') && (dim0 < 1 || dim0 > 4)) || (order == 'M' && (dim1 < 1 || dim1 > 4))) { s += "UNKNOWN_DIMENSION"; return s; } switch (order) { case '-': break; // no dimensions for voids case 'S': break; // no dimensions on scalars case 'V': s += dim0Char; break; case 'M': s += dim0Char; s += 'x'; s += dim1Char; break; default: break; } } // handle arrayed textures if (isArrayed) s += "Array"; switch (type) { case 'i': s += " 0) // handle fixed sized vectors dim0Min = dim0Max = fixedVecSize; } } // end anonymous namespace namespace glslang { TBuiltInParseablesHlsl::TBuiltInParseablesHlsl() { } // // Handle creation of mat*mat specially, since it doesn't fall conveniently out of // the generic prototype creation code below. // void TBuiltInParseablesHlsl::createMatTimesMat() { TString& s = commonBuiltins; for (int xRows = 1; xRows <=4; xRows++) { for (int xCols = 1; xCols <=4; xCols++) { const int yRows = xCols; for (int yCols = 1; yCols <=4; yCols++) { const int retRows = xRows; const int retCols = yCols; // Create a mat * mat of the appropriate dimensions AppendTypeName(s, "M", "F", retRows, retCols); // add return type s.append(" "); // space between type and name s.append("mul"); // intrinsic name s.append("("); // open paren AppendTypeName(s, "M", "F", xRows, xCols); // add X input s.append(", "); AppendTypeName(s, "M", "F", yRows, yCols); // add Y input s.append(");\n"); // close paren } // Create M*V AppendTypeName(s, "V", "F", xRows, 1); // add return type s.append(" "); // space between type and name s.append("mul"); // intrinsic name s.append("("); // open paren AppendTypeName(s, "M", "F", xRows, xCols); // add X input s.append(", "); AppendTypeName(s, "V", "F", xCols, 1); // add Y input s.append(");\n"); // close paren // Create V*M AppendTypeName(s, "V", "F", xCols, 1); // add return type s.append(" "); // space between type and name s.append("mul"); // intrinsic name s.append("("); // open paren AppendTypeName(s, "V", "F", xRows, 1); // add Y input s.append(", "); AppendTypeName(s, "M", "F", xRows, xCols); // add X input s.append(");\n"); // close paren } } } // // Add all context-independent built-in functions and variables that are present // for the given version and profile. Share common ones across stages, otherwise // make stage-specific entries. // // Most built-ins variables can be added as simple text strings. Some need to // be added programmatically, which is done later in IdentifyBuiltIns() below. // void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, const SpvVersion& /*spvVersion*/) { static const EShLanguageMask EShLangAll = EShLanguageMask(EShLangCount - 1); // These are the actual stage masks defined in the documentation, in case they are // needed for future validation. For now, they are commented out, and set below // to EShLangAll, to allow any intrinsic to be used in any shader, which is legal // if it is not called. // // static const EShLanguageMask EShLangPSCS = EShLanguageMask(EShLangFragmentMask | EShLangComputeMask); // static const EShLanguageMask EShLangVSPSGS = EShLanguageMask(EShLangVertexMask | EShLangFragmentMask | EShLangGeometryMask); // static const EShLanguageMask EShLangCS = EShLangComputeMask; // static const EShLanguageMask EShLangPS = EShLangFragmentMask; // static const EShLanguageMask EShLangHS = EShLangTessControlMask; // This set uses EShLangAll for everything. static const EShLanguageMask EShLangPSCS = EShLangAll; static const EShLanguageMask EShLangVSPSGS = EShLangAll; static const EShLanguageMask EShLangCS = EShLangAll; static const EShLanguageMask EShLangPS = EShLangAll; static const EShLanguageMask EShLangHS = EShLangAll; static const EShLanguageMask EShLangGS = EShLangAll; // This structure encodes the prototype information for each HLSL intrinsic. // Because explicit enumeration would be cumbersome, it's procedurally generated. // orderKey can be: // S = scalar, V = vector, M = matrix, - = void // typekey can be: // D = double, F = float, U = uint, I = int, B = bool, S = sampler, s = shadowSampler, M = uint64_t, L = int64_t // An empty order or type key repeats the first one. E.g: SVM,, means 3 args each of SVM. // '>' as first letter of order creates an output parameter // '<' as first letter of order creates an input parameter // '^' as first letter of order takes transpose dimensions // '%' as first letter of order creates texture of given F/I/U type (texture, itexture, etc) // '@' as first letter of order creates arrayed texture of given type // '$' / '&' as first letter of order creates 2DMS / 2DMSArray textures // '*' as first letter of order creates buffer object // '!' as first letter of order creates image object // '#' as first letter of order creates arrayed image object // '~' as first letter of order creates an image buffer object // '[' / ']' as first letter of order creates a SubpassInput/SubpassInputMS object static const struct { const char* name; // intrinsic name const char* retOrder; // return type key: empty matches order of 1st argument const char* retType; // return type key: empty matches type of 1st argument const char* argOrder; // argument order key const char* argType; // argument type key unsigned int stage; // stage mask bool method; // true if it's a method. } hlslIntrinsics[] = { // name retOrd retType argOrder argType stage mask method // ---------------------------------------------------------------------------------------------------------------- { "abort", nullptr, nullptr, "-", "-", EShLangAll, false }, { "abs", nullptr, nullptr, "SVM", "DFUI", EShLangAll, false }, { "acos", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "all", "S", "B", "SVM", "BFIU", EShLangAll, false }, { "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS, false }, { "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS, false }, { "any", "S", "B", "SVM", "BFIU", EShLangAll, false }, { "asdouble", "S", "D", "S,", "UI,", EShLangAll, false }, { "asdouble", "V2", "D", "V2,", "UI,", EShLangAll, false }, { "asfloat", nullptr, "F", "SVM", "BFIU", EShLangAll, false }, { "asin", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "asint", nullptr, "I", "SVM", "FIU", EShLangAll, false }, { "asuint", nullptr, "U", "SVM", "FIU", EShLangAll, false }, { "atan", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "atan2", nullptr, nullptr, "SVM,", "F,", EShLangAll, false }, { "ceil", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "CheckAccessFullyMapped", "S", "B" , "S", "U", EShLangPSCS, false }, { "clamp", nullptr, nullptr, "SVM,,", "FUI,,", EShLangAll, false }, { "clip", "-", "-", "SVM", "FUI", EShLangPS, false }, { "cos", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "cosh", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "countbits", nullptr, nullptr, "SV", "UI", EShLangAll, false }, { "cross", nullptr, nullptr, "V3,", "F,", EShLangAll, false }, { "D3DCOLORtoUBYTE4", "V4", "I", "V4", "F", EShLangAll, false }, { "ddx", nullptr, nullptr, "SVM", "F", EShLangPS, false }, { "ddx_coarse", nullptr, nullptr, "SVM", "F", EShLangPS, false }, { "ddx_fine", nullptr, nullptr, "SVM", "F", EShLangPS, false }, { "ddy", nullptr, nullptr, "SVM", "F", EShLangPS, false }, { "ddy_coarse", nullptr, nullptr, "SVM", "F", EShLangPS, false }, { "ddy_fine", nullptr, nullptr, "SVM", "F", EShLangPS, false }, { "degrees", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "determinant", "S", "F", "M", "F", EShLangAll, false }, { "DeviceMemoryBarrier", nullptr, nullptr, "-", "-", EShLangPSCS, false }, { "DeviceMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS, false }, { "distance", "S", "F", "SV,", "F,", EShLangAll, false }, { "dot", "S", nullptr, "SV,", "FI,", EShLangAll, false }, { "dst", nullptr, nullptr, "V4,", "F,", EShLangAll, false }, // { "errorf", "-", "-", "", "", EShLangAll, false }, TODO: varargs { "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangPS, false }, { "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangPS, false }, { "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangPS, false }, { "exp", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "exp2", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "f16tof32", nullptr, "F", "SV", "U", EShLangAll, false }, { "f32tof16", nullptr, "U", "SV", "F", EShLangAll, false }, { "faceforward", nullptr, nullptr, "V,,", "F,,", EShLangAll, false }, { "firstbithigh", nullptr, nullptr, "SV", "UI", EShLangAll, false }, { "firstbitlow", nullptr, nullptr, "SV", "UI", EShLangAll, false }, { "floor", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "fma", nullptr, nullptr, "SVM,,", "D,,", EShLangAll, false }, { "fmod", nullptr, nullptr, "SVM,", "F,", EShLangAll, false }, { "frac", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "frexp", nullptr, nullptr, "SVM,", "F,", EShLangAll, false }, { "fwidth", nullptr, nullptr, "SVM", "F", EShLangPS, false }, { "GetRenderTargetSampleCount", "S", "U", "-", "-", EShLangAll, false }, { "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll, false }, { "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS, false }, { "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS, false }, { "InterlockedAdd", "-", "-", "SVM,,>", "FUI,,", EShLangPSCS, false }, { "InterlockedAdd", "-", "-", "SVM,", "FUI,", EShLangPSCS, false }, { "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS, false }, { "InterlockedAnd", "-", "-", "SVM,", "UI,", EShLangPSCS, false }, { "InterlockedCompareExchange", "-", "-", "SVM,,,>", "UI,,,", EShLangPSCS, false }, { "InterlockedCompareStore", "-", "-", "SVM,,", "UI,,", EShLangPSCS, false }, { "InterlockedExchange", "-", "-", "SVM,,>", "UI,,", EShLangPSCS, false }, { "InterlockedMax", "-", "-", "SVM,,>", "UI,,", EShLangPSCS, false }, { "InterlockedMax", "-", "-", "SVM,", "UI,", EShLangPSCS, false }, { "InterlockedMin", "-", "-", "SVM,,>", "UI,,", EShLangPSCS, false }, { "InterlockedMin", "-", "-", "SVM,", "UI,", EShLangPSCS, false }, { "InterlockedOr", "-", "-", "SVM,,>", "UI,,", EShLangPSCS, false }, { "InterlockedOr", "-", "-", "SVM,", "UI,", EShLangPSCS, false }, { "InterlockedXor", "-", "-", "SVM,,>", "UI,,", EShLangPSCS, false }, { "InterlockedXor", "-", "-", "SVM,", "UI,", EShLangPSCS, false }, { "isfinite", nullptr, "B" , "SVM", "F", EShLangAll, false }, { "isinf", nullptr, "B" , "SVM", "F", EShLangAll, false }, { "isnan", nullptr, "B" , "SVM", "F", EShLangAll, false }, { "ldexp", nullptr, nullptr, "SVM,", "F,", EShLangAll, false }, { "length", "S", "F", "SV", "F", EShLangAll, false }, { "lerp", nullptr, nullptr, "VM,,", "F,,", EShLangAll, false }, { "lerp", nullptr, nullptr, "SVM,,S", "F,,", EShLangAll, false }, { "lit", "V4", "F", "S,,", "F,,", EShLangAll, false }, { "log", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "log10", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "log2", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "mad", nullptr, nullptr, "SVM,,", "DFUI,,", EShLangAll, false }, { "max", nullptr, nullptr, "SVM,", "FIU,", EShLangAll, false }, { "min", nullptr, nullptr, "SVM,", "FIU,", EShLangAll, false }, { "modf", nullptr, nullptr, "SVM,>", "FIU,", EShLangAll, false }, { "msad4", "V4", "U", "S,V2,V4", "U,,", EShLangAll, false }, { "mul", "S", nullptr, "S,S", "FI,", EShLangAll, false }, { "mul", "V", nullptr, "S,V", "FI,", EShLangAll, false }, { "mul", "M", nullptr, "S,M", "FI,", EShLangAll, false }, { "mul", "V", nullptr, "V,S", "FI,", EShLangAll, false }, { "mul", "S", nullptr, "V,V", "FI,", EShLangAll, false }, { "mul", "M", nullptr, "M,S", "FI,", EShLangAll, false }, // mat*mat form of mul is handled in createMatTimesMat() { "noise", "S", "F", "V", "F", EShLangPS, false }, { "normalize", nullptr, nullptr, "V", "F", EShLangAll, false }, { "pow", nullptr, nullptr, "SVM,", "F,", EShLangAll, false }, { "printf", nullptr, nullptr, "-", "-", EShLangAll, false }, { "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS, false }, { "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS, false }, { "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS, false }, { "ProcessIsolineTessFactors", "-", "-", "S,,>,>", "F,,,", EShLangHS, false }, { "ProcessQuadTessFactorsAvg", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS, false }, { "ProcessQuadTessFactorsMax", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS, false }, { "ProcessQuadTessFactorsMin", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS, false }, { "ProcessTriTessFactorsAvg", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS, false }, { "ProcessTriTessFactorsMax", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS, false }, { "ProcessTriTessFactorsMin", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS, false }, { "radians", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "rcp", nullptr, nullptr, "SVM", "FD", EShLangAll, false }, { "reflect", nullptr, nullptr, "V,", "F,", EShLangAll, false }, { "refract", nullptr, nullptr, "V,V,S", "F,,", EShLangAll, false }, { "reversebits", nullptr, nullptr, "SV", "UI", EShLangAll, false }, { "round", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "rsqrt", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "saturate", nullptr, nullptr , "SVM", "F", EShLangAll, false }, { "sign", nullptr, nullptr, "SVM", "FI", EShLangAll, false }, { "sin", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "sincos", "-", "-", "SVM,>,>", "F,,", EShLangAll, false }, { "sinh", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "smoothstep", nullptr, nullptr, "SVM,,", "F,,", EShLangAll, false }, { "sqrt", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "step", nullptr, nullptr, "SVM,", "F,", EShLangAll, false }, { "tan", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "tanh", nullptr, nullptr, "SVM", "F", EShLangAll, false }, { "tex1D", "V4", "F", "S,S", "S,F", EShLangPS, false }, { "tex1D", "V4", "F", "S,S,V1,", "S,F,,", EShLangPS, false }, { "tex1Dbias", "V4", "F", "S,V4", "S,F", EShLangPS, false }, { "tex1Dgrad", "V4", "F", "S,,,", "S,F,,", EShLangPS, false }, { "tex1Dlod", "V4", "F", "S,V4", "S,F", EShLangPS, false }, { "tex1Dproj", "V4", "F", "S,V4", "S,F", EShLangPS, false }, { "tex2D", "V4", "F", "V2,", "S,F", EShLangPS, false }, { "tex2D", "V4", "F", "V2,,,", "S,F,,", EShLangPS, false }, { "tex2Dbias", "V4", "F", "V2,V4", "S,F", EShLangPS, false }, { "tex2Dgrad", "V4", "F", "V2,,,", "S,F,,", EShLangPS, false }, { "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangAll, false }, { "tex2Dproj", "V4", "F", "V2,V4", "S,F", EShLangPS, false }, { "tex3D", "V4", "F", "V3,", "S,F", EShLangPS, false }, { "tex3D", "V4", "F", "V3,,,", "S,F,,", EShLangPS, false }, { "tex3Dbias", "V4", "F", "V3,V4", "S,F", EShLangPS, false }, { "tex3Dgrad", "V4", "F", "V3,,,", "S,F,,", EShLangPS, false }, { "tex3Dlod", "V4", "F", "V3,V4", "S,F", EShLangPS, false }, { "tex3Dproj", "V4", "F", "V3,V4", "S,F", EShLangPS, false }, { "texCUBE", "V4", "F", "V4,V3", "S,F", EShLangPS, false }, { "texCUBE", "V4", "F", "V4,V3,,", "S,F,,", EShLangPS, false }, { "texCUBEbias", "V4", "F", "V4,", "S,F", EShLangPS, false }, { "texCUBEgrad", "V4", "F", "V4,V3,,", "S,F,,", EShLangPS, false }, { "texCUBElod", "V4", "F", "V4,", "S,F", EShLangPS, false }, { "texCUBEproj", "V4", "F", "V4,", "S,F", EShLangPS, false }, { "transpose", "^M", nullptr, "M", "FUIB", EShLangAll, false }, { "trunc", nullptr, nullptr, "SVM", "F", EShLangAll, false }, // Texture object methods. Return type can be overridden by shader declaration. // !O = no offset, O = offset { "Sample", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangPS, true }, { "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangPS, true }, { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,F", EShLangPS, true }, { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,F,I", EShLangPS, true }, // TODO: FXC accepts int/uint samplers here. unclear what that means. { "SampleCmp", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,", EShLangPS, true }, { "SampleCmp", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,,I", EShLangPS, true }, // TODO: FXC accepts int/uint samplers here. unclear what that means. { "SampleCmpLevelZero", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,F", EShLangPS, true }, { "SampleCmpLevelZero", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,F,I", EShLangPS, true }, { "SampleGrad", /*!O*/ "V4", nullptr, "%@,S,V,,", "FIU,S,F,,", EShLangAll, true }, { "SampleGrad", /* O*/ "V4", nullptr, "%@,S,V,,,", "FIU,S,F,,,I", EShLangAll, true }, { "SampleLevel", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangAll, true }, { "SampleLevel", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangAll, true }, { "Load", /*!O*/ "V4", nullptr, "%@,V", "FIU,I", EShLangAll, true }, { "Load", /* O*/ "V4", nullptr, "%@,V,V", "FIU,I,I", EShLangAll, true }, { "Load", /* +sampleidex*/ "V4", nullptr, "$&,V,S", "FIU,I,I", EShLangAll, true }, { "Load", /* +samplindex, offset*/ "V4", nullptr, "$&,V,S,V", "FIU,I,I,I", EShLangAll, true }, // RWTexture loads { "Load", "V4", nullptr, "!#,V", "FIU,I", EShLangAll, true }, // (RW)Buffer loads { "Load", "V4", nullptr, "~*1,V", "FIU,I", EShLangAll, true }, { "Gather", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll, true }, { "Gather", /* O*/ "V4", nullptr, "%@,S,V,V", "FIU,S,F,I", EShLangAll, true }, { "CalculateLevelOfDetail", "S", "F", "%@,S,V", "FUI,S,F", EShLangPS, true }, { "CalculateLevelOfDetailUnclamped", "S", "F", "%@,S,V", "FUI,S,F", EShLangPS, true }, { "GetSamplePosition", "V2", "F", "$&2,S", "FUI,I", EShLangVSPSGS,true }, // // UINT Width // UINT MipLevel, UINT Width, UINT NumberOfLevels { "GetDimensions", /* 1D */ "-", "-", "%!~1,>S", "FUI,U", EShLangAll, true }, { "GetDimensions", /* 1D */ "-", "-", "%!~1,>S", "FUI,F", EShLangAll, true }, { "GetDimensions", /* 1D */ "-", "-", "%1,S,>S,", "FUI,U,,", EShLangAll, true }, { "GetDimensions", /* 1D */ "-", "-", "%1,S,>S,", "FUI,U,F,", EShLangAll, true }, // UINT Width, UINT Elements // UINT MipLevel, UINT Width, UINT Elements, UINT NumberOfLevels { "GetDimensions", /* 1DArray */ "-", "-", "@#1,>S,", "FUI,U,", EShLangAll, true }, { "GetDimensions", /* 1DArray */ "-", "-", "@#1,>S,", "FUI,F,", EShLangAll, true }, { "GetDimensions", /* 1DArray */ "-", "-", "@1,S,>S,,", "FUI,U,,,", EShLangAll, true }, { "GetDimensions", /* 1DArray */ "-", "-", "@1,S,>S,,", "FUI,U,F,,", EShLangAll, true }, // UINT Width, UINT Height // UINT MipLevel, UINT Width, UINT Height, UINT NumberOfLevels { "GetDimensions", /* 2D */ "-", "-", "%!2,>S,", "FUI,U,", EShLangAll, true }, { "GetDimensions", /* 2D */ "-", "-", "%!2,>S,", "FUI,F,", EShLangAll, true }, { "GetDimensions", /* 2D */ "-", "-", "%2,S,>S,,", "FUI,U,,,", EShLangAll, true }, { "GetDimensions", /* 2D */ "-", "-", "%2,S,>S,,", "FUI,U,F,,", EShLangAll, true }, // UINT Width, UINT Height, UINT Elements // UINT MipLevel, UINT Width, UINT Height, UINT Elements, UINT NumberOfLevels { "GetDimensions", /* 2DArray */ "-", "-", "@#2,>S,,", "FUI,U,,", EShLangAll, true }, { "GetDimensions", /* 2DArray */ "-", "-", "@#2,>S,,", "FUI,F,F,F", EShLangAll, true }, { "GetDimensions", /* 2DArray */ "-", "-", "@2,S,>S,,,", "FUI,U,,,,", EShLangAll, true }, { "GetDimensions", /* 2DArray */ "-", "-", "@2,S,>S,,,", "FUI,U,F,,,", EShLangAll, true }, // UINT Width, UINT Height, UINT Depth // UINT MipLevel, UINT Width, UINT Height, UINT Depth, UINT NumberOfLevels { "GetDimensions", /* 3D */ "-", "-", "%!3,>S,,", "FUI,U,,", EShLangAll, true }, { "GetDimensions", /* 3D */ "-", "-", "%!3,>S,,", "FUI,F,,", EShLangAll, true }, { "GetDimensions", /* 3D */ "-", "-", "%3,S,>S,,,", "FUI,U,,,,", EShLangAll, true }, { "GetDimensions", /* 3D */ "-", "-", "%3,S,>S,,,", "FUI,U,F,,,", EShLangAll, true }, // UINT Width, UINT Height // UINT MipLevel, UINT Width, UINT Height, UINT NumberOfLevels { "GetDimensions", /* Cube */ "-", "-", "%4,>S,", "FUI,U,", EShLangAll, true }, { "GetDimensions", /* Cube */ "-", "-", "%4,>S,", "FUI,F,", EShLangAll, true }, { "GetDimensions", /* Cube */ "-", "-", "%4,S,>S,,", "FUI,U,,,", EShLangAll, true }, { "GetDimensions", /* Cube */ "-", "-", "%4,S,>S,,", "FUI,U,F,,", EShLangAll, true }, // UINT Width, UINT Height, UINT Elements // UINT MipLevel, UINT Width, UINT Height, UINT Elements, UINT NumberOfLevels { "GetDimensions", /* CubeArray */ "-", "-", "@4,>S,,", "FUI,U,,", EShLangAll, true }, { "GetDimensions", /* CubeArray */ "-", "-", "@4,>S,,", "FUI,F,,", EShLangAll, true }, { "GetDimensions", /* CubeArray */ "-", "-", "@4,S,>S,,,", "FUI,U,,,,", EShLangAll, true }, { "GetDimensions", /* CubeArray */ "-", "-", "@4,S,>S,,,", "FUI,U,F,,,", EShLangAll, true }, // UINT Width, UINT Height, UINT Samples // UINT Width, UINT Height, UINT Elements, UINT Samples { "GetDimensions", /* 2DMS */ "-", "-", "$2,>S,,", "FUI,U,,", EShLangAll, true }, { "GetDimensions", /* 2DMS */ "-", "-", "$2,>S,,", "FUI,U,,", EShLangAll, true }, { "GetDimensions", /* 2DMSArray */ "-", "-", "&2,>S,,,", "FUI,U,,,", EShLangAll, true }, { "GetDimensions", /* 2DMSArray */ "-", "-", "&2,>S,,,", "FUI,U,,,", EShLangAll, true }, // SM5 texture methods { "GatherRed", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll, true }, { "GatherRed", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangAll, true }, { "GatherRed", /* O, status*/ "V4", nullptr, "%@,S,V,,>S", "FIU,S,F,I,U", EShLangAll, true }, { "GatherRed", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll, true }, { "GatherRed", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U", EShLangAll, true }, { "GatherGreen", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll, true }, { "GatherGreen", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangAll, true }, { "GatherGreen", /* O, status*/ "V4", nullptr, "%@,S,V,,>S", "FIU,S,F,I,U", EShLangAll, true }, { "GatherGreen", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll, true }, { "GatherGreen", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U", EShLangAll, true }, { "GatherBlue", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll, true }, { "GatherBlue", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangAll, true }, { "GatherBlue", /* O, status*/ "V4", nullptr, "%@,S,V,,>S", "FIU,S,F,I,U", EShLangAll, true }, { "GatherBlue", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll, true }, { "GatherBlue", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U", EShLangAll, true }, { "GatherAlpha", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll, true }, { "GatherAlpha", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangAll, true }, { "GatherAlpha", /* O, status*/ "V4", nullptr, "%@,S,V,,>S", "FIU,S,F,I,U", EShLangAll, true }, { "GatherAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll, true }, { "GatherAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U", EShLangAll, true }, { "GatherCmp", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true }, { "GatherCmp", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true }, { "GatherCmp", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true }, { "GatherCmp", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll, true }, { "GatherCmp", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,V,S","FIU,s,F,,I,,,,U",EShLangAll, true }, { "GatherCmpRed", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true }, { "GatherCmpRed", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true }, { "GatherCmpRed", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true }, { "GatherCmpRed", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll, true }, { "GatherCmpRed", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,V,S","FIU,s,F,,I,,,,U",EShLangAll, true }, { "GatherCmpGreen", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true }, { "GatherCmpGreen", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true }, { "GatherCmpGreen", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true }, { "GatherCmpGreen", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll, true }, { "GatherCmpGreen", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,,,S","FIU,s,F,,I,,,,U",EShLangAll, true }, { "GatherCmpBlue", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true }, { "GatherCmpBlue", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true }, { "GatherCmpBlue", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true }, { "GatherCmpBlue", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll, true }, { "GatherCmpBlue", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,,,S","FIU,s,F,,I,,,,U",EShLangAll, true }, { "GatherCmpAlpha", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true }, { "GatherCmpAlpha", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true }, { "GatherCmpAlpha", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true }, { "GatherCmpAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll, true }, { "GatherCmpAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,,,S","FIU,s,F,,I,,,,U",EShLangAll, true }, // geometry methods { "Append", "-", "-", "-", "-", EShLangGS , true }, { "RestartStrip", "-", "-", "-", "-", EShLangGS , true }, // Methods for structurebuffers. TODO: wildcard type matching. { "Load", nullptr, nullptr, "-", "-", EShLangAll, true }, { "Load2", nullptr, nullptr, "-", "-", EShLangAll, true }, { "Load3", nullptr, nullptr, "-", "-", EShLangAll, true }, { "Load4", nullptr, nullptr, "-", "-", EShLangAll, true }, { "Store", nullptr, nullptr, "-", "-", EShLangAll, true }, { "Store2", nullptr, nullptr, "-", "-", EShLangAll, true }, { "Store3", nullptr, nullptr, "-", "-", EShLangAll, true }, { "Store4", nullptr, nullptr, "-", "-", EShLangAll, true }, { "GetDimensions", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedAdd", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedAnd", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedCompareExchange", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedCompareStore", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedExchange", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedMax", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedMin", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedOr", nullptr, nullptr, "-", "-", EShLangAll, true }, { "InterlockedXor", nullptr, nullptr, "-", "-", EShLangAll, true }, { "IncrementCounter", nullptr, nullptr, "-", "-", EShLangAll, true }, { "DecrementCounter", nullptr, nullptr, "-", "-", EShLangAll, true }, { "Consume", nullptr, nullptr, "-", "-", EShLangAll, true }, // SM 6.0 { "WaveIsFirstLane", "S", "B", "-", "-", EShLangPSCS, false}, { "WaveGetLaneCount", "S", "U", "-", "-", EShLangPSCS, false}, { "WaveGetLaneIndex", "S", "U", "-", "-", EShLangPSCS, false}, { "WaveActiveAnyTrue", "S", "B", "S", "B", EShLangPSCS, false}, { "WaveActiveAllTrue", "S", "B", "S", "B", EShLangPSCS, false}, { "WaveActiveBallot", "V4", "U", "S", "B", EShLangPSCS, false}, { "WaveReadLaneAt", nullptr, nullptr, "SV,S", "DFUI,U", EShLangPSCS, false}, { "WaveReadLaneFirst", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveAllEqual", "S", "B", "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveAllEqualBool", "S", "B", "S", "B", EShLangPSCS, false}, { "WaveActiveCountBits", "S", "U", "S", "B", EShLangPSCS, false}, { "WaveActiveSum", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveProduct", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveBitAnd", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveBitOr", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveBitXor", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveMin", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveMax", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WavePrefixSum", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WavePrefixProduct", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WavePrefixCountBits", "S", "U", "S", "B", EShLangPSCS, false}, { "QuadReadAcrossX", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "QuadReadAcrossY", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "QuadReadAcrossDiagonal", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "QuadReadLaneAt", nullptr, nullptr, "SV,S", "DFUI,U", EShLangPSCS, false}, // Methods for subpass input objects { "SubpassLoad", "V4", nullptr, "[", "FIU", EShLangPS, true }, { "SubpassLoad", "V4", nullptr, "],S", "FIU,I", EShLangPS, true }, // Mark end of list, since we want to avoid a range-based for, as some compilers don't handle it yet. { nullptr, nullptr, nullptr, nullptr, nullptr, 0, false }, }; // Create prototypes for the intrinsics. TODO: Avoid ranged based for until all compilers can handle it. for (int icount = 0; hlslIntrinsics[icount].name; ++icount) { const auto& intrinsic = hlslIntrinsics[icount]; for (int stage = 0; stage < EShLangCount; ++stage) { // for each stage... if ((intrinsic.stage & (1< 0 ? std::min(dim0, 3) : dim0; s.append(arg > 0 ? ", ": ""); // comma separator if needed const char* orderBegin = nthArgOrder; nthArgOrder = IoParam(s, nthArgOrder); // Comma means use the previous argument order and type. HandleRepeatArg(nthArgOrder, prevArgOrder, orderBegin); HandleRepeatArg(nthArgType, prevArgType, nthArgType); // In case the repeated arg has its own I/O marker nthArgOrder = IoParam(s, nthArgOrder); // arrayed textures have one extra coordinate dimension, except for // the CalculateLevelOfDetail family. if (isArrayed && arg == coordArg && !NoArrayCoord(intrinsic.name)) argDim0++; // Some texture methods use an addition arg dimension to hold mip if (arg == coordArg && mipInCoord) argDim0++; // For textures, the 1D case isn't a 1-vector, but a scalar. if (isTexture && argDim0 == 1 && arg > 0 && *nthArgOrder == 'V') nthArgOrder = "S"; AppendTypeName(s, nthArgOrder, nthArgType, argDim0, dim1); // Add arguments } s.append(");\n"); // close paren and trailing semicolon } // dim 1 loop } // dim 0 loop } // arg type loop // skip over special characters if (isTexture && isalpha(argOrder[1])) ++argOrder; if (isdigit(argOrder[1])) ++argOrder; } // arg order loop if (intrinsic.stage == EShLangAll) // common builtins are only added once. break; } } createMatTimesMat(); // handle this case separately, for convenience // printf("Common:\n%s\n", getCommonString().c_str()); // printf("Frag:\n%s\n", getStageString(EShLangFragment).c_str()); // printf("Vertex:\n%s\n", getStageString(EShLangVertex).c_str()); // printf("Geo:\n%s\n", getStageString(EShLangGeometry).c_str()); // printf("TessCtrl:\n%s\n", getStageString(EShLangTessControl).c_str()); // printf("TessEval:\n%s\n", getStageString(EShLangTessEvaluation).c_str()); // printf("Compute:\n%s\n", getStageString(EShLangCompute).c_str()); } // // Add context-dependent built-in functions and variables that are present // for the given version and profile. All the results are put into just the // commonBuiltins, because it is called for just a specific stage. So, // add stage-specific entries to the commonBuiltins, and only if that stage // was requested. // void TBuiltInParseablesHlsl::initialize(const TBuiltInResource& /*resources*/, int /*version*/, EProfile /*profile*/, const SpvVersion& /*spvVersion*/, EShLanguage /*language*/) { } // // Finish adding/processing context-independent built-in symbols. // 1) Programmatically add symbols that could not be added by simple text strings above. // 2) Map built-in functions to operators, for those that will turn into an operation node // instead of remaining a function call. // 3) Tag extension-related symbols added to their base version with their extensions, so // that if an early version has the extension turned off, there is an error reported on use. // void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profile*/, const SpvVersion& /*spvVersion*/, EShLanguage /*language*/, TSymbolTable& symbolTable) { // symbolTable.relateToOperator("abort", EOpAbort); symbolTable.relateToOperator("abs", EOpAbs); symbolTable.relateToOperator("acos", EOpAcos); symbolTable.relateToOperator("all", EOpAll); symbolTable.relateToOperator("AllMemoryBarrier", EOpMemoryBarrier); symbolTable.relateToOperator("AllMemoryBarrierWithGroupSync", EOpAllMemoryBarrierWithGroupSync); symbolTable.relateToOperator("any", EOpAny); symbolTable.relateToOperator("asdouble", EOpAsDouble); symbolTable.relateToOperator("asfloat", EOpIntBitsToFloat); symbolTable.relateToOperator("asin", EOpAsin); symbolTable.relateToOperator("asint", EOpFloatBitsToInt); symbolTable.relateToOperator("asuint", EOpFloatBitsToUint); symbolTable.relateToOperator("atan", EOpAtan); symbolTable.relateToOperator("atan2", EOpAtan); symbolTable.relateToOperator("ceil", EOpCeil); // symbolTable.relateToOperator("CheckAccessFullyMapped"); symbolTable.relateToOperator("clamp", EOpClamp); symbolTable.relateToOperator("clip", EOpClip); symbolTable.relateToOperator("cos", EOpCos); symbolTable.relateToOperator("cosh", EOpCosh); symbolTable.relateToOperator("countbits", EOpBitCount); symbolTable.relateToOperator("cross", EOpCross); symbolTable.relateToOperator("D3DCOLORtoUBYTE4", EOpD3DCOLORtoUBYTE4); symbolTable.relateToOperator("ddx", EOpDPdx); symbolTable.relateToOperator("ddx_coarse", EOpDPdxCoarse); symbolTable.relateToOperator("ddx_fine", EOpDPdxFine); symbolTable.relateToOperator("ddy", EOpDPdy); symbolTable.relateToOperator("ddy_coarse", EOpDPdyCoarse); symbolTable.relateToOperator("ddy_fine", EOpDPdyFine); symbolTable.relateToOperator("degrees", EOpDegrees); symbolTable.relateToOperator("determinant", EOpDeterminant); symbolTable.relateToOperator("DeviceMemoryBarrier", EOpDeviceMemoryBarrier); symbolTable.relateToOperator("DeviceMemoryBarrierWithGroupSync", EOpDeviceMemoryBarrierWithGroupSync); symbolTable.relateToOperator("distance", EOpDistance); symbolTable.relateToOperator("dot", EOpDot); symbolTable.relateToOperator("dst", EOpDst); // symbolTable.relateToOperator("errorf", EOpErrorf); symbolTable.relateToOperator("EvaluateAttributeAtCentroid", EOpInterpolateAtCentroid); symbolTable.relateToOperator("EvaluateAttributeAtSample", EOpInterpolateAtSample); symbolTable.relateToOperator("EvaluateAttributeSnapped", EOpEvaluateAttributeSnapped); symbolTable.relateToOperator("exp", EOpExp); symbolTable.relateToOperator("exp2", EOpExp2); symbolTable.relateToOperator("f16tof32", EOpF16tof32); symbolTable.relateToOperator("f32tof16", EOpF32tof16); symbolTable.relateToOperator("faceforward", EOpFaceForward); symbolTable.relateToOperator("firstbithigh", EOpFindMSB); symbolTable.relateToOperator("firstbitlow", EOpFindLSB); symbolTable.relateToOperator("floor", EOpFloor); symbolTable.relateToOperator("fma", EOpFma); symbolTable.relateToOperator("fmod", EOpMod); symbolTable.relateToOperator("frac", EOpFract); symbolTable.relateToOperator("frexp", EOpFrexp); symbolTable.relateToOperator("fwidth", EOpFwidth); // symbolTable.relateToOperator("GetRenderTargetSampleCount"); // symbolTable.relateToOperator("GetRenderTargetSamplePosition"); symbolTable.relateToOperator("GroupMemoryBarrier", EOpWorkgroupMemoryBarrier); symbolTable.relateToOperator("GroupMemoryBarrierWithGroupSync", EOpWorkgroupMemoryBarrierWithGroupSync); symbolTable.relateToOperator("InterlockedAdd", EOpInterlockedAdd); symbolTable.relateToOperator("InterlockedAnd", EOpInterlockedAnd); symbolTable.relateToOperator("InterlockedCompareExchange", EOpInterlockedCompareExchange); symbolTable.relateToOperator("InterlockedCompareStore", EOpInterlockedCompareStore); symbolTable.relateToOperator("InterlockedExchange", EOpInterlockedExchange); symbolTable.relateToOperator("InterlockedMax", EOpInterlockedMax); symbolTable.relateToOperator("InterlockedMin", EOpInterlockedMin); symbolTable.relateToOperator("InterlockedOr", EOpInterlockedOr); symbolTable.relateToOperator("InterlockedXor", EOpInterlockedXor); symbolTable.relateToOperator("isfinite", EOpIsFinite); symbolTable.relateToOperator("isinf", EOpIsInf); symbolTable.relateToOperator("isnan", EOpIsNan); symbolTable.relateToOperator("ldexp", EOpLdexp); symbolTable.relateToOperator("length", EOpLength); symbolTable.relateToOperator("lerp", EOpMix); symbolTable.relateToOperator("lit", EOpLit); symbolTable.relateToOperator("log", EOpLog); symbolTable.relateToOperator("log10", EOpLog10); symbolTable.relateToOperator("log2", EOpLog2); symbolTable.relateToOperator("mad", EOpFma); symbolTable.relateToOperator("max", EOpMax); symbolTable.relateToOperator("min", EOpMin); symbolTable.relateToOperator("modf", EOpModf); // symbolTable.relateToOperator("msad4", EOpMsad4); symbolTable.relateToOperator("mul", EOpGenMul); // symbolTable.relateToOperator("noise", EOpNoise); // TODO: check return type symbolTable.relateToOperator("normalize", EOpNormalize); symbolTable.relateToOperator("pow", EOpPow); symbolTable.relateToOperator("printf", EOpDebugPrintf); // symbolTable.relateToOperator("Process2DQuadTessFactorsAvg"); // symbolTable.relateToOperator("Process2DQuadTessFactorsMax"); // symbolTable.relateToOperator("Process2DQuadTessFactorsMin"); // symbolTable.relateToOperator("ProcessIsolineTessFactors"); // symbolTable.relateToOperator("ProcessQuadTessFactorsAvg"); // symbolTable.relateToOperator("ProcessQuadTessFactorsMax"); // symbolTable.relateToOperator("ProcessQuadTessFactorsMin"); // symbolTable.relateToOperator("ProcessTriTessFactorsAvg"); // symbolTable.relateToOperator("ProcessTriTessFactorsMax"); // symbolTable.relateToOperator("ProcessTriTessFactorsMin"); symbolTable.relateToOperator("radians", EOpRadians); symbolTable.relateToOperator("rcp", EOpRcp); symbolTable.relateToOperator("reflect", EOpReflect); symbolTable.relateToOperator("refract", EOpRefract); symbolTable.relateToOperator("reversebits", EOpBitFieldReverse); symbolTable.relateToOperator("round", EOpRound); symbolTable.relateToOperator("rsqrt", EOpInverseSqrt); symbolTable.relateToOperator("saturate", EOpSaturate); symbolTable.relateToOperator("sign", EOpSign); symbolTable.relateToOperator("sin", EOpSin); symbolTable.relateToOperator("sincos", EOpSinCos); symbolTable.relateToOperator("sinh", EOpSinh); symbolTable.relateToOperator("smoothstep", EOpSmoothStep); symbolTable.relateToOperator("sqrt", EOpSqrt); symbolTable.relateToOperator("step", EOpStep); symbolTable.relateToOperator("tan", EOpTan); symbolTable.relateToOperator("tanh", EOpTanh); symbolTable.relateToOperator("tex1D", EOpTexture); symbolTable.relateToOperator("tex1Dbias", EOpTextureBias); symbolTable.relateToOperator("tex1Dgrad", EOpTextureGrad); symbolTable.relateToOperator("tex1Dlod", EOpTextureLod); symbolTable.relateToOperator("tex1Dproj", EOpTextureProj); symbolTable.relateToOperator("tex2D", EOpTexture); symbolTable.relateToOperator("tex2Dbias", EOpTextureBias); symbolTable.relateToOperator("tex2Dgrad", EOpTextureGrad); symbolTable.relateToOperator("tex2Dlod", EOpTextureLod); symbolTable.relateToOperator("tex2Dproj", EOpTextureProj); symbolTable.relateToOperator("tex3D", EOpTexture); symbolTable.relateToOperator("tex3Dbias", EOpTextureBias); symbolTable.relateToOperator("tex3Dgrad", EOpTextureGrad); symbolTable.relateToOperator("tex3Dlod", EOpTextureLod); symbolTable.relateToOperator("tex3Dproj", EOpTextureProj); symbolTable.relateToOperator("texCUBE", EOpTexture); symbolTable.relateToOperator("texCUBEbias", EOpTextureBias); symbolTable.relateToOperator("texCUBEgrad", EOpTextureGrad); symbolTable.relateToOperator("texCUBElod", EOpTextureLod); symbolTable.relateToOperator("texCUBEproj", EOpTextureProj); symbolTable.relateToOperator("transpose", EOpTranspose); symbolTable.relateToOperator("trunc", EOpTrunc); // Texture methods symbolTable.relateToOperator(BUILTIN_PREFIX "Sample", EOpMethodSample); symbolTable.relateToOperator(BUILTIN_PREFIX "SampleBias", EOpMethodSampleBias); symbolTable.relateToOperator(BUILTIN_PREFIX "SampleCmp", EOpMethodSampleCmp); symbolTable.relateToOperator(BUILTIN_PREFIX "SampleCmpLevelZero", EOpMethodSampleCmpLevelZero); symbolTable.relateToOperator(BUILTIN_PREFIX "SampleGrad", EOpMethodSampleGrad); symbolTable.relateToOperator(BUILTIN_PREFIX "SampleLevel", EOpMethodSampleLevel); symbolTable.relateToOperator(BUILTIN_PREFIX "Load", EOpMethodLoad); symbolTable.relateToOperator(BUILTIN_PREFIX "GetDimensions", EOpMethodGetDimensions); symbolTable.relateToOperator(BUILTIN_PREFIX "GetSamplePosition", EOpMethodGetSamplePosition); symbolTable.relateToOperator(BUILTIN_PREFIX "Gather", EOpMethodGather); symbolTable.relateToOperator(BUILTIN_PREFIX "CalculateLevelOfDetail", EOpMethodCalculateLevelOfDetail); symbolTable.relateToOperator(BUILTIN_PREFIX "CalculateLevelOfDetailUnclamped", EOpMethodCalculateLevelOfDetailUnclamped); // Structure buffer methods (excluding associations already made above for texture methods w/ same name) symbolTable.relateToOperator(BUILTIN_PREFIX "Load2", EOpMethodLoad2); symbolTable.relateToOperator(BUILTIN_PREFIX "Load3", EOpMethodLoad3); symbolTable.relateToOperator(BUILTIN_PREFIX "Load4", EOpMethodLoad4); symbolTable.relateToOperator(BUILTIN_PREFIX "Store", EOpMethodStore); symbolTable.relateToOperator(BUILTIN_PREFIX "Store2", EOpMethodStore2); symbolTable.relateToOperator(BUILTIN_PREFIX "Store3", EOpMethodStore3); symbolTable.relateToOperator(BUILTIN_PREFIX "Store4", EOpMethodStore4); symbolTable.relateToOperator(BUILTIN_PREFIX "IncrementCounter", EOpMethodIncrementCounter); symbolTable.relateToOperator(BUILTIN_PREFIX "DecrementCounter", EOpMethodDecrementCounter); // Append is also a GS method: we don't add it twice symbolTable.relateToOperator(BUILTIN_PREFIX "Consume", EOpMethodConsume); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedAdd", EOpInterlockedAdd); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedAnd", EOpInterlockedAnd); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedCompareExchange", EOpInterlockedCompareExchange); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedCompareStore", EOpInterlockedCompareStore); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedExchange", EOpInterlockedExchange); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedMax", EOpInterlockedMax); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedMin", EOpInterlockedMin); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedOr", EOpInterlockedOr); symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedXor", EOpInterlockedXor); // SM5 Texture methods symbolTable.relateToOperator(BUILTIN_PREFIX "GatherRed", EOpMethodGatherRed); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherGreen", EOpMethodGatherGreen); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherBlue", EOpMethodGatherBlue); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherAlpha", EOpMethodGatherAlpha); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmp", EOpMethodGatherCmpRed); // alias symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpRed", EOpMethodGatherCmpRed); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpGreen", EOpMethodGatherCmpGreen); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpBlue", EOpMethodGatherCmpBlue); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpAlpha", EOpMethodGatherCmpAlpha); // GS methods symbolTable.relateToOperator(BUILTIN_PREFIX "Append", EOpMethodAppend); symbolTable.relateToOperator(BUILTIN_PREFIX "RestartStrip", EOpMethodRestartStrip); // Wave ops symbolTable.relateToOperator("WaveIsFirstLane", EOpSubgroupElect); symbolTable.relateToOperator("WaveGetLaneCount", EOpWaveGetLaneCount); symbolTable.relateToOperator("WaveGetLaneIndex", EOpWaveGetLaneIndex); symbolTable.relateToOperator("WaveActiveAnyTrue", EOpSubgroupAny); symbolTable.relateToOperator("WaveActiveAllTrue", EOpSubgroupAll); symbolTable.relateToOperator("WaveActiveBallot", EOpSubgroupBallot); symbolTable.relateToOperator("WaveReadLaneFirst", EOpSubgroupBroadcastFirst); symbolTable.relateToOperator("WaveReadLaneAt", EOpSubgroupShuffle); symbolTable.relateToOperator("WaveActiveAllEqual", EOpSubgroupAllEqual); symbolTable.relateToOperator("WaveActiveAllEqualBool", EOpSubgroupAllEqual); symbolTable.relateToOperator("WaveActiveCountBits", EOpWaveActiveCountBits); symbolTable.relateToOperator("WaveActiveSum", EOpSubgroupAdd); symbolTable.relateToOperator("WaveActiveProduct", EOpSubgroupMul); symbolTable.relateToOperator("WaveActiveBitAnd", EOpSubgroupAnd); symbolTable.relateToOperator("WaveActiveBitOr", EOpSubgroupOr); symbolTable.relateToOperator("WaveActiveBitXor", EOpSubgroupXor); symbolTable.relateToOperator("WaveActiveMin", EOpSubgroupMin); symbolTable.relateToOperator("WaveActiveMax", EOpSubgroupMax); symbolTable.relateToOperator("WavePrefixSum", EOpSubgroupInclusiveAdd); symbolTable.relateToOperator("WavePrefixProduct", EOpSubgroupInclusiveMul); symbolTable.relateToOperator("WavePrefixCountBits", EOpWavePrefixCountBits); symbolTable.relateToOperator("QuadReadAcrossX", EOpSubgroupQuadSwapHorizontal); symbolTable.relateToOperator("QuadReadAcrossY", EOpSubgroupQuadSwapVertical); symbolTable.relateToOperator("QuadReadAcrossDiagonal", EOpSubgroupQuadSwapDiagonal); symbolTable.relateToOperator("QuadReadLaneAt", EOpSubgroupQuadBroadcast); // Subpass input methods symbolTable.relateToOperator(BUILTIN_PREFIX "SubpassLoad", EOpSubpassLoad); symbolTable.relateToOperator(BUILTIN_PREFIX "SubpassLoadMS", EOpSubpassLoadMS); } // // Add context-dependent (resource-specific) built-ins not handled by the above. These // would be ones that need to be programmatically added because they cannot // be added by simple text strings. For these, also // 1) Map built-in functions to operators, for those that will turn into an operation node // instead of remaining a function call. // 2) Tag extension-related symbols added to their base version with their extensions, so // that if an early version has the extension turned off, there is an error reported on use. // void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profile*/, const SpvVersion& /*spvVersion*/, EShLanguage /*language*/, TSymbolTable& /*symbolTable*/, const TBuiltInResource& /*resources*/) { } } // end namespace glslang glslang-16.0.0/glslang/HLSL/hlslParseables.h000066400000000000000000000050761506534232700205520ustar00rootroot00000000000000// // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _HLSLPARSEABLES_INCLUDED_ #define _HLSLPARSEABLES_INCLUDED_ #include "../MachineIndependent/Initialize.h" namespace glslang { // // This is an HLSL specific derivation of TBuiltInParseables. See comment // above TBuiltInParseables for details. // class TBuiltInParseablesHlsl : public TBuiltInParseables { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TBuiltInParseablesHlsl(); void initialize(int version, EProfile, const SpvVersion& spvVersion); void initialize(const TBuiltInResource& resources, int version, EProfile, const SpvVersion& spvVersion, EShLanguage); void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable); void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources); private: void createMatTimesMat(); }; } // end namespace glslang #endif // _HLSLPARSEABLES_INCLUDED_ glslang-16.0.0/glslang/HLSL/hlslScanContext.cpp000066400000000000000000001041311506534232700212450ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // HLSL scanning, leveraging the scanning done by the preprocessor. // #include #include #include #include "../Include/Types.h" #include "../MachineIndependent/SymbolTable.h" #include "../MachineIndependent/ParseHelper.h" #include "hlslScanContext.h" #include "hlslTokens.h" // preprocessor includes #include "../MachineIndependent/preprocessor/PpContext.h" #include "../MachineIndependent/preprocessor/PpTokens.h" namespace { struct str_eq { bool operator()(const char* lhs, const char* rhs) const { return strcmp(lhs, rhs) == 0; } }; struct str_hash { size_t operator()(const char* str) const { // djb2 unsigned long hash = 5381; int c; while ((c = *str++) != 0) hash = ((hash << 5) + hash) + c; return hash; } }; // A single global usable by all threads, by all versions, by all languages. const std::unordered_map KeywordMap { {"static",glslang::EHTokStatic}, {"const",glslang::EHTokConst}, {"unorm",glslang::EHTokUnorm}, {"snorm",glslang::EHTokSNorm}, {"extern",glslang::EHTokExtern}, {"uniform",glslang::EHTokUniform}, {"volatile",glslang::EHTokVolatile}, {"precise",glslang::EHTokPrecise}, {"shared",glslang::EHTokShared}, {"groupshared",glslang::EHTokGroupShared}, {"linear",glslang::EHTokLinear}, {"centroid",glslang::EHTokCentroid}, {"nointerpolation",glslang::EHTokNointerpolation}, {"noperspective",glslang::EHTokNoperspective}, {"sample",glslang::EHTokSample}, {"row_major",glslang::EHTokRowMajor}, {"column_major",glslang::EHTokColumnMajor}, {"packoffset",glslang::EHTokPackOffset}, {"in",glslang::EHTokIn}, {"out",glslang::EHTokOut}, {"inout",glslang::EHTokInOut}, {"layout",glslang::EHTokLayout}, {"globallycoherent",glslang::EHTokGloballyCoherent}, {"inline",glslang::EHTokInline}, {"point",glslang::EHTokPoint}, {"line",glslang::EHTokLine}, {"triangle",glslang::EHTokTriangle}, {"lineadj",glslang::EHTokLineAdj}, {"triangleadj",glslang::EHTokTriangleAdj}, {"PointStream",glslang::EHTokPointStream}, {"LineStream",glslang::EHTokLineStream}, {"TriangleStream",glslang::EHTokTriangleStream}, {"InputPatch",glslang::EHTokInputPatch}, {"OutputPatch",glslang::EHTokOutputPatch}, {"Buffer",glslang::EHTokBuffer}, {"vector",glslang::EHTokVector}, {"matrix",glslang::EHTokMatrix}, {"void",glslang::EHTokVoid}, {"string",glslang::EHTokString}, {"bool",glslang::EHTokBool}, {"int",glslang::EHTokInt}, {"uint",glslang::EHTokUint}, {"uint64_t",glslang::EHTokUint64}, {"dword",glslang::EHTokDword}, {"half",glslang::EHTokHalf}, {"float",glslang::EHTokFloat}, {"double",glslang::EHTokDouble}, {"min16float",glslang::EHTokMin16float}, {"min10float",glslang::EHTokMin10float}, {"min16int",glslang::EHTokMin16int}, {"min12int",glslang::EHTokMin12int}, {"min16uint",glslang::EHTokMin16uint}, {"bool1",glslang::EHTokBool1}, {"bool2",glslang::EHTokBool2}, {"bool3",glslang::EHTokBool3}, {"bool4",glslang::EHTokBool4}, {"float1",glslang::EHTokFloat1}, {"float2",glslang::EHTokFloat2}, {"float3",glslang::EHTokFloat3}, {"float4",glslang::EHTokFloat4}, {"int1",glslang::EHTokInt1}, {"int2",glslang::EHTokInt2}, {"int3",glslang::EHTokInt3}, {"int4",glslang::EHTokInt4}, {"double1",glslang::EHTokDouble1}, {"double2",glslang::EHTokDouble2}, {"double3",glslang::EHTokDouble3}, {"double4",glslang::EHTokDouble4}, {"uint1",glslang::EHTokUint1}, {"uint2",glslang::EHTokUint2}, {"uint3",glslang::EHTokUint3}, {"uint4",glslang::EHTokUint4}, {"half1",glslang::EHTokHalf1}, {"half2",glslang::EHTokHalf2}, {"half3",glslang::EHTokHalf3}, {"half4",glslang::EHTokHalf4}, {"min16float1",glslang::EHTokMin16float1}, {"min16float2",glslang::EHTokMin16float2}, {"min16float3",glslang::EHTokMin16float3}, {"min16float4",glslang::EHTokMin16float4}, {"min10float1",glslang::EHTokMin10float1}, {"min10float2",glslang::EHTokMin10float2}, {"min10float3",glslang::EHTokMin10float3}, {"min10float4",glslang::EHTokMin10float4}, {"min16int1",glslang::EHTokMin16int1}, {"min16int2",glslang::EHTokMin16int2}, {"min16int3",glslang::EHTokMin16int3}, {"min16int4",glslang::EHTokMin16int4}, {"min12int1",glslang::EHTokMin12int1}, {"min12int2",glslang::EHTokMin12int2}, {"min12int3",glslang::EHTokMin12int3}, {"min12int4",glslang::EHTokMin12int4}, {"min16uint1",glslang::EHTokMin16uint1}, {"min16uint2",glslang::EHTokMin16uint2}, {"min16uint3",glslang::EHTokMin16uint3}, {"min16uint4",glslang::EHTokMin16uint4}, {"bool1x1",glslang::EHTokBool1x1}, {"bool1x2",glslang::EHTokBool1x2}, {"bool1x3",glslang::EHTokBool1x3}, {"bool1x4",glslang::EHTokBool1x4}, {"bool2x1",glslang::EHTokBool2x1}, {"bool2x2",glslang::EHTokBool2x2}, {"bool2x3",glslang::EHTokBool2x3}, {"bool2x4",glslang::EHTokBool2x4}, {"bool3x1",glslang::EHTokBool3x1}, {"bool3x2",glslang::EHTokBool3x2}, {"bool3x3",glslang::EHTokBool3x3}, {"bool3x4",glslang::EHTokBool3x4}, {"bool4x1",glslang::EHTokBool4x1}, {"bool4x2",glslang::EHTokBool4x2}, {"bool4x3",glslang::EHTokBool4x3}, {"bool4x4",glslang::EHTokBool4x4}, {"int1x1",glslang::EHTokInt1x1}, {"int1x2",glslang::EHTokInt1x2}, {"int1x3",glslang::EHTokInt1x3}, {"int1x4",glslang::EHTokInt1x4}, {"int2x1",glslang::EHTokInt2x1}, {"int2x2",glslang::EHTokInt2x2}, {"int2x3",glslang::EHTokInt2x3}, {"int2x4",glslang::EHTokInt2x4}, {"int3x1",glslang::EHTokInt3x1}, {"int3x2",glslang::EHTokInt3x2}, {"int3x3",glslang::EHTokInt3x3}, {"int3x4",glslang::EHTokInt3x4}, {"int4x1",glslang::EHTokInt4x1}, {"int4x2",glslang::EHTokInt4x2}, {"int4x3",glslang::EHTokInt4x3}, {"int4x4",glslang::EHTokInt4x4}, {"uint1x1",glslang::EHTokUint1x1}, {"uint1x2",glslang::EHTokUint1x2}, {"uint1x3",glslang::EHTokUint1x3}, {"uint1x4",glslang::EHTokUint1x4}, {"uint2x1",glslang::EHTokUint2x1}, {"uint2x2",glslang::EHTokUint2x2}, {"uint2x3",glslang::EHTokUint2x3}, {"uint2x4",glslang::EHTokUint2x4}, {"uint3x1",glslang::EHTokUint3x1}, {"uint3x2",glslang::EHTokUint3x2}, {"uint3x3",glslang::EHTokUint3x3}, {"uint3x4",glslang::EHTokUint3x4}, {"uint4x1",glslang::EHTokUint4x1}, {"uint4x2",glslang::EHTokUint4x2}, {"uint4x3",glslang::EHTokUint4x3}, {"uint4x4",glslang::EHTokUint4x4}, {"bool1x1",glslang::EHTokBool1x1}, {"bool1x2",glslang::EHTokBool1x2}, {"bool1x3",glslang::EHTokBool1x3}, {"bool1x4",glslang::EHTokBool1x4}, {"bool2x1",glslang::EHTokBool2x1}, {"bool2x2",glslang::EHTokBool2x2}, {"bool2x3",glslang::EHTokBool2x3}, {"bool2x4",glslang::EHTokBool2x4}, {"bool3x1",glslang::EHTokBool3x1}, {"bool3x2",glslang::EHTokBool3x2}, {"bool3x3",glslang::EHTokBool3x3}, {"bool3x4",glslang::EHTokBool3x4}, {"bool4x1",glslang::EHTokBool4x1}, {"bool4x2",glslang::EHTokBool4x2}, {"bool4x3",glslang::EHTokBool4x3}, {"bool4x4",glslang::EHTokBool4x4}, {"float1x1",glslang::EHTokFloat1x1}, {"float1x2",glslang::EHTokFloat1x2}, {"float1x3",glslang::EHTokFloat1x3}, {"float1x4",glslang::EHTokFloat1x4}, {"float2x1",glslang::EHTokFloat2x1}, {"float2x2",glslang::EHTokFloat2x2}, {"float2x3",glslang::EHTokFloat2x3}, {"float2x4",glslang::EHTokFloat2x4}, {"float3x1",glslang::EHTokFloat3x1}, {"float3x2",glslang::EHTokFloat3x2}, {"float3x3",glslang::EHTokFloat3x3}, {"float3x4",glslang::EHTokFloat3x4}, {"float4x1",glslang::EHTokFloat4x1}, {"float4x2",glslang::EHTokFloat4x2}, {"float4x3",glslang::EHTokFloat4x3}, {"float4x4",glslang::EHTokFloat4x4}, {"half1x1",glslang::EHTokHalf1x1}, {"half1x2",glslang::EHTokHalf1x2}, {"half1x3",glslang::EHTokHalf1x3}, {"half1x4",glslang::EHTokHalf1x4}, {"half2x1",glslang::EHTokHalf2x1}, {"half2x2",glslang::EHTokHalf2x2}, {"half2x3",glslang::EHTokHalf2x3}, {"half2x4",glslang::EHTokHalf2x4}, {"half3x1",glslang::EHTokHalf3x1}, {"half3x2",glslang::EHTokHalf3x2}, {"half3x3",glslang::EHTokHalf3x3}, {"half3x4",glslang::EHTokHalf3x4}, {"half4x1",glslang::EHTokHalf4x1}, {"half4x2",glslang::EHTokHalf4x2}, {"half4x3",glslang::EHTokHalf4x3}, {"half4x4",glslang::EHTokHalf4x4}, {"double1x1",glslang::EHTokDouble1x1}, {"double1x2",glslang::EHTokDouble1x2}, {"double1x3",glslang::EHTokDouble1x3}, {"double1x4",glslang::EHTokDouble1x4}, {"double2x1",glslang::EHTokDouble2x1}, {"double2x2",glslang::EHTokDouble2x2}, {"double2x3",glslang::EHTokDouble2x3}, {"double2x4",glslang::EHTokDouble2x4}, {"double3x1",glslang::EHTokDouble3x1}, {"double3x2",glslang::EHTokDouble3x2}, {"double3x3",glslang::EHTokDouble3x3}, {"double3x4",glslang::EHTokDouble3x4}, {"double4x1",glslang::EHTokDouble4x1}, {"double4x2",glslang::EHTokDouble4x2}, {"double4x3",glslang::EHTokDouble4x3}, {"double4x4",glslang::EHTokDouble4x4}, {"min16float1x1",glslang::EHTokMin16float1x1}, {"min16float1x2",glslang::EHTokMin16float1x2}, {"min16float1x3",glslang::EHTokMin16float1x3}, {"min16float1x4",glslang::EHTokMin16float1x4}, {"min16float2x1",glslang::EHTokMin16float2x1}, {"min16float2x2",glslang::EHTokMin16float2x2}, {"min16float2x3",glslang::EHTokMin16float2x3}, {"min16float2x4",glslang::EHTokMin16float2x4}, {"min16float3x1",glslang::EHTokMin16float3x1}, {"min16float3x2",glslang::EHTokMin16float3x2}, {"min16float3x3",glslang::EHTokMin16float3x3}, {"min16float3x4",glslang::EHTokMin16float3x4}, {"min16float4x1",glslang::EHTokMin16float4x1}, {"min16float4x2",glslang::EHTokMin16float4x2}, {"min16float4x3",glslang::EHTokMin16float4x3}, {"min16float4x4",glslang::EHTokMin16float4x4}, {"min10float1x1",glslang::EHTokMin10float1x1}, {"min10float1x2",glslang::EHTokMin10float1x2}, {"min10float1x3",glslang::EHTokMin10float1x3}, {"min10float1x4",glslang::EHTokMin10float1x4}, {"min10float2x1",glslang::EHTokMin10float2x1}, {"min10float2x2",glslang::EHTokMin10float2x2}, {"min10float2x3",glslang::EHTokMin10float2x3}, {"min10float2x4",glslang::EHTokMin10float2x4}, {"min10float3x1",glslang::EHTokMin10float3x1}, {"min10float3x2",glslang::EHTokMin10float3x2}, {"min10float3x3",glslang::EHTokMin10float3x3}, {"min10float3x4",glslang::EHTokMin10float3x4}, {"min10float4x1",glslang::EHTokMin10float4x1}, {"min10float4x2",glslang::EHTokMin10float4x2}, {"min10float4x3",glslang::EHTokMin10float4x3}, {"min10float4x4",glslang::EHTokMin10float4x4}, {"min16int1x1",glslang::EHTokMin16int1x1}, {"min16int1x2",glslang::EHTokMin16int1x2}, {"min16int1x3",glslang::EHTokMin16int1x3}, {"min16int1x4",glslang::EHTokMin16int1x4}, {"min16int2x1",glslang::EHTokMin16int2x1}, {"min16int2x2",glslang::EHTokMin16int2x2}, {"min16int2x3",glslang::EHTokMin16int2x3}, {"min16int2x4",glslang::EHTokMin16int2x4}, {"min16int3x1",glslang::EHTokMin16int3x1}, {"min16int3x2",glslang::EHTokMin16int3x2}, {"min16int3x3",glslang::EHTokMin16int3x3}, {"min16int3x4",glslang::EHTokMin16int3x4}, {"min16int4x1",glslang::EHTokMin16int4x1}, {"min16int4x2",glslang::EHTokMin16int4x2}, {"min16int4x3",glslang::EHTokMin16int4x3}, {"min16int4x4",glslang::EHTokMin16int4x4}, {"min12int1x1",glslang::EHTokMin12int1x1}, {"min12int1x2",glslang::EHTokMin12int1x2}, {"min12int1x3",glslang::EHTokMin12int1x3}, {"min12int1x4",glslang::EHTokMin12int1x4}, {"min12int2x1",glslang::EHTokMin12int2x1}, {"min12int2x2",glslang::EHTokMin12int2x2}, {"min12int2x3",glslang::EHTokMin12int2x3}, {"min12int2x4",glslang::EHTokMin12int2x4}, {"min12int3x1",glslang::EHTokMin12int3x1}, {"min12int3x2",glslang::EHTokMin12int3x2}, {"min12int3x3",glslang::EHTokMin12int3x3}, {"min12int3x4",glslang::EHTokMin12int3x4}, {"min12int4x1",glslang::EHTokMin12int4x1}, {"min12int4x2",glslang::EHTokMin12int4x2}, {"min12int4x3",glslang::EHTokMin12int4x3}, {"min12int4x4",glslang::EHTokMin12int4x4}, {"min16uint1x1",glslang::EHTokMin16uint1x1}, {"min16uint1x2",glslang::EHTokMin16uint1x2}, {"min16uint1x3",glslang::EHTokMin16uint1x3}, {"min16uint1x4",glslang::EHTokMin16uint1x4}, {"min16uint2x1",glslang::EHTokMin16uint2x1}, {"min16uint2x2",glslang::EHTokMin16uint2x2}, {"min16uint2x3",glslang::EHTokMin16uint2x3}, {"min16uint2x4",glslang::EHTokMin16uint2x4}, {"min16uint3x1",glslang::EHTokMin16uint3x1}, {"min16uint3x2",glslang::EHTokMin16uint3x2}, {"min16uint3x3",glslang::EHTokMin16uint3x3}, {"min16uint3x4",glslang::EHTokMin16uint3x4}, {"min16uint4x1",glslang::EHTokMin16uint4x1}, {"min16uint4x2",glslang::EHTokMin16uint4x2}, {"min16uint4x3",glslang::EHTokMin16uint4x3}, {"min16uint4x4",glslang::EHTokMin16uint4x4}, {"sampler",glslang::EHTokSampler}, {"sampler1D",glslang::EHTokSampler1d}, {"sampler2D",glslang::EHTokSampler2d}, {"sampler3D",glslang::EHTokSampler3d}, {"samplerCUBE",glslang::EHTokSamplerCube}, {"sampler_state",glslang::EHTokSamplerState}, {"SamplerState",glslang::EHTokSamplerState}, {"SamplerComparisonState",glslang::EHTokSamplerComparisonState}, {"texture",glslang::EHTokTexture}, {"Texture1D",glslang::EHTokTexture1d}, {"Texture1DArray",glslang::EHTokTexture1darray}, {"Texture2D",glslang::EHTokTexture2d}, {"Texture2DArray",glslang::EHTokTexture2darray}, {"Texture3D",glslang::EHTokTexture3d}, {"TextureCube",glslang::EHTokTextureCube}, {"TextureCubeArray",glslang::EHTokTextureCubearray}, {"Texture2DMS",glslang::EHTokTexture2DMS}, {"Texture2DMSArray",glslang::EHTokTexture2DMSarray}, {"RWTexture1D",glslang::EHTokRWTexture1d}, {"RWTexture1DArray",glslang::EHTokRWTexture1darray}, {"RWTexture2D",glslang::EHTokRWTexture2d}, {"RWTexture2DArray",glslang::EHTokRWTexture2darray}, {"RWTexture3D",glslang::EHTokRWTexture3d}, {"RWBuffer",glslang::EHTokRWBuffer}, {"SubpassInput",glslang::EHTokSubpassInput}, {"SubpassInputMS",glslang::EHTokSubpassInputMS}, {"AppendStructuredBuffer",glslang::EHTokAppendStructuredBuffer}, {"ByteAddressBuffer",glslang::EHTokByteAddressBuffer}, {"ConsumeStructuredBuffer",glslang::EHTokConsumeStructuredBuffer}, {"RWByteAddressBuffer",glslang::EHTokRWByteAddressBuffer}, {"RWStructuredBuffer",glslang::EHTokRWStructuredBuffer}, {"StructuredBuffer",glslang::EHTokStructuredBuffer}, {"TextureBuffer",glslang::EHTokTextureBuffer}, {"class",glslang::EHTokClass}, {"struct",glslang::EHTokStruct}, {"cbuffer",glslang::EHTokCBuffer}, {"ConstantBuffer",glslang::EHTokConstantBuffer}, {"tbuffer",glslang::EHTokTBuffer}, {"typedef",glslang::EHTokTypedef}, {"this",glslang::EHTokThis}, {"namespace",glslang::EHTokNamespace}, {"true",glslang::EHTokBoolConstant}, {"false",glslang::EHTokBoolConstant}, {"for",glslang::EHTokFor}, {"do",glslang::EHTokDo}, {"while",glslang::EHTokWhile}, {"break",glslang::EHTokBreak}, {"continue",glslang::EHTokContinue}, {"if",glslang::EHTokIf}, {"else",glslang::EHTokElse}, {"discard",glslang::EHTokDiscard}, {"return",glslang::EHTokReturn}, {"switch",glslang::EHTokSwitch}, {"case",glslang::EHTokCase}, {"default",glslang::EHTokDefault}, }; const std::unordered_set ReservedSet { "auto", "catch", "char", "const_cast", "enum", "explicit", "friend", "goto", "long", "mutable", "new", "operator", "private", "protected", "public", "reinterpret_cast", "short", "signed", "sizeof", "static_cast", "template", "throw", "try", "typename", "union", "unsigned", "using", "virtual", }; std::unordered_map SemanticMap { // in DX9, all outputs had to have a semantic associated with them, that was either consumed // by the system or was a specific register assignment // in DX10+, only semantics with the SV_ prefix have any meaning beyond decoration // Fxc will only accept DX9 style semantics in compat mode // Also, in DX10 if a SV value is present as the input of a stage, but isn't appropriate for that // stage, it would just be ignored as it is likely there as part of an output struct from one stage // to the next #if 0 (*SemanticMap)["PSIZE"] = EbvPointSize; (*SemanticMap)["FOG"] = EbvFogFragCoord; (*SemanticMap)["DEPTH"] = EbvFragDepth; (*SemanticMap)["VFACE"] = EbvFace; (*SemanticMap)["VPOS"] = EbvFragCoord; #endif {"SV_POSITION",glslang::EbvPosition}, {"SV_VERTEXID",glslang::EbvVertexIndex}, {"SV_VIEWPORTARRAYINDEX",glslang::EbvViewportIndex}, {"SV_TESSFACTOR",glslang::EbvTessLevelOuter}, {"SV_SAMPLEINDEX",glslang::EbvSampleId}, {"SV_RENDERTARGETARRAYINDEX",glslang::EbvLayer}, {"SV_PRIMITIVEID",glslang::EbvPrimitiveId}, {"SV_OUTPUTCONTROLPOINTID",glslang::EbvInvocationId}, {"SV_ISFRONTFACE",glslang::EbvFace}, {"SV_VIEWID",glslang::EbvViewIndex}, {"SV_INSTANCEID",glslang::EbvInstanceIndex}, {"SV_INSIDETESSFACTOR",glslang::EbvTessLevelInner}, {"SV_GSINSTANCEID",glslang::EbvInvocationId}, {"SV_DISPATCHTHREADID",glslang::EbvGlobalInvocationId}, {"SV_GROUPTHREADID",glslang::EbvLocalInvocationId}, {"SV_GROUPINDEX",glslang::EbvLocalInvocationIndex}, {"SV_GROUPID",glslang::EbvWorkGroupId}, {"SV_DOMAINLOCATION",glslang::EbvTessCoord}, {"SV_DEPTH",glslang::EbvFragDepth}, {"SV_COVERAGE",glslang::EbvSampleMask}, {"SV_DEPTHGREATEREQUAL",glslang::EbvFragDepthGreater}, {"SV_DEPTHLESSEQUAL",glslang::EbvFragDepthLesser}, {"SV_STENCILREF", glslang::EbvFragStencilRef}, }; } namespace glslang { // Wrapper for tokenizeClass() to get everything inside the token. void HlslScanContext::tokenize(HlslToken& token) { EHlslTokenClass tokenClass = tokenizeClass(token); token.tokenClass = tokenClass; } glslang::TBuiltInVariable HlslScanContext::mapSemantic(const char* upperCase) { auto it = SemanticMap.find(upperCase); if (it != SemanticMap.end()) return it->second; else return glslang::EbvNone; } // // Fill in token information for the next token, except for the token class. // Returns the enum value of the token class of the next token found. // Return 0 (EndOfTokens) on end of input. // EHlslTokenClass HlslScanContext::tokenizeClass(HlslToken& token) { do { parserToken = &token; TPpToken ppToken; int token = ppContext.tokenize(ppToken); if (token == EndOfInput) return EHTokNone; tokenText = ppToken.name; loc = ppToken.loc; parserToken->loc = loc; switch (token) { case ';': return EHTokSemicolon; case ',': return EHTokComma; case ':': return EHTokColon; case '=': return EHTokAssign; case '(': return EHTokLeftParen; case ')': return EHTokRightParen; case '.': return EHTokDot; case '!': return EHTokBang; case '-': return EHTokDash; case '~': return EHTokTilde; case '+': return EHTokPlus; case '*': return EHTokStar; case '/': return EHTokSlash; case '%': return EHTokPercent; case '<': return EHTokLeftAngle; case '>': return EHTokRightAngle; case '|': return EHTokVerticalBar; case '^': return EHTokCaret; case '&': return EHTokAmpersand; case '?': return EHTokQuestion; case '[': return EHTokLeftBracket; case ']': return EHTokRightBracket; case '{': return EHTokLeftBrace; case '}': return EHTokRightBrace; case '\\': parseContext.error(loc, "illegal use of escape character", "\\", ""); break; case PPAtomAddAssign: return EHTokAddAssign; case PPAtomSubAssign: return EHTokSubAssign; case PPAtomMulAssign: return EHTokMulAssign; case PPAtomDivAssign: return EHTokDivAssign; case PPAtomModAssign: return EHTokModAssign; case PpAtomRight: return EHTokRightOp; case PpAtomLeft: return EHTokLeftOp; case PpAtomRightAssign: return EHTokRightAssign; case PpAtomLeftAssign: return EHTokLeftAssign; case PpAtomAndAssign: return EHTokAndAssign; case PpAtomOrAssign: return EHTokOrAssign; case PpAtomXorAssign: return EHTokXorAssign; case PpAtomAnd: return EHTokAndOp; case PpAtomOr: return EHTokOrOp; case PpAtomXor: return EHTokXorOp; case PpAtomEQ: return EHTokEqOp; case PpAtomGE: return EHTokGeOp; case PpAtomNE: return EHTokNeOp; case PpAtomLE: return EHTokLeOp; case PpAtomDecrement: return EHTokDecOp; case PpAtomIncrement: return EHTokIncOp; case PpAtomColonColon: return EHTokColonColon; case PpAtomConstInt: parserToken->i = ppToken.ival; return EHTokIntConstant; case PpAtomConstUint: parserToken->i = ppToken.ival; return EHTokUintConstant; case PpAtomConstFloat16: parserToken->d = ppToken.dval; return EHTokFloat16Constant; case PpAtomConstFloat: parserToken->d = ppToken.dval; return EHTokFloatConstant; case PpAtomConstDouble: parserToken->d = ppToken.dval; return EHTokDoubleConstant; case PpAtomIdentifier: { EHlslTokenClass token = tokenizeIdentifier(); return token; } case PpAtomConstString: { parserToken->string = NewPoolTString(tokenText); return EHTokStringConstant; } case EndOfInput: return EHTokNone; default: if (token < PpAtomMaxSingle) { char buf[2]; buf[0] = (char)token; buf[1] = 0; parseContext.error(loc, "unexpected token", buf, ""); } else if (tokenText[0] != 0) parseContext.error(loc, "unexpected token", tokenText, ""); else parseContext.error(loc, "unexpected token", "", ""); break; } } while (true); } EHlslTokenClass HlslScanContext::tokenizeIdentifier() { if (ReservedSet.find(tokenText) != ReservedSet.end()) return reservedWord(); auto it = KeywordMap.find(tokenText); if (it == KeywordMap.end()) { // Should have an identifier of some sort return identifierOrType(); } keyword = it->second; switch (keyword) { // qualifiers case EHTokStatic: case EHTokConst: case EHTokSNorm: case EHTokUnorm: case EHTokExtern: case EHTokUniform: case EHTokVolatile: case EHTokShared: case EHTokGroupShared: case EHTokLinear: case EHTokCentroid: case EHTokNointerpolation: case EHTokNoperspective: case EHTokSample: case EHTokRowMajor: case EHTokColumnMajor: case EHTokPackOffset: case EHTokIn: case EHTokOut: case EHTokInOut: case EHTokPrecise: case EHTokLayout: case EHTokGloballyCoherent: case EHTokInline: return keyword; // primitive types case EHTokPoint: case EHTokLine: case EHTokTriangle: case EHTokLineAdj: case EHTokTriangleAdj: return keyword; // stream out types case EHTokPointStream: case EHTokLineStream: case EHTokTriangleStream: return keyword; // Tessellation patches case EHTokInputPatch: case EHTokOutputPatch: return keyword; case EHTokBuffer: case EHTokVector: case EHTokMatrix: return keyword; // scalar types case EHTokVoid: case EHTokString: case EHTokBool: case EHTokInt: case EHTokUint: case EHTokUint64: case EHTokDword: case EHTokHalf: case EHTokFloat: case EHTokDouble: case EHTokMin16float: case EHTokMin10float: case EHTokMin16int: case EHTokMin12int: case EHTokMin16uint: // vector types case EHTokBool1: case EHTokBool2: case EHTokBool3: case EHTokBool4: case EHTokFloat1: case EHTokFloat2: case EHTokFloat3: case EHTokFloat4: case EHTokInt1: case EHTokInt2: case EHTokInt3: case EHTokInt4: case EHTokDouble1: case EHTokDouble2: case EHTokDouble3: case EHTokDouble4: case EHTokUint1: case EHTokUint2: case EHTokUint3: case EHTokUint4: case EHTokHalf1: case EHTokHalf2: case EHTokHalf3: case EHTokHalf4: case EHTokMin16float1: case EHTokMin16float2: case EHTokMin16float3: case EHTokMin16float4: case EHTokMin10float1: case EHTokMin10float2: case EHTokMin10float3: case EHTokMin10float4: case EHTokMin16int1: case EHTokMin16int2: case EHTokMin16int3: case EHTokMin16int4: case EHTokMin12int1: case EHTokMin12int2: case EHTokMin12int3: case EHTokMin12int4: case EHTokMin16uint1: case EHTokMin16uint2: case EHTokMin16uint3: case EHTokMin16uint4: // matrix types case EHTokBool1x1: case EHTokBool1x2: case EHTokBool1x3: case EHTokBool1x4: case EHTokBool2x1: case EHTokBool2x2: case EHTokBool2x3: case EHTokBool2x4: case EHTokBool3x1: case EHTokBool3x2: case EHTokBool3x3: case EHTokBool3x4: case EHTokBool4x1: case EHTokBool4x2: case EHTokBool4x3: case EHTokBool4x4: case EHTokInt1x1: case EHTokInt1x2: case EHTokInt1x3: case EHTokInt1x4: case EHTokInt2x1: case EHTokInt2x2: case EHTokInt2x3: case EHTokInt2x4: case EHTokInt3x1: case EHTokInt3x2: case EHTokInt3x3: case EHTokInt3x4: case EHTokInt4x1: case EHTokInt4x2: case EHTokInt4x3: case EHTokInt4x4: case EHTokUint1x1: case EHTokUint1x2: case EHTokUint1x3: case EHTokUint1x4: case EHTokUint2x1: case EHTokUint2x2: case EHTokUint2x3: case EHTokUint2x4: case EHTokUint3x1: case EHTokUint3x2: case EHTokUint3x3: case EHTokUint3x4: case EHTokUint4x1: case EHTokUint4x2: case EHTokUint4x3: case EHTokUint4x4: case EHTokFloat1x1: case EHTokFloat1x2: case EHTokFloat1x3: case EHTokFloat1x4: case EHTokFloat2x1: case EHTokFloat2x2: case EHTokFloat2x3: case EHTokFloat2x4: case EHTokFloat3x1: case EHTokFloat3x2: case EHTokFloat3x3: case EHTokFloat3x4: case EHTokFloat4x1: case EHTokFloat4x2: case EHTokFloat4x3: case EHTokFloat4x4: case EHTokHalf1x1: case EHTokHalf1x2: case EHTokHalf1x3: case EHTokHalf1x4: case EHTokHalf2x1: case EHTokHalf2x2: case EHTokHalf2x3: case EHTokHalf2x4: case EHTokHalf3x1: case EHTokHalf3x2: case EHTokHalf3x3: case EHTokHalf3x4: case EHTokHalf4x1: case EHTokHalf4x2: case EHTokHalf4x3: case EHTokHalf4x4: case EHTokDouble1x1: case EHTokDouble1x2: case EHTokDouble1x3: case EHTokDouble1x4: case EHTokDouble2x1: case EHTokDouble2x2: case EHTokDouble2x3: case EHTokDouble2x4: case EHTokDouble3x1: case EHTokDouble3x2: case EHTokDouble3x3: case EHTokDouble3x4: case EHTokDouble4x1: case EHTokDouble4x2: case EHTokDouble4x3: case EHTokDouble4x4: case EHTokMin16float1x1: case EHTokMin16float1x2: case EHTokMin16float1x3: case EHTokMin16float1x4: case EHTokMin16float2x1: case EHTokMin16float2x2: case EHTokMin16float2x3: case EHTokMin16float2x4: case EHTokMin16float3x1: case EHTokMin16float3x2: case EHTokMin16float3x3: case EHTokMin16float3x4: case EHTokMin16float4x1: case EHTokMin16float4x2: case EHTokMin16float4x3: case EHTokMin16float4x4: case EHTokMin10float1x1: case EHTokMin10float1x2: case EHTokMin10float1x3: case EHTokMin10float1x4: case EHTokMin10float2x1: case EHTokMin10float2x2: case EHTokMin10float2x3: case EHTokMin10float2x4: case EHTokMin10float3x1: case EHTokMin10float3x2: case EHTokMin10float3x3: case EHTokMin10float3x4: case EHTokMin10float4x1: case EHTokMin10float4x2: case EHTokMin10float4x3: case EHTokMin10float4x4: case EHTokMin16int1x1: case EHTokMin16int1x2: case EHTokMin16int1x3: case EHTokMin16int1x4: case EHTokMin16int2x1: case EHTokMin16int2x2: case EHTokMin16int2x3: case EHTokMin16int2x4: case EHTokMin16int3x1: case EHTokMin16int3x2: case EHTokMin16int3x3: case EHTokMin16int3x4: case EHTokMin16int4x1: case EHTokMin16int4x2: case EHTokMin16int4x3: case EHTokMin16int4x4: case EHTokMin12int1x1: case EHTokMin12int1x2: case EHTokMin12int1x3: case EHTokMin12int1x4: case EHTokMin12int2x1: case EHTokMin12int2x2: case EHTokMin12int2x3: case EHTokMin12int2x4: case EHTokMin12int3x1: case EHTokMin12int3x2: case EHTokMin12int3x3: case EHTokMin12int3x4: case EHTokMin12int4x1: case EHTokMin12int4x2: case EHTokMin12int4x3: case EHTokMin12int4x4: case EHTokMin16uint1x1: case EHTokMin16uint1x2: case EHTokMin16uint1x3: case EHTokMin16uint1x4: case EHTokMin16uint2x1: case EHTokMin16uint2x2: case EHTokMin16uint2x3: case EHTokMin16uint2x4: case EHTokMin16uint3x1: case EHTokMin16uint3x2: case EHTokMin16uint3x3: case EHTokMin16uint3x4: case EHTokMin16uint4x1: case EHTokMin16uint4x2: case EHTokMin16uint4x3: case EHTokMin16uint4x4: return keyword; // texturing types case EHTokSampler: case EHTokSampler1d: case EHTokSampler2d: case EHTokSampler3d: case EHTokSamplerCube: case EHTokSamplerState: case EHTokSamplerComparisonState: case EHTokTexture: case EHTokTexture1d: case EHTokTexture1darray: case EHTokTexture2d: case EHTokTexture2darray: case EHTokTexture3d: case EHTokTextureCube: case EHTokTextureCubearray: case EHTokTexture2DMS: case EHTokTexture2DMSarray: case EHTokRWTexture1d: case EHTokRWTexture1darray: case EHTokRWTexture2d: case EHTokRWTexture2darray: case EHTokRWTexture3d: case EHTokRWBuffer: case EHTokAppendStructuredBuffer: case EHTokByteAddressBuffer: case EHTokConsumeStructuredBuffer: case EHTokRWByteAddressBuffer: case EHTokRWStructuredBuffer: case EHTokStructuredBuffer: case EHTokTextureBuffer: case EHTokSubpassInput: case EHTokSubpassInputMS: return keyword; // variable, user type, ... case EHTokClass: case EHTokStruct: case EHTokTypedef: case EHTokCBuffer: case EHTokConstantBuffer: case EHTokTBuffer: case EHTokThis: case EHTokNamespace: return keyword; case EHTokBoolConstant: if (strcmp("true", tokenText) == 0) parserToken->b = true; else parserToken->b = false; return keyword; // control flow case EHTokFor: case EHTokDo: case EHTokWhile: case EHTokBreak: case EHTokContinue: case EHTokIf: case EHTokElse: case EHTokDiscard: case EHTokReturn: case EHTokCase: case EHTokSwitch: case EHTokDefault: return keyword; default: parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc); return EHTokNone; } } EHlslTokenClass HlslScanContext::identifierOrType() { parserToken->string = NewPoolTString(tokenText); return EHTokIdentifier; } // Give an error for use of a reserved symbol. // However, allow built-in declarations to use reserved words, to allow // extension support before the extension is enabled. EHlslTokenClass HlslScanContext::reservedWord() { if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.error(loc, "Reserved word.", tokenText, "", ""); return EHTokNone; } } // end namespace glslang glslang-16.0.0/glslang/HLSL/hlslScanContext.h000066400000000000000000000067501506534232700207220ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // This holds context specific to the HLSL scanner, which // sits between the preprocessor scanner and HLSL parser. // #ifndef HLSLSCANCONTEXT_H_ #define HLSLSCANCONTEXT_H_ #include "../MachineIndependent/ParseHelper.h" #include "hlslTokens.h" namespace glslang { class TPpContext; class TPpToken; // // Everything needed to fully describe a token. // struct HlslToken { HlslToken() : string(nullptr) { loc.init(); } TSourceLoc loc; // location of token in the source EHlslTokenClass tokenClass; // what kind of token it is union { // what data the token holds glslang::TString *string; // for identifiers int i; // for literals unsigned int u; bool b; double d; }; }; // // The state of scanning and translating raw tokens to slightly richer // semantics, like knowing if an identifier is an existing symbol, or // user-defined type. // class HlslScanContext { public: HlslScanContext(TParseContextBase& parseContext, TPpContext& ppContext) : parseContext(parseContext), ppContext(ppContext) { } virtual ~HlslScanContext() { } static void fillInKeywordMap(); static void deleteKeywordMap(); void tokenize(HlslToken&); glslang::TBuiltInVariable mapSemantic(const char*); protected: HlslScanContext(HlslScanContext&); HlslScanContext& operator=(HlslScanContext&); EHlslTokenClass tokenizeClass(HlslToken&); EHlslTokenClass tokenizeIdentifier(); EHlslTokenClass identifierOrType(); EHlslTokenClass reservedWord(); EHlslTokenClass identifierOrReserved(bool reserved); EHlslTokenClass nonreservedKeyword(int version); TParseContextBase& parseContext; TPpContext& ppContext; TSourceLoc loc; TPpToken* ppToken; HlslToken* parserToken; const char* tokenText; EHlslTokenClass keyword; }; } // end namespace glslang #endif // HLSLSCANCONTEXT_H_ glslang-16.0.0/glslang/HLSL/hlslTokenStream.cpp000066400000000000000000000106211506534232700212500ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "hlslTokenStream.h" namespace glslang { void HlslTokenStream::pushPreToken(const HlslToken& tok) { assert(preTokenStackSize < tokenBufferSize); preTokenStack[preTokenStackSize++] = tok; } HlslToken HlslTokenStream::popPreToken() { assert(preTokenStackSize > 0); return preTokenStack[--preTokenStackSize]; } void HlslTokenStream::pushTokenBuffer(const HlslToken& tok) { tokenBuffer[tokenBufferPos] = tok; tokenBufferPos = (tokenBufferPos+1) % tokenBufferSize; } HlslToken HlslTokenStream::popTokenBuffer() { // Back up tokenBufferPos = (tokenBufferPos+tokenBufferSize-1) % tokenBufferSize; return tokenBuffer[tokenBufferPos]; } // // Make a new source of tokens, not from the source, but from an // already pre-processed token stream. // // This interrupts current token processing which must be restored // later. Some simplifying assumptions are made (and asserted). // void HlslTokenStream::pushTokenStream(const TVector* tokens) { // not yet setup to interrupt a stream that has been receded // and not yet reconsumed assert(preTokenStackSize == 0); // save current state currentTokenStack.push_back(token); // set up new token stream tokenStreamStack.push_back(tokens); // start position at first token: token = (*tokens)[0]; tokenPosition.push_back(0); } // Undo pushTokenStream(), see above void HlslTokenStream::popTokenStream() { tokenStreamStack.pop_back(); tokenPosition.pop_back(); token = currentTokenStack.back(); currentTokenStack.pop_back(); } // Load 'token' with the next token in the stream of tokens. void HlslTokenStream::advanceToken() { pushTokenBuffer(token); if (preTokenStackSize > 0) token = popPreToken(); else { if (tokenStreamStack.size() == 0) scanner.tokenize(token); else { ++tokenPosition.back(); if (tokenPosition.back() >= (int)tokenStreamStack.back()->size()) token.tokenClass = EHTokNone; else token = (*tokenStreamStack.back())[tokenPosition.back()]; } } } void HlslTokenStream::recedeToken() { pushPreToken(token); token = popTokenBuffer(); } // Return the current token class. EHlslTokenClass HlslTokenStream::peek() const { return token.tokenClass; } // Return true, without advancing to the next token, if the current token is // the expected (passed in) token class. bool HlslTokenStream::peekTokenClass(EHlslTokenClass tokenClass) const { return peek() == tokenClass; } // Return true and advance to the next token if the current token is the // expected (passed in) token class. bool HlslTokenStream::acceptTokenClass(EHlslTokenClass tokenClass) { if (peekTokenClass(tokenClass)) { advanceToken(); return true; } return false; } } // end namespace glslang glslang-16.0.0/glslang/HLSL/hlslTokenStream.h000066400000000000000000000074201506534232700207200ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef HLSLTOKENSTREAM_H_ #define HLSLTOKENSTREAM_H_ #include "hlslScanContext.h" namespace glslang { class HlslTokenStream { public: explicit HlslTokenStream(HlslScanContext& scanner) : scanner(scanner), preTokenStackSize(0), tokenBufferPos(0) { } virtual ~HlslTokenStream() { } public: void advanceToken(); void recedeToken(); bool acceptTokenClass(EHlslTokenClass); EHlslTokenClass peek() const; bool peekTokenClass(EHlslTokenClass) const; glslang::TBuiltInVariable mapSemantic(const char* upperCase) { return scanner.mapSemantic(upperCase); } void pushTokenStream(const TVector* tokens); void popTokenStream(); protected: HlslToken token; // the token we are currently looking at, but have not yet accepted private: HlslTokenStream(); HlslTokenStream& operator=(const HlslTokenStream&); HlslScanContext& scanner; // lexical scanner, to get next token from source file TVector*> tokenStreamStack; // for getting the next token from an existing vector of tokens TVector tokenPosition; TVector currentTokenStack; // This is the number of tokens we can recedeToken() over. static const int tokenBufferSize = 2; // Previously scanned tokens, returned for future advances, // so logically in front of the token stream. // Is logically a stack; needs last in last out semantics. // Currently implemented as a stack of size 2. HlslToken preTokenStack[tokenBufferSize]; int preTokenStackSize; void pushPreToken(const HlslToken&); HlslToken popPreToken(); // Previously scanned tokens, not yet returned for future advances, // but available for that. // Is logically a fifo for normal advances, and a stack for recession. // Currently implemented with an intrinsic size of 2. HlslToken tokenBuffer[tokenBufferSize]; int tokenBufferPos; void pushTokenBuffer(const HlslToken&); HlslToken popTokenBuffer(); }; } // end namespace glslang #endif // HLSLTOKENSTREAM_H_ glslang-16.0.0/glslang/HLSL/hlslTokens.h000066400000000000000000000226341506534232700177330ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef EHLSLTOKENS_H_ #define EHLSLTOKENS_H_ namespace glslang { enum EHlslTokenClass { EHTokNone = 0, // qualifiers EHTokStatic, EHTokConst, EHTokSNorm, EHTokUnorm, EHTokExtern, EHTokUniform, EHTokVolatile, EHTokPrecise, EHTokShared, EHTokGroupShared, EHTokLinear, EHTokCentroid, EHTokNointerpolation, EHTokNoperspective, EHTokSample, EHTokRowMajor, EHTokColumnMajor, EHTokPackOffset, EHTokIn, EHTokOut, EHTokInOut, EHTokLayout, EHTokGloballyCoherent, EHTokInline, // primitive types EHTokPoint, EHTokLine, EHTokTriangle, EHTokLineAdj, EHTokTriangleAdj, // stream out types EHTokPointStream, EHTokLineStream, EHTokTriangleStream, // Tessellation patches EHTokInputPatch, EHTokOutputPatch, // template types EHTokBuffer, EHTokVector, EHTokMatrix, // scalar types EHTokVoid, EHTokString, EHTokBool, EHTokInt, EHTokUint, EHTokUint64, EHTokDword, EHTokHalf, EHTokFloat, EHTokDouble, EHTokMin16float, EHTokMin10float, EHTokMin16int, EHTokMin12int, EHTokMin16uint, // vector types EHTokBool1, EHTokBool2, EHTokBool3, EHTokBool4, EHTokFloat1, EHTokFloat2, EHTokFloat3, EHTokFloat4, EHTokInt1, EHTokInt2, EHTokInt3, EHTokInt4, EHTokDouble1, EHTokDouble2, EHTokDouble3, EHTokDouble4, EHTokUint1, EHTokUint2, EHTokUint3, EHTokUint4, EHTokHalf1, EHTokHalf2, EHTokHalf3, EHTokHalf4, EHTokMin16float1, EHTokMin16float2, EHTokMin16float3, EHTokMin16float4, EHTokMin10float1, EHTokMin10float2, EHTokMin10float3, EHTokMin10float4, EHTokMin16int1, EHTokMin16int2, EHTokMin16int3, EHTokMin16int4, EHTokMin12int1, EHTokMin12int2, EHTokMin12int3, EHTokMin12int4, EHTokMin16uint1, EHTokMin16uint2, EHTokMin16uint3, EHTokMin16uint4, // matrix types EHTokInt1x1, EHTokInt1x2, EHTokInt1x3, EHTokInt1x4, EHTokInt2x1, EHTokInt2x2, EHTokInt2x3, EHTokInt2x4, EHTokInt3x1, EHTokInt3x2, EHTokInt3x3, EHTokInt3x4, EHTokInt4x1, EHTokInt4x2, EHTokInt4x3, EHTokInt4x4, EHTokUint1x1, EHTokUint1x2, EHTokUint1x3, EHTokUint1x4, EHTokUint2x1, EHTokUint2x2, EHTokUint2x3, EHTokUint2x4, EHTokUint3x1, EHTokUint3x2, EHTokUint3x3, EHTokUint3x4, EHTokUint4x1, EHTokUint4x2, EHTokUint4x3, EHTokUint4x4, EHTokBool1x1, EHTokBool1x2, EHTokBool1x3, EHTokBool1x4, EHTokBool2x1, EHTokBool2x2, EHTokBool2x3, EHTokBool2x4, EHTokBool3x1, EHTokBool3x2, EHTokBool3x3, EHTokBool3x4, EHTokBool4x1, EHTokBool4x2, EHTokBool4x3, EHTokBool4x4, EHTokFloat1x1, EHTokFloat1x2, EHTokFloat1x3, EHTokFloat1x4, EHTokFloat2x1, EHTokFloat2x2, EHTokFloat2x3, EHTokFloat2x4, EHTokFloat3x1, EHTokFloat3x2, EHTokFloat3x3, EHTokFloat3x4, EHTokFloat4x1, EHTokFloat4x2, EHTokFloat4x3, EHTokFloat4x4, EHTokHalf1x1, EHTokHalf1x2, EHTokHalf1x3, EHTokHalf1x4, EHTokHalf2x1, EHTokHalf2x2, EHTokHalf2x3, EHTokHalf2x4, EHTokHalf3x1, EHTokHalf3x2, EHTokHalf3x3, EHTokHalf3x4, EHTokHalf4x1, EHTokHalf4x2, EHTokHalf4x3, EHTokHalf4x4, EHTokDouble1x1, EHTokDouble1x2, EHTokDouble1x3, EHTokDouble1x4, EHTokDouble2x1, EHTokDouble2x2, EHTokDouble2x3, EHTokDouble2x4, EHTokDouble3x1, EHTokDouble3x2, EHTokDouble3x3, EHTokDouble3x4, EHTokDouble4x1, EHTokDouble4x2, EHTokDouble4x3, EHTokDouble4x4, EHTokMin16float1x1, EHTokMin16float1x2, EHTokMin16float1x3, EHTokMin16float1x4, EHTokMin16float2x1, EHTokMin16float2x2, EHTokMin16float2x3, EHTokMin16float2x4, EHTokMin16float3x1, EHTokMin16float3x2, EHTokMin16float3x3, EHTokMin16float3x4, EHTokMin16float4x1, EHTokMin16float4x2, EHTokMin16float4x3, EHTokMin16float4x4, EHTokMin10float1x1, EHTokMin10float1x2, EHTokMin10float1x3, EHTokMin10float1x4, EHTokMin10float2x1, EHTokMin10float2x2, EHTokMin10float2x3, EHTokMin10float2x4, EHTokMin10float3x1, EHTokMin10float3x2, EHTokMin10float3x3, EHTokMin10float3x4, EHTokMin10float4x1, EHTokMin10float4x2, EHTokMin10float4x3, EHTokMin10float4x4, EHTokMin16int1x1, EHTokMin16int1x2, EHTokMin16int1x3, EHTokMin16int1x4, EHTokMin16int2x1, EHTokMin16int2x2, EHTokMin16int2x3, EHTokMin16int2x4, EHTokMin16int3x1, EHTokMin16int3x2, EHTokMin16int3x3, EHTokMin16int3x4, EHTokMin16int4x1, EHTokMin16int4x2, EHTokMin16int4x3, EHTokMin16int4x4, EHTokMin12int1x1, EHTokMin12int1x2, EHTokMin12int1x3, EHTokMin12int1x4, EHTokMin12int2x1, EHTokMin12int2x2, EHTokMin12int2x3, EHTokMin12int2x4, EHTokMin12int3x1, EHTokMin12int3x2, EHTokMin12int3x3, EHTokMin12int3x4, EHTokMin12int4x1, EHTokMin12int4x2, EHTokMin12int4x3, EHTokMin12int4x4, EHTokMin16uint1x1, EHTokMin16uint1x2, EHTokMin16uint1x3, EHTokMin16uint1x4, EHTokMin16uint2x1, EHTokMin16uint2x2, EHTokMin16uint2x3, EHTokMin16uint2x4, EHTokMin16uint3x1, EHTokMin16uint3x2, EHTokMin16uint3x3, EHTokMin16uint3x4, EHTokMin16uint4x1, EHTokMin16uint4x2, EHTokMin16uint4x3, EHTokMin16uint4x4, // texturing types EHTokSampler, EHTokSampler1d, EHTokSampler2d, EHTokSampler3d, EHTokSamplerCube, EHTokSamplerState, EHTokSamplerComparisonState, EHTokTexture, EHTokTexture1d, EHTokTexture1darray, EHTokTexture2d, EHTokTexture2darray, EHTokTexture3d, EHTokTextureCube, EHTokTextureCubearray, EHTokTexture2DMS, EHTokTexture2DMSarray, EHTokRWTexture1d, EHTokRWTexture1darray, EHTokRWTexture2d, EHTokRWTexture2darray, EHTokRWTexture3d, EHTokRWBuffer, EHTokSubpassInput, EHTokSubpassInputMS, // Structure buffer variants EHTokAppendStructuredBuffer, EHTokByteAddressBuffer, EHTokConsumeStructuredBuffer, EHTokRWByteAddressBuffer, EHTokRWStructuredBuffer, EHTokStructuredBuffer, EHTokTextureBuffer, // variable, user type, ... EHTokIdentifier, EHTokClass, EHTokStruct, EHTokCBuffer, EHTokTBuffer, EHTokTypedef, EHTokThis, EHTokNamespace, EHTokConstantBuffer, // constant EHTokFloat16Constant, EHTokFloatConstant, EHTokDoubleConstant, EHTokIntConstant, EHTokUintConstant, EHTokBoolConstant, EHTokStringConstant, // control flow EHTokFor, EHTokDo, EHTokWhile, EHTokBreak, EHTokContinue, EHTokIf, EHTokElse, EHTokDiscard, EHTokReturn, EHTokSwitch, EHTokCase, EHTokDefault, // expressions EHTokLeftOp, EHTokRightOp, EHTokIncOp, EHTokDecOp, EHTokLeOp, EHTokGeOp, EHTokEqOp, EHTokNeOp, EHTokAndOp, EHTokOrOp, EHTokXorOp, EHTokAssign, EHTokMulAssign, EHTokDivAssign, EHTokAddAssign, EHTokModAssign, EHTokLeftAssign, EHTokRightAssign, EHTokAndAssign, EHTokXorAssign, EHTokOrAssign, EHTokSubAssign, EHTokLeftParen, EHTokRightParen, EHTokLeftBracket, EHTokRightBracket, EHTokLeftBrace, EHTokRightBrace, EHTokDot, EHTokComma, EHTokColon, EHTokColonColon, EHTokSemicolon, EHTokBang, EHTokDash, EHTokTilde, EHTokPlus, EHTokStar, EHTokSlash, EHTokPercent, EHTokLeftAngle, EHTokRightAngle, EHTokVerticalBar, EHTokCaret, EHTokAmpersand, EHTokQuestion, }; } // end namespace glslang #endif // EHLSLTOKENS_H_ glslang-16.0.0/glslang/HLSL/pch.h000066400000000000000000000036451506534232700163600ustar00rootroot00000000000000#ifndef _PCH_H #define _PCH_H // // Copyright (C) 2018 The Khronos Group Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "hlslAttributes.h" #include "hlslGrammar.h" #include "hlslParseHelper.h" #include "hlslScanContext.h" #include "../MachineIndependent/Scan.h" #include "../MachineIndependent/preprocessor/PpContext.h" #include #include #include #include #include #endif /* _PCH_H */ glslang-16.0.0/glslang/Include/000077500000000000000000000000001506534232700162465ustar00rootroot00000000000000glslang-16.0.0/glslang/Include/BaseTypes.h000066400000000000000000000547041506534232700203300ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _BASICTYPES_INCLUDED_ #define _BASICTYPES_INCLUDED_ namespace glslang { // // Basic type. Arrays, vectors, sampler details, etc., are orthogonal to this. // enum TBasicType { EbtVoid, EbtFloat, EbtDouble, EbtFloat16, EbtBFloat16, EbtFloatE5M2, EbtFloatE4M3, EbtInt8, EbtUint8, EbtInt16, EbtUint16, EbtInt, EbtUint, EbtInt64, EbtUint64, EbtBool, EbtAtomicUint, EbtSampler, EbtStruct, EbtBlock, EbtAccStruct, EbtReference, EbtRayQuery, EbtHitObjectNV, EbtCoopmat, EbtFunction, EbtTensorLayoutNV, EbtTensorViewNV, EbtCoopvecNV, EbtTensorARM, // SPIR-V type defined by spirv_type EbtSpirvType, // HLSL types that live only temporarily. EbtString, EbtNumTypes }; // // Storage qualifiers. Should align with different kinds of storage or // resource or GLSL storage qualifier. Expansion is deprecated. // // N.B.: You probably DON'T want to add anything here, but rather just add it // to the built-in variables. See the comment above TBuiltInVariable. // // A new built-in variable will normally be an existing qualifier, like 'in', 'out', etc. // DO NOT follow the design pattern of, say EvqInstanceId, etc. // enum TStorageQualifier { EvqTemporary, // For temporaries (within a function), read/write EvqGlobal, // For globals read/write EvqConst, // User-defined constant values, will be semantically constant and constant folded EvqVaryingIn, // pipeline input, read only, also supercategory for all built-ins not included in this enum (see TBuiltInVariable) EvqVaryingOut, // pipeline output, read/write, also supercategory for all built-ins not included in this enum (see TBuiltInVariable) EvqUniform, // read only, shared with app EvqBuffer, // read/write, shared with app EvqShared, // compute shader's read/write 'shared' qualifier EvqSpirvStorageClass, // spirv_storage_class EvqPayload, EvqPayloadIn, EvqHitAttr, EvqCallableData, EvqCallableDataIn, EvqHitObjectAttrNV, 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 EvqInOut, EvqConstReadOnly, // input; also other read-only types having neither a constant value nor constant-value semantics // built-ins read by vertex shader EvqVertexId, EvqInstanceId, // built-ins written by vertex shader EvqPosition, EvqPointSize, EvqClipVertex, // built-ins read by fragment shader EvqFace, EvqFragCoord, EvqPointCoord, // built-ins written by fragment shader EvqFragColor, EvqFragDepth, EvqFragStencil, EvqTileImageEXT, // end of list EvqLast }; // // Subcategories of the TStorageQualifier, simply to give a direct mapping // between built-in variable names and an numerical value (the enum). // // For backward compatibility, there is some redundancy between the // TStorageQualifier and these. Existing members should both be maintained accurately. // However, any new built-in variable (and any existing non-redundant one) // must follow the pattern that the specific built-in is here, and only its // general qualifier is in TStorageQualifier. // // Something like gl_Position, which is sometimes 'in' and sometimes 'out' // shows up as two different built-in variables in a single stage, but // only has a single enum in TBuiltInVariable, so both the // TStorageQualifier and the TBuitinVariable are needed to distinguish // between them. // enum TBuiltInVariable { EbvNone, EbvNumWorkGroups, EbvWorkGroupSize, EbvWorkGroupId, EbvLocalInvocationId, EbvGlobalInvocationId, EbvLocalInvocationIndex, EbvNumSubgroups, EbvSubgroupID, EbvSubGroupSize, EbvSubGroupInvocation, EbvSubGroupEqMask, EbvSubGroupGeMask, EbvSubGroupGtMask, EbvSubGroupLeMask, EbvSubGroupLtMask, EbvSubgroupSize2, EbvSubgroupInvocation2, EbvSubgroupEqMask2, EbvSubgroupGeMask2, EbvSubgroupGtMask2, EbvSubgroupLeMask2, EbvSubgroupLtMask2, EbvVertexId, EbvInstanceId, EbvVertexIndex, EbvInstanceIndex, EbvBaseVertex, EbvBaseInstance, EbvDrawId, EbvPosition, EbvPointSize, EbvClipVertex, EbvClipDistance, EbvCullDistance, EbvNormal, EbvVertex, EbvMultiTexCoord0, EbvMultiTexCoord1, EbvMultiTexCoord2, EbvMultiTexCoord3, EbvMultiTexCoord4, EbvMultiTexCoord5, EbvMultiTexCoord6, EbvMultiTexCoord7, EbvFrontColor, EbvBackColor, EbvFrontSecondaryColor, EbvBackSecondaryColor, EbvTexCoord, EbvFogFragCoord, EbvInvocationId, EbvPrimitiveId, EbvLayer, EbvViewportIndex, EbvPatchVertices, EbvTessLevelOuter, EbvTessLevelInner, EbvBoundingBox, EbvTessCoord, EbvColor, EbvSecondaryColor, EbvFace, EbvFragCoord, EbvPointCoord, EbvFragColor, EbvFragData, EbvFragDepth, EbvFragStencilRef, EbvSampleId, EbvSamplePosition, EbvSampleMask, EbvHelperInvocation, EbvBaryCoordNoPersp, EbvBaryCoordNoPerspCentroid, EbvBaryCoordNoPerspSample, EbvBaryCoordSmooth, EbvBaryCoordSmoothCentroid, EbvBaryCoordSmoothSample, EbvBaryCoordPullModel, EbvViewIndex, EbvDeviceIndex, EbvShadingRateKHR, EbvPrimitiveShadingRateKHR, EbvFragSizeEXT, EbvFragInvocationCountEXT, EbvSecondaryFragDataEXT, EbvSecondaryFragColorEXT, EbvViewportMaskNV, EbvSecondaryPositionNV, EbvSecondaryViewportMaskNV, EbvPositionPerViewNV, EbvViewportMaskPerViewNV, EbvFragFullyCoveredNV, EbvFragmentSizeNV, EbvInvocationsPerPixelNV, // ray tracing EbvLaunchId, EbvLaunchSize, EbvInstanceCustomIndex, EbvGeometryIndex, EbvWorldRayOrigin, EbvWorldRayDirection, EbvObjectRayOrigin, EbvObjectRayDirection, EbvRayTmin, EbvRayTmax, EbvCullMask, EbvHitKind, EbvObjectToWorld, EbvObjectToWorld3x4, EbvWorldToObject, EbvWorldToObject3x4, EbvIncomingRayFlags, EbvCurrentRayTimeNV, EbvClusterIDNV, // barycentrics EbvBaryCoordNV, EbvBaryCoordNoPerspNV, EbvBaryCoordEXT, EbvBaryCoordNoPerspEXT, // mesh shaders EbvTaskCountNV, EbvPrimitiveCountNV, EbvPrimitiveIndicesNV, EbvClipDistancePerViewNV, EbvCullDistancePerViewNV, EbvLayerPerViewNV, EbvMeshViewCountNV, EbvMeshViewIndicesNV, EbvMicroTrianglePositionNV, EbvMicroTriangleBaryNV, EbvHitKindFrontFacingMicroTriangleNV, EbvHitKindBackFacingMicroTriangleNV, EbvHitIsSphereNV, EbvHitIsLSSNV, EbvHitSpherePositionNV, EbvHitSphereRadiusNV, EbvHitLSSPositionsNV, EbvHitLSSRadiiNV, //GL_EXT_mesh_shader EbvPrimitivePointIndicesEXT, EbvPrimitiveLineIndicesEXT, EbvPrimitiveTriangleIndicesEXT, EbvCullPrimitiveEXT, // sm builtins EbvWarpsPerSM, EbvSMCount, EbvWarpID, EbvSMID, // HLSL built-ins that live only temporarily, until they get remapped // to one of the above. EbvFragDepthGreater, EbvFragDepthLesser, EbvGsOutputStream, EbvOutputPatch, EbvInputPatch, // structbuffer types EbvAppendConsume, // no need to differentiate append and consume EbvRWStructuredBuffer, EbvStructuredBuffer, EbvByteAddressBuffer, EbvRWByteAddressBuffer, // ARM specific core builtins EbvCoreCountARM, EbvCoreIDARM, EbvCoreMaxIDARM, EbvWarpIDARM, EbvWarpMaxIDARM, EbvPositionFetch, // SPV_QCOM_tile_shading EbvTileOffsetQCOM, EbvTileDimensionQCOM, EbvTileApronSizeQCOM, EbvLast }; // In this enum, order matters; users can assume higher precision is a bigger value // and EpqNone is 0. enum TPrecisionQualifier { EpqNone = 0, EpqLow, EpqMedium, EpqHigh }; // These will show up in error messages __inline const char* GetStorageQualifierString(TStorageQualifier q) { switch (q) { case EvqTemporary: return "temp"; break; case EvqGlobal: return "global"; break; case EvqConst: return "const"; break; case EvqConstReadOnly: return "const (read only)"; break; case EvqSpirvStorageClass: return "spirv_storage_class"; break; case EvqVaryingIn: return "in"; break; case EvqVaryingOut: return "out"; break; case EvqUniform: return "uniform"; break; case EvqBuffer: return "buffer"; break; case EvqShared: return "shared"; break; case EvqIn: return "in"; break; case EvqOut: return "out"; break; case EvqInOut: return "inout"; break; case EvqVertexId: return "gl_VertexId"; break; case EvqInstanceId: return "gl_InstanceId"; break; case EvqPosition: return "gl_Position"; break; case EvqPointSize: return "gl_PointSize"; break; case EvqClipVertex: return "gl_ClipVertex"; break; case EvqFace: return "gl_FrontFacing"; break; case EvqFragCoord: return "gl_FragCoord"; break; 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; case EvqHitObjectAttrNV:return "hitObjectAttributeNV"; break; default: return "unknown qualifier"; } } __inline const char* GetBuiltInVariableString(TBuiltInVariable v) { switch (v) { case EbvNone: return ""; case EbvNumWorkGroups: return "NumWorkGroups"; case EbvWorkGroupSize: return "WorkGroupSize"; case EbvWorkGroupId: return "WorkGroupID"; case EbvLocalInvocationId: return "LocalInvocationID"; case EbvGlobalInvocationId: return "GlobalInvocationID"; case EbvLocalInvocationIndex: return "LocalInvocationIndex"; case EbvNumSubgroups: return "NumSubgroups"; case EbvSubgroupID: return "SubgroupID"; case EbvSubGroupSize: return "SubGroupSize"; case EbvSubGroupInvocation: return "SubGroupInvocation"; case EbvSubGroupEqMask: return "SubGroupEqMask"; case EbvSubGroupGeMask: return "SubGroupGeMask"; case EbvSubGroupGtMask: return "SubGroupGtMask"; case EbvSubGroupLeMask: return "SubGroupLeMask"; case EbvSubGroupLtMask: return "SubGroupLtMask"; case EbvSubgroupSize2: return "SubgroupSize"; case EbvSubgroupInvocation2: return "SubgroupInvocationID"; case EbvSubgroupEqMask2: return "SubgroupEqMask"; case EbvSubgroupGeMask2: return "SubgroupGeMask"; case EbvSubgroupGtMask2: return "SubgroupGtMask"; case EbvSubgroupLeMask2: return "SubgroupLeMask"; case EbvSubgroupLtMask2: return "SubgroupLtMask"; case EbvVertexId: return "VertexId"; case EbvInstanceId: return "InstanceId"; case EbvVertexIndex: return "VertexIndex"; case EbvInstanceIndex: return "InstanceIndex"; case EbvBaseVertex: return "BaseVertex"; case EbvBaseInstance: return "BaseInstance"; case EbvDrawId: return "DrawId"; case EbvPosition: return "Position"; case EbvPointSize: return "PointSize"; case EbvClipVertex: return "ClipVertex"; case EbvClipDistance: return "ClipDistance"; case EbvCullDistance: return "CullDistance"; case EbvNormal: return "Normal"; case EbvVertex: return "Vertex"; case EbvMultiTexCoord0: return "MultiTexCoord0"; case EbvMultiTexCoord1: return "MultiTexCoord1"; case EbvMultiTexCoord2: return "MultiTexCoord2"; case EbvMultiTexCoord3: return "MultiTexCoord3"; case EbvMultiTexCoord4: return "MultiTexCoord4"; case EbvMultiTexCoord5: return "MultiTexCoord5"; case EbvMultiTexCoord6: return "MultiTexCoord6"; case EbvMultiTexCoord7: return "MultiTexCoord7"; case EbvFrontColor: return "FrontColor"; case EbvBackColor: return "BackColor"; case EbvFrontSecondaryColor: return "FrontSecondaryColor"; case EbvBackSecondaryColor: return "BackSecondaryColor"; case EbvTexCoord: return "TexCoord"; case EbvFogFragCoord: return "FogFragCoord"; case EbvInvocationId: return "InvocationID"; case EbvPrimitiveId: return "PrimitiveID"; case EbvLayer: return "Layer"; case EbvViewportIndex: return "ViewportIndex"; case EbvPatchVertices: return "PatchVertices"; case EbvTessLevelOuter: return "TessLevelOuter"; case EbvTessLevelInner: return "TessLevelInner"; case EbvBoundingBox: return "BoundingBox"; case EbvTessCoord: return "TessCoord"; case EbvColor: return "Color"; case EbvSecondaryColor: return "SecondaryColor"; case EbvFace: return "Face"; case EbvFragCoord: return "FragCoord"; case EbvPointCoord: return "PointCoord"; case EbvFragColor: return "FragColor"; case EbvFragData: return "FragData"; case EbvFragDepth: return "FragDepth"; case EbvFragStencilRef: return "FragStencilRef"; case EbvSampleId: return "SampleId"; case EbvSamplePosition: return "SamplePosition"; case EbvSampleMask: return "SampleMaskIn"; case EbvHelperInvocation: return "HelperInvocation"; case EbvBaryCoordNoPersp: return "BaryCoordNoPersp"; case EbvBaryCoordNoPerspCentroid: return "BaryCoordNoPerspCentroid"; case EbvBaryCoordNoPerspSample: return "BaryCoordNoPerspSample"; case EbvBaryCoordSmooth: return "BaryCoordSmooth"; case EbvBaryCoordSmoothCentroid: return "BaryCoordSmoothCentroid"; case EbvBaryCoordSmoothSample: return "BaryCoordSmoothSample"; case EbvBaryCoordPullModel: return "BaryCoordPullModel"; case EbvViewIndex: return "ViewIndex"; case EbvDeviceIndex: return "DeviceIndex"; case EbvFragSizeEXT: return "FragSizeEXT"; case EbvFragInvocationCountEXT: return "FragInvocationCountEXT"; case EbvSecondaryFragDataEXT: return "SecondaryFragDataEXT"; case EbvSecondaryFragColorEXT: return "SecondaryFragColorEXT"; case EbvViewportMaskNV: return "ViewportMaskNV"; case EbvSecondaryPositionNV: return "SecondaryPositionNV"; case EbvSecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; case EbvPositionPerViewNV: return "PositionPerViewNV"; case EbvViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; case EbvFragFullyCoveredNV: return "FragFullyCoveredNV"; case EbvFragmentSizeNV: return "FragmentSizeNV"; case EbvInvocationsPerPixelNV: return "InvocationsPerPixelNV"; case EbvLaunchId: return "LaunchIdNV"; case EbvLaunchSize: return "LaunchSizeNV"; case EbvInstanceCustomIndex: return "InstanceCustomIndexNV"; case EbvGeometryIndex: return "GeometryIndexEXT"; case EbvWorldRayOrigin: return "WorldRayOriginNV"; case EbvWorldRayDirection: return "WorldRayDirectionNV"; case EbvObjectRayOrigin: return "ObjectRayOriginNV"; case EbvObjectRayDirection: return "ObjectRayDirectionNV"; case EbvRayTmin: return "ObjectRayTminNV"; case EbvRayTmax: return "ObjectRayTmaxNV"; case EbvHitKind: return "HitKindNV"; case EbvIncomingRayFlags: return "IncomingRayFlagsNV"; case EbvObjectToWorld: return "ObjectToWorldNV"; case EbvWorldToObject: return "WorldToObjectNV"; case EbvCurrentRayTimeNV: return "CurrentRayTimeNV"; case EbvClusterIDNV: return "ClusterIDNV"; case EbvBaryCoordEXT: case EbvBaryCoordNV: return "BaryCoordKHR"; case EbvBaryCoordNoPerspEXT: case EbvBaryCoordNoPerspNV: return "BaryCoordNoPerspKHR"; case EbvTaskCountNV: return "TaskCountNV"; case EbvPrimitiveCountNV: return "PrimitiveCountNV"; case EbvPrimitiveIndicesNV: return "PrimitiveIndicesNV"; case EbvClipDistancePerViewNV: return "ClipDistancePerViewNV"; case EbvCullDistancePerViewNV: return "CullDistancePerViewNV"; 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"; case EbvWarpID: return "WarpIDNV"; case EbvSMID: return "SMIDNV"; case EbvShadingRateKHR: return "ShadingRateKHR"; case EbvPrimitiveShadingRateKHR: return "PrimitiveShadingRateKHR"; case EbvHitKindFrontFacingMicroTriangleNV: return "HitKindFrontFacingMicroTriangleNV"; case EbvHitKindBackFacingMicroTriangleNV: return "HitKindBackFacingMicroTriangleNV"; case EbvHitIsSphereNV: return "HitIsSphereNV"; case EbvHitIsLSSNV: return "HitIsLSSNV"; case EbvHitSpherePositionNV: return "HitSpherePositionNV"; case EbvHitSphereRadiusNV: return "HitSphereRadiusNV"; case EbvHitLSSPositionsNV: return "HitSpherePositionsNV"; case EbvHitLSSRadiiNV: return "HitLSSRadiiNV"; default: return "unknown built-in variable"; } } __inline const char* GetPrecisionQualifierString(TPrecisionQualifier p) { switch (p) { case EpqNone: return ""; break; case EpqLow: return "lowp"; break; case EpqMedium: return "mediump"; break; case EpqHigh: return "highp"; break; default: return "unknown precision qualifier"; } } __inline bool isTypeSignedInt(TBasicType type) { switch (type) { case EbtInt8: case EbtInt16: case EbtInt: case EbtInt64: return true; default: return false; } } __inline bool isTypeUnsignedInt(TBasicType type) { switch (type) { case EbtUint8: case EbtUint16: case EbtUint: case EbtUint64: return true; default: return false; } } __inline bool isTypeInt(TBasicType type) { return isTypeSignedInt(type) || isTypeUnsignedInt(type); } __inline bool isTypeFloat(TBasicType type) { switch (type) { case EbtFloat: case EbtDouble: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: return true; default: return false; } } __inline uint32_t GetNumBits(TBasicType type) { switch (type) { case EbtInt8: case EbtUint8: case EbtFloatE5M2: case EbtFloatE4M3: return 8; case EbtBFloat16: case EbtFloat16: case EbtInt16: case EbtUint16: return 16; case EbtInt: case EbtUint: case EbtFloat: return 32; case EbtDouble: case EbtInt64: case EbtUint64: return 64; default: assert(false); return 0; } } __inline int getTypeRank(TBasicType type) { int res = -1; switch(type) { case EbtInt8: case EbtUint8: res = 0; break; case EbtInt16: case EbtUint16: res = 1; break; case EbtInt: case EbtUint: res = 2; break; case EbtInt64: case EbtUint64: res = 3; break; default: assert(false); break; } return res; } } // end namespace glslang #endif // _BASICTYPES_INCLUDED_ glslang-16.0.0/glslang/Include/Common.h000066400000000000000000000222221506534232700176470ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _COMMON_INCLUDED_ #define _COMMON_INCLUDED_ #include #include #ifdef _MSC_VER #include #else #include #endif #include #include #include #include #include #include #include #include #include #include #if defined(__ANDROID__) #include namespace std { template std::string to_string(const T& val) { std::ostringstream os; os << val; return os.str(); } } #endif #if defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API #include #ifndef snprintf #define snprintf sprintf_s #endif #define safe_vsprintf(buf,max,format,args) vsnprintf_s((buf), (max), (max), (format), (args)) #elif defined (solaris) #define safe_vsprintf(buf,max,format,args) vsnprintf((buf), (max), (format), (args)) #include #define UINT_PTR uintptr_t #else #define safe_vsprintf(buf,max,format,args) vsnprintf((buf), (max), (format), (args)) #include #define UINT_PTR uintptr_t #endif #if defined(_MSC_VER) #define strdup _strdup #endif /* windows only pragma */ #ifdef _MSC_VER #pragma warning(disable : 4786) // Don't warn about too long identifiers #pragma warning(disable : 4514) // unused inline method #pragma warning(disable : 4201) // nameless union #endif // Allow compilation to WASI which does not support threads yet. #ifdef __wasi__ #define DISABLE_THREAD_SUPPORT #endif #include "PoolAlloc.h" // // Put POOL_ALLOCATOR_NEW_DELETE in base classes to make them use this scheme. // #define POOL_ALLOCATOR_NEW_DELETE(A) \ void* operator new(size_t s) { return (A).allocate(s); } \ void* operator new(size_t, void *_Where) { return (_Where); } \ void operator delete(void*) { } \ void operator delete(void *, void *) { } \ void* operator new[](size_t s) { return (A).allocate(s); } \ void* operator new[](size_t, void *_Where) { return (_Where); } \ void operator delete[](void*) { } \ void operator delete[](void *, void *) { } namespace glslang { // // Pool version of string. // typedef pool_allocator TStringAllocator; typedef std::basic_string , TStringAllocator> TString; } // end namespace glslang // Repackage the std::hash for use by unordered map/set with a TString key. namespace std { template<> struct hash { std::size_t operator()(const glslang::TString& s) const { const unsigned _FNV_offset_basis = 2166136261U; const unsigned _FNV_prime = 16777619U; unsigned _Val = _FNV_offset_basis; size_t _Count = s.size(); const char* _First = s.c_str(); for (size_t _Next = 0; _Next < _Count; ++_Next) { _Val ^= (unsigned)_First[_Next]; _Val *= _FNV_prime; } return _Val; } }; } namespace glslang { inline TString* NewPoolTString(const char* s) { void* memory = GetThreadPoolAllocator().allocate(sizeof(TString)); return new(memory) TString(s); } template inline T* NewPoolObject(T*) { return new(GetThreadPoolAllocator().allocate(sizeof(T))) T; } template inline T* NewPoolObject(T, int instances) { return new(GetThreadPoolAllocator().allocate(instances * sizeof(T))) T[instances]; } inline bool StartsWith(TString const &str, const char *prefix) { return str.compare(0, strlen(prefix), prefix) == 0; } // // Pool allocator versions of vectors, lists, and maps // template class TVector : public std::vector > { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) typedef typename std::vector >::size_type size_type; TVector() : std::vector >() {} TVector(const pool_allocator& a) : std::vector >(a) {} TVector(size_type i) : std::vector >(i) {} TVector(size_type i, const T& val) : std::vector >(i, val) {} }; template class TList : public std::list > { }; template > class TMap : public std::map > > { }; template , class PRED = std::equal_to > class TUnorderedMap : public std::unordered_map > > { }; template > class TSet : public std::set > { }; // // Persistent string memory. Should only be used for strings that survive // across compiles/links. // typedef std::basic_string TPersistString; // // templatized min and max functions. // template T Min(const T a, const T b) { return a < b ? a : b; } template T Max(const T a, const T b) { return a > b ? a : b; } // // Create a TString object from an integer. // #if defined(_MSC_VER) || (defined(MINGW_HAS_SECURE_API) && 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 _itoa_s(i, text, sizeof(text), base); return text; } #else 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 // we assume base 10 for all cases snprintf(text, sizeof(text), "%d", i); return text; } #endif struct TSourceLoc { void init() { name = nullptr; string = 0; line = 0; column = 0; } void init(int stringNum) { init(); string = stringNum; } // Returns the name if it exists. Otherwise, returns the string number. std::string getStringNameOrNum(bool quoteStringName = true) const { if (name != nullptr) { TString qstr = quoteStringName ? ("\"" + *name + "\"") : *name; std::string ret_str(qstr.c_str()); return ret_str; } return std::to_string((long long)string); } const char* getFilename() const { if (name == nullptr) return nullptr; return name->c_str(); } const char* getFilenameStr() const { return name == nullptr ? "" : name->c_str(); } TString* name; // descriptive name for this string, when a textual name is available, otherwise nullptr int string; int line; int column; }; class TPragmaTable : public TMap { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) }; const int MaxTokenLength = 1024; template bool IsPow2(T powerOf2) { if (powerOf2 <= 0) return false; return (powerOf2 & (powerOf2 - 1)) == 0; } // Round number up to a multiple of the given powerOf2, which is not // a power, just a number that must be a power of 2. template void RoundToPow2(T& number, int powerOf2) { assert(IsPow2(powerOf2)); number = (number + powerOf2 - 1) & ~(powerOf2 - 1); } template bool IsMultipleOfPow2(T number, int powerOf2) { assert(IsPow2(powerOf2)); return ! (number & (powerOf2 - 1)); } // Returns log2 of an integer power of 2. // T should be integral. template int IntLog2(T n) { assert(IsPow2(n)); int result = 0; while ((T(1) << result) != n) { result++; } return result; } } // end namespace glslang #endif // _COMMON_INCLUDED_ glslang-16.0.0/glslang/Include/ConstantUnion.h000066400000000000000000001066641506534232700212360ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _CONSTANT_UNION_INCLUDED_ #define _CONSTANT_UNION_INCLUDED_ #include "../Include/Common.h" #include "../Include/BaseTypes.h" namespace glslang { class TConstUnion { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TConstUnion() : iConst(0), type(EbtInt) { } void setI8Const(signed char i) { i8Const = i; type = EbtInt8; } void setU8Const(unsigned char u) { u8Const = u; type = EbtUint8; } void setI16Const(signed short i) { i16Const = i; type = EbtInt16; } void setU16Const(unsigned short u) { u16Const = u; type = EbtUint16; } void setIConst(int i) { iConst = i; type = EbtInt; } void setUConst(unsigned int u) { uConst = u; type = EbtUint; } void setI64Const(long long i64) { i64Const = i64; type = EbtInt64; } void setU64Const(unsigned long long u64) { u64Const = u64; type = EbtUint64; } void setDConst(double d) { dConst = d; type = EbtDouble; } void setBConst(bool b) { bConst = b; type = EbtBool; } void setSConst(const TString* s) { sConst = s; type = EbtString; } signed char getI8Const() const { return i8Const; } unsigned char getU8Const() const { return u8Const; } signed short getI16Const() const { return i16Const; } unsigned short getU16Const() const { return u16Const; } int getIConst() const { return iConst; } unsigned int getUConst() const { return uConst; } long long getI64Const() const { return i64Const; } unsigned long long getU64Const() const { return u64Const; } double getDConst() const { return dConst; } bool getBConst() const { return bConst; } const TString* getSConst() const { return sConst; } bool operator==(const signed char i) const { if (i == i8Const) return true; return false; } bool operator==(const unsigned char u) const { if (u == u8Const) return true; return false; } bool operator==(const signed short i) const { if (i == i16Const) return true; return false; } bool operator==(const unsigned short u) const { if (u == u16Const) return true; return false; } bool operator==(const int i) const { if (i == iConst) return true; return false; } bool operator==(const unsigned int u) const { if (u == uConst) return true; return false; } bool operator==(const long long i64) const { if (i64 == i64Const) return true; return false; } bool operator==(const unsigned long long u64) const { if (u64 == u64Const) return true; return false; } bool operator==(const double d) const { if (d == dConst) return true; return false; } bool operator==(const bool b) const { if (b == bConst) return true; return false; } bool operator==(const TConstUnion& constant) const { if (constant.type != type) return false; switch (type) { case EbtInt: if (constant.iConst == iConst) return true; break; case EbtUint: if (constant.uConst == uConst) return true; break; case EbtBool: if (constant.bConst == bConst) return true; break; case EbtDouble: if (constant.dConst == dConst) return true; break; case EbtInt16: if (constant.i16Const == i16Const) return true; break; case EbtUint16: if (constant.u16Const == u16Const) return true; break; case EbtInt8: if (constant.i8Const == i8Const) return true; break; case EbtUint8: if (constant.u8Const == u8Const) return true; break; case EbtInt64: if (constant.i64Const == i64Const) return true; break; case EbtUint64: if (constant.u64Const == u64Const) return true; break; default: assert(false && "Default missing"); } return false; } bool operator!=(const signed char i) const { return !operator==(i); } bool operator!=(const unsigned char u) const { return !operator==(u); } bool operator!=(const signed short i) const { return !operator==(i); } bool operator!=(const unsigned short u) const { return !operator==(u); } bool operator!=(const int i) const { return !operator==(i); } bool operator!=(const unsigned int u) const { return !operator==(u); } bool operator!=(const long long i) const { return !operator==(i); } bool operator!=(const unsigned long long u) const { return !operator==(u); } bool operator!=(const float f) const { return !operator==(f); } bool operator!=(const bool b) const { return !operator==(b); } bool operator!=(const TConstUnion& constant) const { return !operator==(constant); } bool operator>(const TConstUnion& constant) const { assert(type == constant.type); switch (type) { case EbtInt: if (iConst > constant.iConst) return true; return false; case EbtUint: if (uConst > constant.uConst) return true; return false; case EbtDouble: if (dConst > constant.dConst) return true; return false; case EbtInt8: if (i8Const > constant.i8Const) return true; return false; case EbtUint8: if (u8Const > constant.u8Const) return true; return false; case EbtInt16: if (i16Const > constant.i16Const) return true; return false; case EbtUint16: if (u16Const > constant.u16Const) return true; return false; case EbtInt64: if (i64Const > constant.i64Const) return true; return false; case EbtUint64: if (u64Const > constant.u64Const) return true; return false; default: assert(false && "Default missing"); return false; } } bool operator<(const TConstUnion& constant) const { assert(type == constant.type); switch (type) { case EbtInt8: if (i8Const < constant.i8Const) return true; return false; case EbtUint8: if (u8Const < constant.u8Const) return true; return false; case EbtInt16: if (i16Const < constant.i16Const) return true; return false; case EbtUint16: if (u16Const < constant.u16Const) return true; return false; case EbtInt64: if (i64Const < constant.i64Const) return true; return false; case EbtUint64: if (u64Const < constant.u64Const) return true; return false; case EbtDouble: if (dConst < constant.dConst) return true; return false; case EbtInt: if (iConst < constant.iConst) return true; return false; case EbtUint: if (uConst < constant.uConst) return true; return false; default: assert(false && "Default missing"); return false; } } TConstUnion operator+(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtInt: returnValue.setIConst(iConst + constant.iConst); break; case EbtUint: returnValue.setUConst(uConst + constant.uConst); break; case EbtDouble: returnValue.setDConst(dConst + constant.dConst); break; case EbtInt8: returnValue.setI8Const(i8Const + constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const + constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const + constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const + constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const + constant.u16Const); break; case EbtUint64: returnValue.setU64Const(u64Const + constant.u64Const); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator-(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtInt: returnValue.setIConst(iConst - constant.iConst); break; case EbtUint: returnValue.setUConst(uConst - constant.uConst); break; case EbtDouble: returnValue.setDConst(dConst - constant.dConst); break; case EbtInt8: returnValue.setI8Const(i8Const - constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const - constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const - constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const - constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const - constant.u16Const); break; case EbtUint64: returnValue.setU64Const(u64Const - constant.u64Const); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator*(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtInt: returnValue.setIConst(iConst * constant.iConst); break; case EbtUint: returnValue.setUConst(uConst * constant.uConst); break; case EbtDouble: returnValue.setDConst(dConst * constant.dConst); break; case EbtInt8: returnValue.setI8Const(i8Const * constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const * constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const * constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const * constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const * constant.u16Const); break; case EbtUint64: returnValue.setU64Const(u64Const * constant.u64Const); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator%(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtInt: returnValue.setIConst(iConst % constant.iConst); break; case EbtUint: returnValue.setUConst(uConst % constant.uConst); break; case EbtInt8: returnValue.setI8Const(i8Const % constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const % constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const % constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const % constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const % constant.u16Const); break; case EbtUint64: returnValue.setU64Const(u64Const % constant.u64Const); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator>>(const TConstUnion& constant) const { TConstUnion returnValue; switch (type) { case EbtInt8: switch (constant.type) { case EbtInt8: returnValue.setI8Const(i8Const >> constant.i8Const); break; case EbtUint8: returnValue.setI8Const(i8Const >> constant.u8Const); break; case EbtInt16: returnValue.setI8Const(i8Const >> constant.i16Const); break; case EbtUint16: returnValue.setI8Const(i8Const >> constant.u16Const); break; case EbtInt: returnValue.setI8Const(i8Const >> constant.iConst); break; case EbtUint: returnValue.setI8Const(i8Const >> constant.uConst); break; case EbtInt64: returnValue.setI8Const(i8Const >> constant.i64Const); break; case EbtUint64: returnValue.setI8Const(i8Const >> constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtUint8: switch (constant.type) { case EbtInt8: returnValue.setU8Const(u8Const >> constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const >> constant.u8Const); break; case EbtInt16: returnValue.setU8Const(u8Const >> constant.i16Const); break; case EbtUint16: returnValue.setU8Const(u8Const >> constant.u16Const); break; case EbtInt: returnValue.setU8Const(u8Const >> constant.iConst); break; case EbtUint: returnValue.setU8Const(u8Const >> constant.uConst); break; case EbtInt64: returnValue.setU8Const(u8Const >> constant.i64Const); break; case EbtUint64: returnValue.setU8Const(u8Const >> constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtInt16: switch (constant.type) { case EbtInt8: returnValue.setI16Const(i16Const >> constant.i8Const); break; case EbtUint8: returnValue.setI16Const(i16Const >> constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const >> constant.i16Const); break; case EbtUint16: returnValue.setI16Const(i16Const >> constant.u16Const); break; case EbtInt: returnValue.setI16Const(i16Const >> constant.iConst); break; case EbtUint: returnValue.setI16Const(i16Const >> constant.uConst); break; case EbtInt64: returnValue.setI16Const(i16Const >> constant.i64Const); break; case EbtUint64: returnValue.setI16Const(i16Const >> constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtUint16: switch (constant.type) { case EbtInt8: returnValue.setU16Const(u16Const >> constant.i8Const); break; case EbtUint8: returnValue.setU16Const(u16Const >> constant.u8Const); break; case EbtInt16: returnValue.setU16Const(u16Const >> constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const >> constant.u16Const); break; case EbtInt: returnValue.setU16Const(u16Const >> constant.iConst); break; case EbtUint: returnValue.setU16Const(u16Const >> constant.uConst); break; case EbtInt64: returnValue.setU16Const(u16Const >> constant.i64Const); break; case EbtUint64: returnValue.setU16Const(u16Const >> constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtInt: switch (constant.type) { case EbtInt: returnValue.setIConst(iConst >> constant.iConst); break; case EbtUint: returnValue.setIConst(iConst >> constant.uConst); break; case EbtInt8: returnValue.setIConst(iConst >> constant.i8Const); break; case EbtUint8: returnValue.setIConst(iConst >> constant.u8Const); break; case EbtInt16: returnValue.setIConst(iConst >> constant.i16Const); break; case EbtUint16: returnValue.setIConst(iConst >> constant.u16Const); break; case EbtInt64: returnValue.setIConst(iConst >> constant.i64Const); break; case EbtUint64: returnValue.setIConst(iConst >> constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtUint: switch (constant.type) { case EbtInt: returnValue.setUConst(uConst >> constant.iConst); break; case EbtUint: returnValue.setUConst(uConst >> constant.uConst); break; case EbtInt8: returnValue.setUConst(uConst >> constant.i8Const); break; case EbtUint8: returnValue.setUConst(uConst >> constant.u8Const); break; case EbtInt16: returnValue.setUConst(uConst >> constant.i16Const); break; case EbtUint16: returnValue.setUConst(uConst >> constant.u16Const); break; case EbtInt64: returnValue.setUConst(uConst >> constant.i64Const); break; case EbtUint64: returnValue.setUConst(uConst >> constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtInt64: switch (constant.type) { case EbtInt8: returnValue.setI64Const(i64Const >> constant.i8Const); break; case EbtUint8: returnValue.setI64Const(i64Const >> constant.u8Const); break; case EbtInt16: returnValue.setI64Const(i64Const >> constant.i16Const); break; case EbtUint16: returnValue.setI64Const(i64Const >> constant.u16Const); break; case EbtInt: returnValue.setI64Const(i64Const >> constant.iConst); break; case EbtUint: returnValue.setI64Const(i64Const >> constant.uConst); break; case EbtInt64: returnValue.setI64Const(i64Const >> constant.i64Const); break; case EbtUint64: returnValue.setI64Const(i64Const >> constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtUint64: switch (constant.type) { case EbtInt8: returnValue.setU64Const(u64Const >> constant.i8Const); break; case EbtUint8: returnValue.setU64Const(u64Const >> constant.u8Const); break; case EbtInt16: returnValue.setU64Const(u64Const >> constant.i16Const); break; case EbtUint16: returnValue.setU64Const(u64Const >> constant.u16Const); break; case EbtInt: returnValue.setU64Const(u64Const >> constant.iConst); break; case EbtUint: returnValue.setU64Const(u64Const >> constant.uConst); break; case EbtInt64: returnValue.setU64Const(u64Const >> constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const >> constant.u64Const); break; default: assert(false && "Default missing"); } break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator<<(const TConstUnion& constant) const { TConstUnion returnValue; switch (type) { case EbtInt8: switch (constant.type) { case EbtInt8: returnValue.setI8Const(i8Const << constant.i8Const); break; case EbtUint8: returnValue.setI8Const(i8Const << constant.u8Const); break; case EbtInt16: returnValue.setI8Const(i8Const << constant.i16Const); break; case EbtUint16: returnValue.setI8Const(i8Const << constant.u16Const); break; case EbtInt: returnValue.setI8Const(i8Const << constant.iConst); break; case EbtUint: returnValue.setI8Const(i8Const << constant.uConst); break; case EbtInt64: returnValue.setI8Const(i8Const << constant.i64Const); break; case EbtUint64: returnValue.setI8Const(i8Const << constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtUint8: switch (constant.type) { case EbtInt8: returnValue.setU8Const(u8Const << constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const << constant.u8Const); break; case EbtInt16: returnValue.setU8Const(u8Const << constant.i16Const); break; case EbtUint16: returnValue.setU8Const(u8Const << constant.u16Const); break; case EbtInt: returnValue.setU8Const(u8Const << constant.iConst); break; case EbtUint: returnValue.setU8Const(u8Const << constant.uConst); break; case EbtInt64: returnValue.setU8Const(u8Const << constant.i64Const); break; case EbtUint64: returnValue.setU8Const(u8Const << constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtInt16: switch (constant.type) { case EbtInt8: returnValue.setI16Const(i16Const << constant.i8Const); break; case EbtUint8: returnValue.setI16Const(i16Const << constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const << constant.i16Const); break; case EbtUint16: returnValue.setI16Const(i16Const << constant.u16Const); break; case EbtInt: returnValue.setI16Const(i16Const << constant.iConst); break; case EbtUint: returnValue.setI16Const(i16Const << constant.uConst); break; case EbtInt64: returnValue.setI16Const(i16Const << constant.i64Const); break; case EbtUint64: returnValue.setI16Const(i16Const << constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtUint16: switch (constant.type) { case EbtInt8: returnValue.setU16Const(u16Const << constant.i8Const); break; case EbtUint8: returnValue.setU16Const(u16Const << constant.u8Const); break; case EbtInt16: returnValue.setU16Const(u16Const << constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const << constant.u16Const); break; case EbtInt: returnValue.setU16Const(u16Const << constant.iConst); break; case EbtUint: returnValue.setU16Const(u16Const << constant.uConst); break; case EbtInt64: returnValue.setU16Const(u16Const << constant.i64Const); break; case EbtUint64: returnValue.setU16Const(u16Const << constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtInt64: switch (constant.type) { case EbtInt8: returnValue.setI64Const(i64Const << constant.i8Const); break; case EbtUint8: returnValue.setI64Const(i64Const << constant.u8Const); break; case EbtInt16: returnValue.setI64Const(i64Const << constant.i16Const); break; case EbtUint16: returnValue.setI64Const(i64Const << constant.u16Const); break; case EbtInt: returnValue.setI64Const(i64Const << constant.iConst); break; case EbtUint: returnValue.setI64Const(i64Const << constant.uConst); break; case EbtInt64: returnValue.setI64Const(i64Const << constant.i64Const); break; case EbtUint64: returnValue.setI64Const(i64Const << constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtUint64: switch (constant.type) { case EbtInt8: returnValue.setU64Const(u64Const << constant.i8Const); break; case EbtUint8: returnValue.setU64Const(u64Const << constant.u8Const); break; case EbtInt16: returnValue.setU64Const(u64Const << constant.i16Const); break; case EbtUint16: returnValue.setU64Const(u64Const << constant.u16Const); break; case EbtInt: returnValue.setU64Const(u64Const << constant.iConst); break; case EbtUint: returnValue.setU64Const(u64Const << constant.uConst); break; case EbtInt64: returnValue.setU64Const(u64Const << constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const << constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtInt: switch (constant.type) { case EbtInt: returnValue.setIConst(iConst << constant.iConst); break; case EbtUint: returnValue.setIConst(iConst << constant.uConst); break; case EbtInt8: returnValue.setIConst(iConst << constant.i8Const); break; case EbtUint8: returnValue.setIConst(iConst << constant.u8Const); break; case EbtInt16: returnValue.setIConst(iConst << constant.i16Const); break; case EbtUint16: returnValue.setIConst(iConst << constant.u16Const); break; case EbtInt64: returnValue.setIConst(iConst << constant.i64Const); break; case EbtUint64: returnValue.setIConst(iConst << constant.u64Const); break; default: assert(false && "Default missing"); } break; case EbtUint: switch (constant.type) { case EbtInt: returnValue.setUConst(uConst << constant.iConst); break; case EbtUint: returnValue.setUConst(uConst << constant.uConst); break; case EbtInt8: returnValue.setUConst(uConst << constant.i8Const); break; case EbtUint8: returnValue.setUConst(uConst << constant.u8Const); break; case EbtInt16: returnValue.setUConst(uConst << constant.i16Const); break; case EbtUint16: returnValue.setUConst(uConst << constant.u16Const); break; case EbtInt64: returnValue.setUConst(uConst << constant.i64Const); break; case EbtUint64: returnValue.setUConst(uConst << constant.u64Const); break; default: assert(false && "Default missing"); } break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator&(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtInt: returnValue.setIConst(iConst & constant.iConst); break; case EbtUint: returnValue.setUConst(uConst & constant.uConst); break; case EbtInt8: returnValue.setI8Const(i8Const & constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const & constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const & constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const & constant.u16Const); break; case EbtInt64: returnValue.setI64Const(i64Const & constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const & constant.u64Const); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator|(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtInt: returnValue.setIConst(iConst | constant.iConst); break; case EbtUint: returnValue.setUConst(uConst | constant.uConst); break; case EbtInt8: returnValue.setI8Const(i8Const | constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const | constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const | constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const | constant.u16Const); break; case EbtInt64: returnValue.setI64Const(i64Const | constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const | constant.u64Const); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator^(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break; case EbtUint: returnValue.setUConst(uConst ^ constant.uConst); break; case EbtInt8: returnValue.setI8Const(i8Const ^ constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const ^ constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const ^ constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const ^ constant.u16Const); break; case EbtInt64: returnValue.setI64Const(i64Const ^ constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const ^ constant.u64Const); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator~() const { TConstUnion returnValue; switch (type) { case EbtInt: returnValue.setIConst(~iConst); break; case EbtUint: returnValue.setUConst(~uConst); break; case EbtInt8: returnValue.setI8Const(~i8Const); break; case EbtUint8: returnValue.setU8Const(~u8Const); break; case EbtInt16: returnValue.setI16Const(~i16Const); break; case EbtUint16: returnValue.setU16Const(~u16Const); break; case EbtInt64: returnValue.setI64Const(~i64Const); break; case EbtUint64: returnValue.setU64Const(~u64Const); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator&&(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtBool: returnValue.setBConst(bConst && constant.bConst); break; default: assert(false && "Default missing"); } return returnValue; } TConstUnion operator||(const TConstUnion& constant) const { TConstUnion returnValue; assert(type == constant.type); switch (type) { case EbtBool: returnValue.setBConst(bConst || constant.bConst); break; default: assert(false && "Default missing"); } return returnValue; } TBasicType getType() const { return type; } private: union { signed char i8Const; // used for i8vec, scalar int8s unsigned char u8Const; // used for u8vec, scalar uint8s signed short i16Const; // used for i16vec, scalar int16s unsigned short u16Const; // used for u16vec, scalar uint16s int iConst; // used for ivec, scalar ints unsigned int uConst; // used for uvec, scalar uints long long i64Const; // used for i64vec, scalar int64s unsigned long long u64Const; // used for u64vec, scalar uint64s bool bConst; // used for bvec, scalar bools double dConst; // used for vec, dvec, mat, dmat, scalar floats and doubles const TString* sConst; // string constant }; TBasicType type; }; // Encapsulate having a pointer to an array of TConstUnion, // which only needs to be allocated if its size is going to be // bigger than 0. // // One convenience is being able to use [] to go inside the array, instead // of C++ assuming it as an array of pointers to vectors. // // General usage is that the size is known up front, and it is // created once with the proper size. // class TConstUnionArray { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TConstUnionArray() : unionArray(nullptr) { } virtual ~TConstUnionArray() { } explicit TConstUnionArray(int size) { if (size == 0) unionArray = nullptr; else unionArray = new TConstUnionVector(size); } TConstUnionArray(const TConstUnionArray& a) = default; TConstUnionArray(const TConstUnionArray& a, int start, int size) { unionArray = new TConstUnionVector(size); for (int i = 0; i < size; ++i) (*unionArray)[i] = a[start + i]; } // Use this constructor for a smear operation TConstUnionArray(int size, const TConstUnion& val) { unionArray = new TConstUnionVector(size, val); } TConstUnionArray* clone() const { TConstUnionArray *copy = new TConstUnionArray(size()); if (unionArray) { for (const auto i : *unionArray) { copy->unionArray->push_back(i); } } return copy; } int size() const { return unionArray ? (int)unionArray->size() : 0; } TConstUnion& operator[](size_t index) { return (*unionArray)[index]; } const TConstUnion& operator[](size_t index) const { return (*unionArray)[index]; } bool operator==(const TConstUnionArray& rhs) const { // this includes the case that both are unallocated if (unionArray == rhs.unionArray) return true; if (! unionArray || ! rhs.unionArray) return false; return *unionArray == *rhs.unionArray; } bool operator!=(const TConstUnionArray& rhs) const { return ! operator==(rhs); } double dot(const TConstUnionArray& rhs) { assert(rhs.unionArray->size() == unionArray->size()); double sum = 0.0; for (size_t comp = 0; comp < unionArray->size(); ++comp) sum += (*this)[comp].getDConst() * rhs[comp].getDConst(); return sum; } bool empty() const { return unionArray == nullptr; } protected: typedef TVector TConstUnionVector; TConstUnionVector* unionArray; }; } // end namespace glslang #endif // _CONSTANT_UNION_INCLUDED_ glslang-16.0.0/glslang/Include/InfoSink.h000066400000000000000000000140501506534232700201370ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _INFOSINK_INCLUDED_ #define _INFOSINK_INCLUDED_ #include "../Include/Common.h" #include #include namespace glslang { // // TPrefixType is used to centralize how info log messages start. // See below. // enum TPrefixType { EPrefixNone, EPrefixWarning, EPrefixError, EPrefixInternalError, EPrefixUnimplemented, EPrefixNote }; enum TOutputStream { ENull = 0, EDebugger = 0x01, EStdOut = 0x02, EString = 0x04, }; // // Encapsulate info logs for all objects that have them. // // The methods are a general set of tools for getting a variety of // messages and types inserted into the log. // class TInfoSinkBase { public: TInfoSinkBase() : outputStream(4), shaderFileName(nullptr) {} void erase() { sink.erase(); } TInfoSinkBase& operator<<(const TPersistString& t) { append(t); return *this; } TInfoSinkBase& operator<<(char c) { append(1, c); return *this; } TInfoSinkBase& operator<<(const char* s) { append(s); return *this; } TInfoSinkBase& operator<<(int n) { append(String(n)); return *this; } TInfoSinkBase& operator<<(unsigned int n) { append(String(n)); return *this; } TInfoSinkBase& operator<<(float n) { const int size = 40; char buf[size]; snprintf(buf, size, (fabs(n) > 1e-8 && fabs(n) < 1e8) || n == 0.0f ? "%f" : "%g", n); append(buf); return *this; } TInfoSinkBase& operator+(const TPersistString& t) { append(t); return *this; } TInfoSinkBase& operator+(const TString& t) { append(t); return *this; } TInfoSinkBase& operator<<(const TString& t) { append(t); return *this; } TInfoSinkBase& operator+(const char* s) { append(s); return *this; } const char* c_str() const { return sink.c_str(); } void prefix(TPrefixType message) { switch(message) { case EPrefixNone: break; case EPrefixWarning: append("WARNING: "); break; case EPrefixError: append("ERROR: "); break; case EPrefixInternalError: append("INTERNAL ERROR: "); break; case EPrefixUnimplemented: append("UNIMPLEMENTED: "); break; case EPrefixNote: append("NOTE: "); break; default: append("UNKNOWN ERROR: "); break; } } void location(const TSourceLoc& loc, bool absolute = false, bool displayColumn = false) { const int maxSize = 24; char locText[maxSize]; if (displayColumn) { snprintf(locText, maxSize, ":%d:%d", loc.line, loc.column); } else { snprintf(locText, maxSize, ":%d", loc.line); } if(loc.getFilename() == nullptr && shaderFileName != nullptr && absolute) { append(std::filesystem::absolute(shaderFileName).string()); } else { std::string location = loc.getStringNameOrNum(false); if (absolute) { append(std::filesystem::absolute(location).string()); } else { append(location); } } append(locText); append(": "); } void message(TPrefixType message, const char* s) { prefix(message); append(s); append("\n"); } void message(TPrefixType message, const char* s, const TSourceLoc& loc, bool absolute = false, bool displayColumn = false) { prefix(message); location(loc, absolute, displayColumn); append(s); append("\n"); } void setOutputStream(int output = 4) { outputStream = output; } void setShaderFileName(const char* file = nullptr) { shaderFileName = file; } protected: void append(const char* s); void append(int count, char c); void append(const TPersistString& t); void append(const TString& t); void checkMem(size_t growth) { if (sink.capacity() < sink.size() + growth + 2) sink.reserve(sink.capacity() + sink.capacity() / 2); } void appendToStream(const char* s); TPersistString sink; int outputStream; const char* shaderFileName; }; } // end namespace glslang class TInfoSink { public: glslang::TInfoSinkBase info; glslang::TInfoSinkBase debug; }; #endif // _INFOSINK_INCLUDED_ glslang-16.0.0/glslang/Include/InitializeGlobals.h000066400000000000000000000034761506534232700220360ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef __INITIALIZE_GLOBALS_INCLUDED_ #define __INITIALIZE_GLOBALS_INCLUDED_ namespace glslang { inline bool InitializePoolIndex() { return true; } // DEPRECATED: No need to call } // end namespace glslang #endif // __INITIALIZE_GLOBALS_INCLUDED_ glslang-16.0.0/glslang/Include/PoolAlloc.h000066400000000000000000000272431506534232700203130ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _POOLALLOC_INCLUDED_ #define _POOLALLOC_INCLUDED_ #ifndef NDEBUG # define GUARD_BLOCKS // define to enable guard block sanity checking #endif // // This header defines an allocator that can be used to efficiently // allocate a large number of small requests for heap memory, with the // intention that they are not individually deallocated, but rather // collectively deallocated at one time. // // This simultaneously // // * Makes each individual allocation much more efficient; the // typical allocation is trivial. // * Completely avoids the cost of doing individual deallocation. // * Saves the trouble of tracking down and plugging a large class of leaks. // // Individual classes can use this allocator by supplying their own // new and delete methods. // // STL containers can use this allocator by using the pool_allocator // class as the allocator (second) template argument. // #include "visibility.h" #include #include #include namespace glslang { // If we are using guard blocks, we must track each individual // allocation. If we aren't using guard blocks, these // never get instantiated, so won't have any impact. // class TAllocation { public: TAllocation(size_t size, unsigned char* mem, TAllocation* prev = nullptr) : size(size), mem(mem), prevAlloc(prev) { // Allocations are bracketed: // [allocationHeader][initialGuardBlock][userData][finalGuardBlock] // This would be cleaner with if (guardBlockSize)..., but that // makes the compiler print warnings about 0 length memsets, // even with the if() protecting them. # ifdef GUARD_BLOCKS memset(preGuard(), guardBlockBeginVal, guardBlockSize); memset(data(), userDataFill, size); memset(postGuard(), guardBlockEndVal, guardBlockSize); # endif } void check() const { checkGuardBlock(preGuard(), guardBlockBeginVal, "before"); checkGuardBlock(postGuard(), guardBlockEndVal, "after"); } void checkAllocList() const; // Return total size needed to accommodate user buffer of 'size', // plus our tracking data. inline static size_t allocationSize(size_t size) { return size + 2 * guardBlockSize + headerSize(); } // Offset from surrounding buffer to get to user data buffer. inline static unsigned char* offsetAllocation(unsigned char* m) { return m + guardBlockSize + headerSize(); } private: void checkGuardBlock(unsigned char* blockMem, unsigned char val, const char* locText) const; // Find offsets to pre and post guard blocks, and user data buffer unsigned char* preGuard() const { return mem + headerSize(); } unsigned char* data() const { return preGuard() + guardBlockSize; } unsigned char* postGuard() const { return data() + size; } size_t size; // size of the user data area unsigned char* mem; // beginning of our allocation (pts to header) TAllocation* prevAlloc; // prior allocation in the chain static inline constexpr unsigned char guardBlockBeginVal = 0xfb; static inline constexpr unsigned char guardBlockEndVal = 0xfe; static inline constexpr unsigned char userDataFill = 0xcd; # ifdef GUARD_BLOCKS static inline constexpr size_t guardBlockSize = 16; # else static inline constexpr size_t guardBlockSize = 0; # endif # ifdef GUARD_BLOCKS inline static size_t headerSize() { return sizeof(TAllocation); } # else inline static size_t headerSize() { return 0; } # endif }; // // There are several stacks. One is to track the pushing and popping // of the user, and not yet implemented. The others are simply a // repositories of free pages or used pages. // // Page stacks are linked together with a simple header at the beginning // of each allocation obtained from the underlying OS. Multi-page allocations // are returned to the OS. Individual page allocations are kept for future // re-use. // // The "page size" used is not, nor must it match, the underlying OS // page size. But, having it be about that size or equal to a set of // pages is likely most optimal. // class TPoolAllocator { public: TPoolAllocator(int growthIncrement = 8*1024, int allocationAlignment = 16); // // Don't call the destructor just to free up the memory, call pop() // ~TPoolAllocator(); // // Call push() to establish a new place to pop memory too. Does not // have to be called to get things started. // void push(); // // Call pop() to free all memory allocated since the last call to push(), // or if no last call to push, frees all memory since first allocation. // void pop(); // // Call popAll() to free all memory allocated. // void popAll(); // // Call allocate() to actually acquire memory. Returns nullptr if no memory // available, otherwise a properly aligned pointer to 'numBytes' of memory. // GLSLANG_EXPORT_FOR_TESTS void* allocate(size_t numBytes); // // There is no deallocate. The point of this class is that // deallocation can be skipped by the user of it, as the model // of use is to simultaneously deallocate everything at once // by calling pop(), and to not have to solve memory leak problems. // protected: friend struct tHeader; struct tHeader { tHeader(tHeader* nextPage, size_t pageCount) : #ifdef GUARD_BLOCKS lastAllocation(nullptr), #endif nextPage(nextPage), pageCount(pageCount) { } ~tHeader() { #ifdef GUARD_BLOCKS if (lastAllocation) lastAllocation->checkAllocList(); #endif } #ifdef GUARD_BLOCKS TAllocation* lastAllocation; #endif tHeader* nextPage; size_t pageCount; }; struct tAllocState { size_t offset; tHeader* page; }; typedef std::vector tAllocStack; // Track allocations if and only if we're using guard blocks #ifndef GUARD_BLOCKS void* initializeAllocation(tHeader*, unsigned char* memory, size_t) { #else void* initializeAllocation(tHeader* block, unsigned char* memory, size_t numBytes) { new(memory) TAllocation(numBytes, memory, block->lastAllocation); block->lastAllocation = reinterpret_cast(memory); #endif // This is optimized entirely away if GUARD_BLOCKS is not defined. return TAllocation::offsetAllocation(memory); } size_t pageSize; // granularity of allocation from the OS size_t alignment; // all returned allocations will be aligned at // this granularity, which will be a power of 2 size_t alignmentMask; size_t headerSkip; // amount of memory to skip to make room for the // header (basically, size of header, rounded // up to make it aligned size_t currentPageOffset; // next offset in top of inUseList to allocate from tHeader* freeList; // list of popped memory tHeader* inUseList; // list of all memory currently being used tAllocStack stack; // stack of where to allocate from, to partition pool int numCalls; // just an interesting statistic size_t totalBytes; // just an interesting statistic private: TPoolAllocator& operator=(const TPoolAllocator&); // don't allow assignment operator TPoolAllocator(const TPoolAllocator&); // don't allow default copy constructor }; // // There could potentially be many pools with pops happening at // different times. But a simple use is to have a global pop // with everyone using the same global allocator. // GLSLANG_EXPORT_FOR_TESTS extern TPoolAllocator& GetThreadPoolAllocator(); void SetThreadPoolAllocator(TPoolAllocator* poolAllocator); // // This STL compatible allocator is intended to be used as the allocator // parameter to templatized STL containers, like vector and map. // // It will use the pools for allocation, and not // do any deallocation, but will still do destruction. // template class pool_allocator { public: typedef size_t size_type; typedef ptrdiff_t difference_type; typedef T *pointer; typedef const T *const_pointer; typedef T& reference; typedef const T& const_reference; typedef T value_type; template struct rebind { typedef pool_allocator other; }; pointer address(reference x) const { return &x; } const_pointer address(const_reference x) const { return &x; } pool_allocator() : allocator(GetThreadPoolAllocator()) { } pool_allocator(TPoolAllocator& a) : allocator(a) { } pool_allocator(const pool_allocator& p) : allocator(p.allocator) { } template pool_allocator(const pool_allocator& p) : allocator(p.getAllocator()) { } pointer allocate(size_type n) { return reinterpret_cast(getAllocator().allocate(n * sizeof(T))); } pointer allocate(size_type n, const void*) { return reinterpret_cast(getAllocator().allocate(n * sizeof(T))); } void deallocate(void*, size_type) { } void deallocate(pointer, size_type) { } pointer _Charalloc(size_t n) { return reinterpret_cast(getAllocator().allocate(n)); } void construct(pointer p, const T& val) { new ((void *)p) T(val); } void destroy(pointer p) { p->T::~T(); } bool operator==(const pool_allocator& rhs) const { return &getAllocator() == &rhs.getAllocator(); } bool operator!=(const pool_allocator& rhs) const { return &getAllocator() != &rhs.getAllocator(); } size_type max_size() const { return static_cast(-1) / sizeof(T); } size_type max_size(int size) const { return static_cast(-1) / size; } TPoolAllocator& getAllocator() const { return allocator; } pool_allocator select_on_container_copy_construction() const { return pool_allocator{}; } protected: pool_allocator& operator=(const pool_allocator&) { return *this; } TPoolAllocator& allocator; }; } // end namespace glslang #endif // _POOLALLOC_INCLUDED_ glslang-16.0.0/glslang/Include/ResourceLimits.h000066400000000000000000000130401506534232700213660ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _RESOURCE_LIMITS_INCLUDED_ #define _RESOURCE_LIMITS_INCLUDED_ struct TLimits { bool nonInductiveForLoops; bool whileLoops; bool doWhileLoops; bool generalUniformIndexing; bool generalAttributeMatrixVectorIndexing; bool generalVaryingIndexing; bool generalSamplerIndexing; bool generalVariableIndexing; bool generalConstantMatrixVectorIndexing; }; struct TBuiltInResource { int maxLights; int maxClipPlanes; int maxTextureUnits; int maxTextureCoords; int maxVertexAttribs; int maxVertexUniformComponents; int maxVaryingFloats; int maxVertexTextureImageUnits; int maxCombinedTextureImageUnits; int maxTextureImageUnits; int maxFragmentUniformComponents; int maxDrawBuffers; int maxVertexUniformVectors; int maxVaryingVectors; int maxFragmentUniformVectors; int maxVertexOutputVectors; int maxFragmentInputVectors; int minProgramTexelOffset; int maxProgramTexelOffset; int maxClipDistances; int maxComputeWorkGroupCountX; int maxComputeWorkGroupCountY; int maxComputeWorkGroupCountZ; int maxComputeWorkGroupSizeX; int maxComputeWorkGroupSizeY; int maxComputeWorkGroupSizeZ; int maxComputeUniformComponents; int maxComputeTextureImageUnits; int maxComputeImageUniforms; int maxComputeAtomicCounters; int maxComputeAtomicCounterBuffers; int maxVaryingComponents; int maxVertexOutputComponents; int maxGeometryInputComponents; int maxGeometryOutputComponents; int maxFragmentInputComponents; int maxImageUnits; int maxCombinedImageUnitsAndFragmentOutputs; int maxCombinedShaderOutputResources; int maxImageSamples; int maxVertexImageUniforms; int maxTessControlImageUniforms; int maxTessEvaluationImageUniforms; int maxGeometryImageUniforms; int maxFragmentImageUniforms; int maxCombinedImageUniforms; int maxGeometryTextureImageUnits; int maxGeometryOutputVertices; int maxGeometryTotalOutputComponents; int maxGeometryUniformComponents; int maxGeometryVaryingComponents; int maxTessControlInputComponents; int maxTessControlOutputComponents; int maxTessControlTextureImageUnits; int maxTessControlUniformComponents; int maxTessControlTotalOutputComponents; int maxTessEvaluationInputComponents; int maxTessEvaluationOutputComponents; int maxTessEvaluationTextureImageUnits; int maxTessEvaluationUniformComponents; int maxTessPatchComponents; int maxPatchVertices; int maxTessGenLevel; int maxViewports; int maxVertexAtomicCounters; int maxTessControlAtomicCounters; int maxTessEvaluationAtomicCounters; int maxGeometryAtomicCounters; int maxFragmentAtomicCounters; int maxCombinedAtomicCounters; int maxAtomicCounterBindings; int maxVertexAtomicCounterBuffers; int maxTessControlAtomicCounterBuffers; int maxTessEvaluationAtomicCounterBuffers; int maxGeometryAtomicCounterBuffers; int maxFragmentAtomicCounterBuffers; int maxCombinedAtomicCounterBuffers; int maxAtomicCounterBufferSize; int maxTransformFeedbackBuffers; int maxTransformFeedbackInterleavedComponents; int maxCullDistances; int maxCombinedClipAndCullDistances; int maxSamples; int maxMeshOutputVerticesNV; int maxMeshOutputPrimitivesNV; int maxMeshWorkGroupSizeX_NV; int maxMeshWorkGroupSizeY_NV; int maxMeshWorkGroupSizeZ_NV; int maxTaskWorkGroupSizeX_NV; 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; }; #endif // _RESOURCE_LIMITS_INCLUDED_ glslang-16.0.0/glslang/Include/ShHandle.h000066400000000000000000000142501506534232700201070ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _SHHANDLE_INCLUDED_ #define _SHHANDLE_INCLUDED_ // // Machine independent part of the compiler private objects // sent as ShHandle to the driver. // // This should not be included by driver code. // #define SH_EXPORTING #include "../Public/ShaderLang.h" #include "../MachineIndependent/Versions.h" #include "InfoSink.h" class TCompiler; class TLinker; class TUniformMap; // // The base class used to back handles returned to the driver. // class TShHandleBase { public: TShHandleBase() { pool = new glslang::TPoolAllocator; } virtual ~TShHandleBase() { delete pool; } virtual TCompiler* getAsCompiler() { return nullptr; } virtual TLinker* getAsLinker() { return nullptr; } virtual TUniformMap* getAsUniformMap() { return nullptr; } virtual glslang::TPoolAllocator* getPool() const { return pool; } private: glslang::TPoolAllocator* pool; }; // // The base class for the machine dependent linker to derive from // for managing where uniforms live. // class TUniformMap : public TShHandleBase { public: TUniformMap() { } virtual ~TUniformMap() { } virtual TUniformMap* getAsUniformMap() { return this; } virtual int getLocation(const char* name) = 0; virtual TInfoSink& getInfoSink() { return infoSink; } TInfoSink infoSink; }; class TIntermNode; // // The base class for the machine dependent compiler to derive from // for managing object code from the compile. // class TCompiler : public TShHandleBase { public: TCompiler(EShLanguage l, TInfoSink& sink) : infoSink(sink) , language(l), haveValidObjectCode(false) { } virtual ~TCompiler() { } EShLanguage getLanguage() { return language; } virtual TInfoSink& getInfoSink() { return infoSink; } virtual bool compile(TIntermNode* root, int version = 0, EProfile profile = ENoProfile) = 0; virtual TCompiler* getAsCompiler() { return this; } virtual bool linkable() { return haveValidObjectCode; } TInfoSink& infoSink; protected: TCompiler& operator=(TCompiler&); EShLanguage language; bool haveValidObjectCode; }; // // Link operations are based on a list of compile results... // typedef glslang::TVector TCompilerList; typedef glslang::TVector THandleList; // // The base class for the machine dependent linker to derive from // to manage the resulting executable. // class TLinker : public TShHandleBase { public: TLinker(EShExecutable e, TInfoSink& iSink) : infoSink(iSink), executable(e), haveReturnableObjectCode(false), appAttributeBindings(nullptr), fixedAttributeBindings(nullptr), excludedAttributes(nullptr), excludedCount(0), uniformBindings(nullptr) { } virtual TLinker* getAsLinker() { return this; } virtual ~TLinker() { } virtual bool link(TCompilerList&, TUniformMap*) = 0; virtual bool link(THandleList&) { return false; } virtual void setAppAttributeBindings(const ShBindingTable* t) { appAttributeBindings = t; } virtual void setFixedAttributeBindings(const ShBindingTable* t) { fixedAttributeBindings = t; } virtual void getAttributeBindings(ShBindingTable const **t) const = 0; virtual void setExcludedAttributes(const int* attributes, int count) { excludedAttributes = attributes; excludedCount = count; } virtual ShBindingTable* getUniformBindings() const { return uniformBindings; } virtual const void* getObjectCode() const { return nullptr; } // a real compiler would be returning object code here virtual TInfoSink& getInfoSink() { return infoSink; } TInfoSink& infoSink; protected: TLinker& operator=(TLinker&); EShExecutable executable; bool haveReturnableObjectCode; // true when objectCode is acceptable to send to driver const ShBindingTable* appAttributeBindings; const ShBindingTable* fixedAttributeBindings; const int* excludedAttributes; int excludedCount; ShBindingTable* uniformBindings; // created by the linker }; // // This is the interface between the machine independent code // and the machine dependent code. // // The machine dependent code should derive from the classes // above. Then Construct*() and Delete*() will create and // destroy the machine dependent objects, which contain the // above machine independent information. // TCompiler* ConstructCompiler(EShLanguage, int); TShHandleBase* ConstructLinker(EShExecutable, int); TShHandleBase* ConstructBindings(); void DeleteLinker(TShHandleBase*); void DeleteBindingList(TShHandleBase* bindingList); TUniformMap* ConstructUniformMap(); void DeleteCompiler(TCompiler*); void DeleteUniformMap(TUniformMap*); #endif // _SHHANDLE_INCLUDED_ glslang-16.0.0/glslang/Include/SpirvIntrinsics.h000066400000000000000000000104751506534232700215770ustar00rootroot00000000000000// // Copyright(C) 2021 Advanced Micro Devices, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #pragma once // // GL_EXT_spirv_intrinsics // #include "Common.h" #include namespace glslang { class TIntermTyped; class TIntermConstantUnion; class TType; // SPIR-V requirements struct TSpirvRequirement { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) // capability = [..] TSet extensions; // extension = [..] TSet capabilities; }; // SPIR-V execution modes struct TSpirvExecutionMode { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) // spirv_execution_mode TMap> modes; // spirv_execution_mode_id TMap > modeIds; }; // SPIR-V decorations struct TSpirvDecorate { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) // spirv_decorate TMap > decorates; // spirv_decorate_id TMap> decorateIds; // spirv_decorate_string TMap > decorateStrings; }; // SPIR-V instruction struct TSpirvInstruction { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TSpirvInstruction() { set = ""; id = -1; } bool operator==(const TSpirvInstruction& rhs) const { return set == rhs.set && id == rhs.id; } bool operator!=(const TSpirvInstruction& rhs) const { return !operator==(rhs); } // spirv_instruction TString set; int id; }; // SPIR-V type parameter struct TSpirvTypeParameter { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TSpirvTypeParameter(const TIntermConstantUnion* arg) { value = arg; } TSpirvTypeParameter(const TType* arg) { value = arg; } const TIntermConstantUnion* getAsConstant() const { if (value.index() == 0) return std::get(value); return nullptr; } const TType* getAsType() const { if (value.index() == 1) return std::get(value); return nullptr; } bool operator==(const TSpirvTypeParameter& rhs) const; bool operator!=(const TSpirvTypeParameter& rhs) const { return !operator==(rhs); } // Parameter value: constant expression or type specifier std::variant value; }; typedef TVector TSpirvTypeParameters; // SPIR-V type struct TSpirvType { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) bool operator==(const TSpirvType& rhs) const { return spirvInst == rhs.spirvInst && typeParams == rhs.typeParams; } bool operator!=(const TSpirvType& rhs) const { return !operator==(rhs); } // spirv_type TSpirvInstruction spirvInst; TSpirvTypeParameters typeParams; }; } // end namespace glslang glslang-16.0.0/glslang/Include/Types.h000066400000000000000000003452271506534232700175400ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2015-2016 Google, Inc. // Copyright (C) 2017 ARM Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _TYPES_INCLUDED #define _TYPES_INCLUDED #include "../Include/Common.h" #include "../Include/BaseTypes.h" #include "../Public/ShaderLang.h" #include "arrays.h" #include "SpirvIntrinsics.h" #include namespace glslang { class TIntermAggregate; const int GlslangMaxTypeLength = 200; // TODO: need to print block/struct one member per line, so this can stay bounded const char* const AnonymousPrefix = "anon@"; // for something like a block whose members can be directly accessed inline bool IsAnonymous(const TString& name) { return name.compare(0, 5, AnonymousPrefix) == 0; } // // Details within a sampler type // enum TSamplerDim { EsdNone, Esd1D, Esd2D, Esd3D, EsdCube, EsdRect, EsdBuffer, EsdSubpass, // goes only with non-sampled image (image is true) EsdAttachmentEXT, EsdNumDims }; struct TSampler { // misnomer now; includes images, textures without sampler, and textures with sampler TBasicType type : 8; // type returned by sampler TSamplerDim dim : 8; bool arrayed : 1; bool shadow : 1; bool ms : 1; bool image : 1; // image, combined should be false bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler bool sampler : 1; // true means a pure sampler, other fields should be clear() bool tileQCOM : 1; // is tile shading attachment unsigned int vectorSize : 3; // vector return type size. // Some languages support structures as sample results. Storing the whole structure in the // TSampler is too large, so there is an index to a separate table. static const unsigned structReturnIndexBits = 4; // number of index bits to use. static const unsigned structReturnSlots = (1< TTypeList; typedef TVector TIdentifierList; enum TLayoutMatrix { ElmNone, ElmRowMajor, ElmColumnMajor, // default, but different than saying nothing ElmCount // If expanding, see bitfield width below }; // Union of geometry shader and tessellation shader geometry types. // They don't go into TType, but rather have current state per shader or // active parser type (TPublicType). enum TLayoutGeometry { ElgNone, ElgPoints, ElgLines, ElgLinesAdjacency, ElgLineStrip, ElgTriangles, ElgTrianglesAdjacency, ElgTriangleStrip, ElgQuads, ElgIsolines, }; enum TVertexSpacing { EvsNone, EvsEqual, EvsFractionalEven, EvsFractionalOdd }; enum TVertexOrder { EvoNone, EvoCw, EvoCcw }; // Note: order matters, as type of format is done by comparison. enum TLayoutFormat { ElfNone, // Float image ElfRgba32f, ElfRgba16f, ElfR32f, ElfRgba8, ElfRgba8Snorm, ElfEsFloatGuard, // to help with comparisons ElfRg32f, ElfRg16f, ElfR11fG11fB10f, ElfR16f, ElfRgba16, ElfRgb10A2, ElfRg16, ElfRg8, ElfR16, ElfR8, ElfRgba16Snorm, ElfRg16Snorm, ElfRg8Snorm, ElfR16Snorm, ElfR8Snorm, ElfFloatGuard, // to help with comparisons // Int image ElfRgba32i, ElfRgba16i, ElfRgba8i, ElfR32i, ElfEsIntGuard, // to help with comparisons ElfRg32i, ElfRg16i, ElfRg8i, ElfR16i, ElfR8i, ElfR64i, ElfIntGuard, // to help with comparisons // Uint image ElfRgba32ui, ElfRgba16ui, ElfRgba8ui, ElfR32ui, ElfEsUintGuard, // to help with comparisons ElfRg32ui, ElfRg16ui, ElfRgb10a2ui, ElfRg8ui, ElfR16ui, ElfR8ui, ElfR64ui, ElfExtSizeGuard, // to help with comparisons ElfSize1x8, ElfSize1x16, ElfSize1x32, ElfSize2x32, ElfSize4x32, ElfCount }; enum TLayoutDepth { EldNone, EldAny, EldGreater, EldLess, EldUnchanged, 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', // and in that space, 0 means no bits set, or none. In this enum, 0 means (1 << 0), a bit is set. EBlendMultiply, EBlendScreen, EBlendOverlay, EBlendDarken, EBlendLighten, EBlendColordodge, EBlendColorburn, EBlendHardlight, EBlendSoftlight, EBlendDifference, EBlendExclusion, EBlendHslHue, EBlendHslSaturation, EBlendHslColor, EBlendHslLuminosity, EBlendAllEquations, EBlendCount }; enum TInterlockOrdering { EioNone, EioPixelInterlockOrdered, EioPixelInterlockUnordered, EioSampleInterlockOrdered, EioSampleInterlockUnordered, EioShadingRateInterlockOrdered, EioShadingRateInterlockUnordered, EioCount, }; enum TShaderInterface { // Includes both uniform blocks and buffer blocks EsiUniform = 0, EsiInput, EsiOutput, EsiNone, EsiCount }; class TQualifier { public: static const int layoutNotSet = -1; void clear() { precision = EpqNone; invariant = false; makeTemporary(); declaredBuiltIn = EbvNone; noContraction = false; nullInit = false; spirvByReference = false; spirvLiteral = false; defaultBlock = false; } // drop qualifiers that don't belong in a temporary variable void makeTemporary() { semanticName = nullptr; storage = EvqTemporary; builtIn = EbvNone; clearInterstage(); clearMemory(); specConstant = false; nonUniform = false; nullInit = false; defaultBlock = false; clearLayout(); spirvStorageClass = -1; spirvDecorate = nullptr; spirvByReference = false; spirvLiteral = false; } void clearInterstage() { clearInterpolation(); patch = false; sample = false; } void clearInterpolation() { centroid = false; smooth = false; flat = false; nopersp = false; explicitInterp = false; pervertexNV = false; perPrimitiveNV = false; perViewNV = false; perTaskNV = false; pervertexEXT = false; } void clearMemory() { coherent = false; devicecoherent = false; queuefamilycoherent = false; workgroupcoherent = false; subgroupcoherent = false; shadercallcoherent = false; nonprivate = false; volatil = false; nontemporal = false; restrict = false; readonly = false; writeonly = false; } const char* semanticName; TStorageQualifier storage : 7; static_assert(EvqLast < 64, "need to increase size of TStorageQualifier bitfields!"); TBuiltInVariable builtIn : 9; TBuiltInVariable declaredBuiltIn : 9; static_assert(EbvLast < 256, "need to increase size of TBuiltInVariable bitfields!"); TPrecisionQualifier precision : 3; bool invariant : 1; // require canonical treatment for cross-shader invariance bool centroid : 1; bool smooth : 1; bool flat : 1; // having a constant_id is not sufficient: expressions have no id, but are still specConstant bool specConstant : 1; bool nonUniform : 1; bool explicitOffset : 1; bool defaultBlock : 1; // default blocks with matching names have structures merged when linking bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects bool nopersp : 1; bool explicitInterp : 1; bool pervertexNV : 1; bool pervertexEXT : 1; bool perPrimitiveNV : 1; bool perViewNV : 1; bool perTaskNV : 1; bool patch : 1; bool sample : 1; bool restrict : 1; bool readonly : 1; bool writeonly : 1; bool coherent : 1; bool volatil : 1; bool nontemporal : 1; bool devicecoherent : 1; bool queuefamilycoherent : 1; bool workgroupcoherent : 1; bool subgroupcoherent : 1; bool shadercallcoherent : 1; bool nonprivate : 1; bool nullInit : 1; bool spirvByReference : 1; bool spirvLiteral : 1; bool isWriteOnly() const { return writeonly; } bool isReadOnly() const { return readonly; } bool isRestrict() const { return restrict; } bool isCoherent() const { return coherent; } bool isVolatile() const { return volatil; } bool isNonTemporal() const { return nontemporal; } bool isSample() const { return sample; } bool isMemory() const { return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || nontemporal || restrict || readonly || writeonly || nonprivate; } bool isMemoryQualifierImageAndSSBOOnly() const { return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || nontemporal || restrict || readonly || writeonly; } bool bufferReferenceNeedsVulkanMemoryModel() const { // include qualifiers that map to load/store availability/visibility/nonprivate memory access operands return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || nonprivate; } bool isInterpolation() const { return flat || smooth || nopersp || explicitInterp; } bool isExplicitInterpolation() const { return explicitInterp; } bool isAuxiliary() const { 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; } bool isSpirvByReference() const { return spirvByReference; } void setSpirvLiteral() { spirvLiteral = true; } bool isSpirvLiteral() const { return spirvLiteral; } bool isPipeInput() const { switch (storage) { case EvqVaryingIn: case EvqFragCoord: case EvqPointCoord: case EvqFace: case EvqVertexId: case EvqInstanceId: return true; default: return false; } } bool isPipeOutput() const { switch (storage) { case EvqPosition: case EvqPointSize: case EvqClipVertex: case EvqVaryingOut: case EvqFragColor: case EvqFragDepth: case EvqFragStencil: return true; default: return false; } } bool isParamInput() const { switch (storage) { case EvqIn: case EvqInOut: case EvqConstReadOnly: return true; default: return false; } } bool isParamOutput() const { switch (storage) { case EvqOut: case EvqInOut: return true; default: return false; } } bool isUniformOrBuffer() const { switch (storage) { case EvqUniform: case EvqBuffer: return true; default: return false; } } bool isUniform() const { switch (storage) { case EvqUniform: return true; default: return false; } } bool isIo() const { switch (storage) { case EvqUniform: case EvqBuffer: case EvqVaryingIn: case EvqFragCoord: case EvqPointCoord: case EvqFace: case EvqVertexId: case EvqInstanceId: case EvqPosition: case EvqPointSize: case EvqClipVertex: case EvqVaryingOut: case EvqFragColor: case EvqFragDepth: case EvqFragStencil: return true; default: return false; } } // non-built-in symbols that might link between compilation units bool isLinkable() const { switch (storage) { case EvqGlobal: case EvqVaryingIn: case EvqVaryingOut: case EvqUniform: case EvqBuffer: case EvqShared: return true; default: return false; } } TBlockStorageClass getBlockStorage() const { if (storage == EvqUniform && !isPushConstant()) { return EbsUniform; } else if (storage == EvqUniform) { return EbsPushConstant; } else if (storage == EvqBuffer) { return EbsStorageBuffer; } return EbsNone; } void setBlockStorage(TBlockStorageClass newBacking) { layoutPushConstant = (newBacking == EbsPushConstant); switch (newBacking) { case EbsUniform : if (layoutPacking == ElpStd430) { // std430 would not be valid layoutPacking = ElpStd140; } storage = EvqUniform; break; case EbsStorageBuffer : storage = EvqBuffer; break; case EbsPushConstant : storage = EvqUniform; layoutSet = TQualifier::layoutSetEnd; layoutBinding = TQualifier::layoutBindingEnd; break; default: break; } } 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; } bool isAnyCallable() const { return storage == EvqCallableData || storage == EvqCallableDataIn; } bool isHitObjectAttrNV() const { return storage == EvqHitObjectAttrNV; } // True if this type of IO is supposed to be arrayed with extra level for per-vertex data bool isArrayedIo(EShLanguage language) const { switch (language) { case EShLangGeometry: return isPipeInput(); case EShLangTessControl: return ! patch && (isPipeInput() || isPipeOutput()); case EShLangTessEvaluation: return ! patch && isPipeInput(); case EShLangFragment: return (pervertexNV || pervertexEXT) && isPipeInput(); case EShLangMesh: return ! perTaskNV && isPipeOutput(); default: return false; } } // Implementing an embedded layout-qualifier class here, since C++ can't have a real class bitfield void clearLayout() // all layout { clearUniformLayout(); layoutPushConstant = false; layoutBufferReference = false; layoutPassthrough = false; layoutViewportRelative = false; // -2048 as the default value indicating layoutSecondaryViewportRelative is not set layoutSecondaryViewportRelativeOffset = -2048; layoutShaderRecord = false; layoutFullQuads = false; layoutQuadDeriv = false; layoutHitObjectShaderRecordNV = false; layoutBindlessSampler = false; layoutBindlessImage = false; layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd; layoutFormat = ElfNone; layoutTileAttachmentQCOM = false; clearInterstageLayout(); layoutSpecConstantId = layoutSpecConstantIdEnd; } void clearInterstageLayout() { layoutLocation = layoutLocationEnd; layoutComponent = layoutComponentEnd; layoutIndex = layoutIndexEnd; clearStreamLayout(); clearXfbLayout(); } void clearStreamLayout() { layoutStream = layoutStreamEnd; } void clearXfbLayout() { layoutXfbBuffer = layoutXfbBufferEnd; layoutXfbStride = layoutXfbStrideEnd; layoutXfbOffset = layoutXfbOffsetEnd; } bool hasNonXfbLayout() const { return hasUniformLayout() || hasAnyLocation() || hasStream() || hasFormat() || isShaderRecord() || isPushConstant() || hasBufferReference(); } bool hasLayout() const { return hasNonXfbLayout() || hasXfb(); } TLayoutMatrix layoutMatrix : 3; TLayoutPacking layoutPacking : 4; int layoutOffset; int layoutAlign; unsigned int layoutLocation : 12; static const unsigned int layoutLocationEnd = 0xFFF; unsigned int layoutComponent : 3; static const unsigned int layoutComponentEnd = 4; unsigned int layoutSet : 7; static const unsigned int layoutSetEnd = 0x3F; unsigned int layoutBinding : 16; static const unsigned int layoutBindingEnd = 0xFFFF; unsigned int layoutIndex : 8; static const unsigned int layoutIndexEnd = 0xFF; unsigned int layoutStream : 8; static const unsigned int layoutStreamEnd = 0xFF; unsigned int layoutXfbBuffer : 4; static const unsigned int layoutXfbBufferEnd = 0xF; unsigned int layoutXfbStride : 14; static const unsigned int layoutXfbStrideEnd = 0x3FFF; unsigned int layoutXfbOffset : 13; static const unsigned int layoutXfbOffsetEnd = 0x1FFF; unsigned int layoutAttachment : 8; // for input_attachment_index static const unsigned int layoutAttachmentEnd = 0XFF; unsigned int layoutSpecConstantId : 11; static const unsigned int layoutSpecConstantIdEnd = 0x7FF; // stored as log2 of the actual alignment value unsigned int layoutBufferReferenceAlign : 6; static const unsigned int layoutBufferReferenceAlignEnd = 0x3F; TLayoutFormat layoutFormat : 8; bool layoutPushConstant; bool layoutBufferReference; bool layoutPassthrough; bool layoutViewportRelative; int layoutSecondaryViewportRelativeOffset; bool layoutShaderRecord; bool layoutFullQuads; bool layoutQuadDeriv; bool layoutHitObjectShaderRecordNV; // GL_EXT_spirv_intrinsics int spirvStorageClass; TSpirvDecorate* spirvDecorate; bool layoutBindlessSampler; bool layoutBindlessImage; bool layoutTileAttachmentQCOM; bool hasUniformLayout() const { return hasMatrix() || hasPacking() || hasOffset() || hasBinding() || hasSet() || hasAlign(); } void clearUniformLayout() // only uniform specific { layoutMatrix = ElmNone; layoutPacking = ElpNone; layoutOffset = layoutNotSet; layoutAlign = layoutNotSet; layoutSet = layoutSetEnd; layoutBinding = layoutBindingEnd; layoutAttachment = layoutAttachmentEnd; } bool hasMatrix() const { return layoutMatrix != ElmNone; } bool hasPacking() const { return layoutPacking != ElpNone; } bool hasAlign() const { return layoutAlign != layoutNotSet; } bool hasAnyLocation() const { return hasLocation() || hasComponent() || hasIndex(); } bool hasLocation() const { return layoutLocation != layoutLocationEnd; } bool hasSet() const { return layoutSet != layoutSetEnd; } bool hasBinding() const { return layoutBinding != layoutBindingEnd; } bool hasOffset() const { return layoutOffset != layoutNotSet; } bool isNonPerspective() const { return nopersp; } bool hasIndex() const { return layoutIndex != layoutIndexEnd; } unsigned getIndex() const { return layoutIndex; } bool hasComponent() const { return layoutComponent != layoutComponentEnd; } bool hasStream() const { return layoutStream != layoutStreamEnd; } bool hasFormat() const { return layoutFormat != ElfNone; } bool hasXfb() const { return hasXfbBuffer() || hasXfbStride() || hasXfbOffset(); } bool hasXfbBuffer() const { return layoutXfbBuffer != layoutXfbBufferEnd; } bool hasXfbStride() const { return layoutXfbStride != layoutXfbStrideEnd; } bool hasXfbOffset() const { return layoutXfbOffset != layoutXfbOffsetEnd; } bool hasAttachment() const { return layoutAttachment != layoutAttachmentEnd; } TLayoutFormat getFormat() const { return layoutFormat; } bool isPushConstant() const { return layoutPushConstant; } bool isShaderRecord() const { return layoutShaderRecord; } bool isFullQuads() const { return layoutFullQuads; } bool isQuadDeriv() const { return layoutQuadDeriv; } bool hasHitObjectShaderRecordNV() const { return layoutHitObjectShaderRecordNV; } bool hasBufferReference() const { return layoutBufferReference; } bool hasBufferReferenceAlign() const { return layoutBufferReferenceAlign != layoutBufferReferenceAlignEnd; } bool isNonUniform() const { return nonUniform; } bool isBindlessSampler() const { return layoutBindlessSampler; } bool isBindlessImage() const { return layoutBindlessImage; } bool isTileAttachmentQCOM() const { return layoutTileAttachmentQCOM; } // GL_EXT_spirv_intrinsics bool hasSpirvDecorate() const { return spirvDecorate != nullptr; } void setSpirvDecorate(int decoration, const TIntermAggregate* args = nullptr); void setSpirvDecorateId(int decoration, const TIntermAggregate* args); void setSpirvDecorateString(int decoration, const TIntermAggregate* args); const TSpirvDecorate& getSpirvDecorate() const { assert(spirvDecorate); return *spirvDecorate; } TSpirvDecorate& getSpirvDecorate() { assert(spirvDecorate); return *spirvDecorate; } TString getSpirvDecorateQualifierString() const; bool hasSpecConstantId() const { // Not the same thing as being a specialization constant, this // is just whether or not it was declared with an ID. return layoutSpecConstantId != layoutSpecConstantIdEnd; } bool isSpecConstant() const { // True if type is a specialization constant, whether or not it // had a specialization-constant ID, and false if it is not a // true front-end constant. return specConstant; } bool isFrontEndConstant() const { // True if the front-end knows the final constant value. // This allows front-end constant folding. return storage == EvqConst && ! specConstant; } bool isConstant() const { // True if is either kind of constant; specialization or regular. return isFrontEndConstant() || isSpecConstant(); } void makeSpecConstant() { storage = EvqConst; specConstant = true; } static const char* getLayoutPackingString(TLayoutPacking packing) { switch (packing) { case ElpStd140: return "std140"; case ElpPacked: return "packed"; case ElpShared: return "shared"; case ElpStd430: return "std430"; case ElpScalar: return "scalar"; default: return "none"; } } static const char* getLayoutMatrixString(TLayoutMatrix m) { switch (m) { case ElmColumnMajor: return "column_major"; case ElmRowMajor: return "row_major"; default: return "none"; } } static const char* getLayoutFormatString(TLayoutFormat f) { switch (f) { case ElfRgba32f: return "rgba32f"; case ElfRgba16f: return "rgba16f"; case ElfRg32f: return "rg32f"; case ElfRg16f: return "rg16f"; case ElfR11fG11fB10f: return "r11f_g11f_b10f"; case ElfR32f: return "r32f"; case ElfR16f: return "r16f"; case ElfRgba16: return "rgba16"; case ElfRgb10A2: return "rgb10_a2"; case ElfRgba8: return "rgba8"; case ElfRg16: return "rg16"; case ElfRg8: return "rg8"; case ElfR16: return "r16"; case ElfR8: return "r8"; case ElfRgba16Snorm: return "rgba16_snorm"; case ElfRgba8Snorm: return "rgba8_snorm"; case ElfRg16Snorm: return "rg16_snorm"; case ElfRg8Snorm: return "rg8_snorm"; case ElfR16Snorm: return "r16_snorm"; case ElfR8Snorm: return "r8_snorm"; case ElfRgba32i: return "rgba32i"; case ElfRgba16i: return "rgba16i"; case ElfRgba8i: return "rgba8i"; case ElfRg32i: return "rg32i"; case ElfRg16i: return "rg16i"; case ElfRg8i: return "rg8i"; case ElfR32i: return "r32i"; case ElfR16i: return "r16i"; case ElfR8i: return "r8i"; case ElfRgba32ui: return "rgba32ui"; case ElfRgba16ui: return "rgba16ui"; case ElfRgba8ui: return "rgba8ui"; case ElfRg32ui: return "rg32ui"; case ElfRg16ui: return "rg16ui"; case ElfRgb10a2ui: return "rgb10_a2ui"; case ElfRg8ui: return "rg8ui"; case ElfR32ui: return "r32ui"; case ElfR16ui: return "r16ui"; case ElfR8ui: return "r8ui"; case ElfR64ui: return "r64ui"; case ElfR64i: return "r64i"; case ElfSize1x8: return "size1x8"; case ElfSize1x16: return "size1x16"; case ElfSize1x32: return "size1x32"; case ElfSize2x32: return "size2x32"; case ElfSize4x32: return "size4x32"; default: return "none"; } } static const char* getLayoutDepthString(TLayoutDepth d) { switch (d) { case EldAny: return "depth_any"; case EldGreater: return "depth_greater"; case EldLess: return "depth_less"; case EldUnchanged: return "depth_unchanged"; 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) { case EBlendMultiply: return "blend_support_multiply"; case EBlendScreen: return "blend_support_screen"; case EBlendOverlay: return "blend_support_overlay"; case EBlendDarken: return "blend_support_darken"; case EBlendLighten: return "blend_support_lighten"; case EBlendColordodge: return "blend_support_colordodge"; case EBlendColorburn: return "blend_support_colorburn"; case EBlendHardlight: return "blend_support_hardlight"; case EBlendSoftlight: return "blend_support_softlight"; case EBlendDifference: return "blend_support_difference"; case EBlendExclusion: return "blend_support_exclusion"; case EBlendHslHue: return "blend_support_hsl_hue"; case EBlendHslSaturation: return "blend_support_hsl_saturation"; case EBlendHslColor: return "blend_support_hsl_color"; case EBlendHslLuminosity: return "blend_support_hsl_luminosity"; case EBlendAllEquations: return "blend_support_all_equations"; default: return "unknown"; } } static const char* getGeometryString(TLayoutGeometry geometry) { switch (geometry) { case ElgPoints: return "points"; case ElgLines: return "lines"; case ElgLinesAdjacency: return "lines_adjacency"; case ElgLineStrip: return "line_strip"; case ElgTriangles: return "triangles"; case ElgTrianglesAdjacency: return "triangles_adjacency"; case ElgTriangleStrip: return "triangle_strip"; case ElgQuads: return "quads"; case ElgIsolines: return "isolines"; default: return "none"; } } static const char* getVertexSpacingString(TVertexSpacing spacing) { switch (spacing) { case EvsEqual: return "equal_spacing"; case EvsFractionalEven: return "fractional_even_spacing"; case EvsFractionalOdd: return "fractional_odd_spacing"; default: return "none"; } } static const char* getVertexOrderString(TVertexOrder order) { switch (order) { case EvoCw: return "cw"; case EvoCcw: return "ccw"; default: return "none"; } } static int mapGeometryToSize(TLayoutGeometry geometry) { switch (geometry) { case ElgPoints: return 1; case ElgLines: return 2; case ElgLinesAdjacency: return 4; case ElgTriangles: return 3; case ElgTrianglesAdjacency: return 6; default: return 0; } } static const char* getInterlockOrderingString(TInterlockOrdering order) { switch (order) { case EioPixelInterlockOrdered: return "pixel_interlock_ordered"; case EioPixelInterlockUnordered: return "pixel_interlock_unordered"; case EioSampleInterlockOrdered: return "sample_interlock_ordered"; case EioSampleInterlockUnordered: return "sample_interlock_unordered"; case EioShadingRateInterlockOrdered: return "shading_rate_interlock_ordered"; case EioShadingRateInterlockUnordered: return "shading_rate_interlock_unordered"; default: return "none"; } } }; // Qualifiers that don't need to be kept per object. They have shader scope, not object scope. // So, they will not be part of TType, TQualifier, etc. struct TShaderQualifiers { TLayoutGeometry geometry; // geometry/tessellation shader in/out primitives bool pixelCenterInteger; // fragment shader bool originUpperLeft; // fragment shader int invocations; int vertices; // for tessellation "vertices", geometry & mesh "max_vertices" TVertexSpacing spacing; TVertexOrder order; bool pointMode; int localSize[3]; // compute shader bool localSizeNotDefault[3]; // compute shader int localSizeSpecId[3]; // compute shader specialization id for gl_WorkGroupSize bool earlyFragmentTests; // fragment input bool postDepthCoverage; // fragment input bool earlyAndLateFragmentTestsAMD; //fragment input bool nonCoherentColorAttachmentReadEXT; // fragment input bool nonCoherentDepthAttachmentReadEXT; // fragment input bool nonCoherentStencilAttachmentReadEXT; // fragment input TLayoutDepth layoutDepth; TLayoutStencil layoutStencil; bool blendEquation; // true if any blend equation was specified int numViews; // multiview extenstions TInterlockOrdering interlockOrdering; bool layoutOverrideCoverage; // true if layout override_coverage set bool layoutDerivativeGroupQuads; // true if layout derivative_group_quadsNV set bool layoutDerivativeGroupLinear; // true if layout derivative_group_linearNV set int primitives; // mesh shader "max_primitives"DerivativeGroupLinear; // true if layout derivative_group_linearNV set bool layoutPrimitiveCulling; // true if layout primitive_culling set bool layoutNonCoherentTileAttachmentReadQCOM; // fragment shaders -- per object int layoutTileShadingRateQCOM[3]; // compute shader bool layoutTileShadingRateQCOMNotDefault[3]; // compute shader TLayoutDepth getDepth() const { return layoutDepth; } TLayoutStencil getStencil() const { return layoutStencil; } void init() { geometry = ElgNone; originUpperLeft = false; pixelCenterInteger = false; invocations = TQualifier::layoutNotSet; vertices = TQualifier::layoutNotSet; spacing = EvsNone; order = EvoNone; pointMode = false; localSize[0] = 1; localSize[1] = 1; localSize[2] = 1; localSizeNotDefault[0] = false; localSizeNotDefault[1] = false; localSizeNotDefault[2] = false; localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; earlyFragmentTests = false; earlyAndLateFragmentTestsAMD = false; postDepthCoverage = false; nonCoherentColorAttachmentReadEXT = false; nonCoherentDepthAttachmentReadEXT = false; nonCoherentStencilAttachmentReadEXT = false; layoutDepth = EldNone; layoutStencil = ElsNone; blendEquation = false; numViews = TQualifier::layoutNotSet; layoutOverrideCoverage = false; layoutDerivativeGroupQuads = false; layoutDerivativeGroupLinear = false; layoutPrimitiveCulling = false; layoutNonCoherentTileAttachmentReadQCOM = false; layoutTileShadingRateQCOM[0] = 0; layoutTileShadingRateQCOM[1] = 0; layoutTileShadingRateQCOM[2] = 0; layoutTileShadingRateQCOMNotDefault[0] = false; layoutTileShadingRateQCOMNotDefault[1] = false; layoutTileShadingRateQCOMNotDefault[2] = false; primitives = TQualifier::layoutNotSet; interlockOrdering = EioNone; } bool hasBlendEquation() const { return blendEquation; } // Merge in characteristics from the 'src' qualifier. They can override when // set, but never erase when not set. void merge(const TShaderQualifiers& src) { if (src.geometry != ElgNone) geometry = src.geometry; if (src.pixelCenterInteger) pixelCenterInteger = src.pixelCenterInteger; if (src.originUpperLeft) originUpperLeft = src.originUpperLeft; if (src.invocations != TQualifier::layoutNotSet) invocations = src.invocations; if (src.vertices != TQualifier::layoutNotSet) vertices = src.vertices; if (src.spacing != EvsNone) spacing = src.spacing; if (src.order != EvoNone) order = src.order; if (src.pointMode) pointMode = true; for (int i = 0; i < 3; ++i) { if (src.localSize[i] > 1) localSize[i] = src.localSize[i]; } for (int i = 0; i < 3; ++i) { localSizeNotDefault[i] = src.localSizeNotDefault[i] || localSizeNotDefault[i]; } for (int i = 0; i < 3; ++i) { if (src.localSizeSpecId[i] != TQualifier::layoutNotSet) localSizeSpecId[i] = src.localSizeSpecId[i]; } if (src.earlyFragmentTests) earlyFragmentTests = true; if (src.earlyAndLateFragmentTestsAMD) earlyAndLateFragmentTestsAMD = true; if (src.postDepthCoverage) postDepthCoverage = true; if (src.nonCoherentColorAttachmentReadEXT) nonCoherentColorAttachmentReadEXT = true; if (src.nonCoherentDepthAttachmentReadEXT) nonCoherentDepthAttachmentReadEXT = true; if (src.nonCoherentStencilAttachmentReadEXT) nonCoherentStencilAttachmentReadEXT = true; if (src.layoutDepth) layoutDepth = src.layoutDepth; if (src.layoutStencil) layoutStencil = src.layoutStencil; if (src.blendEquation) blendEquation = src.blendEquation; if (src.numViews != TQualifier::layoutNotSet) numViews = src.numViews; if (src.layoutOverrideCoverage) layoutOverrideCoverage = src.layoutOverrideCoverage; if (src.layoutDerivativeGroupQuads) layoutDerivativeGroupQuads = src.layoutDerivativeGroupQuads; if (src.layoutDerivativeGroupLinear) layoutDerivativeGroupLinear = src.layoutDerivativeGroupLinear; if (src.primitives != TQualifier::layoutNotSet) primitives = src.primitives; if (src.interlockOrdering != EioNone) interlockOrdering = src.interlockOrdering; if (src.layoutPrimitiveCulling) layoutPrimitiveCulling = src.layoutPrimitiveCulling; if (src.layoutNonCoherentTileAttachmentReadQCOM) layoutNonCoherentTileAttachmentReadQCOM = src.layoutNonCoherentTileAttachmentReadQCOM; for (int i = 0; i < 3; ++i) { if (src.layoutTileShadingRateQCOM[i] > 1) layoutTileShadingRateQCOM[i] = src.layoutTileShadingRateQCOM[i]; } for (int i = 0; i < 3; ++i) { layoutTileShadingRateQCOMNotDefault[i] = src.layoutTileShadingRateQCOMNotDefault[i] || layoutTileShadingRateQCOMNotDefault[i]; } } }; class TTypeParameters { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TTypeParameters() : basicType(EbtVoid), arraySizes(nullptr), spirvType(nullptr) {} TBasicType basicType; TArraySizes *arraySizes; TSpirvType *spirvType; bool operator==(const TTypeParameters& rhs) const { bool same = basicType == rhs.basicType && *arraySizes == *rhs.arraySizes; if (same && basicType == EbtSpirvType) { assert(spirvType && rhs.spirvType); return *spirvType == *rhs.spirvType; } return same; } bool operator!=(const TTypeParameters& rhs) const { return !(*this == rhs); } }; // // TPublicType is just temporarily used while parsing and not quite the same // information kept per node in TType. Due to the bison stack, it can't have // types that it thinks have non-trivial constructors. It should // just be used while recognizing the grammar, not anything else. // Once enough is known about the situation, the proper information // moved into a TType, or the parse context, etc. // class TPublicType { public: TBasicType basicType; TSampler sampler; TQualifier qualifier; TShaderQualifiers shaderQualifiers; uint32_t vectorSize : 4; uint32_t matrixCols : 4; uint32_t matrixRows : 4; bool coopmatNV : 1; bool coopmatKHR : 1; bool coopvecNV : 1; bool tileAttachmentQCOM: 1; uint32_t tensorRankARM : 4; TArraySizes* arraySizes; const TType* userDef; TSourceLoc loc; TTypeParameters* typeParameters; // SPIR-V type defined by spirv_type directive TSpirvType* spirvType; bool isCoopmat() const { return coopmatNV || coopmatKHR; } bool isCoopmatNV() const { return coopmatNV; } bool isCoopmatKHR() const { return coopmatKHR; } bool isCoopvecNV() const { return coopvecNV; } bool isTensorARM() const { return tensorRankARM; } bool hasTypeParameter() const { return isCoopmat() || isCoopvecNV() || isTensorARM(); } bool isTensorLayoutNV() const { return basicType == EbtTensorLayoutNV; } bool isTensorViewNV() const { return basicType == EbtTensorViewNV; } void initType(const TSourceLoc& l) { basicType = EbtVoid; vectorSize = 1u; matrixRows = 0; matrixCols = 0; arraySizes = nullptr; userDef = nullptr; loc = l; typeParameters = nullptr; coopmatNV = false; coopmatKHR = false; coopvecNV = false; tileAttachmentQCOM = false; tensorRankARM = 0; spirvType = nullptr; } void initQualifiers(bool global = false) { qualifier.clear(); if (global) qualifier.storage = EvqGlobal; } void init(const TSourceLoc& l, bool global = false) { initType(l); sampler.clear(); initQualifiers(global); shaderQualifiers.init(); } void setVector(int s) { matrixRows = 0; matrixCols = 0; assert(s >= 0); vectorSize = static_cast(s) & 0b1111; } void setMatrix(int c, int r) { assert(r >= 0); matrixRows = static_cast(r) & 0b1111; assert(c >= 0); matrixCols = static_cast(c) & 0b1111; vectorSize = 0; } bool isScalar() const { return matrixCols == 0u && vectorSize == 1u && arraySizes == nullptr && userDef == nullptr; } // GL_EXT_spirv_intrinsics void setSpirvType(const TSpirvInstruction& spirvInst, const TSpirvTypeParameters* typeParams = nullptr); // "Image" is a superset of "Subpass" bool isImage() const { return basicType == EbtSampler && sampler.isImage(); } bool isSubpass() const { return basicType == EbtSampler && sampler.isSubpass(); } bool isAttachmentEXT() const { return basicType == EbtSampler && sampler.isAttachmentEXT(); } }; // // Base class for things that have a type. // class TType { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) // for "empty" type (no args) or simple scalar/vector/matrix explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : basicType(t), vectorSize(static_cast(vs) & 0b1111), matrixCols(static_cast(mc) & 0b1111), matrixRows(static_cast(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { assert(vs >= 0); assert(mc >= 0); assert(mr >= 0); sampler.clear(); qualifier.clear(); qualifier.storage = q; assert(!(isMatrix() && vectorSize != 0)); // prevent vectorSize != 0 on matrices } // for explicit precision qualifier TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : basicType(t), vectorSize(static_cast(vs) & 0b1111), matrixCols(static_cast(mc) & 0b1111), matrixRows(static_cast(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { assert(vs >= 0); assert(mc >= 0); assert(mr >= 0); sampler.clear(); qualifier.clear(); qualifier.storage = q; qualifier.precision = p; assert(p >= EpqNone && p <= EpqHigh); assert(!(isMatrix() && vectorSize != 0)); // prevent vectorSize != 0 on matrices } // for turning a TPublicType into a TType, using a shallow copy explicit TType(const TPublicType& p) : basicType(p.basicType), vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(p.coopvecNV), tileAttachmentQCOM(p.tileAttachmentQCOM), tensorRankARM(p.tensorRankARM), arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters), spirvType(p.spirvType) { if (basicType == EbtSampler) sampler = p.sampler; else sampler.clear(); qualifier = p.qualifier; if (p.userDef) { if (p.userDef->basicType == EbtReference) { basicType = EbtReference; referentType = p.userDef->referentType; } else { structure = p.userDef->getWritableStruct(); // public type is short-lived; there are no sharing issues } typeName = NewPoolTString(p.userDef->getTypeName().c_str()); } if (p.isCoopmatNV() && p.typeParameters && p.typeParameters->arraySizes->getNumDims() > 0) { int numBits = p.typeParameters->arraySizes->getDimSize(0); if (p.basicType == EbtFloat && numBits == 16) { basicType = EbtFloat16; qualifier.precision = EpqNone; } else if (p.basicType == EbtUint && numBits == 8) { basicType = EbtUint8; qualifier.precision = EpqNone; } else if (p.basicType == EbtUint && numBits == 16) { basicType = EbtUint16; qualifier.precision = EpqNone; } else if (p.basicType == EbtInt && numBits == 8) { basicType = EbtInt8; qualifier.precision = EpqNone; } else if (p.basicType == EbtInt && numBits == 16) { basicType = EbtInt16; qualifier.precision = EpqNone; } } if (p.isCoopmatKHR() && p.typeParameters && p.typeParameters->arraySizes->getNumDims() > 0) { basicType = p.typeParameters->basicType; if (isSpirvType()) { assert(p.typeParameters->spirvType); spirvType = p.typeParameters->spirvType; } if (p.typeParameters->arraySizes->getNumDims() == 4) { const int dimSize = p.typeParameters->arraySizes->getDimSize(3); assert(dimSize >= 0); coopmatKHRuse = static_cast(dimSize) & 0b111; coopmatKHRUseValid = true; } } if (p.isCoopvecNV() && p.typeParameters) { basicType = p.typeParameters->basicType; } if (p.isTensorARM() && p.typeParameters) { basicType = p.typeParameters->basicType; if (p.typeParameters->arraySizes->getNumDims() > 0) { tensorRankARM = static_cast(p.typeParameters->arraySizes->getDimSize(0)) & 0b1111; } } } // for construction of sampler types TType(const TSampler& sampler, TStorageQualifier q = EvqUniform, TArraySizes* as = nullptr) : basicType(EbtSampler), vectorSize(1u), matrixCols(0u), matrixRows(0u), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr), sampler(sampler), typeParameters(nullptr), spirvType(nullptr) { qualifier.clear(); qualifier.storage = q; } // to efficiently make a dereferenced type // without ever duplicating the outer structure that will be thrown away // and using only shallow copy TType(const TType& type, int derefIndex, bool rowMajor = false) { if (type.isArray()) { shallowCopy(type); if (type.getArraySizes()->getNumDims() == 1) { arraySizes = nullptr; } else { // want our own copy of the array, so we can edit it arraySizes = new TArraySizes; arraySizes->copyDereferenced(*type.arraySizes); } } else if (type.basicType == EbtStruct || type.basicType == EbtBlock) { // do a structure dereference const TTypeList& memberList = *type.getStruct(); shallowCopy(*memberList[derefIndex].type); return; } else { // do a vector/matrix dereference shallowCopy(type); if (matrixCols > 0) { // dereference from matrix to vector if (rowMajor) vectorSize = matrixCols; else vectorSize = matrixRows; matrixCols = 0; matrixRows = 0; if (vectorSize == 1) vector1 = true; } else if (isVector()) { // dereference from vector to scalar vectorSize = 1; vector1 = false; } else if (isCoopMat() || isCoopVecNV()) { coopmatNV = false; coopmatKHR = false; coopmatKHRuse = 0; coopmatKHRUseValid = false; coopvecNV = false; typeParameters = nullptr; } else if (isTileAttachmentQCOM()) { tileAttachmentQCOM = false; typeParameters = nullptr; } } } // for making structures, ... TType(TTypeList* userDef, const TString& n) : basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), spirvType(nullptr) { sampler.clear(); qualifier.clear(); typeName = NewPoolTString(n.c_str()); } // For interface blocks TType(TTypeList* userDef, const TString& n, const TQualifier& q) : basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), tileAttachmentQCOM(false), tensorRankARM(0), qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), spirvType(nullptr) { sampler.clear(); typeName = NewPoolTString(n.c_str()); } // for block reference (first parameter must be EbtReference) explicit TType(TBasicType t, const TType &p, const TString& n) : basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { assert(t == EbtReference); typeName = NewPoolTString(n.c_str()); sampler.clear(); qualifier.clear(); qualifier.storage = p.qualifier.storage; referentType = p.clone(); } virtual ~TType() {} // Not for use across pool pops; it will cause multiple instances of TType to point to the same information. // This only works if that information (like a structure's list of types) does not change and // the instances are sharing the same pool. void shallowCopy(const TType& copyOf) { basicType = copyOf.basicType; sampler = copyOf.sampler; qualifier = copyOf.qualifier; vectorSize = copyOf.vectorSize; matrixCols = copyOf.matrixCols; matrixRows = copyOf.matrixRows; vector1 = copyOf.vector1; arraySizes = copyOf.arraySizes; // copying the pointer only, not the contents fieldName = copyOf.fieldName; typeName = copyOf.typeName; if (isStruct()) { structure = copyOf.structure; } else { referentType = copyOf.referentType; } typeParameters = copyOf.typeParameters; spirvType = copyOf.spirvType; coopmatNV = copyOf.isCoopMatNV(); coopmatKHR = copyOf.isCoopMatKHR(); coopmatKHRuse = copyOf.coopmatKHRuse; coopmatKHRUseValid = copyOf.coopmatKHRUseValid; coopvecNV = copyOf.isCoopVecNV(); tileAttachmentQCOM = copyOf.tileAttachmentQCOM; tensorRankARM = copyOf.tensorRankARM; } // Make complete copy of the whole type graph rooted at 'copyOf'. void deepCopy(const TType& copyOf) { TMap copied; // to enable copying a type graph as a graph, not a tree deepCopy(copyOf, copied); } // Recursively make temporary void makeTemporary() { getQualifier().makeTemporary(); if (isStruct()) for (unsigned int i = 0; i < structure->size(); ++i) (*structure)[i].type->makeTemporary(); } TType* clone() const { TType *newType = new TType(); newType->deepCopy(*this); return newType; } void makeVector() { vector1 = true; } virtual void hideMember() { basicType = EbtVoid; vectorSize = 1u; } virtual bool hiddenMember() const { return basicType == EbtVoid; } virtual void setFieldName(const TString& n) { fieldName = NewPoolTString(n.c_str()); } virtual const TString& getTypeName() const { assert(typeName); return *typeName; } virtual bool hasFieldName() const { return (fieldName != nullptr); } virtual const TString& getFieldName() const { assert(fieldName); return *fieldName; } TShaderInterface getShaderInterface() const { if (basicType != EbtBlock) return EsiNone; switch (qualifier.storage) { default: return EsiNone; case EvqVaryingIn: return EsiInput; case EvqVaryingOut: return EsiOutput; case EvqUniform: case EvqBuffer: return EsiUniform; } } virtual TBasicType getBasicType() const { return basicType; } virtual const TSampler& getSampler() const { return sampler; } virtual TSampler& getSampler() { return sampler; } virtual TQualifier& getQualifier() { return qualifier; } virtual const TQualifier& getQualifier() const { return qualifier; } virtual int getVectorSize() const { return static_cast(vectorSize); } // returns 1 for either scalar or vector of size 1, valid for both virtual int getMatrixCols() const { return static_cast(matrixCols); } virtual int getMatrixRows() const { return static_cast(matrixRows); } virtual int getOuterArraySize() const { return arraySizes->getOuterSize(); } virtual TIntermTyped* getOuterArrayNode() const { return arraySizes->getOuterNode(); } virtual int getCumulativeArraySize() const { return arraySizes->getCumulativeSize(); } bool isArrayOfArrays() const { return arraySizes != nullptr && arraySizes->getNumDims() > 1; } virtual int getImplicitArraySize() const { return arraySizes->getImplicitSize(); } virtual const TArraySizes* getArraySizes() const { return arraySizes; } virtual TArraySizes* getArraySizes() { return arraySizes; } virtual TType* getReferentType() const { return referentType; } virtual const TTypeParameters* getTypeParameters() const { return typeParameters; } virtual TTypeParameters* getTypeParameters() { return typeParameters; } virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray() && ! isCoopVecNV(); } virtual bool isScalarOrVec1() const { return isScalar() || vector1; } virtual bool isScalarOrVector() const { return !isMatrix() && !isStruct() && !isArray(); } virtual bool isVector() const { return vectorSize > 1u || vector1; } virtual bool isMatrix() const { return matrixCols ? true : false; } virtual bool isArray() const { return arraySizes != nullptr; } virtual bool isSizedArray() const { return isArray() && arraySizes->isSized(); } virtual bool isUnsizedArray() const { return isArray() && !arraySizes->isSized(); } virtual bool isImplicitlySizedArray() const { return isArray() && arraySizes->isImplicitlySized(); } virtual bool isArrayVariablyIndexed() const { assert(isArray()); return arraySizes->isVariablyIndexed(); } virtual void setArrayVariablyIndexed() { assert(isArray()); arraySizes->setVariablyIndexed(); } virtual void updateImplicitArraySize(int size) { assert(isArray()); arraySizes->updateImplicitSize(size); } virtual void setImplicitlySized(bool isImplicitSized) { arraySizes->setImplicitlySized(isImplicitSized); } virtual bool isStruct() const { return basicType == EbtStruct || basicType == EbtBlock; } virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16 || basicType == EbtBFloat16 || basicType == EbtFloatE5M2 || basicType == EbtFloatE4M3; } virtual bool isIntegerDomain() const { switch (basicType) { case EbtInt8: case EbtUint8: case EbtInt16: case EbtUint16: case EbtInt: case EbtUint: case EbtInt64: case EbtUint64: case EbtAtomicUint: return true; default: break; } return false; } virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery || basicType == EbtHitObjectNV || isTileAttachmentQCOM() || isTensorARM(); } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } virtual bool isAttachmentEXT() const { return basicType == EbtSampler && getSampler().isAttachmentEXT(); } virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); } virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); } virtual bool isTexture() const { return basicType == EbtSampler && getSampler().isTexture(); } virtual bool isBindlessImage() const { return isImage() && qualifier.layoutBindlessImage; } virtual bool isBindlessTexture() const { return isTexture() && qualifier.layoutBindlessSampler; } // Check the block-name convention of creating a block without populating it's members: virtual bool isUnusableName() const { return isStruct() && structure == nullptr; } virtual bool isParameterized() const { return typeParameters != nullptr; } bool isAtomic() const { return basicType == EbtAtomicUint; } bool isCoopMat() const { return coopmatNV || coopmatKHR; } bool isCoopMatNV() const { return coopmatNV; } bool isCoopMatKHR() const { return coopmatKHR; } bool isCoopVecNV() const { return coopvecNV; } bool isTileAttachmentQCOM() const { return tileAttachmentQCOM; } bool isTensorARM() const { return tensorRankARM; } bool hasTypeParameter() const { return isCoopMat() || isCoopVecNV() || isTensorARM(); } int getTensorRankARM() const { return static_cast(tensorRankARM); } bool isReference() const { return getBasicType() == EbtReference; } bool isSpirvType() const { return getBasicType() == EbtSpirvType; } int getCoopMatKHRuse() const { return static_cast(coopmatKHRuse); } bool isTensorLayoutNV() const { return getBasicType() == EbtTensorLayoutNV; } bool isTensorViewNV() const { return getBasicType() == EbtTensorViewNV; } // return true if this type contains any subtype which satisfies the given predicate. template bool contains(P predicate) const { if (predicate(this)) return true; const auto hasa = [predicate](const TTypeLoc& tl) { return tl.type->contains(predicate); }; return isStruct() && std::any_of(structure->begin(), structure->end(), hasa); } // Recursively checks if the type contains the given basic type virtual bool containsBasicType(TBasicType checkType) const { return contains([checkType](const TType* t) { return t->basicType == checkType; } ); } // Recursively check the structure for any arrays, needed for some error checks virtual bool containsArray() const { return contains([](const TType* t) { return t->isArray(); } ); } // Check the structure for any structures, needed for some error checks virtual bool containsStructure() const { return contains([this](const TType* t) { return t != this && t->isStruct(); } ); } // Recursively check the structure for any unsized arrays, needed for triggering a copyUp(). virtual bool containsUnsizedArray() const { return contains([](const TType* t) { return t->isUnsizedArray(); } ); } virtual bool containsOpaque() const { return contains([](const TType* t) { return t->isOpaque(); } ); } virtual bool containsSampler() const { return contains([](const TType* t) { return t->isTexture() || t->isImage(); }); } // Recursively checks if the type contains a built-in variable virtual bool containsBuiltIn() const { return contains([](const TType* t) { return t->isBuiltIn(); } ); } virtual bool containsNonOpaque() const { if (isTensorARM()) { // Tensors have a numerical basicType even though it is Opaque return false; } const auto nonOpaque = [](const TType* t) { switch (t->basicType) { case EbtVoid: case EbtFloat: case EbtDouble: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtInt8: case EbtUint8: case EbtInt16: case EbtUint16: case EbtInt: case EbtUint: case EbtInt64: case EbtUint64: case EbtBool: case EbtReference: return true; default: return false; } }; return contains(nonOpaque); } virtual bool containsSpecializationSize() const { return contains([](const TType* t) { return t->isArray() && t->arraySizes->isOuterSpecialization(); } ); } bool containsDouble() const { return containsBasicType(EbtDouble); } bool contains16BitFloat() const { return containsBasicType(EbtFloat16); } bool containsBFloat16() const { return containsBasicType(EbtBFloat16); } bool contains8BitFloat() const { return containsBasicType(EbtFloatE5M2) || containsBasicType(EbtFloatE4M3); } bool contains64BitInt() const { return containsBasicType(EbtInt64) || containsBasicType(EbtUint64); } bool contains16BitInt() const { return containsBasicType(EbtInt16) || containsBasicType(EbtUint16); } bool contains8BitInt() const { return containsBasicType(EbtInt8) || containsBasicType(EbtUint8); } bool containsCoopMat() const { return contains([](const TType* t) { return t->coopmatNV || t->coopmatKHR; } ); } bool containsCoopVec() const { return contains([](const TType* t) { return t->coopvecNV; } ); } bool containsReference() const { return containsBasicType(EbtReference); } // Array editing methods. Array descriptors can be shared across // type instances. This allows all uses of the same array // to be updated at once. E.g., all nodes can be explicitly sized // by tracking and correcting one implicit size. Or, all nodes // can get the explicit size on a redeclaration that gives size. // // N.B.: Don't share with the shared symbol tables (symbols are // marked as isReadOnly(). Such symbols with arrays that will be // edited need to copyUp() on first use, so that // A) the edits don't effect the shared symbol table, and // B) the edits are shared across all users. void updateArraySizes(const TType& type) { // For when we may already be sharing existing array descriptors, // keeping the pointers the same, just updating the contents. assert(arraySizes != nullptr); assert(type.arraySizes != nullptr); *arraySizes = *type.arraySizes; } void copyArraySizes(const TArraySizes& s) { // For setting a fresh new set of array sizes, not yet worrying about sharing. arraySizes = new TArraySizes; *arraySizes = s; } void transferArraySizes(TArraySizes* s) { // For setting an already allocated set of sizes that this type can use // (no copy made). arraySizes = s; } void clearArraySizes() { arraySizes = nullptr; } // Add inner array sizes, to any existing sizes, via copy; the // sizes passed in can still be reused for other purposes. void copyArrayInnerSizes(const TArraySizes* s) { if (s != nullptr) { if (arraySizes == nullptr) copyArraySizes(*s); else arraySizes->addInnerSizes(*s); } } void changeOuterArraySize(int s) { arraySizes->changeOuterSize(s); } // Recursively make the implicit array size the explicit array size. // Expicit arrays are compile-time or link-time sized, never run-time sized. // Sometimes, policy calls for an array to be run-time sized even if it was // never variably indexed: Don't turn a 'skipNonvariablyIndexed' array into // an explicit array. void adoptImplicitArraySizes(bool skipNonvariablyIndexed) { if (isUnsizedArray() && (qualifier.builtIn == EbvSampleMask || !(skipNonvariablyIndexed || isArrayVariablyIndexed()))) { changeOuterArraySize(getImplicitArraySize()); setImplicitlySized(true); } // For multi-dim per-view arrays, set unsized inner dimension size to 1 if (qualifier.isPerView() && arraySizes && arraySizes->isInnerUnsized()) arraySizes->clearInnerUnsized(); if (isStruct() && structure->size() > 0) { int lastMember = (int)structure->size() - 1; for (int i = 0; i < lastMember; ++i) (*structure)[i].type->adoptImplicitArraySizes(false); // implement the "last member of an SSBO" policy (*structure)[lastMember].type->adoptImplicitArraySizes(getQualifier().storage == EvqBuffer); } } void copyTypeParameters(const TTypeParameters& s) { // For setting a fresh new set of type parameters, not yet worrying about sharing. typeParameters = new TTypeParameters; *typeParameters = s; } const char* getBasicString() const { return TType::getBasicString(basicType); } static const char* getBasicString(TBasicType t) { switch (t) { case EbtFloat: return "float"; case EbtInt: return "int"; case EbtUint: return "uint"; case EbtSampler: return "sampler/image"; case EbtVoid: return "void"; case EbtDouble: return "double"; case EbtFloat16: return "float16_t"; case EbtBFloat16: return "bfloat16_t"; case EbtFloatE5M2: return "floate5m2_t"; case EbtFloatE4M3: return "floate4m3_t"; case EbtInt8: return "int8_t"; case EbtUint8: return "uint8_t"; case EbtInt16: return "int16_t"; case EbtUint16: return "uint16_t"; case EbtInt64: return "int64_t"; case EbtUint64: return "uint64_t"; case EbtBool: return "bool"; case EbtAtomicUint: return "atomic_uint"; case EbtStruct: return "structure"; case EbtBlock: return "block"; case EbtAccStruct: return "accelerationStructureNV"; case EbtRayQuery: return "rayQueryEXT"; case EbtReference: return "reference"; case EbtString: return "string"; case EbtSpirvType: return "spirv_type"; case EbtCoopmat: return "coopmat"; case EbtTensorLayoutNV: return "tensorLayoutNV"; case EbtTensorViewNV: return "tensorViewNV"; case EbtCoopvecNV: return "coopvecNV"; case EbtTensorARM: return "tensorARM"; default: return "unknown type"; } } TString getCompleteString(bool syntactic = false, bool getQualifiers = true, bool getPrecision = true, bool getType = true, TString name = "", TString structName = "") const { TString typeString; const auto appendStr = [&](const char* s) { typeString.append(s); }; 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 (getQualifiers) { if (qualifier.hasSpirvDecorate()) appendStr(qualifier.getSpirvDecorateQualifierString().c_str()); 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); } } 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.layoutFullQuads) appendStr(" full_quads"); if (qualifier.layoutQuadDeriv) appendStr(" quad_derivatives"); if (qualifier.layoutHitObjectShaderRecordNV) appendStr(" hitobjectshaderrecordnv"); if (qualifier.layoutBindlessSampler) appendStr(" layoutBindlessSampler"); if (qualifier.layoutBindlessImage) appendStr(" layoutBindlessImage"); appendStr(")"); } } if (qualifier.invariant) appendStr(" invariant"); if (qualifier.noContraction) appendStr(" noContraction"); if (qualifier.centroid) appendStr(" centroid"); if (qualifier.smooth) appendStr(" smooth"); if (qualifier.flat) appendStr(" flat"); if (qualifier.nopersp) appendStr(" noperspective"); if (qualifier.explicitInterp) appendStr(" __explicitInterpAMD"); if (qualifier.pervertexNV) appendStr(" pervertexNV"); if (qualifier.pervertexEXT) appendStr(" pervertexEXT"); if (qualifier.perPrimitiveNV) appendStr(" perprimitiveNV"); if (qualifier.perViewNV) appendStr(" perviewNV"); if (qualifier.perTaskNV) appendStr(" taskNV"); if (qualifier.patch) appendStr(" patch"); if (qualifier.sample) appendStr(" sample"); if (qualifier.coherent) appendStr(" coherent"); if (qualifier.devicecoherent) appendStr(" devicecoherent"); if (qualifier.queuefamilycoherent) appendStr(" queuefamilycoherent"); if (qualifier.workgroupcoherent) appendStr(" workgroupcoherent"); if (qualifier.subgroupcoherent) appendStr(" subgroupcoherent"); if (qualifier.shadercallcoherent) appendStr(" shadercallcoherent"); if (qualifier.nonprivate) appendStr(" nonprivate"); if (qualifier.volatil) appendStr(" volatile"); if (qualifier.nontemporal) appendStr(" nontemporal"); if (qualifier.restrict) appendStr(" restrict"); if (qualifier.readonly) appendStr(" readonly"); if (qualifier.writeonly) appendStr(" writeonly"); if (qualifier.specConstant) appendStr(" specialization-constant"); if (qualifier.nonUniform) appendStr(" nonuniform"); if (qualifier.isNullInit()) appendStr(" null-init"); if (qualifier.isSpirvByReference()) appendStr(" spirv_by_reference"); if (qualifier.isSpirvLiteral()) appendStr(" spirv_literal"); 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("[]"); else { if (size == UnsizedArraySize) { appendStr("["); if (i == 0) appendInt(arraySizes->getImplicitSize()); appendStr("]"); } else { appendStr("["); appendInt(arraySizes->getDimSize(i)); appendStr("]"); } } } } } 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()) { if (isCoopMatKHR()) { appendStr(" "); appendStr("coopmat"); } if (isTensorLayoutNV()) { appendStr(" "); appendStr("tensorLayoutNV"); } if (isTensorViewNV()) { appendStr(" "); appendStr("tensorViewNV"); } if (isCoopVecNV()) { appendStr(" "); appendStr("coopvecNV"); } appendStr("<"); for (int i = 0; i < (int)typeParameters->arraySizes->getNumDims(); ++i) { appendInt(typeParameters->arraySizes->getDimSize(i)); if (i != (int)typeParameters->arraySizes->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(", "); typeString.append((*structure)[i].type->getCompleteString()); typeString.append(" "); typeString.append((*structure)[i].type->getFieldName()); hasHiddenMember = false; } } appendStr("}"); } } } return typeString; } TString getBasicTypeString() const { if (basicType == EbtSampler) return sampler.getString(); else return getBasicString(); } const char* getStorageQualifierString() const { return GetStorageQualifierString(qualifier.storage); } const char* getBuiltInVariableString() const { return GetBuiltInVariableString(qualifier.builtIn); } const char* getPrecisionQualifierString() const { return GetPrecisionQualifierString(qualifier.precision); } const TTypeList* getStruct() const { assert(isStruct()); return structure; } void setStruct(TTypeList* s) { assert(isStruct()); structure = s; } TTypeList* getWritableStruct() const { assert(isStruct()); return structure; } // This should only be used when known to not be sharing with other threads void setBasicType(const TBasicType& t) { basicType = t; } void setVectorSize(int s) { assert(s >= 0); vectorSize = static_cast(s) & 0b1111; } int computeNumComponents() const { uint32_t components = 0; if (isCoopVecNV()) { components = typeParameters->arraySizes->getDimSize(0); } else if (getBasicType() == EbtStruct || getBasicType() == EbtBlock) { for (TTypeList::const_iterator tl = getStruct()->begin(); tl != getStruct()->end(); tl++) components += ((*tl).type)->computeNumComponents(); } else if (matrixCols) components = matrixCols * matrixRows; else components = vectorSize; if (arraySizes != nullptr) { components *= arraySizes->getCumulativeSize(); } return static_cast(components); } // append this type's mangled name to the passed in 'name' void appendMangledName(TString& name) const { buildMangledName(name); name += ';' ; } // These variables are inconsistently declared inside and outside of gl_PerVertex in glslang right now. // They are declared inside of 'in gl_PerVertex', but sitting as standalone when they are 'out'puts. bool isInconsistentGLPerVertexMember(const TString& name) const { if (name == "gl_SecondaryPositionNV" || name == "gl_PositionPerViewNV") return true; return false; } // Do two structure types match? They could be declared independently, // in different places, but still might satisfy the definition of matching. // From the spec: // // "Structures must have the same name, sequence of type names, and // type definitions, and member names to be considered the same type. // This rule applies recursively for nested or embedded types." // // 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; // There are inconsistencies with how gl_PerVertex is setup. For now ignore those as errors if they // are known inconsistencies. 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 (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(li); *rpidx = static_cast(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) return false; } else { // Skip hidden members if ((*structure)[li].type->hiddenMember()) { ri--; continue; } else if ((*right.structure)[ri].type->hiddenMember()) { li--; continue; } // If one of the members is something that's inconsistently declared, skip over it // for now. if (isGLPerVertex) { if (isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) { ri--; continue; } else if (isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) { li--; continue; } } else { return false; } } // 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 (lpidx != nullptr) { *rpidx = -1; } return false; } } else { if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) { if (lpidx != nullptr) { *lpidx = -1; } return false; } } } return true; } bool sameReferenceType(const TType& right) const { if (isReference() != right.isReference()) return false; if (!isReference() && !right.isReference()) return true; assert(referentType != nullptr); assert(right.referentType != nullptr); if (referentType == right.referentType) return true; return *referentType == *right.referentType; } // 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 { if (lpidx != nullptr) { *lpidx = -1; *rpidx = -1; } return basicType == right.basicType && sameElementShape(right, lpidx, rpidx); } // See if two type's arrayness match bool sameArrayness(const TType& right) const { return ((arraySizes == nullptr && right.arraySizes == nullptr) || (arraySizes != nullptr && right.arraySizes != nullptr && (*arraySizes == *right.arraySizes || (arraySizes->isImplicitlySized() && right.arraySizes->isDefaultImplicitlySized()) || (right.arraySizes->isImplicitlySized() && arraySizes->isDefaultImplicitlySized())))); } // See if two type's arrayness match in everything except their outer dimension bool sameInnerArrayness(const TType& right) const { assert(arraySizes != nullptr && right.arraySizes != nullptr); return arraySizes->sameInnerArrayness(*right.arraySizes); } // See if two type's parameters match bool sameTypeParameters(const TType& right) const { return ((typeParameters == nullptr && right.typeParameters == nullptr) || (typeParameters != nullptr && right.typeParameters != nullptr && *typeParameters == *right.typeParameters)); } // See if two type's SPIR-V type contents match bool sameSpirvType(const TType& right) const { return ((spirvType == nullptr && right.spirvType == nullptr) || (spirvType != nullptr && right.spirvType != nullptr && *spirvType == *right.spirvType)); } // See if two type's elements match in all ways except basic type // If mismatch in structure members, return member indices in lpidx and rpidx. bool sameElementShape(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { 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 && isCoopMatNV() == right.isCoopMatNV() && isCoopMatKHR() == right.isCoopMatKHR() && isCoopVecNV() == right.isCoopVecNV() && isTensorARM() == right.isTensorARM() && sameStructType(right, lpidx, rpidx) && sameReferenceType(right); } // See if a cooperative matrix type parameter with unspecified parameters is // an OK function parameter bool coopMatParameterOK(const TType& right) const { if (isCoopMatNV()) { return right.isCoopMatNV() && (getBasicType() == right.getBasicType()) && typeParameters == nullptr && right.typeParameters != nullptr; } if (isCoopMatKHR() && right.isCoopMatKHR()) { return ((getBasicType() == right.getBasicType()) || (getBasicType() == EbtCoopmat) || (right.getBasicType() == EbtCoopmat)) && ((typeParameters == nullptr && right.typeParameters != nullptr) || (typeParameters != nullptr && right.typeParameters == nullptr)); } return false; } // See if a cooperative vector type parameter with unspecified parameters is // an OK function parameter bool coopVecParameterOK(const TType& right) const { if (isCoopVecNV() && right.isCoopVecNV()) { return ((getBasicType() == right.getBasicType()) || (getBasicType() == EbtCoopvecNV) || (right.getBasicType() == EbtCoopvecNV)) && typeParameters == nullptr && right.typeParameters != nullptr; } return false; } bool sameCoopMatBaseType(const TType &right) const { bool rv = false; if (isCoopMatNV()) { rv = isCoopMatNV() && right.isCoopMatNV(); if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16) rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16; else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16) rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16; else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16) rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8 || right.getBasicType() == EbtInt16; else rv = false; } else if (isCoopMatKHR() && right.isCoopMatKHR()) { if (isFloatingDomain()) rv = right.isFloatingDomain() || right.getBasicType() == EbtCoopmat; else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16) rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16 || right.getBasicType() == EbtCoopmat; else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16) rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8 || right.getBasicType() == EbtInt16 || right.getBasicType() == EbtCoopmat; else rv = false; } return rv; } bool tensorParameterOK(const TType& right) const { if (isTensorLayoutNV()) { return right.isTensorLayoutNV() && right.typeParameters == nullptr && typeParameters != nullptr; } if (isTensorViewNV()) { return right.isTensorViewNV() && right.typeParameters == nullptr && typeParameters != nullptr; } if (isTensorARM()) { return right.isTensorARM() && right.typeParameters == nullptr && typeParameters != nullptr; } return false; } bool sameTensorBaseTypeARM(const TType &right) const { return (typeParameters == nullptr || right.typeParameters == nullptr || (tensorRankARM == right.tensorRankARM && getBasicType() == right.getBasicType())); } bool sameCoopVecBaseType(const TType &right) const { bool rv = false; if (isCoopVecNV() && right.isCoopVecNV()) { if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16) rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16 || right.getBasicType() == EbtCoopvecNV; else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16) rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16 || right.getBasicType() == EbtCoopvecNV; else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16) rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8 || right.getBasicType() == EbtInt16 || right.getBasicType() == EbtCoopvecNV; else rv = false; } return rv; } bool sameCoopMatUse(const TType &right) const { return coopmatKHRuse == right.coopmatKHRuse; } bool sameCoopMatShape(const TType &right) const { if (!isCoopMat() || !right.isCoopMat() || isCoopMatKHR() != right.isCoopMatKHR()) return false; // Skip bit width type parameter (first array size) for coopmatNV int firstArrayDimToCompare = isCoopMatNV() ? 1 : 0; int lastArrayDimToCompare = typeParameters->arraySizes->getNumDims() - (isCoopMatKHR() ? 1 : 0); for (int i = firstArrayDimToCompare; i < lastArrayDimToCompare; ++i) { if (typeParameters->arraySizes->getDimSize(i) != right.typeParameters->arraySizes->getDimSize(i)) return false; } return true; } bool sameCoopMatShapeAndUse(const TType &right) const { if (!sameCoopMatShape(right)) return false; if (coopmatKHRuse != right.coopmatKHRuse) return false; return true; } // See if two types match in all ways (just the actual type, not qualification) bool operator==(const TType& right) const { return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right) && sameCoopMatUse(right) && sameSpirvType(right); } bool operator!=(const TType& right) const { return ! operator==(right); } unsigned int getBufferReferenceAlignment() const { if (getBasicType() == glslang::EbtReference) { return getReferentType()->getQualifier().hasBufferReferenceAlign() ? (1u << getReferentType()->getQualifier().layoutBufferReferenceAlign) : 16u; } return 0; } const TSpirvType& getSpirvType() const { assert(spirvType); return *spirvType; } protected: // Require consumer to pick between deep copy and shallow copy. TType(const TType& type); TType& operator=(const TType& type); // Recursively copy a type graph, while preserving the graph-like // quality. That is, don't make more than one copy of a structure that // gets reused multiple times in the type graph. void deepCopy(const TType& copyOf, TMap& copiedMap) { shallowCopy(copyOf); // GL_EXT_spirv_intrinsics if (copyOf.qualifier.spirvDecorate) { qualifier.spirvDecorate = new TSpirvDecorate; *qualifier.spirvDecorate = *copyOf.qualifier.spirvDecorate; } if (copyOf.spirvType) { spirvType = new TSpirvType; *spirvType = *copyOf.spirvType; } if (copyOf.arraySizes) { arraySizes = new TArraySizes; *arraySizes = *copyOf.arraySizes; } if (copyOf.typeParameters) { typeParameters = new TTypeParameters; typeParameters->arraySizes = new TArraySizes; *typeParameters->arraySizes = *copyOf.typeParameters->arraySizes; if (copyOf.typeParameters->spirvType) { *typeParameters->spirvType = *copyOf.typeParameters->spirvType; } typeParameters->basicType = copyOf.basicType; } if (copyOf.isStruct() && copyOf.structure) { auto prevCopy = copiedMap.find(copyOf.structure); if (prevCopy != copiedMap.end()) structure = prevCopy->second; else { structure = new TTypeList; copiedMap[copyOf.structure] = structure; for (unsigned int i = 0; i < copyOf.structure->size(); ++i) { TTypeLoc typeLoc; typeLoc.loc = (*copyOf.structure)[i].loc; typeLoc.type = new TType(); typeLoc.type->deepCopy(*(*copyOf.structure)[i].type, copiedMap); structure->push_back(typeLoc); } } } if (copyOf.fieldName) fieldName = NewPoolTString(copyOf.fieldName->c_str()); if (copyOf.typeName) typeName = NewPoolTString(copyOf.typeName->c_str()); } void buildMangledName(TString&) const; TBasicType basicType : 8; uint32_t vectorSize : 4; // 1 means either scalar or 1-component vector; see vector1 to disambiguate. uint32_t matrixCols : 4; uint32_t matrixRows : 4; bool vector1 : 1; // Backward-compatible tracking of a 1-component vector distinguished from a scalar. // GLSL 4.5 never has a 1-component vector; so this will always be false until such // functionality is added. // HLSL does have a 1-component vectors, so this will be true to disambiguate // from a scalar. bool coopmatNV : 1; bool coopmatKHR : 1; uint32_t coopmatKHRuse : 3; // Accepts one of three values: 0, 1, 2 (gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator) bool coopmatKHRUseValid : 1; // True if coopmatKHRuse has been set bool coopvecNV : 1; bool tileAttachmentQCOM : 1; uint32_t tensorRankARM : 4; // 0 means not a tensor; non-zero indicates the tensor rank. TQualifier qualifier; TArraySizes* arraySizes; // nullptr unless an array; can be shared across types // A type can't be both a structure (EbtStruct/EbtBlock) and a reference (EbtReference), so // conserve space by making these a union union { TTypeList* structure; // invalid unless this is a struct; can be shared across types TType *referentType; // invalid unless this is an EbtReference }; TString *fieldName; // for structure field names TString *typeName; // for structure type name TSampler sampler; TTypeParameters *typeParameters;// nullptr unless a parameterized type; can be shared across types TSpirvType* spirvType; // SPIR-V type defined by spirv_type directive }; } // end namespace glslang #endif // _TYPES_INCLUDED_ glslang-16.0.0/glslang/Include/arrays.h000066400000000000000000000273711506534232700177320ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Implement types for tracking GLSL arrays, arrays of arrays, etc. // #ifndef _ARRAYS_INCLUDED #define _ARRAYS_INCLUDED #include namespace glslang { // This is used to mean there is no size yet (unsized), it is waiting to get a size from somewhere else. const int UnsizedArraySize = 0; class TIntermTyped; extern bool SameSpecializationConstants(TIntermTyped*, TIntermTyped*); // Specialization constants need both a nominal size and a node that defines // the specialization constant being used. Array types are the same when their // size and specialization constant nodes are the same. struct TArraySize { unsigned int size; TIntermTyped* node; // nullptr means no specialization constant node bool operator==(const TArraySize& rhs) const { if (size != rhs.size) return false; if (node == nullptr || rhs.node == nullptr) return node == rhs.node; return SameSpecializationConstants(node, rhs.node); } }; // // TSmallArrayVector is used as the container for the set of sizes in TArraySizes. // It has generic-container semantics, while TArraySizes has array-of-array semantics. // That is, TSmallArrayVector should be more focused on mechanism and TArraySizes on policy. // struct TSmallArrayVector { // // TODO: memory: TSmallArrayVector is intended to be smaller. // Almost all arrays could be handled by two sizes each fitting // in 16 bits, needing a real vector only in the cases where there // are more than 3 sizes or a size needing more than 16 bits. // POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TSmallArrayVector() : sizes(nullptr) { } virtual ~TSmallArrayVector() { dealloc(); } // For breaking into two non-shared copies, independently modifiable. TSmallArrayVector& operator=(const TSmallArrayVector& from) { if (from.sizes == nullptr) sizes = nullptr; else { alloc(); *sizes = *from.sizes; } return *this; } int size() const { if (sizes == nullptr) return 0; return (int)sizes->size(); } unsigned int frontSize() const { assert(sizes != nullptr && sizes->size() > 0); return sizes->front().size; } TIntermTyped* frontNode() const { assert(sizes != nullptr && sizes->size() > 0); return sizes->front().node; } void changeFront(unsigned int s) { assert(sizes != nullptr); // this should only happen for implicitly sized arrays, not specialization constants assert(sizes->front().node == nullptr); sizes->front().size = s; } void push_back(unsigned int e, TIntermTyped* n) { alloc(); TArraySize pair = { e, n }; sizes->push_back(pair); } void push_back(const TSmallArrayVector& newDims) { alloc(); sizes->insert(sizes->end(), newDims.sizes->begin(), newDims.sizes->end()); } void pop_front() { assert(sizes != nullptr && sizes->size() > 0); if (sizes->size() == 1) dealloc(); else sizes->erase(sizes->begin()); } void pop_back() { assert(sizes != nullptr && sizes->size() > 0); if (sizes->size() == 1) dealloc(); else sizes->resize(sizes->size() - 1); } // 'this' should currently not be holding anything, and copyNonFront // will make it hold a copy of all but the first element of rhs. // (This would be useful for making a type that is dereferenced by // one dimension.) void copyNonFront(const TSmallArrayVector& rhs) { assert(sizes == nullptr); if (rhs.size() > 1) { alloc(); sizes->insert(sizes->begin(), rhs.sizes->begin() + 1, rhs.sizes->end()); } } unsigned int getDimSize(int i) const { assert(sizes != nullptr && (int)sizes->size() > i); return (*sizes)[i].size; } void setDimSize(int i, unsigned int size) const { assert(sizes != nullptr && (int)sizes->size() > i); assert((*sizes)[i].node == nullptr); (*sizes)[i].size = size; } TIntermTyped* getDimNode(int i) const { assert(sizes != nullptr && (int)sizes->size() > i); return (*sizes)[i].node; } bool operator==(const TSmallArrayVector& rhs) const { if (sizes == nullptr && rhs.sizes == nullptr) return true; if (sizes == nullptr || rhs.sizes == nullptr) return false; return *sizes == *rhs.sizes; } bool operator!=(const TSmallArrayVector& rhs) const { return ! operator==(rhs); } protected: TSmallArrayVector(const TSmallArrayVector&); void alloc() { if (sizes == nullptr) sizes = new TVector; } void dealloc() { delete sizes; sizes = nullptr; } TVector* sizes; // will either hold such a pointer, or in the future, hold the two array sizes }; // // Represent an array, or array of arrays, to arbitrary depth. This is not // done through a hierarchy of types in a type tree, rather all contiguous arrayness // in the type hierarchy is localized into this single cumulative object. // // The arrayness in TTtype is a pointer, so that it can be non-allocated and zero // for the vast majority of types that are non-array types. // // Order Policy: these are all identical: // - left to right order within a contiguous set of ...[..][..][..]... in the source language // - index order 0, 1, 2, ... within the 'sizes' member below // - outer-most to inner-most // struct TArraySizes { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TArraySizes() : implicitArraySize(0), implicitlySized(true), variablyIndexed(false){ } // For breaking into two non-shared copies, independently modifiable. TArraySizes& operator=(const TArraySizes& from) { implicitArraySize = from.implicitArraySize; variablyIndexed = from.variablyIndexed; sizes = from.sizes; implicitlySized = from.implicitlySized; return *this; } // translate from array-of-array semantics to container semantics int getNumDims() const { return sizes.size(); } int getDimSize(int dim) const { return sizes.getDimSize(dim); } TIntermTyped* getDimNode(int dim) const { return sizes.getDimNode(dim); } void setDimSize(int dim, int size) { sizes.setDimSize(dim, size); } int getOuterSize() const { return sizes.frontSize(); } TIntermTyped* getOuterNode() const { return sizes.frontNode(); } int getCumulativeSize() const { int size = 1; for (int d = 0; d < sizes.size(); ++d) { // this only makes sense in paths that have a known array size assert(sizes.getDimSize(d) != UnsizedArraySize); size *= sizes.getDimSize(d); } return size; } void addInnerSize() { addInnerSize((unsigned)UnsizedArraySize); } void addInnerSize(int s) { addInnerSize((unsigned)s, nullptr); } void addInnerSize(int s, TIntermTyped* n) { sizes.push_back((unsigned)s, n); } void addInnerSize(TArraySize pair) { sizes.push_back(pair.size, pair.node); implicitlySized = false; } void addInnerSizes(const TArraySizes& s) { sizes.push_back(s.sizes); } void changeOuterSize(int s) { sizes.changeFront((unsigned)s); implicitlySized = false; } int getImplicitSize() const { return implicitArraySize > 0 ? implicitArraySize : 1; } void updateImplicitSize(int s) { implicitArraySize = (std::max)(implicitArraySize, s); } bool isInnerUnsized() const { for (int d = 1; d < sizes.size(); ++d) { if (sizes.getDimSize(d) == (unsigned)UnsizedArraySize) return true; } return false; } bool clearInnerUnsized() { for (int d = 1; d < sizes.size(); ++d) { if (sizes.getDimSize(d) == (unsigned)UnsizedArraySize) setDimSize(d, 1); } return false; } bool isInnerSpecialization() const { for (int d = 1; d < sizes.size(); ++d) { if (sizes.getDimNode(d) != nullptr) return true; } return false; } bool isOuterSpecialization() { return sizes.getDimNode(0) != nullptr; } bool hasUnsized() const { return getOuterSize() == UnsizedArraySize || isInnerUnsized(); } bool isSized() const { return getOuterSize() != UnsizedArraySize; } bool isImplicitlySized() const { return implicitlySized; } bool isDefaultImplicitlySized() const { return implicitlySized && implicitArraySize == 0; } void setImplicitlySized(bool isImplicitSizing) { implicitlySized = isImplicitSizing; } void dereference() { sizes.pop_front(); } void removeLastSize() { sizes.pop_back(); } void copyDereferenced(const TArraySizes& rhs) { assert(sizes.size() == 0); if (rhs.sizes.size() > 1) sizes.copyNonFront(rhs.sizes); } bool sameInnerArrayness(const TArraySizes& rhs) const { if (sizes.size() != rhs.sizes.size()) return false; for (int d = 1; d < sizes.size(); ++d) { if (sizes.getDimSize(d) != rhs.sizes.getDimSize(d) || sizes.getDimNode(d) != rhs.sizes.getDimNode(d)) return false; } return true; } void setVariablyIndexed() { variablyIndexed = true; } bool isVariablyIndexed() const { return variablyIndexed; } bool operator==(const TArraySizes& rhs) const { return sizes == rhs.sizes; } bool operator!=(const TArraySizes& rhs) const { return sizes != rhs.sizes; } protected: TSmallArrayVector sizes; TArraySizes(const TArraySizes&); // For tracking maximum referenced compile-time constant index. // Applies only to the outer-most dimension. Potentially becomes // the implicit size of the array, if not variably indexed and // otherwise legal. int implicitArraySize; bool implicitlySized; bool variablyIndexed; // true if array is indexed with a non compile-time constant }; } // end namespace glslang #endif // _ARRAYS_INCLUDED_ glslang-16.0.0/glslang/Include/glslang_c_interface.h000066400000000000000000000311311506534232700223670ustar00rootroot00000000000000/** This code is based on the glslang_c_interface implementation by Viktor Latypov **/ /** BSD 2-Clause License Copyright (c) 2019, Viktor Latypov All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **/ #ifndef GLSLANG_C_IFACE_H_INCLUDED #define GLSLANG_C_IFACE_H_INCLUDED #include #include #include "glslang_c_shader_types.h" #include "visibility.h" typedef struct glslang_shader_s glslang_shader_t; typedef struct glslang_program_s glslang_program_t; typedef struct glslang_mapper_s glslang_mapper_t; typedef struct glslang_resolver_s glslang_resolver_t; /* Version counterpart */ typedef struct glslang_version_s { int major; int minor; int patch; const char* flavor; } glslang_version_t; /* TLimits counterpart */ typedef struct glslang_limits_s { bool non_inductive_for_loops; bool while_loops; bool do_while_loops; bool general_uniform_indexing; bool general_attribute_matrix_vector_indexing; bool general_varying_indexing; bool general_sampler_indexing; bool general_variable_indexing; bool general_constant_matrix_vector_indexing; } glslang_limits_t; /* TBuiltInResource counterpart */ typedef struct glslang_resource_s { int max_lights; int max_clip_planes; int max_texture_units; int max_texture_coords; int max_vertex_attribs; int max_vertex_uniform_components; int max_varying_floats; int max_vertex_texture_image_units; int max_combined_texture_image_units; int max_texture_image_units; int max_fragment_uniform_components; int max_draw_buffers; int max_vertex_uniform_vectors; int max_varying_vectors; int max_fragment_uniform_vectors; int max_vertex_output_vectors; int max_fragment_input_vectors; int min_program_texel_offset; int max_program_texel_offset; int max_clip_distances; int max_compute_work_group_count_x; int max_compute_work_group_count_y; int max_compute_work_group_count_z; int max_compute_work_group_size_x; int max_compute_work_group_size_y; int max_compute_work_group_size_z; int max_compute_uniform_components; int max_compute_texture_image_units; int max_compute_image_uniforms; int max_compute_atomic_counters; int max_compute_atomic_counter_buffers; int max_varying_components; int max_vertex_output_components; int max_geometry_input_components; int max_geometry_output_components; int max_fragment_input_components; int max_image_units; int max_combined_image_units_and_fragment_outputs; int max_combined_shader_output_resources; int max_image_samples; int max_vertex_image_uniforms; int max_tess_control_image_uniforms; int max_tess_evaluation_image_uniforms; int max_geometry_image_uniforms; int max_fragment_image_uniforms; int max_combined_image_uniforms; int max_geometry_texture_image_units; int max_geometry_output_vertices; int max_geometry_total_output_components; int max_geometry_uniform_components; int max_geometry_varying_components; int max_tess_control_input_components; int max_tess_control_output_components; int max_tess_control_texture_image_units; int max_tess_control_uniform_components; int max_tess_control_total_output_components; int max_tess_evaluation_input_components; int max_tess_evaluation_output_components; int max_tess_evaluation_texture_image_units; int max_tess_evaluation_uniform_components; int max_tess_patch_components; int max_patch_vertices; int max_tess_gen_level; int max_viewports; int max_vertex_atomic_counters; int max_tess_control_atomic_counters; int max_tess_evaluation_atomic_counters; int max_geometry_atomic_counters; int max_fragment_atomic_counters; int max_combined_atomic_counters; int max_atomic_counter_bindings; int max_vertex_atomic_counter_buffers; int max_tess_control_atomic_counter_buffers; int max_tess_evaluation_atomic_counter_buffers; int max_geometry_atomic_counter_buffers; int max_fragment_atomic_counter_buffers; int max_combined_atomic_counter_buffers; int max_atomic_counter_buffer_size; int max_transform_feedback_buffers; int max_transform_feedback_interleaved_components; int max_cull_distances; int max_combined_clip_and_cull_distances; int max_samples; int max_mesh_output_vertices_nv; int max_mesh_output_primitives_nv; int max_mesh_work_group_size_x_nv; int max_mesh_work_group_size_y_nv; int max_mesh_work_group_size_z_nv; int max_task_work_group_size_x_nv; int max_task_work_group_size_y_nv; int max_task_work_group_size_z_nv; int max_mesh_view_count_nv; int 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; union { int max_dual_source_draw_buffers_ext; /* Incorrectly capitalized name retained for backward compatibility */ int maxDualSourceDrawBuffersEXT; }; glslang_limits_t limits; } glslang_resource_t; /* Inclusion result structure allocated by C include_local/include_system callbacks */ typedef struct glsl_include_result_s { /* Header file name or NULL if inclusion failed */ const char* header_name; /* Header contents or NULL */ const char* header_data; size_t header_length; } glsl_include_result_t; /* Callback for local file inclusion */ typedef glsl_include_result_t* (*glsl_include_local_func)(void* ctx, const char* header_name, const char* includer_name, size_t include_depth); /* Callback for system file inclusion */ typedef glsl_include_result_t* (*glsl_include_system_func)(void* ctx, const char* header_name, const char* includer_name, size_t include_depth); /* Callback for include result destruction */ typedef int (*glsl_free_include_result_func)(void* ctx, glsl_include_result_t* result); /* Collection of callbacks for GLSL preprocessor */ typedef struct glsl_include_callbacks_s { glsl_include_system_func include_system; glsl_include_local_func include_local; glsl_free_include_result_func free_include_result; } glsl_include_callbacks_t; typedef struct glslang_input_s { glslang_source_t language; glslang_stage_t stage; glslang_client_t client; glslang_target_client_version_t client_version; glslang_target_language_t target_language; glslang_target_language_version_t target_language_version; /** Shader source code */ const char* code; int default_version; glslang_profile_t default_profile; int force_default_version_and_profile; int forward_compatible; glslang_messages_t messages; const glslang_resource_t* resource; glsl_include_callbacks_t callbacks; void* callbacks_ctx; } glslang_input_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; bool compile_only; bool optimize_allow_expanded_id_bound; } glslang_spv_options_t; #ifdef __cplusplus extern "C" { #endif GLSLANG_EXPORT void glslang_get_version(glslang_version_t* version); GLSLANG_EXPORT int glslang_initialize_process(void); GLSLANG_EXPORT void glslang_finalize_process(void); 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_set_entry_point(glslang_shader_t* shader, const char* s); GLSLANG_EXPORT void glslang_shader_set_invert_y(glslang_shader_t* shader, bool y); 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 void glslang_shader_set_default_uniform_block_set_and_binding(glslang_shader_t* shader, unsigned int set, unsigned int binding); GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_name(glslang_shader_t* shader, const char *name); GLSLANG_EXPORT void glslang_shader_set_resource_set_binding(glslang_shader_t* shader, const char *const *bindings, unsigned int num_bindings); 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); GLSLANG_EXPORT void glslang_shader_set_preprocessed_code(glslang_shader_t* shader, const char* code); GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader); GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader); GLSLANG_EXPORT glslang_program_t* glslang_program_create(void); 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 int glslang_program_map_io_with_resolver_and_mapper(glslang_program_t* program, glslang_resolver_t* resolver, glslang_mapper_t* mapper); 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); GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t* program); GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program); GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program); GLSLANG_EXPORT glslang_mapper_t* glslang_glsl_mapper_create(void); GLSLANG_EXPORT void glslang_glsl_mapper_delete(glslang_mapper_t* mapper); GLSLANG_EXPORT glslang_resolver_t* glslang_glsl_resolver_create(glslang_program_t* program, glslang_stage_t stage); GLSLANG_EXPORT void glslang_glsl_resolver_delete(glslang_resolver_t* resolver); #ifdef __cplusplus } #endif #endif /* #ifdef GLSLANG_C_IFACE_INCLUDED */ glslang-16.0.0/glslang/Include/glslang_c_shader_types.h000066400000000000000000000220331506534232700231220ustar00rootroot00000000000000/** This code is based on the glslang_c_interface implementation by Viktor Latypov **/ /** BSD 2-Clause License Copyright (c) 2019, Viktor Latypov All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **/ #ifndef C_SHADER_TYPES_H_INCLUDED #define C_SHADER_TYPES_H_INCLUDED #define LAST_ELEMENT_MARKER(x) x /* EShLanguage counterpart */ typedef enum { GLSLANG_STAGE_VERTEX, GLSLANG_STAGE_TESSCONTROL, GLSLANG_STAGE_TESSEVALUATION, GLSLANG_STAGE_GEOMETRY, GLSLANG_STAGE_FRAGMENT, GLSLANG_STAGE_COMPUTE, GLSLANG_STAGE_RAYGEN, 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 /* EShLanguageMask counterpart */ typedef enum { GLSLANG_STAGE_VERTEX_MASK = (1 << GLSLANG_STAGE_VERTEX), GLSLANG_STAGE_TESSCONTROL_MASK = (1 << GLSLANG_STAGE_TESSCONTROL), GLSLANG_STAGE_TESSEVALUATION_MASK = (1 << GLSLANG_STAGE_TESSEVALUATION), GLSLANG_STAGE_GEOMETRY_MASK = (1 << GLSLANG_STAGE_GEOMETRY), GLSLANG_STAGE_FRAGMENT_MASK = (1 << GLSLANG_STAGE_FRAGMENT), GLSLANG_STAGE_COMPUTE_MASK = (1 << GLSLANG_STAGE_COMPUTE), GLSLANG_STAGE_RAYGEN_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; /* EShSource counterpart */ typedef enum { GLSLANG_SOURCE_NONE, GLSLANG_SOURCE_GLSL, GLSLANG_SOURCE_HLSL, LAST_ELEMENT_MARKER(GLSLANG_SOURCE_COUNT), } glslang_source_t; /* EShClient counterpart */ typedef enum { GLSLANG_CLIENT_NONE, GLSLANG_CLIENT_VULKAN, GLSLANG_CLIENT_OPENGL, LAST_ELEMENT_MARKER(GLSLANG_CLIENT_COUNT), } glslang_client_t; /* EShTargetLanguage counterpart */ typedef enum { GLSLANG_TARGET_NONE, GLSLANG_TARGET_SPV, LAST_ELEMENT_MARKER(GLSLANG_TARGET_COUNT), } glslang_target_language_t; /* SH_TARGET_ClientVersion counterpart */ typedef enum { GLSLANG_TARGET_VULKAN_1_0 = (1 << 22), GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12), GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12), GLSLANG_TARGET_VULKAN_1_3 = (1 << 22) | (3 << 12), GLSLANG_TARGET_VULKAN_1_4 = (1 << 22) | (4 << 12), GLSLANG_TARGET_OPENGL_450 = 450, LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 6), } glslang_target_client_version_t; /* SH_TARGET_LanguageVersion counterpart */ typedef enum { GLSLANG_TARGET_SPV_1_0 = (1 << 16), GLSLANG_TARGET_SPV_1_1 = (1 << 16) | (1 << 8), GLSLANG_TARGET_SPV_1_2 = (1 << 16) | (2 << 8), GLSLANG_TARGET_SPV_1_3 = (1 << 16) | (3 << 8), GLSLANG_TARGET_SPV_1_4 = (1 << 16) | (4 << 8), GLSLANG_TARGET_SPV_1_5 = (1 << 16) | (5 << 8), 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 // 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, GLSLANG_OPT_SIMPLE, GLSLANG_OPT_FULL, LAST_ELEMENT_MARKER(GLSLANG_OPT_LEVEL_COUNT), } glslang_optimization_level_t; /* EShTextureSamplerTransformMode counterpart */ typedef enum { GLSLANG_TEX_SAMP_TRANS_KEEP, GLSLANG_TEX_SAMP_TRANS_UPGRADE_TEXTURE_REMOVE_SAMPLER, LAST_ELEMENT_MARKER(GLSLANG_TEX_SAMP_TRANS_COUNT), } glslang_texture_sampler_transform_mode_t; /* EShMessages counterpart */ typedef enum { GLSLANG_MSG_DEFAULT_BIT = 0, GLSLANG_MSG_RELAXED_ERRORS_BIT = (1 << 0), GLSLANG_MSG_SUPPRESS_WARNINGS_BIT = (1 << 1), GLSLANG_MSG_AST_BIT = (1 << 2), GLSLANG_MSG_SPV_RULES_BIT = (1 << 3), GLSLANG_MSG_VULKAN_RULES_BIT = (1 << 4), GLSLANG_MSG_ONLY_PREPROCESSOR_BIT = (1 << 5), GLSLANG_MSG_READ_HLSL_BIT = (1 << 6), GLSLANG_MSG_CASCADING_ERRORS_BIT = (1 << 7), GLSLANG_MSG_KEEP_UNCALLED_BIT = (1 << 8), GLSLANG_MSG_HLSL_OFFSETS_BIT = (1 << 9), GLSLANG_MSG_DEBUG_INFO_BIT = (1 << 10), GLSLANG_MSG_HLSL_ENABLE_16BIT_TYPES_BIT = (1 << 11), GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12), GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13), GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14), GLSLANG_MSG_ENHANCED = (1 << 15), GLSLANG_MSG_ABSOLUTE_PATH = (1 << 16), GLSLANG_MSG_DISPLAY_ERROR_COLUMN = (1 << 17), GLSLANG_MSG_LINK_TIME_OPTIMIZATION_BIT = (1 << 18), GLSLANG_MSG_VALIDATE_CROSS_STAGE_IO_BIT = (1 << 19), LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT), } glslang_messages_t; /* EShReflectionOptions counterpart */ typedef enum { GLSLANG_REFLECTION_DEFAULT_BIT = 0, GLSLANG_REFLECTION_STRICT_ARRAY_SUFFIX_BIT = (1 << 0), GLSLANG_REFLECTION_BASIC_ARRAY_SUFFIX_BIT = (1 << 1), GLSLANG_REFLECTION_INTERMEDIATE_IOO_BIT = (1 << 2), GLSLANG_REFLECTION_SEPARATE_BUFFERS_BIT = (1 << 3), GLSLANG_REFLECTION_ALL_BLOCK_VARIABLES_BIT = (1 << 4), GLSLANG_REFLECTION_UNWRAP_IO_BLOCKS_BIT = (1 << 5), GLSLANG_REFLECTION_ALL_IO_VARIABLES_BIT = (1 << 6), GLSLANG_REFLECTION_SHARED_STD140_SSBO_BIT = (1 << 7), GLSLANG_REFLECTION_SHARED_STD140_UBO_BIT = (1 << 8), LAST_ELEMENT_MARKER(GLSLANG_REFLECTION_COUNT), } glslang_reflection_options_t; /* EProfile counterpart (from Versions.h) */ typedef enum { GLSLANG_BAD_PROFILE = 0, GLSLANG_NO_PROFILE = (1 << 0), GLSLANG_CORE_PROFILE = (1 << 1), GLSLANG_COMPATIBILITY_PROFILE = (1 << 2), GLSLANG_ES_PROFILE = (1 << 3), LAST_ELEMENT_MARKER(GLSLANG_PROFILE_COUNT), } glslang_profile_t; /* 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 glslang-16.0.0/glslang/Include/intermediate.h000066400000000000000000001670131506534232700211010ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Definition of the in-memory high-level intermediate representation // of shaders. This is a tree that parser creates. // // Nodes in the tree are defined as a hierarchy of classes derived from // TIntermNode. Each is a node in a tree. There is no preset branching factor; // each node can have it's own type of list of children. // #ifndef __INTERMEDIATE_H #define __INTERMEDIATE_H #include "Common.h" #include "Types.h" #include "ConstantUnion.h" namespace glslang { class TIntermediate; // // Operators used by the high-level (parse tree) representation. // 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 EOpParameters, // an aggregate listing the parameters to a function EOpSpirvInst, // // Unary operators // EOpNegative, EOpLogicalNot, EOpVectorLogicalNot, EOpBitwiseNot, EOpPostIncrement, EOpPostDecrement, EOpPreIncrement, EOpPreDecrement, EOpCopyObject, EOpDeclare, // Used by debugging to force declaration of variable in correct scope // Operator used to represent all conversions between int, float, and bool. // The specific types are inferred from TBasicType. EOpConvNumeric, // uint64_t <-> pointer EOpConvUint64ToPtr, EOpConvPtrToUint64, // uvec2 <-> pointer EOpConvUvec2ToPtr, EOpConvPtrToUvec2, // uint64_t -> accelerationStructureEXT EOpConvUint64ToAccStruct, // uvec2 -> accelerationStructureEXT EOpConvUvec2ToAccStruct, // // binary operations // EOpAdd, EOpSub, EOpMul, EOpDiv, EOpMod, EOpRightShift, EOpLeftShift, EOpAnd, EOpInclusiveOr, EOpExclusiveOr, EOpEqual, EOpNotEqual, EOpVectorEqual, EOpVectorNotEqual, EOpLessThan, EOpGreaterThan, EOpLessThanEqual, EOpGreaterThanEqual, EOpComma, EOpVectorTimesScalar, EOpVectorTimesMatrix, EOpMatrixTimesVector, EOpMatrixTimesScalar, EOpLogicalOr, EOpLogicalXor, EOpLogicalAnd, EOpIndexDirect, EOpIndexIndirect, EOpIndexDirectStruct, EOpVectorSwizzle, EOpMethod, EOpScoping, // // Built-in functions mapped to operators // EOpRadians, EOpDegrees, EOpSin, EOpCos, EOpTan, EOpAsin, EOpAcos, EOpAtan, EOpSinh, EOpCosh, EOpTanh, EOpAsinh, EOpAcosh, EOpAtanh, EOpPow, EOpExp, EOpLog, EOpExp2, EOpLog2, EOpSqrt, EOpInverseSqrt, EOpAbs, EOpSign, EOpFloor, EOpTrunc, EOpRound, EOpRoundEven, EOpCeil, EOpFract, EOpModf, EOpMin, EOpMax, EOpClamp, EOpMix, EOpStep, EOpSmoothStep, EOpIsNan, EOpIsInf, EOpFma, EOpFrexp, EOpLdexp, EOpFloatBitsToInt, EOpFloatBitsToUint, EOpIntBitsToFloat, EOpUintBitsToFloat, EOpDoubleBitsToInt64, EOpDoubleBitsToUint64, EOpInt64BitsToDouble, EOpUint64BitsToDouble, EOpFloat16BitsToInt16, EOpFloat16BitsToUint16, EOpInt16BitsToFloat16, EOpUint16BitsToFloat16, EOpPackSnorm2x16, EOpUnpackSnorm2x16, EOpPackUnorm2x16, EOpUnpackUnorm2x16, EOpPackSnorm4x8, EOpUnpackSnorm4x8, EOpPackUnorm4x8, EOpUnpackUnorm4x8, EOpPackHalf2x16, EOpUnpackHalf2x16, EOpPackDouble2x32, EOpUnpackDouble2x32, EOpPackInt2x32, EOpUnpackInt2x32, EOpPackUint2x32, EOpUnpackUint2x32, EOpPackFloat2x16, EOpUnpackFloat2x16, EOpPackInt2x16, EOpUnpackInt2x16, EOpPackUint2x16, EOpUnpackUint2x16, EOpPackInt4x16, EOpUnpackInt4x16, EOpPackUint4x16, EOpUnpackUint4x16, EOpPack16, EOpPack32, EOpPack64, EOpUnpack32, EOpUnpack16, EOpUnpack8, EOpLength, EOpDistance, EOpDot, EOpCross, EOpNormalize, EOpFaceForward, EOpReflect, EOpRefract, EOpMin3, EOpMax3, EOpMid3, EOpDPdx, // Fragment only EOpDPdy, // Fragment only EOpFwidth, // Fragment only EOpDPdxFine, // Fragment only EOpDPdyFine, // Fragment only EOpFwidthFine, // Fragment only EOpDPdxCoarse, // Fragment only EOpDPdyCoarse, // Fragment only EOpFwidthCoarse, // Fragment only EOpInterpolateAtCentroid, // Fragment only EOpInterpolateAtSample, // Fragment only EOpInterpolateAtOffset, // Fragment only EOpInterpolateAtVertex, EOpMatrixTimesMatrix, EOpOuterProduct, EOpDeterminant, EOpMatrixInverse, EOpTranspose, EOpFtransform, EOpNoise, EOpEmitVertex, // geometry only EOpEndPrimitive, // geometry only EOpEmitStreamVertex, // geometry only EOpEndStreamPrimitive, // geometry only EOpBarrier, EOpMemoryBarrier, EOpMemoryBarrierAtomicCounter, EOpMemoryBarrierBuffer, EOpMemoryBarrierImage, EOpMemoryBarrierShared, // compute only EOpGroupMemoryBarrier, // compute only EOpBallot, EOpReadInvocation, EOpReadFirstInvocation, EOpAnyInvocation, EOpAllInvocations, EOpAllInvocationsEqual, EOpSubgroupGuardStart, EOpSubgroupBarrier, EOpSubgroupMemoryBarrier, EOpSubgroupMemoryBarrierBuffer, EOpSubgroupMemoryBarrierImage, EOpSubgroupMemoryBarrierShared, // compute only EOpSubgroupElect, EOpSubgroupAll, EOpSubgroupAny, EOpSubgroupAllEqual, EOpSubgroupBroadcast, EOpSubgroupBroadcastFirst, EOpSubgroupBallot, EOpSubgroupInverseBallot, EOpSubgroupBallotBitExtract, EOpSubgroupBallotBitCount, EOpSubgroupBallotInclusiveBitCount, EOpSubgroupBallotExclusiveBitCount, EOpSubgroupBallotFindLSB, EOpSubgroupBallotFindMSB, EOpSubgroupShuffle, EOpSubgroupShuffleXor, EOpSubgroupShuffleUp, EOpSubgroupShuffleDown, EOpSubgroupRotate, EOpSubgroupClusteredRotate, EOpSubgroupAdd, EOpSubgroupMul, EOpSubgroupMin, EOpSubgroupMax, EOpSubgroupAnd, EOpSubgroupOr, EOpSubgroupXor, EOpSubgroupInclusiveAdd, EOpSubgroupInclusiveMul, EOpSubgroupInclusiveMin, EOpSubgroupInclusiveMax, EOpSubgroupInclusiveAnd, EOpSubgroupInclusiveOr, EOpSubgroupInclusiveXor, EOpSubgroupExclusiveAdd, EOpSubgroupExclusiveMul, EOpSubgroupExclusiveMin, EOpSubgroupExclusiveMax, EOpSubgroupExclusiveAnd, EOpSubgroupExclusiveOr, EOpSubgroupExclusiveXor, EOpSubgroupClusteredAdd, EOpSubgroupClusteredMul, EOpSubgroupClusteredMin, EOpSubgroupClusteredMax, EOpSubgroupClusteredAnd, EOpSubgroupClusteredOr, EOpSubgroupClusteredXor, EOpSubgroupQuadBroadcast, EOpSubgroupQuadSwapHorizontal, EOpSubgroupQuadSwapVertical, EOpSubgroupQuadSwapDiagonal, EOpSubgroupQuadAll, EOpSubgroupQuadAny, EOpSubgroupPartition, EOpSubgroupPartitionedAdd, EOpSubgroupPartitionedMul, EOpSubgroupPartitionedMin, EOpSubgroupPartitionedMax, EOpSubgroupPartitionedAnd, EOpSubgroupPartitionedOr, EOpSubgroupPartitionedXor, EOpSubgroupPartitionedInclusiveAdd, EOpSubgroupPartitionedInclusiveMul, EOpSubgroupPartitionedInclusiveMin, EOpSubgroupPartitionedInclusiveMax, EOpSubgroupPartitionedInclusiveAnd, EOpSubgroupPartitionedInclusiveOr, EOpSubgroupPartitionedInclusiveXor, EOpSubgroupPartitionedExclusiveAdd, EOpSubgroupPartitionedExclusiveMul, EOpSubgroupPartitionedExclusiveMin, EOpSubgroupPartitionedExclusiveMax, EOpSubgroupPartitionedExclusiveAnd, EOpSubgroupPartitionedExclusiveOr, EOpSubgroupPartitionedExclusiveXor, EOpSubgroupGuardStop, // Integer dot product EOpDotPackedEXT, EOpDotAccSatEXT, EOpDotPackedAccSatEXT, EOpMinInvocations, EOpMaxInvocations, EOpAddInvocations, EOpMinInvocationsNonUniform, EOpMaxInvocationsNonUniform, EOpAddInvocationsNonUniform, EOpMinInvocationsInclusiveScan, EOpMaxInvocationsInclusiveScan, EOpAddInvocationsInclusiveScan, EOpMinInvocationsInclusiveScanNonUniform, EOpMaxInvocationsInclusiveScanNonUniform, EOpAddInvocationsInclusiveScanNonUniform, EOpMinInvocationsExclusiveScan, EOpMaxInvocationsExclusiveScan, EOpAddInvocationsExclusiveScan, EOpMinInvocationsExclusiveScanNonUniform, EOpMaxInvocationsExclusiveScanNonUniform, EOpAddInvocationsExclusiveScanNonUniform, EOpSwizzleInvocations, EOpSwizzleInvocationsMasked, EOpWriteInvocation, EOpMbcnt, EOpCubeFaceIndex, EOpCubeFaceCoord, EOpTime, EOpAtomicAdd, EOpAtomicSubtract, EOpAtomicMin, EOpAtomicMax, EOpAtomicAnd, EOpAtomicOr, EOpAtomicXor, EOpAtomicExchange, EOpAtomicCompSwap, EOpAtomicLoad, EOpAtomicStore, EOpAtomicCounterIncrement, // results in pre-increment value EOpAtomicCounterDecrement, // results in post-decrement value EOpAtomicCounter, EOpAtomicCounterAdd, EOpAtomicCounterSubtract, EOpAtomicCounterMin, EOpAtomicCounterMax, EOpAtomicCounterAnd, EOpAtomicCounterOr, EOpAtomicCounterXor, EOpAtomicCounterExchange, EOpAtomicCounterCompSwap, EOpAny, EOpAll, EOpCooperativeMatrixLoad, EOpCooperativeMatrixStore, EOpCooperativeMatrixMulAdd, EOpCooperativeMatrixLoadNV, EOpCooperativeMatrixStoreNV, EOpCooperativeMatrixLoadTensorNV, EOpCooperativeMatrixStoreTensorNV, EOpCooperativeMatrixMulAddNV, EOpCooperativeMatrixReduceNV, EOpCooperativeMatrixPerElementOpNV, EOpCooperativeMatrixTransposeNV, EOpCreateTensorLayoutNV, EOpTensorLayoutSetBlockSizeNV, EOpTensorLayoutSetDimensionNV, EOpTensorLayoutSetStrideNV, EOpTensorLayoutSliceNV, EOpTensorLayoutSetClampValueNV, EOpCreateTensorViewNV, EOpTensorViewSetDimensionNV, EOpTensorViewSetStrideNV, EOpTensorViewSetClipNV, EOpCooperativeVectorMatMulNV, EOpCooperativeVectorMatMulAddNV, EOpCooperativeVectorLoadNV, EOpCooperativeVectorStoreNV, EOpCooperativeVectorOuterProductAccumulateNV, EOpCooperativeVectorReduceSumAccumulateNV, EOpTensorReadARM, EOpTensorWriteARM, EOpTensorSizeARM, EOpBeginInvocationInterlock, // Fragment only EOpEndInvocationInterlock, // Fragment only EOpIsHelperInvocation, EOpDebugPrintf, // // Branch // EOpKill, // Fragment only EOpTerminateInvocation, // Fragment only EOpDemote, // Fragment only EOpTerminateRayKHR, // Any-hit only EOpIgnoreIntersectionKHR, // Any-hit only EOpReturn, EOpBreak, EOpContinue, EOpCase, EOpDefault, // // Constructors // EOpConstructGuardStart, EOpConstructInt, // these first scalar forms also identify what implicit conversion is needed EOpConstructUint, EOpConstructInt8, EOpConstructUint8, EOpConstructInt16, EOpConstructUint16, EOpConstructInt64, EOpConstructUint64, EOpConstructBool, EOpConstructFloat, EOpConstructDouble, // Keep vector and matrix constructors in a consistent relative order for // TParseContext::constructBuiltIn, which converts between 8/16/32 bit // vector constructors EOpConstructVec2, EOpConstructVec3, EOpConstructVec4, EOpConstructMat2x2, EOpConstructMat2x3, EOpConstructMat2x4, EOpConstructMat3x2, EOpConstructMat3x3, EOpConstructMat3x4, EOpConstructMat4x2, EOpConstructMat4x3, EOpConstructMat4x4, EOpConstructDVec2, EOpConstructDVec3, EOpConstructDVec4, EOpConstructBVec2, EOpConstructBVec3, EOpConstructBVec4, EOpConstructI8Vec2, EOpConstructI8Vec3, EOpConstructI8Vec4, EOpConstructU8Vec2, EOpConstructU8Vec3, EOpConstructU8Vec4, EOpConstructI16Vec2, EOpConstructI16Vec3, EOpConstructI16Vec4, EOpConstructU16Vec2, EOpConstructU16Vec3, EOpConstructU16Vec4, EOpConstructIVec2, EOpConstructIVec3, EOpConstructIVec4, EOpConstructUVec2, EOpConstructUVec3, EOpConstructUVec4, EOpConstructI64Vec2, EOpConstructI64Vec3, EOpConstructI64Vec4, EOpConstructU64Vec2, EOpConstructU64Vec3, EOpConstructU64Vec4, EOpConstructDMat2x2, EOpConstructDMat2x3, EOpConstructDMat2x4, EOpConstructDMat3x2, EOpConstructDMat3x3, EOpConstructDMat3x4, EOpConstructDMat4x2, EOpConstructDMat4x3, EOpConstructDMat4x4, EOpConstructIMat2x2, EOpConstructIMat2x3, EOpConstructIMat2x4, EOpConstructIMat3x2, EOpConstructIMat3x3, EOpConstructIMat3x4, EOpConstructIMat4x2, EOpConstructIMat4x3, EOpConstructIMat4x4, EOpConstructUMat2x2, EOpConstructUMat2x3, EOpConstructUMat2x4, EOpConstructUMat3x2, EOpConstructUMat3x3, EOpConstructUMat3x4, EOpConstructUMat4x2, EOpConstructUMat4x3, EOpConstructUMat4x4, EOpConstructBMat2x2, EOpConstructBMat2x3, EOpConstructBMat2x4, EOpConstructBMat3x2, EOpConstructBMat3x3, EOpConstructBMat3x4, EOpConstructBMat4x2, EOpConstructBMat4x3, EOpConstructBMat4x4, EOpConstructFloat16, EOpConstructF16Vec2, EOpConstructF16Vec3, EOpConstructF16Vec4, EOpConstructF16Mat2x2, EOpConstructF16Mat2x3, EOpConstructF16Mat2x4, EOpConstructF16Mat3x2, EOpConstructF16Mat3x3, EOpConstructF16Mat3x4, EOpConstructF16Mat4x2, EOpConstructF16Mat4x3, EOpConstructF16Mat4x4, EOpConstructBFloat16, EOpConstructBF16Vec2, EOpConstructBF16Vec3, EOpConstructBF16Vec4, EOpConstructFloatE5M2, EOpConstructFloatE5M2Vec2, EOpConstructFloatE5M2Vec3, EOpConstructFloatE5M2Vec4, EOpConstructFloatE4M3, EOpConstructFloatE4M3Vec2, EOpConstructFloatE4M3Vec3, EOpConstructFloatE4M3Vec4, EOpConstructStruct, EOpConstructTextureSampler, EOpConstructNonuniform, // expected to be transformed away, not present in final AST EOpConstructReference, EOpConstructCooperativeMatrixNV, EOpConstructCooperativeMatrixKHR, EOpConstructCooperativeVectorNV, EOpConstructAccStruct, EOpConstructSaturated, EOpConstructGuardEnd, // // moves // EOpAssign, EOpAddAssign, EOpSubAssign, EOpMulAssign, EOpVectorTimesMatrixAssign, EOpVectorTimesScalarAssign, EOpMatrixTimesScalarAssign, EOpMatrixTimesMatrixAssign, EOpDivAssign, EOpModAssign, EOpAndAssign, EOpInclusiveOrAssign, EOpExclusiveOrAssign, EOpLeftShiftAssign, EOpRightShiftAssign, // // Array operators // // Can apply to arrays, vectors, or matrices. // Can be decomposed to a constant at compile time, but this does not always happen, // due to link-time effects. So, consumer can expect either a link-time sized or // run-time sized array. EOpArrayLength, // // Image operations // EOpImageGuardBegin, EOpImageQuerySize, EOpImageQuerySamples, EOpImageLoad, EOpImageStore, EOpImageLoadLod, EOpImageStoreLod, EOpImageAtomicAdd, EOpImageAtomicMin, EOpImageAtomicMax, EOpImageAtomicAnd, EOpImageAtomicOr, EOpImageAtomicXor, EOpImageAtomicExchange, EOpImageAtomicCompSwap, EOpImageAtomicLoad, EOpImageAtomicStore, EOpSubpassLoad, EOpSubpassLoadMS, EOpSparseImageLoad, EOpSparseImageLoadLod, EOpColorAttachmentReadEXT, // Fragment only EOpImageGuardEnd, // // Texture operations // EOpTextureGuardBegin, EOpTextureQuerySize, EOpTextureQueryLod, EOpTextureQueryLevels, EOpTextureQuerySamples, EOpSamplingGuardBegin, EOpTexture, EOpTextureProj, EOpTextureLod, EOpTextureOffset, EOpTextureFetch, EOpTextureFetchOffset, EOpTextureProjOffset, EOpTextureLodOffset, EOpTextureProjLod, EOpTextureProjLodOffset, EOpTextureGrad, EOpTextureGradOffset, EOpTextureProjGrad, EOpTextureProjGradOffset, EOpTextureGather, EOpTextureGatherOffset, EOpTextureGatherOffsets, EOpTextureClamp, EOpTextureOffsetClamp, EOpTextureGradClamp, EOpTextureGradOffsetClamp, EOpTextureGatherLod, EOpTextureGatherLodOffset, EOpTextureGatherLodOffsets, EOpFragmentMaskFetch, EOpFragmentFetch, EOpSparseTextureGuardBegin, EOpSparseTexture, EOpSparseTextureLod, EOpSparseTextureOffset, EOpSparseTextureFetch, EOpSparseTextureFetchOffset, EOpSparseTextureLodOffset, EOpSparseTextureGrad, EOpSparseTextureGradOffset, EOpSparseTextureGather, EOpSparseTextureGatherOffset, EOpSparseTextureGatherOffsets, EOpSparseTexelsResident, EOpSparseTextureClamp, EOpSparseTextureOffsetClamp, EOpSparseTextureGradClamp, EOpSparseTextureGradOffsetClamp, EOpSparseTextureGatherLod, EOpSparseTextureGatherLodOffset, EOpSparseTextureGatherLodOffsets, EOpSparseTextureGuardEnd, EOpImageFootprintGuardBegin, EOpImageSampleFootprintNV, EOpImageSampleFootprintClampNV, EOpImageSampleFootprintLodNV, EOpImageSampleFootprintGradNV, EOpImageSampleFootprintGradClampNV, EOpImageFootprintGuardEnd, EOpSamplingGuardEnd, EOpTextureGuardEnd, // // Integer operations // EOpAddCarry, EOpSubBorrow, EOpUMulExtended, EOpIMulExtended, EOpBitfieldExtract, EOpBitfieldInsert, EOpBitFieldReverse, EOpBitCount, EOpFindLSB, EOpFindMSB, EOpCountLeadingZeros, EOpCountTrailingZeros, EOpAbsDifference, EOpAddSaturate, EOpSubSaturate, EOpAverage, EOpAverageRounded, EOpMul32x16, EOpTraceNV, EOpTraceRayMotionNV, EOpTraceKHR, EOpReportIntersection, EOpIgnoreIntersectionNV, EOpTerminateRayNV, EOpExecuteCallableNV, EOpExecuteCallableKHR, EOpWritePackedPrimitiveIndices4x8NV, EOpEmitMeshTasksEXT, EOpSetMeshOutputsEXT, // // GL_EXT_ray_query operations // EOpRayQueryInitialize, EOpRayQueryTerminate, EOpRayQueryGenerateIntersection, EOpRayQueryConfirmIntersection, EOpRayQueryProceed, EOpRayQueryGetIntersectionType, EOpRayQueryGetRayTMin, EOpRayQueryGetRayFlags, EOpRayQueryGetIntersectionT, EOpRayQueryGetIntersectionInstanceCustomIndex, EOpRayQueryGetIntersectionInstanceId, EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset, EOpRayQueryGetIntersectionGeometryIndex, EOpRayQueryGetIntersectionPrimitiveIndex, EOpRayQueryGetIntersectionBarycentrics, EOpRayQueryGetIntersectionFrontFace, EOpRayQueryGetIntersectionCandidateAABBOpaque, EOpRayQueryGetIntersectionObjectRayDirection, EOpRayQueryGetIntersectionObjectRayOrigin, EOpRayQueryGetWorldRayDirection, EOpRayQueryGetWorldRayOrigin, EOpRayQueryGetIntersectionObjectToWorld, EOpRayQueryGetIntersectionWorldToObject, // // GL_NV_shader_invocation_reorder // EOpHitObjectTraceRayNV, EOpHitObjectTraceRayMotionNV, EOpHitObjectRecordHitNV, EOpHitObjectRecordHitMotionNV, EOpHitObjectRecordHitWithIndexNV, EOpHitObjectRecordHitWithIndexMotionNV, EOpHitObjectRecordMissNV, EOpHitObjectRecordMissMotionNV, EOpHitObjectRecordEmptyNV, EOpHitObjectExecuteShaderNV, EOpHitObjectIsEmptyNV, EOpHitObjectIsMissNV, EOpHitObjectIsHitNV, EOpHitObjectGetRayTMinNV, EOpHitObjectGetRayTMaxNV, EOpHitObjectGetObjectRayOriginNV, EOpHitObjectGetObjectRayDirectionNV, EOpHitObjectGetWorldRayOriginNV, EOpHitObjectGetWorldRayDirectionNV, EOpHitObjectGetWorldToObjectNV, EOpHitObjectGetObjectToWorldNV, EOpHitObjectGetInstanceCustomIndexNV, EOpHitObjectGetInstanceIdNV, EOpHitObjectGetGeometryIndexNV, EOpHitObjectGetPrimitiveIndexNV, EOpHitObjectGetHitKindNV, EOpHitObjectGetShaderBindingTableRecordIndexNV, EOpHitObjectGetShaderRecordBufferHandleNV, EOpHitObjectGetAttributesNV, EOpHitObjectGetCurrentTimeNV, EOpReorderThreadNV, EOpFetchMicroTriangleVertexPositionNV, EOpFetchMicroTriangleVertexBarycentricNV, // HLSL operations // EOpClip, // discard if input value < 0 EOpIsFinite, EOpLog10, // base 10 log EOpRcp, // 1/x EOpSaturate, // clamp from 0 to 1 EOpSinCos, // sin and cos in out parameters EOpGenMul, // mul(x,y) on any of mat/vec/scalars EOpDst, // x = 1, y=src0.y * src1.y, z=src0.z, w=src1.w EOpInterlockedAdd, // atomic ops, but uses [optional] out arg instead of return EOpInterlockedAnd, // ... EOpInterlockedCompareExchange, // ... EOpInterlockedCompareStore, // ... EOpInterlockedExchange, // ... EOpInterlockedMax, // ... EOpInterlockedMin, // ... EOpInterlockedOr, // ... EOpInterlockedXor, // ... EOpAllMemoryBarrierWithGroupSync, // memory barriers without non-hlsl AST equivalents EOpDeviceMemoryBarrier, // ... EOpDeviceMemoryBarrierWithGroupSync, // ... EOpWorkgroupMemoryBarrier, // ... EOpWorkgroupMemoryBarrierWithGroupSync, // ... EOpEvaluateAttributeSnapped, // InterpolateAtOffset with int position on 16x16 grid EOpF32tof16, // HLSL conversion: half of a PackHalf2x16 EOpF16tof32, // HLSL conversion: half of an UnpackHalf2x16 EOpLit, // HLSL lighting coefficient vector EOpTextureBias, // HLSL texture bias: will be lowered to EOpTexture EOpAsDouble, // slightly different from EOpUint64BitsToDouble EOpD3DCOLORtoUBYTE4, // convert and swizzle 4-component color to UBYTE4 range EOpMethodSample, // Texture object methods. These are translated to existing EOpMethodSampleBias, // AST methods, and exist to represent HLSL semantics until that EOpMethodSampleCmp, // translation is performed. See HlslParseContext::decomposeSampleMethods(). EOpMethodSampleCmpLevelZero, // ... EOpMethodSampleGrad, // ... EOpMethodSampleLevel, // ... EOpMethodLoad, // ... EOpMethodGetDimensions, // ... EOpMethodGetSamplePosition, // ... EOpMethodGather, // ... EOpMethodCalculateLevelOfDetail, // ... EOpMethodCalculateLevelOfDetailUnclamped, // ... // Load already defined above for textures EOpMethodLoad2, // Structure buffer object methods. These are translated to existing EOpMethodLoad3, // AST methods, and exist to represent HLSL semantics until that EOpMethodLoad4, // translation is performed. See HlslParseContext::decomposeSampleMethods(). EOpMethodStore, // ... EOpMethodStore2, // ... EOpMethodStore3, // ... EOpMethodStore4, // ... EOpMethodIncrementCounter, // ... EOpMethodDecrementCounter, // ... // EOpMethodAppend is defined for geo shaders below EOpMethodConsume, // SM5 texture methods EOpMethodGatherRed, // These are covered under the above EOpMethodSample comment about EOpMethodGatherGreen, // translation to existing AST opcodes. They exist temporarily EOpMethodGatherBlue, // because HLSL arguments are slightly different. EOpMethodGatherAlpha, // ... EOpMethodGatherCmp, // ... EOpMethodGatherCmpRed, // ... EOpMethodGatherCmpGreen, // ... EOpMethodGatherCmpBlue, // ... EOpMethodGatherCmpAlpha, // ... // geometry methods EOpMethodAppend, // Geometry shader methods EOpMethodRestartStrip, // ... // matrix EOpMatrixSwizzle, // select multiple matrix components (non-column) // SM6 wave ops EOpWaveGetLaneCount, // Will decompose to gl_SubgroupSize. EOpWaveGetLaneIndex, // Will decompose to gl_SubgroupInvocationID. EOpWaveActiveCountBits, // Will decompose to subgroupBallotBitCount(subgroupBallot()). EOpWavePrefixCountBits, // Will decompose to subgroupBallotInclusiveBitCount(subgroupBallot()). // GL_EXT_expect_assume EOpAssumeEXT, EOpExpectEXT, // Shader Clock Ops EOpReadClockSubgroupKHR, EOpReadClockDeviceKHR, // GL_EXT_ray_tracing_position_fetch EOpRayQueryGetIntersectionTriangleVertexPositionsEXT, // Shader tile image ops EOpStencilAttachmentReadEXT, // Fragment only EOpDepthAttachmentReadEXT, // Fragment only // Image processing EOpImageSampleWeightedQCOM, EOpImageBoxFilterQCOM, EOpImageBlockMatchSADQCOM, EOpImageBlockMatchSSDQCOM, // Image processing2 EOpImageBlockMatchWindowSSDQCOM, EOpImageBlockMatchWindowSADQCOM, EOpImageBlockMatchGatherSSDQCOM, EOpImageBlockMatchGatherSADQCOM, // Cooperative Matrix Conversion EOpBitCastArrayQCOM, EOpExtractSubArrayQCOM, EOpCompositeConstructCoopMatQCOM, EOpCompositeExtractCoopMatQCOM, // GL_NV_cluster_acceleration_structure EOpRayQueryGetIntersectionClusterIdNV, EOpHitObjectGetClusterIdNV, // GL_NV_linear_swept_spheres EOpRayQueryGetIntersectionSpherePositionNV, EOpRayQueryGetIntersectionSphereRadiusNV, EOpRayQueryGetIntersectionLSSHitValueNV, EOpRayQueryGetIntersectionLSSPositionsNV, EOpRayQueryGetIntersectionLSSRadiiNV, EOpRayQueryIsSphereHitNV, EOpRayQueryIsLSSHitNV, EOpHitObjectGetSpherePositionNV, EOpHitObjectGetSphereRadiusNV, EOpHitObjectGetLSSPositionsNV, EOpHitObjectGetLSSRadiiNV, EOpHitObjectIsSphereHitNV, EOpHitObjectIsLSSHitNV, }; inline bool IsOpNumericConv(const TOperator op) { return op == EOpConvNumeric; } enum TLinkType { ELinkNone, ELinkExport, }; class TIntermTraverser; class TIntermOperator; class TIntermAggregate; class TIntermUnary; class TIntermBinary; class TIntermConstantUnion; class TIntermSelection; class TIntermSwitch; class TIntermBranch; class TIntermTyped; class TIntermMethod; class TIntermSymbol; class TIntermLoop; } // end namespace glslang // // Base class for the tree nodes // // (Put outside the glslang namespace, as it's used as part of the external interface.) // class TIntermNode { public: POOL_ALLOCATOR_NEW_DELETE(glslang::GetThreadPoolAllocator()) TIntermNode() { loc.init(); } virtual const glslang::TSourceLoc& getLoc() const { return loc; } virtual void setLoc(const glslang::TSourceLoc& l) { loc = l; } virtual void traverse(glslang::TIntermTraverser*) = 0; virtual glslang::TIntermTyped* getAsTyped() { return nullptr; } virtual glslang::TIntermOperator* getAsOperator() { return nullptr; } virtual glslang::TIntermConstantUnion* getAsConstantUnion() { return nullptr; } virtual glslang::TIntermAggregate* getAsAggregate() { return nullptr; } virtual glslang::TIntermUnary* getAsUnaryNode() { return nullptr; } virtual glslang::TIntermBinary* getAsBinaryNode() { return nullptr; } virtual glslang::TIntermSelection* getAsSelectionNode() { return nullptr; } virtual glslang::TIntermSwitch* getAsSwitchNode() { return nullptr; } virtual glslang::TIntermMethod* getAsMethodNode() { return nullptr; } virtual glslang::TIntermSymbol* getAsSymbolNode() { return nullptr; } virtual glslang::TIntermBranch* getAsBranchNode() { return nullptr; } virtual glslang::TIntermLoop* getAsLoopNode() { return nullptr; } virtual const glslang::TIntermTyped* getAsTyped() const { return nullptr; } virtual const glslang::TIntermOperator* getAsOperator() const { return nullptr; } virtual const glslang::TIntermConstantUnion* getAsConstantUnion() const { return nullptr; } virtual const glslang::TIntermAggregate* getAsAggregate() const { return nullptr; } virtual const glslang::TIntermUnary* getAsUnaryNode() const { return nullptr; } virtual const glslang::TIntermBinary* getAsBinaryNode() const { return nullptr; } virtual const glslang::TIntermSelection* getAsSelectionNode() const { return nullptr; } virtual const glslang::TIntermSwitch* getAsSwitchNode() const { return nullptr; } virtual const glslang::TIntermMethod* getAsMethodNode() const { return nullptr; } virtual const glslang::TIntermSymbol* getAsSymbolNode() const { return nullptr; } virtual const glslang::TIntermBranch* getAsBranchNode() const { return nullptr; } virtual const glslang::TIntermLoop* getAsLoopNode() const { return nullptr; } virtual ~TIntermNode() { } protected: TIntermNode(const TIntermNode&); TIntermNode& operator=(const TIntermNode&); glslang::TSourceLoc loc; }; namespace glslang { // // This is just to help yacc. // struct TIntermNodePair { TIntermNode* node1; TIntermNode* node2; }; // // Intermediate class for nodes that have a type. // class TIntermTyped : public TIntermNode { public: TIntermTyped(const TType& t) { type.shallowCopy(t); } TIntermTyped(TBasicType basicType) { TType bt(basicType); type.shallowCopy(bt); } virtual TIntermTyped* getAsTyped() { return this; } virtual const TIntermTyped* getAsTyped() const { return this; } virtual void setType(const TType& t) { type.shallowCopy(t); } virtual const TType& getType() const { return type; } virtual TType& getWritableType() { return type; } virtual TBasicType getBasicType() const { return type.getBasicType(); } virtual TQualifier& getQualifier() { return type.getQualifier(); } virtual const TQualifier& getQualifier() const { return type.getQualifier(); } virtual TArraySizes* getArraySizes() { return type.getArraySizes(); } virtual const TArraySizes* getArraySizes() const { return type.getArraySizes(); } virtual void propagatePrecision(TPrecisionQualifier); virtual int getVectorSize() const { return type.getVectorSize(); } virtual int getMatrixCols() const { return type.getMatrixCols(); } virtual int getMatrixRows() const { return type.getMatrixRows(); } virtual int getTensorRankARM() const { return type.getTensorRankARM(); } virtual bool isMatrix() const { return type.isMatrix(); } virtual bool isArray() const { return type.isArray(); } virtual bool isVector() const { return type.isVector(); } virtual bool isScalar() const { return type.isScalar(); } virtual bool isStruct() const { return type.isStruct(); } virtual bool isFloatingDomain() const { return type.isFloatingDomain(); } virtual bool isIntegerDomain() const { return type.isIntegerDomain(); } bool isAtomic() const { return type.isAtomic(); } bool isReference() const { return type.isReference(); } TString getCompleteString(bool enhanced = false) const { return type.getCompleteString(enhanced); } protected: TIntermTyped& operator=(const TIntermTyped&); TType type; }; // // Handle for, do-while, and while loops. // class TIntermLoop : public TIntermNode { public: TIntermLoop(TIntermNode* aBody, TIntermTyped* aTest, TIntermTyped* aTerminal, bool testFirst) : body(aBody), test(aTest), terminal(aTerminal), first(testFirst), unroll(false), dontUnroll(false), dependency(0), minIterations(0), maxIterations(iterationsInfinite), iterationMultiple(1), peelCount(0), partialCount(0) { } virtual TIntermLoop* getAsLoopNode() { return this; } virtual const TIntermLoop* getAsLoopNode() const { return this; } virtual void traverse(TIntermTraverser*); TIntermNode* getBody() const { return body; } TIntermTyped* getTest() const { return test; } TIntermTyped* getTerminal() const { return terminal; } bool testFirst() const { return first; } void setUnroll() { unroll = true; } void setDontUnroll() { dontUnroll = true; peelCount = 0; partialCount = 0; } bool getUnroll() const { return unroll; } bool getDontUnroll() const { return dontUnroll; } static const unsigned int dependencyInfinite = 0xFFFFFFFF; static const unsigned int iterationsInfinite = 0xFFFFFFFF; void setLoopDependency(int d) { dependency = d; } int getLoopDependency() const { return dependency; } void setMinIterations(unsigned int v) { minIterations = v; } unsigned int getMinIterations() const { return minIterations; } void setMaxIterations(unsigned int v) { maxIterations = v; } unsigned int getMaxIterations() const { return maxIterations; } void setIterationMultiple(unsigned int v) { iterationMultiple = v; } unsigned int getIterationMultiple() const { return iterationMultiple; } void setPeelCount(unsigned int v) { peelCount = v; dontUnroll = false; } unsigned int getPeelCount() const { return peelCount; } void setPartialCount(unsigned int v) { partialCount = v; dontUnroll = false; } unsigned int getPartialCount() const { return partialCount; } protected: TIntermNode* body; // code to loop over TIntermTyped* test; // exit condition associated with loop, could be 0 for 'for' loops TIntermTyped* terminal; // exists for for-loops bool first; // true for while and for, not for do-while bool unroll; // true if unroll requested bool dontUnroll; // true if request to not unroll unsigned int dependency; // loop dependency hint; 0 means not set or unknown unsigned int minIterations; // as per the SPIR-V specification unsigned int maxIterations; // as per the SPIR-V specification unsigned int iterationMultiple; // as per the SPIR-V specification unsigned int peelCount; // as per the SPIR-V specification unsigned int partialCount; // as per the SPIR-V specification }; // // Handle case, break, continue, return, and kill. // class TIntermBranch : public TIntermNode { public: TIntermBranch(TOperator op, TIntermTyped* e) : flowOp(op), expression(e) { } virtual TIntermBranch* getAsBranchNode() { return this; } virtual const TIntermBranch* getAsBranchNode() const { return this; } virtual void traverse(TIntermTraverser*); TOperator getFlowOp() const { return flowOp; } TIntermTyped* getExpression() const { return expression; } void setExpression(TIntermTyped* pExpression) { expression = pExpression; } void updatePrecision(TPrecisionQualifier parentPrecision); protected: TOperator flowOp; TIntermTyped* expression; }; // // Represent method names before seeing their calling signature // or resolving them to operations. Just an expression as the base object // and a textural name. // class TIntermMethod : public TIntermTyped { public: TIntermMethod(TIntermTyped* o, const TType& t, const TString& m) : TIntermTyped(t), object(o), method(m) { } virtual TIntermMethod* getAsMethodNode() { return this; } virtual const TIntermMethod* getAsMethodNode() const { return this; } virtual const TString& getMethodName() const { return method; } virtual TIntermTyped* getObject() const { return object; } virtual void traverse(TIntermTraverser*); void setExport() { linkType = ELinkExport; } protected: TIntermTyped* object; TString method; TLinkType linkType; }; // // Nodes that correspond to symbols or constants in the source code. // class TIntermSymbol : public TIntermTyped { public: // if symbol is initialized as symbol(sym), the memory comes from the pool allocator of sym. If sym comes from // per process threadPoolAllocator, then it causes increased memory usage per compile // it is essential to use "symbol = sym" to assign to symbol TIntermSymbol(long long i, const TString& n, EShLanguage s, const TType& t, const TString* mn = nullptr) : TIntermTyped(t), id(i), flattenSubset(-1), stage(s), constSubtree(nullptr) { name = n; if (mn) { mangledName = *mn; } else { mangledName = n; } } virtual long long getId() const { return id; } virtual void changeId(long long i) { id = i; } virtual const TString& getName() const { return name; } virtual const TString& getMangledName() const { return mangledName; } virtual void traverse(TIntermTraverser*); virtual TIntermSymbol* getAsSymbolNode() { return this; } virtual const TIntermSymbol* getAsSymbolNode() const { return this; } void setConstArray(const TConstUnionArray& c) { constArray = c; } const TConstUnionArray& getConstArray() const { return constArray; } void setConstSubtree(TIntermTyped* subtree) { constSubtree = subtree; } TIntermTyped* getConstSubtree() const { return constSubtree; } void setFlattenSubset(int subset) { flattenSubset = subset; } virtual const TString& getAccessName() const; int getFlattenSubset() const { return flattenSubset; } // -1 means full object // This is meant for cases where a node has already been constructed, and // later on, it becomes necessary to switch to a different symbol. virtual void switchId(long long newId) { id = newId; } EShLanguage getStage() const { return stage; } protected: long long id; // the unique id of the symbol this node represents int flattenSubset; // how deeply the flattened object rooted at id has been dereferenced TString name; // the name of the symbol this node represents EShLanguage stage; TString mangledName; // mangled function name, or a copy of name if not a function TConstUnionArray constArray; // if the symbol is a front-end compile-time constant, this is its value TIntermTyped* constSubtree; }; class TIntermConstantUnion : public TIntermTyped { public: TIntermConstantUnion(const TConstUnionArray& ua, const TType& t) : TIntermTyped(t), constArray(ua), literal(false) { } const TConstUnionArray& getConstArray() const { return constArray; } virtual TIntermConstantUnion* getAsConstantUnion() { return this; } virtual const TIntermConstantUnion* getAsConstantUnion() const { return this; } virtual void traverse(TIntermTraverser*); virtual TIntermTyped* fold(TOperator, const TIntermTyped*) const; virtual TIntermTyped* fold(TOperator, const TType&) const; void setLiteral() { literal = true; } void setExpression() { literal = false; } bool isLiteral() const { return literal; } protected: TIntermConstantUnion& operator=(const TIntermConstantUnion&); const TConstUnionArray constArray; bool literal; // true if node represents a literal in the source code }; // Represent the independent aspects of a texturing TOperator struct TCrackedTextureOp { bool query; bool proj; bool lod; bool fetch; bool offset; bool offsets; bool gather; bool grad; bool subpass; bool lodClamp; bool fragMask; bool attachmentEXT; }; // // Intermediate class for node types that hold operators. // class TIntermOperator : public TIntermTyped { public: virtual TIntermOperator* getAsOperator() { return this; } virtual const TIntermOperator* getAsOperator() const { return this; } TOperator getOp() const { return op; } void setOp(TOperator newOp) { op = newOp; } bool modifiesState() const; bool isConstructor() const; bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; } bool isSampling() const { return op > EOpSamplingGuardBegin && op < EOpSamplingGuardEnd; } bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; } bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; } bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; } bool isSparseImage() const { return op == EOpSparseImageLoad; } bool isSubgroup() const { return op > EOpSubgroupGuardStart && op < EOpSubgroupGuardStop; } void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; } TPrecisionQualifier getOperationPrecision() const { return operationPrecision != EpqNone ? operationPrecision : type.getQualifier().precision; } TString getCompleteString() const { TString cs = type.getCompleteString(); if (getOperationPrecision() != type.getQualifier().precision) { cs += ", operation at "; cs += GetPrecisionQualifierString(getOperationPrecision()); } return cs; } // Crack the op into the individual dimensions of texturing operation. void crackTexture(TSampler sampler, TCrackedTextureOp& cracked) const { cracked.query = false; cracked.proj = false; cracked.lod = false; cracked.fetch = false; cracked.offset = false; cracked.offsets = false; cracked.gather = false; cracked.grad = false; cracked.subpass = false; cracked.attachmentEXT = false; cracked.lodClamp = false; cracked.fragMask = false; switch (op) { case EOpImageQuerySize: case EOpImageQuerySamples: case EOpTextureQuerySize: case EOpTextureQueryLod: case EOpTextureQueryLevels: case EOpTextureQuerySamples: case EOpSparseTexelsResident: cracked.query = true; break; case EOpTexture: case EOpSparseTexture: break; case EOpTextureProj: cracked.proj = true; break; case EOpTextureLod: case EOpSparseTextureLod: cracked.lod = true; break; case EOpTextureOffset: case EOpSparseTextureOffset: cracked.offset = true; break; case EOpTextureFetch: case EOpSparseTextureFetch: cracked.fetch = true; if (sampler.is1D() || (sampler.dim == Esd2D && ! sampler.isMultiSample()) || sampler.dim == Esd3D) cracked.lod = true; break; case EOpTextureFetchOffset: case EOpSparseTextureFetchOffset: cracked.fetch = true; cracked.offset = true; if (sampler.is1D() || (sampler.dim == Esd2D && ! sampler.isMultiSample()) || sampler.dim == Esd3D) cracked.lod = true; break; case EOpTextureProjOffset: cracked.offset = true; cracked.proj = true; break; case EOpTextureLodOffset: case EOpSparseTextureLodOffset: cracked.offset = true; cracked.lod = true; break; case EOpTextureProjLod: cracked.lod = true; cracked.proj = true; break; case EOpTextureProjLodOffset: cracked.offset = true; cracked.lod = true; cracked.proj = true; break; case EOpTextureGrad: case EOpSparseTextureGrad: cracked.grad = true; break; case EOpTextureGradOffset: case EOpSparseTextureGradOffset: cracked.grad = true; cracked.offset = true; break; case EOpTextureProjGrad: cracked.grad = true; cracked.proj = true; break; case EOpTextureProjGradOffset: cracked.grad = true; cracked.offset = true; cracked.proj = true; break; case EOpTextureClamp: case EOpSparseTextureClamp: cracked.lodClamp = true; break; case EOpTextureOffsetClamp: case EOpSparseTextureOffsetClamp: cracked.offset = true; cracked.lodClamp = true; break; case EOpTextureGradClamp: case EOpSparseTextureGradClamp: cracked.grad = true; cracked.lodClamp = true; break; case EOpTextureGradOffsetClamp: case EOpSparseTextureGradOffsetClamp: cracked.grad = true; cracked.offset = true; cracked.lodClamp = true; break; case EOpTextureGather: case EOpSparseTextureGather: cracked.gather = true; break; case EOpTextureGatherOffset: case EOpSparseTextureGatherOffset: cracked.gather = true; cracked.offset = true; break; case EOpTextureGatherOffsets: case EOpSparseTextureGatherOffsets: cracked.gather = true; cracked.offsets = true; break; case EOpTextureGatherLod: case EOpSparseTextureGatherLod: cracked.gather = true; cracked.lod = true; break; case EOpTextureGatherLodOffset: case EOpSparseTextureGatherLodOffset: cracked.gather = true; cracked.offset = true; cracked.lod = true; break; case EOpTextureGatherLodOffsets: case EOpSparseTextureGatherLodOffsets: cracked.gather = true; cracked.offsets = true; cracked.lod = true; break; case EOpImageLoadLod: case EOpImageStoreLod: case EOpSparseImageLoadLod: cracked.lod = true; break; case EOpFragmentMaskFetch: cracked.subpass = sampler.dim == EsdSubpass; cracked.fragMask = true; break; case EOpFragmentFetch: cracked.subpass = sampler.dim == EsdSubpass; cracked.fragMask = true; break; case EOpImageSampleFootprintNV: break; case EOpImageSampleFootprintClampNV: cracked.lodClamp = true; break; case EOpImageSampleFootprintLodNV: cracked.lod = true; break; case EOpImageSampleFootprintGradNV: cracked.grad = true; break; case EOpImageSampleFootprintGradClampNV: cracked.lodClamp = true; cracked.grad = true; break; case EOpSubpassLoad: case EOpSubpassLoadMS: cracked.subpass = true; break; case EOpColorAttachmentReadEXT: cracked.attachmentEXT = true; break; default: break; } } protected: TIntermOperator(TOperator o) : TIntermTyped(EbtFloat), op(o), operationPrecision(EpqNone) {} TIntermOperator(TOperator o, TType& t) : TIntermTyped(t), op(o), operationPrecision(EpqNone) {} TOperator op; // The result precision is in the inherited TType, and is usually meant to be both // the operation precision and the result precision. However, some more complex things, // like built-in function calls, distinguish between the two, in which case non-EqpNone // 'operationPrecision' overrides the result precision as far as operation precision // is concerned. TPrecisionQualifier operationPrecision; }; // // Nodes for all the basic binary math operators. // class TIntermBinary : public TIntermOperator { public: TIntermBinary(TOperator o) : TIntermOperator(o) {} virtual void traverse(TIntermTraverser*); virtual void setLeft(TIntermTyped* n) { left = n; } virtual void setRight(TIntermTyped* n) { right = n; } virtual TIntermTyped* getLeft() const { return left; } virtual TIntermTyped* getRight() const { return right; } virtual TIntermBinary* getAsBinaryNode() { return this; } virtual const TIntermBinary* getAsBinaryNode() const { return this; } virtual void updatePrecision(); protected: TIntermTyped* left; TIntermTyped* right; }; // // Nodes for unary math operators. // class TIntermUnary : public TIntermOperator { public: TIntermUnary(TOperator o, TType& t) : TIntermOperator(o, t), operand(nullptr) {} TIntermUnary(TOperator o) : TIntermOperator(o), operand(nullptr) {} virtual void traverse(TIntermTraverser*); virtual void setOperand(TIntermTyped* o) { operand = o; } virtual TIntermTyped* getOperand() { return operand; } virtual const TIntermTyped* getOperand() const { return operand; } virtual TIntermUnary* getAsUnaryNode() { return this; } virtual const TIntermUnary* getAsUnaryNode() const { return this; } virtual void updatePrecision(); void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; } const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } protected: TIntermTyped* operand; TSpirvInstruction spirvInst; }; typedef TVector TIntermSequence; typedef TVector TQualifierList; // // Nodes that operate on an arbitrary sized set of children. // class TIntermAggregate : public TIntermOperator { public: TIntermAggregate() : TIntermOperator(EOpNull), userDefined(false), pragmaTable(nullptr) { endLoc.init(); } TIntermAggregate(TOperator o) : TIntermOperator(o), pragmaTable(nullptr) { endLoc.init(); } ~TIntermAggregate() { delete pragmaTable; } virtual TIntermAggregate* getAsAggregate() { return this; } virtual const TIntermAggregate* getAsAggregate() const { return this; } virtual void updatePrecision(); virtual void setOperator(TOperator o) { op = o; } virtual TIntermSequence& getSequence() { return sequence; } virtual const TIntermSequence& getSequence() const { return sequence; } virtual void setName(const TString& n) { name = n; } virtual const TString& getName() const { return name; } virtual void traverse(TIntermTraverser*); virtual void setUserDefined() { userDefined = true; } virtual bool isUserDefined() { return userDefined; } virtual TQualifierList& getQualifierList() { return qualifier; } virtual const TQualifierList& getQualifierList() const { return qualifier; } void setOptimize(bool o) { optimize = o; } void setDebug(bool d) { debug = d; } bool getOptimize() const { return optimize; } bool getDebug() const { return debug; } void setPragmaTable(const TPragmaTable& pTable); const TPragmaTable& getPragmaTable() const { return *pragmaTable; } void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; } const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } void setEndLoc(TSourceLoc loc) { endLoc = loc; } TSourceLoc getEndLoc() const { return endLoc; } void setLinkType(TLinkType l) { linkType = l; } TLinkType getLinkType() const { return linkType; } protected: TIntermAggregate(const TIntermAggregate&); // disallow copy constructor TIntermAggregate& operator=(const TIntermAggregate&); // disallow assignment operator TIntermSequence sequence; TQualifierList qualifier; TString name; bool userDefined; // used for user defined function names bool optimize; bool debug; TPragmaTable* pragmaTable; TSpirvInstruction spirvInst; TLinkType linkType = ELinkNone; // Marking the end source location of the aggregate. // This is currently only set for a compound statement or a function body, pointing to '}'. TSourceLoc endLoc; }; // // For if tests. // class TIntermSelection : public TIntermTyped { public: TIntermSelection(TIntermTyped* cond, TIntermNode* trueB, TIntermNode* falseB) : TIntermTyped(EbtVoid), condition(cond), trueBlock(trueB), falseBlock(falseB), shortCircuit(true), flatten(false), dontFlatten(false) {} TIntermSelection(TIntermTyped* cond, TIntermNode* trueB, TIntermNode* falseB, const TType& type) : TIntermTyped(type), condition(cond), trueBlock(trueB), falseBlock(falseB), shortCircuit(true), flatten(false), dontFlatten(false) {} virtual void traverse(TIntermTraverser*); virtual TIntermTyped* getCondition() const { return condition; } virtual void setCondition(TIntermTyped* c) { condition = c; } virtual TIntermNode* getTrueBlock() const { return trueBlock; } virtual void setTrueBlock(TIntermTyped* tb) { trueBlock = tb; } virtual TIntermNode* getFalseBlock() const { return falseBlock; } virtual void setFalseBlock(TIntermTyped* fb) { falseBlock = fb; } virtual TIntermSelection* getAsSelectionNode() { return this; } virtual const TIntermSelection* getAsSelectionNode() const { return this; } void setNoShortCircuit() { shortCircuit = false; } bool getShortCircuit() const { return shortCircuit; } void setFlatten() { flatten = true; } void setDontFlatten() { dontFlatten = true; } bool getFlatten() const { return flatten; } bool getDontFlatten() const { return dontFlatten; } protected: TIntermTyped* condition; TIntermNode* trueBlock; TIntermNode* falseBlock; bool shortCircuit; // normally all if-then-else and all GLSL ?: short-circuit, but HLSL ?: does not bool flatten; // true if flatten requested bool dontFlatten; // true if requested to not flatten }; // // For switch statements. Designed use is that a switch will have sequence of nodes // that are either case/default nodes or a *single* node that represents all the code // in between (if any) consecutive case/defaults. So, a traversal need only deal with // 0 or 1 nodes per case/default statement. // class TIntermSwitch : public TIntermNode { public: TIntermSwitch(TIntermTyped* cond, TIntermAggregate* b) : condition(cond), body(b), flatten(false), dontFlatten(false) {} virtual void traverse(TIntermTraverser*); virtual TIntermNode* getCondition() const { return condition; } virtual TIntermAggregate* getBody() const { return body; } virtual TIntermSwitch* getAsSwitchNode() { return this; } virtual const TIntermSwitch* getAsSwitchNode() const { return this; } void setFlatten() { flatten = true; } void setDontFlatten() { dontFlatten = true; } bool getFlatten() const { return flatten; } bool getDontFlatten() const { return dontFlatten; } protected: TIntermTyped* condition; TIntermAggregate* body; bool flatten; // true if flatten requested bool dontFlatten; // true if requested to not flatten }; enum TVisit { EvPreVisit, EvInVisit, EvPostVisit }; // // For traversing the tree. User should derive from this, // put their traversal specific data in it, and then pass // it to a Traverse method. // // When using this, just fill in the methods for nodes you want visited. // Return false from a pre-visit to skip visiting that node's subtree. // // Explicitly set postVisit to true if you want post visiting, otherwise, // filled in methods will only be called at pre-visit time (before processing // the subtree). Similarly for inVisit for in-order visiting of nodes with // multiple children. // // If you only want post-visits, explicitly turn off preVisit (and inVisit) // and turn on postVisit. // // In general, for the visit*() methods, return true from interior nodes // to have the traversal continue on to children. // // If you process children yourself, or don't want them processed, return false. // class TIntermTraverser { public: POOL_ALLOCATOR_NEW_DELETE(glslang::GetThreadPoolAllocator()) TIntermTraverser(bool preVisit = true, bool inVisit = false, bool postVisit = false, bool rightToLeft = false) : preVisit(preVisit), inVisit(inVisit), postVisit(postVisit), rightToLeft(rightToLeft), depth(0), maxDepth(0) { } virtual ~TIntermTraverser() { } virtual void visitSymbol(TIntermSymbol*) { } virtual void visitConstantUnion(TIntermConstantUnion*) { } virtual bool visitBinary(TVisit, TIntermBinary*) { return true; } virtual bool visitUnary(TVisit, TIntermUnary*) { return true; } virtual bool visitSelection(TVisit, TIntermSelection*) { return true; } virtual bool visitAggregate(TVisit, TIntermAggregate*) { return true; } virtual bool visitLoop(TVisit, TIntermLoop*) { return true; } virtual bool visitBranch(TVisit, TIntermBranch*) { return true; } virtual bool visitSwitch(TVisit, TIntermSwitch*) { return true; } int getMaxDepth() const { return maxDepth; } void incrementDepth(TIntermNode *current) { depth++; maxDepth = (std::max)(maxDepth, depth); path.push_back(current); } void decrementDepth() { depth--; path.pop_back(); } TIntermNode *getParentNode() { return path.size() == 0 ? nullptr : path.back(); } const bool preVisit; const bool inVisit; const bool postVisit; const bool rightToLeft; protected: TIntermTraverser& operator=(TIntermTraverser&); int depth; int maxDepth; // All the nodes from root to the current node's parent during traversing. TVector path; }; // KHR_vulkan_glsl says "Two arrays sized with specialization constants are the same type only if // sized with the same symbol, involving no operations" inline bool SameSpecializationConstants(TIntermTyped* node1, TIntermTyped* node2) { return node1->getAsSymbolNode() && node2->getAsSymbolNode() && node1->getAsSymbolNode()->getId() == node2->getAsSymbolNode()->getId(); } } // end namespace glslang #endif // __INTERMEDIATE_H glslang-16.0.0/glslang/Include/visibility.h000066400000000000000000000044511506534232700206120ustar00rootroot00000000000000// // Copyright (C) 2023 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifdef GLSLANG_IS_SHARED_LIBRARY #ifdef _WIN32 #ifdef GLSLANG_EXPORTING #define GLSLANG_EXPORT __declspec(dllexport) #else #define GLSLANG_EXPORT __declspec(dllimport) #endif #elif __GNUC__ >= 4 #define GLSLANG_EXPORT __attribute__((visibility("default"))) #endif #endif // GLSLANG_IS_SHARED_LIBRARY #ifndef GLSLANG_EXPORT #define GLSLANG_EXPORT #endif // Symbols marked with this macro are only meant for public use by the test suite // and do not appear in publicly installed headers. They are not considered to be // part of the glslang library ABI. #ifdef GLSLANG_TEST_BUILD #define GLSLANG_EXPORT_FOR_TESTS GLSLANG_EXPORT #else #define GLSLANG_EXPORT_FOR_TESTS #endif glslang-16.0.0/glslang/MachineIndependent/000077500000000000000000000000001506534232700204055ustar00rootroot00000000000000glslang-16.0.0/glslang/MachineIndependent/Constant.cpp000066400000000000000000001465711506534232700227200ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2018-2020 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "localintermediate.h" #include #include #include #include namespace { using namespace glslang; const double pi = 3.1415926535897932384626433832795; } // end anonymous namespace namespace glslang { // // The fold functions see if an operation on a constant can be done in place, // without generating run-time code. // // Returns the node to keep using, which may or may not be the node passed in. // // Note: As of version 1.2, all constant operations must be folded. It is // not opportunistic, but rather a semantic requirement. // // // Do folding between a pair of nodes. // 'this' is the left-hand operand and 'rightConstantNode' is the right-hand operand. // // Returns a new node representing the result. // TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* rightConstantNode) const { // For most cases, the return type matches the argument type, so set that // up and just code to exceptions below. TType returnType; returnType.shallowCopy(getType()); // // A pair of nodes is to be folded together // const TIntermConstantUnion *rightNode = rightConstantNode->getAsConstantUnion(); TConstUnionArray leftUnionArray = getConstArray(); TConstUnionArray rightUnionArray = rightNode->getConstArray(); // Figure out the size of the result int newComps; int constComps; switch(op) { case EOpMatrixTimesMatrix: newComps = rightNode->getMatrixCols() * getMatrixRows(); break; case EOpMatrixTimesVector: newComps = getMatrixRows(); break; case EOpVectorTimesMatrix: newComps = rightNode->getMatrixCols(); break; default: newComps = getType().computeNumComponents(); constComps = rightConstantNode->getType().computeNumComponents(); if (constComps == 1 && newComps > 1) { // for a case like vec4 f = vec4(2,3,4,5) + 1.2; TConstUnionArray smearedArray(newComps, rightNode->getConstArray()[0]); rightUnionArray = smearedArray; } else if (constComps > 1 && newComps == 1) { // for a case like vec4 f = 1.2 + vec4(2,3,4,5); newComps = constComps; rightUnionArray = rightNode->getConstArray(); TConstUnionArray smearedArray(newComps, getConstArray()[0]); leftUnionArray = smearedArray; returnType.shallowCopy(rightNode->getType()); } break; } TConstUnionArray newConstArray(newComps); TType constBool(EbtBool, EvqConst); switch(op) { case EOpAdd: for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] + rightUnionArray[i]; break; case EOpSub: for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] - rightUnionArray[i]; break; case EOpMul: case EOpVectorTimesScalar: case EOpMatrixTimesScalar: for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] * rightUnionArray[i]; break; case EOpMatrixTimesMatrix: for (int row = 0; row < getMatrixRows(); row++) { for (int column = 0; column < rightNode->getMatrixCols(); column++) { double sum = 0.0f; for (int i = 0; i < rightNode->getMatrixRows(); i++) sum += leftUnionArray[i * getMatrixRows() + row].getDConst() * rightUnionArray[column * rightNode->getMatrixRows() + i].getDConst(); newConstArray[column * getMatrixRows() + row].setDConst(sum); } } returnType.shallowCopy(TType(getType().getBasicType(), EvqConst, 0, rightNode->getMatrixCols(), getMatrixRows())); break; case EOpDiv: for (int i = 0; i < newComps; i++) { switch (getType().getBasicType()) { case EbtDouble: case EbtFloat: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: if (rightUnionArray[i].getDConst() != 0.0) newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst()); else if (leftUnionArray[i].getDConst() > 0.0) newConstArray[i].setDConst((double)INFINITY); else if (leftUnionArray[i].getDConst() < 0.0) newConstArray[i].setDConst(-(double)INFINITY); else newConstArray[i].setDConst((double)NAN); break; case EbtInt: if (rightUnionArray[i] == 0) newConstArray[i].setIConst(0x7FFFFFFF); else if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == (int)-0x80000000ll) newConstArray[i].setIConst((int)-0x80000000ll); else newConstArray[i].setIConst(leftUnionArray[i].getIConst() / rightUnionArray[i].getIConst()); break; case EbtUint: if (rightUnionArray[i] == 0u) newConstArray[i].setUConst(0xFFFFFFFFu); else newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst()); break; case EbtInt8: if (rightUnionArray[i] == (signed char)0) newConstArray[i].setI8Const((signed char)0x7F); else if (rightUnionArray[i].getI8Const() == (signed char)-1 && leftUnionArray[i].getI8Const() == (signed char)-0x80) newConstArray[i].setI8Const((signed char)-0x80); else newConstArray[i].setI8Const(leftUnionArray[i].getI8Const() / rightUnionArray[i].getI8Const()); break; case EbtUint8: if (rightUnionArray[i] == (unsigned char)0u) newConstArray[i].setU8Const((unsigned char)0xFFu); else newConstArray[i].setU8Const(leftUnionArray[i].getU8Const() / rightUnionArray[i].getU8Const()); break; case EbtInt16: if (rightUnionArray[i] == (signed short)0) newConstArray[i].setI16Const((signed short)0x7FFF); else if (rightUnionArray[i].getI16Const() == (signed short)-1 && leftUnionArray[i].getI16Const() == (signed short)-0x8000) newConstArray[i].setI16Const((signed short)-0x8000); else newConstArray[i].setI16Const(leftUnionArray[i].getI16Const() / rightUnionArray[i].getI16Const()); break; case EbtUint16: if (rightUnionArray[i] == (unsigned short)0u) newConstArray[i].setU16Const((unsigned short)0xFFFFu); else newConstArray[i].setU16Const(leftUnionArray[i].getU16Const() / rightUnionArray[i].getU16Const()); break; case EbtInt64: if (rightUnionArray[i] == 0ll) newConstArray[i].setI64Const(LLONG_MAX); else if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == LLONG_MIN) newConstArray[i].setI64Const(LLONG_MIN); else newConstArray[i].setI64Const(leftUnionArray[i].getI64Const() / rightUnionArray[i].getI64Const()); break; case EbtUint64: if (rightUnionArray[i] == 0ull) newConstArray[i].setU64Const(0xFFFFFFFFFFFFFFFFull); else newConstArray[i].setU64Const(leftUnionArray[i].getU64Const() / rightUnionArray[i].getU64Const()); break; default: return nullptr; } } break; case EOpMatrixTimesVector: for (int i = 0; i < getMatrixRows(); i++) { double sum = 0.0f; for (int j = 0; j < rightNode->getVectorSize(); j++) { sum += leftUnionArray[j*getMatrixRows() + i].getDConst() * rightUnionArray[j].getDConst(); } newConstArray[i].setDConst(sum); } returnType.shallowCopy(TType(getBasicType(), EvqConst, getMatrixRows())); break; case EOpVectorTimesMatrix: for (int i = 0; i < rightNode->getMatrixCols(); i++) { double sum = 0.0f; for (int j = 0; j < getVectorSize(); j++) sum += leftUnionArray[j].getDConst() * rightUnionArray[i*rightNode->getMatrixRows() + j].getDConst(); newConstArray[i].setDConst(sum); } returnType.shallowCopy(TType(getBasicType(), EvqConst, rightNode->getMatrixCols())); break; case EOpMod: for (int i = 0; i < newComps; i++) { if (rightUnionArray[i] == 0) newConstArray[i] = leftUnionArray[i]; else { switch (getType().getBasicType()) { case EbtInt: if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == INT_MIN) { newConstArray[i].setIConst(0); break; } else goto modulo_default; case EbtInt64: if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == LLONG_MIN) { newConstArray[i].setI64Const(0); break; } else goto modulo_default; case EbtInt16: if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == SHRT_MIN) { newConstArray[i].setIConst(0); break; } else goto modulo_default; default: modulo_default: newConstArray[i] = leftUnionArray[i] % rightUnionArray[i]; } } } break; case EOpRightShift: for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] >> rightUnionArray[i]; break; case EOpLeftShift: for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] << rightUnionArray[i]; break; case EOpAnd: for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] & rightUnionArray[i]; break; case EOpInclusiveOr: for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] | rightUnionArray[i]; break; case EOpExclusiveOr: for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] ^ rightUnionArray[i]; break; case EOpLogicalAnd: // this code is written for possible future use, will not get executed currently for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] && rightUnionArray[i]; break; case EOpLogicalOr: // this code is written for possible future use, will not get executed currently for (int i = 0; i < newComps; i++) newConstArray[i] = leftUnionArray[i] || rightUnionArray[i]; break; case EOpLogicalXor: for (int i = 0; i < newComps; i++) { switch (getType().getBasicType()) { case EbtBool: newConstArray[i].setBConst((leftUnionArray[i] == rightUnionArray[i]) ? false : true); break; default: assert(false && "Default missing"); } } break; case EOpLessThan: newConstArray[0].setBConst(leftUnionArray[0] < rightUnionArray[0]); returnType.shallowCopy(constBool); break; case EOpGreaterThan: newConstArray[0].setBConst(leftUnionArray[0] > rightUnionArray[0]); returnType.shallowCopy(constBool); break; case EOpLessThanEqual: newConstArray[0].setBConst(! (leftUnionArray[0] > rightUnionArray[0])); returnType.shallowCopy(constBool); break; case EOpGreaterThanEqual: newConstArray[0].setBConst(! (leftUnionArray[0] < rightUnionArray[0])); returnType.shallowCopy(constBool); break; case EOpEqual: newConstArray[0].setBConst(rightNode->getConstArray() == leftUnionArray); returnType.shallowCopy(constBool); break; case EOpNotEqual: newConstArray[0].setBConst(rightNode->getConstArray() != leftUnionArray); returnType.shallowCopy(constBool); break; default: return nullptr; } TIntermConstantUnion *newNode = new TIntermConstantUnion(newConstArray, returnType); newNode->setLoc(getLoc()); return newNode; } // // Do single unary node folding // // Returns a new node representing the result. // TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) const { // First, size the result, which is mostly the same as the argument's size, // but not always, and classify what is componentwise. // Also, eliminate cases that can't be compile-time constant. int resultSize; bool componentWise = true; int objectSize = getType().computeNumComponents(); switch (op) { case EOpDeterminant: case EOpAny: case EOpAll: case EOpLength: componentWise = false; resultSize = 1; break; case EOpEmitStreamVertex: case EOpEndStreamPrimitive: // These don't fold return nullptr; case EOpPackSnorm2x16: case EOpPackUnorm2x16: case EOpPackHalf2x16: componentWise = false; resultSize = 1; break; case EOpUnpackSnorm2x16: case EOpUnpackUnorm2x16: case EOpUnpackHalf2x16: componentWise = false; resultSize = 2; break; case EOpPack16: case EOpPack32: case EOpPack64: case EOpUnpack32: case EOpUnpack16: case EOpUnpack8: case EOpNormalize: componentWise = false; resultSize = objectSize; break; default: resultSize = objectSize; break; } // Set up for processing TConstUnionArray newConstArray(resultSize); const TConstUnionArray& unionArray = getConstArray(); // Process non-component-wise operations switch (op) { case EOpLength: case EOpNormalize: { double sum = 0; for (int i = 0; i < objectSize; i++) sum += unionArray[i].getDConst() * unionArray[i].getDConst(); double length = sqrt(sum); if (op == EOpLength) newConstArray[0].setDConst(length); else { for (int i = 0; i < objectSize; i++) newConstArray[i].setDConst(unionArray[i].getDConst() / length); } break; } case EOpAny: { bool result = false; for (int i = 0; i < objectSize; i++) { if (unionArray[i].getBConst()) result = true; } newConstArray[0].setBConst(result); break; } case EOpAll: { bool result = true; for (int i = 0; i < objectSize; i++) { if (! unionArray[i].getBConst()) result = false; } newConstArray[0].setBConst(result); break; } case EOpPackSnorm2x16: case EOpPackUnorm2x16: case EOpPackHalf2x16: case EOpPack16: case EOpPack32: case EOpPack64: case EOpUnpack32: case EOpUnpack16: case EOpUnpack8: case EOpUnpackSnorm2x16: case EOpUnpackUnorm2x16: case EOpUnpackHalf2x16: case EOpDeterminant: case EOpMatrixInverse: case EOpTranspose: return nullptr; default: assert(componentWise); break; } // Turn off the componentwise loop if (! componentWise) objectSize = 0; // Process component-wise operations for (int i = 0; i < objectSize; i++) { // First read the value and convert to i64/u64/f64/bool, then convert // to the destination type (still 64b), then convert down to the // destination size. if (IsOpNumericConv(op)) { enum ConvType { CONV_FLOAT, CONV_INT, CONV_UINT, CONV_BOOL }; ConvType srcType = CONV_UINT, dstType = CONV_UINT; double valf = 0.0; uint64_t valu = 0; int64_t vali = 0; bool valb = false; switch (getType().getBasicType()) { case EbtDouble: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtFloat: valf = unionArray[i].getDConst(); srcType = CONV_FLOAT; break; case EbtInt8: vali = unionArray[i].getI8Const(); srcType = CONV_INT; break; case EbtInt16: vali = unionArray[i].getI16Const(); srcType = CONV_INT; break; case EbtInt: vali = unionArray[i].getIConst(); srcType = CONV_INT; break; case EbtInt64: vali = unionArray[i].getI64Const(); srcType = CONV_INT; break; case EbtUint8: valu = unionArray[i].getU8Const(); srcType = CONV_UINT; break; case EbtUint16: valu = unionArray[i].getU16Const(); srcType = CONV_UINT; break; case EbtUint: valu = unionArray[i].getUConst(); srcType = CONV_UINT; break; case EbtUint64: valu = unionArray[i].getU64Const(); srcType = CONV_UINT; break; case EbtBool: valb = unionArray[i].getBConst(); srcType = CONV_BOOL; break; default: assert(0); break; } switch (returnType.getBasicType()) { case EbtDouble: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtFloat: dstType = CONV_FLOAT; break; case EbtInt8: case EbtInt16: case EbtInt: case EbtInt64: dstType = CONV_INT; break; case EbtUint8: case EbtUint16: case EbtUint: case EbtUint64: dstType = CONV_UINT; break; case EbtBool: dstType = CONV_BOOL; break; default: assert(0); break; } if (dstType == CONV_BOOL) { switch (srcType) { case CONV_FLOAT: valb = (valf != 0.0); break; case CONV_INT: valb = (vali != 0.0); break; case CONV_UINT: valb = (valu != 0.0); break; default: break; } } else if (dstType == CONV_FLOAT) { switch (srcType) { case CONV_BOOL: valf = (double)valb; break; case CONV_INT: valf = (double)vali; break; case CONV_UINT: valf = (double)valu; break; default: break; } } else if (dstType == CONV_INT) { switch (srcType) { case CONV_BOOL: vali = (int64_t)valb; break; case CONV_FLOAT: vali = (int64_t)valf; break; case CONV_UINT: vali = (int64_t)valu; break; default: break; } } else if (dstType == CONV_UINT) { switch (srcType) { case CONV_BOOL: valu = (uint64_t)valb; break; case CONV_FLOAT: valu = (uint64_t)valf; break; case CONV_INT: valu = (uint64_t)vali; break; default: break; } } switch (returnType.getBasicType()) { case EbtDouble: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtFloat: newConstArray[i].setDConst(valf); break; case EbtInt8: newConstArray[i].setI8Const(static_cast(vali)); break; case EbtInt16: newConstArray[i].setI16Const(static_cast(vali)); break; case EbtInt: newConstArray[i].setIConst(static_cast(vali)); break; case EbtInt64: newConstArray[i].setI64Const(vali); break; case EbtUint8: newConstArray[i].setU8Const(static_cast(valu)); break; case EbtUint16: newConstArray[i].setU16Const(static_cast(valu)); break; case EbtUint: newConstArray[i].setUConst(static_cast(valu)); break; case EbtUint64: newConstArray[i].setU64Const(valu); break; case EbtBool: newConstArray[i].setBConst(valb); break; default: assert(0); break; } continue; } switch (op) { case EOpNegative: switch (getType().getBasicType()) { case EbtDouble: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break; // Note: avoid UBSAN error regarding negating 0x80000000 case EbtInt: newConstArray[i].setIConst( static_cast(unionArray[i].getIConst()) == 0x80000000 ? -0x7FFFFFFF - 1 : -unionArray[i].getIConst()); break; case EbtUint: newConstArray[i].setUConst(static_cast(-static_cast(unionArray[i].getUConst()))); break; case EbtInt8: newConstArray[i].setI8Const(-unionArray[i].getI8Const()); break; case EbtUint8: newConstArray[i].setU8Const(static_cast(-static_cast(unionArray[i].getU8Const()))); break; case EbtInt16: newConstArray[i].setI16Const(-unionArray[i].getI16Const()); break; case EbtUint16:newConstArray[i].setU16Const(static_cast(-static_cast(unionArray[i].getU16Const()))); break; case EbtInt64: { int64_t i64val = unionArray[i].getI64Const(); newConstArray[i].setI64Const(i64val == INT64_MIN ? INT64_MIN : -i64val); break; } case EbtUint64: newConstArray[i].setU64Const(static_cast(-static_cast(unionArray[i].getU64Const()))); break; default: return nullptr; } break; case EOpLogicalNot: case EOpVectorLogicalNot: switch (getType().getBasicType()) { case EbtBool: newConstArray[i].setBConst(!unionArray[i].getBConst()); break; default: return nullptr; } break; case EOpBitwiseNot: newConstArray[i] = ~unionArray[i]; break; case EOpRadians: newConstArray[i].setDConst(unionArray[i].getDConst() * pi / 180.0); break; case EOpDegrees: newConstArray[i].setDConst(unionArray[i].getDConst() * 180.0 / pi); break; case EOpSin: newConstArray[i].setDConst(sin(unionArray[i].getDConst())); break; case EOpCos: newConstArray[i].setDConst(cos(unionArray[i].getDConst())); break; case EOpTan: newConstArray[i].setDConst(tan(unionArray[i].getDConst())); break; case EOpAsin: newConstArray[i].setDConst(asin(unionArray[i].getDConst())); break; case EOpAcos: newConstArray[i].setDConst(acos(unionArray[i].getDConst())); break; case EOpAtan: newConstArray[i].setDConst(atan(unionArray[i].getDConst())); break; case EOpDPdx: case EOpDPdy: case EOpFwidth: case EOpDPdxFine: case EOpDPdyFine: case EOpFwidthFine: case EOpDPdxCoarse: case EOpDPdyCoarse: case EOpFwidthCoarse: // The derivatives are all mandated to create a constant 0. newConstArray[i].setDConst(0.0); break; case EOpExp: newConstArray[i].setDConst(exp(unionArray[i].getDConst())); break; case EOpLog: newConstArray[i].setDConst(log(unionArray[i].getDConst())); break; case EOpExp2: newConstArray[i].setDConst(exp2(unionArray[i].getDConst())); break; case EOpLog2: newConstArray[i].setDConst(log2(unionArray[i].getDConst())); break; case EOpSqrt: newConstArray[i].setDConst(sqrt(unionArray[i].getDConst())); break; case EOpInverseSqrt: newConstArray[i].setDConst(1.0 / sqrt(unionArray[i].getDConst())); break; case EOpAbs: if (unionArray[i].getType() == EbtDouble) newConstArray[i].setDConst(fabs(unionArray[i].getDConst())); else if (unionArray[i].getType() == EbtInt) newConstArray[i].setIConst(abs(unionArray[i].getIConst())); else newConstArray[i] = unionArray[i]; break; case EOpSign: #define SIGN(X) (X == 0 ? 0 : (X < 0 ? -1 : 1)) if (unionArray[i].getType() == EbtDouble) newConstArray[i].setDConst(SIGN(unionArray[i].getDConst())); else newConstArray[i].setIConst(SIGN(unionArray[i].getIConst())); break; case EOpFloor: newConstArray[i].setDConst(floor(unionArray[i].getDConst())); break; case EOpTrunc: if (unionArray[i].getDConst() > 0) newConstArray[i].setDConst(floor(unionArray[i].getDConst())); else newConstArray[i].setDConst(ceil(unionArray[i].getDConst())); break; case EOpRound: newConstArray[i].setDConst(floor(0.5 + unionArray[i].getDConst())); break; case EOpRoundEven: { double flr = floor(unionArray[i].getDConst()); bool even = flr / 2.0 == floor(flr / 2.0); double rounded = even ? ceil(unionArray[i].getDConst() - 0.5) : floor(unionArray[i].getDConst() + 0.5); newConstArray[i].setDConst(rounded); break; } case EOpCeil: newConstArray[i].setDConst(ceil(unionArray[i].getDConst())); break; case EOpFract: { double x = unionArray[i].getDConst(); newConstArray[i].setDConst(x - floor(x)); break; } case EOpIsNan: { newConstArray[i].setBConst(std::isnan(unionArray[i].getDConst())); break; } case EOpIsInf: { newConstArray[i].setBConst(std::isinf(unionArray[i].getDConst())); break; } case EOpConvPtrToUint64: case EOpConvUint64ToPtr: case EOpConstructReference: newConstArray[i].setU64Const(unionArray[i].getU64Const()); break; // TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out case EOpSinh: case EOpCosh: case EOpTanh: case EOpAsinh: case EOpAcosh: case EOpAtanh: case EOpFloatBitsToInt: case EOpFloatBitsToUint: case EOpIntBitsToFloat: case EOpUintBitsToFloat: case EOpDoubleBitsToInt64: case EOpDoubleBitsToUint64: case EOpInt64BitsToDouble: case EOpUint64BitsToDouble: case EOpFloat16BitsToInt16: case EOpFloat16BitsToUint16: case EOpInt16BitsToFloat16: case EOpUint16BitsToFloat16: default: return nullptr; } } TIntermConstantUnion *newNode = new TIntermConstantUnion(newConstArray, returnType); newNode->getWritableType().getQualifier().storage = EvqConst; newNode->setLoc(getLoc()); return newNode; } // // Do constant folding for an aggregate node that has all its children // as constants and an operator that requires constant folding. // TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) { if (aggrNode == nullptr) return aggrNode; if (! areAllChildConst(aggrNode)) return aggrNode; if (aggrNode->isConstructor()) return foldConstructor(aggrNode); TIntermSequence& children = aggrNode->getSequence(); // First, see if this is an operation to constant fold, kick out if not, // see what size the result is if so. bool componentwise = false; // will also say componentwise if a scalar argument gets repeated to make per-component results int objectSize; switch (aggrNode->getOp()) { case EOpAtan: case EOpPow: case EOpMin: case EOpMax: case EOpMix: case EOpMod: case EOpClamp: case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: case EOpVectorEqual: case EOpVectorNotEqual: componentwise = true; objectSize = children[0]->getAsConstantUnion()->getType().computeNumComponents(); break; case EOpCross: case EOpReflect: case EOpRefract: case EOpFaceForward: objectSize = children[0]->getAsConstantUnion()->getType().computeNumComponents(); break; case EOpDistance: case EOpDot: objectSize = 1; break; case EOpOuterProduct: objectSize = children[0]->getAsTyped()->getType().getVectorSize() * children[1]->getAsTyped()->getType().getVectorSize(); break; case EOpStep: componentwise = true; objectSize = std::max(children[0]->getAsTyped()->getType().getVectorSize(), children[1]->getAsTyped()->getType().getVectorSize()); break; case EOpSmoothStep: componentwise = true; objectSize = std::max(children[0]->getAsTyped()->getType().getVectorSize(), children[2]->getAsTyped()->getType().getVectorSize()); break; case EOpMul: { TIntermConstantUnion* left = children[0]->getAsConstantUnion(); TIntermConstantUnion* right = children[1]->getAsConstantUnion(); return left->fold(EOpMul, right); } default: return aggrNode; } TConstUnionArray newConstArray(objectSize); TVector childConstUnions; for (unsigned int arg = 0; arg < children.size(); ++arg) childConstUnions.push_back(children[arg]->getAsConstantUnion()->getConstArray()); if (componentwise) { for (int comp = 0; comp < objectSize; comp++) { // some arguments are scalars instead of matching vectors; simulate a smear int arg0comp = std::min(comp, children[0]->getAsTyped()->getType().getVectorSize() - 1); int arg1comp = 0; if (children.size() > 1) arg1comp = std::min(comp, children[1]->getAsTyped()->getType().getVectorSize() - 1); int arg2comp = 0; if (children.size() > 2) arg2comp = std::min(comp, children[2]->getAsTyped()->getType().getVectorSize() - 1); switch (aggrNode->getOp()) { case EOpAtan: newConstArray[comp].setDConst(atan2(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); break; case EOpPow: newConstArray[comp].setDConst(pow(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); break; case EOpMod: { double arg0 = childConstUnions[0][arg0comp].getDConst(); double arg1 = childConstUnions[1][arg1comp].getDConst(); double result = arg0 - arg1 * floor(arg0 / arg1); newConstArray[comp].setDConst(result); break; } case EOpMin: switch(children[0]->getAsTyped()->getBasicType()) { case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtFloat: case EbtDouble: newConstArray[comp].setDConst(std::min(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); break; case EbtInt: newConstArray[comp].setIConst(std::min(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst())); break; case EbtUint: newConstArray[comp].setUConst(std::min(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst())); break; case EbtInt8: newConstArray[comp].setI8Const(std::min(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const())); break; case EbtUint8: newConstArray[comp].setU8Const(std::min(childConstUnions[0][arg0comp].getU8Const(), childConstUnions[1][arg1comp].getU8Const())); break; case EbtInt16: newConstArray[comp].setI16Const(std::min(childConstUnions[0][arg0comp].getI16Const(), childConstUnions[1][arg1comp].getI16Const())); break; case EbtUint16: newConstArray[comp].setU16Const(std::min(childConstUnions[0][arg0comp].getU16Const(), childConstUnions[1][arg1comp].getU16Const())); break; case EbtInt64: newConstArray[comp].setI64Const(std::min(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const())); break; case EbtUint64: newConstArray[comp].setU64Const(std::min(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const())); break; default: assert(false && "Default missing"); } break; case EOpMax: switch(children[0]->getAsTyped()->getBasicType()) { case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtFloat: case EbtDouble: newConstArray[comp].setDConst(std::max(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); break; case EbtInt: newConstArray[comp].setIConst(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst())); break; case EbtUint: newConstArray[comp].setUConst(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst())); break; case EbtInt8: newConstArray[comp].setI8Const(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const())); break; case EbtUint8: newConstArray[comp].setU8Const(std::max(childConstUnions[0][arg0comp].getU8Const(), childConstUnions[1][arg1comp].getU8Const())); break; case EbtInt16: newConstArray[comp].setI16Const(std::max(childConstUnions[0][arg0comp].getI16Const(), childConstUnions[1][arg1comp].getI16Const())); break; case EbtUint16: newConstArray[comp].setU16Const(std::max(childConstUnions[0][arg0comp].getU16Const(), childConstUnions[1][arg1comp].getU16Const())); break; case EbtInt64: newConstArray[comp].setI64Const(std::max(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const())); break; case EbtUint64: newConstArray[comp].setU64Const(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const())); break; default: assert(false && "Default missing"); } break; case EOpClamp: switch(children[0]->getAsTyped()->getBasicType()) { case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtFloat: case EbtDouble: newConstArray[comp].setDConst(std::min(std::max(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst()), childConstUnions[2][arg2comp].getDConst())); break; case EbtUint: newConstArray[comp].setUConst(std::min(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()), childConstUnions[2][arg2comp].getUConst())); break; case EbtInt8: newConstArray[comp].setI8Const(std::min(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()), childConstUnions[2][arg2comp].getI8Const())); break; case EbtUint8: newConstArray[comp].setU8Const(std::min(std::max(childConstUnions[0][arg0comp].getU8Const(), childConstUnions[1][arg1comp].getU8Const()), childConstUnions[2][arg2comp].getU8Const())); break; case EbtInt16: newConstArray[comp].setI16Const(std::min(std::max(childConstUnions[0][arg0comp].getI16Const(), childConstUnions[1][arg1comp].getI16Const()), childConstUnions[2][arg2comp].getI16Const())); break; case EbtUint16: newConstArray[comp].setU16Const(std::min(std::max(childConstUnions[0][arg0comp].getU16Const(), childConstUnions[1][arg1comp].getU16Const()), childConstUnions[2][arg2comp].getU16Const())); break; case EbtInt: newConstArray[comp].setIConst(std::min(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst()), childConstUnions[2][arg2comp].getIConst())); break; case EbtInt64: newConstArray[comp].setI64Const(std::min(std::max(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const()), childConstUnions[2][arg2comp].getI64Const())); break; case EbtUint64: newConstArray[comp].setU64Const(std::min(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()), childConstUnions[2][arg2comp].getU64Const())); break; default: assert(false && "Default missing"); } break; case EOpLessThan: newConstArray[comp].setBConst(childConstUnions[0][arg0comp] < childConstUnions[1][arg1comp]); break; case EOpGreaterThan: newConstArray[comp].setBConst(childConstUnions[0][arg0comp] > childConstUnions[1][arg1comp]); break; case EOpLessThanEqual: newConstArray[comp].setBConst(! (childConstUnions[0][arg0comp] > childConstUnions[1][arg1comp])); break; case EOpGreaterThanEqual: newConstArray[comp].setBConst(! (childConstUnions[0][arg0comp] < childConstUnions[1][arg1comp])); break; case EOpVectorEqual: newConstArray[comp].setBConst(childConstUnions[0][arg0comp] == childConstUnions[1][arg1comp]); break; case EOpVectorNotEqual: newConstArray[comp].setBConst(childConstUnions[0][arg0comp] != childConstUnions[1][arg1comp]); break; case EOpMix: if (!children[0]->getAsTyped()->isFloatingDomain()) return aggrNode; if (children[2]->getAsTyped()->getBasicType() == EbtBool) { newConstArray[comp].setDConst(childConstUnions[2][arg2comp].getBConst() ? childConstUnions[1][arg1comp].getDConst() : childConstUnions[0][arg0comp].getDConst()); } else { newConstArray[comp].setDConst( childConstUnions[0][arg0comp].getDConst() * (1.0 - childConstUnions[2][arg2comp].getDConst()) + childConstUnions[1][arg1comp].getDConst() * childConstUnions[2][arg2comp].getDConst()); } break; case EOpStep: newConstArray[comp].setDConst(childConstUnions[1][arg1comp].getDConst() < childConstUnions[0][arg0comp].getDConst() ? 0.0 : 1.0); break; case EOpSmoothStep: { double t = (childConstUnions[2][arg2comp].getDConst() - childConstUnions[0][arg0comp].getDConst()) / (childConstUnions[1][arg1comp].getDConst() - childConstUnions[0][arg0comp].getDConst()); if (t < 0.0) t = 0.0; if (t > 1.0) t = 1.0; newConstArray[comp].setDConst(t * t * (3.0 - 2.0 * t)); break; } default: return aggrNode; } } } else { // Non-componentwise... int numComps = children[0]->getAsConstantUnion()->getType().computeNumComponents(); double dot; switch (aggrNode->getOp()) { case EOpDistance: { double sum = 0.0; for (int comp = 0; comp < numComps; ++comp) { double diff = childConstUnions[1][comp].getDConst() - childConstUnions[0][comp].getDConst(); sum += diff * diff; } newConstArray[0].setDConst(sqrt(sum)); break; } case EOpDot: if (!children[0]->getAsTyped()->isFloatingDomain()) { return aggrNode; } newConstArray[0].setDConst(childConstUnions[0].dot(childConstUnions[1])); break; case EOpCross: newConstArray[0] = childConstUnions[0][1] * childConstUnions[1][2] - childConstUnions[0][2] * childConstUnions[1][1]; newConstArray[1] = childConstUnions[0][2] * childConstUnions[1][0] - childConstUnions[0][0] * childConstUnions[1][2]; newConstArray[2] = childConstUnions[0][0] * childConstUnions[1][1] - childConstUnions[0][1] * childConstUnions[1][0]; break; case EOpFaceForward: // If dot(Nref, I) < 0 return N, otherwise return -N: Arguments are (N, I, Nref). dot = childConstUnions[1].dot(childConstUnions[2]); for (int comp = 0; comp < numComps; ++comp) { if (dot < 0.0) newConstArray[comp] = childConstUnions[0][comp]; else newConstArray[comp].setDConst(-childConstUnions[0][comp].getDConst()); } break; case EOpReflect: // I - 2 * dot(N, I) * N: Arguments are (I, N). dot = childConstUnions[0].dot(childConstUnions[1]); dot *= 2.0; for (int comp = 0; comp < numComps; ++comp) newConstArray[comp].setDConst(childConstUnions[0][comp].getDConst() - dot * childConstUnions[1][comp].getDConst()); break; case EOpRefract: { // Arguments are (I, N, eta). // k = 1.0 - eta * eta * (1.0 - dot(N, I) * dot(N, I)) // if (k < 0.0) // return dvec(0.0) // else // return eta * I - (eta * dot(N, I) + sqrt(k)) * N dot = childConstUnions[0].dot(childConstUnions[1]); double eta = childConstUnions[2][0].getDConst(); double k = 1.0 - eta * eta * (1.0 - dot * dot); if (k < 0.0) { for (int comp = 0; comp < numComps; ++comp) newConstArray[comp].setDConst(0.0); } else { for (int comp = 0; comp < numComps; ++comp) newConstArray[comp].setDConst(eta * childConstUnions[0][comp].getDConst() - (eta * dot + sqrt(k)) * childConstUnions[1][comp].getDConst()); } break; } case EOpOuterProduct: { int numRows = numComps; int numCols = children[1]->getAsConstantUnion()->getType().computeNumComponents(); for (int row = 0; row < numRows; ++row) for (int col = 0; col < numCols; ++col) newConstArray[col * numRows + row] = childConstUnions[0][row] * childConstUnions[1][col]; break; } default: return aggrNode; } } TIntermConstantUnion *newNode = new TIntermConstantUnion(newConstArray, aggrNode->getType()); newNode->getWritableType().getQualifier().storage = EvqConst; newNode->setLoc(aggrNode->getLoc()); return newNode; } bool TIntermediate::areAllChildConst(TIntermAggregate* aggrNode) { bool allConstant = true; // check if all the child nodes are constants so that they can be inserted into // the parent node if (aggrNode) { TIntermSequence& childSequenceVector = aggrNode->getSequence(); for (TIntermSequence::iterator p = childSequenceVector.begin(); p != childSequenceVector.end(); p++) { if (!(*p)->getAsTyped()->getAsConstantUnion()) return false; } } return allConstant; } TIntermTyped* TIntermediate::foldConstructor(TIntermAggregate* aggrNode) { bool error = false; TConstUnionArray unionArray(aggrNode->getType().computeNumComponents()); if (aggrNode->getSequence().size() == 1) error = parseConstTree(aggrNode, unionArray, aggrNode->getOp(), aggrNode->getType(), true); else error = parseConstTree(aggrNode, unionArray, aggrNode->getOp(), aggrNode->getType()); if (error) return aggrNode; return addConstantUnion(unionArray, aggrNode->getType(), aggrNode->getLoc()); } // // Constant folding of a bracket (array-style) dereference or struct-like dot // dereference. Can handle anything except a multi-character swizzle, though // all swizzles may go to foldSwizzle(). // TIntermTyped* TIntermediate::foldDereference(TIntermTyped* node, int index, const TSourceLoc& loc) { TType dereferencedType(node->getType(), index); dereferencedType.getQualifier().storage = EvqConst; TIntermTyped* result = nullptr; int size = dereferencedType.computeNumComponents(); // arrays, vectors, matrices, all use simple multiplicative math // while structures need to add up heterogeneous members int start; if (node->getType().isCoopMat()) start = 0; else if (node->isArray() || ! node->isStruct()) start = size * index; else { // it is a structure assert(node->isStruct()); start = 0; for (int i = 0; i < index; ++i) start += (*node->getType().getStruct())[i].type->computeNumComponents(); } result = addConstantUnion(TConstUnionArray(node->getAsConstantUnion()->getConstArray(), start, size), node->getType(), loc); if (result == nullptr) result = node; else result->setType(dereferencedType); return result; } // // Make a constant vector node or constant scalar node, representing a given // constant vector and constant swizzle into it. // TIntermTyped* TIntermediate::foldSwizzle(TIntermTyped* node, TSwizzleSelectors& selectors, const TSourceLoc& loc) { const TConstUnionArray& unionArray = node->getAsConstantUnion()->getConstArray(); TConstUnionArray constArray(selectors.size()); for (int i = 0; i < selectors.size(); i++) constArray[i] = unionArray[selectors[i]]; TIntermTyped* result = addConstantUnion(constArray, node->getType(), loc); if (result == nullptr) result = node; else result->setType(TType(node->getBasicType(), EvqConst, selectors.size())); return result; } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/InfoSink.cpp000066400000000000000000000061061506534232700226340ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "../Include/InfoSink.h" #include namespace glslang { void TInfoSinkBase::append(const char* s) { if (outputStream & EString) { if (s == nullptr) sink.append("(null)"); else { checkMem(strlen(s)); sink.append(s); } } //#ifdef _WIN32 // if (outputStream & EDebugger) // OutputDebugString(s); //#endif if (outputStream & EStdOut) fprintf(stdout, "%s", s); } void TInfoSinkBase::append(int count, char c) { if (outputStream & EString) { checkMem(count); sink.append(count, c); } //#ifdef _WIN32 // if (outputStream & EDebugger) { // char str[2]; // str[0] = c; // str[1] = '\0'; // OutputDebugString(str); // } //#endif if (outputStream & EStdOut) fprintf(stdout, "%c", c); } void TInfoSinkBase::append(const TPersistString& t) { if (outputStream & EString) { checkMem(t.size()); sink.append(t); } //#ifdef _WIN32 // if (outputStream & EDebugger) // OutputDebugString(t.c_str()); //#endif if (outputStream & EStdOut) fprintf(stdout, "%s", t.c_str()); } void TInfoSinkBase::append(const TString& t) { if (outputStream & EString) { checkMem(t.size()); sink.append(t.c_str()); } //#ifdef _WIN32 // if (outputStream & EDebugger) // OutputDebugString(t.c_str()); //#endif if (outputStream & EStdOut) fprintf(stdout, "%s", t.c_str()); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/Initialize.cpp000066400000000000000000022561461506534232700232320ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Create strings that declare built-in definitions, add built-ins programmatically // that cannot be expressed in the strings, and establish mappings between // built-in functions and operators. // // Where to put a built-in: // TBuiltIns::initialize(version,profile) context-independent textual built-ins; add them to the right string // TBuiltIns::initialize(resources,...) context-dependent textual built-ins; add them to the right string // TBuiltIns::identifyBuiltIns(...,symbolTable) context-independent programmatic additions/mappings to the symbol table, // including identifying what extensions are needed if a version does not allow a symbol // TBuiltIns::identifyBuiltIns(...,symbolTable, resources) context-dependent programmatic additions/mappings to the symbol table, // including identifying what extensions are needed if a version does not allow a symbol // #include #include #include "Initialize.h" #include "span.h" namespace glslang { // TODO: ARB_Compatability: do full extension support const bool ARBCompatibility = true; const bool ForwardCompatibility = false; namespace { // // A set of definitions for tabling of the built-in functions. // // Order matters here, as does correlation with the subsequent // "const int ..." declarations and the ArgType enumerants. const char* TypeString[] = { "bool", "bvec2", "bvec3", "bvec4", "float", "vec2", "vec3", "vec4", "int", "ivec2", "ivec3", "ivec4", "uint", "uvec2", "uvec3", "uvec4", }; const int TypeStringCount = sizeof(TypeString) / sizeof(char*); // number of entries in 'TypeString' const int TypeStringRowShift = 2; // shift amount to go downe one row in 'TypeString' const int TypeStringColumnMask = (1 << TypeStringRowShift) - 1; // reduce type to its column number in 'TypeString' const int TypeStringScalarMask = ~TypeStringColumnMask; // take type to its scalar column in 'TypeString' enum ArgType { // numbers hardcoded to correspond to 'TypeString'; order and value matter TypeB = 1 << 0, // Boolean TypeF = 1 << 1, // float 32 TypeI = 1 << 2, // int 32 TypeU = 1 << 3, // uint 32 TypeF16 = 1 << 4, // float 16 TypeF64 = 1 << 5, // float 64 TypeI8 = 1 << 6, // int 8 TypeI16 = 1 << 7, // int 16 TypeI64 = 1 << 8, // int 64 TypeU8 = 1 << 9, // uint 8 TypeU16 = 1 << 10, // uint 16 TypeU64 = 1 << 11, // uint 64 }; // Mixtures of the above, to help the function tables const ArgType TypeFI = static_cast(TypeF | TypeI); const ArgType TypeFIB = static_cast(TypeF | TypeI | TypeB); const ArgType TypeIU = static_cast(TypeI | TypeU); // The relationships between arguments and return type, whether anything is // output, or other unusual situations. enum ArgClass { ClassRegular = 0, // nothing special, just all vector widths with matching return type; traditional arithmetic ClassLS = 1 << 0, // the last argument is also held fixed as a (type-matched) scalar while the others cycle ClassXLS = 1 << 1, // the last argument is exclusively a (type-matched) scalar while the others cycle ClassLS2 = 1 << 2, // the last two arguments are held fixed as a (type-matched) scalar while the others cycle ClassFS = 1 << 3, // the first argument is held fixed as a (type-matched) scalar while the others cycle ClassFS2 = 1 << 4, // the first two arguments are held fixed as a (type-matched) scalar while the others cycle ClassLO = 1 << 5, // the last argument is an output ClassB = 1 << 6, // return type cycles through only bool/bvec, matching vector width of args ClassLB = 1 << 7, // last argument cycles through only bool/bvec, matching vector width of args ClassV1 = 1 << 8, // scalar only ClassFIO = 1 << 9, // first argument is inout ClassRS = 1 << 10, // the return is held scalar as the arguments cycle ClassNS = 1 << 11, // no scalar prototype ClassCVN = 1 << 12, // first argument is 'coherent volatile nontemporal' ClassFO = 1 << 13, // first argument is output ClassV3 = 1 << 14, // vec3 only }; // Mixtures of the above, to help the function tables const ArgClass ClassV1FIOCVN = (ArgClass)(ClassV1 | ClassFIO | ClassCVN); const ArgClass ClassBNS = (ArgClass)(ClassB | ClassNS); const ArgClass ClassRSNS = (ArgClass)(ClassRS | ClassNS); // A descriptor, for a single profile, of when something is available. // If the current profile does not match 'profile' mask below, the other fields // do not apply (nor validate). // profiles == EBadProfile is the end of an array of these struct Versioning { EProfile profiles; // the profile(s) (mask) that the following fields are valid for int minExtendedVersion; // earliest version when extensions are enabled; ignored if numExtensions is 0 int minCoreVersion; // earliest version function is in core; 0 means never int numExtensions; // how many extensions are in the 'extensions' list const char** extensions; // list of extension names enabling the function }; EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECompatibilityProfile); // Declare pointers to put into the table for versioning. const std::array Es300Desktop130Version = { Versioning{ EEsProfile, 0, 300, 0, nullptr }, Versioning{ EDesktopProfile, 0, 130, 0, nullptr }, }; const std::array Es310Desktop400Version = { Versioning{ EEsProfile, 0, 310, 0, nullptr }, Versioning{ EDesktopProfile, 0, 400, 0, nullptr }, }; const std::array Es310Desktop450Version = { Versioning{ EEsProfile, 0, 310, 0, nullptr }, Versioning{ EDesktopProfile, 0, 450, 0, nullptr }, }; // The main descriptor of what a set of function prototypes can look like, and // a pointer to extra versioning information, when needed. struct BuiltInFunction { TOperator op; // operator to map the name to const char* name; // function name int numArguments; // number of arguments (overloads with varying arguments need different entries) ArgType types; // ArgType mask ArgClass classes; // the ways this particular function entry manifests const span versioning; // An empty span means always a valid version }; // The tables can have the same built-in function name more than one time, // but the exact same prototype must be indicated at most once. // The prototypes that get declared are the union of all those indicated. // This is important when different releases add new prototypes for the same name. // It also also congnitively simpler tiling of the prototype space. // In practice, most names can be fully represented with one entry. // // Table is terminated by an OpNull TOperator. const std::array BaseFunctions = { // TOperator, name, arg-count, ArgType, ArgClass, versioning // --------- ---- --------- ------- -------- ---------- BuiltInFunction{ EOpRadians, "radians", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpDegrees, "degrees", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpSin, "sin", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpCos, "cos", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpTan, "tan", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpAsin, "asin", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpAcos, "acos", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpAtan, "atan", 2, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpAtan, "atan", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpPow, "pow", 2, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpExp, "exp", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpLog, "log", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpExp2, "exp2", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpLog2, "log2", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpSqrt, "sqrt", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpInverseSqrt, "inversesqrt", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpAbs, "abs", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpSign, "sign", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpFloor, "floor", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpCeil, "ceil", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpFract, "fract", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpMod, "mod", 2, TypeF, ClassLS, {} }, BuiltInFunction{ EOpMin, "min", 2, TypeF, ClassLS, {} }, BuiltInFunction{ EOpMax, "max", 2, TypeF, ClassLS, {} }, BuiltInFunction{ EOpClamp, "clamp", 3, TypeF, ClassLS2, {} }, BuiltInFunction{ EOpMix, "mix", 3, TypeF, ClassLS, {} }, BuiltInFunction{ EOpStep, "step", 2, TypeF, ClassFS, {} }, BuiltInFunction{ EOpSmoothStep, "smoothstep", 3, TypeF, ClassFS2, {} }, BuiltInFunction{ EOpNormalize, "normalize", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpFaceForward, "faceforward", 3, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpReflect, "reflect", 2, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpRefract, "refract", 3, TypeF, ClassXLS, {} }, BuiltInFunction{ EOpLength, "length", 1, TypeF, ClassRS, {} }, BuiltInFunction{ EOpDistance, "distance", 2, TypeF, ClassRS, {} }, BuiltInFunction{ EOpDot, "dot", 2, TypeF, ClassRS, {} }, BuiltInFunction{ EOpCross, "cross", 2, TypeF, ClassV3, {} }, BuiltInFunction{ EOpLessThan, "lessThan", 2, TypeFI, ClassBNS, {} }, BuiltInFunction{ EOpLessThanEqual, "lessThanEqual", 2, TypeFI, ClassBNS, {} }, BuiltInFunction{ EOpGreaterThan, "greaterThan", 2, TypeFI, ClassBNS, {} }, BuiltInFunction{ EOpGreaterThanEqual, "greaterThanEqual", 2, TypeFI, ClassBNS, {} }, BuiltInFunction{ EOpVectorEqual, "equal", 2, TypeFIB, ClassBNS, {} }, BuiltInFunction{ EOpVectorNotEqual, "notEqual", 2, TypeFIB, ClassBNS, {} }, BuiltInFunction{ EOpAny, "any", 1, TypeB, ClassRSNS, {} }, BuiltInFunction{ EOpAll, "all", 1, TypeB, ClassRSNS, {} }, BuiltInFunction{ EOpVectorLogicalNot, "not", 1, TypeB, ClassNS, {} }, BuiltInFunction{ EOpSinh, "sinh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpCosh, "cosh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpTanh, "tanh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpAsinh, "asinh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpAcosh, "acosh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpAtanh, "atanh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpAbs, "abs", 1, TypeI, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpSign, "sign", 1, TypeI, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpTrunc, "trunc", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpRound, "round", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpRoundEven, "roundEven", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, BuiltInFunction{ EOpModf, "modf", 2, TypeF, ClassLO, {Es300Desktop130Version} }, BuiltInFunction{ EOpMin, "min", 2, TypeIU, ClassLS, {Es300Desktop130Version} }, BuiltInFunction{ EOpMax, "max", 2, TypeIU, ClassLS, {Es300Desktop130Version} }, BuiltInFunction{ EOpClamp, "clamp", 3, TypeIU, ClassLS2, {Es300Desktop130Version} }, BuiltInFunction{ EOpMix, "mix", 3, TypeF, ClassLB, {Es300Desktop130Version} }, BuiltInFunction{ EOpIsInf, "isinf", 1, TypeF, ClassB, {Es300Desktop130Version} }, BuiltInFunction{ EOpIsNan, "isnan", 1, TypeF, ClassB, {Es300Desktop130Version} }, BuiltInFunction{ EOpLessThan, "lessThan", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, BuiltInFunction{ EOpLessThanEqual, "lessThanEqual", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, BuiltInFunction{ EOpGreaterThan, "greaterThan", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, BuiltInFunction{ EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, BuiltInFunction{ EOpVectorEqual, "equal", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, BuiltInFunction{ EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, BuiltInFunction{ EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCVN, {Es310Desktop400Version} }, BuiltInFunction{ EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCVN, {Es310Desktop400Version} }, BuiltInFunction{ EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCVN, {Es310Desktop400Version} }, BuiltInFunction{ EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCVN, {Es310Desktop400Version} }, BuiltInFunction{ EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCVN, {Es310Desktop400Version} }, BuiltInFunction{ EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCVN, {Es310Desktop400Version} }, BuiltInFunction{ EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCVN, {Es310Desktop400Version} }, BuiltInFunction{ EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCVN, {Es310Desktop400Version} }, BuiltInFunction{ EOpMix, "mix", 3, TypeB, ClassRegular, {Es310Desktop450Version} }, BuiltInFunction{ EOpMix, "mix", 3, TypeIU, ClassLB, {Es310Desktop450Version} }, }; const std::array DerivativeFunctions = { BuiltInFunction{ EOpDPdx, "dFdx", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpDPdy, "dFdy", 1, TypeF, ClassRegular, {} }, BuiltInFunction{ EOpFwidth, "fwidth", 1, TypeF, ClassRegular, {} }, }; // For functions declared some other way, but still use the table to relate to operator. struct CustomFunction { TOperator op; // operator to map the name to const char* name; // function name const span versioning; // An empty span means always a valid version }; const CustomFunction CustomFunctions[] = { { EOpBarrier, "barrier", {} }, { EOpMemoryBarrierShared, "memoryBarrierShared", {} }, { EOpGroupMemoryBarrier, "groupMemoryBarrier", {} }, { EOpMemoryBarrier, "memoryBarrier", {} }, { EOpMemoryBarrierBuffer, "memoryBarrierBuffer", {} }, { EOpPackSnorm2x16, "packSnorm2x16", {} }, { EOpUnpackSnorm2x16, "unpackSnorm2x16", {} }, { EOpPackUnorm2x16, "packUnorm2x16", {} }, { EOpUnpackUnorm2x16, "unpackUnorm2x16", {} }, { EOpPackHalf2x16, "packHalf2x16", {} }, { EOpUnpackHalf2x16, "unpackHalf2x16", {} }, { EOpMul, "matrixCompMult", {} }, { EOpOuterProduct, "outerProduct", {} }, { EOpTranspose, "transpose", {} }, { EOpDeterminant, "determinant", {} }, { EOpMatrixInverse, "inverse", {} }, { EOpFloatBitsToInt, "floatBitsToInt", {} }, { EOpFloatBitsToUint, "floatBitsToUint", {} }, { EOpIntBitsToFloat, "intBitsToFloat", {} }, { EOpUintBitsToFloat, "uintBitsToFloat", {} }, { EOpTextureQuerySize, "textureSize", {} }, { EOpTextureQueryLod, "textureQueryLod", {} }, { EOpTextureQueryLod, "textureQueryLOD", {} }, // extension GL_ARB_texture_query_lod { EOpTextureQueryLevels, "textureQueryLevels", {} }, { EOpTextureQuerySamples, "textureSamples", {} }, { EOpTexture, "texture", {} }, { EOpTextureProj, "textureProj", {} }, { EOpTextureLod, "textureLod", {} }, { EOpTextureOffset, "textureOffset", {} }, { EOpTextureFetch, "texelFetch", {} }, { EOpTextureFetchOffset, "texelFetchOffset", {} }, { EOpTextureProjOffset, "textureProjOffset", {} }, { EOpTextureLodOffset, "textureLodOffset", {} }, { EOpTextureProjLod, "textureProjLod", {} }, { EOpTextureProjLodOffset, "textureProjLodOffset", {} }, { EOpTextureGrad, "textureGrad", {} }, { EOpTextureGradOffset, "textureGradOffset", {} }, { EOpTextureProjGrad, "textureProjGrad", {} }, { EOpTextureProjGradOffset, "textureProjGradOffset", {} }, }; // For the given table of functions, add all the indicated prototypes for each // one, to be returned in the passed in decls. void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) { const auto isScalarType = [](int type) { return (type & TypeStringColumnMask) == 0; }; // loop across these two: // 0: the varying arg set, and // 1: the fixed scalar args const ArgClass ClassFixed = (ArgClass)(ClassLS | ClassXLS | ClassLS2 | ClassFS | ClassFS2); for (int fixed = 0; fixed < ((function.classes & ClassFixed) > 0 ? 2 : 1); ++fixed) { if (fixed == 0 && (function.classes & ClassXLS)) continue; // walk the type strings in TypeString[] for (int type = 0; type < TypeStringCount; ++type) { // skip types not selected: go from type to row number to type bit if ((function.types & (1 << (type >> TypeStringRowShift))) == 0) continue; // if we aren't on a scalar, and should be, skip if ((function.classes & ClassV1) && !isScalarType(type)) continue; // if we aren't on a 3-vector, and should be, skip if ((function.classes & ClassV3) && (type & TypeStringColumnMask) != 2) continue; // skip replication of all arg scalars between the varying arg set and the fixed args if (fixed == 1 && type == (type & TypeStringScalarMask) && (function.classes & ClassXLS) == 0) continue; // skip scalars when we are told to if ((function.classes & ClassNS) && isScalarType(type)) continue; // return type if (function.classes & ClassB) decls.append(TypeString[type & TypeStringColumnMask]); else if (function.classes & ClassRS) decls.append(TypeString[type & TypeStringScalarMask]); else decls.append(TypeString[type]); decls.append(" "); decls.append(function.name); decls.append("("); // arguments for (int arg = 0; arg < function.numArguments; ++arg) { if (arg == function.numArguments - 1 && (function.classes & ClassLO)) decls.append("out "); if (arg == 0) { if (function.classes & ClassCVN) decls.append("coherent volatile nontemporal "); if (function.classes & ClassFIO) decls.append("inout "); if (function.classes & ClassFO) decls.append("out "); } if ((function.classes & ClassLB) && arg == function.numArguments - 1) decls.append(TypeString[type & TypeStringColumnMask]); else if (fixed && ((arg == function.numArguments - 1 && (function.classes & (ClassLS | ClassXLS | ClassLS2))) || (arg == function.numArguments - 2 && (function.classes & ClassLS2)) || (arg == 0 && (function.classes & (ClassFS | ClassFS2))) || (arg == 1 && (function.classes & ClassFS2)))) decls.append(TypeString[type & TypeStringScalarMask]); else decls.append(TypeString[type]); if (arg < function.numArguments - 1) decls.append(","); } decls.append(");\n"); } } } // See if the tabled versioning information allows the current version. bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */) { // nullptr means always valid if (function.versioning.empty()) return true; // check for what is said about our current profile for (const auto& v : function.versioning) { if ((v.profiles & profile) != 0) { if (v.minCoreVersion <= version || (v.numExtensions > 0 && v.minExtendedVersion <= version)) return true; } } return false; } // Relate a single table of built-ins to their AST operator. // This can get called redundantly (especially for the common built-ins, when // called once per stage). This is a performance issue only, not a correctness // concern. It is done for quality arising from simplicity, as there are subtleties // to get correct if instead trying to do it surgically. template void RelateTabledBuiltins(const FunctionContainer& functions, TSymbolTable& symbolTable) { for (const auto& fn : functions) { symbolTable.relateToOperator(fn.name, fn.op); } } } // end anonymous namespace // Add declarations for all tables of built-in functions. void TBuiltIns::addTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion) { const auto forEachFunction = [&](TString& decls, const span& functions) { for (const auto& fn : functions) { if (ValidVersion(fn, version, profile, spvVersion)) AddTabledBuiltin(decls, fn); } }; forEachFunction(commonBuiltins, BaseFunctions); forEachFunction(stageBuiltins[EShLangFragment], DerivativeFunctions); if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) forEachFunction(stageBuiltins[EShLangCompute], DerivativeFunctions); } // Relate all tables of built-ins to the AST operators. void TBuiltIns::relateTabledBuiltins(int /* version */, EProfile /* profile */, const SpvVersion& /* spvVersion */, EShLanguage /* stage */, TSymbolTable& symbolTable) { RelateTabledBuiltins(BaseFunctions, symbolTable); RelateTabledBuiltins(DerivativeFunctions, symbolTable); RelateTabledBuiltins(CustomFunctions, symbolTable); } inline bool IncludeLegacy(int version, EProfile profile, const SpvVersion& spvVersion) { return profile != EEsProfile && (version <= 130 || (spvVersion.spv == 0 && version == 140 && ARBCompatibility) || profile == ECompatibilityProfile); } // Construct TBuiltInParseables base class. This can be used for language-common constructs. TBuiltInParseables::TBuiltInParseables() { } // Destroy TBuiltInParseables. TBuiltInParseables::~TBuiltInParseables() { } TBuiltIns::TBuiltIns() { // Set up textual representations for making all the permutations // of texturing/imaging functions. prefixes[EbtFloat] = ""; prefixes[EbtInt] = "i"; prefixes[EbtUint] = "u"; prefixes[EbtFloat16] = "f16"; prefixes[EbtInt8] = "i8"; prefixes[EbtUint8] = "u8"; prefixes[EbtInt16] = "i16"; prefixes[EbtUint16] = "u16"; prefixes[EbtInt64] = "i64"; prefixes[EbtUint64] = "u64"; postfixes[2] = "2"; postfixes[3] = "3"; postfixes[4] = "4"; // Map from symbolic class of texturing dimension to numeric dimensions. dimMap[Esd2D] = 2; dimMap[Esd3D] = 3; dimMap[EsdCube] = 3; dimMap[Esd1D] = 1; dimMap[EsdRect] = 2; dimMap[EsdBuffer] = 1; dimMap[EsdSubpass] = 2; // potentially unused for now dimMap[EsdAttachmentEXT] = 2; // potentially unused for now } TBuiltIns::~TBuiltIns() { } // // Add all context-independent built-in functions and variables that are present // for the given version and profile. Share common ones across stages, otherwise // make stage-specific entries. // // Most built-ins variables can be added as simple text strings. Some need to // be added programmatically, which is done later in IdentifyBuiltIns() below. // void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion) { addTabledBuiltins(version, profile, spvVersion); //============================================================================ // // Prototypes for built-in functions used repeatly by different shaders // //============================================================================ // // Derivatives Functions. // TString derivativeControls ( "float dFdxFine(float p);" "vec2 dFdxFine(vec2 p);" "vec3 dFdxFine(vec3 p);" "vec4 dFdxFine(vec4 p);" "float dFdyFine(float p);" "vec2 dFdyFine(vec2 p);" "vec3 dFdyFine(vec3 p);" "vec4 dFdyFine(vec4 p);" "float fwidthFine(float p);" "vec2 fwidthFine(vec2 p);" "vec3 fwidthFine(vec3 p);" "vec4 fwidthFine(vec4 p);" "float dFdxCoarse(float p);" "vec2 dFdxCoarse(vec2 p);" "vec3 dFdxCoarse(vec3 p);" "vec4 dFdxCoarse(vec4 p);" "float dFdyCoarse(float p);" "vec2 dFdyCoarse(vec2 p);" "vec3 dFdyCoarse(vec3 p);" "vec4 dFdyCoarse(vec4 p);" "float fwidthCoarse(float p);" "vec2 fwidthCoarse(vec2 p);" "vec3 fwidthCoarse(vec3 p);" "vec4 fwidthCoarse(vec4 p);" ); TString derivativesAndControl16bits ( "float16_t dFdx(float16_t);" "f16vec2 dFdx(f16vec2);" "f16vec3 dFdx(f16vec3);" "f16vec4 dFdx(f16vec4);" "float16_t dFdy(float16_t);" "f16vec2 dFdy(f16vec2);" "f16vec3 dFdy(f16vec3);" "f16vec4 dFdy(f16vec4);" "float16_t dFdxFine(float16_t);" "f16vec2 dFdxFine(f16vec2);" "f16vec3 dFdxFine(f16vec3);" "f16vec4 dFdxFine(f16vec4);" "float16_t dFdyFine(float16_t);" "f16vec2 dFdyFine(f16vec2);" "f16vec3 dFdyFine(f16vec3);" "f16vec4 dFdyFine(f16vec4);" "float16_t dFdxCoarse(float16_t);" "f16vec2 dFdxCoarse(f16vec2);" "f16vec3 dFdxCoarse(f16vec3);" "f16vec4 dFdxCoarse(f16vec4);" "float16_t dFdyCoarse(float16_t);" "f16vec2 dFdyCoarse(f16vec2);" "f16vec3 dFdyCoarse(f16vec3);" "f16vec4 dFdyCoarse(f16vec4);" "float16_t fwidth(float16_t);" "f16vec2 fwidth(f16vec2);" "f16vec3 fwidth(f16vec3);" "f16vec4 fwidth(f16vec4);" "float16_t fwidthFine(float16_t);" "f16vec2 fwidthFine(f16vec2);" "f16vec3 fwidthFine(f16vec3);" "f16vec4 fwidthFine(f16vec4);" "float16_t fwidthCoarse(float16_t);" "f16vec2 fwidthCoarse(f16vec2);" "f16vec3 fwidthCoarse(f16vec3);" "f16vec4 fwidthCoarse(f16vec4);" ); TString derivativesAndControl64bits ( "float64_t dFdx(float64_t);" "f64vec2 dFdx(f64vec2);" "f64vec3 dFdx(f64vec3);" "f64vec4 dFdx(f64vec4);" "float64_t dFdy(float64_t);" "f64vec2 dFdy(f64vec2);" "f64vec3 dFdy(f64vec3);" "f64vec4 dFdy(f64vec4);" "float64_t dFdxFine(float64_t);" "f64vec2 dFdxFine(f64vec2);" "f64vec3 dFdxFine(f64vec3);" "f64vec4 dFdxFine(f64vec4);" "float64_t dFdyFine(float64_t);" "f64vec2 dFdyFine(f64vec2);" "f64vec3 dFdyFine(f64vec3);" "f64vec4 dFdyFine(f64vec4);" "float64_t dFdxCoarse(float64_t);" "f64vec2 dFdxCoarse(f64vec2);" "f64vec3 dFdxCoarse(f64vec3);" "f64vec4 dFdxCoarse(f64vec4);" "float64_t dFdyCoarse(float64_t);" "f64vec2 dFdyCoarse(f64vec2);" "f64vec3 dFdyCoarse(f64vec3);" "f64vec4 dFdyCoarse(f64vec4);" "float64_t fwidth(float64_t);" "f64vec2 fwidth(f64vec2);" "f64vec3 fwidth(f64vec3);" "f64vec4 fwidth(f64vec4);" "float64_t fwidthFine(float64_t);" "f64vec2 fwidthFine(f64vec2);" "f64vec3 fwidthFine(f64vec3);" "f64vec4 fwidthFine(f64vec4);" "float64_t fwidthCoarse(float64_t);" "f64vec2 fwidthCoarse(f64vec2);" "f64vec3 fwidthCoarse(f64vec3);" "f64vec4 fwidthCoarse(f64vec4);" ); //============================================================================ // // Prototypes for built-in functions seen by both vertex and fragment shaders. // //============================================================================ // // double functions added to desktop 4.00, but not fma, frexp, ldexp, or pack/unpack // if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64 commonBuiltins.append( "double sqrt(double);" "dvec2 sqrt(dvec2);" "dvec3 sqrt(dvec3);" "dvec4 sqrt(dvec4);" "double inversesqrt(double);" "dvec2 inversesqrt(dvec2);" "dvec3 inversesqrt(dvec3);" "dvec4 inversesqrt(dvec4);" "double abs(double);" "dvec2 abs(dvec2);" "dvec3 abs(dvec3);" "dvec4 abs(dvec4);" "double sign(double);" "dvec2 sign(dvec2);" "dvec3 sign(dvec3);" "dvec4 sign(dvec4);" "double floor(double);" "dvec2 floor(dvec2);" "dvec3 floor(dvec3);" "dvec4 floor(dvec4);" "double trunc(double);" "dvec2 trunc(dvec2);" "dvec3 trunc(dvec3);" "dvec4 trunc(dvec4);" "double round(double);" "dvec2 round(dvec2);" "dvec3 round(dvec3);" "dvec4 round(dvec4);" "double roundEven(double);" "dvec2 roundEven(dvec2);" "dvec3 roundEven(dvec3);" "dvec4 roundEven(dvec4);" "double ceil(double);" "dvec2 ceil(dvec2);" "dvec3 ceil(dvec3);" "dvec4 ceil(dvec4);" "double fract(double);" "dvec2 fract(dvec2);" "dvec3 fract(dvec3);" "dvec4 fract(dvec4);" "double mod(double, double);" "dvec2 mod(dvec2 , double);" "dvec3 mod(dvec3 , double);" "dvec4 mod(dvec4 , double);" "dvec2 mod(dvec2 , dvec2);" "dvec3 mod(dvec3 , dvec3);" "dvec4 mod(dvec4 , dvec4);" "double modf(double, out double);" "dvec2 modf(dvec2, out dvec2);" "dvec3 modf(dvec3, out dvec3);" "dvec4 modf(dvec4, out dvec4);" "double min(double, double);" "dvec2 min(dvec2, double);" "dvec3 min(dvec3, double);" "dvec4 min(dvec4, double);" "dvec2 min(dvec2, dvec2);" "dvec3 min(dvec3, dvec3);" "dvec4 min(dvec4, dvec4);" "double max(double, double);" "dvec2 max(dvec2 , double);" "dvec3 max(dvec3 , double);" "dvec4 max(dvec4 , double);" "dvec2 max(dvec2 , dvec2);" "dvec3 max(dvec3 , dvec3);" "dvec4 max(dvec4 , dvec4);" "double clamp(double, double, double);" "dvec2 clamp(dvec2 , double, double);" "dvec3 clamp(dvec3 , double, double);" "dvec4 clamp(dvec4 , double, double);" "dvec2 clamp(dvec2 , dvec2 , dvec2);" "dvec3 clamp(dvec3 , dvec3 , dvec3);" "dvec4 clamp(dvec4 , dvec4 , dvec4);" "double mix(double, double, double);" "dvec2 mix(dvec2, dvec2, double);" "dvec3 mix(dvec3, dvec3, double);" "dvec4 mix(dvec4, dvec4, double);" "dvec2 mix(dvec2, dvec2, dvec2);" "dvec3 mix(dvec3, dvec3, dvec3);" "dvec4 mix(dvec4, dvec4, dvec4);" "double mix(double, double, bool);" "dvec2 mix(dvec2, dvec2, bvec2);" "dvec3 mix(dvec3, dvec3, bvec3);" "dvec4 mix(dvec4, dvec4, bvec4);" "double step(double, double);" "dvec2 step(dvec2 , dvec2);" "dvec3 step(dvec3 , dvec3);" "dvec4 step(dvec4 , dvec4);" "dvec2 step(double, dvec2);" "dvec3 step(double, dvec3);" "dvec4 step(double, dvec4);" "double smoothstep(double, double, double);" "dvec2 smoothstep(dvec2 , dvec2 , dvec2);" "dvec3 smoothstep(dvec3 , dvec3 , dvec3);" "dvec4 smoothstep(dvec4 , dvec4 , dvec4);" "dvec2 smoothstep(double, double, dvec2);" "dvec3 smoothstep(double, double, dvec3);" "dvec4 smoothstep(double, double, dvec4);" "bool isnan(double);" "bvec2 isnan(dvec2);" "bvec3 isnan(dvec3);" "bvec4 isnan(dvec4);" "bool isinf(double);" "bvec2 isinf(dvec2);" "bvec3 isinf(dvec3);" "bvec4 isinf(dvec4);" "double length(double);" "double length(dvec2);" "double length(dvec3);" "double length(dvec4);" "double distance(double, double);" "double distance(dvec2 , dvec2);" "double distance(dvec3 , dvec3);" "double distance(dvec4 , dvec4);" "double dot(double, double);" "double dot(dvec2 , dvec2);" "double dot(dvec3 , dvec3);" "double dot(dvec4 , dvec4);" "dvec3 cross(dvec3, dvec3);" "double normalize(double);" "dvec2 normalize(dvec2);" "dvec3 normalize(dvec3);" "dvec4 normalize(dvec4);" "double faceforward(double, double, double);" "dvec2 faceforward(dvec2, dvec2, dvec2);" "dvec3 faceforward(dvec3, dvec3, dvec3);" "dvec4 faceforward(dvec4, dvec4, dvec4);" "double reflect(double, double);" "dvec2 reflect(dvec2 , dvec2 );" "dvec3 reflect(dvec3 , dvec3 );" "dvec4 reflect(dvec4 , dvec4 );" "double refract(double, double, double);" "dvec2 refract(dvec2 , dvec2 , double);" "dvec3 refract(dvec3 , dvec3 , double);" "dvec4 refract(dvec4 , dvec4 , double);" "dmat2 matrixCompMult(dmat2, dmat2);" "dmat3 matrixCompMult(dmat3, dmat3);" "dmat4 matrixCompMult(dmat4, dmat4);" "dmat2x3 matrixCompMult(dmat2x3, dmat2x3);" "dmat2x4 matrixCompMult(dmat2x4, dmat2x4);" "dmat3x2 matrixCompMult(dmat3x2, dmat3x2);" "dmat3x4 matrixCompMult(dmat3x4, dmat3x4);" "dmat4x2 matrixCompMult(dmat4x2, dmat4x2);" "dmat4x3 matrixCompMult(dmat4x3, dmat4x3);" "dmat2 outerProduct(dvec2, dvec2);" "dmat3 outerProduct(dvec3, dvec3);" "dmat4 outerProduct(dvec4, dvec4);" "dmat2x3 outerProduct(dvec3, dvec2);" "dmat3x2 outerProduct(dvec2, dvec3);" "dmat2x4 outerProduct(dvec4, dvec2);" "dmat4x2 outerProduct(dvec2, dvec4);" "dmat3x4 outerProduct(dvec4, dvec3);" "dmat4x3 outerProduct(dvec3, dvec4);" "dmat2 transpose(dmat2);" "dmat3 transpose(dmat3);" "dmat4 transpose(dmat4);" "dmat2x3 transpose(dmat3x2);" "dmat3x2 transpose(dmat2x3);" "dmat2x4 transpose(dmat4x2);" "dmat4x2 transpose(dmat2x4);" "dmat3x4 transpose(dmat4x3);" "dmat4x3 transpose(dmat3x4);" "double determinant(dmat2);" "double determinant(dmat3);" "double determinant(dmat4);" "dmat2 inverse(dmat2);" "dmat3 inverse(dmat3);" "dmat4 inverse(dmat4);" "bvec2 lessThan(dvec2, dvec2);" "bvec3 lessThan(dvec3, dvec3);" "bvec4 lessThan(dvec4, dvec4);" "bvec2 lessThanEqual(dvec2, dvec2);" "bvec3 lessThanEqual(dvec3, dvec3);" "bvec4 lessThanEqual(dvec4, dvec4);" "bvec2 greaterThan(dvec2, dvec2);" "bvec3 greaterThan(dvec3, dvec3);" "bvec4 greaterThan(dvec4, dvec4);" "bvec2 greaterThanEqual(dvec2, dvec2);" "bvec3 greaterThanEqual(dvec3, dvec3);" "bvec4 greaterThanEqual(dvec4, dvec4);" "bvec2 equal(dvec2, dvec2);" "bvec3 equal(dvec3, dvec3);" "bvec4 equal(dvec4, dvec4);" "bvec2 notEqual(dvec2, dvec2);" "bvec3 notEqual(dvec3, dvec3);" "bvec4 notEqual(dvec4, dvec4);" "\n"); } if (profile == EEsProfile && version >= 310) { // Explicit Types commonBuiltins.append( "float64_t sqrt(float64_t);" "f64vec2 sqrt(f64vec2);" "f64vec3 sqrt(f64vec3);" "f64vec4 sqrt(f64vec4);" "float64_t inversesqrt(float64_t);" "f64vec2 inversesqrt(f64vec2);" "f64vec3 inversesqrt(f64vec3);" "f64vec4 inversesqrt(f64vec4);" "float64_t abs(float64_t);" "f64vec2 abs(f64vec2);" "f64vec3 abs(f64vec3);" "f64vec4 abs(f64vec4);" "float64_t sign(float64_t);" "f64vec2 sign(f64vec2);" "f64vec3 sign(f64vec3);" "f64vec4 sign(f64vec4);" "float64_t floor(float64_t);" "f64vec2 floor(f64vec2);" "f64vec3 floor(f64vec3);" "f64vec4 floor(f64vec4);" "float64_t trunc(float64_t);" "f64vec2 trunc(f64vec2);" "f64vec3 trunc(f64vec3);" "f64vec4 trunc(f64vec4);" "float64_t round(float64_t);" "f64vec2 round(f64vec2);" "f64vec3 round(f64vec3);" "f64vec4 round(f64vec4);" "float64_t roundEven(float64_t);" "f64vec2 roundEven(f64vec2);" "f64vec3 roundEven(f64vec3);" "f64vec4 roundEven(f64vec4);" "float64_t ceil(float64_t);" "f64vec2 ceil(f64vec2);" "f64vec3 ceil(f64vec3);" "f64vec4 ceil(f64vec4);" "float64_t fract(float64_t);" "f64vec2 fract(f64vec2);" "f64vec3 fract(f64vec3);" "f64vec4 fract(f64vec4);" "float64_t mod(float64_t, float64_t);" "f64vec2 mod(f64vec2 , float64_t);" "f64vec3 mod(f64vec3 , float64_t);" "f64vec4 mod(f64vec4 , float64_t);" "f64vec2 mod(f64vec2 , f64vec2);" "f64vec3 mod(f64vec3 , f64vec3);" "f64vec4 mod(f64vec4 , f64vec4);" "float64_t modf(float64_t, out float64_t);" "f64vec2 modf(f64vec2, out f64vec2);" "f64vec3 modf(f64vec3, out f64vec3);" "f64vec4 modf(f64vec4, out f64vec4);" "float64_t min(float64_t, float64_t);" "f64vec2 min(f64vec2, float64_t);" "f64vec3 min(f64vec3, float64_t);" "f64vec4 min(f64vec4, float64_t);" "f64vec2 min(f64vec2, f64vec2);" "f64vec3 min(f64vec3, f64vec3);" "f64vec4 min(f64vec4, f64vec4);" "float64_t max(float64_t, float64_t);" "f64vec2 max(f64vec2 , float64_t);" "f64vec3 max(f64vec3 , float64_t);" "f64vec4 max(f64vec4 , float64_t);" "f64vec2 max(f64vec2 , f64vec2);" "f64vec3 max(f64vec3 , f64vec3);" "f64vec4 max(f64vec4 , f64vec4);" "float64_t clamp(float64_t, float64_t, float64_t);" "f64vec2 clamp(f64vec2 , float64_t, float64_t);" "f64vec3 clamp(f64vec3 , float64_t, float64_t);" "f64vec4 clamp(f64vec4 , float64_t, float64_t);" "f64vec2 clamp(f64vec2 , f64vec2 , f64vec2);" "f64vec3 clamp(f64vec3 , f64vec3 , f64vec3);" "f64vec4 clamp(f64vec4 , f64vec4 , f64vec4);" "float64_t mix(float64_t, float64_t, float64_t);" "f64vec2 mix(f64vec2, f64vec2, float64_t);" "f64vec3 mix(f64vec3, f64vec3, float64_t);" "f64vec4 mix(f64vec4, f64vec4, float64_t);" "f64vec2 mix(f64vec2, f64vec2, f64vec2);" "f64vec3 mix(f64vec3, f64vec3, f64vec3);" "f64vec4 mix(f64vec4, f64vec4, f64vec4);" "float64_t mix(float64_t, float64_t, bool);" "f64vec2 mix(f64vec2, f64vec2, bvec2);" "f64vec3 mix(f64vec3, f64vec3, bvec3);" "f64vec4 mix(f64vec4, f64vec4, bvec4);" "float64_t step(float64_t, float64_t);" "f64vec2 step(f64vec2 , f64vec2);" "f64vec3 step(f64vec3 , f64vec3);" "f64vec4 step(f64vec4 , f64vec4);" "f64vec2 step(float64_t, f64vec2);" "f64vec3 step(float64_t, f64vec3);" "f64vec4 step(float64_t, f64vec4);" "float64_t smoothstep(float64_t, float64_t, float64_t);" "f64vec2 smoothstep(f64vec2 , f64vec2 , f64vec2);" "f64vec3 smoothstep(f64vec3 , f64vec3 , f64vec3);" "f64vec4 smoothstep(f64vec4 , f64vec4 , f64vec4);" "f64vec2 smoothstep(float64_t, float64_t, f64vec2);" "f64vec3 smoothstep(float64_t, float64_t, f64vec3);" "f64vec4 smoothstep(float64_t, float64_t, f64vec4);" "float64_t length(float64_t);" "float64_t length(f64vec2);" "float64_t length(f64vec3);" "float64_t length(f64vec4);" "float64_t distance(float64_t, float64_t);" "float64_t distance(f64vec2 , f64vec2);" "float64_t distance(f64vec3 , f64vec3);" "float64_t distance(f64vec4 , f64vec4);" "float64_t dot(float64_t, float64_t);" "float64_t dot(f64vec2 , f64vec2);" "float64_t dot(f64vec3 , f64vec3);" "float64_t dot(f64vec4 , f64vec4);" "f64vec3 cross(f64vec3, f64vec3);" "float64_t normalize(float64_t);" "f64vec2 normalize(f64vec2);" "f64vec3 normalize(f64vec3);" "f64vec4 normalize(f64vec4);" "float64_t faceforward(float64_t, float64_t, float64_t);" "f64vec2 faceforward(f64vec2, f64vec2, f64vec2);" "f64vec3 faceforward(f64vec3, f64vec3, f64vec3);" "f64vec4 faceforward(f64vec4, f64vec4, f64vec4);" "float64_t reflect(float64_t, float64_t);" "f64vec2 reflect(f64vec2 , f64vec2 );" "f64vec3 reflect(f64vec3 , f64vec3 );" "f64vec4 reflect(f64vec4 , f64vec4 );" "float64_t refract(float64_t, float64_t, float64_t);" "f64vec2 refract(f64vec2 , f64vec2 , float64_t);" "f64vec3 refract(f64vec3 , f64vec3 , float64_t);" "f64vec4 refract(f64vec4 , f64vec4 , float64_t);" "f64mat2 matrixCompMult(f64mat2, f64mat2);" "f64mat3 matrixCompMult(f64mat3, f64mat3);" "f64mat4 matrixCompMult(f64mat4, f64mat4);" "f64mat2x3 matrixCompMult(f64mat2x3, f64mat2x3);" "f64mat2x4 matrixCompMult(f64mat2x4, f64mat2x4);" "f64mat3x2 matrixCompMult(f64mat3x2, f64mat3x2);" "f64mat3x4 matrixCompMult(f64mat3x4, f64mat3x4);" "f64mat4x2 matrixCompMult(f64mat4x2, f64mat4x2);" "f64mat4x3 matrixCompMult(f64mat4x3, f64mat4x3);" "f64mat2 outerProduct(f64vec2, f64vec2);" "f64mat3 outerProduct(f64vec3, f64vec3);" "f64mat4 outerProduct(f64vec4, f64vec4);" "f64mat2x3 outerProduct(f64vec3, f64vec2);" "f64mat3x2 outerProduct(f64vec2, f64vec3);" "f64mat2x4 outerProduct(f64vec4, f64vec2);" "f64mat4x2 outerProduct(f64vec2, f64vec4);" "f64mat3x4 outerProduct(f64vec4, f64vec3);" "f64mat4x3 outerProduct(f64vec3, f64vec4);" "f64mat2 transpose(f64mat2);" "f64mat3 transpose(f64mat3);" "f64mat4 transpose(f64mat4);" "f64mat2x3 transpose(f64mat3x2);" "f64mat3x2 transpose(f64mat2x3);" "f64mat2x4 transpose(f64mat4x2);" "f64mat4x2 transpose(f64mat2x4);" "f64mat3x4 transpose(f64mat4x3);" "f64mat4x3 transpose(f64mat3x4);" "float64_t determinant(f64mat2);" "float64_t determinant(f64mat3);" "float64_t determinant(f64mat4);" "f64mat2 inverse(f64mat2);" "f64mat3 inverse(f64mat3);" "f64mat4 inverse(f64mat4);" "\n"); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( "int64_t abs(int64_t);" "i64vec2 abs(i64vec2);" "i64vec3 abs(i64vec3);" "i64vec4 abs(i64vec4);" "int64_t sign(int64_t);" "i64vec2 sign(i64vec2);" "i64vec3 sign(i64vec3);" "i64vec4 sign(i64vec4);" "int64_t min(int64_t, int64_t);" "i64vec2 min(i64vec2, int64_t);" "i64vec3 min(i64vec3, int64_t);" "i64vec4 min(i64vec4, int64_t);" "i64vec2 min(i64vec2, i64vec2);" "i64vec3 min(i64vec3, i64vec3);" "i64vec4 min(i64vec4, i64vec4);" "uint64_t min(uint64_t, uint64_t);" "u64vec2 min(u64vec2, uint64_t);" "u64vec3 min(u64vec3, uint64_t);" "u64vec4 min(u64vec4, uint64_t);" "u64vec2 min(u64vec2, u64vec2);" "u64vec3 min(u64vec3, u64vec3);" "u64vec4 min(u64vec4, u64vec4);" "int64_t max(int64_t, int64_t);" "i64vec2 max(i64vec2, int64_t);" "i64vec3 max(i64vec3, int64_t);" "i64vec4 max(i64vec4, int64_t);" "i64vec2 max(i64vec2, i64vec2);" "i64vec3 max(i64vec3, i64vec3);" "i64vec4 max(i64vec4, i64vec4);" "uint64_t max(uint64_t, uint64_t);" "u64vec2 max(u64vec2, uint64_t);" "u64vec3 max(u64vec3, uint64_t);" "u64vec4 max(u64vec4, uint64_t);" "u64vec2 max(u64vec2, u64vec2);" "u64vec3 max(u64vec3, u64vec3);" "u64vec4 max(u64vec4, u64vec4);" "int64_t clamp(int64_t, int64_t, int64_t);" "i64vec2 clamp(i64vec2, int64_t, int64_t);" "i64vec3 clamp(i64vec3, int64_t, int64_t);" "i64vec4 clamp(i64vec4, int64_t, int64_t);" "i64vec2 clamp(i64vec2, i64vec2, i64vec2);" "i64vec3 clamp(i64vec3, i64vec3, i64vec3);" "i64vec4 clamp(i64vec4, i64vec4, i64vec4);" "uint64_t clamp(uint64_t, uint64_t, uint64_t);" "u64vec2 clamp(u64vec2, uint64_t, uint64_t);" "u64vec3 clamp(u64vec3, uint64_t, uint64_t);" "u64vec4 clamp(u64vec4, uint64_t, uint64_t);" "u64vec2 clamp(u64vec2, u64vec2, u64vec2);" "u64vec3 clamp(u64vec3, u64vec3, u64vec3);" "u64vec4 clamp(u64vec4, u64vec4, u64vec4);" "int64_t mix(int64_t, int64_t, bool);" "i64vec2 mix(i64vec2, i64vec2, bvec2);" "i64vec3 mix(i64vec3, i64vec3, bvec3);" "i64vec4 mix(i64vec4, i64vec4, bvec4);" "uint64_t mix(uint64_t, uint64_t, bool);" "u64vec2 mix(u64vec2, u64vec2, bvec2);" "u64vec3 mix(u64vec3, u64vec3, bvec3);" "u64vec4 mix(u64vec4, u64vec4, bvec4);" "int64_t doubleBitsToInt64(float64_t);" "i64vec2 doubleBitsToInt64(f64vec2);" "i64vec3 doubleBitsToInt64(f64vec3);" "i64vec4 doubleBitsToInt64(f64vec4);" "uint64_t doubleBitsToUint64(float64_t);" "u64vec2 doubleBitsToUint64(f64vec2);" "u64vec3 doubleBitsToUint64(f64vec3);" "u64vec4 doubleBitsToUint64(f64vec4);" "float64_t int64BitsToDouble(int64_t);" "f64vec2 int64BitsToDouble(i64vec2);" "f64vec3 int64BitsToDouble(i64vec3);" "f64vec4 int64BitsToDouble(i64vec4);" "float64_t uint64BitsToDouble(uint64_t);" "f64vec2 uint64BitsToDouble(u64vec2);" "f64vec3 uint64BitsToDouble(u64vec3);" "f64vec4 uint64BitsToDouble(u64vec4);" "int64_t packInt2x32(ivec2);" "uint64_t packUint2x32(uvec2);" "ivec2 unpackInt2x32(int64_t);" "uvec2 unpackUint2x32(uint64_t);" "bvec2 lessThan(i64vec2, i64vec2);" "bvec3 lessThan(i64vec3, i64vec3);" "bvec4 lessThan(i64vec4, i64vec4);" "bvec2 lessThan(u64vec2, u64vec2);" "bvec3 lessThan(u64vec3, u64vec3);" "bvec4 lessThan(u64vec4, u64vec4);" "bvec2 lessThanEqual(i64vec2, i64vec2);" "bvec3 lessThanEqual(i64vec3, i64vec3);" "bvec4 lessThanEqual(i64vec4, i64vec4);" "bvec2 lessThanEqual(u64vec2, u64vec2);" "bvec3 lessThanEqual(u64vec3, u64vec3);" "bvec4 lessThanEqual(u64vec4, u64vec4);" "bvec2 greaterThan(i64vec2, i64vec2);" "bvec3 greaterThan(i64vec3, i64vec3);" "bvec4 greaterThan(i64vec4, i64vec4);" "bvec2 greaterThan(u64vec2, u64vec2);" "bvec3 greaterThan(u64vec3, u64vec3);" "bvec4 greaterThan(u64vec4, u64vec4);" "bvec2 greaterThanEqual(i64vec2, i64vec2);" "bvec3 greaterThanEqual(i64vec3, i64vec3);" "bvec4 greaterThanEqual(i64vec4, i64vec4);" "bvec2 greaterThanEqual(u64vec2, u64vec2);" "bvec3 greaterThanEqual(u64vec3, u64vec3);" "bvec4 greaterThanEqual(u64vec4, u64vec4);" "bvec2 equal(i64vec2, i64vec2);" "bvec3 equal(i64vec3, i64vec3);" "bvec4 equal(i64vec4, i64vec4);" "bvec2 equal(u64vec2, u64vec2);" "bvec3 equal(u64vec3, u64vec3);" "bvec4 equal(u64vec4, u64vec4);" "bvec2 notEqual(i64vec2, i64vec2);" "bvec3 notEqual(i64vec3, i64vec3);" "bvec4 notEqual(i64vec4, i64vec4);" "bvec2 notEqual(u64vec2, u64vec2);" "bvec3 notEqual(u64vec3, u64vec3);" "bvec4 notEqual(u64vec4, u64vec4);" "int64_t bitCount(int64_t);" "i64vec2 bitCount(i64vec2);" "i64vec3 bitCount(i64vec3);" "i64vec4 bitCount(i64vec4);" "int64_t bitCount(uint64_t);" "i64vec2 bitCount(u64vec2);" "i64vec3 bitCount(u64vec3);" "i64vec4 bitCount(u64vec4);" "int64_t findLSB(int64_t);" "i64vec2 findLSB(i64vec2);" "i64vec3 findLSB(i64vec3);" "i64vec4 findLSB(i64vec4);" "int64_t findLSB(uint64_t);" "i64vec2 findLSB(u64vec2);" "i64vec3 findLSB(u64vec3);" "i64vec4 findLSB(u64vec4);" "int64_t findMSB(int64_t);" "i64vec2 findMSB(i64vec2);" "i64vec3 findMSB(i64vec3);" "i64vec4 findMSB(i64vec4);" "int64_t findMSB(uint64_t);" "i64vec2 findMSB(u64vec2);" "i64vec3 findMSB(u64vec3);" "i64vec4 findMSB(u64vec4);" "\n" ); } // GL_AMD_shader_trinary_minmax if (profile != EEsProfile && version >= 430) { commonBuiltins.append( "float min3(float, float, float);" "vec2 min3(vec2, vec2, vec2);" "vec3 min3(vec3, vec3, vec3);" "vec4 min3(vec4, vec4, vec4);" "int min3(int, int, int);" "ivec2 min3(ivec2, ivec2, ivec2);" "ivec3 min3(ivec3, ivec3, ivec3);" "ivec4 min3(ivec4, ivec4, ivec4);" "uint min3(uint, uint, uint);" "uvec2 min3(uvec2, uvec2, uvec2);" "uvec3 min3(uvec3, uvec3, uvec3);" "uvec4 min3(uvec4, uvec4, uvec4);" "float max3(float, float, float);" "vec2 max3(vec2, vec2, vec2);" "vec3 max3(vec3, vec3, vec3);" "vec4 max3(vec4, vec4, vec4);" "int max3(int, int, int);" "ivec2 max3(ivec2, ivec2, ivec2);" "ivec3 max3(ivec3, ivec3, ivec3);" "ivec4 max3(ivec4, ivec4, ivec4);" "uint max3(uint, uint, uint);" "uvec2 max3(uvec2, uvec2, uvec2);" "uvec3 max3(uvec3, uvec3, uvec3);" "uvec4 max3(uvec4, uvec4, uvec4);" "float mid3(float, float, float);" "vec2 mid3(vec2, vec2, vec2);" "vec3 mid3(vec3, vec3, vec3);" "vec4 mid3(vec4, vec4, vec4);" "int mid3(int, int, int);" "ivec2 mid3(ivec2, ivec2, ivec2);" "ivec3 mid3(ivec3, ivec3, ivec3);" "ivec4 mid3(ivec4, ivec4, ivec4);" "uint mid3(uint, uint, uint);" "uvec2 mid3(uvec2, uvec2, uvec2);" "uvec3 mid3(uvec3, uvec3, uvec3);" "uvec4 mid3(uvec4, uvec4, uvec4);" "float16_t min3(float16_t, float16_t, float16_t);" "f16vec2 min3(f16vec2, f16vec2, f16vec2);" "f16vec3 min3(f16vec3, f16vec3, f16vec3);" "f16vec4 min3(f16vec4, f16vec4, f16vec4);" "float16_t max3(float16_t, float16_t, float16_t);" "f16vec2 max3(f16vec2, f16vec2, f16vec2);" "f16vec3 max3(f16vec3, f16vec3, f16vec3);" "f16vec4 max3(f16vec4, f16vec4, f16vec4);" "float16_t mid3(float16_t, float16_t, float16_t);" "f16vec2 mid3(f16vec2, f16vec2, f16vec2);" "f16vec3 mid3(f16vec3, f16vec3, f16vec3);" "f16vec4 mid3(f16vec4, f16vec4, f16vec4);" "int16_t min3(int16_t, int16_t, int16_t);" "i16vec2 min3(i16vec2, i16vec2, i16vec2);" "i16vec3 min3(i16vec3, i16vec3, i16vec3);" "i16vec4 min3(i16vec4, i16vec4, i16vec4);" "int16_t max3(int16_t, int16_t, int16_t);" "i16vec2 max3(i16vec2, i16vec2, i16vec2);" "i16vec3 max3(i16vec3, i16vec3, i16vec3);" "i16vec4 max3(i16vec4, i16vec4, i16vec4);" "int16_t mid3(int16_t, int16_t, int16_t);" "i16vec2 mid3(i16vec2, i16vec2, i16vec2);" "i16vec3 mid3(i16vec3, i16vec3, i16vec3);" "i16vec4 mid3(i16vec4, i16vec4, i16vec4);" "uint16_t min3(uint16_t, uint16_t, uint16_t);" "u16vec2 min3(u16vec2, u16vec2, u16vec2);" "u16vec3 min3(u16vec3, u16vec3, u16vec3);" "u16vec4 min3(u16vec4, u16vec4, u16vec4);" "uint16_t max3(uint16_t, uint16_t, uint16_t);" "u16vec2 max3(u16vec2, u16vec2, u16vec2);" "u16vec3 max3(u16vec3, u16vec3, u16vec3);" "u16vec4 max3(u16vec4, u16vec4, u16vec4);" "uint16_t mid3(uint16_t, uint16_t, uint16_t);" "u16vec2 mid3(u16vec2, u16vec2, u16vec2);" "u16vec3 mid3(u16vec3, u16vec3, u16vec3);" "u16vec4 mid3(u16vec4, u16vec4, u16vec4);" "\n" ); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 430)) { commonBuiltins.append( "uint atomicAdd(coherent volatile nontemporal inout uint, uint, int, int, int);" " int atomicAdd(coherent volatile nontemporal inout int, int, int, int, int);" "uint atomicMin(coherent volatile nontemporal inout uint, uint, int, int, int);" " int atomicMin(coherent volatile nontemporal inout int, int, int, int, int);" "uint atomicMax(coherent volatile nontemporal inout uint, uint, int, int, int);" " int atomicMax(coherent volatile nontemporal inout int, int, int, int, int);" "uint atomicAnd(coherent volatile nontemporal inout uint, uint, int, int, int);" " int atomicAnd(coherent volatile nontemporal inout int, int, int, int, int);" "uint atomicOr (coherent volatile nontemporal inout uint, uint, int, int, int);" " int atomicOr (coherent volatile nontemporal inout int, int, int, int, int);" "uint atomicXor(coherent volatile nontemporal inout uint, uint, int, int, int);" " int atomicXor(coherent volatile nontemporal inout int, int, int, int, int);" "uint atomicExchange(coherent volatile nontemporal inout uint, uint, int, int, int);" " int atomicExchange(coherent volatile nontemporal inout int, int, int, int, int);" "uint atomicCompSwap(coherent volatile nontemporal inout uint, uint, uint, int, int, int, int, int);" " int atomicCompSwap(coherent volatile nontemporal inout int, int, int, int, int, int, int, int);" "uint atomicLoad(coherent volatile nontemporal in uint, int, int, int);" " int atomicLoad(coherent volatile nontemporal in int, int, int, int);" "void atomicStore(coherent volatile nontemporal out uint, uint, int, int, int);" "void atomicStore(coherent volatile nontemporal out int, int, int, int, int);" "\n"); } if (profile != EEsProfile && version >= 440) { commonBuiltins.append( "uint64_t atomicMin(coherent volatile nontemporal inout uint64_t, uint64_t);" " int64_t atomicMin(coherent volatile nontemporal inout int64_t, int64_t);" "uint64_t atomicMin(coherent volatile nontemporal inout uint64_t, uint64_t, int, int, int);" " int64_t atomicMin(coherent volatile nontemporal inout int64_t, int64_t, int, int, int);" "float16_t atomicMin(coherent volatile nontemporal inout float16_t, float16_t);" "float16_t atomicMin(coherent volatile nontemporal inout float16_t, float16_t, int, int, int);" " float atomicMin(coherent volatile nontemporal inout float, float);" " float atomicMin(coherent volatile nontemporal inout float, float, int, int, int);" " double atomicMin(coherent volatile nontemporal inout double, double);" " double atomicMin(coherent volatile nontemporal inout double, double, int, int, int);" "uint64_t atomicMax(coherent volatile nontemporal inout uint64_t, uint64_t);" " int64_t atomicMax(coherent volatile nontemporal inout int64_t, int64_t);" "uint64_t atomicMax(coherent volatile nontemporal inout uint64_t, uint64_t, int, int, int);" " int64_t atomicMax(coherent volatile nontemporal inout int64_t, int64_t, int, int, int);" "float16_t atomicMax(coherent volatile nontemporal inout float16_t, float16_t);" "float16_t atomicMax(coherent volatile nontemporal inout float16_t, float16_t, int, int, int);" " float atomicMax(coherent volatile nontemporal inout float, float);" " float atomicMax(coherent volatile nontemporal inout float, float, int, int, int);" " double atomicMax(coherent volatile nontemporal inout double, double);" " double atomicMax(coherent volatile nontemporal inout double, double, int, int, int);" "uint64_t atomicAnd(coherent volatile nontemporal inout uint64_t, uint64_t);" " int64_t atomicAnd(coherent volatile nontemporal inout int64_t, int64_t);" "uint64_t atomicAnd(coherent volatile nontemporal inout uint64_t, uint64_t, int, int, int);" " int64_t atomicAnd(coherent volatile nontemporal inout int64_t, int64_t, int, int, int);" "uint64_t atomicOr (coherent volatile nontemporal inout uint64_t, uint64_t);" " int64_t atomicOr (coherent volatile nontemporal inout int64_t, int64_t);" "uint64_t atomicOr (coherent volatile nontemporal inout uint64_t, uint64_t, int, int, int);" " int64_t atomicOr (coherent volatile nontemporal inout int64_t, int64_t, int, int, int);" "uint64_t atomicXor(coherent volatile nontemporal inout uint64_t, uint64_t);" " int64_t atomicXor(coherent volatile nontemporal inout int64_t, int64_t);" "uint64_t atomicXor(coherent volatile nontemporal inout uint64_t, uint64_t, int, int, int);" " int64_t atomicXor(coherent volatile nontemporal inout int64_t, int64_t, int, int, int);" "uint64_t atomicAdd(coherent volatile nontemporal inout uint64_t, uint64_t);" " int64_t atomicAdd(coherent volatile nontemporal inout int64_t, int64_t);" "uint64_t atomicAdd(coherent volatile nontemporal inout uint64_t, uint64_t, int, int, int);" " int64_t atomicAdd(coherent volatile nontemporal inout int64_t, int64_t, int, int, int);" "float16_t atomicAdd(coherent volatile nontemporal inout float16_t, float16_t);" "float16_t atomicAdd(coherent volatile nontemporal inout float16_t, float16_t, int, int, int);" " float atomicAdd(coherent volatile nontemporal inout float, float);" " float atomicAdd(coherent volatile nontemporal inout float, float, int, int, int);" " double atomicAdd(coherent volatile nontemporal inout double, double);" " double atomicAdd(coherent volatile nontemporal inout double, double, int, int, int);" "uint64_t atomicExchange(coherent volatile nontemporal inout uint64_t, uint64_t);" " int64_t atomicExchange(coherent volatile nontemporal inout int64_t, int64_t);" "uint64_t atomicExchange(coherent volatile nontemporal inout uint64_t, uint64_t, int, int, int);" " int64_t atomicExchange(coherent volatile nontemporal inout int64_t, int64_t, int, int, int);" "float16_t atomicExchange(coherent volatile nontemporal inout float16_t, float16_t);" "float16_t atomicExchange(coherent volatile nontemporal inout float16_t, float16_t, int, int, int);" " float atomicExchange(coherent volatile nontemporal inout float, float);" " float atomicExchange(coherent volatile nontemporal inout float, float, int, int, int);" " double atomicExchange(coherent volatile nontemporal inout double, double);" " double atomicExchange(coherent volatile nontemporal inout double, double, int, int, int);" "uint64_t atomicCompSwap(coherent volatile nontemporal inout uint64_t, uint64_t, uint64_t);" " int64_t atomicCompSwap(coherent volatile nontemporal inout int64_t, int64_t, int64_t);" "uint64_t atomicCompSwap(coherent volatile nontemporal inout uint64_t, uint64_t, uint64_t, int, int, int, int, int);" " int64_t atomicCompSwap(coherent volatile nontemporal inout int64_t, int64_t, int64_t, int, int, int, int, int);" "uint64_t atomicLoad(coherent volatile nontemporal in uint64_t, int, int, int);" " int64_t atomicLoad(coherent volatile nontemporal in int64_t, int, int, int);" "float16_t atomicLoad(coherent volatile nontemporal in float16_t, int, int, int);" " float atomicLoad(coherent volatile nontemporal in float, int, int, int);" " double atomicLoad(coherent volatile nontemporal in double, int, int, int);" "void atomicStore(coherent volatile nontemporal out uint64_t, uint64_t, int, int, int);" "void atomicStore(coherent volatile nontemporal out int64_t, int64_t, int, int, int);" "void atomicStore(coherent volatile nontemporal out float16_t, float16_t, int, int, int);" "void atomicStore(coherent volatile nontemporal out float, float, int, int, int);" "void atomicStore(coherent volatile nontemporal out double, double, int, int, int);" "\n"); } // NV_shader_atomic_fp16_vector if (profile != EEsProfile && version >= 430) { commonBuiltins.append( "f16vec2 atomicAdd(coherent volatile nontemporal inout f16vec2, f16vec2);" "f16vec4 atomicAdd(coherent volatile nontemporal inout f16vec4, f16vec4);" "f16vec2 atomicMin(coherent volatile nontemporal inout f16vec2, f16vec2);" "f16vec4 atomicMin(coherent volatile nontemporal inout f16vec4, f16vec4);" "f16vec2 atomicMax(coherent volatile nontemporal inout f16vec2, f16vec2);" "f16vec4 atomicMax(coherent volatile nontemporal inout f16vec4, f16vec4);" "f16vec2 atomicExchange(coherent volatile nontemporal inout f16vec2, f16vec2);" "f16vec4 atomicExchange(coherent volatile nontemporal inout f16vec4, f16vec4);" "\n"); } if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 150)) { // GL_ARB_shader_bit_encoding commonBuiltins.append( "int floatBitsToInt(highp float value);" "ivec2 floatBitsToInt(highp vec2 value);" "ivec3 floatBitsToInt(highp vec3 value);" "ivec4 floatBitsToInt(highp vec4 value);" "uint floatBitsToUint(highp float value);" "uvec2 floatBitsToUint(highp vec2 value);" "uvec3 floatBitsToUint(highp vec3 value);" "uvec4 floatBitsToUint(highp vec4 value);" "float intBitsToFloat(highp int value);" "vec2 intBitsToFloat(highp ivec2 value);" "vec3 intBitsToFloat(highp ivec3 value);" "vec4 intBitsToFloat(highp ivec4 value);" "float uintBitsToFloat(highp uint value);" "vec2 uintBitsToFloat(highp uvec2 value);" "vec3 uintBitsToFloat(highp uvec3 value);" "vec4 uintBitsToFloat(highp uvec4 value);" "\n"); } if ((profile != EEsProfile && version >= 150) || // GL_NV_gpu_shader5 (profile == EEsProfile && version >= 310)) { // GL_OES_gpu_shader5 commonBuiltins.append( "float fma(float, float, float );" "vec2 fma(vec2, vec2, vec2 );" "vec3 fma(vec3, vec3, vec3 );" "vec4 fma(vec4, vec4, vec4 );" "\n"); } if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64 commonBuiltins.append( "double fma(double, double, double);" "dvec2 fma(dvec2, dvec2, dvec2 );" "dvec3 fma(dvec3, dvec3, dvec3 );" "dvec4 fma(dvec4, dvec4, dvec4 );" "\n"); } if (profile == EEsProfile && version >= 310) { // ARB_gpu_shader_fp64 commonBuiltins.append( "float64_t fma(float64_t, float64_t, float64_t);" "f64vec2 fma(f64vec2, f64vec2, f64vec2 );" "f64vec3 fma(f64vec3, f64vec3, f64vec3 );" "f64vec4 fma(f64vec4, f64vec4, f64vec4 );" "\n"); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 150)) { // GL_NV_gpu_shader5 commonBuiltins.append( "float frexp(highp float, out highp int);" "vec2 frexp(highp vec2, out highp ivec2);" "vec3 frexp(highp vec3, out highp ivec3);" "vec4 frexp(highp vec4, out highp ivec4);" "float ldexp(highp float, highp int);" "vec2 ldexp(highp vec2, highp ivec2);" "vec3 ldexp(highp vec3, highp ivec3);" "vec4 ldexp(highp vec4, highp ivec4);" "\n"); } if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64 commonBuiltins.append( "double frexp(double, out int);" "dvec2 frexp( dvec2, out ivec2);" "dvec3 frexp( dvec3, out ivec3);" "dvec4 frexp( dvec4, out ivec4);" "double ldexp(double, int);" "dvec2 ldexp( dvec2, ivec2);" "dvec3 ldexp( dvec3, ivec3);" "dvec4 ldexp( dvec4, ivec4);" "double packDouble2x32(uvec2);" "uvec2 unpackDouble2x32(double);" "\n"); } if (profile == EEsProfile && version >= 310) { // ARB_gpu_shader_fp64 commonBuiltins.append( "float64_t frexp(float64_t, out int);" "f64vec2 frexp( f64vec2, out ivec2);" "f64vec3 frexp( f64vec3, out ivec3);" "f64vec4 frexp( f64vec4, out ivec4);" "float64_t ldexp(float64_t, int);" "f64vec2 ldexp( f64vec2, ivec2);" "f64vec3 ldexp( f64vec3, ivec3);" "f64vec4 ldexp( f64vec4, ivec4);" "\n"); } if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 150)) { commonBuiltins.append( "highp uint packUnorm2x16(vec2);" "vec2 unpackUnorm2x16(highp uint);" "\n"); } if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 150)) { commonBuiltins.append( "highp uint packSnorm2x16(vec2);" " vec2 unpackSnorm2x16(highp uint);" "highp uint packHalf2x16(vec2);" "\n"); } if (profile == EEsProfile && version >= 300) { commonBuiltins.append( "mediump vec2 unpackHalf2x16(highp uint);" "\n"); } else if (profile != EEsProfile && version >= 150) { commonBuiltins.append( " vec2 unpackHalf2x16(highp uint);" "\n"); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 150)) { commonBuiltins.append( "highp uint packSnorm4x8(vec4);" "highp uint packUnorm4x8(vec4);" "\n"); } if (profile == EEsProfile && version >= 310) { commonBuiltins.append( "mediump vec4 unpackSnorm4x8(highp uint);" "mediump vec4 unpackUnorm4x8(highp uint);" "\n"); } else if (profile != EEsProfile && version >= 150) { commonBuiltins.append( "vec4 unpackSnorm4x8(highp uint);" "vec4 unpackUnorm4x8(highp uint);" "\n"); } // // Matrix Functions. // commonBuiltins.append( "mat2 matrixCompMult(mat2 x, mat2 y);" "mat3 matrixCompMult(mat3 x, mat3 y);" "mat4 matrixCompMult(mat4 x, mat4 y);" "\n"); // 120 is correct for both ES and desktop if (version >= 120) { commonBuiltins.append( "mat2 outerProduct(vec2 c, vec2 r);" "mat3 outerProduct(vec3 c, vec3 r);" "mat4 outerProduct(vec4 c, vec4 r);" "mat2x3 outerProduct(vec3 c, vec2 r);" "mat3x2 outerProduct(vec2 c, vec3 r);" "mat2x4 outerProduct(vec4 c, vec2 r);" "mat4x2 outerProduct(vec2 c, vec4 r);" "mat3x4 outerProduct(vec4 c, vec3 r);" "mat4x3 outerProduct(vec3 c, vec4 r);" "mat2 transpose(mat2 m);" "mat3 transpose(mat3 m);" "mat4 transpose(mat4 m);" "mat2x3 transpose(mat3x2 m);" "mat3x2 transpose(mat2x3 m);" "mat2x4 transpose(mat4x2 m);" "mat4x2 transpose(mat2x4 m);" "mat3x4 transpose(mat4x3 m);" "mat4x3 transpose(mat3x4 m);" "mat2x3 matrixCompMult(mat2x3, mat2x3);" "mat2x4 matrixCompMult(mat2x4, mat2x4);" "mat3x2 matrixCompMult(mat3x2, mat3x2);" "mat3x4 matrixCompMult(mat3x4, mat3x4);" "mat4x2 matrixCompMult(mat4x2, mat4x2);" "mat4x3 matrixCompMult(mat4x3, mat4x3);" "\n"); // 150 is correct for both ES and desktop if (version >= 150) { commonBuiltins.append( "float determinant(mat2 m);" "float determinant(mat3 m);" "float determinant(mat4 m);" "mat2 inverse(mat2 m);" "mat3 inverse(mat3 m);" "mat4 inverse(mat4 m);" "\n"); } } // // Original-style texture functions existing in all stages. // (Per-stage functions below.) // if ((profile == EEsProfile && version == 100) || profile == ECompatibilityProfile || (profile == ECoreProfile && version < 420) || profile == ENoProfile) { if (spvVersion.spv == 0) { commonBuiltins.append( "vec4 texture2D(sampler2D, vec2);" "vec4 texture2DProj(sampler2D, vec3);" "vec4 texture2DProj(sampler2D, vec4);" "vec4 texture3D(sampler3D, vec3);" // OES_texture_3D, but caught by keyword check "vec4 texture3DProj(sampler3D, vec4);" // OES_texture_3D, but caught by keyword check "vec4 textureCube(samplerCube, vec3);" "\n"); } } if ( profile == ECompatibilityProfile || (profile == ECoreProfile && version < 420) || profile == ENoProfile) { if (spvVersion.spv == 0) { commonBuiltins.append( "vec4 texture1D(sampler1D, float);" "vec4 texture1DProj(sampler1D, vec2);" "vec4 texture1DProj(sampler1D, vec4);" "vec4 shadow1D(sampler1DShadow, vec3);" "vec4 shadow2D(sampler2DShadow, vec3);" "vec4 shadow1DProj(sampler1DShadow, vec4);" "vec4 shadow2DProj(sampler2DShadow, vec4);" "vec4 texture2DRect(sampler2DRect, vec2);" // GL_ARB_texture_rectangle, caught by keyword check "vec4 texture2DRectProj(sampler2DRect, vec3);" // GL_ARB_texture_rectangle, caught by keyword check "vec4 texture2DRectProj(sampler2DRect, vec4);" // GL_ARB_texture_rectangle, caught by keyword check "vec4 shadow2DRect(sampler2DRectShadow, vec3);" // GL_ARB_texture_rectangle, caught by keyword check "vec4 shadow2DRectProj(sampler2DRectShadow, vec4);" // GL_ARB_texture_rectangle, caught by keyword check "vec4 texture1DArray(sampler1DArray, vec2);" // GL_EXT_texture_array "vec4 texture2DArray(sampler2DArray, vec3);" // GL_EXT_texture_array "vec4 shadow1DArray(sampler1DArrayShadow, vec3);" // GL_EXT_texture_array "vec4 shadow2DArray(sampler2DArrayShadow, vec4);" // GL_EXT_texture_array "vec4 texture1DArray(sampler1DArray, vec2, float);" // GL_EXT_texture_array "vec4 texture2DArray(sampler2DArray, vec3, float);" // GL_EXT_texture_array "vec4 shadow1DArray(sampler1DArrayShadow, vec3, float);" // GL_EXT_texture_array "vec4 texture1DArrayLod(sampler1DArray, vec2, float);" // GL_EXT_texture_array "vec4 texture2DArrayLod(sampler2DArray, vec3, float);" // GL_EXT_texture_array "vec4 shadow1DArrayLod(sampler1DArrayShadow, vec3, float);" // GL_EXT_texture_array "\n"); } } if (profile == EEsProfile) { if (spvVersion.spv == 0) { if (version < 300) { commonBuiltins.append( "vec4 texture2D(samplerExternalOES, vec2 coord);" // GL_OES_EGL_image_external "vec4 texture2DProj(samplerExternalOES, vec3);" // GL_OES_EGL_image_external "vec4 texture2DProj(samplerExternalOES, vec4);" // GL_OES_EGL_image_external "\n"); } else { commonBuiltins.append( "highp ivec2 textureSize(samplerExternalOES, int lod);" // GL_OES_EGL_image_external_essl3 "vec4 texture(samplerExternalOES, vec2);" // GL_OES_EGL_image_external_essl3 "vec4 texture(samplerExternalOES, vec2, float bias);" // GL_OES_EGL_image_external_essl3 "vec4 textureProj(samplerExternalOES, vec3);" // GL_OES_EGL_image_external_essl3 "vec4 textureProj(samplerExternalOES, vec3, float bias);" // GL_OES_EGL_image_external_essl3 "vec4 textureProj(samplerExternalOES, vec4);" // GL_OES_EGL_image_external_essl3 "vec4 textureProj(samplerExternalOES, vec4, float bias);" // GL_OES_EGL_image_external_essl3 "vec4 texelFetch(samplerExternalOES, ivec2, int lod);" // GL_OES_EGL_image_external_essl3 "\n"); } commonBuiltins.append( "highp ivec2 textureSize(__samplerExternal2DY2YEXT, int lod);" // GL_EXT_YUV_target "vec4 texture(__samplerExternal2DY2YEXT, vec2);" // GL_EXT_YUV_target "vec4 texture(__samplerExternal2DY2YEXT, vec2, float bias);" // GL_EXT_YUV_target "vec4 textureProj(__samplerExternal2DY2YEXT, vec3);" // GL_EXT_YUV_target "vec4 textureProj(__samplerExternal2DY2YEXT, vec3, float bias);" // GL_EXT_YUV_target "vec4 textureProj(__samplerExternal2DY2YEXT, vec4);" // GL_EXT_YUV_target "vec4 textureProj(__samplerExternal2DY2YEXT, vec4, float bias);" // GL_EXT_YUV_target "vec4 texelFetch(__samplerExternal2DY2YEXT sampler, ivec2, int lod);" // GL_EXT_YUV_target "\n"); commonBuiltins.append( "vec4 texture2DGradEXT(sampler2D, vec2, vec2, vec2);" // GL_EXT_shader_texture_lod "vec4 texture2DProjGradEXT(sampler2D, vec3, vec2, vec2);" // GL_EXT_shader_texture_lod "vec4 texture2DProjGradEXT(sampler2D, vec4, vec2, vec2);" // GL_EXT_shader_texture_lod "vec4 textureCubeGradEXT(samplerCube, vec3, vec3, vec3);" // GL_EXT_shader_texture_lod "float shadow2DEXT(sampler2DShadow, vec3);" // GL_EXT_shadow_samplers "float shadow2DProjEXT(sampler2DShadow, vec4);" // GL_EXT_shadow_samplers "\n"); } } // // Noise functions. // if (spvVersion.spv == 0 && profile != EEsProfile) { commonBuiltins.append( "float noise1(float x);" "float noise1(vec2 x);" "float noise1(vec3 x);" "float noise1(vec4 x);" "vec2 noise2(float x);" "vec2 noise2(vec2 x);" "vec2 noise2(vec3 x);" "vec2 noise2(vec4 x);" "vec3 noise3(float x);" "vec3 noise3(vec2 x);" "vec3 noise3(vec3 x);" "vec3 noise3(vec4 x);" "vec4 noise4(float x);" "vec4 noise4(vec2 x);" "vec4 noise4(vec3 x);" "vec4 noise4(vec4 x);" "\n"); } if (spvVersion.vulkan == 0) { // // Atomic counter functions. // if ((profile != EEsProfile && version >= 300) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( "uint atomicCounterIncrement(atomic_uint);" "uint atomicCounterDecrement(atomic_uint);" "uint atomicCounter(atomic_uint);" "\n"); } if (profile != EEsProfile && version == 450) { commonBuiltins.append( "uint atomicCounterAddARB(atomic_uint, uint);" "uint atomicCounterSubtractARB(atomic_uint, uint);" "uint atomicCounterMinARB(atomic_uint, uint);" "uint atomicCounterMaxARB(atomic_uint, uint);" "uint atomicCounterAndARB(atomic_uint, uint);" "uint atomicCounterOrARB(atomic_uint, uint);" "uint atomicCounterXorARB(atomic_uint, uint);" "uint atomicCounterExchangeARB(atomic_uint, uint);" "uint atomicCounterCompSwapARB(atomic_uint, uint, uint);" "\n"); } if (profile != EEsProfile && version >= 460) { commonBuiltins.append( "uint atomicCounterAdd(atomic_uint, uint);" "uint atomicCounterSubtract(atomic_uint, uint);" "uint atomicCounterMin(atomic_uint, uint);" "uint atomicCounterMax(atomic_uint, uint);" "uint atomicCounterAnd(atomic_uint, uint);" "uint atomicCounterOr(atomic_uint, uint);" "uint atomicCounterXor(atomic_uint, uint);" "uint atomicCounterExchange(atomic_uint, uint);" "uint atomicCounterCompSwap(atomic_uint, uint, uint);" "\n"); } } else if (spvVersion.vulkanRelaxed) { // // Atomic counter functions act as aliases to normal atomic functions. // replace definitions to take 'volatile coherent nontemporal uint' instead of 'atomic_uint' // and map to equivalent non-counter atomic op // if ((profile != EEsProfile && version >= 300) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( "uint atomicCounterIncrement(volatile coherent nontemporal uint);" "uint atomicCounterDecrement(volatile coherent nontemporal uint);" "uint atomicCounter(volatile coherent nontemporal uint);" "\n"); } if (profile != EEsProfile && version >= 460) { commonBuiltins.append( "uint atomicCounterAdd(volatile coherent nontemporal uint, uint);" "uint atomicCounterSubtract(volatile coherent nontemporal uint, uint);" "uint atomicCounterMin(volatile coherent nontemporal uint, uint);" "uint atomicCounterMax(volatile coherent nontemporal uint, uint);" "uint atomicCounterAnd(volatile coherent nontemporal uint, uint);" "uint atomicCounterOr(volatile coherent nontemporal uint, uint);" "uint atomicCounterXor(volatile coherent nontemporal uint, uint);" "uint atomicCounterExchange(volatile coherent nontemporal uint, uint);" "uint atomicCounterCompSwap(volatile coherent nontemporal uint, uint, uint);" "\n"); } } // Bitfield if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 150)) { // ARB_gpu_shader5/NV_gpu_shader5 commonBuiltins.append( " int bitfieldExtract( int, int, int);" "ivec2 bitfieldExtract(ivec2, int, int);" "ivec3 bitfieldExtract(ivec3, int, int);" "ivec4 bitfieldExtract(ivec4, int, int);" " uint bitfieldExtract( uint, int, int);" "uvec2 bitfieldExtract(uvec2, int, int);" "uvec3 bitfieldExtract(uvec3, int, int);" "uvec4 bitfieldExtract(uvec4, int, int);" " int bitfieldInsert( int base, int, int, int);" "ivec2 bitfieldInsert(ivec2 base, ivec2, int, int);" "ivec3 bitfieldInsert(ivec3 base, ivec3, int, int);" "ivec4 bitfieldInsert(ivec4 base, ivec4, int, int);" " uint bitfieldInsert( uint base, uint, int, int);" "uvec2 bitfieldInsert(uvec2 base, uvec2, int, int);" "uvec3 bitfieldInsert(uvec3 base, uvec3, int, int);" "uvec4 bitfieldInsert(uvec4 base, uvec4, int, int);" "\n"); } if (profile != EEsProfile && version >= 150) { //GL_ARB_gpu_shader5/GL_NV_gpu_shader5 commonBuiltins.append( " int findLSB( int);" "ivec2 findLSB(ivec2);" "ivec3 findLSB(ivec3);" "ivec4 findLSB(ivec4);" " int findLSB( uint);" "ivec2 findLSB(uvec2);" "ivec3 findLSB(uvec3);" "ivec4 findLSB(uvec4);" "\n"); } else if (profile == EEsProfile && version >= 310) { commonBuiltins.append( "lowp int findLSB( int);" "lowp ivec2 findLSB(ivec2);" "lowp ivec3 findLSB(ivec3);" "lowp ivec4 findLSB(ivec4);" "lowp int findLSB( uint);" "lowp ivec2 findLSB(uvec2);" "lowp ivec3 findLSB(uvec3);" "lowp ivec4 findLSB(uvec4);" "\n"); } if (profile != EEsProfile && version >= 150) { //GL_ARB_gpu_shader5/GL_NV_gpu_shader5 commonBuiltins.append( " int bitCount( int);" "ivec2 bitCount(ivec2);" "ivec3 bitCount(ivec3);" "ivec4 bitCount(ivec4);" " int bitCount( uint);" "ivec2 bitCount(uvec2);" "ivec3 bitCount(uvec3);" "ivec4 bitCount(uvec4);" " int findMSB(highp int);" "ivec2 findMSB(highp ivec2);" "ivec3 findMSB(highp ivec3);" "ivec4 findMSB(highp ivec4);" " int findMSB(highp uint);" "ivec2 findMSB(highp uvec2);" "ivec3 findMSB(highp uvec3);" "ivec4 findMSB(highp uvec4);" "\n"); } if (profile != EEsProfile && version >= 150 && version < 450) { //GL_NV_gpu_shader5 commonBuiltins.append( "int64_t packInt2x32(ivec2);" "uint64_t packUint2x32(uvec2);" "ivec2 unpackInt2x32(int64_t);" "uvec2 unpackUint2x32(uint64_t);" "uint packFloat2x16(f16vec2);" "f16vec2 unpackFloat2x16(uint);" "int64_t doubleBitsToInt64(double);" "i64vec2 doubleBitsToInt64(dvec2);" "i64vec3 doubleBitsToInt64(dvec3);" "i64vec4 doubleBitsToInt64(dvec4);" "uint64_t doubleBitsToUint64(double);" "u64vec2 doubleBitsToUint64(dvec2);" "u64vec3 doubleBitsToUint64(dvec3);" "u64vec4 doubleBitsToUint64(dvec4);" "double int64BitsToDouble(int64_t);" "dvec2 int64BitsToDouble(i64vec2);" "dvec3 int64BitsToDouble(i64vec3);" "dvec4 int64BitsToDouble(i64vec4);" "double uint64BitsToDouble(uint64_t);" "dvec2 uint64BitsToDouble(u64vec2);" "dvec3 uint64BitsToDouble(u64vec3);" "dvec4 uint64BitsToDouble(u64vec4);" // Modifications to Vector Relational Functions // Introduction of explicitly sized types "bvec2 lessThan(i64vec2, i64vec2);" "bvec3 lessThan(i64vec3, i64vec3);" "bvec4 lessThan(i64vec4, i64vec4);" "bvec2 lessThan(u64vec2, u64vec2);" "bvec3 lessThan(u64vec3, u64vec3);" "bvec4 lessThan(u64vec4, u64vec4);" "bvec2 lessThanEqual(i64vec2, i64vec2);" "bvec3 lessThanEqual(i64vec3, i64vec3);" "bvec4 lessThanEqual(i64vec4, i64vec4);" "bvec2 lessThanEqual(u64vec2, u64vec2);" "bvec3 lessThanEqual(u64vec3, u64vec3);" "bvec4 lessThanEqual(u64vec4, u64vec4);" "bvec2 greaterThan(i64vec2, i64vec2);" "bvec3 greaterThan(i64vec3, i64vec3);" "bvec4 greaterThan(i64vec4, i64vec4);" "bvec2 greaterThan(u64vec2, u64vec2);" "bvec3 greaterThan(u64vec3, u64vec3);" "bvec4 greaterThan(u64vec4, u64vec4);" "bvec2 greaterThanEqual(i64vec2, i64vec2);" "bvec3 greaterThanEqual(i64vec3, i64vec3);" "bvec4 greaterThanEqual(i64vec4, i64vec4);" "bvec2 greaterThanEqual(u64vec2, u64vec2);" "bvec3 greaterThanEqual(u64vec3, u64vec3);" "bvec4 greaterThanEqual(u64vec4, u64vec4);" "bvec2 equal(i64vec2, i64vec2);" "bvec3 equal(i64vec3, i64vec3);" "bvec4 equal(i64vec4, i64vec4);" "bvec2 equal(u64vec2, u64vec2);" "bvec3 equal(u64vec3, u64vec3);" "bvec4 equal(u64vec4, u64vec4);" "bvec2 notEqual(i64vec2, i64vec2);" "bvec3 notEqual(i64vec3, i64vec3);" "bvec4 notEqual(i64vec4, i64vec4);" "bvec2 notEqual(u64vec2, u64vec2);" "bvec3 notEqual(u64vec3, u64vec3);" "bvec4 notEqual(u64vec4, u64vec4);" "bvec2 lessThan(f16vec2, f16vec2);" "bvec3 lessThan(f16vec3, f16vec3);" "bvec4 lessThan(f16vec4, f16vec4);" "bvec2 lessThanEqual(f16vec2, f16vec2);" "bvec3 lessThanEqual(f16vec3, f16vec3);" "bvec4 lessThanEqual(f16vec4, f16vec4);" "bvec2 greaterThan(f16vec2, f16vec2);" "bvec3 greaterThan(f16vec3, f16vec3);" "bvec4 greaterThan(f16vec4, f16vec4);" "bvec2 greaterThanEqual(f16vec2, f16vec2);" "bvec3 greaterThanEqual(f16vec3, f16vec3);" "bvec4 greaterThanEqual(f16vec4, f16vec4);" "bvec2 equal(f16vec2, f16vec2);" "bvec3 equal(f16vec3, f16vec3);" "bvec4 equal(f16vec4, f16vec4);" "bvec2 notEqual(f16vec2, f16vec2);" "bvec3 notEqual(f16vec3, f16vec3);" "bvec4 notEqual(f16vec4, f16vec4);" // Dependency on GL_ARB_gpu_shader_fp64 "bvec2 lessThan(dvec2, dvec2);" "bvec3 lessThan(dvec3, dvec3);" "bvec4 lessThan(dvec4, dvec4);" "bvec2 lessThanEqual(dvec2, dvec2);" "bvec3 lessThanEqual(dvec3, dvec3);" "bvec4 lessThanEqual(dvec4, dvec4);" "bvec2 greaterThan(dvec2, dvec2);" "bvec3 greaterThan(dvec3, dvec3);" "bvec4 greaterThan(dvec4, dvec4);" "bvec2 greaterThanEqual(dvec2, dvec2);" "bvec3 greaterThanEqual(dvec3, dvec3);" "bvec4 greaterThanEqual(dvec4, dvec4);" "bvec2 equal(dvec2, dvec2);" "bvec3 equal(dvec3, dvec3);" "bvec4 equal(dvec4, dvec4);" "bvec2 notEqual(dvec2, dvec2);" "bvec3 notEqual(dvec3, dvec3);" "bvec4 notEqual(dvec4, dvec4);" "\n"); } if (profile != EEsProfile && version >= 150) { commonBuiltins.append( "bool anyThreadNV(bool);" "bool allThreadsNV(bool);" "bool allThreadsEqualNV(bool);" "\n"); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 150)) { // NV_gpu_shader5 commonBuiltins.append( " uint uaddCarry(highp uint, highp uint, out lowp uint carry);" "uvec2 uaddCarry(highp uvec2, highp uvec2, out lowp uvec2 carry);" "uvec3 uaddCarry(highp uvec3, highp uvec3, out lowp uvec3 carry);" "uvec4 uaddCarry(highp uvec4, highp uvec4, out lowp uvec4 carry);" " uint usubBorrow(highp uint, highp uint, out lowp uint borrow);" "uvec2 usubBorrow(highp uvec2, highp uvec2, out lowp uvec2 borrow);" "uvec3 usubBorrow(highp uvec3, highp uvec3, out lowp uvec3 borrow);" "uvec4 usubBorrow(highp uvec4, highp uvec4, out lowp uvec4 borrow);" "void umulExtended(highp uint, highp uint, out highp uint, out highp uint lsb);" "void umulExtended(highp uvec2, highp uvec2, out highp uvec2, out highp uvec2 lsb);" "void umulExtended(highp uvec3, highp uvec3, out highp uvec3, out highp uvec3 lsb);" "void umulExtended(highp uvec4, highp uvec4, out highp uvec4, out highp uvec4 lsb);" "void imulExtended(highp int, highp int, out highp int, out highp int lsb);" "void imulExtended(highp ivec2, highp ivec2, out highp ivec2, out highp ivec2 lsb);" "void imulExtended(highp ivec3, highp ivec3, out highp ivec3, out highp ivec3 lsb);" "void imulExtended(highp ivec4, highp ivec4, out highp ivec4, out highp ivec4 lsb);" " int bitfieldReverse(highp int);" "ivec2 bitfieldReverse(highp ivec2);" "ivec3 bitfieldReverse(highp ivec3);" "ivec4 bitfieldReverse(highp ivec4);" " uint bitfieldReverse(highp uint);" "uvec2 bitfieldReverse(highp uvec2);" "uvec3 bitfieldReverse(highp uvec3);" "uvec4 bitfieldReverse(highp uvec4);" "\n"); } if (profile == EEsProfile && version >= 310) { commonBuiltins.append( "lowp int bitCount( int);" "lowp ivec2 bitCount(ivec2);" "lowp ivec3 bitCount(ivec3);" "lowp ivec4 bitCount(ivec4);" "lowp int bitCount( uint);" "lowp ivec2 bitCount(uvec2);" "lowp ivec3 bitCount(uvec3);" "lowp ivec4 bitCount(uvec4);" "lowp int findMSB(highp int);" "lowp ivec2 findMSB(highp ivec2);" "lowp ivec3 findMSB(highp ivec3);" "lowp ivec4 findMSB(highp ivec4);" "lowp int findMSB(highp uint);" "lowp ivec2 findMSB(highp uvec2);" "lowp ivec3 findMSB(highp uvec3);" "lowp ivec4 findMSB(highp uvec4);" "\n"); } // GL_ARB_shader_ballot if (profile != EEsProfile && version >= 450) { commonBuiltins.append( "uint64_t ballotARB(bool);" "float readInvocationARB(float, uint);" "vec2 readInvocationARB(vec2, uint);" "vec3 readInvocationARB(vec3, uint);" "vec4 readInvocationARB(vec4, uint);" "int readInvocationARB(int, uint);" "ivec2 readInvocationARB(ivec2, uint);" "ivec3 readInvocationARB(ivec3, uint);" "ivec4 readInvocationARB(ivec4, uint);" "uint readInvocationARB(uint, uint);" "uvec2 readInvocationARB(uvec2, uint);" "uvec3 readInvocationARB(uvec3, uint);" "uvec4 readInvocationARB(uvec4, uint);" "float readFirstInvocationARB(float);" "vec2 readFirstInvocationARB(vec2);" "vec3 readFirstInvocationARB(vec3);" "vec4 readFirstInvocationARB(vec4);" "int readFirstInvocationARB(int);" "ivec2 readFirstInvocationARB(ivec2);" "ivec3 readFirstInvocationARB(ivec3);" "ivec4 readFirstInvocationARB(ivec4);" "uint readFirstInvocationARB(uint);" "uvec2 readFirstInvocationARB(uvec2);" "uvec3 readFirstInvocationARB(uvec3);" "uvec4 readFirstInvocationARB(uvec4);" "\n"); } // GL_ARB_shader_group_vote if (profile != EEsProfile && version >= 430) { commonBuiltins.append( "bool anyInvocationARB(bool);" "bool allInvocationsARB(bool);" "bool allInvocationsEqualARB(bool);" "\n"); } // GL_EXT_integer_dot_product if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 450)) { commonBuiltins.append( "uint dotEXT(uvec2 a, uvec2 b);" "int dotEXT(ivec2 a, ivec2 b);" "int dotEXT(ivec2 a, uvec2 b);" "int dotEXT(uvec2 a, ivec2 b);" "uint dotEXT(uvec3 a, uvec3 b);" "int dotEXT(ivec3 a, ivec3 b);" "int dotEXT(ivec3 a, uvec3 b);" "int dotEXT(uvec3 a, ivec3 b);" "uint dotEXT(uvec4 a, uvec4 b);" "int dotEXT(ivec4 a, ivec4 b);" "int dotEXT(ivec4 a, uvec4 b);" "int dotEXT(uvec4 a, ivec4 b);" "uint dotPacked4x8EXT(uint a, uint b);" "int dotPacked4x8EXT(int a, uint b);" "int dotPacked4x8EXT(uint a, int b);" "int dotPacked4x8EXT(int a, int b);" "uint dotEXT(u8vec2 a, u8vec2 b);" "int dotEXT(i8vec2 a, u8vec2 b);" "int dotEXT(u8vec2 a, i8vec2 b);" "int dotEXT(i8vec2 a, i8vec2 b);" "uint dotEXT(u8vec3 a, u8vec3 b);" "int dotEXT(i8vec3 a, u8vec3 b);" "int dotEXT(u8vec3 a, i8vec3 b);" "int dotEXT(i8vec3 a, i8vec3 b);" "uint dotEXT(u8vec4 a, u8vec4 b);" "int dotEXT(i8vec4 a, u8vec4 b);" "int dotEXT(u8vec4 a, i8vec4 b);" "int dotEXT(i8vec4 a, i8vec4 b);" "uint dotEXT(u16vec2 a, u16vec2 b);" "int dotEXT(i16vec2 a, u16vec2 b);" "int dotEXT(u16vec2 a, i16vec2 b);" "int dotEXT(i16vec2 a, i16vec2 b);" "uint dotEXT(u16vec3 a, u16vec3 b);" "int dotEXT(i16vec3 a, u16vec3 b);" "int dotEXT(u16vec3 a, i16vec3 b);" "int dotEXT(i16vec3 a, i16vec3 b);" "uint dotEXT(u16vec4 a, u16vec4 b);" "int dotEXT(i16vec4 a, u16vec4 b);" "int dotEXT(u16vec4 a, i16vec4 b);" "int dotEXT(i16vec4 a, i16vec4 b);" "uint64_t dotEXT(u64vec2 a, u64vec2 b);" "int64_t dotEXT(i64vec2 a, u64vec2 b);" "int64_t dotEXT(u64vec2 a, i64vec2 b);" "int64_t dotEXT(i64vec2 a, i64vec2 b);" "uint64_t dotEXT(u64vec3 a, u64vec3 b);" "int64_t dotEXT(i64vec3 a, u64vec3 b);" "int64_t dotEXT(u64vec3 a, i64vec3 b);" "int64_t dotEXT(i64vec3 a, i64vec3 b);" "uint64_t dotEXT(u64vec4 a, u64vec4 b);" "int64_t dotEXT(i64vec4 a, u64vec4 b);" "int64_t dotEXT(u64vec4 a, i64vec4 b);" "int64_t dotEXT(i64vec4 a, i64vec4 b);" "uint dotAccSatEXT(uvec2 a, uvec2 b, uint c);" "int dotAccSatEXT(ivec2 a, uvec2 b, int c);" "int dotAccSatEXT(uvec2 a, ivec2 b, int c);" "int dotAccSatEXT(ivec2 a, ivec2 b, int c);" "uint dotAccSatEXT(uvec3 a, uvec3 b, uint c);" "int dotAccSatEXT(ivec3 a, uvec3 b, int c);" "int dotAccSatEXT(uvec3 a, ivec3 b, int c);" "int dotAccSatEXT(ivec3 a, ivec3 b, int c);" "uint dotAccSatEXT(uvec4 a, uvec4 b, uint c);" "int dotAccSatEXT(ivec4 a, uvec4 b, int c);" "int dotAccSatEXT(uvec4 a, ivec4 b, int c);" "int dotAccSatEXT(ivec4 a, ivec4 b, int c);" "uint dotPacked4x8AccSatEXT(uint a, uint b, uint c);" "int dotPacked4x8AccSatEXT(int a, uint b, int c);" "int dotPacked4x8AccSatEXT(uint a, int b, int c);" "int dotPacked4x8AccSatEXT(int a, int b, int c);" "uint dotAccSatEXT(u8vec2 a, u8vec2 b, uint c);" "int dotAccSatEXT(i8vec2 a, u8vec2 b, int c);" "int dotAccSatEXT(u8vec2 a, i8vec2 b, int c);" "int dotAccSatEXT(i8vec2 a, i8vec2 b, int c);" "uint dotAccSatEXT(u8vec3 a, u8vec3 b, uint c);" "int dotAccSatEXT(i8vec3 a, u8vec3 b, int c);" "int dotAccSatEXT(u8vec3 a, i8vec3 b, int c);" "int dotAccSatEXT(i8vec3 a, i8vec3 b, int c);" "uint dotAccSatEXT(u8vec4 a, u8vec4 b, uint c);" "int dotAccSatEXT(i8vec4 a, u8vec4 b, int c);" "int dotAccSatEXT(u8vec4 a, i8vec4 b, int c);" "int dotAccSatEXT(i8vec4 a, i8vec4 b, int c);" "uint dotAccSatEXT(u16vec2 a, u16vec2 b, uint c);" "int dotAccSatEXT(i16vec2 a, u16vec2 b, int c);" "int dotAccSatEXT(u16vec2 a, i16vec2 b, int c);" "int dotAccSatEXT(i16vec2 a, i16vec2 b, int c);" "uint dotAccSatEXT(u16vec3 a, u16vec3 b, uint c);" "int dotAccSatEXT(i16vec3 a, u16vec3 b, int c);" "int dotAccSatEXT(u16vec3 a, i16vec3 b, int c);" "int dotAccSatEXT(i16vec3 a, i16vec3 b, int c);" "uint dotAccSatEXT(u16vec4 a, u16vec4 b, uint c);" "int dotAccSatEXT(i16vec4 a, u16vec4 b, int c);" "int dotAccSatEXT(u16vec4 a, i16vec4 b, int c);" "int dotAccSatEXT(i16vec4 a, i16vec4 b, int c);" "uint64_t dotAccSatEXT(u64vec2 a, u64vec2 b, uint64_t c);" "int64_t dotAccSatEXT(i64vec2 a, u64vec2 b, int64_t c);" "int64_t dotAccSatEXT(u64vec2 a, i64vec2 b, int64_t c);" "int64_t dotAccSatEXT(i64vec2 a, i64vec2 b, int64_t c);" "uint64_t dotAccSatEXT(u64vec3 a, u64vec3 b, uint64_t c);" "int64_t dotAccSatEXT(i64vec3 a, u64vec3 b, int64_t c);" "int64_t dotAccSatEXT(u64vec3 a, i64vec3 b, int64_t c);" "int64_t dotAccSatEXT(i64vec3 a, i64vec3 b, int64_t c);" "uint64_t dotAccSatEXT(u64vec4 a, u64vec4 b, uint64_t c);" "int64_t dotAccSatEXT(i64vec4 a, u64vec4 b, int64_t c);" "int64_t dotAccSatEXT(u64vec4 a, i64vec4 b, int64_t c);" "int64_t dotAccSatEXT(i64vec4 a, i64vec4 b, int64_t c);" "\n"); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { commonBuiltins.append( "void subgroupBarrier();" "void subgroupMemoryBarrier();" "void subgroupMemoryBarrierBuffer();" "void subgroupMemoryBarrierImage();" "bool subgroupElect();" "bool subgroupAll(bool);\n" "bool subgroupAny(bool);\n" "uvec4 subgroupBallot(bool);\n" "bool subgroupInverseBallot(uvec4);\n" "bool subgroupBallotBitExtract(uvec4, uint);\n" "uint subgroupBallotBitCount(uvec4);\n" "uint subgroupBallotInclusiveBitCount(uvec4);\n" "uint subgroupBallotExclusiveBitCount(uvec4);\n" "uint subgroupBallotFindLSB(uvec4);\n" "uint subgroupBallotFindMSB(uvec4);\n" ); // Generate all flavors of subgroup ops. static const char *subgroupOps[] = { "bool subgroupAllEqual(%s);\n", "%s subgroupBroadcast(%s, uint);\n", "%s subgroupBroadcastFirst(%s);\n", "%s subgroupShuffle(%s, uint);\n", "%s subgroupShuffleXor(%s, uint);\n", "%s subgroupShuffleUp(%s, uint delta);\n", "%s subgroupShuffleDown(%s, uint delta);\n", "%s subgroupRotate(%s, uint);\n", "%s subgroupClusteredRotate(%s, uint, uint);\n", "%s subgroupAdd(%s);\n", "%s subgroupMul(%s);\n", "%s subgroupMin(%s);\n", "%s subgroupMax(%s);\n", "%s subgroupAnd(%s);\n", "%s subgroupOr(%s);\n", "%s subgroupXor(%s);\n", "%s subgroupInclusiveAdd(%s);\n", "%s subgroupInclusiveMul(%s);\n", "%s subgroupInclusiveMin(%s);\n", "%s subgroupInclusiveMax(%s);\n", "%s subgroupInclusiveAnd(%s);\n", "%s subgroupInclusiveOr(%s);\n", "%s subgroupInclusiveXor(%s);\n", "%s subgroupExclusiveAdd(%s);\n", "%s subgroupExclusiveMul(%s);\n", "%s subgroupExclusiveMin(%s);\n", "%s subgroupExclusiveMax(%s);\n", "%s subgroupExclusiveAnd(%s);\n", "%s subgroupExclusiveOr(%s);\n", "%s subgroupExclusiveXor(%s);\n", "%s subgroupClusteredAdd(%s, uint);\n", "%s subgroupClusteredMul(%s, uint);\n", "%s subgroupClusteredMin(%s, uint);\n", "%s subgroupClusteredMax(%s, uint);\n", "%s subgroupClusteredAnd(%s, uint);\n", "%s subgroupClusteredOr(%s, uint);\n", "%s subgroupClusteredXor(%s, uint);\n", "%s subgroupQuadBroadcast(%s, uint);\n", "%s subgroupQuadSwapHorizontal(%s);\n", "%s subgroupQuadSwapVertical(%s);\n", "%s subgroupQuadSwapDiagonal(%s);\n", "uvec4 subgroupPartitionNV(%s);\n", "%s subgroupPartitionedAddNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedMulNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedMinNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedMaxNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedAndNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedOrNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedXorNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedInclusiveAddNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedInclusiveMulNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedInclusiveMinNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedInclusiveMaxNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedInclusiveAndNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedInclusiveOrNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedInclusiveXorNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedExclusiveAddNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedExclusiveMulNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedExclusiveMinNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedExclusiveMaxNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedExclusiveAndNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedExclusiveOrNV(%s, uvec4 ballot);\n", "%s subgroupPartitionedExclusiveXorNV(%s, uvec4 ballot);\n", }; static const char *floatTypes[] = { "float", "vec2", "vec3", "vec4", "float16_t", "f16vec2", "f16vec3", "f16vec4", }; static const char *doubleTypes[] = { "double", "dvec2", "dvec3", "dvec4", }; static const char *intTypes[] = { "int8_t", "i8vec2", "i8vec3", "i8vec4", "int16_t", "i16vec2", "i16vec3", "i16vec4", "int", "ivec2", "ivec3", "ivec4", "int64_t", "i64vec2", "i64vec3", "i64vec4", "uint8_t", "u8vec2", "u8vec3", "u8vec4", "uint16_t", "u16vec2", "u16vec3", "u16vec4", "uint", "uvec2", "uvec3", "uvec4", "uint64_t", "u64vec2", "u64vec3", "u64vec4", }; static const char *boolTypes[] = { "bool", "bvec2", "bvec3", "bvec4", }; for (size_t i = 0; i < sizeof(subgroupOps)/sizeof(subgroupOps[0]); ++i) { const char *op = subgroupOps[i]; // Logical operations don't support float bool logicalOp = strstr(op, "Or") || strstr(op, "And") || (strstr(op, "Xor") && !strstr(op, "ShuffleXor")); // Math operations don't support bool bool mathOp = strstr(op, "Add") || strstr(op, "Mul") || strstr(op, "Min") || strstr(op, "Max"); const int bufSize = 256; char buf[bufSize]; if (!logicalOp) { for (size_t j = 0; j < sizeof(floatTypes)/sizeof(floatTypes[0]); ++j) { snprintf(buf, bufSize, op, floatTypes[j], floatTypes[j]); commonBuiltins.append(buf); } if (profile != EEsProfile && version >= 400) { for (size_t j = 0; j < sizeof(doubleTypes)/sizeof(doubleTypes[0]); ++j) { snprintf(buf, bufSize, op, doubleTypes[j], doubleTypes[j]); commonBuiltins.append(buf); } } } if (!mathOp) { for (size_t j = 0; j < sizeof(boolTypes)/sizeof(boolTypes[0]); ++j) { snprintf(buf, bufSize, op, boolTypes[j], boolTypes[j]); commonBuiltins.append(buf); } } for (size_t j = 0; j < sizeof(intTypes)/sizeof(intTypes[0]); ++j) { snprintf(buf, bufSize, op, intTypes[j], intTypes[j]); commonBuiltins.append(buf); } } stageBuiltins[EShLangCompute].append( "void subgroupMemoryBarrierShared();" "\n" ); stageBuiltins[EShLangMesh].append( "void subgroupMemoryBarrierShared();" "\n" ); stageBuiltins[EShLangTask].append( "void subgroupMemoryBarrierShared();" "\n" ); } // GL_EXT_shader_quad_control if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { commonBuiltins.append( "bool subgroupQuadAll(bool);\n" "bool subgroupQuadAny(bool);\n" ); } if (profile != EEsProfile && version >= 460) { commonBuiltins.append( "bool anyInvocation(bool);" "bool allInvocations(bool);" "bool allInvocationsEqual(bool);" "\n"); } // GL_AMD_shader_ballot if (profile != EEsProfile && version >= 450) { commonBuiltins.append( "float minInvocationsAMD(float);" "vec2 minInvocationsAMD(vec2);" "vec3 minInvocationsAMD(vec3);" "vec4 minInvocationsAMD(vec4);" "int minInvocationsAMD(int);" "ivec2 minInvocationsAMD(ivec2);" "ivec3 minInvocationsAMD(ivec3);" "ivec4 minInvocationsAMD(ivec4);" "uint minInvocationsAMD(uint);" "uvec2 minInvocationsAMD(uvec2);" "uvec3 minInvocationsAMD(uvec3);" "uvec4 minInvocationsAMD(uvec4);" "double minInvocationsAMD(double);" "dvec2 minInvocationsAMD(dvec2);" "dvec3 minInvocationsAMD(dvec3);" "dvec4 minInvocationsAMD(dvec4);" "int64_t minInvocationsAMD(int64_t);" "i64vec2 minInvocationsAMD(i64vec2);" "i64vec3 minInvocationsAMD(i64vec3);" "i64vec4 minInvocationsAMD(i64vec4);" "uint64_t minInvocationsAMD(uint64_t);" "u64vec2 minInvocationsAMD(u64vec2);" "u64vec3 minInvocationsAMD(u64vec3);" "u64vec4 minInvocationsAMD(u64vec4);" "float16_t minInvocationsAMD(float16_t);" "f16vec2 minInvocationsAMD(f16vec2);" "f16vec3 minInvocationsAMD(f16vec3);" "f16vec4 minInvocationsAMD(f16vec4);" "int16_t minInvocationsAMD(int16_t);" "i16vec2 minInvocationsAMD(i16vec2);" "i16vec3 minInvocationsAMD(i16vec3);" "i16vec4 minInvocationsAMD(i16vec4);" "uint16_t minInvocationsAMD(uint16_t);" "u16vec2 minInvocationsAMD(u16vec2);" "u16vec3 minInvocationsAMD(u16vec3);" "u16vec4 minInvocationsAMD(u16vec4);" "float minInvocationsInclusiveScanAMD(float);" "vec2 minInvocationsInclusiveScanAMD(vec2);" "vec3 minInvocationsInclusiveScanAMD(vec3);" "vec4 minInvocationsInclusiveScanAMD(vec4);" "int minInvocationsInclusiveScanAMD(int);" "ivec2 minInvocationsInclusiveScanAMD(ivec2);" "ivec3 minInvocationsInclusiveScanAMD(ivec3);" "ivec4 minInvocationsInclusiveScanAMD(ivec4);" "uint minInvocationsInclusiveScanAMD(uint);" "uvec2 minInvocationsInclusiveScanAMD(uvec2);" "uvec3 minInvocationsInclusiveScanAMD(uvec3);" "uvec4 minInvocationsInclusiveScanAMD(uvec4);" "double minInvocationsInclusiveScanAMD(double);" "dvec2 minInvocationsInclusiveScanAMD(dvec2);" "dvec3 minInvocationsInclusiveScanAMD(dvec3);" "dvec4 minInvocationsInclusiveScanAMD(dvec4);" "int64_t minInvocationsInclusiveScanAMD(int64_t);" "i64vec2 minInvocationsInclusiveScanAMD(i64vec2);" "i64vec3 minInvocationsInclusiveScanAMD(i64vec3);" "i64vec4 minInvocationsInclusiveScanAMD(i64vec4);" "uint64_t minInvocationsInclusiveScanAMD(uint64_t);" "u64vec2 minInvocationsInclusiveScanAMD(u64vec2);" "u64vec3 minInvocationsInclusiveScanAMD(u64vec3);" "u64vec4 minInvocationsInclusiveScanAMD(u64vec4);" "float16_t minInvocationsInclusiveScanAMD(float16_t);" "f16vec2 minInvocationsInclusiveScanAMD(f16vec2);" "f16vec3 minInvocationsInclusiveScanAMD(f16vec3);" "f16vec4 minInvocationsInclusiveScanAMD(f16vec4);" "int16_t minInvocationsInclusiveScanAMD(int16_t);" "i16vec2 minInvocationsInclusiveScanAMD(i16vec2);" "i16vec3 minInvocationsInclusiveScanAMD(i16vec3);" "i16vec4 minInvocationsInclusiveScanAMD(i16vec4);" "uint16_t minInvocationsInclusiveScanAMD(uint16_t);" "u16vec2 minInvocationsInclusiveScanAMD(u16vec2);" "u16vec3 minInvocationsInclusiveScanAMD(u16vec3);" "u16vec4 minInvocationsInclusiveScanAMD(u16vec4);" "float minInvocationsExclusiveScanAMD(float);" "vec2 minInvocationsExclusiveScanAMD(vec2);" "vec3 minInvocationsExclusiveScanAMD(vec3);" "vec4 minInvocationsExclusiveScanAMD(vec4);" "int minInvocationsExclusiveScanAMD(int);" "ivec2 minInvocationsExclusiveScanAMD(ivec2);" "ivec3 minInvocationsExclusiveScanAMD(ivec3);" "ivec4 minInvocationsExclusiveScanAMD(ivec4);" "uint minInvocationsExclusiveScanAMD(uint);" "uvec2 minInvocationsExclusiveScanAMD(uvec2);" "uvec3 minInvocationsExclusiveScanAMD(uvec3);" "uvec4 minInvocationsExclusiveScanAMD(uvec4);" "double minInvocationsExclusiveScanAMD(double);" "dvec2 minInvocationsExclusiveScanAMD(dvec2);" "dvec3 minInvocationsExclusiveScanAMD(dvec3);" "dvec4 minInvocationsExclusiveScanAMD(dvec4);" "int64_t minInvocationsExclusiveScanAMD(int64_t);" "i64vec2 minInvocationsExclusiveScanAMD(i64vec2);" "i64vec3 minInvocationsExclusiveScanAMD(i64vec3);" "i64vec4 minInvocationsExclusiveScanAMD(i64vec4);" "uint64_t minInvocationsExclusiveScanAMD(uint64_t);" "u64vec2 minInvocationsExclusiveScanAMD(u64vec2);" "u64vec3 minInvocationsExclusiveScanAMD(u64vec3);" "u64vec4 minInvocationsExclusiveScanAMD(u64vec4);" "float16_t minInvocationsExclusiveScanAMD(float16_t);" "f16vec2 minInvocationsExclusiveScanAMD(f16vec2);" "f16vec3 minInvocationsExclusiveScanAMD(f16vec3);" "f16vec4 minInvocationsExclusiveScanAMD(f16vec4);" "int16_t minInvocationsExclusiveScanAMD(int16_t);" "i16vec2 minInvocationsExclusiveScanAMD(i16vec2);" "i16vec3 minInvocationsExclusiveScanAMD(i16vec3);" "i16vec4 minInvocationsExclusiveScanAMD(i16vec4);" "uint16_t minInvocationsExclusiveScanAMD(uint16_t);" "u16vec2 minInvocationsExclusiveScanAMD(u16vec2);" "u16vec3 minInvocationsExclusiveScanAMD(u16vec3);" "u16vec4 minInvocationsExclusiveScanAMD(u16vec4);" "float maxInvocationsAMD(float);" "vec2 maxInvocationsAMD(vec2);" "vec3 maxInvocationsAMD(vec3);" "vec4 maxInvocationsAMD(vec4);" "int maxInvocationsAMD(int);" "ivec2 maxInvocationsAMD(ivec2);" "ivec3 maxInvocationsAMD(ivec3);" "ivec4 maxInvocationsAMD(ivec4);" "uint maxInvocationsAMD(uint);" "uvec2 maxInvocationsAMD(uvec2);" "uvec3 maxInvocationsAMD(uvec3);" "uvec4 maxInvocationsAMD(uvec4);" "double maxInvocationsAMD(double);" "dvec2 maxInvocationsAMD(dvec2);" "dvec3 maxInvocationsAMD(dvec3);" "dvec4 maxInvocationsAMD(dvec4);" "int64_t maxInvocationsAMD(int64_t);" "i64vec2 maxInvocationsAMD(i64vec2);" "i64vec3 maxInvocationsAMD(i64vec3);" "i64vec4 maxInvocationsAMD(i64vec4);" "uint64_t maxInvocationsAMD(uint64_t);" "u64vec2 maxInvocationsAMD(u64vec2);" "u64vec3 maxInvocationsAMD(u64vec3);" "u64vec4 maxInvocationsAMD(u64vec4);" "float16_t maxInvocationsAMD(float16_t);" "f16vec2 maxInvocationsAMD(f16vec2);" "f16vec3 maxInvocationsAMD(f16vec3);" "f16vec4 maxInvocationsAMD(f16vec4);" "int16_t maxInvocationsAMD(int16_t);" "i16vec2 maxInvocationsAMD(i16vec2);" "i16vec3 maxInvocationsAMD(i16vec3);" "i16vec4 maxInvocationsAMD(i16vec4);" "uint16_t maxInvocationsAMD(uint16_t);" "u16vec2 maxInvocationsAMD(u16vec2);" "u16vec3 maxInvocationsAMD(u16vec3);" "u16vec4 maxInvocationsAMD(u16vec4);" "float maxInvocationsInclusiveScanAMD(float);" "vec2 maxInvocationsInclusiveScanAMD(vec2);" "vec3 maxInvocationsInclusiveScanAMD(vec3);" "vec4 maxInvocationsInclusiveScanAMD(vec4);" "int maxInvocationsInclusiveScanAMD(int);" "ivec2 maxInvocationsInclusiveScanAMD(ivec2);" "ivec3 maxInvocationsInclusiveScanAMD(ivec3);" "ivec4 maxInvocationsInclusiveScanAMD(ivec4);" "uint maxInvocationsInclusiveScanAMD(uint);" "uvec2 maxInvocationsInclusiveScanAMD(uvec2);" "uvec3 maxInvocationsInclusiveScanAMD(uvec3);" "uvec4 maxInvocationsInclusiveScanAMD(uvec4);" "double maxInvocationsInclusiveScanAMD(double);" "dvec2 maxInvocationsInclusiveScanAMD(dvec2);" "dvec3 maxInvocationsInclusiveScanAMD(dvec3);" "dvec4 maxInvocationsInclusiveScanAMD(dvec4);" "int64_t maxInvocationsInclusiveScanAMD(int64_t);" "i64vec2 maxInvocationsInclusiveScanAMD(i64vec2);" "i64vec3 maxInvocationsInclusiveScanAMD(i64vec3);" "i64vec4 maxInvocationsInclusiveScanAMD(i64vec4);" "uint64_t maxInvocationsInclusiveScanAMD(uint64_t);" "u64vec2 maxInvocationsInclusiveScanAMD(u64vec2);" "u64vec3 maxInvocationsInclusiveScanAMD(u64vec3);" "u64vec4 maxInvocationsInclusiveScanAMD(u64vec4);" "float16_t maxInvocationsInclusiveScanAMD(float16_t);" "f16vec2 maxInvocationsInclusiveScanAMD(f16vec2);" "f16vec3 maxInvocationsInclusiveScanAMD(f16vec3);" "f16vec4 maxInvocationsInclusiveScanAMD(f16vec4);" "int16_t maxInvocationsInclusiveScanAMD(int16_t);" "i16vec2 maxInvocationsInclusiveScanAMD(i16vec2);" "i16vec3 maxInvocationsInclusiveScanAMD(i16vec3);" "i16vec4 maxInvocationsInclusiveScanAMD(i16vec4);" "uint16_t maxInvocationsInclusiveScanAMD(uint16_t);" "u16vec2 maxInvocationsInclusiveScanAMD(u16vec2);" "u16vec3 maxInvocationsInclusiveScanAMD(u16vec3);" "u16vec4 maxInvocationsInclusiveScanAMD(u16vec4);" "float maxInvocationsExclusiveScanAMD(float);" "vec2 maxInvocationsExclusiveScanAMD(vec2);" "vec3 maxInvocationsExclusiveScanAMD(vec3);" "vec4 maxInvocationsExclusiveScanAMD(vec4);" "int maxInvocationsExclusiveScanAMD(int);" "ivec2 maxInvocationsExclusiveScanAMD(ivec2);" "ivec3 maxInvocationsExclusiveScanAMD(ivec3);" "ivec4 maxInvocationsExclusiveScanAMD(ivec4);" "uint maxInvocationsExclusiveScanAMD(uint);" "uvec2 maxInvocationsExclusiveScanAMD(uvec2);" "uvec3 maxInvocationsExclusiveScanAMD(uvec3);" "uvec4 maxInvocationsExclusiveScanAMD(uvec4);" "double maxInvocationsExclusiveScanAMD(double);" "dvec2 maxInvocationsExclusiveScanAMD(dvec2);" "dvec3 maxInvocationsExclusiveScanAMD(dvec3);" "dvec4 maxInvocationsExclusiveScanAMD(dvec4);" "int64_t maxInvocationsExclusiveScanAMD(int64_t);" "i64vec2 maxInvocationsExclusiveScanAMD(i64vec2);" "i64vec3 maxInvocationsExclusiveScanAMD(i64vec3);" "i64vec4 maxInvocationsExclusiveScanAMD(i64vec4);" "uint64_t maxInvocationsExclusiveScanAMD(uint64_t);" "u64vec2 maxInvocationsExclusiveScanAMD(u64vec2);" "u64vec3 maxInvocationsExclusiveScanAMD(u64vec3);" "u64vec4 maxInvocationsExclusiveScanAMD(u64vec4);" "float16_t maxInvocationsExclusiveScanAMD(float16_t);" "f16vec2 maxInvocationsExclusiveScanAMD(f16vec2);" "f16vec3 maxInvocationsExclusiveScanAMD(f16vec3);" "f16vec4 maxInvocationsExclusiveScanAMD(f16vec4);" "int16_t maxInvocationsExclusiveScanAMD(int16_t);" "i16vec2 maxInvocationsExclusiveScanAMD(i16vec2);" "i16vec3 maxInvocationsExclusiveScanAMD(i16vec3);" "i16vec4 maxInvocationsExclusiveScanAMD(i16vec4);" "uint16_t maxInvocationsExclusiveScanAMD(uint16_t);" "u16vec2 maxInvocationsExclusiveScanAMD(u16vec2);" "u16vec3 maxInvocationsExclusiveScanAMD(u16vec3);" "u16vec4 maxInvocationsExclusiveScanAMD(u16vec4);" "float addInvocationsAMD(float);" "vec2 addInvocationsAMD(vec2);" "vec3 addInvocationsAMD(vec3);" "vec4 addInvocationsAMD(vec4);" "int addInvocationsAMD(int);" "ivec2 addInvocationsAMD(ivec2);" "ivec3 addInvocationsAMD(ivec3);" "ivec4 addInvocationsAMD(ivec4);" "uint addInvocationsAMD(uint);" "uvec2 addInvocationsAMD(uvec2);" "uvec3 addInvocationsAMD(uvec3);" "uvec4 addInvocationsAMD(uvec4);" "double addInvocationsAMD(double);" "dvec2 addInvocationsAMD(dvec2);" "dvec3 addInvocationsAMD(dvec3);" "dvec4 addInvocationsAMD(dvec4);" "int64_t addInvocationsAMD(int64_t);" "i64vec2 addInvocationsAMD(i64vec2);" "i64vec3 addInvocationsAMD(i64vec3);" "i64vec4 addInvocationsAMD(i64vec4);" "uint64_t addInvocationsAMD(uint64_t);" "u64vec2 addInvocationsAMD(u64vec2);" "u64vec3 addInvocationsAMD(u64vec3);" "u64vec4 addInvocationsAMD(u64vec4);" "float16_t addInvocationsAMD(float16_t);" "f16vec2 addInvocationsAMD(f16vec2);" "f16vec3 addInvocationsAMD(f16vec3);" "f16vec4 addInvocationsAMD(f16vec4);" "int16_t addInvocationsAMD(int16_t);" "i16vec2 addInvocationsAMD(i16vec2);" "i16vec3 addInvocationsAMD(i16vec3);" "i16vec4 addInvocationsAMD(i16vec4);" "uint16_t addInvocationsAMD(uint16_t);" "u16vec2 addInvocationsAMD(u16vec2);" "u16vec3 addInvocationsAMD(u16vec3);" "u16vec4 addInvocationsAMD(u16vec4);" "float addInvocationsInclusiveScanAMD(float);" "vec2 addInvocationsInclusiveScanAMD(vec2);" "vec3 addInvocationsInclusiveScanAMD(vec3);" "vec4 addInvocationsInclusiveScanAMD(vec4);" "int addInvocationsInclusiveScanAMD(int);" "ivec2 addInvocationsInclusiveScanAMD(ivec2);" "ivec3 addInvocationsInclusiveScanAMD(ivec3);" "ivec4 addInvocationsInclusiveScanAMD(ivec4);" "uint addInvocationsInclusiveScanAMD(uint);" "uvec2 addInvocationsInclusiveScanAMD(uvec2);" "uvec3 addInvocationsInclusiveScanAMD(uvec3);" "uvec4 addInvocationsInclusiveScanAMD(uvec4);" "double addInvocationsInclusiveScanAMD(double);" "dvec2 addInvocationsInclusiveScanAMD(dvec2);" "dvec3 addInvocationsInclusiveScanAMD(dvec3);" "dvec4 addInvocationsInclusiveScanAMD(dvec4);" "int64_t addInvocationsInclusiveScanAMD(int64_t);" "i64vec2 addInvocationsInclusiveScanAMD(i64vec2);" "i64vec3 addInvocationsInclusiveScanAMD(i64vec3);" "i64vec4 addInvocationsInclusiveScanAMD(i64vec4);" "uint64_t addInvocationsInclusiveScanAMD(uint64_t);" "u64vec2 addInvocationsInclusiveScanAMD(u64vec2);" "u64vec3 addInvocationsInclusiveScanAMD(u64vec3);" "u64vec4 addInvocationsInclusiveScanAMD(u64vec4);" "float16_t addInvocationsInclusiveScanAMD(float16_t);" "f16vec2 addInvocationsInclusiveScanAMD(f16vec2);" "f16vec3 addInvocationsInclusiveScanAMD(f16vec3);" "f16vec4 addInvocationsInclusiveScanAMD(f16vec4);" "int16_t addInvocationsInclusiveScanAMD(int16_t);" "i16vec2 addInvocationsInclusiveScanAMD(i16vec2);" "i16vec3 addInvocationsInclusiveScanAMD(i16vec3);" "i16vec4 addInvocationsInclusiveScanAMD(i16vec4);" "uint16_t addInvocationsInclusiveScanAMD(uint16_t);" "u16vec2 addInvocationsInclusiveScanAMD(u16vec2);" "u16vec3 addInvocationsInclusiveScanAMD(u16vec3);" "u16vec4 addInvocationsInclusiveScanAMD(u16vec4);" "float addInvocationsExclusiveScanAMD(float);" "vec2 addInvocationsExclusiveScanAMD(vec2);" "vec3 addInvocationsExclusiveScanAMD(vec3);" "vec4 addInvocationsExclusiveScanAMD(vec4);" "int addInvocationsExclusiveScanAMD(int);" "ivec2 addInvocationsExclusiveScanAMD(ivec2);" "ivec3 addInvocationsExclusiveScanAMD(ivec3);" "ivec4 addInvocationsExclusiveScanAMD(ivec4);" "uint addInvocationsExclusiveScanAMD(uint);" "uvec2 addInvocationsExclusiveScanAMD(uvec2);" "uvec3 addInvocationsExclusiveScanAMD(uvec3);" "uvec4 addInvocationsExclusiveScanAMD(uvec4);" "double addInvocationsExclusiveScanAMD(double);" "dvec2 addInvocationsExclusiveScanAMD(dvec2);" "dvec3 addInvocationsExclusiveScanAMD(dvec3);" "dvec4 addInvocationsExclusiveScanAMD(dvec4);" "int64_t addInvocationsExclusiveScanAMD(int64_t);" "i64vec2 addInvocationsExclusiveScanAMD(i64vec2);" "i64vec3 addInvocationsExclusiveScanAMD(i64vec3);" "i64vec4 addInvocationsExclusiveScanAMD(i64vec4);" "uint64_t addInvocationsExclusiveScanAMD(uint64_t);" "u64vec2 addInvocationsExclusiveScanAMD(u64vec2);" "u64vec3 addInvocationsExclusiveScanAMD(u64vec3);" "u64vec4 addInvocationsExclusiveScanAMD(u64vec4);" "float16_t addInvocationsExclusiveScanAMD(float16_t);" "f16vec2 addInvocationsExclusiveScanAMD(f16vec2);" "f16vec3 addInvocationsExclusiveScanAMD(f16vec3);" "f16vec4 addInvocationsExclusiveScanAMD(f16vec4);" "int16_t addInvocationsExclusiveScanAMD(int16_t);" "i16vec2 addInvocationsExclusiveScanAMD(i16vec2);" "i16vec3 addInvocationsExclusiveScanAMD(i16vec3);" "i16vec4 addInvocationsExclusiveScanAMD(i16vec4);" "uint16_t addInvocationsExclusiveScanAMD(uint16_t);" "u16vec2 addInvocationsExclusiveScanAMD(u16vec2);" "u16vec3 addInvocationsExclusiveScanAMD(u16vec3);" "u16vec4 addInvocationsExclusiveScanAMD(u16vec4);" "float minInvocationsNonUniformAMD(float);" "vec2 minInvocationsNonUniformAMD(vec2);" "vec3 minInvocationsNonUniformAMD(vec3);" "vec4 minInvocationsNonUniformAMD(vec4);" "int minInvocationsNonUniformAMD(int);" "ivec2 minInvocationsNonUniformAMD(ivec2);" "ivec3 minInvocationsNonUniformAMD(ivec3);" "ivec4 minInvocationsNonUniformAMD(ivec4);" "uint minInvocationsNonUniformAMD(uint);" "uvec2 minInvocationsNonUniformAMD(uvec2);" "uvec3 minInvocationsNonUniformAMD(uvec3);" "uvec4 minInvocationsNonUniformAMD(uvec4);" "double minInvocationsNonUniformAMD(double);" "dvec2 minInvocationsNonUniformAMD(dvec2);" "dvec3 minInvocationsNonUniformAMD(dvec3);" "dvec4 minInvocationsNonUniformAMD(dvec4);" "int64_t minInvocationsNonUniformAMD(int64_t);" "i64vec2 minInvocationsNonUniformAMD(i64vec2);" "i64vec3 minInvocationsNonUniformAMD(i64vec3);" "i64vec4 minInvocationsNonUniformAMD(i64vec4);" "uint64_t minInvocationsNonUniformAMD(uint64_t);" "u64vec2 minInvocationsNonUniformAMD(u64vec2);" "u64vec3 minInvocationsNonUniformAMD(u64vec3);" "u64vec4 minInvocationsNonUniformAMD(u64vec4);" "float16_t minInvocationsNonUniformAMD(float16_t);" "f16vec2 minInvocationsNonUniformAMD(f16vec2);" "f16vec3 minInvocationsNonUniformAMD(f16vec3);" "f16vec4 minInvocationsNonUniformAMD(f16vec4);" "int16_t minInvocationsNonUniformAMD(int16_t);" "i16vec2 minInvocationsNonUniformAMD(i16vec2);" "i16vec3 minInvocationsNonUniformAMD(i16vec3);" "i16vec4 minInvocationsNonUniformAMD(i16vec4);" "uint16_t minInvocationsNonUniformAMD(uint16_t);" "u16vec2 minInvocationsNonUniformAMD(u16vec2);" "u16vec3 minInvocationsNonUniformAMD(u16vec3);" "u16vec4 minInvocationsNonUniformAMD(u16vec4);" "float minInvocationsInclusiveScanNonUniformAMD(float);" "vec2 minInvocationsInclusiveScanNonUniformAMD(vec2);" "vec3 minInvocationsInclusiveScanNonUniformAMD(vec3);" "vec4 minInvocationsInclusiveScanNonUniformAMD(vec4);" "int minInvocationsInclusiveScanNonUniformAMD(int);" "ivec2 minInvocationsInclusiveScanNonUniformAMD(ivec2);" "ivec3 minInvocationsInclusiveScanNonUniformAMD(ivec3);" "ivec4 minInvocationsInclusiveScanNonUniformAMD(ivec4);" "uint minInvocationsInclusiveScanNonUniformAMD(uint);" "uvec2 minInvocationsInclusiveScanNonUniformAMD(uvec2);" "uvec3 minInvocationsInclusiveScanNonUniformAMD(uvec3);" "uvec4 minInvocationsInclusiveScanNonUniformAMD(uvec4);" "double minInvocationsInclusiveScanNonUniformAMD(double);" "dvec2 minInvocationsInclusiveScanNonUniformAMD(dvec2);" "dvec3 minInvocationsInclusiveScanNonUniformAMD(dvec3);" "dvec4 minInvocationsInclusiveScanNonUniformAMD(dvec4);" "int64_t minInvocationsInclusiveScanNonUniformAMD(int64_t);" "i64vec2 minInvocationsInclusiveScanNonUniformAMD(i64vec2);" "i64vec3 minInvocationsInclusiveScanNonUniformAMD(i64vec3);" "i64vec4 minInvocationsInclusiveScanNonUniformAMD(i64vec4);" "uint64_t minInvocationsInclusiveScanNonUniformAMD(uint64_t);" "u64vec2 minInvocationsInclusiveScanNonUniformAMD(u64vec2);" "u64vec3 minInvocationsInclusiveScanNonUniformAMD(u64vec3);" "u64vec4 minInvocationsInclusiveScanNonUniformAMD(u64vec4);" "float16_t minInvocationsInclusiveScanNonUniformAMD(float16_t);" "f16vec2 minInvocationsInclusiveScanNonUniformAMD(f16vec2);" "f16vec3 minInvocationsInclusiveScanNonUniformAMD(f16vec3);" "f16vec4 minInvocationsInclusiveScanNonUniformAMD(f16vec4);" "int16_t minInvocationsInclusiveScanNonUniformAMD(int16_t);" "i16vec2 minInvocationsInclusiveScanNonUniformAMD(i16vec2);" "i16vec3 minInvocationsInclusiveScanNonUniformAMD(i16vec3);" "i16vec4 minInvocationsInclusiveScanNonUniformAMD(i16vec4);" "uint16_t minInvocationsInclusiveScanNonUniformAMD(uint16_t);" "u16vec2 minInvocationsInclusiveScanNonUniformAMD(u16vec2);" "u16vec3 minInvocationsInclusiveScanNonUniformAMD(u16vec3);" "u16vec4 minInvocationsInclusiveScanNonUniformAMD(u16vec4);" "float minInvocationsExclusiveScanNonUniformAMD(float);" "vec2 minInvocationsExclusiveScanNonUniformAMD(vec2);" "vec3 minInvocationsExclusiveScanNonUniformAMD(vec3);" "vec4 minInvocationsExclusiveScanNonUniformAMD(vec4);" "int minInvocationsExclusiveScanNonUniformAMD(int);" "ivec2 minInvocationsExclusiveScanNonUniformAMD(ivec2);" "ivec3 minInvocationsExclusiveScanNonUniformAMD(ivec3);" "ivec4 minInvocationsExclusiveScanNonUniformAMD(ivec4);" "uint minInvocationsExclusiveScanNonUniformAMD(uint);" "uvec2 minInvocationsExclusiveScanNonUniformAMD(uvec2);" "uvec3 minInvocationsExclusiveScanNonUniformAMD(uvec3);" "uvec4 minInvocationsExclusiveScanNonUniformAMD(uvec4);" "double minInvocationsExclusiveScanNonUniformAMD(double);" "dvec2 minInvocationsExclusiveScanNonUniformAMD(dvec2);" "dvec3 minInvocationsExclusiveScanNonUniformAMD(dvec3);" "dvec4 minInvocationsExclusiveScanNonUniformAMD(dvec4);" "int64_t minInvocationsExclusiveScanNonUniformAMD(int64_t);" "i64vec2 minInvocationsExclusiveScanNonUniformAMD(i64vec2);" "i64vec3 minInvocationsExclusiveScanNonUniformAMD(i64vec3);" "i64vec4 minInvocationsExclusiveScanNonUniformAMD(i64vec4);" "uint64_t minInvocationsExclusiveScanNonUniformAMD(uint64_t);" "u64vec2 minInvocationsExclusiveScanNonUniformAMD(u64vec2);" "u64vec3 minInvocationsExclusiveScanNonUniformAMD(u64vec3);" "u64vec4 minInvocationsExclusiveScanNonUniformAMD(u64vec4);" "float16_t minInvocationsExclusiveScanNonUniformAMD(float16_t);" "f16vec2 minInvocationsExclusiveScanNonUniformAMD(f16vec2);" "f16vec3 minInvocationsExclusiveScanNonUniformAMD(f16vec3);" "f16vec4 minInvocationsExclusiveScanNonUniformAMD(f16vec4);" "int16_t minInvocationsExclusiveScanNonUniformAMD(int16_t);" "i16vec2 minInvocationsExclusiveScanNonUniformAMD(i16vec2);" "i16vec3 minInvocationsExclusiveScanNonUniformAMD(i16vec3);" "i16vec4 minInvocationsExclusiveScanNonUniformAMD(i16vec4);" "uint16_t minInvocationsExclusiveScanNonUniformAMD(uint16_t);" "u16vec2 minInvocationsExclusiveScanNonUniformAMD(u16vec2);" "u16vec3 minInvocationsExclusiveScanNonUniformAMD(u16vec3);" "u16vec4 minInvocationsExclusiveScanNonUniformAMD(u16vec4);" "float maxInvocationsNonUniformAMD(float);" "vec2 maxInvocationsNonUniformAMD(vec2);" "vec3 maxInvocationsNonUniformAMD(vec3);" "vec4 maxInvocationsNonUniformAMD(vec4);" "int maxInvocationsNonUniformAMD(int);" "ivec2 maxInvocationsNonUniformAMD(ivec2);" "ivec3 maxInvocationsNonUniformAMD(ivec3);" "ivec4 maxInvocationsNonUniformAMD(ivec4);" "uint maxInvocationsNonUniformAMD(uint);" "uvec2 maxInvocationsNonUniformAMD(uvec2);" "uvec3 maxInvocationsNonUniformAMD(uvec3);" "uvec4 maxInvocationsNonUniformAMD(uvec4);" "double maxInvocationsNonUniformAMD(double);" "dvec2 maxInvocationsNonUniformAMD(dvec2);" "dvec3 maxInvocationsNonUniformAMD(dvec3);" "dvec4 maxInvocationsNonUniformAMD(dvec4);" "int64_t maxInvocationsNonUniformAMD(int64_t);" "i64vec2 maxInvocationsNonUniformAMD(i64vec2);" "i64vec3 maxInvocationsNonUniformAMD(i64vec3);" "i64vec4 maxInvocationsNonUniformAMD(i64vec4);" "uint64_t maxInvocationsNonUniformAMD(uint64_t);" "u64vec2 maxInvocationsNonUniformAMD(u64vec2);" "u64vec3 maxInvocationsNonUniformAMD(u64vec3);" "u64vec4 maxInvocationsNonUniformAMD(u64vec4);" "float16_t maxInvocationsNonUniformAMD(float16_t);" "f16vec2 maxInvocationsNonUniformAMD(f16vec2);" "f16vec3 maxInvocationsNonUniformAMD(f16vec3);" "f16vec4 maxInvocationsNonUniformAMD(f16vec4);" "int16_t maxInvocationsNonUniformAMD(int16_t);" "i16vec2 maxInvocationsNonUniformAMD(i16vec2);" "i16vec3 maxInvocationsNonUniformAMD(i16vec3);" "i16vec4 maxInvocationsNonUniformAMD(i16vec4);" "uint16_t maxInvocationsNonUniformAMD(uint16_t);" "u16vec2 maxInvocationsNonUniformAMD(u16vec2);" "u16vec3 maxInvocationsNonUniformAMD(u16vec3);" "u16vec4 maxInvocationsNonUniformAMD(u16vec4);" "float maxInvocationsInclusiveScanNonUniformAMD(float);" "vec2 maxInvocationsInclusiveScanNonUniformAMD(vec2);" "vec3 maxInvocationsInclusiveScanNonUniformAMD(vec3);" "vec4 maxInvocationsInclusiveScanNonUniformAMD(vec4);" "int maxInvocationsInclusiveScanNonUniformAMD(int);" "ivec2 maxInvocationsInclusiveScanNonUniformAMD(ivec2);" "ivec3 maxInvocationsInclusiveScanNonUniformAMD(ivec3);" "ivec4 maxInvocationsInclusiveScanNonUniformAMD(ivec4);" "uint maxInvocationsInclusiveScanNonUniformAMD(uint);" "uvec2 maxInvocationsInclusiveScanNonUniformAMD(uvec2);" "uvec3 maxInvocationsInclusiveScanNonUniformAMD(uvec3);" "uvec4 maxInvocationsInclusiveScanNonUniformAMD(uvec4);" "double maxInvocationsInclusiveScanNonUniformAMD(double);" "dvec2 maxInvocationsInclusiveScanNonUniformAMD(dvec2);" "dvec3 maxInvocationsInclusiveScanNonUniformAMD(dvec3);" "dvec4 maxInvocationsInclusiveScanNonUniformAMD(dvec4);" "int64_t maxInvocationsInclusiveScanNonUniformAMD(int64_t);" "i64vec2 maxInvocationsInclusiveScanNonUniformAMD(i64vec2);" "i64vec3 maxInvocationsInclusiveScanNonUniformAMD(i64vec3);" "i64vec4 maxInvocationsInclusiveScanNonUniformAMD(i64vec4);" "uint64_t maxInvocationsInclusiveScanNonUniformAMD(uint64_t);" "u64vec2 maxInvocationsInclusiveScanNonUniformAMD(u64vec2);" "u64vec3 maxInvocationsInclusiveScanNonUniformAMD(u64vec3);" "u64vec4 maxInvocationsInclusiveScanNonUniformAMD(u64vec4);" "float16_t maxInvocationsInclusiveScanNonUniformAMD(float16_t);" "f16vec2 maxInvocationsInclusiveScanNonUniformAMD(f16vec2);" "f16vec3 maxInvocationsInclusiveScanNonUniformAMD(f16vec3);" "f16vec4 maxInvocationsInclusiveScanNonUniformAMD(f16vec4);" "int16_t maxInvocationsInclusiveScanNonUniformAMD(int16_t);" "i16vec2 maxInvocationsInclusiveScanNonUniformAMD(i16vec2);" "i16vec3 maxInvocationsInclusiveScanNonUniformAMD(i16vec3);" "i16vec4 maxInvocationsInclusiveScanNonUniformAMD(i16vec4);" "uint16_t maxInvocationsInclusiveScanNonUniformAMD(uint16_t);" "u16vec2 maxInvocationsInclusiveScanNonUniformAMD(u16vec2);" "u16vec3 maxInvocationsInclusiveScanNonUniformAMD(u16vec3);" "u16vec4 maxInvocationsInclusiveScanNonUniformAMD(u16vec4);" "float maxInvocationsExclusiveScanNonUniformAMD(float);" "vec2 maxInvocationsExclusiveScanNonUniformAMD(vec2);" "vec3 maxInvocationsExclusiveScanNonUniformAMD(vec3);" "vec4 maxInvocationsExclusiveScanNonUniformAMD(vec4);" "int maxInvocationsExclusiveScanNonUniformAMD(int);" "ivec2 maxInvocationsExclusiveScanNonUniformAMD(ivec2);" "ivec3 maxInvocationsExclusiveScanNonUniformAMD(ivec3);" "ivec4 maxInvocationsExclusiveScanNonUniformAMD(ivec4);" "uint maxInvocationsExclusiveScanNonUniformAMD(uint);" "uvec2 maxInvocationsExclusiveScanNonUniformAMD(uvec2);" "uvec3 maxInvocationsExclusiveScanNonUniformAMD(uvec3);" "uvec4 maxInvocationsExclusiveScanNonUniformAMD(uvec4);" "double maxInvocationsExclusiveScanNonUniformAMD(double);" "dvec2 maxInvocationsExclusiveScanNonUniformAMD(dvec2);" "dvec3 maxInvocationsExclusiveScanNonUniformAMD(dvec3);" "dvec4 maxInvocationsExclusiveScanNonUniformAMD(dvec4);" "int64_t maxInvocationsExclusiveScanNonUniformAMD(int64_t);" "i64vec2 maxInvocationsExclusiveScanNonUniformAMD(i64vec2);" "i64vec3 maxInvocationsExclusiveScanNonUniformAMD(i64vec3);" "i64vec4 maxInvocationsExclusiveScanNonUniformAMD(i64vec4);" "uint64_t maxInvocationsExclusiveScanNonUniformAMD(uint64_t);" "u64vec2 maxInvocationsExclusiveScanNonUniformAMD(u64vec2);" "u64vec3 maxInvocationsExclusiveScanNonUniformAMD(u64vec3);" "u64vec4 maxInvocationsExclusiveScanNonUniformAMD(u64vec4);" "float16_t maxInvocationsExclusiveScanNonUniformAMD(float16_t);" "f16vec2 maxInvocationsExclusiveScanNonUniformAMD(f16vec2);" "f16vec3 maxInvocationsExclusiveScanNonUniformAMD(f16vec3);" "f16vec4 maxInvocationsExclusiveScanNonUniformAMD(f16vec4);" "int16_t maxInvocationsExclusiveScanNonUniformAMD(int16_t);" "i16vec2 maxInvocationsExclusiveScanNonUniformAMD(i16vec2);" "i16vec3 maxInvocationsExclusiveScanNonUniformAMD(i16vec3);" "i16vec4 maxInvocationsExclusiveScanNonUniformAMD(i16vec4);" "uint16_t maxInvocationsExclusiveScanNonUniformAMD(uint16_t);" "u16vec2 maxInvocationsExclusiveScanNonUniformAMD(u16vec2);" "u16vec3 maxInvocationsExclusiveScanNonUniformAMD(u16vec3);" "u16vec4 maxInvocationsExclusiveScanNonUniformAMD(u16vec4);" "float addInvocationsNonUniformAMD(float);" "vec2 addInvocationsNonUniformAMD(vec2);" "vec3 addInvocationsNonUniformAMD(vec3);" "vec4 addInvocationsNonUniformAMD(vec4);" "int addInvocationsNonUniformAMD(int);" "ivec2 addInvocationsNonUniformAMD(ivec2);" "ivec3 addInvocationsNonUniformAMD(ivec3);" "ivec4 addInvocationsNonUniformAMD(ivec4);" "uint addInvocationsNonUniformAMD(uint);" "uvec2 addInvocationsNonUniformAMD(uvec2);" "uvec3 addInvocationsNonUniformAMD(uvec3);" "uvec4 addInvocationsNonUniformAMD(uvec4);" "double addInvocationsNonUniformAMD(double);" "dvec2 addInvocationsNonUniformAMD(dvec2);" "dvec3 addInvocationsNonUniformAMD(dvec3);" "dvec4 addInvocationsNonUniformAMD(dvec4);" "int64_t addInvocationsNonUniformAMD(int64_t);" "i64vec2 addInvocationsNonUniformAMD(i64vec2);" "i64vec3 addInvocationsNonUniformAMD(i64vec3);" "i64vec4 addInvocationsNonUniformAMD(i64vec4);" "uint64_t addInvocationsNonUniformAMD(uint64_t);" "u64vec2 addInvocationsNonUniformAMD(u64vec2);" "u64vec3 addInvocationsNonUniformAMD(u64vec3);" "u64vec4 addInvocationsNonUniformAMD(u64vec4);" "float16_t addInvocationsNonUniformAMD(float16_t);" "f16vec2 addInvocationsNonUniformAMD(f16vec2);" "f16vec3 addInvocationsNonUniformAMD(f16vec3);" "f16vec4 addInvocationsNonUniformAMD(f16vec4);" "int16_t addInvocationsNonUniformAMD(int16_t);" "i16vec2 addInvocationsNonUniformAMD(i16vec2);" "i16vec3 addInvocationsNonUniformAMD(i16vec3);" "i16vec4 addInvocationsNonUniformAMD(i16vec4);" "uint16_t addInvocationsNonUniformAMD(uint16_t);" "u16vec2 addInvocationsNonUniformAMD(u16vec2);" "u16vec3 addInvocationsNonUniformAMD(u16vec3);" "u16vec4 addInvocationsNonUniformAMD(u16vec4);" "float addInvocationsInclusiveScanNonUniformAMD(float);" "vec2 addInvocationsInclusiveScanNonUniformAMD(vec2);" "vec3 addInvocationsInclusiveScanNonUniformAMD(vec3);" "vec4 addInvocationsInclusiveScanNonUniformAMD(vec4);" "int addInvocationsInclusiveScanNonUniformAMD(int);" "ivec2 addInvocationsInclusiveScanNonUniformAMD(ivec2);" "ivec3 addInvocationsInclusiveScanNonUniformAMD(ivec3);" "ivec4 addInvocationsInclusiveScanNonUniformAMD(ivec4);" "uint addInvocationsInclusiveScanNonUniformAMD(uint);" "uvec2 addInvocationsInclusiveScanNonUniformAMD(uvec2);" "uvec3 addInvocationsInclusiveScanNonUniformAMD(uvec3);" "uvec4 addInvocationsInclusiveScanNonUniformAMD(uvec4);" "double addInvocationsInclusiveScanNonUniformAMD(double);" "dvec2 addInvocationsInclusiveScanNonUniformAMD(dvec2);" "dvec3 addInvocationsInclusiveScanNonUniformAMD(dvec3);" "dvec4 addInvocationsInclusiveScanNonUniformAMD(dvec4);" "int64_t addInvocationsInclusiveScanNonUniformAMD(int64_t);" "i64vec2 addInvocationsInclusiveScanNonUniformAMD(i64vec2);" "i64vec3 addInvocationsInclusiveScanNonUniformAMD(i64vec3);" "i64vec4 addInvocationsInclusiveScanNonUniformAMD(i64vec4);" "uint64_t addInvocationsInclusiveScanNonUniformAMD(uint64_t);" "u64vec2 addInvocationsInclusiveScanNonUniformAMD(u64vec2);" "u64vec3 addInvocationsInclusiveScanNonUniformAMD(u64vec3);" "u64vec4 addInvocationsInclusiveScanNonUniformAMD(u64vec4);" "float16_t addInvocationsInclusiveScanNonUniformAMD(float16_t);" "f16vec2 addInvocationsInclusiveScanNonUniformAMD(f16vec2);" "f16vec3 addInvocationsInclusiveScanNonUniformAMD(f16vec3);" "f16vec4 addInvocationsInclusiveScanNonUniformAMD(f16vec4);" "int16_t addInvocationsInclusiveScanNonUniformAMD(int16_t);" "i16vec2 addInvocationsInclusiveScanNonUniformAMD(i16vec2);" "i16vec3 addInvocationsInclusiveScanNonUniformAMD(i16vec3);" "i16vec4 addInvocationsInclusiveScanNonUniformAMD(i16vec4);" "uint16_t addInvocationsInclusiveScanNonUniformAMD(uint16_t);" "u16vec2 addInvocationsInclusiveScanNonUniformAMD(u16vec2);" "u16vec3 addInvocationsInclusiveScanNonUniformAMD(u16vec3);" "u16vec4 addInvocationsInclusiveScanNonUniformAMD(u16vec4);" "float addInvocationsExclusiveScanNonUniformAMD(float);" "vec2 addInvocationsExclusiveScanNonUniformAMD(vec2);" "vec3 addInvocationsExclusiveScanNonUniformAMD(vec3);" "vec4 addInvocationsExclusiveScanNonUniformAMD(vec4);" "int addInvocationsExclusiveScanNonUniformAMD(int);" "ivec2 addInvocationsExclusiveScanNonUniformAMD(ivec2);" "ivec3 addInvocationsExclusiveScanNonUniformAMD(ivec3);" "ivec4 addInvocationsExclusiveScanNonUniformAMD(ivec4);" "uint addInvocationsExclusiveScanNonUniformAMD(uint);" "uvec2 addInvocationsExclusiveScanNonUniformAMD(uvec2);" "uvec3 addInvocationsExclusiveScanNonUniformAMD(uvec3);" "uvec4 addInvocationsExclusiveScanNonUniformAMD(uvec4);" "double addInvocationsExclusiveScanNonUniformAMD(double);" "dvec2 addInvocationsExclusiveScanNonUniformAMD(dvec2);" "dvec3 addInvocationsExclusiveScanNonUniformAMD(dvec3);" "dvec4 addInvocationsExclusiveScanNonUniformAMD(dvec4);" "int64_t addInvocationsExclusiveScanNonUniformAMD(int64_t);" "i64vec2 addInvocationsExclusiveScanNonUniformAMD(i64vec2);" "i64vec3 addInvocationsExclusiveScanNonUniformAMD(i64vec3);" "i64vec4 addInvocationsExclusiveScanNonUniformAMD(i64vec4);" "uint64_t addInvocationsExclusiveScanNonUniformAMD(uint64_t);" "u64vec2 addInvocationsExclusiveScanNonUniformAMD(u64vec2);" "u64vec3 addInvocationsExclusiveScanNonUniformAMD(u64vec3);" "u64vec4 addInvocationsExclusiveScanNonUniformAMD(u64vec4);" "float16_t addInvocationsExclusiveScanNonUniformAMD(float16_t);" "f16vec2 addInvocationsExclusiveScanNonUniformAMD(f16vec2);" "f16vec3 addInvocationsExclusiveScanNonUniformAMD(f16vec3);" "f16vec4 addInvocationsExclusiveScanNonUniformAMD(f16vec4);" "int16_t addInvocationsExclusiveScanNonUniformAMD(int16_t);" "i16vec2 addInvocationsExclusiveScanNonUniformAMD(i16vec2);" "i16vec3 addInvocationsExclusiveScanNonUniformAMD(i16vec3);" "i16vec4 addInvocationsExclusiveScanNonUniformAMD(i16vec4);" "uint16_t addInvocationsExclusiveScanNonUniformAMD(uint16_t);" "u16vec2 addInvocationsExclusiveScanNonUniformAMD(u16vec2);" "u16vec3 addInvocationsExclusiveScanNonUniformAMD(u16vec3);" "u16vec4 addInvocationsExclusiveScanNonUniformAMD(u16vec4);" "float swizzleInvocationsAMD(float, uvec4);" "vec2 swizzleInvocationsAMD(vec2, uvec4);" "vec3 swizzleInvocationsAMD(vec3, uvec4);" "vec4 swizzleInvocationsAMD(vec4, uvec4);" "int swizzleInvocationsAMD(int, uvec4);" "ivec2 swizzleInvocationsAMD(ivec2, uvec4);" "ivec3 swizzleInvocationsAMD(ivec3, uvec4);" "ivec4 swizzleInvocationsAMD(ivec4, uvec4);" "uint swizzleInvocationsAMD(uint, uvec4);" "uvec2 swizzleInvocationsAMD(uvec2, uvec4);" "uvec3 swizzleInvocationsAMD(uvec3, uvec4);" "uvec4 swizzleInvocationsAMD(uvec4, uvec4);" "float swizzleInvocationsMaskedAMD(float, uvec3);" "vec2 swizzleInvocationsMaskedAMD(vec2, uvec3);" "vec3 swizzleInvocationsMaskedAMD(vec3, uvec3);" "vec4 swizzleInvocationsMaskedAMD(vec4, uvec3);" "int swizzleInvocationsMaskedAMD(int, uvec3);" "ivec2 swizzleInvocationsMaskedAMD(ivec2, uvec3);" "ivec3 swizzleInvocationsMaskedAMD(ivec3, uvec3);" "ivec4 swizzleInvocationsMaskedAMD(ivec4, uvec3);" "uint swizzleInvocationsMaskedAMD(uint, uvec3);" "uvec2 swizzleInvocationsMaskedAMD(uvec2, uvec3);" "uvec3 swizzleInvocationsMaskedAMD(uvec3, uvec3);" "uvec4 swizzleInvocationsMaskedAMD(uvec4, uvec3);" "float writeInvocationAMD(float, float, uint);" "vec2 writeInvocationAMD(vec2, vec2, uint);" "vec3 writeInvocationAMD(vec3, vec3, uint);" "vec4 writeInvocationAMD(vec4, vec4, uint);" "int writeInvocationAMD(int, int, uint);" "ivec2 writeInvocationAMD(ivec2, ivec2, uint);" "ivec3 writeInvocationAMD(ivec3, ivec3, uint);" "ivec4 writeInvocationAMD(ivec4, ivec4, uint);" "uint writeInvocationAMD(uint, uint, uint);" "uvec2 writeInvocationAMD(uvec2, uvec2, uint);" "uvec3 writeInvocationAMD(uvec3, uvec3, uint);" "uvec4 writeInvocationAMD(uvec4, uvec4, uint);" "uint mbcntAMD(uint64_t);" "\n"); } // GL_AMD_gcn_shader if (profile != EEsProfile && version >= 440) { commonBuiltins.append( "float cubeFaceIndexAMD(vec3);" "vec2 cubeFaceCoordAMD(vec3);" "uint64_t timeAMD();" "in int gl_SIMDGroupSizeAMD;" "\n"); } // GL_AMD_shader_fragment_mask if (profile != EEsProfile && version >= 450) { commonBuiltins.append( "uint fragmentMaskFetchAMD(sampler2DMS, ivec2);" "uint fragmentMaskFetchAMD(isampler2DMS, ivec2);" "uint fragmentMaskFetchAMD(usampler2DMS, ivec2);" "uint fragmentMaskFetchAMD(sampler2DMSArray, ivec3);" "uint fragmentMaskFetchAMD(isampler2DMSArray, ivec3);" "uint fragmentMaskFetchAMD(usampler2DMSArray, ivec3);" "vec4 fragmentFetchAMD(sampler2DMS, ivec2, uint);" "ivec4 fragmentFetchAMD(isampler2DMS, ivec2, uint);" "uvec4 fragmentFetchAMD(usampler2DMS, ivec2, uint);" "vec4 fragmentFetchAMD(sampler2DMSArray, ivec3, uint);" "ivec4 fragmentFetchAMD(isampler2DMSArray, ivec3, uint);" "uvec4 fragmentFetchAMD(usampler2DMSArray, ivec3, uint);" "\n"); } if ((profile != EEsProfile && version >= 130) || (profile == EEsProfile && version >= 300)) { commonBuiltins.append( "uint countLeadingZeros(uint);" "uvec2 countLeadingZeros(uvec2);" "uvec3 countLeadingZeros(uvec3);" "uvec4 countLeadingZeros(uvec4);" "uint countTrailingZeros(uint);" "uvec2 countTrailingZeros(uvec2);" "uvec3 countTrailingZeros(uvec3);" "uvec4 countTrailingZeros(uvec4);" "uint absoluteDifference(int, int);" "uvec2 absoluteDifference(ivec2, ivec2);" "uvec3 absoluteDifference(ivec3, ivec3);" "uvec4 absoluteDifference(ivec4, ivec4);" "uint16_t absoluteDifference(int16_t, int16_t);" "u16vec2 absoluteDifference(i16vec2, i16vec2);" "u16vec3 absoluteDifference(i16vec3, i16vec3);" "u16vec4 absoluteDifference(i16vec4, i16vec4);" "uint64_t absoluteDifference(int64_t, int64_t);" "u64vec2 absoluteDifference(i64vec2, i64vec2);" "u64vec3 absoluteDifference(i64vec3, i64vec3);" "u64vec4 absoluteDifference(i64vec4, i64vec4);" "uint absoluteDifference(uint, uint);" "uvec2 absoluteDifference(uvec2, uvec2);" "uvec3 absoluteDifference(uvec3, uvec3);" "uvec4 absoluteDifference(uvec4, uvec4);" "uint16_t absoluteDifference(uint16_t, uint16_t);" "u16vec2 absoluteDifference(u16vec2, u16vec2);" "u16vec3 absoluteDifference(u16vec3, u16vec3);" "u16vec4 absoluteDifference(u16vec4, u16vec4);" "uint64_t absoluteDifference(uint64_t, uint64_t);" "u64vec2 absoluteDifference(u64vec2, u64vec2);" "u64vec3 absoluteDifference(u64vec3, u64vec3);" "u64vec4 absoluteDifference(u64vec4, u64vec4);" "int addSaturate(int, int);" "ivec2 addSaturate(ivec2, ivec2);" "ivec3 addSaturate(ivec3, ivec3);" "ivec4 addSaturate(ivec4, ivec4);" "int16_t addSaturate(int16_t, int16_t);" "i16vec2 addSaturate(i16vec2, i16vec2);" "i16vec3 addSaturate(i16vec3, i16vec3);" "i16vec4 addSaturate(i16vec4, i16vec4);" "int64_t addSaturate(int64_t, int64_t);" "i64vec2 addSaturate(i64vec2, i64vec2);" "i64vec3 addSaturate(i64vec3, i64vec3);" "i64vec4 addSaturate(i64vec4, i64vec4);" "uint addSaturate(uint, uint);" "uvec2 addSaturate(uvec2, uvec2);" "uvec3 addSaturate(uvec3, uvec3);" "uvec4 addSaturate(uvec4, uvec4);" "uint16_t addSaturate(uint16_t, uint16_t);" "u16vec2 addSaturate(u16vec2, u16vec2);" "u16vec3 addSaturate(u16vec3, u16vec3);" "u16vec4 addSaturate(u16vec4, u16vec4);" "uint64_t addSaturate(uint64_t, uint64_t);" "u64vec2 addSaturate(u64vec2, u64vec2);" "u64vec3 addSaturate(u64vec3, u64vec3);" "u64vec4 addSaturate(u64vec4, u64vec4);" "int subtractSaturate(int, int);" "ivec2 subtractSaturate(ivec2, ivec2);" "ivec3 subtractSaturate(ivec3, ivec3);" "ivec4 subtractSaturate(ivec4, ivec4);" "int16_t subtractSaturate(int16_t, int16_t);" "i16vec2 subtractSaturate(i16vec2, i16vec2);" "i16vec3 subtractSaturate(i16vec3, i16vec3);" "i16vec4 subtractSaturate(i16vec4, i16vec4);" "int64_t subtractSaturate(int64_t, int64_t);" "i64vec2 subtractSaturate(i64vec2, i64vec2);" "i64vec3 subtractSaturate(i64vec3, i64vec3);" "i64vec4 subtractSaturate(i64vec4, i64vec4);" "uint subtractSaturate(uint, uint);" "uvec2 subtractSaturate(uvec2, uvec2);" "uvec3 subtractSaturate(uvec3, uvec3);" "uvec4 subtractSaturate(uvec4, uvec4);" "uint16_t subtractSaturate(uint16_t, uint16_t);" "u16vec2 subtractSaturate(u16vec2, u16vec2);" "u16vec3 subtractSaturate(u16vec3, u16vec3);" "u16vec4 subtractSaturate(u16vec4, u16vec4);" "uint64_t subtractSaturate(uint64_t, uint64_t);" "u64vec2 subtractSaturate(u64vec2, u64vec2);" "u64vec3 subtractSaturate(u64vec3, u64vec3);" "u64vec4 subtractSaturate(u64vec4, u64vec4);" "int average(int, int);" "ivec2 average(ivec2, ivec2);" "ivec3 average(ivec3, ivec3);" "ivec4 average(ivec4, ivec4);" "int16_t average(int16_t, int16_t);" "i16vec2 average(i16vec2, i16vec2);" "i16vec3 average(i16vec3, i16vec3);" "i16vec4 average(i16vec4, i16vec4);" "int64_t average(int64_t, int64_t);" "i64vec2 average(i64vec2, i64vec2);" "i64vec3 average(i64vec3, i64vec3);" "i64vec4 average(i64vec4, i64vec4);" "uint average(uint, uint);" "uvec2 average(uvec2, uvec2);" "uvec3 average(uvec3, uvec3);" "uvec4 average(uvec4, uvec4);" "uint16_t average(uint16_t, uint16_t);" "u16vec2 average(u16vec2, u16vec2);" "u16vec3 average(u16vec3, u16vec3);" "u16vec4 average(u16vec4, u16vec4);" "uint64_t average(uint64_t, uint64_t);" "u64vec2 average(u64vec2, u64vec2);" "u64vec3 average(u64vec3, u64vec3);" "u64vec4 average(u64vec4, u64vec4);" "int averageRounded(int, int);" "ivec2 averageRounded(ivec2, ivec2);" "ivec3 averageRounded(ivec3, ivec3);" "ivec4 averageRounded(ivec4, ivec4);" "int16_t averageRounded(int16_t, int16_t);" "i16vec2 averageRounded(i16vec2, i16vec2);" "i16vec3 averageRounded(i16vec3, i16vec3);" "i16vec4 averageRounded(i16vec4, i16vec4);" "int64_t averageRounded(int64_t, int64_t);" "i64vec2 averageRounded(i64vec2, i64vec2);" "i64vec3 averageRounded(i64vec3, i64vec3);" "i64vec4 averageRounded(i64vec4, i64vec4);" "uint averageRounded(uint, uint);" "uvec2 averageRounded(uvec2, uvec2);" "uvec3 averageRounded(uvec3, uvec3);" "uvec4 averageRounded(uvec4, uvec4);" "uint16_t averageRounded(uint16_t, uint16_t);" "u16vec2 averageRounded(u16vec2, u16vec2);" "u16vec3 averageRounded(u16vec3, u16vec3);" "u16vec4 averageRounded(u16vec4, u16vec4);" "uint64_t averageRounded(uint64_t, uint64_t);" "u64vec2 averageRounded(u64vec2, u64vec2);" "u64vec3 averageRounded(u64vec3, u64vec3);" "u64vec4 averageRounded(u64vec4, u64vec4);" "int multiply32x16(int, int);" "ivec2 multiply32x16(ivec2, ivec2);" "ivec3 multiply32x16(ivec3, ivec3);" "ivec4 multiply32x16(ivec4, ivec4);" "uint multiply32x16(uint, uint);" "uvec2 multiply32x16(uvec2, uvec2);" "uvec3 multiply32x16(uvec3, uvec3);" "uvec4 multiply32x16(uvec4, uvec4);" "\n"); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { commonBuiltins.append( "struct gl_TextureFootprint2DNV {" "uvec2 anchor;" "uvec2 offset;" "uvec2 mask;" "uint lod;" "uint granularity;" "};" "struct gl_TextureFootprint3DNV {" "uvec3 anchor;" "uvec3 offset;" "uvec2 mask;" "uint lod;" "uint granularity;" "};" "bool textureFootprintNV(sampler2D, vec2, int, bool, out gl_TextureFootprint2DNV);" "bool textureFootprintNV(sampler3D, vec3, int, bool, out gl_TextureFootprint3DNV);" "bool textureFootprintNV(sampler2D, vec2, int, bool, out gl_TextureFootprint2DNV, float);" "bool textureFootprintNV(sampler3D, vec3, int, bool, out gl_TextureFootprint3DNV, float);" "bool textureFootprintClampNV(sampler2D, vec2, float, int, bool, out gl_TextureFootprint2DNV);" "bool textureFootprintClampNV(sampler3D, vec3, float, int, bool, out gl_TextureFootprint3DNV);" "bool textureFootprintClampNV(sampler2D, vec2, float, int, bool, out gl_TextureFootprint2DNV, float);" "bool textureFootprintClampNV(sampler3D, vec3, float, int, bool, out gl_TextureFootprint3DNV, float);" "bool textureFootprintLodNV(sampler2D, vec2, float, int, bool, out gl_TextureFootprint2DNV);" "bool textureFootprintLodNV(sampler3D, vec3, float, int, bool, out gl_TextureFootprint3DNV);" "bool textureFootprintGradNV(sampler2D, vec2, vec2, vec2, int, bool, out gl_TextureFootprint2DNV);" "bool textureFootprintGradClampNV(sampler2D, vec2, vec2, vec2, float, int, bool, out gl_TextureFootprint2DNV);" "\n"); } if ((profile == EEsProfile && version >= 300 && version < 310) || (profile != EEsProfile && version >= 150 && version < 450)) { // GL_EXT_shader_integer_mix commonBuiltins.append("int mix(int, int, bool);" "ivec2 mix(ivec2, ivec2, bvec2);" "ivec3 mix(ivec3, ivec3, bvec3);" "ivec4 mix(ivec4, ivec4, bvec4);" "uint mix(uint, uint, bool );" "uvec2 mix(uvec2, uvec2, bvec2);" "uvec3 mix(uvec3, uvec3, bvec3);" "uvec4 mix(uvec4, uvec4, bvec4);" "bool mix(bool, bool, bool );" "bvec2 mix(bvec2, bvec2, bvec2);" "bvec3 mix(bvec3, bvec3, bvec3);" "bvec4 mix(bvec4, bvec4, bvec4);" "\n"); } // GL_AMD_gpu_shader_half_float/Explicit types if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( "float16_t radians(float16_t);" "f16vec2 radians(f16vec2);" "f16vec3 radians(f16vec3);" "f16vec4 radians(f16vec4);" "float16_t degrees(float16_t);" "f16vec2 degrees(f16vec2);" "f16vec3 degrees(f16vec3);" "f16vec4 degrees(f16vec4);" "float16_t sin(float16_t);" "f16vec2 sin(f16vec2);" "f16vec3 sin(f16vec3);" "f16vec4 sin(f16vec4);" "float16_t cos(float16_t);" "f16vec2 cos(f16vec2);" "f16vec3 cos(f16vec3);" "f16vec4 cos(f16vec4);" "float16_t tan(float16_t);" "f16vec2 tan(f16vec2);" "f16vec3 tan(f16vec3);" "f16vec4 tan(f16vec4);" "float16_t asin(float16_t);" "f16vec2 asin(f16vec2);" "f16vec3 asin(f16vec3);" "f16vec4 asin(f16vec4);" "float16_t acos(float16_t);" "f16vec2 acos(f16vec2);" "f16vec3 acos(f16vec3);" "f16vec4 acos(f16vec4);" "float16_t atan(float16_t, float16_t);" "f16vec2 atan(f16vec2, f16vec2);" "f16vec3 atan(f16vec3, f16vec3);" "f16vec4 atan(f16vec4, f16vec4);" "float16_t atan(float16_t);" "f16vec2 atan(f16vec2);" "f16vec3 atan(f16vec3);" "f16vec4 atan(f16vec4);" "float16_t sinh(float16_t);" "f16vec2 sinh(f16vec2);" "f16vec3 sinh(f16vec3);" "f16vec4 sinh(f16vec4);" "float16_t cosh(float16_t);" "f16vec2 cosh(f16vec2);" "f16vec3 cosh(f16vec3);" "f16vec4 cosh(f16vec4);" "float16_t tanh(float16_t);" "f16vec2 tanh(f16vec2);" "f16vec3 tanh(f16vec3);" "f16vec4 tanh(f16vec4);" "float16_t asinh(float16_t);" "f16vec2 asinh(f16vec2);" "f16vec3 asinh(f16vec3);" "f16vec4 asinh(f16vec4);" "float16_t acosh(float16_t);" "f16vec2 acosh(f16vec2);" "f16vec3 acosh(f16vec3);" "f16vec4 acosh(f16vec4);" "float16_t atanh(float16_t);" "f16vec2 atanh(f16vec2);" "f16vec3 atanh(f16vec3);" "f16vec4 atanh(f16vec4);" "float16_t pow(float16_t, float16_t);" "f16vec2 pow(f16vec2, f16vec2);" "f16vec3 pow(f16vec3, f16vec3);" "f16vec4 pow(f16vec4, f16vec4);" "float16_t exp(float16_t);" "f16vec2 exp(f16vec2);" "f16vec3 exp(f16vec3);" "f16vec4 exp(f16vec4);" "float16_t log(float16_t);" "f16vec2 log(f16vec2);" "f16vec3 log(f16vec3);" "f16vec4 log(f16vec4);" "float16_t exp2(float16_t);" "f16vec2 exp2(f16vec2);" "f16vec3 exp2(f16vec3);" "f16vec4 exp2(f16vec4);" "float16_t log2(float16_t);" "f16vec2 log2(f16vec2);" "f16vec3 log2(f16vec3);" "f16vec4 log2(f16vec4);" "float16_t sqrt(float16_t);" "f16vec2 sqrt(f16vec2);" "f16vec3 sqrt(f16vec3);" "f16vec4 sqrt(f16vec4);" "float16_t inversesqrt(float16_t);" "f16vec2 inversesqrt(f16vec2);" "f16vec3 inversesqrt(f16vec3);" "f16vec4 inversesqrt(f16vec4);" "float16_t abs(float16_t);" "f16vec2 abs(f16vec2);" "f16vec3 abs(f16vec3);" "f16vec4 abs(f16vec4);" "float16_t sign(float16_t);" "f16vec2 sign(f16vec2);" "f16vec3 sign(f16vec3);" "f16vec4 sign(f16vec4);" "float16_t floor(float16_t);" "f16vec2 floor(f16vec2);" "f16vec3 floor(f16vec3);" "f16vec4 floor(f16vec4);" "float16_t trunc(float16_t);" "f16vec2 trunc(f16vec2);" "f16vec3 trunc(f16vec3);" "f16vec4 trunc(f16vec4);" "float16_t round(float16_t);" "f16vec2 round(f16vec2);" "f16vec3 round(f16vec3);" "f16vec4 round(f16vec4);" "float16_t roundEven(float16_t);" "f16vec2 roundEven(f16vec2);" "f16vec3 roundEven(f16vec3);" "f16vec4 roundEven(f16vec4);" "float16_t ceil(float16_t);" "f16vec2 ceil(f16vec2);" "f16vec3 ceil(f16vec3);" "f16vec4 ceil(f16vec4);" "float16_t fract(float16_t);" "f16vec2 fract(f16vec2);" "f16vec3 fract(f16vec3);" "f16vec4 fract(f16vec4);" "float16_t mod(float16_t, float16_t);" "f16vec2 mod(f16vec2, float16_t);" "f16vec3 mod(f16vec3, float16_t);" "f16vec4 mod(f16vec4, float16_t);" "f16vec2 mod(f16vec2, f16vec2);" "f16vec3 mod(f16vec3, f16vec3);" "f16vec4 mod(f16vec4, f16vec4);" "float16_t modf(float16_t, out float16_t);" "f16vec2 modf(f16vec2, out f16vec2);" "f16vec3 modf(f16vec3, out f16vec3);" "f16vec4 modf(f16vec4, out f16vec4);" "float16_t min(float16_t, float16_t);" "f16vec2 min(f16vec2, float16_t);" "f16vec3 min(f16vec3, float16_t);" "f16vec4 min(f16vec4, float16_t);" "f16vec2 min(f16vec2, f16vec2);" "f16vec3 min(f16vec3, f16vec3);" "f16vec4 min(f16vec4, f16vec4);" "float16_t max(float16_t, float16_t);" "f16vec2 max(f16vec2, float16_t);" "f16vec3 max(f16vec3, float16_t);" "f16vec4 max(f16vec4, float16_t);" "f16vec2 max(f16vec2, f16vec2);" "f16vec3 max(f16vec3, f16vec3);" "f16vec4 max(f16vec4, f16vec4);" "float16_t clamp(float16_t, float16_t, float16_t);" "f16vec2 clamp(f16vec2, float16_t, float16_t);" "f16vec3 clamp(f16vec3, float16_t, float16_t);" "f16vec4 clamp(f16vec4, float16_t, float16_t);" "f16vec2 clamp(f16vec2, f16vec2, f16vec2);" "f16vec3 clamp(f16vec3, f16vec3, f16vec3);" "f16vec4 clamp(f16vec4, f16vec4, f16vec4);" "float16_t mix(float16_t, float16_t, float16_t);" "f16vec2 mix(f16vec2, f16vec2, float16_t);" "f16vec3 mix(f16vec3, f16vec3, float16_t);" "f16vec4 mix(f16vec4, f16vec4, float16_t);" "f16vec2 mix(f16vec2, f16vec2, f16vec2);" "f16vec3 mix(f16vec3, f16vec3, f16vec3);" "f16vec4 mix(f16vec4, f16vec4, f16vec4);" "float16_t mix(float16_t, float16_t, bool);" "f16vec2 mix(f16vec2, f16vec2, bvec2);" "f16vec3 mix(f16vec3, f16vec3, bvec3);" "f16vec4 mix(f16vec4, f16vec4, bvec4);" "float16_t step(float16_t, float16_t);" "f16vec2 step(f16vec2, f16vec2);" "f16vec3 step(f16vec3, f16vec3);" "f16vec4 step(f16vec4, f16vec4);" "f16vec2 step(float16_t, f16vec2);" "f16vec3 step(float16_t, f16vec3);" "f16vec4 step(float16_t, f16vec4);" "float16_t smoothstep(float16_t, float16_t, float16_t);" "f16vec2 smoothstep(f16vec2, f16vec2, f16vec2);" "f16vec3 smoothstep(f16vec3, f16vec3, f16vec3);" "f16vec4 smoothstep(f16vec4, f16vec4, f16vec4);" "f16vec2 smoothstep(float16_t, float16_t, f16vec2);" "f16vec3 smoothstep(float16_t, float16_t, f16vec3);" "f16vec4 smoothstep(float16_t, float16_t, f16vec4);" "bool isnan(float16_t);" "bvec2 isnan(f16vec2);" "bvec3 isnan(f16vec3);" "bvec4 isnan(f16vec4);" "bool isinf(float16_t);" "bvec2 isinf(f16vec2);" "bvec3 isinf(f16vec3);" "bvec4 isinf(f16vec4);" "float16_t fma(float16_t, float16_t, float16_t);" "f16vec2 fma(f16vec2, f16vec2, f16vec2);" "f16vec3 fma(f16vec3, f16vec3, f16vec3);" "f16vec4 fma(f16vec4, f16vec4, f16vec4);" "float16_t frexp(float16_t, out int);" "f16vec2 frexp(f16vec2, out ivec2);" "f16vec3 frexp(f16vec3, out ivec3);" "f16vec4 frexp(f16vec4, out ivec4);" "float16_t ldexp(float16_t, in int);" "f16vec2 ldexp(f16vec2, in ivec2);" "f16vec3 ldexp(f16vec3, in ivec3);" "f16vec4 ldexp(f16vec4, in ivec4);" "uint packFloat2x16(f16vec2);" "f16vec2 unpackFloat2x16(uint);" "float16_t length(float16_t);" "float16_t length(f16vec2);" "float16_t length(f16vec3);" "float16_t length(f16vec4);" "float16_t distance(float16_t, float16_t);" "float16_t distance(f16vec2, f16vec2);" "float16_t distance(f16vec3, f16vec3);" "float16_t distance(f16vec4, f16vec4);" "float16_t dot(float16_t, float16_t);" "float16_t dot(f16vec2, f16vec2);" "float16_t dot(f16vec3, f16vec3);" "float16_t dot(f16vec4, f16vec4);" "f16vec3 cross(f16vec3, f16vec3);" "float16_t normalize(float16_t);" "f16vec2 normalize(f16vec2);" "f16vec3 normalize(f16vec3);" "f16vec4 normalize(f16vec4);" "float16_t faceforward(float16_t, float16_t, float16_t);" "f16vec2 faceforward(f16vec2, f16vec2, f16vec2);" "f16vec3 faceforward(f16vec3, f16vec3, f16vec3);" "f16vec4 faceforward(f16vec4, f16vec4, f16vec4);" "float16_t reflect(float16_t, float16_t);" "f16vec2 reflect(f16vec2, f16vec2);" "f16vec3 reflect(f16vec3, f16vec3);" "f16vec4 reflect(f16vec4, f16vec4);" "float16_t refract(float16_t, float16_t, float16_t);" "f16vec2 refract(f16vec2, f16vec2, float16_t);" "f16vec3 refract(f16vec3, f16vec3, float16_t);" "f16vec4 refract(f16vec4, f16vec4, float16_t);" "f16mat2 matrixCompMult(f16mat2, f16mat2);" "f16mat3 matrixCompMult(f16mat3, f16mat3);" "f16mat4 matrixCompMult(f16mat4, f16mat4);" "f16mat2x3 matrixCompMult(f16mat2x3, f16mat2x3);" "f16mat2x4 matrixCompMult(f16mat2x4, f16mat2x4);" "f16mat3x2 matrixCompMult(f16mat3x2, f16mat3x2);" "f16mat3x4 matrixCompMult(f16mat3x4, f16mat3x4);" "f16mat4x2 matrixCompMult(f16mat4x2, f16mat4x2);" "f16mat4x3 matrixCompMult(f16mat4x3, f16mat4x3);" "f16mat2 outerProduct(f16vec2, f16vec2);" "f16mat3 outerProduct(f16vec3, f16vec3);" "f16mat4 outerProduct(f16vec4, f16vec4);" "f16mat2x3 outerProduct(f16vec3, f16vec2);" "f16mat3x2 outerProduct(f16vec2, f16vec3);" "f16mat2x4 outerProduct(f16vec4, f16vec2);" "f16mat4x2 outerProduct(f16vec2, f16vec4);" "f16mat3x4 outerProduct(f16vec4, f16vec3);" "f16mat4x3 outerProduct(f16vec3, f16vec4);" "f16mat2 transpose(f16mat2);" "f16mat3 transpose(f16mat3);" "f16mat4 transpose(f16mat4);" "f16mat2x3 transpose(f16mat3x2);" "f16mat3x2 transpose(f16mat2x3);" "f16mat2x4 transpose(f16mat4x2);" "f16mat4x2 transpose(f16mat2x4);" "f16mat3x4 transpose(f16mat4x3);" "f16mat4x3 transpose(f16mat3x4);" "float16_t determinant(f16mat2);" "float16_t determinant(f16mat3);" "float16_t determinant(f16mat4);" "f16mat2 inverse(f16mat2);" "f16mat3 inverse(f16mat3);" "f16mat4 inverse(f16mat4);" "bvec2 lessThan(f16vec2, f16vec2);" "bvec3 lessThan(f16vec3, f16vec3);" "bvec4 lessThan(f16vec4, f16vec4);" "bvec2 lessThanEqual(f16vec2, f16vec2);" "bvec3 lessThanEqual(f16vec3, f16vec3);" "bvec4 lessThanEqual(f16vec4, f16vec4);" "bvec2 greaterThan(f16vec2, f16vec2);" "bvec3 greaterThan(f16vec3, f16vec3);" "bvec4 greaterThan(f16vec4, f16vec4);" "bvec2 greaterThanEqual(f16vec2, f16vec2);" "bvec3 greaterThanEqual(f16vec3, f16vec3);" "bvec4 greaterThanEqual(f16vec4, f16vec4);" "bvec2 equal(f16vec2, f16vec2);" "bvec3 equal(f16vec3, f16vec3);" "bvec4 equal(f16vec4, f16vec4);" "bvec2 notEqual(f16vec2, f16vec2);" "bvec3 notEqual(f16vec3, f16vec3);" "bvec4 notEqual(f16vec4, f16vec4);" "bfloat16_t dot(bfloat16_t, bfloat16_t);" "bfloat16_t dot(bf16vec2, bf16vec2);" "bfloat16_t dot(bf16vec3, bf16vec3);" "bfloat16_t dot(bf16vec4, bf16vec4);" "int16_t bfloat16BitsToIntEXT(bfloat16_t value);" "i16vec2 bfloat16BitsToIntEXT(bf16vec2 value);" "i16vec3 bfloat16BitsToIntEXT(bf16vec3 value);" "i16vec4 bfloat16BitsToIntEXT(bf16vec4 value);" "uint16_t bfloat16BitsToUintEXT(bfloat16_t value);" "u16vec2 bfloat16BitsToUintEXT(bf16vec2 value);" "u16vec3 bfloat16BitsToUintEXT(bf16vec3 value);" "u16vec4 bfloat16BitsToUintEXT(bf16vec4 value);" "bfloat16_t intBitsToBFloat16EXT(int16_t value);" "bf16vec2 intBitsToBFloat16EXT(i16vec2 value);" "bf16vec3 intBitsToBFloat16EXT(i16vec3 value);" "bf16vec4 intBitsToBFloat16EXT(i16vec4 value);" "bfloat16_t uintBitsToBFloat16EXT(uint16_t value);" "bf16vec2 uintBitsToBFloat16EXT(u16vec2 value);" "bf16vec3 uintBitsToBFloat16EXT(u16vec3 value);" "bf16vec4 uintBitsToBFloat16EXT(u16vec4 value);" "int8_t floate5m2BitsToIntEXT(floate5m2_t value);" "i8vec2 floate5m2BitsToIntEXT(fe5m2vec2 value);" "i8vec3 floate5m2BitsToIntEXT(fe5m2vec3 value);" "i8vec4 floate5m2BitsToIntEXT(fe5m2vec4 value);" "uint8_t floate5m2BitsToUintEXT(floate5m2_t value);" "u8vec2 floate5m2BitsToUintEXT(fe5m2vec2 value);" "u8vec3 floate5m2BitsToUintEXT(fe5m2vec3 value);" "u8vec4 floate5m2BitsToUintEXT(fe5m2vec4 value);" "floate5m2_t intBitsToFloate5m2EXT(int8_t value);" "fe5m2vec2 intBitsToFloate5m2EXT(i8vec2 value);" "fe5m2vec3 intBitsToFloate5m2EXT(i8vec3 value);" "fe5m2vec4 intBitsToFloate5m2EXT(i8vec4 value);" "floate5m2_t uintBitsToFloate5m2EXT(uint8_t value);" "fe5m2vec2 uintBitsToFloate5m2EXT(u8vec2 value);" "fe5m2vec3 uintBitsToFloate5m2EXT(u8vec3 value);" "fe5m2vec4 uintBitsToFloate5m2EXT(u8vec4 value);" "int8_t floate4m3BitsToIntEXT(floate4m3_t value);" "i8vec2 floate4m3BitsToIntEXT(fe4m3vec2 value);" "i8vec3 floate4m3BitsToIntEXT(fe4m3vec3 value);" "i8vec4 floate4m3BitsToIntEXT(fe4m3vec4 value);" "uint8_t floate4m3BitsToUintEXT(floate4m3_t value);" "u8vec2 floate4m3BitsToUintEXT(fe4m3vec2 value);" "u8vec3 floate4m3BitsToUintEXT(fe4m3vec3 value);" "u8vec4 floate4m3BitsToUintEXT(fe4m3vec4 value);" "floate4m3_t intBitsToFloate4m3EXT(int8_t value);" "fe4m3vec2 intBitsToFloate4m3EXT(i8vec2 value);" "fe4m3vec3 intBitsToFloate4m3EXT(i8vec3 value);" "fe4m3vec4 intBitsToFloate4m3EXT(i8vec4 value);" "floate4m3_t uintBitsToFloate4m3EXT(uint8_t value);" "fe4m3vec2 uintBitsToFloate4m3EXT(u8vec2 value);" "fe4m3vec3 uintBitsToFloate4m3EXT(u8vec3 value);" "fe4m3vec4 uintBitsToFloate4m3EXT(u8vec4 value);" "void saturatedConvertEXT();" "\n"); } // Explicit types if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( "int8_t abs(int8_t);" "i8vec2 abs(i8vec2);" "i8vec3 abs(i8vec3);" "i8vec4 abs(i8vec4);" "int8_t sign(int8_t);" "i8vec2 sign(i8vec2);" "i8vec3 sign(i8vec3);" "i8vec4 sign(i8vec4);" "int8_t min(int8_t x, int8_t y);" "i8vec2 min(i8vec2 x, int8_t y);" "i8vec3 min(i8vec3 x, int8_t y);" "i8vec4 min(i8vec4 x, int8_t y);" "i8vec2 min(i8vec2 x, i8vec2 y);" "i8vec3 min(i8vec3 x, i8vec3 y);" "i8vec4 min(i8vec4 x, i8vec4 y);" "uint8_t min(uint8_t x, uint8_t y);" "u8vec2 min(u8vec2 x, uint8_t y);" "u8vec3 min(u8vec3 x, uint8_t y);" "u8vec4 min(u8vec4 x, uint8_t y);" "u8vec2 min(u8vec2 x, u8vec2 y);" "u8vec3 min(u8vec3 x, u8vec3 y);" "u8vec4 min(u8vec4 x, u8vec4 y);" "int8_t max(int8_t x, int8_t y);" "i8vec2 max(i8vec2 x, int8_t y);" "i8vec3 max(i8vec3 x, int8_t y);" "i8vec4 max(i8vec4 x, int8_t y);" "i8vec2 max(i8vec2 x, i8vec2 y);" "i8vec3 max(i8vec3 x, i8vec3 y);" "i8vec4 max(i8vec4 x, i8vec4 y);" "uint8_t max(uint8_t x, uint8_t y);" "u8vec2 max(u8vec2 x, uint8_t y);" "u8vec3 max(u8vec3 x, uint8_t y);" "u8vec4 max(u8vec4 x, uint8_t y);" "u8vec2 max(u8vec2 x, u8vec2 y);" "u8vec3 max(u8vec3 x, u8vec3 y);" "u8vec4 max(u8vec4 x, u8vec4 y);" "int8_t clamp(int8_t x, int8_t minVal, int8_t maxVal);" "i8vec2 clamp(i8vec2 x, int8_t minVal, int8_t maxVal);" "i8vec3 clamp(i8vec3 x, int8_t minVal, int8_t maxVal);" "i8vec4 clamp(i8vec4 x, int8_t minVal, int8_t maxVal);" "i8vec2 clamp(i8vec2 x, i8vec2 minVal, i8vec2 maxVal);" "i8vec3 clamp(i8vec3 x, i8vec3 minVal, i8vec3 maxVal);" "i8vec4 clamp(i8vec4 x, i8vec4 minVal, i8vec4 maxVal);" "uint8_t clamp(uint8_t x, uint8_t minVal, uint8_t maxVal);" "u8vec2 clamp(u8vec2 x, uint8_t minVal, uint8_t maxVal);" "u8vec3 clamp(u8vec3 x, uint8_t minVal, uint8_t maxVal);" "u8vec4 clamp(u8vec4 x, uint8_t minVal, uint8_t maxVal);" "u8vec2 clamp(u8vec2 x, u8vec2 minVal, u8vec2 maxVal);" "u8vec3 clamp(u8vec3 x, u8vec3 minVal, u8vec3 maxVal);" "u8vec4 clamp(u8vec4 x, u8vec4 minVal, u8vec4 maxVal);" "int8_t mix(int8_t, int8_t, bool);" "i8vec2 mix(i8vec2, i8vec2, bvec2);" "i8vec3 mix(i8vec3, i8vec3, bvec3);" "i8vec4 mix(i8vec4, i8vec4, bvec4);" "uint8_t mix(uint8_t, uint8_t, bool);" "u8vec2 mix(u8vec2, u8vec2, bvec2);" "u8vec3 mix(u8vec3, u8vec3, bvec3);" "u8vec4 mix(u8vec4, u8vec4, bvec4);" "bvec2 lessThan(i8vec2, i8vec2);" "bvec3 lessThan(i8vec3, i8vec3);" "bvec4 lessThan(i8vec4, i8vec4);" "bvec2 lessThan(u8vec2, u8vec2);" "bvec3 lessThan(u8vec3, u8vec3);" "bvec4 lessThan(u8vec4, u8vec4);" "bvec2 lessThanEqual(i8vec2, i8vec2);" "bvec3 lessThanEqual(i8vec3, i8vec3);" "bvec4 lessThanEqual(i8vec4, i8vec4);" "bvec2 lessThanEqual(u8vec2, u8vec2);" "bvec3 lessThanEqual(u8vec3, u8vec3);" "bvec4 lessThanEqual(u8vec4, u8vec4);" "bvec2 greaterThan(i8vec2, i8vec2);" "bvec3 greaterThan(i8vec3, i8vec3);" "bvec4 greaterThan(i8vec4, i8vec4);" "bvec2 greaterThan(u8vec2, u8vec2);" "bvec3 greaterThan(u8vec3, u8vec3);" "bvec4 greaterThan(u8vec4, u8vec4);" "bvec2 greaterThanEqual(i8vec2, i8vec2);" "bvec3 greaterThanEqual(i8vec3, i8vec3);" "bvec4 greaterThanEqual(i8vec4, i8vec4);" "bvec2 greaterThanEqual(u8vec2, u8vec2);" "bvec3 greaterThanEqual(u8vec3, u8vec3);" "bvec4 greaterThanEqual(u8vec4, u8vec4);" "bvec2 equal(i8vec2, i8vec2);" "bvec3 equal(i8vec3, i8vec3);" "bvec4 equal(i8vec4, i8vec4);" "bvec2 equal(u8vec2, u8vec2);" "bvec3 equal(u8vec3, u8vec3);" "bvec4 equal(u8vec4, u8vec4);" "bvec2 notEqual(i8vec2, i8vec2);" "bvec3 notEqual(i8vec3, i8vec3);" "bvec4 notEqual(i8vec4, i8vec4);" "bvec2 notEqual(u8vec2, u8vec2);" "bvec3 notEqual(u8vec3, u8vec3);" "bvec4 notEqual(u8vec4, u8vec4);" " int8_t bitfieldExtract( int8_t, int8_t, int8_t);" "i8vec2 bitfieldExtract(i8vec2, int8_t, int8_t);" "i8vec3 bitfieldExtract(i8vec3, int8_t, int8_t);" "i8vec4 bitfieldExtract(i8vec4, int8_t, int8_t);" " uint8_t bitfieldExtract( uint8_t, int8_t, int8_t);" "u8vec2 bitfieldExtract(u8vec2, int8_t, int8_t);" "u8vec3 bitfieldExtract(u8vec3, int8_t, int8_t);" "u8vec4 bitfieldExtract(u8vec4, int8_t, int8_t);" " int8_t bitfieldInsert( int8_t base, int8_t, int8_t, int8_t);" "i8vec2 bitfieldInsert(i8vec2 base, i8vec2, int8_t, int8_t);" "i8vec3 bitfieldInsert(i8vec3 base, i8vec3, int8_t, int8_t);" "i8vec4 bitfieldInsert(i8vec4 base, i8vec4, int8_t, int8_t);" " uint8_t bitfieldInsert( uint8_t base, uint8_t, int8_t, int8_t);" "u8vec2 bitfieldInsert(u8vec2 base, u8vec2, int8_t, int8_t);" "u8vec3 bitfieldInsert(u8vec3 base, u8vec3, int8_t, int8_t);" "u8vec4 bitfieldInsert(u8vec4 base, u8vec4, int8_t, int8_t);" " int8_t bitCount( int8_t);" "i8vec2 bitCount(i8vec2);" "i8vec3 bitCount(i8vec3);" "i8vec4 bitCount(i8vec4);" " int8_t bitCount( uint8_t);" "i8vec2 bitCount(u8vec2);" "i8vec3 bitCount(u8vec3);" "i8vec4 bitCount(u8vec4);" " int8_t findLSB( int8_t);" "i8vec2 findLSB(i8vec2);" "i8vec3 findLSB(i8vec3);" "i8vec4 findLSB(i8vec4);" " int8_t findLSB( uint8_t);" "i8vec2 findLSB(u8vec2);" "i8vec3 findLSB(u8vec3);" "i8vec4 findLSB(u8vec4);" " int8_t findMSB( int8_t);" "i8vec2 findMSB(i8vec2);" "i8vec3 findMSB(i8vec3);" "i8vec4 findMSB(i8vec4);" " int8_t findMSB( uint8_t);" "i8vec2 findMSB(u8vec2);" "i8vec3 findMSB(u8vec3);" "i8vec4 findMSB(u8vec4);" "int16_t abs(int16_t);" "i16vec2 abs(i16vec2);" "i16vec3 abs(i16vec3);" "i16vec4 abs(i16vec4);" "int16_t sign(int16_t);" "i16vec2 sign(i16vec2);" "i16vec3 sign(i16vec3);" "i16vec4 sign(i16vec4);" "int16_t min(int16_t x, int16_t y);" "i16vec2 min(i16vec2 x, int16_t y);" "i16vec3 min(i16vec3 x, int16_t y);" "i16vec4 min(i16vec4 x, int16_t y);" "i16vec2 min(i16vec2 x, i16vec2 y);" "i16vec3 min(i16vec3 x, i16vec3 y);" "i16vec4 min(i16vec4 x, i16vec4 y);" "uint16_t min(uint16_t x, uint16_t y);" "u16vec2 min(u16vec2 x, uint16_t y);" "u16vec3 min(u16vec3 x, uint16_t y);" "u16vec4 min(u16vec4 x, uint16_t y);" "u16vec2 min(u16vec2 x, u16vec2 y);" "u16vec3 min(u16vec3 x, u16vec3 y);" "u16vec4 min(u16vec4 x, u16vec4 y);" "int16_t max(int16_t x, int16_t y);" "i16vec2 max(i16vec2 x, int16_t y);" "i16vec3 max(i16vec3 x, int16_t y);" "i16vec4 max(i16vec4 x, int16_t y);" "i16vec2 max(i16vec2 x, i16vec2 y);" "i16vec3 max(i16vec3 x, i16vec3 y);" "i16vec4 max(i16vec4 x, i16vec4 y);" "uint16_t max(uint16_t x, uint16_t y);" "u16vec2 max(u16vec2 x, uint16_t y);" "u16vec3 max(u16vec3 x, uint16_t y);" "u16vec4 max(u16vec4 x, uint16_t y);" "u16vec2 max(u16vec2 x, u16vec2 y);" "u16vec3 max(u16vec3 x, u16vec3 y);" "u16vec4 max(u16vec4 x, u16vec4 y);" "int16_t clamp(int16_t x, int16_t minVal, int16_t maxVal);" "i16vec2 clamp(i16vec2 x, int16_t minVal, int16_t maxVal);" "i16vec3 clamp(i16vec3 x, int16_t minVal, int16_t maxVal);" "i16vec4 clamp(i16vec4 x, int16_t minVal, int16_t maxVal);" "i16vec2 clamp(i16vec2 x, i16vec2 minVal, i16vec2 maxVal);" "i16vec3 clamp(i16vec3 x, i16vec3 minVal, i16vec3 maxVal);" "i16vec4 clamp(i16vec4 x, i16vec4 minVal, i16vec4 maxVal);" "uint16_t clamp(uint16_t x, uint16_t minVal, uint16_t maxVal);" "u16vec2 clamp(u16vec2 x, uint16_t minVal, uint16_t maxVal);" "u16vec3 clamp(u16vec3 x, uint16_t minVal, uint16_t maxVal);" "u16vec4 clamp(u16vec4 x, uint16_t minVal, uint16_t maxVal);" "u16vec2 clamp(u16vec2 x, u16vec2 minVal, u16vec2 maxVal);" "u16vec3 clamp(u16vec3 x, u16vec3 minVal, u16vec3 maxVal);" "u16vec4 clamp(u16vec4 x, u16vec4 minVal, u16vec4 maxVal);" "int16_t mix(int16_t, int16_t, bool);" "i16vec2 mix(i16vec2, i16vec2, bvec2);" "i16vec3 mix(i16vec3, i16vec3, bvec3);" "i16vec4 mix(i16vec4, i16vec4, bvec4);" "uint16_t mix(uint16_t, uint16_t, bool);" "u16vec2 mix(u16vec2, u16vec2, bvec2);" "u16vec3 mix(u16vec3, u16vec3, bvec3);" "u16vec4 mix(u16vec4, u16vec4, bvec4);" "float16_t frexp(float16_t, out int16_t);" "f16vec2 frexp(f16vec2, out i16vec2);" "f16vec3 frexp(f16vec3, out i16vec3);" "f16vec4 frexp(f16vec4, out i16vec4);" "float16_t ldexp(float16_t, int16_t);" "f16vec2 ldexp(f16vec2, i16vec2);" "f16vec3 ldexp(f16vec3, i16vec3);" "f16vec4 ldexp(f16vec4, i16vec4);" "int16_t halfBitsToInt16(float16_t);" "i16vec2 halfBitsToInt16(f16vec2);" "i16vec3 halhBitsToInt16(f16vec3);" "i16vec4 halfBitsToInt16(f16vec4);" "uint16_t halfBitsToUint16(float16_t);" "u16vec2 halfBitsToUint16(f16vec2);" "u16vec3 halfBitsToUint16(f16vec3);" "u16vec4 halfBitsToUint16(f16vec4);" "int16_t float16BitsToInt16(float16_t);" "i16vec2 float16BitsToInt16(f16vec2);" "i16vec3 float16BitsToInt16(f16vec3);" "i16vec4 float16BitsToInt16(f16vec4);" "uint16_t float16BitsToUint16(float16_t);" "u16vec2 float16BitsToUint16(f16vec2);" "u16vec3 float16BitsToUint16(f16vec3);" "u16vec4 float16BitsToUint16(f16vec4);" "float16_t int16BitsToFloat16(int16_t);" "f16vec2 int16BitsToFloat16(i16vec2);" "f16vec3 int16BitsToFloat16(i16vec3);" "f16vec4 int16BitsToFloat16(i16vec4);" "float16_t uint16BitsToFloat16(uint16_t);" "f16vec2 uint16BitsToFloat16(u16vec2);" "f16vec3 uint16BitsToFloat16(u16vec3);" "f16vec4 uint16BitsToFloat16(u16vec4);" "float16_t int16BitsToHalf(int16_t);" "f16vec2 int16BitsToHalf(i16vec2);" "f16vec3 int16BitsToHalf(i16vec3);" "f16vec4 int16BitsToHalf(i16vec4);" "float16_t uint16BitsToHalf(uint16_t);" "f16vec2 uint16BitsToHalf(u16vec2);" "f16vec3 uint16BitsToHalf(u16vec3);" "f16vec4 uint16BitsToHalf(u16vec4);" "int packInt2x16(i16vec2);" "uint packUint2x16(u16vec2);" "int64_t packInt4x16(i16vec4);" "uint64_t packUint4x16(u16vec4);" "i16vec2 unpackInt2x16(int);" "u16vec2 unpackUint2x16(uint);" "i16vec4 unpackInt4x16(int64_t);" "u16vec4 unpackUint4x16(uint64_t);" "bvec2 lessThan(i16vec2, i16vec2);" "bvec3 lessThan(i16vec3, i16vec3);" "bvec4 lessThan(i16vec4, i16vec4);" "bvec2 lessThan(u16vec2, u16vec2);" "bvec3 lessThan(u16vec3, u16vec3);" "bvec4 lessThan(u16vec4, u16vec4);" "bvec2 lessThanEqual(i16vec2, i16vec2);" "bvec3 lessThanEqual(i16vec3, i16vec3);" "bvec4 lessThanEqual(i16vec4, i16vec4);" "bvec2 lessThanEqual(u16vec2, u16vec2);" "bvec3 lessThanEqual(u16vec3, u16vec3);" "bvec4 lessThanEqual(u16vec4, u16vec4);" "bvec2 greaterThan(i16vec2, i16vec2);" "bvec3 greaterThan(i16vec3, i16vec3);" "bvec4 greaterThan(i16vec4, i16vec4);" "bvec2 greaterThan(u16vec2, u16vec2);" "bvec3 greaterThan(u16vec3, u16vec3);" "bvec4 greaterThan(u16vec4, u16vec4);" "bvec2 greaterThanEqual(i16vec2, i16vec2);" "bvec3 greaterThanEqual(i16vec3, i16vec3);" "bvec4 greaterThanEqual(i16vec4, i16vec4);" "bvec2 greaterThanEqual(u16vec2, u16vec2);" "bvec3 greaterThanEqual(u16vec3, u16vec3);" "bvec4 greaterThanEqual(u16vec4, u16vec4);" "bvec2 equal(i16vec2, i16vec2);" "bvec3 equal(i16vec3, i16vec3);" "bvec4 equal(i16vec4, i16vec4);" "bvec2 equal(u16vec2, u16vec2);" "bvec3 equal(u16vec3, u16vec3);" "bvec4 equal(u16vec4, u16vec4);" "bvec2 notEqual(i16vec2, i16vec2);" "bvec3 notEqual(i16vec3, i16vec3);" "bvec4 notEqual(i16vec4, i16vec4);" "bvec2 notEqual(u16vec2, u16vec2);" "bvec3 notEqual(u16vec3, u16vec3);" "bvec4 notEqual(u16vec4, u16vec4);" " int16_t bitfieldExtract( int16_t, int16_t, int16_t);" "i16vec2 bitfieldExtract(i16vec2, int16_t, int16_t);" "i16vec3 bitfieldExtract(i16vec3, int16_t, int16_t);" "i16vec4 bitfieldExtract(i16vec4, int16_t, int16_t);" " uint16_t bitfieldExtract( uint16_t, int16_t, int16_t);" "u16vec2 bitfieldExtract(u16vec2, int16_t, int16_t);" "u16vec3 bitfieldExtract(u16vec3, int16_t, int16_t);" "u16vec4 bitfieldExtract(u16vec4, int16_t, int16_t);" " int16_t bitfieldInsert( int16_t base, int16_t, int16_t, int16_t);" "i16vec2 bitfieldInsert(i16vec2 base, i16vec2, int16_t, int16_t);" "i16vec3 bitfieldInsert(i16vec3 base, i16vec3, int16_t, int16_t);" "i16vec4 bitfieldInsert(i16vec4 base, i16vec4, int16_t, int16_t);" " uint16_t bitfieldInsert( uint16_t base, uint16_t, int16_t, int16_t);" "u16vec2 bitfieldInsert(u16vec2 base, u16vec2, int16_t, int16_t);" "u16vec3 bitfieldInsert(u16vec3 base, u16vec3, int16_t, int16_t);" "u16vec4 bitfieldInsert(u16vec4 base, u16vec4, int16_t, int16_t);" " int16_t bitCount( int16_t);" "i16vec2 bitCount(i16vec2);" "i16vec3 bitCount(i16vec3);" "i16vec4 bitCount(i16vec4);" " int16_t bitCount( uint16_t);" "i16vec2 bitCount(u16vec2);" "i16vec3 bitCount(u16vec3);" "i16vec4 bitCount(u16vec4);" " int16_t findLSB( int16_t);" "i16vec2 findLSB(i16vec2);" "i16vec3 findLSB(i16vec3);" "i16vec4 findLSB(i16vec4);" " int16_t findLSB( uint16_t);" "i16vec2 findLSB(u16vec2);" "i16vec3 findLSB(u16vec3);" "i16vec4 findLSB(u16vec4);" " int16_t findMSB( int16_t);" "i16vec2 findMSB(i16vec2);" "i16vec3 findMSB(i16vec3);" "i16vec4 findMSB(i16vec4);" " int16_t findMSB( uint16_t);" "i16vec2 findMSB(u16vec2);" "i16vec3 findMSB(u16vec3);" "i16vec4 findMSB(u16vec4);" "int16_t pack16(i8vec2);" "uint16_t pack16(u8vec2);" "int32_t pack32(i8vec4);" "uint32_t pack32(u8vec4);" "int32_t pack32(i16vec2);" "uint32_t pack32(u16vec2);" "int64_t pack64(i16vec4);" "uint64_t pack64(u16vec4);" "int64_t pack64(i32vec2);" "uint64_t pack64(u32vec2);" "i8vec2 unpack8(int16_t);" "u8vec2 unpack8(uint16_t);" "i8vec4 unpack8(int32_t);" "u8vec4 unpack8(uint32_t);" "i16vec2 unpack16(int32_t);" "u16vec2 unpack16(uint32_t);" "i16vec4 unpack16(int64_t);" "u16vec4 unpack16(uint64_t);" "i32vec2 unpack32(int64_t);" "u32vec2 unpack32(uint64_t);" // GL_EXT_expect_assume "int8_t expectEXT(int8_t, int8_t);" "i8vec2 expectEXT(i8vec2, i8vec2);" "i8vec3 expectEXT(i8vec3, i8vec3);" "i8vec4 expectEXT(i8vec4, i8vec4);" "uint8_t expectEXT(uint8_t, uint8_t);" "u8vec2 expectEXT(u8vec2, u8vec2);" "u8vec3 expectEXT(u8vec3, u8vec3);" "u8vec4 expectEXT(u8vec4, u8vec4);" "int16_t expectEXT(int16_t, int16_t);" "i16vec2 expectEXT(i16vec2, i16vec2);" "i16vec3 expectEXT(i16vec3, i16vec3);" "i16vec4 expectEXT(i16vec4, i16vec4);" "uint16_t expectEXT(uint16_t, uint16_t);" "u16vec2 expectEXT(u16vec2, u16vec2);" "u16vec3 expectEXT(u16vec3, u16vec3);" "u16vec4 expectEXT(u16vec4, u16vec4);" "int64_t expectEXT(int64_t, int64_t);" "i64vec2 expectEXT(i64vec2, i64vec2);" "i64vec3 expectEXT(i64vec3, i64vec3);" "i64vec4 expectEXT(i64vec4, i64vec4);" "uint64_t expectEXT(uint64_t, uint64_t);" "u64vec2 expectEXT(u64vec2, u64vec2);" "u64vec3 expectEXT(u64vec3, u64vec3);" "u64vec4 expectEXT(u64vec4, u64vec4);" "\n"); } // Builtins for GL_EXT_texture_shadow_lod if ((profile == EEsProfile && version >= 300) || ((profile != EEsProfile && version >= 130))) { commonBuiltins.append( "float texture(sampler2DArrayShadow, vec4, float);" "float texture(samplerCubeArrayShadow, vec4, float, float);" "float textureLod(sampler2DArrayShadow, vec4, float);" "float textureLod(samplerCubeShadow, vec4, float);" "float textureLod(samplerCubeArrayShadow, vec4, float, float);" "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" "float textureOffset(sampler2DArrayShadow, vec4 , ivec2, float);" "\n"); } if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangFragment].append(derivativesAndControl64bits); stageBuiltins[EShLangFragment].append( "float64_t interpolateAtCentroid(float64_t);" "f64vec2 interpolateAtCentroid(f64vec2);" "f64vec3 interpolateAtCentroid(f64vec3);" "f64vec4 interpolateAtCentroid(f64vec4);" "float64_t interpolateAtSample(float64_t, int);" "f64vec2 interpolateAtSample(f64vec2, int);" "f64vec3 interpolateAtSample(f64vec3, int);" "f64vec4 interpolateAtSample(f64vec4, int);" "float64_t interpolateAtOffset(float64_t, f64vec2);" "f64vec2 interpolateAtOffset(f64vec2, f64vec2);" "f64vec3 interpolateAtOffset(f64vec3, f64vec2);" "f64vec4 interpolateAtOffset(f64vec4, f64vec2);" "\n"); } // GL_EXT_expect_assume if ((profile == EEsProfile && version >= 310) || ((profile != EEsProfile && version >= 140))) { commonBuiltins.append( "void assumeEXT(bool);" "bool expectEXT(bool, bool);" "bvec2 expectEXT(bvec2, bvec2);" "bvec3 expectEXT(bvec3, bvec3);" "bvec4 expectEXT(bvec4, bvec4);" "int expectEXT(int, int);" "ivec2 expectEXT(ivec2, ivec2);" "ivec3 expectEXT(ivec3, ivec3);" "ivec4 expectEXT(ivec4, ivec4);" "uint expectEXT(uint, uint);" "uvec2 expectEXT(uvec2, uvec2);" "uvec3 expectEXT(uvec3, uvec3);" "uvec4 expectEXT(uvec4, uvec4);" "\n"); } // QCOM_image_processing if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { commonBuiltins.append( "vec4 textureWeightedQCOM(sampler2D, vec2, sampler2DArray);" "vec4 textureWeightedQCOM(sampler2D, vec2, sampler1DArray);" "vec4 textureBoxFilterQCOM(sampler2D, vec2, vec2);" "vec4 textureBlockMatchSADQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" "vec4 textureBlockMatchSSDQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" "vec4 textureBlockMatchWindowSSDQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" "vec4 textureBlockMatchWindowSADQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" "vec4 textureBlockMatchGatherSSDQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" "vec4 textureBlockMatchGatherSADQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" "\n"); } //============================================================================ // // Prototypes for built-in functions seen by vertex shaders only. // (Except legacy lod functions, where it depends which release they are // vertex only.) // //============================================================================ // // Geometric Functions. // if (spvVersion.vulkan == 0 && IncludeLegacy(version, profile, spvVersion)) stageBuiltins[EShLangVertex].append("vec4 ftransform();"); // // Original-style texture Functions with lod. // TString* s; if (version == 100) s = &stageBuiltins[EShLangVertex]; else s = &commonBuiltins; if ((profile == EEsProfile && version == 100) || profile == ECompatibilityProfile || (profile == ECoreProfile && version < 420) || profile == ENoProfile) { if (spvVersion.spv == 0) { s->append( "vec4 texture2DLod(sampler2D, vec2, float);" // GL_ARB_shader_texture_lod "vec4 texture2DProjLod(sampler2D, vec3, float);" // GL_ARB_shader_texture_lod "vec4 texture2DProjLod(sampler2D, vec4, float);" // GL_ARB_shader_texture_lod "vec4 texture3DLod(sampler3D, vec3, float);" // GL_ARB_shader_texture_lod // OES_texture_3D, but caught by keyword check "vec4 texture3DProjLod(sampler3D, vec4, float);" // GL_ARB_shader_texture_lod // OES_texture_3D, but caught by keyword check "vec4 textureCubeLod(samplerCube, vec3, float);" // GL_ARB_shader_texture_lod "\n"); } } if ( profile == ECompatibilityProfile || (profile == ECoreProfile && version < 420) || profile == ENoProfile) { if (spvVersion.spv == 0) { s->append( "vec4 texture1DLod(sampler1D, float, float);" // GL_ARB_shader_texture_lod "vec4 texture1DProjLod(sampler1D, vec2, float);" // GL_ARB_shader_texture_lod "vec4 texture1DProjLod(sampler1D, vec4, float);" // GL_ARB_shader_texture_lod "vec4 shadow1DLod(sampler1DShadow, vec3, float);" // GL_ARB_shader_texture_lod "vec4 shadow2DLod(sampler2DShadow, vec3, float);" // GL_ARB_shader_texture_lod "vec4 shadow1DProjLod(sampler1DShadow, vec4, float);" // GL_ARB_shader_texture_lod "vec4 shadow2DProjLod(sampler2DShadow, vec4, float);" // GL_ARB_shader_texture_lod "vec4 texture1DGradARB(sampler1D, float, float, float);" // GL_ARB_shader_texture_lod "vec4 texture1DProjGradARB(sampler1D, vec2, float, float);" // GL_ARB_shader_texture_lod "vec4 texture1DProjGradARB(sampler1D, vec4, float, float);" // GL_ARB_shader_texture_lod "vec4 texture2DGradARB(sampler2D, vec2, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 texture2DProjGradARB(sampler2D, vec3, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 texture2DProjGradARB(sampler2D, vec4, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 texture3DGradARB(sampler3D, vec3, vec3, vec3);" // GL_ARB_shader_texture_lod "vec4 texture3DProjGradARB(sampler3D, vec4, vec3, vec3);" // GL_ARB_shader_texture_lod "vec4 textureCubeGradARB(samplerCube, vec3, vec3, vec3);" // GL_ARB_shader_texture_lod "vec4 shadow1DGradARB(sampler1DShadow, vec3, float, float);" // GL_ARB_shader_texture_lod "vec4 shadow1DProjGradARB( sampler1DShadow, vec4, float, float);" // GL_ARB_shader_texture_lod "vec4 shadow2DGradARB(sampler2DShadow, vec3, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 shadow2DProjGradARB( sampler2DShadow, vec4, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 texture2DRectGradARB(sampler2DRect, vec2, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 texture2DRectProjGradARB( sampler2DRect, vec3, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 texture2DRectProjGradARB( sampler2DRect, vec4, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 shadow2DRectGradARB( sampler2DRectShadow, vec3, vec2, vec2);" // GL_ARB_shader_texture_lod "vec4 shadow2DRectProjGradARB(sampler2DRectShadow, vec4, vec2, vec2);" // GL_ARB_shader_texture_lod "\n"); } } if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) { //============================================================================ // // Prototypes for built-in functions seen by geometry shaders only. // //============================================================================ if (profile != EEsProfile && version >= 150) { stageBuiltins[EShLangGeometry].append( "void EmitStreamVertex(int);" "void EndStreamPrimitive(int);" ); } stageBuiltins[EShLangGeometry].append( "void EmitVertex();" "void EndPrimitive();" "\n"); } //============================================================================ // // Prototypes for all control functions. // //============================================================================ bool esBarrier = (profile == EEsProfile && version >= 310); if ((profile != EEsProfile && version >= 150) || esBarrier) stageBuiltins[EShLangTessControl].append( "void barrier();" ); if ((profile != EEsProfile && version >= 420) || esBarrier) stageBuiltins[EShLangCompute].append( "void barrier();" ); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMesh].append( "void barrier();" ); stageBuiltins[EShLangTask].append( "void barrier();" ); } if ((profile != EEsProfile && version >= 130) || esBarrier) commonBuiltins.append( "void memoryBarrier();" ); if ((profile != EEsProfile && version >= 420) || esBarrier) { commonBuiltins.append( "void memoryBarrierBuffer();" ); stageBuiltins[EShLangCompute].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" ); } if ((profile != EEsProfile && version >= 420) || esBarrier) { if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed) { commonBuiltins.append("void memoryBarrierAtomicCounter();"); } commonBuiltins.append("void memoryBarrierImage();"); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMesh].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" ); stageBuiltins[EShLangTask].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" ); } commonBuiltins.append("void controlBarrier(int, int, int, int);\n" "void memoryBarrier(int, int, int);\n"); commonBuiltins.append("void debugPrintfEXT();\n"); if (profile != EEsProfile && version >= 450) { // coopMatStoreNV perhaps ought to have "out" on the buf parameter, but // adding it introduces undesirable tempArgs on the stack. What we want // is more like "buf" thought of as a pointer value being an in parameter. stageBuiltins[EShLangCompute].append( "void coopMatLoadNV(out fcoopmatNV m, volatile coherent nontemporal float16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out fcoopmatNV m, volatile coherent nontemporal float[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out fcoopmatNV m, volatile coherent nontemporal uint8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out fcoopmatNV m, volatile coherent nontemporal uint16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out fcoopmatNV m, volatile coherent nontemporal uint[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out fcoopmatNV m, volatile coherent nontemporal uint64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out fcoopmatNV m, volatile coherent nontemporal uvec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out fcoopmatNV m, volatile coherent nontemporal uvec4[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal float16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal float[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal float64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal uint8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal uint16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal uint[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal uint64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal uvec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(fcoopmatNV m, volatile coherent nontemporal uvec4[] buf, uint element, uint stride, bool colMajor);\n" "fcoopmatNV coopMatMulAddNV(fcoopmatNV A, fcoopmatNV B, fcoopmatNV C);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal int8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal int16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal int[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal int64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal ivec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal ivec4[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal uint8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal uint16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal uint[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal uint64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal uvec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out icoopmatNV m, volatile coherent nontemporal uvec4[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal int8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal int16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal int[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal int64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal ivec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal ivec4[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal uint8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal uint16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal uint[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal uint64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal uvec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatLoadNV(out ucoopmatNV m, volatile coherent nontemporal uvec4[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal int8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal int16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal int[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal int64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal ivec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal ivec4[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal uint8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal uint16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal uint[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal uint64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal uvec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(icoopmatNV m, volatile coherent nontemporal uvec4[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal int8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal int16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal int[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal int64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal ivec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal ivec4[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal uint8_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal uint16_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal uint[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal uint64_t[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal uvec2[] buf, uint element, uint stride, bool colMajor);\n" "void coopMatStoreNV(ucoopmatNV m, volatile coherent nontemporal uvec4[] buf, uint element, uint stride, bool colMajor);\n" "icoopmatNV coopMatMulAddNV(icoopmatNV A, icoopmatNV B, icoopmatNV C);\n" "ucoopmatNV coopMatMulAddNV(ucoopmatNV A, ucoopmatNV B, ucoopmatNV C);\n" ); std::stringstream cooperativeMatrixFuncs; { static const char *allTypes[] = { "float", "vec2", "vec4", "float16_t", "f16vec2", "f16vec4", "bfloat16_t", "bf16vec2", "bf16vec4", "floate5m2_t", "fe5m2vec2", "fe5m2vec4", "floate4m3_t", "fe4m3vec2", "fe4m3vec4", "double", "dvec2", "dvec4", "int8_t", "i8vec2", "i8vec4", "int16_t", "i16vec2", "i16vec4", "int", "ivec2", "ivec4", "int64_t", "i64vec2", "i64vec4", "uint8_t", "u8vec2", "u8vec4", "uint16_t", "u16vec2", "u16vec4", "uint", "uvec2", "uvec4", "uint64_t", "u64vec2", "u64vec4", }; for (auto t : allTypes) { cooperativeMatrixFuncs << "void coopMatLoad(out coopmat m, volatile coherent nontemporal " << t << "[] buf, uint element, uint stride, int matrixLayout);\n"; cooperativeMatrixFuncs << "void coopMatStore(coopmat m, volatile coherent nontemporal " << t << "[] buf, uint element, uint stride, int matrixLayout);\n"; } // Just use uint8_t for buffer type, we have special matching rules to allow any conversion cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t);\n"; cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t, tensorViewNV v);\n"; cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t, __function f);\n"; cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t, tensorViewNV v, __function f);\n"; cooperativeMatrixFuncs << "void coopMatStoreTensorNV(coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t);\n"; cooperativeMatrixFuncs << "void coopMatStoreTensorNV(coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t, tensorViewNV v);\n"; } cooperativeMatrixFuncs << "coopmat coopMatMulAdd(coopmat A, coopmat B, coopmat C);\n" "coopmat coopMatMulAdd(coopmat A, coopmat B, coopmat C, int matrixOperands);\n"; commonBuiltins.append(cooperativeMatrixFuncs.str().c_str()); commonBuiltins.append( "const int gl_MatrixUseA = 0;\n" "const int gl_MatrixUseB = 1;\n" "const int gl_MatrixUseAccumulator = 2;\n" "const int gl_MatrixOperandsSaturatingAccumulation = 0x10;\n" "const int gl_CooperativeMatrixLayoutRowMajor = 0;\n" "const int gl_CooperativeMatrixLayoutColumnMajor = 1;\n" "const int gl_CooperativeMatrixLayoutRowBlockedInterleavedARM = 4202;\n" "const int gl_CooperativeMatrixLayoutColumnBlockedInterleavedARM = 4203;\n" "\n" ); commonBuiltins.append( "void coopMatTransposeNV(out coopmat, coopmat);" "void coopMatReduceNV(out coopmat, coopmat, int, __function);" "void coopMatPerElementNV();" ); commonBuiltins.append( "const int gl_CooperativeMatrixReduceRowNV = 0x1;\n" "const int gl_CooperativeMatrixReduceColumnNV = 0x2;\n" "const int gl_CooperativeMatrixReduceRowAndColumnNV = 0x3;\n" "const int gl_CooperativeMatrixReduce2x2NV = 0x4;\n" "\n" ); commonBuiltins.append( "const int gl_CooperativeMatrixClampModeUndefinedNV = 0x0;\n" "const int gl_CooperativeMatrixClampModeConstantNV = 0x1;\n" "const int gl_CooperativeMatrixClampModeClampToEdgeNV = 0x2;\n" "const int gl_CooperativeMatrixClampModeRepeatNV = 0x3;\n" "const int gl_CooperativeMatrixClampModeMirrorRepeatNV = 0x4;\n" "\n" ); { std::stringstream coopMatConvFuncs; const std::string eltTypes[] = {"uint32_t", "uint", "int32_t", "int", "float32_t", "float", "float16_t"}; for (auto srcEltTy : eltTypes) { for (auto dstEltTy : eltTypes) { coopMatConvFuncs << "void bitcastQCOM(" << srcEltTy.c_str() << " SrcArr[], " << dstEltTy.c_str() << " DstArr[]);\n"; } } coopMatConvFuncs << "\n"; for (auto eltTy : {"float32_t", "float16_t", "int8_t", "uint8_t", "uint32_t", "uint", "int32_t", "int"}) { coopMatConvFuncs << "void vectorToCoopmatQCOM(" << eltTy << " SrcVec[], coopmat CM);\n"; coopMatConvFuncs << "void coopmatToVectorQCOM(coopmat CM, " << eltTy << " Dstvec[]);\n"; } for (auto eltTy : {"uint32_t", "uint", "int32_t", "int", "float32_t", "float", "float16_t"}) { coopMatConvFuncs << "void extractSubArrayQCOM(" << eltTy << " arr[], uint index, " << eltTy << " subarr[]);\n"; } commonBuiltins.append(coopMatConvFuncs.str().c_str()); } commonBuiltins.append( "tensorLayoutNV createTensorLayoutNV(uint Dim);\n" "tensorLayoutNV createTensorLayoutNV(uint Dim, uint Mode);\n" "tensorLayoutNV setTensorLayoutBlockSizeNV(tensorLayoutNV t, uint blockSize0);\n" "tensorLayoutNV setTensorLayoutBlockSizeNV(tensorLayoutNV t, uint blockSize0, uint blockSize1);\n" "tensorLayoutNV setTensorLayoutBlockSizeNV(tensorLayoutNV t, uint blockSize0, uint blockSize1, uint blockSize2);\n" "tensorLayoutNV setTensorLayoutBlockSizeNV(tensorLayoutNV t, uint blockSize0, uint blockSize1, uint blockSize2, uint blockSize3);\n" "tensorLayoutNV setTensorLayoutBlockSizeNV(tensorLayoutNV t, uint blockSize0, uint blockSize1, uint blockSize2, uint blockSize3, uint blockSize4);\n" "tensorLayoutNV setTensorLayoutDimensionNV(tensorLayoutNV t, uint dim0);\n" "tensorLayoutNV setTensorLayoutDimensionNV(tensorLayoutNV t, uint dim0, uint dim1);\n" "tensorLayoutNV setTensorLayoutDimensionNV(tensorLayoutNV t, uint dim0, uint dim1, uint dim2);\n" "tensorLayoutNV setTensorLayoutDimensionNV(tensorLayoutNV t, uint dim0, uint dim1, uint dim2, uint dim3);\n" "tensorLayoutNV setTensorLayoutDimensionNV(tensorLayoutNV t, uint dim0, uint dim1, uint dim2, uint dim3, uint dim4);\n" "tensorLayoutNV setTensorLayoutStrideNV(tensorLayoutNV t, uint stride0);\n" "tensorLayoutNV setTensorLayoutStrideNV(tensorLayoutNV t, uint stride0, uint stride1);\n" "tensorLayoutNV setTensorLayoutStrideNV(tensorLayoutNV t, uint stride0, uint stride1, uint stride2);\n" "tensorLayoutNV setTensorLayoutStrideNV(tensorLayoutNV t, uint stride0, uint stride1, uint stride2, uint stride3);\n" "tensorLayoutNV setTensorLayoutStrideNV(tensorLayoutNV t, uint stride0, uint stride1, uint stride2, uint stride3, uint stride4);\n" "tensorLayoutNV sliceTensorLayoutNV(tensorLayoutNV t, uint offset0, uint span0);\n" "tensorLayoutNV sliceTensorLayoutNV(tensorLayoutNV t, uint offset0, uint span0, uint offset1, uint span1);\n" "tensorLayoutNV sliceTensorLayoutNV(tensorLayoutNV t, uint offset0, uint span0, uint offset1, uint span1, uint offset2, uint span2);\n" "tensorLayoutNV sliceTensorLayoutNV(tensorLayoutNV t, uint offset0, uint span0, uint offset1, uint span1, uint offset2, uint span2, uint offset3, uint span3);\n" "tensorLayoutNV sliceTensorLayoutNV(tensorLayoutNV t, uint offset0, uint span0, uint offset1, uint span1, uint offset2, uint span2, uint offset3, uint span3, uint offset4, uint span4);\n" "tensorLayoutNV setTensorLayoutClampValueNV(tensorLayoutNV t, uint value);\n" "tensorViewNV createTensorViewNV(uint Dim);\n" "tensorViewNV createTensorViewNV(uint Dim, bool HasDimensions);\n" "tensorViewNV createTensorViewNV(uint Dim, bool HasDimensions, uint p0);\n" "tensorViewNV createTensorViewNV(uint Dim, bool HasDimensions, uint p0, uint p1);\n" "tensorViewNV createTensorViewNV(uint Dim, bool HasDimensions, uint p0, uint p1, uint p2);\n" "tensorViewNV createTensorViewNV(uint Dim, bool HasDimensions, uint p0, uint p1, uint p2, uint p3);\n" "tensorViewNV createTensorViewNV(uint Dim, bool HasDimensions, uint p0, uint p1, uint p2, uint p3, uint p4);\n" "tensorViewNV setTensorViewDimensionsNV(tensorViewNV v, uint dim0);\n" "tensorViewNV setTensorViewDimensionsNV(tensorViewNV v, uint dim0, uint dim1);\n" "tensorViewNV setTensorViewDimensionsNV(tensorViewNV v, uint dim0, uint dim1, uint dim2);\n" "tensorViewNV setTensorViewDimensionsNV(tensorViewNV v, uint dim0, uint dim1, uint dim2, uint dim3);\n" "tensorViewNV setTensorViewDimensionsNV(tensorViewNV v, uint dim0, uint dim1, uint dim2, uint dim3, uint dim4);\n" "tensorViewNV setTensorViewStrideNV(tensorViewNV v, uint stride0);\n" "tensorViewNV setTensorViewStrideNV(tensorViewNV v, uint stride0, uint stride1);\n" "tensorViewNV setTensorViewStrideNV(tensorViewNV v, uint stride0, uint stride1, uint stride2);\n" "tensorViewNV setTensorViewStrideNV(tensorViewNV v, uint stride0, uint stride1, uint stride2, uint stride3);\n" "tensorViewNV setTensorViewStrideNV(tensorViewNV v, uint stride0, uint stride1, uint stride2, uint stride3, uint stride4);\n" "tensorViewNV setTensorViewClipNV(tensorViewNV v, uint clipRowOffset, uint clipRowSpan, uint clipColOffset, uint clipColSpan);\n" "\n" ); // GL_ARM_tensors builtins. static const char *tensorDataTypesARM[] = { "bool", "int8_t", "int16_t", "int32_t", "int64_t", "uint8_t", "uint16_t", "uint32_t", "uint64_t", "float16_t", "float32_t", "float64_t", }; std::ostringstream ostream; for (auto t : tensorDataTypesARM) { // Scalar ostream << "void tensorReadARM(readonly tensorARM t, uint coords[], out " << t << " data, uint tensorOperands = 0U, ...);\n"; ostream << "void tensorWriteARM(writeonly tensorARM t, uint coords[], " << t << " data, uint tensorOperands = 0U, ...);\n"; // Array ostream << "void tensorReadARM(readonly tensorARM t, uint coords[], " << t << " data[], uint tensorOperands = 0U, ...);\n"; ostream << "void tensorWriteARM(writeonly tensorARM t, uint coords[], " << t << " data[], uint tensorOperands = 0U, ...);\n"; } ostream << "uint tensorSizeARM(readonly writeonly tensorARM t, uint dim);\n"; commonBuiltins.append(ostream.str()); } if (profile != EEsProfile && version >= 450) { const char *basicTypes[] = { "int8_t", "int16_t", "int32_t", "int64_t", "uint8_t", "uint16_t", "uint32_t", "uint64_t", "float16_t", "float32_t", "float64_t", }; for (uint32_t i = 0; i < sizeof(basicTypes)/sizeof(basicTypes[0]); ++i) { std::string func = std::string("void coopVecMatMulNV(out coopvecNV result, ") + std::string("coopvecNV v, ") + std::string("int inputInterpretation, ") + std::string(basicTypes[i]) + std::string("[] matrix, ") + std::string("uint matrixOffset, ") + std::string("int matrixInterpretation, ") + std::string("uint M, ") + std::string("uint K, ") + std::string("int matrixLayout, ") + std::string("bool transpose, ") + std::string("uint matrixStride);\n"); commonBuiltins.append(func.c_str()); for (uint32_t j = 0; j < sizeof(basicTypes)/sizeof(basicTypes[0]); ++j) { func = std::string("void coopVecMatMulAddNV(out coopvecNV result, ") + std::string("coopvecNV v, ") + std::string("int inputInterpretation, ") + std::string(basicTypes[i]) + std::string("[] matrix, ") + std::string("uint matrixOffset, ") + std::string("int matrixInterpretation, ") + std::string(basicTypes[j]) + std::string("[] bias, ") + std::string("uint biasOffset, ") + std::string("int biasInterpretation, ") + std::string("uint M, ") + std::string("uint K, ") + std::string("int matrixLayout, ") + std::string("bool transpose, ") + std::string("uint matrixStride);\n"); commonBuiltins.append(func.c_str()); } func = std::string("void coopVecOuterProductAccumulateNV(coopvecNV v1, coopvecNV v2, ") + std::string(basicTypes[i]) + std::string("[] buf, uint offset, uint stride, int matrixLayout, int matrixInterpretation);\n"); commonBuiltins.append(func.c_str()); func = std::string("void coopVecReduceSumAccumulateNV(coopvecNV v, ") + std::string(basicTypes[i]) + std::string("[] buf, uint offset);\n"); commonBuiltins.append(func.c_str()); } std::string cooperativeVectorFuncs = "coopvecNV fma(coopvecNV, coopvecNV, coopvecNV);\n" "coopvecNV min(coopvecNV, coopvecNV);\n" "coopvecNV max(coopvecNV, coopvecNV);\n" "coopvecNV step(coopvecNV, coopvecNV);\n" "coopvecNV exp(coopvecNV);\n" "coopvecNV log(coopvecNV);\n" "coopvecNV tanh(coopvecNV);\n" "coopvecNV atan(coopvecNV);\n" "coopvecNV clamp(coopvecNV, coopvecNV, coopvecNV);\n" "\n" ; commonBuiltins.append(cooperativeVectorFuncs.c_str()); const char *scalarAndVectorTypes[] = { "int8_t", "int16_t", "int32_t", "int64_t", "uint8_t", "uint16_t", "uint32_t", "uint64_t", "float16_t", "float32_t", "float64_t", "i8vec2", "i16vec2", "i32vec2", "i64vec2", "u8vec2", "u16vec2", "u32vec2", "u64vec2", "f16vec2", "f32vec2", "f64vec2", "i8vec3", "i16vec3", "i32vec3", "i64vec3", "u8vec3", "u16vec3", "u32vec3", "u64vec3", "f16vec3", "f32vec3", "f64vec3", "i8vec4", "i16vec4", "i32vec4", "i64vec4", "u8vec4", "u16vec4", "u32vec4", "u64vec4", "f16vec4", "f32vec4", "f64vec4", }; for (uint32_t i = 0; i < sizeof(scalarAndVectorTypes)/sizeof(scalarAndVectorTypes[0]); ++i) { std::string load = std::string("void coopVecLoadNV(out coopvecNV v, volatile coherent ") + std::string(scalarAndVectorTypes[i]) + std::string("[] buf, uint offset);"); std::string store = std::string("void coopVecStoreNV(coopvecNV v, volatile coherent ") + std::string(scalarAndVectorTypes[i]) + std::string("[] buf, uint offset);"); commonBuiltins.append(load.c_str()); commonBuiltins.append(store.c_str()); } commonBuiltins.append( "const int gl_CooperativeVectorMatrixLayoutRowMajorNV = 0;\n" "const int gl_CooperativeVectorMatrixLayoutColumnMajorNV = 1;\n" "const int gl_CooperativeVectorMatrixLayoutInferencingOptimalNV = 2;\n" "const int gl_CooperativeVectorMatrixLayoutTrainingOptimalNV = 3;\n" "\n" ); commonBuiltins.append( "const int gl_ComponentTypeFloat16NV = 0;\n" "const int gl_ComponentTypeFloat32NV = 1;\n" "const int gl_ComponentTypeFloat64NV = 2;\n" "const int gl_ComponentTypeSignedInt8NV = 3;\n" "const int gl_ComponentTypeSignedInt16NV = 4;\n" "const int gl_ComponentTypeSignedInt32NV = 5;\n" "const int gl_ComponentTypeSignedInt64NV = 6;\n" "const int gl_ComponentTypeUnsignedInt8NV = 7;\n" "const int gl_ComponentTypeUnsignedInt16NV = 8;\n" "const int gl_ComponentTypeUnsignedInt32NV = 9;\n" "const int gl_ComponentTypeUnsignedInt64NV = 10;\n" "const int gl_ComponentTypeSignedInt8PackedNV = 1000491000;\n" "const int gl_ComponentTypeUnsignedInt8PackedNV = 1000491001;\n" "const int gl_ComponentTypeFloatE4M3NV = 1000491002;\n" "const int gl_ComponentTypeFloatE5M2NV = 1000491003;\n" "\n" ); } //============================================================================ // // Prototypes for built-in functions seen by fragment shaders only. // //============================================================================ // // Original-style texture Functions with bias. // if (spvVersion.spv == 0 && (profile != EEsProfile || version == 100)) { stageBuiltins[EShLangFragment].append( "vec4 texture2D(sampler2D, vec2, float);" "vec4 texture2DProj(sampler2D, vec3, float);" "vec4 texture2DProj(sampler2D, vec4, float);" "vec4 texture3D(sampler3D, vec3, float);" // OES_texture_3D "vec4 texture3DProj(sampler3D, vec4, float);" // OES_texture_3D "vec4 textureCube(samplerCube, vec3, float);" "\n"); } if (spvVersion.spv == 0 && (profile != EEsProfile && version > 100)) { stageBuiltins[EShLangFragment].append( "vec4 texture1D(sampler1D, float, float);" "vec4 texture1DProj(sampler1D, vec2, float);" "vec4 texture1DProj(sampler1D, vec4, float);" "vec4 shadow1D(sampler1DShadow, vec3, float);" "vec4 shadow2D(sampler2DShadow, vec3, float);" "vec4 shadow1DProj(sampler1DShadow, vec4, float);" "vec4 shadow2DProj(sampler2DShadow, vec4, float);" "\n"); } if (spvVersion.spv == 0 && profile == EEsProfile) { stageBuiltins[EShLangFragment].append( "vec4 texture2DLodEXT(sampler2D, vec2, float);" // GL_EXT_shader_texture_lod "vec4 texture2DProjLodEXT(sampler2D, vec3, float);" // GL_EXT_shader_texture_lod "vec4 texture2DProjLodEXT(sampler2D, vec4, float);" // GL_EXT_shader_texture_lod "vec4 textureCubeLodEXT(samplerCube, vec3, float);" // GL_EXT_shader_texture_lod "\n"); } // GL_EXT_shader_tile_image if (spvVersion.vulkan > 0) { stageBuiltins[EShLangFragment].append( "lowp uint stencilAttachmentReadEXT();" "lowp uint stencilAttachmentReadEXT(int);" "highp float depthAttachmentReadEXT();" "highp float depthAttachmentReadEXT(int);" "\n"); stageBuiltins[EShLangFragment].append( "vec4 colorAttachmentReadEXT(attachmentEXT);" "vec4 colorAttachmentReadEXT(attachmentEXT, int);" "ivec4 colorAttachmentReadEXT(iattachmentEXT);" "ivec4 colorAttachmentReadEXT(iattachmentEXT, int);" "uvec4 colorAttachmentReadEXT(uattachmentEXT);" "uvec4 colorAttachmentReadEXT(uattachmentEXT, int);" "\n"); } // GL_ARB_derivative_control if (profile != EEsProfile && version >= 400) { stageBuiltins[EShLangFragment].append(derivativeControls); stageBuiltins[EShLangFragment].append("\n"); } // GL_OES_shader_multisample_interpolation if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 150)) { // NV_gpu_shader5 stageBuiltins[EShLangFragment].append( "float interpolateAtCentroid(float);" "vec2 interpolateAtCentroid(vec2);" "vec3 interpolateAtCentroid(vec3);" "vec4 interpolateAtCentroid(vec4);" "float interpolateAtSample(float, int);" "vec2 interpolateAtSample(vec2, int);" "vec3 interpolateAtSample(vec3, int);" "vec4 interpolateAtSample(vec4, int);" "float interpolateAtOffset(float, vec2);" "vec2 interpolateAtOffset(vec2, vec2);" "vec3 interpolateAtOffset(vec3, vec2);" "vec4 interpolateAtOffset(vec4, vec2);" "\n"); } stageBuiltins[EShLangFragment].append( "void beginInvocationInterlockARB(void);" "void endInvocationInterlockARB(void);"); stageBuiltins[EShLangFragment].append( "bool helperInvocationEXT();" "\n"); // GL_AMD_shader_explicit_vertex_parameter if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangFragment].append( "float interpolateAtVertexAMD(float, uint);" "vec2 interpolateAtVertexAMD(vec2, uint);" "vec3 interpolateAtVertexAMD(vec3, uint);" "vec4 interpolateAtVertexAMD(vec4, uint);" "int interpolateAtVertexAMD(int, uint);" "ivec2 interpolateAtVertexAMD(ivec2, uint);" "ivec3 interpolateAtVertexAMD(ivec3, uint);" "ivec4 interpolateAtVertexAMD(ivec4, uint);" "uint interpolateAtVertexAMD(uint, uint);" "uvec2 interpolateAtVertexAMD(uvec2, uint);" "uvec3 interpolateAtVertexAMD(uvec3, uint);" "uvec4 interpolateAtVertexAMD(uvec4, uint);" "float16_t interpolateAtVertexAMD(float16_t, uint);" "f16vec2 interpolateAtVertexAMD(f16vec2, uint);" "f16vec3 interpolateAtVertexAMD(f16vec3, uint);" "f16vec4 interpolateAtVertexAMD(f16vec4, uint);" "\n"); } // GL_AMD_gpu_shader_half_float if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangFragment].append(derivativesAndControl16bits); stageBuiltins[EShLangFragment].append("\n"); stageBuiltins[EShLangFragment].append( "float16_t interpolateAtCentroid(float16_t);" "f16vec2 interpolateAtCentroid(f16vec2);" "f16vec3 interpolateAtCentroid(f16vec3);" "f16vec4 interpolateAtCentroid(f16vec4);" "float16_t interpolateAtSample(float16_t, int);" "f16vec2 interpolateAtSample(f16vec2, int);" "f16vec3 interpolateAtSample(f16vec3, int);" "f16vec4 interpolateAtSample(f16vec4, int);" "float16_t interpolateAtOffset(float16_t, f16vec2);" "f16vec2 interpolateAtOffset(f16vec2, f16vec2);" "f16vec3 interpolateAtOffset(f16vec3, f16vec2);" "f16vec4 interpolateAtOffset(f16vec4, f16vec2);" "\n"); } // GL_ARB_shader_clock& GL_EXT_shader_realtime_clock if (profile != EEsProfile && version >= 450) { commonBuiltins.append( "uvec2 clock2x32ARB();" "uint64_t clockARB();" "uvec2 clockRealtime2x32EXT();" "uint64_t clockRealtimeEXT();" "\n"); } // GL_AMD_shader_fragment_mask if (profile != EEsProfile && version >= 450 && spvVersion.vulkan > 0) { stageBuiltins[EShLangFragment].append( "uint fragmentMaskFetchAMD(subpassInputMS);" "uint fragmentMaskFetchAMD(isubpassInputMS);" "uint fragmentMaskFetchAMD(usubpassInputMS);" "vec4 fragmentFetchAMD(subpassInputMS, uint);" "ivec4 fragmentFetchAMD(isubpassInputMS, uint);" "uvec4 fragmentFetchAMD(usubpassInputMS, uint);" "\n"); } // Builtins for GL_NV_ray_tracing/GL_NV_ray_tracing_motion_blur/GL_EXT_ray_tracing/GL_EXT_ray_query/ // GL_NV_shader_invocation_reorder/GL_KHR_ray_tracing_position_Fetch if (profile != EEsProfile && version >= 460) { commonBuiltins.append("void rayQueryInitializeEXT(rayQueryEXT, accelerationStructureEXT, uint, uint, vec3, float, vec3, float);" "void rayQueryTerminateEXT(rayQueryEXT);" "void rayQueryGenerateIntersectionEXT(rayQueryEXT, float);" "void rayQueryConfirmIntersectionEXT(rayQueryEXT);" "bool rayQueryProceedEXT(rayQueryEXT);" "uint rayQueryGetIntersectionTypeEXT(rayQueryEXT, bool);" "float rayQueryGetRayTMinEXT(rayQueryEXT);" "uint rayQueryGetRayFlagsEXT(rayQueryEXT);" "vec3 rayQueryGetWorldRayOriginEXT(rayQueryEXT);" "vec3 rayQueryGetWorldRayDirectionEXT(rayQueryEXT);" "float rayQueryGetIntersectionTEXT(rayQueryEXT, bool);" "int rayQueryGetIntersectionInstanceCustomIndexEXT(rayQueryEXT, bool);" "int rayQueryGetIntersectionInstanceIdEXT(rayQueryEXT, bool);" "uint rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQueryEXT, bool);" "int rayQueryGetIntersectionGeometryIndexEXT(rayQueryEXT, bool);" "int rayQueryGetIntersectionPrimitiveIndexEXT(rayQueryEXT, bool);" "vec2 rayQueryGetIntersectionBarycentricsEXT(rayQueryEXT, bool);" "bool rayQueryGetIntersectionFrontFaceEXT(rayQueryEXT, bool);" "bool rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQueryEXT);" "vec3 rayQueryGetIntersectionObjectRayDirectionEXT(rayQueryEXT, bool);" "vec3 rayQueryGetIntersectionObjectRayOriginEXT(rayQueryEXT, bool);" "mat4x3 rayQueryGetIntersectionObjectToWorldEXT(rayQueryEXT, bool);" "mat4x3 rayQueryGetIntersectionWorldToObjectEXT(rayQueryEXT, bool);" "void rayQueryGetIntersectionTriangleVertexPositionsEXT(rayQueryEXT, bool, out vec3[3]);" "int rayQueryGetIntersectionClusterIdNV(rayQueryEXT, bool);" "vec3 rayQueryGetIntersectionSpherePositionNV(rayQueryEXT, bool);" "float rayQueryGetIntersectionSphereRadiusNV(rayQueryEXT, bool);" "float rayQueryGetIntersectionLSSHitValueNV(rayQueryEXT, bool);" "void rayQueryGetIntersectionLSSPositionsNV(rayQueryEXT, bool, out vec3[2]);" "void rayQueryGetIntersectionLSSRadiiNV(rayQueryEXT, bool, out float[2]);" "bool rayQueryIsSphereHitNV(rayQueryEXT, bool);" "bool rayQueryIsLSSHitNV(rayQueryEXT, bool);" "\n"); stageBuiltins[EShLangRayGen].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" "void executeCallableEXT(uint, int);" "void hitObjectTraceRayNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void hitObjectTraceRayMotionNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordHitNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,int);" "void hitObjectRecordHitMotionNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordHitWithIndexNV(hitObjectNV, accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,int);" "void hitObjectRecordHitWithIndexMotionNV(hitObjectNV, accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordMissNV(hitObjectNV,uint,vec3,float,vec3,float);" "void hitObjectRecordMissMotionNV(hitObjectNV,uint,vec3,float,vec3,float,float);" "void hitObjectRecordEmptyNV(hitObjectNV);" "void hitObjectExecuteShaderNV(hitObjectNV,int);" "bool hitObjectIsEmptyNV(hitObjectNV);" "bool hitObjectIsMissNV(hitObjectNV);" "bool hitObjectIsHitNV(hitObjectNV);" "float hitObjectGetRayTMinNV(hitObjectNV);" "float hitObjectGetRayTMaxNV(hitObjectNV);" "vec3 hitObjectGetWorldRayOriginNV(hitObjectNV);" "vec3 hitObjectGetWorldRayDirectionNV(hitObjectNV);" "vec3 hitObjectGetObjectRayOriginNV(hitObjectNV);" "vec3 hitObjectGetObjectRayDirectionNV(hitObjectNV);" "mat4x3 hitObjectGetWorldToObjectNV(hitObjectNV);" "mat4x3 hitObjectGetObjectToWorldNV(hitObjectNV);" "int hitObjectGetInstanceCustomIndexNV(hitObjectNV);" "int hitObjectGetInstanceIdNV(hitObjectNV);" "int hitObjectGetGeometryIndexNV(hitObjectNV);" "int hitObjectGetPrimitiveIndexNV(hitObjectNV);" "uint hitObjectGetHitKindNV(hitObjectNV);" "void hitObjectGetAttributesNV(hitObjectNV,int);" "float hitObjectGetCurrentTimeNV(hitObjectNV);" "uint hitObjectGetShaderBindingTableRecordIndexNV(hitObjectNV);" "uvec2 hitObjectGetShaderRecordBufferHandleNV(hitObjectNV);" "int hitObjectGetClusterIdNV(hitObjectNV);" "void reorderThreadNV(uint, uint);" "void reorderThreadNV(hitObjectNV);" "void reorderThreadNV(hitObjectNV, uint, uint);" "vec3 fetchMicroTriangleVertexPositionNV(accelerationStructureEXT, int, int, int, ivec2);" "vec2 fetchMicroTriangleVertexBarycentricNV(accelerationStructureEXT, int, int, int, ivec2);" "vec3 hitObjectGetSpherePositionNV(hitObjectNV);" "float hitObjectGetSphereRadiusNV(hitObjectNV);" "void hitObjectGetLSSPositionsNV(hitObjectNV, out vec3[2]);" "void hitObjectGetLSSRadiiNV(hitObjectNV, out float[2]);" "bool hitObjectIsSphereHitNV(hitObjectNV);" "bool hitObjectIsLSSHitNV(hitObjectNV);" "\n"); stageBuiltins[EShLangIntersect].append( "bool reportIntersectionNV(float, uint);" "bool reportIntersectionEXT(float, uint);" "\n"); stageBuiltins[EShLangAnyHit].append( "void ignoreIntersectionNV();" "void terminateRayNV();" "\n"); stageBuiltins[EShLangClosestHit].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" "void executeCallableEXT(uint, int);" "void hitObjectTraceRayNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void hitObjectTraceRayMotionNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordHitNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,int);" "void hitObjectRecordHitMotionNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordHitWithIndexNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,int);" "void hitObjectRecordHitWithIndexMotionNV(hitObjectNV, accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordMissNV(hitObjectNV, uint, vec3, float, vec3, float);" "void hitObjectRecordMissMotionNV(hitObjectNV,uint,vec3,float,vec3,float,float);" "void hitObjectRecordEmptyNV(hitObjectNV);" "void hitObjectExecuteShaderNV(hitObjectNV, int);" "bool hitObjectIsEmptyNV(hitObjectNV);" "bool hitObjectIsMissNV(hitObjectNV);" "bool hitObjectIsHitNV(hitObjectNV);" "float hitObjectGetRayTMinNV(hitObjectNV);" "float hitObjectGetRayTMaxNV(hitObjectNV);" "vec3 hitObjectGetWorldRayOriginNV(hitObjectNV);" "vec3 hitObjectGetWorldRayDirectionNV(hitObjectNV);" "vec3 hitObjectGetObjectRayOriginNV(hitObjectNV);" "vec3 hitObjectGetObjectRayDirectionNV(hitObjectNV);" "mat4x3 hitObjectGetWorldToObjectNV(hitObjectNV);" "mat4x3 hitObjectGetObjectToWorldNV(hitObjectNV);" "int hitObjectGetInstanceCustomIndexNV(hitObjectNV);" "int hitObjectGetInstanceIdNV(hitObjectNV);" "int hitObjectGetGeometryIndexNV(hitObjectNV);" "int hitObjectGetPrimitiveIndexNV(hitObjectNV);" "uint hitObjectGetHitKindNV(hitObjectNV);" "void hitObjectGetAttributesNV(hitObjectNV,int);" "float hitObjectGetCurrentTimeNV(hitObjectNV);" "uint hitObjectGetShaderBindingTableRecordIndexNV(hitObjectNV);" "uvec2 hitObjectGetShaderRecordBufferHandleNV(hitObjectNV);" "int hitObjectGetClusterIdNV(hitObjectNV);" "vec3 hitObjectGetSpherePositionNV(hitObjectNV);" "float hitObjectGetSphereRadiusNV(hitObjectNV);" "void hitObjectGetLSSPositionsNV(hitObjectNV, out vec3[2]);" "void hitObjectGetLSSRadiiNV(hitObjectNV, out float[2]);" "bool hitObjectIsSphereHitNV(hitObjectNV);" "bool hitObjectIsLSSHitNV(hitObjectNV);" "\n"); stageBuiltins[EShLangMiss].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" "void executeCallableEXT(uint, int);" "void hitObjectTraceRayNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void hitObjectTraceRayMotionNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordHitNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,int);" "void hitObjectRecordHitMotionNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordHitWithIndexNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,int);" "void hitObjectRecordHitWithIndexMotionNV(hitObjectNV, accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,float,int);" "void hitObjectRecordMissNV(hitObjectNV, uint, vec3, float, vec3, float);" "void hitObjectRecordMissMotionNV(hitObjectNV,uint,vec3,float,vec3,float,float);" "void hitObjectRecordEmptyNV(hitObjectNV);" "void hitObjectExecuteShaderNV(hitObjectNV, int);" "bool hitObjectIsEmptyNV(hitObjectNV);" "bool hitObjectIsMissNV(hitObjectNV);" "bool hitObjectIsHitNV(hitObjectNV);" "float hitObjectGetRayTMinNV(hitObjectNV);" "float hitObjectGetRayTMaxNV(hitObjectNV);" "vec3 hitObjectGetWorldRayOriginNV(hitObjectNV);" "vec3 hitObjectGetWorldRayDirectionNV(hitObjectNV);" "vec3 hitObjectGetObjectRayOriginNV(hitObjectNV);" "vec3 hitObjectGetObjectRayDirectionNV(hitObjectNV);" "mat4x3 hitObjectGetWorldToObjectNV(hitObjectNV);" "mat4x3 hitObjectGetObjectToWorldNV(hitObjectNV);" "int hitObjectGetInstanceCustomIndexNV(hitObjectNV);" "int hitObjectGetInstanceIdNV(hitObjectNV);" "int hitObjectGetGeometryIndexNV(hitObjectNV);" "int hitObjectGetPrimitiveIndexNV(hitObjectNV);" "uint hitObjectGetHitKindNV(hitObjectNV);" "void hitObjectGetAttributesNV(hitObjectNV,int);" "float hitObjectGetCurrentTimeNV(hitObjectNV);" "uint hitObjectGetShaderBindingTableRecordIndexNV(hitObjectNV);" "uvec2 hitObjectGetShaderRecordBufferHandleNV(hitObjectNV);" "int hitObjectGetClusterIdNV(hitObjectNV);" "vec3 hitObjectGetSpherePositionNV(hitObjectNV);" "float hitObjectGetSphereRadiusNV(hitObjectNV);" "void hitObjectGetLSSPositionsNV(hitObjectNV, out vec3[2]);" "void hitObjectGetLSSRadiiNV(hitObjectNV, out float[2]);" "bool hitObjectIsSphereHitNV(hitObjectNV);" "bool hitObjectIsLSSHitNV(hitObjectNV);" "\n"); stageBuiltins[EShLangCallable].append( "void executeCallableNV(uint, int);" "void executeCallableEXT(uint, int);" "\n"); } //E_SPV_NV_compute_shader_derivatives if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) { stageBuiltins[EShLangCompute].append(derivativeControls); stageBuiltins[EShLangCompute].append("\n"); } if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangCompute].append(derivativesAndControl16bits); stageBuiltins[EShLangCompute].append(derivativesAndControl64bits); stageBuiltins[EShLangCompute].append("\n"); } // Builtins for GL_NV_mesh_shader if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { 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"); } // Builtins for GL_NV_displacement_micromap if ((profile != EEsProfile && version >= 460) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMesh].append( "vec3 fetchMicroTriangleVertexPositionNV(accelerationStructureEXT, int, int, int, ivec2);" "vec2 fetchMicroTriangleVertexBarycentricNV(accelerationStructureEXT, int, int, int, ivec2);" "\n"); stageBuiltins[EShLangCompute].append( "vec3 fetchMicroTriangleVertexPositionNV(accelerationStructureEXT, int, int, int, ivec2);" "vec2 fetchMicroTriangleVertexBarycentricNV(accelerationStructureEXT, int, int, int, ivec2);" "\n"); } //============================================================================ // // Standard Uniforms // //============================================================================ // // Depth range in window coordinates, p. 33 // if (spvVersion.spv == 0) { commonBuiltins.append( "struct gl_DepthRangeParameters {" ); if (profile == EEsProfile) { commonBuiltins.append( "highp float near;" // n "highp float far;" // f "highp float diff;" // f - n ); } else { commonBuiltins.append( "float near;" // n "float far;" // f "float diff;" // f - n ); } commonBuiltins.append( "};" "uniform gl_DepthRangeParameters gl_DepthRange;" "\n"); } if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) { // // Matrix state. p. 31, 32, 37, 39, 40. // commonBuiltins.append( "uniform mat4 gl_ModelViewMatrix;" "uniform mat4 gl_ProjectionMatrix;" "uniform mat4 gl_ModelViewProjectionMatrix;" // // Derived matrix state that provides inverse and transposed versions // of the matrices above. // "uniform mat3 gl_NormalMatrix;" "uniform mat4 gl_ModelViewMatrixInverse;" "uniform mat4 gl_ProjectionMatrixInverse;" "uniform mat4 gl_ModelViewProjectionMatrixInverse;" "uniform mat4 gl_ModelViewMatrixTranspose;" "uniform mat4 gl_ProjectionMatrixTranspose;" "uniform mat4 gl_ModelViewProjectionMatrixTranspose;" "uniform mat4 gl_ModelViewMatrixInverseTranspose;" "uniform mat4 gl_ProjectionMatrixInverseTranspose;" "uniform mat4 gl_ModelViewProjectionMatrixInverseTranspose;" // // Normal scaling p. 39. // "uniform float gl_NormalScale;" // // Point Size, p. 66, 67. // "struct gl_PointParameters {" "float size;" "float sizeMin;" "float sizeMax;" "float fadeThresholdSize;" "float distanceConstantAttenuation;" "float distanceLinearAttenuation;" "float distanceQuadraticAttenuation;" "};" "uniform gl_PointParameters gl_Point;" // // Material State p. 50, 55. // "struct gl_MaterialParameters {" "vec4 emission;" // Ecm "vec4 ambient;" // Acm "vec4 diffuse;" // Dcm "vec4 specular;" // Scm "float shininess;" // Srm "};" "uniform gl_MaterialParameters gl_FrontMaterial;" "uniform gl_MaterialParameters gl_BackMaterial;" // // Light State p 50, 53, 55. // "struct gl_LightSourceParameters {" "vec4 ambient;" // Acli "vec4 diffuse;" // Dcli "vec4 specular;" // Scli "vec4 position;" // Ppli "vec4 halfVector;" // Derived: Hi "vec3 spotDirection;" // Sdli "float spotExponent;" // Srli "float spotCutoff;" // Crli // (range: [0.0,90.0], 180.0) "float spotCosCutoff;" // Derived: cos(Crli) // (range: [1.0,0.0],-1.0) "float constantAttenuation;" // K0 "float linearAttenuation;" // K1 "float quadraticAttenuation;"// K2 "};" "struct gl_LightModelParameters {" "vec4 ambient;" // Acs "};" "uniform gl_LightModelParameters gl_LightModel;" // // Derived state from products of light and material. // "struct gl_LightModelProducts {" "vec4 sceneColor;" // Derived. Ecm + Acm * Acs "};" "uniform gl_LightModelProducts gl_FrontLightModelProduct;" "uniform gl_LightModelProducts gl_BackLightModelProduct;" "struct gl_LightProducts {" "vec4 ambient;" // Acm * Acli "vec4 diffuse;" // Dcm * Dcli "vec4 specular;" // Scm * Scli "};" // // Fog p. 161 // "struct gl_FogParameters {" "vec4 color;" "float density;" "float start;" "float end;" "float scale;" // 1 / (gl_FogEnd - gl_FogStart) "};" "uniform gl_FogParameters gl_Fog;" "\n"); } //============================================================================ // // Define the interface to the compute shader. // //============================================================================ if ((profile != EEsProfile && version >= 420) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangCompute].append( "in highp uvec3 gl_NumWorkGroups;" "const highp uvec3 gl_WorkGroupSize = uvec3(1,1,1);" "in highp uvec3 gl_WorkGroupID;" "in highp uvec3 gl_LocalInvocationID;" "in highp uvec3 gl_GlobalInvocationID;" "in highp uint gl_LocalInvocationIndex;" "\n"); } if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangCompute].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "\n"); } // GL_QCOM_tile_shading if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 460)) { stageBuiltins[EShLangCompute].append( "in highp uvec2 gl_TileOffsetQCOM;" // GL_QCOM_tile_shading "in highp uvec3 gl_TileDimensionQCOM;" // GL_QCOM_tile_shading "in highp uvec2 gl_TileApronSizeQCOM;" // GL_QCOM_tile_shading "\n"); } //============================================================================ // // Define the interface to the mesh/task shader. // //============================================================================ if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { // per-vertex attributes stageBuiltins[EShLangMesh].append( "out gl_MeshPerVertexNV {" "vec4 gl_Position;" "float gl_PointSize;" "float gl_ClipDistance[];" "float gl_CullDistance[];" "perviewNV vec4 gl_PositionPerViewNV[];" "perviewNV float gl_ClipDistancePerViewNV[][];" "perviewNV float gl_CullDistancePerViewNV[][];" "} gl_MeshVerticesNV[];" ); // per-primitive attributes stageBuiltins[EShLangMesh].append( "perprimitiveNV out gl_MeshPerPrimitiveNV {" "int gl_PrimitiveID;" "int gl_Layer;" "int gl_ViewportIndex;" "int gl_ViewportMask[];" "perviewNV int gl_LayerPerViewNV[];" "perviewNV int gl_ViewportMaskPerViewNV[][];" "} gl_MeshPrimitivesNV[];" ); stageBuiltins[EShLangMesh].append( "out uint gl_PrimitiveCountNV;" "out uint gl_PrimitiveIndicesNV[];" "in uint gl_MeshViewCountNV;" "in uint gl_MeshViewIndicesNV[4];" "const highp uvec3 gl_WorkGroupSize = uvec3(1,1,1);" "in highp uvec3 gl_WorkGroupID;" "in highp uvec3 gl_LocalInvocationID;" "in highp uvec3 gl_GlobalInvocationID;" "in highp uint gl_LocalInvocationIndex;" "\n"); // 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);" "in highp uvec3 gl_WorkGroupID;" "in highp uvec3 gl_LocalInvocationID;" "in highp uvec3 gl_GlobalInvocationID;" "in highp uint gl_LocalInvocationIndex;" "in uint gl_MeshViewCountNV;" "in uint gl_MeshViewIndicesNV[4];" "in highp uvec3 gl_NumWorkGroups;" "\n"); } if (profile != EEsProfile && version >= 450) { 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[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[EShLangMesh].append( "in int gl_DrawID;" "\n"); stageBuiltins[EShLangTask].append( "in int gl_DrawID;" "\n"); } } //============================================================================ // // Define the interface to the vertex shader. // //============================================================================ if (profile != EEsProfile) { if (version < 130) { stageBuiltins[EShLangVertex].append( "attribute vec4 gl_Color;" "attribute vec4 gl_SecondaryColor;" "attribute vec3 gl_Normal;" "attribute vec4 gl_Vertex;" "attribute vec4 gl_MultiTexCoord0;" "attribute vec4 gl_MultiTexCoord1;" "attribute vec4 gl_MultiTexCoord2;" "attribute vec4 gl_MultiTexCoord3;" "attribute vec4 gl_MultiTexCoord4;" "attribute vec4 gl_MultiTexCoord5;" "attribute vec4 gl_MultiTexCoord6;" "attribute vec4 gl_MultiTexCoord7;" "attribute float gl_FogCoord;" "\n"); } else if (IncludeLegacy(version, profile, spvVersion)) { stageBuiltins[EShLangVertex].append( "in vec4 gl_Color;" "in vec4 gl_SecondaryColor;" "in vec3 gl_Normal;" "in vec4 gl_Vertex;" "in vec4 gl_MultiTexCoord0;" "in vec4 gl_MultiTexCoord1;" "in vec4 gl_MultiTexCoord2;" "in vec4 gl_MultiTexCoord3;" "in vec4 gl_MultiTexCoord4;" "in vec4 gl_MultiTexCoord5;" "in vec4 gl_MultiTexCoord6;" "in vec4 gl_MultiTexCoord7;" "in float gl_FogCoord;" "\n"); } if (version < 150) { if (version < 130) { stageBuiltins[EShLangVertex].append( " vec4 gl_ClipVertex;" // needs qualifier fixed later "varying vec4 gl_FrontColor;" "varying vec4 gl_BackColor;" "varying vec4 gl_FrontSecondaryColor;" "varying vec4 gl_BackSecondaryColor;" "varying vec4 gl_TexCoord[];" "varying float gl_FogFragCoord;" "\n"); } else if (IncludeLegacy(version, profile, spvVersion)) { stageBuiltins[EShLangVertex].append( " vec4 gl_ClipVertex;" // needs qualifier fixed later "out vec4 gl_FrontColor;" "out vec4 gl_BackColor;" "out vec4 gl_FrontSecondaryColor;" "out vec4 gl_BackSecondaryColor;" "out vec4 gl_TexCoord[];" "out float gl_FogFragCoord;" "\n"); } stageBuiltins[EShLangVertex].append( "vec4 gl_Position;" // needs qualifier fixed later "float gl_PointSize;" // needs qualifier fixed later ); if (version == 130 || version == 140) stageBuiltins[EShLangVertex].append( "out float gl_ClipDistance[];" ); } else { // version >= 150 stageBuiltins[EShLangVertex].append( "out gl_PerVertex {" "vec4 gl_Position;" // needs qualifier fixed later "float gl_PointSize;" // needs qualifier fixed later "float gl_ClipDistance[];" ); if (IncludeLegacy(version, profile, spvVersion)) stageBuiltins[EShLangVertex].append( "vec4 gl_ClipVertex;" // needs qualifier fixed later "vec4 gl_FrontColor;" "vec4 gl_BackColor;" "vec4 gl_FrontSecondaryColor;" "vec4 gl_BackSecondaryColor;" "vec4 gl_TexCoord[];" "float gl_FogFragCoord;" ); if (version >= 450) stageBuiltins[EShLangVertex].append( "float gl_CullDistance[];" ); stageBuiltins[EShLangVertex].append( "};" "\n"); } if (version >= 130 && spvVersion.vulkan == 0) stageBuiltins[EShLangVertex].append( "int gl_VertexID;" // needs qualifier fixed later ); if (spvVersion.vulkan == 0) stageBuiltins[EShLangVertex].append( "int gl_InstanceID;" // needs qualifier fixed later ); if (spvVersion.vulkan > 0 && version >= 140) stageBuiltins[EShLangVertex].append( "in int gl_VertexIndex;" "in int gl_InstanceIndex;" ); if (spvVersion.vulkan > 0 && version >= 140 && spvVersion.vulkanRelaxed) stageBuiltins[EShLangVertex].append( "in int gl_VertexID;" // declare with 'in' qualifier "in int gl_InstanceID;" ); if (version >= 440) { stageBuiltins[EShLangVertex].append( "in int gl_BaseVertexARB;" "in int gl_BaseInstanceARB;" "in int gl_DrawIDARB;" ); } if (version >= 410) { stageBuiltins[EShLangVertex].append( "out int gl_ViewportIndex;" "out int gl_Layer;" ); } if (version >= 460) { stageBuiltins[EShLangVertex].append( "in int gl_BaseVertex;" "in int gl_BaseInstance;" "in int gl_DrawID;" ); } if (version >= 430) stageBuiltins[EShLangVertex].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 ); if (version >= 450) stageBuiltins[EShLangVertex].append( "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); } else { // ES profile if (version == 100) { stageBuiltins[EShLangVertex].append( "highp vec4 gl_Position;" // needs qualifier fixed later "mediump float gl_PointSize;" // needs qualifier fixed later "highp int gl_InstanceID;" // needs qualifier fixed later ); } else { if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed) stageBuiltins[EShLangVertex].append( "in highp int gl_VertexID;" // needs qualifier fixed later "in highp int gl_InstanceID;" // needs qualifier fixed later ); if (spvVersion.vulkan > 0) stageBuiltins[EShLangVertex].append( "in highp int gl_VertexIndex;" "in highp int gl_InstanceIndex;" ); if (version < 310) stageBuiltins[EShLangVertex].append( "highp vec4 gl_Position;" // needs qualifier fixed later "highp float gl_PointSize;" // needs qualifier fixed later ); else stageBuiltins[EShLangVertex].append( "out gl_PerVertex {" "highp vec4 gl_Position;" // needs qualifier fixed later "highp float gl_PointSize;" // needs qualifier fixed later "};" ); } } if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangVertex].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "in highp int gl_ViewIndex;" // GL_EXT_multiview "\n"); } if (version >= 300 /* both ES and non-ES */) { stageBuiltins[EShLangVertex].append( "in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2 "\n"); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangVertex].append( "out highp int gl_PrimitiveShadingRateEXT;" // GL_EXT_fragment_shading_rate "\n"); } //============================================================================ // // Define the interface to the geometry shader. // //============================================================================ if (profile == ECoreProfile || profile == ECompatibilityProfile) { stageBuiltins[EShLangGeometry].append( "in gl_PerVertex {" "vec4 gl_Position;" "float gl_PointSize;" "float gl_ClipDistance[];" ); if (profile == ECompatibilityProfile) stageBuiltins[EShLangGeometry].append( "vec4 gl_ClipVertex;" "vec4 gl_FrontColor;" "vec4 gl_BackColor;" "vec4 gl_FrontSecondaryColor;" "vec4 gl_BackSecondaryColor;" "vec4 gl_TexCoord[];" "float gl_FogFragCoord;" ); if (version >= 450) stageBuiltins[EShLangGeometry].append( "float gl_CullDistance[];" "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); stageBuiltins[EShLangGeometry].append( "} gl_in[];" "in int gl_PrimitiveIDIn;" "out gl_PerVertex {" "vec4 gl_Position;" "float gl_PointSize;" "float gl_ClipDistance[];" "\n"); if (profile == ECompatibilityProfile && version >= 400) stageBuiltins[EShLangGeometry].append( "vec4 gl_ClipVertex;" "vec4 gl_FrontColor;" "vec4 gl_BackColor;" "vec4 gl_FrontSecondaryColor;" "vec4 gl_BackSecondaryColor;" "vec4 gl_TexCoord[];" "float gl_FogFragCoord;" ); if (version >= 450) stageBuiltins[EShLangGeometry].append( "float gl_CullDistance[];" ); stageBuiltins[EShLangGeometry].append( "};" "out int gl_PrimitiveID;" "out int gl_Layer;"); if (version >= 150) stageBuiltins[EShLangGeometry].append( "out int gl_ViewportIndex;" ); if (profile == ECompatibilityProfile && version < 400) stageBuiltins[EShLangGeometry].append( "out vec4 gl_ClipVertex;" ); if (version >= 150) stageBuiltins[EShLangGeometry].append( "in int gl_InvocationID;" ); if (version >= 430) stageBuiltins[EShLangGeometry].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 ); if (version >= 450) stageBuiltins[EShLangGeometry].append( "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); stageBuiltins[EShLangGeometry].append("\n"); } else if (profile == EEsProfile && version >= 310) { stageBuiltins[EShLangGeometry].append( "in gl_PerVertex {" "highp vec4 gl_Position;" "highp float gl_PointSize;" "} gl_in[];" "\n" "in highp int gl_PrimitiveIDIn;" "in highp int gl_InvocationID;" "\n" "out gl_PerVertex {" "highp vec4 gl_Position;" "highp float gl_PointSize;" "};" "\n" "out highp int gl_PrimitiveID;" "out highp int gl_Layer;" "\n" ); } if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangGeometry].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "in highp int gl_ViewIndex;" // GL_EXT_multiview "\n"); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangGeometry].append( "out highp int gl_PrimitiveShadingRateEXT;" // GL_EXT_fragment_shading_rate "\n"); } //============================================================================ // // Define the interface to the tessellation control shader. // //============================================================================ if (profile != EEsProfile && version >= 150) { // Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below, // as it depends on the resource sizing of gl_MaxPatchVertices. stageBuiltins[EShLangTessControl].append( "in int gl_PatchVerticesIn;" "in int gl_PrimitiveID;" "in int gl_InvocationID;" "out gl_PerVertex {" "vec4 gl_Position;" "float gl_PointSize;" "float gl_ClipDistance[];" ); if (profile == ECompatibilityProfile) stageBuiltins[EShLangTessControl].append( "vec4 gl_ClipVertex;" "vec4 gl_FrontColor;" "vec4 gl_BackColor;" "vec4 gl_FrontSecondaryColor;" "vec4 gl_BackSecondaryColor;" "vec4 gl_TexCoord[];" "float gl_FogFragCoord;" ); if (version >= 450) stageBuiltins[EShLangTessControl].append( "float gl_CullDistance[];" ); if (version >= 430) stageBuiltins[EShLangTessControl].append( "int gl_ViewportMask[];" // GL_NV_viewport_array2 ); if (version >= 450) stageBuiltins[EShLangTessControl].append( "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); stageBuiltins[EShLangTessControl].append( "} gl_out[];" "patch out float gl_TessLevelOuter[4];" "patch out float gl_TessLevelInner[2];" "\n"); if (version >= 410) stageBuiltins[EShLangTessControl].append( "out int gl_ViewportIndex;" "out int gl_Layer;" "\n"); } else { // Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below, // as it depends on the resource sizing of gl_MaxPatchVertices. stageBuiltins[EShLangTessControl].append( "in highp int gl_PatchVerticesIn;" "in highp int gl_PrimitiveID;" "in highp int gl_InvocationID;" "out gl_PerVertex {" "highp vec4 gl_Position;" "highp float gl_PointSize;" ); stageBuiltins[EShLangTessControl].append( "} gl_out[];" "patch out highp float gl_TessLevelOuter[4];" "patch out highp float gl_TessLevelInner[2];" "patch out highp vec4 gl_BoundingBoxOES[2];" "patch out highp vec4 gl_BoundingBoxEXT[2];" "\n"); if (profile == EEsProfile && version >= 320) { stageBuiltins[EShLangTessControl].append( "patch out highp vec4 gl_BoundingBox[2];" "\n" ); } } if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangTessControl].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "in highp int gl_ViewIndex;" // GL_EXT_multiview "\n"); } //============================================================================ // // Define the interface to the tessellation evaluation shader. // //============================================================================ if (profile != EEsProfile && version >= 150) { // Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below, // as it depends on the resource sizing of gl_MaxPatchVertices. stageBuiltins[EShLangTessEvaluation].append( "in int gl_PatchVerticesIn;" "in int gl_PrimitiveID;" "in vec3 gl_TessCoord;" "patch in float gl_TessLevelOuter[4];" "patch in float gl_TessLevelInner[2];" "out gl_PerVertex {" "vec4 gl_Position;" "float gl_PointSize;" "float gl_ClipDistance[];" ); if (version >= 400 && profile == ECompatibilityProfile) stageBuiltins[EShLangTessEvaluation].append( "vec4 gl_ClipVertex;" "vec4 gl_FrontColor;" "vec4 gl_BackColor;" "vec4 gl_FrontSecondaryColor;" "vec4 gl_BackSecondaryColor;" "vec4 gl_TexCoord[];" "float gl_FogFragCoord;" ); if (version >= 450) stageBuiltins[EShLangTessEvaluation].append( "float gl_CullDistance[];" ); stageBuiltins[EShLangTessEvaluation].append( "};" "\n"); if (version >= 410) stageBuiltins[EShLangTessEvaluation].append( "out int gl_ViewportIndex;" "out int gl_Layer;" "\n"); if (version >= 430) stageBuiltins[EShLangTessEvaluation].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 ); if (version >= 450) stageBuiltins[EShLangTessEvaluation].append( "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); } else if (profile == EEsProfile && version >= 310) { // Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below, // as it depends on the resource sizing of gl_MaxPatchVertices. stageBuiltins[EShLangTessEvaluation].append( "in highp int gl_PatchVerticesIn;" "in highp int gl_PrimitiveID;" "in highp vec3 gl_TessCoord;" "patch in highp float gl_TessLevelOuter[4];" "patch in highp float gl_TessLevelInner[2];" "out gl_PerVertex {" "highp vec4 gl_Position;" "highp float gl_PointSize;" ); stageBuiltins[EShLangTessEvaluation].append( "};" "\n"); } if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangTessEvaluation].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "in highp int gl_ViewIndex;" // GL_EXT_multiview "\n"); } //============================================================================ // // Define the interface to the fragment shader. // //============================================================================ if (profile != EEsProfile) { stageBuiltins[EShLangFragment].append( "vec4 gl_FragCoord;" // needs qualifier fixed later "bool gl_FrontFacing;" // needs qualifier fixed later "float gl_FragDepth;" // needs qualifier fixed later ); if (version >= 120) stageBuiltins[EShLangFragment].append( "vec2 gl_PointCoord;" // needs qualifier fixed later ); if (version >= 140) stageBuiltins[EShLangFragment].append( "out int gl_FragStencilRefARB;" ); if (IncludeLegacy(version, profile, spvVersion) || (! ForwardCompatibility && version < 420)) stageBuiltins[EShLangFragment].append( "vec4 gl_FragColor;" // needs qualifier fixed later ); if (version < 130) { stageBuiltins[EShLangFragment].append( "varying vec4 gl_Color;" "varying vec4 gl_SecondaryColor;" "varying vec4 gl_TexCoord[];" "varying float gl_FogFragCoord;" ); } else { stageBuiltins[EShLangFragment].append( "in float gl_ClipDistance[];" ); if (IncludeLegacy(version, profile, spvVersion)) { if (version < 150) stageBuiltins[EShLangFragment].append( "in float gl_FogFragCoord;" "in vec4 gl_TexCoord[];" "in vec4 gl_Color;" "in vec4 gl_SecondaryColor;" ); else stageBuiltins[EShLangFragment].append( "in gl_PerFragment {" "in float gl_FogFragCoord;" "in vec4 gl_TexCoord[];" "in vec4 gl_Color;" "in vec4 gl_SecondaryColor;" "};" ); } } if (version >= 150) stageBuiltins[EShLangFragment].append( "flat in int gl_PrimitiveID;" ); if (version >= 130) { // ARB_sample_shading stageBuiltins[EShLangFragment].append( "flat in int gl_SampleID;" " in vec2 gl_SamplePosition;" " out int gl_SampleMask[];" ); if (spvVersion.spv == 0) { stageBuiltins[EShLangFragment].append( "uniform int gl_NumSamples;" ); } } if (version >= 150) stageBuiltins[EShLangFragment].append( "flat in int gl_SampleMaskIn[];" ); if (version >= 430) stageBuiltins[EShLangFragment].append( "flat in int gl_Layer;" "flat in int gl_ViewportIndex;" ); if (version >= 450) stageBuiltins[EShLangFragment].append( "in float gl_CullDistance[];" "bool gl_HelperInvocation;" // needs qualifier fixed later ); if (version >= 450) stageBuiltins[EShLangFragment].append( // GL_EXT_fragment_invocation_density "flat in ivec2 gl_FragSizeEXT;" "flat in int gl_FragInvocationCountEXT;" ); if (version >= 450) stageBuiltins[EShLangFragment].append( "in vec2 gl_BaryCoordNoPerspAMD;" "in vec2 gl_BaryCoordNoPerspCentroidAMD;" "in vec2 gl_BaryCoordNoPerspSampleAMD;" "in vec2 gl_BaryCoordSmoothAMD;" "in vec2 gl_BaryCoordSmoothCentroidAMD;" "in vec2 gl_BaryCoordSmoothSampleAMD;" "in vec3 gl_BaryCoordPullModelAMD;" ); if (version >= 430) stageBuiltins[EShLangFragment].append( "in bool gl_FragFullyCoveredNV;" ); if (version >= 450) stageBuiltins[EShLangFragment].append( "flat in ivec2 gl_FragmentSizeNV;" // GL_NV_shading_rate_image "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) stageBuiltins[EShLangFragment].append( "flat in int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate ); } else { // ES profile if (version == 100) { stageBuiltins[EShLangFragment].append( "mediump vec4 gl_FragCoord;" // needs qualifier fixed later " bool gl_FrontFacing;" // needs qualifier fixed later "mediump vec4 gl_FragColor;" // needs qualifier fixed later "mediump vec2 gl_PointCoord;" // needs qualifier fixed later ); } if (version >= 300) { stageBuiltins[EShLangFragment].append( "highp vec4 gl_FragCoord;" // needs qualifier fixed later " bool gl_FrontFacing;" // needs qualifier fixed later "mediump vec2 gl_PointCoord;" // needs qualifier fixed later "highp float gl_FragDepth;" // needs qualifier fixed later ); } if (version >= 310) { stageBuiltins[EShLangFragment].append( "bool gl_HelperInvocation;" // needs qualifier fixed later "flat in highp int gl_PrimitiveID;" // needs qualifier fixed later "flat in highp int gl_Layer;" // needs qualifier fixed later ); stageBuiltins[EShLangFragment].append( // GL_OES_sample_variables "flat in lowp int gl_SampleID;" " in mediump vec2 gl_SamplePosition;" "flat in highp int gl_SampleMaskIn[];" " out highp int gl_SampleMask[];" ); if (spvVersion.spv == 0) stageBuiltins[EShLangFragment].append( // GL_OES_sample_variables "uniform lowp int gl_NumSamples;" ); } stageBuiltins[EShLangFragment].append( "highp float gl_FragDepthEXT;" // GL_EXT_frag_depth ); if (version >= 310) stageBuiltins[EShLangFragment].append( // GL_EXT_fragment_invocation_density "flat in ivec2 gl_FragSizeEXT;" "flat in int gl_FragInvocationCountEXT;" ); if (version >= 320) stageBuiltins[EShLangFragment].append( // GL_NV_shading_rate_image "flat in ivec2 gl_FragmentSizeNV;" "flat in int gl_InvocationsPerPixelNV;" ); if (version >= 320) 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 ); } stageBuiltins[EShLangFragment].append("\n"); if (version >= 130) add2ndGenerationSamplingImaging(version, profile, spvVersion); if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangFragment].append( "flat in highp int gl_DeviceIndex;" // GL_EXT_device_group "flat in highp int gl_ViewIndex;" // GL_EXT_multiview "\n"); } if (version >= 300 /* both ES and non-ES */) { stageBuiltins[EShLangFragment].append( "flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2 "\n"); } // GL_QCOM_tile_shading if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 460)) { stageBuiltins[EShLangFragment].append( "flat in highp uvec2 gl_TileOffsetQCOM;" // GL_QCOM_tile_shading "flat in highp uvec3 gl_TileDimensionQCOM;" // GL_QCOM_tile_shading "flat in highp uvec2 gl_TileApronSizeQCOM;" // GL_QCOM_tile_shading "\n"); } // GL_ARB_shader_ballot if (profile != EEsProfile && version >= 450) { const char* ballotDecls = "uniform uint gl_SubGroupSizeARB;" "in uint gl_SubGroupInvocationARB;" "in uint64_t gl_SubGroupEqMaskARB;" "in uint64_t gl_SubGroupGeMaskARB;" "in uint64_t gl_SubGroupGtMaskARB;" "in uint64_t gl_SubGroupLeMaskARB;" "in uint64_t gl_SubGroupLtMaskARB;" "\n"; const char* rtBallotDecls = "uniform volatile uint gl_SubGroupSizeARB;" "in volatile uint gl_SubGroupInvocationARB;" "in volatile uint64_t gl_SubGroupEqMaskARB;" "in volatile uint64_t gl_SubGroupGeMaskARB;" "in volatile uint64_t gl_SubGroupGtMaskARB;" "in volatile uint64_t gl_SubGroupLeMaskARB;" "in volatile uint64_t gl_SubGroupLtMaskARB;" "\n"; const char* fragmentBallotDecls = "uniform uint gl_SubGroupSizeARB;" "flat in uint gl_SubGroupInvocationARB;" "flat in uint64_t gl_SubGroupEqMaskARB;" "flat in uint64_t gl_SubGroupGeMaskARB;" "flat in uint64_t gl_SubGroupGtMaskARB;" "flat in uint64_t gl_SubGroupLeMaskARB;" "flat in uint64_t gl_SubGroupLtMaskARB;" "\n"; stageBuiltins[EShLangVertex] .append(ballotDecls); stageBuiltins[EShLangTessControl] .append(ballotDecls); stageBuiltins[EShLangTessEvaluation].append(ballotDecls); stageBuiltins[EShLangGeometry] .append(ballotDecls); stageBuiltins[EShLangCompute] .append(ballotDecls); stageBuiltins[EShLangFragment] .append(fragmentBallotDecls); 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 stageBuiltins[EShLangAnyHit] .append(ballotDecls); stageBuiltins[EShLangClosestHit] .append(rtBallotDecls); stageBuiltins[EShLangMiss] .append(rtBallotDecls); stageBuiltins[EShLangCallable] .append(rtBallotDecls); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { const char* subgroupDecls = "in mediump uint gl_SubgroupSize;" "in mediump uint gl_SubgroupInvocationID;" "in highp uvec4 gl_SubgroupEqMask;" "in highp uvec4 gl_SubgroupGeMask;" "in highp uvec4 gl_SubgroupGtMask;" "in highp uvec4 gl_SubgroupLeMask;" "in highp uvec4 gl_SubgroupLtMask;" // GL_NV_shader_sm_builtins "in highp uint gl_WarpsPerSMNV;" "in highp uint gl_SMCountNV;" "in highp uint gl_WarpIDNV;" "in highp uint gl_SMIDNV;" // GL_ARM_shader_core_builtins "in highp uint gl_CoreIDARM;" "in highp uint gl_CoreCountARM;" "in highp uint gl_CoreMaxIDARM;" "in highp uint gl_WarpIDARM;" "in highp uint gl_WarpMaxIDARM;" "\n"; const char* fragmentSubgroupDecls = "flat in mediump uint gl_SubgroupSize;" "flat in mediump uint gl_SubgroupInvocationID;" "flat in highp uvec4 gl_SubgroupEqMask;" "flat in highp uvec4 gl_SubgroupGeMask;" "flat in highp uvec4 gl_SubgroupGtMask;" "flat in highp uvec4 gl_SubgroupLeMask;" "flat in highp uvec4 gl_SubgroupLtMask;" // GL_NV_shader_sm_builtins "flat in highp uint gl_WarpsPerSMNV;" "flat in highp uint gl_SMCountNV;" "flat in highp uint gl_WarpIDNV;" "flat in highp uint gl_SMIDNV;" // GL_ARM_shader_core_builtins "flat in highp uint gl_CoreIDARM;" "flat in highp uint gl_CoreCountARM;" "flat in highp uint gl_CoreMaxIDARM;" "flat in highp uint gl_WarpIDARM;" "flat in highp uint gl_WarpMaxIDARM;" "\n"; const char* computeSubgroupDecls = "in highp uint gl_NumSubgroups;" "in highp uint gl_SubgroupID;" "\n"; // These builtins are volatile for RT stages const char* rtSubgroupDecls = "in mediump volatile uint gl_SubgroupSize;" "in mediump volatile uint gl_SubgroupInvocationID;" "in highp volatile uvec4 gl_SubgroupEqMask;" "in highp volatile uvec4 gl_SubgroupGeMask;" "in highp volatile uvec4 gl_SubgroupGtMask;" "in highp volatile uvec4 gl_SubgroupLeMask;" "in highp volatile uvec4 gl_SubgroupLtMask;" // GL_NV_shader_sm_builtins "in highp uint gl_WarpsPerSMNV;" "in highp uint gl_SMCountNV;" "in highp volatile uint gl_WarpIDNV;" "in highp volatile uint gl_SMIDNV;" // GL_ARM_shader_core_builtins "in highp uint gl_CoreIDARM;" "in highp uint gl_CoreCountARM;" "in highp uint gl_CoreMaxIDARM;" "in highp uint gl_WarpIDARM;" "in highp uint gl_WarpMaxIDARM;" "\n"; stageBuiltins[EShLangVertex] .append(subgroupDecls); stageBuiltins[EShLangTessControl] .append(subgroupDecls); stageBuiltins[EShLangTessEvaluation].append(subgroupDecls); stageBuiltins[EShLangGeometry] .append(subgroupDecls); stageBuiltins[EShLangCompute] .append(subgroupDecls); stageBuiltins[EShLangCompute] .append(computeSubgroupDecls); stageBuiltins[EShLangFragment] .append(fragmentSubgroupDecls); 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 stageBuiltins[EShLangAnyHit] .append(subgroupDecls); stageBuiltins[EShLangClosestHit] .append(rtSubgroupDecls); stageBuiltins[EShLangMiss] .append(rtSubgroupDecls); stageBuiltins[EShLangCallable] .append(rtSubgroupDecls); } // GL_NV_ray_tracing/GL_EXT_ray_tracing if (profile != EEsProfile && version >= 460) { const char *constRayFlags = "const uint gl_RayFlagsNoneNV = 0U;" "const uint gl_RayFlagsNoneEXT = 0U;" "const uint gl_RayFlagsOpaqueNV = 1U;" "const uint gl_RayFlagsOpaqueEXT = 1U;" "const uint gl_RayFlagsNoOpaqueNV = 2U;" "const uint gl_RayFlagsNoOpaqueEXT = 2U;" "const uint gl_RayFlagsTerminateOnFirstHitNV = 4U;" "const uint gl_RayFlagsTerminateOnFirstHitEXT = 4U;" "const uint gl_RayFlagsSkipClosestHitShaderNV = 8U;" "const uint gl_RayFlagsSkipClosestHitShaderEXT = 8U;" "const uint gl_RayFlagsCullBackFacingTrianglesNV = 16U;" "const uint gl_RayFlagsCullBackFacingTrianglesEXT = 16U;" "const uint gl_RayFlagsCullFrontFacingTrianglesNV = 32U;" "const uint gl_RayFlagsCullFrontFacingTrianglesEXT = 32U;" "const uint gl_RayFlagsCullOpaqueNV = 64U;" "const uint gl_RayFlagsCullOpaqueEXT = 64U;" "const uint gl_RayFlagsCullNoOpaqueNV = 128U;" "const uint gl_RayFlagsCullNoOpaqueEXT = 128U;" "const uint gl_RayFlagsSkipTrianglesEXT = 256U;" "const uint gl_RayFlagsSkipBuiltinPrimitivesNV = 256U;" "const uint gl_RayFlagsSkipAABBEXT = 512U;" "const uint gl_RayFlagsForceOpacityMicromap2StateEXT = 1024U;" "const uint gl_HitKindFrontFacingTriangleEXT = 254U;" "const uint gl_HitKindBackFacingTriangleEXT = 255U;" "in uint gl_HitKindFrontFacingMicroTriangleNV;" "in uint gl_HitKindBackFacingMicroTriangleNV;" "const int gl_ClusterIDNoneNV = -1;" "\n"; const char *constRayQueryIntersection = "const uint gl_RayQueryCandidateIntersectionEXT = 0U;" "const uint gl_RayQueryCommittedIntersectionEXT = 1U;" "const uint gl_RayQueryCommittedIntersectionNoneEXT = 0U;" "const uint gl_RayQueryCommittedIntersectionTriangleEXT = 1U;" "const uint gl_RayQueryCommittedIntersectionGeneratedEXT = 2U;" "const uint gl_RayQueryCandidateIntersectionTriangleEXT = 0U;" "const uint gl_RayQueryCandidateIntersectionAABBEXT = 1U;" "\n"; const char *rayGenDecls = "in uvec3 gl_LaunchIDNV;" "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" "in uvec3 gl_LaunchSizeEXT;" "\n"; const char *intersectDecls = "in uvec3 gl_LaunchIDNV;" "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" "in uvec3 gl_LaunchSizeEXT;" "in int gl_PrimitiveID;" "in int gl_InstanceID;" "in int gl_InstanceCustomIndexNV;" "in int gl_InstanceCustomIndexEXT;" "in int gl_GeometryIndexEXT;" "in vec3 gl_WorldRayOriginNV;" "in vec3 gl_WorldRayOriginEXT;" "in vec3 gl_WorldRayDirectionNV;" "in vec3 gl_WorldRayDirectionEXT;" "in vec3 gl_ObjectRayOriginNV;" "in vec3 gl_ObjectRayOriginEXT;" "in vec3 gl_ObjectRayDirectionNV;" "in vec3 gl_ObjectRayDirectionEXT;" "in float gl_RayTminNV;" "in float gl_RayTminEXT;" "in float gl_RayTmaxNV;" "in volatile float gl_RayTmaxEXT;" "in mat4x3 gl_ObjectToWorldNV;" "in mat4x3 gl_ObjectToWorldEXT;" "in mat3x4 gl_ObjectToWorld3x4EXT;" "in mat4x3 gl_WorldToObjectNV;" "in mat4x3 gl_WorldToObjectEXT;" "in mat3x4 gl_WorldToObject3x4EXT;" "in uint gl_IncomingRayFlagsNV;" "in uint gl_IncomingRayFlagsEXT;" "in float gl_CurrentRayTimeNV;" "in uint gl_CullMaskEXT;" "\n"; const char *hitDecls = "in uvec3 gl_LaunchIDNV;" "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" "in uvec3 gl_LaunchSizeEXT;" "in int gl_PrimitiveID;" "in int gl_InstanceID;" "in int gl_InstanceCustomIndexNV;" "in int gl_InstanceCustomIndexEXT;" "in int gl_GeometryIndexEXT;" "in vec3 gl_WorldRayOriginNV;" "in vec3 gl_WorldRayOriginEXT;" "in vec3 gl_WorldRayDirectionNV;" "in vec3 gl_WorldRayDirectionEXT;" "in vec3 gl_ObjectRayOriginNV;" "in vec3 gl_ObjectRayOriginEXT;" "in vec3 gl_ObjectRayDirectionNV;" "in vec3 gl_ObjectRayDirectionEXT;" "in float gl_RayTminNV;" "in float gl_RayTminEXT;" "in float gl_RayTmaxNV;" "in float gl_RayTmaxEXT;" "in float gl_HitTNV;" "in float gl_HitTEXT;" "in uint gl_HitKindNV;" "in uint gl_HitKindEXT;" "in mat4x3 gl_ObjectToWorldNV;" "in mat4x3 gl_ObjectToWorldEXT;" "in mat3x4 gl_ObjectToWorld3x4EXT;" "in mat4x3 gl_WorldToObjectNV;" "in mat4x3 gl_WorldToObjectEXT;" "in mat3x4 gl_WorldToObject3x4EXT;" "in uint gl_IncomingRayFlagsNV;" "in uint gl_IncomingRayFlagsEXT;" "in float gl_CurrentRayTimeNV;" "in uint gl_CullMaskEXT;" "in vec3 gl_HitTriangleVertexPositionsEXT[3];" "in vec3 gl_HitMicroTriangleVertexPositionsNV[3];" "in vec2 gl_HitMicroTriangleVertexBarycentricsNV[3];" "in int gl_ClusterIDNV;" "in bool gl_HitIsSphereNV;" "in bool gl_HitIsLSSNV;" "in vec3 gl_HitSpherePositionNV;" "in float gl_HitSphereRadiusNV;" "in vec3 gl_HitLSSPositionsNV[2];" "in float gl_HitLSSRadiiNV[2];" "\n"; const char *missDecls = "in uvec3 gl_LaunchIDNV;" "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" "in uvec3 gl_LaunchSizeEXT;" "in vec3 gl_WorldRayOriginNV;" "in vec3 gl_WorldRayOriginEXT;" "in vec3 gl_WorldRayDirectionNV;" "in vec3 gl_WorldRayDirectionEXT;" "in vec3 gl_ObjectRayOriginNV;" "in vec3 gl_ObjectRayDirectionNV;" "in float gl_RayTminNV;" "in float gl_RayTminEXT;" "in float gl_RayTmaxNV;" "in float gl_RayTmaxEXT;" "in uint gl_IncomingRayFlagsNV;" "in uint gl_IncomingRayFlagsEXT;" "in float gl_CurrentRayTimeNV;" "in uint gl_CullMaskEXT;" "\n"; const char *callableDecls = "in uvec3 gl_LaunchIDNV;" "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" "in uvec3 gl_LaunchSizeEXT;" "\n"; commonBuiltins.append(constRayQueryIntersection); commonBuiltins.append(constRayFlags); stageBuiltins[EShLangRayGen].append(rayGenDecls); stageBuiltins[EShLangIntersect].append(intersectDecls); stageBuiltins[EShLangAnyHit].append(hitDecls); stageBuiltins[EShLangClosestHit].append(hitDecls); stageBuiltins[EShLangMiss].append(missDecls); stageBuiltins[EShLangCallable].append(callableDecls); } if ((profile != EEsProfile && version >= 140)) { const char *deviceIndex = "in highp int gl_DeviceIndex;" // GL_EXT_device_group "\n"; stageBuiltins[EShLangRayGen].append(deviceIndex); stageBuiltins[EShLangIntersect].append(deviceIndex); stageBuiltins[EShLangAnyHit].append(deviceIndex); stageBuiltins[EShLangClosestHit].append(deviceIndex); stageBuiltins[EShLangMiss].append(deviceIndex); } if ((profile != EEsProfile && version >= 420) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append("const int gl_ScopeDevice = 1;\n"); commonBuiltins.append("const int gl_ScopeWorkgroup = 2;\n"); commonBuiltins.append("const int gl_ScopeSubgroup = 3;\n"); commonBuiltins.append("const int gl_ScopeInvocation = 4;\n"); commonBuiltins.append("const int gl_ScopeQueueFamily = 5;\n"); commonBuiltins.append("const int gl_ScopeShaderCallEXT = 6;\n"); commonBuiltins.append("const int gl_SemanticsRelaxed = 0x0;\n"); commonBuiltins.append("const int gl_SemanticsAcquire = 0x2;\n"); commonBuiltins.append("const int gl_SemanticsRelease = 0x4;\n"); commonBuiltins.append("const int gl_SemanticsAcquireRelease = 0x8;\n"); commonBuiltins.append("const int gl_SemanticsMakeAvailable = 0x2000;\n"); commonBuiltins.append("const int gl_SemanticsMakeVisible = 0x4000;\n"); commonBuiltins.append("const int gl_SemanticsVolatile = 0x8000;\n"); commonBuiltins.append("const int gl_StorageSemanticsNone = 0x0;\n"); commonBuiltins.append("const int gl_StorageSemanticsBuffer = 0x40;\n"); commonBuiltins.append("const int gl_StorageSemanticsShared = 0x100;\n"); commonBuiltins.append("const int gl_StorageSemanticsImage = 0x800;\n"); commonBuiltins.append("const int gl_StorageSemanticsOutput = 0x1000;\n"); } // Adding these to common built-ins triggers an assert due to a memory corruption in related code when testing // So instead add to each stage individually, avoiding the GLSLang bug if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { for (int stage=EShLangVertex; stage(stage)].append("const highp int gl_ShadingRateFlag2VerticalPixelsEXT = 1;\n"); stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag4VerticalPixelsEXT = 2;\n"); stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag2HorizontalPixelsEXT = 4;\n"); stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag4HorizontalPixelsEXT = 8;\n"); } } // GL_EXT_shader_image_int64 if ((profile != EEsProfile && version >= 420) || (profile == EEsProfile && version >= 310)) { const TBasicType bTypes[] = { EbtInt64, EbtUint64 }; for (int ms = 0; ms <= 1; ++ms) { // loop over "bool" multisample or not for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not for (int dim = Esd1D; dim < EsdSubpass; ++dim) { // 1D, ..., buffer if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile) continue; if ((dim == Esd3D || dim == EsdRect || dim == EsdBuffer) && arrayed) continue; if (dim != Esd2D && ms) continue; // Loop over the bTypes for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) { // // Now, make all the function prototypes for the type we just built... // TSampler sampler; sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false, false, ms ? true : false); TString typeName = sampler.getString(); addQueryFunctions(sampler, typeName, version, profile); addImageFunctions(sampler, typeName, version, profile); } } } } } // printf("%s\n", commonBuiltins.c_str()); // printf("%s\n", stageBuiltins[EShLangFragment].c_str()); } // // Helper function for initialize(), to add the second set of names for texturing, // when adding context-independent built-in functions. // void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, const SpvVersion& spvVersion) { // // In this function proper, enumerate the types, then calls the next set of functions // to enumerate all the uses for that type. // // enumerate all the types const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint, EbtFloat16 }; bool skipBuffer = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 140); bool skipCubeArrayed = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 130); for (int image = 0; image <= 1; ++image) // loop over "bool" image vs sampler { for (int shadow = 0; shadow <= 1; ++shadow) { // loop over "bool" shadow or not for (int ms = 0; ms <= 1; ++ms) // loop over "bool" multisample or not { if ((ms || image) && shadow) continue; if (ms && profile != EEsProfile && version < 140) continue; if (ms && image && profile == EEsProfile) continue; if (ms && profile == EEsProfile && version < 310) continue; for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass if (dim == EsdAttachmentEXT) continue; if (dim == EsdSubpass && spvVersion.vulkan == 0) continue; if (dim == EsdSubpass && (image || shadow || arrayed)) continue; if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile) continue; if (dim == EsdSubpass && spvVersion.vulkan == 0) continue; if (dim == EsdSubpass && (image || shadow || arrayed)) continue; if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile) continue; if (dim != Esd2D && dim != EsdSubpass && ms) continue; if (dim == EsdBuffer && skipBuffer) continue; if (dim == EsdBuffer && (shadow || arrayed || ms)) continue; if (ms && arrayed && profile == EEsProfile && version < 310) continue; if (dim == Esd3D && shadow) continue; if (dim == EsdCube && arrayed && skipCubeArrayed) continue; if ((dim == Esd3D || dim == EsdRect) && arrayed) continue; // Loop over the bTypes for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) { if (bTypes[bType] == EbtFloat16 && (profile == EEsProfile || version < 450)) continue; if (dim == EsdRect && version < 140 && bType > 0) continue; if (shadow && (bTypes[bType] == EbtInt || bTypes[bType] == EbtUint)) continue; // // Now, make all the function prototypes for the type we just built... // TSampler sampler; if (dim == EsdSubpass) { sampler.setSubpass(bTypes[bType], ms ? true : false); } else if (dim == EsdAttachmentEXT) { sampler.setAttachmentEXT(bTypes[bType]); } else if (image) { sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false, shadow ? true : false, ms ? true : false); } else { sampler.set(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false, shadow ? true : false, ms ? true : false); } TString typeName = sampler.getString(); if (dim == EsdSubpass) { addSubpassSampling(sampler, typeName, version, profile); continue; } addQueryFunctions(sampler, typeName, version, profile); if (image) addImageFunctions(sampler, typeName, version, profile); else { addSamplingFunctions(sampler, typeName, version, profile); addGatherFunctions(sampler, typeName, version, profile); if (spvVersion.vulkan > 0 && sampler.isCombined() && !sampler.shadow) { // Base Vulkan allows texelFetch() for // textureBuffer (i.e. without sampler). // // GL_EXT_samplerless_texture_functions // allows texelFetch() and query functions // (other than textureQueryLod()) for all // texture types. sampler.setTexture(sampler.type, sampler.dim, sampler.arrayed, sampler.shadow, sampler.ms); TString textureTypeName = sampler.getString(); addSamplingFunctions(sampler, textureTypeName, version, profile); addQueryFunctions(sampler, textureTypeName, version, profile); } } } } } } } } // // sparseTexelsResidentARB() // if (profile != EEsProfile && version >= 450) { commonBuiltins.append("bool sparseTexelsResidentARB(int code);\n"); } } // // Helper function for add2ndGenerationSamplingImaging(), // when adding context-independent built-in functions. // // Add all the query functions for the given type. // void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { // // textureSize() and imageSize() // int sizeDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0) - (sampler.dim == EsdCube ? 1 : 0); if (sampler.isImage() && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 420))) return; if (profile == EEsProfile) commonBuiltins.append("highp "); if (sizeDims == 1) commonBuiltins.append("int"); else { commonBuiltins.append("ivec"); commonBuiltins.append(postfixes[sizeDims]); } if (sampler.isImage()) commonBuiltins.append(" imageSize(readonly writeonly volatile coherent nontemporal "); else commonBuiltins.append(" textureSize("); commonBuiltins.append(typeName); if (! sampler.isImage() && ! sampler.isRect() && ! sampler.isBuffer() && ! sampler.isMultiSample()) commonBuiltins.append(",int);\n"); else commonBuiltins.append(");\n"); // // textureSamples() and imageSamples() // // GL_ARB_shader_texture_image_samples // TODO: spec issue? there are no memory qualifiers; how to query a writeonly/readonly image, etc? if (profile != EEsProfile && version >= 430 && sampler.isMultiSample()) { commonBuiltins.append("int "); if (sampler.isImage()) commonBuiltins.append("imageSamples(readonly writeonly volatile coherent nontemporal "); else commonBuiltins.append("textureSamples("); commonBuiltins.append(typeName); commonBuiltins.append(");\n"); } // // 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()) { 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"); } } // // textureQueryLevels() // if (profile != EEsProfile && version >= 430 && ! sampler.isImage() && sampler.dim != EsdRect && ! sampler.isMultiSample() && ! sampler.isBuffer()) { commonBuiltins.append("int textureQueryLevels("); commonBuiltins.append(typeName); commonBuiltins.append(");\n"); } } // // Helper function for add2ndGenerationSamplingImaging(), // when adding context-independent built-in functions. // // Add all the image access functions for the given type. // void TBuiltIns::addImageFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { int dims = dimMap[sampler.dim]; // most things with an array add a dimension, except for cubemaps if (sampler.arrayed && sampler.dim != EsdCube) ++dims; TString imageParams = typeName; if (dims == 1) imageParams.append(", int"); else { imageParams.append(", ivec"); imageParams.append(postfixes[dims]); } if (sampler.isMultiSample()) imageParams.append(", int"); if (profile == EEsProfile) commonBuiltins.append("highp "); commonBuiltins.append(prefixes[sampler.type]); commonBuiltins.append("vec4 imageLoad(readonly volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(");\n"); commonBuiltins.append("void imageStore(writeonly volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", "); commonBuiltins.append(prefixes[sampler.type]); commonBuiltins.append("vec4);\n"); if (! sampler.is1D() && ! sampler.isBuffer() && profile != EEsProfile && version >= 450) { commonBuiltins.append("int sparseImageLoadARB(readonly volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", out "); commonBuiltins.append(prefixes[sampler.type]); commonBuiltins.append("vec4"); commonBuiltins.append(");\n"); } if ( profile != EEsProfile || (profile == EEsProfile && version >= 310)) { if (sampler.type == EbtInt || sampler.type == EbtUint || sampler.type == EbtInt64 || sampler.type == EbtUint64 ) { const char* dataType; switch (sampler.type) { case(EbtInt): dataType = "highp int"; break; case(EbtUint): dataType = "highp uint"; break; case(EbtInt64): dataType = "highp int64_t"; break; case(EbtUint64): dataType = "highp uint64_t"; break; default: dataType = ""; } const int numBuiltins = 7; static const char* atomicFunc[numBuiltins] = { " imageAtomicAdd(volatile coherent nontemporal ", " imageAtomicMin(volatile coherent nontemporal ", " imageAtomicMax(volatile coherent nontemporal ", " imageAtomicAnd(volatile coherent nontemporal ", " imageAtomicOr(volatile coherent nontemporal ", " imageAtomicXor(volatile coherent nontemporal ", " imageAtomicExchange(volatile coherent nontemporal " }; // Loop twice to add prototypes with/without scope/semantics for (int j = 0; j < 2; ++j) { for (size_t i = 0; i < numBuiltins; ++i) { commonBuiltins.append(dataType); commonBuiltins.append(atomicFunc[i]); commonBuiltins.append(imageParams); commonBuiltins.append(", "); commonBuiltins.append(dataType); if (j == 1) { commonBuiltins.append(", int, int, int"); } commonBuiltins.append(");\n"); } commonBuiltins.append(dataType); commonBuiltins.append(" imageAtomicCompSwap(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", "); commonBuiltins.append(dataType); commonBuiltins.append(", "); commonBuiltins.append(dataType); if (j == 1) { commonBuiltins.append(", int, int, int, int, int"); } commonBuiltins.append(");\n"); } commonBuiltins.append(dataType); commonBuiltins.append(" imageAtomicLoad(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", int, int, int);\n"); commonBuiltins.append("void imageAtomicStore(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", "); commonBuiltins.append(dataType); commonBuiltins.append(", int, int, int);\n"); } else { // not int or uint // GL_ARB_ES3_1_compatibility // TODO: spec issue: are there restrictions on the kind of layout() that can be used? what about dropping memory qualifiers? if (profile == EEsProfile && version >= 310) { commonBuiltins.append("float imageAtomicExchange(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float);\n"); } // GL_NV_shader_atomic_fp16_vector if (profile != EEsProfile && version >= 430) { const int numFp16Builtins = 4; const char* atomicFp16Func[numFp16Builtins] = { " imageAtomicAdd(volatile coherent nontemporal ", " imageAtomicMin(volatile coherent nontemporal ", " imageAtomicMax(volatile coherent nontemporal ", " imageAtomicExchange(volatile coherent nontemporal " }; const int numFp16DataTypes = 2; const char* atomicFp16DataTypes[numFp16DataTypes] = { "f16vec2", "f16vec4" }; // Loop twice to add prototypes with/without scope/semantics for (int j = 0; j < numFp16DataTypes; ++j) { for (int i = 0; i < numFp16Builtins; ++i) { commonBuiltins.append(atomicFp16DataTypes[j]); commonBuiltins.append(atomicFp16Func[i]); commonBuiltins.append(imageParams); commonBuiltins.append(", "); commonBuiltins.append(atomicFp16DataTypes[j]); commonBuiltins.append(");\n"); } } } if (profile != EEsProfile && version >= 450) { commonBuiltins.append("float imageAtomicAdd(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float);\n"); commonBuiltins.append("float imageAtomicAdd(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float"); commonBuiltins.append(", int, int, int);\n"); commonBuiltins.append("float imageAtomicExchange(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float);\n"); commonBuiltins.append("float imageAtomicExchange(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float"); commonBuiltins.append(", int, int, int);\n"); commonBuiltins.append("float imageAtomicLoad(readonly volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", int, int, int);\n"); commonBuiltins.append("void imageAtomicStore(writeonly volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float"); commonBuiltins.append(", int, int, int);\n"); commonBuiltins.append("float imageAtomicMin(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float);\n"); commonBuiltins.append("float imageAtomicMin(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float"); commonBuiltins.append(", int, int, int);\n"); commonBuiltins.append("float imageAtomicMax(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float);\n"); commonBuiltins.append("float imageAtomicMax(volatile coherent nontemporal "); commonBuiltins.append(imageParams); commonBuiltins.append(", float"); commonBuiltins.append(", int, int, int);\n"); } } } if (sampler.dim == EsdRect || sampler.dim == EsdBuffer || sampler.shadow || sampler.isMultiSample()) return; if (profile == EEsProfile || version < 450) return; TString imageLodParams = typeName; if (dims == 1) imageLodParams.append(", int"); else { imageLodParams.append(", ivec"); imageLodParams.append(postfixes[dims]); } imageLodParams.append(", int"); commonBuiltins.append(prefixes[sampler.type]); commonBuiltins.append("vec4 imageLoadLodAMD(readonly volatile coherent nontemporal "); commonBuiltins.append(imageLodParams); commonBuiltins.append(");\n"); commonBuiltins.append("void imageStoreLodAMD(writeonly volatile coherent nontemporal "); commonBuiltins.append(imageLodParams); commonBuiltins.append(", "); commonBuiltins.append(prefixes[sampler.type]); commonBuiltins.append("vec4);\n"); if (! sampler.is1D()) { commonBuiltins.append("int sparseImageLoadLodAMD(readonly volatile coherent nontemporal "); commonBuiltins.append(imageLodParams); commonBuiltins.append(", out "); commonBuiltins.append(prefixes[sampler.type]); commonBuiltins.append("vec4"); commonBuiltins.append(");\n"); } } // // Helper function for initialize(), // when adding context-independent built-in functions. // // Add all the subpass access functions for the given type. // void TBuiltIns::addSubpassSampling(TSampler sampler, const TString& typeName, int /*version*/, EProfile /*profile*/) { stageBuiltins[EShLangFragment].append(prefixes[sampler.type]); stageBuiltins[EShLangFragment].append("vec4 subpassLoad"); stageBuiltins[EShLangFragment].append("("); stageBuiltins[EShLangFragment].append(typeName.c_str()); if (sampler.isMultiSample()) stageBuiltins[EShLangFragment].append(", int"); stageBuiltins[EShLangFragment].append(");\n"); } // // Helper function for add2ndGenerationSamplingImaging(), // when adding context-independent built-in functions. // // Add all the texture lookup functions for the given type. // void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { // // texturing // for (int proj = 0; proj <= 1; ++proj) { // loop over "bool" projective or not if (proj && (sampler.dim == EsdCube || sampler.isBuffer() || sampler.arrayed || sampler.isMultiSample() || !sampler.isCombined())) continue; for (int lod = 0; lod <= 1; ++lod) { if (lod && (sampler.isBuffer() || sampler.isRect() || sampler.isMultiSample() || !sampler.isCombined())) continue; if (lod && sampler.dim == Esd2D && sampler.arrayed && sampler.shadow) continue; if (lod && sampler.dim == EsdCube && sampler.shadow) continue; for (int bias = 0; bias <= 1; ++bias) { if (bias && (lod || sampler.isMultiSample() || !sampler.isCombined())) continue; if (bias && (sampler.dim == Esd2D || sampler.dim == EsdCube) && sampler.shadow && sampler.arrayed) continue; if (bias && (sampler.isRect() || sampler.isBuffer())) continue; for (int offset = 0; offset <= 1; ++offset) { // loop over "bool" offset or not if (proj + offset + bias + lod > 3) continue; if (offset && (sampler.dim == EsdCube || sampler.isBuffer() || sampler.isMultiSample())) continue; for (int fetch = 0; fetch <= 1; ++fetch) { // loop over "bool" fetch or not if (proj + offset + fetch + bias + lod > 3) continue; if (fetch && (lod || bias)) continue; if (fetch && (sampler.shadow || sampler.dim == EsdCube)) continue; if (fetch == 0 && (sampler.isMultiSample() || sampler.isBuffer() || !sampler.isCombined())) continue; for (int grad = 0; grad <= 1; ++grad) { // loop over "bool" grad or not if (grad && (lod || bias || sampler.isMultiSample() || !sampler.isCombined())) continue; if (grad && sampler.isBuffer()) continue; if (proj + offset + fetch + grad + bias + lod > 3) continue; for (int extraProj = 0; extraProj <= 1; ++extraProj) { bool compare = false; int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0); // skip dummy unused second component for 1D non-array shadows if (sampler.shadow && totalDims < 2) totalDims = 2; totalDims += (sampler.shadow ? 1 : 0) + proj; if (totalDims > 4 && sampler.shadow) { compare = true; totalDims = 4; } assert(totalDims <= 4); if (extraProj && ! proj) continue; if (extraProj && (sampler.dim == Esd3D || sampler.shadow || !sampler.isCombined())) continue; // loop over 16-bit floating-point texel addressing for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) { if (f16TexAddr && sampler.type != EbtFloat16) continue; if (f16TexAddr && sampler.shadow && ! compare) { compare = true; // compare argument is always present totalDims--; } // loop over "bool" lod clamp for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp) { if (lodClamp && (profile == EEsProfile || version < 450)) continue; if (lodClamp && (proj || lod || fetch)) continue; // loop over "bool" sparse or not for (int sparse = 0; sparse <= 1; ++sparse) { if (sparse && (profile == EEsProfile || version < 450)) continue; // Sparse sampling is not for 1D/1D array texture, buffer texture, and // projective texture if (sparse && (sampler.is1D() || sampler.isBuffer() || proj)) continue; TString s; // return type if (sparse) s.append("int "); else { if (sampler.shadow) if (sampler.type == EbtFloat16) s.append("float16_t "); else s.append("float "); else { s.append(prefixes[sampler.type]); s.append("vec4 "); } } // name if (sparse) { if (fetch) s.append("sparseTexel"); else s.append("sparseTexture"); } else { if (fetch) s.append("texel"); else s.append("texture"); } if (proj) s.append("Proj"); if (lod) s.append("Lod"); if (grad) s.append("Grad"); if (fetch) s.append("Fetch"); if (offset) s.append("Offset"); if (lodClamp) s.append("Clamp"); if (lodClamp != 0 || sparse) s.append("ARB"); s.append("("); // sampler type s.append(typeName); // P coordinate if (extraProj) { if (f16TexAddr) s.append(",f16vec4"); else s.append(",vec4"); } else { s.append(","); TBasicType t = fetch ? EbtInt : (f16TexAddr ? EbtFloat16 : EbtFloat); if (totalDims == 1) s.append(TType::getBasicString(t)); else { s.append(prefixes[t]); s.append("vec"); s.append(postfixes[totalDims]); } } // non-optional compare if (compare) s.append(",float"); // non-optional lod argument (lod that's not driven by lod loop) or sample if ((fetch && !sampler.isBuffer() && !sampler.isRect() && !sampler.isMultiSample()) || (sampler.isMultiSample() && fetch)) s.append(",int"); // non-optional lod if (lod) { if (f16TexAddr) s.append(",float16_t"); else s.append(",float"); } // gradient arguments if (grad) { if (dimMap[sampler.dim] == 1) { if (f16TexAddr) s.append(",float16_t,float16_t"); else s.append(",float,float"); } else { if (f16TexAddr) s.append(",f16vec"); else s.append(",vec"); s.append(postfixes[dimMap[sampler.dim]]); if (f16TexAddr) s.append(",f16vec"); else s.append(",vec"); s.append(postfixes[dimMap[sampler.dim]]); } } // offset if (offset) { if (dimMap[sampler.dim] == 1) s.append(",int"); else { s.append(",ivec"); s.append(postfixes[dimMap[sampler.dim]]); } } // lod clamp if (lodClamp) { if (f16TexAddr) s.append(",float16_t"); else s.append(",float"); } // texel out (for sparse texture) if (sparse) { s.append(",out "); if (sampler.shadow) if (sampler.type == EbtFloat16) s.append("float16_t"); else s.append("float"); else { s.append(prefixes[sampler.type]); s.append("vec4"); } } // optional bias if (bias) { if (f16TexAddr) s.append(",float16_t"); else s.append(",float"); } s.append(");\n"); // Add to the per-language set of built-ins if (!grad && (bias || lodClamp != 0)) { stageBuiltins[EShLangFragment].append(s); stageBuiltins[EShLangCompute].append(s); } else commonBuiltins.append(s); } } } } } } } } } } } // // Helper function for add2ndGenerationSamplingImaging(), // when adding context-independent built-in functions. // // Add all the texture gather functions for the given type. // void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { switch (sampler.dim) { case Esd2D: case EsdRect: case EsdCube: break; default: return; } if (sampler.isMultiSample()) return; if (version < 140 && sampler.dim == EsdRect && sampler.type != EbtFloat) return; for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) { // loop over 16-bit floating-point texel addressing if (f16TexAddr && sampler.type != EbtFloat16) continue; for (int offset = 0; offset < 3; ++offset) { // loop over three forms of offset in the call name: none, Offset, and Offsets for (int comp = 0; comp < 2; ++comp) { // loop over presence of comp argument if (comp > 0 && sampler.shadow) continue; if (offset > 0 && sampler.dim == EsdCube) continue; for (int sparse = 0; sparse <= 1; ++sparse) { // loop over "bool" sparse or not if (sparse && (profile == EEsProfile || version < 450)) continue; TString s; // return type if (sparse) s.append("int "); else { s.append(prefixes[sampler.type]); s.append("vec4 "); } // name if (sparse) s.append("sparseTextureGather"); else s.append("textureGather"); switch (offset) { case 1: s.append("Offset"); break; case 2: s.append("Offsets"); break; default: break; } if (sparse) s.append("ARB"); s.append("("); // sampler type argument s.append(typeName); // P coordinate argument if (f16TexAddr) s.append(",f16vec"); else s.append(",vec"); int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0); s.append(postfixes[totalDims]); // refZ argument if (sampler.shadow) s.append(",float"); // offset argument if (offset > 0) { s.append(",ivec2"); if (offset == 2) s.append("[4]"); } // texel out (for sparse texture) if (sparse) { s.append(",out "); s.append(prefixes[sampler.type]); s.append("vec4 "); } // comp argument if (comp) s.append(",int"); s.append(");\n"); commonBuiltins.append(s); } } } } if (sampler.dim == EsdRect || sampler.shadow) return; if (profile == EEsProfile || version < 450) return; for (int bias = 0; bias < 2; ++bias) { // loop over presence of bias argument for (int lod = 0; lod < 2; ++lod) { // loop over presence of lod argument if ((lod && bias) || (lod == 0 && bias == 0)) continue; for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) { // loop over 16-bit floating-point texel addressing if (f16TexAddr && sampler.type != EbtFloat16) continue; for (int offset = 0; offset < 3; ++offset) { // loop over three forms of offset in the call name: none, Offset, and Offsets for (int comp = 0; comp < 2; ++comp) { // loop over presence of comp argument if (comp == 0 && bias) continue; if (offset > 0 && sampler.dim == EsdCube) continue; for (int sparse = 0; sparse <= 1; ++sparse) { // loop over "bool" sparse or not if (sparse && (profile == EEsProfile || version < 450)) continue; TString s; // return type if (sparse) s.append("int "); else { s.append(prefixes[sampler.type]); s.append("vec4 "); } // name if (sparse) s.append("sparseTextureGather"); else s.append("textureGather"); if (lod) s.append("Lod"); switch (offset) { case 1: s.append("Offset"); break; case 2: s.append("Offsets"); break; default: break; } if (lod) s.append("AMD"); else if (sparse) s.append("ARB"); s.append("("); // sampler type argument s.append(typeName); // P coordinate argument if (f16TexAddr) s.append(",f16vec"); else s.append(",vec"); int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0); s.append(postfixes[totalDims]); // lod argument if (lod) { if (f16TexAddr) s.append(",float16_t"); else s.append(",float"); } // offset argument if (offset > 0) { s.append(",ivec2"); if (offset == 2) s.append("[4]"); } // texel out (for sparse texture) if (sparse) { s.append(",out "); s.append(prefixes[sampler.type]); s.append("vec4 "); } // comp argument if (comp) s.append(",int"); // bias argument if (bias) { if (f16TexAddr) s.append(",float16_t"); else s.append(",float"); } s.append(");\n"); if (bias) stageBuiltins[EShLangFragment].append(s); else commonBuiltins.append(s); } } } } } } } // // Add context-dependent built-in functions and variables that are present // for the given version and profile. All the results are put into just the // commonBuiltins, because it is called for just a specific stage. So, // add stage-specific entries to the commonBuiltins, and only if that stage // was requested. // void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language) { // // Initialize the context-dependent (resource-dependent) built-in strings for parsing. // //============================================================================ // // Standard Uniforms // //============================================================================ TString& s = commonBuiltins; const int maxSize = 200; char builtInConstant[maxSize]; // // Build string of implementation dependent constants. // if (profile == EEsProfile) { snprintf(builtInConstant, maxSize, "const mediump int gl_MaxVertexAttribs = %d;", resources.maxVertexAttribs); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxVertexUniformVectors = %d;", resources.maxVertexUniformVectors); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxVertexTextureImageUnits = %d;", resources.maxVertexTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxCombinedTextureImageUnits = %d;", resources.maxCombinedTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxTextureImageUnits = %d;", resources.maxTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxFragmentUniformVectors = %d;", resources.maxFragmentUniformVectors); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxDrawBuffers = %d;", resources.maxDrawBuffers); s.append(builtInConstant); if (version == 100) { snprintf(builtInConstant, maxSize, "const mediump int gl_MaxVaryingVectors = %d;", resources.maxVaryingVectors); s.append(builtInConstant); } else { snprintf(builtInConstant, maxSize, "const mediump int gl_MaxVertexOutputVectors = %d;", resources.maxVertexOutputVectors); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxFragmentInputVectors = %d;", resources.maxFragmentInputVectors); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MinProgramTexelOffset = %d;", resources.minProgramTexelOffset); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxProgramTexelOffset = %d;", resources.maxProgramTexelOffset); s.append(builtInConstant); } if (version >= 310) { // geometry snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryInputComponents = %d;", resources.maxGeometryInputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryOutputComponents = %d;", resources.maxGeometryOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryImageUniforms = %d;", resources.maxGeometryImageUniforms); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryTextureImageUnits = %d;", resources.maxGeometryTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryOutputVertices = %d;", resources.maxGeometryOutputVertices); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryTotalOutputComponents = %d;", resources.maxGeometryTotalOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryUniformComponents = %d;", resources.maxGeometryUniformComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryAtomicCounters = %d;", resources.maxGeometryAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryAtomicCounterBuffers = %d;", resources.maxGeometryAtomicCounterBuffers); s.append(builtInConstant); // tessellation snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlInputComponents = %d;", resources.maxTessControlInputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlOutputComponents = %d;", resources.maxTessControlOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlTextureImageUnits = %d;", resources.maxTessControlTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlUniformComponents = %d;", resources.maxTessControlUniformComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlTotalOutputComponents = %d;", resources.maxTessControlTotalOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationInputComponents = %d;", resources.maxTessEvaluationInputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationOutputComponents = %d;", resources.maxTessEvaluationOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationTextureImageUnits = %d;", resources.maxTessEvaluationTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationUniformComponents = %d;", resources.maxTessEvaluationUniformComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessPatchComponents = %d;", resources.maxTessPatchComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxPatchVertices = %d;", resources.maxPatchVertices); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessGenLevel = %d;", resources.maxTessGenLevel); s.append(builtInConstant); // this is here instead of with the others in initialize(version, profile) due to the dependence on gl_MaxPatchVertices if (language == EShLangTessControl || language == EShLangTessEvaluation) { s.append( "in gl_PerVertex {" "highp vec4 gl_Position;" "highp float gl_PointSize;" "highp vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "highp vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "} gl_in[gl_MaxPatchVertices];" "\n"); } } if (version >= 320) { // tessellation snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlImageUniforms = %d;", resources.maxTessControlImageUniforms); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationImageUniforms = %d;", resources.maxTessEvaluationImageUniforms); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlAtomicCounters = %d;", resources.maxTessControlAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationAtomicCounters = %d;", resources.maxTessEvaluationAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlAtomicCounterBuffers = %d;", resources.maxTessControlAtomicCounterBuffers); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationAtomicCounterBuffers = %d;", resources.maxTessEvaluationAtomicCounterBuffers); s.append(builtInConstant); } if (version >= 100) { // GL_EXT_blend_func_extended snprintf(builtInConstant, maxSize, "const mediump int gl_MaxDualSourceDrawBuffersEXT = %d;", resources.maxDualSourceDrawBuffersEXT); s.append(builtInConstant); // this is here instead of with the others in initialize(version, profile) due to the dependence on gl_MaxDualSourceDrawBuffersEXT if (language == EShLangFragment) { s.append( "mediump vec4 gl_SecondaryFragColorEXT;" "mediump vec4 gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT];" "\n"); } } } else { // non-ES profile if (version > 400) { snprintf(builtInConstant, maxSize, "const int gl_MaxVertexUniformVectors = %d;", resources.maxVertexUniformVectors); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformVectors = %d;", resources.maxFragmentUniformVectors); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxVaryingVectors = %d;", resources.maxVaryingVectors); s.append(builtInConstant); } snprintf(builtInConstant, maxSize, "const int gl_MaxVertexAttribs = %d;", resources.maxVertexAttribs); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxVertexTextureImageUnits = %d;", resources.maxVertexTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxCombinedTextureImageUnits = %d;", resources.maxCombinedTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTextureImageUnits = %d;", resources.maxTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxDrawBuffers = %d;", resources.maxDrawBuffers); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxLights = %d;", resources.maxLights); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxClipPlanes = %d;", resources.maxClipPlanes); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTextureUnits = %d;", resources.maxTextureUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTextureCoords = %d;", resources.maxTextureCoords); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxVertexUniformComponents = %d;", resources.maxVertexUniformComponents); s.append(builtInConstant); // Moved from just being deprecated into compatibility profile only as of 4.20 if (version < 420 || profile == ECompatibilityProfile) { snprintf(builtInConstant, maxSize, "const int gl_MaxVaryingFloats = %d;", resources.maxVaryingFloats); s.append(builtInConstant); } snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformComponents = %d;", resources.maxFragmentUniformComponents); s.append(builtInConstant); if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) { // // OpenGL'uniform' state. Page numbers are in reference to version // 1.4 of the OpenGL specification. // // // Matrix state. p. 31, 32, 37, 39, 40. // s.append("uniform mat4 gl_TextureMatrix[gl_MaxTextureCoords];" // // Derived matrix state that provides inverse and transposed versions // of the matrices above. // "uniform mat4 gl_TextureMatrixInverse[gl_MaxTextureCoords];" "uniform mat4 gl_TextureMatrixTranspose[gl_MaxTextureCoords];" "uniform mat4 gl_TextureMatrixInverseTranspose[gl_MaxTextureCoords];" // // Clip planes p. 42. // "uniform vec4 gl_ClipPlane[gl_MaxClipPlanes];" // // Light State p 50, 53, 55. // "uniform gl_LightSourceParameters gl_LightSource[gl_MaxLights];" // // Derived state from products of light. // "uniform gl_LightProducts gl_FrontLightProduct[gl_MaxLights];" "uniform gl_LightProducts gl_BackLightProduct[gl_MaxLights];" // // Texture Environment and Generation, p. 152, p. 40-42. // "uniform vec4 gl_TextureEnvColor[gl_MaxTextureImageUnits];" "uniform vec4 gl_EyePlaneS[gl_MaxTextureCoords];" "uniform vec4 gl_EyePlaneT[gl_MaxTextureCoords];" "uniform vec4 gl_EyePlaneR[gl_MaxTextureCoords];" "uniform vec4 gl_EyePlaneQ[gl_MaxTextureCoords];" "uniform vec4 gl_ObjectPlaneS[gl_MaxTextureCoords];" "uniform vec4 gl_ObjectPlaneT[gl_MaxTextureCoords];" "uniform vec4 gl_ObjectPlaneR[gl_MaxTextureCoords];" "uniform vec4 gl_ObjectPlaneQ[gl_MaxTextureCoords];"); } if (version >= 130) { snprintf(builtInConstant, maxSize, "const int gl_MaxClipDistances = %d;", resources.maxClipDistances); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxVaryingComponents = %d;", resources.maxVaryingComponents); s.append(builtInConstant); // GL_ARB_shading_language_420pack snprintf(builtInConstant, maxSize, "const mediump int gl_MinProgramTexelOffset = %d;", resources.minProgramTexelOffset); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const mediump int gl_MaxProgramTexelOffset = %d;", resources.maxProgramTexelOffset); s.append(builtInConstant); } // geometry if (version >= 150) { snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryInputComponents = %d;", resources.maxGeometryInputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryOutputComponents = %d;", resources.maxGeometryOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryTextureImageUnits = %d;", resources.maxGeometryTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryOutputVertices = %d;", resources.maxGeometryOutputVertices); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryTotalOutputComponents = %d;", resources.maxGeometryTotalOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryUniformComponents = %d;", resources.maxGeometryUniformComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryVaryingComponents = %d;", resources.maxGeometryVaryingComponents); s.append(builtInConstant); } if (version >= 150) { snprintf(builtInConstant, maxSize, "const int gl_MaxVertexOutputComponents = %d;", resources.maxVertexOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentInputComponents = %d;", resources.maxFragmentInputComponents); s.append(builtInConstant); } // tessellation if (version >= 150) { snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlInputComponents = %d;", resources.maxTessControlInputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlOutputComponents = %d;", resources.maxTessControlOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlTextureImageUnits = %d;", resources.maxTessControlTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlUniformComponents = %d;", resources.maxTessControlUniformComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlTotalOutputComponents = %d;", resources.maxTessControlTotalOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationInputComponents = %d;", resources.maxTessEvaluationInputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationOutputComponents = %d;", resources.maxTessEvaluationOutputComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationTextureImageUnits = %d;", resources.maxTessEvaluationTextureImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationUniformComponents = %d;", resources.maxTessEvaluationUniformComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessPatchComponents = %d;", resources.maxTessPatchComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessGenLevel = %d;", resources.maxTessGenLevel); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxPatchVertices = %d;", resources.maxPatchVertices); s.append(builtInConstant); // this is here instead of with the others in initialize(version, profile) due to the dependence on gl_MaxPatchVertices if (language == EShLangTessControl || language == EShLangTessEvaluation) { s.append( "in gl_PerVertex {" "vec4 gl_Position;" "float gl_PointSize;" "float gl_ClipDistance[];" ); if (profile == ECompatibilityProfile) s.append( "vec4 gl_ClipVertex;" "vec4 gl_FrontColor;" "vec4 gl_BackColor;" "vec4 gl_FrontSecondaryColor;" "vec4 gl_BackSecondaryColor;" "vec4 gl_TexCoord[];" "float gl_FogFragCoord;" ); if (profile != EEsProfile && version >= 450) s.append( "float gl_CullDistance[];" "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); s.append( "} gl_in[gl_MaxPatchVertices];" "\n"); } } if (version >= 150) { snprintf(builtInConstant, maxSize, "const int gl_MaxViewports = %d;", resources.maxViewports); s.append(builtInConstant); } // images if (version >= 130) { snprintf(builtInConstant, maxSize, "const int gl_MaxCombinedImageUnitsAndFragmentOutputs = %d;", resources.maxCombinedImageUnitsAndFragmentOutputs); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxImageSamples = %d;", resources.maxImageSamples); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlImageUniforms = %d;", resources.maxTessControlImageUniforms); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationImageUniforms = %d;", resources.maxTessEvaluationImageUniforms); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryImageUniforms = %d;", resources.maxGeometryImageUniforms); s.append(builtInConstant); } // enhanced layouts if (version >= 430) { snprintf(builtInConstant, maxSize, "const int gl_MaxTransformFeedbackBuffers = %d;", resources.maxTransformFeedbackBuffers); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTransformFeedbackInterleavedComponents = %d;", resources.maxTransformFeedbackInterleavedComponents); s.append(builtInConstant); } } // compute if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX, resources.maxComputeWorkGroupCountY, resources.maxComputeWorkGroupCountZ); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupSize = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupSizeX, resources.maxComputeWorkGroupSizeY, resources.maxComputeWorkGroupSizeZ); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxComputeUniformComponents = %d;", resources.maxComputeUniformComponents); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxComputeTextureImageUnits = %d;", resources.maxComputeTextureImageUnits); s.append(builtInConstant); // GL_ARM_tensors operands. snprintf(builtInConstant, maxSize, "const uint gl_TensorOperandsNonTemporalARM = 0x1U;"); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const uint gl_TensorOperandsOutOfBoundsValueARM = 0x2U;"); s.append(builtInConstant); s.append("\n"); } // images (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 130)) { snprintf(builtInConstant, maxSize, "const int gl_MaxImageUnits = %d;", resources.maxImageUnits); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxCombinedShaderOutputResources = %d;", resources.maxCombinedShaderOutputResources); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxVertexImageUniforms = %d;", resources.maxVertexImageUniforms); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentImageUniforms = %d;", resources.maxFragmentImageUniforms); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxCombinedImageUniforms = %d;", resources.maxCombinedImageUniforms); s.append(builtInConstant); } // compute if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { snprintf(builtInConstant, maxSize, "const int gl_MaxComputeImageUniforms = %d;", resources.maxComputeImageUniforms); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounters = %d;", resources.maxComputeAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounterBuffers = %d;", resources.maxComputeAtomicCounterBuffers); s.append(builtInConstant); s.append("\n"); } // atomic counters (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { snprintf(builtInConstant, maxSize, "const int gl_MaxVertexAtomicCounters = %d;", resources. maxVertexAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentAtomicCounters = %d;", resources. maxFragmentAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxCombinedAtomicCounters = %d;", resources. maxCombinedAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxAtomicCounterBindings = %d;", resources. maxAtomicCounterBindings); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxVertexAtomicCounterBuffers = %d;", resources. maxVertexAtomicCounterBuffers); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentAtomicCounterBuffers = %d;", resources. maxFragmentAtomicCounterBuffers); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxCombinedAtomicCounterBuffers = %d;", resources. maxCombinedAtomicCounterBuffers); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxAtomicCounterBufferSize = %d;", resources. maxAtomicCounterBufferSize); s.append(builtInConstant); } if (profile != EEsProfile && version >= 420) { snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlAtomicCounters = %d;", resources. maxTessControlAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationAtomicCounters = %d;", resources. maxTessEvaluationAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryAtomicCounters = %d;", resources. maxGeometryAtomicCounters); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlAtomicCounterBuffers = %d;", resources. maxTessControlAtomicCounterBuffers); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationAtomicCounterBuffers = %d;", resources. maxTessEvaluationAtomicCounterBuffers); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxGeometryAtomicCounterBuffers = %d;", resources. maxGeometryAtomicCounterBuffers); s.append(builtInConstant); s.append("\n"); } // GL_ARB_cull_distance if (profile != EEsProfile && version >= 450) { snprintf(builtInConstant, maxSize, "const int gl_MaxCullDistances = %d;", resources.maxCullDistances); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxCombinedClipAndCullDistances = %d;", resources.maxCombinedClipAndCullDistances); s.append(builtInConstant); } // GL_ARB_ES3_1_compatibility if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { snprintf(builtInConstant, maxSize, "const int gl_MaxSamples = %d;", resources.maxSamples); s.append(builtInConstant); } // SPV_NV_mesh_shader if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputVerticesNV = %d;", resources.maxMeshOutputVerticesNV); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputPrimitivesNV = %d;", resources.maxMeshOutputPrimitivesNV); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxMeshWorkGroupSizeNV = ivec3(%d,%d,%d);", resources.maxMeshWorkGroupSizeX_NV, resources.maxMeshWorkGroupSizeY_NV, resources.maxMeshWorkGroupSizeZ_NV); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxTaskWorkGroupSizeNV = ivec3(%d,%d,%d);", resources.maxTaskWorkGroupSizeX_NV, resources.maxTaskWorkGroupSizeY_NV, resources.maxTaskWorkGroupSizeZ_NV); s.append(builtInConstant); snprintf(builtInConstant, maxSize, "const int gl_MaxMeshViewCountNV = %d;", resources.maxMeshViewCountNV); s.append(builtInConstant); s.append("\n"); } s.append("\n"); } // // To support special built-ins that have a special qualifier that cannot be declared textually // in a shader, like gl_Position. // // This lets the type of the built-in be declared textually, and then have just its qualifier be // updated afterward. // // Safe to call even if name is not present. // // Only use this for built-in variables that have a special qualifier in TStorageQualifier. // New built-in variables should use a generic (textually declarable) qualifier in // TStoraregQualifier and only call BuiltInVariable(). // static void SpecialQualifier(const char* name, TStorageQualifier qualifier, TBuiltInVariable builtIn, TSymbolTable& symbolTable) { TSymbol* symbol = symbolTable.find(name); if (symbol == nullptr) return; TQualifier& symQualifier = symbol->getWritableType().getQualifier(); symQualifier.storage = qualifier; symQualifier.builtIn = builtIn; } // // 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 // built-in variables. // // If SpecialQualifier() was called, this does not need to be called. // // Safe to call even if name is not present. // static void BuiltInVariable(const char* name, TBuiltInVariable builtIn, TSymbolTable& symbolTable) { TSymbol* symbol = symbolTable.find(name); if (symbol == nullptr) return; TQualifier& symQualifier = symbol->getWritableType().getQualifier(); symQualifier.builtIn = builtIn; } static void RetargetVariable(const char* from, const char* to, TSymbolTable& symbolTable) { symbolTable.retargetSymbol(from, to); } // // For built-in variables inside a named block. // SpecialQualifier() won't ever go inside a block; their member's qualifier come // from the qualification of the block. // // See comments above for other detail. // static void BuiltInVariable(const char* blockName, const char* name, TBuiltInVariable builtIn, TSymbolTable& symbolTable) { TSymbol* symbol = symbolTable.find(blockName); if (symbol == nullptr) return; TTypeList& structure = *symbol->getWritableType().getWritableStruct(); for (int i = 0; i < (int)structure.size(); ++i) { if (structure[i].type->getFieldName().compare(name) == 0) { structure[i].type->getQualifier().builtIn = builtIn; return; } } } // // Finish adding/processing context-independent built-in symbols. // 1) Programmatically add symbols that could not be added by simple text strings above. // 2) Map built-in functions to operators, for those that will turn into an operation node // instead of remaining a function call. // 3) Tag extension-related symbols added to their base version with their extensions, so // that if an early version has the extension turned off, there is an error reported on use. // void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable) { // // Tag built-in variables and functions with additional qualifier and extension information // that cannot be declared with the text strings. // // N.B.: a symbol should only be tagged once, and this function is called multiple times, once // per stage that's used for this profile. So // - generally, stick common ones in the fragment stage to ensure they are tagged exactly once // - for ES, which has different precisions for different stages, the coarsest-grained tagging // for a built-in used in many stages needs to be once for the fragment stage and once for // the vertex stage switch(language) { case EShLangVertex: if (spvVersion.vulkan > 0) { BuiltInVariable("gl_VertexIndex", EbvVertexIndex, symbolTable); BuiltInVariable("gl_InstanceIndex", EbvInstanceIndex, symbolTable); } if (spvVersion.vulkan == 0) { SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable); SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable); if (version < 140) symbolTable.setVariableExtensions("gl_InstanceID", 1, &E_GL_EXT_draw_instanced); } if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { // treat these built-ins as aliases of VertexIndex and InstanceIndex RetargetVariable("gl_InstanceID", "gl_InstanceIndex", symbolTable); RetargetVariable("gl_VertexID", "gl_VertexIndex", symbolTable); } if (profile != EEsProfile) { if (version >= 440) { symbolTable.setVariableExtensions("gl_BaseVertexARB", 1, &E_GL_ARB_shader_draw_parameters); symbolTable.setVariableExtensions("gl_BaseInstanceARB", 1, &E_GL_ARB_shader_draw_parameters); symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters); BuiltInVariable("gl_BaseVertexARB", EbvBaseVertex, symbolTable); BuiltInVariable("gl_BaseInstanceARB", EbvBaseInstance, symbolTable); BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable); } if (version >= 460) { BuiltInVariable("gl_BaseVertex", EbvBaseVertex, symbolTable); BuiltInVariable("gl_BaseInstance", EbvBaseInstance, symbolTable); BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable); } symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setFunctionExtensions("ballotARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setFunctionExtensions("readInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setFunctionExtensions("readFirstInvocationARB", 1, &E_GL_ARB_shader_ballot); if (version >= 430) { symbolTable.setFunctionExtensions("anyInvocationARB", 1, &E_GL_ARB_shader_group_vote); symbolTable.setFunctionExtensions("allInvocationsARB", 1, &E_GL_ARB_shader_group_vote); symbolTable.setFunctionExtensions("allInvocationsEqualARB", 1, &E_GL_ARB_shader_group_vote); } if (version >= 150) { symbolTable.setFunctionExtensions("anyThreadNV", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("allThreadsNV", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("allThreadsEqualNV", 1, &E_GL_NV_gpu_shader5); } } if (profile != EEsProfile) { symbolTable.setFunctionExtensions("minInvocationsAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("maxInvocationsAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("addInvocationsAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("minInvocationsNonUniformAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("maxInvocationsNonUniformAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("addInvocationsNonUniformAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("swizzleInvocationsAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("swizzleInvocationsWithPatternAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("writeInvocationAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("mbcntAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("minInvocationsInclusiveScanAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("maxInvocationsInclusiveScanAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("addInvocationsInclusiveScanAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("minInvocationsInclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("maxInvocationsInclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("addInvocationsInclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("minInvocationsExclusiveScanAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("maxInvocationsExclusiveScanAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("addInvocationsExclusiveScanAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("minInvocationsExclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("maxInvocationsExclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("addInvocationsExclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot); } if (profile != EEsProfile) { symbolTable.setFunctionExtensions("min3", 1, &E_GL_AMD_shader_trinary_minmax); symbolTable.setFunctionExtensions("max3", 1, &E_GL_AMD_shader_trinary_minmax); symbolTable.setFunctionExtensions("mid3", 1, &E_GL_AMD_shader_trinary_minmax); } if (profile != EEsProfile) { symbolTable.setVariableExtensions("gl_SIMDGroupSizeAMD", 1, &E_GL_AMD_gcn_shader); SpecialQualifier("gl_SIMDGroupSizeAMD", EvqVaryingIn, EbvSubGroupSize, symbolTable); symbolTable.setFunctionExtensions("cubeFaceIndexAMD", 1, &E_GL_AMD_gcn_shader); symbolTable.setFunctionExtensions("cubeFaceCoordAMD", 1, &E_GL_AMD_gcn_shader); symbolTable.setFunctionExtensions("timeAMD", 1, &E_GL_AMD_gcn_shader); } if (profile != EEsProfile) { symbolTable.setFunctionExtensions("fragmentMaskFetchAMD", 1, &E_GL_AMD_shader_fragment_mask); symbolTable.setFunctionExtensions("fragmentFetchAMD", 1, &E_GL_AMD_shader_fragment_mask); } symbolTable.setFunctionExtensions("countLeadingZeros", 1, &E_GL_INTEL_shader_integer_functions2); symbolTable.setFunctionExtensions("countTrailingZeros", 1, &E_GL_INTEL_shader_integer_functions2); symbolTable.setFunctionExtensions("absoluteDifference", 1, &E_GL_INTEL_shader_integer_functions2); symbolTable.setFunctionExtensions("addSaturate", 1, &E_GL_INTEL_shader_integer_functions2); symbolTable.setFunctionExtensions("subtractSaturate", 1, &E_GL_INTEL_shader_integer_functions2); symbolTable.setFunctionExtensions("average", 1, &E_GL_INTEL_shader_integer_functions2); symbolTable.setFunctionExtensions("averageRounded", 1, &E_GL_INTEL_shader_integer_functions2); symbolTable.setFunctionExtensions("multiply32x16", 1, &E_GL_INTEL_shader_integer_functions2); symbolTable.setFunctionExtensions("textureFootprintNV", 1, &E_GL_NV_shader_texture_footprint); symbolTable.setFunctionExtensions("textureFootprintClampNV", 1, &E_GL_NV_shader_texture_footprint); symbolTable.setFunctionExtensions("textureFootprintLodNV", 1, &E_GL_NV_shader_texture_footprint); symbolTable.setFunctionExtensions("textureFootprintGradNV", 1, &E_GL_NV_shader_texture_footprint); symbolTable.setFunctionExtensions("textureFootprintGradClampNV", 1, &E_GL_NV_shader_texture_footprint); // Compatibility variables, vertex only if (spvVersion.spv == 0) { BuiltInVariable("gl_Color", EbvColor, symbolTable); BuiltInVariable("gl_SecondaryColor", EbvSecondaryColor, symbolTable); BuiltInVariable("gl_Normal", EbvNormal, symbolTable); BuiltInVariable("gl_Vertex", EbvVertex, symbolTable); BuiltInVariable("gl_MultiTexCoord0", EbvMultiTexCoord0, symbolTable); BuiltInVariable("gl_MultiTexCoord1", EbvMultiTexCoord1, symbolTable); BuiltInVariable("gl_MultiTexCoord2", EbvMultiTexCoord2, symbolTable); BuiltInVariable("gl_MultiTexCoord3", EbvMultiTexCoord3, symbolTable); BuiltInVariable("gl_MultiTexCoord4", EbvMultiTexCoord4, symbolTable); BuiltInVariable("gl_MultiTexCoord5", EbvMultiTexCoord5, symbolTable); BuiltInVariable("gl_MultiTexCoord6", EbvMultiTexCoord6, symbolTable); BuiltInVariable("gl_MultiTexCoord7", EbvMultiTexCoord7, symbolTable); BuiltInVariable("gl_FogCoord", EbvFogFragCoord, symbolTable); } if (profile == EEsProfile) { if (spvVersion.spv == 0) { symbolTable.setFunctionExtensions("texture2DGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeGradEXT", 1, &E_GL_EXT_shader_texture_lod); if (version == 310) symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5); } if (version == 310) { symbolTable.setFunctionExtensions("fma", Num_AEP_gpu_shader5, AEP_gpu_shader5); } else if (profile != EEsProfile && version >= 150) { symbolTable.setFunctionExtensions("fma", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); } } if (profile == EEsProfile && version < 320) { symbolTable.setFunctionExtensions("imageAtomicAdd", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicMin", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicMax", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicAnd", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicOr", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicXor", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicExchange", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic); } if (version >= 300 /* both ES and non-ES */) { symbolTable.setVariableExtensions("gl_ViewID_OVR", Num_OVR_multiview_EXTs, OVR_multiview_EXTs); BuiltInVariable("gl_ViewID_OVR", EbvViewIndex, symbolTable); } if (profile == EEsProfile) { symbolTable.setFunctionExtensions("shadow2DEXT", 1, &E_GL_EXT_shadow_samplers); symbolTable.setFunctionExtensions("shadow2DProjEXT", 1, &E_GL_EXT_shadow_samplers); } // E_GL_EXT_texture_array if (profile != EEsProfile && spvVersion.spv == 0) { symbolTable.setFunctionExtensions("texture1DArray", 1, &E_GL_EXT_texture_array); symbolTable.setFunctionExtensions("texture2DArray", 1, &E_GL_EXT_texture_array); symbolTable.setFunctionExtensions("shadow1DArray", 1, &E_GL_EXT_texture_array); symbolTable.setFunctionExtensions("shadow2DArray", 1, &E_GL_EXT_texture_array); symbolTable.setFunctionExtensions("texture1DArrayLod", 1, &E_GL_EXT_texture_array); symbolTable.setFunctionExtensions("texture2DArrayLod", 1, &E_GL_EXT_texture_array); symbolTable.setFunctionExtensions("shadow1DArrayLod", 1, &E_GL_EXT_texture_array); } [[fallthrough]]; case EShLangTessControl: if (profile == EEsProfile && version >= 310) { BuiltInVariable("gl_BoundingBoxEXT", EbvBoundingBox, symbolTable); symbolTable.setVariableExtensions("gl_BoundingBoxEXT", 1, &E_GL_EXT_primitive_bounding_box); BuiltInVariable("gl_BoundingBoxOES", EbvBoundingBox, symbolTable); symbolTable.setVariableExtensions("gl_BoundingBoxOES", 1, &E_GL_OES_primitive_bounding_box); if (version >= 320) { BuiltInVariable("gl_BoundingBox", EbvBoundingBox, symbolTable); } } [[fallthrough]]; case EShLangTessEvaluation: case EShLangGeometry: SpecialQualifier("gl_Position", EvqPosition, EbvPosition, symbolTable); SpecialQualifier("gl_PointSize", EvqPointSize, EbvPointSize, symbolTable); BuiltInVariable("gl_in", "gl_Position", EbvPosition, symbolTable); BuiltInVariable("gl_in", "gl_PointSize", EbvPointSize, symbolTable); BuiltInVariable("gl_out", "gl_Position", EbvPosition, symbolTable); BuiltInVariable("gl_out", "gl_PointSize", EbvPointSize, symbolTable); SpecialQualifier("gl_ClipVertex", EvqClipVertex, EbvClipVertex, symbolTable); BuiltInVariable("gl_in", "gl_ClipDistance", EbvClipDistance, symbolTable); BuiltInVariable("gl_in", "gl_CullDistance", EbvCullDistance, symbolTable); BuiltInVariable("gl_out", "gl_ClipDistance", EbvClipDistance, symbolTable); BuiltInVariable("gl_out", "gl_CullDistance", EbvCullDistance, symbolTable); BuiltInVariable("gl_ClipDistance", EbvClipDistance, symbolTable); BuiltInVariable("gl_CullDistance", EbvCullDistance, symbolTable); BuiltInVariable("gl_PrimitiveIDIn", EbvPrimitiveId, symbolTable); BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable); BuiltInVariable("gl_InvocationID", EbvInvocationId, symbolTable); BuiltInVariable("gl_Layer", EbvLayer, symbolTable); BuiltInVariable("gl_ViewportIndex", EbvViewportIndex, symbolTable); if (language != EShLangGeometry) { symbolTable.setVariableExtensions("gl_Layer", Num_viewportEXTs, viewportEXTs); symbolTable.setVariableExtensions("gl_ViewportIndex", Num_viewportEXTs, viewportEXTs); } symbolTable.setVariableExtensions("gl_ViewportMask", 1, &E_GL_NV_viewport_array2); symbolTable.setVariableExtensions("gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_SecondaryViewportMaskNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); symbolTable.setVariableExtensions("gl_ViewportMaskPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); if (profile != EEsProfile && language == EShLangGeometry && version < 400) { symbolTable.setVariableExtensions("gl_InvocationID", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); } BuiltInVariable("gl_ViewportMask", EbvViewportMaskNV, symbolTable); BuiltInVariable("gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable); BuiltInVariable("gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable); BuiltInVariable("gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); BuiltInVariable("gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable); if (language == EShLangVertex || language == EShLangGeometry) { symbolTable.setVariableExtensions("gl_in", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_in", "gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable); BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); } symbolTable.setVariableExtensions("gl_out", "gl_ViewportMask", 1, &E_GL_NV_viewport_array2); symbolTable.setVariableExtensions("gl_out", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_out", "gl_SecondaryViewportMaskNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_out", "gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); symbolTable.setVariableExtensions("gl_out", "gl_ViewportMaskPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); BuiltInVariable("gl_out", "gl_ViewportMask", EbvViewportMaskNV, symbolTable); BuiltInVariable("gl_out", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable); BuiltInVariable("gl_out", "gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable); BuiltInVariable("gl_out", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); BuiltInVariable("gl_out", "gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable); BuiltInVariable("gl_PatchVerticesIn", EbvPatchVertices, symbolTable); BuiltInVariable("gl_TessLevelOuter", EbvTessLevelOuter, symbolTable); BuiltInVariable("gl_TessLevelInner", EbvTessLevelInner, symbolTable); BuiltInVariable("gl_TessCoord", EbvTessCoord, symbolTable); if (version < 410) symbolTable.setVariableExtensions("gl_ViewportIndex", 1, &E_GL_ARB_viewport_array); // Compatibility variables BuiltInVariable("gl_in", "gl_ClipVertex", EbvClipVertex, symbolTable); BuiltInVariable("gl_in", "gl_FrontColor", EbvFrontColor, symbolTable); BuiltInVariable("gl_in", "gl_BackColor", EbvBackColor, symbolTable); BuiltInVariable("gl_in", "gl_FrontSecondaryColor", EbvFrontSecondaryColor, symbolTable); BuiltInVariable("gl_in", "gl_BackSecondaryColor", EbvBackSecondaryColor, symbolTable); BuiltInVariable("gl_in", "gl_TexCoord", EbvTexCoord, symbolTable); BuiltInVariable("gl_in", "gl_FogFragCoord", EbvFogFragCoord, symbolTable); BuiltInVariable("gl_out", "gl_ClipVertex", EbvClipVertex, symbolTable); BuiltInVariable("gl_out", "gl_FrontColor", EbvFrontColor, symbolTable); BuiltInVariable("gl_out", "gl_BackColor", EbvBackColor, symbolTable); BuiltInVariable("gl_out", "gl_FrontSecondaryColor", EbvFrontSecondaryColor, symbolTable); BuiltInVariable("gl_out", "gl_BackSecondaryColor", EbvBackSecondaryColor, symbolTable); BuiltInVariable("gl_out", "gl_TexCoord", EbvTexCoord, symbolTable); BuiltInVariable("gl_out", "gl_FogFragCoord", EbvFogFragCoord, symbolTable); BuiltInVariable("gl_ClipVertex", EbvClipVertex, symbolTable); BuiltInVariable("gl_FrontColor", EbvFrontColor, symbolTable); BuiltInVariable("gl_BackColor", EbvBackColor, symbolTable); BuiltInVariable("gl_FrontSecondaryColor", EbvFrontSecondaryColor, symbolTable); BuiltInVariable("gl_BackSecondaryColor", EbvBackSecondaryColor, symbolTable); BuiltInVariable("gl_TexCoord", EbvTexCoord, symbolTable); BuiltInVariable("gl_FogFragCoord", EbvFogFragCoord, symbolTable); // gl_PointSize, when it needs to be tied to an extension, is always a member of a block. // (Sometimes with an instance name, sometimes anonymous). if (profile == EEsProfile) { if (language == EShLangGeometry) { symbolTable.setVariableExtensions("gl_PointSize", Num_AEP_geometry_point_size, AEP_geometry_point_size); symbolTable.setVariableExtensions("gl_in", "gl_PointSize", Num_AEP_geometry_point_size, AEP_geometry_point_size); } else if (language == EShLangTessEvaluation || language == EShLangTessControl) { // gl_in tessellation settings of gl_PointSize are in the context-dependent paths symbolTable.setVariableExtensions("gl_PointSize", Num_AEP_tessellation_point_size, AEP_tessellation_point_size); symbolTable.setVariableExtensions("gl_out", "gl_PointSize", Num_AEP_tessellation_point_size, AEP_tessellation_point_size); } } if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); } if (profile != EEsProfile) { BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable); BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); 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); } // GL_ARB_gpu_shader5/GL_NV_gpu_shader5 if (profile != EEsProfile && version < 400 && language == EShLangGeometry) { symbolTable.setFunctionExtensions("EmitStreamVertex", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("EndStreamPrimitive", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot); BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable); BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable); BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable); BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable); BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); // GL_NV_shader_sm_builtins symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); // GL_ARM_shader_core_builtins symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if (language == EShLangGeometry || language == EShLangVertex) { if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 450)) { symbolTable.setVariableExtensions("gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate); BuiltInVariable("gl_PrimitiveShadingRateEXT", EbvPrimitiveShadingRateKHR, symbolTable); symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } } break; case EShLangFragment: SpecialQualifier("gl_FrontFacing", EvqFace, EbvFace, symbolTable); SpecialQualifier("gl_FragCoord", EvqFragCoord, EbvFragCoord, symbolTable); SpecialQualifier("gl_PointCoord", EvqPointCoord, EbvPointCoord, symbolTable); if (spvVersion.spv == 0) SpecialQualifier("gl_FragColor", EvqFragColor, EbvFragColor, symbolTable); else { TSymbol* symbol = symbolTable.find("gl_FragColor"); if (symbol) { symbol->getWritableType().getQualifier().storage = EvqVaryingOut; symbol->getWritableType().getQualifier().layoutLocation = 0; } } SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable); SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable); SpecialQualifier("gl_FragStencilRefARB", EvqFragStencil, EbvFragStencilRef, symbolTable); SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable); BuiltInVariable("gl_ClipDistance", EbvClipDistance, symbolTable); BuiltInVariable("gl_CullDistance", EbvCullDistance, symbolTable); BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable); if (profile != EEsProfile && version >= 140) { symbolTable.setVariableExtensions("gl_FragStencilRefARB", 1, &E_GL_ARB_shader_stencil_export); BuiltInVariable("gl_FragStencilRefARB", EbvFragStencilRef, symbolTable); } if (profile != EEsProfile && version < 400) { symbolTable.setFunctionExtensions("textureQueryLOD", 1, &E_GL_ARB_texture_query_lod); } if (profile != EEsProfile && version >= 460) { symbolTable.setFunctionExtensions("rayQueryInitializeEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryTerminateEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGenerateIntersectionEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryConfirmIntersectionEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryProceedEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionTypeEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionTEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetRayFlagsEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetRayTMinEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceCustomIndexEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceIdEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionGeometryIndexEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionPrimitiveIndexEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionBarycentricsEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionFrontFaceEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionCandidateAABBOpaqueEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectRayDirectionEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectRayOriginEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectToWorldEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionWorldToObjectEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetWorldRayOriginEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetWorldRayDirectionEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetIntersectionTriangleVertexPositionsEXT", 1, &E_GL_EXT_ray_tracing_position_fetch); symbolTable.setFunctionExtensions("rayQueryGetIntersectionClusterIdNV", 1, &E_GL_NV_cluster_acceleration_structure); symbolTable.setFunctionExtensions("rayQueryGetIntersectionSpherePositionNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("rayQueryGetIntersectionSphereRadiusNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("rayQueryGetIntersectionLSSHitValueNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("rayQueryGetIntersectionLSSPositionsNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("rayQueryGetIntersectionLSSRadiiNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("rayQueryIsSphereHitNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("rayQueryIsLSSHitNV", 1, &E_GL_NV_linear_swept_spheres); 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) || (profile == EEsProfile && version >= 310)) { BuiltInVariable("gl_SampleID", EbvSampleId, symbolTable); BuiltInVariable("gl_SamplePosition", EbvSamplePosition, symbolTable); BuiltInVariable("gl_SampleMask", EbvSampleMask, symbolTable); if (profile != EEsProfile && version < 400) { BuiltInVariable("gl_SampleMaskIn", EbvSampleMask, symbolTable); symbolTable.setVariableExtensions("gl_SampleMaskIn", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); BuiltInVariable("gl_NumSamples", EbvSampleMask, symbolTable); symbolTable.setVariableExtensions("gl_SampleMask", 1, &E_GL_ARB_sample_shading); symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_ARB_sample_shading); symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_ARB_sample_shading); symbolTable.setVariableExtensions("gl_NumSamples", 1, &E_GL_ARB_sample_shading); } else { BuiltInVariable("gl_SampleMaskIn", EbvSampleMask, symbolTable); if (profile == EEsProfile && version < 320) { symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_OES_sample_variables); symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_OES_sample_variables); symbolTable.setVariableExtensions("gl_SampleMaskIn", 1, &E_GL_OES_sample_variables); symbolTable.setVariableExtensions("gl_SampleMask", 1, &E_GL_OES_sample_variables); symbolTable.setVariableExtensions("gl_NumSamples", 1, &E_GL_OES_sample_variables); } } } BuiltInVariable("gl_Layer", EbvLayer, symbolTable); BuiltInVariable("gl_ViewportIndex", EbvViewportIndex, symbolTable); // Compatibility variables BuiltInVariable("gl_in", "gl_FogFragCoord", EbvFogFragCoord, symbolTable); BuiltInVariable("gl_in", "gl_TexCoord", EbvTexCoord, symbolTable); BuiltInVariable("gl_in", "gl_Color", EbvColor, symbolTable); BuiltInVariable("gl_in", "gl_SecondaryColor", EbvSecondaryColor, symbolTable); BuiltInVariable("gl_FogFragCoord", EbvFogFragCoord, symbolTable); BuiltInVariable("gl_TexCoord", EbvTexCoord, symbolTable); BuiltInVariable("gl_Color", EbvColor, symbolTable); BuiltInVariable("gl_SecondaryColor", EbvSecondaryColor, symbolTable); // built-in functions if (profile == EEsProfile) { if (spvVersion.spv == 0) { symbolTable.setFunctionExtensions("texture2DLodEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjLodEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeLodEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeGradEXT", 1, &E_GL_EXT_shader_texture_lod); if (version < 320) symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5); } if (version == 100) { symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_OES_standard_derivatives); symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_OES_standard_derivatives); symbolTable.setFunctionExtensions("fwidth", 1, &E_GL_OES_standard_derivatives); } if (version == 310) { symbolTable.setFunctionExtensions("fma", Num_AEP_gpu_shader5, AEP_gpu_shader5); symbolTable.setFunctionExtensions("interpolateAtCentroid", 1, &E_GL_OES_shader_multisample_interpolation); symbolTable.setFunctionExtensions("interpolateAtSample", 1, &E_GL_OES_shader_multisample_interpolation); symbolTable.setFunctionExtensions("interpolateAtOffset", 1, &E_GL_OES_shader_multisample_interpolation); } } else if (version < 130) { if (spvVersion.spv == 0) { symbolTable.setFunctionExtensions("texture1DLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture3DLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture1DProjLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture3DProjLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow1DLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow2DLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow1DProjLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow2DProjLod", 1, &E_GL_ARB_shader_texture_lod); } } // E_GL_ARB_shader_texture_lod functions usable only with the extension enabled if (profile != EEsProfile && spvVersion.spv == 0) { symbolTable.setFunctionExtensions("texture1DGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture1DProjGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture3DGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture3DProjGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow1DGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow1DProjGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow2DGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow2DProjGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DRectGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DRectProjGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow2DRectGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("shadow2DRectProjGradARB", 1, &E_GL_ARB_shader_texture_lod); } // E_GL_ARB_shader_image_load_store if (profile != EEsProfile && version < 420) symbolTable.setFunctionExtensions("memoryBarrier", 1, &E_GL_ARB_shader_image_load_store); // All the image access functions are protected by checks on the type of the first argument. // E_GL_ARB_shader_atomic_counters if (profile != EEsProfile && version < 420) { symbolTable.setFunctionExtensions("atomicCounterIncrement", 1, &E_GL_ARB_shader_atomic_counters); symbolTable.setFunctionExtensions("atomicCounterDecrement", 1, &E_GL_ARB_shader_atomic_counters); symbolTable.setFunctionExtensions("atomicCounter" , 1, &E_GL_ARB_shader_atomic_counters); } // E_GL_ARB_gpu_shader5/E_GL_NV_gpu_shader5 if (profile != EEsProfile && version < 400) { symbolTable.setFunctionExtensions("bitfieldExtract", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("bitfieldInsert", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("bitfieldReverse", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("bitCount", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("findLSB", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("findMSB", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("uaddCarry", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("usubBorrow", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("umulExtended", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("imulExtended", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("interpolateAtCentroid", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("interpolateAtSample", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); symbolTable.setFunctionExtensions("interpolateAtOffset", Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5); } // E_GL_NV_gpu_shader5 if (profile != EEsProfile && version < 450) { symbolTable.setFunctionExtensions("packInt2x32", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("packUint2x32", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("unpackInt2x32", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("unpackUint2x32", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("packFloat2x16", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("unpackFloat2x16", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("doubleBitsToInt64", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("doubleBitsToUint64", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("int64BitsToDouble", 1, &E_GL_NV_gpu_shader5); symbolTable.setFunctionExtensions("uint64BitsToDouble", 1, &E_GL_NV_gpu_shader5); } // E_GL_ARB_shader_atomic_counter_ops if (profile != EEsProfile && version == 450) { symbolTable.setFunctionExtensions("atomicCounterAddARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); symbolTable.setFunctionExtensions("atomicCounterSubtractARB", 1, &E_GL_ARB_shader_atomic_counter_ops); symbolTable.setFunctionExtensions("atomicCounterMinARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); symbolTable.setFunctionExtensions("atomicCounterMaxARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); symbolTable.setFunctionExtensions("atomicCounterAndARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); symbolTable.setFunctionExtensions("atomicCounterOrARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); symbolTable.setFunctionExtensions("atomicCounterXorARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); symbolTable.setFunctionExtensions("atomicCounterExchangeARB", 1, &E_GL_ARB_shader_atomic_counter_ops); symbolTable.setFunctionExtensions("atomicCounterCompSwapARB", 1, &E_GL_ARB_shader_atomic_counter_ops); } // E_GL_ARB_derivative_control if (profile != EEsProfile && version < 450) { symbolTable.setFunctionExtensions("dFdxFine", 1, &E_GL_ARB_derivative_control); symbolTable.setFunctionExtensions("dFdyFine", 1, &E_GL_ARB_derivative_control); symbolTable.setFunctionExtensions("fwidthFine", 1, &E_GL_ARB_derivative_control); symbolTable.setFunctionExtensions("dFdxCoarse", 1, &E_GL_ARB_derivative_control); symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_ARB_derivative_control); symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_ARB_derivative_control); } // E_GL_ARB_sparse_texture2 if (profile != EEsProfile) { symbolTable.setFunctionExtensions("sparseTextureARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTextureLodARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTextureOffsetARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTexelFetchARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTexelFetchOffsetARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTextureLodOffsetARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTextureGradARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTextureGradOffsetARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTextureGatherARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTextureGatherOffsetARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTextureGatherOffsetsARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseImageLoadARB", 1, &E_GL_ARB_sparse_texture2); symbolTable.setFunctionExtensions("sparseTexelsResident", 1, &E_GL_ARB_sparse_texture2); } // E_GL_ARB_sparse_texture_clamp if (profile != EEsProfile) { symbolTable.setFunctionExtensions("sparseTextureClampARB", 1, &E_GL_ARB_sparse_texture_clamp); symbolTable.setFunctionExtensions("sparseTextureOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp); symbolTable.setFunctionExtensions("sparseTextureGradClampARB", 1, &E_GL_ARB_sparse_texture_clamp); symbolTable.setFunctionExtensions("sparseTextureGradOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp); symbolTable.setFunctionExtensions("textureClampARB", 1, &E_GL_ARB_sparse_texture_clamp); symbolTable.setFunctionExtensions("textureOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp); symbolTable.setFunctionExtensions("textureGradClampARB", 1, &E_GL_ARB_sparse_texture_clamp); symbolTable.setFunctionExtensions("textureGradOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp); } // E_GL_AMD_shader_explicit_vertex_parameter if (profile != EEsProfile) { symbolTable.setVariableExtensions("gl_BaryCoordNoPerspAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); symbolTable.setVariableExtensions("gl_BaryCoordNoPerspCentroidAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); symbolTable.setVariableExtensions("gl_BaryCoordNoPerspSampleAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); symbolTable.setVariableExtensions("gl_BaryCoordSmoothAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); symbolTable.setVariableExtensions("gl_BaryCoordSmoothCentroidAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); symbolTable.setVariableExtensions("gl_BaryCoordSmoothSampleAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); symbolTable.setVariableExtensions("gl_BaryCoordPullModelAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); symbolTable.setFunctionExtensions("interpolateAtVertexAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); BuiltInVariable("gl_BaryCoordNoPerspAMD", EbvBaryCoordNoPersp, symbolTable); BuiltInVariable("gl_BaryCoordNoPerspCentroidAMD", EbvBaryCoordNoPerspCentroid, symbolTable); BuiltInVariable("gl_BaryCoordNoPerspSampleAMD", EbvBaryCoordNoPerspSample, symbolTable); BuiltInVariable("gl_BaryCoordSmoothAMD", EbvBaryCoordSmooth, symbolTable); BuiltInVariable("gl_BaryCoordSmoothCentroidAMD", EbvBaryCoordSmoothCentroid, symbolTable); BuiltInVariable("gl_BaryCoordSmoothSampleAMD", EbvBaryCoordSmoothSample, symbolTable); BuiltInVariable("gl_BaryCoordPullModelAMD", EbvBaryCoordPullModel, symbolTable); } // E_GL_AMD_texture_gather_bias_lod if (profile != EEsProfile) { symbolTable.setFunctionExtensions("textureGatherLodAMD", 1, &E_GL_AMD_texture_gather_bias_lod); symbolTable.setFunctionExtensions("textureGatherLodOffsetAMD", 1, &E_GL_AMD_texture_gather_bias_lod); symbolTable.setFunctionExtensions("textureGatherLodOffsetsAMD", 1, &E_GL_AMD_texture_gather_bias_lod); symbolTable.setFunctionExtensions("sparseTextureGatherLodAMD", 1, &E_GL_AMD_texture_gather_bias_lod); symbolTable.setFunctionExtensions("sparseTextureGatherLodOffsetAMD", 1, &E_GL_AMD_texture_gather_bias_lod); symbolTable.setFunctionExtensions("sparseTextureGatherLodOffsetsAMD", 1, &E_GL_AMD_texture_gather_bias_lod); } // E_GL_AMD_shader_image_load_store_lod if (profile != EEsProfile) { symbolTable.setFunctionExtensions("imageLoadLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod); symbolTable.setFunctionExtensions("imageStoreLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod); symbolTable.setFunctionExtensions("sparseImageLoadLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod); } if (profile != EEsProfile && version >= 430) { symbolTable.setVariableExtensions("gl_FragFullyCoveredNV", 1, &E_GL_NV_conservative_raster_underestimation); BuiltInVariable("gl_FragFullyCoveredNV", EbvFragFullyCoveredNV, symbolTable); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.setVariableExtensions("gl_FragmentSizeNV", 1, &E_GL_NV_shading_rate_image); symbolTable.setVariableExtensions("gl_InvocationsPerPixelNV", 1, &E_GL_NV_shading_rate_image); BuiltInVariable("gl_FragmentSizeNV", EbvFragmentSizeNV, symbolTable); BuiltInVariable("gl_InvocationsPerPixelNV", EbvInvocationsPerPixelNV, symbolTable); symbolTable.setVariableExtensions("gl_BaryCoordNV", 1, &E_GL_NV_fragment_shader_barycentric); 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) || (profile == EEsProfile && version >= 310)) { symbolTable.setVariableExtensions("gl_FragSizeEXT", 1, &E_GL_EXT_fragment_invocation_density); symbolTable.setVariableExtensions("gl_FragInvocationCountEXT", 1, &E_GL_EXT_fragment_invocation_density); BuiltInVariable("gl_FragSizeEXT", EbvFragSizeEXT, symbolTable); BuiltInVariable("gl_FragInvocationCountEXT", EbvFragInvocationCountEXT, symbolTable); } symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth); symbolTable.setFunctionExtensions("clockARB", 1, &E_GL_ARB_shader_clock); symbolTable.setFunctionExtensions("clock2x32ARB", 1, &E_GL_ARB_shader_clock); symbolTable.setFunctionExtensions("clockRealtimeEXT", 1, &E_GL_EXT_shader_realtime_clock); symbolTable.setFunctionExtensions("clockRealtime2x32EXT", 1, &E_GL_EXT_shader_realtime_clock); if (profile == EEsProfile && version < 320) { symbolTable.setVariableExtensions("gl_PrimitiveID", Num_AEP_geometry_shader, AEP_geometry_shader); symbolTable.setVariableExtensions("gl_Layer", Num_AEP_geometry_shader, AEP_geometry_shader); } if (profile == EEsProfile && version < 320) { symbolTable.setFunctionExtensions("imageAtomicAdd", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicMin", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicMax", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicAnd", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicOr", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicXor", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicExchange", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic); } if (profile != EEsProfile && version < 330 ) { const int numBitEncodingExts = 3; const char* bitEncodingExts[numBitEncodingExts] = { E_GL_ARB_shader_bit_encoding, E_GL_ARB_gpu_shader5, E_GL_NV_gpu_shader5}; symbolTable.setFunctionExtensions("floatBitsToInt", numBitEncodingExts, bitEncodingExts); symbolTable.setFunctionExtensions("floatBitsToUint", numBitEncodingExts, bitEncodingExts); symbolTable.setFunctionExtensions("intBitsToFloat", numBitEncodingExts, bitEncodingExts); symbolTable.setFunctionExtensions("uintBitsToFloat", numBitEncodingExts, bitEncodingExts); } if (profile != EEsProfile && version < 430 ) { symbolTable.setFunctionExtensions("imageSize", 1, &E_GL_ARB_shader_image_size); } // GL_ARB_shader_storage_buffer_object if (profile != EEsProfile && version < 430 ) { symbolTable.setFunctionExtensions("atomicAdd", 1, &E_GL_ARB_shader_storage_buffer_object); symbolTable.setFunctionExtensions("atomicMin", 1, &E_GL_ARB_shader_storage_buffer_object); symbolTable.setFunctionExtensions("atomicMax", 1, &E_GL_ARB_shader_storage_buffer_object); symbolTable.setFunctionExtensions("atomicAnd", 1, &E_GL_ARB_shader_storage_buffer_object); symbolTable.setFunctionExtensions("atomicOr", 1, &E_GL_ARB_shader_storage_buffer_object); symbolTable.setFunctionExtensions("atomicXor", 1, &E_GL_ARB_shader_storage_buffer_object); symbolTable.setFunctionExtensions("atomicExchange", 1, &E_GL_ARB_shader_storage_buffer_object); symbolTable.setFunctionExtensions("atomicCompSwap", 1, &E_GL_ARB_shader_storage_buffer_object); } // GL_ARB_shading_language_packing if (profile != EEsProfile && version < 400 ) { const int numPackingExts = 3; const char* packingExts[numPackingExts] = { E_GL_ARB_shading_language_packing, E_GL_ARB_gpu_shader5, E_GL_NV_gpu_shader5}; symbolTable.setFunctionExtensions("packUnorm2x16", numPackingExts, packingExts); symbolTable.setFunctionExtensions("unpackUnorm2x16", numPackingExts, packingExts); symbolTable.setFunctionExtensions("packSnorm4x8", numPackingExts, packingExts); symbolTable.setFunctionExtensions("packUnorm4x8", numPackingExts, packingExts); symbolTable.setFunctionExtensions("unpackSnorm4x8", numPackingExts, packingExts); symbolTable.setFunctionExtensions("unpackUnorm4x8", numPackingExts, packingExts); } if (profile != EEsProfile && version < 420 ) { symbolTable.setFunctionExtensions("packSnorm2x16", 1, &E_GL_ARB_shading_language_packing); symbolTable.setFunctionExtensions("unpackSnorm2x16", 1, &E_GL_ARB_shading_language_packing); symbolTable.setFunctionExtensions("unpackHalf2x16", 1, &E_GL_ARB_shading_language_packing); symbolTable.setFunctionExtensions("packHalf2x16", 1, &E_GL_ARB_shading_language_packing); } symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); if (version >= 300 /* both ES and non-ES */) { symbolTable.setVariableExtensions("gl_ViewID_OVR", Num_OVR_multiview_EXTs, OVR_multiview_EXTs); BuiltInVariable("gl_ViewID_OVR", EbvViewIndex, symbolTable); } // GL_ARB_shader_ballot if (profile != EEsProfile) { symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot); BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable); BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); 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); } // GL_EXT_expect_assume if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.setFunctionExtensions("assumeEXT", 1, &E_GL_EXT_expect_assume); symbolTable.setFunctionExtensions("expectEXT", 1, &E_GL_EXT_expect_assume); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot); BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable); BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable); BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable); BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable); BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); symbolTable.setFunctionExtensions("subgroupBarrier", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setFunctionExtensions("subgroupMemoryBarrier", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setFunctionExtensions("subgroupMemoryBarrierBuffer", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setFunctionExtensions("subgroupMemoryBarrierImage", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setFunctionExtensions("subgroupElect", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setFunctionExtensions("subgroupAll", 1, &E_GL_KHR_shader_subgroup_vote); symbolTable.setFunctionExtensions("subgroupAny", 1, &E_GL_KHR_shader_subgroup_vote); symbolTable.setFunctionExtensions("subgroupAllEqual", 1, &E_GL_KHR_shader_subgroup_vote); symbolTable.setFunctionExtensions("subgroupBroadcast", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupBroadcastFirst", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupBallot", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupInverseBallot", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupBallotBitExtract", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupBallotBitCount", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupBallotInclusiveBitCount", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupBallotExclusiveBitCount", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupBallotFindLSB", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupBallotFindMSB", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setFunctionExtensions("subgroupShuffle", 1, &E_GL_KHR_shader_subgroup_shuffle); symbolTable.setFunctionExtensions("subgroupShuffleXor", 1, &E_GL_KHR_shader_subgroup_shuffle); symbolTable.setFunctionExtensions("subgroupShuffleUp", 1, &E_GL_KHR_shader_subgroup_shuffle_relative); symbolTable.setFunctionExtensions("subgroupShuffleDown", 1, &E_GL_KHR_shader_subgroup_shuffle_relative); symbolTable.setFunctionExtensions("subgroupRotate", 1, &E_GL_KHR_shader_subgroup_rotate); symbolTable.setFunctionExtensions("subgroupClusteredRotate", 1, &E_GL_KHR_shader_subgroup_rotate); symbolTable.setFunctionExtensions("subgroupAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupMul", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupMin", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupMax", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupAnd", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupOr", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupXor", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupInclusiveAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupInclusiveMul", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupInclusiveMin", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupInclusiveMax", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupInclusiveAnd", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupInclusiveOr", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupInclusiveXor", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupExclusiveAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupExclusiveMul", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupExclusiveMin", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupExclusiveMax", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupExclusiveAnd", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupExclusiveOr", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupExclusiveXor", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupClusteredAdd", 1, &E_GL_KHR_shader_subgroup_clustered); symbolTable.setFunctionExtensions("subgroupClusteredMul", 1, &E_GL_KHR_shader_subgroup_clustered); symbolTable.setFunctionExtensions("subgroupClusteredMin", 1, &E_GL_KHR_shader_subgroup_clustered); symbolTable.setFunctionExtensions("subgroupClusteredMax", 1, &E_GL_KHR_shader_subgroup_clustered); symbolTable.setFunctionExtensions("subgroupClusteredAnd", 1, &E_GL_KHR_shader_subgroup_clustered); symbolTable.setFunctionExtensions("subgroupClusteredOr", 1, &E_GL_KHR_shader_subgroup_clustered); symbolTable.setFunctionExtensions("subgroupClusteredXor", 1, &E_GL_KHR_shader_subgroup_clustered); symbolTable.setFunctionExtensions("subgroupQuadBroadcast", 1, &E_GL_KHR_shader_subgroup_quad); symbolTable.setFunctionExtensions("subgroupQuadSwapHorizontal", 1, &E_GL_KHR_shader_subgroup_quad); symbolTable.setFunctionExtensions("subgroupQuadSwapVertical", 1, &E_GL_KHR_shader_subgroup_quad); symbolTable.setFunctionExtensions("subgroupQuadSwapDiagonal", 1, &E_GL_KHR_shader_subgroup_quad); symbolTable.setFunctionExtensions("subgroupPartitionNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedAddNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedMulNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedMinNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedAndNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedOrNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedXorNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveAddNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMulNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMinNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveAndNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveOrNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveAddNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMulNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMinNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveAndNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveOrNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned); // GL_NV_shader_sm_builtins symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); // GL_ARM_shader_core_builtins symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if (profile == EEsProfile) { symbolTable.setFunctionExtensions("shadow2DEXT", 1, &E_GL_EXT_shadow_samplers); symbolTable.setFunctionExtensions("shadow2DProjEXT", 1, &E_GL_EXT_shadow_samplers); } if (spvVersion.vulkan > 0) { symbolTable.setVariableExtensions("gl_ScopeDevice", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_ScopeWorkgroup", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_ScopeSubgroup", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_ScopeInvocation", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsRelaxed", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsAcquire", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsRelease", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsAcquireRelease", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsMakeAvailable", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsMakeVisible", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsVolatile", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsNone", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsBuffer", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsShared", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsImage", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsOutput", 1, &E_GL_KHR_memory_scope_semantics); } symbolTable.setFunctionExtensions("helperInvocationEXT", 1, &E_GL_EXT_demote_to_helper_invocation); if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 450)) { symbolTable.setVariableExtensions("gl_ShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate); BuiltInVariable("gl_ShadingRateEXT", EbvShadingRateKHR, symbolTable); symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } // GL_EXT_shader_quad_control if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { symbolTable.setFunctionExtensions("subgroupQuadAll", 1, &E_GL_KHR_shader_subgroup_vote); symbolTable.setFunctionExtensions("subgroupQuadAny", 1, &E_GL_KHR_shader_subgroup_vote); } // GL_EXT_shader_tile_image symbolTable.setFunctionExtensions("stencilAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); symbolTable.setFunctionExtensions("depthAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); symbolTable.setFunctionExtensions("colorAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.setFunctionExtensions("textureWeightedQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBoxFilterQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBlockMatchSADQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBlockMatchSSDQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBlockMatchWindowSSDQCOM", 1, &E_GL_QCOM_image_processing2); symbolTable.setFunctionExtensions("textureBlockMatchWindowSADQCOM", 1, &E_GL_QCOM_image_processing2); symbolTable.setFunctionExtensions("textureBlockMatchGatherSSDQCOM", 1, &E_GL_QCOM_image_processing2); symbolTable.setFunctionExtensions("textureBlockMatchGatherSADQCOM", 1, &E_GL_QCOM_image_processing2); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 460)) { BuiltInVariable("gl_TileOffsetQCOM", EbvTileOffsetQCOM, symbolTable); BuiltInVariable("gl_TileDimensionQCOM", EbvTileDimensionQCOM, symbolTable); BuiltInVariable("gl_TileApronSizeQCOM", EbvTileApronSizeQCOM, symbolTable); symbolTable.setVariableExtensions("gl_TileOffsetQCOM", 1, &E_GL_QCOM_tile_shading); symbolTable.setVariableExtensions("gl_TileDimensionQCOM", 1, &E_GL_QCOM_tile_shading); symbolTable.setVariableExtensions("gl_TileApronSizeQCOM", 1, &E_GL_QCOM_tile_shading); } break; case EShLangCompute: BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable); BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable); BuiltInVariable("gl_WorkGroupID", EbvWorkGroupId, symbolTable); BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable); BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); } if (profile != EEsProfile && version < 430) { symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeWorkGroupCount", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeWorkGroupSize", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeUniformComponents", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeTextureImageUnits", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeImageUniforms", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeAtomicCounters", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeAtomicCounterBuffers", 1, &E_GL_ARB_compute_shader); symbolTable.setFunctionExtensions("barrier", 1, &E_GL_ARB_compute_shader); symbolTable.setFunctionExtensions("memoryBarrierAtomicCounter", 1, &E_GL_ARB_compute_shader); symbolTable.setFunctionExtensions("memoryBarrierBuffer", 1, &E_GL_ARB_compute_shader); symbolTable.setFunctionExtensions("memoryBarrierImage", 1, &E_GL_ARB_compute_shader); symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_ARB_compute_shader); symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_ARB_compute_shader); } symbolTable.setFunctionExtensions("controlBarrier", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setFunctionExtensions("debugPrintfEXT", 1, &E_GL_EXT_debug_printf); // GL_ARB_shader_ballot if (profile != EEsProfile) { symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot); BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable); BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); 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); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot); BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable); BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable); BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable); BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable); BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); // GL_NV_shader_sm_builtins symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); // GL_ARM_shader_core_builtins symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic); BuiltInVariable("gl_NumSubgroups", EbvNumSubgroups, symbolTable); BuiltInVariable("gl_SubgroupID", EbvSubgroupID, symbolTable); symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); } { const char *coopExt[2] = { E_GL_NV_cooperative_matrix, E_GL_NV_integer_cooperative_matrix }; symbolTable.setFunctionExtensions("coopMatLoadNV", 2, coopExt); symbolTable.setFunctionExtensions("coopMatStoreNV", 2, coopExt); symbolTable.setFunctionExtensions("coopMatMulAddNV", 2, coopExt); } { symbolTable.setFunctionExtensions("coopMatLoad", 1, &E_GL_KHR_cooperative_matrix); symbolTable.setFunctionExtensions("coopMatStore", 1, &E_GL_KHR_cooperative_matrix); symbolTable.setFunctionExtensions("coopMatMulAdd", 1, &E_GL_KHR_cooperative_matrix); symbolTable.setFunctionExtensions("coopMatReduceNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("coopMatPerElementNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("coopMatTransposeNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("createTensorLayoutNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("setTensorLayoutBlockSizeNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("setTensorLayoutDimensionNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("setTensorLayoutStrideNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("sliceTensorLayoutNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("setTensorLayoutClampValueNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("createTensorViewNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("setTensorViewDimensionsNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("setTensorViewStrideNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("setTensorViewClipNV", 1, &E_GL_NV_cooperative_matrix2); } { symbolTable.setFunctionExtensions("tensorReadARM", 1, &E_GL_ARM_tensors); symbolTable.setFunctionExtensions("tensorWriteARM", 1, &E_GL_ARM_tensors); symbolTable.setFunctionExtensions("tensorSizeARM", 1, &E_GL_ARM_tensors); } { symbolTable.setFunctionExtensions("coopVecMatMulNV", 1, &E_GL_NV_cooperative_vector); symbolTable.setFunctionExtensions("coopVecMatMulAddNV", 1, &E_GL_NV_cooperative_vector); symbolTable.setFunctionExtensions("coopVecOuterProductAccumulateNV", 1, &E_GL_NV_cooperative_vector); symbolTable.setFunctionExtensions("coopVecReduceSumAccumulateNV", 1, &E_GL_NV_cooperative_vector); } { symbolTable.setFunctionExtensions("bitcastQCOM", 1, &E_GL_QCOM_cooperative_matrix_conversion); symbolTable.setFunctionExtensions("extractSubArrayQCOM", 1, &E_GL_QCOM_cooperative_matrix_conversion); symbolTable.setFunctionExtensions("vectorToCoopmatQCOM", 1, &E_GL_QCOM_cooperative_matrix_conversion); symbolTable.setFunctionExtensions("coopmatToVectorQCOM", 1, &E_GL_QCOM_cooperative_matrix_conversion); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("fwidth", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("dFdxFine", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("dFdyFine", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("fwidthFine", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("dFdxCoarse", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 450)) { symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } if ((profile != EEsProfile && version >= 460)) { symbolTable.setFunctionExtensions("fetchMicroTriangleVertexPositionNV", 1, &E_GL_NV_displacement_micromap); symbolTable.setFunctionExtensions("fetchMicroTriangleVertexBarycentricNV", 1, &E_GL_NV_displacement_micromap); } // GL_EXT_integer_dot_product if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 450)) { symbolTable.setFunctionExtensions("dotEXT", 1, &E_GL_EXT_integer_dot_product); symbolTable.setFunctionExtensions("dotPacked4x8EXT", 1, &E_GL_EXT_integer_dot_product); symbolTable.setFunctionExtensions("dotAccSatEXT", 1, &E_GL_EXT_integer_dot_product); symbolTable.setFunctionExtensions("dotPacked4x8AccSatEXT", 1, &E_GL_EXT_integer_dot_product); } { symbolTable.setFunctionExtensions("bfloat16BitsToIntEXT", 1, &E_GL_EXT_bfloat16); symbolTable.setFunctionExtensions("bfloat16BitsToUintEXT", 1, &E_GL_EXT_bfloat16); symbolTable.setFunctionExtensions("intBitsToBFloat16EXT", 1, &E_GL_EXT_bfloat16); symbolTable.setFunctionExtensions("uintBitsToBFloat16EXT", 1, &E_GL_EXT_bfloat16); symbolTable.setFunctionExtensions("floate5m2BitsToIntEXT", 1, &E_GL_EXT_float_e5m2); symbolTable.setFunctionExtensions("floate5m2BitsToUintEXT", 1, &E_GL_EXT_float_e5m2); symbolTable.setFunctionExtensions("intBitsToFloate5m2EXT", 1, &E_GL_EXT_float_e5m2); symbolTable.setFunctionExtensions("uintBitsToFloate5m2EXT", 1, &E_GL_EXT_float_e5m2); symbolTable.setFunctionExtensions("floate4m3BitsToIntEXT", 1, &E_GL_EXT_float_e4m3); symbolTable.setFunctionExtensions("floate4m3BitsToUintEXT", 1, &E_GL_EXT_float_e4m3); symbolTable.setFunctionExtensions("intBitsToFloate4m3EXT", 1, &E_GL_EXT_float_e4m3); symbolTable.setFunctionExtensions("uintBitsToFloate4m3EXT", 1, &E_GL_EXT_float_e4m3); const char *float8exts[] = {E_GL_EXT_float_e5m2, E_GL_EXT_float_e4m3}; symbolTable.setFunctionExtensions("saturatedConvertEXT", 2, float8exts); } // E_SPV_QCOM_tile_shading if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 460)) { BuiltInVariable("gl_TileOffsetQCOM", EbvTileOffsetQCOM, symbolTable); BuiltInVariable("gl_TileDimensionQCOM", EbvTileDimensionQCOM, symbolTable); BuiltInVariable("gl_TileApronSizeQCOM", EbvTileApronSizeQCOM, symbolTable); symbolTable.setVariableExtensions("gl_TileOffsetQCOM", 1, &E_GL_QCOM_tile_shading); symbolTable.setVariableExtensions("gl_TileDimensionQCOM", 1, &E_GL_QCOM_tile_shading); symbolTable.setVariableExtensions("gl_TileApronSizeQCOM", 1, &E_GL_QCOM_tile_shading); } break; case EShLangRayGen: case EShLangIntersect: case EShLangAnyHit: case EShLangClosestHit: case EShLangMiss: case EShLangCallable: if (profile != EEsProfile && version >= 460) { const char *rtexts[] = { E_GL_NV_ray_tracing, E_GL_EXT_ray_tracing }; symbolTable.setVariableExtensions("gl_LaunchIDNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_LaunchIDEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_LaunchSizeNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_LaunchSizeEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_PrimitiveID", 2, rtexts); symbolTable.setVariableExtensions("gl_InstanceID", 2, rtexts); symbolTable.setVariableExtensions("gl_InstanceCustomIndexNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_InstanceCustomIndexEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_GeometryIndexEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_WorldRayOriginNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_WorldRayOriginEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_WorldRayDirectionNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_WorldRayDirectionEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectRayOriginNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectRayOriginEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectRayDirectionNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectRayDirectionEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_RayTminNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_RayTminEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_RayTmaxNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_RayTmaxEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_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); symbolTable.setVariableExtensions("gl_HitKindEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectToWorldNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectToWorldEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectToWorld3x4EXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_WorldToObjectNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_WorldToObjectEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_WorldToObject3x4EXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_IncomingRayFlagsNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_IncomingRayFlagsEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_CurrentRayTimeNV", 1, &E_GL_NV_ray_tracing_motion_blur); symbolTable.setVariableExtensions("gl_HitTriangleVertexPositionsEXT", 1, &E_GL_EXT_ray_tracing_position_fetch); symbolTable.setVariableExtensions("gl_HitMicroTriangleVertexPositionsNV", 1, &E_GL_NV_displacement_micromap); symbolTable.setVariableExtensions("gl_HitMicroTriangleVertexBarycentricsNV", 1, &E_GL_NV_displacement_micromap); symbolTable.setVariableExtensions("gl_ClusterIDNV", 1, &E_GL_NV_cluster_acceleration_structure); symbolTable.setVariableExtensions("gl_HitKindSphereNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setVariableExtensions("gl_HitKindLSSNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setVariableExtensions("gl_HitSpherePositionNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setVariableExtensions("gl_HitSphereRadiusNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setVariableExtensions("gl_HitLSSPositionNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setVariableExtensions("gl_HitLSSRadiiNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); symbolTable.setFunctionExtensions("traceNV", 1, &E_GL_NV_ray_tracing); symbolTable.setFunctionExtensions("traceRayMotionNV", 1, &E_GL_NV_ray_tracing_motion_blur); symbolTable.setFunctionExtensions("traceRayEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setFunctionExtensions("reportIntersectionNV", 1, &E_GL_NV_ray_tracing); symbolTable.setFunctionExtensions("reportIntersectionEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setFunctionExtensions("ignoreIntersectionNV", 1, &E_GL_NV_ray_tracing); symbolTable.setFunctionExtensions("terminateRayNV", 1, &E_GL_NV_ray_tracing); symbolTable.setFunctionExtensions("executeCallableNV", 1, &E_GL_NV_ray_tracing); symbolTable.setFunctionExtensions("executeCallableEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setFunctionExtensions("hitObjectTraceRayNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectTraceRayMotionNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectRecordHitNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectRecordHitMotionNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectRecordHitWithIndexNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectRecordHitWithIndexMotionNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectRecordMissNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectRecordMissMotionNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectRecordEmptyNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectExecuteShaderNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectIsEmptyNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectIsMissNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectIsHitNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetRayTMinNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetRayTMaxNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetObjectRayOriginNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetObjectRayDirectionNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetWorldRayOriginNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetWorldRayDirectionNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetWorldToObjectNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetbjectToWorldNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetInstanceCustomIndexNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetInstanceIdNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetGeometryIndexNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetPrimitiveIndexNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetHitKindNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetAttributesNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetCurrentTimeNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetShaderBindingTableRecordIndexNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetShaderRecordBufferHandleNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetClusterIdNV", 1, &E_GL_NV_cluster_acceleration_structure); symbolTable.setFunctionExtensions("reorderThreadNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("fetchMicroTriangleVertexPositionNV", 1, &E_GL_NV_displacement_micromap); symbolTable.setFunctionExtensions("fetchMicroTriangleVertexBarycentricNV", 1, &E_GL_NV_displacement_micromap); symbolTable.setFunctionExtensions("hitObjectGetSpherePositionNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("hitObjectGetSphereRadiusNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("hitObjectGetLSSPositionsNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("hitObjectGetLSSRadiiNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("hitObjectIsSphereHitNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("hitObjectIsLSSHitNV", 1, &E_GL_NV_linear_swept_spheres); BuiltInVariable("gl_LaunchIDNV", EbvLaunchId, symbolTable); BuiltInVariable("gl_LaunchIDEXT", EbvLaunchId, symbolTable); BuiltInVariable("gl_LaunchSizeNV", EbvLaunchSize, symbolTable); BuiltInVariable("gl_LaunchSizeEXT", EbvLaunchSize, symbolTable); BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable); BuiltInVariable("gl_InstanceID", EbvInstanceId, symbolTable); BuiltInVariable("gl_InstanceCustomIndexNV", EbvInstanceCustomIndex,symbolTable); BuiltInVariable("gl_InstanceCustomIndexEXT", EbvInstanceCustomIndex,symbolTable); BuiltInVariable("gl_GeometryIndexEXT", EbvGeometryIndex, symbolTable); BuiltInVariable("gl_WorldRayOriginNV", EbvWorldRayOrigin, symbolTable); BuiltInVariable("gl_WorldRayOriginEXT", EbvWorldRayOrigin, symbolTable); BuiltInVariable("gl_WorldRayDirectionNV", EbvWorldRayDirection, symbolTable); BuiltInVariable("gl_WorldRayDirectionEXT", EbvWorldRayDirection, symbolTable); BuiltInVariable("gl_ObjectRayOriginNV", EbvObjectRayOrigin, symbolTable); BuiltInVariable("gl_ObjectRayOriginEXT", EbvObjectRayOrigin, symbolTable); BuiltInVariable("gl_ObjectRayDirectionNV", EbvObjectRayDirection, symbolTable); BuiltInVariable("gl_ObjectRayDirectionEXT", EbvObjectRayDirection, symbolTable); BuiltInVariable("gl_RayTminNV", EbvRayTmin, symbolTable); BuiltInVariable("gl_RayTminEXT", EbvRayTmin, symbolTable); BuiltInVariable("gl_RayTmaxNV", EbvRayTmax, symbolTable); BuiltInVariable("gl_RayTmaxEXT", EbvRayTmax, symbolTable); BuiltInVariable("gl_CullMaskEXT", EbvCullMask, symbolTable); BuiltInVariable("gl_HitKindNV", EbvHitKind, symbolTable); BuiltInVariable("gl_HitKindEXT", EbvHitKind, symbolTable); BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorld, symbolTable); BuiltInVariable("gl_ObjectToWorldEXT", EbvObjectToWorld, symbolTable); BuiltInVariable("gl_ObjectToWorld3x4EXT", EbvObjectToWorld3x4, symbolTable); BuiltInVariable("gl_WorldToObjectNV", EbvWorldToObject, symbolTable); BuiltInVariable("gl_WorldToObjectEXT", EbvWorldToObject, symbolTable); BuiltInVariable("gl_WorldToObject3x4EXT", EbvWorldToObject3x4, symbolTable); BuiltInVariable("gl_IncomingRayFlagsNV", EbvIncomingRayFlags, symbolTable); BuiltInVariable("gl_IncomingRayFlagsEXT", EbvIncomingRayFlags, symbolTable); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); BuiltInVariable("gl_CurrentRayTimeNV", EbvCurrentRayTimeNV, symbolTable); BuiltInVariable("gl_HitTriangleVertexPositionsEXT", EbvPositionFetch, symbolTable); BuiltInVariable("gl_HitMicroTriangleVertexPositionsNV", EbvMicroTrianglePositionNV, symbolTable); BuiltInVariable("gl_HitMicroTriangleVertexBarycentricsNV", EbvMicroTriangleBaryNV, symbolTable); BuiltInVariable("gl_HitKindFrontFacingMicroTriangleNV", EbvHitKindFrontFacingMicroTriangleNV, symbolTable); BuiltInVariable("gl_HitKindBackFacingMicroTriangleNV", EbvHitKindBackFacingMicroTriangleNV, symbolTable); BuiltInVariable("gl_ClusterIDNV", EbvClusterIDNV, symbolTable); BuiltInVariable("gl_HitIsSphereNV", EbvHitIsSphereNV, symbolTable); BuiltInVariable("gl_HitIsLSSNV", EbvHitIsLSSNV, symbolTable); BuiltInVariable("gl_HitSpherePositionNV", EbvHitSpherePositionNV, symbolTable); BuiltInVariable("gl_HitSphereRadiusNV", EbvHitSphereRadiusNV, symbolTable); BuiltInVariable("gl_HitLSSPositionsNV", EbvHitLSSPositionsNV, symbolTable); BuiltInVariable("gl_HitLSSRadiiNV", EbvHitLSSRadiiNV, symbolTable); // gl_HitT variables are aliases of their gl_RayTmax counterparts. RetargetVariable("gl_HitTNV", "gl_RayTmaxNV", symbolTable); RetargetVariable("gl_HitTEXT", "gl_RayTmaxEXT", symbolTable); // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot); BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable); BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); 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); // GL_KHR_shader_subgroup symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot); BuiltInVariable("gl_NumSubgroups", EbvNumSubgroups, symbolTable); BuiltInVariable("gl_SubgroupID", EbvSubgroupID, symbolTable); BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable); BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable); BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable); BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable); BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); // GL_NV_shader_sm_builtins symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); // GL_ARM_shader_core_builtins symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 450)) { symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } break; 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); symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_PointSize", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_ClipDistance", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_CullDistance", 1, &E_GL_NV_mesh_shader); BuiltInVariable("gl_MeshVerticesNV", "gl_Position", EbvPosition, symbolTable); BuiltInVariable("gl_MeshVerticesNV", "gl_PointSize", EbvPointSize, symbolTable); BuiltInVariable("gl_MeshVerticesNV", "gl_ClipDistance", EbvClipDistance, symbolTable); BuiltInVariable("gl_MeshVerticesNV", "gl_CullDistance", EbvCullDistance, symbolTable); symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_PositionPerViewNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_ClipDistancePerViewNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_CullDistancePerViewNV", 1, &E_GL_NV_mesh_shader); BuiltInVariable("gl_MeshVerticesNV", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); BuiltInVariable("gl_MeshVerticesNV", "gl_ClipDistancePerViewNV", EbvClipDistancePerViewNV, symbolTable); BuiltInVariable("gl_MeshVerticesNV", "gl_CullDistancePerViewNV", EbvCullDistancePerViewNV, symbolTable); // per-primitive builtins symbolTable.setVariableExtensions("gl_MeshPrimitivesNV", "gl_PrimitiveID", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshPrimitivesNV", "gl_Layer", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshPrimitivesNV", "gl_ViewportIndex", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshPrimitivesNV", "gl_ViewportMask", 1, &E_GL_NV_mesh_shader); BuiltInVariable("gl_MeshPrimitivesNV", "gl_PrimitiveID", EbvPrimitiveId, symbolTable); BuiltInVariable("gl_MeshPrimitivesNV", "gl_Layer", EbvLayer, symbolTable); BuiltInVariable("gl_MeshPrimitivesNV", "gl_ViewportIndex", EbvViewportIndex, symbolTable); BuiltInVariable("gl_MeshPrimitivesNV", "gl_ViewportMask", EbvViewportMaskNV, symbolTable); // per-view per-primitive builtins symbolTable.setVariableExtensions("gl_MeshPrimitivesNV", "gl_LayerPerViewNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshPrimitivesNV", "gl_ViewportMaskPerViewNV", 1, &E_GL_NV_mesh_shader); BuiltInVariable("gl_MeshPrimitivesNV", "gl_LayerPerViewNV", EbvLayerPerViewNV, symbolTable); BuiltInVariable("gl_MeshPrimitivesNV", "gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable); // other builtins symbolTable.setVariableExtensions("gl_PrimitiveCountNV", 1, &E_GL_NV_mesh_shader); 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); 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); BuiltInVariable("gl_MeshViewIndicesNV", EbvMeshViewIndicesNV, symbolTable); BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable); BuiltInVariable("gl_WorkGroupID", EbvWorkGroupId, symbolTable); BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable); BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); // builtin constants symbolTable.setVariableExtensions("gl_MaxMeshOutputVerticesNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MaxMeshOutputPrimitivesNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MaxMeshWorkGroupSizeNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MaxMeshViewCountNV", 1, &E_GL_NV_mesh_shader); // builtin functions 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); // note: technically this member requires both GL_EXT_mesh_shader and GL_EXT_fragment_shading_rate // since setVariableExtensions only needs *one of* the extensions to validate, it's more useful to specify EXT_fragment_shading_rate // GL_EXT_mesh_shader will be required in practice by use of other fields of gl_MeshPrimitivesEXT symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate); 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); // GL_ARB_shader_draw_parameters symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters); BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable); 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); symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot); BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable); BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); 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); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot); BuiltInVariable("gl_NumSubgroups", EbvNumSubgroups, symbolTable); BuiltInVariable("gl_SubgroupID", EbvSubgroupID, symbolTable); BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable); BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable); BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable); BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable); BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); // GL_NV_shader_sm_builtins symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); // GL_ARM_shader_core_builtins symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 450)) { symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } // Builtins for GL_NV_displacment_micromap if ((profile != EEsProfile && version >= 460)) { symbolTable.setFunctionExtensions("fetchMicroTriangleVertexPositionNV", 1, &E_GL_NV_displacement_micromap); symbolTable.setFunctionExtensions("fetchMicroTriangleVertexBarycentricNV", 1, &E_GL_NV_displacement_micromap); } break; case EShLangTask: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.setVariableExtensions("gl_TaskCountNV", 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); BuiltInVariable("gl_WorkGroupID", EbvWorkGroupId, symbolTable); BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable); BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); BuiltInVariable("gl_MeshViewCountNV", EbvMeshViewCountNV, symbolTable); BuiltInVariable("gl_MeshViewIndicesNV", EbvMeshViewIndicesNV, symbolTable); symbolTable.setVariableExtensions("gl_MaxTaskWorkGroupSizeNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MaxMeshViewCountNV", 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); // GL_ARB_shader_draw_parameters symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters); BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable); if (version >= 460) { BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable); } // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot); BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable); BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); 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); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot); symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot); BuiltInVariable("gl_NumSubgroups", EbvNumSubgroups, symbolTable); BuiltInVariable("gl_SubgroupID", EbvSubgroupID, symbolTable); BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable); BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable); BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable); BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable); BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); // GL_NV_shader_sm_builtins symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); // GL_ARM_shader_core_builtins symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 450)) { symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } break; default: assert(false && "Language not supported"); break; } // // Next, identify which built-ins have a mapping to an operator. // If PureOperatorBuiltins is false, those that are not identified as such are // expected to be resolved through a library of functions, versus as // operations. // relateTabledBuiltins(version, profile, spvVersion, language, symbolTable); symbolTable.relateToOperator("doubleBitsToInt64", EOpDoubleBitsToInt64); symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64); symbolTable.relateToOperator("int64BitsToDouble", EOpInt64BitsToDouble); symbolTable.relateToOperator("uint64BitsToDouble", EOpUint64BitsToDouble); symbolTable.relateToOperator("halfBitsToInt16", EOpFloat16BitsToInt16); symbolTable.relateToOperator("halfBitsToUint16", EOpFloat16BitsToUint16); symbolTable.relateToOperator("float16BitsToInt16", EOpFloat16BitsToInt16); symbolTable.relateToOperator("float16BitsToUint16", EOpFloat16BitsToUint16); symbolTable.relateToOperator("int16BitsToFloat16", EOpInt16BitsToFloat16); symbolTable.relateToOperator("uint16BitsToFloat16", EOpUint16BitsToFloat16); symbolTable.relateToOperator("int16BitsToHalf", EOpInt16BitsToFloat16); symbolTable.relateToOperator("uint16BitsToHalf", EOpUint16BitsToFloat16); symbolTable.relateToOperator("packSnorm4x8", EOpPackSnorm4x8); symbolTable.relateToOperator("unpackSnorm4x8", EOpUnpackSnorm4x8); symbolTable.relateToOperator("packUnorm4x8", EOpPackUnorm4x8); symbolTable.relateToOperator("unpackUnorm4x8", EOpUnpackUnorm4x8); symbolTable.relateToOperator("packDouble2x32", EOpPackDouble2x32); symbolTable.relateToOperator("unpackDouble2x32", EOpUnpackDouble2x32); symbolTable.relateToOperator("packInt2x32", EOpPackInt2x32); symbolTable.relateToOperator("unpackInt2x32", EOpUnpackInt2x32); symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32); symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32); symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16); symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16); symbolTable.relateToOperator("packUint2x16", EOpPackUint2x16); symbolTable.relateToOperator("unpackUint2x16", EOpUnpackUint2x16); symbolTable.relateToOperator("packInt4x16", EOpPackInt4x16); symbolTable.relateToOperator("unpackInt4x16", EOpUnpackInt4x16); symbolTable.relateToOperator("packUint4x16", EOpPackUint4x16); symbolTable.relateToOperator("unpackUint4x16", EOpUnpackUint4x16); symbolTable.relateToOperator("packFloat2x16", EOpPackFloat2x16); symbolTable.relateToOperator("unpackFloat2x16", EOpUnpackFloat2x16); symbolTable.relateToOperator("pack16", EOpPack16); symbolTable.relateToOperator("pack32", EOpPack32); symbolTable.relateToOperator("pack64", EOpPack64); symbolTable.relateToOperator("unpack32", EOpUnpack32); symbolTable.relateToOperator("unpack16", EOpUnpack16); symbolTable.relateToOperator("unpack8", EOpUnpack8); symbolTable.relateToOperator("controlBarrier", EOpBarrier); symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter); symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage); if (spvVersion.vulkanRelaxed) { // // functions signature have been replaced to take uint operations on buffer variables // remap atomic counter functions to atomic operations // symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierBuffer); } symbolTable.relateToOperator("atomicLoad", EOpAtomicLoad); symbolTable.relateToOperator("atomicStore", EOpAtomicStore); symbolTable.relateToOperator("atomicCounterIncrement", EOpAtomicCounterIncrement); symbolTable.relateToOperator("atomicCounterDecrement", EOpAtomicCounterDecrement); symbolTable.relateToOperator("atomicCounter", EOpAtomicCounter); if (spvVersion.vulkanRelaxed) { // // functions signature have been replaced to take uint operations // remap atomic counter functions to atomic operations // // these atomic counter functions do not match signatures of glsl // atomic functions, so they will be remapped to semantically // equivalent functions in the parser // symbolTable.relateToOperator("atomicCounterIncrement", EOpNull); symbolTable.relateToOperator("atomicCounterDecrement", EOpNull); symbolTable.relateToOperator("atomicCounter", EOpNull); } symbolTable.relateToOperator("clockARB", EOpReadClockSubgroupKHR); symbolTable.relateToOperator("clock2x32ARB", EOpReadClockSubgroupKHR); symbolTable.relateToOperator("clockRealtimeEXT", EOpReadClockDeviceKHR); symbolTable.relateToOperator("clockRealtime2x32EXT", EOpReadClockDeviceKHR); if (profile != EEsProfile && version == 450) { symbolTable.relateToOperator("atomicCounterAddARB", EOpAtomicCounterAdd); symbolTable.relateToOperator("atomicCounterSubtractARB", EOpAtomicCounterSubtract); symbolTable.relateToOperator("atomicCounterMinARB", EOpAtomicCounterMin); symbolTable.relateToOperator("atomicCounterMaxARB", EOpAtomicCounterMax); symbolTable.relateToOperator("atomicCounterAndARB", EOpAtomicCounterAnd); symbolTable.relateToOperator("atomicCounterOrARB", EOpAtomicCounterOr); symbolTable.relateToOperator("atomicCounterXorARB", EOpAtomicCounterXor); symbolTable.relateToOperator("atomicCounterExchangeARB", EOpAtomicCounterExchange); symbolTable.relateToOperator("atomicCounterCompSwapARB", EOpAtomicCounterCompSwap); } if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("atomicCounterAdd", EOpAtomicCounterAdd); symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicCounterSubtract); symbolTable.relateToOperator("atomicCounterMin", EOpAtomicCounterMin); symbolTable.relateToOperator("atomicCounterMax", EOpAtomicCounterMax); symbolTable.relateToOperator("atomicCounterAnd", EOpAtomicCounterAnd); symbolTable.relateToOperator("atomicCounterOr", EOpAtomicCounterOr); symbolTable.relateToOperator("atomicCounterXor", EOpAtomicCounterXor); symbolTable.relateToOperator("atomicCounterExchange", EOpAtomicCounterExchange); symbolTable.relateToOperator("atomicCounterCompSwap", EOpAtomicCounterCompSwap); } if (spvVersion.vulkanRelaxed) { // // functions signature have been replaced to take 'uint' instead of 'atomic_uint' // remap atomic counter functions to non-counter atomic ops so // functions act as aliases to non-counter atomic ops // symbolTable.relateToOperator("atomicCounterAdd", EOpAtomicAdd); symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicSubtract); symbolTable.relateToOperator("atomicCounterMin", EOpAtomicMin); symbolTable.relateToOperator("atomicCounterMax", EOpAtomicMax); symbolTable.relateToOperator("atomicCounterAnd", EOpAtomicAnd); symbolTable.relateToOperator("atomicCounterOr", EOpAtomicOr); symbolTable.relateToOperator("atomicCounterXor", EOpAtomicXor); symbolTable.relateToOperator("atomicCounterExchange", EOpAtomicExchange); symbolTable.relateToOperator("atomicCounterCompSwap", EOpAtomicCompSwap); } symbolTable.relateToOperator("fma", EOpFma); symbolTable.relateToOperator("frexp", EOpFrexp); symbolTable.relateToOperator("ldexp", EOpLdexp); symbolTable.relateToOperator("uaddCarry", EOpAddCarry); symbolTable.relateToOperator("usubBorrow", EOpSubBorrow); symbolTable.relateToOperator("umulExtended", EOpUMulExtended); symbolTable.relateToOperator("imulExtended", EOpIMulExtended); symbolTable.relateToOperator("bitfieldExtract", EOpBitfieldExtract); symbolTable.relateToOperator("bitfieldInsert", EOpBitfieldInsert); symbolTable.relateToOperator("bitfieldReverse", EOpBitFieldReverse); symbolTable.relateToOperator("bitCount", EOpBitCount); symbolTable.relateToOperator("findLSB", EOpFindLSB); symbolTable.relateToOperator("findMSB", EOpFindMSB); symbolTable.relateToOperator("helperInvocationEXT", EOpIsHelperInvocation); symbolTable.relateToOperator("countLeadingZeros", EOpCountLeadingZeros); symbolTable.relateToOperator("countTrailingZeros", EOpCountTrailingZeros); symbolTable.relateToOperator("absoluteDifference", EOpAbsDifference); symbolTable.relateToOperator("addSaturate", EOpAddSaturate); symbolTable.relateToOperator("subtractSaturate", EOpSubSaturate); symbolTable.relateToOperator("average", EOpAverage); symbolTable.relateToOperator("averageRounded", EOpAverageRounded); symbolTable.relateToOperator("multiply32x16", EOpMul32x16); symbolTable.relateToOperator("debugPrintfEXT", EOpDebugPrintf); symbolTable.relateToOperator("assumeEXT", EOpAssumeEXT); symbolTable.relateToOperator("expectEXT", EOpExpectEXT); if (PureOperatorBuiltins) { symbolTable.relateToOperator("imageSize", EOpImageQuerySize); symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples); symbolTable.relateToOperator("imageLoad", EOpImageLoad); symbolTable.relateToOperator("imageStore", EOpImageStore); symbolTable.relateToOperator("imageAtomicAdd", EOpImageAtomicAdd); symbolTable.relateToOperator("imageAtomicMin", EOpImageAtomicMin); symbolTable.relateToOperator("imageAtomicMax", EOpImageAtomicMax); symbolTable.relateToOperator("imageAtomicAnd", EOpImageAtomicAnd); symbolTable.relateToOperator("imageAtomicOr", EOpImageAtomicOr); symbolTable.relateToOperator("imageAtomicXor", EOpImageAtomicXor); symbolTable.relateToOperator("imageAtomicExchange", EOpImageAtomicExchange); symbolTable.relateToOperator("imageAtomicCompSwap", EOpImageAtomicCompSwap); symbolTable.relateToOperator("imageAtomicLoad", EOpImageAtomicLoad); symbolTable.relateToOperator("imageAtomicStore", EOpImageAtomicStore); symbolTable.relateToOperator("subpassLoad", EOpSubpassLoad); symbolTable.relateToOperator("subpassLoadMS", EOpSubpassLoadMS); symbolTable.relateToOperator("textureGather", EOpTextureGather); symbolTable.relateToOperator("textureGatherOffset", EOpTextureGatherOffset); symbolTable.relateToOperator("textureGatherOffsets", EOpTextureGatherOffsets); symbolTable.relateToOperator("noise1", EOpNoise); symbolTable.relateToOperator("noise2", EOpNoise); symbolTable.relateToOperator("noise3", EOpNoise); symbolTable.relateToOperator("noise4", EOpNoise); symbolTable.relateToOperator("textureFootprintNV", EOpImageSampleFootprintNV); symbolTable.relateToOperator("textureFootprintClampNV", EOpImageSampleFootprintClampNV); symbolTable.relateToOperator("textureFootprintLodNV", EOpImageSampleFootprintLodNV); symbolTable.relateToOperator("textureFootprintGradNV", EOpImageSampleFootprintGradNV); symbolTable.relateToOperator("textureFootprintGradClampNV", EOpImageSampleFootprintGradClampNV); if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) symbolTable.relateToOperator("ftransform", EOpFtransform); if (spvVersion.spv == 0 && (IncludeLegacy(version, profile, spvVersion) || (profile == EEsProfile && version == 100))) { symbolTable.relateToOperator("texture1D", EOpTexture); symbolTable.relateToOperator("texture1DGradARB", EOpTextureGrad); symbolTable.relateToOperator("texture1DProj", EOpTextureProj); symbolTable.relateToOperator("texture1DProjGradARB", EOpTextureProjGrad); symbolTable.relateToOperator("texture1DLod", EOpTextureLod); symbolTable.relateToOperator("texture1DProjLod", EOpTextureProjLod); symbolTable.relateToOperator("texture2DRect", EOpTexture); symbolTable.relateToOperator("texture2DRectProj", EOpTextureProj); symbolTable.relateToOperator("texture2DRectGradARB", EOpTextureGrad); symbolTable.relateToOperator("texture2DRectProjGradARB", EOpTextureProjGrad); symbolTable.relateToOperator("shadow2DRect", EOpTexture); symbolTable.relateToOperator("shadow2DRectProj", EOpTextureProj); symbolTable.relateToOperator("shadow2DRectGradARB", EOpTextureGrad); symbolTable.relateToOperator("shadow2DRectProjGradARB", EOpTextureProjGrad); symbolTable.relateToOperator("texture2D", EOpTexture); symbolTable.relateToOperator("texture2DProj", EOpTextureProj); symbolTable.relateToOperator("texture2DGradEXT", EOpTextureGrad); symbolTable.relateToOperator("texture2DGradARB", EOpTextureGrad); symbolTable.relateToOperator("texture2DProjGradEXT", EOpTextureProjGrad); symbolTable.relateToOperator("texture2DProjGradARB", EOpTextureProjGrad); symbolTable.relateToOperator("texture2DLod", EOpTextureLod); symbolTable.relateToOperator("texture2DLodEXT", EOpTextureLod); symbolTable.relateToOperator("texture2DProjLod", EOpTextureProjLod); symbolTable.relateToOperator("texture2DProjLodEXT", EOpTextureProjLod); symbolTable.relateToOperator("texture3D", EOpTexture); symbolTable.relateToOperator("texture3DGradARB", EOpTextureGrad); symbolTable.relateToOperator("texture3DProj", EOpTextureProj); symbolTable.relateToOperator("texture3DProjGradARB", EOpTextureProjGrad); symbolTable.relateToOperator("texture3DLod", EOpTextureLod); symbolTable.relateToOperator("texture3DProjLod", EOpTextureProjLod); symbolTable.relateToOperator("textureCube", EOpTexture); symbolTable.relateToOperator("textureCubeGradEXT", EOpTextureGrad); symbolTable.relateToOperator("textureCubeGradARB", EOpTextureGrad); symbolTable.relateToOperator("textureCubeLod", EOpTextureLod); symbolTable.relateToOperator("textureCubeLodEXT", EOpTextureLod); symbolTable.relateToOperator("shadow1D", EOpTexture); symbolTable.relateToOperator("shadow1DGradARB", EOpTextureGrad); symbolTable.relateToOperator("shadow2D", EOpTexture); symbolTable.relateToOperator("shadow2DGradARB", EOpTextureGrad); symbolTable.relateToOperator("shadow1DProj", EOpTextureProj); symbolTable.relateToOperator("shadow2DProj", EOpTextureProj); symbolTable.relateToOperator("shadow1DProjGradARB", EOpTextureProjGrad); symbolTable.relateToOperator("shadow2DProjGradARB", EOpTextureProjGrad); symbolTable.relateToOperator("shadow1DLod", EOpTextureLod); symbolTable.relateToOperator("shadow2DLod", EOpTextureLod); symbolTable.relateToOperator("shadow1DProjLod", EOpTextureProjLod); symbolTable.relateToOperator("shadow2DProjLod", EOpTextureProjLod); } if (profile != EEsProfile) { symbolTable.relateToOperator("sparseTextureARB", EOpSparseTexture); symbolTable.relateToOperator("sparseTextureLodARB", EOpSparseTextureLod); symbolTable.relateToOperator("sparseTextureOffsetARB", EOpSparseTextureOffset); symbolTable.relateToOperator("sparseTexelFetchARB", EOpSparseTextureFetch); symbolTable.relateToOperator("sparseTexelFetchOffsetARB", EOpSparseTextureFetchOffset); symbolTable.relateToOperator("sparseTextureLodOffsetARB", EOpSparseTextureLodOffset); symbolTable.relateToOperator("sparseTextureGradARB", EOpSparseTextureGrad); symbolTable.relateToOperator("sparseTextureGradOffsetARB", EOpSparseTextureGradOffset); symbolTable.relateToOperator("sparseTextureGatherARB", EOpSparseTextureGather); symbolTable.relateToOperator("sparseTextureGatherOffsetARB", EOpSparseTextureGatherOffset); symbolTable.relateToOperator("sparseTextureGatherOffsetsARB", EOpSparseTextureGatherOffsets); symbolTable.relateToOperator("sparseImageLoadARB", EOpSparseImageLoad); symbolTable.relateToOperator("sparseTexelsResidentARB", EOpSparseTexelsResident); symbolTable.relateToOperator("sparseTextureClampARB", EOpSparseTextureClamp); symbolTable.relateToOperator("sparseTextureOffsetClampARB", EOpSparseTextureOffsetClamp); symbolTable.relateToOperator("sparseTextureGradClampARB", EOpSparseTextureGradClamp); symbolTable.relateToOperator("sparseTextureGradOffsetClampARB", EOpSparseTextureGradOffsetClamp); symbolTable.relateToOperator("textureClampARB", EOpTextureClamp); symbolTable.relateToOperator("textureOffsetClampARB", EOpTextureOffsetClamp); symbolTable.relateToOperator("textureGradClampARB", EOpTextureGradClamp); symbolTable.relateToOperator("textureGradOffsetClampARB", EOpTextureGradOffsetClamp); symbolTable.relateToOperator("ballotARB", EOpBallot); symbolTable.relateToOperator("readInvocationARB", EOpReadInvocation); symbolTable.relateToOperator("readFirstInvocationARB", EOpReadFirstInvocation); if (version >= 430) { symbolTable.relateToOperator("anyInvocationARB", EOpAnyInvocation); symbolTable.relateToOperator("allInvocationsARB", EOpAllInvocations); symbolTable.relateToOperator("allInvocationsEqualARB", EOpAllInvocationsEqual); } if (version >= 460) { symbolTable.relateToOperator("anyInvocation", EOpAnyInvocation); symbolTable.relateToOperator("allInvocations", EOpAllInvocations); symbolTable.relateToOperator("allInvocationsEqual", EOpAllInvocationsEqual); } // As per dependency between NV_gpu_shader5 and ARB_shader_group_vote // anyInvocationARB = anyThreadNV // allInvocationsARB = allThreadsNV // allInvocationsEqualARB = allThreadsEqualNV // Thus we reuse the Op's if (version >= 150) { symbolTable.relateToOperator("anyThreadNV", EOpAnyInvocation); symbolTable.relateToOperator("allThreadsNV", EOpAllInvocations); symbolTable.relateToOperator("allThreadsEqualNV", EOpAllInvocationsEqual); } symbolTable.relateToOperator("minInvocationsAMD", EOpMinInvocations); symbolTable.relateToOperator("maxInvocationsAMD", EOpMaxInvocations); symbolTable.relateToOperator("addInvocationsAMD", EOpAddInvocations); symbolTable.relateToOperator("minInvocationsNonUniformAMD", EOpMinInvocationsNonUniform); symbolTable.relateToOperator("maxInvocationsNonUniformAMD", EOpMaxInvocationsNonUniform); symbolTable.relateToOperator("addInvocationsNonUniformAMD", EOpAddInvocationsNonUniform); symbolTable.relateToOperator("minInvocationsInclusiveScanAMD", EOpMinInvocationsInclusiveScan); symbolTable.relateToOperator("maxInvocationsInclusiveScanAMD", EOpMaxInvocationsInclusiveScan); symbolTable.relateToOperator("addInvocationsInclusiveScanAMD", EOpAddInvocationsInclusiveScan); symbolTable.relateToOperator("minInvocationsInclusiveScanNonUniformAMD", EOpMinInvocationsInclusiveScanNonUniform); symbolTable.relateToOperator("maxInvocationsInclusiveScanNonUniformAMD", EOpMaxInvocationsInclusiveScanNonUniform); symbolTable.relateToOperator("addInvocationsInclusiveScanNonUniformAMD", EOpAddInvocationsInclusiveScanNonUniform); symbolTable.relateToOperator("minInvocationsExclusiveScanAMD", EOpMinInvocationsExclusiveScan); symbolTable.relateToOperator("maxInvocationsExclusiveScanAMD", EOpMaxInvocationsExclusiveScan); symbolTable.relateToOperator("addInvocationsExclusiveScanAMD", EOpAddInvocationsExclusiveScan); symbolTable.relateToOperator("minInvocationsExclusiveScanNonUniformAMD", EOpMinInvocationsExclusiveScanNonUniform); symbolTable.relateToOperator("maxInvocationsExclusiveScanNonUniformAMD", EOpMaxInvocationsExclusiveScanNonUniform); symbolTable.relateToOperator("addInvocationsExclusiveScanNonUniformAMD", EOpAddInvocationsExclusiveScanNonUniform); symbolTable.relateToOperator("swizzleInvocationsAMD", EOpSwizzleInvocations); symbolTable.relateToOperator("swizzleInvocationsMaskedAMD", EOpSwizzleInvocationsMasked); symbolTable.relateToOperator("writeInvocationAMD", EOpWriteInvocation); symbolTable.relateToOperator("mbcntAMD", EOpMbcnt); symbolTable.relateToOperator("min3", EOpMin3); symbolTable.relateToOperator("max3", EOpMax3); symbolTable.relateToOperator("mid3", EOpMid3); symbolTable.relateToOperator("cubeFaceIndexAMD", EOpCubeFaceIndex); symbolTable.relateToOperator("cubeFaceCoordAMD", EOpCubeFaceCoord); symbolTable.relateToOperator("timeAMD", EOpTime); symbolTable.relateToOperator("textureGatherLodAMD", EOpTextureGatherLod); symbolTable.relateToOperator("textureGatherLodOffsetAMD", EOpTextureGatherLodOffset); symbolTable.relateToOperator("textureGatherLodOffsetsAMD", EOpTextureGatherLodOffsets); symbolTable.relateToOperator("sparseTextureGatherLodAMD", EOpSparseTextureGatherLod); symbolTable.relateToOperator("sparseTextureGatherLodOffsetAMD", EOpSparseTextureGatherLodOffset); symbolTable.relateToOperator("sparseTextureGatherLodOffsetsAMD", EOpSparseTextureGatherLodOffsets); symbolTable.relateToOperator("imageLoadLodAMD", EOpImageLoadLod); symbolTable.relateToOperator("imageStoreLodAMD", EOpImageStoreLod); symbolTable.relateToOperator("sparseImageLoadLodAMD", EOpSparseImageLoadLod); symbolTable.relateToOperator("fragmentMaskFetchAMD", EOpFragmentMaskFetch); symbolTable.relateToOperator("fragmentFetchAMD", EOpFragmentFetch); } // GL_EXT_integer_dot_product if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 450)) { symbolTable.relateToOperator("dotEXT", EOpDot); symbolTable.relateToOperator("dotPacked4x8EXT", EOpDotPackedEXT); symbolTable.relateToOperator("dotAccSatEXT", EOpDotAccSatEXT); symbolTable.relateToOperator("dotPacked4x8AccSatEXT", EOpDotPackedAccSatEXT); } // GL_EXT_bfloat16 if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) { symbolTable.relateToOperator("bfloat16BitsToIntEXT", EOpFloatBitsToInt); symbolTable.relateToOperator("bfloat16BitsToUintEXT", EOpFloatBitsToUint); symbolTable.relateToOperator("intBitsToBFloat16EXT", EOpIntBitsToFloat); symbolTable.relateToOperator("uintBitsToBFloat16EXT", EOpUintBitsToFloat); symbolTable.relateToOperator("floate5m2BitsToIntEXT", EOpFloatBitsToInt); symbolTable.relateToOperator("floate5m2BitsToUintEXT", EOpFloatBitsToUint); symbolTable.relateToOperator("intBitsToFloate5m2EXT", EOpIntBitsToFloat); symbolTable.relateToOperator("uintBitsToFloate5m2EXT", EOpUintBitsToFloat); symbolTable.relateToOperator("floate4m3BitsToIntEXT", EOpFloatBitsToInt); symbolTable.relateToOperator("floate4m3BitsToUintEXT", EOpFloatBitsToUint); symbolTable.relateToOperator("intBitsToFloate4m3EXT", EOpIntBitsToFloat); symbolTable.relateToOperator("uintBitsToFloate4m3EXT", EOpUintBitsToFloat); symbolTable.relateToOperator("saturatedConvertEXT", EOpConstructSaturated); } // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.relateToOperator("subgroupBarrier", EOpSubgroupBarrier); symbolTable.relateToOperator("subgroupMemoryBarrier", EOpSubgroupMemoryBarrier); symbolTable.relateToOperator("subgroupMemoryBarrierBuffer", EOpSubgroupMemoryBarrierBuffer); symbolTable.relateToOperator("subgroupMemoryBarrierImage", EOpSubgroupMemoryBarrierImage); symbolTable.relateToOperator("subgroupElect", EOpSubgroupElect); symbolTable.relateToOperator("subgroupAll", EOpSubgroupAll); symbolTable.relateToOperator("subgroupAny", EOpSubgroupAny); symbolTable.relateToOperator("subgroupAllEqual", EOpSubgroupAllEqual); symbolTable.relateToOperator("subgroupBroadcast", EOpSubgroupBroadcast); symbolTable.relateToOperator("subgroupBroadcastFirst", EOpSubgroupBroadcastFirst); symbolTable.relateToOperator("subgroupBallot", EOpSubgroupBallot); symbolTable.relateToOperator("subgroupInverseBallot", EOpSubgroupInverseBallot); symbolTable.relateToOperator("subgroupBallotBitExtract", EOpSubgroupBallotBitExtract); symbolTable.relateToOperator("subgroupBallotBitCount", EOpSubgroupBallotBitCount); symbolTable.relateToOperator("subgroupBallotInclusiveBitCount", EOpSubgroupBallotInclusiveBitCount); symbolTable.relateToOperator("subgroupBallotExclusiveBitCount", EOpSubgroupBallotExclusiveBitCount); symbolTable.relateToOperator("subgroupBallotFindLSB", EOpSubgroupBallotFindLSB); symbolTable.relateToOperator("subgroupBallotFindMSB", EOpSubgroupBallotFindMSB); symbolTable.relateToOperator("subgroupShuffle", EOpSubgroupShuffle); symbolTable.relateToOperator("subgroupShuffleXor", EOpSubgroupShuffleXor); symbolTable.relateToOperator("subgroupShuffleUp", EOpSubgroupShuffleUp); symbolTable.relateToOperator("subgroupShuffleDown", EOpSubgroupShuffleDown); symbolTable.relateToOperator("subgroupRotate", EOpSubgroupRotate); symbolTable.relateToOperator("subgroupClusteredRotate", EOpSubgroupClusteredRotate); symbolTable.relateToOperator("subgroupAdd", EOpSubgroupAdd); symbolTable.relateToOperator("subgroupMul", EOpSubgroupMul); symbolTable.relateToOperator("subgroupMin", EOpSubgroupMin); symbolTable.relateToOperator("subgroupMax", EOpSubgroupMax); symbolTable.relateToOperator("subgroupAnd", EOpSubgroupAnd); symbolTable.relateToOperator("subgroupOr", EOpSubgroupOr); symbolTable.relateToOperator("subgroupXor", EOpSubgroupXor); symbolTable.relateToOperator("subgroupInclusiveAdd", EOpSubgroupInclusiveAdd); symbolTable.relateToOperator("subgroupInclusiveMul", EOpSubgroupInclusiveMul); symbolTable.relateToOperator("subgroupInclusiveMin", EOpSubgroupInclusiveMin); symbolTable.relateToOperator("subgroupInclusiveMax", EOpSubgroupInclusiveMax); symbolTable.relateToOperator("subgroupInclusiveAnd", EOpSubgroupInclusiveAnd); symbolTable.relateToOperator("subgroupInclusiveOr", EOpSubgroupInclusiveOr); symbolTable.relateToOperator("subgroupInclusiveXor", EOpSubgroupInclusiveXor); symbolTable.relateToOperator("subgroupExclusiveAdd", EOpSubgroupExclusiveAdd); symbolTable.relateToOperator("subgroupExclusiveMul", EOpSubgroupExclusiveMul); symbolTable.relateToOperator("subgroupExclusiveMin", EOpSubgroupExclusiveMin); symbolTable.relateToOperator("subgroupExclusiveMax", EOpSubgroupExclusiveMax); symbolTable.relateToOperator("subgroupExclusiveAnd", EOpSubgroupExclusiveAnd); symbolTable.relateToOperator("subgroupExclusiveOr", EOpSubgroupExclusiveOr); symbolTable.relateToOperator("subgroupExclusiveXor", EOpSubgroupExclusiveXor); symbolTable.relateToOperator("subgroupClusteredAdd", EOpSubgroupClusteredAdd); symbolTable.relateToOperator("subgroupClusteredMul", EOpSubgroupClusteredMul); symbolTable.relateToOperator("subgroupClusteredMin", EOpSubgroupClusteredMin); symbolTable.relateToOperator("subgroupClusteredMax", EOpSubgroupClusteredMax); symbolTable.relateToOperator("subgroupClusteredAnd", EOpSubgroupClusteredAnd); symbolTable.relateToOperator("subgroupClusteredOr", EOpSubgroupClusteredOr); symbolTable.relateToOperator("subgroupClusteredXor", EOpSubgroupClusteredXor); symbolTable.relateToOperator("subgroupQuadBroadcast", EOpSubgroupQuadBroadcast); symbolTable.relateToOperator("subgroupQuadSwapHorizontal", EOpSubgroupQuadSwapHorizontal); symbolTable.relateToOperator("subgroupQuadSwapVertical", EOpSubgroupQuadSwapVertical); symbolTable.relateToOperator("subgroupQuadSwapDiagonal", EOpSubgroupQuadSwapDiagonal); symbolTable.relateToOperator("subgroupPartitionNV", EOpSubgroupPartition); symbolTable.relateToOperator("subgroupPartitionedAddNV", EOpSubgroupPartitionedAdd); symbolTable.relateToOperator("subgroupPartitionedMulNV", EOpSubgroupPartitionedMul); symbolTable.relateToOperator("subgroupPartitionedMinNV", EOpSubgroupPartitionedMin); symbolTable.relateToOperator("subgroupPartitionedMaxNV", EOpSubgroupPartitionedMax); symbolTable.relateToOperator("subgroupPartitionedAndNV", EOpSubgroupPartitionedAnd); symbolTable.relateToOperator("subgroupPartitionedOrNV", EOpSubgroupPartitionedOr); symbolTable.relateToOperator("subgroupPartitionedXorNV", EOpSubgroupPartitionedXor); symbolTable.relateToOperator("subgroupPartitionedInclusiveAddNV", EOpSubgroupPartitionedInclusiveAdd); symbolTable.relateToOperator("subgroupPartitionedInclusiveMulNV", EOpSubgroupPartitionedInclusiveMul); symbolTable.relateToOperator("subgroupPartitionedInclusiveMinNV", EOpSubgroupPartitionedInclusiveMin); symbolTable.relateToOperator("subgroupPartitionedInclusiveMaxNV", EOpSubgroupPartitionedInclusiveMax); symbolTable.relateToOperator("subgroupPartitionedInclusiveAndNV", EOpSubgroupPartitionedInclusiveAnd); symbolTable.relateToOperator("subgroupPartitionedInclusiveOrNV", EOpSubgroupPartitionedInclusiveOr); symbolTable.relateToOperator("subgroupPartitionedInclusiveXorNV", EOpSubgroupPartitionedInclusiveXor); symbolTable.relateToOperator("subgroupPartitionedExclusiveAddNV", EOpSubgroupPartitionedExclusiveAdd); symbolTable.relateToOperator("subgroupPartitionedExclusiveMulNV", EOpSubgroupPartitionedExclusiveMul); symbolTable.relateToOperator("subgroupPartitionedExclusiveMinNV", EOpSubgroupPartitionedExclusiveMin); symbolTable.relateToOperator("subgroupPartitionedExclusiveMaxNV", EOpSubgroupPartitionedExclusiveMax); symbolTable.relateToOperator("subgroupPartitionedExclusiveAndNV", EOpSubgroupPartitionedExclusiveAnd); symbolTable.relateToOperator("subgroupPartitionedExclusiveOrNV", EOpSubgroupPartitionedExclusiveOr); symbolTable.relateToOperator("subgroupPartitionedExclusiveXorNV", EOpSubgroupPartitionedExclusiveXor); } if (profile == EEsProfile) { symbolTable.relateToOperator("shadow2DEXT", EOpTexture); symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj); } // GL_EXT_shader_quad_control if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.relateToOperator("subgroupQuadAll", EOpSubgroupQuadAll); symbolTable.relateToOperator("subgroupQuadAny", EOpSubgroupQuadAny); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.relateToOperator("textureWeightedQCOM", EOpImageSampleWeightedQCOM); symbolTable.relateToOperator("textureBoxFilterQCOM", EOpImageBoxFilterQCOM); symbolTable.relateToOperator("textureBlockMatchSADQCOM", EOpImageBlockMatchSADQCOM); symbolTable.relateToOperator("textureBlockMatchSSDQCOM", EOpImageBlockMatchSSDQCOM); symbolTable.relateToOperator("textureBlockMatchWindowSSDQCOM", EOpImageBlockMatchWindowSSDQCOM); symbolTable.relateToOperator("textureBlockMatchWindowSADQCOM", EOpImageBlockMatchWindowSADQCOM); symbolTable.relateToOperator("textureBlockMatchGatherSSDQCOM", EOpImageBlockMatchGatherSSDQCOM); symbolTable.relateToOperator("textureBlockMatchGatherSADQCOM", EOpImageBlockMatchGatherSADQCOM); } if (profile != EEsProfile && spvVersion.spv == 0) { symbolTable.relateToOperator("texture1DArray", EOpTexture); symbolTable.relateToOperator("texture2DArray", EOpTexture); symbolTable.relateToOperator("shadow1DArray", EOpTexture); symbolTable.relateToOperator("shadow2DArray", EOpTexture); symbolTable.relateToOperator("texture1DArrayLod", EOpTextureLod); symbolTable.relateToOperator("texture2DArrayLod", EOpTextureLod); symbolTable.relateToOperator("shadow1DArrayLod", EOpTextureLod); } symbolTable.relateToOperator("coopVecMatMulNV", EOpCooperativeVectorMatMulNV); symbolTable.relateToOperator("coopVecMatMulAddNV", EOpCooperativeVectorMatMulAddNV); symbolTable.relateToOperator("coopVecLoadNV", EOpCooperativeVectorLoadNV); symbolTable.relateToOperator("coopVecStoreNV", EOpCooperativeVectorStoreNV); symbolTable.relateToOperator("coopVecOuterProductAccumulateNV", EOpCooperativeVectorOuterProductAccumulateNV); symbolTable.relateToOperator("coopVecReduceSumAccumulateNV", EOpCooperativeVectorReduceSumAccumulateNV); } switch(language) { case EShLangVertex: break; case EShLangTessControl: case EShLangTessEvaluation: break; case EShLangGeometry: symbolTable.relateToOperator("EmitStreamVertex", EOpEmitStreamVertex); symbolTable.relateToOperator("EndStreamPrimitive", EOpEndStreamPrimitive); symbolTable.relateToOperator("EmitVertex", EOpEmitVertex); symbolTable.relateToOperator("EndPrimitive", EOpEndPrimitive); break; case EShLangFragment: if (profile != EEsProfile && version >= 400) { symbolTable.relateToOperator("dFdxFine", EOpDPdxFine); symbolTable.relateToOperator("dFdyFine", EOpDPdyFine); symbolTable.relateToOperator("fwidthFine", EOpFwidthFine); symbolTable.relateToOperator("dFdxCoarse", EOpDPdxCoarse); symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse); symbolTable.relateToOperator("fwidthCoarse", EOpFwidthCoarse); } if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("rayQueryInitializeEXT", EOpRayQueryInitialize); symbolTable.relateToOperator("rayQueryTerminateEXT", EOpRayQueryTerminate); symbolTable.relateToOperator("rayQueryGenerateIntersectionEXT", EOpRayQueryGenerateIntersection); symbolTable.relateToOperator("rayQueryConfirmIntersectionEXT", EOpRayQueryConfirmIntersection); symbolTable.relateToOperator("rayQueryProceedEXT", EOpRayQueryProceed); symbolTable.relateToOperator("rayQueryGetIntersectionTypeEXT", EOpRayQueryGetIntersectionType); symbolTable.relateToOperator("rayQueryGetRayTMinEXT", EOpRayQueryGetRayTMin); symbolTable.relateToOperator("rayQueryGetRayFlagsEXT", EOpRayQueryGetRayFlags); symbolTable.relateToOperator("rayQueryGetIntersectionTEXT", EOpRayQueryGetIntersectionT); symbolTable.relateToOperator("rayQueryGetIntersectionInstanceCustomIndexEXT", EOpRayQueryGetIntersectionInstanceCustomIndex); symbolTable.relateToOperator("rayQueryGetIntersectionInstanceIdEXT", EOpRayQueryGetIntersectionInstanceId); symbolTable.relateToOperator("rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT", EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset); symbolTable.relateToOperator("rayQueryGetIntersectionGeometryIndexEXT", EOpRayQueryGetIntersectionGeometryIndex); symbolTable.relateToOperator("rayQueryGetIntersectionPrimitiveIndexEXT", EOpRayQueryGetIntersectionPrimitiveIndex); symbolTable.relateToOperator("rayQueryGetIntersectionBarycentricsEXT", EOpRayQueryGetIntersectionBarycentrics); symbolTable.relateToOperator("rayQueryGetIntersectionFrontFaceEXT", EOpRayQueryGetIntersectionFrontFace); symbolTable.relateToOperator("rayQueryGetIntersectionCandidateAABBOpaqueEXT", EOpRayQueryGetIntersectionCandidateAABBOpaque); symbolTable.relateToOperator("rayQueryGetIntersectionObjectRayDirectionEXT", EOpRayQueryGetIntersectionObjectRayDirection); symbolTable.relateToOperator("rayQueryGetIntersectionObjectRayOriginEXT", EOpRayQueryGetIntersectionObjectRayOrigin); symbolTable.relateToOperator("rayQueryGetWorldRayDirectionEXT", EOpRayQueryGetWorldRayDirection); symbolTable.relateToOperator("rayQueryGetWorldRayOriginEXT", EOpRayQueryGetWorldRayOrigin); symbolTable.relateToOperator("rayQueryGetIntersectionObjectToWorldEXT", EOpRayQueryGetIntersectionObjectToWorld); symbolTable.relateToOperator("rayQueryGetIntersectionWorldToObjectEXT", EOpRayQueryGetIntersectionWorldToObject); symbolTable.relateToOperator("rayQueryGetIntersectionTriangleVertexPositionsEXT", EOpRayQueryGetIntersectionTriangleVertexPositionsEXT); symbolTable.relateToOperator("rayQueryGetIntersectionClusterIdNV", EOpRayQueryGetIntersectionClusterIdNV); symbolTable.relateToOperator("rayQueryGetIntersectionSpherePositionNV", EOpRayQueryGetIntersectionSpherePositionNV); symbolTable.relateToOperator("rayQueryGetIntersectionSphereRadiusNV", EOpRayQueryGetIntersectionSphereRadiusNV); symbolTable.relateToOperator("rayQueryGetIntersectionLSSHitValueNV", EOpRayQueryGetIntersectionLSSHitValueNV); symbolTable.relateToOperator("rayQueryGetIntersectionLSSPositionsNV", EOpRayQueryGetIntersectionLSSPositionsNV); symbolTable.relateToOperator("rayQueryGetIntersectionLSSRadiiNV", EOpRayQueryGetIntersectionLSSRadiiNV); symbolTable.relateToOperator("rayQueryIsSphereHitNV", EOpRayQueryIsSphereHitNV); symbolTable.relateToOperator("rayQueryIsLSSHitNV", EOpRayQueryIsLSSHitNV); } symbolTable.relateToOperator("interpolateAtCentroid", EOpInterpolateAtCentroid); symbolTable.relateToOperator("interpolateAtSample", EOpInterpolateAtSample); symbolTable.relateToOperator("interpolateAtOffset", EOpInterpolateAtOffset); if (profile != EEsProfile) symbolTable.relateToOperator("interpolateAtVertexAMD", EOpInterpolateAtVertex); symbolTable.relateToOperator("beginInvocationInterlockARB", EOpBeginInvocationInterlock); symbolTable.relateToOperator("endInvocationInterlockARB", EOpEndInvocationInterlock); symbolTable.relateToOperator("stencilAttachmentReadEXT", EOpStencilAttachmentReadEXT); symbolTable.relateToOperator("depthAttachmentReadEXT", EOpDepthAttachmentReadEXT); symbolTable.relateToOperator("colorAttachmentReadEXT", EOpColorAttachmentReadEXT); break; case EShLangCompute: symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.relateToOperator("dFdx", EOpDPdx); symbolTable.relateToOperator("dFdy", EOpDPdy); symbolTable.relateToOperator("fwidth", EOpFwidth); symbolTable.relateToOperator("dFdxFine", EOpDPdxFine); symbolTable.relateToOperator("dFdyFine", EOpDPdyFine); symbolTable.relateToOperator("fwidthFine", EOpFwidthFine); symbolTable.relateToOperator("dFdxCoarse", EOpDPdxCoarse); symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse); symbolTable.relateToOperator("fwidthCoarse",EOpFwidthCoarse); } symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoadNV); symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStoreNV); symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAddNV); symbolTable.relateToOperator("coopMatLoad", EOpCooperativeMatrixLoad); symbolTable.relateToOperator("coopMatStore", EOpCooperativeMatrixStore); symbolTable.relateToOperator("coopMatMulAdd", EOpCooperativeMatrixMulAdd); symbolTable.relateToOperator("coopMatLoadTensorNV", EOpCooperativeMatrixLoadTensorNV); symbolTable.relateToOperator("coopMatStoreTensorNV", EOpCooperativeMatrixStoreTensorNV); symbolTable.relateToOperator("coopMatReduceNV", EOpCooperativeMatrixReduceNV); symbolTable.relateToOperator("coopMatPerElementNV", EOpCooperativeMatrixPerElementOpNV); symbolTable.relateToOperator("coopMatTransposeNV", EOpCooperativeMatrixTransposeNV); symbolTable.relateToOperator("createTensorLayoutNV", EOpCreateTensorLayoutNV); symbolTable.relateToOperator("setTensorLayoutBlockSizeNV", EOpTensorLayoutSetBlockSizeNV); symbolTable.relateToOperator("setTensorLayoutDimensionNV", EOpTensorLayoutSetDimensionNV); symbolTable.relateToOperator("setTensorLayoutStrideNV", EOpTensorLayoutSetStrideNV); symbolTable.relateToOperator("sliceTensorLayoutNV", EOpTensorLayoutSliceNV); symbolTable.relateToOperator("setTensorLayoutClampValueNV", EOpTensorLayoutSetClampValueNV); symbolTable.relateToOperator("createTensorViewNV", EOpCreateTensorViewNV); symbolTable.relateToOperator("setTensorViewDimensionsNV", EOpTensorViewSetDimensionNV); symbolTable.relateToOperator("setTensorViewStrideNV", EOpTensorViewSetStrideNV); symbolTable.relateToOperator("setTensorViewClipNV", EOpTensorViewSetClipNV); symbolTable.relateToOperator("tensorReadARM", EOpTensorReadARM); symbolTable.relateToOperator("tensorWriteARM", EOpTensorWriteARM); symbolTable.relateToOperator("tensorSizeARM", EOpTensorSizeARM); symbolTable.relateToOperator("bitcastQCOM", EOpBitCastArrayQCOM); symbolTable.relateToOperator("extractSubArrayQCOM", EOpExtractSubArrayQCOM); symbolTable.relateToOperator("vectorToCoopmatQCOM", EOpCompositeConstructCoopMatQCOM); symbolTable.relateToOperator("coopmatToVectorQCOM", EOpCompositeExtractCoopMatQCOM); if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("fetchMicroTriangleVertexPositionNV", EOpFetchMicroTriangleVertexPositionNV); symbolTable.relateToOperator("fetchMicroTriangleVertexBarycentricNV", EOpFetchMicroTriangleVertexBarycentricNV); } break; case EShLangRayGen: if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("fetchMicroTriangleVertexPositionNV", EOpFetchMicroTriangleVertexPositionNV); symbolTable.relateToOperator("fetchMicroTriangleVertexBarycentricNV", EOpFetchMicroTriangleVertexBarycentricNV); } [[fallthrough]]; case EShLangClosestHit: case EShLangMiss: if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("traceNV", EOpTraceNV); symbolTable.relateToOperator("traceRayMotionNV", EOpTraceRayMotionNV); symbolTable.relateToOperator("traceRayEXT", EOpTraceKHR); symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV); symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); symbolTable.relateToOperator("hitObjectTraceRayNV", EOpHitObjectTraceRayNV); symbolTable.relateToOperator("hitObjectTraceRayMotionNV", EOpHitObjectTraceRayMotionNV); symbolTable.relateToOperator("hitObjectRecordHitNV", EOpHitObjectRecordHitNV); symbolTable.relateToOperator("hitObjectRecordHitMotionNV", EOpHitObjectRecordHitMotionNV); symbolTable.relateToOperator("hitObjectRecordHitWithIndexNV", EOpHitObjectRecordHitWithIndexNV); symbolTable.relateToOperator("hitObjectRecordHitWithIndexMotionNV", EOpHitObjectRecordHitWithIndexMotionNV); symbolTable.relateToOperator("hitObjectRecordMissNV", EOpHitObjectRecordMissNV); symbolTable.relateToOperator("hitObjectRecordMissMotionNV", EOpHitObjectRecordMissMotionNV); symbolTable.relateToOperator("hitObjectRecordEmptyNV", EOpHitObjectRecordEmptyNV); symbolTable.relateToOperator("hitObjectExecuteShaderNV", EOpHitObjectExecuteShaderNV); symbolTable.relateToOperator("hitObjectIsEmptyNV", EOpHitObjectIsEmptyNV); symbolTable.relateToOperator("hitObjectIsMissNV", EOpHitObjectIsMissNV); symbolTable.relateToOperator("hitObjectIsHitNV", EOpHitObjectIsHitNV); symbolTable.relateToOperator("hitObjectGetRayTMinNV", EOpHitObjectGetRayTMinNV); symbolTable.relateToOperator("hitObjectGetRayTMaxNV", EOpHitObjectGetRayTMaxNV); symbolTable.relateToOperator("hitObjectGetObjectRayOriginNV", EOpHitObjectGetObjectRayOriginNV); symbolTable.relateToOperator("hitObjectGetObjectRayDirectionNV", EOpHitObjectGetObjectRayDirectionNV); symbolTable.relateToOperator("hitObjectGetWorldRayOriginNV", EOpHitObjectGetWorldRayOriginNV); symbolTable.relateToOperator("hitObjectGetWorldRayDirectionNV", EOpHitObjectGetWorldRayDirectionNV); symbolTable.relateToOperator("hitObjectGetWorldToObjectNV", EOpHitObjectGetWorldToObjectNV); symbolTable.relateToOperator("hitObjectGetObjectToWorldNV", EOpHitObjectGetObjectToWorldNV); symbolTable.relateToOperator("hitObjectGetInstanceCustomIndexNV", EOpHitObjectGetInstanceCustomIndexNV); symbolTable.relateToOperator("hitObjectGetInstanceIdNV", EOpHitObjectGetInstanceIdNV); symbolTable.relateToOperator("hitObjectGetGeometryIndexNV", EOpHitObjectGetGeometryIndexNV); symbolTable.relateToOperator("hitObjectGetPrimitiveIndexNV", EOpHitObjectGetPrimitiveIndexNV); symbolTable.relateToOperator("hitObjectGetHitKindNV", EOpHitObjectGetHitKindNV); symbolTable.relateToOperator("hitObjectGetAttributesNV", EOpHitObjectGetAttributesNV); symbolTable.relateToOperator("hitObjectGetCurrentTimeNV", EOpHitObjectGetCurrentTimeNV); symbolTable.relateToOperator("hitObjectGetShaderBindingTableRecordIndexNV", EOpHitObjectGetShaderBindingTableRecordIndexNV); symbolTable.relateToOperator("hitObjectGetShaderRecordBufferHandleNV", EOpHitObjectGetShaderRecordBufferHandleNV); symbolTable.relateToOperator("hitObjectGetClusterIdNV", EOpHitObjectGetClusterIdNV); symbolTable.relateToOperator("reorderThreadNV", EOpReorderThreadNV); symbolTable.relateToOperator("hitObjectGetSpherePositionNV", EOpHitObjectGetSpherePositionNV); symbolTable.relateToOperator("hitObjectGetSphereRadiusNV", EOpHitObjectGetSphereRadiusNV); symbolTable.relateToOperator("hitObjectGetLSSPositionsNV", EOpHitObjectGetLSSPositionsNV); symbolTable.relateToOperator("hitObjectGetLSSRadiiNV", EOpHitObjectGetLSSRadiiNV); symbolTable.relateToOperator("hitObjectIsSphereHitNV", EOpHitObjectIsSphereHitNV); symbolTable.relateToOperator("hitObjectIsLSSHitNV", EOpHitObjectIsLSSHitNV); } break; case EShLangIntersect: if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersection); symbolTable.relateToOperator("reportIntersectionEXT", EOpReportIntersection); } break; case EShLangAnyHit: if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersectionNV); symbolTable.relateToOperator("terminateRayNV", EOpTerminateRayNV); } break; case EShLangCallable: if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV); symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); } break; 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); } if (profile != EEsProfile && version >= 450) { symbolTable.relateToOperator("SetMeshOutputsEXT", EOpSetMeshOutputsEXT); } if (profile != EEsProfile && version >= 460) { // Builtins for GL_NV_displacement_micromap. symbolTable.relateToOperator("fetchMicroTriangleVertexPositionNV", EOpFetchMicroTriangleVertexPositionNV); symbolTable.relateToOperator("fetchMicroTriangleVertexBarycentricNV", EOpFetchMicroTriangleVertexBarycentricNV); } 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: assert(false && "Language not supported"); } } // // Add context-dependent (resource-specific) built-ins not handled by the above. These // would be ones that need to be programmatically added because they cannot // be added by simple text strings. For these, also // 1) Map built-in functions to operators, for those that will turn into an operation node // instead of remaining a function call. // 2) Tag extension-related symbols added to their base version with their extensions, so // that if an early version has the extension turned off, there is an error reported on use. // void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) { if (profile != EEsProfile && version >= 430 && version < 440) { symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts); symbolTable.setVariableExtensions("gl_MaxTransformFeedbackInterleavedComponents", 1, &E_GL_ARB_enhanced_layouts); } if (profile != EEsProfile && version >= 130 && version < 420) { symbolTable.setVariableExtensions("gl_MinProgramTexelOffset", 1, &E_GL_ARB_shading_language_420pack); symbolTable.setVariableExtensions("gl_MaxProgramTexelOffset", 1, &E_GL_ARB_shading_language_420pack); } if (profile != EEsProfile && version >= 150 && version < 410) symbolTable.setVariableExtensions("gl_MaxViewports", 1, &E_GL_ARB_viewport_array); switch(language) { case EShLangFragment: // Set up gl_FragData based on current array size. if (version == 100 || IncludeLegacy(version, profile, spvVersion) || (! ForwardCompatibility && profile != EEsProfile && version < 420)) { TPrecisionQualifier pq = profile == EEsProfile ? EpqMedium : EpqNone; TType fragData(EbtFloat, EvqFragColor, pq, 4); TArraySizes* arraySizes = new TArraySizes; arraySizes->addInnerSize(resources.maxDrawBuffers); fragData.transferArraySizes(arraySizes); symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData"), fragData)); SpecialQualifier("gl_FragData", EvqFragColor, EbvFragData, symbolTable); } // GL_EXT_blend_func_extended if (profile == EEsProfile && version >= 100) { symbolTable.setVariableExtensions("gl_MaxDualSourceDrawBuffersEXT", 1, &E_GL_EXT_blend_func_extended); symbolTable.setVariableExtensions("gl_SecondaryFragColorEXT", 1, &E_GL_EXT_blend_func_extended); symbolTable.setVariableExtensions("gl_SecondaryFragDataEXT", 1, &E_GL_EXT_blend_func_extended); SpecialQualifier("gl_SecondaryFragColorEXT", EvqVaryingOut, EbvSecondaryFragColorEXT, symbolTable); SpecialQualifier("gl_SecondaryFragDataEXT", EvqVaryingOut, EbvSecondaryFragDataEXT, symbolTable); } break; case EShLangTessControl: case EShLangTessEvaluation: // Because of the context-dependent array size (gl_MaxPatchVertices), // these variables were added later than the others and need to be mapped now. // standard members BuiltInVariable("gl_in", "gl_Position", EbvPosition, symbolTable); BuiltInVariable("gl_in", "gl_PointSize", EbvPointSize, symbolTable); BuiltInVariable("gl_in", "gl_ClipDistance", EbvClipDistance, symbolTable); BuiltInVariable("gl_in", "gl_CullDistance", EbvCullDistance, symbolTable); // compatibility members BuiltInVariable("gl_in", "gl_ClipVertex", EbvClipVertex, symbolTable); BuiltInVariable("gl_in", "gl_FrontColor", EbvFrontColor, symbolTable); BuiltInVariable("gl_in", "gl_BackColor", EbvBackColor, symbolTable); BuiltInVariable("gl_in", "gl_FrontSecondaryColor", EbvFrontSecondaryColor, symbolTable); BuiltInVariable("gl_in", "gl_BackSecondaryColor", EbvBackSecondaryColor, symbolTable); BuiltInVariable("gl_in", "gl_TexCoord", EbvTexCoord, symbolTable); BuiltInVariable("gl_in", "gl_FogFragCoord", EbvFogFragCoord, symbolTable); symbolTable.setVariableExtensions("gl_in", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_in", "gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable); BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); // extension requirements if (profile == EEsProfile) { symbolTable.setVariableExtensions("gl_in", "gl_PointSize", Num_AEP_tessellation_point_size, AEP_tessellation_point_size); } break; default: break; } } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/Initialize.h000066400000000000000000000125631506534232700226660ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013-2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _INITIALIZE_INCLUDED_ #define _INITIALIZE_INCLUDED_ #include "../Include/ResourceLimits.h" #include "../Include/Common.h" #include "../Include/ShHandle.h" #include "SymbolTable.h" #include "Versions.h" namespace glslang { // // This is made to hold parseable strings for almost all the built-in // functions and variables for one specific combination of version // and profile. (Some still need to be added programmatically.) // This is a base class for language-specific derivations, which // can be used for language independent builtins. // // The strings are organized by // commonBuiltins: intersection of all stages' built-ins, processed just once // stageBuiltins[]: anything a stage needs that's not in commonBuiltins // class TBuiltInParseables { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TBuiltInParseables(); virtual ~TBuiltInParseables(); virtual void initialize(int version, EProfile, const SpvVersion& spvVersion) = 0; virtual void initialize(const TBuiltInResource& resources, int version, EProfile, const SpvVersion& spvVersion, EShLanguage) = 0; virtual const TString& getCommonString() const { return commonBuiltins; } virtual const TString& getStageString(EShLanguage language) const { return stageBuiltins[language]; } virtual void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable) = 0; virtual void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) = 0; protected: TString commonBuiltins; TString stageBuiltins[EShLangCount]; }; // // This is a GLSL specific derivation of TBuiltInParseables. To present a stable // interface and match other similar code, it is called TBuiltIns, rather // than TBuiltInParseablesGlsl. // class TBuiltIns : public TBuiltInParseables { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TBuiltIns(); virtual ~TBuiltIns(); void initialize(int version, EProfile, const SpvVersion& spvVersion); void initialize(const TBuiltInResource& resources, int version, EProfile, const SpvVersion& spvVersion, EShLanguage); void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable); void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources); protected: void addTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion); void relateTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage, TSymbolTable&); void add2ndGenerationSamplingImaging(int version, EProfile profile, const SpvVersion& spvVersion); void addSubpassSampling(TSampler, const TString& typeName, int version, EProfile profile); void addQueryFunctions(TSampler, const TString& typeName, int version, EProfile profile); void addImageFunctions(TSampler, const TString& typeName, int version, EProfile profile); void addSamplingFunctions(TSampler, const TString& typeName, int version, EProfile profile); void addGatherFunctions(TSampler, const TString& typeName, int version, EProfile profile); // Helpers for making textual representations of the permutations // of texturing/imaging functions. const char* postfixes[5]; const char* prefixes[EbtNumTypes]; int dimMap[EsdNumDims]; }; // change this back to false if depending on textual spellings of texturing calls when consuming the AST // Using PureOperatorBuiltins=false is deprecated. constexpr bool PureOperatorBuiltins = true; } // end namespace glslang #endif // _INITIALIZE_INCLUDED_ glslang-16.0.0/glslang/MachineIndependent/IntermTraverse.cpp000066400000000000000000000176241506534232700240750ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (c) 2002-2010 The ANGLE Project Authors. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "../Include/intermediate.h" namespace glslang { // // Traverse the intermediate representation tree, and // call a node type specific function for each node. // Done recursively through the member function Traverse(). // Node types can be skipped if their function to call is 0, // but their subtree will still be traversed. // Nodes with children can have their whole subtree skipped // if preVisit is turned on and the type specific function // returns false. // // preVisit, postVisit, and rightToLeft control what order // nodes are visited in. // // // Traversal functions for terminals are straightforward.... // void TIntermMethod::traverse(TIntermTraverser*) { // Tree should always resolve all methods as a non-method. } void TIntermSymbol::traverse(TIntermTraverser *it) { it->visitSymbol(this); } void TIntermConstantUnion::traverse(TIntermTraverser *it) { it->visitConstantUnion(this); } const TString& TIntermSymbol::getAccessName() const { if (getBasicType() == EbtBlock) return getType().getTypeName(); else return getName(); } // // Traverse a binary node. // void TIntermBinary::traverse(TIntermTraverser *it) { bool visit = true; // // visit the node before children if pre-visiting. // if (it->preVisit) visit = it->visitBinary(EvPreVisit, this); // // Visit the children, in the right order. // if (visit) { it->incrementDepth(this); if (it->rightToLeft) { if (right) right->traverse(it); if (it->inVisit) visit = it->visitBinary(EvInVisit, this); if (visit && left) left->traverse(it); } else { if (left) left->traverse(it); if (it->inVisit) visit = it->visitBinary(EvInVisit, this); if (visit && right) right->traverse(it); } it->decrementDepth(); } // // Visit the node after the children, if requested and the traversal // hasn't been canceled yet. // if (visit && it->postVisit) it->visitBinary(EvPostVisit, this); } // // Traverse a unary node. Same comments in binary node apply here. // void TIntermUnary::traverse(TIntermTraverser *it) { bool visit = true; if (it->preVisit) visit = it->visitUnary(EvPreVisit, this); if (visit) { it->incrementDepth(this); operand->traverse(it); it->decrementDepth(); } if (visit && it->postVisit) it->visitUnary(EvPostVisit, this); } // // Traverse an aggregate node. Same comments in binary node apply here. // void TIntermAggregate::traverse(TIntermTraverser *it) { bool visit = true; if (it->preVisit) visit = it->visitAggregate(EvPreVisit, this); if (visit) { it->incrementDepth(this); if (it->rightToLeft) { for (TIntermSequence::reverse_iterator sit = sequence.rbegin(); sit != sequence.rend(); sit++) { (*sit)->traverse(it); if (visit && it->inVisit) { if (*sit != sequence.front()) visit = it->visitAggregate(EvInVisit, this); } } } else { for (TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); sit++) { (*sit)->traverse(it); if (visit && it->inVisit) { if (*sit != sequence.back()) visit = it->visitAggregate(EvInVisit, this); } } } it->decrementDepth(); } if (visit && it->postVisit) it->visitAggregate(EvPostVisit, this); } // // Traverse a selection node. Same comments in binary node apply here. // void TIntermSelection::traverse(TIntermTraverser *it) { bool visit = true; if (it->preVisit) visit = it->visitSelection(EvPreVisit, this); if (visit) { it->incrementDepth(this); if (it->rightToLeft) { if (falseBlock) falseBlock->traverse(it); if (trueBlock) trueBlock->traverse(it); condition->traverse(it); } else { condition->traverse(it); if (trueBlock) trueBlock->traverse(it); if (falseBlock) falseBlock->traverse(it); } it->decrementDepth(); } if (visit && it->postVisit) it->visitSelection(EvPostVisit, this); } // // Traverse a loop node. Same comments in binary node apply here. // void TIntermLoop::traverse(TIntermTraverser *it) { bool visit = true; if (it->preVisit) visit = it->visitLoop(EvPreVisit, this); if (visit) { it->incrementDepth(this); if (it->rightToLeft) { if (terminal) terminal->traverse(it); if (body) body->traverse(it); if (test) test->traverse(it); } else { if (test) test->traverse(it); if (body) body->traverse(it); if (terminal) terminal->traverse(it); } it->decrementDepth(); } if (visit && it->postVisit) it->visitLoop(EvPostVisit, this); } // // Traverse a branch node. Same comments in binary node apply here. // void TIntermBranch::traverse(TIntermTraverser *it) { bool visit = true; if (it->preVisit) visit = it->visitBranch(EvPreVisit, this); if (visit && expression) { it->incrementDepth(this); expression->traverse(it); it->decrementDepth(); } if (visit && it->postVisit) it->visitBranch(EvPostVisit, this); } // // Traverse a switch node. // void TIntermSwitch::traverse(TIntermTraverser* it) { bool visit = true; if (it->preVisit) visit = it->visitSwitch(EvPreVisit, this); if (visit) { it->incrementDepth(this); if (it->rightToLeft) { body->traverse(it); condition->traverse(it); } else { condition->traverse(it); body->traverse(it); } it->decrementDepth(); } if (visit && it->postVisit) it->visitSwitch(EvPostVisit, this); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/Intermediate.cpp000066400000000000000000004105441506534232700235330ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2015 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017 ARM Limited. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Build the intermediate representation. // #include "localintermediate.h" #include "RemoveTree.h" #include "SymbolTable.h" #include "propagateNoContraction.h" #include #include #include #include namespace glslang { //////////////////////////////////////////////////////////////////////////// // // First set of functions are to help build the intermediate representation. // These functions are not member functions of the nodes. // They are called from parser productions. // ///////////////////////////////////////////////////////////////////////////// // // Add a terminal node for an identifier in an expression. // // Returns the added node. // TIntermSymbol* TIntermediate::addSymbol(long long id, const TString& name, const TString& mangledName, const TType& type, const TConstUnionArray& constArray, TIntermTyped* constSubtree, const TSourceLoc& loc) { TIntermSymbol* node = new TIntermSymbol(id, name, getStage(), type, &mangledName); node->setLoc(loc); node->setConstArray(constArray); node->setConstSubtree(constSubtree); return node; } TIntermSymbol* TIntermediate::addSymbol(const TIntermSymbol& intermSymbol) { return addSymbol(intermSymbol.getId(), intermSymbol.getName(), intermSymbol.getMangledName(), intermSymbol.getType(), intermSymbol.getConstArray(), intermSymbol.getConstSubtree(), intermSymbol.getLoc()); } TIntermSymbol* TIntermediate::addSymbol(const TVariable& variable) { glslang::TSourceLoc loc; // just a null location loc.init(); return addSymbol(variable, loc); } TIntermSymbol* TIntermediate::addSymbol(const TVariable& variable, const TSourceLoc& loc) { return addSymbol(variable.getUniqueId(), variable.getName(), variable.getMangledName(), variable.getType(), variable.getConstArray(), variable.getConstSubtree(), loc); } TIntermSymbol* TIntermediate::addSymbol(const TType& type, const TSourceLoc& loc) { TConstUnionArray unionArray; // just a null constant return addSymbol(0, "", "", type, unionArray, nullptr, loc); } // // Connect two nodes with a new parent that does a binary operation on the nodes. // // Returns the added node. // // Returns nullptr if the working conversions and promotions could not be found. // TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& loc) { // No operations work on blocks if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock) return nullptr; // Convert "reference +/- int" and "reference - reference" to integer math if (op == EOpAdd || op == EOpSub) { // No addressing math on struct with unsized array. if ((left->isReference() && left->getType().getReferentType()->containsUnsizedArray()) || (right->isReference() && right->getType().getReferentType()->containsUnsizedArray())) { return nullptr; } if (left->isReference() && isTypeInt(right->getBasicType())) { const TType& referenceType = left->getType(); TIntermConstantUnion* size = addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(left->getType()), loc, true); left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64)); right = createConversion(EbtInt64, right); right = addBinaryMath(EOpMul, right, size, loc); TIntermTyped *node = addBinaryMath(op, left, right, loc); node = addBuiltInFunctionCall(loc, EOpConvUint64ToPtr, true, node, referenceType); return node; } } if (op == EOpAdd && right->isReference() && isTypeInt(left->getBasicType())) { const TType& referenceType = right->getType(); TIntermConstantUnion* size = addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(right->getType()), loc, true); right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64)); left = createConversion(EbtInt64, left); left = addBinaryMath(EOpMul, left, size, loc); TIntermTyped *node = addBinaryMath(op, left, right, loc); node = addBuiltInFunctionCall(loc, EOpConvUint64ToPtr, true, node, referenceType); return node; } if (op == EOpSub && left->isReference() && right->isReference()) { TIntermConstantUnion* size = addConstantUnion((long long)computeBufferReferenceTypeSize(left->getType()), loc, true); left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64)); right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64)); left = addBuiltInFunctionCall(loc, EOpConvNumeric, true, left, TType(EbtInt64)); right = addBuiltInFunctionCall(loc, EOpConvNumeric, true, right, TType(EbtInt64)); left = addBinaryMath(EOpSub, left, right, loc); TIntermTyped *node = addBinaryMath(EOpDiv, left, size, loc); return node; } // No other math operators supported on references if (left->isReference() || right->isReference()) return nullptr; // Try converting the children's base types to compatible types. auto children = addPairConversion(op, left, right); left = std::get<0>(children); right = std::get<1>(children); if (left == nullptr || right == nullptr) return nullptr; // Convert the children's type shape to be compatible. addBiShapeConversion(op, left, right); if (left == nullptr || right == nullptr) return nullptr; // // Need a new node holding things together. Make // one and promote it to the right type. // TIntermBinary* node = addBinaryNode(op, left, right, loc); if (! promote(node)) return nullptr; node->updatePrecision(); // // If they are both (non-specialization) constants, they must be folded. // (Unless it's the sequence (comma) operator, but that's handled in addComma().) // TIntermConstantUnion *leftTempConstant = node->getLeft()->getAsConstantUnion(); TIntermConstantUnion *rightTempConstant = node->getRight()->getAsConstantUnion(); if (leftTempConstant && rightTempConstant) { TIntermTyped* folded = leftTempConstant->fold(node->getOp(), rightTempConstant); if (folded) return folded; } // If can propagate spec-constantness and if the operation is an allowed // specialization-constant operation, make a spec-constant. if (specConstantPropagates(*node->getLeft(), *node->getRight()) && isSpecializationOperation(*node)) node->getWritableType().getQualifier().makeSpecConstant(); // If must propagate nonuniform, make a nonuniform. if ((node->getLeft()->getQualifier().isNonUniform() || node->getRight()->getQualifier().isNonUniform()) && isNonuniformPropagating(node->getOp())) node->getWritableType().getQualifier().nonUniform = true; return node; } // // Low level: add binary node (no promotions or other argument modifications) // TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& loc) const { // build the node TIntermBinary* node = new TIntermBinary(op); node->setLoc(loc.line != 0 ? loc : left->getLoc()); node->setLeft(left); node->setRight(right); return node; } // // like non-type form, but sets node's type. // TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& loc, const TType& type) const { TIntermBinary* node = addBinaryNode(op, left, right, loc); node->setType(type); return node; } // // Low level: add unary node (no promotions or other argument modifications) // TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc& loc) const { TIntermUnary* node = new TIntermUnary(op); node->setLoc(loc.line != 0 ? loc : child->getLoc()); node->setOperand(child); return node; } // // like non-type form, but sets node's type. // TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc& loc, const TType& type) const { TIntermUnary* node = addUnaryNode(op, child, loc); node->setType(type); return node; } // // Connect two nodes through an assignment. // // Returns the added node. // // Returns nullptr if the 'right' type could not be converted to match the 'left' type, // or the resulting operation cannot be properly promoted. // TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& loc) { // No block assignment if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock) return nullptr; // Convert "reference += int" to "reference = reference + int". We need this because the // "reference + int" calculation involves a cast back to the original type, which makes it // not an lvalue. if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference()) { if (!(right->getType().isScalar() && right->getType().isIntegerDomain())) return nullptr; TIntermTyped* node = addBinaryMath(op == EOpAddAssign ? EOpAdd : EOpSub, left, right, loc); if (!node) return nullptr; TIntermSymbol* symbol = left->getAsSymbolNode(); left = addSymbol(*symbol); node = addAssign(EOpAssign, left, node, loc); return node; } // // Like adding binary math, except the conversion can only go // from right to left. // // convert base types, nullptr return means not possible right = addConversion(op, left->getType(), right); if (right == nullptr) return nullptr; // convert shape right = addUniShapeConversion(op, left->getType(), right); // build the node TIntermBinary* node = addBinaryNode(op, left, right, loc); if (! promote(node)) return nullptr; node->updatePrecision(); return node; } // // Connect two nodes through an index operator, where the left node is the base // of an array or struct, and the right node is a direct or indirect offset. // // Returns the added node. // The caller should set the type of the returned node. // TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, const TSourceLoc& loc) { // caller should set the type return addBinaryNode(op, base, index, loc); } // // Add one node as the parent of another that it operates on. // // Returns the added node. // TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, const TSourceLoc& loc) { if (child == nullptr) return nullptr; if (child->getType().getBasicType() == EbtBlock) return nullptr; switch (op) { case EOpLogicalNot: if (getSource() == EShSourceHlsl) { break; // HLSL can promote logical not } if (child->getType().getBasicType() != EbtBool || child->getType().isMatrix() || child->getType().isArray() || child->getType().isVector()) { return nullptr; } break; case EOpPostIncrement: case EOpPreIncrement: case EOpPostDecrement: case EOpPreDecrement: case EOpNegative: if (child->getType().getBasicType() == EbtStruct || child->getType().isArray()) return nullptr; break; default: break; // some compilers want this } // // Do we need to promote the operand? // TBasicType newType = EbtVoid; switch (op) { case EOpConstructBool: newType = EbtBool; break; case EOpConstructFloat: newType = EbtFloat; break; case EOpConstructInt: newType = EbtInt; break; case EOpConstructUint: newType = EbtUint; break; case EOpConstructInt8: newType = EbtInt8; break; case EOpConstructUint8: newType = EbtUint8; break; case EOpConstructInt16: newType = EbtInt16; break; case EOpConstructUint16: newType = EbtUint16; break; case EOpConstructInt64: newType = EbtInt64; break; case EOpConstructUint64: newType = EbtUint64; break; case EOpConstructDouble: newType = EbtDouble; break; case EOpConstructFloat16: newType = EbtFloat16; break; case EOpConstructBFloat16: newType = EbtBFloat16; break; case EOpConstructFloatE4M3: newType = EbtFloatE4M3; break; case EOpConstructFloatE5M2: newType = EbtFloatE5M2; break; default: break; // some compilers want this } if (newType != EbtVoid) { child = addConversion(op, TType(newType, EvqTemporary, child->getVectorSize(), child->getMatrixCols(), child->getMatrixRows(), child->isVector()), child); if (child == nullptr) return nullptr; } // // For constructors, we are now done, it was all in the conversion. // TODO: but, did this bypass constant folding? // switch (op) { case EOpConstructInt8: case EOpConstructUint8: case EOpConstructInt16: case EOpConstructUint16: case EOpConstructInt: case EOpConstructUint: case EOpConstructInt64: case EOpConstructUint64: case EOpConstructBool: case EOpConstructFloat: case EOpConstructDouble: case EOpConstructFloat16: case EOpConstructBFloat16: case EOpConstructFloatE5M2: case EOpConstructFloatE4M3: { TIntermUnary* unary_node = child->getAsUnaryNode(); if (unary_node != nullptr) unary_node->updatePrecision(); return child; } default: break; // some compilers want this } // // Make a new node for the operator. // TIntermUnary* node = addUnaryNode(op, child, loc); if (! promote(node)) return nullptr; node->updatePrecision(); // If it's a (non-specialization) constant, it must be folded. if (node->getOperand()->getAsConstantUnion()) return node->getOperand()->getAsConstantUnion()->fold(op, node->getType()); // If it's a specialization constant, the result is too, // if the operation is allowed for specialization constants. if (node->getOperand()->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*node)) node->getWritableType().getQualifier().makeSpecConstant(); // If must propagate nonuniform, make a nonuniform. if (node->getOperand()->getQualifier().isNonUniform() && isNonuniformPropagating(node->getOp())) node->getWritableType().getQualifier().nonUniform = true; return node; } TIntermTyped* TIntermediate::addBuiltInFunctionCall(const TSourceLoc& loc, TOperator op, bool unary, TIntermNode* childNode, const TType& returnType) { if (unary) { // // Treat it like a unary operator. // addUnaryMath() should get the type correct on its own; // including constness (which would differ from the prototype). // TIntermTyped* child = childNode->getAsTyped(); if (child == nullptr) return nullptr; if (child->getAsConstantUnion()) { TIntermTyped* folded = child->getAsConstantUnion()->fold(op, returnType); if (folded) return folded; } return addUnaryNode(op, child, child->getLoc(), returnType); } else { // setAggregateOperater() calls fold() for constant folding TIntermTyped* node = setAggregateOperator(childNode, op, returnType, loc); return node; } } // // This is the safe way to change the operator on an aggregate, as it // does lots of error checking and fixing. Especially for establishing // a function call's operation on its set of parameters. Sequences // of instructions are also aggregates, but they just directly set // their operator to EOpSequence. // // Returns an aggregate node, which could be the one passed in if // it was already an aggregate. // TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator op, const TType& type, const TSourceLoc& loc) { TIntermAggregate* aggNode; // // Make sure we have an aggregate. If not turn it into one. // if (node != nullptr) { aggNode = node->getAsAggregate(); if (aggNode == nullptr || aggNode->getOp() != EOpNull) { // // Make an aggregate containing this node. // aggNode = new TIntermAggregate(); aggNode->getSequence().push_back(node); } } else aggNode = new TIntermAggregate(); // // Set the operator. // aggNode->setOperator(op); if (loc.line != 0 || node != nullptr) aggNode->setLoc(loc.line != 0 ? loc : node->getLoc()); aggNode->setType(type); return fold(aggNode); } bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const { // // Does the base type even allow the operation? // switch (node->getBasicType()) { case EbtVoid: return false; case EbtAtomicUint: case EbtSampler: case EbtAccStruct: // opaque types can be passed to functions if (op == EOpFunction) break; // HLSL can assign samplers directly (no constructor) if (getSource() == EShSourceHlsl && node->getBasicType() == EbtSampler) break; // samplers can get assigned via a sampler constructor // (well, not yet, but code in the rest of this function is ready for it) if (node->getBasicType() == EbtSampler && op == EOpAssign && node->getAsOperator() != nullptr && node->getAsOperator()->getOp() == EOpConstructTextureSampler) break; // otherwise, opaque types can't even be operated on, let alone converted return false; default: break; } return true; } bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& newOp) const { // (bfloat16_t,fp8) <-> bool not supported if (((src == EbtBFloat16 || src == EbtFloatE5M2 || src == EbtFloatE4M3) && dst == EbtBool) || ((dst == EbtBFloat16 || dst == EbtFloatE5M2 || dst == EbtFloatE4M3) && src == EbtBool)) { return false; } if ((isTypeInt(dst) || isTypeFloat(dst) || dst == EbtBool) && (isTypeInt(src) || isTypeFloat(src) || src == EbtBool)) { newOp = EOpConvNumeric; return true; } return false; } // This is 'mechanism' here, it does any conversion told. // It is about basic type, not about shape. // The policy comes from the shader or the calling code. TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped* node) const { // // Add a new newNode for the conversion. // bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 || convertTo == EbtInt16 || convertTo == EbtUint16 || convertTo == EbtInt || convertTo == EbtUint || convertTo == EbtInt64 || convertTo == EbtUint64); bool convertFromIntTypes = (node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8 || node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16 || node->getBasicType() == EbtInt || node->getBasicType() == EbtUint || node->getBasicType() == EbtInt64 || node->getBasicType() == EbtUint64); bool convertToFloatTypes = (convertTo == EbtFloat16 || convertTo == EbtBFloat16 || convertTo == EbtFloat || convertTo == EbtDouble || convertTo == EbtFloatE5M2 || convertTo == EbtFloatE4M3); bool convertFromFloatTypes = (node->getBasicType() == EbtFloat16 || node->getBasicType() == EbtBFloat16 || node->getBasicType() == EbtFloat || node->getBasicType() == EbtDouble || node->getBasicType() == EbtFloatE5M2 || node->getBasicType() == EbtFloatE4M3); if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) || ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes)) { if (! getArithemeticInt8Enabled()) { return nullptr; } } if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) || ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes)) { if (! getArithemeticInt16Enabled()) { return nullptr; } } if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) || (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) { if (! getArithemeticFloat16Enabled()) { return nullptr; } } TIntermUnary* newNode = nullptr; TOperator newOp = EOpNull; if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) { return nullptr; } TType newType(convertTo, EvqTemporary, node->getVectorSize(), node->getMatrixCols(), node->getMatrixRows()); newNode = addUnaryNode(newOp, node, node->getLoc(), newType); if (node->getAsConstantUnion()) { // 8/16-bit storage extensions don't support 8/16-bit constants, so don't fold conversions // to those types if ((getArithemeticInt8Enabled() || !(convertTo == EbtInt8 || convertTo == EbtUint8)) && (getArithemeticInt16Enabled() || !(convertTo == EbtInt16 || convertTo == EbtUint16)) && (getArithemeticFloat16Enabled() || !(convertTo == EbtFloat16))) { TIntermTyped* folded = node->getAsConstantUnion()->fold(newOp, newType); if (folded) return folded; } } // Propagate specialization-constant-ness, if allowed if (node->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*newNode)) newNode->getWritableType().getQualifier().makeSpecConstant(); return newNode; } TIntermTyped* TIntermediate::addConversion(TBasicType convertTo, TIntermTyped* node) const { return createConversion(convertTo, node); } // For converting a pair of operands to a binary operation to compatible // types with each other, relative to the operation in 'op'. // This does not cover assignment operations, which is asymmetric in that the // left type is not changeable. // See addConversion(op, type, node) for assignments and unary operation // conversions. // // Generally, this is focused on basic type conversion, not shape conversion. // See addShapeConversion() for shape conversions. // // Returns the converted pair of nodes. // Returns when there is no conversion. std::tuple TIntermediate::addPairConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1) { if (!isConversionAllowed(op, node0) || !isConversionAllowed(op, node1)) return std::make_tuple(nullptr, nullptr); if (node0->getType() != node1->getType()) { // If differing structure, then no conversions. if (node0->isStruct() || node1->isStruct()) return std::make_tuple(nullptr, nullptr); // If differing arrays, then no conversions. if (node0->getType().isArray() || node1->getType().isArray()) return std::make_tuple(nullptr, nullptr); // No implicit conversions for operations involving cooperative matrices if (node0->getType().isCoopMat() || node1->getType().isCoopMat()) return std::make_tuple(node0, node1); } auto promoteTo = std::make_tuple(EbtNumTypes, EbtNumTypes); switch (op) { // // List all the binary ops that can implicitly convert one operand to the other's type; // This implements the 'policy' for implicit type conversion. // case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: case EOpEqual: case EOpNotEqual: case EOpAdd: case EOpSub: case EOpMul: case EOpDiv: case EOpMod: case EOpVectorTimesScalar: case EOpVectorTimesMatrix: case EOpMatrixTimesVector: case EOpMatrixTimesScalar: case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: case EOpSequence: // used by ?: if (node0->getBasicType() == node1->getBasicType()) return std::make_tuple(node0, node1); promoteTo = getConversionDestinationType(node0->getBasicType(), node1->getBasicType(), op); if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes) return std::make_tuple(nullptr, nullptr); break; case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: if (getSource() == EShSourceHlsl) promoteTo = std::make_tuple(EbtBool, EbtBool); else return std::make_tuple(node0, node1); break; // There are no conversions needed for GLSL; the shift amount just needs to be an // integer type, as does the base. // HLSL can promote bools to ints to make this work. case EOpLeftShift: case EOpRightShift: if (getSource() == EShSourceHlsl) { TBasicType node0BasicType = node0->getBasicType(); if (node0BasicType == EbtBool) node0BasicType = EbtInt; if (node1->getBasicType() == EbtBool) promoteTo = std::make_tuple(node0BasicType, EbtInt); else promoteTo = std::make_tuple(node0BasicType, node1->getBasicType()); } else { if (isTypeInt(node0->getBasicType()) && isTypeInt(node1->getBasicType())) return std::make_tuple(node0, node1); else return std::make_tuple(nullptr, nullptr); } break; default: if (node0->getType() == node1->getType()) return std::make_tuple(node0, node1); return std::make_tuple(nullptr, nullptr); } TIntermTyped* newNode0; TIntermTyped* newNode1; if (std::get<0>(promoteTo) != node0->getType().getBasicType()) { if (node0->getAsConstantUnion()) newNode0 = promoteConstantUnion(std::get<0>(promoteTo), node0->getAsConstantUnion()); else newNode0 = createConversion(std::get<0>(promoteTo), node0); } else newNode0 = node0; if (std::get<1>(promoteTo) != node1->getType().getBasicType()) { if (node1->getAsConstantUnion()) newNode1 = promoteConstantUnion(std::get<1>(promoteTo), node1->getAsConstantUnion()); else newNode1 = createConversion(std::get<1>(promoteTo), node1); } else newNode1 = node1; return std::make_tuple(newNode0, newNode1); } // // Convert the node's type to the given type, as allowed by the operation involved: 'op'. // For implicit conversions, 'op' is not the requested conversion, it is the explicit // operation requiring the implicit conversion. // // Binary operation conversions should be handled by addConversion(op, node, node), not here. // // Returns a node representing the conversion, which could be the same // node passed in if no conversion was needed. // // Generally, this is focused on basic type conversion, not shape conversion. // See addShapeConversion() for shape conversions. // // Return nullptr if a conversion can't be done. // TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TIntermTyped* node) { if (!isConversionAllowed(op, node)) return nullptr; // Otherwise, if types are identical, no problem if (type == node->getType()) return node; // If one's a structure, then no conversions. if (type.isStruct() || node->isStruct()) return nullptr; // If one's an array, then no conversions. if (type.isArray() || node->getType().isArray()) return nullptr; // Reject implicit conversions to cooperative matrix types if (node->getType().isCoopMat() && op != EOpConstructCooperativeMatrixNV && op != EOpConstructCooperativeMatrixKHR && op != glslang::EOpCompositeConstructCoopMatQCOM) return nullptr; if (node->getType().isTensorLayoutNV() || node->getType().isTensorViewNV()) return nullptr; // Reject implicit conversions to cooperative vector types if (node->getType().isCoopVecNV() && op != EOpConstructCooperativeVectorNV) return nullptr; // Note: callers are responsible for other aspects of shape, // like vector and matrix sizes. switch (op) { // // Explicit conversions (unary operations) // case EOpConstructBool: case EOpConstructFloat: case EOpConstructInt: case EOpConstructUint: case EOpConstructDouble: case EOpConstructFloat16: case EOpConstructBFloat16: case EOpConstructFloatE5M2: case EOpConstructFloatE4M3: case EOpConstructInt8: case EOpConstructUint8: case EOpConstructInt16: case EOpConstructUint16: case EOpConstructInt64: case EOpConstructUint64: case EOpConstructSaturated: break; // // Implicit conversions // case EOpLogicalNot: case EOpFunctionCall: case EOpReturn: case EOpAssign: case EOpAddAssign: case EOpSubAssign: case EOpMulAssign: case EOpVectorTimesScalarAssign: case EOpMatrixTimesScalarAssign: case EOpDivAssign: case EOpModAssign: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: case EOpAtan: case EOpClamp: case EOpCross: case EOpDistance: case EOpDot: case EOpDst: case EOpFaceForward: case EOpFma: case EOpFrexp: case EOpLdexp: case EOpMix: case EOpLit: case EOpMax: case EOpMin: case EOpMod: case EOpModf: case EOpPow: case EOpReflect: case EOpRefract: case EOpSmoothStep: case EOpStep: case EOpSequence: case EOpConstructStruct: case EOpConstructCooperativeMatrixNV: case EOpConstructCooperativeMatrixKHR: case EOpConstructCooperativeVectorNV: if (type.isReference() || node->getType().isReference()) { // types must match to assign a reference if (type == node->getType()) return node; else return nullptr; } if (type.getBasicType() == node->getType().getBasicType()) return node; if (! canImplicitlyPromote(node->getBasicType(), type.getBasicType(), op)) return nullptr; break; // For GLSL, there are no conversions needed; the shift amount just needs to be an // integer type, as do the base/result. // HLSL can convert the shift from a bool to an int. case EOpLeftShiftAssign: case EOpRightShiftAssign: { if (!(getSource() == EShSourceHlsl && node->getType().getBasicType() == EbtBool)) { if (isTypeInt(type.getBasicType()) && isTypeInt(node->getBasicType())) return node; else return nullptr; } break; } default: // default is to require a match; all exceptions should have case statements above if (type.getBasicType() == node->getType().getBasicType()) return node; else return nullptr; } bool canPromoteConstant = true; // GL_EXT_shader_16bit_storage can't do OpConstantComposite with // 16-bit types, so disable promotion for those types. // Many issues with this, from JohnK: // - this isn't really right to discuss SPIR-V here // - this could easily be entirely about scalars, so is overstepping // - we should be looking at what the shader asked for, and saying whether or // not it can be done, in the parser, by calling requireExtensions(), not // changing language sementics on the fly by asking what extensions are in use // - at the time of this writing (14-Aug-2020), no test results are changed by this. switch (op) { case EOpConstructBFloat16: case EOpConstructFloatE5M2: case EOpConstructFloatE4M3: canPromoteConstant = true; break; case EOpConstructFloat16: canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16); break; case EOpConstructInt8: case EOpConstructUint8: canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8); break; case EOpConstructInt16: case EOpConstructUint16: canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16); break; default: break; } if (canPromoteConstant && node->getAsConstantUnion()) return promoteConstantUnion(type.getBasicType(), node->getAsConstantUnion()); // // Add a new newNode for the conversion. // TIntermTyped* newNode = createConversion(type.getBasicType(), node); return newNode; } // Convert the node's shape of type for the given type, as allowed by the // operation involved: 'op'. This is for situations where there is only one // direction to consider doing the shape conversion. // // This implements policy, it call addShapeConversion() for the mechanism. // // Generally, the AST represents allowed GLSL shapes, so this isn't needed // for GLSL. Bad shapes are caught in conversion or promotion. // // Return 'node' if no conversion was done. Promotion handles final shape // checking. // TIntermTyped* TIntermediate::addUniShapeConversion(TOperator op, const TType& type, TIntermTyped* node) { // some source languages don't do this switch (getSource()) { case EShSourceHlsl: break; case EShSourceGlsl: default: return node; } // some operations don't do this switch (op) { case EOpFunctionCall: case EOpReturn: break; case EOpMulAssign: // want to support vector *= scalar native ops in AST and lower, not smear, similarly for // matrix *= scalar, etc. case EOpAddAssign: case EOpSubAssign: case EOpDivAssign: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: case EOpRightShiftAssign: case EOpLeftShiftAssign: if (node->getVectorSize() == 1) return node; break; case EOpAssign: break; case EOpMix: break; default: return node; } return addShapeConversion(type, node); } // Convert the nodes' shapes to be compatible for the operation 'op'. // // This implements policy, it call addShapeConversion() for the mechanism. // // Generally, the AST represents allowed GLSL shapes, so this isn't needed // for GLSL. Bad shapes are caught in conversion or promotion. // void TIntermediate::addBiShapeConversion(TOperator op, TIntermTyped*& lhsNode, TIntermTyped*& rhsNode) { // some source languages don't do this switch (getSource()) { case EShSourceHlsl: break; case EShSourceGlsl: default: return; } // some operations don't do this // 'break' will mean attempt bidirectional conversion switch (op) { case EOpMulAssign: case EOpAssign: case EOpAddAssign: case EOpSubAssign: case EOpDivAssign: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: case EOpRightShiftAssign: case EOpLeftShiftAssign: // switch to unidirectional conversion (the lhs can't change) rhsNode = addUniShapeConversion(op, lhsNode->getType(), rhsNode); return; case EOpMul: // matrix multiply does not change shapes if (lhsNode->isMatrix() && rhsNode->isMatrix()) return; [[fallthrough]]; case EOpAdd: case EOpSub: case EOpDiv: // want to support vector * scalar native ops in AST and lower, not smear, similarly for // matrix * vector, etc. if (lhsNode->getVectorSize() == 1 || rhsNode->getVectorSize() == 1) return; break; case EOpRightShift: case EOpLeftShift: // can natively support the right operand being a scalar and the left a vector, // but not the reverse if (rhsNode->getVectorSize() == 1) return; break; case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: case EOpEqual: case EOpNotEqual: case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: case EOpMix: break; default: return; } // Do bidirectional conversions if (lhsNode->getType().isScalarOrVec1() || rhsNode->getType().isScalarOrVec1()) { if (lhsNode->getType().isScalarOrVec1()) lhsNode = addShapeConversion(rhsNode->getType(), lhsNode); else rhsNode = addShapeConversion(lhsNode->getType(), rhsNode); } lhsNode = addShapeConversion(rhsNode->getType(), lhsNode); rhsNode = addShapeConversion(lhsNode->getType(), rhsNode); } // Convert the node's shape of type for the given type, as allowed by the // operation involved: 'op'. // // Generally, the AST represents allowed GLSL shapes, so this isn't needed // for GLSL. Bad shapes are caught in conversion or promotion. // // Return 'node' if no conversion was done. Promotion handles final shape // checking. // TIntermTyped* TIntermediate::addShapeConversion(const TType& type, TIntermTyped* node) { // no conversion needed if (node->getType() == type) return node; // structures and arrays don't change shape, either to or from if (node->getType().isStruct() || node->getType().isArray() || type.isStruct() || type.isArray()) return node; // The new node that handles the conversion TOperator constructorOp = mapTypeToConstructorOp(type); if (getSource() == EShSourceHlsl) { // HLSL rules for scalar, vector and matrix conversions: // 1) scalar can become anything, initializing every component with its value // 2) vector and matrix can become scalar, first element is used (warning: truncation) // 3) matrix can become matrix with less rows and/or columns (warning: truncation) // 4) vector can become vector with less rows size (warning: truncation) // 5a) vector 4 can become 2x2 matrix (special case) (same packing layout, its a reinterpret) // 5b) 2x2 matrix can become vector 4 (special case) (same packing layout, its a reinterpret) const TType &sourceType = node->getType(); // rule 1 for scalar to matrix is special if (sourceType.isScalarOrVec1() && type.isMatrix()) { // HLSL semantics: the scalar (or vec1) is replicated to every component of the matrix. Left to its // own devices, the constructor from a scalar would populate the diagonal. This forces replication // to every matrix element. // Note that if the node is complex (e.g, a function call), we don't want to duplicate it here // repeatedly, so we copy it to a temp, then use the temp. const int matSize = type.computeNumComponents(); TIntermAggregate* rhsAggregate = new TIntermAggregate(); const bool isSimple = (node->getAsSymbolNode() != nullptr) || (node->getAsConstantUnion() != nullptr); if (!isSimple) { assert(0); // TODO: use node replicator service when available. } for (int x = 0; x < matSize; ++x) rhsAggregate->getSequence().push_back(node); return setAggregateOperator(rhsAggregate, constructorOp, type, node->getLoc()); } // rule 1 and 2 if ((sourceType.isScalar() && !type.isScalar()) || (!sourceType.isScalar() && type.isScalar())) return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc()); // rule 3 and 5b if (sourceType.isMatrix()) { // rule 3 if (type.isMatrix()) { if ((sourceType.getMatrixCols() != type.getMatrixCols() || sourceType.getMatrixRows() != type.getMatrixRows()) && sourceType.getMatrixCols() >= type.getMatrixCols() && sourceType.getMatrixRows() >= type.getMatrixRows()) return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc()); // rule 5b } else if (type.isVector()) { if (type.getVectorSize() == 4 && sourceType.getMatrixCols() == 2 && sourceType.getMatrixRows() == 2) return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc()); } } // rule 4 and 5a if (sourceType.isVector()) { // rule 4 if (type.isVector()) { if (sourceType.getVectorSize() > type.getVectorSize()) return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc()); // rule 5a } else if (type.isMatrix()) { if (sourceType.getVectorSize() == 4 && type.getMatrixCols() == 2 && type.getMatrixRows() == 2) return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc()); } } } // scalar -> vector or vec1 -> vector or // vector -> scalar or // bigger vector -> smaller vector if ((node->getType().isScalarOrVec1() && type.isVector()) || (node->getType().isVector() && type.isScalar()) || (node->isVector() && type.isVector() && node->getVectorSize() > type.getVectorSize())) return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc()); return node; } bool TIntermediate::isIntegralPromotion(TBasicType from, TBasicType to) const { // integral promotions if (to == EbtInt) { switch(from) { case EbtInt8: case EbtInt16: case EbtUint8: case EbtUint16: return true; default: break; } } return false; } bool TIntermediate::isFPPromotion(TBasicType from, TBasicType to) const { // floating-point promotions if (to == EbtDouble) { switch(from) { case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtFloat16: case EbtFloat: return true; default: break; } } return false; } bool TIntermediate::isIntegralConversion(TBasicType from, TBasicType to) const { switch (from) { case EbtInt: switch(to) { case EbtUint: return version >= 400 || getSource() == EShSourceHlsl; case EbtInt64: case EbtUint64: return true; default: break; } break; case EbtUint: switch(to) { case EbtInt64: case EbtUint64: return true; default: break; } break; case EbtInt8: switch (to) { case EbtUint8: case EbtInt16: case EbtUint16: case EbtUint: case EbtInt64: case EbtUint64: return true; default: break; } break; case EbtUint8: switch (to) { case EbtInt16: case EbtUint16: case EbtUint: case EbtInt64: case EbtUint64: return true; default: break; } break; case EbtInt16: switch(to) { case EbtUint16: case EbtUint: case EbtInt64: case EbtUint64: return true; default: break; } break; case EbtUint16: switch(to) { case EbtUint: case EbtInt64: case EbtUint64: return true; default: break; } break; case EbtInt64: if (to == EbtUint64) { return true; } break; default: break; } return false; } bool TIntermediate::isFPConversion(TBasicType from, TBasicType to) const { if (to == EbtFloat && (from == EbtFloat16 || from == EbtBFloat16 || from == EbtFloatE5M2 || from == EbtFloatE4M3)) { return true; } else { return false; } } bool TIntermediate::isFPIntegralConversion(TBasicType from, TBasicType to) const { switch (from) { case EbtInt: case EbtUint: switch(to) { case EbtFloat: case EbtDouble: return true; default: break; } break; case EbtInt8: case EbtUint8: case EbtInt16: case EbtUint16: switch (to) { case EbtFloat16: case EbtFloat: case EbtDouble: return true; default: break; } break; case EbtInt64: case EbtUint64: if (to == EbtDouble) { return true; } break; default: break; } return false; } // // See if the 'from' type is allowed to be implicitly converted to the // 'to' type. This is not about vector/array/struct, only about basic type. // bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op) const { if ((isEsProfile() && version < 310 ) || version == 110) return false; if (from == to) return true; // TODO: Move more policies into language-specific handlers. // Some languages allow more general (or potentially, more specific) conversions under some conditions. if (getSource() == EShSourceHlsl) { const bool fromConvertable = (from == EbtFloat || from == EbtDouble || from == EbtInt || from == EbtUint || from == EbtBool); const bool toConvertable = (to == EbtFloat || to == EbtDouble || to == EbtInt || to == EbtUint || to == EbtBool); if (fromConvertable && toConvertable) { switch (op) { case EOpAndAssign: // assignments can perform arbitrary conversions case EOpInclusiveOrAssign: // ... case EOpExclusiveOrAssign: // ... case EOpAssign: // ... case EOpAddAssign: // ... case EOpSubAssign: // ... case EOpMulAssign: // ... case EOpVectorTimesScalarAssign: // ... case EOpMatrixTimesScalarAssign: // ... case EOpDivAssign: // ... case EOpModAssign: // ... case EOpReturn: // function returns can also perform arbitrary conversions case EOpFunctionCall: // conversion of a calling parameter case EOpLogicalNot: case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: case EOpConstructStruct: return true; default: break; } } } if (getSource() == EShSourceHlsl) { // HLSL if (from == EbtBool && (to == EbtInt || to == EbtUint || to == EbtFloat)) return true; } else { // GLSL if (isIntegralPromotion(from, to) || isFPPromotion(from, to) || isIntegralConversion(from, to) || isFPConversion(from, to) || isFPIntegralConversion(from, to)) { if (numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int32) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int64) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float32) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float64)) { return true; } } } if (isEsProfile()) { switch (to) { case EbtFloat: switch (from) { case EbtInt: case EbtUint: return numericFeatures.contains(TNumericFeatures::shader_implicit_conversions); default: return false; } case EbtUint: switch (from) { case EbtInt: return numericFeatures.contains(TNumericFeatures::shader_implicit_conversions); default: return false; } default: return false; } } else { switch (to) { case EbtDouble: switch (from) { case EbtInt: case EbtUint: case EbtInt64: case EbtUint64: case EbtFloat: return version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64); case EbtInt16: case EbtUint16: return (version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64)) && (numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) || numericFeatures.contains(TNumericFeatures::gpu_shader_int16)); case EbtFloat16: return (version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64)) && (numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) || numericFeatures.contains(TNumericFeatures::gpu_shader_half_float)); case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: return true; case EbtInt8: case EbtUint8: return numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); default: return false; } case EbtFloat: switch (from) { case EbtInt: case EbtUint: return true; case EbtBool: return getSource() == EShSourceHlsl; case EbtInt16: case EbtUint16: return numericFeatures.contains(TNumericFeatures::gpu_shader_int16) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); case EbtFloat16: return numericFeatures.contains(TNumericFeatures::gpu_shader_half_float) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) || getSource() == EShSourceHlsl; case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: return true; case EbtInt8: case EbtUint8: return numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); default: return false; } case EbtUint: switch (from) { case EbtInt: return version >= 400 || getSource() == EShSourceHlsl || IsRequestedExtension(E_GL_ARB_gpu_shader5) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); case EbtBool: return getSource() == EShSourceHlsl; case EbtInt16: case EbtUint16: return numericFeatures.contains(TNumericFeatures::gpu_shader_int16) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); case EbtInt8: case EbtUint8: return numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); default: return false; } case EbtInt: switch (from) { case EbtBool: return getSource() == EShSourceHlsl; case EbtInt16: return numericFeatures.contains(TNumericFeatures::gpu_shader_int16) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); case EbtInt8: return numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); default: return false; } case EbtUint64: switch (from) { case EbtInt: case EbtUint: case EbtInt64: return true; case EbtInt16: case EbtUint16: return numericFeatures.contains(TNumericFeatures::gpu_shader_int16) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); case EbtInt8: case EbtUint8: return numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); default: return false; } case EbtInt64: switch (from) { case EbtInt: return true; case EbtInt8: return numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); case EbtInt16: return numericFeatures.contains(TNumericFeatures::gpu_shader_int16) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types); default: return false; } case EbtFloat16: switch (from) { case EbtInt16: case EbtUint16: return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); case EbtFloatE5M2: case EbtFloatE4M3: return true; default: break; } return false; case EbtBFloat16: switch (from) { case EbtFloatE5M2: case EbtFloatE4M3: return true; default: break; } return false; case EbtUint16: switch (from) { case EbtInt16: return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); default: break; } return false; default: return false; } } return false; } static bool canSignedIntTypeRepresentAllUnsignedValues(TBasicType sintType, TBasicType uintType) { switch(sintType) { case EbtInt8: switch(uintType) { case EbtUint8: case EbtUint16: case EbtUint: case EbtUint64: return false; default: assert(false); return false; } break; case EbtInt16: switch(uintType) { case EbtUint8: return true; case EbtUint16: case EbtUint: case EbtUint64: return false; default: assert(false); return false; } break; case EbtInt: switch(uintType) { case EbtUint8: case EbtUint16: return true; case EbtUint: return false; default: assert(false); return false; } break; case EbtInt64: switch(uintType) { case EbtUint8: case EbtUint16: case EbtUint: return true; case EbtUint64: return false; default: assert(false); return false; } break; default: assert(false); return false; } } static TBasicType getCorrespondingUnsignedType(TBasicType type) { switch(type) { case EbtInt8: return EbtUint8; case EbtInt16: return EbtUint16; case EbtInt: return EbtUint; case EbtInt64: return EbtUint64; default: assert(false); return EbtNumTypes; } } // Implements the following rules // - If either operand has type float64_t or derived from float64_t, // the other shall be converted to float64_t or derived type. // - Otherwise, if either operand has type float32_t or derived from // float32_t, the other shall be converted to float32_t or derived type. // - Otherwise, if either operand has type float16_t or derived from // float16_t, the other shall be converted to float16_t or derived type. // - Otherwise, if both operands have integer types the following rules // shall be applied to the operands: // - If both operands have the same type, no further conversion // is needed. // - Otherwise, if both operands have signed integer types or both // have unsigned integer types, the operand with the type of lesser // integer conversion rank shall be converted to the type of the // operand with greater rank. // - Otherwise, if the operand that has unsigned integer type has rank // greater than or equal to the rank of the type of the other // operand, the operand with signed integer type shall be converted // to the type of the operand with unsigned integer type. // - Otherwise, if the type of the operand with signed integer type can // represent all of the values of the type of the operand with // unsigned integer type, the operand with unsigned integer type // shall be converted to the type of the operand with signed // integer type. // - Otherwise, both operands shall be converted to the unsigned // integer type corresponding to the type of the operand with signed // integer type. std::tuple TIntermediate::getConversionDestinationType(TBasicType type0, TBasicType type1, TOperator op) const { TBasicType res0 = EbtNumTypes; TBasicType res1 = EbtNumTypes; if ((isEsProfile() && (version < 310 || !numericFeatures.contains(TNumericFeatures::shader_implicit_conversions))) || version == 110) return std::make_tuple(res0, res1); if (getSource() == EShSourceHlsl) { if (canImplicitlyPromote(type1, type0, op)) { res0 = type0; res1 = type0; } else if (canImplicitlyPromote(type0, type1, op)) { res0 = type1; res1 = type1; } return std::make_tuple(res0, res1); } if ((type0 == EbtDouble && canImplicitlyPromote(type1, EbtDouble, op)) || (type1 == EbtDouble && canImplicitlyPromote(type0, EbtDouble, op)) ) { res0 = EbtDouble; res1 = EbtDouble; } else if ((type0 == EbtFloat && canImplicitlyPromote(type1, EbtFloat, op)) || (type1 == EbtFloat && canImplicitlyPromote(type0, EbtFloat, op)) ) { res0 = EbtFloat; res1 = EbtFloat; } else if ((type0 == EbtFloat16 && canImplicitlyPromote(type1, EbtFloat16, op)) || (type1 == EbtFloat16 && canImplicitlyPromote(type0, EbtFloat16, op)) ) { res0 = EbtFloat16; res1 = EbtFloat16; } else if ((type0 == EbtBFloat16 && canImplicitlyPromote(type1, EbtBFloat16, op)) || (type1 == EbtBFloat16 && canImplicitlyPromote(type0, EbtBFloat16, op)) ) { res0 = EbtBFloat16; res1 = EbtBFloat16; } else if (isTypeInt(type0) && isTypeInt(type1) && (canImplicitlyPromote(type0, type1, op) || canImplicitlyPromote(type1, type0, op))) { if ((isTypeSignedInt(type0) && isTypeSignedInt(type1)) || (isTypeUnsignedInt(type0) && isTypeUnsignedInt(type1))) { if (getTypeRank(type0) < getTypeRank(type1)) { res0 = type1; res1 = type1; } else { res0 = type0; res1 = type0; } } else if (isTypeUnsignedInt(type0) && (getTypeRank(type0) > getTypeRank(type1))) { res0 = type0; res1 = type0; } else if (isTypeUnsignedInt(type1) && (getTypeRank(type1) > getTypeRank(type0))) { res0 = type1; res1 = type1; } else if (isTypeSignedInt(type0)) { if (canSignedIntTypeRepresentAllUnsignedValues(type0, type1)) { res0 = type0; res1 = type0; } else { res0 = getCorrespondingUnsignedType(type0); res1 = getCorrespondingUnsignedType(type0); } } else if (isTypeSignedInt(type1)) { if (canSignedIntTypeRepresentAllUnsignedValues(type1, type0)) { res0 = type1; res1 = type1; } else { res0 = getCorrespondingUnsignedType(type1); res1 = getCorrespondingUnsignedType(type1); } } } return std::make_tuple(res0, res1); } // // Given a type, find what operation would fully construct it. // TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const { TOperator op = EOpNull; if (type.getQualifier().isNonUniform()) return EOpConstructNonuniform; if (type.isCoopMatNV()) return EOpConstructCooperativeMatrixNV; if (type.isCoopMatKHR()) return EOpConstructCooperativeMatrixKHR; if (type.isCoopVecNV()) return EOpConstructCooperativeVectorNV; switch (type.getBasicType()) { case EbtStruct: op = EOpConstructStruct; break; case EbtSampler: if (type.getSampler().isCombined()) op = EOpConstructTextureSampler; break; case EbtFloat: if (type.isMatrix()) { switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: op = EOpConstructMat2x2; break; case 3: op = EOpConstructMat2x3; break; case 4: op = EOpConstructMat2x4; break; default: break; // some compilers want this } break; case 3: switch (type.getMatrixRows()) { case 2: op = EOpConstructMat3x2; break; case 3: op = EOpConstructMat3x3; break; case 4: op = EOpConstructMat3x4; break; default: break; // some compilers want this } break; case 4: switch (type.getMatrixRows()) { case 2: op = EOpConstructMat4x2; break; case 3: op = EOpConstructMat4x3; break; case 4: op = EOpConstructMat4x4; break; default: break; // some compilers want this } break; default: break; // some compilers want this } } else { switch(type.getVectorSize()) { case 1: op = EOpConstructFloat; break; case 2: op = EOpConstructVec2; break; case 3: op = EOpConstructVec3; break; case 4: op = EOpConstructVec4; break; default: break; // some compilers want this } } break; case EbtInt: if (type.getMatrixCols()) { switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: op = EOpConstructIMat2x2; break; case 3: op = EOpConstructIMat2x3; break; case 4: op = EOpConstructIMat2x4; break; default: break; // some compilers want this } break; case 3: switch (type.getMatrixRows()) { case 2: op = EOpConstructIMat3x2; break; case 3: op = EOpConstructIMat3x3; break; case 4: op = EOpConstructIMat3x4; break; default: break; // some compilers want this } break; case 4: switch (type.getMatrixRows()) { case 2: op = EOpConstructIMat4x2; break; case 3: op = EOpConstructIMat4x3; break; case 4: op = EOpConstructIMat4x4; break; default: break; // some compilers want this } break; } } else { switch(type.getVectorSize()) { case 1: op = EOpConstructInt; break; case 2: op = EOpConstructIVec2; break; case 3: op = EOpConstructIVec3; break; case 4: op = EOpConstructIVec4; break; default: break; // some compilers want this } } break; case EbtUint: if (type.getMatrixCols()) { switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: op = EOpConstructUMat2x2; break; case 3: op = EOpConstructUMat2x3; break; case 4: op = EOpConstructUMat2x4; break; default: break; // some compilers want this } break; case 3: switch (type.getMatrixRows()) { case 2: op = EOpConstructUMat3x2; break; case 3: op = EOpConstructUMat3x3; break; case 4: op = EOpConstructUMat3x4; break; default: break; // some compilers want this } break; case 4: switch (type.getMatrixRows()) { case 2: op = EOpConstructUMat4x2; break; case 3: op = EOpConstructUMat4x3; break; case 4: op = EOpConstructUMat4x4; break; default: break; // some compilers want this } break; } } else { switch(type.getVectorSize()) { case 1: op = EOpConstructUint; break; case 2: op = EOpConstructUVec2; break; case 3: op = EOpConstructUVec3; break; case 4: op = EOpConstructUVec4; break; default: break; // some compilers want this } } break; case EbtBool: if (type.getMatrixCols()) { switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: op = EOpConstructBMat2x2; break; case 3: op = EOpConstructBMat2x3; break; case 4: op = EOpConstructBMat2x4; break; default: break; // some compilers want this } break; case 3: switch (type.getMatrixRows()) { case 2: op = EOpConstructBMat3x2; break; case 3: op = EOpConstructBMat3x3; break; case 4: op = EOpConstructBMat3x4; break; default: break; // some compilers want this } break; case 4: switch (type.getMatrixRows()) { case 2: op = EOpConstructBMat4x2; break; case 3: op = EOpConstructBMat4x3; break; case 4: op = EOpConstructBMat4x4; break; default: break; // some compilers want this } break; } } else { switch(type.getVectorSize()) { case 1: op = EOpConstructBool; break; case 2: op = EOpConstructBVec2; break; case 3: op = EOpConstructBVec3; break; case 4: op = EOpConstructBVec4; break; default: break; // some compilers want this } } break; case EbtDouble: if (type.getMatrixCols()) { switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: op = EOpConstructDMat2x2; break; case 3: op = EOpConstructDMat2x3; break; case 4: op = EOpConstructDMat2x4; break; default: break; // some compilers want this } break; case 3: switch (type.getMatrixRows()) { case 2: op = EOpConstructDMat3x2; break; case 3: op = EOpConstructDMat3x3; break; case 4: op = EOpConstructDMat3x4; break; default: break; // some compilers want this } break; case 4: switch (type.getMatrixRows()) { case 2: op = EOpConstructDMat4x2; break; case 3: op = EOpConstructDMat4x3; break; case 4: op = EOpConstructDMat4x4; break; default: break; // some compilers want this } break; } } else { switch(type.getVectorSize()) { case 1: op = EOpConstructDouble; break; case 2: op = EOpConstructDVec2; break; case 3: op = EOpConstructDVec3; break; case 4: op = EOpConstructDVec4; break; default: break; // some compilers want this } } break; case EbtFloat16: if (type.getMatrixCols()) { switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: op = EOpConstructF16Mat2x2; break; case 3: op = EOpConstructF16Mat2x3; break; case 4: op = EOpConstructF16Mat2x4; break; default: break; // some compilers want this } break; case 3: switch (type.getMatrixRows()) { case 2: op = EOpConstructF16Mat3x2; break; case 3: op = EOpConstructF16Mat3x3; break; case 4: op = EOpConstructF16Mat3x4; break; default: break; // some compilers want this } break; case 4: switch (type.getMatrixRows()) { case 2: op = EOpConstructF16Mat4x2; break; case 3: op = EOpConstructF16Mat4x3; break; case 4: op = EOpConstructF16Mat4x4; break; default: break; // some compilers want this } break; } } else { switch (type.getVectorSize()) { case 1: op = EOpConstructFloat16; break; case 2: op = EOpConstructF16Vec2; break; case 3: op = EOpConstructF16Vec3; break; case 4: op = EOpConstructF16Vec4; break; default: break; // some compilers want this } } break; case EbtBFloat16: switch (type.getVectorSize()) { case 1: op = EOpConstructBFloat16; break; case 2: op = EOpConstructBF16Vec2; break; case 3: op = EOpConstructBF16Vec3; break; case 4: op = EOpConstructBF16Vec4; break; default: break; // some compilers want this } break; case EbtFloatE5M2: switch (type.getVectorSize()) { case 1: op = EOpConstructFloatE5M2; break; case 2: op = EOpConstructFloatE5M2Vec2; break; case 3: op = EOpConstructFloatE5M2Vec3; break; case 4: op = EOpConstructFloatE5M2Vec4; break; default: break; // some compilers want this } break; case EbtFloatE4M3: switch (type.getVectorSize()) { case 1: op = EOpConstructFloatE4M3; break; case 2: op = EOpConstructFloatE4M3Vec2; break; case 3: op = EOpConstructFloatE4M3Vec3; break; case 4: op = EOpConstructFloatE4M3Vec4; break; default: break; // some compilers want this } break; case EbtInt8: switch(type.getVectorSize()) { case 1: op = EOpConstructInt8; break; case 2: op = EOpConstructI8Vec2; break; case 3: op = EOpConstructI8Vec3; break; case 4: op = EOpConstructI8Vec4; break; default: break; // some compilers want this } break; case EbtUint8: switch(type.getVectorSize()) { case 1: op = EOpConstructUint8; break; case 2: op = EOpConstructU8Vec2; break; case 3: op = EOpConstructU8Vec3; break; case 4: op = EOpConstructU8Vec4; break; default: break; // some compilers want this } break; case EbtInt16: switch(type.getVectorSize()) { case 1: op = EOpConstructInt16; break; case 2: op = EOpConstructI16Vec2; break; case 3: op = EOpConstructI16Vec3; break; case 4: op = EOpConstructI16Vec4; break; default: break; // some compilers want this } break; case EbtUint16: switch(type.getVectorSize()) { case 1: op = EOpConstructUint16; break; case 2: op = EOpConstructU16Vec2; break; case 3: op = EOpConstructU16Vec3; break; case 4: op = EOpConstructU16Vec4; break; default: break; // some compilers want this } break; case EbtInt64: switch(type.getVectorSize()) { case 1: op = EOpConstructInt64; break; case 2: op = EOpConstructI64Vec2; break; case 3: op = EOpConstructI64Vec3; break; case 4: op = EOpConstructI64Vec4; break; default: break; // some compilers want this } break; case EbtUint64: switch(type.getVectorSize()) { case 1: op = EOpConstructUint64; break; case 2: op = EOpConstructU64Vec2; break; case 3: op = EOpConstructU64Vec3; break; case 4: op = EOpConstructU64Vec4; break; default: break; // some compilers want this } break; case EbtReference: op = EOpConstructReference; break; case EbtAccStruct: op = EOpConstructAccStruct; break; default: break; } return op; } // // Safe way to combine two nodes into an aggregate. Works with null pointers, // a node that's not a aggregate yet, etc. // // Returns the resulting aggregate, unless nullptr was passed in for // both existing nodes. // TIntermAggregate* TIntermediate::growAggregate(TIntermNode* left, TIntermNode* right) { if (left == nullptr && right == nullptr) return nullptr; TIntermAggregate* aggNode = nullptr; if (left != nullptr) aggNode = left->getAsAggregate(); if (aggNode == nullptr || aggNode->getOp() != EOpNull) { aggNode = new TIntermAggregate; if (left != nullptr) aggNode->getSequence().push_back(left); } if (right != nullptr) aggNode->getSequence().push_back(right); return aggNode; } TIntermAggregate* TIntermediate::growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc& loc) { TIntermAggregate* aggNode = growAggregate(left, right); if (aggNode) aggNode->setLoc(loc); return aggNode; } TIntermAggregate* TIntermediate::mergeAggregate(TIntermNode* left, TIntermNode* right) { if (left == nullptr && right == nullptr) return nullptr; TIntermAggregate* aggNode = nullptr; if (left != nullptr) aggNode = left->getAsAggregate(); if (aggNode == nullptr || aggNode->getOp() != EOpNull) { aggNode = new TIntermAggregate; if (left != nullptr) aggNode->getSequence().push_back(left); } TIntermAggregate* rhsagg = right->getAsAggregate(); if (rhsagg == nullptr || rhsagg->getOp() != EOpNull) aggNode->getSequence().push_back(right); else aggNode->getSequence().insert(aggNode->getSequence().end(), rhsagg->getSequence().begin(), rhsagg->getSequence().end()); return aggNode; } TIntermAggregate* TIntermediate::mergeAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc& loc) { TIntermAggregate* aggNode = mergeAggregate(left, right); if (aggNode) aggNode->setLoc(loc); return aggNode; } // // Turn an existing node into an aggregate. // // Returns an aggregate, unless nullptr was passed in for the existing node. // TIntermAggregate* TIntermediate::makeAggregate(TIntermNode* node) { if (node == nullptr) return nullptr; TIntermAggregate* aggNode = new TIntermAggregate; aggNode->getSequence().push_back(node); aggNode->setLoc(node->getLoc()); return aggNode; } TIntermAggregate* TIntermediate::makeAggregate(TIntermNode* node, const TSourceLoc& loc) { if (node == nullptr) return nullptr; TIntermAggregate* aggNode = new TIntermAggregate; aggNode->getSequence().push_back(node); aggNode->setLoc(loc); return aggNode; } // // Make an aggregate with an empty sequence. // TIntermAggregate* TIntermediate::makeAggregate(const TSourceLoc& loc) { TIntermAggregate* aggNode = new TIntermAggregate; aggNode->setLoc(loc); return aggNode; } // // For "if" test nodes. There are three children; a condition, // a true path, and a false path. The two paths are in the // nodePair. // // Returns the selection node created. // TIntermSelection* TIntermediate::addSelection(TIntermTyped* cond, TIntermNodePair nodePair, const TSourceLoc& loc) { // // Don't prune the false path for compile-time constants; it's needed // for static access analysis. // TIntermSelection* node = new TIntermSelection(cond, nodePair.node1, nodePair.node2); node->setLoc(loc); return node; } TIntermTyped* TIntermediate::addComma(TIntermTyped* left, TIntermTyped* right, const TSourceLoc& loc) { // However, the lowest precedence operators of the sequence operator ( , ) and the assignment operators // ... are not included in the operators that can create a constant expression. // // if (left->getType().getQualifier().storage == EvqConst && // right->getType().getQualifier().storage == EvqConst) { // return right; //} TIntermTyped *commaAggregate = growAggregate(left, right, loc); commaAggregate->getAsAggregate()->setOperator(EOpComma); commaAggregate->setType(right->getType()); commaAggregate->getWritableType().getQualifier().makeTemporary(); return commaAggregate; } TIntermTyped* TIntermediate::addMethod(TIntermTyped* object, const TType& type, const TString* name, const TSourceLoc& loc) { TIntermMethod* method = new TIntermMethod(object, type, *name); method->setLoc(loc); return method; } // // For "?:" test nodes. There are three children; a condition, // a true path, and a false path. The two paths are specified // as separate parameters. For vector 'cond', the true and false // are not paths, but vectors to mix. // // Specialization constant operations include // - The ternary operator ( ? : ) // // Returns the selection node created, or nullptr if one could not be. // TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc& loc) { // If it's void, go to the if-then-else selection() if (trueBlock->getBasicType() == EbtVoid && falseBlock->getBasicType() == EbtVoid) { TIntermNodePair pair = { trueBlock, falseBlock }; TIntermSelection* selection = addSelection(cond, pair, loc); if (getSource() == EShSourceHlsl) selection->setNoShortCircuit(); return selection; } // // Get compatible types. // auto children = addPairConversion(EOpSequence, trueBlock, falseBlock); trueBlock = std::get<0>(children); falseBlock = std::get<1>(children); if (trueBlock == nullptr || falseBlock == nullptr) return nullptr; // Handle a vector condition as a mix if (!cond->getType().isScalarOrVec1()) { TType targetVectorType(trueBlock->getType().getBasicType(), EvqTemporary, cond->getType().getVectorSize()); // smear true/false operands as needed trueBlock = addUniShapeConversion(EOpMix, targetVectorType, trueBlock); falseBlock = addUniShapeConversion(EOpMix, targetVectorType, falseBlock); // After conversion, types have to match. if (falseBlock->getType() != trueBlock->getType()) return nullptr; // make the mix operation TIntermAggregate* mix = makeAggregate(loc); mix = growAggregate(mix, falseBlock); mix = growAggregate(mix, trueBlock); mix = growAggregate(mix, cond); mix->setType(targetVectorType); mix->setOp(EOpMix); return mix; } // Now have a scalar condition... // Convert true and false expressions to matching types addBiShapeConversion(EOpMix, trueBlock, falseBlock); // After conversion, types have to match. if (falseBlock->getType() != trueBlock->getType()) return nullptr; // Eliminate the selection when the condition is a scalar and all operands are constant. if (cond->getAsConstantUnion() && trueBlock->getAsConstantUnion() && falseBlock->getAsConstantUnion()) { if (cond->getAsConstantUnion()->getConstArray()[0].getBConst()) return trueBlock; else return falseBlock; } // // Make a selection node. // TIntermSelection* node = new TIntermSelection(cond, trueBlock, falseBlock, trueBlock->getType()); node->setLoc(loc); node->getQualifier().precision = std::max(trueBlock->getQualifier().precision, falseBlock->getQualifier().precision); if ((cond->getQualifier().isConstant() && specConstantPropagates(*trueBlock, *falseBlock)) || (cond->getQualifier().isSpecConstant() && trueBlock->getQualifier().isConstant() && falseBlock->getQualifier().isConstant())) node->getQualifier().makeSpecConstant(); else node->getQualifier().makeTemporary(); if (getSource() == EShSourceHlsl) node->setNoShortCircuit(); return node; } // // Constant terminal nodes. Has a union that contains bool, float or int constants // // Returns the constant union node created. // TIntermConstantUnion* TIntermediate::addConstantUnion(const TConstUnionArray& unionArray, const TType& t, const TSourceLoc& loc, bool literal) const { TIntermConstantUnion* node = new TIntermConstantUnion(unionArray, t); node->getQualifier().storage = EvqConst; node->setLoc(loc); if (literal) node->setLiteral(); return node; } TIntermConstantUnion* TIntermediate::addConstantUnion(signed char i8, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setI8Const(i8); return addConstantUnion(unionArray, TType(EbtInt8, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned char u8, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setUConst(u8); return addConstantUnion(unionArray, TType(EbtUint8, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(signed short i16, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setI16Const(i16); return addConstantUnion(unionArray, TType(EbtInt16, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned short u16, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setU16Const(u16); return addConstantUnion(unionArray, TType(EbtUint16, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(int i, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setIConst(i); return addConstantUnion(unionArray, TType(EbtInt, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned int u, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setUConst(u); return addConstantUnion(unionArray, TType(EbtUint, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(long long i64, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setI64Const(i64); return addConstantUnion(unionArray, TType(EbtInt64, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned long long u64, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setU64Const(u64); return addConstantUnion(unionArray, TType(EbtUint64, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(bool b, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setBConst(b); return addConstantUnion(unionArray, TType(EbtBool, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(double d, TBasicType baseType, const TSourceLoc& loc, bool literal) const { assert(baseType == EbtFloat || baseType == EbtDouble || baseType == EbtFloat16 || baseType == EbtBFloat16 || baseType == EbtFloatE5M2 || baseType == EbtFloatE4M3); if (isEsProfile() && (baseType == EbtFloat || baseType == EbtFloat16)) { int exponent = 0; frexp(d, &exponent); int minExp = baseType == EbtFloat ? -126 : -14; int maxExp = baseType == EbtFloat ? 127 : 15; if (exponent > maxExp) { //overflow, d = inf d = std::numeric_limits::infinity(); } else if (exponent < minExp) { //underflow, d = 0.0; d = 0.0; } } TConstUnionArray unionArray(1); unionArray[0].setDConst(d); return addConstantUnion(unionArray, TType(baseType, EvqConst), loc, literal); } TIntermConstantUnion* TIntermediate::addConstantUnion(const TString* s, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); unionArray[0].setSConst(s); return addConstantUnion(unionArray, TType(EbtString, EvqConst), loc, literal); } // Put vector swizzle selectors onto the given sequence void TIntermediate::pushSelector(TIntermSequence& sequence, const TVectorSelector& selector, const TSourceLoc& loc) { TIntermConstantUnion* constIntNode = addConstantUnion(selector, loc); sequence.push_back(constIntNode); } // Put matrix swizzle selectors onto the given sequence void TIntermediate::pushSelector(TIntermSequence& sequence, const TMatrixSelector& selector, const TSourceLoc& loc) { TIntermConstantUnion* constIntNode = addConstantUnion(selector.coord1, loc); sequence.push_back(constIntNode); constIntNode = addConstantUnion(selector.coord2, loc); sequence.push_back(constIntNode); } // Make an aggregate node that has a sequence of all selectors. template TIntermTyped* TIntermediate::addSwizzle(TSwizzleSelectors& selector, const TSourceLoc& loc); template TIntermTyped* TIntermediate::addSwizzle(TSwizzleSelectors& selector, const TSourceLoc& loc); template TIntermTyped* TIntermediate::addSwizzle(TSwizzleSelectors& selector, const TSourceLoc& loc) { TIntermAggregate* node = new TIntermAggregate(EOpSequence); node->setLoc(loc); TIntermSequence &sequenceVector = node->getSequence(); for (int i = 0; i < selector.size(); i++) pushSelector(sequenceVector, selector[i], loc); return node; } // // Follow the left branches down to the root of an l-value // expression (just "." and []). // // Return the base of the l-value (where following indexing quits working). // Return nullptr if a chain following dereferences cannot be followed. // // 'swizzleOkay' says whether or not it is okay to consider a swizzle // a valid part of the dereference chain. // // 'bufferReferenceOk' says if type is buffer_reference, the routine will stop to find the most left node. // // 'proc' is an optional function to run on each node that is processed during the traversal. 'proc' must // return true to continue the traversal, or false to end the traversal early. // const TIntermTyped* TIntermediate::traverseLValueBase(const TIntermTyped* node, bool swizzleOkay, bool bufferReferenceOk, std::function proc) { do { const TIntermBinary* binary = node->getAsBinaryNode(); if (binary == nullptr) { if (proc) { proc(*node); } return node; } TOperator op = binary->getOp(); if (op != EOpIndexDirect && op != EOpIndexIndirect && op != EOpIndexDirectStruct && op != EOpVectorSwizzle && op != EOpMatrixSwizzle) return nullptr; if (!swizzleOkay) { if (op == EOpVectorSwizzle || op == EOpMatrixSwizzle) return nullptr; if ((op == EOpIndexDirect || op == EOpIndexIndirect) && (binary->getLeft()->getType().isVector() || binary->getLeft()->getType().isScalar()) && !binary->getLeft()->getType().isArray()) return nullptr; } if (proc) { if (!proc(*node)) { return node; } } node = binary->getLeft(); if (bufferReferenceOk && node->isReference()) return node; } while (true); } // // Create while and do-while loop nodes. // TIntermLoop* TIntermediate::addLoop(TIntermNode* body, TIntermTyped* test, TIntermTyped* terminal, bool testFirst, const TSourceLoc& loc) { TIntermLoop* node = new TIntermLoop(body, test, terminal, testFirst); node->setLoc(loc); return node; } // // Create a for-loop sequence. // TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* initializer, TIntermTyped* test, TIntermTyped* terminal, bool testFirst, const TSourceLoc& loc, TIntermLoop*& node) { node = new TIntermLoop(body, test, terminal, testFirst); node->setLoc(loc); // make a sequence of the initializer and statement, but try to reuse the // aggregate already created for whatever is in the initializer, if there is one TIntermAggregate* loopSequence = (initializer == nullptr || initializer->getAsAggregate() == nullptr) ? makeAggregate(initializer, loc) : initializer->getAsAggregate(); if (loopSequence != nullptr && (loopSequence->getOp() == EOpSequence || loopSequence->getOp() == EOpScope)) loopSequence->setOp(EOpNull); loopSequence = growAggregate(loopSequence, node); loopSequence->setOperator(getDebugInfo() ? EOpScope : EOpSequence); return loopSequence; } // // Add branches. // TIntermBranch* TIntermediate::addBranch(TOperator branchOp, const TSourceLoc& loc) { return addBranch(branchOp, nullptr, loc); } TIntermBranch* TIntermediate::addBranch(TOperator branchOp, TIntermTyped* expression, const TSourceLoc& loc) { TIntermBranch* node = new TIntermBranch(branchOp, expression); node->setLoc(loc); return node; } // Propagate precision from formal function return type to actual return type, // and on to its subtree. void TIntermBranch::updatePrecision(TPrecisionQualifier parentPrecision) { TIntermTyped* exp = getExpression(); if (exp == nullptr) return; if (exp->getBasicType() == EbtInt || exp->getBasicType() == EbtUint || exp->getBasicType() == EbtFloat) { if (parentPrecision != EpqNone && exp->getQualifier().precision == EpqNone) { exp->propagatePrecision(parentPrecision); } } } // // This is to be executed after the final root is put on top by the parsing // process. // bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/) { if (root == nullptr) return true; // Finish off the top-level sequence TIntermAggregate* aggRoot = root->getAsAggregate(); if (aggRoot && aggRoot->getOp() == EOpNull) aggRoot->setOperator(EOpSequence); // Propagate 'noContraction' label in backward from 'precise' variables. glslang::PropagateNoContraction(*this); switch (textureSamplerTransformMode) { case EShTexSampTransKeep: break; case EShTexSampTransUpgradeTextureRemoveSampler: performTextureUpgradeAndSamplerRemovalTransformation(root); break; case EShTexSampTransCount: assert(0); break; } return true; } void TIntermediate::addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage language, TSymbolTable& symbolTable) { // Add top-level nodes for declarations that must be checked cross // compilation unit by a linker, yet might not have been referenced // by the AST. // // Almost entirely, translation of symbols is driven by what's present // in the AST traversal, not by translating the symbol table. // // However, there are some special cases: // - From the specification: "Special built-in inputs gl_VertexID and // gl_InstanceID are also considered active vertex attributes." // - Linker-based type mismatch error reporting needs to see all // uniforms/ins/outs variables and blocks. // - ftransform() can make gl_Vertex and gl_ModelViewProjectionMatrix active. // // if (ftransformUsed) { // TODO: 1.1 lowering functionality: track ftransform() usage // addSymbolLinkageNode(root, symbolTable, "gl_Vertex"); // addSymbolLinkageNode(root, symbolTable, "gl_ModelViewProjectionMatrix"); //} if (language == EShLangVertex) { addSymbolLinkageNode(linkage, symbolTable, "gl_VertexID"); if ((version < 140 && requestedExtensions.find(E_GL_EXT_draw_instanced) != requestedExtensions.end()) || version >= 140) addSymbolLinkageNode(linkage, symbolTable, "gl_InstanceID"); } // Add a child to the root node for the linker objects linkage->setOperator(EOpLinkerObjects); treeRoot = growAggregate(treeRoot, linkage); } // // Add the given name or symbol to the list of nodes at the end of the tree used // for link-time checking and external linkage. // void TIntermediate::addSymbolLinkageNode(TIntermAggregate*& linkage, TSymbolTable& symbolTable, const TString& name) { TSymbol* symbol = symbolTable.find(name); if (symbol) addSymbolLinkageNode(linkage, *symbol->getAsVariable()); } void TIntermediate::addSymbolLinkageNode(TIntermAggregate*& linkage, const TSymbol& symbol) { const TVariable* variable = symbol.getAsVariable(); if (! variable) { // This must be a member of an anonymous block, and we need to add the whole block const TAnonMember* anon = symbol.getAsAnonMember(); variable = &anon->getAnonContainer(); } TIntermSymbol* node = addSymbol(*variable); linkage = growAggregate(linkage, node); } // // Add a caller->callee relationship to the call graph. // Assumes the strings are unique per signature. // void TIntermediate::addToCallGraph(TInfoSink& /*infoSink*/, const TString& caller, const TString& callee) { // Duplicates are okay, but faster to not keep them, and they come grouped by caller, // as long as new ones are push on the same end we check on for duplicates for (TGraph::const_iterator call = callGraph.begin(); call != callGraph.end(); ++call) { if (call->caller != caller) break; if (call->callee == callee) return; } callGraph.emplace_front(caller, callee); } // // This deletes the tree. // void TIntermediate::removeTree() { if (treeRoot) RemoveAllTreeNodes(treeRoot); } // // Implement the part of KHR_vulkan_glsl that lists the set of operations // that can result in a specialization constant operation. // // "5.x Specialization Constant Operations" // // Only some operations discussed in this section may be applied to a // specialization constant and still yield a result that is as // specialization constant. The operations allowed are listed below. // When a specialization constant is operated on with one of these // operators and with another constant or specialization constant, the // result is implicitly a specialization constant. // // - int(), uint(), and bool() constructors for type conversions // from any of the following types to any of the following types: // * int // * uint // * bool // - vector versions of the above conversion constructors // - allowed implicit conversions of the above // - swizzles (e.g., foo.yx) // - The following when applied to integer or unsigned integer types: // * unary negative ( - ) // * binary operations ( + , - , * , / , % ) // * shift ( <<, >> ) // * bitwise operations ( & , | , ^ ) // - The following when applied to integer or unsigned integer scalar types: // * comparison ( == , != , > , >= , < , <= ) // - The following when applied to the Boolean scalar type: // * not ( ! ) // * logical operations ( && , || , ^^ ) // * comparison ( == , != )" // // This function just handles binary and unary nodes. Construction // rules are handled in construction paths that are not covered by the unary // and binary paths, while required conversions will still show up here // as unary converters in the from a construction operator. // bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const { // The operations resulting in floating point are quite limited // (However, some floating-point operations result in bool, like ">", // so are handled later.) if (node.getType().isFloatingDomain()) { if (IsOpNumericConv(node.getOp()) && isTypeFloat(node.getType().getBasicType()) && isTypeFloat(node.getAsUnaryNode()->getOperand()->getAsTyped()->getType().getBasicType())) { return true; } switch (node.getOp()) { case EOpIndexDirect: case EOpIndexIndirect: case EOpIndexDirectStruct: case EOpVectorSwizzle: return true; default: return false; } } // Check for floating-point arguments if (const TIntermBinary* bin = node.getAsBinaryNode()) if (bin->getLeft() ->getType().isFloatingDomain() || bin->getRight()->getType().isFloatingDomain()) return false; // So, for now, we can assume everything left is non-floating-point... if (IsOpNumericConv(node.getOp())) { TBasicType srcType = node.getAsUnaryNode()->getOperand()->getAsTyped()->getType().getBasicType(); TBasicType dstType = node.getType().getBasicType(); if ((isTypeInt(srcType) || srcType == EbtBool) && (isTypeInt(dstType) || dstType == EbtBool)) { return true; } } // Now check for integer/bool-based operations switch (node.getOp()) { // dereference/swizzle case EOpIndexDirect: case EOpIndexIndirect: case EOpIndexDirectStruct: case EOpVectorSwizzle: // unary operations case EOpNegative: case EOpLogicalNot: case EOpBitwiseNot: // binary operations case EOpAdd: case EOpSub: case EOpMul: case EOpVectorTimesScalar: case EOpDiv: case EOpMod: case EOpRightShift: case EOpLeftShift: case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: case EOpLogicalOr: case EOpLogicalXor: case EOpLogicalAnd: case EOpEqual: case EOpNotEqual: case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: return true; default: return false; } } // Is the operation one that must propagate nonuniform? bool TIntermediate::isNonuniformPropagating(TOperator op) const { // "* All Operators in Section 5.1 (Operators), except for assignment, // arithmetic assignment, and sequence // * Component selection in Section 5.5 // * Matrix components in Section 5.6 // * Structure and Array Operations in Section 5.7, except for the length // method." switch (op) { case EOpPostIncrement: case EOpPostDecrement: case EOpPreIncrement: case EOpPreDecrement: case EOpNegative: case EOpLogicalNot: case EOpVectorLogicalNot: case EOpBitwiseNot: case EOpAdd: case EOpSub: case EOpMul: case EOpDiv: case EOpMod: case EOpRightShift: case EOpLeftShift: case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: case EOpEqual: case EOpNotEqual: case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: case EOpVectorTimesScalar: case EOpVectorTimesMatrix: case EOpMatrixTimesVector: case EOpMatrixTimesScalar: case EOpLogicalOr: case EOpLogicalXor: case EOpLogicalAnd: case EOpIndexDirect: case EOpIndexIndirect: case EOpIndexDirectStruct: case EOpVectorSwizzle: return true; default: break; } return false; } //////////////////////////////////////////////////////////////// // // Member functions of the nodes used for building the tree. // //////////////////////////////////////////////////////////////// // // Say whether or not an operation node changes the value of a variable. // // Returns true if state is modified. // bool TIntermOperator::modifiesState() const { switch (op) { case EOpPostIncrement: case EOpPostDecrement: case EOpPreIncrement: case EOpPreDecrement: case EOpAssign: case EOpAddAssign: case EOpSubAssign: case EOpMulAssign: case EOpVectorTimesMatrixAssign: case EOpVectorTimesScalarAssign: case EOpMatrixTimesScalarAssign: case EOpMatrixTimesMatrixAssign: case EOpDivAssign: case EOpModAssign: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: case EOpLeftShiftAssign: case EOpRightShiftAssign: return true; default: return false; } } // // returns true if the operator is for one of the constructors // bool TIntermOperator::isConstructor() const { return op > EOpConstructGuardStart && op < EOpConstructGuardEnd; } // // Make sure the type of an operator is appropriate for its // combination of operation and operand type. This will invoke // promoteUnary, promoteBinary, etc as needed. // // Returns false if nothing makes sense. // bool TIntermediate::promote(TIntermOperator* node) { if (node == nullptr) return false; if (node->getAsUnaryNode()) return promoteUnary(*node->getAsUnaryNode()); if (node->getAsBinaryNode()) return promoteBinary(*node->getAsBinaryNode()); if (node->getAsAggregate()) return promoteAggregate(*node->getAsAggregate()); return false; } // // See TIntermediate::promote // bool TIntermediate::promoteUnary(TIntermUnary& node) { const TOperator op = node.getOp(); TIntermTyped* operand = node.getOperand(); switch (op) { case EOpLogicalNot: // Convert operand to a boolean type if (operand->getBasicType() != EbtBool) { // Add constructor to boolean type. If that fails, we can't do it, so return false. TIntermTyped* converted = addConversion(op, TType(EbtBool), operand); if (converted == nullptr) return false; // Use the result of converting the node to a bool. node.setOperand(operand = converted); // also updates stack variable } break; case EOpBitwiseNot: if (!isTypeInt(operand->getBasicType())) return false; break; case EOpNegative: case EOpPostIncrement: case EOpPostDecrement: case EOpPreIncrement: case EOpPreDecrement: if (!isTypeInt(operand->getBasicType()) && operand->getBasicType() != EbtFloat && operand->getBasicType() != EbtFloat16 && operand->getBasicType() != EbtDouble) return false; break; default: // HLSL uses this path for initial function signature finding for built-ins // taking a single argument, which generally don't participate in // operator-based type promotion (type conversion will occur later). // For now, scalar argument cases are relying on the setType() call below. if (getSource() == EShSourceHlsl) break; // GLSL only allows integer arguments for the cases identified above in the // case statements. if (operand->getBasicType() != EbtFloat) return false; } node.setType(operand->getType()); node.getWritableType().getQualifier().makeTemporary(); return true; } // Propagate precision qualifiers *up* from children to parent. void TIntermUnary::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat) { if (operand->getQualifier().precision > getQualifier().precision) getQualifier().precision = operand->getQualifier().precision; } } // // See TIntermediate::promote // bool TIntermediate::promoteBinary(TIntermBinary& node) { TOperator op = node.getOp(); TIntermTyped* left = node.getLeft(); TIntermTyped* right = node.getRight(); // Arrays and structures have to be exact matches. if ((left->isArray() || right->isArray() || left->getBasicType() == EbtStruct || right->getBasicType() == EbtStruct) && left->getType() != right->getType()) return false; // Base assumption: just make the type the same as the left // operand. Only deviations from this will be coded. node.setType(left->getType()); node.getWritableType().getQualifier().clear(); // Composite and opaque types don't having pending operator changes, e.g., // array, structure, and samplers. Just establish final type and correctness. if (left->isArray() || left->getBasicType() == EbtStruct || left->getBasicType() == EbtSampler) { switch (op) { case EOpEqual: case EOpNotEqual: if (left->getBasicType() == EbtSampler) { // can't compare samplers return false; } else { // Promote to conditional node.setType(TType(EbtBool)); } return true; case EOpAssign: // Keep type from above return true; default: return false; } } // // We now have only scalars, vectors, and matrices to worry about. // // HLSL implicitly promotes bool -> int for numeric operations. // (Implicit conversions to make the operands match each other's types were already done.) if (getSource() == EShSourceHlsl && (left->getBasicType() == EbtBool || right->getBasicType() == EbtBool)) { switch (op) { case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: case EOpRightShift: case EOpLeftShift: case EOpMod: case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: case EOpAdd: case EOpSub: case EOpDiv: case EOpMul: if (left->getBasicType() == EbtBool) left = createConversion(EbtInt, left); if (right->getBasicType() == EbtBool) right = createConversion(EbtInt, right); if (left == nullptr || right == nullptr) return false; node.setLeft(left); node.setRight(right); // Update the original base assumption on result type.. node.setType(left->getType()); node.getWritableType().getQualifier().clear(); break; default: break; } } // Do general type checks against individual operands (comparing left and right is coming up, checking mixed shapes after that) switch (op) { case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: // Relational comparisons need numeric types and will promote to scalar Boolean. if (left->getBasicType() == EbtBool) return false; node.setType(TType(EbtBool, EvqTemporary, left->getVectorSize())); break; case EOpEqual: case EOpNotEqual: if (getSource() == EShSourceHlsl) { const int resultWidth = std::max(left->getVectorSize(), right->getVectorSize()); // In HLSL, == or != on vectors means component-wise comparison. if (resultWidth > 1) { op = (op == EOpEqual) ? EOpVectorEqual : EOpVectorNotEqual; node.setOp(op); } node.setType(TType(EbtBool, EvqTemporary, resultWidth)); } else { // All the above comparisons result in a bool (but not the vector compares) node.setType(TType(EbtBool)); } break; case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: // logical ops operate only on Booleans or vectors of Booleans. if (left->getBasicType() != EbtBool || left->isMatrix()) return false; if (getSource() == EShSourceGlsl) { // logical ops operate only on scalar Booleans and will promote to scalar Boolean. if (left->isVector()) return false; } node.setType(TType(EbtBool, EvqTemporary, left->getVectorSize())); break; case EOpRightShift: case EOpLeftShift: case EOpRightShiftAssign: case EOpLeftShiftAssign: case EOpMod: case EOpModAssign: case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: if (getSource() == EShSourceHlsl) break; // Check for integer-only operands. if (!isTypeInt(left->getBasicType()) && !isTypeInt(right->getBasicType())) return false; if (left->isMatrix() || right->isMatrix()) return false; break; case EOpAdd: case EOpSub: case EOpDiv: case EOpMul: case EOpAddAssign: case EOpSubAssign: case EOpMulAssign: case EOpDivAssign: // check for non-Boolean operands if (left->getBasicType() == EbtBool || right->getBasicType() == EbtBool) return false; break; default: break; } // Compare left and right, and finish with the cases where the operand types must match switch (op) { case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: case EOpEqual: case EOpNotEqual: case EOpVectorEqual: case EOpVectorNotEqual: case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: return left->getType() == right->getType(); case EOpMod: case EOpModAssign: case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: case EOpAdd: case EOpSub: case EOpDiv: case EOpAddAssign: case EOpSubAssign: case EOpDivAssign: // Quick out in case the types do match if (left->getType() == right->getType()) return true; [[fallthrough]]; case EOpMul: case EOpMulAssign: // At least the basic type has to match if (left->getBasicType() != right->getBasicType()) return false; break; default: break; } if (left->getType().isCoopMat() || right->getType().isCoopMat()) { // Operations on two cooperative matrices must have identical types if (left->getType().isCoopMat() && right->getType().isCoopMat() && left->getType() != right->getType()) { return false; } switch (op) { case EOpMul: case EOpMulAssign: // Mul not supported in NV_cooperative_matrix if (left->getType().isCoopMatNV() && right->getType().isCoopMatNV()) { return false; } // NV_cooperative_matrix supports MulAssign is for mat*=scalar only. // KHR_cooperative_matrix supports it for mat*=mat as well. if (op == EOpMulAssign && right->getType().isCoopMatNV()) { return false; } // Use MatrixTimesScalar if either operand is not a matrix. Otherwise use Mul. if (!left->getType().isCoopMat() || !right->getType().isCoopMat()) { node.setOp(op == EOpMulAssign ? EOpMatrixTimesScalarAssign : EOpMatrixTimesScalar); } // In case of scalar*matrix, take the result type from the matrix. if (right->getType().isCoopMat()) { node.setType(right->getType()); } return true; case EOpAdd: case EOpSub: case EOpDiv: case EOpAssign: // These require both to be cooperative matrices if (!left->getType().isCoopMat() || !right->getType().isCoopMat()) { return false; } return true; default: break; } return false; } if (left->getType().isCoopVecNV() || right->getType().isCoopVecNV()) { // Operations on two cooperative vectors must have identical types if (left->getType().isCoopVecNV() && right->getType().isCoopVecNV() && left->getType() != right->getType()) { return false; } switch (op) { case EOpMul: case EOpMulAssign: // Use VectorTimesScalar if either operand is not a vector. Otherwise use Mul. if (!left->getType().isCoopVecNV() || !right->getType().isCoopVecNV()) { node.setOp(op == EOpMulAssign ? EOpVectorTimesScalarAssign : EOpVectorTimesScalar); } // In case of scalar*vector, take the result type from the vector. if (right->getType().isCoopVecNV()) { node.setType(right->getType()); } return true; case EOpLeftShift: case EOpLeftShiftAssign: case EOpRightShift: case EOpRightShiftAssign: case EOpAdd: case EOpSub: case EOpDiv: case EOpAssign: // These require both to be cooperative vectors if (!left->getType().isCoopVecNV() || !right->getType().isCoopVecNV()) { return false; } return true; default: break; } return false; } // Finish handling the case, for all ops, where both operands are scalars. if (left->isScalar() && right->isScalar()) return true; // Finish handling the case, for all ops, where there are two vectors of different sizes if (left->isVector() && right->isVector() && left->getVectorSize() != right->getVectorSize() && right->getVectorSize() > 1) return false; // // We now have a mix of scalars, vectors, or matrices, for non-relational operations. // // Can these two operands be combined, what is the resulting type? TBasicType basicType = left->getBasicType(); switch (op) { case EOpMul: if (!left->isMatrix() && right->isMatrix()) { if (left->isVector()) { if (left->getVectorSize() != right->getMatrixRows()) return false; node.setOp(op = EOpVectorTimesMatrix); node.setType(TType(basicType, EvqTemporary, right->getMatrixCols())); } else { node.setOp(op = EOpMatrixTimesScalar); node.setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), right->getMatrixRows())); } } else if (left->isMatrix() && !right->isMatrix()) { if (right->isVector()) { if (left->getMatrixCols() != right->getVectorSize()) return false; node.setOp(op = EOpMatrixTimesVector); node.setType(TType(basicType, EvqTemporary, left->getMatrixRows())); } else { node.setOp(op = EOpMatrixTimesScalar); } } else if (left->isMatrix() && right->isMatrix()) { if (left->getMatrixCols() != right->getMatrixRows()) return false; node.setOp(op = EOpMatrixTimesMatrix); node.setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), left->getMatrixRows())); } else if (! left->isMatrix() && ! right->isMatrix()) { if (left->isVector() && right->isVector()) { ; // leave as component product } else if (left->isVector() || right->isVector()) { node.setOp(op = EOpVectorTimesScalar); if (right->isVector()) node.setType(TType(basicType, EvqTemporary, right->getVectorSize())); } } else { return false; } break; case EOpMulAssign: if (! left->isMatrix() && right->isMatrix()) { if (left->isVector()) { if (left->getVectorSize() != right->getMatrixRows() || left->getVectorSize() != right->getMatrixCols()) return false; node.setOp(op = EOpVectorTimesMatrixAssign); } else { return false; } } else if (left->isMatrix() && !right->isMatrix()) { if (right->isVector()) { return false; } else { node.setOp(op = EOpMatrixTimesScalarAssign); } } else if (left->isMatrix() && right->isMatrix()) { if (left->getMatrixCols() != right->getMatrixCols() || left->getMatrixCols() != right->getMatrixRows()) return false; node.setOp(op = EOpMatrixTimesMatrixAssign); } else if (!left->isMatrix() && !right->isMatrix()) { if (left->isVector() && right->isVector()) { // leave as component product } else if (left->isVector() || right->isVector()) { if (! left->isVector()) return false; node.setOp(op = EOpVectorTimesScalarAssign); } } else { return false; } break; case EOpRightShift: case EOpLeftShift: case EOpRightShiftAssign: case EOpLeftShiftAssign: if (right->isVector() && (! left->isVector() || right->getVectorSize() != left->getVectorSize())) return false; break; case EOpAssign: if (left->getVectorSize() != right->getVectorSize() || left->getMatrixCols() != right->getMatrixCols() || left->getMatrixRows() != right->getMatrixRows()) return false; [[fallthrough]]; case EOpAdd: case EOpSub: case EOpDiv: case EOpMod: case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: case EOpAddAssign: case EOpSubAssign: case EOpDivAssign: case EOpModAssign: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: if ((left->isMatrix() && right->isVector()) || (left->isVector() && right->isMatrix()) || left->getBasicType() != right->getBasicType()) return false; if (left->isMatrix() && right->isMatrix() && (left->getMatrixCols() != right->getMatrixCols() || left->getMatrixRows() != right->getMatrixRows())) return false; if (left->isVector() && right->isVector() && left->getVectorSize() != right->getVectorSize()) return false; if (right->isVector() || right->isMatrix()) { node.getWritableType().shallowCopy(right->getType()); node.getWritableType().getQualifier().makeTemporary(); } break; default: return false; } // // One more check for assignment. // switch (op) { // The resulting type has to match the left operand. case EOpAssign: case EOpAddAssign: case EOpSubAssign: case EOpMulAssign: case EOpDivAssign: case EOpModAssign: case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: case EOpLeftShiftAssign: case EOpRightShiftAssign: if (node.getType() != left->getType()) return false; break; default: break; } return true; } // // See TIntermediate::promote // bool TIntermediate::promoteAggregate(TIntermAggregate& node) { TOperator op = node.getOp(); TIntermSequence& args = node.getSequence(); const int numArgs = static_cast(args.size()); // Presently, only hlsl does intrinsic promotions. if (getSource() != EShSourceHlsl) return true; // set of opcodes that can be promoted in this manner. switch (op) { case EOpAtan: case EOpClamp: case EOpCross: case EOpDistance: case EOpDot: case EOpDst: case EOpFaceForward: // case EOpFindMSB: TODO: // case EOpFindLSB: TODO: case EOpFma: case EOpMod: case EOpFrexp: case EOpLdexp: case EOpMix: case EOpLit: case EOpMax: case EOpMin: case EOpModf: // case EOpGenMul: TODO: case EOpPow: case EOpReflect: case EOpRefract: // case EOpSinCos: TODO: case EOpSmoothStep: case EOpStep: break; default: return true; } // TODO: array and struct behavior // Try converting all nodes to the given node's type TIntermSequence convertedArgs(numArgs, nullptr); // Try to convert all types to the nonConvArg type. for (int nonConvArg = 0; nonConvArg < numArgs; ++nonConvArg) { // Try converting all args to this arg's type for (int convArg = 0; convArg < numArgs; ++convArg) { convertedArgs[convArg] = addConversion(op, args[nonConvArg]->getAsTyped()->getType(), args[convArg]->getAsTyped()); } // If we successfully converted all the args, use the result. if (std::all_of(convertedArgs.begin(), convertedArgs.end(), [](const TIntermNode* node) { return node != nullptr; })) { std::swap(args, convertedArgs); return true; } } return false; } // Propagate precision qualifiers *up* from children to parent, and then // back *down* again to the children's subtrees. void TIntermAggregate::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat) { TPrecisionQualifier maxPrecision = EpqNone; TIntermSequence operands = getSequence(); for (unsigned int i = 0; i < operands.size(); ++i) { TIntermTyped* typedNode = operands[i]->getAsTyped(); assert(typedNode); maxPrecision = std::max(maxPrecision, typedNode->getQualifier().precision); } getQualifier().precision = maxPrecision; for (unsigned int i = 0; i < operands.size(); ++i) { TIntermTyped* typedNode = operands[i]->getAsTyped(); assert(typedNode); typedNode->propagatePrecision(maxPrecision); } } } // Propagate precision qualifiers *up* from children to parent, and then // back *down* again to the children's subtrees. void TIntermBinary::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || 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; } else { getQualifier().precision = std::max(right->getQualifier().precision, left->getQualifier().precision); if (getQualifier().precision != EpqNone) { left->propagatePrecision(getQualifier().precision); right->propagatePrecision(getQualifier().precision); } } } } // Recursively propagate precision qualifiers *down* the subtree of the current node, // until reaching a node that already has a precision qualifier or otherwise does // not participate in precision propagation. void TIntermTyped::propagatePrecision(TPrecisionQualifier newPrecision) { if (getQualifier().precision != EpqNone || (getBasicType() != EbtInt && getBasicType() != EbtUint && getBasicType() != EbtFloat && getBasicType() != EbtFloat16)) return; getQualifier().precision = newPrecision; TIntermBinary* binaryNode = getAsBinaryNode(); if (binaryNode) { binaryNode->getLeft()->propagatePrecision(newPrecision); binaryNode->getRight()->propagatePrecision(newPrecision); return; } TIntermUnary* unaryNode = getAsUnaryNode(); if (unaryNode) { unaryNode->getOperand()->propagatePrecision(newPrecision); return; } TIntermAggregate* aggregateNode = getAsAggregate(); if (aggregateNode) { TIntermSequence operands = aggregateNode->getSequence(); for (unsigned int i = 0; i < operands.size(); ++i) { TIntermTyped* typedNode = operands[i]->getAsTyped(); if (! typedNode) break; typedNode->propagatePrecision(newPrecision); } return; } TIntermSelection* selectionNode = getAsSelectionNode(); if (selectionNode) { TIntermTyped* typedNode = selectionNode->getTrueBlock()->getAsTyped(); if (typedNode) { typedNode->propagatePrecision(newPrecision); typedNode = selectionNode->getFalseBlock()->getAsTyped(); if (typedNode) typedNode->propagatePrecision(newPrecision); } return; } } TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermConstantUnion* node) const { const TConstUnionArray& rightUnionArray = node->getConstArray(); int size = node->getType().computeNumComponents(); TConstUnionArray leftUnionArray(size); for (int i=0; i < size; i++) { #define PROMOTE(Set, CType, Get) leftUnionArray[i].Set(static_cast(rightUnionArray[i].Get())) #define PROMOTE_TO_BOOL(Get) leftUnionArray[i].setBConst(rightUnionArray[i].Get() != 0) #define TO_ALL(Get) \ switch (promoteTo) { \ case EbtBFloat16: PROMOTE(setDConst, double, Get); break; \ case EbtFloatE5M2: PROMOTE(setDConst, double, Get); break; \ case EbtFloatE4M3: PROMOTE(setDConst, double, Get); break; \ 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, 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; \ case EbtUint8: PROMOTE(setU8Const, unsigned char, Get); break; \ case EbtUint16: PROMOTE(setU16Const, unsigned short, Get); break; \ case EbtUint: PROMOTE(setUConst, unsigned int, Get); break; \ case EbtUint64: PROMOTE(setU64Const, unsigned long long, Get); break; \ case EbtBool: PROMOTE_TO_BOOL(Get); break; \ default: return node; \ } switch (node->getType().getBasicType()) { case EbtFloat: TO_ALL(getDConst); break; case EbtInt: TO_ALL(getIConst); break; case EbtUint: TO_ALL(getUConst); break; case EbtBool: TO_ALL(getBConst); break; case EbtFloat16: TO_ALL(getDConst); break; case EbtBFloat16: TO_ALL(getDConst); break; case EbtFloatE5M2: TO_ALL(getDConst); break; case EbtFloatE4M3: TO_ALL(getDConst); break; case EbtDouble: TO_ALL(getDConst); break; case EbtInt8: TO_ALL(getI8Const); break; case EbtInt16: TO_ALL(getI16Const); break; case EbtInt64: TO_ALL(getI64Const); break; case EbtUint8: TO_ALL(getU8Const); break; case EbtUint16: TO_ALL(getU16Const); break; case EbtUint64: TO_ALL(getU64Const); break; default: return node; } } const TType& t = node->getType(); return addConstantUnion(leftUnionArray, TType(promoteTo, t.getQualifier().storage, t.getVectorSize(), t.getMatrixCols(), t.getMatrixRows()), node->getLoc()); } void TIntermAggregate::setPragmaTable(const TPragmaTable& pTable) { assert(pragmaTable == nullptr); pragmaTable = new TPragmaTable; *pragmaTable = pTable; } // If either node is a specialization constant, while the other is // a constant (or specialization constant), the result is still // a specialization constant. bool TIntermediate::specConstantPropagates(const TIntermTyped& node1, const TIntermTyped& node2) { return (node1.getType().getQualifier().isSpecConstant() && node2.getType().getQualifier().isConstant()) || (node2.getType().getQualifier().isSpecConstant() && node1.getType().getQualifier().isConstant()); } struct TextureUpgradeAndSamplerRemovalTransform : public TIntermTraverser { void visitSymbol(TIntermSymbol* symbol) override { if (symbol->getBasicType() == EbtSampler && symbol->getType().getSampler().isTexture()) { symbol->getWritableType().getSampler().setCombined(true); } } bool visitAggregate(TVisit, TIntermAggregate* ag) override { using namespace std; TIntermSequence& seq = ag->getSequence(); TQualifierList& qual = ag->getQualifierList(); // qual and seq are indexed using the same indices, so we have to modify both in lock-step assert(seq.size() == qual.size() || qual.empty()); size_t write = 0; for (size_t i = 0; i < seq.size(); ++i) { TIntermSymbol* symbol = seq[i]->getAsSymbolNode(); if (symbol && symbol->getBasicType() == EbtSampler && symbol->getType().getSampler().isPureSampler()) { // remove pure sampler variables continue; } TIntermNode* result = seq[i]; // replace constructors with sampler/textures TIntermAggregate *constructor = seq[i]->getAsAggregate(); if (constructor && constructor->getOp() == EOpConstructTextureSampler) { if (!constructor->getSequence().empty()) result = constructor->getSequence()[0]; } // write new node & qualifier seq[write] = result; if (!qual.empty()) qual[write] = qual[i]; write++; } seq.resize(write); if (!qual.empty()) qual.resize(write); return true; } }; void TIntermediate::performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root) { TextureUpgradeAndSamplerRemovalTransform transform; root->traverse(&transform); } const char* TIntermediate::getResourceName(TResourceType res) { switch (res) { case EResSampler: return "shift-sampler-binding"; case EResTexture: return "shift-texture-binding"; case EResImage: return "shift-image-binding"; case EResUbo: return "shift-UBO-binding"; case EResSsbo: return "shift-ssbo-binding"; case EResUav: return "shift-uav-binding"; default: assert(0); // internal error: should only be called with valid resource types. return nullptr; } } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/LiveTraverser.h000066400000000000000000000203141506534232700233530ustar00rootroot00000000000000// // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #pragma once #include "../Include/Common.h" #include "reflection.h" #include "localintermediate.h" #include "gl_types.h" #include #include namespace glslang { // // The traverser: mostly pass through, except // - processing function-call nodes to push live functions onto the stack of functions to process // - processing selection nodes to trim semantically dead code // // This is in the glslang namespace directly so it can be a friend of TReflection. // This can be derived from to implement reflection database traversers or // binding mappers: anything that wants to traverse the live subset of the tree. // class TLiveTraverser : public TIntermTraverser { public: TLiveTraverser(const TIntermediate& i, bool traverseAll = false, bool preVisit = true, bool inVisit = false, bool postVisit = false) : TIntermTraverser(preVisit, inVisit, postVisit), intermediate(i), traverseAll(traverseAll) { } // // Given a function name, find its subroot in the tree, and push it onto the stack of // functions left to process. // void pushFunction(const TString& name) { TIntermSequence& globals = intermediate.getTreeRoot()->getAsAggregate()->getSequence(); for (unsigned int f = 0; f < globals.size(); ++f) { TIntermAggregate* candidate = globals[f]->getAsAggregate(); if (candidate && candidate->getOp() == EOpFunction && candidate->getName() == name) { destinations.push_back(candidate); break; } } } void pushGlobalReference(const TString& name) { TIntermSequence& globals = intermediate.getTreeRoot()->getAsAggregate()->getSequence(); for (unsigned int f = 0; f < globals.size(); ++f) { TIntermAggregate* candidate = globals[f]->getAsAggregate(); if (candidate && candidate->getOp() == EOpSequence && candidate->getSequence().size() == 1 && candidate->getSequence()[0]->getAsBinaryNode()) { TIntermBinary* binary = candidate->getSequence()[0]->getAsBinaryNode(); TIntermSymbol* symbol = binary->getLeft()->getAsSymbolNode(); if (symbol && symbol->getQualifier().storage == EvqGlobal && symbol->getName() == name) { destinations.push_back(candidate); break; } } } } typedef std::list TDestinationStack; TDestinationStack destinations; protected: // To catch which function calls are not dead, and hence which functions must be visited. virtual bool visitAggregate(TVisit, TIntermAggregate* node) { if (!traverseAll) if (node->getOp() == EOpFunctionCall) addFunctionCall(node); return true; // traverse this subtree } // To prune semantically dead paths. virtual bool visitSelection(TVisit /* visit */, TIntermSelection* node) { if (traverseAll) return true; // traverse all code TIntermConstantUnion* constant = node->getCondition()->getAsConstantUnion(); if (constant) { // cull the path that is dead if (constant->getConstArray()[0].getBConst() == true && node->getTrueBlock()) node->getTrueBlock()->traverse(this); if (constant->getConstArray()[0].getBConst() == false && node->getFalseBlock()) node->getFalseBlock()->traverse(this); return false; // don't traverse any more, we did it all above } else return true; // traverse the whole subtree } // To prune semantically dead paths in switch statements with constant expressions. virtual bool visitSwitch(TVisit /* visit */, TIntermSwitch* node) { if (traverseAll) return true; // traverse all code TIntermConstantUnion* constant = node->getCondition()->getAsConstantUnion(); if (constant) { TConstUnion switchValue = constant->getConstArray()[0]; int liveBranch = -1; const auto& body = node->getBody()->getSequence(); for (unsigned int i = 0; i < body.size(); ++i) { if (body[i]->getAsBranchNode()) { if (body[i]->getAsBranchNode()->getFlowOp() == glslang::EOpCase) { TConstUnion caseValue = body[i]->getAsBranchNode()->getExpression()->getAsConstantUnion()->getConstArray()[0]; if (switchValue == caseValue.getIConst()) { liveBranch = (int)i; break; } } else if (body[i]->getAsBranchNode()->getFlowOp() == glslang::EOpDefault) { liveBranch = (int)i; } } } if (liveBranch != -1) { for (int i = liveBranch; i < (int)body.size(); ++i) { if (body[i]->getAsAggregate()) { for (auto* inst : body[i]->getAsAggregate()->getSequence()) { if (inst->getAsBranchNode() && (inst->getAsBranchNode()->getFlowOp() == glslang::EOpBreak)) return false; // found and traversed the live case(s) inst->traverse(this); } } } } return false; // finished traversing all cases } else return true; // traverse the whole subtree } // Track live functions as well as uniforms, so that we don't visit dead functions // and only visit each function once. void addFunctionCall(TIntermAggregate* call) { // just use the map to ensure we process each function at most once if (liveFunctions.find(call->getName()) == liveFunctions.end()) { liveFunctions.insert(call->getName()); pushFunction(call->getName()); } } void addGlobalReference(const TString& name) { // just use the map to ensure we process each global at most once if (liveGlobals.find(name) == liveGlobals.end()) { liveGlobals.insert(name); pushGlobalReference(name); } } const TIntermediate& intermediate; typedef std::unordered_set TLiveFunctions; TLiveFunctions liveFunctions; typedef std::unordered_set TLiveGlobals; TLiveGlobals liveGlobals; bool traverseAll; private: // prevent copy & copy construct TLiveTraverser(TLiveTraverser&); TLiveTraverser& operator=(TLiveTraverser&); }; } // namespace glslang glslang-16.0.0/glslang/MachineIndependent/ParseContextBase.cpp000066400000000000000000000667541506534232700243450ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Implement the TParseContextBase class. #include #include "ParseHelper.h" extern int yyparse(glslang::TParseContext*); namespace glslang { // // Used to output syntax, parsing, and semantic errors. // void TParseContextBase::outputMessage(const TSourceLoc& loc, const char* szReason, const char* szToken, const char* szExtraInfoFormat, TPrefixType prefix, va_list args) { const int maxSize = MaxTokenLength + 200; char szExtraInfo[maxSize]; safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); infoSink.info.prefix(prefix); infoSink.info.location(loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; if (prefix == EPrefixError) { ++numErrors; } } void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) { 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); va_end(args); if ((messages & EShMsgCascadingErrors) == 0) currentScanner->setEndOfInput(); } void C_DECL TParseContextBase::warn(const TSourceLoc& loc, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) { if (suppressWarnings()) return; va_list args; va_start(args, szExtraInfoFormat); outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); va_end(args); } void C_DECL TParseContextBase::ppError(const TSourceLoc& loc, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) { va_list args; va_start(args, szExtraInfoFormat); outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); va_end(args); if ((messages & EShMsgCascadingErrors) == 0) currentScanner->setEndOfInput(); } void C_DECL TParseContextBase::ppWarn(const TSourceLoc& loc, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) { va_list args; va_start(args, szExtraInfoFormat); outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); va_end(args); } // // Both test and if necessary, spit out an error, to see if the node is really // an l-value that can be operated on this way. // // Returns true if there was an error. // bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { TIntermBinary* binaryNode = node->getAsBinaryNode(); const char* symbol = nullptr; TIntermSymbol* symNode = node->getAsSymbolNode(); if (symNode != nullptr) symbol = symNode->getName().c_str(); const char* message = nullptr; switch (node->getQualifier().storage) { case EvqConst: message = "can't modify a const"; break; case EvqConstReadOnly: message = "can't modify a const"; break; case EvqUniform: message = "can't modify a uniform"; break; case EvqBuffer: if (node->getQualifier().isReadOnly()) message = "can't modify a readonly buffer"; if (node->getQualifier().isShaderRecord()) message = "can't modify a shaderrecordnv qualified buffer"; break; case EvqHitAttr: if (language != EShLangIntersect) message = "cannot modify hitAttributeNV in this stage"; break; default: // // Type that can't be written to? // switch (node->getBasicType()) { case EbtSampler: if (extensionTurnedOn(E_GL_ARB_bindless_texture) == false) message = "can't modify a sampler"; break; case EbtVoid: message = "can't modify void"; break; case EbtAtomicUint: message = "can't modify an atomic_uint"; break; case EbtAccStruct: message = "can't modify accelerationStructureNV"; break; case EbtRayQuery: message = "can't modify rayQueryEXT"; break; case EbtHitObjectNV: message = "can't modify hitObjectNV"; break; default: break; } } if (message == nullptr && binaryNode == nullptr && symNode == nullptr) { error(loc, " l-value required", op, "", ""); return true; } // // Everything else is okay, no error. // if (message == nullptr) { if (binaryNode) { switch (binaryNode->getOp()) { case EOpIndexDirect: case EOpIndexIndirect: // fall through case EOpIndexDirectStruct: // fall through case EOpVectorSwizzle: case EOpMatrixSwizzle: return lValueErrorCheck(loc, op, binaryNode->getLeft()); default: break; } error(loc, " l-value required", op, "", ""); return true; } return false; } // // If we get here, we have an error and a message. // const TIntermTyped* leftMostTypeNode = TIntermediate::traverseLValueBase(node, true); if (symNode) error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message); else if (binaryNode && binaryNode->getAsOperator()->getOp() == EOpIndexDirectStruct) if(IsAnonymous(leftMostTypeNode->getAsSymbolNode()->getName())) error(loc, " l-value required", op, "\"%s\" (%s)", leftMostTypeNode->getAsSymbolNode()->getAccessName().c_str(), message); else error(loc, " l-value required", op, "\"%s\" (%s)", leftMostTypeNode->getAsSymbolNode()->getName().c_str(), message); else error(loc, " l-value required", op, "(%s)", message); return true; } // Test for and give an error if the node can't be read from. void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { if (! node) return; TIntermBinary* binaryNode = node->getAsBinaryNode(); const TIntermSymbol* symNode = node->getAsSymbolNode(); if (node->getQualifier().isWriteOnly()) { const TIntermTyped* leftMostTypeNode = TIntermediate::traverseLValueBase(node, true); if (symNode != nullptr) error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); else if (binaryNode && (binaryNode->getAsOperator()->getOp() == EOpIndexDirectStruct || binaryNode->getAsOperator()->getOp() == EOpIndexDirect)) if(IsAnonymous(leftMostTypeNode->getAsSymbolNode()->getName())) error(loc, "can't read from writeonly object: ", op, leftMostTypeNode->getAsSymbolNode()->getAccessName().c_str()); else error(loc, "can't read from writeonly object: ", op, leftMostTypeNode->getAsSymbolNode()->getName().c_str()); else error(loc, "can't read from writeonly object: ", op, ""); } else { if (binaryNode) { switch (binaryNode->getOp()) { case EOpIndexDirect: case EOpIndexIndirect: case EOpIndexDirectStruct: case EOpVectorSwizzle: case EOpMatrixSwizzle: rValueErrorCheck(loc, op, binaryNode->getLeft()); break; default: break; } } } } // Add 'symbol' to the list of deferred linkage symbols, which // are later processed in finish(), at which point the symbol // must still be valid. // It is okay if the symbol's type will be subsequently edited; // the modifications will be tracked. // Order is preserved, to avoid creating novel forward references. void TParseContextBase::trackLinkage(TSymbol& symbol) { if (!parsingBuiltins) linkageSymbols.push_back(&symbol); } // Ensure index is in bounds, correct if necessary. // Give an error if not. void TParseContextBase::checkIndex(const TSourceLoc& loc, const TType& type, int& index) { const auto sizeIsSpecializationExpression = [&type]() { return type.containsSpecializationSize() && type.getArraySizes()->getOuterNode() != nullptr && type.getArraySizes()->getOuterNode()->getAsSymbolNode() == nullptr; }; if (index < 0) { error(loc, "", "[", "index out of range '%d'", index); index = 0; } else if (type.isArray()) { if (type.isSizedArray() && !sizeIsSpecializationExpression() && index >= type.getOuterArraySize()) { error(loc, "", "[", "array index out of range '%d'", index); index = type.getOuterArraySize() - 1; } } else if (type.isVector()) { if (index >= type.getVectorSize()) { error(loc, "", "[", "vector index out of range '%d'", index); index = type.getVectorSize() - 1; } } else if (type.isMatrix()) { if (index >= type.getMatrixCols()) { error(loc, "", "[", "matrix index out of range '%d'", index); index = type.getMatrixCols() - 1; } } else if (type.isCoopVecNV()) { if (index >= type.computeNumComponents()) { error(loc, "", "[", "cooperative vector index out of range '%d'", index); index = type.computeNumComponents() - 1; } } } // Make a shared symbol have a non-shared version that can be edited by the current // compile, such that editing its type will not change the shared version and will // effect all nodes already sharing it (non-shallow type), // or adopting its full type after being edited (shallow type). void TParseContextBase::makeEditable(TSymbol*& symbol) { // copyUp() does a deep copy of the type. symbol = symbolTable.copyUp(symbol); // Save it (deferred, so it can be edited first) in the AST for linker use. if (symbol) trackLinkage(*symbol); } // Return a writable version of the variable 'name'. // // Return nullptr if 'name' is not found. This should mean // something is seriously wrong (e.g., compiler asking self for // built-in that doesn't exist). TVariable* TParseContextBase::getEditableVariable(const char* name) { bool builtIn; TSymbol* symbol = symbolTable.find(name, &builtIn); assert(symbol != nullptr); if (symbol == nullptr) return nullptr; if (builtIn) makeEditable(symbol); return symbol->getAsVariable(); } // Select the best matching function for 'call' from 'candidateList'. // // Assumptions // // There is no exact match, so a selection algorithm needs to run. That is, the // language-specific handler should check for exact match first, to // decide what to do, before calling this selector. // // Input // // * list of candidate signatures to select from // * the call // * a predicate function convertible(from, to) that says whether or not type // 'from' can implicitly convert to type 'to' (it includes the case of what // the calling language would consider a matching type with no conversion // needed) // * a predicate function better(from1, from2, to1, to2) that says whether or // not a conversion from <-> to2 is considered better than a conversion // from <-> to1 (both in and out directions need testing, as declared by the // formal parameter) // // Output // // * best matching candidate (or none, if no viable candidates found) // * whether there was a tie for the best match (ambiguous overload selection, // caller's choice for how to report) // const TFunction* TParseContextBase::selectFunction( const TVector candidateList, const TFunction& call, std::function convertible, std::function better, /* output */ bool& tie) { // // Operation // // 1. Prune the input list of candidates down to a list of viable candidates, // where each viable candidate has // // * at least as many parameters as there are calling arguments, with any // remaining parameters being optional or having default values // * each parameter is true under convertible(A, B), where A is the calling // type for in and B is the formal type, and in addition, for out B is the // calling type and A is the formal type // // 2. If there are no viable candidates, return with no match. // // 3. If there is only one viable candidate, it is the best match. // // 4. If there are multiple viable candidates, select the first viable candidate // as the incumbent. Compare the incumbent to the next viable candidate, and if // that candidate is better (bullets below), make it the incumbent. Repeat, with // a linear walk through the viable candidate list. The final incumbent will be // returned as the best match. A viable candidate is better than the incumbent if // // * it has a function argument with a better(...) conversion than the incumbent, // for all directions needed by in and out // * the incumbent has no argument with a better(...) conversion then the // candidate, for either in or out (as needed) // // 5. Check for ambiguity by comparing the best match against all other viable // candidates. If any other viable candidate has a function argument with a // better(...) conversion than the best candidate (for either in or out // directions), return that there was a tie for best. // tie = false; // 1. prune to viable... TVector viableCandidates; for (auto it = candidateList.begin(); it != candidateList.end(); ++it) { const TFunction& candidate = *(*it); // to even be a potential match, number of arguments must be >= the number of // fixed (non-default) parameters, and <= the total (including parameter with defaults). if (call.getParamCount() < candidate.getFixedParamCount() || (call.getParamCount() > candidate.getParamCount() && !candidate.isVariadic())) continue; // see if arguments are convertible bool viable = true; // The call can have fewer parameters than the candidate, if some have defaults. const int paramCount = std::min(call.getParamCount(), candidate.getParamCount()); for (int param = 0; param < paramCount; ++param) { if (candidate[param].type->getQualifier().isParamInput()) { if (! convertible(*call[param].type, *candidate[param].type, candidate.getBuiltInOp(), param)) { viable = false; break; } } if (candidate[param].type->getQualifier().isParamOutput()) { if (! convertible(*candidate[param].type, *call[param].type, candidate.getBuiltInOp(), param)) { viable = false; break; } } } if (viable) viableCandidates.push_back(&candidate); } // 2. none viable... if (viableCandidates.size() == 0) return nullptr; // 3. only one viable... if (viableCandidates.size() == 1) return viableCandidates.front(); // 4. find best... const auto betterParam = [&call, &better](const TFunction& can1, const TFunction& can2) -> bool { // is call -> can2 better than call -> can1 for any parameter bool hasBetterParam = false; const int paramCount = std::min({call.getParamCount(), can1.getParamCount(), can2.getParamCount()}); for (int param = 0; param < paramCount; ++param) { if (better(*call[param].type, *can1[param].type, *can2[param].type)) { hasBetterParam = true; break; } } return hasBetterParam; }; const auto equivalentParams = [&call, &better](const TFunction& can1, const TFunction& can2) -> bool { // is call -> can2 equivalent to call -> can1 for all the call parameters? const int paramCount = std::min({call.getParamCount(), can1.getParamCount(), can2.getParamCount()}); for (int param = 0; param < paramCount; ++param) { if (better(*call[param].type, *can1[param].type, *can2[param].type) || better(*call[param].type, *can2[param].type, *can1[param].type)) return false; } return true; }; const TFunction* incumbent = viableCandidates.front(); for (auto it = viableCandidates.begin() + 1; it != viableCandidates.end(); ++it) { const TFunction& candidate = *(*it); if (betterParam(*incumbent, candidate) && ! betterParam(candidate, *incumbent)) incumbent = &candidate; } // 5. ambiguity... for (auto it = viableCandidates.begin(); it != viableCandidates.end(); ++it) { if (incumbent == *it) continue; const TFunction& candidate = *(*it); // In the case of default parameters, it may have an identical initial set, which is // also ambiguous if (betterParam(*incumbent, candidate) || equivalentParams(*incumbent, candidate)) tie = true; } return incumbent; } // // Look at a '.' field selector string and change it into numerical selectors // for a vector or scalar. // // Always return some form of swizzle, so the result is always usable. // void TParseContextBase::parseSwizzleSelector(const TSourceLoc& loc, const TString& compString, int vecSize, TSwizzleSelectors& selector) { // Too long? if (compString.size() > MaxSwizzleSelectors) error(loc, "vector swizzle too long", compString.c_str(), ""); // Use this to test that all swizzle characters are from the same swizzle-namespace-set enum { exyzw, ergba, estpq, } fieldSet[MaxSwizzleSelectors]; // Decode the swizzle string. int size = std::min(MaxSwizzleSelectors, (int)compString.size()); for (int i = 0; i < size; ++i) { switch (compString[i]) { case 'x': selector.push_back(0); fieldSet[i] = exyzw; break; case 'r': selector.push_back(0); fieldSet[i] = ergba; break; case 's': selector.push_back(0); fieldSet[i] = estpq; break; case 'y': selector.push_back(1); fieldSet[i] = exyzw; break; case 'g': selector.push_back(1); fieldSet[i] = ergba; break; case 't': selector.push_back(1); fieldSet[i] = estpq; break; case 'z': selector.push_back(2); fieldSet[i] = exyzw; break; case 'b': selector.push_back(2); fieldSet[i] = ergba; break; case 'p': selector.push_back(2); fieldSet[i] = estpq; break; case 'w': selector.push_back(3); fieldSet[i] = exyzw; break; case 'a': selector.push_back(3); fieldSet[i] = ergba; break; case 'q': selector.push_back(3); fieldSet[i] = estpq; break; default: error(loc, "unknown swizzle selection", compString.c_str(), ""); break; } } // Additional error checking. for (int i = 0; i < selector.size(); ++i) { if (selector[i] >= vecSize) { error(loc, "vector swizzle selection out of range", compString.c_str(), ""); selector.resize(i); break; } if (i > 0 && fieldSet[i] != fieldSet[i-1]) { error(loc, "vector swizzle selectors not from the same set", compString.c_str(), ""); selector.resize(i); break; } } // Ensure it is valid. if (selector.size() == 0) selector.push_back(0); } // // Make the passed-in variable information become a member of the // global uniform block. If this doesn't exist yet, make it. // void TParseContextBase::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList) { // Make the global block, if not yet made. if (globalUniformBlock == nullptr) { TQualifier blockQualifier; blockQualifier.clear(); blockQualifier.storage = EvqUniform; TType blockType(new TTypeList, *NewPoolTString(getGlobalUniformBlockName()), blockQualifier); setUniformBlockDefaults(blockType); globalUniformBlock = new TVariable(NewPoolTString(""), blockType, true); firstNewMember = 0; } // Update with binding and set globalUniformBlock->getWritableType().getQualifier().layoutBinding = globalUniformBinding; globalUniformBlock->getWritableType().getQualifier().layoutSet = globalUniformSet; // Check for declarations of this default uniform that already exist due to other compilation units. TSymbol* symbol = symbolTable.find(memberName); if (symbol) { if (memberType != symbol->getType()) { TString err; err += "Redeclaration: already declared as \"" + symbol->getType().getCompleteString() + "\""; error(loc, "", memberName.c_str(), err.c_str()); } return; } // Add the requested member as a member to the global block. TType* type = new TType; type->shallowCopy(memberType); type->setFieldName(memberName); if (typeList) type->setStruct(typeList); TTypeLoc typeLoc = {type, loc}; globalUniformBlock->getType().getWritableStruct()->push_back(typeLoc); // Insert into the symbol table. if (firstNewMember == 0) { // This is the first request; we need a normal symbol table insert if (symbolTable.insert(*globalUniformBlock)) trackLinkage(*globalUniformBlock); else error(loc, "failed to insert the global constant buffer", "uniform", ""); } else { // This is a follow-on request; we need to amend the first insert symbolTable.amend(*globalUniformBlock, firstNewMember); } ++firstNewMember; } void TParseContextBase::growAtomicCounterBlock(int binding, const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList) { // Make the atomic counter block, if not yet made. const auto &at = atomicCounterBuffers.find(binding); if (at == atomicCounterBuffers.end()) { atomicCounterBuffers.insert({binding, (TVariable*)nullptr }); atomicCounterBlockFirstNewMember.insert({binding, 0}); } TVariable*& atomicCounterBuffer = atomicCounterBuffers[binding]; int& bufferNewMember = atomicCounterBlockFirstNewMember[binding]; if (atomicCounterBuffer == nullptr) { TQualifier blockQualifier; blockQualifier.clear(); blockQualifier.storage = EvqBuffer; char charBuffer[512]; if (binding != TQualifier::layoutBindingEnd) { snprintf(charBuffer, 512, "%s_%d", getAtomicCounterBlockName(), binding); } else { snprintf(charBuffer, 512, "%s_0", getAtomicCounterBlockName()); } TType blockType(new TTypeList, *NewPoolTString(charBuffer), blockQualifier); setUniformBlockDefaults(blockType); blockType.getQualifier().layoutPacking = ElpStd430; atomicCounterBuffer = new TVariable(NewPoolTString(""), blockType, true); // If we arn't auto mapping bindings then set the block to use the same // binding as what the atomic was set to use if (!intermediate.getAutoMapBindings()) { atomicCounterBuffer->getWritableType().getQualifier().layoutBinding = binding; } bufferNewMember = 0; atomicCounterBuffer->getWritableType().getQualifier().layoutSet = atomicCounterBlockSet; } // Add the requested member as a member to the global block. TType* type = new TType; type->shallowCopy(memberType); type->setFieldName(memberName); if (typeList) type->setStruct(typeList); TTypeLoc typeLoc = {type, loc}; atomicCounterBuffer->getType().getWritableStruct()->push_back(typeLoc); // Insert into the symbol table. if (bufferNewMember == 0) { // This is the first request; we need a normal symbol table insert if (symbolTable.insert(*atomicCounterBuffer)) trackLinkage(*atomicCounterBuffer); else error(loc, "failed to insert the global constant buffer", "buffer", ""); } else { // This is a follow-on request; we need to amend the first insert symbolTable.amend(*atomicCounterBuffer, bufferNewMember); } ++bufferNewMember; } void TParseContextBase::finish() { if (parsingBuiltins) return; for (const TString& relaxedSymbol : relaxedSymbols) { TSymbol* symbol = symbolTable.find(relaxedSymbol); TType& type = symbol->getWritableType(); for (const TTypeLoc& typeLoc : *type.getStruct()) { if (typeLoc.type->isOpaque()) { typeLoc.type->getSampler() = TSampler{}; typeLoc.type->setBasicType(EbtInt); TString fieldName("/*"); fieldName.append(typeLoc.type->getFieldName()); fieldName.append("*/"); typeLoc.type->setFieldName(fieldName); } } } // Transfer the linkage symbols to AST nodes, preserving order. TIntermAggregate* linkage = new TIntermAggregate; for (auto i = linkageSymbols.begin(); i != linkageSymbols.end(); ++i) intermediate.addSymbolLinkageNode(linkage, **i); intermediate.addSymbolLinkageNodes(linkage, getLanguage(), symbolTable); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/ParseHelper.cpp000066400000000000000000020360031506534232700233270ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2015 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // Copyright (C) 2017, 2019 ARM Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // Modifications Copyright (C) 2024 Ravi Prakash Singh. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "ParseHelper.h" #include "Initialize.h" #include "Scan.h" #include #include "Versions.h" #include "preprocessor/PpContext.h" extern int yyparse(glslang::TParseContext*); namespace glslang { TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages, const TString* entryPoint) : TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages, entryPoint), inMain(false), blockName(nullptr), limits(resources.limits), atomicUintOffsets(nullptr), anyIndexLimits(false) { // decide whether precision qualifiers should be ignored or respected if (isEsProfile() || spvVersion.vulkan > 0) { precisionManager.respectPrecisionQualifiers(); if (! parsingBuiltins && language == EShLangFragment && !isEsProfile() && spvVersion.vulkan > 0) precisionManager.warnAboutDefaults(); } setPrecisionDefaults(); globalUniformDefaults.clear(); globalUniformDefaults.layoutMatrix = ElmColumnMajor; globalUniformDefaults.layoutPacking = spvVersion.spv != 0 ? ElpStd140 : ElpShared; globalBufferDefaults.clear(); globalBufferDefaults.layoutMatrix = ElmColumnMajor; globalBufferDefaults.layoutPacking = spvVersion.spv != 0 ? ElpStd430 : ElpShared; globalInputDefaults.clear(); globalOutputDefaults.clear(); globalSharedDefaults.clear(); globalSharedDefaults.layoutMatrix = ElmColumnMajor; globalSharedDefaults.layoutPacking = ElpStd430; // "Shaders in the transform // feedback capturing mode have an initial global default of // layout(xfb_buffer = 0) out;" if (language == EShLangVertex || language == EShLangTessControl || language == EShLangTessEvaluation || language == EShLangGeometry) globalOutputDefaults.layoutXfbBuffer = 0; if (language == EShLangGeometry) globalOutputDefaults.layoutStream = 0; if (entryPoint != nullptr && entryPoint->size() > 0 && *entryPoint != "main") infoSink.info.message(EPrefixError, "Source entry point must be \"main\""); } TParseContext::~TParseContext() { delete [] atomicUintOffsets; } // Set up all default precisions as needed by the current environment. // Intended just as a TParseContext constructor helper. void TParseContext::setPrecisionDefaults() { // Set all precision defaults to EpqNone, which is correct for all types // when not obeying precision qualifiers, and correct for types that don't // have defaults (thus getting an error on use) when obeying precision // qualifiers. for (int type = 0; type < EbtNumTypes; ++type) defaultPrecision[type] = EpqNone; for (int type = 0; type < maxSamplerIndex; ++type) defaultSamplerPrecision[type] = EpqNone; // replace with real precision defaults for those that have them if (obeyPrecisionQualifiers()) { if (isEsProfile()) { // Most don't have defaults, a few default to lowp. TSampler sampler; sampler.set(EbtFloat, Esd2D); defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow; sampler.set(EbtFloat, EsdCube); defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow; sampler.set(EbtFloat, Esd2D); sampler.setExternal(true); defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow; } // If we are parsing built-in computational variables/functions, it is meaningful to record // whether the built-in has no precision qualifier, as that ambiguity // is used to resolve the precision from the supplied arguments/operands instead. // So, we don't actually want to replace EpqNone with a default precision for built-ins. if (! parsingBuiltins) { if (isEsProfile() && language == EShLangFragment) { defaultPrecision[EbtInt] = EpqMedium; defaultPrecision[EbtUint] = EpqMedium; } else { defaultPrecision[EbtInt] = EpqHigh; defaultPrecision[EbtUint] = EpqHigh; defaultPrecision[EbtFloat] = EpqHigh; } if (!isEsProfile()) { // Non-ES profile // All sampler precisions default to highp. for (int type = 0; type < maxSamplerIndex; ++type) defaultSamplerPrecision[type] = EpqHigh; } } defaultPrecision[EbtSampler] = EpqLow; defaultPrecision[EbtAtomicUint] = EpqHigh; } } void TParseContext::setLimits(const TBuiltInResource& r) { resources = r; intermediate.setLimits(r); anyIndexLimits = ! limits.generalAttributeMatrixVectorIndexing || ! limits.generalConstantMatrixVectorIndexing || ! limits.generalSamplerIndexing || ! limits.generalUniformIndexing || ! limits.generalVariableIndexing || ! limits.generalVaryingIndexing; // "Each binding point tracks its own current default offset for // inheritance of subsequent variables using the same binding. The initial state of compilation is that all // binding points have an offset of 0." atomicUintOffsets = new int[resources.maxAtomicCounterBindings]; for (int b = 0; b < resources.maxAtomicCounterBindings; ++b) atomicUintOffsets[b] = 0; } // // Parse an array of strings using yyparse, going through the // preprocessor to tokenize the shader strings, then through // the GLSL scanner. // // Returns true for successful acceptance of the shader, false if any errors. // bool TParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& input, bool versionWillBeError) { currentScanner = &input; ppContext.setInput(input, versionWillBeError); yyparse(this); finish(); return numErrors == 0; } // This is called from bison when it has a parse (syntax) error // Note though that to stop cascading errors, we set EOF, which // will usually cause a syntax error, so be more accurate that // compilation is terminating. void TParseContext::parserError(const char* s) { if (! getScanner()->atEndOfInput() || numErrors == 0) error(getCurrentLoc(), "", "", s, ""); else error(getCurrentLoc(), "compilation terminated", "", ""); } void TParseContext::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList) { bool createBlock = globalUniformBlock == nullptr; if (createBlock) { globalUniformBinding = intermediate.getGlobalUniformBinding(); globalUniformSet = intermediate.getGlobalUniformSet(); } // use base class function to create/expand block TParseContextBase::growGlobalUniformBlock(loc, memberType, memberName, typeList); if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { // check for a block storage override TBlockStorageClass storageOverride = intermediate.getBlockStorageOverride(getGlobalUniformBlockName()); TQualifier& qualifier = globalUniformBlock->getWritableType().getQualifier(); qualifier.defaultBlock = true; if (storageOverride != EbsNone) { if (createBlock) { // Remap block storage qualifier.setBlockStorage(storageOverride); // check that the change didn't create errors blockQualifierCheck(loc, qualifier, false); } // remap meber storage as well memberType.getQualifier().setBlockStorage(storageOverride); } } } void TParseContext::growAtomicCounterBlock(int binding, const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList) { bool createBlock = atomicCounterBuffers.find(binding) == atomicCounterBuffers.end(); if (createBlock) { atomicCounterBlockSet = intermediate.getAtomicCounterBlockSet(); } // use base class function to create/expand block TParseContextBase::growAtomicCounterBlock(binding, loc, memberType, memberName, typeList); TQualifier& qualifier = atomicCounterBuffers[binding]->getWritableType().getQualifier(); qualifier.defaultBlock = true; if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { // check for a Block storage override TBlockStorageClass storageOverride = intermediate.getBlockStorageOverride(getAtomicCounterBlockName()); if (storageOverride != EbsNone) { if (createBlock) { // Remap block storage qualifier.setBlockStorage(storageOverride); // check that the change didn't create errors blockQualifierCheck(loc, qualifier, false); } // remap meber storage as well memberType.getQualifier().setBlockStorage(storageOverride); } } } const char* TParseContext::getGlobalUniformBlockName() const { const char* name = intermediate.getGlobalUniformBlockName(); if (std::string(name) == "") return "gl_DefaultUniformBlock"; else return name; } void TParseContext::finalizeGlobalUniformBlockLayout(TVariable&) { } void TParseContext::setUniformBlockDefaults(TType& block) const { block.getQualifier().layoutPacking = ElpStd140; block.getQualifier().layoutMatrix = ElmColumnMajor; } const char* TParseContext::getAtomicCounterBlockName() const { const char* name = intermediate.getAtomicCounterBlockName(); if (std::string(name) == "") return "gl_AtomicCounterBlock"; else return name; } void TParseContext::finalizeAtomicCounterBlockLayout(TVariable&) { } void TParseContext::setAtomicCounterBlockDefaults(TType& block) const { block.getQualifier().layoutPacking = ElpStd430; block.getQualifier().layoutMatrix = ElmRowMajor; } void TParseContext::setInvariant(const TSourceLoc& loc, const char* builtin) { TSymbol* symbol = symbolTable.find(builtin); if (symbol && symbol->getType().getQualifier().isPipeOutput()) { if (intermediate.inIoAccessed(builtin)) warn(loc, "changing qualification after use", "invariant", builtin); TSymbol* csymbol = symbolTable.copyUp(symbol); csymbol->getWritableType().getQualifier().invariant = true; } } void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& tokens) { if (pragmaCallback) pragmaCallback(loc.line, tokens); if (tokens.size() == 0) return; if (tokens[0].compare("optimize") == 0) { if (tokens.size() != 4) { error(loc, "optimize pragma syntax is incorrect", "#pragma", ""); return; } if (tokens[1].compare("(") != 0) { error(loc, "\"(\" expected after 'optimize' keyword", "#pragma", ""); return; } if (tokens[2].compare("on") == 0) contextPragma.optimize = true; else if (tokens[2].compare("off") == 0) contextPragma.optimize = false; else { if(relaxedErrors()) // If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma. warn(loc, "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", ""); return; } if (tokens[3].compare(")") != 0) { error(loc, "\")\" expected to end 'optimize' pragma", "#pragma", ""); return; } } else if (tokens[0].compare("debug") == 0) { if (tokens.size() != 4) { error(loc, "debug pragma syntax is incorrect", "#pragma", ""); return; } if (tokens[1].compare("(") != 0) { error(loc, "\"(\" expected after 'debug' keyword", "#pragma", ""); return; } if (tokens[2].compare("on") == 0) contextPragma.debug = true; else if (tokens[2].compare("off") == 0) contextPragma.debug = false; else { if(relaxedErrors()) // If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma. warn(loc, "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", ""); return; } if (tokens[3].compare(")") != 0) { error(loc, "\")\" expected to end 'debug' pragma", "#pragma", ""); return; } } else if (spvVersion.spv > 0 && tokens[0].compare("use_storage_buffer") == 0) { if (tokens.size() != 1) error(loc, "extra tokens", "#pragma", ""); intermediate.setUseStorageBuffer(); } else if (spvVersion.spv > 0 && tokens[0].compare("use_vulkan_memory_model") == 0) { if (tokens.size() != 1) error(loc, "extra tokens", "#pragma", ""); intermediate.setUseVulkanMemoryModel(); } else if (spvVersion.spv > 0 && tokens[0].compare("use_variable_pointers") == 0) { if (tokens.size() != 1) error(loc, "extra tokens", "#pragma", ""); if (spvVersion.spv < glslang::EShTargetSpv_1_3) error(loc, "requires SPIR-V 1.3", "#pragma use_variable_pointers", ""); intermediate.setUseVariablePointers(); } else if (spvVersion.spv > 0 && tokens[0].compare("use_replicated_composites") == 0) { if (tokens.size() != 1) error(loc, "extra tokens", "#pragma", ""); intermediate.setReplicatedComposites(); } else if (tokens[0].compare("once") == 0) { warn(loc, "not implemented", "#pragma once", ""); } else if (tokens[0].compare("glslang_binary_double_output") == 0) { intermediate.setBinaryDoubleOutput(); } else if (spvVersion.spv > 0 && tokens[0].compare("STDGL") == 0 && tokens[1].compare("invariant") == 0 && tokens[3].compare("all") == 0) { intermediate.setInvariantAll(); // Set all builtin out variables invariant if declared setInvariant(loc, "gl_Position"); setInvariant(loc, "gl_PointSize"); setInvariant(loc, "gl_ClipDistance"); setInvariant(loc, "gl_CullDistance"); setInvariant(loc, "gl_TessLevelOuter"); setInvariant(loc, "gl_TessLevelInner"); setInvariant(loc, "gl_PrimitiveID"); setInvariant(loc, "gl_Layer"); setInvariant(loc, "gl_ViewportIndex"); setInvariant(loc, "gl_FragDepth"); setInvariant(loc, "gl_SampleMask"); setInvariant(loc, "gl_ClipVertex"); setInvariant(loc, "gl_FrontColor"); setInvariant(loc, "gl_BackColor"); setInvariant(loc, "gl_FrontSecondaryColor"); setInvariant(loc, "gl_BackSecondaryColor"); setInvariant(loc, "gl_TexCoord"); setInvariant(loc, "gl_FogFragCoord"); setInvariant(loc, "gl_FragColor"); setInvariant(loc, "gl_FragData"); } } // // Handle seeing a variable identifier in the grammar. // TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symbol, const TString* string) { TIntermTyped* node = nullptr; // Error check for requiring specific extensions present. if (symbol && symbol->getNumExtensions()) requireExtensions(loc, symbol->getNumExtensions(), symbol->getExtensions(), symbol->getName().c_str()); if (symbol && symbol->isReadOnly()) { // All shared things containing an unsized array must be copied up // on first use, so that all future references will share its array structure, // so that editing the implicit size will effect all nodes consuming it, // and so that editing the implicit size won't change the shared one. // // If this is a variable or a block, check it and all it contains, but if this // is a member of an anonymous block, check the whole block, as the whole block // will need to be copied up if it contains an unsized array. // // This check is being done before the block-name check further down, so guard // for that too. if (!symbol->getType().isUnusableName()) { if (symbol->getType().containsUnsizedArray() || (symbol->getAsAnonMember() && symbol->getAsAnonMember()->getAnonContainer().getType().containsUnsizedArray())) makeEditable(symbol); } } const TVariable* variable; const TAnonMember* anon = symbol ? symbol->getAsAnonMember() : nullptr; if (anon) { // It was a member of an anonymous container. // Create a subtree for its dereference. variable = anon->getAnonContainer().getAsVariable(); TIntermTyped* container = intermediate.addSymbol(*variable, loc); TIntermTyped* constNode = intermediate.addConstantUnion(anon->getMemberNumber(), loc); node = intermediate.addIndex(EOpIndexDirectStruct, container, constNode, loc); node->setType(*(*variable->getType().getStruct())[anon->getMemberNumber()].type); if (node->getType().hiddenMember()) error(loc, "member of nameless block was not redeclared", string->c_str(), ""); } else { // Not a member of an anonymous container. // The symbol table search was done in the lexical phase. // See if it was a variable. variable = symbol ? symbol->getAsVariable() : nullptr; if (variable) { if (variable->getType().isUnusableName()) { 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 (output primitive type mismatch)", string->c_str(), ""); variable = nullptr; } } } else { if (symbol) error(loc, "variable name expected", string->c_str(), ""); } // Recovery, if it wasn't found or was not a variable. if (! variable) { bool builtIn = false; TVector candidateList; symbolTable.findFunctionNameList(*string + "(", candidateList, builtIn); // If it's a function, pass the name/mangledName if (!candidateList.empty() && !builtIn) { variable = new TVariable(&candidateList[0]->getName(), &candidateList[0]->getMangledName(), TType(EbtFunction)); } else { variable = new TVariable(string, TType(EbtVoid)); } } if (variable->getType().getQualifier().isFrontEndConstant()) node = intermediate.addConstantUnion(variable->getConstArray(), variable->getType(), loc); else node = intermediate.addSymbol(*variable, loc); } if (variable->getType().getQualifier().isIo()) intermediate.addIoAccessed(*string); if (variable->getType().isReference() && variable->getType().getQualifier().bufferReferenceNeedsVulkanMemoryModel()) { intermediate.setUseVulkanMemoryModel(); } return node; } // // Handle seeing a base[index] dereference in the grammar. // TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index) { int indexValue = 0; if (index->getQualifier().isFrontEndConstant()) indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); // basic type checks... variableCheck(base); if (! base->isArray() && ! base->isMatrix() && ! base->isVector() && ! base->getType().isCoopMat() && ! base->isReference() && ! base->getType().isCoopVecNV()) { if (base->getAsSymbolNode()) error(loc, " left of '[' is not of type array, matrix, or vector ", base->getAsSymbolNode()->getName().c_str(), ""); else error(loc, " left of '[' is not of type array, matrix, or vector ", "expression", ""); // Insert dummy error-recovery result return intermediate.addConstantUnion(0.0, EbtFloat, loc); } if (!base->isArray() && base->isVector()) { if (base->getType().contains16BitFloat()) requireFloat16Arithmetic(loc, "[", "does not operate on types containing float16"); if (base->getType().contains16BitInt()) requireInt16Arithmetic(loc, "[", "does not operate on types containing (u)int16"); if (base->getType().contains8BitInt()) requireInt8Arithmetic(loc, "[", "does not operate on types containing (u)int8"); } // check for constant folding if (base->getType().getQualifier().isFrontEndConstant() && index->getQualifier().isFrontEndConstant()) { // both base and index are front-end constants checkIndex(loc, base->getType(), indexValue); return intermediate.foldDereference(base, indexValue, loc); } // at least one of base and index is not a front-end constant variable... TIntermTyped* result = nullptr; if (base->isReference() && ! base->isArray()) { requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference indexing"); if (base->getType().getReferentType()->containsUnsizedArray()) { error(loc, "cannot index reference to buffer containing an unsized array", "", ""); result = nullptr; } else { result = intermediate.addBinaryMath(EOpAdd, base, index, loc); if (result != nullptr) result->setType(base->getType()); } if (result == nullptr) { error(loc, "cannot index buffer reference", "", ""); result = intermediate.addConstantUnion(0.0, EbtFloat, loc); } return result; } if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) handleIoResizeArrayAccess(loc, base); if (index->getQualifier().isFrontEndConstant()) checkIndex(loc, base->getType(), indexValue); if (index->getQualifier().isFrontEndConstant()) { if (base->getType().isUnsizedArray()) { base->getWritableType().updateImplicitArraySize(indexValue + 1); base->getWritableType().setImplicitlySized(true); if (base->getQualifier().builtIn == EbvClipDistance && indexValue >= resources.maxClipDistances) { error(loc, "gl_ClipDistance", "[", "array index out of range '%d'", indexValue); } else if (base->getQualifier().builtIn == EbvCullDistance && indexValue >= resources.maxCullDistances) { error(loc, "gl_CullDistance", "[", "array index out of range '%d'", indexValue); } else if (base->getQualifier().builtIn == EbvSampleMask && indexValue >= (resources.maxSamples + 31) / 32) { error(loc, "gl_SampleMask", "[", "array index out of range '%d'", indexValue); } // For 2D per-view builtin arrays, update the inner dimension size in parent type if (base->getQualifier().isPerView() && base->getQualifier().builtIn != EbvNone) { TIntermBinary* binaryNode = base->getAsBinaryNode(); if (binaryNode) { TType& leftType = binaryNode->getLeft()->getWritableType(); TArraySizes& arraySizes = *leftType.getArraySizes(); assert(arraySizes.getNumDims() == 2); arraySizes.setDimSize(1, std::max(arraySizes.getDimSize(1), indexValue + 1)); } } } else checkIndex(loc, base->getType(), indexValue); result = intermediate.addIndex(EOpIndexDirect, base, index, loc); } else { if (base->getType().isUnsizedArray()) { // we have a variable index into an unsized array, which is okay, // depending on the situation if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) error(loc, "", "[", "array must be sized by a redeclaration or layout qualifier before being indexed with a variable"); else { // it is okay for a run-time sized array checkRuntimeSizable(loc, *base); } base->getWritableType().setArrayVariablyIndexed(); } if (base->getBasicType() == EbtBlock) { if (base->getQualifier().storage == EvqBuffer) requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array"); else if (base->getQualifier().storage == EvqUniform) { profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "variable indexing uniform block array"); profileRequires(base->getLoc(), ECoreProfile, 400, Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5, "variable indexing uniform block array"); } else { // input/output blocks either don't exist or can't be variably indexed } } else if (language == EShLangFragment && base->getQualifier().isPipeOutput() && base->getQualifier().builtIn != EbvSampleMask) requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader output array"); else if (base->getBasicType() == EbtSampler && version >= 130) { const char* explanation = "variable indexing sampler array"; requireProfile(base->getLoc(), EEsProfile | ECoreProfile | ECompatibilityProfile, explanation); profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, explanation); profileRequires(base->getLoc(), ECoreProfile | ECompatibilityProfile, 400, Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5, explanation); } result = intermediate.addIndex(EOpIndexIndirect, base, index, loc); } // Insert valid dereferenced result type TType newType(base->getType(), 0); if (base->getType().getQualifier().isConstant() && index->getQualifier().isConstant()) { newType.getQualifier().storage = EvqConst; // If base or index is a specialization constant, the result should also be a specialization constant. if (base->getType().getQualifier().isSpecConstant() || index->getQualifier().isSpecConstant()) { newType.getQualifier().makeSpecConstant(); } } else { newType.getQualifier().storage = EvqTemporary; newType.getQualifier().specConstant = false; } result->setType(newType); inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); // Propagate nonuniform if (base->getQualifier().isNonUniform() || index->getQualifier().isNonUniform()) result->getWritableType().getQualifier().nonUniform = true; if (anyIndexLimits) handleIndexLimits(loc, base, index); return result; } // for ES 2.0 (version 100) limitations for almost all index operations except vertex-shader uniforms void TParseContext::handleIndexLimits(const TSourceLoc& /*loc*/, TIntermTyped* base, TIntermTyped* index) { if ((! limits.generalSamplerIndexing && base->getBasicType() == EbtSampler) || (! limits.generalUniformIndexing && base->getQualifier().isUniformOrBuffer() && language != EShLangVertex) || (! limits.generalAttributeMatrixVectorIndexing && base->getQualifier().isPipeInput() && language == EShLangVertex && (base->getType().isMatrix() || base->getType().isVector())) || (! limits.generalConstantMatrixVectorIndexing && base->getAsConstantUnion()) || (! limits.generalVariableIndexing && ! base->getType().getQualifier().isUniformOrBuffer() && ! base->getType().getQualifier().isPipeInput() && ! base->getType().getQualifier().isPipeOutput() && ! base->getType().getQualifier().isConstant()) || (! limits.generalVaryingIndexing && (base->getType().getQualifier().isPipeInput() || base->getType().getQualifier().isPipeOutput()))) { // it's too early to know what the inductive variables are, save it for post processing needsIndexLimitationChecking.push_back(index); } } // Make a shared symbol have a non-shared version that can be edited by the current // compile, such that editing its type will not change the shared version and will // effect all nodes sharing it. void TParseContext::makeEditable(TSymbol*& symbol) { TParseContextBase::makeEditable(symbol); // See if it's tied to IO resizing if (isIoResizeArray(symbol->getType())) ioArraySymbolResizeList.push_back(symbol); } // Return true if this is a geometry shader input array or tessellation control output array // or mesh shader output array. bool TParseContext::isIoResizeArray(const TType& type) const { return type.isArray() && ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) || (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } // If an array is not isIoResizeArray() but is an io array, make sure it has the right size void TParseContext::fixIoArraySize(const TSourceLoc& loc, TType& type) { if (! type.isArray() || type.getQualifier().patch || symbolTable.atBuiltInLevel()) return; assert(! isIoResizeArray(type)); if (type.getQualifier().storage != EvqVaryingIn || type.getQualifier().patch) return; if (language == EShLangTessControl || language == EShLangTessEvaluation) { if (type.getOuterArraySize() != resources.maxPatchVertices) { if (type.isSizedArray()) error(loc, "tessellation input array size must be gl_MaxPatchVertices or implicitly sized", "[]", ""); type.changeOuterArraySize(resources.maxPatchVertices); } } } // Issue any errors if the non-array object is missing arrayness WRT // shader I/O that has array requirements. // All arrayness checking is handled in array paths, this is for void TParseContext::ioArrayCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (! type.isArray() && ! symbolTable.atBuiltInLevel()) { if (type.getQualifier().isArrayedIo(language) && !type.getQualifier().layoutPassthrough) error(loc, "type must be an array:", type.getStorageQualifierString(), identifier.c_str()); } } // Handle a dereference of a geometry shader input array or tessellation control output array. // See ioArraySymbolResizeList comment in ParseHelper.h. // void TParseContext::handleIoResizeArrayAccess(const TSourceLoc& /*loc*/, TIntermTyped* base) { TIntermSymbol* symbolNode = base->getAsSymbolNode(); assert(symbolNode); if (! symbolNode) return; // fix array size, if it can be fixed and needs to be fixed (will allow variable indexing) if (symbolNode->getType().isUnsizedArray()) { int newSize = getIoArrayImplicitSize(symbolNode->getType().getQualifier()); if (newSize > 0) symbolNode->getWritableType().changeOuterArraySize(newSize); } } // If there has been an input primitive declaration (geometry shader) or an output // number of vertices declaration(tessellation shader), make sure all input array types // match it in size. Types come either from nodes in the AST or symbols in the // symbol table. // // Types without an array size will be given one. // Types already having a size that is wrong will get an error. // void TParseContext::checkIoArraysConsistency(const TSourceLoc &loc, bool tailOnly) { int requiredSize = 0; TString featureString; size_t listSize = ioArraySymbolResizeList.size(); size_t i = 0; // If tailOnly = true, only check the last array symbol in the list. if (tailOnly) { i = listSize - 1; } for (bool firstIteration = true; i < listSize; ++i) { TType &type = ioArraySymbolResizeList[i]->getWritableType(); // 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 == EShLangMesh)) { requiredSize = getIoArrayImplicitSize(type.getQualifier(), &featureString); if (requiredSize == 0) break; firstIteration = false; } checkIoArrayConsistency(loc, requiredSize, featureString.c_str(), type, ioArraySymbolResizeList[i]->getName()); } } int TParseContext::getIoArrayImplicitSize(const TQualifier &qualifier, TString *featureString) const { int expectedSize = 0; TString str = "unknown"; unsigned int maxVertices = intermediate.getVertices() != TQualifier::layoutNotSet ? intermediate.getVertices() : 0; if (language == EShLangGeometry) { expectedSize = TQualifier::mapGeometryToSize(intermediate.getInputPrimitive()); str = TQualifier::getGeometryString(intermediate.getInputPrimitive()); } else if (language == EShLangTessControl) { expectedSize = maxVertices; str = "vertices"; } else if (language == EShLangFragment) { // Number of vertices for Fragment shader is always three. expectedSize = 3; str = "vertices"; } else if (language == EShLangMesh) { unsigned int maxPrimitives = intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0; if (qualifier.builtIn == EbvPrimitiveIndicesNV) { expectedSize = maxPrimitives * TQualifier::mapGeometryToSize(intermediate.getOutputPrimitive()); str = "max_primitives*"; str += TQualifier::getGeometryString(intermediate.getOutputPrimitive()); } else if (qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT || qualifier.builtIn == EbvPrimitiveLineIndicesEXT || qualifier.builtIn == EbvPrimitivePointIndicesEXT) { expectedSize = maxPrimitives; str = "max_primitives"; } else if (qualifier.isPerPrimitive()) { expectedSize = maxPrimitives; str = "max_primitives"; } else { expectedSize = maxVertices; str = "max_vertices"; } } if (featureString) *featureString = str; return expectedSize; } void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredSize, const char* feature, TType& type, const TString& name) { if (type.isUnsizedArray()) type.changeOuterArraySize(requiredSize); else if (type.getOuterArraySize() != requiredSize) { if (language == EShLangGeometry) error(loc, "inconsistent input primitive for array size of", feature, name.c_str()); else if (language == EShLangTessControl) error(loc, "inconsistent output number of vertices for array size of", feature, name.c_str()); else if (language == EShLangFragment) { if (type.getOuterArraySize() > requiredSize) error(loc, " cannot be greater than 3 for pervertexEXT", feature, name.c_str()); } else if (language == EShLangMesh) error(loc, "inconsistent output array size of", feature, name.c_str()); else assert(0); } } // Handle seeing a binary node with a math operation. // Returns nullptr if not semantically allowed. TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right) { rValueErrorCheck(loc, str, left->getAsTyped()); rValueErrorCheck(loc, str, right->getAsTyped()); bool allowed = true; switch (op) { // TODO: Bring more source language-specific checks up from intermediate.cpp // to the specific parse helpers for that source language. case EOpLessThan: case EOpGreaterThan: case EOpLessThanEqual: case EOpGreaterThanEqual: if (! left->isScalar() || ! right->isScalar()) allowed = false; break; default: break; } if (((left->getType().contains16BitFloat() || right->getType().contains16BitFloat()) && !float16Arithmetic()) || ((left->getType().contains16BitInt() || right->getType().contains16BitInt()) && !int16Arithmetic()) || ((left->getType().contains8BitInt() || right->getType().contains8BitInt()) && !int8Arithmetic()) || (left->getType().containsBFloat16() || right->getType().containsBFloat16()) || (left->getType().contains8BitFloat() || right->getType().contains8BitFloat())) { allowed = false; } TIntermTyped* result = nullptr; if (allowed) { if ((left->isReference() || right->isReference())) requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference math"); result = intermediate.addBinaryMath(op, left, right, loc); } if (result == nullptr) { bool enhanced = intermediate.getEnhancedMsgs(); binaryOpError(loc, str, left->getCompleteString(enhanced), right->getCompleteString(enhanced)); } return result; } // Handle seeing a unary node with a math operation. TIntermTyped* TParseContext::handleUnaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* childNode) { rValueErrorCheck(loc, str, childNode); bool allowed = true; if ((childNode->getType().contains16BitFloat() && !float16Arithmetic()) || (childNode->getType().contains16BitInt() && !int16Arithmetic()) || (childNode->getType().contains8BitInt() && !int8Arithmetic()) || (childNode->getType().containsBFloat16()) || (childNode->getType().contains8BitFloat())) { allowed = false; } TIntermTyped* result = nullptr; if (allowed) result = intermediate.addUnaryMath(op, childNode, loc); if (result) return result; else { bool enhanced = intermediate.getEnhancedMsgs(); unaryOpError(loc, str, childNode->getCompleteString(enhanced)); } return childNode; } // // Handle seeing a base.field dereference in the grammar. // TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TIntermTyped* base, const TString& field) { variableCheck(base); // // .length() can't be resolved until we later see the function-calling syntax. // Save away the name in the AST for now. Processing is completed in // handleLengthMethod(). // if (field == "length") { if (base->isArray()) { profileRequires(loc, ENoProfile, 120, E_GL_3DL_array_objects, ".length"); profileRequires(loc, EEsProfile, 300, nullptr, ".length"); } else if (base->isVector() || base->isMatrix()) { const char* feature = ".length() on vectors and matrices"; requireProfile(loc, ~EEsProfile, feature); profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, feature); } else if (!base->getType().isCoopMat() && !base->getType().isCoopVecNV()) { bool enhanced = intermediate.getEnhancedMsgs(); error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString(enhanced).c_str()); return base; } return intermediate.addMethod(base, TType(EbtInt), &field, loc); } // It's not .length() if we get to here. if (base->isArray()) { error(loc, "cannot apply to an array:", ".", field.c_str()); return base; } if (base->getType().isCoopMat()) { error(loc, "cannot apply to a cooperative matrix type:", ".", field.c_str()); return base; } // It's neither an array nor .length() if we get here, // leaving swizzles and struct/block dereferences. TIntermTyped* result = base; if ((base->isVector() || base->isScalar()) && (base->isFloatingDomain() || base->isIntegerDomain() || base->getBasicType() == EbtBool)) { result = handleDotSwizzle(loc, base, field); } else if (base->isStruct() || base->isReference()) { const TTypeList* fields = base->isReference() ? base->getType().getReferentType()->getStruct() : base->getType().getStruct(); bool fieldFound = false; int member; for (member = 0; member < (int)fields->size(); ++member) { if ((*fields)[member].type->getFieldName() == field) { fieldFound = true; break; } } if (fieldFound) { if (spvVersion.vulkan != 0 && spvVersion.vulkanRelaxed) result = vkRelaxedRemapDotDereference(loc, *base, *(*fields)[member].type, field); if (result == base) { if (base->getType().getQualifier().isFrontEndConstant()) result = intermediate.foldDereference(base, member, loc); else { blockMemberExtensionCheck(loc, base, member, field); TIntermTyped* index = intermediate.addConstantUnion(member, loc); result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc); result->setType(*(*fields)[member].type); if ((*fields)[member].type->getQualifier().isIo()) intermediate.addIoAccessed(field); } } inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); } else { auto baseSymbol = base; while (baseSymbol->getAsSymbolNode() == nullptr) { auto binaryNode = baseSymbol->getAsBinaryNode(); if (binaryNode == nullptr) break; baseSymbol = binaryNode->getLeft(); } if (baseSymbol->getAsSymbolNode() != nullptr) { 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, "no such field in structure", field.c_str(), ""); } } } else 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()) result->getWritableType().getQualifier().setNoContraction(); // Propagate nonuniform if (base->getQualifier().isNonUniform()) result->getWritableType().getQualifier().nonUniform = true; return result; } // // Handle seeing a base.swizzle, a subset of base.identifier in the grammar. // TIntermTyped* TParseContext::handleDotSwizzle(const TSourceLoc& loc, TIntermTyped* base, const TString& field) { TIntermTyped* result = base; if (base->isScalar()) { const char* dotFeature = "scalar swizzle"; requireProfile(loc, ~EEsProfile, dotFeature); profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, dotFeature); } TSwizzleSelectors selectors; parseSwizzleSelector(loc, field, base->getVectorSize(), selectors); if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitFloat()) requireFloat16Arithmetic(loc, ".", "can't swizzle types containing float16"); if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitInt()) requireInt16Arithmetic(loc, ".", "can't swizzle types containing (u)int16"); if (base->isVector() && selectors.size() != 1 && base->getType().contains8BitInt()) requireInt8Arithmetic(loc, ".", "can't swizzle types containing (u)int8"); if (base->isScalar()) { if (selectors.size() == 1) return result; else { TType type(base->getBasicType(), EvqTemporary, selectors.size()); // Swizzle operations propagate specialization-constantness if (base->getQualifier().isSpecConstant()) type.getQualifier().makeSpecConstant(); return addConstructor(loc, base, type); } } if (base->getType().getQualifier().isFrontEndConstant()) result = intermediate.foldSwizzle(base, selectors, loc); else { if (selectors.size() == 1) { TIntermTyped* index = intermediate.addConstantUnion(selectors[0], loc); result = intermediate.addIndex(EOpIndexDirect, base, index, loc); result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision)); } else { TIntermTyped* index = intermediate.addSwizzle(selectors, loc); result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc); result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size())); } // Swizzle operations propagate specialization-constantness if (base->getType().getQualifier().isSpecConstant()) result->getWritableType().getQualifier().makeSpecConstant(); } return result; } void TParseContext::blockMemberExtensionCheck(const TSourceLoc& loc, const TIntermTyped* base, int member, const TString& memberName) { // a block that needs extension checking is either 'base', or if arrayed, // one level removed to the left const TIntermSymbol* baseSymbol = nullptr; if (base->getAsBinaryNode() == nullptr) baseSymbol = base->getAsSymbolNode(); else baseSymbol = base->getAsBinaryNode()->getLeft()->getAsSymbolNode(); if (baseSymbol == nullptr) return; const TSymbol* symbol = symbolTable.find(baseSymbol->getName()); if (symbol == nullptr) return; const TVariable* variable = symbol->getAsVariable(); if (variable == nullptr) return; if (!variable->hasMemberExtensions()) return; // We now have a variable that is the base of a dot reference // with members that need extension checking. if (variable->getNumMemberExtensions(member) > 0) requireExtensions(loc, variable->getNumMemberExtensions(member), variable->getMemberExtensions(member), memberName.c_str()); } // // Handle seeing a function declarator in the grammar. This is the precursor // to recognizing a function prototype or function definition. // TFunction* TParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunction& function, bool prototype) { // ES can't declare prototypes inside functions if (! symbolTable.atGlobalLevel()) requireProfile(loc, ~EEsProfile, "local function declaration"); // // Multiple declarations of the same function name are allowed. // // If this is a definition, the definition production code will check for redefinitions // (we don't know at this point if it's a definition or not). // // Redeclarations (full signature match) are allowed. But, return types and parameter qualifiers must also match. // - except ES 100, which only allows a single prototype // // ES 100 does not allow redefining, but does allow overloading of built-in functions. // ES 300 does not allow redefining or overloading of built-in functions. // bool builtIn; TSymbol* symbol = symbolTable.find(function.getMangledName(), &builtIn); if (symbol && symbol->getAsFunction() && builtIn) requireProfile(loc, ~EEsProfile, "redefinition of built-in function"); // Check the validity of using spirv_literal qualifier for (int i = 0; i < function.getParamCount(); ++i) { if (function[i].type->getQualifier().isSpirvLiteral() && function.getBuiltInOp() != EOpSpirvInst) error(loc, "'spirv_literal' can only be used on functions defined with 'spirv_instruction' for argument", function.getName().c_str(), "%d", i + 1); } // For function declaration with SPIR-V instruction qualifier, always ignore the built-in function and // respect this redeclared one. if (symbol && builtIn && function.getBuiltInOp() == EOpSpirvInst) symbol = nullptr; const TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr; if (prevDec) { if (prevDec->isPrototyped() && prototype) profileRequires(loc, EEsProfile, 300, nullptr, "multiple prototypes for same function"); if (prevDec->getSpirvInstruction() != function.getSpirvInstruction()) { error(loc, "overloaded functions must have the same qualifiers", function.getName().c_str(), "spirv_instruction"); } bool parameterTypesDiffer = false; for (int i = 0; i < prevDec->getParamCount(); ++i) { if ((*prevDec)[i].type->getQualifier().storage != function[i].type->getQualifier().storage) error(loc, "overloaded functions must have the same parameter storage qualifiers for argument", function[i].type->getStorageQualifierString(), "%d", i+1); if ((*prevDec)[i].type->getQualifier().precision != function[i].type->getQualifier().precision) error(loc, "overloaded functions must have the same parameter precision qualifiers for argument", function[i].type->getPrecisionQualifierString(), "%d", i+1); if (*(*prevDec)[i].type != *function[i].type) parameterTypesDiffer = true; } if (!parameterTypesDiffer && prevDec->getType() != function.getType()) error(loc, "overloaded functions must have the same return type", function.getName().c_str(), ""); } arrayObjectCheck(loc, function.getType(), "array in function return type"); if (prototype) { // All built-in functions are defined, even though they don't have a body. // Count their prototype as a definition instead. if (symbolTable.atBuiltInLevel()) function.setDefined(); else { if (prevDec && ! builtIn) symbol->getAsFunction()->setPrototyped(); // need a writable one, but like having prevDec as a const function.setPrototyped(); } } // This insert won't actually insert it if it's a duplicate signature, but it will still check for // other forms of name collisions. if (! symbolTable.insert(function)) error(loc, "function name is redeclaration of existing name", function.getName().c_str(), ""); // // If this is a redeclaration, it could also be a definition, // in which case, we need to use the parameter names from this one, and not the one that's // being redeclared. So, pass back this declaration, not the one in the symbol table. // return &function; } // // Handle seeing the function prototype in front of a function definition in the grammar. // The body is handled after this function returns. // TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc, TFunction& function) { currentCaller = function.getMangledName(); TSymbol* symbol = symbolTable.find(function.getMangledName()); TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr; if (! prevDec) error(loc, "can't find function", function.getName().c_str(), ""); // Note: 'prevDec' could be 'function' if this is the first time we've seen function // as it would have just been put in the symbol table. Otherwise, we're looking up // an earlier occurrence. if (prevDec && prevDec->isDefined()) { // Then this function already has a body. error(loc, "function already has a body", function.getName().c_str(), ""); } if (prevDec && ! prevDec->isDefined()) { prevDec->setDefined(); // Remember the return type for later checking for RETURN statements. currentFunctionType = &(prevDec->getType()); } else currentFunctionType = new TType(EbtVoid); functionReturnsValue = false; // Check for entry point if (function.getName().compare(intermediate.getEntryPointName().c_str()) == 0) { intermediate.setEntryPointMangledName(function.getMangledName().c_str()); intermediate.incrementEntryPointCount(); inMain = true; } else inMain = false; // // Raise error message if main function takes any parameters or returns anything other than void // if (inMain) { if (function.getParamCount() > 0) error(loc, "function cannot take any parameter(s)", function.getName().c_str(), ""); if (function.getType().getBasicType() != EbtVoid) error(loc, "", function.getType().getBasicTypeString().c_str(), "entry point cannot return a value"); if (function.getLinkType() != ELinkNone) error(loc, "main function cannot be exported", "", ""); } // // New symbol table scope for body of function plus its arguments // symbolTable.push(); // // Insert parameters into the symbol table. // If the parameter has no name, it's not an error, just don't insert it // (could be used for unused args). // // Also, accumulate the list of parameters into the HIL, so lower level code // knows where to find parameters. // TIntermAggregate* paramNodes = new TIntermAggregate; for (int i = 0; i < function.getParamCount(); i++) { TParameter& param = function[i]; if (param.name != nullptr) { TVariable *variable = new TVariable(param.name, *param.type); // Insert the parameters with name in the symbol table. if (! symbolTable.insert(*variable)) error(loc, "redefinition", variable->getName().c_str(), ""); else { // Transfer ownership of name pointer to symbol table. param.name = nullptr; // Add the parameter to the HIL paramNodes = intermediate.growAggregate(paramNodes, intermediate.addSymbol(*variable, loc), loc); } } else paramNodes = intermediate.growAggregate(paramNodes, intermediate.addSymbol(*param.type, loc), loc); } paramNodes->setLinkType(function.getLinkType()); intermediate.setAggregateOperator(paramNodes, EOpParameters, TType(EbtVoid), loc); loopNestingLevel = 0; statementNestingLevel = 0; controlFlowNestingLevel = 0; postEntryPointReturn = false; return paramNodes; } // // Handle seeing function call syntax in the grammar, which could be any of // - .length() method // - constructor // - a call to a built-in function mapped to an operator // - a call to a built-in function that will remain a function call (e.g., texturing) // - user function // - subroutine call (not implemented yet) // TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction* function, TIntermNode* arguments) { TIntermTyped* result = nullptr; if (spvVersion.vulkan != 0 && spvVersion.vulkanRelaxed) { // allow calls that are invalid in Vulkan Semantics to be invisibily // remapped to equivalent valid functions result = vkRelaxedRemapFunctionCall(loc, function, arguments); if (result) return result; } if (function->getBuiltInOp() == EOpArrayLength) result = handleLengthMethod(loc, function, arguments); else if (function->getBuiltInOp() != EOpNull) { // // Then this should be a constructor. // Don't go through the symbol table for constructors. // Their parameters will be verified algorithmically. // TType type(EbtVoid); // use this to get the type back if (! constructorError(loc, arguments, *function, function->getBuiltInOp(), type)) { // // It's a constructor, of type 'type'. // result = addConstructor(loc, arguments, type); if (result == nullptr) 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 {false}; fnCandidate = findFunction(loc, *function, builtIn); if (fnCandidate) { // This is a declared function that might map to // - a built-in operator, // - a built-in function not mapped to an operator, or // - a user function. // Error check for a function requiring specific extensions present. if (builtIn && (fnCandidate->getBuiltInOp() == EOpSubgroupQuadAll || fnCandidate->getBuiltInOp() == EOpSubgroupQuadAny)) requireExtensions(loc, 1, &E_GL_EXT_shader_quad_control, fnCandidate->getName().c_str()); if (builtIn && fnCandidate->getNumExtensions()) requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str()); if (builtIn && fnCandidate->getType().contains16BitFloat()) requireFloat16Arithmetic(loc, "built-in function", "float16 types can only be in uniform block or buffer storage"); if (builtIn && fnCandidate->getType().contains16BitInt()) requireInt16Arithmetic(loc, "built-in function", "(u)int16 types can only be in uniform block or buffer storage"); if (builtIn && fnCandidate->getType().contains8BitInt()) requireInt8Arithmetic(loc, "built-in function", "(u)int8 types can only be in uniform block or buffer storage"); if (builtIn && (fnCandidate->getBuiltInOp() == EOpTextureFetch || fnCandidate->getBuiltInOp() == EOpTextureQuerySize)) { if ((*fnCandidate)[0].type->getSampler().isMultiSample() && version <= 140) requireExtensions(loc, 1, &E_GL_ARB_texture_multisample, fnCandidate->getName().c_str()); } if (arguments != nullptr) { // Make sure qualifications work for these arguments. TIntermAggregate* aggregate = arguments->getAsAggregate(); for (int i = 0; i < fnCandidate->getParamCount(); ++i) { // At this early point there is a slight ambiguity between whether an aggregate 'arguments' // is the single argument itself or its children are the arguments. Only one argument // means take 'arguments' itself as the one argument. if ((*fnCandidate)[i].defaultValue) { if (!aggregate) { // Only one argument was passed (rest are default arguments) so arguments isn't a TIntermAggregate. // But the function takes at least one more argument, so a TIntermAggregate is needed. aggregate = new TIntermAggregate; aggregate->getSequence().push_back(arguments); arguments = aggregate; } if (i >= static_cast(aggregate->getSequence().size())) { // Append the default value if there are no more arguments left in the aggregate. TIntermConstantUnion *defaultValue = nullptr; if (const auto *constUnion = (*fnCandidate)[i].defaultValue->getAsConstantUnion()) { defaultValue = new TIntermConstantUnion(constUnion->getConstArray(), constUnion->getType()); } assert(defaultValue && "unsupported default value construct"); aggregate->getSequence().push_back(defaultValue); } } TIntermNode* arg = fnCandidate->getParamCount() == 1 ? arguments : (aggregate ? aggregate->getSequence()[i] : arguments); TQualifier& formalQualifier = (*fnCandidate)[i].type->getQualifier(); if (formalQualifier.isParamOutput()) { if (lValueErrorCheck(arguments->getLoc(), "assign", arg->getAsTyped())) error(arguments->getLoc(), "Non-L-value cannot be passed for 'out' or 'inout' parameters.", "out", ""); } if (formalQualifier.isSpirvLiteral()) { if (!arg->getAsTyped()->getQualifier().isFrontEndConstant()) { error(arguments->getLoc(), "Non front-end constant expressions cannot be passed for 'spirv_literal' parameters.", "spirv_literal", ""); } } const TType& argType = arg->getAsTyped()->getType(); const TQualifier& argQualifier = argType.getQualifier(); bool containsBindlessSampler = intermediate.getBindlessMode() && argType.containsSampler(); if (argQualifier.isMemory() && !containsBindlessSampler && (argType.containsOpaque() || argType.isReference())) { const char* message = "argument cannot drop memory qualifier when passed to formal parameter"; if (argQualifier.volatil && ! formalQualifier.volatil) error(arguments->getLoc(), message, "volatile", ""); if (argQualifier.coherent && ! (formalQualifier.devicecoherent || formalQualifier.coherent)) error(arguments->getLoc(), message, "coherent", ""); if (argQualifier.devicecoherent && ! (formalQualifier.devicecoherent || formalQualifier.coherent)) error(arguments->getLoc(), message, "devicecoherent", ""); if (argQualifier.queuefamilycoherent && ! (formalQualifier.queuefamilycoherent || formalQualifier.devicecoherent || formalQualifier.coherent)) error(arguments->getLoc(), message, "queuefamilycoherent", ""); if (argQualifier.workgroupcoherent && ! (formalQualifier.workgroupcoherent || formalQualifier.queuefamilycoherent || formalQualifier.devicecoherent || formalQualifier.coherent)) error(arguments->getLoc(), message, "workgroupcoherent", ""); if (argQualifier.subgroupcoherent && ! (formalQualifier.subgroupcoherent || formalQualifier.workgroupcoherent || formalQualifier.queuefamilycoherent || formalQualifier.devicecoherent || formalQualifier.coherent)) error(arguments->getLoc(), message, "subgroupcoherent", ""); if (argQualifier.readonly && ! formalQualifier.readonly) error(arguments->getLoc(), message, "readonly", ""); if (argQualifier.writeonly && ! formalQualifier.writeonly) error(arguments->getLoc(), message, "writeonly", ""); if (argQualifier.nontemporal && ! formalQualifier.nontemporal) error(arguments->getLoc(), message, "nontemporal", ""); // Don't check 'restrict', it is different than the rest: // "...but only restrict can be taken away from a calling argument, by a formal parameter that // lacks the restrict qualifier..." } if (!builtIn && argQualifier.getFormat() != formalQualifier.getFormat()) { // we have mismatched formats, which should only be allowed if writeonly // and at least one format is unknown if (!formalQualifier.isWriteOnly() || (formalQualifier.getFormat() != ElfNone && argQualifier.getFormat() != ElfNone)) error(arguments->getLoc(), "image formats must match", "format", ""); } if (builtIn && arg->getAsTyped()->getType().contains16BitFloat()) requireFloat16Arithmetic(arguments->getLoc(), "built-in function", "float16 types can only be in uniform block or buffer storage"); if (builtIn && arg->getAsTyped()->getType().contains16BitInt()) requireInt16Arithmetic(arguments->getLoc(), "built-in function", "(u)int16 types can only be in uniform block or buffer storage"); if (builtIn && arg->getAsTyped()->getType().contains8BitInt()) requireInt8Arithmetic(arguments->getLoc(), "built-in function", "(u)int8 types can only be in uniform block or buffer storage"); // Check that coopVecOuterProductAccumulateNV vector component types match if (builtIn && fnCandidate->getBuiltInOp() == EOpCooperativeVectorOuterProductAccumulateNV && i == 1 && arg->getAsTyped()->getType().getBasicType() != aggregate->getSequence()[0]->getAsTyped()->getType().getBasicType()) error(arguments->getLoc(), "cooperative vector basic types must match", fnCandidate->getName().c_str(), ""); // TODO 4.5 functionality: A shader will fail to compile // if the value passed to the memargument of an atomic memory function does not correspond to a buffer or // shared variable. It is acceptable to pass an element of an array or a single component of a vector to the // memargument of an atomic memory function, as long as the underlying array or vector is a buffer or // shared variable. } // Convert 'in' arguments addInputArgumentConversions(*fnCandidate, arguments); // arguments may be modified if it's just a single argument node } if (builtIn && fnCandidate->getBuiltInOp() != EOpNull) { // A function call mapped to a built-in operation. result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate); } else if (fnCandidate->getBuiltInOp() == EOpSpirvInst) { // When SPIR-V instruction qualifier is specified, the function call is still mapped to a built-in operation. result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate); } else { // This is a function call not mapped to built-in operator. // It could still be a built-in function, but only if PureOperatorBuiltins == false. result = intermediate.setAggregateOperator(arguments, EOpFunctionCall, fnCandidate->getType(), loc); TIntermAggregate* call = result->getAsAggregate(); call->setName(fnCandidate->getMangledName()); // this is how we know whether the given function is a built-in function or a user-defined function // if builtIn == false, it's a userDefined -> could be an overloaded built-in function also // if builtIn == true, it's definitely a built-in function with EOpNull if (! builtIn) { call->setUserDefined(); if (symbolTable.atGlobalLevel()) { requireProfile(loc, ~EEsProfile, "calling user function from global scope"); intermediate.addToCallGraph(infoSink, "main(", fnCandidate->getMangledName()); } else intermediate.addToCallGraph(infoSink, currentCaller, fnCandidate->getMangledName()); } if (builtIn) nonOpBuiltInCheck(loc, *fnCandidate, *call); else userFunctionCallCheck(loc, *call); } // Convert 'out' arguments. If it was a constant folded built-in, it won't be an aggregate anymore. // Built-ins with a single argument aren't called with an aggregate, but they also don't have an output. // Also, build the qualifier list for user function calls, which are always called with an aggregate. if (result->getAsAggregate()) { TQualifierList& qualifierList = result->getAsAggregate()->getQualifierList(); for (int i = 0; i < fnCandidate->getParamCount(); ++i) { TStorageQualifier qual = (*fnCandidate)[i].type->getQualifier().storage; qualifierList.push_back(qual); } result = addOutputArgumentConversions(*fnCandidate, *result->getAsAggregate()); } handleCoopMat2FunctionCall(loc, fnCandidate, result, arguments); handleVector2CoopMatConversionCall(loc, fnCandidate, result, arguments); if (result->getAsTyped()->getType().isCoopVecNV() && !result->getAsTyped()->getType().isParameterized()) { if (auto unaryNode = result->getAsUnaryNode()) result->setType(unaryNode->getOperand()->getAsTyped()->getType()); else result->setType(result->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()); } if (fnCandidate->getBuiltInOp() == EOpConstructSaturated) { // result type is taken from the first parameter result->setType(result->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()); } } } // generic error recovery // TODO: simplification: localize all the error recoveries that look like this, and taking type into account to reduce cascades if (result == nullptr) result = intermediate.addConstantUnion(0.0, EbtFloat, loc); return result; } void TParseContext::handleCoopMat2FunctionCall(const TSourceLoc& loc, const TFunction* fnCandidate, TIntermTyped* result, TIntermNode* arguments) { if (arguments && arguments->getAsAggregate()) { auto &sequence = arguments->getAsAggregate()->getSequence(); for (uint32_t i = 0; i < sequence.size(); ++i) { auto param = sequence[i]; if (param->getAsTyped()->getBasicType() == EbtFunction) { // Add the function to the callgraph intermediate.addToCallGraph(infoSink, currentCaller, param->getAsSymbolNode()->getMangledName()); // error checking that all parameters are 'const in' if (fnCandidate->getBuiltInOp() == EOpCooperativeMatrixLoadTensorNV || fnCandidate->getBuiltInOp() == EOpCooperativeMatrixReduceNV || fnCandidate->getBuiltInOp() == EOpCooperativeMatrixPerElementOpNV) { const TFunction* func = symbolTable.find(param->getAsSymbolNode()->getMangledName())->getAsFunction(); for (int i = 0; i < func->getParamCount(); ++i) { const TParameter& arg = (*func)[i]; const TQualifier& formalQualifier = arg.type->getQualifier(); if (formalQualifier.storage != EvqConstReadOnly) { error(loc, "function parameters must all be qualified 'const in'", param->getAsSymbolNode()->getMangledName().c_str(), ""); } } } // error checking decodeFunc parameters are (reference, uint32_t[], uint32_t[]) if (fnCandidate->getBuiltInOp() == EOpCooperativeMatrixLoadTensorNV) { const TFunction* decodeFunc = symbolTable.find(param->getAsSymbolNode()->getMangledName())->getAsFunction(); if (decodeFunc->getParamCount() != 3) { error(loc, "must have three parameters", param->getAsSymbolNode()->getMangledName().c_str(), ""); } if ((*decodeFunc)[0].type->getBasicType() != EbtReference) { error(loc, "first parameter must be buffer reference type", param->getAsSymbolNode()->getMangledName().c_str(), ""); } if ((*decodeFunc)[1].type->getBasicType() != EbtUint || (*decodeFunc)[2].type->getBasicType() != EbtUint) { error(loc, "coordinate parameters must be uint32_t", param->getAsSymbolNode()->getMangledName().c_str(), ""); } if (!(*decodeFunc)[1].type->isArray() || !(*decodeFunc)[2].type->isArray()) { error(loc, "coordinate parameters must be uint32_t", param->getAsSymbolNode()->getMangledName().c_str(), ""); } } // error checking reduce function has matching parameters if (fnCandidate->getBuiltInOp() == EOpCooperativeMatrixReduceNV) { const TFunction* combineOp = symbolTable.find(param->getAsSymbolNode()->getMangledName())->getAsFunction(); if (combineOp->getParamCount() != 2) { error(loc, "must have two parameters", param->getAsSymbolNode()->getMangledName().c_str(), ""); } for (int i = 0; i < combineOp->getParamCount(); ++i) { const TParameter& arg = (*combineOp)[i]; if (sequence[1]->getAsTyped()->getType().getBasicType() != arg.type->getBasicType()) { error(loc, "parameter types must match cooperative matrix component type", param->getAsSymbolNode()->getMangledName().c_str(), ""); } } if (sequence[1]->getAsTyped()->getType().getBasicType() != combineOp->getType().getBasicType()) { error(loc, "return type must match cooperative matrix component type", param->getAsSymbolNode()->getMangledName().c_str(), ""); } } // error checking perelement op has correct parameters if (fnCandidate->getBuiltInOp() == EOpCooperativeMatrixPerElementOpNV) { const TFunction* elemOp = symbolTable.find(param->getAsSymbolNode()->getMangledName())->getAsFunction(); if (sequence[1]->getAsTyped()->getType() != sequence[0]->getAsTyped()->getType()) { error(loc, "cooperative matrix input and result types must match", "", ""); } if (elemOp->getParamCount() < 3) { error(loc, "not enough parameters", param->getAsSymbolNode()->getMangledName().c_str(), ""); } else if (elemOp->getParamCount() != (int)sequence.size()) { error(loc, "number of parameters must match call to coopMatPerElementNV", param->getAsSymbolNode()->getMangledName().c_str(), ""); } else { if ((*elemOp)[0].type->getBasicType() != EbtUint || (*elemOp)[1].type->getBasicType() != EbtUint) { error(loc, "row/column parameters must be uint32_t", param->getAsSymbolNode()->getMangledName().c_str(), ""); } const TParameter& matArg = (*elemOp)[2]; if (sequence[1]->getAsTyped()->getType().getBasicType() != matArg.type->getBasicType()) { error(loc, "third parameter must match cooperative matrix component type", param->getAsSymbolNode()->getMangledName().c_str(), ""); } for (int i = 3; i < elemOp->getParamCount(); ++i) { const TParameter& arg = (*elemOp)[i]; if (sequence[i]->getAsTyped()->getType().getBasicType() != arg.type->getBasicType()) { error(loc, "parameter types must match or be cooperative matrix component type", param->getAsSymbolNode()->getMangledName().c_str(), ""); } } if (sequence[1]->getAsTyped()->getType().getBasicType() != elemOp->getType().getBasicType()) { error(loc, "return type must match cooperative matrix component type", param->getAsSymbolNode()->getMangledName().c_str(), ""); } } } } } } if ((result->getAsTyped()->getType().isCoopMat() || result->getAsTyped()->getType().isTensorLayoutNV() || result->getAsTyped()->getType().isTensorViewNV()) && !result->getAsTyped()->getType().isParameterized()) { assert(fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAdd || fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAddNV || fnCandidate->getBuiltInOp() == EOpCooperativeMatrixReduceNV || fnCandidate->getBuiltInOp() == EOpCooperativeMatrixPerElementOpNV || fnCandidate->getBuiltInOp() == EOpCooperativeMatrixTransposeNV || fnCandidate->getBuiltInOp() == EOpCreateTensorLayoutNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSetDimensionNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSetBlockSizeNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSetStrideNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSliceNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSetClampValueNV || fnCandidate->getBuiltInOp() == EOpCreateTensorViewNV || fnCandidate->getBuiltInOp() == EOpTensorViewSetDimensionNV || fnCandidate->getBuiltInOp() == EOpTensorViewSetStrideNV || fnCandidate->getBuiltInOp() == EOpTensorViewSetClipNV); if (fnCandidate->getBuiltInOp() == EOpCreateTensorLayoutNV) { // Convert template parameters to arraySizes/typeParameters TArraySizes *arraySizes = new TArraySizes; for (uint32_t i = 0; i < 2; ++i) { TIntermNode *param {}; if (arguments->getAsConstantUnion()) { if (i == 0) { param = arguments; } } else { assert(arguments->getAsAggregate()); auto &sequence = arguments->getAsAggregate()->getSequence(); if (i < sequence.size()) { param = sequence[i]; } } if (param) { if (param->getAsTyped()->getType().getQualifier().isSpecConstant()) { uint32_t value = param->getAsSymbolNode()->getConstArray()[0].getIConst(); arraySizes->addInnerSize(value, param->getAsTyped()); } else { uint32_t value = param->getAsConstantUnion()->getConstArray()[0].getIConst(); arraySizes->addInnerSize(value); } } else { // gl_CooperativeMatrixClampModeUndefined arraySizes->addInnerSize(0); } } TTypeParameters typeParameters; typeParameters.arraySizes = arraySizes; TType resultType; resultType.deepCopy(result->getAsTyped()->getType()); resultType.copyTypeParameters(typeParameters); result->setType(resultType); } else if (fnCandidate->getBuiltInOp() == EOpCreateTensorViewNV) { // Convert template parameters to arraySizes/typeParameters TArraySizes *arraySizes = new TArraySizes; for (uint32_t i = 0; i < 7; ++i) { TIntermNode *param {}; if (arguments->getAsConstantUnion()) { if (i == 0) { param = arguments; } } else { assert(arguments->getAsAggregate()); auto &sequence = arguments->getAsAggregate()->getSequence(); if (i < sequence.size()) { param = sequence[i]; } } if (param) { if (param->getAsTyped()->getType().getQualifier().isSpecConstant()) { uint32_t value = param->getAsSymbolNode()->getConstArray()[0].getIConst(); arraySizes->addInnerSize(value, param->getAsTyped()); } else { uint32_t value = param->getAsConstantUnion()->getConstArray()[0].getIConst(); arraySizes->addInnerSize(value); } } else { uint32_t value = 0; if (i >= 2) { // default permutation values are an increasing sequence value = i - 2; } arraySizes->addInnerSize(value); } } TTypeParameters typeParameters; typeParameters.arraySizes = arraySizes; TType resultType; resultType.deepCopy(result->getAsTyped()->getType()); resultType.copyTypeParameters(typeParameters); result->setType(resultType); } else if (fnCandidate->getBuiltInOp() == EOpCooperativeMatrixReduceNV || fnCandidate->getBuiltInOp() == EOpCooperativeMatrixPerElementOpNV || fnCandidate->getBuiltInOp() == EOpCooperativeMatrixTransposeNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSetDimensionNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSetBlockSizeNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSetStrideNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSliceNV || fnCandidate->getBuiltInOp() == EOpTensorLayoutSetClampValueNV || fnCandidate->getBuiltInOp() == EOpTensorViewSetDimensionNV || fnCandidate->getBuiltInOp() == EOpTensorViewSetStrideNV || fnCandidate->getBuiltInOp() == EOpTensorViewSetClipNV) { // Set result type to match type of first parameter result->setType(result->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()); } else { // For MulAdd, set result type to match type of C parameter result->setType(result->getAsAggregate()->getSequence()[2]->getAsTyped()->getType()); } } } static const uint32_t spv_Scope_Subgroup = 3; void TParseContext::handleVector2CoopMatConversionCall(const TSourceLoc& loc, const TFunction* fnCandidate, TIntermTyped*& result, TIntermNode* arguments) { const int CM_MatrixUseA = 0; // == gl_MatrixUseA const int CM_MatrixUseB = 1; // == gl_MatrixUseB const int CM_MatrixUseAccumulator = 2; // == gl_MatrixUseAccumulator TOperator builtinOp = fnCandidate->getBuiltInOp(); if (!(builtinOp == EOpBitCastArrayQCOM || builtinOp == EOpExtractSubArrayQCOM || builtinOp == EOpCompositeConstructCoopMatQCOM || builtinOp == EOpCompositeExtractCoopMatQCOM)) return; TPublicType pubType{}; auto* oldResult = result; if (builtinOp == EOpBitCastArrayQCOM) { auto srcArr = arguments->getAsAggregate()->getSequence()[0]->getAsTyped(); auto& srcTy = srcArr->getType(); auto srcArrLen = srcTy.getArraySizes()->getDimSize(0); auto srcLenAsNode = srcTy.getArraySizes()->getDimNode(0); auto dstArr = arguments->getAsAggregate()->getSequence()[1]->getAsTyped(); auto& dstTy = dstArr->getType(); auto dstArrLen = dstTy.getArraySizes()->getDimSize(0); auto dstLenAsNode = dstTy.getArraySizes()->getDimNode(0); if (srcLenAsNode == nullptr && dstLenAsNode == nullptr) { //do basic tests: if ((srcArrLen * GetNumBits(srcTy.getBasicType())) != (dstArrLen * GetNumBits(dstTy.getBasicType()))) error(loc, "source and target arrays have different bit sizes", "", ""); } pubType.basicType = dstTy.getBasicType(); pubType.vectorSize = 1u; pubType.qualifier.precision = EpqNone; pubType.coopmatNV = false; pubType.coopmatKHR = false; pubType.arraySizes = new TArraySizes; pubType.arraySizes->addInnerSize(dstArrLen, dstLenAsNode); pubType.typeParameters = nullptr; } if (builtinOp == EOpExtractSubArrayQCOM) { auto dstArr = arguments->getAsAggregate()->getSequence()[2]->getAsTyped(); auto& dstTy = dstArr->getType(); auto dstArrLen = dstTy.getArraySizes()->getDimSize(0); auto dstLenAsNode = dstTy.getArraySizes()->getDimNode(0); if (dstLenAsNode == nullptr) { if ((dstArrLen * GetNumBits(dstTy.getBasicType())) == 32) error(loc, "the byte size of the target array must be 32", "", ""); } pubType.basicType = dstTy.getBasicType(); pubType.vectorSize = 1u; pubType.qualifier.precision = EpqNone; pubType.coopmatNV = false; pubType.coopmatKHR = false; pubType.arraySizes = new TArraySizes; pubType.arraySizes->addInnerSize(dstArrLen, dstLenAsNode); pubType.typeParameters = nullptr; } if (builtinOp == EOpCompositeConstructCoopMatQCOM) { auto& srcType = arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType(); auto& dstType = arguments->getAsAggregate()->getSequence()[1]->getAsTyped()->getType(); glslang::TBasicType srcBasicType = srcType.getBasicType(); glslang::TBasicType dstBasicType = dstType.getBasicType(); if (srcBasicType != EbtUint && srcBasicType != dstBasicType) error(loc, "source and destination element types are not compatible", "", ""); uint32_t scope = spv_Scope_Subgroup; uint32_t coopMatKHRuse = -1u; uint32_t coopMatNumRows = -1u, coopMatNumCols = -1u; TIntermTyped *nodeNumRows = nullptr, *nodeNumCols = nullptr; const TTypeParameters* dstTypeParameters = dstType.getTypeParameters(); if (dstTypeParameters->arraySizes == nullptr || dstTypeParameters->arraySizes->getNumDims() != 4) { error(loc, "destination cooperative matrix has an unsupported type", "", ""); } else { auto arraySizes = dstTypeParameters->arraySizes; scope = arraySizes->getDimSize(0); coopMatNumRows = arraySizes->getDimSize(1); nodeNumRows = arraySizes->getDimNode(1); coopMatNumCols = arraySizes->getDimSize(2); nodeNumCols = arraySizes->getDimNode(2); coopMatKHRuse = arraySizes->getDimSize(3); } if (scope != spv_Scope_Subgroup) { scope = spv_Scope_Subgroup; error(loc, "cooperative matrix has unsupported scope; gl_SubgroupScope is expected", "", ""); } if (coopMatKHRuse < CM_MatrixUseA || coopMatKHRuse > CM_MatrixUseAccumulator) { coopMatKHRuse = CM_MatrixUseA; error(loc, "cooperative matrix use must be one of gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator", "", ""); } uint32_t dstBasicTypeSize = GetNumBits(dstBasicType) / 8; unsigned numRows = coopMatNumRows; TIntermTyped* specConstRows = nodeNumRows; unsigned numCols = coopMatNumCols; TIntermTyped* specConstCols = nodeNumCols; // input array type const TType& type = arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType(); uint32_t arrayLen = type.getArraySizes()->getDimSize(0); auto arrayDimNode = type.getArraySizes()->getDimNode(0); if (coopMatKHRuse == CM_MatrixUseA || coopMatKHRuse == CM_MatrixUseAccumulator) { // update numCols if (arrayDimNode == nullptr && specConstCols == nullptr) numCols = arrayLen * (sizeof(uint32_t) / dstBasicTypeSize); } else if (coopMatKHRuse == CM_MatrixUseB) { // update numRows if (arrayDimNode == nullptr && specConstRows == nullptr) { numRows = arrayLen * (sizeof(uint32_t) / dstBasicTypeSize); } } // construct the type TArraySizes* arraySizes = new TArraySizes; // add Scope arraySizes->addInnerSize(scope); // add the row size arraySizes->addInnerSize(numRows, specConstRows); // copy from source // add the column size arraySizes->addInnerSize(numCols, specConstCols); // copy from source // add cooperative matrix use arraySizes->addInnerSize(coopMatKHRuse); pubType.basicType = dstBasicType; pubType.vectorSize = 1u; pubType.qualifier = srcType.getQualifier(); pubType.qualifier.precision = EpqNone; pubType.coopmatNV = dstType.isCoopMatNV(); pubType.coopmatKHR = dstType.isCoopMatKHR(); pubType.arraySizes = nullptr; pubType.typeParameters = const_cast(dstTypeParameters); } if (builtinOp == EOpCompositeExtractCoopMatQCOM) { auto& srcType = arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType(); auto& dstType = arguments->getAsAggregate()->getSequence()[1]->getAsTyped()->getType(); glslang::TBasicType srcBasicType = srcType.getBasicType(); glslang::TBasicType dstBasicType = dstType.getBasicType(); if (dstBasicType != EbtUint && srcBasicType != dstBasicType) error(loc, "source and destination element types are not compatible", "", ""); uint32_t scope = spv_Scope_Subgroup; unsigned coopMatKHRuse = -1u; const TTypeParameters* srcTypeParameters = srcType.getTypeParameters(); if (srcTypeParameters->arraySizes == nullptr || srcTypeParameters->arraySizes->getNumDims() != 4) { error(loc, "source cooperative matrix has an unsupported type", "", ""); } else { auto arraySizes = srcTypeParameters->arraySizes; scope = arraySizes->getDimSize(0); coopMatKHRuse = arraySizes->getDimSize(3); } if (scope != spv_Scope_Subgroup) { scope = spv_Scope_Subgroup; error(loc, "cooperative matrix has unsupported scope; gl_SubgroupScope is expected", "", ""); } if (coopMatKHRuse < CM_MatrixUseA || coopMatKHRuse > CM_MatrixUseAccumulator) { coopMatKHRuse = CM_MatrixUseA; error(loc, "cooperative matrix use must be one of gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator", "", ""); } auto dstArrLen = dstType.getArraySizes()->getDimSize(0); auto dstLenAsNode = dstType.getArraySizes()->getDimNode(0); if (dstLenAsNode == nullptr) { bool ok = true; switch (dstBasicType) { case EbtUint: case EbtInt: case EbtFloat: ok = (((coopMatKHRuse == CM_MatrixUseA || coopMatKHRuse == CM_MatrixUseB) && dstArrLen == 8) || (coopMatKHRuse == CM_MatrixUseAccumulator) /* && (dstArrLen == 64 || dstArrLen == 32 || dstArrLen == 16))*/); break; case EbtFloat16: ok = (((coopMatKHRuse == CM_MatrixUseA || coopMatKHRuse == CM_MatrixUseB) && dstArrLen == 16) || (coopMatKHRuse == CM_MatrixUseAccumulator) /* && (dstArrLen == 64 || dstArrLen == 32 || dstArrLen == 16))*/); break; case EbtInt8: case EbtUint8: ok = (((coopMatKHRuse == CM_MatrixUseA || coopMatKHRuse == CM_MatrixUseB) && dstArrLen == 32) || (coopMatKHRuse == CM_MatrixUseAccumulator) /* && (dstArrLen == 64 || dstArrLen == 32 || dstArrLen == 16))*/); break; default: error(loc, "unsupported element type", "", ""); } if (!ok) error(loc, "unsupported destination array length", "", ""); } pubType.basicType = dstBasicType; pubType.vectorSize = 1u; pubType.qualifier.precision = EpqNone; pubType.coopmatNV = false; pubType.coopmatKHR = false; pubType.arraySizes = new TArraySizes; { //int coopMatKHRuse = srcTypeParameters->arraySizes->getDimSize(3); uint32_t index = -1u; if (coopMatKHRuse == CM_MatrixUseA) { index = 2; } else if (coopMatKHRuse == CM_MatrixUseB) { index = 1; } else if (coopMatKHRuse == CM_MatrixUseAccumulator) { index = 2; } else { error(loc, "source cooperative matrix has an unexpected cooperative matrix use", "", ""); } int32_t numRowsOrCols = srcTypeParameters->arraySizes->getDimSize(index); auto dimNode = srcTypeParameters->arraySizes->getDimNode(index); if (dimNode != nullptr && dstLenAsNode == nullptr) { numRowsOrCols = dstType.getArraySizes()->getDimSize(0); dimNode = nullptr; } //int32_t dstArrLen = dstType.getArraySizes()->getDimSize(0); pubType.arraySizes->addInnerSize(dstArrLen, dstLenAsNode); if (dimNode == nullptr && dstLenAsNode == nullptr) { const char* msg = nullptr; if (coopMatKHRuse == CM_MatrixUseA && (numRowsOrCols != dstArrLen && dstArrLen != 8)) { msg = "the source matrix's column is not compatible with the destination array"; } else if (coopMatKHRuse == CM_MatrixUseB && (numRowsOrCols != dstArrLen && dstArrLen != 8)) { msg = "the source matrix's row is not compatible with the destination array"; } else if (coopMatKHRuse == CM_MatrixUseAccumulator && (numRowsOrCols != dstArrLen && (srcBasicType == EbtFloat16 && numRowsOrCols != 2 * dstArrLen))) { msg = "the source matrix's column is not compatible with the destination array"; } if (msg != nullptr) error(loc, msg, "", ""); } } pubType.typeParameters = nullptr; } TType resultType(pubType); if (pubType.typeParameters != nullptr) resultType.copyTypeParameters(*pubType.typeParameters); // need to make StorageQualifier temp resultType.makeTemporary(); result->setType(resultType); // the RHS of an assignment to be formed auto rhs = result; // the LHS of an assignment to be formed; pick the last argument int lhsIdx = (builtinOp == EOpExtractSubArrayQCOM ? 2 : 1); auto lhs = arguments->getAsAggregate()->getSequence()[lhsIdx]->getAsTyped(); // pop the last argument from the arguments sequence arguments->getAsAggregate()->getSequence().pop_back(); // Create OpAssign { arrayObjectCheck(loc, lhs->getType(), "array assignment"); storage16BitAssignmentCheck(loc, lhs->getType(), "="); lValueErrorCheck(loc, "assign", lhs); rValueErrorCheck(loc, "assign", rhs); result = addAssign(loc, EOpAssign, lhs, rhs); if (result == nullptr) result = oldResult; } } TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNode* arguments, const TFunction& function) { checkLocation(loc, function.getBuiltInOp()); TIntermTyped *result = intermediate.addBuiltInFunctionCall(loc, function.getBuiltInOp(), function.getParamCount() == 1, arguments, function.getType()); if (result != nullptr && obeyPrecisionQualifiers()) computeBuiltinPrecisions(*result, function); if (result == nullptr) { if (arguments == nullptr) error(loc, " wrong operand type", "Internal Error", "built in unary operator function. Type: %s", ""); else error(arguments->getLoc(), " wrong operand type", "Internal Error", "built in unary operator function. Type: %s", static_cast(arguments)->getCompleteString(intermediate.getEnhancedMsgs()).c_str()); } else if (result->getAsOperator()) builtInOpCheck(loc, function, *result->getAsOperator()); // Special handling for function call with SPIR-V instruction qualifier specified if (function.getBuiltInOp() == EOpSpirvInst) { if (auto agg = result->getAsAggregate()) { // Propogate spirv_by_reference/spirv_literal from parameters to arguments auto& sequence = agg->getSequence(); for (unsigned i = 0; i < sequence.size(); ++i) { if (function[i].type->getQualifier().isSpirvByReference()) sequence[i]->getAsTyped()->getQualifier().setSpirvByReference(); if (function[i].type->getQualifier().isSpirvLiteral()) sequence[i]->getAsTyped()->getQualifier().setSpirvLiteral(); } // Attach the function call to SPIR-V intruction agg->setSpirvInstruction(function.getSpirvInstruction()); } else if (auto unaryNode = result->getAsUnaryNode()) { // Propogate spirv_by_reference/spirv_literal from parameters to arguments if (function[0].type->getQualifier().isSpirvByReference()) unaryNode->getOperand()->getQualifier().setSpirvByReference(); if (function[0].type->getQualifier().isSpirvLiteral()) unaryNode->getOperand()->getQualifier().setSpirvLiteral(); // Attach the function call to SPIR-V intruction unaryNode->setSpirvInstruction(function.getSpirvInstruction()); } else assert(0); } return result; } // "The operation of a built-in function can have a different precision // qualification than the precision qualification of the resulting value. // These two precision qualifications are established as follows. // // The precision qualification of the operation of a built-in function is // based on the precision qualification of its input arguments and formal // parameters: When a formal parameter specifies a precision qualifier, // that is used, otherwise, the precision qualification of the calling // argument is used. The highest precision of these will be the precision // qualification of the operation of the built-in function. Generally, // this is applied across all arguments to a built-in function, with the // exceptions being: // - bitfieldExtract and bitfieldInsert ignore the 'offset' and 'bits' // arguments. // - interpolateAt* functions only look at the 'interpolant' argument. // // The precision qualification of the result of a built-in function is // determined in one of the following ways: // // - For the texture sampling, image load, and image store functions, // the precision of the return type matches the precision of the // sampler type // // Otherwise: // // - For prototypes that do not specify a resulting precision qualifier, // the precision will be the same as the precision of the operation. // // - For prototypes that do specify a resulting precision qualifier, // the specified precision qualifier is the precision qualification of // the result." // void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction& function) { TPrecisionQualifier operationPrecision = EpqNone; TPrecisionQualifier resultPrecision = EpqNone; TIntermOperator* opNode = node.getAsOperator(); if (opNode == nullptr) return; if (TIntermUnary* unaryNode = node.getAsUnaryNode()) { operationPrecision = std::max(function[0].type->getQualifier().precision, unaryNode->getOperand()->getType().getQualifier().precision); if (function.getType().getBasicType() != EbtBool) resultPrecision = function.getType().getQualifier().precision == EpqNone ? operationPrecision : function.getType().getQualifier().precision; } else if (TIntermAggregate* agg = node.getAsAggregate()) { TIntermSequence& sequence = agg->getSequence(); unsigned int numArgs = (unsigned int)sequence.size(); switch (agg->getOp()) { case EOpBitfieldExtract: numArgs = 1; break; case EOpBitfieldInsert: numArgs = 2; break; case EOpInterpolateAtCentroid: case EOpInterpolateAtOffset: case EOpInterpolateAtSample: numArgs = 1; break; case EOpDebugPrintf: case EOpCooperativeMatrixPerElementOpNV: case EOpCooperativeMatrixReduceNV: case EOpConstructSaturated: numArgs = 0; break; default: break; } // find the maximum precision from the arguments and parameters for (unsigned int arg = 0; arg < numArgs; ++arg) { operationPrecision = std::max(operationPrecision, sequence[arg]->getAsTyped()->getQualifier().precision); } for (int arg = 0; arg < function.getParamCount(); ++arg) { operationPrecision = std::max(operationPrecision, function[arg].type->getQualifier().precision); } // compute the result precision if (agg->isSampling() || agg->getOp() == EOpImageLoad || agg->getOp() == EOpImageStore || agg->getOp() == EOpImageLoadLod || agg->getOp() == EOpImageStoreLod) resultPrecision = sequence[0]->getAsTyped()->getQualifier().precision; else if (function.getType().getBasicType() != EbtBool) resultPrecision = function.getType().getQualifier().precision == EpqNone ? operationPrecision : function.getType().getQualifier().precision; } // Propagate precision through this node and its children. That algorithm stops // when a precision is found, so start by clearing this subroot precision opNode->getQualifier().precision = EpqNone; if (operationPrecision != EpqNone) { opNode->propagatePrecision(operationPrecision); opNode->setOperationPrecision(operationPrecision); } // Now, set the result precision, which might not match opNode->getQualifier().precision = resultPrecision; } TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value) { storage16BitAssignmentCheck(loc, value->getType(), "return"); functionReturnsValue = true; TIntermBranch* branch = nullptr; if (currentFunctionType->getBasicType() == EbtVoid) { error(loc, "void function cannot return a value", "return", ""); branch = intermediate.addBranch(EOpReturn, loc); } else if (*currentFunctionType != value->getType()) { TIntermTyped* converted = intermediate.addConversion(EOpReturn, *currentFunctionType, value); if (converted) { if (*currentFunctionType != converted->getType()) error(loc, "cannot convert return value to function return type", "return", ""); if (version < 420) warn(loc, "type conversion on return values was not explicitly allowed until version 420", "return", ""); branch = intermediate.addBranch(EOpReturn, converted, loc); } else { error(loc, "type does not match, or is not convertible to, the function's return type", "return", ""); branch = intermediate.addBranch(EOpReturn, value, loc); } } else { if (value->getType().isTexture() || value->getType().isImage()) { if (spvVersion.spv != 0) error(loc, "sampler or image cannot be used as return type when generating SPIR-V", "return", ""); else if (!extensionTurnedOn(E_GL_ARB_bindless_texture)) error(loc, "sampler or image can be used as return type only when the extension GL_ARB_bindless_texture enabled", "return", ""); } branch = intermediate.addBranch(EOpReturn, value, loc); } branch->updatePrecision(currentFunctionType->getQualifier().precision); return branch; } // See if the operation is being done in an illegal location. void TParseContext::checkLocation(const TSourceLoc& loc, TOperator op) { switch (op) { case EOpBarrier: if (language == EShLangTessControl) { if (controlFlowNestingLevel > 0) error(loc, "tessellation control barrier() cannot be placed within flow control", "", ""); if (! inMain) error(loc, "tessellation control barrier() must be in main()", "", ""); else if (postEntryPointReturn) error(loc, "tessellation control barrier() cannot be placed after a return from main()", "", ""); } break; case EOpBeginInvocationInterlock: if (language != EShLangFragment) error(loc, "beginInvocationInterlockARB() must be in a fragment shader", "", ""); if (! inMain) error(loc, "beginInvocationInterlockARB() must be in main()", "", ""); else if (postEntryPointReturn) error(loc, "beginInvocationInterlockARB() cannot be placed after a return from main()", "", ""); if (controlFlowNestingLevel > 0) error(loc, "beginInvocationInterlockARB() cannot be placed within flow control", "", ""); if (beginInvocationInterlockCount > 0) error(loc, "beginInvocationInterlockARB() must only be called once", "", ""); if (endInvocationInterlockCount > 0) error(loc, "beginInvocationInterlockARB() must be called before endInvocationInterlockARB()", "", ""); beginInvocationInterlockCount++; // default to pixel_interlock_ordered if (intermediate.getInterlockOrdering() == EioNone) intermediate.setInterlockOrdering(EioPixelInterlockOrdered); break; case EOpEndInvocationInterlock: if (language != EShLangFragment) error(loc, "endInvocationInterlockARB() must be in a fragment shader", "", ""); if (! inMain) error(loc, "endInvocationInterlockARB() must be in main()", "", ""); else if (postEntryPointReturn) error(loc, "endInvocationInterlockARB() cannot be placed after a return from main()", "", ""); if (controlFlowNestingLevel > 0) error(loc, "endInvocationInterlockARB() cannot be placed within flow control", "", ""); if (endInvocationInterlockCount > 0) error(loc, "endInvocationInterlockARB() must only be called once", "", ""); if (beginInvocationInterlockCount == 0) error(loc, "beginInvocationInterlockARB() must be called before endInvocationInterlockARB()", "", ""); endInvocationInterlockCount++; break; default: break; } } // Finish processing object.length(). This started earlier in handleDotDereference(), where // the ".length" part was recognized and semantically checked, and finished here where the // function syntax "()" is recognized. // // Return resulting tree node. TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction* function, TIntermNode* intermNode) { int length = 0; if (function->getParamCount() > 0) error(loc, "method does not accept any arguments", function->getName().c_str(), ""); else { const TType& type = intermNode->getAsTyped()->getType(); if (type.isArray()) { if (type.isUnsizedArray()) { if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) { // We could be between a layout declaration that gives a built-in io array implicit size and // a user redeclaration of that array, meaning we have to substitute its implicit size here // without actually redeclaring the array. (It is an error to use a member before the // redeclaration, but not an error to use the array name itself.) const TString& name = intermNode->getAsSymbolNode()->getName(); if (name == "gl_in" || name == "gl_out" || name == "gl_MeshVerticesNV" || name == "gl_MeshPrimitivesNV") { length = getIoArrayImplicitSize(type.getQualifier()); } } else if (const auto typed = intermNode->getAsTyped()) { if (typed->getQualifier().builtIn == EbvSampleMask) { requireProfile(loc, EEsProfile, "the array size of gl_SampleMask and gl_SampleMaskIn is ceil(gl_MaxSamples/32)"); length = (resources.maxSamples + 31) / 32; } } if (length == 0) { if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) error(loc, "", function->getName().c_str(), "array must first be sized by a redeclaration or layout qualifier"); else if (isRuntimeLength(*intermNode->getAsTyped())) { // Create a unary op and let the back end handle it return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt)); } else error(loc, "", function->getName().c_str(), "array must be declared with a size before using this method"); } } else if (type.getOuterArrayNode()) { // If the array's outer size is specified by an intermediate node, it means the array's length // was specified by a specialization constant. In such a case, we should return the node of the // specialization constants to represent the length. return type.getOuterArrayNode(); } else length = type.getOuterArraySize(); } else if (type.isMatrix()) length = type.getMatrixCols(); else if (type.isVector()) length = type.getVectorSize(); else if (type.isCoopMat() || type.isCoopVecNV()) return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt)); else { // we should not get here, because earlier semantic checking should have prevented this path error(loc, ".length()", "unexpected use of .length()", ""); } } if (length == 0) length = 1; return intermediate.addConstantUnion(length, loc); } // // Add any needed implicit conversions for function-call arguments to input parameters. // void TParseContext::addInputArgumentConversions(const TFunction& function, TIntermNode*& arguments) const { TIntermAggregate* aggregate = arguments->getAsAggregate(); // Process each argument's conversion for (int i = 0; i < function.getParamCount(); ++i) { // At this early point there is a slight ambiguity between whether an aggregate 'arguments' // is the single argument itself or its children are the arguments. Only one argument // means take 'arguments' itself as the one argument. TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() : (aggregate ? aggregate->getSequence()[i]->getAsTyped() : arguments->getAsTyped()); if (*function[i].type != arg->getType()) { if (function[i].type->getQualifier().isParamInput() && !function[i].type->isCoopMat() && !function[i].type->isTensorARM() && // tensor layout/view type declarations don't do conversions, so we can't convert these parameters either (function.getName() != "createTensorLayoutNV") && (function.getName() != "createTensorViewNV")) { // In-qualified arguments just need an extra node added above the argument to // convert to the correct type. arg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg); if (arg) { if (function.getParamCount() == 1) arguments = arg; else { if (aggregate) aggregate->getSequence()[i] = arg; else arguments = arg; } } } } } } // // Add any needed implicit output conversions for function-call arguments. This // can require a new tree topology, complicated further by whether the function // has a return value. // // Returns a node of a subtree that evaluates to the return value of the function. // TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) const { TIntermSequence& arguments = intermNode.getSequence(); // Will there be any output conversions? bool outputConversions = false; for (int i = 0; i < function.getParamCount(); ++i) { if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().isParamOutput() && !function[i].type->isCoopMat()) { outputConversions = true; break; } } if (! outputConversions) return &intermNode; // Setup for the new tree, if needed: // // Output conversions need a different tree topology. // Out-qualified arguments need a temporary of the correct type, with the call // followed by an assignment of the temporary to the original argument: // void: function(arg, ...) -> ( function(tempArg, ...), arg = tempArg, ...) // ret = function(arg, ...) -> ret = (tempRet = function(tempArg, ...), arg = tempArg, ..., tempRet) // Where the "tempArg" type needs no conversion as an argument, but will convert on assignment. TIntermTyped* conversionTree = nullptr; TVariable* tempRet = nullptr; if (intermNode.getBasicType() != EbtVoid) { // do the "tempRet = function(...), " bit from above tempRet = makeInternalVariable("tempReturn", intermNode.getType()); TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, intermNode.getLoc()); conversionTree = intermediate.addAssign(EOpAssign, tempRetNode, &intermNode, intermNode.getLoc()); } else conversionTree = &intermNode; conversionTree = intermediate.makeAggregate(conversionTree); // Process each argument's conversion for (int i = 0; i < function.getParamCount(); ++i) { if (*function[i].type != arguments[i]->getAsTyped()->getType()) { if (function[i].type->getQualifier().isParamOutput()) { // Out-qualified arguments need to use the topology set up above. // do the " ...(tempArg, ...), arg = tempArg" bit from above TType paramType; paramType.shallowCopy(*function[i].type); if (arguments[i]->getAsTyped()->getType().isParameterized() && !paramType.isParameterized()) { paramType.shallowCopy(arguments[i]->getAsTyped()->getType()); paramType.copyTypeParameters(*arguments[i]->getAsTyped()->getType().getTypeParameters()); } TVariable* tempArg = makeInternalVariable("tempArg", paramType); tempArg->getWritableType().getQualifier().makeTemporary(); TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc()); TIntermTyped* tempAssign = intermediate.addAssign(EOpAssign, arguments[i]->getAsTyped(), tempArgNode, arguments[i]->getLoc()); conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc()); // replace the argument with another node for the same tempArg variable arguments[i] = intermediate.addSymbol(*tempArg, intermNode.getLoc()); } } } // Finalize the tree topology (see bigger comment above). if (tempRet) { // do the "..., tempRet" bit from above TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, intermNode.getLoc()); conversionTree = intermediate.growAggregate(conversionTree, tempRetNode, intermNode.getLoc()); } conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), intermNode.getLoc()); return conversionTree; } TIntermTyped* TParseContext::addAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) { if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference()) requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "+= and -= on a buffer reference"); if (op == EOpAssign && left->getBasicType() == EbtSampler && right->getBasicType() == EbtSampler) requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "sampler assignment for bindless texture"); return intermediate.addAssign(op, left, right, loc); } void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& fnCandidate, const TIntermOperator& callNode) { const TIntermSequence* argp = &callNode.getAsAggregate()->getSequence(); //const int gl_SemanticsRelaxed = 0x0; const int gl_SemanticsAcquire = 0x2; const int gl_SemanticsRelease = 0x4; const int gl_SemanticsAcquireRelease = 0x8; const int gl_SemanticsMakeAvailable = 0x2000; const int gl_SemanticsMakeVisible = 0x4000; const int gl_SemanticsVolatile = 0x8000; //const int gl_StorageSemanticsNone = 0x0; const int gl_StorageSemanticsBuffer = 0x40; const int gl_StorageSemanticsShared = 0x100; const int gl_StorageSemanticsImage = 0x800; const int gl_StorageSemanticsOutput = 0x1000; const int nonRelaxedMemoryOrder = gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease; unsigned int semantics = 0, storageClassSemantics = 0; unsigned int semantics2 = 0, storageClassSemantics2 = 0; const TIntermTyped* arg0 = (*argp)[0]->getAsTyped(); const bool isMS = arg0->getBasicType() == EbtSampler && arg0->getType().getSampler().isMultiSample(); // Grab the semantics and storage class semantics from the operands, based on opcode switch (callNode.getOp()) { case EOpAtomicAdd: case EOpAtomicSubtract: case EOpAtomicMin: case EOpAtomicMax: case EOpAtomicAnd: case EOpAtomicOr: case EOpAtomicXor: case EOpAtomicExchange: case EOpAtomicStore: storageClassSemantics = (*argp)[3]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics = (*argp)[4]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpAtomicLoad: storageClassSemantics = (*argp)[2]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics = (*argp)[3]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpAtomicCompSwap: storageClassSemantics = (*argp)[4]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics = (*argp)[5]->getAsConstantUnion()->getConstArray()[0].getIConst(); storageClassSemantics2 = (*argp)[6]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics2 = (*argp)[7]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpImageAtomicAdd: case EOpImageAtomicMin: case EOpImageAtomicMax: case EOpImageAtomicAnd: case EOpImageAtomicOr: case EOpImageAtomicXor: case EOpImageAtomicExchange: case EOpImageAtomicStore: storageClassSemantics = (*argp)[isMS ? 5 : 4]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics = (*argp)[isMS ? 6 : 5]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpImageAtomicLoad: storageClassSemantics = (*argp)[isMS ? 4 : 3]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics = (*argp)[isMS ? 5 : 4]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpImageAtomicCompSwap: storageClassSemantics = (*argp)[isMS ? 6 : 5]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics = (*argp)[isMS ? 7 : 6]->getAsConstantUnion()->getConstArray()[0].getIConst(); storageClassSemantics2 = (*argp)[isMS ? 8 : 7]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics2 = (*argp)[isMS ? 9 : 8]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpBarrier: storageClassSemantics = (*argp)[2]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics = (*argp)[3]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpMemoryBarrier: storageClassSemantics = (*argp)[1]->getAsConstantUnion()->getConstArray()[0].getIConst(); semantics = (*argp)[2]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; default: break; } if (((semantics | semantics2) & ~(gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease | gl_SemanticsMakeAvailable | gl_SemanticsMakeVisible | gl_SemanticsVolatile))) { error(loc, "Invalid semantics value", fnCandidate.getName().c_str(), ""); } if (((storageClassSemantics | storageClassSemantics2) & ~(gl_StorageSemanticsBuffer | gl_StorageSemanticsShared | gl_StorageSemanticsImage | gl_StorageSemanticsOutput))) { error(loc, "Invalid storage class semantics value", fnCandidate.getName().c_str(), ""); } if (((semantics & nonRelaxedMemoryOrder) && !IsPow2(semantics & nonRelaxedMemoryOrder)) || ((semantics2 & nonRelaxedMemoryOrder) && !IsPow2(semantics2 & nonRelaxedMemoryOrder))) { error(loc, "Semantics must not include multiple of gl_SemanticsRelease, gl_SemanticsAcquire, or " "gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } if (((semantics & nonRelaxedMemoryOrder) && !storageClassSemantics) || ((semantics2 & nonRelaxedMemoryOrder) && !storageClassSemantics2)) { error(loc, "Storage class semantics must not be zero when used with gl_SemanticsRelease, " "gl_SemanticsAcquire, or gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } if ((storageClassSemantics && !(semantics & nonRelaxedMemoryOrder)) || (storageClassSemantics2 && !(semantics2 & nonRelaxedMemoryOrder))) { error(loc, "Semantics must be gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used " "with non-zero storage class semantics", fnCandidate.getName().c_str(), ""); } if (((semantics & gl_SemanticsMakeAvailable) && !(semantics & (gl_SemanticsRelease | gl_SemanticsAcquireRelease))) || ((semantics2 & gl_SemanticsMakeAvailable) && !(semantics2 & (gl_SemanticsRelease | gl_SemanticsAcquireRelease)))) { error(loc, "gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } if (((semantics & gl_SemanticsMakeVisible) && !(semantics & (gl_SemanticsAcquire | gl_SemanticsAcquireRelease))) || ((semantics2 & gl_SemanticsMakeVisible) && !(semantics2 & (gl_SemanticsAcquire | gl_SemanticsAcquireRelease)))) { error(loc, "gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } if ((callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore) && (semantics & gl_SemanticsAcquire)) { error(loc, "gl_SemanticsAcquire must not be used with (image) atomic store", fnCandidate.getName().c_str(), ""); } if ((callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad) && (semantics & gl_SemanticsRelease)) { error(loc, "gl_SemanticsRelease must not be used with (image) atomic load", fnCandidate.getName().c_str(), ""); } if ((callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore || callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad) && (semantics & gl_SemanticsAcquireRelease)) { error(loc, "gl_SemanticsAcquireRelease must not be used with (image) atomic load/store", fnCandidate.getName().c_str(), ""); } if (callNode.getOp() == EOpMemoryBarrier && !(semantics & (gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease))) { error(loc, "Semantics must include exactly one of gl_SemanticsRelease, gl_SemanticsAcquire, or " "gl_SemanticsAcquireRelease when used with memoryBarrier", fnCandidate.getName().c_str(), ""); } if ((callNode.getOp() == EOpMemoryBarrier || callNode.getOp() == EOpBarrier) && (semantics & gl_SemanticsVolatile)) { error(loc, "gl_SemanticsVolatile must not be used with memoryBarrier or controlBarrier", fnCandidate.getName().c_str(), ""); } if (callNode.getOp() == EOpAtomicCompSwap || callNode.getOp() == EOpImageAtomicCompSwap) { if (semantics2 & (gl_SemanticsRelease | gl_SemanticsAcquireRelease)) { error(loc, "semUnequal must not be gl_SemanticsRelease or gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } if ((semantics2 & gl_SemanticsAcquire) && !(semantics & (gl_SemanticsAcquire | gl_SemanticsAcquireRelease))) { error(loc, "semUnequal must not be gl_SemanticsAcquire unless semEqual is gl_SemanticsAcquire " "or gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } if ((semantics2 & gl_SemanticsMakeVisible) && !(semantics & gl_SemanticsMakeVisible)) { error(loc, "semUnequal must not include gl_SemanticsMakeVisible unless semEqual also includes " "gl_SemanticsMakeVisible", fnCandidate.getName().c_str(), ""); } if (storageClassSemantics2 & ~(storageClassSemantics)) { error(loc, "semStorageUnequal must not include any option that is not present in semStorageEqual", fnCandidate.getName().c_str(), ""); } if ((semantics ^ semantics2) & gl_SemanticsVolatile) { error(loc, "semEqual and semUnequal must either both include gl_SemanticsVolatile or neither", fnCandidate.getName().c_str(), ""); } } } // // Do additional checking of built-in function calls that is not caught // by normal semantic checks on argument type, extension tagging, etc. // // Assumes there has been a semantically correct match to a built-in function prototype. // void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCandidate, TIntermOperator& callNode) { // Set up convenience accessors to the argument(s). There is almost always // multiple arguments for the cases below, but when there might be one, // check the unaryArg first. const TIntermSequence* argp = nullptr; // confusing to use [] syntax on a pointer, so this is to help get a reference const TIntermTyped* unaryArg = nullptr; const TIntermTyped* arg0 = nullptr; if (callNode.getAsAggregate()) { argp = &callNode.getAsAggregate()->getSequence(); if (argp->size() > 0) arg0 = (*argp)[0]->getAsTyped(); } else { assert(callNode.getAsUnaryNode()); unaryArg = callNode.getAsUnaryNode()->getOperand(); arg0 = unaryArg; } TString featureString; const char* feature = nullptr; switch (callNode.getOp()) { case EOpTextureGather: case EOpTextureGatherOffset: case EOpTextureGatherOffsets: { // Figure out which variants are allowed by what extensions, // and what arguments must be constant for which situations. featureString = fnCandidate.getName(); featureString += "(...)"; feature = featureString.c_str(); profileRequires(loc, EEsProfile, 310, nullptr, feature); int compArg = -1; // track which argument, if any, is the constant component argument const int numTexGatherExts = 3; const char* texGatherExts[numTexGatherExts] = { E_GL_ARB_texture_gather, E_GL_ARB_gpu_shader5, E_GL_NV_gpu_shader5}; switch (callNode.getOp()) { case EOpTextureGather: // More than two arguments needs gpu_shader5, and rectangular or shadow needs gpu_shader5, // otherwise, need GL_ARB_texture_gather. if (fnCandidate.getParamCount() > 2 || fnCandidate[0].type->getSampler().dim == EsdRect || fnCandidate[0].type->getSampler().shadow) { profileRequires(loc, ~EEsProfile, 400, Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5, feature); if (! fnCandidate[0].type->getSampler().shadow) compArg = 2; } else profileRequires(loc, ~EEsProfile, 400, numTexGatherExts, texGatherExts, feature); break; case EOpTextureGatherOffset: // GL_ARB_texture_gather is good enough for 2D non-shadow textures with no component argument if (fnCandidate[0].type->getSampler().dim == Esd2D && ! fnCandidate[0].type->getSampler().shadow && fnCandidate.getParamCount() == 3) profileRequires(loc, ~EEsProfile, 400, numTexGatherExts, texGatherExts, feature); else profileRequires(loc, ~EEsProfile, 400, Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5, feature); if (! (*argp)[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion()) profileRequires(loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "non-constant offset argument"); if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; break; case EOpTextureGatherOffsets: profileRequires(loc, ~EEsProfile, 400, Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5, feature); if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; // check for constant offsets if (! (*argp)[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion() // NV_gpu_shader5 relaxes this limitation and allows for non-constant offsets && !extensionTurnedOn(E_GL_NV_gpu_shader5)) error(loc, "must be a compile-time constant:", feature, "offsets argument"); break; default: break; } if (compArg > 0 && compArg < fnCandidate.getParamCount()) { if ((*argp)[compArg]->getAsConstantUnion()) { int value = (*argp)[compArg]->getAsConstantUnion()->getConstArray()[0].getIConst(); if (value < 0 || value > 3) error(loc, "must be 0, 1, 2, or 3:", feature, "component argument"); } else error(loc, "must be a compile-time constant:", feature, "component argument"); } bool bias = false; if (callNode.getOp() == EOpTextureGather) bias = fnCandidate.getParamCount() > 3; else if (callNode.getOp() == EOpTextureGatherOffset || callNode.getOp() == EOpTextureGatherOffsets) bias = fnCandidate.getParamCount() > 4; if (bias) { featureString = fnCandidate.getName(); featureString += "with bias argument"; feature = featureString.c_str(); profileRequires(loc, ~EEsProfile, 450, nullptr, feature); requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature); } break; } case EOpTexture: case EOpTextureLod: { if ((fnCandidate.getParamCount() > 2) && ((*argp)[1]->getAsTyped()->getType().getBasicType() == EbtFloat) && ((*argp)[1]->getAsTyped()->getType().getVectorSize() == 4) && fnCandidate[0].type->getSampler().shadow) { featureString = fnCandidate.getName(); if (callNode.getOp() == EOpTexture) featureString += "(..., float bias)"; else featureString += "(..., float lod)"; feature = featureString.c_str(); if ((fnCandidate[0].type->getSampler().dim == Esd2D && fnCandidate[0].type->getSampler().arrayed) || //2D Array Shadow (fnCandidate[0].type->getSampler().dim == EsdCube && fnCandidate[0].type->getSampler().arrayed && fnCandidate.getParamCount() > 3) || // Cube Array Shadow (fnCandidate[0].type->getSampler().dim == EsdCube && callNode.getOp() == EOpTextureLod)) { // Cube Shadow requireExtensions(loc, 1, &E_GL_EXT_texture_shadow_lod, feature); if (isEsProfile()) { if (version < 320 && !extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) error(loc, "GL_EXT_texture_shadow_lod not supported for this ES version", feature, ""); else profileRequires(loc, EEsProfile, 320, nullptr, feature); } else { // Desktop profileRequires(loc, ~EEsProfile, 130, nullptr, feature); } } } break; } case EOpSparseTextureGather: case EOpSparseTextureGatherOffset: case EOpSparseTextureGatherOffsets: { bool bias = false; if (callNode.getOp() == EOpSparseTextureGather) bias = fnCandidate.getParamCount() > 4; else if (callNode.getOp() == EOpSparseTextureGatherOffset || callNode.getOp() == EOpSparseTextureGatherOffsets) bias = fnCandidate.getParamCount() > 5; if (bias) { featureString = fnCandidate.getName(); featureString += "with bias argument"; feature = featureString.c_str(); profileRequires(loc, ~EEsProfile, 450, nullptr, feature); requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature); } // As per GL_ARB_sparse_texture2 extension "Offsets" parameter must be constant integral expression // for sparseTextureGatherOffsetsARB just as textureGatherOffsets if (callNode.getOp() == EOpSparseTextureGatherOffsets) { int offsetsArg = arg0->getType().getSampler().shadow ? 3 : 2; if (!(*argp)[offsetsArg]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "offsets", ""); } break; } case EOpSparseTextureGatherLod: case EOpSparseTextureGatherLodOffset: case EOpSparseTextureGatherLodOffsets: { requireExtensions(loc, 1, &E_GL_ARB_sparse_texture2, fnCandidate.getName().c_str()); break; } case EOpSwizzleInvocations: { if (! (*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "offset", ""); else { unsigned offset[4] = {}; offset[0] = (*argp)[1]->getAsConstantUnion()->getConstArray()[0].getUConst(); offset[1] = (*argp)[1]->getAsConstantUnion()->getConstArray()[1].getUConst(); offset[2] = (*argp)[1]->getAsConstantUnion()->getConstArray()[2].getUConst(); offset[3] = (*argp)[1]->getAsConstantUnion()->getConstArray()[3].getUConst(); if (offset[0] > 3 || offset[1] > 3 || offset[2] > 3 || offset[3] > 3) error(loc, "components must be in the range [0, 3]", "offset", ""); } break; } case EOpSwizzleInvocationsMasked: { if (! (*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "mask", ""); else { unsigned mask[3] = {}; mask[0] = (*argp)[1]->getAsConstantUnion()->getConstArray()[0].getUConst(); mask[1] = (*argp)[1]->getAsConstantUnion()->getConstArray()[1].getUConst(); mask[2] = (*argp)[1]->getAsConstantUnion()->getConstArray()[2].getUConst(); if (mask[0] > 31 || mask[1] > 31 || mask[2] > 31) error(loc, "components must be in the range [0, 31]", "mask", ""); } break; } case EOpTextureOffset: case EOpTextureFetchOffset: case EOpTextureProjOffset: case EOpTextureLodOffset: case EOpTextureProjLodOffset: case EOpTextureGradOffset: case EOpTextureProjGradOffset: case EOpSparseTextureOffset: case EOpSparseTextureFetchOffset: case EOpSparseTextureLodOffset: case EOpSparseTextureGradOffset: { // Handle texture-offset limits checking // Pick which argument has to hold constant offsets int arg = -1; switch (callNode.getOp()) { case EOpSparseTextureOffset: case EOpTextureOffset: case EOpTextureProjOffset: arg = 2; break; case EOpSparseTextureLodOffset: case EOpTextureLodOffset: case EOpTextureProjLodOffset: arg = 3; break; case EOpSparseTextureGradOffset: case EOpTextureGradOffset: case EOpTextureProjGradOffset: arg = 4; break; case EOpSparseTextureFetchOffset: case EOpTextureFetchOffset: arg = (arg0->getType().getSampler().isRect()) ? 2 : 3; break; default: assert(0); break; } if (arg > 0) { bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 && arg0->getType().getSampler().shadow; if (f16ShadowCompare) ++arg; // Allow non-constant offsets for certain texture ops bool variableOffsetSupport = extensionTurnedOn(E_GL_NV_gpu_shader5) && (callNode.getOp() == EOpTextureOffset || callNode.getOp() == EOpTextureFetchOffset || callNode.getOp() == EOpTextureProjOffset || callNode.getOp() == EOpTextureLodOffset || callNode.getOp() == EOpTextureProjLodOffset); if (! (*argp)[arg]->getAsTyped()->getQualifier().isConstant()) { if (!extensionTurnedOn(E_GL_EXT_texture_offset_non_const) && !variableOffsetSupport) error(loc, "argument must be compile-time constant", "texel offset", ""); } else if ((*argp)[arg]->getAsConstantUnion()) { const TType& type = (*argp)[arg]->getAsTyped()->getType(); for (int c = 0; c < type.getVectorSize(); ++c) { int offset = (*argp)[arg]->getAsConstantUnion()->getConstArray()[c].getIConst(); if (offset > resources.maxProgramTexelOffset || offset < resources.minProgramTexelOffset) error(loc, "value is out of range:", "texel offset", "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]"); } } // This check does not apply to sparse because // GL_ARB_sparse_texture2 always includes this function. if (callNode.getOp() == EOpTextureOffset) { TSampler s = arg0->getType().getSampler(); if (s.is2D() && s.isArrayed() && s.isShadow()) { if ( ((*argp)[1]->getAsTyped()->getType().getBasicType() == EbtFloat) && ((*argp)[1]->getAsTyped()->getType().getVectorSize() == 4) && (fnCandidate.getParamCount() == 4)) { featureString = fnCandidate.getName() + " for sampler2DArrayShadow"; feature = featureString.c_str(); requireExtensions(loc, 1, &E_GL_EXT_texture_shadow_lod, feature); profileRequires(loc, EEsProfile, 300, nullptr, feature); profileRequires(loc, ~EEsProfile, 130, nullptr, feature); } else if (isEsProfile()) error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "ES Profile"); else if (version <= 420) error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "version <= 420"); } } // This check does not apply to sparse because // GL_ARB_sparse_texture2 does not define sparseTextureLodOffsetARB // with a sampler2DArrayShadow. if (callNode.getOp() == EOpTextureLodOffset) { TSampler s = arg0->getType().getSampler(); if (s.is2D() && s.isArrayed() && s.isShadow() && ((*argp)[1]->getAsTyped()->getType().getBasicType() == EbtFloat) && ((*argp)[1]->getAsTyped()->getType().getVectorSize() == 4) && (fnCandidate.getParamCount() == 4)) { featureString = fnCandidate.getName() + " for sampler2DArrayShadow"; feature = featureString.c_str(); profileRequires(loc, EEsProfile, 300, nullptr, feature); profileRequires(loc, ~EEsProfile, 130, nullptr, feature); requireExtensions(loc, 1, &E_GL_EXT_texture_shadow_lod, feature); } } } break; } case EOpTraceNV: if (!(*argp)[10]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "payload number", "a"); break; case EOpTraceRayMotionNV: if (!(*argp)[11]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "payload number", "a"); break; case EOpTraceKHR: if (!(*argp)[10]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "payload number", "a"); else { unsigned int location = (*argp)[10]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); } break; case EOpExecuteCallableNV: if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "callable data number", ""); break; case EOpExecuteCallableKHR: if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "callable data number", ""); else { unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(1, location) < 0) error(loc, "with layout(location =", "no callableDataEXT/callableDataInEXT declared", "%d)", location); } break; case EOpHitObjectTraceRayNV: if (!(*argp)[11]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "payload number", ""); else { unsigned int location = (*argp)[11]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); } break; case EOpHitObjectTraceRayMotionNV: if (!(*argp)[12]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "payload number", ""); else { unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); } break; case EOpHitObjectExecuteShaderNV: if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "payload number", ""); else { unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); } break; case EOpHitObjectRecordHitNV: if (!(*argp)[12]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); else { unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); } break; case EOpHitObjectRecordHitMotionNV: if (!(*argp)[13]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); else { unsigned int location = (*argp)[13]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); } break; case EOpHitObjectRecordHitWithIndexNV: if (!(*argp)[11]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); else { unsigned int location = (*argp)[11]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); } break; case EOpHitObjectRecordHitWithIndexMotionNV: if (!(*argp)[12]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); else { unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); } break; case EOpHitObjectGetAttributesNV: if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); else { unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); } break; case EOpRayQueryGetIntersectionType: case EOpRayQueryGetIntersectionT: case EOpRayQueryGetIntersectionInstanceCustomIndex: case EOpRayQueryGetIntersectionInstanceId: case EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: case EOpRayQueryGetIntersectionGeometryIndex: case EOpRayQueryGetIntersectionPrimitiveIndex: case EOpRayQueryGetIntersectionBarycentrics: case EOpRayQueryGetIntersectionFrontFace: case EOpRayQueryGetIntersectionObjectRayDirection: case EOpRayQueryGetIntersectionObjectRayOrigin: case EOpRayQueryGetIntersectionObjectToWorld: case EOpRayQueryGetIntersectionWorldToObject: case EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: case EOpRayQueryGetIntersectionClusterIdNV: case EOpRayQueryGetIntersectionSpherePositionNV: case EOpRayQueryGetIntersectionSphereRadiusNV: case EOpRayQueryGetIntersectionLSSHitValueNV: case EOpRayQueryGetIntersectionLSSPositionsNV: case EOpRayQueryGetIntersectionLSSRadiiNV: if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "committed", ""); break; case EOpTextureQuerySamples: case EOpImageQuerySamples: // GL_ARB_shader_texture_image_samples profileRequires(loc, ~EEsProfile, 450, E_GL_ARB_shader_texture_image_samples, "textureSamples and imageSamples"); break; case EOpImageAtomicAdd: case EOpImageAtomicMin: case EOpImageAtomicMax: case EOpImageAtomicAnd: case EOpImageAtomicOr: case EOpImageAtomicXor: case EOpImageAtomicExchange: case EOpImageAtomicCompSwap: case EOpImageAtomicLoad: case EOpImageAtomicStore: { // Make sure the image types have the correct layout() format and correct argument types const TType& imageType = arg0->getType(); if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint || imageType.getSampler().type == EbtInt64 || imageType.getSampler().type == EbtUint64) { if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui && imageType.getQualifier().getFormat() != ElfR64i && imageType.getQualifier().getFormat() != ElfR64ui) error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), ""); if (callNode.getType().getBasicType() == EbtInt64 && imageType.getQualifier().getFormat() != ElfR64i) error(loc, "only supported on image with format r64i", fnCandidate.getName().c_str(), ""); else if (callNode.getType().getBasicType() == EbtUint64 && imageType.getQualifier().getFormat() != ElfR64ui) error(loc, "only supported on image with format r64ui", fnCandidate.getName().c_str(), ""); } else if(callNode.getType().getBasicType() == EbtFloat16 && ((callNode.getType().getVectorSize() == 2 && arg0->getType().getQualifier().getFormat() == ElfRg16f) || (callNode.getType().getVectorSize() == 4 && arg0->getType().getQualifier().getFormat() == ElfRgba16f))) { if (StartsWith(fnCandidate.getName(), "imageAtomicAdd") || StartsWith(fnCandidate.getName(), "imageAtomicExchange") || StartsWith(fnCandidate.getName(), "imageAtomicMin") || StartsWith(fnCandidate.getName(), "imageAtomicMax")) { requireExtensions(loc, 1, &E_GL_NV_shader_atomic_fp16_vector, fnCandidate.getName().c_str()); } else { error(loc, "f16vec2/4 operation not supported on: ", fnCandidate.getName().c_str(), ""); } } else if (imageType.getSampler().type == EbtFloat) { if (StartsWith(fnCandidate.getName(), "imageAtomicExchange")) { // imageAtomicExchange doesn't require an extension } else if (StartsWith(fnCandidate.getName(), "imageAtomicAdd") || StartsWith(fnCandidate.getName(), "imageAtomicLoad") || StartsWith(fnCandidate.getName(), "imageAtomicStore")) { requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str()); } else if (StartsWith(fnCandidate.getName(), "imageAtomicMin") || StartsWith(fnCandidate.getName(), "imageAtomicMax")) { requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str()); } else { error(loc, "only supported on integer images", fnCandidate.getName().c_str(), ""); } if (imageType.getQualifier().getFormat() != ElfR32f && isEsProfile()) error(loc, "only supported on image with format r32f", fnCandidate.getName().c_str(), ""); } else { error(loc, "not supported on this image type", fnCandidate.getName().c_str(), ""); } const size_t maxArgs = imageType.getSampler().isMultiSample() ? 5 : 4; if (argp->size() > maxArgs) { requireExtensions(loc, 1, &E_GL_KHR_memory_scope_semantics, fnCandidate.getName().c_str()); memorySemanticsCheck(loc, fnCandidate, callNode); } break; } case EOpAtomicAdd: case EOpAtomicSubtract: case EOpAtomicMin: case EOpAtomicMax: case EOpAtomicAnd: case EOpAtomicOr: case EOpAtomicXor: case EOpAtomicExchange: case EOpAtomicCompSwap: case EOpAtomicLoad: case EOpAtomicStore: { if (argp->size() > 3) { requireExtensions(loc, 1, &E_GL_KHR_memory_scope_semantics, fnCandidate.getName().c_str()); memorySemanticsCheck(loc, fnCandidate, callNode); if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange || callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore) && (arg0->getType().getBasicType() == EbtFloat || arg0->getType().getBasicType() == EbtDouble)) { requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str()); } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange || callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpAtomicMin || callNode.getOp() == EOpAtomicMax) && arg0->getType().isFloatingDomain()) { requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str()); } } else if (arg0->getType().getBasicType() == EbtInt64 || arg0->getType().getBasicType() == EbtUint64) { const char* const extensions[2] = { E_GL_NV_shader_atomic_int64, E_GL_EXT_shader_atomic_int64 }; requireExtensions(loc, 2, extensions, fnCandidate.getName().c_str()); } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange || callNode.getOp() == EOpAtomicMin || callNode.getOp() == EOpAtomicMax) && arg0->getType().getBasicType() == EbtFloat16 && (arg0->getType().getVectorSize() == 2 || arg0->getType().getVectorSize() == 4 )) { requireExtensions(loc, 1, &E_GL_NV_shader_atomic_fp16_vector, fnCandidate.getName().c_str()); } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange) && (arg0->getType().getBasicType() == EbtFloat || arg0->getType().getBasicType() == EbtDouble)) { requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str()); } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange || callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpAtomicMin || callNode.getOp() == EOpAtomicMax) && arg0->getType().isFloatingDomain()) { requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str()); } const TIntermTyped* base = TIntermediate::traverseLValueBase(arg0, true, true); const char* errMsg = "Only l-values corresponding to shader block storage or shared variables can be used with " "atomic memory functions."; if (base) { 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 && qualifier.storage != EvqtaskPayloadSharedEXT) error(loc, errMsg, fnCandidate.getName().c_str(), ""); } else { error(loc, errMsg, fnCandidate.getName().c_str(), ""); } break; } case EOpInterpolateAtCentroid: case EOpInterpolateAtSample: case EOpInterpolateAtOffset: case EOpInterpolateAtVertex: { if (arg0->getType().getQualifier().storage != EvqVaryingIn) { // Traverse down the left branch of arg0 to ensure this argument is a valid interpolant. // // For desktop GL >4.3 we effectively only need to ensure that arg0 represents an l-value from an // input declaration. // // For desktop GL <= 4.3 and ES, we must also ensure that swizzling is not used // // For ES, we must also ensure that a field selection operator (i.e., '.') is not used on a named // struct. const bool esProfile = isEsProfile(); const bool swizzleOkay = !esProfile && (version >= 440); std::string interpolantErrorMsg = "first argument must be an interpolant, or interpolant-array element"; bool isValid = true; // Assume that the interpolant is valid until we find a condition making it invalid bool isIn = false; // Checks whether or not the interpolant is a shader input bool structAccessOp = false; // Whether or not the previous node in the chain is a struct accessor TIntermediate::traverseLValueBase( arg0, swizzleOkay, false, [&isValid, &isIn, &interpolantErrorMsg, esProfile, &structAccessOp](const TIntermNode& n) -> bool { auto* type = n.getAsTyped(); if (type) { if (type->getType().getQualifier().storage == EvqVaryingIn) { isIn = true; } // If a field accessor was used, it can only be used to access a field with an input block, not a struct. if (structAccessOp && (type->getType().getBasicType() != EbtBlock)) { interpolantErrorMsg += ". Using the field of a named struct as an interpolant argument is not " "allowed (ES-only)."; isValid = false; } } // ES has different requirements for interpolants than GL if (esProfile) { // Swizzling will be taken care of by the 'swizzleOkay' argument passsed to traverseLValueBase, // so we only ned to check whether or not a field accessor has been used with a named struct. auto* binary = n.getAsBinaryNode(); if (binary && (binary->getOp() == EOpIndexDirectStruct)) { structAccessOp = true; } } // Don't continue traversing if we know we have an invalid interpolant at this point. return isValid; }); if (!isIn || !isValid) { error(loc, interpolantErrorMsg.c_str(), fnCandidate.getName().c_str(), ""); } } if (callNode.getOp() == EOpInterpolateAtVertex) { if (!arg0->getType().getQualifier().isExplicitInterpolation()) error(loc, "argument must be qualified as __explicitInterpAMD in", "interpolant", ""); else { if (! (*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "vertex index", ""); else { unsigned vertexIdx = (*argp)[1]->getAsConstantUnion()->getConstArray()[0].getUConst(); if (vertexIdx > 2) error(loc, "must be in the range [0, 2]", "vertex index", ""); } } } } break; case EOpEmitStreamVertex: case EOpEndStreamPrimitive: if (version == 150) requireExtensions(loc, Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5, "if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5/GL_NV_gpu_shader5"); intermediate.setMultiStream(); break; case EOpSubgroupClusteredAdd: case EOpSubgroupClusteredMul: case EOpSubgroupClusteredMin: case EOpSubgroupClusteredMax: case EOpSubgroupClusteredAnd: case EOpSubgroupClusteredOr: case EOpSubgroupClusteredXor: // The as used in the subgroupClustered() operations must be: // - An integral constant expression. // - At least 1. // - A power of 2. if ((*argp)[1]->getAsConstantUnion() == nullptr) error(loc, "argument must be compile-time constant", "cluster size", ""); else { int size = (*argp)[1]->getAsConstantUnion()->getConstArray()[0].getIConst(); if (size < 1) error(loc, "argument must be at least 1", "cluster size", ""); else if (!IsPow2(size)) error(loc, "argument must be a power of 2", "cluster size", ""); } break; case EOpSubgroupBroadcast: case EOpSubgroupQuadBroadcast: if (spvVersion.spv < EShTargetSpv_1_5) { // must be an integral constant expression. if ((*argp)[1]->getAsConstantUnion() == nullptr) error(loc, "argument must be compile-time constant", "id", ""); } break; case EOpBarrier: case EOpMemoryBarrier: if (argp->size() > 0) { requireExtensions(loc, 1, &E_GL_KHR_memory_scope_semantics, fnCandidate.getName().c_str()); memorySemanticsCheck(loc, fnCandidate, callNode); } break; case EOpMix: if (profile == EEsProfile && version < 310) { // Look for specific signatures if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat && (*argp)[1]->getAsTyped()->getBasicType() != EbtFloat && (*argp)[2]->getAsTyped()->getBasicType() == EbtBool) { requireExtensions(loc, 1, &E_GL_EXT_shader_integer_mix, "specific signature of builtin mix"); } } if (profile != EEsProfile && version < 450) { if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat && (*argp)[0]->getAsTyped()->getBasicType() != EbtDouble && (*argp)[1]->getAsTyped()->getBasicType() != EbtFloat && (*argp)[1]->getAsTyped()->getBasicType() != EbtDouble && (*argp)[2]->getAsTyped()->getBasicType() == EbtBool) { requireExtensions(loc, 1, &E_GL_EXT_shader_integer_mix, fnCandidate.getName().c_str()); } } break; case EOpLessThan: case EOpLessThanEqual: case EOpGreaterThan: case EOpGreaterThanEqual: case EOpEqual: case EOpNotEqual: if (profile != EEsProfile && version >= 150 && version < 450) { if ((*argp)[1]->getAsTyped()->getBasicType() == EbtInt64 || (*argp)[1]->getAsTyped()->getBasicType() == EbtUint64) requireExtensions(loc, 1, &E_GL_NV_gpu_shader5, fnCandidate.getName().c_str()); } break; case EOpFma: case EOpFrexp: case EOpLdexp: if (profile != EEsProfile && version < 400) { if ((*argp)[0]->getAsTyped()->getBasicType() == EbtFloat) { requireExtensions(loc, Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5, fnCandidate.getName().c_str()); } } break; case EOpCooperativeVectorMatMulNV: case EOpCooperativeVectorMatMulAddNV: { int inputInterpIdx = 2; int matrixInterpIdx = 5; int biasInterpIdx = 8; int MIdx = callNode.getOp() == EOpCooperativeVectorMatMulAddNV ? 9 : 6; int KIdx = callNode.getOp() == EOpCooperativeVectorMatMulAddNV ? 10 : 7; int matrixLayoutIdx = callNode.getOp() == EOpCooperativeVectorMatMulAddNV ? 11 : 8; int transposeIdx = callNode.getOp() == EOpCooperativeVectorMatMulAddNV ? 12 : 9; if (!(*argp)[inputInterpIdx]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "inputInterpretation", ""); if (!(*argp)[matrixInterpIdx]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "matrixInterpretation", ""); if (callNode.getOp() == EOpCooperativeVectorMatMulAddNV) { if (!(*argp)[biasInterpIdx]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "biasInterpretation", ""); } if (!(*argp)[MIdx]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "M", ""); if (!(*argp)[KIdx]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "K", ""); if (!(*argp)[matrixLayoutIdx]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "matrixLayout", ""); if (!(*argp)[transposeIdx]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "transpose", ""); } break; case EOpCooperativeVectorOuterProductAccumulateNV: if (!(*argp)[5]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "matrixLayout", ""); if (!(*argp)[6]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "matrixInterpretation", ""); break; case EOpCooperativeMatrixLoad: case EOpCooperativeMatrixLoadNV: case EOpCooperativeMatrixLoadTensorNV: case EOpCooperativeMatrixStore: case EOpCooperativeMatrixStoreNV: case EOpCooperativeMatrixStoreTensorNV: { const TIntermTyped *arg1 = (*argp)[1]->getAsTyped(); const TIntermTyped* base = TIntermediate::traverseLValueBase(arg1, true, true); const char* errMsg = "Only l-values corresponding to storage block or shared variables can be used with " "cooperative matrix load/store functions."; if (base) { 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) error(loc, errMsg, fnCandidate.getName().c_str(), ""); } else { error(loc, errMsg, fnCandidate.getName().c_str(), ""); } } break; default: break; } // Texture operations on texture objects (aside from texelFetch on a // textureBuffer) require EXT_samplerless_texture_functions. switch (callNode.getOp()) { case EOpTextureQuerySize: case EOpTextureQueryLevels: case EOpTextureQuerySamples: case EOpTextureFetch: case EOpTextureFetchOffset: { const TSampler& sampler = fnCandidate[0].type->getSampler(); const bool isTexture = sampler.isTexture() && !sampler.isCombined(); const bool isBuffer = sampler.isBuffer(); const bool isFetch = callNode.getOp() == EOpTextureFetch || callNode.getOp() == EOpTextureFetchOffset; if (isTexture && (!isBuffer || !isFetch)) requireExtensions(loc, 1, &E_GL_EXT_samplerless_texture_functions, fnCandidate.getName().c_str()); break; } case EOpConstructSaturated: { auto &sequence = callNode.getAsAggregate()->getSequence(); if (sequence.size() != 2) { error(loc, "requires exactly two parameters", "", ""); } auto &op0Type = sequence[0]->getAsTyped()->getType(); auto &op1Type = sequence[1]->getAsTyped()->getType(); if (op0Type.getBasicType() != EbtFloatE5M2 && op0Type.getBasicType() != EbtFloatE4M3) { error(loc, "first parameter must have floate5m2 or floate4m3 basic type", "", ""); } if (op1Type.getBasicType() == EbtFloatE5M2 || op1Type.getBasicType() == EbtFloatE4M3) { error(loc, "second parameter must not have floate5m2 or floate4m3 basic type", "", ""); } if (!(op0Type.isScalar() || op0Type.isVector() || op0Type.isCoopMatKHR())) { error(loc, "first parameter must be scalar, vector, or cooperative matrix", "", ""); } if (!(op1Type.isScalar() || op1Type.isVector() || op1Type.isCoopMatKHR())) { error(loc, "second parameter must be scalar, vector, or cooperative matrix", "", ""); } if (!(op0Type.sameElementShape(op1Type) || op0Type.sameCoopMatShape(op1Type))) { error(loc, "types must match other than scalar type and coopmat Use", "", ""); } break; } case EOpTensorReadARM: case EOpTensorWriteARM: { const TType &tensorType = (*argp)[0]->getAsTyped()->getType(); // Check that coordinates argument length matches rank of tensor argument. int tensorRank = tensorType.getTensorRankARM(); const TArraySizes *coordArgArrayTy = (*argp)[1]->getAsTyped()->getType().getArraySizes(); assert(coordArgArrayTy->getNumDims() == 1 && "expecting 1D coordinate array"); if (coordArgArrayTy->getDimSize(0) != tensorRank) { error(loc, "number of coordinates does not match tensor rank", "coord", ""); } // Check that tensor element type matches data argument. TBasicType eltTy = tensorType.getBasicType(); TBasicType argTy = (*argp)[2]->getAsTyped()->getType().getBasicType(); if (eltTy != argTy) { error(loc, "", "data", "data argument type (%s) does not match tensor element type (%s)", TType::getBasicString(argTy), TType::getBasicString(eltTy)); } // Check optional tensor operands. if (argp->size() > 3) { const TIntermConstantUnion* opArg = (*argp)[3]->getAsConstantUnion(); if (!opArg) { error(loc, "tensor operands argument must be a constant integral expression", "tensorOps", ""); } const unsigned int ops = opArg ? opArg->getConstArray()[0].getUConst() : 0; const int gl_TensorOperandsOutOfBoundsValueARM = 0x2; if (ops & gl_TensorOperandsOutOfBoundsValueARM) { // Out-of-bounds values can only be used with reads. if (callNode.getOp() != EOpTensorReadARM) { error(loc, "out-of-bounds value is only valid with tensorReadARM", "tensorOps", ""); } // Check that an out-of-bounds value is present. if (argp->size() == 4) { error(loc, "expecting out-of-bounds value as next argument", "tensorOps", ""); } else { // Check constantness of out-of-bounds value. const TIntermConstantUnion* oobArg = (*argp)[4]->getAsConstantUnion(); if (!oobArg) { error(loc, "argument following gl_TensorOperandsOutOfBoundsValueARM must be constant", "vararg", ""); } else if (oobArg->getType().getBasicType() != tensorType.getBasicType()) { // The type of the OOB value does not match the tensor type. error(loc, "", "vararg", "out-of-bounds value type (%s) does not match tensor element type (%s)", TType::getBasicString(oobArg->getBasicType()), TType::getBasicString(eltTy)); } } } } break; } case EOpTensorSizeARM: { unsigned int tensorRank = (*argp)[0]->getAsTyped()->getType().getTensorRankARM(); const TIntermConstantUnion *dimArg = (*argp)[1]->getAsConstantUnion(); if (dimArg) { if (dimArg->getConstArray()[0].getUConst() >= tensorRank) { error(loc, "dimension argument exceeds tensor rank", "dim", ""); } } else { error(loc, "dimension argument must be constant", "dim", ""); } break; } default: break; } if (callNode.isSubgroup()) { // these require SPIR-V 1.3 if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3) error(loc, "requires SPIR-V 1.3", "subgroup op", ""); // Check that if extended types are being used that the correct extensions are enabled. if (arg0 != nullptr) { const TType& type = arg0->getType(); 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(enhanced).c_str()); break; case EbtInt16: case EbtUint16: 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(enhanced).c_str()); break; case EbtFloat16: requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString(enhanced).c_str()); break; } } } } // Deprecated! Use PureOperatorBuiltins == true instead, in which case this // functionality is handled in builtInOpCheck() instead of here. // // Do additional checking of built-in function calls that were not mapped // to built-in operations (e.g., texturing functions). // // Assumes there has been a semantically correct match to a built-in function. // void TParseContext::nonOpBuiltInCheck(const TSourceLoc& loc, const TFunction& fnCandidate, TIntermAggregate& callNode) { // Further maintenance of this function is deprecated, because the "correct" // future-oriented design is to not have to do string compares on function names. // If PureOperatorBuiltins == true, then all built-ins should be mapped // to a TOperator, and this function would then never get called. assert(PureOperatorBuiltins == false); // built-in texturing functions get their return value precision from the precision of the sampler if (fnCandidate.getType().getQualifier().precision == EpqNone && fnCandidate.getParamCount() > 0 && fnCandidate[0].type->getBasicType() == EbtSampler) callNode.getQualifier().precision = callNode.getSequence()[0]->getAsTyped()->getQualifier().precision; if (fnCandidate.getName().compare(0, 7, "texture") == 0) { if (fnCandidate.getName().compare(0, 13, "textureGather") == 0) { TString featureString = fnCandidate.getName() + "(...)"; const char* feature = featureString.c_str(); profileRequires(loc, EEsProfile, 310, nullptr, feature); int compArg = -1; // track which argument, if any, is the constant component argument if (fnCandidate.getName().compare("textureGatherOffset") == 0) { // GL_ARB_texture_gather is good enough for 2D non-shadow textures with no component argument if (fnCandidate[0].type->getSampler().dim == Esd2D && ! fnCandidate[0].type->getSampler().shadow && fnCandidate.getParamCount() == 3) profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_texture_gather, feature); else profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_gpu_shader5, feature); int offsetArg = fnCandidate[0].type->getSampler().shadow ? 3 : 2; if (! callNode.getSequence()[offsetArg]->getAsConstantUnion()) profileRequires(loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "non-constant offset argument"); if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; } else if (fnCandidate.getName().compare("textureGatherOffsets") == 0) { profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_gpu_shader5, feature); if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; // check for constant offsets int offsetArg = fnCandidate[0].type->getSampler().shadow ? 3 : 2; if (! callNode.getSequence()[offsetArg]->getAsConstantUnion() && !extensionTurnedOn(E_GL_NV_gpu_shader5)) error(loc, "must be a compile-time constant:", feature, "offsets argument"); } else if (fnCandidate.getName().compare("textureGather") == 0) { // More than two arguments needs gpu_shader5, and rectangular or shadow needs gpu_shader5, // otherwise, need GL_ARB_texture_gather. if (fnCandidate.getParamCount() > 2 || fnCandidate[0].type->getSampler().dim == EsdRect || fnCandidate[0].type->getSampler().shadow) { profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_gpu_shader5, feature); if (! fnCandidate[0].type->getSampler().shadow) compArg = 2; } else profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_texture_gather, feature); } if (compArg > 0 && compArg < fnCandidate.getParamCount()) { if (callNode.getSequence()[compArg]->getAsConstantUnion()) { int value = callNode.getSequence()[compArg]->getAsConstantUnion()->getConstArray()[0].getIConst(); if (value < 0 || value > 3) error(loc, "must be 0, 1, 2, or 3:", feature, "component argument"); } else error(loc, "must be a compile-time constant:", feature, "component argument"); } } else { // this is only for functions not starting "textureGather"... if (fnCandidate.getName().find("Offset") != TString::npos) { // Handle texture-offset limits checking int arg = -1; if (fnCandidate.getName().compare("textureOffset") == 0) arg = 2; else if (fnCandidate.getName().compare("texelFetchOffset") == 0) arg = 3; else if (fnCandidate.getName().compare("textureProjOffset") == 0) arg = 2; else if (fnCandidate.getName().compare("textureLodOffset") == 0) arg = 3; else if (fnCandidate.getName().compare("textureProjLodOffset") == 0) arg = 3; else if (fnCandidate.getName().compare("textureGradOffset") == 0) arg = 4; else if (fnCandidate.getName().compare("textureProjGradOffset") == 0) arg = 4; if (arg > 0) { if (! callNode.getSequence()[arg]->getAsConstantUnion()) { if (!extensionTurnedOn(E_GL_EXT_texture_offset_non_const)) error(loc, "argument must be compile-time constant", "texel offset", ""); } else { const TType& type = callNode.getSequence()[arg]->getAsTyped()->getType(); for (int c = 0; c < type.getVectorSize(); ++c) { int offset = callNode.getSequence()[arg]->getAsConstantUnion()->getConstArray()[c].getIConst(); if (offset > resources.maxProgramTexelOffset || offset < resources.minProgramTexelOffset) error(loc, "value is out of range:", "texel offset", "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]"); } } } } } } // GL_ARB_shader_texture_image_samples if (fnCandidate.getName().compare(0, 14, "textureSamples") == 0 || fnCandidate.getName().compare(0, 12, "imageSamples") == 0) profileRequires(loc, ~EEsProfile, 450, E_GL_ARB_shader_texture_image_samples, "textureSamples and imageSamples"); if (fnCandidate.getName().compare(0, 11, "imageAtomic") == 0) { const TType& imageType = callNode.getSequence()[0]->getAsTyped()->getType(); if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint) { if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui) error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), ""); } else { if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") != 0) error(loc, "only supported on integer images", fnCandidate.getName().c_str(), ""); else if (imageType.getQualifier().getFormat() != ElfR32f && isEsProfile()) error(loc, "only supported on image with format r32f", fnCandidate.getName().c_str(), ""); } } } // // Do any extra checking for a user function call. // void TParseContext::userFunctionCallCheck(const TSourceLoc& loc, TIntermAggregate& callNode) { TIntermSequence& arguments = callNode.getSequence(); for (int i = 0; i < (int)arguments.size(); ++i) samplerConstructorLocationCheck(loc, "call argument", arguments[i]); } // // Emit an error if this is a sampler constructor // void TParseContext::samplerConstructorLocationCheck(const TSourceLoc& loc, const char* token, TIntermNode* node) { if (node->getAsOperator() && node->getAsOperator()->getOp() == EOpConstructTextureSampler) error(loc, "sampler constructor must appear at point of use", token, ""); } // // Handle seeing a built-in constructor in a grammar production. // TFunction* TParseContext::handleConstructorCall(const TSourceLoc& loc, const TPublicType& publicType) { TType type(publicType); type.getQualifier().precision = EpqNone; if (type.isArray()) { profileRequires(loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed constructor"); profileRequires(loc, EEsProfile, 300, nullptr, "arrayed constructor"); } // Reuse EOpConstructTextureSampler for bindless image constructor // uvec2 imgHandle; // imageLoad(image1D(imgHandle), 0); if (type.isImage() && extensionTurnedOn(E_GL_ARB_bindless_texture)) { intermediate.setBindlessImageMode(currentCaller, AstRefTypeFunc); } TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpNull) { 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); } TString empty(""); return new TFunction(&empty, type, op); } // Handle seeing a precision qualifier in the grammar. void TParseContext::handlePrecisionQualifier(const TSourceLoc& /*loc*/, TQualifier& qualifier, TPrecisionQualifier precision) { if (obeyPrecisionQualifiers()) qualifier.precision = precision; } // Check for messages to give on seeing a precision qualifier used in a // declaration in the grammar. void TParseContext::checkPrecisionQualifier(const TSourceLoc& loc, TPrecisionQualifier) { if (precisionManager.shouldWarnAboutDefaults()) { warn(loc, "all default precisions are highp; use precision statements to quiet warning, e.g.:\n" " \"precision mediump int; precision highp float;\"", "", ""); precisionManager.defaultWarningGiven(); } } // // Same error message for all places assignments don't work. // void TParseContext::assignError(const TSourceLoc& loc, const char* op, TString left, TString right) { error(loc, "", op, "cannot convert from '%s' to '%s'", right.c_str(), left.c_str()); } // // Same error message for all places unary operations don't work. // void TParseContext::unaryOpError(const TSourceLoc& loc, const char* op, TString operand) { error(loc, " wrong operand type", op, "no operation '%s' exists that takes an operand of type %s (or there is no acceptable conversion)", op, operand.c_str()); } // // Same error message for all binary operations don't work. // void TParseContext::binaryOpError(const TSourceLoc& loc, const char* op, TString left, TString right) { error(loc, " wrong operand types:", op, "no operation '%s' exists that takes a left-hand operand of type '%s' and " "a right operand of type '%s' (or there is no acceptable conversion)", op, left.c_str(), right.c_str()); } // // A basic type of EbtVoid is a key that the name string was seen in the source, but // it was not found as a variable in the symbol table. If so, give the error // message and insert a dummy variable in the symbol table to prevent future errors. // void TParseContext::variableCheck(TIntermTyped*& nodePtr) { TIntermSymbol* symbol = nodePtr->getAsSymbolNode(); if (! symbol) return; if (symbol->getType().getBasicType() == EbtVoid) { const char *extraInfoFormat = ""; if (spvVersion.vulkan != 0 && symbol->getName() == "gl_VertexID") { extraInfoFormat = "(Did you mean gl_VertexIndex?)"; } else if (spvVersion.vulkan != 0 && symbol->getName() == "gl_InstanceID") { extraInfoFormat = "(Did you mean gl_InstanceIndex?)"; } error(symbol->getLoc(), "undeclared identifier", symbol->getName().c_str(), extraInfoFormat); // Add to symbol table to prevent future error messages on the same name if (symbol->getName().size() > 0) { TVariable* fakeVariable = new TVariable(&symbol->getName(), TType(EbtFloat)); symbolTable.insert(*fakeVariable); // substitute a symbol node for this new variable nodePtr = intermediate.addSymbol(*fakeVariable, symbol->getLoc()); } } else { switch (symbol->getQualifier().storage) { case EvqPointCoord: profileRequires(symbol->getLoc(), ENoProfile, 120, nullptr, "gl_PointCoord"); break; default: break; // some compilers want this } } } // // Both test and if necessary, spit out an error, to see if the node is really // an l-value that can be operated on this way. // // Returns true if there was an error. // bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { TIntermBinary* binaryNode = node->getAsBinaryNode(); if (binaryNode) { bool errorReturn = false; switch(binaryNode->getOp()) { case EOpIndexDirect: case EOpIndexIndirect: // ... tessellation control shader ... // If a per-vertex output variable is used as an l-value, it is a // compile-time or link-time error if the expression indicating the // vertex index is not the identifier gl_InvocationID. if (language == EShLangTessControl) { const TType& leftType = binaryNode->getLeft()->getType(); if (leftType.getQualifier().storage == EvqVaryingOut && ! leftType.getQualifier().patch && binaryNode->getLeft()->getAsSymbolNode()) { // we have a per-vertex output const TIntermSymbol* rightSymbol = binaryNode->getRight()->getAsSymbolNode(); if (! rightSymbol || rightSymbol->getQualifier().builtIn != EbvInvocationId) error(loc, "tessellation-control per-vertex output l-value must be indexed with gl_InvocationID", "[]", ""); } } break; // left node is checked by base class case EOpVectorSwizzle: errorReturn = lValueErrorCheck(loc, op, binaryNode->getLeft()); if (!errorReturn) { int offset[4] = {0,0,0,0}; TIntermTyped* rightNode = binaryNode->getRight(); TIntermAggregate *aggrNode = rightNode->getAsAggregate(); for (TIntermSequence::iterator p = aggrNode->getSequence().begin(); p != aggrNode->getSequence().end(); p++) { int value = (*p)->getAsTyped()->getAsConstantUnion()->getConstArray()[0].getIConst(); offset[value]++; if (offset[value] > 1) { error(loc, " l-value of swizzle cannot have duplicate components", op, "", ""); return true; } } } return errorReturn; default: break; } if (errorReturn) { error(loc, " l-value required", op, "", ""); return true; } } if (binaryNode && binaryNode->getOp() == EOpIndexDirectStruct && binaryNode->getLeft()->isReference()) return false; // Let the base class check errors if (TParseContextBase::lValueErrorCheck(loc, op, node)) return true; const char* symbol = nullptr; TIntermSymbol* symNode = node->getAsSymbolNode(); if (symNode != nullptr) symbol = symNode->getName().c_str(); const char* message = nullptr; switch (node->getQualifier().storage) { case EvqVaryingIn: message = "can't modify shader input"; break; case EvqInstanceId: message = "can't modify gl_InstanceID"; break; case EvqVertexId: message = "can't modify gl_VertexID"; break; case EvqFace: message = "can't modify gl_FrontFace"; break; case EvqFragCoord: message = "can't modify gl_FragCoord"; break; case EvqPointCoord: message = "can't modify gl_PointCoord"; break; case EvqFragDepth: intermediate.setDepthReplacing(); // "In addition, it is an error to statically write to gl_FragDepth in the fragment shader." 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; } if (message == nullptr && binaryNode == nullptr && symNode == nullptr) { error(loc, " l-value required", op, "", ""); return true; } // // Everything else is okay, no error. // if (message == nullptr) return false; // // If we get here, we have an error and a message. // if (symNode) error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message); else error(loc, " l-value required", op, "(%s)", message); return true; } // Test for and give an error if the node can't be read from. void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { // Let the base class check errors TParseContextBase::rValueErrorCheck(loc, op, node); TIntermSymbol* symNode = node->getAsSymbolNode(); if (!(symNode && symNode->getQualifier().isWriteOnly())) // base class checks if (symNode && symNode->getQualifier().isExplicitInterpolation()) error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str()); // 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, ""); } // // Both test, and if necessary spit out an error, to see if the node is really // a constant. // void TParseContext::constantValueCheck(TIntermTyped* node, const char* token) { if (! node->getQualifier().isConstant()) error(node->getLoc(), "constant expression required", token, ""); } // // Both test, and if necessary spit out an error, to see if the node is really // a 32-bit integer or can implicitly convert to one. // void TParseContext::integerCheck(const TIntermTyped* node, const char* token) { auto from_type = node->getBasicType(); if ((from_type == EbtInt || from_type == EbtUint || intermediate.canImplicitlyPromote(from_type, EbtInt, EOpNull) || intermediate.canImplicitlyPromote(from_type, EbtUint, EOpNull)) && node->isScalar()) return; error(node->getLoc(), "scalar integer expression required", token, ""); } // // Both test, and if necessary spit out an error, to see if we are currently // globally scoped. // void TParseContext::globalCheck(const TSourceLoc& loc, const char* token) { if (! symbolTable.atGlobalLevel()) error(loc, "not allowed in nested scope", token, ""); } // // Reserved errors for GLSL. // void TParseContext::reservedErrorCheck(const TSourceLoc& loc, const TString& identifier) { // "Identifiers starting with "gl_" are reserved for use by OpenGL, and may not be // declared in a shader; this results in a compile-time error." if (! symbolTable.atBuiltInLevel()) { if (builtInName(identifier) && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) // The extension GL_EXT_spirv_intrinsics allows us to declare identifiers starting with "gl_". error(loc, "identifiers starting with \"gl_\" are reserved", identifier.c_str(), ""); // "__" are not supposed to be an error. ES 300 (and desktop) added the clarification: // "In addition, all identifiers containing two consecutive underscores (__) are // reserved; using such a name does not itself result in an error, but may result // in undefined behavior." // however, before that, ES tests required an error. if (identifier.find("__") != TString::npos && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) { // The extension GL_EXT_spirv_intrinsics allows us to declare identifiers starting with "__". if (isEsProfile() && version < 300) error(loc, "identifiers containing consecutive underscores (\"__\") are reserved, and an error if version < 300", identifier.c_str(), ""); else warn(loc, "identifiers containing consecutive underscores (\"__\") are reserved", identifier.c_str(), ""); } } } // // Reserved errors for the preprocessor. // void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* identifier, const char* op) { // "__" are not supposed to be an error. ES 300 (and desktop) added the clarification: // "All macro names containing two consecutive underscores ( __ ) are reserved; // defining such a name does not itself result in an error, but may result in // undefined behavior. All macro names prefixed with "GL_" ("GL" followed by a // single underscore) are also reserved, and defining such a name results in a // compile-time error." // however, before that, ES tests required an error. if (strncmp(identifier, "GL_", 3) == 0 && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) // The extension GL_EXT_spirv_intrinsics allows us to declare macros prefixed with "GL_". ppError(loc, "names beginning with \"GL_\" can't be (un)defined:", op, identifier); else if (strncmp(identifier, "defined", 8) == 0) if (relaxedErrors()) ppWarn(loc, "\"defined\" is (un)defined:", op, identifier); else ppError(loc, "\"defined\" can't be (un)defined:", op, identifier); else if (strstr(identifier, "__") != nullptr && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) { // The extension GL_EXT_spirv_intrinsics allows us to declare macros prefixed with "__". if (isEsProfile() && version >= 300 && (strcmp(identifier, "__LINE__") == 0 || strcmp(identifier, "__FILE__") == 0 || strcmp(identifier, "__VERSION__") == 0)) ppError(loc, "predefined names can't be (un)defined:", op, identifier); else { if (isEsProfile() && version < 300 && !relaxedErrors()) ppError(loc, "names containing consecutive underscores are reserved, and an error if version < 300:", op, identifier); else ppWarn(loc, "names containing consecutive underscores are reserved:", op, identifier); } } } // // See if this version/profile allows use of the line-continuation character '\'. // // Returns true if a line continuation should be done. // bool TParseContext::lineContinuationCheck(const TSourceLoc& loc, bool endOfComment) { const char* message = "line continuation"; bool lineContinuationAllowed = (isEsProfile() && version >= 300) || (!isEsProfile() && (version >= 420 || extensionTurnedOn(E_GL_ARB_shading_language_420pack))); if (endOfComment) { if (lineContinuationAllowed) warn(loc, "used at end of comment; the following line is still part of the comment", message, ""); else warn(loc, "used at end of comment, but this version does not provide line continuation", message, ""); return lineContinuationAllowed; } if (relaxedErrors()) { if (! lineContinuationAllowed) warn(loc, "not allowed in this version", message, ""); return true; } else { profileRequires(loc, EEsProfile, 300, nullptr, message); profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, message); } return lineContinuationAllowed; } bool TParseContext::builtInName(const TString& identifier) { return identifier.compare(0, 3, "gl_") == 0; } // // Make sure there is enough data and not too many arguments provided to the // constructor to build something of the type of the constructor. Also returns // the type of the constructor. // // Part of establishing type is establishing specialization-constness. // We don't yet know "top down" whether type is a specialization constant, // but a const constructor can becomes a specialization constant if any of // its children are, subject to KHR_vulkan_glsl rules: // // - int(), uint(), and bool() constructors for type conversions // from any of the following types to any of the following types: // * int // * uint // * bool // - vector versions of the above conversion constructors // // Returns true if there was an error in construction. // bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, TFunction& function, TOperator op, TType& type) { // See if the constructor does not establish the main type, only requalifies // it, in which case the type comes from the argument instead of from the // constructor function. switch (op) { case EOpConstructNonuniform: if (node != nullptr && node->getAsTyped() != nullptr) { type.shallowCopy(node->getAsTyped()->getType()); type.getQualifier().makeTemporary(); type.getQualifier().nonUniform = true; } break; default: type.shallowCopy(function.getType()); break; } 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) { case EOpConstructTextureSampler: return constructorTextureSamplerError(loc, function); case EOpConstructMat2x2: case EOpConstructMat2x3: case EOpConstructMat2x4: case EOpConstructMat3x2: case EOpConstructMat3x3: case EOpConstructMat3x4: case EOpConstructMat4x2: case EOpConstructMat4x3: case EOpConstructMat4x4: case EOpConstructDMat2x2: case EOpConstructDMat2x3: case EOpConstructDMat2x4: case EOpConstructDMat3x2: case EOpConstructDMat3x3: case EOpConstructDMat3x4: case EOpConstructDMat4x2: case EOpConstructDMat4x3: case EOpConstructDMat4x4: case EOpConstructF16Mat2x2: case EOpConstructF16Mat2x3: case EOpConstructF16Mat2x4: case EOpConstructF16Mat3x2: case EOpConstructF16Mat3x3: case EOpConstructF16Mat3x4: case EOpConstructF16Mat4x2: case EOpConstructF16Mat4x3: case EOpConstructF16Mat4x4: constructingMatrix = true; break; default: break; } // // Walk the arguments for first-pass checks and collection of information. // int size = 0; bool constType = true; bool specConstType = false; // value is only valid if constType is true bool full = false; bool overFull = false; bool matrixInMatrix = false; bool arrayArg = false; bool floatArgument = false; bool intArgument = false; for (int arg = 0; arg < function.getParamCount(); ++arg) { if (function[arg].type->isArray()) { if (function[arg].type->isUnsizedArray()) { // Can't construct from an unsized array. error(loc, "array argument must be sized", constructorString.c_str(), ""); return true; } arrayArg = true; } if (constructingMatrix && function[arg].type->isMatrix()) matrixInMatrix = true; // 'full' will go to true when enough args have been seen. If we loop // again, there is an extra argument. if (full) { // For vectors and matrices, it's okay to have too many components // available, but not okay to have unused arguments. overFull = true; } size += function[arg].type->computeNumComponents(); if (op != EOpConstructStruct && ! type.isArray() && size >= type.computeNumComponents()) full = true; if (! function[arg].type->getQualifier().isConstant()) constType = false; if (function[arg].type->getQualifier().isSpecConstant()) specConstType = true; if (function[arg].type->isFloatingDomain()) floatArgument = true; if (function[arg].type->isIntegerDomain()) intArgument = true; if (type.isStruct()) { if (function[arg].type->contains16BitFloat()) { requireFloat16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type"); } if (function[arg].type->contains16BitInt()) { requireInt16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type"); } if (function[arg].type->contains8BitInt()) { requireInt8Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 8-bit type"); } } } if (op == EOpConstructNonuniform) constType = false; switch (op) { case EOpConstructFloat16: case EOpConstructF16Vec2: case EOpConstructF16Vec3: case EOpConstructF16Vec4: if (type.isArray()) requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types"); break; case EOpConstructUint16: case EOpConstructU16Vec2: case EOpConstructU16Vec3: case EOpConstructU16Vec4: case EOpConstructInt16: case EOpConstructI16Vec2: case EOpConstructI16Vec3: case EOpConstructI16Vec4: if (type.isArray()) requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types"); break; case EOpConstructUint8: case EOpConstructU8Vec2: case EOpConstructU8Vec3: case EOpConstructU8Vec4: case EOpConstructInt8: case EOpConstructI8Vec2: case EOpConstructI8Vec3: case EOpConstructI8Vec4: if (type.isArray()) requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit vectors only take vector types"); break; default: break; } // inherit constness from children if (constType) { bool makeSpecConst; // Finish pinning down spec-const semantics if (specConstType) { switch (op) { case EOpConstructInt8: case EOpConstructInt: case EOpConstructUint: case EOpConstructBool: case EOpConstructBVec2: case EOpConstructBVec3: case EOpConstructBVec4: case EOpConstructIVec2: case EOpConstructIVec3: case EOpConstructIVec4: case EOpConstructUVec2: case EOpConstructUVec3: case EOpConstructUVec4: case EOpConstructUint8: case EOpConstructInt16: case EOpConstructUint16: case EOpConstructInt64: case EOpConstructUint64: case EOpConstructI8Vec2: case EOpConstructI8Vec3: case EOpConstructI8Vec4: case EOpConstructU8Vec2: case EOpConstructU8Vec3: case EOpConstructU8Vec4: case EOpConstructI16Vec2: case EOpConstructI16Vec3: case EOpConstructI16Vec4: case EOpConstructU16Vec2: case EOpConstructU16Vec3: case EOpConstructU16Vec4: case EOpConstructI64Vec2: case EOpConstructI64Vec3: case EOpConstructI64Vec4: case EOpConstructU64Vec2: case EOpConstructU64Vec3: case EOpConstructU64Vec4: // This was the list of valid ones, if they aren't converting from float // and aren't making an array. makeSpecConst = ! floatArgument && ! type.isArray(); break; case EOpConstructVec2: case EOpConstructVec3: case EOpConstructVec4: // This was the list of valid ones, if they aren't converting from int // and aren't making an array. makeSpecConst = ! intArgument && !type.isArray(); break; case EOpConstructCooperativeMatrixNV: case EOpConstructCooperativeMatrixKHR: case EOpConstructStruct: { const char *specConstantCompositeExt[] = { E_GL_EXT_spec_constant_composites }; if (checkExtensionsRequested(loc, 1, specConstantCompositeExt, "spec constant aggregate constructor")) { makeSpecConst = true; } else { makeSpecConst = false; } } break; default: // anything else wasn't white-listed in the spec as a conversion makeSpecConst = false; break; } } else makeSpecConst = false; if (makeSpecConst) type.getQualifier().makeSpecConstant(); else if (specConstType) type.getQualifier().makeTemporary(); else type.getQualifier().storage = EvqConst; } if (type.isArray()) { if (function.getParamCount() == 0) { error(loc, "array constructor must have at least one argument", constructorString.c_str(), ""); return true; } if (type.isUnsizedArray()) { // 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", constructorString.c_str(), ""); return true; } if (type.isArrayOfArrays()) { // Types have to match, but we're still making the type. // Finish making the type, and the comparison is done later // when checking for conversion. TArraySizes& arraySizes = *type.getArraySizes(); // 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", constructorString.c_str(), ""); return true; } if (arraySizes.isInnerUnsized()) { // "Arrays of arrays ..., and the size for any dimension is optional" // That means we need to adopt (from the first argument) the other array sizes into the type. for (int d = 1; d < arraySizes.getNumDims(); ++d) { if (arraySizes.getDimSize(d) == UnsizedArraySize) { arraySizes.setDimSize(d, function[0].type->getArraySizes()->getDimSize(d - 1)); } } } } } if (arrayArg && op != EOpConstructStruct && ! type.isArrayOfArrays()) { error(loc, "constructing non-array constituent from array argument", constructorString.c_str(), ""); return true; } if (matrixInMatrix && ! type.isArray()) { profileRequires(loc, ENoProfile, 120, nullptr, "constructing matrix from matrix"); // "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", constructorString.c_str(), ""); return false; } if (overFull) { 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", 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", constructorString.c_str(), ""); return true; } if (type.isCoopMat() && function.getParamCount() != 1) { 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", constructorString.c_str(), ""); return true; } TIntermTyped* typed = node->getAsTyped(); if (type.isCoopMat() && typed->getType().isCoopMat() && ((extensionTurnedOn(E_GL_NV_cooperative_matrix2) && !type.sameCoopMatShape(typed->getType())) || (!extensionTurnedOn(E_GL_NV_cooperative_matrix2) && !type.sameCoopMatShapeAndUse(typed->getType())))) { error(loc, "Cooperative matrix type parameters mismatch", constructorString.c_str(), ""); return true; } if (typed == nullptr) { error(loc, "constructor argument does not have a type", constructorString.c_str(), ""); return true; } if (op != EOpConstructStruct && op != EOpConstructNonuniform && typed->getBasicType() == EbtSampler) { if (op == EOpConstructUVec2 && extensionTurnedOn(E_GL_ARB_bindless_texture)) { intermediate.setBindlessTextureMode(currentCaller, AstRefTypeFunc); } else { error(loc, "cannot convert a sampler", constructorString.c_str(), ""); return true; } } if (op != EOpConstructStruct && typed->isAtomic()) { error(loc, "cannot convert an atomic_uint", constructorString.c_str(), ""); return true; } if (typed->getBasicType() == EbtVoid) { error(loc, "cannot convert a void", constructorString.c_str(), ""); return true; } return false; } // Verify all the correct semantics for constructing a combined texture/sampler. // Return true if the semantics are incorrect. bool TParseContext::constructorTextureSamplerError(const TSourceLoc& loc, const TFunction& function) { TString constructorName = function.getType().getBasicTypeString(); // TODO: performance: should not be making copy; interface needs to change const char* token = constructorName.c_str(); // verify the constructor for bindless texture, the input must be ivec2 or uvec2 if (function.getParamCount() == 1) { TType* pType = function[0].type; TBasicType basicType = pType->getBasicType(); bool isIntegerVec2 = ((basicType == EbtUint || basicType == EbtInt) && pType->getVectorSize() == 2); bool bindlessMode = extensionTurnedOn(E_GL_ARB_bindless_texture); if (isIntegerVec2 && bindlessMode) { if (pType->getSampler().isImage()) intermediate.setBindlessImageMode(currentCaller, AstRefTypeFunc); else intermediate.setBindlessTextureMode(currentCaller, AstRefTypeFunc); return false; } else { if (!bindlessMode) error(loc, "sampler-constructor requires the extension GL_ARB_bindless_texture enabled", token, ""); else error(loc, "sampler-constructor requires the input to be ivec2 or uvec2", token, ""); return true; } } // exactly two arguments needed if (function.getParamCount() != 2) { error(loc, "sampler-constructor requires two arguments", token, ""); return true; } // For now, not allowing arrayed constructors, the rest of this function // is set up to allow them, if this test is removed: if (function.getType().isArray()) { error(loc, "sampler-constructor cannot make an array of samplers", token, ""); return true; } // first argument // * the constructor's first argument must be a texture type // * the dimensionality (1D, 2D, 3D, Cube, Rect, Buffer, MS, and Array) // of the texture type must match that of the constructed sampler type // (that is, the suffixes of the type of the first argument and the // type of the constructor will be spelled the same way) if (function[0].type->getBasicType() != EbtSampler || ! function[0].type->getSampler().isTexture() || function[0].type->isArray()) { error(loc, "sampler-constructor first argument must be a scalar *texture* type", token, ""); return true; } // simulate the first argument's impact on the result type, so it can be compared with the encapsulated operator!=() TSampler texture = function.getType().getSampler(); texture.setCombined(false); texture.shadow = false; if (function[0].type->getSampler().isTileAttachmentQCOM()) { //TSampler& texture = const_cast(function).getWritableType().getSampler(); texture.image = true; texture.tileQCOM = true; } if (texture != function[0].type->getSampler()) { error(loc, "sampler-constructor first argument must be a *texture* type" " matching the dimensionality and sampled type of the constructor", token, ""); return true; } // second argument // * the constructor's second argument must be a scalar of type // *sampler* or *samplerShadow* if ( function[1].type->getBasicType() != EbtSampler || ! function[1].type->getSampler().isPureSampler() || function[1].type->isArray()) { error(loc, "sampler-constructor second argument must be a scalar sampler or samplerShadow", token, ""); return true; } return false; } // Checks to see if a void variable has been declared and raise an error message for such a case // // returns true in case of an error // bool TParseContext::voidErrorCheck(const TSourceLoc& loc, const TString& identifier, const TBasicType basicType) { if (basicType == EbtVoid) { error(loc, "illegal use of type 'void'", identifier.c_str(), ""); return true; } return false; } // Checks to see if the node (for the expression) contains a scalar boolean expression or not void TParseContext::boolCheck(const TSourceLoc& loc, const TIntermTyped* type) { if (type->getBasicType() != EbtBool || type->isArray() || type->isMatrix() || type->isVector()) error(loc, "boolean expression expected", "", ""); } // This function checks to see if the node (for the expression) contains a scalar boolean expression or not void TParseContext::boolCheck(const TSourceLoc& loc, const TPublicType& pType) { if (pType.basicType != EbtBool || pType.arraySizes || pType.matrixCols > 1 || (pType.vectorSize > 1)) error(loc, "boolean expression expected", "", ""); } void TParseContext::samplerCheck(const TSourceLoc& loc, const TType& type, const TString& identifier, TIntermTyped* /*initializer*/) { // Check that the appropriate extension is enabled if external sampler is used. // There are two extensions. The correct one must be used based on GLSL version. if (type.getBasicType() == EbtSampler && type.getSampler().isExternal()) { if (version < 300) { requireExtensions(loc, 1, &E_GL_OES_EGL_image_external, "samplerExternalOES"); } else { requireExtensions(loc, 1, &E_GL_OES_EGL_image_external_essl3, "samplerExternalOES"); } } if (type.getSampler().isYuv()) { requireExtensions(loc, 1, &E_GL_EXT_YUV_target, "__samplerExternal2DY2YEXT"); } if (type.getQualifier().storage == EvqUniform) return; if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtSampler)) { // For bindless texture, sampler can be declared as an struct member if (extensionTurnedOn(E_GL_ARB_bindless_texture)) { if (type.getSampler().isImage()) intermediate.setBindlessImageMode(currentCaller, AstRefTypeVar); else intermediate.setBindlessTextureMode(currentCaller, AstRefTypeVar); } else { error(loc, "non-uniform struct contains a sampler or image:", type.getBasicTypeString().c_str(), identifier.c_str()); } } else if (type.getBasicType() == EbtSampler && type.getQualifier().storage != EvqUniform) { // For bindless texture, sampler can be declared as an input/output/block member if (extensionTurnedOn(E_GL_ARB_bindless_texture)) { if (type.getSampler().isImage()) intermediate.setBindlessImageMode(currentCaller, AstRefTypeVar); else intermediate.setBindlessTextureMode(currentCaller, AstRefTypeVar); } else { // non-uniform sampler // not yet: okay if it has an initializer // if (! initializer) if (type.getSampler().isAttachmentEXT() && type.getQualifier().storage != EvqTileImageEXT) error(loc, "can only be used in tileImageEXT variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); else if (type.getQualifier().storage != EvqTileImageEXT) error(loc, "sampler/image types can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); } } else if (type.isTensorARM() && type.getQualifier().storage != EvqUniform) { error(loc, "tensorARM types can only be used in uniform variables or function parameters:", "tensorARM", identifier.c_str()); } } void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (type.getQualifier().storage == EvqUniform) return; if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtAtomicUint)) error(loc, "non-uniform struct contains an atomic_uint:", type.getBasicTypeString().c_str(), identifier.c_str()); else if (type.getBasicType() == EbtAtomicUint && type.getQualifier().storage != EvqUniform) error(loc, "atomic_uints can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); } void TParseContext::accStructCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (type.getQualifier().storage == EvqUniform) return; if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtAccStruct)) error(loc, "non-uniform struct contains an accelerationStructureNV:", type.getBasicTypeString().c_str(), identifier.c_str()); else if (type.getBasicType() == EbtAccStruct && type.getQualifier().storage != EvqUniform) error(loc, "accelerationStructureNV can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); } void TParseContext::hitObjectNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier) { if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtHitObjectNV)) { error(loc, "struct is not allowed to contain hitObjectNV:", type.getTypeName().c_str(), identifier.c_str()); } else if (type.getBasicType() == EbtHitObjectNV) { TStorageQualifier qualifier = type.getQualifier().storage; if (qualifier != EvqGlobal && qualifier != EvqTemporary) { error(loc, "hitObjectNV can only be declared in global or function scope with no storage qualifier:", "hitObjectNV", identifier.c_str()); } } } void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (parsingBuiltins) return; if (type.getQualifier().storage != EvqUniform) return; if (type.containsNonOpaque()) { // Vulkan doesn't allow transparent uniforms outside of blocks if (spvVersion.vulkan > 0 && !spvVersion.vulkanRelaxed) vulkanRemoved(loc, "non-opaque uniforms outside a block"); // OpenGL wants locations on these (unless they are getting automapped) if (spvVersion.openGl > 0 && !type.getQualifier().hasLocation() && !intermediate.getAutoMapLocations()) error(loc, "non-opaque uniform variables need a layout(location=L)", identifier.c_str(), ""); } } // // Qualifier checks knowing the qualifier and that it is a member of a struct/block. // void TParseContext::memberQualifierCheck(glslang::TPublicType& publicType) { globalQualifierFixCheck(publicType.loc, publicType.qualifier, true); checkNoShaderLayouts(publicType.loc, publicType.shaderQualifiers); if (publicType.qualifier.isNonUniform()) { error(publicType.loc, "not allowed on block or structure members", "nonuniformEXT", ""); publicType.qualifier.nonUniform = false; } if (publicType.qualifier.isPatch()) { error(publicType.loc, "not allowed on block or structure members", "patch", ""); } } // // Check/fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level. // void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier, bool isMemberCheck, const TPublicType* publicType) { bool nonuniformOkay = false; // move from parameter/unknown qualifiers to pipeline in/out qualifiers switch (qualifier.storage) { case EvqIn: profileRequires(loc, ENoProfile, 130, nullptr, "in for stage inputs"); profileRequires(loc, EEsProfile, 300, nullptr, "in for stage inputs"); qualifier.storage = EvqVaryingIn; nonuniformOkay = true; break; case EvqOut: profileRequires(loc, ENoProfile, 130, nullptr, "out for stage outputs"); profileRequires(loc, EEsProfile, 300, nullptr, "out for stage outputs"); qualifier.storage = EvqVaryingOut; if (intermediate.isInvariantAll()) qualifier.invariant = true; break; case EvqInOut: qualifier.storage = EvqVaryingIn; error(loc, "cannot use 'inout' at global scope", "", ""); break; case EvqGlobal: case EvqTemporary: nonuniformOkay = true; break; case EvqUniform: // According to GLSL spec: The std430 qualifier is supported only for shader storage blocks; a shader using // the std430 qualifier on a uniform block will fail to compile. // Only check the global declaration: layout(std430) uniform; if (blockName == nullptr && qualifier.layoutPacking == ElpStd430) { requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "default std430 layout for uniform"); } if (publicType != nullptr && publicType->isImage() && (qualifier.layoutFormat > ElfExtSizeGuard && qualifier.layoutFormat < ElfCount)) qualifier.layoutFormat = mapLegacyLayoutFormat(qualifier.layoutFormat, publicType->sampler.getBasicType()); break; default: break; } if (!nonuniformOkay && qualifier.isNonUniform()) error(loc, "for non-parameter, can only apply to 'in' or no storage qualifier", "nonuniformEXT", ""); if (qualifier.isSpirvByReference()) error(loc, "can only apply to parameter", "spirv_by_reference", ""); if (qualifier.isSpirvLiteral()) error(loc, "can only apply to parameter", "spirv_literal", ""); // Storage qualifier isn't ready for memberQualifierCheck, we should skip invariantCheck for it. if (!isMemberCheck || structNestingLevel > 0) invariantCheck(loc, qualifier); if (qualifier.isFullQuads()) { if (qualifier.storage != EvqVaryingIn) error(loc, "can only apply to input layout", "full_quads ", ""); intermediate.setReqFullQuadsMode(); } if (qualifier.isQuadDeriv()) { if (qualifier.storage != EvqVaryingIn) error(loc, "can only apply to input layout", "quad_derivatives", ""); intermediate.setQuadDerivMode(); } } // // Check a full qualifier and type (no variable yet) at global level. // void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQualifier& qualifier, const TPublicType& publicType) { if (! symbolTable.atGlobalLevel()) return; if (!(publicType.userDef && publicType.userDef->isReference()) && !publicType.isTensorARM() && !parsingBuiltins) { if (qualifier.isMemoryQualifierImageAndSSBOOnly() && ! publicType.isImage() && publicType.qualifier.storage != EvqBuffer) { error(loc, "memory qualifiers cannot be used on this type", "", ""); } else if (qualifier.isMemory() && (publicType.basicType != EbtSampler) && !publicType.qualifier.isUniformOrBuffer()) { error(loc, "memory qualifiers cannot be used on this type", "", ""); } } if (qualifier.storage == EvqBuffer && publicType.basicType != EbtBlock && !qualifier.hasBufferReference()) error(loc, "buffers can be declared only as blocks", "buffer", ""); if (qualifier.storage != EvqVaryingIn && publicType.basicType == EbtDouble && extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit) && language == EShLangVertex && version < 400) { profileRequires(loc, ECoreProfile | ECompatibilityProfile, 410, E_GL_ARB_gpu_shader_fp64, "vertex-shader `double` type"); } if (qualifier.storage != EvqVaryingIn && qualifier.storage != EvqVaryingOut) return; if (publicType.shaderQualifiers.hasBlendEquation()) error(loc, "can only be applied to a standalone 'out'", "blend equation", ""); // now, knowing it is a shader in/out, do all the in/out semantic checks if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble) { profileRequires(loc, EEsProfile, 300, nullptr, "non-float shader input/output"); profileRequires(loc, ~EEsProfile, 130, nullptr, "non-float shader input/output"); } if (!qualifier.flat && !qualifier.isExplicitInterpolation() && !qualifier.isPervertexNV() && !qualifier.isPervertexEXT()) { if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble || (publicType.userDef && ( publicType.userDef->containsBasicType(EbtInt) || publicType.userDef->containsBasicType(EbtUint) || publicType.userDef->contains16BitInt() || publicType.userDef->contains8BitInt() || publicType.userDef->contains64BitInt() || publicType.userDef->containsDouble()))) { if (qualifier.storage == EvqVaryingIn && language == EShLangFragment) error(loc, "must be qualified as flat", TType::getBasicString(publicType.basicType), GetStorageQualifierString(qualifier.storage)); else if (qualifier.storage == EvqVaryingOut && language == EShLangVertex && version == 300) error(loc, "must be qualified as flat", TType::getBasicString(publicType.basicType), GetStorageQualifierString(qualifier.storage)); } } if (qualifier.isPatch() && qualifier.isInterpolation()) error(loc, "cannot use interpolation qualifiers with patch", "patch", ""); // Only "patch in" is supported via GL_NV_gpu_shader5 if (! symbolTable.atBuiltInLevel() && qualifier.isPatch() && (language == EShLangGeometry) && qualifier.storage != EvqVaryingIn && extensionTurnedOn(E_GL_NV_gpu_shader5)) error(loc, "only 'patch in' is supported in this stage:", "patch", "geometry"); 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", ""); if (qualifier.storage == EvqVaryingIn) { switch (language) { case EShLangVertex: if (publicType.basicType == EbtStruct) { error(loc, "cannot be a structure", GetStorageQualifierString(qualifier.storage), ""); return; } if (publicType.arraySizes) { requireProfile(loc, ~EEsProfile, "vertex input arrays"); profileRequires(loc, ENoProfile, 150, nullptr, "vertex input arrays"); } if (publicType.basicType == EbtDouble) { const char* const float64_attrib[] = {E_GL_NV_gpu_shader5, E_GL_ARB_vertex_attrib_64bit}; const int Num_float64_attrib = sizeof(float64_attrib) / sizeof(float64_attrib[0]); profileRequires(loc, ~EEsProfile, 410, Num_float64_attrib, float64_attrib, "vertex-shader `double` type input"); } if (qualifier.isAuxiliary() || qualifier.isInterpolation() || qualifier.isMemory() || qualifier.invariant) error(loc, "vertex input cannot be further qualified", "", ""); break; case EShLangFragment: if (publicType.userDef) { profileRequires(loc, EEsProfile, 300, nullptr, "fragment-shader struct input"); profileRequires(loc, ~EEsProfile, 150, nullptr, "fragment-shader struct input"); if (publicType.userDef->containsStructure()) requireProfile(loc, ~EEsProfile, "fragment-shader struct input containing structure"); if (publicType.userDef->containsArray()) requireProfile(loc, ~EEsProfile, "fragment-shader struct input containing an array"); } break; case EShLangCompute: if (! symbolTable.atBuiltInLevel()) error(loc, "global storage input qualifier cannot be used in a compute shader", "in", ""); break; case EShLangTessControl: if (qualifier.patch) error(loc, "can only use on output in tessellation-control shader", "patch", ""); break; default: break; } } else { // qualifier.storage == EvqVaryingOut switch (language) { case EShLangVertex: if (publicType.userDef) { profileRequires(loc, EEsProfile, 300, nullptr, "vertex-shader struct output"); profileRequires(loc, ~EEsProfile, 150, nullptr, "vertex-shader struct output"); if (publicType.userDef->containsStructure()) requireProfile(loc, ~EEsProfile, "vertex-shader struct output containing structure"); if (publicType.userDef->containsArray()) requireProfile(loc, ~EEsProfile, "vertex-shader struct output containing an array"); } break; case EShLangFragment: profileRequires(loc, EEsProfile, 300, nullptr, "fragment shader output"); if (publicType.basicType == EbtStruct) { error(loc, "cannot be a structure", GetStorageQualifierString(qualifier.storage), ""); return; } if (publicType.matrixRows > 0) { error(loc, "cannot be a matrix", GetStorageQualifierString(qualifier.storage), ""); return; } if (qualifier.isAuxiliary()) error(loc, "can't use auxiliary qualifier on a fragment output", "centroid/sample/patch", ""); if (qualifier.isInterpolation()) error(loc, "can't use interpolation qualifier on a fragment output", "flat/smooth/noperspective", ""); if (publicType.basicType == EbtDouble || publicType.basicType == EbtInt64 || publicType.basicType == EbtUint64) error(loc, "cannot contain a double, int64, or uint64", GetStorageQualifierString(qualifier.storage), ""); break; case EShLangCompute: error(loc, "global storage output qualifier cannot be used in a compute shader", "out", ""); break; case EShLangTessEvaluation: if (qualifier.patch) error(loc, "can only use on input in tessellation-evaluation shader", "patch", ""); break; default: break; } } } // // Merge characteristics of the 'src' qualifier into the 'dst'. // If there is duplication, issue error messages, unless 'force' // is specified, which means to just override default settings. // // Also, when force is false, it will be assumed that 'src' follows // 'dst', for the purpose of error checking order for versions // that require specific orderings of qualifiers. // void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, const TQualifier& src, bool force) { // Multiple auxiliary qualifiers (mostly done later by 'individual qualifiers') if (src.isAuxiliary() && dst.isAuxiliary()) error(loc, "can only have one auxiliary qualifier (centroid, patch, and sample)", "", ""); // Multiple interpolation qualifiers (mostly done later by 'individual qualifiers') if (src.isInterpolation() && dst.isInterpolation()) error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD)", "", ""); // Ordering if (! force && ((!isEsProfile() && version < 420) || (isEsProfile() && version < 310)) && ! extensionTurnedOn(E_GL_ARB_shading_language_420pack)) { // non-function parameters if (src.isNoContraction() && (dst.invariant || dst.isInterpolation() || dst.isAuxiliary() || dst.storage != EvqTemporary || dst.precision != EpqNone)) error(loc, "precise qualifier must appear first", "", ""); if (src.invariant && (dst.isInterpolation() || dst.isAuxiliary() || dst.storage != EvqTemporary || dst.precision != EpqNone)) error(loc, "invariant qualifier must appear before interpolation, storage, and precision qualifiers ", "", ""); else if (src.isInterpolation() && (dst.isAuxiliary() || dst.storage != EvqTemporary || dst.precision != EpqNone)) error(loc, "interpolation qualifiers must appear before storage and precision qualifiers", "", ""); else if (src.isAuxiliary() && (dst.storage != EvqTemporary || dst.precision != EpqNone)) error(loc, "Auxiliary qualifiers (centroid, patch, and sample) must appear before storage and precision qualifiers", "", ""); else if (src.storage != EvqTemporary && (dst.precision != EpqNone)) error(loc, "precision qualifier must appear as last qualifier", "", ""); // function parameters if (src.isNoContraction() && (dst.storage == EvqConst || dst.storage == EvqIn || dst.storage == EvqOut)) error(loc, "precise qualifier must appear first", "", ""); if (src.storage == EvqConst && (dst.storage == EvqIn || dst.storage == EvqOut)) error(loc, "in/out must appear before const", "", ""); } // Storage qualification if (dst.storage == EvqTemporary || dst.storage == EvqGlobal) dst.storage = src.storage; else if ((dst.storage == EvqIn && src.storage == EvqOut) || (dst.storage == EvqOut && src.storage == EvqIn)) dst.storage = EvqInOut; else if ((dst.storage == EvqIn && src.storage == EvqConst) || (dst.storage == EvqConst && src.storage == EvqIn)) dst.storage = EvqConstReadOnly; else if (src.storage != EvqTemporary && src.storage != EvqGlobal) error(loc, "too many storage qualifiers", GetStorageQualifierString(src.storage), ""); // Precision qualifiers if (! force && src.precision != EpqNone && dst.precision != EpqNone) error(loc, "only one precision qualifier allowed", GetPrecisionQualifierString(src.precision), ""); if (dst.precision == EpqNone || (force && src.precision != EpqNone)) dst.precision = src.precision; if (!force && ((src.coherent && (dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || (src.devicecoherent && (dst.coherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || (src.queuefamilycoherent && (dst.coherent || dst.devicecoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || (src.workgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || (src.subgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.shadercallcoherent)) || (src.shadercallcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)))) { error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed", GetPrecisionQualifierString(src.precision), ""); } // Layout qualifiers mergeObjectLayoutQualifiers(dst, src, false); // individual qualifiers bool repeated = false; #define MERGE_SINGLETON(field) repeated |= dst.field && src.field; dst.field |= src.field; MERGE_SINGLETON(invariant); MERGE_SINGLETON(centroid); MERGE_SINGLETON(smooth); MERGE_SINGLETON(flat); MERGE_SINGLETON(specConstant); MERGE_SINGLETON(noContraction); MERGE_SINGLETON(nopersp); MERGE_SINGLETON(explicitInterp); MERGE_SINGLETON(perPrimitiveNV); MERGE_SINGLETON(perViewNV); MERGE_SINGLETON(perTaskNV); MERGE_SINGLETON(patch); MERGE_SINGLETON(sample); MERGE_SINGLETON(coherent); MERGE_SINGLETON(devicecoherent); MERGE_SINGLETON(queuefamilycoherent); MERGE_SINGLETON(workgroupcoherent); MERGE_SINGLETON(subgroupcoherent); MERGE_SINGLETON(shadercallcoherent); MERGE_SINGLETON(nonprivate); MERGE_SINGLETON(volatil); MERGE_SINGLETON(nontemporal); MERGE_SINGLETON(restrict); MERGE_SINGLETON(readonly); MERGE_SINGLETON(writeonly); MERGE_SINGLETON(nonUniform); // SPIR-V storage class qualifier (GL_EXT_spirv_intrinsics) dst.spirvStorageClass = src.spirvStorageClass; // SPIR-V decorate qualifiers (GL_EXT_spirv_intrinsics) if (src.hasSpirvDecorate()) { if (dst.hasSpirvDecorate()) { const TSpirvDecorate& srcSpirvDecorate = src.getSpirvDecorate(); TSpirvDecorate& dstSpirvDecorate = dst.getSpirvDecorate(); for (auto& decorate : srcSpirvDecorate.decorates) { if (dstSpirvDecorate.decorates.find(decorate.first) != dstSpirvDecorate.decorates.end()) error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate", "(decoration=%u)", decorate.first); else dstSpirvDecorate.decorates.insert(decorate); } for (auto& decorateId : srcSpirvDecorate.decorateIds) { if (dstSpirvDecorate.decorateIds.find(decorateId.first) != dstSpirvDecorate.decorateIds.end()) error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate_id", "(decoration=%u)", decorateId.first); else dstSpirvDecorate.decorateIds.insert(decorateId); } for (auto& decorateString : srcSpirvDecorate.decorateStrings) { if (dstSpirvDecorate.decorates.find(decorateString.first) != dstSpirvDecorate.decorates.end()) error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate_string", "(decoration=%u)", decorateString.first); else dstSpirvDecorate.decorateStrings.insert(decorateString); } } else { dst.spirvDecorate = src.spirvDecorate; } } if (repeated) error(loc, "replicated qualifiers", "", ""); } void TParseContext::setDefaultPrecision(const TSourceLoc& loc, TPublicType& publicType, TPrecisionQualifier qualifier) { TBasicType basicType = publicType.basicType; if (basicType == EbtSampler) { defaultSamplerPrecision[computeSamplerTypeIndex(publicType.sampler)] = qualifier; return; // all is well } if (basicType == EbtInt || basicType == EbtFloat) { if (publicType.isScalar()) { defaultPrecision[basicType] = qualifier; if (basicType == EbtInt) { defaultPrecision[EbtUint] = qualifier; precisionManager.explicitIntDefaultSeen(); } else precisionManager.explicitFloatDefaultSeen(); return; // all is well } } if (basicType == EbtAtomicUint) { if (qualifier != EpqHigh) error(loc, "can only apply highp to atomic_uint", "precision", ""); return; } error(loc, "cannot apply precision statement to this type; use 'float', 'int' or a sampler type", TType::getBasicString(basicType), ""); } // used to flatten the sampler type space into a single dimension // correlates with the declaration of defaultSamplerPrecision[] int TParseContext::computeSamplerTypeIndex(TSampler& sampler) { int arrayIndex = sampler.arrayed ? 1 : 0; int shadowIndex = sampler.shadow ? 1 : 0; int externalIndex = sampler.isExternal() ? 1 : 0; int imageIndex = sampler.isImageClass() ? 1 : 0; int msIndex = sampler.isMultiSample() ? 1 : 0; int flattened = EsdNumDims * (EbtNumTypes * (2 * (2 * (2 * (2 * arrayIndex + msIndex) + imageIndex) + shadowIndex) + externalIndex) + sampler.type) + sampler.dim; assert(flattened < maxSamplerIndex); return flattened; } TPrecisionQualifier TParseContext::getDefaultPrecision(TPublicType& publicType) { if (publicType.basicType == EbtSampler) return defaultSamplerPrecision[computeSamplerTypeIndex(publicType.sampler)]; else return defaultPrecision[publicType.basicType]; } void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType baseType, TQualifier& qualifier, bool hasTypeParameter) { // Built-in symbols are allowed some ambiguous precisions, to be pinned down // later by context. if (! obeyPrecisionQualifiers() || parsingBuiltins) return; if (baseType == EbtAtomicUint && qualifier.precision != EpqNone && qualifier.precision != EpqHigh) error(loc, "atomic counters can only be highp", "atomic_uint", ""); if (hasTypeParameter) return; if (baseType == EbtFloat || baseType == EbtUint || baseType == EbtInt || baseType == EbtSampler || baseType == EbtAtomicUint) { if (qualifier.precision == EpqNone) { if (relaxedErrors()) warn(loc, "type requires declaration of default precision qualifier", TType::getBasicString(baseType), "substituting 'mediump'"); else error(loc, "type requires declaration of default precision qualifier", TType::getBasicString(baseType), ""); qualifier.precision = EpqMedium; defaultPrecision[baseType] = EpqMedium; } } else if (qualifier.precision != EpqNone) error(loc, "type cannot have precision qualifier", TType::getBasicString(baseType), ""); } void TParseContext::parameterTypeCheck(const TSourceLoc& loc, TStorageQualifier qualifier, const TType& type) { if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque() && !intermediate.getBindlessMode()) error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), ""); if (!parsingBuiltins && type.contains16BitFloat()) requireFloat16Arithmetic(loc, type.getBasicTypeString().c_str(), "float16 types can only be in uniform block or buffer storage"); if (!parsingBuiltins && type.contains16BitInt()) requireInt16Arithmetic(loc, type.getBasicTypeString().c_str(), "(u)int16 types can only be in uniform block or buffer storage"); if (!parsingBuiltins && type.contains8BitInt()) requireInt8Arithmetic(loc, type.getBasicTypeString().c_str(), "(u)int8 types can only be in uniform block or buffer storage"); } bool TParseContext::containsFieldWithBasicType(const TType& type, TBasicType basicType) { if (type.getBasicType() == basicType) return true; if (type.getBasicType() == EbtStruct) { const TTypeList& structure = *type.getStruct(); for (unsigned int i = 0; i < structure.size(); ++i) { if (containsFieldWithBasicType(*structure[i].type, basicType)) return true; } } return false; } // // Do size checking for an array type's size. // void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TArraySize& sizePair, const char* sizeType, const bool isTypeParameter) { bool isConst = false; sizePair.node = nullptr; int size = 1; TIntermConstantUnion* constant = expr->getAsConstantUnion(); if (constant) { // handle true (non-specialization) constant size = constant->getConstArray()[0].getIConst(); isConst = true; } else { // see if it's a specialization constant instead if (expr->getQualifier().isSpecConstant()) { isConst = true; sizePair.node = expr; TIntermSymbol* symbol = expr->getAsSymbolNode(); if (symbol && symbol->getConstArray().size() > 0) size = symbol->getConstArray()[0].getIConst(); } else if (expr->getAsUnaryNode() && expr->getAsUnaryNode()->getOp() == glslang::EOpArrayLength && expr->getAsUnaryNode()->getOperand()->getType().isCoopMatNV()) { isConst = true; size = 1; sizePair.node = expr->getAsUnaryNode(); } } sizePair.size = size; if (isTypeParameter) { if (extensionTurnedOn(E_GL_NV_cooperative_matrix2)) { if (! isConst || (expr->getBasicType() != EbtInt && expr->getBasicType() != EbtUint && expr->getBasicType() != EbtBool)) { error(loc, sizeType, "", "must be a constant integer or boolean expression"); return; } } else { if (! isConst || (expr->getBasicType() != EbtInt && expr->getBasicType() != EbtUint)) { error(loc, sizeType, "", "must be a constant integer expression"); return; } } if (size < 0) { error(loc, sizeType, "", "must be a non-negative integer"); return; } } else { if (! isConst || (expr->getBasicType() != EbtInt && expr->getBasicType() != EbtUint)) { error(loc, sizeType, "", "must be a constant integer expression"); return; } if (size <= 0) { error(loc, sizeType, "", "must be a positive integer"); return; } } } // // See if this qualifier can be an array. // // Returns true if there is an error. // bool TParseContext::arrayQualifierError(const TSourceLoc& loc, const TQualifier& qualifier) { if (qualifier.storage == EvqConst) { profileRequires(loc, ENoProfile, 120, E_GL_3DL_array_objects, "const array"); profileRequires(loc, EEsProfile, 300, nullptr, "const array"); } if (qualifier.storage == EvqVaryingIn && language == EShLangVertex) { requireProfile(loc, ~EEsProfile, "vertex input arrays"); profileRequires(loc, ENoProfile, 150, nullptr, "vertex input arrays"); } return false; } // // See if this qualifier and type combination can be an array. // Assumes arrayQualifierError() was also called to catch the type-invariant tests. // // Returns true if there is an error. // bool TParseContext::arrayError(const TSourceLoc& loc, const TType& type) { if (type.getQualifier().storage == EvqVaryingOut && language == EShLangVertex) { if (type.isArrayOfArrays()) requireProfile(loc, ~EEsProfile, "vertex-shader array-of-array output"); else if (type.isStruct()) requireProfile(loc, ~EEsProfile, "vertex-shader array-of-struct output"); } if (type.getQualifier().storage == EvqVaryingIn && language == EShLangFragment) { if (type.isArrayOfArrays()) requireProfile(loc, ~EEsProfile, "fragment-shader array-of-array input"); else if (type.isStruct()) requireProfile(loc, ~EEsProfile, "fragment-shader array-of-struct input"); } if (type.getQualifier().storage == EvqVaryingOut && language == EShLangFragment) { if (type.isArrayOfArrays()) requireProfile(loc, ~EEsProfile, "fragment-shader array-of-array output"); } return false; } // // Require array to be completely sized // void TParseContext::arraySizeRequiredCheck(const TSourceLoc& loc, const TArraySizes& arraySizes) { if (!parsingBuiltins && arraySizes.hasUnsized()) error(loc, "array size required", "", ""); } void TParseContext::structArrayCheck(const TSourceLoc& /*loc*/, const TType& type) { const TTypeList& structure = *type.getStruct(); for (int m = 0; m < (int)structure.size(); ++m) { const TType& member = *structure[m].type; if (member.isArray()) arraySizeRequiredCheck(structure[m].loc, *member.getArraySizes()); } } void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qualifier, TArraySizes* arraySizes, const TIntermTyped* initializer, bool lastMember) { assert(arraySizes); // always allow special built-in ins/outs sized to topologies if (parsingBuiltins) return; // initializer must be a sized array, in which case // allow the initializer to set any unknown array sizes if (initializer != nullptr) { if (initializer->getType().isUnsizedArray()) error(loc, "array initializer must be sized", "[]", ""); return; } // No environment allows any non-outer-dimension to be implicitly sized if (arraySizes->isInnerUnsized()) { error(loc, "only outermost dimension of an array of arrays can be implicitly sized", "[]", ""); arraySizes->clearInnerUnsized(); } if (arraySizes->isInnerSpecialization() && (qualifier.storage != EvqTemporary && qualifier.storage != EvqGlobal && qualifier.storage != EvqShared && qualifier.storage != EvqConst)) error(loc, "only outermost dimension of an array of arrays can be a specialization constant", "[]", ""); // desktop always allows outer-dimension-unsized variable arrays, if (!isEsProfile()) return; // for ES, if size isn't coming from an initializer, it has to be explicitly declared now, // with very few exceptions // implicitly-sized io exceptions: switch (language) { case EShLangGeometry: if (qualifier.storage == EvqVaryingIn) if ((isEsProfile() && version >= 320) || extensionsTurnedOn(Num_AEP_geometry_shader, AEP_geometry_shader)) return; break; case EShLangTessControl: if ( qualifier.storage == EvqVaryingIn || (qualifier.storage == EvqVaryingOut && ! qualifier.isPatch())) if ((isEsProfile() && version >= 320) || extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) return; break; case EShLangTessEvaluation: if ((qualifier.storage == EvqVaryingIn && ! qualifier.isPatch()) || qualifier.storage == EvqVaryingOut) if ((isEsProfile() && version >= 320) || extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) return; break; case EShLangMesh: if (qualifier.storage == EvqVaryingOut) if ((isEsProfile() && version >= 320) || extensionsTurnedOn(Num_AEP_mesh_shader, AEP_mesh_shader)) return; break; default: break; } // last member of ssbo block exception: if (qualifier.storage == EvqBuffer && lastMember) return; arraySizeRequiredCheck(loc, *arraySizes); } void TParseContext::arrayOfArrayVersionCheck(const TSourceLoc& loc, const TArraySizes* sizes) { if (sizes == nullptr || sizes->getNumDims() == 1) return; const char* feature = "arrays of arrays"; requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, feature); profileRequires(loc, EEsProfile, 310, nullptr, feature); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, nullptr, feature); } // // Do all the semantic checking for declaring or redeclaring an array, with and // without a size, and make the right changes to the symbol table. // void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifier, const TType& type, TSymbol*& symbol) { if (symbol == nullptr) { bool currentScope; symbol = symbolTable.find(identifier, nullptr, ¤tScope); if (symbol && builtInName(identifier) && ! symbolTable.atBuiltInLevel()) { // bad shader (errors already reported) trying to redeclare a built-in name as an array symbol = nullptr; return; } if (symbol == nullptr || ! currentScope) { // // Successfully process a new definition. // (Redeclarations have to take place at the same scope; otherwise they are hiding declarations) // symbol = new TVariable(&identifier, type); symbolTable.insert(*symbol); if (symbolTable.atGlobalLevel()) trackLinkage(*symbol); if (! symbolTable.atBuiltInLevel()) { if (isIoResizeArray(type)) { ioArraySymbolResizeList.push_back(symbol); checkIoArraysConsistency(loc, true); } else fixIoArraySize(loc, symbol->getWritableType()); } return; } if (symbol->getAsAnonMember()) { error(loc, "cannot redeclare a user-block member array", identifier.c_str(), ""); symbol = nullptr; return; } } // // Process a redeclaration. // if (symbol == nullptr) { error(loc, "array variable name expected", identifier.c_str(), ""); return; } // redeclareBuiltinVariable() should have already done the copyUp() TType& existingType = symbol->getWritableType(); if (! existingType.isArray()) { error(loc, "redeclaring non-array as array", identifier.c_str(), ""); return; } if (! existingType.sameElementType(type)) { error(loc, "redeclaration of array with a different element type", identifier.c_str(), ""); return; } if (! existingType.sameInnerArrayness(type)) { error(loc, "redeclaration of array with a different array dimensions or sizes", identifier.c_str(), ""); return; } if (existingType.isSizedArray()) { // be more leniant for input arrays to geometry shaders and tessellation control outputs, where the redeclaration is the same size if (! (isIoResizeArray(type) && existingType.getOuterArraySize() == type.getOuterArraySize())) error(loc, "redeclaration of array with size", identifier.c_str(), ""); return; } arrayLimitCheck(loc, identifier, type.getOuterArraySize()); existingType.updateArraySizes(type); if (isIoResizeArray(type)) checkIoArraysConsistency(loc); } // Policy and error check for needing a runtime sized array. void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermTyped& base) { // runtime length implies runtime sizeable, so no problem if (isRuntimeLength(base)) return; if (base.getType().getQualifier().builtIn == EbvSampleMask) return; // Check for last member of a bufferreference type, which is runtime sizeable // but doesn't support runtime length if (base.getType().getQualifier().storage == EvqBuffer) { const TIntermBinary* binary = base.getAsBinaryNode(); if (binary != nullptr && binary->getOp() == EOpIndexDirectStruct && binary->getLeft()->isReference()) { const int index = binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); const int memberCount = (int)binary->getLeft()->getType().getReferentType()->getStruct()->size(); if (index == memberCount - 1) return; } } // check for additional things allowed by GL_EXT_nonuniform_qualifier if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStruct || base.getBasicType() == EbtRayQuery || base.getBasicType() == EbtHitObjectNV || (base.getBasicType() == EbtBlock && base.getType().getQualifier().isUniformOrBuffer())) requireExtensions(loc, 1, &E_GL_EXT_nonuniform_qualifier, "variable index"); else error(loc, "", "[", "array must be redeclared with a size before being indexed with a variable"); } // Policy decision for whether a run-time .length() is allowed. bool TParseContext::isRuntimeLength(const TIntermTyped& base) const { if (base.getType().getQualifier().storage == EvqBuffer) { // in a buffer block const TIntermBinary* binary = base.getAsBinaryNode(); if (binary != nullptr && binary->getOp() == EOpIndexDirectStruct) { // is it the last member? const int index = binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); if (binary->getLeft()->isReference()) return false; const int memberCount = (int)binary->getLeft()->getType().getStruct()->size(); if (index == memberCount - 1) return true; } } return false; } // Check if mesh perviewNV attributes have a view dimension // and resize it to gl_MaxMeshViewCountNV when implicitly sized. void TParseContext::checkAndResizeMeshViewDim(const TSourceLoc& loc, TType& type, bool isBlockMember) { // see if member is a per-view attribute if (!type.getQualifier().isPerView()) return; if ((isBlockMember && type.isArray()) || (!isBlockMember && type.isArrayOfArrays())) { // since we don't have the maxMeshViewCountNV set during parsing builtins, we hardcode the value. int maxViewCount = parsingBuiltins ? 4 : resources.maxMeshViewCountNV; // For block members, outermost array dimension is the view dimension. // For non-block members, outermost array dimension is the vertex/primitive dimension // and 2nd outermost is the view dimension. int viewDim = isBlockMember ? 0 : 1; int viewDimSize = type.getArraySizes()->getDimSize(viewDim); if (viewDimSize != UnsizedArraySize && viewDimSize != maxViewCount) error(loc, "mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized", "[]", ""); else if (viewDimSize == UnsizedArraySize) type.getArraySizes()->setDimSize(viewDim, maxViewCount); } else { error(loc, "requires a view array dimension", "perviewNV", ""); } } // Returns true if the first argument to the #line directive is the line number for the next line. // // Desktop, pre-version 3.30: "After processing this directive // (including its new-line), the implementation will behave as if it is compiling at line number line+1 and // source string number source-string-number." // // Desktop, version 3.30 and later, and ES: "After processing this directive // (including its new-line), the implementation will behave as if it is compiling at line number line and // source string number source-string-number. bool TParseContext::lineDirectiveShouldSetNextLine() const { return isEsProfile() || version >= 330; } // // Enforce non-initializer type/qualifier rules. // void TParseContext::nonInitConstCheck(const TSourceLoc& loc, TString& identifier, TType& type) { // // Make the qualifier make sense, given that there is not an initializer. // if (type.getQualifier().storage == EvqConst || type.getQualifier().storage == EvqConstReadOnly) { type.getQualifier().makeTemporary(); error(loc, "variables with qualifier 'const' must be initialized", identifier.c_str(), ""); } } // // See if the identifier is a built-in symbol that can be redeclared, and if so, // copy the symbol table's read-only built-in variable to the current // global level, where it can be modified based on the passed in type. // // Returns nullptr if no redeclaration took place; meaning a normal declaration still // needs to occur for it, not necessarily an error. // // Returns a redeclared and type-modified variable if a redeclarated occurred. // TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TString& identifier, const TQualifier& qualifier, const TShaderQualifiers& publicType) { if (! builtInName(identifier) || symbolTable.atBuiltInLevel() || ! symbolTable.atGlobalLevel()) return nullptr; bool nonEsRedecls = (!isEsProfile() && (version >= 130 || identifier == "gl_TexCoord")); bool esRedecls = (isEsProfile() && (version >= 320 || extensionsTurnedOn(Num_AEP_shader_io_blocks, AEP_shader_io_blocks))); if (! esRedecls && ! nonEsRedecls) return nullptr; // Special case when using GL_ARB_separate_shader_objects bool ssoPre150 = false; // means the only reason this variable is redeclared is due to this combination if (!isEsProfile() && version <= 140 && extensionTurnedOn(E_GL_ARB_separate_shader_objects)) { if (identifier == "gl_Position" || identifier == "gl_PointSize" || identifier == "gl_ClipVertex" || identifier == "gl_FogFragCoord") ssoPre150 = true; } // Potentially redeclaring a built-in variable... if (ssoPre150 || (identifier == "gl_FragDepth" && ((nonEsRedecls && version >= 420) || esRedecls)) || (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 140) || esRedecls)) || identifier == "gl_ClipDistance" || identifier == "gl_CullDistance" || identifier == "gl_ShadingRateEXT" || identifier == "gl_PrimitiveShadingRateEXT" || identifier == "gl_FrontColor" || identifier == "gl_BackColor" || identifier == "gl_FrontSecondaryColor" || identifier == "gl_BackSecondaryColor" || identifier == "gl_SecondaryColor" || (identifier == "gl_Color" && language == EShLangFragment) || (identifier == "gl_FragStencilRefARB" && (nonEsRedecls && version >= 140) && language == EShLangFragment) || 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. bool builtIn; TSymbol* symbol = symbolTable.find(identifier, &builtIn); // If the symbol was not found, this must be a version/profile/stage // that doesn't have it. if (! symbol) return nullptr; // If it wasn't at a built-in level, then it's already been redeclared; // that is, this is a redeclaration of a redeclaration; reuse that initial // redeclaration. Otherwise, make the new one. if (builtIn) { makeEditable(symbol); symbolTable.amendSymbolIdLevel(*symbol); } // Now, modify the type of the copy, as per the type of the current redeclaration. TQualifier& symbolQualifier = symbol->getWritableType().getQualifier(); if (ssoPre150) { if (intermediate.inIoAccessed(identifier)) error(loc, "cannot redeclare after use", identifier.c_str(), ""); if (qualifier.hasLayout()) error(loc, "cannot apply layout qualifier to", "redeclaration", symbol->getName().c_str()); if (qualifier.isMemory() || qualifier.isAuxiliary() || (language == EShLangVertex && qualifier.storage != EvqVaryingOut) || (language == EShLangFragment && qualifier.storage != EvqVaryingIn)) error(loc, "cannot change storage, memory, or auxiliary qualification of", "redeclaration", symbol->getName().c_str()); if (! qualifier.smooth) error(loc, "cannot change interpolation qualification of", "redeclaration", symbol->getName().c_str()); } else if (identifier == "gl_FrontColor" || identifier == "gl_BackColor" || identifier == "gl_FrontSecondaryColor" || identifier == "gl_BackSecondaryColor" || identifier == "gl_SecondaryColor" || identifier == "gl_Color") { symbolQualifier.flat = qualifier.flat; symbolQualifier.smooth = qualifier.smooth; symbolQualifier.nopersp = qualifier.nopersp; if (qualifier.hasLayout()) error(loc, "cannot apply layout qualifier to", "redeclaration", symbol->getName().c_str()); if (qualifier.isMemory() || qualifier.isAuxiliary() || symbol->getType().getQualifier().storage != qualifier.storage) error(loc, "cannot change storage, memory, or auxiliary qualification of", "redeclaration", symbol->getName().c_str()); } else if (identifier == "gl_TexCoord" || identifier == "gl_ClipDistance" || identifier == "gl_CullDistance") { if (qualifier.hasLayout() || qualifier.isMemory() || qualifier.isAuxiliary() || qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat || symbolQualifier.storage != qualifier.storage) error(loc, "cannot change qualification of", "redeclaration", symbol->getName().c_str()); } else if (identifier == "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()) error(loc, "can only change layout qualification of", "redeclaration", symbol->getName().c_str()); if (qualifier.storage != EvqVaryingIn) error(loc, "cannot change input storage qualification of", "redeclaration", symbol->getName().c_str()); 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) intermediate.setOriginUpperLeft(); } else if (identifier == "gl_FragDepth") { 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.layoutDepth != EldNone) { if (intermediate.inIoAccessed("gl_FragDepth")) error(loc, "cannot redeclare after use", "gl_FragDepth", ""); 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") { if (qualifier.hasLayout()) error(loc, "cannot apply layout qualifier to", "redeclaration", symbol->getName().c_str()); if (qualifier.storage != EvqVaryingOut) error(loc, "cannot change output storage qualification of", "redeclaration", symbol->getName().c_str()); } else if (identifier == "gl_SampleMask") { if (!publicType.layoutOverrideCoverage) { error(loc, "redeclaration only allowed for override_coverage layout", "redeclaration", symbol->getName().c_str()); } intermediate.setLayoutOverrideCoverage(); } else if (identifier == "gl_Layer") { if (!qualifier.layoutViewportRelative && qualifier.layoutSecondaryViewportRelativeOffset == -2048) error(loc, "redeclaration only allowed for viewport_relative or secondary_view_offset layout", "redeclaration", symbol->getName().c_str()); symbolQualifier.layoutViewportRelative = qualifier.layoutViewportRelative; symbolQualifier.layoutSecondaryViewportRelativeOffset = qualifier.layoutSecondaryViewportRelativeOffset; } // TODO: semantics quality: separate smooth from nothing declared, then use IsInterpolation for several tests above return symbol; } return nullptr; } // // Either redeclare the requested block, or give an error message why it can't be done. // // TODO: functionality: explicitly sizing members of redeclared blocks is not giving them an explicit size void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newTypeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes) { const char* feature = "built-in block redeclaration"; profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment" && blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV" && blockName != "gl_MeshPerVertexEXT" && blockName != "gl_MeshPerPrimitiveEXT") { error(loc, "cannot redeclare block: ", "block declaration", blockName.c_str()); return; } // Redeclaring a built-in block... if (instanceName && ! builtInName(*instanceName)) { error(loc, "cannot redeclare a built-in block with a user name", instanceName->c_str(), ""); return; } // Blocks with instance names are easy to find, lookup the instance name, // Anonymous blocks need to be found via a member. bool builtIn; TSymbol* block; if (instanceName) block = symbolTable.find(*instanceName, &builtIn); else block = symbolTable.find(newTypeList.front().type->getFieldName(), &builtIn); // If the block was not found, this must be a version/profile/stage // that doesn't have it, or the instance name is wrong. const char* errorName = instanceName ? instanceName->c_str() : newTypeList.front().type->getFieldName().c_str(); if (! block) { error(loc, "no declaration found for redeclaration", errorName, ""); return; } // Built-in blocks cannot be redeclared more than once, which if happened, // we'd be finding the already redeclared one here, rather than the built in. if (! builtIn) { error(loc, "can only redeclare a built-in block once, and before any use", blockName.c_str(), ""); return; } // Copy the block to make a writable version, to insert into the block table after editing. block = symbolTable.copyUpDeferredInsert(block); if (block->getType().getBasicType() != EbtBlock) { error(loc, "cannot redeclare a non block as a block", errorName, ""); return; } // Fix XFB stuff up, it applies to the order of the redeclaration, not // the order of the original members. if (currentBlockQualifier.storage == EvqVaryingOut && globalOutputDefaults.hasXfbBuffer()) { if (!currentBlockQualifier.hasXfbBuffer()) currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; if (!currentBlockQualifier.hasStream()) currentBlockQualifier.layoutStream = globalOutputDefaults.layoutStream; fixXfbOffsets(currentBlockQualifier, newTypeList); } // Edit and error check the container against the redeclaration // - remove unused members // - ensure remaining qualifiers/types match TType& type = block->getWritableType(); // if gl_PerVertex is redeclared for the purpose of passing through "gl_Position" // for passthrough purpose, the redeclared block should have the same qualifers as // the current one if (currentBlockQualifier.layoutPassthrough) { type.getQualifier().layoutPassthrough = currentBlockQualifier.layoutPassthrough; type.getQualifier().storage = currentBlockQualifier.storage; type.getQualifier().layoutStream = currentBlockQualifier.layoutStream; type.getQualifier().layoutXfbBuffer = currentBlockQualifier.layoutXfbBuffer; } TTypeList::iterator member = type.getWritableStruct()->begin(); size_t numOriginalMembersFound = 0; while (member != type.getStruct()->end()) { // look for match bool found = false; TTypeList::const_iterator newMember; TSourceLoc memberLoc; memberLoc.init(); for (newMember = newTypeList.begin(); newMember != newTypeList.end(); ++newMember) { if (member->type->getFieldName() == newMember->type->getFieldName()) { found = true; memberLoc = newMember->loc; break; } } if (found) { ++numOriginalMembersFound; // - ensure match between redeclared members' types // - check for things that can't be changed // - update things that can be changed TType& oldType = *member->type; const TType& newType = *newMember->type; if (! newType.sameElementType(oldType)) error(memberLoc, "cannot redeclare block member with a different type", member->type->getFieldName().c_str(), ""); if (oldType.isArray() != newType.isArray()) error(memberLoc, "cannot change arrayness of redeclared block member", member->type->getFieldName().c_str(), ""); else if (! oldType.getQualifier().isPerView() && ! oldType.sameArrayness(newType) && oldType.isSizedArray()) error(memberLoc, "cannot change array size of redeclared block member", member->type->getFieldName().c_str(), ""); else if (! oldType.getQualifier().isPerView() && newType.isArray()) arrayLimitCheck(loc, member->type->getFieldName(), newType.getOuterArraySize()); if (oldType.getQualifier().isPerView() && ! newType.getQualifier().isPerView()) error(memberLoc, "missing perviewNV qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); else if (! oldType.getQualifier().isPerView() && newType.getQualifier().isPerView()) error(memberLoc, "cannot add perviewNV qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); else if (newType.getQualifier().isPerView()) { if (oldType.getArraySizes()->getNumDims() != newType.getArraySizes()->getNumDims()) error(memberLoc, "cannot change arrayness of redeclared block member", member->type->getFieldName().c_str(), ""); else if (! newType.isUnsizedArray() && newType.getOuterArraySize() != resources.maxMeshViewCountNV) error(loc, "mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized", "[]", ""); else if (newType.getArraySizes()->getNumDims() == 2) { int innerDimSize = newType.getArraySizes()->getDimSize(1); arrayLimitCheck(memberLoc, member->type->getFieldName(), innerDimSize); oldType.getArraySizes()->setDimSize(1, innerDimSize); } } if (oldType.getQualifier().isPerPrimitive() && ! newType.getQualifier().isPerPrimitive()) error(memberLoc, "missing perprimitiveNV qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); else if (! oldType.getQualifier().isPerPrimitive() && newType.getQualifier().isPerPrimitive()) error(memberLoc, "cannot add perprimitiveNV qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); if (newType.getQualifier().isMemory()) error(memberLoc, "cannot add memory qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); if (newType.getQualifier().hasNonXfbLayout()) error(memberLoc, "cannot add non-XFB layout to redeclared block member", member->type->getFieldName().c_str(), ""); if (newType.getQualifier().patch) error(memberLoc, "cannot add patch to redeclared block member", member->type->getFieldName().c_str(), ""); if (newType.getQualifier().hasXfbBuffer() && newType.getQualifier().layoutXfbBuffer != currentBlockQualifier.layoutXfbBuffer) error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", ""); if (newType.getQualifier().hasStream() && newType.getQualifier().layoutStream != currentBlockQualifier.layoutStream) error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_stream", ""); oldType.getQualifier().centroid = newType.getQualifier().centroid; oldType.getQualifier().sample = newType.getQualifier().sample; oldType.getQualifier().invariant = newType.getQualifier().invariant; oldType.getQualifier().noContraction = newType.getQualifier().noContraction; oldType.getQualifier().smooth = newType.getQualifier().smooth; oldType.getQualifier().flat = newType.getQualifier().flat; oldType.getQualifier().nopersp = newType.getQualifier().nopersp; oldType.getQualifier().layoutXfbOffset = newType.getQualifier().layoutXfbOffset; oldType.getQualifier().layoutXfbBuffer = newType.getQualifier().layoutXfbBuffer; oldType.getQualifier().layoutXfbStride = newType.getQualifier().layoutXfbStride; if (oldType.getQualifier().layoutXfbOffset != TQualifier::layoutXfbBufferEnd) { // If any member has an xfb_offset, then the block's xfb_buffer inherents current xfb_buffer, // and for xfb processing, the member needs it as well, along with xfb_stride. type.getQualifier().layoutXfbBuffer = currentBlockQualifier.layoutXfbBuffer; oldType.getQualifier().layoutXfbBuffer = currentBlockQualifier.layoutXfbBuffer; } if (oldType.isUnsizedArray() && newType.isSizedArray()) oldType.changeOuterArraySize(newType.getOuterArraySize()); // check and process the member's type, which will include managing xfb information layoutTypeCheck(loc, oldType); // go to next member ++member; } else { // For missing members of anonymous blocks that have been redeclared, // hide the original (shared) declaration. // Instance-named blocks can just have the member removed. if (instanceName) member = type.getWritableStruct()->erase(member); else { member->type->hideMember(); ++member; } } } if (spvVersion.vulkan > 0) { // ...then streams apply to built-in blocks, instead of them being only on stream 0 type.getQualifier().layoutStream = currentBlockQualifier.layoutStream; } if (numOriginalMembersFound < newTypeList.size()) error(loc, "block redeclaration has extra members", blockName.c_str(), ""); if (type.isArray() != (arraySizes != nullptr) || (type.isArray() && arraySizes != nullptr && type.getArraySizes()->getNumDims() != arraySizes->getNumDims())) error(loc, "cannot change arrayness of redeclared block", blockName.c_str(), ""); else if (type.isArray()) { // At this point, we know both are arrays and both have the same number of dimensions. // It is okay for a built-in block redeclaration to be unsized, and keep the size of the // original block declaration. if (!arraySizes->isSized() && type.isSizedArray()) arraySizes->changeOuterSize(type.getOuterArraySize()); // And, okay to be giving a size to the array, by the redeclaration if (!type.isSizedArray() && arraySizes->isSized()) type.changeOuterArraySize(arraySizes->getOuterSize()); // Now, they must match in all dimensions. if (type.isSizedArray() && *type.getArraySizes() != *arraySizes) error(loc, "cannot change array size of redeclared block", blockName.c_str(), ""); } symbolTable.insert(*block); // Check for general layout qualifier errors layoutObjectCheck(loc, *block); // Tracking for implicit sizing of array if (isIoResizeArray(block->getType())) { ioArraySymbolResizeList.push_back(block); checkIoArraysConsistency(loc, true); } else if (block->getType().isArray()) fixIoArraySize(loc, block->getWritableType()); // Save it in the AST for linker use. trackLinkage(*block); } void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQualifier& qualifier, TType& type) { switch (qualifier) { case EvqConst: case EvqConstReadOnly: type.getQualifier().storage = EvqConstReadOnly; break; case EvqIn: case EvqOut: case EvqInOut: case EvqTileImageEXT: type.getQualifier().storage = qualifier; break; case EvqGlobal: case EvqTemporary: type.getQualifier().storage = EvqIn; break; default: type.getQualifier().storage = EvqIn; error(loc, "storage qualifier not allowed on function parameter", GetStorageQualifierString(qualifier), ""); break; } } void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& qualifier, TType& type) { if (qualifier.isMemory()) { type.getQualifier().volatil = qualifier.volatil; type.getQualifier().nontemporal = qualifier.nontemporal; type.getQualifier().coherent = qualifier.coherent; type.getQualifier().devicecoherent = qualifier.devicecoherent ; type.getQualifier().queuefamilycoherent = qualifier.queuefamilycoherent; type.getQualifier().workgroupcoherent = qualifier.workgroupcoherent; type.getQualifier().subgroupcoherent = qualifier.subgroupcoherent; type.getQualifier().shadercallcoherent = qualifier.shadercallcoherent; type.getQualifier().nonprivate = qualifier.nonprivate; type.getQualifier().readonly = qualifier.readonly; type.getQualifier().writeonly = qualifier.writeonly; type.getQualifier().restrict = qualifier.restrict; } if (qualifier.isAuxiliary() || qualifier.isInterpolation()) error(loc, "cannot use auxiliary or interpolation qualifiers on a function parameter", "", ""); if (qualifier.hasLayout()) error(loc, "cannot use layout qualifiers on a function parameter", "", ""); if (qualifier.invariant) error(loc, "cannot use invariant qualifier on a function parameter", "", ""); if (qualifier.isNoContraction()) { if (qualifier.isParamOutput()) type.getQualifier().setNoContraction(); else warn(loc, "qualifier has no effect on non-output parameters", "precise", ""); } if (qualifier.isNonUniform()) type.getQualifier().nonUniform = qualifier.nonUniform; if (qualifier.isSpirvByReference()) type.getQualifier().setSpirvByReference(); if (qualifier.isSpirvLiteral()) { if (type.getBasicType() == EbtFloat || type.getBasicType() == EbtInt || type.getBasicType() == EbtUint || type.getBasicType() == EbtBool) type.getQualifier().setSpirvLiteral(); else error(loc, "cannot use spirv_literal qualifier", type.getBasicTypeString().c_str(), ""); } paramCheckFixStorage(loc, qualifier.storage, type); } void TParseContext::nestedBlockCheck(const TSourceLoc& loc) { if (structNestingLevel > 0 || blockNestingLevel > 0) error(loc, "cannot nest a block definition inside a structure or block", "", ""); ++blockNestingLevel; } void TParseContext::nestedStructCheck(const TSourceLoc& loc) { if (structNestingLevel > 0 || blockNestingLevel > 0) error(loc, "cannot nest a structure definition inside a structure or block", "", ""); ++structNestingLevel; } void TParseContext::arrayObjectCheck(const TSourceLoc& loc, const TType& type, const char* op) { // Some versions don't allow comparing arrays or structures containing arrays if (type.containsArray()) { profileRequires(loc, ENoProfile, 120, E_GL_3DL_array_objects, op); profileRequires(loc, EEsProfile, 300, nullptr, op); } } void TParseContext::opaqueCheck(const TSourceLoc& loc, const TType& type, const char* op) { if (containsFieldWithBasicType(type, EbtSampler) && !extensionTurnedOn(E_GL_ARB_bindless_texture)) error(loc, "can't use with samplers or structs containing samplers", op, ""); } void TParseContext::referenceCheck(const TSourceLoc& loc, const TType& type, const char* op) { if (containsFieldWithBasicType(type, EbtReference)) error(loc, "can't use with reference types", op, ""); } void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TType& type, const char* op) { if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtFloat16)) requireFloat16Arithmetic(loc, op, "can't use with structs containing float16"); if (type.isArray() && type.getBasicType() == EbtFloat16) requireFloat16Arithmetic(loc, op, "can't use with arrays containing float16"); if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtInt16)) requireInt16Arithmetic(loc, op, "can't use with structs containing int16"); if (type.isArray() && type.getBasicType() == EbtInt16) requireInt16Arithmetic(loc, op, "can't use with arrays containing int16"); if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtUint16)) requireInt16Arithmetic(loc, op, "can't use with structs containing uint16"); if (type.isArray() && type.getBasicType() == EbtUint16) requireInt16Arithmetic(loc, op, "can't use with arrays containing uint16"); if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtInt8)) requireInt8Arithmetic(loc, op, "can't use with structs containing int8"); if (type.isArray() && type.getBasicType() == EbtInt8) requireInt8Arithmetic(loc, op, "can't use with arrays containing int8"); if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtUint8)) requireInt8Arithmetic(loc, op, "can't use with structs containing uint8"); if (type.isArray() && type.getBasicType() == EbtUint8) requireInt8Arithmetic(loc, op, "can't use with arrays containing uint8"); } void TParseContext::specializationCheck(const TSourceLoc& loc, const TType& type, const char* op) { if (type.containsSpecializationSize()) error(loc, "can't use with types containing arrays sized with a specialization constant", op, ""); } void TParseContext::structTypeCheck(const TSourceLoc& /*loc*/, TPublicType& publicType) { const TTypeList& typeList = *publicType.userDef->getStruct(); // fix and check for member storage qualifiers and types that don't belong within a structure for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; if (memberQualifier.isAuxiliary() || memberQualifier.isInterpolation() || (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal)) error(memberLoc, "cannot use storage or interpolation qualifiers on structure members", typeList[member].type->getFieldName().c_str(), ""); if (memberQualifier.isMemory()) error(memberLoc, "cannot use memory qualifiers on structure members", typeList[member].type->getFieldName().c_str(), ""); if (memberQualifier.hasLayout()) { error(memberLoc, "cannot use layout qualifiers on structure members", typeList[member].type->getFieldName().c_str(), ""); memberQualifier.clearLayout(); } if (memberQualifier.invariant) error(memberLoc, "cannot use invariant qualifier on structure members", typeList[member].type->getFieldName().c_str(), ""); } } // // See if this loop satisfies the limitations for ES 2.0 (version 100) for loops in Appendex A: // // "The loop index has type int or float. // // "The for statement has the form: // for ( init-declaration ; condition ; expression ) // init-declaration has the form: type-specifier identifier = constant-expression // condition has the form: loop-index relational_operator constant-expression // where relational_operator is one of: > >= < <= == or != // expression [sic] has one of the following forms: // loop-index++ // loop-index-- // loop-index += constant-expression // loop-index -= constant-expression // // The body is handled in an AST traversal. // void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, TIntermLoop* loop) { // loop index init must exist and be a declaration, which shows up in the AST as an aggregate of size 1 of the declaration bool badInit = false; if (! init || ! init->getAsAggregate() || init->getAsAggregate()->getSequence().size() != 1) badInit = true; TIntermBinary* binaryInit = nullptr; if (! badInit) { // get the declaration assignment binaryInit = init->getAsAggregate()->getSequence()[0]->getAsBinaryNode(); if (! binaryInit) badInit = true; } if (badInit) { error(loc, "inductive-loop init-declaration requires the form \"type-specifier loop-index = constant-expression\"", "limitations", ""); return; } // loop index must be type int or float if (! binaryInit->getType().isScalar() || (binaryInit->getBasicType() != EbtInt && binaryInit->getBasicType() != EbtFloat)) { error(loc, "inductive loop requires a scalar 'int' or 'float' loop index", "limitations", ""); return; } // init is the form "loop-index = constant" if (binaryInit->getOp() != EOpAssign || ! binaryInit->getLeft()->getAsSymbolNode() || ! binaryInit->getRight()->getAsConstantUnion()) { error(loc, "inductive-loop init-declaration requires the form \"type-specifier loop-index = constant-expression\"", "limitations", ""); return; } // get the unique id of the loop index long long loopIndex = binaryInit->getLeft()->getAsSymbolNode()->getId(); inductiveLoopIds.insert(loopIndex); // condition's form must be "loop-index relational-operator constant-expression" bool badCond = ! loop->getTest(); if (! badCond) { TIntermBinary* binaryCond = loop->getTest()->getAsBinaryNode(); badCond = ! binaryCond; if (! badCond) { switch (binaryCond->getOp()) { case EOpGreaterThan: case EOpGreaterThanEqual: case EOpLessThan: case EOpLessThanEqual: case EOpEqual: case EOpNotEqual: break; default: badCond = true; } } if (binaryCond && (! binaryCond->getLeft()->getAsSymbolNode() || binaryCond->getLeft()->getAsSymbolNode()->getId() != loopIndex || ! binaryCond->getRight()->getAsConstantUnion())) badCond = true; } if (badCond) { error(loc, "inductive-loop condition requires the form \"loop-index constant-expression\"", "limitations", ""); return; } // loop-index++ // loop-index-- // loop-index += constant-expression // loop-index -= constant-expression bool badTerminal = ! loop->getTerminal(); if (! badTerminal) { TIntermUnary* unaryTerminal = loop->getTerminal()->getAsUnaryNode(); TIntermBinary* binaryTerminal = loop->getTerminal()->getAsBinaryNode(); if (unaryTerminal || binaryTerminal) { switch(loop->getTerminal()->getAsOperator()->getOp()) { case EOpPostDecrement: case EOpPostIncrement: case EOpAddAssign: case EOpSubAssign: break; default: badTerminal = true; } } else badTerminal = true; if (binaryTerminal && (! binaryTerminal->getLeft()->getAsSymbolNode() || binaryTerminal->getLeft()->getAsSymbolNode()->getId() != loopIndex || ! binaryTerminal->getRight()->getAsConstantUnion())) badTerminal = true; if (unaryTerminal && (! unaryTerminal->getOperand()->getAsSymbolNode() || unaryTerminal->getOperand()->getAsSymbolNode()->getId() != loopIndex)) badTerminal = true; } if (badTerminal) { error(loc, "inductive-loop termination requires the form \"loop-index++, loop-index--, loop-index += constant-expression, or loop-index -= constant-expression\"", "limitations", ""); return; } // the body inductiveLoopBodyCheck(loop->getBody(), loopIndex, symbolTable); } // Do limit checks for built-in arrays. void TParseContext::arrayLimitCheck(const TSourceLoc& loc, const TString& identifier, int size) { if (identifier.compare("gl_TexCoord") == 0) limitCheck(loc, size, "gl_MaxTextureCoords", "gl_TexCoord array size"); else if (identifier.compare("gl_ClipDistance") == 0) limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistance array size"); else if (identifier.compare("gl_CullDistance") == 0) limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistance array size"); else if (identifier.compare("gl_ClipDistancePerViewNV") == 0) limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistancePerViewNV array size"); else if (identifier.compare("gl_CullDistancePerViewNV") == 0) limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistancePerViewNV array size"); } // See if the provided value is less than or equal to the symbol indicated by limit, // which should be a constant in the symbol table. void TParseContext::limitCheck(const TSourceLoc& loc, int value, const char* limit, const char* feature) { TSymbol* symbol = symbolTable.find(limit); assert(symbol->getAsVariable()); const TConstUnionArray& constArray = symbol->getAsVariable()->getConstArray(); assert(! constArray.empty()); if (value > constArray[0].getIConst()) error(loc, "must be less than or equal to", feature, "%s (%d)", limit, constArray[0].getIConst()); } // // Do any additional error checking, etc., once we know the parsing is done. // void TParseContext::finish() { TParseContextBase::finish(); if (parsingBuiltins) return; // Check on array indexes for ES 2.0 (version 100) limitations. for (size_t i = 0; i < needsIndexLimitationChecking.size(); ++i) constantIndexExpressionCheck(needsIndexLimitationChecking[i]); // Check for stages that are enabled by extension. // Can't do this at the beginning, it is chicken and egg to add a stage by // extension. // Stage-specific features were correctly tested for already, this is just // about the stage itself. switch (language) { case EShLangGeometry: if (isEsProfile() && version == 310) requireExtensions(getCurrentLoc(), Num_AEP_geometry_shader, AEP_geometry_shader, "geometry shaders"); break; case EShLangTessControl: case EShLangTessEvaluation: if (isEsProfile() && version == 310) requireExtensions(getCurrentLoc(), Num_AEP_tessellation_shader, AEP_tessellation_shader, "tessellation shaders"); else if (!isEsProfile() && version < 400) requireExtensions(getCurrentLoc(), 1, &E_GL_ARB_tessellation_shader, "tessellation shaders"); break; case EShLangCompute: if (!isEsProfile() && version < 430) requireExtensions(getCurrentLoc(), 1, &E_GL_ARB_compute_shader, "compute shaders"); break; case EShLangTask: requireExtensions(getCurrentLoc(), Num_AEP_mesh_shader, AEP_mesh_shader, "task shaders"); break; case EShLangMesh: requireExtensions(getCurrentLoc(), Num_AEP_mesh_shader, AEP_mesh_shader, "mesh shaders"); break; default: break; } // Set default outputs for GL_NV_geometry_shader_passthrough if (language == EShLangGeometry && extensionTurnedOn(E_SPV_NV_geometry_shader_passthrough)) { if (intermediate.getOutputPrimitive() == ElgNone) { switch (intermediate.getInputPrimitive()) { case ElgPoints: intermediate.setOutputPrimitive(ElgPoints); break; case ElgLines: intermediate.setOutputPrimitive(ElgLineStrip); break; case ElgTriangles: intermediate.setOutputPrimitive(ElgTriangleStrip); break; default: break; } } if (intermediate.getVertices() == TQualifier::layoutNotSet) { switch (intermediate.getInputPrimitive()) { case ElgPoints: intermediate.setVertices(1); break; case ElgLines: intermediate.setVertices(2); break; case ElgTriangles: intermediate.setVertices(3); break; default: break; } } } } // // Layout qualifier stuff. // // Put the id's layout qualification into the public type, for qualifiers not having a number set. // This is before we know any type information for error checking. void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publicType, TString& id) { std::transform(id.begin(), id.end(), id.begin(), ::tolower); if (id == TQualifier::getLayoutMatrixString(ElmColumnMajor)) { publicType.qualifier.layoutMatrix = ElmColumnMajor; return; } if (id == TQualifier::getLayoutMatrixString(ElmRowMajor)) { publicType.qualifier.layoutMatrix = ElmRowMajor; return; } if (id == TQualifier::getLayoutPackingString(ElpPacked)) { if (spvVersion.spv != 0) { if (spvVersion.vulkanRelaxed) return; // silently ignore qualifier else spvRemoved(loc, "packed"); } publicType.qualifier.layoutPacking = ElpPacked; return; } if (id == TQualifier::getLayoutPackingString(ElpShared)) { if (spvVersion.spv != 0) { if (spvVersion.vulkanRelaxed) return; // silently ignore qualifier else spvRemoved(loc, "shared"); } publicType.qualifier.layoutPacking = ElpShared; return; } if (id == TQualifier::getLayoutPackingString(ElpStd140)) { publicType.qualifier.layoutPacking = ElpStd140; return; } if (id == TQualifier::getLayoutPackingString(ElpStd430)) { requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "std430"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_shader_storage_buffer_object, "std430"); profileRequires(loc, EEsProfile, 310, nullptr, "std430"); publicType.qualifier.layoutPacking = ElpStd430; return; } if (id == TQualifier::getLayoutPackingString(ElpScalar)) { requireVulkan(loc, "scalar"); requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "scalar block layout"); publicType.qualifier.layoutPacking = ElpScalar; return; } // TODO: compile-time performance: may need to stop doing linear searches for (TLayoutFormat format = (TLayoutFormat)(ElfNone + 1); format < ElfCount; format = (TLayoutFormat)(format + 1)) { if (id == TQualifier::getLayoutFormatString(format)) { if ((format > ElfEsFloatGuard && format < ElfFloatGuard) || (format > ElfEsIntGuard && format < ElfIntGuard) || (format > ElfEsUintGuard && format < ElfCount)) requireProfile(loc, ENoProfile | ECoreProfile | ECompatibilityProfile, "image load-store format"); profileRequires(loc, ENoProfile | ECoreProfile | ECompatibilityProfile, 420, E_GL_ARB_shader_image_load_store, "image load store"); profileRequires(loc, EEsProfile, 310, E_GL_ARB_shader_image_load_store, "image load store"); publicType.qualifier.layoutFormat = format; return; } } if (id == "push_constant") { requireVulkan(loc, "push_constant"); publicType.qualifier.layoutPushConstant = true; return; } if (id == "buffer_reference") { requireVulkan(loc, "buffer_reference"); requireExtensions(loc, 1, &E_GL_EXT_buffer_reference, "buffer_reference"); publicType.qualifier.layoutBufferReference = true; intermediate.setUseStorageBuffer(); intermediate.setUsePhysicalStorageBuffer(); return; } if (id == "bindless_sampler") { requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "bindless_sampler"); publicType.qualifier.layoutBindlessSampler = true; intermediate.setBindlessTextureMode(currentCaller, AstRefTypeLayout); return; } if (id == "bindless_image") { requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "bindless_image"); publicType.qualifier.layoutBindlessImage = true; intermediate.setBindlessImageMode(currentCaller, AstRefTypeLayout); return; } if (id == "bound_sampler") { requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "bound_sampler"); publicType.qualifier.layoutBindlessSampler = false; return; } if (id == "bound_image") { requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "bound_image"); publicType.qualifier.layoutBindlessImage = false; return; } if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMesh) { if (id == TQualifier::getGeometryString(ElgTriangles)) { publicType.shaderQualifiers.geometry = ElgTriangles; return; } if (language == EShLangGeometry || language == EShLangMesh) { if (id == TQualifier::getGeometryString(ElgPoints)) { publicType.shaderQualifiers.geometry = ElgPoints; return; } if (id == TQualifier::getGeometryString(ElgLines)) { publicType.shaderQualifiers.geometry = ElgLines; return; } if (language == EShLangGeometry) { if (id == TQualifier::getGeometryString(ElgLineStrip)) { publicType.shaderQualifiers.geometry = ElgLineStrip; return; } if (id == TQualifier::getGeometryString(ElgLinesAdjacency)) { publicType.shaderQualifiers.geometry = ElgLinesAdjacency; return; } if (id == TQualifier::getGeometryString(ElgTrianglesAdjacency)) { publicType.shaderQualifiers.geometry = ElgTrianglesAdjacency; return; } if (id == TQualifier::getGeometryString(ElgTriangleStrip)) { publicType.shaderQualifiers.geometry = ElgTriangleStrip; return; } if (id == "passthrough") { requireExtensions(loc, 1, &E_SPV_NV_geometry_shader_passthrough, "geometry shader passthrough"); publicType.qualifier.layoutPassthrough = true; intermediate.setGeoPassthroughEXT(); return; } } } else { assert(language == EShLangTessEvaluation); // input primitive if (id == TQualifier::getGeometryString(ElgTriangles)) { publicType.shaderQualifiers.geometry = ElgTriangles; return; } if (id == TQualifier::getGeometryString(ElgQuads)) { publicType.shaderQualifiers.geometry = ElgQuads; return; } if (id == TQualifier::getGeometryString(ElgIsolines)) { publicType.shaderQualifiers.geometry = ElgIsolines; return; } // vertex spacing if (id == TQualifier::getVertexSpacingString(EvsEqual)) { publicType.shaderQualifiers.spacing = EvsEqual; return; } if (id == TQualifier::getVertexSpacingString(EvsFractionalEven)) { publicType.shaderQualifiers.spacing = EvsFractionalEven; return; } if (id == TQualifier::getVertexSpacingString(EvsFractionalOdd)) { publicType.shaderQualifiers.spacing = EvsFractionalOdd; return; } // triangle order if (id == TQualifier::getVertexOrderString(EvoCw)) { publicType.shaderQualifiers.order = EvoCw; return; } if (id == TQualifier::getVertexOrderString(EvoCcw)) { publicType.shaderQualifiers.order = EvoCcw; return; } // point mode if (id == "point_mode") { publicType.shaderQualifiers.pointMode = true; return; } } } if (language == EShLangFragment) { if (id == "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 | 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; } if (id == "early_fragment_tests") { profileRequires(loc, ENoProfile | ECoreProfile | ECompatibilityProfile, 420, E_GL_ARB_shader_image_load_store, "early_fragment_tests"); profileRequires(loc, EEsProfile, 310, nullptr, "early_fragment_tests"); 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)) { publicType.shaderQualifiers.earlyFragmentTests = true; } publicType.shaderQualifiers.postDepthCoverage = true; return; } /* id is transformed into lower case in the beginning of this function. */ if (id == "non_coherent_color_attachment_readext") { requireExtensions(loc, 1, &E_GL_EXT_shader_tile_image, "non_coherent_color_attachment_readEXT"); publicType.shaderQualifiers.nonCoherentColorAttachmentReadEXT = true; return; } if (id == "non_coherent_depth_attachment_readext") { requireExtensions(loc, 1, &E_GL_EXT_shader_tile_image, "non_coherent_depth_attachment_readEXT"); publicType.shaderQualifiers.nonCoherentDepthAttachmentReadEXT = true; return; } if (id == "non_coherent_stencil_attachment_readext") { requireExtensions(loc, 1, &E_GL_EXT_shader_tile_image, "non_coherent_stencil_attachment_readEXT"); publicType.shaderQualifiers.nonCoherentStencilAttachmentReadEXT = true; return; } for (TLayoutDepth depth = (TLayoutDepth)(EldNone + 1); depth < EldCount; depth = (TLayoutDepth)(depth+1)) { if (id == TQualifier::getLayoutDepthString(depth)) { requireProfile(loc, ECoreProfile | ECompatibilityProfile, "depth layout qualifier"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, nullptr, "depth layout qualifier"); publicType.shaderQualifiers.layoutDepth = depth; 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"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 450, nullptr, "fragment shader interlock layout qualifier"); requireExtensions(loc, 1, &E_GL_ARB_fragment_shader_interlock, TQualifier::getInterlockOrderingString(order)); if (order == EioShadingRateInterlockOrdered || order == EioShadingRateInterlockUnordered) requireExtensions(loc, 1, &E_GL_NV_shading_rate_image, TQualifier::getInterlockOrderingString(order)); publicType.shaderQualifiers.interlockOrdering = order; return; } } if (id.compare(0, 13, "blend_support") == 0) { bool found = false; for (TBlendEquationShift be = (TBlendEquationShift)0; be < EBlendCount; be = (TBlendEquationShift)(be + 1)) { if (id == TQualifier::getBlendEquationString(be)) { profileRequires(loc, EEsProfile, 320, E_GL_KHR_blend_equation_advanced, "blend equation"); profileRequires(loc, ~EEsProfile, 0, E_GL_KHR_blend_equation_advanced, "blend equation"); intermediate.addBlendEquation(be); publicType.shaderQualifiers.blendEquation = true; found = true; break; } } if (! found) error(loc, "unknown blend equation", "blend_support", ""); return; } if (id == "override_coverage") { requireExtensions(loc, 1, &E_GL_NV_sample_mask_override_coverage, "sample mask override coverage"); publicType.shaderQualifiers.layoutOverrideCoverage = true; return; } if (id == "full_quads") { const char* feature = "full_quads qualifier"; requireProfile(loc, ECompatibilityProfile | ECoreProfile | EEsProfile, feature); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 140, E_GL_EXT_shader_quad_control, feature); profileRequires(loc, EEsProfile, 310, E_GL_EXT_shader_quad_control, feature); publicType.qualifier.layoutFullQuads = true; return; } if (id == "non_coherent_attachment_readqcom") { requireExtensions(loc, 1, &E_GL_QCOM_tile_shading, "tile shading QCOM"); publicType.shaderQualifiers.layoutNonCoherentTileAttachmentReadQCOM = true; return; } if (id == "tile_attachmentqcom") { requireExtensions(loc, 1, &E_GL_QCOM_tile_shading, "tile shading QCOM"); publicType.qualifier.layoutTileAttachmentQCOM = true; return; } } if (language == EShLangVertex || language == EShLangTessControl || language == EShLangTessEvaluation || language == EShLangGeometry ) { if (id == "viewport_relative") { requireExtensions(loc, 1, &E_GL_NV_viewport_array2, "view port array2"); publicType.qualifier.layoutViewportRelative = true; return; } } else { if (language == EShLangRayGen || language == EShLangIntersect || language == EShLangAnyHit || language == EShLangClosestHit || language == EShLangMiss || language == EShLangCallable) { if (id == "shaderrecordnv" || id == "shaderrecordext") { if (id == "shaderrecordnv") { requireExtensions(loc, 1, &E_GL_NV_ray_tracing, "shader record NV"); } else { requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "shader record EXT"); } publicType.qualifier.layoutShaderRecord = true; return; } else if (id == "hitobjectshaderrecordnv") { requireExtensions(loc, 1, &E_GL_NV_shader_invocation_reorder, "hitobject shader record NV"); publicType.qualifier.layoutHitObjectShaderRecordNV = true; return; } } } if (language == EShLangCompute) { if (id.compare(0, 17, "derivative_group_") == 0) { requireExtensions(loc, 1, &E_GL_NV_compute_shader_derivatives, "compute shader derivatives"); if (id == "derivative_group_quadsnv") { publicType.shaderQualifiers.layoutDerivativeGroupQuads = true; return; } else if (id == "derivative_group_linearnv") { publicType.shaderQualifiers.layoutDerivativeGroupLinear = true; return; } } if (id == "tile_attachmentqcom") { requireExtensions(loc, 1, &E_GL_QCOM_tile_shading, "tile shading QCOM"); publicType.qualifier.layoutTileAttachmentQCOM = true; return; } } if (id == "primitive_culling") { requireExtensions(loc, 1, &E_GL_EXT_ray_flags_primitive_culling, "primitive culling"); publicType.shaderQualifiers.layoutPrimitiveCulling = true; return; } if (id == "quad_derivatives") { const char* feature = "quad_derivatives qualifier"; requireProfile(loc, ECompatibilityProfile | ECoreProfile | EEsProfile, feature); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 140, E_GL_EXT_shader_quad_control, feature); profileRequires(loc, EEsProfile, 310, E_GL_EXT_shader_quad_control, feature); publicType.qualifier.layoutQuadDeriv = true; return; } error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), ""); } // Put the id's layout qualifier value into the public type, for qualifiers having a number set. // This is before we know any type information for error checking. void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publicType, TString& id, const TIntermTyped* node) { const char* feature = "layout-id value"; const char* nonLiteralFeature = "non-literal layout-id value"; integerCheck(node, feature); const TIntermConstantUnion* constUnion = node->getAsConstantUnion(); int value; bool nonLiteral = false; if (constUnion) { value = constUnion->getConstArray()[0].getIConst(); if (! constUnion->isLiteral()) { requireProfile(loc, ECoreProfile | ECompatibilityProfile, nonLiteralFeature); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, nonLiteralFeature); } } else { // grammar should have give out the error message value = 0; nonLiteral = true; } if (value < 0) { error(loc, "cannot be negative", feature, ""); return; } std::transform(id.begin(), id.end(), id.begin(), ::tolower); if (id == "offset") { // "offset" can be for either // - uniform offsets // - atomic_uint offsets const char* feature = "offset"; if (spvVersion.spv == 0) { requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, feature); const char* exts[2] = { E_GL_ARB_enhanced_layouts, E_GL_ARB_shader_atomic_counters }; profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, 2, exts, feature); profileRequires(loc, EEsProfile, 310, nullptr, feature); } publicType.qualifier.layoutOffset = value; publicType.qualifier.explicitOffset = true; if (nonLiteral) error(loc, "needs a literal integer", "offset", ""); return; } else if (id == "align") { const char* feature = "uniform buffer-member align"; if (spvVersion.spv == 0) { requireProfile(loc, ECoreProfile | ECompatibilityProfile, feature); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, feature); } // "The specified alignment must be a power of 2, or a compile-time error results." if (! IsPow2(value)) error(loc, "must be a power of 2", "align", ""); else publicType.qualifier.layoutAlign = value; if (nonLiteral) error(loc, "needs a literal integer", "align", ""); 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 }; // GL_ARB_explicit_uniform_location requires 330 or GL_ARB_explicit_attrib_location we do not need to add it here profileRequires(loc, ~EEsProfile, 330, 2, exts, "location"); if ((unsigned int)value >= TQualifier::layoutLocationEnd) error(loc, "location is too large", id.c_str(), ""); else publicType.qualifier.layoutLocation = value; if (nonLiteral) error(loc, "needs a literal integer", "location", ""); return; } else if (id == "set") { if ((unsigned int)value >= TQualifier::layoutSetEnd) error(loc, "set is too large", id.c_str(), ""); else publicType.qualifier.layoutSet = value; if (value != 0) requireVulkan(loc, "descriptor set"); if (nonLiteral) error(loc, "needs a literal integer", "set", ""); return; } else if (id == "binding") { profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, "binding"); profileRequires(loc, EEsProfile, 310, nullptr, "binding"); if ((unsigned int)value >= TQualifier::layoutBindingEnd) error(loc, "binding is too large", id.c_str(), ""); else publicType.qualifier.layoutBinding = value; if (nonLiteral) error(loc, "needs a literal integer", "binding", ""); return; } if (id == "constant_id") { requireSpv(loc, "constant_id"); if (value >= (int)TQualifier::layoutSpecConstantIdEnd) { error(loc, "specialization-constant id is too large", id.c_str(), ""); } else { publicType.qualifier.layoutSpecConstantId = value; publicType.qualifier.specConstant = true; if (! intermediate.addUsedConstantId(value)) error(loc, "specialization-constant id already used", id.c_str(), ""); } if (nonLiteral) error(loc, "needs a literal integer", "constant_id", ""); return; } if (id == "component") { requireProfile(loc, ECoreProfile | ECompatibilityProfile, "component"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, "component"); if ((unsigned)value >= TQualifier::layoutComponentEnd) error(loc, "component is too large", id.c_str(), ""); else publicType.qualifier.layoutComponent = value; if (nonLiteral) error(loc, "needs a literal integer", "component", ""); return; } if (id.compare(0, 4, "xfb_") == 0) { // "Any shader making any static use (after preprocessing) of any of these // *xfb_* qualifiers will cause the shader to be in a transform feedback // capturing mode and hence responsible for describing the transform feedback // setup." intermediate.setXfbMode(); const char* feature = "transform feedback qualifier"; requireStage(loc, (EShLanguageMask)(EShLangVertexMask | EShLangGeometryMask | EShLangTessControlMask | EShLangTessEvaluationMask), feature); requireProfile(loc, ECoreProfile | ECompatibilityProfile, feature); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, feature); if (id == "xfb_buffer") { // "It is a compile-time error to specify an *xfb_buffer* that is greater than // the implementation-dependent constant gl_MaxTransformFeedbackBuffers." if (value >= resources.maxTransformFeedbackBuffers) error(loc, "buffer is too large:", id.c_str(), "gl_MaxTransformFeedbackBuffers is %d", resources.maxTransformFeedbackBuffers); if (value >= (int)TQualifier::layoutXfbBufferEnd) error(loc, "buffer is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbBufferEnd-1); else publicType.qualifier.layoutXfbBuffer = value; if (nonLiteral) error(loc, "needs a literal integer", "xfb_buffer", ""); return; } else if (id == "xfb_offset") { if (value >= (int)TQualifier::layoutXfbOffsetEnd) error(loc, "offset is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbOffsetEnd-1); else publicType.qualifier.layoutXfbOffset = value; if (nonLiteral) error(loc, "needs a literal integer", "xfb_offset", ""); return; } else if (id == "xfb_stride") { // "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the // implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents." if (value > 4 * resources.maxTransformFeedbackInterleavedComponents) { error(loc, "1/4 stride is too large:", id.c_str(), "gl_MaxTransformFeedbackInterleavedComponents is %d", resources.maxTransformFeedbackInterleavedComponents); } if (value >= (int)TQualifier::layoutXfbStrideEnd) error(loc, "stride is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbStrideEnd-1); else publicType.qualifier.layoutXfbStride = value; if (nonLiteral) error(loc, "needs a literal integer", "xfb_stride", ""); return; } } if (id == "input_attachment_index") { requireVulkan(loc, "input_attachment_index"); if (value >= (int)TQualifier::layoutAttachmentEnd) error(loc, "attachment index is too large", id.c_str(), ""); else publicType.qualifier.layoutAttachment = value; if (nonLiteral) error(loc, "needs a literal integer", "input_attachment_index", ""); return; } if (id == "num_views") { requireExtensions(loc, Num_OVR_multiview_EXTs, OVR_multiview_EXTs, "num_views"); publicType.shaderQualifiers.numViews = value; if (nonLiteral) error(loc, "needs a literal integer", "num_views", ""); return; } if (language == EShLangVertex || language == EShLangTessControl || language == EShLangTessEvaluation || language == EShLangGeometry) { if (id == "secondary_view_offset") { requireExtensions(loc, 1, &E_GL_NV_stereo_view_rendering, "stereo view rendering"); publicType.qualifier.layoutSecondaryViewportRelativeOffset = value; if (nonLiteral) error(loc, "needs a literal integer", "secondary_view_offset", ""); return; } } if (id == "buffer_reference_align") { requireExtensions(loc, 1, &E_GL_EXT_buffer_reference, "buffer_reference_align"); if (! IsPow2(value)) error(loc, "must be a power of 2", "buffer_reference_align", ""); else publicType.qualifier.layoutBufferReferenceAlign = IntLog2(value); if (nonLiteral) error(loc, "needs a literal integer", "buffer_reference_align", ""); return; } switch (language) { case EShLangTessControl: if (id == "vertices") { if (value == 0) error(loc, "must be greater than 0", "vertices", ""); else publicType.shaderQualifiers.vertices = value; if (nonLiteral) error(loc, "needs a literal integer", "vertices", ""); return; } break; case EShLangGeometry: if (id == "invocations") { profileRequires(loc, ECompatibilityProfile | ECoreProfile, 400, Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5, "invocations"); if (value == 0) error(loc, "must be at least 1", "invocations", ""); else publicType.shaderQualifiers.invocations = value; if (nonLiteral) error(loc, "needs a literal integer", "invocations", ""); return; } if (id == "max_vertices") { publicType.shaderQualifiers.vertices = value; if (value > resources.maxGeometryOutputVertices) error(loc, "too large, must be less than gl_MaxGeometryOutputVertices", "max_vertices", ""); if (nonLiteral) error(loc, "needs a literal integer", "max_vertices", ""); return; } if (id == "stream") { requireProfile(loc, ~EEsProfile, "selecting output stream"); publicType.qualifier.layoutStream = value; if (value > 0) intermediate.setMultiStream(); if (nonLiteral) error(loc, "needs a literal integer", "stream", ""); return; } break; case EShLangFragment: if (id == "index") { requireProfile(loc, ECompatibilityProfile | ECoreProfile | EEsProfile, "index layout qualifier on fragment output"); const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; profileRequires(loc, ECompatibilityProfile | ECoreProfile, 330, 2, exts, "index layout qualifier on fragment output"); profileRequires(loc, EEsProfile ,310, E_GL_EXT_blend_func_extended, "index layout qualifier on fragment output"); // "It is also a compile-time error if a fragment shader sets a layout index to less than 0 or greater than 1." if (value < 0 || value > 1) { value = 0; error(loc, "value must be 0 or 1", "index", ""); } publicType.qualifier.layoutIndex = value; if (nonLiteral) error(loc, "needs a literal integer", "index", ""); return; } break; case EShLangMesh: if (id == "max_vertices") { requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_vertices"); publicType.shaderQualifiers.vertices = value; int max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? resources.maxMeshOutputVerticesEXT : resources.maxMeshOutputVerticesNV; if (value > max) { TString maxsErrtring = "too large, must be less than "; maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? "gl_MaxMeshOutputVerticesEXT" : "gl_MaxMeshOutputVerticesNV"); error(loc, maxsErrtring.c_str(), "max_vertices", ""); } if (nonLiteral) error(loc, "needs a literal integer", "max_vertices", ""); return; } if (id == "max_primitives") { requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_primitives"); publicType.shaderQualifiers.primitives = value; int max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? resources.maxMeshOutputPrimitivesEXT : resources.maxMeshOutputPrimitivesNV; if (value > max) { TString maxsErrtring = "too large, must be less than "; maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? "gl_MaxMeshOutputPrimitivesEXT" : "gl_MaxMeshOutputPrimitivesNV"); error(loc, maxsErrtring.c_str(), "max_primitives", ""); } if (nonLiteral) error(loc, "needs a literal integer", "max_primitives", ""); return; } [[fallthrough]]; case EShLangTask: // Fall through case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { if (language == EShLangMesh || language == EShLangTask) { requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "gl_WorkGroupSize"); } else { profileRequires(loc, EEsProfile, 310, nullptr, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); } if (nonLiteral) error(loc, "needs a literal integer", "local_size", ""); if (id.size() == 12 && value == 0) { error(loc, "must be at least 1", id.c_str(), ""); return; } if (id == "local_size_x") { publicType.shaderQualifiers.localSize[0] = value; publicType.shaderQualifiers.localSizeNotDefault[0] = true; return; } if (id == "local_size_y") { publicType.shaderQualifiers.localSize[1] = value; publicType.shaderQualifiers.localSizeNotDefault[1] = true; return; } if (id == "local_size_z") { publicType.shaderQualifiers.localSize[2] = value; publicType.shaderQualifiers.localSizeNotDefault[2] = true; return; } if (spvVersion.spv != 0) { if (id == "local_size_x_id") { publicType.shaderQualifiers.localSizeSpecId[0] = value; return; } if (id == "local_size_y_id") { publicType.shaderQualifiers.localSizeSpecId[1] = value; return; } if (id == "local_size_z_id") { publicType.shaderQualifiers.localSizeSpecId[2] = value; return; } } } if (id.compare(0, 18, "shading_rate_xqcom") == 0 || id.compare(0, 18, "shading_rate_yqcom") == 0 || id.compare(0, 18, "shading_rate_zqcom") == 0) { requireExtensions(loc, 1, &E_GL_QCOM_tile_shading, "tile shading QCOM"); if (nonLiteral) error(loc, "needs a literal integer", "shading_rate_*QCOM", ""); if (id.size() == 18 && value == 0) { error(loc, "must be at least 1", id.c_str(), ""); return; } if (id == "shading_rate_xqcom") { publicType.shaderQualifiers.layoutTileShadingRateQCOM[0] = value; publicType.shaderQualifiers.layoutTileShadingRateQCOMNotDefault[0] = true; if (! IsPow2(value)) error(loc, "must be a power of 2", id.c_str(), ""); return; } if (id == "shading_rate_yqcom") { publicType.shaderQualifiers.layoutTileShadingRateQCOM[1] = value; publicType.shaderQualifiers.layoutTileShadingRateQCOMNotDefault[1] = true; if (! IsPow2(value)) error(loc, "must be a power of 2", id.c_str(), ""); return; } if (id == "shading_rate_zqcom") { publicType.shaderQualifiers.layoutTileShadingRateQCOM[2] = value; publicType.shaderQualifiers.layoutTileShadingRateQCOMNotDefault[2] = true; if (value <= 0) error(loc, "must be a positive value", id.c_str(), ""); return; } } break; default: break; } error(loc, "there is no such layout identifier for this stage taking an assigned value", id.c_str(), ""); } // Merge any layout qualifier information from src into dst, leaving everything else in dst alone // // "More than one layout qualifier may appear in a single declaration. // Additionally, the same layout-qualifier-name can occur multiple times // within a layout qualifier or across multiple layout qualifiers in the // same declaration. When the same layout-qualifier-name occurs // multiple times, in a single declaration, the last occurrence overrides // the former occurrence(s). Further, if such a layout-qualifier-name // will effect subsequent declarations or other observable behavior, it // is only the last occurrence that will have any effect, behaving as if // the earlier occurrence(s) within the declaration are not present. // This is also true for overriding layout-qualifier-names, where one // overrides the other (e.g., row_major vs. column_major); only the last // occurrence has any effect." void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifier& src, bool inheritOnly) { if (src.hasMatrix()) dst.layoutMatrix = src.layoutMatrix; if (src.hasPacking()) dst.layoutPacking = src.layoutPacking; if (src.hasStream()) dst.layoutStream = src.layoutStream; if (src.hasFormat()) dst.layoutFormat = src.layoutFormat; if (src.hasXfbBuffer()) dst.layoutXfbBuffer = src.layoutXfbBuffer; if (src.hasBufferReferenceAlign()) dst.layoutBufferReferenceAlign = src.layoutBufferReferenceAlign; if (src.hasAlign()) dst.layoutAlign = src.layoutAlign; if (! inheritOnly) { if (src.hasLocation()) dst.layoutLocation = src.layoutLocation; if (src.hasOffset()) dst.layoutOffset = src.layoutOffset; if (src.hasSet()) dst.layoutSet = src.layoutSet; if (src.layoutBinding != TQualifier::layoutBindingEnd) dst.layoutBinding = src.layoutBinding; if (src.hasSpecConstantId()) dst.layoutSpecConstantId = src.layoutSpecConstantId; if (src.hasComponent()) dst.layoutComponent = src.layoutComponent; if (src.hasIndex()) dst.layoutIndex = src.layoutIndex; if (src.hasXfbStride()) dst.layoutXfbStride = src.layoutXfbStride; if (src.hasXfbOffset()) dst.layoutXfbOffset = src.layoutXfbOffset; if (src.hasAttachment()) dst.layoutAttachment = src.layoutAttachment; if (src.layoutPushConstant) dst.layoutPushConstant = true; if (src.layoutBufferReference) dst.layoutBufferReference = true; if (src.layoutPassthrough) dst.layoutPassthrough = true; if (src.layoutViewportRelative) dst.layoutViewportRelative = true; if (src.layoutSecondaryViewportRelativeOffset != -2048) dst.layoutSecondaryViewportRelativeOffset = src.layoutSecondaryViewportRelativeOffset; if (src.layoutShaderRecord) dst.layoutShaderRecord = true; if (src.layoutFullQuads) dst.layoutFullQuads = true; if (src.layoutQuadDeriv) dst.layoutQuadDeriv = true; if (src.layoutBindlessSampler) dst.layoutBindlessSampler = true; if (src.layoutBindlessImage) dst.layoutBindlessImage = true; if (src.pervertexNV) dst.pervertexNV = true; if (src.pervertexEXT) dst.pervertexEXT = true; if (src.layoutHitObjectShaderRecordNV) dst.layoutHitObjectShaderRecordNV = true; dst.layoutTileAttachmentQCOM |= src.layoutTileAttachmentQCOM; } } // Do error layout error checking given a full variable/block declaration. void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symbol) { const TType& type = symbol.getType(); const TQualifier& qualifier = type.getQualifier(); // first, cross check WRT to just the type layoutTypeCheck(loc, type); // now, any remaining error checking based on the object itself if (qualifier.hasAnyLocation()) { switch (qualifier.storage) { case EvqUniform: case EvqBuffer: if (symbol.getAsVariable() == nullptr) error(loc, "can only be used on variable declaration", "location", ""); break; default: break; } } // user-variable location check, which are required for SPIR-V in/out: // - variables have it directly, // - blocks have it on each member (already enforced), so check first one if (spvVersion.spv > 0 && !parsingBuiltins && qualifier.builtIn == EbvNone && !qualifier.hasLocation() && !intermediate.getAutoMapLocations()) { switch (qualifier.storage) { case EvqVaryingIn: case EvqVaryingOut: if (!type.getQualifier().isTaskMemory() && !type.getQualifier().hasSpirvDecorate() && (type.getBasicType() != EbtBlock || (!(*type.getStruct())[0].type->getQualifier().hasLocation() && (*type.getStruct())[0].type->getQualifier().builtIn == EbvNone))) error(loc, "SPIR-V requires location for user input/output", "location", ""); break; default: break; } } // Check packing and matrix if (qualifier.hasUniformLayout()) { switch (qualifier.storage) { case EvqUniform: case EvqBuffer: if (type.getBasicType() != EbtBlock) { if (qualifier.hasMatrix()) error(loc, "cannot specify matrix layout on a variable declaration", "layout", ""); if (qualifier.hasPacking()) error(loc, "cannot specify packing on a variable declaration", "layout", ""); // "The offset qualifier can only be used on block members of blocks..." if (qualifier.hasOffset() && !type.isAtomic()) error(loc, "cannot specify on a variable declaration", "offset", ""); // "The align qualifier can only be used on blocks or block members..." if (qualifier.hasAlign()) error(loc, "cannot specify on a variable declaration", "align", ""); if (qualifier.isPushConstant()) error(loc, "can only specify on a uniform block", "push_constant", ""); if (qualifier.isShaderRecord()) error(loc, "can only specify on a buffer block", "shaderRecordNV", ""); if (qualifier.hasLocation() && type.isAtomic()) error(loc, "cannot specify on atomic counter", "location", ""); } break; default: // these were already filtered by layoutTypeCheck() (or its callees) break; } } // Check that an in/out variable or block doesn't contain a boolean member // Don't enforce if redeclaring a builtin, which are allowed to contain bool if (!parsingBuiltins && type.containsBasicType(EbtBool) && !builtInName(symbol.getName())) { switch(qualifier.storage) { case EvqVaryingIn: case EvqVaryingOut: { const char *reason = type.getBasicType() == EbtBool ? "cannot be bool" : "cannot contain bool"; error(loc, reason, GetStorageQualifierString(qualifier.storage), ""); break; } default: break; } } } // "For some blocks declared as arrays, the location can only be applied at the block level: // When a block is declared as an array where additional locations are needed for each member // for each block array element, it is a compile-time error to specify locations on the block // members. That is, when locations would be under specified by applying them on block members, // they are not allowed on block members. For arrayed interfaces (those generally having an // extra level of arrayness due to interface expansion), the outer array is stripped before // applying this rule." void TParseContext::layoutMemberLocationArrayCheck(const TSourceLoc& loc, bool memberWithLocation, TArraySizes* arraySizes) { if (memberWithLocation && arraySizes != nullptr) { if (arraySizes->getNumDims() > (currentBlockQualifier.isArrayedIo(language) ? 1 : 0)) error(loc, "cannot use in a block array where new locations are needed for each block element", "location", ""); } } // Do layout error checking with respect to a type. void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) { const TQualifier& qualifier = type.getQualifier(); // first, intra-layout qualifier-only error checking layoutQualifierCheck(loc, qualifier); // now, error checking combining type and qualifier if (qualifier.hasAnyLocation()) { if (qualifier.hasLocation()) { if (qualifier.storage == EvqVaryingOut && language == EShLangFragment) { if (qualifier.layoutLocation >= (unsigned int)resources.maxDrawBuffers) error(loc, "too large for fragment output", "location", ""); } } if (qualifier.hasComponent()) { // "It is a compile-time error if this sequence of components gets larger than 3." if (qualifier.layoutComponent + type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1) > 4) error(loc, "type overflows the available 4 components", "component", ""); // "It is a compile-time error to apply the component qualifier to a matrix, a structure, a block, or an array containing any of these." if (type.isMatrix() || type.getBasicType() == EbtBlock || type.getBasicType() == EbtStruct) error(loc, "cannot apply to a matrix, structure, or block", "component", ""); // " It is a compile-time error to use component 1 or 3 as the beginning of a double or dvec2." if (type.getBasicType() == EbtDouble) if (qualifier.layoutComponent & 1) error(loc, "doubles cannot start on an odd-numbered component", "component", ""); } switch (qualifier.storage) { case EvqVaryingIn: case EvqVaryingOut: if (type.getBasicType() == EbtBlock) profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, "location qualifier on in/out block"); if (type.getQualifier().isTaskMemory()) error(loc, "cannot apply to taskNV in/out blocks", "location", ""); break; case EvqUniform: case EvqBuffer: if (type.getBasicType() == EbtBlock) error(loc, "cannot apply to uniform or buffer block", "location", ""); else if (type.getBasicType() == EbtSampler && type.getSampler().isAttachmentEXT()) error(loc, "only applies to", "location", "%s with storage tileImageEXT", type.getBasicTypeString().c_str()); break; case EvqtaskPayloadSharedEXT: error(loc, "cannot apply to taskPayloadSharedEXT", "location", ""); break; case EvqPayload: case EvqPayloadIn: case EvqHitAttr: case EvqCallableData: case EvqCallableDataIn: case EvqHitObjectAttrNV: case EvqSpirvStorageClass: break; case EvqTileImageEXT: break; default: error(loc, "can only apply to uniform, buffer, in, or out storage qualifiers", "location", ""); break; } bool typeCollision; int repeated = intermediate.addUsedLocation(qualifier, type, typeCollision); if (repeated >= 0 && ! typeCollision) error(loc, "overlapping use of location", "location", "%d", repeated); // When location aliasing, the aliases sharing the location must have the same underlying numerical type and bit width( // floating - point or integer, 32 - bit versus 64 - bit,etc.) if (typeCollision && (qualifier.isPipeInput() || qualifier.isPipeOutput() || qualifier.storage == EvqTileImageEXT)) error(loc, "the aliases sharing the location", "location", "%d must be the same basic type and interpolation qualification", repeated); } if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) { 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 // containing a double or 64-bit integer, the offset must also be a multiple of 8..." if ((type.containsBasicType(EbtDouble) || type.containsBasicType(EbtInt64) || type.containsBasicType(EbtUint64)) && ! IsMultipleOfPow2(qualifier.layoutXfbOffset, 8)) error(loc, "type contains double or 64-bit integer; xfb_offset must be a multiple of 8", "xfb_offset", ""); else if ((type.containsBasicType(EbtBool) || type.containsBasicType(EbtFloat) || type.containsBasicType(EbtInt) || type.containsBasicType(EbtUint)) && ! IsMultipleOfPow2(qualifier.layoutXfbOffset, 4)) error(loc, "must be a multiple of size of first component", "xfb_offset", ""); // ..., if applied to an aggregate containing a half float or 16-bit integer, the offset must also be a multiple of 2..." else if ((type.contains16BitFloat() || type.containsBasicType(EbtInt16) || type.containsBasicType(EbtUint16)) && !IsMultipleOfPow2(qualifier.layoutXfbOffset, 2)) error(loc, "type contains half float or 16-bit integer; xfb_offset must be a multiple of 2", "xfb_offset", ""); } if (qualifier.hasXfbStride() && qualifier.hasXfbBuffer()) { if (! intermediate.setXfbBufferStride(qualifier.layoutXfbBuffer, qualifier.layoutXfbStride)) error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer); } if (qualifier.hasBinding()) { // Binding checking, from the spec: // // "If the binding point for any uniform or shader storage block instance is less than zero, or greater than or // equal to the implementation-dependent maximum number of uniform buffer bindings, a compile-time // error will occur. When the binding identifier is used with a uniform or shader storage block instanced as // an array of size N, all elements of the array from binding through binding + N - 1 must be within this // range." // if (!type.isOpaque() && type.getBasicType() != EbtBlock && type.getBasicType() != EbtSpirvType) error(loc, "requires block, or sampler/image, or atomic-counter type", "binding", ""); if (type.getBasicType() == EbtSampler) { int lastBinding = qualifier.layoutBinding; if (type.isArray()) { if (spvVersion.vulkan == 0) { if (type.isSizedArray()) lastBinding += (type.getCumulativeArraySize() - 1); else { warn(loc, "assuming binding count of one for compile-time checking of binding numbers for unsized array", "[]", ""); } } } if (spvVersion.vulkan == 0 && lastBinding >= resources.maxCombinedTextureImageUnits) error(loc, "sampler binding not less than gl_MaxCombinedTextureImageUnits", "binding", type.isArray() ? "(using array)" : ""); } if (type.isAtomic() && !spvVersion.vulkanRelaxed) { if (qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) { error(loc, "atomic_uint binding is too large; see gl_MaxAtomicCounterBindings", "binding", ""); return; } } } else if (!intermediate.getAutoMapBindings()) { // some types require bindings // atomic_uint if (type.isAtomic()) error(loc, "layout(binding=X) is required", "atomic_uint", ""); // SPIR-V if (spvVersion.spv > 0) { if (qualifier.isUniformOrBuffer()) { if (type.getBasicType() == EbtBlock && !qualifier.isPushConstant() && !qualifier.isShaderRecord() && !qualifier.hasAttachment() && !qualifier.hasBufferReference()) error(loc, "uniform/buffer blocks require layout(binding=X)", "binding", ""); else if (spvVersion.vulkan > 0 && type.getBasicType() == EbtSampler && !type.getSampler().isAttachmentEXT()) error(loc, "sampler/texture/image requires layout(binding=X)", "binding", ""); } } } // some things can't have arrays of arrays if (type.isArrayOfArrays()) { if (spvVersion.vulkan > 0) { if (type.isOpaque() || (type.getQualifier().isUniformOrBuffer() && type.getBasicType() == EbtBlock)) warn(loc, "Generating SPIR-V array-of-arrays, but Vulkan only supports single array level for this resource", "[][]", ""); } } // "The offset qualifier can only be used on block members of blocks..." if (qualifier.hasOffset()) { if (type.getBasicType() == EbtBlock) error(loc, "only applies to block members, not blocks", "offset", ""); } // Image format if (qualifier.hasFormat()) { if (! type.isImage() && !intermediate.getBindlessImageMode()) error(loc, "only apply to images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); else { if (type.getSampler().type == EbtFloat && qualifier.getFormat() > ElfFloatGuard) error(loc, "does not apply to floating point images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); if (type.getSampler().type == EbtInt && (qualifier.getFormat() < ElfFloatGuard || qualifier.getFormat() > ElfIntGuard)) error(loc, "does not apply to signed integer images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); if (type.getSampler().type == EbtUint && qualifier.getFormat() < ElfIntGuard) error(loc, "does not apply to unsigned integer images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); if (isEsProfile()) { // "Except for image variables qualified with the format qualifiers r32f, r32i, and r32ui, image variables must // specify either memory qualifier readonly or the memory qualifier writeonly." if (! (qualifier.getFormat() == ElfR32f || qualifier.getFormat() == ElfR32i || qualifier.getFormat() == ElfR32ui)) { if (! qualifier.isReadOnly() && ! qualifier.isWriteOnly()) error(loc, "format requires readonly or writeonly memory qualifier", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); } } } } else if (type.isImage() && ! qualifier.isWriteOnly() && !intermediate.getBindlessImageMode()) { const char *explanation = "image variables not declared 'writeonly' and without a format layout qualifier"; requireProfile(loc, ECoreProfile | ECompatibilityProfile, explanation); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation); } if (qualifier.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 (type.getBasicType() == EbtReference) { if (qualifier.isPipeInput()) error(loc, "cannot contain any structs with buffer_reference.", "in", "If you want to interface shader stages with a buffer_reference cast to a uint64 or uvec2 instead."); if (qualifier.isPipeOutput()) error(loc, "cannot contain any structs with buffer_reference.", "out", "If you want to interface shader stages with a buffer_reference cast to a uint64 or uvec2 instead."); } if (qualifier.hasBufferReference() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "buffer_reference", ""); if (qualifier.isShaderRecord() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "shaderRecordNV", ""); // input attachment if (type.isSubpass()) { if (extensionTurnedOn(E_GL_EXT_shader_tile_image)) error(loc, "cannot be used with GL_EXT_shader_tile_image enabled", type.getSampler().getString().c_str(), ""); if (! qualifier.hasAttachment()) error(loc, "requires an input_attachment_index layout qualifier", "subpass", ""); } else { if (qualifier.hasAttachment()) error(loc, "can only be used with a subpass", "input_attachment_index", ""); } // specialization-constant id if (qualifier.hasSpecConstantId()) { if (type.getQualifier().storage != EvqConst) error(loc, "can only be applied to 'const'-qualified scalar", "constant_id", ""); if (! type.isScalar()) error(loc, "can only be applied to a scalar", "constant_id", ""); switch (type.getBasicType()) { case EbtInt8: case EbtUint8: case EbtInt16: case EbtUint16: case EbtInt: case EbtUint: case EbtInt64: case EbtUint64: case EbtBool: case EbtFloat: case EbtDouble: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: break; default: error(loc, "cannot be applied to this type", "constant_id", ""); break; } } } static bool storageCanHaveLayoutInBlock(const enum TStorageQualifier storage) { switch (storage) { case EvqUniform: case EvqBuffer: case EvqShared: return true; default: return false; } } // Do layout error checking that can be done within a layout qualifier proper, not needing to know // if there are blocks, atomic counters, variables, etc. void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier) { if (qualifier.storage == EvqShared && qualifier.hasLayout()) { if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) { error(loc, "shared block requires at least SPIR-V 1.4", "shared block", ""); } profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block"); } // "It is a compile-time error to use *component* without also specifying the location qualifier (order does not matter)." if (qualifier.hasComponent() && ! qualifier.hasLocation()) error(loc, "must specify 'location' to use 'component'", "component", ""); if (qualifier.hasAnyLocation()) { // "As with input layout qualifiers, all shaders except compute shaders // allow *location* layout qualifiers on output variable declarations, // output block declarations, and output block member declarations." switch (qualifier.storage) { case EvqVaryingIn: { const char* feature = "location qualifier on input"; if (isEsProfile() && version < 310) requireStage(loc, EShLangVertex, feature); else requireStage(loc, (EShLanguageMask)~EShLangComputeMask, feature); if (language == EShLangVertex) { const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; profileRequires(loc, ~EEsProfile, 330, 2, exts, feature); profileRequires(loc, EEsProfile, 300, nullptr, feature); } else { profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); profileRequires(loc, EEsProfile, 310, nullptr, feature); } break; } case EvqVaryingOut: { const char* feature = "location qualifier on output"; if (isEsProfile() && version < 310) requireStage(loc, EShLangFragment, feature); else requireStage(loc, (EShLanguageMask)~EShLangComputeMask, feature); if (language == EShLangFragment) { const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; profileRequires(loc, ~EEsProfile, 330, 2, exts, feature); profileRequires(loc, EEsProfile, 300, nullptr, feature); } else { profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); profileRequires(loc, EEsProfile, 310, nullptr, feature); } break; } case EvqUniform: case EvqBuffer: { const char* feature = "location qualifier on uniform or buffer"; requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile | ENoProfile, feature); profileRequires(loc, ~EEsProfile, 330, E_GL_ARB_explicit_attrib_location, feature); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_explicit_uniform_location, feature); profileRequires(loc, EEsProfile, 310, nullptr, feature); break; } default: break; } if (qualifier.hasIndex()) { if (qualifier.storage != EvqVaryingOut) error(loc, "can only be used on an output", "index", ""); if (! qualifier.hasLocation()) error(loc, "can only be used with an explicit location", "index", ""); } } if (qualifier.hasBinding()) { if (! qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory() && !qualifier.isTileAttachmentQCOM()) error(loc, "requires uniform or buffer or tile image storage qualifier", "binding", ""); } if (qualifier.hasStream()) { if (!qualifier.isPipeOutput()) error(loc, "can only be used on an output", "stream", ""); } if (qualifier.hasXfb()) { if (!qualifier.isPipeOutput()) error(loc, "can only be used on an output", "xfb layout qualifier", ""); } if (qualifier.hasUniformLayout()) { if (!storageCanHaveLayoutInBlock(qualifier.storage) && !qualifier.isTaskMemory()) { if (qualifier.hasMatrix() || qualifier.hasPacking()) error(loc, "matrix or packing qualifiers can only be used on a uniform or buffer", "layout", ""); if (qualifier.hasOffset() || qualifier.hasAlign()) error(loc, "offset/align can only be used on a uniform or buffer", "layout", ""); } } if (qualifier.isPushConstant()) { if (qualifier.storage != EvqUniform) error(loc, "can only be used with a uniform", "push_constant", ""); if (qualifier.hasSet()) error(loc, "cannot be used with push_constant", "set", ""); if (qualifier.hasBinding()) error(loc, "cannot be used with push_constant", "binding", ""); } if (qualifier.hasBufferReference()) { if (qualifier.storage != EvqBuffer) error(loc, "can only be used with buffer", "buffer_reference", ""); } if (qualifier.isShaderRecord()) { if (qualifier.storage != EvqBuffer) error(loc, "can only be used with a buffer", "shaderRecordNV", ""); if (qualifier.hasBinding()) error(loc, "cannot be used with shaderRecordNV", "binding", ""); if (qualifier.hasSet()) error(loc, "cannot be used with shaderRecordNV", "set", ""); } if (qualifier.storage == EvqTileImageEXT) { if (qualifier.hasSet()) error(loc, "cannot be used with tileImageEXT", "set", ""); if (!qualifier.hasLocation()) error(loc, "can only be used with an explicit location", "tileImageEXT", ""); } if (qualifier.storage == EvqHitAttr && qualifier.hasLayout()) { error(loc, "cannot apply layout qualifiers to hitAttributeNV variable", "hitAttributeNV", ""); } } // For places that can't have shader-level layout qualifiers void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQualifiers& shaderQualifiers) { const char* message = "can only apply to a standalone qualifier"; if (shaderQualifiers.geometry != ElgNone) error(loc, message, TQualifier::getGeometryString(shaderQualifiers.geometry), ""); if (shaderQualifiers.spacing != EvsNone) error(loc, message, TQualifier::getVertexSpacingString(shaderQualifiers.spacing), ""); if (shaderQualifiers.order != EvoNone) error(loc, message, TQualifier::getVertexOrderString(shaderQualifiers.order), ""); if (shaderQualifiers.pointMode) error(loc, message, "point_mode", ""); if (shaderQualifiers.invocations != TQualifier::layoutNotSet) error(loc, message, "invocations", ""); for (int i = 0; i < 3; ++i) { if (shaderQualifiers.localSize[i] > 1) error(loc, message, "local_size", ""); if (shaderQualifiers.localSizeSpecId[i] != TQualifier::layoutNotSet) error(loc, message, "local_size id", ""); } if (shaderQualifiers.vertices != TQualifier::layoutNotSet) { if (language == EShLangGeometry || language == EShLangMesh) error(loc, message, "max_vertices", ""); else if (language == EShLangTessControl) error(loc, message, "vertices", ""); else assert(0); } if (shaderQualifiers.earlyFragmentTests) error(loc, message, "early_fragment_tests", ""); if (shaderQualifiers.postDepthCoverage) error(loc, message, "post_depth_coverage", ""); if (shaderQualifiers.nonCoherentColorAttachmentReadEXT) error(loc, message, "non_coherent_color_attachment_readEXT", ""); if (shaderQualifiers.nonCoherentDepthAttachmentReadEXT) error(loc, message, "non_coherent_depth_attachment_readEXT", ""); if (shaderQualifiers.nonCoherentStencilAttachmentReadEXT) error(loc, message, "non_coherent_stencil_attachment_readEXT", ""); if (shaderQualifiers.primitives != TQualifier::layoutNotSet) { if (language == EShLangMesh) error(loc, message, "max_primitives", ""); else assert(0); } if (shaderQualifiers.hasBlendEquation()) error(loc, message, "blend equation", ""); if (shaderQualifiers.numViews != TQualifier::layoutNotSet) error(loc, message, "num_views", ""); if (shaderQualifiers.interlockOrdering != EioNone) error(loc, message, TQualifier::getInterlockOrderingString(shaderQualifiers.interlockOrdering), ""); if (shaderQualifiers.layoutPrimitiveCulling) error(loc, "can only be applied as standalone", "primitive_culling", ""); if (shaderQualifiers.layoutNonCoherentTileAttachmentReadQCOM) error(loc, message, "non_coherent_attachment_readQCOM", ""); if (shaderQualifiers.layoutTileShadingRateQCOM[0] >= 1) error(loc, message, "shading_rate_xQCOM", ""); if (shaderQualifiers.layoutTileShadingRateQCOM[1] >= 1) error(loc, message, "shading_rate_yQCOM", ""); if (shaderQualifiers.layoutTileShadingRateQCOM[2] >= 1) error(loc, message, "shading_rate_zQCOM", ""); } // Correct and/or advance an object's offset layout qualifier. void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol) { const TQualifier& qualifier = symbol.getType().getQualifier(); if (symbol.getType().isAtomic()) { if (qualifier.hasBinding() && (int)qualifier.layoutBinding < resources.maxAtomicCounterBindings) { // Set the offset int offset; if (qualifier.hasOffset()) offset = qualifier.layoutOffset; else offset = atomicUintOffsets[qualifier.layoutBinding]; if (offset % 4 != 0) error(loc, "atomic counters offset should align based on 4:", "offset", "%d", offset); symbol.getWritableType().getQualifier().layoutOffset = offset; // Check for overlap int numOffsets = 4; if (symbol.getType().isArray()) { if (symbol.getType().isSizedArray() && !symbol.getType().getArraySizes()->isInnerUnsized()) numOffsets *= symbol.getType().getCumulativeArraySize(); else { // "It is a compile-time error to declare an unsized array of atomic_uint." error(loc, "array must be explicitly sized", "atomic_uint", ""); } } int repeated = intermediate.addUsedOffsets(qualifier.layoutBinding, offset, numOffsets); if (repeated >= 0) error(loc, "atomic counters sharing the same offset:", "offset", "%d", repeated); // Bump the default offset atomicUintOffsets[qualifier.layoutBinding] = offset + numOffsets; } } } // // Look up a function name in the symbol table, and make sure it is a function. // // Return the function symbol if found, otherwise nullptr. // const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn) { if (symbolTable.isFunctionNameVariable(call.getName())) { error(loc, "can't use function syntax on variable", call.getName().c_str(), ""); return nullptr; } const TFunction* function = nullptr; // debugPrintfEXT has var args and is in the symbol table as "debugPrintfEXT()", // mangled to "debugPrintfEXT(" if (call.getName() == "debugPrintfEXT") { TSymbol* symbol = symbolTable.find("debugPrintfEXT(", &builtIn); if (symbol) return symbol->getAsFunction(); } // coopMatPerElementNV is variadic. There is some function signature error // checking in handleCoopMat2FunctionCall. if (call.getName() == "coopMatPerElementNV") { TSymbol* symbol = symbolTable.find("coopMatPerElementNV(", &builtIn); if (symbol) return symbol->getAsFunction(); } if (call.getName() == "saturatedConvertEXT") { TSymbol* symbol = symbolTable.find("saturatedConvertEXT(", &builtIn); if (symbol) return symbol->getAsFunction(); } bool explicitTypesEnabled = extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int8) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int32) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int64) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64); if (isEsProfile()) function = (explicitTypesEnabled && version >= 310) ? findFunctionExplicitTypes(loc, call, builtIn) : ((extensionTurnedOn(E_GL_EXT_shader_implicit_conversions) && version >= 310) ? findFunction120(loc, call, builtIn) : findFunctionExact(loc, call, builtIn)); else if (version < 120) function = findFunctionExact(loc, call, builtIn); else if (version < 400) { bool needfindFunction400 = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) || extensionTurnedOn(E_GL_ARB_gpu_shader5) || extensionTurnedOn(E_GL_NV_gpu_shader5); function = needfindFunction400 ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn); } else if (explicitTypesEnabled) function = findFunctionExplicitTypes(loc, call, builtIn); else function = findFunction400(loc, call, builtIn); return function; } // Function finding algorithm for ES and desktop 110. const TFunction* TParseContext::findFunctionExact(const TSourceLoc& loc, const TFunction& call, bool& builtIn) { TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn); if (symbol == nullptr) { error(loc, "no matching overloaded function found", call.getName().c_str(), ""); return nullptr; } return symbol->getAsFunction(); } // Function finding algorithm for desktop versions 120 through 330. const TFunction* TParseContext::findFunction120(const TSourceLoc& loc, const TFunction& call, bool& builtIn) { // first, look for an exact match TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn); if (symbol) return symbol->getAsFunction(); // exact match not found, look through a list of overloaded functions of the same name // "If no exact match is found, then [implicit conversions] will be applied to find a match. Mismatched types // on input parameters (in or inout or default) must have a conversion from the calling argument type to the // formal parameter type. Mismatched types on output parameters (out or inout) must have a conversion // from the formal parameter type to the calling argument type. When argument conversions are used to find // a match, it is a semantic error if there are multiple ways to apply these conversions to make the call match // more than one function." const TFunction* candidate = nullptr; TVector candidateList; symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); for (auto it = candidateList.begin(); it != candidateList.end(); ++it) { const TFunction& function = *(*it); // to even be a potential match, number of arguments has to match if (call.getParamCount() != function.getParamCount()) continue; bool possibleMatch = true; for (int i = 0; i < function.getParamCount(); ++i) { // same types is easy if (*function[i].type == *call[i].type) continue; // We have a mismatch in type, see if it is implicitly convertible if (function[i].type->isArray() || call[i].type->isArray() || ! function[i].type->sameElementShape(*call[i].type)) possibleMatch = false; else { // do direction-specific checks for conversion of basic type if (function[i].type->getQualifier().isParamInput()) { if (! intermediate.canImplicitlyPromote(call[i].type->getBasicType(), function[i].type->getBasicType())) possibleMatch = false; } if (function[i].type->getQualifier().isParamOutput()) { if (! intermediate.canImplicitlyPromote(function[i].type->getBasicType(), call[i].type->getBasicType())) possibleMatch = false; } } if (! possibleMatch) break; } if (possibleMatch) { if (candidate) { // our second match, meaning ambiguity error(loc, "ambiguous function signature match: multiple signatures match under implicit type conversion", call.getName().c_str(), ""); } else candidate = &function; } } if (candidate == nullptr) error(loc, "no matching overloaded function found", call.getName().c_str(), ""); return candidate; } // Function finding algorithm for desktop version 400 and above. // // "When function calls are resolved, an exact type match for all the arguments // is sought. If an exact match is found, all other functions are ignored, and // the exact match is used. If no exact match is found, then the implicit // conversions in section 4.1.10 Implicit Conversions will be applied to find // a match. Mismatched types on input parameters (in or inout or default) must // have a conversion from the calling argument type to the formal parameter type. // Mismatched types on output parameters (out or inout) must have a conversion // from the formal parameter type to the calling argument type. // // "If implicit conversions can be used to find more than one matching function, // a single best-matching function is sought. To determine a best match, the // conversions between calling argument and formal parameter types are compared // for each function argument and pair of matching functions. After these // comparisons are performed, each pair of matching functions are compared. // A function declaration A is considered a better match than function // declaration B if // // * for at least one function argument, the conversion for that argument in A // is better than the corresponding conversion in B; and // * there is no function argument for which the conversion in B is better than // the corresponding conversion in A. // // "If a single function declaration is considered a better match than every // other matching function declaration, it will be used. Otherwise, a // compile-time semantic error for an ambiguous overloaded function call occurs. // // "To determine whether the conversion for a single argument in one match is // better than that for another match, the following rules are applied, in order: // // 1. An exact match is better than a match involving any implicit conversion. // 2. A match involving an implicit conversion from float to double is better // than a match involving any other implicit conversion. // 3. A match involving an implicit conversion from either int or uint to float // is better than a match involving an implicit conversion from either int // or uint to double. // // "If none of the rules above apply to a particular pair of conversions, neither // conversion is considered better than the other." // const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFunction& call, bool& builtIn) { // first, look for an exact match TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn); if (symbol) return symbol->getAsFunction(); // no exact match, use the generic selector, parameterized by the GLSL rules // create list of candidates to send TVector candidateList; symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); // can 'from' convert to 'to'? const auto convertible = [this,builtIn](const TType& from, const TType& to, TOperator op, int param) -> bool { if (from == to) return true; if (from.coopMatParameterOK(to)) return true; if (from.tensorParameterOK(to)) return true; if (from.getBasicType() == EbtFunction && to.getBasicType() == EbtFunction) return true; if (from.coopVecParameterOK(to)) return true; // Allow a sized array to be passed through an unsized array parameter, for coopMatLoad/Store functions if (builtIn && from.isArray() && to.isUnsizedArray()) { TType fromElementType(from, 0); TType toElementType(to, 0); // Load/store tensor functions allow any element type for the pointer if ((op == EOpCooperativeMatrixLoadTensorNV || op == EOpCooperativeMatrixStoreTensorNV) && param == 1) { return true; } if (fromElementType == toElementType) return true; } if (from.isArray() || to.isArray() || ! from.sameElementShape(to)) return false; if (from.isCoopMat() && to.isCoopMat()) return from.sameCoopMatBaseType(to); if (from.isCoopVecNV() && to.isCoopVecNV()) return from.sameCoopVecBaseType(to); if (from.isTensorARM() && to.isTensorARM()) return from.sameTensorBaseTypeARM(to); return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType()); }; // Is 'to2' a better conversion than 'to1'? // Ties should not be considered as better. // Assumes 'convertible' already said true. const auto better = [&](const TType& from, const TType& to1, const TType& to2) -> bool { // 1. exact match if (from == to2) return from != to1; if (from == to1) return false; if (extensionTurnedOn(E_GL_NV_gpu_shader5)) { // This map refers to the conversion table mentioned under the // section "Modify Section 6.1, Function Definitions, p. 63" in NV_gpu_shader5 spec const static std::map> conversionTable = { {EbtInt8, {EbtInt, EbtInt64}}, {EbtInt16, {EbtInt, EbtInt64}}, {EbtInt, {EbtInt64}}, {EbtUint8, {EbtUint, EbtUint64}}, {EbtUint16, {EbtUint, EbtUint64}}, {EbtUint, {EbtUint64}}, }; auto source = conversionTable.find(from.getBasicType()); if (source != conversionTable.end()) { for (auto destination : source->second) { if (to2.getBasicType() == destination && to1.getBasicType() != destination) // to2 is better then to1 return true; else if (to1.getBasicType() == destination && to2.getBasicType() != destination) // This means to1 is better then to2 return false; } } } // 2. float -> double is better if (from.getBasicType() == EbtFloat) { if (to2.getBasicType() == EbtDouble && to1.getBasicType() != EbtDouble) return true; } // 3. -> float is better than -> double return to2.getBasicType() == EbtFloat && to1.getBasicType() == EbtDouble; }; // for ambiguity reporting bool tie = false; // send to the generic selector const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie); if (bestMatch == nullptr) error(loc, "no matching overloaded function found", call.getName().c_str(), ""); else if (tie) error(loc, "ambiguous best function under implicit type conversion", call.getName().c_str(), ""); return bestMatch; } // "To determine whether the conversion for a single argument in one match // is better than that for another match, the conversion is assigned of the // three ranks ordered from best to worst: // 1. Exact match: no conversion. // 2. Promotion: integral or floating-point promotion. // 3. Conversion: integral conversion, floating-point conversion, // floating-integral conversion. // A conversion C1 is better than a conversion C2 if the rank of C1 is // better than the rank of C2." const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc, const TFunction& call, bool& builtIn) { // first, look for an exact match TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn); if (symbol) return symbol->getAsFunction(); // no exact match, use the generic selector, parameterized by the GLSL rules // create list of candidates to send TVector candidateList; symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); // can 'from' convert to 'to'? const auto convertible = [this,builtIn](const TType& from, const TType& to, TOperator op, int param) -> bool { if (from == to) return true; if (from.coopMatParameterOK(to)) return true; if (from.tensorParameterOK(to)) return true; if (from.getBasicType() == EbtFunction && to.getBasicType() == EbtFunction) return true; if (from.coopVecParameterOK(to)) return true; // Allow a sized array to be passed through an unsized array parameter, for coopMatLoad/Store functions if (builtIn && from.isArray() && to.isUnsizedArray()) { TType fromElementType(from, 0); TType toElementType(to, 0); // Load/store tensor functions allow any element type for the pointer if ((op == EOpCooperativeMatrixLoadTensorNV || op == EOpCooperativeMatrixStoreTensorNV) && param == 1) { return true; } if (fromElementType == toElementType) return true; } if (from.isArray() || to.isArray() || ! from.sameElementShape(to)) return false; if (from.isCoopMat() && to.isCoopMat()) return from.sameCoopMatBaseType(to); if (from.isCoopVecNV() && to.isCoopVecNV()) return from.sameCoopVecBaseType(to); if (from.isTensorARM() && to.isTensorARM()) return from.sameTensorBaseTypeARM(to); return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType()); }; // Is 'to2' a better conversion than 'to1'? // Ties should not be considered as better. // Assumes 'convertible' already said true. const auto better = [this](const TType& from, const TType& to1, const TType& to2) -> bool { // 1. exact match if (from == to2) return from != to1; if (from == to1) return false; // 2. Promotion (integral, floating-point) is better TBasicType from_type = from.getBasicType(); TBasicType to1_type = to1.getBasicType(); TBasicType to2_type = to2.getBasicType(); bool isPromotion1 = (intermediate.isIntegralPromotion(from_type, to1_type) || intermediate.isFPPromotion(from_type, to1_type)); bool isPromotion2 = (intermediate.isIntegralPromotion(from_type, to2_type) || intermediate.isFPPromotion(from_type, to2_type)); if (isPromotion2) return !isPromotion1; if(isPromotion1) return false; // 3. Conversion (integral, floating-point , floating-integral) bool isConversion1 = (intermediate.isIntegralConversion(from_type, to1_type) || intermediate.isFPConversion(from_type, to1_type) || intermediate.isFPIntegralConversion(from_type, to1_type)); bool isConversion2 = (intermediate.isIntegralConversion(from_type, to2_type) || intermediate.isFPConversion(from_type, to2_type) || intermediate.isFPIntegralConversion(from_type, to2_type)); return isConversion2 && !isConversion1; }; // for ambiguity reporting bool tie = false; // send to the generic selector const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie); if (bestMatch == nullptr) error(loc, "no matching overloaded function found", call.getName().c_str(), ""); else if (tie) error(loc, "ambiguous best function under implicit type conversion", call.getName().c_str(), ""); return bestMatch; } // // Adjust function calls that aren't declared in Vulkan to a // calls with equivalent effects // TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, TFunction* function, TIntermNode* arguments) { TIntermTyped* result = nullptr; if (function->getBuiltInOp() != EOpNull) { return nullptr; } if (function->getName() == "atomicCounterIncrement") { // change atomicCounterIncrement into an atomicAdd of 1 TString name("atomicAdd"); TType uintType(EbtUint); 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(TParameter().copyParam((*function)[i])); } TParameter tmpP = { nullptr, &uintType, {} }; realFunc.addParameter(TParameter().copyParam(tmpP)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true)); result = handleFunctionCall(loc, &realFunc, arguments); } else if (function->getName() == "atomicCounterDecrement") { // change atomicCounterDecrement into an atomicAdd with -1 // and subtract 1 from result, to return post-decrement value TString name("atomicAdd"); TType uintType(EbtUint); TFunction realFunc(&name, function->getType()); for (int i = 0; i < function->getParamCount(); ++i) { realFunc.addParameter(TParameter().copyParam((*function)[i])); } TParameter tmpP = { nullptr, &uintType, {} }; realFunc.addParameter(TParameter().copyParam(tmpP)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true)); result = handleFunctionCall(loc, &realFunc, arguments); // post decrement, so that it matches AtomicCounterDecrement semantics if (result) { result = handleBinaryMath(loc, "-", EOpSub, result, intermediate.addConstantUnion(1, loc, true)); } } else if (function->getName() == "atomicCounter") { // change atomicCounter into a direct read of the variable if (arguments && arguments->getAsTyped()) { result = arguments->getAsTyped(); } } return result; } // When a declaration includes a type, but not a variable name, it can be used // to establish defaults. void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType) { if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding()) { if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) { error(loc, "atomic_uint binding is too large", "binding", ""); return; } if (publicType.qualifier.hasOffset()) atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset; return; } if (publicType.arraySizes) { error(loc, "expect an array name", "", ""); } if (publicType.qualifier.hasLayout() && !publicType.qualifier.hasBufferReference()) warn(loc, "useless application of layout qualifier", "layout", ""); } void TParseContext::typeParametersCheck(const TSourceLoc& loc, const TPublicType& publicType) { if (parsingBuiltins) return; if (publicType.isCoopmatKHR()) { if (publicType.typeParameters == nullptr) { error(loc, "coopmat missing type parameters", "", ""); return; } switch (publicType.typeParameters->basicType) { case EbtFloat: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: case EbtInt: case EbtInt8: case EbtInt16: case EbtUint: case EbtUint8: case EbtUint16: case EbtSpirvType: break; default: error(loc, "coopmat invalid basic type", TType::getBasicString(publicType.typeParameters->basicType), ""); break; } if (publicType.typeParameters->arraySizes->getNumDims() != 4) { error(loc, "coopmat incorrect number of type parameters", "", ""); return; } int use = publicType.typeParameters->arraySizes->getDimSize(3); if (use < 0 || use > 2) { error(loc, "coopmat invalid matrix Use", "", ""); return; } } if (publicType.isTensorLayoutNV()) { if (publicType.typeParameters == nullptr) { error(loc, "tensorLayout missing type parameters", "", ""); return; } if (publicType.typeParameters->arraySizes->getNumDims() > 2) { error(loc, "tensorLayout incorrect number of type parameters", "", ""); return; } if (publicType.typeParameters && publicType.typeParameters->arraySizes->getNumDims() < 2) { while (publicType.typeParameters->arraySizes->getNumDims() < 2) { publicType.typeParameters->arraySizes->addInnerSize(0); } } } if (publicType.isTensorViewNV()) { if (publicType.typeParameters == nullptr) { error(loc, "tensorView missing type parameters", "", ""); return; } if (publicType.typeParameters->arraySizes->getNumDims() < 1 || publicType.typeParameters->arraySizes->getNumDims() > 7) { error(loc, "tensorView incorrect number of type parameters", "", ""); return; } if (publicType.typeParameters && publicType.typeParameters->arraySizes->getNumDims() < 7) { uint32_t numDims = publicType.typeParameters->arraySizes->getNumDims(); while (numDims < 7) { uint32_t dim = (numDims == 1) ? 0 : (numDims - 2); publicType.typeParameters->arraySizes->addInnerSize(dim); numDims++; } } } if (publicType.isTensorARM()) { if (publicType.typeParameters == nullptr) { error(loc, "tensor type is missing type parameters", "", ""); return; } if (publicType.typeParameters->arraySizes == nullptr) { error(loc, "tensor type is missing rank information", "", ""); return; } if (publicType.typeParameters->arraySizes->getNumDims() != 1) { error(loc, "tensor type requires exactly 1 rank specifier", "", ""); return; } if (publicType.typeParameters->arraySizes->getDimSize(0) < 1) { error(loc, "tensor rank must be greater than or equal to 1", "", ""); return; } } } bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType& publicType, TArraySizes*, TIntermTyped* initializer, TType& type) { vkRelaxedRemapUniformMembers(loc, publicType, type, identifier); if (parsingBuiltins || symbolTable.atBuiltInLevel() || !symbolTable.atGlobalLevel() || type.getQualifier().storage != EvqUniform || !(type.containsNonOpaque() || type.getBasicType() == EbtAtomicUint || (type.containsSampler() && type.isStruct()))) { return false; } if (type.getQualifier().hasLocation()) { warn(loc, "ignoring layout qualifier for uniform", identifier.c_str(), "location"); type.getQualifier().layoutLocation = TQualifier::layoutLocationEnd; } if (initializer) { warn(loc, "Ignoring initializer for uniform", identifier.c_str(), ""); initializer = nullptr; } if (type.isArray()) { // do array size checks here arraySizesCheck(loc, type.getQualifier(), type.getArraySizes(), initializer, false); if (arrayQualifierError(loc, type.getQualifier()) || arrayError(loc, type)) { error(loc, "array param error", identifier.c_str(), ""); } } // do some checking on the type as it was declared layoutTypeCheck(loc, type); int bufferBinding = TQualifier::layoutBindingEnd; TVariable* updatedBlock = nullptr; // Convert atomic_uint into members of a buffer block if (type.isAtomic()) { type.setBasicType(EbtUint); type.getQualifier().storage = EvqBuffer; type.getQualifier().volatil = true; type.getQualifier().coherent = true; // xxTODO: use logic from fixOffset() to apply explicit member offset bufferBinding = type.getQualifier().layoutBinding; type.getQualifier().layoutBinding = TQualifier::layoutBindingEnd; type.getQualifier().explicitOffset = false; growAtomicCounterBlock(bufferBinding, loc, type, identifier, nullptr); updatedBlock = atomicCounterBuffers[bufferBinding]; } if (!updatedBlock) { growGlobalUniformBlock(loc, type, identifier, nullptr); updatedBlock = globalUniformBlock; } // // don't assign explicit member offsets here // if any are assigned, need to be updated here and in the merge/link step // fixBlockUniformOffsets(updatedBlock->getWritableType().getQualifier(), *updatedBlock->getWritableType().getWritableStruct()); // checks on update buffer object layoutObjectCheck(loc, *updatedBlock); TSymbol* symbol = symbolTable.find(identifier); if (!symbol) { if (updatedBlock == globalUniformBlock) error(loc, "error adding uniform to default uniform block", identifier.c_str(), ""); else error(loc, "error adding atomic counter to atomic counter block", identifier.c_str(), ""); return false; } // merge qualifiers mergeObjectLayoutQualifiers(updatedBlock->getWritableType().getQualifier(), type.getQualifier(), true); return true; } template static void ForEachOpaque(const TType& type, const TString& path, Function callback) { auto recursion = [&callback](const TType& type, const TString& path, bool skipArray, auto& recursion) -> void { if (!skipArray && type.isArray()) { std::vector indices(type.getArraySizes()->getNumDims()); for (int flatIndex = 0; flatIndex < type.getArraySizes()->getCumulativeSize(); ++flatIndex) { TString subscriptPath = path; if (path != "") { for (size_t dimIndex = 0; dimIndex < indices.size(); ++dimIndex) { int index = indices[dimIndex]; subscriptPath.append("["); subscriptPath.append(String(index)); subscriptPath.append("]"); } } recursion(type, subscriptPath, true, recursion); for (size_t dimIndex = 0; dimIndex < indices.size(); ++dimIndex) { ++indices[dimIndex]; if (indices[dimIndex] < type.getArraySizes()->getDimSize(dimIndex)) break; else indices[dimIndex] = 0; } } } else if (type.isStruct() && type.containsOpaque()) { const TTypeList& types = *type.getStruct(); for (const TTypeLoc& typeLoc : types) { TString nextPath = path; if (path != "") { nextPath.append("."); nextPath.append(typeLoc.type->getFieldName()); } recursion(*(typeLoc.type), nextPath, false, recursion); } } else if (type.isOpaque()) { callback(type, path); } }; recursion(type, path, false, recursion); } void TParseContext::vkRelaxedRemapUniformMembers(const TSourceLoc& loc, const TPublicType& publicType, const TType& type, const TString& identifier) { if (!type.isStruct() || !type.containsOpaque()) return; ForEachOpaque(type, identifier, [&publicType, &loc, this](const TType& type, const TString& path) { TArraySizes arraySizes = {}; if (type.getArraySizes()) arraySizes = *type.getArraySizes(); TTypeParameters typeParameters = {}; if (type.getTypeParameters()) typeParameters = *type.getTypeParameters(); TPublicType memberType{}; memberType.basicType = type.getBasicType(); memberType.sampler = type.getSampler(); memberType.qualifier = type.getQualifier(); memberType.vectorSize = type.getVectorSize(); memberType.matrixCols = type.getMatrixCols(); memberType.matrixRows = type.getMatrixRows(); memberType.coopmatNV = type.isCoopMatNV(); memberType.coopmatKHR = type.isCoopMatKHR(); memberType.arraySizes = nullptr; memberType.userDef = nullptr; memberType.loc = loc; memberType.typeParameters = (type.getTypeParameters() ? &typeParameters : nullptr); memberType.spirvType = nullptr; memberType.qualifier.storage = publicType.qualifier.storage; memberType.shaderQualifiers = publicType.shaderQualifiers; TString& structMemberName = *NewPoolTString(path.c_str()); // A copy is required due to declareVariable() signature. declareVariable(loc, structMemberName, memberType, nullptr, nullptr); }); } void TParseContext::vkRelaxedRemapFunctionParameter(TFunction* function, TParameter& param, std::vector* newParams) { function->addParameter(param); if (!param.type->isStruct() || !param.type->containsOpaque()) return; TString fieldName = param.name ? *param.name : param.type->hasFieldName() ? param.type->getFieldName() : ""; ForEachOpaque(*param.type, fieldName, [function, param, newParams](const TType& type, const TString& path) { TString* memberName = path != "" ? NewPoolTString(path.c_str()) : nullptr; TType* memberType = new TType(); memberType->shallowCopy(type); memberType->getQualifier().storage = param.type->getQualifier().storage; memberType->clearArraySizes(); TParameter memberParam = {}; memberParam.name = memberName; memberParam.type = memberType; memberParam.defaultValue = nullptr; function->addParameter(memberParam); if (newParams) newParams->push_back(function->getParamCount()-1); }); } // // Generates a valid GLSL dereferencing string for the input TIntermNode // struct AccessChainTraverser : public TIntermTraverser { AccessChainTraverser() : TIntermTraverser(false, false, true) {} TString path = ""; TStorageQualifier topLevelStorageQualifier = TStorageQualifier::EvqLast; bool visitBinary(TVisit, TIntermBinary* binary) override { if (binary->getOp() == EOpIndexDirectStruct) { const TTypeList& members = *binary->getLeft()->getType().getStruct(); const TTypeLoc& member = members[binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst()]; TString memberName = member.type->getFieldName(); if (path != "") path.append("."); path.append(memberName); } if (binary->getOp() == EOpIndexDirect) { const TConstUnionArray& indices = binary->getRight()->getAsConstantUnion()->getConstArray(); for (int index = 0; index < indices.size(); ++index) { path.append("["); path.append(String(indices[index].getIConst())); path.append("]"); } } return true; } void visitSymbol(TIntermSymbol* symbol) override { if (symbol->getType().isOpaque()) topLevelStorageQualifier = symbol->getQualifier().storage; if (!IsAnonymous(symbol->getName())) path.append(symbol->getName()); } }; TIntermNode* TParseContext::vkRelaxedRemapFunctionArgument(const TSourceLoc& loc, TFunction* function, TIntermTyped* intermTyped) { AccessChainTraverser accessChainTraverser{}; intermTyped->traverse(&accessChainTraverser); if (accessChainTraverser.topLevelStorageQualifier == TStorageQualifier::EvqUniform) { TParameter param = { 0, new TType, {} }; param.type->shallowCopy(intermTyped->getType()); function->addParameter(param); return intermTyped; } TParameter param = { NewPoolTString(accessChainTraverser.path.c_str()), new TType, {} }; param.type->shallowCopy(intermTyped->getType()); std::vector newParams = {}; vkRelaxedRemapFunctionParameter(function, param, &newParams); if (intermTyped->getType().isOpaque()) { TIntermNode* remappedArgument = intermTyped; { TIntermSymbol* intermSymbol = nullptr; TSymbol* symbol = symbolTable.find(*param.name); if (symbol && symbol->getAsVariable()) intermSymbol = intermediate.addSymbol(*symbol->getAsVariable(), loc); else { TVariable* variable = new TVariable(param.name, *param.type); intermSymbol = intermediate.addSymbol(*variable, loc); } remappedArgument = intermSymbol; } return remappedArgument; } else if (!(intermTyped->isStruct() && intermTyped->getType().containsOpaque())) return intermTyped; else { TIntermNode* remappedArgument = intermTyped; { TSymbol* symbol = symbolTable.find(*param.name); if (symbol && symbol->getAsVariable()) remappedArgument = intermediate.addSymbol(*symbol->getAsVariable(), loc); } if (!newParams.empty()) remappedArgument = intermediate.makeAggregate(remappedArgument, loc); for (int paramIndex : newParams) { TParameter& newParam = function->operator[](paramIndex); TIntermSymbol* intermSymbol = nullptr; TSymbol* symbol = symbolTable.find(*newParam.name); if (symbol && symbol->getAsVariable()) intermSymbol = intermediate.addSymbol(*symbol->getAsVariable(), loc); else { TVariable* variable = new TVariable(newParam.name, *newParam.type); intermSymbol = intermediate.addSymbol(*variable, loc); } remappedArgument = intermediate.growAggregate(remappedArgument, intermSymbol); } return remappedArgument; } } TIntermTyped* TParseContext::vkRelaxedRemapDotDereference(const TSourceLoc&, TIntermTyped& base, const TType& member, const TString& identifier) { if (!member.isOpaque()) return &base; AccessChainTraverser traverser{}; base.traverse(&traverser); if (!traverser.path.empty()) traverser.path.append("."); traverser.path.append(identifier); const TSymbol* symbol = symbolTable.find(traverser.path); if (!symbol) return &base; TIntermTyped* result = intermediate.addSymbol(*symbol->getAsVariable()); result->setType(symbol->getType()); return result; } // // Do everything necessary to handle a variable (non-block) declaration. // Either redeclaring a variable, or making a new one, updating the symbol // table, and all error checking. // // Returns a subtree node that computes an initializer, if needed. // Returns nullptr if there is no code to execute for initialization. // // 'publicType' is the type part of the declaration (to the left) // 'arraySizes' is the arrayness tagged on the identifier (to the right) // TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, const TPublicType& publicType, TArraySizes* arraySizes, TIntermTyped* initializer) { // Make a fresh type that combines the characteristics from the individual // identifier syntax and the declaration-type syntax. TType type(publicType); type.transferArraySizes(arraySizes); type.copyArrayInnerSizes(publicType.arraySizes); arrayOfArrayVersionCheck(loc, type.getArraySizes()); if (initializer) { if (type.getBasicType() == EbtRayQuery) { error(loc, "ray queries can only be initialized by using the rayQueryInitializeEXT intrinsic:", "=", identifier.c_str()); } else if (type.getBasicType() == EbtHitObjectNV) { error(loc, "hit objects cannot be initialized using initializers", "=", identifier.c_str()); } } if (type.isCoopMatKHR()) { intermediate.setUseVulkanMemoryModel(); intermediate.setUseStorageBuffer(); if (!publicType.typeParameters || !publicType.typeParameters->arraySizes || publicType.typeParameters->arraySizes->getNumDims() != 4) { error(loc, "unexpected number type parameters", identifier.c_str(), ""); } if (publicType.typeParameters) { if (!isTypeFloat(publicType.typeParameters->basicType) && !isTypeInt(publicType.typeParameters->basicType) && publicType.typeParameters->basicType != EbtSpirvType) { error(loc, "expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type", identifier.c_str(), ""); } } } else if (type.isCoopMatNV()) { intermediate.setUseVulkanMemoryModel(); intermediate.setUseStorageBuffer(); if (!publicType.typeParameters || !publicType.typeParameters->arraySizes || publicType.typeParameters->arraySizes->getNumDims() != 4) { error(loc, "expected four type parameters", identifier.c_str(), ""); } else { if (isTypeFloat(publicType.basicType) && publicType.typeParameters->arraySizes->getDimSize(0) != 16 && publicType.typeParameters->arraySizes->getDimSize(0) != 32 && publicType.typeParameters->arraySizes->getDimSize(0) != 64) { error(loc, "expected 16, 32, or 64 bits for first type parameter", identifier.c_str(), ""); } if (isTypeInt(publicType.basicType) && publicType.typeParameters->arraySizes->getDimSize(0) != 8 && publicType.typeParameters->arraySizes->getDimSize(0) != 16 && publicType.typeParameters->arraySizes->getDimSize(0) != 32) { error(loc, "expected 8, 16, or 32 bits for first type parameter", identifier.c_str(), ""); } } } else if (type.isTensorLayoutNV()) { if (!publicType.typeParameters || publicType.typeParameters->arraySizes->getNumDims() > 2) { error(loc, "expected 1-2 type parameters", identifier.c_str(), ""); } } else if (type.isTensorViewNV()) { if (!publicType.typeParameters || publicType.typeParameters->arraySizes->getNumDims() > 7) { error(loc, "expected 1-7 type parameters", identifier.c_str(), ""); } } else if (type.isCoopVecNV()) { intermediate.setUseVulkanMemoryModel(); intermediate.setUseStorageBuffer(); if (!publicType.typeParameters || !publicType.typeParameters->arraySizes || publicType.typeParameters->arraySizes->getNumDims() != 1) { error(loc, "expected two type parameters", identifier.c_str(), ""); } else if (publicType.typeParameters->arraySizes->getDimSize(0) <= 0) { error(loc, "expected positive number of components", identifier.c_str(), ""); } } else if (type.isTensorARM()) { intermediate.setUseStorageBuffer(); if (!publicType.typeParameters || publicType.typeParameters->arraySizes->getNumDims() != 1) { error(loc, "expected two type parameters", identifier.c_str(), ""); } if (publicType.typeParameters) { if (publicType.typeParameters->basicType != EbtBool && publicType.typeParameters->basicType != EbtInt8 && publicType.typeParameters->basicType != EbtInt16 && publicType.typeParameters->basicType != EbtInt && publicType.typeParameters->basicType != EbtInt64 && publicType.typeParameters->basicType != EbtUint8 && publicType.typeParameters->basicType != EbtUint16 && publicType.typeParameters->basicType != EbtUint && publicType.typeParameters->basicType != EbtUint64 && publicType.typeParameters->basicType != EbtFloat16 && publicType.typeParameters->basicType != EbtFloat && publicType.typeParameters->basicType != EbtDouble) { error(loc, "expected bool, integer or floating point type parameter", identifier.c_str(), ""); } } } else { if (publicType.typeParameters && publicType.typeParameters->arraySizes->getNumDims() != 0) { error(loc, "unexpected type parameters", identifier.c_str(), ""); } } if (voidErrorCheck(loc, identifier, type.getBasicType())) return nullptr; if (initializer) rValueErrorCheck(loc, "initializer", initializer); else nonInitConstCheck(loc, identifier, type); samplerCheck(loc, type, identifier, initializer); transparentOpaqueCheck(loc, type, identifier); atomicUintCheck(loc, type, identifier); accStructCheck(loc, type, identifier); hitObjectNVCheck(loc, type, identifier); checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false); if (type.getQualifier().storage == EvqConst && type.containsReference()) { error(loc, "variables with reference type can't have qualifier 'const'", "qualifier", ""); } if (type.getQualifier().storage != EvqUniform && type.getQualifier().storage != EvqBuffer) { if (type.contains16BitFloat()) requireFloat16Arithmetic(loc, "qualifier", "float16 types can only be in uniform block or buffer storage"); if (type.contains16BitInt()) requireInt16Arithmetic(loc, "qualifier", "(u)int16 types can only be in uniform block or buffer storage"); if (type.contains8BitInt()) requireInt8Arithmetic(loc, "qualifier", "(u)int8 types can only be in uniform block or buffer storage"); } if (type.getBasicType() == EbtBFloat16 && (type.getQualifier().storage == EvqVaryingIn || type.getQualifier().storage == EvqVaryingOut)) error(loc, "qualifier", "bfloat16 types not allowed as input/output", ""); if ((type.getBasicType() == EbtFloatE5M2 || type.getBasicType() == EbtFloatE4M3) && (type.getQualifier().storage == EvqVaryingIn || type.getQualifier().storage == EvqVaryingOut)) error(loc, "qualifier", "fp8 types not allowed as input/output", ""); 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", ""); if (profile == EEsProfile) { if (type.getQualifier().isPipeInput() && type.getBasicType() == EbtStruct) { if (type.getQualifier().isArrayedIo(language)) { TType perVertexType(type, 0); if (perVertexType.containsArray() && perVertexType.containsBuiltIn() == false) { error(loc, "A per vertex structure containing an array is not allowed as input in ES", type.getTypeName().c_str(), ""); } } else if (type.containsArray() && type.containsBuiltIn() == false) { error(loc, "A structure containing an array is not allowed as input in ES", type.getTypeName().c_str(), ""); } if (type.containsStructure()) error(loc, "A structure containing an struct is not allowed as input in ES", type.getTypeName().c_str(), ""); } } if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger)) error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", ""); if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.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); if (symbol == nullptr) reservedErrorCheck(loc, identifier); if (symbol == nullptr && spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { bool remapped = vkRelaxedRemapUniformVariable(loc, identifier, publicType, arraySizes, initializer, type); if (remapped) { return nullptr; } } inheritGlobalDefaults(type.getQualifier()); // Declare the variable if (type.isArray()) { // Check that implicit sizing is only where allowed. arraySizesCheck(loc, type.getQualifier(), type.getArraySizes(), initializer, false); if (! arrayQualifierError(loc, type.getQualifier()) && ! arrayError(loc, type)) declareArray(loc, identifier, type, symbol); if (initializer) { profileRequires(loc, ENoProfile, 120, E_GL_3DL_array_objects, "initializer"); profileRequires(loc, EEsProfile, 300, nullptr, "initializer"); } } else { // non-array case if (symbol == nullptr) symbol = declareNonArray(loc, identifier, type); else if (type != symbol->getType()) error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str()); } if (symbol == nullptr) return nullptr; // Deal with initializer TIntermNode* initNode = nullptr; if (symbol != nullptr && initializer) { TVariable* variable = symbol->getAsVariable(); if (! variable) { error(loc, "initializer requires a variable, not a member", identifier.c_str(), ""); return nullptr; } initNode = executeInitializer(loc, initializer, variable); } // look for errors in layout qualifier use layoutObjectCheck(loc, *symbol); // fix up fixOffset(loc, *symbol); return initNode; } // Pick up global defaults from the provide global defaults into dst. void TParseContext::inheritGlobalDefaults(TQualifier& dst) const { if (dst.storage == EvqVaryingOut) { if (! dst.hasStream() && language == EShLangGeometry) dst.layoutStream = globalOutputDefaults.layoutStream; if (! dst.hasXfbBuffer()) dst.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } } // // Make an internal-only variable whose name is for debug purposes only // and won't be searched for. Callers will only use the return value to use // the variable, not the name to look it up. It is okay if the name // is the same as other names; there won't be any conflict. // TVariable* TParseContext::makeInternalVariable(const char* name, const TType& type) const { TString* nameString = NewPoolTString(name); TVariable* variable = new TVariable(nameString, type); symbolTable.makeInternalVariable(*variable); return variable; } // // Declare a non-array variable, the main point being there is no redeclaration // for resizing allowed. // // Return the successfully declared variable. // TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, const TString& identifier, const TType& type) { // make a new variable TVariable* variable = new TVariable(&identifier, type); ioArrayCheck(loc, type, identifier); // add variable to symbol table if (symbolTable.insert(*variable)) { if (symbolTable.atGlobalLevel()) trackLinkage(*variable); return variable; } error(loc, "redefinition", variable->getName().c_str(), ""); return nullptr; } // // Handle all types of initializers from the grammar. // // Returning nullptr just means there is no code to execute to handle the // initializer, which will, for example, be the case for constant initializers. // TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyped* initializer, TVariable* variable) { // A null initializer is an aggregate that hasn't had an op assigned yet // (still EOpNull, no relation to nullInit), and has no children. bool nullInit = initializer->getAsAggregate() && initializer->getAsAggregate()->getOp() == EOpNull && initializer->getAsAggregate()->getSequence().size() == 0; // // Identifier must be of type constant, a global, or a temporary, and // starting at version 120, desktop allows uniforms to have initializers. // TStorageQualifier qualifier = variable->getType().getQualifier().storage; if (! (qualifier == EvqTemporary || qualifier == EvqGlobal || qualifier == EvqConst || (qualifier == EvqUniform && !isEsProfile() && version >= 120))) { if (qualifier == EvqShared) { // GL_EXT_null_initializer allows this for shared, if it's a null initializer if (nullInit) { const char* feature = "initialization with shared qualifier"; profileRequires(loc, EEsProfile, 0, E_GL_EXT_null_initializer, feature); profileRequires(loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, feature); } else { error(loc, "initializer can only be a null initializer ('{}')", "shared", ""); } } else { error(loc, " cannot initialize this type of qualifier ", variable->getType().getStorageQualifierString(), ""); return nullptr; } } if (nullInit) { // only some types can be null initialized if (variable->getType().containsUnsizedArray()) { error(loc, "null initializers can't size unsized arrays", "{}", ""); return nullptr; } if (variable->getType().containsOpaque()) { error(loc, "null initializers can't be used on opaque values", "{}", ""); return nullptr; } variable->getWritableType().getQualifier().setNullInit(); return nullptr; } arrayObjectCheck(loc, variable->getType(), "array initializer"); // // If the initializer was from braces { ... }, we convert the whole subtree to a // constructor-style subtree, allowing the rest of the code to operate // identically for both kinds of initializers. // // Type can't be deduced from the initializer list, so a skeletal type to // follow has to be passed in. Constness and specialization-constness // should be deduced bottom up, not dictated by the skeletal type. // TType skeletalType; skeletalType.shallowCopy(variable->getType()); skeletalType.getQualifier().makeTemporary(); initializer = convertInitializerList(loc, skeletalType, initializer); if (! initializer) { // error recovery; don't leave const without constant values if (qualifier == EvqConst) variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } // Fix outer arrayness if variable is unsized, getting size from the initializer if (initializer->getType().isSizedArray() && variable->getType().isUnsizedArray()) variable->getWritableType().changeOuterArraySize(initializer->getType().getOuterArraySize()); // Inner arrayness can also get set by an initializer if (initializer->getType().isArrayOfArrays() && variable->getType().isArrayOfArrays() && initializer->getType().getArraySizes()->getNumDims() == variable->getType().getArraySizes()->getNumDims()) { // adopt unsized sizes from the initializer's sizes for (int d = 1; d < variable->getType().getArraySizes()->getNumDims(); ++d) { if (variable->getType().getArraySizes()->getDimSize(d) == UnsizedArraySize) { variable->getWritableType().getArraySizes()->setDimSize(d, initializer->getType().getArraySizes()->getDimSize(d)); } } } // 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(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(intermediate.getEnhancedMsgs()).c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } // Const variables require a constant initializer, depending on version if (qualifier == EvqConst) { if (! initializer->getType().getQualifier().isConstant()) { const char* initFeature = "non-constant initializer"; requireProfile(loc, ~EEsProfile, initFeature); profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); variable->getWritableType().getQualifier().storage = EvqConstReadOnly; qualifier = EvqConstReadOnly; } } else { // Non-const global variables in ES need a const initializer. // // "In declarations of global variables with no storage qualifier or with a const // qualifier any initializer must be a constant expression." if (symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) { const char* initFeature = "non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)"; if (isEsProfile()) { if (relaxedErrors() && ! extensionTurnedOn(E_GL_EXT_shader_non_constant_global_initializers)) warn(loc, "not allowed in this version", initFeature, ""); else profileRequires(loc, EEsProfile, 0, E_GL_EXT_shader_non_constant_global_initializers, initFeature); } } } if (qualifier == EvqConst || qualifier == EvqUniform) { // Compile-time tagging of the variable with its constant value... initializer = intermediate.addConversion(EOpAssign, variable->getType(), initializer); if (! initializer || ! initializer->getType().getQualifier().isConstant() || variable->getType() != initializer->getType()) { error(loc, "non-matching or non-convertible constant type for const initializer", variable->getType().getStorageQualifierString(), ""); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } // We either have a folded constant in getAsConstantUnion, or we have to use // the initializer's subtree in the AST to represent the computation of a // specialization constant. assert(initializer->getAsConstantUnion() || initializer->getType().getQualifier().isSpecConstant()); if (initializer->getAsConstantUnion()) variable->setConstArray(initializer->getAsConstantUnion()->getConstArray()); else { // It's a specialization constant. variable->getWritableType().getQualifier().makeSpecConstant(); // Keep the subtree that computes the specialization constant with the variable. // Later, a symbol node will adopt the subtree from the variable. variable->setConstSubtree(initializer); } } else { // normal assigning of a value to a variable... specializationCheck(loc, initializer->getType(), "initializer"); TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc); TIntermTyped* initNode = intermediate.addAssign(EOpAssign, intermSymbol, initializer, loc); if (! initNode) assignError(loc, "=", intermSymbol->getCompleteString(intermediate.getEnhancedMsgs()), initializer->getCompleteString(intermediate.getEnhancedMsgs())); return initNode; } return nullptr; } // // Reprocess any initializer-list (the "{ ... }" syntax) parts of the // initializer. // // Need to hierarchically assign correct types and implicit // conversions. Will do this mimicking the same process used for // creating a constructor-style initializer, ensuring we get the // same form. However, it has to in parallel walk the 'type' // passed in, as type cannot be deduced from an initializer list. // TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const TType& type, TIntermTyped* initializer) { // Will operate recursively. Once a subtree is found that is constructor style, // everything below it is already good: Only the "top part" of the initializer // can be an initializer list, where "top part" can extend for several (or all) levels. // see if we have bottomed out in the tree within the initializer-list part TIntermAggregate* initList = initializer->getAsAggregate(); if (! initList || initList->getOp() != EOpNull) return initializer; // Of the initializer-list set of nodes, need to process bottom up, // so recurse deep, then process on the way up. // Go down the tree here... if (type.isArray()) { // The type's array might be unsized, which could be okay, so base sizes on the size of the aggregate. // Later on, initializer execution code will deal with array size logic. TType arrayType; arrayType.shallowCopy(type); // sharing struct stuff is fine arrayType.copyArraySizes(*type.getArraySizes()); // but get a fresh copy of the array information, to edit below // edit array sizes to fill in unsized dimensions arrayType.changeOuterArraySize((int)initList->getSequence().size()); TIntermTyped* firstInit = initList->getSequence()[0]->getAsTyped(); if (arrayType.isArrayOfArrays() && firstInit->getType().isArray() && arrayType.getArraySizes()->getNumDims() == firstInit->getType().getArraySizes()->getNumDims() + 1) { for (int d = 1; d < arrayType.getArraySizes()->getNumDims(); ++d) { if (arrayType.getArraySizes()->getDimSize(d) == UnsizedArraySize) arrayType.getArraySizes()->setDimSize(d, firstInit->getType().getArraySizes()->getDimSize(d - 1)); } } TType elementType(arrayType, 0); // dereferenced type for (size_t i = 0; i < initList->getSequence().size(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, elementType, initList->getSequence()[i]->getAsTyped()); if (initList->getSequence()[i] == nullptr) return nullptr; } return addConstructor(loc, initList, arrayType); } else if (type.isStruct()) { if (type.getStruct()->size() != initList->getSequence().size()) { error(loc, "wrong number of structure members", "initializer list", ""); return nullptr; } for (size_t i = 0; i < type.getStruct()->size(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, *(*type.getStruct())[i].type, initList->getSequence()[i]->getAsTyped()); if (initList->getSequence()[i] == nullptr) return nullptr; } } else if (type.isMatrix()) { if (type.getMatrixCols() != (int)initList->getSequence().size()) { error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } TType vectorType(type, 0); // dereferenced type for (int i = 0; i < type.getMatrixCols(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped()); if (initList->getSequence()[i] == nullptr) return nullptr; } } 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(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(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } } } else { error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } // Now that the subtree is processed, process this node as if the // initializer list is a set of arguments to a constructor. TIntermNode* emulatedConstructorArguments; if (initList->getSequence().size() == 1) emulatedConstructorArguments = initList->getSequence()[0]; else emulatedConstructorArguments = initList; return addConstructor(loc, emulatedConstructorArguments, type); } // // Test for the correctness of the parameters passed to various constructor functions // and also convert them to the right data type, if allowed and required. // // 'node' is what to construct from. // 'type' is what type to construct. // // Returns nullptr for an error or the constructed node (aggregate or typed) for no error. // TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* node, const TType& type) { if (node == nullptr || node->getAsTyped() == nullptr) return nullptr; rValueErrorCheck(loc, "constructor", node->getAsTyped()); TIntermAggregate* aggrNode = node->getAsAggregate(); TOperator op = intermediate.mapTypeToConstructorOp(type); // Combined texture-sampler constructors are completely semantic checked // in constructorTextureSamplerError() if (op == EOpConstructTextureSampler) { if (aggrNode != nullptr) { if (aggrNode->getSequence()[1]->getAsTyped()->getType().getSampler().shadow) { // Transfer depth into the texture (SPIR-V image) type, as a hint // for tools to know this texture/image is a depth image. aggrNode->getSequence()[0]->getAsTyped()->getWritableType().getSampler().shadow = true; } return intermediate.setAggregateOperator(aggrNode, op, type, loc); } } TTypeList::const_iterator memberTypes; if (op == EOpConstructStruct) memberTypes = type.getStruct()->begin(); TType elementType; if (type.isArray()) { TType dereferenced(type, 0); elementType.shallowCopy(dereferenced); } else elementType.shallowCopy(type); bool singleArg; if (aggrNode) { if (aggrNode->getOp() != EOpNull) singleArg = true; else singleArg = false; } else singleArg = true; TIntermTyped *newNode; if (singleArg) { // If structure constructor or array constructor is being called // for only one parameter inside the structure, we need to call constructAggregate function once. if (type.isArray()) newNode = constructAggregate(node, elementType, 1, node->getLoc()); else if (op == EOpConstructStruct) newNode = constructAggregate(node, *(*memberTypes).type, 1, node->getLoc()); else newNode = constructBuiltIn(type, op, node->getAsTyped(), node->getLoc(), false); if (newNode && (type.isArray() || op == EOpConstructStruct)) newNode = intermediate.setAggregateOperator(newNode, EOpConstructStruct, type, loc); return newNode; } // // Handle list of arguments. // TIntermSequence &sequenceVector = aggrNode->getSequence(); // Stores the information about the parameter to the constructor // if the structure constructor contains more than one parameter, then construct // each parameter int paramCount = 0; // keeps track of the constructor parameter number being checked // We don't know "top down" whether type is a specialization constant, // but a const becomes a specialization constant if any of its children are. bool hasSpecConst = false; bool isConstConstructor = true; // for each parameter to the constructor call, check to see if the right type is passed or convert them // to the right type if possible (and allowed). // for structure constructors, just check if the right type is passed, no conversion is allowed. for (TIntermSequence::iterator p = sequenceVector.begin(); p != sequenceVector.end(); p++, paramCount++) { if (type.isArray()) newNode = constructAggregate(*p, elementType, paramCount+1, node->getLoc()); else if (op == EOpConstructStruct) newNode = constructAggregate(*p, *(memberTypes[paramCount]).type, paramCount+1, node->getLoc()); else newNode = constructBuiltIn(type, op, (*p)->getAsTyped(), node->getLoc(), true); if (newNode) { *p = newNode; if (!newNode->getType().getQualifier().isConstant()) isConstConstructor = false; if (newNode->getType().getQualifier().isSpecConstant()) hasSpecConst = true; } else return nullptr; } TIntermTyped* ret_node = intermediate.setAggregateOperator(aggrNode, op, type, loc); const char *specConstantCompositeExt[] = { E_GL_EXT_spec_constant_composites }; if (checkExtensionsRequested(loc, 1, specConstantCompositeExt, "spec constant aggregate constructor")) { if (isConstConstructor && hasSpecConst) { ret_node->getWritableType().getQualifier().makeSpecConstant(); } } TIntermAggregate *agg_node = ret_node->getAsAggregate(); if (agg_node && (agg_node->isVector() || agg_node->isArray() || agg_node->isMatrix())) agg_node->updatePrecision(); return ret_node; } // Function for constructor implementation. Calls addUnaryMath with appropriate EOp value // for the parameter to the constructor (passed to this function). Essentially, it converts // the parameter types correctly. If a constructor expects an int (like ivec2) and is passed a // float, then float is converted to int. // // Returns nullptr for an error or the constructed node. // TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, TIntermTyped* node, const TSourceLoc& loc, bool subset) { // If we are changing a matrix in both domain of basic type and to a non matrix, // do the shape change first (by default, below, basic type is changed before shape). // This avoids requesting a matrix of a new type that is going to be discarded anyway. // TODO: This could be generalized to more type combinations, but that would require // more extensive testing and full algorithm rework. For now, the need to do two changes makes // the recursive call work, and avoids the most egregious case of creating integer matrices. if (node->getType().isMatrix() && (type.isScalar() || type.isVector()) && type.isFloatingDomain() != node->getType().isFloatingDomain()) { TType transitionType(node->getBasicType(), glslang::EvqTemporary, type.getVectorSize(), 0, 0, node->isVector()); TOperator transitionOp = intermediate.mapTypeToConstructorOp(transitionType); node = constructBuiltIn(transitionType, transitionOp, node, loc, false); } TIntermTyped* newNode; TOperator basicOp; // // First, convert types as needed. // switch (op) { case EOpConstructVec2: case EOpConstructVec3: case EOpConstructVec4: case EOpConstructMat2x2: case EOpConstructMat2x3: case EOpConstructMat2x4: case EOpConstructMat3x2: case EOpConstructMat3x3: case EOpConstructMat3x4: case EOpConstructMat4x2: case EOpConstructMat4x3: case EOpConstructMat4x4: case EOpConstructFloat: basicOp = EOpConstructFloat; break; case EOpConstructIVec2: case EOpConstructIVec3: case EOpConstructIVec4: case EOpConstructInt: basicOp = EOpConstructInt; break; case EOpConstructUVec2: if (node->getType().getBasicType() == EbtReference) { requireExtensions(loc, 1, &E_GL_EXT_buffer_reference_uvec2, "reference conversion to uvec2"); TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvPtrToUvec2, true, node, type); return newNode; } else if (node->getType().getBasicType() == EbtSampler) { requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "sampler conversion to uvec2"); // force the basic type of the constructor param to uvec2, otherwise spv builder will // report some errors TIntermTyped* newSrcNode = intermediate.createConversion(EbtUint, node); newSrcNode->getAsTyped()->getWritableType().setVectorSize(2); TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConstructUVec2, false, newSrcNode, type); return newNode; } [[fallthrough]]; case EOpConstructUVec3: case EOpConstructUVec4: case EOpConstructUint: basicOp = EOpConstructUint; break; case EOpConstructBVec2: case EOpConstructBVec3: case EOpConstructBVec4: case EOpConstructBool: basicOp = EOpConstructBool; break; case EOpConstructTextureSampler: if ((node->getType().getBasicType() == EbtUint || node->getType().getBasicType() == EbtInt) && node->getType().getVectorSize() == 2) { requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "ivec2/uvec2 convert to texture handle"); // No matter ivec2 or uvec2, Set EOpPackUint2x32 just to generate an opBitcast op code TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpPackUint2x32, true, node, type); return newNode; } [[fallthrough]]; case EOpConstructDVec2: case EOpConstructDVec3: case EOpConstructDVec4: case EOpConstructDMat2x2: case EOpConstructDMat2x3: case EOpConstructDMat2x4: case EOpConstructDMat3x2: case EOpConstructDMat3x3: case EOpConstructDMat3x4: case EOpConstructDMat4x2: case EOpConstructDMat4x3: case EOpConstructDMat4x4: case EOpConstructDouble: basicOp = EOpConstructDouble; break; case EOpConstructF16Vec2: case EOpConstructF16Vec3: case EOpConstructF16Vec4: case EOpConstructF16Mat2x2: case EOpConstructF16Mat2x3: case EOpConstructF16Mat2x4: case EOpConstructF16Mat3x2: case EOpConstructF16Mat3x3: case EOpConstructF16Mat3x4: case EOpConstructF16Mat4x2: case EOpConstructF16Mat4x3: case EOpConstructF16Mat4x4: case EOpConstructFloat16: basicOp = EOpConstructFloat16; // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. float16_t( var) if (!intermediate.getArithemeticFloat16Enabled() && (node->getBasicType() != EbtFloat16)) { TType tempType(EbtFloat, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { TOperator aggregateOp; if (op == EOpConstructFloat16) aggregateOp = EOpConstructFloat; else aggregateOp = (TOperator)(EOpConstructVec2 + op - EOpConstructF16Vec2); newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); } newNode = intermediate.addConversion(EbtFloat16, newNode); return newNode; } break; case EOpConstructBF16Vec2: case EOpConstructBF16Vec3: case EOpConstructBF16Vec4: case EOpConstructBFloat16: basicOp = EOpConstructBFloat16; break; case EOpConstructFloatE5M2Vec2: case EOpConstructFloatE5M2Vec3: case EOpConstructFloatE5M2Vec4: case EOpConstructFloatE5M2: basicOp = EOpConstructFloatE5M2; break; case EOpConstructFloatE4M3Vec2: case EOpConstructFloatE4M3Vec3: case EOpConstructFloatE4M3Vec4: case EOpConstructFloatE4M3: basicOp = EOpConstructFloatE4M3; break; case EOpConstructI8Vec2: case EOpConstructI8Vec3: case EOpConstructI8Vec4: case EOpConstructInt8: basicOp = EOpConstructInt8; // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. int8_t( var) if (!intermediate.getArithemeticInt8Enabled() && (node->getBasicType() != EbtInt8)) { TType tempType(EbtInt, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { TOperator aggregateOp; if (op == EOpConstructInt8) aggregateOp = EOpConstructInt; else aggregateOp = (TOperator)(EOpConstructIVec2 + op - EOpConstructI8Vec2); newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); } newNode = intermediate.addConversion(EbtInt8, newNode); return newNode; } break; case EOpConstructU8Vec2: case EOpConstructU8Vec3: case EOpConstructU8Vec4: case EOpConstructUint8: basicOp = EOpConstructUint8; // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. uint8_t( var) if (!intermediate.getArithemeticInt8Enabled() && (node->getBasicType() != EbtUint8)) { TType tempType(EbtUint, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { TOperator aggregateOp; if (op == EOpConstructUint8) aggregateOp = EOpConstructUint; else aggregateOp = (TOperator)(EOpConstructUVec2 + op - EOpConstructU8Vec2); newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); } newNode = intermediate.addConversion(EbtUint8, newNode); return newNode; } break; case EOpConstructI16Vec2: case EOpConstructI16Vec3: case EOpConstructI16Vec4: case EOpConstructInt16: basicOp = EOpConstructInt16; // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. int16_t( var) if (!intermediate.getArithemeticInt16Enabled() && (node->getBasicType() != EbtInt16)) { TType tempType(EbtInt, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { TOperator aggregateOp; if (op == EOpConstructInt16) aggregateOp = EOpConstructInt; else aggregateOp = (TOperator)(EOpConstructIVec2 + op - EOpConstructI16Vec2); newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); } newNode = intermediate.addConversion(EbtInt16, newNode); return newNode; } break; case EOpConstructU16Vec2: case EOpConstructU16Vec3: case EOpConstructU16Vec4: case EOpConstructUint16: basicOp = EOpConstructUint16; // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. uint16_t( var) if (!intermediate.getArithemeticInt16Enabled() && (node->getBasicType() != EbtUint16)) { TType tempType(EbtUint, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { TOperator aggregateOp; if (op == EOpConstructUint16) aggregateOp = EOpConstructUint; else aggregateOp = (TOperator)(EOpConstructUVec2 + op - EOpConstructU16Vec2); newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); } newNode = intermediate.addConversion(EbtUint16, newNode); return newNode; } break; case EOpConstructI64Vec2: case EOpConstructI64Vec3: case EOpConstructI64Vec4: case EOpConstructInt64: basicOp = EOpConstructInt64; break; case EOpConstructUint64: if (type.isScalar() && node->getType().isReference()) { TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvPtrToUint64, true, node, type); return newNode; } [[fallthrough]]; case EOpConstructU64Vec2: case EOpConstructU64Vec3: case EOpConstructU64Vec4: basicOp = EOpConstructUint64; break; case EOpConstructNonuniform: // Make a nonuniform copy of node newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpCopyObject, true, node, type); return newNode; case EOpConstructReference: // construct reference from reference if (node->getType().isReference()) { newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConstructReference, true, node, type); return newNode; // construct reference from uint64 } else if (node->getType().isScalar() && node->getType().getBasicType() == EbtUint64) { TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToPtr, true, node, type); return newNode; // construct reference from uvec2 } else if (node->getType().isVector() && node->getType().getBasicType() == EbtUint && node->getVectorSize() == 2) { requireExtensions(loc, 1, &E_GL_EXT_buffer_reference_uvec2, "uvec2 conversion to reference"); TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToPtr, true, node, type); return newNode; } else { return nullptr; } case EOpConstructCooperativeVectorNV: if (!node->getType().isCoopVecNV()) { if (type.getBasicType() != node->getType().getBasicType()) { node = intermediate.addConversion(type.getBasicType(), node); if (node == nullptr) return nullptr; } } if (type.getBasicType() != node->getType().getBasicType()) { intermediate.buildConvertOp(type.getBasicType(), node->getType().getBasicType(), op); node = intermediate.addUnaryNode(op, node, node->getLoc(), type); return node; } if (subset) { return node; } node = intermediate.setAggregateOperator(node, op, type, node->getLoc()); return node; case EOpConstructCooperativeMatrixNV: case EOpConstructCooperativeMatrixKHR: if (node->getType() == type) { return node; } if (!node->getType().isCoopMat()) { if (type.getBasicType() != node->getType().getBasicType()) { node = intermediate.addConversion(type.getBasicType(), node); if (node == nullptr) return nullptr; } node = intermediate.setAggregateOperator(node, op, type, node->getLoc()); } else if (type.sameCoopMatShape(node->getType()) && !type.sameCoopMatUse(node->getType()) && type.getBasicType() == node->getType().getBasicType()) { node = intermediate.setAggregateOperator(node, op, type, node->getLoc()); } else { TOperator op = EOpConvNumeric; node = intermediate.addUnaryNode(op, node, node->getLoc(), type); // If it's a (non-specialization) constant, it must be folded. if (node->getAsUnaryNode()->getOperand()->getAsConstantUnion()) return node->getAsUnaryNode()->getOperand()->getAsConstantUnion()->fold(op, node->getType()); } return node; case EOpConstructAccStruct: if ((node->getType().isScalar() && node->getType().getBasicType() == EbtUint64)) { // construct acceleration structure from uint64 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, Num_ray_tracing_EXTs, ray_tracing_EXTs, "uvec2 conversion to accelerationStructureEXT"); return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToAccStruct, true, node, type); } else return nullptr; default: error(loc, "unsupported construction", "", ""); return nullptr; } newNode = intermediate.addUnaryMath(basicOp, node, node->getLoc()); if (newNode == nullptr) { error(loc, "can't convert", "constructor", ""); return nullptr; } // // Now, if there still isn't an operation to do the construction, and we need one, add one. // // Otherwise, skip out early. if (subset || (newNode != node && newNode->getType() == type)) return newNode; // setAggregateOperator will insert a new node for the constructor, as needed. return intermediate.setAggregateOperator(newNode, op, type, loc); } void TParseContext::makeVariadic(TFunction *F, const TSourceLoc &loc) { if (parsingBuiltins) { F->setVariadic(); } else { error(loc, "variadic argument specifier is only available for builtins", "...", ""); } } TParameter TParseContext::getParamWithDefault(const TPublicType& ty, TString* identifier, TIntermTyped* initializer, const TSourceLoc& loc) { if (!parsingBuiltins) { error(loc, "default argument values are only available for builtins", "=", ""); initializer = nullptr; } if (ty.arraySizes) { error(loc, "array arguments cannot be default-initialized", identifier->c_str(), ""); initializer = nullptr; } if (ty.basicType == EbtVoid) { error(loc, "illegal use of type 'void'", identifier->c_str(), ""); initializer = nullptr; } reservedErrorCheck(loc, *identifier); TParameter param = {identifier, new TType(ty), initializer}; return param; } // This function tests for the type of the parameters to the structure or array constructor. Raises // an error message if the expected type does not match the parameter passed to the constructor. // // Returns nullptr for an error or the input node itself if the expected and the given parameter types match. // TIntermTyped* TParseContext::constructAggregate(TIntermNode* node, const TType& type, int paramCount, const TSourceLoc& loc) { 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(enhanced).c_str(), type.getCompleteString(enhanced).c_str()); return nullptr; } return converted; } // If a memory qualifier is present in 'to', also make it present in 'from'. void TParseContext::inheritMemoryQualifiers(const TQualifier& from, TQualifier& to) { if (from.isReadOnly()) to.readonly = from.readonly; if (from.isWriteOnly()) to.writeonly = from.writeonly; if (from.coherent) to.coherent = from.coherent; if (from.volatil) to.volatil = from.volatil; if (from.nontemporal) to.nontemporal = from.nontemporal; if (from.restrict) to.restrict = from.restrict; } // // Update qualifier layoutBindlessImage & layoutBindlessSampler on block member // void TParseContext::updateBindlessQualifier(TType& memberType) { if (memberType.containsSampler()) { if (memberType.isStruct()) { TTypeList* typeList = memberType.getWritableStruct(); for (unsigned int member = 0; member < typeList->size(); ++member) { TType* subMemberType = (*typeList)[member].type; updateBindlessQualifier(*subMemberType); } } else if (memberType.getSampler().isImage()) { intermediate.setBindlessImageMode(currentCaller, AstRefTypeLayout); memberType.getQualifier().layoutBindlessImage = true; } else { intermediate.setBindlessTextureMode(currentCaller, AstRefTypeLayout); memberType.getQualifier().layoutBindlessSampler = true; } } } // // Do everything needed to add an interface block. // void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, const TString* instanceName, TArraySizes* arraySizes) { if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) blockStorageRemap(loc, blockName, currentBlockQualifier); blockStageIoCheck(loc, currentBlockQualifier); blockQualifierCheck(loc, currentBlockQualifier, instanceName != nullptr); if (arraySizes != nullptr) { arraySizesCheck(loc, currentBlockQualifier, arraySizes, nullptr, false); arrayOfArrayVersionCheck(loc, arraySizes); if (arraySizes->getNumDims() > 1) requireProfile(loc, ~EEsProfile, "array-of-array of block"); } // Inherit and check member storage qualifiers WRT to the block-level qualifier. for (unsigned int member = 0; member < typeList.size(); ++member) { TType& memberType = *typeList[member].type; TQualifier& memberQualifier = memberType.getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; if (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal && memberQualifier.storage != currentBlockQualifier.storage) error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), ""); memberQualifier.storage = currentBlockQualifier.storage; globalQualifierFixCheck(memberLoc, memberQualifier); inheritMemoryQualifiers(currentBlockQualifier, memberQualifier); if (currentBlockQualifier.perPrimitiveNV) memberQualifier.perPrimitiveNV = currentBlockQualifier.perPrimitiveNV; if (currentBlockQualifier.perViewNV) 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.hasSpirvDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty()) error(memberLoc, "member cannot have a spirv_decorate_id qualifier", memberType.getFieldName().c_str(), ""); if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary())) error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), ""); if (memberType.isArray()) arraySizesCheck(memberLoc, currentBlockQualifier, memberType.getArraySizes(), nullptr, member == typeList.size() - 1); if (memberQualifier.hasOffset()) { if (spvVersion.spv == 0) { profileRequires(memberLoc, ~EEsProfile, 440, E_GL_ARB_enhanced_layouts, "\"offset\" on block member"); profileRequires(memberLoc, EEsProfile, 300, E_GL_ARB_enhanced_layouts, "\"offset\" on block member"); } } // For bindless texture, sampler can be declared as uniform/storage block member, if (memberType.containsOpaque()) { if (memberType.containsSampler() && extensionTurnedOn(E_GL_ARB_bindless_texture)) updateBindlessQualifier(memberType); else error(memberLoc, "member of block cannot be or contain a sampler, image, or atomic_uint type", typeList[member].type->getFieldName().c_str(), ""); } if (memberType.containsCoopMat()) error(memberLoc, "member of block cannot be or contain a cooperative matrix type", typeList[member].type->getFieldName().c_str(), ""); if (memberType.containsCoopVec()) error(memberLoc, "member of block cannot be or contain a cooperative vector type", typeList[member].type->getFieldName().c_str(), ""); } // This might be a redeclaration of a built-in block. If so, redeclareBuiltinBlock() will // do all the rest. if (! symbolTable.atBuiltInLevel() && builtInName(*blockName)) { redeclareBuiltinBlock(loc, typeList, *blockName, instanceName, arraySizes); return; } // Not a redeclaration of a built-in; check that all names are user names. reservedErrorCheck(loc, *blockName); if (instanceName) reservedErrorCheck(loc, *instanceName); for (unsigned int member = 0; member < typeList.size(); ++member) reservedErrorCheck(typeList[member].loc, typeList[member].type->getFieldName()); // Make default block qualification, and adjust the member qualifications TQualifier defaultQualification; switch (currentBlockQualifier.storage) { case EvqUniform: defaultQualification = globalUniformDefaults; break; case EvqBuffer: defaultQualification = globalBufferDefaults; break; case EvqVaryingIn: defaultQualification = globalInputDefaults; break; case EvqVaryingOut: defaultQualification = globalOutputDefaults; break; case EvqShared: defaultQualification = globalSharedDefaults; break; default: defaultQualification.clear(); break; } // Special case for "push_constant uniform", which has a default of std430, // contrary to normal uniform defaults, and can't have a default tracked for it. if ((currentBlockQualifier.isPushConstant() && !currentBlockQualifier.hasPacking()) || (currentBlockQualifier.isShaderRecord() && !currentBlockQualifier.hasPacking())) currentBlockQualifier.layoutPacking = ElpStd430; // Special case for "taskNV in/out", which has a default of std430, if (currentBlockQualifier.isTaskMemory() && !currentBlockQualifier.hasPacking()) currentBlockQualifier.layoutPacking = ElpStd430; // fix and check for member layout qualifiers mergeObjectLayoutQualifiers(defaultQualification, currentBlockQualifier, true); // "The align qualifier can only be used on blocks or block members, and only for blocks declared with std140 or std430 layouts." if (currentBlockQualifier.hasAlign()) { if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430 && defaultQualification.layoutPacking != ElpScalar) { error(loc, "can only be used with std140, std430, or scalar layout packing", "align", ""); defaultQualification.layoutAlign = -1; } } bool memberWithLocation = false; bool memberWithoutLocation = false; bool memberWithPerViewQualifier = false; for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; if (memberQualifier.hasStream()) { if (defaultQualification.layoutStream != memberQualifier.layoutStream) error(memberLoc, "member cannot contradict block", "stream", ""); } // "This includes a block's inheritance of the // current global default buffer, a block member's inheritance of the block's // buffer, and the requirement that any *xfb_buffer* declared on a block // member must match the buffer inherited from the block." if (memberQualifier.hasXfbBuffer()) { if (defaultQualification.layoutXfbBuffer != memberQualifier.layoutXfbBuffer) error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", ""); } if (memberQualifier.hasPacking()) error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), ""); if (memberQualifier.hasLocation()) { const char* feature = "location on block member"; switch (currentBlockQualifier.storage) { case EvqVaryingIn: case EvqVaryingOut: requireProfile(memberLoc, ECoreProfile | ECompatibilityProfile | EEsProfile, feature); profileRequires(memberLoc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, feature); profileRequires(memberLoc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); memberWithLocation = true; break; default: error(memberLoc, "can only use in an in/out block", feature, ""); break; } } else memberWithoutLocation = true; // "The offset qualifier can only be used on block members of blocks declared with std140 or std430 layouts." // "The align qualifier can only be used on blocks or block members, and only for blocks declared with std140 or std430 layouts." if (memberQualifier.hasAlign() || memberQualifier.hasOffset()) { if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430 && defaultQualification.layoutPacking != ElpScalar) error(memberLoc, "can only be used with std140, std430, or scalar layout packing", "offset/align", ""); } if (memberQualifier.isPerView()) { memberWithPerViewQualifier = true; } TQualifier newMemberQualification = defaultQualification; mergeQualifiers(memberLoc, newMemberQualification, memberQualifier, false); memberQualifier = newMemberQualification; } layoutMemberLocationArrayCheck(loc, memberWithLocation, arraySizes); // Ensure that the block has an XfbBuffer assigned. This is needed // because if the block has a XfbOffset assigned, then it is // assumed that it has implicitly assigned the current global // XfbBuffer, and because it's members need to be assigned a // XfbOffset if they lack it. if (currentBlockQualifier.storage == EvqVaryingOut && globalOutputDefaults.hasXfbBuffer()) { if (!currentBlockQualifier.hasXfbBuffer() && currentBlockQualifier.hasXfbOffset()) currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } // Process the members fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation); fixXfbOffsets(currentBlockQualifier, typeList); fixBlockUniformOffsets(currentBlockQualifier, typeList); fixBlockUniformLayoutMatrix(currentBlockQualifier, &typeList, nullptr); fixBlockUniformLayoutPacking(currentBlockQualifier, &typeList, nullptr); for (unsigned int member = 0; member < typeList.size(); ++member) layoutTypeCheck(typeList[member].loc, *typeList[member].type); if (memberWithPerViewQualifier) { for (unsigned int member = 0; member < typeList.size(); ++member) { checkAndResizeMeshViewDim(typeList[member].loc, *typeList[member].type, /*isBlockMember*/ true); } } // reverse merge, so that currentBlockQualifier now has all layout information // (can't use defaultQualification directly, it's missing other non-layout-default-class qualifiers) mergeObjectLayoutQualifiers(currentBlockQualifier, defaultQualification, true); // // Build and add the interface block as a new type named 'blockName' // TType blockType(&typeList, *blockName, currentBlockQualifier); if (arraySizes != nullptr) blockType.transferArraySizes(arraySizes); if (arraySizes == nullptr) ioArrayCheck(loc, blockType, instanceName ? *instanceName : *blockName); if (currentBlockQualifier.hasBufferReference()) { if (currentBlockQualifier.storage != EvqBuffer) error(loc, "can only be used with buffer", "buffer_reference", ""); // Create the block reference type. If it was forward-declared, detect that // as a referent struct type with no members. Replace the referent type with // blockType. TType blockNameType(EbtReference, blockType, *blockName); TVariable* blockNameVar = new TVariable(blockName, blockNameType, true); if (! symbolTable.insert(*blockNameVar)) { TSymbol* existingName = symbolTable.find(*blockName); if (existingName->getType().isReference() && existingName->getType().getReferentType()->getStruct() && existingName->getType().getReferentType()->getStruct()->size() == 0 && existingName->getType().getQualifier().storage == blockType.getQualifier().storage) { existingName->getType().getReferentType()->deepCopy(blockType); } else { error(loc, "block name cannot be redefined", blockName->c_str(), ""); } } if (!instanceName) { return; } } else { // // Don't make a user-defined type out of block name; that will cause an error // if the same block name gets reused in a different interface. // // "Block names have no other use within a shader // beyond interface matching; it is a compile-time error to use a block name at global scope for anything // other than as a block name (e.g., use of a block name for a global variable name or function name is // currently reserved)." // // Use the symbol table to prevent normal reuse of the block's name, as a variable entry, // whose type is EbtBlock, but without all the structure; that will come from the type // the instances point to. // TType blockNameType(EbtBlock, blockType.getQualifier().storage); TVariable* blockNameVar = new TVariable(blockName, blockNameType); if (! symbolTable.insert(*blockNameVar)) { TSymbol* existingName = symbolTable.find(*blockName); if (existingName->getType().getBasicType() == EbtBlock) { if (existingName->getType().getQualifier().storage == blockType.getQualifier().storage) { error(loc, "Cannot reuse block name within the same interface:", blockName->c_str(), blockType.getStorageQualifierString()); return; } } else { error(loc, "block name cannot redefine a non-block name", blockName->c_str(), ""); return; } } } // Add the variable, as anonymous or named instanceName. // Make an anonymous variable if no name was provided. if (! instanceName) instanceName = NewPoolTString(""); TVariable& variable = *new TVariable(instanceName, blockType); if (! symbolTable.insert(variable)) { if (*instanceName == "") error(loc, "nameless block contains a member that already has a name at global scope", blockName->c_str(), ""); else error(loc, "block instance name redefinition", variable.getName().c_str(), ""); return; } // Check for general layout qualifier errors layoutObjectCheck(loc, variable); // fix up if (isIoResizeArray(blockType)) { ioArraySymbolResizeList.push_back(&variable); checkIoArraysConsistency(loc, true); } else fixIoArraySize(loc, variable.getWritableType()); // Save it in the AST for linker use. trackLinkage(variable); } // // allow storage type of block to be remapped at compile time // void TParseContext::blockStorageRemap(const TSourceLoc&, const TString* instanceName, TQualifier& qualifier) { TBlockStorageClass type = intermediate.getBlockStorageOverride(instanceName->c_str()); if (type != EbsNone) { qualifier.setBlockStorage(type); } } // Do all block-declaration checking regarding the combination of in/out/uniform/buffer // with a particular stage. void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& qualifier) { const char *extsrt[2] = { E_GL_NV_ray_tracing, E_GL_EXT_ray_tracing }; switch (qualifier.storage) { case EvqUniform: profileRequires(loc, EEsProfile, 300, nullptr, "uniform block"); profileRequires(loc, ENoProfile, 140, E_GL_ARB_uniform_buffer_object, "uniform block"); if (currentBlockQualifier.layoutPacking == ElpStd430 && ! currentBlockQualifier.isPushConstant()) requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "std430 requires the buffer storage qualifier"); break; case EvqBuffer: requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "buffer block"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_shader_storage_buffer_object, "buffer block"); profileRequires(loc, EEsProfile, 310, nullptr, "buffer block"); break; case EvqVaryingIn: profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "input block"); // It is a compile-time error to have an input block in a vertex shader or an output block in a fragment shader // "Compute shaders do not permit user-defined input variables..." requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask| EShLangFragmentMask|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 == 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|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 == EShLangMesh && qualifier.isTaskMemory()) { error(loc, "can only use on input blocks in mesh shader", "taskNV", ""); } else if (language == EShLangTask && ! qualifier.isTaskMemory()) { error(loc, "output blocks cannot be used in a task shader", "out", ""); } break; case EvqShared: if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) { error(loc, "shared block requires at least SPIR-V 1.4", "shared block", ""); } profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block"); break; case EvqPayload: profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadNV block"); requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangAnyHitMask | EShLangClosestHitMask | EShLangMissMask), "rayPayloadNV block"); break; case EvqPayloadIn: profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadInNV block"); requireStage(loc, (EShLanguageMask)(EShLangAnyHitMask | EShLangClosestHitMask | EShLangMissMask), "rayPayloadInNV block"); break; case EvqHitAttr: profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "hitAttributeNV block"); requireStage(loc, (EShLanguageMask)(EShLangIntersectMask | EShLangAnyHitMask | EShLangClosestHitMask), "hitAttributeNV block"); break; case EvqCallableData: profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "callableDataNV block"); requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV block"); break; case EvqCallableDataIn: profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "callableDataInNV block"); requireStage(loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV block"); break; case EvqHitObjectAttrNV: profileRequires(loc, ~EEsProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV block"); requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV block"); break; default: error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), ""); break; } } // Do all block-declaration checking regarding its qualifiers. void TParseContext::blockQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier, bool /*instanceName*/) { // The 4.5 specification says: // // interface-block : // layout-qualifieropt interface-qualifier block-name { member-list } instance-nameopt ; // // interface-qualifier : // in // out // patch in // patch out // uniform // buffer // // Note however memory qualifiers aren't included, yet the specification also says // // "...memory qualifiers may also be used in the declaration of shader storage blocks..." if (qualifier.isInterpolation()) error(loc, "cannot use interpolation qualifiers on an interface block", "flat/smooth/noperspective", ""); if (qualifier.centroid) error(loc, "cannot use centroid qualifier on an interface block", "centroid", ""); if (qualifier.isSample()) error(loc, "cannot use sample qualifier on an interface block", "sample", ""); if (qualifier.invariant) error(loc, "cannot use invariant qualifier on an interface block", "invariant", ""); if (qualifier.isPushConstant()) intermediate.addPushConstantCount(); if (qualifier.isShaderRecord()) intermediate.addShaderRecordCount(); if (qualifier.isTaskMemory()) intermediate.addTaskNVCount(); } // // "For a block, this process applies to the entire block, or until the first member // is reached that has a location layout qualifier. When a block member is declared with a location // qualifier, its location comes from that qualifier: The member's location qualifier overrides the block-level // declaration. Subsequent members are again assigned consecutive locations, based on the newest location, // until the next member declared with a location qualifier. The values used for locations do not have to be // declared in increasing order." void TParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qualifier, TTypeList& typeList, bool memberWithLocation, bool memberWithoutLocation) { // "If a block has no block-level location layout qualifier, it is required that either all or none of its members // have a location layout qualifier, or a compile-time error results." if (! qualifier.hasLocation() && memberWithLocation && memberWithoutLocation) error(loc, "either the block needs a location, or all members need a location, or no members have a location", "location", ""); else { if (memberWithLocation) { // remove any block-level location and make it per *every* member int nextLocation = 0; // by the rule above, initial value is not relevant if (qualifier.hasAnyLocation()) { nextLocation = qualifier.layoutLocation; qualifier.layoutLocation = TQualifier::layoutLocationEnd; if (qualifier.hasComponent()) { // "It is a compile-time error to apply the *component* qualifier to a ... block" error(loc, "cannot apply to a block", "component", ""); } if (qualifier.hasIndex()) { error(loc, "cannot apply to a block", "index", ""); } } for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; if (! memberQualifier.hasLocation()) { if (nextLocation >= (int)TQualifier::layoutLocationEnd) error(memberLoc, "location is too large", "location", ""); memberQualifier.layoutLocation = nextLocation; memberQualifier.layoutComponent = TQualifier::layoutComponentEnd; } nextLocation = memberQualifier.layoutLocation + intermediate.computeTypeLocationSize( *typeList[member].type, language); } } } } void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList) { // "If a block is qualified with xfb_offset, all its // members are assigned transform feedback buffer offsets. If a block is not qualified with xfb_offset, any // members of that block not qualified with an xfb_offset will not be assigned transform feedback buffer // offsets." if (! qualifier.hasXfbBuffer() || ! qualifier.hasXfbOffset()) return; int nextOffset = qualifier.layoutXfbOffset; for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); bool contains64BitType = false; bool contains32BitType = false; bool contains16BitType = false; int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType, contains32BitType, contains16BitType); // see if we need to auto-assign an offset to this member if (! memberQualifier.hasXfbOffset()) { // "if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8" if (contains64BitType) RoundToPow2(nextOffset, 8); else if (contains32BitType) RoundToPow2(nextOffset, 4); else if (contains16BitType) RoundToPow2(nextOffset, 2); memberQualifier.layoutXfbOffset = nextOffset; } else nextOffset = memberQualifier.layoutXfbOffset; nextOffset += memberSize; } // The above gave all block members an offset, so we can take it off the block now, // which will avoid double counting the offset usage. qualifier.layoutXfbOffset = TQualifier::layoutXfbOffsetEnd; } // Calculate and save the offset of each block member, using the recursively // defined block offset rules and the user-provided offset and align. // // Also, compute and save the total size of the block. For the block's size, arrayness // is not taken into account, as each element is backed by a separate buffer. // void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typeList) { if (!storageCanHaveLayoutInBlock(qualifier.storage) && !qualifier.isTaskMemory()) return; if (qualifier.layoutPacking != ElpStd140 && qualifier.layoutPacking != ElpStd430 && qualifier.layoutPacking != ElpScalar) return; int offset = 0; int memberSize; for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; // "When align is applied to an array, it effects only the start of the array, not the array's internal stride." // modify just the children's view of matrix layout, if there is one for this member TLayoutMatrix subMatrixLayout = typeList[member].type->getQualifier().layoutMatrix; int dummyStride; int memberAlignment = intermediate.getMemberAlignment(*typeList[member].type, memberSize, dummyStride, qualifier.layoutPacking, subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor : qualifier.layoutMatrix == ElmRowMajor); if (memberQualifier.hasOffset()) { // "The specified offset must be a multiple // of the base alignment of the type of the block member it qualifies, or a compile-time error results." if (! IsMultipleOfPow2(memberQualifier.layoutOffset, memberAlignment)) error(memberLoc, "must be a multiple of the member's alignment", "offset", "(layout offset = %d | member alignment = %d)", memberQualifier.layoutOffset, memberAlignment); // GLSL: "It is a compile-time error to specify an offset that is smaller than the offset of the previous // member in the block or that lies within the previous member of the block" if (spvVersion.spv == 0) { if (memberQualifier.layoutOffset < offset) error(memberLoc, "cannot lie in previous members", "offset", ""); // "The offset qualifier forces the qualified member to start at or after the specified // integral-constant expression, which will be its byte offset from the beginning of the buffer. // "The actual offset of a member is computed as // follows: If offset was declared, start with that offset, otherwise start with the next available offset." offset = std::max(offset, memberQualifier.layoutOffset); } else { // TODO: Vulkan: "It is a compile-time error to have any offset, explicit or assigned, // that lies within another member of the block." offset = memberQualifier.layoutOffset; } } // "The actual alignment of a member will be the greater of the specified align alignment and the standard // (e.g., std140) base alignment for the member's type." if (memberQualifier.hasAlign()) memberAlignment = std::max(memberAlignment, memberQualifier.layoutAlign); // "If the resulting offset is not a multiple of the actual alignment, // increase it to the first offset that is a multiple of // the actual alignment." RoundToPow2(offset, memberAlignment); typeList[member].type->getQualifier().layoutOffset = offset; offset += memberSize; } } // // Spread LayoutMatrix to uniform block member, if a uniform block member is a struct, // we need spread LayoutMatrix to this struct member too. and keep this rule for recursive. // void TParseContext::fixBlockUniformLayoutMatrix(TQualifier& qualifier, TTypeList* originTypeList, TTypeList* tmpTypeList) { assert(tmpTypeList == nullptr || originTypeList->size() == tmpTypeList->size()); for (unsigned int member = 0; member < originTypeList->size(); ++member) { if (qualifier.layoutPacking != ElpNone) { if (tmpTypeList == nullptr) { if (((*originTypeList)[member].type->isMatrix() || (*originTypeList)[member].type->getBasicType() == EbtStruct) && (*originTypeList)[member].type->getQualifier().layoutMatrix == ElmNone) { (*originTypeList)[member].type->getQualifier().layoutMatrix = qualifier.layoutMatrix; } } else { if (((*tmpTypeList)[member].type->isMatrix() || (*tmpTypeList)[member].type->getBasicType() == EbtStruct) && (*tmpTypeList)[member].type->getQualifier().layoutMatrix == ElmNone) { (*tmpTypeList)[member].type->getQualifier().layoutMatrix = qualifier.layoutMatrix; } } } if ((*originTypeList)[member].type->getBasicType() == EbtStruct) { TQualifier* memberQualifier = nullptr; // block member can be declare a matrix style, so it should be update to the member's style if ((*originTypeList)[member].type->getQualifier().layoutMatrix == ElmNone) { memberQualifier = &qualifier; } else { memberQualifier = &((*originTypeList)[member].type->getQualifier()); } const TType* tmpType = tmpTypeList == nullptr ? (*originTypeList)[member].type->clone() : (*tmpTypeList)[member].type; fixBlockUniformLayoutMatrix(*memberQualifier, (*originTypeList)[member].type->getWritableStruct(), tmpType->getWritableStruct()); const TTypeList* structure = recordStructCopy(matrixFixRecord, (*originTypeList)[member].type, tmpType); if (tmpTypeList == nullptr) { (*originTypeList)[member].type->setStruct(const_cast(structure)); } if (tmpTypeList != nullptr) { (*tmpTypeList)[member].type->setStruct(const_cast(structure)); } } } } // // Spread LayoutPacking to matrix or aggregate block members. If a block member is a struct or // array of struct, spread LayoutPacking recursively to its matrix or aggregate members. // void TParseContext::fixBlockUniformLayoutPacking(TQualifier& qualifier, TTypeList* originTypeList, TTypeList* tmpTypeList) { assert(tmpTypeList == nullptr || originTypeList->size() == tmpTypeList->size()); for (unsigned int member = 0; member < originTypeList->size(); ++member) { if (qualifier.layoutPacking != ElpNone) { if (tmpTypeList == nullptr) { if ((*originTypeList)[member].type->getQualifier().layoutPacking == ElpNone && !(*originTypeList)[member].type->isScalarOrVector()) { (*originTypeList)[member].type->getQualifier().layoutPacking = qualifier.layoutPacking; } } else { if ((*tmpTypeList)[member].type->getQualifier().layoutPacking == ElpNone && !(*tmpTypeList)[member].type->isScalarOrVector()) { (*tmpTypeList)[member].type->getQualifier().layoutPacking = qualifier.layoutPacking; } } } if ((*originTypeList)[member].type->getBasicType() == EbtStruct) { // Deep copy the type in pool. // Because, struct use in different block may have different layout qualifier. // We have to new a object to distinguish between them. const TType* tmpType = tmpTypeList == nullptr ? (*originTypeList)[member].type->clone() : (*tmpTypeList)[member].type; fixBlockUniformLayoutPacking(qualifier, (*originTypeList)[member].type->getWritableStruct(), tmpType->getWritableStruct()); const TTypeList* structure = recordStructCopy(packingFixRecord, (*originTypeList)[member].type, tmpType); if (tmpTypeList == nullptr) { (*originTypeList)[member].type->setStruct(const_cast(structure)); } if (tmpTypeList != nullptr) { (*tmpTypeList)[member].type->setStruct(const_cast(structure)); } } } } // For an identifier that is already declared, add more qualification to it. void TParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qualifier, const TString& identifier) { TSymbol* symbol = symbolTable.find(identifier); // A forward declaration of a block reference looks to the grammar like adding // a qualifier to an existing symbol. Detect this and create the block reference // type with an empty type list, which will be filled in later in // TParseContext::declareBlock. if (!symbol && qualifier.hasBufferReference()) { // The layout qualifiers are ignored in forward declaration, give warning for the most probable to be seen if (qualifier.hasBufferReferenceAlign()) { warn(loc, "the buffer_reference_align layout is ignored when defined in forward declaration", identifier.c_str(), ""); } if (qualifier.hasPacking()) { warn(loc, "the packing layout (scalar, std430, etc) is ignored when defined in forward declaration", identifier.c_str(), ""); } TTypeList typeList; TType blockType(&typeList, identifier, qualifier); TType blockNameType(EbtReference, blockType, identifier); TVariable* blockNameVar = new TVariable(&identifier, blockNameType, true); if (! symbolTable.insert(*blockNameVar)) { error(loc, "block name cannot redefine a non-block name", blockName->c_str(), ""); } return; } if (! symbol) { error(loc, "identifier not previously declared", identifier.c_str(), ""); return; } if (symbol->getAsFunction()) { error(loc, "cannot re-qualify a function name", identifier.c_str(), ""); return; } if (qualifier.isAuxiliary() || qualifier.isMemory() || qualifier.isInterpolation() || qualifier.hasLayout() || qualifier.storage != EvqTemporary || qualifier.precision != EpqNone) { error(loc, "cannot add storage, auxiliary, memory, interpolation, layout, or precision qualifier to an existing variable", identifier.c_str(), ""); return; } // For read-only built-ins, add a new symbol for holding the modified qualifier. // This will bring up an entire block, if a block type has to be modified (e.g., gl_Position inside a block) if (symbol->isReadOnly()) symbol = symbolTable.copyUp(symbol); if (qualifier.invariant) { if (intermediate.inIoAccessed(identifier)) error(loc, "cannot change qualification after use", "invariant", ""); symbol->getWritableType().getQualifier().invariant = true; invariantCheck(loc, symbol->getType().getQualifier()); } else if (qualifier.isNoContraction()) { if (intermediate.inIoAccessed(identifier)) error(loc, "cannot change qualification after use", "precise", ""); symbol->getWritableType().getQualifier().setNoContraction(); } else if (qualifier.specConstant) { symbol->getWritableType().getQualifier().makeSpecConstant(); if (qualifier.hasSpecConstantId()) symbol->getWritableType().getQualifier().layoutSpecConstantId = qualifier.layoutSpecConstantId; } else warn(loc, "unknown requalification", "", ""); } void TParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qualifier, TIdentifierList& identifiers) { for (unsigned int i = 0; i < identifiers.size(); ++i) addQualifierToExisting(loc, qualifier, *identifiers[i]); } // Make sure 'invariant' isn't being applied to a non-allowed object. void TParseContext::invariantCheck(const TSourceLoc& loc, const TQualifier& qualifier) { if (! qualifier.invariant) return; bool pipeOut = qualifier.isPipeOutput(); bool pipeIn = qualifier.isPipeInput(); if ((version >= 300 && isEsProfile()) || (!isEsProfile() && version >= 420)) { if (! pipeOut) error(loc, "can only apply to an output", "invariant", ""); } else { if ((language == EShLangVertex && pipeIn) || (! pipeOut && ! pipeIn)) error(loc, "can only apply to an output, or to an input in a non-vertex stage\n", "invariant", ""); } } // // Updating default qualifier for the case of a declaration with just a qualifier, // no type, block, or identifier. // void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, const TPublicType& publicType) { if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMesh); const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; if (publicType.qualifier.storage != EvqVaryingOut) error(loc, "can only apply to 'out'", id, ""); if (! intermediate.setVertices(publicType.shaderQualifiers.vertices)) error(loc, "cannot change previously set layout value", id, ""); if (language == EShLangTessControl) checkIoArraysConsistency(loc); } if (publicType.shaderQualifiers.primitives != TQualifier::layoutNotSet) { assert(language == EShLangMesh); const char* id = "max_primitives"; if (publicType.qualifier.storage != EvqVaryingOut) error(loc, "can only apply to 'out'", id, ""); if (! intermediate.setPrimitives(publicType.shaderQualifiers.primitives)) error(loc, "cannot change previously set layout value", id, ""); } if (publicType.shaderQualifiers.invocations != TQualifier::layoutNotSet) { if (publicType.qualifier.storage != EvqVaryingIn) error(loc, "can only apply to 'in'", "invocations", ""); if (! intermediate.setInvocations(publicType.shaderQualifiers.invocations)) error(loc, "cannot change previously set layout value", "invocations", ""); } if (publicType.shaderQualifiers.geometry != ElgNone) { if (publicType.qualifier.storage == EvqVaryingIn) { switch (publicType.shaderQualifiers.geometry) { case ElgPoints: case ElgLines: case ElgLinesAdjacency: case ElgTriangles: case ElgTrianglesAdjacency: case ElgQuads: case ElgIsolines: if (language == EShLangMesh) { error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } if (intermediate.setInputPrimitive(publicType.shaderQualifiers.geometry)) { if (language == EShLangGeometry) checkIoArraysConsistency(loc); } else error(loc, "cannot change previously set input primitive", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; default: error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); } } else if (publicType.qualifier.storage == EvqVaryingOut) { switch (publicType.shaderQualifiers.geometry) { case ElgLines: case ElgTriangles: if (language != EShLangMesh) { error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } [[fallthrough]]; case ElgPoints: case ElgLineStrip: case ElgTriangleStrip: if (! intermediate.setOutputPrimitive(publicType.shaderQualifiers.geometry)) error(loc, "cannot change previously set output primitive", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; default: error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); } } else error(loc, "cannot apply to:", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), GetStorageQualifierString(publicType.qualifier.storage)); } if (publicType.shaderQualifiers.spacing != EvsNone) { if (publicType.qualifier.storage == EvqVaryingIn) { if (! intermediate.setVertexSpacing(publicType.shaderQualifiers.spacing)) error(loc, "cannot change previously set vertex spacing", TQualifier::getVertexSpacingString(publicType.shaderQualifiers.spacing), ""); } else error(loc, "can only apply to 'in'", TQualifier::getVertexSpacingString(publicType.shaderQualifiers.spacing), ""); } if (publicType.shaderQualifiers.order != EvoNone) { if (publicType.qualifier.storage == EvqVaryingIn) { if (! intermediate.setVertexOrder(publicType.shaderQualifiers.order)) error(loc, "cannot change previously set vertex order", TQualifier::getVertexOrderString(publicType.shaderQualifiers.order), ""); } else error(loc, "can only apply to 'in'", TQualifier::getVertexOrderString(publicType.shaderQualifiers.order), ""); } if (publicType.shaderQualifiers.pointMode) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setPointMode(); else error(loc, "can only apply to 'in'", "point_mode", ""); } for (int i = 0; i < 3; ++i) { if (publicType.shaderQualifiers.localSizeNotDefault[i]) { if (publicType.qualifier.storage == EvqVaryingIn) { if (! intermediate.setLocalSize(i, publicType.shaderQualifiers.localSize[i])) error(loc, "cannot change previously set size", "local_size", ""); else { int max = 0; if (language == EShLangCompute) { switch (i) { case 0: max = resources.maxComputeWorkGroupSizeX; break; case 1: max = resources.maxComputeWorkGroupSizeY; break; case 2: max = resources.maxComputeWorkGroupSizeZ; break; default: break; } if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); } else if (language == EShLangMesh) { switch (i) { 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) { 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 = 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) { TString maxsErrtring = "too large, see "; maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? "gl_MaxTaskWorkGroupSizeEXT" : "gl_MaxTaskWorkGroupSizeNV"); error(loc, maxsErrtring.c_str(), "local_size", ""); } } else { assert(0); } // Fix the existing constant gl_WorkGroupSize with this new information. TVariable* workGroupSize = getEditableVariable("gl_WorkGroupSize"); if (workGroupSize != nullptr) workGroupSize->getWritableConstArray()[i].setUConst(intermediate.getLocalSize(i)); } } else error(loc, "can only apply to 'in'", "local_size", ""); } if (publicType.shaderQualifiers.localSizeSpecId[i] != TQualifier::layoutNotSet) { if (publicType.qualifier.storage == EvqVaryingIn) { if (! intermediate.setLocalSizeSpecId(i, publicType.shaderQualifiers.localSizeSpecId[i])) error(loc, "cannot change previously set size", "local_size", ""); } else error(loc, "can only apply to 'in'", "local_size id", ""); // Set the workgroup built-in variable as a specialization constant TVariable* workGroupSize = getEditableVariable("gl_WorkGroupSize"); if (workGroupSize != nullptr) workGroupSize->getWritableType().getQualifier().specConstant = true; } } if (publicType.shaderQualifiers.earlyFragmentTests) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setEarlyFragmentTests(); 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(); else error(loc, "can only apply to 'in'", "post_coverage_coverage", ""); } if (publicType.shaderQualifiers.nonCoherentColorAttachmentReadEXT) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setNonCoherentColorAttachmentReadEXT(); else error(loc, "can only apply to 'in'", "non_coherent_color_attachment_readEXT", ""); } if (publicType.shaderQualifiers.nonCoherentDepthAttachmentReadEXT) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setNonCoherentDepthAttachmentReadEXT(); else error(loc, "can only apply to 'in'", "non_coherent_depth_attachment_readEXT", ""); } if (publicType.shaderQualifiers.nonCoherentStencilAttachmentReadEXT) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setNonCoherentStencilAttachmentReadEXT(); else error(loc, "can only apply to 'in'", "non_coherent_stencil_attachment_readEXT", ""); } if (publicType.shaderQualifiers.layoutNonCoherentTileAttachmentReadQCOM) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setNonCoherentTileAttachmentReadQCOM(); else error(loc, "can only apply to 'in'", "non_coherent_attachment_readQCOM", ""); } if (publicType.shaderQualifiers.hasBlendEquation()) { if (publicType.qualifier.storage != EvqVaryingOut) error(loc, "can only apply to 'out'", "blend equation", ""); } if (publicType.shaderQualifiers.interlockOrdering) { if (publicType.qualifier.storage == EvqVaryingIn) { if (!intermediate.setInterlockOrdering(publicType.shaderQualifiers.interlockOrdering)) error(loc, "cannot change previously set fragment shader interlock ordering", TQualifier::getInterlockOrderingString(publicType.shaderQualifiers.interlockOrdering), ""); } else error(loc, "can only apply to 'in'", TQualifier::getInterlockOrderingString(publicType.shaderQualifiers.interlockOrdering), ""); } if (publicType.shaderQualifiers.layoutDerivativeGroupQuads && publicType.shaderQualifiers.layoutDerivativeGroupLinear) { error(loc, "cannot be both specified", "derivative_group_quadsNV and derivative_group_linearNV", ""); } if (publicType.shaderQualifiers.layoutDerivativeGroupQuads) { if (publicType.qualifier.storage == EvqVaryingIn) { if ((intermediate.getLocalSizeSpecId(0) == TQualifier::layoutNotSet && (intermediate.getLocalSize(0) & 1)) || (intermediate.getLocalSizeSpecId(1) == TQualifier::layoutNotSet && (intermediate.getLocalSize(1) & 1))) error(loc, "requires local_size_x and local_size_y to be multiple of two", "derivative_group_quadsNV", ""); else intermediate.setLayoutDerivativeMode(LayoutDerivativeGroupQuads); } else error(loc, "can only apply to 'in'", "derivative_group_quadsNV", ""); } if (publicType.shaderQualifiers.layoutDerivativeGroupLinear) { if (publicType.qualifier.storage == EvqVaryingIn) { if (intermediate.getLocalSizeSpecId(0) == TQualifier::layoutNotSet && intermediate.getLocalSizeSpecId(1) == TQualifier::layoutNotSet && intermediate.getLocalSizeSpecId(2) == TQualifier::layoutNotSet && (intermediate.getLocalSize(0) * intermediate.getLocalSize(1) * intermediate.getLocalSize(2)) % 4 != 0) error(loc, "requires total group size to be multiple of four", "derivative_group_linearNV", ""); else intermediate.setLayoutDerivativeMode(LayoutDerivativeGroupLinear); } else 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 == EShLangMesh) && (intermediate.getVertices() != TQualifier::layoutNotSet) && (intermediate.getPrimitives() != TQualifier::layoutNotSet) && (intermediate.getOutputPrimitive() != ElgNone)) { checkIoArraysConsistency(loc); } if (publicType.shaderQualifiers.layoutPrimitiveCulling) { if (publicType.qualifier.storage != EvqTemporary) error(loc, "layout qualifier cannot have storage qualifiers", "primitive_culling", "", ""); else { intermediate.setLayoutPrimitiveCulling(); } // Exit early as further checks are not valid return; } for (int i = 0; i < 3; ++i) { if (publicType.shaderQualifiers.layoutTileShadingRateQCOMNotDefault[i]) { if (publicType.qualifier.storage == EvqVaryingIn) { if (! intermediate.setTileShadingRateQCOM(i, publicType.shaderQualifiers.layoutTileShadingRateQCOM[i])) error(loc, "cannot change previously set size", (i==0?"shading_rate_xQCOM":(i==1?"shading_rate_yQCOM":"shading_rate_zQCOM")), ""); } else error(loc, "can only apply to 'in'", (i==0?"shading_rate_xQCOM":(i==1?"shading_rate_yQCOM":"shading_rate_zQCOM")), ""); } } const TQualifier& qualifier = publicType.qualifier; if (qualifier.isAuxiliary() || qualifier.isMemory() || qualifier.isInterpolation() || qualifier.precision != EpqNone) error(loc, "cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)", "qualifier", ""); // "The offset qualifier can only be used on block members of blocks..." // "The align qualifier can only be used on blocks or block members..." if (qualifier.hasOffset() || qualifier.hasAlign()) error(loc, "cannot use offset or align qualifiers in a default qualifier declaration (declaration with no type)", "layout qualifier", ""); layoutQualifierCheck(loc, qualifier); switch (qualifier.storage) { case EvqUniform: if (qualifier.hasMatrix()) globalUniformDefaults.layoutMatrix = qualifier.layoutMatrix; if (qualifier.hasPacking()) globalUniformDefaults.layoutPacking = qualifier.layoutPacking; break; case EvqBuffer: if (qualifier.hasMatrix()) globalBufferDefaults.layoutMatrix = qualifier.layoutMatrix; if (qualifier.hasPacking()) globalBufferDefaults.layoutPacking = qualifier.layoutPacking; break; case EvqVaryingIn: break; case EvqVaryingOut: if (qualifier.hasStream()) globalOutputDefaults.layoutStream = qualifier.layoutStream; if (qualifier.hasXfbBuffer()) globalOutputDefaults.layoutXfbBuffer = qualifier.layoutXfbBuffer; if (globalOutputDefaults.hasXfbBuffer() && qualifier.hasXfbStride()) { if (! intermediate.setXfbBufferStride(globalOutputDefaults.layoutXfbBuffer, qualifier.layoutXfbStride)) error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer); } break; case EvqShared: if (qualifier.hasMatrix()) globalSharedDefaults.layoutMatrix = qualifier.layoutMatrix; if (qualifier.hasPacking()) globalSharedDefaults.layoutPacking = qualifier.layoutPacking; break; default: error(loc, "default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification", "", ""); return; } if (qualifier.hasBinding()) error(loc, "cannot declare a default, include a type or full declaration", "binding", ""); if (qualifier.hasAnyLocation()) error(loc, "cannot declare a default, use a full declaration", "location/component/index", ""); if (qualifier.hasXfbOffset()) error(loc, "cannot declare a default, use a full declaration", "xfb_offset", ""); if (qualifier.isPushConstant()) error(loc, "cannot declare a default, can only be used on a block", "push_constant", ""); if (qualifier.hasBufferReference()) error(loc, "cannot declare a default, can only be used on a block", "buffer_reference", ""); if (qualifier.hasSpecConstantId()) error(loc, "cannot declare a default, can only be used on a scalar", "constant_id", ""); if (qualifier.isShaderRecord()) error(loc, "cannot declare a default, can only be used on a block", "shaderRecordNV", ""); } // // Take the sequence of statements that has been built up since the last case/default, // put it on the list of top-level nodes for the current (inner-most) switch statement, // and follow that by the case/default we are on now. (See switch topology comment on // TIntermSwitch.) // void TParseContext::wrapupSwitchSubsequence(TIntermAggregate* statements, TIntermNode* branchNode) { TIntermSequence* switchSequence = switchSequenceStack.back(); if (statements) { if (switchSequence->size() == 0) error(statements->getLoc(), "cannot have statements before first case/default label", "switch", ""); statements->setOperator(EOpSequence); switchSequence->push_back(statements); } if (branchNode) { // check all previous cases for the same label (or both are 'default') for (unsigned int s = 0; s < switchSequence->size(); ++s) { TIntermBranch* prevBranch = (*switchSequence)[s]->getAsBranchNode(); if (prevBranch) { TIntermTyped* prevExpression = prevBranch->getExpression(); TIntermTyped* newExpression = branchNode->getAsBranchNode()->getExpression(); if (prevExpression == nullptr && newExpression == nullptr) error(branchNode->getLoc(), "duplicate label", "default", ""); else if (prevExpression != nullptr && newExpression != nullptr && prevExpression->getAsConstantUnion() && newExpression->getAsConstantUnion() && prevExpression->getAsConstantUnion()->getConstArray()[0].getIConst() == newExpression->getAsConstantUnion()->getConstArray()[0].getIConst()) error(branchNode->getLoc(), "duplicated value", "case", ""); } } switchSequence->push_back(branchNode); } } // // Turn the top-level node sequence built up of wrapupSwitchSubsequence9) // into a switch node. // TIntermNode* TParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* expression, TIntermAggregate* lastStatements) { profileRequires(loc, EEsProfile, 300, nullptr, "switch statements"); profileRequires(loc, ENoProfile, 130, nullptr, "switch statements"); wrapupSwitchSubsequence(lastStatements, nullptr); if (expression == nullptr || (expression->getBasicType() != EbtInt && expression->getBasicType() != EbtUint) || expression->getType().isArray() || expression->getType().isMatrix() || expression->getType().isVector()) error(loc, "condition must be a scalar integer expression", "switch", ""); // If there is nothing to do, drop the switch but still execute the expression TIntermSequence* switchSequence = switchSequenceStack.back(); if (switchSequence->size() == 0) return expression; if (lastStatements == nullptr) { // This was originally an ERRROR, because early versions of the specification said // "it is an error to have no statement between a label and the end of the switch statement." // The specifications were updated to remove this (being ill-defined what a "statement" was), // so, this became a warning. However, 3.0 tests still check for the error. if (isEsProfile() && (version <= 300 || version >= 320) && ! relaxedErrors()) error(loc, "last case/default label not followed by statements", "switch", ""); else if (!isEsProfile() && (version <= 430 || version >= 460)) error(loc, "last case/default label not followed by statements", "switch", ""); else warn(loc, "last case/default label not followed by statements", "switch", ""); // emulate a break for error recovery lastStatements = intermediate.makeAggregate(intermediate.addBranch(EOpBreak, loc)); lastStatements->setOperator(EOpSequence); switchSequence->push_back(lastStatements); } TIntermAggregate* body = new TIntermAggregate(EOpSequence); body->getSequence() = *switchSequenceStack.back(); body->setLoc(loc); TIntermSwitch* switchNode = new TIntermSwitch(expression, body); switchNode->setLoc(loc); return switchNode; } // // When a struct used in block, and has it's own layout packing, layout matrix, // record the origin structure of a struct to map, and Record the structure copy to the copy table, // const TTypeList* TParseContext::recordStructCopy(TStructRecord& record, const TType* originType, const TType* tmpType) { size_t memberCount = tmpType->getStruct()->size(); size_t originHash = 0, tmpHash = 0; std::hash hasher; for (size_t i = 0; i < memberCount; i++) { size_t originMemberHash = hasher(originType->getStruct()->at(i).type->getQualifier().layoutPacking + originType->getStruct()->at(i).type->getQualifier().layoutMatrix); size_t tmpMemberHash = hasher(tmpType->getStruct()->at(i).type->getQualifier().layoutPacking + tmpType->getStruct()->at(i).type->getQualifier().layoutMatrix); originHash = hasher((originHash ^ originMemberHash) << 1); tmpHash = hasher((tmpHash ^ tmpMemberHash) << 1); } const TTypeList* originStruct = originType->getStruct(); const TTypeList* tmpStruct = tmpType->getStruct(); if (originHash != tmpHash) { auto fixRecords = record.find(originStruct); if (fixRecords != record.end()) { auto fixRecord = fixRecords->second.find(tmpHash); if (fixRecord != fixRecords->second.end()) { return fixRecord->second; } else { record[originStruct][tmpHash] = tmpStruct; return tmpStruct; } } else { record[originStruct] = std::map(); record[originStruct][tmpHash] = tmpStruct; return tmpStruct; } } return originStruct; } TLayoutFormat TParseContext::mapLegacyLayoutFormat(TLayoutFormat legacyLayoutFormat, TBasicType imageType) { TLayoutFormat layoutFormat = ElfNone; if (imageType == EbtFloat) { switch (legacyLayoutFormat) { case ElfSize1x16: layoutFormat = ElfR16f; break; case ElfSize1x32: layoutFormat = ElfR32f; break; case ElfSize2x32: layoutFormat = ElfRg32f; break; case ElfSize4x32: layoutFormat = ElfRgba32f; break; default: break; } } else if (imageType == EbtUint) { switch (legacyLayoutFormat) { case ElfSize1x8: layoutFormat = ElfR8ui; break; case ElfSize1x16: layoutFormat = ElfR16ui; break; case ElfSize1x32: layoutFormat = ElfR32ui; break; case ElfSize2x32: layoutFormat = ElfRg32ui; break; case ElfSize4x32: layoutFormat = ElfRgba32ui; break; default: break; } } else if (imageType == EbtInt) { switch (legacyLayoutFormat) { case ElfSize1x8: layoutFormat = ElfR8i; break; case ElfSize1x16: layoutFormat = ElfR16i; break; case ElfSize1x32: layoutFormat = ElfR32i; break; case ElfSize2x32: layoutFormat = ElfRg32i; break; case ElfSize4x32: layoutFormat = ElfRgba32i; break; default: break; } } return layoutFormat; } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/ParseHelper.h000066400000000000000000001015411506534232700227720ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // This header defines a two-level parse-helper hierarchy, derived from // TParseVersions: // - TParseContextBase: sharable across multiple parsers // - TParseContext: GLSL specific helper // #ifndef _PARSER_HELPER_INCLUDED_ #define _PARSER_HELPER_INCLUDED_ #include #include #include "parseVersions.h" #include "../Include/ShHandle.h" #include "SymbolTable.h" #include "localintermediate.h" #include "Scan.h" #include "attribute.h" namespace glslang { struct TPragma { TPragma(bool o, bool d) : optimize(o), debug(d) { } bool optimize; bool debug; TPragmaTable pragmaTable; }; class TScanContext; class TPpContext; typedef std::set TIdSetType; typedef std::map> TStructRecord; // // Sharable code (as well as what's in TParseVersions) across // parse helpers. // class TParseContextBase : public TParseVersions { public: TParseContextBase(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages, const TString* entryPoint = nullptr) : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), scopeMangler("::"), symbolTable(symbolTable), statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), blockNestingLevel(0), controlFlowNestingLevel(0), currentFunctionType(nullptr), postEntryPointReturn(false), contextPragma(true, false), beginInvocationInterlockCount(0), endInvocationInterlockCount(0), parsingBuiltins(parsingBuiltins), scanContext(nullptr), ppContext(nullptr), limits(resources.limits), globalUniformBlock(nullptr), globalUniformBinding(TQualifier::layoutBindingEnd), globalUniformSet(TQualifier::layoutSetEnd), atomicCounterBlockSet(TQualifier::layoutSetEnd) { // use storage buffer on SPIR-V 1.3 and up if (spvVersion.spv >= EShTargetSpv_1_3) intermediate.setUseStorageBuffer(); if (entryPoint != nullptr) sourceEntryPointName = *entryPoint; } virtual ~TParseContextBase() { } virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); virtual void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); virtual void setLimits(const TBuiltInResource&) = 0; void checkIndex(const TSourceLoc&, const TType&, int& index); EShLanguage getLanguage() const { return language; } void setScanContext(TScanContext* c) { scanContext = c; } TScanContext* getScanContext() const { return scanContext; } void setPpContext(TPpContext* c) { ppContext = c; } TPpContext* getPpContext() const { return ppContext; } virtual void setLineCallback(const std::function& func) { lineCallback = func; } virtual void setExtensionCallback(const std::function& func) { extensionCallback = func; } virtual void setVersionCallback(const std::function& func) { versionCallback = func; } virtual void setPragmaCallback(const std::function&)>& func) { pragmaCallback = func; } virtual void setErrorCallback(const std::function& func) { errorCallback = func; } virtual void reservedPpErrorCheck(const TSourceLoc&, const char* name, const char* op) = 0; virtual bool lineContinuationCheck(const TSourceLoc&, bool endOfComment) = 0; virtual bool lineDirectiveShouldSetNextLine() const = 0; virtual void handlePragma(const TSourceLoc&, const TVector&) = 0; virtual bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false) = 0; virtual void notifyVersion(int line, int version, const char* type_string) { if (versionCallback) versionCallback(line, version, type_string); } virtual void notifyErrorDirective(int line, const char* error_message) { if (errorCallback) errorCallback(line, error_message); } virtual void notifyLineDirective(int curLineNo, int newLineNo, bool hasSource, int sourceNum, const char* sourceName) { if (lineCallback) lineCallback(curLineNo, newLineNo, hasSource, sourceNum, sourceName); } virtual void notifyExtensionDirective(int line, const char* extension, const char* behavior) { if (extensionCallback) extensionCallback(line, extension, behavior); } // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr); // Manage global buffer (used for backing atomic counters in GLSL when using relaxed Vulkan semantics) virtual void growAtomicCounterBlock(int binding, const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr); // Potentially rename shader entry point function void renameShaderFunction(TString*& name) const { // Replace the entry point name given in the shader with the real entry point name, // if there is a substitution. if (name != nullptr && *name == sourceEntryPointName && intermediate.getEntryPointName().size() > 0) name = NewPoolTString(intermediate.getEntryPointName().c_str()); } virtual bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); virtual void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); const char* const scopeMangler; // Basic parsing state, easily accessible to the grammar TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile TVector relaxedSymbols; int statementNestingLevel; // 0 if outside all flow control or compound statements int loopNestingLevel; // 0 if outside all loops int structNestingLevel; // 0 if outside structures int blockNestingLevel; // 0 if outside blocks int controlFlowNestingLevel; // 0 if outside all flow control const TType* currentFunctionType; // the return type of the function that's currently being parsed bool functionReturnsValue; // true if a non-void function has a return // if inside a function, true if the function is the entry point and this is after a return statement bool postEntryPointReturn; // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting TList switchSequenceStack; // the statementNestingLevel the current switch statement is at, which must match the level of its case statements TList switchLevel; struct TPragma contextPragma; int beginInvocationInterlockCount; int endInvocationInterlockCount; bool compileOnly = false; protected: TParseContextBase(TParseContextBase&); TParseContextBase& operator=(TParseContextBase&); const bool parsingBuiltins; // true if parsing built-in symbols/functions TVector linkageSymbols; // will be transferred to 'linkage', after all editing is done, order preserving TScanContext* scanContext; TPpContext* ppContext; TBuiltInResource resources; TLimits& limits; TString sourceEntryPointName; // These, if set, will be called when a line, pragma ... is preprocessed. // They will be called with any parameters to the original directive. std::function lineCallback; std::function&)> pragmaCallback; std::function versionCallback; std::function extensionCallback; std::function errorCallback; // see implementation for detail const TFunction* selectFunction(const TVector, const TFunction&, std::function, std::function, /* output */ bool& tie); virtual void parseSwizzleSelector(const TSourceLoc&, const TString&, int size, TSwizzleSelectors&); // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) TVariable* globalUniformBlock; // the actual block, inserted into the symbol table unsigned int globalUniformBinding; // the block's binding number unsigned int globalUniformSet; // the block's set number int firstNewMember; // the index of the first member not yet inserted into the symbol table // override this to set the language-specific name virtual const char* getGlobalUniformBlockName() const { return ""; } virtual void setUniformBlockDefaults(TType&) const { } virtual void finalizeGlobalUniformBlockLayout(TVariable&) {} // Manage the atomic counter block (used for atomic_uints with Vulkan-Relaxed) TMap atomicCounterBuffers; unsigned int atomicCounterBlockSet; TMap atomicCounterBlockFirstNewMember; // override this to set the language-specific name virtual const char* getAtomicCounterBlockName() const { return ""; } virtual void setAtomicCounterBlockDefaults(TType&) const {} virtual void setInvariant(const TSourceLoc&, const char*) {} virtual void finalizeAtomicCounterBlockLayout(TVariable&) {} bool isAtomicCounterBlock(const TSymbol& symbol) { const TVariable* var = symbol.getAsVariable(); if (!var) return false; const auto& at = atomicCounterBuffers.find(var->getType().getQualifier().layoutBinding); return (at != atomicCounterBuffers.end() && (*at).second->getType() == var->getType()); } virtual void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, TPrefixType prefix, va_list args); virtual void trackLinkage(TSymbol& symbol); virtual void makeEditable(TSymbol*&); virtual TVariable* getEditableVariable(const char* name); virtual void finish(); }; // // Manage the state for when to respect precision qualifiers and when to warn about // the defaults being different than might be expected. // class TPrecisionManager { public: TPrecisionManager() : obey(false), warn(false), explicitIntDefault(false), explicitFloatDefault(false){ } virtual ~TPrecisionManager() {} void respectPrecisionQualifiers() { obey = true; } bool respectingPrecisionQualifiers() const { return obey; } bool shouldWarnAboutDefaults() const { return warn; } void defaultWarningGiven() { warn = false; } void warnAboutDefaults() { warn = true; } void explicitIntDefaultSeen() { explicitIntDefault = true; if (explicitFloatDefault) warn = false; } void explicitFloatDefaultSeen() { explicitFloatDefault = true; if (explicitIntDefault) warn = false; } protected: bool obey; // respect precision qualifiers bool warn; // need to give a warning about the defaults bool explicitIntDefault; // user set the default for int/uint bool explicitFloatDefault; // user set the default for float }; // // GLSL-specific parse helper. Should have GLSL in the name, but that's // too big of a change for comparing branches at the moment, and perhaps // impacts downstream consumers as well. // class TParseContext : public TParseContextBase { public: TParseContext(TSymbolTable&, TIntermediate&, bool parsingBuiltins, int version, EProfile, const SpvVersion& spvVersion, EShLanguage, TInfoSink&, bool forwardCompatible = false, EShMessages messages = EShMsgDefault, const TString* entryPoint = nullptr); virtual ~TParseContext(); bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); } void setPrecisionDefaults(); void setLimits(const TBuiltInResource&) override; bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false) override; void parserError(const char* s); // for bison's yyerror virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override; virtual void growAtomicCounterBlock(int binding, const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override; void reservedErrorCheck(const TSourceLoc&, const TString&); void reservedPpErrorCheck(const TSourceLoc&, const char* name, const char* op) override; bool lineContinuationCheck(const TSourceLoc&, bool endOfComment) override; bool lineDirectiveShouldSetNextLine() const override; bool builtInName(const TString&); void handlePragma(const TSourceLoc&, const TVector&) override; TIntermTyped* handleVariable(const TSourceLoc&, TSymbol* symbol, const TString* string); TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void handleIndexLimits(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void makeEditable(TSymbol*&) override; void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier); bool isIoResizeArray(const TType&) const; void fixIoArraySize(const TSourceLoc&, TType&); void handleIoResizeArrayAccess(const TSourceLoc&, TIntermTyped* base); void checkIoArraysConsistency(const TSourceLoc&, bool tailOnly = false); int getIoArrayImplicitSize(const TQualifier&, TString* featureString = nullptr) const; void checkIoArrayConsistency(const TSourceLoc&, int requiredSize, const char* feature, TType&, const TString&); TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right); TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode); TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field); TIntermTyped* handleDotSwizzle(const TSourceLoc&, TIntermTyped* base, const TString& field); void blockMemberExtensionCheck(const TSourceLoc&, const TIntermTyped* base, int member, const TString& memberName); TFunction* handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype); TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&); TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*); TIntermTyped* handleBuiltInFunctionCall(TSourceLoc, TIntermNode* arguments, const TFunction& function); void computeBuiltinPrecisions(TIntermTyped&, const TFunction&); TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*); void checkLocation(const TSourceLoc&, TOperator); TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*); void addInputArgumentConversions(const TFunction&, TIntermNode*&) const; TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&) const; TIntermTyped* addAssign(const TSourceLoc&, TOperator op, TIntermTyped* left, TIntermTyped* right); void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&); void nonOpBuiltInCheck(const TSourceLoc&, const TFunction&, TIntermAggregate&); void userFunctionCallCheck(const TSourceLoc&, TIntermAggregate&); void samplerConstructorLocationCheck(const TSourceLoc&, const char* token, TIntermNode*); TFunction* handleConstructorCall(const TSourceLoc&, const TPublicType&); void handlePrecisionQualifier(const TSourceLoc&, TQualifier&, TPrecisionQualifier); void checkPrecisionQualifier(const TSourceLoc&, TPrecisionQualifier); void memorySemanticsCheck(const TSourceLoc&, const TFunction&, const TIntermOperator& callNode); TIntermTyped* vkRelaxedRemapFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*); // returns true if the variable was remapped to something else bool vkRelaxedRemapUniformVariable(const TSourceLoc&, TString&, const TPublicType&, TArraySizes*, TIntermTyped*, TType&); void vkRelaxedRemapUniformMembers(const TSourceLoc&, const TPublicType&, const TType&, const TString&); void vkRelaxedRemapFunctionParameter(TFunction*, TParameter&, std::vector* newParams = nullptr); TIntermNode* vkRelaxedRemapFunctionArgument(const TSourceLoc&, TFunction*, TIntermTyped*); TIntermTyped* vkRelaxedRemapDotDereference(const TSourceLoc&, TIntermTyped&, const TType&, const TString&); void assignError(const TSourceLoc&, const char* op, TString left, TString right); void unaryOpError(const TSourceLoc&, const char* op, TString operand); void binaryOpError(const TSourceLoc&, const char* op, TString left, TString right); void variableCheck(TIntermTyped*& nodePtr); bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; void constantValueCheck(TIntermTyped* node, const char* token); void integerCheck(const TIntermTyped* node, const char* token); void globalCheck(const TSourceLoc&, const char* token); bool constructorError(const TSourceLoc&, TIntermNode*, TFunction&, TOperator, TType&); bool constructorTextureSamplerError(const TSourceLoc&, const TFunction&); void arraySizeCheck(const TSourceLoc&, TIntermTyped* expr, TArraySize&, const char *sizeType, const bool isTypeParameter = false); bool arrayQualifierError(const TSourceLoc&, const TQualifier&); bool arrayError(const TSourceLoc&, const TType&); void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&); void structArrayCheck(const TSourceLoc&, const TType& structure); void arraySizesCheck(const TSourceLoc&, const TQualifier&, TArraySizes*, const TIntermTyped* initializer, bool lastMember); void arrayOfArrayVersionCheck(const TSourceLoc&, const TArraySizes*); bool voidErrorCheck(const TSourceLoc&, const TString&, TBasicType); void boolCheck(const TSourceLoc&, const TIntermTyped*); void boolCheck(const TSourceLoc&, const TPublicType&); void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer); void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier); void accStructCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); void hitObjectNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier); void memberQualifierCheck(glslang::TPublicType&); void globalQualifierFixCheck(const TSourceLoc&, TQualifier&, bool isMemberCheck = false, const TPublicType* publicType = nullptr); void globalQualifierTypeCheck(const TSourceLoc&, const TQualifier&, const TPublicType&); bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType); void mergeQualifiers(const TSourceLoc&, TQualifier& dst, const TQualifier& src, bool force); void setDefaultPrecision(const TSourceLoc&, TPublicType&, TPrecisionQualifier); int computeSamplerTypeIndex(TSampler&); TPrecisionQualifier getDefaultPrecision(TPublicType&); void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&, bool hasTypeParameter); void parameterTypeCheck(const TSourceLoc&, TStorageQualifier qualifier, const TType& type); bool containsFieldWithBasicType(const TType& type ,TBasicType basicType); TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&); void redeclareBuiltinBlock(const TSourceLoc&, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes); void paramCheckFixStorage(const TSourceLoc&, const TStorageQualifier&, TType& type); void paramCheckFix(const TSourceLoc&, const TQualifier&, TType& type); void nestedBlockCheck(const TSourceLoc&); void nestedStructCheck(const TSourceLoc&); void arrayObjectCheck(const TSourceLoc&, const TType&, const char* op); void opaqueCheck(const TSourceLoc&, const TType&, const char* op); void referenceCheck(const TSourceLoc&, const TType&, const char* op); void storage16BitAssignmentCheck(const TSourceLoc&, const TType&, const char* op); void specializationCheck(const TSourceLoc&, const TType&, const char* op); void structTypeCheck(const TSourceLoc&, TPublicType&); void inductiveLoopCheck(const TSourceLoc&, TIntermNode* init, TIntermLoop* loop); void arrayLimitCheck(const TSourceLoc&, const TString&, int size); void limitCheck(const TSourceLoc&, int value, const char* limit, const char* feature); void typeParametersCheck(const TSourceLoc&, const TPublicType&); void inductiveLoopBodyCheck(TIntermNode*, long long loopIndexId, TSymbolTable&); void constantIndexExpressionCheck(TIntermNode*); void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&); void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&, const TIntermTyped*); void mergeObjectLayoutQualifiers(TQualifier& dest, const TQualifier& src, bool inheritOnly); void layoutObjectCheck(const TSourceLoc&, const TSymbol&); void layoutMemberLocationArrayCheck(const TSourceLoc&, bool memberWithLocation, TArraySizes* arraySizes); void layoutTypeCheck(const TSourceLoc&, const TType&); void layoutQualifierCheck(const TSourceLoc&, const TQualifier&); void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&); void fixOffset(const TSourceLoc&, TSymbol&); const TFunction* findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn); const TFunction* findFunctionExact(const TSourceLoc& loc, const TFunction& call, bool& builtIn); const TFunction* findFunction120(const TSourceLoc& loc, const TFunction& call, bool& builtIn); const TFunction* findFunction400(const TSourceLoc& loc, const TFunction& call, bool& builtIn); const TFunction* findFunctionExplicitTypes(const TSourceLoc& loc, const TFunction& call, bool& builtIn); void declareTypeDefaults(const TSourceLoc&, const TPublicType&); TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, const TPublicType&, TArraySizes* typeArray = nullptr, TIntermTyped* initializer = nullptr); TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&); TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); void makeVariadic(TFunction *F, const TSourceLoc &loc); TParameter getParamWithDefault(const TPublicType& ty, TString* identifier, TIntermTyped* initializer, const TSourceLoc& loc); void inheritMemoryQualifiers(const TQualifier& from, TQualifier& to); void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = nullptr, TArraySizes* arraySizes = nullptr); void blockStorageRemap(const TSourceLoc&, const TString*, TQualifier&); void blockStageIoCheck(const TSourceLoc&, const TQualifier&); void blockQualifierCheck(const TSourceLoc&, const TQualifier&, bool instanceName); void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation); void fixXfbOffsets(TQualifier&, TTypeList&); void fixBlockUniformOffsets(TQualifier&, TTypeList&); void fixBlockUniformLayoutMatrix(TQualifier&, TTypeList*, TTypeList*); void fixBlockUniformLayoutPacking(TQualifier&, TTypeList*, TTypeList*); void addQualifierToExisting(const TSourceLoc&, TQualifier, const TString& identifier); void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&); void invariantCheck(const TSourceLoc&, const TQualifier&); void updateStandaloneQualifierDefaults(const TSourceLoc&, const TPublicType&); void updateBindlessQualifier(TType& memberType); void wrapupSwitchSubsequence(TIntermAggregate* statements, TIntermNode* branchNode); TIntermNode* addSwitch(const TSourceLoc&, TIntermTyped* expression, TIntermAggregate* body); const TTypeList* recordStructCopy(TStructRecord&, const TType*, const TType*); TLayoutFormat mapLegacyLayoutFormat(TLayoutFormat legacyLayoutFormat, TBasicType imageType); TAttributeType attributeFromName(const TString& name) const; TAttributes* makeAttributes(const TString& identifier) const; TAttributes* makeAttributes(const TString& identifier, TIntermNode* node) const; TAttributes* mergeAttributes(TAttributes*, TAttributes*) const; // Determine selection control from attributes void handleSelectionAttributes(const TAttributes& attributes, TIntermNode*); void handleSwitchAttributes(const TAttributes& attributes, TIntermNode*); // Determine loop control from attributes void handleLoopAttributes(const TAttributes& attributes, TIntermNode*); // Function attributes void handleFunctionAttributes(const TSourceLoc&, const TAttributes&); // GL_EXT_spirv_intrinsics TSpirvRequirement* makeSpirvRequirement(const TSourceLoc& loc, const TString& name, const TIntermAggregate* extensions, const TIntermAggregate* capabilities); TSpirvRequirement* mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1, TSpirvRequirement* spirvReq2); TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant); TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TPublicType& type); TSpirvTypeParameters* mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2); TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value); TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, int value); TSpirvInstruction* mergeSpirvInstruction(const TSourceLoc& loc, TSpirvInstruction* spirvInst1, TSpirvInstruction* spirvInst2); void checkAndResizeMeshViewDim(const TSourceLoc&, TType&, bool isBlockMember); protected: void nonInitConstCheck(const TSourceLoc&, TString& identifier, TType& type); void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&); void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&); void checkRuntimeSizable(const TSourceLoc&, const TIntermTyped&); bool isRuntimeLength(const TIntermTyped&) const; TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); void finish() override; void handleCoopMat2FunctionCall(const TSourceLoc& loc, const TFunction* fnCandidate, TIntermTyped* result, TIntermNode* arguments); void handleVector2CoopMatConversionCall(const TSourceLoc& loc, const TFunction* fnCandidate, TIntermTyped* &result, TIntermNode* arguments); virtual const char* getGlobalUniformBlockName() const override; virtual void finalizeGlobalUniformBlockLayout(TVariable&) override; virtual void setUniformBlockDefaults(TType& block) const override; virtual const char* getAtomicCounterBlockName() const override; virtual void finalizeAtomicCounterBlockLayout(TVariable&) override; virtual void setAtomicCounterBlockDefaults(TType& block) const override; virtual void setInvariant(const TSourceLoc& loc, const char* builtin) override; public: // // Generally, bison productions, the scanner, and the PP need read/write access to these; just give them direct access // // Current state of parsing bool inMain; // if inside a function, true if the function is main const TString* blockName; TQualifier currentBlockQualifier; TPrecisionQualifier defaultPrecision[EbtNumTypes]; TBuiltInResource resources; TLimits& limits; protected: TParseContext(TParseContext&); TParseContext& operator=(TParseContext&); static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2 * 2 * 2)); // see computeSamplerTypeIndex() TPrecisionQualifier defaultSamplerPrecision[maxSamplerIndex]; TPrecisionManager precisionManager; TQualifier globalBufferDefaults; TQualifier globalUniformDefaults; TQualifier globalInputDefaults; TQualifier globalOutputDefaults; TQualifier globalSharedDefaults; TString currentCaller; // name of last function body entered (not valid when at global scope) int* atomicUintOffsets; // to become an array of the right size to hold an offset per binding point bool anyIndexLimits; TIdSetType inductiveLoopIds; TVector needsIndexLimitationChecking; TStructRecord matrixFixRecord; TStructRecord packingFixRecord; // // Geometry shader input arrays: // - array sizing is based on input primitive and/or explicit size // // Tessellation control output arrays: // - array sizing is based on output layout(vertices=...) and/or explicit size // // Both: // - array sizing is retroactive // - built-in block redeclarations interact with this // // Design: // - use a per-context "resize-list", a list of symbols whose array sizes // can be fixed // // - the resize-list starts empty at beginning of user-shader compilation, it does // not have built-ins in it // // - on built-in array use: copyUp() symbol and add it to the resize-list // // - on user array declaration: add it to the resize-list // // - on block redeclaration: copyUp() symbol and add it to the resize-list // * note, that appropriately gives an error if redeclaring a block that // was already used and hence already copied-up // // - on seeing a layout declaration that sizes the array, fix everything in the // resize-list, giving errors for mismatch // // - on seeing an array size declaration, give errors on mismatch between it and previous // array-sizing declarations // TVector ioArraySymbolResizeList; }; } // end namespace glslang #endif // _PARSER_HELPER_INCLUDED_ glslang-16.0.0/glslang/MachineIndependent/PoolAlloc.cpp000066400000000000000000000220761506534232700230040ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "../Include/Common.h" #include "../Include/PoolAlloc.h" // Mostly here for target that do not support threads such as WASI. #ifdef DISABLE_THREAD_SUPPORT #define THREAD_LOCAL #else #define THREAD_LOCAL thread_local #endif namespace glslang { namespace { THREAD_LOCAL TPoolAllocator* threadPoolAllocator = nullptr; TPoolAllocator* GetDefaultThreadPoolAllocator() { THREAD_LOCAL TPoolAllocator defaultAllocator; return &defaultAllocator; } } // anonymous namespace // Return the thread-specific current pool. TPoolAllocator& GetThreadPoolAllocator() { return *(threadPoolAllocator ? threadPoolAllocator : GetDefaultThreadPoolAllocator()); } // Set the thread-specific current pool. void SetThreadPoolAllocator(TPoolAllocator* poolAllocator) { threadPoolAllocator = poolAllocator; } // // Implement the functionality of the TPoolAllocator class, which // is documented in PoolAlloc.h. // TPoolAllocator::TPoolAllocator(int growthIncrement, int allocationAlignment) : pageSize(growthIncrement), alignment(allocationAlignment), freeList(nullptr), inUseList(nullptr), numCalls(0) { // // Don't allow page sizes we know are smaller than all common // OS page sizes. // if (pageSize < 4*1024) pageSize = 4*1024; // // A large currentPageOffset indicates a new page needs to // be obtained to allocate memory. // currentPageOffset = pageSize; // // Adjust alignment to be at least pointer aligned and // power of 2. // size_t minAlign = sizeof(void*); alignment &= ~(minAlign - 1); if (alignment < minAlign) alignment = minAlign; size_t a = 1; while (a < alignment) a <<= 1; alignment = a; alignmentMask = a - 1; // // Align header skip // headerSkip = minAlign; if (headerSkip < sizeof(tHeader)) { headerSkip = (sizeof(tHeader) + alignmentMask) & ~alignmentMask; } push(); } TPoolAllocator::~TPoolAllocator() { while (inUseList) { tHeader* next = inUseList->nextPage; inUseList->~tHeader(); delete [] reinterpret_cast(inUseList); inUseList = next; } // // Always delete the free list memory - it can't be being // (correctly) referenced, whether the pool allocator was // global or not. We should not check the guard blocks // here, because we did it already when the block was // placed into the free list. // while (freeList) { tHeader* next = freeList->nextPage; delete [] reinterpret_cast(freeList); freeList = next; } } // // Check a single guard block for damage // #ifdef GUARD_BLOCKS void TAllocation::checkGuardBlock(unsigned char* blockMem, unsigned char val, const char* locText) const #else void TAllocation::checkGuardBlock(unsigned char*, unsigned char, const char*) const #endif { #ifdef GUARD_BLOCKS for (size_t x = 0; x < guardBlockSize; x++) { if (blockMem[x] != val) { const int maxSize = 80; char assertMsg[maxSize]; // We don't print the assert message. It's here just to be helpful. snprintf(assertMsg, maxSize, "PoolAlloc: Damage %s %zu byte allocation at 0x%p\n", locText, size, data()); assert(0 && "PoolAlloc: Damage in guard block"); } } #else assert(guardBlockSize == 0); #endif } void TPoolAllocator::push() { tAllocState state = { currentPageOffset, inUseList }; stack.push_back(state); // // Indicate there is no current page to allocate from. // currentPageOffset = pageSize; } // // Do a mass-deallocation of all the individual allocations // that have occurred since the last push(), or since the // last pop(), or since the object's creation. // // The deallocated pages are saved for future allocations. // void TPoolAllocator::pop() { if (stack.size() < 1) return; tHeader* page = stack.back().page; currentPageOffset = stack.back().offset; while (inUseList != page) { tHeader* nextInUse = inUseList->nextPage; size_t pageCount = inUseList->pageCount; // This technically ends the lifetime of the header as C++ object, // but we will still control the memory and reuse it. inUseList->~tHeader(); // currently, just a debug allocation checker if (pageCount > 1) { delete [] reinterpret_cast(inUseList); } else { inUseList->nextPage = freeList; freeList = inUseList; } inUseList = nextInUse; } stack.pop_back(); } // // Do a mass-deallocation of all the individual allocations // that have occurred. // void TPoolAllocator::popAll() { while (stack.size() > 0) pop(); } void* TPoolAllocator::allocate(size_t numBytes) { // If we are using guard blocks, all allocations are bracketed by // them: [guardblock][allocation][guardblock]. numBytes is how // much memory the caller asked for. allocationSize is the total // size including guard blocks. In release build, // guardBlockSize=0 and this all gets optimized away. size_t allocationSize = TAllocation::allocationSize(numBytes); // // Just keep some interesting statistics. // ++numCalls; totalBytes += numBytes; // // Do the allocation, most likely case first, for efficiency. // This step could be moved to be inline sometime. // if (currentPageOffset + allocationSize <= pageSize) { // // Safe to allocate from currentPageOffset. // unsigned char* memory = reinterpret_cast(inUseList) + currentPageOffset; currentPageOffset += allocationSize; currentPageOffset = (currentPageOffset + alignmentMask) & ~alignmentMask; return initializeAllocation(inUseList, memory, numBytes); } if (allocationSize + headerSkip > pageSize) { // // Do a multi-page allocation. Don't mix these with the others. // The OS is efficient and allocating and free-ing multiple pages. // size_t numBytesToAlloc = allocationSize + headerSkip; tHeader* memory = reinterpret_cast(::new char[numBytesToAlloc]); if (memory == nullptr) return nullptr; // Use placement-new to initialize header new(memory) tHeader(inUseList, (numBytesToAlloc + pageSize - 1) / pageSize); inUseList = memory; currentPageOffset = pageSize; // make next allocation come from a new page // No guard blocks for multi-page allocations (yet) return reinterpret_cast(reinterpret_cast(memory) + headerSkip); } // // Need a simple page to allocate from. // tHeader* memory; if (freeList) { memory = freeList; freeList = freeList->nextPage; } else { memory = reinterpret_cast(::new char[pageSize]); if (memory == nullptr) return nullptr; } // Use placement-new to initialize header new(memory) tHeader(inUseList, 1); inUseList = memory; unsigned char* ret = reinterpret_cast(inUseList) + headerSkip; currentPageOffset = (headerSkip + allocationSize + alignmentMask) & ~alignmentMask; return initializeAllocation(inUseList, ret, numBytes); } // // Check all allocations in a list for damage by calling check on each. // void TAllocation::checkAllocList() const { for (const TAllocation* alloc = this; alloc != nullptr; alloc = alloc->prevAlloc) alloc->check(); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/RemoveTree.cpp000066400000000000000000000060611506534232700231710ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "../Include/intermediate.h" #include "RemoveTree.h" namespace glslang { // // Code to recursively delete the intermediate tree. // struct TRemoveTraverser : TIntermTraverser { TRemoveTraverser() : TIntermTraverser(false, false, true, false) {} virtual void visitSymbol(TIntermSymbol* node) { delete node; } virtual bool visitBinary(TVisit /* visit*/ , TIntermBinary* node) { delete node; return true; } virtual bool visitUnary(TVisit /* visit */, TIntermUnary* node) { delete node; return true; } virtual bool visitAggregate(TVisit /* visit*/ , TIntermAggregate* node) { delete node; return true; } virtual bool visitSelection(TVisit /* visit*/ , TIntermSelection* node) { delete node; return true; } virtual bool visitSwitch(TVisit /* visit*/ , TIntermSwitch* node) { delete node; return true; } virtual void visitConstantUnion(TIntermConstantUnion* node) { delete node; } virtual bool visitLoop(TVisit /* visit*/ , TIntermLoop* node) { delete node; return true; } virtual bool visitBranch(TVisit /* visit*/ , TIntermBranch* node) { delete node; return true; } }; // // Entry point. // void RemoveAllTreeNodes(TIntermNode* root) { TRemoveTraverser it; root->traverse(&it); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/RemoveTree.h000066400000000000000000000032501506534232700226330ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #pragma once namespace glslang { void RemoveAllTreeNodes(TIntermNode*); } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/Scan.cpp000066400000000000000000002104551506534232700220040ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2020 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // GLSL scanning, leveraging the scanning done by the preprocessor. // #include #include #include #include "../Include/Types.h" #include "SymbolTable.h" #include "ParseHelper.h" #include "attribute.h" #include "glslang_tab.cpp.h" #include "ScanContext.h" #include "Scan.h" // preprocessor includes #include "preprocessor/PpContext.h" #include "preprocessor/PpTokens.h" // Required to avoid missing prototype warnings for some compilers int yylex(YYSTYPE*, glslang::TParseContext&); namespace glslang { // read past any white space void TInputScanner::consumeWhiteSpace(bool& foundNonSpaceTab) { int c = peek(); // don't accidentally consume anything other than whitespace while (c == ' ' || c == '\t' || c == '\r' || c == '\n') { if (c == '\r' || c == '\n') foundNonSpaceTab = true; get(); c = peek(); } } // return true if a comment was actually consumed bool TInputScanner::consumeComment() { if (peek() != '/') return false; get(); // consume the '/' int c = peek(); if (c == '/') { // a '//' style comment get(); // consume the second '/' c = get(); do { while (c != EndOfInput && c != '\\' && c != '\r' && c != '\n') c = get(); if (c == EndOfInput || c == '\r' || c == '\n') { while (c == '\r' || c == '\n') c = get(); // we reached the end of the comment break; } else { // it's a '\', so we need to keep going, after skipping what's escaped // read the skipped character c = get(); // if it's a two-character newline, skip both characters if (c == '\r' && peek() == '\n') get(); c = get(); } } while (true); // put back the last non-comment character if (c != EndOfInput) unget(); return true; } else if (c == '*') { // a '/*' style comment get(); // consume the '*' c = get(); do { while (c != EndOfInput && c != '*') c = get(); if (c == '*') { c = get(); if (c == '/') break; // end of comment // not end of comment } else // end of input break; } while (true); return true; } else { // it's not a comment, put the '/' back unget(); return false; } } // skip whitespace, then skip a comment, rinse, repeat void TInputScanner::consumeWhitespaceComment(bool& foundNonSpaceTab) { do { consumeWhiteSpace(foundNonSpaceTab); // if not starting a comment now, then done int c = peek(); if (c != '/' || c == EndOfInput) return; // skip potential comment foundNonSpaceTab = true; if (! consumeComment()) return; } while (true); } // Returns true if there was non-white space (e.g., a comment, newline) before the #version // or no #version was found; otherwise, returns false. There is no error case, it always // succeeds, but will leave version == 0 if no #version was found. // // Sets notFirstToken based on whether tokens (beyond white space and comments) // appeared before the #version. // // N.B. does not attempt to leave input in any particular known state. The assumption // is that scanning will start anew, following the rules for the chosen version/profile, // and with a corresponding parsing context. // bool TInputScanner::scanVersion(int& version, EProfile& profile, bool& notFirstToken) { // This function doesn't have to get all the semantics correct, // just find the #version if there is a correct one present. // The preprocessor will have the responsibility of getting all the semantics right. bool versionNotFirst = false; // means not first WRT comments and white space, nothing more notFirstToken = false; // means not first WRT to real tokens version = 0; // means not found profile = ENoProfile; bool foundNonSpaceTab = false; bool lookingInMiddle = false; int c; do { if (lookingInMiddle) { notFirstToken = true; // make forward progress by finishing off the current line plus extra new lines if (peek() != '\n' && peek() != '\r') { do { c = get(); } while (c != EndOfInput && c != '\n' && c != '\r'); } while (peek() == '\n' || peek() == '\r') get(); if (peek() == EndOfInput) return true; } lookingInMiddle = true; // Nominal start, skipping the desktop allowed comments and white space, but tracking if // something else was found for ES: consumeWhitespaceComment(foundNonSpaceTab); if (foundNonSpaceTab) versionNotFirst = true; // "#" if (get() != '#') { versionNotFirst = true; continue; } // whitespace do { c = get(); } while (c == ' ' || c == '\t'); // "version" if ( c != 'v' || get() != 'e' || get() != 'r' || get() != 's' || get() != 'i' || get() != 'o' || get() != 'n') { versionNotFirst = true; continue; } // whitespace do { c = get(); } while (c == ' ' || c == '\t'); // version number while (c >= '0' && c <= '9') { version = 10 * version + (c - '0'); c = get(); } if (version == 0) { versionNotFirst = true; continue; } // whitespace while (c == ' ' || c == '\t') c = get(); // profile const int maxProfileLength = 13; // not including any 0 char profileString[maxProfileLength]; int profileLength; for (profileLength = 0; profileLength < maxProfileLength; ++profileLength) { if (c == EndOfInput || c == ' ' || c == '\t' || c == '\n' || c == '\r') break; profileString[profileLength] = (char)c; c = get(); } if (c != EndOfInput && c != ' ' && c != '\t' && c != '\n' && c != '\r') { versionNotFirst = true; continue; } if (profileLength == 2 && strncmp(profileString, "es", profileLength) == 0) profile = EEsProfile; else if (profileLength == 4 && strncmp(profileString, "core", profileLength) == 0) profile = ECoreProfile; else if (profileLength == 13 && strncmp(profileString, "compatibility", profileLength) == 0) profile = ECompatibilityProfile; return versionNotFirst; } while (true); } // Fill this in when doing glslang-level scanning, to hand back to the parser. class TParserToken { public: explicit TParserToken(YYSTYPE& b) : sType(b) { } YYSTYPE& sType; protected: TParserToken(TParserToken&); TParserToken& operator=(TParserToken&); }; } // end namespace glslang // This is the function the glslang parser (i.e., bison) calls to get its next token int yylex(YYSTYPE* glslangTokenDesc, glslang::TParseContext& parseContext) { glslang::TParserToken token(*glslangTokenDesc); return parseContext.getScanContext()->tokenize(parseContext.getPpContext(), token); } namespace { struct str_eq { bool operator()(const char* lhs, const char* rhs) const { return strcmp(lhs, rhs) == 0; } }; struct str_hash { size_t operator()(const char* str) const { // djb2 unsigned long hash = 5381; int c; while ((c = *str++) != 0) hash = ((hash << 5) + hash) + c; return hash; } }; // A single global usable by all threads, by all versions, by all languages. const std::unordered_map KeywordMap { {"const",CONST}, {"uniform",UNIFORM}, {"tileImageEXT",TILEIMAGEEXT}, {"buffer",BUFFER}, {"in",IN}, {"out",OUT}, {"smooth",SMOOTH}, {"flat",FLAT}, {"centroid",CENTROID}, {"invariant",INVARIANT}, {"packed",PACKED}, {"resource",RESOURCE}, {"inout",INOUT}, {"struct",STRUCT}, {"break",BREAK}, {"continue",CONTINUE}, {"do",DO}, {"for",FOR}, {"while",WHILE}, {"switch",SWITCH}, {"case",CASE}, {"default",DEFAULT}, {"if",IF}, {"else",ELSE}, {"discard",DISCARD}, {"terminateInvocation",TERMINATE_INVOCATION}, {"terminateRayEXT",TERMINATE_RAY}, {"ignoreIntersectionEXT",IGNORE_INTERSECTION}, {"return",RETURN}, {"void",VOID}, {"bool",BOOL}, {"float",FLOAT}, {"int",INT}, {"bvec2",BVEC2}, {"bvec3",BVEC3}, {"bvec4",BVEC4}, {"vec2",VEC2}, {"vec3",VEC3}, {"vec4",VEC4}, {"ivec2",IVEC2}, {"ivec3",IVEC3}, {"ivec4",IVEC4}, {"mat2",MAT2}, {"mat3",MAT3}, {"mat4",MAT4}, {"true",BOOLCONSTANT}, {"false",BOOLCONSTANT}, {"layout",LAYOUT}, {"shared",SHARED}, {"highp",HIGH_PRECISION}, {"mediump",MEDIUM_PRECISION}, {"lowp",LOW_PRECISION}, {"superp",SUPERP}, {"precision",PRECISION}, {"mat2x2",MAT2X2}, {"mat2x3",MAT2X3}, {"mat2x4",MAT2X4}, {"mat3x2",MAT3X2}, {"mat3x3",MAT3X3}, {"mat3x4",MAT3X4}, {"mat4x2",MAT4X2}, {"mat4x3",MAT4X3}, {"mat4x4",MAT4X4}, {"uint",UINT}, {"uvec2",UVEC2}, {"uvec3",UVEC3}, {"uvec4",UVEC4}, {"nonuniformEXT",NONUNIFORM}, {"demote",DEMOTE}, {"attribute",ATTRIBUTE}, {"varying",VARYING}, {"noperspective",NOPERSPECTIVE}, {"coherent",COHERENT}, {"devicecoherent",DEVICECOHERENT}, {"queuefamilycoherent",QUEUEFAMILYCOHERENT}, {"workgroupcoherent",WORKGROUPCOHERENT}, {"subgroupcoherent",SUBGROUPCOHERENT}, {"shadercallcoherent",SHADERCALLCOHERENT}, {"nonprivate",NONPRIVATE}, {"restrict",RESTRICT}, {"readonly",READONLY}, {"writeonly",WRITEONLY}, {"atomic_uint",ATOMIC_UINT}, {"volatile",VOLATILE}, {"nontemporal",NONTEMPORAL}, {"patch",PATCH}, {"sample",SAMPLE}, {"subroutine",SUBROUTINE}, {"dmat2",DMAT2}, {"dmat3",DMAT3}, {"dmat4",DMAT4}, {"dmat2x2",DMAT2X2}, {"dmat2x3",DMAT2X3}, {"dmat2x4",DMAT2X4}, {"dmat3x2",DMAT3X2}, {"dmat3x3",DMAT3X3}, {"dmat3x4",DMAT3X4}, {"dmat4x2",DMAT4X2}, {"dmat4x3",DMAT4X3}, {"dmat4x4",DMAT4X4}, {"image1D",IMAGE1D}, {"iimage1D",IIMAGE1D}, {"uimage1D",UIMAGE1D}, {"image2D",IMAGE2D}, {"iimage2D",IIMAGE2D}, {"uimage2D",UIMAGE2D}, {"image3D",IMAGE3D}, {"iimage3D",IIMAGE3D}, {"uimage3D",UIMAGE3D}, {"image2DRect",IMAGE2DRECT}, {"iimage2DRect",IIMAGE2DRECT}, {"uimage2DRect",UIMAGE2DRECT}, {"imageCube",IMAGECUBE}, {"iimageCube",IIMAGECUBE}, {"uimageCube",UIMAGECUBE}, {"imageBuffer",IMAGEBUFFER}, {"iimageBuffer",IIMAGEBUFFER}, {"uimageBuffer",UIMAGEBUFFER}, {"image1DArray",IMAGE1DARRAY}, {"iimage1DArray",IIMAGE1DARRAY}, {"uimage1DArray",UIMAGE1DARRAY}, {"image2DArray",IMAGE2DARRAY}, {"iimage2DArray",IIMAGE2DARRAY}, {"uimage2DArray",UIMAGE2DARRAY}, {"imageCubeArray",IMAGECUBEARRAY}, {"iimageCubeArray",IIMAGECUBEARRAY}, {"uimageCubeArray",UIMAGECUBEARRAY}, {"image2DMS",IMAGE2DMS}, {"iimage2DMS",IIMAGE2DMS}, {"uimage2DMS",UIMAGE2DMS}, {"image2DMSArray",IMAGE2DMSARRAY}, {"iimage2DMSArray",IIMAGE2DMSARRAY}, {"uimage2DMSArray",UIMAGE2DMSARRAY}, {"i64image1D",I64IMAGE1D}, {"u64image1D",U64IMAGE1D}, {"i64image2D",I64IMAGE2D}, {"u64image2D",U64IMAGE2D}, {"i64image3D",I64IMAGE3D}, {"u64image3D",U64IMAGE3D}, {"i64image2DRect",I64IMAGE2DRECT}, {"u64image2DRect",U64IMAGE2DRECT}, {"i64imageCube",I64IMAGECUBE}, {"u64imageCube",U64IMAGECUBE}, {"i64imageBuffer",I64IMAGEBUFFER}, {"u64imageBuffer",U64IMAGEBUFFER}, {"i64image1DArray",I64IMAGE1DARRAY}, {"u64image1DArray",U64IMAGE1DARRAY}, {"i64image2DArray",I64IMAGE2DARRAY}, {"u64image2DArray",U64IMAGE2DARRAY}, {"i64imageCubeArray",I64IMAGECUBEARRAY}, {"u64imageCubeArray",U64IMAGECUBEARRAY}, {"i64image2DMS",I64IMAGE2DMS}, {"u64image2DMS",U64IMAGE2DMS}, {"i64image2DMSArray",I64IMAGE2DMSARRAY}, {"u64image2DMSArray",U64IMAGE2DMSARRAY}, {"double",DOUBLE}, {"dvec2",DVEC2}, {"dvec3",DVEC3}, {"dvec4",DVEC4}, {"int64_t",INT64_T}, {"uint64_t",UINT64_T}, {"i64vec2",I64VEC2}, {"i64vec3",I64VEC3}, {"i64vec4",I64VEC4}, {"u64vec2",U64VEC2}, {"u64vec3",U64VEC3}, {"u64vec4",U64VEC4}, // GL_EXT_shader_explicit_arithmetic_types {"int8_t",INT8_T}, {"i8vec2",I8VEC2}, {"i8vec3",I8VEC3}, {"i8vec4",I8VEC4}, {"uint8_t",UINT8_T}, {"u8vec2",U8VEC2}, {"u8vec3",U8VEC3}, {"u8vec4",U8VEC4}, {"int16_t",INT16_T}, {"i16vec2",I16VEC2}, {"i16vec3",I16VEC3}, {"i16vec4",I16VEC4}, {"uint16_t",UINT16_T}, {"u16vec2",U16VEC2}, {"u16vec3",U16VEC3}, {"u16vec4",U16VEC4}, {"int32_t",INT32_T}, {"i32vec2",I32VEC2}, {"i32vec3",I32VEC3}, {"i32vec4",I32VEC4}, {"uint32_t",UINT32_T}, {"u32vec2",U32VEC2}, {"u32vec3",U32VEC3}, {"u32vec4",U32VEC4}, {"float16_t",FLOAT16_T}, {"f16vec2",F16VEC2}, {"f16vec3",F16VEC3}, {"f16vec4",F16VEC4}, {"f16mat2",F16MAT2}, {"f16mat3",F16MAT3}, {"f16mat4",F16MAT4}, {"f16mat2x2",F16MAT2X2}, {"f16mat2x3",F16MAT2X3}, {"f16mat2x4",F16MAT2X4}, {"f16mat3x2",F16MAT3X2}, {"f16mat3x3",F16MAT3X3}, {"f16mat3x4",F16MAT3X4}, {"f16mat4x2",F16MAT4X2}, {"f16mat4x3",F16MAT4X3}, {"f16mat4x4",F16MAT4X4}, {"bfloat16_t",BFLOAT16_T}, {"bf16vec2",BF16VEC2}, {"bf16vec3",BF16VEC3}, {"bf16vec4",BF16VEC4}, {"floate5m2_t",FLOATE5M2_T}, {"fe5m2vec2",FE5M2VEC2}, {"fe5m2vec3",FE5M2VEC3}, {"fe5m2vec4",FE5M2VEC4}, {"floate4m3_t",FLOATE4M3_T}, {"fe4m3vec2",FE4M3VEC2}, {"fe4m3vec3",FE4M3VEC3}, {"fe4m3vec4",FE4M3VEC4}, {"float32_t",FLOAT32_T}, {"f32vec2",F32VEC2}, {"f32vec3",F32VEC3}, {"f32vec4",F32VEC4}, {"f32mat2",F32MAT2}, {"f32mat3",F32MAT3}, {"f32mat4",F32MAT4}, {"f32mat2x2",F32MAT2X2}, {"f32mat2x3",F32MAT2X3}, {"f32mat2x4",F32MAT2X4}, {"f32mat3x2",F32MAT3X2}, {"f32mat3x3",F32MAT3X3}, {"f32mat3x4",F32MAT3X4}, {"f32mat4x2",F32MAT4X2}, {"f32mat4x3",F32MAT4X3}, {"f32mat4x4",F32MAT4X4}, {"float64_t",FLOAT64_T}, {"f64vec2",F64VEC2}, {"f64vec3",F64VEC3}, {"f64vec4",F64VEC4}, {"f64mat2",F64MAT2}, {"f64mat3",F64MAT3}, {"f64mat4",F64MAT4}, {"f64mat2x2",F64MAT2X2}, {"f64mat2x3",F64MAT2X3}, {"f64mat2x4",F64MAT2X4}, {"f64mat3x2",F64MAT3X2}, {"f64mat3x3",F64MAT3X3}, {"f64mat3x4",F64MAT3X4}, {"f64mat4x2",F64MAT4X2}, {"f64mat4x3",F64MAT4X3}, {"f64mat4x4",F64MAT4X4}, // GL_EXT_spirv_intrinsics {"spirv_instruction",SPIRV_INSTRUCTION}, {"spirv_execution_mode",SPIRV_EXECUTION_MODE}, {"spirv_execution_mode_id",SPIRV_EXECUTION_MODE_ID}, {"spirv_decorate",SPIRV_DECORATE}, {"spirv_decorate_id",SPIRV_DECORATE_ID}, {"spirv_decorate_string",SPIRV_DECORATE_STRING}, {"spirv_type",SPIRV_TYPE}, {"spirv_storage_class",SPIRV_STORAGE_CLASS}, {"spirv_by_reference",SPIRV_BY_REFERENCE}, {"spirv_literal",SPIRV_LITERAL}, {"sampler2D",SAMPLER2D}, {"samplerCube",SAMPLERCUBE}, {"samplerCubeShadow",SAMPLERCUBESHADOW}, {"sampler2DArray",SAMPLER2DARRAY}, {"sampler2DArrayShadow",SAMPLER2DARRAYSHADOW}, {"isampler2D",ISAMPLER2D}, {"isampler3D",ISAMPLER3D}, {"isamplerCube",ISAMPLERCUBE}, {"isampler2DArray",ISAMPLER2DARRAY}, {"usampler2D",USAMPLER2D}, {"usampler3D",USAMPLER3D}, {"usamplerCube",USAMPLERCUBE}, {"usampler2DArray",USAMPLER2DARRAY}, {"sampler3D",SAMPLER3D}, {"sampler2DShadow",SAMPLER2DSHADOW}, {"texture2D",TEXTURE2D}, {"textureCube",TEXTURECUBE}, {"texture2DArray",TEXTURE2DARRAY}, {"itexture2D",ITEXTURE2D}, {"itexture3D",ITEXTURE3D}, {"itextureCube",ITEXTURECUBE}, {"itexture2DArray",ITEXTURE2DARRAY}, {"utexture2D",UTEXTURE2D}, {"utexture3D",UTEXTURE3D}, {"utextureCube",UTEXTURECUBE}, {"utexture2DArray",UTEXTURE2DARRAY}, {"texture3D",TEXTURE3D}, {"sampler",SAMPLER}, {"samplerShadow",SAMPLERSHADOW}, {"textureCubeArray",TEXTURECUBEARRAY}, {"itextureCubeArray",ITEXTURECUBEARRAY}, {"utextureCubeArray",UTEXTURECUBEARRAY}, {"samplerCubeArray",SAMPLERCUBEARRAY}, {"samplerCubeArrayShadow",SAMPLERCUBEARRAYSHADOW}, {"isamplerCubeArray",ISAMPLERCUBEARRAY}, {"usamplerCubeArray",USAMPLERCUBEARRAY}, {"sampler1DArrayShadow",SAMPLER1DARRAYSHADOW}, {"isampler1DArray",ISAMPLER1DARRAY}, {"usampler1D",USAMPLER1D}, {"isampler1D",ISAMPLER1D}, {"usampler1DArray",USAMPLER1DARRAY}, {"samplerBuffer",SAMPLERBUFFER}, {"isampler2DRect",ISAMPLER2DRECT}, {"usampler2DRect",USAMPLER2DRECT}, {"isamplerBuffer",ISAMPLERBUFFER}, {"usamplerBuffer",USAMPLERBUFFER}, {"sampler2DMS",SAMPLER2DMS}, {"isampler2DMS",ISAMPLER2DMS}, {"usampler2DMS",USAMPLER2DMS}, {"sampler2DMSArray",SAMPLER2DMSARRAY}, {"isampler2DMSArray",ISAMPLER2DMSARRAY}, {"usampler2DMSArray",USAMPLER2DMSARRAY}, {"sampler1D",SAMPLER1D}, {"sampler1DShadow",SAMPLER1DSHADOW}, {"sampler2DRect",SAMPLER2DRECT}, {"sampler2DRectShadow",SAMPLER2DRECTSHADOW}, {"sampler1DArray",SAMPLER1DARRAY}, {"samplerExternalOES", SAMPLEREXTERNALOES}, // GL_OES_EGL_image_external {"__samplerExternal2DY2YEXT", SAMPLEREXTERNAL2DY2YEXT}, // GL_EXT_YUV_target {"itexture1DArray",ITEXTURE1DARRAY}, {"utexture1D",UTEXTURE1D}, {"itexture1D",ITEXTURE1D}, {"utexture1DArray",UTEXTURE1DARRAY}, {"textureBuffer",TEXTUREBUFFER}, {"itexture2DRect",ITEXTURE2DRECT}, {"utexture2DRect",UTEXTURE2DRECT}, {"itextureBuffer",ITEXTUREBUFFER}, {"utextureBuffer",UTEXTUREBUFFER}, {"texture2DMS",TEXTURE2DMS}, {"itexture2DMS",ITEXTURE2DMS}, {"utexture2DMS",UTEXTURE2DMS}, {"texture2DMSArray",TEXTURE2DMSARRAY}, {"itexture2DMSArray",ITEXTURE2DMSARRAY}, {"utexture2DMSArray",UTEXTURE2DMSARRAY}, {"texture1D",TEXTURE1D}, {"texture2DRect",TEXTURE2DRECT}, {"texture1DArray",TEXTURE1DARRAY}, {"attachmentEXT",ATTACHMENTEXT}, {"iattachmentEXT",IATTACHMENTEXT}, {"uattachmentEXT",UATTACHMENTEXT}, {"subpassInput",SUBPASSINPUT}, {"subpassInputMS",SUBPASSINPUTMS}, {"isubpassInput",ISUBPASSINPUT}, {"isubpassInputMS",ISUBPASSINPUTMS}, {"usubpassInput",USUBPASSINPUT}, {"usubpassInputMS",USUBPASSINPUTMS}, {"f16sampler1D",F16SAMPLER1D}, {"f16sampler2D",F16SAMPLER2D}, {"f16sampler3D",F16SAMPLER3D}, {"f16sampler2DRect",F16SAMPLER2DRECT}, {"f16samplerCube",F16SAMPLERCUBE}, {"f16sampler1DArray",F16SAMPLER1DARRAY}, {"f16sampler2DArray",F16SAMPLER2DARRAY}, {"f16samplerCubeArray",F16SAMPLERCUBEARRAY}, {"f16samplerBuffer",F16SAMPLERBUFFER}, {"f16sampler2DMS",F16SAMPLER2DMS}, {"f16sampler2DMSArray",F16SAMPLER2DMSARRAY}, {"f16sampler1DShadow",F16SAMPLER1DSHADOW}, {"f16sampler2DShadow",F16SAMPLER2DSHADOW}, {"f16sampler2DRectShadow",F16SAMPLER2DRECTSHADOW}, {"f16samplerCubeShadow",F16SAMPLERCUBESHADOW}, {"f16sampler1DArrayShadow",F16SAMPLER1DARRAYSHADOW}, {"f16sampler2DArrayShadow",F16SAMPLER2DARRAYSHADOW}, {"f16samplerCubeArrayShadow",F16SAMPLERCUBEARRAYSHADOW}, {"f16image1D",F16IMAGE1D}, {"f16image2D",F16IMAGE2D}, {"f16image3D",F16IMAGE3D}, {"f16image2DRect",F16IMAGE2DRECT}, {"f16imageCube",F16IMAGECUBE}, {"f16image1DArray",F16IMAGE1DARRAY}, {"f16image2DArray",F16IMAGE2DARRAY}, {"f16imageCubeArray",F16IMAGECUBEARRAY}, {"f16imageBuffer",F16IMAGEBUFFER}, {"f16image2DMS",F16IMAGE2DMS}, {"f16image2DMSArray",F16IMAGE2DMSARRAY}, {"f16texture1D",F16TEXTURE1D}, {"f16texture2D",F16TEXTURE2D}, {"f16texture3D",F16TEXTURE3D}, {"f16texture2DRect",F16TEXTURE2DRECT}, {"f16textureCube",F16TEXTURECUBE}, {"f16texture1DArray",F16TEXTURE1DARRAY}, {"f16texture2DArray",F16TEXTURE2DARRAY}, {"f16textureCubeArray",F16TEXTURECUBEARRAY}, {"f16textureBuffer",F16TEXTUREBUFFER}, {"f16texture2DMS",F16TEXTURE2DMS}, {"f16texture2DMSArray",F16TEXTURE2DMSARRAY}, {"f16subpassInput",F16SUBPASSINPUT}, {"f16subpassInputMS",F16SUBPASSINPUTMS}, {"__explicitInterpAMD",EXPLICITINTERPAMD}, {"pervertexNV",PERVERTEXNV}, {"pervertexEXT",PERVERTEXEXT}, {"precise",PRECISE}, {"rayPayloadNV",PAYLOADNV}, {"rayPayloadEXT",PAYLOADEXT}, {"rayPayloadInNV",PAYLOADINNV}, {"rayPayloadInEXT",PAYLOADINEXT}, {"hitAttributeNV",HITATTRNV}, {"hitAttributeEXT",HITATTREXT}, {"callableDataNV",CALLDATANV}, {"callableDataEXT",CALLDATAEXT}, {"callableDataInNV",CALLDATAINNV}, {"callableDataInEXT",CALLDATAINEXT}, {"accelerationStructureNV",ACCSTRUCTNV}, {"accelerationStructureEXT",ACCSTRUCTEXT}, {"rayQueryEXT",RAYQUERYEXT}, {"perprimitiveNV",PERPRIMITIVENV}, {"perviewNV",PERVIEWNV}, {"taskNV",PERTASKNV}, {"perprimitiveEXT",PERPRIMITIVEEXT}, {"taskPayloadSharedEXT",TASKPAYLOADWORKGROUPEXT}, {"fcoopmatNV",FCOOPMATNV}, {"icoopmatNV",ICOOPMATNV}, {"ucoopmatNV",UCOOPMATNV}, {"coopmat",COOPMAT}, {"hitObjectNV",HITOBJECTNV}, {"hitObjectAttributeNV",HITOBJECTATTRNV}, {"tensorARM",TENSORARM}, {"__function",FUNCTION}, {"tensorLayoutNV",TENSORLAYOUTNV}, {"tensorViewNV",TENSORVIEWNV}, {"coopvecNV",COOPVECNV}, }; const std::unordered_set ReservedSet { "common", "partition", "active", "asm", "class", "union", "enum", "typedef", "template", "this", "goto", "inline", "noinline", "public", "static", "extern", "external", "interface", "long", "short", "half", "fixed", "unsigned", "input", "output", "hvec2", "hvec3", "hvec4", "fvec2", "fvec3", "fvec4", "sampler3DRect", "filter", "sizeof", "cast", "namespace", "using", }; } namespace glslang { // Called by yylex to get the next token. // Returning 0 implies end of input. int TScanContext::tokenize(TPpContext* pp, TParserToken& token) { do { parserToken = &token; TPpToken ppToken; int token = pp->tokenize(ppToken); if (token == EndOfInput) return 0; tokenText = ppToken.name; loc = ppToken.loc; parserToken->sType.lex.loc = loc; switch (token) { case ';': afterType = false; afterBuffer = false; inDeclaratorList = false; afterDeclarator = false; angleBracketDepth = 0; squareBracketDepth = 0; parenDepth = 0; return SEMICOLON; case ',': // If we just processed a declarator (identifier after a type), this comma // indicates that we're in a declarator list. Note that 'afterDeclarator' is // only set when we are not inside a template parameter list, array expression, // or function parameter list. if (afterDeclarator) { inDeclaratorList = true; } afterType = false; afterDeclarator = false; return COMMA; case ':': return COLON; case '=': afterType = false; inDeclaratorList = false; afterDeclarator = false; return EQUAL; case '(': afterType = false; inDeclaratorList = false; afterDeclarator = false; parenDepth++; return LEFT_PAREN; case ')': afterType = false; inDeclaratorList = false; afterDeclarator = false; if (parenDepth > 0) parenDepth--; return RIGHT_PAREN; case '.': field = true; return DOT; case '!': return BANG; case '-': return DASH; case '~': return TILDE; case '+': return PLUS; case '*': return STAR; case '/': return SLASH; case '%': return PERCENT; case '<': angleBracketDepth++; return LEFT_ANGLE; case '>': if (angleBracketDepth > 0) angleBracketDepth--; return RIGHT_ANGLE; case '|': return VERTICAL_BAR; case '^': return CARET; case '&': return AMPERSAND; case '?': return QUESTION; case '[': squareBracketDepth++; return LEFT_BRACKET; case ']': if (squareBracketDepth > 0) squareBracketDepth--; return RIGHT_BRACKET; case '{': afterStruct = false; afterBuffer = false; inDeclaratorList = false; afterDeclarator = false; angleBracketDepth = 0; squareBracketDepth = 0; parenDepth = 0; return LEFT_BRACE; case '}': inDeclaratorList = false; afterDeclarator = false; angleBracketDepth = 0; squareBracketDepth = 0; parenDepth = 0; return RIGHT_BRACE; case '\\': parseContext.error(loc, "illegal use of escape character", "\\", ""); break; case PPAtomAddAssign: return ADD_ASSIGN; case PPAtomSubAssign: return SUB_ASSIGN; case PPAtomMulAssign: return MUL_ASSIGN; case PPAtomDivAssign: return DIV_ASSIGN; case PPAtomModAssign: return MOD_ASSIGN; case PpAtomRight: return RIGHT_OP; case PpAtomLeft: return LEFT_OP; case PpAtomRightAssign: return RIGHT_ASSIGN; case PpAtomLeftAssign: return LEFT_ASSIGN; case PpAtomAndAssign: return AND_ASSIGN; case PpAtomOrAssign: return OR_ASSIGN; case PpAtomXorAssign: return XOR_ASSIGN; case PpAtomAnd: return AND_OP; case PpAtomOr: return OR_OP; case PpAtomXor: return XOR_OP; case PpAtomEQ: return EQ_OP; case PpAtomGE: return GE_OP; case PpAtomNE: return NE_OP; case PpAtomLE: return LE_OP; case PpAtomDecrement: return DEC_OP; case PpAtomIncrement: return INC_OP; case PpAtomColonColon: parseContext.error(loc, "not supported", "::", ""); break; case PpAtomConstString: parserToken->sType.lex.string = NewPoolTString(tokenText); return STRING_LITERAL; case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT; case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT; case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT; case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT; case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT; case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT; case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT; case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT; case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT; case PpAtomIdentifier: { int token = tokenizeIdentifier(); field = false; return token; } case EndOfInput: return 0; default: char buf[2]; buf[0] = (char)token; buf[1] = 0; parseContext.error(loc, "unexpected token", buf, ""); break; } } while (true); } int TScanContext::tokenizeIdentifier() { if (ReservedSet.find(tokenText) != ReservedSet.end()) return reservedWord(); auto it = KeywordMap.find(tokenText); if (it == KeywordMap.end()) { // Should have an identifier of some sort return identifierOrType(); } keyword = it->second; switch (keyword) { case CONST: case UNIFORM: case TILEIMAGEEXT: case IN: case OUT: case INOUT: case BREAK: case CONTINUE: case DO: case FOR: case WHILE: case IF: case ELSE: case DISCARD: case RETURN: case CASE: return keyword; case TERMINATE_INVOCATION: if (!parseContext.extensionTurnedOn(E_GL_EXT_terminate_invocation)) return identifierOrType(); return keyword; case TERMINATE_RAY: case IGNORE_INTERSECTION: if (!parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing)) return identifierOrType(); return keyword; case BUFFER: afterBuffer = true; if ((parseContext.isEsProfile() && parseContext.version < 310) || (!parseContext.isEsProfile() && (parseContext.version < 430 && !parseContext.extensionTurnedOn(E_GL_ARB_shader_storage_buffer_object)))) return identifierOrType(); return keyword; case STRUCT: afterStruct = true; return keyword; case SWITCH: case DEFAULT: if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < 130)) reservedWord(); return keyword; case VOID: case BOOL: case FLOAT: case INT: case BVEC2: case BVEC3: case BVEC4: case VEC2: case VEC3: case VEC4: case IVEC2: case IVEC3: case IVEC4: case MAT2: case MAT3: case MAT4: case SAMPLER2D: case SAMPLERCUBE: afterType = true; return keyword; case BOOLCONSTANT: if (strcmp("true", tokenText) == 0) parserToken->sType.lex.b = true; else parserToken->sType.lex.b = false; return keyword; case SMOOTH: if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < 130)) return identifierOrType(); return keyword; case FLAT: if (parseContext.isEsProfile() && parseContext.version < 300) reservedWord(); else if (!parseContext.isEsProfile() && parseContext.version < 130) return identifierOrType(); return keyword; case CENTROID: if (parseContext.version < 120) return identifierOrType(); return keyword; case INVARIANT: if (!parseContext.isEsProfile() && parseContext.version < 120) return identifierOrType(); return keyword; case PACKED: if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < 140)) return reservedWord(); return identifierOrType(); case RESOURCE: { bool reserved = (parseContext.isEsProfile() && parseContext.version >= 300) || (!parseContext.isEsProfile() && parseContext.version >= 420); return identifierOrReserved(reserved); } case SUPERP: { bool reserved = parseContext.isEsProfile() || parseContext.version >= 130; return identifierOrReserved(reserved); } case NOPERSPECTIVE: if (parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation)) return keyword; return es30ReservedFromGLSL(130); case NONUNIFORM: if (parseContext.extensionTurnedOn(E_GL_EXT_nonuniform_qualifier)) return keyword; else return identifierOrType(); case ATTRIBUTE: case VARYING: if (parseContext.isEsProfile() && parseContext.version >= 300) reservedWord(); return keyword; case PAYLOADNV: case PAYLOADINNV: case HITATTRNV: case CALLDATANV: case CALLDATAINNV: case ACCSTRUCTNV: if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)) return keyword; return identifierOrType(); case ACCSTRUCTEXT: if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing) || parseContext.extensionTurnedOn(E_GL_EXT_ray_query) || parseContext.extensionTurnedOn(E_GL_NV_displacement_micromap)) return keyword; return identifierOrType(); case PAYLOADEXT: case PAYLOADINEXT: case HITATTREXT: case CALLDATAEXT: case CALLDATAINEXT: if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing) || parseContext.extensionTurnedOn(E_GL_EXT_ray_query)) return keyword; return identifierOrType(); case RAYQUERYEXT: if (parseContext.symbolTable.atBuiltInLevel() || (!parseContext.isEsProfile() && parseContext.version >= 460 && parseContext.extensionTurnedOn(E_GL_EXT_ray_query))) return keyword; return identifierOrType(); case ATOMIC_UINT: if ((parseContext.isEsProfile() && parseContext.version >= 310) || parseContext.extensionTurnedOn(E_GL_ARB_shader_atomic_counters)) return keyword; return es30ReservedFromGLSL(420); case COHERENT: case DEVICECOHERENT: case QUEUEFAMILYCOHERENT: case WORKGROUPCOHERENT: case SUBGROUPCOHERENT: case SHADERCALLCOHERENT: case NONPRIVATE: case RESTRICT: case READONLY: case WRITEONLY: if (parseContext.isEsProfile() && parseContext.version >= 310) return keyword; return es30ReservedFromGLSL(parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store) ? 130 : 420); case VOLATILE: if (parseContext.isEsProfile() && parseContext.version >= 310) return keyword; if (! parseContext.symbolTable.atBuiltInLevel() && (parseContext.isEsProfile() || (parseContext.version < 420 && ! parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store)))) reservedWord(); return keyword; case NONTEMPORAL: if (parseContext.symbolTable.atBuiltInLevel()) return keyword; if (parseContext.extensionTurnedOn(E_GL_EXT_nontemporal_keyword)) { if (!parseContext.intermediate.usingVulkanMemoryModel()) parseContext.warn(loc, "Nontemporal without the Vulkan Memory Model is ignored", tokenText, ""); return keyword; } return identifierOrType(); case PATCH: if (parseContext.symbolTable.atBuiltInLevel() || (parseContext.isEsProfile() && (parseContext.version >= 320 || parseContext.extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))) || (!parseContext.isEsProfile() && parseContext.extensionTurnedOn(E_GL_ARB_tessellation_shader))) return keyword; return es30ReservedFromGLSL(400); case SAMPLE: { const int numLayoutExts = 3; const char* layoutExts[numLayoutExts] = {E_GL_OES_shader_multisample_interpolation, E_GL_ARB_gpu_shader5, E_GL_NV_gpu_shader5}; if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(numLayoutExts, layoutExts)) return keyword; return es30ReservedFromGLSL(400); } case SUBROUTINE: return es30ReservedFromGLSL(400); case SHARED: if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < 140)) return identifierOrType(); return keyword; case LAYOUT: { const int numLayoutExts = 2; const char* layoutExts[numLayoutExts] = { E_GL_ARB_shading_language_420pack, E_GL_ARB_explicit_attrib_location }; if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < 140 && ! parseContext.extensionsTurnedOn(numLayoutExts, layoutExts))) return identifierOrType(); return keyword; } case HIGH_PRECISION: case MEDIUM_PRECISION: case LOW_PRECISION: case PRECISION: return precisionKeyword(); case MAT2X2: case MAT2X3: case MAT2X4: case MAT3X2: case MAT3X3: case MAT3X4: case MAT4X2: case MAT4X3: case MAT4X4: return matNxM(); case DMAT2: case DMAT3: case DMAT4: case DMAT2X2: case DMAT2X3: case DMAT2X4: case DMAT3X2: case DMAT3X3: case DMAT3X4: case DMAT4X2: case DMAT4X3: case DMAT4X4: return dMat(); case IMAGE1D: case IIMAGE1D: case UIMAGE1D: case IMAGE1DARRAY: case IIMAGE1DARRAY: case UIMAGE1DARRAY: case IMAGE2DRECT: case IIMAGE2DRECT: case UIMAGE2DRECT: afterType = true; return firstGenerationImage(false); case I64IMAGE1D: case U64IMAGE1D: case I64IMAGE1DARRAY: case U64IMAGE1DARRAY: case I64IMAGE2DRECT: case U64IMAGE2DRECT: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { return firstGenerationImage(false); } return identifierOrType(); case IMAGEBUFFER: case IIMAGEBUFFER: case UIMAGEBUFFER: afterType = true; if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return firstGenerationImage(false); case I64IMAGEBUFFER: case U64IMAGEBUFFER: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return firstGenerationImage(false); } return identifierOrType(); case IMAGE2D: case IIMAGE2D: case UIMAGE2D: case IMAGE3D: case IIMAGE3D: case UIMAGE3D: case IMAGECUBE: case IIMAGECUBE: case UIMAGECUBE: case IMAGE2DARRAY: case IIMAGE2DARRAY: case UIMAGE2DARRAY: afterType = true; return firstGenerationImage(true); case I64IMAGE2D: case U64IMAGE2D: case I64IMAGE3D: case U64IMAGE3D: case I64IMAGECUBE: case U64IMAGECUBE: case I64IMAGE2DARRAY: case U64IMAGE2DARRAY: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) return firstGenerationImage(true); return identifierOrType(); case IMAGECUBEARRAY: case IIMAGECUBEARRAY: case UIMAGECUBEARRAY: afterType = true; if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; return secondGenerationImage(); case I64IMAGECUBEARRAY: case U64IMAGECUBEARRAY: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; return secondGenerationImage(); } return identifierOrType(); case IMAGE2DMS: case IIMAGE2DMS: case UIMAGE2DMS: case IMAGE2DMSARRAY: case IIMAGE2DMSARRAY: case UIMAGE2DMSARRAY: afterType = true; return secondGenerationImage(); case I64IMAGE2DMS: case U64IMAGE2DMS: case I64IMAGE2DMSARRAY: case U64IMAGE2DMSARRAY: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { return secondGenerationImage(); } return identifierOrType(); case DOUBLE: case DVEC2: case DVEC3: case DVEC4: afterType = true; if (parseContext.isEsProfile() || parseContext.version < 150 || (!parseContext.symbolTable.atBuiltInLevel() && (parseContext.version < 400 && !parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) && (parseContext.version < 410 && !parseContext.extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit))))) reservedWord(); return keyword; case INT64_T: case UINT64_T: case I64VEC2: case I64VEC3: case I64VEC4: case U64VEC2: case U64VEC3: case U64VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_NV_gpu_shader5) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int64)) return keyword; return identifierOrType(); case INT8_T: case UINT8_T: case I8VEC2: case I8VEC3: case I8VEC4: case U8VEC2: case U8VEC3: case U8VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_EXT_shader_8bit_storage) || parseContext.extensionTurnedOn(E_GL_NV_gpu_shader5) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int8)) return keyword; return identifierOrType(); case INT16_T: case UINT16_T: case I16VEC2: case I16VEC3: case I16VEC4: case U16VEC2: case U16VEC3: case U16VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) || parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_NV_gpu_shader5) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16)) return keyword; return identifierOrType(); case INT32_T: case UINT32_T: case I32VEC2: case I32VEC3: case I32VEC4: case U32VEC2: case U32VEC3: case U32VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_NV_gpu_shader5) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int32)) return keyword; return identifierOrType(); case FLOAT32_T: case F32VEC2: case F32VEC3: case F32VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_NV_gpu_shader5) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32)) return keyword; return identifierOrType(); case F32MAT2: case F32MAT3: case F32MAT4: case F32MAT2X2: case F32MAT2X3: case F32MAT2X4: case F32MAT3X2: case F32MAT3X3: case F32MAT3X4: case F32MAT4X2: case F32MAT4X3: case F32MAT4X4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32)) return keyword; return identifierOrType(); case FLOAT64_T: case F64VEC2: case F64VEC3: case F64VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || (parseContext.extensionTurnedOn(E_GL_NV_gpu_shader5) && parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64)) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64)) return keyword; return identifierOrType(); case F64MAT2: case F64MAT3: case F64MAT4: case F64MAT2X2: case F64MAT2X3: case F64MAT2X4: case F64MAT3X2: case F64MAT3X3: case F64MAT3X4: case F64MAT4X2: case F64MAT4X3: case F64MAT4X4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64)) return keyword; return identifierOrType(); case FLOAT16_T: case F16VEC2: case F16VEC3: case F16VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) || parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_NV_gpu_shader5) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16)) return keyword; return identifierOrType(); case F16MAT2: case F16MAT3: case F16MAT4: case F16MAT2X2: case F16MAT2X3: case F16MAT2X4: case F16MAT3X2: case F16MAT3X3: case F16MAT3X4: case F16MAT4X2: case F16MAT4X3: case F16MAT4X4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16)) return keyword; return identifierOrType(); case BFLOAT16_T: case BF16VEC2: case BF16VEC3: case BF16VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_bfloat16)) return keyword; return identifierOrType(); case FLOATE5M2_T: case FE5M2VEC2: case FE5M2VEC3: case FE5M2VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_float_e5m2)) return keyword; return identifierOrType(); case FLOATE4M3_T: case FE4M3VEC2: case FE4M3VEC3: case FE4M3VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_float_e4m3)) return keyword; return identifierOrType(); case SAMPLERCUBEARRAY: case SAMPLERCUBEARRAYSHADOW: case ISAMPLERCUBEARRAY: case USAMPLERCUBEARRAY: afterType = true; if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; if (parseContext.isEsProfile() || (parseContext.version < 400 && ! parseContext.extensionTurnedOn(E_GL_ARB_texture_cube_map_array) && ! parseContext.extensionsTurnedOn(Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5))) reservedWord(); return keyword; case TEXTURECUBEARRAY: case ITEXTURECUBEARRAY: case UTEXTURECUBEARRAY: if (parseContext.spvVersion.vulkan > 0) return keyword; else return identifierOrType(); case UINT: case UVEC2: case UVEC3: case UVEC4: case SAMPLERCUBESHADOW: case SAMPLER2DARRAY: case SAMPLER2DARRAYSHADOW: case ISAMPLER2D: case ISAMPLER3D: case ISAMPLERCUBE: case ISAMPLER2DARRAY: case USAMPLER2D: case USAMPLER3D: case USAMPLERCUBE: case USAMPLER2DARRAY: afterType = true; if (keyword == SAMPLER2DARRAY || keyword == SAMPLER2DARRAYSHADOW) { if (!parseContext.isEsProfile() && (parseContext.extensionTurnedOn(E_GL_EXT_texture_array) || parseContext.symbolTable.atBuiltInLevel())) { return keyword; } } return nonreservedKeyword(300, 130); case SAMPLER3D: afterType = true; if (parseContext.isEsProfile() && parseContext.version < 300) { if (!parseContext.extensionTurnedOn(E_GL_OES_texture_3D)) reservedWord(); } return keyword; case SAMPLER2DSHADOW: afterType = true; if (parseContext.isEsProfile() && parseContext.version < 300) { if (!parseContext.extensionTurnedOn(E_GL_EXT_shadow_samplers)) reservedWord(); } return keyword; case TEXTURE2D: case TEXTURECUBE: case TEXTURE2DARRAY: case ITEXTURE2D: case ITEXTURE3D: case ITEXTURECUBE: case ITEXTURE2DARRAY: case UTEXTURE2D: case UTEXTURE3D: case UTEXTURECUBE: case UTEXTURE2DARRAY: case TEXTURE3D: case SAMPLER: case SAMPLERSHADOW: if (parseContext.spvVersion.vulkan > 0) return keyword; else return identifierOrType(); case ISAMPLER1D: case ISAMPLER1DARRAY: case SAMPLER1DARRAYSHADOW: case USAMPLER1D: case USAMPLER1DARRAY: afterType = true; if (keyword == SAMPLER1DARRAYSHADOW) { if (!parseContext.isEsProfile() && (parseContext.extensionTurnedOn(E_GL_EXT_texture_array) || parseContext.symbolTable.atBuiltInLevel())) { return keyword; } } return es30ReservedFromGLSL(130); case ISAMPLER2DRECT: case USAMPLER2DRECT: afterType = true; return es30ReservedFromGLSL(140); case SAMPLERBUFFER: afterType = true; if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return es30ReservedFromGLSL(130); case ISAMPLERBUFFER: case USAMPLERBUFFER: afterType = true; if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return es30ReservedFromGLSL(140); case SAMPLER2DMS: case ISAMPLER2DMS: case USAMPLER2DMS: afterType = true; if (parseContext.isEsProfile() && parseContext.version >= 310) return keyword; if (!parseContext.isEsProfile() && (parseContext.version > 140 || (parseContext.version == 140 && parseContext.extensionsTurnedOn(1, &E_GL_ARB_texture_multisample)))) return keyword; return es30ReservedFromGLSL(150); case SAMPLER2DMSARRAY: case ISAMPLER2DMSARRAY: case USAMPLER2DMSARRAY: afterType = true; if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(1, &E_GL_OES_texture_storage_multisample_2d_array)) return keyword; if (!parseContext.isEsProfile() && (parseContext.version > 140 || (parseContext.version == 140 && parseContext.extensionsTurnedOn(1, &E_GL_ARB_texture_multisample)))) return keyword; return es30ReservedFromGLSL(150); case SAMPLER1D: case SAMPLER1DSHADOW: afterType = true; if (parseContext.isEsProfile()) reservedWord(); return keyword; case SAMPLER2DRECT: case SAMPLER2DRECTSHADOW: afterType = true; if (parseContext.isEsProfile()) reservedWord(); else if (parseContext.version < 140 && ! parseContext.symbolTable.atBuiltInLevel() && ! parseContext.extensionTurnedOn(E_GL_ARB_texture_rectangle)) { if (parseContext.relaxedErrors()) parseContext.requireExtensions(loc, 1, &E_GL_ARB_texture_rectangle, "texture-rectangle sampler keyword"); else reservedWord(); } return keyword; case SAMPLER1DARRAY: afterType = true; if (parseContext.isEsProfile() && parseContext.version == 300) reservedWord(); else if ((parseContext.isEsProfile() && parseContext.version < 300) || ((!parseContext.isEsProfile() && parseContext.version < 130) && !parseContext.symbolTable.atBuiltInLevel() && !parseContext.extensionTurnedOn(E_GL_EXT_texture_array))) return identifierOrType(); return keyword; case SAMPLEREXTERNALOES: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_OES_EGL_image_external) || parseContext.extensionTurnedOn(E_GL_OES_EGL_image_external_essl3)) return keyword; return identifierOrType(); case SAMPLEREXTERNAL2DY2YEXT: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_YUV_target)) return keyword; return identifierOrType(); case ITEXTURE1DARRAY: case UTEXTURE1D: case ITEXTURE1D: case UTEXTURE1DARRAY: case TEXTUREBUFFER: case ITEXTURE2DRECT: case UTEXTURE2DRECT: case ITEXTUREBUFFER: case UTEXTUREBUFFER: case TEXTURE2DMS: case ITEXTURE2DMS: case UTEXTURE2DMS: case TEXTURE2DMSARRAY: case ITEXTURE2DMSARRAY: case UTEXTURE2DMSARRAY: case TEXTURE1D: case TEXTURE2DRECT: case TEXTURE1DARRAY: if (parseContext.spvVersion.vulkan > 0) return keyword; else return identifierOrType(); case SUBPASSINPUT: case SUBPASSINPUTMS: case ISUBPASSINPUT: case ISUBPASSINPUTMS: case USUBPASSINPUT: case USUBPASSINPUTMS: case ATTACHMENTEXT: case IATTACHMENTEXT: case UATTACHMENTEXT: if (parseContext.spvVersion.vulkan > 0) return keyword; else return identifierOrType(); case F16SAMPLER1D: case F16SAMPLER2D: case F16SAMPLER3D: case F16SAMPLER2DRECT: case F16SAMPLERCUBE: case F16SAMPLER1DARRAY: case F16SAMPLER2DARRAY: case F16SAMPLERCUBEARRAY: case F16SAMPLERBUFFER: case F16SAMPLER2DMS: case F16SAMPLER2DMSARRAY: case F16SAMPLER1DSHADOW: case F16SAMPLER2DSHADOW: case F16SAMPLER1DARRAYSHADOW: case F16SAMPLER2DARRAYSHADOW: case F16SAMPLER2DRECTSHADOW: case F16SAMPLERCUBESHADOW: case F16SAMPLERCUBEARRAYSHADOW: case F16IMAGE1D: case F16IMAGE2D: case F16IMAGE3D: case F16IMAGE2DRECT: case F16IMAGECUBE: case F16IMAGE1DARRAY: case F16IMAGE2DARRAY: case F16IMAGECUBEARRAY: case F16IMAGEBUFFER: case F16IMAGE2DMS: case F16IMAGE2DMSARRAY: case F16TEXTURE1D: case F16TEXTURE2D: case F16TEXTURE3D: case F16TEXTURE2DRECT: case F16TEXTURECUBE: case F16TEXTURE1DARRAY: case F16TEXTURE2DARRAY: case F16TEXTURECUBEARRAY: case F16TEXTUREBUFFER: case F16TEXTURE2DMS: case F16TEXTURE2DMSARRAY: case F16SUBPASSINPUT: case F16SUBPASSINPUTMS: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float_fetch)) return keyword; return identifierOrType(); case EXPLICITINTERPAMD: if (parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter)) return keyword; return identifierOrType(); case PERVERTEXNV: if ((!parseContext.isEsProfile() && parseContext.version >= 450) || parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric)) 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))) || (!parseContext.isEsProfile() && (parseContext.version >= 400 || parseContext.extensionsTurnedOn(Num_AEP_core_gpu_shader5, AEP_core_gpu_shader5)))) return keyword; if (parseContext.isEsProfile() && parseContext.version == 310) { reservedWord(); return keyword; } return identifierOrType(); case PERPRIMITIVENV: case PERVIEWNV: case PERTASKNV: 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() || parseContext.extensionTurnedOn(E_GL_NV_cooperative_matrix)) return keyword; return identifierOrType(); case UCOOPMATNV: case ICOOPMATNV: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_NV_integer_cooperative_matrix)) return keyword; return identifierOrType(); case TENSORARM: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_ARM_tensors)) return keyword; return identifierOrType(); case COOPMAT: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_KHR_cooperative_matrix)) return keyword; return identifierOrType(); case COOPVECNV: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_NV_cooperative_vector)) return keyword; return identifierOrType(); case DEMOTE: if (parseContext.extensionTurnedOn(E_GL_EXT_demote_to_helper_invocation)) return keyword; else return identifierOrType(); case SPIRV_INSTRUCTION: case SPIRV_EXECUTION_MODE: case SPIRV_EXECUTION_MODE_ID: case SPIRV_DECORATE: case SPIRV_DECORATE_ID: case SPIRV_DECORATE_STRING: case SPIRV_TYPE: case SPIRV_STORAGE_CLASS: case SPIRV_BY_REFERENCE: case SPIRV_LITERAL: if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) return keyword; return identifierOrType(); case HITOBJECTNV: if (parseContext.symbolTable.atBuiltInLevel() || (!parseContext.isEsProfile() && parseContext.version >= 460 && parseContext.extensionTurnedOn(E_GL_NV_shader_invocation_reorder))) return keyword; return identifierOrType(); case HITOBJECTATTRNV: if (parseContext.symbolTable.atBuiltInLevel() || (!parseContext.isEsProfile() && parseContext.version >= 460 && parseContext.extensionTurnedOn(E_GL_NV_shader_invocation_reorder))) return keyword; return identifierOrType(); case FUNCTION: case TENSORLAYOUTNV: case TENSORVIEWNV: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_NV_cooperative_matrix2)) return keyword; return identifierOrType(); default: parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc); return 0; } } int TScanContext::identifierOrType() { parserToken->sType.lex.string = NewPoolTString(tokenText); if (field) return IDENTIFIER; // If we see an identifier right after a type, this might be a declarator. // But not in template parameters (inside angle brackets), array expressions (inside square brackets), // or function parameters (inside parentheses) if (afterType && angleBracketDepth == 0 && squareBracketDepth == 0 && parenDepth == 0) { afterDeclarator = true; afterType = false; return IDENTIFIER; } parserToken->sType.lex.symbol = parseContext.symbolTable.find(*parserToken->sType.lex.string); if ((afterType == false && afterStruct == false) && parserToken->sType.lex.symbol != nullptr) { if (const TVariable* variable = parserToken->sType.lex.symbol->getAsVariable()) { if (variable->isUserType() && // treat redeclaration of forward-declared buffer/uniform reference as an identifier !(variable->getType().isReference() && afterBuffer)) { // If we're in a declarator list (like "float a, B;"), treat struct names as IDENTIFIER // to fix GitHub issue #3931 if (inDeclaratorList) { return IDENTIFIER; } afterType = true; return TYPE_NAME; } } } return IDENTIFIER; } // Give an error for use of a reserved symbol. // However, allow built-in declarations to use reserved words, to allow // extension support before the extension is enabled. int TScanContext::reservedWord() { if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.error(loc, "Reserved word.", tokenText, "", ""); return 0; } int TScanContext::identifierOrReserved(bool reserved) { if (reserved) { reservedWord(); return 0; } if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future reserved keyword", tokenText, ""); return identifierOrType(); } // For keywords that suddenly showed up on non-ES (not previously reserved) // but then got reserved by ES 3.0. int TScanContext::es30ReservedFromGLSL(int version) { if (parseContext.symbolTable.atBuiltInLevel()) return keyword; if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < version)) { if (parseContext.isForwardCompatible()) parseContext.warn(loc, "future reserved word in ES 300 and keyword in GLSL", tokenText, ""); return identifierOrType(); } else if (parseContext.isEsProfile() && parseContext.version >= 300) reservedWord(); return keyword; } // For a keyword that was never reserved, until it suddenly // showed up, both in an es version and a non-ES version. int TScanContext::nonreservedKeyword(int esVersion, int nonEsVersion) { if ((parseContext.isEsProfile() && parseContext.version < esVersion) || (!parseContext.isEsProfile() && parseContext.version < nonEsVersion)) { if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future keyword", tokenText, ""); return identifierOrType(); } return keyword; } int TScanContext::precisionKeyword() { if (parseContext.isEsProfile() || parseContext.version >= 130) return keyword; if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using ES precision qualifier keyword", tokenText, ""); return identifierOrType(); } int TScanContext::matNxM() { afterType = true; if (parseContext.version > 110) return keyword; if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future non-square matrix type keyword", tokenText, ""); return identifierOrType(); } int TScanContext::dMat() { afterType = true; if (parseContext.isEsProfile() && parseContext.version >= 300) { reservedWord(); return keyword; } if (!parseContext.isEsProfile() && (parseContext.version >= 400 || parseContext.symbolTable.atBuiltInLevel() || (parseContext.version >= 150 && parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64)) || (parseContext.version >= 150 && parseContext.extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit) && parseContext.language == EShLangVertex))) return keyword; if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future type keyword", tokenText, ""); return identifierOrType(); } int TScanContext::firstGenerationImage(bool inEs310) { if (parseContext.symbolTable.atBuiltInLevel() || (!parseContext.isEsProfile() && (parseContext.version >= 420 || parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store))) || (inEs310 && parseContext.isEsProfile() && parseContext.version >= 310)) return keyword; if ((parseContext.isEsProfile() && parseContext.version >= 300) || (!parseContext.isEsProfile() && parseContext.version >= 130)) { reservedWord(); return keyword; } if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future type keyword", tokenText, ""); return identifierOrType(); } int TScanContext::secondGenerationImage() { if (parseContext.isEsProfile() && parseContext.version >= 310) { reservedWord(); return keyword; } if (parseContext.symbolTable.atBuiltInLevel() || (!parseContext.isEsProfile() && (parseContext.version >= 420 || parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store)))) return keyword; if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future type keyword", tokenText, ""); return identifierOrType(); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/Scan.h000066400000000000000000000227411506534232700214500ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _GLSLANG_SCAN_INCLUDED_ #define _GLSLANG_SCAN_INCLUDED_ #include "Versions.h" namespace glslang { // Use a global end-of-input character, so no translation is needed across // layers of encapsulation. Characters are all 8 bit, and positive, so there is // no aliasing of character 255 onto -1, for example. const int EndOfInput = -1; // // A character scanner that seamlessly, on read-only strings, reads across an // array of strings without assuming null termination. // class TInputScanner { public: TInputScanner(int n, const char* const s[], size_t L[], const char* const* names = nullptr, int b = 0, int f = 0, bool single = false) : numSources(n), // up to this point, common usage is "char*", but now we need positive 8-bit characters sources(reinterpret_cast(s)), lengths(L), currentSource(0), currentChar(0), stringBias(b), finale(f), singleLogical(single), endOfFileReached(false) { loc = new TSourceLoc[numSources]; for (int i = 0; i < numSources; ++i) { loc[i].init(i - stringBias); } if (names != nullptr) { for (int i = 0; i < numSources; ++i) loc[i].name = names[i] != nullptr ? NewPoolTString(names[i]) : nullptr; } loc[currentSource].line = 1; logicalSourceLoc.init(1); logicalSourceLoc.name = loc[0].name; } virtual ~TInputScanner() { delete [] loc; } // retrieve the next character and advance one character int get() { int ret = peek(); if (ret == EndOfInput) return ret; ++loc[currentSource].column; ++logicalSourceLoc.column; if (ret == '\n') { ++loc[currentSource].line; ++logicalSourceLoc.line; logicalSourceLoc.column = 0; loc[currentSource].column = 0; } advance(); return ret; } // retrieve the next character, no advance int peek() { if (currentSource >= numSources) { endOfFileReached = true; return EndOfInput; } // Make sure we do not read off the end of a string. // N.B. Sources can have a length of 0. int sourceToRead = currentSource; size_t charToRead = currentChar; while(charToRead >= lengths[sourceToRead]) { charToRead = 0; sourceToRead += 1; if (sourceToRead >= numSources) { return EndOfInput; } } // Here, we care about making negative valued characters positive return sources[sourceToRead][charToRead]; } // go back one character void unget() { // Do not roll back once we've reached the end of the file. if (endOfFileReached) return; if (currentChar > 0) { --currentChar; --loc[currentSource].column; --logicalSourceLoc.column; if (loc[currentSource].column < 0) { // We've moved back past a new line. Find the // previous newline (or start of the file) to compute // the column count on the now current line. size_t chIndex = currentChar; while (chIndex > 0) { if (sources[currentSource][chIndex] == '\n') { break; } --chIndex; } logicalSourceLoc.column = (int)(currentChar - chIndex); loc[currentSource].column = (int)(currentChar - chIndex); } } else { do { --currentSource; } while (currentSource > 0 && lengths[currentSource] == 0); if (lengths[currentSource] == 0) { // set to 0 if we've backed up to the start of an empty string currentChar = 0; } else currentChar = lengths[currentSource] - 1; } if (peek() == '\n') { --loc[currentSource].line; --logicalSourceLoc.line; } } // for #line override void setLine(int newLine) { logicalSourceLoc.line = newLine; loc[getLastValidSourceIndex()].line = newLine; } // for #line override in filename based parsing void setFile(const char* filename) { TString* fn_tstr = NewPoolTString(filename); logicalSourceLoc.name = fn_tstr; loc[getLastValidSourceIndex()].name = fn_tstr; } void setFile(const char* filename, int i) { TString* fn_tstr = NewPoolTString(filename); if (i == getLastValidSourceIndex()) { logicalSourceLoc.name = fn_tstr; } loc[i].name = fn_tstr; } void setString(int newString) { logicalSourceLoc.string = newString; loc[getLastValidSourceIndex()].string = newString; logicalSourceLoc.name = nullptr; loc[getLastValidSourceIndex()].name = nullptr; } // for #include content indentation void setColumn(int col) { logicalSourceLoc.column = col; loc[getLastValidSourceIndex()].column = col; } void setEndOfInput() { endOfFileReached = true; currentSource = numSources; } bool atEndOfInput() const { return endOfFileReached; } const TSourceLoc& getSourceLoc() const { if (singleLogical) { return logicalSourceLoc; } else { return loc[std::max(0, std::min(currentSource, numSources - finale - 1))]; } } // Returns the index (starting from 0) of the most recent valid source string we are reading from. int getLastValidSourceIndex() const { return std::min(currentSource, numSources - 1); } void consumeWhiteSpace(bool& foundNonSpaceTab); bool consumeComment(); void consumeWhitespaceComment(bool& foundNonSpaceTab); bool scanVersion(int& version, EProfile& profile, bool& notFirstToken); protected: // advance one character void advance() { ++currentChar; if (currentChar >= lengths[currentSource]) { ++currentSource; if (currentSource < numSources) { loc[currentSource].string = loc[currentSource - 1].string + 1; loc[currentSource].line = 1; loc[currentSource].column = 0; } while (currentSource < numSources && lengths[currentSource] == 0) { ++currentSource; if (currentSource < numSources) { loc[currentSource].string = loc[currentSource - 1].string + 1; loc[currentSource].line = 1; loc[currentSource].column = 0; } } currentChar = 0; } } int numSources; // number of strings in source const unsigned char* const *sources; // array of strings; must be converted to positive values on use, to avoid aliasing with -1 as EndOfInput const size_t *lengths; // length of each string int currentSource; size_t currentChar; // This is for reporting what string/line an error occurred on, and can be overridden by #line. // It remembers the last state of each source string as it is left for the next one, so unget() // can restore that state. TSourceLoc* loc; // an array int stringBias; // the first string that is the user's string number 0 int finale; // number of internal strings after user's last string TSourceLoc logicalSourceLoc; bool singleLogical; // treats the strings as a single logical string. // locations will be reported from the first string. // Set to true once peek() returns EndOfFile, so that we won't roll back // once we've reached EndOfFile. bool endOfFileReached; }; } // end namespace glslang #endif // _GLSLANG_SCAN_INCLUDED_ glslang-16.0.0/glslang/MachineIndependent/ScanContext.h000066400000000000000000000073111506534232700230110ustar00rootroot00000000000000// // Copyright (C) 2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // This holds context specific to the GLSL scanner, which // sits between the preprocessor scanner and parser. // #pragma once #include "ParseHelper.h" namespace glslang { class TPpContext; class TPpToken; class TParserToken; class TScanContext { public: explicit TScanContext(TParseContextBase& pc) : parseContext(pc), afterType(false), afterStruct(false), field(false), afterBuffer(false), inDeclaratorList(false), afterDeclarator(false), angleBracketDepth(0), squareBracketDepth(0), parenDepth(0) { } virtual ~TScanContext() { } static void fillInKeywordMap(); static void deleteKeywordMap(); int tokenize(TPpContext*, TParserToken&); protected: TScanContext(TScanContext&); TScanContext& operator=(TScanContext&); int tokenizeIdentifier(); int identifierOrType(); int reservedWord(); int identifierOrReserved(bool reserved); int es30ReservedFromGLSL(int version); int nonreservedKeyword(int esVersion, int nonEsVersion); int precisionKeyword(); int matNxM(); int dMat(); int firstGenerationImage(bool inEs310); int secondGenerationImage(); TParseContextBase& parseContext; bool afterType; // true if we've recognized a type, so can only be looking for an identifier bool afterStruct; // true if we've recognized the STRUCT keyword, so can only be looking for an identifier bool field; // true if we're on a field, right after a '.' bool afterBuffer; // true if we've recognized the BUFFER keyword bool inDeclaratorList; // true if we detected we're in a declarator list like "float a, b;" bool afterDeclarator; // true if we just saw an identifier after a type (potential declarator) int angleBracketDepth; // track nesting level of < > to detect template parameters int squareBracketDepth; // track nesting level of [ ] to detect array expressions int parenDepth; // track nesting level of ( ) to detect function parameters TSourceLoc loc; TParserToken* parserToken; TPpToken* ppToken; const char* tokenText; int keyword; }; } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/ShaderLang.cpp000066400000000000000000002477151506534232700231410ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013-2016 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Implement the top-level of interface to the compiler/linker, // as defined in ShaderLang.h // This is the platform independent interface between an OGL driver // and the shading language compiler/linker. // #include #include #include #include #include #include "SymbolTable.h" #include "ParseHelper.h" #include "Scan.h" #include "ScanContext.h" #ifdef ENABLE_HLSL #include "../HLSL/hlslParseHelper.h" #include "../HLSL/hlslParseables.h" #include "../HLSL/hlslScanContext.h" #endif #include "../Include/ShHandle.h" #include "preprocessor/PpContext.h" #define SH_EXPORTING #include "../Public/ShaderLang.h" #include "reflection.h" #include "iomapper.h" #include "Initialize.h" // TODO: this really shouldn't be here, it is only because of the trial addition // of printing pre-processed tokens, which requires knowing the string literal // token to print ", but none of that seems appropriate for this file. #include "preprocessor/PpTokens.h" // Build-time generated includes #include "glslang/build_info.h" namespace { // anonymous namespace for file-local functions and symbols // Total number of successful initializers of glslang: a refcount // Shared global; access should be protected by a global mutex/critical section. int NumberOfClients = 0; // global initialization lock #ifndef DISABLE_THREAD_SUPPORT std::mutex init_lock; #endif using namespace glslang; // Create a language specific version of parseables. TBuiltInParseables* CreateBuiltInParseables(TInfoSink& infoSink, EShSource source) { switch (source) { case EShSourceGlsl: return new TBuiltIns(); // GLSL builtIns #ifdef ENABLE_HLSL case EShSourceHlsl: return new TBuiltInParseablesHlsl(); // HLSL intrinsics #endif default: infoSink.info.message(EPrefixInternalError, "Unable to determine source language"); return nullptr; } } // Create a language specific version of a parse context. TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate& intermediate, int version, EProfile profile, EShSource source, EShLanguage language, TInfoSink& infoSink, SpvVersion spvVersion, bool forwardCompatible, EShMessages messages, bool parsingBuiltIns, std::string sourceEntryPointName = "") { switch (source) { case EShSourceGlsl: { if (sourceEntryPointName.size() == 0) intermediate.setEntryPointName("main"); TString entryPoint = sourceEntryPointName.c_str(); return new TParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, language, infoSink, forwardCompatible, messages, &entryPoint); } #ifdef ENABLE_HLSL case EShSourceHlsl: return new HlslParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, language, infoSink, sourceEntryPointName.c_str(), forwardCompatible, messages); #endif default: infoSink.info.message(EPrefixInternalError, "Unable to determine source language"); return nullptr; } } // Local mapping functions for making arrays of symbol tables.... const int VersionCount = 17; // index range in MapVersionToIndex int MapVersionToIndex(int version) { int index = 0; switch (version) { case 100: index = 0; break; case 110: index = 1; break; case 120: index = 2; break; case 130: index = 3; break; case 140: index = 4; break; case 150: index = 5; break; case 300: index = 6; break; case 330: index = 7; break; case 400: index = 8; break; case 410: index = 9; break; case 420: index = 10; break; case 430: index = 11; break; case 440: index = 12; break; case 310: index = 13; break; case 450: index = 14; break; case 500: index = 0; break; // HLSL case 320: index = 15; break; case 460: index = 16; break; default: assert(0); break; } assert(index < VersionCount); return index; } const int SpvVersionCount = 4; // index range in MapSpvVersionToIndex int MapSpvVersionToIndex(const SpvVersion& spvVersion) { int index = 0; if (spvVersion.openGl > 0) index = 1; else if (spvVersion.vulkan > 0) { if (!spvVersion.vulkanRelaxed) index = 2; else index = 3; } assert(index < SpvVersionCount); return index; } const int ProfileCount = 4; // index range in MapProfileToIndex int MapProfileToIndex(EProfile profile) { int index = 0; switch (profile) { case ENoProfile: index = 0; break; case ECoreProfile: index = 1; break; case ECompatibilityProfile: index = 2; break; case EEsProfile: index = 3; break; default: break; } assert(index < ProfileCount); return index; } const int SourceCount = 2; int MapSourceToIndex(EShSource source) { int index = 0; switch (source) { case EShSourceGlsl: index = 0; break; case EShSourceHlsl: index = 1; break; default: break; } assert(index < SourceCount); return index; } // only one of these needed for non-ES; ES needs 2 for different precision defaults of built-ins enum EPrecisionClass { EPcGeneral, EPcFragment, EPcCount }; // A process-global symbol table per version per profile for built-ins common // to multiple stages (languages), and a process-global symbol table per version // per profile per stage for built-ins unique to each stage. They will be sparsely // populated, so they will only be generated as needed. // // Each has a different set of built-ins, and we want to preserve that from // compile to compile. // TSymbolTable* CommonSymbolTable[VersionCount][SpvVersionCount][ProfileCount][SourceCount][EPcCount] = {}; TSymbolTable* SharedSymbolTables[VersionCount][SpvVersionCount][ProfileCount][SourceCount][EShLangCount] = {}; TPoolAllocator* PerProcessGPA = nullptr; // // Parse and add to the given symbol table the content of the given shader string. // bool InitializeSymbolTable(const TString& builtIns, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, EShSource source, TInfoSink& infoSink, TSymbolTable& symbolTable) { TIntermediate intermediate(language, version, profile); intermediate.setSource(source); std::unique_ptr parseContext(CreateParseContext(symbolTable, intermediate, version, profile, source, language, infoSink, spvVersion, true, EShMsgDefault, true)); TShader::ForbidIncluder includer; TPpContext ppContext(*parseContext, "", includer); TScanContext scanContext(*parseContext); parseContext->setScanContext(&scanContext); parseContext->setPpContext(&ppContext); // // Push the symbol table to give it an initial scope. This // push should not have a corresponding pop, so that built-ins // are preserved, and the test for an empty table fails. // symbolTable.push(); const char* builtInShaders[2]; size_t builtInLengths[2]; builtInShaders[0] = builtIns.c_str(); builtInLengths[0] = builtIns.size(); if (builtInLengths[0] == 0) return true; TInputScanner input(1, builtInShaders, builtInLengths); if (! parseContext->parseShaderStrings(ppContext, input) != 0) { infoSink.info.message(EPrefixInternalError, "Unable to parse built-ins"); printf("Unable to parse built-ins\n%s\n", infoSink.info.c_str()); printf("%s\n", builtInShaders[0]); return false; } return true; } int CommonIndex(EProfile profile, EShLanguage language) { return (profile == EEsProfile && language == EShLangFragment) ? EPcFragment : EPcGeneral; } // // To initialize per-stage shared tables, with the common table already complete. // bool InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, EShSource source, TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables) { (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]); if (!InitializeSymbolTable(builtInParseables.getStageString(language), version, profile, spvVersion, language, source, infoSink, *symbolTables[language])) return false; builtInParseables.identifyBuiltIns(version, profile, spvVersion, language, *symbolTables[language]); if (profile == EEsProfile && version >= 300) (*symbolTables[language]).setNoBuiltInRedeclarations(); if (version == 110) (*symbolTables[language]).setSeparateNameSpaces(); return true; } // // Initialize the full set of shareable symbol tables; // The common (cross-stage) and those shareable per-stage. // bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables, int version, EProfile profile, const SpvVersion& spvVersion, EShSource source) { bool success = true; std::unique_ptr builtInParseables(CreateBuiltInParseables(infoSink, source)); if (builtInParseables == nullptr) return false; builtInParseables->initialize(version, profile, spvVersion); // do the common tables success &= InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, EShLangVertex, source, infoSink, *commonTable[EPcGeneral]); if (profile == EEsProfile) success &= InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, EShLangFragment, source, infoSink, *commonTable[EPcFragment]); // do the per-stage tables // always have vertex and fragment success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangVertex, source, infoSink, commonTable, symbolTables); success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangFragment, source, infoSink, commonTable, symbolTables); // check for tessellation if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) { success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTessControl, source, infoSink, commonTable, symbolTables); success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTessEvaluation, source, infoSink, commonTable, symbolTables); } // check for geometry if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source, infoSink, commonTable, symbolTables); // check for compute if ((profile != EEsProfile && version >= 420) || (profile == EEsProfile && version >= 310)) success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, infoSink, commonTable, symbolTables); // check for ray tracing stages if (profile != EEsProfile && version >= 450) { success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGen, source, infoSink, commonTable, symbolTables); success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangIntersect, source, infoSink, commonTable, symbolTables); success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangAnyHit, source, infoSink, commonTable, symbolTables); success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangClosestHit, source, infoSink, commonTable, symbolTables); success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMiss, source, infoSink, commonTable, symbolTables); success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCallable, source, infoSink, commonTable, symbolTables); } // check for mesh if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMesh, source, infoSink, commonTable, symbolTables); // check for task if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) success &= InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTask, source, infoSink, commonTable, symbolTables); return success; } bool AddContextSpecificSymbols(const TBuiltInResource* resources, TInfoSink& infoSink, TSymbolTable& symbolTable, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, EShSource source) { std::unique_ptr builtInParseables(CreateBuiltInParseables(infoSink, source)); if (builtInParseables == nullptr) return false; builtInParseables->initialize(*resources, version, profile, spvVersion, language); if (!InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, language, source, infoSink, symbolTable)) return false; builtInParseables->identifyBuiltIns(version, profile, spvVersion, language, symbolTable, *resources); return true; } // // To do this on the fly, we want to leave the current state of our thread's // pool allocator intact, so: // - Switch to a new pool for parsing the built-ins // - Do the parsing, which builds the symbol table, using the new pool // - Switch to the process-global pool to save a copy of the resulting symbol table // - Free up the new pool used to parse the built-ins // - Switch back to the original thread's pool // // This only gets done the first time any thread needs a particular symbol table // (lazy evaluation). // bool SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& spvVersion, EShSource source) { TInfoSink infoSink; bool success; // Make sure only one thread tries to do this at a time #ifndef DISABLE_THREAD_SUPPORT const std::lock_guard lock(init_lock); #endif // See if it's already been done for this version/profile combination int versionIndex = MapVersionToIndex(version); int spvVersionIndex = MapSpvVersionToIndex(spvVersion); int profileIndex = MapProfileToIndex(profile); int sourceIndex = MapSourceToIndex(source); if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral]) { return true; } // Switch to a new pool TPoolAllocator& previousAllocator = GetThreadPoolAllocator(); TPoolAllocator* builtInPoolAllocator = new TPoolAllocator; SetThreadPoolAllocator(builtInPoolAllocator); // Dynamically allocate the local symbol tables so we can control when they are deallocated WRT when the pool is popped. TSymbolTable* commonTable[EPcCount]; TSymbolTable* stageTables[EShLangCount]; for (int precClass = 0; precClass < EPcCount; ++precClass) commonTable[precClass] = new TSymbolTable; for (int stage = 0; stage < EShLangCount; ++stage) stageTables[stage] = new TSymbolTable; // Generate the local symbol tables using the new pool if (!InitializeSymbolTables(infoSink, commonTable, stageTables, version, profile, spvVersion, source)) { success = false; goto cleanup; } // Switch to the process-global pool SetThreadPoolAllocator(PerProcessGPA); // Copy the local symbol tables from the new pool to the global tables using the process-global pool for (int precClass = 0; precClass < EPcCount; ++precClass) { if (! commonTable[precClass]->isEmpty()) { CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass] = new TSymbolTable; CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass]->copyTable(*commonTable[precClass]); CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass]->readOnly(); } } for (int stage = 0; stage < EShLangCount; ++stage) { if (! stageTables[stage]->isEmpty()) { SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage] = new TSymbolTable; SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->adoptLevels(*CommonSymbolTable [versionIndex][spvVersionIndex][profileIndex][sourceIndex][CommonIndex(profile, (EShLanguage)stage)]); SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->copyTable(*stageTables[stage]); SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->readOnly(); } } success = true; cleanup: // Clean up the local tables before deleting the pool they used. for (int precClass = 0; precClass < EPcCount; ++precClass) delete commonTable[precClass]; for (int stage = 0; stage < EShLangCount; ++stage) delete stageTables[stage]; delete builtInPoolAllocator; SetThreadPoolAllocator(&previousAllocator); return success; } // Function to Print all builtins void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable) { infoSink.debug << "BuiltinSymbolTable {\n"; symbolTable.dump(infoSink, true); infoSink.debug << "}\n"; } // Return true if the shader was correctly specified for version/profile/stage. bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNotFirst, int defaultVersion, EShSource source, int& version, EProfile& profile, const SpvVersion& spvVersion) { const int FirstProfileVersion = 150; bool correct = true; if (source == EShSourceHlsl) { version = 500; // shader model; currently a characteristic of glslang, not the input profile = ECoreProfile; // allow doubles in prototype parsing return correct; } // Get a version... if (version == 0) { version = defaultVersion; // infoSink.info.message(EPrefixWarning, "#version: statement missing; use #version on first line of shader"); } // Get a good profile... if (profile == ENoProfile) { if (version == 300 || version == 310 || version == 320) { correct = false; infoSink.info.message(EPrefixError, "#version: versions 300, 310, and 320 require specifying the 'es' profile"); profile = EEsProfile; } else if (version == 100) profile = EEsProfile; else if (version >= FirstProfileVersion) profile = ECoreProfile; else profile = ENoProfile; } else { // a profile was provided... if (version < 150) { correct = false; infoSink.info.message(EPrefixError, "#version: versions before 150 do not allow a profile token"); if (version == 100) profile = EEsProfile; else profile = ENoProfile; } else if (version == 300 || version == 310 || version == 320) { if (profile != EEsProfile) { correct = false; infoSink.info.message(EPrefixError, "#version: versions 300, 310, and 320 support only the es profile"); } profile = EEsProfile; } else { if (profile == EEsProfile) { correct = false; infoSink.info.message(EPrefixError, "#version: only version 300, 310, and 320 support the es profile"); if (version >= FirstProfileVersion) profile = ECoreProfile; else profile = ENoProfile; } // else: typical desktop case... e.g., "#version 410 core" } } // Fix version... switch (version) { // ES versions case 100: break; case 300: break; case 310: break; case 320: break; // desktop versions case 110: break; case 120: break; case 130: break; case 140: break; case 150: break; case 330: break; case 400: break; case 410: break; case 420: break; case 430: break; case 440: break; case 450: break; case 460: break; // unknown version default: correct = false; infoSink.info.message(EPrefixError, "version not supported"); if (profile == EEsProfile) version = 310; else { version = 450; profile = ECoreProfile; } break; } // Correct for stage type... switch (stage) { case EShLangGeometry: if ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 150)) { correct = false; infoSink.info.message(EPrefixError, "#version: geometry shaders require es profile with version 310 or non-es profile with version 150 or above"); version = (profile == EEsProfile) ? 310 : 150; if (profile == EEsProfile || profile == ENoProfile) profile = ECoreProfile; } break; case EShLangTessControl: case EShLangTessEvaluation: if ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 150)) { correct = false; infoSink.info.message(EPrefixError, "#version: tessellation shaders require es profile with version 310 or non-es profile with version 150 or above"); version = (profile == EEsProfile) ? 310 : 400; // 150 supports the extension, correction is to 400 which does not if (profile == EEsProfile || profile == ENoProfile) profile = ECoreProfile; } break; case EShLangCompute: if ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 420)) { correct = false; infoSink.info.message(EPrefixError, "#version: compute shaders require es profile with version 310 or above, or non-es profile with version 420 or above"); version = profile == EEsProfile ? 310 : 420; } break; case EShLangRayGen: case EShLangIntersect: case EShLangAnyHit: case EShLangClosestHit: case EShLangMiss: case EShLangCallable: if (profile == EEsProfile || version < 460) { correct = false; infoSink.info.message(EPrefixError, "#version: ray tracing shaders require non-es profile with version 460 or above"); version = 460; } break; case EShLangMesh: case EShLangTask: if ((profile == EEsProfile && version < 320) || (profile != EEsProfile && version < 450)) { correct = false; infoSink.info.message(EPrefixError, "#version: mesh/task shaders require es profile with version 320 or above, or non-es profile with version 450 or above"); version = profile == EEsProfile ? 320 : 450; } break; default: break; } if (profile == EEsProfile && version >= 300 && versionNotFirst) { correct = false; infoSink.info.message(EPrefixError, "#version: statement must appear first in es-profile shader; before comments or newlines"); } // Check for SPIR-V compatibility if (spvVersion.spv != 0) { switch (profile) { case EEsProfile: if (version < 310) { correct = false; infoSink.info.message(EPrefixError, "#version: ES shaders for SPIR-V require version 310 or higher"); version = 310; } break; case ECompatibilityProfile: infoSink.info.message(EPrefixError, "#version: compilation for SPIR-V does not support the compatibility profile"); break; default: if (spvVersion.vulkan > 0 && version < 140) { correct = false; infoSink.info.message(EPrefixError, "#version: Desktop shaders for Vulkan SPIR-V require version 140 or higher"); version = 140; } if (spvVersion.openGl >= 100 && version < 330) { correct = false; infoSink.info.message(EPrefixError, "#version: Desktop shaders for OpenGL SPIR-V require version 330 or higher"); version = 330; } break; } } return correct; } // There are multiple paths in for setting environment stuff. // TEnvironment takes precedence, for what it sets, so sort all this out. // Ideally, the internal code could be made to use TEnvironment, but for // now, translate it to the historically used parameters. void TranslateEnvironment(const TEnvironment* environment, EShMessages& messages, EShSource& source, EShLanguage& stage, SpvVersion& spvVersion) { // Set up environmental defaults, first ignoring 'environment'. if (messages & EShMsgSpvRules) spvVersion.spv = EShTargetSpv_1_0; if (messages & EShMsgVulkanRules) { spvVersion.vulkan = EShTargetVulkan_1_0; spvVersion.vulkanGlsl = 100; } else if (spvVersion.spv != 0) spvVersion.openGl = 100; // Now, override, based on any content set in 'environment'. // 'environment' must be cleared to ESh*None settings when items // are not being set. if (environment != nullptr) { // input language if (environment->input.languageFamily != EShSourceNone) { stage = environment->input.stage; switch (environment->input.dialect) { case EShClientNone: break; case EShClientVulkan: spvVersion.vulkanGlsl = environment->input.dialectVersion; spvVersion.vulkanRelaxed = environment->input.vulkanRulesRelaxed; break; case EShClientOpenGL: spvVersion.openGl = environment->input.dialectVersion; break; case EShClientCount: assert(0); break; } switch (environment->input.languageFamily) { case EShSourceNone: break; case EShSourceGlsl: source = EShSourceGlsl; messages = static_cast(messages & ~EShMsgReadHlsl); break; case EShSourceHlsl: source = EShSourceHlsl; messages = static_cast(messages | EShMsgReadHlsl); break; case EShSourceCount: assert(0); break; } } // client switch (environment->client.client) { case EShClientVulkan: spvVersion.vulkan = environment->client.version; break; default: break; } // generated code switch (environment->target.language) { case EshTargetSpv: spvVersion.spv = environment->target.version; break; default: break; } } } // Most processes are recorded when set in the intermediate representation, // These are the few that are not. void RecordProcesses(TIntermediate& intermediate, EShMessages messages, const std::string& sourceEntryPointName) { if ((messages & EShMsgRelaxedErrors) != 0) intermediate.addProcess("relaxed-errors"); if ((messages & EShMsgSuppressWarnings) != 0) intermediate.addProcess("suppress-warnings"); if ((messages & EShMsgKeepUncalled) != 0) intermediate.addProcess("keep-uncalled"); if (sourceEntryPointName.size() > 0) { intermediate.addProcess("source-entrypoint"); intermediate.addProcessArgument(sourceEntryPointName); } } // This is the common setup and cleanup code for PreprocessDeferred and // CompileDeferred. // It takes any callable with a signature of // bool (TParseContextBase& parseContext, TPpContext& ppContext, // TInputScanner& input, bool versionWillBeError, // TSymbolTable& , TIntermediate& , // EShOptimizationLevel , EShMessages ); // Which returns false if a failure was detected and true otherwise. // template bool ProcessDeferred( TCompiler* compiler, const char* const shaderStrings[], const int numStrings, const int* inputLengths, const char* const stringNames[], const char* customPreamble, const EShOptimizationLevel optLevel, const TBuiltInResource* resources, int defaultVersion, // use 100 for ES environment, 110 for desktop; this is the GLSL version, not SPIR-V or Vulkan EProfile defaultProfile, // set version/profile to defaultVersion/defaultProfile regardless of the #version // directive in the source code bool forceDefaultVersionAndProfile, int overrideVersion, // overrides version specified by #version 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. ProcessingContext& processingContext, bool requireNonempty, TShader::Includer& includer, const std::string sourceEntryPointName = "", const TEnvironment* environment = nullptr, // optional way of fully setting all versions, overriding the above bool compileOnly = false) { // This must be undone (.pop()) by the caller, after it finishes consuming the created tree. GetThreadPoolAllocator().push(); if (numStrings == 0) return true; // Move to length-based strings, rather than null-terminated strings. // Also, add strings to include the preamble and to ensure the shader is not null, // which lets the grammar accept what was a null (post preprocessing) shader. // // Shader will look like // string 0: system preamble // string 1: custom preamble // string 2...numStrings+1: user's shader // string numStrings+2: "int;" const int numPre = 2; const int numPost = requireNonempty? 1 : 0; const int numTotal = numPre + numStrings + numPost; std::unique_ptr lengths(new size_t[numTotal]); std::unique_ptr strings(new const char*[numTotal]); std::unique_ptr names(new const char*[numTotal]); for (int s = 0; s < numStrings; ++s) { strings[s + numPre] = shaderStrings[s]; if (inputLengths == nullptr || inputLengths[s] < 0) lengths[s + numPre] = strlen(shaderStrings[s]); else lengths[s + numPre] = inputLengths[s]; } if (stringNames != nullptr) { for (int s = 0; s < numStrings; ++s) names[s + numPre] = stringNames[s]; } else { for (int s = 0; s < numStrings; ++s) names[s + numPre] = nullptr; } // Get all the stages, languages, clients, and other environment // stuff sorted out. EShSource sourceGuess = (messages & EShMsgReadHlsl) != 0 ? EShSourceHlsl : EShSourceGlsl; SpvVersion spvVersion; EShLanguage stage = compiler->getLanguage(); TranslateEnvironment(environment, messages, sourceGuess, stage, spvVersion); #ifdef ENABLE_HLSL EShSource source = sourceGuess; if (environment != nullptr && environment->target.hlslFunctionality1) intermediate.setHlslFunctionality1(); #else const EShSource source = EShSourceGlsl; #endif // First, without using the preprocessor or parser, find the #version, so we know what // symbol tables, processing rules, etc. to set up. This does not need the extra strings // outlined above, just the user shader, after the system and user preambles. glslang::TInputScanner userInput(numStrings, &strings[numPre], &lengths[numPre]); int version = 0; EProfile profile = ENoProfile; bool versionNotFirstToken = false; bool versionNotFirst = (source == EShSourceHlsl) ? true : userInput.scanVersion(version, profile, versionNotFirstToken); bool versionNotFound = version == 0; if (forceDefaultVersionAndProfile && source == EShSourceGlsl) { if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound && (version != defaultVersion || profile != defaultProfile)) { compiler->infoSink.info << "Warning, (version, profile) forced to be (" << defaultVersion << ", " << ProfileName(defaultProfile) << "), while in source code it is (" << version << ", " << ProfileName(profile) << ")\n"; } if (versionNotFound) { versionNotFirstToken = false; versionNotFirst = false; versionNotFound = false; } version = defaultVersion; profile = defaultProfile; } if (source == EShSourceGlsl && overrideVersion != 0) { version = overrideVersion; } bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage, versionNotFirst, defaultVersion, source, version, profile, spvVersion); bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst)); bool warnVersionNotFirst = false; if (! versionWillBeError && versionNotFirstToken) { if (messages & EShMsgRelaxedErrors) warnVersionNotFirst = true; else versionWillBeError = true; } intermediate.setSource(source); intermediate.setVersion(version); intermediate.setProfile(profile); intermediate.setSpv(spvVersion); RecordProcesses(intermediate, messages, sourceEntryPointName); if (spvVersion.vulkan > 0) intermediate.setOriginUpperLeft(); #ifdef ENABLE_HLSL if ((messages & EShMsgHlslOffsets) || source == EShSourceHlsl) intermediate.setHlslOffsets(); #endif if (messages & EShMsgDebugInfo) { intermediate.setSourceFile(names[numPre]); for (int s = 0; s < numStrings; ++s) { // The string may not be null-terminated, so make sure we provide // the length along with the string. intermediate.addSourceText(strings[numPre + s], lengths[numPre + s]); } } if (!SetupBuiltinSymbolTable(version, profile, spvVersion, source)) { return false; } TSymbolTable* cachedTable = SharedSymbolTables[MapVersionToIndex(version)] [MapSpvVersionToIndex(spvVersion)] [MapProfileToIndex(profile)] [MapSourceToIndex(source)] [stage]; // Dynamically allocate the symbol table so we can control when it is deallocated WRT the pool. std::unique_ptr symbolTable(new TSymbolTable); if (cachedTable) symbolTable->adoptLevels(*cachedTable); if (intermediate.getUniqueId() != 0) symbolTable->overwriteUniqueId(intermediate.getUniqueId()); // Add built-in symbols that are potentially context dependent; // they get popped again further down. if (! AddContextSpecificSymbols(resources, compiler->infoSink, *symbolTable, version, profile, spvVersion, stage, source)) { return false; } if (messages & EShMsgBuiltinSymbolTable) DumpBuiltinSymbolTable(compiler->infoSink, *symbolTable); // // Now we can process the full shader under proper symbols and rules. // std::unique_ptr parseContext(CreateParseContext(*symbolTable, intermediate, version, profile, source, stage, compiler->infoSink, spvVersion, forwardCompatible, messages, false, sourceEntryPointName)); parseContext->compileOnly = compileOnly; TPpContext ppContext(*parseContext, names[numPre] ? names[numPre] : "", includer); // only GLSL (bison triggered, really) needs an externally set scan context glslang::TScanContext scanContext(*parseContext); if (source == EShSourceGlsl) parseContext->setScanContext(&scanContext); parseContext->setPpContext(&ppContext); parseContext->setLimits(*resources); if (! goodVersion) parseContext->addError(); if (warnVersionNotFirst) { TSourceLoc loc; loc.init(); parseContext->warn(loc, "Illegal to have non-comment, non-whitespace tokens before #version", "#version", ""); } parseContext->initializeExtensionBehavior(); // Fill in the strings as outlined above. std::string preamble; parseContext->getPreamble(preamble); strings[0] = preamble.c_str(); lengths[0] = strlen(strings[0]); names[0] = nullptr; strings[1] = customPreamble; lengths[1] = strlen(strings[1]); names[1] = nullptr; assert(2 == numPre); if (requireNonempty) { const int postIndex = numStrings + numPre; strings[postIndex] = "\n int;"; lengths[postIndex] = strlen(strings[numStrings + numPre]); names[postIndex] = nullptr; } TInputScanner fullInput(numStrings + numPre + numPost, strings.get(), lengths.get(), names.get(), numPre, numPost); // Push a new symbol allocation scope that will get used for the shader's globals. symbolTable->push(); bool success = processingContext(*parseContext, ppContext, fullInput, versionWillBeError, *symbolTable, intermediate, optLevel, messages); intermediate.setUniqueId(symbolTable->getMaxSymbolId()); return success; } // Responsible for keeping track of the most recent source string and line in // the preprocessor and outputting newlines appropriately if the source string // or line changes. class SourceLineSynchronizer { public: SourceLineSynchronizer(const std::function& lastSourceIndex, std::string* output) : getLastSourceIndex(lastSourceIndex), output(output), lastSource(-1), lastLine(0) {} // SourceLineSynchronizer(const SourceLineSynchronizer&) = delete; // SourceLineSynchronizer& operator=(const SourceLineSynchronizer&) = delete; // Sets the internally tracked source string index to that of the most // recently read token. If we switched to a new source string, returns // true and inserts a newline. Otherwise, returns false and outputs nothing. bool syncToMostRecentString() { if (getLastSourceIndex() != lastSource) { // After switching to a new source string, we need to reset lastLine // because line number resets every time a new source string is // used. We also need to output a newline to separate the output // from the previous source string (if there is one). if (lastSource != -1 || lastLine != 0) *output += '\n'; lastSource = getLastSourceIndex(); lastLine = -1; return true; } return false; } // Calls syncToMostRecentString() and then sets the internally tracked line // number to tokenLine. If we switched to a new line, returns true and inserts // newlines appropriately. Otherwise, returns false and outputs nothing. bool syncToLine(int tokenLine) { syncToMostRecentString(); const bool newLineStarted = lastLine < tokenLine; for (; lastLine < tokenLine; ++lastLine) { if (lastLine > 0) *output += '\n'; } return newLineStarted; } // Sets the internally tracked line number to newLineNum. void setLineNum(int newLineNum) { lastLine = newLineNum; } private: SourceLineSynchronizer& operator=(const SourceLineSynchronizer&); // A function for getting the index of the last valid source string we've // read tokens from. const std::function getLastSourceIndex; // output string for newlines. std::string* output; // lastSource is the source string index (starting from 0) of the last token // processed. It is tracked in order for newlines to be inserted when a new // source string starts. -1 means we haven't started processing any source // string. int lastSource; // lastLine is the line number (starting from 1) of the last token processed. // It is tracked in order for newlines to be inserted when a token appears // on a new line. 0 means we haven't started processing any line in the // current source string. int lastLine; }; // DoPreprocessing is a valid ProcessingContext template argument, // which only performs the preprocessing step of compilation. // It places the result in the "string" argument to its constructor. // // This is not an officially supported or fully working path. struct DoPreprocessing { explicit DoPreprocessing(std::string* string): outputString(string) {} bool operator()(TParseContextBase& parseContext, TPpContext& ppContext, TInputScanner& input, bool versionWillBeError, TSymbolTable&, TIntermediate&, EShOptimizationLevel, EShMessages) { // This is a list of tokens that do not require a space before or after. static const std::string noNeededSpaceBeforeTokens = ";)[].,"; static const std::string noNeededSpaceAfterTokens = ".(["; glslang::TPpToken ppToken; parseContext.setScanner(&input); ppContext.setInput(input, versionWillBeError); std::string outputBuffer; SourceLineSynchronizer lineSync( std::bind(&TInputScanner::getLastValidSourceIndex, &input), &outputBuffer); parseContext.setExtensionCallback([&lineSync, &outputBuffer]( int line, const char* extension, const char* behavior) { lineSync.syncToLine(line); outputBuffer += "#extension "; outputBuffer += extension; outputBuffer += " : "; outputBuffer += behavior; }); parseContext.setLineCallback([&lineSync, &outputBuffer, &parseContext]( int curLineNum, int newLineNum, bool hasSource, int sourceNum, const char* sourceName) { // SourceNum is the number of the source-string that is being parsed. lineSync.syncToLine(curLineNum); outputBuffer += "#line "; outputBuffer += std::to_string(newLineNum); if (hasSource) { outputBuffer += ' '; if (sourceName != nullptr) { outputBuffer += '\"'; outputBuffer += sourceName; outputBuffer += '\"'; } else { outputBuffer += std::to_string(sourceNum); } } if (parseContext.lineDirectiveShouldSetNextLine()) { // newLineNum is the new line number for the line following the #line // directive. So the new line number for the current line is newLineNum -= 1; } outputBuffer += '\n'; // And we are at the next line of the #line directive now. lineSync.setLineNum(newLineNum + 1); }); parseContext.setVersionCallback( [&lineSync, &outputBuffer](int line, int version, const char* str) { lineSync.syncToLine(line); outputBuffer += "#version "; outputBuffer += std::to_string(version); if (str) { outputBuffer += ' '; outputBuffer += str; } }); parseContext.setPragmaCallback([&lineSync, &outputBuffer]( int line, const glslang::TVector& ops) { lineSync.syncToLine(line); outputBuffer += "#pragma "; for(size_t i = 0; i < ops.size(); ++i) { outputBuffer += ops[i].c_str(); } }); parseContext.setErrorCallback([&lineSync, &outputBuffer]( int line, const char* errorMessage) { lineSync.syncToLine(line); outputBuffer += "#error "; outputBuffer += errorMessage; }); int lastToken = EndOfInput; // lastToken records the last token processed. std::string lastTokenName; do { int token = ppContext.tokenize(ppToken); if (token == EndOfInput) break; bool isNewString = lineSync.syncToMostRecentString(); bool isNewLine = lineSync.syncToLine(ppToken.loc.line); if (isNewLine) { // Don't emit whitespace onto empty lines. // Copy any whitespace characters at the start of a line // from the input to the output. outputBuffer += std::string(ppToken.loc.column - 1, ' '); } // Output a space in between tokens, but not at the start of a line, // and also not around special tokens. This helps with readability // and consistency. if (!isNewString && !isNewLine && lastToken != EndOfInput) { // left parenthesis need a leading space, except it is in a function-call-like context. // examples: `for (xxx)`, `a * (b + c)`, `vec(2.0)`, `foo(x, y, z)` if (token == '(') { if (lastToken != PpAtomIdentifier || lastTokenName == "if" || lastTokenName == "for" || lastTokenName == "while" || lastTokenName == "switch") outputBuffer += ' '; } else if ((noNeededSpaceBeforeTokens.find((char)token) == std::string::npos) && (noNeededSpaceAfterTokens.find((char)lastToken) == std::string::npos)) { outputBuffer += ' '; } } if (token == PpAtomIdentifier) lastTokenName = ppToken.name; lastToken = token; if (token == PpAtomConstString) outputBuffer += "\""; outputBuffer += ppToken.name; if (token == PpAtomConstString) outputBuffer += "\""; } while (true); outputBuffer += '\n'; *outputString = std::move(outputBuffer); bool success = true; if (parseContext.getNumErrors() > 0) { success = false; parseContext.infoSink.info.prefix(EPrefixError); parseContext.infoSink.info << parseContext.getNumErrors() << " compilation errors. No code generated.\n\n"; } return success; } std::string* outputString; }; // DoFullParse is a valid ProcessingConext template argument for fully // parsing the shader. It populates the "intermediate" with the AST. struct DoFullParse{ bool operator()(TParseContextBase& parseContext, TPpContext& ppContext, TInputScanner& fullInput, bool versionWillBeError, TSymbolTable&, TIntermediate& intermediate, EShOptimizationLevel optLevel, EShMessages messages) { bool success = true; // Parse the full shader. if (! parseContext.parseShaderStrings(ppContext, fullInput, versionWillBeError)) success = false; if (success && intermediate.getTreeRoot()) { if (optLevel == EShOptNoGeneration) parseContext.infoSink.info.message(EPrefixNone, "No errors. No code generation or linking was requested."); else success = intermediate.postProcess(intermediate.getTreeRoot(), parseContext.getLanguage()); } else if (! success) { parseContext.infoSink.info.prefix(EPrefixError); parseContext.infoSink.info << parseContext.getNumErrors() << " compilation errors. No code generated.\n\n"; } if (messages & EShMsgAST) intermediate.output(parseContext.infoSink, true); return success; } }; // Take a single compilation unit, and run the preprocessor on it. // Return: True if there were no issues found in preprocessing, // False if during preprocessing any unknown version, pragmas or // extensions were found. // // NOTE: Doing just preprocessing to obtain a correct preprocessed shader string // is not an officially supported or fully working path. bool PreprocessDeferred( TCompiler* compiler, const char* const shaderStrings[], const int numStrings, const int* inputLengths, const char* const stringNames[], const char* preamble, const EShOptimizationLevel optLevel, const TBuiltInResource* resources, 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, TIntermediate& intermediate, // returned tree, etc. std::string* outputString, TEnvironment* environment = nullptr) { DoPreprocessing parser(outputString); return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, false, includer, "", environment); } // // do a partial compile on the given strings for a single compilation unit // for a potential deferred link into a single stage (and deferred full compile of that // stage through machine-dependent compilation). // // all preprocessing, parsing, semantic checks, etc. for a single compilation unit // are done here. // // return: the tree and other information is filled into the intermediate argument, // and true is returned by the function for success. // bool CompileDeferred( TCompiler* compiler, const char* const shaderStrings[], const int numStrings, const int* inputLengths, const char* const stringNames[], const char* preamble, const EShOptimizationLevel optLevel, const TBuiltInResource* resources, 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. TShader::Includer& includer, const std::string sourceEntryPointName = "", TEnvironment* environment = nullptr, bool compileOnly = false) { DoFullParse parser; return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, true, includer, sourceEntryPointName, environment, compileOnly); } } // end anonymous namespace for local functions // // ShInitialize() should be called exactly once per process, not per thread. // int ShInitialize() { #ifndef DISABLE_THREAD_SUPPORT const std::lock_guard lock(init_lock); #endif ++NumberOfClients; if (PerProcessGPA == nullptr) PerProcessGPA = new TPoolAllocator(); return 1; } // // Driver calls these to create and destroy compiler/linker // objects. // ShHandle ShConstructCompiler(const EShLanguage language, int /*debugOptions unused*/) { TShHandleBase* base = static_cast(ConstructCompiler(language, 0)); return reinterpret_cast(base); } ShHandle ShConstructLinker(const EShExecutable executable, int /*debugOptions unused*/) { TShHandleBase* base = static_cast(ConstructLinker(executable, 0)); return reinterpret_cast(base); } ShHandle ShConstructUniformMap() { TShHandleBase* base = static_cast(ConstructUniformMap()); return reinterpret_cast(base); } void ShDestruct(ShHandle handle) { if (handle == nullptr) return; TShHandleBase* base = static_cast(handle); if (base->getAsCompiler()) DeleteCompiler(base->getAsCompiler()); else if (base->getAsLinker()) DeleteLinker(base->getAsLinker()); else if (base->getAsUniformMap()) DeleteUniformMap(base->getAsUniformMap()); } // // Cleanup symbol tables // int ShFinalize() { #ifndef DISABLE_THREAD_SUPPORT const std::lock_guard lock(init_lock); #endif --NumberOfClients; assert(NumberOfClients >= 0); if (NumberOfClients > 0) return 1; for (int version = 0; version < VersionCount; ++version) { for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) { for (int p = 0; p < ProfileCount; ++p) { for (int source = 0; source < SourceCount; ++source) { for (int stage = 0; stage < EShLangCount; ++stage) { delete SharedSymbolTables[version][spvVersion][p][source][stage]; SharedSymbolTables[version][spvVersion][p][source][stage] = nullptr; } } } } } for (int version = 0; version < VersionCount; ++version) { for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) { for (int p = 0; p < ProfileCount; ++p) { for (int source = 0; source < SourceCount; ++source) { for (int pc = 0; pc < EPcCount; ++pc) { delete CommonSymbolTable[version][spvVersion][p][source][pc]; CommonSymbolTable[version][spvVersion][p][source][pc] = nullptr; } } } } } if (PerProcessGPA != nullptr) { delete PerProcessGPA; PerProcessGPA = nullptr; } return 1; } // // Do a full compile on the given strings for a single compilation unit // forming a complete stage. The result of the machine dependent compilation // is left in the provided compile object. // // Return: The return value is really boolean, indicating // success (1) or failure (0). // int ShCompile( const ShHandle handle, const char* const shaderStrings[], const int numStrings, const int* inputLengths, const EShOptimizationLevel optLevel, const TBuiltInResource* resources, int /*debugOptions*/, int defaultVersion, // use 100 for ES environment, 110 for desktop bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out, const char *shaderFileName // the filename ) { // Map the generic handle to the C++ object if (handle == nullptr) return 0; TShHandleBase* base = reinterpret_cast(handle); TCompiler* compiler = base->getAsCompiler(); if (compiler == nullptr) return 0; SetThreadPoolAllocator(compiler->getPool()); compiler->infoSink.info.erase(); compiler->infoSink.debug.erase(); compiler->infoSink.info.setShaderFileName(shaderFileName); compiler->infoSink.debug.setShaderFileName(shaderFileName); TIntermediate intermediate(compiler->getLanguage()); TShader::ForbidIncluder includer; bool success = CompileDeferred(compiler, shaderStrings, numStrings, inputLengths, nullptr, "", optLevel, resources, defaultVersion, ENoProfile, false, 0, forwardCompatible, messages, intermediate, includer); // // Call the machine dependent compiler // if (success && intermediate.getTreeRoot() && optLevel != EShOptNoGeneration) success = compiler->compile(intermediate.getTreeRoot(), intermediate.getVersion(), intermediate.getProfile()); intermediate.removeTree(); // Throw away all the temporary memory used by the compilation process. // The push was done in the CompileDeferred() call above. GetThreadPoolAllocator().pop(); return success ? 1 : 0; } // // Link the given compile objects. // // Return: The return value of is really boolean, indicating // success or failure. // int ShLinkExt( const ShHandle linkHandle, const ShHandle compHandles[], const int numHandles) { if (linkHandle == nullptr || numHandles == 0) return 0; THandleList cObjects; for (int i = 0; i < numHandles; ++i) { if (compHandles[i] == nullptr) return 0; TShHandleBase* base = reinterpret_cast(compHandles[i]); if (base->getAsLinker()) { cObjects.push_back(base->getAsLinker()); } if (base->getAsCompiler()) cObjects.push_back(base->getAsCompiler()); if (cObjects[i] == nullptr) return 0; } TShHandleBase* base = reinterpret_cast(linkHandle); TLinker* linker = static_cast(base->getAsLinker()); if (linker == nullptr) return 0; SetThreadPoolAllocator(linker->getPool()); linker->infoSink.info.erase(); for (int i = 0; i < numHandles; ++i) { if (cObjects[i]->getAsCompiler()) { if (! cObjects[i]->getAsCompiler()->linkable()) { linker->infoSink.info.message(EPrefixError, "Not all shaders have valid object code."); return 0; } } } bool ret = linker->link(cObjects); return ret ? 1 : 0; } // // ShSetEncrpytionMethod is a place-holder for specifying // how source code is encrypted. // void ShSetEncryptionMethod(ShHandle handle) { if (handle == nullptr) return; } // // Return any compiler/linker/uniformmap log of messages for the application. // const char* ShGetInfoLog(const ShHandle handle) { if (handle == nullptr) return nullptr; TShHandleBase* base = static_cast(handle); TInfoSink* infoSink; if (base->getAsCompiler()) infoSink = &(base->getAsCompiler()->getInfoSink()); else if (base->getAsLinker()) infoSink = &(base->getAsLinker()->getInfoSink()); else return nullptr; infoSink->info << infoSink->debug.c_str(); return infoSink->info.c_str(); } // // Return the resulting binary code from the link process. Structure // is machine dependent. // const void* ShGetExecutable(const ShHandle handle) { if (handle == nullptr) return nullptr; TShHandleBase* base = reinterpret_cast(handle); TLinker* linker = static_cast(base->getAsLinker()); if (linker == nullptr) return nullptr; return linker->getObjectCode(); } // // Let the linker know where the application said it's attributes are bound. // The linker does not use these values, they are remapped by the ICD or // hardware. It just needs them to know what's aliased. // // Return: The return value of is really boolean, indicating // success or failure. // int ShSetVirtualAttributeBindings(const ShHandle handle, const ShBindingTable* table) { if (handle == nullptr) return 0; TShHandleBase* base = reinterpret_cast(handle); TLinker* linker = static_cast(base->getAsLinker()); if (linker == nullptr) return 0; linker->setAppAttributeBindings(table); return 1; } // // Let the linker know where the predefined attributes have to live. // int ShSetFixedAttributeBindings(const ShHandle handle, const ShBindingTable* table) { if (handle == nullptr) return 0; TShHandleBase* base = reinterpret_cast(handle); TLinker* linker = static_cast(base->getAsLinker()); if (linker == nullptr) return 0; linker->setFixedAttributeBindings(table); return 1; } // // Some attribute locations are off-limits to the linker... // int ShExcludeAttributes(const ShHandle handle, int *attributes, int count) { if (handle == nullptr) return 0; TShHandleBase* base = reinterpret_cast(handle); TLinker* linker = static_cast(base->getAsLinker()); if (linker == nullptr) return 0; linker->setExcludedAttributes(attributes, count); return 1; } // // Return the index for OpenGL to use for knowing where a uniform lives. // // Return: The return value of is really boolean, indicating // success or failure. // int ShGetUniformLocation(const ShHandle handle, const char* name) { if (handle == nullptr) return -1; TShHandleBase* base = reinterpret_cast(handle); TUniformMap* uniformMap= base->getAsUniformMap(); if (uniformMap == nullptr) return -1; return uniformMap->getLocation(name); } //////////////////////////////////////////////////////////////////////////////////////////// // // Deferred-Lowering C++ Interface // ----------------------------------- // // Below is a new alternate C++ interface that might potentially replace the above // opaque handle-based interface. // // See more detailed comment in ShaderLang.h // namespace glslang { Version GetVersion() { Version version; version.major = GLSLANG_VERSION_MAJOR; version.minor = GLSLANG_VERSION_MINOR; version.patch = GLSLANG_VERSION_PATCH; version.flavor = GLSLANG_VERSION_FLAVOR; return version; } #define QUOTE(s) #s #define STR(n) QUOTE(n) const char* GetEsslVersionString() { return "OpenGL ES GLSL 3.20 glslang Khronos. " STR(GLSLANG_VERSION_MAJOR) "." STR(GLSLANG_VERSION_MINOR) "." STR( GLSLANG_VERSION_PATCH) GLSLANG_VERSION_FLAVOR; } const char* GetGlslVersionString() { return "4.60 glslang Khronos. " STR(GLSLANG_VERSION_MAJOR) "." STR(GLSLANG_VERSION_MINOR) "." STR( GLSLANG_VERSION_PATCH) GLSLANG_VERSION_FLAVOR; } int GetKhronosToolId() { return 8; } bool InitializeProcess() { return ShInitialize() != 0; } void FinalizeProcess() { ShFinalize(); } class TDeferredCompiler : public TCompiler { public: TDeferredCompiler(EShLanguage s, TInfoSink& i) : TCompiler(s, i) { } virtual bool compile(TIntermNode*, int = 0, EProfile = ENoProfile) { return true; } }; TIoMapper* GetGlslIoMapper() { return static_cast(new TGlslIoMapper()); } TShader::TShader(EShLanguage s) : stage(s), lengths(nullptr), stringNames(nullptr), preamble(""), overrideVersion(0) { pool = new TPoolAllocator; infoSink = new TInfoSink; compiler = new TDeferredCompiler(stage, *infoSink); intermediate = new TIntermediate(s); // clear environment (avoid constructors in them for use in a C interface) environment.input.languageFamily = EShSourceNone; environment.input.dialect = EShClientNone; environment.input.vulkanRulesRelaxed = false; environment.client.client = EShClientNone; environment.target.language = EShTargetNone; environment.target.hlslFunctionality1 = false; } TShader::~TShader() { delete infoSink; delete compiler; delete intermediate; delete pool; } void TShader::setStrings(const char* const* s, int n) { strings = s; numStrings = n; lengths = nullptr; } void TShader::setStringsWithLengths(const char* const* s, const int* l, int n) { strings = s; numStrings = n; lengths = l; } void TShader::setStringsWithLengthsAndNames( const char* const* s, const int* l, const char* const* names, int n) { strings = s; numStrings = n; lengths = l; stringNames = names; } void TShader::setEntryPoint(const char* entryPoint) { intermediate->setEntryPointName(entryPoint); } void TShader::setSourceEntryPoint(const char* name) { sourceEntryPointName = name; } // Log initial settings and transforms. // See comment for class TProcesses. void TShader::addProcesses(const std::vector& p) { intermediate->addProcesses(p); } void TShader::setUniqueId(unsigned long long id) { 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); } // Set binding base for given resource type void TShader::setShiftBinding(TResourceType res, unsigned int base) { intermediate->setShiftBinding(res, base); } // Set binding base for given resource type for a given binding set. void TShader::setShiftBindingForSet(TResourceType res, unsigned int base, unsigned int set) { intermediate->setShiftBindingForSet(res, base, set); } // Set binding base for sampler types void TShader::setShiftSamplerBinding(unsigned int base) { setShiftBinding(EResSampler, base); } // Set binding base for texture types (SRV) void TShader::setShiftTextureBinding(unsigned int base) { setShiftBinding(EResTexture, base); } // Set binding base for image types void TShader::setShiftImageBinding(unsigned int base) { setShiftBinding(EResImage, base); } // Set binding base for uniform buffer objects (CBV) void TShader::setShiftUboBinding(unsigned int base) { setShiftBinding(EResUbo, base); } // Synonym for setShiftUboBinding, to match HLSL language. void TShader::setShiftCbufferBinding(unsigned int base) { setShiftBinding(EResUbo, base); } // Set binding base for UAV (unordered access view) void TShader::setShiftUavBinding(unsigned int base) { setShiftBinding(EResUav, base); } // Set binding base for SSBOs void TShader::setShiftSsboBinding(unsigned int base) { setShiftBinding(EResSsbo, base); } // Enables binding automapping using TIoMapper void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); } // Enables position.Y output negation in vertex shader // Fragile: currently within one stage: simple auto-assignment of location void TShader::setAutoMapLocations(bool map) { intermediate->setAutoMapLocations(map); } void TShader::addUniformLocationOverride(const char* name, int loc) { intermediate->addUniformLocationOverride(name, loc); } void TShader::setUniformLocationBase(int base) { intermediate->setUniformLocationBase(base); } void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); } void TShader::setResourceSetBinding(const std::vector& base) { intermediate->setResourceSetBinding(base); } void TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { intermediate->setTextureSamplerTransformMode(mode); } void TShader::addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing) { intermediate->addBlockStorageOverride(nameStr, backing); } void TShader::setGlobalUniformBlockName(const char* name) { intermediate->setGlobalUniformBlockName(name); } void TShader::setGlobalUniformSet(unsigned int set) { intermediate->setGlobalUniformSet(set); } void TShader::setGlobalUniformBinding(unsigned int binding) { intermediate->setGlobalUniformBinding(binding); } void TShader::setAtomicCounterBlockName(const char* name) { intermediate->setAtomicCounterBlockName(name); } void TShader::setAtomicCounterBlockSet(unsigned int set) { intermediate->setAtomicCounterBlockSet(set); } void TShader::addSourceText(const char* text, size_t len) { intermediate->addSourceText(text, len); } void TShader::setSourceFile(const char* file) { intermediate->setSourceFile(file); } #ifdef ENABLE_HLSL // See comment above TDefaultHlslIoMapper in iomapper.cpp: void TShader::setHlslIoMapping(bool hlslIoMap) { intermediate->setHlslIoMapping(hlslIoMap); } void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); } #endif // // Turn the shader strings into a parse tree in the TIntermediate. // // Returns true for success. // bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages messages, Includer& includer) { SetThreadPoolAllocator(pool); if (! preamble) preamble = ""; return CompileDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, *intermediate, includer, sourceEntryPointName, &environment, compileOnly); } // Fill in a string with the result of preprocessing ShaderStrings // Returns true if all extensions, pragmas and version strings were valid. // // NOTE: Doing just preprocessing to obtain a correct preprocessed shader string // is not an officially supported or fully working path. bool TShader::preprocess(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages message, std::string* output_string, Includer& includer) { SetThreadPoolAllocator(pool); if (! preamble) preamble = ""; return PreprocessDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, message, includer, *intermediate, output_string, &environment); } const char* TShader::getInfoLog() { return infoSink->info.c_str(); } const char* TShader::getInfoDebugLog() { return infoSink->debug.c_str(); } TProgram::TProgram() : reflection(nullptr), linked(false) { pool = new TPoolAllocator; infoSink = new TInfoSink; for (int s = 0; s < EShLangCount; ++s) { intermediate[s] = nullptr; newedIntermediate[s] = false; } } TProgram::~TProgram() { delete infoSink; delete reflection; for (int s = 0; s < EShLangCount; ++s) if (newedIntermediate[s]) delete intermediate[s]; delete pool; } // // Merge the compilation units within each stage into a single TIntermediate. // All starting compilation units need to be the result of calling TShader::parse(). // // Return true for success. // bool TProgram::link(EShMessages messages) { if (linked) return false; linked = true; bool error = false; SetThreadPoolAllocator(pool); for (int s = 0; s < EShLangCount; ++s) { if (! linkStage((EShLanguage)s, messages)) error = true; } if (!error) { if (! crossStageCheck(messages)) error = true; } if (messages & EShMsgAST) { for (int s = 0; s < EShLangCount; ++s) { if (intermediate[s] == nullptr) continue; intermediate[s]->output(*infoSink, true); } } return ! error; } // // Merge the compilation units within the given stage into a single TIntermediate. // // Return true for success. // bool TProgram::linkStage(EShLanguage stage, EShMessages messages) { if (stages[stage].size() == 0) return true; int numEsShaders = 0, numNonEsShaders = 0; for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) { if ((*it)->intermediate->getProfile() == EEsProfile) { numEsShaders++; } else { numNonEsShaders++; } } if (numEsShaders > 0 && numNonEsShaders > 0) { infoSink->info.message(EPrefixError, "Cannot mix ES profile with non-ES profile shaders"); return false; } else if (numEsShaders > 1) { infoSink->info.message(EPrefixError, "Cannot attach multiple ES shaders of the same type to a single program"); return false; } // // Be efficient for the common single compilation unit per stage case, // reusing it's TIntermediate instead of merging into a new one. // TIntermediate *firstIntermediate = stages[stage].front()->intermediate; if (stages[stage].size() == 1) intermediate[stage] = firstIntermediate; else { intermediate[stage] = new TIntermediate(stage, 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. if (firstIntermediate->getOriginUpperLeft()) { intermediate[stage]->setOriginUpperLeft(); } intermediate[stage]->setSpv(firstIntermediate->getSpv()); newedIntermediate[stage] = true; } if (messages & EShMsgAST) infoSink->info << "\nLinked " << StageName(stage) << " stage:\n\n"; if (stages[stage].size() > 1) { std::list::const_iterator it; for (it = stages[stage].begin(); it != stages[stage].end(); ++it) intermediate[stage]->merge(*infoSink, *(*it)->intermediate); } intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0); return intermediate[stage]->getNumErrors() == 0; } // // Check that there are no errors in linker objects accross stages // // Return true if no errors. // bool TProgram::crossStageCheck(EShMessages messages) { // make temporary intermediates to hold the linkage symbols for each linking interface // while we do the checks // Independent interfaces are: // all uniform variables and blocks // all buffer blocks // all in/out on a stage boundary TVector activeStages; for (int s = 0; s < EShLangCount; ++s) { if (intermediate[s]) activeStages.push_back(intermediate[s]); } class TFinalLinkTraverser : public TIntermTraverser { public: TFinalLinkTraverser() { } virtual ~TFinalLinkTraverser() { } virtual void visitSymbol(TIntermSymbol* symbol) { // Implicitly size arrays. // If an unsized array is left as unsized, it effectively // becomes run-time sized. symbol->getWritableType().adoptImplicitArraySizes(false); } } finalLinkTraverser; // no extra linking if there is only one stage if (! (activeStages.size() > 1)) { if (activeStages.size() == 1 && activeStages[0]->getTreeRoot()) { activeStages[0]->getTreeRoot()->traverse(&finalLinkTraverser); } return true; } // setup temporary tree to hold unfirom objects from different stages TIntermediate* firstIntermediate = activeStages.front(); TIntermediate uniforms(EShLangCount, firstIntermediate->getVersion(), firstIntermediate->getProfile()); uniforms.setSpv(firstIntermediate->getSpv()); TIntermAggregate uniformObjects(EOpLinkerObjects); TIntermAggregate root(EOpSequence); root.getSequence().push_back(&uniformObjects); uniforms.setTreeRoot(&root); bool error = false; // merge uniforms from all stages into a single intermediate for (unsigned int i = 0; i < activeStages.size(); ++i) { uniforms.mergeUniformObjects(*infoSink, *activeStages[i]); } error |= uniforms.getNumErrors() != 0; // update implicit array sizes across shader stages for (unsigned int i = 0; i < activeStages.size(); ++i) { activeStages[i]->mergeImplicitArraySizes(*infoSink, uniforms); activeStages[i]->getTreeRoot()->traverse(&finalLinkTraverser); } // copy final definition of global block back into each stage for (unsigned int i = 0; i < activeStages.size(); ++i) { // We only want to merge into already existing global uniform blocks. // A stage that doesn't already know about the global doesn't care about it's content. // Otherwise we end up pointing to the same object between different stages // and that will break binding/set remappings bool mergeExistingOnly = true; activeStages[i]->mergeGlobalUniformBlocks(*infoSink, uniforms, mergeExistingOnly); } // compare cross stage symbols for each stage boundary for (unsigned int i = 1; i < activeStages.size(); ++i) { activeStages[i - 1]->checkStageIO(*infoSink, *activeStages[i], messages); error |= (activeStages[i - 1]->getNumErrors() != 0 || activeStages[i]->getNumErrors() != 0); } // if requested, optimize cross stage IO if (messages & EShMsgLinkTimeOptimization) { for (unsigned int i = 1; i < activeStages.size(); ++i) { activeStages[i - 1]->optimizeStageIO(*infoSink, *activeStages[i]); } } return !error; } const char* TProgram::getInfoLog() { return infoSink->info.c_str(); } const char* TProgram::getInfoDebugLog() { return infoSink->debug.c_str(); } // // Reflection implementation. // unsigned int TObjectReflection::layoutLocation() const { return type->getQualifier().layoutLocation; } bool TProgram::buildReflection(int opts) { if (! linked || reflection != nullptr) return false; SetThreadPoolAllocator(pool); int firstStage = EShLangVertex, lastStage = EShLangFragment; if (opts & EShReflectionIntermediateIO) { // if we're reflecting intermediate I/O, determine the first and last stage linked and use those as the // boundaries for which stages generate pipeline inputs/outputs firstStage = EShLangCount; lastStage = 0; for (int s = 0; s < EShLangCount; ++s) { if (intermediate[s]) { firstStage = std::min(firstStage, s); lastStage = std::max(lastStage, s); } } } reflection = new TReflection((EShReflectionOptions)opts, (EShLanguage)firstStage, (EShLanguage)lastStage); for (int s = 0; s < EShLangCount; ++s) { if (intermediate[s]) { if (! reflection->addStage((EShLanguage)s, *intermediate[s])) return false; } } return true; } unsigned TProgram::getLocalSize(int dim) const { return reflection->getLocalSize(dim); } unsigned TProgram::getTileShadingRateQCOM(int dim) const { return reflection->getTileShadingRateQCOM(dim); } int TProgram::getReflectionIndex(const char* name) const { return reflection->getIndex(name); } int TProgram::getReflectionPipeIOIndex(const char* name, const bool inOrOut) const { return reflection->getPipeIOIndex(name, inOrOut); } int TProgram::getNumUniformVariables() const { return reflection->getNumUniforms(); } const TObjectReflection& TProgram::getUniform(int index) const { return reflection->getUniform(index); } int TProgram::getNumUniformBlocks() const { return reflection->getNumUniformBlocks(); } const TObjectReflection& TProgram::getUniformBlock(int index) const { return reflection->getUniformBlock(index); } int TProgram::getNumPipeInputs() const { return reflection->getNumPipeInputs(); } const TObjectReflection& TProgram::getPipeInput(int index) const { return reflection->getPipeInput(index); } int TProgram::getNumPipeOutputs() const { return reflection->getNumPipeOutputs(); } const TObjectReflection& TProgram::getPipeOutput(int index) const { return reflection->getPipeOutput(index); } int TProgram::getNumBufferVariables() const { return reflection->getNumBufferVariables(); } const TObjectReflection& TProgram::getBufferVariable(int index) const { return reflection->getBufferVariable(index); } int TProgram::getNumBufferBlocks() const { return reflection->getNumStorageBuffers(); } const TObjectReflection& TProgram::getBufferBlock(int index) const { return reflection->getStorageBufferBlock(index); } int TProgram::getNumAtomicCounters() const { return reflection->getNumAtomicCounters(); } const TObjectReflection& TProgram::getAtomicCounter(int index) const { return reflection->getAtomicCounter(index); } void TProgram::dumpReflection() { if (reflection != nullptr) reflection->dump(); } TIoMapResolver* TProgram::getGlslIoResolver(EShLanguage stage) { auto *intermediate = getIntermediate(stage); if (!intermediate) return NULL; return static_cast(new TDefaultGlslIoResolver(*intermediate)); } // // I/O mapping implementation. // bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper) { if (! linked) return false; SetThreadPoolAllocator(pool); TIoMapper* ioMapper = nullptr; TIoMapper defaultIOMapper; if (pIoMapper == nullptr) ioMapper = &defaultIOMapper; else ioMapper = pIoMapper; for (int s = 0; s < EShLangCount; ++s) { if (intermediate[s]) { if (! ioMapper->addStage((EShLanguage)s, *intermediate[s], *infoSink, pResolver)) return false; } } return ioMapper->doMap(pResolver, *infoSink); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/SpirvIntrinsics.cpp000066400000000000000000000310321506534232700242610ustar00rootroot00000000000000// // Copyright(C) 2021 Advanced Micro Devices, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // GL_EXT_spirv_intrinsics // #include "../Include/intermediate.h" #include "../Include/SpirvIntrinsics.h" #include "../Include/Types.h" #include "ParseHelper.h" namespace glslang { bool TSpirvTypeParameter::operator==(const TSpirvTypeParameter& rhs) const { if (getAsConstant() != nullptr) return getAsConstant()->getConstArray() == rhs.getAsConstant()->getConstArray(); assert(getAsType() != nullptr); return *getAsType() == *rhs.getAsType(); } // // Handle SPIR-V requirements // TSpirvRequirement* TParseContext::makeSpirvRequirement(const TSourceLoc& loc, const TString& name, const TIntermAggregate* extensions, const TIntermAggregate* capabilities) { TSpirvRequirement* spirvReq = new TSpirvRequirement; if (name == "extensions") { assert(extensions); for (auto extension : extensions->getSequence()) { assert(extension->getAsConstantUnion()); spirvReq->extensions.insert(*extension->getAsConstantUnion()->getConstArray()[0].getSConst()); } } else if (name == "capabilities") { assert(capabilities); for (auto capability : capabilities->getSequence()) { assert(capability->getAsConstantUnion()); spirvReq->capabilities.insert(capability->getAsConstantUnion()->getConstArray()[0].getIConst()); } } else error(loc, "unknown SPIR-V requirement", name.c_str(), ""); return spirvReq; } TSpirvRequirement* TParseContext::mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1, TSpirvRequirement* spirvReq2) { // Merge the second SPIR-V requirement to the first one if (!spirvReq2->extensions.empty()) { if (spirvReq1->extensions.empty()) spirvReq1->extensions = spirvReq2->extensions; else error(loc, "too many SPIR-V requirements", "extensions", ""); } if (!spirvReq2->capabilities.empty()) { if (spirvReq1->capabilities.empty()) spirvReq1->capabilities = spirvReq2->capabilities; else error(loc, "too many SPIR-V requirements", "capabilities", ""); } return spirvReq1; } void TIntermediate::insertSpirvRequirement(const TSpirvRequirement* spirvReq) { if (!spirvRequirement) spirvRequirement = new TSpirvRequirement; for (auto extension : spirvReq->extensions) spirvRequirement->extensions.insert(extension); for (auto capability : spirvReq->capabilities) spirvRequirement->capabilities.insert(capability); } // // Handle SPIR-V execution modes // void TIntermediate::insertSpirvExecutionMode(int executionMode, const TIntermAggregate* args) { if (!spirvExecutionMode) spirvExecutionMode = new TSpirvExecutionMode; TVector extraOperands; if (args) { for (auto arg : args->getSequence()) { auto extraOperand = arg->getAsConstantUnion(); assert(extraOperand != nullptr); extraOperands.push_back(extraOperand); } } spirvExecutionMode->modes[executionMode] = extraOperands; } void TIntermediate::insertSpirvExecutionModeId(int executionMode, const TIntermAggregate* args) { if (!spirvExecutionMode) spirvExecutionMode = new TSpirvExecutionMode; assert(args); TVector extraOperands; for (auto arg : args->getSequence()) { auto extraOperand = arg->getAsTyped(); assert(extraOperand != nullptr && extraOperand->getQualifier().isConstant()); extraOperands.push_back(extraOperand); } spirvExecutionMode->modeIds[executionMode] = extraOperands; } // // Handle SPIR-V decorate qualifiers // void TQualifier::setSpirvDecorate(int decoration, const TIntermAggregate* args) { if (!spirvDecorate) spirvDecorate = new TSpirvDecorate; TVector extraOperands; if (args) { for (auto arg : args->getSequence()) { auto extraOperand = arg->getAsConstantUnion(); assert(extraOperand != nullptr); extraOperands.push_back(extraOperand); } } spirvDecorate->decorates[decoration] = extraOperands; } void TQualifier::setSpirvDecorateId(int decoration, const TIntermAggregate* args) { if (!spirvDecorate) spirvDecorate = new TSpirvDecorate; assert(args); TVector extraOperands; for (auto arg : args->getSequence()) { auto extraOperand = arg->getAsTyped(); assert(extraOperand != nullptr); extraOperands.push_back(extraOperand); } spirvDecorate->decorateIds[decoration] = extraOperands; } void TQualifier::setSpirvDecorateString(int decoration, const TIntermAggregate* args) { if (!spirvDecorate) spirvDecorate = new TSpirvDecorate; assert(args); TVector extraOperands; for (auto arg : args->getSequence()) { auto extraOperand = arg->getAsConstantUnion(); assert(extraOperand != nullptr); extraOperands.push_back(extraOperand); } spirvDecorate->decorateStrings[decoration] = extraOperands; } TString TQualifier::getSpirvDecorateQualifierString() const { assert(spirvDecorate); TString qualifierString; const auto appendFloat = [&](float f) { qualifierString.append(std::to_string(f).c_str()); }; const auto appendInt = [&](int i) { qualifierString.append(std::to_string(i).c_str()); }; const auto appendUint = [&](unsigned int u) { qualifierString.append(std::to_string(u).c_str()); }; const auto appendBool = [&](bool b) { qualifierString.append(std::to_string(b).c_str()); }; const auto appendStr = [&](const char* s) { qualifierString.append(s); }; const auto appendDecorate = [&](const TIntermTyped* constant) { if (constant->getAsConstantUnion()) { auto& constArray = constant->getAsConstantUnion()->getConstArray(); if (constant->getBasicType() == EbtFloat) { float value = static_cast(constArray[0].getDConst()); appendFloat(value); } else if (constant->getBasicType() == EbtInt) { int value = constArray[0].getIConst(); appendInt(value); } else if (constant->getBasicType() == EbtUint) { unsigned value = constArray[0].getUConst(); appendUint(value); } else if (constant->getBasicType() == EbtBool) { bool value = constArray[0].getBConst(); appendBool(value); } else if (constant->getBasicType() == EbtString) { const TString* value = constArray[0].getSConst(); appendStr(value->c_str()); } else assert(0); } else { assert(constant->getAsSymbolNode()); appendStr(constant->getAsSymbolNode()->getName().c_str()); } }; for (auto& decorate : spirvDecorate->decorates) { appendStr("spirv_decorate("); appendInt(decorate.first); for (auto extraOperand : decorate.second) { appendStr(", "); appendDecorate(extraOperand); } appendStr(") "); } for (auto& decorateId : spirvDecorate->decorateIds) { appendStr("spirv_decorate_id("); appendInt(decorateId.first); for (auto extraOperand : decorateId.second) { appendStr(", "); appendDecorate(extraOperand); } appendStr(") "); } for (auto& decorateString : spirvDecorate->decorateStrings) { appendStr("spirv_decorate_string("); appendInt(decorateString.first); for (auto extraOperand : decorateString.second) { appendStr(", "); appendDecorate(extraOperand); } appendStr(") "); } return qualifierString; } // // Handle SPIR-V type specifiers // void TPublicType::setSpirvType(const TSpirvInstruction& spirvInst, const TSpirvTypeParameters* typeParams) { if (!spirvType) spirvType = new TSpirvType; basicType = EbtSpirvType; spirvType->spirvInst = spirvInst; if (typeParams) spirvType->typeParams = *typeParams; } TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant) { TSpirvTypeParameters* spirvTypeParams = new TSpirvTypeParameters; if (constant->getBasicType() != EbtFloat && constant->getBasicType() != EbtInt && constant->getBasicType() != EbtUint && constant->getBasicType() != EbtBool && constant->getBasicType() != EbtString) error(loc, "this type not allowed", constant->getType().getBasicString(), ""); else spirvTypeParams->push_back(TSpirvTypeParameter(constant)); return spirvTypeParams; } TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& /* loc */, const TPublicType& type) { TSpirvTypeParameters* spirvTypeParams = new TSpirvTypeParameters; spirvTypeParams->push_back(TSpirvTypeParameter(new TType(type))); return spirvTypeParams; } TSpirvTypeParameters* TParseContext::mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2) { // Merge SPIR-V type parameters of the second one to the first one for (const auto& spirvTypeParam : *spirvTypeParams2) spirvTypeParams1->push_back(spirvTypeParam); return spirvTypeParams1; } // // Handle SPIR-V instruction qualifiers // TSpirvInstruction* TParseContext::makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value) { TSpirvInstruction* spirvInst = new TSpirvInstruction; if (name == "set") spirvInst->set = value; else error(loc, "unknown SPIR-V instruction qualifier", name.c_str(), ""); return spirvInst; } TSpirvInstruction* TParseContext::makeSpirvInstruction(const TSourceLoc& loc, const TString& name, int value) { TSpirvInstruction* spirvInstuction = new TSpirvInstruction; if (name == "id") spirvInstuction->id = value; else error(loc, "unknown SPIR-V instruction qualifier", name.c_str(), ""); return spirvInstuction; } TSpirvInstruction* TParseContext::mergeSpirvInstruction(const TSourceLoc& loc, TSpirvInstruction* spirvInst1, TSpirvInstruction* spirvInst2) { // Merge qualifiers of the second SPIR-V instruction to those of the first one if (!spirvInst2->set.empty()) { if (spirvInst1->set.empty()) spirvInst1->set = spirvInst2->set; else error(loc, "too many SPIR-V instruction qualifiers", "spirv_instruction", "(set)"); } if (spirvInst2->id != -1) { if (spirvInst1->id == -1) spirvInst1->id = spirvInst2->id; else error(loc, "too many SPIR-V instruction qualifiers", "spirv_instruction", "(id)"); } return spirvInst1; } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/SymbolTable.cpp000066400000000000000000000441051506534232700233320ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2015-2018 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Symbol table for parsing. Most functionality and main ideas // are documented in the header file. // #include "SymbolTable.h" namespace glslang { // // TType helper function needs a place to live. // // // Recursively generate mangled names. // void TType::buildMangledName(TString& mangledName) const { if (isTensorARM()) mangledName += 'T'; else if (isMatrix()) mangledName += 'm'; else if (isVector()) mangledName += 'v'; if (isCoopVecNV()) mangledName += "coopvec"; switch (basicType) { case EbtFloat: mangledName += 'f'; break; case EbtInt: mangledName += 'i'; break; case EbtUint: mangledName += 'u'; break; case EbtBool: mangledName += 'b'; break; case EbtDouble: mangledName += 'd'; break; case EbtFloat16: mangledName += "f16"; break; case EbtBFloat16: mangledName += "bf16"; break; case EbtFloatE5M2: mangledName += "fe5m2"; break; case EbtFloatE4M3: mangledName += "fe4m3"; break; case EbtInt8: mangledName += "i8"; break; case EbtUint8: mangledName += "u8"; break; case EbtInt16: mangledName += "i16"; break; case EbtUint16: mangledName += "u16"; break; case EbtInt64: mangledName += "i64"; break; case EbtUint64: mangledName += "u64"; break; case EbtAtomicUint: mangledName += "au"; break; case EbtAccStruct: mangledName += "as"; break; case EbtRayQuery: mangledName += "rq"; break; case EbtSpirvType: mangledName += "spv-t"; break; case EbtHitObjectNV: mangledName += "ho"; break; case EbtTensorLayoutNV: mangledName += "tl"; break; case EbtTensorViewNV: mangledName += "tv"; break; case EbtSampler: switch (sampler.type) { case EbtFloat16: mangledName += "f16"; break; case EbtInt: mangledName += "i"; break; case EbtUint: mangledName += "u"; break; case EbtInt64: mangledName += "i64"; break; case EbtUint64: mangledName += "u64"; break; default: break; // some compilers want this } if (sampler.isImageClass()) mangledName += "I"; // a normal image or subpass else if (sampler.isPureSampler()) mangledName += "p"; // a "pure" sampler else if (!sampler.isCombined()) mangledName += "t"; // a "pure" texture else mangledName += "s"; // traditional combined sampler if (sampler.isArrayed()) mangledName += "A"; if (sampler.isShadow()) mangledName += "S"; if (sampler.isExternal()) mangledName += "E"; if (sampler.isYuv()) mangledName += "Y"; switch (sampler.dim) { case Esd2D: mangledName += "2"; break; case Esd3D: mangledName += "3"; break; case EsdCube: mangledName += "C"; break; case Esd1D: mangledName += "1"; break; case EsdRect: mangledName += "R2"; break; case EsdBuffer: mangledName += "B"; break; case EsdSubpass: mangledName += "P"; break; default: break; // some compilers want this } #ifdef ENABLE_HLSL if (sampler.hasReturnStruct()) { // Name mangle for sampler return struct uses struct table index. mangledName += "-tx-struct"; char text[16]; // plenty enough space for the small integers. snprintf(text, sizeof(text), "%u-", sampler.getStructReturnIndex()); mangledName += text; } else { switch (sampler.getVectorSize()) { case 1: mangledName += "1"; break; case 2: mangledName += "2"; break; case 3: mangledName += "3"; break; case 4: break; // default to prior name mangle behavior } } #endif if (sampler.isMultiSample()) mangledName += "M"; break; case EbtStruct: case EbtBlock: if (basicType == EbtStruct) mangledName += "struct-"; else mangledName += "block-"; if (typeName) mangledName += *typeName; for (unsigned int i = 0; i < structure->size(); ++i) { if ((*structure)[i].type->getBasicType() == EbtVoid) continue; mangledName += '-'; (*structure)[i].type->buildMangledName(mangledName); } break; default: break; } if (getVectorSize() > 0) mangledName += static_cast('0' + getVectorSize()); else { mangledName += static_cast('0' + getMatrixCols()); mangledName += static_cast('0' + getMatrixRows()); } if (typeParameters) { const int maxSize = 11; char buf[maxSize]; for (int i = 0; i < typeParameters->arraySizes->getNumDims(); ++i) { if (typeParameters->arraySizes->getDimNode(i)) { if (typeParameters->arraySizes->getDimNode(i)->getAsSymbolNode()) snprintf(buf, maxSize, "s%lld", typeParameters->arraySizes->getDimNode(i)->getAsSymbolNode()->getId()); else snprintf(buf, maxSize, "s%p", typeParameters->arraySizes->getDimNode(i)); } else snprintf(buf, maxSize, "%d", typeParameters->arraySizes->getDimSize(i)); mangledName += '<'; mangledName += buf; mangledName += '>'; } } if (arraySizes) { const int maxSize = 11; char buf[maxSize]; for (int i = 0; i < arraySizes->getNumDims(); ++i) { if (arraySizes->getDimNode(i)) { if (arraySizes->getDimNode(i)->getAsSymbolNode()) snprintf(buf, maxSize, "s%lld", arraySizes->getDimNode(i)->getAsSymbolNode()->getId()); else snprintf(buf, maxSize, "s%p", (void*)(arraySizes->getDimNode(i))); } else snprintf(buf, maxSize, "%d", arraySizes->getDimSize(i)); mangledName += '['; mangledName += buf; mangledName += ']'; } } } // // Dump functions. // void TSymbol::dumpExtensions(TInfoSink& infoSink) const { int numExtensions = getNumExtensions(); if (numExtensions) { infoSink.debug << " <"; for (int i = 0; i < numExtensions; i++) infoSink.debug << getExtensions()[i] << ","; infoSink.debug << ">"; } } void TVariable::dump(TInfoSink& infoSink, bool complete) const { if (complete) { infoSink.debug << getName().c_str() << ": " << type.getCompleteString(); dumpExtensions(infoSink); } else { infoSink.debug << getName().c_str() << ": " << type.getStorageQualifierString() << " " << type.getBasicTypeString(); if (type.isArray()) infoSink.debug << "[0]"; } infoSink.debug << "\n"; } void TFunction::dump(TInfoSink& infoSink, bool complete) const { if (complete) { infoSink.debug << getName().c_str() << ": " << returnType.getCompleteString() << " " << getName().c_str() << "("; int numParams = getParamCount(); for (int i = 0; i < numParams; i++) { const TParameter ¶m = parameters[i]; infoSink.debug << param.type->getCompleteString() << " " << (param.type->isStruct() ? "of " + param.type->getTypeName() + " " : "") << (param.name ? *param.name : "") << (i < numParams - 1 ? "," : ""); } infoSink.debug << ")"; dumpExtensions(infoSink); } else { infoSink.debug << getName().c_str() << ": " << returnType.getBasicTypeString() << " " << getMangledName().c_str() << "n"; } infoSink.debug << "\n"; } void TAnonMember::dump(TInfoSink& TInfoSink, bool) const { TInfoSink.debug << "anonymous member " << getMemberNumber() << " of " << getAnonContainer().getName().c_str() << "\n"; } void TSymbolTableLevel::dump(TInfoSink& infoSink, bool complete) const { tLevel::const_iterator it; for (it = level.begin(); it != level.end(); ++it) (*it).second->dump(infoSink, complete); } void TSymbolTable::dump(TInfoSink& infoSink, bool complete) const { for (int level = currentLevel(); level >= 0; --level) { infoSink.debug << "LEVEL " << level << "\n"; table[level]->dump(infoSink, complete); } } // // Functions have buried pointers to delete. // TFunction::~TFunction() { for (TParamList::iterator i = parameters.begin(); i != parameters.end(); ++i) delete (*i).type; } // // Symbol table levels are a map of pointers to symbols that have to be deleted. // TSymbolTableLevel::~TSymbolTableLevel() { for (tLevel::iterator it = level.begin(); it != level.end(); ++it) { const TString& name = it->first; auto retargetIter = std::find_if(retargetedSymbols.begin(), retargetedSymbols.end(), [&name](const std::pair& i) { return i.first == name; }); if (retargetIter == retargetedSymbols.end()) delete (*it).second; } delete [] defaultPrecision; } // // Change all function entries in the table with the non-mangled name // to be related to the provided built-in operation. // void TSymbolTableLevel::relateToOperator(const char* name, TOperator op) { tLevel::const_iterator candidate = level.lower_bound(name); while (candidate != level.end()) { const TString& candidateName = (*candidate).first; TString::size_type parenAt = candidateName.find_first_of('('); if (parenAt != candidateName.npos && candidateName.compare(0, parenAt, name) == 0) { TFunction* function = (*candidate).second->getAsFunction(); function->relateToOperator(op); } else break; ++candidate; } } // Make all function overloads of the given name require an extension(s). // Should only be used for a version/profile that actually needs the extension(s). void TSymbolTableLevel::setFunctionExtensions(const char* name, int num, const char* const extensions[]) { tLevel::const_iterator candidate = level.lower_bound(name); while (candidate != level.end()) { const TString& candidateName = (*candidate).first; TString::size_type parenAt = candidateName.find_first_of('('); if (parenAt != candidateName.npos && candidateName.compare(0, parenAt, name) == 0) { TSymbol* symbol = candidate->second; symbol->setExtensions(num, extensions); } else break; ++candidate; } } // Make a single function require an extension(s). i.e., this will only set the extensions for the symbol that matches 'name' exactly. // This is different from setFunctionExtensions, which uses std::map::lower_bound to effectively set all symbols that start with 'name'. // Should only be used for a version/profile that actually needs the extension(s). void TSymbolTableLevel::setSingleFunctionExtensions(const char* name, int num, const char* const extensions[]) { if (auto candidate = level.find(name); candidate != level.end()) { candidate->second->setExtensions(num, extensions); } } // // Make all symbols in this table level read only. // void TSymbolTableLevel::readOnly() { for (tLevel::iterator it = level.begin(); it != level.end(); ++it) (*it).second->makeReadOnly(); } // // Copy a symbol, but the copy is writable; call readOnly() afterward if that's not desired. // TSymbol::TSymbol(const TSymbol& copyOf) { name = NewPoolTString(copyOf.name->c_str()); mangledName = NewPoolTString(copyOf.mangledName->c_str()); uniqueId = copyOf.uniqueId; writable = true; } TVariable::TVariable(const TVariable& copyOf) : TSymbol(copyOf) { type.deepCopy(copyOf.type); userType = copyOf.userType; // we don't support specialization-constant subtrees in cloned tables, only extensions constSubtree = nullptr; extensions = nullptr; memberExtensions = nullptr; if (copyOf.getNumExtensions() > 0) setExtensions(copyOf.getNumExtensions(), copyOf.getExtensions()); if (copyOf.hasMemberExtensions()) { for (int m = 0; m < (int)copyOf.type.getStruct()->size(); ++m) { if (copyOf.getNumMemberExtensions(m) > 0) setMemberExtensions(m, copyOf.getNumMemberExtensions(m), copyOf.getMemberExtensions(m)); } } if (! copyOf.constArray.empty()) { assert(! copyOf.type.isStruct()); TConstUnionArray newArray(copyOf.constArray, 0, copyOf.constArray.size()); constArray = newArray; } } TVariable* TVariable::clone() const { TVariable *variable = new TVariable(*this); return variable; } TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf) { for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) { TParameter param{}; parameters.push_back(param); (void)parameters.back().copyParam(copyOf.parameters[i]); } extensions = nullptr; if (copyOf.getNumExtensions() > 0) setExtensions(copyOf.getNumExtensions(), copyOf.getExtensions()); returnType.deepCopy(copyOf.returnType); mangledName = copyOf.mangledName; op = copyOf.op; defined = copyOf.defined; prototyped = copyOf.prototyped; implicitThis = copyOf.implicitThis; variadic = copyOf.variadic; illegalImplicitThis = copyOf.illegalImplicitThis; defaultParamCount = copyOf.defaultParamCount; spirvInst = copyOf.spirvInst; } TFunction* TFunction::clone() const { TFunction *function = new TFunction(*this); return function; } TAnonMember* TAnonMember::clone() const { // Anonymous members of a given block should be cloned at a higher level, // where they can all be assured to still end up pointing to a single // copy of the original container. assert(0); return nullptr; } TSymbolTableLevel* TSymbolTableLevel::clone() const { TSymbolTableLevel *symTableLevel = new TSymbolTableLevel(); symTableLevel->anonId = anonId; symTableLevel->thisLevel = thisLevel; symTableLevel->retargetedSymbols.clear(); for (auto &s : retargetedSymbols) { symTableLevel->retargetedSymbols.push_back({s.first, s.second}); } std::vector containerCopied(anonId, false); tLevel::const_iterator iter; for (iter = level.begin(); iter != level.end(); ++iter) { const TAnonMember* anon = iter->second->getAsAnonMember(); if (anon) { // Insert all the anonymous members of this same container at once, // avoid inserting the remaining members in the future, once this has been done, // allowing them to all be part of the same new container. if (! containerCopied[anon->getAnonId()]) { TVariable* container = anon->getAnonContainer().clone(); container->changeName(NewPoolTString("")); // insert the container and all its members symTableLevel->insert(*container, false); containerCopied[anon->getAnonId()] = true; } } else { const TString& name = iter->first; auto retargetIter = std::find_if(retargetedSymbols.begin(), retargetedSymbols.end(), [&name](const std::pair& i) { return i.first == name; }); if (retargetIter != retargetedSymbols.end()) continue; symTableLevel->insert(*iter->second->clone(), false); } } // Now point retargeted symbols to the newly created versions of them for (auto &s : retargetedSymbols) { TSymbol* sym = symTableLevel->find(s.second); if (!sym) continue; symTableLevel->insert(s.first, sym); } return symTableLevel; } void TSymbolTable::copyTable(const TSymbolTable& copyOf) { assert(adoptedLevels == copyOf.adoptedLevels); uniqueId = copyOf.uniqueId; noBuiltInRedeclarations = copyOf.noBuiltInRedeclarations; separateNameSpaces = copyOf.separateNameSpaces; for (unsigned int i = copyOf.adoptedLevels; i < copyOf.table.size(); ++i) table.push_back(copyOf.table[i]->clone()); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/SymbolTable.h000066400000000000000000001120331506534232700227730ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _SYMBOL_TABLE_INCLUDED_ #define _SYMBOL_TABLE_INCLUDED_ // // Symbol table for parsing. Has these design characteristics: // // * Same symbol table can be used to compile many shaders, to preserve // effort of creating and loading with the large numbers of built-in // symbols. // // --> This requires a copy mechanism, so initial pools used to create // the shared information can be popped. Done through "clone" // methods. // // * Name mangling will be used to give each function a unique name // so that symbol table lookups are never ambiguous. This allows // a simpler symbol table structure. // // * Pushing and popping of scope, so symbol table will really be a stack // of symbol tables. Searched from the top, with new inserts going into // the top. // // * Constants: Compile time constant symbols will keep their values // in the symbol table. The parser can substitute constants at parse // time, including doing constant folding and constant propagation. // // * No temporaries: Temporaries made from operations (+, --, .xy, etc.) // are tracked in the intermediate representation, not the symbol table. // #include "../Include/Common.h" #include "../Include/intermediate.h" #include "../Include/InfoSink.h" namespace glslang { // // Symbol base class. (Can build functions or variables out of these...) // class TVariable; class TFunction; class TAnonMember; typedef TVector TExtensionList; class TSymbol { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) explicit TSymbol(const TString *n, const TString *mn) : name(n), mangledName(mn), uniqueId(0), extensions(nullptr), writable(true) { } explicit TSymbol(const TString *n) : TSymbol(n, n) { } virtual TSymbol* clone() const = 0; virtual ~TSymbol() { } // rely on all symbol owned memory coming from the pool virtual const TString& getName() const { return *name; } virtual void changeName(const TString* newName) { name = newName; } virtual void addPrefix(const char* prefix) { TString newName(prefix); newName.append(*name); changeName(NewPoolTString(newName.c_str())); } virtual const TString& getMangledName() const { return *mangledName; } virtual TFunction* getAsFunction() { return nullptr; } virtual const TFunction* getAsFunction() const { return nullptr; } virtual TVariable* getAsVariable() { return nullptr; } virtual const TVariable* getAsVariable() const { return nullptr; } virtual const TAnonMember* getAsAnonMember() const { return nullptr; } virtual const TType& getType() const = 0; virtual TType& getWritableType() = 0; virtual void setUniqueId(long long id) { uniqueId = id; } virtual long long getUniqueId() const { return uniqueId; } virtual void setExtensions(int numExts, const char* const exts[]) { assert(extensions == nullptr); assert(numExts > 0); extensions = NewPoolObject(extensions); for (int e = 0; e < numExts; ++e) extensions->push_back(exts[e]); } virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual const char** getExtensions() const { return extensions->data(); } virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0; void dumpExtensions(TInfoSink& infoSink) const; virtual bool isReadOnly() const { return ! writable; } virtual void makeReadOnly() { writable = false; } protected: explicit TSymbol(const TSymbol&); TSymbol& operator=(const TSymbol&); const TString *name; const TString *mangledName; unsigned long long uniqueId; // For cross-scope comparing during code generation // For tracking what extensions must be present // (don't use if correct version/profile is present). TExtensionList* extensions; // an array of pointers to existing constant char strings // // N.B.: Non-const functions that will be generally used should assert on this, // to avoid overwriting shared symbol-table information. // bool writable; }; // // Variable class, meaning a symbol that's not a function. // // There could be a separate class hierarchy for Constant variables; // Only one of int, bool, or float, (or none) is correct for // any particular use, but it's easy to do this way, and doesn't // seem worth having separate classes, and "getConst" can't simply return // different values for different types polymorphically, so this is // just simple and pragmatic. // class TVariable : public TSymbol { public: TVariable(const TString *name, const TType& t, bool uT = false ) : TVariable(name, name, t, uT) {} TVariable(const TString *name, const TString *mangledName, const TType& t, bool uT = false ) : TSymbol(name, mangledName), userType(uT), constSubtree(nullptr), memberExtensions(nullptr), anonId(-1) { type.shallowCopy(t); } virtual TVariable* clone() const; virtual ~TVariable() { } virtual TVariable* getAsVariable() { return this; } virtual const TVariable* getAsVariable() const { return this; } virtual const TType& getType() const { return type; } virtual TType& getWritableType() { assert(writable); return type; } virtual bool isUserType() const { return userType; } virtual const TConstUnionArray& getConstArray() const { return constArray; } virtual TConstUnionArray& getWritableConstArray() { assert(writable); return constArray; } virtual void setConstArray(const TConstUnionArray& array) { constArray = array; } virtual void setConstSubtree(TIntermTyped* subtree) { constSubtree = subtree; } virtual TIntermTyped* getConstSubtree() const { return constSubtree; } virtual void setAnonId(int i) { anonId = i; } virtual int getAnonId() const { return anonId; } virtual void setMemberExtensions(int member, int numExts, const char* const exts[]) { assert(type.isStruct()); assert(numExts > 0); if (memberExtensions == nullptr) { memberExtensions = NewPoolObject(memberExtensions); memberExtensions->resize(type.getStruct()->size()); } for (int e = 0; e < numExts; ++e) (*memberExtensions)[member].push_back(exts[e]); } virtual bool hasMemberExtensions() const { return memberExtensions != nullptr; } virtual int getNumMemberExtensions(int member) const { return memberExtensions == nullptr ? 0 : (int)(*memberExtensions)[member].size(); } virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); } virtual void dump(TInfoSink& infoSink, bool complete = false) const; protected: explicit TVariable(const TVariable&); TVariable& operator=(const TVariable&); TType type; bool userType; // we are assuming that Pool Allocator will free the memory allocated to unionArray // when this object is destroyed TConstUnionArray constArray; // for compile-time constant value TIntermTyped* constSubtree; // for specialization constant computation TVector* memberExtensions; // per-member extension list, allocated only when needed int anonId; // the ID used for anonymous blocks: TODO: see if uniqueId could serve a dual purpose }; // // The function sub-class of symbols and the parser will need to // share this definition of a function parameter. // struct TParameter { TString *name; TType* type; TIntermTyped* defaultValue; TParameter& copyParam(const TParameter& param) { if (param.name) name = NewPoolTString(param.name->c_str()); else name = nullptr; type = param.type->clone(); defaultValue = param.defaultValue; if (defaultValue) { // The defaultValue of a builtin is created in a TPoolAllocator that no longer exists // when parsing the user program, so make a deep copy. if (const auto *constUnion = defaultValue->getAsConstantUnion()) { defaultValue = new TIntermConstantUnion(*constUnion->getConstArray().clone(), constUnion->getType()); } } return *this; } TBuiltInVariable getDeclaredBuiltIn() const { return type->getQualifier().declaredBuiltIn; } }; // // The function sub-class of a symbol. // class TFunction : public TSymbol { public: explicit TFunction(TOperator o) : TSymbol(nullptr), op(o), defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), variadic(false), defaultParamCount(0) { } TFunction(const TString *name, const TType& retType, TOperator tOp = EOpNull) : TSymbol(name), mangledName(*name + '('), op(tOp), defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), variadic(false), defaultParamCount(0), linkType(ELinkNone) { returnType.shallowCopy(retType); declaredBuiltIn = retType.getQualifier().builtIn; } virtual TFunction* clone() const override; virtual ~TFunction(); virtual TFunction* getAsFunction() override { return this; } virtual const TFunction* getAsFunction() const override { return this; } // Install 'p' as the (non-'this') last parameter. // Non-'this' parameters are reflected in both the list of parameters and the // mangled name. virtual void addParameter(TParameter& p) { assert(writable); assert(!variadic && "cannot add more parameters if function is marked variadic"); parameters.push_back(p); p.type->appendMangledName(mangledName); if (p.defaultValue != nullptr) defaultParamCount++; } // Install 'this' as the first parameter. // 'this' is reflected in the list of parameters, but not the mangled name. virtual void addThisParameter(TType& type, const char* name) { TParameter p = { NewPoolTString(name), new TType, nullptr }; p.type->shallowCopy(type); parameters.insert(parameters.begin(), p); } virtual void addPrefix(const char* prefix) override { TSymbol::addPrefix(prefix); mangledName.insert(0, prefix); } virtual void removePrefix(const TString& prefix) { assert(mangledName.compare(0, prefix.size(), prefix) == 0); mangledName.erase(0, prefix.size()); } virtual const TString& getMangledName() const override { return mangledName; } virtual const TType& getType() const override { return returnType; } virtual TBuiltInVariable getDeclaredBuiltInType() const { return declaredBuiltIn; } virtual TType& getWritableType() override { return returnType; } virtual void relateToOperator(TOperator o) { assert(writable); op = o; } virtual TOperator getBuiltInOp() const { return op; } virtual void setDefined() { assert(writable); defined = true; } virtual bool isDefined() const { return defined; } virtual void setPrototyped() { assert(writable); prototyped = true; } virtual bool isPrototyped() const { return prototyped; } virtual void setImplicitThis() { assert(writable); implicitThis = true; } virtual bool hasImplicitThis() const { return implicitThis; } virtual void setIllegalImplicitThis() { assert(writable); illegalImplicitThis = true; } virtual bool hasIllegalImplicitThis() const { return illegalImplicitThis; } virtual void setVariadic() { assert(writable); assert(!variadic && "function was already marked variadic"); variadic = true; mangledName += 'z'; } virtual bool isVariadic() const { return variadic; } // Return total number of parameters virtual int getParamCount() const { return static_cast(parameters.size()); } // Return number of parameters with default values. virtual int getDefaultParamCount() const { return defaultParamCount; } // Return number of fixed parameters (without default values) virtual int getFixedParamCount() const { return getParamCount() - getDefaultParamCount(); } virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; } virtual const TParameter& operator[](int i) const { return parameters[i]; } const TQualifier& getQualifier() const { return returnType.getQualifier(); } virtual void setSpirvInstruction(const TSpirvInstruction& inst) { relateToOperator(EOpSpirvInst); spirvInst = inst; } virtual const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } virtual void dump(TInfoSink& infoSink, bool complete = false) const override; void setExport() { linkType = ELinkExport; } TLinkType getLinkType() const { return linkType; } protected: explicit TFunction(const TFunction&); TFunction& operator=(const TFunction&); typedef TVector TParamList; TParamList parameters; TType returnType; TBuiltInVariable declaredBuiltIn; TString mangledName; TOperator op; bool defined; bool prototyped; bool implicitThis; // True if this function is allowed to see all members of 'this' bool illegalImplicitThis; // True if this function is not supposed to have access to dynamic members of 'this', // even if it finds member variables in the symbol table. // This is important for a static member function that has member variables in scope, // but is not allowed to use them, or see hidden symbols instead. bool variadic; int defaultParamCount; TSpirvInstruction spirvInst; // SPIR-V instruction qualifiers TLinkType linkType; }; // // Members of anonymous blocks are a kind of TSymbol. They are not hidden in // the symbol table behind a container; rather they are visible and point to // their anonymous container. (The anonymous container is found through the // member, not the other way around.) // class TAnonMember : public TSymbol { public: TAnonMember(const TString* n, unsigned int m, TVariable& a, int an) : TSymbol(n), anonContainer(a), memberNumber(m), anonId(an) { } virtual TAnonMember* clone() const override; virtual ~TAnonMember() { } virtual const TAnonMember* getAsAnonMember() const override { return this; } virtual const TVariable& getAnonContainer() const { return anonContainer; } virtual unsigned int getMemberNumber() const { return memberNumber; } virtual const TType& getType() const override { const TTypeList& types = *anonContainer.getType().getStruct(); return *types[memberNumber].type; } virtual TType& getWritableType() override { assert(writable); const TTypeList& types = *anonContainer.getType().getStruct(); return *types[memberNumber].type; } virtual void setExtensions(int numExts, const char* const exts[]) override { anonContainer.setMemberExtensions(memberNumber, numExts, exts); } virtual int getNumExtensions() const override { return anonContainer.getNumMemberExtensions(memberNumber); } virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); } virtual int getAnonId() const { return anonId; } virtual void dump(TInfoSink& infoSink, bool complete = false) const override; protected: explicit TAnonMember(const TAnonMember&); TAnonMember& operator=(const TAnonMember&); TVariable& anonContainer; unsigned int memberNumber; int anonId; }; class TSymbolTableLevel { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) TSymbolTableLevel() : defaultPrecision(nullptr), anonId(0), thisLevel(false) { } ~TSymbolTableLevel(); bool insert(const TString& name, TSymbol* symbol) { return level.insert(tLevelPair(name, symbol)).second; } bool insert(TSymbol& symbol, bool separateNameSpaces, const TString& forcedKeyName = TString()) { // // returning true means symbol was added to the table with no semantic errors // const TString& name = symbol.getName(); if (forcedKeyName.length()) { return level.insert(tLevelPair(forcedKeyName, &symbol)).second; } else if (name == "") { symbol.getAsVariable()->setAnonId(anonId++); // An empty name means an anonymous container, exposing its members to the external scope. // Give it a name and insert its members in the symbol table, pointing to the container. char buf[20]; snprintf(buf, 20, "%s%d", AnonymousPrefix, symbol.getAsVariable()->getAnonId()); symbol.changeName(NewPoolTString(buf)); return insertAnonymousMembers(symbol, 0); } else { // Check for redefinition errors: // - STL itself will tell us if there is a direct name collision, with name mangling, at this level // - additionally, check for function-redefining-variable name collisions const TString& insertName = symbol.getMangledName(); if (symbol.getAsFunction()) { // make sure there isn't a variable of this name if (! separateNameSpaces && level.find(name) != level.end()) return false; // insert, and whatever happens is okay level.insert(tLevelPair(insertName, &symbol)); return true; } else return level.insert(tLevelPair(insertName, &symbol)).second; } } // Add more members to an already inserted aggregate object bool amend(TSymbol& symbol, int firstNewMember) { // See insert() for comments on basic explanation of insert. // This operates similarly, but more simply. // Only supporting amend of anonymous blocks so far. if (IsAnonymous(symbol.getName())) return insertAnonymousMembers(symbol, firstNewMember); else return false; } bool insertAnonymousMembers(TSymbol& symbol, int firstMember) { const TTypeList& types = *symbol.getAsVariable()->getType().getStruct(); for (unsigned int m = firstMember; m < types.size(); ++m) { TAnonMember* member = new TAnonMember(&types[m].type->getFieldName(), m, *symbol.getAsVariable(), symbol.getAsVariable()->getAnonId()); if (! level.insert(tLevelPair(member->getMangledName(), member)).second) return false; } return true; } void retargetSymbol(const TString& from, const TString& to) { tLevel::const_iterator fromIt = level.find(from); tLevel::const_iterator toIt = level.find(to); if (fromIt == level.end() || toIt == level.end()) return; delete fromIt->second; level[from] = toIt->second; retargetedSymbols.push_back({from, to}); } TSymbol* find(const TString& name) const { tLevel::const_iterator it = level.find(name); if (it == level.end()) return nullptr; else return (*it).second; } void findFunctionNameList(const TString& name, TVector& list) { size_t parenAt = name.find_first_of('('); TString base(name, 0, parenAt + 1); tLevel::const_iterator begin = level.lower_bound(base); base[parenAt] = ')'; // assume ')' is lexically after '(' tLevel::const_iterator end = level.upper_bound(base); for (tLevel::const_iterator it = begin; it != end; ++it) list.push_back(it->second->getAsFunction()); } // See if there is already a function in the table having the given non-function-style name. bool hasFunctionName(const TString& name) const { tLevel::const_iterator candidate = level.lower_bound(name); if (candidate != level.end()) { const TString& candidateName = (*candidate).first; TString::size_type parenAt = candidateName.find_first_of('('); if (parenAt != candidateName.npos && candidateName.compare(0, parenAt, name) == 0) return true; } return false; } // See if there is a variable at this level having the given non-function-style name. // Return true if name is found, and set variable to true if the name was a variable. bool findFunctionVariableName(const TString& name, bool& variable) const { tLevel::const_iterator candidate = level.lower_bound(name); if (candidate != level.end()) { const TString& candidateName = (*candidate).first; TString::size_type parenAt = candidateName.find_first_of('('); if (parenAt == candidateName.npos) { // not a mangled name if (candidateName == name) { // found a variable name match variable = true; return true; } } else { // a mangled name if (candidateName.compare(0, parenAt, name) == 0) { // found a function name match variable = false; return true; } } } return false; } // Use this to do a lazy 'push' of precision defaults the first time // a precision statement is seen in a new scope. Leave it at 0 for // when no push was needed. Thus, it is not the current defaults, // it is what to restore the defaults to when popping a level. void setPreviousDefaultPrecisions(const TPrecisionQualifier *p) { // can call multiple times at one scope, will only latch on first call, // as we're tracking the previous scope's values, not the current values if (defaultPrecision != nullptr) return; defaultPrecision = new TPrecisionQualifier[EbtNumTypes]; for (int t = 0; t < EbtNumTypes; ++t) defaultPrecision[t] = p[t]; } void getPreviousDefaultPrecisions(TPrecisionQualifier *p) { // can be called for table level pops that didn't set the // defaults if (defaultPrecision == nullptr || p == nullptr) return; for (int t = 0; t < EbtNumTypes; ++t) p[t] = defaultPrecision[t]; } void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); void setSingleFunctionExtensions(const char* name, int num, const char* const extensions[]); void dump(TInfoSink& infoSink, bool complete = false) const; TSymbolTableLevel* clone() const; void readOnly(); void setThisLevel() { thisLevel = true; } bool isThisLevel() const { return thisLevel; } protected: explicit TSymbolTableLevel(TSymbolTableLevel&); TSymbolTableLevel& operator=(TSymbolTableLevel&); typedef std::map, pool_allocator > > tLevel; typedef const tLevel::value_type tLevelPair; typedef std::pair tInsertResult; tLevel level; // named mappings TPrecisionQualifier *defaultPrecision; // pair TVector> retargetedSymbols; int anonId; bool thisLevel; // True if this level of the symbol table is a structure scope containing member function // that are supposed to see anonymous access to member variables. }; class TSymbolTable { public: TSymbolTable() : uniqueId(0), noBuiltInRedeclarations(false), separateNameSpaces(false), adoptedLevels(0) { // // This symbol table cannot be used until push() is called. // } ~TSymbolTable() { // this can be called explicitly; safest to code it so it can be called multiple times // don't deallocate levels passed in from elsewhere while (table.size() > adoptedLevels) pop(nullptr); } void adoptLevels(TSymbolTable& symTable) { for (unsigned int level = 0; level < symTable.table.size(); ++level) { table.push_back(symTable.table[level]); ++adoptedLevels; } uniqueId = symTable.uniqueId; noBuiltInRedeclarations = symTable.noBuiltInRedeclarations; separateNameSpaces = symTable.separateNameSpaces; } // // While level adopting is generic, the methods below enact a the following // convention for levels: // 0: common built-ins shared across all stages, all compiles, only one copy for all symbol tables // 1: per-stage built-ins, shared across all compiles, but a different copy per stage // 2: built-ins specific to a compile, like resources that are context-dependent, or redeclared built-ins // 3: user-shader globals // protected: static const uint32_t LevelFlagBitOffset = 56; static const int globalLevel = 3; static bool isSharedLevel(int level) { return level <= 1; } // exclude all per-compile levels static bool isBuiltInLevel(int level) { return level <= 2; } // exclude user globals static bool isGlobalLevel(int level) { return level <= globalLevel; } // include user globals public: bool isEmpty() { return table.size() == 0; } bool atBuiltInLevel() { return isBuiltInLevel(currentLevel()); } bool atGlobalLevel() { return isGlobalLevel(currentLevel()); } static bool isBuiltInSymbol(long long uniqueId) { int level = static_cast(uniqueId >> LevelFlagBitOffset); return isBuiltInLevel(level); } static constexpr uint64_t uniqueIdMask = (1LL << LevelFlagBitOffset) - 1; static const uint32_t MaxLevelInUniqueID = 127; void setNoBuiltInRedeclarations() { noBuiltInRedeclarations = true; } void setSeparateNameSpaces() { separateNameSpaces = true; } void push() { table.push_back(new TSymbolTableLevel); updateUniqueIdLevelFlag(); } // Make a new symbol-table level to represent the scope introduced by a structure // containing member functions, such that the member functions can find anonymous // references to member variables. // // 'thisSymbol' should have a name of "" to trigger anonymous structure-member // symbol finds. void pushThis(TSymbol& thisSymbol) { assert(thisSymbol.getName().size() == 0); table.push_back(new TSymbolTableLevel); updateUniqueIdLevelFlag(); table.back()->setThisLevel(); insert(thisSymbol); } void pop(TPrecisionQualifier *p) { table[currentLevel()]->getPreviousDefaultPrecisions(p); delete table.back(); table.pop_back(); updateUniqueIdLevelFlag(); } // // Insert a visible symbol into the symbol table so it can // be found later by name. // // Returns false if the was a name collision. // bool insert(TSymbol& symbol) { symbol.setUniqueId(++uniqueId); // make sure there isn't a function of this variable name if (! separateNameSpaces && ! symbol.getAsFunction() && table[currentLevel()]->hasFunctionName(symbol.getName())) return false; // check for not overloading or redefining a built-in function if (noBuiltInRedeclarations) { if (atGlobalLevel() && currentLevel() > 0) { if (table[0]->hasFunctionName(symbol.getName())) return false; if (currentLevel() > 1 && table[1]->hasFunctionName(symbol.getName())) return false; } } return table[currentLevel()]->insert(symbol, separateNameSpaces); } // Add more members to an already inserted aggregate object bool amend(TSymbol& symbol, int firstNewMember) { // See insert() for comments on basic explanation of insert. // This operates similarly, but more simply. return table[currentLevel()]->amend(symbol, firstNewMember); } // Update the level info in symbol's unique ID to current level void amendSymbolIdLevel(TSymbol& symbol) { // clamp level to avoid overflow uint64_t level = (uint32_t)currentLevel() > MaxLevelInUniqueID ? MaxLevelInUniqueID : currentLevel(); uint64_t symbolId = symbol.getUniqueId(); symbolId &= uniqueIdMask; symbolId |= (level << LevelFlagBitOffset); symbol.setUniqueId(symbolId); } // // To allocate an internal temporary, which will need to be uniquely // identified by the consumer of the AST, but never need to // found by doing a symbol table search by name, hence allowed an // arbitrary name in the symbol with no worry of collision. // void makeInternalVariable(TSymbol& symbol) { symbol.setUniqueId(++uniqueId); } // // Copy a variable or anonymous member's structure from a shared level so that // it can be added (soon after return) to the symbol table where it can be // modified without impacting other users of the shared table. // TSymbol* copyUpDeferredInsert(TSymbol* shared) { if (shared->getAsVariable()) { TSymbol* copy = shared->clone(); copy->setUniqueId(shared->getUniqueId()); return copy; } else { const TAnonMember* anon = shared->getAsAnonMember(); assert(anon); TVariable* container = anon->getAnonContainer().clone(); container->changeName(NewPoolTString("")); container->setUniqueId(anon->getAnonContainer().getUniqueId()); return container; } } TSymbol* copyUp(TSymbol* shared) { TSymbol* copy = copyUpDeferredInsert(shared); table[globalLevel]->insert(*copy, separateNameSpaces); if (shared->getAsVariable()) return copy; else { // return the copy of the anonymous member return table[globalLevel]->find(shared->getName()); } } // Normal find of a symbol, that can optionally say whether the symbol was found // at a built-in level or the current top-scope level. TSymbol* find(const TString& name, bool* builtIn = nullptr, bool* currentScope = nullptr, int* thisDepthP = nullptr) { int level = currentLevel(); TSymbol* symbol; int thisDepth = 0; do { if (table[level]->isThisLevel()) ++thisDepth; symbol = table[level]->find(name); --level; } while (symbol == nullptr && level >= 0); level++; if (builtIn) *builtIn = isBuiltInLevel(level); if (currentScope) *currentScope = isGlobalLevel(currentLevel()) || level == currentLevel(); // consider shared levels as "current scope" WRT user globals if (thisDepthP != nullptr) { if (! table[level]->isThisLevel()) thisDepth = 0; *thisDepthP = thisDepth; } return symbol; } void retargetSymbol(const TString& from, const TString& to) { int level = currentLevel(); table[level]->retargetSymbol(from, to); } // Find of a symbol that returns how many layers deep of nested // structures-with-member-functions ('this' scopes) deep the symbol was // found in. TSymbol* find(const TString& name, int& thisDepth) { int level = currentLevel(); TSymbol* symbol; thisDepth = 0; do { if (table[level]->isThisLevel()) ++thisDepth; symbol = table[level]->find(name); --level; } while (symbol == nullptr && level >= 0); if (! table[level + 1]->isThisLevel()) thisDepth = 0; return symbol; } bool isFunctionNameVariable(const TString& name) const { if (separateNameSpaces) return false; int level = currentLevel(); do { bool variable; bool found = table[level]->findFunctionVariableName(name, variable); if (found) return variable; --level; } while (level >= 0); return false; } void findFunctionNameList(const TString& name, TVector& list, bool& builtIn) { // For user levels, return the set found in the first scope with a match builtIn = false; int level = currentLevel(); do { table[level]->findFunctionNameList(name, list); --level; } while (list.empty() && level >= globalLevel); if (! list.empty()) return; // Gather across all built-in levels; they don't hide each other builtIn = true; do { table[level]->findFunctionNameList(name, list); --level; } while (level >= 0); } void relateToOperator(const char* name, TOperator op) { for (unsigned int level = 0; level < table.size(); ++level) table[level]->relateToOperator(name, op); } void setFunctionExtensions(const char* name, int num, const char* const extensions[]) { for (unsigned int level = 0; level < table.size(); ++level) table[level]->setFunctionExtensions(name, num, extensions); } void setSingleFunctionExtensions(const char* name, int num, const char* const extensions[]) { for (unsigned int level = 0; level < table.size(); ++level) table[level]->setSingleFunctionExtensions(name, num, extensions); } void setVariableExtensions(const char* name, int numExts, const char* const extensions[]) { TSymbol* symbol = find(TString(name)); if (symbol == nullptr) return; symbol->setExtensions(numExts, extensions); } void setVariableExtensions(const char* blockName, const char* name, int numExts, const char* const extensions[]) { TSymbol* symbol = find(TString(blockName)); if (symbol == nullptr) return; TVariable* variable = symbol->getAsVariable(); assert(variable != nullptr); const TTypeList& structure = *variable->getAsVariable()->getType().getStruct(); for (int member = 0; member < (int)structure.size(); ++member) { if (structure[member].type->getFieldName().compare(name) == 0) { variable->setMemberExtensions(member, numExts, extensions); return; } } } long long getMaxSymbolId() { return uniqueId; } void dump(TInfoSink& infoSink, bool complete = false) const; void copyTable(const TSymbolTable& copyOf); void setPreviousDefaultPrecisions(TPrecisionQualifier *p) { table[currentLevel()]->setPreviousDefaultPrecisions(p); } void readOnly() { for (unsigned int level = 0; level < table.size(); ++level) table[level]->readOnly(); } // Add current level in the high-bits of unique id void updateUniqueIdLevelFlag() { // clamp level to avoid overflow uint64_t level = (uint32_t)currentLevel() > MaxLevelInUniqueID ? MaxLevelInUniqueID : currentLevel(); uniqueId &= uniqueIdMask; uniqueId |= (level << LevelFlagBitOffset); } void overwriteUniqueId(long long id) { uniqueId = id; updateUniqueIdLevelFlag(); } protected: TSymbolTable(TSymbolTable&); TSymbolTable& operator=(TSymbolTableLevel&); int currentLevel() const { return static_cast(table.size()) - 1; } std::vector table; long long uniqueId; // for unique identification in code generation bool noBuiltInRedeclarations; bool separateNameSpaces; unsigned int adoptedLevels; }; } // end namespace glslang #endif // _SYMBOL_TABLE_INCLUDED_ glslang-16.0.0/glslang/MachineIndependent/Versions.cpp000066400000000000000000002246261506534232700227350ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017, 2022-2024 Arm Limited. // Copyright (C) 2015-2020 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Help manage multiple profiles, versions, extensions etc. // // These don't return error codes, as the presumption is parsing will // always continue as if the tested feature were enabled, and thus there // is no error recovery needed. // // // HOW TO add a feature enabled by an extension. // // To add a new hypothetical "Feature F" to the front end, where an extension // "XXX_extension_X" can be used to enable the feature, do the following. // // OVERVIEW: Specific features are what are error-checked for, not // extensions: A specific Feature F might be enabled by an extension, or a // particular version in a particular profile, or a stage, or combinations, etc. // // The basic mechanism is to use the following to "declare" all the things that // enable/disable Feature F, in a code path that implements Feature F: // // requireProfile() // profileRequires() // requireStage() // checkDeprecated() // requireNotRemoved() // requireExtensions() // extensionRequires() // // Typically, only the first two calls are needed. They go into a code path that // implements Feature F, and will log the proper error/warning messages. Parsing // will then always continue as if the tested feature was enabled. // // There is typically no if-testing or conditional parsing, just insertion of the calls above. // However, if symbols specific to the extension are added (step 5), they will // only be added under tests that the minimum version and profile are present. // // 1) Add a symbol name for the extension string at the bottom of Versions.h: // // const char* const XXX_extension_X = "XXX_extension_X"; // // 2) Add extension initialization to TParseVersions::initializeExtensionBehavior(), // the first function below and optionally a entry to extensionData for additional // error checks: // // extensionBehavior[XXX_extension_X] = EBhDisable; // (Optional) exts[] = {XXX_extension_X, EShTargetSpv_1_4} // // 3) Add any preprocessor directives etc. in the next function, TParseVersions::getPreamble(): // // "#define XXX_extension_X 1\n" // // The new-line is important, as that ends preprocess tokens. // // 4) Insert a profile check in the feature's path (unless all profiles support the feature, // for some version level). That is, call requireProfile() to constrain the profiles, e.g.: // // // ... in a path specific to Feature F... // requireProfile(loc, // ECoreProfile | ECompatibilityProfile, // "Feature F"); // // 5) For each profile that supports the feature, insert version/extension checks: // // The mostly likely scenario is that Feature F can only be used with a // particular profile if XXX_extension_X is present or the version is // high enough that the core specification already incorporated it. // // // following the requireProfile() call... // profileRequires(loc, // ECoreProfile | ECompatibilityProfile, // 420, // 0 if no version incorporated the feature into the core spec. // XXX_extension_X, // can be a list of extensions that all add the feature // "Feature F Description"); // // This allows the feature if either A) one of the extensions is enabled or // B) the version is high enough. If no version yet incorporates the feature // into core, pass in 0. // // This can be called multiple times, if different profiles support the // feature starting at different version numbers or with different // extensions. // // This must be called for each profile allowed by the initial call to requireProfile(). // // Profiles are all masks, which can be "or"-ed together. // // ENoProfile // ECoreProfile // ECompatibilityProfile // EEsProfile // // The ENoProfile profile is only for desktop, before profiles showed up in version 150; // All other #version with no profile default to either es or core, and so have profiles. // // You can select all but a particular profile using ~. The following basically means "desktop": // // ~EEsProfile // // 6) If built-in symbols are added by the extension, add them in Initialize.cpp: Their use // will be automatically error checked against the extensions enabled at that moment. // see the comment at the top of Initialize.cpp for where to put them. Establish them at // the earliest release that supports the extension. Then, tag them with the // set of extensions that both enable them and are necessary, given the version of the symbol // table. (There is a different symbol table for each version.) // // 7) If the extension has additional requirements like minimum SPIR-V version required, add them // to extensionRequires() #include "parseVersions.h" #include "localintermediate.h" namespace glslang { // // Initialize all extensions, almost always to 'disable', as once their features // are incorporated into a core version, their features are supported through allowing that // core version, not through a pseudo-enablement of the extension. // void TParseVersions::initializeExtensionBehavior() { typedef struct { const char *const extensionName; EShTargetLanguageVersion minSpvVersion; } extensionData; const extensionData exts[] = { {E_GL_EXT_ray_tracing, EShTargetSpv_1_4}, {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4}, {E_GL_EXT_mesh_shader, EShTargetSpv_1_4}, {E_GL_NV_cooperative_matrix2, EShTargetSpv_1_6} }; for (size_t ii = 0; ii < sizeof(exts) / sizeof(exts[0]); ii++) { // Add only extensions which require > spv1.0 to save space in map if (exts[ii].minSpvVersion > EShTargetSpv_1_0) { extensionMinSpv[exts[ii].extensionName] = exts[ii].minSpvVersion; } } extensionBehavior[E_GL_OES_texture_3D] = EBhDisable; extensionBehavior[E_GL_OES_standard_derivatives] = EBhDisable; extensionBehavior[E_GL_EXT_frag_depth] = EBhDisable; extensionBehavior[E_GL_OES_EGL_image_external] = EBhDisable; extensionBehavior[E_GL_OES_EGL_image_external_essl3] = EBhDisable; extensionBehavior[E_GL_EXT_YUV_target] = EBhDisable; extensionBehavior[E_GL_EXT_shader_texture_lod] = EBhDisable; extensionBehavior[E_GL_EXT_shadow_samplers] = EBhDisable; extensionBehavior[E_GL_ARB_texture_rectangle] = EBhDisable; extensionBehavior[E_GL_3DL_array_objects] = EBhDisable; extensionBehavior[E_GL_ARB_shading_language_420pack] = EBhDisable; extensionBehavior[E_GL_ARB_texture_gather] = EBhDisable; extensionBehavior[E_GL_ARB_gpu_shader5] = EBhDisable; extensionBehavior[E_GL_ARB_separate_shader_objects] = EBhDisable; extensionBehavior[E_GL_ARB_compute_shader] = EBhDisable; extensionBehavior[E_GL_ARB_tessellation_shader] = EBhDisable; extensionBehavior[E_GL_ARB_enhanced_layouts] = EBhDisable; extensionBehavior[E_GL_ARB_texture_cube_map_array] = EBhDisable; extensionBehavior[E_GL_ARB_texture_multisample] = EBhDisable; extensionBehavior[E_GL_ARB_shader_texture_lod] = EBhDisable; extensionBehavior[E_GL_ARB_explicit_attrib_location] = EBhDisable; extensionBehavior[E_GL_ARB_explicit_uniform_location] = EBhDisable; extensionBehavior[E_GL_ARB_shader_image_load_store] = EBhDisable; extensionBehavior[E_GL_ARB_shader_atomic_counters] = EBhDisable; extensionBehavior[E_GL_ARB_shader_atomic_counter_ops] = EBhDisable; extensionBehavior[E_GL_ARB_shader_draw_parameters] = EBhDisable; extensionBehavior[E_GL_ARB_shader_group_vote] = EBhDisable; extensionBehavior[E_GL_ARB_derivative_control] = EBhDisable; extensionBehavior[E_GL_ARB_shader_texture_image_samples] = EBhDisable; extensionBehavior[E_GL_ARB_viewport_array] = EBhDisable; extensionBehavior[E_GL_ARB_gpu_shader_int64] = EBhDisable; extensionBehavior[E_GL_ARB_gpu_shader_fp64] = EBhDisable; extensionBehavior[E_GL_ARB_shader_ballot] = EBhDisable; extensionBehavior[E_GL_ARB_sparse_texture2] = EBhDisable; extensionBehavior[E_GL_ARB_sparse_texture_clamp] = EBhDisable; extensionBehavior[E_GL_ARB_shader_stencil_export] = EBhDisable; // extensionBehavior[E_GL_ARB_cull_distance] = EBhDisable; // present for 4.5, but need extension control over block members extensionBehavior[E_GL_ARB_post_depth_coverage] = EBhDisable; extensionBehavior[E_GL_ARB_shader_viewport_layer_array] = EBhDisable; extensionBehavior[E_GL_ARB_fragment_shader_interlock] = EBhDisable; extensionBehavior[E_GL_ARB_shader_clock] = EBhDisable; extensionBehavior[E_GL_ARB_uniform_buffer_object] = EBhDisable; extensionBehavior[E_GL_ARB_sample_shading] = EBhDisable; extensionBehavior[E_GL_ARB_shader_bit_encoding] = EBhDisable; extensionBehavior[E_GL_ARB_shader_image_size] = EBhDisable; extensionBehavior[E_GL_ARB_shader_storage_buffer_object] = EBhDisable; extensionBehavior[E_GL_ARB_shading_language_packing] = EBhDisable; extensionBehavior[E_GL_ARB_texture_query_lod] = EBhDisable; extensionBehavior[E_GL_ARB_vertex_attrib_64bit] = EBhDisable; extensionBehavior[E_GL_NV_gpu_shader5] = EBhDisable; extensionBehavior[E_GL_ARB_draw_instanced] = EBhDisable; extensionBehavior[E_GL_ARB_bindless_texture] = 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; extensionBehavior[E_GL_KHR_shader_subgroup_arithmetic] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_ballot] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_shuffle] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_shuffle_relative] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_rotate] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_clustered] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_quad] = EBhDisable; extensionBehavior[E_GL_KHR_memory_scope_semantics] = EBhDisable; extensionBehavior[E_GL_EXT_shader_atomic_int64] = EBhDisable; extensionBehavior[E_GL_EXT_shader_non_constant_global_initializers] = EBhDisable; extensionBehavior[E_GL_EXT_shader_image_load_formatted] = EBhDisable; extensionBehavior[E_GL_EXT_post_depth_coverage] = EBhDisable; extensionBehavior[E_GL_EXT_control_flow_attributes] = EBhDisable; extensionBehavior[E_GL_EXT_nonuniform_qualifier] = EBhDisable; extensionBehavior[E_GL_EXT_samplerless_texture_functions] = EBhDisable; extensionBehavior[E_GL_EXT_scalar_block_layout] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_invocation_density] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference2] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference_uvec2] = EBhDisable; extensionBehavior[E_GL_EXT_demote_to_helper_invocation] = EBhDisable; extensionBehavior[E_GL_EXT_debug_printf] = EBhDisable; extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_subgroup_uniform_control_flow] = EBhDisable; extensionBehavior[E_GL_EXT_maximal_reconvergence] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_shader_barycentric] = EBhDisable; extensionBehavior[E_GL_EXT_expect_assume] = EBhDisable; extensionBehavior[E_GL_EXT_control_flow_attributes2] = EBhDisable; extensionBehavior[E_GL_EXT_spec_constant_composites] = EBhDisable; extensionBehavior[E_GL_KHR_cooperative_matrix] = EBhDisable; extensionBehavior[E_GL_NV_cooperative_vector] = EBhDisable; // #line and #include extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable; extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable; extensionBehavior[E_GL_ARB_shading_language_include] = EBhDisable; extensionBehavior[E_GL_AMD_shader_ballot] = EBhDisable; extensionBehavior[E_GL_AMD_shader_trinary_minmax] = EBhDisable; extensionBehavior[E_GL_AMD_shader_explicit_vertex_parameter] = EBhDisable; extensionBehavior[E_GL_AMD_gcn_shader] = EBhDisable; extensionBehavior[E_GL_AMD_gpu_shader_half_float] = EBhDisable; extensionBehavior[E_GL_AMD_texture_gather_bias_lod] = EBhDisable; extensionBehavior[E_GL_AMD_gpu_shader_int16] = EBhDisable; 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; extensionBehavior[E_GL_NV_sample_mask_override_coverage] = EBhDisable; extensionBehavior[E_SPV_NV_geometry_shader_passthrough] = EBhDisable; extensionBehavior[E_GL_NV_viewport_array2] = EBhDisable; extensionBehavior[E_GL_NV_stereo_view_rendering] = EBhDisable; extensionBehavior[E_GL_NVX_multiview_per_view_attributes] = EBhDisable; extensionBehavior[E_GL_NV_shader_atomic_int64] = EBhDisable; extensionBehavior[E_GL_NV_conservative_raster_underestimation] = EBhDisable; extensionBehavior[E_GL_NV_shader_noperspective_interpolation] = EBhDisable; extensionBehavior[E_GL_NV_shader_subgroup_partitioned] = EBhDisable; extensionBehavior[E_GL_NV_shading_rate_image] = EBhDisable; extensionBehavior[E_GL_NV_ray_tracing] = EBhDisable; extensionBehavior[E_GL_NV_ray_tracing_motion_blur] = EBhDisable; extensionBehavior[E_GL_NV_fragment_shader_barycentric] = EBhDisable; extensionBehavior[E_GL_NV_compute_shader_derivatives] = EBhDisable; extensionBehavior[E_GL_NV_shader_texture_footprint] = EBhDisable; extensionBehavior[E_GL_NV_mesh_shader] = EBhDisable; extensionBehavior[E_GL_NV_cooperative_matrix] = EBhDisable; extensionBehavior[E_GL_NV_shader_sm_builtins] = EBhDisable; extensionBehavior[E_GL_NV_integer_cooperative_matrix] = EBhDisable; extensionBehavior[E_GL_NV_shader_invocation_reorder] = EBhDisable; extensionBehavior[E_GL_NV_displacement_micromap] = EBhDisable; extensionBehavior[E_GL_NV_shader_atomic_fp16_vector] = EBhDisable; extensionBehavior[E_GL_NV_cooperative_matrix2] = EBhDisable; extensionBehavior[E_GL_NV_cluster_acceleration_structure] = EBhDisable; extensionBehavior[E_GL_NV_linear_swept_spheres] = EBhDisable; // ARM extensionBehavior[E_GL_ARM_shader_core_builtins] = EBhDisable; extensionBehavior[E_GL_ARM_tensors] = EBhDisable; // QCOM extensionBehavior[E_GL_QCOM_image_processing] = EBhDisable; extensionBehavior[E_GL_QCOM_image_processing2] = EBhDisable; extensionBehavior[E_GL_QCOM_tile_shading] = EBhDisable; extensionBehavior[E_GL_QCOM_cooperative_matrix_conversion] = EBhDisable; // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; extensionBehavior[E_GL_KHR_blend_equation_advanced] = EBhDisable; extensionBehavior[E_GL_OES_sample_variables] = EBhDisable; extensionBehavior[E_GL_OES_shader_image_atomic] = EBhDisable; extensionBehavior[E_GL_OES_shader_multisample_interpolation] = EBhDisable; extensionBehavior[E_GL_OES_texture_storage_multisample_2d_array] = EBhDisable; extensionBehavior[E_GL_EXT_geometry_shader] = EBhDisable; extensionBehavior[E_GL_EXT_geometry_point_size] = EBhDisable; extensionBehavior[E_GL_EXT_gpu_shader5] = EBhDisable; extensionBehavior[E_GL_EXT_primitive_bounding_box] = EBhDisable; extensionBehavior[E_GL_EXT_shader_io_blocks] = EBhDisable; extensionBehavior[E_GL_EXT_tessellation_shader] = EBhDisable; extensionBehavior[E_GL_EXT_tessellation_point_size] = EBhDisable; extensionBehavior[E_GL_EXT_texture_buffer] = EBhDisable; extensionBehavior[E_GL_EXT_texture_cube_map_array] = EBhDisable; extensionBehavior[E_GL_EXT_null_initializer] = EBhDisable; // OES matching AEP extensionBehavior[E_GL_OES_geometry_shader] = EBhDisable; extensionBehavior[E_GL_OES_geometry_point_size] = EBhDisable; extensionBehavior[E_GL_OES_gpu_shader5] = EBhDisable; extensionBehavior[E_GL_OES_primitive_bounding_box] = EBhDisable; extensionBehavior[E_GL_OES_shader_io_blocks] = EBhDisable; extensionBehavior[E_GL_OES_tessellation_shader] = EBhDisable; extensionBehavior[E_GL_OES_tessellation_point_size] = EBhDisable; extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable; extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable; extensionBehavior[E_GL_EXT_shader_integer_mix] = EBhDisable; // EXT extensions extensionBehavior[E_GL_EXT_device_group] = EBhDisable; extensionBehavior[E_GL_EXT_multiview] = EBhDisable; extensionBehavior[E_GL_EXT_shader_realtime_clock] = EBhDisable; extensionBehavior[E_GL_EXT_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_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; extensionBehavior[E_GL_EXT_shader_quad_control] = EBhDisable; extensionBehavior[E_GL_EXT_ray_tracing_position_fetch] = EBhDisable; extensionBehavior[E_GL_EXT_shader_tile_image] = EBhDisable; extensionBehavior[E_GL_EXT_texture_shadow_lod] = EBhDisable; extensionBehavior[E_GL_EXT_draw_instanced] = EBhDisable; extensionBehavior[E_GL_EXT_texture_array] = EBhDisable; extensionBehavior[E_GL_EXT_texture_offset_non_const] = EBhDisable; extensionBehavior[E_GL_EXT_nontemporal_keyword] = EBhDisable; extensionBehavior[E_GL_EXT_bfloat16] = EBhDisable; extensionBehavior[E_GL_EXT_float_e4m3] = EBhDisable; extensionBehavior[E_GL_EXT_float_e5m2] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; extensionBehavior[E_GL_OVR_multiview2] = EBhDisable; // explicit types extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_int8] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_int16] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_int32] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_int64] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float16] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float32] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float64] = EBhDisable; // subgroup extended types extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int8] = EBhDisable; extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int16] = EBhDisable; extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int64] = EBhDisable; extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_float16] = EBhDisable; extensionBehavior[E_GL_EXT_shader_atomic_float] = EBhDisable; extensionBehavior[E_GL_EXT_shader_atomic_float2] = EBhDisable; extensionBehavior[E_GL_EXT_integer_dot_product] = EBhDisable; // Record extensions not for spv. spvUnsupportedExt.push_back(E_GL_ARB_bindless_texture); } // Get code that is not part of a shared symbol table, is specific to this shader, // or needed by the preprocessor (which does not use a shared symbol table). void TParseVersions::getPreamble(std::string& preamble) { if (isEsProfile()) { preamble = "#define GL_ES 1\n" "#define GL_FRAGMENT_PRECISION_HIGH 1\n" "#define GL_OES_texture_3D 1\n" "#define GL_OES_standard_derivatives 1\n" "#define GL_EXT_frag_depth 1\n" "#define GL_OES_EGL_image_external 1\n" "#define GL_OES_EGL_image_external_essl3 1\n" "#define GL_EXT_YUV_target 1\n" "#define GL_EXT_shader_texture_lod 1\n" "#define GL_EXT_shadow_samplers 1\n" "#define GL_EXT_fragment_shading_rate 1\n" // AEP "#define GL_ANDROID_extension_pack_es31a 1\n" "#define GL_OES_sample_variables 1\n" "#define GL_OES_shader_image_atomic 1\n" "#define GL_OES_shader_multisample_interpolation 1\n" "#define GL_OES_texture_storage_multisample_2d_array 1\n" "#define GL_EXT_geometry_shader 1\n" "#define GL_EXT_geometry_point_size 1\n" "#define GL_EXT_gpu_shader5 1\n" "#define GL_EXT_primitive_bounding_box 1\n" "#define GL_EXT_shader_io_blocks 1\n" "#define GL_EXT_tessellation_shader 1\n" "#define GL_EXT_tessellation_point_size 1\n" "#define GL_EXT_texture_buffer 1\n" "#define GL_EXT_texture_cube_map_array 1\n" "#define GL_EXT_shader_implicit_conversions 1\n" "#define GL_EXT_shader_integer_mix 1\n" "#define GL_EXT_blend_func_extended 1\n" // OES matching AEP "#define GL_OES_geometry_shader 1\n" "#define GL_OES_geometry_point_size 1\n" "#define GL_OES_gpu_shader5 1\n" "#define GL_OES_primitive_bounding_box 1\n" "#define GL_OES_shader_io_blocks 1\n" "#define GL_OES_tessellation_shader 1\n" "#define GL_OES_tessellation_point_size 1\n" "#define GL_OES_texture_buffer 1\n" "#define GL_OES_texture_cube_map_array 1\n" "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_QCOM_image_processing 1\n" "#define GL_QCOM_image_processing2 1\n" "#define GL_QCOM_tile_shading 1\n" "#define GL_QCOM_cooperative_matrix_conversion 1\n" ; if (version >= 300) { preamble += "#define GL_NV_shader_noperspective_interpolation 1\n"; } if (version >= 310) { preamble += "#define GL_EXT_null_initializer 1\n"; preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n"; preamble += "#define GL_EXT_maximal_reconvergence 1\n"; } } else { // !isEsProfile() preamble = "#define GL_ARB_texture_rectangle 1\n" "#define GL_ARB_shading_language_420pack 1\n" "#define GL_ARB_texture_gather 1\n" "#define GL_ARB_gpu_shader5 1\n" "#define GL_ARB_separate_shader_objects 1\n" "#define GL_ARB_compute_shader 1\n" "#define GL_ARB_tessellation_shader 1\n" "#define GL_ARB_enhanced_layouts 1\n" "#define GL_ARB_texture_cube_map_array 1\n" "#define GL_ARB_texture_multisample 1\n" "#define GL_ARB_shader_texture_lod 1\n" "#define GL_ARB_explicit_attrib_location 1\n" "#define GL_ARB_explicit_uniform_location 1\n" "#define GL_ARB_shader_image_load_store 1\n" "#define GL_ARB_shader_atomic_counters 1\n" "#define GL_ARB_shader_draw_parameters 1\n" "#define GL_ARB_shader_group_vote 1\n" "#define GL_ARB_derivative_control 1\n" "#define GL_ARB_shader_texture_image_samples 1\n" "#define GL_ARB_viewport_array 1\n" "#define GL_ARB_gpu_shader_int64 1\n" "#define GL_ARB_gpu_shader_fp64 1\n" "#define GL_ARB_shader_ballot 1\n" "#define GL_ARB_sparse_texture2 1\n" "#define GL_ARB_sparse_texture_clamp 1\n" "#define GL_ARB_shader_stencil_export 1\n" "#define GL_ARB_sample_shading 1\n" "#define GL_ARB_shader_image_size 1\n" "#define GL_ARB_shading_language_packing 1\n" // "#define GL_ARB_cull_distance 1\n" // present for 4.5, but need extension control over block members "#define GL_ARB_post_depth_coverage 1\n" "#define GL_ARB_fragment_shader_interlock 1\n" "#define GL_ARB_uniform_buffer_object 1\n" "#define GL_ARB_shader_bit_encoding 1\n" "#define GL_ARB_shader_storage_buffer_object 1\n" "#define GL_ARB_texture_query_lod 1\n" "#define GL_ARB_vertex_attrib_64bit 1\n" "#define GL_NV_gpu_shader5 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" "#define GL_EXT_control_flow_attributes 1\n" "#define GL_EXT_nonuniform_qualifier 1\n" "#define GL_EXT_shader_16bit_storage 1\n" "#define GL_EXT_shader_8bit_storage 1\n" "#define GL_EXT_samplerless_texture_functions 1\n" "#define GL_EXT_scalar_block_layout 1\n" "#define GL_EXT_fragment_invocation_density 1\n" "#define GL_EXT_buffer_reference 1\n" "#define GL_EXT_buffer_reference2 1\n" "#define GL_EXT_buffer_reference_uvec2 1\n" "#define GL_EXT_demote_to_helper_invocation 1\n" "#define GL_EXT_debug_printf 1\n" "#define GL_EXT_fragment_shading_rate 1\n" "#define GL_EXT_shared_memory_block 1\n" "#define GL_EXT_shader_integer_mix 1\n" "#define GL_EXT_spec_constant_composites 1\n" // GL_KHR_shader_subgroup "#define GL_KHR_shader_subgroup_basic 1\n" "#define GL_KHR_shader_subgroup_vote 1\n" "#define GL_KHR_shader_subgroup_arithmetic 1\n" "#define GL_KHR_shader_subgroup_ballot 1\n" "#define GL_KHR_shader_subgroup_shuffle 1\n" "#define GL_KHR_shader_subgroup_shuffle_relative 1\n" "#define GL_KHR_shader_subgroup_clustered 1\n" "#define GL_KHR_shader_subgroup_quad 1\n" "#define GL_KHR_cooperative_matrix 1\n" "#define GL_EXT_shader_image_int64 1\n" "#define GL_EXT_shader_atomic_int64 1\n" "#define GL_EXT_shader_realtime_clock 1\n" "#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_ray_tracing_position_fetch 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" "#define GL_AMD_shader_explicit_vertex_parameter 1\n" "#define GL_AMD_gcn_shader 1\n" "#define GL_AMD_gpu_shader_half_float 1\n" "#define GL_AMD_texture_gather_bias_lod 1\n" "#define GL_AMD_gpu_shader_int16 1\n" "#define GL_AMD_shader_image_load_store_lod 1\n" "#define GL_AMD_shader_fragment_mask 1\n" "#define GL_AMD_gpu_shader_half_float_fetch 1\n" "#define GL_INTEL_shader_integer_functions2 1\n" "#define GL_NV_sample_mask_override_coverage 1\n" "#define GL_NV_geometry_shader_passthrough 1\n" "#define GL_NV_viewport_array2 1\n" "#define GL_NV_shader_atomic_int64 1\n" "#define GL_NV_conservative_raster_underestimation 1\n" "#define GL_NV_shader_subgroup_partitioned 1\n" "#define GL_NV_shading_rate_image 1\n" "#define GL_NV_ray_tracing 1\n" "#define GL_NV_ray_tracing_motion_blur 1\n" "#define GL_NV_fragment_shader_barycentric 1\n" "#define GL_NV_compute_shader_derivatives 1\n" "#define GL_NV_shader_texture_footprint 1\n" "#define GL_NV_mesh_shader 1\n" "#define GL_NV_cooperative_matrix 1\n" "#define GL_NV_integer_cooperative_matrix 1\n" "#define GL_NV_shader_invocation_reorder 1\n" "#define GL_NV_cooperative_matrix2 1\n" "#define GL_QCOM_image_processing 1\n" "#define GL_QCOM_image_processing2 1\n" "#define GL_QCOM_tile_shading 1\n" "#define GL_QCOM_cooperative_matrix_conversion 1\n" "#define GL_EXT_shader_explicit_arithmetic_types 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int16 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int32 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int64 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_float16 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_float32 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_float64 1\n" "#define GL_EXT_shader_subgroup_extended_types_int8 1\n" "#define GL_EXT_shader_subgroup_extended_types_int16 1\n" "#define GL_EXT_shader_subgroup_extended_types_int64 1\n" "#define GL_EXT_shader_subgroup_extended_types_float16 1\n" "#define GL_EXT_shader_atomic_float 1\n" "#define GL_EXT_shader_atomic_float2 1\n" "#define GL_EXT_fragment_shader_barycentric 1\n" "#define GL_EXT_shader_quad_control 1\n" "#define GL_EXT_texture_array 1\n" "#define GL_EXT_control_flow_attributes2 1\n" "#define GL_EXT_integer_dot_product 1\n" "#define GL_EXT_bfloat16 1\n" "#define GL_EXT_float_e5m2 1\n" "#define GL_EXT_float_e4m3 1\n" ; if (spvVersion.spv == 0) { preamble += "#define GL_ARB_bindless_texture 1\n"; } if (version >= 150) { // define GL_core_profile and GL_compatibility_profile preamble += "#define GL_core_profile 1\n"; if (profile == ECompatibilityProfile) preamble += "#define GL_compatibility_profile 1\n"; } if (version >= 140) { preamble += "#define GL_EXT_null_initializer 1\n"; preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n"; preamble += "#define GL_EXT_maximal_reconvergence 1\n"; } if (version >= 130) { preamble +="#define GL_FRAGMENT_PRECISION_HIGH 1\n"; } } if ((!isEsProfile() && version >= 140) || (isEsProfile() && version >= 310)) { preamble += "#define GL_EXT_device_group 1\n" "#define GL_EXT_multiview 1\n" "#define GL_NV_shader_sm_builtins 1\n" ; } if ((!isEsProfile() && version >= 130) || (isEsProfile() && version >= 300)) { preamble += "#define GL_EXT_texture_offset_non_const 1\n"; } if (version >= 300 /* both ES and non-ES */) { preamble += "#define GL_OVR_multiview 1\n" "#define GL_OVR_multiview2 1\n" ; } // #line and #include preamble += "#define GL_GOOGLE_cpp_style_line_directive 1\n" "#define GL_GOOGLE_include_directive 1\n" "#define GL_KHR_blend_equation_advanced 1\n" ; // other general extensions preamble += "#define GL_EXT_terminate_invocation 1\n" ; // #define VULKAN XXXX const int numberBufSize = 12; char numberBuf[numberBufSize]; if (spvVersion.vulkanGlsl > 0) { preamble += "#define VULKAN "; snprintf(numberBuf, numberBufSize, "%d", spvVersion.vulkanGlsl); preamble += numberBuf; preamble += "\n"; } // #define GL_SPIRV XXXX if (spvVersion.openGl > 0) { preamble += "#define GL_SPIRV "; snprintf(numberBuf, numberBufSize, "%d", spvVersion.openGl); preamble += numberBuf; preamble += "\n"; } // GL_EXT_spirv_intrinsics if (!isEsProfile()) { switch (language) { case EShLangVertex: preamble += "#define GL_VERTEX_SHADER 1 \n"; break; case EShLangTessControl: preamble += "#define GL_TESSELLATION_CONTROL_SHADER 1 \n"; break; case EShLangTessEvaluation: preamble += "#define GL_TESSELLATION_EVALUATION_SHADER 1 \n"; break; case EShLangGeometry: preamble += "#define GL_GEOMETRY_SHADER 1 \n"; break; case EShLangFragment: preamble += "#define GL_FRAGMENT_SHADER 1 \n"; break; case EShLangCompute: preamble += "#define GL_COMPUTE_SHADER 1 \n"; break; case EShLangRayGen: preamble += "#define GL_RAY_GENERATION_SHADER_EXT 1 \n"; break; case EShLangIntersect: preamble += "#define GL_INTERSECTION_SHADER_EXT 1 \n"; break; case EShLangAnyHit: preamble += "#define GL_ANY_HIT_SHADER_EXT 1 \n"; break; 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 EShLangTask: preamble += "#define GL_TASK_SHADER_NV 1 \n"; break; case EShLangMesh: preamble += "#define GL_MESH_SHADER_NV 1 \n"; break; default: break; } } } // // Map from stage enum to externally readable text name. // const char* StageName(EShLanguage stage) { switch(stage) { case EShLangVertex: return "vertex"; case EShLangFragment: return "fragment"; case EShLangCompute: return "compute"; case EShLangTessControl: return "tessellation control"; case EShLangTessEvaluation: return "tessellation evaluation"; case EShLangGeometry: return "geometry"; case EShLangRayGen: return "ray-generation"; case EShLangIntersect: return "intersection"; case EShLangAnyHit: return "any-hit"; case EShLangClosestHit: return "closest-hit"; case EShLangMiss: return "miss"; case EShLangCallable: return "callable"; case EShLangMesh: return "mesh"; case EShLangTask: return "task"; default: return "unknown stage"; } } // // When to use requireStage() // // If only some stages support a feature. // // Operation: If the current stage is not present, give an error message. // void TParseVersions::requireStage(const TSourceLoc& loc, EShLanguageMask languageMask, const char* featureDesc) { if (((1 << language) & languageMask) == 0) error(loc, "not supported in this stage:", featureDesc, StageName(language)); } // If only one stage supports a feature, this can be called. But, all supporting stages // must be specified with one call. void TParseVersions::requireStage(const TSourceLoc& loc, EShLanguage stage, const char* featureDesc) { requireStage(loc, static_cast(1 << stage), featureDesc); } // // When to use requireProfile(): // // Use if only some profiles support a feature. However, if within a profile the feature // is version or extension specific, follow this call with calls to profileRequires(). // // Operation: If the current profile is not one of the profileMask, // give an error message. // void TParseVersions::requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc) { if (! (profile & profileMask)) error(loc, "not supported with this profile:", featureDesc, ProfileName(profile)); } // // When to use profileRequires(): // // If a set of profiles have the same requirements for what version or extensions // are needed to support a feature. // // It must be called for each profile that needs protection. Use requireProfile() first // to reduce that set of profiles. // // Operation: Will issue warnings/errors based on the current profile, version, and extension // behaviors. It only checks extensions when the current profile is one of the profileMask. // // A minVersion of 0 means no version of the profileMask support this in core, // the extension must be present. // // entry point that takes multiple extensions void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, const char* const extensions[], const char* featureDesc) { if (profile & profileMask) { bool okay = minVersion > 0 && version >= minVersion; for (int i = 0; i < numExtensions; ++i) { switch (getExtensionBehavior(extensions[i])) { case EBhWarn: infoSink.info.message(EPrefixWarning, ("extension " + TString(extensions[i]) + " is being used for " + featureDesc).c_str(), loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); [[fallthrough]]; case EBhRequire: case EBhEnable: okay = true; break; default: break; // some compilers want this } } if (! okay) error(loc, "not supported for this version or the enabled extensions", featureDesc, ""); } } // entry point for the above that takes a single extension void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension, const char* featureDesc) { profileRequires(loc, profileMask, minVersion, extension ? 1 : 0, &extension, featureDesc); } void TParseVersions::unimplemented(const TSourceLoc& loc, const char* featureDesc) { error(loc, "feature not yet implemented", featureDesc, ""); } // // Within a set of profiles, see if a feature is deprecated and give an error or warning based on whether // a future compatibility context is being use. // void TParseVersions::checkDeprecated(const TSourceLoc& loc, int profileMask, int depVersion, const char* featureDesc) { if (profile & profileMask) { if (version >= depVersion) { if (forwardCompatible) error(loc, "deprecated, may be removed in future release", featureDesc, ""); else if (! suppressWarnings()) infoSink.info.message(EPrefixWarning, (TString(featureDesc) + " deprecated in version " + String(depVersion) + "; may be removed in future release").c_str(), loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); } } } // // Within a set of profiles, see if a feature has now been removed and if so, give an error. // The version argument is the first version no longer having the feature. // void TParseVersions::requireNotRemoved(const TSourceLoc& loc, int profileMask, int removedVersion, const char* featureDesc) { if (profile & profileMask) { if (version >= removedVersion) { const int maxSize = 60; char buf[maxSize]; snprintf(buf, maxSize, "%s profile; removed in version %d", ProfileName(profile), removedVersion); error(loc, "no longer supported in", featureDesc, buf); } } } // Returns true if at least one of the extensions in the extensions parameter is requested. Otherwise, returns false. // Warns appropriately if the requested behavior of an extension is "warn". bool TParseVersions::checkExtensionsRequested(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc) { // First, see if any of the extensions are enabled for (int i = 0; i < numExtensions; ++i) { TExtensionBehavior behavior = getExtensionBehavior(extensions[i]); if (behavior == EBhEnable || behavior == EBhRequire) return true; } // See if any extensions want to give a warning on use; give warnings for all such extensions bool warned = false; for (int i = 0; i < numExtensions; ++i) { TExtensionBehavior behavior = getExtensionBehavior(extensions[i]); if (behavior == EBhDisable && relaxedErrors()) { infoSink.info.message(EPrefixWarning, "The following extension must be enabled to use this feature:", loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); behavior = EBhWarn; } if (behavior == EBhWarn) { infoSink.info.message(EPrefixWarning, ("extension " + TString(extensions[i]) + " is being used for " + featureDesc).c_str(), loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); warned = true; } } if (warned) return true; return false; } // // Use when there are no profile/version to check, it's just an error if one of the // extensions is not present. // void TParseVersions::requireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc) { if (checkExtensionsRequested(loc, numExtensions, extensions, featureDesc)) return; // If we get this far, give errors explaining what extensions are needed if (numExtensions == 1) error(loc, "required extension not requested:", featureDesc, extensions[0]); else { error(loc, "required extension not requested:", featureDesc, "Possible extensions include:"); for (int i = 0; i < numExtensions; ++i) infoSink.info.message(EPrefixNone, extensions[i]); } } // // Use by preprocessor when there are no profile/version to check, it's just an error if one of the // extensions is not present. // void TParseVersions::ppRequireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc) { if (checkExtensionsRequested(loc, numExtensions, extensions, featureDesc)) return; // If we get this far, give errors explaining what extensions are needed if (numExtensions == 1) ppError(loc, "required extension not requested:", featureDesc, extensions[0]); else { ppError(loc, "required extension not requested:", featureDesc, "Possible extensions include:"); for (int i = 0; i < numExtensions; ++i) infoSink.info.message(EPrefixNone, extensions[i]); } } TExtensionBehavior TParseVersions::getExtensionBehavior(const char* extension) { auto iter = extensionBehavior.find(TString(extension)); if (iter == extensionBehavior.end()) return EBhMissing; else return iter->second; } // Returns true if the given extension is set to enable, require, or warn. bool TParseVersions::extensionTurnedOn(const char* const extension) { switch (getExtensionBehavior(extension)) { case EBhEnable: case EBhRequire: case EBhWarn: return true; default: break; } return false; } // See if any of the extensions are set to enable, require, or warn. bool TParseVersions::extensionsTurnedOn(int numExtensions, const char* const extensions[]) { for (int i = 0; i < numExtensions; ++i) { if (extensionTurnedOn(extensions[i])) return true; } return false; } // // Change the current state of an extension's behavior. // void TParseVersions::updateExtensionBehavior(int line, const char* extension, const char* behaviorString) { // Translate from text string of extension's behavior to an enum. TExtensionBehavior behavior = EBhDisable; if (! strcmp("require", behaviorString)) behavior = EBhRequire; else if (! strcmp("enable", behaviorString)) behavior = EBhEnable; else if (! strcmp("disable", behaviorString)) behavior = EBhDisable; else if (! strcmp("warn", behaviorString)) behavior = EBhWarn; else { error(getCurrentLoc(), "behavior not supported:", "#extension", behaviorString); return; } bool on = behavior != EBhDisable; // check if extension is used with correct shader stage checkExtensionStage(getCurrentLoc(), extension); // check if extension has additional requirements extensionRequires(getCurrentLoc(), extension, behaviorString); // update the requested extension updateExtensionBehavior(extension, behavior); // see if need to propagate to implicitly modified things if (strcmp(extension, "GL_ANDROID_extension_pack_es31a") == 0) { // to everything in AEP updateExtensionBehavior(line, "GL_KHR_blend_equation_advanced", behaviorString); updateExtensionBehavior(line, "GL_OES_sample_variables", behaviorString); updateExtensionBehavior(line, "GL_OES_shader_image_atomic", behaviorString); updateExtensionBehavior(line, "GL_OES_shader_multisample_interpolation", behaviorString); updateExtensionBehavior(line, "GL_OES_texture_storage_multisample_2d_array", behaviorString); updateExtensionBehavior(line, "GL_EXT_geometry_shader", behaviorString); updateExtensionBehavior(line, "GL_EXT_gpu_shader5", behaviorString); updateExtensionBehavior(line, "GL_EXT_primitive_bounding_box", behaviorString); updateExtensionBehavior(line, "GL_EXT_shader_io_blocks", behaviorString); updateExtensionBehavior(line, "GL_EXT_tessellation_shader", behaviorString); updateExtensionBehavior(line, "GL_EXT_texture_buffer", behaviorString); updateExtensionBehavior(line, "GL_EXT_texture_cube_map_array", behaviorString); } // geometry to io_blocks else if (strcmp(extension, "GL_EXT_geometry_shader") == 0) updateExtensionBehavior(line, "GL_EXT_shader_io_blocks", behaviorString); else if (strcmp(extension, "GL_OES_geometry_shader") == 0) updateExtensionBehavior(line, "GL_OES_shader_io_blocks", behaviorString); // tessellation to io_blocks else if (strcmp(extension, "GL_EXT_tessellation_shader") == 0) updateExtensionBehavior(line, "GL_EXT_shader_io_blocks", behaviorString); else if (strcmp(extension, "GL_OES_tessellation_shader") == 0) updateExtensionBehavior(line, "GL_OES_shader_io_blocks", behaviorString); else if (strcmp(extension, "GL_GOOGLE_include_directive") == 0) updateExtensionBehavior(line, "GL_GOOGLE_cpp_style_line_directive", behaviorString); else if (strcmp(extension, "GL_ARB_shading_language_include") == 0) updateExtensionBehavior(line, "GL_GOOGLE_cpp_style_line_directive", behaviorString); // subgroup_* to subgroup_basic else if (strcmp(extension, "GL_KHR_shader_subgroup_vote") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_KHR_shader_subgroup_arithmetic") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_KHR_shader_subgroup_ballot") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_KHR_shader_subgroup_shuffle") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_KHR_shader_subgroup_shuffle_relative") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_KHR_shader_subgroup_clustered") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_KHR_shader_subgroup_quad") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_EXT_buffer_reference2") == 0 || strcmp(extension, "GL_EXT_buffer_reference_uvec2") == 0) updateExtensionBehavior(line, "GL_EXT_buffer_reference", behaviorString); else if (strcmp(extension, "GL_NV_integer_cooperative_matrix") == 0) updateExtensionBehavior(line, "GL_NV_cooperative_matrix", behaviorString); else if (strcmp(extension, "GL_NV_cooperative_matrix2") == 0) updateExtensionBehavior(line, "GL_KHR_cooperative_matrix", behaviorString); // subgroup extended types to explicit types else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int8") == 0) updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int8", behaviorString); else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int16") == 0) updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int16", behaviorString); else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int64") == 0) updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int64", behaviorString); else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_float16") == 0) updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_float16", behaviorString); // see if we need to update the numeric features else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types, on); else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int8") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int8, on); else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int16") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int16, on); else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int32") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int32, on); else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int64") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int64, on); else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float16") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float16, on); else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float32") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float32, on); else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float64") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float64, on); else if (strcmp(extension, "GL_EXT_shader_implicit_conversions") == 0) intermediate.updateNumericFeature(TNumericFeatures::shader_implicit_conversions, on); else if (strcmp(extension, "GL_ARB_gpu_shader_fp64") == 0) intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_fp64, on); else if (strcmp(extension, "GL_AMD_gpu_shader_int16") == 0) intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_int16, on); else if (strcmp(extension, "GL_AMD_gpu_shader_half_float") == 0) intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_half_float, on); else if (strcmp(extension, "GL_NV_gpu_shader5") == 0) { intermediate.updateNumericFeature(TNumericFeatures::nv_gpu_shader5_types, on); } } void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior) { // Update the current behavior if (strcmp(extension, "all") == 0) { // special case for the 'all' extension; apply it to every extension present if (behavior == EBhRequire || behavior == EBhEnable) { error(getCurrentLoc(), "extension 'all' cannot have 'require' or 'enable' behavior", "#extension", ""); return; } else { for (auto iter = extensionBehavior.begin(); iter != extensionBehavior.end(); ++iter) iter->second = behavior; } } else { // Do the update for this single extension auto iter = extensionBehavior.find(TString(extension)); if (iter == extensionBehavior.end()) { switch (behavior) { case EBhRequire: error(getCurrentLoc(), "extension not supported:", "#extension", extension); break; case EBhEnable: case EBhWarn: case EBhDisable: warn(getCurrentLoc(), "extension not supported:", "#extension", extension); break; default: assert(0 && "unexpected behavior"); } return; } else { if (iter->second == EBhDisablePartial) warn(getCurrentLoc(), "extension is only partially supported:", "#extension", extension); if (behavior != EBhDisable) intermediate.addRequestedExtension(extension); iter->second = behavior; } } } // Check if extension is used with correct shader stage. void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * const extension) { // GL_NV_mesh_shader extension is only allowed in task/mesh shaders if (strcmp(extension, "GL_NV_mesh_shader") == 0) { requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask), "#extension GL_NV_mesh_shader"); profileRequires(loc, ECoreProfile, 450, nullptr, "#extension GL_NV_mesh_shader"); profileRequires(loc, EEsProfile, 320, nullptr, "#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, nullptr, "#extension GL_EXT_mesh_shader"); profileRequires(loc, EEsProfile, 320, nullptr, "#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); } } } // Check if extension has additional requirements void TParseVersions::extensionRequires(const TSourceLoc &loc, const char * const extension, const char *behaviorString) { bool isEnabled = false; if (!strcmp("require", behaviorString)) isEnabled = true; else if (!strcmp("enable", behaviorString)) isEnabled = true; if (isEnabled) { unsigned int minSpvVersion = 0; auto iter = extensionMinSpv.find(TString(extension)); if (iter != extensionMinSpv.end()) minSpvVersion = iter->second; requireSpv(loc, extension, minSpvVersion); } if (spvVersion.spv != 0){ for (auto ext : spvUnsupportedExt){ if (strcmp(extension, ext.c_str()) == 0) error(loc, "not allowed when using generating SPIR-V codes", extension, ""); } } } // Call for any operation needing full GLSL integer data-type support. void TParseVersions::fullIntegerCheck(const TSourceLoc& loc, const char* op) { profileRequires(loc, ENoProfile, 130, nullptr, op); profileRequires(loc, EEsProfile, 300, nullptr, op); } // Call for any operation needing GLSL double data-type support. void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op) { //requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); if (language == EShLangVertex) { const char* const f64_Extensions[] = {E_GL_ARB_gpu_shader_fp64, E_GL_ARB_vertex_attrib_64bit}; profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, 2, f64_Extensions, op); } else profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader_fp64, op); } // Call for any operation needing GLSL float16 data-type support. void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = { E_GL_AMD_gpu_shader_half_float, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_float16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } bool TParseVersions::float16Arithmetic() { const char* const extensions[] = { E_GL_AMD_gpu_shader_half_float, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_float16}; return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions); } bool TParseVersions::int16Arithmetic() { const char* const extensions[] = { E_GL_AMD_gpu_shader_int16, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int16}; return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions); } bool TParseVersions::int8Arithmetic() { const char* const extensions[] = { E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int8}; return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions); } void TParseVersions::requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { TString combined; combined = op; combined += ": "; combined += featureDesc; const char* const extensions[] = { E_GL_AMD_gpu_shader_half_float, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_float16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str()); } void TParseVersions::requireInt16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { TString combined; combined = op; combined += ": "; combined += featureDesc; const char* const extensions[] = { E_GL_AMD_gpu_shader_int16, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str()); } void TParseVersions::requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { TString combined; combined = op; combined += ": "; combined += featureDesc; const char* const extensions[] = { E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int8}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str()); } void TParseVersions::float16ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = { E_GL_AMD_gpu_shader_half_float, E_GL_EXT_shader_16bit_storage, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_float16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::bfloat16ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = { E_GL_EXT_bfloat16, }; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::floate5m2ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = { E_GL_EXT_float_e5m2, }; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::floate4m3ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = { E_GL_EXT_float_e4m3, }; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } // Call for any operation needing GLSL float32 data-type support. void TParseVersions::explicitFloat32Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_float32}; requireExtensions(loc, sizeof(extensions) / sizeof(extensions[0]), extensions, op); } } // Call for any operation needing GLSL float64 data-type support. void TParseVersions::explicitFloat64Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_float64}; requireExtensions(loc, sizeof(extensions) / sizeof(extensions[0]), extensions, op); requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); if(extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) && extensionTurnedOn(E_GL_NV_gpu_shader5)) profileRequires(loc, ECoreProfile | ECompatibilityProfile, 150, nullptr, op); else profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op); } } // Call for any operation needing GLSL explicit int8 data-type support. void TParseVersions::explicitInt8Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { const char* const extensions[2] = {E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_int8}; requireExtensions(loc, 2, extensions, op); } } // Call for any operation needing GLSL float16 opaque-type support void TParseVersions::float16OpaqueCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_half_float_fetch, op); requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op); } } // Call for any operation needing GLSL explicit int16 data-type support. void TParseVersions::explicitInt16Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { const char* const extensions[] = { E_GL_AMD_gpu_shader_int16, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_int16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::int16ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { const char* const extensions[] = { E_GL_AMD_gpu_shader_int16, E_GL_EXT_shader_16bit_storage, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::int8ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { const char* const extensions[] = { E_GL_EXT_shader_8bit_storage, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int8}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } // Call for any operation needing GLSL explicit int32 data-type support. void TParseVersions::explicitInt32Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { const char* const extensions[] = {E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int32}; requireExtensions(loc, sizeof(extensions) / sizeof(extensions[0]), extensions, op); } } // Call for any operation needing GLSL 64-bit integer data-type support. void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { const char* const extensions[] = {E_GL_ARB_gpu_shader_int64, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int64}; requireExtensions(loc, sizeof(extensions) / sizeof(extensions[0]), extensions, op); requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); if (extensionTurnedOn(E_GL_NV_gpu_shader5)) profileRequires(loc, ECoreProfile | ECompatibilityProfile, 150, nullptr, op); else profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op); } } void TParseVersions::fcoopmatCheckNV(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_NV_cooperative_matrix}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::intcoopmatCheckNV(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_NV_integer_cooperative_matrix}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::coopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_KHR_cooperative_matrix}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::coopmatConverisonCheckQCOM(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_KHR_cooperative_matrix}; requireExtensions(loc, sizeof(extensions) / sizeof(extensions[0]), extensions, op); } } void TParseVersions::tensorLayoutViewCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_NV_cooperative_matrix2}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::coopvecCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_NV_cooperative_vector}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::intattachmentCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_QCOM_tile_shading}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } void TParseVersions::tensorCheckARM(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_ARM_tensors}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } // Call for any operation removed because SPIR-V is in use. void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op) { if (spvVersion.spv != 0) error(loc, "not allowed when generating SPIR-V", op, ""); } // Call for any operation removed because Vulkan SPIR-V is being generated. void TParseVersions::vulkanRemoved(const TSourceLoc& loc, const char* op) { if (spvVersion.vulkan > 0 && !spvVersion.vulkanRelaxed) error(loc, "not allowed when using GLSL for Vulkan", op, ""); } // Call for any operation that requires Vulkan. void TParseVersions::requireVulkan(const TSourceLoc& loc, const char* op) { if (spvVersion.vulkan == 0) error(loc, "only allowed when using GLSL for Vulkan", op, ""); } // Call for any operation that requires SPIR-V. void TParseVersions::requireSpv(const TSourceLoc& loc, const char* op) { if (spvVersion.spv == 0) error(loc, "only allowed when generating SPIR-V", op, ""); } void TParseVersions::requireSpv(const TSourceLoc& loc, const char *op, unsigned int version) { if (spvVersion.spv < version) error(loc, "not supported for current targeted SPIR-V version", op, ""); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/Versions.h000066400000000000000000000647311506534232700224010ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017, 2022-2024 Arm Limited. // Copyright (C) 2015-2018 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // Modifications Copyright (C) 2024 Valve Corporation. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _VERSIONS_INCLUDED_ #define _VERSIONS_INCLUDED_ #define LAST_ELEMENT_MARKER(x) x // // Help manage multiple profiles, versions, extensions etc. // // // Profiles are set up for masking operations, so queries can be done on multiple // profiles at the same time. // // Don't maintain an ordinal set of enums (0,1,2,3...) to avoid all possible // defects from mixing the two different forms. // typedef enum : unsigned { EBadProfile = 0, ENoProfile = (1 << 0), // only for desktop, before profiles showed up ECoreProfile = (1 << 1), ECompatibilityProfile = (1 << 2), EEsProfile = (1 << 3), LAST_ELEMENT_MARKER(EProfileCount), } EProfile; namespace glslang { // // Map from profile enum to externally readable text name. // inline const char* ProfileName(EProfile profile) { switch (profile) { case ENoProfile: return "none"; case ECoreProfile: return "core"; case ECompatibilityProfile: return "compatibility"; case EEsProfile: return "es"; default: return "unknown profile"; } } // // What source rules, validation rules, target language, etc. are needed or // desired for SPIR-V? // // 0 means a target or rule set is not enabled (ignore rules from that entity). // Non-0 means to apply semantic rules arising from that version of its rule set. // The union of all requested rule sets will be applied. // struct SpvVersion { SpvVersion() : spv(0), vulkanGlsl(0), vulkan(0), openGl(0), vulkanRelaxed(false) {} unsigned int spv; // the version of SPIR-V to target, as defined by "word 1" of the SPIR-V binary header int vulkanGlsl; // the version of GLSL semantics for Vulkan, from GL_KHR_vulkan_glsl, for "#define VULKAN XXX" int vulkan; // the version of Vulkan, for which SPIR-V execution environment rules to use int openGl; // the version of GLSL semantics for OpenGL, from GL_ARB_gl_spirv, for "#define GL_SPIRV XXX" bool vulkanRelaxed; // relax changes to GLSL for Vulkan, allowing some GL-specific to be compiled to Vulkan SPIR-V target }; // // The behaviors from the GLSL "#extension extension_name : behavior" // typedef enum { EBhMissing = 0, EBhRequire, EBhEnable, EBhWarn, EBhDisable, EBhDisablePartial // use as initial state of an extension that is only partially implemented } TExtensionBehavior; // // Symbolic names for extensions. Strings may be directly used when calling the // functions, but better to have the compiler do spelling checks. // const char* const E_GL_OES_texture_3D = "GL_OES_texture_3D"; const char* const E_GL_OES_standard_derivatives = "GL_OES_standard_derivatives"; const char* const E_GL_EXT_frag_depth = "GL_EXT_frag_depth"; const char* const E_GL_OES_EGL_image_external = "GL_OES_EGL_image_external"; const char* const E_GL_OES_EGL_image_external_essl3 = "GL_OES_EGL_image_external_essl3"; const char* const E_GL_EXT_YUV_target = "GL_EXT_YUV_target"; const char* const E_GL_EXT_shader_texture_lod = "GL_EXT_shader_texture_lod"; const char* const E_GL_EXT_shadow_samplers = "GL_EXT_shadow_samplers"; const char* const E_GL_ARB_texture_rectangle = "GL_ARB_texture_rectangle"; const char* const E_GL_3DL_array_objects = "GL_3DL_array_objects"; const char* const E_GL_ARB_shading_language_420pack = "GL_ARB_shading_language_420pack"; const char* const E_GL_ARB_texture_gather = "GL_ARB_texture_gather"; const char* const E_GL_ARB_gpu_shader5 = "GL_ARB_gpu_shader5"; const char* const E_GL_ARB_separate_shader_objects = "GL_ARB_separate_shader_objects"; const char* const E_GL_ARB_compute_shader = "GL_ARB_compute_shader"; const char* const E_GL_ARB_tessellation_shader = "GL_ARB_tessellation_shader"; const char* const E_GL_ARB_enhanced_layouts = "GL_ARB_enhanced_layouts"; const char* const E_GL_ARB_texture_cube_map_array = "GL_ARB_texture_cube_map_array"; const char* const E_GL_ARB_texture_multisample = "GL_ARB_texture_multisample"; const char* const E_GL_ARB_shader_texture_lod = "GL_ARB_shader_texture_lod"; const char* const E_GL_ARB_explicit_attrib_location = "GL_ARB_explicit_attrib_location"; const char* const E_GL_ARB_explicit_uniform_location = "GL_ARB_explicit_uniform_location"; const char* const E_GL_ARB_shader_image_load_store = "GL_ARB_shader_image_load_store"; const char* const E_GL_ARB_shader_atomic_counters = "GL_ARB_shader_atomic_counters"; const char* const E_GL_ARB_shader_atomic_counter_ops = "GL_ARB_shader_atomic_counter_ops"; const char* const E_GL_ARB_shader_draw_parameters = "GL_ARB_shader_draw_parameters"; const char* const E_GL_ARB_shader_group_vote = "GL_ARB_shader_group_vote"; const char* const E_GL_ARB_derivative_control = "GL_ARB_derivative_control"; const char* const E_GL_ARB_shader_texture_image_samples = "GL_ARB_shader_texture_image_samples"; const char* const E_GL_ARB_viewport_array = "GL_ARB_viewport_array"; const char* const E_GL_ARB_gpu_shader_int64 = "GL_ARB_gpu_shader_int64"; const char* const E_GL_ARB_gpu_shader_fp64 = "GL_ARB_gpu_shader_fp64"; const char* const E_GL_ARB_shader_ballot = "GL_ARB_shader_ballot"; const char* const E_GL_ARB_sparse_texture2 = "GL_ARB_sparse_texture2"; const char* const E_GL_ARB_sparse_texture_clamp = "GL_ARB_sparse_texture_clamp"; const char* const E_GL_ARB_shader_stencil_export = "GL_ARB_shader_stencil_export"; // const char* const E_GL_ARB_cull_distance = "GL_ARB_cull_distance"; // present for 4.5, but need extension control over block members const char* const E_GL_ARB_post_depth_coverage = "GL_ARB_post_depth_coverage"; const char* const E_GL_ARB_shader_viewport_layer_array = "GL_ARB_shader_viewport_layer_array"; const char* const E_GL_ARB_fragment_shader_interlock = "GL_ARB_fragment_shader_interlock"; const char* const E_GL_ARB_shader_clock = "GL_ARB_shader_clock"; const char* const E_GL_ARB_uniform_buffer_object = "GL_ARB_uniform_buffer_object"; const char* const E_GL_ARB_sample_shading = "GL_ARB_sample_shading"; const char* const E_GL_ARB_shader_bit_encoding = "GL_ARB_shader_bit_encoding"; const char* const E_GL_ARB_shader_image_size = "GL_ARB_shader_image_size"; const char* const E_GL_ARB_shader_storage_buffer_object = "GL_ARB_shader_storage_buffer_object"; const char* const E_GL_ARB_shading_language_packing = "GL_ARB_shading_language_packing"; const char* const E_GL_ARB_texture_query_lod = "GL_ARB_texture_query_lod"; const char* const E_GL_ARB_vertex_attrib_64bit = "GL_ARB_vertex_attrib_64bit"; const char* const E_GL_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_ARB_bindless_texture = "GL_ARB_bindless_texture"; 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"; const char* const E_GL_KHR_shader_subgroup_arithmetic = "GL_KHR_shader_subgroup_arithmetic"; const char* const E_GL_KHR_shader_subgroup_ballot = "GL_KHR_shader_subgroup_ballot"; const char* const E_GL_KHR_shader_subgroup_shuffle = "GL_KHR_shader_subgroup_shuffle"; const char* const E_GL_KHR_shader_subgroup_shuffle_relative = "GL_KHR_shader_subgroup_shuffle_relative"; const char* const E_GL_KHR_shader_subgroup_rotate = "GL_KHR_shader_subgroup_rotate"; const char* const E_GL_KHR_shader_subgroup_clustered = "GL_KHR_shader_subgroup_clustered"; const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_subgroup_quad"; const char* const E_GL_KHR_memory_scope_semantics = "GL_KHR_memory_scope_semantics"; const char* const E_GL_KHR_cooperative_matrix = "GL_KHR_cooperative_matrix"; const char* const E_GL_EXT_shader_atomic_int64 = "GL_EXT_shader_atomic_int64"; const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_shader_non_constant_global_initializers"; const char* const E_GL_EXT_shader_image_load_formatted = "GL_EXT_shader_image_load_formatted"; const char* const E_GL_EXT_shader_16bit_storage = "GL_EXT_shader_16bit_storage"; const char* const E_GL_EXT_shader_8bit_storage = "GL_EXT_shader_8bit_storage"; // EXT extensions const char* const E_GL_EXT_device_group = "GL_EXT_device_group"; const char* const E_GL_EXT_multiview = "GL_EXT_multiview"; const char* const E_GL_EXT_post_depth_coverage = "GL_EXT_post_depth_coverage"; const char* const E_GL_EXT_control_flow_attributes = "GL_EXT_control_flow_attributes"; const char* const E_GL_EXT_nonuniform_qualifier = "GL_EXT_nonuniform_qualifier"; const char* const E_GL_EXT_samplerless_texture_functions = "GL_EXT_samplerless_texture_functions"; const char* const E_GL_EXT_scalar_block_layout = "GL_EXT_scalar_block_layout"; const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_invocation_density"; const char* const E_GL_EXT_buffer_reference = "GL_EXT_buffer_reference"; const char* const E_GL_EXT_buffer_reference2 = "GL_EXT_buffer_reference2"; const char* const E_GL_EXT_buffer_reference_uvec2 = "GL_EXT_buffer_reference_uvec2"; const char* const E_GL_EXT_demote_to_helper_invocation = "GL_EXT_demote_to_helper_invocation"; const char* const E_GL_EXT_shader_realtime_clock = "GL_EXT_shader_realtime_clock"; const char* const E_GL_EXT_debug_printf = "GL_EXT_debug_printf"; const char* const E_GL_EXT_ray_tracing = "GL_EXT_ray_tracing"; const char* const E_GL_EXT_ray_query = "GL_EXT_ray_query"; const char* const E_GL_EXT_ray_flags_primitive_culling = "GL_EXT_ray_flags_primitive_culling"; const char* const E_GL_EXT_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"; const char* const E_GL_EXT_shader_image_int64 = "GL_EXT_shader_image_int64"; const char* const E_GL_EXT_null_initializer = "GL_EXT_null_initializer"; 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"; const char* const E_GL_EXT_shader_quad_control = "GL_EXT_shader_quad_control"; const char* const E_GL_EXT_draw_instanced = "GL_EXT_draw_instanced"; const char* const E_GL_EXT_texture_array = "GL_EXT_texture_array"; const char* const E_GL_EXT_maximal_reconvergence = "GL_EXT_maximal_reconvergence"; const char* const E_GL_EXT_expect_assume = "GL_EXT_expect_assume"; const char* const E_GL_EXT_control_flow_attributes2 = "GL_EXT_control_flow_attributes2"; const char* const E_GL_EXT_spec_constant_composites = "GL_EXT_spec_constant_composites"; const char* const E_GL_EXT_texture_offset_non_const = "GL_EXT_texture_offset_non_const"; const char* const E_GL_EXT_nontemporal_keyword = "GL_EXT_nontemporal_keyword"; // 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"; const char* const OVR_multiview_EXTs[] = { E_GL_OVR_multiview, E_GL_OVR_multiview2 }; const int Num_OVR_multiview_EXTs = sizeof(OVR_multiview_EXTs) / sizeof(OVR_multiview_EXTs[0]); // #line and #include const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive"; const char* const E_GL_GOOGLE_include_directive = "GL_GOOGLE_include_directive"; const char* const E_GL_ARB_shading_language_include = "GL_ARB_shading_language_include"; const char* const E_GL_AMD_shader_ballot = "GL_AMD_shader_ballot"; const char* const E_GL_AMD_shader_trinary_minmax = "GL_AMD_shader_trinary_minmax"; const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter"; const char* const E_GL_AMD_gcn_shader = "GL_AMD_gcn_shader"; const char* const E_GL_AMD_gpu_shader_half_float = "GL_AMD_gpu_shader_half_float"; const char* const E_GL_AMD_texture_gather_bias_lod = "GL_AMD_texture_gather_bias_lod"; const char* const E_GL_AMD_gpu_shader_int16 = "GL_AMD_gpu_shader_int16"; 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"; const char* const E_GL_NV_sample_mask_override_coverage = "GL_NV_sample_mask_override_coverage"; const char* const E_SPV_NV_geometry_shader_passthrough = "GL_NV_geometry_shader_passthrough"; const char* const E_GL_NV_viewport_array2 = "GL_NV_viewport_array2"; const char* const E_GL_NV_stereo_view_rendering = "GL_NV_stereo_view_rendering"; const char* const E_GL_NVX_multiview_per_view_attributes = "GL_NVX_multiview_per_view_attributes"; const char* const E_GL_NV_shader_atomic_int64 = "GL_NV_shader_atomic_int64"; const char* const E_GL_NV_conservative_raster_underestimation = "GL_NV_conservative_raster_underestimation"; const char* const E_GL_NV_shader_noperspective_interpolation = "GL_NV_shader_noperspective_interpolation"; const char* const E_GL_NV_shader_subgroup_partitioned = "GL_NV_shader_subgroup_partitioned"; const char* const E_GL_NV_shading_rate_image = "GL_NV_shading_rate_image"; const char* const E_GL_NV_ray_tracing = "GL_NV_ray_tracing"; const char* const E_GL_NV_ray_tracing_motion_blur = "GL_NV_ray_tracing_motion_blur"; const char* const E_GL_NV_fragment_shader_barycentric = "GL_NV_fragment_shader_barycentric"; const char* const E_GL_NV_compute_shader_derivatives = "GL_NV_compute_shader_derivatives"; const char* const E_GL_NV_shader_texture_footprint = "GL_NV_shader_texture_footprint"; const char* const E_GL_NV_mesh_shader = "GL_NV_mesh_shader"; const char* const E_GL_NV_cooperative_matrix = "GL_NV_cooperative_matrix"; const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_sm_builtins"; const char* const E_GL_NV_integer_cooperative_matrix = "GL_NV_integer_cooperative_matrix"; const char* const E_GL_NV_shader_invocation_reorder = "GL_NV_shader_invocation_reorder"; const char* const E_GL_EXT_ray_tracing_position_fetch = "GL_EXT_ray_tracing_position_fetch"; const char* const E_GL_NV_displacement_micromap = "GL_NV_displacement_micromap"; const char* const E_GL_NV_shader_atomic_fp16_vector = "GL_NV_shader_atomic_fp16_vector"; const char* const E_GL_NV_cooperative_matrix2 = "GL_NV_cooperative_matrix2"; const char* const E_GL_NV_cooperative_vector = "GL_NV_cooperative_vector"; const char* const E_GL_NV_cluster_acceleration_structure = "GL_NV_cluster_acceleration_structure"; const char* const E_GL_NV_linear_swept_spheres = "GL_NV_linear_swept_spheres"; const char* const E_GL_NV_gpu_shader5 = "GL_NV_gpu_shader5"; // ARM const char* const E_GL_ARM_shader_core_builtins = "GL_ARM_shader_core_builtins"; const char* const E_GL_ARM_tensors = "GL_ARM_tensors"; // Arrays of extensions for the above viewportEXTs duplications const char* const viewportEXTs[] = { E_GL_ARB_shader_viewport_layer_array, E_GL_NV_viewport_array2 }; const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]); const char* const E_GL_QCOM_image_processing = "GL_QCOM_image_processing"; const char* const E_GL_QCOM_image_processing2 = "GL_QCOM_image_processing2"; const char* const E_GL_QCOM_tile_shading = "GL_QCOM_tile_shading"; const char* const E_GL_QCOM_cooperative_matrix_conversion = "GL_QCOM_cooperative_matrix_conversion"; // AEP const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a"; const char* const E_GL_KHR_blend_equation_advanced = "GL_KHR_blend_equation_advanced"; const char* const E_GL_OES_sample_variables = "GL_OES_sample_variables"; const char* const E_GL_OES_shader_image_atomic = "GL_OES_shader_image_atomic"; const char* const E_GL_OES_shader_multisample_interpolation = "GL_OES_shader_multisample_interpolation"; const char* const E_GL_OES_texture_storage_multisample_2d_array = "GL_OES_texture_storage_multisample_2d_array"; const char* const E_GL_EXT_geometry_shader = "GL_EXT_geometry_shader"; const char* const E_GL_EXT_geometry_point_size = "GL_EXT_geometry_point_size"; const char* const E_GL_EXT_gpu_shader5 = "GL_EXT_gpu_shader5"; const char* const E_GL_EXT_primitive_bounding_box = "GL_EXT_primitive_bounding_box"; const char* const E_GL_EXT_shader_io_blocks = "GL_EXT_shader_io_blocks"; const char* const E_GL_EXT_tessellation_shader = "GL_EXT_tessellation_shader"; const char* const E_GL_EXT_tessellation_point_size = "GL_EXT_tessellation_point_size"; const char* const E_GL_EXT_texture_buffer = "GL_EXT_texture_buffer"; const char* const E_GL_EXT_texture_cube_map_array = "GL_EXT_texture_cube_map_array"; const char* const E_GL_EXT_shader_integer_mix = "GL_EXT_shader_integer_mix"; // OES matching AEP const char* const E_GL_OES_geometry_shader = "GL_OES_geometry_shader"; const char* const E_GL_OES_geometry_point_size = "GL_OES_geometry_point_size"; const char* const E_GL_OES_gpu_shader5 = "GL_OES_gpu_shader5"; const char* const E_GL_OES_primitive_bounding_box = "GL_OES_primitive_bounding_box"; const char* const E_GL_OES_shader_io_blocks = "GL_OES_shader_io_blocks"; const char* const E_GL_OES_tessellation_shader = "GL_OES_tessellation_shader"; const char* const E_GL_OES_tessellation_point_size = "GL_OES_tessellation_point_size"; const char* const E_GL_OES_texture_buffer = "GL_OES_texture_buffer"; const char* const E_GL_OES_texture_cube_map_array = "GL_OES_texture_cube_map_array"; // EXT const char* const E_GL_EXT_shader_explicit_arithmetic_types = "GL_EXT_shader_explicit_arithmetic_types"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int8 = "GL_EXT_shader_explicit_arithmetic_types_int8"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int16 = "GL_EXT_shader_explicit_arithmetic_types_int16"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int32 = "GL_EXT_shader_explicit_arithmetic_types_int32"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int64 = "GL_EXT_shader_explicit_arithmetic_types_int64"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_float16 = "GL_EXT_shader_explicit_arithmetic_types_float16"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_float32 = "GL_EXT_shader_explicit_arithmetic_types_float32"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_float64 = "GL_EXT_shader_explicit_arithmetic_types_float64"; const char* const E_GL_EXT_shader_subgroup_extended_types_int8 = "GL_EXT_shader_subgroup_extended_types_int8"; const char* const E_GL_EXT_shader_subgroup_extended_types_int16 = "GL_EXT_shader_subgroup_extended_types_int16"; const char* const E_GL_EXT_shader_subgroup_extended_types_int64 = "GL_EXT_shader_subgroup_extended_types_int64"; const char* const E_GL_EXT_shader_subgroup_extended_types_float16 = "GL_EXT_shader_subgroup_extended_types_float16"; const char* const E_GL_EXT_terminate_invocation = "GL_EXT_terminate_invocation"; const char* const E_GL_EXT_shader_atomic_float = "GL_EXT_shader_atomic_float"; const char* const E_GL_EXT_shader_atomic_float2 = "GL_EXT_shader_atomic_float2"; const char* const E_GL_EXT_shader_tile_image = "GL_EXT_shader_tile_image"; const char* const E_GL_EXT_texture_shadow_lod = "GL_EXT_texture_shadow_lod"; const char* const E_GL_EXT_integer_dot_product = "GL_EXT_integer_dot_product"; const char* const E_GL_EXT_bfloat16 = "GL_EXT_bfloat16"; const char* const E_GL_EXT_float_e5m2 = "GL_EXT_float_e5m2"; const char* const E_GL_EXT_float_e4m3 = "GL_EXT_float_e4m3"; // Arrays of extensions for the above AEP duplications const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader }; const int Num_AEP_geometry_shader = sizeof(AEP_geometry_shader)/sizeof(AEP_geometry_shader[0]); const char* const AEP_geometry_point_size[] = { E_GL_EXT_geometry_point_size, E_GL_OES_geometry_point_size }; const int Num_AEP_geometry_point_size = sizeof(AEP_geometry_point_size)/sizeof(AEP_geometry_point_size[0]); const char* const AEP_gpu_shader5[] = { E_GL_EXT_gpu_shader5, E_GL_OES_gpu_shader5 }; const int Num_AEP_gpu_shader5 = sizeof(AEP_gpu_shader5)/sizeof(AEP_gpu_shader5[0]); const char* const AEP_core_gpu_shader5[] = { E_GL_ARB_gpu_shader5, E_GL_NV_gpu_shader5}; const int Num_AEP_core_gpu_shader5 = sizeof(AEP_core_gpu_shader5)/sizeof(AEP_core_gpu_shader5[0]); const char* const AEP_primitive_bounding_box[] = { E_GL_EXT_primitive_bounding_box, E_GL_OES_primitive_bounding_box }; const int Num_AEP_primitive_bounding_box = sizeof(AEP_primitive_bounding_box)/sizeof(AEP_primitive_bounding_box[0]); const char* const AEP_shader_io_blocks[] = { E_GL_EXT_shader_io_blocks, E_GL_OES_shader_io_blocks }; const int Num_AEP_shader_io_blocks = sizeof(AEP_shader_io_blocks)/sizeof(AEP_shader_io_blocks[0]); const char* const AEP_tessellation_shader[] = { E_GL_EXT_tessellation_shader, E_GL_OES_tessellation_shader }; const int Num_AEP_tessellation_shader = sizeof(AEP_tessellation_shader)/sizeof(AEP_tessellation_shader[0]); const char* const AEP_tessellation_point_size[] = { E_GL_EXT_tessellation_point_size, E_GL_OES_tessellation_point_size }; const int Num_AEP_tessellation_point_size = sizeof(AEP_tessellation_point_size)/sizeof(AEP_tessellation_point_size[0]); const char* const AEP_texture_buffer[] = { E_GL_EXT_texture_buffer, E_GL_OES_texture_buffer }; const int Num_AEP_texture_buffer = sizeof(AEP_texture_buffer)/sizeof(AEP_texture_buffer[0]); 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_ glslang-16.0.0/glslang/MachineIndependent/attribute.cpp000066400000000000000000000306061506534232700231210ustar00rootroot00000000000000// // Copyright (C) 2017 LunarG, Inc. // Copyright (C) 2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "attribute.h" #include "../Include/intermediate.h" #include "ParseHelper.h" namespace glslang { // extract integers out of attribute arguments stored in attribute aggregate bool TAttributeArgs::getInt(int& value, int argNum) const { const TConstUnion* intConst = getConstUnion(EbtInt, argNum); if (intConst == nullptr) return false; value = intConst->getIConst(); return true; } // extract strings out of attribute arguments stored in attribute aggregate. // convert to lower case if converToLower is true (for case-insensitive compare convenience) bool TAttributeArgs::getString(TString& value, int argNum, bool convertToLower) const { const TConstUnion* stringConst = getConstUnion(EbtString, argNum); if (stringConst == nullptr) return false; value = *stringConst->getSConst(); // Convenience. if (convertToLower) std::transform(value.begin(), value.end(), value.begin(), ::tolower); return true; } // How many arguments were supplied? int TAttributeArgs::size() const { return args == nullptr ? 0 : (int)args->getSequence().size(); } // Helper to get attribute const union. Returns nullptr on failure. const TConstUnion* TAttributeArgs::getConstUnion(TBasicType basicType, int argNum) const { if (args == nullptr) return nullptr; if (argNum >= (int)args->getSequence().size()) return nullptr; if (args->getSequence()[argNum]->getAsConstantUnion() == nullptr) return nullptr; const TConstUnion* constVal = &args->getSequence()[argNum]->getAsConstantUnion()->getConstArray()[0]; if (constVal == nullptr || constVal->getType() != basicType) return nullptr; return constVal; } // Implementation of TParseContext parts of attributes TAttributeType TParseContext::attributeFromName(const TString& name) const { if (name == "branch" || name == "dont_flatten") return EatBranch; else if (name == "flatten") return EatFlatten; else if (name == "unroll") return EatUnroll; else if (name == "loop" || name == "dont_unroll") return EatLoop; else if (name == "dependency_infinite") return EatDependencyInfinite; else if (name == "dependency_length") return EatDependencyLength; else if (name == "min_iterations") return EatMinIterations; else if (name == "max_iterations") return EatMaxIterations; else if (name == "iteration_multiple") return EatIterationMultiple; else if (name == "peel_count") return EatPeelCount; else if (name == "partial_count") return EatPartialCount; else if (name == "subgroup_uniform_control_flow") return EatSubgroupUniformControlFlow; else if (name == "export") return EatExport; else if (name == "maximally_reconverges") return EatMaximallyReconverges; else return EatNone; } // Make an initial leaf for the grammar from a no-argument attribute TAttributes* TParseContext::makeAttributes(const TString& identifier) const { TAttributes *attributes = nullptr; attributes = NewPoolObject(attributes); TAttributeArgs args = { attributeFromName(identifier), nullptr }; attributes->push_back(args); return attributes; } // Make an initial leaf for the grammar from a one-argument attribute TAttributes* TParseContext::makeAttributes(const TString& identifier, TIntermNode* node) const { TAttributes *attributes = nullptr; attributes = NewPoolObject(attributes); // for now, node is always a simple single expression, but other code expects // a list, so make it so TIntermAggregate* agg = intermediate.makeAggregate(node); TAttributeArgs args = { attributeFromName(identifier), agg }; attributes->push_back(args); return attributes; } // Merge two sets of attributes into a single set. // The second argument is destructively consumed. TAttributes* TParseContext::mergeAttributes(TAttributes* attr1, TAttributes* attr2) const { attr1->splice(attr1->end(), *attr2); return attr1; } // // Selection attributes // void TParseContext::handleSelectionAttributes(const TAttributes& attributes, TIntermNode* node) { TIntermSelection* selection = node->getAsSelectionNode(); if (selection == nullptr) return; for (auto it = attributes.begin(); it != attributes.end(); ++it) { if (it->size() > 0) { warn(node->getLoc(), "attribute with arguments not recognized, skipping", "", ""); continue; } switch (it->name) { case EatFlatten: selection->setFlatten(); break; case EatBranch: selection->setDontFlatten(); break; default: warn(node->getLoc(), "attribute does not apply to a selection", "", ""); break; } } } // // Switch attributes // void TParseContext::handleSwitchAttributes(const TAttributes& attributes, TIntermNode* node) { TIntermSwitch* selection = node->getAsSwitchNode(); if (selection == nullptr) return; for (auto it = attributes.begin(); it != attributes.end(); ++it) { if (it->size() > 0) { warn(node->getLoc(), "attribute with arguments not recognized, skipping", "", ""); continue; } switch (it->name) { case EatFlatten: selection->setFlatten(); break; case EatBranch: selection->setDontFlatten(); break; default: warn(node->getLoc(), "attribute does not apply to a switch", "", ""); break; } } } // // Loop attributes // void TParseContext::handleLoopAttributes(const TAttributes& attributes, TIntermNode* node) { TIntermLoop* loop = node->getAsLoopNode(); if (loop == nullptr) { // the actual loop might be part of a sequence TIntermAggregate* agg = node->getAsAggregate(); if (agg == nullptr) return; for (auto it = agg->getSequence().begin(); it != agg->getSequence().end(); ++it) { loop = (*it)->getAsLoopNode(); if (loop != nullptr) break; } if (loop == nullptr) return; } for (auto it = attributes.begin(); it != attributes.end(); ++it) { const auto noArgument = [&](const char* feature) { if (it->size() > 0) { warn(node->getLoc(), "expected no arguments", feature, ""); return false; } return true; }; const auto positiveSignedArgument = [&](const char* feature, int& value) { if (it->size() == 1 && it->getInt(value)) { if (value <= 0) { error(node->getLoc(), "must be positive", feature, ""); return false; } } else { warn(node->getLoc(), "expected a single integer argument", feature, ""); return false; } return true; }; const auto unsignedArgument = [&](const char* feature, unsigned int& uiValue) { int value; if (!(it->size() == 1 && it->getInt(value))) { warn(node->getLoc(), "expected a single integer argument", feature, ""); return false; } uiValue = (unsigned int)value; return true; }; const auto positiveUnsignedArgument = [&](const char* feature, unsigned int& uiValue) { int value; if (it->size() == 1 && it->getInt(value)) { if (value == 0) { error(node->getLoc(), "must be greater than or equal to 1", feature, ""); return false; } } else { warn(node->getLoc(), "expected a single integer argument", feature, ""); return false; } uiValue = (unsigned int)value; return true; }; const auto spirv14 = [&](const char* feature) { if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) warn(node->getLoc(), "attribute requires a SPIR-V 1.4 target-env", feature, ""); }; int value = 0; unsigned uiValue = 0; switch (it->name) { case EatUnroll: if (noArgument("unroll")) loop->setUnroll(); break; case EatLoop: if (noArgument("dont_unroll")) loop->setDontUnroll(); break; case EatDependencyInfinite: if (noArgument("dependency_infinite")) loop->setLoopDependency(TIntermLoop::dependencyInfinite); break; case EatDependencyLength: if (positiveSignedArgument("dependency_length", value)) loop->setLoopDependency(value); break; case EatMinIterations: spirv14("min_iterations"); if (unsignedArgument("min_iterations", uiValue)) loop->setMinIterations(uiValue); break; case EatMaxIterations: spirv14("max_iterations"); if (unsignedArgument("max_iterations", uiValue)) loop->setMaxIterations(uiValue); break; case EatIterationMultiple: spirv14("iteration_multiple"); if (positiveUnsignedArgument("iteration_multiple", uiValue)) loop->setIterationMultiple(uiValue); break; case EatPeelCount: spirv14("peel_count"); if (unsignedArgument("peel_count", uiValue)) loop->setPeelCount(uiValue); break; case EatPartialCount: spirv14("partial_count"); if (unsignedArgument("partial_count", uiValue)) loop->setPartialCount(uiValue); break; default: warn(node->getLoc(), "attribute does not apply to a loop", "", ""); break; } } } // // Function attributes // void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttributes& attributes) { for (auto it = attributes.begin(); it != attributes.end(); ++it) { if (it->size() > 0) { warn(loc, "attribute with arguments not recognized, skipping", "", ""); continue; } switch (it->name) { case EatSubgroupUniformControlFlow: requireExtensions(loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); intermediate.setSubgroupUniformControlFlow(); break; case EatMaximallyReconverges: requireExtensions(loc, 1, &E_GL_EXT_maximal_reconvergence, "attribute"); intermediate.setMaximallyReconverges(); break; default: warn(loc, "attribute does not apply to a function", "", ""); break; } } } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/attribute.h000066400000000000000000000107121506534232700225620ustar00rootroot00000000000000// // Copyright (C) 2017 LunarG, Inc. // Copyright (C) 2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _ATTRIBUTE_INCLUDED_ #define _ATTRIBUTE_INCLUDED_ #include "../Include/Common.h" #include "../Include/ConstantUnion.h" namespace glslang { enum TAttributeType { EatNone, EatAllow_uav_condition, EatBranch, EatCall, EatDomain, EatEarlyDepthStencil, EatFastOpt, EatFlatten, EatForceCase, EatInstance, EatMaxTessFactor, EatNumThreads, EatMaxVertexCount, EatOutputControlPoints, EatOutputTopology, EatPartitioning, EatPatchConstantFunc, EatPatchSize, EatUnroll, EatLoop, EatBinding, EatGlobalBinding, EatLocation, EatInputAttachment, EatBuiltIn, EatPushConstant, EatConstantId, EatDependencyInfinite, EatDependencyLength, EatMinIterations, EatMaxIterations, EatIterationMultiple, EatPeelCount, EatPartialCount, EatFormatRgba32f, EatFormatRgba16f, EatFormatR32f, EatFormatRgba8, EatFormatRgba8Snorm, EatFormatRg32f, EatFormatRg16f, EatFormatR11fG11fB10f, EatFormatR16f, EatFormatRgba16, EatFormatRgb10A2, EatFormatRg16, EatFormatRg8, EatFormatR16, EatFormatR8, EatFormatRgba16Snorm, EatFormatRg16Snorm, EatFormatRg8Snorm, EatFormatR16Snorm, EatFormatR8Snorm, EatFormatRgba32i, EatFormatRgba16i, EatFormatRgba8i, EatFormatR32i, EatFormatRg32i, EatFormatRg16i, EatFormatRg8i, EatFormatR16i, EatFormatR8i, EatFormatRgba32ui, EatFormatRgba16ui, EatFormatRgba8ui, EatFormatR32ui, EatFormatRgb10a2ui, EatFormatRg32ui, EatFormatRg16ui, EatFormatRg8ui, EatFormatR16ui, EatFormatR8ui, EatFormatUnknown, EatNonWritable, EatNonReadable, EatSubgroupUniformControlFlow, EatExport, EatMaximallyReconverges, }; class TIntermAggregate; struct TAttributeArgs { TAttributeType name; const TIntermAggregate* args; // Obtain attribute as integer // Return false if it cannot be obtained bool getInt(int& value, int argNum = 0) const; // Obtain attribute as string, with optional to-lower transform // Return false if it cannot be obtained bool getString(TString& value, int argNum = 0, bool convertToLower = true) const; // How many arguments were provided to the attribute? int size() const; protected: const TConstUnion* getConstUnion(TBasicType basicType, int argNum) const; }; typedef TList TAttributes; } // end namespace glslang #endif // _ATTRIBUTE_INCLUDED_ glslang-16.0.0/glslang/MachineIndependent/gl_types.h000066400000000000000000000236731506534232700224170ustar00rootroot00000000000000/* ** Copyright (c) 2013 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. ** ** 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. */ #pragma once #define GL_FLOAT 0x1406 #define GL_FLOAT_VEC2 0x8B50 #define GL_FLOAT_VEC3 0x8B51 #define GL_FLOAT_VEC4 0x8B52 #define GL_DOUBLE 0x140A #define GL_DOUBLE_VEC2 0x8FFC #define GL_DOUBLE_VEC3 0x8FFD #define GL_DOUBLE_VEC4 0x8FFE #define GL_INT 0x1404 #define GL_INT_VEC2 0x8B53 #define GL_INT_VEC3 0x8B54 #define GL_INT_VEC4 0x8B55 #define GL_UNSIGNED_INT 0x1405 #define GL_UNSIGNED_INT_VEC2 0x8DC6 #define GL_UNSIGNED_INT_VEC3 0x8DC7 #define GL_UNSIGNED_INT_VEC4 0x8DC8 #define GL_INT64_ARB 0x140E #define GL_INT64_VEC2_ARB 0x8FE9 #define GL_INT64_VEC3_ARB 0x8FEA #define GL_INT64_VEC4_ARB 0x8FEB #define GL_UNSIGNED_INT64_ARB 0x140F #define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 #define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 #define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 #define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 #define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 #define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 #define GL_INT16_NV 0x8FE4 #define GL_INT16_VEC2_NV 0x8FE5 #define GL_INT16_VEC3_NV 0x8FE6 #define GL_INT16_VEC4_NV 0x8FE7 #define GL_BOOL 0x8B56 #define GL_BOOL_VEC2 0x8B57 #define GL_BOOL_VEC3 0x8B58 #define GL_BOOL_VEC4 0x8B59 #define GL_FLOAT_MAT2 0x8B5A #define GL_FLOAT_MAT3 0x8B5B #define GL_FLOAT_MAT4 0x8B5C #define GL_FLOAT_MAT2x3 0x8B65 #define GL_FLOAT_MAT2x4 0x8B66 #define GL_FLOAT_MAT3x2 0x8B67 #define GL_FLOAT_MAT3x4 0x8B68 #define GL_FLOAT_MAT4x2 0x8B69 #define GL_FLOAT_MAT4x3 0x8B6A #define GL_DOUBLE_MAT2 0x8F46 #define GL_DOUBLE_MAT3 0x8F47 #define GL_DOUBLE_MAT4 0x8F48 #define GL_DOUBLE_MAT2x3 0x8F49 #define GL_DOUBLE_MAT2x4 0x8F4A #define GL_DOUBLE_MAT3x2 0x8F4B #define GL_DOUBLE_MAT3x4 0x8F4C #define GL_DOUBLE_MAT4x2 0x8F4D #define GL_DOUBLE_MAT4x3 0x8F4E // Those constants are borrowed from extension NV_gpu_shader5 #define GL_FLOAT16_NV 0x8FF8 #define GL_FLOAT16_VEC2_NV 0x8FF9 #define GL_FLOAT16_VEC3_NV 0x8FFA #define GL_FLOAT16_VEC4_NV 0x8FFB #define GL_FLOAT16_MAT2_AMD 0x91C5 #define GL_FLOAT16_MAT3_AMD 0x91C6 #define GL_FLOAT16_MAT4_AMD 0x91C7 #define GL_FLOAT16_MAT2x3_AMD 0x91C8 #define GL_FLOAT16_MAT2x4_AMD 0x91C9 #define GL_FLOAT16_MAT3x2_AMD 0x91CA #define GL_FLOAT16_MAT3x4_AMD 0x91CB #define GL_FLOAT16_MAT4x2_AMD 0x91CC #define GL_FLOAT16_MAT4x3_AMD 0x91CD #define GL_SAMPLER_1D 0x8B5D #define GL_SAMPLER_2D 0x8B5E #define GL_SAMPLER_3D 0x8B5F #define GL_SAMPLER_CUBE 0x8B60 #define GL_SAMPLER_BUFFER 0x8DC2 #define GL_SAMPLER_1D_ARRAY 0x8DC0 #define GL_SAMPLER_2D_ARRAY 0x8DC1 #define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 #define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 #define GL_SAMPLER_CUBE_SHADOW 0x8DC5 #define GL_SAMPLER_1D_SHADOW 0x8B61 #define GL_SAMPLER_2D_SHADOW 0x8B62 #define GL_SAMPLER_2D_RECT 0x8B63 #define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 #define GL_SAMPLER_2D_MULTISAMPLE 0x9108 #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B #define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D #define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D #define GL_FLOAT16_SAMPLER_1D_AMD 0x91CE #define GL_FLOAT16_SAMPLER_2D_AMD 0x91CF #define GL_FLOAT16_SAMPLER_3D_AMD 0x91D0 #define GL_FLOAT16_SAMPLER_CUBE_AMD 0x91D1 #define GL_FLOAT16_SAMPLER_2D_RECT_AMD 0x91D2 #define GL_FLOAT16_SAMPLER_1D_ARRAY_AMD 0x91D3 #define GL_FLOAT16_SAMPLER_2D_ARRAY_AMD 0x91D4 #define GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD 0x91D5 #define GL_FLOAT16_SAMPLER_BUFFER_AMD 0x91D6 #define GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD 0x91D7 #define GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD 0x91D8 #define GL_FLOAT16_SAMPLER_1D_SHADOW_AMD 0x91D9 #define GL_FLOAT16_SAMPLER_2D_SHADOW_AMD 0x91DA #define GL_FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD 0x91DB #define GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD 0x91DC #define GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD 0x91DD #define GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD 0x91DE #define GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD 0x91DF #define GL_FLOAT16_IMAGE_1D_AMD 0x91E0 #define GL_FLOAT16_IMAGE_2D_AMD 0x91E1 #define GL_FLOAT16_IMAGE_3D_AMD 0x91E2 #define GL_FLOAT16_IMAGE_2D_RECT_AMD 0x91E3 #define GL_FLOAT16_IMAGE_CUBE_AMD 0x91E4 #define GL_FLOAT16_IMAGE_1D_ARRAY_AMD 0x91E5 #define GL_FLOAT16_IMAGE_2D_ARRAY_AMD 0x91E6 #define GL_FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD 0x91E7 #define GL_FLOAT16_IMAGE_BUFFER_AMD 0x91E8 #define GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD 0x91E9 #define GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD 0x91EA #define GL_INT_SAMPLER_1D 0x8DC9 #define GL_INT_SAMPLER_2D 0x8DCA #define GL_INT_SAMPLER_3D 0x8DCB #define GL_INT_SAMPLER_CUBE 0x8DCC #define GL_INT_SAMPLER_1D_ARRAY 0x8DCE #define GL_INT_SAMPLER_2D_ARRAY 0x8DCF #define GL_INT_SAMPLER_2D_RECT 0x8DCD #define GL_INT_SAMPLER_BUFFER 0x8DD0 #define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C #define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E #define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E #define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 #define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 #define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 #define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 #define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 #define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 #define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A #define GL_IMAGE_1D 0x904C #define GL_IMAGE_2D 0x904D #define GL_IMAGE_3D 0x904E #define GL_IMAGE_2D_RECT 0x904F #define GL_IMAGE_CUBE 0x9050 #define GL_IMAGE_BUFFER 0x9051 #define GL_IMAGE_1D_ARRAY 0x9052 #define GL_IMAGE_2D_ARRAY 0x9053 #define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 #define GL_IMAGE_2D_MULTISAMPLE 0x9055 #define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 #define GL_INT_IMAGE_1D 0x9057 #define GL_INT_IMAGE_2D 0x9058 #define GL_INT_IMAGE_3D 0x9059 #define GL_INT_IMAGE_2D_RECT 0x905A #define GL_INT_IMAGE_CUBE 0x905B #define GL_INT_IMAGE_BUFFER 0x905C #define GL_INT_IMAGE_1D_ARRAY 0x905D #define GL_INT_IMAGE_2D_ARRAY 0x905E #define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F #define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 #define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 #define GL_UNSIGNED_INT_IMAGE_1D 0x9062 #define GL_UNSIGNED_INT_IMAGE_2D 0x9063 #define GL_UNSIGNED_INT_IMAGE_3D 0x9064 #define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 #define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 #define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 #define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C #define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB glslang-16.0.0/glslang/MachineIndependent/glslang.y000066400000000000000000005417561506534232700222500ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2015-2019 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /** * This is bison grammar and productions for parsing all versions of the * GLSL shading languages. */ %{ /* Based on: ANSI C Yacc grammar In 1985, Jeff Lee published his Yacc grammar (which is accompanied by a matching Lex specification) for the April 30, 1985 draft version of the ANSI C standard. Tom Stockfisch reposted it to net.sources in 1987; that original, as mentioned in the answer to question 17.25 of the comp.lang.c FAQ, can be ftp'ed from ftp.uu.net, file usenet/net.sources/ansi.c.grammar.Z. I intend to keep this version as close to the current C Standard grammar as possible; please let me know if you discover discrepancies. Jutta Degener, 1995 */ #include "SymbolTable.h" #include "ParseHelper.h" #include "../Public/ShaderLang.h" #include "attribute.h" using namespace glslang; %} %define parse.error verbose %union { struct { glslang::TSourceLoc loc; union { glslang::TString *string; int i; unsigned int u; long long i64; unsigned long long u64; bool b; double d; }; glslang::TSymbol* symbol; } lex; struct { glslang::TSourceLoc loc; glslang::TOperator op; union { TIntermNode* intermNode; glslang::TIntermNodePair nodePair; glslang::TIntermTyped* intermTypedNode; glslang::TAttributes* attributes; glslang::TSpirvRequirement* spirvReq; glslang::TSpirvInstruction* spirvInst; glslang::TSpirvTypeParameters* spirvTypeParams; }; union { glslang::TPublicType type; glslang::TFunction* function; glslang::TParameter param; glslang::TTypeLoc typeLine; glslang::TTypeList* typeList; glslang::TArraySizes* arraySizes; glslang::TIdentifierList* identifierList; }; glslang::TTypeParameters* typeParameters; } interm; } %{ #define parseContext (*pParseContext) #define yyerror(context, msg) context->parserError(msg) extern int yylex(YYSTYPE*, TParseContext&); %} %parse-param {glslang::TParseContext* pParseContext} %lex-param {parseContext} %pure-parser // enable thread safety %expect 1 // One shift reduce conflict because of if | else %token CONST BOOL INT UINT FLOAT %token BVEC2 BVEC3 BVEC4 %token IVEC2 IVEC3 IVEC4 %token UVEC2 UVEC3 UVEC4 %token VEC2 VEC3 VEC4 %token MAT2 MAT3 MAT4 %token MAT2X2 MAT2X3 MAT2X4 %token MAT3X2 MAT3X3 MAT3X4 %token MAT4X2 MAT4X3 MAT4X4 // combined image/sampler %token SAMPLER2D SAMPLER3D SAMPLERCUBE SAMPLER2DSHADOW %token SAMPLERCUBESHADOW SAMPLER2DARRAY %token SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE %token ISAMPLER2DARRAY USAMPLER2D USAMPLER3D %token USAMPLERCUBE USAMPLER2DARRAY // separate image/sampler %token SAMPLER SAMPLERSHADOW %token TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY %token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY %token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY %token ATTRIBUTE VARYING %token FLOATE5M2_T FLOATE4M3_T BFLOAT16_T FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T %token INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T %token I64VEC2 I64VEC3 I64VEC4 %token U64VEC2 U64VEC3 U64VEC4 %token I32VEC2 I32VEC3 I32VEC4 %token U32VEC2 U32VEC3 U32VEC4 %token I16VEC2 I16VEC3 I16VEC4 %token U16VEC2 U16VEC3 U16VEC4 %token I8VEC2 I8VEC3 I8VEC4 %token U8VEC2 U8VEC3 U8VEC4 %token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 %token BF16VEC2 BF16VEC3 BF16VEC4 %token FE5M2VEC2 FE5M2VEC3 FE5M2VEC4 %token FE4M3VEC2 FE4M3VEC3 FE4M3VEC4 %token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 %token F32VEC2 F32VEC3 F32VEC4 F32MAT2 F32MAT3 F32MAT4 %token F64VEC2 F64VEC3 F64VEC4 F64MAT2 F64MAT3 F64MAT4 %token DMAT2X2 DMAT2X3 DMAT2X4 %token DMAT3X2 DMAT3X3 DMAT3X4 %token DMAT4X2 DMAT4X3 DMAT4X4 %token F16MAT2X2 F16MAT2X3 F16MAT2X4 %token F16MAT3X2 F16MAT3X3 F16MAT3X4 %token F16MAT4X2 F16MAT4X3 F16MAT4X4 %token F32MAT2X2 F32MAT2X3 F32MAT2X4 %token F32MAT3X2 F32MAT3X3 F32MAT3X4 %token F32MAT4X2 F32MAT4X3 F32MAT4X4 %token F64MAT2X2 F64MAT2X3 F64MAT2X4 %token F64MAT3X2 F64MAT3X3 F64MAT3X4 %token F64MAT4X2 F64MAT4X3 F64MAT4X4 %token ATOMIC_UINT %token ACCSTRUCTNV %token ACCSTRUCTEXT %token RAYQUERYEXT %token FCOOPMATNV ICOOPMATNV UCOOPMATNV %token COOPMAT %token COOPVECNV %token HITOBJECTNV HITOBJECTATTRNV %token TENSORLAYOUTNV TENSORVIEWNV %token TENSORARM // combined image/sampler %token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW %token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY %token SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW %token SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT %token SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER %token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS %token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY %token SAMPLEREXTERNALOES %token SAMPLEREXTERNAL2DY2YEXT %token ISAMPLER1DARRAY USAMPLER1D USAMPLER1DARRAY %token F16SAMPLER1D F16SAMPLER2D F16SAMPLER3D F16SAMPLER2DRECT F16SAMPLERCUBE %token F16SAMPLER1DARRAY F16SAMPLER2DARRAY F16SAMPLERCUBEARRAY %token F16SAMPLERBUFFER F16SAMPLER2DMS F16SAMPLER2DMSARRAY %token F16SAMPLER1DSHADOW F16SAMPLER2DSHADOW F16SAMPLER1DARRAYSHADOW F16SAMPLER2DARRAYSHADOW %token F16SAMPLER2DRECTSHADOW F16SAMPLERCUBESHADOW F16SAMPLERCUBEARRAYSHADOW // images %token IMAGE1D IIMAGE1D UIMAGE1D IMAGE2D IIMAGE2D %token UIMAGE2D IMAGE3D IIMAGE3D UIMAGE3D %token IMAGE2DRECT IIMAGE2DRECT UIMAGE2DRECT %token IMAGECUBE IIMAGECUBE UIMAGECUBE %token IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER %token IMAGE1DARRAY IIMAGE1DARRAY UIMAGE1DARRAY %token IMAGE2DARRAY IIMAGE2DARRAY UIMAGE2DARRAY %token IMAGECUBEARRAY IIMAGECUBEARRAY UIMAGECUBEARRAY %token IMAGE2DMS IIMAGE2DMS UIMAGE2DMS %token IMAGE2DMSARRAY IIMAGE2DMSARRAY UIMAGE2DMSARRAY %token F16IMAGE1D F16IMAGE2D F16IMAGE3D F16IMAGE2DRECT %token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY %token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY %token I64IMAGE1D U64IMAGE1D %token I64IMAGE2D U64IMAGE2D %token I64IMAGE3D U64IMAGE3D %token I64IMAGE2DRECT U64IMAGE2DRECT %token I64IMAGECUBE U64IMAGECUBE %token I64IMAGEBUFFER U64IMAGEBUFFER %token I64IMAGE1DARRAY U64IMAGE1DARRAY %token I64IMAGE2DARRAY U64IMAGE2DARRAY %token I64IMAGECUBEARRAY U64IMAGECUBEARRAY %token I64IMAGE2DMS U64IMAGE2DMS %token I64IMAGE2DMSARRAY U64IMAGE2DMSARRAY // texture without sampler %token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY %token TEXTURE1D ITEXTURE1D UTEXTURE1D %token TEXTURE1DARRAY ITEXTURE1DARRAY UTEXTURE1DARRAY %token TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT %token TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER %token TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS %token TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY %token F16TEXTURE1D F16TEXTURE2D F16TEXTURE3D F16TEXTURE2DRECT F16TEXTURECUBE %token F16TEXTURE1DARRAY F16TEXTURE2DARRAY F16TEXTURECUBEARRAY %token F16TEXTUREBUFFER F16TEXTURE2DMS F16TEXTURE2DMSARRAY // input attachments %token SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS %token F16SUBPASSINPUT F16SUBPASSINPUTMS // spirv intrinsics %token SPIRV_INSTRUCTION SPIRV_EXECUTION_MODE SPIRV_EXECUTION_MODE_ID %token SPIRV_DECORATE SPIRV_DECORATE_ID SPIRV_DECORATE_STRING %token SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL %token ATTACHMENTEXT IATTACHMENTEXT UATTACHMENTEXT %token LEFT_OP RIGHT_OP %token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN %token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN %token SUB_ASSIGN %token STRING_LITERAL %token LEFT_PAREN RIGHT_PAREN LEFT_BRACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT %token COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT %token LEFT_ANGLE RIGHT_ANGLE VERTICAL_BAR CARET AMPERSAND QUESTION %token INVARIANT %token HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION %token PACKED RESOURCE SUPERP %token FLOATCONSTANT INTCONSTANT UINTCONSTANT BOOLCONSTANT %token IDENTIFIER TYPE_NAME %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT %token TERMINATE_INVOCATION %token TERMINATE_RAY IGNORE_INTERSECTION %token UNIFORM SHARED BUFFER TILEIMAGEEXT %token FLAT SMOOTH LAYOUT %token DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE FUNCTION %token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV %token PAYLOADEXT PAYLOADINEXT HITATTREXT CALLDATAEXT CALLDATAINEXT %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY NONTEMPORAL DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT %token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT %token PRECISE %type assignment_operator unary_operator %type variable_identifier primary_expression postfix_expression %type expression integer_expression assignment_expression %type unary_expression multiplicative_expression additive_expression %type relational_expression equality_expression %type conditional_expression constant_expression %type logical_or_expression logical_xor_expression logical_and_expression %type shift_expression and_expression exclusive_or_expression inclusive_or_expression %type function_call initializer condition conditionopt %type translation_unit function_definition %type statement simple_statement %type statement_list switch_statement_list compound_statement %type declaration_statement selection_statement selection_statement_nonattributed expression_statement %type switch_statement switch_statement_nonattributed case_label %type declaration external_declaration %type for_init_statement compound_statement_no_new_scope %type selection_rest_statement for_rest_statement %type iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped %type single_declaration init_declarator_list %type parameter_declaration parameter_declarator parameter_type_specifier %type array_specifier %type invariant_qualifier interpolation_qualifier storage_qualifier precision_qualifier %type layout_qualifier layout_qualifier_id_list layout_qualifier_id %type type_parameter_specifier %type type_parameter_specifier_opt %type type_parameter_specifier_list %type type_qualifier fully_specified_type type_specifier %type single_type_qualifier %type type_specifier_nonarray %type struct_specifier %type struct_declarator %type struct_declarator_list struct_declaration struct_declaration_list %type block_structure %type function_header function_declarator %type function_header_with_parameters %type function_call_header_with_parameters function_call_header_no_parameters function_call_generic function_prototype %type function_call_or_method function_identifier function_call_header %type identifier_list %type precise_qualifier non_uniform_qualifier %type type_name_list %type attribute attribute_list single_attribute %type demote_statement %type initializer_list %type spirv_requirements_list spirv_requirements_parameter %type spirv_extension_list spirv_capability_list %type spirv_execution_mode_qualifier %type spirv_execution_mode_parameter_list spirv_execution_mode_parameter spirv_execution_mode_id_parameter_list %type spirv_storage_class_qualifier %type spirv_decorate_qualifier %type spirv_decorate_parameter_list spirv_decorate_parameter %type spirv_decorate_id_parameter_list spirv_decorate_id_parameter %type spirv_decorate_string_parameter_list %type spirv_type_specifier %type spirv_type_parameter_list spirv_type_parameter %type spirv_instruction_qualifier %type spirv_instruction_qualifier_list spirv_instruction_qualifier_id %start translation_unit %% variable_identifier : IDENTIFIER { $$ = parseContext.handleVariable($1.loc, $1.symbol, $1.string); } ; primary_expression : variable_identifier { $$ = $1; } | LEFT_PAREN expression RIGHT_PAREN { $$ = $2; if ($$->getAsConstantUnion()) $$->getAsConstantUnion()->setExpression(); } | FLOATCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); } | INTCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); } | UINTCONSTANT { parseContext.fullIntegerCheck($1.loc, "unsigned literal"); $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); } | BOOLCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } | STRING_LITERAL { $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); } | INT32CONSTANT { parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); } | UINT32CONSTANT { parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); } | INT64CONSTANT { parseContext.int64Check($1.loc, "64-bit integer literal"); $$ = parseContext.intermediate.addConstantUnion($1.i64, $1.loc, true); } | UINT64CONSTANT { parseContext.int64Check($1.loc, "64-bit unsigned integer literal"); $$ = parseContext.intermediate.addConstantUnion($1.u64, $1.loc, true); } | INT16CONSTANT { parseContext.explicitInt16Check($1.loc, "16-bit integer literal"); $$ = parseContext.intermediate.addConstantUnion((short)$1.i, $1.loc, true); } | UINT16CONSTANT { parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer literal"); $$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true); } | DOUBLECONSTANT { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double literal"); $$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true); } | FLOAT16CONSTANT { parseContext.float16Check($1.loc, "half float literal"); $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); } ; postfix_expression : primary_expression { $$ = $1; } | postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET { $$ = parseContext.handleBracketDereference($2.loc, $1, $3); } | function_call { $$ = $1; } | postfix_expression DOT IDENTIFIER { $$ = parseContext.handleDotDereference($3.loc, $1, *$3.string); } | postfix_expression INC_OP { parseContext.variableCheck($1); parseContext.lValueErrorCheck($2.loc, "++", $1); $$ = parseContext.handleUnaryMath($2.loc, "++", EOpPostIncrement, $1); } | postfix_expression DEC_OP { parseContext.variableCheck($1); parseContext.lValueErrorCheck($2.loc, "--", $1); $$ = parseContext.handleUnaryMath($2.loc, "--", EOpPostDecrement, $1); } ; integer_expression : expression { parseContext.integerCheck($1, "[]"); $$ = $1; } ; function_call : function_call_or_method { $$ = parseContext.handleFunctionCall($1.loc, $1.function, $1.intermNode); delete $1.function; } ; function_call_or_method : function_call_generic { $$ = $1; } ; function_call_generic : function_call_header_with_parameters RIGHT_PAREN { $$ = $1; $$.loc = $2.loc; } | function_call_header_no_parameters RIGHT_PAREN { $$ = $1; $$.loc = $2.loc; } ; function_call_header_no_parameters : function_call_header VOID { $$ = $1; } | function_call_header { $$ = $1; } ; function_call_header_with_parameters : function_call_header assignment_expression { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed && $2->getType().containsOpaque()) { $$.intermNode = parseContext.vkRelaxedRemapFunctionArgument($$.loc, $1.function, $2); $$.function = $1.function; } else { TParameter param = { 0, new TType, {} }; param.type->shallowCopy($2->getType()); $1.function->addParameter(param); $$.function = $1.function; $$.intermNode = $2; } } | function_call_header_with_parameters COMMA assignment_expression { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed && $3->getType().containsOpaque()) { TIntermNode* remappedNode = parseContext.vkRelaxedRemapFunctionArgument($2.loc, $1.function, $3); if (remappedNode == $3) $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, $3, $2.loc); else $$.intermNode = parseContext.intermediate.mergeAggregate($1.intermNode, remappedNode, $2.loc); $$.function = $1.function; } else { TParameter param = { 0, new TType, {} }; param.type->shallowCopy($3->getType()); $1.function->addParameter(param); $$.function = $1.function; $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, $3, $2.loc); } } ; function_call_header : function_identifier LEFT_PAREN { $$ = $1; } ; // Grammar Note: Constructors look like functions, but are recognized as types. function_identifier : type_specifier { // Constructor $$.intermNode = 0; $$.function = parseContext.handleConstructorCall($1.loc, $1); } | postfix_expression { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. // $$.function = 0; $$.intermNode = 0; TIntermMethod* method = $1->getAsMethodNode(); if (method) { $$.function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); $$.intermNode = method->getObject(); } else { TIntermSymbol* symbol = $1->getAsSymbolNode(); if (symbol) { parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); $$.function = function; } else parseContext.error($1->getLoc(), "function call, method, or subroutine call expected", "", ""); } if ($$.function == 0) { // error recover TString* empty = NewPoolTString(""); $$.function = new TFunction(empty, TType(EbtVoid), EOpNull); } } | non_uniform_qualifier { // Constructor $$.intermNode = 0; $$.function = parseContext.handleConstructorCall($1.loc, $1); } ; unary_expression : postfix_expression { parseContext.variableCheck($1); $$ = $1; if (TIntermMethod* method = $1->getAsMethodNode()) parseContext.error($1->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } | INC_OP unary_expression { parseContext.lValueErrorCheck($1.loc, "++", $2); $$ = parseContext.handleUnaryMath($1.loc, "++", EOpPreIncrement, $2); } | DEC_OP unary_expression { parseContext.lValueErrorCheck($1.loc, "--", $2); $$ = parseContext.handleUnaryMath($1.loc, "--", EOpPreDecrement, $2); } | unary_operator unary_expression { if ($1.op != EOpNull) { char errorOp[2] = {0, 0}; switch($1.op) { case EOpNegative: errorOp[0] = '-'; break; case EOpLogicalNot: errorOp[0] = '!'; break; case EOpBitwiseNot: errorOp[0] = '~'; break; default: break; // some compilers want this } $$ = parseContext.handleUnaryMath($1.loc, errorOp, $1.op, $2); } else { $$ = $2; if ($$->getAsConstantUnion()) $$->getAsConstantUnion()->setExpression(); } } ; // Grammar Note: No traditional style type casts. unary_operator : PLUS { $$.loc = $1.loc; $$.op = EOpNull; } | DASH { $$.loc = $1.loc; $$.op = EOpNegative; } | BANG { $$.loc = $1.loc; $$.op = EOpLogicalNot; } | TILDE { $$.loc = $1.loc; $$.op = EOpBitwiseNot; parseContext.fullIntegerCheck($1.loc, "bitwise not"); } ; // Grammar Note: No '*' or '&' unary ops. Pointers are not supported. multiplicative_expression : unary_expression { $$ = $1; } | multiplicative_expression STAR unary_expression { $$ = parseContext.handleBinaryMath($2.loc, "*", EOpMul, $1, $3); if ($$ == 0) $$ = $1; } | multiplicative_expression SLASH unary_expression { $$ = parseContext.handleBinaryMath($2.loc, "/", EOpDiv, $1, $3); if ($$ == 0) $$ = $1; } | multiplicative_expression PERCENT unary_expression { parseContext.fullIntegerCheck($2.loc, "%"); $$ = parseContext.handleBinaryMath($2.loc, "%", EOpMod, $1, $3); if ($$ == 0) $$ = $1; } ; additive_expression : multiplicative_expression { $$ = $1; } | additive_expression PLUS multiplicative_expression { $$ = parseContext.handleBinaryMath($2.loc, "+", EOpAdd, $1, $3); if ($$ == 0) $$ = $1; } | additive_expression DASH multiplicative_expression { $$ = parseContext.handleBinaryMath($2.loc, "-", EOpSub, $1, $3); if ($$ == 0) $$ = $1; } ; shift_expression : additive_expression { $$ = $1; } | shift_expression LEFT_OP additive_expression { parseContext.fullIntegerCheck($2.loc, "bit shift left"); $$ = parseContext.handleBinaryMath($2.loc, "<<", EOpLeftShift, $1, $3); if ($$ == 0) $$ = $1; } | shift_expression RIGHT_OP additive_expression { parseContext.fullIntegerCheck($2.loc, "bit shift right"); $$ = parseContext.handleBinaryMath($2.loc, ">>", EOpRightShift, $1, $3); if ($$ == 0) $$ = $1; } ; relational_expression : shift_expression { $$ = $1; } | relational_expression LEFT_ANGLE shift_expression { $$ = parseContext.handleBinaryMath($2.loc, "<", EOpLessThan, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } | relational_expression RIGHT_ANGLE shift_expression { $$ = parseContext.handleBinaryMath($2.loc, ">", EOpGreaterThan, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } | relational_expression LE_OP shift_expression { $$ = parseContext.handleBinaryMath($2.loc, "<=", EOpLessThanEqual, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } | relational_expression GE_OP shift_expression { $$ = parseContext.handleBinaryMath($2.loc, ">=", EOpGreaterThanEqual, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } ; equality_expression : relational_expression { $$ = $1; } | equality_expression EQ_OP relational_expression { parseContext.arrayObjectCheck($2.loc, $1->getType(), "array comparison"); parseContext.opaqueCheck($2.loc, $1->getType(), "=="); parseContext.specializationCheck($2.loc, $1->getType(), "=="); parseContext.referenceCheck($2.loc, $1->getType(), "=="); $$ = parseContext.handleBinaryMath($2.loc, "==", EOpEqual, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } | equality_expression NE_OP relational_expression { parseContext.arrayObjectCheck($2.loc, $1->getType(), "array comparison"); parseContext.opaqueCheck($2.loc, $1->getType(), "!="); parseContext.specializationCheck($2.loc, $1->getType(), "!="); parseContext.referenceCheck($2.loc, $1->getType(), "!="); $$ = parseContext.handleBinaryMath($2.loc, "!=", EOpNotEqual, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } ; and_expression : equality_expression { $$ = $1; } | and_expression AMPERSAND equality_expression { parseContext.fullIntegerCheck($2.loc, "bitwise and"); $$ = parseContext.handleBinaryMath($2.loc, "&", EOpAnd, $1, $3); if ($$ == 0) $$ = $1; } ; exclusive_or_expression : and_expression { $$ = $1; } | exclusive_or_expression CARET and_expression { parseContext.fullIntegerCheck($2.loc, "bitwise exclusive or"); $$ = parseContext.handleBinaryMath($2.loc, "^", EOpExclusiveOr, $1, $3); if ($$ == 0) $$ = $1; } ; inclusive_or_expression : exclusive_or_expression { $$ = $1; } | inclusive_or_expression VERTICAL_BAR exclusive_or_expression { parseContext.fullIntegerCheck($2.loc, "bitwise inclusive or"); $$ = parseContext.handleBinaryMath($2.loc, "|", EOpInclusiveOr, $1, $3); if ($$ == 0) $$ = $1; } ; logical_and_expression : inclusive_or_expression { $$ = $1; } | logical_and_expression AND_OP inclusive_or_expression { $$ = parseContext.handleBinaryMath($2.loc, "&&", EOpLogicalAnd, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } ; logical_xor_expression : logical_and_expression { $$ = $1; } | logical_xor_expression XOR_OP logical_and_expression { $$ = parseContext.handleBinaryMath($2.loc, "^^", EOpLogicalXor, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } ; logical_or_expression : logical_xor_expression { $$ = $1; } | logical_or_expression OR_OP logical_xor_expression { $$ = parseContext.handleBinaryMath($2.loc, "||", EOpLogicalOr, $1, $3); if ($$ == 0) $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); } ; conditional_expression : logical_or_expression { $$ = $1; } | logical_or_expression QUESTION { ++parseContext.controlFlowNestingLevel; } expression COLON assignment_expression { --parseContext.controlFlowNestingLevel; parseContext.boolCheck($2.loc, $1); parseContext.rValueErrorCheck($2.loc, "?", $1); parseContext.rValueErrorCheck($5.loc, ":", $4); parseContext.rValueErrorCheck($5.loc, ":", $6); $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); if ($$ == 0) { parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $6; } } ; assignment_expression : conditional_expression { $$ = $1; } | unary_expression assignment_operator assignment_expression { parseContext.arrayObjectCheck($2.loc, $1->getType(), "array assignment"); parseContext.opaqueCheck($2.loc, $1->getType(), "="); parseContext.storage16BitAssignmentCheck($2.loc, $1->getType(), "="); parseContext.specializationCheck($2.loc, $1->getType(), "="); parseContext.lValueErrorCheck($2.loc, "assign", $1); parseContext.rValueErrorCheck($2.loc, "assign", $3); $$ = parseContext.addAssign($2.loc, $2.op, $1, $3); if ($$ == 0) { parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $1; } } ; assignment_operator : EQUAL { $$.loc = $1.loc; $$.op = EOpAssign; } | MUL_ASSIGN { $$.loc = $1.loc; $$.op = EOpMulAssign; } | DIV_ASSIGN { $$.loc = $1.loc; $$.op = EOpDivAssign; } | MOD_ASSIGN { parseContext.fullIntegerCheck($1.loc, "%="); $$.loc = $1.loc; $$.op = EOpModAssign; } | ADD_ASSIGN { $$.loc = $1.loc; $$.op = EOpAddAssign; } | SUB_ASSIGN { $$.loc = $1.loc; $$.op = EOpSubAssign; } | LEFT_ASSIGN { parseContext.fullIntegerCheck($1.loc, "bit-shift left assign"); $$.loc = $1.loc; $$.op = EOpLeftShiftAssign; } | RIGHT_ASSIGN { parseContext.fullIntegerCheck($1.loc, "bit-shift right assign"); $$.loc = $1.loc; $$.op = EOpRightShiftAssign; } | AND_ASSIGN { parseContext.fullIntegerCheck($1.loc, "bitwise-and assign"); $$.loc = $1.loc; $$.op = EOpAndAssign; } | XOR_ASSIGN { parseContext.fullIntegerCheck($1.loc, "bitwise-xor assign"); $$.loc = $1.loc; $$.op = EOpExclusiveOrAssign; } | OR_ASSIGN { parseContext.fullIntegerCheck($1.loc, "bitwise-or assign"); $$.loc = $1.loc; $$.op = EOpInclusiveOrAssign; } ; expression : assignment_expression { $$ = $1; } | expression COMMA assignment_expression { parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); $$ = parseContext.intermediate.addComma($1, $3, $2.loc); if ($$ == 0) { parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $3; } } ; constant_expression : conditional_expression { parseContext.constantValueCheck($1, ""); $$ = $1; } ; declaration : function_prototype SEMICOLON { parseContext.handleFunctionDeclarator($1.loc, *$1.function, true /* prototype */); $$ = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } | spirv_instruction_qualifier function_prototype SEMICOLON { parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); $2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier parseContext.handleFunctionDeclarator($2.loc, *$2.function, true /* prototype */); $$ = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } | spirv_execution_mode_qualifier SEMICOLON { parseContext.globalCheck($2.loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); $$ = 0; } | init_declarator_list SEMICOLON { if ($1.intermNode && $1.intermNode->getAsAggregate()) $1.intermNode->getAsAggregate()->setOperator(EOpSequence); $$ = $1.intermNode; } | PRECISION precision_qualifier type_specifier SEMICOLON { parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); parseContext.setDefaultPrecision($1.loc, $3, $2.qualifier.precision); $$ = 0; } | block_structure SEMICOLON { parseContext.declareBlock($1.loc, *$1.typeList); $$ = 0; } | block_structure IDENTIFIER SEMICOLON { parseContext.declareBlock($1.loc, *$1.typeList, $2.string); $$ = 0; } | block_structure IDENTIFIER array_specifier SEMICOLON { parseContext.declareBlock($1.loc, *$1.typeList, $2.string, $3.arraySizes); $$ = 0; } | type_qualifier SEMICOLON { parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); parseContext.updateStandaloneQualifierDefaults($1.loc, $1); $$ = 0; } | type_qualifier identifier_list SEMICOLON { parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$2); $$ = 0; } ; block_structure : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE { --parseContext.blockNestingLevel; parseContext.blockName = $2.string; parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.currentBlockQualifier = $1.qualifier; $$.loc = $1.loc; $$.typeList = $5; } identifier_list : IDENTIFIER { $$ = new TIdentifierList; $$->push_back($1.string); } | identifier_list COMMA IDENTIFIER { $$ = $1; $$->push_back($3.string); } ; function_prototype : function_declarator RIGHT_PAREN { $$.function = $1; if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $2.loc; } | function_declarator RIGHT_PAREN attribute { $$.function = $1; if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $2.loc; const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; parseContext.requireExtensions($2.loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes($2.loc, *$3); } | attribute function_declarator RIGHT_PAREN { $$.function = $2; if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $3.loc; const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; parseContext.requireExtensions($3.loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes($3.loc, *$1); } | attribute function_declarator RIGHT_PAREN attribute { $$.function = $2; if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $3.loc; const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; parseContext.requireExtensions($3.loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes($3.loc, *$1); parseContext.handleFunctionAttributes($3.loc, *$4); } ; function_declarator : function_header { $$ = $1; } | function_header_with_parameters { $$ = $1; } ; function_header_with_parameters : function_header parameter_declaration { // Add the parameter $$ = $1; if ($2.param.type->getBasicType() != EbtVoid) { if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) $1->addParameter($2.param); else parseContext.vkRelaxedRemapFunctionParameter($1, $2.param); } else delete $2.param.type; } | function_header_with_parameters COMMA parameter_declaration { // // Only first parameter of one-parameter functions can be void // The check for named parameters not being void is done in parameter_declarator // if ($3.param.type->getBasicType() == EbtVoid) { // // This parameter > first is void // parseContext.error($2.loc, "cannot be an argument type except for '(void)'", "void", ""); delete $3.param.type; } else { // Add the parameter $$ = $1; if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) $1->addParameter($3.param); else parseContext.vkRelaxedRemapFunctionParameter($1, $3.param); } } | function_header_with_parameters COMMA DOT DOT DOT { $$ = $1; parseContext.makeVariadic($1, $3.loc); } ; function_header : fully_specified_type IDENTIFIER LEFT_PAREN { if ($1.qualifier.storage != EvqGlobal && $1.qualifier.storage != EvqTemporary) { parseContext.error($2.loc, "no qualifiers allowed for function return", GetStorageQualifierString($1.qualifier.storage), ""); } if ($1.arraySizes) parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); // Add the function as a prototype after parsing it (we do not support recursion) TFunction *function; TType type($1); // Potentially rename shader entry point function. No-op most of the time. parseContext.renameShaderFunction($2.string); // Make the function function = new TFunction($2.string, type); $$ = function; } ; parameter_declarator // Type + name : type_specifier IDENTIFIER { if ($1.arraySizes) { parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); } if ($1.basicType == EbtVoid) { parseContext.error($2.loc, "illegal use of type 'void'", $2.string->c_str(), ""); } parseContext.reservedErrorCheck($2.loc, *$2.string); TParameter param = {$2.string, new TType($1), {}}; $$.loc = $2.loc; $$.param = param; } | type_specifier IDENTIFIER array_specifier { if ($1.arraySizes) { parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); } TType* type = new TType($1); type->transferArraySizes($3.arraySizes); type->copyArrayInnerSizes($1.arraySizes); parseContext.arrayOfArrayVersionCheck($2.loc, type->getArraySizes()); parseContext.arraySizeRequiredCheck($3.loc, *$3.arraySizes); parseContext.reservedErrorCheck($2.loc, *$2.string); TParameter param = { $2.string, type, {} }; $$.loc = $2.loc; $$.param = param; } | type_specifier IDENTIFIER EQUAL initializer { TParameter param = parseContext.getParamWithDefault($1, $2.string, $4, $3.loc); $$.loc = $2.loc; $$.param = param; } ; parameter_declaration // // With name // : type_qualifier parameter_declarator { $$ = $2; if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->hasTypeParameter()); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); parseContext.paramCheckFix($1.loc, $1.qualifier, *$$.param.type); } | parameter_declarator { $$ = $1; parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->hasTypeParameter()); } // // Without name // | type_qualifier parameter_type_specifier { $$ = $2; if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->hasTypeParameter()); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); parseContext.paramCheckFix($1.loc, $1.qualifier, *$$.param.type); } | parameter_type_specifier { $$ = $1; parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->hasTypeParameter()); } ; parameter_type_specifier : type_specifier { TParameter param = { 0, new TType($1), {} }; $$.param = param; if ($1.arraySizes) parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); } ; init_declarator_list : single_declaration { $$ = $1; } | init_declarator_list COMMA IDENTIFIER { $$ = $1; parseContext.declareVariable($3.loc, *$3.string, $1.type); } | init_declarator_list COMMA IDENTIFIER array_specifier { $$ = $1; parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes); } | init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer { $$.type = $1.type; TIntermNode* initNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes, $6); $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, initNode, $5.loc); } | init_declarator_list COMMA IDENTIFIER EQUAL initializer { $$.type = $1.type; TIntermNode* initNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, 0, $5); $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, initNode, $4.loc); } ; single_declaration : fully_specified_type { $$.type = $1; $$.intermNode = 0; parseContext.declareTypeDefaults($$.loc, $$.type); } | fully_specified_type IDENTIFIER { $$.type = $1; $$.intermNode = 0; parseContext.declareVariable($2.loc, *$2.string, $1); } | fully_specified_type IDENTIFIER array_specifier { $$.type = $1; $$.intermNode = 0; parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes); } | fully_specified_type IDENTIFIER array_specifier EQUAL initializer { $$.type = $1; TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes, $5); $$.intermNode = parseContext.intermediate.growAggregate(0, initNode, $4.loc); } | fully_specified_type IDENTIFIER EQUAL initializer { $$.type = $1; TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); $$.intermNode = parseContext.intermediate.growAggregate(0, initNode, $3.loc); } // Grammar Note: No 'enum', or 'typedef'. fully_specified_type : type_specifier { $$ = $1; parseContext.globalQualifierTypeCheck($1.loc, $1.qualifier, $$); if ($1.arraySizes) { parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); } parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier, $$.hasTypeParameter()); } | type_qualifier type_specifier { parseContext.globalQualifierFixCheck($1.loc, $1.qualifier, false, &$2); parseContext.globalQualifierTypeCheck($1.loc, $1.qualifier, $2); if ($2.arraySizes) { parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type"); } if ($2.arraySizes && parseContext.arrayQualifierError($2.loc, $1.qualifier)) $2.arraySizes = nullptr; parseContext.checkNoShaderLayouts($2.loc, $1.shaderQualifiers); $2.shaderQualifiers.merge($1.shaderQualifiers); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.hasTypeParameter()); $$ = $2; if (! $$.qualifier.isInterpolation() && ((parseContext.language == EShLangVertex && $$.qualifier.storage == EvqVaryingOut) || (parseContext.language == EShLangFragment && $$.qualifier.storage == EvqVaryingIn))) $$.qualifier.smooth = true; } ; invariant_qualifier : INVARIANT { parseContext.globalCheck($1.loc, "invariant"); parseContext.profileRequires($$.loc, ENoProfile, 120, 0, "invariant"); $$.init($1.loc); $$.qualifier.invariant = true; } ; interpolation_qualifier : SMOOTH { parseContext.globalCheck($1.loc, "smooth"); parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "smooth"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "smooth"); $$.init($1.loc); $$.qualifier.smooth = true; } | FLAT { parseContext.globalCheck($1.loc, "flat"); parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "flat"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "flat"); $$.init($1.loc); $$.qualifier.flat = true; } | NOPERSPECTIVE { parseContext.globalCheck($1.loc, "noperspective"); parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "noperspective"); $$.init($1.loc); $$.qualifier.nopersp = true; } | EXPLICITINTERPAMD { parseContext.globalCheck($1.loc, "__explicitInterpAMD"); parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); parseContext.profileRequires($1.loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); $$.init($1.loc); $$.qualifier.explicitInterp = true; } | PERVERTEXNV { parseContext.globalCheck($1.loc, "pervertexNV"); parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); $$.init($1.loc); $$.qualifier.pervertexNV = true; } | 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 | 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, 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)(EShLangTaskMask | EShLangMeshMask), "taskNV"); $$.init($1.loc); $$.qualifier.perTaskNV = true; } ; layout_qualifier : LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN { $$ = $3; } ; layout_qualifier_id_list : layout_qualifier_id { $$ = $1; } | layout_qualifier_id_list COMMA layout_qualifier_id { $$ = $1; $$.shaderQualifiers.merge($3.shaderQualifiers); parseContext.mergeObjectLayoutQualifiers($$.qualifier, $3.qualifier, false); } layout_qualifier_id : IDENTIFIER { $$.init($1.loc); parseContext.setLayoutQualifier($1.loc, $$, *$1.string); } | IDENTIFIER EQUAL constant_expression { $$.init($1.loc); parseContext.setLayoutQualifier($1.loc, $$, *$1.string, $3); } | SHARED { // because "shared" is both an identifier and a keyword $$.init($1.loc); TString strShared("shared"); parseContext.setLayoutQualifier($1.loc, $$, strShared); } ; precise_qualifier : PRECISE { parseContext.profileRequires($$.loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires($1.loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); $$.init($1.loc); $$.qualifier.noContraction = true; } ; type_qualifier : single_type_qualifier { $$ = $1; } | type_qualifier single_type_qualifier { $$ = $1; if ($$.basicType == EbtVoid) $$.basicType = $2.basicType; $$.shaderQualifiers.merge($2.shaderQualifiers); parseContext.mergeQualifiers($$.loc, $$.qualifier, $2.qualifier, false); } ; single_type_qualifier : storage_qualifier { $$ = $1; } | layout_qualifier { $$ = $1; } | precision_qualifier { parseContext.checkPrecisionQualifier($1.loc, $1.qualifier.precision); $$ = $1; } | interpolation_qualifier { // allow inheritance of storage qualifier from block declaration $$ = $1; } | invariant_qualifier { // allow inheritance of storage qualifier from block declaration $$ = $1; } | precise_qualifier { // allow inheritance of storage qualifier from block declaration $$ = $1; } | non_uniform_qualifier { $$ = $1; } | spirv_storage_class_qualifier { parseContext.globalCheck($1.loc, "spirv_storage_class"); parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); $$ = $1; } | spirv_decorate_qualifier { parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); $$ = $1; } | SPIRV_BY_REFERENCE { parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); $$.init($1.loc); $$.qualifier.setSpirvByReference(); } | SPIRV_LITERAL { parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); $$.init($1.loc); $$.qualifier.setSpirvLiteral(); } ; storage_qualifier : CONST { $$.init($1.loc); $$.qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } | INOUT { parseContext.globalCheck($1.loc, "inout"); $$.init($1.loc); $$.qualifier.storage = EvqInOut; } | IN { parseContext.globalCheck($1.loc, "in"); $$.init($1.loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later $$.qualifier.storage = EvqIn; } | OUT { parseContext.globalCheck($1.loc, "out"); $$.init($1.loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later $$.qualifier.storage = EvqOut; } | CENTROID { parseContext.profileRequires($1.loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "centroid"); parseContext.globalCheck($1.loc, "centroid"); $$.init($1.loc); $$.qualifier.centroid = true; } | UNIFORM { parseContext.globalCheck($1.loc, "uniform"); $$.init($1.loc); $$.qualifier.storage = EvqUniform; } | TILEIMAGEEXT { parseContext.globalCheck($1.loc, "tileImageEXT"); $$.init($1.loc); $$.qualifier.storage = EvqTileImageEXT; } | SHARED { parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); $$.init($1.loc); $$.qualifier.storage = EvqShared; } | BUFFER { parseContext.globalCheck($1.loc, "buffer"); $$.init($1.loc); $$.qualifier.storage = EvqBuffer; } | ATTRIBUTE { parseContext.requireStage($1.loc, EShLangVertex, "attribute"); parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); parseContext.checkDeprecated($1.loc, ENoProfile, 130, "attribute"); parseContext.requireNotRemoved($1.loc, ECoreProfile, 420, "attribute"); parseContext.requireNotRemoved($1.loc, EEsProfile, 300, "attribute"); parseContext.globalCheck($1.loc, "attribute"); $$.init($1.loc); $$.qualifier.storage = EvqVaryingIn; } | VARYING { parseContext.checkDeprecated($1.loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "varying"); parseContext.requireNotRemoved($1.loc, ECoreProfile, 420, "varying"); parseContext.requireNotRemoved($1.loc, EEsProfile, 300, "varying"); parseContext.globalCheck($1.loc, "varying"); $$.init($1.loc); if (parseContext.language == EShLangVertex) $$.qualifier.storage = EvqVaryingOut; else $$.qualifier.storage = EvqVaryingIn; } | PATCH { parseContext.globalCheck($1.loc, "patch"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); $$.init($1.loc); $$.qualifier.patch = true; } | SAMPLE { parseContext.globalCheck($1.loc, "sample"); $$.init($1.loc); $$.qualifier.sample = true; } | HITATTRNV { parseContext.globalCheck($1.loc, "hitAttributeNV"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask | EShLangAnyHitMask), "hitAttributeNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); $$.init($1.loc); $$.qualifier.storage = EvqHitAttr; } | HITOBJECTATTRNV { parseContext.globalCheck($1.loc, "hitAttributeNV"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV"); $$.init($1.loc); $$.qualifier.storage = EvqHitObjectAttrNV; } | HITATTREXT { parseContext.globalCheck($1.loc, "hitAttributeEXT"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask | EShLangAnyHitMask), "hitAttributeEXT"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV"); $$.init($1.loc); $$.qualifier.storage = EvqHitAttr; } | PAYLOADNV { parseContext.globalCheck($1.loc, "rayPayloadNV"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); $$.init($1.loc); $$.qualifier.storage = EvqPayload; } | PAYLOADEXT { parseContext.globalCheck($1.loc, "rayPayloadEXT"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT"); $$.init($1.loc); $$.qualifier.storage = EvqPayload; } | PAYLOADINNV { parseContext.globalCheck($1.loc, "rayPayloadInNV"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); $$.init($1.loc); $$.qualifier.storage = EvqPayloadIn; } | PAYLOADINEXT { parseContext.globalCheck($1.loc, "rayPayloadInEXT"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT"); $$.init($1.loc); $$.qualifier.storage = EvqPayloadIn; } | CALLDATANV { parseContext.globalCheck($1.loc, "callableDataNV"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); $$.init($1.loc); $$.qualifier.storage = EvqCallableData; } | CALLDATAEXT { parseContext.globalCheck($1.loc, "callableDataEXT"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT"); $$.init($1.loc); $$.qualifier.storage = EvqCallableData; } | CALLDATAINNV { parseContext.globalCheck($1.loc, "callableDataInNV"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); $$.init($1.loc); $$.qualifier.storage = EvqCallableDataIn; } | CALLDATAINEXT { parseContext.globalCheck($1.loc, "callableDataInEXT"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT"); $$.init($1.loc); $$.qualifier.storage = EvqCallableDataIn; } | COHERENT { $$.init($1.loc); $$.qualifier.coherent = true; } | DEVICECOHERENT { $$.init($1.loc); parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); $$.qualifier.devicecoherent = true; } | QUEUEFAMILYCOHERENT { $$.init($1.loc); parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); $$.qualifier.queuefamilycoherent = true; } | WORKGROUPCOHERENT { $$.init($1.loc); parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); $$.qualifier.workgroupcoherent = true; } | SUBGROUPCOHERENT { $$.init($1.loc); parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); $$.qualifier.subgroupcoherent = true; } | NONPRIVATE { $$.init($1.loc); parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); $$.qualifier.nonprivate = true; } | SHADERCALLCOHERENT { $$.init($1.loc); parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); $$.qualifier.shadercallcoherent = true; } | VOLATILE { $$.init($1.loc); $$.qualifier.volatil = true; } | RESTRICT { $$.init($1.loc); $$.qualifier.restrict = true; } | READONLY { $$.init($1.loc); $$.qualifier.readonly = true; } | WRITEONLY { $$.init($1.loc); $$.qualifier.writeonly = true; } | NONTEMPORAL { $$.init($1.loc); $$.qualifier.nontemporal = true; } | SUBROUTINE { parseContext.spvRemoved($1.loc, "subroutine"); parseContext.globalCheck($1.loc, "subroutine"); parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); } | SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN { parseContext.spvRemoved($1.loc, "subroutine"); parseContext.globalCheck($1.loc, "subroutine"); parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); } | 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; } ; non_uniform_qualifier : NONUNIFORM { $$.init($1.loc); $$.qualifier.nonUniform = true; } ; type_name_list : IDENTIFIER { // TODO } | type_name_list COMMA IDENTIFIER { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } ; type_specifier : type_specifier_nonarray type_parameter_specifier_opt { $$ = $1; $$.qualifier.precision = parseContext.getDefaultPrecision($$); $$.typeParameters = $2; parseContext.typeParametersCheck($1.loc, $$); } | type_specifier_nonarray type_parameter_specifier_opt array_specifier { parseContext.arrayOfArrayVersionCheck($3.loc, $3.arraySizes); $$ = $1; $$.qualifier.precision = parseContext.getDefaultPrecision($$); $$.typeParameters = $2; $$.arraySizes = $3.arraySizes; parseContext.typeParametersCheck($1.loc, $$); } ; array_specifier : LEFT_BRACKET RIGHT_BRACKET { $$.loc = $1.loc; $$.arraySizes = new TArraySizes; $$.arraySizes->addInnerSize(); } | LEFT_BRACKET conditional_expression RIGHT_BRACKET { $$.loc = $1.loc; $$.arraySizes = new TArraySizes; TArraySize size; parseContext.arraySizeCheck($2->getLoc(), $2, size, "array size"); $$.arraySizes->addInnerSize(size); } | array_specifier LEFT_BRACKET RIGHT_BRACKET { $$ = $1; $$.arraySizes->addInnerSize(); } | array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET { $$ = $1; TArraySize size; parseContext.arraySizeCheck($3->getLoc(), $3, size, "array size"); $$.arraySizes->addInnerSize(size); } ; type_parameter_specifier_opt : type_parameter_specifier { $$ = $1; } | /* May be null */ { $$ = 0; } ; type_parameter_specifier : LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE { $$ = $2; } ; type_parameter_specifier_list : type_specifier { $$ = new TTypeParameters; $$->arraySizes = new TArraySizes; $$->spirvType = $1.spirvType; $$->basicType = $1.basicType; } | unary_expression { $$ = new TTypeParameters; $$->arraySizes = new TArraySizes; TArraySize size; parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter", true); $$->arraySizes->addInnerSize(size); } | type_parameter_specifier_list COMMA unary_expression { $$ = $1; TArraySize size; parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter", true); $$->arraySizes->addInnerSize(size); } ; type_specifier_nonarray : VOID { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtVoid; } | FLOAT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; } | INT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; } | UINT { parseContext.fullIntegerCheck($1.loc, "unsigned integer"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; } | BOOL { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBool; } | VEC2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setVector(2); } | VEC3 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setVector(3); } | VEC4 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setVector(4); } | BVEC2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBool; $$.setVector(2); } | BVEC3 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBool; $$.setVector(3); } | BVEC4 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBool; $$.setVector(4); } | IVEC2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; $$.setVector(2); } | IVEC3 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; $$.setVector(3); } | IVEC4 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; $$.setVector(4); } | UVEC2 { parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; $$.setVector(2); } | UVEC3 { parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; $$.setVector(3); } | UVEC4 { parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; $$.setVector(4); } | MAT2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(2, 2); } | MAT3 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(3, 3); } | MAT4 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(4, 4); } | MAT2X2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(2, 2); } | MAT2X3 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(2, 3); } | MAT2X4 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(2, 4); } | MAT3X2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(3, 2); } | MAT3X3 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(3, 3); } | MAT3X4 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(3, 4); } | MAT4X2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(4, 2); } | MAT4X3 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(4, 3); } | MAT4X4 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(4, 4); } | DOUBLE { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; } | BFLOAT16_T { parseContext.bfloat16ScalarVectorCheck($1.loc, "bfloat16_t", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBFloat16; } | FLOATE5M2_T { parseContext.floate5m2ScalarVectorCheck($1.loc, "floate5m2_t", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloatE5M2; } | FLOATE4M3_T { parseContext.floate4m3ScalarVectorCheck($1.loc, "floate4m3_t", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloatE4M3; } | FLOAT16_T { parseContext.float16ScalarVectorCheck($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; } | FLOAT32_T { parseContext.explicitFloat32Check($1.loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; } | FLOAT64_T { parseContext.explicitFloat64Check($1.loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; } | INT8_T { parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt8; } | UINT8_T { parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint8; } | INT16_T { parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt16; } | UINT16_T { parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint16; } | INT32_T { parseContext.explicitInt32Check($1.loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; } | UINT32_T { parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; } | INT64_T { parseContext.int64Check($1.loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt64; } | UINT64_T { parseContext.int64Check($1.loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint64; } | DVEC2 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double vector"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setVector(2); } | DVEC3 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double vector"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setVector(3); } | DVEC4 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double vector"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setVector(4); } | BF16VEC2 { parseContext.bfloat16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBFloat16; $$.setVector(2); } | BF16VEC3 { parseContext.bfloat16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBFloat16; $$.setVector(3); } | BF16VEC4 { parseContext.bfloat16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBFloat16; $$.setVector(4); } | FE5M2VEC2 { parseContext.floate5m2ScalarVectorCheck($1.loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloatE5M2; $$.setVector(2); } | FE5M2VEC3 { parseContext.floate5m2ScalarVectorCheck($1.loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloatE5M2; $$.setVector(3); } | FE5M2VEC4 { parseContext.floate5m2ScalarVectorCheck($1.loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloatE5M2; $$.setVector(4); } | FE4M3VEC2 { parseContext.floate4m3ScalarVectorCheck($1.loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloatE4M3; $$.setVector(2); } | FE4M3VEC3 { parseContext.floate4m3ScalarVectorCheck($1.loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloatE4M3; $$.setVector(3); } | FE4M3VEC4 { parseContext.floate4m3ScalarVectorCheck($1.loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloatE4M3; $$.setVector(4); } | F16VEC2 { parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setVector(2); } | F16VEC3 { parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setVector(3); } | F16VEC4 { parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setVector(4); } | F32VEC2 { parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setVector(2); } | F32VEC3 { parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setVector(3); } | F32VEC4 { parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setVector(4); } | F64VEC2 { parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setVector(2); } | F64VEC3 { parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setVector(3); } | F64VEC4 { parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setVector(4); } | I8VEC2 { parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt8; $$.setVector(2); } | I8VEC3 { parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt8; $$.setVector(3); } | I8VEC4 { parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt8; $$.setVector(4); } | I16VEC2 { parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt16; $$.setVector(2); } | I16VEC3 { parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt16; $$.setVector(3); } | I16VEC4 { parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt16; $$.setVector(4); } | I32VEC2 { parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; $$.setVector(2); } | I32VEC3 { parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; $$.setVector(3); } | I32VEC4 { parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; $$.setVector(4); } | I64VEC2 { parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt64; $$.setVector(2); } | I64VEC3 { parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt64; $$.setVector(3); } | I64VEC4 { parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt64; $$.setVector(4); } | U8VEC2 { parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint8; $$.setVector(2); } | U8VEC3 { parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint8; $$.setVector(3); } | U8VEC4 { parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint8; $$.setVector(4); } | U16VEC2 { parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint16; $$.setVector(2); } | U16VEC3 { parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint16; $$.setVector(3); } | U16VEC4 { parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint16; $$.setVector(4); } | U32VEC2 { parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; $$.setVector(2); } | U32VEC3 { parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; $$.setVector(3); } | U32VEC4 { parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; $$.setVector(4); } | U64VEC2 { parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint64; $$.setVector(2); } | U64VEC3 { parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint64; $$.setVector(3); } | U64VEC4 { parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint64; $$.setVector(4); } | DMAT2 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(2, 2); } | DMAT3 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(3, 3); } | DMAT4 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(4, 4); } | DMAT2X2 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(2, 2); } | DMAT2X3 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(2, 3); } | DMAT2X4 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(2, 4); } | DMAT3X2 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(3, 2); } | DMAT3X3 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(3, 3); } | DMAT3X4 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(3, 4); } | DMAT4X2 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(4, 2); } | DMAT4X3 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(4, 3); } | DMAT4X4 { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(4, 4); } | F16MAT2 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(2, 2); } | F16MAT3 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(3, 3); } | F16MAT4 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(4, 4); } | F16MAT2X2 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(2, 2); } | F16MAT2X3 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(2, 3); } | F16MAT2X4 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(2, 4); } | F16MAT3X2 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(3, 2); } | F16MAT3X3 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(3, 3); } | F16MAT3X4 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(3, 4); } | F16MAT4X2 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(4, 2); } | F16MAT4X3 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(4, 3); } | F16MAT4X4 { parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat16; $$.setMatrix(4, 4); } | F32MAT2 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(2, 2); } | F32MAT3 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(3, 3); } | F32MAT4 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(4, 4); } | F32MAT2X2 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(2, 2); } | F32MAT2X3 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(2, 3); } | F32MAT2X4 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(2, 4); } | F32MAT3X2 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(3, 2); } | F32MAT3X3 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(3, 3); } | F32MAT3X4 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(3, 4); } | F32MAT4X2 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(4, 2); } | F32MAT4X3 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(4, 3); } | F32MAT4X4 { parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.setMatrix(4, 4); } | F64MAT2 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(2, 2); } | F64MAT3 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(3, 3); } | F64MAT4 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(4, 4); } | F64MAT2X2 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(2, 2); } | F64MAT2X3 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(2, 3); } | F64MAT2X4 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(2, 4); } | F64MAT3X2 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(3, 2); } | F64MAT3X3 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(3, 3); } | F64MAT3X4 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(3, 4); } | F64MAT4X2 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(4, 2); } | F64MAT4X3 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(4, 3); } | F64MAT4X4 { parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; $$.setMatrix(4, 4); } | ACCSTRUCTNV { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtAccStruct; } | ACCSTRUCTEXT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtAccStruct; } | RAYQUERYEXT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtRayQuery; } | ATOMIC_UINT { parseContext.vulkanRemoved($1.loc, "atomic counter types"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtAtomicUint; } | SAMPLER1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D); } | SAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D); } | SAMPLER3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd3D); } | SAMPLERCUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube); } | SAMPLER2DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D, false, true); } | SAMPLERCUBESHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, false, true); } | SAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D, true); } | SAMPLER2DARRAYSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D, true, true); } | SAMPLER1DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D, false, true); } | SAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D, true); } | SAMPLER1DARRAYSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D, true, true); } | SAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, true); } | SAMPLERCUBEARRAYSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, true, true); } | F16SAMPLER1D { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd1D); } | F16SAMPLER2D { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd2D); } | F16SAMPLER3D { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd3D); } | F16SAMPLERCUBE { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdCube); } | F16SAMPLER1DSHADOW { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd1D, false, true); } | F16SAMPLER2DSHADOW { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd2D, false, true); } | F16SAMPLERCUBESHADOW { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdCube, false, true); } | F16SAMPLER1DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd1D, true); } | F16SAMPLER2DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd2D, true); } | F16SAMPLER1DARRAYSHADOW { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd1D, true, true); } | F16SAMPLER2DARRAYSHADOW { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd2D, true, true); } | F16SAMPLERCUBEARRAY { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdCube, true); } | F16SAMPLERCUBEARRAYSHADOW { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdCube, true, true); } | ISAMPLER1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd1D); } | ISAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd2D); } | ISAMPLER3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd3D); } | ISAMPLERCUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdCube); } | ISAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd2D, true); } | USAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D); } | USAMPLER3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd3D); } | USAMPLERCUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, EsdCube); } | ISAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd1D, true); } | ISAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdCube, true); } | USAMPLER1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd1D); } | USAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd1D, true); } | USAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, EsdCube, true); } | TEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, EsdCube, true); } | ITEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, EsdCube, true); } | UTEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, EsdCube, true); } | USAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true); } | TEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd2D); } | TEXTURE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd3D); } | TEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd2D, true); } | TEXTURECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, EsdCube); } | ITEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd2D); } | ITEXTURE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd3D); } | ITEXTURECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, EsdCube); } | ITEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd2D, true); } | UTEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd2D); } | UTEXTURE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd3D); } | UTEXTURECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, EsdCube); } | UTEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd2D, true); } | SAMPLER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setPureSampler(false); } | SAMPLERSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setPureSampler(true); } | SAMPLER2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdRect); } | SAMPLER2DRECTSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdRect, false, true); } | F16SAMPLER2DRECT { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdRect); } | F16SAMPLER2DRECTSHADOW { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdRect, false, true); } | ISAMPLER2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdRect); } | USAMPLER2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, EsdRect); } | SAMPLERBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdBuffer); } | F16SAMPLERBUFFER { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdBuffer); } | ISAMPLERBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdBuffer); } | USAMPLERBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, EsdBuffer); } | SAMPLER2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D, false, false, true); } | F16SAMPLER2DMS { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd2D, false, false, true); } | ISAMPLER2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd2D, false, false, true); } | USAMPLER2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, false, false, true); } | SAMPLER2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D, true, false, true); } | F16SAMPLER2DMSARRAY { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd2D, true, false, true); } | ISAMPLER2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd2D, true, false, true); } | USAMPLER2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true, false, true); } | TEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd1D); } | F16TEXTURE1D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D); } | F16TEXTURE2D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D); } | F16TEXTURE3D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd3D); } | F16TEXTURECUBE { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, EsdCube); } | TEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd1D, true); } | F16TEXTURE1DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D, true); } | F16TEXTURE2DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D, true); } | F16TEXTURECUBEARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, EsdCube, true); } | ITEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd1D); } | ITEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd1D, true); } | UTEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd1D); } | UTEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd1D, true); } | TEXTURE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, EsdRect); } | F16TEXTURE2DRECT { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, EsdRect); } | ITEXTURE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, EsdRect); } | UTEXTURE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, EsdRect); } | TEXTUREBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, EsdBuffer); } | F16TEXTUREBUFFER { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, EsdBuffer); } | ITEXTUREBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, EsdBuffer); } | UTEXTUREBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, EsdBuffer); } | TEXTURE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd2D, false, false, true); } | F16TEXTURE2DMS { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } | ITEXTURE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd2D, false, false, true); } | UTEXTURE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd2D, false, false, true); } | TEXTURE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd2D, true, false, true); } | F16TEXTURE2DMSARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } | ITEXTURE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd2D, true, false, true); } | UTEXTURE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd2D, true, false, true); } | IMAGE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, Esd1D); } | F16IMAGE1D { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd1D); } | IIMAGE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, Esd1D); } | UIMAGE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd1D); } | IMAGE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, Esd2D); } | F16IMAGE2D { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd2D); } | IIMAGE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, Esd2D); } | UIMAGE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd2D); } | IMAGE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, Esd3D); } | F16IMAGE3D { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd3D); } | IIMAGE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, Esd3D); } | UIMAGE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd3D); } | IMAGE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, EsdRect); } | F16IMAGE2DRECT { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, EsdRect); } | IIMAGE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, EsdRect); } | UIMAGE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, EsdRect); } | IMAGECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, EsdCube); } | F16IMAGECUBE { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, EsdCube); } | IIMAGECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, EsdCube); } | UIMAGECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, EsdCube); } | IMAGEBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, EsdBuffer); } | F16IMAGEBUFFER { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, EsdBuffer); } | IIMAGEBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, EsdBuffer); } | UIMAGEBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, EsdBuffer); } | IMAGE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, Esd1D, true); } | F16IMAGE1DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd1D, true); } | IIMAGE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, Esd1D, true); } | UIMAGE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd1D, true); } | IMAGE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, Esd2D, true); } | F16IMAGE2DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd2D, true); } | IIMAGE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, Esd2D, true); } | UIMAGE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd2D, true); } | IMAGECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, EsdCube, true); } | F16IMAGECUBEARRAY { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, EsdCube, true); } | IIMAGECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, EsdCube, true); } | UIMAGECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, EsdCube, true); } | IMAGE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, Esd2D, false, false, true); } | F16IMAGE2DMS { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd2D, false, false, true); } | IIMAGE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, Esd2D, false, false, true); } | UIMAGE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd2D, false, false, true); } | IMAGE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat, Esd2D, true, false, true); } | F16IMAGE2DMSARRAY { parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd2D, true, false, true); } | IIMAGE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt, Esd2D, true, false, true); } | UIMAGE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd2D, true, false, true); } | I64IMAGE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, Esd1D); } | U64IMAGE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, Esd1D); } | I64IMAGE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, Esd2D); } | U64IMAGE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, Esd2D); } | I64IMAGE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, Esd3D); } | U64IMAGE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, Esd3D); } | I64IMAGE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, EsdRect); } | U64IMAGE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, EsdRect); } | I64IMAGECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, EsdCube); } | U64IMAGECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, EsdCube); } | I64IMAGEBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, EsdBuffer); } | U64IMAGEBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, EsdBuffer); } | I64IMAGE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, Esd1D, true); } | U64IMAGE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, Esd1D, true); } | I64IMAGE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, Esd2D, true); } | U64IMAGE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, Esd2D, true); } | I64IMAGECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, EsdCube, true); } | U64IMAGECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, EsdCube, true); } | I64IMAGE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, Esd2D, false, false, true); } | U64IMAGE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, Esd2D, false, false, true); } | I64IMAGE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtInt64, Esd2D, true, false, true); } | U64IMAGE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint64, Esd2D, true, false, true); } | SAMPLEREXTERNALOES { // GL_OES_EGL_image_external $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D); $$.sampler.external = true; } | SAMPLEREXTERNAL2DY2YEXT { // GL_EXT_YUV_target $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D); $$.sampler.yuv = true; } | ATTACHMENTEXT { parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setAttachmentEXT(EbtFloat); } | IATTACHMENTEXT { parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setAttachmentEXT(EbtInt); } | UATTACHMENTEXT { parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setAttachmentEXT(EbtUint); } | SUBPASSINPUT { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setSubpass(EbtFloat); } | SUBPASSINPUTMS { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setSubpass(EbtFloat, true); } | F16SUBPASSINPUT { parseContext.float16OpaqueCheck($1.loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setSubpass(EbtFloat16); } | F16SUBPASSINPUTMS { parseContext.float16OpaqueCheck($1.loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setSubpass(EbtFloat16, true); } | ISUBPASSINPUT { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setSubpass(EbtInt); } | ISUBPASSINPUTMS { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setSubpass(EbtInt, true); } | USUBPASSINPUT { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setSubpass(EbtUint); } | USUBPASSINPUTMS { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setSubpass(EbtUint, true); } | FCOOPMATNV { parseContext.fcoopmatCheckNV($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; $$.coopmatNV = true; $$.coopmatKHR = false; } | ICOOPMATNV { parseContext.intcoopmatCheckNV($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; $$.coopmatNV = true; $$.coopmatKHR = false; } | UCOOPMATNV { parseContext.intcoopmatCheckNV($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; $$.coopmatNV = true; $$.coopmatKHR = false; } | COOPMAT { parseContext.coopmatCheck($1.loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtCoopmat; $$.coopmatNV = false; $$.coopmatKHR = true; } | TENSORLAYOUTNV { parseContext.tensorLayoutViewCheck($1.loc, "tensorLayoutNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtTensorLayoutNV; } | TENSORVIEWNV { parseContext.tensorLayoutViewCheck($1.loc, "tensorViewNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtTensorViewNV; } | FUNCTION { $$.init($1.loc); $$.basicType = EbtFunction; } | COOPVECNV { parseContext.coopvecCheck($1.loc, "coopvecNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtCoopvecNV; $$.coopvecNV = true; } | TENSORARM { parseContext.tensorCheckARM($1.loc, "tensorARM", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.tensorRankARM = 1; // placeholder value $$.basicType = EbtTensorARM; } | spirv_type_specifier { parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); $$ = $1; } | HITOBJECTNV { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtHitObjectNV; } | struct_specifier { $$ = $1; $$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck($$.loc, $$); } | TYPE_NAME { // // This is for user defined type names. The lexical phase looked up the // type. // if (const TVariable* variable = ($1.symbol)->getAsVariable()) { const TType& structure = variable->getType(); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtStruct; $$.userDef = &structure; } else parseContext.error($1.loc, "expected type name", $1.string->c_str(), ""); } ; precision_qualifier : HIGH_PRECISION { parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "highp precision qualifier"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqHigh); } | MEDIUM_PRECISION { parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "mediump precision qualifier"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqMedium); } | LOW_PRECISION { parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "lowp precision qualifier"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqLow); } ; struct_specifier : STRUCT IDENTIFIER LEFT_BRACE { parseContext.nestedStructCheck($1.loc); } struct_declaration_list RIGHT_BRACE { TType* structure = new TType($5, *$2.string); parseContext.structArrayCheck($2.loc, *structure); TVariable* userTypeDef = new TVariable($2.string, *structure, true); if (! parseContext.symbolTable.insert(*userTypeDef)) parseContext.error($2.loc, "redefinition", $2.string->c_str(), "struct"); else if (parseContext.spvVersion.vulkanRelaxed && structure->containsOpaque()) parseContext.relaxedSymbols.push_back(structure->getTypeName()); $$.init($1.loc); $$.basicType = EbtStruct; $$.userDef = structure; --parseContext.structNestingLevel; } | STRUCT LEFT_BRACE { parseContext.nestedStructCheck($1.loc); } struct_declaration_list RIGHT_BRACE { TType* structure = new TType($4, TString("")); $$.init($1.loc); $$.basicType = EbtStruct; $$.userDef = structure; --parseContext.structNestingLevel; } ; struct_declaration_list : struct_declaration { $$ = $1; } | struct_declaration_list struct_declaration { $$ = $1; for (unsigned int i = 0; i < $2->size(); ++i) { for (unsigned int j = 0; j < $$->size(); ++j) { if ((*$$)[j].type->getFieldName() == (*$2)[i].type->getFieldName()) parseContext.error((*$2)[i].loc, "duplicate member name:", "", (*$2)[i].type->getFieldName().c_str()); } $$->push_back((*$2)[i]); } } ; struct_declaration : type_specifier struct_declarator_list SEMICOLON { if ($1.arraySizes) { parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); } $$ = $2; parseContext.voidErrorCheck($1.loc, (*$2)[0].type->getFieldName(), $1.basicType); parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier, $1.hasTypeParameter()); for (unsigned int i = 0; i < $$->size(); ++i) { TType type($1); type.setFieldName((*$$)[i].type->getFieldName()); type.transferArraySizes((*$$)[i].type->getArraySizes()); type.copyArrayInnerSizes($1.arraySizes); parseContext.arrayOfArrayVersionCheck((*$$)[i].loc, type.getArraySizes()); (*$$)[i].type->shallowCopy(type); } } | type_qualifier type_specifier struct_declarator_list SEMICOLON { if ($2.arraySizes) { parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type"); if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck($2.loc, *$2.arraySizes); } $$ = $3; parseContext.memberQualifierCheck($1); parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.hasTypeParameter()); for (unsigned int i = 0; i < $$->size(); ++i) { TType type($2); type.setFieldName((*$$)[i].type->getFieldName()); type.transferArraySizes((*$$)[i].type->getArraySizes()); type.copyArrayInnerSizes($2.arraySizes); parseContext.arrayOfArrayVersionCheck((*$$)[i].loc, type.getArraySizes()); (*$$)[i].type->shallowCopy(type); } } ; struct_declarator_list : struct_declarator { $$ = new TTypeList; $$->push_back($1); } | struct_declarator_list COMMA struct_declarator { $$->push_back($3); } ; struct_declarator : IDENTIFIER { $$.type = new TType(EbtVoid); $$.loc = $1.loc; $$.type->setFieldName(*$1.string); } | IDENTIFIER array_specifier { parseContext.arrayOfArrayVersionCheck($1.loc, $2.arraySizes); $$.type = new TType(EbtVoid); $$.loc = $1.loc; $$.type->setFieldName(*$1.string); $$.type->transferArraySizes($2.arraySizes); } ; initializer : assignment_expression { $$ = $1; } | LEFT_BRACE initializer_list RIGHT_BRACE { const char* initFeature = "{ } style initializers"; parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); $$ = $2; } | LEFT_BRACE initializer_list COMMA RIGHT_BRACE { const char* initFeature = "{ } style initializers"; parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); $$ = $2; } | LEFT_BRACE RIGHT_BRACE { const char* initFeature = "empty { } initializer"; parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); $$ = parseContext.intermediate.makeAggregate($1.loc); } ; initializer_list : initializer { $$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc()); } | initializer_list COMMA initializer { $$ = parseContext.intermediate.growAggregate($1, $3); } ; declaration_statement : declaration { $$ = $1; } ; statement : compound_statement { $$ = $1; } | simple_statement { $$ = $1; } ; // Grammar Note: labeled statements for switch statements only; 'goto' is not supported. simple_statement : declaration_statement { $$ = $1; } | expression_statement { $$ = $1; } | selection_statement { $$ = $1; } | switch_statement { $$ = $1; } | case_label { $$ = $1; } | iteration_statement { $$ = $1; } | jump_statement { $$ = $1; } | demote_statement { $$ = $1; } ; demote_statement : DEMOTE SEMICOLON { parseContext.requireStage($1.loc, EShLangFragment, "demote"); parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); $$ = parseContext.intermediate.addBranch(EOpDemote, $1.loc); } ; compound_statement : LEFT_BRACE RIGHT_BRACE { $$ = 0; } | LEFT_BRACE { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } statement_list { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } RIGHT_BRACE { if ($3 && $3->getAsAggregate()) { $3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); $3->getAsAggregate()->setEndLoc($5.loc); } $$ = $3; } ; statement_no_new_scope : compound_statement_no_new_scope { $$ = $1; } | simple_statement { $$ = $1; } ; statement_scoped : { ++parseContext.controlFlowNestingLevel; } compound_statement { --parseContext.controlFlowNestingLevel; $$ = $2; } | { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } simple_statement { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; $$ = $2; } compound_statement_no_new_scope // Statement that doesn't create a new scope, for selection_statement, iteration_statement : LEFT_BRACE RIGHT_BRACE { $$ = 0; } | LEFT_BRACE statement_list RIGHT_BRACE { if ($2 && $2->getAsAggregate()) { $2->getAsAggregate()->setOperator(EOpSequence); $2->getAsAggregate()->setEndLoc($3.loc); } $$ = $2; } ; statement_list : statement { $$ = parseContext.intermediate.makeAggregate($1); if ($1 && $1->getAsBranchNode() && ($1->getAsBranchNode()->getFlowOp() == EOpCase || $1->getAsBranchNode()->getFlowOp() == EOpDefault)) { parseContext.wrapupSwitchSubsequence(0, $1); $$ = 0; // start a fresh subsequence for what's after this case } } | statement_list statement { if ($2 && $2->getAsBranchNode() && ($2->getAsBranchNode()->getFlowOp() == EOpCase || $2->getAsBranchNode()->getFlowOp() == EOpDefault)) { parseContext.wrapupSwitchSubsequence($1 ? $1->getAsAggregate() : 0, $2); $$ = 0; // start a fresh subsequence for what's after this case } else $$ = parseContext.intermediate.growAggregate($1, $2); } ; expression_statement : SEMICOLON { $$ = 0; } | expression SEMICOLON { $$ = static_cast($1); } ; selection_statement : selection_statement_nonattributed { $$ = $1; } | attribute selection_statement_nonattributed { parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*$1, $2); $$ = $2; } selection_statement_nonattributed : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { parseContext.boolCheck($1.loc, $3); $$ = parseContext.intermediate.addSelection($3, $5, $1.loc); } ; selection_rest_statement : statement_scoped ELSE statement_scoped { $$.node1 = $1; $$.node2 = $3; } | statement_scoped { $$.node1 = $1; $$.node2 = 0; } ; condition // In 1996 c++ draft, conditions can include single declarations : expression { $$ = $1; parseContext.boolCheck($1->getLoc(), $1); } | fully_specified_type IDENTIFIER EQUAL initializer { parseContext.boolCheck($2.loc, $1); TType type($1); TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); if (initNode) $$ = initNode->getAsTyped(); else $$ = 0; } ; switch_statement : switch_statement_nonattributed { $$ = $1; } | attribute switch_statement_nonattributed { parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*$1, $2); $$ = $2; } switch_statement_nonattributed : SWITCH LEFT_PAREN expression RIGHT_PAREN { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; ++parseContext.statementNestingLevel; parseContext.switchSequenceStack.push_back(new TIntermSequence); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } LEFT_BRACE switch_statement_list RIGHT_BRACE { $$ = parseContext.addSwitch($1.loc, $3, $7 ? $7->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); parseContext.switchSequenceStack.pop_back(); parseContext.switchLevel.pop_back(); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } ; switch_statement_list : /* nothing */ { $$ = 0; } | statement_list { $$ = $1; } ; case_label : CASE expression COLON { $$ = 0; if (parseContext.switchLevel.size() == 0) parseContext.error($1.loc, "cannot appear outside switch statement", "case", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) parseContext.error($1.loc, "cannot be nested inside control flow", "case", ""); else { parseContext.constantValueCheck($2, "case"); parseContext.integerCheck($2, "case"); $$ = parseContext.intermediate.addBranch(EOpCase, $2, $1.loc); } } | DEFAULT COLON { $$ = 0; if (parseContext.switchLevel.size() == 0) parseContext.error($1.loc, "cannot appear outside switch statement", "default", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) parseContext.error($1.loc, "cannot be nested inside control flow", "default", ""); else $$ = parseContext.intermediate.addBranch(EOpDefault, $1.loc); } ; iteration_statement : iteration_statement_nonattributed { $$ = $1; } | attribute iteration_statement_nonattributed { const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; parseContext.requireExtensions($2->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*$1, $2); $$ = $2; } iteration_statement_nonattributed : WHILE LEFT_PAREN { if (! parseContext.limits.whileLoops) parseContext.error($1.loc, "while loops not available", "limitation", ""); parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } condition RIGHT_PAREN statement_no_new_scope { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); $$ = parseContext.intermediate.addLoop($6, $4, 0, true, $1.loc); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } | DO { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON { if (! parseContext.limits.whileLoops) parseContext.error($1.loc, "do-while loops not available", "limitation", ""); parseContext.boolCheck($8.loc, $6); $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } | FOR LEFT_PAREN { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); $$ = parseContext.intermediate.makeAggregate($4, $2.loc); TIntermLoop* forLoop = parseContext.intermediate.addLoop($7, reinterpret_cast($5.node1), reinterpret_cast($5.node2), true, $1.loc); if (! parseContext.limits.nonInductiveForLoops) parseContext.inductiveLoopCheck($1.loc, $4, forLoop); $$ = parseContext.intermediate.growAggregate($$, forLoop, $1.loc); $$->getAsAggregate()->setOperator(EOpSequence); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } ; for_init_statement : expression_statement { $$ = $1; } | declaration_statement { $$ = $1; } ; conditionopt : condition { $$ = $1; } | /* May be null */ { $$ = 0; } ; for_rest_statement : conditionopt SEMICOLON { $$.node1 = $1; $$.node2 = 0; } | conditionopt SEMICOLON expression { $$.node1 = $1; $$.node2 = $3; } ; jump_statement : CONTINUE SEMICOLON { if (parseContext.loopNestingLevel <= 0) parseContext.error($1.loc, "continue statement only allowed in loops", "", ""); $$ = parseContext.intermediate.addBranch(EOpContinue, $1.loc); } | BREAK SEMICOLON { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error($1.loc, "break statement only allowed in switch and loops", "", ""); $$ = parseContext.intermediate.addBranch(EOpBreak, $1.loc); } | RETURN SEMICOLON { $$ = parseContext.intermediate.addBranch(EOpReturn, $1.loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) parseContext.error($1.loc, "non-void function must return a value", "return", ""); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } | RETURN expression SEMICOLON { $$ = parseContext.handleReturnValue($1.loc, $2); } | DISCARD SEMICOLON { parseContext.requireStage($1.loc, EShLangFragment, "discard"); $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc); } | TERMINATE_INVOCATION SEMICOLON { parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); } | TERMINATE_RAY SEMICOLON { parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT"); $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc); } | IGNORE_INTERSECTION SEMICOLON { parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT"); $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc); } ; // Grammar Note: No 'goto'. Gotos are not supported. translation_unit : external_declaration { $$ = $1; parseContext.intermediate.setTreeRoot($$); } | translation_unit external_declaration { if ($2 != nullptr) { $$ = parseContext.intermediate.growAggregate($1, $2); parseContext.intermediate.setTreeRoot($$); } } ; external_declaration : function_definition { $$ = $1; } | declaration { $$ = $1; } | SEMICOLON { parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); $$ = nullptr; } ; function_definition : function_prototype { $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */); $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function); // For ES 100 only, according to ES shading language 100 spec: A function // body has a scope nested inside the function's definition. if (parseContext.profile == EEsProfile && parseContext.version == 100) { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } } compound_statement_no_new_scope { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) parseContext.error($1.loc, "function does not return a value:", "", $1.function->getName().c_str()); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); $$ = parseContext.intermediate.growAggregate($1.intermNode, $3); $$->getAsAggregate()->setLinkType($1.function->getLinkType()); parseContext.intermediate.setAggregateOperator($$, EOpFunction, $1.function->getType(), $1.loc); $$->getAsAggregate()->setName($1.function->getMangledName().c_str()); // store the pragma information for debug and optimize and other vendor specific // information. This information can be queried from the parse tree $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug); $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); // Set currentFunctionType to empty pointer when goes outside of the function parseContext.currentFunctionType = nullptr; // For ES 100 only, according to ES shading language 100 spec: A function // body has a scope nested inside the function's definition. if (parseContext.profile == EEsProfile && parseContext.version == 100) { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } } ; attribute : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { $$ = $3; } attribute_list : single_attribute { $$ = $1; } | attribute_list COMMA single_attribute { $$ = parseContext.mergeAttributes($1, $3); } single_attribute : IDENTIFIER { $$ = parseContext.makeAttributes(*$1.string); } | IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN { $$ = parseContext.makeAttributes(*$1.string, $3); } spirv_requirements_list : spirv_requirements_parameter { $$ = $1; } | spirv_requirements_list COMMA spirv_requirements_parameter { $$ = parseContext.mergeSpirvRequirements($2.loc, $1, $3); } spirv_requirements_parameter : IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET { $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, $4->getAsAggregate(), nullptr); } | IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET { $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, nullptr, $4->getAsAggregate()); } spirv_extension_list : STRING_LITERAL { $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.string, $1.loc, true)); } | spirv_extension_list COMMA STRING_LITERAL { $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true)); } spirv_capability_list : INTCONSTANT { $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.i, $1.loc, true)); } | spirv_capability_list COMMA INTCONSTANT { $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.i, $3.loc, true)); } spirv_execution_mode_qualifier : SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN { parseContext.intermediate.insertSpirvExecutionMode($3.i); $$ = 0; } | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN { parseContext.intermediate.insertSpirvRequirement($3); parseContext.intermediate.insertSpirvExecutionMode($5.i); $$ = 0; } | SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN { parseContext.intermediate.insertSpirvExecutionMode($3.i, $5->getAsAggregate()); $$ = 0; } | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN { parseContext.intermediate.insertSpirvRequirement($3); parseContext.intermediate.insertSpirvExecutionMode($5.i, $7->getAsAggregate()); $$ = 0; } | SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN { parseContext.intermediate.insertSpirvExecutionModeId($3.i, $5->getAsAggregate()); $$ = 0; } | SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN { parseContext.intermediate.insertSpirvRequirement($3); parseContext.intermediate.insertSpirvExecutionModeId($5.i, $7->getAsAggregate()); $$ = 0; } spirv_execution_mode_parameter_list : spirv_execution_mode_parameter { $$ = parseContext.intermediate.makeAggregate($1); } | spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter { $$ = parseContext.intermediate.growAggregate($1, $3); } spirv_execution_mode_parameter : FLOATCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); } | INTCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); } | UINTCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); } | BOOLCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } | STRING_LITERAL { $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); } spirv_execution_mode_id_parameter_list : constant_expression { if ($1->getBasicType() != EbtFloat && $1->getBasicType() != EbtInt && $1->getBasicType() != EbtUint && $1->getBasicType() != EbtBool && $1->getBasicType() != EbtString) parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), ""); $$ = parseContext.intermediate.makeAggregate($1); } | spirv_execution_mode_id_parameter_list COMMA constant_expression { if ($3->getBasicType() != EbtFloat && $3->getBasicType() != EbtInt && $3->getBasicType() != EbtUint && $3->getBasicType() != EbtBool && $3->getBasicType() != EbtString) parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), ""); $$ = parseContext.intermediate.growAggregate($1, $3); } spirv_storage_class_qualifier : SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN { $$.init($1.loc); $$.qualifier.storage = EvqSpirvStorageClass; $$.qualifier.spirvStorageClass = $3.i; } | SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN { $$.init($1.loc); parseContext.intermediate.insertSpirvRequirement($3); $$.qualifier.storage = EvqSpirvStorageClass; $$.qualifier.spirvStorageClass = $5.i; } spirv_decorate_qualifier : SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN{ $$.init($1.loc); $$.qualifier.setSpirvDecorate($3.i); } | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN{ $$.init($1.loc); parseContext.intermediate.insertSpirvRequirement($3); $$.qualifier.setSpirvDecorate($5.i); } | SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN { $$.init($1.loc); $$.qualifier.setSpirvDecorate($3.i, $5->getAsAggregate()); } | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN { $$.init($1.loc); parseContext.intermediate.insertSpirvRequirement($3); $$.qualifier.setSpirvDecorate($5.i, $7->getAsAggregate()); } | SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN { $$.init($1.loc); $$.qualifier.setSpirvDecorateId($3.i, $5->getAsAggregate()); } | SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN { $$.init($1.loc); parseContext.intermediate.insertSpirvRequirement($3); $$.qualifier.setSpirvDecorateId($5.i, $7->getAsAggregate()); } | SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN { $$.init($1.loc); $$.qualifier.setSpirvDecorateString($3.i, $5->getAsAggregate()); } | SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN { $$.init($1.loc); parseContext.intermediate.insertSpirvRequirement($3); $$.qualifier.setSpirvDecorateString($5.i, $7->getAsAggregate()); } spirv_decorate_parameter_list : spirv_decorate_parameter { $$ = parseContext.intermediate.makeAggregate($1); } | spirv_decorate_parameter_list COMMA spirv_decorate_parameter { $$ = parseContext.intermediate.growAggregate($1, $3); } spirv_decorate_parameter : FLOATCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); } | INTCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); } | UINTCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); } | BOOLCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } spirv_decorate_id_parameter_list : spirv_decorate_id_parameter { $$ = parseContext.intermediate.makeAggregate($1); } | spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter { $$ = parseContext.intermediate.growAggregate($1, $3); } spirv_decorate_id_parameter : variable_identifier { if ($1->getAsConstantUnion() || $1->getAsSymbolNode()) $$ = $1; else parseContext.error($1->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } | FLOATCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); } | INTCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); } | UINTCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); } | BOOLCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } spirv_decorate_string_parameter_list : STRING_LITERAL { $$ = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion($1.string, $1.loc, true)); } | spirv_decorate_string_parameter_list COMMA STRING_LITERAL { $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true)); } spirv_type_specifier : SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.setSpirvType(*$3, $5); } | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement($3); $$.setSpirvType(*$5, $7); } | SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.setSpirvType(*$3); } | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement($3); $$.setSpirvType(*$5); } spirv_type_parameter_list : spirv_type_parameter { $$ = $1; } | spirv_type_parameter_list COMMA spirv_type_parameter { $$ = parseContext.mergeSpirvTypeParameters($1, $3); } spirv_type_parameter : constant_expression { $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion()); } | type_specifier_nonarray { $$ = parseContext.makeSpirvTypeParameters($1.loc, $1); } spirv_instruction_qualifier : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { $$ = $3; } | SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN { parseContext.intermediate.insertSpirvRequirement($3); $$ = $5; } spirv_instruction_qualifier_list : spirv_instruction_qualifier_id { $$ = $1; } | spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id { $$ = parseContext.mergeSpirvInstruction($2.loc, $1, $3); } spirv_instruction_qualifier_id : IDENTIFIER EQUAL STRING_LITERAL { $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, *$3.string); } | IDENTIFIER EQUAL INTCONSTANT { $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i); } %% glslang-16.0.0/glslang/MachineIndependent/glslang_tab.cpp000066400000000000000000024611751506534232700234060ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. 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. 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. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* 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. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ #define YYBISON 30802 /* Bison version string. */ #define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* First part of user prologue. */ #line 44 "MachineIndependent/glslang.y" /* Based on: ANSI C Yacc grammar In 1985, Jeff Lee published his Yacc grammar (which is accompanied by a matching Lex specification) for the April 30, 1985 draft version of the ANSI C standard. Tom Stockfisch reposted it to net.sources in 1987; that original, as mentioned in the answer to question 17.25 of the comp.lang.c FAQ, can be ftp'ed from ftp.uu.net, file usenet/net.sources/ansi.c.grammar.Z. I intend to keep this version as close to the current C Standard grammar as possible; please let me know if you discover discrepancies. Jutta Degener, 1995 */ #include "SymbolTable.h" #include "ParseHelper.h" #include "../Public/ShaderLang.h" #include "attribute.h" using namespace glslang; #line 97 "MachineIndependent/glslang_tab.cpp" # ifndef YY_CAST # ifdef __cplusplus # define YY_CAST(Type, Val) static_cast (Val) # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) # else # define YY_CAST(Type, Val) ((Type) (Val)) # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) # endif # endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # else # define YY_NULLPTR ((void*)0) # endif # endif #include "glslang_tab.cpp.h" /* Symbol kind. */ enum yysymbol_kind_t { YYSYMBOL_YYEMPTY = -2, YYSYMBOL_YYEOF = 0, /* "end of file" */ YYSYMBOL_YYerror = 1, /* error */ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ YYSYMBOL_CONST = 3, /* CONST */ YYSYMBOL_BOOL = 4, /* BOOL */ YYSYMBOL_INT = 5, /* INT */ YYSYMBOL_UINT = 6, /* UINT */ YYSYMBOL_FLOAT = 7, /* FLOAT */ YYSYMBOL_BVEC2 = 8, /* BVEC2 */ YYSYMBOL_BVEC3 = 9, /* BVEC3 */ YYSYMBOL_BVEC4 = 10, /* BVEC4 */ YYSYMBOL_IVEC2 = 11, /* IVEC2 */ YYSYMBOL_IVEC3 = 12, /* IVEC3 */ YYSYMBOL_IVEC4 = 13, /* IVEC4 */ YYSYMBOL_UVEC2 = 14, /* UVEC2 */ YYSYMBOL_UVEC3 = 15, /* UVEC3 */ YYSYMBOL_UVEC4 = 16, /* UVEC4 */ YYSYMBOL_VEC2 = 17, /* VEC2 */ YYSYMBOL_VEC3 = 18, /* VEC3 */ YYSYMBOL_VEC4 = 19, /* VEC4 */ YYSYMBOL_MAT2 = 20, /* MAT2 */ YYSYMBOL_MAT3 = 21, /* MAT3 */ YYSYMBOL_MAT4 = 22, /* MAT4 */ YYSYMBOL_MAT2X2 = 23, /* MAT2X2 */ YYSYMBOL_MAT2X3 = 24, /* MAT2X3 */ YYSYMBOL_MAT2X4 = 25, /* MAT2X4 */ YYSYMBOL_MAT3X2 = 26, /* MAT3X2 */ YYSYMBOL_MAT3X3 = 27, /* MAT3X3 */ YYSYMBOL_MAT3X4 = 28, /* MAT3X4 */ YYSYMBOL_MAT4X2 = 29, /* MAT4X2 */ YYSYMBOL_MAT4X3 = 30, /* MAT4X3 */ YYSYMBOL_MAT4X4 = 31, /* MAT4X4 */ YYSYMBOL_SAMPLER2D = 32, /* SAMPLER2D */ YYSYMBOL_SAMPLER3D = 33, /* SAMPLER3D */ YYSYMBOL_SAMPLERCUBE = 34, /* SAMPLERCUBE */ YYSYMBOL_SAMPLER2DSHADOW = 35, /* SAMPLER2DSHADOW */ YYSYMBOL_SAMPLERCUBESHADOW = 36, /* SAMPLERCUBESHADOW */ YYSYMBOL_SAMPLER2DARRAY = 37, /* SAMPLER2DARRAY */ YYSYMBOL_SAMPLER2DARRAYSHADOW = 38, /* SAMPLER2DARRAYSHADOW */ YYSYMBOL_ISAMPLER2D = 39, /* ISAMPLER2D */ YYSYMBOL_ISAMPLER3D = 40, /* ISAMPLER3D */ YYSYMBOL_ISAMPLERCUBE = 41, /* ISAMPLERCUBE */ YYSYMBOL_ISAMPLER2DARRAY = 42, /* ISAMPLER2DARRAY */ YYSYMBOL_USAMPLER2D = 43, /* USAMPLER2D */ YYSYMBOL_USAMPLER3D = 44, /* USAMPLER3D */ YYSYMBOL_USAMPLERCUBE = 45, /* USAMPLERCUBE */ YYSYMBOL_USAMPLER2DARRAY = 46, /* USAMPLER2DARRAY */ YYSYMBOL_SAMPLER = 47, /* SAMPLER */ YYSYMBOL_SAMPLERSHADOW = 48, /* SAMPLERSHADOW */ YYSYMBOL_TEXTURE2D = 49, /* TEXTURE2D */ YYSYMBOL_TEXTURE3D = 50, /* TEXTURE3D */ YYSYMBOL_TEXTURECUBE = 51, /* TEXTURECUBE */ YYSYMBOL_TEXTURE2DARRAY = 52, /* TEXTURE2DARRAY */ YYSYMBOL_ITEXTURE2D = 53, /* ITEXTURE2D */ YYSYMBOL_ITEXTURE3D = 54, /* ITEXTURE3D */ YYSYMBOL_ITEXTURECUBE = 55, /* ITEXTURECUBE */ YYSYMBOL_ITEXTURE2DARRAY = 56, /* ITEXTURE2DARRAY */ YYSYMBOL_UTEXTURE2D = 57, /* UTEXTURE2D */ YYSYMBOL_UTEXTURE3D = 58, /* UTEXTURE3D */ YYSYMBOL_UTEXTURECUBE = 59, /* UTEXTURECUBE */ YYSYMBOL_UTEXTURE2DARRAY = 60, /* UTEXTURE2DARRAY */ YYSYMBOL_ATTRIBUTE = 61, /* ATTRIBUTE */ YYSYMBOL_VARYING = 62, /* VARYING */ YYSYMBOL_FLOATE5M2_T = 63, /* FLOATE5M2_T */ YYSYMBOL_FLOATE4M3_T = 64, /* FLOATE4M3_T */ YYSYMBOL_BFLOAT16_T = 65, /* BFLOAT16_T */ YYSYMBOL_FLOAT16_T = 66, /* FLOAT16_T */ YYSYMBOL_FLOAT32_T = 67, /* FLOAT32_T */ YYSYMBOL_DOUBLE = 68, /* DOUBLE */ YYSYMBOL_FLOAT64_T = 69, /* FLOAT64_T */ YYSYMBOL_INT64_T = 70, /* INT64_T */ YYSYMBOL_UINT64_T = 71, /* UINT64_T */ YYSYMBOL_INT32_T = 72, /* INT32_T */ YYSYMBOL_UINT32_T = 73, /* UINT32_T */ YYSYMBOL_INT16_T = 74, /* INT16_T */ YYSYMBOL_UINT16_T = 75, /* UINT16_T */ YYSYMBOL_INT8_T = 76, /* INT8_T */ YYSYMBOL_UINT8_T = 77, /* UINT8_T */ YYSYMBOL_I64VEC2 = 78, /* I64VEC2 */ YYSYMBOL_I64VEC3 = 79, /* I64VEC3 */ YYSYMBOL_I64VEC4 = 80, /* I64VEC4 */ YYSYMBOL_U64VEC2 = 81, /* U64VEC2 */ YYSYMBOL_U64VEC3 = 82, /* U64VEC3 */ YYSYMBOL_U64VEC4 = 83, /* U64VEC4 */ YYSYMBOL_I32VEC2 = 84, /* I32VEC2 */ YYSYMBOL_I32VEC3 = 85, /* I32VEC3 */ YYSYMBOL_I32VEC4 = 86, /* I32VEC4 */ YYSYMBOL_U32VEC2 = 87, /* U32VEC2 */ YYSYMBOL_U32VEC3 = 88, /* U32VEC3 */ YYSYMBOL_U32VEC4 = 89, /* U32VEC4 */ YYSYMBOL_I16VEC2 = 90, /* I16VEC2 */ YYSYMBOL_I16VEC3 = 91, /* I16VEC3 */ YYSYMBOL_I16VEC4 = 92, /* I16VEC4 */ YYSYMBOL_U16VEC2 = 93, /* U16VEC2 */ YYSYMBOL_U16VEC3 = 94, /* U16VEC3 */ YYSYMBOL_U16VEC4 = 95, /* U16VEC4 */ YYSYMBOL_I8VEC2 = 96, /* I8VEC2 */ YYSYMBOL_I8VEC3 = 97, /* I8VEC3 */ YYSYMBOL_I8VEC4 = 98, /* I8VEC4 */ YYSYMBOL_U8VEC2 = 99, /* U8VEC2 */ YYSYMBOL_U8VEC3 = 100, /* U8VEC3 */ YYSYMBOL_U8VEC4 = 101, /* U8VEC4 */ YYSYMBOL_DVEC2 = 102, /* DVEC2 */ YYSYMBOL_DVEC3 = 103, /* DVEC3 */ YYSYMBOL_DVEC4 = 104, /* DVEC4 */ YYSYMBOL_DMAT2 = 105, /* DMAT2 */ YYSYMBOL_DMAT3 = 106, /* DMAT3 */ YYSYMBOL_DMAT4 = 107, /* DMAT4 */ YYSYMBOL_BF16VEC2 = 108, /* BF16VEC2 */ YYSYMBOL_BF16VEC3 = 109, /* BF16VEC3 */ YYSYMBOL_BF16VEC4 = 110, /* BF16VEC4 */ YYSYMBOL_FE5M2VEC2 = 111, /* FE5M2VEC2 */ YYSYMBOL_FE5M2VEC3 = 112, /* FE5M2VEC3 */ YYSYMBOL_FE5M2VEC4 = 113, /* FE5M2VEC4 */ YYSYMBOL_FE4M3VEC2 = 114, /* FE4M3VEC2 */ YYSYMBOL_FE4M3VEC3 = 115, /* FE4M3VEC3 */ YYSYMBOL_FE4M3VEC4 = 116, /* FE4M3VEC4 */ YYSYMBOL_F16VEC2 = 117, /* F16VEC2 */ YYSYMBOL_F16VEC3 = 118, /* F16VEC3 */ YYSYMBOL_F16VEC4 = 119, /* F16VEC4 */ YYSYMBOL_F16MAT2 = 120, /* F16MAT2 */ YYSYMBOL_F16MAT3 = 121, /* F16MAT3 */ YYSYMBOL_F16MAT4 = 122, /* F16MAT4 */ YYSYMBOL_F32VEC2 = 123, /* F32VEC2 */ YYSYMBOL_F32VEC3 = 124, /* F32VEC3 */ YYSYMBOL_F32VEC4 = 125, /* F32VEC4 */ YYSYMBOL_F32MAT2 = 126, /* F32MAT2 */ YYSYMBOL_F32MAT3 = 127, /* F32MAT3 */ YYSYMBOL_F32MAT4 = 128, /* F32MAT4 */ YYSYMBOL_F64VEC2 = 129, /* F64VEC2 */ YYSYMBOL_F64VEC3 = 130, /* F64VEC3 */ YYSYMBOL_F64VEC4 = 131, /* F64VEC4 */ YYSYMBOL_F64MAT2 = 132, /* F64MAT2 */ YYSYMBOL_F64MAT3 = 133, /* F64MAT3 */ YYSYMBOL_F64MAT4 = 134, /* F64MAT4 */ YYSYMBOL_DMAT2X2 = 135, /* DMAT2X2 */ YYSYMBOL_DMAT2X3 = 136, /* DMAT2X3 */ YYSYMBOL_DMAT2X4 = 137, /* DMAT2X4 */ YYSYMBOL_DMAT3X2 = 138, /* DMAT3X2 */ YYSYMBOL_DMAT3X3 = 139, /* DMAT3X3 */ YYSYMBOL_DMAT3X4 = 140, /* DMAT3X4 */ YYSYMBOL_DMAT4X2 = 141, /* DMAT4X2 */ YYSYMBOL_DMAT4X3 = 142, /* DMAT4X3 */ YYSYMBOL_DMAT4X4 = 143, /* DMAT4X4 */ YYSYMBOL_F16MAT2X2 = 144, /* F16MAT2X2 */ YYSYMBOL_F16MAT2X3 = 145, /* F16MAT2X3 */ YYSYMBOL_F16MAT2X4 = 146, /* F16MAT2X4 */ YYSYMBOL_F16MAT3X2 = 147, /* F16MAT3X2 */ YYSYMBOL_F16MAT3X3 = 148, /* F16MAT3X3 */ YYSYMBOL_F16MAT3X4 = 149, /* F16MAT3X4 */ YYSYMBOL_F16MAT4X2 = 150, /* F16MAT4X2 */ YYSYMBOL_F16MAT4X3 = 151, /* F16MAT4X3 */ YYSYMBOL_F16MAT4X4 = 152, /* F16MAT4X4 */ YYSYMBOL_F32MAT2X2 = 153, /* F32MAT2X2 */ YYSYMBOL_F32MAT2X3 = 154, /* F32MAT2X3 */ YYSYMBOL_F32MAT2X4 = 155, /* F32MAT2X4 */ YYSYMBOL_F32MAT3X2 = 156, /* F32MAT3X2 */ YYSYMBOL_F32MAT3X3 = 157, /* F32MAT3X3 */ YYSYMBOL_F32MAT3X4 = 158, /* F32MAT3X4 */ YYSYMBOL_F32MAT4X2 = 159, /* F32MAT4X2 */ YYSYMBOL_F32MAT4X3 = 160, /* F32MAT4X3 */ YYSYMBOL_F32MAT4X4 = 161, /* F32MAT4X4 */ YYSYMBOL_F64MAT2X2 = 162, /* F64MAT2X2 */ YYSYMBOL_F64MAT2X3 = 163, /* F64MAT2X3 */ YYSYMBOL_F64MAT2X4 = 164, /* F64MAT2X4 */ YYSYMBOL_F64MAT3X2 = 165, /* F64MAT3X2 */ YYSYMBOL_F64MAT3X3 = 166, /* F64MAT3X3 */ YYSYMBOL_F64MAT3X4 = 167, /* F64MAT3X4 */ YYSYMBOL_F64MAT4X2 = 168, /* F64MAT4X2 */ YYSYMBOL_F64MAT4X3 = 169, /* F64MAT4X3 */ YYSYMBOL_F64MAT4X4 = 170, /* F64MAT4X4 */ YYSYMBOL_ATOMIC_UINT = 171, /* ATOMIC_UINT */ YYSYMBOL_ACCSTRUCTNV = 172, /* ACCSTRUCTNV */ YYSYMBOL_ACCSTRUCTEXT = 173, /* ACCSTRUCTEXT */ YYSYMBOL_RAYQUERYEXT = 174, /* RAYQUERYEXT */ YYSYMBOL_FCOOPMATNV = 175, /* FCOOPMATNV */ YYSYMBOL_ICOOPMATNV = 176, /* ICOOPMATNV */ YYSYMBOL_UCOOPMATNV = 177, /* UCOOPMATNV */ YYSYMBOL_COOPMAT = 178, /* COOPMAT */ YYSYMBOL_COOPVECNV = 179, /* COOPVECNV */ YYSYMBOL_HITOBJECTNV = 180, /* HITOBJECTNV */ YYSYMBOL_HITOBJECTATTRNV = 181, /* HITOBJECTATTRNV */ YYSYMBOL_TENSORLAYOUTNV = 182, /* TENSORLAYOUTNV */ YYSYMBOL_TENSORVIEWNV = 183, /* TENSORVIEWNV */ YYSYMBOL_TENSORARM = 184, /* TENSORARM */ YYSYMBOL_SAMPLERCUBEARRAY = 185, /* SAMPLERCUBEARRAY */ YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 186, /* SAMPLERCUBEARRAYSHADOW */ YYSYMBOL_ISAMPLERCUBEARRAY = 187, /* ISAMPLERCUBEARRAY */ YYSYMBOL_USAMPLERCUBEARRAY = 188, /* USAMPLERCUBEARRAY */ YYSYMBOL_SAMPLER1D = 189, /* SAMPLER1D */ YYSYMBOL_SAMPLER1DARRAY = 190, /* SAMPLER1DARRAY */ YYSYMBOL_SAMPLER1DARRAYSHADOW = 191, /* SAMPLER1DARRAYSHADOW */ YYSYMBOL_ISAMPLER1D = 192, /* ISAMPLER1D */ YYSYMBOL_SAMPLER1DSHADOW = 193, /* SAMPLER1DSHADOW */ YYSYMBOL_SAMPLER2DRECT = 194, /* SAMPLER2DRECT */ YYSYMBOL_SAMPLER2DRECTSHADOW = 195, /* SAMPLER2DRECTSHADOW */ YYSYMBOL_ISAMPLER2DRECT = 196, /* ISAMPLER2DRECT */ YYSYMBOL_USAMPLER2DRECT = 197, /* USAMPLER2DRECT */ YYSYMBOL_SAMPLERBUFFER = 198, /* SAMPLERBUFFER */ YYSYMBOL_ISAMPLERBUFFER = 199, /* ISAMPLERBUFFER */ YYSYMBOL_USAMPLERBUFFER = 200, /* USAMPLERBUFFER */ YYSYMBOL_SAMPLER2DMS = 201, /* SAMPLER2DMS */ YYSYMBOL_ISAMPLER2DMS = 202, /* ISAMPLER2DMS */ YYSYMBOL_USAMPLER2DMS = 203, /* USAMPLER2DMS */ YYSYMBOL_SAMPLER2DMSARRAY = 204, /* SAMPLER2DMSARRAY */ YYSYMBOL_ISAMPLER2DMSARRAY = 205, /* ISAMPLER2DMSARRAY */ YYSYMBOL_USAMPLER2DMSARRAY = 206, /* USAMPLER2DMSARRAY */ YYSYMBOL_SAMPLEREXTERNALOES = 207, /* SAMPLEREXTERNALOES */ YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 208, /* SAMPLEREXTERNAL2DY2YEXT */ YYSYMBOL_ISAMPLER1DARRAY = 209, /* ISAMPLER1DARRAY */ YYSYMBOL_USAMPLER1D = 210, /* USAMPLER1D */ YYSYMBOL_USAMPLER1DARRAY = 211, /* USAMPLER1DARRAY */ YYSYMBOL_F16SAMPLER1D = 212, /* F16SAMPLER1D */ YYSYMBOL_F16SAMPLER2D = 213, /* F16SAMPLER2D */ YYSYMBOL_F16SAMPLER3D = 214, /* F16SAMPLER3D */ YYSYMBOL_F16SAMPLER2DRECT = 215, /* F16SAMPLER2DRECT */ YYSYMBOL_F16SAMPLERCUBE = 216, /* F16SAMPLERCUBE */ YYSYMBOL_F16SAMPLER1DARRAY = 217, /* F16SAMPLER1DARRAY */ YYSYMBOL_F16SAMPLER2DARRAY = 218, /* F16SAMPLER2DARRAY */ YYSYMBOL_F16SAMPLERCUBEARRAY = 219, /* F16SAMPLERCUBEARRAY */ YYSYMBOL_F16SAMPLERBUFFER = 220, /* F16SAMPLERBUFFER */ YYSYMBOL_F16SAMPLER2DMS = 221, /* F16SAMPLER2DMS */ YYSYMBOL_F16SAMPLER2DMSARRAY = 222, /* F16SAMPLER2DMSARRAY */ YYSYMBOL_F16SAMPLER1DSHADOW = 223, /* F16SAMPLER1DSHADOW */ YYSYMBOL_F16SAMPLER2DSHADOW = 224, /* F16SAMPLER2DSHADOW */ YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 225, /* F16SAMPLER1DARRAYSHADOW */ YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 226, /* F16SAMPLER2DARRAYSHADOW */ YYSYMBOL_F16SAMPLER2DRECTSHADOW = 227, /* F16SAMPLER2DRECTSHADOW */ YYSYMBOL_F16SAMPLERCUBESHADOW = 228, /* F16SAMPLERCUBESHADOW */ YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 229, /* F16SAMPLERCUBEARRAYSHADOW */ YYSYMBOL_IMAGE1D = 230, /* IMAGE1D */ YYSYMBOL_IIMAGE1D = 231, /* IIMAGE1D */ YYSYMBOL_UIMAGE1D = 232, /* UIMAGE1D */ YYSYMBOL_IMAGE2D = 233, /* IMAGE2D */ YYSYMBOL_IIMAGE2D = 234, /* IIMAGE2D */ YYSYMBOL_UIMAGE2D = 235, /* UIMAGE2D */ YYSYMBOL_IMAGE3D = 236, /* IMAGE3D */ YYSYMBOL_IIMAGE3D = 237, /* IIMAGE3D */ YYSYMBOL_UIMAGE3D = 238, /* UIMAGE3D */ YYSYMBOL_IMAGE2DRECT = 239, /* IMAGE2DRECT */ YYSYMBOL_IIMAGE2DRECT = 240, /* IIMAGE2DRECT */ YYSYMBOL_UIMAGE2DRECT = 241, /* UIMAGE2DRECT */ YYSYMBOL_IMAGECUBE = 242, /* IMAGECUBE */ YYSYMBOL_IIMAGECUBE = 243, /* IIMAGECUBE */ YYSYMBOL_UIMAGECUBE = 244, /* UIMAGECUBE */ YYSYMBOL_IMAGEBUFFER = 245, /* IMAGEBUFFER */ YYSYMBOL_IIMAGEBUFFER = 246, /* IIMAGEBUFFER */ YYSYMBOL_UIMAGEBUFFER = 247, /* UIMAGEBUFFER */ YYSYMBOL_IMAGE1DARRAY = 248, /* IMAGE1DARRAY */ YYSYMBOL_IIMAGE1DARRAY = 249, /* IIMAGE1DARRAY */ YYSYMBOL_UIMAGE1DARRAY = 250, /* UIMAGE1DARRAY */ YYSYMBOL_IMAGE2DARRAY = 251, /* IMAGE2DARRAY */ YYSYMBOL_IIMAGE2DARRAY = 252, /* IIMAGE2DARRAY */ YYSYMBOL_UIMAGE2DARRAY = 253, /* UIMAGE2DARRAY */ YYSYMBOL_IMAGECUBEARRAY = 254, /* IMAGECUBEARRAY */ YYSYMBOL_IIMAGECUBEARRAY = 255, /* IIMAGECUBEARRAY */ YYSYMBOL_UIMAGECUBEARRAY = 256, /* UIMAGECUBEARRAY */ YYSYMBOL_IMAGE2DMS = 257, /* IMAGE2DMS */ YYSYMBOL_IIMAGE2DMS = 258, /* IIMAGE2DMS */ YYSYMBOL_UIMAGE2DMS = 259, /* UIMAGE2DMS */ YYSYMBOL_IMAGE2DMSARRAY = 260, /* IMAGE2DMSARRAY */ YYSYMBOL_IIMAGE2DMSARRAY = 261, /* IIMAGE2DMSARRAY */ YYSYMBOL_UIMAGE2DMSARRAY = 262, /* UIMAGE2DMSARRAY */ YYSYMBOL_F16IMAGE1D = 263, /* F16IMAGE1D */ YYSYMBOL_F16IMAGE2D = 264, /* F16IMAGE2D */ YYSYMBOL_F16IMAGE3D = 265, /* F16IMAGE3D */ YYSYMBOL_F16IMAGE2DRECT = 266, /* F16IMAGE2DRECT */ YYSYMBOL_F16IMAGECUBE = 267, /* F16IMAGECUBE */ YYSYMBOL_F16IMAGE1DARRAY = 268, /* F16IMAGE1DARRAY */ YYSYMBOL_F16IMAGE2DARRAY = 269, /* F16IMAGE2DARRAY */ YYSYMBOL_F16IMAGECUBEARRAY = 270, /* F16IMAGECUBEARRAY */ YYSYMBOL_F16IMAGEBUFFER = 271, /* F16IMAGEBUFFER */ YYSYMBOL_F16IMAGE2DMS = 272, /* F16IMAGE2DMS */ YYSYMBOL_F16IMAGE2DMSARRAY = 273, /* F16IMAGE2DMSARRAY */ YYSYMBOL_I64IMAGE1D = 274, /* I64IMAGE1D */ YYSYMBOL_U64IMAGE1D = 275, /* U64IMAGE1D */ YYSYMBOL_I64IMAGE2D = 276, /* I64IMAGE2D */ YYSYMBOL_U64IMAGE2D = 277, /* U64IMAGE2D */ YYSYMBOL_I64IMAGE3D = 278, /* I64IMAGE3D */ YYSYMBOL_U64IMAGE3D = 279, /* U64IMAGE3D */ YYSYMBOL_I64IMAGE2DRECT = 280, /* I64IMAGE2DRECT */ YYSYMBOL_U64IMAGE2DRECT = 281, /* U64IMAGE2DRECT */ YYSYMBOL_I64IMAGECUBE = 282, /* I64IMAGECUBE */ YYSYMBOL_U64IMAGECUBE = 283, /* U64IMAGECUBE */ YYSYMBOL_I64IMAGEBUFFER = 284, /* I64IMAGEBUFFER */ YYSYMBOL_U64IMAGEBUFFER = 285, /* U64IMAGEBUFFER */ YYSYMBOL_I64IMAGE1DARRAY = 286, /* I64IMAGE1DARRAY */ YYSYMBOL_U64IMAGE1DARRAY = 287, /* U64IMAGE1DARRAY */ YYSYMBOL_I64IMAGE2DARRAY = 288, /* I64IMAGE2DARRAY */ YYSYMBOL_U64IMAGE2DARRAY = 289, /* U64IMAGE2DARRAY */ YYSYMBOL_I64IMAGECUBEARRAY = 290, /* I64IMAGECUBEARRAY */ YYSYMBOL_U64IMAGECUBEARRAY = 291, /* U64IMAGECUBEARRAY */ YYSYMBOL_I64IMAGE2DMS = 292, /* I64IMAGE2DMS */ YYSYMBOL_U64IMAGE2DMS = 293, /* U64IMAGE2DMS */ YYSYMBOL_I64IMAGE2DMSARRAY = 294, /* I64IMAGE2DMSARRAY */ YYSYMBOL_U64IMAGE2DMSARRAY = 295, /* U64IMAGE2DMSARRAY */ YYSYMBOL_TEXTURECUBEARRAY = 296, /* TEXTURECUBEARRAY */ YYSYMBOL_ITEXTURECUBEARRAY = 297, /* ITEXTURECUBEARRAY */ YYSYMBOL_UTEXTURECUBEARRAY = 298, /* UTEXTURECUBEARRAY */ YYSYMBOL_TEXTURE1D = 299, /* TEXTURE1D */ YYSYMBOL_ITEXTURE1D = 300, /* ITEXTURE1D */ YYSYMBOL_UTEXTURE1D = 301, /* UTEXTURE1D */ YYSYMBOL_TEXTURE1DARRAY = 302, /* TEXTURE1DARRAY */ YYSYMBOL_ITEXTURE1DARRAY = 303, /* ITEXTURE1DARRAY */ YYSYMBOL_UTEXTURE1DARRAY = 304, /* UTEXTURE1DARRAY */ YYSYMBOL_TEXTURE2DRECT = 305, /* TEXTURE2DRECT */ YYSYMBOL_ITEXTURE2DRECT = 306, /* ITEXTURE2DRECT */ YYSYMBOL_UTEXTURE2DRECT = 307, /* UTEXTURE2DRECT */ YYSYMBOL_TEXTUREBUFFER = 308, /* TEXTUREBUFFER */ YYSYMBOL_ITEXTUREBUFFER = 309, /* ITEXTUREBUFFER */ YYSYMBOL_UTEXTUREBUFFER = 310, /* UTEXTUREBUFFER */ YYSYMBOL_TEXTURE2DMS = 311, /* TEXTURE2DMS */ YYSYMBOL_ITEXTURE2DMS = 312, /* ITEXTURE2DMS */ YYSYMBOL_UTEXTURE2DMS = 313, /* UTEXTURE2DMS */ YYSYMBOL_TEXTURE2DMSARRAY = 314, /* TEXTURE2DMSARRAY */ YYSYMBOL_ITEXTURE2DMSARRAY = 315, /* ITEXTURE2DMSARRAY */ YYSYMBOL_UTEXTURE2DMSARRAY = 316, /* UTEXTURE2DMSARRAY */ YYSYMBOL_F16TEXTURE1D = 317, /* F16TEXTURE1D */ YYSYMBOL_F16TEXTURE2D = 318, /* F16TEXTURE2D */ YYSYMBOL_F16TEXTURE3D = 319, /* F16TEXTURE3D */ YYSYMBOL_F16TEXTURE2DRECT = 320, /* F16TEXTURE2DRECT */ YYSYMBOL_F16TEXTURECUBE = 321, /* F16TEXTURECUBE */ YYSYMBOL_F16TEXTURE1DARRAY = 322, /* F16TEXTURE1DARRAY */ YYSYMBOL_F16TEXTURE2DARRAY = 323, /* F16TEXTURE2DARRAY */ YYSYMBOL_F16TEXTURECUBEARRAY = 324, /* F16TEXTURECUBEARRAY */ YYSYMBOL_F16TEXTUREBUFFER = 325, /* F16TEXTUREBUFFER */ YYSYMBOL_F16TEXTURE2DMS = 326, /* F16TEXTURE2DMS */ YYSYMBOL_F16TEXTURE2DMSARRAY = 327, /* F16TEXTURE2DMSARRAY */ YYSYMBOL_SUBPASSINPUT = 328, /* SUBPASSINPUT */ YYSYMBOL_SUBPASSINPUTMS = 329, /* SUBPASSINPUTMS */ YYSYMBOL_ISUBPASSINPUT = 330, /* ISUBPASSINPUT */ YYSYMBOL_ISUBPASSINPUTMS = 331, /* ISUBPASSINPUTMS */ YYSYMBOL_USUBPASSINPUT = 332, /* USUBPASSINPUT */ YYSYMBOL_USUBPASSINPUTMS = 333, /* USUBPASSINPUTMS */ YYSYMBOL_F16SUBPASSINPUT = 334, /* F16SUBPASSINPUT */ YYSYMBOL_F16SUBPASSINPUTMS = 335, /* F16SUBPASSINPUTMS */ YYSYMBOL_SPIRV_INSTRUCTION = 336, /* SPIRV_INSTRUCTION */ YYSYMBOL_SPIRV_EXECUTION_MODE = 337, /* SPIRV_EXECUTION_MODE */ YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 338, /* SPIRV_EXECUTION_MODE_ID */ YYSYMBOL_SPIRV_DECORATE = 339, /* SPIRV_DECORATE */ YYSYMBOL_SPIRV_DECORATE_ID = 340, /* SPIRV_DECORATE_ID */ YYSYMBOL_SPIRV_DECORATE_STRING = 341, /* SPIRV_DECORATE_STRING */ YYSYMBOL_SPIRV_TYPE = 342, /* SPIRV_TYPE */ YYSYMBOL_SPIRV_STORAGE_CLASS = 343, /* SPIRV_STORAGE_CLASS */ YYSYMBOL_SPIRV_BY_REFERENCE = 344, /* SPIRV_BY_REFERENCE */ YYSYMBOL_SPIRV_LITERAL = 345, /* SPIRV_LITERAL */ YYSYMBOL_ATTACHMENTEXT = 346, /* ATTACHMENTEXT */ YYSYMBOL_IATTACHMENTEXT = 347, /* IATTACHMENTEXT */ YYSYMBOL_UATTACHMENTEXT = 348, /* UATTACHMENTEXT */ YYSYMBOL_LEFT_OP = 349, /* LEFT_OP */ YYSYMBOL_RIGHT_OP = 350, /* RIGHT_OP */ YYSYMBOL_INC_OP = 351, /* INC_OP */ YYSYMBOL_DEC_OP = 352, /* DEC_OP */ YYSYMBOL_LE_OP = 353, /* LE_OP */ YYSYMBOL_GE_OP = 354, /* GE_OP */ YYSYMBOL_EQ_OP = 355, /* EQ_OP */ YYSYMBOL_NE_OP = 356, /* NE_OP */ YYSYMBOL_AND_OP = 357, /* AND_OP */ YYSYMBOL_OR_OP = 358, /* OR_OP */ YYSYMBOL_XOR_OP = 359, /* XOR_OP */ YYSYMBOL_MUL_ASSIGN = 360, /* MUL_ASSIGN */ YYSYMBOL_DIV_ASSIGN = 361, /* DIV_ASSIGN */ YYSYMBOL_ADD_ASSIGN = 362, /* ADD_ASSIGN */ YYSYMBOL_MOD_ASSIGN = 363, /* MOD_ASSIGN */ YYSYMBOL_LEFT_ASSIGN = 364, /* LEFT_ASSIGN */ YYSYMBOL_RIGHT_ASSIGN = 365, /* RIGHT_ASSIGN */ YYSYMBOL_AND_ASSIGN = 366, /* AND_ASSIGN */ YYSYMBOL_XOR_ASSIGN = 367, /* XOR_ASSIGN */ YYSYMBOL_OR_ASSIGN = 368, /* OR_ASSIGN */ YYSYMBOL_SUB_ASSIGN = 369, /* SUB_ASSIGN */ YYSYMBOL_STRING_LITERAL = 370, /* STRING_LITERAL */ YYSYMBOL_LEFT_PAREN = 371, /* LEFT_PAREN */ YYSYMBOL_RIGHT_PAREN = 372, /* RIGHT_PAREN */ YYSYMBOL_LEFT_BRACKET = 373, /* LEFT_BRACKET */ YYSYMBOL_RIGHT_BRACKET = 374, /* RIGHT_BRACKET */ YYSYMBOL_LEFT_BRACE = 375, /* LEFT_BRACE */ YYSYMBOL_RIGHT_BRACE = 376, /* RIGHT_BRACE */ YYSYMBOL_DOT = 377, /* DOT */ YYSYMBOL_COMMA = 378, /* COMMA */ YYSYMBOL_COLON = 379, /* COLON */ YYSYMBOL_EQUAL = 380, /* EQUAL */ YYSYMBOL_SEMICOLON = 381, /* SEMICOLON */ YYSYMBOL_BANG = 382, /* BANG */ YYSYMBOL_DASH = 383, /* DASH */ YYSYMBOL_TILDE = 384, /* TILDE */ YYSYMBOL_PLUS = 385, /* PLUS */ YYSYMBOL_STAR = 386, /* STAR */ YYSYMBOL_SLASH = 387, /* SLASH */ YYSYMBOL_PERCENT = 388, /* PERCENT */ YYSYMBOL_LEFT_ANGLE = 389, /* LEFT_ANGLE */ YYSYMBOL_RIGHT_ANGLE = 390, /* RIGHT_ANGLE */ YYSYMBOL_VERTICAL_BAR = 391, /* VERTICAL_BAR */ YYSYMBOL_CARET = 392, /* CARET */ YYSYMBOL_AMPERSAND = 393, /* AMPERSAND */ YYSYMBOL_QUESTION = 394, /* QUESTION */ YYSYMBOL_INVARIANT = 395, /* INVARIANT */ YYSYMBOL_HIGH_PRECISION = 396, /* HIGH_PRECISION */ YYSYMBOL_MEDIUM_PRECISION = 397, /* MEDIUM_PRECISION */ YYSYMBOL_LOW_PRECISION = 398, /* LOW_PRECISION */ YYSYMBOL_PRECISION = 399, /* PRECISION */ YYSYMBOL_PACKED = 400, /* PACKED */ YYSYMBOL_RESOURCE = 401, /* RESOURCE */ YYSYMBOL_SUPERP = 402, /* SUPERP */ YYSYMBOL_FLOATCONSTANT = 403, /* FLOATCONSTANT */ YYSYMBOL_INTCONSTANT = 404, /* INTCONSTANT */ YYSYMBOL_UINTCONSTANT = 405, /* UINTCONSTANT */ YYSYMBOL_BOOLCONSTANT = 406, /* BOOLCONSTANT */ YYSYMBOL_IDENTIFIER = 407, /* IDENTIFIER */ YYSYMBOL_TYPE_NAME = 408, /* TYPE_NAME */ YYSYMBOL_CENTROID = 409, /* CENTROID */ YYSYMBOL_IN = 410, /* IN */ YYSYMBOL_OUT = 411, /* OUT */ YYSYMBOL_INOUT = 412, /* INOUT */ YYSYMBOL_STRUCT = 413, /* STRUCT */ YYSYMBOL_VOID = 414, /* VOID */ YYSYMBOL_WHILE = 415, /* WHILE */ YYSYMBOL_BREAK = 416, /* BREAK */ YYSYMBOL_CONTINUE = 417, /* CONTINUE */ YYSYMBOL_DO = 418, /* DO */ YYSYMBOL_ELSE = 419, /* ELSE */ YYSYMBOL_FOR = 420, /* FOR */ YYSYMBOL_IF = 421, /* IF */ YYSYMBOL_DISCARD = 422, /* DISCARD */ YYSYMBOL_RETURN = 423, /* RETURN */ YYSYMBOL_SWITCH = 424, /* SWITCH */ YYSYMBOL_CASE = 425, /* CASE */ YYSYMBOL_DEFAULT = 426, /* DEFAULT */ YYSYMBOL_TERMINATE_INVOCATION = 427, /* TERMINATE_INVOCATION */ YYSYMBOL_TERMINATE_RAY = 428, /* TERMINATE_RAY */ YYSYMBOL_IGNORE_INTERSECTION = 429, /* IGNORE_INTERSECTION */ YYSYMBOL_UNIFORM = 430, /* UNIFORM */ YYSYMBOL_SHARED = 431, /* SHARED */ YYSYMBOL_BUFFER = 432, /* BUFFER */ YYSYMBOL_TILEIMAGEEXT = 433, /* TILEIMAGEEXT */ YYSYMBOL_FLAT = 434, /* FLAT */ YYSYMBOL_SMOOTH = 435, /* SMOOTH */ YYSYMBOL_LAYOUT = 436, /* LAYOUT */ YYSYMBOL_DOUBLECONSTANT = 437, /* DOUBLECONSTANT */ YYSYMBOL_INT16CONSTANT = 438, /* INT16CONSTANT */ YYSYMBOL_UINT16CONSTANT = 439, /* UINT16CONSTANT */ YYSYMBOL_FLOAT16CONSTANT = 440, /* FLOAT16CONSTANT */ YYSYMBOL_INT32CONSTANT = 441, /* INT32CONSTANT */ YYSYMBOL_UINT32CONSTANT = 442, /* UINT32CONSTANT */ YYSYMBOL_INT64CONSTANT = 443, /* INT64CONSTANT */ YYSYMBOL_UINT64CONSTANT = 444, /* UINT64CONSTANT */ YYSYMBOL_SUBROUTINE = 445, /* SUBROUTINE */ YYSYMBOL_DEMOTE = 446, /* DEMOTE */ YYSYMBOL_FUNCTION = 447, /* FUNCTION */ YYSYMBOL_PAYLOADNV = 448, /* PAYLOADNV */ YYSYMBOL_PAYLOADINNV = 449, /* PAYLOADINNV */ YYSYMBOL_HITATTRNV = 450, /* HITATTRNV */ YYSYMBOL_CALLDATANV = 451, /* CALLDATANV */ YYSYMBOL_CALLDATAINNV = 452, /* CALLDATAINNV */ YYSYMBOL_PAYLOADEXT = 453, /* PAYLOADEXT */ YYSYMBOL_PAYLOADINEXT = 454, /* PAYLOADINEXT */ YYSYMBOL_HITATTREXT = 455, /* HITATTREXT */ YYSYMBOL_CALLDATAEXT = 456, /* CALLDATAEXT */ YYSYMBOL_CALLDATAINEXT = 457, /* CALLDATAINEXT */ YYSYMBOL_PATCH = 458, /* PATCH */ YYSYMBOL_SAMPLE = 459, /* SAMPLE */ YYSYMBOL_NONUNIFORM = 460, /* NONUNIFORM */ YYSYMBOL_COHERENT = 461, /* COHERENT */ YYSYMBOL_VOLATILE = 462, /* VOLATILE */ YYSYMBOL_RESTRICT = 463, /* RESTRICT */ YYSYMBOL_READONLY = 464, /* READONLY */ YYSYMBOL_WRITEONLY = 465, /* WRITEONLY */ YYSYMBOL_NONTEMPORAL = 466, /* NONTEMPORAL */ YYSYMBOL_DEVICECOHERENT = 467, /* DEVICECOHERENT */ YYSYMBOL_QUEUEFAMILYCOHERENT = 468, /* QUEUEFAMILYCOHERENT */ YYSYMBOL_WORKGROUPCOHERENT = 469, /* WORKGROUPCOHERENT */ YYSYMBOL_SUBGROUPCOHERENT = 470, /* SUBGROUPCOHERENT */ YYSYMBOL_NONPRIVATE = 471, /* NONPRIVATE */ YYSYMBOL_SHADERCALLCOHERENT = 472, /* SHADERCALLCOHERENT */ YYSYMBOL_NOPERSPECTIVE = 473, /* NOPERSPECTIVE */ YYSYMBOL_EXPLICITINTERPAMD = 474, /* EXPLICITINTERPAMD */ YYSYMBOL_PERVERTEXEXT = 475, /* PERVERTEXEXT */ YYSYMBOL_PERVERTEXNV = 476, /* PERVERTEXNV */ YYSYMBOL_PERPRIMITIVENV = 477, /* PERPRIMITIVENV */ YYSYMBOL_PERVIEWNV = 478, /* PERVIEWNV */ YYSYMBOL_PERTASKNV = 479, /* PERTASKNV */ YYSYMBOL_PERPRIMITIVEEXT = 480, /* PERPRIMITIVEEXT */ YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 481, /* TASKPAYLOADWORKGROUPEXT */ YYSYMBOL_PRECISE = 482, /* PRECISE */ YYSYMBOL_YYACCEPT = 483, /* $accept */ YYSYMBOL_variable_identifier = 484, /* variable_identifier */ YYSYMBOL_primary_expression = 485, /* primary_expression */ YYSYMBOL_postfix_expression = 486, /* postfix_expression */ YYSYMBOL_integer_expression = 487, /* integer_expression */ YYSYMBOL_function_call = 488, /* function_call */ YYSYMBOL_function_call_or_method = 489, /* function_call_or_method */ YYSYMBOL_function_call_generic = 490, /* function_call_generic */ YYSYMBOL_function_call_header_no_parameters = 491, /* function_call_header_no_parameters */ YYSYMBOL_function_call_header_with_parameters = 492, /* function_call_header_with_parameters */ YYSYMBOL_function_call_header = 493, /* function_call_header */ YYSYMBOL_function_identifier = 494, /* function_identifier */ YYSYMBOL_unary_expression = 495, /* unary_expression */ YYSYMBOL_unary_operator = 496, /* unary_operator */ YYSYMBOL_multiplicative_expression = 497, /* multiplicative_expression */ YYSYMBOL_additive_expression = 498, /* additive_expression */ YYSYMBOL_shift_expression = 499, /* shift_expression */ YYSYMBOL_relational_expression = 500, /* relational_expression */ YYSYMBOL_equality_expression = 501, /* equality_expression */ YYSYMBOL_and_expression = 502, /* and_expression */ YYSYMBOL_exclusive_or_expression = 503, /* exclusive_or_expression */ YYSYMBOL_inclusive_or_expression = 504, /* inclusive_or_expression */ YYSYMBOL_logical_and_expression = 505, /* logical_and_expression */ YYSYMBOL_logical_xor_expression = 506, /* logical_xor_expression */ YYSYMBOL_logical_or_expression = 507, /* logical_or_expression */ YYSYMBOL_conditional_expression = 508, /* conditional_expression */ YYSYMBOL_509_1 = 509, /* $@1 */ YYSYMBOL_assignment_expression = 510, /* assignment_expression */ YYSYMBOL_assignment_operator = 511, /* assignment_operator */ YYSYMBOL_expression = 512, /* expression */ YYSYMBOL_constant_expression = 513, /* constant_expression */ YYSYMBOL_declaration = 514, /* declaration */ YYSYMBOL_block_structure = 515, /* block_structure */ YYSYMBOL_516_2 = 516, /* $@2 */ YYSYMBOL_identifier_list = 517, /* identifier_list */ YYSYMBOL_function_prototype = 518, /* function_prototype */ YYSYMBOL_function_declarator = 519, /* function_declarator */ YYSYMBOL_function_header_with_parameters = 520, /* function_header_with_parameters */ YYSYMBOL_function_header = 521, /* function_header */ YYSYMBOL_parameter_declarator = 522, /* parameter_declarator */ YYSYMBOL_parameter_declaration = 523, /* parameter_declaration */ YYSYMBOL_parameter_type_specifier = 524, /* parameter_type_specifier */ YYSYMBOL_init_declarator_list = 525, /* init_declarator_list */ YYSYMBOL_single_declaration = 526, /* single_declaration */ YYSYMBOL_fully_specified_type = 527, /* fully_specified_type */ YYSYMBOL_invariant_qualifier = 528, /* invariant_qualifier */ YYSYMBOL_interpolation_qualifier = 529, /* interpolation_qualifier */ YYSYMBOL_layout_qualifier = 530, /* layout_qualifier */ YYSYMBOL_layout_qualifier_id_list = 531, /* layout_qualifier_id_list */ YYSYMBOL_layout_qualifier_id = 532, /* layout_qualifier_id */ YYSYMBOL_precise_qualifier = 533, /* precise_qualifier */ YYSYMBOL_type_qualifier = 534, /* type_qualifier */ YYSYMBOL_single_type_qualifier = 535, /* single_type_qualifier */ YYSYMBOL_storage_qualifier = 536, /* storage_qualifier */ YYSYMBOL_non_uniform_qualifier = 537, /* non_uniform_qualifier */ YYSYMBOL_type_name_list = 538, /* type_name_list */ YYSYMBOL_type_specifier = 539, /* type_specifier */ YYSYMBOL_array_specifier = 540, /* array_specifier */ YYSYMBOL_type_parameter_specifier_opt = 541, /* type_parameter_specifier_opt */ YYSYMBOL_type_parameter_specifier = 542, /* type_parameter_specifier */ YYSYMBOL_type_parameter_specifier_list = 543, /* type_parameter_specifier_list */ YYSYMBOL_type_specifier_nonarray = 544, /* type_specifier_nonarray */ YYSYMBOL_precision_qualifier = 545, /* precision_qualifier */ YYSYMBOL_struct_specifier = 546, /* struct_specifier */ YYSYMBOL_547_3 = 547, /* $@3 */ YYSYMBOL_548_4 = 548, /* $@4 */ YYSYMBOL_struct_declaration_list = 549, /* struct_declaration_list */ YYSYMBOL_struct_declaration = 550, /* struct_declaration */ YYSYMBOL_struct_declarator_list = 551, /* struct_declarator_list */ YYSYMBOL_struct_declarator = 552, /* struct_declarator */ YYSYMBOL_initializer = 553, /* initializer */ YYSYMBOL_initializer_list = 554, /* initializer_list */ YYSYMBOL_declaration_statement = 555, /* declaration_statement */ YYSYMBOL_statement = 556, /* statement */ YYSYMBOL_simple_statement = 557, /* simple_statement */ YYSYMBOL_demote_statement = 558, /* demote_statement */ YYSYMBOL_compound_statement = 559, /* compound_statement */ YYSYMBOL_560_5 = 560, /* $@5 */ YYSYMBOL_561_6 = 561, /* $@6 */ YYSYMBOL_statement_no_new_scope = 562, /* statement_no_new_scope */ YYSYMBOL_statement_scoped = 563, /* statement_scoped */ YYSYMBOL_564_7 = 564, /* $@7 */ YYSYMBOL_565_8 = 565, /* $@8 */ YYSYMBOL_compound_statement_no_new_scope = 566, /* compound_statement_no_new_scope */ YYSYMBOL_statement_list = 567, /* statement_list */ YYSYMBOL_expression_statement = 568, /* expression_statement */ YYSYMBOL_selection_statement = 569, /* selection_statement */ YYSYMBOL_selection_statement_nonattributed = 570, /* selection_statement_nonattributed */ YYSYMBOL_selection_rest_statement = 571, /* selection_rest_statement */ YYSYMBOL_condition = 572, /* condition */ YYSYMBOL_switch_statement = 573, /* switch_statement */ YYSYMBOL_switch_statement_nonattributed = 574, /* switch_statement_nonattributed */ YYSYMBOL_575_9 = 575, /* $@9 */ YYSYMBOL_switch_statement_list = 576, /* switch_statement_list */ YYSYMBOL_case_label = 577, /* case_label */ YYSYMBOL_iteration_statement = 578, /* iteration_statement */ YYSYMBOL_iteration_statement_nonattributed = 579, /* iteration_statement_nonattributed */ YYSYMBOL_580_10 = 580, /* $@10 */ YYSYMBOL_581_11 = 581, /* $@11 */ YYSYMBOL_582_12 = 582, /* $@12 */ YYSYMBOL_for_init_statement = 583, /* for_init_statement */ YYSYMBOL_conditionopt = 584, /* conditionopt */ YYSYMBOL_for_rest_statement = 585, /* for_rest_statement */ YYSYMBOL_jump_statement = 586, /* jump_statement */ YYSYMBOL_translation_unit = 587, /* translation_unit */ YYSYMBOL_external_declaration = 588, /* external_declaration */ YYSYMBOL_function_definition = 589, /* function_definition */ YYSYMBOL_590_13 = 590, /* $@13 */ YYSYMBOL_attribute = 591, /* attribute */ YYSYMBOL_attribute_list = 592, /* attribute_list */ YYSYMBOL_single_attribute = 593, /* single_attribute */ YYSYMBOL_spirv_requirements_list = 594, /* spirv_requirements_list */ YYSYMBOL_spirv_requirements_parameter = 595, /* spirv_requirements_parameter */ YYSYMBOL_spirv_extension_list = 596, /* spirv_extension_list */ YYSYMBOL_spirv_capability_list = 597, /* spirv_capability_list */ YYSYMBOL_spirv_execution_mode_qualifier = 598, /* spirv_execution_mode_qualifier */ YYSYMBOL_spirv_execution_mode_parameter_list = 599, /* spirv_execution_mode_parameter_list */ YYSYMBOL_spirv_execution_mode_parameter = 600, /* spirv_execution_mode_parameter */ YYSYMBOL_spirv_execution_mode_id_parameter_list = 601, /* spirv_execution_mode_id_parameter_list */ YYSYMBOL_spirv_storage_class_qualifier = 602, /* spirv_storage_class_qualifier */ YYSYMBOL_spirv_decorate_qualifier = 603, /* spirv_decorate_qualifier */ YYSYMBOL_spirv_decorate_parameter_list = 604, /* spirv_decorate_parameter_list */ YYSYMBOL_spirv_decorate_parameter = 605, /* spirv_decorate_parameter */ YYSYMBOL_spirv_decorate_id_parameter_list = 606, /* spirv_decorate_id_parameter_list */ YYSYMBOL_spirv_decorate_id_parameter = 607, /* spirv_decorate_id_parameter */ YYSYMBOL_spirv_decorate_string_parameter_list = 608, /* spirv_decorate_string_parameter_list */ YYSYMBOL_spirv_type_specifier = 609, /* spirv_type_specifier */ YYSYMBOL_spirv_type_parameter_list = 610, /* spirv_type_parameter_list */ YYSYMBOL_spirv_type_parameter = 611, /* spirv_type_parameter */ YYSYMBOL_spirv_instruction_qualifier = 612, /* spirv_instruction_qualifier */ YYSYMBOL_spirv_instruction_qualifier_list = 613, /* spirv_instruction_qualifier_list */ YYSYMBOL_spirv_instruction_qualifier_id = 614 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; /* Second part of user prologue. */ #line 111 "MachineIndependent/glslang.y" #define parseContext (*pParseContext) #define yyerror(context, msg) context->parserError(msg) extern int yylex(YYSTYPE*, TParseContext&); #line 754 "MachineIndependent/glslang_tab.cpp" #ifdef short # undef short #endif /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure and (if available) are included so that the code can choose integer types of a good width. */ #ifndef __PTRDIFF_MAX__ # include /* INFRINGES ON USER NAME SPACE */ # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YY_STDINT_H # endif #endif /* Narrow types that promote to a signed type and that can represent a signed or unsigned integer of at least N bits. In tables they can save space and decrease cache pressure. Promoting to a signed type helps avoid bugs in integer arithmetic. */ #ifdef __INT_LEAST8_MAX__ typedef __INT_LEAST8_TYPE__ yytype_int8; #elif defined YY_STDINT_H typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef __INT_LEAST16_MAX__ typedef __INT_LEAST16_TYPE__ yytype_int16; #elif defined YY_STDINT_H typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif /* Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants. This workaround can likely be removed in 2023, as HPE has promised support for HP-UX 11.23 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of . */ #ifdef __hpux # undef UINT_LEAST8_MAX # undef UINT_LEAST16_MAX # define UINT_LEAST8_MAX 255 # define UINT_LEAST16_MAX 65535 #endif #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ && UINT_LEAST8_MAX <= INT_MAX) typedef uint_least8_t yytype_uint8; #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX typedef unsigned char yytype_uint8; #else typedef short yytype_uint8; #endif #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ typedef __UINT_LEAST16_TYPE__ yytype_uint16; #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ && UINT_LEAST16_MAX <= INT_MAX) typedef uint_least16_t yytype_uint16; #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX typedef unsigned short yytype_uint16; #else typedef int yytype_uint16; #endif #ifndef YYPTRDIFF_T # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ # define YYPTRDIFF_T __PTRDIFF_TYPE__ # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ # elif defined PTRDIFF_MAX # ifndef ptrdiff_t # include /* INFRINGES ON USER NAME SPACE */ # endif # define YYPTRDIFF_T ptrdiff_t # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX # else # define YYPTRDIFF_T long # define YYPTRDIFF_MAXIMUM LONG_MAX # endif #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned # endif #endif #define YYSIZE_MAXIMUM \ YY_CAST (YYPTRDIFF_T, \ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ ? YYPTRDIFF_MAXIMUM \ : YY_CAST (YYSIZE_T, -1))) #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) /* Stored state numbers (used for stacks). */ typedef yytype_int16 yy_state_t; /* State numbers in computations. */ typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define YY_ATTRIBUTE_PURE # endif #endif #ifndef YY_ATTRIBUTE_UNUSED # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YY_USE(E) ((void) (E)) #else # define YY_USE(E) /* empty */ #endif /* Suppress an incorrect diagnostic about yylval being uninitialized. */ #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ # if __GNUC__ * 100 + __GNUC_MINOR__ < 407 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") # else # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ # define YY_IGNORE_USELESS_CAST_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") # define YY_IGNORE_USELESS_CAST_END \ _Pragma ("GCC diagnostic pop") #endif #ifndef YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_END #endif #define YY_ASSERT(E) ((void) (0 && (E))) #if 1 /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* 1 */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 471 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 13688 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 483 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 132 /* YYNRULES -- Number of rules. */ #define YYNRULES 719 /* YYNSTATES -- Number of states. */ #define YYNSTATES 966 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 737 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ (0 <= (YYX) && (YYX) <= YYMAXUTOK \ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { 0, 361, 361, 367, 370, 375, 378, 381, 385, 388, 391, 395, 399, 403, 407, 411, 415, 421, 428, 431, 434, 437, 440, 445, 453, 460, 467, 473, 477, 484, 487, 493, 511, 536, 544, 549, 576, 584, 590, 594, 598, 618, 619, 620, 621, 627, 628, 633, 638, 647, 648, 653, 661, 662, 668, 677, 678, 683, 688, 693, 701, 702, 711, 723, 724, 733, 734, 743, 744, 753, 754, 762, 763, 771, 772, 780, 781, 781, 799, 800, 816, 820, 824, 828, 833, 837, 841, 845, 849, 853, 857, 864, 867, 878, 885, 890, 897, 902, 907, 914, 918, 922, 926, 931, 939, 939, 950, 954, 961, 966, 974, 982, 994, 997, 1004, 1017, 1037, 1044, 1067, 1082, 1101, 1112, 1123, 1133, 1143, 1153, 1162, 1165, 1169, 1173, 1178, 1186, 1191, 1196, 1201, 1206, 1215, 1225, 1252, 1261, 1268, 1275, 1282, 1289, 1297, 1305, 1315, 1325, 1332, 1342, 1348, 1351, 1358, 1362, 1366, 1374, 1383, 1386, 1397, 1400, 1403, 1407, 1411, 1415, 1419, 1422, 1427, 1431, 1436, 1444, 1448, 1453, 1459, 1465, 1472, 1477, 1482, 1490, 1495, 1507, 1521, 1527, 1532, 1540, 1548, 1556, 1564, 1572, 1580, 1588, 1596, 1604, 1611, 1618, 1622, 1627, 1632, 1637, 1642, 1647, 1652, 1656, 1660, 1664, 1668, 1672, 1678, 1684, 1694, 1701, 1704, 1712, 1719, 1730, 1735, 1743, 1747, 1757, 1760, 1766, 1772, 1778, 1786, 1796, 1800, 1804, 1808, 1813, 1817, 1822, 1827, 1832, 1837, 1842, 1847, 1852, 1857, 1862, 1868, 1874, 1880, 1885, 1890, 1895, 1900, 1905, 1910, 1915, 1920, 1925, 1930, 1935, 1940, 1947, 1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1992, 1997, 2002, 2007, 2012, 2017, 2025, 2033, 2041, 2047, 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, 2101, 2107, 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, 2161, 2167, 2173, 2179, 2185, 2191, 2197, 2203, 2209, 2215, 2221, 2227, 2233, 2239, 2245, 2251, 2257, 2263, 2269, 2275, 2281, 2287, 2293, 2301, 2309, 2317, 2325, 2333, 2341, 2349, 2357, 2365, 2373, 2381, 2389, 2395, 2401, 2407, 2413, 2419, 2425, 2431, 2437, 2443, 2449, 2455, 2461, 2467, 2473, 2479, 2485, 2491, 2497, 2503, 2509, 2515, 2521, 2527, 2533, 2539, 2545, 2551, 2557, 2563, 2569, 2575, 2581, 2587, 2593, 2599, 2605, 2609, 2613, 2617, 2622, 2627, 2632, 2637, 2642, 2647, 2652, 2657, 2662, 2667, 2672, 2677, 2682, 2687, 2693, 2699, 2705, 2711, 2717, 2723, 2729, 2735, 2741, 2747, 2753, 2759, 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, 2815, 2820, 2825, 2830, 2835, 2840, 2845, 2850, 2855, 2860, 2865, 2870, 2875, 2880, 2885, 2890, 2895, 2900, 2905, 2910, 2915, 2920, 2925, 2930, 2936, 2942, 2947, 2952, 2957, 2963, 2968, 2973, 2978, 2984, 2989, 2994, 2999, 3005, 3010, 3015, 3020, 3026, 3032, 3038, 3044, 3049, 3055, 3061, 3067, 3072, 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, 3329, 3334, 3339, 3344, 3350, 3355, 3360, 3365, 3371, 3376, 3381, 3386, 3392, 3397, 3402, 3407, 3412, 3417, 3422, 3427, 3432, 3437, 3442, 3447, 3452, 3457, 3462, 3467, 3472, 3477, 3482, 3487, 3492, 3497, 3502, 3507, 3512, 3518, 3524, 3530, 3536, 3542, 3548, 3554, 3561, 3568, 3574, 3580, 3586, 3592, 3599, 3606, 3613, 3620, 3625, 3630, 3634, 3640, 3646, 3650, 3654, 3659, 3675, 3680, 3685, 3693, 3693, 3710, 3710, 3720, 3723, 3736, 3758, 3785, 3789, 3795, 3800, 3811, 3814, 3820, 3826, 3835, 3838, 3844, 3848, 3849, 3855, 3856, 3857, 3858, 3859, 3860, 3861, 3862, 3866, 3874, 3875, 3879, 3875, 3893, 3894, 3898, 3898, 3905, 3905, 3919, 3922, 3932, 3940, 3951, 3952, 3956, 3959, 3966, 3973, 3977, 3985, 3989, 4002, 4005, 4012, 4012, 4032, 4035, 4041, 4053, 4065, 4068, 4076, 4076, 4091, 4091, 4109, 4109, 4130, 4133, 4139, 4142, 4148, 4152, 4159, 4164, 4169, 4176, 4179, 4183, 4187, 4191, 4200, 4204, 4213, 4216, 4219, 4227, 4227, 4269, 4274, 4277, 4282, 4285, 4290, 4293, 4298, 4301, 4306, 4309, 4314, 4317, 4322, 4326, 4331, 4335, 4340, 4344, 4351, 4354, 4359, 4362, 4365, 4368, 4371, 4376, 4385, 4396, 4401, 4409, 4413, 4418, 4422, 4427, 4431, 4436, 4440, 4447, 4450, 4455, 4458, 4461, 4464, 4469, 4472, 4477, 4483, 4486, 4489, 4492, 4497, 4501, 4506, 4510, 4515, 4519, 4526, 4529, 4534, 4537, 4542, 4545, 4551, 4554, 4559, 4562 }; #endif /** Accessing symbol of state STATE. */ #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) #if 1 /* The user-facing name of the symbol whose (internal) number is YYSYMBOL. No bounds checking. */ static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "\"end of file\"", "error", "\"invalid token\"", "CONST", "BOOL", "INT", "UINT", "FLOAT", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "UVEC2", "UVEC3", "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", "SAMPLER2DARRAYSHADOW", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY", "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER", "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOATE5M2_T", "FLOATE4M3_T", "BFLOAT16_T", "FLOAT16_T", "FLOAT32_T", "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3", "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4", "BF16VEC2", "BF16VEC3", "BF16VEC4", "FE5M2VEC2", "FE5M2VEC3", "FE5M2VEC4", "FE4M3VEC2", "FE4M3VEC3", "FE4M3VEC4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "COOPMAT", "COOPVECNV", "HITOBJECTNV", "HITOBJECTATTRNV", "TENSORLAYOUTNV", "TENSORVIEWNV", "TENSORARM", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", "F16SAMPLER2DARRAYSHADOW", "F16SAMPLER2DRECTSHADOW", "F16SAMPLERCUBESHADOW", "F16SAMPLERCUBEARRAYSHADOW", "IMAGE1D", "IIMAGE1D", "UIMAGE1D", "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D", "IIMAGE3D", "UIMAGE3D", "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT", "IMAGECUBE", "IIMAGECUBE", "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER", "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY", "IMAGE2DARRAY", "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY", "IIMAGECUBEARRAY", "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS", "UIMAGE2DMS", "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", "F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT", "F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY", "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS", "F16IMAGE2DMSARRAY", "I64IMAGE1D", "U64IMAGE1D", "I64IMAGE2D", "U64IMAGE2D", "I64IMAGE3D", "U64IMAGE3D", "I64IMAGE2DRECT", "U64IMAGE2DRECT", "I64IMAGECUBE", "U64IMAGECUBE", "I64IMAGEBUFFER", "U64IMAGEBUFFER", "I64IMAGE1DARRAY", "U64IMAGE1DARRAY", "I64IMAGE2DARRAY", "U64IMAGE2DARRAY", "I64IMAGECUBEARRAY", "U64IMAGECUBEARRAY", "I64IMAGE2DMS", "U64IMAGE2DMS", "I64IMAGE2DMSARRAY", "U64IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", "UTEXTURECUBEARRAY", "TEXTURE1D", "ITEXTURE1D", "UTEXTURE1D", "TEXTURE1DARRAY", "ITEXTURE1DARRAY", "UTEXTURE1DARRAY", "TEXTURE2DRECT", "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER", "UTEXTUREBUFFER", "TEXTURE2DMS", "ITEXTURE2DMS", "UTEXTURE2DMS", "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", "UTEXTURE2DMSARRAY", "F16TEXTURE1D", "F16TEXTURE2D", "F16TEXTURE3D", "F16TEXTURE2DRECT", "F16TEXTURECUBE", "F16TEXTURE1DARRAY", "F16TEXTURE2DARRAY", "F16TEXTURECUBEARRAY", "F16TEXTUREBUFFER", "F16TEXTURE2DMS", "F16TEXTURE2DMSARRAY", "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS", "USUBPASSINPUT", "USUBPASSINPUTMS", "F16SUBPASSINPUT", "F16SUBPASSINPUTMS", "SPIRV_INSTRUCTION", "SPIRV_EXECUTION_MODE", "SPIRV_EXECUTION_MODE_ID", "SPIRV_DECORATE", "SPIRV_DECORATE_ID", "SPIRV_DECORATE_STRING", "SPIRV_TYPE", "SPIRV_STORAGE_CLASS", "SPIRV_BY_REFERENCE", "SPIRV_LITERAL", "ATTACHMENTEXT", "IATTACHMENTEXT", "UATTACHMENTEXT", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "STRING_LITERAL", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION", "INVARIANT", "HIGH_PRECISION", "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP", "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "TERMINATE_INVOCATION", "TERMINATE_RAY", "IGNORE_INTERSECTION", "UNIFORM", "SHARED", "BUFFER", "TILEIMAGEEXT", "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "FUNCTION", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT", "PAYLOADINEXT", "HITATTREXT", "CALLDATAEXT", "CALLDATAINEXT", "PATCH", "SAMPLE", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", "NONTEMPORAL", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD", "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", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", "multiplicative_expression", "additive_expression", "shift_expression", "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression", "logical_xor_expression", "logical_or_expression", "conditional_expression", "$@1", "assignment_expression", "assignment_operator", "expression", "constant_expression", "declaration", "block_structure", "$@2", "identifier_list", "function_prototype", "function_declarator", "function_header_with_parameters", "function_header", "parameter_declarator", "parameter_declaration", "parameter_type_specifier", "init_declarator_list", "single_declaration", "fully_specified_type", "invariant_qualifier", "interpolation_qualifier", "layout_qualifier", "layout_qualifier_id_list", "layout_qualifier_id", "precise_qualifier", "type_qualifier", "single_type_qualifier", "storage_qualifier", "non_uniform_qualifier", "type_name_list", "type_specifier", "array_specifier", "type_parameter_specifier_opt", "type_parameter_specifier", "type_parameter_specifier_list", "type_specifier_nonarray", "precision_qualifier", "struct_specifier", "$@3", "$@4", "struct_declaration_list", "struct_declaration", "struct_declarator_list", "struct_declarator", "initializer", "initializer_list", "declaration_statement", "statement", "simple_statement", "demote_statement", "compound_statement", "$@5", "$@6", "statement_no_new_scope", "statement_scoped", "$@7", "$@8", "compound_statement_no_new_scope", "statement_list", "expression_statement", "selection_statement", "selection_statement_nonattributed", "selection_rest_statement", "condition", "switch_statement", "switch_statement_nonattributed", "$@9", "switch_statement_list", "case_label", "iteration_statement", "iteration_statement_nonattributed", "$@10", "$@11", "$@12", "for_init_statement", "conditionopt", "for_rest_statement", "jump_statement", "translation_unit", "external_declaration", "function_definition", "$@13", "attribute", "attribute_list", "single_attribute", "spirv_requirements_list", "spirv_requirements_parameter", "spirv_extension_list", "spirv_capability_list", "spirv_execution_mode_qualifier", "spirv_execution_mode_parameter_list", "spirv_execution_mode_parameter", "spirv_execution_mode_id_parameter_list", "spirv_storage_class_qualifier", "spirv_decorate_qualifier", "spirv_decorate_parameter_list", "spirv_decorate_parameter", "spirv_decorate_id_parameter_list", "spirv_decorate_id_parameter", "spirv_decorate_string_parameter_list", "spirv_type_specifier", "spirv_type_parameter_list", "spirv_type_parameter", "spirv_instruction_qualifier", "spirv_instruction_qualifier_list", "spirv_instruction_qualifier_id", YY_NULLPTR }; static const char * yysymbol_name (yysymbol_kind_t yysymbol) { return yytname[yysymbol]; } #endif #define YYPACT_NINF (-893) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) #define YYTABLE_NINF (-714) #define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { 4809, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -330, -285, -276, -250, -225, -198, -107, -96, -893, -893, -893, -893, -893, -64, -893, -893, -893, -893, -893, -93, -893, -893, -893, -893, -893, -329, -893, -893, -893, -893, -893, -893, -893, -41, -31, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -327, -40, -30, -143, 8649, -244, -893, -62, -893, -893, -893, -893, 5769, -893, -893, -893, -893, -46, -893, -893, 969, -893, -893, 8649, -34, -893, -893, -893, 6249, -59, -251, -153, -152, -148, -147, -59, -146, -58, 13241, -893, -25, -370, -56, -893, -326, -893, -23, -20, 6729, -893, -893, -893, 8649, -53, -52, -893, -279, -893, -19, -134, -893, -893, 11870, -16, -893, -893, -893, -14, -48, 8649, -893, -21, -18, -17, -893, -231, -893, -230, -15, -12, -11, -10, -228, -9, -8, -7, -5, -4, -2, -227, 6, -1, 8, -293, -893, 1, 8649, -893, 3, -893, -218, -893, -893, -200, 10042, -893, -322, 1449, -893, -893, -13, -893, -893, -893, -291, -256, -893, 10499, -255, -893, -44, -893, 11870, 11870, -893, 11870, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -294, -893, -893, -893, 12, -196, 12327, 14, -893, 11870, -893, 15, -334, 7, -20, 16, -893, -337, -59, -893, -6, -893, -341, 17, -142, 11870, -138, -893, -306, -137, -174, -136, 18, -128, -59, -893, 12784, -893, -127, 11870, 19, -58, -893, 8649, -3, 7209, -893, 8649, 11870, -893, -370, -893, 10, -893, -893, -80, -95, -297, -315, -55, 13, 11, 21, 32, 33, -324, 20, -893, 10956, -893, 22, -893, -893, 24, 27, 35, -893, 28, 29, 39, 11413, 31, 11870, 26, 40, 41, 43, 44, -257, -893, -893, -92, -893, -40, 42, 15, -893, -893, -893, -893, -893, 1929, -893, -893, -893, -893, -893, -893, -893, -893, -893, 5289, 37, 10499, 7, 10499, -241, 9128, -893, -893, 10499, 8649, -893, -893, -893, -195, -893, -893, 11870, 34, -893, -893, 11870, 61, -893, -893, -893, 11870, -893, -893, -893, -338, -893, -893, -192, 60, -893, -893, -893, -893, -893, -893, -188, -893, -187, -893, -893, -184, 64, -893, -893, -893, -893, -180, -893, -179, -893, -893, -893, -893, -893, -177, -893, 67, -893, -176, 68, -175, 60, -893, -259, -172, -893, 76, 77, -893, -893, -3, -16, -84, -893, -893, -893, 7689, -893, -893, -893, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, -893, -893, -893, 78, -893, 2409, -893, -893, -893, 2409, -893, 11870, -893, -893, -83, 11870, -264, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, 11870, 11870, -893, -893, -893, -893, -893, -893, -893, -893, -893, 10499, -893, -893, -130, -893, 8169, -893, 82, 72, -893, -893, -893, -893, -893, -150, -140, -893, -328, -893, -341, -893, -341, -893, 11870, 11870, -893, -306, -893, -306, -893, -174, -174, -893, 81, 18, -893, 12784, -893, 11870, -893, -893, -82, 7, -3, -893, -893, -893, -893, -893, -80, -80, -95, -95, -297, -297, -297, -297, -315, -315, -55, 13, 11, 21, 32, 33, 11870, -893, 2409, 4329, -24, 3849, -168, -893, -167, -893, -893, -893, -893, -893, 9585, -893, -893, -893, 87, -893, 55, -893, -163, -893, -160, -893, -159, -893, -158, -893, -156, -155, -893, -893, -893, -45, 84, 72, 54, 90, 93, -893, -893, 4329, 91, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, 11870, -893, 85, 2889, 11870, -893, 88, 99, 53, 98, 3369, -893, 101, -893, 10499, -893, -893, -893, -151, 11870, 2889, 91, -893, -893, 2409, -893, 96, 72, -893, -893, 2409, 102, -893, -893 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_int16 yydefact[] = { 0, 169, 227, 225, 226, 224, 231, 232, 233, 234, 235, 236, 237, 238, 239, 228, 229, 230, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 365, 366, 367, 368, 369, 370, 371, 391, 392, 393, 394, 395, 396, 397, 406, 419, 420, 407, 408, 410, 409, 411, 412, 413, 414, 415, 416, 417, 418, 178, 179, 254, 255, 253, 256, 257, 252, 258, 265, 266, 263, 264, 261, 262, 259, 260, 297, 298, 299, 309, 310, 311, 294, 295, 296, 306, 307, 308, 291, 292, 293, 303, 304, 305, 288, 289, 290, 300, 301, 302, 267, 268, 269, 312, 313, 314, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 324, 325, 326, 282, 283, 284, 336, 337, 338, 285, 286, 287, 348, 349, 350, 315, 316, 317, 318, 319, 320, 321, 322, 323, 327, 328, 329, 330, 331, 332, 333, 334, 335, 339, 340, 341, 342, 343, 344, 345, 346, 347, 351, 352, 353, 354, 355, 356, 357, 358, 359, 363, 360, 361, 362, 547, 548, 549, 550, 554, 557, 183, 551, 552, 555, 375, 376, 399, 402, 364, 373, 374, 390, 372, 421, 422, 425, 426, 427, 429, 430, 431, 433, 434, 435, 437, 438, 534, 535, 398, 400, 401, 377, 378, 379, 423, 380, 384, 385, 388, 428, 432, 436, 381, 382, 386, 387, 424, 383, 389, 468, 470, 471, 472, 474, 475, 476, 478, 479, 480, 482, 483, 484, 486, 487, 488, 490, 491, 492, 494, 495, 496, 498, 499, 500, 502, 503, 504, 506, 507, 508, 510, 511, 469, 473, 477, 481, 485, 493, 497, 501, 489, 505, 509, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 403, 404, 405, 439, 448, 450, 444, 449, 451, 452, 454, 455, 456, 458, 459, 460, 462, 463, 464, 466, 467, 440, 441, 442, 453, 443, 445, 446, 447, 457, 461, 465, 539, 540, 543, 544, 545, 546, 541, 542, 0, 0, 0, 0, 0, 0, 0, 0, 167, 168, 536, 537, 538, 0, 650, 138, 560, 561, 562, 0, 559, 173, 171, 172, 170, 0, 223, 174, 176, 177, 175, 140, 139, 0, 205, 553, 185, 187, 182, 189, 191, 186, 188, 184, 190, 192, 180, 181, 208, 193, 200, 201, 202, 203, 204, 194, 195, 196, 197, 198, 199, 141, 142, 144, 143, 145, 147, 148, 146, 207, 155, 649, 0, 651, 0, 113, 112, 0, 126, 131, 162, 161, 159, 163, 0, 156, 158, 164, 136, 218, 160, 558, 0, 646, 648, 0, 0, 165, 166, 556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, 0, 0, 0, 99, 0, 94, 0, 108, 0, 122, 114, 124, 0, 125, 0, 97, 132, 102, 106, 0, 157, 137, 0, 211, 217, 1, 647, 0, 0, 0, 96, 0, 0, 0, 658, 0, 716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 656, 0, 654, 0, 0, 563, 152, 154, 0, 150, 209, 0, 0, 100, 0, 0, 652, 109, 0, 115, 121, 123, 118, 127, 117, 0, 133, 104, 0, 103, 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, 221, 0, 36, 220, 0, 212, 110, 0, 95, 0, 0, 714, 0, 666, 0, 0, 0, 0, 0, 683, 0, 0, 0, 0, 0, 0, 0, 708, 0, 681, 0, 0, 0, 0, 98, 0, 0, 0, 567, 0, 0, 149, 0, 206, 0, 213, 45, 49, 52, 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, 34, 0, 101, 594, 603, 607, 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 78, 91, 0, 581, 0, 164, 136, 584, 605, 583, 591, 582, 0, 585, 586, 609, 587, 616, 588, 589, 624, 590, 0, 0, 0, 119, 0, 128, 0, 575, 135, 0, 0, 107, 38, 39, 0, 22, 23, 0, 0, 28, 27, 0, 223, 31, 33, 40, 0, 219, 111, 718, 0, 719, 659, 0, 0, 717, 678, 674, 675, 676, 677, 0, 672, 0, 93, 679, 0, 0, 693, 694, 695, 696, 0, 691, 0, 700, 701, 702, 703, 699, 0, 697, 0, 704, 0, 0, 0, 2, 712, 218, 0, 710, 0, 0, 653, 655, 0, 573, 0, 571, 566, 568, 0, 153, 151, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 214, 215, 0, 593, 0, 626, 639, 638, 0, 630, 0, 642, 640, 0, 0, 0, 623, 643, 644, 645, 592, 81, 82, 84, 83, 86, 87, 88, 89, 90, 85, 80, 0, 0, 608, 604, 606, 610, 617, 625, 116, 120, 130, 0, 578, 579, 0, 134, 0, 4, 0, 24, 21, 32, 222, 662, 664, 0, 0, 715, 0, 668, 0, 667, 0, 670, 0, 0, 685, 0, 684, 0, 687, 0, 0, 689, 0, 0, 709, 0, 706, 0, 682, 657, 0, 574, 0, 569, 564, 46, 47, 48, 51, 50, 53, 54, 58, 59, 56, 57, 61, 62, 64, 66, 68, 70, 72, 74, 0, 216, 595, 0, 0, 0, 0, 641, 0, 622, 79, 92, 129, 576, 0, 105, 19, 660, 0, 661, 0, 673, 0, 680, 0, 692, 0, 698, 0, 705, 0, 0, 711, 570, 572, 0, 0, 614, 0, 0, 0, 633, 632, 635, 601, 618, 577, 580, 663, 665, 669, 671, 686, 688, 690, 707, 0, 596, 0, 0, 0, 634, 0, 0, 613, 0, 0, 611, 0, 77, 0, 598, 627, 597, 0, 636, 0, 601, 600, 602, 620, 615, 0, 637, 631, 612, 621, 0, 629, 619 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -893, -569, -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, -438, -893, -526, -417, -516, -421, -287, -283, -282, -284, -280, -278, -893, -503, -893, -509, -893, -504, -550, 4, -893, -893, -893, 5, -413, -893, -893, 25, 36, 38, -893, -893, -426, -893, -893, -893, -893, -119, -893, -409, -387, -893, 9, -893, 0, -452, -893, -893, -893, -566, 133, -893, -893, -893, -570, -573, -249, -367, -653, -893, -390, -633, -892, -893, -447, -893, -893, -460, -458, -893, -893, 45, -748, -383, -893, -162, -893, -420, -893, -161, -893, -893, -893, -893, -157, -893, -893, -893, -893, -893, -893, -893, -893, 80, -893, -893, 2, -893, -89, -272, -449, -893, -893, -893, -325, -321, -331, -893, -893, -323, -320, -319, -333, -318, -893, -335, -317, -893, -406, -565 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 549, 550, 551, 818, 552, 553, 554, 555, 556, 557, 558, 639, 560, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 640, 876, 641, 800, 642, 730, 643, 406, 672, 465, 644, 408, 409, 410, 455, 456, 457, 411, 412, 413, 414, 415, 416, 506, 507, 417, 418, 419, 420, 561, 509, 618, 512, 469, 470, 563, 423, 424, 425, 598, 502, 596, 597, 740, 741, 670, 814, 647, 648, 649, 650, 651, 772, 912, 948, 940, 941, 942, 949, 652, 653, 654, 655, 943, 915, 656, 657, 944, 963, 658, 659, 660, 879, 776, 881, 919, 938, 939, 661, 426, 427, 428, 452, 662, 499, 500, 479, 480, 825, 826, 430, 703, 704, 708, 431, 432, 714, 715, 722, 723, 726, 433, 732, 733, 434, 481, 482 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 422, 458, 429, 474, 405, 407, 697, 617, 474, 421, 524, 809, 721, 810, 669, 813, 473, 564, 815, 804, 475, 731, 697, 743, 878, 475, 707, 676, 744, 698, 559, 466, 823, 691, 766, 495, 692, 504, 755, 756, 735, 435, 691, 947, 688, 458, 445, 510, 685, 745, 955, 619, 753, 754, 449, 511, 689, 677, 678, 620, 947, 505, 699, 700, 701, 702, 824, 693, 665, 667, 767, 466, 605, 706, 757, 758, 693, -35, 446, 679, 450, 591, 510, 680, 706, 592, 436, 706, 466, 664, 674, 675, 522, 594, 510, 437, 706, 710, 711, 712, 713, 523, 816, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, -713, 801, 885, 770, 510, 619, -713, 694, 438, 687, 799, 666, 671, 694, 781, 694, 783, 468, 694, 619, 694, 460, 694, 694, 461, 605, 811, 694, 570, 572, 880, 578, 586, 439, 571, 573, 605, 579, 587, 605, 483, 600, 669, 484, 669, 888, 669, 601, 605, 669, 695, 485, 487, 489, 491, 493, 494, 497, 743, 602, 440, 821, 819, 682, 817, 603, 728, 827, 605, 683, 801, 829, 831, 571, 594, 833, 594, 830, 832, 836, 838, 834, 840, 843, 846, 837, 839, 848, 841, 844, 847, 920, 921, 849, 466, 962, 926, 801, 801, 927, 928, 929, 830, 930, 931, 834, 837, 841, 958, 844, 849, 893, 860, 861, 801, 894, 717, 718, 719, 720, 540, 895, 454, 474, 923, 896, 864, 865, 866, 867, 743, 526, 804, 889, 527, 890, 473, 822, 486, 488, 475, 484, 484, 490, 492, 496, 484, 484, 484, 705, 594, 441, 484, 709, 716, 724, 484, 484, 484, 721, 721, 882, 442, 727, 734, 884, 484, 484, 731, 697, 731, 899, 707, 801, 853, 751, 802, 752, 886, 887, 957, 854, 801, 854, 855, 883, 909, 759, 760, 669, 350, 351, 352, 748, 749, 750, 443, 857, 858, 859, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 804, 447, 706, 706, 801, 932, 594, 862, 863, 868, 869, 448, 451, 453, 468, 706, 462, 706, 476, 478, 498, 503, 508, 513, 347, 520, 521, 525, 510, 565, 566, 567, 569, 568, 673, 663, 574, 575, 576, 577, 580, 581, 582, 911, 583, 584, 913, 585, 589, 588, 590, 619, 669, 593, 599, 681, 686, -34, 522, 725, 764, 692, 916, 765, 736, 768, 773, 605, 605, 771, 777, 778, 696, 782, 762, 739, 784, 761, 594, 774, 605, 459, 605, 763, -36, 808, 913, 775, 747, 467, 421, 779, 785, 786, 945, 787, 788, 422, 421, 429, 422, 405, 407, 950, -29, 422, 421, 429, 669, 421, 477, 828, 820, 835, 421, 501, 842, 845, 959, 850, 851, 801, 905, 877, 914, 459, 515, 892, 924, 459, 925, 933, 934, 935, 421, 936, 946, -599, 421, 562, 951, 475, 952, 953, 621, 870, 467, 956, 964, 965, 871, 873, 872, 746, 518, 421, 874, 444, 910, 875, 852, 517, 917, 960, 914, 954, 961, 519, 514, 918, 937, 805, 806, 595, 737, 900, 807, 472, 898, 903, 897, 475, 421, 907, 646, 0, 0, 902, 901, 0, 0, 0, 0, 645, 904, 0, 0, 0, 906, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 595, 0, 595, 0, 0, 0, 0, 421, 0, 421, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 645, 422, 0, 0, 0, 0, 0, 0, 0, 0, 421, 595, 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 595, 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 646, 0, 0, 0, 0, 645, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 595, 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 646, 0, 646, 0, 429, 0, 0, 0, 645, 645, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 646, 0, 645, 0, 0, 0, 0, 0, 0, 645, 646, 0, 0, 0, 646, 0, 0, 0, 0, 645, 646, 0, 0, 645, 0, 0, 0, 471, 0, 645, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 347, 0, 621, 622, 0, 0, 0, 0, 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 347, 0, 621, 803, 0, 0, 0, 0, 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 347, 0, 621, 0, 0, 0, 0, 0, 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 347, 0, 513, 0, 0, 0, 0, 0, 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 347, 0, 0, 0, 0, 0, 0, 0, 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 347, 0, 0, 0, 0, 0, 0, 0, 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, 545, 546, 547, 548, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, 545, 546, 547, 548, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 624, 0, 0, 627, 0, 628, 629, 0, 0, 632, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, 0, 464, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 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, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, 668, 812, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, 668, 922, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 604, 0, 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, 668, 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 780, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, 729, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 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, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 369 }; static const yytype_int16 yycheck[] = { 0, 410, 0, 429, 0, 0, 571, 510, 434, 0, 462, 664, 581, 666, 523, 668, 429, 469, 671, 652, 429, 587, 587, 596, 772, 434, 576, 531, 598, 370, 468, 418, 370, 370, 358, 441, 373, 407, 353, 354, 590, 371, 370, 935, 378, 454, 375, 373, 557, 599, 942, 373, 349, 350, 381, 381, 390, 351, 352, 381, 952, 431, 403, 404, 405, 406, 404, 404, 520, 521, 394, 458, 510, 576, 389, 390, 404, 371, 407, 373, 407, 374, 373, 377, 587, 378, 371, 590, 475, 380, 528, 529, 371, 502, 373, 371, 599, 403, 404, 405, 406, 380, 672, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 372, 378, 379, 619, 373, 373, 378, 569, 371, 560, 380, 380, 380, 575, 631, 577, 633, 389, 580, 373, 582, 378, 584, 585, 381, 576, 380, 589, 372, 372, 776, 372, 372, 371, 378, 378, 587, 378, 378, 590, 404, 372, 664, 407, 666, 811, 668, 378, 599, 671, 569, 436, 437, 438, 439, 440, 441, 442, 744, 372, 371, 683, 679, 372, 372, 378, 585, 372, 619, 378, 378, 372, 372, 378, 596, 372, 598, 378, 378, 372, 372, 378, 372, 372, 372, 378, 378, 372, 378, 378, 378, 372, 372, 378, 594, 956, 372, 378, 378, 372, 372, 372, 378, 372, 372, 378, 378, 378, 372, 378, 378, 374, 751, 752, 378, 378, 403, 404, 405, 406, 407, 374, 378, 662, 890, 378, 755, 756, 757, 758, 816, 378, 878, 376, 381, 378, 662, 688, 404, 404, 662, 407, 407, 404, 404, 404, 407, 407, 407, 404, 672, 371, 407, 404, 404, 404, 407, 407, 407, 841, 842, 778, 371, 404, 404, 782, 407, 407, 847, 847, 849, 834, 835, 378, 739, 383, 381, 385, 800, 801, 946, 378, 378, 378, 381, 381, 381, 355, 356, 811, 396, 397, 398, 386, 387, 388, 373, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 962, 371, 834, 835, 378, 379, 744, 753, 754, 759, 760, 371, 381, 372, 389, 847, 407, 849, 381, 407, 407, 375, 407, 375, 373, 407, 407, 375, 373, 372, 407, 381, 378, 380, 407, 377, 380, 378, 378, 378, 378, 378, 378, 876, 378, 378, 879, 378, 378, 372, 371, 373, 890, 381, 380, 372, 371, 371, 371, 370, 357, 373, 415, 359, 374, 374, 371, 834, 835, 376, 371, 371, 407, 371, 392, 407, 379, 393, 816, 381, 847, 410, 849, 391, 371, 377, 919, 381, 407, 418, 410, 381, 381, 381, 932, 381, 381, 426, 418, 426, 429, 426, 426, 936, 372, 434, 426, 434, 946, 429, 434, 380, 407, 378, 434, 444, 378, 378, 951, 372, 372, 378, 370, 374, 879, 454, 453, 374, 370, 458, 404, 376, 407, 372, 454, 371, 380, 375, 458, 468, 381, 879, 372, 419, 375, 761, 475, 375, 381, 376, 762, 764, 763, 601, 458, 475, 765, 353, 854, 766, 738, 454, 881, 952, 919, 941, 953, 458, 452, 881, 919, 662, 662, 502, 592, 835, 662, 426, 832, 841, 830, 919, 502, 847, 513, -1, -1, 839, 837, -1, -1, -1, -1, 513, 842, -1, -1, -1, 845, -1, -1, -1, -1, 849, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 594, -1, 596, -1, 598, -1, -1, -1, -1, 594, -1, 596, -1, 598, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 652, -1, -1, -1, -1, -1, -1, -1, -1, 652, 662, -1, -1, -1, -1, -1, -1, -1, -1, 662, 672, -1, -1, -1, -1, -1, -1, -1, -1, 672, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 744, -1, -1, -1, -1, -1, -1, -1, -1, 744, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 772, -1, -1, -1, 776, -1, -1, -1, -1, 772, -1, -1, -1, 776, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 816, -1, -1, -1, -1, -1, -1, -1, -1, 816, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 878, 879, -1, 881, -1, 881, -1, -1, -1, 878, 879, -1, 881, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 919, -1, -1, -1, -1, -1, -1, -1, -1, 919, -1, -1, -1, -1, -1, -1, 935, -1, -1, -1, -1, -1, -1, 942, -1, 935, -1, -1, -1, -1, -1, -1, 942, 952, -1, -1, -1, 956, -1, -1, -1, -1, 952, 962, -1, -1, 956, -1, -1, -1, 0, -1, 962, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -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, -1, -1, -1, -1, -1, -1, -1, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, 373, -1, 375, 376, -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, 373, -1, 375, 376, -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, 373, -1, 375, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, 373, -1, 375, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, 373, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, 373, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -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, -1, -1, -1, -1, -1, -1, -1, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, -1, -1, 418, -1, 420, 421, -1, -1, 424, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, 407, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, 374, -1, -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, 375, -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, 374, -1, -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 447 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 373, 381, 395, 396, 397, 398, 399, 408, 409, 410, 411, 412, 413, 414, 430, 431, 432, 433, 434, 435, 436, 445, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 514, 515, 518, 519, 520, 521, 525, 526, 527, 528, 529, 530, 533, 534, 535, 536, 537, 539, 544, 545, 546, 587, 588, 589, 591, 598, 602, 603, 609, 612, 371, 371, 371, 371, 371, 371, 371, 371, 373, 545, 375, 407, 371, 371, 381, 407, 381, 590, 372, 378, 522, 523, 524, 534, 539, 378, 381, 407, 381, 407, 517, 535, 539, 389, 541, 542, 0, 588, 519, 527, 534, 381, 518, 407, 594, 595, 613, 614, 404, 407, 594, 404, 594, 404, 594, 404, 594, 404, 594, 594, 613, 404, 594, 407, 592, 593, 539, 548, 375, 407, 431, 531, 532, 407, 538, 373, 381, 540, 375, 566, 591, 377, 523, 522, 524, 407, 407, 371, 380, 540, 375, 378, 381, 351, 352, 370, 371, 382, 383, 384, 385, 403, 404, 405, 406, 407, 437, 438, 439, 440, 441, 442, 443, 444, 484, 485, 486, 488, 489, 490, 491, 492, 493, 494, 495, 496, 537, 539, 543, 540, 372, 407, 381, 380, 378, 372, 378, 372, 378, 380, 378, 378, 378, 372, 378, 378, 378, 378, 378, 378, 378, 372, 378, 372, 378, 371, 374, 378, 381, 534, 539, 549, 550, 547, 380, 372, 378, 372, 378, 374, 495, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 539, 373, 381, 375, 376, 381, 415, 416, 417, 418, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 446, 495, 508, 510, 512, 514, 518, 537, 539, 555, 556, 557, 558, 559, 567, 568, 569, 570, 573, 574, 577, 578, 579, 586, 591, 377, 380, 540, 380, 540, 375, 510, 553, 380, 516, 407, 495, 495, 512, 351, 352, 373, 377, 372, 372, 378, 414, 510, 371, 495, 378, 390, 591, 370, 373, 404, 595, 613, 407, 614, 370, 403, 404, 405, 406, 599, 600, 404, 508, 513, 601, 404, 403, 404, 405, 406, 604, 605, 404, 403, 404, 405, 406, 484, 606, 607, 404, 370, 608, 404, 613, 407, 513, 544, 610, 611, 404, 513, 374, 593, 539, 407, 551, 552, 376, 550, 549, 513, 532, 407, 386, 387, 388, 383, 385, 349, 350, 353, 354, 389, 390, 355, 356, 393, 392, 391, 357, 359, 358, 394, 374, 374, 508, 376, 560, 371, 381, 381, 581, 371, 371, 381, 381, 512, 371, 512, 379, 381, 381, 381, 381, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 380, 511, 378, 381, 376, 556, 570, 574, 579, 377, 553, 553, 380, 376, 553, 554, 553, 549, 372, 487, 512, 407, 510, 495, 370, 404, 596, 597, 372, 380, 372, 378, 372, 378, 372, 378, 378, 372, 378, 372, 378, 372, 378, 378, 372, 378, 378, 372, 378, 372, 378, 372, 372, 551, 540, 378, 381, 376, 495, 495, 495, 497, 497, 498, 498, 499, 499, 499, 499, 500, 500, 501, 502, 503, 504, 505, 506, 509, 374, 567, 580, 556, 582, 512, 381, 512, 379, 510, 510, 553, 376, 378, 376, 374, 374, 378, 374, 378, 600, 599, 513, 601, 605, 604, 607, 606, 370, 608, 610, 611, 381, 552, 512, 561, 512, 527, 572, 415, 555, 568, 583, 372, 372, 376, 553, 370, 404, 372, 372, 372, 372, 372, 372, 379, 376, 407, 372, 371, 572, 584, 585, 563, 564, 565, 571, 575, 510, 380, 557, 562, 566, 512, 381, 372, 419, 559, 557, 375, 553, 372, 512, 562, 563, 567, 576, 381, 376 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { 0, 483, 484, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 486, 486, 486, 486, 486, 486, 487, 488, 489, 490, 490, 491, 491, 492, 492, 493, 494, 494, 494, 495, 495, 495, 495, 496, 496, 496, 496, 497, 497, 497, 497, 498, 498, 498, 499, 499, 499, 500, 500, 500, 500, 500, 501, 501, 501, 502, 502, 503, 503, 504, 504, 505, 505, 506, 506, 507, 507, 508, 509, 508, 510, 510, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, 513, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 516, 515, 517, 517, 518, 518, 518, 518, 519, 519, 520, 520, 520, 521, 522, 522, 522, 523, 523, 523, 523, 524, 525, 525, 525, 525, 525, 526, 526, 526, 526, 526, 527, 527, 528, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 530, 531, 531, 532, 532, 532, 533, 534, 534, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 537, 538, 538, 539, 539, 540, 540, 540, 540, 541, 541, 542, 543, 543, 543, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 545, 545, 545, 547, 546, 548, 546, 549, 549, 550, 550, 551, 551, 552, 552, 553, 553, 553, 553, 554, 554, 555, 556, 556, 557, 557, 557, 557, 557, 557, 557, 557, 558, 559, 560, 561, 559, 562, 562, 564, 563, 565, 563, 566, 566, 567, 567, 568, 568, 569, 569, 570, 571, 571, 572, 572, 573, 573, 575, 574, 576, 576, 577, 577, 578, 578, 580, 579, 581, 579, 582, 579, 583, 583, 584, 584, 585, 585, 586, 586, 586, 586, 586, 586, 586, 586, 587, 587, 588, 588, 588, 590, 589, 591, 592, 592, 593, 593, 594, 594, 595, 595, 596, 596, 597, 597, 598, 598, 598, 598, 598, 598, 599, 599, 600, 600, 600, 600, 600, 601, 601, 602, 602, 603, 603, 603, 603, 603, 603, 603, 603, 604, 604, 605, 605, 605, 605, 606, 606, 607, 607, 607, 607, 607, 608, 608, 609, 609, 609, 609, 610, 610, 611, 611, 612, 612, 613, 613, 614, 614 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, 2, 2, 1, 1, 1, 2, 2, 2, 1, 2, 3, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, 2, 2, 4, 2, 3, 4, 2, 3, 0, 6, 1, 3, 2, 3, 3, 4, 1, 1, 2, 3, 5, 3, 2, 3, 4, 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, 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, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 2, 3, 2, 3, 3, 4, 1, 0, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 3, 6, 8, 4, 6, 1, 3, 1, 1, 4, 6, 1, 3, 3, 3 }; enum { YYENOMEM = -2 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (pParseContext, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Backward compatibility with an undocumented macro. Use YYerror or YYUNDEF. */ #define YYERRCODE YYUNDEF /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Kind, Value, pParseContext); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*-----------------------------------. | Print this symbol's value on YYO. | `-----------------------------------*/ static void yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) { FILE *yyoutput = yyo; YY_USE (yyoutput); YY_USE (pParseContext); if (!yyvaluep) return; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*---------------------------. | Print this symbol on YYO. | `---------------------------*/ static void yy_symbol_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) { YYFPRINTF (yyo, "%s %s (", yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); yy_symbol_value_print (yyo, yykind, yyvaluep, pParseContext); YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) { int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), &yyvsp[(yyi + 1) - (yynrhs)], pParseContext); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule, pParseContext); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) ((void) 0) # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif /* Context of a parse error. */ typedef struct { yy_state_t *yyssp; yysymbol_kind_t yytoken; } yypcontext_t; /* Put in YYARG at most YYARGN of the expected tokens given the current YYCTX, and return the number of tokens stored in YYARG. If YYARG is null, return the number of expected tokens (guaranteed to be less than YYNTOKENS). Return YYENOMEM on memory exhaustion. Return 0 if there are more than YYARGN expected tokens, yet fill YYARG up to YYARGN. */ static int yypcontext_expected_tokens (const yypcontext_t *yyctx, yysymbol_kind_t yyarg[], int yyargn) { /* Actual size of YYARG. */ int yycount = 0; int yyn = yypact[+*yyctx->yyssp]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror && !yytable_value_is_error (yytable[yyx + yyn])) { if (!yyarg) ++yycount; else if (yycount == yyargn) return 0; else yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx); } } if (yyarg && yycount == 0 && 0 < yyargn) yyarg[0] = YYSYMBOL_YYEMPTY; return yycount; } #ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ static YYPTRDIFF_T yystrlen (const char *yystr) { YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif #endif #ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif #endif #ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; else goto append; append: default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (yyres) return yystpcpy (yyres, yystr) - yyres; else return yystrlen (yystr); } #endif static int yy_syntax_error_arguments (const yypcontext_t *yyctx, yysymbol_kind_t yyarg[], int yyargn) { /* Actual size of YYARG. */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yyctx->yytoken != YYSYMBOL_YYEMPTY) { int yyn; if (yyarg) yyarg[yycount] = yyctx->yytoken; ++yycount; yyn = yypcontext_expected_tokens (yyctx, yyarg ? yyarg + 1 : yyarg, yyargn - 1); if (yyn == YYENOMEM) return YYENOMEM; else yycount += yyn; } return yycount; } /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the required number of bytes is too large to store. */ static int yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, const yypcontext_t *yyctx) { enum { YYARGS_MAX = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat: reported tokens (one for the "unexpected", one per "expected"). */ yysymbol_kind_t yyarg[YYARGS_MAX]; /* Cumulated lengths of YYARG. */ YYPTRDIFF_T yysize = 0; /* Actual size of YYARG. */ int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX); if (yycount == YYENOMEM) return YYENOMEM; switch (yycount) { #define YYCASE_(N, S) \ case N: \ yyformat = S; \ break default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); #undef YYCASE_ } /* Compute error message size. Don't count the "%s"s, but reserve room for the terminator. */ yysize = yystrlen (yyformat) - 2 * yycount + 1; { int yyi; for (yyi = 0; yyi < yycount; ++yyi) { YYPTRDIFF_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else return YYENOMEM; } } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return -1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]); yyformat += 2; } else { ++yyp; ++yyformat; } } return 0; } /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) { YY_USE (yyvaluep); YY_USE (pParseContext); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*----------. | yyparse. | `----------*/ int yyparse (glslang::TParseContext* pParseContext) { /* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Number of syntax errors so far. */ int yynerrs = 0; yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus = 0; /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ YYPTRDIFF_T yystacksize = YYINITDEPTH; /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; yy_state_t *yyss = yyssa; yy_state_t *yyssp = yyss; /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; /*--------------------------------------------------------------------. | yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); YY_IGNORE_USELESS_CAST_BEGIN *yyssp = YY_CAST (yy_state_t, yystate); YY_IGNORE_USELESS_CAST_END YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * YYSIZEOF (*yyssp), &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yy_state_t *yyss1 = yyss; union yyalloc *yyptr = YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YY_IGNORE_USELESS_CAST_BEGIN YYDPRINTF ((stderr, "Stack size increased to %ld\n", YY_CAST (long, yystacksize))); YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (&yylval, parseContext); } if (yychar <= YYEOF) { yychar = YYEOF; yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else if (yychar == YYerror) { /* The scanner already issued an error message, process directly to error recovery. But do not keep the error token as lookahead, it is too special and may lead us to an endless loop in error recovery. */ yychar = YYUNDEF; yytoken = YYSYMBOL_YYerror; goto yyerrlab1; } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Discard the shifted token. */ yychar = YYEMPTY; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ #line 361 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } #line 5440 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ #line 367 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5448 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ #line 370 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } #line 5458 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ #line 375 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } #line 5466 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ #line 378 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } #line 5474 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ #line 381 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } #line 5483 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ #line 385 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } #line 5491 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ #line 388 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } #line 5499 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ #line 391 "MachineIndependent/glslang.y" { 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 5508 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ #line 395 "MachineIndependent/glslang.y" { 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 5517 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ #line 399 "MachineIndependent/glslang.y" { 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 5526 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ #line 403 "MachineIndependent/glslang.y" { 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 5535 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ #line 407 "MachineIndependent/glslang.y" { 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 5544 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ #line 411 "MachineIndependent/glslang.y" { 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 5553 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ #line 415 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } #line 5564 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ #line 421 "MachineIndependent/glslang.y" { 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 5573 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ #line 428 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5581 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ #line 431 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } #line 5589 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ #line 434 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5597 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ #line 437 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } #line 5605 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ #line 440 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } #line 5615 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ #line 445 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } #line 5625 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ #line 453 "MachineIndependent/glslang.y" { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5634 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ #line 460 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } #line 5643 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ #line 467 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } #line 5651 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ #line 473 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } #line 5660 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ #line 477 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } #line 5669 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ #line 484 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } #line 5677 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ #line 487 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } #line 5685 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ #line 493 "MachineIndependent/glslang.y" { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed && (yyvsp[0].interm.intermTypedNode)->getType().containsOpaque()) { (yyval.interm).intermNode = parseContext.vkRelaxedRemapFunctionArgument((yyval.interm).loc, (yyvsp[-1].interm).function, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).function = (yyvsp[-1].interm).function; } else { TParameter param = { 0, new TType, {} }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-1].interm).function->addParameter(param); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } } #line 5708 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ #line 511 "MachineIndependent/glslang.y" { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed && (yyvsp[0].interm.intermTypedNode)->getType().containsOpaque()) { TIntermNode* remappedNode = parseContext.vkRelaxedRemapFunctionArgument((yyvsp[-1].lex).loc, (yyvsp[-2].interm).function, (yyvsp[0].interm.intermTypedNode)); if (remappedNode == (yyvsp[0].interm.intermTypedNode)) (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); else (yyval.interm).intermNode = parseContext.intermediate.mergeAggregate((yyvsp[-2].interm).intermNode, remappedNode, (yyvsp[-1].lex).loc); (yyval.interm).function = (yyvsp[-2].interm).function; } else { TParameter param = { 0, new TType, {} }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-2].interm).function->addParameter(param); (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 5735 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ #line 536 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } #line 5743 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ #line 544 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } #line 5753 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ #line 549 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. // (yyval.interm).function = 0; (yyval.interm).intermNode = 0; TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode(); if (method) { (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); (yyval.interm).intermNode = method->getObject(); } else { TIntermSymbol* symbol = (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode(); if (symbol) { parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); (yyval.interm).function = function; } else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); } if ((yyval.interm).function == 0) { // error recover TString* empty = NewPoolTString(""); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } #line 5785 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ #line 576 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } #line 5795 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ #line 584 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } #line 5806 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ #line 590 "MachineIndependent/glslang.y" { 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 5815 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ #line 594 "MachineIndependent/glslang.y" { 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 5824 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ #line 598 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; switch((yyvsp[-1].interm).op) { case EOpNegative: errorOp[0] = '-'; break; case EOpLogicalNot: errorOp[0] = '!'; break; case EOpBitwiseNot: errorOp[0] = '~'; break; default: break; // some compilers want this } (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].interm).loc, errorOp, (yyvsp[-1].interm).op, (yyvsp[0].interm.intermTypedNode)); } else { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } #line 5845 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ #line 618 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } #line 5851 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ #line 619 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } #line 5857 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ #line 620 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } #line 5863 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ #line 621 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } #line 5870 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ #line 627 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5876 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ #line 628 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5886 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ #line 633 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5896 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ #line 638 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5907 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ #line 647 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5913 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ #line 648 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5923 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ #line 653 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5933 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ #line 661 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5939 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ #line 662 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5950 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ #line 668 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5961 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ #line 677 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5967 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ #line 678 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5977 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ #line 683 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5987 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ #line 688 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5997 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ #line 693 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 6007 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ #line 701 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6013 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ #line 702 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 6027 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ #line 711 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 6041 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ #line 723 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6047 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ #line 724 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 6058 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ #line 733 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6064 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ #line 734 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 6075 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ #line 743 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6081 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ #line 744 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 6092 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ #line 753 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6098 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ #line 754 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 6108 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ #line 762 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6114 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ #line 763 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 6124 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ #line 771 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6130 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ #line 772 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 6140 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ #line 780 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6146 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ #line 781 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } #line 6154 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ #line 784 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode)); parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)); 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(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } #line 6171 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ #line 799 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6177 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ #line 800 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); parseContext.storage16BitAssignmentCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)); 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(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } #line 6195 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ #line 816 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } #line 6204 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ #line 820 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } #line 6213 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ #line 824 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } #line 6222 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ #line 828 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } #line 6232 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ #line 833 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } #line 6241 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ #line 837 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } #line 6250 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ #line 841 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } #line 6259 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ #line 845 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } #line 6268 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ #line 849 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } #line 6277 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ #line 853 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } #line 6286 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ #line 857 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } #line 6295 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ #line 864 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6303 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ #line 867 "MachineIndependent/glslang.y" { 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(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } #line 6316 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ #line 878 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 6325 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ #line 885 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } #line 6335 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ #line 890 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } #line 6347 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ #line 897 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } #line 6357 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ #line 902 "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 6367 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ #line 907 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } #line 6379 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ #line 914 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } #line 6388 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ #line 918 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } #line 6397 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ #line 922 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } #line 6406 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ #line 926 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } #line 6416 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier identifier_list SEMICOLON */ #line 931 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } #line 6426 "MachineIndependent/glslang_tab.cpp" break; case 104: /* $@2: %empty */ #line 939 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } #line 6432 "MachineIndependent/glslang_tab.cpp" break; case 105: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ #line 939 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier); parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers); parseContext.currentBlockQualifier = (yyvsp[-5].interm.type).qualifier; (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } #line 6446 "MachineIndependent/glslang_tab.cpp" break; case 106: /* identifier_list: IDENTIFIER */ #line 950 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } #line 6455 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: identifier_list COMMA IDENTIFIER */ #line 954 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } #line 6464 "MachineIndependent/glslang_tab.cpp" break; case 108: /* function_prototype: function_declarator RIGHT_PAREN */ #line 961 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; } #line 6474 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN attribute */ #line 966 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[-1].lex).loc; const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; parseContext.requireExtensions((yyvsp[-1].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } #line 6487 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: attribute function_declarator RIGHT_PAREN */ #line 974 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; parseContext.requireExtensions((yyvsp[0].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } #line 6500 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ #line 982 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[-1].lex).loc; const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; parseContext.requireExtensions((yyvsp[-1].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } #line 6514 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_declarator: function_header */ #line 994 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } #line 6522 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header_with_parameters */ #line 997 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } #line 6530 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_header_with_parameters: function_header parameter_declaration */ #line 1004 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid) { if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param); else parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-1].interm.function), (yyvsp[0].interm).param); } else delete (yyvsp[0].interm).param.type; } #line 6548 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ #line 1017 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void // The check for named parameters not being void is done in parameter_declarator // if ((yyvsp[0].interm).param.type->getBasicType() == EbtVoid) { // // This parameter > first is void // parseContext.error((yyvsp[-1].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); delete (yyvsp[0].interm).param.type; } else { // Add the parameter (yyval.interm.function) = (yyvsp[-2].interm.function); if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); else parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-2].interm.function), (yyvsp[0].interm).param); } } #line 6573 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA DOT DOT DOT */ #line 1037 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[-4].interm.function); parseContext.makeVariadic((yyvsp[-4].interm.function), (yyvsp[-2].lex).loc); } #line 6582 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ #line 1044 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), ""); } if ((yyvsp[-2].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); // Add the function as a prototype after parsing it (we do not support recursion) TFunction *function; TType type((yyvsp[-2].interm.type)); // Potentially rename shader entry point function. No-op most of the time. parseContext.renameShaderFunction((yyvsp[-1].lex).string); // Make the function function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } #line 6606 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ #line 1067 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes); } if ((yyvsp[-1].interm.type).basicType == EbtVoid) { parseContext.error((yyvsp[0].lex).loc, "illegal use of type 'void'", (yyvsp[0].lex).string->c_str(), ""); } parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string); TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type)), {}}; (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } #line 6626 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ #line 1082 "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"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } TType* type = new TType((yyvsp[-2].interm.type)); type->transferArraySizes((yyvsp[0].interm).arraySizes); type->copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, type->getArraySizes()); parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes); parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string); TParameter param = { (yyvsp[-1].lex).string, type, {} }; (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } #line 6650 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declarator: type_specifier IDENTIFIER EQUAL initializer */ #line 1101 "MachineIndependent/glslang.y" { TParameter param = parseContext.getParamWithDefault((yyvsp[-3].interm.type), (yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).param = param; } #line 6660 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: type_qualifier parameter_declarator */ #line 1112 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->hasTypeParameter()); parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); 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 6676 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: parameter_declarator */ #line 1123 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); 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(), (yyval.interm).param.type->hasTypeParameter()); } #line 6688 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: type_qualifier parameter_type_specifier */ #line 1133 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->hasTypeParameter()); parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); 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 6703 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_declaration: parameter_type_specifier */ #line 1143 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); 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(), (yyval.interm).param.type->hasTypeParameter()); } #line 6715 "MachineIndependent/glslang_tab.cpp" break; case 125: /* parameter_type_specifier: type_specifier */ #line 1153 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)), {} }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } #line 6726 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: single_declaration */ #line 1162 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } #line 6734 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ #line 1165 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } #line 6743 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ #line 1169 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } #line 6752 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ #line 1173 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } #line 6762 "MachineIndependent/glslang_tab.cpp" break; case 130: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ #line 1178 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } #line 6772 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type */ #line 1186 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } #line 6782 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER */ #line 1191 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } #line 6792 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ #line 1196 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } #line 6802 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ #line 1201 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } #line 6812 "MachineIndependent/glslang_tab.cpp" break; case 135: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ #line 1206 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } #line 6822 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_specifier */ #line 1215 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type)); if ((yyvsp[0].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).hasTypeParameter()); } #line 6837 "MachineIndependent/glslang_tab.cpp" break; case 137: /* fully_specified_type: type_qualifier type_specifier */ #line 1225 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); if ((yyvsp[0].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier)) (yyvsp[0].interm.type).arraySizes = nullptr; parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true); parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier, (yyvsp[0].interm.type).hasTypeParameter()); (yyval.interm.type) = (yyvsp[0].interm.type); if (! (yyval.interm.type).qualifier.isInterpolation() && ((parseContext.language == EShLangVertex && (yyval.interm.type).qualifier.storage == EvqVaryingOut) || (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } #line 6866 "MachineIndependent/glslang_tab.cpp" break; case 138: /* invariant_qualifier: INVARIANT */ #line 1252 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } #line 6877 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: SMOOTH */ #line 1261 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } #line 6889 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: FLAT */ #line 1268 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } #line 6901 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: NOPERSPECTIVE */ #line 1275 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } #line 6913 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: EXPLICITINTERPAMD */ #line 1282 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } #line 6925 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXNV */ #line 1289 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } #line 6938 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERVERTEXEXT */ #line 1297 "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 6951 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVENV */ #line 1305 "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 | 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 6966 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERPRIMITIVEEXT */ #line 1315 "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 6981 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERVIEWNV */ #line 1325 "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, EShLangMesh, "perviewNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } #line 6993 "MachineIndependent/glslang_tab.cpp" break; case 148: /* interpolation_qualifier: PERTASKNV */ #line 1332 "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)(EShLangTaskMask | EShLangMeshMask), "taskNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } #line 7005 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ #line 1342 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } #line 7013 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id */ #line 1348 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } #line 7021 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ #line 1351 "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 7031 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER */ #line 1358 "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 7040 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ #line 1362 "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 7049 "MachineIndependent/glslang_tab.cpp" break; case 154: /* layout_qualifier_id: SHARED */ #line 1366 "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 7059 "MachineIndependent/glslang_tab.cpp" break; case 155: /* precise_qualifier: PRECISE */ #line 1374 "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 7070 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: single_type_qualifier */ #line 1383 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } #line 7078 "MachineIndependent/glslang_tab.cpp" break; case 157: /* type_qualifier: type_qualifier single_type_qualifier */ #line 1386 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType; (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 7091 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: storage_qualifier */ #line 1397 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } #line 7099 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: layout_qualifier */ #line 1400 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } #line 7107 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: precision_qualifier */ #line 1403 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } #line 7116 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: interpolation_qualifier */ #line 1407 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } #line 7125 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: invariant_qualifier */ #line 1411 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } #line 7134 "MachineIndependent/glslang_tab.cpp" break; case 163: /* 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 7143 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: non_uniform_qualifier */ #line 1419 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } #line 7151 "MachineIndependent/glslang_tab.cpp" break; case 165: /* 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 7161 "MachineIndependent/glslang_tab.cpp" break; case 166: /* 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 7170 "MachineIndependent/glslang_tab.cpp" break; case 167: /* 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 7180 "MachineIndependent/glslang_tab.cpp" break; case 168: /* 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 7190 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: CONST */ #line 1444 "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 7199 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: INOUT */ #line 1448 "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 7209 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: IN */ #line 1453 "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 7220 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: OUT */ #line 1459 "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 7231 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: CENTROID */ #line 1465 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } #line 7243 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: UNIFORM */ #line 1472 "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 7253 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: TILEIMAGEEXT */ #line 1477 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } #line 7263 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: SHARED */ #line 1482 "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 | EShLangMeshMask | EShLangTaskMask), "shared"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } #line 7276 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: BUFFER */ #line 1490 "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 7286 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: ATTRIBUTE */ #line 1495 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute"); parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute"); parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute"); parseContext.globalCheck((yyvsp[0].lex).loc, "attribute"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } #line 7303 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: VARYING */ #line 1507 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying"); parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying"); parseContext.globalCheck((yyvsp[0].lex).loc, "varying"); (yyval.interm.type).init((yyvsp[0].lex).loc); if (parseContext.language == EShLangVertex) (yyval.interm.type).qualifier.storage = EvqVaryingOut; else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } #line 7322 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: PATCH */ #line 1521 "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 7333 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: SAMPLE */ #line 1527 "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 7343 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITATTRNV */ #line 1532 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask | EShLangAnyHitMask), "hitAttributeNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } #line 7356 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITOBJECTATTRNV */ #line 1540 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } #line 7369 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: HITATTREXT */ #line 1548 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask | EShLangAnyHitMask), "hitAttributeEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } #line 7382 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADNV */ #line 1556 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } #line 7395 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADEXT */ #line 1564 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } #line 7408 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: PAYLOADINNV */ #line 1572 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } #line 7421 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: PAYLOADINEXT */ #line 1580 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } #line 7434 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATANV */ #line 1588 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } #line 7447 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAEXT */ #line 1596 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } #line 7460 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: CALLDATAINNV */ #line 1604 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } #line 7472 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: CALLDATAINEXT */ #line 1611 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } #line 7484 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: COHERENT */ #line 1618 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } #line 7493 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: DEVICECOHERENT */ #line 1622 "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 7503 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: QUEUEFAMILYCOHERENT */ #line 1627 "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 7513 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: WORKGROUPCOHERENT */ #line 1632 "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 7523 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: SUBGROUPCOHERENT */ #line 1637 "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 7533 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: NONPRIVATE */ #line 1642 "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 7543 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: SHADERCALLCOHERENT */ #line 1647 "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 7553 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: VOLATILE */ #line 1652 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } #line 7562 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: RESTRICT */ #line 1656 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } #line 7571 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: READONLY */ #line 1660 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } #line 7580 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: WRITEONLY */ #line 1664 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } #line 7589 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: NONTEMPORAL */ #line 1668 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nontemporal = true; } #line 7598 "MachineIndependent/glslang_tab.cpp" break; case 205: /* storage_qualifier: SUBROUTINE */ #line 1672 "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 7609 "MachineIndependent/glslang_tab.cpp" break; case 206: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ #line 1678 "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 7620 "MachineIndependent/glslang_tab.cpp" break; case 207: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ #line 1684 "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 7632 "MachineIndependent/glslang_tab.cpp" break; case 208: /* non_uniform_qualifier: NONUNIFORM */ #line 1694 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } #line 7641 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_name_list: IDENTIFIER */ #line 1701 "MachineIndependent/glslang.y" { // TODO } #line 7649 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_name_list: type_name_list COMMA IDENTIFIER */ #line 1704 "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 7659 "MachineIndependent/glslang_tab.cpp" break; case 211: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ #line 1712 "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); parseContext.typeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); } #line 7671 "MachineIndependent/glslang_tab.cpp" break; case 212: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ #line 1719 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; parseContext.typeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } #line 7684 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ #line 1730 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } #line 7694 "MachineIndependent/glslang_tab.cpp" break; case 214: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ #line 1735 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; TArraySize size; parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } #line 7707 "MachineIndependent/glslang_tab.cpp" break; case 215: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ #line 1743 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } #line 7716 "MachineIndependent/glslang_tab.cpp" break; case 216: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ #line 1747 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); TArraySize size; parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } #line 7728 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier_opt: type_parameter_specifier */ #line 1757 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } #line 7736 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_parameter_specifier_opt: %empty */ #line 1760 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } #line 7744 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ #line 1766 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } #line 7752 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_parameter_specifier_list: type_specifier */ #line 1772 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; (yyval.interm.typeParameters)->spirvType = (yyvsp[0].interm.type).spirvType; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } #line 7763 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_parameter_specifier_list: unary_expression */ #line 1778 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; TArraySize size; parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } #line 7776 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ #line 1786 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); TArraySize size; parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } #line 7788 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: VOID */ #line 1796 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } #line 7797 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: FLOAT */ #line 1800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } #line 7806 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: INT */ #line 1804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } #line 7815 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: UINT */ #line 1808 "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 7825 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: BOOL */ #line 1813 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } #line 7834 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: VEC2 */ #line 1817 "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 7844 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: VEC3 */ #line 1822 "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 7854 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: VEC4 */ #line 1827 "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 7864 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: BVEC2 */ #line 1832 "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 7874 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: BVEC3 */ #line 1837 "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 7884 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: BVEC4 */ #line 1842 "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 7894 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: IVEC2 */ #line 1847 "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 7904 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: IVEC3 */ #line 1852 "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 7914 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: IVEC4 */ #line 1857 "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 7924 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: UVEC2 */ #line 1862 "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 7935 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: UVEC3 */ #line 1868 "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 7946 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: UVEC4 */ #line 1874 "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 7957 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT2 */ #line 1880 "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 7967 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT3 */ #line 1885 "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 7977 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT4 */ #line 1890 "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 7987 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT2X2 */ #line 1895 "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 7997 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT2X3 */ #line 1900 "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 8007 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT2X4 */ #line 1905 "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 8017 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT3X2 */ #line 1910 "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 8027 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT3X3 */ #line 1915 "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 8037 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: MAT3X4 */ #line 1920 "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 8047 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: MAT4X2 */ #line 1925 "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 8057 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: MAT4X3 */ #line 1930 "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 8067 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: MAT4X4 */ #line 1935 "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 8077 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: DOUBLE */ #line 1940 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } #line 8089 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: BFLOAT16_T */ #line 1947 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "bfloat16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; } #line 8099 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: FLOATE5M2_T */ #line 1952 "MachineIndependent/glslang.y" { parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "floate5m2_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE5M2; } #line 8109 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: FLOATE4M3_T */ #line 1957 "MachineIndependent/glslang.y" { parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "floate4m3_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE4M3; } #line 8119 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: FLOAT16_T */ #line 1962 "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 8129 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: FLOAT32_T */ #line 1967 "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 8139 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: FLOAT64_T */ #line 1972 "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 8149 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: INT8_T */ #line 1977 "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 8159 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: UINT8_T */ #line 1982 "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 8169 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: INT16_T */ #line 1987 "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 8179 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: UINT16_T */ #line 1992 "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 8189 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: INT32_T */ #line 1997 "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 8199 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: UINT32_T */ #line 2002 "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 8209 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: INT64_T */ #line 2007 "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 8219 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: UINT64_T */ #line 2012 "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 8229 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: DVEC2 */ #line 2017 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } #line 8242 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: DVEC3 */ #line 2025 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } #line 8255 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: DVEC4 */ #line 2033 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } #line 8268 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: BF16VEC2 */ #line 2041 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((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 = EbtBFloat16; (yyval.interm.type).setVector(2); } #line 8279 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: BF16VEC3 */ #line 2047 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((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 = EbtBFloat16; (yyval.interm.type).setVector(3); } #line 8290 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: BF16VEC4 */ #line 2053 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((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 = EbtBFloat16; (yyval.interm.type).setVector(4); } #line 8301 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: FE5M2VEC2 */ #line 2059 "MachineIndependent/glslang.y" { parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE5M2; (yyval.interm.type).setVector(2); } #line 8312 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: FE5M2VEC3 */ #line 2065 "MachineIndependent/glslang.y" { parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE5M2; (yyval.interm.type).setVector(3); } #line 8323 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: FE5M2VEC4 */ #line 2071 "MachineIndependent/glslang.y" { parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE5M2; (yyval.interm.type).setVector(4); } #line 8334 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: FE4M3VEC2 */ #line 2077 "MachineIndependent/glslang.y" { parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE4M3; (yyval.interm.type).setVector(2); } #line 8345 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: FE4M3VEC3 */ #line 2083 "MachineIndependent/glslang.y" { parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE4M3; (yyval.interm.type).setVector(3); } #line 8356 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: FE4M3VEC4 */ #line 2089 "MachineIndependent/glslang.y" { parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE4M3; (yyval.interm.type).setVector(4); } #line 8367 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: F16VEC2 */ #line 2095 "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 8378 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: F16VEC3 */ #line 2101 "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 8389 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: F16VEC4 */ #line 2107 "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 8400 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: F32VEC2 */ #line 2113 "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 8411 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: F32VEC3 */ #line 2119 "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 8422 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: F32VEC4 */ #line 2125 "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 8433 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: F64VEC2 */ #line 2131 "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 8444 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: F64VEC3 */ #line 2137 "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 8455 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: F64VEC4 */ #line 2143 "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 8466 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: I8VEC2 */ #line 2149 "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 8477 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: I8VEC3 */ #line 2155 "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 8488 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: I8VEC4 */ #line 2161 "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 8499 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: I16VEC2 */ #line 2167 "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 8510 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: I16VEC3 */ #line 2173 "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 8521 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: I16VEC4 */ #line 2179 "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 8532 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: I32VEC2 */ #line 2185 "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 8543 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: I32VEC3 */ #line 2191 "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 8554 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: I32VEC4 */ #line 2197 "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 8565 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: I64VEC2 */ #line 2203 "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 8576 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: I64VEC3 */ #line 2209 "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 8587 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: I64VEC4 */ #line 2215 "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 8598 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: U8VEC2 */ #line 2221 "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 8609 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: U8VEC3 */ #line 2227 "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 8620 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: U8VEC4 */ #line 2233 "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 8631 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: U16VEC2 */ #line 2239 "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 8642 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: U16VEC3 */ #line 2245 "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 8653 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: U16VEC4 */ #line 2251 "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 8664 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: U32VEC2 */ #line 2257 "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 8675 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: U32VEC3 */ #line 2263 "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 8686 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: U32VEC4 */ #line 2269 "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 8697 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: U64VEC2 */ #line 2275 "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 8708 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: U64VEC3 */ #line 2281 "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 8719 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: U64VEC4 */ #line 2287 "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 8730 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: DMAT2 */ #line 2293 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } #line 8743 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: DMAT3 */ #line 2301 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } #line 8756 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: DMAT4 */ #line 2309 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } #line 8769 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: DMAT2X2 */ #line 2317 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } #line 8782 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: DMAT2X3 */ #line 2325 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } #line 8795 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: DMAT2X4 */ #line 2333 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } #line 8808 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: DMAT3X2 */ #line 2341 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } #line 8821 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: DMAT3X3 */ #line 2349 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } #line 8834 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: DMAT3X4 */ #line 2357 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } #line 8847 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: DMAT4X2 */ #line 2365 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } #line 8860 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: DMAT4X3 */ #line 2373 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } #line 8873 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: DMAT4X4 */ #line 2381 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } #line 8886 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F16MAT2 */ #line 2389 "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 8897 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F16MAT3 */ #line 2395 "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 8908 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F16MAT4 */ #line 2401 "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 8919 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F16MAT2X2 */ #line 2407 "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 8930 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F16MAT2X3 */ #line 2413 "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 8941 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F16MAT2X4 */ #line 2419 "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 8952 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F16MAT3X2 */ #line 2425 "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 8963 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F16MAT3X3 */ #line 2431 "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 8974 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F16MAT3X4 */ #line 2437 "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 8985 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F16MAT4X2 */ #line 2443 "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 8996 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F16MAT4X3 */ #line 2449 "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 9007 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F16MAT4X4 */ #line 2455 "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 9018 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F32MAT2 */ #line 2461 "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 9029 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F32MAT3 */ #line 2467 "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 9040 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F32MAT4 */ #line 2473 "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 9051 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F32MAT2X2 */ #line 2479 "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 9062 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F32MAT2X3 */ #line 2485 "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 9073 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F32MAT2X4 */ #line 2491 "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 9084 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F32MAT3X2 */ #line 2497 "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 9095 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F32MAT3X3 */ #line 2503 "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 9106 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: F32MAT3X4 */ #line 2509 "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 9117 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: F32MAT4X2 */ #line 2515 "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 9128 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: F32MAT4X3 */ #line 2521 "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 9139 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: F32MAT4X4 */ #line 2527 "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 9150 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: F64MAT2 */ #line 2533 "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 9161 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: F64MAT3 */ #line 2539 "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 9172 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: F64MAT4 */ #line 2545 "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 9183 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: F64MAT2X2 */ #line 2551 "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 9194 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: F64MAT2X3 */ #line 2557 "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 9205 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: F64MAT2X4 */ #line 2563 "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 9216 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: F64MAT3X2 */ #line 2569 "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 9227 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: F64MAT3X3 */ #line 2575 "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 9238 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: F64MAT3X4 */ #line 2581 "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 9249 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: F64MAT4X2 */ #line 2587 "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 9260 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: F64MAT4X3 */ #line 2593 "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 9271 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: F64MAT4X4 */ #line 2599 "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 9282 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: ACCSTRUCTNV */ #line 2605 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } #line 9291 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: ACCSTRUCTEXT */ #line 2609 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } #line 9300 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: RAYQUERYEXT */ #line 2613 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } #line 9309 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: ATOMIC_UINT */ #line 2617 "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 9319 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: SAMPLER1D */ #line 2622 "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 9329 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: SAMPLER2D */ #line 2627 "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 9339 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: SAMPLER3D */ #line 2632 "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 9349 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: SAMPLERCUBE */ #line 2637 "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 9359 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: SAMPLER2DSHADOW */ #line 2642 "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 9369 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ #line 2647 "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 9379 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: SAMPLER2DARRAY */ #line 2652 "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 9389 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ #line 2657 "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 9399 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: SAMPLER1DSHADOW */ #line 2662 "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 9409 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: SAMPLER1DARRAY */ #line 2667 "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 9419 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ #line 2672 "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 9429 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ #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(EbtFloat, EsdCube, true); } #line 9439 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ #line 2682 "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 9449 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: F16SAMPLER1D */ #line 2687 "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 9460 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: F16SAMPLER2D */ #line 2693 "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 9471 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: F16SAMPLER3D */ #line 2699 "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 9482 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: F16SAMPLERCUBE */ #line 2705 "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 9493 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ #line 2711 "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 9504 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ #line 2717 "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 9515 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ #line 2723 "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 9526 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ #line 2729 "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 9537 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ #line 2735 "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 9548 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ #line 2741 "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 9559 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ #line 2747 "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 9570 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ #line 2753 "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 9581 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ #line 2759 "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 9592 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: ISAMPLER1D */ #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.set(EbtInt, Esd1D); } #line 9602 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: ISAMPLER2D */ #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.set(EbtInt, Esd2D); } #line 9612 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: ISAMPLER3D */ #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.set(EbtInt, Esd3D); } #line 9622 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: ISAMPLERCUBE */ #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.set(EbtInt, EsdCube); } #line 9632 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: ISAMPLER2DARRAY */ #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.set(EbtInt, Esd2D, true); } #line 9642 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: USAMPLER2D */ #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.set(EbtUint, Esd2D); } #line 9652 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: USAMPLER3D */ #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.set(EbtUint, Esd3D); } #line 9662 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: USAMPLERCUBE */ #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.set(EbtUint, EsdCube); } #line 9672 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ISAMPLER1DARRAY */ #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.set(EbtInt, Esd1D, true); } #line 9682 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ #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.set(EbtInt, EsdCube, true); } #line 9692 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: USAMPLER1D */ #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.set(EbtUint, Esd1D); } #line 9702 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: USAMPLER1DARRAY */ #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.set(EbtUint, Esd1D, true); } #line 9712 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ #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.set(EbtUint, EsdCube, true); } #line 9722 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: TEXTURECUBEARRAY */ #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.setTexture(EbtFloat, EsdCube, true); } #line 9732 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ #line 2835 "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 9742 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ #line 2840 "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 9752 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: USAMPLER2DARRAY */ #line 2845 "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 9762 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: TEXTURE2D */ #line 2850 "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 9772 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: TEXTURE3D */ #line 2855 "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 9782 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: TEXTURE2DARRAY */ #line 2860 "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 9792 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: TEXTURECUBE */ #line 2865 "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 9802 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: ITEXTURE2D */ #line 2870 "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 9812 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: ITEXTURE3D */ #line 2875 "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 9822 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: ITEXTURECUBE */ #line 2880 "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 9832 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: ITEXTURE2DARRAY */ #line 2885 "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 9842 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: UTEXTURE2D */ #line 2890 "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 9852 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: UTEXTURE3D */ #line 2895 "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 9862 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: UTEXTURECUBE */ #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.setTexture(EbtUint, EsdCube); } #line 9872 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: UTEXTURE2DARRAY */ #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.setTexture(EbtUint, Esd2D, true); } #line 9882 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: SAMPLER */ #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.setPureSampler(false); } #line 9892 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: SAMPLERSHADOW */ #line 2915 "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 9902 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: SAMPLER2DRECT */ #line 2920 "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 9912 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ #line 2925 "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 9922 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: F16SAMPLER2DRECT */ #line 2930 "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 9933 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ #line 2936 "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 9944 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: ISAMPLER2DRECT */ #line 2942 "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 9954 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: USAMPLER2DRECT */ #line 2947 "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 9964 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: SAMPLERBUFFER */ #line 2952 "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 9974 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16SAMPLERBUFFER */ #line 2957 "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 9985 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: ISAMPLERBUFFER */ #line 2963 "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 9995 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: USAMPLERBUFFER */ #line 2968 "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 10005 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: SAMPLER2DMS */ #line 2973 "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 10015 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16SAMPLER2DMS */ #line 2978 "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 10026 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: ISAMPLER2DMS */ #line 2984 "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 10036 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: USAMPLER2DMS */ #line 2989 "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 10046 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ #line 2994 "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 10056 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ #line 2999 "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 10067 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ #line 3005 "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 10077 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ #line 3010 "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 10087 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: TEXTURE1D */ #line 3015 "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 10097 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: F16TEXTURE1D */ #line 3020 "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 10108 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: F16TEXTURE2D */ #line 3026 "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 10119 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: F16TEXTURE3D */ #line 3032 "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 10130 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: F16TEXTURECUBE */ #line 3038 "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 10141 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: TEXTURE1DARRAY */ #line 3044 "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 10151 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ #line 3049 "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 10162 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ #line 3055 "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 10173 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ #line 3061 "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 10184 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: ITEXTURE1D */ #line 3067 "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 10194 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: ITEXTURE1DARRAY */ #line 3072 "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 10204 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: UTEXTURE1D */ #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(EbtUint, Esd1D); } #line 10214 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: UTEXTURE1DARRAY */ #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, Esd1D, true); } #line 10224 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: TEXTURE2DRECT */ #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.setTexture(EbtFloat, EsdRect); } #line 10234 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: F16TEXTURE2DRECT */ #line 3092 "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 10245 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: ITEXTURE2DRECT */ #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.setTexture(EbtInt, EsdRect); } #line 10255 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: UTEXTURE2DRECT */ #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.setTexture(EbtUint, EsdRect); } #line 10265 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: TEXTUREBUFFER */ #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.setTexture(EbtFloat, EsdBuffer); } #line 10275 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: F16TEXTUREBUFFER */ #line 3113 "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 10286 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: ITEXTUREBUFFER */ #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.setTexture(EbtInt, EsdBuffer); } #line 10296 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: UTEXTUREBUFFER */ #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.setTexture(EbtUint, EsdBuffer); } #line 10306 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: TEXTURE2DMS */ #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.setTexture(EbtFloat, Esd2D, false, false, true); } #line 10316 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: F16TEXTURE2DMS */ #line 3134 "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 10327 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: ITEXTURE2DMS */ #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.setTexture(EbtInt, Esd2D, false, false, true); } #line 10337 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: UTEXTURE2DMS */ #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.setTexture(EbtUint, Esd2D, false, false, true); } #line 10347 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ #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.setTexture(EbtFloat, Esd2D, true, false, true); } #line 10357 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ #line 3155 "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 10368 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ #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.setTexture(EbtInt, Esd2D, true, false, true); } #line 10378 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ #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.setTexture(EbtUint, Esd2D, true, false, true); } #line 10388 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: IMAGE1D */ #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, Esd1D); } #line 10398 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: F16IMAGE1D */ #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, Esd1D); } #line 10409 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: IIMAGE1D */ #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, Esd1D); } #line 10419 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: UIMAGE1D */ #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, Esd1D); } #line 10429 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: IMAGE2D */ #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, Esd2D); } #line 10439 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: F16IMAGE2D */ #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, Esd2D); } #line 10450 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: IIMAGE2D */ #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, Esd2D); } #line 10460 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: UIMAGE2D */ #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, Esd2D); } #line 10470 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: IMAGE3D */ #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, Esd3D); } #line 10480 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: F16IMAGE3D */ #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, Esd3D); } #line 10491 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: IIMAGE3D */ #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, Esd3D); } #line 10501 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: UIMAGE3D */ #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, Esd3D); } #line 10511 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: IMAGE2DRECT */ #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, EsdRect); } #line 10521 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: F16IMAGE2DRECT */ #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, EsdRect); } #line 10532 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: IIMAGE2DRECT */ #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, EsdRect); } #line 10542 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: UIMAGE2DRECT */ #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, EsdRect); } #line 10552 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: IMAGECUBE */ #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); } #line 10562 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: F16IMAGECUBE */ #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); } #line 10573 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: IIMAGECUBE */ #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); } #line 10583 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: UIMAGECUBE */ #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); } #line 10593 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: IMAGEBUFFER */ #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, EsdBuffer); } #line 10603 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: F16IMAGEBUFFER */ #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, EsdBuffer); } #line 10614 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: IIMAGEBUFFER */ #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, EsdBuffer); } #line 10624 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: UIMAGEBUFFER */ #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, EsdBuffer); } #line 10634 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: IMAGE1DARRAY */ #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, Esd1D, true); } #line 10644 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: F16IMAGE1DARRAY */ #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, Esd1D, true); } #line 10655 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: IIMAGE1DARRAY */ #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, Esd1D, true); } #line 10665 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: UIMAGE1DARRAY */ #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, Esd1D, true); } #line 10675 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: IMAGE2DARRAY */ #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(EbtFloat, Esd2D, true); } #line 10685 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: F16IMAGE2DARRAY */ #line 3323 "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 10696 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: IIMAGE2DARRAY */ #line 3329 "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 10706 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: UIMAGE2DARRAY */ #line 3334 "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 10716 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: IMAGECUBEARRAY */ #line 3339 "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 10726 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ #line 3344 "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 10737 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: IIMAGECUBEARRAY */ #line 3350 "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 10747 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: UIMAGECUBEARRAY */ #line 3355 "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 10757 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: IMAGE2DMS */ #line 3360 "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 10767 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: F16IMAGE2DMS */ #line 3365 "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 10778 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: IIMAGE2DMS */ #line 3371 "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 10788 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: UIMAGE2DMS */ #line 3376 "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 10798 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: IMAGE2DMSARRAY */ #line 3381 "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 10808 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ #line 3386 "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 10819 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ #line 3392 "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 10829 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ #line 3397 "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 10839 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: I64IMAGE1D */ #line 3402 "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 10849 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: U64IMAGE1D */ #line 3407 "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 10859 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: I64IMAGE2D */ #line 3412 "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 10869 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: U64IMAGE2D */ #line 3417 "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 10879 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: I64IMAGE3D */ #line 3422 "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 10889 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: U64IMAGE3D */ #line 3427 "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 10899 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: I64IMAGE2DRECT */ #line 3432 "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 10909 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: U64IMAGE2DRECT */ #line 3437 "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 10919 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: I64IMAGECUBE */ #line 3442 "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 10929 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: U64IMAGECUBE */ #line 3447 "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 10939 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: I64IMAGEBUFFER */ #line 3452 "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 10949 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: U64IMAGEBUFFER */ #line 3457 "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 10959 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: I64IMAGE1DARRAY */ #line 3462 "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 10969 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: U64IMAGE1DARRAY */ #line 3467 "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 10979 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: I64IMAGE2DARRAY */ #line 3472 "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 10989 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: U64IMAGE2DARRAY */ #line 3477 "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 10999 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ #line 3482 "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 11009 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ #line 3487 "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 11019 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: I64IMAGE2DMS */ #line 3492 "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 11029 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: U64IMAGE2DMS */ #line 3497 "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 11039 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ #line 3502 "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 11049 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ #line 3507 "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 11059 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ #line 3512 "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 11070 "MachineIndependent/glslang_tab.cpp" break; case 535: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ #line 3518 "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 11081 "MachineIndependent/glslang_tab.cpp" break; case 536: /* type_specifier_nonarray: ATTACHMENTEXT */ #line 3524 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } #line 11092 "MachineIndependent/glslang_tab.cpp" break; case 537: /* type_specifier_nonarray: IATTACHMENTEXT */ #line 3530 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } #line 11103 "MachineIndependent/glslang_tab.cpp" break; case 538: /* type_specifier_nonarray: UATTACHMENTEXT */ #line 3536 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } #line 11114 "MachineIndependent/glslang_tab.cpp" break; case 539: /* type_specifier_nonarray: SUBPASSINPUT */ #line 3542 "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 11125 "MachineIndependent/glslang_tab.cpp" break; case 540: /* type_specifier_nonarray: SUBPASSINPUTMS */ #line 3548 "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 11136 "MachineIndependent/glslang_tab.cpp" break; case 541: /* type_specifier_nonarray: F16SUBPASSINPUT */ #line 3554 "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"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } #line 11148 "MachineIndependent/glslang_tab.cpp" break; case 542: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ #line 3561 "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"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } #line 11160 "MachineIndependent/glslang_tab.cpp" break; case 543: /* type_specifier_nonarray: ISUBPASSINPUT */ #line 3568 "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 11171 "MachineIndependent/glslang_tab.cpp" break; case 544: /* type_specifier_nonarray: ISUBPASSINPUTMS */ #line 3574 "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 11182 "MachineIndependent/glslang_tab.cpp" break; case 545: /* type_specifier_nonarray: USUBPASSINPUT */ #line 3580 "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 11193 "MachineIndependent/glslang_tab.cpp" break; case 546: /* type_specifier_nonarray: USUBPASSINPUTMS */ #line 3586 "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 11204 "MachineIndependent/glslang_tab.cpp" break; case 547: /* type_specifier_nonarray: FCOOPMATNV */ #line 3592 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((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).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } #line 11216 "MachineIndependent/glslang_tab.cpp" break; case 548: /* type_specifier_nonarray: ICOOPMATNV */ #line 3599 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((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).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } #line 11228 "MachineIndependent/glslang_tab.cpp" break; case 549: /* type_specifier_nonarray: UCOOPMATNV */ #line 3606 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((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).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } #line 11240 "MachineIndependent/glslang_tab.cpp" break; case 550: /* type_specifier_nonarray: COOPMAT */ #line 3613 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtCoopmat; (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } #line 11252 "MachineIndependent/glslang_tab.cpp" break; case 551: /* type_specifier_nonarray: TENSORLAYOUTNV */ #line 3620 "MachineIndependent/glslang.y" { parseContext.tensorLayoutViewCheck((yyvsp[0].lex).loc, "tensorLayoutNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtTensorLayoutNV; } #line 11262 "MachineIndependent/glslang_tab.cpp" break; case 552: /* type_specifier_nonarray: TENSORVIEWNV */ #line 3625 "MachineIndependent/glslang.y" { parseContext.tensorLayoutViewCheck((yyvsp[0].lex).loc, "tensorViewNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtTensorViewNV; } #line 11272 "MachineIndependent/glslang_tab.cpp" break; case 553: /* type_specifier_nonarray: FUNCTION */ #line 3630 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).basicType = EbtFunction; } #line 11281 "MachineIndependent/glslang_tab.cpp" break; case 554: /* type_specifier_nonarray: COOPVECNV */ #line 3634 "MachineIndependent/glslang.y" { parseContext.coopvecCheck((yyvsp[0].lex).loc, "coopvecNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtCoopvecNV; (yyval.interm.type).coopvecNV = true; } #line 11292 "MachineIndependent/glslang_tab.cpp" break; case 555: /* type_specifier_nonarray: TENSORARM */ #line 3640 "MachineIndependent/glslang.y" { parseContext.tensorCheckARM((yyvsp[0].lex).loc, "tensorARM", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).tensorRankARM = 1; // placeholder value (yyval.interm.type).basicType = EbtTensorARM; } #line 11303 "MachineIndependent/glslang_tab.cpp" break; case 556: /* type_specifier_nonarray: spirv_type_specifier */ #line 3646 "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 11312 "MachineIndependent/glslang_tab.cpp" break; case 557: /* type_specifier_nonarray: HITOBJECTNV */ #line 3650 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } #line 11321 "MachineIndependent/glslang_tab.cpp" break; case 558: /* type_specifier_nonarray: struct_specifier */ #line 3654 "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 11331 "MachineIndependent/glslang_tab.cpp" break; case 559: /* type_specifier_nonarray: TYPE_NAME */ #line 3659 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the // type. // if (const TVariable* variable = ((yyvsp[0].lex).symbol)->getAsVariable()) { const TType& structure = variable->getType(); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtStruct; (yyval.interm.type).userDef = &structure; } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } #line 11349 "MachineIndependent/glslang_tab.cpp" break; case 560: /* precision_qualifier: HIGH_PRECISION */ #line 3675 "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 11359 "MachineIndependent/glslang_tab.cpp" break; case 561: /* precision_qualifier: MEDIUM_PRECISION */ #line 3680 "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 11369 "MachineIndependent/glslang_tab.cpp" break; case 562: /* precision_qualifier: LOW_PRECISION */ #line 3685 "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 11379 "MachineIndependent/glslang_tab.cpp" break; case 563: /* $@3: %empty */ #line 3693 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } #line 11385 "MachineIndependent/glslang_tab.cpp" break; case 564: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ #line 3693 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true); if (! parseContext.symbolTable.insert(*userTypeDef)) parseContext.error((yyvsp[-4].lex).loc, "redefinition", (yyvsp[-4].lex).string->c_str(), "struct"); else if (parseContext.spvVersion.vulkanRelaxed && structure->containsOpaque()) parseContext.relaxedSymbols.push_back(structure->getTypeName()); (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).basicType = EbtStruct; (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } #line 11407 "MachineIndependent/glslang_tab.cpp" break; case 565: /* $@4: %empty */ #line 3710 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } #line 11413 "MachineIndependent/glslang_tab.cpp" break; case 566: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ #line 3710 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); (yyval.interm.type).basicType = EbtStruct; (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } #line 11425 "MachineIndependent/glslang_tab.cpp" break; case 567: /* struct_declaration_list: struct_declaration */ #line 3720 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } #line 11433 "MachineIndependent/glslang_tab.cpp" break; case 568: /* struct_declaration_list: struct_declaration_list struct_declaration */ #line 3723 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[0].interm.typeList))[i].type->getFieldName()) parseContext.error((*(yyvsp[0].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[0].interm.typeList))[i].type->getFieldName().c_str()); } (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } #line 11448 "MachineIndependent/glslang_tab.cpp" break; case 569: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ #line 3736 "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"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).hasTypeParameter()); for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { TType type((yyvsp[-2].interm.type)); type.setFieldName((*(yyval.interm.typeList))[i].type->getFieldName()); type.transferArraySizes((*(yyval.interm.typeList))[i].type->getArraySizes()); type.copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); parseContext.arrayOfArrayVersionCheck((*(yyval.interm.typeList))[i].loc, type.getArraySizes()); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } #line 11475 "MachineIndependent/glslang_tab.cpp" break; case 570: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ #line 3758 "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"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); parseContext.memberQualifierCheck((yyvsp[-3].interm.type)); parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true); parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).hasTypeParameter()); for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { TType type((yyvsp[-2].interm.type)); type.setFieldName((*(yyval.interm.typeList))[i].type->getFieldName()); type.transferArraySizes((*(yyval.interm.typeList))[i].type->getArraySizes()); type.copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); parseContext.arrayOfArrayVersionCheck((*(yyval.interm.typeList))[i].loc, type.getArraySizes()); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } #line 11504 "MachineIndependent/glslang_tab.cpp" break; case 571: /* struct_declarator_list: struct_declarator */ #line 3785 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } #line 11513 "MachineIndependent/glslang_tab.cpp" break; case 572: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ #line 3789 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } #line 11521 "MachineIndependent/glslang_tab.cpp" break; case 573: /* struct_declarator: IDENTIFIER */ #line 3795 "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 11531 "MachineIndependent/glslang_tab.cpp" break; case 574: /* struct_declarator: IDENTIFIER array_specifier */ #line 3800 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[-1].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } #line 11544 "MachineIndependent/glslang_tab.cpp" break; case 575: /* initializer: assignment_expression */ #line 3811 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 11552 "MachineIndependent/glslang_tab.cpp" break; case 576: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ #line 3814 "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 11563 "MachineIndependent/glslang_tab.cpp" break; case 577: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ #line 3820 "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 11574 "MachineIndependent/glslang_tab.cpp" break; case 578: /* initializer: LEFT_BRACE RIGHT_BRACE */ #line 3826 "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 11585 "MachineIndependent/glslang_tab.cpp" break; case 579: /* initializer_list: initializer */ #line 3835 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } #line 11593 "MachineIndependent/glslang_tab.cpp" break; case 580: /* initializer_list: initializer_list COMMA initializer */ #line 3838 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } #line 11601 "MachineIndependent/glslang_tab.cpp" break; case 581: /* declaration_statement: declaration */ #line 3844 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11607 "MachineIndependent/glslang_tab.cpp" break; case 582: /* statement: compound_statement */ #line 3848 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11613 "MachineIndependent/glslang_tab.cpp" break; case 583: /* statement: simple_statement */ #line 3849 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11619 "MachineIndependent/glslang_tab.cpp" break; case 584: /* simple_statement: declaration_statement */ #line 3855 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11625 "MachineIndependent/glslang_tab.cpp" break; case 585: /* simple_statement: expression_statement */ #line 3856 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11631 "MachineIndependent/glslang_tab.cpp" break; case 586: /* simple_statement: selection_statement */ #line 3857 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11637 "MachineIndependent/glslang_tab.cpp" break; case 587: /* simple_statement: switch_statement */ #line 3858 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11643 "MachineIndependent/glslang_tab.cpp" break; case 588: /* simple_statement: case_label */ #line 3859 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11649 "MachineIndependent/glslang_tab.cpp" break; case 589: /* simple_statement: iteration_statement */ #line 3860 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11655 "MachineIndependent/glslang_tab.cpp" break; case 590: /* simple_statement: jump_statement */ #line 3861 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11661 "MachineIndependent/glslang_tab.cpp" break; case 591: /* simple_statement: demote_statement */ #line 3862 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11667 "MachineIndependent/glslang_tab.cpp" break; case 592: /* demote_statement: DEMOTE SEMICOLON */ #line 3866 "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 11677 "MachineIndependent/glslang_tab.cpp" break; case 593: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ #line 3874 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } #line 11683 "MachineIndependent/glslang_tab.cpp" break; case 594: /* $@5: %empty */ #line 3875 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } #line 11692 "MachineIndependent/glslang_tab.cpp" break; case 595: /* $@6: %empty */ #line 3879 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } #line 11701 "MachineIndependent/glslang_tab.cpp" break; case 596: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ #line 3883 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) { (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyvsp[-2].interm.intermNode)->getAsAggregate()->setEndLoc((yyvsp[0].lex).loc); } (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } #line 11713 "MachineIndependent/glslang_tab.cpp" break; case 597: /* statement_no_new_scope: compound_statement_no_new_scope */ #line 3893 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11719 "MachineIndependent/glslang_tab.cpp" break; case 598: /* statement_no_new_scope: simple_statement */ #line 3894 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11725 "MachineIndependent/glslang_tab.cpp" break; case 599: /* $@7: %empty */ #line 3898 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } #line 11733 "MachineIndependent/glslang_tab.cpp" break; case 600: /* statement_scoped: $@7 compound_statement */ #line 3901 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11742 "MachineIndependent/glslang_tab.cpp" break; case 601: /* $@8: %empty */ #line 3905 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } #line 11752 "MachineIndependent/glslang_tab.cpp" break; case 602: /* statement_scoped: $@8 simple_statement */ #line 3910 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11763 "MachineIndependent/glslang_tab.cpp" break; case 603: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ #line 3919 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } #line 11771 "MachineIndependent/glslang_tab.cpp" break; case 604: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ #line 3922 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) { (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyvsp[-1].interm.intermNode)->getAsAggregate()->setEndLoc((yyvsp[0].lex).loc); } (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } #line 11783 "MachineIndependent/glslang_tab.cpp" break; case 605: /* statement_list: statement */ #line 3932 "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 || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } #line 11796 "MachineIndependent/glslang_tab.cpp" break; case 606: /* statement_list: statement_list statement */ #line 3940 "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)) { parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } #line 11809 "MachineIndependent/glslang_tab.cpp" break; case 607: /* expression_statement: SEMICOLON */ #line 3951 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } #line 11815 "MachineIndependent/glslang_tab.cpp" break; case 608: /* expression_statement: expression SEMICOLON */ #line 3952 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } #line 11821 "MachineIndependent/glslang_tab.cpp" break; case 609: /* selection_statement: selection_statement_nonattributed */ #line 3956 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11829 "MachineIndependent/glslang_tab.cpp" break; case 610: /* selection_statement: attribute selection_statement_nonattributed */ #line 3959 "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 11839 "MachineIndependent/glslang_tab.cpp" break; case 611: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ #line 3966 "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 11848 "MachineIndependent/glslang_tab.cpp" break; case 612: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ #line 3973 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } #line 11857 "MachineIndependent/glslang_tab.cpp" break; case 613: /* selection_rest_statement: statement_scoped */ #line 3977 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } #line 11866 "MachineIndependent/glslang_tab.cpp" break; case 614: /* condition: expression */ #line 3985 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } #line 11875 "MachineIndependent/glslang_tab.cpp" break; case 615: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ #line 3989 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); TType type((yyvsp[-3].interm.type)); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); if (initNode) (yyval.interm.intermTypedNode) = initNode->getAsTyped(); else (yyval.interm.intermTypedNode) = 0; } #line 11890 "MachineIndependent/glslang_tab.cpp" break; case 616: /* switch_statement: switch_statement_nonattributed */ #line 4002 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11898 "MachineIndependent/glslang_tab.cpp" break; case 617: /* switch_statement: attribute switch_statement_nonattributed */ #line 4005 "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 11908 "MachineIndependent/glslang_tab.cpp" break; case 618: /* $@9: %empty */ #line 4012 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; ++parseContext.statementNestingLevel; parseContext.switchSequenceStack.push_back(new TIntermSequence); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } #line 11921 "MachineIndependent/glslang_tab.cpp" break; case 619: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ #line 4020 "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(); parseContext.switchSequenceStack.pop_back(); parseContext.switchLevel.pop_back(); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } #line 11935 "MachineIndependent/glslang_tab.cpp" break; case 620: /* switch_statement_list: %empty */ #line 4032 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } #line 11943 "MachineIndependent/glslang_tab.cpp" break; case 621: /* switch_statement_list: statement_list */ #line 4035 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11951 "MachineIndependent/glslang_tab.cpp" break; case 622: /* case_label: CASE expression COLON */ #line 4041 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) parseContext.error((yyvsp[-2].lex).loc, "cannot be nested inside control flow", "case", ""); else { parseContext.constantValueCheck((yyvsp[-1].interm.intermTypedNode), "case"); parseContext.integerCheck((yyvsp[-1].interm.intermTypedNode), "case"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } #line 11968 "MachineIndependent/glslang_tab.cpp" break; case 623: /* case_label: DEFAULT COLON */ #line 4053 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) parseContext.error((yyvsp[-1].lex).loc, "cannot be nested inside control flow", "default", ""); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } #line 11982 "MachineIndependent/glslang_tab.cpp" break; case 624: /* iteration_statement: iteration_statement_nonattributed */ #line 4065 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 11990 "MachineIndependent/glslang_tab.cpp" break; case 625: /* iteration_statement: attribute iteration_statement_nonattributed */ #line 4068 "MachineIndependent/glslang.y" { const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 12001 "MachineIndependent/glslang_tab.cpp" break; case 626: /* $@10: %empty */ #line 4076 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } #line 12014 "MachineIndependent/glslang_tab.cpp" break; case 627: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ #line 4084 "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); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } #line 12026 "MachineIndependent/glslang_tab.cpp" break; case 628: /* $@11: %empty */ #line 4091 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } #line 12037 "MachineIndependent/glslang_tab.cpp" break; case 629: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ #line 4097 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } #line 12054 "MachineIndependent/glslang_tab.cpp" break; case 630: /* $@12: %empty */ #line 4109 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } #line 12065 "MachineIndependent/glslang_tab.cpp" break; case 631: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ #line 4115 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast((yyvsp[-2].interm.nodePair).node1), reinterpret_cast((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc); if (! parseContext.limits.nonInductiveForLoops) parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc); (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } #line 12082 "MachineIndependent/glslang_tab.cpp" break; case 632: /* for_init_statement: expression_statement */ #line 4130 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 12090 "MachineIndependent/glslang_tab.cpp" break; case 633: /* for_init_statement: declaration_statement */ #line 4133 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 12098 "MachineIndependent/glslang_tab.cpp" break; case 634: /* conditionopt: condition */ #line 4139 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 12106 "MachineIndependent/glslang_tab.cpp" break; case 635: /* conditionopt: %empty */ #line 4142 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } #line 12114 "MachineIndependent/glslang_tab.cpp" break; case 636: /* for_rest_statement: conditionopt SEMICOLON */ #line 4148 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } #line 12123 "MachineIndependent/glslang_tab.cpp" break; case 637: /* for_rest_statement: conditionopt SEMICOLON expression */ #line 4152 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } #line 12132 "MachineIndependent/glslang_tab.cpp" break; case 638: /* jump_statement: CONTINUE SEMICOLON */ #line 4159 "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 12142 "MachineIndependent/glslang_tab.cpp" break; case 639: /* jump_statement: BREAK SEMICOLON */ #line 4164 "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 12152 "MachineIndependent/glslang_tab.cpp" break; case 640: /* jump_statement: RETURN SEMICOLON */ #line 4169 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", ""); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } #line 12164 "MachineIndependent/glslang_tab.cpp" break; case 641: /* jump_statement: RETURN expression SEMICOLON */ #line 4176 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } #line 12172 "MachineIndependent/glslang_tab.cpp" break; case 642: /* jump_statement: DISCARD SEMICOLON */ #line 4179 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } #line 12181 "MachineIndependent/glslang_tab.cpp" break; case 643: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ #line 4183 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } #line 12190 "MachineIndependent/glslang_tab.cpp" break; case 644: /* jump_statement: TERMINATE_RAY SEMICOLON */ #line 4187 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } #line 12199 "MachineIndependent/glslang_tab.cpp" break; case 645: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ #line 4191 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } #line 12208 "MachineIndependent/glslang_tab.cpp" break; case 646: /* translation_unit: external_declaration */ #line 4200 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } #line 12217 "MachineIndependent/glslang_tab.cpp" break; case 647: /* translation_unit: translation_unit external_declaration */ #line 4204 "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 12228 "MachineIndependent/glslang_tab.cpp" break; case 648: /* external_declaration: function_definition */ #line 4213 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 12236 "MachineIndependent/glslang_tab.cpp" break; case 649: /* external_declaration: declaration */ #line 4216 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 12244 "MachineIndependent/glslang_tab.cpp" break; case 650: /* external_declaration: SEMICOLON */ #line 4219 "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 12254 "MachineIndependent/glslang_tab.cpp" break; case 651: /* $@13: %empty */ #line 4227 "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); // For ES 100 only, according to ES shading language 100 spec: A function // body has a scope nested inside the function's definition. if (parseContext.profile == EEsProfile && parseContext.version == 100) { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } } #line 12271 "MachineIndependent/glslang_tab.cpp" break; case 652: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ #line 4239 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str()); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode)->getAsAggregate()->setLinkType((yyvsp[-2].interm).function->getLinkType()); parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[-2].interm).function->getType(), (yyvsp[-2].interm).loc); (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[-2].interm).function->getMangledName().c_str()); // store the pragma information for debug and optimize and other vendor specific // information. This information can be queried from the parse tree (yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); // Set currentFunctionType to empty pointer when goes outside of the function parseContext.currentFunctionType = nullptr; // For ES 100 only, according to ES shading language 100 spec: A function // body has a scope nested inside the function's definition. if (parseContext.profile == EEsProfile && parseContext.version == 100) { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } } #line 12303 "MachineIndependent/glslang_tab.cpp" break; case 653: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ #line 4269 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } #line 12311 "MachineIndependent/glslang_tab.cpp" break; case 654: /* attribute_list: single_attribute */ #line 4274 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } #line 12319 "MachineIndependent/glslang_tab.cpp" break; case 655: /* attribute_list: attribute_list COMMA single_attribute */ #line 4277 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } #line 12327 "MachineIndependent/glslang_tab.cpp" break; case 656: /* single_attribute: IDENTIFIER */ #line 4282 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } #line 12335 "MachineIndependent/glslang_tab.cpp" break; case 657: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ #line 4285 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } #line 12343 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_requirements_list: spirv_requirements_parameter */ #line 4290 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } #line 12351 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ #line 4293 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } #line 12359 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ #line 4298 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } #line 12367 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ #line 4301 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } #line 12375 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_extension_list: STRING_LITERAL */ #line 4306 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } #line 12383 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ #line 4309 "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 12391 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_capability_list: INTCONSTANT */ #line 4314 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } #line 12399 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ #line 4317 "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 12407 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ #line 4322 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } #line 12416 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ #line 4326 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } #line 12426 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ #line 4331 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } #line 12435 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ #line 4335 "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 12445 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ #line 4340 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } #line 12454 "MachineIndependent/glslang_tab.cpp" break; case 671: /* 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 4344 "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 12464 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ #line 4351 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } #line 12472 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ #line 4354 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } #line 12480 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_execution_mode_parameter: FLOATCONSTANT */ #line 4359 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } #line 12488 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_execution_mode_parameter: INTCONSTANT */ #line 4362 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } #line 12496 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_execution_mode_parameter: UINTCONSTANT */ #line 4365 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } #line 12504 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_execution_mode_parameter: BOOLCONSTANT */ #line 4368 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } #line 12512 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_execution_mode_parameter: STRING_LITERAL */ #line 4371 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } #line 12520 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_execution_mode_id_parameter_list: constant_expression */ #line 4376 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtString) 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 12534 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ #line 4385 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtString) 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 12548 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ #line 4396 "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 12558 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ #line 4401 "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 12569 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ #line 4409 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } #line 12578 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ #line 4413 "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 12588 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ #line 4418 "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 12597 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ #line 4422 "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 12607 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ #line 4427 "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 12616 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ #line 4431 "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 12626 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ #line 4436 "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 12635 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ #line 4440 "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 12645 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ #line 4447 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } #line 12653 "MachineIndependent/glslang_tab.cpp" break; case 692: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ #line 4450 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } #line 12661 "MachineIndependent/glslang_tab.cpp" break; case 693: /* spirv_decorate_parameter: FLOATCONSTANT */ #line 4455 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } #line 12669 "MachineIndependent/glslang_tab.cpp" break; case 694: /* spirv_decorate_parameter: INTCONSTANT */ #line 4458 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } #line 12677 "MachineIndependent/glslang_tab.cpp" break; case 695: /* spirv_decorate_parameter: UINTCONSTANT */ #line 4461 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } #line 12685 "MachineIndependent/glslang_tab.cpp" break; case 696: /* spirv_decorate_parameter: BOOLCONSTANT */ #line 4464 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } #line 12693 "MachineIndependent/glslang_tab.cpp" break; case 697: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ #line 4469 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } #line 12701 "MachineIndependent/glslang_tab.cpp" break; case 698: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ #line 4472 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } #line 12709 "MachineIndependent/glslang_tab.cpp" break; case 699: /* spirv_decorate_id_parameter: variable_identifier */ #line 4477 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } #line 12720 "MachineIndependent/glslang_tab.cpp" break; case 700: /* spirv_decorate_id_parameter: FLOATCONSTANT */ #line 4483 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } #line 12728 "MachineIndependent/glslang_tab.cpp" break; case 701: /* spirv_decorate_id_parameter: INTCONSTANT */ #line 4486 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } #line 12736 "MachineIndependent/glslang_tab.cpp" break; case 702: /* spirv_decorate_id_parameter: UINTCONSTANT */ #line 4489 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } #line 12744 "MachineIndependent/glslang_tab.cpp" break; case 703: /* spirv_decorate_id_parameter: BOOLCONSTANT */ #line 4492 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } #line 12752 "MachineIndependent/glslang_tab.cpp" break; case 704: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ #line 4497 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } #line 12761 "MachineIndependent/glslang_tab.cpp" break; case 705: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ #line 4501 "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 12769 "MachineIndependent/glslang_tab.cpp" break; case 706: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ #line 4506 "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 12778 "MachineIndependent/glslang_tab.cpp" break; case 707: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ #line 4510 "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 12788 "MachineIndependent/glslang_tab.cpp" break; case 708: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ #line 4515 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } #line 12797 "MachineIndependent/glslang_tab.cpp" break; case 709: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ #line 4519 "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 12807 "MachineIndependent/glslang_tab.cpp" break; case 710: /* spirv_type_parameter_list: spirv_type_parameter */ #line 4526 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } #line 12815 "MachineIndependent/glslang_tab.cpp" break; case 711: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ #line 4529 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } #line 12823 "MachineIndependent/glslang_tab.cpp" break; case 712: /* spirv_type_parameter: constant_expression */ #line 4534 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } #line 12831 "MachineIndependent/glslang_tab.cpp" break; case 713: /* spirv_type_parameter: type_specifier_nonarray */ #line 4537 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } #line 12839 "MachineIndependent/glslang_tab.cpp" break; case 714: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ #line 4542 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } #line 12847 "MachineIndependent/glslang_tab.cpp" break; case 715: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ #line 4545 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } #line 12856 "MachineIndependent/glslang_tab.cpp" break; case 716: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ #line 4551 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } #line 12864 "MachineIndependent/glslang_tab.cpp" break; case 717: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ #line 4554 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } #line 12872 "MachineIndependent/glslang_tab.cpp" break; case 718: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ #line 4559 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } #line 12880 "MachineIndependent/glslang_tab.cpp" break; case 719: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ #line 4562 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } #line 12888 "MachineIndependent/glslang_tab.cpp" break; #line 12892 "MachineIndependent/glslang_tab.cpp" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ { const int yylhs = yyr1[yyn] - YYNTOKENS; const int yyi = yypgoto[yylhs] + *yyssp; yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ? yytable[yyi] : yydefgoto[yylhs]); } goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; { yypcontext_t yyctx = {yyssp, yytoken}; char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == -1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (yymsg) { yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); yymsgp = yymsg; } else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = YYENOMEM; } } yyerror (pParseContext, yymsgp); if (yysyntax_error_status == YYENOMEM) YYNOMEM; } } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, pParseContext); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYSYMBOL_YYerror; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", YY_ACCESSING_SYMBOL (yystate), yyvsp, pParseContext); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturnlab; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturnlab; /*-----------------------------------------------------------. | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | `-----------------------------------------------------------*/ yyexhaustedlab: yyerror (pParseContext, YY_("memory exhausted")); yyresult = 2; goto yyreturnlab; /*----------------------------------------------------------. | yyreturnlab -- parsing is finished, clean up and return. | `----------------------------------------------------------*/ yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, pParseContext); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, pParseContext); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); return yyresult; } #line 4566 "MachineIndependent/glslang.y" glslang-16.0.0/glslang/MachineIndependent/glslang_tab.cpp.h000066400000000000000000000714731506534232700236300ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. 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. 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. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* 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. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ #ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED # define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif #if YYDEBUG extern int yydebug; #endif /* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { YYEMPTY = -2, YYEOF = 0, /* "end of file" */ YYerror = 256, /* error */ YYUNDEF = 257, /* "invalid token" */ CONST = 258, /* CONST */ BOOL = 259, /* BOOL */ INT = 260, /* INT */ UINT = 261, /* UINT */ FLOAT = 262, /* FLOAT */ BVEC2 = 263, /* BVEC2 */ BVEC3 = 264, /* BVEC3 */ BVEC4 = 265, /* BVEC4 */ IVEC2 = 266, /* IVEC2 */ IVEC3 = 267, /* IVEC3 */ IVEC4 = 268, /* IVEC4 */ UVEC2 = 269, /* UVEC2 */ UVEC3 = 270, /* UVEC3 */ UVEC4 = 271, /* UVEC4 */ VEC2 = 272, /* VEC2 */ VEC3 = 273, /* VEC3 */ VEC4 = 274, /* VEC4 */ MAT2 = 275, /* MAT2 */ MAT3 = 276, /* MAT3 */ MAT4 = 277, /* MAT4 */ MAT2X2 = 278, /* MAT2X2 */ MAT2X3 = 279, /* MAT2X3 */ MAT2X4 = 280, /* MAT2X4 */ MAT3X2 = 281, /* MAT3X2 */ MAT3X3 = 282, /* MAT3X3 */ MAT3X4 = 283, /* MAT3X4 */ MAT4X2 = 284, /* MAT4X2 */ MAT4X3 = 285, /* MAT4X3 */ MAT4X4 = 286, /* MAT4X4 */ SAMPLER2D = 287, /* SAMPLER2D */ SAMPLER3D = 288, /* SAMPLER3D */ SAMPLERCUBE = 289, /* SAMPLERCUBE */ SAMPLER2DSHADOW = 290, /* SAMPLER2DSHADOW */ SAMPLERCUBESHADOW = 291, /* SAMPLERCUBESHADOW */ SAMPLER2DARRAY = 292, /* SAMPLER2DARRAY */ SAMPLER2DARRAYSHADOW = 293, /* SAMPLER2DARRAYSHADOW */ ISAMPLER2D = 294, /* ISAMPLER2D */ ISAMPLER3D = 295, /* ISAMPLER3D */ ISAMPLERCUBE = 296, /* ISAMPLERCUBE */ ISAMPLER2DARRAY = 297, /* ISAMPLER2DARRAY */ USAMPLER2D = 298, /* USAMPLER2D */ USAMPLER3D = 299, /* USAMPLER3D */ USAMPLERCUBE = 300, /* USAMPLERCUBE */ USAMPLER2DARRAY = 301, /* USAMPLER2DARRAY */ SAMPLER = 302, /* SAMPLER */ SAMPLERSHADOW = 303, /* SAMPLERSHADOW */ TEXTURE2D = 304, /* TEXTURE2D */ TEXTURE3D = 305, /* TEXTURE3D */ TEXTURECUBE = 306, /* TEXTURECUBE */ TEXTURE2DARRAY = 307, /* TEXTURE2DARRAY */ ITEXTURE2D = 308, /* ITEXTURE2D */ ITEXTURE3D = 309, /* ITEXTURE3D */ ITEXTURECUBE = 310, /* ITEXTURECUBE */ ITEXTURE2DARRAY = 311, /* ITEXTURE2DARRAY */ UTEXTURE2D = 312, /* UTEXTURE2D */ UTEXTURE3D = 313, /* UTEXTURE3D */ UTEXTURECUBE = 314, /* UTEXTURECUBE */ UTEXTURE2DARRAY = 315, /* UTEXTURE2DARRAY */ ATTRIBUTE = 316, /* ATTRIBUTE */ VARYING = 317, /* VARYING */ FLOATE5M2_T = 318, /* FLOATE5M2_T */ FLOATE4M3_T = 319, /* FLOATE4M3_T */ BFLOAT16_T = 320, /* BFLOAT16_T */ FLOAT16_T = 321, /* FLOAT16_T */ FLOAT32_T = 322, /* FLOAT32_T */ DOUBLE = 323, /* DOUBLE */ FLOAT64_T = 324, /* FLOAT64_T */ INT64_T = 325, /* INT64_T */ UINT64_T = 326, /* UINT64_T */ INT32_T = 327, /* INT32_T */ UINT32_T = 328, /* UINT32_T */ INT16_T = 329, /* INT16_T */ UINT16_T = 330, /* UINT16_T */ INT8_T = 331, /* INT8_T */ UINT8_T = 332, /* UINT8_T */ I64VEC2 = 333, /* I64VEC2 */ I64VEC3 = 334, /* I64VEC3 */ I64VEC4 = 335, /* I64VEC4 */ U64VEC2 = 336, /* U64VEC2 */ U64VEC3 = 337, /* U64VEC3 */ U64VEC4 = 338, /* U64VEC4 */ I32VEC2 = 339, /* I32VEC2 */ I32VEC3 = 340, /* I32VEC3 */ I32VEC4 = 341, /* I32VEC4 */ U32VEC2 = 342, /* U32VEC2 */ U32VEC3 = 343, /* U32VEC3 */ U32VEC4 = 344, /* U32VEC4 */ I16VEC2 = 345, /* I16VEC2 */ I16VEC3 = 346, /* I16VEC3 */ I16VEC4 = 347, /* I16VEC4 */ U16VEC2 = 348, /* U16VEC2 */ U16VEC3 = 349, /* U16VEC3 */ U16VEC4 = 350, /* U16VEC4 */ I8VEC2 = 351, /* I8VEC2 */ I8VEC3 = 352, /* I8VEC3 */ I8VEC4 = 353, /* I8VEC4 */ U8VEC2 = 354, /* U8VEC2 */ U8VEC3 = 355, /* U8VEC3 */ U8VEC4 = 356, /* U8VEC4 */ DVEC2 = 357, /* DVEC2 */ DVEC3 = 358, /* DVEC3 */ DVEC4 = 359, /* DVEC4 */ DMAT2 = 360, /* DMAT2 */ DMAT3 = 361, /* DMAT3 */ DMAT4 = 362, /* DMAT4 */ BF16VEC2 = 363, /* BF16VEC2 */ BF16VEC3 = 364, /* BF16VEC3 */ BF16VEC4 = 365, /* BF16VEC4 */ FE5M2VEC2 = 366, /* FE5M2VEC2 */ FE5M2VEC3 = 367, /* FE5M2VEC3 */ FE5M2VEC4 = 368, /* FE5M2VEC4 */ FE4M3VEC2 = 369, /* FE4M3VEC2 */ FE4M3VEC3 = 370, /* FE4M3VEC3 */ FE4M3VEC4 = 371, /* FE4M3VEC4 */ F16VEC2 = 372, /* F16VEC2 */ F16VEC3 = 373, /* F16VEC3 */ F16VEC4 = 374, /* F16VEC4 */ F16MAT2 = 375, /* F16MAT2 */ F16MAT3 = 376, /* F16MAT3 */ F16MAT4 = 377, /* F16MAT4 */ F32VEC2 = 378, /* F32VEC2 */ F32VEC3 = 379, /* F32VEC3 */ F32VEC4 = 380, /* F32VEC4 */ F32MAT2 = 381, /* F32MAT2 */ F32MAT3 = 382, /* F32MAT3 */ F32MAT4 = 383, /* F32MAT4 */ F64VEC2 = 384, /* F64VEC2 */ F64VEC3 = 385, /* F64VEC3 */ F64VEC4 = 386, /* F64VEC4 */ F64MAT2 = 387, /* F64MAT2 */ F64MAT3 = 388, /* F64MAT3 */ F64MAT4 = 389, /* F64MAT4 */ DMAT2X2 = 390, /* DMAT2X2 */ DMAT2X3 = 391, /* DMAT2X3 */ DMAT2X4 = 392, /* DMAT2X4 */ DMAT3X2 = 393, /* DMAT3X2 */ DMAT3X3 = 394, /* DMAT3X3 */ DMAT3X4 = 395, /* DMAT3X4 */ DMAT4X2 = 396, /* DMAT4X2 */ DMAT4X3 = 397, /* DMAT4X3 */ DMAT4X4 = 398, /* DMAT4X4 */ F16MAT2X2 = 399, /* F16MAT2X2 */ F16MAT2X3 = 400, /* F16MAT2X3 */ F16MAT2X4 = 401, /* F16MAT2X4 */ F16MAT3X2 = 402, /* F16MAT3X2 */ F16MAT3X3 = 403, /* F16MAT3X3 */ F16MAT3X4 = 404, /* F16MAT3X4 */ F16MAT4X2 = 405, /* F16MAT4X2 */ F16MAT4X3 = 406, /* F16MAT4X3 */ F16MAT4X4 = 407, /* F16MAT4X4 */ F32MAT2X2 = 408, /* F32MAT2X2 */ F32MAT2X3 = 409, /* F32MAT2X3 */ F32MAT2X4 = 410, /* F32MAT2X4 */ F32MAT3X2 = 411, /* F32MAT3X2 */ F32MAT3X3 = 412, /* F32MAT3X3 */ F32MAT3X4 = 413, /* F32MAT3X4 */ F32MAT4X2 = 414, /* F32MAT4X2 */ F32MAT4X3 = 415, /* F32MAT4X3 */ F32MAT4X4 = 416, /* F32MAT4X4 */ F64MAT2X2 = 417, /* F64MAT2X2 */ F64MAT2X3 = 418, /* F64MAT2X3 */ F64MAT2X4 = 419, /* F64MAT2X4 */ F64MAT3X2 = 420, /* F64MAT3X2 */ F64MAT3X3 = 421, /* F64MAT3X3 */ F64MAT3X4 = 422, /* F64MAT3X4 */ F64MAT4X2 = 423, /* F64MAT4X2 */ F64MAT4X3 = 424, /* F64MAT4X3 */ F64MAT4X4 = 425, /* F64MAT4X4 */ ATOMIC_UINT = 426, /* ATOMIC_UINT */ ACCSTRUCTNV = 427, /* ACCSTRUCTNV */ ACCSTRUCTEXT = 428, /* ACCSTRUCTEXT */ RAYQUERYEXT = 429, /* RAYQUERYEXT */ FCOOPMATNV = 430, /* FCOOPMATNV */ ICOOPMATNV = 431, /* ICOOPMATNV */ UCOOPMATNV = 432, /* UCOOPMATNV */ COOPMAT = 433, /* COOPMAT */ COOPVECNV = 434, /* COOPVECNV */ HITOBJECTNV = 435, /* HITOBJECTNV */ HITOBJECTATTRNV = 436, /* HITOBJECTATTRNV */ TENSORLAYOUTNV = 437, /* TENSORLAYOUTNV */ TENSORVIEWNV = 438, /* TENSORVIEWNV */ TENSORARM = 439, /* TENSORARM */ SAMPLERCUBEARRAY = 440, /* SAMPLERCUBEARRAY */ SAMPLERCUBEARRAYSHADOW = 441, /* SAMPLERCUBEARRAYSHADOW */ ISAMPLERCUBEARRAY = 442, /* ISAMPLERCUBEARRAY */ USAMPLERCUBEARRAY = 443, /* USAMPLERCUBEARRAY */ SAMPLER1D = 444, /* SAMPLER1D */ SAMPLER1DARRAY = 445, /* SAMPLER1DARRAY */ SAMPLER1DARRAYSHADOW = 446, /* SAMPLER1DARRAYSHADOW */ ISAMPLER1D = 447, /* ISAMPLER1D */ SAMPLER1DSHADOW = 448, /* SAMPLER1DSHADOW */ SAMPLER2DRECT = 449, /* SAMPLER2DRECT */ SAMPLER2DRECTSHADOW = 450, /* SAMPLER2DRECTSHADOW */ ISAMPLER2DRECT = 451, /* ISAMPLER2DRECT */ USAMPLER2DRECT = 452, /* USAMPLER2DRECT */ SAMPLERBUFFER = 453, /* SAMPLERBUFFER */ ISAMPLERBUFFER = 454, /* ISAMPLERBUFFER */ USAMPLERBUFFER = 455, /* USAMPLERBUFFER */ SAMPLER2DMS = 456, /* SAMPLER2DMS */ ISAMPLER2DMS = 457, /* ISAMPLER2DMS */ USAMPLER2DMS = 458, /* USAMPLER2DMS */ SAMPLER2DMSARRAY = 459, /* SAMPLER2DMSARRAY */ ISAMPLER2DMSARRAY = 460, /* ISAMPLER2DMSARRAY */ USAMPLER2DMSARRAY = 461, /* USAMPLER2DMSARRAY */ SAMPLEREXTERNALOES = 462, /* SAMPLEREXTERNALOES */ SAMPLEREXTERNAL2DY2YEXT = 463, /* SAMPLEREXTERNAL2DY2YEXT */ ISAMPLER1DARRAY = 464, /* ISAMPLER1DARRAY */ USAMPLER1D = 465, /* USAMPLER1D */ USAMPLER1DARRAY = 466, /* USAMPLER1DARRAY */ F16SAMPLER1D = 467, /* F16SAMPLER1D */ F16SAMPLER2D = 468, /* F16SAMPLER2D */ F16SAMPLER3D = 469, /* F16SAMPLER3D */ F16SAMPLER2DRECT = 470, /* F16SAMPLER2DRECT */ F16SAMPLERCUBE = 471, /* F16SAMPLERCUBE */ F16SAMPLER1DARRAY = 472, /* F16SAMPLER1DARRAY */ F16SAMPLER2DARRAY = 473, /* F16SAMPLER2DARRAY */ F16SAMPLERCUBEARRAY = 474, /* F16SAMPLERCUBEARRAY */ F16SAMPLERBUFFER = 475, /* F16SAMPLERBUFFER */ F16SAMPLER2DMS = 476, /* F16SAMPLER2DMS */ F16SAMPLER2DMSARRAY = 477, /* F16SAMPLER2DMSARRAY */ F16SAMPLER1DSHADOW = 478, /* F16SAMPLER1DSHADOW */ F16SAMPLER2DSHADOW = 479, /* F16SAMPLER2DSHADOW */ F16SAMPLER1DARRAYSHADOW = 480, /* F16SAMPLER1DARRAYSHADOW */ F16SAMPLER2DARRAYSHADOW = 481, /* F16SAMPLER2DARRAYSHADOW */ F16SAMPLER2DRECTSHADOW = 482, /* F16SAMPLER2DRECTSHADOW */ F16SAMPLERCUBESHADOW = 483, /* F16SAMPLERCUBESHADOW */ F16SAMPLERCUBEARRAYSHADOW = 484, /* F16SAMPLERCUBEARRAYSHADOW */ IMAGE1D = 485, /* IMAGE1D */ IIMAGE1D = 486, /* IIMAGE1D */ UIMAGE1D = 487, /* UIMAGE1D */ IMAGE2D = 488, /* IMAGE2D */ IIMAGE2D = 489, /* IIMAGE2D */ UIMAGE2D = 490, /* UIMAGE2D */ IMAGE3D = 491, /* IMAGE3D */ IIMAGE3D = 492, /* IIMAGE3D */ UIMAGE3D = 493, /* UIMAGE3D */ IMAGE2DRECT = 494, /* IMAGE2DRECT */ IIMAGE2DRECT = 495, /* IIMAGE2DRECT */ UIMAGE2DRECT = 496, /* UIMAGE2DRECT */ IMAGECUBE = 497, /* IMAGECUBE */ IIMAGECUBE = 498, /* IIMAGECUBE */ UIMAGECUBE = 499, /* UIMAGECUBE */ IMAGEBUFFER = 500, /* IMAGEBUFFER */ IIMAGEBUFFER = 501, /* IIMAGEBUFFER */ UIMAGEBUFFER = 502, /* UIMAGEBUFFER */ IMAGE1DARRAY = 503, /* IMAGE1DARRAY */ IIMAGE1DARRAY = 504, /* IIMAGE1DARRAY */ UIMAGE1DARRAY = 505, /* UIMAGE1DARRAY */ IMAGE2DARRAY = 506, /* IMAGE2DARRAY */ IIMAGE2DARRAY = 507, /* IIMAGE2DARRAY */ UIMAGE2DARRAY = 508, /* UIMAGE2DARRAY */ IMAGECUBEARRAY = 509, /* IMAGECUBEARRAY */ IIMAGECUBEARRAY = 510, /* IIMAGECUBEARRAY */ UIMAGECUBEARRAY = 511, /* UIMAGECUBEARRAY */ IMAGE2DMS = 512, /* IMAGE2DMS */ IIMAGE2DMS = 513, /* IIMAGE2DMS */ UIMAGE2DMS = 514, /* UIMAGE2DMS */ IMAGE2DMSARRAY = 515, /* IMAGE2DMSARRAY */ IIMAGE2DMSARRAY = 516, /* IIMAGE2DMSARRAY */ UIMAGE2DMSARRAY = 517, /* UIMAGE2DMSARRAY */ F16IMAGE1D = 518, /* F16IMAGE1D */ F16IMAGE2D = 519, /* F16IMAGE2D */ F16IMAGE3D = 520, /* F16IMAGE3D */ F16IMAGE2DRECT = 521, /* F16IMAGE2DRECT */ F16IMAGECUBE = 522, /* F16IMAGECUBE */ F16IMAGE1DARRAY = 523, /* F16IMAGE1DARRAY */ F16IMAGE2DARRAY = 524, /* F16IMAGE2DARRAY */ F16IMAGECUBEARRAY = 525, /* F16IMAGECUBEARRAY */ F16IMAGEBUFFER = 526, /* F16IMAGEBUFFER */ F16IMAGE2DMS = 527, /* F16IMAGE2DMS */ F16IMAGE2DMSARRAY = 528, /* F16IMAGE2DMSARRAY */ I64IMAGE1D = 529, /* I64IMAGE1D */ U64IMAGE1D = 530, /* U64IMAGE1D */ I64IMAGE2D = 531, /* I64IMAGE2D */ U64IMAGE2D = 532, /* U64IMAGE2D */ I64IMAGE3D = 533, /* I64IMAGE3D */ U64IMAGE3D = 534, /* U64IMAGE3D */ I64IMAGE2DRECT = 535, /* I64IMAGE2DRECT */ U64IMAGE2DRECT = 536, /* U64IMAGE2DRECT */ I64IMAGECUBE = 537, /* I64IMAGECUBE */ U64IMAGECUBE = 538, /* U64IMAGECUBE */ I64IMAGEBUFFER = 539, /* I64IMAGEBUFFER */ U64IMAGEBUFFER = 540, /* U64IMAGEBUFFER */ I64IMAGE1DARRAY = 541, /* I64IMAGE1DARRAY */ U64IMAGE1DARRAY = 542, /* U64IMAGE1DARRAY */ I64IMAGE2DARRAY = 543, /* I64IMAGE2DARRAY */ U64IMAGE2DARRAY = 544, /* U64IMAGE2DARRAY */ I64IMAGECUBEARRAY = 545, /* I64IMAGECUBEARRAY */ U64IMAGECUBEARRAY = 546, /* U64IMAGECUBEARRAY */ I64IMAGE2DMS = 547, /* I64IMAGE2DMS */ U64IMAGE2DMS = 548, /* U64IMAGE2DMS */ I64IMAGE2DMSARRAY = 549, /* I64IMAGE2DMSARRAY */ U64IMAGE2DMSARRAY = 550, /* U64IMAGE2DMSARRAY */ TEXTURECUBEARRAY = 551, /* TEXTURECUBEARRAY */ ITEXTURECUBEARRAY = 552, /* ITEXTURECUBEARRAY */ UTEXTURECUBEARRAY = 553, /* UTEXTURECUBEARRAY */ TEXTURE1D = 554, /* TEXTURE1D */ ITEXTURE1D = 555, /* ITEXTURE1D */ UTEXTURE1D = 556, /* UTEXTURE1D */ TEXTURE1DARRAY = 557, /* TEXTURE1DARRAY */ ITEXTURE1DARRAY = 558, /* ITEXTURE1DARRAY */ UTEXTURE1DARRAY = 559, /* UTEXTURE1DARRAY */ TEXTURE2DRECT = 560, /* TEXTURE2DRECT */ ITEXTURE2DRECT = 561, /* ITEXTURE2DRECT */ UTEXTURE2DRECT = 562, /* UTEXTURE2DRECT */ TEXTUREBUFFER = 563, /* TEXTUREBUFFER */ ITEXTUREBUFFER = 564, /* ITEXTUREBUFFER */ UTEXTUREBUFFER = 565, /* UTEXTUREBUFFER */ TEXTURE2DMS = 566, /* TEXTURE2DMS */ ITEXTURE2DMS = 567, /* ITEXTURE2DMS */ UTEXTURE2DMS = 568, /* UTEXTURE2DMS */ TEXTURE2DMSARRAY = 569, /* TEXTURE2DMSARRAY */ ITEXTURE2DMSARRAY = 570, /* ITEXTURE2DMSARRAY */ UTEXTURE2DMSARRAY = 571, /* UTEXTURE2DMSARRAY */ F16TEXTURE1D = 572, /* F16TEXTURE1D */ F16TEXTURE2D = 573, /* F16TEXTURE2D */ F16TEXTURE3D = 574, /* F16TEXTURE3D */ F16TEXTURE2DRECT = 575, /* F16TEXTURE2DRECT */ F16TEXTURECUBE = 576, /* F16TEXTURECUBE */ F16TEXTURE1DARRAY = 577, /* F16TEXTURE1DARRAY */ F16TEXTURE2DARRAY = 578, /* F16TEXTURE2DARRAY */ F16TEXTURECUBEARRAY = 579, /* F16TEXTURECUBEARRAY */ F16TEXTUREBUFFER = 580, /* F16TEXTUREBUFFER */ F16TEXTURE2DMS = 581, /* F16TEXTURE2DMS */ F16TEXTURE2DMSARRAY = 582, /* F16TEXTURE2DMSARRAY */ SUBPASSINPUT = 583, /* SUBPASSINPUT */ SUBPASSINPUTMS = 584, /* SUBPASSINPUTMS */ ISUBPASSINPUT = 585, /* ISUBPASSINPUT */ ISUBPASSINPUTMS = 586, /* ISUBPASSINPUTMS */ USUBPASSINPUT = 587, /* USUBPASSINPUT */ USUBPASSINPUTMS = 588, /* USUBPASSINPUTMS */ F16SUBPASSINPUT = 589, /* F16SUBPASSINPUT */ F16SUBPASSINPUTMS = 590, /* F16SUBPASSINPUTMS */ SPIRV_INSTRUCTION = 591, /* SPIRV_INSTRUCTION */ SPIRV_EXECUTION_MODE = 592, /* SPIRV_EXECUTION_MODE */ SPIRV_EXECUTION_MODE_ID = 593, /* SPIRV_EXECUTION_MODE_ID */ SPIRV_DECORATE = 594, /* SPIRV_DECORATE */ SPIRV_DECORATE_ID = 595, /* SPIRV_DECORATE_ID */ SPIRV_DECORATE_STRING = 596, /* SPIRV_DECORATE_STRING */ SPIRV_TYPE = 597, /* SPIRV_TYPE */ SPIRV_STORAGE_CLASS = 598, /* SPIRV_STORAGE_CLASS */ SPIRV_BY_REFERENCE = 599, /* SPIRV_BY_REFERENCE */ SPIRV_LITERAL = 600, /* SPIRV_LITERAL */ ATTACHMENTEXT = 601, /* ATTACHMENTEXT */ IATTACHMENTEXT = 602, /* IATTACHMENTEXT */ UATTACHMENTEXT = 603, /* UATTACHMENTEXT */ LEFT_OP = 604, /* LEFT_OP */ RIGHT_OP = 605, /* RIGHT_OP */ INC_OP = 606, /* INC_OP */ DEC_OP = 607, /* DEC_OP */ LE_OP = 608, /* LE_OP */ GE_OP = 609, /* GE_OP */ EQ_OP = 610, /* EQ_OP */ NE_OP = 611, /* NE_OP */ AND_OP = 612, /* AND_OP */ OR_OP = 613, /* OR_OP */ XOR_OP = 614, /* XOR_OP */ MUL_ASSIGN = 615, /* MUL_ASSIGN */ DIV_ASSIGN = 616, /* DIV_ASSIGN */ ADD_ASSIGN = 617, /* ADD_ASSIGN */ MOD_ASSIGN = 618, /* MOD_ASSIGN */ LEFT_ASSIGN = 619, /* LEFT_ASSIGN */ RIGHT_ASSIGN = 620, /* RIGHT_ASSIGN */ AND_ASSIGN = 621, /* AND_ASSIGN */ XOR_ASSIGN = 622, /* XOR_ASSIGN */ OR_ASSIGN = 623, /* OR_ASSIGN */ SUB_ASSIGN = 624, /* SUB_ASSIGN */ STRING_LITERAL = 625, /* STRING_LITERAL */ LEFT_PAREN = 626, /* LEFT_PAREN */ RIGHT_PAREN = 627, /* RIGHT_PAREN */ LEFT_BRACKET = 628, /* LEFT_BRACKET */ RIGHT_BRACKET = 629, /* RIGHT_BRACKET */ LEFT_BRACE = 630, /* LEFT_BRACE */ RIGHT_BRACE = 631, /* RIGHT_BRACE */ DOT = 632, /* DOT */ COMMA = 633, /* COMMA */ COLON = 634, /* COLON */ EQUAL = 635, /* EQUAL */ SEMICOLON = 636, /* SEMICOLON */ BANG = 637, /* BANG */ DASH = 638, /* DASH */ TILDE = 639, /* TILDE */ PLUS = 640, /* PLUS */ STAR = 641, /* STAR */ SLASH = 642, /* SLASH */ PERCENT = 643, /* PERCENT */ LEFT_ANGLE = 644, /* LEFT_ANGLE */ RIGHT_ANGLE = 645, /* RIGHT_ANGLE */ VERTICAL_BAR = 646, /* VERTICAL_BAR */ CARET = 647, /* CARET */ AMPERSAND = 648, /* AMPERSAND */ QUESTION = 649, /* QUESTION */ INVARIANT = 650, /* INVARIANT */ HIGH_PRECISION = 651, /* HIGH_PRECISION */ MEDIUM_PRECISION = 652, /* MEDIUM_PRECISION */ LOW_PRECISION = 653, /* LOW_PRECISION */ PRECISION = 654, /* PRECISION */ PACKED = 655, /* PACKED */ RESOURCE = 656, /* RESOURCE */ SUPERP = 657, /* SUPERP */ FLOATCONSTANT = 658, /* FLOATCONSTANT */ INTCONSTANT = 659, /* INTCONSTANT */ UINTCONSTANT = 660, /* UINTCONSTANT */ BOOLCONSTANT = 661, /* BOOLCONSTANT */ IDENTIFIER = 662, /* IDENTIFIER */ TYPE_NAME = 663, /* TYPE_NAME */ CENTROID = 664, /* CENTROID */ IN = 665, /* IN */ OUT = 666, /* OUT */ INOUT = 667, /* INOUT */ STRUCT = 668, /* STRUCT */ VOID = 669, /* VOID */ WHILE = 670, /* WHILE */ BREAK = 671, /* BREAK */ CONTINUE = 672, /* CONTINUE */ DO = 673, /* DO */ ELSE = 674, /* ELSE */ FOR = 675, /* FOR */ IF = 676, /* IF */ DISCARD = 677, /* DISCARD */ RETURN = 678, /* RETURN */ SWITCH = 679, /* SWITCH */ CASE = 680, /* CASE */ DEFAULT = 681, /* DEFAULT */ TERMINATE_INVOCATION = 682, /* TERMINATE_INVOCATION */ TERMINATE_RAY = 683, /* TERMINATE_RAY */ IGNORE_INTERSECTION = 684, /* IGNORE_INTERSECTION */ UNIFORM = 685, /* UNIFORM */ SHARED = 686, /* SHARED */ BUFFER = 687, /* BUFFER */ TILEIMAGEEXT = 688, /* TILEIMAGEEXT */ FLAT = 689, /* FLAT */ SMOOTH = 690, /* SMOOTH */ LAYOUT = 691, /* LAYOUT */ DOUBLECONSTANT = 692, /* DOUBLECONSTANT */ INT16CONSTANT = 693, /* INT16CONSTANT */ UINT16CONSTANT = 694, /* UINT16CONSTANT */ FLOAT16CONSTANT = 695, /* FLOAT16CONSTANT */ INT32CONSTANT = 696, /* INT32CONSTANT */ UINT32CONSTANT = 697, /* UINT32CONSTANT */ INT64CONSTANT = 698, /* INT64CONSTANT */ UINT64CONSTANT = 699, /* UINT64CONSTANT */ SUBROUTINE = 700, /* SUBROUTINE */ DEMOTE = 701, /* DEMOTE */ FUNCTION = 702, /* FUNCTION */ PAYLOADNV = 703, /* PAYLOADNV */ PAYLOADINNV = 704, /* PAYLOADINNV */ HITATTRNV = 705, /* HITATTRNV */ CALLDATANV = 706, /* CALLDATANV */ CALLDATAINNV = 707, /* CALLDATAINNV */ PAYLOADEXT = 708, /* PAYLOADEXT */ PAYLOADINEXT = 709, /* PAYLOADINEXT */ HITATTREXT = 710, /* HITATTREXT */ CALLDATAEXT = 711, /* CALLDATAEXT */ CALLDATAINEXT = 712, /* CALLDATAINEXT */ PATCH = 713, /* PATCH */ SAMPLE = 714, /* SAMPLE */ NONUNIFORM = 715, /* NONUNIFORM */ COHERENT = 716, /* COHERENT */ VOLATILE = 717, /* VOLATILE */ RESTRICT = 718, /* RESTRICT */ READONLY = 719, /* READONLY */ WRITEONLY = 720, /* WRITEONLY */ NONTEMPORAL = 721, /* NONTEMPORAL */ DEVICECOHERENT = 722, /* DEVICECOHERENT */ QUEUEFAMILYCOHERENT = 723, /* QUEUEFAMILYCOHERENT */ WORKGROUPCOHERENT = 724, /* WORKGROUPCOHERENT */ SUBGROUPCOHERENT = 725, /* SUBGROUPCOHERENT */ NONPRIVATE = 726, /* NONPRIVATE */ SHADERCALLCOHERENT = 727, /* SHADERCALLCOHERENT */ NOPERSPECTIVE = 728, /* NOPERSPECTIVE */ EXPLICITINTERPAMD = 729, /* EXPLICITINTERPAMD */ PERVERTEXEXT = 730, /* PERVERTEXEXT */ PERVERTEXNV = 731, /* PERVERTEXNV */ PERPRIMITIVENV = 732, /* PERPRIMITIVENV */ PERVIEWNV = 733, /* PERVIEWNV */ PERTASKNV = 734, /* PERTASKNV */ PERPRIMITIVEEXT = 735, /* PERPRIMITIVEEXT */ TASKPAYLOADWORKGROUPEXT = 736, /* TASKPAYLOADWORKGROUPEXT */ PRECISE = 737 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 72 "MachineIndependent/glslang.y" struct { glslang::TSourceLoc loc; union { glslang::TString *string; int i; unsigned int u; long long i64; unsigned long long u64; bool b; double d; }; glslang::TSymbol* symbol; } lex; struct { glslang::TSourceLoc loc; glslang::TOperator op; union { TIntermNode* intermNode; glslang::TIntermNodePair nodePair; glslang::TIntermTyped* intermTypedNode; glslang::TAttributes* attributes; glslang::TSpirvRequirement* spirvReq; glslang::TSpirvInstruction* spirvInst; glslang::TSpirvTypeParameters* spirvTypeParams; }; union { glslang::TPublicType type; glslang::TFunction* function; glslang::TParameter param; glslang::TTypeLoc typeLine; glslang::TTypeList* typeList; glslang::TArraySizes* arraySizes; glslang::TIdentifierList* identifierList; }; glslang::TTypeParameters* typeParameters; } interm; #line 585 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif int yyparse (glslang::TParseContext* pParseContext); #endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ glslang-16.0.0/glslang/MachineIndependent/intermOut.cpp000066400000000000000000002616001506534232700231040ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "localintermediate.h" #include "../Include/InfoSink.h" #ifdef _MSC_VER #include #else #include #endif #include namespace glslang { // // Two purposes: // 1. Show an example of how to iterate tree. Functions can // also directly call Traverse() on children themselves to // have finer grained control over the process than shown here. // See the last function for how to get started. // 2. Print out a text based description of the tree. // // // Use this class to carry along data from node to node in // the traversal // class TOutputTraverser : public TIntermTraverser { public: TOutputTraverser(TInfoSink& i) : infoSink(i), extraOutput(NoExtraOutput) { } enum EExtraOutput { NoExtraOutput, BinaryDoubleOutput }; void setDoubleOutput(EExtraOutput extra) { extraOutput = extra; } virtual bool visitBinary(TVisit, TIntermBinary* node); virtual bool visitUnary(TVisit, TIntermUnary* node); virtual bool visitAggregate(TVisit, TIntermAggregate* node); virtual bool visitSelection(TVisit, TIntermSelection* node); virtual void visitConstantUnion(TIntermConstantUnion* node); virtual void visitSymbol(TIntermSymbol* node); virtual bool visitLoop(TVisit, TIntermLoop* node); virtual bool visitBranch(TVisit, TIntermBranch* node); virtual bool visitSwitch(TVisit, TIntermSwitch* node); TInfoSink& infoSink; protected: TOutputTraverser(TOutputTraverser&); TOutputTraverser& operator=(TOutputTraverser&); EExtraOutput extraOutput; }; // // Helper functions for printing, not part of traversing. // static void OutputTreeText(TInfoSink& infoSink, const TIntermNode* node, const int depth) { int i; infoSink.debug << node->getLoc().string << ":"; if (node->getLoc().line) infoSink.debug << node->getLoc().line; else infoSink.debug << "? "; for (i = 0; i < depth; ++i) infoSink.debug << " "; } // // The rest of the file are the traversal functions. The last one // is the one that starts the traversal. // // Return true from interior nodes to have the external traversal // continue on to children. If you process children yourself, // return false. // bool TOutputTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node) { TInfoSink& out = infoSink; OutputTreeText(out, node, depth); switch (node->getOp()) { case EOpAssign: out.debug << "move second child to first child"; break; case EOpAddAssign: out.debug << "add second child into first child"; break; case EOpSubAssign: out.debug << "subtract second child into first child"; break; case EOpMulAssign: out.debug << "multiply second child into first child"; break; case EOpVectorTimesMatrixAssign: out.debug << "matrix mult second child into first child"; break; case EOpVectorTimesScalarAssign: out.debug << "vector scale second child into first child"; break; case EOpMatrixTimesScalarAssign: out.debug << "matrix scale second child into first child"; break; case EOpMatrixTimesMatrixAssign: out.debug << "matrix mult second child into first child"; break; case EOpDivAssign: out.debug << "divide second child into first child"; break; case EOpModAssign: out.debug << "mod second child into first child"; break; case EOpAndAssign: out.debug << "and second child into first child"; break; case EOpInclusiveOrAssign: out.debug << "or second child into first child"; break; case EOpExclusiveOrAssign: out.debug << "exclusive or second child into first child"; break; case EOpLeftShiftAssign: out.debug << "left shift second child into first child"; break; case EOpRightShiftAssign: out.debug << "right shift second child into first child"; break; case EOpIndexDirect: out.debug << "direct index"; break; case EOpIndexIndirect: out.debug << "indirect index"; break; case EOpIndexDirectStruct: { bool reference = node->getLeft()->getType().isReference(); const TTypeList *members = reference ? node->getLeft()->getType().getReferentType()->getStruct() : node->getLeft()->getType().getStruct(); out.debug << (*members)[node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst()].type->getFieldName(); out.debug << ": direct index for structure"; break; } case EOpVectorSwizzle: out.debug << "vector swizzle"; break; case EOpMatrixSwizzle: out.debug << "matrix swizzle"; break; case EOpAdd: out.debug << "add"; break; case EOpSub: out.debug << "subtract"; break; case EOpMul: out.debug << "component-wise multiply"; break; case EOpDiv: out.debug << "divide"; break; case EOpMod: out.debug << "mod"; break; case EOpRightShift: out.debug << "right-shift"; break; case EOpLeftShift: out.debug << "left-shift"; break; case EOpAnd: out.debug << "bitwise and"; break; case EOpInclusiveOr: out.debug << "inclusive-or"; break; case EOpExclusiveOr: out.debug << "exclusive-or"; break; case EOpEqual: out.debug << "Compare Equal"; break; case EOpNotEqual: out.debug << "Compare Not Equal"; break; case EOpLessThan: out.debug << "Compare Less Than"; break; case EOpGreaterThan: out.debug << "Compare Greater Than"; break; case EOpLessThanEqual: out.debug << "Compare Less Than or Equal"; break; case EOpGreaterThanEqual: out.debug << "Compare Greater Than or Equal"; break; case EOpVectorEqual: out.debug << "Equal"; break; case EOpVectorNotEqual: out.debug << "NotEqual"; break; case EOpVectorTimesScalar: out.debug << "vector-scale"; break; case EOpVectorTimesMatrix: out.debug << "vector-times-matrix"; break; case EOpMatrixTimesVector: out.debug << "matrix-times-vector"; break; case EOpMatrixTimesScalar: out.debug << "matrix-scale"; break; case EOpMatrixTimesMatrix: out.debug << "matrix-multiply"; break; case EOpLogicalOr: out.debug << "logical-or"; break; case EOpLogicalXor: out.debug << "logical-xor"; break; case EOpLogicalAnd: out.debug << "logical-and"; break; case EOpAbsDifference: out.debug << "absoluteDifference"; break; case EOpAddSaturate: out.debug << "addSaturate"; break; case EOpSubSaturate: out.debug << "subtractSaturate"; break; case EOpAverage: out.debug << "average"; break; case EOpAverageRounded: out.debug << "averageRounded"; break; case EOpMul32x16: out.debug << "multiply32x16"; break; default: out.debug << ""; } out.debug << " (" << node->getCompleteString() << ")"; out.debug << "\n"; return true; } bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) { TInfoSink& out = infoSink; OutputTreeText(out, node, depth); if (IsOpNumericConv(node->getAsOperator()->getOp())) { out.debug << "Convert " << TType::getBasicString(node->getOperand()->getType().getBasicType()) << " to " << TType::getBasicString(node->getType().getBasicType()); out.debug << " (" << node->getCompleteString() << ")"; out.debug << "\n"; return true; } switch (node->getOp()) { case EOpNegative: out.debug << "Negate value"; break; case EOpVectorLogicalNot: case EOpLogicalNot: out.debug << "Negate conditional"; break; case EOpBitwiseNot: out.debug << "Bitwise not"; break; case EOpPostIncrement: out.debug << "Post-Increment"; break; case EOpPostDecrement: out.debug << "Post-Decrement"; break; case EOpPreIncrement: out.debug << "Pre-Increment"; break; case EOpPreDecrement: out.debug << "Pre-Decrement"; break; case EOpCopyObject: out.debug << "copy object"; break; case EOpConvUint64ToPtr: out.debug << "Convert uint64_t to pointer"; break; case EOpConvPtrToUint64: out.debug << "Convert pointer to uint64_t"; break; case EOpConvUint64ToAccStruct: out.debug << "Convert uint64_t to acceleration structure"; break; case EOpConvUvec2ToAccStruct: out.debug << "Convert uvec2 to acceleration strucuture "; break; case EOpRadians: out.debug << "radians"; break; case EOpDegrees: out.debug << "degrees"; break; case EOpSin: out.debug << "sine"; break; case EOpCos: out.debug << "cosine"; break; case EOpTan: out.debug << "tangent"; break; case EOpAsin: out.debug << "arc sine"; break; case EOpAcos: out.debug << "arc cosine"; break; case EOpAtan: out.debug << "arc tangent"; break; case EOpSinh: out.debug << "hyp. sine"; break; case EOpCosh: out.debug << "hyp. cosine"; break; case EOpTanh: out.debug << "hyp. tangent"; break; case EOpAsinh: out.debug << "arc hyp. sine"; break; case EOpAcosh: out.debug << "arc hyp. cosine"; break; case EOpAtanh: out.debug << "arc hyp. tangent"; break; case EOpExp: out.debug << "exp"; break; case EOpLog: out.debug << "log"; break; case EOpExp2: out.debug << "exp2"; break; case EOpLog2: out.debug << "log2"; break; case EOpSqrt: out.debug << "sqrt"; break; case EOpInverseSqrt: out.debug << "inverse sqrt"; break; case EOpAbs: out.debug << "Absolute value"; break; case EOpSign: out.debug << "Sign"; break; case EOpFloor: out.debug << "Floor"; break; case EOpTrunc: out.debug << "trunc"; break; case EOpRound: out.debug << "round"; break; case EOpRoundEven: out.debug << "roundEven"; break; case EOpCeil: out.debug << "Ceiling"; break; case EOpFract: out.debug << "Fraction"; break; case EOpIsNan: out.debug << "isnan"; break; case EOpIsInf: out.debug << "isinf"; break; case EOpFloatBitsToInt: out.debug << "floatBitsToInt"; break; case EOpFloatBitsToUint:out.debug << "floatBitsToUint"; break; case EOpIntBitsToFloat: out.debug << "intBitsToFloat"; break; case EOpUintBitsToFloat:out.debug << "uintBitsToFloat"; break; case EOpDoubleBitsToInt64: out.debug << "doubleBitsToInt64"; break; case EOpDoubleBitsToUint64: out.debug << "doubleBitsToUint64"; break; case EOpInt64BitsToDouble: out.debug << "int64BitsToDouble"; break; case EOpUint64BitsToDouble: out.debug << "uint64BitsToDouble"; break; case EOpFloat16BitsToInt16: out.debug << "float16BitsToInt16"; break; case EOpFloat16BitsToUint16: out.debug << "float16BitsToUint16"; break; case EOpInt16BitsToFloat16: out.debug << "int16BitsToFloat16"; break; case EOpUint16BitsToFloat16: out.debug << "uint16BitsToFloat16"; break; case EOpPackSnorm2x16: out.debug << "packSnorm2x16"; break; case EOpUnpackSnorm2x16:out.debug << "unpackSnorm2x16"; break; case EOpPackUnorm2x16: out.debug << "packUnorm2x16"; break; case EOpUnpackUnorm2x16:out.debug << "unpackUnorm2x16"; break; case EOpPackHalf2x16: out.debug << "packHalf2x16"; break; case EOpUnpackHalf2x16: out.debug << "unpackHalf2x16"; break; case EOpPack16: out.debug << "pack16"; break; case EOpPack32: out.debug << "pack32"; break; case EOpPack64: out.debug << "pack64"; break; case EOpUnpack32: out.debug << "unpack32"; break; case EOpUnpack16: out.debug << "unpack16"; break; case EOpUnpack8: out.debug << "unpack8"; break; case EOpPackSnorm4x8: out.debug << "PackSnorm4x8"; break; case EOpUnpackSnorm4x8: out.debug << "UnpackSnorm4x8"; break; case EOpPackUnorm4x8: out.debug << "PackUnorm4x8"; break; case EOpUnpackUnorm4x8: out.debug << "UnpackUnorm4x8"; break; case EOpPackDouble2x32: out.debug << "PackDouble2x32"; break; case EOpUnpackDouble2x32: out.debug << "UnpackDouble2x32"; break; case EOpPackInt2x32: out.debug << "packInt2x32"; break; case EOpUnpackInt2x32: out.debug << "unpackInt2x32"; break; case EOpPackUint2x32: out.debug << "packUint2x32"; break; case EOpUnpackUint2x32: out.debug << "unpackUint2x32"; break; case EOpPackInt2x16: out.debug << "packInt2x16"; break; case EOpUnpackInt2x16: out.debug << "unpackInt2x16"; break; case EOpPackUint2x16: out.debug << "packUint2x16"; break; case EOpUnpackUint2x16: out.debug << "unpackUint2x16"; break; case EOpPackInt4x16: out.debug << "packInt4x16"; break; case EOpUnpackInt4x16: out.debug << "unpackInt4x16"; break; case EOpPackUint4x16: out.debug << "packUint4x16"; break; case EOpUnpackUint4x16: out.debug << "unpackUint4x16"; break; case EOpPackFloat2x16: out.debug << "packFloat2x16"; break; case EOpUnpackFloat2x16: out.debug << "unpackFloat2x16"; break; case EOpLength: out.debug << "length"; break; case EOpNormalize: out.debug << "normalize"; break; case EOpDPdx: out.debug << "dPdx"; break; case EOpDPdy: out.debug << "dPdy"; break; case EOpFwidth: out.debug << "fwidth"; break; case EOpDPdxFine: out.debug << "dPdxFine"; break; case EOpDPdyFine: out.debug << "dPdyFine"; break; case EOpFwidthFine: out.debug << "fwidthFine"; break; case EOpDPdxCoarse: out.debug << "dPdxCoarse"; break; case EOpDPdyCoarse: out.debug << "dPdyCoarse"; break; case EOpFwidthCoarse: out.debug << "fwidthCoarse"; break; case EOpInterpolateAtCentroid: out.debug << "interpolateAtCentroid"; break; case EOpDeterminant: out.debug << "determinant"; break; case EOpMatrixInverse: out.debug << "inverse"; break; case EOpTranspose: out.debug << "transpose"; break; case EOpAny: out.debug << "any"; break; case EOpAll: out.debug << "all"; break; case EOpArrayLength: out.debug << "array length"; break; case EOpEmitStreamVertex: out.debug << "EmitStreamVertex"; break; case EOpEndStreamPrimitive: out.debug << "EndStreamPrimitive"; break; case EOpAtomicCounterIncrement: out.debug << "AtomicCounterIncrement";break; case EOpAtomicCounterDecrement: out.debug << "AtomicCounterDecrement";break; case EOpAtomicCounter: out.debug << "AtomicCounter"; break; case EOpTextureQuerySize: out.debug << "textureSize"; break; case EOpTextureQueryLod: out.debug << "textureQueryLod"; break; case EOpTextureQueryLevels: out.debug << "textureQueryLevels"; break; case EOpTextureQuerySamples: out.debug << "textureSamples"; break; case EOpImageQuerySize: out.debug << "imageQuerySize"; break; case EOpImageQuerySamples: out.debug << "imageQuerySamples"; break; case EOpImageLoad: out.debug << "imageLoad"; break; case EOpBitFieldReverse: out.debug << "bitFieldReverse"; break; case EOpBitCount: out.debug << "bitCount"; break; case EOpFindLSB: out.debug << "findLSB"; break; case EOpFindMSB: out.debug << "findMSB"; break; case EOpCountLeadingZeros: out.debug << "countLeadingZeros"; break; case EOpCountTrailingZeros: out.debug << "countTrailingZeros"; break; case EOpNoise: out.debug << "noise"; break; case EOpBallot: out.debug << "ballot"; break; case EOpReadFirstInvocation: out.debug << "readFirstInvocation"; break; case EOpAnyInvocation: out.debug << "anyInvocation"; break; case EOpAllInvocations: out.debug << "allInvocations"; break; case EOpAllInvocationsEqual: out.debug << "allInvocationsEqual"; break; case EOpSubgroupElect: out.debug << "subgroupElect"; break; case EOpSubgroupAll: out.debug << "subgroupAll"; break; case EOpSubgroupAny: out.debug << "subgroupAny"; break; case EOpSubgroupAllEqual: out.debug << "subgroupAllEqual"; break; case EOpSubgroupBroadcast: out.debug << "subgroupBroadcast"; break; case EOpSubgroupBroadcastFirst: out.debug << "subgroupBroadcastFirst"; break; case EOpSubgroupBallot: out.debug << "subgroupBallot"; break; case EOpSubgroupInverseBallot: out.debug << "subgroupInverseBallot"; break; case EOpSubgroupBallotBitExtract: out.debug << "subgroupBallotBitExtract"; break; case EOpSubgroupBallotBitCount: out.debug << "subgroupBallotBitCount"; break; case EOpSubgroupBallotInclusiveBitCount: out.debug << "subgroupBallotInclusiveBitCount"; break; case EOpSubgroupBallotExclusiveBitCount: out.debug << "subgroupBallotExclusiveBitCount"; break; case EOpSubgroupBallotFindLSB: out.debug << "subgroupBallotFindLSB"; break; case EOpSubgroupBallotFindMSB: out.debug << "subgroupBallotFindMSB"; break; case EOpSubgroupShuffle: out.debug << "subgroupShuffle"; break; case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break; case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break; case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break; case EOpSubgroupRotate: out.debug << "subgroupRotate"; break; case EOpSubgroupClusteredRotate: out.debug << "subgroupClusteredRotate"; break; case EOpSubgroupAdd: out.debug << "subgroupAdd"; break; case EOpSubgroupMul: out.debug << "subgroupMul"; break; case EOpSubgroupMin: out.debug << "subgroupMin"; break; case EOpSubgroupMax: out.debug << "subgroupMax"; break; case EOpSubgroupAnd: out.debug << "subgroupAnd"; break; case EOpSubgroupOr: out.debug << "subgroupOr"; break; case EOpSubgroupXor: out.debug << "subgroupXor"; break; case EOpSubgroupInclusiveAdd: out.debug << "subgroupInclusiveAdd"; break; case EOpSubgroupInclusiveMul: out.debug << "subgroupInclusiveMul"; break; case EOpSubgroupInclusiveMin: out.debug << "subgroupInclusiveMin"; break; case EOpSubgroupInclusiveMax: out.debug << "subgroupInclusiveMax"; break; case EOpSubgroupInclusiveAnd: out.debug << "subgroupInclusiveAnd"; break; case EOpSubgroupInclusiveOr: out.debug << "subgroupInclusiveOr"; break; case EOpSubgroupInclusiveXor: out.debug << "subgroupInclusiveXor"; break; case EOpSubgroupExclusiveAdd: out.debug << "subgroupExclusiveAdd"; break; case EOpSubgroupExclusiveMul: out.debug << "subgroupExclusiveMul"; break; case EOpSubgroupExclusiveMin: out.debug << "subgroupExclusiveMin"; break; case EOpSubgroupExclusiveMax: out.debug << "subgroupExclusiveMax"; break; case EOpSubgroupExclusiveAnd: out.debug << "subgroupExclusiveAnd"; break; case EOpSubgroupExclusiveOr: out.debug << "subgroupExclusiveOr"; break; case EOpSubgroupExclusiveXor: out.debug << "subgroupExclusiveXor"; break; case EOpSubgroupClusteredAdd: out.debug << "subgroupClusteredAdd"; break; case EOpSubgroupClusteredMul: out.debug << "subgroupClusteredMul"; break; case EOpSubgroupClusteredMin: out.debug << "subgroupClusteredMin"; break; case EOpSubgroupClusteredMax: out.debug << "subgroupClusteredMax"; break; case EOpSubgroupClusteredAnd: out.debug << "subgroupClusteredAnd"; break; case EOpSubgroupClusteredOr: out.debug << "subgroupClusteredOr"; break; case EOpSubgroupClusteredXor: out.debug << "subgroupClusteredXor"; break; case EOpSubgroupQuadBroadcast: out.debug << "subgroupQuadBroadcast"; break; case EOpSubgroupQuadSwapHorizontal: out.debug << "subgroupQuadSwapHorizontal"; break; case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break; case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break; case EOpSubgroupQuadAll: out.debug << "subgroupQuadAll"; break; case EOpSubgroupQuadAny: out.debug << "subgroupQuadAny"; break; case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break; case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break; case EOpSubgroupPartitionedMul: out.debug << "subgroupPartitionedMulNV"; break; case EOpSubgroupPartitionedMin: out.debug << "subgroupPartitionedMinNV"; break; case EOpSubgroupPartitionedMax: out.debug << "subgroupPartitionedMaxNV"; break; case EOpSubgroupPartitionedAnd: out.debug << "subgroupPartitionedAndNV"; break; case EOpSubgroupPartitionedOr: out.debug << "subgroupPartitionedOrNV"; break; case EOpSubgroupPartitionedXor: out.debug << "subgroupPartitionedXorNV"; break; case EOpSubgroupPartitionedInclusiveAdd: out.debug << "subgroupPartitionedInclusiveAddNV"; break; case EOpSubgroupPartitionedInclusiveMul: out.debug << "subgroupPartitionedInclusiveMulNV"; break; case EOpSubgroupPartitionedInclusiveMin: out.debug << "subgroupPartitionedInclusiveMinNV"; break; case EOpSubgroupPartitionedInclusiveMax: out.debug << "subgroupPartitionedInclusiveMaxNV"; break; case EOpSubgroupPartitionedInclusiveAnd: out.debug << "subgroupPartitionedInclusiveAndNV"; break; case EOpSubgroupPartitionedInclusiveOr: out.debug << "subgroupPartitionedInclusiveOrNV"; break; case EOpSubgroupPartitionedInclusiveXor: out.debug << "subgroupPartitionedInclusiveXorNV"; break; case EOpSubgroupPartitionedExclusiveAdd: out.debug << "subgroupPartitionedExclusiveAddNV"; break; case EOpSubgroupPartitionedExclusiveMul: out.debug << "subgroupPartitionedExclusiveMulNV"; break; case EOpSubgroupPartitionedExclusiveMin: out.debug << "subgroupPartitionedExclusiveMinNV"; break; case EOpSubgroupPartitionedExclusiveMax: out.debug << "subgroupPartitionedExclusiveMaxNV"; break; case EOpSubgroupPartitionedExclusiveAnd: out.debug << "subgroupPartitionedExclusiveAndNV"; break; case EOpSubgroupPartitionedExclusiveOr: out.debug << "subgroupPartitionedExclusiveOrNV"; break; case EOpSubgroupPartitionedExclusiveXor: out.debug << "subgroupPartitionedExclusiveXorNV"; break; case EOpClip: out.debug << "clip"; break; case EOpIsFinite: out.debug << "isfinite"; break; case EOpLog10: out.debug << "log10"; break; case EOpRcp: out.debug << "rcp"; break; case EOpSaturate: out.debug << "saturate"; break; case EOpSparseTexelsResident: out.debug << "sparseTexelsResident"; break; case EOpMinInvocations: out.debug << "minInvocations"; break; case EOpMaxInvocations: out.debug << "maxInvocations"; break; case EOpAddInvocations: out.debug << "addInvocations"; break; case EOpMinInvocationsNonUniform: out.debug << "minInvocationsNonUniform"; break; case EOpMaxInvocationsNonUniform: out.debug << "maxInvocationsNonUniform"; break; case EOpAddInvocationsNonUniform: out.debug << "addInvocationsNonUniform"; break; case EOpMinInvocationsInclusiveScan: out.debug << "minInvocationsInclusiveScan"; break; case EOpMaxInvocationsInclusiveScan: out.debug << "maxInvocationsInclusiveScan"; break; case EOpAddInvocationsInclusiveScan: out.debug << "addInvocationsInclusiveScan"; break; case EOpMinInvocationsInclusiveScanNonUniform: out.debug << "minInvocationsInclusiveScanNonUniform"; break; case EOpMaxInvocationsInclusiveScanNonUniform: out.debug << "maxInvocationsInclusiveScanNonUniform"; break; case EOpAddInvocationsInclusiveScanNonUniform: out.debug << "addInvocationsInclusiveScanNonUniform"; break; case EOpMinInvocationsExclusiveScan: out.debug << "minInvocationsExclusiveScan"; break; case EOpMaxInvocationsExclusiveScan: out.debug << "maxInvocationsExclusiveScan"; break; case EOpAddInvocationsExclusiveScan: out.debug << "addInvocationsExclusiveScan"; break; case EOpMinInvocationsExclusiveScanNonUniform: out.debug << "minInvocationsExclusiveScanNonUniform"; break; case EOpMaxInvocationsExclusiveScanNonUniform: out.debug << "maxInvocationsExclusiveScanNonUniform"; break; case EOpAddInvocationsExclusiveScanNonUniform: out.debug << "addInvocationsExclusiveScanNonUniform"; break; case EOpMbcnt: out.debug << "mbcnt"; break; case EOpFragmentMaskFetch: out.debug << "fragmentMaskFetchAMD"; break; case EOpFragmentFetch: out.debug << "fragmentFetchAMD"; break; case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break; case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break; case EOpSubpassLoad: out.debug << "subpassLoad"; break; case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; case EOpColorAttachmentReadEXT: out.debug << "colorAttachmentReadEXT"; break; case EOpConstructReference: out.debug << "Construct reference type"; break; case EOpDeclare: out.debug << "Declare"; break; case EOpSpirvInst: out.debug << "spirv_instruction"; break; case EOpCreateTensorLayoutNV: out.debug << "createTensorLayoutNV"; break; case EOpTensorLayoutSetBlockSizeNV: out.debug << "setTensorLayoutBlockSizeNV"; break; case EOpTensorLayoutSetDimensionNV: out.debug << "setTensorLayoutDimensionNV"; break; case EOpTensorLayoutSetStrideNV: out.debug << "setTensorLayoutStrideNV"; break; case EOpTensorLayoutSliceNV: out.debug << "sliceTensorLayoutNV"; break; case EOpTensorLayoutSetClampValueNV: out.debug << "setTensorLayoutClampValueNV"; break; case EOpCreateTensorViewNV: out.debug << "createTensorViewNV"; break; case EOpTensorViewSetDimensionNV: out.debug << "setTensorViewDimensionsNV"; break; case EOpTensorViewSetStrideNV: out.debug << "setTensorViewStrideNV"; break; case EOpTensorViewSetClipNV: out.debug << "setTensorViewClipNV"; break; default: out.debug.message(EPrefixError, "Bad unary op"); } out.debug << " (" << node->getCompleteString() << ")"; out.debug << "\n"; return true; } bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node) { TInfoSink& out = infoSink; if (node->getOp() == EOpNull) { out.debug.message(EPrefixError, "node is still EOpNull!"); return true; } OutputTreeText(out, node, depth); 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; case EOpFunctionCall: out.debug << "Function Call: " << node->getName(); break; case EOpParameters: out.debug << "Function Parameters: "; break; case EOpConstructFloat: out.debug << "Construct float"; break; case EOpConstructDouble:out.debug << "Construct double"; break; case EOpConstructVec2: out.debug << "Construct vec2"; break; case EOpConstructVec3: out.debug << "Construct vec3"; break; case EOpConstructVec4: out.debug << "Construct vec4"; break; case EOpConstructDVec2: out.debug << "Construct dvec2"; break; case EOpConstructDVec3: out.debug << "Construct dvec3"; break; case EOpConstructDVec4: out.debug << "Construct dvec4"; break; case EOpConstructBool: out.debug << "Construct bool"; break; case EOpConstructBVec2: out.debug << "Construct bvec2"; break; case EOpConstructBVec3: out.debug << "Construct bvec3"; break; case EOpConstructBVec4: out.debug << "Construct bvec4"; break; case EOpConstructInt8: out.debug << "Construct int8_t"; break; case EOpConstructI8Vec2: out.debug << "Construct i8vec2"; break; case EOpConstructI8Vec3: out.debug << "Construct i8vec3"; break; case EOpConstructI8Vec4: out.debug << "Construct i8vec4"; break; case EOpConstructInt: out.debug << "Construct int"; break; case EOpConstructIVec2: out.debug << "Construct ivec2"; break; case EOpConstructIVec3: out.debug << "Construct ivec3"; break; case EOpConstructIVec4: out.debug << "Construct ivec4"; break; case EOpConstructUint8: out.debug << "Construct uint8_t"; break; case EOpConstructU8Vec2: out.debug << "Construct u8vec2"; break; case EOpConstructU8Vec3: out.debug << "Construct u8vec3"; break; case EOpConstructU8Vec4: out.debug << "Construct u8vec4"; break; case EOpConstructUint: out.debug << "Construct uint"; break; case EOpConstructUVec2: out.debug << "Construct uvec2"; break; case EOpConstructUVec3: out.debug << "Construct uvec3"; break; case EOpConstructUVec4: out.debug << "Construct uvec4"; break; case EOpConstructInt64: out.debug << "Construct int64"; break; case EOpConstructI64Vec2: out.debug << "Construct i64vec2"; break; case EOpConstructI64Vec3: out.debug << "Construct i64vec3"; break; case EOpConstructI64Vec4: out.debug << "Construct i64vec4"; break; case EOpConstructUint64: out.debug << "Construct uint64"; break; case EOpConstructU64Vec2: out.debug << "Construct u64vec2"; break; case EOpConstructU64Vec3: out.debug << "Construct u64vec3"; break; case EOpConstructU64Vec4: out.debug << "Construct u64vec4"; break; case EOpConstructInt16: out.debug << "Construct int16_t"; break; case EOpConstructI16Vec2: out.debug << "Construct i16vec2"; break; case EOpConstructI16Vec3: out.debug << "Construct i16vec3"; break; case EOpConstructI16Vec4: out.debug << "Construct i16vec4"; break; case EOpConstructUint16: out.debug << "Construct uint16_t"; break; case EOpConstructU16Vec2: out.debug << "Construct u16vec2"; break; case EOpConstructU16Vec3: out.debug << "Construct u16vec3"; break; case EOpConstructU16Vec4: out.debug << "Construct u16vec4"; break; case EOpConstructMat2x2: out.debug << "Construct mat2"; break; case EOpConstructMat2x3: out.debug << "Construct mat2x3"; break; case EOpConstructMat2x4: out.debug << "Construct mat2x4"; break; case EOpConstructMat3x2: out.debug << "Construct mat3x2"; break; case EOpConstructMat3x3: out.debug << "Construct mat3"; break; case EOpConstructMat3x4: out.debug << "Construct mat3x4"; break; case EOpConstructMat4x2: out.debug << "Construct mat4x2"; break; case EOpConstructMat4x3: out.debug << "Construct mat4x3"; break; case EOpConstructMat4x4: out.debug << "Construct mat4"; break; case EOpConstructDMat2x2: out.debug << "Construct dmat2"; break; case EOpConstructDMat2x3: out.debug << "Construct dmat2x3"; break; case EOpConstructDMat2x4: out.debug << "Construct dmat2x4"; break; case EOpConstructDMat3x2: out.debug << "Construct dmat3x2"; break; case EOpConstructDMat3x3: out.debug << "Construct dmat3"; break; case EOpConstructDMat3x4: out.debug << "Construct dmat3x4"; break; case EOpConstructDMat4x2: out.debug << "Construct dmat4x2"; break; case EOpConstructDMat4x3: out.debug << "Construct dmat4x3"; break; case EOpConstructDMat4x4: out.debug << "Construct dmat4"; break; case EOpConstructIMat2x2: out.debug << "Construct imat2"; break; case EOpConstructIMat2x3: out.debug << "Construct imat2x3"; break; case EOpConstructIMat2x4: out.debug << "Construct imat2x4"; break; case EOpConstructIMat3x2: out.debug << "Construct imat3x2"; break; case EOpConstructIMat3x3: out.debug << "Construct imat3"; break; case EOpConstructIMat3x4: out.debug << "Construct imat3x4"; break; case EOpConstructIMat4x2: out.debug << "Construct imat4x2"; break; case EOpConstructIMat4x3: out.debug << "Construct imat4x3"; break; case EOpConstructIMat4x4: out.debug << "Construct imat4"; break; case EOpConstructUMat2x2: out.debug << "Construct umat2"; break; case EOpConstructUMat2x3: out.debug << "Construct umat2x3"; break; case EOpConstructUMat2x4: out.debug << "Construct umat2x4"; break; case EOpConstructUMat3x2: out.debug << "Construct umat3x2"; break; case EOpConstructUMat3x3: out.debug << "Construct umat3"; break; case EOpConstructUMat3x4: out.debug << "Construct umat3x4"; break; case EOpConstructUMat4x2: out.debug << "Construct umat4x2"; break; case EOpConstructUMat4x3: out.debug << "Construct umat4x3"; break; case EOpConstructUMat4x4: out.debug << "Construct umat4"; break; case EOpConstructBMat2x2: out.debug << "Construct bmat2"; break; case EOpConstructBMat2x3: out.debug << "Construct bmat2x3"; break; case EOpConstructBMat2x4: out.debug << "Construct bmat2x4"; break; case EOpConstructBMat3x2: out.debug << "Construct bmat3x2"; break; case EOpConstructBMat3x3: out.debug << "Construct bmat3"; break; case EOpConstructBMat3x4: out.debug << "Construct bmat3x4"; break; case EOpConstructBMat4x2: out.debug << "Construct bmat4x2"; break; case EOpConstructBMat4x3: out.debug << "Construct bmat4x3"; break; case EOpConstructBMat4x4: out.debug << "Construct bmat4"; break; case EOpConstructBFloat16: out.debug << "Construct bfloat16_t"; break; case EOpConstructBF16Vec2: out.debug << "Construct bf16vec2"; break; case EOpConstructBF16Vec3: out.debug << "Construct bf16vec3"; break; case EOpConstructBF16Vec4: out.debug << "Construct bf16vec4"; break; case EOpConstructFloatE5M2: out.debug << "Construct floate5m2_t"; break; case EOpConstructFloatE5M2Vec2: out.debug << "Construct fe5m2vec2"; break; case EOpConstructFloatE5M2Vec3: out.debug << "Construct fe5m2vec3"; break; case EOpConstructFloatE5M2Vec4: out.debug << "Construct fe5m2vec4"; break; case EOpConstructFloatE4M3: out.debug << "Construct floate4m3_t"; break; case EOpConstructFloatE4M3Vec2: out.debug << "Construct fe4m3vec2"; break; case EOpConstructFloatE4M3Vec3: out.debug << "Construct fe4m3vec3"; break; case EOpConstructFloatE4M3Vec4: out.debug << "Construct fe4m3vec4"; break; case EOpConstructFloat16: out.debug << "Construct float16_t"; break; case EOpConstructF16Vec2: out.debug << "Construct f16vec2"; break; case EOpConstructF16Vec3: out.debug << "Construct f16vec3"; break; case EOpConstructF16Vec4: out.debug << "Construct f16vec4"; break; case EOpConstructF16Mat2x2: out.debug << "Construct f16mat2"; break; case EOpConstructF16Mat2x3: out.debug << "Construct f16mat2x3"; break; case EOpConstructF16Mat2x4: out.debug << "Construct f16mat2x4"; break; case EOpConstructF16Mat3x2: out.debug << "Construct f16mat3x2"; break; case EOpConstructF16Mat3x3: out.debug << "Construct f16mat3"; break; case EOpConstructF16Mat3x4: out.debug << "Construct f16mat3x4"; break; case EOpConstructF16Mat4x2: out.debug << "Construct f16mat4x2"; break; case EOpConstructF16Mat4x3: out.debug << "Construct f16mat4x3"; break; case EOpConstructF16Mat4x4: out.debug << "Construct f16mat4"; break; case EOpConstructStruct: out.debug << "Construct structure"; break; case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break; case EOpConstructReference: out.debug << "Construct reference"; break; case EOpConstructCooperativeMatrixNV: out.debug << "Construct cooperative matrix NV"; break; case EOpConstructCooperativeMatrixKHR: out.debug << "Construct cooperative matrix KHR"; break; case EOpConstructCooperativeVectorNV: out.debug << "Construct cooperative vector NV"; break; case EOpConstructAccStruct: out.debug << "Construct acceleration structure"; break; case EOpBitCastArrayQCOM: out.debug << "Bitcast To Array QCOM"; break; case EOpExtractSubArrayQCOM: out.debug << "Extract Subarray QCOM"; break; case EOpCompositeConstructCoopMatQCOM: out.debug << "Construct Cooperative Matrix QCOM"; break; case EOpCompositeExtractCoopMatQCOM: out.debug << "Extract Cooperative Matrix QCOM"; break; case EOpLessThan: out.debug << "Compare Less Than"; break; case EOpGreaterThan: out.debug << "Compare Greater Than"; break; case EOpLessThanEqual: out.debug << "Compare Less Than or Equal"; break; case EOpGreaterThanEqual: out.debug << "Compare Greater Than or Equal"; break; case EOpVectorEqual: out.debug << "Equal"; break; case EOpVectorNotEqual: out.debug << "NotEqual"; break; case EOpMod: out.debug << "mod"; break; case EOpModf: out.debug << "modf"; break; case EOpPow: out.debug << "pow"; break; case EOpAtan: out.debug << "arc tangent"; break; case EOpMin: out.debug << "min"; break; case EOpMax: out.debug << "max"; break; case EOpClamp: out.debug << "clamp"; break; case EOpMix: out.debug << "mix"; break; case EOpStep: out.debug << "step"; break; case EOpSmoothStep: out.debug << "smoothstep"; break; case EOpDistance: out.debug << "distance"; break; case EOpDot: out.debug << "dot-product"; break; case EOpDotPackedEXT: out.debug << "dot-product-packed";break; case EOpDotAccSatEXT: out.debug << "dot-product-accumulate-saturate";break; case EOpDotPackedAccSatEXT: out.debug << "dot-product-packed-accumulate-saturate";break; case EOpCross: out.debug << "cross-product"; break; case EOpFaceForward: out.debug << "face-forward"; break; case EOpReflect: out.debug << "reflect"; break; case EOpRefract: out.debug << "refract"; break; case EOpMul: out.debug << "component-wise multiply"; break; case EOpOuterProduct: out.debug << "outer product"; break; case EOpEmitVertex: out.debug << "EmitVertex"; break; case EOpEndPrimitive: out.debug << "EndPrimitive"; break; case EOpBarrier: out.debug << "Barrier"; break; case EOpMemoryBarrier: out.debug << "MemoryBarrier"; break; case EOpMemoryBarrierAtomicCounter: out.debug << "MemoryBarrierAtomicCounter"; break; case EOpMemoryBarrierBuffer: out.debug << "MemoryBarrierBuffer"; break; case EOpMemoryBarrierImage: out.debug << "MemoryBarrierImage"; break; case EOpMemoryBarrierShared: out.debug << "MemoryBarrierShared"; break; case EOpGroupMemoryBarrier: out.debug << "GroupMemoryBarrier"; break; case EOpReadInvocation: out.debug << "readInvocation"; break; case EOpSwizzleInvocations: out.debug << "swizzleInvocations"; break; case EOpSwizzleInvocationsMasked: out.debug << "swizzleInvocationsMasked"; break; case EOpWriteInvocation: out.debug << "writeInvocation"; break; case EOpMin3: out.debug << "min3"; break; case EOpMax3: out.debug << "max3"; break; case EOpMid3: out.debug << "mid3"; break; case EOpTime: out.debug << "time"; break; case EOpAtomicAdd: out.debug << "AtomicAdd"; break; case EOpAtomicSubtract: out.debug << "AtomicSubtract"; break; case EOpAtomicMin: out.debug << "AtomicMin"; break; case EOpAtomicMax: out.debug << "AtomicMax"; break; case EOpAtomicAnd: out.debug << "AtomicAnd"; break; case EOpAtomicOr: out.debug << "AtomicOr"; break; case EOpAtomicXor: out.debug << "AtomicXor"; break; case EOpAtomicExchange: out.debug << "AtomicExchange"; break; case EOpAtomicCompSwap: out.debug << "AtomicCompSwap"; break; case EOpAtomicLoad: out.debug << "AtomicLoad"; break; case EOpAtomicStore: out.debug << "AtomicStore"; break; case EOpAtomicCounterAdd: out.debug << "AtomicCounterAdd"; break; case EOpAtomicCounterSubtract: out.debug << "AtomicCounterSubtract"; break; case EOpAtomicCounterMin: out.debug << "AtomicCounterMin"; break; case EOpAtomicCounterMax: out.debug << "AtomicCounterMax"; break; case EOpAtomicCounterAnd: out.debug << "AtomicCounterAnd"; break; case EOpAtomicCounterOr: out.debug << "AtomicCounterOr"; break; case EOpAtomicCounterXor: out.debug << "AtomicCounterXor"; break; case EOpAtomicCounterExchange: out.debug << "AtomicCounterExchange"; break; case EOpAtomicCounterCompSwap: out.debug << "AtomicCounterCompSwap"; break; case EOpImageQuerySize: out.debug << "imageQuerySize"; break; case EOpImageQuerySamples: out.debug << "imageQuerySamples"; break; case EOpImageLoad: out.debug << "imageLoad"; break; case EOpImageStore: out.debug << "imageStore"; break; case EOpImageAtomicAdd: out.debug << "imageAtomicAdd"; break; case EOpImageAtomicMin: out.debug << "imageAtomicMin"; break; case EOpImageAtomicMax: out.debug << "imageAtomicMax"; break; case EOpImageAtomicAnd: out.debug << "imageAtomicAnd"; break; case EOpImageAtomicOr: out.debug << "imageAtomicOr"; break; case EOpImageAtomicXor: out.debug << "imageAtomicXor"; break; case EOpImageAtomicExchange: out.debug << "imageAtomicExchange"; break; case EOpImageAtomicCompSwap: out.debug << "imageAtomicCompSwap"; break; case EOpImageAtomicLoad: out.debug << "imageAtomicLoad"; break; case EOpImageAtomicStore: out.debug << "imageAtomicStore"; break; case EOpImageLoadLod: out.debug << "imageLoadLod"; break; case EOpImageStoreLod: out.debug << "imageStoreLod"; break; case EOpTextureQuerySize: out.debug << "textureSize"; break; case EOpTextureQueryLod: out.debug << "textureQueryLod"; break; case EOpTextureQueryLevels: out.debug << "textureQueryLevels"; break; case EOpTextureQuerySamples: out.debug << "textureSamples"; break; case EOpTexture: out.debug << "texture"; break; case EOpTextureProj: out.debug << "textureProj"; break; case EOpTextureLod: out.debug << "textureLod"; break; case EOpTextureOffset: out.debug << "textureOffset"; break; case EOpTextureFetch: out.debug << "textureFetch"; break; case EOpTextureFetchOffset: out.debug << "textureFetchOffset"; break; case EOpTextureProjOffset: out.debug << "textureProjOffset"; break; case EOpTextureLodOffset: out.debug << "textureLodOffset"; break; case EOpTextureProjLod: out.debug << "textureProjLod"; break; case EOpTextureProjLodOffset: out.debug << "textureProjLodOffset"; break; case EOpTextureGrad: out.debug << "textureGrad"; break; case EOpTextureGradOffset: out.debug << "textureGradOffset"; break; case EOpTextureProjGrad: out.debug << "textureProjGrad"; break; case EOpTextureProjGradOffset: out.debug << "textureProjGradOffset"; break; case EOpTextureGather: out.debug << "textureGather"; break; case EOpTextureGatherOffset: out.debug << "textureGatherOffset"; break; case EOpTextureGatherOffsets: out.debug << "textureGatherOffsets"; break; case EOpTextureClamp: out.debug << "textureClamp"; break; case EOpTextureOffsetClamp: out.debug << "textureOffsetClamp"; break; case EOpTextureGradClamp: out.debug << "textureGradClamp"; break; case EOpTextureGradOffsetClamp: out.debug << "textureGradOffsetClamp"; break; case EOpTextureGatherLod: out.debug << "textureGatherLod"; break; case EOpTextureGatherLodOffset: out.debug << "textureGatherLodOffset"; break; case EOpTextureGatherLodOffsets: out.debug << "textureGatherLodOffsets"; break; case EOpSparseTexture: out.debug << "sparseTexture"; break; case EOpSparseTextureOffset: out.debug << "sparseTextureOffset"; break; case EOpSparseTextureLod: out.debug << "sparseTextureLod"; break; case EOpSparseTextureLodOffset: out.debug << "sparseTextureLodOffset"; break; case EOpSparseTextureFetch: out.debug << "sparseTexelFetch"; break; case EOpSparseTextureFetchOffset: out.debug << "sparseTexelFetchOffset"; break; case EOpSparseTextureGrad: out.debug << "sparseTextureGrad"; break; case EOpSparseTextureGradOffset: out.debug << "sparseTextureGradOffset"; break; case EOpSparseTextureGather: out.debug << "sparseTextureGather"; break; case EOpSparseTextureGatherOffset: out.debug << "sparseTextureGatherOffset"; break; case EOpSparseTextureGatherOffsets: out.debug << "sparseTextureGatherOffsets"; break; case EOpSparseImageLoad: out.debug << "sparseImageLoad"; break; case EOpSparseTextureClamp: out.debug << "sparseTextureClamp"; break; case EOpSparseTextureOffsetClamp: out.debug << "sparseTextureOffsetClamp"; break; case EOpSparseTextureGradClamp: out.debug << "sparseTextureGradClamp"; break; case EOpSparseTextureGradOffsetClamp: out.debug << "sparseTextureGradOffsetClam"; break; case EOpSparseTextureGatherLod: out.debug << "sparseTextureGatherLod"; break; case EOpSparseTextureGatherLodOffset: out.debug << "sparseTextureGatherLodOffset"; break; case EOpSparseTextureGatherLodOffsets: out.debug << "sparseTextureGatherLodOffsets"; break; case EOpSparseImageLoadLod: out.debug << "sparseImageLoadLod"; break; case EOpImageSampleFootprintNV: out.debug << "imageSampleFootprintNV"; break; case EOpImageSampleFootprintClampNV: out.debug << "imageSampleFootprintClampNV"; break; case EOpImageSampleFootprintLodNV: out.debug << "imageSampleFootprintLodNV"; break; case EOpImageSampleFootprintGradNV: out.debug << "imageSampleFootprintGradNV"; break; case EOpImageSampleFootprintGradClampNV: out.debug << "mageSampleFootprintGradClampNV"; break; case EOpAddCarry: out.debug << "addCarry"; break; case EOpSubBorrow: out.debug << "subBorrow"; break; case EOpUMulExtended: out.debug << "uMulExtended"; break; case EOpIMulExtended: out.debug << "iMulExtended"; break; case EOpBitfieldExtract: out.debug << "bitfieldExtract"; break; case EOpBitfieldInsert: out.debug << "bitfieldInsert"; break; case EOpFma: out.debug << "fma"; break; case EOpFrexp: out.debug << "frexp"; break; case EOpLdexp: out.debug << "ldexp"; break; case EOpInterpolateAtSample: out.debug << "interpolateAtSample"; break; case EOpInterpolateAtOffset: out.debug << "interpolateAtOffset"; break; case EOpInterpolateAtVertex: out.debug << "interpolateAtVertex"; break; case EOpSinCos: out.debug << "sincos"; break; case EOpGenMul: out.debug << "mul"; break; case EOpAllMemoryBarrierWithGroupSync: out.debug << "AllMemoryBarrierWithGroupSync"; break; case EOpDeviceMemoryBarrier: out.debug << "DeviceMemoryBarrier"; break; case EOpDeviceMemoryBarrierWithGroupSync: out.debug << "DeviceMemoryBarrierWithGroupSync"; break; case EOpWorkgroupMemoryBarrier: out.debug << "WorkgroupMemoryBarrier"; break; case EOpWorkgroupMemoryBarrierWithGroupSync: out.debug << "WorkgroupMemoryBarrierWithGroupSync"; break; case EOpSubgroupBarrier: out.debug << "subgroupBarrier"; break; case EOpSubgroupMemoryBarrier: out.debug << "subgroupMemoryBarrier"; break; case EOpSubgroupMemoryBarrierBuffer: out.debug << "subgroupMemoryBarrierBuffer"; break; case EOpSubgroupMemoryBarrierImage: out.debug << "subgroupMemoryBarrierImage"; break; case EOpSubgroupMemoryBarrierShared: out.debug << "subgroupMemoryBarrierShared"; break; case EOpSubgroupElect: out.debug << "subgroupElect"; break; case EOpSubgroupAll: out.debug << "subgroupAll"; break; case EOpSubgroupAny: out.debug << "subgroupAny"; break; case EOpSubgroupAllEqual: out.debug << "subgroupAllEqual"; break; case EOpSubgroupBroadcast: out.debug << "subgroupBroadcast"; break; case EOpSubgroupBroadcastFirst: out.debug << "subgroupBroadcastFirst"; break; case EOpSubgroupBallot: out.debug << "subgroupBallot"; break; case EOpSubgroupInverseBallot: out.debug << "subgroupInverseBallot"; break; case EOpSubgroupBallotBitExtract: out.debug << "subgroupBallotBitExtract"; break; case EOpSubgroupBallotBitCount: out.debug << "subgroupBallotBitCount"; break; case EOpSubgroupBallotInclusiveBitCount: out.debug << "subgroupBallotInclusiveBitCount"; break; case EOpSubgroupBallotExclusiveBitCount: out.debug << "subgroupBallotExclusiveBitCount"; break; case EOpSubgroupBallotFindLSB: out.debug << "subgroupBallotFindLSB"; break; case EOpSubgroupBallotFindMSB: out.debug << "subgroupBallotFindMSB"; break; case EOpSubgroupShuffle: out.debug << "subgroupShuffle"; break; case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break; case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break; case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break; case EOpSubgroupRotate: out.debug << "subgroupRotate"; break; case EOpSubgroupClusteredRotate: out.debug << "subgroupClusteredRotate"; break; case EOpSubgroupAdd: out.debug << "subgroupAdd"; break; case EOpSubgroupMul: out.debug << "subgroupMul"; break; case EOpSubgroupMin: out.debug << "subgroupMin"; break; case EOpSubgroupMax: out.debug << "subgroupMax"; break; case EOpSubgroupAnd: out.debug << "subgroupAnd"; break; case EOpSubgroupOr: out.debug << "subgroupOr"; break; case EOpSubgroupXor: out.debug << "subgroupXor"; break; case EOpSubgroupInclusiveAdd: out.debug << "subgroupInclusiveAdd"; break; case EOpSubgroupInclusiveMul: out.debug << "subgroupInclusiveMul"; break; case EOpSubgroupInclusiveMin: out.debug << "subgroupInclusiveMin"; break; case EOpSubgroupInclusiveMax: out.debug << "subgroupInclusiveMax"; break; case EOpSubgroupInclusiveAnd: out.debug << "subgroupInclusiveAnd"; break; case EOpSubgroupInclusiveOr: out.debug << "subgroupInclusiveOr"; break; case EOpSubgroupInclusiveXor: out.debug << "subgroupInclusiveXor"; break; case EOpSubgroupExclusiveAdd: out.debug << "subgroupExclusiveAdd"; break; case EOpSubgroupExclusiveMul: out.debug << "subgroupExclusiveMul"; break; case EOpSubgroupExclusiveMin: out.debug << "subgroupExclusiveMin"; break; case EOpSubgroupExclusiveMax: out.debug << "subgroupExclusiveMax"; break; case EOpSubgroupExclusiveAnd: out.debug << "subgroupExclusiveAnd"; break; case EOpSubgroupExclusiveOr: out.debug << "subgroupExclusiveOr"; break; case EOpSubgroupExclusiveXor: out.debug << "subgroupExclusiveXor"; break; case EOpSubgroupClusteredAdd: out.debug << "subgroupClusteredAdd"; break; case EOpSubgroupClusteredMul: out.debug << "subgroupClusteredMul"; break; case EOpSubgroupClusteredMin: out.debug << "subgroupClusteredMin"; break; case EOpSubgroupClusteredMax: out.debug << "subgroupClusteredMax"; break; case EOpSubgroupClusteredAnd: out.debug << "subgroupClusteredAnd"; break; case EOpSubgroupClusteredOr: out.debug << "subgroupClusteredOr"; break; case EOpSubgroupClusteredXor: out.debug << "subgroupClusteredXor"; break; case EOpSubgroupQuadBroadcast: out.debug << "subgroupQuadBroadcast"; break; case EOpSubgroupQuadSwapHorizontal: out.debug << "subgroupQuadSwapHorizontal"; break; case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break; case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break; case EOpSubgroupQuadAll: out.debug << "subgroupQuadAll"; break; case EOpSubgroupQuadAny: out.debug << "subgroupQuadAny"; break; case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break; case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break; case EOpSubgroupPartitionedMul: out.debug << "subgroupPartitionedMulNV"; break; case EOpSubgroupPartitionedMin: out.debug << "subgroupPartitionedMinNV"; break; case EOpSubgroupPartitionedMax: out.debug << "subgroupPartitionedMaxNV"; break; case EOpSubgroupPartitionedAnd: out.debug << "subgroupPartitionedAndNV"; break; case EOpSubgroupPartitionedOr: out.debug << "subgroupPartitionedOrNV"; break; case EOpSubgroupPartitionedXor: out.debug << "subgroupPartitionedXorNV"; break; case EOpSubgroupPartitionedInclusiveAdd: out.debug << "subgroupPartitionedInclusiveAddNV"; break; case EOpSubgroupPartitionedInclusiveMul: out.debug << "subgroupPartitionedInclusiveMulNV"; break; case EOpSubgroupPartitionedInclusiveMin: out.debug << "subgroupPartitionedInclusiveMinNV"; break; case EOpSubgroupPartitionedInclusiveMax: out.debug << "subgroupPartitionedInclusiveMaxNV"; break; case EOpSubgroupPartitionedInclusiveAnd: out.debug << "subgroupPartitionedInclusiveAndNV"; break; case EOpSubgroupPartitionedInclusiveOr: out.debug << "subgroupPartitionedInclusiveOrNV"; break; case EOpSubgroupPartitionedInclusiveXor: out.debug << "subgroupPartitionedInclusiveXorNV"; break; case EOpSubgroupPartitionedExclusiveAdd: out.debug << "subgroupPartitionedExclusiveAddNV"; break; case EOpSubgroupPartitionedExclusiveMul: out.debug << "subgroupPartitionedExclusiveMulNV"; break; case EOpSubgroupPartitionedExclusiveMin: out.debug << "subgroupPartitionedExclusiveMinNV"; break; case EOpSubgroupPartitionedExclusiveMax: out.debug << "subgroupPartitionedExclusiveMaxNV"; break; case EOpSubgroupPartitionedExclusiveAnd: out.debug << "subgroupPartitionedExclusiveAndNV"; break; case EOpSubgroupPartitionedExclusiveOr: out.debug << "subgroupPartitionedExclusiveOrNV"; break; case EOpSubgroupPartitionedExclusiveXor: out.debug << "subgroupPartitionedExclusiveXorNV"; break; case EOpSubpassLoad: out.debug << "subpassLoad"; break; case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; case EOpColorAttachmentReadEXT: out.debug << "colorAttachmentReadEXT"; break; case EOpTraceNV: out.debug << "traceNV"; break; case EOpTraceRayMotionNV: out.debug << "traceRayMotionNV"; break; case EOpTraceKHR: out.debug << "traceRayKHR"; break; case EOpReportIntersection: out.debug << "reportIntersectionNV"; break; case EOpIgnoreIntersectionNV: out.debug << "ignoreIntersectionNV"; break; case EOpIgnoreIntersectionKHR: out.debug << "ignoreIntersectionKHR"; break; case EOpTerminateRayNV: out.debug << "terminateRayNV"; break; case EOpTerminateRayKHR: out.debug << "terminateRayKHR"; break; 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; case EOpRayQueryGenerateIntersection: out.debug << "rayQueryGenerateIntersectionEXT"; break; case EOpRayQueryConfirmIntersection: out.debug << "rayQueryConfirmIntersectionEXT"; break; case EOpRayQueryProceed: out.debug << "rayQueryProceedEXT"; break; case EOpRayQueryGetIntersectionType: out.debug << "rayQueryGetIntersectionTypeEXT"; break; case EOpRayQueryGetRayTMin: out.debug << "rayQueryGetRayTMinEXT"; break; case EOpRayQueryGetRayFlags: out.debug << "rayQueryGetRayFlagsEXT"; break; case EOpRayQueryGetIntersectionT: out.debug << "rayQueryGetIntersectionTEXT"; break; case EOpRayQueryGetIntersectionInstanceCustomIndex: out.debug << "rayQueryGetIntersectionInstanceCustomIndexEXT"; break; case EOpRayQueryGetIntersectionInstanceId: out.debug << "rayQueryGetIntersectionInstanceIdEXT"; break; case EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: out.debug << "rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT"; break; case EOpRayQueryGetIntersectionGeometryIndex: out.debug << "rayQueryGetIntersectionGeometryIndexEXT"; break; case EOpRayQueryGetIntersectionPrimitiveIndex: out.debug << "rayQueryGetIntersectionPrimitiveIndexEXT"; break; case EOpRayQueryGetIntersectionBarycentrics: out.debug << "rayQueryGetIntersectionBarycentricsEXT"; break; case EOpRayQueryGetIntersectionFrontFace: out.debug << "rayQueryGetIntersectionFrontFaceEXT"; break; case EOpRayQueryGetIntersectionCandidateAABBOpaque: out.debug << "rayQueryGetIntersectionCandidateAABBOpaqueEXT"; break; case EOpRayQueryGetIntersectionObjectRayDirection: out.debug << "rayQueryGetIntersectionObjectRayDirectionEXT"; break; case EOpRayQueryGetIntersectionObjectRayOrigin: out.debug << "rayQueryGetIntersectionObjectRayOriginEXT"; break; case EOpRayQueryGetWorldRayDirection: out.debug << "rayQueryGetWorldRayDirectionEXT"; break; case EOpRayQueryGetWorldRayOrigin: out.debug << "rayQueryGetWorldRayOriginEXT"; break; case EOpRayQueryGetIntersectionObjectToWorld: out.debug << "rayQueryGetIntersectionObjectToWorldEXT"; break; case EOpRayQueryGetIntersectionWorldToObject: out.debug << "rayQueryGetIntersectionWorldToObjectEXT"; break; case EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: out.debug << "rayQueryGetIntersectionTriangleVertexPositionsEXT"; break; case EOpRayQueryGetIntersectionClusterIdNV: out.debug << "rayQueryGetIntersectionClusterIdNV"; break; case EOpRayQueryGetIntersectionSpherePositionNV: out.debug << "rayQueryGetIntersectionSpherePositionNV"; break; case EOpRayQueryGetIntersectionSphereRadiusNV: out.debug << "rayQueryGetIntersectionSphereRadiusNV"; break; case EOpRayQueryGetIntersectionLSSHitValueNV: out.debug << "rayQueryGetIntersectionLSSHitValueNV"; break; case EOpRayQueryGetIntersectionLSSPositionsNV: out.debug << "rayQueryGetIntersectionLSSPositionsNV"; break; case EOpRayQueryGetIntersectionLSSRadiiNV: out.debug << "rayQueryGetIntersectionLSSRadiiNV"; break; case EOpRayQueryIsSphereHitNV: out.debug << "rayQueryIsSphereHitNV"; break; case EOpRayQueryIsLSSHitNV: out.debug << "rayQueryIsLSSHitNV"; break; case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix KHR"; break; case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix KHR"; break; case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices KHR"; break; case EOpCooperativeMatrixLoadNV: out.debug << "Load cooperative matrix NV"; break; case EOpCooperativeMatrixStoreNV: out.debug << "Store cooperative matrix NV"; break; case EOpCooperativeMatrixLoadTensorNV: out.debug << "Load cooperative matrix tensor NV"; break; case EOpCooperativeMatrixStoreTensorNV: out.debug << "Store cooperative matrix tensor NV"; break; case EOpCooperativeMatrixMulAddNV: out.debug << "MulAdd cooperative matrices NV"; break; case EOpCooperativeMatrixReduceNV: out.debug << "Reduce cooperative matrices"; break; case EOpCooperativeMatrixPerElementOpNV: out.debug << "cooperative matrix per element op"; break; case EOpCooperativeMatrixTransposeNV: out.debug << "Transpose cooperative matrix"; break; case EOpCooperativeVectorMatMulNV: out.debug << "Cooperative vector matrix multiply NV"; break; case EOpCooperativeVectorMatMulAddNV: out.debug << "Cooperative vector matrix multiply add NV"; break; case EOpCooperativeVectorLoadNV: out.debug << "Load cooperative vector NV"; break; case EOpCooperativeVectorStoreNV: out.debug << "Store cooperative vector NV"; break; case EOpCooperativeVectorOuterProductAccumulateNV: out.debug << "Cooperative vector outer product accumulate NV"; break; case EOpCooperativeVectorReduceSumAccumulateNV: out.debug << "Cooperative vector reduce sum accumulate NV"; break; case EOpTensorReadARM: out.debug << "Read from tensor"; break; case EOpTensorWriteARM: out.debug << "Write to tensor"; break; case EOpTensorSizeARM: out.debug << "Get tensor size"; break; case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break; case EOpDebugPrintf: out.debug << "Debug printf"; break; case EOpHitObjectTraceRayNV: out.debug << "HitObjectTraceRayNV"; break; case EOpHitObjectTraceRayMotionNV: out.debug << "HitObjectTraceRayMotionNV"; break; case EOpHitObjectRecordHitNV: out.debug << "HitObjectRecordHitNV"; break; case EOpHitObjectRecordHitMotionNV: out.debug << "HitObjectRecordHitMotionNV"; break; case EOpHitObjectRecordHitWithIndexNV: out.debug << "HitObjectRecordHitWithIndexNV"; break; case EOpHitObjectRecordHitWithIndexMotionNV: out.debug << "HitObjectRecordHitWithIndexMotionNV"; break; case EOpHitObjectRecordMissNV: out.debug << "HitObjectRecordMissNV"; break; case EOpHitObjectRecordMissMotionNV: out.debug << "HitObjectRecordMissMotionNV"; break; case EOpHitObjectRecordEmptyNV: out.debug << "HitObjectRecordEmptyNV"; break; case EOpHitObjectExecuteShaderNV: out.debug << "HitObjectExecuteShaderNV"; break; case EOpHitObjectIsEmptyNV: out.debug << "HitObjectIsEmptyNV"; break; case EOpHitObjectIsMissNV: out.debug << "HitObjectIsMissNV"; break; case EOpHitObjectIsHitNV: out.debug << "HitObjectIsHitNV"; break; case EOpHitObjectGetRayTMinNV: out.debug << "HitObjectGetRayTMinNV"; break; case EOpHitObjectGetRayTMaxNV: out.debug << "HitObjectGetRayTMaxNV"; break; case EOpHitObjectGetObjectRayOriginNV: out.debug << "HitObjectGetObjectRayOriginNV"; break; case EOpHitObjectGetObjectRayDirectionNV: out.debug << "HitObjectGetObjectRayDirectionNV"; break; case EOpHitObjectGetWorldRayOriginNV: out.debug << "HitObjectGetWorldRayOriginNV"; break; case EOpHitObjectGetWorldRayDirectionNV: out.debug << "HitObjectGetWorldRayDirectionNV"; break; case EOpHitObjectGetObjectToWorldNV: out.debug << "HitObjectGetObjectToWorldNV"; break; case EOpHitObjectGetWorldToObjectNV: out.debug << "HitObjectGetWorldToObjectNV"; break; case EOpHitObjectGetInstanceCustomIndexNV: out.debug<< "HitObjectGetInstanceCustomIndexNV"; break; case EOpHitObjectGetInstanceIdNV: out.debug << "HitObjectGetInstaneIdNV"; break; case EOpHitObjectGetGeometryIndexNV: out.debug << "HitObjectGetGeometryIndexNV"; break; case EOpHitObjectGetPrimitiveIndexNV: out.debug << "HitObjectGetPrimitiveIndexNV"; break; case EOpHitObjectGetHitKindNV: out.debug << "HitObjectGetHitKindNV"; break; case EOpHitObjectGetAttributesNV: out.debug << "HitObjectGetAttributesNV"; break; case EOpHitObjectGetCurrentTimeNV: out.debug << "HitObjectGetCurrentTimeNV"; break; case EOpHitObjectGetShaderBindingTableRecordIndexNV: out.debug << "HitObjectGetShaderBindingTableRecordIndexNV"; break; case EOpHitObjectGetShaderRecordBufferHandleNV: out.debug << "HitObjectReadShaderRecordBufferHandleNV"; break; case EOpHitObjectGetClusterIdNV: out.debug << "HitObjectGetClusterIdNV"; break; case EOpReorderThreadNV: out.debug << "ReorderThreadNV"; break; case EOpFetchMicroTriangleVertexPositionNV: out.debug << "MicroTriangleVertexPositionNV"; break; case EOpFetchMicroTriangleVertexBarycentricNV: out.debug << "MicroTriangleVertexBarycentricNV"; break; case EOpHitObjectGetSpherePositionNV: out.debug << "HitObjectGetSpherePositionNV"; break; case EOpHitObjectGetSphereRadiusNV: out.debug << "HitObjectGetSphereRadiusNV"; break; case EOpHitObjectGetLSSPositionsNV: out.debug << "HitObjectGetLSSPositionsNV"; break; case EOpHitObjectGetLSSRadiiNV: out.debug << "HitObjectGetLSSRadiiNV"; break; case EOpHitObjectIsSphereHitNV: out.debug << "HitObjectIsSphereHitNV"; break; case EOpHitObjectIsLSSHitNV: out.debug << "HitObjectIsLSSHitNV"; break; case EOpSpirvInst: out.debug << "spirv_instruction"; break; case EOpStencilAttachmentReadEXT: out.debug << "stencilAttachmentReadEXT"; break; case EOpDepthAttachmentReadEXT: out.debug << "depthAttachmentReadEXT"; break; case EOpCreateTensorLayoutNV: out.debug << "createTensorLayout"; break; case EOpTensorLayoutSetBlockSizeNV: out.debug << "setBlockSize"; break; case EOpTensorLayoutSetDimensionNV: out.debug << "setDimension"; break; case EOpTensorLayoutSetStrideNV: out.debug << "setStride"; break; case EOpTensorLayoutSliceNV: out.debug << "slice"; break; case EOpTensorLayoutSetClampValueNV: out.debug << "setClampValue"; break; case EOpCreateTensorViewNV: out.debug << "createTensorView"; break; case EOpTensorViewSetDimensionNV: out.debug << "setTensorViewDimensions"; break; case EOpTensorViewSetStrideNV: out.debug << "setTensorViewStride"; break; case EOpTensorViewSetClipNV: out.debug << "clipTensorView"; break; default: out.debug.message(EPrefixError, "Bad aggregation op"); } if (node->getOp() != EOpSequence && node->getOp() != EOpScope && node->getOp() != EOpParameters) out.debug << " (" << node->getCompleteString() << ")"; out.debug << "\n"; return true; } bool TOutputTraverser::visitSelection(TVisit /* visit */, TIntermSelection* node) { TInfoSink& out = infoSink; OutputTreeText(out, node, depth); out.debug << "Test condition and select"; out.debug << " (" << node->getCompleteString() << ")"; if (node->getShortCircuit() == false) out.debug << ": no shortcircuit"; if (node->getFlatten()) out.debug << ": Flatten"; if (node->getDontFlatten()) out.debug << ": DontFlatten"; out.debug << "\n"; ++depth; OutputTreeText(out, node, depth); out.debug << "Condition\n"; node->getCondition()->traverse(this); OutputTreeText(out, node, depth); if (node->getTrueBlock()) { out.debug << "true case\n"; node->getTrueBlock()->traverse(this); } else out.debug << "true case is null\n"; if (node->getFalseBlock()) { OutputTreeText(out, node, depth); out.debug << "false case\n"; node->getFalseBlock()->traverse(this); } --depth; return false; } // Print infinities and NaNs, and numbers in a portable way. // Goals: // - portable (across IEEE 754 platforms) // - shows all possible IEEE values // - shows simple numbers in a simple way, e.g., no leading/trailing 0s // - shows all digits, no premature rounding static void OutputDouble(TInfoSink& out, double value, TOutputTraverser::EExtraOutput extra) { if (std::isinf(value)) { if (value < 0) out.debug << "-1.#INF"; else out.debug << "+1.#INF"; } else if (std::isnan(value)) out.debug << "1.#IND"; else { const int maxSize = 340; char buf[maxSize]; const char* format = "%f"; if (fabs(value) > 0.0 && (fabs(value) < 1e-5 || fabs(value) > 1e12)) format = "%-.13e"; int len = snprintf(buf, maxSize, format, value); assert(len < maxSize); // remove a leading zero in the 100s slot in exponent; it is not portable // pattern: XX...XXXe+0XX or XX...XXXe-0XX if (len > 5) { if (buf[len-5] == 'e' && (buf[len-4] == '+' || buf[len-4] == '-') && buf[len-3] == '0') { buf[len-3] = buf[len-2]; buf[len-2] = buf[len-1]; buf[len-1] = '\0'; } } out.debug << buf; switch (extra) { case TOutputTraverser::BinaryDoubleOutput: { uint64_t b; static_assert(sizeof(b) == sizeof(value), "sizeof(uint64_t) != sizeof(double)"); memcpy(&b, &value, sizeof(b)); out.debug << " : "; for (size_t i = 0; i < 8 * sizeof(value); ++i, ++b) { out.debug << ((b & 0x8000000000000000) != 0 ? "1" : "0"); b <<= 1; } break; } default: break; } } } static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const TConstUnionArray& constUnion, TOutputTraverser::EExtraOutput extra, int depth) { int size = node->getType().computeNumComponents(); for (int i = 0; i < size; i++) { OutputTreeText(out, node, depth); switch (constUnion[i].getType()) { case EbtBool: if (constUnion[i].getBConst()) out.debug << "true"; else out.debug << "false"; out.debug << " (" << "const bool" << ")"; out.debug << "\n"; break; case EbtFloat: case EbtDouble: case EbtFloat16: case EbtBFloat16: case EbtFloatE5M2: case EbtFloatE4M3: OutputDouble(out, constUnion[i].getDConst(), extra); out.debug << "\n"; break; case EbtInt8: { const int maxSize = 300; char buf[maxSize]; snprintf(buf, maxSize, "%d (%s)", constUnion[i].getI8Const(), "const int8_t"); out.debug << buf << "\n"; } break; case EbtUint8: { const int maxSize = 300; char buf[maxSize]; snprintf(buf, maxSize, "%u (%s)", constUnion[i].getU8Const(), "const uint8_t"); out.debug << buf << "\n"; } break; case EbtInt16: { const int maxSize = 300; char buf[maxSize]; snprintf(buf, maxSize, "%d (%s)", constUnion[i].getI16Const(), "const int16_t"); out.debug << buf << "\n"; } break; case EbtUint16: { const int maxSize = 300; char buf[maxSize]; snprintf(buf, maxSize, "%u (%s)", constUnion[i].getU16Const(), "const uint16_t"); out.debug << buf << "\n"; } break; case EbtInt: { const int maxSize = 300; char buf[maxSize]; snprintf(buf, maxSize, "%d (%s)", constUnion[i].getIConst(), "const int"); out.debug << buf << "\n"; } break; case EbtUint: { const int maxSize = 300; char buf[maxSize]; snprintf(buf, maxSize, "%u (%s)", constUnion[i].getUConst(), "const uint"); out.debug << buf << "\n"; } break; case EbtInt64: { const int maxSize = 300; char buf[maxSize]; snprintf(buf, maxSize, "%lld (%s)", constUnion[i].getI64Const(), "const int64_t"); out.debug << buf << "\n"; } break; case EbtUint64: { const int maxSize = 300; char buf[maxSize]; snprintf(buf, maxSize, "%llu (%s)", constUnion[i].getU64Const(), "const uint64_t"); out.debug << buf << "\n"; } break; case EbtString: out.debug << "\"" << constUnion[i].getSConst()->c_str() << "\"\n"; break; default: out.info.message(EPrefixInternalError, "Unknown constant", node->getLoc()); break; } } } void TOutputTraverser::visitConstantUnion(TIntermConstantUnion* node) { OutputTreeText(infoSink, node, depth); infoSink.debug << "Constant:\n"; OutputConstantUnion(infoSink, node, node->getConstArray(), extraOutput, depth + 1); } void TOutputTraverser::visitSymbol(TIntermSymbol* node) { OutputTreeText(infoSink, node, depth); infoSink.debug << "'" << node->getName() << "' (" << node->getCompleteString() << ")\n"; if (! node->getConstArray().empty()) OutputConstantUnion(infoSink, node, node->getConstArray(), extraOutput, depth + 1); else if (node->getConstSubtree()) { incrementDepth(node); node->getConstSubtree()->traverse(this); decrementDepth(); } } bool TOutputTraverser::visitLoop(TVisit /* visit */, TIntermLoop* node) { TInfoSink& out = infoSink; OutputTreeText(out, node, depth); out.debug << "Loop with condition "; if (! node->testFirst()) out.debug << "not "; out.debug << "tested first"; if (node->getUnroll()) out.debug << ": Unroll"; if (node->getDontUnroll()) out.debug << ": DontUnroll"; if (node->getLoopDependency()) { out.debug << ": Dependency "; out.debug << node->getLoopDependency(); } out.debug << "\n"; ++depth; OutputTreeText(infoSink, node, depth); if (node->getTest()) { out.debug << "Loop Condition\n"; node->getTest()->traverse(this); } else out.debug << "No loop condition\n"; OutputTreeText(infoSink, node, depth); if (node->getBody()) { out.debug << "Loop Body\n"; node->getBody()->traverse(this); } else out.debug << "No loop body\n"; if (node->getTerminal()) { OutputTreeText(infoSink, node, depth); out.debug << "Loop Terminal Expression\n"; node->getTerminal()->traverse(this); } --depth; return false; } bool TOutputTraverser::visitBranch(TVisit /* visit*/, TIntermBranch* node) { TInfoSink& out = infoSink; OutputTreeText(out, node, depth); switch (node->getFlowOp()) { case EOpKill: out.debug << "Branch: Kill"; break; case EOpTerminateInvocation: out.debug << "Branch: TerminateInvocation"; break; case EOpIgnoreIntersectionKHR: out.debug << "Branch: IgnoreIntersectionKHR"; break; case EOpTerminateRayKHR: out.debug << "Branch: TerminateRayKHR"; break; case EOpBreak: out.debug << "Branch: Break"; break; case EOpContinue: out.debug << "Branch: Continue"; break; case EOpReturn: out.debug << "Branch: Return"; break; case EOpCase: out.debug << "case: "; break; case EOpDemote: out.debug << "Demote"; break; case EOpDefault: out.debug << "default: "; break; default: out.debug << "Branch: Unknown Branch"; break; } if (node->getExpression()) { out.debug << " with expression\n"; ++depth; node->getExpression()->traverse(this); --depth; } else out.debug << "\n"; return false; } bool TOutputTraverser::visitSwitch(TVisit /* visit */, TIntermSwitch* node) { TInfoSink& out = infoSink; OutputTreeText(out, node, depth); out.debug << "switch"; if (node->getFlatten()) out.debug << ": Flatten"; if (node->getDontFlatten()) out.debug << ": DontFlatten"; out.debug << "\n"; OutputTreeText(out, node, depth); out.debug << "condition\n"; ++depth; node->getCondition()->traverse(this); --depth; OutputTreeText(out, node, depth); out.debug << "body\n"; ++depth; node->getBody()->traverse(this); --depth; return false; } // // This function is the one to call externally to start the traversal. // Individual functions can be initialized to 0 to skip processing of that // type of node. It's children will still be processed. // void TIntermediate::output(TInfoSink& infoSink, bool tree) { infoSink.debug << "Shader version: " << version << "\n"; if (requestedExtensions.size() > 0) { for (auto extIt = requestedExtensions.begin(); extIt != requestedExtensions.end(); ++extIt) infoSink.debug << "Requested " << *extIt << "\n"; } if (xfbMode) infoSink.debug << "in xfb mode\n"; if (getSubgroupUniformControlFlow()) infoSink.debug << "subgroup_uniform_control_flow\n"; if (getMaximallyReconverges()) infoSink.debug << "maximally_reconverges\n"; switch (language) { case EShLangVertex: break; case EShLangTessControl: infoSink.debug << "vertices = " << vertices << "\n"; if (inputPrimitive != ElgNone) infoSink.debug << "input primitive = " << TQualifier::getGeometryString(inputPrimitive) << "\n"; if (vertexSpacing != EvsNone) infoSink.debug << "vertex spacing = " << TQualifier::getVertexSpacingString(vertexSpacing) << "\n"; if (vertexOrder != EvoNone) infoSink.debug << "triangle order = " << TQualifier::getVertexOrderString(vertexOrder) << "\n"; break; case EShLangTessEvaluation: infoSink.debug << "input primitive = " << TQualifier::getGeometryString(inputPrimitive) << "\n"; infoSink.debug << "vertex spacing = " << TQualifier::getVertexSpacingString(vertexSpacing) << "\n"; infoSink.debug << "triangle order = " << TQualifier::getVertexOrderString(vertexOrder) << "\n"; if (pointMode) infoSink.debug << "using point mode\n"; break; case EShLangGeometry: infoSink.debug << "invocations = " << invocations << "\n"; infoSink.debug << "max_vertices = " << vertices << "\n"; infoSink.debug << "input primitive = " << TQualifier::getGeometryString(inputPrimitive) << "\n"; infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n"; break; case EShLangFragment: if (pixelCenterInteger) infoSink.debug << "gl_FragCoord pixel center is integer\n"; if (originUpperLeft) infoSink.debug << "gl_FragCoord origin is upper left\n"; if (earlyFragmentTests) infoSink.debug << "using early_fragment_tests\n"; if (postDepthCoverage) infoSink.debug << "using post_depth_coverage\n"; if (nonCoherentColorAttachmentReadEXT) infoSink.debug << "using non_coherent_color_attachment_readEXT\n"; if (nonCoherentDepthAttachmentReadEXT) infoSink.debug << "using non_coherent_depth_attachment_readEXT\n"; if (nonCoherentStencilAttachmentReadEXT) infoSink.debug << "using non_coherent_stencil_attachment_readEXT\n"; if (nonCoherentTileAttachmentReadQCOM) infoSink.debug << "using non_coherent_attachment_readQCOM\n"; if (depthLayout != EldNone) infoSink.debug << "using " << TQualifier::getLayoutDepthString(depthLayout) << "\n"; if (blendEquations != 0) { infoSink.debug << "using"; // blendEquations is a mask, decode it for (TBlendEquationShift be = (TBlendEquationShift)0; be < EBlendCount; be = (TBlendEquationShift)(be + 1)) { if (blendEquations & (1 << be)) infoSink.debug << " " << TQualifier::getBlendEquationString(be); } infoSink.debug << "\n"; } if (interlockOrdering != EioNone) infoSink.debug << "interlock ordering = " << TQualifier::getInterlockOrderingString(interlockOrdering) << "\n"; break; case EShLangMesh: infoSink.debug << "max_vertices = " << vertices << "\n"; infoSink.debug << "max_primitives = " << primitives << "\n"; infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n"; [[fallthrough]]; case EShLangTask: // Fall through case EShLangCompute: infoSink.debug << "local_size = (" << localSize[0] << ", " << localSize[1] << ", " << localSize[2] << ")\n"; { if (localSizeSpecId[0] != TQualifier::layoutNotSet || localSizeSpecId[1] != TQualifier::layoutNotSet || localSizeSpecId[2] != TQualifier::layoutNotSet) { infoSink.debug << "local_size ids = (" << localSizeSpecId[0] << ", " << localSizeSpecId[1] << ", " << localSizeSpecId[2] << ")\n"; } } if (nonCoherentTileAttachmentReadQCOM) infoSink.debug << "using non_coherent_attachment_readQCOM\n"; if (isTileShadingRateQCOMSet()) { infoSink.debug << "shading_rateQCOM = (" << tileShadingRateQCOM[0] << ", " << tileShadingRateQCOM[1] << ", " << tileShadingRateQCOM[2] << ")\n"; } break; default: break; } if (treeRoot == nullptr || ! tree) return; TOutputTraverser it(infoSink); if (getBinaryDoubleOutput()) it.setDoubleOutput(TOutputTraverser::BinaryDoubleOutput); treeRoot->traverse(&it); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/iomapper.cpp000066400000000000000000002364361506534232700227430ustar00rootroot00000000000000// // Copyright (C) 2016-2017 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "../Include/Common.h" #include "../Include/InfoSink.h" #include "../Include/Types.h" #include "gl_types.h" #include "iomapper.h" #include "LiveTraverser.h" #include "SymbolTable.h" // // Map IO bindings. // // High-level algorithm for one stage: // // 1. Traverse all code (live+dead) to find the explicitly provided bindings. // // 2. Traverse (just) the live code to determine which non-provided bindings // require auto-numbering. We do not auto-number dead ones. // // 3. Traverse all the code to apply the bindings: // a. explicitly given bindings are offset according to their type // b. implicit live bindings are auto-numbered into the holes, using // any open binding slot. // c. implicit dead bindings are left un-bound. // namespace glslang { struct TVarEntryInfo { long long id; TIntermSymbol* symbol; bool live; TLayoutPacking upgradedToPushConstantPacking; // ElpNone means it hasn't been upgraded int newBinding; int newSet; int newLocation; int newComponent; int newIndex; EShLanguage stage; void clearNewAssignments() { upgradedToPushConstantPacking = ElpNone; 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; } }; struct TOrderByPriority { // ordering: // 1) has both binding and set // 2) has binding but no set // 3) has no binding but set // 4) has no binding and no set inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { const TQualifier& lq = l.symbol->getQualifier(); const TQualifier& rq = r.symbol->getQualifier(); // simple rules: // has binding gives 2 points // has set gives 1 point // who has the most points is more important. int lPoints = (lq.hasBinding() ? 2 : 0) + (lq.hasSet() ? 1 : 0); int rPoints = (rq.hasBinding() ? 2 : 0) + (rq.hasSet() ? 1 : 0); if (lPoints == rPoints) return l.id < r.id; return lPoints > rPoints; } }; struct TOrderByPriorityAndLive { // ordering: // 1) do live variables first // 2) has both binding and set // 3) has binding but no set // 4) has no binding but set // 5) has no binding and no set inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { const TQualifier& lq = l.symbol->getQualifier(); const TQualifier& rq = r.symbol->getQualifier(); // simple rules: // has binding gives 2 points // has set gives 1 point // who has the most points is more important. int lPoints = (lq.hasBinding() ? 2 : 0) + (lq.hasSet() ? 1 : 0); int rPoints = (rq.hasBinding() ? 2 : 0) + (rq.hasSet() ? 1 : 0); if (l.live != r.live) return l.live > r.live; if (lPoints != rPoints) return lPoints > rPoints; return l.id < r.id; } }; }; // override function "operator=", if a vector being sort, // when use vc++, the sort function will call : // pair& operator=(const pair<_Other1, _Other2>& _Right) // { // first = _Right.first; // second = _Right.second; // return (*this); // } // that will make a const type handing on left. // override this function can avoid a compiler error. // In the future, if the vc++ compiler can handle such a situation, // this part of the code will be removed. struct TVarLivePair : std::pair { TVarLivePair(const std::pair& _Right) : pair(_Right.first, _Right.second) {} TVarLivePair& operator=(const TVarLivePair& _Right) { const_cast(first) = _Right.first; second = _Right.second; return (*this); } TVarLivePair(const TVarLivePair& src) : pair(src) { } }; typedef std::vector TVarLiveVector; class TVarGatherTraverser : public TLiveTraverser { public: TVarGatherTraverser(const TIntermediate& i, bool traverseDeadCode, TVarLiveMap& inList, TVarLiveMap& outList, TVarLiveMap& uniformList) : TLiveTraverser(i, traverseDeadCode, true, true, false) , inputList(inList) , outputList(outList) , uniformList(uniformList) { } virtual void visitSymbol(TIntermSymbol* base) { TVarLiveMap* target = nullptr; if (base->getQualifier().storage == EvqVaryingIn) target = &inputList; else if (base->getQualifier().storage == EvqVaryingOut) target = &outputList; else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant() && !base->getQualifier().isShaderRecord()) target = &uniformList; // If a global is being visited, then we should also traverse it incase it's evaluation // ends up visiting inputs we want to tag as live else if (base->getQualifier().storage == EvqGlobal) addGlobalReference(base->getAccessName()); if (target) { TVarEntryInfo ent = {base->getId(), base, ! traverseAll, {}, {}, {}, {}, {}, {}, {}}; ent.stage = intermediate.getStage(); TVarLiveMap::iterator at = target->find( ent.symbol->getAccessName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById()); if (at != target->end() && at->second.id == ent.id) at->second.live = at->second.live || ! traverseAll; // update live state else (*target)[ent.symbol->getAccessName()] = ent; } } private: TVarLiveMap& inputList; TVarLiveMap& outputList; TVarLiveMap& uniformList; }; class TVarSetTraverser : public TLiveTraverser { public: TVarSetTraverser(const TIntermediate& i, const TVarLiveMap& inList, const TVarLiveMap& outList, const TVarLiveMap& uniformList) : TLiveTraverser(i, true, true, true, false) , inputList(inList) , outputList(outList) , uniformList(uniformList) { } virtual void visitSymbol(TIntermSymbol* base) { const TVarLiveMap* source; if (base->getQualifier().storage == EvqVaryingIn) source = &inputList; else if (base->getQualifier().storage == EvqVaryingOut) source = &outputList; else if (base->getQualifier().isUniformOrBuffer()) source = &uniformList; else return; TVarEntryInfo ent = { base->getId(), {}, {}, {}, {}, {}, {}, {}, {}, {} }; // Fix a defect, when block has no instance name, we need to find its block name TVarLiveMap::const_iterator at = source->find(base->getAccessName()); if (at == source->end()) return; if (at->second.id != ent.id) return; if (at->second.newBinding != -1) base->getWritableType().getQualifier().layoutBinding = at->second.newBinding; if (at->second.newSet != -1) base->getWritableType().getQualifier().layoutSet = at->second.newSet; if (at->second.newLocation != -1) base->getWritableType().getQualifier().layoutLocation = at->second.newLocation; if (at->second.newComponent != -1) base->getWritableType().getQualifier().layoutComponent = at->second.newComponent; if (at->second.newIndex != -1) base->getWritableType().getQualifier().layoutIndex = at->second.newIndex; if (at->second.upgradedToPushConstantPacking != ElpNone) { base->getWritableType().getQualifier().layoutPushConstant = true; base->getWritableType().getQualifier().setBlockStorage(EbsPushConstant); base->getWritableType().getQualifier().layoutPacking = at->second.upgradedToPushConstantPacking; } } private: const TVarLiveMap& inputList; const TVarLiveMap& outputList; const TVarLiveMap& uniformList; }; struct TNotifyUniformAdaptor { EShLanguage stage; TIoMapResolver& resolver; inline TNotifyUniformAdaptor(EShLanguage s, TIoMapResolver& r) : stage(s) , resolver(r) { } inline void operator()(std::pair& entKey) { resolver.notifyBinding(stage, entKey.second); } private: TNotifyUniformAdaptor& operator=(TNotifyUniformAdaptor&) = delete; }; struct TNotifyInOutAdaptor { EShLanguage stage; TIoMapResolver& resolver; inline TNotifyInOutAdaptor(EShLanguage s, TIoMapResolver& r) : stage(s) , resolver(r) { } inline void operator()(std::pair& entKey) { resolver.notifyInOut(entKey.second.stage, entKey.second); } private: TNotifyInOutAdaptor& operator=(TNotifyInOutAdaptor&) = delete; }; struct TResolverUniformAdaptor { TResolverUniformAdaptor(EShLanguage s, TIoMapResolver& r, TVarLiveMap* uniform[EShLangCount], TInfoSink& i, bool& e) : stage(s) , resolver(r) , infoSink(i) , error(e) { memcpy(uniformVarMap, uniform, EShLangCount * (sizeof(TVarLiveMap*))); } inline void operator()(std::pair& entKey) { TVarEntryInfo& ent = entKey.second; ent.clearNewAssignments(); const bool isValid = resolver.validateBinding(stage, ent); if (isValid) { resolver.resolveSet(ent.stage, ent); resolver.resolveBinding(ent.stage, ent); resolver.resolveUniformLocation(ent.stage, ent); if (ent.newBinding != -1) { if (ent.newBinding >= int(TQualifier::layoutBindingEnd)) { TString err = "mapped binding out of range: " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); error = true; } if (ent.symbol->getQualifier().hasBinding()) { for (uint32_t idx = EShLangVertex; idx < EShLangCount; ++idx) { if (idx == ent.stage || uniformVarMap[idx] == nullptr) continue; auto entKey2 = uniformVarMap[idx]->find(entKey.first); if (entKey2 != uniformVarMap[idx]->end()) { entKey2->second.newBinding = ent.newBinding; } } } } if (ent.newSet != -1) { if (ent.newSet >= int(TQualifier::layoutSetEnd)) { TString err = "mapped set out of range: " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); error = true; } if (ent.symbol->getQualifier().hasSet()) { for (uint32_t idx = EShLangVertex; idx < EShLangCount; ++idx) { if ((idx == stage) || (uniformVarMap[idx] == nullptr)) continue; auto entKey2 = uniformVarMap[idx]->find(entKey.first); if (entKey2 != uniformVarMap[idx]->end()) { entKey2->second.newSet = ent.newSet; } } } } } else { TString errorMsg = "Invalid binding: " + entKey.first; infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); error = true; } } inline void setStage(EShLanguage s) { stage = s; } EShLanguage stage; TIoMapResolver& resolver; TInfoSink& infoSink; bool& error; TVarLiveMap* uniformVarMap[EShLangCount]; private: TResolverUniformAdaptor& operator=(TResolverUniformAdaptor&) = delete; }; struct TResolverInOutAdaptor { TResolverInOutAdaptor(EShLanguage s, TIoMapResolver& r, TInfoSink& i, bool& e) : stage(s) , resolver(r) , infoSink(i) , error(e) { } inline void operator()(std::pair& entKey) { TVarEntryInfo& ent = entKey.second; ent.clearNewAssignments(); const bool isValid = resolver.validateInOut(ent.stage, ent); if (isValid) { resolver.resolveInOutLocation(stage, ent); resolver.resolveInOutComponent(stage, ent); resolver.resolveInOutIndex(stage, ent); } else { TString errorMsg; if (ent.symbol->getType().getQualifier().semanticName != nullptr) { errorMsg = "Invalid shader In/Out variable semantic: "; errorMsg += ent.symbol->getType().getQualifier().semanticName; } else { errorMsg = "Invalid shader In/Out variable: "; errorMsg += ent.symbol->getName(); } infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); error = true; } } inline void setStage(EShLanguage s) { stage = s; } EShLanguage stage; TIoMapResolver& resolver; TInfoSink& infoSink; bool& error; private: TResolverInOutAdaptor& operator=(TResolverInOutAdaptor&) = delete; }; // The class is used for reserving explicit uniform locations and ubo/ssbo/opaque bindings // xxTODO: maybe this logic should be moved into the resolver's "validateInOut" and "validateUniform" struct TSymbolValidater { TSymbolValidater(TIoMapResolver& r, TInfoSink& i, TVarLiveMap* in[EShLangCount], TVarLiveMap* out[EShLangCount], TVarLiveMap* uniform[EShLangCount], bool& hadError, EProfile profile, int version) : resolver(r) , infoSink(i) , hadError(hadError) , profile(profile) , version(version) { memcpy(inVarMaps, in, EShLangCount * (sizeof(TVarLiveMap*))); memcpy(outVarMaps, out, EShLangCount * (sizeof(TVarLiveMap*))); memcpy(uniformVarMap, uniform, EShLangCount * (sizeof(TVarLiveMap*))); std::map anonymousMemberMap; std::vector usedUniformLocation; std::vector usedUniformName; usedUniformLocation.clear(); usedUniformName.clear(); for (int i = 0; i < EShLangCount; i++) { if (uniformVarMap[i]) { for (auto uniformVar : *uniformVarMap[i]) { TIntermSymbol* pSymbol = uniformVar.second.symbol; TQualifier qualifier = uniformVar.second.symbol->getQualifier(); TString symbolName = pSymbol->getAccessName(); // All the uniform needs multi-stage location check (block/default) int uniformLocation = qualifier.layoutLocation; if (uniformLocation != TQualifier::layoutLocationEnd) { // Total size of current uniform, could be block, struct or other types. int size = TIntermediate::computeTypeUniformLocationSize(pSymbol->getType()); TRange locationRange(uniformLocation, uniformLocation + size - 1); // Combine location and component ranges int overlapLocation = -1; bool diffLocation = false; // Check for collisions, except for vertex inputs on desktop targeting OpenGL overlapLocation = checkLocationOverlap(locationRange, usedUniformLocation, symbolName, usedUniformName, diffLocation); // Overlap locations of uniforms, regardless of components (multi stages) if (overlapLocation == -1) { usedUniformLocation.push_back(locationRange); usedUniformName.push_back(symbolName); } else if (overlapLocation >= 0) { if (diffLocation == true) { TString err = ("Uniform location should be equal for same uniforms: " +std::to_string(overlapLocation)).c_str(); infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; break; } else { TString err = ("Uniform location overlaps across stages: " + std::to_string(overlapLocation)).c_str(); infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; break; } } } if ((uniformVar.second.symbol->getBasicType() == EbtBlock) && IsAnonymous(uniformVar.second.symbol->getName())) { auto blockType = uniformVar.second.symbol->getType().getStruct(); for (size_t memberIdx = 0; memberIdx < blockType->size(); ++memberIdx) { auto memberName = (*blockType)[memberIdx].type->getFieldName(); if (anonymousMemberMap.find(memberName) != anonymousMemberMap.end()) { if (anonymousMemberMap[memberName] != uniformVar.second.symbol->getType().getTypeName()) { TString err = "Invalid block member name: " + memberName; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; break; } } else { anonymousMemberMap[memberName] = uniformVar.second.symbol->getType().getTypeName(); } } } if (hadError) break; } } } } // In case we need to new an intermediate, which costs too much int checkLocationOverlap(const TRange& locationRange, std::vector& usedUniformLocation, const TString symbolName, std::vector& usedUniformName, bool& diffLocation) { for (size_t r = 0; r < usedUniformLocation.size(); ++r) { if (usedUniformName[r] == symbolName) { diffLocation = true; return (usedUniformLocation[r].start == locationRange.start && usedUniformLocation[r].last == locationRange.last) ? -2 : std::max(locationRange.start, usedUniformLocation[r].start); } if (locationRange.overlap(usedUniformLocation[r])) { // there is a collision; pick one return std::max(locationRange.start, usedUniformLocation[r].start); } } return -1; // no collision } inline void operator()(std::pair& entKey) { TVarEntryInfo& ent1 = entKey.second; TIntermSymbol* base = ent1.symbol; const TType& type = ent1.symbol->getType(); const TString& name = entKey.first; TString mangleName1, mangleName2; EShLanguage stage = ent1.stage; EShLanguage preStage, currentStage, nextStage; preStage = EShLangCount; for (int i = stage - 1; i >= 0; i--) { if (inVarMaps[i] != nullptr) { preStage = static_cast(i); break; } } currentStage = stage; nextStage = EShLangCount; for (int i = stage + 1; i < EShLangCount; i++) { if (inVarMaps[i] != nullptr) { nextStage = static_cast(i); break; } } if (type.getQualifier().isArrayedIo(stage)) { TType subType(type, 0); subType.appendMangledName(mangleName1); } else { type.appendMangledName(mangleName1); } // basic checking that symbols match // more extensive checking in the link stage if (base->getQualifier().storage == EvqVaryingIn) { // validate stage in; if (preStage == EShLangCount) return; if (TSymbolTable::isBuiltInSymbol(base->getId())) return; if (outVarMaps[preStage] != nullptr) { auto ent2 = outVarMaps[preStage]->find(name); uint32_t location = base->getType().getQualifier().layoutLocation; if (ent2 == outVarMaps[preStage]->end() && location != glslang::TQualifier::layoutLocationEnd) { for (auto var = outVarMaps[preStage]->begin(); var != ent2; var++) { if (var->second.symbol->getType().getQualifier().layoutLocation == location) { ent2 = var; break; } } } if (ent2 != outVarMaps[preStage]->end()) { auto& type1 = base->getType(); auto& type2 = ent2->second.symbol->getType(); hadError = hadError || typeCheck(&type1, &type2, name.c_str(), false); if (ent2->second.symbol->getType().getQualifier().isArrayedIo(preStage)) { TType subType(ent2->second.symbol->getType(), 0); subType.appendMangledName(mangleName2); } else { ent2->second.symbol->getType().appendMangledName(mangleName2); } if (mangleName1 == mangleName2) { // For ES 3.0 only, other versions have no such restrictions // According to ES 3.0 spec: The type and presence of the interpolation qualifiers and // storage qualifiers of variables with the same name declared in all linked shaders must // match, otherwise the link command will fail. if (profile == EEsProfile && version == 300) { // Don't need to check smooth qualifier, as it uses the default interpolation mode if (ent1.stage == EShLangFragment && type1.isBuiltIn() == false) { if (type1.getQualifier().flat != type2.getQualifier().flat || type1.getQualifier().nopersp != type2.getQualifier().nopersp) { TString err = "Interpolation qualifier mismatch : " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; } } } 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; } } else if (!base->getType().isBuiltIn()) { // According to spec: A link error is generated if any statically referenced input variable // or block does not have a matching output if (profile == EEsProfile && ent1.live) { hadError = true; TString errorStr = name + ": not been declare as a output variable in pre shader stage."; infoSink.info.message(EPrefixError, errorStr.c_str()); } } return; } } else if (base->getQualifier().storage == EvqVaryingOut) { // validate stage out; if (nextStage == EShLangCount) return; if (TSymbolTable::isBuiltInSymbol(base->getId())) return; if (inVarMaps[nextStage] != nullptr) { auto ent2 = inVarMaps[nextStage]->find(name); if (ent2 != inVarMaps[nextStage]->end()) { if (ent2->second.symbol->getType().getQualifier().isArrayedIo(nextStage)) { TType subType(ent2->second.symbol->getType(), 0); subType.appendMangledName(mangleName2); } else { ent2->second.symbol->getType().appendMangledName(mangleName2); } if (mangleName1 == mangleName2) return; else { TString err = "Invalid In/Out variable type : " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; } } return; } } else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant()) { // validate uniform type; for (int i = 0; i < EShLangCount; i++) { if (i != currentStage && outVarMaps[i] != nullptr) { auto ent2 = uniformVarMap[i]->find(name); if (ent2 != uniformVarMap[i]->end()) { ent2->second.symbol->getType().appendMangledName(mangleName2); if (mangleName1 != mangleName2) { ent2->second.symbol->getType().sameElementType(type); TString err = "Invalid Uniform variable type : " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; } mangleName2.clear(); // validate instance name of blocks if (hadError == false && base->getType().getBasicType() == EbtBlock && IsAnonymous(base->getName()) != IsAnonymous(ent2->second.symbol->getName())) { TString err = "Matched uniform block names must also either all be lacking " "an instance name or all having an instance name: " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; } // validate uniform block member qualifier and member names auto& type1 = base->getType(); auto& type2 = ent2->second.symbol->getType(); if (hadError == false && base->getType().getBasicType() == EbtBlock) { hadError = hadError || typeCheck(&type1, &type2, name.c_str(), true); } else { hadError = hadError || typeCheck(&type1, &type2, name.c_str(), false); } } else if (base->getBasicType() == EbtBlock) { if (IsAnonymous(base->getName())) { // The name of anonymous block member can't same with default uniform variable. auto blockType1 = base->getType().getStruct(); for (size_t memberIdx = 0; memberIdx < blockType1->size(); ++memberIdx) { auto memberName = (*blockType1)[memberIdx].type->getFieldName(); if (uniformVarMap[i]->find(memberName) != uniformVarMap[i]->end()) { TString err = "Invalid Uniform variable name : " + memberName; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; break; } } } } } } } } TVarLiveMap *inVarMaps[EShLangCount], *outVarMaps[EShLangCount], *uniformVarMap[EShLangCount]; // Use for mark current shader stage for resolver TIoMapResolver& resolver; TInfoSink& infoSink; bool& hadError; EProfile profile; int version; private: TSymbolValidater& operator=(TSymbolValidater&) = delete; bool qualifierCheck(const TType* const type1, const TType* const type2, const std::string& name, bool isBlock) { bool hasError = false; const TQualifier& qualifier1 = type1->getQualifier(); const TQualifier& qualifier2 = type2->getQualifier(); if (((isBlock == false) && (type1->getQualifier().storage == EvqUniform && type2->getQualifier().storage == EvqUniform)) || (type1->getQualifier().storage == EvqGlobal && type2->getQualifier().storage == EvqGlobal)) { if (qualifier1.precision != qualifier2.precision) { hasError = true; std::string errorStr = name + ": have precision conflict cross stage."; infoSink.info.message(EPrefixError, errorStr.c_str()); } if (qualifier1.hasFormat() && qualifier2.hasFormat()) { if (qualifier1.layoutFormat != qualifier2.layoutFormat) { hasError = true; std::string errorStr = name + ": have layout format conflict cross stage."; infoSink.info.message(EPrefixError, errorStr.c_str()); } } } if (isBlock == true) { if (qualifier1.layoutPacking != qualifier2.layoutPacking) { hasError = true; std::string errorStr = name + ": have layoutPacking conflict cross stage."; infoSink.info.message(EPrefixError, errorStr.c_str()); } if (qualifier1.layoutMatrix != qualifier2.layoutMatrix) { hasError = true; std::string errorStr = name + ": have layoutMatrix conflict cross stage."; infoSink.info.message(EPrefixError, errorStr.c_str()); } if (qualifier1.layoutOffset != qualifier2.layoutOffset) { hasError = true; std::string errorStr = name + ": have layoutOffset conflict cross stage."; infoSink.info.message(EPrefixError, errorStr.c_str()); } if (qualifier1.layoutAlign != qualifier2.layoutAlign) { hasError = true; std::string errorStr = name + ": have layoutAlign conflict cross stage."; infoSink.info.message(EPrefixError, errorStr.c_str()); } } return hasError; } bool typeCheck(const TType* const type1, const TType* const type2, const std::string& name, bool isBlock) { bool hasError = false; if (!(type1->isStruct() && type2->isStruct())) { hasError = hasError || qualifierCheck(type1, type2, name, isBlock); } else { if (type1->getBasicType() == EbtBlock && type2->getBasicType() == EbtBlock) isBlock = true; const TTypeList* typeList1 = type1->getStruct(); const TTypeList* typeList2 = type2->getStruct(); std::string newName = name; size_t memberCount = typeList1->size(); size_t index2 = 0; for (size_t index = 0; index < memberCount; index++, index2++) { // Skip inactive member if (typeList1->at(index).type->getBasicType() == EbtVoid) continue; while (index2 < typeList2->size() && typeList2->at(index2).type->getBasicType() == EbtVoid) { ++index2; } // TypeList1 has more members in list if (index2 == typeList2->size()) { std::string errorStr = name + ": struct mismatch."; infoSink.info.message(EPrefixError, errorStr.c_str()); hasError = true; break; } if (typeList1->at(index).type->getFieldName() != typeList2->at(index2).type->getFieldName()) { std::string errorStr = name + ": member name mismatch."; infoSink.info.message(EPrefixError, errorStr.c_str()); hasError = true; } else { newName = typeList1->at(index).type->getFieldName().c_str(); } hasError = hasError || typeCheck(typeList1->at(index).type, typeList2->at(index2).type, newName, isBlock); } while (index2 < typeList2->size()) { // TypeList2 has more members if (typeList2->at(index2).type->getBasicType() != EbtVoid) { std::string errorStr = name + ": struct mismatch."; infoSink.info.message(EPrefixError, errorStr.c_str()); hasError = true; break; } ++index2; } } return hasError; } }; struct TSlotCollector { TSlotCollector(TIoMapResolver& r, TInfoSink& i) : resolver(r), infoSink(i) { } inline void operator()(std::pair& entKey) { resolver.reserverStorageSlot(entKey.second, infoSink); resolver.reserverResourceSlot(entKey.second, infoSink); } TIoMapResolver& resolver; TInfoSink& infoSink; private: TSlotCollector& operator=(TSlotCollector&) = delete; }; TDefaultIoResolverBase::TDefaultIoResolverBase(const TIntermediate& intermediate) : referenceIntermediate(intermediate) , nextUniformLocation(intermediate.getUniformLocationBase()) , nextInputLocation(0) , nextOutputLocation(0) { memset(stageMask, false, sizeof(bool) * (EShLangCount + 1)); memset(stageIntermediates, 0, sizeof(TIntermediate*) * (EShLangCount)); stageIntermediates[intermediate.getStage()] = &intermediate; } int TDefaultIoResolverBase::getBaseBinding(EShLanguage stage, TResourceType res, unsigned int set) const { return stageIntermediates[stage] ? selectBaseBinding(stageIntermediates[stage]->getShiftBinding(res), stageIntermediates[stage]->getShiftBindingForSet(res, set)) : selectBaseBinding(referenceIntermediate.getShiftBinding(res), referenceIntermediate.getShiftBindingForSet(res, set)); } const std::vector& TDefaultIoResolverBase::getResourceSetBinding(EShLanguage stage) const { return stageIntermediates[stage] ? stageIntermediates[stage]->getResourceSetBinding() : referenceIntermediate.getResourceSetBinding(); } bool TDefaultIoResolverBase::doAutoBindingMapping() const { return referenceIntermediate.getAutoMapBindings(); } bool TDefaultIoResolverBase::doAutoLocationMapping() const { return referenceIntermediate.getAutoMapLocations(); } TDefaultIoResolverBase::TSlotSet::iterator TDefaultIoResolverBase::findSlot(int set, int slot) { return std::lower_bound(slots[set].begin(), slots[set].end(), slot); } bool TDefaultIoResolverBase::checkEmpty(int set, int slot) { TSlotSet::iterator at = findSlot(set, slot); return ! (at != slots[set].end() && *at == slot); } int TDefaultIoResolverBase::reserveSlot(int set, int slot, int size) { TSlotSet::iterator at = findSlot(set, slot); // tolerate aliasing, by not double-recording aliases // (policy about appropriateness of the alias is higher up) for (int i = 0; i < size; i++) { if (at == slots[set].end() || *at != slot + i) at = slots[set].insert(at, slot + i); ++at; } return slot; } int TDefaultIoResolverBase::getFreeSlot(int set, int base, int size) { TSlotSet::iterator at = findSlot(set, base); if (at == slots[set].end()) return reserveSlot(set, base, size); // look for a big enough gap for (; at != slots[set].end(); ++at) { if (*at - base >= size) break; base = *at + 1; } return reserveSlot(set, base, size); } int TDefaultIoResolverBase::resolveSet(EShLanguage stage, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); if (type.getQualifier().hasSet()) { return ent.newSet = type.getQualifier().layoutSet; } // If a command line or API option requested a single descriptor set, use that (if not overrided by spaceN) if (getResourceSetBinding(stage).size() == 1) { return ent.newSet = atoi(getResourceSetBinding(stage)[0].c_str()); } return ent.newSet = 0; } int TDefaultIoResolverBase::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); const char* name = ent.symbol->getAccessName().c_str(); // kick out of not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; } // 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.isSpirvType() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables if (type.isStruct()) { if (type.getStruct()->size() < 1) { return ent.newLocation = -1; } if ((*type.getStruct())[0].type->isBuiltIn()) { return ent.newLocation = -1; } } int location = referenceIntermediate.getUniformLocationOverride(name); if (location != -1) { return ent.newLocation = location; } location = nextUniformLocation; nextUniformLocation += TIntermediate::computeTypeUniformLocationSize(type); return ent.newLocation = location; } int TDefaultIoResolverBase::resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); // kick out of not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; } // 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().hasSpirvDecorate()) { return ent.newLocation = -1; } // no locations on blocks of built-in variables if (type.isStruct()) { if (type.getStruct()->size() < 1) { return ent.newLocation = -1; } if ((*type.getStruct())[0].type->isBuiltIn()) { return ent.newLocation = -1; } } // point to the right input or output location counter int& nextLocation = type.getQualifier().isPipeInput() ? nextInputLocation : nextOutputLocation; // Placeholder. This does not do proper cross-stage lining up, nor // work with mixed location/no-location declarations. int location = nextLocation; int typeLocationSize; // Don’t take into account the outer-most array if the stage’s // interface is automatically an array. typeLocationSize = computeTypeLocationSize(type, stage); nextLocation += typeLocationSize; return ent.newLocation = location; } int TDefaultIoResolverBase::resolveInOutComponent(EShLanguage /*stage*/, TVarEntryInfo& ent) { return ent.newComponent = -1; } int TDefaultIoResolverBase::resolveInOutIndex(EShLanguage /*stage*/, TVarEntryInfo& ent) { return ent.newIndex = -1; } uint32_t TDefaultIoResolverBase::computeTypeLocationSize(const TType& type, EShLanguage stage) { int typeLocationSize; // Don’t take into account the outer-most array if the stage’s // interface is automatically an array. if (type.getQualifier().isArrayedIo(stage)) { TType elementType(type, 0); typeLocationSize = TIntermediate::computeTypeLocationSize(elementType, stage); } else { typeLocationSize = TIntermediate::computeTypeLocationSize(type, stage); } return typeLocationSize; } //TDefaultGlslIoResolver TResourceType TDefaultGlslIoResolver::getResourceType(const glslang::TType& type) { if (isImageType(type)) { return EResImage; } if (isTextureType(type)) { return EResTexture; } if (isSsboType(type)) { return EResSsbo; } if (isSamplerType(type)) { return EResSampler; } if (isUboType(type)) { return EResUbo; } return EResCount; } TDefaultGlslIoResolver::TDefaultGlslIoResolver(const TIntermediate& intermediate) : TDefaultIoResolverBase(intermediate) , preStage(EShLangCount) , currentStage(EShLangCount) { } int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); const TString& name = ent.symbol->getAccessName(); if (currentStage != stage) { preStage = currentStage; currentStage = stage; } // kick out if not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; } // expand the location to each element if the symbol is a struct or array if (type.getQualifier().hasLocation()) { return ent.newLocation = type.getQualifier().layoutLocation; } // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate if (type.isBuiltIn() || type.getQualifier().hasSpirvDecorate()) { return ent.newLocation = -1; } // no locations on blocks of built-in variables if (type.isStruct()) { if (type.getStruct()->size() < 1) { return ent.newLocation = -1; } if ((*type.getStruct())[0].type->isBuiltIn()) { return ent.newLocation = -1; } } int typeLocationSize = computeTypeLocationSize(type, stage); int location = type.getQualifier().layoutLocation; bool hasLocation = false; EShLanguage keyStage(EShLangCount); TStorageQualifier storage; storage = EvqInOut; if (type.getQualifier().isPipeInput()) { // If this symbol is a input, search pre stage's out keyStage = preStage; } if (type.getQualifier().isPipeOutput()) { // If this symbol is a output, search next stage's in keyStage = currentStage; } // The in/out in current stage is not declared with location, but it is possible declared // with explicit location in other stages, find the storageSlotMap firstly to check whether // the in/out has location int resourceKey = buildStorageKey(keyStage, storage); if (! storageSlotMap[resourceKey].empty()) { TVarSlotMap::iterator iter = storageSlotMap[resourceKey].find(name); if (iter != storageSlotMap[resourceKey].end()) { // If interface resource be found, set it has location and this symbol's new location // equal the symbol's explicit location declaration in pre or next stage. // // vs: out vec4 a; // fs: layout(..., location = 3,...) in vec4 a; hasLocation = true; location = iter->second; // if we want deal like that: // vs: layout(location=4) out vec4 a; // out vec4 b; // // fs: in vec4 a; // layout(location = 4) in vec4 b; // we need retraverse the map. } if (! hasLocation) { // If interface resource note found, It's mean the location in two stage are both implicit declarat. // So we should find a new slot for this interface. // // vs: out vec4 a; // fs: in vec4 a; location = getFreeSlot(resourceKey, 0, typeLocationSize); storageSlotMap[resourceKey][name] = location; } } else { // the first interface declarated in a program. TVarSlotMap varSlotMap; location = getFreeSlot(resourceKey, 0, typeLocationSize); varSlotMap[name] = location; storageSlotMap[resourceKey] = varSlotMap; } //Update location return ent.newLocation = location; } int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); const TString& name = ent.symbol->getAccessName(); // kick out of not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; } // expand the location to each element if the symbol is a struct or array if (type.getQualifier().hasLocation() && (type.isStruct() || type.isArray())) { return ent.newLocation = type.getQualifier().layoutLocation; } 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.isSpirvType() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables if (type.isStruct()) { if (type.getStruct()->size() < 1) { return ent.newLocation = -1; } if ((*type.getStruct())[0].type->isBuiltIn()) { return ent.newLocation = -1; } } } int location = referenceIntermediate.getUniformLocationOverride(name.c_str()); if (location != -1) { return ent.newLocation = location; } int size = TIntermediate::computeTypeUniformLocationSize(type); // The uniform in current stage is not declared with location, but it is possible declared // with explicit location in other stages, find the storageSlotMap firstly to check whether // the uniform has location bool hasLocation = false; int resourceKey = buildStorageKey(EShLangCount, EvqUniform); TVarSlotMap& slotMap = storageSlotMap[resourceKey]; // Check dose shader program has uniform resource if (! slotMap.empty()) { // If uniform resource not empty, try find a same name uniform TVarSlotMap::iterator iter = slotMap.find(name); if (iter != slotMap.end()) { // If uniform resource be found, set it has location and this symbol's new location // equal the uniform's explicit location declaration in other stage. // // vs: uniform vec4 a; // fs: layout(..., location = 3,...) uniform vec4 a; hasLocation = true; location = iter->second; } if (! hasLocation) { // No explicit location declaration in other stage. // So we should find a new slot for this uniform. // // vs: uniform vec4 a; // fs: uniform vec4 a; location = getFreeSlot(resourceKey, 0, computeTypeLocationSize(type, currentStage)); storageSlotMap[resourceKey][name] = location; } } else { // the first uniform declaration in a program. TVarSlotMap varSlotMap; location = getFreeSlot(resourceKey, 0, size); varSlotMap[name] = location; storageSlotMap[resourceKey] = varSlotMap; } return ent.newLocation = location; } int TDefaultGlslIoResolver::resolveBinding(EShLanguage stage, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); const TString& name = ent.symbol->getAccessName(); // On OpenGL arrays of opaque types take a separate binding for each element int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; TResourceType resource = getResourceType(type); // don't need to handle uniform symbol, it will be handled in resolveUniformLocation if (resource == EResUbo && type.getBasicType() != EbtBlock) { return ent.newBinding = -1; } // There is no 'set' qualifier in OpenGL shading language, each resource has its own // binding name space, so remap the 'set' to resource type which make each resource // binding is valid from 0 to MAX_XXRESOURCE_BINDINGS int set = referenceIntermediate.getSpv().openGl != 0 ? resource : ent.newSet; int resourceKey = set; if (resource < EResCount) { if (type.getQualifier().hasBinding()) { int newBinding = reserveSlot(resourceKey, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding, numBindings); return ent.newBinding = newBinding; } else { // The resource in current stage is not declared with binding, but it is possible declared // with explicit binding in other stages, find the resourceSlotMap firstly to check whether // the resource has binding, don't need to allocate if it already has a binding bool hasBinding = false; ent.newBinding = -1; // leave as -1 if it isn't set below if (! resourceSlotMap[resourceKey].empty()) { TVarSlotMap::iterator iter = resourceSlotMap[resourceKey].find(name); if (iter != resourceSlotMap[resourceKey].end()) { hasBinding = true; ent.newBinding = iter->second; } } if (!hasBinding && (ent.live && doAutoBindingMapping())) { // find free slot, the caller did make sure it passes all vars with binding // first and now all are passed that do not have a binding and needs one int binding = getFreeSlot(resourceKey, getBaseBinding(stage, resource, set), numBindings); resourceSlotMap[resourceKey][name] = binding; ent.newBinding = binding; } return ent.newBinding; } } return ent.newBinding = -1; } void TDefaultGlslIoResolver::beginResolve(EShLanguage stage) { // reset stage state if (stage == EShLangCount) preStage = currentStage = stage; // update stage state else if (currentStage != stage) { preStage = currentStage; currentStage = stage; } } void TDefaultGlslIoResolver::endResolve(EShLanguage /*stage*/) { // TODO nothing } void TDefaultGlslIoResolver::beginCollect(EShLanguage stage) { // reset stage state if (stage == EShLangCount) preStage = currentStage = stage; // update stage state else if (currentStage != stage) { preStage = currentStage; currentStage = stage; } } void TDefaultGlslIoResolver::endCollect(EShLanguage /*stage*/) { // TODO nothing } void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) { const TType& type = ent.symbol->getType(); const TString& name = ent.symbol->getAccessName(); TStorageQualifier storage = type.getQualifier().storage; EShLanguage stage(EShLangCount); switch (storage) { case EvqUniform: if (type.getBasicType() != EbtBlock && type.getQualifier().hasLocation()) { // // Reserve the slots for the uniforms who has explicit location int storageKey = buildStorageKey(EShLangCount, EvqUniform); int location = type.getQualifier().layoutLocation; TVarSlotMap& varSlotMap = storageSlotMap[storageKey]; TVarSlotMap::iterator iter = varSlotMap.find(name); if (iter == varSlotMap.end()) { int numLocations = TIntermediate::computeTypeUniformLocationSize(type); reserveSlot(storageKey, location, numLocations); varSlotMap[name] = location; } else { // Allocate location by name for OpenGL driver, so the uniform in different // stages should be declared with the same location if (iter->second != location) { TString errorMsg = "Invalid location: " + name; infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); hasError = true; } } } break; case EvqVaryingIn: case EvqVaryingOut: // // Reserve the slots for the inout who has explicit location if (type.getQualifier().hasLocation()) { stage = storage == EvqVaryingIn ? preStage : stage; stage = storage == EvqVaryingOut ? currentStage : stage; int storageKey = buildStorageKey(stage, EvqInOut); int location = type.getQualifier().layoutLocation; TVarSlotMap& varSlotMap = storageSlotMap[storageKey]; TVarSlotMap::iterator iter = varSlotMap.find(name); if (iter == varSlotMap.end()) { int numLocations = TIntermediate::computeTypeUniformLocationSize(type); reserveSlot(storageKey, location, numLocations); varSlotMap[name] = location; } else { // Allocate location by name for OpenGL driver, so the uniform in different // stages should be declared with the same location if (iter->second != location) { TString errorMsg = "Invalid location: " + name; infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); hasError = true; } } } break; default: break; } } void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) { const TType& type = ent.symbol->getType(); const TString& name = ent.symbol->getAccessName(); TResourceType resource = getResourceType(type); int set = referenceIntermediate.getSpv().openGl != 0 ? resource : resolveSet(ent.stage, ent); int resourceKey = set; if (type.getQualifier().hasBinding()) { TVarSlotMap& varSlotMap = resourceSlotMap[resourceKey]; TVarSlotMap::iterator iter = varSlotMap.find(name); int binding = type.getQualifier().layoutBinding + getBaseBinding(ent.stage, resource, set); if (iter == varSlotMap.end()) { // Reserve the slots for the ubo, ssbo and opaques who has explicit binding int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; varSlotMap[name] = binding; reserveSlot(resourceKey, binding, numBindings); } else { // Allocate binding by name for OpenGL driver, so the resource in different // stages should be declared with the same binding if (iter->second != binding) { TString errorMsg = "Invalid binding: " + name; infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); hasError = true; } } } } //TDefaultGlslIoResolver end /* * Basic implementation of glslang::TIoMapResolver that replaces the * previous offset behavior. * It does the same, uses the offsets for the corresponding uniform * types. Also respects the EOptionAutoMapBindings flag and binds * them if needed. */ /* * Default resolver */ struct TDefaultIoResolver : public TDefaultIoResolverBase { TDefaultIoResolver(const TIntermediate& intermediate) : TDefaultIoResolverBase(intermediate) { } bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } TResourceType getResourceType(const glslang::TType& type) override { if (isImageType(type)) { return EResImage; } if (isTextureType(type)) { return EResTexture; } if (isSsboType(type)) { return EResSsbo; } if (isSamplerType(type)) { return EResSampler; } if (isUboType(type)) { return EResUbo; } return EResCount; } int resolveBinding(EShLanguage stage, TVarEntryInfo& ent) override { const TType& type = ent.symbol->getType(); const int set = getLayoutSet(type); // On OpenGL arrays of opaque types take a seperate binding for each element int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; TResourceType resource = getResourceType(type); if (resource < EResCount) { if (type.getQualifier().hasBinding()) { return ent.newBinding = reserveSlot( set, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding, numBindings); } else if (ent.live && doAutoBindingMapping()) { // find free slot, the caller did make sure it passes all vars with binding // first and now all are passed that do not have a binding and needs one return ent.newBinding = getFreeSlot(set, getBaseBinding(stage, resource, set), numBindings); } } return ent.newBinding = -1; } }; #ifdef ENABLE_HLSL /******************************************************************************** The following IO resolver maps types in HLSL register space, as follows: t - for shader resource views (SRV) TEXTURE1D TEXTURE1DARRAY TEXTURE2D TEXTURE2DARRAY TEXTURE3D TEXTURECUBE TEXTURECUBEARRAY TEXTURE2DMS TEXTURE2DMSARRAY STRUCTUREDBUFFER BYTEADDRESSBUFFER BUFFER TBUFFER s - for samplers SAMPLER SAMPLER1D SAMPLER2D SAMPLER3D SAMPLERCUBE SAMPLERSTATE SAMPLERCOMPARISONSTATE u - for unordered access views (UAV) RWBYTEADDRESSBUFFER RWSTRUCTUREDBUFFER APPENDSTRUCTUREDBUFFER CONSUMESTRUCTUREDBUFFER RWBUFFER RWTEXTURE1D RWTEXTURE1DARRAY RWTEXTURE2D RWTEXTURE2DARRAY RWTEXTURE3D b - for constant buffer views (CBV) CBUFFER CONSTANTBUFFER ********************************************************************************/ struct TDefaultHlslIoResolver : public TDefaultIoResolverBase { TDefaultHlslIoResolver(const TIntermediate& intermediate) : TDefaultIoResolverBase(intermediate) { } bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } TResourceType getResourceType(const glslang::TType& type) override { if (isUavType(type)) { return EResUav; } if (isSrvType(type)) { return EResTexture; } if (isSamplerType(type)) { return EResSampler; } if (isUboType(type)) { return EResUbo; } return EResCount; } int resolveBinding(EShLanguage stage, TVarEntryInfo& ent) override { const TType& type = ent.symbol->getType(); const int set = getLayoutSet(type); TResourceType resource = getResourceType(type); if (resource < EResCount) { if (type.getQualifier().hasBinding()) { return ent.newBinding = reserveSlot(set, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding); } else if (ent.live && doAutoBindingMapping()) { // find free slot, the caller did make sure it passes all vars with binding // first and now all are passed that do not have a binding and needs one return ent.newBinding = getFreeSlot(set, getBaseBinding(stage, resource, set)); } } return ent.newBinding = -1; } }; #endif // Map I/O variables to provided offsets, and make bindings for // unbound but live variables. // // Returns false if the input is too malformed to do this. bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSink& infoSink, TIoMapResolver* resolver) { bool somethingToDo = ! intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() || intermediate.getAutoMapLocations(); // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true. for (int res = 0; (res < EResCount && !somethingToDo); ++res) { somethingToDo = somethingToDo || (intermediate.getShiftBinding(TResourceType(res)) != 0) || intermediate.hasShiftBindingForSet(TResourceType(res)); } if (! somethingToDo && resolver == nullptr) return true; if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive()) return false; TIntermNode* root = intermediate.getTreeRoot(); if (root == nullptr) return false; // if no resolver is provided, use the default resolver with the given shifts and auto map settings TDefaultIoResolver defaultResolver(intermediate); #ifdef ENABLE_HLSL TDefaultHlslIoResolver defaultHlslResolver(intermediate); if (resolver == nullptr) { // TODO: use a passed in IO mapper for this if (intermediate.usingHlslIoMapping()) resolver = &defaultHlslResolver; else resolver = &defaultResolver; } #else resolver = &defaultResolver; #endif resolver->addStage(stage, intermediate); TVarLiveMap inVarMap, outVarMap, uniformVarMap; TVarLiveVector inVector, outVector, uniformVector; TVarGatherTraverser iter_binding_all(intermediate, true, inVarMap, outVarMap, uniformVarMap); TVarGatherTraverser iter_binding_live(intermediate, false, inVarMap, outVarMap, uniformVarMap); root->traverse(&iter_binding_all); iter_binding_live.pushFunction(intermediate.getEntryPointMangledName().c_str()); while (! iter_binding_live.destinations.empty()) { TIntermNode* destination = iter_binding_live.destinations.back(); iter_binding_live.destinations.pop_back(); destination->traverse(&iter_binding_live); } // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info. for (auto& var : inVarMap) { inVector.push_back(var); } std::sort(inVector.begin(), inVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); for (auto& var : outVarMap) { outVector.push_back(var); } std::sort(outVector.begin(), outVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); for (auto& var : uniformVarMap) { uniformVector.push_back(var); } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); bool hadError = false; TVarLiveMap* dummyUniformVarMap[EShLangCount] = {}; TNotifyInOutAdaptor inOutNotify(stage, *resolver); TNotifyUniformAdaptor uniformNotify(stage, *resolver); TResolverUniformAdaptor uniformResolve(stage, *resolver, dummyUniformVarMap, infoSink, hadError); TResolverInOutAdaptor inOutResolve(stage, *resolver, infoSink, hadError); resolver->beginNotifications(stage); std::for_each(inVector.begin(), inVector.end(), inOutNotify); std::for_each(outVector.begin(), outVector.end(), inOutNotify); std::for_each(uniformVector.begin(), uniformVector.end(), uniformNotify); resolver->endNotifications(stage); resolver->beginResolve(stage); for (auto& var : inVector) { inOutResolve(var); } std::for_each(inVector.begin(), inVector.end(), [&inVarMap](TVarLivePair p) { auto at = inVarMap.find(p.second.symbol->getAccessName()); if (at != inVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); for (auto& var : outVector) { inOutResolve(var); } std::for_each(outVector.begin(), outVector.end(), [&outVarMap](TVarLivePair p) { auto at = outVarMap.find(p.second.symbol->getAccessName()); if (at != outVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); std::for_each(uniformVector.begin(), uniformVector.end(), uniformResolve); std::for_each(uniformVector.begin(), uniformVector.end(), [&uniformVarMap](TVarLivePair p) { auto at = uniformVarMap.find(p.second.symbol->getAccessName()); if (at != uniformVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); resolver->endResolve(stage); if (!hadError) { TVarSetTraverser iter_iomap(intermediate, inVarMap, outVarMap, uniformVarMap); root->traverse(&iter_iomap); } return !hadError; } TGlslIoMapper::TGlslIoMapper() { memset(inVarMaps, 0, sizeof(TVarLiveMap*) * EShLangCount); memset(outVarMaps, 0, sizeof(TVarLiveMap*) * EShLangCount); memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * EShLangCount); memset(intermediates, 0, sizeof(TIntermediate*) * EShLangCount); profile = ENoProfile; version = 0; autoPushConstantMaxSize = 128; autoPushConstantBlockPacking = ElpStd430; } TGlslIoMapper::~TGlslIoMapper() { for (size_t stage = 0; stage < EShLangCount; stage++) { if (inVarMaps[stage] != nullptr) { delete inVarMaps[stage]; inVarMaps[stage] = nullptr; } if (outVarMaps[stage] != nullptr) { delete outVarMaps[stage]; outVarMaps[stage] = nullptr; } if (uniformVarMap[stage] != nullptr) { delete uniformVarMap[stage]; uniformVarMap[stage] = nullptr; } if (intermediates[stage] != nullptr) intermediates[stage] = nullptr; } } // Map I/O variables to provided offsets, and make bindings for // unbound but live variables. // // Returns false if the input is too malformed to do this. bool TGlslIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSink& infoSink, TIoMapResolver* resolver) { bool somethingToDo = !intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() || intermediate.getAutoMapLocations(); // Profile and version are use for symbol validate. profile = intermediate.getProfile(); version = intermediate.getVersion(); // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true. for (int res = 0; (res < EResCount && !somethingToDo); ++res) { somethingToDo = somethingToDo || (intermediate.getShiftBinding(TResourceType(res)) != 0) || intermediate.hasShiftBindingForSet(TResourceType(res)); } if (! somethingToDo && resolver == nullptr) { return true; } if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive()) { return false; } TIntermNode* root = intermediate.getTreeRoot(); if (root == nullptr) { return false; } // if no resolver is provided, use the default resolver with the given shifts and auto map settings TDefaultGlslIoResolver defaultResolver(intermediate); #ifdef ENABLE_HLSL TDefaultHlslIoResolver defaultHlslResolver(intermediate); if (resolver == nullptr) { // TODO: use a passed in IO mapper for this if (intermediate.usingHlslIoMapping()) resolver = &defaultHlslResolver; else resolver = &defaultResolver; } #else if (resolver == nullptr) { resolver = &defaultResolver; } #endif resolver->addStage(stage, intermediate); inVarMaps[stage] = new TVarLiveMap(); outVarMaps[stage] = new TVarLiveMap(); uniformVarMap[stage] = new TVarLiveMap(); TVarGatherTraverser iter_binding_all(intermediate, true, *inVarMaps[stage], *outVarMaps[stage], *uniformVarMap[stage]); TVarGatherTraverser iter_binding_live(intermediate, false, *inVarMaps[stage], *outVarMaps[stage], *uniformVarMap[stage]); root->traverse(&iter_binding_all); iter_binding_live.pushFunction(intermediate.getEntryPointMangledName().c_str()); while (! iter_binding_live.destinations.empty()) { TIntermNode* destination = iter_binding_live.destinations.back(); iter_binding_live.destinations.pop_back(); destination->traverse(&iter_binding_live); } TNotifyInOutAdaptor inOutNotify(stage, *resolver); TNotifyUniformAdaptor uniformNotify(stage, *resolver); // Resolve current stage input symbol location with previous stage output here, // uniform symbol, ubo, ssbo and opaque symbols are per-program resource, // will resolve uniform symbol location and ubo/ssbo/opaque binding in doMap() resolver->beginNotifications(stage); std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), inOutNotify); std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), inOutNotify); std::for_each(uniformVarMap[stage]->begin(), uniformVarMap[stage]->end(), uniformNotify); resolver->endNotifications(stage); TSlotCollector slotCollector(*resolver, infoSink); resolver->beginCollect(stage); std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), slotCollector); std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), slotCollector); std::for_each(uniformVarMap[stage]->begin(), uniformVarMap[stage]->end(), slotCollector); resolver->endCollect(stage); intermediates[stage] = &intermediate; return !hadError; } bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { resolver->endResolve(EShLangCount); if (!hadError) { //Resolve uniform location, ubo/ssbo/opaque bindings across stages TResolverUniformAdaptor uniformResolve(EShLangCount, *resolver, uniformVarMap, infoSink, hadError); TResolverInOutAdaptor inOutResolve(EShLangCount, *resolver, infoSink, hadError); TSymbolValidater symbolValidater(*resolver, infoSink, inVarMaps, outVarMaps, uniformVarMap, hadError, profile, version); TVarLiveVector inVectors[EShLangCount]; TVarLiveVector outVectors[EShLangCount]; TVarLiveVector uniformVector; resolver->beginResolve(EShLangCount); for (int stage = EShLangVertex; stage < EShLangCount; stage++) { if (inVarMaps[stage] != nullptr) { inOutResolve.setStage(EShLanguage(stage)); // copy vars into a sorted list std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), [&inVectors, stage](TVarLivePair p) { inVectors[stage].push_back(p); }); std::sort(inVectors[stage].begin(), inVectors[stage].end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), [&outVectors, stage](TVarLivePair p) { outVectors[stage].push_back(p); }); std::sort(outVectors[stage].begin(), outVectors[stage].end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); for (auto& var : inVectors[stage]) { symbolValidater(var); } for (auto& var : inVectors[stage]) { inOutResolve(var); } for (auto& var : outVectors[stage]) { symbolValidater(var); } for (auto& var : outVectors[stage]) { inOutResolve(var); } // copy results back into maps std::for_each(inVectors[stage].begin(), inVectors[stage].end(), [this, stage](TVarLivePair p) { auto at = inVarMaps[stage]->find(p.first); if (at != inVarMaps[stage]->end()) at->second = p.second; }); std::for_each(outVectors[stage].begin(), outVectors[stage].end(), [this, stage](TVarLivePair p) { auto at = outVarMaps[stage]->find(p.first); if (at != outVarMaps[stage]->end()) at->second = p.second; }); } if (uniformVarMap[stage] != nullptr) { uniformResolve.setStage(EShLanguage(stage)); for (auto& var : *(uniformVarMap[stage])) { uniformVector.push_back(var); } } } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriorityAndLive()(p1.second, p2.second); }); for (auto& var : uniformVector) { symbolValidater(var); } for (auto& var : uniformVector) { uniformResolve(var); } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); resolver->endResolve(EShLangCount); if (autoPushConstantBlockName.length()) { bool upgraded = false; for (size_t stage = 0; stage < EShLangCount; stage++) { if (intermediates[stage] != nullptr) { TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap; auto at = pUniformVarMap[stage]->find(autoPushConstantBlockName); if (at == pUniformVarMap[stage]->end()) continue; TQualifier& qualifier = at->second.symbol->getQualifier(); if (!qualifier.isUniform()) continue; TType& t = at->second.symbol->getWritableType(); int size, stride; TIntermediate::getBaseAlignment(t, size, stride, autoPushConstantBlockPacking, qualifier.layoutMatrix == ElmRowMajor); if (size <= int(autoPushConstantMaxSize)) { qualifier.setBlockStorage(EbsPushConstant); qualifier.layoutPacking = autoPushConstantBlockPacking; // Push constants don't have set/binding etc. decorations, remove those. qualifier.layoutSet = TQualifier::layoutSetEnd; at->second.clearNewAssignments(); upgraded = true; } } } // If it's been upgraded to push_constant, then set the flag so when its traversed // in the next for loop, all references to this symbol will get their flag changed. // so it doesn't get a set/binding assigned to it. if (upgraded) { std::for_each(uniformVector.begin(), uniformVector.end(), [this](TVarLivePair& p) { if (p.first == autoPushConstantBlockName) { p.second.upgradedToPushConstantPacking = autoPushConstantBlockPacking; p.second.newSet = TQualifier::layoutSetEnd; } }); } } for (size_t stage = 0; stage < EShLangCount; stage++) { if (intermediates[stage] != nullptr) { // traverse each stage, set new location to each input/output and unifom symbol, set new binding to // ubo, ssbo and opaque symbols. Assign push_constant upgrades as well. TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap; std::for_each(uniformVector.begin(), uniformVector.end(), [pUniformVarMap, stage](TVarLivePair p) { auto at = pUniformVarMap[stage]->find(p.second.symbol->getAccessName()); if (at != pUniformVarMap[stage]->end() && at->second.id == p.second.id){ if (p.second.upgradedToPushConstantPacking != ElpNone) { at->second.upgradedToPushConstantPacking = p.second.upgradedToPushConstantPacking; } else { int resolvedBinding = at->second.newBinding; at->second = p.second; if (resolvedBinding > 0) at->second.newBinding = resolvedBinding; } } }); TVarSetTraverser iter_iomap(*intermediates[stage], *inVarMaps[stage], *outVarMaps[stage], *uniformResolve.uniformVarMap[stage]); intermediates[stage]->getTreeRoot()->traverse(&iter_iomap); } } return !hadError; } else { return false; } } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/iomapper.h000066400000000000000000000230621506534232700223750ustar00rootroot00000000000000// // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _IOMAPPER_INCLUDED #define _IOMAPPER_INCLUDED #include #include #include // // A reflection database and its interface, consistent with the OpenGL API reflection queries. // class TInfoSink; namespace glslang { class TIntermediate; struct TVarEntryInfo; // Base class for shared TIoMapResolver services, used by several derivations. struct TDefaultIoResolverBase : public glslang::TIoMapResolver { public: TDefaultIoResolverBase(const TIntermediate& intermediate); typedef std::vector TSlotSet; typedef std::unordered_map TSlotSetMap; // grow the reflection stage by stage void notifyBinding(EShLanguage, TVarEntryInfo& /*ent*/) override {} void notifyInOut(EShLanguage, TVarEntryInfo& /*ent*/) override {} void beginNotifications(EShLanguage) override {} void endNotifications(EShLanguage) override {} void beginResolve(EShLanguage) override {} void endResolve(EShLanguage) override {} void beginCollect(EShLanguage) override {} void endCollect(EShLanguage) override {} void reserverResourceSlot(TVarEntryInfo& /*ent*/, TInfoSink& /*infoSink*/) override {} void reserverStorageSlot(TVarEntryInfo& /*ent*/, TInfoSink& /*infoSink*/) override {} int getBaseBinding(EShLanguage stage, TResourceType res, unsigned int set) const; const std::vector& getResourceSetBinding(EShLanguage stage) const; virtual TResourceType getResourceType(const glslang::TType& type) = 0; bool doAutoBindingMapping() const; bool doAutoLocationMapping() const; TSlotSet::iterator findSlot(int set, int slot); bool checkEmpty(int set, int slot); bool validateInOut(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } int reserveSlot(int set, int slot, int size = 1); int getFreeSlot(int set, int base, int size = 1); int resolveSet(EShLanguage /*stage*/, TVarEntryInfo& ent) override; int resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) override; int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) override; int resolveInOutComponent(EShLanguage /*stage*/, TVarEntryInfo& ent) override; int resolveInOutIndex(EShLanguage /*stage*/, TVarEntryInfo& ent) override; void addStage(EShLanguage stage, TIntermediate& stageIntermediate) override { if (stage < EShLangCount) { stageMask[stage] = true; stageIntermediates[stage] = &stageIntermediate; } } uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage); TSlotSetMap slots; bool hasError = false; protected: TDefaultIoResolverBase(TDefaultIoResolverBase&); TDefaultIoResolverBase& operator=(TDefaultIoResolverBase&); const TIntermediate& referenceIntermediate; int nextUniformLocation; int nextInputLocation; int nextOutputLocation; bool stageMask[EShLangCount + 1]; const TIntermediate* stageIntermediates[EShLangCount]; // Return descriptor set specific base if there is one, and the generic base otherwise. int selectBaseBinding(int base, int descriptorSetBase) const { return descriptorSetBase != -1 ? descriptorSetBase : base; } static int getLayoutSet(const glslang::TType& type) { if (type.getQualifier().hasSet()) return type.getQualifier().layoutSet; else return 0; } static bool isSamplerType(const glslang::TType& type) { return type.getBasicType() == glslang::EbtSampler && type.getSampler().isPureSampler(); } static bool isTextureType(const glslang::TType& type) { return (type.getBasicType() == glslang::EbtSampler && (type.getSampler().isTexture() || type.getSampler().isSubpass())); } static bool isUboType(const glslang::TType& type) { return type.getQualifier().storage == EvqUniform; } static bool isImageType(const glslang::TType& type) { return type.getBasicType() == glslang::EbtSampler && type.getSampler().isImage(); } static bool isSsboType(const glslang::TType& type) { return type.getQualifier().storage == EvqBuffer; } // Return true if this is a SRV (shader resource view) type: static bool isSrvType(const glslang::TType& type) { return isTextureType(type) || type.getQualifier().storage == EvqBuffer; } // Return true if this is a UAV (unordered access view) type: static bool isUavType(const glslang::TType& type) { if (type.getQualifier().isReadOnly()) return false; return (type.getBasicType() == glslang::EbtSampler && type.getSampler().isImage()) || (type.getQualifier().storage == EvqBuffer); } }; // Default I/O resolver for OpenGL struct TDefaultGlslIoResolver : public TDefaultIoResolverBase { public: typedef std::map TVarSlotMap; // typedef std::map TSlotMap; // TDefaultGlslIoResolver(const TIntermediate& intermediate); bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } TResourceType getResourceType(const glslang::TType& type) override; int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) override; int resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) override; int resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) override; void beginResolve(EShLanguage /*stage*/) override; void endResolve(EShLanguage stage) override; void beginCollect(EShLanguage) override; void endCollect(EShLanguage) override; void reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) override; void reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) override; // in/out symbol and uniform symbol are stored in the same resourceSlotMap, the storage key is used to identify each type of symbol. // We use stage and storage qualifier to construct a storage key. it can help us identify the same storage resource used in different stage. // if a resource is a program resource and we don't need know it usage stage, we can use same stage to build storage key. // Note: both stage and type must less then 0xffff. int buildStorageKey(EShLanguage stage, TStorageQualifier type) { assert(static_cast(stage) <= 0x0000ffff && static_cast(type) <= 0x0000ffff); return (stage << 16) | type; } protected: // Use for mark pre stage, to get more interface symbol information. EShLanguage preStage; // Use for mark current shader stage for resolver EShLanguage currentStage; // Slot map for storage resource(location of uniform and interface symbol) It's a program share slot TSlotMap resourceSlotMap; // Slot map for other resource(image, ubo, ssbo), It's a program share slot. TSlotMap storageSlotMap; }; typedef std::map TVarLiveMap; // I/O mapper for GLSL class TGlslIoMapper : public TIoMapper { public: TGlslIoMapper(); virtual ~TGlslIoMapper(); // If set, the uniform block with the given name will be changed to be backed by // push_constant if it's size is <= maxSize bool setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) override { autoPushConstantBlockName = name; autoPushConstantMaxSize = maxSize; autoPushConstantBlockPacking = packing; return true; } // grow the reflection stage by stage bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*) override; bool doMap(TIoMapResolver*, TInfoSink&) override; TIntermediate* intermediates[EShLangCount]; bool hadError = false; EProfile profile; int version; private: TString autoPushConstantBlockName; unsigned int autoPushConstantMaxSize; TLayoutPacking autoPushConstantBlockPacking; TVarLiveMap *inVarMaps[EShLangCount], *outVarMaps[EShLangCount], *uniformVarMap[EShLangCount]; }; } // end namespace glslang #endif // _IOMAPPER_INCLUDED glslang-16.0.0/glslang/MachineIndependent/limits.cpp000066400000000000000000000144101506534232700224120ustar00rootroot00000000000000// // Copyright (C) 2013 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Do sub tree walks for // 1) inductive loop bodies to see if the inductive variable is modified // 2) array-index expressions to see if they are "constant-index-expression" // // These are per Appendix A of ES 2.0: // // "Within the body of the loop, the loop index is not statically assigned to nor is it used as the // argument to a function out or inout parameter." // // "The following are constant-index-expressions: // - Constant expressions // - Loop indices as defined in section 4 // - Expressions composed of both of the above" // // N.B.: assuming the last rule excludes function calls // #include "ParseHelper.h" namespace glslang { // // The inductive loop-body traverser. // // Just look at things that might modify the loop index. // class TInductiveTraverser : public TIntermTraverser { public: TInductiveTraverser(long long id, TSymbolTable& st) : loopId(id), symbolTable(st), bad(false) { } virtual bool visitBinary(TVisit, TIntermBinary* node); virtual bool visitUnary(TVisit, TIntermUnary* node); virtual bool visitAggregate(TVisit, TIntermAggregate* node); long long loopId; // unique ID of the symbol that's the loop inductive variable TSymbolTable& symbolTable; bool bad; TSourceLoc badLoc; protected: TInductiveTraverser(TInductiveTraverser&); TInductiveTraverser& operator=(TInductiveTraverser&); }; // check binary operations for those modifying the loop index bool TInductiveTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node) { if (node->modifiesState() && node->getLeft()->getAsSymbolNode() && node->getLeft()->getAsSymbolNode()->getId() == loopId) { bad = true; badLoc = node->getLoc(); } return true; } // check unary operations for those modifying the loop index bool TInductiveTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) { if (node->modifiesState() && node->getOperand()->getAsSymbolNode() && node->getOperand()->getAsSymbolNode()->getId() == loopId) { bad = true; badLoc = node->getLoc(); } return true; } // check function calls for arguments modifying the loop index bool TInductiveTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node) { if (node->getOp() == EOpFunctionCall) { // see if an out or inout argument is the loop index const TIntermSequence& args = node->getSequence(); for (int i = 0; i < (int)args.size(); ++i) { if (args[i]->getAsSymbolNode() && args[i]->getAsSymbolNode()->getId() == loopId) { TSymbol* function = symbolTable.find(node->getName()); const TType* type = (*function->getAsFunction())[i].type; if (type->getQualifier().storage == EvqOut || type->getQualifier().storage == EvqInOut) { bad = true; badLoc = node->getLoc(); } } } } return true; } // // External function to call for loop check. // void TParseContext::inductiveLoopBodyCheck(TIntermNode* body, long long loopId, TSymbolTable& symbolTable) { TInductiveTraverser it(loopId, symbolTable); if (body == nullptr) return; body->traverse(&it); if (it.bad) error(it.badLoc, "inductive loop index modified", "limitations", ""); } // // The "constant-index-expression" tranverser. // // Just look at things that can form an index. // class TIndexTraverser : public TIntermTraverser { public: TIndexTraverser(const TIdSetType& ids) : inductiveLoopIds(ids), bad(false) { } virtual void visitSymbol(TIntermSymbol* symbol); virtual bool visitAggregate(TVisit, TIntermAggregate* node); const TIdSetType& inductiveLoopIds; bool bad; TSourceLoc badLoc; protected: TIndexTraverser(TIndexTraverser&); TIndexTraverser& operator=(TIndexTraverser&); }; // make sure symbols are inductive-loop indexes void TIndexTraverser::visitSymbol(TIntermSymbol* symbol) { if (inductiveLoopIds.find(symbol->getId()) == inductiveLoopIds.end()) { bad = true; badLoc = symbol->getLoc(); } } // check for function calls, assuming they are bad; spec. doesn't really say bool TIndexTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node) { if (node->getOp() == EOpFunctionCall) { bad = true; badLoc = node->getLoc(); } return true; } // // External function to call for loop check. // void TParseContext::constantIndexExpressionCheck(TIntermNode* index) { TIndexTraverser it(inductiveLoopIds); index->traverse(&it); if (it.bad) error(it.badLoc, "Non-constant-index-expression", "limitations", ""); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/linkValidate.cpp000066400000000000000000003751561506534232700235410ustar00rootroot00000000000000// // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2015-2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Do link-time merging and validation of intermediate representations. // // Basic model is that during compilation, each compilation unit (shader) is // compiled into one TIntermediate instance. Then, at link time, multiple // units for the same stage can be merged together, which can generate errors. // Then, after all merging, a single instance of TIntermediate represents // the whole stage. A final error check can be done on the resulting stage, // even if no merging was done (i.e., the stage was only one compilation unit). // #include "glslang/Public/ShaderLang.h" #include "localintermediate.h" #include "../Include/InfoSink.h" #include "SymbolTable.h" #include "LiveTraverser.h" namespace glslang { // // Link-time error emitter. // void TIntermediate::error(TInfoSink& infoSink, const TSourceLoc* loc, EShMessages messages, const char* message, EShLanguage unitStage) { infoSink.info.prefix(EPrefixError); if (loc) infoSink.info.location(*loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); if (unitStage == EShLangCount) infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; else if (language == EShLangCount) infoSink.info << "Linking " << StageName(unitStage) << " stage: " << message << "\n"; else infoSink.info << "Linking " << StageName(language) << " and " << StageName(unitStage) << " stages: " << message << "\n"; ++numErrors; } // Link-time warning. void TIntermediate::warn(TInfoSink& infoSink, const TSourceLoc* loc, EShMessages messages, const char* message, EShLanguage unitStage) { infoSink.info.prefix(EPrefixWarning); if (loc) infoSink.info.location(*loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); if (unitStage == EShLangCount) infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; else if (language == EShLangCount) infoSink.info << "Linking " << StageName(unitStage) << " stage: " << message << "\n"; else infoSink.info << "Linking " << StageName(language) << " and " << StageName(unitStage) << " stages: " << message << "\n"; } // TODO: 4.4 offset/align: "Two blocks linked together in the same program with the same block // name must have the exact same set of members qualified with offset and their integral-constant // expression values must be the same, or a link-time error results." // // Merge the information from 'unit' into 'this' // void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) { mergeCallGraphs(infoSink, unit); mergeModes(infoSink, unit); mergeTrees(infoSink, unit); } // // check that link objects between stages // void TIntermediate::mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit) { if (unit.treeRoot == nullptr || treeRoot == nullptr) return; // Get the linker-object lists TIntermSequence& linkerObjects = findLinkerObjects()->getSequence(); TIntermSequence unitLinkerObjects = unit.findLinkerObjects()->getSequence(); // filter unitLinkerObjects to only contain uniforms auto end = std::remove_if(unitLinkerObjects.begin(), unitLinkerObjects.end(), [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqUniform && node->getAsSymbolNode()->getQualifier().storage != EvqBuffer; }); unitLinkerObjects.resize(end - unitLinkerObjects.begin()); // merge uniforms and do error checking bool mergeExistingOnly = false; mergeGlobalUniformBlocks(infoSink, unit, mergeExistingOnly); mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage()); } static inline bool isSameInterface(TIntermSymbol* symbol, TIntermSymbol* unitSymbol) { EShLanguage stage = symbol->getStage(); EShLanguage unitStage = unitSymbol->getStage(); return // 1) same stage and same shader interface (stage == unitStage && symbol->getType().getShaderInterface() == unitSymbol->getType().getShaderInterface()) || // 2) accross stages and both are uniform or buffer (symbol->getQualifier().storage == EvqUniform && unitSymbol->getQualifier().storage == EvqUniform) || (symbol->getQualifier().storage == EvqBuffer && unitSymbol->getQualifier().storage == EvqBuffer) || // 3) in/out matched across stage boundary (stage < unitStage && symbol->getQualifier().storage == EvqVaryingOut && unitSymbol->getQualifier().storage == EvqVaryingIn) || (unitStage < stage && symbol->getQualifier().storage == EvqVaryingIn && unitSymbol->getQualifier().storage == EvqVaryingOut); } static bool isSameSymbol(TIntermSymbol* symbol1, TIntermSymbol* symbol2) { // If they are both blocks in the same shader interface, // match by the block-name, not the identifier name. if (symbol1->getType().getBasicType() == EbtBlock && symbol2->getType().getBasicType() == EbtBlock) { if (isSameInterface(symbol1, symbol2)) { return symbol1->getType().getTypeName() == symbol2->getType().getTypeName(); } } else if (symbol1->getName() == symbol2->getName()) return true; return false; } // // merge implicit array sizes for uniform/buffer objects // void TIntermediate::mergeImplicitArraySizes(TInfoSink&, TIntermediate& unit) { if (unit.treeRoot == nullptr || treeRoot == nullptr) return; // Get the linker-object lists TIntermSequence& linkerObjects = findLinkerObjects()->getSequence(); TIntermSequence unitLinkerObjects = unit.findLinkerObjects()->getSequence(); // filter unitLinkerObjects to only contain uniforms auto end = std::remove_if(unitLinkerObjects.begin(), unitLinkerObjects.end(), [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqUniform && node->getAsSymbolNode()->getQualifier().storage != EvqBuffer; }); unitLinkerObjects.resize(end - unitLinkerObjects.begin()); std::size_t initialNumLinkerObjects = linkerObjects.size(); for (unsigned int unitLinkObj = 0; unitLinkObj < unitLinkerObjects.size(); ++unitLinkObj) { for (std::size_t linkObj = 0; linkObj < initialNumLinkerObjects; ++linkObj) { TIntermSymbol* symbol = linkerObjects[linkObj]->getAsSymbolNode(); TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); assert(symbol && unitSymbol); if (isSameSymbol(symbol, unitSymbol)) { // Update implicit array sizes mergeImplicitArraySizes(symbol->getWritableType(), unitSymbol->getType()); } } } } // // do error checking on the shader boundary in / out vars // void TIntermediate::checkStageIO(TInfoSink& infoSink, TIntermediate& unit, EShMessages messages) { if (unit.treeRoot == nullptr || treeRoot == nullptr) return; // Get copies of the linker-object lists TIntermSequence linkerObjects = findLinkerObjects()->getSequence(); TIntermSequence unitLinkerObjects = unit.findLinkerObjects()->getSequence(); // filter linkerObjects to only contain out variables auto end = std::remove_if(linkerObjects.begin(), linkerObjects.end(), [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqVaryingOut; }); linkerObjects.resize(end - linkerObjects.begin()); // filter unitLinkerObjects to only contain in variables auto unitEnd = std::remove_if(unitLinkerObjects.begin(), unitLinkerObjects.end(), [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqVaryingIn; }); unitLinkerObjects.resize(unitEnd - unitLinkerObjects.begin()); // do matching and error checking mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage()); if ((messages & EShMsgValidateCrossStageIO) == 0) return; // The OpenGL Shading Language, Version 4.60.8 (https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.pdf) // 4.3.4 Input Variables // Only the input variables that are statically read need to be written by the previous stage; it is // allowed to have superfluous declarations of input variables. This is shown in the following table. // +------------------------------------------------------------------------------------------------+ // | Treatment of Mismatched Input | Consuming Shader (input variables) | // | Variables |---------------------------------------------------------| // | | No | Declared but no | Declared and Static Use | // | | Declaration | Static Use | | // |--------------------------------------+-------------+-----------------+-------------------------| // | Generating Shader | No Declaration | Allowed | Allowed | Link-Time Error | // | (output variables) |-----------------+-------------+-----------------+-------------------------| // | | Declared but no | Allowed | Allowed | Allowed (values are | // | | Static Use | | | undefined) | // | |-----------------+-------------+-----------------+-------------------------| // | | Declared and | Allowed | Allowed | Allowed (values are | // | | Static Use | | | potentially undefined) | // +------------------------------------------------------------------------------------------------+ // Consumption errors are based on static use only. Compilation may generate a warning, but not an // error, for any dynamic use the compiler can deduce that might cause consumption of undefined values. // TODO: implement support for geometry passthrough if (getGeoPassthroughEXT()) { unit.warn(infoSink, "GL_NV_geometry_shader_passthrough is enabled, skipping cross-stage IO validation", getStage()); return; } class TIOTraverser : public TLiveTraverser { public: TIOTraverser(TIntermediate& i, bool all, TIntermSequence& sequence, TStorageQualifier storage) : TLiveTraverser(i, all, true, false, false), sequence(sequence), storage(storage) { } virtual void visitSymbol(TIntermSymbol* symbol) { if (symbol->getQualifier().storage == storage) sequence.push_back(symbol); } private: TIntermSequence& sequence; TStorageQualifier storage; }; // live symbols only TIntermSequence unitLiveInputs; TIOTraverser unitTraverser(unit, false, unitLiveInputs, EvqVaryingIn); unitTraverser.pushFunction(unit.getEntryPointMangledName().c_str()); while (! unitTraverser.destinations.empty()) { TIntermNode* destination = unitTraverser.destinations.back(); unitTraverser.destinations.pop_back(); destination->traverse(&unitTraverser); } // all symbols TIntermSequence allOutputs; TIOTraverser traverser(*this, true, allOutputs, EvqVaryingOut); getTreeRoot()->traverse(&traverser); std::unordered_set outputLocations; for (auto& output : allOutputs) { if (output->getAsSymbolNode()->getBasicType() == EbtBlock) { int lastLocation = -1; if (output->getAsSymbolNode()->getQualifier().hasLocation()) lastLocation = output->getAsSymbolNode()->getQualifier().layoutLocation; const TTypeList* members = output->getAsSymbolNode()->getType().getStruct(); for (auto& member : *members) { int location = lastLocation; if (member.type->getQualifier().hasLocation()) location = member.type->getQualifier().layoutLocation; if (location != -1) { int locationSize = TIntermediate::computeTypeLocationSize(*member.type, getStage()); for (int i = 0; i < locationSize; ++i) outputLocations.insert(location + i); lastLocation = location + locationSize; } } } else { int locationSize = TIntermediate::computeTypeLocationSize(output->getAsSymbolNode()->getType(), getStage()); for (int i = 0; i < locationSize; ++i) outputLocations.insert(output->getAsSymbolNode()->getQualifier().layoutLocation + i); } } // remove unitStage inputs with matching outputs in the current stage auto liveEnd = std::remove_if( unitLiveInputs.begin(), unitLiveInputs.end(), [this, &allOutputs, &outputLocations](TIntermNode* input) { // ignore built-ins if (input->getAsSymbolNode()->getAccessName().compare(0, 3, "gl_") == 0) return true; // try to match by location if (input->getAsSymbolNode()->getQualifier().hasLocation() && outputLocations.find(input->getAsSymbolNode()->getQualifier().layoutLocation) != outputLocations.end()) return true; if (input->getAsSymbolNode()->getBasicType() == EbtBlock) { int lastLocation = -1; if (input->getAsSymbolNode()->getQualifier().hasLocation()) lastLocation = input->getAsSymbolNode()->getQualifier().layoutLocation; const TTypeList* members = input->getAsSymbolNode()->getType().getStruct(); for (auto& member : *members) { int location = lastLocation; if (member.type->getQualifier().hasLocation()) location = member.type->getQualifier().layoutLocation; if (location != -1) { int locationSize = TIntermediate::computeTypeLocationSize(*member.type, getStage()); for (int i = 0; i < locationSize; ++i) if (outputLocations.find(location + i) != outputLocations.end()) return true; lastLocation = location + locationSize; } } } // otherwise, try to match by name return std::any_of(allOutputs.begin(), allOutputs.end(), [input](TIntermNode* output) { return output->getAsSymbolNode()->getAccessName() == input->getAsSymbolNode()->getAccessName(); }); }); unitLiveInputs.resize(liveEnd - unitLiveInputs.begin()); // check remaining loose unitStage inputs for a matching output block member liveEnd = std::remove_if(unitLiveInputs.begin(), unitLiveInputs.end(), [&allOutputs](TIntermNode* input) { return std::any_of(allOutputs.begin(), allOutputs.end(), [input](TIntermNode* output) { if (output->getAsSymbolNode()->getBasicType() != EbtBlock) return false; const TTypeList* members = output->getAsSymbolNode()->getType().getStruct(); return std::any_of(members->begin(), members->end(), [input](TTypeLoc type) { return type.type->getFieldName() == input->getAsSymbolNode()->getName(); }); }); }); unitLiveInputs.resize(liveEnd - unitLiveInputs.begin()); // finally, check remaining unitStage block inputs for a matching loose output liveEnd = std::remove_if( unitLiveInputs.begin(), unitLiveInputs.end(), [&allOutputs](TIntermNode* input) { if (input->getAsSymbolNode()->getBasicType() != EbtBlock) return false; // liveness isn't tracked per member so finding any one live member is the best we can do const TTypeList* members = input->getAsSymbolNode()->getType().getStruct(); return std::any_of(members->begin(), members->end(), [allOutputs](TTypeLoc type) { return std::any_of(allOutputs.begin(), allOutputs.end(), [&type](TIntermNode* output) { return type.type->getFieldName() == output->getAsSymbolNode()->getName(); }); }); }); unitLiveInputs.resize(liveEnd - unitLiveInputs.begin()); // any remaining unitStage inputs have no matching output std::for_each(unitLiveInputs.begin(), unitLiveInputs.end(), [&](TIntermNode* input) { unit.error(infoSink, &input->getLoc(), messages, "Preceding stage has no matching declaration for statically used input:", getStage()); infoSink.info << " " << input->getAsSymbolNode()->getType().getCompleteString( true, true, false, true, input->getAsSymbolNode()->getAccessName()) << "\n"; }); // TODO: warn about statically read inputs with outputs declared but not written to } void TIntermediate::optimizeStageIO(TInfoSink&, TIntermediate& unit) { // don't do any input/output demotion on compute, raytracing, or task/mesh stages // TODO: support task/mesh if (getStage() > EShLangFragment || unit.getStage() > EShLangFragment) { return; } class TIOTraverser : public TLiveTraverser { public: TIOTraverser(TIntermediate& i, bool all, TIntermSequence& sequence, TStorageQualifier storage) : TLiveTraverser(i, all, true, false, false), sequence(sequence), storage(storage) { } virtual void visitSymbol(TIntermSymbol* symbol) { if (symbol->getQualifier().storage == storage) { sequence.push_back(symbol); } } private: TIntermSequence& sequence; TStorageQualifier storage; }; // live symbols only TIntermSequence unitLiveInputs; TIOTraverser unitTraverser(unit, false, unitLiveInputs, EvqVaryingIn); unitTraverser.pushFunction(unit.getEntryPointMangledName().c_str()); while (! unitTraverser.destinations.empty()) { TIntermNode* destination = unitTraverser.destinations.back(); unitTraverser.destinations.pop_back(); destination->traverse(&unitTraverser); } TIntermSequence allOutputs; TIntermSequence unitAllInputs; TIOTraverser allTraverser(*this, true, allOutputs, EvqVaryingOut); getTreeRoot()->traverse(&allTraverser); TIOTraverser unitAllTraverser(unit, true, unitAllInputs, EvqVaryingIn); unit.getTreeRoot()->traverse(&unitAllTraverser); // find outputs not consumed by the next stage std::for_each(allOutputs.begin(), allOutputs.end(), [&unitLiveInputs, &unitAllInputs](TIntermNode* output) { // don't do anything to builtins if (output->getAsSymbolNode()->getAccessName().compare(0, 3, "gl_") == 0) return; // don't demote block outputs (for now) if (output->getAsSymbolNode()->getBasicType() == EbtBlock) return; // check if the (loose) output has a matching loose input auto isMatchingInput = [output](TIntermNode* input) { return output->getAsSymbolNode()->getAccessName() == input->getAsSymbolNode()->getAccessName(); }; // check if the (loose) output has a matching block member input auto isMatchingInputBlockMember = [output](TIntermNode* input) { // ignore loose inputs if (input->getAsSymbolNode()->getBasicType() != EbtBlock) return false; // don't demote loose outputs with matching input block members auto isMatchingBlockMember = [output](TTypeLoc type) { return type.type->getFieldName() == output->getAsSymbolNode()->getName(); }; const TTypeList* members = input->getAsSymbolNode()->getType().getStruct(); return std::any_of(members->begin(), members->end(), isMatchingBlockMember); }; // determine if the input/output pair should be demoted // do the faster (and more likely) loose-loose check first if (std::none_of(unitLiveInputs.begin(), unitLiveInputs.end(), isMatchingInput) && std::none_of(unitAllInputs.begin(), unitAllInputs.end(), isMatchingInputBlockMember)) { // demote any input matching the output auto demoteMatchingInputs = [output](TIntermNode* input) { if (output->getAsSymbolNode()->getAccessName() == input->getAsSymbolNode()->getAccessName()) { // demote input to a plain variable TIntermSymbol* symbol = input->getAsSymbolNode(); symbol->getQualifier().storage = EvqGlobal; symbol->getQualifier().clearInterstage(); symbol->getQualifier().clearLayout(); } }; // demote all matching outputs to a plain variable TIntermSymbol* symbol = output->getAsSymbolNode(); symbol->getQualifier().storage = EvqGlobal; symbol->getQualifier().clearInterstage(); symbol->getQualifier().clearLayout(); std::for_each(unitAllInputs.begin(), unitAllInputs.end(), demoteMatchingInputs); } }); } void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit) { if (unit.getNumEntryPoints() > 0) { if (getNumEntryPoints() > 0) error(infoSink, "can't handle multiple entry points per stage"); else { entryPointName = unit.getEntryPointName(); entryPointMangledName = unit.getEntryPointMangledName(); } } numEntryPoints += unit.getNumEntryPoints(); callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end()); } #define MERGE_MAX(member) member = std::max(member, unit.member) #define MERGE_TRUE(member) if (unit.member) member = unit.member; void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) { if (language != unit.language) error(infoSink, "stages must match when linking into a single stage"); if (getSource() == EShSourceNone) setSource(unit.getSource()); if (getSource() != unit.getSource()) error(infoSink, "can't link compilation units from different source languages"); if (treeRoot == nullptr) { profile = unit.profile; version = unit.version; requestedExtensions = unit.requestedExtensions; } else { if ((isEsProfile()) != (unit.isEsProfile())) error(infoSink, "Cannot cross link ES and desktop profiles"); else if (unit.profile == ECompatibilityProfile) profile = ECompatibilityProfile; version = std::max(version, unit.version); requestedExtensions.insert(unit.requestedExtensions.begin(), unit.requestedExtensions.end()); } MERGE_MAX(spvVersion.spv); MERGE_MAX(spvVersion.vulkanGlsl); MERGE_MAX(spvVersion.vulkan); MERGE_MAX(spvVersion.openGl); MERGE_TRUE(spvVersion.vulkanRelaxed); numErrors += unit.getNumErrors(); // Only one push_constant is allowed, mergeLinkerObjects() will ensure the push_constant // is the same for all units. if (numPushConstants > 1 || unit.numPushConstants > 1) error(infoSink, "Only one push_constant block is allowed per stage"); numPushConstants = std::min(numPushConstants + unit.numPushConstants, 1); if (unit.invocations != TQualifier::layoutNotSet) { if (invocations == TQualifier::layoutNotSet) invocations = unit.invocations; else if (invocations != unit.invocations) error(infoSink, "number of invocations must match between compilation units"); } // The GLSL specification requires that at least one compilation unit // must declare the vertices layout, but not all units need to do so. // However, all declarations must match. if (vertices == TQualifier::layoutNotSet) vertices = unit.vertices; else if (unit.vertices != TQualifier::layoutNotSet && vertices != unit.vertices) { if (language == EShLangGeometry || language == EShLangMesh) error(infoSink, "Contradictory layout max_vertices values"); else if (language == EShLangTessControl) error(infoSink, "Contradictory layout vertices values"); else assert(0); } // The mesh shader extension requires that at least one compilation unit // must declare the max_primitives layout, but not all units need to do so. // However, all declarations must match. if (primitives == TQualifier::layoutNotSet) primitives = unit.primitives; else if (unit.primitives != TQualifier::layoutNotSet && primitives != unit.primitives) { if (language == EShLangMesh) error(infoSink, "Contradictory layout max_primitives values"); else assert(0); } // The GLSL specification requires that at least one compilation unit // must declare the input primitive layout, but not all units need to do so. // However, all declarations must match. if (inputPrimitive == ElgNone) inputPrimitive = unit.inputPrimitive; else if (unit.inputPrimitive != ElgNone && inputPrimitive != unit.inputPrimitive) error(infoSink, "Contradictory input layout primitives"); // The GLSL specification requires that at least one compilation unit // must declare the output primitive layout, but not all units need to do so. // However, all declarations must match. if (outputPrimitive == ElgNone) outputPrimitive = unit.outputPrimitive; else if (unit.outputPrimitive != ElgNone && outputPrimitive != unit.outputPrimitive) error(infoSink, "Contradictory output layout primitives"); if (originUpperLeft != unit.originUpperLeft || pixelCenterInteger != unit.pixelCenterInteger) error(infoSink, "gl_FragCoord redeclarations must match across shaders"); // The GLSL specification requires that at least one compilation unit // must declare the vertex spacing layout, but not all units need to do so. // However, all declarations must match. if (vertexSpacing == EvsNone) vertexSpacing = unit.vertexSpacing; else if (unit.vertexSpacing != EvsNone && vertexSpacing != unit.vertexSpacing) error(infoSink, "Contradictory input vertex spacing"); // The GLSL specification requires that at least one compilation unit // must declare the triangle ordering layout, but not all units need to do so. // However, all declarations must match. if (vertexOrder == EvoNone) vertexOrder = unit.vertexOrder; else if (unit.vertexOrder != EvoNone && vertexOrder != unit.vertexOrder) error(infoSink, "Contradictory triangle ordering"); MERGE_TRUE(pointMode); for (int i = 0; i < 3; ++i) { // The GLSL specification requires that all workgroup size declarations must match // but not all units have to declare the layout. if (unit.localSizeNotDefault[i]) { if (!localSizeNotDefault[i]) { localSize[i] = unit.localSize[i]; localSizeNotDefault[i] = true; } else if (localSize[i] != unit.localSize[i]) error(infoSink, "Contradictory local size"); } // The GLSL specification requires that all workgroup size specialization // ids declarations must match, but not all units have to declare the layout. if (localSizeSpecId[i] == TQualifier::layoutNotSet) localSizeSpecId[i] = unit.localSizeSpecId[i]; else if (unit.localSizeSpecId[i] != TQualifier::layoutNotSet && localSizeSpecId[i] != unit.localSizeSpecId[i]) error(infoSink, "Contradictory local size specialization ids"); } MERGE_TRUE(earlyFragmentTests); MERGE_TRUE(postDepthCoverage); MERGE_TRUE(nonCoherentColorAttachmentReadEXT); MERGE_TRUE(nonCoherentDepthAttachmentReadEXT); MERGE_TRUE(nonCoherentStencilAttachmentReadEXT); MERGE_TRUE(nonCoherentTileAttachmentReadQCOM); // The GLSL specification requires that all depth layout redeclarations must match, // but not all units have to declare the layout. if (depthLayout == EldNone) depthLayout = unit.depthLayout; else if (unit.depthLayout != EldNone && depthLayout != unit.depthLayout) error(infoSink, "Contradictory depth layouts"); MERGE_TRUE(depthReplacing); MERGE_TRUE(hlslFunctionality1); blendEquations |= unit.blendEquations; MERGE_TRUE(xfbMode); for (size_t b = 0; b < xfbBuffers.size(); ++b) { // The GLSL specification requires that all xfb_stride declarations for // the same buffer must match, but not all units have to declare the layout. if (xfbBuffers[b].stride == TQualifier::layoutXfbStrideEnd) xfbBuffers[b].stride = unit.xfbBuffers[b].stride; else if (unit.xfbBuffers[b].stride != TQualifier::layoutXfbStrideEnd && xfbBuffers[b].stride != unit.xfbBuffers[b].stride) error(infoSink, "Contradictory xfb_stride"); xfbBuffers[b].implicitStride = std::max(xfbBuffers[b].implicitStride, unit.xfbBuffers[b].implicitStride); if (unit.xfbBuffers[b].contains64BitType) xfbBuffers[b].contains64BitType = true; if (unit.xfbBuffers[b].contains32BitType) xfbBuffers[b].contains32BitType = true; if (unit.xfbBuffers[b].contains16BitType) xfbBuffers[b].contains16BitType = true; // TODO: 4.4 link: enhanced layouts: compare ranges } MERGE_TRUE(multiStream); MERGE_TRUE(layoutOverrideCoverage); MERGE_TRUE(geoPassthroughEXT); for (unsigned int i = 0; i < unit.shiftBinding.size(); ++i) { if (unit.shiftBinding[i] > 0) setShiftBinding((TResourceType)i, unit.shiftBinding[i]); } for (unsigned int i = 0; i < unit.shiftBindingForSet.size(); ++i) { for (auto it = unit.shiftBindingForSet[i].begin(); it != unit.shiftBindingForSet[i].end(); ++it) setShiftBindingForSet((TResourceType)i, it->second, it->first); } resourceSetBinding.insert(resourceSetBinding.end(), unit.resourceSetBinding.begin(), unit.resourceSetBinding.end()); MERGE_TRUE(autoMapBindings); MERGE_TRUE(autoMapLocations); MERGE_TRUE(invertY); MERGE_TRUE(dxPositionW); MERGE_TRUE(debugInfo); MERGE_TRUE(flattenUniformArrays); MERGE_TRUE(useUnknownFormat); MERGE_TRUE(hlslOffsets); MERGE_TRUE(useStorageBuffer); MERGE_TRUE(invariantAll); MERGE_TRUE(hlslIoMapping); // TODO: sourceFile // TODO: sourceText // TODO: processes MERGE_TRUE(needToLegalize); MERGE_TRUE(binaryDoubleOutput); MERGE_TRUE(usePhysicalStorageBuffer); } // // Merge the 'unit' AST into 'this' AST. // That includes rationalizing the unique IDs, which were set up independently, // and might have overlaps that are not the same symbol, or might have different // IDs for what should be the same shared symbol. // void TIntermediate::mergeTrees(TInfoSink& infoSink, TIntermediate& unit) { if (unit.treeRoot == nullptr) return; if (treeRoot == nullptr) { treeRoot = unit.treeRoot; return; } // Getting this far means we have two existing trees to merge... numShaderRecordBlocks += unit.numShaderRecordBlocks; numTaskNVBlocks += unit.numTaskNVBlocks; // Get the top-level globals of each unit TIntermSequence& globals = treeRoot->getAsAggregate()->getSequence(); TIntermSequence& unitGlobals = unit.treeRoot->getAsAggregate()->getSequence(); // Get the linker-object lists TIntermSequence& linkerObjects = findLinkerObjects()->getSequence(); const TIntermSequence& unitLinkerObjects = unit.findLinkerObjects()->getSequence(); // Map by global name to unique ID to rationalize the same object having // differing IDs in different trees. TIdMaps idMaps; long long idShift; seedIdMap(idMaps, idShift); remapIds(idMaps, idShift + 1, unit); mergeBodies(infoSink, globals, unitGlobals); bool mergeExistingOnly = false; mergeGlobalUniformBlocks(infoSink, unit, mergeExistingOnly); mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage()); ioAccessed.insert(unit.ioAccessed.begin(), unit.ioAccessed.end()); } static const TString& getNameForIdMap(TIntermSymbol* symbol) { TShaderInterface si = symbol->getType().getShaderInterface(); if (si == EsiNone) return symbol->getName(); else return symbol->getType().getTypeName(); } // Traverser that seeds an ID map with all built-ins, and tracks the // maximum ID used, currently using (maximum ID + 1) as new symbol id shift seed. // Level id will keep same after shifting. // (It would be nice to put this in a function, but that causes warnings // on having no bodies for the copy-constructor/operator=.) class TBuiltInIdTraverser : public TIntermTraverser { public: TBuiltInIdTraverser(TIdMaps& idMaps) : idMaps(idMaps), idShift(0) { } // If it's a built in, add it to the map. virtual void visitSymbol(TIntermSymbol* symbol) { const TQualifier& qualifier = symbol->getType().getQualifier(); if (qualifier.builtIn != EbvNone) { TShaderInterface si = symbol->getType().getShaderInterface(); idMaps[si][getNameForIdMap(symbol)] = symbol->getId(); } idShift = (symbol->getId() & ~TSymbolTable::uniqueIdMask) | std::max(idShift & TSymbolTable::uniqueIdMask, symbol->getId() & TSymbolTable::uniqueIdMask); } long long getIdShift() const { return idShift; } protected: TBuiltInIdTraverser(TBuiltInIdTraverser&); TBuiltInIdTraverser& operator=(TBuiltInIdTraverser&); TIdMaps& idMaps; long long idShift; }; // Traverser that seeds an ID map with non-builtins. // (It would be nice to put this in a function, but that causes warnings // on having no bodies for the copy-constructor/operator=.) class TUserIdTraverser : public TIntermTraverser { public: TUserIdTraverser(TIdMaps& idMaps) : idMaps(idMaps) { } // If its a non-built-in global, add it to the map. virtual void visitSymbol(TIntermSymbol* symbol) { const TQualifier& qualifier = symbol->getType().getQualifier(); if (qualifier.builtIn == EbvNone) { TShaderInterface si = symbol->getType().getShaderInterface(); idMaps[si][getNameForIdMap(symbol)] = symbol->getId(); } } protected: TUserIdTraverser(TUserIdTraverser&); TUserIdTraverser& operator=(TUserIdTraverser&); TIdMaps& idMaps; // over biggest id }; // Initialize the the ID map with what we know of 'this' AST. void TIntermediate::seedIdMap(TIdMaps& idMaps, long long& idShift) { // all built-ins everywhere need to align on IDs and contribute to the max ID TBuiltInIdTraverser builtInIdTraverser(idMaps); treeRoot->traverse(&builtInIdTraverser); idShift = builtInIdTraverser.getIdShift() & TSymbolTable::uniqueIdMask; // user variables in the linker object list need to align on ids TUserIdTraverser userIdTraverser(idMaps); findLinkerObjects()->traverse(&userIdTraverser); } // Traverser to map an AST ID to what was known from the seeding AST. // (It would be nice to put this in a function, but that causes warnings // on having no bodies for the copy-constructor/operator=.) class TRemapIdTraverser : public TIntermTraverser { public: TRemapIdTraverser(const TIdMaps& idMaps, long long idShift) : idMaps(idMaps), idShift(idShift) { } // Do the mapping: // - if the same symbol, adopt the 'this' ID // - otherwise, ensure a unique ID by shifting to a new space virtual void visitSymbol(TIntermSymbol* symbol) { const TQualifier& qualifier = symbol->getType().getQualifier(); bool remapped = false; if (qualifier.isLinkable() || qualifier.builtIn != EbvNone) { TShaderInterface si = symbol->getType().getShaderInterface(); auto it = idMaps[si].find(getNameForIdMap(symbol)); if (it != idMaps[si].end()) { uint64_t id = (symbol->getId() & ~TSymbolTable::uniqueIdMask) | (it->second & TSymbolTable::uniqueIdMask); symbol->changeId(id); remapped = true; } } if (!remapped) symbol->changeId(symbol->getId() + idShift); } protected: TRemapIdTraverser(TRemapIdTraverser&); TRemapIdTraverser& operator=(TRemapIdTraverser&); const TIdMaps& idMaps; long long idShift; }; void TIntermediate::remapIds(const TIdMaps& idMaps, long long idShift, TIntermediate& unit) { // Remap all IDs to either share or be unique, as dictated by the idMap and idShift. TRemapIdTraverser idTraverser(idMaps, idShift); unit.getTreeRoot()->traverse(&idTraverser); } // // Merge the function bodies and global-level initializers from unitGlobals into globals. // Will error check duplication of function bodies for the same signature. // void TIntermediate::mergeBodies(TInfoSink& infoSink, TIntermSequence& globals, const TIntermSequence& unitGlobals) { // TODO: link-time performance: Processing in alphabetical order will be faster // Error check the global objects, not including the linker objects for (unsigned int child = 0; child < globals.size() - 1; ++child) { for (unsigned int unitChild = 0; unitChild < unitGlobals.size() - 1; ++unitChild) { TIntermAggregate* body = globals[child]->getAsAggregate(); TIntermAggregate* unitBody = unitGlobals[unitChild]->getAsAggregate(); if (body && unitBody && body->getOp() == EOpFunction && unitBody->getOp() == EOpFunction && body->getName() == unitBody->getName()) { error(infoSink, "Multiple function bodies in multiple compilation units for the same signature in the same stage:"); infoSink.info << " " << globals[child]->getAsAggregate()->getName() << "\n"; } } } // Merge the global objects, just in front of the linker objects globals.insert(globals.end() - 1, unitGlobals.begin(), unitGlobals.end() - 1); } // // Global Unfiform block stores any default uniforms (i.e. uniforms without a block) // If two linked stages declare the same member, they are meant to be the same uniform // and need to be in the same block // merge the members of different stages to allow them to be linked properly // as a single block // void TIntermediate::mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate& unit, bool mergeExistingOnly) { TIntermSequence& linkerObjects = findLinkerObjects()->getSequence(); TIntermSequence& unitLinkerObjects = unit.findLinkerObjects()->getSequence(); // build lists of default blocks from the intermediates TIntermSequence defaultBlocks; TIntermSequence unitDefaultBlocks; auto filter = [](TIntermSequence& list, TIntermNode* node) { if (node->getAsSymbolNode()->getQualifier().defaultBlock) { list.push_back(node); } }; std::for_each(linkerObjects.begin(), linkerObjects.end(), [&defaultBlocks, &filter](TIntermNode* node) { filter(defaultBlocks, node); }); std::for_each(unitLinkerObjects.begin(), unitLinkerObjects.end(), [&unitDefaultBlocks, &filter](TIntermNode* node) { filter(unitDefaultBlocks, node); }); auto itUnitBlock = unitDefaultBlocks.begin(); for (; itUnitBlock != unitDefaultBlocks.end(); itUnitBlock++) { bool add = !mergeExistingOnly; auto itBlock = defaultBlocks.begin(); for (; itBlock != defaultBlocks.end(); itBlock++) { TIntermSymbol* block = (*itBlock)->getAsSymbolNode(); TIntermSymbol* unitBlock = (*itUnitBlock)->getAsSymbolNode(); assert(block && unitBlock); // if the two default blocks match, then merge their definitions if (block->getType().getTypeName() == unitBlock->getType().getTypeName() && block->getQualifier().storage == unitBlock->getQualifier().storage) { add = false; mergeBlockDefinitions(infoSink, block, unitBlock, &unit); } } if (add) { // push back on original list; won't change the size of the list we're iterating over linkerObjects.push_back(*itUnitBlock); } } } void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unit) { if (block->getType().getTypeName() != unitBlock->getType().getTypeName() || block->getType().getBasicType() != unitBlock->getType().getBasicType() || block->getQualifier().storage != unitBlock->getQualifier().storage || block->getQualifier().layoutSet != unitBlock->getQualifier().layoutSet) { // different block names likely means different blocks return; } // merge the struct // order of declarations doesn't matter and they matched based on member name TTypeList* memberList = block->getType().getWritableStruct(); TTypeList* unitMemberList = unitBlock->getType().getWritableStruct(); // keep track of which members have changed position // so we don't have to search the array again std::map memberIndexUpdates; size_t memberListStartSize = memberList->size(); for (unsigned int i = 0; i < unitMemberList->size(); ++i) { bool merge = true; for (unsigned int j = 0; j < memberListStartSize; ++j) { if ((*memberList)[j].type->getFieldName() == (*unitMemberList)[i].type->getFieldName()) { merge = false; const TType* memberType = (*memberList)[j].type; const TType* unitMemberType = (*unitMemberList)[i].type; // compare types // don't need as many checks as when merging symbols, since // initializers and most qualifiers are stripped when the member is moved into the block if ((*memberType) != (*unitMemberType)) { error(infoSink, "Types must match:", unitBlock->getStage()); infoSink.info << " " << memberType->getFieldName() << ": "; infoSink.info << "\"" << memberType->getCompleteString() << "\" in stage " << StageName(block->getStage()) << " versus "; infoSink.info << "\"" << unitMemberType->getCompleteString() << "\" in stage " << StageName(unitBlock->getStage()) << "\n"; } memberIndexUpdates[i] = j; } } if (merge) { memberList->push_back((*unitMemberList)[i]); memberIndexUpdates[i] = (unsigned int)memberList->size() - 1; } } // update symbol node in unit tree, // and other nodes that may reference it class TMergeBlockTraverser : public TIntermTraverser { public: 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* memberIdxUpdates) : TIntermTraverser(false, true), newSymbol(newSym), newType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) { } virtual ~TMergeBlockTraverser() {} const TIntermSymbol* newSymbol; const glslang::TType* newType; // shallow copy of the new type glslang::TIntermediate* unit; // intermediate that is being updated const std::map* memberIndexUpdates; virtual void visitSymbol(TIntermSymbol* symbol) { 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 (!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 assert(node->getRight()->getAsConstantUnion()); 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()); node->setRight(newConstNode); delete constNode; return true; } return true; } }; // '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); } // // Merge the linker objects from unitLinkerObjects into linkerObjects. // Duplication is expected and filtered out, but contradictions are an error. // void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects, EShLanguage unitStage) { // Error check and merge the linker objects (duplicates should not be created) std::size_t initialNumLinkerObjects = linkerObjects.size(); for (unsigned int unitLinkObj = 0; unitLinkObj < unitLinkerObjects.size(); ++unitLinkObj) { bool merge = true; for (std::size_t linkObj = 0; linkObj < initialNumLinkerObjects; ++linkObj) { TIntermSymbol* symbol = linkerObjects[linkObj]->getAsSymbolNode(); TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); assert(symbol && unitSymbol); if (isSameSymbol(symbol, unitSymbol)) { // filter out copy merge = false; // but if one has an initializer and the other does not, update // the initializer if (symbol->getConstArray().empty() && ! unitSymbol->getConstArray().empty()) symbol->setConstArray(unitSymbol->getConstArray()); // Similarly for binding if (! symbol->getQualifier().hasBinding() && unitSymbol->getQualifier().hasBinding()) symbol->getQualifier().layoutBinding = unitSymbol->getQualifier().layoutBinding; // Similarly for location if (!symbol->getQualifier().hasLocation() && unitSymbol->getQualifier().hasLocation()) { symbol->getQualifier().layoutLocation = unitSymbol->getQualifier().layoutLocation; } // Update implicit array sizes if (symbol->getWritableType().isImplicitlySizedArray() && unitSymbol->getType().isImplicitlySizedArray()) { if (unitSymbol->getType().getImplicitArraySize() > symbol->getType().getImplicitArraySize()){ symbol->getWritableType().updateImplicitArraySize(unitSymbol->getType().getImplicitArraySize()); } } else if (symbol->getWritableType().isImplicitlySizedArray() && unitSymbol->getType().isSizedArray()) { if (symbol->getWritableType().getImplicitArraySize() > unitSymbol->getType().getOuterArraySize()) error(infoSink, "Implicit size of unsized array doesn't match same symbol among multiple shaders.", unitStage); } else if (unitSymbol->getType().isImplicitlySizedArray() && symbol->getWritableType().isSizedArray()) { if (unitSymbol->getType().getImplicitArraySize() > symbol->getWritableType().getOuterArraySize()) error(infoSink, "Implicit size of unsized array doesn't match same symbol among multiple shaders.", unitStage); } if (symbol->getType().isStruct() && unitSymbol->getType().isStruct() && symbol->getType().getStruct()->size() == unitSymbol->getType().getStruct()->size()) { for (int i = 0; i < (int)symbol->getType().getStruct()->size(); ++i) { auto& type = (*symbol->getWritableType().getStruct())[i]; auto& unitType = (*unitSymbol->getWritableType().getStruct())[i]; if (type.type->isImplicitlySizedArray() && unitType.type->isImplicitlySizedArray()) { if (unitType.type->getImplicitArraySize() > type.type->getImplicitArraySize()) type.type->updateImplicitArraySize(unitType.type->getImplicitArraySize()); } else if (type.type->isImplicitlySizedArray() && unitType.type->isSizedArray()) { if (type.type->getImplicitArraySize() > unitType.type->getOuterArraySize()) error(infoSink, "Implicit size of unsized array doesn't match same symbol among multiple shaders.", unitStage); } else if (type.type->isSizedArray() && unitType.type->isImplicitlySizedArray()) { if (type.type->getOuterArraySize() < unitType.type->getImplicitArraySize()) error(infoSink, "Implicit size of unsized array doesn't match same symbol among multiple shaders.", unitStage); } } } // Update implicit array sizes mergeImplicitArraySizes(symbol->getWritableType(), unitSymbol->getType()); // Check for consistent types/qualification/initializers etc. mergeErrorCheck(infoSink, *symbol, *unitSymbol); } // If different symbols, verify they arn't push_constant since there can only be one per stage else if (symbol->getQualifier().isPushConstant() && unitSymbol->getQualifier().isPushConstant() && getStage() == unitStage) error(infoSink, "Only one push_constant block is allowed per stage"); } // Check conflicts between preset primitives and sizes of I/O variables among multiple geometry shaders if (language == EShLangGeometry && unitStage == EShLangGeometry) { TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); if (unitSymbol->isArray() && unitSymbol->getQualifier().storage == EvqVaryingIn && unitSymbol->getQualifier().builtIn == EbvNone) if ((unitSymbol->getArraySizes()->isImplicitlySized() && unitSymbol->getArraySizes()->getImplicitSize() != TQualifier::mapGeometryToSize(getInputPrimitive())) || (! unitSymbol->getArraySizes()->isImplicitlySized() && unitSymbol->getArraySizes()->getDimSize(0) != TQualifier::mapGeometryToSize(getInputPrimitive()))) error(infoSink, "Not all array sizes match across all geometry shaders in the program"); } if (merge) { linkerObjects.push_back(unitLinkerObjects[unitLinkObj]); // for anonymous blocks, check that their members don't conflict with other names if (unitLinkerObjects[unitLinkObj]->getAsSymbolNode()->getBasicType() == EbtBlock && IsAnonymous(unitLinkerObjects[unitLinkObj]->getAsSymbolNode()->getName())) { for (std::size_t linkObj = 0; linkObj < initialNumLinkerObjects; ++linkObj) { TIntermSymbol* symbol = linkerObjects[linkObj]->getAsSymbolNode(); TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); assert(symbol && unitSymbol); 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() && !((*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"; } } }; if (isSameInterface(symbol, unitSymbol)) { checkName(symbol->getName()); // check members of other anonymous blocks if (symbol->getBasicType() == EbtBlock && IsAnonymous(symbol->getName())) { for (unsigned int i = 0; i < symbol->getType().getStruct()->size(); ++i) { checkName((*symbol->getType().getStruct())[i].type->getFieldName()); } } } } } } } } // TODO 4.5 link functionality: cull distance array size checking // Recursively merge the implicit array sizes through the objects' respective type trees. void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType) { if (type.isUnsizedArray()) { if (unitType.isUnsizedArray()) { type.updateImplicitArraySize(unitType.getImplicitArraySize()); if (unitType.isArrayVariablyIndexed()) type.setArrayVariablyIndexed(); } else if (unitType.isSizedArray()) type.changeOuterArraySize(unitType.getOuterArraySize()); } // Type mismatches are caught and reported after this, just be careful for now. if (! type.isStruct() || ! unitType.isStruct() || type.getStruct()->size() != unitType.getStruct()->size()) return; for (int i = 0; i < (int)type.getStruct()->size(); ++i) mergeImplicitArraySizes(*(*type.getStruct())[i].type, *(*unitType.getStruct())[i].type); } // // Compare two global objects from two compilation units and see if they match // well enough. Rules can be different for intra- vs. cross-stage matching. // // This function only does one of intra- or cross-stage matching per call. // void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol) { EShLanguage stage = symbol.getStage(); EShLanguage unitStage = unitSymbol.getStage(); bool crossStage = stage != unitStage; bool writeTypeComparison = false; bool errorReported = false; bool printQualifiers = false; bool printPrecision = false; bool printType = false; // Types have to match { // but, we make an exception if one is an implicit array and the other is sized // or if the array sizes differ because of the extra array dimension on some in/out boundaries bool arraysMatch = false; if (isIoResizeArray(symbol.getType(), stage) || isIoResizeArray(unitSymbol.getType(), unitStage)) { // if the arrays have an extra dimension because of the stage. // compare dimensions while ignoring the outer dimension unsigned int firstDim = isIoResizeArray(symbol.getType(), stage) ? 1 : 0; unsigned int numDim = symbol.getArraySizes() ? symbol.getArraySizes()->getNumDims() : 0; unsigned int unitFirstDim = isIoResizeArray(unitSymbol.getType(), unitStage) ? 1 : 0; unsigned int unitNumDim = unitSymbol.getArraySizes() ? unitSymbol.getArraySizes()->getNumDims() : 0; arraysMatch = (numDim - firstDim) == (unitNumDim - unitFirstDim); // check that array sizes match as well for (unsigned int i = 0; i < (numDim - firstDim) && arraysMatch; i++) { if (symbol.getArraySizes()->getDimSize(firstDim + i) != unitSymbol.getArraySizes()->getDimSize(unitFirstDim + i)) { arraysMatch = false; break; } } } else { arraysMatch = symbol.getType().sameArrayness(unitSymbol.getType()) || (symbol.getType().isArray() && unitSymbol.getType().isArray() && (symbol.getType().isImplicitlySizedArray() || unitSymbol.getType().isImplicitlySizedArray() || symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray())); } 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(stage) << " 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(stage); errmsg.append(" block member has no corresponding member in ").append(StageName(unitStage)).append(" block:"); error(infoSink, errmsg.c_str(), unitStage); infoSink.info << " " << StageName(stage) << " 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(stage)).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(stage) << " 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; printType = true; } else if (!symbol.getType().sameTypeParameters(unitSymbol.getType())) { error(infoSink, "Type parameters must match:", unitStage); writeTypeComparison = true; printType = true; } } // Interface block member-wise layout qualifiers have to match if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock && symbol.getType().getStruct() && unitSymbol.getType().getStruct() && symbol.getType().sameStructType(unitSymbol.getType())) { unsigned int li = 0; unsigned int ri = 0; while (li < symbol.getType().getStruct()->size() && ri < unitSymbol.getType().getStruct()->size()) { if ((*symbol.getType().getStruct())[li].type->hiddenMember()) { ++li; continue; } if ((*unitSymbol.getType().getStruct())[ri].type->hiddenMember()) { ++ri; continue; } const TQualifier& qualifier = (*symbol.getType().getStruct())[li].type->getQualifier(); const TQualifier & unitQualifier = (*unitSymbol.getType().getStruct())[ri].type->getQualifier(); 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(stage) << " 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; } } bool isInOut = crossStage && ((symbol.getQualifier().storage == EvqVaryingIn && unitSymbol.getQualifier().storage == EvqVaryingOut) || (symbol.getQualifier().storage == EvqVaryingOut && unitSymbol.getQualifier().storage == EvqVaryingIn)); // Qualifiers have to (almost) match // Storage... if (!isInOut && symbol.getQualifier().storage != unitSymbol.getQualifier().storage) { error(infoSink, "Storage qualifiers must match:", unitStage); writeTypeComparison = true; printQualifiers = true; } // Uniform and buffer blocks must either both have an instance name, or // must both be anonymous. The names don't need to match though. if (symbol.getQualifier().isUniformOrBuffer() && (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()))) { error(infoSink, "Matched Uniform or Storage blocks must all be anonymous," " or all be named:", 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.", unitStage); writeTypeComparison = true; } // Precision... if (!isInOut && symbol.getQualifier().precision != unitSymbol.getQualifier().precision) { 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:", unitStage); writeTypeComparison = true; printQualifiers = true; } // Precise... if (! crossStage && symbol.getQualifier().isNoContraction() != unitSymbol.getQualifier().isNoContraction()) { 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. // These mismatches are allowed between any pair of stages ... // those provided in the fragment shader supersede those provided in previous stages." if (!crossStage && (symbol.getQualifier().centroid != unitSymbol.getQualifier().centroid || symbol.getQualifier().smooth != unitSymbol.getQualifier().smooth || symbol.getQualifier().flat != unitSymbol.getQualifier().flat || 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:", unitStage); writeTypeComparison = true; printQualifiers = true; } // Memory... 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().nontemporal != unitSymbol.getQualifier().nontemporal) { error(infoSink, "Memory nontemporal 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. 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 && ! errorReported) { if (! symbol.getConstArray().empty() && ! unitSymbol.getConstArray().empty()) { if (symbol.getConstArray() != unitSymbol.getConstArray()) { error(infoSink, "Initializers must match:", unitStage); infoSink.info << " " << symbol.getName() << "\n"; } } } if (writeTypeComparison) { if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock && symbol.getType().getStruct() && unitSymbol.getType().getStruct()) { if (printType) { infoSink.info << " " << StageName(stage) << " 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(stage) << " 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(stage) << " 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(stage) << " 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"; } } } } void TIntermediate::sharedBlockCheck(TInfoSink& infoSink) { bool has_shared_block = false; bool has_shared_non_block = false; TIntermSequence& linkObjects = findLinkerObjects()->getSequence(); for (size_t i = 0; i < linkObjects.size(); ++i) { const TType& type = linkObjects[i]->getAsTyped()->getType(); const TQualifier& qualifier = type.getQualifier(); if (qualifier.storage == glslang::EvqShared) { if (type.getBasicType() == glslang::EbtBlock) has_shared_block = true; else has_shared_non_block = true; } } if (has_shared_block && has_shared_non_block) error(infoSink, "cannot mix use of shared variables inside and outside blocks"); } // // Do final link-time error checking of a complete (merged) intermediate representation. // (Much error checking was done during merging). // // Also, lock in defaults of things not set. // Defer adopting implicit array sizes to later, after all stages are merged. // void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) { if (getTreeRoot() == nullptr) return; if (numEntryPoints < 1) { if (getSource() == EShSourceGlsl) error(infoSink, "Missing entry point: Each stage requires one entry point"); else warn(infoSink, "Entry point not found"); } // recursion and missing body checking checkCallGraphCycles(infoSink); checkCallGraphBodies(infoSink, keepUncalled); // overlap/alias/missing I/O, etc. inOutLocationCheck(infoSink); if (getNumPushConstants() > 1) error(infoSink, "Only one push_constant block is allowed per stage"); // invocations if (invocations == TQualifier::layoutNotSet) invocations = 1; if (inIoAccessed("gl_ClipDistance") && inIoAccessed("gl_ClipVertex")) error(infoSink, "Can only use one of gl_ClipDistance or gl_ClipVertex (gl_ClipDistance is preferred)"); if (inIoAccessed("gl_CullDistance") && inIoAccessed("gl_ClipVertex")) error(infoSink, "Can only use one of gl_CullDistance or gl_ClipVertex (gl_ClipDistance is preferred)"); if (userOutputUsed() && (inIoAccessed("gl_FragColor") || inIoAccessed("gl_FragData"))) error(infoSink, "Cannot use gl_FragColor or gl_FragData when using user-defined outputs"); if (inIoAccessed("gl_FragColor") && inIoAccessed("gl_FragData")) error(infoSink, "Cannot use both gl_FragColor and gl_FragData"); for (size_t b = 0; b < xfbBuffers.size(); ++b) { if (xfbBuffers[b].contains64BitType) RoundToPow2(xfbBuffers[b].implicitStride, 8); else if (xfbBuffers[b].contains32BitType) RoundToPow2(xfbBuffers[b].implicitStride, 4); else if (xfbBuffers[b].contains16BitType) RoundToPow2(xfbBuffers[b].implicitStride, 2); // "It is a compile-time or link-time error to have // any xfb_offset that overflows xfb_stride, whether stated on declarations before or after the xfb_stride, or // in different compilation units. While xfb_stride can be declared multiple times for the same buffer, it is a // compile-time or link-time error to have different values specified for the stride for the same buffer." if (xfbBuffers[b].stride != TQualifier::layoutXfbStrideEnd && xfbBuffers[b].implicitStride > xfbBuffers[b].stride) { error(infoSink, "xfb_stride is too small to hold all buffer entries:"); infoSink.info.prefix(EPrefixError); infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << ", minimum stride needed: " << xfbBuffers[b].implicitStride << "\n"; } if (xfbBuffers[b].stride == TQualifier::layoutXfbStrideEnd) xfbBuffers[b].stride = xfbBuffers[b].implicitStride; // "If the buffer is capturing any // outputs with double-precision or 64-bit integer components, the stride must be a multiple of 8, otherwise it must be a // multiple of 4, or a compile-time or link-time error results." if (xfbBuffers[b].contains64BitType && ! IsMultipleOfPow2(xfbBuffers[b].stride, 8)) { error(infoSink, "xfb_stride must be multiple of 8 for buffer holding a double or 64-bit integer:"); infoSink.info.prefix(EPrefixError); infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n"; } else if (xfbBuffers[b].contains32BitType && ! IsMultipleOfPow2(xfbBuffers[b].stride, 4)) { error(infoSink, "xfb_stride must be multiple of 4:"); infoSink.info.prefix(EPrefixError); infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n"; } // "If the buffer is capturing any // outputs with half-precision or 16-bit integer components, the stride must be a multiple of 2" else if (xfbBuffers[b].contains16BitType && ! IsMultipleOfPow2(xfbBuffers[b].stride, 2)) { error(infoSink, "xfb_stride must be multiple of 2 for buffer holding a half float or 16-bit integer:"); infoSink.info.prefix(EPrefixError); infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n"; } // "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the // implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents." if (xfbBuffers[b].stride > (unsigned int)(4 * resources->maxTransformFeedbackInterleavedComponents)) { error(infoSink, "xfb_stride is too large:"); infoSink.info.prefix(EPrefixError); infoSink.info << " xfb_buffer " << (unsigned int)b << ", components (1/4 stride) needed are " << xfbBuffers[b].stride/4 << ", gl_MaxTransformFeedbackInterleavedComponents is " << resources->maxTransformFeedbackInterleavedComponents << "\n"; } } switch (language) { case EShLangVertex: break; case EShLangTessControl: if (vertices == TQualifier::layoutNotSet) error(infoSink, "At least one shader must specify an output layout(vertices=...)"); break; case EShLangTessEvaluation: if (getSource() == EShSourceGlsl) { if (inputPrimitive == ElgNone) error(infoSink, "At least one shader must specify an input layout primitive"); if (vertexSpacing == EvsNone) vertexSpacing = EvsEqual; if (vertexOrder == EvoNone) vertexOrder = EvoCcw; } break; case EShLangGeometry: if (inputPrimitive == ElgNone) error(infoSink, "At least one shader must specify an input layout primitive"); if (outputPrimitive == ElgNone) error(infoSink, "At least one shader must specify an output layout primitive"); if (vertices == TQualifier::layoutNotSet) 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 // requiring explicit early_fragment_tests if (getPostDepthCoverage() && !getEarlyFragmentTests()) error(infoSink, "post_depth_coverage requires early_fragment_tests"); break; case EShLangCompute: sharedBlockCheck(infoSink); break; case EShLangRayGen: case EShLangIntersect: case EShLangAnyHit: case EShLangClosestHit: case EShLangMiss: case EShLangCallable: if (numShaderRecordBlocks > 1) error(infoSink, "Only one shaderRecordNV buffer block is allowed per stage"); break; case 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"); if (inIoAccessed("gl_ClipDistance") && inIoAccessed("gl_ClipDistancePerViewNV")) error(infoSink, "Can only use one of gl_ClipDistance or gl_ClipDistancePerViewNV"); if (inIoAccessed("gl_CullDistance") && inIoAccessed("gl_CullDistancePerViewNV")) error(infoSink, "Can only use one of gl_CullDistance or gl_CullDistancePerViewNV"); if (inIoAccessed("gl_Layer") && inIoAccessed("gl_LayerPerViewNV")) error(infoSink, "Can only use one of gl_Layer or gl_LayerPerViewNV"); if (inIoAccessed("gl_ViewportMask") && inIoAccessed("gl_ViewportMaskPerViewNV")) error(infoSink, "Can only use one of gl_ViewportMask or gl_ViewportMaskPerViewNV"); if (outputPrimitive == ElgNone) error(infoSink, "At least one shader must specify an output layout primitive"); if (vertices == TQualifier::layoutNotSet) error(infoSink, "At least one shader must specify a layout(max_vertices = value)"); if (primitives == TQualifier::layoutNotSet) error(infoSink, "At least one shader must specify a layout(max_primitives = value)"); [[fallthrough]]; 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: error(infoSink, "Unknown Stage."); break; } } // // See if the call graph contains any static recursion, which is disallowed // by the specification. // void TIntermediate::checkCallGraphCycles(TInfoSink& infoSink) { // Clear fields we'll use for this. for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { call->visited = false; call->currentPath = false; call->errorGiven = false; } // // Loop, looking for a new connected subgraph. One subgraph is handled per loop iteration. // TCall* newRoot; do { // See if we have unvisited parts of the graph. newRoot = nullptr; for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { if (! call->visited) { newRoot = &(*call); break; } } // If not, we are done. if (! newRoot) break; // Otherwise, we found a new subgraph, process it: // See what all can be reached by this new root, and if any of // that is recursive. This is done by depth-first traversals, seeing // if a new call is found that was already in the currentPath (a back edge), // thereby detecting recursion. std::list stack; newRoot->currentPath = true; // currentPath will be true iff it is on the stack stack.push_back(newRoot); while (! stack.empty()) { // get a caller TCall* call = stack.back(); // Add to the stack just one callee. // This algorithm always terminates, because only !visited and !currentPath causes a push // and all pushes change currentPath to true, and all pops change visited to true. TGraph::iterator child = callGraph.begin(); for (; child != callGraph.end(); ++child) { // If we already visited this node, its whole subgraph has already been processed, so skip it. if (child->visited) continue; if (call->callee == child->caller) { if (child->currentPath) { // Then, we found a back edge if (! child->errorGiven) { error(infoSink, "Recursion detected:"); infoSink.info << " " << call->callee << " calling " << child->callee << "\n"; child->errorGiven = true; recursive = true; } } else { child->currentPath = true; stack.push_back(&(*child)); break; } } } if (child == callGraph.end()) { // no more callees, we bottomed out, never look at this node again stack.back()->currentPath = false; stack.back()->visited = true; stack.pop_back(); } } // end while, meaning nothing left to process in this subtree } while (newRoot); // redundant loop check; should always exit via the 'break' above } // // See which functions are reachable from the entry point and which have bodies. // Reachable ones with missing bodies are errors. // Unreachable bodies are dead code. // void TIntermediate::checkCallGraphBodies(TInfoSink& infoSink, bool keepUncalled) { // Clear fields we'll use for this. for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { call->visited = false; call->calleeBodyPosition = -1; } // The top level of the AST includes function definitions (bodies). // Compare these to function calls in the call graph. // We'll end up knowing which have bodies, and if so, // how to map the call-graph node to the location in the AST. TIntermSequence &functionSequence = getTreeRoot()->getAsAggregate()->getSequence(); std::vector reachable(functionSequence.size(), true); // so that non-functions are reachable for (int f = 0; f < (int)functionSequence.size(); ++f) { glslang::TIntermAggregate* node = functionSequence[f]->getAsAggregate(); if (node && (node->getOp() == glslang::EOpFunction)) { if (node->getName().compare(getEntryPointMangledName().c_str()) != 0) reachable[f] = false; // so that function bodies are unreachable, until proven otherwise for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { if (call->callee == node->getName()) call->calleeBodyPosition = f; } } } // Start call-graph traversal by visiting the entry point nodes. for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { if (call->caller.compare(getEntryPointMangledName().c_str()) == 0) call->visited = true; } // Propagate 'visited' through the call-graph to every part of the graph it // can reach (seeded with the entry-point setting above). bool changed; do { changed = false; for (auto call1 = callGraph.begin(); call1 != callGraph.end(); ++call1) { if (call1->visited) { for (TGraph::iterator call2 = callGraph.begin(); call2 != callGraph.end(); ++call2) { if (! call2->visited) { if (call1->callee == call2->caller) { changed = true; call2->visited = true; } } } } } } while (changed); // Any call-graph node set to visited but without a callee body is an error. for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { if (call->visited) { if (call->calleeBodyPosition == -1) { error(infoSink, "No function definition (body) found: "); infoSink.info << " " << call->callee << "\n"; } else reachable[call->calleeBodyPosition] = true; } } // Bodies in the AST not reached by the call graph are dead; // clear them out, since they can't be reached and also can't // be translated further due to possibility of being ill defined. if (! keepUncalled) { for (int f = 0; f < (int)functionSequence.size(); ++f) { if (! reachable[f]) { resetTopLevelUncalledStatus(functionSequence[f]->getAsAggregate()->getName()); functionSequence[f] = nullptr; } } functionSequence.erase(std::remove(functionSequence.begin(), functionSequence.end(), nullptr), functionSequence.end()); } } // // Satisfy rules for location qualifiers on inputs and outputs // void TIntermediate::inOutLocationCheck(TInfoSink& infoSink) { // ES 3.0 requires all outputs to have location qualifiers if there is more than one output bool fragOutWithNoLocation = false; int numFragOut = 0; // TODO: linker functionality: location collision checking TIntermSequence& linkObjects = findLinkerObjects()->getSequence(); for (size_t i = 0; i < linkObjects.size(); ++i) { const TType& type = linkObjects[i]->getAsTyped()->getType(); const TQualifier& qualifier = type.getQualifier(); if (language == EShLangFragment) { if (qualifier.storage == EvqVaryingOut && qualifier.builtIn == EbvNone) { ++numFragOut; if (!qualifier.hasAnyLocation()) fragOutWithNoLocation = true; } } } if (isEsProfile()) { if (numFragOut > 1 && fragOutWithNoLocation) error(infoSink, "when more than one fragment shader output, all must have location qualifiers"); } } TIntermAggregate* TIntermediate::findLinkerObjects() const { // Get the top-level globals TIntermSequence& globals = treeRoot->getAsAggregate()->getSequence(); // Get the last member of the sequences, expected to be the linker-object lists assert(globals.back()->getAsAggregate()->getOp() == EOpLinkerObjects); return globals.back()->getAsAggregate(); } // See if a variable was both a user-declared output and used. // Note: the spec discusses writing to one, but this looks at read or write, which // is more useful, and perhaps the spec should be changed to reflect that. bool TIntermediate::userOutputUsed() const { const TIntermSequence& linkerObjects = findLinkerObjects()->getSequence(); bool found = false; for (size_t i = 0; i < linkerObjects.size(); ++i) { const TIntermSymbol& symbolNode = *linkerObjects[i]->getAsSymbolNode(); if (symbolNode.getQualifier().storage == EvqVaryingOut && symbolNode.getName().compare(0, 3, "gl_") != 0 && inIoAccessed(symbolNode.getName())) { found = true; break; } } return found; } // Accumulate locations used for inputs, outputs, and uniforms, payload, callable data, and tileImageEXT // and check for collisions as the accumulation is done. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. // // typeCollision is set to true if there is no direct collision, but the types in the same location // are different. // int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& type, bool& typeCollision) { typeCollision = false; int set; if (qualifier.isPipeInput()) set = 0; else if (qualifier.isPipeOutput()) set = 1; else if (qualifier.storage == EvqUniform) set = 2; else if (qualifier.storage == EvqBuffer) set = 3; else if (qualifier.storage == EvqTileImageEXT) set = 4; else if (qualifier.isAnyPayload()) set = 0; else if (qualifier.isAnyCallable()) set = 1; else if (qualifier.isHitObjectAttrNV()) set = 2; else return -1; int size; if (qualifier.isAnyPayload() || qualifier.isAnyCallable()) { size = 1; } else if (qualifier.isUniformOrBuffer() || qualifier.isTaskMemory()) { if (type.isSizedArray()) size = type.getCumulativeArraySize(); else size = 1; } else { // Strip off the outer array dimension for those having an extra one. if (type.isArray() && qualifier.isArrayedIo(language)) { TType elementType(type, 0); size = computeTypeLocationSize(elementType, language); } else size = computeTypeLocationSize(type, language); } // Locations, and components within locations. // // Almost always, dealing with components means a single location is involved. // The exception is a dvec3. From the spec: // // "A dvec3 will consume all four components of the first location and components 0 and 1 of // the second location. This leaves components 2 and 3 available for other component-qualified // declarations." // // That means, without ever mentioning a component, a component range // for a different location gets specified, if it's not a vertex shader input. (!) // (A vertex shader input will show using only one location, even for a dvec3/4.) // // So, for the case of dvec3, we need two independent ioRanges. // // For raytracing IO (payloads and callabledata) each declaration occupies a single // slot irrespective of type. int collision = -1; // no collision if (qualifier.isAnyPayload() || qualifier.isAnyCallable() || qualifier.isHitObjectAttrNV()) { TRange range(qualifier.layoutLocation, qualifier.layoutLocation); collision = checkLocationRT(set, qualifier.layoutLocation); if (collision < 0) usedIoRT[set].push_back(range); return collision; } if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 && (qualifier.isPipeInput() || qualifier.isPipeOutput())) { // Dealing with dvec3 in/out split across two locations. // Need two io-ranges. // The case where the dvec3 doesn't start at component 0 was previously caught as overflow. // First range: TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation); TRange componentRange(0, 3); TIoRange range(locationRange, componentRange, type.getBasicType(), 0, qualifier.centroid, qualifier.smooth, qualifier.flat, qualifier.sample, qualifier.patch); // check for collisions collision = checkLocationRange(set, range, type, typeCollision); if (collision < 0) { usedIo[set].push_back(range); // Second range: TRange locationRange2(qualifier.layoutLocation + 1, qualifier.layoutLocation + 1); TRange componentRange2(0, 1); TIoRange range2(locationRange2, componentRange2, type.getBasicType(), 0, qualifier.centroid, qualifier.smooth, qualifier.flat, qualifier.sample, qualifier.patch); // check for collisions collision = checkLocationRange(set, range2, type, typeCollision); if (collision < 0) usedIo[set].push_back(range2); } return collision; } // Not a dvec3 in/out split across two locations, generic path. // Need a single IO-range block. TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1); TRange componentRange(0, 3); if (qualifier.hasComponent() || type.getVectorSize() > 0) { int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1); if (qualifier.hasComponent()) componentRange.start = qualifier.layoutComponent; componentRange.last = componentRange.start + consumedComponents - 1; } // combine location and component ranges TBasicType basicTy = type.getBasicType(); if (basicTy == EbtSampler && type.getSampler().isAttachmentEXT()) basicTy = type.getSampler().type; TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0, qualifier.centroid, qualifier.smooth, qualifier.flat, qualifier.sample, qualifier.patch); // check for collisions, except for vertex inputs on desktop targeting OpenGL if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) collision = checkLocationRange(set, range, type, typeCollision); if (collision < 0) usedIo[set].push_back(range); return collision; } // Check that two types can be stored in different components in the same location. // They must be the same type, except signed/unsigned integers are considered compatible. static bool checkCompatibleTypes(TBasicType t1, TBasicType t2) { if (t1 != t2) { if ((t1 == EbtInt8 && t2 == EbtUint8) || (t2 == EbtInt8 && t1 == EbtUint8) || (t1 == EbtInt16 && t2 == EbtUint16) || (t2 == EbtInt16 && t1 == EbtUint16)|| (t1 == EbtInt && t2 == EbtUint) || (t2 == EbtInt && t1 == EbtUint)|| (t1 == EbtInt64 && t2 == EbtUint64) || (t2 == EbtInt64 && t1 == EbtUint64)) { return true; } } return t1 == t2; } // Compare a new (the passed in) 'range' against the existing set, and see // if there are any collisions. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. // int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TType& type, bool& typeCollision) { for (size_t r = 0; r < usedIo[set].size(); ++r) { if (range.overlap(usedIo[set][r])) { // there is a collision; pick one return std::max(range.location.start, usedIo[set][r].location.start); } else if (range.location.overlap(usedIo[set][r].location) && (!checkCompatibleTypes(type.getBasicType(), usedIo[set][r].basicType) || type.getQualifier().centroid != usedIo[set][r].centroid || type.getQualifier().smooth != usedIo[set][r].smooth || type.getQualifier().flat != usedIo[set][r].flat || type.getQualifier().sample != usedIo[set][r].sample || type.getQualifier().patch != usedIo[set][r].patch)) { // aliased-type mismatch typeCollision = true; return std::max(range.location.start, usedIo[set][r].location.start); } } // check typeCollision between tileImageEXT and out if (set == 4 || set == 1) { // if the set is "tileImageEXT", check against "out" and vice versa int againstSet = (set == 4) ? 1 : 4; for (size_t r = 0; r < usedIo[againstSet].size(); ++r) { if (range.location.overlap(usedIo[againstSet][r].location) && type.getBasicType() != usedIo[againstSet][r].basicType) { // aliased-type mismatch typeCollision = true; return std::max(range.location.start, usedIo[againstSet][r].location.start); } } } return -1; // no collision } int TIntermediate::checkLocationRT(int set, int location) { TRange range(location, location); for (size_t r = 0; r < usedIoRT[set].size(); ++r) { if (range.overlap(usedIoRT[set][r])) { return range.start; } } return -1; // no collision } // Accumulate bindings and offsets, and check for collisions // as the accumulation is done. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. // int TIntermediate::addUsedOffsets(int binding, int offset, int numOffsets) { TRange bindingRange(binding, binding); TRange offsetRange(offset, offset + numOffsets - 1); TOffsetRange range(bindingRange, offsetRange); // check for collisions, except for vertex inputs on desktop for (size_t r = 0; r < usedAtomics.size(); ++r) { if (range.overlap(usedAtomics[r])) { // there is a collision; pick one return std::max(offset, usedAtomics[r].offset.start); } } usedAtomics.push_back(range); return -1; // no collision } // Accumulate used constant_id values. // // Return false is one was already used. bool TIntermediate::addUsedConstantId(int id) { if (usedConstantId.find(id) != usedConstantId.end()) return false; usedConstantId.insert(id); return true; } // Recursively figure out how many locations are used up by an input or output type. // Return the size of type, as measured by "locations". int TIntermediate::computeTypeLocationSize(const TType& type, EShLanguage stage) { // "If the declared input is an array of size n and each element takes m locations, it will be assigned m * n // consecutive locations..." if (type.isArray()) { // TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness // TODO: are there valid cases of having an unsized array with a location? If so, running this code too early. TType elementType(type, 0); if (type.isSizedArray() && !type.getQualifier().isPerView()) return type.getOuterArraySize() * computeTypeLocationSize(elementType, stage); else { // unset perViewNV attributes for arrayed per-view outputs: "perviewNV vec4 v[MAX_VIEWS][3];" elementType.getQualifier().perViewNV = false; return computeTypeLocationSize(elementType, stage); } } // "The locations consumed by block and structure members are determined by applying the rules above // recursively..." if (type.isStruct()) { int size = 0; for (int member = 0; member < (int)type.getStruct()->size(); ++member) { TType memberType(type, member); size += computeTypeLocationSize(memberType, stage); } return size; } // ES: "If a shader input is any scalar or vector type, it will consume a single location." // Desktop: "If a vertex shader input is any scalar or vector type, it will consume a single location. If a non-vertex // shader input is a scalar or vector type other than dvec3 or dvec4, it will consume a single location, while // types dvec3 or dvec4 will consume two consecutive locations. Inputs of type double and dvec2 will // consume only a single location, in all stages." if (type.isScalar()) return 1; if (type.isVector()) { if (stage == EShLangVertex && type.getQualifier().isPipeInput()) return 1; if (type.getBasicType() == EbtDouble && type.getVectorSize() > 2) return 2; else return 1; } // "If the declared input is an n x m single- or double-precision matrix, ... // The number of locations assigned for each matrix will be the same as // for an n-element array of m-component vectors..." if (type.isMatrix()) { TType columnType(type, 0); return type.getMatrixCols() * computeTypeLocationSize(columnType, stage); } assert(0); return 1; } // Same as computeTypeLocationSize but for uniforms int TIntermediate::computeTypeUniformLocationSize(const TType& type) { // "Individual elements of a uniform array are assigned // consecutive locations with the first element taking location // location." if (type.isArray()) { // TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness TType elementType(type, 0); if (type.isSizedArray()) { return type.getOuterArraySize() * computeTypeUniformLocationSize(elementType); } else { // TODO: are there valid cases of having an implicitly-sized array with a location? If so, running this code too early. return computeTypeUniformLocationSize(elementType); } } // "Each subsequent inner-most member or element gets incremental // locations for the entire structure or array." if (type.isStruct()) { int size = 0; for (int member = 0; member < (int)type.getStruct()->size(); ++member) { TType memberType(type, member); size += computeTypeUniformLocationSize(memberType); } return size; } return 1; } // Accumulate xfb buffer ranges and check for collisions as the accumulation is done. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. // int TIntermediate::addXfbBufferOffset(const TType& type) { const TQualifier& qualifier = type.getQualifier(); assert(qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()); TXfbBuffer& buffer = xfbBuffers[qualifier.layoutXfbBuffer]; // compute the range unsigned int size = computeTypeXfbSize(type, buffer.contains64BitType, buffer.contains32BitType, buffer.contains16BitType); buffer.implicitStride = std::max(buffer.implicitStride, qualifier.layoutXfbOffset + size); TRange range(qualifier.layoutXfbOffset, qualifier.layoutXfbOffset + size - 1); // check for collisions for (size_t r = 0; r < buffer.ranges.size(); ++r) { if (range.overlap(buffer.ranges[r])) { // there is a collision; pick an example to return return std::max(range.start, buffer.ranges[r].start); } } buffer.ranges.push_back(range); return -1; // no collision } // Recursively figure out how many bytes of xfb buffer are used by the given type. // Return the size of type, in bytes. // Sets contains64BitType to true if the type contains a 64-bit data type. // Sets contains32BitType to true if the type contains a 32-bit data type. // Sets contains16BitType to true if the type contains a 16-bit data type. // N.B. Caller must set contains64BitType, contains32BitType, and contains16BitType to false before calling. unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains64BitType, bool& contains32BitType, bool& contains16BitType) const { // "...if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8, // and the space taken in the buffer will be a multiple of 8. // ...within the qualified entity, subsequent components are each // assigned, in order, to the next available offset aligned to a multiple of // that component's size. Aggregate types are flattened down to the component // level to get this sequence of components." if (type.isSizedArray()) { // TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness // Unsized array use to xfb should be a compile error. TType elementType(type, 0); return type.getOuterArraySize() * computeTypeXfbSize(elementType, contains64BitType, contains16BitType, contains16BitType); } if (type.isStruct()) { unsigned int size = 0; bool structContains64BitType = false; bool structContains32BitType = false; bool structContains16BitType = false; for (int member = 0; member < (int)type.getStruct()->size(); ++member) { TType memberType(type, member); // "... if applied to // an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8, // and the space taken in the buffer will be a multiple of 8." bool memberContains64BitType = false; bool memberContains32BitType = false; bool memberContains16BitType = false; int memberSize = computeTypeXfbSize(memberType, memberContains64BitType, memberContains32BitType, memberContains16BitType); if (memberContains64BitType) { structContains64BitType = true; RoundToPow2(size, 8); } else if (memberContains32BitType) { structContains32BitType = true; RoundToPow2(size, 4); } else if (memberContains16BitType) { structContains16BitType = true; RoundToPow2(size, 2); } size += memberSize; } if (structContains64BitType) { contains64BitType = true; RoundToPow2(size, 8); } else if (structContains32BitType) { contains32BitType = true; RoundToPow2(size, 4); } else if (structContains16BitType) { contains16BitType = true; RoundToPow2(size, 2); } return size; } int numComponents {0}; if (type.isScalar()) numComponents = 1; else if (type.isVector()) numComponents = type.getVectorSize(); else if (type.isMatrix()) numComponents = type.getMatrixCols() * type.getMatrixRows(); else { assert(0); numComponents = 1; } if (type.getBasicType() == EbtDouble || type.getBasicType() == EbtInt64 || type.getBasicType() == EbtUint64) { contains64BitType = true; return 8 * numComponents; } else if (type.getBasicType() == EbtFloat16 || type.getBasicType() == EbtInt16 || type.getBasicType() == EbtUint16) { contains16BitType = true; return 2 * numComponents; } else if (type.getBasicType() == EbtInt8 || type.getBasicType() == EbtUint8) return numComponents; else { contains32BitType = true; return 4 * numComponents; } } const int baseAlignmentVec4Std140 = 16; // Return the size and alignment of a component of the given type. // The size is returned in the 'size' parameter // Return value is the alignment.. int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size) { switch (type.getBasicType()) { case EbtInt64: case EbtUint64: case EbtDouble: size = 8; return 8; case EbtFloat16: size = 2; return 2; case EbtBFloat16: size = 2; return 2; case EbtFloatE5M2: case EbtFloatE4M3: case EbtInt8: case EbtUint8: size = 1; return 1; case EbtInt16: case EbtUint16: size = 2; return 2; case EbtReference: size = 8; return 8; case EbtSampler: { if (type.isBindlessImage() || type.isBindlessTexture()) { size = 8; return 8; } else { size = 4; return 4; } } default: size = 4; return 4; } } // Implement base-alignment and size rules from section 7.6.2.2 Standard Uniform Block Layout // Operates recursively. // // If std140 is true, it does the rounding up to vec4 size required by std140, // otherwise it does not, yielding std430 rules. // // The size is returned in the 'size' parameter // // The stride is only non-0 for arrays or matrices, and is the stride of the // top-level object nested within the type. E.g., for an array of matrices, // it is the distances needed between matrices, despite the rules saying the // stride comes from the flattening down to vectors. // // Return value is the alignment of the type. int TIntermediate::getBaseAlignment(const TType& type, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor) { int alignment; bool std140 = layoutPacking == glslang::ElpStd140; // When using the std140 storage layout, structures will be laid out in buffer // storage with its members stored in monotonically increasing order based on their // location in the declaration. A structure and each structure member have a base // offset and a base alignment, from which an aligned offset is computed by rounding // the base offset up to a multiple of the base alignment. The base offset of the first // member of a structure is taken from the aligned offset of the structure itself. The // base offset of all other structure members is derived by taking the offset of the // last basic machine unit consumed by the previous member and adding one. Each // structure member is stored in memory at its aligned offset. The members of a top- // level uniform block are laid out in buffer storage by treating the uniform block as // a structure with a base offset of zero. // // 1. If the member is a scalar consuming N basic machine units, the base alignment is N. // // 2. If the member is a two- or four-component vector with components consuming N basic // machine units, the base alignment is 2N or 4N, respectively. // // 3. If the member is a three-component vector with components consuming N // basic machine units, the base alignment is 4N. // // 4. If the member is an array of scalars or vectors, the base alignment and array // stride are set to match the base alignment of a single array element, according // to rules (1), (2), and (3), and rounded up to the base alignment of a vec4. The // array may have padding at the end; the base offset of the member following // the array is rounded up to the next multiple of the base alignment. // // 5. If the member is a column-major matrix with C columns and R rows, the // matrix is stored identically to an array of C column vectors with R // components each, according to rule (4). // // 6. If the member is an array of S column-major matrices with C columns and // R rows, the matrix is stored identically to a row of S X C column vectors // with R components each, according to rule (4). // // 7. If the member is a row-major matrix with C columns and R rows, the matrix // is stored identically to an array of R row vectors with C components each, // according to rule (4). // // 8. If the member is an array of S row-major matrices with C columns and R // rows, the matrix is stored identically to a row of S X R row vectors with C // components each, according to rule (4). // // 9. If the member is a structure, the base alignment of the structure is N , where // N is the largest base alignment value of any of its members, and rounded // up to the base alignment of a vec4. The individual members of this substructure // are then assigned offsets by applying this set of rules recursively, // where the base offset of the first member of the sub-structure is equal to the // aligned offset of the structure. The structure may have padding at the end; // the base offset of the member following the sub-structure is rounded up to // the next multiple of the base alignment of the structure. // // 10. If the member is an array of S structures, the S elements of the array are laid // out in order, according to rule (9). // // Assuming, for rule 10: The stride is the same as the size of an element. stride = 0; int dummyStride; // rules 4, 6, 8, and 10 if (type.isArray()) { // TODO: perf: this might be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness TType derefType(type, 0); alignment = getBaseAlignment(derefType, size, dummyStride, layoutPacking, rowMajor); if (std140) alignment = std::max(baseAlignmentVec4Std140, alignment); RoundToPow2(size, alignment); stride = size; // uses full matrix size for stride of an array of matrices (not quite what rule 6/8, but what's expected) // uses the assumption for rule 10 in the comment above // use one element to represent the last member of SSBO which is unsized array int arraySize = (type.isUnsizedArray() && (type.getOuterArraySize() == 0)) ? 1 : type.getOuterArraySize(); size = stride * arraySize; return alignment; } // rule 9 if (type.getBasicType() == EbtStruct || type.getBasicType() == EbtBlock) { const TTypeList& memberList = *type.getStruct(); size = 0; int maxAlignment = std140 ? baseAlignmentVec4Std140 : 0; for (size_t m = 0; m < memberList.size(); ++m) { int memberSize; // modify just the children's view of matrix layout, if there is one for this member TLayoutMatrix subMatrixLayout = memberList[m].type->getQualifier().layoutMatrix; int memberAlignment = getBaseAlignment(*memberList[m].type, memberSize, dummyStride, layoutPacking, (subMatrixLayout != ElmNone) ? (subMatrixLayout == ElmRowMajor) : rowMajor); maxAlignment = std::max(maxAlignment, memberAlignment); RoundToPow2(size, memberAlignment); size += memberSize; } // The structure may have padding at the end; the base offset of // the member following the sub-structure is rounded up to the next // multiple of the base alignment of the structure. RoundToPow2(size, maxAlignment); return maxAlignment; } // rule 1 if (type.isScalar()) return getBaseAlignmentScalar(type, size); // rules 2 and 3 if (type.isVector()) { int scalarAlign = getBaseAlignmentScalar(type, size); switch (type.getVectorSize()) { case 1: // HLSL has this, GLSL does not return scalarAlign; case 2: size *= 2; return 2 * scalarAlign; default: size *= type.getVectorSize(); return 4 * scalarAlign; } } // rules 5 and 7 if (type.isMatrix()) { // rule 5: deref to row, not to column, meaning the size of vector is num columns instead of num rows TType derefType(type, 0, rowMajor); alignment = getBaseAlignment(derefType, size, dummyStride, layoutPacking, rowMajor); if (std140) alignment = std::max(baseAlignmentVec4Std140, alignment); RoundToPow2(size, alignment); stride = size; // use intra-matrix stride for stride of a just a matrix if (rowMajor) size = stride * type.getMatrixRows(); else size = stride * type.getMatrixCols(); return alignment; } assert(0); // all cases should be covered above size = baseAlignmentVec4Std140; return baseAlignmentVec4Std140; } // To aid the basic HLSL rule about crossing vec4 boundaries. bool TIntermediate::improperStraddle(const TType& type, int size, int offset, bool vectorLike) { if (! vectorLike || type.isArray()) return false; return size <= 16 ? offset / 16 != (offset + size - 1) / 16 : offset % 16 != 0; } int TIntermediate::getScalarAlignment(const TType& type, int& size, int& stride, bool rowMajor) { int alignment; stride = 0; int dummyStride; if (type.isArray()) { TType derefType(type, 0); alignment = getScalarAlignment(derefType, size, dummyStride, rowMajor); stride = size; RoundToPow2(stride, alignment); size = stride * (type.getOuterArraySize() - 1) + size; return alignment; } if (type.getBasicType() == EbtStruct) { const TTypeList& memberList = *type.getStruct(); size = 0; int maxAlignment = 0; for (size_t m = 0; m < memberList.size(); ++m) { int memberSize; // modify just the children's view of matrix layout, if there is one for this member TLayoutMatrix subMatrixLayout = memberList[m].type->getQualifier().layoutMatrix; int memberAlignment = getScalarAlignment(*memberList[m].type, memberSize, dummyStride, (subMatrixLayout != ElmNone) ? (subMatrixLayout == ElmRowMajor) : rowMajor); maxAlignment = std::max(maxAlignment, memberAlignment); RoundToPow2(size, memberAlignment); size += memberSize; } return maxAlignment; } if (type.isScalar()) return getBaseAlignmentScalar(type, size); if (type.isVector()) { int scalarAlign = getBaseAlignmentScalar(type, size); size *= type.getVectorSize(); return scalarAlign; } if (type.isMatrix()) { TType derefType(type, 0, rowMajor); alignment = getScalarAlignment(derefType, size, dummyStride, rowMajor); stride = size; // use intra-matrix stride for stride of a just a matrix if (rowMajor) size = stride * type.getMatrixRows(); else size = stride * type.getMatrixCols(); return alignment; } assert(0); // all cases should be covered above size = 1; return 1; } int TIntermediate::getMemberAlignment(const TType& type, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor) { if (layoutPacking == glslang::ElpScalar) { return getScalarAlignment(type, size, stride, rowMajor); } else { return getBaseAlignment(type, size, stride, layoutPacking, rowMajor); } } // shared calculation by getOffset and getOffsets void TIntermediate::updateOffset(const TType& parentType, const TType& memberType, int& offset, int& memberSize) { int dummyStride; // modify just the children's view of matrix layout, if there is one for this member TLayoutMatrix subMatrixLayout = memberType.getQualifier().layoutMatrix; int memberAlignment = getMemberAlignment(memberType, memberSize, dummyStride, parentType.getQualifier().layoutPacking, subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor : parentType.getQualifier().layoutMatrix == ElmRowMajor); RoundToPow2(offset, memberAlignment); } // Lookup or calculate the offset of a block member, using the recursively // defined block offset rules. int TIntermediate::getOffset(const TType& type, int index) { const TTypeList& memberList = *type.getStruct(); // Don't calculate offset if one is present, it could be user supplied // and different than what would be calculated. That is, this is faster, // but not just an optimization. if (memberList[index].type->getQualifier().hasOffset()) return memberList[index].type->getQualifier().layoutOffset; int memberSize = 0; int offset = 0; for (int m = 0; m <= index; ++m) { updateOffset(type, *memberList[m].type, offset, memberSize); if (m < index) offset += memberSize; } return offset; } // Calculate the block data size. // Block arrayness is not taken into account, each element is backed by a separate buffer. int TIntermediate::getBlockSize(const TType& blockType) { const TTypeList& memberList = *blockType.getStruct(); int lastIndex = (int)memberList.size() - 1; int lastOffset = getOffset(blockType, lastIndex); int lastMemberSize; int dummyStride; getMemberAlignment(*memberList[lastIndex].type, lastMemberSize, dummyStride, blockType.getQualifier().layoutPacking, blockType.getQualifier().layoutMatrix == ElmRowMajor); return lastOffset + lastMemberSize; } int TIntermediate::computeBufferReferenceTypeSize(const TType& type) { assert(type.isReference()); int size = getBlockSize(*type.getReferentType()); int align = type.getBufferReferenceAlignment(); if (align) { size = (size + align - 1) & ~(align-1); } return size; } bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) { return type.isArray() && ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || (language == EShLangTessControl && (type.getQualifier().storage == EvqVaryingIn || type.getQualifier().storage == EvqVaryingOut) && ! type.getQualifier().patch) || (language == EShLangTessEvaluation && type.getQualifier().storage == EvqVaryingIn) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) || (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/localintermediate.h000066400000000000000000001551741506534232700242600ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2016 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2015-2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _LOCAL_INTERMEDIATE_INCLUDED_ #define _LOCAL_INTERMEDIATE_INCLUDED_ #include "../Include/intermediate.h" #include "../Public/ShaderLang.h" #include "Versions.h" #include #include #include #include #include #include class TInfoSink; namespace glslang { struct TMatrixSelector { int coord1; // stay agnostic about column/row; this is parse order int coord2; }; typedef int TVectorSelector; const int MaxSwizzleSelectors = 4; template class TSwizzleSelectors { public: TSwizzleSelectors() : size_(0) { } void push_back(selectorType comp) { if (size_ < MaxSwizzleSelectors) components[size_++] = comp; } void resize(int s) { assert(s <= size_); size_ = s; } int size() const { return size_; } selectorType operator[](int i) const { assert(i < MaxSwizzleSelectors); return components[i]; } private: int size_; selectorType components[MaxSwizzleSelectors]; }; // // Some helper structures for TIntermediate. Their contents are encapsulated // by TIntermediate. // // Used for call-graph algorithms for detecting recursion, missing bodies, and dead bodies. // A "call" is a pair: . // There can be duplicates. General assumption is the list is small. struct TCall { TCall(const TString& pCaller, const TString& pCallee) : caller(pCaller), callee(pCallee), visited(false), currentPath(false), errorGiven(false) { } TString caller; TString callee; bool visited; bool currentPath; bool errorGiven; int calleeBodyPosition; }; // A generic 1-D range. struct TRange { TRange(int start, int last) : start(start), last(last) { } bool overlap(const TRange& rhs) const { return last >= rhs.start && start <= rhs.last; } int start; int last; }; // An IO range is a 3-D rectangle; the set of (location, component, index) triples all lying // within the same location range, component range, and index value. Locations don't alias unless // all other dimensions of their range overlap. struct TIoRange { TIoRange(TRange location, TRange component, TBasicType basicType, int index, bool centroid, bool smooth, bool flat, bool sample, bool patch) : location(location), component(component), basicType(basicType), index(index), centroid(centroid), smooth(smooth), flat(flat), sample(sample), patch(patch) { } bool overlap(const TIoRange& rhs) const { return location.overlap(rhs.location) && component.overlap(rhs.component) && index == rhs.index; } TRange location; TRange component; TBasicType basicType; int index; bool centroid; bool smooth; bool flat; bool sample; bool patch; }; // An offset range is a 2-D rectangle; the set of (binding, offset) pairs all lying // within the same binding and offset range. struct TOffsetRange { TOffsetRange(TRange binding, TRange offset) : binding(binding), offset(offset) { } bool overlap(const TOffsetRange& rhs) const { return binding.overlap(rhs.binding) && offset.overlap(rhs.offset); } TRange binding; TRange offset; }; // Things that need to be tracked per xfb buffer. struct TXfbBuffer { TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false), contains32BitType(false), contains16BitType(false) { } std::vector ranges; // byte offsets that have already been assigned unsigned int stride; unsigned int implicitStride; bool contains64BitType; bool contains32BitType; bool contains16BitType; }; // Track a set of strings describing how the module was processed. // This includes command line options, transforms, etc., ideally inclusive enough // to reproduce the steps used to transform the input source to the output. // E.g., see SPIR-V OpModuleProcessed. // Each "process" or "transform" uses is expressed in the form: // process arg0 arg1 arg2 ... // process arg0 arg1 arg2 ... // where everything is textual, and there can be zero or more arguments class TProcesses { public: TProcesses() {} ~TProcesses() {} void addProcess(const char* process) { processes.push_back(process); } void addProcess(const std::string& process) { processes.push_back(process); } void addArgument(int arg) { processes.back().append(" "); std::string argString = std::to_string(arg); processes.back().append(argString); } void addArgument(const char* arg) { processes.back().append(" "); processes.back().append(arg); } void addArgument(const std::string& arg) { processes.back().append(" "); processes.back().append(arg); } void addIfNonZero(const char* process, int value) { if (value != 0) { addProcess(process); addArgument(value); } } const std::vector& getProcesses() const { return processes; } private: std::vector processes; }; class TSymbolTable; class TSymbol; class TVariable; // // Texture and Sampler transformation mode. // enum ComputeDerivativeMode { LayoutDerivativeNone, // default layout as SPV_NV_compute_shader_derivatives not enabled LayoutDerivativeGroupQuads, // derivative_group_quadsNV LayoutDerivativeGroupLinear, // derivative_group_linearNV }; // // Status type on AST level. Some uncalled status or functions would be reset in call graph. // Currently we will keep status set by explicitly declared layout or variable decl. // enum AstRefType { AstRefTypeVar, // Status set by variable decl AstRefTypeFunc, // Status set by function decl AstRefTypeLayout, // Status set by layout decl }; class TIdMaps { public: TMap& operator[](long long i) { return maps[i]; } const TMap& operator[](long long i) const { return maps[i]; } private: TMap maps[EsiCount]; }; class TNumericFeatures { public: TNumericFeatures() : features(0) { } TNumericFeatures(const TNumericFeatures&) = delete; TNumericFeatures& operator=(const TNumericFeatures&) = delete; typedef enum : unsigned int { shader_explicit_arithmetic_types = 1 << 0, shader_explicit_arithmetic_types_int8 = 1 << 1, shader_explicit_arithmetic_types_int16 = 1 << 2, shader_explicit_arithmetic_types_int32 = 1 << 3, shader_explicit_arithmetic_types_int64 = 1 << 4, shader_explicit_arithmetic_types_float16 = 1 << 5, shader_explicit_arithmetic_types_float32 = 1 << 6, shader_explicit_arithmetic_types_float64 = 1 << 7, shader_implicit_conversions = 1 << 8, gpu_shader_fp64 = 1 << 9, gpu_shader_int16 = 1 << 10, gpu_shader_half_float = 1 << 11, nv_gpu_shader5_types = 1 << 12, } feature; void insert(feature f) { features |= f; } void erase(feature f) { features &= ~f; } bool contains(feature f) const { return (features & f) != 0; } private: unsigned int features; }; // MustBeAssigned wraps a T, asserting that it has been assigned with // operator =() before attempting to read with operator T() or operator ->(). // Used to catch cases where fields are read before they have been assigned. template class MustBeAssigned { public: MustBeAssigned() = default; MustBeAssigned(const T& v) : value(v) {} operator const T&() const { assert(isSet); return value; } const T* operator ->() const { assert(isSet); return &value; } MustBeAssigned& operator = (const T& v) { value = v; isSet = true; return *this; } private: T value; bool isSet = false; }; // // Set of helper functions to help parse and build the tree. // class TIntermediate { public: explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) : language(l), profile(p), version(v), treeRoot(nullptr), 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(""), globalUniformBlockSet(TQualifier::layoutSetEnd), globalUniformBlockBinding(TQualifier::layoutBindingEnd), atomicCounterBlockSet(TQualifier::layoutSetEnd), implicitThisName("@this"), implicitCounterName("@count"), source(EShSourceNone), useVulkanMemoryModel(false), invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone), pixelCenterInteger(false), originUpperLeft(false),texCoordBuiltinRedeclared(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false), postDepthCoverage(false), earlyAndLateFragmentTestsAMD(false), nonCoherentColorAttachmentReadEXT(false), nonCoherentDepthAttachmentReadEXT(false), nonCoherentStencilAttachmentReadEXT(false), depthLayout(EldNone), stencilLayout(ElsNone), hlslFunctionality1(false), blendEquations(0), xfbMode(false), multiStream(false), layoutOverrideCoverage(false), geoPassthroughEXT(false), numShaderRecordBlocks(0), computeDerivativeMode(LayoutDerivativeNone), primitives(TQualifier::layoutNotSet), numTaskNVBlocks(0), layoutPrimitiveCulling(false), numTaskEXTPayloads(0), nonCoherentTileAttachmentReadQCOM(false), autoMapBindings(false), autoMapLocations(false), flattenUniformArrays(false), useUnknownFormat(false), hlslOffsets(false), hlslIoMapping(false), useVariablePointers(false), textureSamplerTransformMode(EShTexSampTransKeep), needToLegalize(false), binaryDoubleOutput(false), subgroupUniformControlFlow(false), maximallyReconverges(false), usePhysicalStorageBuffer(false), spirvRequirement(nullptr), spirvExecutionMode(nullptr), uniformLocationBase(0), quadDerivMode(false), reqFullQuadsMode(false) { localSize[0] = 1; localSize[1] = 1; localSize[2] = 1; localSizeNotDefault[0] = false; localSizeNotDefault[1] = false; localSizeNotDefault[2] = false; localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; xfbBuffers.resize(TQualifier::layoutXfbBufferEnd); tileShadingRateQCOM[0] = 0; tileShadingRateQCOM[1] = 0; tileShadingRateQCOM[2] = 0; tileShadingRateQCOMNotDefault[0] = false; tileShadingRateQCOMNotDefault[1] = false; tileShadingRateQCOMNotDefault[2] = false; shiftBinding.fill(0); } void setVersion(int v) { version = v; } void setProfile(EProfile p) { profile = p; } int getVersion() const { return version; } EProfile getProfile() const { return profile; } void setSpv(const SpvVersion& s) { spvVersion = s; // client processes if (spvVersion.vulkan > 0) processes.addProcess("client vulkan100"); if (spvVersion.openGl > 0) processes.addProcess("client opengl100"); // target SPV switch (spvVersion.spv) { case 0: break; case EShTargetSpv_1_0: break; case EShTargetSpv_1_1: processes.addProcess("target-env spirv1.1"); break; case EShTargetSpv_1_2: processes.addProcess("target-env spirv1.2"); break; case EShTargetSpv_1_3: processes.addProcess("target-env spirv1.3"); break; case EShTargetSpv_1_4: processes.addProcess("target-env spirv1.4"); break; case EShTargetSpv_1_5: processes.addProcess("target-env spirv1.5"); break; case EShTargetSpv_1_6: processes.addProcess("target-env spirv1.6"); break; default: processes.addProcess("target-env spirvUnknown"); break; } // target-environment processes switch (spvVersion.vulkan) { case 0: break; case EShTargetVulkan_1_0: processes.addProcess("target-env vulkan1.0"); break; case EShTargetVulkan_1_1: processes.addProcess("target-env vulkan1.1"); break; case EShTargetVulkan_1_2: processes.addProcess("target-env vulkan1.2"); break; case EShTargetVulkan_1_3: processes.addProcess("target-env vulkan1.3"); break; case EShTargetVulkan_1_4: processes.addProcess("target-env vulkan1.4"); break; default: processes.addProcess("target-env vulkanUnknown"); break; } if (spvVersion.openGl > 0) processes.addProcess("target-env opengl"); } const SpvVersion& getSpv() const { return spvVersion; } EShLanguage getStage() const { return language; } void addRequestedExtension(const char* extension) { requestedExtensions.insert(extension); } const std::set& getRequestedExtensions() const { return requestedExtensions; } bool isRayTracingStage() const { return language >= EShLangRayGen && language <= EShLangCallableNV; } void setTreeRoot(TIntermNode* r) { treeRoot = r; } TIntermNode* getTreeRoot() const { return treeRoot; } void incrementEntryPointCount() { ++numEntryPoints; } int getNumEntryPoints() const { return numEntryPoints; } int getNumErrors() const { return numErrors; } void addPushConstantCount() { ++numPushConstants; } void setLimits(const TBuiltInResource& r) { resources = r; } const TBuiltInResource& getLimits() const { return resources; } bool postProcess(TIntermNode*, EShLanguage); void removeTree(); void setEntryPointName(const char* ep) { entryPointName = ep; processes.addProcess("entry-point"); processes.addArgument(entryPointName); } void setEntryPointMangledName(const char* ep) { entryPointMangledName = ep; } const std::string& getEntryPointName() const { return entryPointName; } const std::string& getEntryPointMangledName() const { return entryPointMangledName; } void setDebugInfo(bool debuginfo) { debugInfo = debuginfo; } bool getDebugInfo() const { return debugInfo; } void setInvertY(bool invert) { invertY = invert; if (invertY) processes.addProcess("invert-y"); } 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; } #else void setSource(EShSource s) { assert(s == EShSourceGlsl); (void)s; } EShSource getSource() const { return EShSourceGlsl; } #endif bool isRecursive() const { return recursive; } TIntermSymbol* addSymbol(const TVariable&); TIntermSymbol* addSymbol(const TVariable&, const TSourceLoc&); TIntermSymbol* addSymbol(const TType&, const TSourceLoc&); TIntermSymbol* addSymbol(const TIntermSymbol&); TIntermTyped* addConversion(TOperator, const TType&, TIntermTyped*); std::tuple addPairConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1); TIntermTyped* addUniShapeConversion(TOperator, const TType&, TIntermTyped*); TIntermTyped* addConversion(TBasicType convertTo, TIntermTyped* node) const; void addBiShapeConversion(TOperator, TIntermTyped*& lhsNode, TIntermTyped*& rhsNode); TIntermTyped* addShapeConversion(const TType&, TIntermTyped*); TIntermTyped* addBinaryMath(TOperator, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&); TIntermTyped* addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&); TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, const TSourceLoc&); TIntermTyped* addUnaryMath(TOperator, TIntermTyped* child, const TSourceLoc&); TIntermTyped* addBuiltInFunctionCall(const TSourceLoc& line, TOperator, bool unary, TIntermNode*, const TType& returnType); bool canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op = EOpNull) const; bool isIntegralPromotion(TBasicType from, TBasicType to) const; bool isFPPromotion(TBasicType from, TBasicType to) const; bool isIntegralConversion(TBasicType from, TBasicType to) const; bool isFPConversion(TBasicType from, TBasicType to) const; bool isFPIntegralConversion(TBasicType from, TBasicType to) const; TOperator mapTypeToConstructorOp(const TType&) const; TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right); TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&); TIntermAggregate* mergeAggregate(TIntermNode* left, TIntermNode* right); TIntermAggregate* mergeAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&); TIntermAggregate* makeAggregate(TIntermNode* node); TIntermAggregate* makeAggregate(TIntermNode* node, const TSourceLoc&); TIntermAggregate* makeAggregate(const TSourceLoc&); TIntermTyped* setAggregateOperator(TIntermNode*, TOperator, const TType& type, const TSourceLoc&); bool areAllChildConst(TIntermAggregate* aggrNode); TIntermSelection* addSelection(TIntermTyped* cond, TIntermNodePair code, const TSourceLoc&); TIntermTyped* addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc&); TIntermTyped* addComma(TIntermTyped* left, TIntermTyped* right, const TSourceLoc&); TIntermTyped* addMethod(TIntermTyped*, const TType&, const TString*, const TSourceLoc&); TIntermConstantUnion* addConstantUnion(const TConstUnionArray&, const TType&, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(signed char, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(unsigned char, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(signed short, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(unsigned short, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(int, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(unsigned int, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(long long, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(unsigned long long, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(bool, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(double, TBasicType, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(const TString*, const TSourceLoc&, bool literal = false) const; TIntermTyped* promoteConstantUnion(TBasicType, TIntermConstantUnion*) const; bool parseConstTree(TIntermNode*, TConstUnionArray, TOperator, const TType&, bool singleConstantParam = false); TIntermLoop* addLoop(TIntermNode*, TIntermTyped*, TIntermTyped*, bool testFirst, const TSourceLoc&); TIntermAggregate* addForLoop(TIntermNode*, TIntermNode*, TIntermTyped*, TIntermTyped*, bool testFirst, const TSourceLoc&, TIntermLoop*&); TIntermBranch* addBranch(TOperator, const TSourceLoc&); TIntermBranch* addBranch(TOperator, TIntermTyped*, const TSourceLoc&); template TIntermTyped* addSwizzle(TSwizzleSelectors&, const TSourceLoc&); // Low level functions to add nodes (no conversions or other higher level transformations) // If a type is provided, the node's type will be set to it. TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&) const; TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&, const TType&) const; TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc&) const; TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc&, const TType&) const; // Constant folding (in Constant.cpp) TIntermTyped* fold(TIntermAggregate* aggrNode); TIntermTyped* foldConstructor(TIntermAggregate* aggrNode); TIntermTyped* foldDereference(TIntermTyped* node, int index, const TSourceLoc&); TIntermTyped* foldSwizzle(TIntermTyped* node, TSwizzleSelectors& fields, const TSourceLoc&); // Tree ops static const TIntermTyped* traverseLValueBase(const TIntermTyped*, bool swizzleOkay, bool bufferReferenceOk = false, std::function proc = {}); // Linkage related void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&); void addSymbolLinkageNode(TIntermAggregate*& linkage, const TSymbol&); TIntermAggregate* findLinkerObjects() const; void setGlobalUniformBlockName(const char* name) { globalUniformBlockName = std::string(name); } const char* getGlobalUniformBlockName() const { return globalUniformBlockName.c_str(); } void setGlobalUniformSet(unsigned int set) { globalUniformBlockSet = set; } unsigned int getGlobalUniformSet() const { return globalUniformBlockSet; } void setGlobalUniformBinding(unsigned int binding) { globalUniformBlockBinding = binding; } unsigned int getGlobalUniformBinding() const { return globalUniformBlockBinding; } void setAtomicCounterBlockName(const char* name) { atomicCounterBlockName = std::string(name); } const char* getAtomicCounterBlockName() const { return atomicCounterBlockName.c_str(); } void setAtomicCounterBlockSet(unsigned int set) { atomicCounterBlockSet = set; } unsigned int getAtomicCounterBlockSet() const { return atomicCounterBlockSet; } void setUseStorageBuffer() { useStorageBuffer = true; } bool usingStorageBuffer() const { return useStorageBuffer; } void setInvariantAll() { invariantAll = true; } 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]) return size == localSize[dim]; localSizeNotDefault[dim] = true; localSize[dim] = size; return true; } unsigned int getLocalSize(int dim) const { return localSize[dim]; } bool isLocalSizeSet() const { // Return true if any component has been set (i.e. any component is not default). return localSizeNotDefault[0] || localSizeNotDefault[1] || localSizeNotDefault[2]; } bool setLocalSizeSpecId(int dim, int id) { if (localSizeSpecId[dim] != TQualifier::layoutNotSet) return id == localSizeSpecId[dim]; localSizeSpecId[dim] = id; return true; } int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } bool isLocalSizeSpecialized() const { // Return true if any component has been specialized. return localSizeSpecId[0] != TQualifier::layoutNotSet || localSizeSpecId[1] != TQualifier::layoutNotSet || localSizeSpecId[2] != TQualifier::layoutNotSet; } void output(TInfoSink&, bool tree); bool isEsProfile() const { return profile == EEsProfile; } bool setTileShadingRateQCOM(int dim, int size) { if (tileShadingRateQCOMNotDefault[dim]) return size == tileShadingRateQCOM[dim]; tileShadingRateQCOMNotDefault[dim] = true; tileShadingRateQCOM[dim] = size; return true; } unsigned int getTileShadingRateQCOM(int dim) const { return tileShadingRateQCOM[dim]; } bool isTileShadingRateQCOMSet() const { // Return true if any component has been set (i.e. any component is not default). return tileShadingRateQCOMNotDefault[0] || tileShadingRateQCOMNotDefault[1] || tileShadingRateQCOMNotDefault[2]; } void setShiftBinding(TResourceType res, unsigned int shift) { shiftBinding[res] = shift; const char* name = getResourceName(res); if (name != nullptr) processes.addIfNonZero(name, shift); } unsigned int getShiftBinding(TResourceType res) const { return shiftBinding[res]; } void setShiftBindingForSet(TResourceType res, unsigned int shift, unsigned int set) { if (shift == 0) // ignore if there's no shift: it's a no-op. return; shiftBindingForSet[res][set] = shift; const char* name = getResourceName(res); if (name != nullptr) { processes.addProcess(name); processes.addArgument(shift); processes.addArgument(set); } } int getShiftBindingForSet(TResourceType res, unsigned int set) const { const auto shift = shiftBindingForSet[res].find(set); return shift == shiftBindingForSet[res].end() ? -1 : shift->second; } bool hasShiftBindingForSet(TResourceType res) const { return !shiftBindingForSet[res].empty(); } void setResourceSetBinding(const std::vector& shift) { resourceSetBinding = shift; if (shift.size() > 0) { processes.addProcess("resource-set-binding"); for (int s = 0; s < (int)shift.size(); ++s) processes.addArgument(shift[s]); } } const std::vector& getResourceSetBinding() const { return resourceSetBinding; } void setAutoMapBindings(bool map) { autoMapBindings = map; if (autoMapBindings) processes.addProcess("auto-map-bindings"); } bool getAutoMapBindings() const { return autoMapBindings; } void setAutoMapLocations(bool map) { autoMapLocations = map; if (autoMapLocations) processes.addProcess("auto-map-locations"); } bool getAutoMapLocations() const { return autoMapLocations; } #ifdef ENABLE_HLSL void setFlattenUniformArrays(bool flatten) { flattenUniformArrays = flatten; if (flattenUniformArrays) processes.addProcess("flatten-uniform-arrays"); } bool getFlattenUniformArrays() const { return flattenUniformArrays; } #endif void setNoStorageFormat(bool b) { useUnknownFormat = b; if (useUnknownFormat) processes.addProcess("no-storage-format"); } bool getNoStorageFormat() const { return useUnknownFormat; } void setUseVulkanMemoryModel() { useVulkanMemoryModel = true; processes.addProcess("use-vulkan-memory-model"); } bool usingVulkanMemoryModel() const { return useVulkanMemoryModel; } void setUsePhysicalStorageBuffer() { usePhysicalStorageBuffer = true; } bool usingPhysicalStorageBuffer() const { return usePhysicalStorageBuffer; } void setReplicatedComposites() { useReplicatedComposites = true; } bool usingReplicatedComposites() const { return useReplicatedComposites; } void setUseVariablePointers() { useVariablePointers = true; processes.addProcess("use-variable-pointers"); } // Set the global flag for bindless texture void setBindlessTextureMode(const TString& currentCaller, AstRefType type) { // When type is not func, currentCaller should be "" (empty string) bindlessTextureModeCaller[currentCaller] = type; } // Get the global flag for bindless texture bool getBindlessTextureMode() const { return (bindlessTextureModeCaller.size() > 0); } // Set the global flag for bindless image void setBindlessImageMode(const TString& currentCaller, AstRefType type) { // When type is not func, currentCaller should be "" (empty string) bindlessImageModeCaller[currentCaller] = type; } // Get the global flag for bindless image bool getBindlessImageMode() const { return (bindlessImageModeCaller.size() > 0); } // Get the global flag for bindless texture bool resetTopLevelUncalledStatus(const TString& deadCaller) { // For reflection collection purpose, currently uniform layout setting and some // flags introduced by variables (IO, global, etc,.) won't be reset here. // Remove each global status (AST top level) introduced by uncalled functions. // If a status is set by several functions, keep those which in call graph. bool result = false; // For two types of bindless mode flag, we would only reset which is set by an uncalled function. // If one status flag's key in caller vec is empty, it should be come from a non-function setting. if (!bindlessTextureModeCaller.empty()) { auto caller = bindlessTextureModeCaller.find(deadCaller); if (caller != bindlessTextureModeCaller.end() && bindlessTextureModeCaller[deadCaller] == AstRefTypeFunc) { bindlessTextureModeCaller.erase(caller); result = true; } } if (!bindlessImageModeCaller.empty()) { auto caller = bindlessImageModeCaller.find(deadCaller); if (caller != bindlessImageModeCaller.end() && bindlessImageModeCaller[deadCaller] == AstRefTypeFunc) { bindlessImageModeCaller.erase(caller); result = true; } } return result; } bool getBindlessMode() const { return getBindlessTextureMode() || getBindlessImageMode(); } bool usingVariablePointers() const { return useVariablePointers; } #ifdef ENABLE_HLSL template T addCounterBufferName(const T& name) const { return name + implicitCounterName; } bool hasCounterBufferName(const TString& name) const { size_t len = strlen(implicitCounterName); return name.size() > len && name.compare(name.size() - len, len, implicitCounterName) == 0; } #endif void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { textureSamplerTransformMode = mode; } int getNumPushConstants() const { return numPushConstants; } void addShaderRecordCount() { ++numShaderRecordBlocks; } void addTaskNVCount() { ++numTaskNVBlocks; } void addTaskPayloadEXTCount() { ++numTaskEXTPayloads; } bool setInvocations(int i) { if (invocations != TQualifier::layoutNotSet) return invocations == i; invocations = i; return true; } int getInvocations() const { return invocations; } bool setVertices(int m) { if (vertices != TQualifier::layoutNotSet) return vertices == m; vertices = m; return true; } int getVertices() const { return vertices; } bool setInputPrimitive(TLayoutGeometry p) { if (inputPrimitive != ElgNone) return inputPrimitive == p; inputPrimitive = p; return true; } TLayoutGeometry getInputPrimitive() const { return inputPrimitive; } bool setVertexSpacing(TVertexSpacing s) { if (vertexSpacing != EvsNone) return vertexSpacing == s; vertexSpacing = s; return true; } TVertexSpacing getVertexSpacing() const { return vertexSpacing; } bool setVertexOrder(TVertexOrder o) { if (vertexOrder != EvoNone) return vertexOrder == o; vertexOrder = o; return true; } TVertexOrder getVertexOrder() const { return vertexOrder; } void setPointMode() { pointMode = true; } bool getPointMode() const { return pointMode; } bool setInterlockOrdering(TInterlockOrdering o) { if (interlockOrdering != EioNone) return interlockOrdering == o; interlockOrdering = o; return true; } TInterlockOrdering getInterlockOrdering() const { return interlockOrdering; } void setXfbMode() { xfbMode = true; } bool getXfbMode() const { return xfbMode; } void setQuadDerivMode(bool mode = true) { quadDerivMode = mode; } bool getQuadDerivMode() const { return quadDerivMode; } void setReqFullQuadsMode(bool mode = true) { reqFullQuadsMode = mode; } bool getReqFullQuadsMode() const { return reqFullQuadsMode; } void setMultiStream() { multiStream = true; } bool isMultiStream() const { return multiStream; } bool setOutputPrimitive(TLayoutGeometry p) { if (outputPrimitive != ElgNone) return outputPrimitive == p; outputPrimitive = p; return true; } TLayoutGeometry getOutputPrimitive() const { return outputPrimitive; } void setNonCoherentColorAttachmentReadEXT() { nonCoherentColorAttachmentReadEXT = true; } bool getNonCoherentColorAttachmentReadEXT() const { return nonCoherentColorAttachmentReadEXT; } void setNonCoherentDepthAttachmentReadEXT() { nonCoherentDepthAttachmentReadEXT = true; } bool getNonCoherentDepthAttachmentReadEXT() const { return nonCoherentDepthAttachmentReadEXT; } void setNonCoherentStencilAttachmentReadEXT() { nonCoherentStencilAttachmentReadEXT = true; } bool getNonCoherentStencilAttachmentReadEXT() const { return nonCoherentStencilAttachmentReadEXT; } void setNonCoherentTileAttachmentReadQCOM() { nonCoherentTileAttachmentReadQCOM = true; } bool getNonCoherentTileAttachmentReadQCOM() const { return nonCoherentTileAttachmentReadQCOM; } 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) return depthLayout == d; 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) { if (xfbBuffers[buffer].stride != TQualifier::layoutXfbStrideEnd) return xfbBuffers[buffer].stride == stride; xfbBuffers[buffer].stride = stride; return true; } unsigned getXfbStride(int buffer) const { return xfbBuffers[buffer].stride; } int addXfbBufferOffset(const TType&); unsigned int computeTypeXfbSize(const TType&, bool& contains64BitType, bool& contains32BitType, bool& contains16BitType) const; unsigned int computeTypeXfbSize(const TType&, bool& contains64BitType) const; void setLayoutOverrideCoverage() { layoutOverrideCoverage = true; } bool getLayoutOverrideCoverage() const { return layoutOverrideCoverage; } void setGeoPassthroughEXT() { geoPassthroughEXT = true; } bool getGeoPassthroughEXT() const { return geoPassthroughEXT; } void setLayoutDerivativeMode(ComputeDerivativeMode mode) { computeDerivativeMode = mode; } bool hasLayoutDerivativeModeNone() const { return computeDerivativeMode != LayoutDerivativeNone; } ComputeDerivativeMode getLayoutDerivativeModeNone() const { return computeDerivativeMode; } void setLayoutPrimitiveCulling() { layoutPrimitiveCulling = true; } bool getLayoutPrimitiveCulling() const { return layoutPrimitiveCulling; } bool setPrimitives(int m) { if (primitives != TQualifier::layoutNotSet) return primitives == m; primitives = m; return true; } int getPrimitives() const { return primitives; } const char* addSemanticName(const TString& name) { return semanticNameSet.insert(name).first->c_str(); } void addUniformLocationOverride(const char* nameStr, int location) { std::string name = nameStr; uniformLocationOverrides[name] = location; } int getUniformLocationOverride(const char* nameStr) const { std::string name = nameStr; auto pos = uniformLocationOverrides.find(name); if (pos == uniformLocationOverrides.end()) return -1; else return pos->second; } void setUniformLocationBase(int base) { uniformLocationBase = base; } int getUniformLocationBase() const { return uniformLocationBase; } void setNeedsLegalization() { needToLegalize = true; } bool needsLegalization() const { return needToLegalize; } void setBinaryDoubleOutput() { binaryDoubleOutput = true; } bool getBinaryDoubleOutput() { return binaryDoubleOutput; } void setSubgroupUniformControlFlow() { subgroupUniformControlFlow = true; } bool getSubgroupUniformControlFlow() const { return subgroupUniformControlFlow; } void setMaximallyReconverges() { maximallyReconverges = true; } bool getMaximallyReconverges() const { return maximallyReconverges; } // GL_EXT_spirv_intrinsics void insertSpirvRequirement(const TSpirvRequirement* spirvReq); bool hasSpirvRequirement() const { return spirvRequirement != nullptr; } const TSpirvRequirement& getSpirvRequirement() const { return *spirvRequirement; } void insertSpirvExecutionMode(int executionMode, const TIntermAggregate* args = nullptr); void insertSpirvExecutionModeId(int executionMode, const TIntermAggregate* args); bool hasSpirvExecutionMode() const { return spirvExecutionMode != nullptr; } const TSpirvExecutionMode& getSpirvExecutionMode() const { return *spirvExecutionMode; } void addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing) { std::string name(nameStr); blockBackingOverrides[name] = backing; } TBlockStorageClass getBlockStorageOverride(const char* nameStr) const { std::string name = nameStr; auto pos = blockBackingOverrides.find(name); if (pos == blockBackingOverrides.end()) return EbsNone; else return pos->second; } #ifdef ENABLE_HLSL void setHlslFunctionality1() { hlslFunctionality1 = true; } bool getHlslFunctionality1() const { return hlslFunctionality1; } void setHlslOffsets() { hlslOffsets = true; if (hlslOffsets) processes.addProcess("hlsl-offsets"); } bool usingHlslOffsets() const { return hlslOffsets; } void setHlslIoMapping(bool b) { hlslIoMapping = b; if (hlslIoMapping) processes.addProcess("hlsl-iomap"); } bool usingHlslIoMapping() { return hlslIoMapping; } #else bool getHlslFunctionality1() const { return false; } bool usingHlslOffsets() const { return false; } bool usingHlslIoMapping() { return false; } #endif bool usingScalarBlockLayout() const { return IsRequestedExtension(E_GL_EXT_scalar_block_layout); } bool usingTextureOffsetNonConst() const { return IsRequestedExtension(E_GL_EXT_texture_offset_non_const); } bool IsRequestedExtension(const char* extension) const { return (requestedExtensions.find(extension) != requestedExtensions.end()); } void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee); void merge(TInfoSink&, TIntermediate&); void finalCheck(TInfoSink&, bool keepUncalled); void mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate& unit, bool mergeExistingOnly); void mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit); void mergeImplicitArraySizes(TInfoSink& infoSink, TIntermediate& unit); void checkStageIO(TInfoSink&, TIntermediate&, EShMessages); void optimizeStageIO(TInfoSink&, TIntermediate&); bool buildConvertOp(TBasicType dst, TBasicType src, TOperator& convertOp) const; TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const; void addIoAccessed(const TString& name) { ioAccessed.insert(name); } bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); } int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision); int checkLocationRange(int set, const TIoRange& range, const TType&, bool& typeCollision); int checkLocationRT(int set, int location); int addUsedOffsets(int binding, int offset, int numOffsets); bool addUsedConstantId(int id); GLSLANG_EXPORT_FOR_TESTS static int computeTypeLocationSize(const TType&, EShLanguage); static int computeTypeUniformLocationSize(const TType&); static int getBaseAlignmentScalar(const TType&, int& size); static int getBaseAlignment(const TType&, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor); static int getScalarAlignment(const TType&, int& size, int& stride, bool rowMajor); static int getMemberAlignment(const TType&, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor); static bool improperStraddle(const TType& type, int size, int offset, bool vectorLike); static void updateOffset(const TType& parentType, const TType& memberType, int& offset, int& memberSize); static int getOffset(const TType& type, int index); static int getBlockSize(const TType& blockType); static int computeBufferReferenceTypeSize(const TType&); static bool isIoResizeArray(const TType& type, EShLanguage language); bool promote(TIntermOperator*); void setNanMinMaxClamp(bool setting) { nanMinMaxClamp = setting; } bool getNanMinMaxClamp() const { return nanMinMaxClamp; } void setSourceFile(const char* file) { if (file != nullptr) sourceFile = file; } const std::string& getSourceFile() const { return sourceFile; } void addSourceText(const char* text, size_t len) { sourceText.append(text, len); } const std::string& getSourceText() const { return sourceText; } const std::map& getIncludeText() const { return includeText; } void addIncludeText(const char* name, const char* text, size_t len) { includeText[name].assign(text,len); } void addProcesses(const std::vector& p) { for (int i = 0; i < (int)p.size(); ++i) processes.addProcess(p[i]); } void addProcess(const std::string& process) { processes.addProcess(process); } void addProcessArgument(const std::string& arg) { processes.addArgument(arg); } const std::vector& getProcesses() const { return processes.getProcesses(); } unsigned long long getUniqueId() const { return uniqueId; } void setUniqueId(unsigned long long id) { uniqueId = id; } // Certain explicit conversions are allowed conditionally bool getArithemeticInt8Enabled() const { return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8); } bool getArithemeticInt16Enabled() const { return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || numericFeatures.contains(TNumericFeatures::gpu_shader_int16) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16); } bool getArithemeticFloat16Enabled() const { return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || numericFeatures.contains(TNumericFeatures::gpu_shader_half_float) || numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16); } void updateNumericFeature(TNumericFeatures::feature f, bool on) { on ? numericFeatures.insert(f) : numericFeatures.erase(f); } protected: TIntermSymbol* addSymbol(long long Id, const TString&, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); void error(TInfoSink& infoSink, const TSourceLoc* loc, EShMessages messages, const char*, EShLanguage unitStage = EShLangCount); void error(TInfoSink& infoSink, const char* message, EShLanguage unitStage = EShLangCount) { error(infoSink, nullptr, EShMsgDefault, message, unitStage); } void warn(TInfoSink& infoSink, const TSourceLoc* loc, EShMessages, const char*, EShLanguage unitStage = EShLangCount); void warn(TInfoSink& infoSink, const char* message, EShLanguage unitStage = EShLangCount) { warn(infoSink, nullptr, EShMsgDefault, message, unitStage); } void mergeCallGraphs(TInfoSink&, TIntermediate&); void mergeModes(TInfoSink&, TIntermediate&); void mergeTrees(TInfoSink&, TIntermediate&); void seedIdMap(TIdMaps& idMaps, long long& IdShift); void remapIds(const TIdMaps& idMaps, long long idShift, TIntermediate&); void mergeBodies(TInfoSink&, TIntermSequence& globals, const TIntermSequence& unitGlobals); void mergeLinkerObjects(TInfoSink&, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects, EShLanguage); void mergeBlockDefinitions(TInfoSink&, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unitRoot); void mergeImplicitArraySizes(TType&, const TType&); void mergeErrorCheck(TInfoSink&, const TIntermSymbol&, const TIntermSymbol&); void checkCallGraphCycles(TInfoSink&); void checkCallGraphBodies(TInfoSink&, bool keepUncalled); void inOutLocationCheck(TInfoSink&); void sharedBlockCheck(TInfoSink&); bool userOutputUsed() const; bool isSpecializationOperation(const TIntermOperator&) const; bool isNonuniformPropagating(TOperator) const; bool promoteUnary(TIntermUnary&); bool promoteBinary(TIntermBinary&); void addSymbolLinkageNode(TIntermAggregate*& linkage, TSymbolTable&, const TString&); bool promoteAggregate(TIntermAggregate&); void pushSelector(TIntermSequence&, const TVectorSelector&, const TSourceLoc&); void pushSelector(TIntermSequence&, const TMatrixSelector&, const TSourceLoc&); bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&); void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root); bool isConversionAllowed(TOperator op, TIntermTyped* node) const; std::tuple getConversionDestinationType(TBasicType type0, TBasicType type1, TOperator op) const; static const char* getResourceName(TResourceType); const EShLanguage language; // stage, known at construction time std::string entryPointName; std::string entryPointMangledName; typedef std::list TGraph; TGraph callGraph; EProfile profile; // source profile int version; // source version SpvVersion spvVersion; TIntermNode* treeRoot; std::set requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them MustBeAssigned resources; int numEntryPoints; int numErrors; 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]; unsigned long long uniqueId; std::string globalUniformBlockName; std::string atomicCounterBlockName; unsigned int globalUniformBlockSet; unsigned int globalUniformBlockBinding; unsigned int atomicCounterBlockSet; public: const char* const implicitThisName; const char* const implicitCounterName; protected: EShSource source; // source language, known a bit later bool useVulkanMemoryModel; int invocations; int vertices; TLayoutGeometry inputPrimitive; TLayoutGeometry outputPrimitive; bool pixelCenterInteger; bool originUpperLeft; bool texCoordBuiltinRedeclared; TVertexSpacing vertexSpacing; TVertexOrder vertexOrder; TInterlockOrdering interlockOrdering; bool pointMode; bool earlyFragmentTests; bool postDepthCoverage; bool earlyAndLateFragmentTestsAMD; bool nonCoherentColorAttachmentReadEXT; bool nonCoherentDepthAttachmentReadEXT; bool nonCoherentStencilAttachmentReadEXT; TLayoutDepth depthLayout; TLayoutStencil stencilLayout; bool hlslFunctionality1; int blendEquations; // an 'or'ing of masks of shifts of TBlendEquationShift bool xfbMode; std::vector xfbBuffers; // all the data we need to track per xfb buffer bool multiStream; bool layoutOverrideCoverage; bool geoPassthroughEXT; int numShaderRecordBlocks; ComputeDerivativeMode computeDerivativeMode; int primitives; int numTaskNVBlocks; bool layoutPrimitiveCulling; int numTaskEXTPayloads; bool nonCoherentTileAttachmentReadQCOM; int tileShadingRateQCOM[3]; bool tileShadingRateQCOMNotDefault[3]; // Base shift values std::array shiftBinding; // Per-descriptor-set shift values std::array, EResCount> shiftBindingForSet; std::vector resourceSetBinding; bool autoMapBindings; bool autoMapLocations; bool flattenUniformArrays; bool useUnknownFormat; bool hlslOffsets; bool hlslIoMapping; bool useVariablePointers; std::set semanticNameSet; EShTextureSamplerTransformMode textureSamplerTransformMode; bool needToLegalize; bool binaryDoubleOutput; bool subgroupUniformControlFlow; bool maximallyReconverges; bool usePhysicalStorageBuffer; bool useReplicatedComposites { false }; TSpirvRequirement* spirvRequirement; TSpirvExecutionMode* spirvExecutionMode; std::map bindlessTextureModeCaller; std::map bindlessImageModeCaller; std::unordered_map uniformLocationOverrides; int uniformLocationBase; bool quadDerivMode; bool reqFullQuadsMode; TNumericFeatures numericFeatures; std::unordered_map blockBackingOverrides; std::unordered_set usedConstantId; // specialization constant ids used std::vector usedAtomics; // sets of bindings used by atomic counters std::vector usedIo[5]; // sets of used locations, one for each of in, out, uniform, and buffers std::vector usedIoRT[4]; // sets of used location, one for rayPayload/rayPayloadIN, // one for callableData/callableDataIn, one for hitObjectAttributeNV and // one for shaderrecordhitobjectNV // set of names of statically read/written I/O that might need extra checking std::set ioAccessed; // source code of shader, useful as part of debug information std::string sourceFile; std::string sourceText; // Included text. First string is a name, second is the included text std::map includeText; // for OpModuleProcessed, or equivalent TProcesses processes; private: void operator=(TIntermediate&); // prevent assignments }; } // end namespace glslang #endif // _LOCAL_INTERMEDIATE_INCLUDED_ glslang-16.0.0/glslang/MachineIndependent/parseConst.cpp000066400000000000000000000166201506534232700232370ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // Traverse a tree of constants to create a single folded constant. // It should only be used when the whole tree is known to be constant. // #include "ParseHelper.h" namespace glslang { class TConstTraverser : public TIntermTraverser { public: TConstTraverser(const TConstUnionArray& cUnion, bool singleConstParam, TOperator constructType, const TType& t) : unionArray(cUnion), type(t), constructorType(constructType), singleConstantParam(singleConstParam), error(false), isMatrix(false), matrixCols(0), matrixRows(0) { index = 0; tOp = EOpNull; } virtual void visitConstantUnion(TIntermConstantUnion* node); virtual bool visitAggregate(TVisit, TIntermAggregate* node); int index; TConstUnionArray unionArray; TOperator tOp; const TType& type; TOperator constructorType; bool singleConstantParam; bool error; int size; // size of the constructor ( 4 for vec4) bool isMatrix; int matrixCols; int matrixRows; protected: TConstTraverser(TConstTraverser&); TConstTraverser& operator=(TConstTraverser&); }; bool TConstTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node) { if (! node->isConstructor() && node->getOp() != EOpComma) { error = true; return false; } bool flag = node->getSequence().size() == 1 && node->getSequence()[0]->getAsTyped()->getAsConstantUnion(); if (flag) { singleConstantParam = true; constructorType = node->getOp(); size = node->getType().computeNumComponents(); if (node->getType().isMatrix()) { isMatrix = true; matrixCols = node->getType().getMatrixCols(); matrixRows = node->getType().getMatrixRows(); } } for (TIntermSequence::iterator p = node->getSequence().begin(); p != node->getSequence().end(); p++) { if (node->getOp() == EOpComma) index = 0; (*p)->traverse(this); } if (flag) { singleConstantParam = false; constructorType = EOpNull; size = 0; isMatrix = false; matrixCols = 0; matrixRows = 0; } return false; } void TConstTraverser::visitConstantUnion(TIntermConstantUnion* node) { TConstUnionArray leftUnionArray(unionArray); int instanceSize = type.computeNumComponents(); if (index >= instanceSize) return; if (! singleConstantParam) { int rightUnionSize = node->getType().computeNumComponents(); const TConstUnionArray& rightUnionArray = node->getConstArray(); for (int i = 0; i < rightUnionSize; i++) { if (index >= instanceSize) return; leftUnionArray[index] = rightUnionArray[i]; index++; } } else { int endIndex = index + size; const TConstUnionArray& rightUnionArray = node->getConstArray(); if (! isMatrix) { int count = 0; int nodeComps = node->getType().computeNumComponents(); for (int i = index; i < endIndex; i++) { if (i >= instanceSize) return; leftUnionArray[i] = rightUnionArray[count]; (index)++; if (nodeComps > 1) count++; } } else { // constructing a matrix, but from what? if (node->isMatrix()) { // Matrix from a matrix; this has the outer matrix, node is the argument matrix. // Traverse the outer, potentially bigger matrix, fill in missing pieces with the // identity matrix. for (int c = 0; c < matrixCols; ++c) { for (int r = 0; r < matrixRows; ++r) { int targetOffset = index + c * matrixRows + r; if (r < node->getType().getMatrixRows() && c < node->getType().getMatrixCols()) { int srcOffset = c * node->getType().getMatrixRows() + r; leftUnionArray[targetOffset] = rightUnionArray[srcOffset]; } else if (r == c) leftUnionArray[targetOffset].setDConst(1.0); else leftUnionArray[targetOffset].setDConst(0.0); } } } else { // matrix from vector or scalar int nodeComps = node->getType().computeNumComponents(); if (nodeComps == 1) { for (int c = 0; c < matrixCols; ++c) { for (int r = 0; r < matrixRows; ++r) { if (r == c) leftUnionArray[index] = rightUnionArray[0]; else leftUnionArray[index].setDConst(0.0); index++; } } } else { int count = 0; for (int i = index; i < endIndex; i++) { if (i >= instanceSize) return; // construct the matrix in column-major order, from // the components provided, in order leftUnionArray[i] = rightUnionArray[count]; index++; count++; } } } } } } bool TIntermediate::parseConstTree(TIntermNode* root, TConstUnionArray unionArray, TOperator constructorType, const TType& t, bool singleConstantParam) { if (root == nullptr) return false; TConstTraverser it(unionArray, singleConstantParam, constructorType, t); root->traverse(&it); if (it.error) return true; else return false; } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/parseVersions.h000066400000000000000000000251761506534232700234340ustar00rootroot00000000000000// // Copyright (C) 2015-2018 Google, Inc. // Copyright (C) 2017 ARM Limited. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // This is implemented in Versions.cpp #ifndef _PARSE_VERSIONS_INCLUDED_ #define _PARSE_VERSIONS_INCLUDED_ #include "../Public/ShaderLang.h" #include "../Include/InfoSink.h" #include "Scan.h" #include namespace glslang { // // Base class for parse helpers. // This just has version-related information and checking. // This class should be sufficient for preprocessing. // class TParseVersions { public: TParseVersions(TIntermediate& interm, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : forwardCompatible(forwardCompatible), profile(profile), infoSink(infoSink), version(version), language(language), spvVersion(spvVersion), intermediate(interm), messages(messages), numErrors(0), currentScanner(nullptr) { } virtual ~TParseVersions() { } void requireStage(const TSourceLoc&, EShLanguageMask, const char* featureDesc); void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc); bool forwardCompatible; // true if errors are to be given for use of deprecated features EProfile profile; // the declared profile in the shader (core by default) bool isEsProfile() const { return profile == EEsProfile; } void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc); void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, const char* const extensions[], const char* featureDesc); void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension, const char* featureDesc); virtual void initializeExtensionBehavior(); virtual void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc); virtual void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc); virtual void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); template constexpr void ppRequireExtensions(const TSourceLoc& loc, Container extensions, const char* featureDesc) { ppRequireExtensions(loc, static_cast(extensions.size()), extensions.data(), featureDesc); } virtual TExtensionBehavior getExtensionBehavior(const char*); virtual bool extensionTurnedOn(const char* const extension); virtual bool extensionsTurnedOn(int numExtensions, const char* const extensions[]); virtual void updateExtensionBehavior(int line, const char* const extension, const char* behavior); virtual void updateExtensionBehavior(const char* const extension, TExtensionBehavior); virtual bool checkExtensionsRequested(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); virtual void checkExtensionStage(const TSourceLoc&, const char* const extension); virtual void extensionRequires(const TSourceLoc&, const char* const extension, const char* behavior); virtual void fullIntegerCheck(const TSourceLoc&, const char* op); virtual void unimplemented(const TSourceLoc&, const char* featureDesc); virtual void doubleCheck(const TSourceLoc&, const char* op); virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void float16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void bfloat16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void floate5m2ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void floate4m3ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual bool float16Arithmetic(); virtual void requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc); virtual void int16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual bool int16Arithmetic(); virtual void requireInt16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc); virtual void int8ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual bool int8Arithmetic(); virtual void requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc); virtual void float16OpaqueCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void int64Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitInt8Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitInt16Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitInt32Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void fcoopmatCheckNV(const TSourceLoc&, const char* op, bool builtIn = false); virtual void intcoopmatCheckNV(const TSourceLoc&, const char *op, bool builtIn = false); virtual void coopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void coopmatConverisonCheckQCOM(const TSourceLoc& loc, const char* op, bool builtIn = false); virtual void tensorLayoutViewCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void coopvecCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void intattachmentCheck(const TSourceLoc&, const char *op, bool builtIn = false); virtual void tensorCheckARM(const TSourceLoc&, const char *op, bool builtIn = false); bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; } bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; } bool isForwardCompatible() const { return forwardCompatible; } virtual void spvRemoved(const TSourceLoc&, const char* op); virtual void vulkanRemoved(const TSourceLoc&, const char* op); virtual void requireVulkan(const TSourceLoc&, const char* op); virtual void requireSpv(const TSourceLoc&, const char* op); virtual void requireSpv(const TSourceLoc&, const char *op, unsigned int version); virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) = 0; virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) = 0; virtual void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) = 0; virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) = 0; void addError() { ++numErrors; } int getNumErrors() const { return numErrors; } void setScanner(TInputScanner* scanner) { currentScanner = scanner; } TInputScanner* getScanner() const { return currentScanner; } const TSourceLoc& getCurrentLoc() const { return currentScanner->getSourceLoc(); } void setCurrentLine(int line) { currentScanner->setLine(line); } void setCurrentColumn(int col) { currentScanner->setColumn(col); } void setCurrentSourceName(const char* name) { currentScanner->setFile(name); } void setCurrentString(int string) { currentScanner->setString(string); } void getPreamble(std::string&); #ifdef ENABLE_HLSL bool isReadingHLSL() const { return (messages & EShMsgReadHlsl) == EShMsgReadHlsl; } bool hlslEnable16BitTypes() const { return (messages & EShMsgHlslEnable16BitTypes) != 0; } bool hlslDX9Compatible() const { return (messages & EShMsgHlslDX9Compatible) != 0; } #else bool isReadingHLSL() const { return false; } #endif TInfoSink& infoSink; // compilation mode int version; // version, updated by #version in the shader EShLanguage language; // really the stage SpvVersion spvVersion; TIntermediate& intermediate; // helper for making and hooking up pieces of the parse tree protected: TMap extensionBehavior; // for each extension string, what its current behavior is TMap extensionMinSpv; // for each extension string, store minimum spirv required TVector spvUnsupportedExt; // for extensions reserved for spv usage. EShMessages messages; // errors/warnings/rule-sets int numErrors; // number of compile-time errors encountered TInputScanner* currentScanner; private: explicit TParseVersions(const TParseVersions&); TParseVersions& operator=(const TParseVersions&); }; } // end namespace glslang #endif // _PARSE_VERSIONS_INCLUDED_ glslang-16.0.0/glslang/MachineIndependent/pch.h000066400000000000000000000035501506534232700213330ustar00rootroot00000000000000#ifndef _PCH_H #define _PCH_H // // Copyright (C) 2018 The Khronos Group Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include #include #include #include #include #include #include #include #include "SymbolTable.h" #include "ParseHelper.h" #include "Scan.h" #include "ScanContext.h" #endif /* _PCH_H */ glslang-16.0.0/glslang/MachineIndependent/preprocessor/000077500000000000000000000000001506534232700231335ustar00rootroot00000000000000glslang-16.0.0/glslang/MachineIndependent/preprocessor/Pp.cpp000066400000000000000000001421001506534232700242140ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif #include #include #include #include #include #include "PpContext.h" #include "PpTokens.h" namespace glslang { // Handle #define int TPpContext::CPPdefine(TPpToken* ppToken) { MacroSymbol mac; // get the macro name int token = scanToken(ppToken); if (token != PpAtomIdentifier) { parseContext.ppError(ppToken->loc, "must be followed by macro name", "#define", ""); return token; } if (ppToken->loc.string >= 0) { // We are in user code; check for reserved name use: parseContext.reservedPpErrorCheck(ppToken->loc, ppToken->name, "#define"); } // save the macro name const int defAtom = atomStrings.getAddAtom(ppToken->name); TSourceLoc defineLoc = ppToken->loc; // because ppToken might go to the next line before we report errors // gather parameters to the macro, between (...) token = scanToken(ppToken); if (token == '(' && !ppToken->space) { mac.functionLike = 1; do { token = scanToken(ppToken); if (mac.args.size() == 0 && token == ')') break; if (token != PpAtomIdentifier) { parseContext.ppError(ppToken->loc, "bad argument", "#define", ""); return token; } const int argAtom = atomStrings.getAddAtom(ppToken->name); // check for duplication of parameter name bool duplicate = false; for (size_t a = 0; a < mac.args.size(); ++a) { if (mac.args[a] == argAtom) { parseContext.ppError(ppToken->loc, "duplicate macro parameter", "#define", ""); duplicate = true; break; } } if (! duplicate) mac.args.push_back(argAtom); token = scanToken(ppToken); } while (token == ','); if (token != ')') { parseContext.ppError(ppToken->loc, "missing parenthesis", "#define", ""); return token; } token = scanToken(ppToken); } else if (token != '\n' && token != EndOfInput && !ppToken->space) { parseContext.ppWarn(ppToken->loc, "missing space after macro name", "#define", ""); return token; } // record the definition of the macro while (token != '\n' && token != EndOfInput) { mac.body.putToken(token, ppToken); token = scanToken(ppToken); if (token != '\n' && ppToken->space) mac.body.putToken(' ', ppToken); } // check for duplicate definition MacroSymbol* existing = lookupMacroDef(defAtom); if (existing != nullptr) { if (! existing->undef) { // Already defined -- need to make sure they are identical: // "Two replacement lists are identical if and only if the // preprocessing tokens in both have the same number, // ordering, spelling, and white-space separation, where all // white-space separations are considered identical." if (existing->functionLike != mac.functionLike) { parseContext.ppError(defineLoc, "Macro redefined; function-like versus object-like:", "#define", atomStrings.getString(defAtom)); } else if (existing->args.size() != mac.args.size()) { parseContext.ppError(defineLoc, "Macro redefined; different number of arguments:", "#define", atomStrings.getString(defAtom)); } else { if (existing->args != mac.args) { parseContext.ppError(defineLoc, "Macro redefined; different argument names:", "#define", atomStrings.getString(defAtom)); } // set up to compare the two existing->body.reset(); mac.body.reset(); int newToken; bool firstToken = true; do { int oldToken; TPpToken oldPpToken; TPpToken newPpToken; oldToken = existing->body.getToken(parseContext, &oldPpToken); newToken = mac.body.getToken(parseContext, &newPpToken); // for the first token, preceding spaces don't matter if (firstToken) { newPpToken.space = oldPpToken.space; firstToken = false; } if (oldToken != newToken || oldPpToken != newPpToken) { parseContext.ppError(defineLoc, "Macro redefined; different substitutions:", "#define", atomStrings.getString(defAtom)); break; } } while (newToken != EndOfInput); } } *existing = mac; } else addMacroDef(defAtom, mac); return '\n'; } // Handle #undef int TPpContext::CPPundef(TPpToken* ppToken) { int token = scanToken(ppToken); if (token != PpAtomIdentifier) { parseContext.ppError(ppToken->loc, "must be followed by macro name", "#undef", ""); return token; } parseContext.reservedPpErrorCheck(ppToken->loc, ppToken->name, "#undef"); MacroSymbol* macro = lookupMacroDef(atomStrings.getAtom(ppToken->name)); if (macro != nullptr) macro->undef = 1; token = scanToken(ppToken); if (token != '\n') parseContext.ppError(ppToken->loc, "can only be followed by a single macro name", "#undef", ""); return token; } // Handle #else /* Skip forward to appropriate spot. This is used both ** to skip to a #endif after seeing an #else, AND to skip to a #else, ** #elif, or #endif after a #if/#ifdef/#ifndef/#elif test was false. */ int TPpContext::CPPelse(int matchelse, TPpToken* ppToken) { inElseSkip = true; int depth = 0; int token = scanToken(ppToken); while (token != EndOfInput) { if (token != '#') { while (token != '\n' && token != EndOfInput) token = scanToken(ppToken); if (token == EndOfInput) return token; token = scanToken(ppToken); continue; } if ((token = scanToken(ppToken)) != PpAtomIdentifier) continue; int nextAtom = atomStrings.getAtom(ppToken->name); if (nextAtom == PpAtomIf || nextAtom == PpAtomIfdef || nextAtom == PpAtomIfndef) { depth++; if (ifdepth >= maxIfNesting || elsetracker >= maxIfNesting) { parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#if/#ifdef/#ifndef", ""); return EndOfInput; } else { ifdepth++; elsetracker++; } } else if (nextAtom == PpAtomEndif) { token = extraTokenCheck(nextAtom, ppToken, scanToken(ppToken)); elseSeen[elsetracker] = false; --elsetracker; if (depth == 0) { // found the #endif we are looking for if (ifdepth > 0) --ifdepth; break; } --depth; --ifdepth; } else if (matchelse && depth == 0) { if (nextAtom == PpAtomElse) { elseSeen[elsetracker] = true; token = extraTokenCheck(nextAtom, ppToken, scanToken(ppToken)); // found the #else we are looking for break; } else if (nextAtom == PpAtomElif) { if (elseSeen[elsetracker]) parseContext.ppError(ppToken->loc, "#elif after #else", "#elif", ""); /* we decrement ifdepth here, because CPPif will increment * it and we really want to leave it alone */ if (ifdepth > 0) { --ifdepth; elseSeen[elsetracker] = false; --elsetracker; } inElseSkip = false; return CPPif(ppToken); } } else if (nextAtom == PpAtomElse) { if (elseSeen[elsetracker]) parseContext.ppError(ppToken->loc, "#else after #else", "#else", ""); else elseSeen[elsetracker] = true; token = extraTokenCheck(nextAtom, ppToken, scanToken(ppToken)); } else if (nextAtom == PpAtomElif) { if (elseSeen[elsetracker]) parseContext.ppError(ppToken->loc, "#elif after #else", "#elif", ""); } } inElseSkip = false; return token; } // Call when there should be no more tokens left on a line. int TPpContext::extraTokenCheck(int contextAtom, TPpToken* ppToken, int token) { if (token != '\n' && token != EndOfInput) { static const char* message = "unexpected tokens following directive"; const char* label; if (contextAtom == PpAtomElse) label = "#else"; else if (contextAtom == PpAtomElif) label = "#elif"; else if (contextAtom == PpAtomEndif) label = "#endif"; else if (contextAtom == PpAtomIf) label = "#if"; else if (contextAtom == PpAtomLine) label = "#line"; else label = ""; if (parseContext.relaxedErrors()) parseContext.ppWarn(ppToken->loc, message, label, ""); else parseContext.ppError(ppToken->loc, message, label, ""); while (token != '\n' && token != EndOfInput) token = scanToken(ppToken); } return token; } enum eval_prec { MIN_PRECEDENCE, COND, LOGOR, LOGAND, OR, XOR, AND, EQUAL, RELATION, SHIFT, ADD, MUL, UNARY, MAX_PRECEDENCE }; namespace { int op_logor(int a, int b) { return a || b; } int op_logand(int a, int b) { return a && b; } int op_or(int a, int b) { return a | b; } int op_xor(int a, int b) { return a ^ b; } int op_and(int a, int b) { return a & b; } int op_eq(int a, int b) { return a == b; } int op_ne(int a, int b) { return a != b; } int op_ge(int a, int b) { return a >= b; } int op_le(int a, int b) { return a <= b; } int op_gt(int a, int b) { return a > b; } int op_lt(int a, int b) { return a < b; } int op_shl(int a, int b) { return a << b; } int op_shr(int a, int b) { return a >> b; } int op_add(int a, int b) { return a + b; } int op_sub(int a, int b) { return a - b; } int op_mul(int a, int b) { return a * b; } int op_div(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a / b; } int op_mod(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a % b; } int op_pos(int a) { return a; } int op_neg(int a) { return a == INT_MIN ? INT_MIN : -a; } int op_cmpl(int a) { return ~a; } int op_not(int a) { return !a; } struct TBinop { int token, precedence, (*op)(int, int); } binop[] = { { PpAtomOr, LOGOR, op_logor }, { PpAtomAnd, LOGAND, op_logand }, { '|', OR, op_or }, { '^', XOR, op_xor }, { '&', AND, op_and }, { PpAtomEQ, EQUAL, op_eq }, { PpAtomNE, EQUAL, op_ne }, { '>', RELATION, op_gt }, { PpAtomGE, RELATION, op_ge }, { '<', RELATION, op_lt }, { PpAtomLE, RELATION, op_le }, { PpAtomLeft, SHIFT, op_shl }, { PpAtomRight, SHIFT, op_shr }, { '+', ADD, op_add }, { '-', ADD, op_sub }, { '*', MUL, op_mul }, { '/', MUL, op_div }, { '%', MUL, op_mod }, }; struct TUnop { int token, (*op)(int); } unop[] = { { '+', op_pos }, { '-', op_neg }, { '~', op_cmpl }, { '!', op_not }, }; } // anonymous namespace #define NUM_ELEMENTS(A) (sizeof(A) / sizeof(A[0])) int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, bool& err, TPpToken* ppToken) { TSourceLoc loc = ppToken->loc; // because we sometimes read the newline before reporting the error if (token == PpAtomIdentifier) { if (strcmp("defined", ppToken->name) == 0) { if (! parseContext.isReadingHLSL() && isMacroInput()) { if (parseContext.relaxedErrors()) parseContext.ppWarn(ppToken->loc, "nonportable when expanded from macros for preprocessor expression", "defined", ""); else parseContext.ppError(ppToken->loc, "cannot use in preprocessor expression when expanded from macros", "defined", ""); } bool needclose = 0; token = scanToken(ppToken); if (token == '(') { needclose = true; token = scanToken(ppToken); } if (token != PpAtomIdentifier) { parseContext.ppError(loc, "incorrect directive, expected identifier", "preprocessor evaluation", ""); err = true; res = 0; return token; } MacroSymbol* macro = lookupMacroDef(atomStrings.getAtom(ppToken->name)); res = macro != nullptr ? !macro->undef : 0; token = scanToken(ppToken); if (needclose) { if (token != ')') { parseContext.ppError(loc, "expected ')'", "preprocessor evaluation", ""); err = true; res = 0; return token; } token = scanToken(ppToken); } } else { token = tokenPaste(token, *ppToken); token = evalToToken(token, shortCircuit, res, err, ppToken); return eval(token, precedence, shortCircuit, res, err, ppToken); } } else if (token == PpAtomConstInt) { res = ppToken->ival; token = scanToken(ppToken); } else if (token == '(') { token = scanToken(ppToken); token = eval(token, MIN_PRECEDENCE, shortCircuit, res, err, ppToken); if (! err) { if (token != ')') { parseContext.ppError(loc, "expected ')'", "preprocessor evaluation", ""); err = true; res = 0; return token; } token = scanToken(ppToken); } } else { int op = NUM_ELEMENTS(unop) - 1; for (; op >= 0; op--) { if (unop[op].token == token) break; } if (op >= 0) { token = scanToken(ppToken); token = eval(token, UNARY, shortCircuit, res, err, ppToken); res = unop[op].op(res); } else { parseContext.ppError(loc, "bad expression", "preprocessor evaluation", ""); err = true; res = 0; return token; } } token = evalToToken(token, shortCircuit, res, err, ppToken); // Perform evaluation of binary operation, if there is one, otherwise we are done. while (! err) { if (token == ')' || token == '\n') break; int op; for (op = NUM_ELEMENTS(binop) - 1; op >= 0; op--) { if (binop[op].token == token) break; } if (op < 0 || binop[op].precedence <= precedence) break; int leftSide = res; // Setup short-circuiting, needed for ES, unless already in a short circuit. // (Once in a short-circuit, can't turn off again, until that whole subexpression is done. if (! shortCircuit) { if ((token == PpAtomOr && leftSide == 1) || (token == PpAtomAnd && leftSide == 0)) shortCircuit = true; } token = scanToken(ppToken); token = eval(token, binop[op].precedence, shortCircuit, res, err, ppToken); if (binop[op].op == op_div || binop[op].op == op_mod) { if (res == 0) { parseContext.ppError(loc, "division by 0", "preprocessor evaluation", ""); res = 1; } } res = binop[op].op(leftSide, res); } return token; } // Expand macros, skipping empty expansions, to get to the first real token in those expansions. int TPpContext::evalToToken(int token, bool shortCircuit, int& res, bool& err, TPpToken* ppToken) { while (token == PpAtomIdentifier && strcmp("defined", ppToken->name) != 0) { switch (MacroExpand(ppToken, true, false)) { case MacroExpandNotStarted: case MacroExpandError: parseContext.ppError(ppToken->loc, "can't evaluate expression", "preprocessor evaluation", ""); err = true; res = 0; break; case MacroExpandStarted: break; case MacroExpandUndef: if (! shortCircuit && parseContext.isEsProfile()) { const char* message = "undefined macro in expression not allowed in es profile"; if (parseContext.relaxedErrors()) parseContext.ppWarn(ppToken->loc, message, "preprocessor evaluation", ppToken->name); else parseContext.ppError(ppToken->loc, message, "preprocessor evaluation", ppToken->name); } break; } token = scanToken(ppToken); if (err) break; } return token; } // Handle #if int TPpContext::CPPif(TPpToken* ppToken) { int token = scanToken(ppToken); if (ifdepth >= maxIfNesting || elsetracker >= maxIfNesting) { parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#if", ""); return EndOfInput; } else { elsetracker++; ifdepth++; } int res = 0; bool err = false; token = eval(token, MIN_PRECEDENCE, false, res, err, ppToken); token = extraTokenCheck(PpAtomIf, ppToken, token); if (!res && !err) token = CPPelse(1, ppToken); return token; } // Handle #ifdef int TPpContext::CPPifdef(int defined, TPpToken* ppToken) { int token = scanToken(ppToken); if (ifdepth > maxIfNesting || elsetracker > maxIfNesting) { parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#ifdef", ""); return EndOfInput; } else { elsetracker++; ifdepth++; } if (token != PpAtomIdentifier) { if (defined) parseContext.ppError(ppToken->loc, "must be followed by macro name", "#ifdef", ""); else parseContext.ppError(ppToken->loc, "must be followed by macro name", "#ifndef", ""); } else { MacroSymbol* macro = lookupMacroDef(atomStrings.getAtom(ppToken->name)); token = scanToken(ppToken); if (token != '\n') { parseContext.ppError(ppToken->loc, "unexpected tokens following #ifdef directive - expected a newline", "#ifdef", ""); while (token != '\n' && token != EndOfInput) token = scanToken(ppToken); } if (((macro != nullptr && !macro->undef) ? 1 : 0) != defined) token = CPPelse(1, ppToken); } return token; } // Handle #include ... // TODO: Handle macro expansions for the header name int TPpContext::CPPinclude(TPpToken* ppToken) { const TSourceLoc directiveLoc = ppToken->loc; bool startWithLocalSearch = true; // to additionally include the extra "" paths int token; // Find the first non-whitespace char after #include int ch = getChar(); while (ch == ' ' || ch == '\t') { ch = getChar(); } if (ch == '<') { // style startWithLocalSearch = false; token = scanHeaderName(ppToken, '>'); } else if (ch == '"') { // "header-name" style token = scanHeaderName(ppToken, '"'); } else { // unexpected, get the full token to generate the error ungetChar(); token = scanToken(ppToken); } if (token != PpAtomConstString) { parseContext.ppError(directiveLoc, "must be followed by a header name", "#include", ""); return token; } // Make a copy of the name because it will be overwritten by the next token scan. const std::string filename = ppToken->name; // See if the directive was well formed token = scanToken(ppToken); if (token != '\n') { if (token == EndOfInput) parseContext.ppError(ppToken->loc, "expected newline after header name:", "#include", "%s", filename.c_str()); else parseContext.ppError(ppToken->loc, "extra content after header name:", "#include", "%s", filename.c_str()); return token; } // Process well-formed directive // Find the inclusion, first look in "Local" ("") paths, if requested, // otherwise, only search the "System" (<>) paths. TShader::Includer::IncludeResult* res = nullptr; if (startWithLocalSearch) res = includer.includeLocal(filename.c_str(), currentSourceFile.c_str(), includeStack.size() + 1); if (res == nullptr || res->headerName.empty()) { includer.releaseInclude(res); res = includer.includeSystem(filename.c_str(), currentSourceFile.c_str(), includeStack.size() + 1); } // Process the results if (res != nullptr && !res->headerName.empty()) { if (res->headerData != nullptr && res->headerLength > 0) { // path for processing one or more tokens from an included header, hand off 'res' const bool forNextLine = parseContext.lineDirectiveShouldSetNextLine(); std::ostringstream prologue; std::ostringstream epilogue; prologue << "#line " << forNextLine << " " << "\"" << res->headerName << "\"\n"; epilogue << (res->headerData[res->headerLength - 1] == '\n'? "" : "\n") << "#line " << directiveLoc.line + forNextLine << " " << directiveLoc.getStringNameOrNum() << "\n"; pushInput(new TokenizableIncludeFile(directiveLoc, prologue.str(), res, epilogue.str(), this)); parseContext.intermediate.addIncludeText(res->headerName.c_str(), res->headerData, res->headerLength); // There's no "current" location anymore. parseContext.setCurrentColumn(0); } else { // things are okay, but there is nothing to process includer.releaseInclude(res); } } else { // error path, clean up std::string message = res != nullptr ? std::string(res->headerData, res->headerLength) : std::string("Could not process include directive"); parseContext.ppError(directiveLoc, message.c_str(), "#include", "for header name: %s", filename.c_str()); includer.releaseInclude(res); } return token; } // Handle #line int TPpContext::CPPline(TPpToken* ppToken) { // "#line must have, after macro substitution, one of the following forms: // "#line line // "#line line source-string-number" int token = scanToken(ppToken); const TSourceLoc directiveLoc = ppToken->loc; if (token == '\n') { parseContext.ppError(ppToken->loc, "must by followed by an integral literal", "#line", ""); return token; } int lineRes = 0; // Line number after macro expansion. int lineToken = 0; bool hasFile = false; int fileRes = 0; // Source file number after macro expansion. const char* sourceName = nullptr; // Optional source file name. bool lineErr = false; bool fileErr = false; disableEscapeSequences = true; token = eval(token, MIN_PRECEDENCE, false, lineRes, lineErr, ppToken); disableEscapeSequences = false; if (! lineErr) { lineToken = lineRes; if (token == '\n') ++lineRes; if (parseContext.lineDirectiveShouldSetNextLine()) --lineRes; parseContext.setCurrentLine(lineRes); if (token != '\n') { if (token == PpAtomConstString) { parseContext.ppRequireExtensions(directiveLoc, 1, &E_GL_GOOGLE_cpp_style_line_directive, "filename-based #line"); // We need to save a copy of the string instead of pointing // to the name field of the token since the name field // will likely be overwritten by the next token scan. sourceName = atomStrings.getString(atomStrings.getAddAtom(ppToken->name)); parseContext.setCurrentSourceName(sourceName); hasFile = true; token = scanToken(ppToken); } else { token = eval(token, MIN_PRECEDENCE, false, fileRes, fileErr, ppToken); if (! fileErr) { parseContext.setCurrentString(fileRes); hasFile = true; } } } } if (!fileErr && !lineErr) { parseContext.notifyLineDirective(directiveLoc.line, lineToken, hasFile, fileRes, sourceName); } token = extraTokenCheck(PpAtomLine, ppToken, token); return token; } // Handle #error int TPpContext::CPPerror(TPpToken* ppToken) { disableEscapeSequences = true; int token = scanToken(ppToken); disableEscapeSequences = false; std::string message; TSourceLoc loc = ppToken->loc; while (token != '\n' && token != EndOfInput) { if (token == PpAtomConstInt16 || token == PpAtomConstUint16 || token == PpAtomConstInt || token == PpAtomConstUint || token == PpAtomConstInt64 || token == PpAtomConstUint64 || token == PpAtomConstFloat16 || token == PpAtomConstFloat || token == PpAtomConstDouble) { message.append(ppToken->name); } else if (token == PpAtomIdentifier || token == PpAtomConstString) { message.append(ppToken->name); } else { message.append(atomStrings.getString(token)); } message.append(" "); token = scanToken(ppToken); } parseContext.notifyErrorDirective(loc.line, message.c_str()); // store this msg into the shader's information log..set the Compile Error flag!!!! parseContext.ppError(loc, message.c_str(), "#error", ""); return '\n'; } // Handle #pragma int TPpContext::CPPpragma(TPpToken* ppToken) { char SrcStrName[2]; TVector tokens; TSourceLoc loc = ppToken->loc; // because we go to the next line before processing int token = scanToken(ppToken); while (token != '\n' && token != EndOfInput) { switch (token) { case PpAtomIdentifier: case PpAtomConstInt: case PpAtomConstUint: case PpAtomConstInt64: case PpAtomConstUint64: case PpAtomConstInt16: case PpAtomConstUint16: case PpAtomConstFloat: case PpAtomConstDouble: case PpAtomConstFloat16: tokens.push_back(ppToken->name); break; default: SrcStrName[0] = (char)token; SrcStrName[1] = '\0'; tokens.push_back(SrcStrName); } token = scanToken(ppToken); } if (token == EndOfInput) parseContext.ppError(loc, "directive must end with a newline", "#pragma", ""); else parseContext.handlePragma(loc, tokens); return token; } // #version: This is just for error checking: the version and profile are decided before preprocessing starts int TPpContext::CPPversion(TPpToken* ppToken) { int token = scanToken(ppToken); if (errorOnVersion || versionSeen) { if (parseContext.isReadingHLSL()) parseContext.ppError(ppToken->loc, "invalid preprocessor command", "#version", ""); else parseContext.ppError(ppToken->loc, "must occur first in shader", "#version", ""); } versionSeen = true; if (token == '\n') { parseContext.ppError(ppToken->loc, "must be followed by version number", "#version", ""); return token; } if (token != PpAtomConstInt) parseContext.ppError(ppToken->loc, "must be followed by version number", "#version", ""); ppToken->ival = atoi(ppToken->name); int versionNumber = ppToken->ival; int line = ppToken->loc.line; token = scanToken(ppToken); if (token == '\n') { parseContext.notifyVersion(line, versionNumber, nullptr); return token; } else { int profileAtom = atomStrings.getAtom(ppToken->name); if (profileAtom != PpAtomCore && profileAtom != PpAtomCompatibility && profileAtom != PpAtomEs) parseContext.ppError(ppToken->loc, "bad profile name; use es, core, or compatibility", "#version", ""); parseContext.notifyVersion(line, versionNumber, ppToken->name); token = scanToken(ppToken); if (token == '\n') return token; else parseContext.ppError(ppToken->loc, "bad tokens following profile -- expected newline", "#version", ""); } return token; } // Handle #extension int TPpContext::CPPextension(TPpToken* ppToken) { int line = ppToken->loc.line; int token = scanToken(ppToken); char extensionName[MaxTokenLength + 1]; if (token=='\n') { parseContext.ppError(ppToken->loc, "extension name not specified", "#extension", ""); return token; } if (token != PpAtomIdentifier) parseContext.ppError(ppToken->loc, "extension name expected", "#extension", ""); snprintf(extensionName, sizeof(extensionName), "%s", ppToken->name); token = scanToken(ppToken); if (token != ':') { parseContext.ppError(ppToken->loc, "':' missing after extension name", "#extension", ""); return token; } token = scanToken(ppToken); if (token != PpAtomIdentifier) { parseContext.ppError(ppToken->loc, "behavior for extension not specified", "#extension", ""); return token; } parseContext.updateExtensionBehavior(line, extensionName, ppToken->name); parseContext.notifyExtensionDirective(line, extensionName, ppToken->name); token = scanToken(ppToken); if (token == '\n') return token; else parseContext.ppError(ppToken->loc, "extra tokens -- expected newline", "#extension",""); return token; } int TPpContext::readCPPline(TPpToken* ppToken) { int token = scanToken(ppToken); if (token == PpAtomIdentifier) { switch (atomStrings.getAtom(ppToken->name)) { case PpAtomDefine: token = CPPdefine(ppToken); break; case PpAtomElse: if (elseSeen[elsetracker]) parseContext.ppError(ppToken->loc, "#else after #else", "#else", ""); elseSeen[elsetracker] = true; if (ifdepth == 0) parseContext.ppError(ppToken->loc, "mismatched statements", "#else", ""); token = extraTokenCheck(PpAtomElse, ppToken, scanToken(ppToken)); token = CPPelse(0, ppToken); break; case PpAtomElif: if (ifdepth == 0) parseContext.ppError(ppToken->loc, "mismatched statements", "#elif", ""); if (elseSeen[elsetracker]) parseContext.ppError(ppToken->loc, "#elif after #else", "#elif", ""); // this token is really a dont care, but we still need to eat the tokens token = scanToken(ppToken); while (token != '\n' && token != EndOfInput) token = scanToken(ppToken); token = CPPelse(0, ppToken); break; case PpAtomEndif: if (ifdepth == 0) parseContext.ppError(ppToken->loc, "mismatched statements", "#endif", ""); else { elseSeen[elsetracker] = false; --elsetracker; --ifdepth; } token = extraTokenCheck(PpAtomEndif, ppToken, scanToken(ppToken)); break; case PpAtomIf: token = CPPif(ppToken); break; case PpAtomIfdef: token = CPPifdef(1, ppToken); break; case PpAtomIfndef: token = CPPifdef(0, ppToken); break; case PpAtomLine: token = CPPline(ppToken); break; case PpAtomInclude: if(!parseContext.isReadingHLSL()) { const std::array exts = { E_GL_GOOGLE_include_directive, E_GL_ARB_shading_language_include }; parseContext.ppRequireExtensions(ppToken->loc, exts, "#include"); } token = CPPinclude(ppToken); break; case PpAtomPragma: token = CPPpragma(ppToken); break; case PpAtomUndef: token = CPPundef(ppToken); break; case PpAtomError: token = CPPerror(ppToken); break; case PpAtomVersion: token = CPPversion(ppToken); break; case PpAtomExtension: token = CPPextension(ppToken); break; default: parseContext.ppError(ppToken->loc, "invalid directive:", "#", ppToken->name); break; } } else if (token != '\n' && token != EndOfInput) parseContext.ppError(ppToken->loc, "invalid directive", "#", ""); while (token != '\n' && token != EndOfInput) token = scanToken(ppToken); return token; } // Context-dependent parsing of a #include . // Assumes no macro expansions etc. are being done; the name is just on the current input. // Always creates a name and returns PpAtomicConstString, unless we run out of input. int TPpContext::scanHeaderName(TPpToken* ppToken, char delimit) { bool tooLong = false; if (inputStack.empty()) return EndOfInput; int len = 0; ppToken->name[0] = '\0'; do { int ch = inputStack.back()->getch(); // done yet? if (ch == delimit) { ppToken->name[len] = '\0'; if (tooLong) parseContext.ppError(ppToken->loc, "header name too long", "", ""); return PpAtomConstString; } else if (ch == EndOfInput) return EndOfInput; // found a character to expand the name with if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; else tooLong = true; } while (true); } // Macro-expand a macro argument 'arg' to create 'expandedArg'. // Does not replace 'arg'. // Returns nullptr if no expanded argument is created. TPpContext::TokenStream* TPpContext::PrescanMacroArg(TokenStream& arg, TPpToken* ppToken, bool newLineOkay) { // expand the argument TokenStream* expandedArg = new TokenStream; pushInput(new tMarkerInput(this)); pushTokenStreamInput(arg); int token; while ((token = scanToken(ppToken)) != tMarkerInput::marker && token != EndOfInput) { token = tokenPaste(token, *ppToken); if (token == PpAtomIdentifier) { switch (MacroExpand(ppToken, false, newLineOkay)) { case MacroExpandNotStarted: break; case MacroExpandError: // toss the rest of the pushed-input argument by scanning until tMarkerInput while ((token = scanToken(ppToken)) != tMarkerInput::marker && token != EndOfInput) ; break; case MacroExpandStarted: case MacroExpandUndef: continue; } } if (token == tMarkerInput::marker || token == EndOfInput) break; expandedArg->putToken(token, ppToken); } if (token != tMarkerInput::marker) { // Error, or MacroExpand ate the marker, so had bad input, recover delete expandedArg; expandedArg = nullptr; } return expandedArg; } // // Return the next token for a macro expansion, handling macro arguments, // whose semantics are dependent on being adjacent to ##. // int TPpContext::tMacroInput::scan(TPpToken* ppToken) { int token; do { token = mac->body.getToken(pp->parseContext, ppToken); } while (token == ' '); // handle white space in macro // Hash operators basically turn off a round of macro substitution // (the round done on the argument before the round done on the RHS of the // macro definition): // // "A parameter in the replacement list, unless preceded by a # or ## // preprocessing token or followed by a ## preprocessing token (see below), // is replaced by the corresponding argument after all macros contained // therein have been expanded." // // "If, in the replacement list, a parameter is immediately preceded or // followed by a ## preprocessing token, the parameter is replaced by the // corresponding argument's preprocessing token sequence." bool pasting = false; if (postpaste) { // don't expand next token pasting = true; postpaste = false; } if (prepaste) { // already know we should be on a ##, verify assert(token == PpAtomPaste); prepaste = false; postpaste = true; } // see if are preceding a ## if (mac->body.peekUntokenizedPasting()) { prepaste = true; pasting = true; } // TODO: preprocessor: properly handle whitespace (or lack of it) between tokens when expanding if (token == PpAtomIdentifier) { int i; for (i = (int)mac->args.size() - 1; i >= 0; i--) if (strcmp(pp->atomStrings.getString(mac->args[i]), ppToken->name) == 0) break; if (i >= 0) { TokenStream* arg = expandedArgs[i]; bool expanded = !!arg && !pasting; // HLSL does expand macros before concatenation if (arg == nullptr || (pasting && !pp->parseContext.isReadingHLSL()) ) { arg = args[i]; } pp->pushTokenStreamInput(*arg, prepaste, expanded); return pp->scanToken(ppToken); } } if (token == EndOfInput) mac->busy = 0; return token; } // return a textual zero, for scanning a macro that was never defined int TPpContext::tZeroInput::scan(TPpToken* ppToken) { if (done) return EndOfInput; ppToken->name[0] = '0'; ppToken->name[1] = 0; ppToken->ival = 0; ppToken->space = false; done = true; return PpAtomConstInt; } // // Check a token to see if it is a macro that should be expanded: // - If it is, and defined, push a tInput that will produce the appropriate // expansion and return MacroExpandStarted. // - If it is, but undefined, and expandUndef is requested, push a tInput // that will expand to 0 and return MacroExpandUndef. // - Otherwise, there is no expansion, and there are two cases: // * It might be okay there is no expansion, and no specific error was // detected. Returns MacroExpandNotStarted. // * The expansion was started, but could not be completed, due to an error // that cannot be recovered from. Returns MacroExpandError. // MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOkay) { ppToken->space = false; int macroAtom = atomStrings.getAtom(ppToken->name); if (ppToken->fullyExpanded) return MacroExpandNotStarted; switch (macroAtom) { case PpAtomLineMacro: // Arguments which are macro have been replaced in the first stage. if (ppToken->ival == 0) ppToken->ival = parseContext.getCurrentLoc().line; snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival); UngetToken(PpAtomConstInt, ppToken); return MacroExpandStarted; case PpAtomFileMacro: { if (parseContext.getCurrentLoc().name) parseContext.ppRequireExtensions(ppToken->loc, 1, &E_GL_GOOGLE_cpp_style_line_directive, "filename-based __FILE__"); ppToken->ival = parseContext.getCurrentLoc().string; snprintf(ppToken->name, sizeof(ppToken->name), "%s", ppToken->loc.getStringNameOrNum().c_str()); UngetToken(PpAtomConstInt, ppToken); return MacroExpandStarted; } case PpAtomVersionMacro: ppToken->ival = parseContext.version; snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival); UngetToken(PpAtomConstInt, ppToken); return MacroExpandStarted; default: break; } MacroSymbol* macro = macroAtom == 0 ? nullptr : lookupMacroDef(macroAtom); // no recursive expansions if (macro != nullptr && macro->busy) { ppToken->fullyExpanded = true; return MacroExpandNotStarted; } // not expanding undefined macros if ((macro == nullptr || macro->undef) && ! expandUndef) return MacroExpandNotStarted; // 0 is the value of an undefined macro if ((macro == nullptr || macro->undef) && expandUndef) { pushInput(new tZeroInput(this)); return MacroExpandUndef; } tMacroInput *in = new tMacroInput(this); TSourceLoc loc = ppToken->loc; // in case we go to the next line before discovering the error in->mac = macro; if (macro->functionLike) { // We don't know yet if this will be a successful call of a // function-like macro; need to look for a '(', but without trashing // the passed in ppToken, until we know we are no longer speculative. TPpToken parenToken; int token = scanToken(&parenToken); if (newLineOkay) { while (token == '\n') token = scanToken(&parenToken); } if (token != '(') { // Function-like macro called with object-like syntax: okay, don't expand. // (We ate exactly one token that might not be white space; put it back. UngetToken(token, &parenToken); delete in; return MacroExpandNotStarted; } in->args.resize(in->mac->args.size()); for (size_t i = 0; i < in->mac->args.size(); i++) in->args[i] = new TokenStream; in->expandedArgs.resize(in->mac->args.size()); for (size_t i = 0; i < in->mac->args.size(); i++) in->expandedArgs[i] = nullptr; size_t arg = 0; bool tokenRecorded = false; do { TVector nestStack; while (true) { token = scanToken(ppToken); if (token == EndOfInput || token == tMarkerInput::marker) { parseContext.ppError(loc, "End of input in macro", "macro expansion", atomStrings.getString(macroAtom)); delete in; return MacroExpandError; } if (token == '\n') { if (! newLineOkay) { parseContext.ppError(loc, "End of line in macro substitution:", "macro expansion", atomStrings.getString(macroAtom)); delete in; return MacroExpandError; } continue; } if (token == '#') { parseContext.ppError(ppToken->loc, "unexpected '#'", "macro expansion", atomStrings.getString(macroAtom)); delete in; return MacroExpandError; } if (in->mac->args.size() == 0 && token != ')') break; if (nestStack.size() == 0 && (token == ',' || token == ')')) break; if (token == '(') nestStack.push_back(')'); else if (token == '{' && parseContext.isReadingHLSL()) nestStack.push_back('}'); else if (nestStack.size() > 0 && token == nestStack.back()) nestStack.pop_back(); //Macro replacement list is expanded in the last stage. if (atomStrings.getAtom(ppToken->name) == PpAtomLineMacro) ppToken->ival = parseContext.getCurrentLoc().line; in->args[arg]->putToken(token, ppToken); tokenRecorded = true; } // end of single argument scan if (token == ')') { // closing paren of call if (in->mac->args.size() == 1 && !tokenRecorded) break; arg++; break; } arg++; } while (arg < in->mac->args.size()); // end of all arguments scan if (arg < in->mac->args.size()) parseContext.ppError(loc, "Too few args in Macro", "macro expansion", atomStrings.getString(macroAtom)); else if (token != ')') { // Error recover code; find end of call, if possible int depth = 0; while (token != EndOfInput && (depth > 0 || token != ')')) { if (token == ')' || token == '}') depth--; token = scanToken(ppToken); if (token == '(' || token == '{') depth++; } if (token == EndOfInput) { parseContext.ppError(loc, "End of input in macro", "macro expansion", atomStrings.getString(macroAtom)); delete in; return MacroExpandError; } parseContext.ppError(loc, "Too many args in macro", "macro expansion", atomStrings.getString(macroAtom)); } // We need both expanded and non-expanded forms of the argument, for whether or // not token pasting will be applied later when the argument is consumed next to ##. for (size_t i = 0; i < in->mac->args.size(); i++) in->expandedArgs[i] = PrescanMacroArg(*in->args[i], ppToken, newLineOkay); } pushInput(in); macro->busy = 1; macro->body.reset(); return MacroExpandStarted; } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/preprocessor/PpAtom.cpp000066400000000000000000000150201506534232700250350ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif #include #include #include #include "PpContext.h" #include "PpTokens.h" namespace { using namespace glslang; const struct { int val; const char* str; } tokens[] = { { PPAtomAddAssign, "+=" }, { PPAtomSubAssign, "-=" }, { PPAtomMulAssign, "*=" }, { PPAtomDivAssign, "/=" }, { PPAtomModAssign, "%=" }, { PpAtomRight, ">>" }, { PpAtomLeft, "<<" }, { PpAtomAnd, "&&" }, { PpAtomOr, "||" }, { PpAtomXor, "^^" }, { PpAtomRightAssign, ">>=" }, { PpAtomLeftAssign, "<<=" }, { PpAtomAndAssign, "&=" }, { PpAtomOrAssign, "|=" }, { PpAtomXorAssign, "^=" }, { PpAtomEQ, "==" }, { PpAtomNE, "!=" }, { PpAtomGE, ">=" }, { PpAtomLE, "<=" }, { PpAtomDecrement, "--" }, { PpAtomIncrement, "++" }, { PpAtomColonColon, "::" }, { PpAtomDefine, "define" }, { PpAtomUndef, "undef" }, { PpAtomIf, "if" }, { PpAtomElif, "elif" }, { PpAtomElse, "else" }, { PpAtomEndif, "endif" }, { PpAtomIfdef, "ifdef" }, { PpAtomIfndef, "ifndef" }, { PpAtomLine, "line" }, { PpAtomPragma, "pragma" }, { PpAtomError, "error" }, { PpAtomVersion, "version" }, { PpAtomCore, "core" }, { PpAtomCompatibility, "compatibility" }, { PpAtomEs, "es" }, { PpAtomExtension, "extension" }, { PpAtomLineMacro, "__LINE__" }, { PpAtomFileMacro, "__FILE__" }, { PpAtomVersionMacro, "__VERSION__" }, { PpAtomInclude, "include" }, }; } // end anonymous namespace namespace glslang { // // Initialize the atom table. // TStringAtomMap::TStringAtomMap() { badToken.assign(""); // Add single character tokens to the atom table: const char* s = "~!%^&*()-+=|,.<>/?;:[]{}#\\"; char t[2]; t[1] = '\0'; while (*s) { t[0] = *s; addAtomFixed(t, s[0]); s++; } // Add multiple character scanner tokens : for (size_t ii = 0; ii < sizeof(tokens)/sizeof(tokens[0]); ii++) addAtomFixed(tokens[ii].str, tokens[ii].val); nextAtom = PpAtomLast; } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/preprocessor/PpContext.cpp000066400000000000000000000121621506534232700255650ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ #include #include #include "PpContext.h" namespace glslang { TPpContext::TPpContext(TParseContextBase& pc, const std::string& rootFileName, TShader::Includer& inclr) : preamble(nullptr), strings(nullptr), previous_token('\n'), parseContext(pc), includer(inclr), inComment(false), rootFileName(rootFileName), currentSourceFile(rootFileName), disableEscapeSequences(false), inElseSkip(false) { ifdepth = 0; for (elsetracker = 0; elsetracker < maxIfNesting; elsetracker++) elseSeen[elsetracker] = false; elsetracker = 0; strtodStream.imbue(std::locale::classic()); } TPpContext::~TPpContext() { delete [] preamble; // free up the inputStack while (! inputStack.empty()) popInput(); } void TPpContext::setInput(TInputScanner& input, bool versionWillBeError) { assert(inputStack.size() == 0); pushInput(new tStringInput(this, input)); errorOnVersion = versionWillBeError; versionSeen = false; } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/preprocessor/PpContext.h000066400000000000000000000666331506534232700252460ustar00rootroot00000000000000// // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ #ifndef PPCONTEXT_H #define PPCONTEXT_H #include #include #include #include "../ParseHelper.h" #include "PpTokens.h" namespace glslang { class TPpToken { public: TPpToken() { clear(); } void clear() { space = false; i64val = 0; loc.init(); name[0] = 0; fullyExpanded = false; } // Used for comparing macro definitions, so checks what is relevant for that. bool operator==(const TPpToken& right) const { return space == right.space && ival == right.ival && dval == right.dval && i64val == right.i64val && strncmp(name, right.name, MaxTokenLength) == 0; } bool operator!=(const TPpToken& right) const { return ! operator==(right); } TSourceLoc loc; // True if a space (for white space or a removed comment) should also be // recognized, in front of the token returned: bool space; bool fullyExpanded; // Numeric value of the token: union { int ival; double dval; long long i64val; }; // Text string of the token: char name[MaxTokenLength + 1]; }; class TStringAtomMap { // // Implementation is in PpAtom.cpp // // Maintain a bi-directional mapping between relevant preprocessor strings and // "atoms" which a unique integers (small, contiguous, not hash-like) per string. // public: TStringAtomMap(); // Map string -> atom. // Return 0 if no existing string. int getAtom(const char* s) const { auto it = atomMap.find(s); return it == atomMap.end() ? 0 : it->second; } // Map a new or existing string -> atom, inventing a new atom if necessary. int getAddAtom(const char* s) { int atom = getAtom(s); if (atom == 0) { atom = nextAtom++; addAtomFixed(s, atom); } return atom; } // Map atom -> string. const char* getString(int atom) const { return stringMap[atom]->c_str(); } protected: TStringAtomMap(TStringAtomMap&); TStringAtomMap& operator=(TStringAtomMap&); TUnorderedMap atomMap; TVector stringMap; // these point into the TString in atomMap int nextAtom; // Bad source characters can lead to bad atoms, so gracefully handle those by // pre-filling the table with them (to avoid if tests later). TString badToken; // Add bi-directional mappings: // - string -> atom // - atom -> string void addAtomFixed(const char* s, int atom) { auto it = atomMap.insert(std::pair(s, atom)).first; if (stringMap.size() < (size_t)atom + 1) stringMap.resize(atom + 100, &badToken); stringMap[atom] = &it->first; } }; class TInputScanner; enum MacroExpandResult { MacroExpandNotStarted, // macro not expanded, which might not be an error MacroExpandError, // a clear error occurred while expanding, no expansion MacroExpandStarted, // macro expansion process has started MacroExpandUndef // macro is undefined and will be expanded }; // This class is the result of turning a huge pile of C code communicating through globals // into a class. This was done to allowing instancing to attain thread safety. // Don't expect too much in terms of OO design. class TPpContext { public: TPpContext(TParseContextBase&, const std::string& rootFileName, TShader::Includer&); virtual ~TPpContext(); void setPreamble(const char* preamble, size_t length); int tokenize(TPpToken& ppToken); int tokenPaste(int token, TPpToken&); class tInput { public: tInput(TPpContext* p) : done(false), pp(p) { } virtual ~tInput() { } virtual int scan(TPpToken*) = 0; virtual int getch() = 0; virtual void ungetch() = 0; virtual bool peekPasting() { return false; } // true when about to see ## virtual bool peekContinuedPasting(int) { return false; } // true when non-spaced tokens can paste virtual bool endOfReplacementList() { return false; } // true when at the end of a macro replacement list (RHS of #define) virtual bool isMacroInput() { return false; } virtual bool isStringInput() { return false; } // Will be called when we start reading tokens from this instance virtual void notifyActivated() {} // Will be called when we do not read tokens from this instance anymore virtual void notifyDeleted() {} protected: bool done; TPpContext* pp; }; void setInput(TInputScanner& input, bool versionWillBeError); void pushInput(tInput* in) { inputStack.push_back(in); in->notifyActivated(); } void popInput() { inputStack.back()->notifyDeleted(); delete inputStack.back(); inputStack.pop_back(); } // // From PpTokens.cpp // // Capture the needed parts of a token stream for macro recording/playback. class TokenStream { public: // Manage a stream of these 'Token', which capture the relevant parts // of a TPpToken, plus its atom. class Token { public: Token(int atom, const TPpToken& ppToken) : atom(atom), space(ppToken.space), i64val(ppToken.i64val), name(ppToken.name) { } int get(TPpToken& ppToken) { ppToken.clear(); ppToken.space = space; ppToken.i64val = i64val; snprintf(ppToken.name, sizeof(ppToken.name), "%s", name.c_str()); return atom; } bool isAtom(int a) const { return atom == a; } int getAtom() const { return atom; } bool nonSpaced() const { return !space; } protected: Token() {} int atom; bool space; // did a space precede the token? long long i64val; TString name; }; TokenStream() : currentPos(0) { } void putToken(int token, TPpToken* ppToken); bool peekToken(int atom) { return !atEnd() && stream[currentPos].isAtom(atom); } bool peekContinuedPasting(int atom) { // This is basically necessary because, for example, the PP // tokenizer only accepts valid numeric-literals plus suffixes, so // separates numeric-literals plus bad suffix into two tokens, which // should get both pasted together as one token when token pasting. // // The following code is a bit more generalized than the above example. if (!atEnd() && atom == PpAtomIdentifier && stream[currentPos].nonSpaced()) { switch(stream[currentPos].getAtom()) { case PpAtomConstInt: case PpAtomConstUint: case PpAtomConstInt64: case PpAtomConstUint64: case PpAtomConstInt16: case PpAtomConstUint16: case PpAtomConstFloat: case PpAtomConstDouble: case PpAtomConstFloat16: case PpAtomConstString: case PpAtomIdentifier: return true; default: break; } } return false; } int getToken(TParseContextBase&, TPpToken*); bool atEnd() { return currentPos >= stream.size(); } bool peekTokenizedPasting(bool lastTokenPastes); bool peekUntokenizedPasting(); void reset() { currentPos = 0; } protected: TVector stream; size_t currentPos; }; // // From Pp.cpp // struct MacroSymbol { MacroSymbol() : functionLike(0), busy(0), undef(0) { } TVector args; TokenStream body; unsigned functionLike : 1; // 0 means object-like, 1 means function-like unsigned busy : 1; unsigned undef : 1; }; typedef TMap TSymbolMap; TSymbolMap macroDefs; // map atoms to macro definitions MacroSymbol* lookupMacroDef(int atom) { auto existingMacroIt = macroDefs.find(atom); return (existingMacroIt == macroDefs.end()) ? nullptr : &(existingMacroIt->second); } void addMacroDef(int atom, MacroSymbol& macroDef) { macroDefs[atom] = macroDef; } protected: TPpContext(TPpContext&); TPpContext& operator=(TPpContext&); TStringAtomMap atomStrings; char* preamble; // string to parse, all before line 1 of string 0, it is 0 if no preamble int preambleLength; char** strings; // official strings of shader, starting a string 0 line 1 size_t* lengths; int numStrings; // how many official strings there are int currentString; // which string we're currently parsing (-1 for preamble) // Scanner data: int previous_token; TParseContextBase& parseContext; std::vector lastLineTokens; std::vector lastLineTokenLocs; // Get the next token from *stack* of input sources, popping input sources // that are out of tokens, down until an input source is found that has a token. // Return EndOfInput when there are no more tokens to be found by doing this. int scanToken(TPpToken* ppToken) { int token = EndOfInput; while (! inputStack.empty()) { token = inputStack.back()->scan(ppToken); if (token != EndOfInput || inputStack.empty()) break; popInput(); } if (!inputStack.empty() && inputStack.back()->isStringInput() && !inElseSkip) { if (token == '\n') { bool seenNumSign = false; for (int i = 0; i < (int)lastLineTokens.size() - 1;) { int curPos = i; int curToken = lastLineTokens[i++]; if (curToken == '#' && lastLineTokens[i] == '#') { curToken = PpAtomPaste; i++; } if (curToken == '#') { if (seenNumSign) { parseContext.ppError(lastLineTokenLocs[curPos], "(#) can be preceded in its line only by spaces or horizontal tabs", "#", ""); } else { seenNumSign = true; } } } lastLineTokens.clear(); lastLineTokenLocs.clear(); } else { lastLineTokens.push_back(token); lastLineTokenLocs.push_back(ppToken->loc); } } return token; } int getChar() { return inputStack.back()->getch(); } void ungetChar() { inputStack.back()->ungetch(); } bool peekPasting() { return !inputStack.empty() && inputStack.back()->peekPasting(); } bool peekContinuedPasting(int a) { return !inputStack.empty() && inputStack.back()->peekContinuedPasting(a); } bool endOfReplacementList() { return inputStack.empty() || inputStack.back()->endOfReplacementList(); } bool isMacroInput() { return inputStack.size() > 0 && inputStack.back()->isMacroInput(); } static const int maxIfNesting = 65; int ifdepth; // current #if-#else-#endif nesting in the cpp.c file (pre-processor) bool elseSeen[maxIfNesting]; // Keep a track of whether an else has been seen at a particular depth int elsetracker; // #if-#else and #endif constructs...Counter. class tMacroInput : public tInput { public: tMacroInput(TPpContext* pp) : tInput(pp), prepaste(false), postpaste(false) { } virtual ~tMacroInput() { for (size_t i = 0; i < args.size(); ++i) delete args[i]; for (size_t i = 0; i < expandedArgs.size(); ++i) delete expandedArgs[i]; } virtual int scan(TPpToken*) override; virtual int getch() override { assert(0); return EndOfInput; } virtual void ungetch() override { assert(0); } bool peekPasting() override { return prepaste; } bool peekContinuedPasting(int a) override { return mac->body.peekContinuedPasting(a); } bool endOfReplacementList() override { return mac->body.atEnd(); } bool isMacroInput() override { return true; } MacroSymbol *mac; TVector args; TVector expandedArgs; protected: bool prepaste; // true if we are just before ## bool postpaste; // true if we are right after ## }; class tMarkerInput : public tInput { public: tMarkerInput(TPpContext* pp) : tInput(pp) { } virtual int scan(TPpToken*) override { if (done) return EndOfInput; done = true; return marker; } virtual int getch() override { assert(0); return EndOfInput; } virtual void ungetch() override { assert(0); } static const int marker = -3; }; class tZeroInput : public tInput { public: tZeroInput(TPpContext* pp) : tInput(pp) { } virtual int scan(TPpToken*) override; virtual int getch() override { assert(0); return EndOfInput; } virtual void ungetch() override { assert(0); } }; std::vector inputStack; bool errorOnVersion; bool versionSeen; // // from Pp.cpp // // Used to obtain #include content. TShader::Includer& includer; int CPPdefine(TPpToken * ppToken); int CPPundef(TPpToken * ppToken); int CPPelse(int matchelse, TPpToken * ppToken); int extraTokenCheck(int atom, TPpToken* ppToken, int token); int eval(int token, int precedence, bool shortCircuit, int& res, bool& err, TPpToken * ppToken); int evalToToken(int token, bool shortCircuit, int& res, bool& err, TPpToken * ppToken); int CPPif (TPpToken * ppToken); int CPPifdef(int defined, TPpToken * ppToken); int CPPinclude(TPpToken * ppToken); int CPPline(TPpToken * ppToken); int CPPerror(TPpToken * ppToken); int CPPpragma(TPpToken * ppToken); int CPPversion(TPpToken * ppToken); int CPPextension(TPpToken * ppToken); int readCPPline(TPpToken * ppToken); int scanHeaderName(TPpToken* ppToken, char delimit); TokenStream* PrescanMacroArg(TokenStream&, TPpToken*, bool newLineOkay); MacroExpandResult MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOkay); // // From PpTokens.cpp // void pushTokenStreamInput(TokenStream&, bool pasting = false, bool expanded = false); void UngetToken(int token, TPpToken*); class tTokenInput : public tInput { public: tTokenInput(TPpContext* pp, TokenStream* t, bool prepasting, bool expanded) : tInput(pp), tokens(t), lastTokenPastes(prepasting), preExpanded(expanded) { } virtual int scan(TPpToken *ppToken) override { int token = tokens->getToken(pp->parseContext, ppToken); ppToken->fullyExpanded = preExpanded; if (tokens->atEnd() && token == PpAtomIdentifier) { int macroAtom = pp->atomStrings.getAtom(ppToken->name); MacroSymbol* macro = macroAtom == 0 ? nullptr : pp->lookupMacroDef(macroAtom); if (macro && macro->functionLike) ppToken->fullyExpanded = false; } return token; } virtual int getch() override { assert(0); return EndOfInput; } virtual void ungetch() override { assert(0); } virtual bool peekPasting() override { return tokens->peekTokenizedPasting(lastTokenPastes); } bool peekContinuedPasting(int a) override { return tokens->peekContinuedPasting(a); } protected: TokenStream* tokens; bool lastTokenPastes; // true if the last token in the input is to be pasted, rather than consumed as a token bool preExpanded; }; class tUngotTokenInput : public tInput { public: tUngotTokenInput(TPpContext* pp, int t, TPpToken* p) : tInput(pp), token(t), lval(*p) { } virtual int scan(TPpToken *) override; virtual int getch() override { assert(0); return EndOfInput; } virtual void ungetch() override { assert(0); } protected: int token; TPpToken lval; }; // // From PpScanner.cpp // class tStringInput : public tInput { public: tStringInput(TPpContext* pp, TInputScanner& i) : tInput(pp), input(&i) { } virtual int scan(TPpToken*) override; bool isStringInput() override { return true; } // Scanner used to get source stream characters. // - Escaped newlines are handled here, invisibly to the caller. // - All forms of newline are handled, and turned into just a '\n'. int getch() override { int ch = input->get(); if (ch == '\\') { // Move past escaped newlines, as many as sequentially exist do { if (input->peek() == '\r' || input->peek() == '\n') { bool allowed = pp->parseContext.lineContinuationCheck(input->getSourceLoc(), pp->inComment); if (! allowed && pp->inComment) return '\\'; // escape one newline now ch = input->get(); int nextch = input->get(); if (ch == '\r' && nextch == '\n') ch = input->get(); else ch = nextch; } else return '\\'; } while (ch == '\\'); } // handle any non-escaped newline if (ch == '\r' || ch == '\n') { if (ch == '\r' && input->peek() == '\n') input->get(); return '\n'; } return ch; } // Scanner used to backup the source stream characters. Newlines are // handled here, invisibly to the caller, meaning have to undo exactly // what getch() above does (e.g., don't leave things in the middle of a // sequence of escaped newlines). void ungetch() override { input->unget(); do { int ch = input->peek(); if (ch == '\r' || ch == '\n') { if (ch == '\n') { // correct for two-character newline input->unget(); if (input->peek() != '\r') input->get(); } // now in front of a complete newline, move past an escape character input->unget(); if (input->peek() == '\\') input->unget(); else { input->get(); break; } } else break; } while (true); } protected: TInputScanner* input; }; // Holds a reference to included file data, as well as a // prologue and an epilogue string. This can be scanned using the tInput // interface and acts as a single source string. class TokenizableIncludeFile : public tInput { public: // Copies prologue and epilogue. The includedFile must remain valid // until this TokenizableIncludeFile is no longer used. TokenizableIncludeFile(const TSourceLoc& startLoc, const std::string& prologue, TShader::Includer::IncludeResult* includedFile, const std::string& epilogue, TPpContext* pp) : tInput(pp), prologue_(prologue), epilogue_(epilogue), includedFile_(includedFile), scanner(3, strings, lengths, nullptr, 0, 0, true), prevScanner(nullptr), stringInput(pp, scanner) { strings[0] = prologue_.data(); strings[1] = includedFile_->headerData; strings[2] = epilogue_.data(); lengths[0] = prologue_.size(); lengths[1] = includedFile_->headerLength; lengths[2] = epilogue_.size(); scanner.setLine(startLoc.line); scanner.setString(startLoc.string); scanner.setFile(startLoc.getFilenameStr(), 0); scanner.setFile(startLoc.getFilenameStr(), 1); scanner.setFile(startLoc.getFilenameStr(), 2); } // tInput methods: int scan(TPpToken* t) override { return stringInput.scan(t); } int getch() override { return stringInput.getch(); } void ungetch() override { stringInput.ungetch(); } void notifyActivated() override { prevScanner = pp->parseContext.getScanner(); pp->parseContext.setScanner(&scanner); pp->push_include(includedFile_); } void notifyDeleted() override { pp->parseContext.setScanner(prevScanner); pp->pop_include(); } private: TokenizableIncludeFile& operator=(const TokenizableIncludeFile&); // Stores the prologue for this string. const std::string prologue_; // Stores the epilogue for this string. const std::string epilogue_; // Points to the IncludeResult that this TokenizableIncludeFile represents. TShader::Includer::IncludeResult* includedFile_; // Will point to prologue_, includedFile_->headerData and epilogue_ // This is passed to scanner constructor. // These do not own the storage and it must remain valid until this // object has been destroyed. const char* strings[3]; // Length of str_, passed to scanner constructor. size_t lengths[3]; // Scans over str_. TInputScanner scanner; // The previous effective scanner before the scanner in this instance // has been activated. TInputScanner* prevScanner; // Delegate object implementing the tInput interface. tStringInput stringInput; }; int ScanFromString(char* s); void missingEndifCheck(); int lFloatConst(int len, int ch, TPpToken* ppToken); int characterLiteral(TPpToken* ppToken); void push_include(TShader::Includer::IncludeResult* result) { currentSourceFile = result->headerName; includeStack.push(result); } void pop_include() { TShader::Includer::IncludeResult* include = includeStack.top(); includeStack.pop(); includer.releaseInclude(include); if (includeStack.empty()) { currentSourceFile = rootFileName; } else { currentSourceFile = includeStack.top()->headerName; } } bool inComment; std::string rootFileName; std::stack includeStack; std::string currentSourceFile; std::istringstream strtodStream; bool disableEscapeSequences; // True if we're skipping a section enclosed by #if/#ifdef/#elif/#else which was evaluated to // be inactive, e.g. #if 0 bool inElseSkip; }; } // end namespace glslang #endif // PPCONTEXT_H glslang-16.0.0/glslang/MachineIndependent/preprocessor/PpScanner.cpp000066400000000000000000001576431506534232700255500ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2015-2018 Google, Inc. // Copyright (c) 2023, Mobica Limited // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif #include #include #include "PpContext.h" #include "PpTokens.h" #include "../Scan.h" namespace glslang { /////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// Floating point constants: ///////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// // // Scan a single- or double-precision floating point constant. // Assumes that the scanner has seen at least one digit, // followed by either a decimal '.' or the letter 'e', or a // precision ending (e.g., F or LF). // // This is technically not correct, as the preprocessor should just // accept the numeric literal along with whatever suffix it has, but // currently, it stops on seeing a bad suffix, treating that as the // next token. This effects things like token pasting, where it is // relevant how many tokens something was broken into. // // See peekContinuedPasting(). int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) { const auto saveName = [&](int ch) { if (len <= MaxTokenLength) ppToken->name[len++] = static_cast(ch); }; // find the range of non-zero digits before the decimal point int startNonZero = 0; while (startNonZero < len && ppToken->name[startNonZero] == '0') ++startNonZero; int endNonZero = len; while (endNonZero > startNonZero && ppToken->name[endNonZero-1] == '0') --endNonZero; int numWholeNumberDigits = endNonZero - startNonZero; // accumulate the range's value bool fastPath = numWholeNumberDigits <= 15; // when the number gets too complex, set to false unsigned long long wholeNumber = 0; if (fastPath) { for (int i = startNonZero; i < endNonZero; ++i) wholeNumber = wholeNumber * 10 + (ppToken->name[i] - '0'); } int decimalShift = len - endNonZero; // Decimal point: bool hasDecimalOrExponent = false; if (ch == '.') { hasDecimalOrExponent = true; saveName(ch); ch = getChar(); int firstDecimal = len; #ifdef ENABLE_HLSL // 1.#INF or -1.#INF if (ch == '#' && (ifdepth > 0 || parseContext.intermediate.getSource() == EShSourceHlsl)) { if ((len < 2) || (len == 2 && ppToken->name[0] != '1') || (len == 3 && ppToken->name[1] != '1' && !(ppToken->name[0] == '-' || ppToken->name[0] == '+')) || (len > 3)) parseContext.ppError(ppToken->loc, "unexpected use of", "#", ""); else { // we have 1.# or -1.# or +1.#, check for 'INF' if ((ch = getChar()) != 'I' || (ch = getChar()) != 'N' || (ch = getChar()) != 'F') parseContext.ppError(ppToken->loc, "expected 'INF'", "#", ""); else { // we have [+-].#INF, and we are targeting IEEE 754, so wrap it up: saveName('I'); saveName('N'); saveName('F'); ppToken->name[len] = '\0'; if (ppToken->name[0] == '-') ppToken->i64val = 0xfff0000000000000; // -Infinity else ppToken->i64val = 0x7ff0000000000000; // +Infinity return PpAtomConstFloat; } } } #endif // Consume leading-zero digits after the decimal point while (ch == '0') { saveName(ch); ch = getChar(); } int startNonZeroDecimal = len; int endNonZeroDecimal = len; // Consume remaining digits, up to the exponent while (ch >= '0' && ch <= '9') { saveName(ch); if (ch != '0') endNonZeroDecimal = len; ch = getChar(); } // Compute accumulation up to the last non-zero digit if (endNonZeroDecimal > startNonZeroDecimal) { numWholeNumberDigits += endNonZeroDecimal - endNonZero - 1; // don't include the "." if (numWholeNumberDigits > 15) fastPath = false; if (fastPath) { for (int i = endNonZero; i < endNonZeroDecimal; ++i) { if (ppToken->name[i] != '.') wholeNumber = wholeNumber * 10 + (ppToken->name[i] - '0'); } } decimalShift = firstDecimal - endNonZeroDecimal; } } // Exponent: bool negativeExponent = false; double exponentValue = 0.0; int exponent = 0; { if (ch == 'e' || ch == 'E') { hasDecimalOrExponent = true; saveName(ch); ch = getChar(); if (ch == '+' || ch == '-') { negativeExponent = ch == '-'; saveName(ch); ch = getChar(); } if (ch >= '0' && ch <= '9') { while (ch >= '0' && ch <= '9') { if (exponent < 500) { exponent = exponent * 10 + (ch - '0'); } saveName(ch); ch = getChar(); } } else { parseContext.ppError(ppToken->loc, "bad character in float exponent", "", ""); } } // Compensate for location of decimal if (negativeExponent) exponent -= decimalShift; else { exponent += decimalShift; if (exponent < 0) { negativeExponent = true; exponent = -exponent; } } if (exponent > 22) fastPath = false; if (fastPath) { // Compute the floating-point value of the exponent exponentValue = 1.0; if (exponent > 0) { double expFactor = 10; while (exponent > 0) { if (exponent & 0x1) exponentValue *= expFactor; expFactor *= expFactor; exponent >>= 1; } } } } // Suffix: bool isDouble = false; bool isFloat16 = false; if (ch == 'l' || ch == 'L') { if (ifdepth == 0 && parseContext.intermediate.getSource() == EShSourceGlsl) parseContext.doubleCheck(ppToken->loc, "double floating-point suffix"); if (ifdepth == 0 && !hasDecimalOrExponent) parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", ""); if (parseContext.intermediate.getSource() == EShSourceGlsl) { int ch2 = getChar(); if (ch2 != 'f' && ch2 != 'F') { ungetChar(); ungetChar(); } else { saveName(ch); saveName(ch2); isDouble = true; } } else if (parseContext.intermediate.getSource() == EShSourceHlsl) { saveName(ch); isDouble = true; } } else if (ch == 'h' || ch == 'H') { if (ifdepth == 0 && parseContext.intermediate.getSource() == EShSourceGlsl) parseContext.float16Check(ppToken->loc, "half floating-point suffix"); if (ifdepth == 0 && !hasDecimalOrExponent) parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", ""); if (parseContext.intermediate.getSource() == EShSourceGlsl) { int ch2 = getChar(); if (ch2 != 'f' && ch2 != 'F') { ungetChar(); ungetChar(); } else { saveName(ch); saveName(ch2); isFloat16 = true; } } else if (parseContext.intermediate.getSource() == EShSourceHlsl) { saveName(ch); isFloat16 = true; } } else if (ch == 'f' || ch == 'F') { if (ifdepth == 0) parseContext.profileRequires(ppToken->loc, EEsProfile, 300, nullptr, "floating-point suffix"); if (ifdepth == 0 && !parseContext.relaxedErrors()) parseContext.profileRequires(ppToken->loc, ~EEsProfile, 120, nullptr, "floating-point suffix"); if (ifdepth == 0 && !hasDecimalOrExponent) parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", ""); saveName(ch); } else ungetChar(); // Patch up the name and length for overflow if (len > MaxTokenLength) { len = MaxTokenLength; parseContext.ppError(ppToken->loc, "float literal too long", "", ""); } ppToken->name[len] = '\0'; // Compute the numerical value if (fastPath) { // compute the floating-point value of the exponent if (exponentValue == 0.0) ppToken->dval = (double)wholeNumber; else if (negativeExponent) ppToken->dval = (double)wholeNumber / exponentValue; else ppToken->dval = (double)wholeNumber * exponentValue; } else { // slow path ppToken->dval = 0.0; // remove suffix TString numstr(ppToken->name); if (numstr.back() == 'f' || numstr.back() == 'F') numstr.pop_back(); if (numstr.back() == 'h' || numstr.back() == 'H') numstr.pop_back(); if (numstr.back() == 'l' || numstr.back() == 'L') numstr.pop_back(); // use platform library strtodStream.clear(); strtodStream.str(numstr.c_str()); strtodStream >> ppToken->dval; if (strtodStream.fail()) { // Assume failure combined with a large exponent was overflow, in // an attempt to set INF. if (!negativeExponent && exponent + numWholeNumberDigits > 300) ppToken->i64val = 0x7ff0000000000000; // +Infinity // Assume failure combined with a small exponent was overflow. if (negativeExponent && exponent + numWholeNumberDigits > 300) ppToken->dval = 0.0; // Unknown reason for failure. Theory is that either // - the 0.0 is still there, or // - something reasonable was written that is better than 0.0 } } // Return the right token type if (isDouble) return PpAtomConstDouble; else if (isFloat16) return PpAtomConstFloat16; else return PpAtomConstFloat; } // Recognize a character literal. // // The first ' has already been accepted, read the rest, through the closing '. // // Always returns PpAtomConstInt. // int TPpContext::characterLiteral(TPpToken* ppToken) { ppToken->name[0] = 0; ppToken->ival = 0; if (parseContext.intermediate.getSource() != EShSourceHlsl) { // illegal, except in macro definition, for which case we report the character return '\''; } int ch = getChar(); switch (ch) { case '\'': // As empty sequence: '' parseContext.ppError(ppToken->loc, "unexpected", "\'", ""); return PpAtomConstInt; case '\\': // As escape sequence: '\XXX' switch (ch = getChar()) { case 'a': ppToken->ival = 7; break; case 'b': ppToken->ival = 8; break; case 't': ppToken->ival = 9; break; case 'n': ppToken->ival = 10; break; case 'v': ppToken->ival = 11; break; case 'f': ppToken->ival = 12; break; case 'r': ppToken->ival = 13; break; case 'x': case '0': parseContext.ppError(ppToken->loc, "octal and hex sequences not supported", "\\", ""); break; default: // This catches '\'', '\"', '\?', etc. // Also, things like '\C' mean the same thing as 'C' // (after the above cases are filtered out). ppToken->ival = ch; break; } break; default: ppToken->ival = ch; break; } ppToken->name[0] = (char)ppToken->ival; ppToken->name[1] = '\0'; ch = getChar(); if (ch != '\'') { parseContext.ppError(ppToken->loc, "expected", "\'", ""); // Look ahead for a closing ' do { ch = getChar(); } while (ch != '\'' && ch != EndOfInput && ch != '\n'); } return PpAtomConstInt; } // // Scanner used to tokenize source stream. // // N.B. Invalid numeric suffixes are not consumed.// // This is technically not correct, as the preprocessor should just // accept the numeric literal along with whatever suffix it has, but // currently, it stops on seeing a bad suffix, treating that as the // next token. This effects things like token pasting, where it is // relevant how many tokens something was broken into. // See peekContinuedPasting(). // int TPpContext::tStringInput::scan(TPpToken* ppToken) { int AlreadyComplained = 0; int len = 0; int ch = 0; int ii = 0; unsigned long long ival = 0; const auto floatingPointChar = [&](int ch) { return ch == '.' || ch == 'e' || ch == 'E' || ch == 'f' || ch == 'F' || ch == 'h' || ch == 'H'; }; static const char* const Int64_Extensions[] = { E_GL_ARB_gpu_shader_int64, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_NV_gpu_shader5, E_GL_EXT_shader_explicit_arithmetic_types_int64 }; static const int Num_Int64_Extensions = sizeof(Int64_Extensions) / sizeof(Int64_Extensions[0]); static const char* const Int16_Extensions[] = { E_GL_AMD_gpu_shader_int16, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_int16 }; static const int Num_Int16_Extensions = sizeof(Int16_Extensions) / sizeof(Int16_Extensions[0]); ppToken->clear(); ch = getch(); for (;;) { while (ch == ' ' || ch == '\t') { ppToken->space = true; ch = getch(); } ppToken->loc = pp->parseContext.getCurrentLoc(); len = 0; switch (ch) { default: // Single character token, including EndOfInput, '#' and '\' (escaped newlines are handled at a lower level, so this is just a '\' token) if (ch > PpAtomMaxSingle) ch = PpAtomBadToken; return ch; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': do { if (len < MaxTokenLength) { ppToken->name[len++] = (char)ch; ch = getch(); } else { if (! AlreadyComplained) { pp->parseContext.ppError(ppToken->loc, "name too long", "", ""); AlreadyComplained = 1; } ch = getch(); } } while ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || ch == '_'); // line continuation with no token before or after makes len == 0, and need to start over skipping white space, etc. if (len == 0) continue; ppToken->name[len] = '\0'; ungetch(); return PpAtomIdentifier; case '0': ppToken->name[len++] = (char)ch; ch = getch(); if (ch == 'x' || ch == 'X') { // must be hexadecimal bool isUnsigned = false; bool isInt64 = false; bool isInt16 = false; ppToken->name[len++] = (char)ch; ch = getch(); if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f')) { ival = 0; do { if (len < MaxTokenLength && ival <= 0x7fffffffffffffffull) { ppToken->name[len++] = (char)ch; if (ch >= '0' && ch <= '9') { ii = ch - '0'; } else if (ch >= 'A' && ch <= 'F') { ii = ch - 'A' + 10; } else if (ch >= 'a' && ch <= 'f') { ii = ch - 'a' + 10; } else pp->parseContext.ppError(ppToken->loc, "bad digit in hexadecimal literal", "", ""); ival = (ival << 4) | ii; } else { if (! AlreadyComplained) { if(len < MaxTokenLength) pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too big", "", ""); else pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too long", "", ""); AlreadyComplained = 1; } ival = 0xffffffffffffffffull; } ch = getch(); } while ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f')); } else { pp->parseContext.ppError(ppToken->loc, "bad digit in hexadecimal literal", "", ""); } if (ch == 'u' || ch == 'U') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isUnsigned = true; int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)nextCh; isInt64 = true; } else ungetch(); nextCh = getch(); if ((nextCh == 's' || nextCh == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) ppToken->name[len++] = (char)nextCh; isInt16 = true; } else ungetch(); } else if (ch == 'l' || ch == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; } else if ((ch == 's' || ch == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt16 = true; } else ungetch(); ppToken->name[len] = '\0'; if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (pp->ifdepth == 0) { pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, "64-bit hexadecimal literal"); pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, Num_Int64_Extensions, Int64_Extensions, "64-bit hexadecimal literal"); } ppToken->i64val = ival; return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64; } else if (isInt16) { if (pp->ifdepth == 0) { if (pp->parseContext.intermediate.getSource() == EShSourceGlsl) { pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, "16-bit hexadecimal literal"); pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, Num_Int16_Extensions, Int16_Extensions, "16-bit hexadecimal literal"); } } ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16; } else { if (ival > 0xffffffffu && !AlreadyComplained) pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too big", "", ""); ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint : PpAtomConstInt; } } else if ((ch == 'b' || ch == 'B') && pp->parseContext.intermediate.getSource() == EShSourceHlsl) { // must be binary bool isUnsigned = false; bool isInt64 = false; bool isInt16 = false; ppToken->name[len++] = (char)ch; ch = getch(); // Check value if ((ch == '0' || ch == '1')) { ival = 0; do { if (len < MaxTokenLength && ival <= 0x7fffffffffffffffull) { ppToken->name[len++] = (char)ch; if (ch == '0' || ch == '1') { ii = ch - '0'; } else { pp->parseContext.ppError(ppToken->loc, "bad digit in binary literal", "", ""); } ival = (ival << 1) | ii; } else { if (! AlreadyComplained) { if(len < MaxTokenLength) pp->parseContext.ppError(ppToken->loc, "binary literal too big", "", ""); else pp->parseContext.ppError(ppToken->loc, "binary literal too long", "", ""); AlreadyComplained = 1; } ival = 0xffffffffffffffffull; } ch = getch(); } while (ch == '0' || ch == '1'); } else { pp->parseContext.ppError(ppToken->loc, "bad digit in binary literal", "", ""); } // check type if (ch == 'u' || ch == 'U') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isUnsigned = true; int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)nextCh; isInt64 = true; } else ungetch(); nextCh = getch(); if ((nextCh == 's' || nextCh == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) ppToken->name[len++] = (char)nextCh; isInt16 = true; } else ungetch(); } else if (ch == 'l' || ch == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; } else if ((ch == 's' || ch == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt16 = true; } else { ungetch(); } ppToken->name[len] = '\0'; // Assign value if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (pp->ifdepth == 0) { pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, "64-bit binary literal"); pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, Num_Int64_Extensions, Int64_Extensions, "64-bit binary literal"); } ppToken->i64val = ival; return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64; } else if (isInt16) { if (pp->ifdepth == 0) { if (pp->parseContext.intermediate.getSource() == EShSourceGlsl) { pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, "16-bit binary literal"); pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, Num_Int16_Extensions, Int16_Extensions, "16-bit binary literal"); } } ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16; } else { ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint : PpAtomConstInt; } } else { // could be octal integer or floating point, speculative pursue octal until it must be floating point bool isUnsigned = false; bool isInt64 = false; bool isInt16 = false; bool octalOverflow = false; bool nonOctal = false; ival = 0; // see how much octal-like stuff we can read while (ch >= '0' && ch <= '7') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; else if (! AlreadyComplained) { pp->parseContext.ppError(ppToken->loc, "numeric literal too long", "", ""); AlreadyComplained = 1; } if (ival <= 0x1fffffffffffffffull) { ii = ch - '0'; ival = (ival << 3) | ii; } else octalOverflow = true; ch = getch(); } // could be part of a float... if (ch == '8' || ch == '9') { nonOctal = true; do { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; else if (! AlreadyComplained) { pp->parseContext.ppError(ppToken->loc, "numeric literal too long", "", ""); AlreadyComplained = 1; } ch = getch(); } while (ch >= '0' && ch <= '9'); } if (floatingPointChar(ch)) return pp->lFloatConst(len, ch, ppToken); // wasn't a float, so must be octal... if (nonOctal) pp->parseContext.ppError(ppToken->loc, "octal literal digit too large", "", ""); if (ch == 'u' || ch == 'U') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isUnsigned = true; int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)nextCh; isInt64 = true; } else ungetch(); nextCh = getch(); if ((nextCh == 's' || nextCh == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) ppToken->name[len++] = (char)nextCh; isInt16 = true; } else ungetch(); } else if (ch == 'l' || ch == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; } else if ((ch == 's' || ch == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt16 = true; } else ungetch(); ppToken->name[len] = '\0'; if (!isInt64 && ival > 0xffffffffu) octalOverflow = true; if (octalOverflow) pp->parseContext.ppError(ppToken->loc, "octal literal too big", "", ""); if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (pp->ifdepth == 0) { pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, "64-bit octal literal"); pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, Num_Int64_Extensions, Int64_Extensions, "64-bit octal literal"); } ppToken->i64val = ival; return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64; } else if (isInt16) { if (pp->ifdepth == 0) { if (pp->parseContext.intermediate.getSource() == EShSourceGlsl) { pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, "16-bit octal literal"); pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, Num_Int16_Extensions, Int16_Extensions, "16-bit octal literal"); } } ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16; } else { ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint : PpAtomConstInt; } } break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': // can't be hexadecimal or octal, is either decimal or floating point do { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; else if (! AlreadyComplained) { pp->parseContext.ppError(ppToken->loc, "numeric literal too long", "", ""); AlreadyComplained = 1; } ch = getch(); } while (ch >= '0' && ch <= '9'); if (floatingPointChar(ch)) return pp->lFloatConst(len, ch, ppToken); else { // Finish handling signed and unsigned integers int numericLen = len; bool isUnsigned = false; bool isInt64 = false; bool isInt16 = false; if (ch == 'u' || ch == 'U') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isUnsigned = true; int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)nextCh; isInt64 = true; } else ungetch(); nextCh = getch(); if ((nextCh == 's' || nextCh == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) ppToken->name[len++] = (char)nextCh; isInt16 = true; } else ungetch(); } else if (ch == 'l' || ch == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; } else if ((ch == 's' || ch == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt16 = true; } else ungetch(); ppToken->name[len] = '\0'; ival = 0; const unsigned oneTenthMaxInt = 0xFFFFFFFFu / 10; const unsigned remainderMaxInt = 0xFFFFFFFFu - 10 * oneTenthMaxInt; const unsigned long long oneTenthMaxInt64 = 0xFFFFFFFFFFFFFFFFull / 10; const unsigned long long remainderMaxInt64 = 0xFFFFFFFFFFFFFFFFull - 10 * oneTenthMaxInt64; const unsigned short oneTenthMaxInt16 = 0xFFFFu / 10; const unsigned short remainderMaxInt16 = 0xFFFFu - 10 * oneTenthMaxInt16; for (int i = 0; i < numericLen; i++) { ch = ppToken->name[i] - '0'; bool overflow = false; if (isInt64) overflow = (ival > oneTenthMaxInt64 || (ival == oneTenthMaxInt64 && (unsigned long long)ch > remainderMaxInt64)); else if (isInt16) overflow = (ival > oneTenthMaxInt16 || (ival == oneTenthMaxInt16 && (unsigned short)ch > remainderMaxInt16)); else overflow = (ival > oneTenthMaxInt || (ival == oneTenthMaxInt && (unsigned)ch > remainderMaxInt)); if (overflow) { pp->parseContext.ppError(ppToken->loc, "numeric literal too big", "", ""); ival = 0xFFFFFFFFFFFFFFFFull; break; } else ival = ival * 10 + ch; } if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (pp->ifdepth == 0) { pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, "64-bit literal"); pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, Num_Int64_Extensions, Int64_Extensions, "64-bit literal"); } ppToken->i64val = ival; return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64; } else if (isInt16) { if (pp->ifdepth == 0 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, "16-bit literal"); pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, Num_Int16_Extensions, Int16_Extensions, "16-bit literal"); } ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16; } else { ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint : PpAtomConstInt; } } break; case '-': ch = getch(); if (ch == '-') { return PpAtomDecrement; } else if (ch == '=') { return PPAtomSubAssign; } else { ungetch(); return '-'; } case '+': ch = getch(); if (ch == '+') { return PpAtomIncrement; } else if (ch == '=') { return PPAtomAddAssign; } else { ungetch(); return '+'; } case '*': ch = getch(); if (ch == '=') { return PPAtomMulAssign; } else { ungetch(); return '*'; } case '%': ch = getch(); if (ch == '=') { return PPAtomModAssign; } else { ungetch(); return '%'; } case '^': ch = getch(); if (ch == '^') { return PpAtomXor; } else { if (ch == '=') return PpAtomXorAssign; else{ ungetch(); return '^'; } } case '=': ch = getch(); if (ch == '=') { return PpAtomEQ; } else { ungetch(); return '='; } case '!': ch = getch(); if (ch == '=') { return PpAtomNE; } else { ungetch(); return '!'; } case '|': ch = getch(); if (ch == '|') { return PpAtomOr; } else if (ch == '=') { return PpAtomOrAssign; } else { ungetch(); return '|'; } case '&': ch = getch(); if (ch == '&') { return PpAtomAnd; } else if (ch == '=') { return PpAtomAndAssign; } else { ungetch(); return '&'; } case '<': ch = getch(); if (ch == '<') { ch = getch(); if (ch == '=') return PpAtomLeftAssign; else { ungetch(); return PpAtomLeft; } } else if (ch == '=') { return PpAtomLE; } else { ungetch(); return '<'; } case '>': ch = getch(); if (ch == '>') { ch = getch(); if (ch == '=') return PpAtomRightAssign; else { ungetch(); return PpAtomRight; } } else if (ch == '=') { return PpAtomGE; } else { ungetch(); return '>'; } case '.': ch = getch(); if (ch >= '0' && ch <= '9') { ungetch(); return pp->lFloatConst(0, '.', ppToken); } else { ungetch(); return '.'; } case '/': ch = getch(); if (ch == '/') { pp->inComment = true; do { ch = getch(); } while (ch != '\n' && ch != EndOfInput); ppToken->space = true; pp->inComment = false; return ch; } else if (ch == '*') { ch = getch(); do { while (ch != '*') { if (ch == EndOfInput) { pp->parseContext.ppError(ppToken->loc, "End of input in comment", "comment", ""); return ch; } ch = getch(); } ch = getch(); if (ch == EndOfInput) { pp->parseContext.ppError(ppToken->loc, "End of input in comment", "comment", ""); return ch; } } while (ch != '/'); ppToken->space = true; // loop again to get the next token... break; } else if (ch == '=') { return PPAtomDivAssign; } else { ungetch(); return '/'; } break; case '\'': return pp->characterLiteral(ppToken); case '"': // #include uses scanHeaderName() to ignore these escape sequences. ch = getch(); while (ch != '"' && ch != '\n' && ch != EndOfInput) { if (len < MaxTokenLength) { if (ch == '\\' && !pp->disableEscapeSequences) { int nextCh = getch(); switch (nextCh) { case '\'': ch = 0x27; break; case '"': ch = 0x22; break; case '?': ch = 0x3f; break; case '\\': ch = 0x5c; break; case 'a': ch = 0x07; break; case 'b': ch = 0x08; break; case 'f': ch = 0x0c; break; case 'n': ch = 0x0a; break; case 'r': ch = 0x0d; break; case 't': ch = 0x09; break; case 'v': ch = 0x0b; break; case 'x': // Hex value, arbitrary number of characters. Terminated by the first // non-hex digit { int numDigits = 0; ch = 0; while (true) { nextCh = getch(); if (nextCh >= '0' && nextCh <= '9') nextCh -= '0'; else if (nextCh >= 'A' && nextCh <= 'F') nextCh -= 'A' - 10; else if (nextCh >= 'a' && nextCh <= 'f') nextCh -= 'a' - 10; else { ungetch(); break; } numDigits++; ch = ch * 0x10 + nextCh; } if (numDigits == 0) { pp->parseContext.ppError(ppToken->loc, "Expected hex value in escape sequence", "string", ""); } break; } case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': // Octal value, up to three octal digits { int numDigits = 1; ch = nextCh - '0'; while (numDigits < 3) { nextCh = getch(); if (nextCh >= '0' && nextCh <= '7') nextCh -= '0'; else { ungetch(); break; } numDigits++; ch = ch * 8 + nextCh; } break; } default: pp->parseContext.ppError(ppToken->loc, "Invalid escape sequence", "string", ""); break; } } ppToken->name[len] = (char)ch; len++; ch = getch(); } else break; }; ppToken->name[len] = '\0'; if (ch != '"') { ungetch(); pp->parseContext.ppError(ppToken->loc, "End of line in string", "string", ""); } return PpAtomConstString; case ':': ch = getch(); if (ch == ':') return PpAtomColonColon; ungetch(); return ':'; } ch = getch(); } } // // The main functional entry point into the preprocessor, which will // scan the source strings to figure out and return the next processing token. // // Return the token, or EndOfInput when no more tokens. // int TPpContext::tokenize(TPpToken& ppToken) { for(;;) { int token = scanToken(&ppToken); // Handle token-pasting logic token = tokenPaste(token, ppToken); if (token == EndOfInput) { missingEndifCheck(); return EndOfInput; } if (token == '#') { if (previous_token == '\n') { token = readCPPline(&ppToken); if (token == EndOfInput) { missingEndifCheck(); return EndOfInput; } continue; } else { parseContext.ppError(ppToken.loc, "preprocessor directive cannot be preceded by another token", "#", ""); return EndOfInput; } } previous_token = token; if (token == '\n') continue; // expand macros if (token == PpAtomIdentifier) { switch (MacroExpand(&ppToken, false, true)) { case MacroExpandNotStarted: break; case MacroExpandError: return EndOfInput; case MacroExpandStarted: case MacroExpandUndef: continue; } } switch (token) { case PpAtomIdentifier: case PpAtomConstInt: case PpAtomConstUint: case PpAtomConstFloat: case PpAtomConstInt64: case PpAtomConstUint64: case PpAtomConstInt16: case PpAtomConstUint16: case PpAtomConstDouble: case PpAtomConstFloat16: if (ppToken.name[0] == '\0') continue; break; case PpAtomConstString: // HLSL allows string literals. // GLSL allows string literals with GL_EXT_debug_printf. if (ifdepth == 0 && parseContext.intermediate.getSource() != EShSourceHlsl) { const char* const string_literal_EXTs[] = { E_GL_EXT_debug_printf, E_GL_EXT_spirv_intrinsics }; parseContext.requireExtensions(ppToken.loc, 2, string_literal_EXTs, "string literal"); if (!parseContext.extensionTurnedOn(E_GL_EXT_debug_printf) && !parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) continue; } break; case '\'': parseContext.ppError(ppToken.loc, "character literals not supported", "\'", ""); continue; default: snprintf(ppToken.name, sizeof(ppToken.name), "%s", atomStrings.getString(token)); break; } return token; } } // // Do all token-pasting related combining of two pasted tokens when getting a // stream of tokens from a replacement list. Degenerates to no processing if a // replacement list is not the source of the token stream. // int TPpContext::tokenPaste(int token, TPpToken& ppToken) { // starting with ## is illegal, skip to next token if (token == PpAtomPaste) { parseContext.ppError(ppToken.loc, "unexpected location", "##", ""); return scanToken(&ppToken); } int resultToken = token; // "foo" pasted with "35" is an identifier, not a number // ## can be chained, process all in the chain at once while (peekPasting()) { TPpToken pastedPpToken; // next token has to be ## token = scanToken(&pastedPpToken); assert(token == PpAtomPaste); // This covers end of macro expansion if (endOfReplacementList()) { parseContext.ppError(ppToken.loc, "unexpected location; end of replacement list", "##", ""); break; } // Get the token(s) after the ##. // Because of "space" semantics, and prior tokenization, what // appeared a single token, e.g. "3A", might have been tokenized // into two tokens "3" and "A", but the "A" will have 'space' set to // false. Accumulate all of these to recreate the original lexical // appearing token. do { token = scanToken(&pastedPpToken); // This covers end of argument expansion if (token == tMarkerInput::marker) { parseContext.ppError(ppToken.loc, "unexpected location; end of argument", "##", ""); return resultToken; } // get the token text switch (resultToken) { case PpAtomIdentifier: // already have the correct text in token.names break; case '=': case '!': case '-': case '~': case '+': case '*': case '/': case '%': case '<': case '>': case '|': case '^': case '&': case PpAtomRight: case PpAtomLeft: case PpAtomAnd: case PpAtomOr: case PpAtomXor: snprintf(ppToken.name, sizeof(ppToken.name), "%s", atomStrings.getString(resultToken)); snprintf(pastedPpToken.name, sizeof(pastedPpToken.name), "%s", atomStrings.getString(token)); break; default: parseContext.ppError(ppToken.loc, "not supported for these tokens", "##", ""); return resultToken; } // combine the tokens if (strlen(ppToken.name) + strlen(pastedPpToken.name) > MaxTokenLength) { parseContext.ppError(ppToken.loc, "combined tokens are too long", "##", ""); return resultToken; } snprintf(&ppToken.name[0] + strlen(ppToken.name), sizeof(ppToken.name) - strlen(ppToken.name), "%s", pastedPpToken.name); // correct the kind of token we are making, if needed (identifiers stay identifiers) if (resultToken != PpAtomIdentifier) { int newToken = atomStrings.getAtom(ppToken.name); if (newToken > 0) resultToken = newToken; else parseContext.ppError(ppToken.loc, "combined token is invalid", "##", ""); } } while (peekContinuedPasting(resultToken)); } return resultToken; } // Checks if we've seen balanced #if...#endif void TPpContext::missingEndifCheck() { if (ifdepth > 0) parseContext.ppError(parseContext.getCurrentLoc(), "missing #endif", "", ""); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/preprocessor/PpTokens.cpp000066400000000000000000000165001506534232700254040ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ // // For recording and playing back the stream of tokens in a macro definition. // #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif #include #include #include #include #include "PpContext.h" #include "PpTokens.h" namespace glslang { // Add a token (including backing string) to the end of a macro // token stream, for later playback. void TPpContext::TokenStream::putToken(int atom, TPpToken* ppToken) { TokenStream::Token streamToken(atom, *ppToken); stream.push_back(streamToken); } // Read the next token from a macro token stream. int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken *ppToken) { if (atEnd()) return EndOfInput; int atom = stream[currentPos++].get(*ppToken); ppToken->loc = parseContext.getCurrentLoc(); // Check for ##, unless the current # is the last character if (atom == '#') { if (peekToken('#')) { parseContext.requireProfile(ppToken->loc, ~EEsProfile, "token pasting (##)"); parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, nullptr, "token pasting (##)"); currentPos++; atom = PpAtomPaste; } } return atom; } // We are pasting if // 1. we are preceding a pasting operator within this stream // or // 2. the entire macro is preceding a pasting operator (lastTokenPastes) // and we are also on the last token bool TPpContext::TokenStream::peekTokenizedPasting(bool lastTokenPastes) { // 1. preceding ##? size_t savePos = currentPos; // skip white space while (peekToken(' ')) ++currentPos; if (peekToken(PpAtomPaste)) { currentPos = savePos; return true; } // 2. last token and we've been told after this there will be a ## if (! lastTokenPastes) return false; // Getting here means the last token will be pasted, after this // Are we at the last non-whitespace token? savePos = currentPos; bool moreTokens = false; do { if (atEnd()) break; if (!peekToken(' ')) { moreTokens = true; break; } ++currentPos; } while (true); currentPos = savePos; return !moreTokens; } // See if the next non-white-space tokens are two consecutive # bool TPpContext::TokenStream::peekUntokenizedPasting() { // don't return early, have to restore this size_t savePos = currentPos; // skip white-space while (peekToken(' ')) ++currentPos; // check for ## bool pasting = false; if (peekToken('#')) { ++currentPos; if (peekToken('#')) pasting = true; } currentPos = savePos; return pasting; } void TPpContext::pushTokenStreamInput(TokenStream& ts, bool prepasting, bool expanded) { pushInput(new tTokenInput(this, &ts, prepasting, expanded)); ts.reset(); } int TPpContext::tUngotTokenInput::scan(TPpToken* ppToken) { if (done) return EndOfInput; int ret = token; *ppToken = lval; done = true; return ret; } void TPpContext::UngetToken(int token, TPpToken* ppToken) { pushInput(new tUngotTokenInput(this, token, ppToken)); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/preprocessor/PpTokens.h000066400000000000000000000132371506534232700250550ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ #ifndef PARSER_H #define PARSER_H namespace glslang { // Multi-character tokens enum EFixedAtoms { // single character tokens get their own char value as their token; start here for multi-character tokens PpAtomMaxSingle = 127, // replace bad character tokens with this, to avoid accidental aliasing with the below PpAtomBadToken, // Operators PPAtomAddAssign, PPAtomSubAssign, PPAtomMulAssign, PPAtomDivAssign, PPAtomModAssign, PpAtomRight, PpAtomLeft, PpAtomRightAssign, PpAtomLeftAssign, PpAtomAndAssign, PpAtomOrAssign, PpAtomXorAssign, PpAtomAnd, PpAtomOr, PpAtomXor, PpAtomEQ, PpAtomNE, PpAtomGE, PpAtomLE, PpAtomDecrement, PpAtomIncrement, PpAtomColonColon, PpAtomPaste, // Constants PpAtomConstInt, PpAtomConstUint, PpAtomConstInt64, PpAtomConstUint64, PpAtomConstInt16, PpAtomConstUint16, PpAtomConstFloat, PpAtomConstDouble, PpAtomConstFloat16, PpAtomConstString, // Identifiers PpAtomIdentifier, // preprocessor "keywords" PpAtomDefine, PpAtomUndef, PpAtomIf, PpAtomIfdef, PpAtomIfndef, PpAtomElse, PpAtomElif, PpAtomEndif, PpAtomLine, PpAtomPragma, PpAtomError, // #version ... PpAtomVersion, PpAtomCore, PpAtomCompatibility, PpAtomEs, // #extension PpAtomExtension, // __LINE__, __FILE__, __VERSION__ PpAtomLineMacro, PpAtomFileMacro, PpAtomVersionMacro, // #include PpAtomInclude, PpAtomLast, }; } // end namespace glslang #endif /* not PARSER_H */ glslang-16.0.0/glslang/MachineIndependent/propagateNoContraction.cpp000066400000000000000000001176711506534232700256110ustar00rootroot00000000000000// // Copyright (C) 2015-2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Visit the nodes in the glslang intermediate tree representation to // propagate the 'noContraction' qualifier. // #include "propagateNoContraction.h" #include #include #include #include #include #include "localintermediate.h" namespace { // Use a string to hold the access chain information, as in most cases the // access chain is short and may contain only one element, which is the symbol // ID. // Example: struct {float a; float b;} s; // Object s.a will be represented with: /0 // Object s.b will be represented with: /1 // Object s will be represented with: // For members of vector, matrix and arrays, they will be represented with the // same symbol ID of their container symbol objects. This is because their // preciseness is always the same as their container symbol objects. typedef std::string ObjectAccessChain; // The delimiter used in the ObjectAccessChain string to separate symbol ID and // different level of struct indices. const char ObjectAccesschainDelimiter = '/'; // Mapping from Symbol IDs of symbol nodes, to their defining operation // nodes. typedef std::unordered_multimap NodeMapping; // Mapping from object nodes to their access chain info string. typedef std::unordered_map AccessChainMapping; // Set of object IDs. typedef std::unordered_set ObjectAccesschainSet; // Set of return branch nodes. typedef std::unordered_set ReturnBranchNodeSet; // A helper function to tell whether a node is 'noContraction'. Returns true if // the node has 'noContraction' qualifier, otherwise false. bool isPreciseObjectNode(glslang::TIntermTyped* node) { return node->getType().getQualifier().isNoContraction(); } // Returns true if the opcode is a dereferencing one. bool isDereferenceOperation(glslang::TOperator op) { switch (op) { case glslang::EOpIndexDirect: case glslang::EOpIndexDirectStruct: case glslang::EOpIndexIndirect: case glslang::EOpVectorSwizzle: case glslang::EOpMatrixSwizzle: return true; default: return false; } } // Returns true if the opcode leads to an assignment operation. bool isAssignOperation(glslang::TOperator op) { switch (op) { case glslang::EOpAssign: case glslang::EOpAddAssign: case glslang::EOpSubAssign: case glslang::EOpMulAssign: case glslang::EOpVectorTimesMatrixAssign: case glslang::EOpVectorTimesScalarAssign: case glslang::EOpMatrixTimesScalarAssign: case glslang::EOpMatrixTimesMatrixAssign: case glslang::EOpDivAssign: case glslang::EOpModAssign: case glslang::EOpAndAssign: case glslang::EOpLeftShiftAssign: case glslang::EOpRightShiftAssign: case glslang::EOpInclusiveOrAssign: case glslang::EOpExclusiveOrAssign: case glslang::EOpPostIncrement: case glslang::EOpPostDecrement: case glslang::EOpPreIncrement: case glslang::EOpPreDecrement: return true; default: return false; } } // A helper function to get the unsigned int from a given constant union node. // Note the node should only hold a uint scalar. unsigned getStructIndexFromConstantUnion(glslang::TIntermTyped* node) { assert(node->getAsConstantUnion() && node->getAsConstantUnion()->isScalar()); unsigned struct_dereference_index = node->getAsConstantUnion()->getConstArray()[0].getUConst(); return struct_dereference_index; } // A helper function to generate symbol_label. ObjectAccessChain generateSymbolLabel(glslang::TIntermSymbol* node) { ObjectAccessChain symbol_id = std::to_string(node->getId()) + "(" + node->getName().c_str() + ")"; return symbol_id; } // Returns true if the operation is an arithmetic operation and valid for // the 'NoContraction' decoration. bool isArithmeticOperation(glslang::TOperator op) { switch (op) { case glslang::EOpAddAssign: case glslang::EOpSubAssign: case glslang::EOpMulAssign: case glslang::EOpVectorTimesMatrixAssign: case glslang::EOpVectorTimesScalarAssign: case glslang::EOpMatrixTimesScalarAssign: case glslang::EOpMatrixTimesMatrixAssign: case glslang::EOpDivAssign: case glslang::EOpModAssign: case glslang::EOpNegative: case glslang::EOpAdd: case glslang::EOpSub: case glslang::EOpMul: case glslang::EOpDiv: case glslang::EOpMod: case glslang::EOpVectorTimesScalar: case glslang::EOpVectorTimesMatrix: case glslang::EOpMatrixTimesVector: case glslang::EOpMatrixTimesScalar: case glslang::EOpMatrixTimesMatrix: case glslang::EOpDot: case glslang::EOpDotPackedEXT: case glslang::EOpDotAccSatEXT: case glslang::EOpDotPackedAccSatEXT: case glslang::EOpPostIncrement: case glslang::EOpPostDecrement: case glslang::EOpPreIncrement: case glslang::EOpPreDecrement: return true; default: return false; } } // A helper class to help manage the populating_initial_no_contraction_ flag. template class StateSettingGuard { public: StateSettingGuard(T* state_ptr, T new_state_value) : state_ptr_(state_ptr), previous_state_(*state_ptr) { *state_ptr = new_state_value; } StateSettingGuard(T* state_ptr) : state_ptr_(state_ptr), previous_state_(*state_ptr) {} void setState(T new_state_value) { *state_ptr_ = new_state_value; } ~StateSettingGuard() { *state_ptr_ = previous_state_; } private: T* state_ptr_; T previous_state_; }; // A helper function to get the front element from a given ObjectAccessChain ObjectAccessChain getFrontElement(const ObjectAccessChain& chain) { size_t pos_delimiter = chain.find(ObjectAccesschainDelimiter); return pos_delimiter == std::string::npos ? chain : chain.substr(0, pos_delimiter); } // A helper function to get the access chain starting from the second element. ObjectAccessChain subAccessChainFromSecondElement(const ObjectAccessChain& chain) { size_t pos_delimiter = chain.find(ObjectAccesschainDelimiter); return pos_delimiter == std::string::npos ? "" : chain.substr(pos_delimiter + 1); } // A helper function to get the access chain after removing a given prefix. ObjectAccessChain getSubAccessChainAfterPrefix(const ObjectAccessChain& chain, const ObjectAccessChain& prefix) { size_t pos = chain.find(prefix); if (pos != 0) return chain; return chain.substr(prefix.length() + sizeof(ObjectAccesschainDelimiter)); } // // A traverser which traverses the whole AST and populates: // 1) A mapping from symbol nodes' IDs to their defining operation nodes. // 2) A set of access chains of the initial precise object nodes. // class TSymbolDefinitionCollectingTraverser : public glslang::TIntermTraverser { public: TSymbolDefinitionCollectingTraverser(NodeMapping* symbol_definition_mapping, AccessChainMapping* accesschain_mapping, ObjectAccesschainSet* precise_objects, ReturnBranchNodeSet* precise_return_nodes); bool visitUnary(glslang::TVisit, glslang::TIntermUnary*) override; bool visitBinary(glslang::TVisit, glslang::TIntermBinary*) override; void visitSymbol(glslang::TIntermSymbol*) override; bool visitAggregate(glslang::TVisit, glslang::TIntermAggregate*) override; bool visitBranch(glslang::TVisit, glslang::TIntermBranch*) override; protected: TSymbolDefinitionCollectingTraverser& operator=(const TSymbolDefinitionCollectingTraverser&); // The mapping from symbol node IDs to their defining nodes. This should be // populated along traversing the AST. NodeMapping& symbol_definition_mapping_; // The set of symbol node IDs for precise symbol nodes, the ones marked as // 'noContraction'. ObjectAccesschainSet& precise_objects_; // The set of precise return nodes. ReturnBranchNodeSet& precise_return_nodes_; // A temporary cache of the symbol node whose defining node is to be found // currently along traversing the AST. ObjectAccessChain current_object_; // A map from object node to its access chain. This traverser stores // the built access chains into this map for each object node it has // visited. AccessChainMapping& accesschain_mapping_; // The pointer to the Function Definition node, so we can get the // preciseness of the return expression from it when we traverse the // return branch node. glslang::TIntermAggregate* current_function_definition_node_; }; TSymbolDefinitionCollectingTraverser::TSymbolDefinitionCollectingTraverser( NodeMapping* symbol_definition_mapping, AccessChainMapping* accesschain_mapping, ObjectAccesschainSet* precise_objects, std::unordered_set* precise_return_nodes) : TIntermTraverser(true, false, false), symbol_definition_mapping_(*symbol_definition_mapping), precise_objects_(*precise_objects), precise_return_nodes_(*precise_return_nodes), current_object_(), accesschain_mapping_(*accesschain_mapping), current_function_definition_node_(nullptr) {} // Visits a symbol node, set the current_object_ to the // current node symbol ID, and record a mapping from this node to the current // current_object_, which is the just obtained symbol // ID. void TSymbolDefinitionCollectingTraverser::visitSymbol(glslang::TIntermSymbol* node) { current_object_ = generateSymbolLabel(node); accesschain_mapping_[node] = current_object_; } // Visits an aggregate node, traverses all of its children. bool TSymbolDefinitionCollectingTraverser::visitAggregate(glslang::TVisit, glslang::TIntermAggregate* node) { // This aggregate node might be a function definition node, in which case we need to // cache this node, so we can get the preciseness information of the return value // of this function later. StateSettingGuard current_function_definition_node_setting_guard( ¤t_function_definition_node_); if (node->getOp() == glslang::EOpFunction) { // This is function definition node, we need to cache this node so that we can // get the preciseness of the return value later. current_function_definition_node_setting_guard.setState(node); } // Traverse the items in the sequence. glslang::TIntermSequence& seq = node->getSequence(); for (int i = 0; i < (int)seq.size(); ++i) { current_object_.clear(); seq[i]->traverse(this); } return false; } bool TSymbolDefinitionCollectingTraverser::visitBranch(glslang::TVisit, glslang::TIntermBranch* node) { if (node->getFlowOp() == glslang::EOpReturn && node->getExpression() && current_function_definition_node_ && current_function_definition_node_->getType().getQualifier().noContraction) { // This node is a return node with an expression, and its function has a // precise return value. We need to find the involved objects in its // expression and add them to the set of initial precise objects. precise_return_nodes_.insert(node); node->getExpression()->traverse(this); } return false; } // Visits a unary node. This might be an implicit assignment like i++, i--. etc. bool TSymbolDefinitionCollectingTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node) { current_object_.clear(); node->getOperand()->traverse(this); if (isAssignOperation(node->getOp())) { // We should always be able to get an access chain of the operand node. assert(!current_object_.empty()); // If the operand node object is 'precise', we collect its access chain // for the initial set of 'precise' objects. if (isPreciseObjectNode(node->getOperand())) { // The operand node is an 'precise' object node, add its // access chain to the set of 'precise' objects. This is to collect // the initial set of 'precise' objects. precise_objects_.insert(current_object_); } // Gets the symbol ID from the object's access chain. ObjectAccessChain id_symbol = getFrontElement(current_object_); // Add a mapping from the symbol ID to this assignment operation node. symbol_definition_mapping_.insert(std::make_pair(id_symbol, node)); } // A unary node is not a dereference node, so we clear the access chain which // is under construction. current_object_.clear(); return false; } // Visits a binary node and updates the mapping from symbol IDs to the definition // nodes. Also collects the access chains for the initial precise objects. bool TSymbolDefinitionCollectingTraverser::visitBinary(glslang::TVisit /* visit */, glslang::TIntermBinary* node) { // Traverses the left node to build the access chain info for the object. current_object_.clear(); node->getLeft()->traverse(this); if (isAssignOperation(node->getOp())) { // We should always be able to get an access chain for the left node. assert(!current_object_.empty()); // If the left node object is 'precise', it is an initial precise object // specified in the shader source. Adds it to the initial work list to // process later. if (isPreciseObjectNode(node->getLeft())) { // The left node is an 'precise' object node, add its access chain to // the set of 'precise' objects. This is to collect the initial set // of 'precise' objects. precise_objects_.insert(current_object_); } // Gets the symbol ID from the object access chain, which should be the // first element recorded in the access chain. ObjectAccessChain id_symbol = getFrontElement(current_object_); // Adds a mapping from the symbol ID to this assignment operation node. symbol_definition_mapping_.insert(std::make_pair(id_symbol, node)); // Traverses the right node, there may be other 'assignment' // operations in the right. current_object_.clear(); node->getRight()->traverse(this); } else if (isDereferenceOperation(node->getOp())) { // The left node (parent node) is a struct type object. We need to // record the access chain information of the current node into its // object id. if (node->getOp() == glslang::EOpIndexDirectStruct) { unsigned struct_dereference_index = getStructIndexFromConstantUnion(node->getRight()); current_object_.push_back(ObjectAccesschainDelimiter); current_object_.append(std::to_string(struct_dereference_index)); } accesschain_mapping_[node] = current_object_; // For a dereference node, there is no need to traverse the right child // node as the right node should always be an integer type object. } else { // For other binary nodes, still traverse the right node. current_object_.clear(); node->getRight()->traverse(this); } return false; } // Traverses the AST and returns a tuple of four members: // 1) a mapping from symbol IDs to the definition nodes (aka. assignment nodes) of these symbols. // 2) a mapping from object nodes in the AST to the access chains of these objects. // 3) a set of access chains of precise objects. // 4) a set of return nodes with precise expressions. std::tuple getSymbolToDefinitionMappingAndPreciseSymbolIDs(const glslang::TIntermediate& intermediate) { auto result_tuple = std::make_tuple(NodeMapping(), AccessChainMapping(), ObjectAccesschainSet(), ReturnBranchNodeSet()); TIntermNode* root = intermediate.getTreeRoot(); if (root == nullptr) return result_tuple; NodeMapping& symbol_definition_mapping = std::get<0>(result_tuple); AccessChainMapping& accesschain_mapping = std::get<1>(result_tuple); ObjectAccesschainSet& precise_objects = std::get<2>(result_tuple); ReturnBranchNodeSet& precise_return_nodes = std::get<3>(result_tuple); // Traverses the AST and populate the results. TSymbolDefinitionCollectingTraverser collector(&symbol_definition_mapping, &accesschain_mapping, &precise_objects, &precise_return_nodes); root->traverse(&collector); return result_tuple; } // // A traverser that determine whether the left node (or operand node for unary // node) of an assignment node is 'precise', containing 'precise' or not, // according to the access chain a given precise object which share the same // symbol as the left node. // // Post-orderly traverses the left node subtree of an binary assignment node and: // // 1) Propagates the 'precise' from the left object nodes to this object node. // // 2) Builds object access chain along the traversal, and also compares with // the access chain of the given 'precise' object along with the traversal to // tell if the node to be defined is 'precise' or not. // class TNoContractionAssigneeCheckingTraverser : public glslang::TIntermTraverser { enum DecisionStatus { // The object node to be assigned to may contain 'precise' objects and also not 'precise' objects. Mixed = 0, // The object node to be assigned to is either a 'precise' object or a struct objects whose members are all 'precise'. Precise = 1, // The object node to be assigned to is not a 'precise' object. NotPreicse = 2, }; public: TNoContractionAssigneeCheckingTraverser(const AccessChainMapping& accesschain_mapping) : TIntermTraverser(true, false, false), accesschain_mapping_(accesschain_mapping), precise_object_(nullptr) {} // Checks the preciseness of a given assignment node with a precise object // represented as access chain. The precise object shares the same symbol // with the assignee of the given assignment node. Return a tuple of two: // // 1) The preciseness of the assignee node of this assignment node. True // if the assignee contains 'precise' objects or is 'precise', false if // the assignee is not 'precise' according to the access chain of the given // precise object. // // 2) The incremental access chain from the assignee node to its nested // 'precise' object, according to the access chain of the given precise // object. This incremental access chain can be empty, which means the // assignee is 'precise'. Otherwise it shows the path to the nested // precise object. std::tuple getPrecisenessAndRemainedAccessChain(glslang::TIntermOperator* node, const ObjectAccessChain& precise_object) { assert(isAssignOperation(node->getOp())); precise_object_ = &precise_object; ObjectAccessChain assignee_object; if (glslang::TIntermBinary* BN = node->getAsBinaryNode()) { // This is a binary assignment node, we need to check the // preciseness of the left node. assert(accesschain_mapping_.count(BN->getLeft())); // The left node (assignee node) is an object node, traverse the // node to let the 'precise' of nesting objects being transfered to // nested objects. BN->getLeft()->traverse(this); // After traversing the left node, if the left node is 'precise', // we can conclude this assignment should propagate 'precise'. if (isPreciseObjectNode(BN->getLeft())) { return make_tuple(true, ObjectAccessChain()); } // If the preciseness of the left node (assignee node) can not // be determined by now, we need to compare the access chain string // of the assignee object with the given precise object. assignee_object = accesschain_mapping_.at(BN->getLeft()); } else if (glslang::TIntermUnary* UN = node->getAsUnaryNode()) { // This is a unary assignment node, we need to check the // preciseness of the operand node. For unary assignment node, the // operand node should always be an object node. assert(accesschain_mapping_.count(UN->getOperand())); // Traverse the operand node to let the 'precise' being propagated // from lower nodes to upper nodes. UN->getOperand()->traverse(this); // After traversing the operand node, if the operand node is // 'precise', this assignment should propagate 'precise'. if (isPreciseObjectNode(UN->getOperand())) { return make_tuple(true, ObjectAccessChain()); } // If the preciseness of the operand node (assignee node) can not // be determined by now, we need to compare the access chain string // of the assignee object with the given precise object. assignee_object = accesschain_mapping_.at(UN->getOperand()); } else { // Not a binary or unary node, should not happen. assert(false); } // Compare the access chain string of the assignee node with the given // precise object to determine if this assignment should propagate // 'precise'. if (assignee_object.find(precise_object) == 0) { // The access chain string of the given precise object is a prefix // of assignee's access chain string. The assignee should be // 'precise'. return make_tuple(true, ObjectAccessChain()); } else if (precise_object.find(assignee_object) == 0) { // The assignee's access chain string is a prefix of the given // precise object, the assignee object contains 'precise' object, // and we need to pass the remained access chain to the object nodes // in the right. return make_tuple(true, getSubAccessChainAfterPrefix(precise_object, assignee_object)); } else { // The access chain strings do not match, the assignee object can // not be labeled as 'precise' according to the given precise // object. return make_tuple(false, ObjectAccessChain()); } } protected: TNoContractionAssigneeCheckingTraverser& operator=(const TNoContractionAssigneeCheckingTraverser&); bool visitBinary(glslang::TVisit, glslang::TIntermBinary* node) override; void visitSymbol(glslang::TIntermSymbol* node) override; // A map from object nodes to their access chain string (used as object ID). const AccessChainMapping& accesschain_mapping_; // A given precise object, represented in it access chain string. This // precise object is used to be compared with the assignee node to tell if // the assignee node is 'precise', contains 'precise' object or not // 'precise'. const ObjectAccessChain* precise_object_; }; // Visits a binary node. If the node is an object node, it must be a dereference // node. In such cases, if the left node is 'precise', this node should also be // 'precise'. bool TNoContractionAssigneeCheckingTraverser::visitBinary(glslang::TVisit, glslang::TIntermBinary* node) { // Traverses the left so that we transfer the 'precise' from nesting object // to its nested object. node->getLeft()->traverse(this); // If this binary node is an object node, we should have it in the // accesschain_mapping_. if (accesschain_mapping_.count(node)) { // A binary object node must be a dereference node. assert(isDereferenceOperation(node->getOp())); // If the left node is 'precise', this node should also be precise, // otherwise, compare with the given precise_object_. If the // access chain of this node matches with the given precise_object_, // this node should be marked as 'precise'. if (isPreciseObjectNode(node->getLeft())) { node->getWritableType().getQualifier().noContraction = true; } else if (accesschain_mapping_.at(node) == *precise_object_) { node->getWritableType().getQualifier().noContraction = true; } } return false; } // Visits a symbol node, if the symbol node ID (its access chain string) matches // with the given precise object, this node should be 'precise'. void TNoContractionAssigneeCheckingTraverser::visitSymbol(glslang::TIntermSymbol* node) { // A symbol node should always be an object node, and should have been added // to the map from object nodes to their access chain strings. assert(accesschain_mapping_.count(node)); if (accesschain_mapping_.at(node) == *precise_object_) { node->getWritableType().getQualifier().noContraction = true; } } // // A traverser that only traverses the right side of binary assignment nodes // and the operand node of unary assignment nodes. // // 1) Marks arithmetic operations as 'NoContraction'. // // 2) Find the object which should be marked as 'precise' in the right and // update the 'precise' object work list. // class TNoContractionPropagator : public glslang::TIntermTraverser { public: TNoContractionPropagator(ObjectAccesschainSet* precise_objects, const AccessChainMapping& accesschain_mapping) : TIntermTraverser(true, false, false), precise_objects_(*precise_objects), added_precise_object_ids_(), remained_accesschain_(), accesschain_mapping_(accesschain_mapping) {} // Propagates 'precise' in the right nodes of a given assignment node with // access chain record from the assignee node to a 'precise' object it // contains. void propagateNoContractionInOneExpression(glslang::TIntermTyped* defining_node, const ObjectAccessChain& assignee_remained_accesschain) { remained_accesschain_ = assignee_remained_accesschain; if (glslang::TIntermBinary* BN = defining_node->getAsBinaryNode()) { assert(isAssignOperation(BN->getOp())); BN->getRight()->traverse(this); if (isArithmeticOperation(BN->getOp())) { BN->getWritableType().getQualifier().noContraction = true; } } else if (glslang::TIntermUnary* UN = defining_node->getAsUnaryNode()) { assert(isAssignOperation(UN->getOp())); UN->getOperand()->traverse(this); if (isArithmeticOperation(UN->getOp())) { UN->getWritableType().getQualifier().noContraction = true; } } } // Propagates 'precise' in a given precise return node. void propagateNoContractionInReturnNode(glslang::TIntermBranch* return_node) { remained_accesschain_ = ""; assert(return_node->getFlowOp() == glslang::EOpReturn && return_node->getExpression()); return_node->getExpression()->traverse(this); } protected: TNoContractionPropagator& operator=(const TNoContractionPropagator&); // Visits an aggregate node. The node can be a initializer list, in which // case we need to find the 'precise' or 'precise' containing object node // with the access chain record. In other cases, just need to traverse all // the children nodes. bool visitAggregate(glslang::TVisit, glslang::TIntermAggregate* node) override { if (!remained_accesschain_.empty() && node->getOp() == glslang::EOpConstructStruct) { // This is a struct initializer node, and the remained // access chain is not empty, we need to refer to the // assignee_remained_access_chain_ to find the nested // 'precise' object. And we don't need to visit other nodes in this // aggregate node. // Gets the struct dereference index that leads to 'precise' object. ObjectAccessChain precise_accesschain_index_str = getFrontElement(remained_accesschain_); unsigned precise_accesschain_index = (unsigned)strtoul(precise_accesschain_index_str.c_str(), nullptr, 10); // Gets the node pointed by the access chain index extracted before. glslang::TIntermTyped* potential_precise_node = node->getSequence()[precise_accesschain_index]->getAsTyped(); assert(potential_precise_node); // Pop the front access chain index from the path, and visit the nested node. { ObjectAccessChain next_level_accesschain = subAccessChainFromSecondElement(remained_accesschain_); StateSettingGuard setup_remained_accesschain_for_next_level( &remained_accesschain_, next_level_accesschain); potential_precise_node->traverse(this); } return false; } return true; } // Visits a binary node. A binary node can be an object node, e.g. a dereference node. // As only the top object nodes in the right side of an assignment needs to be visited // and added to 'precise' work list, this traverser won't visit the children nodes of // an object node. If the binary node does not represent an object node, it should // go on to traverse its children nodes and if it is an arithmetic operation node, this // operation should be marked as 'noContraction'. bool visitBinary(glslang::TVisit, glslang::TIntermBinary* node) override { if (isDereferenceOperation(node->getOp())) { // This binary node is an object node. Need to update the precise // object set with the access chain of this node + remained // access chain . ObjectAccessChain new_precise_accesschain = accesschain_mapping_.at(node); if (remained_accesschain_.empty()) { node->getWritableType().getQualifier().noContraction = true; } else { new_precise_accesschain += ObjectAccesschainDelimiter + remained_accesschain_; } // Cache the access chain as added precise object, so we won't add the // same object to the work list again. if (!added_precise_object_ids_.count(new_precise_accesschain)) { precise_objects_.insert(new_precise_accesschain); added_precise_object_ids_.insert(new_precise_accesschain); } // Only the upper-most object nodes should be visited, so do not // visit children of this object node. return false; } // If this is an arithmetic operation, marks this node as 'noContraction'. if (isArithmeticOperation(node->getOp()) && node->getBasicType() != glslang::EbtInt) { node->getWritableType().getQualifier().noContraction = true; } // As this node is not an object node, need to traverse the children nodes. return true; } // Visits a unary node. A unary node can not be an object node. If the operation // is an arithmetic operation, need to mark this node as 'noContraction'. bool visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node) override { // If this is an arithmetic operation, marks this with 'noContraction' if (isArithmeticOperation(node->getOp())) { node->getWritableType().getQualifier().noContraction = true; } return true; } // Visits a symbol node. A symbol node is always an object node. So we // should always be able to find its in our collected mapping from object // nodes to access chains. As an object node, a symbol node can be either // 'precise' or containing 'precise' objects according to unused // access chain information we have when we visit this node. void visitSymbol(glslang::TIntermSymbol* node) override { // Symbol nodes are object nodes and should always have an // access chain collected before matches with it. assert(accesschain_mapping_.count(node)); ObjectAccessChain new_precise_accesschain = accesschain_mapping_.at(node); // If the unused access chain is empty, this symbol node should be // marked as 'precise'. Otherwise, the unused access chain should be // appended to the symbol ID to build a new access chain which points to // the nested 'precise' object in this symbol object. if (remained_accesschain_.empty()) { node->getWritableType().getQualifier().noContraction = true; } else { new_precise_accesschain += ObjectAccesschainDelimiter + remained_accesschain_; } // Add the new 'precise' access chain to the work list and make sure we // don't visit it again. if (!added_precise_object_ids_.count(new_precise_accesschain)) { precise_objects_.insert(new_precise_accesschain); added_precise_object_ids_.insert(new_precise_accesschain); } } // A set of precise objects, represented as access chains. ObjectAccesschainSet& precise_objects_; // Visited symbol nodes, should not revisit these nodes. ObjectAccesschainSet added_precise_object_ids_; // The left node of an assignment operation might be an parent of 'precise' objects. // This means the left node might not be an 'precise' object node, but it may contains // 'precise' qualifier which should be propagated to the corresponding child node in // the right. So we need the path from the left node to its nested 'precise' node to // tell us how to find the corresponding 'precise' node in the right. ObjectAccessChain remained_accesschain_; // A map from node pointers to their access chains. const AccessChainMapping& accesschain_mapping_; }; } namespace glslang { void PropagateNoContraction(const glslang::TIntermediate& intermediate) { // First, traverses the AST, records symbols with their defining operations // and collects the initial set of precise symbols (symbol nodes that marked // as 'noContraction') and precise return nodes. auto mappings_and_precise_objects = getSymbolToDefinitionMappingAndPreciseSymbolIDs(intermediate); // The mapping of symbol node IDs to their defining nodes. This enables us // to get the defining node directly from a given symbol ID without // traversing the tree again. NodeMapping& symbol_definition_mapping = std::get<0>(mappings_and_precise_objects); // The mapping of object nodes to their access chains recorded. AccessChainMapping& accesschain_mapping = std::get<1>(mappings_and_precise_objects); // The initial set of 'precise' objects which are represented as the // access chain toward them. ObjectAccesschainSet& precise_object_accesschains = std::get<2>(mappings_and_precise_objects); // The set of 'precise' return nodes. ReturnBranchNodeSet& precise_return_nodes = std::get<3>(mappings_and_precise_objects); // Second, uses the initial set of precise objects as a work list, pops an // access chain, extract the symbol ID from it. Then: // 1) Check the assignee object, see if it is 'precise' object node or // contains 'precise' object. Obtain the incremental access chain from the // assignee node to its nested 'precise' node (if any). // 2) If the assignee object node is 'precise' or it contains 'precise' // objects, traverses the right side of the assignment operation // expression to mark arithmetic operations as 'noContration' and update // 'precise' access chain work list with new found object nodes. // Repeat above steps until the work list is empty. TNoContractionAssigneeCheckingTraverser checker(accesschain_mapping); TNoContractionPropagator propagator(&precise_object_accesschains, accesschain_mapping); // We have two initial precise work lists to handle: // 1) precise return nodes // 2) precise object access chains // We should process the precise return nodes first and the involved // objects in the return expression should be added to the precise object // access chain set. while (!precise_return_nodes.empty()) { glslang::TIntermBranch* precise_return_node = *precise_return_nodes.begin(); propagator.propagateNoContractionInReturnNode(precise_return_node); precise_return_nodes.erase(precise_return_node); } while (!precise_object_accesschains.empty()) { // Get the access chain of a precise object from the work list. ObjectAccessChain precise_object_accesschain = *precise_object_accesschains.begin(); // Get the symbol id from the access chain. ObjectAccessChain symbol_id = getFrontElement(precise_object_accesschain); // Get all the defining nodes of that symbol ID. std::pair range = symbol_definition_mapping.equal_range(symbol_id); // Visits all the assignment nodes of that symbol ID and // 1) Check if the assignee node is 'precise' or contains 'precise' // objects. // 2) Propagate the 'precise' to the top layer object nodes // in the right side of the assignment operation, update the 'precise' // work list with new access chains representing the new 'precise' // objects, and mark arithmetic operations as 'noContraction'. for (NodeMapping::iterator defining_node_iter = range.first; defining_node_iter != range.second; defining_node_iter++) { TIntermOperator* defining_node = defining_node_iter->second; // Check the assignee node. auto checker_result = checker.getPrecisenessAndRemainedAccessChain( defining_node, precise_object_accesschain); bool& contain_precise = std::get<0>(checker_result); ObjectAccessChain& remained_accesschain = std::get<1>(checker_result); // If the assignee node is 'precise' or contains 'precise', propagate the // 'precise' to the right. Otherwise just skip this assignment node. if (contain_precise) { propagator.propagateNoContractionInOneExpression(defining_node, remained_accesschain); } } // Remove the last processed 'precise' object from the work list. precise_object_accesschains.erase(precise_object_accesschain); } } } glslang-16.0.0/glslang/MachineIndependent/propagateNoContraction.h000066400000000000000000000046121506534232700252440ustar00rootroot00000000000000// // Copyright (C) 2015-2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Visit the nodes in the glslang intermediate tree representation to // propagate 'noContraction' qualifier. // #pragma once #include "../Include/intermediate.h" namespace glslang { // Propagates the 'precise' qualifier for objects (objects marked with // 'noContraction' qualifier) from the shader source specified 'precise' // variables to all the involved objects, and add 'noContraction' qualifier for // the involved arithmetic operations. // Note that the same qualifier: 'noContraction' is used in both object nodes // and arithmetic operation nodes, but has different meaning. For object nodes, // 'noContraction' means the object is 'precise'; and for arithmetic operation // nodes, it means the operation should not be contracted. void PropagateNoContraction(const glslang::TIntermediate& intermediate); } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/reflection.cpp000066400000000000000000001566301506534232700232560ustar00rootroot00000000000000// // Copyright (C) 2013-2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "../Include/Common.h" #include "reflection.h" #include "LiveTraverser.h" #include "localintermediate.h" #include "gl_types.h" // // Grow the reflection database through a friend traverser class of TReflection and a // collection of functions to do a liveness traversal that note what uniforms are used // in semantically non-dead code. // // Can be used multiple times, once per stage, to grow a program reflection. // // High-level algorithm for one stage: // // 1. Put the entry point on the list of live functions. // // 2. Traverse any live function, while skipping if-tests with a compile-time constant // condition of false, and while adding any encountered function calls to the live // function list. // // Repeat until the live function list is empty. // // 3. Add any encountered uniform variables and blocks to the reflection database. // // Can be attempted with a failed link, but will return false if recursion had been detected, or // there wasn't exactly one entry point. // namespace glslang { // // The traverser: mostly pass through, except // - processing binary nodes to see if they are dereferences of an aggregates to track // - processing symbol nodes to see if they are non-aggregate objects to track // // This ignores semantically dead code by using TLiveTraverser. // // This is in the glslang namespace directly so it can be a friend of TReflection. // class TReflectionTraverser : public TIntermTraverser { public: TReflectionTraverser(const TIntermediate& i, TReflection& r) : TIntermTraverser(), intermediate(i), reflection(r), updateStageMasks(true) { } virtual bool visitBinary(TVisit, TIntermBinary* node); virtual void visitSymbol(TIntermSymbol* base); // Add a simple reference to a uniform variable to the uniform database, no dereference involved. // However, no dereference doesn't mean simple... it could be a complex aggregate. void addUniform(const TIntermSymbol& base) { if (processedDerefs.find(&base) == processedDerefs.end()) { processedDerefs.insert(&base); int blockIndex = -1; int offset = -1; TList derefs; TString baseName = base.getName(); if (base.getType().getBasicType() == EbtBlock) { offset = 0; bool anonymous = IsAnonymous(baseName); const TString& blockName = base.getType().getTypeName(); if (!anonymous) baseName = blockName; else baseName = ""; blockIndex = addBlockName(blockName, base.getType(), intermediate.getBlockSize(base.getType())); } // Use a degenerate (empty) set of dereferences to immediately put as at the end of // the dereference change expected by blowUpActiveAggregate. blowUpActiveAggregate(base.getType(), baseName, derefs, derefs.end(), offset, blockIndex, 0, -1, 0, base.getQualifier().storage, updateStageMasks); } } void addPipeIOVariable(const TIntermSymbol& base) { if (processedDerefs.find(&base) == processedDerefs.end()) { processedDerefs.insert(&base); const TString &name = base.getName(); const TType &type = base.getType(); const bool input = base.getQualifier().isPipeInput(); TReflection::TMapIndexToReflection &ioItems = input ? reflection.indexToPipeInput : reflection.indexToPipeOutput; TReflection::TNameToIndex &ioMapper = input ? reflection.pipeInNameToIndex : reflection.pipeOutNameToIndex; if (reflection.options & EShReflectionUnwrapIOBlocks) { bool anonymous = IsAnonymous(name); TString baseName; if (type.getBasicType() == EbtBlock) { baseName = anonymous ? TString() : type.getTypeName(); } else { baseName = anonymous ? TString() : name; } // by convention if this is an arrayed block we ignore the array in the reflection if (type.isArray() && type.getBasicType() == EbtBlock) { blowUpIOAggregate(input, baseName, TType(type, 0)); } else { blowUpIOAggregate(input, baseName, type); } } else { TReflection::TNameToIndex::const_iterator it = ioMapper.find(name.c_str()); if (it == ioMapper.end()) { // seperate pipe i/o params from uniforms and blocks // in is only for input in first stage as out is only for last stage. check traverse in call stack. ioMapper[name.c_str()] = static_cast(ioItems.size()); ioItems.push_back( TObjectReflection(name.c_str(), type, 0, mapToGlType(type), mapToGlArraySize(type), 0)); EShLanguageMask& stages = ioItems.back().stages; stages = static_cast(stages | 1 << intermediate.getStage()); } else { EShLanguageMask& stages = ioItems[it->second].stages; stages = static_cast(stages | 1 << intermediate.getStage()); } } } } // Lookup or calculate the offset of all block members at once, using the recursively // defined block offset rules. void getOffsets(const TType& type, TVector& offsets) { const TTypeList& memberList = *type.getStruct(); int memberSize = 0; int offset = 0; for (size_t m = 0; m < offsets.size(); ++m) { // if the user supplied an offset, snap to it now if (memberList[m].type->getQualifier().hasOffset()) offset = memberList[m].type->getQualifier().layoutOffset; // calculate the offset of the next member and align the current offset to this member intermediate.updateOffset(type, *memberList[m].type, offset, memberSize); // save the offset of this member offsets[m] = offset; // update for the next member offset += memberSize; } } // Calculate the stride of an array type int getArrayStride(const TType& baseType, const TType& type) { int dummySize; int stride; // consider blocks to have 0 stride, so that all offsets are relative to the start of their block if (type.getBasicType() == EbtBlock) return 0; TLayoutMatrix subMatrixLayout = type.getQualifier().layoutMatrix; intermediate.getMemberAlignment(type, dummySize, stride, baseType.getQualifier().layoutPacking, subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor : baseType.getQualifier().layoutMatrix == ElmRowMajor); return stride; } // count the total number of leaf members from iterating out of a block type int countAggregateMembers(const TType& parentType) { if (! parentType.isStruct()) return 1; const bool strictArraySuffix = (reflection.options & EShReflectionStrictArraySuffix); bool blockParent = (parentType.getBasicType() == EbtBlock && parentType.getQualifier().storage == EvqBuffer); const TTypeList &memberList = *parentType.getStruct(); int ret = 0; for (size_t i = 0; i < memberList.size(); i++) { const TType &memberType = *memberList[i].type; int numMembers = countAggregateMembers(memberType); // for sized arrays of structs, apply logic to expand out the same as we would below in // blowUpActiveAggregate if (memberType.isArray() && ! memberType.getArraySizes()->hasUnsized() && memberType.isStruct()) { if (! strictArraySuffix || ! blockParent) numMembers *= memberType.getArraySizes()->getCumulativeSize(); } ret += numMembers; } return ret; } // Traverse the provided deref chain, including the base, and // - build a full reflection-granularity name, array size, etc. entry out of it, if it goes down to that granularity // - recursively expand any variable array index in the middle of that traversal // - recursively expand what's left at the end if the deref chain did not reach down to reflection granularity // // arraySize tracks, just for the final dereference in the chain, if there was a specific known size. // A value of 0 for arraySize will mean to use the full array's size. void blowUpActiveAggregate(const TType& baseType, const TString& baseName, const TList& derefs, TList::const_iterator deref, int offset, int blockIndex, int arraySize, int topLevelArraySize, int topLevelArrayStride, TStorageQualifier baseStorage, bool active) { // when strictArraySuffix is enabled, we closely follow the rules from ARB_program_interface_query. // Broadly: // * arrays-of-structs always have a [x] suffix. // * with array-of-struct variables in the root of a buffer block, only ever return [0]. // * otherwise, array suffixes are added whenever we iterate, even if that means expanding out an array. const bool strictArraySuffix = (reflection.options & EShReflectionStrictArraySuffix); // is this variable inside a buffer block. This flag is set back to false after we iterate inside the first array element. bool blockParent = (baseType.getBasicType() == EbtBlock && baseType.getQualifier().storage == EvqBuffer); // process the part of the dereference chain that was explicit in the shader TString name = baseName; const TType* terminalType = &baseType; for (; deref != derefs.end(); ++deref) { TIntermBinary* visitNode = *deref; terminalType = &visitNode->getType(); int index; switch (visitNode->getOp()) { case EOpIndexIndirect: { int stride = getArrayStride(baseType, visitNode->getLeft()->getType()); if (topLevelArrayStride == 0) topLevelArrayStride = stride; // Visit all the indices of this array, and for each one add on the remaining dereferencing for (int i = 0; i < std::max(visitNode->getLeft()->getType().getOuterArraySize(), 1); ++i) { TString newBaseName = name; if (terminalType->getBasicType() == EbtBlock) {} else if (strictArraySuffix && blockParent) newBaseName.append(TString("[0]")); else if (strictArraySuffix || baseType.getBasicType() != EbtBlock) newBaseName.append(TString("[") + String(i) + "]"); TList::const_iterator nextDeref = deref; ++nextDeref; blowUpActiveAggregate(*terminalType, newBaseName, derefs, nextDeref, offset, blockIndex, arraySize, topLevelArraySize, topLevelArrayStride, baseStorage, active); if (offset >= 0) offset += stride; } // it was all completed in the recursive calls above return; } case EOpIndexDirect: { int stride = getArrayStride(baseType, visitNode->getLeft()->getType()); index = visitNode->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); if (terminalType->getBasicType() == EbtBlock) {} else if (strictArraySuffix && blockParent) name.append(TString("[0]")); else if (strictArraySuffix || baseType.getBasicType() != EbtBlock) { name.append(TString("[") + String(index) + "]"); if (offset >= 0) offset += stride * index; } if (topLevelArrayStride == 0) topLevelArrayStride = stride; // expand top-level arrays in blocks with [0] suffix if (topLevelArrayStride != 0 && visitNode->getLeft()->getType().isArray()) { blockParent = false; } break; } case EOpIndexDirectStruct: index = visitNode->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); if (offset >= 0) offset += intermediate.getOffset(visitNode->getLeft()->getType(), index); if (name.size() > 0) name.append("."); name.append((*visitNode->getLeft()->getType().getStruct())[index].type->getFieldName()); // expand non top-level arrays with [x] suffix if (visitNode->getLeft()->getType().getBasicType() != EbtBlock && terminalType->isArray()) { blockParent = false; } break; default: break; } } // if the terminalType is still too coarse a granularity, this is still an aggregate to expand, expand it... if (! isReflectionGranularity(*terminalType)) { // the base offset of this node, that children are relative to int baseOffset = offset; if (terminalType->isArray()) { // Visit all the indices of this array, and for each one, // fully explode the remaining aggregate to dereference int stride = 0; if (offset >= 0) stride = getArrayStride(baseType, *terminalType); int arrayIterateSize = std::max(terminalType->getOuterArraySize(), 1); // for top-level arrays in blocks, only expand [0] to avoid explosion of items if ((strictArraySuffix && blockParent) || ((topLevelArraySize == arrayIterateSize) && (topLevelArrayStride == 0))) { arrayIterateSize = 1; } if (topLevelArrayStride == 0) topLevelArrayStride = stride; for (int i = 0; i < arrayIterateSize; ++i) { TString newBaseName = name; if (terminalType->getBasicType() != EbtBlock) newBaseName.append(TString("[") + String(i) + "]"); TType derefType(*terminalType, 0); if (offset >= 0) offset = baseOffset + stride * i; blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), offset, blockIndex, 0, topLevelArraySize, topLevelArrayStride, baseStorage, active); } } else { // Visit all members of this aggregate, and for each one, // fully explode the remaining aggregate to dereference const TTypeList& typeList = *terminalType->getStruct(); TVector memberOffsets; if (baseOffset >= 0) { memberOffsets.resize(typeList.size()); getOffsets(*terminalType, memberOffsets); } for (int i = 0; i < (int)typeList.size(); ++i) { TString newBaseName = name; if (newBaseName.size() > 0) newBaseName.append("."); newBaseName.append(typeList[i].type->getFieldName()); TType derefType(*terminalType, i); if (offset >= 0) offset = baseOffset + memberOffsets[i]; int arrayStride = topLevelArrayStride; if (terminalType->getBasicType() == EbtBlock && terminalType->getQualifier().storage == EvqBuffer && derefType.isArray()) { arrayStride = getArrayStride(baseType, derefType); } if (topLevelArraySize == -1 && arrayStride == 0 && blockParent) topLevelArraySize = 1; if (strictArraySuffix && blockParent) { // if this member is an array, store the top-level array stride but start the explosion from // the inner struct type. if (derefType.isArray() && derefType.isStruct()) { newBaseName.append("[0]"); auto dimSize = derefType.isUnsizedArray() ? 0 : derefType.getArraySizes()->getDimSize(0); blowUpActiveAggregate(TType(derefType, 0), newBaseName, derefs, derefs.end(), memberOffsets[i], blockIndex, 0, dimSize, arrayStride, terminalType->getQualifier().storage, false); } else if (derefType.isArray()) { auto dimSize = derefType.isUnsizedArray() ? 0 : derefType.getArraySizes()->getDimSize(0); blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), memberOffsets[i], blockIndex, 0, dimSize, 0, terminalType->getQualifier().storage, false); } else { blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), memberOffsets[i], blockIndex, 0, 1, 0, terminalType->getQualifier().storage, false); } } else { blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), offset, blockIndex, 0, topLevelArraySize, arrayStride, baseStorage, active); } } } // it was all completed in the recursive calls above return; } if ((reflection.options & EShReflectionBasicArraySuffix) && terminalType->isArray()) { name.append(TString("[0]")); } // Finally, add a full string to the reflection database, and update the array size if necessary. // If the dereferenced entity to record is an array, compute the size and update the maximum size. // there might not be a final array dereference, it could have been copied as an array object if (arraySize == 0) arraySize = mapToGlArraySize(*terminalType); TReflection::TMapIndexToReflection& variables = reflection.GetVariableMapForStorage(baseStorage); TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name.c_str()); if (it == reflection.nameToIndex.end()) { int uniformIndex = (int)variables.size(); reflection.nameToIndex[name.c_str()] = uniformIndex; variables.push_back(TObjectReflection(name.c_str(), *terminalType, offset, mapToGlType(*terminalType), arraySize, blockIndex)); if (terminalType->isArray()) { variables.back().arrayStride = getArrayStride(baseType, *terminalType); if (topLevelArrayStride == 0) topLevelArrayStride = variables.back().arrayStride; } if ((reflection.options & EShReflectionSeparateBuffers) && terminalType->isAtomic()) reflection.atomicCounterUniformIndices.push_back(uniformIndex); variables.back().topLevelArraySize = topLevelArraySize; variables.back().topLevelArrayStride = topLevelArrayStride; if ((reflection.options & EShReflectionAllBlockVariables) && active) { EShLanguageMask& stages = variables.back().stages; stages = static_cast(stages | 1 << intermediate.getStage()); } } else { if (arraySize > 1) { int& reflectedArraySize = variables[it->second].size; reflectedArraySize = std::max(arraySize, reflectedArraySize); } if ((reflection.options & EShReflectionAllBlockVariables) && active) { EShLanguageMask& stages = variables[it->second].stages; stages = static_cast(stages | 1 << intermediate.getStage()); } } } // similar to blowUpActiveAggregate, but with simpler rules and no dereferences to follow. void blowUpIOAggregate(bool input, const TString &baseName, const TType &type) { TString name = baseName; // if the type is still too coarse a granularity, this is still an aggregate to expand, expand it... if (! isReflectionGranularity(type)) { if (type.isArray()) { // Visit all the indices of this array, and for each one, // fully explode the remaining aggregate to dereference for (int i = 0; i < std::max(type.getOuterArraySize(), 1); ++i) { TString newBaseName = name; newBaseName.append(TString("[") + String(i) + "]"); TType derefType(type, 0); blowUpIOAggregate(input, newBaseName, derefType); } } else { // Visit all members of this aggregate, and for each one, // fully explode the remaining aggregate to dereference const TTypeList& typeList = *type.getStruct(); for (int i = 0; i < (int)typeList.size(); ++i) { TString newBaseName = name; if (newBaseName.size() > 0) newBaseName.append("."); newBaseName.append(typeList[i].type->getFieldName()); TType derefType(type, i); blowUpIOAggregate(input, newBaseName, derefType); } } // it was all completed in the recursive calls above return; } if ((reflection.options & EShReflectionBasicArraySuffix) && type.isArray()) { name.append(TString("[0]")); } TReflection::TMapIndexToReflection &ioItems = input ? reflection.indexToPipeInput : reflection.indexToPipeOutput; std::string namespacedName = input ? "in " : "out "; namespacedName += name.c_str(); TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(namespacedName); if (it == reflection.nameToIndex.end()) { reflection.nameToIndex[namespacedName] = (int)ioItems.size(); ioItems.push_back( TObjectReflection(name.c_str(), type, 0, mapToGlType(type), mapToGlArraySize(type), 0)); EShLanguageMask& stages = ioItems.back().stages; stages = static_cast(stages | 1 << intermediate.getStage()); } else { EShLanguageMask& stages = ioItems[it->second].stages; stages = static_cast(stages | 1 << intermediate.getStage()); } } // Add a uniform dereference where blocks/struct/arrays are involved in the access. // Handles the situation where the left node is at the correct or too coarse a // granularity for reflection. (That is, further dereferences up the tree will be // skipped.) Earlier dereferences, down the tree, will be handled // at the same time, and logged to prevent reprocessing as the tree is traversed. // // Note: Other things like the following must be caught elsewhere: // - a simple non-array, non-struct variable (no dereference even conceivable) // - an aggregrate consumed en masse, without a dereference // // So, this code is for cases like // - a struct/block dereferencing a member (whether the member is array or not) // - an array of struct // - structs/arrays containing the above // void addDereferencedUniform(TIntermBinary* topNode) { // See if too fine-grained to process (wait to get further down the tree) const TType& leftType = topNode->getLeft()->getType(); if ((leftType.isVector() || leftType.isMatrix()) && ! leftType.isArray()) return; // We have an array or structure or block dereference, see if it's a uniform // based dereference (if not, skip it). TIntermSymbol* base = findBase(topNode); if (! base || ! base->getQualifier().isUniformOrBuffer()) return; // See if we've already processed this (e.g., in the middle of something // we did earlier), and if so skip it if (processedDerefs.find(topNode) != processedDerefs.end()) return; // Process this uniform dereference int offset = -1; int blockIndex = -1; bool anonymous = false; // See if we need to record the block itself bool block = base->getBasicType() == EbtBlock; if (block) { offset = 0; anonymous = IsAnonymous(base->getName()); const TString& blockName = base->getType().getTypeName(); TString baseName; if (! anonymous) baseName = blockName; blockIndex = addBlockName(blockName, base->getType(), intermediate.getBlockSize(base->getType())); if (reflection.options & EShReflectionAllBlockVariables) { // Use a degenerate (empty) set of dereferences to immediately put as at the end of // the dereference change expected by blowUpActiveAggregate. TList derefs; // otherwise - if we're not using strict array suffix rules, or this isn't a block so we are // expanding root arrays anyway, just start the iteration from the base block type. blowUpActiveAggregate(base->getType(), baseName, derefs, derefs.end(), 0, blockIndex, 0, -1, 0, base->getQualifier().storage, false); } } // Process the dereference chain, backward, accumulating the pieces for later forward traversal. // If the topNode is a reflection-granularity-array dereference, don't include that last dereference. TList derefs; for (TIntermBinary* visitNode = topNode; visitNode; visitNode = visitNode->getLeft()->getAsBinaryNode()) { if (isReflectionGranularity(visitNode->getLeft()->getType())) continue; derefs.push_front(visitNode); processedDerefs.insert(visitNode); } processedDerefs.insert(base); // See if we have a specific array size to stick to while enumerating the explosion of the aggregate int arraySize = 0; if (isReflectionGranularity(topNode->getLeft()->getType()) && topNode->getLeft()->isArray()) { if (topNode->getOp() == EOpIndexDirect) arraySize = topNode->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst() + 1; } // Put the dereference chain together, forward TString baseName; if (! anonymous) { if (block) baseName = base->getType().getTypeName(); else baseName = base->getName(); } blowUpActiveAggregate(base->getType(), baseName, derefs, derefs.begin(), offset, blockIndex, arraySize, -1, 0, base->getQualifier().storage, true); } int addBlockName(const TString& name, const TType& type, int size) { int blockIndex = 0; if (type.isArray()) { TType derefType(type, 0); for (int e = 0; e < type.getOuterArraySize(); ++e) { int memberBlockIndex = addBlockName(name + "[" + String(e) + "]", derefType, size); if (e == 0) blockIndex = memberBlockIndex; } } else { TReflection::TMapIndexToReflection& blocks = reflection.GetBlockMapForStorage(type.getQualifier().storage); TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name.c_str()); if (reflection.nameToIndex.find(name.c_str()) == reflection.nameToIndex.end()) { blockIndex = (int)blocks.size(); reflection.nameToIndex[name.c_str()] = blockIndex; blocks.push_back(TObjectReflection(name.c_str(), type, -1, -1, size, blockIndex)); blocks.back().numMembers = countAggregateMembers(type); if (updateStageMasks) { EShLanguageMask& stages = blocks.back().stages; stages = static_cast(stages | 1 << intermediate.getStage()); } } else { blockIndex = it->second; if (updateStageMasks) { EShLanguageMask& stages = blocks[blockIndex].stages; stages = static_cast(stages | 1 << intermediate.getStage()); } } } return blockIndex; } // Are we at a level in a dereference chain at which individual active uniform queries are made? bool isReflectionGranularity(const TType& type) { return type.getBasicType() != EbtBlock && type.getBasicType() != EbtStruct && !type.isArrayOfArrays(); } // For a binary operation indexing into an aggregate, chase down the base of the aggregate. // Return nullptr if the topology does not fit this situation. TIntermSymbol* findBase(const TIntermBinary* node) { TIntermSymbol *base = node->getLeft()->getAsSymbolNode(); if (base) return base; TIntermBinary* left = node->getLeft()->getAsBinaryNode(); if (! left) return nullptr; return findBase(left); } // // Translate a glslang sampler type into the GL API #define number. // int mapSamplerToGlType(TSampler sampler) { if (! sampler.image) { // a sampler... switch (sampler.type) { case EbtFloat: switch ((int)sampler.dim) { case Esd1D: if (sampler.shadow) return sampler.arrayed ? GL_SAMPLER_1D_ARRAY_SHADOW : GL_SAMPLER_1D_SHADOW; else return sampler.arrayed ? GL_SAMPLER_1D_ARRAY : GL_SAMPLER_1D; case Esd2D: if (sampler.ms) { return sampler.arrayed ? GL_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_SAMPLER_2D_MULTISAMPLE; } else { if (sampler.shadow) return sampler.arrayed ? GL_SAMPLER_2D_ARRAY_SHADOW : GL_SAMPLER_2D_SHADOW; else return sampler.arrayed ? GL_SAMPLER_2D_ARRAY : GL_SAMPLER_2D; } case Esd3D: return GL_SAMPLER_3D; case EsdCube: if (sampler.shadow) return sampler.arrayed ? GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW : GL_SAMPLER_CUBE_SHADOW; else return sampler.arrayed ? GL_SAMPLER_CUBE_MAP_ARRAY : GL_SAMPLER_CUBE; case EsdRect: return sampler.shadow ? GL_SAMPLER_2D_RECT_SHADOW : GL_SAMPLER_2D_RECT; case EsdBuffer: return GL_SAMPLER_BUFFER; default: return 0; } case EbtFloat16: switch ((int)sampler.dim) { case Esd1D: if (sampler.shadow) return sampler.arrayed ? GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_1D_SHADOW_AMD; else return sampler.arrayed ? GL_FLOAT16_SAMPLER_1D_ARRAY_AMD : GL_FLOAT16_SAMPLER_1D_AMD; case Esd2D: if (sampler.ms) { return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD : GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD; } else { if (sampler.shadow) return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_2D_SHADOW_AMD; else return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_ARRAY_AMD : GL_FLOAT16_SAMPLER_2D_AMD; } case Esd3D: return GL_FLOAT16_SAMPLER_3D_AMD; case EsdCube: if (sampler.shadow) return sampler.arrayed ? GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD; else return sampler.arrayed ? GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD : GL_FLOAT16_SAMPLER_CUBE_AMD; case EsdRect: return sampler.shadow ? GL_FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD : GL_FLOAT16_SAMPLER_2D_RECT_AMD; case EsdBuffer: return GL_FLOAT16_SAMPLER_BUFFER_AMD; default: return 0; } case EbtInt: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_INT_SAMPLER_1D_ARRAY : GL_INT_SAMPLER_1D; case Esd2D: if (sampler.ms) return sampler.arrayed ? GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_INT_SAMPLER_2D_MULTISAMPLE; else return sampler.arrayed ? GL_INT_SAMPLER_2D_ARRAY : GL_INT_SAMPLER_2D; case Esd3D: return GL_INT_SAMPLER_3D; case EsdCube: return sampler.arrayed ? GL_INT_SAMPLER_CUBE_MAP_ARRAY : GL_INT_SAMPLER_CUBE; case EsdRect: return GL_INT_SAMPLER_2D_RECT; case EsdBuffer: return GL_INT_SAMPLER_BUFFER; default: return 0; } case EbtUint: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_1D_ARRAY : GL_UNSIGNED_INT_SAMPLER_1D; case Esd2D: if (sampler.ms) return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE; else return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D; case Esd3D: return GL_UNSIGNED_INT_SAMPLER_3D; case EsdCube: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY : GL_UNSIGNED_INT_SAMPLER_CUBE; case EsdRect: return GL_UNSIGNED_INT_SAMPLER_2D_RECT; case EsdBuffer: return GL_UNSIGNED_INT_SAMPLER_BUFFER; default: return 0; } default: return 0; } } else { // an image... switch (sampler.type) { case EbtFloat: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_IMAGE_1D_ARRAY : GL_IMAGE_1D; case Esd2D: if (sampler.ms) return sampler.arrayed ? GL_IMAGE_2D_MULTISAMPLE_ARRAY : GL_IMAGE_2D_MULTISAMPLE; else return sampler.arrayed ? GL_IMAGE_2D_ARRAY : GL_IMAGE_2D; case Esd3D: return GL_IMAGE_3D; case EsdCube: return sampler.arrayed ? GL_IMAGE_CUBE_MAP_ARRAY : GL_IMAGE_CUBE; case EsdRect: return GL_IMAGE_2D_RECT; case EsdBuffer: return GL_IMAGE_BUFFER; default: return 0; } case EbtFloat16: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_FLOAT16_IMAGE_1D_ARRAY_AMD : GL_FLOAT16_IMAGE_1D_AMD; case Esd2D: if (sampler.ms) return sampler.arrayed ? GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD : GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD; else return sampler.arrayed ? GL_FLOAT16_IMAGE_2D_ARRAY_AMD : GL_FLOAT16_IMAGE_2D_AMD; case Esd3D: return GL_FLOAT16_IMAGE_3D_AMD; case EsdCube: return sampler.arrayed ? GL_FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD : GL_FLOAT16_IMAGE_CUBE_AMD; case EsdRect: return GL_FLOAT16_IMAGE_2D_RECT_AMD; case EsdBuffer: return GL_FLOAT16_IMAGE_BUFFER_AMD; default: return 0; } case EbtInt: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_INT_IMAGE_1D_ARRAY : GL_INT_IMAGE_1D; case Esd2D: if (sampler.ms) return sampler.arrayed ? GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY : GL_INT_IMAGE_2D_MULTISAMPLE; else return sampler.arrayed ? GL_INT_IMAGE_2D_ARRAY : GL_INT_IMAGE_2D; case Esd3D: return GL_INT_IMAGE_3D; case EsdCube: return sampler.arrayed ? GL_INT_IMAGE_CUBE_MAP_ARRAY : GL_INT_IMAGE_CUBE; case EsdRect: return GL_INT_IMAGE_2D_RECT; case EsdBuffer: return GL_INT_IMAGE_BUFFER; default: return 0; } case EbtUint: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_1D_ARRAY : GL_UNSIGNED_INT_IMAGE_1D; case Esd2D: if (sampler.ms) return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY : GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE; else return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_ARRAY : GL_UNSIGNED_INT_IMAGE_2D; case Esd3D: return GL_UNSIGNED_INT_IMAGE_3D; case EsdCube: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY : GL_UNSIGNED_INT_IMAGE_CUBE; case EsdRect: return GL_UNSIGNED_INT_IMAGE_2D_RECT; case EsdBuffer: return GL_UNSIGNED_INT_IMAGE_BUFFER; default: return 0; } default: return 0; } } } // // Translate a glslang type into the GL API #define number. // Ignores arrayness. // int mapToGlType(const TType& type) { switch (type.getBasicType()) { case EbtSampler: return mapSamplerToGlType(type.getSampler()); case EbtStruct: case EbtBlock: case EbtVoid: return 0; default: break; } if (type.isVector()) { int offset = type.getVectorSize() - 2; switch (type.getBasicType()) { case EbtFloat: return GL_FLOAT_VEC2 + offset; case EbtDouble: return GL_DOUBLE_VEC2 + offset; case EbtFloat16: return GL_FLOAT16_VEC2_NV + offset; case EbtInt: return GL_INT_VEC2 + offset; case EbtUint: return GL_UNSIGNED_INT_VEC2 + offset; case EbtInt64: return GL_INT64_VEC2_ARB + offset; case EbtUint64: return GL_UNSIGNED_INT64_VEC2_ARB + offset; case EbtBool: return GL_BOOL_VEC2 + offset; case EbtAtomicUint: return GL_UNSIGNED_INT_ATOMIC_COUNTER + offset; default: return 0; } } if (type.isMatrix()) { switch (type.getBasicType()) { case EbtFloat: switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: return GL_FLOAT_MAT2; case 3: return GL_FLOAT_MAT2x3; case 4: return GL_FLOAT_MAT2x4; default: return 0; } case 3: switch (type.getMatrixRows()) { case 2: return GL_FLOAT_MAT3x2; case 3: return GL_FLOAT_MAT3; case 4: return GL_FLOAT_MAT3x4; default: return 0; } case 4: switch (type.getMatrixRows()) { case 2: return GL_FLOAT_MAT4x2; case 3: return GL_FLOAT_MAT4x3; case 4: return GL_FLOAT_MAT4; default: return 0; } default: return 0; } case EbtDouble: switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: return GL_DOUBLE_MAT2; case 3: return GL_DOUBLE_MAT2x3; case 4: return GL_DOUBLE_MAT2x4; default: return 0; } case 3: switch (type.getMatrixRows()) { case 2: return GL_DOUBLE_MAT3x2; case 3: return GL_DOUBLE_MAT3; case 4: return GL_DOUBLE_MAT3x4; default: return 0; } case 4: switch (type.getMatrixRows()) { case 2: return GL_DOUBLE_MAT4x2; case 3: return GL_DOUBLE_MAT4x3; case 4: return GL_DOUBLE_MAT4; default: return 0; } default: return 0; } case EbtFloat16: switch (type.getMatrixCols()) { case 2: switch (type.getMatrixRows()) { case 2: return GL_FLOAT16_MAT2_AMD; case 3: return GL_FLOAT16_MAT2x3_AMD; case 4: return GL_FLOAT16_MAT2x4_AMD; default: return 0; } case 3: switch (type.getMatrixRows()) { case 2: return GL_FLOAT16_MAT3x2_AMD; case 3: return GL_FLOAT16_MAT3_AMD; case 4: return GL_FLOAT16_MAT3x4_AMD; default: return 0; } case 4: switch (type.getMatrixRows()) { case 2: return GL_FLOAT16_MAT4x2_AMD; case 3: return GL_FLOAT16_MAT4x3_AMD; case 4: return GL_FLOAT16_MAT4_AMD; default: return 0; } default: return 0; } default: return 0; } } if (type.getVectorSize() == 1) { switch (type.getBasicType()) { case EbtFloat: return GL_FLOAT; case EbtDouble: return GL_DOUBLE; case EbtFloat16: return GL_FLOAT16_NV; case EbtInt: return GL_INT; case EbtUint: return GL_UNSIGNED_INT; case EbtInt64: return GL_INT64_ARB; case EbtUint64: return GL_UNSIGNED_INT64_ARB; case EbtBool: return GL_BOOL; case EbtAtomicUint: return GL_UNSIGNED_INT_ATOMIC_COUNTER; default: return 0; } } return 0; } int mapToGlArraySize(const TType& type) { return type.isArray() ? type.getOuterArraySize() : 1; } const TIntermediate& intermediate; TReflection& reflection; std::set processedDerefs; bool updateStageMasks; protected: TReflectionTraverser(TReflectionTraverser&); TReflectionTraverser& operator=(TReflectionTraverser&); }; // // Implement the traversal functions of interest. // // To catch dereferenced aggregates that must be reflected. // This catches them at the highest level possible in the tree. bool TReflectionTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node) { switch (node->getOp()) { case EOpIndexDirect: case EOpIndexIndirect: case EOpIndexDirectStruct: addDereferencedUniform(node); break; default: break; } // still need to visit everything below, which could contain sub-expressions // containing different uniforms return true; } // To reflect non-dereferenced objects. void TReflectionTraverser::visitSymbol(TIntermSymbol* base) { if (base->getQualifier().storage == EvqUniform) { if (base->getBasicType() == EbtBlock) { if (reflection.options & EShReflectionSharedStd140UBO) { addUniform(*base); } } else { addUniform(*base); } } // #TODO add std140/layout active rules for ssbo, same with ubo. // Storage buffer blocks will be collected and expanding in this part. if((reflection.options & EShReflectionSharedStd140SSBO) && (base->getQualifier().storage == EvqBuffer && base->getBasicType() == EbtBlock && (base->getQualifier().layoutPacking == ElpStd140 || base->getQualifier().layoutPacking == ElpShared))) addUniform(*base); if ((intermediate.getStage() == reflection.firstStage && base->getQualifier().isPipeInput()) || (intermediate.getStage() == reflection.lastStage && base->getQualifier().isPipeOutput())) addPipeIOVariable(*base); } // // Implement TObjectReflection methods. // TObjectReflection::TObjectReflection(const std::string &pName, const TType &pType, int pOffset, int pGLDefineType, int pSize, int pIndex) : name(pName), offset(pOffset), glDefineType(pGLDefineType), size(pSize), index(pIndex), counterIndex(-1), numMembers(-1), arrayStride(0), topLevelArrayStride(0), stages(EShLanguageMask(0)), type(pType.clone()) { } int TObjectReflection::getBinding() const { if (type == nullptr || !type->getQualifier().hasBinding()) return -1; return type->getQualifier().layoutBinding; } void TObjectReflection::dump() const { printf("%s: offset %d, type %x, size %d, index %d, binding %d, stages %d", name.c_str(), offset, glDefineType, size, index, getBinding(), stages); if (counterIndex != -1) printf(", counter %d", counterIndex); if (numMembers != -1) printf(", numMembers %d", numMembers); if (arrayStride != 0) printf(", arrayStride %d", arrayStride); if (topLevelArrayStride != 0) printf(", topLevelArrayStride %d", topLevelArrayStride); printf("\n"); } // // Implement TReflection methods. // // Track any required attribute reflection, such as compute shader numthreads. // void TReflection::buildAttributeReflection(EShLanguage stage, const TIntermediate& intermediate) { if (stage == EShLangCompute) { // Remember thread dimensions for (int dim=0; dim<3; ++dim) { localSize[dim] = intermediate.getLocalSize(dim); tileShadingRateQCOM[dim] = intermediate.getTileShadingRateQCOM(dim); } } } // build counter block index associations for buffers void TReflection::buildCounterIndices(const TIntermediate& intermediate) { #ifdef ENABLE_HLSL // search for ones that have counters for (int i = 0; i < int(indexToUniformBlock.size()); ++i) { const TString counterName(intermediate.addCounterBufferName(indexToUniformBlock[i].name).c_str()); const int index = getIndex(counterName); if (index >= 0) indexToUniformBlock[i].counterIndex = index; } #else (void)intermediate; #endif } // build Shader Stages mask for all uniforms void TReflection::buildUniformStageMask(const TIntermediate& intermediate) { if (options & EShReflectionAllBlockVariables) return; for (int i = 0; i < int(indexToUniform.size()); ++i) { indexToUniform[i].stages = static_cast(indexToUniform[i].stages | 1 << intermediate.getStage()); } for (int i = 0; i < int(indexToBufferVariable.size()); ++i) { indexToBufferVariable[i].stages = static_cast(indexToBufferVariable[i].stages | 1 << intermediate.getStage()); } } // Merge live symbols from 'intermediate' into the existing reflection database. // // Returns false if the input is too malformed to do this. bool TReflection::addStage(EShLanguage stage, const TIntermediate& intermediate) { if (intermediate.getTreeRoot() == nullptr || intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive()) return false; buildAttributeReflection(stage, intermediate); TReflectionTraverser it(intermediate, *this); for (auto& sequnence : intermediate.getTreeRoot()->getAsAggregate()->getSequence()) { if (sequnence->getAsAggregate() != nullptr) { if (sequnence->getAsAggregate()->getOp() == glslang::EOpLinkerObjects) { it.updateStageMasks = false; TIntermAggregate* linkerObjects = sequnence->getAsAggregate(); for (auto& sequnence : linkerObjects->getSequence()) { auto pNode = sequnence->getAsSymbolNode(); if (pNode != nullptr) { if ((pNode->getQualifier().storage == EvqUniform && (options & EShReflectionSharedStd140UBO)) || (pNode->getQualifier().storage == EvqBuffer && (options & EShReflectionSharedStd140SSBO))) { // collect std140 and shared uniform block form AST if ((pNode->getBasicType() == EbtBlock) && ((pNode->getQualifier().layoutPacking == ElpStd140) || (pNode->getQualifier().layoutPacking == ElpShared))) { pNode->traverse(&it); } } else if ((options & EShReflectionAllIOVariables) && (pNode->getQualifier().isPipeInput() || pNode->getQualifier().isPipeOutput())) { pNode->traverse(&it); } } } } else { // This traverser will travers all function in AST. // If we want reflect uncalled function, we need set linke message EShMsgKeepUncalled. // When EShMsgKeepUncalled been set to true, all function will be keep in AST, even it is a uncalled function. // This will keep some uniform variables in reflection, if those uniform variables is used in these uncalled function. // // If we just want reflect only live node, we can use a default link message or set EShMsgKeepUncalled false. // When linke message not been set EShMsgKeepUncalled, linker won't keep uncalled function in AST. // So, travers all function node can equivalent to travers live function. it.updateStageMasks = true; sequnence->getAsAggregate()->traverse(&it); } } } it.updateStageMasks = true; buildCounterIndices(intermediate); buildUniformStageMask(intermediate); return true; } void TReflection::dump() { printf("Uniform reflection:\n"); for (size_t i = 0; i < indexToUniform.size(); ++i) indexToUniform[i].dump(); printf("\n"); printf("Uniform block reflection:\n"); for (size_t i = 0; i < indexToUniformBlock.size(); ++i) indexToUniformBlock[i].dump(); printf("\n"); printf("Buffer variable reflection:\n"); for (size_t i = 0; i < indexToBufferVariable.size(); ++i) indexToBufferVariable[i].dump(); printf("\n"); printf("Buffer block reflection:\n"); for (size_t i = 0; i < indexToBufferBlock.size(); ++i) indexToBufferBlock[i].dump(); printf("\n"); printf("Pipeline input reflection:\n"); for (size_t i = 0; i < indexToPipeInput.size(); ++i) indexToPipeInput[i].dump(); printf("\n"); printf("Pipeline output reflection:\n"); for (size_t i = 0; i < indexToPipeOutput.size(); ++i) indexToPipeOutput[i].dump(); printf("\n"); static const char* axis[] = { "X", "Y", "Z" }; if (getLocalSize(0) > 1) { for (int dim=0; dim<3; ++dim) if (getLocalSize(dim) > 1) printf("Local size %s: %u\n", axis[dim], getLocalSize(dim)); printf("\n"); } if (getTileShadingRateQCOM(0) > 1 || getTileShadingRateQCOM(1) > 1) { for (int dim=0; dim<3; ++dim) printf("Tile shading rate QCOM %s: %u\n", axis[dim], getTileShadingRateQCOM(dim)); printf("\n"); } // printf("Live names\n"); // for (TNameToIndex::const_iterator it = nameToIndex.begin(); it != nameToIndex.end(); ++it) // printf("%s: %d\n", it->first.c_str(), it->second); // printf("\n"); } } // end namespace glslang glslang-16.0.0/glslang/MachineIndependent/reflection.h000066400000000000000000000204231506534232700227110ustar00rootroot00000000000000// // Copyright (C) 2013-2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _REFLECTION_INCLUDED #define _REFLECTION_INCLUDED #include "../Public/ShaderLang.h" #include "../Include/BaseTypes.h" #include "../Include/visibility.h" #include #include // // A reflection database and its interface, consistent with the OpenGL API reflection queries. // namespace glslang { class TIntermediate; class TIntermAggregate; class TReflectionTraverser; // The full reflection database class TReflection { public: TReflection(EShReflectionOptions opts, EShLanguage first, EShLanguage last) : options(opts), firstStage(first), lastStage(last), badReflection(TObjectReflection::badReflection()) { for (int dim=0; dim<3; ++dim) { localSize[dim] = 0; tileShadingRateQCOM[dim] = 0; } } virtual ~TReflection() {} // grow the reflection stage by stage GLSLANG_EXPORT_FOR_TESTS bool addStage(EShLanguage, const TIntermediate&); // for mapping a uniform index to a uniform object's description int getNumUniforms() { return (int)indexToUniform.size(); } const TObjectReflection& getUniform(int i) const { if (i >= 0 && i < (int)indexToUniform.size()) return indexToUniform[i]; else return badReflection; } // for mapping a block index to the block's description int getNumUniformBlocks() const { return (int)indexToUniformBlock.size(); } const TObjectReflection& getUniformBlock(int i) const { if (i >= 0 && i < (int)indexToUniformBlock.size()) return indexToUniformBlock[i]; else return badReflection; } // for mapping an pipeline input index to the input's description int getNumPipeInputs() { return (int)indexToPipeInput.size(); } const TObjectReflection& getPipeInput(int i) const { if (i >= 0 && i < (int)indexToPipeInput.size()) return indexToPipeInput[i]; else return badReflection; } // for mapping an pipeline output index to the output's description int getNumPipeOutputs() { return (int)indexToPipeOutput.size(); } const TObjectReflection& getPipeOutput(int i) const { if (i >= 0 && i < (int)indexToPipeOutput.size()) return indexToPipeOutput[i]; else return badReflection; } // for mapping from an atomic counter to the uniform index int getNumAtomicCounters() const { return (int)atomicCounterUniformIndices.size(); } const TObjectReflection& getAtomicCounter(int i) const { if (i >= 0 && i < (int)atomicCounterUniformIndices.size()) return getUniform(atomicCounterUniformIndices[i]); else return badReflection; } // for mapping a buffer variable index to a buffer variable object's description int getNumBufferVariables() { return (int)indexToBufferVariable.size(); } const TObjectReflection& getBufferVariable(int i) const { if (i >= 0 && i < (int)indexToBufferVariable.size()) return indexToBufferVariable[i]; else return badReflection; } // for mapping a storage block index to the storage block's description int getNumStorageBuffers() const { return (int)indexToBufferBlock.size(); } const TObjectReflection& getStorageBufferBlock(int i) const { if (i >= 0 && i < (int)indexToBufferBlock.size()) return indexToBufferBlock[i]; else return badReflection; } // for mapping any name to its index (block names, uniform names and input/output names) int getIndex(const char* name) const { TNameToIndex::const_iterator it = nameToIndex.find(name); if (it == nameToIndex.end()) return -1; else return it->second; } // see getIndex(const char*) int getIndex(const TString& name) const { return getIndex(name.c_str()); } // for mapping any name to its index (only pipe input/output names) int getPipeIOIndex(const char* name, const bool inOrOut) const { TNameToIndex::const_iterator it = inOrOut ? pipeInNameToIndex.find(name) : pipeOutNameToIndex.find(name); if (it == (inOrOut ? pipeInNameToIndex.end() : pipeOutNameToIndex.end())) return -1; else return it->second; } // see gePipeIOIndex(const char*, const bool) int getPipeIOIndex(const TString& name, const bool inOrOut) const { return getPipeIOIndex(name.c_str(), inOrOut); } // Thread local size unsigned getLocalSize(int dim) const { return dim <= 2 ? localSize[dim] : 0; } // Tile shading rate QCOM unsigned getTileShadingRateQCOM(int dim) const { return dim <= 2 ? tileShadingRateQCOM[dim] : 0; } void dump(); protected: friend class glslang::TReflectionTraverser; void buildCounterIndices(const TIntermediate&); void buildUniformStageMask(const TIntermediate& intermediate); void buildAttributeReflection(EShLanguage, const TIntermediate&); // Need a TString hash: typedef std::unordered_map TNameToIndex; typedef std::map TNameToIndex; typedef std::vector TMapIndexToReflection; typedef std::vector TIndices; TMapIndexToReflection& GetBlockMapForStorage(TStorageQualifier storage) { if ((options & EShReflectionSeparateBuffers) && storage == EvqBuffer) return indexToBufferBlock; return indexToUniformBlock; } TMapIndexToReflection& GetVariableMapForStorage(TStorageQualifier storage) { if ((options & EShReflectionSeparateBuffers) && storage == EvqBuffer) return indexToBufferVariable; return indexToUniform; } EShReflectionOptions options; EShLanguage firstStage; EShLanguage lastStage; TObjectReflection badReflection; // return for queries of -1 or generally out of range; has expected descriptions with in it for this TNameToIndex nameToIndex; // maps names to indexes; can hold all types of data: uniform/buffer and which function names have been processed TNameToIndex pipeInNameToIndex; // maps pipe in names to indexes, this is a fix to seperate pipe I/O from uniforms and buffers. TNameToIndex pipeOutNameToIndex; // maps pipe out names to indexes, this is a fix to seperate pipe I/O from uniforms and buffers. TMapIndexToReflection indexToUniform; TMapIndexToReflection indexToUniformBlock; TMapIndexToReflection indexToBufferVariable; TMapIndexToReflection indexToBufferBlock; TMapIndexToReflection indexToPipeInput; TMapIndexToReflection indexToPipeOutput; TIndices atomicCounterUniformIndices; unsigned int localSize[3]; unsigned int tileShadingRateQCOM[3]; }; } // end namespace glslang #endif // _REFLECTION_INCLUDED glslang-16.0.0/glslang/MachineIndependent/span.h000066400000000000000000000064221506534232700215230ustar00rootroot00000000000000#pragma once // // Copyright (C) 2023 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Partial implementation of std::span for C++11 // Replace with std::span if repo standard is bumped to C++20 // // This code was copied from https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/layers/containers/custom_containers.h template class span { public: using pointer = T *; using const_pointer = T const *; using iterator = pointer; using const_iterator = const_pointer; span() = default; span(pointer start, size_t n) : data_(start), count_(n) {} template span(Iterator start, Iterator end) : data_(&(*start)), count_(end - start) {} template span(Container &c) : data_(c.data()), count_(c.size()) {} iterator begin() { return data_; } const_iterator begin() const { return data_; } iterator end() { return data_ + count_; } const_iterator end() const { return data_ + count_; } T &operator[](int i) { return data_[i]; } const T &operator[](int i) const { return data_[i]; } T &front() { return *data_; } const T &front() const { return *data_; } T &back() { return *(data_ + (count_ - 1)); } const T &back() const { return *(data_ + (count_ - 1)); } size_t size() const { return count_; } bool empty() const { return count_ == 0; } pointer data() { return data_; } const_pointer data() const { return data_; } private: pointer data_ = {}; size_t count_ = 0; }; // // Allow type inference that using the constructor doesn't allow in C++11 template span make_span(T *begin, size_t count) { return span(begin, count); } template span make_span(T *begin, T *end) { return make_span(begin, end); } glslang-16.0.0/glslang/OSDependent/000077500000000000000000000000001506534232700170335ustar00rootroot00000000000000glslang-16.0.0/glslang/OSDependent/Unix/000077500000000000000000000000001506534232700177565ustar00rootroot00000000000000glslang-16.0.0/glslang/OSDependent/Unix/CMakeLists.txt000066400000000000000000000040301506534232700225130ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set(OSDEPENDENT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ossource.cpp PARENT_SCOPE) set(OSDEPENDENT_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/../osinclude.h PARENT_SCOPE) add_library(OSDependent STATIC ${CMAKE_CURRENT_SOURCE_DIR}/../../stub.cpp) set_property(TARGET OSDependent PROPERTY FOLDER glslang) set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON) if(GLSLANG_ENABLE_INSTALL AND NOT BUILD_SHARED_LIBS) install(TARGETS OSDependent EXPORT glslang-targets) endif() glslang-16.0.0/glslang/OSDependent/Unix/ossource.cpp000066400000000000000000000041041506534232700223230ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // // This file contains the Linux-specific functions // #include "../osinclude.h" #include #if !defined(__Fuchsia__) #include #endif namespace glslang { // #define DUMP_COUNTERS void OS_DumpMemoryCounters() { #ifdef DUMP_COUNTERS struct rusage usage; if (getrusage(RUSAGE_SELF, &usage) == 0) printf("Working set size: %ld\n", usage.ru_maxrss * 1024); #else printf("Recompile with DUMP_COUNTERS defined to see counters.\n"); #endif } } // end namespace glslang glslang-16.0.0/glslang/OSDependent/Web/000077500000000000000000000000001506534232700175505ustar00rootroot00000000000000glslang-16.0.0/glslang/OSDependent/Web/CMakeLists.txt000066400000000000000000000063231506534232700223140ustar00rootroot00000000000000# Copyright (C) 2020-2025 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. if(ENABLE_GLSLANG_JS) add_executable(glslang.js "glslang.js.cpp") glslang_set_link_args(glslang.js) target_link_libraries(glslang.js glslang) # Link library names that start with "-" are treated as link flags. # "-Os" should be OK in MSVC; don't use /Os because CMake won't # treat it as a link flag. target_link_libraries(glslang.js "-Os") if(EMSCRIPTEN) set_target_properties(glslang.js PROPERTIES OUTPUT_NAME "glslang" SUFFIX ".js") em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js") target_link_libraries(glslang.js "--llvm-lto 1") target_link_libraries(glslang.js "--closure 1") target_link_libraries(glslang.js "-s MODULARIZE=1") target_link_libraries(glslang.js "-s ALLOW_MEMORY_GROWTH=1") target_link_libraries(glslang.js "-s FILESYSTEM=0") # We use ccall in glslang.pre.js, so make sure it's exposed target_link_libraries(glslang.js "-s EXPORTED_RUNTIME_METHODS=ccall") if(ENABLE_EMSCRIPTEN_SINGLE_FILE) target_link_libraries(glslang.js "-s SINGLE_FILE=1") endif() if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) target_link_libraries(glslang.js "-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0") else() target_link_libraries(glslang.js "-s ENVIRONMENT=web,worker") endif() if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) add_custom_command(TARGET glslang.js POST_BUILD COMMAND ${CMAKE_COMMAND} -E cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js ) endif() endif() endif()glslang-16.0.0/glslang/OSDependent/Web/glslang.after.js000066400000000000000000000013321506534232700226340ustar00rootroot00000000000000export default (() => { const initialize = () => { return new Promise(resolve => { Module({ locateFile() { const i = import.meta.url.lastIndexOf('/') return import.meta.url.substring(0, i) + '/glslang.wasm'; }, onRuntimeInitialized() { resolve({ compileGLSLZeroCopy: this.compileGLSLZeroCopy, compileGLSL: this.compileGLSL, }); }, }); }); }; let instance; return () => { if (!instance) { instance = initialize(); } return instance; }; })(); glslang-16.0.0/glslang/OSDependent/Web/glslang.js.cpp000066400000000000000000000253351506534232700223260ustar00rootroot00000000000000// // Copyright (C) 2019 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include #include #include #ifdef __EMSCRIPTEN__ #include #endif #include "../../../SPIRV/GlslangToSpv.h" #include "../../../glslang/Public/ShaderLang.h" #ifndef __EMSCRIPTEN__ #define EMSCRIPTEN_KEEPALIVE #endif const TBuiltInResource DefaultTBuiltInResource = { /* .MaxLights = */ 32, /* .MaxClipPlanes = */ 6, /* .MaxTextureUnits = */ 32, /* .MaxTextureCoords = */ 32, /* .MaxVertexAttribs = */ 64, /* .MaxVertexUniformComponents = */ 4096, /* .MaxVaryingFloats = */ 64, /* .MaxVertexTextureImageUnits = */ 32, /* .MaxCombinedTextureImageUnits = */ 80, /* .MaxTextureImageUnits = */ 32, /* .MaxFragmentUniformComponents = */ 4096, /* .MaxDrawBuffers = */ 32, /* .MaxVertexUniformVectors = */ 128, /* .MaxVaryingVectors = */ 8, /* .MaxFragmentUniformVectors = */ 16, /* .MaxVertexOutputVectors = */ 16, /* .MaxFragmentInputVectors = */ 15, /* .MinProgramTexelOffset = */ -8, /* .MaxProgramTexelOffset = */ 7, /* .MaxClipDistances = */ 8, /* .MaxComputeWorkGroupCountX = */ 65535, /* .MaxComputeWorkGroupCountY = */ 65535, /* .MaxComputeWorkGroupCountZ = */ 65535, /* .MaxComputeWorkGroupSizeX = */ 1024, /* .MaxComputeWorkGroupSizeY = */ 1024, /* .MaxComputeWorkGroupSizeZ = */ 64, /* .MaxComputeUniformComponents = */ 1024, /* .MaxComputeTextureImageUnits = */ 16, /* .MaxComputeImageUniforms = */ 8, /* .MaxComputeAtomicCounters = */ 8, /* .MaxComputeAtomicCounterBuffers = */ 1, /* .MaxVaryingComponents = */ 60, /* .MaxVertexOutputComponents = */ 64, /* .MaxGeometryInputComponents = */ 64, /* .MaxGeometryOutputComponents = */ 128, /* .MaxFragmentInputComponents = */ 128, /* .MaxImageUnits = */ 8, /* .MaxCombinedImageUnitsAndFragmentOutputs = */ 8, /* .MaxCombinedShaderOutputResources = */ 8, /* .MaxImageSamples = */ 0, /* .MaxVertexImageUniforms = */ 0, /* .MaxTessControlImageUniforms = */ 0, /* .MaxTessEvaluationImageUniforms = */ 0, /* .MaxGeometryImageUniforms = */ 0, /* .MaxFragmentImageUniforms = */ 8, /* .MaxCombinedImageUniforms = */ 8, /* .MaxGeometryTextureImageUnits = */ 16, /* .MaxGeometryOutputVertices = */ 256, /* .MaxGeometryTotalOutputComponents = */ 1024, /* .MaxGeometryUniformComponents = */ 1024, /* .MaxGeometryVaryingComponents = */ 64, /* .MaxTessControlInputComponents = */ 128, /* .MaxTessControlOutputComponents = */ 128, /* .MaxTessControlTextureImageUnits = */ 16, /* .MaxTessControlUniformComponents = */ 1024, /* .MaxTessControlTotalOutputComponents = */ 4096, /* .MaxTessEvaluationInputComponents = */ 128, /* .MaxTessEvaluationOutputComponents = */ 128, /* .MaxTessEvaluationTextureImageUnits = */ 16, /* .MaxTessEvaluationUniformComponents = */ 1024, /* .MaxTessPatchComponents = */ 120, /* .MaxPatchVertices = */ 32, /* .MaxTessGenLevel = */ 64, /* .MaxViewports = */ 16, /* .MaxVertexAtomicCounters = */ 0, /* .MaxTessControlAtomicCounters = */ 0, /* .MaxTessEvaluationAtomicCounters = */ 0, /* .MaxGeometryAtomicCounters = */ 0, /* .MaxFragmentAtomicCounters = */ 8, /* .MaxCombinedAtomicCounters = */ 8, /* .MaxAtomicCounterBindings = */ 1, /* .MaxVertexAtomicCounterBuffers = */ 0, /* .MaxTessControlAtomicCounterBuffers = */ 0, /* .MaxTessEvaluationAtomicCounterBuffers = */ 0, /* .MaxGeometryAtomicCounterBuffers = */ 0, /* .MaxFragmentAtomicCounterBuffers = */ 1, /* .MaxCombinedAtomicCounterBuffers = */ 1, /* .MaxAtomicCounterBufferSize = */ 16384, /* .MaxTransformFeedbackBuffers = */ 4, /* .MaxTransformFeedbackInterleavedComponents = */ 64, /* .MaxCullDistances = */ 8, /* .MaxCombinedClipAndCullDistances = */ 8, /* .MaxSamples = */ 4, /* .maxMeshOutputVerticesNV = */ 256, /* .maxMeshOutputPrimitivesNV = */ 512, /* .maxMeshWorkGroupSizeX_NV = */ 32, /* .maxMeshWorkGroupSizeY_NV = */ 1, /* .maxMeshWorkGroupSizeZ_NV = */ 1, /* .maxTaskWorkGroupSizeX_NV = */ 32, /* .maxTaskWorkGroupSizeY_NV = */ 1, /* .maxTaskWorkGroupSizeZ_NV = */ 1, /* .maxMeshViewCountNV = */ 4, /* .maxMeshOutputVerticesEXT = */ 256, /* .maxMeshOutputPrimitivesEXT = */ 512, /* .maxMeshWorkGroupSizeX_EXT = */ 32, /* .maxMeshWorkGroupSizeY_EXT = */ 1, /* .maxMeshWorkGroupSizeZ_EXT = */ 1, /* .maxTaskWorkGroupSizeX_EXT = */ 32, /* .maxTaskWorkGroupSizeY_EXT = */ 1, /* .maxTaskWorkGroupSizeZ_EXT = */ 1, /* .maxMeshViewCountEXT = */ 4, /* .maxDualSourceDrawBuffersEXT = */ 1, /* .limits = */ { /* .nonInductiveForLoops = */ 1, /* .whileLoops = */ 1, /* .doWhileLoops = */ 1, /* .generalUniformIndexing = */ 1, /* .generalAttributeMatrixVectorIndexing = */ 1, /* .generalVaryingIndexing = */ 1, /* .generalSamplerIndexing = */ 1, /* .generalVariableIndexing = */ 1, /* .generalConstantMatrixVectorIndexing = */ 1, }}; static bool initialized = false; extern "C" { /* * Takes in a GLSL shader as a string and converts it to SPIR-V in binary form. * * |glsl| Null-terminated string containing the shader to be converted. * |stage_int| Magic number indicating the type of shader being processed. * Legal values are as follows: * Vertex = 0 * Fragment = 4 * Compute = 5 * |gen_debug| Flag to indicate if debug information should be generated. * |spirv| Output parameter for a pointer to the resulting SPIR-V data. * |spirv_len| Output parameter for the length of the output binary buffer. * * Returns a void* pointer which, if not null, must be destroyed by * destroy_output_buffer.o. (This is not the same pointer returned in |spirv|.) * If null, the compilation failed. */ EMSCRIPTEN_KEEPALIVE void* convert_glsl_to_spirv(const char* glsl, int stage_int, bool gen_debug, glslang::EShTargetLanguageVersion spirv_version, uint32_t** spirv, size_t* spirv_len) { if (glsl == nullptr) { fprintf(stderr, "Input pointer null\n"); return nullptr; } if (spirv == nullptr || spirv_len == nullptr) { fprintf(stderr, "Output pointer null\n"); return nullptr; } *spirv = nullptr; *spirv_len = 0; if (stage_int != 0 && stage_int != 4 && stage_int != 5) { fprintf(stderr, "Invalid shader stage\n"); return nullptr; } EShLanguage stage = static_cast(stage_int); switch (spirv_version) { case glslang::EShTargetSpv_1_0: case glslang::EShTargetSpv_1_1: case glslang::EShTargetSpv_1_2: case glslang::EShTargetSpv_1_3: case glslang::EShTargetSpv_1_4: case glslang::EShTargetSpv_1_5: break; default: fprintf(stderr, "Invalid SPIR-V version number\n"); return nullptr; } if (!initialized) { glslang::InitializeProcess(); initialized = true; } glslang::TShader shader(stage); shader.setStrings(&glsl, 1); shader.setEnvInput(glslang::EShSourceGlsl, stage, glslang::EShClientVulkan, 100); shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_0); shader.setEnvTarget(glslang::EShTargetSpv, spirv_version); if (!shader.parse(&DefaultTBuiltInResource, 100, true, EShMsgDefault)) { fprintf(stderr, "Parse failed\n"); fprintf(stderr, "%s\n", shader.getInfoLog()); return nullptr; } glslang::TProgram program; program.addShader(&shader); if (!program.link(EShMsgDefault)) { fprintf(stderr, "Link failed\n"); fprintf(stderr, "%s\n", program.getInfoLog()); return nullptr; } glslang::SpvOptions spvOptions; spvOptions.generateDebugInfo = gen_debug; spvOptions.optimizeSize = false; spvOptions.disassemble = false; spvOptions.validate = false; std::vector* output = new std::vector; glslang::GlslangToSpv(*program.getIntermediate(stage), *output, nullptr, &spvOptions); *spirv_len = output->size(); *spirv = output->data(); return output; } /* * Destroys a buffer created by convert_glsl_to_spirv */ EMSCRIPTEN_KEEPALIVE void destroy_output_buffer(void* p) { delete static_cast*>(p); } } // extern "C" /* * For non-Emscripten builds we supply a generic main, so that the glslang.js * build target can generate an executable with a trivial use case instead of * generating a WASM binary. This is done so that there is a target that can be * built and output analyzed using desktop tools, since WASM binaries are * specific to the Emscripten toolchain. */ #ifndef __EMSCRIPTEN__ int main() { const char* input = R"(#version 310 es void main() { })"; uint32_t* output; size_t output_len; void* id = convert_glsl_to_spirv(input, 4, false, glslang::EShTargetSpv_1_0, &output, &output_len); assert(output != nullptr); assert(output_len != 0); destroy_output_buffer(id); return 0; } #endif // ifndef __EMSCRIPTEN__ glslang-16.0.0/glslang/OSDependent/Web/glslang.pre.js000066400000000000000000000041701506534232700223240ustar00rootroot00000000000000Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug, spirv_version) { gen_debug = !!gen_debug; var shader_stage_int; // EShLanguage switch (shader_stage) { case 'vertex': shader_stage_int = 0; break; case 'fragment': shader_stage_int = 4; break; case 'compute': shader_stage_int = 5; break; default: throw new Error("shader_stage must be 'vertex', 'fragment', or 'compute'."); } spirv_version = spirv_version || '1.0'; var spirv_version_int; // EShTargetLanguageVersion switch (spirv_version) { case '1.0': spirv_version_int = (1 << 16) | (0 << 8); break; case '1.1': spirv_version_int = (1 << 16) | (1 << 8); break; case '1.2': spirv_version_int = (1 << 16) | (2 << 8); break; case '1.3': spirv_version_int = (1 << 16) | (3 << 8); break; case '1.4': spirv_version_int = (1 << 16) | (4 << 8); break; case '1.5': spirv_version_int = (1 << 16) | (5 << 8); break; default: throw new Error("spirv_version must be '1.0' ~ '1.5'."); } var p_output = Module['_malloc'](4); var p_output_len = Module['_malloc'](4); var id = Module['ccall']('convert_glsl_to_spirv', 'number', ['string', 'number', 'boolean', 'number', 'number', 'number'], [glsl, shader_stage_int, gen_debug, spirv_version_int, p_output, p_output_len]); var output = getValue(p_output, 'i32'); var output_len = getValue(p_output_len, 'i32'); Module['_free'](p_output); Module['_free'](p_output_len); if (id === 0) { throw new Error('GLSL compilation failed'); } var ret = {}; var outputIndexU32 = output / 4; ret['data'] = Module['HEAPU32'].subarray(outputIndexU32, outputIndexU32 + output_len); ret['free'] = function() { Module['_destroy_output_buffer'](id); }; return ret; }; Module['compileGLSL'] = function(glsl, shader_stage, gen_debug, spirv_version) { var compiled = Module['compileGLSLZeroCopy'](glsl, shader_stage, gen_debug, spirv_version); var ret = compiled['data'].slice() compiled['free'](); return ret; }; glslang-16.0.0/glslang/OSDependent/Windows/000077500000000000000000000000001506534232700204655ustar00rootroot00000000000000glslang-16.0.0/glslang/OSDependent/Windows/CMakeLists.txt000066400000000000000000000045561506534232700232370ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set(OSDEPENDENT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ossource.cpp PARENT_SCOPE) set(OSDEPENDENT_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/../osinclude.h PARENT_SCOPE) add_library(OSDependent STATIC) target_sources(OSDependent PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../stub.cpp) set_property(TARGET OSDependent PROPERTY FOLDER glslang) set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON) # MinGW GCC complains about function pointer casts to void*. # Turn that off with -fpermissive. if(MINGW AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") set_source_files_properties(${OSDEPENDENT_SOURCES} PROPERTIES COMPILE_FLAGS -fpermissive) endif() if(WIN32) source_group("Source" FILES ${SOURCES}) endif() if(GLSLANG_ENABLE_INSTALL) install(TARGETS OSDependent EXPORT glslang-targets) endif() glslang-16.0.0/glslang/OSDependent/Windows/ossource.cpp000066400000000000000000000044131506534232700230350ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "../osinclude.h" #define STRICT #define VC_EXTRALEAN 1 #include #include #include #include // // This file contains the Window-OS-specific functions // #if !(defined(_WIN32) || defined(_WIN64)) #error Trying to build a windows specific file in a non windows build. #endif namespace glslang { //#define DUMP_COUNTERS void OS_DumpMemoryCounters() { #ifdef DUMP_COUNTERS PROCESS_MEMORY_COUNTERS counters; GetProcessMemoryInfo(GetCurrentProcess(), &counters, sizeof(counters)); printf("Working set size: %d\n", counters.WorkingSetSize); #else printf("Recompile with DUMP_COUNTERS defined to see counters.\n"); #endif } } // namespace glslang glslang-16.0.0/glslang/OSDependent/osinclude.h000066400000000000000000000034111506534232700211700ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef __OSINCLUDE_H #define __OSINCLUDE_H #include "../Include/visibility.h" namespace glslang { GLSLANG_EXPORT void OS_DumpMemoryCounters(); } // end namespace glslang #endif // __OSINCLUDE_H glslang-16.0.0/glslang/Public/000077500000000000000000000000001506534232700161015ustar00rootroot00000000000000glslang-16.0.0/glslang/Public/ResourceLimits.h000066400000000000000000000047451506534232700212350ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #ifndef _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_ #define _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_ #include #include "../Include/ResourceLimits.h" #include "../Include/visibility.h" // Return pointer to user-writable Resource to pass through API in // future-proof way. GLSLANG_EXPORT extern TBuiltInResource* GetResources(); // These are the default resources for TBuiltInResources, used for both // - parsing this string for the case where the user didn't supply one, // - dumping out a template for user construction of a config file. GLSLANG_EXPORT extern const TBuiltInResource* GetDefaultResources(); // Returns the DefaultTBuiltInResource as a human-readable string. GLSLANG_EXPORT std::string GetDefaultTBuiltInResourceString(); // Decodes the resource limits from |config| to |resources|. GLSLANG_EXPORT void DecodeResourceLimits(TBuiltInResource* resources, char* config); #endif // _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_ glslang-16.0.0/glslang/Public/ShaderLang.h000066400000000000000000001260141506534232700202660ustar00rootroot00000000000000// // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013-2016 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifndef _COMPILER_INTERFACE_INCLUDED_ #define _COMPILER_INTERFACE_INCLUDED_ #include "../Include/ResourceLimits.h" #include "../Include/visibility.h" #include "../MachineIndependent/Versions.h" #include #include #ifdef _WIN32 #define C_DECL __cdecl #else #define C_DECL #endif // // This is the platform independent interface between an OGL driver // and the shading language compiler/linker. // #ifdef __cplusplus extern "C" { #endif // // Call before doing any other compiler/linker operations. // // (Call once per process, not once per thread.) // GLSLANG_EXPORT int ShInitialize(); // // Call this at process shutdown to clean up memory. // GLSLANG_EXPORT int ShFinalize(); // // Types of languages the compiler can consume. // typedef enum { EShLangVertex, EShLangTessControl, EShLangTessEvaluation, EShLangGeometry, EShLangFragment, EShLangCompute, EShLangRayGen, EShLangRayGenNV = EShLangRayGen, EShLangIntersect, EShLangIntersectNV = EShLangIntersect, EShLangAnyHit, EShLangAnyHitNV = EShLangAnyHit, EShLangClosestHit, EShLangClosestHitNV = EShLangClosestHit, EShLangMiss, EShLangMissNV = EShLangMiss, EShLangCallable, EShLangCallableNV = EShLangCallable, EShLangTask, EShLangTaskNV = EShLangTask, EShLangMesh, EShLangMeshNV = EShLangMesh, LAST_ELEMENT_MARKER(EShLangCount), } EShLanguage; // would be better as stage, but this is ancient now typedef enum : unsigned { EShLangVertexMask = (1 << EShLangVertex), EShLangTessControlMask = (1 << EShLangTessControl), EShLangTessEvaluationMask = (1 << EShLangTessEvaluation), EShLangGeometryMask = (1 << EShLangGeometry), EShLangFragmentMask = (1 << EShLangFragment), EShLangComputeMask = (1 << EShLangCompute), EShLangRayGenMask = (1 << EShLangRayGen), EShLangRayGenNVMask = EShLangRayGenMask, EShLangIntersectMask = (1 << EShLangIntersect), EShLangIntersectNVMask = EShLangIntersectMask, EShLangAnyHitMask = (1 << EShLangAnyHit), EShLangAnyHitNVMask = EShLangAnyHitMask, EShLangClosestHitMask = (1 << EShLangClosestHit), EShLangClosestHitNVMask = EShLangClosestHitMask, EShLangMissMask = (1 << EShLangMiss), EShLangMissNVMask = EShLangMissMask, EShLangCallableMask = (1 << EShLangCallable), EShLangCallableNVMask = EShLangCallableMask, EShLangTaskMask = (1 << EShLangTask), EShLangTaskNVMask = EShLangTaskMask, EShLangMeshMask = (1 << EShLangMesh), EShLangMeshNVMask = EShLangMeshMask, LAST_ELEMENT_MARKER(EShLanguageMaskCount), } EShLanguageMask; namespace glslang { class TType; typedef enum { EShSourceNone, EShSourceGlsl, // GLSL, includes ESSL (OpenGL ES GLSL) EShSourceHlsl, // HLSL LAST_ELEMENT_MARKER(EShSourceCount), } EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead typedef enum { EShClientNone, // use when there is no client, e.g. for validation EShClientVulkan, // as GLSL dialect, specifies KHR_vulkan_glsl extension EShClientOpenGL, // as GLSL dialect, specifies ARB_gl_spirv extension LAST_ELEMENT_MARKER(EShClientCount), } EShClient; typedef enum { EShTargetNone, EShTargetSpv, // SPIR-V (preferred spelling) EshTargetSpv = EShTargetSpv, // legacy spelling LAST_ELEMENT_MARKER(EShTargetCount), } EShTargetLanguage; typedef enum { EShTargetVulkan_1_0 = (1 << 22), // Vulkan 1.0 EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1 EShTargetVulkan_1_2 = (1 << 22) | (2 << 12), // Vulkan 1.2 EShTargetVulkan_1_3 = (1 << 22) | (3 << 12), // Vulkan 1.3 EShTargetVulkan_1_4 = (1 << 22) | (4 << 12), // Vulkan 1.4 EShTargetOpenGL_450 = 450, // OpenGL LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 6), } EShTargetClientVersion; typedef EShTargetClientVersion EshTargetClientVersion; typedef enum { EShTargetSpv_1_0 = (1 << 16), // SPIR-V 1.0 EShTargetSpv_1_1 = (1 << 16) | (1 << 8), // SPIR-V 1.1 EShTargetSpv_1_2 = (1 << 16) | (2 << 8), // SPIR-V 1.2 EShTargetSpv_1_3 = (1 << 16) | (3 << 8), // SPIR-V 1.3 EShTargetSpv_1_4 = (1 << 16) | (4 << 8), // SPIR-V 1.4 EShTargetSpv_1_5 = (1 << 16) | (5 << 8), // SPIR-V 1.5 EShTargetSpv_1_6 = (1 << 16) | (6 << 8), // SPIR-V 1.6 LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 7), } EShTargetLanguageVersion; // // Following are a series of helper enums for managing layouts and qualifiers, // used for TPublicType, TType, others. // enum TLayoutPacking { ElpNone, ElpShared, // default, but different than saying nothing ElpStd140, ElpStd430, ElpPacked, ElpScalar, ElpCount // If expanding, see bitfield width below }; struct TInputLanguage { EShSource languageFamily; // redundant information with other input, this one overrides when not EShSourceNone EShLanguage stage; // redundant information with other input, this one overrides when not EShSourceNone EShClient dialect; int dialectVersion; // version of client's language definition, not the client (when not EShClientNone) bool vulkanRulesRelaxed; }; struct TClient { EShClient client; EShTargetClientVersion version; // version of client itself (not the client's input dialect) }; struct TTarget { EShTargetLanguage language; EShTargetLanguageVersion version; // version to target, if SPIR-V, defined by "word 1" of the SPIR-V header bool hlslFunctionality1; // can target hlsl_functionality1 extension(s) }; // All source/client/target versions and settings. // Can override previous methods of setting, when items are set here. // Expected to grow, as more are added, rather than growing parameter lists. struct TEnvironment { TInputLanguage input; // definition of the input language TClient client; // what client is the overall compilation being done for? TTarget target; // what to generate }; GLSLANG_EXPORT const char* StageName(EShLanguage); } // end namespace glslang // // Types of output the linker will create. // typedef enum { EShExVertexFragment, EShExFragment } EShExecutable; // // Optimization level for the compiler. // typedef enum { EShOptNoGeneration, EShOptNone, EShOptSimple, // Optimizations that can be done quickly EShOptFull, // Optimizations that will take more time LAST_ELEMENT_MARKER(EshOptLevelCount), } EShOptimizationLevel; // // Texture and Sampler transformation mode. // typedef enum { EShTexSampTransKeep, // keep textures and samplers as is (default) EShTexSampTransUpgradeTextureRemoveSampler, // change texture w/o embeded sampler into sampled texture and throw away all samplers LAST_ELEMENT_MARKER(EShTexSampTransCount), } EShTextureSamplerTransformMode; // // Message choices for what errors and warnings are given. // enum EShMessages : unsigned { EShMsgDefault = 0, // default is to give all required errors and extra warnings EShMsgRelaxedErrors = (1 << 0), // be liberal in accepting input EShMsgSuppressWarnings = (1 << 1), // suppress all warnings, except those required by the specification EShMsgAST = (1 << 2), // print the AST intermediate representation EShMsgSpvRules = (1 << 3), // issue messages for SPIR-V generation EShMsgVulkanRules = (1 << 4), // issue messages for Vulkan-requirements of GLSL for SPIR-V EShMsgOnlyPreprocessor = (1 << 5), // only print out errors produced by the preprocessor EShMsgReadHlsl = (1 << 6), // use HLSL parsing rules and semantics EShMsgCascadingErrors = (1 << 7), // get cascading errors; risks error-recovery issues, instead of an early exit EShMsgKeepUncalled = (1 << 8), // for testing, don't eliminate uncalled functions EShMsgHlslOffsets = (1 << 9), // allow block offsets to follow HLSL rules instead of GLSL rules EShMsgDebugInfo = (1 << 10), // save debug information EShMsgHlslEnable16BitTypes = (1 << 11), // enable use of 16-bit types in SPIR-V for HLSL 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 EShMsgAbsolutePath = (1 << 16), // Output Absolute path for messages EShMsgDisplayErrorColumn = (1 << 17), // Display error message column aswell as line EShMsgLinkTimeOptimization = (1 << 18), // perform cross-stage optimizations during linking EShMsgValidateCrossStageIO = (1 << 19), // validate shader inputs have matching outputs in previous stage LAST_ELEMENT_MARKER(EShMsgCount), }; // // Options for building reflection // typedef enum { EShReflectionDefault = 0, // default is original behaviour before options were added EShReflectionStrictArraySuffix = (1 << 0), // reflection will follow stricter rules for array-of-structs suffixes EShReflectionBasicArraySuffix = (1 << 1), // arrays of basic types will be appended with [0] as in GL reflection EShReflectionIntermediateIO = (1 << 2), // reflect inputs and outputs to program, even with no vertex shader EShReflectionSeparateBuffers = (1 << 3), // buffer variables and buffer blocks are reflected separately EShReflectionAllBlockVariables = (1 << 4), // reflect all variables in blocks, even if they are inactive EShReflectionUnwrapIOBlocks = (1 << 5), // unwrap input/output blocks the same as with uniform blocks EShReflectionAllIOVariables = (1 << 6), // reflect all input/output variables, even if they are inactive EShReflectionSharedStd140SSBO = (1 << 7), // Apply std140/shared rules for ubo to ssbo EShReflectionSharedStd140UBO = (1 << 8), // Apply std140/shared rules for ubo to ssbo LAST_ELEMENT_MARKER(EShReflectionCount), } EShReflectionOptions; // // Build a table for bindings. This can be used for locating // attributes, uniforms, globals, etc., as needed. // typedef struct { const char* name; int binding; } ShBinding; typedef struct { int numBindings; ShBinding* bindings; // array of bindings } ShBindingTable; // // ShHandle held by but opaque to the driver. It is allocated, // 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. // // If handle creation fails, 0 will be returned. // typedef void* ShHandle; // // Driver calls these to create and destroy compiler/linker // objects. // GLSLANG_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int /*debugOptions unused*/); // one per shader GLSLANG_EXPORT ShHandle ShConstructLinker(const EShExecutable, int /*debugOptions unused*/); // one per shader pair GLSLANG_EXPORT ShHandle ShConstructUniformMap(); // one per uniform namespace (currently entire program object) GLSLANG_EXPORT void ShDestruct(ShHandle); // // The return value of ShCompile is boolean, non-zero indicating // success. // // The info-log should be written by ShCompile into // ShHandle, so it can answer future queries. // GLSLANG_EXPORT int ShCompile(const ShHandle, const char* const shaderStrings[], const int numStrings, const int* lengths, const EShOptimizationLevel, const TBuiltInResource* resources, int, // debugOptions unused int defaultVersion = 110, // use 100 for ES environment, overridden by #version in shader bool forwardCompatible = false, // give errors for use of deprecated features EShMessages messages = EShMsgDefault, // warnings and errors const char* fileName = nullptr ); GLSLANG_EXPORT int ShLinkExt( const ShHandle, // linker object const ShHandle h[], // compiler objects to link together const int numHandles); // // ShSetEncrpytionMethod is a place-holder for specifying // how source code is encrypted. // GLSLANG_EXPORT void ShSetEncryptionMethod(ShHandle); // // All the following return 0 if the information is not // available in the object passed down, or the object is bad. // GLSLANG_EXPORT const char* ShGetInfoLog(const ShHandle); GLSLANG_EXPORT const void* ShGetExecutable(const ShHandle); GLSLANG_EXPORT int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*); // to detect user aliasing GLSLANG_EXPORT int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*); // to force any physical mappings // // Tell the linker to never assign a vertex attribute to this list of physical attributes // GLSLANG_EXPORT int ShExcludeAttributes(const ShHandle, int *attributes, int count); // // Returns the location ID of the named uniform. // Returns -1 if error. // GLSLANG_EXPORT int ShGetUniformLocation(const ShHandle uniformMap, const char* name); #ifdef __cplusplus } // end extern "C" #endif //////////////////////////////////////////////////////////////////////////////////////////// // // Deferred-Lowering C++ Interface // ----------------------------------- // // Below is a new alternate C++ interface, which deprecates the above // opaque handle-based interface. // // The below is further designed to handle multiple compilation units per stage, where // the intermediate results, including the parse tree, are preserved until link time, // rather than the above interface which is designed to have each compilation unit // lowered at compile time. In the above model, linking occurs on the lowered results, // whereas in this model intra-stage linking can occur at the parse tree // (treeRoot in TIntermediate) level, and then a full stage can be lowered. // #include #include #include class TCompiler; class TInfoSink; namespace glslang { struct Version { int major; int minor; int patch; const char* flavor; }; GLSLANG_EXPORT Version GetVersion(); GLSLANG_EXPORT const char* GetEsslVersionString(); GLSLANG_EXPORT const char* GetGlslVersionString(); GLSLANG_EXPORT int GetKhronosToolId(); class TIntermediate; class TProgram; class TPoolAllocator; class TIoMapResolver; // Call this exactly once per process before using anything else GLSLANG_EXPORT bool InitializeProcess(); // Call once per process to tear down everything GLSLANG_EXPORT void FinalizeProcess(); // Resource type for IO resolver enum TResourceType { EResSampler, EResTexture, EResImage, EResUbo, EResSsbo, EResUav, EResCount }; enum TBlockStorageClass { EbsUniform = 0, EbsStorageBuffer, EbsPushConstant, EbsNone, // not a uniform or buffer variable EbsCount, }; // Make one TShader per shader that you will link into a program. Then // - provide the shader through setStrings() or setStringsWithLengths() // - optionally call setEnv*(), see below for more detail // - optionally use setPreamble() to set a special shader string that will be // processed before all others but won't affect the validity of #version // - optionally call addProcesses() for each setting/transform, // see comment for class TProcesses // - call parse(): source language and target environment must be selected // either by correct setting of EShMessages sent to parse(), or by // explicitly calling setEnv*() // - query the info logs // // N.B.: Does not yet support having the same TShader instance being linked into // multiple programs. // // N.B.: Destruct a linked program *before* destructing the shaders linked into it. // class GLSLANG_EXPORT TShader { public: explicit TShader(EShLanguage); virtual ~TShader(); void setStrings(const char* const* s, int n); void setStringsWithLengths( const char* const* s, const int* l, int n); void setStringsWithLengthsAndNames( const char* const* s, const int* l, const char* const* names, int n); void setPreamble(const char* s) { preamble = s; } void setEntryPoint(const char* entryPoint); void setSourceEntryPoint(const char* sourceEntryPointName); void addProcesses(const std::vector&); void setUniqueId(unsigned long long id); void setOverrideVersion(int version); void setDebugInfo(bool debugInfo); // IO resolver binding data: see comments in ShaderLang.cpp void setShiftBinding(TResourceType res, unsigned int base); void setShiftSamplerBinding(unsigned int base); // DEPRECATED: use setShiftBinding void setShiftTextureBinding(unsigned int base); // DEPRECATED: use setShiftBinding void setShiftImageBinding(unsigned int base); // DEPRECATED: use setShiftBinding void setShiftUboBinding(unsigned int base); // DEPRECATED: use setShiftBinding void setShiftUavBinding(unsigned int base); // DEPRECATED: use setShiftBinding void setShiftCbufferBinding(unsigned int base); // synonym for setShiftUboBinding void setShiftSsboBinding(unsigned int base); // DEPRECATED: use setShiftBinding void setShiftBindingForSet(TResourceType res, unsigned int base, unsigned int set); void setResourceSetBinding(const std::vector& base); void setAutoMapBindings(bool map); void setAutoMapLocations(bool map); void addUniformLocationOverride(const char* name, int loc); void setUniformLocationBase(int base); void setInvertY(bool invert); void setDxPositionW(bool dxPosW); void setEnhancedMsgs(); #ifdef ENABLE_HLSL void setHlslIoMapping(bool hlslIoMap); void setFlattenUniformArrays(bool flatten); #endif void setNoStorageFormat(bool useUnknownFormat); void setNanMinMaxClamp(bool nanMinMaxClamp); void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode); void addBlockStorageOverride(const char* nameStr, glslang::TBlockStorageClass backing); void setGlobalUniformBlockName(const char* name); void setAtomicCounterBlockName(const char* name); void setGlobalUniformSet(unsigned int set); void setGlobalUniformBinding(unsigned int binding); void setAtomicCounterBlockSet(unsigned int set); void setAtomicCounterBlockBinding(unsigned int binding); void addSourceText(const char* text, size_t len); void setSourceFile(const char* file); // For setting up the environment (cleared to nothingness in the constructor). // These must be called so that parsing is done for the right source language and // target environment, either indirectly through TranslateEnvironment() based on // EShMessages et. al., or directly by the user. // // setEnvInput: The input source language and stage. If generating code for a // specific client, the input client semantics to use and the // version of that client's input semantics to use, otherwise // use EShClientNone and version of 0, e.g. for validation mode. // Note 'version' does not describe the target environment, // just the version of the source dialect to compile under. // 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 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. // for validation mode. // // See EShTargetClientVersion for choices. // // setEnvTarget: The language to translate to when generating code, and that // language's version. // Use EShTargetNone and version of 0 if there is no client, e.g. // for validation mode. // void setEnvInput(EShSource lang, EShLanguage envStage, EShClient client, int version) { environment.input.languageFamily = lang; environment.input.stage = envStage; environment.input.dialect = client; environment.input.dialectVersion = version; } void setEnvClient(EShClient client, EShTargetClientVersion version) { environment.client.client = client; environment.client.version = version; } void setEnvTarget(EShTargetLanguage lang, EShTargetLanguageVersion version) { environment.target.language = lang; environment.target.version = version; } void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; } #ifdef ENABLE_HLSL void setEnvTargetHlslFunctionality1() { environment.target.hlslFunctionality1 = true; } bool getEnvTargetHlslFunctionality1() const { return environment.target.hlslFunctionality1; } #else bool getEnvTargetHlslFunctionality1() const { return false; } #endif void setEnvInputVulkanRulesRelaxed() { environment.input.vulkanRulesRelaxed = true; } bool getEnvInputVulkanRulesRelaxed() const { return environment.input.vulkanRulesRelaxed; } void setCompileOnly() { compileOnly = true; } bool getCompileOnly() const { return compileOnly; } // Interface to #include handlers. // // To support #include, a client of Glslang does the following: // 1. Call setStringsWithNames to set the source strings and associated // names. For example, the names could be the names of the files // containing the shader sources. // 2. Call parse with an Includer. // // When the Glslang parser encounters an #include directive, it calls // the Includer's include method with the requested include name // together with the current string name. The returned IncludeResult // contains the fully resolved name of the included source, together // with the source text that should replace the #include directive // in the source stream. After parsing that source, Glslang will // release the IncludeResult object. class Includer { public: // An IncludeResult contains the resolved name and content of a source // inclusion. struct IncludeResult { IncludeResult(const std::string& headerName, const char* const headerData, const size_t headerLength, void* userData) : headerName(headerName), headerData(headerData), headerLength(headerLength), userData(userData) { } // For a successful inclusion, the fully resolved name of the requested // include. For example, in a file system-based includer, full resolution // should convert a relative path name into an absolute path name. // For a failed inclusion, this is an empty string. const std::string headerName; // The content and byte length of the requested inclusion. The // Includer producing this IncludeResult retains ownership of the // storage. // For a failed inclusion, the header // field points to a string containing error details. const char* const headerData; const size_t headerLength; // Include resolver's context. void* userData; protected: IncludeResult& operator=(const IncludeResult&); IncludeResult(); }; // For both include methods below: // // Resolves an inclusion request by name, current source name, // and include depth. // On success, returns an IncludeResult containing the resolved name // and content of the include. // On failure, returns a nullptr, or an IncludeResult // with an empty string for the headerName and error details in the // header field. // The Includer retains ownership of the contents // of the returned IncludeResult value, and those contents must // remain valid until the releaseInclude method is called on that // IncludeResult object. // // Note "local" vs. "system" is not an "either/or": "local" is an // extra thing to do over "system". Both might get called, as per // the C++ specification. // For the "system" or <>-style includes; search the "system" paths. virtual IncludeResult* includeSystem(const char* /*headerName*/, const char* /*includerName*/, size_t /*inclusionDepth*/) { return nullptr; } // For the "local"-only aspect of a "" include. Should not search in the // "system" paths, because on returning a failure, the parser will // call includeSystem() to look in the "system" locations. virtual IncludeResult* includeLocal(const char* /*headerName*/, const char* /*includerName*/, size_t /*inclusionDepth*/) { return nullptr; } // Signals that the parser will no longer use the contents of the // specified IncludeResult. virtual void releaseInclude(IncludeResult*) = 0; virtual ~Includer() {} }; // Fail all Includer searches class ForbidIncluder : public Includer { public: virtual void releaseInclude(IncludeResult*) override { } }; bool parse( const TBuiltInResource*, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages, Includer&); bool parse(const TBuiltInResource* res, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages messages) { TShader::ForbidIncluder includer; return parse(res, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, forwardCompatible, messages, includer); } // Equivalent to parse() without a default profile and without forcing defaults. bool parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages) { return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages); } bool parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages, Includer& includer) { return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages, includer); } // NOTE: Doing just preprocessing to obtain a correct preprocessed shader string // is not an officially supported or fully working path. bool preprocess( const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages message, std::string* outputString, Includer& includer); const char* getInfoLog(); const char* getInfoDebugLog(); EShLanguage getStage() const { return stage; } TIntermediate* getIntermediate() const { return intermediate; } protected: TPoolAllocator* pool; EShLanguage stage; TCompiler* compiler; TIntermediate* intermediate; TInfoSink* infoSink; // strings and lengths follow the standard for glShaderSource: // strings is an array of numStrings pointers to string data. // lengths can be null, but if not it is an array of numStrings // integers containing the length of the associated strings. // if lengths is null or lengths[n] < 0 the associated strings[n] is // assumed to be null-terminated. // stringNames is the optional names for all the strings. If stringNames // is null, then none of the strings has name. If a certain element in // stringNames is null, then the corresponding string does not have name. const char* const* strings; // explicit code to compile, see previous comment const int* lengths; const char* const* stringNames; int numStrings; // size of the above arrays const char* preamble; // string of implicit code to compile before the explicitly provided code // a function in the source string can be renamed FROM this TO the name given in setEntryPoint. std::string sourceEntryPointName; // overrides #version in shader source or default version if #version isn't present int overrideVersion; TEnvironment environment; // Indicates this shader is meant to be used without linking bool compileOnly = false; friend class TProgram; private: TShader& operator=(TShader&); }; // // A reflection database and its interface, consistent with the OpenGL API reflection queries. // // Data needed for just a single object at the granularity exchanged by the reflection API class GLSLANG_EXPORT TObjectReflection { public: TObjectReflection(const std::string& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex); const TType* getType() const { return type; } int getBinding() const; void dump() const; static TObjectReflection badReflection() { return TObjectReflection(); } unsigned int layoutLocation() const; std::string name; int offset; int glDefineType; int size; // data size in bytes for a block, array size for a (non-block) object that's an array int index; int counterIndex; int numMembers; int arrayStride; // stride of an array variable int topLevelArraySize; // size of the top-level variable in a storage buffer member int topLevelArrayStride; // stride of the top-level variable in a storage buffer member EShLanguageMask stages; protected: TObjectReflection() : offset(-1), glDefineType(-1), size(-1), index(-1), counterIndex(-1), numMembers(-1), arrayStride(0), topLevelArrayStride(0), stages(EShLanguageMask(0)), type(nullptr) { } const TType* type; }; class TReflection; class TIoMapper; struct TVarEntryInfo; // Allows to customize the binding layout after linking. // All used uniform variables will invoke at least validateBinding. // If validateBinding returned true then the other resolveBinding, // resolveSet, and resolveLocation are invoked to resolve the binding // and descriptor set index respectively. // // Invocations happen in a particular order: // 1) all shader inputs // 2) all shader outputs // 3) all uniforms with binding and set already defined // 4) all uniforms with binding but no set defined // 5) all uniforms with set but no binding defined // 6) all uniforms with no binding and no set defined // // mapIO will use this resolver in two phases. The first // phase is a notification phase, calling the corresponging // notifiy callbacks, this phase ends with a call to endNotifications. // Phase two starts directly after the call to endNotifications // and calls all other callbacks to validate and to get the // bindings, sets, locations, component and color indices. // // NOTE: that still limit checks are applied to bindings and sets // and may result in an error. class GLSLANG_EXPORT TIoMapResolver { public: virtual ~TIoMapResolver() {} // Should return true if the resulting/current binding would be okay. // Basic idea is to do aliasing binding checks with this. virtual bool validateBinding(EShLanguage stage, TVarEntryInfo& ent) = 0; // Should return a value >= 0 if the current binding should be overridden. // Return -1 if the current binding (including no binding) should be kept. virtual int resolveBinding(EShLanguage stage, TVarEntryInfo& ent) = 0; // Should return a value >= 0 if the current set should be overridden. // Return -1 if the current set (including no set) should be kept. virtual int resolveSet(EShLanguage stage, TVarEntryInfo& ent) = 0; // Should return a value >= 0 if the current location should be overridden. // Return -1 if the current location (including no location) should be kept. virtual int resolveUniformLocation(EShLanguage stage, TVarEntryInfo& ent) = 0; // Should return true if the resulting/current setup would be okay. // Basic idea is to do aliasing checks and reject invalid semantic names. virtual bool validateInOut(EShLanguage stage, TVarEntryInfo& ent) = 0; // Should return a value >= 0 if the current location should be overridden. // Return -1 if the current location (including no location) should be kept. virtual int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) = 0; // Should return a value >= 0 if the current component index should be overridden. // Return -1 if the current component index (including no index) should be kept. virtual int resolveInOutComponent(EShLanguage stage, TVarEntryInfo& ent) = 0; // Should return a value >= 0 if the current color index should be overridden. // Return -1 if the current color index (including no index) should be kept. virtual int resolveInOutIndex(EShLanguage stage, TVarEntryInfo& ent) = 0; // Notification of a uniform variable virtual void notifyBinding(EShLanguage stage, TVarEntryInfo& ent) = 0; // Notification of a in or out variable virtual void notifyInOut(EShLanguage stage, TVarEntryInfo& ent) = 0; // Called by mapIO when it starts its notify pass for the given stage virtual void beginNotifications(EShLanguage stage) = 0; // Called by mapIO when it has finished the notify pass virtual void endNotifications(EShLanguage stage) = 0; // Called by mipIO when it starts its resolve pass for the given stage virtual void beginResolve(EShLanguage stage) = 0; // Called by mapIO when it has finished the resolve pass virtual void endResolve(EShLanguage stage) = 0; // Called by mapIO when it starts its symbol collect for teh given stage virtual void beginCollect(EShLanguage stage) = 0; // Called by mapIO when it has finished the symbol collect virtual void endCollect(EShLanguage stage) = 0; // Called by TSlotCollector to resolve storage locations or bindings virtual void reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) = 0; // Called by TSlotCollector to resolve resource locations or bindings virtual void reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) = 0; // Called by mapIO.addStage to set shader stage mask to mark a stage be added to this pipeline virtual void addStage(EShLanguage stage, TIntermediate& stageIntermediate) = 0; }; // I/O mapper class TIoMapper { public: TIoMapper() {} virtual ~TIoMapper() {} // grow the reflection stage by stage bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*); bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } bool virtual setAutoPushConstantBlock(const char*, unsigned int, TLayoutPacking) { return false; } }; // Get the default GLSL IO mapper GLSLANG_EXPORT TIoMapper* GetGlslIoMapper(); // Make one TProgram per set of shaders that will get linked together. Add all // the shaders that are to be linked together. After calling shader.parse() // for all shaders, call link(). // // N.B.: Destruct a linked program *before* destructing the shaders linked into it. // class GLSLANG_EXPORT TProgram { public: TProgram(); virtual ~TProgram(); void addShader(TShader* shader) { stages[shader->stage].push_back(shader); } std::list& getShaders(EShLanguage stage) { return stages[stage]; } // Link Validation interface bool link(EShMessages); const char* getInfoLog(); const char* getInfoDebugLog(); TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; } // Reflection Interface // call first, to do liveness analysis, index mapping, etc.; returns false on failure bool buildReflection(int opts = EShReflectionDefault); unsigned getLocalSize(int dim) const; // return dim'th local size unsigned getTileShadingRateQCOM(int dim) const; // return dim'th tile shading rate QCOM int getReflectionIndex(const char *name) const; int getReflectionPipeIOIndex(const char* name, const bool inOrOut) const; int getNumUniformVariables() const; const TObjectReflection& getUniform(int index) const; int getNumUniformBlocks() const; const TObjectReflection& getUniformBlock(int index) const; int getNumPipeInputs() const; const TObjectReflection& getPipeInput(int index) const; int getNumPipeOutputs() const; const TObjectReflection& getPipeOutput(int index) const; int getNumBufferVariables() const; const TObjectReflection& getBufferVariable(int index) const; int getNumBufferBlocks() const; const TObjectReflection& getBufferBlock(int index) const; int getNumAtomicCounters() const; const TObjectReflection& getAtomicCounter(int index) const; // Legacy Reflection Interface - expressed in terms of above interface // can be used for glGetProgramiv(GL_ACTIVE_UNIFORMS) int getNumLiveUniformVariables() const { return getNumUniformVariables(); } // can be used for glGetProgramiv(GL_ACTIVE_UNIFORM_BLOCKS) int getNumLiveUniformBlocks() const { return getNumUniformBlocks(); } // can be used for glGetProgramiv(GL_ACTIVE_ATTRIBUTES) int getNumLiveAttributes() const { return getNumPipeInputs(); } // can be used for glGetUniformIndices() int getUniformIndex(const char *name) const { return getReflectionIndex(name); } int getPipeIOIndex(const char *name, const bool inOrOut) const { return getReflectionPipeIOIndex(name, inOrOut); } // can be used for "name" part of glGetActiveUniform() const char *getUniformName(int index) const { return getUniform(index).name.c_str(); } // returns the binding number int getUniformBinding(int index) const { return getUniform(index).getBinding(); } // returns Shaders Stages where a Uniform is present EShLanguageMask getUniformStages(int index) const { return getUniform(index).stages; } // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX) int getUniformBlockIndex(int index) const { return getUniform(index).index; } // can be used for glGetActiveUniformsiv(GL_UNIFORM_TYPE) int getUniformType(int index) const { return getUniform(index).glDefineType; } // can be used for glGetActiveUniformsiv(GL_UNIFORM_OFFSET) int getUniformBufferOffset(int index) const { return getUniform(index).offset; } // can be used for glGetActiveUniformsiv(GL_UNIFORM_SIZE) int getUniformArraySize(int index) const { return getUniform(index).size; } // returns a TType* const TType *getUniformTType(int index) const { return getUniform(index).getType(); } // can be used for glGetActiveUniformBlockName() const char *getUniformBlockName(int index) const { return getUniformBlock(index).name.c_str(); } // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE) int getUniformBlockSize(int index) const { return getUniformBlock(index).size; } // returns the block binding number int getUniformBlockBinding(int index) const { return getUniformBlock(index).getBinding(); } // returns block index of associated counter. int getUniformBlockCounterIndex(int index) const { return getUniformBlock(index).counterIndex; } // returns a TType* const TType *getUniformBlockTType(int index) const { return getUniformBlock(index).getType(); } // can be used for glGetActiveAttrib() const char *getAttributeName(int index) const { return getPipeInput(index).name.c_str(); } // can be used for glGetActiveAttrib() int getAttributeType(int index) const { return getPipeInput(index).glDefineType; } // returns a TType* const TType *getAttributeTType(int index) const { return getPipeInput(index).getType(); } void dumpReflection(); // Get the IO resolver to use for mapIO TIoMapResolver* getGlslIoResolver(EShLanguage stage); // I/O mapping: apply base offsets and map live unbound variables // If resolver is not provided it uses the previous approach // and respects auto assignment and offsets. bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr); protected: bool linkStage(EShLanguage, EShMessages); bool crossStageCheck(EShMessages); TPoolAllocator* pool; std::list stages[EShLangCount]; TIntermediate* intermediate[EShLangCount]; bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage TInfoSink* infoSink; TReflection* reflection; bool linked; private: TProgram(TProgram&); TProgram& operator=(TProgram&); }; } // end namespace glslang #endif // _COMPILER_INTERFACE_INCLUDED_ glslang-16.0.0/glslang/Public/resource_limits_c.h000066400000000000000000000045261506534232700217730ustar00rootroot00000000000000/** BSD 2-Clause License Copyright (c) 2020, Travis Fort All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **/ #ifndef _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ #define _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ #include "../Include/glslang_c_interface.h" #include "../Include/visibility.h" #ifdef __cplusplus extern "C" { #endif // Returns a struct that can be use to create custom resource values. GLSLANG_EXPORT glslang_resource_t* glslang_resource(void); // These are the default resources for TBuiltInResources, used for both // - parsing this string for the case where the user didn't supply one, // - dumping out a template for user construction of a config file. GLSLANG_EXPORT const glslang_resource_t* glslang_default_resource(void); // Returns the DefaultTBuiltInResource as a human-readable string. // NOTE: User is responsible for freeing this string. GLSLANG_EXPORT const char* glslang_default_resource_string(); // Decodes the resource limits from |config| to |resources|. GLSLANG_EXPORT void glslang_decode_resource_limits(glslang_resource_t* resources, char* config); #ifdef __cplusplus } #endif #endif // _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ glslang-16.0.0/glslang/ResourceLimits/000077500000000000000000000000001506534232700176345ustar00rootroot00000000000000glslang-16.0.0/glslang/ResourceLimits/ResourceLimits.cpp000066400000000000000000001031451506534232700233150ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include #include #include #include "glslang/Public/ResourceLimits.h" static TBuiltInResource Resources; static const TBuiltInResource DefaultTBuiltInResource = { /* .MaxLights = */ 32, /* .MaxClipPlanes = */ 6, /* .MaxTextureUnits = */ 32, /* .MaxTextureCoords = */ 32, /* .MaxVertexAttribs = */ 64, /* .MaxVertexUniformComponents = */ 4096, /* .MaxVaryingFloats = */ 64, /* .MaxVertexTextureImageUnits = */ 32, /* .MaxCombinedTextureImageUnits = */ 80, /* .MaxTextureImageUnits = */ 32, /* .MaxFragmentUniformComponents = */ 4096, /* .MaxDrawBuffers = */ 32, /* .MaxVertexUniformVectors = */ 128, /* .MaxVaryingVectors = */ 8, /* .MaxFragmentUniformVectors = */ 16, /* .MaxVertexOutputVectors = */ 16, /* .MaxFragmentInputVectors = */ 15, /* .MinProgramTexelOffset = */ -8, /* .MaxProgramTexelOffset = */ 7, /* .MaxClipDistances = */ 8, /* .MaxComputeWorkGroupCountX = */ 65535, /* .MaxComputeWorkGroupCountY = */ 65535, /* .MaxComputeWorkGroupCountZ = */ 65535, /* .MaxComputeWorkGroupSizeX = */ 1024, /* .MaxComputeWorkGroupSizeY = */ 1024, /* .MaxComputeWorkGroupSizeZ = */ 64, /* .MaxComputeUniformComponents = */ 1024, /* .MaxComputeTextureImageUnits = */ 16, /* .MaxComputeImageUniforms = */ 8, /* .MaxComputeAtomicCounters = */ 8, /* .MaxComputeAtomicCounterBuffers = */ 1, /* .MaxVaryingComponents = */ 60, /* .MaxVertexOutputComponents = */ 64, /* .MaxGeometryInputComponents = */ 64, /* .MaxGeometryOutputComponents = */ 128, /* .MaxFragmentInputComponents = */ 128, /* .MaxImageUnits = */ 8, /* .MaxCombinedImageUnitsAndFragmentOutputs = */ 8, /* .MaxCombinedShaderOutputResources = */ 8, /* .MaxImageSamples = */ 0, /* .MaxVertexImageUniforms = */ 0, /* .MaxTessControlImageUniforms = */ 0, /* .MaxTessEvaluationImageUniforms = */ 0, /* .MaxGeometryImageUniforms = */ 0, /* .MaxFragmentImageUniforms = */ 8, /* .MaxCombinedImageUniforms = */ 8, /* .MaxGeometryTextureImageUnits = */ 16, /* .MaxGeometryOutputVertices = */ 256, /* .MaxGeometryTotalOutputComponents = */ 1024, /* .MaxGeometryUniformComponents = */ 1024, /* .MaxGeometryVaryingComponents = */ 64, /* .MaxTessControlInputComponents = */ 128, /* .MaxTessControlOutputComponents = */ 128, /* .MaxTessControlTextureImageUnits = */ 16, /* .MaxTessControlUniformComponents = */ 1024, /* .MaxTessControlTotalOutputComponents = */ 4096, /* .MaxTessEvaluationInputComponents = */ 128, /* .MaxTessEvaluationOutputComponents = */ 128, /* .MaxTessEvaluationTextureImageUnits = */ 16, /* .MaxTessEvaluationUniformComponents = */ 1024, /* .MaxTessPatchComponents = */ 120, /* .MaxPatchVertices = */ 32, /* .MaxTessGenLevel = */ 64, /* .MaxViewports = */ 16, /* .MaxVertexAtomicCounters = */ 0, /* .MaxTessControlAtomicCounters = */ 0, /* .MaxTessEvaluationAtomicCounters = */ 0, /* .MaxGeometryAtomicCounters = */ 0, /* .MaxFragmentAtomicCounters = */ 8, /* .MaxCombinedAtomicCounters = */ 8, /* .MaxAtomicCounterBindings = */ 1, /* .MaxVertexAtomicCounterBuffers = */ 0, /* .MaxTessControlAtomicCounterBuffers = */ 0, /* .MaxTessEvaluationAtomicCounterBuffers = */ 0, /* .MaxGeometryAtomicCounterBuffers = */ 0, /* .MaxFragmentAtomicCounterBuffers = */ 1, /* .MaxCombinedAtomicCounterBuffers = */ 1, /* .MaxAtomicCounterBufferSize = */ 16384, /* .MaxTransformFeedbackBuffers = */ 4, /* .MaxTransformFeedbackInterleavedComponents = */ 64, /* .MaxCullDistances = */ 8, /* .MaxCombinedClipAndCullDistances = */ 8, /* .MaxSamples = */ 4, /* .maxMeshOutputVerticesNV = */ 256, /* .maxMeshOutputPrimitivesNV = */ 512, /* .maxMeshWorkGroupSizeX_NV = */ 32, /* .maxMeshWorkGroupSizeY_NV = */ 1, /* .maxMeshWorkGroupSizeZ_NV = */ 1, /* .maxTaskWorkGroupSizeX_NV = */ 32, /* .maxTaskWorkGroupSizeY_NV = */ 1, /* .maxTaskWorkGroupSizeZ_NV = */ 1, /* .maxMeshViewCountNV = */ 4, /* .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 = */ { /* .nonInductiveForLoops = */ 1, /* .whileLoops = */ 1, /* .doWhileLoops = */ 1, /* .generalUniformIndexing = */ 1, /* .generalAttributeMatrixVectorIndexing = */ 1, /* .generalVaryingIndexing = */ 1, /* .generalSamplerIndexing = */ 1, /* .generalVariableIndexing = */ 1, /* .generalConstantMatrixVectorIndexing = */ 1, }}; std::string GetDefaultTBuiltInResourceString() { std::ostringstream ostream; ostream << "MaxLights " << DefaultTBuiltInResource.maxLights << "\n" << "MaxClipPlanes " << DefaultTBuiltInResource.maxClipPlanes << "\n" << "MaxTextureUnits " << DefaultTBuiltInResource.maxTextureUnits << "\n" << "MaxTextureCoords " << DefaultTBuiltInResource.maxTextureCoords << "\n" << "MaxVertexAttribs " << DefaultTBuiltInResource.maxVertexAttribs << "\n" << "MaxVertexUniformComponents " << DefaultTBuiltInResource.maxVertexUniformComponents << "\n" << "MaxVaryingFloats " << DefaultTBuiltInResource.maxVaryingFloats << "\n" << "MaxVertexTextureImageUnits " << DefaultTBuiltInResource.maxVertexTextureImageUnits << "\n" << "MaxCombinedTextureImageUnits " << DefaultTBuiltInResource.maxCombinedTextureImageUnits << "\n" << "MaxTextureImageUnits " << DefaultTBuiltInResource.maxTextureImageUnits << "\n" << "MaxFragmentUniformComponents " << DefaultTBuiltInResource.maxFragmentUniformComponents << "\n" << "MaxDrawBuffers " << DefaultTBuiltInResource.maxDrawBuffers << "\n" << "MaxVertexUniformVectors " << DefaultTBuiltInResource.maxVertexUniformVectors << "\n" << "MaxVaryingVectors " << DefaultTBuiltInResource.maxVaryingVectors << "\n" << "MaxFragmentUniformVectors " << DefaultTBuiltInResource.maxFragmentUniformVectors << "\n" << "MaxVertexOutputVectors " << DefaultTBuiltInResource.maxVertexOutputVectors << "\n" << "MaxFragmentInputVectors " << DefaultTBuiltInResource.maxFragmentInputVectors << "\n" << "MinProgramTexelOffset " << DefaultTBuiltInResource.minProgramTexelOffset << "\n" << "MaxProgramTexelOffset " << DefaultTBuiltInResource.maxProgramTexelOffset << "\n" << "MaxClipDistances " << DefaultTBuiltInResource.maxClipDistances << "\n" << "MaxComputeWorkGroupCountX " << DefaultTBuiltInResource.maxComputeWorkGroupCountX << "\n" << "MaxComputeWorkGroupCountY " << DefaultTBuiltInResource.maxComputeWorkGroupCountY << "\n" << "MaxComputeWorkGroupCountZ " << DefaultTBuiltInResource.maxComputeWorkGroupCountZ << "\n" << "MaxComputeWorkGroupSizeX " << DefaultTBuiltInResource.maxComputeWorkGroupSizeX << "\n" << "MaxComputeWorkGroupSizeY " << DefaultTBuiltInResource.maxComputeWorkGroupSizeY << "\n" << "MaxComputeWorkGroupSizeZ " << DefaultTBuiltInResource.maxComputeWorkGroupSizeZ << "\n" << "MaxComputeUniformComponents " << DefaultTBuiltInResource.maxComputeUniformComponents << "\n" << "MaxComputeTextureImageUnits " << DefaultTBuiltInResource.maxComputeTextureImageUnits << "\n" << "MaxComputeImageUniforms " << DefaultTBuiltInResource.maxComputeImageUniforms << "\n" << "MaxComputeAtomicCounters " << DefaultTBuiltInResource.maxComputeAtomicCounters << "\n" << "MaxComputeAtomicCounterBuffers " << DefaultTBuiltInResource.maxComputeAtomicCounterBuffers << "\n" << "MaxVaryingComponents " << DefaultTBuiltInResource.maxVaryingComponents << "\n" << "MaxVertexOutputComponents " << DefaultTBuiltInResource.maxVertexOutputComponents << "\n" << "MaxGeometryInputComponents " << DefaultTBuiltInResource.maxGeometryInputComponents << "\n" << "MaxGeometryOutputComponents " << DefaultTBuiltInResource.maxGeometryOutputComponents << "\n" << "MaxFragmentInputComponents " << DefaultTBuiltInResource.maxFragmentInputComponents << "\n" << "MaxImageUnits " << DefaultTBuiltInResource.maxImageUnits << "\n" << "MaxCombinedImageUnitsAndFragmentOutputs " << DefaultTBuiltInResource.maxCombinedImageUnitsAndFragmentOutputs << "\n" << "MaxCombinedShaderOutputResources " << DefaultTBuiltInResource.maxCombinedShaderOutputResources << "\n" << "MaxImageSamples " << DefaultTBuiltInResource.maxImageSamples << "\n" << "MaxVertexImageUniforms " << DefaultTBuiltInResource.maxVertexImageUniforms << "\n" << "MaxTessControlImageUniforms " << DefaultTBuiltInResource.maxTessControlImageUniforms << "\n" << "MaxTessEvaluationImageUniforms " << DefaultTBuiltInResource.maxTessEvaluationImageUniforms << "\n" << "MaxGeometryImageUniforms " << DefaultTBuiltInResource.maxGeometryImageUniforms << "\n" << "MaxFragmentImageUniforms " << DefaultTBuiltInResource.maxFragmentImageUniforms << "\n" << "MaxCombinedImageUniforms " << DefaultTBuiltInResource.maxCombinedImageUniforms << "\n" << "MaxGeometryTextureImageUnits " << DefaultTBuiltInResource.maxGeometryTextureImageUnits << "\n" << "MaxGeometryOutputVertices " << DefaultTBuiltInResource.maxGeometryOutputVertices << "\n" << "MaxGeometryTotalOutputComponents " << DefaultTBuiltInResource.maxGeometryTotalOutputComponents << "\n" << "MaxGeometryUniformComponents " << DefaultTBuiltInResource.maxGeometryUniformComponents << "\n" << "MaxGeometryVaryingComponents " << DefaultTBuiltInResource.maxGeometryVaryingComponents << "\n" << "MaxTessControlInputComponents " << DefaultTBuiltInResource.maxTessControlInputComponents << "\n" << "MaxTessControlOutputComponents " << DefaultTBuiltInResource.maxTessControlOutputComponents << "\n" << "MaxTessControlTextureImageUnits " << DefaultTBuiltInResource.maxTessControlTextureImageUnits << "\n" << "MaxTessControlUniformComponents " << DefaultTBuiltInResource.maxTessControlUniformComponents << "\n" << "MaxTessControlTotalOutputComponents " << DefaultTBuiltInResource.maxTessControlTotalOutputComponents << "\n" << "MaxTessEvaluationInputComponents " << DefaultTBuiltInResource.maxTessEvaluationInputComponents << "\n" << "MaxTessEvaluationOutputComponents " << DefaultTBuiltInResource.maxTessEvaluationOutputComponents << "\n" << "MaxTessEvaluationTextureImageUnits " << DefaultTBuiltInResource.maxTessEvaluationTextureImageUnits << "\n" << "MaxTessEvaluationUniformComponents " << DefaultTBuiltInResource.maxTessEvaluationUniformComponents << "\n" << "MaxTessPatchComponents " << DefaultTBuiltInResource.maxTessPatchComponents << "\n" << "MaxPatchVertices " << DefaultTBuiltInResource.maxPatchVertices << "\n" << "MaxTessGenLevel " << DefaultTBuiltInResource.maxTessGenLevel << "\n" << "MaxViewports " << DefaultTBuiltInResource.maxViewports << "\n" << "MaxVertexAtomicCounters " << DefaultTBuiltInResource.maxVertexAtomicCounters << "\n" << "MaxTessControlAtomicCounters " << DefaultTBuiltInResource.maxTessControlAtomicCounters << "\n" << "MaxTessEvaluationAtomicCounters " << DefaultTBuiltInResource.maxTessEvaluationAtomicCounters << "\n" << "MaxGeometryAtomicCounters " << DefaultTBuiltInResource.maxGeometryAtomicCounters << "\n" << "MaxFragmentAtomicCounters " << DefaultTBuiltInResource.maxFragmentAtomicCounters << "\n" << "MaxCombinedAtomicCounters " << DefaultTBuiltInResource.maxCombinedAtomicCounters << "\n" << "MaxAtomicCounterBindings " << DefaultTBuiltInResource.maxAtomicCounterBindings << "\n" << "MaxVertexAtomicCounterBuffers " << DefaultTBuiltInResource.maxVertexAtomicCounterBuffers << "\n" << "MaxTessControlAtomicCounterBuffers " << DefaultTBuiltInResource.maxTessControlAtomicCounterBuffers << "\n" << "MaxTessEvaluationAtomicCounterBuffers " << DefaultTBuiltInResource.maxTessEvaluationAtomicCounterBuffers << "\n" << "MaxGeometryAtomicCounterBuffers " << DefaultTBuiltInResource.maxGeometryAtomicCounterBuffers << "\n" << "MaxFragmentAtomicCounterBuffers " << DefaultTBuiltInResource.maxFragmentAtomicCounterBuffers << "\n" << "MaxCombinedAtomicCounterBuffers " << DefaultTBuiltInResource.maxCombinedAtomicCounterBuffers << "\n" << "MaxAtomicCounterBufferSize " << DefaultTBuiltInResource.maxAtomicCounterBufferSize << "\n" << "MaxTransformFeedbackBuffers " << DefaultTBuiltInResource.maxTransformFeedbackBuffers << "\n" << "MaxTransformFeedbackInterleavedComponents " << DefaultTBuiltInResource.maxTransformFeedbackInterleavedComponents << "\n" << "MaxCullDistances " << DefaultTBuiltInResource.maxCullDistances << "\n" << "MaxCombinedClipAndCullDistances " << DefaultTBuiltInResource.maxCombinedClipAndCullDistances << "\n" << "MaxSamples " << DefaultTBuiltInResource.maxSamples << "\n" << "MaxMeshOutputVerticesNV " << DefaultTBuiltInResource.maxMeshOutputVerticesNV << "\n" << "MaxMeshOutputPrimitivesNV " << DefaultTBuiltInResource.maxMeshOutputPrimitivesNV << "\n" << "MaxMeshWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_NV << "\n" << "MaxMeshWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_NV << "\n" << "MaxMeshWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_NV << "\n" << "MaxTaskWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_NV << "\n" << "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" << "doWhileLoops " << DefaultTBuiltInResource.limits.doWhileLoops << "\n" << "generalUniformIndexing " << DefaultTBuiltInResource.limits.generalUniformIndexing << "\n" << "generalAttributeMatrixVectorIndexing " << DefaultTBuiltInResource.limits.generalAttributeMatrixVectorIndexing << "\n" << "generalVaryingIndexing " << DefaultTBuiltInResource.limits.generalVaryingIndexing << "\n" << "generalSamplerIndexing " << DefaultTBuiltInResource.limits.generalSamplerIndexing << "\n" << "generalVariableIndexing " << DefaultTBuiltInResource.limits.generalVariableIndexing << "\n" << "generalConstantMatrixVectorIndexing " << DefaultTBuiltInResource.limits.generalConstantMatrixVectorIndexing << "\n" ; return ostream.str(); } void DecodeResourceLimits(TBuiltInResource* resources, char* config) { static const char* delims = " \t\n\r"; size_t pos = 0; std::string configStr(config); while ((pos = configStr.find_first_not_of(delims, pos)) != std::string::npos) { const size_t token_s = pos; const size_t token_e = configStr.find_first_of(delims, token_s); const size_t value_s = configStr.find_first_not_of(delims, token_e); const size_t value_e = configStr.find_first_of(delims, value_s); pos = value_e; // Faster to use compare(), but prefering readability. const std::string tokenStr = configStr.substr(token_s, token_e-token_s); const std::string valueStr = configStr.substr(value_s, value_e-value_s); if (value_s == std::string::npos || ! (valueStr[0] == '-' || isdigit(valueStr[0]))) { printf("Error: '%s' bad .conf file. Each name must be followed by one number.\n", valueStr.c_str()); return; } const int value = std::atoi(valueStr.c_str()); if (tokenStr == "MaxLights") resources->maxLights = value; else if (tokenStr == "MaxClipPlanes") resources->maxClipPlanes = value; else if (tokenStr == "MaxTextureUnits") resources->maxTextureUnits = value; else if (tokenStr == "MaxTextureCoords") resources->maxTextureCoords = value; else if (tokenStr == "MaxVertexAttribs") resources->maxVertexAttribs = value; else if (tokenStr == "MaxVertexUniformComponents") resources->maxVertexUniformComponents = value; else if (tokenStr == "MaxVaryingFloats") resources->maxVaryingFloats = value; else if (tokenStr == "MaxVertexTextureImageUnits") resources->maxVertexTextureImageUnits = value; else if (tokenStr == "MaxCombinedTextureImageUnits") resources->maxCombinedTextureImageUnits = value; else if (tokenStr == "MaxTextureImageUnits") resources->maxTextureImageUnits = value; else if (tokenStr == "MaxFragmentUniformComponents") resources->maxFragmentUniformComponents = value; else if (tokenStr == "MaxDrawBuffers") resources->maxDrawBuffers = value; else if (tokenStr == "MaxVertexUniformVectors") resources->maxVertexUniformVectors = value; else if (tokenStr == "MaxVaryingVectors") resources->maxVaryingVectors = value; else if (tokenStr == "MaxFragmentUniformVectors") resources->maxFragmentUniformVectors = value; else if (tokenStr == "MaxVertexOutputVectors") resources->maxVertexOutputVectors = value; else if (tokenStr == "MaxFragmentInputVectors") resources->maxFragmentInputVectors = value; else if (tokenStr == "MinProgramTexelOffset") resources->minProgramTexelOffset = value; else if (tokenStr == "MaxProgramTexelOffset") resources->maxProgramTexelOffset = value; else if (tokenStr == "MaxClipDistances") resources->maxClipDistances = value; else if (tokenStr == "MaxComputeWorkGroupCountX") resources->maxComputeWorkGroupCountX = value; else if (tokenStr == "MaxComputeWorkGroupCountY") resources->maxComputeWorkGroupCountY = value; else if (tokenStr == "MaxComputeWorkGroupCountZ") resources->maxComputeWorkGroupCountZ = value; else if (tokenStr == "MaxComputeWorkGroupSizeX") resources->maxComputeWorkGroupSizeX = value; else if (tokenStr == "MaxComputeWorkGroupSizeY") resources->maxComputeWorkGroupSizeY = value; else if (tokenStr == "MaxComputeWorkGroupSizeZ") resources->maxComputeWorkGroupSizeZ = value; else if (tokenStr == "MaxComputeUniformComponents") resources->maxComputeUniformComponents = value; else if (tokenStr == "MaxComputeTextureImageUnits") resources->maxComputeTextureImageUnits = value; else if (tokenStr == "MaxComputeImageUniforms") resources->maxComputeImageUniforms = value; else if (tokenStr == "MaxComputeAtomicCounters") resources->maxComputeAtomicCounters = value; else if (tokenStr == "MaxComputeAtomicCounterBuffers") resources->maxComputeAtomicCounterBuffers = value; else if (tokenStr == "MaxVaryingComponents") resources->maxVaryingComponents = value; else if (tokenStr == "MaxVertexOutputComponents") resources->maxVertexOutputComponents = value; else if (tokenStr == "MaxGeometryInputComponents") resources->maxGeometryInputComponents = value; else if (tokenStr == "MaxGeometryOutputComponents") resources->maxGeometryOutputComponents = value; else if (tokenStr == "MaxFragmentInputComponents") resources->maxFragmentInputComponents = value; else if (tokenStr == "MaxImageUnits") resources->maxImageUnits = value; else if (tokenStr == "MaxCombinedImageUnitsAndFragmentOutputs") resources->maxCombinedImageUnitsAndFragmentOutputs = value; else if (tokenStr == "MaxCombinedShaderOutputResources") resources->maxCombinedShaderOutputResources = value; else if (tokenStr == "MaxImageSamples") resources->maxImageSamples = value; else if (tokenStr == "MaxVertexImageUniforms") resources->maxVertexImageUniforms = value; else if (tokenStr == "MaxTessControlImageUniforms") resources->maxTessControlImageUniforms = value; else if (tokenStr == "MaxTessEvaluationImageUniforms") resources->maxTessEvaluationImageUniforms = value; else if (tokenStr == "MaxGeometryImageUniforms") resources->maxGeometryImageUniforms = value; else if (tokenStr == "MaxFragmentImageUniforms") resources->maxFragmentImageUniforms = value; else if (tokenStr == "MaxCombinedImageUniforms") resources->maxCombinedImageUniforms = value; else if (tokenStr == "MaxGeometryTextureImageUnits") resources->maxGeometryTextureImageUnits = value; else if (tokenStr == "MaxGeometryOutputVertices") resources->maxGeometryOutputVertices = value; else if (tokenStr == "MaxGeometryTotalOutputComponents") resources->maxGeometryTotalOutputComponents = value; else if (tokenStr == "MaxGeometryUniformComponents") resources->maxGeometryUniformComponents = value; else if (tokenStr == "MaxGeometryVaryingComponents") resources->maxGeometryVaryingComponents = value; else if (tokenStr == "MaxTessControlInputComponents") resources->maxTessControlInputComponents = value; else if (tokenStr == "MaxTessControlOutputComponents") resources->maxTessControlOutputComponents = value; else if (tokenStr == "MaxTessControlTextureImageUnits") resources->maxTessControlTextureImageUnits = value; else if (tokenStr == "MaxTessControlUniformComponents") resources->maxTessControlUniformComponents = value; else if (tokenStr == "MaxTessControlTotalOutputComponents") resources->maxTessControlTotalOutputComponents = value; else if (tokenStr == "MaxTessEvaluationInputComponents") resources->maxTessEvaluationInputComponents = value; else if (tokenStr == "MaxTessEvaluationOutputComponents") resources->maxTessEvaluationOutputComponents = value; else if (tokenStr == "MaxTessEvaluationTextureImageUnits") resources->maxTessEvaluationTextureImageUnits = value; else if (tokenStr == "MaxTessEvaluationUniformComponents") resources->maxTessEvaluationUniformComponents = value; else if (tokenStr == "MaxTessPatchComponents") resources->maxTessPatchComponents = value; else if (tokenStr == "MaxPatchVertices") resources->maxPatchVertices = value; else if (tokenStr == "MaxTessGenLevel") resources->maxTessGenLevel = value; else if (tokenStr == "MaxViewports") resources->maxViewports = value; else if (tokenStr == "MaxVertexAtomicCounters") resources->maxVertexAtomicCounters = value; else if (tokenStr == "MaxTessControlAtomicCounters") resources->maxTessControlAtomicCounters = value; else if (tokenStr == "MaxTessEvaluationAtomicCounters") resources->maxTessEvaluationAtomicCounters = value; else if (tokenStr == "MaxGeometryAtomicCounters") resources->maxGeometryAtomicCounters = value; else if (tokenStr == "MaxFragmentAtomicCounters") resources->maxFragmentAtomicCounters = value; else if (tokenStr == "MaxCombinedAtomicCounters") resources->maxCombinedAtomicCounters = value; else if (tokenStr == "MaxAtomicCounterBindings") resources->maxAtomicCounterBindings = value; else if (tokenStr == "MaxVertexAtomicCounterBuffers") resources->maxVertexAtomicCounterBuffers = value; else if (tokenStr == "MaxTessControlAtomicCounterBuffers") resources->maxTessControlAtomicCounterBuffers = value; else if (tokenStr == "MaxTessEvaluationAtomicCounterBuffers") resources->maxTessEvaluationAtomicCounterBuffers = value; else if (tokenStr == "MaxGeometryAtomicCounterBuffers") resources->maxGeometryAtomicCounterBuffers = value; else if (tokenStr == "MaxFragmentAtomicCounterBuffers") resources->maxFragmentAtomicCounterBuffers = value; else if (tokenStr == "MaxCombinedAtomicCounterBuffers") resources->maxCombinedAtomicCounterBuffers = value; else if (tokenStr == "MaxAtomicCounterBufferSize") resources->maxAtomicCounterBufferSize = value; else if (tokenStr == "MaxTransformFeedbackBuffers") resources->maxTransformFeedbackBuffers = value; else if (tokenStr == "MaxTransformFeedbackInterleavedComponents") resources->maxTransformFeedbackInterleavedComponents = value; else if (tokenStr == "MaxCullDistances") resources->maxCullDistances = value; else if (tokenStr == "MaxCombinedClipAndCullDistances") resources->maxCombinedClipAndCullDistances = value; else if (tokenStr == "MaxSamples") resources->maxSamples = value; else if (tokenStr == "MaxMeshOutputVerticesNV") resources->maxMeshOutputVerticesNV = value; else if (tokenStr == "MaxMeshOutputPrimitivesNV") resources->maxMeshOutputPrimitivesNV = value; else if (tokenStr == "MaxMeshWorkGroupSizeX_NV") resources->maxMeshWorkGroupSizeX_NV = value; else if (tokenStr == "MaxMeshWorkGroupSizeY_NV") resources->maxMeshWorkGroupSizeY_NV = value; else if (tokenStr == "MaxMeshWorkGroupSizeZ_NV") resources->maxMeshWorkGroupSizeZ_NV = value; else if (tokenStr == "MaxTaskWorkGroupSizeX_NV") resources->maxTaskWorkGroupSizeX_NV = value; else if (tokenStr == "MaxTaskWorkGroupSizeY_NV") resources->maxTaskWorkGroupSizeY_NV = value; else if (tokenStr == "MaxTaskWorkGroupSizeZ_NV") 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 == "MaxDualSourceDrawBuffersEXT") resources->maxDualSourceDrawBuffersEXT = value; else if (tokenStr == "nonInductiveForLoops") resources->limits.nonInductiveForLoops = (value != 0); else if (tokenStr == "whileLoops") resources->limits.whileLoops = (value != 0); else if (tokenStr == "doWhileLoops") resources->limits.doWhileLoops = (value != 0); else if (tokenStr == "generalUniformIndexing") resources->limits.generalUniformIndexing = (value != 0); else if (tokenStr == "generalAttributeMatrixVectorIndexing") resources->limits.generalAttributeMatrixVectorIndexing = (value != 0); else if (tokenStr == "generalVaryingIndexing") resources->limits.generalVaryingIndexing = (value != 0); else if (tokenStr == "generalSamplerIndexing") resources->limits.generalSamplerIndexing = (value != 0); else if (tokenStr == "generalVariableIndexing") resources->limits.generalVariableIndexing = (value != 0); else if (tokenStr == "generalConstantMatrixVectorIndexing") resources->limits.generalConstantMatrixVectorIndexing = (value != 0); else printf("Warning: unrecognized limit (%s) in configuration file.\n", tokenStr.c_str()); } } TBuiltInResource* GetResources() { return &Resources; } const TBuiltInResource* GetDefaultResources() { return &DefaultTBuiltInResource; } glslang-16.0.0/glslang/ResourceLimits/resource_limits_c.cpp000066400000000000000000000041411506534232700240520ustar00rootroot00000000000000/** BSD 2-Clause License Copyright (c) 2020, Travis Fort All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **/ #include "glslang/Public/resource_limits_c.h" #include "glslang/Public/ResourceLimits.h" #include #include #include glslang_resource_t* glslang_resource(void) { return reinterpret_cast(GetResources()); } const glslang_resource_t* glslang_default_resource(void) { return reinterpret_cast(GetDefaultResources()); } const char* glslang_default_resource_string() { std::string cpp_str = GetDefaultTBuiltInResourceString(); char* c_str = (char*)malloc(cpp_str.length() + 1); strncpy(c_str, cpp_str.c_str(), cpp_str.length() + 1); return c_str; } void glslang_decode_resource_limits(glslang_resource_t* resources, char* config) { DecodeResourceLimits(reinterpret_cast(resources), config); } glslang-16.0.0/glslang/stub.cpp000066400000000000000000000037651506534232700163570ustar00rootroot00000000000000// // Copyright (C) 2024 The Khronos Group Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #ifdef GLSLANG_IS_SHARED_LIBRARY #ifdef _WIN32 #ifdef GLSLANG_EXPORTING #define STUB_EXPORT __declspec(dllexport) #else #define STUB_EXPORT __declspec(dllimport) #endif #endif #endif // GLSLANG_IS_SHARED_LIBRARY #ifndef STUB_EXPORT #define STUB_EXPORT #endif // Force stub library to export function to preserve backcompat. // https://github.com/KhronosGroup/glslang/issues/3882 STUB_EXPORT int stub_library_function() { return 0; } glslang-16.0.0/glslang/updateGrammar000077500000000000000000000032531506534232700174050ustar00rootroot00000000000000#!/bin/sh # Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp glslang-16.0.0/gtests/000077500000000000000000000000001506534232700145455ustar00rootroot00000000000000glslang-16.0.0/gtests/AST.FromFile.cpp000066400000000000000000000250041506534232700174030ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // Copyright (C) 2022-2024 Arm Limited. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include "TestFixture.h" namespace glslangtest { namespace { using CompileToAstTest = GlslangTest<::testing::TestWithParam>; using CompileToAstTestNV = GlslangTest<::testing::TestWithParam>; TEST_P(CompileToAstTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::AST); } // Compiling GLSL to SPIR-V under OpenGL semantics (NV extensions enabled). TEST_P(CompileToAstTestNV, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::AST); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, CompileToAstTest, ::testing::ValuesIn(std::vector({ "sample.frag", "sample.vert", "decls.frag", "specExamples.frag", "specExamples.vert", "versionsClean.frag", "versionsClean.vert", "versionsErrors.frag", "versionsErrors.vert", "100.frag", "100samplerExternal.frag", "120.vert", "120.frag", "130.vert", "130.frag", "140.vert", "140.frag", "150.vert", "150.geom", "150.frag", "precision.frag", "precision.vert", "nonSquare.vert", "matrixError.vert", "cppSimple.vert", "cppIndent.vert", "cppIntMinOverNegativeOne.frag", "cppMerge.frag", "cppNest.vert", "cppBad.vert", "cppBad2.vert", "cppBad3.vert", "cppBad4.vert", "cppBad5.vert", "cppComplexExpr.vert", "cppDeepNest.frag", "cppPassMacroName.frag", "cppRelaxSkipTokensErrors.vert", "badChars.frag", "pointCoord.frag", "array.frag", "array100.frag", "comment.frag", "300.vert", "300.frag", "300BuiltIns.frag", "300layout.vert", "300layout.frag", "300operations.frag", "300block.frag", "300samplerExternal.frag", "300samplerExternalYUV.frag", "310.comp", "310.vert", "310.geom", "310.frag", "310.tesc", "310.tese", "310implicitSizeArrayError.vert", "310.inheritMemory.frag", "310AofA.vert", "310runtimeArray.vert", "320.comp", "320.vert", "320.geom", "320.frag", "320.tesc", "320.tese", "330.frag", "330comp.frag", "constErrors.frag", "constFold.frag", "constFoldIntMin.frag", "errors.frag", "forwardRef.frag", "uint.frag", "switch.frag", "tokenLength.vert", "100Limits.vert", "100scope.vert", "110scope.vert", "300scope.vert", "400.frag", "400.vert", "410.vert", "420.comp", "420.frag", "420.vert", "420.geom", "420_size_gl_in.geom", "430scope.vert", "lineContinuation100.vert", "lineContinuation.vert", "numeral.frag", "400.geom", "400.tesc", "400.tese", "410.tesc", "420.tesc", "420.tese", "410.geom", "430.vert", "430.comp", "430AofA.frag", "435.vert", "440.vert", "440.frag", "450.vert", "450.geom", "450.tesc", "450.tese", "450.frag", "450.comp", "460.frag", "460.vert", "dce.frag", "atomic_uint.frag", "implicitInnerAtomicUint.frag", "aggOps.frag", "always-discard.frag", "always-discard2.frag", "boolinput.error.frag", "booloutput.error.vert", "conditionalDiscard.frag", "conversion.frag", "dataOut.frag", "dataOutIndirect.frag", "deepRvalue.frag", "defaultArgs.comp", "depthOut.frag", "discard-dce.frag", "doWhileLoop.frag", "earlyReturnDiscard.frag", "flowControl.frag", "forLoop.frag", "functionCall.frag", "functionSemantics.frag", "length.frag", "localAggregates.frag", "loops.frag", "loopsArtificial.frag", "matrix.frag", "matrix2.frag", "mixedArrayDecls.frag", "nonuniform.frag", "newTexture.frag", "Operations.frag", "overlongLiteral.frag", "prepost.frag", "runtimeArray.vert", "simpleFunctionCall.frag", "stringToDouble.vert", "struct.error.frag", "structAssignment.frag", "structDeref.frag", "structure.frag", "swizzle.frag", "invalidSwizzle.vert", "syntaxError.frag", "test.frag", "texture.frag", "tokenPaste.vert", "types.frag", "uniformArray.frag", "variableArrayIndex.frag", "variadic.comp", "varyingArray.frag", "varyingArrayIndirect.frag", "voidFunction.frag", "whileLoop.frag", "nonVulkan.frag", "negativeArraySize.comp", "precise.tesc", "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", "glsl.450.subgroup.geom", "glsl.450.subgroup.tesc", "glsl.450.subgroup.tese", "glsl.450.subgroup.vert", "glsl.450.subgroupArithmetic.comp", "glsl.450.subgroupBasic.comp", "glsl.450.subgroupBallot.comp", "glsl.450.subgroupBallotNeg.comp", "glsl.450.subgroupClustered.comp", "glsl.450.subgroupClusteredNeg.comp", "glsl.450.subgroupPartitioned.comp", "glsl.450.subgroupRotate.comp", "glsl.450.subgroupShuffle.comp", "glsl.450.subgroupShuffleRelative.comp", "glsl.450.subgroupQuad.comp", "glsl.450.subgroupVote.comp", "glsl.460.subgroup.mesh", "glsl.460.subgroup.task", "glsl.460.subgroup.rahit", "glsl.460.subgroup.rcall", "glsl.460.subgroup.rchit", "glsl.460.subgroup.rgen", "glsl.460.subgroup.rint", "glsl.460.subgroup.rmiss", "glsl.es300.layoutOffset.error.vert", "glsl.es320.subgroup.frag", "glsl.es320.subgroup.geom", "glsl.es320.subgroup.tesc", "glsl.es320.subgroup.tese", "glsl.es320.subgroup.vert", "glsl.es320.subgroupArithmetic.comp", "glsl.es320.subgroupBasic.comp", "glsl.es320.subgroupBallot.comp", "glsl.es320.subgroupBallotNeg.comp", "glsl.es320.subgroupClustered.comp", "glsl.es320.subgroupClusteredNeg.comp", "glsl.es320.subgroupPartitioned.comp", "glsl.es320.subgroupRotate.comp", "glsl.es320.subgroupShuffle.comp", "glsl.es320.subgroupShuffleRelative.comp", "glsl.es320.subgroupQuad.comp", "glsl.es320.subgroupVote.comp", "glsl.es320.extTextureShadowLod.frag", "gl_samplemask_array_size.frag", "glsl.ext.textureShadowLod.frag", "terminate.frag", "terminate.vert", "negativeWorkGroupSize.comp", "textureoffset_sampler2darrayshadow.vert", "atomicAdd.comp", "GL_ARB_gpu_shader5.u2i.vert", "glsl.arbgpushader5.frag", "textureQueryLOD.frag", "atomicCounterARBOps.vert", "GL_EXT_shader_integer_mix.vert", "GL_ARB_draw_instanced.vert", "GL_ARB_fragment_coord_conventions.vert", "GL_ARB_bindless_texture.frag", "GL_ARB_texture_multisample.vert", "BestMatchFunction.vert", "EndStreamPrimitive.geom", "floatBitsToInt.vert", "coord_conventions.frag", "gl_FragCoord.frag", "glsl.interpOp.error.frag", "location_aliasing.tesc", "location_aliasing1.frag", "GL_EXT_draw_instanced.vert", "overflow_underflow_toinf_0.frag", "GL_EXT_texture_array.frag", "index_outside_sample_mask_range.frag", "positive_infinity.frag", "matrixCompMult.vert", "ps_uint_int.frag", "ps_sample.frag", "tes_patch.tese", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileToAstTestNV, ::testing::ValuesIn(std::vector({ "nvShaderNoperspectiveInterpolation.frag", "glsl.nvgpushader5.frag", "glsl.nvgpushader5.geom", "glsl.nvgpushader5.vert", })), FileNameAsCustomTestSuffix ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/BuiltInResource.FromFile.cpp000066400000000000000000000050571506534232700220400ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include #include "glslang/Public/ResourceLimits.h" #include "TestFixture.h" namespace glslangtest { namespace { using DefaultResourceTest = GlslangTest<::testing::Test>; TEST_F(DefaultResourceTest, FromFile) { const std::string path = GlobalTestSettings.testRoot + "/baseResults/test.conf"; std::string expectedConfig; tryLoadFile(path, "expected resource limit", &expectedConfig); const std::string realConfig = GetDefaultTBuiltInResourceString(); ASSERT_EQ(expectedConfig, realConfig); } TEST_F(DefaultResourceTest, UnrecognizedLimit) { const std::string defaultConfig = GetDefaultTBuiltInResourceString(); testing::internal::CaptureStdout(); TBuiltInResource resources; DecodeResourceLimits(&resources, const_cast(defaultConfig.c_str())); std::string output = testing::internal::GetCapturedStdout(); ASSERT_EQ(output.find("unrecognized limit"), std::string::npos); } } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/CMakeLists.txt000066400000000000000000000120021506534232700173000ustar00rootroot00000000000000# Copyright (C) 2020-2023 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. if(GLSLANG_TESTS) if(TARGET gmock) message(STATUS "Google Mock found - building tests") set(TEST_SOURCES # Framework related source files ${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Settings.h ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h # Test related source files ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Common.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp ${CMAKE_CURRENT_SOURCE_DIR}/LiveTraverser.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/StructName.cpp ${CMAKE_CURRENT_SOURCE_DIR}/SpvPatternTest.cpp ${CMAKE_CURRENT_SOURCE_DIR}/VkRelaxed.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/GlslMapIO.FromFile.cpp) add_executable(glslangtests ${TEST_SOURCES}) glslang_pch(glslangtests ${CMAKE_CURRENT_SOURCE_DIR}/pch.h) set_property(TARGET glslangtests PROPERTY FOLDER tests) glslang_set_link_args(glslangtests) set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") # Supply a default test root directory, so that manual testing # doesn't have to specify the --test-root option in the normal # case that you want to use the tests from the same source tree. target_compile_definitions(glslangtests PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}" PRIVATE GLSLANG_TEST_BUILD=1) target_include_directories(glslangtests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR} ${gmock_SOURCE_DIR}/include ${gtest_SOURCE_DIR}/include) if(ENABLE_OPT) target_link_libraries(glslangtests PRIVATE SPIRV-Tools-opt ) endif() set(LIBRARIES glslang glslang-default-resource-limits $<$,$,9.0>>:stdc++fs>) target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock) # The TARGET_RUNTIME_DLL_DIRS feature requires CMake 3.27 or greater. if(WIN32 AND BUILD_SHARED_LIBS AND CMAKE_VERSION VERSION_LESS "3.27") message(WARNING "The Windows shared library test configuration requires CMake 3.27 or greater") else() add_test(NAME glslang-gtests COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}") # Prepend paths to shared libraries. if (BUILD_SHARED_LIBS) set_tests_properties(glslang-gtests PROPERTIES ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$,\;>") endif() endif() endif() endif() glslang-16.0.0/gtests/Common.cpp000066400000000000000000000143161506534232700165060ustar00rootroot00000000000000// Copyright (c) 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include #include #include "glslang/Include/Common.h" namespace { TEST(IsPow2, Int_Negative) { EXPECT_EQ(false, glslang::IsPow2(-5)); EXPECT_EQ(false, glslang::IsPow2(-1)); EXPECT_EQ(false, glslang::IsPow2(INT_MIN)); EXPECT_EQ(false, glslang::IsPow2(int64_t(-10))); } TEST(IsPow2, Zero) { EXPECT_EQ(false, glslang::IsPow2(0)); EXPECT_EQ(false, glslang::IsPow2(0u)); EXPECT_EQ(false, glslang::IsPow2(0)); EXPECT_EQ(false, glslang::IsPow2(uint64_t(0))); EXPECT_EQ(false, glslang::IsPow2(int64_t(0))); } TEST(IsPow2, Int_Positive_PowersOf2) { EXPECT_EQ(true, glslang::IsPow2(1)); EXPECT_EQ(true, glslang::IsPow2(2)); EXPECT_EQ(true, glslang::IsPow2(4)); EXPECT_EQ(true, glslang::IsPow2(8)); EXPECT_EQ(true, glslang::IsPow2(16)); EXPECT_EQ(true, glslang::IsPow2(32768)); EXPECT_EQ(true, glslang::IsPow2(65536)); EXPECT_EQ(true, glslang::IsPow2(2147483648)); } TEST(IsPow2, Int_Positive_NonPowersOf2) { EXPECT_EQ(false, glslang::IsPow2(3)); EXPECT_EQ(false, glslang::IsPow2(5)); EXPECT_EQ(false, glslang::IsPow2(2147483647)); } TEST(IsPow2, Uint_Positive_PowersOf2) { EXPECT_EQ(true, glslang::IsPow2(1u)); EXPECT_EQ(true, glslang::IsPow2(2u)); EXPECT_EQ(true, glslang::IsPow2(4u)); EXPECT_EQ(true, glslang::IsPow2(8u)); EXPECT_EQ(true, glslang::IsPow2(16u)); EXPECT_EQ(true, glslang::IsPow2(32768u)); EXPECT_EQ(true, glslang::IsPow2(65536u)); EXPECT_EQ(true, glslang::IsPow2(2147483648u)); } TEST(IsPow2, Uint_Positive_NonPowersOf2) { EXPECT_EQ(false, glslang::IsPow2(3u)); EXPECT_EQ(false, glslang::IsPow2(5u)); EXPECT_EQ(false, glslang::IsPow2(2147483647u)); } TEST(IntLog2, Int) { EXPECT_EQ(0, glslang::IntLog2(1)); EXPECT_EQ(1, glslang::IntLog2(2)); EXPECT_EQ(2, glslang::IntLog2(4)); EXPECT_EQ(3, glslang::IntLog2(8)); EXPECT_EQ(4, glslang::IntLog2(16)); EXPECT_EQ(5, glslang::IntLog2(32)); EXPECT_EQ(6, glslang::IntLog2(64)); EXPECT_EQ(7, glslang::IntLog2(128)); EXPECT_EQ(8, glslang::IntLog2(256)); EXPECT_EQ(9, glslang::IntLog2(512)); EXPECT_EQ(10, glslang::IntLog2(1024)); EXPECT_EQ(11, glslang::IntLog2(2048)); EXPECT_EQ(12, glslang::IntLog2(0x1000)); EXPECT_EQ(13, glslang::IntLog2(0x2000)); EXPECT_EQ(14, glslang::IntLog2(0x4000)); EXPECT_EQ(15, glslang::IntLog2(0x8000)); EXPECT_EQ(16, glslang::IntLog2(0x10000)); EXPECT_EQ(17, glslang::IntLog2(0x20000)); EXPECT_EQ(18, glslang::IntLog2(0x40000)); EXPECT_EQ(19, glslang::IntLog2(0x80000)); EXPECT_EQ(20, glslang::IntLog2(0x100000)); EXPECT_EQ(21, glslang::IntLog2(0x200000)); EXPECT_EQ(22, glslang::IntLog2(0x400000)); EXPECT_EQ(23, glslang::IntLog2(0x800000)); EXPECT_EQ(24, glslang::IntLog2(0x1000000)); EXPECT_EQ(25, glslang::IntLog2(0x2000000)); EXPECT_EQ(26, glslang::IntLog2(0x4000000)); EXPECT_EQ(27, glslang::IntLog2(0x8000000)); EXPECT_EQ(28, glslang::IntLog2(0x10000000)); EXPECT_EQ(29, glslang::IntLog2(0x20000000)); EXPECT_EQ(30, glslang::IntLog2(0x40000000)); } TEST(IntLog2, Uint) { EXPECT_EQ(0, glslang::IntLog2(1u)); EXPECT_EQ(1, glslang::IntLog2(2u)); EXPECT_EQ(2, glslang::IntLog2(4u)); EXPECT_EQ(3, glslang::IntLog2(8u)); EXPECT_EQ(4, glslang::IntLog2(16u)); EXPECT_EQ(5, glslang::IntLog2(32u)); EXPECT_EQ(6, glslang::IntLog2(64u)); EXPECT_EQ(7, glslang::IntLog2(128u)); EXPECT_EQ(8, glslang::IntLog2(256u)); EXPECT_EQ(9, glslang::IntLog2(512u)); EXPECT_EQ(10, glslang::IntLog2(1024u)); EXPECT_EQ(11, glslang::IntLog2(2048u)); EXPECT_EQ(12, glslang::IntLog2(0x1000u)); EXPECT_EQ(13, glslang::IntLog2(0x2000u)); EXPECT_EQ(14, glslang::IntLog2(0x4000u)); EXPECT_EQ(15, glslang::IntLog2(0x8000u)); EXPECT_EQ(16, glslang::IntLog2(0x10000u)); EXPECT_EQ(17, glslang::IntLog2(0x20000u)); EXPECT_EQ(18, glslang::IntLog2(0x40000u)); EXPECT_EQ(19, glslang::IntLog2(0x80000u)); EXPECT_EQ(20, glslang::IntLog2(0x100000u)); EXPECT_EQ(21, glslang::IntLog2(0x200000u)); EXPECT_EQ(22, glslang::IntLog2(0x400000u)); EXPECT_EQ(23, glslang::IntLog2(0x800000u)); EXPECT_EQ(24, glslang::IntLog2(0x1000000u)); EXPECT_EQ(25, glslang::IntLog2(0x2000000u)); EXPECT_EQ(26, glslang::IntLog2(0x4000000u)); EXPECT_EQ(27, glslang::IntLog2(0x8000000u)); EXPECT_EQ(28, glslang::IntLog2(0x10000000u)); EXPECT_EQ(29, glslang::IntLog2(0x20000000u)); EXPECT_EQ(30, glslang::IntLog2(0x40000000u)); EXPECT_EQ(31, glslang::IntLog2(0x80000000u)); } TEST(IntLog2, Int64) { EXPECT_EQ(0, glslang::IntLog2(int64_t(1))); EXPECT_EQ(1, glslang::IntLog2(int64_t(2))); EXPECT_EQ(2, glslang::IntLog2(int64_t(4))); EXPECT_EQ(3, glslang::IntLog2(int64_t(8))); EXPECT_EQ(30, glslang::IntLog2(int64_t(0x40000000u))); EXPECT_EQ(31, glslang::IntLog2(int64_t(0x80000000u))); EXPECT_EQ(32, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000))); EXPECT_EQ(48, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000) * int64_t(0x10000))); EXPECT_EQ(62, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000) * int64_t(0x10000) * int64_t(0x4000))); } TEST(IntLog2, Uint64) { EXPECT_EQ(0, glslang::IntLog2(uint64_t(1))); EXPECT_EQ(1, glslang::IntLog2(uint64_t(2))); EXPECT_EQ(2, glslang::IntLog2(uint64_t(4))); EXPECT_EQ(3, glslang::IntLog2(uint64_t(8))); EXPECT_EQ(30, glslang::IntLog2(uint64_t(0x40000000u))); EXPECT_EQ(31, glslang::IntLog2(uint64_t(0x80000000u))); EXPECT_EQ(32, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000))); EXPECT_EQ(48, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000))); EXPECT_EQ(62, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x4000))); EXPECT_EQ(63, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x8000))); } } // anonymous namespace glslang-16.0.0/gtests/Config.FromFile.cpp000066400000000000000000000077511506534232700201720ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "glslang/Public/ResourceLimits.h" #include "TestFixture.h" namespace glslangtest { namespace { struct TestCaseSpec { std::string input; std::string config; std::string output; EShMessages controls; }; using ConfigTest = GlslangTest<::testing::TestWithParam>; TEST_P(ConfigTest, FromFile) { TestCaseSpec testCase = GetParam(); GlslangResult result; result.validationResult = true; // Get the contents for input shader and limit configurations. std::string shaderContents, configContents; tryLoadFile(GlobalTestSettings.testRoot + "/" + testCase.input, "input", &shaderContents); tryLoadFile(GlobalTestSettings.testRoot + "/" + testCase.config, "limits config", &configContents); // Decode limit configurations. TBuiltInResource resources = {}; { const size_t len = configContents.size(); char* configChars = new char[len + 1]; memcpy(configChars, configContents.data(), len); configChars[len] = 0; DecodeResourceLimits(&resources, configChars); delete[] configChars; } // Compile the shader. glslang::TShader shader(GetShaderStage(GetSuffix(testCase.input))); compile(&shader, shaderContents, "", testCase.controls, &resources); result.shaderResults.push_back( {testCase.input, shader.getInfoLog(), shader.getInfoDebugLog()}); // Link the shader. glslang::TProgram program; program.addShader(&shader); program.link(testCase.controls); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); std::ostringstream stream; outputResultToStream(&stream, result, testCase.controls); // Check with expected results. const std::string expectedOutputFname = GlobalTestSettings.testRoot + "/baseResults/" + testCase.output; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, ConfigTest, ::testing::ValuesIn(std::vector({ {"specExamples.vert", "baseResults/test.conf", "specExamplesConf.vert.out", (EShMessages)(EShMsgAST | EShMsgCascadingErrors)}, {"100Limits.vert", "100.conf", "100LimitsConf.vert.out", EShMsgCascadingErrors}, })) ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/GlslMapIO.FromFile.cpp000066400000000000000000000371641506534232700205550ustar00rootroot00000000000000// // Copyright (C) 2016-2017 Google, Inc. // Copyright (C) 2020 The Khronos Group Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include #include #include "TestFixture.h" #include "glslang/MachineIndependent/localintermediate.h" #include "glslang/MachineIndependent/iomapper.h" #include "glslang/MachineIndependent/reflection.h" namespace glslangtest { namespace { struct IoMapData { std::vector fileNames; Semantics semantics; }; using GlslMapIOTest = GlslangTest <::testing::TestWithParam>; template std::string interfaceName(T symbol) { return symbol.getType()->getBasicType() == glslang::EbtBlock ? std::string(symbol.getType()->getTypeName().c_str()) : symbol.name; } bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) { bool success = true; // Verify IO Mapping by generating reflection for each stage individually // and comparing layout qualifiers on the results int reflectionOptions = EShReflectionDefault; //reflectionOptions |= EShReflectionStrictArraySuffix; //reflectionOptions |= EShReflectionBasicArraySuffix; reflectionOptions |= EShReflectionIntermediateIO; reflectionOptions |= EShReflectionSeparateBuffers; reflectionOptions |= EShReflectionAllBlockVariables; //reflectionOptions |= EShReflectionUnwrapIOBlocks; success &= program.buildReflection(reflectionOptions); // check that the reflection output from the individual stages all makes sense.. std::vector stageReflections; for (int s = 0; s < EShLangCount; ++s) { if (program.getIntermediate((EShLanguage)s)) { stageReflections.emplace_back((EShReflectionOptions)reflectionOptions, (EShLanguage)s, (EShLanguage)s); success &= stageReflections.back().addStage((EShLanguage)s, *program.getIntermediate((EShLanguage)s)); } } // check that input/output locations match between stages auto it = stageReflections.begin(); auto nextIt = it + 1; for (; nextIt != stageReflections.end(); it++, nextIt++) { int numOut = it->getNumPipeOutputs(); std::map pipeOut; for (int i = 0; i < numOut; i++) { const glslang::TObjectReflection& out = it->getPipeOutput(i); std::string name = interfaceName(out); pipeOut[name] = &out; } int numIn = nextIt->getNumPipeInputs(); for (int i = 0; i < numIn; i++) { auto in = nextIt->getPipeInput(i); std::string name = interfaceName(in); auto out = pipeOut.find(name); if (out != pipeOut.end()) { auto inQualifier = in.getType()->getQualifier(); auto outQualifier = out->second->getType()->getQualifier(); success &= outQualifier.layoutLocation == inQualifier.layoutLocation; } else { 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::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::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::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); } } } } } } // compare uniforms in each stage to the program { int totalUniforms = program.getNumUniformVariables(); std::map programUniforms; for (int i = 0; i < totalUniforms; i++) { const glslang::TObjectReflection& uniform = program.getUniform(i); std::string name = interfaceName(uniform); programUniforms[name] = &uniform; } it = stageReflections.begin(); for (; it != stageReflections.end(); it++) { int numUniform = it->getNumUniforms(); std::map uniforms; for (int i = 0; i < numUniform; i++) { glslang::TObjectReflection uniform = it->getUniform(i); std::string name = interfaceName(uniform); auto programUniform = programUniforms.find(name); if (programUniform != programUniforms.end()) { auto stageQualifier = uniform.getType()->getQualifier(); auto programQualifier = programUniform->second->getType()->getQualifier(); success &= stageQualifier.layoutLocation == programQualifier.layoutLocation; success &= stageQualifier.layoutBinding == programQualifier.layoutBinding; success &= stageQualifier.layoutSet == programQualifier.layoutSet; } else { success &= false; } } } } // compare uniform blocks in each stage to the program table { int totalUniforms = program.getNumUniformBlocks(); std::map programUniforms; for (int i = 0; i < totalUniforms; i++) { const glslang::TObjectReflection& uniform = program.getUniformBlock(i); std::string name = interfaceName(uniform); programUniforms[name] = &uniform; } it = stageReflections.begin(); for (; it != stageReflections.end(); it++) { int numUniform = it->getNumUniformBlocks(); std::map uniforms; for (int i = 0; i < numUniform; i++) { glslang::TObjectReflection uniform = it->getUniformBlock(i); std::string name = interfaceName(uniform); auto programUniform = programUniforms.find(name); if (programUniform != programUniforms.end()) { auto stageQualifier = uniform.getType()->getQualifier(); auto programQualifier = programUniform->second->getType()->getQualifier(); success &= stageQualifier.layoutLocation == programQualifier.layoutLocation; success &= stageQualifier.layoutBinding == programQualifier.layoutBinding; success &= stageQualifier.layoutSet == programQualifier.layoutSet; } else { success &= false; } } } } if (!success) { linkingError += "Mismatched cross-stage IO\n"; } return success; } TEST_P(GlslMapIOTest, FromFile) { const auto& fileNames = GetParam().fileNames; Semantics semantics = GetParam().semantics; const size_t fileCount = fileNames.size(); const EShMessages controls = DeriveOptions(Source::GLSL, semantics, Target::BothASTAndSpv); GlslangResult result; // Compile each input shader file. bool success = true; std::vector> shaders; for (size_t i = 0; i < fileCount; ++i) { std::string contents; tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i], "input", &contents); shaders.emplace_back( new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i])))); auto* shader = shaders.back().get(); shader->setAutoMapLocations(true); shader->setAutoMapBindings(true); if (controls & EShMsgSpvRules) { if (controls & EShMsgVulkanRules) { shader->setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl : glslang::EShSourceGlsl, shader->getStage(), glslang::EShClientVulkan, 100); shader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1); shader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0); } else { shader->setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl : glslang::EShSourceGlsl, shader->getStage(), glslang::EShClientOpenGL, 100); shader->setEnvClient(glslang::EShClientOpenGL, glslang::EShTargetOpenGL_450); shader->setEnvTarget(glslang::EshTargetSpv, glslang::EShTargetSpv_1_0); } } success &= compile(shader, contents, "", controls); result.shaderResults.push_back( { fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog() }); } // Link all of them. glslang::TProgram program; for (const auto& shader : shaders) program.addShader(shader.get()); success &= program.link(controls); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); glslang::TIoMapResolver *resolver; for (unsigned stage = 0; stage < EShLangCount; stage++) { resolver = program.getGlslIoResolver((EShLanguage)stage); if (resolver) break; } glslang::TIoMapper *ioMapper = glslang::GetGlslIoMapper(); if (success) { success &= program.mapIO(resolver, ioMapper); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); } delete ioMapper; delete resolver; success &= verifyIOMapping(result.linkingError, program); result.validationResult = success; if (success && (controls & EShMsgSpvRules)) { for (int stage = 0; stage < EShLangCount; ++stage) { if (program.getIntermediate((EShLanguage)stage)) { spv::SpvBuildLogger logger; std::vector spirv_binary; options().disableOptimizer = false; glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv_binary, &logger, &options()); std::ostringstream disassembly_stream; spv::Disassemble(disassembly_stream, spirv_binary); result.spirvWarningsErrors += logger.getAllMessages(); result.spirv += disassembly_stream.str(); result.validationResult &= !options().validate || logger.getAllMessages().empty(); } } } std::ostringstream stream; outputResultToStream(&stream, result, controls); // Check with expected results. const std::string expectedOutputFname = GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out"; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, result.spirvWarningsErrors); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, GlslMapIOTest, ::testing::ValuesIn(std::vector({ {{"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}, {{"iomap.mismatchedBufferTypes.vert", "iomap.mismatchedBufferTypes.frag"}, Semantics::OpenGL}, // vulkan semantics {{"iomap.crossStage.vk.vert", "iomap.crossStage.vk.geom", "iomap.crossStage.vk.frag" }, Semantics::Vulkan}, })) ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/HexFloat.cpp000066400000000000000000001461041506534232700167710ustar00rootroot00000000000000// Copyright (c) 2015-2016 The Khronos Group Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include #include #include #include #include #include #include #include "SPIRV/hex_float.h" namespace { using ::testing::Eq; using spvutils::BitwiseCast; using spvutils::Float16; using spvutils::FloatProxy; using spvutils::HexFloat; using spvutils::ParseNormalFloat; // In this file "encode" means converting a number into a string, // and "decode" means converting a string into a number. using HexFloatTest = ::testing::TestWithParam, std::string>>; using DecodeHexFloatTest = ::testing::TestWithParam>>; using HexDoubleTest = ::testing::TestWithParam, std::string>>; using DecodeHexDoubleTest = ::testing::TestWithParam>>; // Hex-encodes a float value. template std::string EncodeViaHexFloat(const T& value) { std::stringstream ss; ss << spvutils::HexFloat(value); return ss.str(); } // The following two tests can't be DRY because they take different parameter // types. TEST_P(HexFloatTest, EncodeCorrectly) { EXPECT_THAT(EncodeViaHexFloat(GetParam().first), Eq(GetParam().second)); } TEST_P(HexDoubleTest, EncodeCorrectly) { EXPECT_THAT(EncodeViaHexFloat(GetParam().first), Eq(GetParam().second)); } // Decodes a hex-float string. template FloatProxy Decode(const std::string& str) { spvutils::HexFloat> decoded(0.f); EXPECT_TRUE((std::stringstream(str) >> decoded).eof()); return decoded.value(); } TEST_P(HexFloatTest, DecodeCorrectly) { EXPECT_THAT(Decode(GetParam().second), Eq(GetParam().first)); } TEST_P(HexDoubleTest, DecodeCorrectly) { EXPECT_THAT(Decode(GetParam().second), Eq(GetParam().first)); } INSTANTIATE_TEST_SUITE_P( Float32Tests, HexFloatTest, ::testing::ValuesIn(std::vector, std::string>>({ {0.f, "0x0p+0"}, {1.f, "0x1p+0"}, {2.f, "0x1p+1"}, {3.f, "0x1.8p+1"}, {0.5f, "0x1p-1"}, {0.25f, "0x1p-2"}, {0.75f, "0x1.8p-1"}, {-0.f, "-0x0p+0"}, {-1.f, "-0x1p+0"}, {-0.5f, "-0x1p-1"}, {-0.25f, "-0x1p-2"}, {-0.75f, "-0x1.8p-1"}, // Larger numbers {512.f, "0x1p+9"}, {-512.f, "-0x1p+9"}, {1024.f, "0x1p+10"}, {-1024.f, "-0x1p+10"}, {1024.f + 8.f, "0x1.02p+10"}, {-1024.f - 8.f, "-0x1.02p+10"}, // Small numbers {1.0f / 512.f, "0x1p-9"}, {1.0f / -512.f, "-0x1p-9"}, {1.0f / 1024.f, "0x1p-10"}, {1.0f / -1024.f, "-0x1p-10"}, {1.0f / 1024.f + 1.0f / 8.f, "0x1.02p-3"}, {1.0f / -1024.f - 1.0f / 8.f, "-0x1.02p-3"}, // lowest non-denorm {float(ldexp(1.0f, -126)), "0x1p-126"}, {float(ldexp(-1.0f, -126)), "-0x1p-126"}, // Denormalized values {float(ldexp(1.0f, -127)), "0x1p-127"}, {float(ldexp(1.0f, -127) / 2.0f), "0x1p-128"}, {float(ldexp(1.0f, -127) / 4.0f), "0x1p-129"}, {float(ldexp(1.0f, -127) / 8.0f), "0x1p-130"}, {float(ldexp(-1.0f, -127)), "-0x1p-127"}, {float(ldexp(-1.0f, -127) / 2.0f), "-0x1p-128"}, {float(ldexp(-1.0f, -127) / 4.0f), "-0x1p-129"}, {float(ldexp(-1.0f, -127) / 8.0f), "-0x1p-130"}, {float(ldexp(1.0, -127) + (ldexp(1.0, -127) / 2.0f)), "0x1.8p-127"}, {float(ldexp(1.0, -127) / 2.0 + (ldexp(1.0, -127) / 4.0f)), "0x1.8p-128"}, }))); INSTANTIATE_TEST_SUITE_P( Float32NanTests, HexFloatTest, ::testing::ValuesIn(std::vector, std::string>>({ // Various NAN and INF cases {uint32_t(0xFF800000), "-0x1p+128"}, // -inf {uint32_t(0x7F800000), "0x1p+128"}, // inf {uint32_t(0xFFC00000), "-0x1.8p+128"}, // -nan {uint32_t(0xFF800100), "-0x1.0002p+128"}, // -nan {uint32_t(0xFF800c00), "-0x1.0018p+128"}, // -nan {uint32_t(0xFF80F000), "-0x1.01ep+128"}, // -nan {uint32_t(0xFFFFFFFF), "-0x1.fffffep+128"}, // -nan {uint32_t(0x7FC00000), "0x1.8p+128"}, // +nan {uint32_t(0x7F800100), "0x1.0002p+128"}, // +nan {uint32_t(0x7f800c00), "0x1.0018p+128"}, // +nan {uint32_t(0x7F80F000), "0x1.01ep+128"}, // +nan {uint32_t(0x7FFFFFFF), "0x1.fffffep+128"}, // +nan }))); INSTANTIATE_TEST_SUITE_P( Float64Tests, HexDoubleTest, ::testing::ValuesIn( std::vector, std::string>>({ {0., "0x0p+0"}, {1., "0x1p+0"}, {2., "0x1p+1"}, {3., "0x1.8p+1"}, {0.5, "0x1p-1"}, {0.25, "0x1p-2"}, {0.75, "0x1.8p-1"}, {-0., "-0x0p+0"}, {-1., "-0x1p+0"}, {-0.5, "-0x1p-1"}, {-0.25, "-0x1p-2"}, {-0.75, "-0x1.8p-1"}, // Larger numbers {512., "0x1p+9"}, {-512., "-0x1p+9"}, {1024., "0x1p+10"}, {-1024., "-0x1p+10"}, {1024. + 8., "0x1.02p+10"}, {-1024. - 8., "-0x1.02p+10"}, // Large outside the range of normal floats {ldexp(1.0, 128), "0x1p+128"}, {ldexp(1.0, 129), "0x1p+129"}, {ldexp(-1.0, 128), "-0x1p+128"}, {ldexp(-1.0, 129), "-0x1p+129"}, {ldexp(1.0, 128) + ldexp(1.0, 90), "0x1.0000000004p+128"}, {ldexp(1.0, 129) + ldexp(1.0, 120), "0x1.008p+129"}, {ldexp(-1.0, 128) + ldexp(1.0, 90), "-0x1.fffffffff8p+127"}, {ldexp(-1.0, 129) + ldexp(1.0, 120), "-0x1.ffp+128"}, // Small numbers {1.0 / 512., "0x1p-9"}, {1.0 / -512., "-0x1p-9"}, {1.0 / 1024., "0x1p-10"}, {1.0 / -1024., "-0x1p-10"}, {1.0 / 1024. + 1.0 / 8., "0x1.02p-3"}, {1.0 / -1024. - 1.0 / 8., "-0x1.02p-3"}, // Small outside the range of normal floats {ldexp(1.0, -128), "0x1p-128"}, {ldexp(1.0, -129), "0x1p-129"}, {ldexp(-1.0, -128), "-0x1p-128"}, {ldexp(-1.0, -129), "-0x1p-129"}, {ldexp(1.0, -128) + ldexp(1.0, -90), "0x1.0000000004p-90"}, {ldexp(1.0, -129) + ldexp(1.0, -120), "0x1.008p-120"}, {ldexp(-1.0, -128) + ldexp(1.0, -90), "0x1.fffffffff8p-91"}, {ldexp(-1.0, -129) + ldexp(1.0, -120), "0x1.ffp-121"}, // lowest non-denorm {ldexp(1.0, -1022), "0x1p-1022"}, {ldexp(-1.0, -1022), "-0x1p-1022"}, // Denormalized values {ldexp(1.0, -1023), "0x1p-1023"}, {ldexp(1.0, -1023) / 2.0, "0x1p-1024"}, {ldexp(1.0, -1023) / 4.0, "0x1p-1025"}, {ldexp(1.0, -1023) / 8.0, "0x1p-1026"}, {ldexp(-1.0, -1024), "-0x1p-1024"}, {ldexp(-1.0, -1024) / 2.0, "-0x1p-1025"}, {ldexp(-1.0, -1024) / 4.0, "-0x1p-1026"}, {ldexp(-1.0, -1024) / 8.0, "-0x1p-1027"}, {ldexp(1.0, -1023) + (ldexp(1.0, -1023) / 2.0), "0x1.8p-1023"}, {ldexp(1.0, -1023) / 2.0 + (ldexp(1.0, -1023) / 4.0), "0x1.8p-1024"}, }))); INSTANTIATE_TEST_SUITE_P( Float64NanTests, HexDoubleTest, ::testing::ValuesIn(std::vector< std::pair, std::string>>({ // Various NAN and INF cases {uint64_t(0xFFF0000000000000LL), "-0x1p+1024"}, //-inf {uint64_t(0x7FF0000000000000LL), "0x1p+1024"}, //+inf {uint64_t(0xFFF8000000000000LL), "-0x1.8p+1024"}, // -nan {uint64_t(0xFFF0F00000000000LL), "-0x1.0fp+1024"}, // -nan {uint64_t(0xFFF0000000000001LL), "-0x1.0000000000001p+1024"}, // -nan {uint64_t(0xFFF0000300000000LL), "-0x1.00003p+1024"}, // -nan {uint64_t(0xFFFFFFFFFFFFFFFFLL), "-0x1.fffffffffffffp+1024"}, // -nan {uint64_t(0x7FF8000000000000LL), "0x1.8p+1024"}, // +nan {uint64_t(0x7FF0F00000000000LL), "0x1.0fp+1024"}, // +nan {uint64_t(0x7FF0000000000001LL), "0x1.0000000000001p+1024"}, // -nan {uint64_t(0x7FF0000300000000LL), "0x1.00003p+1024"}, // -nan {uint64_t(0x7FFFFFFFFFFFFFFFLL), "0x1.fffffffffffffp+1024"}, // -nan }))); TEST(HexFloatStreamTest, OperatorLeftShiftPreservesFloatAndFill) { std::stringstream s; s << std::setw(4) << std::oct << std::setfill('x') << 8 << " " << FloatProxy(uint32_t(0xFF800100)) << " " << std::setw(4) << 9; EXPECT_THAT(s.str(), Eq(std::string("xx10 -0x1.0002p+128 xx11"))); } TEST(HexDoubleStreamTest, OperatorLeftShiftPreservesFloatAndFill) { std::stringstream s; s << std::setw(4) << std::oct << std::setfill('x') << 8 << " " << FloatProxy(uint64_t(0x7FF0F00000000000LL)) << " " << std::setw(4) << 9; EXPECT_THAT(s.str(), Eq(std::string("xx10 0x1.0fp+1024 xx11"))); } TEST_P(DecodeHexFloatTest, DecodeCorrectly) { EXPECT_THAT(Decode(GetParam().first), Eq(GetParam().second)); } TEST_P(DecodeHexDoubleTest, DecodeCorrectly) { EXPECT_THAT(Decode(GetParam().first), Eq(GetParam().second)); } INSTANTIATE_TEST_SUITE_P( Float32DecodeTests, DecodeHexFloatTest, ::testing::ValuesIn(std::vector>>({ {"0x0p+000", 0.f}, {"0x0p0", 0.f}, {"0x0p-0", 0.f}, // flush to zero cases {"0x1p-500", 0.f}, // Exponent underflows. {"-0x1p-500", -0.f}, {"0x0.00000000001p-126", 0.f}, // Fraction causes underflow. {"-0x0.0000000001p-127", -0.f}, {"-0x0.01p-142", -0.f}, // Fraction causes additional underflow. {"0x0.01p-142", 0.f}, // Some floats that do not encode the same way as they decode. {"0x2p+0", 2.f}, {"0xFFp+0", 255.f}, {"0x0.8p+0", 0.5f}, {"0x0.4p+0", 0.25f}, }))); INSTANTIATE_TEST_SUITE_P( Float32DecodeInfTests, DecodeHexFloatTest, ::testing::ValuesIn(std::vector>>({ // inf cases {"-0x1p+128", uint32_t(0xFF800000)}, // -inf {"0x32p+127", uint32_t(0x7F800000)}, // inf {"0x32p+500", uint32_t(0x7F800000)}, // inf {"-0x32p+127", uint32_t(0xFF800000)}, // -inf }))); INSTANTIATE_TEST_SUITE_P( Float64DecodeTests, DecodeHexDoubleTest, ::testing::ValuesIn( std::vector>>({ {"0x0p+000", 0.}, {"0x0p0", 0.}, {"0x0p-0", 0.}, // flush to zero cases {"0x1p-5000", 0.}, // Exponent underflows. {"-0x1p-5000", -0.}, {"0x0.0000000000000001p-1023", 0.}, // Fraction causes underflow. {"-0x0.000000000000001p-1024", -0.}, {"-0x0.01p-1090", -0.f}, // Fraction causes additional underflow. {"0x0.01p-1090", 0.}, // Some floats that do not encode the same way as they decode. {"0x2p+0", 2.}, {"0xFFp+0", 255.}, {"0x0.8p+0", 0.5}, {"0x0.4p+0", 0.25}, }))); INSTANTIATE_TEST_SUITE_P( Float64DecodeInfTests, DecodeHexDoubleTest, ::testing::ValuesIn( std::vector>>({ // inf cases {"-0x1p+1024", uint64_t(0xFFF0000000000000)}, // -inf {"0x32p+1023", uint64_t(0x7FF0000000000000)}, // inf {"0x32p+5000", uint64_t(0x7FF0000000000000)}, // inf {"-0x32p+1023", uint64_t(0xFFF0000000000000)}, // -inf }))); TEST(FloatProxy, ValidConversion) { EXPECT_THAT(FloatProxy(1.f).getAsFloat(), Eq(1.0f)); EXPECT_THAT(FloatProxy(32.f).getAsFloat(), Eq(32.0f)); EXPECT_THAT(FloatProxy(-1.f).getAsFloat(), Eq(-1.0f)); EXPECT_THAT(FloatProxy(0.f).getAsFloat(), Eq(0.0f)); EXPECT_THAT(FloatProxy(-0.f).getAsFloat(), Eq(-0.0f)); EXPECT_THAT(FloatProxy(1.2e32f).getAsFloat(), Eq(1.2e32f)); EXPECT_TRUE(std::isinf(FloatProxy(uint32_t(0xFF800000)).getAsFloat())); EXPECT_TRUE(std::isinf(FloatProxy(uint32_t(0x7F800000)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFFC00000)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF800100)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF800c00)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF80F000)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFFFFFFFF)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7FC00000)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7F800100)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7f800c00)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7F80F000)).getAsFloat())); EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7FFFFFFF)).getAsFloat())); EXPECT_THAT(FloatProxy(uint32_t(0xFF800000)).data(), Eq(0xFF800000u)); EXPECT_THAT(FloatProxy(uint32_t(0x7F800000)).data(), Eq(0x7F800000u)); EXPECT_THAT(FloatProxy(uint32_t(0xFFC00000)).data(), Eq(0xFFC00000u)); EXPECT_THAT(FloatProxy(uint32_t(0xFF800100)).data(), Eq(0xFF800100u)); EXPECT_THAT(FloatProxy(uint32_t(0xFF800c00)).data(), Eq(0xFF800c00u)); EXPECT_THAT(FloatProxy(uint32_t(0xFF80F000)).data(), Eq(0xFF80F000u)); EXPECT_THAT(FloatProxy(uint32_t(0xFFFFFFFF)).data(), Eq(0xFFFFFFFFu)); EXPECT_THAT(FloatProxy(uint32_t(0x7FC00000)).data(), Eq(0x7FC00000u)); EXPECT_THAT(FloatProxy(uint32_t(0x7F800100)).data(), Eq(0x7F800100u)); EXPECT_THAT(FloatProxy(uint32_t(0x7f800c00)).data(), Eq(0x7f800c00u)); EXPECT_THAT(FloatProxy(uint32_t(0x7F80F000)).data(), Eq(0x7F80F000u)); EXPECT_THAT(FloatProxy(uint32_t(0x7FFFFFFF)).data(), Eq(0x7FFFFFFFu)); } TEST(FloatProxy, Nan) { EXPECT_TRUE(FloatProxy(uint32_t(0xFFC00000)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0xFF800100)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0xFF800c00)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0xFF80F000)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0xFFFFFFFF)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0x7FC00000)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0x7F800100)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0x7f800c00)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0x7F80F000)).isNan()); EXPECT_TRUE(FloatProxy(uint32_t(0x7FFFFFFF)).isNan()); } TEST(FloatProxy, Negation) { EXPECT_THAT((-FloatProxy(1.f)).getAsFloat(), Eq(-1.0f)); EXPECT_THAT((-FloatProxy(0.f)).getAsFloat(), Eq(-0.0f)); EXPECT_THAT((-FloatProxy(-1.f)).getAsFloat(), Eq(1.0f)); EXPECT_THAT((-FloatProxy(-0.f)).getAsFloat(), Eq(0.0f)); EXPECT_THAT((-FloatProxy(32.f)).getAsFloat(), Eq(-32.0f)); EXPECT_THAT((-FloatProxy(-32.f)).getAsFloat(), Eq(32.0f)); EXPECT_THAT((-FloatProxy(1.2e32f)).getAsFloat(), Eq(-1.2e32f)); EXPECT_THAT((-FloatProxy(-1.2e32f)).getAsFloat(), Eq(1.2e32f)); EXPECT_THAT( (-FloatProxy(std::numeric_limits::infinity())).getAsFloat(), Eq(-std::numeric_limits::infinity())); EXPECT_THAT((-FloatProxy(-std::numeric_limits::infinity())) .getAsFloat(), Eq(std::numeric_limits::infinity())); } // Test conversion of FloatProxy values to strings. // // In previous cases, we always wrapped the FloatProxy value in a HexFloat // before conversion to a string. In the following cases, the FloatProxy // decides for itself whether to print as a regular number or as a hex float. using FloatProxyFloatTest = ::testing::TestWithParam, std::string>>; using FloatProxyDoubleTest = ::testing::TestWithParam, std::string>>; // Converts a float value to a string via a FloatProxy. template std::string EncodeViaFloatProxy(const T& value) { std::stringstream ss; ss << value; return ss.str(); } // Converts a floating point string so that the exponent prefix // is 'e', and the exponent value does not have leading zeros. // The Microsoft runtime library likes to write things like "2.5E+010". // Convert that to "2.5e+10". // We don't care what happens to strings that are not floating point // strings. std::string NormalizeExponentInFloatString(std::string in) { std::string result; // Reserve one spot for the terminating null, even when the sscanf fails. std::vector prefix(in.size() + 1); char e; char plus_or_minus; int exponent; // in base 10 if ((4 == std::sscanf(in.c_str(), "%[-+.0123456789]%c%c%d", prefix.data(), &e, &plus_or_minus, &exponent)) && (e == 'e' || e == 'E') && (plus_or_minus == '-' || plus_or_minus == '+')) { // It looks like a floating point value with exponent. std::stringstream out; out << prefix.data() << 'e' << plus_or_minus << exponent; result = out.str(); } else { result = in; } return result; } TEST(NormalizeFloat, Sample) { EXPECT_THAT(NormalizeExponentInFloatString(""), Eq("")); EXPECT_THAT(NormalizeExponentInFloatString("1e-12"), Eq("1e-12")); EXPECT_THAT(NormalizeExponentInFloatString("1E+14"), Eq("1e+14")); EXPECT_THAT(NormalizeExponentInFloatString("1e-0012"), Eq("1e-12")); EXPECT_THAT(NormalizeExponentInFloatString("1.263E+014"), Eq("1.263e+14")); } // The following two tests can't be DRY because they take different parameter // types. TEST_P(FloatProxyFloatTest, EncodeCorrectly) { EXPECT_THAT( NormalizeExponentInFloatString(EncodeViaFloatProxy(GetParam().first)), Eq(GetParam().second)); } TEST_P(FloatProxyDoubleTest, EncodeCorrectly) { EXPECT_THAT( NormalizeExponentInFloatString(EncodeViaFloatProxy(GetParam().first)), Eq(GetParam().second)); } INSTANTIATE_TEST_SUITE_P( Float32Tests, FloatProxyFloatTest, ::testing::ValuesIn(std::vector, std::string>>({ // Zero {0.f, "0"}, // Normal numbers {1.f, "1"}, {-0.25f, "-0.25"}, {1000.0f, "1000"}, // Still normal numbers, but with large magnitude exponents. {float(ldexp(1.f, 126)), "8.50706e+37"}, {float(ldexp(-1.f, -126)), "-1.17549e-38"}, // denormalized values are printed as hex floats. {float(ldexp(1.0f, -127)), "0x1p-127"}, {float(ldexp(1.5f, -128)), "0x1.8p-128"}, {float(ldexp(1.25, -129)), "0x1.4p-129"}, {float(ldexp(1.125, -130)), "0x1.2p-130"}, {float(ldexp(-1.0f, -127)), "-0x1p-127"}, {float(ldexp(-1.0f, -128)), "-0x1p-128"}, {float(ldexp(-1.0f, -129)), "-0x1p-129"}, {float(ldexp(-1.5f, -130)), "-0x1.8p-130"}, // NaNs {FloatProxy(uint32_t(0xFFC00000)), "-0x1.8p+128"}, {FloatProxy(uint32_t(0xFF800100)), "-0x1.0002p+128"}, {std::numeric_limits::infinity(), "0x1p+128"}, {-std::numeric_limits::infinity(), "-0x1p+128"}, }))); INSTANTIATE_TEST_SUITE_P( Float64Tests, FloatProxyDoubleTest, ::testing::ValuesIn( std::vector, std::string>>({ {0., "0"}, {1., "1"}, {-0.25, "-0.25"}, {1000.0, "1000"}, // Large outside the range of normal floats {ldexp(1.0, 128), "3.40282366920938e+38"}, {ldexp(1.5, 129), "1.02084710076282e+39"}, {ldexp(-1.0, 128), "-3.40282366920938e+38"}, {ldexp(-1.5, 129), "-1.02084710076282e+39"}, // Small outside the range of normal floats {ldexp(1.5, -129), "2.20405190779179e-39"}, {ldexp(-1.5, -129), "-2.20405190779179e-39"}, // lowest non-denorm {ldexp(1.0, -1022), "2.2250738585072e-308"}, {ldexp(-1.0, -1022), "-2.2250738585072e-308"}, // Denormalized values {ldexp(1.125, -1023), "0x1.2p-1023"}, {ldexp(-1.375, -1024), "-0x1.6p-1024"}, // NaNs {uint64_t(0x7FF8000000000000LL), "0x1.8p+1024"}, {uint64_t(0xFFF0F00000000000LL), "-0x1.0fp+1024"}, // Infinity {std::numeric_limits::infinity(), "0x1p+1024"}, {-std::numeric_limits::infinity(), "-0x1p+1024"}, }))); // double is used so that unbiased_exponent can be used with the output // of ldexp directly. int32_t unbiased_exponent(double f) { return spvutils::HexFloat>( static_cast(f)).getUnbiasedNormalizedExponent(); } int16_t unbiased_half_exponent(uint16_t f) { return spvutils::HexFloat>(f) .getUnbiasedNormalizedExponent(); } TEST(HexFloatOperationTest, UnbiasedExponent) { // Float cases EXPECT_EQ(0, unbiased_exponent(ldexp(1.0f, 0))); EXPECT_EQ(-32, unbiased_exponent(ldexp(1.0f, -32))); EXPECT_EQ(42, unbiased_exponent(ldexp(1.0f, 42))); EXPECT_EQ(125, unbiased_exponent(ldexp(1.0f, 125))); // Saturates to 128 EXPECT_EQ(128, unbiased_exponent(ldexp(1.0f, 256))); EXPECT_EQ(-100, unbiased_exponent(ldexp(1.0f, -100))); EXPECT_EQ(-127, unbiased_exponent(ldexp(1.0f, -127))); // First denorm EXPECT_EQ(-128, unbiased_exponent(ldexp(1.0f, -128))); EXPECT_EQ(-129, unbiased_exponent(ldexp(1.0f, -129))); EXPECT_EQ(-140, unbiased_exponent(ldexp(1.0f, -140))); // Smallest representable number EXPECT_EQ(-126 - 23, unbiased_exponent(ldexp(1.0f, -126 - 23))); // Should get rounded to 0 first. EXPECT_EQ(0, unbiased_exponent(ldexp(1.0f, -127 - 23))); // Float16 cases // The exponent is represented in the bits 0x7C00 // The offset is -15 EXPECT_EQ(0, unbiased_half_exponent(0x3C00)); EXPECT_EQ(3, unbiased_half_exponent(0x4800)); EXPECT_EQ(-1, unbiased_half_exponent(0x3800)); EXPECT_EQ(-14, unbiased_half_exponent(0x0400)); EXPECT_EQ(16, unbiased_half_exponent(0x7C00)); EXPECT_EQ(10, unbiased_half_exponent(0x6400)); // Smallest representable number EXPECT_EQ(-24, unbiased_half_exponent(0x0001)); } // Creates a float that is the sum of 1/(2 ^ fractions[i]) for i in factions float float_fractions(const std::vector& fractions) { float f = 0; for(int32_t i: fractions) { f += std::ldexp(1.0f, -i); } return f; } // Returns the normalized significand of a HexFloat> // that was created by calling float_fractions with the input fractions, // raised to the power of exp. uint32_t normalized_significand(const std::vector& fractions, uint32_t exp) { return spvutils::HexFloat>( static_cast(ldexp(float_fractions(fractions), exp))) .getNormalizedSignificand(); } // Sets the bits from MSB to LSB of the significand part of a float. // For example 0 would set the bit 23 (counting from LSB to MSB), // and 1 would set the 22nd bit. uint32_t bits_set(const std::vector& bits) { const uint32_t top_bit = 1u << 22u; uint32_t val= 0; for(uint32_t i: bits) { val |= top_bit >> i; } return val; } // The same as bits_set but for a Float16 value instead of 32-bit floating // point. uint16_t half_bits_set(const std::vector& bits) { const uint32_t top_bit = 1u << 9u; uint32_t val= 0; for(uint32_t i: bits) { val |= top_bit >> i; } return static_cast(val); } TEST(HexFloatOperationTest, NormalizedSignificand) { // For normalized numbers (the following) it should be a simple matter // of getting rid of the top implicit bit EXPECT_EQ(bits_set({}), normalized_significand({0}, 0)); EXPECT_EQ(bits_set({0}), normalized_significand({0, 1}, 0)); EXPECT_EQ(bits_set({0, 1}), normalized_significand({0, 1, 2}, 0)); EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 0)); EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 32)); EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 126)); // For denormalized numbers we expect the normalized significand to // shift as if it were normalized. This means, in practice that the // top_most set bit will be cut off. Looks very similar to above (on purpose) EXPECT_EQ(bits_set({}), normalized_significand({0}, -127)); EXPECT_EQ(bits_set({3}), normalized_significand({0, 4}, -128)); EXPECT_EQ(bits_set({3}), normalized_significand({0, 4}, -127)); EXPECT_EQ(bits_set({}), normalized_significand({22}, -127)); EXPECT_EQ(bits_set({0}), normalized_significand({21, 22}, -127)); } // Returns the 32-bit floating point value created by // calling setFromSignUnbiasedExponentAndNormalizedSignificand // on a HexFloat> float set_from_sign(bool negative, int32_t unbiased_exponent, uint32_t significand, bool round_denorm_up) { spvutils::HexFloat> f(0.f); f.setFromSignUnbiasedExponentAndNormalizedSignificand( negative, unbiased_exponent, significand, round_denorm_up); return f.value().getAsFloat(); } TEST(HexFloatOperationTests, SetFromSignUnbiasedExponentAndNormalizedSignificand) { EXPECT_EQ(1.f, set_from_sign(false, 0, 0, false)); // Tests insertion of various denormalized numbers with and without round up. EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -149, 0, false)); EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -149, 0, true)); EXPECT_EQ(0.f, set_from_sign(false, -150, 1, false)); EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -150, 1, true)); EXPECT_EQ(ldexp(1.0f, -127), set_from_sign(false, -127, 0, false)); EXPECT_EQ(ldexp(1.0f, -128), set_from_sign(false, -128, 0, false)); EXPECT_EQ(float_fractions({0, 1, 2, 5}), set_from_sign(false, 0, bits_set({0, 1, 4}), false)); EXPECT_EQ(ldexp(float_fractions({0, 1, 2, 5}), -32), set_from_sign(false, -32, bits_set({0, 1, 4}), false)); EXPECT_EQ(ldexp(float_fractions({0, 1, 2, 5}), -128), set_from_sign(false, -128, bits_set({0, 1, 4}), false)); // The negative cases from above. EXPECT_EQ(-1.f, set_from_sign(true, 0, 0, false)); EXPECT_EQ(-ldexp(1.0, -127), set_from_sign(true, -127, 0, false)); EXPECT_EQ(-ldexp(1.0, -128), set_from_sign(true, -128, 0, false)); EXPECT_EQ(-float_fractions({0, 1, 2, 5}), set_from_sign(true, 0, bits_set({0, 1, 4}), false)); EXPECT_EQ(-ldexp(float_fractions({0, 1, 2, 5}), -32), set_from_sign(true, -32, bits_set({0, 1, 4}), false)); EXPECT_EQ(-ldexp(float_fractions({0, 1, 2, 5}), -128), set_from_sign(true, -128, bits_set({0, 1, 4}), false)); } TEST(HexFloatOperationTests, NonRounding) { // Rounding from 32-bit hex-float to 32-bit hex-float should be trivial, // except in the denorm case which is a bit more complex. using HF = spvutils::HexFloat>; bool carry_bit = false; spvutils::round_direction rounding[] = { spvutils::kRoundToZero, spvutils::kRoundToNearestEven, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity}; // Everything fits, so this should be straight-forward for (spvutils::round_direction round : rounding) { EXPECT_EQ(bits_set({}), HF(0.f).getRoundedNormalizedSignificand( round, &carry_bit)); EXPECT_FALSE(carry_bit); EXPECT_EQ(bits_set({0}), HF(float_fractions({0, 1})) .getRoundedNormalizedSignificand(round, &carry_bit)); EXPECT_FALSE(carry_bit); EXPECT_EQ(bits_set({1, 3}), HF(float_fractions({0, 2, 4})) .getRoundedNormalizedSignificand(round, &carry_bit)); EXPECT_FALSE(carry_bit); EXPECT_EQ( bits_set({0, 1, 4}), HF(static_cast(-ldexp(float_fractions({0, 1, 2, 5}), -128))) .getRoundedNormalizedSignificand(round, &carry_bit)); EXPECT_FALSE(carry_bit); EXPECT_EQ( bits_set({0, 1, 4, 22}), HF(static_cast(float_fractions({0, 1, 2, 5, 23}))) .getRoundedNormalizedSignificand(round, &carry_bit)); EXPECT_FALSE(carry_bit); } } struct RoundSignificandCase { float source_float; std::pair expected_results; spvutils::round_direction round; }; using HexFloatRoundTest = ::testing::TestWithParam; TEST_P(HexFloatRoundTest, RoundDownToFP16) { using HF = spvutils::HexFloat>; using HF16 = spvutils::HexFloat>; HF input_value(GetParam().source_float); bool carry_bit = false; EXPECT_EQ(GetParam().expected_results.first, input_value.getRoundedNormalizedSignificand( GetParam().round, &carry_bit)); EXPECT_EQ(carry_bit, GetParam().expected_results.second); } // clang-format off INSTANTIATE_TEST_SUITE_P(F32ToF16, HexFloatRoundTest, ::testing::ValuesIn(std::vector( { {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToZero}, {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToNearestEven}, {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToPositiveInfinity}, {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToNegativeInfinity}, {float_fractions({0, 1}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNearestEven}, {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToZero}, {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), spvutils::kRoundToPositiveInfinity}, {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNegativeInfinity}, {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), spvutils::kRoundToNearestEven}, {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToPositiveInfinity}, {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNegativeInfinity}, {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, // Carries {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), spvutils::kRoundToZero}, {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), spvutils::kRoundToPositiveInfinity}, {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), spvutils::kRoundToNegativeInfinity}, {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), spvutils::kRoundToNearestEven}, // Cases where original number was denorm. Note: this should have no effect // the number is pre-normalized. {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -128)), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -129)), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -131)), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -130)), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, }))); // clang-format on struct UpCastSignificandCase { uint16_t source_half; uint32_t expected_result; }; using HexFloatRoundUpSignificandTest = ::testing::TestWithParam; TEST_P(HexFloatRoundUpSignificandTest, Widening) { using HF = spvutils::HexFloat>; using HF16 = spvutils::HexFloat>; bool carry_bit = false; spvutils::round_direction rounding[] = { spvutils::kRoundToZero, spvutils::kRoundToNearestEven, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity}; // Everything fits, so everything should just be bit-shifts. for (spvutils::round_direction round : rounding) { carry_bit = false; HF16 input_value(GetParam().source_half); EXPECT_EQ( GetParam().expected_result, input_value.getRoundedNormalizedSignificand(round, &carry_bit)) << std::hex << "0x" << input_value.getRoundedNormalizedSignificand(round, &carry_bit) << " 0x" << GetParam().expected_result; EXPECT_FALSE(carry_bit); } } INSTANTIATE_TEST_SUITE_P(F16toF32, HexFloatRoundUpSignificandTest, // 0xFC00 of the source 16-bit hex value cover the sign and the exponent. // They are ignored for this test. ::testing::ValuesIn(std::vector( { {0x3F00, 0x600000}, {0x0F00, 0x600000}, {0x0F01, 0x602000}, {0x0FFF, 0x7FE000}, }))); struct DownCastTest { float source_float; uint16_t expected_half; std::vector directions; }; std::string get_round_text(spvutils::round_direction direction) { #define CASE(round_direction) \ case round_direction: \ return #round_direction switch (direction) { CASE(spvutils::kRoundToZero); CASE(spvutils::kRoundToPositiveInfinity); CASE(spvutils::kRoundToNegativeInfinity); CASE(spvutils::kRoundToNearestEven); } #undef CASE return ""; } using HexFloatFP32To16Tests = ::testing::TestWithParam; TEST_P(HexFloatFP32To16Tests, NarrowingCasts) { using HF = spvutils::HexFloat>; using HF16 = spvutils::HexFloat>; HF f(GetParam().source_float); for (auto round : GetParam().directions) { HF16 half(0); f.castTo(half, round); EXPECT_EQ(GetParam().expected_half, half.value().getAsFloat().get_value()) << get_round_text(round) << " " << std::hex << spvutils::BitwiseCast(GetParam().source_float) << " cast to: " << half.value().getAsFloat().get_value(); } } const uint16_t positive_infinity = 0x7C00; const uint16_t negative_infinity = 0xFC00; INSTANTIATE_TEST_SUITE_P(F32ToF16, HexFloatFP32To16Tests, ::testing::ValuesIn(std::vector( { // Exactly representable as half. {0.f, 0x0, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {-0.f, 0x8000, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {1.0f, 0x3C00, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {-1.0f, 0xBC00, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {float_fractions({0, 1, 10}) , 0x3E01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {-float_fractions({0, 1, 10}) , 0xBE01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {static_cast(ldexp(float_fractions({0, 1, 10}), 3)), 0x4A01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {static_cast(-ldexp(float_fractions({0, 1, 10}), 3)), 0xCA01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, // Underflow {static_cast(ldexp(1.0f, -25)), 0x0, {spvutils::kRoundToZero, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {static_cast(ldexp(1.0f, -25)), 0x1, {spvutils::kRoundToPositiveInfinity}}, {static_cast(-ldexp(1.0f, -25)), 0x8000, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNearestEven}}, {static_cast(-ldexp(1.0f, -25)), 0x8001, {spvutils::kRoundToNegativeInfinity}}, {static_cast(ldexp(1.0f, -24)), 0x1, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, // Overflow {static_cast(ldexp(1.0f, 16)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {static_cast(ldexp(1.0f, 18)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {static_cast(ldexp(1.3f, 16)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {static_cast(-ldexp(1.0f, 16)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {static_cast(-ldexp(1.0f, 18)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {static_cast(-ldexp(1.3f, 16)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, // Transfer of Infinities {std::numeric_limits::infinity(), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, {-std::numeric_limits::infinity(), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, // Nans are below because we cannot test for equality. }))); struct UpCastCase{ uint16_t source_half; float expected_float; }; using HexFloatFP16To32Tests = ::testing::TestWithParam; TEST_P(HexFloatFP16To32Tests, WideningCasts) { using HF = spvutils::HexFloat>; using HF16 = spvutils::HexFloat>; HF16 f(GetParam().source_half); spvutils::round_direction rounding[] = { spvutils::kRoundToZero, spvutils::kRoundToNearestEven, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity}; // Everything fits, so everything should just be bit-shifts. for (spvutils::round_direction round : rounding) { HF flt(0.f); f.castTo(flt, round); EXPECT_EQ(GetParam().expected_float, flt.value().getAsFloat()) << get_round_text(round) << " " << std::hex << spvutils::BitwiseCast(GetParam().source_half) << " cast to: " << flt.value().getAsFloat(); } } INSTANTIATE_TEST_SUITE_P(F16ToF32, HexFloatFP16To32Tests, ::testing::ValuesIn(std::vector( { {0x0000, 0.f}, {0x8000, -0.f}, {0x3C00, 1.0f}, {0xBC00, -1.0f}, {0x3F00, float_fractions({0, 1, 2})}, {0xBF00, -float_fractions({0, 1, 2})}, {0x3F01, float_fractions({0, 1, 2, 10})}, {0xBF01, -float_fractions({0, 1, 2, 10})}, // denorm {0x0001, static_cast(ldexp(1.0, -24))}, {0x0002, static_cast(ldexp(1.0, -23))}, {0x8001, static_cast(-ldexp(1.0, -24))}, {0x8011, static_cast(-ldexp(1.0, -20) + -ldexp(1.0, -24))}, // inf {0x7C00, std::numeric_limits::infinity()}, {0xFC00, -std::numeric_limits::infinity()}, }))); TEST(HexFloatOperationTests, NanTests) { using HF = spvutils::HexFloat>; using HF16 = spvutils::HexFloat>; spvutils::round_direction rounding[] = { spvutils::kRoundToZero, spvutils::kRoundToNearestEven, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity}; // Everything fits, so everything should just be bit-shifts. for (spvutils::round_direction round : rounding) { HF16 f16(0); HF f(0.f); HF(std::numeric_limits::quiet_NaN()).castTo(f16, round); EXPECT_TRUE(f16.value().isNan()); HF(std::numeric_limits::signaling_NaN()).castTo(f16, round); EXPECT_TRUE(f16.value().isNan()); HF16(0x7C01).castTo(f, round); EXPECT_TRUE(f.value().isNan()); HF16(0x7C11).castTo(f, round); EXPECT_TRUE(f.value().isNan()); HF16(0xFC01).castTo(f, round); EXPECT_TRUE(f.value().isNan()); HF16(0x7C10).castTo(f, round); EXPECT_TRUE(f.value().isNan()); HF16(0xFF00).castTo(f, round); EXPECT_TRUE(f.value().isNan()); } } // A test case for parsing good and bad HexFloat> literals. template struct FloatParseCase { std::string literal; bool negate_value; bool expect_success; HexFloat> expected_value; }; using ParseNormalFloatTest = ::testing::TestWithParam>; TEST_P(ParseNormalFloatTest, Samples) { std::stringstream input(GetParam().literal); HexFloat> parsed_value(0.0f); ParseNormalFloat(input, GetParam().negate_value, parsed_value); EXPECT_NE(GetParam().expect_success, input.fail()) << " literal: " << GetParam().literal << " negate: " << GetParam().negate_value; if (GetParam().expect_success) { EXPECT_THAT(parsed_value.value(), Eq(GetParam().expected_value.value())) << " literal: " << GetParam().literal << " negate: " << GetParam().negate_value; } } // Returns a FloatParseCase with expected failure. template FloatParseCase BadFloatParseCase(std::string literal, bool negate_value, T expected_value) { HexFloat> proxy_expected_value(expected_value); return FloatParseCase{literal, negate_value, false, proxy_expected_value}; } // Returns a FloatParseCase that should successfully parse to a given value. template FloatParseCase GoodFloatParseCase(std::string literal, bool negate_value, T expected_value) { HexFloat> proxy_expected_value(expected_value); return FloatParseCase{literal, negate_value, true, proxy_expected_value}; } INSTANTIATE_TEST_SUITE_P( FloatParse, ParseNormalFloatTest, ::testing::ValuesIn(std::vector>{ // Failing cases due to trivially incorrect syntax. BadFloatParseCase("abc", false, 0.0f), BadFloatParseCase("abc", true, 0.0f), // Valid cases. GoodFloatParseCase("0", false, 0.0f), GoodFloatParseCase("0.0", false, 0.0f), GoodFloatParseCase("-0.0", false, -0.0f), GoodFloatParseCase("2.0", false, 2.0f), GoodFloatParseCase("-2.0", false, -2.0f), GoodFloatParseCase("+2.0", false, 2.0f), // Cases with negate_value being true. GoodFloatParseCase("0.0", true, -0.0f), GoodFloatParseCase("2.0", true, -2.0f), // When negate_value is true, we should not accept a // leading minus or plus. BadFloatParseCase("-0.0", true, 0.0f), BadFloatParseCase("-2.0", true, 0.0f), BadFloatParseCase("+0.0", true, 0.0f), BadFloatParseCase("+2.0", true, 0.0f), // Overflow is an error for 32-bit float parsing. BadFloatParseCase("1e40", false, FLT_MAX), BadFloatParseCase("1e40", true, -FLT_MAX), BadFloatParseCase("-1e40", false, -FLT_MAX), // We can't have -1e40 and negate_value == true since // that represents an original case of "--1e40" which // is invalid. })); using ParseNormalFloat16Test = ::testing::TestWithParam>; TEST_P(ParseNormalFloat16Test, Samples) { std::stringstream input(GetParam().literal); HexFloat> parsed_value(0); ParseNormalFloat(input, GetParam().negate_value, parsed_value); EXPECT_NE(GetParam().expect_success, input.fail()) << " literal: " << GetParam().literal << " negate: " << GetParam().negate_value; if (GetParam().expect_success) { EXPECT_THAT(parsed_value.value(), Eq(GetParam().expected_value.value())) << " literal: " << GetParam().literal << " negate: " << GetParam().negate_value; } } INSTANTIATE_TEST_SUITE_P( Float16Parse, ParseNormalFloat16Test, ::testing::ValuesIn(std::vector>{ // Failing cases due to trivially incorrect syntax. BadFloatParseCase("abc", false, uint16_t{0}), BadFloatParseCase("abc", true, uint16_t{0}), // Valid cases. GoodFloatParseCase("0", false, uint16_t{0}), GoodFloatParseCase("0.0", false, uint16_t{0}), GoodFloatParseCase("-0.0", false, uint16_t{0x8000}), GoodFloatParseCase("2.0", false, uint16_t{0x4000}), GoodFloatParseCase("-2.0", false, uint16_t{0xc000}), GoodFloatParseCase("+2.0", false, uint16_t{0x4000}), // Cases with negate_value being true. GoodFloatParseCase("0.0", true, uint16_t{0x8000}), GoodFloatParseCase("2.0", true, uint16_t{0xc000}), // When negate_value is true, we should not accept a leading minus or // plus. BadFloatParseCase("-0.0", true, uint16_t{0}), BadFloatParseCase("-2.0", true, uint16_t{0}), BadFloatParseCase("+0.0", true, uint16_t{0}), BadFloatParseCase("+2.0", true, uint16_t{0}), })); // A test case for detecting infinities. template struct OverflowParseCase { std::string input; bool expect_success; T expected_value; }; using FloatProxyParseOverflowFloatTest = ::testing::TestWithParam>; TEST_P(FloatProxyParseOverflowFloatTest, Sample) { std::istringstream input(GetParam().input); HexFloat> value(0.0f); input >> value; EXPECT_NE(GetParam().expect_success, input.fail()); if (GetParam().expect_success) { EXPECT_THAT(value.value().getAsFloat(), GetParam().expected_value); } } INSTANTIATE_TEST_SUITE_P( FloatOverflow, FloatProxyParseOverflowFloatTest, ::testing::ValuesIn(std::vector>({ {"0", true, 0.0f}, {"0.0", true, 0.0f}, {"1.0", true, 1.0f}, {"1e38", true, 1e38f}, {"-1e38", true, -1e38f}, {"1e40", false, FLT_MAX}, {"-1e40", false, -FLT_MAX}, {"1e400", false, FLT_MAX}, {"-1e400", false, -FLT_MAX}, }))); using FloatProxyParseOverflowDoubleTest = ::testing::TestWithParam>; TEST_P(FloatProxyParseOverflowDoubleTest, Sample) { std::istringstream input(GetParam().input); HexFloat> value(0.0); input >> value; EXPECT_NE(GetParam().expect_success, input.fail()); if (GetParam().expect_success) { EXPECT_THAT(value.value().getAsFloat(), Eq(GetParam().expected_value)); } } INSTANTIATE_TEST_SUITE_P( DoubleOverflow, FloatProxyParseOverflowDoubleTest, ::testing::ValuesIn(std::vector>({ {"0", true, 0.0}, {"0.0", true, 0.0}, {"1.0", true, 1.0}, {"1e38", true, 1e38}, {"-1e38", true, -1e38}, {"1e40", true, 1e40}, {"-1e40", true, -1e40}, {"1e400", false, DBL_MAX}, {"-1e400", false, -DBL_MAX}, }))); using FloatProxyParseOverflowFloat16Test = ::testing::TestWithParam>; TEST_P(FloatProxyParseOverflowFloat16Test, Sample) { std::istringstream input(GetParam().input); HexFloat> value(0); input >> value; EXPECT_NE(GetParam().expect_success, input.fail()) << " literal: " << GetParam().input; if (GetParam().expect_success) { EXPECT_THAT(value.value().data(), Eq(GetParam().expected_value)) << " literal: " << GetParam().input; } } INSTANTIATE_TEST_SUITE_P( Float16Overflow, FloatProxyParseOverflowFloat16Test, ::testing::ValuesIn(std::vector>({ {"0", true, uint16_t{0}}, {"0.0", true, uint16_t{0}}, {"1.0", true, uint16_t{0x3c00}}, // Overflow for 16-bit float is an error, and returns max or // lowest value. {"1e38", false, uint16_t{0x7bff}}, {"1e40", false, uint16_t{0x7bff}}, {"1e400", false, uint16_t{0x7bff}}, {"-1e38", false, uint16_t{0xfbff}}, {"-1e40", false, uint16_t{0xfbff}}, {"-1e400", false, uint16_t{0xfbff}}, }))); TEST(FloatProxy, Max) { EXPECT_THAT(FloatProxy::max().getAsFloat().get_value(), Eq(uint16_t{0x7bff})); EXPECT_THAT(FloatProxy::max().getAsFloat(), Eq(std::numeric_limits::max())); EXPECT_THAT(FloatProxy::max().getAsFloat(), Eq(std::numeric_limits::max())); } TEST(FloatProxy, Lowest) { EXPECT_THAT(FloatProxy::lowest().getAsFloat().get_value(), Eq(uint16_t{0xfbff})); EXPECT_THAT(FloatProxy::lowest().getAsFloat(), Eq(std::numeric_limits::lowest())); EXPECT_THAT(FloatProxy::lowest().getAsFloat(), Eq(std::numeric_limits::lowest())); } // TODO(awoloszyn): Add fp16 tests and HexFloatTraits. } // anonymous namespace glslang-16.0.0/gtests/Hlsl.FromFile.cpp000066400000000000000000000622231506534232700176620ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // Copyright (C) 2016 LunarG, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include "TestFixture.h" namespace glslangtest { namespace { struct FileNameEntryPointPair { const char* fileName; const char* entryPoint; }; // We are using FileNameEntryPointPair objects as parameters for instantiating // the template, so the global FileNameAsCustomTestSuffix() won't work since // it assumes std::string as parameters. Thus, an overriding one here. std::string FileNameAsCustomTestSuffix( const ::testing::TestParamInfo& info) { std::string name = info.param.fileName; // A valid test case suffix cannot have '.' and '-' inside. std::replace(name.begin(), name.end(), '.', '_'); std::replace(name.begin(), name.end(), '-', '_'); return name; } using HlslCompileTest = GlslangTest<::testing::TestWithParam>; using HlslVulkan1_1CompileTest = GlslangTest<::testing::TestWithParam>; using HlslVulkan1_2CompileTest = GlslangTest<::testing::TestWithParam>; using HlslSpv1_6CompileTest = GlslangTest<::testing::TestWithParam>; using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam>; using HlslLegalizeTest = GlslangTest<::testing::TestWithParam>; using HlslDebugTest = GlslangTest<::testing::TestWithParam>; using HlslDX9CompatibleTest = GlslangTest<::testing::TestWithParam>; using HlslLegalDebugTest = GlslangTest<::testing::TestWithParam>; using HlslNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam>; // Compiling HLSL to pre-legalized SPIR-V under Vulkan semantics. Expected // to successfully generate both AST and SPIR-V. TEST_P(HlslCompileTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::BothASTAndSpv, true, GetParam().entryPoint); } TEST_P(HlslVulkan1_1CompileTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_3, Target::BothASTAndSpv, true, GetParam().entryPoint); } TEST_P(HlslVulkan1_2CompileTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_2, glslang::EShTargetSpv_1_4, 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, Source::HLSL, Semantics::Vulkan, Target::BothASTAndSpv, GetParam().entryPoint); } // Compiling HLSL to legal SPIR-V under Vulkan semantics. Expected to // successfully generate SPIR-V. TEST_P(HlslLegalizeTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, true, GetParam().entryPoint, "/baseLegalResults/", true); } // Compiling HLSL to pre-legalized SPIR-V. Expected to successfully generate // SPIR-V with debug instructions, particularly line info. TEST_P(HlslDebugTest, 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, true); } TEST_P(HlslDX9CompatibleTest, FromFile) { loadFileCompileAndCheckWithOptions(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::BothASTAndSpv, true, GetParam().entryPoint, "/baseResults/", EShMessages::EShMsgHlslDX9Compatible); } // Compiling HLSL to legalized SPIR-V with debug instructions. Expected to // successfully generate SPIR-V with debug instructions preserved through // legalization, particularly line info. TEST_P(HlslLegalDebugTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, true, GetParam().entryPoint, "/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, true, true); } // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslCompileTest, ::testing::ValuesIn(std::vector{ {"hlsl.amend.frag", "f1"}, {"hlsl.aliasOpaque.frag", "main"}, {"hlsl.array.frag", "PixelShaderFunction"}, {"hlsl.array.implicit-size.frag", "PixelShaderFunction"}, {"hlsl.array.multidim.frag", "main"}, {"hlsl.assoc.frag", "PixelShaderFunction"}, {"hlsl.attribute.frag", "PixelShaderFunction"}, {"hlsl.attribute.expression.comp", "main"}, {"hlsl.attributeC11.frag", "main"}, {"hlsl.attributeGlobalBuffer.frag", "main"}, {"hlsl.basic.comp", "main"}, {"hlsl.basic.geom", "main"}, {"hlsl.boolConv.vert", "main"}, {"hlsl.buffer.frag", "PixelShaderFunction"}, {"hlsl.buffer-offsets.comp", "main"}, {"hlsl.calculatelod.dx10.frag", "main"}, {"hlsl.calculatelodunclamped.dx10.frag", "main"}, {"hlsl.cast.frag", "PixelShaderFunction"}, {"hlsl.cbuffer-identifier.vert", "main"}, {"hlsl.cbuffer-offsets.comp", "main"}, {"hlsl.charLit.vert", "main"}, {"hlsl.clip.frag", "main"}, {"hlsl.clipdistance-1.frag", "main"}, {"hlsl.clipdistance-1.geom", "main"}, {"hlsl.clipdistance-1.vert", "main"}, {"hlsl.clipdistance-2.frag", "main"}, {"hlsl.clipdistance-2.geom", "main"}, {"hlsl.clipdistance-2.vert", "main"}, {"hlsl.clipdistance-3.frag", "main"}, {"hlsl.clipdistance-3.geom", "main"}, {"hlsl.clipdistance-3.vert", "main"}, {"hlsl.clipdistance-4.frag", "main"}, {"hlsl.clipdistance-4.geom", "main"}, {"hlsl.clipdistance-4.vert", "main"}, {"hlsl.clipdistance-5.frag", "main"}, {"hlsl.clipdistance-5.vert", "main"}, {"hlsl.clipdistance-6.frag", "main"}, {"hlsl.clipdistance-6.vert", "main"}, {"hlsl.clipdistance-7.frag", "main"}, {"hlsl.clipdistance-7.vert", "main"}, {"hlsl.clipdistance-8.frag", "main"}, {"hlsl.clipdistance-8.vert", "main"}, {"hlsl.clipdistance-9.frag", "main"}, {"hlsl.clipdistance-9.vert", "main"}, {"hlsl.color.hull.tesc", "main"}, {"hlsl.comparison.vec.frag", "main"}, {"hlsl.conditional.frag", "PixelShaderFunction"}, {"hlsl.constantbuffer.frag", "main"}, {"hlsl.constructArray.vert", "main"}, {"hlsl.constructexpr.frag", "main"}, {"hlsl.constructimat.frag", "main"}, {"hlsl.coverage.frag", "main"}, {"hlsl.depthGreater.frag", "PixelShaderFunction"}, {"hlsl.depthLess.frag", "PixelShaderFunction"}, {"hlsl.discard.frag", "PixelShaderFunction"}, {"hlsl.doLoop.frag", "PixelShaderFunction"}, {"hlsl.earlydepthstencil.frag", "main"}, {"hlsl.emptystructreturn.frag", "main"}, {"hlsl.emptystructreturn.vert", "main"}, {"hlsl.emptystructreturn.tesc", "main"}, {"hlsl.emptystruct.init.vert", "main"}, {"hlsl.entry-in.frag", "PixelShaderFunction"}, {"hlsl.entry-inout.vert", "main"}, {"hlsl.entry-out.frag", "PixelShaderFunction"}, {"hlsl.fraggeom.frag", "main"}, {"hlsl.float1.frag", "PixelShaderFunction"}, {"hlsl.float4.frag", "PixelShaderFunction"}, {"hlsl.flatten.return.frag", "main"}, {"hlsl.flattenOpaque.frag", "main"}, {"hlsl.flattenOpaqueInit.vert", "main"}, {"hlsl.flattenOpaqueInitMix.vert", "main"}, {"hlsl.flattenSubset.frag", "main"}, {"hlsl.flattenSubset2.frag", "main"}, {"hlsl.forLoop.frag", "PixelShaderFunction"}, {"hlsl.gather.array.dx10.frag", "main"}, {"hlsl.gather.basic.dx10.frag", "main"}, {"hlsl.gather.basic.dx10.vert", "main"}, {"hlsl.gather.offset.dx10.frag", "main"}, {"hlsl.gather.offsetarray.dx10.frag", "main"}, {"hlsl.gathercmpRGBA.offset.dx10.frag", "main"}, {"hlsl.gatherRGBA.array.dx10.frag", "main"}, {"hlsl.gatherRGBA.basic.dx10.frag", "main"}, {"hlsl.gatherRGBA.offset.dx10.frag", "main"}, {"hlsl.gatherRGBA.offsetarray.dx10.frag", "main"}, {"hlsl.getdimensions.dx10.frag", "main"}, {"hlsl.getdimensions.rw.dx10.frag", "main"}, {"hlsl.getdimensions.dx10.vert", "main"}, {"hlsl.getsampleposition.dx10.frag", "main"}, {"hlsl.global-const-init.frag", "main"}, {"hlsl.gs-hs-mix.tesc", "HSMain"}, {"hlsl.domain.1.tese", "main"}, {"hlsl.domain.2.tese", "main"}, {"hlsl.domain.3.tese", "main"}, {"hlsl.function.frag", "main"}, {"hlsl.hull.1.tesc", "main"}, {"hlsl.hull.2.tesc", "main"}, {"hlsl.hull.3.tesc", "main"}, {"hlsl.hull.4.tesc", "main"}, {"hlsl.hull.5.tesc", "main"}, {"hlsl.hull.6.tesc", "main"}, {"hlsl.hull.void.tesc", "main"}, {"hlsl.hull.ctrlpt-1.tesc", "main"}, {"hlsl.hull.ctrlpt-2.tesc", "main"}, {"hlsl.format.rwtexture.frag", "main"}, {"hlsl.groupid.comp", "main"}, {"hlsl.identifier.sample.frag", "main"}, {"hlsl.if.frag", "PixelShaderFunction"}, {"hlsl.imageload-subvec4.comp", "main"}, {"hlsl.imagefetch-subvec4.comp", "main"}, {"hlsl.implicitBool.frag", "main"}, {"hlsl.inf.vert", "main"}, {"hlsl.inoutquals.frag", "main"}, {"hlsl.inoutquals.negative.frag", "main"}, {"hlsl.init.frag", "ShaderFunction"}, {"hlsl.init2.frag", "main"}, {"hlsl.isfinite.frag", "main"}, {"hlsl.intrinsics.barriers.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.d3dcolortoubyte4.frag", "main"}, {"hlsl.intrinsics.double.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.f1632.frag", "main"}, {"hlsl.intrinsics.f3216.frag", "main"}, {"hlsl.intrinsics.frag", "main"}, {"hlsl.intrinsic.frexp.frag", "main"}, {"hlsl.intrinsics.lit.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.negative.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.negative.vert", "VertexShaderFunction"}, {"hlsl.intrinsics.promote.frag", "main"}, {"hlsl.intrinsics.promote.down.frag", "main"}, {"hlsl.intrinsics.promote.outputs.frag", "main"}, {"hlsl.layout.frag", "main"}, {"hlsl.layoutOverride.vert", "main"}, {"hlsl.load.2dms.dx10.frag", "main"}, {"hlsl.load.array.dx10.frag", "main"}, {"hlsl.load.basic.dx10.frag", "main"}, {"hlsl.load.basic.dx10.vert", "main"}, {"hlsl.load.buffer.dx10.frag", "main"}, {"hlsl.load.buffer.float.dx10.frag", "main"}, {"hlsl.load.rwbuffer.dx10.frag", "main"}, {"hlsl.load.rwtexture.dx10.frag", "main"}, {"hlsl.load.rwtexture.array.dx10.frag", "main"}, {"hlsl.load.offset.dx10.frag", "main"}, {"hlsl.load.offsetarray.dx10.frag", "main"}, {"hlsl.localStructuredBuffer.comp", "main"}, {"hlsl.logical.binary.frag", "main"}, {"hlsl.logical.binary.vec.frag", "main"}, {"hlsl.logicalConvert.frag", "main"}, {"hlsl.logical.unary.frag", "main"}, {"hlsl.loopattr.frag", "main"}, {"hlsl.matpack-pragma.frag", "main"}, {"hlsl.matpack-pragma-global.frag", "main"}, {"hlsl.mip.operator.frag", "main"}, {"hlsl.mip.negative.frag", "main"}, {"hlsl.mip.negative2.frag", "main"}, {"hlsl.namespace.frag", "main"}, {"hlsl.nonint-index.frag", "main"}, {"hlsl.matNx1.frag", "main"}, {"hlsl.matpack-1.frag", "main"}, {"hlsl.matrixSwizzle.vert", "ShaderFunction"}, {"hlsl.memberFunCall.frag", "main"}, {"hlsl.mintypes.frag", "main"}, {"hlsl.mul-truncate.frag", "main"}, {"hlsl.multiEntry.vert", "RealEntrypoint"}, {"hlsl.multiReturn.frag", "main"}, {"hlsl.multiView.frag", "main"}, {"hlsl.matrixindex.frag", "main"}, {"hlsl.nonstaticMemberFunction.frag", "main"}, {"hlsl.numericsuffixes.frag", "main"}, {"hlsl.numericsuffixes.negative.frag", "main"}, {"hlsl.numthreads.comp", "main_aux2"}, {"hlsl.overload.frag", "PixelShaderFunction"}, {"hlsl.opaque-type-bug.frag", "main"}, {"hlsl.params.default.frag", "main"}, {"hlsl.params.default.negative.frag", "main"}, {"hlsl.partialInit.frag", "PixelShaderFunction"}, {"hlsl.partialFlattenLocal.vert", "main"}, {"hlsl.PointSize.geom", "main"}, {"hlsl.PointSize.vert", "main"}, {"hlsl.pp.vert", "main"}, {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, {"hlsl.printf.comp", "main"}, {"hlsl.promote.atomic.frag", "main"}, {"hlsl.promote.binary.frag", "main"}, {"hlsl.promote.vec1.frag", "main"}, {"hlsl.promotions.frag", "main"}, {"hlsl.round.dx10.frag", "main"}, {"hlsl.rw.atomics.frag", "main"}, {"hlsl.rw.bracket.frag", "main"}, {"hlsl.rw.register.frag", "main"}, {"hlsl.rw.scalar.bracket.frag", "main"}, {"hlsl.rw.swizzle.frag", "main"}, {"hlsl.rw.vec2.bracket.frag", "main"}, {"hlsl.sample.array.dx10.frag", "main"}, {"hlsl.sample.basic.dx10.frag", "main"}, {"hlsl.sample.offset.dx10.frag", "main"}, {"hlsl.sample.offsetarray.dx10.frag", "main"}, {"hlsl.samplebias.array.dx10.frag", "main"}, {"hlsl.samplebias.basic.dx10.frag", "main"}, {"hlsl.samplebias.offset.dx10.frag", "main"}, {"hlsl.samplebias.offsetarray.dx10.frag", "main"}, {"hlsl.samplecmp.array.dx10.frag", "main"}, {"hlsl.samplecmp.basic.dx10.frag", "main"}, {"hlsl.samplecmp.dualmode.frag", "main"}, {"hlsl.samplecmp.offset.dx10.frag", "main"}, {"hlsl.samplecmp.offsetarray.dx10.frag", "main"}, {"hlsl.samplecmp.negative.frag", "main"}, {"hlsl.samplecmp.negative2.frag", "main"}, {"hlsl.samplecmplevelzero.array.dx10.frag", "main"}, {"hlsl.samplecmplevelzero.basic.dx10.frag", "main"}, {"hlsl.samplecmplevelzero.offset.dx10.frag", "main"}, {"hlsl.samplecmplevelzero.offsetarray.dx10.frag", "main"}, {"hlsl.samplegrad.array.dx10.frag", "main"}, {"hlsl.samplegrad.basic.dx10.frag", "main"}, {"hlsl.samplegrad.basic.dx10.vert", "main"}, {"hlsl.samplegrad.offset.dx10.frag", "main"}, {"hlsl.samplegrad.offsetarray.dx10.frag", "main"}, {"hlsl.samplelevel.array.dx10.frag", "main"}, {"hlsl.samplelevel.basic.dx10.frag", "main"}, {"hlsl.samplelevel.basic.dx10.vert", "main"}, {"hlsl.samplelevel.offset.dx10.frag", "main"}, {"hlsl.samplelevel.offsetarray.dx10.frag", "main"}, {"hlsl.sample.sub-vec4.dx10.frag", "main"}, {"hlsl.scalar-length.frag", "main"}, {"hlsl.scalarCast.vert", "main"}, {"hlsl.semicolons.frag", "main"}, {"hlsl.shapeConv.frag", "main"}, {"hlsl.shapeConvRet.frag", "main"}, {"hlsl.singleArgIntPromo.vert", "main"}, {"hlsl.self_cast.frag", "main"}, {"hlsl.snorm.uav.comp", "main"}, {"hlsl.specConstant.frag", "main"}, {"hlsl.staticMemberFunction.frag", "main"}, {"hlsl.staticFuncInit.frag", "main"}, {"hlsl.store.rwbyteaddressbuffer.type.comp", "main"}, {"hlsl.stringtoken.frag", "main"}, {"hlsl.string.frag", "main"}, {"hlsl.struct.split-1.vert", "main"}, {"hlsl.struct.split.array.geom", "main"}, {"hlsl.struct.split.assign.frag", "main"}, {"hlsl.struct.split.call.vert", "main"}, {"hlsl.struct.split.nested.geom", "main"}, {"hlsl.struct.split.trivial.geom", "main"}, {"hlsl.struct.split.trivial.vert", "main"}, {"hlsl.structarray.flatten.frag", "main"}, {"hlsl.structarray.flatten.geom", "main"}, {"hlsl.structbuffer.frag", "main"}, {"hlsl.structbuffer.append.frag", "main"}, {"hlsl.structbuffer.append.fn.frag", "main"}, {"hlsl.structbuffer.atomics.frag", "main"}, {"hlsl.structbuffer.byte.frag", "main"}, {"hlsl.structbuffer.coherent.frag", "main"}, {"hlsl.structbuffer.floatidx.comp", "main"}, {"hlsl.structbuffer.incdec.frag", "main"}, {"hlsl.structbuffer.fn.frag", "main"}, {"hlsl.structbuffer.fn2.comp", "main"}, {"hlsl.structbuffer.rw.frag", "main"}, {"hlsl.structbuffer.rwbyte.frag", "main"}, {"hlsl.structbuffer.rwbyte2.comp", "main"}, {"hlsl.structcopy.comp", "main"}, {"hlsl.structin.vert", "main"}, {"hlsl.structIoFourWay.frag", "main"}, {"hlsl.structStructName.frag", "main"}, {"hlsl.subpass.frag", "main"}, {"hlsl.swizzle.vec1.comp", "main"}, {"hlsl.synthesizeInput.frag", "main"}, {"hlsl.texturebuffer.frag", "main"}, {"hlsl.texture.struct.frag", "main"}, {"hlsl.texture.subvec4.frag", "main"}, {"hlsl.this.frag", "main"}, {"hlsl.intrinsics.vert", "VertexShaderFunction"}, {"hlsl.intrinsic.frexp.vert", "VertexShaderFunction"}, {"hlsl.matType.frag", "PixelShaderFunction"}, {"hlsl.matType.bool.frag", "main"}, {"hlsl.matType.int.frag", "main"}, {"hlsl.max.frag", "PixelShaderFunction"}, {"hlsl.nested-runtimeArray.frag", "main"}, {"hlsl.preprocessor.frag", "main"}, {"hlsl.precedence.frag", "PixelShaderFunction"}, {"hlsl.precedence2.frag", "PixelShaderFunction"}, {"hlsl.scalar2matrix.frag", "main"}, {"hlsl.semantic.geom", "main"}, {"hlsl.semantic.vert", "main"}, {"hlsl.semantic-1.vert", "main"}, {"hlsl.scope.frag", "PixelShaderFunction"}, {"hlsl.sin.frag", "PixelShaderFunction"}, {"hlsl.struct.frag", "PixelShaderFunction"}, {"hlsl.switch.frag", "PixelShaderFunction"}, {"hlsl.swizzle.frag", "PixelShaderFunction"}, {"hlsl.target.frag", "main"}, {"hlsl.targetStruct1.frag", "main"}, {"hlsl.targetStruct2.frag", "main"}, {"hlsl.templatetypes.frag", "PixelShaderFunction"}, {"hlsl.tristream-append.geom", "main"}, {"hlsl.tx.bracket.frag", "main"}, {"hlsl.tx.overload.frag", "main"}, {"hlsl.type.half.frag", "main"}, {"hlsl.type.identifier.frag", "main"}, {"hlsl.typeGraphCopy.vert", "main"}, {"hlsl.typedef.frag", "PixelShaderFunction"}, {"hlsl.whileLoop.frag", "PixelShaderFunction"}, {"hlsl.void.frag", "PixelShaderFunction"}, {"hlsl.type.type.conversion.all.frag", "main"}, {"hlsl.instance.geom", "GeometryShader"} }), FileNameAsCustomTestSuffix ); // clang-format on // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslVulkan1_1CompileTest, ::testing::ValuesIn(std::vector{ {"hlsl.wavebroadcast.comp", "CSMain"}, {"hlsl.waveprefix.comp", "CSMain"}, {"hlsl.wavequad.comp", "CSMain"}, {"hlsl.wavequery.comp", "CSMain"}, {"hlsl.wavequery.frag", "PixelShaderFunction"}, {"hlsl.wavereduction.comp", "CSMain"}, {"hlsl.wavevote.comp", "CSMain"}, { "hlsl.type.type.conversion.valid.frag", "main" }, {"hlsl.int.dot.frag", "main"} }), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslVulkan1_2CompileTest, ::testing::ValuesIn(std::vector{ {"hlsl.buffer_ref_parameter.comp", "main"}, }), FileNameAsCustomTestSuffix ); // clang-format on // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslSpv1_6CompileTest, ::testing::ValuesIn(std::vector{ {"hlsl.spv.1.6.discard.frag", "PixelShaderFunction"}, {"hlsl.structcopylogical.comp","main"}, }), FileNameAsCustomTestSuffix ); // clang-format on // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslCompileAndFlattenTest, ::testing::ValuesIn(std::vector{ {"hlsl.array.flatten.frag", "main"}, {"hlsl.partialFlattenMixed.vert", "main"}, }), FileNameAsCustomTestSuffix ); // clang-format on #if ENABLE_OPT // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslLegalizeTest, ::testing::ValuesIn(std::vector{ {"hlsl.aliasOpaque.frag", "main"}, {"hlsl.flattenOpaque.frag", "main"}, {"hlsl.flattenOpaqueInit.vert", "main"}, {"hlsl.flattenOpaqueInitMix.vert", "main"}, {"hlsl.flattenSubset.frag", "main"}, {"hlsl.flattenSubset2.frag", "main"}, {"hlsl.intrinsics.evalfns.frag", "main"}, {"hlsl.partialFlattenLocal.vert", "main"}, {"hlsl.partialFlattenMixed.vert", "main"} }), FileNameAsCustomTestSuffix ); // clang-format on #endif // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslDebugTest, ::testing::ValuesIn(std::vector{ {"hlsl.pp.line2.frag", "MainPs"} }), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslDX9CompatibleTest, ::testing::ValuesIn(std::vector{ {"hlsl.round.dx9.frag", "main"}, {"hlsl.sample.dx9.frag", "main"}, {"hlsl.sample.dx9.vert", "main"}, }), FileNameAsCustomTestSuffix ); // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslLegalDebugTest, ::testing::ValuesIn(std::vector{ {"hlsl.pp.line4.frag", "MainPs"} }), FileNameAsCustomTestSuffix ); // clang-format on // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslNonSemanticShaderDebugInfoTest, ::testing::ValuesIn(std::vector{ {"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 } // namespace glslangtest glslang-16.0.0/gtests/Initializer.h000066400000000000000000000041221506534232700172000ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #ifndef GLSLANG_GTESTS_INITIALIZER_H #define GLSLANG_GTESTS_INITIALIZER_H #include "glslang/Public/ShaderLang.h" namespace glslangtest { // Initializes glslang on creation, and destroys it on completion. // This object is expected to be a singleton, so that internal glslang state // can be correctly handled. // class GlslangInitializer { public: GlslangInitializer() { glslang::InitializeProcess(); } ~GlslangInitializer() { glslang::FinalizeProcess(); } }; } // namespace glslangtest #endif // GLSLANG_GTESTS_INITIALIZER_H glslang-16.0.0/gtests/Link.FromFile.Vk.cpp000066400000000000000000000131631506534232700202330ustar00rootroot00000000000000// // Copyright (C) 2016-2017 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include #include "TestFixture.h" namespace glslangtest { namespace { using LinkTestVulkan = GlslangTest< ::testing::TestWithParam>>; TEST_P(LinkTestVulkan, FromFile) { const auto& fileNames = GetParam(); const size_t fileCount = fileNames.size(); const EShMessages controls = DeriveOptions(Source::GLSL, Semantics::Vulkan, Target::AST); GlslangResult result; result.validationResult = false; // Compile each input shader file. bool success = true; std::vector> shaders; for (size_t i = 0; i < fileCount; ++i) { std::string contents; tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i], "input", &contents); shaders.emplace_back( new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i])))); auto* shader = shaders.back().get(); shader->setAutoMapLocations(true); success &= compile(shader, contents, "", controls); result.shaderResults.push_back( {fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog()}); } // Link all of them. glslang::TProgram program; for (const auto& shader : shaders) program.addShader(shader.get()); success &= program.link(controls); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); if (success) program.mapIO(); if (success && (controls & EShMsgSpvRules)) { spv::SpvBuildLogger logger; std::vector spirv_binary; options().disableOptimizer = true; glslang::GlslangToSpv(*program.getIntermediate(shaders.front()->getStage()), spirv_binary, &logger, &options()); std::ostringstream disassembly_stream; spv::Disassemble(disassembly_stream, spirv_binary); result.spirvWarningsErrors = logger.getAllMessages(); result.spirv = disassembly_stream.str(); result.validationResult = !options().validate || logger.getAllMessages().empty(); } std::ostringstream stream; outputResultToStream(&stream, result, controls); // Check with expected results. const std::string expectedOutputFname = GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out"; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, result.spirvWarningsErrors); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, LinkTestVulkan, ::testing::ValuesIn(std::vector>({ {"link1.vk.frag", "link2.vk.frag"}, {"spv.unit1.frag", "spv.unit2.frag", "spv.unit3.frag"}, {"link.vk.matchingPC.0.0.frag", "link.vk.matchingPC.0.1.frag", "link.vk.matchingPC.0.2.frag"}, {"link.vk.differentPC.0.0.frag", "link.vk.differentPC.0.1.frag", "link.vk.differentPC.0.2.frag"}, {"link.vk.differentPC.1.0.frag", "link.vk.differentPC.1.1.frag", "link.vk.differentPC.1.2.frag"}, {"link.vk.pcNamingValid.0.0.vert", "link.vk.pcNamingValid.0.1.vert"}, {"link.vk.pcNamingInvalid.0.0.vert", "link.vk.pcNamingInvalid.0.1.vert"}, {"link.vk.multiBlocksValid.0.0.vert", "link.vk.multiBlocksValid.0.1.vert"}, {"link.vk.multiBlocksValid.1.0.geom", "link.vk.multiBlocksValid.1.1.geom"}, {"link.vk.multiUnitLayout.0.comp", "link.vk.multiUnitLayout.1.comp"}, {"link.vk.multiUnitLayout.2.comp", "link.vk.multiUnitLayout.0.comp"}, {"link.vk.inconsistentGLPerVertex.0.vert", "link.vk.inconsistentGLPerVertex.0.geom"}, {"link.vk.crossStageIO.0.vert", "link.vk.crossStageIO.0.frag"}, {"link.vk.crossStageIO.1.vert", "link.vk.crossStageIO.1.geom", "link.vk.crossStageIO.1.frag"}, {"link.vk.missingCrossStageIO.0.vert", "link.vk.missingCrossStageIO.0.frag"}, })) ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/Link.FromFile.cpp000066400000000000000000000134341506534232700176550ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include #include "TestFixture.h" namespace glslangtest { namespace { using LinkTest = GlslangTest< ::testing::TestWithParam>>; TEST_P(LinkTest, FromFile) { const auto& fileNames = GetParam(); const size_t fileCount = fileNames.size(); const EShMessages controls = DeriveOptions(Source::GLSL, Semantics::OpenGL, Target::AST); GlslangResult result; result.validationResult = true; // Compile each input shader file. std::vector> shaders; for (size_t i = 0; i < fileCount; ++i) { std::string contents; tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i], "input", &contents); shaders.emplace_back( new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i])))); auto* shader = shaders.back().get(); compile(shader, contents, "", controls); result.shaderResults.push_back( {fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog()}); } // Link all of them. glslang::TProgram program; for (const auto& shader : shaders) program.addShader(shader.get()); program.link(controls); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); std::ostringstream stream; outputResultToStream(&stream, result, controls); // Check with expected results. const std::string expectedOutputFname = GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out"; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, LinkTest, ::testing::ValuesIn(std::vector>({ {"mains1.frag", "mains2.frag", "noMain1.geom", "noMain2.geom"}, {"implicitArraySize.vert", "implicitArraySize.frag"}, {"implicitArraySizeBuiltin.vert", "implicitArraySizeBuiltin.geom"}, {"implicitArraySize1.geom", "implicitArraySize2.geom"}, {"implicitArraySizeUniform.vert", "implicitArraySizeUniform.frag"}, {"implicitArraySizeUniformContradict.vert", "implicitArraySizeUniformContradict.frag"}, {"noMain.vert", "mains.frag"}, {"link1.frag", "link2.frag", "link3.frag"}, {"recurse1.vert", "recurse1.frag", "recurse2.frag"}, {"300link.frag"}, {"300link2.frag"}, {"300link3.frag"}, {"empty.frag", "empty2.frag", "empty3.frag"}, {"150.tesc", "150.tese", "400.tesc", "400.tese", "410.tesc", "420.tesc", "420.tese"}, {"max_vertices_0.geom"}, {"contradict_0.geom", "contradict_1.geom"}, {"es-link1.frag", "es-link2.frag"}, {"missingBodies.vert"}, {"link.multiAnonBlocksInvalid.0.0.vert", "link.multiAnonBlocksInvalid.0.1.vert"}, {"link.multiAnonBlocksValid.0.0.vert", "link.multiAnonBlocksValid.0.1.vert"}, {"link.multiBlocksInvalid.0.0.vert", "link.multiBlocksInvalid.0.1.vert"}, {"link.multiBlocksValid.1.0.vert", "link.multiBlocksValid.1.1.vert"}, {"link.multiUnitLayout.0.vert", "link.multiUnitLayout.1.vert"}, {"link.multiUnitLayout.0.frag", "link.multiUnitLayout.1.frag"}, {"link.multiUnitLayout.0.tese", "link.multiUnitLayout.1.tese"}, {"link.multiUnitLayout.0.mesh", "link.multiUnitLayout.1.mesh"}, {"link.multiUnitLayout.2.vert", "link.multiUnitLayout.0.vert"}, {"link.multiUnitLayout.2.frag", "link.multiUnitLayout.0.frag"}, {"link.multiUnitLayout.2.tese", "link.multiUnitLayout.0.tese"}, {"link.multiUnitLayout.2.mesh", "link.multiUnitLayout.0.mesh"}, {"link.tesselation.vert", "link.tesselation.frag"}, {"link.tesselation.tese", "link.tesselation.tesc"}, {"link.redeclareBuiltin.vert", "link.redeclareBuiltin.geom"}, {"link.crossStageIO.0.vert", "link.crossStageIO.0.frag"}, {"link.crossStageIO.1.vert", "link.crossStageIO.1.geom", "link.crossStageIO.1.frag"}, {"link.missingCrossStageIO.0.vert", "link.missingCrossStageIO.0.frag"}, })) ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/LiveTraverser.FromFile.cpp000066400000000000000000000102761506534232700215560ustar00rootroot00000000000000// Copyright (c) 2025 The Khronos Group Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include #include "TestFixture.h" #include "glslang/MachineIndependent/LiveTraverser.h" namespace glslangtest { namespace { struct LiveTraverserTestParams { std::string fileName; std::vector liveVars; }; using LiveTraverserTest = GlslangTest<::testing::TestWithParam>; TEST_P(LiveTraverserTest, FromFile) { const auto& fileName = GetParam().fileName; const auto& expectedLiveVars = GetParam().liveVars; const EShMessages controls = DeriveOptions(Source::GLSL, Semantics::Vulkan, Target::AST); GlslangResult result; result.validationResult = true; std::string contents; tryLoadFile(GlobalTestSettings.testRoot + "/" + fileName, "input", &contents); std::unique_ptr shader = std::make_unique(GetShaderStage(GetSuffix(fileName))); bool success = compile(shader.get(), contents, "", controls); result.shaderResults.push_back({fileName, shader->getInfoLog(), shader->getInfoDebugLog()}); std::ostringstream stream; outputResultToStream(&stream, result, controls); class TLiveSymbolTraverser : public glslang::TLiveTraverser { public: TLiveSymbolTraverser(const glslang::TIntermediate& i, std::vector& liveVars) : glslang::TLiveTraverser(i), liveVars(liveVars) { } virtual void visitSymbol(glslang::TIntermSymbol* symbol) { if (symbol->getAsSymbolNode()->getAccessName().compare(0, 3, "gl_") == 0) return; if (symbol->getQualifier().storage == glslang::TStorageQualifier::EvqVaryingIn || symbol->getQualifier().storage == glslang::TStorageQualifier::EvqVaryingOut || symbol->getQualifier().storage == glslang::TStorageQualifier::EvqUniform || symbol->getQualifier().storage == glslang::TStorageQualifier::EvqBuffer) { liveVars.push_back(symbol->getAccessName().c_str()); } } private: std::vector& liveVars; }; if (success) { std::vector actualLiveVars; TLiveSymbolTraverser liveTraverser(*shader->getIntermediate(), actualLiveVars); liveTraverser.pushFunction(shader->getIntermediate()->getEntryPointMangledName().c_str()); while (!liveTraverser.destinations.empty()) { TIntermNode* destination = liveTraverser.destinations.back(); liveTraverser.destinations.pop_back(); destination->traverse(&liveTraverser); } for (const auto& expectedVar : expectedLiveVars) { auto it = std::find(actualLiveVars.begin(), actualLiveVars.end(), expectedVar); EXPECT_NE(it, actualLiveVars.end()); if (it != actualLiveVars.end()) actualLiveVars.erase(it); } EXPECT_TRUE(actualLiveVars.empty()); } // Check with expected results. const std::string expectedOutputFname = GlobalTestSettings.testRoot + "/baseResults/" + fileName + ".out"; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, result.spirvWarningsErrors); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, LiveTraverserTest, ::testing::ValuesIn(std::vector({ {"liveTraverser.switch.vert", {"a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10"}}, // TODO: implement test for if statements })) ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/Pp.FromFile.cpp000066400000000000000000000056451506534232700173440ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include "TestFixture.h" namespace glslangtest { namespace { using PreprocessingTest = GlslangTest<::testing::TestWithParam>; TEST_P(PreprocessingTest, FromFile) { loadFilePreprocessAndCheck(GlobalTestSettings.testRoot, GetParam()); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, PreprocessingTest, ::testing::ValuesIn(std::vector({ "preprocessor.bad_arg.vert", "preprocessor.cpp_style_line_directive.vert", "preprocessor.cpp_style___FILE__.vert", "preprocessor.edge_cases.vert", "preprocessor.errors.vert", "preprocessor.extensions.vert", "preprocessor.function_macro.vert", "preprocessor.include.enabled.vert", "preprocessor.include.disabled.vert", "preprocessor.line.vert", "preprocessor.line.frag", "preprocessor.pragma.vert", "preprocessor.simple.vert", "preprocessor.success_if_parse_would_fail.vert", "preprocessor.defined.vert", "preprocessor.many.endif.vert", "preprocessor.eof_missing.vert", "preprocess.arb_shading_language_include.vert", "preprocess.include_directive_missing_extension.vert", "preprocess.inactive_stringify.vert" })), FileNameAsCustomTestSuffix ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/README.md000066400000000000000000000022741506534232700160310ustar00rootroot00000000000000Glslang Tests based on the Google Test Framework ================================================ This directory contains [Google Test][gtest] based test fixture and test cases for glslang. Apart from typical unit tests, necessary utility methods are added into the [`GlslangTests`](TestFixture.h) fixture to provide the ability to do file-based integration tests. Various `*.FromFile.cpp` files lists names of files containing input shader code in the `Test/` directory. Utility methods will load the input shader source, compile them, and compare with the corresponding expected output in the `Test/baseResults/` directory. How to run the tests -------------------- Please make sure you have a copy of [Google Test][gtest] checked out under the `External` directory before building. After building, just run the `ctest` command or the `gtests/glslangtests` binary in your build directory. The `gtests/glslangtests` binary also provides an `--update-mode` command line option, which, if supplied, will overwrite the golden files under the `Test/baseResults/` directory with real output from that invocation. This serves as an easy way to update golden files. [gtest]: https://github.com/google/googletest glslang-16.0.0/gtests/Settings.cpp000066400000000000000000000042361506534232700170560ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "Settings.h" namespace glslangtest { // We need CMake to provide us the absolute path to the directory containing // test files, so we are certain to find those files no matter where the test // harness binary is generated. This provides out-of-source build capability. // This will be used as the default test root, but can be overridden with // the --test-root argument. #ifndef GLSLANG_TEST_DIRECTORY #error \ "GLSLANG_TEST_DIRECTORY needs to be defined for gtest to locate test files." #endif GTestSettings GlobalTestSettings = {nullptr, false, GLSLANG_TEST_DIRECTORY}; } // namespace glslangtest glslang-16.0.0/gtests/Settings.h000066400000000000000000000041361506534232700165220ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #ifndef GLSLANG_GTESTS_SETTINGS_H #define GLSLANG_GTESTS_SETTINGS_H #include namespace glslangtest { class GlslangInitializer; struct GTestSettings { // A handle to GlslangInitializer instance. GlslangInitializer* initializer; // An indicator of whether GTest should write real output to the file for // the expected output. bool updateMode; // The root directory for test files. std::string testRoot; }; extern GTestSettings GlobalTestSettings; } // namespace glslangtest #endif // GLSLANG_GTESTS_SETTINGS_H glslang-16.0.0/gtests/Spv.FromFile.cpp000066400000000000000000001201761506534232700175320ustar00rootroot00000000000000 // // Copyright (C) 2016 Google, Inc. // Copyright (C) 2019, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include #include "TestFixture.h" namespace glslangtest { namespace { struct IoMapData { const char* fileName; const char* entryPoint; int baseSamplerBinding; int baseTextureBinding; int baseImageBinding; int baseUboBinding; int baseSsboBinding; bool autoMapBindings; bool flattenUniforms; }; std::string FileNameAsCustomTestSuffixIoMap( const ::testing::TestParamInfo& info) { std::string name = info.param.fileName; // A valid test case suffix cannot have '.' and '-' inside. std::replace(name.begin(), name.end(), '.', '_'); std::replace(name.begin(), name.end(), '-', '_'); return name; } using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestNoLink = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithParam>; using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam>; using CompileToSpirv16Test = GlslangTest<::testing::TestWithParam>; using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam>; using VulkanSemantics = GlslangTest<::testing::TestWithParam>; using OpenGLSemantics = GlslangTest<::testing::TestWithParam>; using VulkanAstSemantics = GlslangTest<::testing::TestWithParam>; using HlslIoMap = GlslangTest<::testing::TestWithParam>; using GlslIoMap = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestQCOM = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirv13TestQCOM = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirv14TestQCOM = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam>; using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam>; using GlslSpirvDebugInfoTest = GlslangTest<::testing::TestWithParam>; using GlslNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam>; using GlslNonSemanticShaderDebugInfoSpirv13Test = GlslangTest<::testing::TestWithParam>; // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate SPIR-V. TEST_P(CompileVulkanToSpirvTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv); } // Compiling GLSL to SPIR-V under Vulkan semantics without linking. Expected to successfully generate SPIR-V. TEST_P(CompileVulkanToSpirvTestNoLink, FromFile) { options().compileOnly = true; // NOTE: Vulkan 1.3 is currently required to use the linkage capability // TODO(ncesario) make sure this is actually necessary loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_0, Target::Spv); } TEST_P(CompileVulkanToSpirvDeadCodeElimTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv); } TEST_P(CompileVulkan1_1ToSpirvTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_3, Target::Spv); } TEST_P(CompileToSpirv14Test, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4, Target::Spv); } TEST_P(CompileToSpirv16Test, FromFileTargetVulkan1_3) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6, Target::Spv); } TEST_P(CompileToSpirv16Test, FromFileTargetVulkan1_4) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_4, glslang::EShTargetSpv_1_6, Target::Spv); } // Compiling GLSL to SPIR-V under OpenGL semantics. Expected to successfully // generate SPIR-V. TEST_P(CompileOpenGLToSpirvTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv); } // GLSL-level Vulkan semantics test. Expected to error out before generating // SPIR-V. TEST_P(VulkanSemantics, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, false); } // GLSL-level Vulkan semantics test. Expected to error out before generating // SPIR-V. TEST_P(OpenGLSemantics, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, false); } // GLSL-level Vulkan semantics test that need to see the AST for validation. TEST_P(VulkanAstSemantics, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::AST); } // HLSL-level Vulkan semantics tests. TEST_P(HlslIoMap, FromFile) { loadFileCompileIoMapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, Target::Spv, GetParam().entryPoint, GetParam().baseSamplerBinding, GetParam().baseTextureBinding, GetParam().baseImageBinding, GetParam().baseUboBinding, GetParam().baseSsboBinding, GetParam().autoMapBindings, GetParam().flattenUniforms); } // GLSL-level Vulkan semantics tests. TEST_P(GlslIoMap, FromFile) { loadFileCompileIoMapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::GLSL, Semantics::Vulkan, Target::Spv, GetParam().entryPoint, GetParam().baseSamplerBinding, GetParam().baseTextureBinding, GetParam().baseImageBinding, GetParam().baseUboBinding, GetParam().baseSsboBinding, GetParam().autoMapBindings, GetParam().flattenUniforms); } // Compiling GLSL to SPIR-V under Vulkan semantics (QCOM extensions enabled). // Expected to successfully generate SPIR-V. TEST_P(CompileVulkanToSpirvTestQCOM, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv); } TEST_P(CompileVulkanToSpirv13TestQCOM, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_3, Target::Spv); } TEST_P(CompileVulkanToSpirv14TestQCOM, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4, Target::Spv); } // Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled). // Expected to successfully generate SPIR-V. TEST_P(CompileVulkanToSpirvTestAMD, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv); } // Compiling GLSL to SPIR-V under Vulkan semantics (NV extensions enabled). // Expected to successfully generate SPIR-V. TEST_P(CompileVulkanToSpirvTestNV, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv); } TEST_P(CompileVulkanToSpirv14TestNV, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4, Target::Spv); } TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile) { loadCompileUpgradeTextureToSampledTextureAndDropSamplersAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, Target::Spv); } TEST_P(GlslSpirvDebugInfoTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, true, "", "/baseResults/", false, true, false); } TEST_P(GlslNonSemanticShaderDebugInfoTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, true, "", "/baseResults/", false, true, true); } TEST_P(GlslNonSemanticShaderDebugInfoSpirv13Test, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_3, Target::Spv, true, "", "/baseResults/", false, true, true); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTest, ::testing::ValuesIn(std::vector({ // Test looping constructs. // No tests yet for making sure break and continue from a nested loop // goes to the innermost target. "spv.barrier.vert", "spv.do-simple.vert", "spv.do-while-continue-break.vert", "spv.for-complex-condition.vert", "spv.for-continue-break.vert", "spv.for-simple.vert", "spv.for-notest.vert", "spv.for-nobody.vert", "spv.while-continue-break.vert", "spv.while-simple.vert", // vulkan-specific tests "rayQuery.rgen", "rayQuery-no-cse.rgen", "rayQuery-initialize.rgen", "rayQuery-allOps.rgen", "rayQuery-allOps.Error.rgen", "rayQuery-committed.Error.rgen", "rayQuery-allOps.comp", "rayQuery-allOps.frag", "rayQuery-initialization.Error.comp", "rayQuery-global.rgen", "rayQuery-types.comp", "rayQuery-OpConvertUToAccelerationStructureKHR.comp", "spv.set.vert", "spv.double.comp", "spv.100ops.frag", "spv.130.frag", "spv.140.frag", "spv.150.geom", "spv.150.vert", "spv.16bitstorage.frag", "spv.16bitstorage_Error.frag", "spv.16bitstorage-int.frag", "spv.16bitstorage_Error-int.frag", "spv.16bitstorage-uint.frag", "spv.16bitstorage_Error-uint.frag", "spv.300BuiltIns.vert", "spv.300layout.frag", "spv.300layout.vert", "spv.300layoutp.vert", "spv.310.comp", "spv.310.bitcast.frag", "spv.330.geom", "spv.400.frag", "spv.400.tesc", "spv.400.tese", "spv.420.geom", "spv.430.frag", "spv.430.vert", "spv.450.tesc", "spv.450.geom", "spv.450.noRedecl.tesc", "spv.8bitstorage-int.frag", "spv.8bitstorage_Error-int.frag", "spv.8bitstorage-uint.frag", "spv.8bitstorage_Error-uint.frag", "spv.8bitstorage-ubo.vert", "spv.8bitstorage-ssbo.vert", "spv.8bit-16bit-construction.frag", "spv.accessChain.frag", "spv.aggOps.frag", "spv.always-discard.frag", "spv.always-discard2.frag", "spv.arbPostDepthCoverage.frag", "spv.arbPostDepthCoverage_Error.frag", "spv.atomicCounter.comp", "spv.bitCast.frag", "spv.bool.vert", "spv.boolInBlock.frag", "spv.branch-return.vert", "spv.bufferhandle11.frag", "spv.bufferhandle12.frag", "spv.bufferhandle13.frag", "spv.bufferhandle14.frag", "spv.bufferhandle15.frag", "spv.bufferhandle16.frag", "spv.bufferhandle17_Errors.frag", "spv.bufferhandle18.frag", "spv.bufferhandle19_Errors.frag", "spv.bufferhandle2.frag", "spv.bufferhandle3_Errors.frag", "spv.bufferhandle4.frag", "spv.bufferhandle5.frag", "spv.bufferhandle6.frag", "spv.bufferhandle7.frag", "spv.bufferhandle8.frag", "spv.bufferhandle9.frag", "spv.bufferhandleUvec2.frag", "spv.bufferhandle_Error.frag", "spv.builtInXFB.vert", "spv.conditionalDemote.frag", "spv.conditionalDiscard.frag", "spv.constructComposite.comp", "spv.constStruct.vert", "spv.constConstruct.vert", "spv.controlFlowAttributes.frag", "spv.conversion.frag", "spv.dataOut.frag", "spv.dataOutIndirect.frag", "spv.dataOutIndirect.vert", "spv.debugPrintf.frag", "spv.debugPrintf_Error.frag", "spv.demoteDisabled.frag", "spv.deepRvalue.frag", "spv.depthOut.frag", "spv.depthUnchanged.frag", "spv.discard-dce.frag", "spv.doWhileLoop.frag", "spv.earlyReturnDiscard.frag", "spv.expect_assume.assumeEXT.comp", "spv.expect_assume.expectEXT.comp", "spv.expect_assume.expectEXT.exttypes.comp", "spv.ext.ShaderTileImage.color.frag", "spv.ext.ShaderTileImage.depth_stencil.frag", "spv.ext.ShaderTileImage.subpassinput.frag", "spv.ext.ShaderTileImage.typemismatch.frag", "spv.ext.ShaderTileImage.overlap.frag", "spv.ext.ShaderTileImage.wronglayout.frag", "spv.extPostDepthCoverage.frag", "spv.extPostDepthCoverage_Error.frag", "spv.float16convertonlyarith.comp", "spv.float16convertonlystorage.comp", "spv.flowControl.frag", "spv.forLoop.frag", "spv.forwardFun.frag", "spv.fp8_error.frag", "spv.fragmentDensity.frag", "spv.fragmentDensity.vert", "spv.fragmentDensity-es.frag", "spv.fragmentDensity-neg.frag", "spv.fsi.frag", "spv.fsi_Error.frag", "spv.fullyCovered.frag", "spv.functionCall.frag", "spv.functionNestedOpaque.vert", "spv.functionSemantics.frag", "spv.functionParameterTypes.frag", "spv.GeometryShaderPassthrough.geom", "spv.funcall.array.frag", "spv.load.bool.array.interface.block.frag", "spv.int_dot.frag", "spv.int_dot_Error.frag", "spv.interpOps.frag", "spv.int64.frag", "spv.intOps.vert", "spv.intrinsicsDebugBreak.frag", "spv.intrinsicsSpirvByReference.vert", "spv.intrinsicsSpirvDecorate.frag", "spv.intrinsicsSpirvDecorateId.comp", "spv.intrinsicsSpirvDecorateString.comp", "spv.intrinsicsSpirvExecutionMode.frag", "spv.intrinsicsSpirvInstruction.vert", "spv.intrinsicsSpirvLiteral.vert", "spv.intrinsicsSpirvStorageClass.rchit", "spv.intrinsicsSpirvType.rgen", "spv.intrinsicsSpirvTypeLocalVar.vert", "spv.intrinsicsSpirvTypeWithTypeSpecifier.vert", "spv.invariantAll.vert", "spv.layer.tese", "spv.layoutNested.vert", "spv.length.frag", "spv.localAggregates.frag", "spv.loops.frag", "spv.loopsArtificial.frag", "spv.matFun.vert", "spv.matrix.frag", "spv.matrix2.frag", "spv.maximalReconvergence.vert", "spv.memoryQualifier.frag", "spv.merge-unreachable.frag", "spv.multiStruct.comp", "spv.multiStructFuncall.frag", "spv.newTexture.frag", "spv.noDeadDecorations.vert", "spv.nonSquare.vert", "spv.nonuniform.frag", "spv.nonuniform2.frag", "spv.nonuniform3.frag", "spv.nonuniform4.frag", "spv.nonuniform5.frag", "spv.noWorkgroup.comp", "spv.nvAtomicFp16Vec.frag", "spv.nullInit.comp", "spv.offsets.frag", "spv.Operations.frag", "spv.paramMemory.frag", "spv.paramMemory.420.frag", "spv.precision.frag", "spv.precisionArgs.frag", "spv.precisionNonESSamp.frag", "spv.precisionTexture.frag", "spv.prepost.frag", "spv.privateVariableTypes.frag", "spv.qualifiers.vert", "spv.sample.frag", "spv.sampleId.frag", "spv.samplePosition.frag", "spv.sampleMaskOverrideCoverage.frag", "spv.scalarlayout.frag", "spv.scalarlayoutfloat16.frag", "spv.shaderBallot.comp", "spv.shaderDrawParams.vert", "spv.shaderGroupVote.comp", "spv.shaderStencilExport.frag", "spv.shiftOps.frag", "spv.simpleFunctionCall.frag", "spv.simpleMat.vert", "spv.sparseTexture.frag", "spv.sparseTextureClamp.frag", "spv.structAssignment.frag", "spv.structCopy.comp", "spv.structDeref.frag", "spv.structure.frag", "spv.switch.frag", "spv.swizzle.frag", "spv.swizzleInversion.frag", "spv.test.frag", "spv.test.vert", "spv.texture.frag", "spv.texture.vert", "spv.textureBuffer.vert", "spv.image.frag", "spv.imageAtomic64.frag", "spv.imageAtomic64.comp", "spv.types.frag", "spv.uint.frag", "spv.uniformArray.frag", "spv.variableArrayIndex.frag", "spv.varyingArray.frag", "spv.varyingArrayIndirect.frag", "spv.vecMatConstruct.frag", "spv.voidFunction.frag", "spv.whileLoop.frag", "spv.AofA.frag", "spv.queryL.frag", "spv.separate.frag", "spv.shortCircuit.frag", "spv.pushConstant.vert", "spv.pushConstantAnon.vert", "spv.subpass.frag", "spv.specConstant.vert", "spv.specConstant.comp", "spv.specConstantComposite.vert", "spv.specConstantOperations.vert", "spv.specConstant.float16.comp", "spv.specConstant.int16.comp", "spv.specConstant.int8.comp", "spv.specConstantOp.int16.comp", "spv.specConstantOp.int8.comp", "spv.specConstantOp.float16.comp", "spv.storageBuffer.vert", "spv.terminate.frag", "spv.subgroupUniformControlFlow.vert", "spv.subgroupSizeARB.frag", "spv.precise.tese", "spv.precise.tesc", "spv.viewportindex.tese", "spv.volatileAtomic.comp", "spv.vulkan100.subgroupArithmetic.comp", "spv.vulkan100.subgroupPartitioned.comp", "spv.xfb.vert", "spv.xfb2.vert", "spv.xfb3.vert", "spv.samplerlessTextureFunctions.frag", "spv.smBuiltins.vert", "spv.smBuiltins.frag", "spv.ARMCoreBuiltIns.vert", "spv.ARMCoreBuiltIns.frag", "spv.builtin.PrimitiveShadingRateEXT.vert", "spv.builtin.ShadingRateEXT.frag", "spv.fragmentShaderBarycentric3.frag", "spv.fragmentShaderBarycentric4.frag", "spv.ext.textureShadowLod.frag", "spv.ext.textureShadowLod.error.frag", "spv.floatFetch.frag", "spv.atomicRvalue.error.vert", "spv.sampledImageBlock.frag", "spv.multiple.var.same.const.frag", "spv.textureoffset_non_const.vert", "spv.sparsetextureoffset_non_const.vert", "spv.sparsetextureoffset_non_const_fail.vert", "spv.tensorARM.access_qualifiers.comp", "spv.tensorARM.all_accesses.comp", "spv.tensorARM.array.comp", "spv.tensorARM.declare.comp", "spv.tensorARM.frag", "spv.tensorARM.invalid_access.comp", "spv.tensorARM.invalid_declare.comp", "spv.tensorARM.invalid_operands.comp", "spv.tensorARM.invalid_params.comp", "spv.tensorARM.invalid_size.comp", "spv.tensorARM.invalid_tensor_type.comp", "spv.tensorARM.params.comp", "spv.tensorARM.read.comp", "spv.tensorARM.size.comp", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTestNoLink, ::testing::ValuesIn(std::vector({ "spv.exportFunctions.comp", })), FileNameAsCustomTestSuffix ); // Cases with deliberately unreachable code. // By default the compiler will aggressively eliminate // unreachable merges and continues. INSTANTIATE_TEST_SUITE_P( GlslWithDeadCode, CompileVulkanToSpirvDeadCodeElimTest, ::testing::ValuesIn(std::vector({ "spv.dead-after-continue.vert", "spv.dead-after-discard.frag", "spv.dead-after-return.vert", "spv.dead-after-loop-break.vert", "spv.dead-after-switch-break.vert", "spv.dead-complex-continue-after-return.vert", "spv.dead-complex-merge-after-return.vert", })), FileNameAsCustomTestSuffix ); // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkan1_1ToSpirvTest, ::testing::ValuesIn(std::vector({ "spv.1.3.8bitstorage-ubo.vert", "spv.1.3.8bitstorage-ssbo.vert", "spv.1.3.coopmat.comp", "spv.deviceGroup.frag", "spv.drawParams.vert", "spv.int8.frag", "spv.vulkan110.int16.frag", "spv.int32.frag", "spv.explicittypes.frag", "spv.float16NoRelaxed.vert", "spv.float32.frag", "spv.float64.frag", "spv.memoryScopeSemantics.comp", "spv.memoryScopeSemantics_Error.comp", "spv.multiView.frag", "spv.queueFamilyScope.comp", "spv.RayGenShader11.rgen", "spv.subgroup.frag", "spv.subgroup.geom", "spv.subgroup.tesc", "spv.subgroup.tese", "spv.subgroup.vert", "spv.subgroupArithmetic.comp", "spv.subgroupBasic.comp", "spv.subgroupBallot.comp", "spv.subgroupBallotNeg.comp", "spv.subgroupClustered.comp", "spv.subgroupClusteredNeg.comp", "spv.subgroupPartitioned.comp", "spv.subgroupRotate.comp", "spv.subgroupShuffle.comp", "spv.subgroupShuffleRelative.comp", "spv.subgroupQuad.comp", "spv.subgroupVote.comp", "spv.subgroupExtendedTypesArithmetic.comp", "spv.subgroupExtendedTypesArithmeticNeg.comp", "spv.subgroupExtendedTypesBallot.comp", "spv.subgroupExtendedTypesBallotNeg.comp", "spv.subgroupExtendedTypesClustered.comp", "spv.subgroupExtendedTypesClusteredNeg.comp", "spv.subgroupExtendedTypesPartitioned.comp", "spv.subgroupExtendedTypesPartitionedNeg.comp", "spv.subgroupExtendedTypesRotate.comp", "spv.subgroupExtendedTypesRotateNeg.comp", "spv.subgroupExtendedTypesShuffle.comp", "spv.subgroupExtendedTypesShuffleNeg.comp", "spv.subgroupExtendedTypesShuffleRelative.comp", "spv.subgroupExtendedTypesShuffleRelativeNeg.comp", "spv.subgroupExtendedTypesQuad.comp", "spv.subgroupExtendedTypesQuadNeg.comp", "spv.subgroupExtendedTypesVote.comp", "spv.subgroupExtendedTypesVoteNeg.comp", "spv.vulkan110.storageBuffer.vert", // These tests use the Vulkan memory model. "spv.bfloat16.comp", "spv.bfloat16_error.comp", "spv.bfloat16_error.frag", "spv.bufferhandle1.frag", "spv.bufferhandle10.frag", "spv.coopmat.comp", "spv.coopmat_Error.comp", "spv.coopmatKHR.comp", "spv.coopmat_armlayout.comp", "spv.coopmatKHR_arithmetic.comp", "spv.coopmatKHR_arithmeticError.comp", "spv.coopmatKHR_Error.comp", "spv.coopmatKHR_constructor.comp", "spv.coopmatKHR_constructorError.comp", "spv.coopvec.comp", "spv.coopvec2.comp", "spv.coopvecloadstore.comp", "spv.coopvec_Error.comp", "spv.coopvecTraining.comp", "spv.coopvecTraining_Error.comp", "spv.intcoopmat.comp", "spv.intrinsicsInteractWithCoopMat.comp", "spv.replicate.comp", "spv.replicatespec.comp", "spv.atomicAdd.bufferReference.comp", "spv.nontemporalbuffer.frag", "spv.atomicFloat.comp", })), FileNameAsCustomTestSuffix ); // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, CompileToSpirv14Test, ::testing::ValuesIn(std::vector({ "spv.1.4.LoopControl.frag", "spv.1.4.NonWritable.frag", "spv.1.4.OpEntryPoint.frag", "spv.1.4.OpEntryPoint.opaqueParams.vert", "spv.1.4.OpSelect.frag", "spv.1.4.OpCopyLogical.comp", "spv.1.4.OpCopyLogicalBool.comp", "spv.1.4.OpCopyLogical.funcall.frag", "spv.1.4.funcall.array.frag", "spv.1.4.load.bool.array.interface.block.frag", "spv.1.4.image.frag", "spv.1.4.sparseTexture.frag", "spv.1.4.texture.frag", "spv.1.4.constructComposite.comp", "spv.ext.AnyHitShader.rahit", "spv.ext.AnyHitShader_Errors.rahit", "spv.ext.ClosestHitShader.rchit", "spv.ext.ClosestHitShader_Subgroup.rchit", "spv.ext.ClosestHitShader_Errors.rchit", "spv.ext.IntersectShader.rint", "spv.ext.IntersectShader_Errors.rint", "spv.ext.MissShader.rmiss", "spv.ext.MissShader_Errors.rmiss", "spv.ext.RayPrimCull_Errors.rgen", "spv.ext.RayCallable.rcall", "spv.ext.RayCallable_Errors.rcall", "spv.ext.RayConstants.rgen", "spv.ext.RayGenShader.rgen", "spv.ext.RayGenShader_Errors.rgen", "spv.ext.RayGenShader11.rgen", "spv.ext.RayGenShaderArray.rgen", "spv.ext.RayGenSBTlayout.rgen", "spv.ext.RayGenSBTlayout140.rgen", "spv.ext.RayGenSBTlayout430.rgen", "spv.ext.RayGenSBTlayoutscalar.rgen", "spv.ext.World3x4.rahit", "spv.ext.AccelDecl.frag", "spv.ext.RayQueryDecl.frag", // SPV_KHR_workgroup_memory_explicit_layout depends on SPIR-V 1.4. "spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp", "spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp", "spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp", "spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp", "spv.WorkgroupMemoryExplicitLayout.NonBlock.comp", "spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp", "spv.WorkgroupMemoryExplicitLayout.std140.comp", "spv.WorkgroupMemoryExplicitLayout.std430.comp", "spv.WorkgroupMemoryExplicitLayout.scalar.comp", // SPV_EXT_mesh_shader "spv.ext.meshShaderBuiltins.mesh", "spv.ext.meshShaderBuiltinsShadingRate.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", // SPV_NV_shader_execution_reorder "spv.nv.hitobject-errors.rgen", "spv.nv.hitobject-allops.rgen", "spv.nv.hitobject-allops.rchit", "spv.nv.hitobject-allops.rmiss", // SPV_NV_displacment_micromap "spv.nv.dmm-allops.rgen", "spv.nv.dmm-allops.rchit", "spv.nv.dmm-allops.rahit", "spv.nv.dmm-allops.mesh", "spv.nv.dmm-allops.comp", // SPV_NV_cluster_acceleration_structure "spv.nv.cluster-allops.rgen", "spv.nv.cluster-allops.rchit", "spv.nv.cluster-allops.rmiss", "spv.nv.cluster-allops.rahit", "spv.nv.cluster-allops.frag", // SPV_NV_linear_swept_spheres "spv.nv.lss-allops.rgen", "spv.nv.lss-allops.rchit", "spv.nv.lss-allops.rmiss", "spv.nv.lss-allops.frag", "spv.nv.lss-spheregeomcap.rgen", "spv.nv.lss-lssgeomcap.rgen", })), FileNameAsCustomTestSuffix ); // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, CompileToSpirv16Test, ::testing::ValuesIn(std::vector({ "spv.1.6.conditionalDiscard.frag", "spv.1.6.helperInvocation.frag", "spv.1.6.helperInvocation.memmodel.frag", "spv.1.6.specConstant.comp", "spv.1.6.samplerBuffer.frag", "spv.1.6.separate.frag", "spv.1.6.quad.frag", "spv.coopmat2_constructor.comp", "spv.coopmat2_error.comp", "spv.coopmat2_tensor.comp", "spv.1.6.nontemporalimage.frag", "spv.noexplicitlayout.comp", "spv.floate4m3.comp", "spv.floate4m3.const.comp", "spv.floate4m3_error.comp", "spv.floate5m2.comp", "spv.floate5m2.const.comp", "spv.floate5m2_error.comp", })), FileNameAsCustomTestSuffix ); // clang-format off INSTANTIATE_TEST_SUITE_P( Hlsl, HlslIoMap, ::testing::ValuesIn(std::vector{ { "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false }, { "spv.register.noautoassign.frag", "main_ep", 5, 10, 0, 15, 30, false, false }, { "spv.register.autoassign-2.frag", "main", 5, 10, 0, 15, 30, true, true }, { "spv.register.subpass.frag", "main", 0, 20, 0, 0, 0, true, true }, { "spv.buffer.autoassign.frag", "main", 5, 10, 0, 15, 30, true, true }, { "spv.ssbo.autoassign.frag", "main", 5, 10, 0, 15, 30, true, true }, { "spv.ssboAlias.frag", "main", 0, 0, 0, 0, 83, true, false }, { "spv.rw.autoassign.frag", "main", 5, 10, 20, 15, 30, true, true }, { "spv.register.autoassign.rangetest.frag", "main", glslang::TQualifier::layoutBindingEnd-2, glslang::TQualifier::layoutBindingEnd+5, 0, 20, 30, true, false }, }), FileNameAsCustomTestSuffixIoMap ); // clang-format off INSTANTIATE_TEST_SUITE_P( Hlsl, GlslIoMap, ::testing::ValuesIn(std::vector{ { "spv.glsl.register.autoassign.frag", "main", 5, 10, 0, 20, 30, true, false }, { "spv.glsl.register.noautoassign.frag", "main", 5, 10, 0, 15, 30, false, false }, }), FileNameAsCustomTestSuffixIoMap ); // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, CompileOpenGLToSpirvTest, ::testing::ValuesIn(std::vector({ "spv.460.frag", "spv.460.vert", "spv.460.comp", "spv.atomic.comp", "spv.atomicFloat_Error.comp", "spv.glFragColor.frag", "spv.rankShift.comp", "spv.specConst.vert", "spv.specTexture.frag", "spv.OVR_multiview.vert", "spv.uniformInitializer.frag", "spv.uniformInitializerSpecConstant.frag", "spv.uniformInitializerStruct.frag", "spv.xfbOffsetOnBlockMembersAssignment.vert", "spv.xfbOffsetOnStructMembersAssignment.vert", "spv.xfbOverlapOffsetCheckWithBlockAndMember.vert", "spv.xfbStrideJustOnce.vert", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, VulkanSemantics, ::testing::ValuesIn(std::vector({ "vulkan.frag", "vulkan.vert", "vulkan.comp", "samplerlessTextureFunctions.frag", "spv.intrinsicsFakeEnable.vert", "spv.specConstArrayCheck.vert", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, OpenGLSemantics, ::testing::ValuesIn(std::vector({ "glspv.esversion.vert", "glspv.version.frag", "glspv.version.vert", "glspv.frag", "glspv.vert", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, VulkanAstSemantics, ::testing::ValuesIn(std::vector({ "vulkan.ast.vert", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTestQCOM, ::testing::ValuesIn(std::vector({ "spv.qcom.tileShading.0.comp", "spv.qcom.tileShading.1.comp", "spv.qcom.es.tileShading.0.comp", "spv.qcom.es.tileShading.1.comp", "spv.qcom.es.tileShading.2.comp", "spv.qcom.tileShading.0.frag", "spv.qcom.tileShading.1.frag", "spv.qcom.es.tileShading.0.frag", "spv.qcom.es.tileShading.1.frag", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirv13TestQCOM, ::testing::ValuesIn(std::vector({ "spv.qcom.coopmatConversion.1.comp", "spv.qcom.coopmatConversion.2.comp", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirv14TestQCOM, ::testing::ValuesIn(std::vector({ "spv.tpipSampleWeighted.frag", "spv.tpipBoxFilter.frag", "spv.tpipBlockMatchSSD.frag", "spv.tpipBlockMatchSAD.frag", "spv.tpipTextureArrays.frag", "spv.tpipBlockMatchGatherSAD.frag", "spv.tpipBlockMatchGatherSSD.frag", "spv.tpipBlockMatchWindowSAD.frag", "spv.tpipBlockMatchWindowSSD.frag", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTestAMD, ::testing::ValuesIn(std::vector({ "spv.16bitxfb.vert", "spv.float16.frag", "spv.float16Fetch.frag", "spv.imageLoadStoreLod.frag", "spv.int16.frag", "spv.int16.amd.frag", "spv.shaderBallotAMD.comp", "spv.shaderFragMaskAMD.frag", "spv.textureGatherBiasLod.frag", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTestNV, ::testing::ValuesIn(std::vector({ "spv.sampleMaskOverrideCoverage.frag", "spv.GeometryShaderPassthrough.geom", "spv.viewportArray2.vert", "spv.viewportArray2.tesc", "spv.stereoViewRendering.vert", "spv.stereoViewRendering.tesc", "spv.multiviewPerViewAttributes.vert", "spv.multiviewPerViewAttributes.tesc", "spv.atomicInt64.comp", "spv.atomicStoreInt64.comp", "spv.shadingRate.frag", "spv.RayGenShader.rgen", "spv.RayGenShaderArray.rgen", "spv.RayGenShader_Errors.rgen", "spv.RayConstants.rgen", "spv.IntersectShader.rint", "spv.IntersectShader_Errors.rint", "spv.AnyHitShader.rahit", "spv.AnyHitShader_Errors.rahit", "spv.ClosestHitShader.rchit", "spv.ClosestHitShader_Errors.rchit", "spv.MissShader.rmiss", "spv.MissShader_Errors.rmiss", "spv.RayCallable.rcall", "spv.RayCallable_Errors.rcall", "spv.fragmentShaderBarycentric.frag", "spv.fragmentShaderBarycentric2.frag", "spv.computeShaderDerivatives.comp", "spv.computeShaderDerivatives2.comp", "spv.computeShaderDerivativesSpec.comp", "spv.computeShaderDerivativesSpec2.comp", "spv.shaderImageFootprint.frag", "spv.meshShaderBuiltins.mesh", "spv.meshShaderUserDefined.mesh", "spv.meshShaderPerViewBuiltins.mesh", "spv.meshShaderPerViewUserDefined.mesh", "spv.meshShaderPerView_Errors.mesh", "spv.meshShaderSharedMem.mesh", "spv.meshShaderTaskMem.mesh", "spv.320.meshShaderUserDefined.mesh", "spv.meshShaderRedeclBuiltins.mesh", "spv.meshShaderRedeclPerViewBuiltins.mesh", "spv.meshTaskShader.task", "spv.perprimitiveNV.frag", "spv.nvgpushader5.frag" })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirv14TestNV, ::testing::ValuesIn(std::vector({ "spv.RayGenShaderMotion.rgen", "spv.IntersectShaderMotion.rint", "spv.AnyHitShaderMotion.rahit", "spv.ClosestHitShaderMotion.rchit", "spv.MissShaderMotion.rmiss", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest, ::testing::ValuesIn(std::vector({ "spv.texture.sampler.transform.frag", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, GlslSpirvDebugInfoTest, ::testing::ValuesIn(std::vector({ "spv.pp.line.frag", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, GlslNonSemanticShaderDebugInfoTest, ::testing::ValuesIn(std::vector({ "spv.debuginfo.glsl.vert", "spv.debuginfo.glsl.frag", "spv.debuginfo.glsl.comp", "spv.debuginfo.glsl.geom", "spv.debuginfo.glsl.tesc", "spv.debuginfo.glsl.tese", "spv.debuginfo.bufferref.glsl.frag", "spv.debuginfo.const_params.glsl.comp", "spv.debuginfo.scalar_types.glsl.frag", "spv.debuginfo.rt_types.glsl.rgen", "spv.debuginfo.include.glsl.frag", "spv.debuginfo.multiline.glsl.frag", "spv.debuginfo.implicit_br.glsl.frag", "spv.debuginfo.non_ascii.glsl.frag", "spv.debuginfo.continued.glsl.vert", })), FileNameAsCustomTestSuffix ); INSTANTIATE_TEST_SUITE_P( Glsl, GlslNonSemanticShaderDebugInfoSpirv13Test, ::testing::ValuesIn(std::vector({ "spv.debuginfo.coopmatKHR.comp", })), FileNameAsCustomTestSuffix ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/SpvPatternTest.cpp000066400000000000000000000172341506534232700202260ustar00rootroot00000000000000// Copyright (C) 2025 NVIDIA Corporation // // 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. #include "TestFixture.h" #include "glslang/Public/ResourceLimits.h" #include #include #include #include namespace glslangtest { class SpvPatternTest : public ::testing::Test { protected: void SetUp() override { // Set up any common test state. } void TearDown() override { // Clean up any common test state. } // Helper function to compile shader and get SPIR-V disassembly. std::string compileShaderToSpirv(const std::string& shaderSource, EShLanguage stage) { glslang::TShader shader(stage); glslang::TProgram program; // Compile the shader const char* shaderStrings = shaderSource.c_str(); shader.setStrings(&shaderStrings, 1); if (!shader.parse(GetDefaultResources(), 450, false, EShMsgDefault)) { return "COMPILATION_FAILED: " + std::string(shader.getInfoLog()); } program.addShader(&shader); if (!program.link(EShMsgDefault)) { return "LINKING_FAILED: " + std::string(program.getInfoLog()); } // Generate SPIR-V. std::vector spirv; glslang::GlslangToSpv(*program.getIntermediate(stage), spirv); // Disassemble SPIR-V to text. std::ostringstream disassembly_stream; spv::Disassemble(disassembly_stream, spirv); return disassembly_stream.str(); } // Helper function to check if the given SPIR-V string contains a specific pattern. bool containsPattern(const std::string& spirvText, const std::string& pattern) { return spirvText.find(pattern) != std::string::npos; } // Helper function to check if the given SPIR-V string contains a UConvert instruction. bool containsUConvert(const std::string& spirvText) { return containsPattern(spirvText, "UConvert"); } }; // Test 1: Indexing an array with a regular int or uint should not generate a zero extension. TEST_F(SpvPatternTest, RegularIntUintArrayIndexNoConversion) { const std::string shaderSource = R"( #version 450 core layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void main() { uint u = 150u; int i = 100; float arr[200]; float x = arr[u]; // Regular uint index float y = arr[i]; // Regular int index } )"; std::string spirv = compileShaderToSpirv(shaderSource, EShLangCompute); // Check that the SPIR-V does NOT contain conversion instructions for regular int/uint indices. EXPECT_FALSE(containsUConvert(spirv)) << "SPIR-V should not contain OpUConvert instruction for regular int/uint array indexing.\n" << "Generated SPIR-V:\n" << spirv; } // Test 2: Indexing an array with a variable index of type uint8_t should generate a zero extension. TEST_F(SpvPatternTest, Uint8VariableIndexGeneratesUConvert) { const std::string shaderSource = R"( #version 450 core #extension GL_EXT_shader_explicit_arithmetic_types : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void main() { uint8_t u8 = uint8_t(150); float arr[200]; float x = arr[u8]; // Variable uint8_t index } )"; std::string spirv = compileShaderToSpirv(shaderSource, EShLangCompute); // Check that the SPIR-V contains OpUConvert instruction for variable uint8_t index. EXPECT_TRUE(containsUConvert(spirv)) << "SPIR-V should contain OpUConvert instruction for variable uint8_t array indexing.\n" << "Generated SPIR-V:\n" << spirv; } // Test 2: Indexing an array with a variable index of type uint16_t should generate a zero extension. TEST_F(SpvPatternTest, Uint16VariableIndexGeneratesUConvert) { const std::string shaderSource = R"( #version 450 core #extension GL_EXT_shader_explicit_arithmetic_types : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void main() { uint16_t u16 = uint16_t(150); float arr[200]; float x = arr[u16]; // Variable uint16_t index } )"; std::string spirv = compileShaderToSpirv(shaderSource, EShLangCompute); // Check that the SPIR-V contains OpUConvert instruction for variable uint16_t index. EXPECT_TRUE(containsUConvert(spirv)) << "SPIR-V should contain OpUConvert instruction for variable uint16_t array indexing.\n" << "Generated SPIR-V:\n" << spirv; } // Test 3: Indexing an array with a constant index of type uint8_t should NOT generate a zero extension. // Glslang generates small constants as regular 32-bit integers. TEST_F(SpvPatternTest, Uint8ConstantIndexNoConversion) { const std::string shaderSource = R"( #version 450 core #extension GL_EXT_shader_explicit_arithmetic_types : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void main() { float arr[200]; float x = arr[uint8_t(150)]; // Constant uint8_t index } )"; std::string spirv = compileShaderToSpirv(shaderSource, EShLangCompute); // Check that the SPIR-V does NOT contain OpUConvert instruction for constant uint8_t index. // Glslang generates small constants as regular 32-bit integers, so no conversion is needed. EXPECT_FALSE(containsUConvert(spirv)) << "SPIR-V should not contain OpUConvert instruction for constant uint8_t array indexing.\n" << "Generated SPIR-V:\n" << spirv; } // Test 3: Indexing an array with a constant index of type uint16_t should NOT generate a zero extension. // (Glslang generates small constants as regular 32-bit integers.) TEST_F(SpvPatternTest, Uint16ConstantIndexNoConversion) { const std::string shaderSource = R"( #version 450 core #extension GL_EXT_shader_explicit_arithmetic_types : enable layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void main() { float arr[200]; float x = arr[uint16_t(150)]; // Constant uint16_t index } )"; std::string spirv = compileShaderToSpirv(shaderSource, EShLangCompute); // Check that the SPIR-V does NOT contain OpUConvert instruction for constant uint16_t index. // Glslang generates small constants as regular 32-bit integers, so no conversion is needed. EXPECT_FALSE(containsUConvert(spirv)) << "SPIR-V should not contain OpUConvert instruction for constant uint16_t array indexing.\n" << "Generated SPIR-V:\n" << spirv; } } // namespace glslangtestglslang-16.0.0/gtests/StructName.cpp000066400000000000000000000150441506534232700173420ustar00rootroot00000000000000// Copyright (C) 2025 NVIDIA Corporation // // 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. #include #include "TestFixture.h" namespace glslangtest { namespace { using StructNameTest = GlslangTest<::testing::Test>; // Test the original bug report case from issue #3931. TEST_F(StructNameTest, StructNameAsStructMember) { const std::string inputFname = GlobalTestSettings.testRoot + "/struct_name_as_struct_member.frag"; std::string input; tryLoadFile(inputFname, "input", &input); EShMessages controls = DeriveOptions(Source::GLSL, Semantics::OpenGL, Target::AST); GlslangResult result = compileAndLink("struct_name_as_struct_member.frag", input, "", controls, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0); // Should NOT have the original syntax error that was reported in the GitHub issue. EXPECT_EQ(result.linkingError.find("syntax error, unexpected TYPE_NAME, expecting IDENTIFIER"), std::string::npos); // Should compile successfully. EXPECT_EQ(result.shaderResults[0].output.find("compilation errors"), std::string::npos); } // Test struct parameter after non-struct parameter (minimal regression test). TEST_F(StructNameTest, StructParameterAfterNonStruct) { const std::string inputFname = GlobalTestSettings.testRoot + "/struct_parameter_after_non_struct.frag"; std::string input; tryLoadFile(inputFname, "input", &input); EShMessages controls = DeriveOptions(Source::GLSL, Semantics::OpenGL, Target::AST); GlslangResult result = compileAndLink("struct_parameter_after_non_struct.frag", input, "", controls, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0); // Should NOT have syntax errors related to struct types in function parameters. EXPECT_EQ(result.linkingError.find("syntax error, unexpected IDENTIFIER"), std::string::npos); EXPECT_EQ(result.shaderResults[0].output.find("syntax error, unexpected IDENTIFIER"), std::string::npos); // Should compile successfully. EXPECT_EQ(result.shaderResults[0].output.find("compilation errors"), std::string::npos); } // Test struct names as member names in declarator lists (original issue #3931) - More comprehensive patterns. TEST_F(StructNameTest, StructMemberDeclaratorLists) { const std::string inputFname = GlobalTestSettings.testRoot + "/struct_member_declarator_lists.frag"; std::string input; tryLoadFile(inputFname, "input", &input); EShMessages controls = DeriveOptions(Source::GLSL, Semantics::OpenGL, Target::AST); GlslangResult result = compileAndLink("struct_member_declarator_lists.frag", input, "", controls, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0); // Should NOT have the original syntax error from issue #3931. EXPECT_EQ(result.linkingError.find("syntax error, unexpected TYPE_NAME, expecting IDENTIFIER"), std::string::npos); EXPECT_EQ(result.shaderResults[0].output.find("syntax error, unexpected TYPE_NAME, expecting IDENTIFIER"), std::string::npos); // Should compile successfully. EXPECT_EQ(result.shaderResults[0].output.find("compilation errors"), std::string::npos); } // Test function parameters with struct types (regression test for issue #4001). TEST_F(StructNameTest, StructFunctionParameters) { const std::string inputFname = GlobalTestSettings.testRoot + "/struct_function_parameters.frag"; std::string input; tryLoadFile(inputFname, "input", &input); EShMessages controls = DeriveOptions(Source::GLSL, Semantics::OpenGL, Target::AST); GlslangResult result = compileAndLink("struct_function_parameters.frag", input, "", controls, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0); // Should NOT have syntax errors related to struct types in function parameters. EXPECT_EQ(result.linkingError.find("syntax error, unexpected IDENTIFIER"), std::string::npos); EXPECT_EQ(result.shaderResults[0].output.find("syntax error, unexpected IDENTIFIER"), std::string::npos); // Should compile successfully. EXPECT_EQ(result.shaderResults[0].output.find("compilation errors"), std::string::npos); } // Test struct construction patterns - comprehensive patterns including struct constructors. TEST_F(StructNameTest, StructConstructionPatterns) { const std::string inputFname = GlobalTestSettings.testRoot + "/struct_construction_patterns.frag"; std::string input; tryLoadFile(inputFname, "input", &input); EShMessages controls = DeriveOptions(Source::GLSL, Semantics::OpenGL, Target::AST); GlslangResult result = compileAndLink("struct_construction_patterns.frag", input, "", controls, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0); // Should NOT have syntax errors in struct construction patterns. EXPECT_EQ(result.linkingError.find("syntax error, unexpected IDENTIFIER"), std::string::npos); EXPECT_EQ(result.shaderResults[0].output.find("syntax error, unexpected IDENTIFIER"), std::string::npos); // Should NOT have the original syntax error from issue #3931. EXPECT_EQ(result.linkingError.find("syntax error, unexpected TYPE_NAME, expecting IDENTIFIER"), std::string::npos); EXPECT_EQ(result.shaderResults[0].output.find("syntax error, unexpected TYPE_NAME, expecting IDENTIFIER"), std::string::npos); // Should compile successfully. EXPECT_EQ(result.shaderResults[0].output.find("compilation errors"), std::string::npos); } } // anonymous namespace } // namespace glslangtestglslang-16.0.0/gtests/TestFixture.cpp000066400000000000000000000136561506534232700175520ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "TestFixture.h" namespace glslangtest { std::string FileNameAsCustomTestSuffix( const ::testing::TestParamInfo& info) { std::string name = info.param; // A valid test case suffix cannot have '.' and '-' inside. std::replace(name.begin(), name.end(), '.', '_'); std::replace(name.begin(), name.end(), '-', '_'); return name; } EShLanguage GetShaderStage(const std::string& stage) { if (stage == "vert") { return EShLangVertex; } else if (stage == "tesc") { return EShLangTessControl; } else if (stage == "tese") { return EShLangTessEvaluation; } else if (stage == "geom") { return EShLangGeometry; } else if (stage == "frag") { return EShLangFragment; } else if (stage == "comp") { return EShLangCompute; } else if (stage == "rgen") { return EShLangRayGen; } else if (stage == "rint") { return EShLangIntersect; } else if (stage == "rahit") { return EShLangAnyHit; } else if (stage == "rchit") { return EShLangClosestHit; } else if (stage == "rmiss") { return EShLangMiss; } else if (stage == "rcall") { return EShLangCallable; } else if (stage == "task") { return EShLangTask; } else if (stage == "mesh") { return EShLangMesh; } else { assert(0 && "Unknown shader stage"); return EShLangCount; } } EShMessages DeriveOptions(Source source, Semantics semantics, Target target) { EShMessages result = EShMsgCascadingErrors; switch (source) { case Source::GLSL: break; case Source::HLSL: result = static_cast(result | EShMsgReadHlsl); break; } switch (target) { case Target::AST: result = static_cast(result | EShMsgAST); break; case Target::Spv: result = static_cast(result | EShMsgSpvRules); result = static_cast(result | EShMsgKeepUncalled); break; case Target::BothASTAndSpv: result = static_cast(result | EShMsgSpvRules | EShMsgAST); result = static_cast(result | EShMsgKeepUncalled); break; }; switch (semantics) { case Semantics::OpenGL: break; case Semantics::Vulkan: result = static_cast(result | EShMsgVulkanRules | EShMsgSpvRules); break; } result = static_cast(result | EShMsgHlslLegalization | EShMsgValidateCrossStageIO); return result; } std::pair ReadFile(const std::string& path) { std::ifstream fstream(path, std::ios::in); if (fstream) { std::string contents; fstream.seekg(0, std::ios::end); contents.reserve((std::string::size_type)fstream.tellg()); fstream.seekg(0, std::ios::beg); contents.assign((std::istreambuf_iterator(fstream)), std::istreambuf_iterator()); return std::make_pair(true, contents); } return std::make_pair(false, ""); } std::pair > ReadSpvBinaryFile(const std::string& path) { std::ifstream fstream(path, std::fstream::in | std::fstream::binary); if (!fstream) return std::make_pair(false, std::vector()); std::vector contents; // Reserve space (for efficiency, not for correctness) fstream.seekg(0, fstream.end); contents.reserve(size_t(fstream.tellg()) / sizeof(std::uint32_t)); fstream.seekg(0, fstream.beg); // There is no istream iterator traversing by uint32_t, so we must loop. while (!fstream.eof()) { std::uint32_t inWord; fstream.read((char *)&inWord, sizeof(inWord)); if (!fstream.eof()) contents.push_back(inWord); } return std::make_pair(true, contents); // hopefully, c++11 move semantics optimizes the copy away. } bool WriteFile(const std::string& path, const std::string& contents) { std::ofstream fstream(path, std::ios::out); if (!fstream) return false; fstream << contents; fstream.flush(); return true; } std::string GetSuffix(const std::string& name) { const size_t pos = name.rfind('.'); return (pos == std::string::npos) ? "" : name.substr(name.rfind('.') + 1); } } // namespace glslangtest glslang-16.0.0/gtests/TestFixture.h000066400000000000000000000703671506534232700172210ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #ifndef GLSLANG_GTESTS_TEST_FIXTURE_H #define GLSLANG_GTESTS_TEST_FIXTURE_H #include #include #include #include #include #include #include #include #include "SPIRV/GlslangToSpv.h" #include "SPIRV/disassemble.h" #include "SPIRV/doc.h" #include "glslang/Include/Types.h" #include "glslang/Public/ResourceLimits.h" #include "glslang/Public/ShaderLang.h" #include "Initializer.h" #include "Settings.h" namespace glslangtest { // This function is used to provide custom test name suffixes based on the // shader source file names. Otherwise, the test name suffixes will just be // numbers, which are not quite obvious. std::string FileNameAsCustomTestSuffix( const ::testing::TestParamInfo& info); enum class Source { GLSL, HLSL, }; // Enum for shader compilation semantics. enum class Semantics { OpenGL, Vulkan }; // Enum for compilation target. enum class Target { AST, Spv, BothASTAndSpv, }; EShLanguage GetShaderStage(const std::string& stage); EShMessages DeriveOptions(Source, Semantics, Target); // Reads the content of the file at the given |path|. On success, returns true // and the contents; otherwise, returns false and an empty string. std::pair ReadFile(const std::string& path); std::pair > ReadSpvBinaryFile(const std::string& path); // Writes the given |contents| into the file at the given |path|. Returns true // on successful output. bool WriteFile(const std::string& path, const std::string& contents); // Returns the suffix of the given |name|. std::string GetSuffix(const std::string& name); // Base class for glslang integration tests. It contains many handy utility-like // methods such as reading shader source files, compiling into AST/SPIR-V, and // comparing with expected outputs. // // To write value-Parameterized tests: // using ValueParamTest = GlslangTest<::testing::TestWithParam>; // To use as normal fixture: // using FixtureTest = GlslangTest<::testing::Test>; template class GlslangTest : public GT { public: GlslangTest() : defaultVersion(100), defaultProfile(ENoProfile), forceVersionProfile(false), isForwardCompatible(false) { // Perform validation by default. spirvOptions.validate = true; } // Tries to load the contents from the file at the given |path|. On success, // writes the contents into |contents|. On failure, errors out. void tryLoadFile(const std::string& path, const std::string& tag, std::string* contents) { bool fileReadOk; std::tie(fileReadOk, *contents) = ReadFile(path); ASSERT_TRUE(fileReadOk) << "Cannot open " << tag << " file: " << path; } // Tries to load the contents from the file at the given |path|. On success, // writes the contents into |contents|. On failure, errors out. void tryLoadSpvFile(const std::string& path, const std::string& tag, std::vector& contents) { bool fileReadOk; std::tie(fileReadOk, contents) = ReadSpvBinaryFile(path); ASSERT_TRUE(fileReadOk) << "Cannot open " << tag << " file: " << path; } // Checks the equality of |expected| and |real|. If they are not equal, // write |real| to the given file named as |fname| if update mode is on. void checkEqAndUpdateIfRequested(const std::string& expected, const std::string& real, const std::string& fname, const std::string& errorsAndWarnings = "") { // In order to output the message we want under proper circumstances, // we need the following operator<< stuff. EXPECT_EQ(expected, real) << (GlobalTestSettings.updateMode ? ("Mismatch found and update mode turned on - " "flushing expected result output.\n") : "") << "The following warnings/errors occurred:\n" << errorsAndWarnings; // Update the expected output file if requested. // It looks weird to duplicate the comparison between expected_output // and stream.str(). However, if creating a variable for the comparison // result, we cannot have pretty print of the string diff in the above. if (GlobalTestSettings.updateMode && expected != real) { EXPECT_TRUE(WriteFile(fname, real)) << "Flushing failed"; } } struct ShaderResult { std::string shaderName; std::string output; std::string error; }; // A struct for holding all the information returned by glslang compilation // and linking. struct GlslangResult { std::vector shaderResults; std::string linkingOutput; std::string linkingError; bool validationResult; std::string spirvWarningsErrors; std::string spirv; // Optional SPIR-V disassembly text. }; // Compiles and the given source |code| of the given shader |stage| into // the target under the semantics conveyed via |controls|. Returns true // and modifies |shader| on success. bool compile(glslang::TShader* shader, const std::string& code, const std::string& entryPointName, EShMessages controls, const TBuiltInResource* resources=nullptr, const std::string* shaderName=nullptr) { const char* shaderStrings = code.data(); const int shaderLengths = static_cast(code.size()); const char* shaderNames = nullptr; if ((controls & EShMsgDebugInfo) && shaderName != nullptr) { shaderNames = shaderName->data(); shader->setStringsWithLengthsAndNames( &shaderStrings, &shaderLengths, &shaderNames, 1); } else shader->setStringsWithLengths(&shaderStrings, &shaderLengths, 1); if (!entryPointName.empty()) shader->setEntryPoint(entryPointName.c_str()); // A includer that always assumes header name is a relative path to the test folder. class GlslangTestIncluder : public glslang::TShader::Includer { public: virtual IncludeResult* includeLocal(const char* headerName, const char* /*includerName*/, size_t /*inclusionDepth*/) override { std::string path = GLSLANG_TEST_DIRECTORY; path += '/'; path += headerName; std::replace(path.begin(), path.end(), '\\', '/'); auto [success, fileContent] = ReadFile(path); if (success) { auto buffer = new char[fileContent.size() + 1]; std::copy(fileContent.begin(), fileContent.end(), buffer); buffer[fileContent.size()] = '\0'; return new IncludeResult(headerName, buffer, fileContent.size(), buffer); } return nullptr; } virtual void releaseInclude(IncludeResult* result) override { if (result != nullptr) { delete[] static_cast(result->userData); delete result; } } }; GlslangTestIncluder includer; return shader->parse((resources ? resources : GetDefaultResources()), defaultVersion, isForwardCompatible, controls, includer); } // Compiles and links the given source |code| of the given shader // |stage| into the target under the semantics specified via |controls|. // Returns a GlslangResult instance containing all the information generated // during the process. If the target includes SPIR-V, also disassembles // the result and returns disassembly text. GlslangResult compileAndLink( const std::string& shaderName, const std::string& code, const std::string& entryPointName, EShMessages controls, glslang::EShTargetClientVersion clientTargetVersion, glslang::EShTargetLanguageVersion targetLanguageVersion, bool flattenUniformArrays = false, EShTextureSamplerTransformMode texSampTransMode = EShTexSampTransKeep, bool enableOptimizer = false, bool enableDebug = false, bool enableNonSemanticShaderDebugInfo = false, bool automap = true) { const EShLanguage stage = GetShaderStage(GetSuffix(shaderName)); glslang::TShader shader(stage); if (automap) { shader.setAutoMapLocations(true); shader.setAutoMapBindings(true); } if (enableDebug) { shader.setDebugInfo(true); } if (enableNonSemanticShaderDebugInfo) { assert(enableDebug && "Debug must be on for non-semantic debug info"); } shader.setTextureSamplerTransformMode(texSampTransMode); #ifdef ENABLE_HLSL shader.setFlattenUniformArrays(flattenUniformArrays); #endif if (controls & EShMsgSpvRules) { if (controls & EShMsgVulkanRules) { shader.setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl : glslang::EShSourceGlsl, stage, glslang::EShClientVulkan, 100); shader.setEnvClient(glslang::EShClientVulkan, clientTargetVersion); shader.setEnvTarget(glslang::EShTargetSpv, targetLanguageVersion); } else { shader.setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl : glslang::EShSourceGlsl, stage, glslang::EShClientOpenGL, 100); shader.setEnvClient(glslang::EShClientOpenGL, clientTargetVersion); shader.setEnvTarget(glslang::EshTargetSpv, glslang::EShTargetSpv_1_0); } } if (options().compileOnly) shader.setCompileOnly(); bool success = compile( &shader, code, entryPointName, controls, nullptr, &shaderName); glslang::TProgram program; spv::SpvBuildLogger logger; std::vector spirv_binary; if (!options().compileOnly) { program.addShader(&shader); success &= program.link(controls); if (success) program.mapIO(); if (success && (controls & EShMsgSpvRules)) { options().disableOptimizer = !enableOptimizer; options().generateDebugInfo = enableDebug; options().emitNonSemanticShaderDebugInfo = enableNonSemanticShaderDebugInfo; options().emitNonSemanticShaderDebugSource = enableNonSemanticShaderDebugInfo; glslang::GlslangToSpv(*program.getIntermediate(stage), spirv_binary, &logger, &options()); } else { return {{ {shaderName, shader.getInfoLog(), shader.getInfoDebugLog()}, }, program.getInfoLog(), program.getInfoDebugLog(), true, "", ""}; } } else { options().disableOptimizer = !enableOptimizer; options().generateDebugInfo = enableDebug; options().emitNonSemanticShaderDebugInfo = enableNonSemanticShaderDebugInfo; options().emitNonSemanticShaderDebugSource = enableNonSemanticShaderDebugInfo; glslang::GlslangToSpv(*shader.getIntermediate(), spirv_binary, &logger, &options()); } std::ostringstream disassembly_stream; spv::Disassemble(disassembly_stream, spirv_binary); bool validation_result = !options().validate || logger.getAllMessages().empty(); return {{ {shaderName, shader.getInfoLog(), shader.getInfoDebugLog()}, }, program.getInfoLog(), program.getInfoDebugLog(), validation_result, logger.getAllMessages(), disassembly_stream.str()}; } // Compiles and links the given source |code| of the given shader // |stage| into the target under the semantics specified via |controls|. // Returns a GlslangResult instance containing all the information generated // during the process. If the target includes SPIR-V, also disassembles // the result and returns disassembly text. GlslangResult compileLinkIoMap( const std::string shaderName, const std::string& code, const std::string& entryPointName, EShMessages controls, int baseSamplerBinding, int baseTextureBinding, int baseImageBinding, int baseUboBinding, int baseSsboBinding, bool autoMapBindings, bool flattenUniformArrays) { const EShLanguage stage = GetShaderStage(GetSuffix(shaderName)); glslang::TShader shader(stage); shader.setShiftSamplerBinding(baseSamplerBinding); shader.setShiftTextureBinding(baseTextureBinding); shader.setShiftImageBinding(baseImageBinding); shader.setShiftUboBinding(baseUboBinding); shader.setShiftSsboBinding(baseSsboBinding); shader.setAutoMapBindings(autoMapBindings); shader.setAutoMapLocations(true); #ifdef ENABLE_HLSL shader.setFlattenUniformArrays(flattenUniformArrays); #endif bool success = compile(&shader, code, entryPointName, controls); glslang::TProgram program; program.addShader(&shader); success &= program.link(controls); if (success) program.mapIO(); spv::SpvBuildLogger logger; if (success && (controls & EShMsgSpvRules)) { std::vector spirv_binary; glslang::GlslangToSpv(*program.getIntermediate(stage), spirv_binary, &logger, &options()); std::ostringstream disassembly_stream; spv::Disassemble(disassembly_stream, spirv_binary); bool validation_result = !options().validate || logger.getAllMessages().empty(); return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},}, program.getInfoLog(), program.getInfoDebugLog(), validation_result, logger.getAllMessages(), disassembly_stream.str()}; } else { return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},}, program.getInfoLog(), program.getInfoDebugLog(), true, "", ""}; } } void outputResultToStream(std::ostringstream* stream, const GlslangResult& result, EShMessages controls) { const auto outputIfNotEmpty = [&stream](const std::string& str) { if (!str.empty()) *stream << str << "\n"; }; for (const auto& shaderResult : result.shaderResults) { *stream << shaderResult.shaderName << "\n"; outputIfNotEmpty(shaderResult.output); outputIfNotEmpty(shaderResult.error); } outputIfNotEmpty(result.linkingOutput); outputIfNotEmpty(result.linkingError); if (!result.validationResult) { *stream << "Validation failed\n"; } if (controls & EShMsgSpvRules) { *stream << (result.spirv.empty() ? "SPIR-V is not generated for failed compile or link\n" : result.spirv); } } void loadFileCompileAndCheck(const std::string& testDir, const std::string& testName, Source source, Semantics semantics, glslang::EShTargetClientVersion clientTargetVersion, glslang::EShTargetLanguageVersion targetLanguageVersion, Target target, bool automap = true, const std::string& entryPointName="", const std::string& baseDir="/baseResults/", const bool enableOptimizer = false, const bool enableDebug = false, const bool enableNonSemanticShaderDebugInfo = false) { const std::string inputFname = testDir + "/" + testName; const std::string expectedOutputFname = testDir + baseDir + testName + ".out"; std::string input, expectedOutput; tryLoadFile(inputFname, "input", &input); tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); EShMessages controls = DeriveOptions(source, semantics, target); if (enableOptimizer) controls = static_cast(controls & ~EShMsgHlslLegalization); if (enableDebug) controls = static_cast(controls | EShMsgDebugInfo); GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion, targetLanguageVersion, false, EShTexSampTransKeep, enableOptimizer, enableDebug, enableNonSemanticShaderDebugInfo, automap); // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, result.spirvWarningsErrors); } void loadFileCompileAndCheckWithOptions(const std::string &testDir, const std::string &testName, Source source, Semantics semantics, glslang::EShTargetClientVersion clientTargetVersion, glslang::EShTargetLanguageVersion targetLanguageVersion, Target target, bool automap = true, const std::string &entryPointName = "", const std::string &baseDir = "/baseResults/", const EShMessages additionalOptions = EShMessages::EShMsgDefault) { const std::string inputFname = testDir + "/" + testName; const std::string expectedOutputFname = testDir + baseDir + testName + ".out"; std::string input, expectedOutput; tryLoadFile(inputFname, "input", &input); tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); EShMessages controls = DeriveOptions(source, semantics, target); controls = static_cast(controls | additionalOptions); GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion, targetLanguageVersion, false, EShTexSampTransKeep, false, automap); // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname); } void loadFileCompileFlattenUniformsAndCheck(const std::string& testDir, const std::string& testName, Source source, Semantics semantics, Target target, const std::string& entryPointName="") { const std::string inputFname = testDir + "/" + testName; const std::string expectedOutputFname = testDir + "/baseResults/" + testName + ".out"; std::string input, expectedOutput; tryLoadFile(inputFname, "input", &input); tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); const EShMessages controls = DeriveOptions(source, semantics, target); GlslangResult result = compileAndLink(testName, input, entryPointName, controls, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, true); // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, result.spirvWarningsErrors); } void loadFileCompileIoMapAndCheck(const std::string& testDir, const std::string& testName, Source source, Semantics semantics, Target target, const std::string& entryPointName, int baseSamplerBinding, int baseTextureBinding, int baseImageBinding, int baseUboBinding, int baseSsboBinding, bool autoMapBindings, bool flattenUniformArrays) { const std::string inputFname = testDir + "/" + testName; const std::string expectedOutputFname = testDir + "/baseResults/" + testName + ".out"; std::string input, expectedOutput; tryLoadFile(inputFname, "input", &input); tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); const EShMessages controls = DeriveOptions(source, semantics, target); GlslangResult result = compileLinkIoMap(testName, input, entryPointName, controls, baseSamplerBinding, baseTextureBinding, baseImageBinding, baseUboBinding, baseSsboBinding, autoMapBindings, flattenUniformArrays); // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, result.spirvWarningsErrors); } // Preprocesses the given |source| code. On success, returns true, the // preprocessed shader, and warning messages. Otherwise, returns false, an // empty string, and error messages. std::tuple preprocess( const std::string& source) { const char* shaderStrings = source.data(); const int shaderLengths = static_cast(source.size()); glslang::TShader shader(EShLangVertex); shader.setStringsWithLengths(&shaderStrings, &shaderLengths, 1); std::string ppShader; glslang::TShader::ForbidIncluder includer; const bool success = shader.preprocess( GetDefaultResources(), defaultVersion, defaultProfile, forceVersionProfile, isForwardCompatible, (EShMessages)(EShMsgOnlyPreprocessor | EShMsgCascadingErrors), &ppShader, includer); std::string log = shader.getInfoLog(); log += shader.getInfoDebugLog(); if (success) { return std::make_tuple(true, ppShader, log); } else { return std::make_tuple(false, "", log); } } void loadFilePreprocessAndCheck(const std::string& testDir, const std::string& testName) { const std::string inputFname = testDir + "/" + testName; const std::string expectedOutputFname = testDir + "/baseResults/" + testName + ".out"; const std::string expectedErrorFname = testDir + "/baseResults/" + testName + ".err"; std::string input, expectedOutput, expectedError; tryLoadFile(inputFname, "input", &input); tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); tryLoadFile(expectedErrorFname, "expected error", &expectedError); bool ppOk; std::string output, error; std::tie(ppOk, output, error) = preprocess(input); if (!output.empty()) output += '\n'; if (!error.empty()) error += '\n'; checkEqAndUpdateIfRequested(expectedOutput, output, expectedOutputFname); checkEqAndUpdateIfRequested(expectedError, error, expectedErrorFname); } void loadCompileUpgradeTextureToSampledTextureAndDropSamplersAndCheck(const std::string& testDir, const std::string& testName, Source source, Semantics semantics, Target target, const std::string& entryPointName = "") { const std::string inputFname = testDir + "/" + testName; const std::string expectedOutputFname = testDir + "/baseResults/" + testName + ".out"; std::string input, expectedOutput; tryLoadFile(inputFname, "input", &input); tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); const EShMessages controls = DeriveOptions(source, semantics, target); GlslangResult result = compileAndLink(testName, input, entryPointName, controls, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, false, EShTexSampTransUpgradeTextureRemoveSampler); // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, result.spirvWarningsErrors); } glslang::SpvOptions& options() { return spirvOptions; } private: const int defaultVersion; const EProfile defaultProfile; const bool forceVersionProfile; const bool isForwardCompatible; glslang::SpvOptions spirvOptions; }; } // namespace glslangtest #endif // GLSLANG_GTESTS_TEST_FIXTURE_H glslang-16.0.0/gtests/VkRelaxed.FromFile.cpp000066400000000000000000000306221506534232700206430ustar00rootroot00000000000000// // Copyright (C) 2016-2017 Google, Inc. // Copyright (C) 2020 The Khronos Group Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include #include #include "TestFixture.h" #include "glslang/MachineIndependent/iomapper.h" #include "glslang/MachineIndependent/reflection.h" namespace glslangtest { namespace { struct vkRelaxedData { std::vector fileNames; std::vector> resourceSetBindings; }; using VulkanRelaxedTest = GlslangTest <::testing::TestWithParam>; template std::string interfaceName(T symbol) { return symbol.getType()->getBasicType() == glslang::EbtBlock ? std::string(symbol.getType()->getTypeName().c_str()) : symbol.name; } bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) { bool success = true; // Verify IO Mapping by generating reflection for each stage individually // and comparing layout qualifiers on the results int reflectionOptions = EShReflectionDefault; //reflectionOptions |= EShReflectionStrictArraySuffix; //reflectionOptions |= EShReflectionBasicArraySuffix; reflectionOptions |= EShReflectionIntermediateIO; reflectionOptions |= EShReflectionSeparateBuffers; reflectionOptions |= EShReflectionAllBlockVariables; //reflectionOptions |= EShReflectionUnwrapIOBlocks; success &= program.buildReflection(reflectionOptions); // check that the reflection output from the individual stages all makes sense.. std::vector stageReflections; for (int s = 0; s < EShLangCount; ++s) { if (program.getIntermediate((EShLanguage)s)) { stageReflections.emplace_back((EShReflectionOptions)reflectionOptions, (EShLanguage)s, (EShLanguage)s); success &= stageReflections.back().addStage((EShLanguage)s, *program.getIntermediate((EShLanguage)s)); } } // check that input/output locations match between stages auto it = stageReflections.begin(); auto nextIt = it + 1; for (; nextIt != stageReflections.end(); it++, nextIt++) { int numOut = it->getNumPipeOutputs(); std::map pipeOut; for (int i = 0; i < numOut; i++) { const glslang::TObjectReflection& out = it->getPipeOutput(i); std::string name = interfaceName(out); pipeOut[name] = &out; } int numIn = nextIt->getNumPipeInputs(); for (int i = 0; i < numIn; i++) { auto in = nextIt->getPipeInput(i); std::string name = interfaceName(in); auto out = pipeOut.find(name); if (out != pipeOut.end()) { auto inQualifier = in.getType()->getQualifier(); auto outQualifier = out->second->getType()->getQualifier(); success &= outQualifier.layoutLocation == inQualifier.layoutLocation; // 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; } } } // compare uniforms in each stage to the program { int totalUniforms = program.getNumUniformVariables(); std::map programUniforms; for (int i = 0; i < totalUniforms; i++) { const glslang::TObjectReflection& uniform = program.getUniform(i); std::string name = interfaceName(uniform); programUniforms[name] = &uniform; } it = stageReflections.begin(); for (; it != stageReflections.end(); it++) { int numUniform = it->getNumUniforms(); std::map uniforms; for (int i = 0; i < numUniform; i++) { glslang::TObjectReflection uniform = it->getUniform(i); std::string name = interfaceName(uniform); auto programUniform = programUniforms.find(name); if (programUniform != programUniforms.end()) { auto stageQualifier = uniform.getType()->getQualifier(); auto programQualifier = programUniform->second->getType()->getQualifier(); success &= stageQualifier.layoutLocation == programQualifier.layoutLocation; success &= stageQualifier.layoutBinding == programQualifier.layoutBinding; success &= stageQualifier.layoutSet == programQualifier.layoutSet; } else { success &= false; } } } } // compare uniform blocks in each stage to the program table { int totalUniforms = program.getNumUniformBlocks(); std::map programUniforms; for (int i = 0; i < totalUniforms; i++) { const glslang::TObjectReflection& uniform = program.getUniformBlock(i); std::string name = interfaceName(uniform); programUniforms[name] = &uniform; } it = stageReflections.begin(); for (; it != stageReflections.end(); it++) { int numUniform = it->getNumUniformBlocks(); std::map uniforms; for (int i = 0; i < numUniform; i++) { glslang::TObjectReflection uniform = it->getUniformBlock(i); std::string name = interfaceName(uniform); auto programUniform = programUniforms.find(name); if (programUniform != programUniforms.end()) { auto stageQualifier = uniform.getType()->getQualifier(); auto programQualifier = programUniform->second->getType()->getQualifier(); success &= stageQualifier.layoutLocation == programQualifier.layoutLocation; success &= stageQualifier.layoutBinding == programQualifier.layoutBinding; success &= stageQualifier.layoutSet == programQualifier.layoutSet; } else { success &= false; } } } } if (!success) { linkingError += "Mismatched cross-stage IO\n"; } return success; } TEST_P(VulkanRelaxedTest, FromFile) { const auto& fileNames = GetParam().fileNames; const auto& resourceSetBindings = GetParam().resourceSetBindings; Semantics semantics = Semantics::Vulkan; const size_t fileCount = fileNames.size(); const EShMessages controls = DeriveOptions(Source::GLSL, semantics, Target::BothASTAndSpv); GlslangResult result; // Compile each input shader file. bool success = true; std::vector> shaders; for (size_t i = 0; i < fileCount; ++i) { std::string contents; tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i], "input", &contents); shaders.emplace_back( new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i])))); auto* shader = shaders.back().get(); shader->setAutoMapLocations(true); shader->setAutoMapBindings(true); shader->setEnvInput(glslang::EShSourceGlsl, shader->getStage(), glslang::EShClientVulkan, 100); shader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1); shader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0); // Use vulkan relaxed option shader->setEnvInputVulkanRulesRelaxed(); success &= compile(shader, contents, "", controls); result.shaderResults.push_back( { fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog() }); } // Link all of them. glslang::TProgram program; for (const auto& shader : shaders) program.addShader(shader.get()); success &= program.link(controls); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); if (!resourceSetBindings.empty()) { assert(resourceSetBindings.size() == fileNames.size()); for (size_t i = 0; i < shaders.size(); i++) shaders[i]->setResourceSetBinding(resourceSetBindings[i]); } glslang::TIoMapResolver *resolver; for (unsigned stage = 0; stage < EShLangCount; stage++) { resolver = program.getGlslIoResolver((EShLanguage)stage); if (resolver) break; } glslang::TIoMapper *ioMapper = glslang::GetGlslIoMapper(); if (success) { success &= program.mapIO(resolver, ioMapper); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); } delete ioMapper; delete resolver; success &= verifyIOMapping(result.linkingError, program); result.validationResult = success; if (success && (controls & EShMsgSpvRules)) { for (int stage = 0; stage < EShLangCount; ++stage) { if (program.getIntermediate((EShLanguage)stage)) { spv::SpvBuildLogger logger; std::vector spirv_binary; options().disableOptimizer = false; glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv_binary, &logger, &options()); std::ostringstream disassembly_stream; spv::Disassemble(disassembly_stream, spirv_binary); result.spirvWarningsErrors += logger.getAllMessages(); result.spirv += disassembly_stream.str(); result.validationResult &= !options().validate || logger.getAllMessages().empty(); } } } std::ostringstream stream; outputResultToStream(&stream, result, controls); // Check with expected results. const std::string expectedOutputFname = GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out"; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, result.spirvWarningsErrors); } // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, VulkanRelaxedTest, ::testing::ValuesIn(std::vector({ {{"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"} } }, {{"vk.relaxed.syntaxerror.vert", "vk.relaxed.syntaxerror.frag"}, {}}, })) ); // clang-format on } // anonymous namespace } // namespace glslangtest glslang-16.0.0/gtests/main.cpp000066400000000000000000000057531506534232700162070ustar00rootroot00000000000000// // Copyright (C) 2016 Google, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include #include #include #include "Initializer.h" #include "Settings.h" int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); std::unique_ptr initializer( new glslangtest::GlslangInitializer); glslangtest::GlobalTestSettings.initializer = initializer.get(); for (int i = 1; i < argc; ++i) { if (std::string("--update-mode") == argv[i]) { glslangtest::GlobalTestSettings.updateMode = true; } if (std::string("--test-root") == argv[i]) { // Allow the user set the test root directory. This is useful // for testing with files from another source tree. if (i + 1 < argc) { glslangtest::GlobalTestSettings.testRoot = argv[i + 1]; i++; } else { printf("error: --test-root requires an argument\n"); return 1; } } if (std::string("--help") == argv[i]) { printf("\nExtra options:\n\n"); printf(" --update-mode\n Update the golden results for the tests.\n"); printf(" --test-root \n Specify the test root directory (useful for testing with\n files from another source tree).\n"); } } const int result = RUN_ALL_TESTS(); glslangtest::GlobalTestSettings.initializer = nullptr; return result; } glslang-16.0.0/gtests/pch.h000066400000000000000000000032161506534232700154720ustar00rootroot00000000000000#ifndef _PCH_H #define _PCH_H // // Copyright (C) 2018 The Khronos Group Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // // Neither the name of 3Dlabs Inc. Ltd. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // #include "TestFixture.h" #endif /* _PCH_H */ glslang-16.0.0/known_good.json000066400000000000000000000012341506534232700162730ustar00rootroot00000000000000{ "commits" : [ { "name" : "spirv-tools", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", "commit": "7f2d9ee926f98fc77a3ed1e1e0f113b8c9c49458" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", "commit" : "01e0577914a75a2569c846778c2f93aa8e6feddd" }, { "name": "googletest", "site": "github", "subrepo": "google/googletest", "subdir": "External/googletest", "commit": "v1.14.0" } ] } glslang-16.0.0/known_good_khr.json000066400000000000000000000011701506534232700171360ustar00rootroot00000000000000{ "commits" : [ { "name" : "spirv-tools", "site" : "gitlab", "subrepo" : "spirv/spirv-tools", "subdir" : "External/spirv-tools", "commit" : "d4e2c2eaa6fd2e9f9cd218ea9add9b0c8ae759ba" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "gitlab", "subrepo" : "spirv/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", "commit" : "gitlab-prelim-rc4" }, { "name": "googletest", "site": "github", "subrepo": "google/googletest", "subdir": "External/googletest", "commit": "v1.14.0" } ] } glslang-16.0.0/kokoro/000077500000000000000000000000001506534232700145405ustar00rootroot00000000000000glslang-16.0.0/kokoro/android-ndk-build/000077500000000000000000000000001506534232700200275ustar00rootroot00000000000000glslang-16.0.0/kokoro/android-ndk-build/build-docker.sh000077500000000000000000000036101506534232700227320ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. . /bin/using.sh # Declare the bash `using` function for configuring toolchains. set -x # Display commands being run. using ndk-r27c export NDK_PROJECT_PATH="${ROOT_DIR}/ndk_test" export APP_BUILD_SCRIPT="${ROOT_DIR}/ndk_test/Android.mk" export APP_PLATFORM=android-24 # Vulkan introduced in API 24 echo "Building..." ndk-build -j glslang-16.0.0/kokoro/android-ndk-build/build.sh000077500000000000000000000037551506534232700214770ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" docker run --rm -i \ --volume "${ROOT_DIR}:${ROOT_DIR}" \ --workdir "${ROOT_DIR}" \ --env ROOT_DIR="${ROOT_DIR}" \ --env SCRIPT_DIR="${SCRIPT_DIR}" \ --entrypoint "${SCRIPT_DIR}/build-docker.sh" \ us-east4-docker.pkg.dev/shaderc-build/radial-docker/ubuntu-24.04-amd64/cpp-builder glslang-16.0.0/kokoro/android-ndk-build/continuous.cfg000066400000000000000000000031521506534232700227170ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/android-ndk-build/build.sh" glslang-16.0.0/kokoro/android-ndk-build/presubmit.cfg000066400000000000000000000031511506534232700225220ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/android-ndk-build/build.sh" glslang-16.0.0/kokoro/license-check/000077500000000000000000000000001506534232700172355ustar00rootroot00000000000000glslang-16.0.0/kokoro/license-check/build.sh000077500000000000000000000035751506534232700207050ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" docker run --rm -i \ --volume "${ROOT_DIR}:${ROOT_DIR}:ro" \ --workdir "${ROOT_DIR}" \ us-east4-docker.pkg.dev/shaderc-build/radial-docker/ubuntu-24.04-amd64/license-checker glslang-16.0.0/kokoro/license-check/continuous.cfg000066400000000000000000000031461506534232700221300ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/license-check/build.sh" glslang-16.0.0/kokoro/license-check/presubmit.cfg000066400000000000000000000031451506534232700217330ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/license-check/build.sh" glslang-16.0.0/kokoro/linux-clang-cmake/000077500000000000000000000000001506534232700200375ustar00rootroot00000000000000glslang-16.0.0/kokoro/linux-clang-cmake/build-docker.sh000077500000000000000000000037141506534232700227470ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. . /bin/using.sh # Declare the bash `using` function for configuring toolchains. set -x # Display commands being run. using cmake-3.31.2 using clang-13.0.1 using ninja-1.10.0 using python-3.12 echo "Building..." mkdir /build && cd /build cmake "$ROOT_DIR" -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DENABLE_OPT=0 ninja install glslang-16.0.0/kokoro/linux-clang-cmake/build.sh000077500000000000000000000040461506534232700215010ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" docker run --rm -i \ --volume "${ROOT_DIR}:${ROOT_DIR}:ro" \ --workdir "${ROOT_DIR}" \ --env ROOT_DIR="${ROOT_DIR}" \ --env SCRIPT_DIR="${SCRIPT_DIR}" \ --env BUILD_SHARED_LIBS="${BUILD_SHARED_LIBS:-0}" \ --entrypoint "${SCRIPT_DIR}/build-docker.sh" \ us-east4-docker.pkg.dev/shaderc-build/radial-docker/ubuntu-24.04-amd64/cpp-builder glslang-16.0.0/kokoro/linux-clang-cmake/shared/000077500000000000000000000000001506534232700213055ustar00rootroot00000000000000glslang-16.0.0/kokoro/linux-clang-cmake/shared/continuous.cfg000066400000000000000000000032401506534232700241730ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/linux-clang-cmake/build.sh" env_vars { key: "BUILD_SHARED_LIBS" value: "1" } glslang-16.0.0/kokoro/linux-clang-cmake/shared/presubmit.cfg000066400000000000000000000032371506534232700240050ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/linux-clang-cmake/build.sh" env_vars { key: "BUILD_SHARED_LIBS" value: "1" } glslang-16.0.0/kokoro/linux-clang-cmake/static/000077500000000000000000000000001506534232700213265ustar00rootroot00000000000000glslang-16.0.0/kokoro/linux-clang-cmake/static/continuous.cfg000066400000000000000000000032401506534232700242140ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/linux-clang-cmake/build.sh" env_vars { key: "BUILD_SHARED_LIBS" value: "0" } glslang-16.0.0/kokoro/linux-clang-cmake/static/presubmit.cfg000066400000000000000000000032371506534232700240260ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/linux-clang-cmake/build.sh" env_vars { key: "BUILD_SHARED_LIBS" value: "0" } glslang-16.0.0/kokoro/linux-clang-gn/000077500000000000000000000000001506534232700173635ustar00rootroot00000000000000glslang-16.0.0/kokoro/linux-clang-gn/build-docker.sh000077500000000000000000000045061506534232700222730ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. . /bin/using.sh # Declare the bash `using` function for configuring toolchains. set -x # Display commands being run. using ninja-1.10.0 # Disable git's "detected dubious ownership" error - kokoro checks out the repo # with a different user, and we don't care about this warning. git config --global --add safe.directory '*' echo "Fetching external projects..." ./update_glslang_sources.py echo "Fetching depot_tools..." mkdir -p /tmp/depot_tools curl https://storage.googleapis.com/chrome-infra/depot_tools.zip -o /tmp/depot_tools.zip unzip /tmp/depot_tools.zip -d /tmp/depot_tools rm /tmp/depot_tools.zip export PATH="/tmp/depot_tools:$PATH" echo "Syncing client..." gclient sync --gclientfile=standalone.gclient gn gen out/Default echo "Building..." cd out/Default ninja glslang-16.0.0/kokoro/linux-clang-gn/build.sh000077500000000000000000000043671506534232700210330ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" set +e # Allow build failure docker run --rm -i \ --volume "${ROOT_DIR}:${ROOT_DIR}" \ --workdir "${ROOT_DIR}" \ --env ROOT_DIR="${ROOT_DIR}" \ --env SCRIPT_DIR="${SCRIPT_DIR}" \ --entrypoint "${SCRIPT_DIR}/build-docker.sh" \ us-east4-docker.pkg.dev/shaderc-build/radial-docker/ubuntu-24.04-amd64/cpp-builder # This is important. If the permissions are not fixed, kokoro will fail # to pull build artifacts, and put the build in tool-failure state, which # blocks the logs. RESULT=$? sudo chown -R "$(id -u):$(id -g)" "${ROOT_DIR}" exit $RESULT glslang-16.0.0/kokoro/linux-clang-gn/continuous.cfg000066400000000000000000000031471506534232700222570ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/linux-clang-gn/build.sh" glslang-16.0.0/kokoro/linux-clang-gn/presubmit.cfg000066400000000000000000000031461506534232700220620ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/linux-clang-gn/build.sh" glslang-16.0.0/kokoro/linux-gcc-cmake/000077500000000000000000000000001506534232700175075ustar00rootroot00000000000000glslang-16.0.0/kokoro/linux-gcc-cmake/build-docker.sh000077500000000000000000000037061506534232700224200ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. . /bin/using.sh # Declare the bash `using` function for configuring toolchains. set -x # Display commands being run. using cmake-3.31.2 using gcc-13 using ninja-1.10.0 using python-3.12 echo "Building..." mkdir /build && cd /build cmake "$ROOT_DIR" -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DENABLE_OPT=0 ninja install glslang-16.0.0/kokoro/linux-gcc-cmake/build.sh000077500000000000000000000040461506534232700211510ustar00rootroot00000000000000#!/bin/bash # Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" docker run --rm -i \ --volume "${ROOT_DIR}:${ROOT_DIR}:ro" \ --workdir "${ROOT_DIR}" \ --env ROOT_DIR="${ROOT_DIR}" \ --env SCRIPT_DIR="${SCRIPT_DIR}" \ --env BUILD_SHARED_LIBS="${BUILD_SHARED_LIBS:-0}" \ --entrypoint "${SCRIPT_DIR}/build-docker.sh" \ us-east4-docker.pkg.dev/shaderc-build/radial-docker/ubuntu-24.04-amd64/cpp-builder glslang-16.0.0/kokoro/linux-gcc-cmake/shared/000077500000000000000000000000001506534232700207555ustar00rootroot00000000000000glslang-16.0.0/kokoro/linux-gcc-cmake/shared/continuous.cfg000066400000000000000000000032361506534232700236500ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/linux-gcc-cmake/build.sh" env_vars { key: "BUILD_SHARED_LIBS" value: "1" } glslang-16.0.0/kokoro/linux-gcc-cmake/shared/presubmit.cfg000066400000000000000000000032351506534232700234530ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/linux-gcc-cmake/build.sh" env_vars { key: "BUILD_SHARED_LIBS" value: "1" } glslang-16.0.0/kokoro/linux-gcc-cmake/static/000077500000000000000000000000001506534232700207765ustar00rootroot00000000000000glslang-16.0.0/kokoro/linux-gcc-cmake/static/continuous.cfg000066400000000000000000000032361506534232700236710ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/linux-gcc-cmake/build.sh" env_vars { key: "BUILD_SHARED_LIBS" value: "0" } glslang-16.0.0/kokoro/linux-gcc-cmake/static/presubmit.cfg000066400000000000000000000032351506534232700234740ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/linux-gcc-cmake/build.sh" env_vars { key: "BUILD_SHARED_LIBS" value: "0" } glslang-16.0.0/license-checker.cfg000066400000000000000000000032261506534232700167440ustar00rootroot00000000000000[ { "licenses": [ "Apache-2.0", "Apache-2.0-Header", "BSD-2-Clause", "BSD-3-Clause", "MIT-0", "MIT" ], "paths": [ { "exclude": [ "**.md", "_config.yml", ".*", ".github/workflows/*.yml", ".github/workflows/*.js", "CMakeSettings.json", "known_good_khr.json", "known_good.json", "LICENSE.txt", "make-revision", "WORKSPACE", "glslang/OSDependent/Web/glslang.*.js", "glslang/MachineIndependent/glslang_tab.cpp", "glslang/MachineIndependent/glslang_tab.cpp.h", "build/**", "out/**", "Test/**", "External/spirv-tools/**", "SPIRV/GLSL.*.h", "SPIRV/NonSemanticDebugPrintf.h", "SPIRV/NonSemanticShaderDebugInfo100.h", "SPIRV/spirv.hpp11" ] } ] }, { "licenses": [ "GPL-Header", "GPL-3.0-or-later" ], "paths": [ { "exclude": [ "**" ] }, { "include": [ "glslang/MachineIndependent/glslang_tab.cpp", "glslang/MachineIndependent/glslang_tab.cpp.h" ] } ] } ] glslang-16.0.0/ndk_test/000077500000000000000000000000001506534232700150475ustar00rootroot00000000000000glslang-16.0.0/ndk_test/Android.mk000066400000000000000000000035601506534232700167640ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_CPP_EXTENSION := .cc .cpp .cxx LOCAL_SRC_FILES:=test.cpp LOCAL_MODULE:=glslang_ndk_test LOCAL_LDLIBS:=-landroid LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror LOCAL_STATIC_LIBRARIES:=glslang include $(BUILD_SHARED_LIBRARY) include $(LOCAL_PATH)/../Android.mk glslang-16.0.0/ndk_test/jni/000077500000000000000000000000001506534232700156275ustar00rootroot00000000000000glslang-16.0.0/ndk_test/jni/Application.mk000066400000000000000000000032411506534232700204230ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. APP_ABI := all APP_BUILD_SCRIPT := Android.mk APP_STL := c++_static APP_PLATFORM := android-24 NDK_TOOLCHAIN_VERSION := 4.9 glslang-16.0.0/ndk_test/test.cpp000066400000000000000000000013241506534232700165320ustar00rootroot00000000000000// Copyright 2018 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "SPIRV/GlslangToSpv.h" void android_main(struct android_app* state) { int version = glslang::GetSpirvGeneratorVersion(); } glslang-16.0.0/parse_version.cmake000066400000000000000000000035571506534232700171270ustar00rootroot00000000000000# Copyright (C) 2020 Google, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # parse_version() reads and parses the version string from FILE, assigning the # version string to ${PROJECT}_VERSION and the parsed version to # ${PROJECT}_VERSION_MAJOR, ${PROJECT}_VERSION_MINOR, ${PROJECT}_VERSION_PATCH, # and the optional ${PROJECT}_VERSION_FLAVOR. # # The version string take one of the forms: # .. # ..- function(parse_version FILE PROJECT) configure_file(${FILE} "${CMAKE_CURRENT_BINARY_DIR}/CHANGES.md") # Required to re-run cmake on version change file(READ ${FILE} CHANGES) if(${CHANGES} MATCHES "#+ *([0-9]+)\\.([0-9]+)\\.([0-9]+)(-[a-zA-Z0-9]+)?") set(FLAVOR "") if(NOT "${CMAKE_MATCH_4}" STREQUAL "") string(SUBSTRING ${CMAKE_MATCH_4} 1 -1 FLAVOR) endif() set("${PROJECT}_VERSION_MAJOR" ${CMAKE_MATCH_1} PARENT_SCOPE) set("${PROJECT}_VERSION_MINOR" ${CMAKE_MATCH_2} PARENT_SCOPE) set("${PROJECT}_VERSION_PATCH" ${CMAKE_MATCH_3} PARENT_SCOPE) set("${PROJECT}_VERSION_FLAVOR" ${FLAVOR} PARENT_SCOPE) set("${PROJECT}_VERSION" "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}${CMAKE_MATCH_4}" PARENT_SCOPE) else() message(FATAL_ERROR "Unable to parse version from '${FILE}'") endif() endfunction() glslang-16.0.0/standalone.gclient000066400000000000000000000033461506534232700167410ustar00rootroot00000000000000# Copyright (C) 2020 The Khronos Group Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name of The Khronos Group Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. solutions = [ { "name" : ".", "url" : "https://github.com/KhronosGroup/glslang", "deps_file" : "DEPS", "managed" : False, "custom_deps" : { }, }, ] glslang-16.0.0/update_glslang_sources.py000077500000000000000000000116671506534232700203600ustar00rootroot00000000000000#!/usr/bin/env python3 # Copyright 2017 The Glslang Authors. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Get source files for Glslang and its dependencies from public repositories. """ import argparse import json import os import subprocess import sys KNOWN_GOOD_FILE = 'known_good.json' SITE_TO_KNOWN_GOOD_FILE = { 'github' : 'known_good.json', 'gitlab' : 'known_good_khr.json' } # Maps a site name to its hostname. SITE_TO_HOST = { 'github' : 'https://github.com/', 'gitlab' : 'git@gitlab.khronos.org:' } VERBOSE = True def command_output(cmd, directory, fail_ok=False): """Runs a command in a directory and returns its standard output stream. Captures the standard error stream. Raises a RuntimeError if the command fails to launch or otherwise fails. """ if VERBOSE: print('In {d}: {cmd}'.format(d=directory, cmd=cmd)) p = subprocess.Popen(cmd, cwd=directory, stdout=subprocess.PIPE) (stdout, _) = p.communicate() if p.returncode != 0 and not fail_ok: raise RuntimeError('Failed to run {} in {}'.format(cmd, directory)) if VERBOSE: print(stdout) return stdout def command_retval(cmd, directory): """Runs a command in a directory and returns its return value. Captures the standard error stream. """ p = subprocess.Popen(cmd, cwd=directory, stdout=subprocess.PIPE) p.communicate() return p.returncode class GoodCommit(object): """Represents a good commit for a repository.""" def __init__(self, json): """Initializes this good commit object. Args: 'json': A fully populated JSON object describing the commit. """ self._json = json self.name = json['name'] self.site = json['site'] self.subrepo = json['subrepo'] self.subdir = json['subdir'] if ('subdir' in json) else '.' self.commit = json['commit'] def GetUrl(self): """Returns the URL for the repository.""" host = SITE_TO_HOST[self.site] return '{host}{subrepo}'.format( host=host, subrepo=self.subrepo) def AddRemote(self): """Add the remote 'known-good' if it does not exist.""" remotes = command_output(['git', 'remote'], self.subdir).splitlines() if b'known-good' not in remotes: command_output(['git', 'remote', 'add', 'known-good', self.GetUrl()], self.subdir) def HasCommit(self): """Check if the repository contains the known-good commit.""" return 0 == subprocess.call(['git', 'rev-parse', '--verify', '--quiet', self.commit + "^{commit}"], cwd=self.subdir) def Clone(self): os.makedirs(self.subdir, exist_ok=True) command_output(['git', 'clone', self.GetUrl(), '.'], self.subdir) def Fetch(self): command_output(['git', 'fetch', 'known-good'], self.subdir) def Checkout(self): if not os.path.exists(os.path.join(self.subdir,'.git')): self.Clone() self.AddRemote() if not self.HasCommit(): self.Fetch() command_output(['git', 'checkout', self.commit], self.subdir) def GetGoodCommits(site): """Returns the latest list of GoodCommit objects.""" known_good_file = SITE_TO_KNOWN_GOOD_FILE[site] with open(known_good_file) as known_good: return [GoodCommit(c) for c in json.loads(known_good.read())['commits']] def main(): parser = argparse.ArgumentParser(description='Get Glslang source dependencies at a known-good commit') parser.add_argument('--dir', dest='dir', default='.', help="Set target directory for Glslang source root. Default is \'.\'.") parser.add_argument('--site', dest='site', default='github', help="Set git server site. Default is github.") args = parser.parse_args() commits = GetGoodCommits(args.site) os.makedirs(args.dir, exist_ok=True) print('Change directory to {d}'.format(d=args.dir)) os.chdir(args.dir) # Create the subdirectories in sorted order so that parent git repositories # are created first. for c in sorted(commits, key=lambda x: x.subdir): print('Get {n}\n'.format(n=c.name)) c.Checkout() sys.exit(0) if __name__ == '__main__': main()